diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000000..5752e40bff --- /dev/null +++ b/.clang-format @@ -0,0 +1,102 @@ +--- +Language: Cpp +BasedOnStyle: Google +AccessModifierOffset: -4 +AlignAfterOpenBracket: AlwaysBreak +#AlignConsecutiveAssignments: false +#AlignConsecutiveDeclarations: false +#AlignEscapedNewlines: Left +#AlignOperands: true +#AlignTrailingComments: true +AllowAllParametersOfDeclarationOnNextLine: false +#AllowShortBlocksOnASingleLine: false +#AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +#AllowShortIfStatementsOnASingleLine: true +#AllowShortLoopsOnASingleLine: true +#AlwaysBreakAfterDefinitionReturnType: None +#AlwaysBreakAfterReturnType: None +#AlwaysBreakBeforeMultilineStrings: true +#AlwaysBreakTemplateDeclarations: true +BinPackArguments: false +BinPackParameters: false +#BraceWrapping: +# AfterClass: false +# AfterControlStatement: false +# AfterEnum: false +# AfterFunction: false +# AfterNamespace: false +# AfterObjCDeclaration: false +# AfterStruct: false +# AfterUnion: false +# BeforeCatch: false +# BeforeElse: false +# IndentBraces: false +# SplitEmptyFunctionBody: true +#BreakBeforeBinaryOperators: None +#BreakBeforeBraces: Attach +BreakBeforeInheritanceComma: true +#BreakBeforeTernaryOperators: true +#BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: AfterColon +#BreakAfterJavaFieldAnnotations: false +#BreakStringLiterals: true +ColumnLimit: 120 +#CommentPragmas: '^ IWYU pragma:' +#CompactNamespaces: false +#ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 8 +#ContinuationIndentWidth: 4 +#Cpp11BracedListStyle: true +DerivePointerAlignment: false +#DisableFormat: false +#ExperimentalAutoDetectBinPacking: false +#FixNamespaceComments: true +#ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] +#IncludeCategories: +# - Regex: '^<.*\.h>' +# Priority: 1 +# - Regex: '^<.*' +# Priority: 2 +# - Regex: '.*' +# Priority: 3 +#IncludeIsMainRegex: '([-_](test|unittest))?$' +#IndentCaseLabels: true +IndentWidth: 4 +#IndentWrappedFunctionNames: false +#JavaScriptQuotes: Leave +#JavaScriptWrapImports: true +#KeepEmptyLinesAtTheStartOfBlocks: false +#MacroBlockBegin: '' +#MacroBlockEnd: '' +#MaxEmptyLinesToKeep: 1 +#NamespaceIndentation: None +#ObjCBlockIndentWidth: 2 +#ObjCSpaceAfterProperty: false +#ObjCSpaceBeforeProtocolList: false +#PenaltyBreakAssignment: 2 +#PenaltyBreakBeforeFirstCallParameter: 1 +#PenaltyBreakComment: 300 +#PenaltyBreakFirstLessLess: 120 +#PenaltyBreakString: 1000 +#PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 20000 +#PointerAlignment: Left +#ReflowComments: true +SortIncludes: false +#SpaceAfterCStyleCast: false +#SpaceAfterTemplateKeyword: true +#SpaceBeforeAssignmentOperators: true +#SpaceBeforeParens: ControlStatements +#SpaceInEmptyParentheses: false +#SpacesBeforeTrailingComments: 2 +#SpacesInAngles: false +#SpacesInContainerLiterals: true +#SpacesInCStyleCastParentheses: false +#SpacesInParentheses: false +#SpacesInSquareBrackets: false +#Standard: Auto +#TabWidth: 8 +#UseTab: Never +... + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..1b20369ed1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +#CLion project files +.idea +#config file required for SDK integration tests. Each user will configure this differently, so it is preferable that git not show this file as +#'untracked' when printing the status. +Integration/AuthDelegate.config +#macOS specific files +.DS_Store diff --git a/ACL/CMakeLists.txt b/ACL/CMakeLists.txt index 9adbdbcba1..4f5fbaf1f7 100644 --- a/ACL/CMakeLists.txt +++ b/ACL/CMakeLists.txt @@ -4,4 +4,4 @@ project(ACL LANGUAGES CXX) include(../build/BuildDefaults.cmake) add_subdirectory("src") -add_subdirectory("test") +acsdk_add_test_subdirectory_if_allowed() diff --git a/ACL/include/ACL/AVSConnectionManager.h b/ACL/include/ACL/AVSConnectionManager.h index c9e4be455c..c123386b5e 100644 --- a/ACL/include/ACL/AVSConnectionManager.h +++ b/ACL/include/ACL/AVSConnectionManager.h @@ -1,7 +1,5 @@ /* - * AVSConnectionManager.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_AVS_CONNECTION_MANAGER_H_ -#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_AVS_CONNECTION_MANAGER_H_ +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_AVSCONNECTIONMANAGER_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_AVSCONNECTIONMANAGER_H_ #include #include @@ -24,12 +22,12 @@ #include #include +#include #include #include #include #include #include -#include #include #include "ACL/Transport/MessageRouterInterface.h" @@ -68,13 +66,12 @@ namespace acl { * This SDK also provides observer interfaces for classes that may be notified when the connection status * changes, and when messages are received from AVS. These observer objects are optional. */ -class AVSConnectionManager : - public avsCommon::sdkInterfaces::MessageSenderInterface, - public avsCommon::sdkInterfaces::AVSEndpointAssignerInterface, - /* TODO: ACSDK-421: Remove the implementation of StateSynchronizerObserverInterface */ - public avsCommon::sdkInterfaces::StateSynchronizerObserverInterface, - public MessageRouterObserverInterface, - public avsCommon::utils::RequiresShutdown { +class AVSConnectionManager + : public avsCommon::avs::AbstractConnection + , public avsCommon::sdkInterfaces::MessageSenderInterface + , public avsCommon::sdkInterfaces::AVSEndpointAssignerInterface + , public MessageRouterObserverInterface + , public avsCommon::utils::RequiresShutdown { public: /** * A factory function that creates an AVSConnectionManager object. @@ -88,14 +85,13 @@ class AVSConnectionManager : * @return The created AVSConnectionManager object. */ static std::shared_ptr create( - std::shared_ptr messageRouter, - bool isEnabled = true, - std::unordered_set> - connectionStatusObservers = - std::unordered_set>(), - std::unordered_set> - messageObservers = - std::unordered_set>()); + std::shared_ptr messageRouter, + bool isEnabled = true, + std::unordered_set> + connectionStatusObservers = + std::unordered_set>(), + std::unordered_set> messageObservers = + std::unordered_set>()); /** * Enable the AVSConnectionManager object to make connections to AVS. Once enabled, the object will attempt to @@ -126,29 +122,7 @@ class AVSConnectionManager : */ void reconnect(); - /** - * Returns whether the AVS connection is established. If the connection is pending, @c false will be returned. - * - * @return Whether the AVS connection is established. - */ - bool isConnected() const; - - /** - * Adds an observer to be notified of connection stauts changes. The observer will be notified of the current - * connection status before this function returns. - * - * @param observer The observer object to add. - */ - void addConnectionStatusObserver( - std::shared_ptr observer); - - /** - * Removes an observer from being notified of connection status changes. - * - * @param observer The observer object to remove. - */ - void removeConnectionStatusObserver( - std::shared_ptr observer); + bool isConnected() const override; /** * Adds an observer to be notified of message receptions. @@ -166,9 +140,6 @@ class AVSConnectionManager : void sendMessage(std::shared_ptr request) override; - /* TODO: ACSDK-421: Remove the implementation of StateSynchronizerObserverInterface */ - void onStateChanged(avsCommon::sdkInterfaces::StateSynchronizerObserverInterface::State newState) override; - /** * @note Set the URL endpoint for the AVS connection. Calling this function with a new value will cause the * current active connection to be closed, and a new one opened to the new endpoint. @@ -176,7 +147,6 @@ class AVSConnectionManager : void setAVSEndpoint(const std::string& avsEndpoint) override; private: - /** * AVSConnectionManager constructor. * @@ -186,51 +156,35 @@ class AVSConnectionManager : * @param messageObserver An optional observer which will be sent messages that arrive from AVS. */ AVSConnectionManager( - std::shared_ptr messageRouter, - std::unordered_set> - connectionStatusObservers = - std::unordered_set>(), - std::unordered_set> - messageObserver = - std::unordered_set>()); + std::shared_ptr messageRouter, + std::unordered_set> + connectionStatusObservers = + std::unordered_set>(), + std::unordered_set> messageObserver = + std::unordered_set>()); void doShutdown() override; void onConnectionStatusChanged( - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override; + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override; - void receive(const std::string & contextId, const std::string & message) override; + void receive(const std::string& contextId, const std::string& message) override; /// Internal state to indicate if the Connection object is enabled for making an AVS connection. std::atomic m_isEnabled; - /* TODO: ACSDK-421: Remove the implementation of StateSynchronizerObserverInterface */ - /// Internal object that flags if @c StateSynchronizer had sent the initial event successfully. - bool m_isSynchronized; - - /// Mutex to protect @c m_isSynchronized. - std::mutex m_synchronizationMutex; - - /// Set of observers to notify when the connection status changes. @c m_connectionStatusObserverMutex must be - /// acquired before access. - std::unordered_set> - m_connectionStatusObservers; - - /// Mutex for connection status observers. - std::mutex m_connectionStatusObserverMutex; - /// Client-provided message listener, which will receive all messages sent from AVS. std::unordered_set> m_messageObservers; /// Mutex for message observers. - std::mutex m_messageOberverMutex; + std::mutex m_messageObserverMutex; /// Internal object that manages the actual connection to AVS. std::shared_ptr m_messageRouter; }; -} // namespace acl -} // namespace alexaClientSDK +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_AVS_CONNECTION_MANAGER_H_ +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_AVSCONNECTIONMANAGER_H_ diff --git a/ACL/include/ACL/Transport/HTTP2MessageRouter.h b/ACL/include/ACL/Transport/HTTP2MessageRouter.h index fcf9b8ea2f..fdcf11329a 100644 --- a/ACL/include/ACL/Transport/HTTP2MessageRouter.h +++ b/ACL/include/ACL/Transport/HTTP2MessageRouter.h @@ -1,7 +1,5 @@ /* - * HTTP2MessageRouter.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXACLIENTSDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2_MESSAGE_ROUTER_H_ -#define ALEXACLIENTSDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2_MESSAGE_ROUTER_H_ +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2MESSAGEROUTER_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2MESSAGEROUTER_H_ #include #include @@ -26,7 +24,6 @@ #include "ACL/Transport/MessageRouter.h" #include "ACL/Transport/MessageConsumerInterface.h" - namespace alexaClientSDK { namespace acl { @@ -34,18 +31,19 @@ namespace acl { * An HTTP2MessageRouter routes request messages to the Alexa Voice Service, and response messages to the client. It * uses an HTTP2 connection with AVS. */ -class HTTP2MessageRouter: public MessageRouter { +class HTTP2MessageRouter : public MessageRouter { public: /** * Constructor. * * @param authDelegate The AuthDelegate implementation. - * @param avsEndpoint The URL for the AVS endpoint of this object. + * @param avsEndpoint The URL for the AVS endpoint to connect to. If empty the "endpoint" value of the "acl" + * configuration will be used. If there no such configuration value a default value will be used instead. */ HTTP2MessageRouter( - std::shared_ptr authDelegate, - std::shared_ptr attachmentManager, - const std::string& avsEndpoint = "https://avs-alexa-na.amazon.com"); + std::shared_ptr authDelegate, + std::shared_ptr attachmentManager, + const std::string& avsEndpoint = ""); /** * Destructor. @@ -54,14 +52,14 @@ class HTTP2MessageRouter: public MessageRouter { private: std::shared_ptr createTransport( - std::shared_ptr authDelegate, - std::shared_ptr attachmentManager, - const std::string& avsEndpoint, - MessageConsumerInterface* messageConsumerInterface, - TransportObserverInterface* transportObserverInterface) override; + std::shared_ptr authDelegate, + std::shared_ptr attachmentManager, + const std::string& avsEndpoint, + std::shared_ptr messageConsumerInterface, + std::shared_ptr transportObserverInterface) override; }; -} // acl -} // alexaClientSDK +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXACLIENTSDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2_MESSAGE_ROUTER_H_ +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2MESSAGEROUTER_H_ diff --git a/ACL/include/ACL/Transport/HTTP2Stream.h b/ACL/include/ACL/Transport/HTTP2Stream.h index 20b90dc545..0ddb72bf8f 100644 --- a/ACL/include/ACL/Transport/HTTP2Stream.h +++ b/ACL/include/ACL/Transport/HTTP2Stream.h @@ -1,7 +1,5 @@ /* - * HTTP2Stream.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXACLIENTSDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2_STREAM_H_ -#define ALEXACLIENTSDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2_STREAM_H_ +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2STREAM_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2STREAM_H_ #include #include @@ -25,12 +23,22 @@ #include #include +#include +#include #include +#include -#include "ACL/Transport/CurlEasyHandleWrapper.h" #include "ACL/Transport/MimeParser.h" #include "ACL/Transport/MessageConsumerInterface.h" +/// Whether or not curl logs should be emitted. +#ifdef ACSDK_EMIT_SENSITIVE_LOGS + +#define ACSDK_EMIT_CURL_LOGS +#include + +#endif + namespace alexaClientSDK { namespace acl { @@ -42,22 +50,14 @@ class HTTP2Transport; */ class HTTP2Stream { public: - enum HTTPResponseCodes{ - /// No HTTP response received. - NO_RESPONSE_RECEIVED = 0, - /// HTTP Success with reponse payload. - SUCCESS_OK = 200, - /// HTTP Succcess with no response payload. - SUCCESS_NO_CONTENT = 204 - }; - /** * Constructor. * * @param messageConsumer The MessageConsumerInterface which should receive messages from AVS. * @param attachmentManager The attachment manager. */ - HTTP2Stream(MessageConsumerInterface *messageConsumer, + HTTP2Stream( + std::shared_ptr messageConsumer, std::shared_ptr attachmentManager); /** @@ -70,8 +70,10 @@ class HTTP2Stream { * @param request The MessageRequest to post * @returns true if setup was successful */ - bool initPost(const std::string& url, const std::string& authToken, - std::shared_ptr request); + bool initPost( + const std::string& url, + const std::string& authToken, + std::shared_ptr request); /** * Initializes streams that are supposed to perform an HTTP GET @@ -117,19 +119,19 @@ class HTTP2Stream { * * @param status The completion status. */ - void notifyRequestObserver(avsCommon::avs::MessageRequest::Status status); + void notifyRequestObserver(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status status); /** * Callback that gets executed when data is received from the server * See CurlEasyHandleWrapper::CurlCallback for details */ - static size_t writeCallback(char *data, size_t size, size_t nmemb, void *userData); + static size_t writeCallback(char* data, size_t size, size_t nmemb, void* userData); /** * Callback that gets executed when HTTP headers are received from the server * See CurlEasyHandleWrapper::CurlCallback for details */ - static size_t headerCallback(char *data, size_t size, size_t nmemb, void *userData); + static size_t headerCallback(char* data, size_t size, size_t nmemb, void* userData); /** * Callback that gets executed when the server requires data. @@ -141,7 +143,7 @@ class HTTP2Stream { * @param userData Some user data passed in with CURLOPT_READDATA. * @return The amount of bytes read. */ - static size_t readCallback(char *data, size_t size, size_t nmemb, void *userData); + static size_t readCallback(char* data, size_t size, size_t nmemb, void* userData); /** * Sets the max amount of time in seconds the stream can take. If not set explicitly there is no timeout. @@ -161,20 +163,22 @@ class HTTP2Stream { bool setConnectionTimeout(const std::chrono::seconds timeoutSeconds); /** - * Update the paused status of the stream. This will take actual effect at the next point of usage with respect - * to the underlying network library implementation. - * - * @param isPaused The new value to set the paused state. + * Un-pend all transfers for this stream */ - void setPaused(bool isPaused); + void unPause(); /** - * Queries whether this stream is paused. - * - * @return Whether the stream is paused or not. + * Return whether this stream has pending transfers. */ bool isPaused() const; + /** + * Set the logical stream ID for this stream. + * + * @param logicalStreamId The new value for this streams logical stream ID. + */ + void setLogicalStreamId(int logicalStreamId); + /** * Get the logical ID of this stream. * @@ -189,7 +193,7 @@ class HTTP2Stream { * @tparam TickPeriod @c std::ratio specifying ticks per second. * @param duration Max time the stream may make no progress before @c getHasProgressTimedOut() returns true. */ - template> + template > void setProgressTimeout(std::chrono::duration duration); /** @@ -199,6 +203,14 @@ class HTTP2Stream { */ bool hasProgressTimedOut() const; + /** + * Return a reference to the LogStringFormatter owned by this object. This is to allow a callback that uses this + * object to get access to a known good LogStringFormatter. + * + * @return A reference to a LogStringFormatter. + */ + const avsCommon::utils::logger::LogStringFormatter& getLogFormatter() const; + private: /** * Configure the associated curl easy handle with options common to GET and POST @@ -208,11 +220,44 @@ class HTTP2Stream { bool setCommonOptions(const std::string& url, const std::string& authToken); /** - * A static counter to ensure each newly created stream has a different id. The notion of a streamId is needed - * to provide a per-HTTP/2-stream context for any given attachment received from AVS. AVS can only guarantee that - * the identifying 'contentId' for an attachment is unique within a HTTP/2 stream, hence this variable. + * Helper function for calling @c curl_easy_setopt and checking the result. + * + * @param option The option parameter to pass through to curl_easy_setopt. + * @param optionName The name of the option to be set (for logging) + * @param param The param option to pass through to curl_easy_setopt. + * @return @c true of the operation was successful. */ - static unsigned int m_streamIdCounter; + template + bool setopt(CURLoption option, const char* optionName, ParamType param); + + /** + * Initialize capturing this streams activities in a log file. + */ + void initStreamLog(); + +#ifdef ACSDK_EMIT_CURL_LOGS + + /** + * Callback that is invoked when @c libcurl has debug information to provide. + * + * @param handle @c libcurl handle of the transfer being reported upon. + * @param type The type of data being reported. + * @param data Pointer to the data being provided. + * @param size Size (in bytes) of the data being reported. + * @param user User pointer used to pass which HTTP2Stream is being reported on. + * @return Always returns zero. + */ + static int debugFunction(CURL* handle, curl_infotype type, char* data, size_t size, void* user); + + /// File to log the stream I/O to + std::unique_ptr m_streamLog; + /// File to dump data streamed in + std::unique_ptr m_streamInDump; + /// File to dump data streamed out + std::unique_ptr m_streamOutDump; + +#endif // ACSDK_EMIT_CURL_LOGS + /** * The logical id for this particular object instance. (see note for @c m_streamIdCounter in this class). * @note This is NOT the actual HTTP/2 stream id. Instead, this is an id which this class generates which is @@ -221,12 +266,12 @@ class HTTP2Stream { */ unsigned int m_logicalStreamId; /// The underlying curl easy handle. - CurlEasyHandleWrapper m_transfer; + avsCommon::utils::libcurlUtils::CurlEasyHandleWrapper m_transfer; /// An DirectiveParser instance used to parse multipart MIME messages. MimeParser m_parser; /// The current request being sent on this HTTP/2 stream. std::shared_ptr m_currentRequest; - /// A local variable to track if this stream is paused with respect to libcurl management. + /// Whether this stream has any paused transfers. bool m_isPaused; /** * The exception message being received from AVS by this stream. It may be built up over several calls if either @@ -237,14 +282,16 @@ class HTTP2Stream { std::atomic m_progressTimeout; /// Last time something was transferred. std::atomic m_timeOfLastTransfer; + /// Object to format log strings correctly. + avsCommon::utils::logger::LogStringFormatter m_logFormatter; }; -template +template void HTTP2Stream::setProgressTimeout(std::chrono::duration duration) { m_progressTimeout = std::chrono::duration_cast(duration).count(); }; -} // acl -} // alexaClientSDK +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXACLIENTSDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2_STREAM_H_ +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2STREAM_H_ diff --git a/ACL/include/ACL/Transport/HTTP2StreamPool.h b/ACL/include/ACL/Transport/HTTP2StreamPool.h index a910ed24db..18a07cedab 100644 --- a/ACL/include/ACL/Transport/HTTP2StreamPool.h +++ b/ACL/include/ACL/Transport/HTTP2StreamPool.h @@ -1,7 +1,5 @@ /* - * HTTP2StreamPool.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXACLIENTSDK_ACL_INCLUDE_ACL_TRANSPORT_STREAM_POOL_H_ -#define ALEXACLIENTSDK_ACL_INCLUDE_ACL_TRANSPORT_STREAM_POOL_H_ +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2STREAMPOOL_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2STREAMPOOL_H_ #include #include @@ -41,7 +39,8 @@ class HTTP2StreamPool { * @params attachmentManager The attachment manager. */ HTTP2StreamPool( - const int maxStreams, std::shared_ptr attachmentManager); + const int maxStreams, + std::shared_ptr attachmentManager); /** * Grabs an HTTP2Stream from the pool and configures it to be an HTTP GET. @@ -51,8 +50,10 @@ class HTTP2StreamPool { * @param messageConsumer The MessageConsumerInterface to pass messages to. * @return An HTTP2Stream from the stream pool, or @c nullptr if there was an error. */ - std::shared_ptr createGetStream(const std::string& url, const std::string& authToken, - MessageConsumerInterface *messageConsumer); + std::shared_ptr createGetStream( + const std::string& url, + const std::string& authToken, + std::shared_ptr messageConsumer); /** * Grabs an HTTP2Stream from the pool and configures it to be an HTTP POST. @@ -63,14 +64,18 @@ class HTTP2StreamPool { * @param messageConsumer The MessageConsumerInterface to pass messages to. * @return An HTTP2Stream from the stream pool, or @c nullptr if there was an error. */ - std::shared_ptr createPostStream(const std::string& url, const std::string& authToken, - std::shared_ptr request, MessageConsumerInterface *messageConsumer); + std::shared_ptr createPostStream( + const std::string& url, + const std::string& authToken, + std::shared_ptr request, + std::shared_ptr messageConsumer); /** * Returns an HTTP2Stream back into the pool. * @param context Returns the given EventStream back into the pool. */ void releaseStream(std::shared_ptr stream); + private: /** * Gets a stream from the stream pool If the pool is empty, returns a new HTTP2Stream. @@ -78,21 +83,29 @@ class HTTP2StreamPool { * @param messageConsumer The MessageConsumerInterface which should receive messages from AVS. * @return an HTTP2Stream from the pool, a new stream, or @c nullptr if there are too many active streams. */ - std::shared_ptr getStream(MessageConsumerInterface *messageConsumer); + std::shared_ptr getStream(std::shared_ptr messageConsumer); /// A growing pool of EventStreams. std::vector> m_pool; /// Mutex used to lock the EventStream pool. std::mutex m_mutex; - /// The number of streams that have been released from the pool. - std::atomic m_numRemovedStreams; + /// The number of streams that have been acquired from the pool. + int m_numAcquiredStreams; /// The maximum number of streams that can be active in the pool. const int m_maxStreams; /// The attachment manager. std::shared_ptr m_attachmentManager; + /** + * A static counter to ensure each newly acquired stream across all pools has a different ID. The notion of a + * stream ID is needed to provide a per-HTTP/2-stream context for any given attachment received from AVS. AVS + * can only guarantee that the identifying 'contentId' for an attachment is unique within a HTTP/2 stream, + * hence this variable. + * @note: These IDs are not to be confused with HTTP2's internal stream IDs. + */ + static unsigned int m_nextStreamId; }; -} // acl -} // alexaClientSDK +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXACLIENTSDK_ACL_INCLUDE_ACL_TRANSPORT_STREAM_POOL_H_ +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2STREAMPOOL_H_ diff --git a/ACL/include/ACL/Transport/HTTP2Transport.h b/ACL/include/ACL/Transport/HTTP2Transport.h index c315812b7d..d0fe78c4c7 100644 --- a/ACL/include/ACL/Transport/HTTP2Transport.h +++ b/ACL/include/ACL/Transport/HTTP2Transport.h @@ -1,7 +1,5 @@ /* - * HTTP2Transport.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2_TRANSPORT_H_ -#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2_TRANSPORT_H_ +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2TRANSPORT_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2TRANSPORT_H_ #include #include @@ -24,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -32,12 +31,16 @@ #include #include "AVSCommon/SDKInterfaces/AuthDelegateInterface.h" -#include "ACL/Transport/TransportInterface.h" -#include "ACL/Transport/TransportObserverInterface.h" +#include "AVSCommon/SDKInterfaces/ContextManagerInterface.h" +#include "AVSCommon/Utils/LibcurlUtils/CurlMultiHandleWrapper.h" #include "ACL/Transport/HTTP2Stream.h" #include "ACL/Transport/HTTP2StreamPool.h" #include "ACL/Transport/MessageConsumerInterface.h" - +#include "ACL/Transport/PostConnectObject.h" +#include "ACL/Transport/PostConnectObserverInterface.h" +#include "ACL/Transport/PostConnectSendMessageInterface.h" +#include "ACL/Transport/TransportInterface.h" +#include "ACL/Transport/TransportObserverInterface.h" namespace alexaClientSDK { namespace acl { @@ -45,28 +48,28 @@ namespace acl { /** * Class to create and manage an HTTP/2 connection to AVS. */ -class HTTP2Transport : public TransportInterface { +class HTTP2Transport + : public TransportInterface + , public PostConnectObserverInterface + , public PostConnectSendMessageInterface + , public std::enable_shared_from_this { public: /** - * Constructor. + * A function that creates a HTTP2Transport object. * * @param authDelegate The AuthDelegate implementation. * @param avsEndpoint The URL for the AVS endpoint of this object. * @param messageConsumer The MessageConsumerInterface to pass messages to. * @param attachmentManager The attachment manager that manages the attachments. - * @param observer The optional observer to this class. - */ - HTTP2Transport( - std::shared_ptr authDelegate, - const std::string& avsEndpoint, - MessageConsumerInterface* messageConsumerInterface, - std::shared_ptr attachmentManager, - TransportObserverInterface* observer = nullptr); - - /** - * Destructor. + * @param observer The observer to this class. + * @return A shared pointer to a HTTP2Transport object. */ - ~HTTP2Transport(); + static std::shared_ptr create( + std::shared_ptr authDelegate, + const std::string& avsEndpoint, + std::shared_ptr messageConsumerInterface, + std::shared_ptr attachmentManager, + std::shared_ptr observer); /** * @inheritDoc @@ -79,18 +82,59 @@ class HTTP2Transport : public TransportInterface { bool isConnected() override; + void onPostConnected() override; + + void sendPostConnectMessage(std::shared_ptr request) override; void send(std::shared_ptr request) override; + /** + * Method to add observers for TranportObserverInterface. + * + * @param observer The observer object to add. + */ + void addObserver(std::shared_ptr observer); + + /** + * Method to add observers for TranportObserverInterface. + * + * @param observer The observer object to add. + */ + void removeObserver(std::shared_ptr observer); + private: /** - * Struct to hold a CURL multi handle and clean up the multi handle on delete. + * HTTP2Transport Constructor. + * + * @param authDelegate The AuthDelegate implementation. + * @param avsEndpoint The URL for the AVS endpoint of this object. + * @param messageConsumer The MessageConsumerInterface to pass messages to. + * @param attachmentManager The attachment manager that manages the attachments. + * @param observer The observer to this class. */ - struct MultiHandle { - CURLM* handle; - ~MultiHandle() { - curl_multi_cleanup(handle); - } - }; + HTTP2Transport( + std::shared_ptr authDelegate, + const std::string& avsEndpoint, + std::shared_ptr messageConsumerInterface, + std::shared_ptr attachmentManager, + std::shared_ptr postConnectObject, + std::shared_ptr observer); + + /** + * Notify registered observers on a transport disconnect. + */ + void notifyObserversOnServerSideDisconnect(); + + /** + * Notify registered observers on a server side disconnect. + */ + void notifyObserversOnDisconnect(avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason); + + /** + * Notify registered observers on a transport connect. + */ + void notifyObserversOnConnected(); + + void doShutdown() override; /// Type defining an entry in the Event queue typedef std::pair> ActiveTransferEntry; @@ -126,13 +170,6 @@ class HTTP2Transport : public TransportInterface { */ void cleanupStalledStreams(); - /** - * Cleanup a stream, removing it from @c m_multi and @c m_activeStreams and releasing it back to @c m_streamPool. - * - * @param stream The stream to clean up. - */ - void cleanupStream(std::shared_ptr stream); - /** * Checks all the currently executing message requests to see if they have HTTP response codes. * @@ -205,9 +242,12 @@ class HTTP2Transport : public TransportInterface { * Queue a @c MessageRequest for processing (to the back of the queue). * * @param request The MessageRequest to queue for sending. + * @param ignoreConnectionStatus set to @c false to block messages to AVS, @c true + * when invoked through the @c PostConnectSendMessage interface to allow + * post-connect messages to AVS in the unconnected state. * @return Whether the request was enqueued. */ - bool enqueueRequest(std::shared_ptr request); + bool enqueueRequest(std::shared_ptr request, bool ignoreConnectionStatus = false); /** * De-queue a @c MessageRequest from (the front of) the queue of @c MessageRequest instances to process. @@ -222,11 +262,65 @@ class HTTP2Transport : public TransportInterface { */ void clearQueuedRequests(); - /// Observer of this class, to be notified on changes in connection and received attachments. - TransportObserverInterface *m_observer; + /** + * Release the down channel stream. + * + * @param removeFromMulti Whether to remove the stream from @c m_multi as part of releasing the stream. + * @param[out] reason If the operation fails, returns reason value. + * @return Whether the operation was successful. + */ + bool releaseDownchannelStream( + bool removeFromMulti = true, + avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason* reason = nullptr); + + /** + * Release the ping stream. + * + * @param removeFromMulti Whether to remove the stream from @c m_multi as part of releasing the stream. + * @return Whether the operation was successful. + */ + bool releasePingStream(bool removeFromMulti = true); + + /** + * Release all the event streams. + */ + void releaseAllEventStreams(); + + /** + * Release an event stream. + * + * @param stream The event stream to release. + * @param removeFromMulti Whether to remove the stream from @c m_multi as part of releasing the stream. + * @return Whether the operation was successful. + */ + bool releaseEventStream(std::shared_ptr stream, bool removeFromMulti = true); + + /** + * Release a stream + * + * @param stream The stream to release. + * @param removeFromMulti Whether to remove the stream from @c m_multi as part of releasing the stream. + * @param name Name of the stream to release (for logging). + * @return Whether the operation was successful. + */ + bool releaseStream(std::shared_ptr stream, bool removeFromMulti, const std::string& name); + + /** + * Return whether a specified stream is an 'event' stream. + * + * @param stream The stream to check. + * @return Whether a specified stream is an 'event' stream. + */ + bool isEventStream(std::shared_ptr stream); + + /// Mutex to protect access to the m_observers variable. + std::mutex m_observerMutex; + + /// Observers of this class, to be notified on changes in connection and received attachments. + std::unordered_set> m_observers; /// Observer of this class, to be passed received messages from AVS. - MessageConsumerInterface *m_messageConsumer; + std::shared_ptr m_messageConsumer; /// Auth delegate implementation. std::shared_ptr m_authDelegate; @@ -241,7 +335,7 @@ class HTTP2Transport : public TransportInterface { std::shared_ptr m_pingStream; /// Represents a CURL multi handle. - std::unique_ptr m_multi; + std::unique_ptr m_multi; /// The list of streams that either do not have HTTP response headers, or have outstanding response data. std::map> m_activeStreams; @@ -267,14 +361,20 @@ class HTTP2Transport : public TransportInterface { /// Whether or not the @c networkLoop is stopping. Serialized by @c m_mutex. bool m_isStopping; + /// Whether or not the onDisconnected() notification has been sent. Serialized by @c m_mutex. + bool m_disconnectedSent; + /// Queue of @c MessageRequest instances to send. Serialized by @c m_mutex. std::deque> m_requestQueue; /// Used to wake the main network thread in connection retry back-off situation. std::condition_variable m_wakeRetryTrigger; + + /// PostConnect object. + std::shared_ptr m_postConnectObject; }; -} // alexaClientSDK -} // acl +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2_TRANSPORT_H_ +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_HTTP2TRANSPORT_H_ diff --git a/ACL/include/ACL/Transport/MessageConsumerInterface.h b/ACL/include/ACL/Transport/MessageConsumerInterface.h index b4edfd0c3a..6f9a242321 100644 --- a/ACL/include/ACL/Transport/MessageConsumerInterface.h +++ b/ACL/include/ACL/Transport/MessageConsumerInterface.h @@ -1,7 +1,5 @@ /* - * MessageConsumerInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGE_CONSUMER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGE_CONSUMER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGECONSUMERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGECONSUMERINTERFACE_H_ #include @@ -39,10 +37,10 @@ class MessageConsumerInterface { * @param contextId The context id for the current message. * @param message The AVS message in string representation. */ - virtual void consumeMessage(const std::string & contextId, const std::string & message) = 0; + virtual void consumeMessage(const std::string& contextId, const std::string& message) = 0; }; -} // acl -} // alexaClientSDK +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGE_CONSUMER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGECONSUMERINTERFACE_H_ diff --git a/ACL/include/ACL/Transport/MessageRouter.h b/ACL/include/ACL/Transport/MessageRouter.h index 13f803d17b..07a838271f 100644 --- a/ACL/include/ACL/Transport/MessageRouter.h +++ b/ACL/include/ACL/Transport/MessageRouter.h @@ -1,7 +1,5 @@ /* - * MessageRouter.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGE_ROUTER_H_ -#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGE_ROUTER_H_ +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGEROUTER_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGEROUTER_H_ #include #include @@ -43,25 +41,24 @@ namespace acl { * * Implementations of this class are required to be thread-safe. */ -class MessageRouter: public MessageRouterInterface, public TransportObserverInterface, public MessageConsumerInterface { - +class MessageRouter + : public MessageRouterInterface + , public TransportObserverInterface + , public MessageConsumerInterface + , public std::enable_shared_from_this { public: /** * Constructor. * @param authDelegate An implementation of an AuthDelegate, which will provide valid access tokens with which * the MessageRouter can authorize the client to AVS. * @param attachmentManager The AttachmentManager, which allows ACL to write attachments received from AVS. - * @param avsEndpoint The endpoint to connect to AVS. + * @param avsEndpoint The endpoint to connect to AVS. If empty the "endpoint" value of the "acl" configuration + * will be used. If there no such configuration value a default value will be used instead. */ MessageRouter( - std::shared_ptr authDelegate, - std::shared_ptr attachmentManager, - const std::string& avsEndpoint); - - /** - * Destructor. - */ - virtual ~MessageRouter(); + std::shared_ptr authDelegate, + std::shared_ptr attachmentManager, + const std::string& avsEndpoint); void enable() override; @@ -76,13 +73,17 @@ class MessageRouter: public MessageRouterInterface, public TransportObserverInte void setObserver(std::shared_ptr observer) override; - void onConnected() override; + void onConnected(std::shared_ptr transport) override; + + void onDisconnected( + std::shared_ptr transport, + avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override; - void onDisconnected(avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override; + void onServerSideDisconnect(std::shared_ptr transport) override; - void onServerSideDisconnect() override; + void consumeMessage(const std::string& contextId, const std::string& message) override; - void consumeMessage(const std::string & contextId, const std::string & message) override; + void doShutdown() override; private: /** @@ -97,11 +98,11 @@ class MessageRouter: public MessageRouterInterface, public TransportObserverInte * TODO: ACSDK-99 Replace this with an injected transport factory. */ virtual std::shared_ptr createTransport( - std::shared_ptr authDelegate, - std::shared_ptr attachmentManager, - const std::string& avsEndpoint, - MessageConsumerInterface* messageConsumerInterface, - TransportObserverInterface* transportObserverInterface) = 0; + std::shared_ptr authDelegate, + std::shared_ptr attachmentManager, + const std::string& avsEndpoint, + std::shared_ptr messageConsumerInterface, + std::shared_ptr transportObserverInterface) = 0; /** * Set the connection state. If it changes, notify our observer. @@ -111,8 +112,8 @@ class MessageRouter: public MessageRouterInterface, public TransportObserverInte * @param reason The reason the connection status changed. */ void setConnectionStatusLocked( - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason); + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason); /** * Notify the connection observer when the status has changed. @@ -125,8 +126,8 @@ class MessageRouter: public MessageRouterInterface, public TransportObserverInte * @param reason The reason the connection status changed. */ void notifyObserverOnConnectionStatusChanged( - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason); + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason); /** * Notify the message observer of an incoming message from AVS. @@ -138,7 +139,7 @@ class MessageRouter: public MessageRouterInterface, public TransportObserverInte * @param contextId The context id for the current message. * @param message The AVS message in string representation. */ - void notifyObserverOnReceive(const std::string & contextId, const std::string & message); + void notifyObserverOnReceive(const std::string& contextId, const std::string& message); /** * Creates a new transport, and begins the connection process. The new transport immediately becomes the active @@ -154,8 +155,8 @@ class MessageRouter: public MessageRouterInterface, public TransportObserverInte * released during the execution of this method, but will be locked when this method exits. */ void disconnectAllTransportsLocked( - std::unique_lock& lock, - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason); + std::unique_lock& lock, + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason); /** * Get the observer. @@ -164,6 +165,20 @@ class MessageRouter: public MessageRouterInterface, public TransportObserverInte */ std::shared_ptr getObserver(); + /** + * Reset m_activeTransport. First check if m_activeTransport is in m_transports. If not, issue + * a warning (because it should be) and queue the safe release of our reference to the transport. + * @c m_connectionMutex must be locked to call this method. + */ + void safelyResetActiveTransportLocked(); + + /** + * Hold a reference to a transport until its shutdown() method (executed on our executor) returns. + * + * @param transport The TransportInterface instance to retain a reference to. + */ + void safelyReleaseTransport(std::shared_ptr transport); + /// The observer object. Access serialized with @c m_connectionMutex. std::shared_ptr m_observer; @@ -206,7 +221,7 @@ class MessageRouter: public MessageRouterInterface, public TransportObserverInte avsCommon::utils::threading::Executor m_executor; }; -} // namespace acl -} // namespace alexaClientSDK +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGE_ROUTER_H_ +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGEROUTER_H_ diff --git a/ACL/include/ACL/Transport/MessageRouterInterface.h b/ACL/include/ACL/Transport/MessageRouterInterface.h index d925f7c9a0..963a9c1a62 100644 --- a/ACL/include/ACL/Transport/MessageRouterInterface.h +++ b/ACL/include/ACL/Transport/MessageRouterInterface.h @@ -1,7 +1,5 @@ /* - * MessageRouterInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,14 +13,15 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGE_ROUTER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGE_ROUTER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGEROUTERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGEROUTERINTERFACE_H_ #include #include #include #include "AVSCommon/Utils/Threading/Executor.h" +#include "AVSCommon/Utils/RequiresShutdown.h" #include "AVSCommon/AVS/MessageRequest.h" // TODO: ACSDK-421: Revert this to implement send(). #include "AVSCommon/SDKInterfaces/MessageSenderInterface.h" @@ -40,11 +39,20 @@ namespace acl { * Implementations of this class are required to be thread-safe. */ // TODO: ACSDK-421: Remove the inheritance from MessageSenderInterface. -class MessageRouterInterface : public avsCommon::sdkInterfaces::MessageSenderInterface { +class MessageRouterInterface + : public avsCommon::sdkInterfaces::MessageSenderInterface + , public avsCommon::utils::RequiresShutdown { public: /// Alias to a connection status and changed reason pair. - using ConnectionStatus = std::pair; + using ConnectionStatus = std::pair< + avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status, + avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason>; + + /** + * Constructor. + */ + MessageRouterInterface(const std::string& name); + /** * Begin the process of establishing an AVS connection. * If the underlying implementation is already connected, or is in the process of changing its connection state, @@ -56,6 +64,7 @@ class MessageRouterInterface : public avsCommon::sdkInterfaces::MessageSenderInt * Close the AVS connection. * If the underlying implementation is not connected, or is in the process of changing its connection state, * this function should do nothing. + * */ virtual void disable() = 0; @@ -81,7 +90,10 @@ class MessageRouterInterface : public avsCommon::sdkInterfaces::MessageSenderInt virtual void setObserver(std::shared_ptr observer) = 0; }; -} // namespace acl -} // namespace alexaClientSDK +inline MessageRouterInterface::MessageRouterInterface(const std::string& name) : RequiresShutdown(name) { +} + +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGE_ROUTER_H_ +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGEROUTERINTERFACE_H_ diff --git a/ACL/include/ACL/Transport/MessageRouterObserverInterface.h b/ACL/include/ACL/Transport/MessageRouterObserverInterface.h index 20103e758f..a39a5d53bf 100644 --- a/ACL/include/ACL/Transport/MessageRouterObserverInterface.h +++ b/ACL/include/ACL/Transport/MessageRouterObserverInterface.h @@ -1,7 +1,5 @@ /* - * MessageRouterObserverInterface.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGE_ROUTER_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGE_ROUTER_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGEROUTEROBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGEROUTEROBSERVERINTERFACE_H_ #include #include @@ -39,8 +37,8 @@ class MessageRouterObserverInterface { * @param reason The reason the connection status changed. */ virtual void onConnectionStatusChanged( - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) = 0; + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) = 0; /** * This function will be called when a Message arrives from AVS. @@ -48,13 +46,13 @@ class MessageRouterObserverInterface { * @param contextId The contextId of the AVS message, which is used when acquiring attachments. * @param message The AVS message that has been received. */ - virtual void receive(const std::string & contextId, const std::string & message) = 0; + virtual void receive(const std::string& contextId, const std::string& message) = 0; /// The friend declaration. friend class MessageRouter; }; -} // namespace ACL -} // namespace AlexaClientSDK +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGE_ROUTER_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MESSAGEROUTEROBSERVERINTERFACE_H_ diff --git a/ACL/include/ACL/Transport/MimeParser.h b/ACL/include/ACL/Transport/MimeParser.h index 84c58ccf67..009e7f81df 100644 --- a/ACL/include/ACL/Transport/MimeParser.h +++ b/ACL/include/ACL/Transport/MimeParser.h @@ -1,7 +1,5 @@ /* - * MimeParser.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -18,8 +16,8 @@ /** * @file */ -#ifndef ALEXACLIENTSDK_ACL_INCLUDE_ACL_TRANSPORT_MIME_PARSER_H_ -#define ALEXACLIENTSDK_ACL_INCLUDE_ACL_TRANSPORT_MIME_PARSER_H_ +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MIMEPARSER_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MIMEPARSER_H_ #include #include @@ -56,11 +54,10 @@ class MimeParser { * * @param messageConsumer The MessageConsumerInterface which should receive messages from AVS. * @param attachmentManager The attachment manager that manages the attachment. - * @param attachmentContextId The context id to use when creating attachments. */ - MimeParser(MessageConsumerInterface *messageConsumer, - std::shared_ptr attachmentManager, - const std::string & attachmentContextId); + MimeParser( + std::shared_ptr messageConsumer, + std::shared_ptr attachmentManager); /** * Resets class for use in another transfer. @@ -73,7 +70,14 @@ class MimeParser { * @param length length of data to feed. * @return A value expressing the final status of the read operation. */ - DataParsedStatus feed(char *data, size_t length); + DataParsedStatus feed(char* data, size_t length); + + /** + * Set the context ID to use when creating attachments. + * + * @param attachmentContextId The context ID to use when creating attachments. + */ + void setAttachmentContextId(const std::string& attachmentContextId); /** * Sets the MIME multipart boundary string that the underlying mime multipart parser @@ -87,7 +91,7 @@ class MimeParser { * The returned parameter's lifetime is guaranteed to be valid for the lifetime of the MimeParser object. * @return The MessageConsumer object being used by the MimeParser. */ - MessageConsumerInterface* getMessageConsumer(); + std::shared_ptr getMessageConsumer(); /** * A utility function to close the currently active attachment writer, if there is one. @@ -111,7 +115,7 @@ class MimeParser { * @param headers The MIME headers for the upcoming MIME part * @param user A pointer to user set data (should always be an instance of this class) */ - static void partBeginCallback(const MultipartHeaders &headers, void *userData); + static void partBeginCallback(const MultipartHeaders& headers, void* userData); /** * Callback that gets called when data from a MIME part is available @@ -119,13 +123,13 @@ class MimeParser { * @param size The size of the data provided * @param user A pointer to user set data (should always be an instance of this class) */ - static void partDataCallback(const char *buffer, size_t size, void *userData); + static void partDataCallback(const char* buffer, size_t size, void* userData); /** * Callback that gets called when a multipart MIME part ends * @param user A pointer to user set data (should always be an instance of this class) */ - static void partEndCallback(void *userData); + static void partEndCallback(void* userData); /** * Utility function to encapsulate the logic required to write data to an attachment. @@ -134,7 +138,7 @@ class MimeParser { * @param size The size of the data to be written to the attachment. * @return A value expressing the final status of the write operation. */ - MimeParser::DataParsedStatus writeDataToAttachment(const char *buffer, size_t size); + MimeParser::DataParsedStatus writeDataToAttachment(const char* buffer, size_t size); /** * Utility function to determine if the given number of bytes has been processed already by this mime parser @@ -161,6 +165,13 @@ class MimeParser { */ void resetByteProgressCounters(); + /** + * Remember if the attachment writer's buffer is full. + * + * @param isFull Whether the attachment writer's buffer is full. + **/ + void setAttachmentWriterBufferFull(bool isFull); + /// Tracks whether we've received our first block of data in the stream. bool m_receivedFirstChunk; /// Tracks the Content-Type of the current MIME part. @@ -168,7 +179,7 @@ class MimeParser { /// Instance of a multipart MIME reader. MultipartReader m_multipartReader; /// The object to report back to when JSON MIME parts are received. - MessageConsumerInterface *m_messageConsumer; + std::shared_ptr m_messageConsumer; /// The attachment manager. std::shared_ptr m_attachmentManager; /// The contextId, needed for creating attachments. @@ -201,6 +212,8 @@ class MimeParser { * should not be re-processed. */ size_t m_totalSuccessfullyProcessedBytes; + /// Records whether the attachment writer's buffer appears to be full. + bool m_isAttachmentWriterBufferFull; }; /** @@ -225,7 +238,7 @@ inline std::ostream& operator<<(std::ostream& stream, MimeParser::DataParsedStat return stream; } -} // acl -} // alexaClientSDK +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXACLIENTSDK_ACL_INCLUDE_ACL_TRANSPORT_MIME_PARSER_H_ +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_MIMEPARSER_H_ diff --git a/ACL/include/ACL/Transport/PostConnectObject.h b/ACL/include/ACL/Transport/PostConnectObject.h new file mode 100644 index 0000000000..ccbc92008e --- /dev/null +++ b/ACL/include/ACL/Transport/PostConnectObject.h @@ -0,0 +1,92 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_POSTCONNECTOBJECT_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_POSTCONNECTOBJECT_H_ + +#include + +#include +#include +#include "ACL/Transport/PostConnectObserverInterface.h" +#include "ACL/Transport/PostConnectSendMessageInterface.h" +#include "ACL/Transport/TransportInterface.h" + +namespace alexaClientSDK { +namespace acl { + +class HTTP2Transport; + +/** + * Base class for post-connect objects. + */ +class PostConnectObject : public avsCommon::utils::RequiresShutdown { +public: + /** + * Static method to initialize the ContextManager. + * + * @param contextManager is the context manager to initialize with. + */ + static void init(std::shared_ptr contextManager); + + /** + * This method currently creates only objects of PostConnectSynchronizer. + * + * @return a shared pointer to PostConnectObject. + */ + static std::shared_ptr create(); + + /** + * The main method which is responsible for doing the PostConnect action + * of the specific PostConnect object type. + * + * @param transport The transport to which the post connect is associated.. + */ + virtual bool doPostConnect(std::shared_ptr transport) = 0; + + /** + * Method to add observers for PostConnectObserverInterface. + * + * @param observer The observer object to add. + */ + virtual void addObserver(std::shared_ptr observer) = 0; + + /** + * Method to remove observers for PostConnectObserverInterface. + * + * @param observer The observer object to remove. + */ + virtual void removeObserver(std::shared_ptr observer) = 0; + + /// static instance of the ContextManager set during intialization. + static std::shared_ptr m_contextManager; + +private: + /** + * Method to notify observers of PostConnectObserverInterface. + */ + virtual void notifyObservers() = 0; + +protected: + /** + * PostConnectObject Constructor. + */ + PostConnectObject(); +}; + +} // namespace acl +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_POSTCONNECTOBJECT_H_ diff --git a/ACL/include/ACL/Transport/PostConnectObserverInterface.h b/ACL/include/ACL/Transport/PostConnectObserverInterface.h new file mode 100644 index 0000000000..51d93dc2d9 --- /dev/null +++ b/ACL/include/ACL/Transport/PostConnectObserverInterface.h @@ -0,0 +1,39 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_POSTCONNECTOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_POSTCONNECTOBSERVERINTERFACE_H_ + +namespace alexaClientSDK { +namespace acl { + +/* + * An interface class which allows a derived class to observe a PostConnect implementation. + */ +class PostConnectObserverInterface { +public: + virtual ~PostConnectObserverInterface() = default; + + /* + * Called when a PostConnect object has successfully completed its + * post-connect processing. + */ + virtual void onPostConnected() = 0; +}; + +} // namespace acl +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_POSTCONNECTOBSERVERINTERFACE_H_ diff --git a/ACL/include/ACL/Transport/PostConnectSendMessageInterface.h b/ACL/include/ACL/Transport/PostConnectSendMessageInterface.h new file mode 100644 index 0000000000..a0516b7d8e --- /dev/null +++ b/ACL/include/ACL/Transport/PostConnectSendMessageInterface.h @@ -0,0 +1,52 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_POSTCONNECTSENDMESSAGEINTERFACE_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_POSTCONNECTSENDMESSAGEINTERFACE_H_ + +#include "AVSCommon/AVS/MessageRequest.h" + +namespace alexaClientSDK { +namespace acl { + +/* + * This specifies an interface to send a message even when connection to AVS + * is not fully established. + */ +class PostConnectSendMessageInterface { +public: + /** + * Destructor. + */ + virtual ~PostConnectSendMessageInterface() = default; + + /** + * Send a message even when the transport is not connected. + * This function must operate asynchronously, internally queuing the + * message to be sent until the connection is able to process it. + * The onSendCompleted callback method of the MessageRequest object is invoked as follows: + * + * The object attempts to send the message, and once this has either + * succeeded or failed, the callback value is set appropriately. + * + * @param request MessageRequest to send a post connect message. + */ + virtual void sendPostConnectMessage(std::shared_ptr request) = 0; +}; + +} // namespace acl +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_POSTCONNECTSENDMESSAGEINTERFACE_H_ diff --git a/ACL/include/ACL/Transport/PostConnectSynchronizer.h b/ACL/include/ACL/Transport/PostConnectSynchronizer.h new file mode 100644 index 0000000000..8108ac052c --- /dev/null +++ b/ACL/include/ACL/Transport/PostConnectSynchronizer.h @@ -0,0 +1,132 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_POSTCONNECTSYNCHRONIZER_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_POSTCONNECTSYNCHRONIZER_H_ + +#include +#include +#include +#include +#include + +#include "ACL/Transport/PostConnectObject.h" +#include "ACL/Transport/PostConnectSendMessageInterface.h" +#include "ACL/Transport/TransportObserverInterface.h" +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace acl { + +class HTTP2Transport; + +/** + * Class that posts the StateSynchronizer message to the AVS. + */ +class PostConnectSynchronizer + : public PostConnectObject + , public avsCommon::sdkInterfaces::ContextRequesterInterface + , public avsCommon::sdkInterfaces::MessageRequestObserverInterface + , public TransportObserverInterface + , public std::enable_shared_from_this { +public: + /** + * PostConnectSynchronizer Constructor. + */ + PostConnectSynchronizer(); + + bool doPostConnect(std::shared_ptr transport) override; + + void onSendCompleted(MessageRequestObserverInterface::Status status) override; + void onExceptionReceived(const std::string& exceptionMessage) override; + + void onContextAvailable(const std::string& jsonContext) override; + void onContextFailure(const avsCommon::sdkInterfaces::ContextRequestError error) override; + + void onServerSideDisconnect(std::shared_ptr transport) override; + void onConnected(std::shared_ptr transport) override; + void onDisconnected( + std::shared_ptr transport, + avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override; + + void addObserver(std::shared_ptr observer) override; + void removeObserver(std::shared_ptr observer) override; + +private: + void doShutdown() override; + + void notifyObservers() override; + + /** + * Loop to fetch the context and send a post-connect message to AVS. + */ + void postConnectLoop(); + + /** + * Thread safe method which returns if the post-connect object. + * is being stopped. + */ + bool isStopping(); + + /** + * Thread safe method which returns if the post-connect object. + * is post-connected. + */ + bool isPostConnected(); + + /** + * Set when a context fetch is in progress and reset when the context fetch fails or when the send + * of SynchronizeState event fails needing another context fetch. + */ + bool m_contextFetchInProgress; + + /// Set after the postConnection is completed. + bool m_isPostConnected; + + /** + * Set when the post-connect object is stopped. This can happen for the following reasons tranport + * disconnects, transport receives a server side disconnect or the AVSConnectManageer is shutdown. + */ + bool m_isStopping; + + /// bool to identfy if the post-connect loop is still running. + bool m_postConnectThreadRunning; + + /// Thread which runs the state synchronization operation. + std::thread m_postConnectThread; + + /// Mutex to protect the m_observers variable. + std::mutex m_observerMutex; + + /// Unordered set of registered observers. + std::unordered_set> m_observers; + + /// Serializes access to members. + std::mutex m_mutex; + + /// Condition variable on which m_postConnectThread waits. + std::condition_variable m_wakeRetryTrigger; + + /// The HTTP2Transport object to which the StateSynchronizer message is sent. + std::shared_ptr m_transport; +}; + +} // namespace acl +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_POSTCONNECTSYNCHRONIZER_H_ diff --git a/ACL/include/ACL/Transport/TransportDefines.h b/ACL/include/ACL/Transport/TransportDefines.h new file mode 100644 index 0000000000..843f0342c3 --- /dev/null +++ b/ACL/include/ACL/Transport/TransportDefines.h @@ -0,0 +1,36 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORTDEFINES_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORTDEFINES_H_ + +#include "AVSCommon/Utils/RetryTimer.h" + +namespace alexaClientSDK { +namespace acl { + +class TransportDefines { +public: + /// Table with the retry times on subsequent retries. + const static std::vector RETRY_TABLE; + + /// Retry Timer Object for transport. + static avsCommon::utils::RetryTimer RETRY_TIMER; +}; + +} // namespace acl +} // namespace alexaClientSDK + +#endif // end ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORTDEFINES_H_ diff --git a/ACL/include/ACL/Transport/TransportInterface.h b/ACL/include/ACL/Transport/TransportInterface.h index 573a3df0c2..04c7695ee7 100644 --- a/ACL/include/ACL/Transport/TransportInterface.h +++ b/ACL/include/ACL/Transport/TransportInterface.h @@ -1,7 +1,5 @@ /* - * TransportInterface.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,12 +13,13 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORT_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORT_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORTINTERFACE_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORTINTERFACE_H_ #include #include +#include namespace alexaClientSDK { namespace acl { @@ -29,12 +28,12 @@ namespace acl { * This class defines the interface which must be implemented to represent the creation and management of a * specific connection to AVS. */ -class TransportInterface { +class TransportInterface : public avsCommon::utils::RequiresShutdown { public: /** - * Destructor. + * TransportInterface constructor. */ - virtual ~TransportInterface() = default; + TransportInterface(); /** * Initiate a connection to AVS. This function may operate asynchronously, meaning its return value @@ -64,10 +63,12 @@ class TransportInterface { * @param request The requested message. */ virtual void send(std::shared_ptr request) = 0; - }; -} // alexaClientSDK -} // acl +inline TransportInterface::TransportInterface() : RequiresShutdown{"TransportInterface"} { +} + +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORT_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORTINTERFACE_H_ diff --git a/ACL/include/ACL/Transport/TransportObserverInterface.h b/ACL/include/ACL/Transport/TransportObserverInterface.h index 344d762348..afea786da1 100644 --- a/ACL/include/ACL/Transport/TransportObserverInterface.h +++ b/ACL/include/ACL/Transport/TransportObserverInterface.h @@ -1,7 +1,5 @@ /* - * TransportObserverInterface.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,10 +13,12 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORT_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORT_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORTOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORTOBSERVERINTERFACE_H_ #include + +#include #include namespace alexaClientSDK { @@ -28,7 +28,7 @@ namespace acl { * An interface class which allows a derived class to observe a Transport implementation. */ class TransportObserverInterface { - public: +public: /** * Destructor. */ @@ -36,23 +36,30 @@ class TransportObserverInterface { /** * Called when a connection to AVS is established. + * + * @param transport The transport that has connected. */ - virtual void onConnected() = 0; + virtual void onConnected(std::shared_ptr transport) = 0; /** * Called when we disconnect from AVS. + * + * @param transport The transport that is no longer connected (or attempting to connect). * @param reason The reason that we disconnected. */ - virtual void onDisconnected(avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) = 0; + virtual void onDisconnected( + std::shared_ptr transport, + avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) = 0; /** * Called when the server asks the client to reconnect + * + * @param transport The transport that has received the disconnect request. */ - virtual void onServerSideDisconnect() = 0; - + virtual void onServerSideDisconnect(std::shared_ptr transport) = 0; }; -} // acl -} // alexaClientSDK +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORT_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_TRANSPORTOBSERVERINTERFACE_H_ diff --git a/ACL/src/AVSConnectionManager.cpp b/ACL/src/AVSConnectionManager.cpp index 134f2afb3b..9eaa2664d7 100644 --- a/ACL/src/AVSConnectionManager.cpp +++ b/ACL/src/AVSConnectionManager.cpp @@ -1,7 +1,5 @@ /* - * AVSConnectionManager.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -37,11 +35,11 @@ static const std::string TAG("AVSConnectionManager"); */ #define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) -std::shared_ptr -AVSConnectionManager::create(std::shared_ptr messageRouter, - bool isEnabled, - std::unordered_set> connectionStatusObservers, - std::unordered_set> messageObservers) { +std::shared_ptr AVSConnectionManager::create( + std::shared_ptr messageRouter, + bool isEnabled, + std::unordered_set> connectionStatusObservers, + std::unordered_set> messageObservers) { if (!avsCommon::avs::initialization::AlexaClientSDKInit::isInitialized()) { ACSDK_ERROR(LX("createFailed").d("reason", "uninitialziedAlexaClientSdk").d("return", "nullptr")); return nullptr; @@ -59,7 +57,7 @@ AVSConnectionManager::create(std::shared_ptr messageRout } } - for(auto observer : messageObservers) { + for (auto observer : messageObservers) { if (!observer) { ACSDK_ERROR(LX("createFailed").d("reason", "nullMessageObserver").d("return", "nullptr")); return nullptr; @@ -67,7 +65,7 @@ AVSConnectionManager::create(std::shared_ptr messageRout } auto connectionManager = std::shared_ptr( - new AVSConnectionManager(messageRouter, connectionStatusObservers, messageObservers)); + new AVSConnectionManager(messageRouter, connectionStatusObservers, messageObservers)); messageRouter->setObserver(connectionManager); @@ -79,25 +77,21 @@ AVSConnectionManager::create(std::shared_ptr messageRout } AVSConnectionManager::AVSConnectionManager( - std::shared_ptr messageRouter, - std::unordered_set> connectionStatusObservers, - std::unordered_set> messageObservers) - : RequiresShutdown{"AVSConnectionManager"}, - m_isEnabled{false}, - m_isSynchronized{false}, - m_connectionStatusObservers{connectionStatusObservers}, - m_messageObservers{messageObservers}, - m_messageRouter{messageRouter} { + std::shared_ptr messageRouter, + std::unordered_set> connectionStatusObservers, + std::unordered_set> messageObservers) : + AbstractConnection{connectionStatusObservers}, + RequiresShutdown{"AVSConnectionManager"}, + m_isEnabled{false}, + m_messageObservers{messageObservers}, + m_messageRouter{messageRouter} { } void AVSConnectionManager::doShutdown() { disable(); + clearObservers(); { - std::lock_guard lock{m_connectionStatusObserverMutex}; - m_connectionStatusObservers.clear(); - } - { - std::lock_guard lock{m_messageOberverMutex}; + std::lock_guard lock{m_messageObserverMutex}; m_messageObservers.clear(); } m_messageRouter.reset(); @@ -125,16 +119,7 @@ void AVSConnectionManager::reconnect() { } void AVSConnectionManager::sendMessage(std::shared_ptr request) { - // TODO: ACSDK-421: Implement synchronized state check at a lower level. - std::unique_lock lock{m_synchronizationMutex}; - if (m_isSynchronized) { - lock.unlock(); - m_messageRouter->sendMessage(request); - } else { - lock.unlock(); - ACSDK_DEBUG(LX("sendMessageNotSuccessful").d("reason", "notSynchronized")); - request->onSendCompleted(avsCommon::avs::MessageRequest::Status::NOT_SYNCHRONIZED); - } + m_messageRouter->sendMessage(request); } bool AVSConnectionManager::isConnected() const { @@ -145,89 +130,38 @@ void AVSConnectionManager::setAVSEndpoint(const std::string& avsEndpoint) { m_messageRouter->setAVSEndpoint(avsEndpoint); } -void AVSConnectionManager::addConnectionStatusObserver( - std::shared_ptr observer) { - if (!observer) { - ACSDK_ERROR(LX("addConnectionStatusObserverFailed").d("reason", "nullObserver")); - return; - } - - { - std::lock_guard lock{m_connectionStatusObserverMutex}; - if (!m_connectionStatusObservers.insert(observer).second) { - // The observer was already part of the set, no need to notify it of a status change. - return; - } - } - - auto connectionStatus = m_messageRouter->getConnectionStatus(); - observer->onConnectionStatusChanged(connectionStatus.first, connectionStatus.second); -} - -void AVSConnectionManager::removeConnectionStatusObserver( - std::shared_ptr observer) { - if (!observer) { - ACSDK_ERROR(LX("removeConnectionStatusObserverFailed").d("reason", "nullObserver")); - return; - } - std::lock_guard lock{m_connectionStatusObserverMutex}; - m_connectionStatusObservers.erase(observer); -} - void AVSConnectionManager::addMessageObserver( - std::shared_ptr observer) { + std::shared_ptr observer) { if (!observer) { ACSDK_ERROR(LX("addObserverFailed").d("reason", "nullObserver")); return; } - std::lock_guard lock{m_messageOberverMutex}; + std::lock_guard lock{m_messageObserverMutex}; m_messageObservers.insert(observer); } void AVSConnectionManager::removeMessageObserver( - std::shared_ptr observer) { + std::shared_ptr observer) { if (!observer) { ACSDK_ERROR(LX("removeObserverFailed").d("reason", "nullObserver")); return; } - std::lock_guard lock{m_messageOberverMutex}; + std::lock_guard lock{m_messageObserverMutex}; m_messageObservers.erase(observer); } void AVSConnectionManager::onConnectionStatusChanged( - const ConnectionStatusObserverInterface::Status status, - const ConnectionStatusObserverInterface::ChangedReason reason) { - if (status == ConnectionStatusObserverInterface::Status::DISCONNECTED || - status == ConnectionStatusObserverInterface::Status::PENDING ) { - std::lock_guard{m_synchronizationMutex}; - m_isSynchronized = false; - } - - std::unique_lock lock{m_connectionStatusObserverMutex}; - std::unordered_set> observers{m_connectionStatusObservers}; - lock.unlock(); - - for (auto observer : observers) { - observer->onConnectionStatusChanged(status, reason); - } -} - -void AVSConnectionManager::onStateChanged(StateSynchronizerObserverInterface::State newState) { - std::unique_lock lock{m_synchronizationMutex}; - m_isSynchronized = (StateSynchronizerObserverInterface::State::SYNCHRONIZED == newState); - if (m_isSynchronized) { - lock.unlock(); - onConnectionStatusChanged( - ConnectionStatusObserverInterface::Status::POST_CONNECTED, - ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); - } + const ConnectionStatusObserverInterface::Status status, + const ConnectionStatusObserverInterface::ChangedReason reason) { + updateConnectionStatus(status, reason); } -void AVSConnectionManager::receive(const std::string & contextId, const std::string & message) { - std::unique_lock lock{m_messageOberverMutex}; - std::unordered_set> observers{m_messageObservers}; +void AVSConnectionManager::receive(const std::string& contextId, const std::string& message) { + std::unique_lock lock{m_messageObserverMutex}; + std::unordered_set> observers{ + m_messageObservers}; lock.unlock(); for (auto observer : observers) { @@ -237,5 +171,5 @@ void AVSConnectionManager::receive(const std::string & contextId, const std::str } } -} // namespace acl -} // namespace alexaClientSDK +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/src/Transport/CurlEasyHandleWrapper.cpp b/ACL/src/Transport/CurlEasyHandleWrapper.cpp deleted file mode 100644 index 3f1a501d5d..0000000000 --- a/ACL/src/Transport/CurlEasyHandleWrapper.cpp +++ /dev/null @@ -1,341 +0,0 @@ -/* - * CurlEasyHandleWrapper.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0/ - * - * or in the "license" file accompanying this file. This file 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 - -#include -#include - -#include "ACL/Transport/CurlEasyHandleWrapper.h" - -namespace alexaClientSDK { -namespace acl { - -using namespace alexaClientSDK::avsCommon::utils; - -/// String to identify log entries originating from this file. -static const std::string TAG("CurlEasyHandleWrapper"); - -/** - * Create a LogEntry using this file's TAG and the specified event string. - * - * @param The event string for this @c LogEntry. - */ -#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) - -/// MIME Content-Type for JSON data -static std::string JSON_MIME_TYPE = "text/json"; -/// MIME Content-Type for octet stream data -static std::string OCTET_MIME_TYPE = "application/octet-stream"; -/// Response code for HTTP 204 (Success No Content response) -static const long HTTP_RESPONSE_SUCCESS_NO_CONTENT = 204; - -CurlEasyHandleWrapper::CurlEasyHandleWrapper() - : m_handle{curl_easy_init()}, - m_requestHeaders{nullptr}, - m_postHeaders{nullptr}, - m_post{nullptr} { - setDefaultOptions(); -}; - -CurlEasyHandleWrapper::~CurlEasyHandleWrapper() { - cleanupResources(); - curl_easy_cleanup(m_handle); -}; - -bool CurlEasyHandleWrapper::reset() { - cleanupResources(); - long responseCode = 0; - CURLcode ret = curl_easy_getinfo(m_handle, CURLINFO_RESPONSE_CODE, &responseCode); - if (ret != CURLE_OK) { - ACSDK_ERROR(LX("resetFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_getinfo") - .d("info", "CURLINFO_RESPONSE_CODE") - .d("error", curl_easy_strerror(ret))); - curl_easy_cleanup(m_handle); - m_handle = curl_easy_init(); - //If we can't create a new handle don't try to set options - if (!m_handle) { - ACSDK_ERROR(LX("resetFailed").d("reason", "curlFailure").d("method", "curl_easy_init")); - return false; - } - return setDefaultOptions(); - } - - /* - * It appears that re-using a curl easy handle after receiving an HTTP 204 (Success No Content) - * causes the next transfer to timeout. As a workaround just cleanup the handle and create a new one - * if we receive a 204. - * - * TODO: ACSDK-104 Find a way to re-use all handles, or re-evaluate the easy handle pooling scheme - */ - if (HTTP_RESPONSE_SUCCESS_NO_CONTENT == responseCode) { - ACSDK_DEBUG(LX("reset").d("responseCode", "HTTP_RESPONSE_SUCCESS_NO_CONTENT")); - curl_easy_cleanup(m_handle); - m_handle = curl_easy_init(); - if (!m_handle) { - ACSDK_ERROR(LX("resetFailed").d("reason", "curlFailure").d("method", "curl_easy_init")); - return false; - } - } else { - curl_easy_reset(m_handle); - } - return setDefaultOptions(); -} - -CURL* CurlEasyHandleWrapper::getCurlHandle() { - return m_handle; -} - -bool CurlEasyHandleWrapper::addHTTPHeader(const std::string& header) { - m_requestHeaders = curl_slist_append(m_requestHeaders, header.c_str()); - if (!m_requestHeaders) { - ACSDK_ERROR(LX("addHTTPHeaderFailed") - .d("reason", "curlFailure") - .d("method", "curl_slist_append")); - ACSDK_DEBUG(LX("addHTTPHeaderFailed").d("header", header)); - return false; - } - CURLcode ret = curl_easy_setopt(m_handle, CURLOPT_HTTPHEADER, m_requestHeaders); - if (ret != CURLE_OK) { - ACSDK_ERROR(LX("addHTTPHeaderFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_setopt") - .d("option", "CURLOPT_HTTPHEADER") - .d("error", curl_easy_strerror(ret))); - return false; - } - return true; -} - -bool CurlEasyHandleWrapper::addPostHeader(const std::string& header) { - m_postHeaders = curl_slist_append(m_postHeaders, header.c_str()); - if (!m_requestHeaders) { - ACSDK_ERROR(LX("addPostHeaderFailed") - .d("reason", "curlFailure") - .d("method", "curl_slist_append")); - ACSDK_DEBUG(LX("addPostHeaderFailed").d("header", header)); - return false; - } - return true; -} - -bool CurlEasyHandleWrapper::setURL(const std::string& url) { - CURLcode ret = curl_easy_setopt(m_handle, CURLOPT_URL, url.c_str()); - if (ret != CURLE_OK) { - ACSDK_ERROR(LX("setUrlFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_setopt") - .d("option", "CURLOPT_URL") - .d("url", url) - .d("error", curl_easy_strerror(ret))); - return false; - } - return true; -} - -bool CurlEasyHandleWrapper::setTransferType(TransferType type) { - CURLcode ret; - switch (type) { - case TransferType::kGET: - ret = curl_easy_setopt(m_handle, CURLOPT_HTTPGET, 1L); - if (ret != CURLE_OK) { - ACSDK_ERROR(LX("setTransferTypeFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_setopt") - .d("option", "CURLOPT_HTTPGET") - .d("error", curl_easy_strerror(ret))); - return false; - } - break; - case TransferType::kPOST: - ret = curl_easy_setopt(m_handle, CURLOPT_HTTPPOST, m_post); - if (!m_post || ret != CURLE_OK) { - ACSDK_ERROR(LX("setTransferTypeFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_setopt") - .d("option", "CURLOPT_HTTPPOST") - .d("error", curl_easy_strerror(ret))); - return false; - } - break; - } - return true; -} - -bool CurlEasyHandleWrapper::setPostContent(const std::string& fieldName, const std::string& payload) { - curl_httppost *last = nullptr; - CURLFORMcode ret = curl_formadd(&m_post, &last, CURLFORM_COPYNAME, fieldName.c_str(), CURLFORM_COPYCONTENTS, payload.c_str(), - CURLFORM_CONTENTTYPE, JSON_MIME_TYPE.c_str(), CURLFORM_CONTENTHEADER, m_postHeaders, CURLFORM_END); - if (ret) { - ACSDK_ERROR(LX("setPostContentFailed") - .d("reason", "curlFailure") - .d("method", "curl_formadd") - .d("fieldName", fieldName) - .sensitive("content", payload) - .d("curlFormCode", ret)); - - return false; - } - return true; -} - -bool CurlEasyHandleWrapper::setTransferTimeout(const long timeoutSeconds) { - CURLcode ret = curl_easy_setopt(m_handle, CURLOPT_TIMEOUT, timeoutSeconds); - if (ret != CURLE_OK) { - ACSDK_ERROR(LX("setTransferTimeoutFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_setopt") - .d("option", "CURLOPT_TIMEOUT") - .d("timeOut", timeoutSeconds) - .d("error", curl_easy_strerror(ret))); - return false; - } - return true; -} - -bool CurlEasyHandleWrapper::setPostStream(const std::string& fieldName, void *userData) { - curl_httppost *last = m_post; - CURLFORMcode ret = curl_formadd(&m_post, &last, CURLFORM_COPYNAME, fieldName.c_str(), CURLFORM_STREAM, userData, - CURLFORM_CONTENTTYPE, OCTET_MIME_TYPE.c_str(), CURLFORM_END); - if (ret) { - ACSDK_ERROR(LX("setPostStreamFailed") - .d("reason", "curlFailure") - .d("method", "curl_formadd") - .d("fieldName", fieldName) - .d("curlFormCode", ret)); - return false; - } - return true; -} - -bool CurlEasyHandleWrapper::setConnectionTimeout(const std::chrono::seconds timeoutSeconds) { - CURLcode ret = curl_easy_setopt(m_handle, CURLOPT_CONNECTTIMEOUT, timeoutSeconds.count()); - if (ret != CURLE_OK) { - ACSDK_ERROR(LX("setConnectionTimeoutFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_setopt") - .d("option", "CURLOPT_TIMEOUT") - .d("timeOut", timeoutSeconds.count()) - .d("error", curl_easy_strerror(ret))); - return false; - } - - return true; -} - -bool CurlEasyHandleWrapper::setWriteCallback(CurlCallback callback, void* userData) { - CURLcode ret = curl_easy_setopt(m_handle, CURLOPT_WRITEFUNCTION, callback); - if (ret != CURLE_OK) { - ACSDK_ERROR(LX("setWriteCallbackFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_setopt") - .d("option", "CURLOPT_WRITEFUNCTION") - .d("error", curl_easy_strerror(ret))); - return false; - } - if (userData) { - ret = curl_easy_setopt(m_handle, CURLOPT_WRITEDATA, userData); - if (ret != CURLE_OK) { - ACSDK_ERROR(LX("setWriteCallbackFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_setopt") - .d("option", "CURLOPT_WRITEDATA") - .d("error", curl_easy_strerror(ret))); - return false; - } - } - return true; -} - -bool CurlEasyHandleWrapper::setHeaderCallback(CurlCallback callback, void* userData) { - CURLcode ret = curl_easy_setopt(m_handle, CURLOPT_HEADERFUNCTION, callback); - if (ret != CURLE_OK) { - ACSDK_ERROR(LX("setHeaderCallbackFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_setopt") - .d("option", "CURLOPT_HEADERFUNCTION") - .d("error", curl_easy_strerror(ret))); - return false; - } - if (userData) { - ret = curl_easy_setopt(m_handle, CURLOPT_HEADERDATA, userData); - if (ret != CURLE_OK) { - ACSDK_ERROR(LX("setHeaderCallbackFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_setopt") - .d("option", "CURLOPT_HEADERDATA") - .d("error", curl_easy_strerror(ret))); - return false; - } - } - return true; -} - -bool CurlEasyHandleWrapper::setReadCallback(CurlCallback callback, void* userData) { - CURLcode ret = curl_easy_setopt(m_handle, CURLOPT_READFUNCTION, callback); - if (ret != CURLE_OK) { - ACSDK_ERROR(LX("setReadCallbackFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_setopt") - .d("option", "CURLOPT_READFUNCTION") - .d("error", curl_easy_strerror(ret))); - return false; - } - if (userData) { - ret = curl_easy_setopt(m_handle, CURLOPT_READDATA, userData); - if (ret != CURLE_OK) { - ACSDK_ERROR(LX("setReadCallbackFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_setopt") - .d("option", "CURLOPT_READDATA") - .d("error", curl_easy_strerror(ret))); - return false; - } - } - return true; -} - -void CurlEasyHandleWrapper::cleanupResources() { - if (m_requestHeaders) { - curl_slist_free_all(m_requestHeaders); - m_requestHeaders = nullptr; - } - - if (m_postHeaders) { - curl_slist_free_all(m_postHeaders); - m_postHeaders = nullptr; - } - - if (m_post) { - curl_formfree(m_post); - m_post = nullptr; - } -} - -bool CurlEasyHandleWrapper::setDefaultOptions() { - if (libcurlUtils::prepareForTLS(m_handle)) { - return true; - } - curl_easy_cleanup(m_handle); - m_handle = nullptr; - return false; -} - -} // acl -} // alexaClientSDK diff --git a/ACL/src/Transport/HTTP2MessageRouter.cpp b/ACL/src/Transport/HTTP2MessageRouter.cpp index ac1b17da77..d403cfc85b 100644 --- a/ACL/src/Transport/HTTP2MessageRouter.cpp +++ b/ACL/src/Transport/HTTP2MessageRouter.cpp @@ -1,7 +1,5 @@ /* - * HTTP2MessageRouter.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -28,24 +26,24 @@ using namespace avsCommon::sdkInterfaces; using namespace avsCommon::avs::attachment; HTTP2MessageRouter::HTTP2MessageRouter( - std::shared_ptr authDelegate, - std::shared_ptr attachmentManager, - const std::string& avsEndpoint) - : MessageRouter(authDelegate, attachmentManager, avsEndpoint) { + std::shared_ptr authDelegate, + std::shared_ptr attachmentManager, + const std::string& avsEndpoint) : + MessageRouter(authDelegate, attachmentManager, avsEndpoint) { } HTTP2MessageRouter::~HTTP2MessageRouter() { } std::shared_ptr HTTP2MessageRouter::createTransport( - std::shared_ptr authDelegate, - std::shared_ptr attachmentManager, - const std::string& avsEndpoint, - MessageConsumerInterface* messageConsumerInterface, - TransportObserverInterface* transportObserverInterface) { - return std::make_shared(authDelegate, avsEndpoint, messageConsumerInterface, attachmentManager, - transportObserverInterface); + std::shared_ptr authDelegate, + std::shared_ptr attachmentManager, + const std::string& avsEndpoint, + std::shared_ptr messageConsumerInterface, + std::shared_ptr transportObserverInterface) { + return HTTP2Transport::create( + authDelegate, avsEndpoint, messageConsumerInterface, attachmentManager, transportObserverInterface); } -} // namespace acl -} // namespace alexaClientSDK +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/src/Transport/HTTP2Stream.cpp b/ACL/src/Transport/HTTP2Stream.cpp index 1205447ee7..a0d5533ce3 100644 --- a/ACL/src/Transport/HTTP2Stream.cpp +++ b/ACL/src/Transport/HTTP2Stream.cpp @@ -1,7 +1,5 @@ /* - * HTTP2Stream.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,21 +12,27 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ + +#include +#include + +#include +#include #include +#include +#include + #include "ACL/Transport/HTTP2Stream.h" #include "ACL/Transport/HTTP2Transport.h" -#include -#include - namespace alexaClientSDK { namespace acl { using namespace alexaClientSDK::avsCommon::utils; +using namespace alexaClientSDK::avsCommon::utils::libcurlUtils; using namespace avsCommon::avs; using namespace avsCommon::avs::attachment; - /// String to identify log entries originating from this file. static const std::string TAG("HTTP2Stream"); @@ -55,23 +59,83 @@ static const std::string METADATA_FIELD_NAME = "metadata"; static const std::string STREAM_CONTEXT_ID_PREFIX_STRING = "ACL_LOGICAL_HTTP2_STREAM_ID_"; /// The prefix of request IDs passed back in the header of AVS replies. static const std::string X_AMZN_REQUESTID_PREFIX = "x-amzn-requestid:"; +/// Key under root configuration node for ACL configuration values. +static const std::string ACL_CONFIGURATION_KEY("acl"); +/// Key under 'acl' configuration node for path/prefix of per-stream log file names. +static const std::string STREAM_LOG_PREFIX_KEY("streamLogPrefix"); +/// Prefix for per-stream log file names. +static const std::string STREAM_LOG_NAME_PREFIX("stream-"); +/// Suffix for per-stream log file names. +static const std::string STREAM_LOG_NAME_SUFFIX(".log"); +/// Suffix for per-stream dump of incoming data. +static const std::string STREAM_IN_DUMP_SUFFIX("-in.bin"); +/// Suffix for per-stream dump of outgoing data. +static const std::string STREAM_OUT_DUMP_SUFFIX("-out.bin"); + #ifdef DEBUG /// Carriage return static const char CR = 0x0D; #endif -// Definition for the class static member variable. -unsigned int HTTP2Stream::m_streamIdCounter = 1; +#ifdef ACSDK_EMIT_CURL_LOGS /** - * A local function to help us emulate HTTP/2 stream ids increasing by two when incrementing. - * Invoking this function within an initialization section is more readable than writing something like {++(++id)}. + * Macro to simplify building a switch that translates from enum values to strings. + * + * @param name The name of the enum value to translate. */ -static unsigned int incrementCounterByTwo(unsigned int* id) { - *id += 2; - return *id; +#define ACSDK_TYPE_CASE(name) \ + case name: \ + return #name; + +/** + * Return a string identifying a @c curl_infotype value. + * + * @param type The value to identify + * @return A string identifying the specified @c curl_infotype value. + */ +static const char* curlInfoTypeToString(curl_infotype type) { + switch (type) { + ACSDK_TYPE_CASE(CURLINFO_TEXT) + ACSDK_TYPE_CASE(CURLINFO_HEADER_OUT) + ACSDK_TYPE_CASE(CURLINFO_DATA_OUT) + ACSDK_TYPE_CASE(CURLINFO_SSL_DATA_OUT) + ACSDK_TYPE_CASE(CURLINFO_HEADER_IN) + ACSDK_TYPE_CASE(CURLINFO_DATA_IN) + ACSDK_TYPE_CASE(CURLINFO_SSL_DATA_IN) + ACSDK_TYPE_CASE(CURLINFO_END) + } + return ">>> unknown curl_infotype value <<<"; } +#undef ACSDK_TYPE_CASE + +/** + * Return a prefix suitable for the data associated with a @c curl_infotype value. + * + * @param type The type of data to prefix. + * @return The prefix to use for the specified typw of data. + */ +static const char* curlInfoTypeToPrefix(curl_infotype type) { + switch (type) { + case CURLINFO_TEXT: + return "* "; + case CURLINFO_HEADER_OUT: + case CURLINFO_DATA_OUT: + case CURLINFO_SSL_DATA_OUT: + return "> "; + case CURLINFO_HEADER_IN: + case CURLINFO_DATA_IN: + case CURLINFO_SSL_DATA_IN: + return "< "; + case CURLINFO_END: + return ""; + } + return ">>> unknown curl_infotype value <<<"; +} + +#endif // ACSDK_EMIT_CURL_LOGS + /** * Get @c std::chrono::steady_clock::now() in a form that can be wrapped in @c atomic. * @@ -81,13 +145,14 @@ static std::chrono::steady_clock::rep getNow() { return std::chrono::steady_clock::now().time_since_epoch().count(); } -HTTP2Stream::HTTP2Stream(MessageConsumerInterface* messageConsumer, - std::shared_ptr attachmentManager) - : m_logicalStreamId{incrementCounterByTwo(&m_streamIdCounter)}, - m_parser{messageConsumer, attachmentManager, STREAM_CONTEXT_ID_PREFIX_STRING + std::to_string(m_logicalStreamId)}, - m_isPaused{false}, - m_progressTimeout{std::chrono::steady_clock::duration::max().count()}, - m_timeOfLastTransfer{getNow()} { +HTTP2Stream::HTTP2Stream( + std::shared_ptr messageConsumer, + std::shared_ptr attachmentManager) : + m_logicalStreamId{0}, + m_parser{messageConsumer, attachmentManager}, + m_isPaused{false}, + m_progressTimeout{std::chrono::steady_clock::duration::max().count()}, + m_timeOfLastTransfer{getNow()} { } bool HTTP2Stream::reset() { @@ -95,29 +160,36 @@ bool HTTP2Stream::reset() { ACSDK_ERROR(LX("resetFailed").d("reason", "resetHandleFailed")); return false; } - m_currentRequest = nullptr; m_parser.reset(); + m_currentRequest.reset(); + m_isPaused = false; + m_exceptionBeingProcessed.clear(); m_progressTimeout = std::chrono::steady_clock::duration::max().count(); m_timeOfLastTransfer = getNow(); return true; } bool HTTP2Stream::setCommonOptions(const std::string& url, const std::string& authToken) { - CURLcode ret; - std::ostringstream authHeader; - authHeader << AUTHORIZATION_HEADER << authToken; +#ifdef ACSDK_EMIT_CURL_LOGS + + if (!(setopt(CURLOPT_DEBUGDATA, "CURLOPT_DEBUGDATA", this) && + setopt(CURLOPT_DEBUGFUNCTION, "CURLOPT_DEBUGFUNCTION", debugFunction) && + setopt(CURLOPT_VERBOSE, "CURLOPT_VERBOSE", 1L))) { + return false; + } + +#endif if (!m_transfer.setURL(url)) { - ACSDK_ERROR(LX("setCommonOptionsFailed") - .d("reason", "setURLFailed") - .d("url", url)); + ACSDK_ERROR(LX("setCommonOptionsFailed").d("reason", "setURLFailed").d("url", url)); return false; } + std::ostringstream authHeader; + authHeader << AUTHORIZATION_HEADER << authToken; if (!m_transfer.addHTTPHeader(authHeader.str())) { - ACSDK_ERROR(LX("setCommonOptionsFailed") - .d("reason", "addHTTPHeaderFailed") - .sensitive("authHeader", authHeader.str())); + ACSDK_ERROR( + LX("setCommonOptionsFailed").d("reason", "addHTTPHeaderFailed").sensitive("authHeader", authHeader.str())); return false; } @@ -130,32 +202,13 @@ bool HTTP2Stream::setCommonOptions(const std::string& url, const std::string& au ACSDK_ERROR(LX("setCommonOptionsFailed").d("reason", "setHeaderCallbackFailed")); return false; } -#ifdef ACSDK_EMIT_SENSITIVE_LOGS - ret = curl_easy_setopt(m_transfer.getCurlHandle(), CURLOPT_VERBOSE, 1L); - if (ret != CURLE_OK) { - ACSDK_ERROR(LX("setCommonOptionsFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_setopt") - .d("option", "CURLOPT_VERBOSE") - .d("error", curl_easy_strerror(ret))); - return false; - } -#endif - ret = curl_easy_setopt(m_transfer.getCurlHandle(), CURLOPT_TCP_KEEPALIVE, 1); - // Set TCP_KEEPALIVE to ensure that we detect server initiated disconnects - if (ret != CURLE_OK) { - ACSDK_ERROR(LX("setCommonOptionsFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_setopt") - .d("option", "CURLOPT_TCP_KEEPALIVE") - .d("error", curl_easy_strerror(ret))); - return false; - } - return true; + + return setopt(CURLOPT_TCP_KEEPALIVE, "CURLOPT_TCP_KEEPALIVE", 1); } -bool HTTP2Stream::initGet(const std::string& url ,const std::string& authToken) { +bool HTTP2Stream::initGet(const std::string& url, const std::string& authToken) { reset(); + initStreamLog(); if (url.empty()) { ACSDK_ERROR(LX("initGetFailed").d("reason", "emptyURL")); @@ -172,7 +225,7 @@ bool HTTP2Stream::initGet(const std::string& url ,const std::string& authToken) return false; } - if (!m_transfer.setTransferType(CurlEasyHandleWrapper::TransferType::kGET)) { + if (!m_transfer.setTransferType(avsCommon::utils::libcurlUtils::CurlEasyHandleWrapper::TransferType::kGET)) { return false; } @@ -184,9 +237,13 @@ bool HTTP2Stream::initGet(const std::string& url ,const std::string& authToken) return true; } -bool HTTP2Stream::initPost(const std::string& url, const std::string& authToken, - std::shared_ptr request) { +bool HTTP2Stream::initPost( + const std::string& url, + const std::string& authToken, + std::shared_ptr request) { reset(); + initStreamLog(); + std::string requestPayload = request->getJsonContent(); if (url.empty()) { @@ -226,7 +283,7 @@ bool HTTP2Stream::initPost(const std::string& url, const std::string& authToken, } } - if (!m_transfer.setTransferType(CurlEasyHandleWrapper::TransferType::kPOST)) { + if (!m_transfer.setTransferType(avsCommon::utils::libcurlUtils::CurlEasyHandleWrapper::TransferType::kPOST)) { ACSDK_ERROR(LX("initPostFailed").d("reason", "setTransferTypeFailed")); return false; } @@ -240,23 +297,24 @@ bool HTTP2Stream::initPost(const std::string& url, const std::string& authToken, return true; } -size_t HTTP2Stream::writeCallback(char *data, size_t size, size_t nmemb, void *user) { +size_t HTTP2Stream::writeCallback(char* data, size_t size, size_t nmemb, void* user) { size_t numChars = size * nmemb; - HTTP2Stream *stream = static_cast(user); + HTTP2Stream* stream = static_cast(user); stream->m_timeOfLastTransfer = getNow(); + /** * If we get an HTTP 200 response code then we're getting a MIME multipart * payload. For all other response codes we're getting a JSON string without * multipart headers. */ - if (HTTP2Stream::HTTPResponseCodes::SUCCESS_OK == stream->getResponseCode()) { + if (HTTPResponseCode::SUCCESS_OK == stream->getResponseCode()) { MimeParser::DataParsedStatus status = stream->m_parser.feed(data, numChars); if (MimeParser::DataParsedStatus::OK == status) { return numChars; } else if (MimeParser::DataParsedStatus::INCOMPLETE == status) { stream->m_isPaused = true; - return CURL_READFUNC_PAUSE; + return CURL_WRITEFUNC_PAUSE; } else if (MimeParser::DataParsedStatus::ERROR == status) { return CURL_READFUNC_ABORT; } @@ -266,9 +324,9 @@ size_t HTTP2Stream::writeCallback(char *data, size_t size, size_t nmemb, void *u return numChars; } -size_t HTTP2Stream::headerCallback(char *data, size_t size, size_t nmemb, void *user) { +size_t HTTP2Stream::headerCallback(char* data, size_t size, size_t nmemb, void* user) { if (!user) { - ACSDK_ERROR(LX("headerCallbackFailed").d("reason","nullUser")); + ACSDK_ERROR(LX("headerCallbackFailed").d("reason", "nullUser")); return 0; } size_t headerLength = size * nmemb; @@ -280,26 +338,25 @@ size_t HTTP2Stream::headerCallback(char *data, size_t size, size_t nmemb, void * } #endif std::string boundary; - HTTP2Stream *stream = static_cast(user); + HTTP2Stream* stream = static_cast(user); stream->m_timeOfLastTransfer = getNow(); - if (HTTP2Stream::HTTPResponseCodes::SUCCESS_OK == stream->getResponseCode()) { + if (HTTPResponseCode::SUCCESS_OK == stream->getResponseCode()) { if (header.find(BOUNDARY_PREFIX) != std::string::npos) { boundary = header.substr(header.find(BOUNDARY_PREFIX)); - boundary = boundary.substr(BOUNDARY_PREFIX_SIZE, - boundary.find(BOUNDARY_DELIMITER) - BOUNDARY_PREFIX_SIZE); + boundary = boundary.substr(BOUNDARY_PREFIX_SIZE, boundary.find(BOUNDARY_DELIMITER) - BOUNDARY_PREFIX_SIZE); stream->m_parser.setBoundaryString(boundary); } } return headerLength; } -size_t HTTP2Stream::readCallback(char *data, size_t size, size_t nmemb, void *userData) { +size_t HTTP2Stream::readCallback(char* data, size_t size, size_t nmemb, void* userData) { if (!userData) { - ACSDK_ERROR(LX("readCallbackFailed").d("reason","nullUserData")); + ACSDK_ERROR(LX("readCallbackFailed").d("reason", "nullUserData")); return 0; } - HTTP2Stream *stream = static_cast(userData); + HTTP2Stream* stream = static_cast(userData); stream->m_timeOfLastTransfer = getNow(); auto attachmentReader = stream->m_currentRequest->getAttachmentReader(); @@ -333,7 +390,7 @@ size_t HTTP2Stream::readCallback(char *data, size_t size, size_t nmemb, void *us } // The attachment has no more data right now, but is still readable. if (0 == bytesRead) { - stream->setPaused(true); + stream->m_isPaused = true; return CURL_READFUNC_PAUSE; } @@ -345,10 +402,10 @@ long HTTP2Stream::getResponseCode() { CURLcode ret = curl_easy_getinfo(m_transfer.getCurlHandle(), CURLINFO_RESPONSE_CODE, &responseCode); if (ret != CURLE_OK) { ACSDK_ERROR(LX("getResponseCodeFailed") - .d("reason", "curlFailure") - .d("method", "curl_easy_getinfo") - .d("info", "CURLINFO_RESPONSE_CODE") - .d("error", curl_easy_strerror(ret))); + .d("reason", "curlFailure") + .d("method", "curl_easy_getinfo") + .d("info", "CURLINFO_RESPONSE_CODE") + .d("error", curl_easy_strerror(ret))); return -1; } return responseCode; @@ -360,27 +417,40 @@ CURL* HTTP2Stream::getCurlHandle() { void HTTP2Stream::notifyRequestObserver() { if (m_exceptionBeingProcessed.length() > 0) { - m_currentRequest->onExceptionReceived(m_exceptionBeingProcessed); + m_currentRequest->exceptionReceived(m_exceptionBeingProcessed); m_exceptionBeingProcessed = ""; } long responseCode = getResponseCode(); switch (responseCode) { - case HTTP2Stream::HTTPResponseCodes::NO_RESPONSE_RECEIVED: - m_currentRequest->onSendCompleted(avsCommon::avs::MessageRequest::Status::INTERNAL_ERROR); + case HTTPResponseCode::HTTP_RESPONSE_CODE_UNDEFINED: + m_currentRequest->sendCompleted( + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::INTERNAL_ERROR); + break; + case HTTPResponseCode::SUCCESS_OK: + m_currentRequest->sendCompleted(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS); + break; + case HTTPResponseCode::SUCCESS_NO_CONTENT: + m_currentRequest->sendCompleted( + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT); break; - case HTTP2Stream::HTTPResponseCodes::SUCCESS_OK: - case HTTP2Stream::HTTPResponseCodes::SUCCESS_NO_CONTENT: - m_currentRequest->onSendCompleted(avsCommon::avs::MessageRequest::Status::SUCCESS); + case HTTPResponseCode::BAD_REQUEST: + m_currentRequest->sendCompleted( + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::BAD_REQUEST); + break; + case HTTPResponseCode::SERVER_INTERNAL_ERROR: + m_currentRequest->sendCompleted( + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SERVER_INTERNAL_ERROR_V2); break; default: - m_currentRequest->onSendCompleted(avsCommon::avs::MessageRequest::Status::SERVER_INTERNAL_ERROR); + m_currentRequest->sendCompleted( + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SERVER_OTHER_ERROR); } } -void HTTP2Stream::notifyRequestObserver(avsCommon::avs::MessageRequest::Status status) { - m_currentRequest->onSendCompleted(status); +void HTTP2Stream::notifyRequestObserver(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status status) { + m_currentRequest->sendCompleted(status); } bool HTTP2Stream::setStreamTimeout(const long timeoutSeconds) { @@ -394,17 +464,22 @@ bool HTTP2Stream::setConnectionTimeout(const std::chrono::seconds timeoutSeconds return m_transfer.setConnectionTimeout(timeoutSeconds); } -void HTTP2Stream::setPaused(bool isPaused) { - if (m_isPaused && !isPaused) { - curl_easy_pause(getCurlHandle(), CURLPAUSE_CONT); - } - m_isPaused = isPaused; +void HTTP2Stream::unPause() { + m_isPaused = false; + // Call curl_easy_pause() *after* resetting m_pendingBits because curl_easy_pause may call + // readCallback() and/or writeCallback() which can modify m_pendingBits. + curl_easy_pause(getCurlHandle(), CURLPAUSE_CONT); } bool HTTP2Stream::isPaused() const { return m_isPaused; } +void HTTP2Stream::setLogicalStreamId(int logicalStreamId) { + m_logicalStreamId = logicalStreamId; + m_parser.setAttachmentContextId(STREAM_CONTEXT_ID_PREFIX_STRING + std::to_string(m_logicalStreamId)); +} + unsigned int HTTP2Stream::getLogicalStreamId() const { return m_logicalStreamId; } @@ -413,5 +488,136 @@ bool HTTP2Stream::hasProgressTimedOut() const { return (getNow() - m_timeOfLastTransfer) > m_progressTimeout; } -} // namespace acl -} // namespace alexaClientSDK +const avsCommon::utils::logger::LogStringFormatter& HTTP2Stream::getLogFormatter() const { + return m_logFormatter; +} + +template +bool HTTP2Stream::setopt(CURLoption option, const char* optionName, ParamType value) { + auto result = curl_easy_setopt(m_transfer.getCurlHandle(), option, value); + if (result != CURLE_OK) { + ACSDK_ERROR(LX("setoptFailed") + .d("option", optionName) + .sensitive("value", value) + .d("error", curl_easy_strerror(result))); + return false; + } + return true; +} + +#ifdef ACSDK_EMIT_CURL_LOGS + +void HTTP2Stream::initStreamLog() { + std::string streamLogPrefix; + configuration::ConfigurationNode::getRoot()[ACL_CONFIGURATION_KEY].getString( + STREAM_LOG_PREFIX_KEY, &streamLogPrefix); + if (streamLogPrefix.empty()) { + return; + } + + if (m_streamLog) { + m_streamLog->close(); + m_streamLog.reset(); + } + + if (m_streamInDump) { + m_streamInDump->close(); + m_streamInDump.reset(); + } + + if (m_streamOutDump) { + m_streamOutDump->close(); + m_streamOutDump.reset(); + } + + // Include a 'session id' (just a time stamp) in the log file name to avoid overwriting previous sessions. + static std::string sessionId; + if (sessionId.empty()) { + sessionId = std::to_string(std::chrono::system_clock::now().time_since_epoch().count()); + ACSDK_INFO(LX("initStreamLog").d("sessionId", sessionId)); + } + + auto basePath = streamLogPrefix + STREAM_LOG_NAME_PREFIX + sessionId + "-" + std::to_string(m_logicalStreamId); + + auto streamLogPath = basePath + STREAM_LOG_NAME_SUFFIX; + m_streamLog.reset(new std::ofstream(streamLogPath)); + if (!m_streamLog->good()) { + m_streamLog.reset(); + ACSDK_ERROR(LX("initStreamLogFailed").d("reason", "fileOpenFailed").d("streamLogPath", streamLogPath)); + } + + auto streamInDumpPath = basePath + STREAM_IN_DUMP_SUFFIX; + m_streamInDump.reset(new std::ofstream(streamInDumpPath, std::ios_base::out | std::ios_base::binary)); + if (!m_streamInDump->good()) { + m_streamInDump.reset(); + ACSDK_ERROR(LX("initStreamLogFailed").d("reason", "fileOpenFailed").d("streamInDumpPath", streamInDumpPath)); + } + + auto streamOutDumpPath = basePath + STREAM_OUT_DUMP_SUFFIX; + m_streamOutDump.reset(new std::ofstream(streamOutDumpPath, std::ios_base::out | std::ios_base::binary)); + if (!m_streamOutDump->good()) { + m_streamOutDump.reset(); + ACSDK_ERROR(LX("initStreamLogFailed").d("reason", "fileOpenFailed").d("streamOutDumpPath", streamOutDumpPath)); + } +} + +int HTTP2Stream::debugFunction(CURL* handle, curl_infotype type, char* data, size_t size, void* user) { + HTTP2Stream* stream = static_cast(user); + if (!stream) { + return 0; + } + if (stream->m_streamLog) { + auto logFormatter = stream->getLogFormatter(); + (*stream->m_streamLog) << logFormatter.format( + logger::Level::INFO, + std::chrono::system_clock::now(), + logger::ThreadMoniker::getThisThreadMoniker().c_str(), + curlInfoTypeToString(type)) + << std::endl; + if (CURLINFO_TEXT == type) { + (*stream->m_streamLog) << curlInfoTypeToPrefix(type) << data; + } else { + logger::dumpBytesToStream( + *stream->m_streamLog, curlInfoTypeToPrefix(type), 0x20, reinterpret_cast(data), size); + } + stream->m_streamLog->flush(); + } + switch (type) { + case CURLINFO_TEXT: { + std::string text(data, size); + auto index = text.rfind("\n"); + if (index != std::string::npos) { + text.resize(index); + } + ACSDK_DEBUG0(LX("libcurl").d("streamId", stream->getLogicalStreamId()).sensitive("text", text)); + } break; + case CURLINFO_HEADER_IN: + case CURLINFO_DATA_IN: + if (stream->m_streamInDump) { + stream->m_streamInDump->write(data, size); + stream->m_streamInDump->flush(); + } + break; + case CURLINFO_HEADER_OUT: + case CURLINFO_DATA_OUT: + if (stream->m_streamOutDump) { + stream->m_streamOutDump->write(data, size); + stream->m_streamOutDump->flush(); + } + break; + default: + break; + } + + return 0; +} + +#else // ACSDK_EMIT_CURL_LOGS + +void HTTP2Stream::initStreamLog() { +} + +#endif // ACSDK_EMIT_CURL_LOGS + +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/src/Transport/HTTP2StreamPool.cpp b/ACL/src/Transport/HTTP2StreamPool.cpp index a31ed126f8..2dbf463180 100644 --- a/ACL/src/Transport/HTTP2StreamPool.cpp +++ b/ACL/src/Transport/HTTP2StreamPool.cpp @@ -1,7 +1,5 @@ /* - * HTTP2StreamPool.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,6 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ + #include #include "ACL/Transport/HTTP2StreamPool.h" @@ -32,16 +31,20 @@ static const std::string TAG("HTTP2StreamPool"); using namespace avsCommon::utils; - HTTP2StreamPool::HTTP2StreamPool( - const int maxStreams, - std::shared_ptr attachmentManager) - : m_numRemovedStreams{0}, - m_maxStreams{maxStreams}, - m_attachmentManager{attachmentManager} { +unsigned int HTTP2StreamPool::m_nextStreamId = 1; + +HTTP2StreamPool::HTTP2StreamPool( + const int maxStreams, + std::shared_ptr attachmentManager) : + m_numAcquiredStreams{0}, + m_maxStreams{maxStreams}, + m_attachmentManager{attachmentManager} { } -std::shared_ptr HTTP2StreamPool::createGetStream(const std::string& url, const std::string& authToken, - MessageConsumerInterface *messageConsumer) { +std::shared_ptr HTTP2StreamPool::createGetStream( + const std::string& url, + const std::string& authToken, + std::shared_ptr messageConsumer) { std::shared_ptr stream = getStream(messageConsumer); if (!stream) { ACSDK_ERROR(LX("createGetStreamFailed").d("reason", "getStreamFailed")); @@ -55,65 +58,83 @@ std::shared_ptr HTTP2StreamPool::createGetStream(const std::string& return stream; } -std::shared_ptr HTTP2StreamPool::createPostStream(const std::string& url, const std::string& authToken, - std::shared_ptr request, MessageConsumerInterface *messageConsumer) { +std::shared_ptr HTTP2StreamPool::createPostStream( + const std::string& url, + const std::string& authToken, + std::shared_ptr request, + std::shared_ptr messageConsumer) { std::shared_ptr stream = getStream(messageConsumer); if (!request) { - ACSDK_ERROR(LX("createPostStreamFailed").d("reason","nullMessageRequest")); + ACSDK_ERROR(LX("createPostStreamFailed").d("reason", "nullMessageRequest")); return nullptr; } if (!stream) { ACSDK_ERROR(LX("createPostStreamFailed").d("reason", "getStreamFailed")); - request->onSendCompleted(avsCommon::avs::MessageRequest::Status::INTERNAL_ERROR); + request->sendCompleted(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::INTERNAL_ERROR); return nullptr; } if (!stream->initPost(url, authToken, request)) { ACSDK_ERROR(LX("createPostStreamFailed").d("reason", "initPostFailed")); - request->onSendCompleted(avsCommon::avs::MessageRequest::Status::INTERNAL_ERROR); + request->sendCompleted(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::INTERNAL_ERROR); releaseStream(stream); return nullptr; } return stream; } -std::shared_ptr HTTP2StreamPool::getStream(MessageConsumerInterface *messageConsumer) { - +std::shared_ptr HTTP2StreamPool::getStream(std::shared_ptr messageConsumer) { if (!messageConsumer) { ACSDK_ERROR(LX("getStreamFailed").d("reason", "nullptrMessageConsumer")); return nullptr; } std::lock_guard lock(m_mutex); - if (m_numRemovedStreams >= m_maxStreams) { + if (m_numAcquiredStreams >= m_maxStreams) { + ACSDK_WARN(LX("getStreamFailed").d("reason", "maxStreamsAlreadyAcquired")); return nullptr; } - m_numRemovedStreams++; + + std::shared_ptr result; if (m_pool.empty()) { - return std::make_shared(messageConsumer, m_attachmentManager); + result = std::make_shared(messageConsumer, m_attachmentManager); + } else { + result = m_pool.back(); + m_pool.pop_back(); } + m_numAcquiredStreams++; - std::shared_ptr ret = m_pool.back(); - m_pool.pop_back(); - return ret; + result->setLogicalStreamId(m_nextStreamId); + // Increment by two so that these IDs tend to line up with the number at the end of x-amzn-requestId values. + m_nextStreamId += 2; + + ACSDK_DEBUG0( + LX("getStream").d("streamId", result->getLogicalStreamId()).d("numAcquiredStreams", m_numAcquiredStreams)); + return result; } void HTTP2StreamPool::releaseStream(std::shared_ptr stream) { - if (!stream){ + if (!stream) { return; } std::lock_guard lock(m_mutex); - //Check to avoid releasing the same stream more than once accidentally + // Check to avoid releasing the same stream more than once accidentally for (auto item : m_pool) { if (item == stream) { + ACSDK_ERROR( + LX("releaseStreamFailed").d("reason", "alreadyReleased").d("streamId", stream->getLogicalStreamId())); return; } } + m_numAcquiredStreams--; + + ACSDK_DEBUG0( + LX("releaseStream").d("streamId", stream->getLogicalStreamId()).d("numAcquiredStreams", m_numAcquiredStreams)); + if (stream->reset()) { m_pool.push_back(stream); } - m_numRemovedStreams--; } -} // acl -} // alexaClientSDK +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/src/Transport/HTTP2Transport.cpp b/ACL/src/Transport/HTTP2Transport.cpp index 6983b282c3..dd6b1f851a 100644 --- a/ACL/src/Transport/HTTP2Transport.cpp +++ b/ACL/src/Transport/HTTP2Transport.cpp @@ -1,7 +1,5 @@ /* - * HTTP2Transport.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,19 +13,23 @@ * permissions and limitations under the License. */ -#include "ACL/Transport/HTTP2Transport.h" - #include #include #include -#include +#include +#include #include +#include + +#include "ACL/Transport/HTTP2Transport.h" +#include "ACL/Transport/TransportDefines.h" namespace alexaClientSDK { namespace acl { using namespace alexaClientSDK::avsCommon::utils; +using namespace alexaClientSDK::avsCommon::utils::libcurlUtils; using namespace avsCommon::sdkInterfaces; using namespace avsCommon::avs; using namespace avsCommon::avs::attachment; @@ -47,6 +49,8 @@ static const std::string TAG("HTTP2Transport"); * https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/docs/managing-an-http-2-connection */ const static int MAX_STREAMS = 10; +/// Default @c AVS endpoint to connect to. +const static std::string DEFAULT_AVS_ENDPOINT = "https://avs-alexa-na.amazon.com"; /// Downchannel URL const static std::string AVS_DOWNCHANNEL_URL_PATH_EXTENSION = "/v20160207/directives"; /// URL to send events to @@ -54,62 +58,21 @@ const static std::string AVS_EVENT_URL_PATH_EXTENSION = "/v20160207/events"; /// URL to send pings to const static std::string AVS_PING_URL_PATH_EXTENSION = "/ping"; /// Timeout for curl_multi_wait -const static int WAIT_FOR_ACTIVITY_TIMEOUT_MS = 100; -/// Timeout for curl_multi_wait when there's a paused HTTP/2 stream. -const static int WAIT_FOR_ACTIVITY_WHILE_PAUSED_STREAM_TIMEOUT_MS = 10; -/// 1 minute in milliseconds -const static int MS_PER_MIN = 60000; -/// Timeout before we send a ping -const static int PING_TIMEOUT_MS = MS_PER_MIN * 5; -/// Number of times we timeout waiting for activity before sending a ping -const static int NUM_TIMEOUTS_BEFORE_PING = PING_TIMEOUT_MS / WAIT_FOR_ACTIVITY_TIMEOUT_MS; +const static std::chrono::milliseconds WAIT_FOR_ACTIVITY_TIMEOUT(100); +/// Timeout for curl_multi_wait while all HTTP/2 event streams are paused. +const static std::chrono::milliseconds WAIT_FOR_ACTIVITY_WHILE_STREAMS_PAUSED_TIMEOUT(10); +/// Inactivity timeout before we send a ping +const static std::chrono::minutes INACTIVITY_TIMEOUT = std::chrono::minutes(5); /// The maximum time a ping should take in seconds const static long PING_RESPONSE_TIMEOUT_SEC = 30; /// Connection timeout -static const std::chrono::seconds ESTABLISH_CONNECTION_TIMEOUT = std::chrono::seconds{60}; +static const std::chrono::seconds ESTABLISH_CONNECTION_TIMEOUT = std::chrono::seconds(60); /// Timeout for transmission of data on a given stream -static const std::chrono::seconds STREAM_PROGRESS_TIMEOUT = std::chrono::seconds{30}; - -/** - * Calculates the time, in milliseconds, to wait before attempting to reconnect. - * - * @param retryCount The number of times we've retried already - * @returns The amount of time to wait, in milliseconds - */ -static std::chrono::milliseconds calculateTimeToRetry(int retryCount) { - static const double RETRY_RANDOMIZATION_FACTOR = 0.5; - static const double RETRY_DECREASE_FACTOR = 1 / (RETRY_RANDOMIZATION_FACTOR + 1); - static const double RETRY_INCREASE_FACTOR = (RETRY_RANDOMIZATION_FACTOR + 1); - /** - * We use this schedule to ensure that we don't continuously attempt to retry - * a connection to AVS (which would cause a DOS). - * Randomization further prevents multiple devices from attempting connections - * at the same time (which would also cause a DOS at each step). - */ - static const int RETRY_TABLE[] = { - 250, // Retry 1: 0.25s, range with 0.5 randomization: [ 0.167, 0.375] - 1000, // Retry 2: 1.00s, range with 0.5 randomization: [ 0.667, 1.500] - 3000, // Retry 3: 3.00s, range with 0.5 randomization: [ 2.000, 4.500] - 5000, // Retry 4: 5.00s, range with 0.5 randomization: [ 3.333, 7.500] - 10000, // Retry 5: 10.00s, range with 0.5 randomization: [ 6.667, 15.000] - 20000, // Retry 6: 20.00s, range with 0.5 randomization: [13.333, 30.000] - 30000, // Retry 7: 30.00s, range with 0.5 randomization: [20.000, 45.000] - 60000, // Retry 8: 60.00s, range with 0.5 randomization: [40.000, 90.000] - }; - - static const int RETRY_TABLE_SIZE = (sizeof(RETRY_TABLE) / sizeof(RETRY_TABLE[0])); - if (retryCount < 0) { - retryCount = 0; - } else if (retryCount >= RETRY_TABLE_SIZE) { - retryCount = RETRY_TABLE_SIZE - 1; - } - - std::mt19937 generator(static_cast(std::time(nullptr))); - std::uniform_int_distribution distribution(static_cast(RETRY_TABLE[retryCount] * RETRY_DECREASE_FACTOR), - static_cast(RETRY_TABLE[retryCount] * RETRY_INCREASE_FACTOR)); - auto delayMs = std::chrono::milliseconds(distribution(generator)); - return delayMs; -} +static const std::chrono::seconds STREAM_PROGRESS_TIMEOUT = std::chrono::seconds(30); +/// Key for the root node value containing configuration values for ACL. +static const std::string ACL_CONFIG_KEY = "acl"; +/// Key for the 'endpoint' value under the @c ACL_CONFIG_KEY configuration node. +static const std::string ENDPOINT_KEY = "endpoint"; #ifdef ACSDK_OPENSSL_MIN_VER_REQUIRED /** @@ -133,15 +96,15 @@ static void verifyOpenSslVersion(curl_version_info_data* data) { // parse ssl_version int matchedVersionUsed = - sscanf(data->ssl_version, - "OpenSSL/%u.%u.%u", - &versionUsed[0], &versionUsed[1], &versionUsed[2]); + sscanf(data->ssl_version, "OpenSSL/%u.%u.%u", &versionUsed[0], &versionUsed[1], &versionUsed[2]); // parse minimum OpenSSL version required - int matchedVersionRequired = - sscanf(ACSDK_STRINGIFY(ACSDK_OPENSSL_MIN_VER_REQUIRED), - "%u.%u.%u", - &minVersionRequired[0], &minVersionRequired[1], &minVersionRequired[2]); + int matchedVersionRequired = sscanf( + ACSDK_STRINGIFY(ACSDK_OPENSSL_MIN_VER_REQUIRED), + "%u.%u.%u", + &minVersionRequired[0], + &minVersionRequired[1], + &minVersionRequired[2]); if (matchedVersionUsed == matchedVersionRequired && matchedVersionUsed == NUM_OF_VERSION_NUMBER) { bool versionRequirementFailed = false; @@ -156,13 +119,13 @@ static void verifyOpenSslVersion(curl_version_info_data* data) { } if (versionRequirementFailed) { ACSDK_WARN(LX("OpenSSL minimum version requirement failed!") - .d("version", data->ssl_version) - .d("required", ACSDK_STRINGIFY(ACSDK_OPENSSL_MIN_VER_REQUIRED))); + .d("version", data->ssl_version) + .d("required", ACSDK_STRINGIFY(ACSDK_OPENSSL_MIN_VER_REQUIRED))); } } else { ACSDK_WARN(LX("Unable to parse OpenSSL version!") - .d("version", data->ssl_version) - .d("required", ACSDK_STRINGIFY(ACSDK_OPENSSL_MIN_VER_REQUIRED))); + .d("version", data->ssl_version) + .d("required", ACSDK_STRINGIFY(ACSDK_OPENSSL_MIN_VER_REQUIRED))); } } #endif @@ -181,14 +144,30 @@ static void printCurlDiagnostics() { #endif } +std::shared_ptr HTTP2Transport::create( + std::shared_ptr authDelegate, + const std::string& avsEndpoint, + std::shared_ptr messageConsumerInterface, + std::shared_ptr attachmentManager, + std::shared_ptr observer) { + std::shared_ptr postConnectObject = PostConnectObject::create(); + + if (!postConnectObject) { + ACSDK_ERROR(LX("HTTP2Transport::createFailed").d("reason", "nullPostConnectObject")); + return nullptr; + } + + return std::shared_ptr(new HTTP2Transport( + authDelegate, avsEndpoint, messageConsumerInterface, attachmentManager, postConnectObject, observer)); +} + HTTP2Transport::HTTP2Transport( - std::shared_ptr authDelegate, - const std::string& avsEndpoint, - MessageConsumerInterface* messageConsumerInterface, - std::shared_ptr attachmentManager, - TransportObserverInterface* observer) - : - m_observer{observer}, + std::shared_ptr authDelegate, + const std::string& avsEndpoint, + std::shared_ptr messageConsumerInterface, + std::shared_ptr attachmentManager, + std::shared_ptr postConnectObject, + std::shared_ptr observer) : m_messageConsumer{messageConsumerInterface}, m_authDelegate{authDelegate}, m_avsEndpoint{avsEndpoint}, @@ -196,16 +175,34 @@ HTTP2Transport::HTTP2Transport( m_disconnectReason{ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR}, m_isNetworkThreadRunning{false}, m_isConnected{false}, - m_isStopping{false} { + m_isStopping{false}, + m_disconnectedSent{false}, + m_postConnectObject{postConnectObject} { + m_observers.insert(observer); + printCurlDiagnostics(); + + if (m_avsEndpoint.empty()) { + alexaClientSDK::avsCommon::utils::configuration::ConfigurationNode::getRoot()[ACL_CONFIG_KEY].getString( + ENDPOINT_KEY, &m_avsEndpoint, DEFAULT_AVS_ENDPOINT); + } } -HTTP2Transport::~HTTP2Transport() { +void HTTP2Transport::doShutdown() { disconnect(); } bool HTTP2Transport::connect() { std::lock_guard lock(m_mutex); + + /* + * To handle cases were shutdown was called before the transport is connected. In this case we + * do not want to spawn a thread and create a post-connect object. + */ + if (m_isStopping) { + return false; + } + // This function spawns a worker thread, so let's ensure this function may only be called when // the worker thread is not running. if (m_isNetworkThreadRunning) { @@ -213,27 +210,38 @@ bool HTTP2Transport::connect() { return false; } - m_multi.reset(new MultiHandle()); - m_multi->handle = curl_multi_init(); - if (!m_multi->handle) { - m_multi.reset(); - ACSDK_ERROR(LX("connectFailed").d("reason", "createCurlMultiHandleFailed")); + // The transport object registers itself as an observer to the PostConnect + // factory. On PostConnect completion the transport object moves to + // connected state and can queue messages to send. + m_postConnectObject->addObserver(shared_from_this()); + + m_multi = avsCommon::utils::libcurlUtils::CurlMultiHandleWrapper::create(); + if (!m_multi) { + ACSDK_ERROR(LX("connectFailed").d("reason", "curlMultiHandleWrapperCreateFailed")); return false; } - if (curl_multi_setopt(m_multi->handle, CURLMOPT_PIPELINING, 2L) != CURLM_OK) { + if (curl_multi_setopt(m_multi->getCurlHandle(), CURLMOPT_PIPELINING, 2L) != CURLM_OK) { m_multi.reset(); ACSDK_ERROR(LX("connectFailed").d("reason", "enableHTTP2PipeliningFailed")); return false; } ConnectionStatusObserverInterface::ChangedReason reason = - ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR; + ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR; if (!setupDownchannelStream(&reason)) { m_multi.reset(); ACSDK_ERROR(LX("connectFailed").d("reason", "setupDownchannelStreamFailed").d("error", reason)); return false; } + /* + * Call the post-connect object to do the post-connect operations. + */ + if (!m_postConnectObject->doPostConnect(shared_from_this())) { + setIsStopping(ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); + return false; + } + m_isNetworkThreadRunning = true; m_isStopping = false; m_networkThread = std::thread(&HTTP2Transport::networkLoop, this); @@ -242,14 +250,25 @@ bool HTTP2Transport::connect() { void HTTP2Transport::disconnect() { std::thread localNetworkThread; + std::shared_ptr localPostConnectObject; { std::lock_guard lock(m_mutex); setIsStoppingLocked(ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + std::swap(m_postConnectObject, localPostConnectObject); std::swap(m_networkThread, localNetworkThread); } - if (localNetworkThread.joinable()){ + + if (localPostConnectObject) { + localPostConnectObject->shutdown(); + } + + if (localNetworkThread.joinable()) { localNetworkThread.join(); } + { + std::lock_guard lock(m_observerMutex); + m_observers.clear(); + } } bool HTTP2Transport::isConnected() { @@ -260,28 +279,26 @@ bool HTTP2Transport::isConnected() { void HTTP2Transport::send(std::shared_ptr request) { if (!request) { ACSDK_ERROR(LX("sendFailed").d("reason", "nullRequest")); - } else if (!enqueueRequest(request)) { - request->onSendCompleted(MessageRequest::Status::NOT_CONNECTED); + } else if (!enqueueRequest(request, false)) { + request->sendCompleted(MessageRequestObserverInterface::Status::NOT_CONNECTED); } } +void HTTP2Transport::sendPostConnectMessage(std::shared_ptr request) { + if (!request) { + ACSDK_ERROR(LX("sendFailed").d("reason", "nullRequest")); + } + enqueueRequest(request, true); +} + bool HTTP2Transport::setupDownchannelStream(ConnectionStatusObserverInterface::ChangedReason* reason) { if (!reason) { ACSDK_CRITICAL(LX("setupDownchannelStreamFailed").d("reason", "nullReason")); return false; } - if (m_downchannelStream) { - CURLMcode ret = curl_multi_remove_handle(m_multi->handle, m_downchannelStream->getCurlHandle()); - if (ret != CURLM_OK) { - ACSDK_ERROR(LX("setupDownchannelStreamFailed") - .d("reason", "curlFailure") - .d("method", "curl_multi_remove_handle") - .d("error", curl_multi_strerror(ret))); - *reason = ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR; - return false; - } - m_streamPool.releaseStream(m_downchannelStream); - m_downchannelStream.reset(); + + if (m_downchannelStream && !releaseDownchannelStream(true, reason)) { + return false; } std::string authToken = m_authDelegate->getAuthToken(); @@ -292,6 +309,8 @@ bool HTTP2Transport::setupDownchannelStream(ConnectionStatusObserverInterface::C } std::string url = m_avsEndpoint + AVS_DOWNCHANNEL_URL_PATH_EXTENSION; + ACSDK_DEBUG9(LX("setupDownchannelStream").d("url", url)); + m_downchannelStream = m_streamPool.createGetStream(url, authToken, m_messageConsumer); if (!m_downchannelStream) { ACSDK_ERROR(LX("setupDownchannelStreamFailed").d("reason", "createGetStreamFailed")); @@ -301,60 +320,51 @@ bool HTTP2Transport::setupDownchannelStream(ConnectionStatusObserverInterface::C // Since the downchannel is the first stream to be established, make sure it times out if // a connection can't be established. if (!m_downchannelStream->setConnectionTimeout(ESTABLISH_CONNECTION_TIMEOUT)) { - m_streamPool.releaseStream(m_downchannelStream); - m_downchannelStream.reset(); + releaseDownchannelStream(false, nullptr); ACSDK_ERROR(LX("setupDownchannelStreamFailed").d("reason", "setConnectionTimeoutFailed")); *reason = ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR; return false; } - auto result = curl_multi_add_handle(m_multi->handle, m_downchannelStream->getCurlHandle()); + auto result = m_multi->addHandle(m_downchannelStream->getCurlHandle()); if (result != CURLM_OK) { - m_streamPool.releaseStream(m_downchannelStream); - m_downchannelStream.reset(); - ACSDK_ERROR(LX("setupDownchannelStreamFailed") - .d("reason", "curlFailure") - .d("method", "curl_multi_add_handle") - .d("error", curl_multi_strerror(result))); + releaseDownchannelStream(false, nullptr); + ACSDK_ERROR(LX("setupDownchannelStreamFailed").d("reason", "addHandleFailed")); *reason = ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR; return false; } + m_activeStreams.insert(ActiveTransferEntry(m_downchannelStream->getCurlHandle(), m_downchannelStream)); + return true; } void HTTP2Transport::networkLoop() { - int retryCount = 0; while (!establishConnection() && !isStopping()) { - retryCount++; + std::chrono::milliseconds retryBackoff = TransportDefines::RETRY_TIMER.calculateTimeToRetry(retryCount); ACSDK_ERROR(LX("networkLoopRetryingToConnect") - .d("reason", "establishConnectionFailed") - .d("retryCount", retryCount)); - auto retryBackoff = calculateTimeToRetry(retryCount); + .d("reason", "establishConnectionFailed") + .d("retryCount", retryCount) + .d("retryBackoff", retryBackoff.count())); + retryCount++; std::unique_lock lock(m_mutex); - m_wakeRetryTrigger.wait_for(lock, retryBackoff, [this]{ return m_isStopping; }); + m_wakeRetryTrigger.wait_for(lock, retryBackoff, [this] { return m_isStopping; }); } - setIsConnectedTrueUnlessStopping(); - /* - * Call curl_multi_perform repeatedly to receive data on active streams. If all the currently - * active streams have HTTP2 response codes service the next outgoing message (if any). - * While the connection is alive we should have at least 1 transfer active (the downchannel). + * Call perform repeatedly to transfer data on active streams. If all the event streams have HTTP2 + * response codes service the next outgoing message (if any). While the connection is alive we should have + * at least 1 transfer active (the downchannel). */ int numTransfersLeft = 1; - int timeouts = 0; + auto inactivityTimerStart = std::chrono::steady_clock::now(); while (numTransfersLeft && !isStopping()) { - - CURLMcode ret = curl_multi_perform(m_multi->handle, &numTransfersLeft); - if (CURLM_CALL_MULTI_PERFORM == ret) { + auto result = m_multi->perform(&numTransfersLeft); + if (CURLM_CALL_MULTI_PERFORM == result) { continue; - } else if (ret != CURLM_OK) { - ACSDK_ERROR(LX("networkLoopStopping") - .d("reason", "curlFailure") - .d("method", "curl_multi_perform") - .d("error", curl_multi_strerror(ret))); + } else if (result != CURLM_OK) { + ACSDK_ERROR(LX("networkLoopStopping").d("reason", "performFailed")); setIsStopping(ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); break; } @@ -369,114 +379,90 @@ void HTTP2Transport::networkLoop() { processNextOutgoingMessage(); } - int multiWaitTimeoutMs = WAIT_FOR_ACTIVITY_TIMEOUT_MS; + auto multiWaitTimeout = WAIT_FOR_ACTIVITY_TIMEOUT; + size_t numberEventStreams = 0; size_t numberPausedStreams = 0; - for (auto stream : m_activeStreams) { - if (stream.second->isPaused()) { - numberPausedStreams++; - multiWaitTimeoutMs = WAIT_FOR_ACTIVITY_WHILE_PAUSED_STREAM_TIMEOUT_MS; + for (auto entry : m_activeStreams) { + auto stream = entry.second; + if (isEventStream(stream)) { + numberEventStreams++; + if (entry.second->isPaused()) { + numberPausedStreams++; + } } } + bool paused = numberPausedStreams > 0 && (numberPausedStreams == numberEventStreams); - auto msBefore = std::chrono::milliseconds::max(); - if (numberPausedStreams > 0) { - msBefore = std::chrono::duration_cast( - std::chrono::steady_clock::now().time_since_epoch()); + auto before = std::chrono::time_point::max(); + if (paused) { + multiWaitTimeout = WAIT_FOR_ACTIVITY_WHILE_STREAMS_PAUSED_TIMEOUT; + before = std::chrono::steady_clock::now(); } - //TODO: ACSDK-69 replace timeout with signal fd - //TODO: ACSDK-281 - investigate the timeout values and performance consequences for curl_multi_wait. + // TODO: ACSDK-69 replace timeout with signal fd + int numTransfersUpdated = 0; - ret = curl_multi_wait(m_multi->handle, NULL, 0, multiWaitTimeoutMs, &numTransfersUpdated); - if (ret != CURLM_OK) { - ACSDK_ERROR(LX("networkLoopStopping") - .d("reason", "curlFailure") - .d("method", "curl_multi_wait") - .d("error", curl_multi_strerror(ret))); + result = m_multi->wait(multiWaitTimeout, &numTransfersUpdated); + if (result != CURLM_OK) { + ACSDK_ERROR( + LX("networkLoopStopping").d("reason", "multiWaitFailed").d("error", curl_multi_strerror(result))); setIsStopping(ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); break; } - // @note - curl_multi_wait will return immediately even if all streams are paused, because HTTP/2 streams + // TODO: ACSDK-69 replace this logic with a signal fd + + // @note curl_multi_wait will return immediately even if all streams are paused, because HTTP/2 streams // are full-duplex - so activity may have occurred on the other side. Therefore, if our intent is // to pause ACL to give attachment readers time to catch up with written data, we must perform a local // sleep of our own. - if ((numberPausedStreams > 0) && (m_activeStreams.size() == numberPausedStreams)) { - std::chrono::milliseconds msAfter = std::chrono::duration_cast( - std::chrono::steady_clock::now().time_since_epoch()); - auto elapsedMs = (msAfter - msBefore).count(); - auto remainingMs = multiWaitTimeoutMs - elapsedMs; + if (paused) { + auto after = std::chrono::steady_clock::now(); + auto elapsed = after - before; + auto remaining = multiWaitTimeout - elapsed; // sanity check that remainingMs is valid before performing a sleep. - if (remainingMs > 0 && remainingMs < WAIT_FOR_ACTIVITY_WHILE_PAUSED_STREAM_TIMEOUT_MS) { - std::this_thread::sleep_for(std::chrono::milliseconds(remainingMs)); - } - - // un-pause the streams so that in the next invocation of curl_multi_perform progress may be made. - for (auto stream : m_activeStreams) { - if (stream.second->isPaused()) { - stream.second->setPaused(false); - } + if (remaining.count() > 0 && remaining <= WAIT_FOR_ACTIVITY_WHILE_STREAMS_PAUSED_TIMEOUT) { + std::this_thread::sleep_for(remaining); } } - //TODO: ACSDK-69 replace this logic with a signal fd /** - * If no transfers were updated then curl_multi_wait would have waited WAIT_FOR_ACTIVITY_TIMEOUT_MS milliseconds. - * Increment a counter everytime this happens, when the counter reaches: - * MINUTES_TO_MILLISECONDS * 5 / WAIT_FOR_ACTIVITY_TIMEOUT_MS - * we have waited 5 minutes with an idle connection. In this case send a ping. - * We clear the counter once there is an activity on any transfer. + * If some transfers were updated then reset the start of the inactivity timer to now. Otherwise, + * if the INACTIVITY_TIMEOUT has been reached send a ping to AVS so verify connectivity. */ - if (0 == numTransfersUpdated) { - timeouts++; - if (timeouts >= NUM_TIMEOUTS_BEFORE_PING) { + auto now = std::chrono::steady_clock::now(); + if (numTransfersUpdated != 0) { + inactivityTimerStart = now; + } else { + auto elapsed = now - inactivityTimerStart; + if (elapsed >= INACTIVITY_TIMEOUT) { if (!sendPing()) { ACSDK_ERROR(LX("networkLoopStopping").d("reason", "sendPingFailed")); setIsStopping(ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); break; } - timeouts = 0; + inactivityTimerStart = now; } - } else { - timeouts = 0; + } + + // un-pause the streams so that progress may be made in the next invocation of @c m_multi->perform(). + for (auto stream : m_activeStreams) { + stream.second->unPause(); } } // Catch-all. Reaching this point implies stopping. setIsStopping(ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); - // Remove active event handles from multi handle and release them back into the event pool. - auto it = m_activeStreams.begin(); - while (it != m_activeStreams.end()) { - (*it).second->notifyRequestObserver(MessageRequest::Status::NOT_CONNECTED); - CURLMcode ret = curl_multi_remove_handle(m_multi->handle, (*it).first); - if (ret != CURLM_OK) { - ACSDK_ERROR(LX("networkLoopCleanupFailed") - .d("reason", "curlFailure") - .d("method", "curl_multi_remove_handle") - .d("error", curl_multi_strerror(ret))); - (*it).second.reset(); // Force stream to be deleted, also don't put back in the pool - it = m_activeStreams.erase(it); - continue; - } - m_streamPool.releaseStream((*it).second); - it = m_activeStreams.erase(it); - } - CURLMcode ret = curl_multi_remove_handle(m_multi->handle, m_downchannelStream->getCurlHandle()); - if (ret != CURLM_OK) { - ACSDK_ERROR(LX("networkLoopCleanupFailed") - .d("reason", "curlFailure") - .d("method", "curl_multi_remove_handle") - .d("error", curl_multi_strerror(ret))); - //Don't do anything here since we should to cleanup the downchannel stream anyway - } - m_streamPool.releaseStream(m_downchannelStream); - m_downchannelStream.reset(); + releaseAllEventStreams(); + releasePingStream(); + releaseDownchannelStream(); m_multi.reset(); clearQueuedRequests(); setIsConnectedFalse(); + { std::lock_guard lock(m_mutex); m_isNetworkThreadRunning = false; @@ -488,20 +474,21 @@ bool HTTP2Transport::establishConnection() { int numTransfersLeft = 1; /* - * Calls curl_multi_perform until downchannel stream receives an HTTP2 response code. If the downchannel stream + * Calls curl_multi_perform until down channel stream receives an HTTP2 response code. If the down channel stream + * Call perform() to further networking transfers until the down channel stream receives an HTTP2 response * ends before receiving a response code (numTransfersLeft == 0), then there was an error and we must try again. + * code indicating success or failure to establish a connection. If the down channel stream ends before * If we're told to shutdown the network loop (isStopping()) then return false since no connection was established. + * receiving a response code (numTransfersLeft == 0), then set up a new down channel stream in preparation + * for being called again to retry establishing a connection. */ - while(numTransfersLeft && !isStopping()) { - CURLMcode ret = curl_multi_perform(m_multi->handle, &numTransfersLeft); + while (numTransfersLeft && !isStopping()) { + auto result = m_multi->perform(&numTransfersLeft); // curl asked us to call multiperform again immediately - if (CURLM_CALL_MULTI_PERFORM == ret) { + if (CURLM_CALL_MULTI_PERFORM == result) { continue; - } else if (ret != CURLM_OK) { - ACSDK_ERROR(LX("establishConnectionFailed") - .d("reason", "curlFailure") - .d("method", "curl_multi_perform") - .d("error", curl_multi_strerror(ret))); + } else if (result != CURLM_OK) { + ACSDK_ERROR(LX("establishConnectionFailed").d("reason", "performFailed")); setIsStopping(ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); } long downchannelResponseCode = m_downchannelStream->getResponseCode(); @@ -514,29 +501,27 @@ bool HTTP2Transport::establishConnection() { * Only break the loop if we are successful. If we aren't keep looping so that we download * the full error message (for logging purposes) and then return false when we're done */ - if (HTTP2Stream::HTTPResponseCodes::SUCCESS_OK == downchannelResponseCode) { + if (HTTPResponseCode::SUCCESS_OK == downchannelResponseCode) { return true; } } else if (downchannelResponseCode < 0) { ACSDK_ERROR(LX("establishConnectionFailed") - .d("reason", "negativeResponseCode") - .d("responseCode", downchannelResponseCode)); + .d("reason", "negativeResponseCode") + .d("responseCode", downchannelResponseCode)); setIsStopping(ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); } // wait for activity on the downchannel stream, kinda like poll() int numTransfersUpdated = 0; - ret = curl_multi_wait(m_multi->handle, NULL, 0 , WAIT_FOR_ACTIVITY_TIMEOUT_MS, &numTransfersUpdated); - if (ret != CURLM_OK) { - ACSDK_ERROR(LX("establishConnectionFailed") - .d("reason", "curlFailure") - .d("method", "curl_multi_wait") - .d("error", curl_multi_strerror(ret))); + result = m_multi->wait(WAIT_FOR_ACTIVITY_TIMEOUT, &numTransfersUpdated); + if (result != CURLM_OK) { + ACSDK_ERROR( + LX("establishConnectionFailed").d("reason", "waitFailed").d("error", curl_multi_strerror(result))); setIsStopping(ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); } } ConnectionStatusObserverInterface::ChangedReason reason = - ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR; + ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR; if (!setupDownchannelStream(&reason)) { ACSDK_ERROR(LX("establishConnectionFailed").d("reason", "setupDownchannelStreamFailed").d("error", reason)); setIsStopping(reason); @@ -545,30 +530,34 @@ bool HTTP2Transport::establishConnection() { } void HTTP2Transport::cleanupFinishedStreams() { - CURLMsg *message = nullptr; + CURLMsg* message = nullptr; do { int messagesLeft = 0; - message = curl_multi_info_read(m_multi->handle, &messagesLeft); + message = m_multi->infoRead(&messagesLeft); if (message && CURLMSG_DONE == message->msg) { - bool isPingStream = m_pingStream && m_pingStream->getCurlHandle() == message->easy_handle; - bool isDownchannelStream = m_downchannelStream->getCurlHandle() == message->easy_handle; - if (isPingStream) { - handlePingResponse(); - continue; - } else if (isDownchannelStream) { + if (m_downchannelStream && m_downchannelStream->getCurlHandle() == message->easy_handle) { if (!isStopping()) { - m_observer->onServerSideDisconnect(); + notifyObserversOnServerSideDisconnect(); } - setIsStopping(ConnectionStatusObserverInterface::ChangedReason::SERVER_SIDE_DISCONNECT); + releaseDownchannelStream(); + continue; + } + + if (m_pingStream && m_pingStream->getCurlHandle() == message->easy_handle) { + handlePingResponse(); continue; + } + + auto it = m_activeStreams.find(message->easy_handle); + if (it != m_activeStreams.end()) { + it->second->notifyRequestObserver(); + ACSDK_DEBUG0(LX("cleanupFinishedStream") + .d("streamId", it->second->getLogicalStreamId()) + .d("result", it->second->getResponseCode())); + releaseEventStream(it->second); } else { - auto it = m_activeStreams.find(message->easy_handle); - if (it != m_activeStreams.end()) { - it->second->notifyRequestObserver(); - cleanupStream(it->second); - } else { - ACSDK_ERROR(LX("cleanupFinishedStreamError").d("reason", "streamNotFound")); - } + ACSDK_ERROR( + LX("cleanupFinishedStreamError").d("reason", "streamNotFound").d("handle", message->easy_handle)); } } } while (message); @@ -577,45 +566,20 @@ void HTTP2Transport::cleanupFinishedStreams() { void HTTP2Transport::cleanupStalledStreams() { auto it = m_activeStreams.begin(); while (it != m_activeStreams.end()) { - auto handle = it->first; - if (m_pingStream && m_pingStream->getCurlHandle() == handle) { - ++it; - continue; - } - auto stream = it->second; - if (stream->hasProgressTimedOut()) { + auto stream = (it++)->second; + if (isEventStream(stream) && stream->hasProgressTimedOut()) { ACSDK_INFO(LX("streamProgressTimedOut").d("streamId", stream->getLogicalStreamId())); - stream->notifyRequestObserver(avsCommon::avs::MessageRequest::Status::TIMEDOUT); - cleanupStream((it++)->second); - } else { - ++it; + stream->notifyRequestObserver(MessageRequestObserverInterface::Status::TIMEDOUT); + releaseEventStream(stream); } } } -void HTTP2Transport::cleanupStream(std::shared_ptr stream) { - if (!stream) { - ACSDK_ERROR(LX("cleanupStreamFailed").d("reason", "nullStream")); - return; - } - auto result = curl_multi_remove_handle(m_multi->handle, stream->getCurlHandle()); - if (result != CURLM_OK) { - ACSDK_ERROR(LX("cleanupStreamFailed") - .d("reason", "curlFailure") - .d("method", "curl_multi_remove_handle") - .d("streamId", stream->getLogicalStreamId()) - .d("result", "stoppingNetworkLoop")); - setIsStopping(ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); - } - m_activeStreams.erase(stream->getCurlHandle()); - m_streamPool.releaseStream(stream); -} - bool HTTP2Transport::canProcessOutgoingMessage() { - for (auto stream : m_activeStreams) { - long responseCode = stream.second->getResponseCode(); + for (auto entry : m_activeStreams) { + auto stream = entry.second; // If we have an event that still hasn't received a response code then we cannot send another outgoing message. - if (!responseCode) { + if (isEventStream(stream) && (stream->getResponseCode() == 0)) { return false; } } @@ -630,17 +594,28 @@ void HTTP2Transport::processNextOutgoingMessage() { } auto authToken = m_authDelegate->getAuthToken(); if (authToken.empty()) { - request->onSendCompleted(MessageRequest::Status::INVALID_AUTH); + ACSDK_DEBUG0(LX("processNextOutgoingMessageFailed") + .d("reason", "invalidAuth") + .sensitive("jsonContext", request->getJsonContent())); + request->sendCompleted(MessageRequestObserverInterface::Status::INVALID_AUTH); return; } - auto url = m_avsEndpoint + AVS_EVENT_URL_PATH_EXTENSION; + ACSDK_DEBUG0(LX("processNextOutgoingMessage").sensitive("jsonContent", request->getJsonContent())); + auto url = m_avsEndpoint + AVS_EVENT_URL_PATH_EXTENSION; std::shared_ptr stream = m_streamPool.createPostStream(url, authToken, request, m_messageConsumer); - // note : if the stream is nullptr, the streampool already called onSendCompleted on the MessageRequest. + // note : if the stream is nullptr, the stream pool already called sendCompleted on the MessageRequest. if (stream) { stream->setProgressTimeout(STREAM_PROGRESS_TIMEOUT); - if (curl_multi_add_handle(m_multi->handle, stream->getCurlHandle()) != CURLM_OK) { - stream->notifyRequestObserver(MessageRequest::Status::INTERNAL_ERROR); + auto result = m_multi->addHandle(stream->getCurlHandle()); + if (result != CURLM_OK) { + ACSDK_ERROR(LX("processNextOutgoingMessageFailed") + .d("reason", "addHandleFailed") + .d("error", curl_multi_strerror(result)) + .d("streamId", stream->getLogicalStreamId())); + m_streamPool.releaseStream(stream); + stream->notifyRequestObserver(MessageRequestObserverInterface::Status::INTERNAL_ERROR); } else { + ACSDK_DEBUG9(LX("insertActiveStream").d("handle", stream->getCurlHandle())); m_activeStreams.insert(ActiveTransferEntry(stream->getCurlHandle(), stream)); } } @@ -670,33 +645,34 @@ bool HTTP2Transport::sendPing() { } if (!m_pingStream->setStreamTimeout(PING_RESPONSE_TIMEOUT_SEC)) { + releasePingStream(false); setIsStopping(ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); return false; } - CURLMcode ret = curl_multi_add_handle(m_multi->handle, m_pingStream->getCurlHandle()); - if (ret != CURLM_OK) { - ACSDK_ERROR(LX("sendPingFailed") - .d("reason", "curlFailure") - .d("method", "curl_multi_add_handle") - .d("error", curl_multi_strerror(ret))); + auto result = m_multi->addHandle(m_pingStream->getCurlHandle()); + if (result != CURLM_OK) { + ACSDK_ERROR(LX("sendPingFailed").d("reason", "addHandleFailed")); + releasePingStream(false); setIsStopping(ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); return false; } + m_activeStreams.insert(ActiveTransferEntry(m_pingStream->getCurlHandle(), m_pingStream)); return true; } void HTTP2Transport::handlePingResponse() { ACSDK_DEBUG(LX("handlePingResponse")); - if (HTTP2Stream::HTTPResponseCodes::SUCCESS_NO_CONTENT != m_pingStream->getResponseCode()) { - ACSDK_ERROR(LX("pingFailed") - .d("responseCode", m_pingStream->getResponseCode())); + if (HTTPResponseCode::SUCCESS_NO_CONTENT != m_pingStream->getResponseCode()) { + ACSDK_ERROR(LX("pingFailed").d("responseCode", m_pingStream->getResponseCode())); setIsStopping(ConnectionStatusObserverInterface::ChangedReason::SERVER_SIDE_DISCONNECT); } - curl_multi_remove_handle(m_multi->handle, m_pingStream->getCurlHandle()); - m_streamPool.releaseStream(m_pingStream); - m_pingStream.reset(); + releasePingStream(); +} + +void HTTP2Transport::onPostConnected() { + setIsConnectedTrueUnlessStopping(); } void HTTP2Transport::setIsStopping(ConnectionStatusObserverInterface::ChangedReason reason) { @@ -708,6 +684,7 @@ void HTTP2Transport::setIsStoppingLocked(ConnectionStatusObserverInterface::Chan if (m_isStopping) { return; } + m_disconnectReason = reason; m_isStopping = true; m_wakeRetryTrigger.notify_one(); @@ -730,38 +707,49 @@ void HTTP2Transport::setIsConnectedTrueUnlessStopping() { } m_isConnected = true; } - m_observer->onConnected(); + + notifyObserversOnConnected(); } void HTTP2Transport::setIsConnectedFalse() { auto disconnectReason = ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR; { std::lock_guard lock(m_mutex); - if (!m_isConnected) { + if (m_disconnectedSent) { return; } + m_disconnectedSent = true; m_isConnected = false; disconnectReason = m_disconnectReason; } - m_observer->onDisconnected(disconnectReason); + + notifyObserversOnDisconnect(disconnectReason); } -bool HTTP2Transport::enqueueRequest(std::shared_ptr request) { +bool HTTP2Transport::enqueueRequest(std::shared_ptr request, bool ignoreConnectState) { if (!request) { ACSDK_ERROR(LX("enqueueRequestFailed").d("reason", "nullRequest")); return false; } + std::lock_guard lock(m_mutex); - if (m_isConnected && !m_isStopping) { - m_requestQueue.push_back(request); - return true; + if (!m_isStopping) { + if (ignoreConnectState || m_isConnected) { + ACSDK_DEBUG9(LX("enqueueRequest").sensitive("jsonContent", request->getJsonContent())); + m_requestQueue.push_back(request); + return true; + } else { + ACSDK_ERROR(LX("enqueueRequestFailed").d("reason", "isNotConnected")); + } + } else { + ACSDK_ERROR(LX("enqueueRequestFailed").d("reason", "isStopping")); } return false; } std::shared_ptr HTTP2Transport::dequeueRequest() { std::lock_guard lock(m_mutex); - if (m_requestQueue.empty()) { + if (m_isStopping || m_requestQueue.empty()) { return nullptr; } auto result = m_requestQueue.front(); @@ -769,14 +757,134 @@ std::shared_ptr HTTP2Transport::dequeueRequest() { return result; } - -void HTTP2Transport::clearQueuedRequests(){ +void HTTP2Transport::clearQueuedRequests() { std::lock_guard lock(m_mutex); for (auto request : m_requestQueue) { - request->onSendCompleted(MessageRequest::Status::NOT_CONNECTED); + request->sendCompleted(MessageRequestObserverInterface::Status::NOT_CONNECTED); } m_requestQueue.clear(); } -} // acl -} // alexaClientSDK +void HTTP2Transport::addObserver(std::shared_ptr observer) { + if (!observer) { + ACSDK_ERROR(LX("addObserverFailed").d("reason", "nullObserver")); + return; + } + + std::lock_guard lock{m_observerMutex}; + m_observers.insert(observer); +} + +void HTTP2Transport::removeObserver(std::shared_ptr observer) { + if (!observer) { + ACSDK_ERROR(LX("removeObserverFailed").d("reason", "nullObserver")); + return; + } + + std::lock_guard lock{m_observerMutex}; + m_observers.erase(observer); +} + +void HTTP2Transport::notifyObserversOnServerSideDisconnect() { + std::unique_lock lock{m_observerMutex}; + auto observers = m_observers; + lock.unlock(); + + for (auto observer : observers) { + observer->onServerSideDisconnect(shared_from_this()); + } +} + +void HTTP2Transport::notifyObserversOnDisconnect(ConnectionStatusObserverInterface::ChangedReason reason) { + std::unique_lock lock{m_observerMutex}; + auto observers = m_observers; + lock.unlock(); + + for (auto observer : observers) { + observer->onDisconnected(shared_from_this(), reason); + } +} + +void HTTP2Transport::notifyObserversOnConnected() { + std::unique_lock lock{m_observerMutex}; + auto observers = m_observers; + lock.unlock(); + + for (auto observer : observers) { + observer->onConnected(shared_from_this()); + } +} + +bool HTTP2Transport::releaseDownchannelStream( + bool removeFromMulti, + ConnectionStatusObserverInterface::ChangedReason* reason) { + if (m_downchannelStream) { + if (!releaseStream(m_downchannelStream, removeFromMulti, "downchannel")) { + if (reason) { + *reason = ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR; + return false; + } + } + m_downchannelStream.reset(); + } + return true; +} + +bool HTTP2Transport::releasePingStream(bool removeFromMulti) { + if (m_pingStream) { + if (!releaseStream(m_pingStream, removeFromMulti, "ping")) { + setIsStopping(ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); + return false; + } + m_pingStream.reset(); + } + return true; +} + +void HTTP2Transport::releaseAllEventStreams() { + // Get a copy of the event streams to release. + std::vector> eventStreams; + for (auto entry : m_activeStreams) { + auto stream = entry.second; + if (isEventStream(stream)) { + eventStreams.push_back(stream); + } + } + for (auto stream : eventStreams) { + releaseEventStream(stream); + } +} + +bool HTTP2Transport::releaseEventStream(std::shared_ptr stream, bool removeFromMulti) { + if (stream) { + if (!releaseStream(stream, removeFromMulti, "event")) { + setIsStopping(ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); + return false; + } + } + return true; +} + +bool HTTP2Transport::releaseStream(std::shared_ptr stream, bool removeFromMulti, const std::string& name) { + auto handle = stream->getCurlHandle(); + m_activeStreams.erase(handle); + if (removeFromMulti) { + auto result = m_multi->removeHandle(handle); + if (result != CURLM_OK) { + ACSDK_ERROR(LX("releaseStreamFailed") + .d("reason", "removeHandleFailed") + .d("streamId", stream->getLogicalStreamId()) + .d("name", name)); + return false; + } + } + m_streamPool.releaseStream(stream); + return true; +} + +bool HTTP2Transport::isEventStream(std::shared_ptr stream) { + return stream != m_downchannelStream && stream != m_pingStream; +} + +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/src/Transport/MessageRouter.cpp b/ACL/src/Transport/MessageRouter.cpp index 3b707f116d..93293cbe36 100644 --- a/ACL/src/Transport/MessageRouter.cpp +++ b/ACL/src/Transport/MessageRouter.cpp @@ -1,7 +1,5 @@ /* - * MessageRouter.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -43,20 +41,16 @@ static const std::string TAG("MessageRouter"); #define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) MessageRouter::MessageRouter( - std::shared_ptr authDelegate, - std::shared_ptr attachmentManager, - const std::string& avsEndpoint): - m_avsEndpoint{avsEndpoint}, - m_authDelegate{authDelegate}, - m_connectionStatus{ConnectionStatusObserverInterface::Status::DISCONNECTED}, - m_connectionReason{ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST}, - m_isEnabled{false}, - m_attachmentManager{attachmentManager} { -} - -MessageRouter::~MessageRouter() { - disable(); - m_executor.waitForSubmittedTasks(); + std::shared_ptr authDelegate, + std::shared_ptr attachmentManager, + const std::string& avsEndpoint) : + MessageRouterInterface{"MessageRouter"}, + m_avsEndpoint{avsEndpoint}, + m_authDelegate{authDelegate}, + m_connectionStatus{ConnectionStatusObserverInterface::Status::DISCONNECTED}, + m_connectionReason{ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST}, + m_isEnabled{false}, + m_attachmentManager{attachmentManager} { } MessageRouterInterface::ConnectionStatus MessageRouter::getConnectionStatus() { @@ -68,12 +62,18 @@ void MessageRouter::enable() { std::lock_guard lock{m_connectionMutex}; m_isEnabled = true; if (!m_activeTransport || !m_activeTransport->isConnected()) { - setConnectionStatusLocked(ConnectionStatusObserverInterface::Status::PENDING, - ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + setConnectionStatusLocked( + ConnectionStatusObserverInterface::Status::PENDING, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); createActiveTransportLocked(); } } +void MessageRouter::doShutdown() { + disable(); + m_executor.shutdown(); +} + void MessageRouter::disable() { std::unique_lock lock{m_connectionMutex}; m_isEnabled = false; @@ -91,17 +91,17 @@ void MessageRouter::sendMessage(std::shared_ptr request) { m_activeTransport->send(request); } else { ACSDK_ERROR(LX("sendFailed").d("reason", "noActiveTransport")); - request->onSendCompleted(MessageRequest::Status::NOT_CONNECTED); + request->sendCompleted(MessageRequestObserverInterface::Status::NOT_CONNECTED); } } -void MessageRouter::setAVSEndpoint(const std::string &avsEndpoint) { +void MessageRouter::setAVSEndpoint(const std::string& avsEndpoint) { std::unique_lock lock{m_connectionMutex}; if (avsEndpoint != m_avsEndpoint) { m_avsEndpoint = avsEndpoint; if (m_isEnabled) { - disconnectAllTransportsLocked(lock, - ConnectionStatusObserverInterface::ChangedReason::SERVER_ENDPOINT_CHANGED); + disconnectAllTransportsLocked( + lock, ConnectionStatusObserverInterface::ChangedReason::SERVER_ENDPOINT_CHANGED); } // disconnectAllTransportLocked releases the lock temporarily, so re-check m_isEnabled. if (m_isEnabled) { @@ -110,42 +110,57 @@ void MessageRouter::setAVSEndpoint(const std::string &avsEndpoint) { } } -void MessageRouter::onConnected() { +void MessageRouter::onConnected(std::shared_ptr transport) { std::unique_lock lock{m_connectionMutex}; if (m_isEnabled) { - setConnectionStatusLocked(ConnectionStatusObserverInterface::Status::CONNECTED, - ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + setConnectionStatusLocked( + ConnectionStatusObserverInterface::Status::CONNECTED, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); } } -void MessageRouter::onDisconnected(ConnectionStatusObserverInterface::ChangedReason reason) { +void MessageRouter::onDisconnected( + std::shared_ptr transport, + ConnectionStatusObserverInterface::ChangedReason reason) { std::lock_guard lock{m_connectionMutex}; - if (ConnectionStatusObserverInterface::Status::CONNECTED == m_connectionStatus) { - if (m_activeTransport && !m_activeTransport->isConnected()) { - m_activeTransport.reset(); + + for (auto it = m_transports.begin(); it != m_transports.end(); it++) { + if (*it == transport) { + m_transports.erase(it); + safelyReleaseTransport(transport); + break; } - auto isDisconnected = [](std::shared_ptr transport) { return !transport->isConnected(); }; - m_transports.erase( - std::remove_if(m_transports.begin(), m_transports.end(), isDisconnected), m_transports.end()); - if (m_transports.empty()) { - setConnectionStatusLocked(ConnectionStatusObserverInterface::Status::DISCONNECTED, reason); + } + + if (transport == m_activeTransport) { + m_activeTransport.reset(); + // Update status. If transitioning to PENDING, also initiate the reconnect. + if (ConnectionStatusObserverInterface::Status::CONNECTED == m_connectionStatus) { + if (m_isEnabled) { + setConnectionStatusLocked(ConnectionStatusObserverInterface::Status::PENDING, reason); + createActiveTransportLocked(); + } else if (m_transports.empty()) { + setConnectionStatusLocked(ConnectionStatusObserverInterface::Status::DISCONNECTED, reason); + } } } } -void MessageRouter::onServerSideDisconnect() { +void MessageRouter::onServerSideDisconnect(std::shared_ptr transport) { std::unique_lock lock{m_connectionMutex}; if (m_isEnabled) { - setConnectionStatusLocked(ConnectionStatusObserverInterface::Status::PENDING, - ConnectionStatusObserverInterface::ChangedReason::SERVER_SIDE_DISCONNECT); + setConnectionStatusLocked( + ConnectionStatusObserverInterface::Status::PENDING, + ConnectionStatusObserverInterface::ChangedReason::SERVER_SIDE_DISCONNECT); // For server side disconnects leave the old transport alive to receive any further data, but send // new messages through a new transport. - // @see: https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/docs/managing-an-http-2-connection#disconnects + // @see: + // https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/docs/managing-an-http-2-connection#disconnects createActiveTransportLocked(); } } -void MessageRouter::consumeMessage(const std::string & contextId, const std::string & message) { +void MessageRouter::consumeMessage(const std::string& contextId, const std::string& message) { notifyObserverOnReceive(contextId, message); } @@ -154,8 +169,9 @@ void MessageRouter::setObserver(std::shared_ptr m_observer = observer; } -void MessageRouter::setConnectionStatusLocked(const ConnectionStatusObserverInterface::Status status, - const ConnectionStatusObserverInterface::ChangedReason reason) { +void MessageRouter::setConnectionStatusLocked( + const ConnectionStatusObserverInterface::Status status, + const ConnectionStatusObserverInterface::ChangedReason reason) { if (status != m_connectionStatus) { m_connectionStatus = status; m_connectionReason = reason; @@ -165,8 +181,8 @@ void MessageRouter::setConnectionStatusLocked(const ConnectionStatusObserverInte } void MessageRouter::notifyObserverOnConnectionStatusChanged( - const ConnectionStatusObserverInterface::Status status, - const ConnectionStatusObserverInterface::ChangedReason reason) { + const ConnectionStatusObserverInterface::Status status, + const ConnectionStatusObserverInterface::ChangedReason reason) { auto task = [this, status, reason]() { auto observer = getObserver(); if (observer) { @@ -176,7 +192,7 @@ void MessageRouter::notifyObserverOnConnectionStatusChanged( m_executor.submit(task); } -void MessageRouter::notifyObserverOnReceive(const std::string & contextId, const std::string & message) { +void MessageRouter::notifyObserverOnReceive(const std::string& contextId, const std::string& message) { auto task = [this, contextId, message]() { auto temp = getObserver(); if (temp) { @@ -187,30 +203,35 @@ void MessageRouter::notifyObserverOnReceive(const std::string & contextId, const } void MessageRouter::createActiveTransportLocked() { - auto transport = createTransport(m_authDelegate, m_attachmentManager, m_avsEndpoint, this, this); + auto transport = + createTransport(m_authDelegate, m_attachmentManager, m_avsEndpoint, shared_from_this(), shared_from_this()); if (transport && transport->connect()) { m_transports.push_back(transport); m_activeTransport = transport; } else { - m_activeTransport.reset(); - setConnectionStatusLocked(ConnectionStatusObserverInterface::Status::DISCONNECTED, - ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); - ACSDK_ERROR(LX("createActiveTransportLockedFailed") - .d("reason", transport ? "internalError" : "createTransportFailed")); + safelyResetActiveTransportLocked(); + setConnectionStatusLocked( + ConnectionStatusObserverInterface::Status::DISCONNECTED, + ConnectionStatusObserverInterface::ChangedReason::INTERNAL_ERROR); + ACSDK_ERROR( + LX("createActiveTransportLockedFailed").d("reason", transport ? "internalError" : "createTransportFailed")); } } void MessageRouter::disconnectAllTransportsLocked( - std::unique_lock& lock, const ConnectionStatusObserverInterface::ChangedReason reason) { + std::unique_lock& lock, + const ConnectionStatusObserverInterface::ChangedReason reason) { + safelyResetActiveTransportLocked(); + // Use std::move() to optimize copy. Use clear() otherwise contents of m_transports becomes undefined. auto movedTransports = std::move(m_transports); m_transports.clear(); - m_activeTransport.reset(); + setConnectionStatusLocked(ConnectionStatusObserverInterface::Status::DISCONNECTED, reason); lock.unlock(); for (auto transport : movedTransports) { - transport->disconnect(); + transport->shutdown(); } lock.lock(); } @@ -220,5 +241,22 @@ std::shared_ptr MessageRouter::getObserver() { return m_observer; } -} // acl -} // alexaClientSDK +void MessageRouter::safelyResetActiveTransportLocked() { + if (m_activeTransport) { + if (std::find(m_transports.begin(), m_transports.end(), m_activeTransport) == m_transports.end()) { + ACSDK_ERROR(LX("safelyResetActiveTransportLockedError").d("reason", "activeTransportNotInTransports)")); + safelyReleaseTransport(m_activeTransport); + } + m_activeTransport.reset(); + } +} + +void MessageRouter::safelyReleaseTransport(std::shared_ptr transport) { + if (transport) { + auto task = [transport]() { transport->shutdown(); }; + m_executor.submit(task); + } +} + +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/src/Transport/MimeParser.cpp b/ACL/src/Transport/MimeParser.cpp index e53c739f56..32adc08d40 100644 --- a/ACL/src/Transport/MimeParser.cpp +++ b/ACL/src/Transport/MimeParser.cpp @@ -1,7 +1,5 @@ /* - * MimeParser.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,6 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ + #include #include "ACL/Transport/MimeParser.h" #include @@ -63,7 +62,7 @@ std::string sanitizeContentId(const std::string& mimeContentId) { std::string sanitizedContentId; if (mimeContentId.empty()) { ACSDK_ERROR(LX("sanitizeContentIdFailed").d("reason", "emptyMimeContentId")); - } else if ( ('<' == mimeContentId.front()) && ('>' == mimeContentId.back()) ) { + } else if (('<' == mimeContentId.front()) && ('>' == mimeContentId.back())) { // Getting attachment ID within angle bracket <>. sanitizedContentId = mimeContentId.substr(1, mimeContentId.size() - 2); } else { @@ -72,30 +71,29 @@ std::string sanitizeContentId(const std::string& mimeContentId) { return sanitizedContentId; } -MimeParser::MimeParser(MessageConsumerInterface *messageConsumer, - std::shared_ptr attachmentManager, - const std::string & attachmentContextId) - : m_receivedFirstChunk{false}, - m_currDataType{ContentType::NONE}, - m_messageConsumer{messageConsumer}, - m_attachmentManager{attachmentManager}, - m_attachmentContextId{attachmentContextId}, - m_dataParsedStatus{DataParsedStatus::OK}, - m_currentByteProgress{0}, - m_totalSuccessfullyProcessedBytes{0} { - m_multipartReader.onPartBegin = MimeParser::partBeginCallback; - m_multipartReader.onPartData = MimeParser::partDataCallback; - m_multipartReader.onPartEnd = MimeParser::partEndCallback; - m_multipartReader.userData = this; +MimeParser::MimeParser( + std::shared_ptr messageConsumer, + std::shared_ptr attachmentManager) : + m_receivedFirstChunk{false}, + m_currDataType{ContentType::NONE}, + m_messageConsumer{messageConsumer}, + m_attachmentManager{attachmentManager}, + m_dataParsedStatus{DataParsedStatus::OK}, + m_currentByteProgress{0}, + m_totalSuccessfullyProcessedBytes{0}, + m_isAttachmentWriterBufferFull{false} { + m_multipartReader.onPartBegin = MimeParser::partBeginCallback; + m_multipartReader.onPartData = MimeParser::partDataCallback; + m_multipartReader.onPartEnd = MimeParser::partEndCallback; + m_multipartReader.userData = this; } -void MimeParser::partBeginCallback(const MultipartHeaders &headers, void *userData) { - MimeParser *parser = static_cast(userData); +void MimeParser::partBeginCallback(const MultipartHeaders& headers, void* userData) { + MimeParser* parser = static_cast(userData); if (parser->m_dataParsedStatus != MimeParser::DataParsedStatus::OK) { - ACSDK_ERROR(LX("partBeginCallbackFailed") - .d("reason", "mimeParsingFailed") - .d("status", parser->m_dataParsedStatus)); + ACSDK_ERROR( + LX("partBeginCallbackFailed").d("reason", "mimeParsingFailed").d("status", parser->m_dataParsedStatus)); return; } @@ -105,15 +103,15 @@ void MimeParser::partBeginCallback(const MultipartHeaders &headers, void *userDa } else if (contentType.find(MIME_OCTET_STREAM_CONTENT_TYPE) != std::string::npos) { if (1 == headers.count(MIME_CONTENT_ID_FIELD_NAME)) { auto contentId = sanitizeContentId(headers[MIME_CONTENT_ID_FIELD_NAME]); - auto attachmentId = parser->m_attachmentManager->generateAttachmentId( - parser->m_attachmentContextId, contentId); + auto attachmentId = + parser->m_attachmentManager->generateAttachmentId(parser->m_attachmentContextId, contentId); if (!parser->m_attachmentWriter && attachmentId != parser->m_attachmentIdBeingReceived) { parser->m_attachmentWriter = parser->m_attachmentManager->createWriter(attachmentId); if (!parser->m_attachmentWriter) { ACSDK_ERROR(LX("partBeginCallbackFailed") - .d("reason", "createWriterFailed") - .d("attachmentId", attachmentId)); + .d("reason", "createWriterFailed") + .d("attachmentId", attachmentId)); } } } @@ -121,7 +119,7 @@ void MimeParser::partBeginCallback(const MultipartHeaders &headers, void *userDa } } -MimeParser::DataParsedStatus MimeParser::writeDataToAttachment(const char *buffer, size_t size) { +MimeParser::DataParsedStatus MimeParser::writeDataToAttachment(const char* buffer, size_t size) { // Error case. We can't process the attachment. if (!m_attachmentWriter) { ACSDK_ERROR(LX("writeDataToAttachmentFailed").d("reason", "nullAttachmentWriter")); @@ -139,14 +137,14 @@ MimeParser::DataParsedStatus MimeParser::writeDataToAttachment(const char *buffe // A low-level error with the Attachment occurred. if (AttachmentWriter::WriteStatus::ERROR_BYTES_LESS_THAN_WORD_SIZE == writeStatus || - AttachmentWriter::WriteStatus::ERROR_INTERNAL == writeStatus) { + AttachmentWriter::WriteStatus::ERROR_INTERNAL == writeStatus) { ACSDK_ERROR(LX("writeDataToAttachmentFailed").d("reason", "attachmentWriterInternalError")); return MimeParser::DataParsedStatus::ERROR; } // We're blocked on a slow reader. if (AttachmentWriter::WriteStatus::OK_BUFFER_FULL == writeStatus) { - ACSDK_DEBUG(LX("writeDataToAttachmentFailed").d("reason", "attachmentWriterBufferFull")); + setAttachmentWriterBufferFull(true); return MimeParser::DataParsedStatus::INCOMPLETE; } @@ -156,22 +154,27 @@ MimeParser::DataParsedStatus MimeParser::writeDataToAttachment(const char *buffe return MimeParser::DataParsedStatus::ERROR; } + setAttachmentWriterBufferFull(false); return MimeParser::DataParsedStatus::OK; } -void MimeParser::partDataCallback(const char *buffer, size_t size, void *userData) { - MimeParser *parser = static_cast(userData); +void MimeParser::partDataCallback(const char* buffer, size_t size, void* userData) { + MimeParser* parser = static_cast(userData); + + if (MimeParser::DataParsedStatus::INCOMPLETE == parser->m_dataParsedStatus) { + ACSDK_DEBUG9(LX("partDataCallbackIgnored").d("reason", "attachmentWriterFullBuffer")); + return; + } if (parser->m_dataParsedStatus != MimeParser::DataParsedStatus::OK) { - ACSDK_ERROR(LX("partDataCallbackFailed") - .d("reason", "mimeParsingError") - .d("status", parser->m_dataParsedStatus)); + ACSDK_ERROR( + LX("partDataCallbackFailed").d("reason", "mimeParsingError").d("status", parser->m_dataParsedStatus)); return; } // If we've already processed any of this part in a previous incomplete iteration, let's not process it twice. if (!parser->shouldProcessBytes(size)) { - ACSDK_DEBUG(LX("partDataCallbackSkipped").d("reason", "bytesAlreadyProcessed")); + ACSDK_DEBUG9(LX("partDataCallbackSkipped").d("reason", "bytesAlreadyProcessed")); parser->updateCurrentByteProgress(size); parser->m_dataParsedStatus = MimeParser::DataParsedStatus::OK; return; @@ -186,9 +189,9 @@ void MimeParser::partDataCallback(const char *buffer, size_t size, void *userDat // Sanity check that we actually have correctly bounded work to do. if (0 == bytesToProcess || bytesToProcess > size) { ACSDK_ERROR(LX("partDataCallbackFailed") - .d("reason", "invalidBytesToProcess") - .d("bytesToProcess", bytesToProcess) - .d("totalSize", size)); + .d("reason", "invalidBytesToProcess") + .d("bytesToProcess", bytesToProcess) + .d("totalSize", size)); parser->m_dataParsedStatus = MimeParser::DataParsedStatus::ERROR; return; } @@ -213,13 +216,12 @@ void MimeParser::partDataCallback(const char *buffer, size_t size, void *userDat } } -void MimeParser::partEndCallback(void *userData) { - MimeParser *parser = static_cast(userData); +void MimeParser::partEndCallback(void* userData) { + MimeParser* parser = static_cast(userData); if (parser->m_dataParsedStatus != MimeParser::DataParsedStatus::OK) { - ACSDK_ERROR(LX("partEndCallbackFailed") - .d("reason", "mimeParsingError") - .d("status", parser->m_dataParsedStatus)); + ACSDK_ERROR( + LX("partEndCallbackFailed").d("reason", "mimeParsingError").d("status", parser->m_dataParsedStatus)); return; } @@ -227,14 +229,14 @@ void MimeParser::partEndCallback(void *userData) { case MimeParser::ContentType::JSON: if (!parser->m_messageConsumer) { ACSDK_ERROR(LX("partEndCallbackFailed") - .d("reason", "nullMessageConsumer") - .d("status", parser->m_dataParsedStatus)); + .d("reason", "nullMessageConsumer") + .d("status", parser->m_dataParsedStatus)); break; } // Check there's data to send out, because in a re-drive we may skip a directive that's been seen before. if (parser->m_directiveBeingReceived != "") { - parser->m_messageConsumer->consumeMessage(parser->m_attachmentContextId, - parser->m_directiveBeingReceived); + parser->m_messageConsumer->consumeMessage( + parser->m_attachmentContextId, parser->m_directiveBeingReceived); parser->m_directiveBeingReceived = ""; } break; @@ -253,13 +255,18 @@ void MimeParser::reset() { m_receivedFirstChunk = false; m_multipartReader.reset(); m_dataParsedStatus = DataParsedStatus::OK; + closeActiveAttachmentWriter(); + m_isAttachmentWriterBufferFull = false; +} + +void MimeParser::setAttachmentContextId(const std::string& attachmentContextId) { + m_attachmentContextId = attachmentContextId; } void MimeParser::setBoundaryString(const std::string& boundaryString) { m_multipartReader.setBoundary(boundaryString); } - /* * This function is designed to allow the processing of MIME multipart data in chunks. If a chunk of data cannot * be fully processed, this class allows that chunk to be re-driven until it returns @c DataParsedStatus::OK. @@ -281,7 +288,7 @@ void MimeParser::setBoundaryString(const std::string& boundaryString) { * is not successful, restore the object to its initial state, allowing a re-drive. Otherwise it is left in its * resulting state for subsequent data chunks. */ -MimeParser::DataParsedStatus MimeParser::feed(char *data, size_t length) { +MimeParser::DataParsedStatus MimeParser::feed(char* data, size_t length) { // Capture old state in case the complete parse does not succeed (see function comments). auto oldReader = m_multipartReader; auto oldReceivedFirstChunk = m_receivedFirstChunk; @@ -301,6 +308,7 @@ MimeParser::DataParsedStatus MimeParser::feed(char *data, size_t length) { } // Initialize this before all the feed() callbacks happen (since this persists from previous call). + m_currentByteProgress = 0; m_dataParsedStatus = DataParsedStatus::OK; m_multipartReader.feed(data, length); @@ -318,7 +326,7 @@ MimeParser::DataParsedStatus MimeParser::feed(char *data, size_t length) { return m_dataParsedStatus; } -MessageConsumerInterface* MimeParser::getMessageConsumer() { +std::shared_ptr MimeParser::getMessageConsumer() { return m_messageConsumer; } @@ -343,5 +351,13 @@ void MimeParser::resetByteProgressCounters() { m_currentByteProgress = 0; } -}// acl -}// alexaClientSDK +void MimeParser::setAttachmentWriterBufferFull(bool isFull) { + if (isFull == m_isAttachmentWriterBufferFull) { + return; + } + ACSDK_DEBUG9(LX("setAttachmentWriterBufferFull").d("full", isFull)); + m_isAttachmentWriterBufferFull = isFull; +} + +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/src/Transport/PostConnectObject.cpp b/ACL/src/Transport/PostConnectObject.cpp new file mode 100644 index 0000000000..ad6bcd7eff --- /dev/null +++ b/ACL/src/Transport/PostConnectObject.cpp @@ -0,0 +1,63 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "ACL/Transport/PostConnectObject.h" +#include "ACL/Transport/PostConnectSynchronizer.h" +#include + +namespace alexaClientSDK { +namespace acl { + +using namespace avsCommon::sdkInterfaces; + +/// Class static definition of context-manager. +std::shared_ptr PostConnectObject::m_contextManager = nullptr; + +/// String to identify log entries originating from this file. +static const std::string TAG("PostConnect"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param event The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/* + * Static method to initialize the context manager. + * + * @param contextManager The contextManager instance to initialize with. + */ +void PostConnectObject::init(std::shared_ptr contextManager) { + m_contextManager = contextManager; +} + +/** + * Method that creates post-connect object. + */ +std::shared_ptr PostConnectObject::create() { + if (!m_contextManager) { + ACSDK_ERROR(LX("postCreateFailed").d("reason", "contextManagerNullData")); + return nullptr; + } + + return std::shared_ptr(new PostConnectSynchronizer()); +} + +PostConnectObject::PostConnectObject() : RequiresShutdown{"PostConnectObject"} { +} + +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/src/Transport/PostConnectSynchronizer.cpp b/ACL/src/Transport/PostConnectSynchronizer.cpp new file mode 100644 index 0000000000..5877dc7129 --- /dev/null +++ b/ACL/src/Transport/PostConnectSynchronizer.cpp @@ -0,0 +1,268 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "ACL/Transport/HTTP2Transport.h" +#include "ACL/Transport/TransportDefines.h" +#include "ACL/Transport/PostConnectSynchronizer.h" +#include +#include + +namespace alexaClientSDK { +namespace acl { + +using namespace avsCommon::sdkInterfaces; + +/// String to identify log entries originating from this file. +static const std::string TAG("PostConnectSynchronize"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param event The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/// String to identify the AVS namespace of the event we send. +static const std::string STATE_SYNCHRONIZER_NAMESPACE = "System"; + +/// String to identify the AVS name of the event we send. +static const std::string STATE_SYNCHRONIZER_NAME = "SynchronizeState"; + +PostConnectSynchronizer::PostConnectSynchronizer() : + m_contextFetchInProgress{false}, + m_isPostConnected{false}, + m_isStopping{false}, + m_postConnectThreadRunning{false} { +} + +void PostConnectSynchronizer::doShutdown() { + ACSDK_DEBUG(LX("PostConnectSynchronizer::doShutdown().")); + std::thread localPostConnectThread; + { + std::lock_guard lock{m_mutex}; + if (m_isStopping) { + return; + } + m_isStopping = true; + m_wakeRetryTrigger.notify_one(); + m_transport.reset(); + + std::swap(m_postConnectThread, localPostConnectThread); + } + { + if (localPostConnectThread.joinable()) { + localPostConnectThread.join(); + } + } + { + std::lock_guard lock{m_observerMutex}; + m_observers.clear(); + } +} + +bool PostConnectSynchronizer::doPostConnect(std::shared_ptr transport) { + if (!transport) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullTransport")); + return false; + } + + std::lock_guard lock{m_mutex}; + + /* + * To handle cases where shutdown was invoked before the post-connect object is + * called. We do not want to spawn the post-connect thread again which ends up + * waiting forever. + */ + if (m_isStopping) { + return false; + } + + // This function spawns a worker thread, so ensure this function is called + // only when the the worker thread is not running. + if (m_postConnectThreadRunning) { + ACSDK_ERROR(LX("postConnectFailed").d("reason", "postConnectThreadAlreadyRunning")); + return false; + } + + m_transport = transport; + + // Register the post-connect object as a listener to the HTTP m_transport + // observer interface to stop the thread when the m_transport is + // disconnected. + m_transport->addObserver(shared_from_this()); + + m_postConnectThreadRunning = true; + + m_postConnectThread = std::thread(&PostConnectSynchronizer::postConnectLoop, this); + + return true; +} + +void PostConnectSynchronizer::postConnectLoop() { + int retryCount = 0; + + ACSDK_DEBUG9(LX("Entering postConnectLoop thread")); + + while (!isStopping() && !isPostConnected()) { + { + std::unique_lock lock(m_mutex); + if (!m_contextFetchInProgress) { + PostConnectObject::m_contextManager->getContext(shared_from_this()); + m_contextFetchInProgress = true; + } + } + + auto retryBackoff = TransportDefines::RETRY_TIMER.calculateTimeToRetry(retryCount); + retryCount++; + std::unique_lock lock(m_mutex); + m_wakeRetryTrigger.wait_for(lock, retryBackoff, [this] { return m_isPostConnected || m_isStopping; }); + } + + ACSDK_DEBUG9(LX("Exiting postConnectLoop thread")); + + { + std::lock_guard lock{m_mutex}; + m_postConnectThreadRunning = false; + } +} + +void PostConnectSynchronizer::onContextAvailable(const std::string& jsonContext) { + if (isPostConnected() || isStopping()) { + ACSDK_DEBUG(LX("onContextAvailableIgnored") + .d("reason", "PostConnectSynchronizerDone") + .d("m_isPostConnected", m_isPostConnected) + .d("m_isStopping", m_isStopping)); + return; + } + + auto msgIdAndJsonEvent = avsCommon::avs::buildJsonEventString( + STATE_SYNCHRONIZER_NAMESPACE, STATE_SYNCHRONIZER_NAME, "", "{}", jsonContext); + + auto postConnectMessage = std::make_shared(msgIdAndJsonEvent.second); + postConnectMessage->addObserver(shared_from_this()); + + /* + * If the transport pointer held by the post-connect is still valid - not + * shutdown yet then we send the message through the transport. + */ + std::shared_ptr localTransport; + { + std::lock_guard lock{m_mutex}; + swap(m_transport, localTransport); + } + + if (localTransport) { + ACSDK_DEBUG(LX("onContextAvailable : Send PostConnectMessage to transport")); + localTransport->sendPostConnectMessage(postConnectMessage); + } +} + +void PostConnectSynchronizer::onContextFailure(const ContextRequestError error) { + if (isPostConnected() || isStopping()) { + ACSDK_DEBUG(LX("onContextFailureIgnored") + .d("reason", "PostConnectSynchronizerDone") + .d("m_isPostConnected", m_isPostConnected) + .d("m_isStopping", m_isStopping)); + return; + } + + { + std::lock_guard lock{m_mutex}; + m_contextFetchInProgress = false; + } + + ACSDK_ERROR(LX("contextRetrievalFailed").d("reason", "contextRequestErrorOccurred").d("error", error)); +} + +void PostConnectSynchronizer::onSendCompleted(MessageRequestObserverInterface::Status status) { + ACSDK_DEBUG(LX("onSendCompleted").d("status", status)); + if (status == MessageRequestObserverInterface::Status::SUCCESS || + status == MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT) { + { + std::lock_guard lock{m_mutex}; + m_isPostConnected = true; + m_wakeRetryTrigger.notify_one(); + } + notifyObservers(); + } else { + std::lock_guard lock{m_mutex}; + m_contextFetchInProgress = false; + } +} + +void PostConnectSynchronizer::onExceptionReceived(const std::string& exceptionMessage) { + ACSDK_ERROR(LX("onExceptionReceived").d("exception", exceptionMessage)); + std::lock_guard lock{m_mutex}; + m_contextFetchInProgress = false; +} + +void PostConnectSynchronizer::addObserver(std::shared_ptr observer) { + if (!observer) { + ACSDK_ERROR(LX("addObserverFailed").d("reason", "nullObserver")); + return; + } + + std::lock_guard lock{m_observerMutex}; + m_observers.insert(observer); +} + +void PostConnectSynchronizer::removeObserver(std::shared_ptr observer) { + if (!observer) { + ACSDK_ERROR(LX("removeObserverFailed").d("reason", "nullObserver")); + return; + } + + std::lock_guard lock{m_observerMutex}; + m_observers.erase(observer); +} + +void PostConnectSynchronizer::notifyObservers() { + std::unique_lock lock{m_observerMutex}; + auto observers = m_observers; + lock.unlock(); + + for (auto observer : observers) { + observer->onPostConnected(); + } +} + +void PostConnectSynchronizer::onServerSideDisconnect(std::shared_ptr transport) { + ACSDK_DEBUG(LX("onServerSideDisconnect()")); + doShutdown(); +} + +void PostConnectSynchronizer::onConnected(std::shared_ptr transport) { + ACSDK_DEBUG(LX("onConnected()")); +} + +void PostConnectSynchronizer::onDisconnected( + std::shared_ptr transport, + ConnectionStatusObserverInterface::ChangedReason reason) { + ACSDK_DEBUG(LX("onDisconnected()")); + doShutdown(); +} + +bool PostConnectSynchronizer::isStopping() { + std::lock_guard lock{m_mutex}; + return m_isStopping; +} + +bool PostConnectSynchronizer::isPostConnected() { + std::lock_guard lock{m_mutex}; + return m_isPostConnected; +} + +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/src/Transport/TransportDefines.cpp b/ACL/src/Transport/TransportDefines.cpp new file mode 100644 index 0000000000..3cb207d658 --- /dev/null +++ b/ACL/src/Transport/TransportDefines.cpp @@ -0,0 +1,37 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include "ACL/Transport/TransportDefines.h" + +namespace alexaClientSDK { +namespace acl { + +/// Table with the retry times on subsequent retries. +const std::vector TransportDefines::RETRY_TABLE = { + 250, // Retry 1: 0.25s + 1000, // Retry 2: 1.00s + 3000, // Retry 3: 3.00s + 5000, // Retry 4: 5.00s + 10000, // Retry 5: 10.00s + 20000, // Retry 6: 20.00s +}; + +/// Retry Timer object. +avsCommon::utils::RetryTimer TransportDefines::RETRY_TIMER(TransportDefines::RETRY_TABLE); + +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/test/AVSConnectionManagerTest.cpp b/ACL/test/AVSConnectionManagerTest.cpp index a21625e6c6..6fe3d61542 100644 --- a/ACL/test/AVSConnectionManagerTest.cpp +++ b/ACL/test/AVSConnectionManagerTest.cpp @@ -1,7 +1,5 @@ /* - * AVSConnectionManagerTest.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -30,20 +28,24 @@ using namespace ::testing; using namespace alexaClientSDK::avsCommon::avs::initialization; using namespace alexaClientSDK::avsCommon::sdkInterfaces; - /// This class allows us to test MessageObserver interaction class MockMessageObserver : public MessageObserverInterface { public: - MockMessageObserver() { } - MOCK_METHOD2(receive, void(const std::string & contextId, const std::string & message)); + MockMessageObserver() { + } + MOCK_METHOD2(receive, void(const std::string& contextId, const std::string& message)); }; /// This class allows us to test ConnectionStatusObserver interaction class MockConnectionStatusObserver : public ConnectionStatusObserverInterface { public: - MockConnectionStatusObserver() { } - MOCK_METHOD2(onConnectionStatusChanged, void(ConnectionStatusObserverInterface::Status status, - ConnectionStatusObserverInterface::ChangedReason reason)); + MockConnectionStatusObserver() { + } + MOCK_METHOD2( + onConnectionStatusChanged, + void( + ConnectionStatusObserverInterface::Status status, + ConnectionStatusObserverInterface::ChangedReason reason)); }; /** @@ -51,10 +53,12 @@ class MockConnectionStatusObserver : public ConnectionStatusObserverInterface { */ class MockMessageRouter : public MessageRouterInterface { public: - MockMessageRouter() { } + MockMessageRouter() : MessageRouterInterface{"MockMessageRouter"} { + } MOCK_METHOD0(enable, void()); MOCK_METHOD0(disable, void()); + MOCK_METHOD0(doShutdown, void()); MOCK_METHOD0(getConnectionStatus, MessageRouterInterface::ConnectionStatus()); // TODO: ACSDK-421: Revert this to use send(). MOCK_METHOD1(sendMessage, void(std::shared_ptr request)); @@ -75,16 +79,15 @@ class AVSConnectionManagerTest : public ::testing::Test { }; void AVSConnectionManagerTest::SetUp() { - AlexaClientSDKInit::initialize(std::vector()); + AlexaClientSDKInit::initialize(std::vector()); m_messageRouter = std::make_shared(); m_observer = std::make_shared(); m_messageObserver = std::make_shared(); m_avsConnectionManager = AVSConnectionManager::create( - m_messageRouter, - true, - std::unordered_set>(), - std::unordered_set>()); - m_avsConnectionManager->onStateChanged(StateSynchronizerObserverInterface::State::SYNCHRONIZED); + m_messageRouter, + true, + std::unordered_set>(), + std::unordered_set>()); } void AVSConnectionManagerTest::TearDown() { @@ -109,22 +112,37 @@ TEST_F(AVSConnectionManagerTest, createWithNullMessageRouterAndObservers) { ASSERT_EQ(nullptr, m_avsConnectionManager->create(m_messageRouter, true, {m_observer}, {nullptr})); std::shared_ptr validConnectionStatusObserver; validConnectionStatusObserver = std::make_shared(); - ASSERT_EQ(nullptr, m_avsConnectionManager->create( - m_messageRouter, true, {m_observer, nullptr, validConnectionStatusObserver}, {m_messageObserver})); + ASSERT_EQ( + nullptr, + m_avsConnectionManager->create( + m_messageRouter, true, {m_observer, nullptr, validConnectionStatusObserver}, {m_messageObserver})); std::shared_ptr validMessageObserver; validMessageObserver = std::make_shared(); - ASSERT_EQ(nullptr, m_avsConnectionManager->create( - m_messageRouter, true, {m_observer}, {m_messageObserver, nullptr, validMessageObserver})); + ASSERT_EQ( + nullptr, + m_avsConnectionManager->create( + m_messageRouter, true, {m_observer}, {m_messageObserver, nullptr, validMessageObserver})); ASSERT_EQ(nullptr, m_avsConnectionManager->create(m_messageRouter, true, {nullptr}, {nullptr})); // create should pass with empty set of ConnectionStatusObservers - ASSERT_NE(nullptr, m_avsConnectionManager->create(m_messageRouter, true, - std::unordered_set>(), {validMessageObserver})); + ASSERT_NE( + nullptr, + m_avsConnectionManager->create( + m_messageRouter, + true, + std::unordered_set>(), + {validMessageObserver})); // create should pass with empty set of MessageObservers - ASSERT_NE(nullptr, m_avsConnectionManager->create(m_messageRouter, true, - {validConnectionStatusObserver}, std::unordered_set>())); + ASSERT_NE( + nullptr, + m_avsConnectionManager->create( + m_messageRouter, + true, + {validConnectionStatusObserver}, + std::unordered_set>())); // create should pass with valid messageRouter, ConnectionStatusObservers and MessageObservers - ASSERT_NE(nullptr, m_avsConnectionManager->create( - m_messageRouter, true, {validConnectionStatusObserver}, {validMessageObserver})); + ASSERT_NE( + nullptr, + m_avsConnectionManager->create(m_messageRouter, true, {validConnectionStatusObserver}, {validMessageObserver})); } /** @@ -139,7 +157,6 @@ TEST_F(AVSConnectionManagerTest, addConnectionStatusObserverNull) { * Test with addConnectionStatusObserver with MockConnectionStatusObserver. */ TEST_F(AVSConnectionManagerTest, addConnectionStatusObserverValid) { - EXPECT_CALL(*m_messageRouter, getConnectionStatus()).Times(1); EXPECT_CALL(*m_observer, onConnectionStatusChanged(_, _)).Times(1); m_avsConnectionManager->addConnectionStatusObserver(m_observer); } @@ -198,11 +215,11 @@ TEST_F(AVSConnectionManagerTest, setAVSEndpointTest) { EXPECT_CALL(*m_messageRouter, setAVSEndpoint(_)).Times(1); m_avsConnectionManager->setAVSEndpoint("AVSEndpoint"); } -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } diff --git a/ACL/test/Transport/Common/Common.cpp b/ACL/test/Transport/Common/Common.cpp index 746026a336..ec152392db 100644 --- a/ACL/test/Transport/Common/Common.cpp +++ b/ACL/test/Transport/Common/Common.cpp @@ -1,19 +1,16 @@ /* - * Common.cpp + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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 "Common.h" @@ -31,11 +28,12 @@ namespace test { std::string createRandomAlphabetString(int stringSize) { // First, let's efficiently generate random numbers of the appropriate size. - std::vector vec(stringSize); - std::independent_bits_engine engine; + std::vector vec(stringSize); + std::independent_bits_engine engine; std::random_device rd; - engine.seed(rd() + std::chrono::duration_cast( - std::chrono::steady_clock::now().time_since_epoch()).count()); + engine.seed( + rd() + std::chrono::duration_cast(std::chrono::steady_clock::now().time_since_epoch()) + .count()); std::generate(begin(vec), end(vec), std::ref(engine)); // Now perform a modulo, bounding them within [a,z]. @@ -44,7 +42,7 @@ std::string createRandomAlphabetString(int stringSize) { } /// Convert the data into a std::string. - char *dataBegin = reinterpret_cast(&vec[0]); + char* dataBegin = reinterpret_cast(&vec[0]); return std::string(dataBegin, stringSize); } @@ -61,6 +59,6 @@ int generateRandomNumber(int min, int max) { return dist(rng); } -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/test/Transport/Common/Common.h b/ACL/test/Transport/Common/Common.h index c26bf77e2c..96671ea18d 100644 --- a/ACL/test/Transport/Common/Common.h +++ b/ACL/test/Transport/Common/Common.h @@ -1,22 +1,20 @@ /* - * Common.h + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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. */ -#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_H_ -#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_H_ + +#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_COMMON_H_ +#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_COMMON_H_ #include @@ -41,8 +39,8 @@ std::string createRandomAlphabetString(int stringSize); */ int generateRandomNumber(int min, int max); -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_H_ +#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_COMMON_H_ diff --git a/ACL/test/Transport/Common/MimeUtils.cpp b/ACL/test/Transport/Common/MimeUtils.cpp index edd28368eb..384fc2b612 100644 --- a/ACL/test/Transport/Common/MimeUtils.cpp +++ b/ACL/test/Transport/Common/MimeUtils.cpp @@ -1,19 +1,16 @@ /* - * MimeUtils.cpp + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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. */ /// @file MimeUtils.cpp @@ -42,38 +39,57 @@ static const std::string MIME_ATTACHMENT_PREFIX_STRING = "Content-Type: applicat /// The MIME prefix for a content id header. static const std::string MIME_CONTENT_ID_PREFIX_STRING = "Content-ID: "; /// Our default timeout when validating if a MIME part was received by another object. -static const std::chrono::seconds WAIT_FOR_DIRECTIVE_TIMEOUT_IN_SECONDS = std::chrono::seconds(10); +static const std::chrono::seconds WAIT_FOR_DIRECTIVE_TIMEOUT_IN_SECONDS = std::chrono::seconds(1); + +TestMimeJsonPart::TestMimeJsonPart( + const std::string& boundaryString, + int dataSize, + std::shared_ptr messageObserver) : + m_message{createRandomAlphabetString(dataSize)}, + m_messageObserver{messageObserver} { + m_mimeString = MIME_JSON_PREFIX_STRING + MIME_NEWLINE + MIME_NEWLINE + m_message + MIME_NEWLINE + + MIME_BOUNDARY_DASHES + boundaryString; +} -TestMimeJsonPart::TestMimeJsonPart(int dataSize, std::shared_ptr messageObserver) : - m_message{createRandomAlphabetString(dataSize)}, m_messageObserver{messageObserver} { +TestMimeJsonPart::TestMimeJsonPart( + const std::string& mimeString, + const std::string& message, + std::shared_ptr messageObserver) : + m_message{message}, + m_messageObserver{messageObserver}, + m_mimeString{mimeString} { } -std::string TestMimeJsonPart::toMimeString(const std::string & boundaryString) { - return MIME_BOUNDARY_DASHES + boundaryString + MIME_NEWLINE + - MIME_JSON_PREFIX_STRING + MIME_NEWLINE + MIME_NEWLINE + - m_message + MIME_NEWLINE; +std::string TestMimeJsonPart::getMimeString() const { + return m_mimeString; } bool TestMimeJsonPart::validateMimeParsing() { return m_messageObserver->waitForDirective(m_message, WAIT_FOR_DIRECTIVE_TIMEOUT_IN_SECONDS); } -TestMimeAttachmentPart::TestMimeAttachmentPart(const std::string & contextId, const std::string contentId, - int dataSize, std::shared_ptr attachmentManager) : - m_contextId{contextId}, m_contentId{contentId}, - m_attachmentData{createRandomAlphabetString(dataSize)}, m_attachmentManager{attachmentManager} { +TestMimeAttachmentPart::TestMimeAttachmentPart( + const std::string& boundaryString, + const std::string& contextId, + const std::string contentId, + int dataSize, + std::shared_ptr attachmentManager) : + m_contextId{contextId}, + m_contentId{contentId}, + m_attachmentData{createRandomAlphabetString(dataSize)}, + m_attachmentManager{attachmentManager} { + m_mimeString = MIME_CONTENT_ID_PREFIX_STRING + m_contentId + MIME_NEWLINE + MIME_ATTACHMENT_PREFIX_STRING + + MIME_NEWLINE + MIME_NEWLINE + m_attachmentData + MIME_NEWLINE + MIME_BOUNDARY_DASHES + + boundaryString; } -std::string TestMimeAttachmentPart::toMimeString(const std::string & boundaryString) { - return MIME_BOUNDARY_DASHES + boundaryString + MIME_NEWLINE + - MIME_CONTENT_ID_PREFIX_STRING + m_contentId + MIME_NEWLINE + - MIME_ATTACHMENT_PREFIX_STRING + MIME_NEWLINE + MIME_NEWLINE + - m_attachmentData + MIME_NEWLINE; +std::string TestMimeAttachmentPart::getMimeString() const { + return m_mimeString; } bool TestMimeAttachmentPart::validateMimeParsing() { auto attachmentId = m_attachmentManager->generateAttachmentId(m_contextId, m_contentId); - auto reader = m_attachmentManager->createReader(attachmentId, AttachmentReader::Policy::BLOCKING); + auto reader = m_attachmentManager->createReader(attachmentId, avsCommon::utils::sds::ReaderPolicy::BLOCKING); std::vector result(m_attachmentData.size()); auto readStatus = InProcessAttachmentReader::ReadStatus::OK; @@ -95,19 +111,20 @@ bool TestMimeAttachmentPart::validateMimeParsing() { } std::string constructTestMimeString( - const std::vector> & mimeParts, const std::string & boundaryString) { - std::string mimeString; + const std::vector>& mimeParts, + const std::string& boundaryString) { + std::string mimeString = MIME_NEWLINE + MIME_BOUNDARY_DASHES + boundaryString; for (auto mimePart : mimeParts) { - mimeString += mimePart->toMimeString(boundaryString); + mimeString += MIME_NEWLINE + mimePart->getMimeString(); } // The final mime part needs the closing double dashes. - mimeString += MIME_BOUNDARY_DASHES + boundaryString + MIME_BOUNDARY_DASHES + MIME_NEWLINE; + mimeString += MIME_BOUNDARY_DASHES; return mimeString; } -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/test/Transport/Common/MimeUtils.h b/ACL/test/Transport/Common/MimeUtils.h index 57948c5e69..b8b3c73fef 100644 --- a/ACL/test/Transport/Common/MimeUtils.h +++ b/ACL/test/Transport/Common/MimeUtils.h @@ -1,29 +1,27 @@ /* - * MimeUtils.h.h + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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. */ -#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MIME_UTILS_H_ -#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MIME_UTILS_H_ -#include +#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_MIMEUTILS_H_ +#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_MIMEUTILS_H_ + #include +#include #include -#include #include +#include #include "TestableMessageObserver.h" @@ -37,16 +35,18 @@ namespace test { class TestMimePart { public: /** - * Convert the data of this logical MIME part to an actual string which may be used to feed a real MIME parser. + * Convert the data of this logical MIME part to an actual string which may be + * used to feed a real MIME parser. * * @param boundaryString The boundary string for the MIME text. * @return The generated MIME string. */ - virtual std::string toMimeString(const std::string & boundaryString) = 0; + virtual std::string getMimeString() const = 0; /** - * Function to validate the MIME part was parsed elsewhere and received correctly. Subclass specializations will - * expect to handle this in different ways, using different internal objects. + * Function to validate the MIME part was parsed elsewhere and received + * correctly. Subclass specializations will expect to handle this in + * different ways, using different internal objects. * * @return Whether the MIME part was parsed and received correctly. */ @@ -54,45 +54,76 @@ class TestMimePart { }; /** - * A utility class to test a JSON MIME part, which our SDK interprets as Directives. + * A utility class to test a JSON MIME part, which our SDK interprets as + * Directives. */ class TestMimeJsonPart : public TestMimePart { public: /** * Constructor. * - * @param dataSize The size of the directive string to be generated and tested. - * @param messageObserver The object which will expect to receive the directive string once parsed elsewhere. + * @param boundaryString The boundary string for the MIME text. + * @param dataSize The size of the directive string to be generated and + * tested. + * @param messageObserver The object which will expect to receive the + * directive string once parsed elsewhere. */ - TestMimeJsonPart(int dataSize, std::shared_ptr messageObserver); + TestMimeJsonPart( + const std::string& boundaryString, + int dataSize, + std::shared_ptr messageObserver); - std::string toMimeString(const std::string & boundaryString) override; + /** + * Constructor. + * + * @param mimeString The mime string for this part, including a leading + * boundary + * @param message The size of the directive string to be generated and tested. + * @param messageObserver The object which will expect to receive the + * directive string once parsed elsewhere. + */ + TestMimeJsonPart( + const std::string& mimeString, + const std::string& message, + std::shared_ptr messageObserver); + + std::string getMimeString() const override; virtual bool validateMimeParsing() override; private: /// The message text. std::string m_message; - /// The observer which will expect to receive the message at some point during testing. + /// The observer which will expect to receive the message at some point during + /// testing. std::shared_ptr m_messageObserver; + /// The mime string that should be parsed as m_message + std::string m_mimeString; }; /** - * A utility class to test a binary MIME part, which our SDK interprets as Attachments. + * A utility class to test a binary MIME part, which our SDK interprets as + * Attachments. */ class TestMimeAttachmentPart : public TestMimePart { public: /** * Constructor. * + * @param boundaryString The boundary string for the MIME text. * @param contextId The context id of the simulated Attachment. * @param contentId The content id of the simulated Attachment. * @param dataSize The size of the attachment data to be generated and tested. - * @param attachmentManager An attachment manager with which this class should interact. + * @param attachmentManager An attachment manager with which this class should + * interact. */ - TestMimeAttachmentPart(const std::string & contextId, const std::string contentId, - int dataSize, std::shared_ptr attachmentManager); + TestMimeAttachmentPart( + const std::string& boundaryString, + const std::string& contextId, + const std::string contentId, + int dataSize, + std::shared_ptr attachmentManager); - std::string toMimeString(const std::string & boundaryString) override; + std::string getMimeString() const override; virtual bool validateMimeParsing() override; private: @@ -100,25 +131,30 @@ class TestMimeAttachmentPart : public TestMimePart { std::string m_contextId; /// The content id of the simulated Attachment. std::string m_contentId; - /// The attachment data (we're using a string so it's human-readable if we need to debug this test code). + /// The attachment data (we're using a string so it's human-readable if we + /// need to debug this test code). std::string m_attachmentData; /// The AttachmentManager. std::shared_ptr m_attachmentManager; + /// The mime string that should be parsed as m_attachmentData + std::string m_mimeString; }; /** * A utility function to generate a MIME string. * - * @param mimeParts A vector of TestMimePart objects, which through polymorphism know how to generate their own - * substrings. - * @param boundaryString The boundary string to be used when generating the MIME string. + * @param mimeParts A vector of TestMimePart objects, which through polymorphism + * know how to generate their own substrings. + * @param boundaryString The boundary string to be used when generating the MIME + * string. * @return The generated MIME string. */ std::string constructTestMimeString( - const std::vector> & mimeParts, const std::string & boundaryString); + const std::vector>& mimeParts, + const std::string& boundaryString); -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MIME_UTILS_H_ +#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_MIMEUTILS_H_ diff --git a/ACL/test/Transport/Common/TestableAttachmentManager.cpp b/ACL/test/Transport/Common/TestableAttachmentManager.cpp index 99c82498dc..f2f708d816 100644 --- a/ACL/test/Transport/Common/TestableAttachmentManager.cpp +++ b/ACL/test/Transport/Common/TestableAttachmentManager.cpp @@ -1,20 +1,18 @@ /* - * TestableAttachmentManager.cpp + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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 "TestableAttachmentManager.h" #include "TestableAttachmentWriter.h" @@ -35,12 +33,12 @@ using SDSBufferType = avsCommon::utils::sds::InProcessSDSTraits::Buffer; TestableAttachmentManager::TestableAttachmentManager() : AttachmentManager{AttachmentManager::AttachmentType::IN_PROCESS}, - m_manager{std::unique_ptr( - new AttachmentManager(AttachmentManager::AttachmentType::IN_PROCESS))} { + m_manager{ + std::unique_ptr(new AttachmentManager(AttachmentManager::AttachmentType::IN_PROCESS))} { } -std::string TestableAttachmentManager::generateAttachmentId( - const std::string & contextId, const std::string & contentId) const { +std::string TestableAttachmentManager::generateAttachmentId(const std::string& contextId, const std::string& contentId) + const { return m_manager->generateAttachmentId(contextId, contentId); } @@ -48,7 +46,9 @@ bool TestableAttachmentManager::setAttachmentTimeoutMinutes(std::chrono::minutes return m_manager->setAttachmentTimeoutMinutes(timeoutMinutes); } -std::unique_ptr TestableAttachmentManager::createWriter(const std::string & attachmentId) { +std::unique_ptr TestableAttachmentManager::createWriter( + const std::string& attachmentId, + WriterPolicy policy) { // First, let's create a dummy SDS. Otherwise we need to intantiate the writer with nullptr, which is // probably not a good idea. auto buffSize = SDSType::calculateBufferSize(DUMMY_SDS_BUFFER_SIZE); @@ -59,17 +59,18 @@ std::unique_ptr TestableAttachmentManager::createWriter(const auto writer = m_manager->createWriter(attachmentId); // Now create the wrapper class. std::unique_ptr testableWriter = - std::unique_ptr(new TestableAttachmentWriter(dummySDS, std::move(writer))); + std::unique_ptr(new TestableAttachmentWriter(dummySDS, std::move(writer))); // Done! return testableWriter; } std::unique_ptr TestableAttachmentManager::createReader( - const std::string & attachmentId, AttachmentReader::Policy policy) { + const std::string& attachmentId, + ReaderPolicy policy) { return m_manager->createReader(attachmentId, policy); } -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/test/Transport/Common/TestableAttachmentManager.h b/ACL/test/Transport/Common/TestableAttachmentManager.h index 07bca753f7..2c6b5c82f3 100644 --- a/ACL/test/Transport/Common/TestableAttachmentManager.h +++ b/ACL/test/Transport/Common/TestableAttachmentManager.h @@ -1,22 +1,20 @@ /* - * TestableAttachmentManager.h + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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. */ -#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLE_ATTACHMENT_MANAGER_H_ -#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLE_ATTACHMENT_MANAGER_H_ + +#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_TESTABLEATTACHMENTMANAGER_H_ +#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_TESTABLEATTACHMENTMANAGER_H_ #include @@ -35,23 +33,25 @@ class TestableAttachmentManager : public avsCommon::avs::attachment::AttachmentM */ TestableAttachmentManager(); - std::string generateAttachmentId(const std::string & contextId, const std::string & contentId) const override; + std::string generateAttachmentId(const std::string& contextId, const std::string& contentId) const override; bool setAttachmentTimeoutMinutes(std::chrono::minutes timeoutMinutes) override; std::unique_ptr createWriter( - const std::string & attachmentId) override; + const std::string& attachmentId, + avsCommon::utils::sds::WriterPolicy policy) override; std::unique_ptr createReader( - const std::string & attachmentId, avsCommon::avs::attachment::AttachmentReader::Policy policy) override; + const std::string& attachmentId, + avsCommon::utils::sds::ReaderPolicy policy) override; private: /// The real AttachmentManager that most functionality routes to. std::unique_ptr m_manager; }; -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLE_ATTACHMENT_MANAGER_H_ +#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_TESTABLEATTACHMENTMANAGER_H_ diff --git a/ACL/test/Transport/Common/TestableAttachmentWriter.cpp b/ACL/test/Transport/Common/TestableAttachmentWriter.cpp index 1c78e566fd..15802cc818 100644 --- a/ACL/test/Transport/Common/TestableAttachmentWriter.cpp +++ b/ACL/test/Transport/Common/TestableAttachmentWriter.cpp @@ -1,20 +1,18 @@ /* - * TestableAttachmentWriter.cpp + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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 "TestableAttachmentWriter.h" #include "Common.h" @@ -25,12 +23,19 @@ namespace test { using namespace avsCommon::avs::attachment; using namespace avsCommon::utils::sds; -TestableAttachmentWriter::TestableAttachmentWriter(std::shared_ptr dummySDS, - std::unique_ptr writer) : - InProcessAttachmentWriter{dummySDS}, m_writer{std::move(writer)}, m_hasWriteBeenInvoked{false} { +TestableAttachmentWriter::TestableAttachmentWriter( + std::shared_ptr dummySDS, + std::unique_ptr writer) : + InProcessAttachmentWriter{dummySDS}, + m_writer{std::move(writer)}, + m_hasWriteBeenInvoked{false} { } -std::size_t TestableAttachmentWriter::write(const void* buf, std::size_t numBytes, WriteStatus* writeStatus) { +std::size_t TestableAttachmentWriter::write( + const void* buf, + std::size_t numBytes, + WriteStatus* writeStatus, + std::chrono::milliseconds timeout) { bool simulatePause = false; if (!m_hasWriteBeenInvoked) { @@ -54,6 +59,6 @@ void TestableAttachmentWriter::close() { m_writer->close(); } -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/test/Transport/Common/TestableAttachmentWriter.h b/ACL/test/Transport/Common/TestableAttachmentWriter.h index e09149c011..0007c76c33 100644 --- a/ACL/test/Transport/Common/TestableAttachmentWriter.h +++ b/ACL/test/Transport/Common/TestableAttachmentWriter.h @@ -1,22 +1,20 @@ /* - * TestableAttachmentWriter.h + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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. */ -#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLE_ATTACHMENT_WRITER_H_ -#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLE_ATTACHMENT_WRITER_H_ + +#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_TESTABLEATTACHMENTWRITER_H_ +#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_TESTABLEATTACHMENTWRITER_H_ #include @@ -38,10 +36,15 @@ class TestableAttachmentWriter : public avsCommon::avs::attachment::InProcessAtt * risk of this wrapper object being created with a nullptr. * @param writer The AttachmentWriter object to be wrapped by this class. */ - TestableAttachmentWriter(std::shared_ptr dummySDS, - std::unique_ptr writer); + TestableAttachmentWriter( + std::shared_ptr dummySDS, + std::unique_ptr writer); - std::size_t write(const void* buf, std::size_t numBytes, WriteStatus* writeStatus) override; + std::size_t write( + const void* buf, + std::size_t numBytes, + WriteStatus* writeStatus, + std::chrono::milliseconds timeout) override; void close() override; @@ -52,8 +55,8 @@ class TestableAttachmentWriter : public avsCommon::avs::attachment::InProcessAtt bool m_hasWriteBeenInvoked; }; -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLE_ATTACHMENT_WRITER_H_ +#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_TESTABLEATTACHMENTWRITER_H_ diff --git a/ACL/test/Transport/Common/TestableMessageObserver.cpp b/ACL/test/Transport/Common/TestableMessageObserver.cpp index 7d1cc5bb4f..b558f17951 100644 --- a/ACL/test/Transport/Common/TestableMessageObserver.cpp +++ b/ACL/test/Transport/Common/TestableMessageObserver.cpp @@ -1,21 +1,20 @@ /* - * TestableMessageObserver.cpp + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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 + #include "TestableMessageObserver.h" namespace alexaClientSDK { @@ -24,14 +23,26 @@ namespace test { using namespace avsCommon::sdkInterfaces; -void TestableMessageObserver::receive(const std::string &contextId, const std::string &message) { +/// String to identify log entries originating from this file. +static const std::string TAG("TestableMessageObserver"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +void TestableMessageObserver::receive(const std::string& contextId, const std::string& message) { + ACSDK_INFO(LX("receive").d("message", message)); std::lock_guard lock(m_mutex); m_receivedDirectives.push_back(message); m_cv.notify_all(); } bool TestableMessageObserver::waitForDirective( - const std::string &directiveMessage, const std::chrono::seconds duration) { + const std::string& directiveMessage, + const std::chrono::seconds duration) { std::unique_lock lock(m_mutex); return m_cv.wait_for(lock, duration, [this, directiveMessage]() { for (auto directive : m_receivedDirectives) { @@ -39,10 +50,11 @@ bool TestableMessageObserver::waitForDirective( return true; } } + ACSDK_WARN(LX("waitForDirectiveFailed").d("reason", "directiveNotReceived").d("expected", directiveMessage)); return false; }); } -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/test/Transport/Common/TestableMessageObserver.h b/ACL/test/Transport/Common/TestableMessageObserver.h index 8e67074b69..b14c157235 100644 --- a/ACL/test/Transport/Common/TestableMessageObserver.h +++ b/ACL/test/Transport/Common/TestableMessageObserver.h @@ -1,22 +1,20 @@ /* - * TestableMessageObserver.h + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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. */ -#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLE_MESSAGE_OBSERVER_H_ -#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLE_MESSAGE_OBSERVER_H_ + +#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_TESTABLEMESSAGEOBSERVER_H_ +#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_TESTABLEMESSAGEOBSERVER_H_ #include #include @@ -34,7 +32,7 @@ namespace test { */ class TestableMessageObserver : public avsCommon::sdkInterfaces::MessageObserverInterface { public: - void receive(const std::string &contextId, const std::string &message) override; + void receive(const std::string& contextId, const std::string& message) override; /** * A function to wait for a specific directive to be received. @@ -43,7 +41,7 @@ class TestableMessageObserver : public avsCommon::sdkInterfaces::MessageObserver * @param duraton The maximum time the caller should wait for this to occur. * @return Whether the directive was received ok within the timeout. */ - bool waitForDirective(const std::string &directiveMessage, const std::chrono::seconds duration); + bool waitForDirective(const std::string& directiveMessage, const std::chrono::seconds duration); private: /// Mutex for the cv. @@ -54,8 +52,8 @@ class TestableMessageObserver : public avsCommon::sdkInterfaces::MessageObserver std::vector m_receivedDirectives; }; -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLE_MESSAGE_OBSERVER_H_ +#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_COMMON_TESTABLEMESSAGEOBSERVER_H_ diff --git a/ACL/test/Transport/HTTP2StreamPoolTest.cpp b/ACL/test/Transport/HTTP2StreamPoolTest.cpp index a089e73f00..74f52d4e3f 100644 --- a/ACL/test/Transport/HTTP2StreamPoolTest.cpp +++ b/ACL/test/Transport/HTTP2StreamPoolTest.cpp @@ -1,7 +1,5 @@ /* - * HTTP2StreamPoolTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -25,6 +23,7 @@ #include #include #include +#include #include "Common/Common.h" #include "TestableConsumer.h" #include "MockMessageRequest.h" @@ -53,14 +52,15 @@ class HTTP2StreamPoolTest : public ::testing::Test { /// A mock message request object. std::shared_ptr m_mockMessageRequest; /// An object that is required for constructing a stream. - TestableConsumer m_testableConsumer; + std::shared_ptr m_testableConsumer; /// The actual stream we will be testing. std::shared_ptr m_testableStreamPool; }; void HTTP2StreamPoolTest::SetUp() { - AlexaClientSDKInit::initialize(std::vector()); + AlexaClientSDKInit::initialize(std::vector()); m_mockMessageRequest = std::make_shared(); + m_testableConsumer = std::make_shared(); m_testableStreamPool = std::make_shared(TEST_MAX_STREAMS, nullptr); } @@ -76,12 +76,11 @@ TEST_F(HTTP2StreamPoolTest, GetStreamSendNullPtrForMoreThanMaxStreams) { // Send TEST_MAX_STREAMS number of streams, stream should not be nullptr for (int numberOfStreamSent = 0; numberOfStreamSent < TEST_MAX_STREAMS; numberOfStreamSent++) { - stream = m_testableStreamPool->createGetStream( - TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, &m_testableConsumer); + stream = m_testableStreamPool->createGetStream(TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, m_testableConsumer); ASSERT_NE(stream, nullptr); } // Send another stream in addition to TEST_MAX_STREAMS, stream should be a nullptr - stream = m_testableStreamPool->createGetStream(TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, &m_testableConsumer); + stream = m_testableStreamPool->createGetStream(TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, m_testableConsumer); ASSERT_EQ(stream, nullptr); } @@ -90,9 +89,9 @@ TEST_F(HTTP2StreamPoolTest, GetStreamSendNullPtrForMoreThanMaxStreams) { */ TEST_F(HTTP2StreamPoolTest, initGetFails) { std::shared_ptr stream; - stream = m_testableStreamPool->createGetStream("", LIBCURL_TEST_AUTH_STRING, &m_testableConsumer); + stream = m_testableStreamPool->createGetStream("", LIBCURL_TEST_AUTH_STRING, m_testableConsumer); ASSERT_EQ(stream, nullptr); - stream = m_testableStreamPool->createGetStream(TEST_LIBCURL_URL, "", &m_testableConsumer); + stream = m_testableStreamPool->createGetStream(TEST_LIBCURL_URL, "", m_testableConsumer); ASSERT_EQ(stream, nullptr); stream = m_testableStreamPool->createGetStream(TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, nullptr); ASSERT_EQ(stream, nullptr); @@ -103,13 +102,16 @@ TEST_F(HTTP2StreamPoolTest, initGetFails) { */ TEST_F(HTTP2StreamPoolTest, initPostFails) { std::shared_ptr stream; - stream = m_testableStreamPool->createPostStream("", LIBCURL_TEST_AUTH_STRING, m_mockMessageRequest, &m_testableConsumer); + stream = + m_testableStreamPool->createPostStream("", LIBCURL_TEST_AUTH_STRING, m_mockMessageRequest, m_testableConsumer); ASSERT_EQ(stream, nullptr); - stream = m_testableStreamPool->createPostStream(TEST_LIBCURL_URL, "", m_mockMessageRequest, &m_testableConsumer); + stream = m_testableStreamPool->createPostStream(TEST_LIBCURL_URL, "", m_mockMessageRequest, m_testableConsumer); ASSERT_EQ(stream, nullptr); - stream = m_testableStreamPool->createPostStream(TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, nullptr, &m_testableConsumer); + stream = + m_testableStreamPool->createPostStream(TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, nullptr, m_testableConsumer); ASSERT_EQ(stream, nullptr); - stream = m_testableStreamPool->createPostStream(TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, m_mockMessageRequest, nullptr); + stream = m_testableStreamPool->createPostStream( + TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, m_mockMessageRequest, nullptr); ASSERT_EQ(stream, nullptr); } @@ -122,12 +124,12 @@ TEST_F(HTTP2StreamPoolTest, PostStreamSendNullPtrForMoreThanMaxStreams) { // Send TEST_MAX_STREAMS number of streams, stream should not be nullptr for (int numberOfStreamSent = 0; numberOfStreamSent < TEST_MAX_STREAMS; numberOfStreamSent++) { stream = m_testableStreamPool->createPostStream( - TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, m_mockMessageRequest, &m_testableConsumer); + TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, m_mockMessageRequest, m_testableConsumer); ASSERT_NE(stream, nullptr); } // Send another stream in addition to TEST_MAX_STREAMS, stream should be a nullptr stream = m_testableStreamPool->createPostStream( - TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, m_mockMessageRequest, &m_testableConsumer); + TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, m_mockMessageRequest, m_testableConsumer); ASSERT_EQ(stream, nullptr); } @@ -141,13 +143,13 @@ TEST_F(HTTP2StreamPoolTest, ReleaseStreamTestSendMoreThanMaxStreams) { // Send max number of streams for (int count = 0; count < TEST_MAX_STREAMS; count++) { - stream_pool.push_back(m_testableStreamPool->createGetStream( - TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, &m_testableConsumer)); + stream_pool.push_back( + m_testableStreamPool->createGetStream(TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, m_testableConsumer)); ASSERT_NE(stream_pool.back(), nullptr); } // Send one more stream, it should fail - stream_pool.push_back(m_testableStreamPool->createGetStream( - TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, &m_testableConsumer)); + stream_pool.push_back( + m_testableStreamPool->createGetStream(TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, m_testableConsumer)); ASSERT_EQ(stream_pool.back(), nullptr); stream_pool.pop_back(); @@ -159,8 +161,8 @@ TEST_F(HTTP2StreamPoolTest, ReleaseStreamTestSendMoreThanMaxStreams) { // Send more streams, now it should pass for (int count = 0; count < numOfRemovedStreams; count++) { - stream_pool.push_back(m_testableStreamPool->createGetStream( - TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, &m_testableConsumer)); + stream_pool.push_back( + m_testableStreamPool->createGetStream(TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, m_testableConsumer)); ASSERT_NE(stream_pool.back(), nullptr); } } @@ -169,14 +171,14 @@ TEST_F(HTTP2StreamPoolTest, ReleaseStreamTestSendMoreThanMaxStreams) { * Try sending nullptr on @c releaseStream after sending max number of streams, * check for failure of sending more streams. */ -TEST_F(HTTP2StreamPoolTest, ReleaseStreamTestAfterNullTest){ +TEST_F(HTTP2StreamPoolTest, ReleaseStreamTestAfterNullTest) { std::vector> stream_pool; const int numOfRemovedStreams = 2; // Send max number of streams for (int count = 0; count < TEST_MAX_STREAMS; count++) { - stream_pool.push_back(m_testableStreamPool->createGetStream( - TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, &m_testableConsumer)); + stream_pool.push_back( + m_testableStreamPool->createGetStream(TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, m_testableConsumer)); ASSERT_NE(stream_pool.back(), nullptr); } @@ -187,16 +189,16 @@ TEST_F(HTTP2StreamPoolTest, ReleaseStreamTestAfterNullTest){ // Send more streams, it should still fail for (int count = 0; count < numOfRemovedStreams; count++) { - stream_pool.push_back(m_testableStreamPool->createGetStream( - TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, &m_testableConsumer)); + stream_pool.push_back( + m_testableStreamPool->createGetStream(TEST_LIBCURL_URL, LIBCURL_TEST_AUTH_STRING, m_testableConsumer)); ASSERT_EQ(stream_pool.back(), nullptr); } } -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } diff --git a/ACL/test/Transport/HTTP2StreamTest.cpp b/ACL/test/Transport/HTTP2StreamTest.cpp index aa84b3d58c..b081c60b95 100644 --- a/ACL/test/Transport/HTTP2StreamTest.cpp +++ b/ACL/test/Transport/HTTP2StreamTest.cpp @@ -1,7 +1,5 @@ /* - * HTTP2StreamTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -71,7 +69,7 @@ class HTTP2StreamTest : public ::testing::Test { /// A mock message request object. std::shared_ptr m_mockMessageRequest; /// An object that is required for constructing a stream. - TestableConsumer m_testableConsumer; + std::shared_ptr m_testableConsumer; /// The actual stream we will be testing. std::shared_ptr m_testableStream; /// The stream to test @c readCallback function @@ -89,42 +87,43 @@ class HTTP2StreamTest : public ::testing::Test { }; void HTTP2StreamTest::SetUp() { - AlexaClientSDKInit::initialize(std::vector()); - - m_testString = createRandomAlphabetString(TEST_EXCEPTION_STRING_LENGTH); - m_dataBegin = const_cast(m_testString.c_str()); - - /// Create a SDS buffer and using a @c Writer, write a string into the buffer - size_t bufferSize = InProcessSDS::calculateBufferSize(SDS_WORDS, SDS_WORDSIZE, SDS_MAXREADERS); - auto buffer = std::make_shared(bufferSize); - std::shared_ptr stream = InProcessSDS::create(buffer, SDS_WORDSIZE, SDS_MAXREADERS); - ASSERT_NE(stream, nullptr); - - m_writer = stream->createWriter(InProcessSDS::Writer::Policy::NONBLOCKABLE); - ASSERT_NE(m_writer, nullptr); - ASSERT_EQ(TEST_EXCEPTION_STRING_LENGTH, m_writer->write(m_dataBegin, TEST_EXCEPTION_STRING_LENGTH)); - - /// Create an attachment Reader for @c m_MessageRequest - m_attachmentReader = InProcessAttachmentReader::create(AttachmentReader::Policy::NON_BLOCKING, stream); - m_MessageRequest = std::make_shared("", std::move(m_attachmentReader)); - ASSERT_NE(m_MessageRequest, nullptr); - - m_mockMessageRequest = std::make_shared(); - ASSERT_NE(m_mockMessageRequest, nullptr); - m_attachmentManager = std::make_shared(AttachmentManager::AttachmentType::IN_PROCESS); - - m_testableStream = std::make_shared(&m_testableConsumer, m_attachmentManager); - ASSERT_NE(m_testableStream, nullptr); - ASSERT_TRUE(m_testableStream->initPost(LIBCURL_TEST_URL, LIBCURL_TEST_AUTH_STRING, m_mockMessageRequest)); - - m_readTestableStream = std::make_shared(&m_testableConsumer, m_attachmentManager); - ASSERT_NE(m_readTestableStream, nullptr); - ASSERT_TRUE(m_readTestableStream->initPost(LIBCURL_TEST_URL, LIBCURL_TEST_AUTH_STRING, m_MessageRequest)); - } + AlexaClientSDKInit::initialize(std::vector()); + m_testableConsumer = std::make_shared(); + + m_testString = createRandomAlphabetString(TEST_EXCEPTION_STRING_LENGTH); + m_dataBegin = const_cast(m_testString.c_str()); + + /// Create a SDS buffer and using a @c Writer, write a string into the buffer + size_t bufferSize = InProcessSDS::calculateBufferSize(SDS_WORDS, SDS_WORDSIZE, SDS_MAXREADERS); + auto buffer = std::make_shared(bufferSize); + std::shared_ptr stream = InProcessSDS::create(buffer, SDS_WORDSIZE, SDS_MAXREADERS); + ASSERT_NE(stream, nullptr); + + m_writer = stream->createWriter(InProcessSDS::Writer::Policy::NONBLOCKABLE); + ASSERT_NE(m_writer, nullptr); + ASSERT_EQ(TEST_EXCEPTION_STRING_LENGTH, m_writer->write(m_dataBegin, TEST_EXCEPTION_STRING_LENGTH)); + + /// Create an attachment Reader for @c m_MessageRequest + m_attachmentReader = InProcessAttachmentReader::create(InProcessSDS::Reader::Policy::NONBLOCKING, stream); + m_MessageRequest = std::make_shared("", std::move(m_attachmentReader)); + ASSERT_NE(m_MessageRequest, nullptr); + + m_mockMessageRequest = std::make_shared(); + ASSERT_NE(m_mockMessageRequest, nullptr); + m_attachmentManager = std::make_shared(AttachmentManager::AttachmentType::IN_PROCESS); + + m_testableStream = std::make_shared(m_testableConsumer, m_attachmentManager); + ASSERT_NE(m_testableStream, nullptr); + ASSERT_TRUE(m_testableStream->initPost(LIBCURL_TEST_URL, LIBCURL_TEST_AUTH_STRING, m_mockMessageRequest)); + + m_readTestableStream = std::make_shared(m_testableConsumer, m_attachmentManager); + ASSERT_NE(m_readTestableStream, nullptr); + ASSERT_TRUE(m_readTestableStream->initPost(LIBCURL_TEST_URL, LIBCURL_TEST_AUTH_STRING, m_MessageRequest)); +} void HTTP2StreamTest::TearDown() { - AlexaClientSDKInit::uninitialize(); - } + AlexaClientSDKInit::uninitialize(); +} /** * Let's simulate that AVSConnectionManager->send() has been invoked, and the messageRequest object is * waiting to be notified on the response from AVS. We will invoke the stream writeCallbacks directly to @@ -134,8 +133,8 @@ void HTTP2StreamTest::TearDown() { TEST_F(HTTP2StreamTest, testExceptionReceivedSingleWrite) { HTTP2Stream::writeCallback(m_dataBegin, TEST_EXCEPTION_STRING_LENGTH, NUMBER_OF_STRINGS, m_testableStream.get()); - EXPECT_CALL(*m_mockMessageRequest, onExceptionReceived(_)).Times(1); - EXPECT_CALL(*m_mockMessageRequest, onSendCompleted(_)).Times(1); + EXPECT_CALL(*m_mockMessageRequest, exceptionReceived(_)).Times(1); + EXPECT_CALL(*m_mockMessageRequest, sendCompleted(_)).Times(1); // This simulates stream cleanup, which flushes out the parsed exception message. m_testableStream->notifyRequestObserver(); } @@ -153,7 +152,6 @@ TEST_F(HTTP2StreamTest, testExceptionReceivedMultiWrite) { char* currBuffPosition = m_dataBegin; while (numberBytesWritten < TEST_EXCEPTION_STRING_LENGTH) { - int bytesRemaining = TEST_EXCEPTION_STRING_LENGTH - numberBytesWritten; int bytesToWrite = bytesRemaining < writeQuantum ? bytesRemaining : writeQuantum; @@ -162,8 +160,8 @@ TEST_F(HTTP2StreamTest, testExceptionReceivedMultiWrite) { numberBytesWritten += bytesToWrite; } - EXPECT_CALL(*m_mockMessageRequest, onExceptionReceived(_)).Times(1); - EXPECT_CALL(*m_mockMessageRequest, onSendCompleted(_)).Times(1); + EXPECT_CALL(*m_mockMessageRequest, exceptionReceived(_)).Times(1); + EXPECT_CALL(*m_mockMessageRequest, sendCompleted(_)).Times(1); // This simulates stream cleanup, which flushes out the parsed exception message. m_testableStream->notifyRequestObserver(); @@ -173,28 +171,28 @@ TEST_F(HTTP2StreamTest, testHeaderCallback) { // Check if the length returned is as expected int headerLength = TEST_EXCEPTION_STRING_LENGTH * NUMBER_OF_STRINGS; int returnHeaderLength = HTTP2Stream::headerCallback( - m_dataBegin, TEST_EXCEPTION_STRING_LENGTH, NUMBER_OF_STRINGS, m_testableStream.get()); + m_dataBegin, TEST_EXCEPTION_STRING_LENGTH, NUMBER_OF_STRINGS, m_testableStream.get()); ASSERT_EQ(headerLength, returnHeaderLength); // Call the function with NULL HTTP2Stream and check if it fails - returnHeaderLength = HTTP2Stream::headerCallback( - m_dataBegin, TEST_EXCEPTION_STRING_LENGTH, NUMBER_OF_STRINGS, nullptr); + returnHeaderLength = + HTTP2Stream::headerCallback(m_dataBegin, TEST_EXCEPTION_STRING_LENGTH, NUMBER_OF_STRINGS, nullptr); ASSERT_EQ(0, returnHeaderLength); } TEST_F(HTTP2StreamTest, testReadCallBack) { - //Check if the bytesRead are equal to length of data written in SDS buffer + // Check if the bytesRead are equal to length of data written in SDS buffer int bytesRead = HTTP2Stream::readCallback( - m_dataBegin, TEST_EXCEPTION_STRING_LENGTH, NUMBER_OF_STRINGS, m_readTestableStream.get()); + m_dataBegin, TEST_EXCEPTION_STRING_LENGTH, NUMBER_OF_STRINGS, m_readTestableStream.get()); ASSERT_EQ(TEST_EXCEPTION_STRING_LENGTH, bytesRead); // Call the function with NULL HTTP2Stream and check if it fails bytesRead = HTTP2Stream::readCallback(m_dataBegin, TEST_EXCEPTION_STRING_LENGTH, NUMBER_OF_STRINGS, nullptr); ASSERT_EQ(0, bytesRead); } -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); -} \ No newline at end of file +} diff --git a/ACL/test/Transport/MessageRouterTest.cpp b/ACL/test/Transport/MessageRouterTest.cpp index 90b4164c21..5681b8765f 100644 --- a/ACL/test/Transport/MessageRouterTest.cpp +++ b/ACL/test/Transport/MessageRouterTest.cpp @@ -1,7 +1,5 @@ /* - * MessageRouterTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,6 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ + #include "MessageRouterTest.h" #include @@ -25,22 +24,22 @@ namespace test { using namespace alexaClientSDK::avsCommon::sdkInterfaces; TEST_F(MessageRouterTest, getConnectionStatusReturnsDisconnectedBeforeConnect) { - ASSERT_EQ(m_router.getConnectionStatus().first, ConnectionStatusObserverInterface::Status::DISCONNECTED); + ASSERT_EQ(m_router->getConnectionStatus().first, ConnectionStatusObserverInterface::Status::DISCONNECTED); } TEST_F(MessageRouterTest, getConnectionStatusReturnsPendingAfterConnectingStarts) { setupStateToPending(); - ASSERT_EQ(m_router.getConnectionStatus().first, ConnectionStatusObserverInterface::Status::PENDING); + ASSERT_EQ(m_router->getConnectionStatus().first, ConnectionStatusObserverInterface::Status::PENDING); } TEST_F(MessageRouterTest, getConnectionStatusReturnsConnectedAfterConnectionEstablished) { setupStateToConnected(); - ASSERT_EQ(m_router.getConnectionStatus().first, ConnectionStatusObserverInterface::Status::CONNECTED); + ASSERT_EQ(m_router->getConnectionStatus().first, ConnectionStatusObserverInterface::Status::CONNECTED); } TEST_F(MessageRouterTest, getConnectionStatusReturnsConnectedAfterDisconnected) { - m_router.onDisconnected(ConnectionStatusObserverInterface::ChangedReason::ACL_DISABLED); - ASSERT_EQ(m_router.getConnectionStatus().first, ConnectionStatusObserverInterface::Status::DISCONNECTED); + m_router->onDisconnected(m_mockTransport, ConnectionStatusObserverInterface::ChangedReason::ACL_DISABLED); + ASSERT_EQ(m_router->getConnectionStatus().first, ConnectionStatusObserverInterface::Status::DISCONNECTED); } TEST_F(MessageRouterTest, ensureTheMessageRouterObserverIsInformedOfConnectionPendingAfterConnect) { @@ -49,10 +48,11 @@ TEST_F(MessageRouterTest, ensureTheMessageRouterObserverIsInformedOfConnectionPe // wait for the result to propagate by scheduling a task on the client executor waitOnMessageRouter(SHORT_TIMEOUT_MS); - ASSERT_EQ(m_mockMessageRouterObserver->getLatestConnectionStatus(), - ConnectionStatusObserverInterface::Status::PENDING); - ASSERT_EQ(m_mockMessageRouterObserver->getLatestConnectionChangedReason(), - ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + ASSERT_EQ( + m_mockMessageRouterObserver->getLatestConnectionStatus(), ConnectionStatusObserverInterface::Status::PENDING); + ASSERT_EQ( + m_mockMessageRouterObserver->getLatestConnectionChangedReason(), + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); } TEST_F(MessageRouterTest, ensureTheMessageRouterObserverIsInformedOfNewConnection) { @@ -61,10 +61,11 @@ TEST_F(MessageRouterTest, ensureTheMessageRouterObserverIsInformedOfNewConnectio // wait for the result to propagate by scheduling a task on the client executor waitOnMessageRouter(SHORT_TIMEOUT_MS); - ASSERT_EQ(m_mockMessageRouterObserver->getLatestConnectionStatus(), - ConnectionStatusObserverInterface::Status::CONNECTED); - ASSERT_EQ(m_mockMessageRouterObserver->getLatestConnectionChangedReason(), - ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + ASSERT_EQ( + m_mockMessageRouterObserver->getLatestConnectionStatus(), ConnectionStatusObserverInterface::Status::CONNECTED); + ASSERT_EQ( + m_mockMessageRouterObserver->getLatestConnectionChangedReason(), + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); } TEST_F(MessageRouterTest, ensureTheMessageRouterObserverIsInformedOfTransportDisconnection) { @@ -72,28 +73,30 @@ TEST_F(MessageRouterTest, ensureTheMessageRouterObserverIsInformedOfTransportDis auto reason = ConnectionStatusObserverInterface::ChangedReason::ACL_DISABLED; disconnectMockTransport(m_mockTransport.get()); - m_router.onDisconnected(reason); + m_router->onDisconnected(m_mockTransport, reason); // wait for the result to propagate by scheduling a task on the client executor waitOnMessageRouter(SHORT_TIMEOUT_MS); - ASSERT_EQ(m_mockMessageRouterObserver->getLatestConnectionStatus(), - ConnectionStatusObserverInterface::Status::DISCONNECTED); + ASSERT_EQ( + m_mockMessageRouterObserver->getLatestConnectionStatus(), ConnectionStatusObserverInterface::Status::PENDING); ASSERT_EQ(m_mockMessageRouterObserver->getLatestConnectionChangedReason(), reason); } TEST_F(MessageRouterTest, ensureTheMessageRouterObserverIsInformedOfRouterDisconnection) { setupStateToConnected(); - m_router.disable(); + m_router->disable(); // wait for the result to propagate by scheduling a task on the client executor waitOnMessageRouter(SHORT_TIMEOUT_MS); - ASSERT_EQ(m_mockMessageRouterObserver->getLatestConnectionStatus(), - ConnectionStatusObserverInterface::Status::DISCONNECTED); - ASSERT_EQ(m_mockMessageRouterObserver->getLatestConnectionChangedReason(), - ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + ASSERT_EQ( + m_mockMessageRouterObserver->getLatestConnectionStatus(), + ConnectionStatusObserverInterface::Status::DISCONNECTED); + ASSERT_EQ( + m_mockMessageRouterObserver->getLatestConnectionChangedReason(), + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); } TEST_F(MessageRouterTest, sendIsSuccessfulWhenConnected) { @@ -105,7 +108,7 @@ TEST_F(MessageRouterTest, sendIsSuccessfulWhenConnected) { EXPECT_CALL(*m_mockTransport, send(messageRequest)).Times(1); // TODO: ACSDK-421: Revert this to use send(). - m_router.sendMessage(messageRequest); + m_router->sendMessage(messageRequest); // Since we connected we will be disconnected when the router is destroyed EXPECT_CALL(*m_mockTransport, disconnect()).Times(AnyNumber()); @@ -118,13 +121,13 @@ TEST_F(MessageRouterTest, sendFailsWhenDisconnected) { EXPECT_CALL(*m_mockTransport, send(messageRequest)).Times(0); // TODO: ACSDK-421: Revert this to use send(). - m_router.sendMessage(messageRequest); + m_router->sendMessage(messageRequest); } TEST_F(MessageRouterTest, sendFailsWhenPending) { // Ensure a transport exists initializeMockTransport(m_mockTransport.get()); - m_router.enable(); + m_router->enable(); auto messageRequest = createMessageRequest(); @@ -132,7 +135,7 @@ TEST_F(MessageRouterTest, sendFailsWhenPending) { EXPECT_CALL(*m_mockTransport, send(messageRequest)).Times(1); // TODO: ACSDK-421: Revert this to use send(). - m_router.sendMessage(messageRequest); + m_router->sendMessage(messageRequest); waitOnMessageRouter(SHORT_TIMEOUT_MS); } @@ -141,22 +144,22 @@ TEST_F(MessageRouterTest, sendMessageDoesNotSendAfterDisconnected) { auto messageRequest = createMessageRequest(); - EXPECT_CALL(*m_mockTransport, disconnect()).Times(AtLeast(1)); - m_router.disable(); + EXPECT_CALL(*m_mockTransport, doShutdown()).Times(AtLeast(1)); + m_router->disable(); // Expect to have the message sent to the transport EXPECT_CALL(*m_mockTransport, send(messageRequest)).Times(0); // TODO: ACSDK-421: Revert this to use send(). - m_router.sendMessage(messageRequest); + m_router->sendMessage(messageRequest); } TEST_F(MessageRouterTest, disconnectDisconnectsConnectedTransports) { setupStateToConnected(); - EXPECT_CALL(*m_mockTransport, disconnect()).Times(1); + EXPECT_CALL(*m_mockTransport, doShutdown()).Times(1); - m_router.disable(); + m_router->disable(); } TEST_F(MessageRouterTest, serverSideDisconnectCreatesANewTransport) { @@ -172,32 +175,34 @@ TEST_F(MessageRouterTest, serverSideDisconnectCreatesANewTransport) { auto newTransport = std::make_shared>(); initializeMockTransport(newTransport.get()); - m_router.setMockTransport(newTransport); + m_router->setMockTransport(newTransport); // Reset the MessageRouterObserver, there should be no interactions with the observer - m_router.onServerSideDisconnect(); + m_router->onServerSideDisconnect(oldTransport); waitOnMessageRouter(SHORT_TIMEOUT_MS); - ASSERT_EQ(m_mockMessageRouterObserver->getLatestConnectionStatus(), - ConnectionStatusObserverInterface::Status::PENDING); - ASSERT_EQ(m_mockMessageRouterObserver->getLatestConnectionChangedReason(), - ConnectionStatusObserverInterface::ChangedReason::SERVER_SIDE_DISCONNECT); + ASSERT_EQ( + m_mockMessageRouterObserver->getLatestConnectionStatus(), ConnectionStatusObserverInterface::Status::PENDING); + ASSERT_EQ( + m_mockMessageRouterObserver->getLatestConnectionChangedReason(), + ConnectionStatusObserverInterface::ChangedReason::SERVER_SIDE_DISCONNECT); // mock the new transports connection connectMockTransport(newTransport.get()); - m_router.onConnected(); + m_router->onConnected(newTransport); waitOnMessageRouter(SHORT_TIMEOUT_MS); - ASSERT_EQ(m_mockMessageRouterObserver->getLatestConnectionStatus(), - ConnectionStatusObserverInterface::Status::CONNECTED); - ASSERT_EQ(m_mockMessageRouterObserver->getLatestConnectionChangedReason(), - ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + ASSERT_EQ( + m_mockMessageRouterObserver->getLatestConnectionStatus(), ConnectionStatusObserverInterface::Status::CONNECTED); + ASSERT_EQ( + m_mockMessageRouterObserver->getLatestConnectionChangedReason(), + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); // mock the old transport disconnecting completely disconnectMockTransport(oldTransport.get()); - m_router.onDisconnected(ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + m_router->onDisconnected(oldTransport, ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); auto messageRequest = createMessageRequest(); @@ -206,7 +211,7 @@ TEST_F(MessageRouterTest, serverSideDisconnectCreatesANewTransport) { EXPECT_CALL(*newTransport.get(), send(messageRequest)).Times(1); // TODO: ACSDK-421: Revert this to use send(). - m_router.sendMessage(messageRequest); + m_router->sendMessage(messageRequest); waitOnMessageRouter(SHORT_TIMEOUT_MS); } @@ -216,7 +221,7 @@ TEST_F(MessageRouterTest, serverSideDisconnectCreatesANewTransport) { */ TEST_F(MessageRouterTest, onReceiveTest) { m_mockMessageRouterObserver->reset(); - m_router.consumeMessage(CONTEXT_ID, MESSAGE); + m_router->consumeMessage(CONTEXT_ID, MESSAGE); waitOnMessageRouter(SHORT_TIMEOUT_MS); ASSERT_TRUE(m_mockMessageRouterObserver->wasNotifiedOfReceive()); ASSERT_EQ(CONTEXT_ID, m_mockMessageRouterObserver->getAttachmentContextId()); @@ -233,6 +238,6 @@ TEST_F(MessageRouterTest, onConnectionStatusChangedTest) { waitOnMessageRouter(SHORT_TIMEOUT_MS); ASSERT_TRUE(m_mockMessageRouterObserver->wasNotifiedOfStatusChange()); } -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/test/Transport/MessageRouterTest.h b/ACL/test/Transport/MessageRouterTest.h index 5fd70356b3..91f564485d 100644 --- a/ACL/test/Transport/MessageRouterTest.h +++ b/ACL/test/Transport/MessageRouterTest.h @@ -1,7 +1,5 @@ /* - * MessageRouterTest.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,8 +12,9 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_ABSTRACT_MESSAGE_ROUTER_TEST_H_ -#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_ABSTRACT_MESSAGE_ROUTER_TEST_H_ + +#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MESSAGEROUTERTEST_H_ +#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MESSAGEROUTERTEST_H_ #include #include @@ -46,12 +45,12 @@ using namespace ::testing; class TestableMessageRouter : public MessageRouter { public: TestableMessageRouter( - std::shared_ptr authDelegate, - std::shared_ptr attachmentManager, - std::shared_ptr transport, - const std::string& avsEndpoint) - : MessageRouter(authDelegate, attachmentManager, avsEndpoint), - m_mockTransport{transport} { + std::shared_ptr authDelegate, + std::shared_ptr attachmentManager, + std::shared_ptr transport, + const std::string& avsEndpoint) : + MessageRouter(authDelegate, attachmentManager, avsEndpoint), + m_mockTransport{transport} { } void setMockTransport(std::shared_ptr transport) { @@ -65,18 +64,18 @@ class TestableMessageRouter : public MessageRouter { * @return Whether the underlying executor is ready or not. */ bool isExecutorReady(std::chrono::milliseconds millisecondsToWait) { - auto future = m_executor.submit([]() {;}); + auto future = m_executor.submit([]() { ; }); auto status = future.wait_for(millisecondsToWait); return status == std::future_status::ready; } private: std::shared_ptr createTransport( - std::shared_ptr authDelegate, - std::shared_ptr attachmentManager, - const std::string& avsEndpoint, - MessageConsumerInterface* messageConsumerInterface, - TransportObserverInterface* transportObserverInterface) override { + std::shared_ptr authDelegate, + std::shared_ptr attachmentManager, + const std::string& avsEndpoint, + std::shared_ptr messageConsumerInterface, + std::shared_ptr transportObserverInterface) override { return m_mockTransport; } @@ -87,17 +86,17 @@ class MessageRouterTest : public ::testing::Test { public: const std::string AVS_ENDPOINT = "AVS_ENDPOINT"; - MessageRouterTest() - : + MessageRouterTest() : m_mockMessageRouterObserver{std::make_shared()}, m_mockAuthDelegate{std::make_shared()}, m_attachmentManager{std::make_shared(AttachmentManager::AttachmentType::IN_PROCESS)}, m_mockTransport{std::make_shared>()}, - m_router{m_mockAuthDelegate, - m_attachmentManager, - m_mockTransport, - AVS_ENDPOINT} { - m_router.setObserver(m_mockMessageRouterObserver); + m_router{std::make_shared( + m_mockAuthDelegate, + m_attachmentManager, + m_mockTransport, + AVS_ENDPOINT)} { + m_router->setObserver(m_mockMessageRouterObserver); } void TearDown() { @@ -109,18 +108,18 @@ class MessageRouterTest : public ::testing::Test { return std::make_shared(MESSAGE, nullptr); } void waitOnMessageRouter(std::chrono::milliseconds millisecondsToWait) { - auto status = m_router.isExecutorReady(millisecondsToWait); + auto status = m_router->isExecutorReady(millisecondsToWait); ASSERT_EQ(true, status); } void setupStateToPending() { initializeMockTransport(m_mockTransport.get()); - m_router.enable(); + m_router->enable(); } void setupStateToConnected() { setupStateToPending(); - m_router.onConnected(); + m_router->onConnected(m_mockTransport); connectMockTransport(m_mockTransport.get()); } @@ -134,7 +133,8 @@ class MessageRouterTest : public ::testing::Test { std::shared_ptr m_mockAuthDelegate; std::shared_ptr m_attachmentManager; std::shared_ptr> m_mockTransport; - TestableMessageRouter m_router; + std::shared_ptr m_router; + // TestableMessageRouter m_router; }; const std::string MessageRouterTest::MESSAGE = "123456789"; @@ -142,8 +142,8 @@ const int MessageRouterTest::MESSAGE_LENGTH = 10; const std::chrono::milliseconds MessageRouterTest::SHORT_TIMEOUT_MS = std::chrono::milliseconds(1000); const std::string MessageRouterTest::CONTEXT_ID = "contextIdString"; -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_ABSTRACT_MESSAGE_ROUTER_TEST_H_ +#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MESSAGEROUTERTEST_H_ diff --git a/ACL/test/Transport/MimeParserFuzzTest.cpp b/ACL/test/Transport/MimeParserFuzzTest.cpp new file mode 100644 index 0000000000..feefaaccab --- /dev/null +++ b/ACL/test/Transport/MimeParserFuzzTest.cpp @@ -0,0 +1,267 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/// @file MimeParserFuzzTest.cpp + +#include +#include +#include + +#include +#include + +#include "ACL/Transport/MessageConsumerInterface.h" +#include "ACL/Transport/HTTP2Stream.h" + +#include +#include +#include "AVSCommon/AVS/Attachment/InProcessAttachment.h" +#include +#include + +#include "Common/TestableAttachmentManager.h" +#include "Common/Common.h" +#include "Common/MimeUtils.h" +#include "Common/TestableMessageObserver.h" + +#include "MockMessageRequest.h" +#include "TestableConsumer.h" + +namespace alexaClientSDK { +namespace acl { +namespace test { + +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::avs::attachment; + +/// String to identify log entries originating from this file. +static const std::string TAG("MimeParserFuzzTest"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/// The number of feed() calls to be made in @c MimeParserFuzzTest::feed() +static const int FEED_COUNT = 0x100; +/// Max pseudo-random buffer size to pass to @c feed() (large enough to assure we trigger attachment buffer full) +static const size_t MAX_FEED_SIZE = (InProcessAttachment::SDS_BUFFER_DEFAULT_SIZE_IN_BYTES / FEED_COUNT) * 4; +/// Max buffer size to read from the attachment reader (small enough trigger multiple reads per feed) +static const size_t MAX_READ_SIZE = MAX_FEED_SIZE / 8; +/// Consistent seed (for repeatable tests) with which to generate pseudo-random bytes. +static const unsigned int BYTES_SEED = 1; +/// Consistent seed (for repeatable tests) with which to generate pseudo-random feed sizes. +static const unsigned int FEED_SIZE_SEED = 2; +/// Consistent but different seed (for repeatable tests) with which to generate pseudo-random read sizes. +static const unsigned int READ_SIZE_SEED = FEED_SIZE_SEED + 1; +/// Content ID for mime part. +static const std::string CONTENT_ID = "CONTENT_ID"; +/// Context ID for generating attachment ID. +static const std::string CONTEXT_ID = "CONTEXT_ID"; +/// CR,LF to separate lines in mime headers and boundaries. +static const std::string CRLF = "\r\n"; +/// Dashes used as a prefix or suffix to mime boundaries. +static const std::string DASHES = "--"; +/// Mime Boundary string (without CR,LF or dashes). +static const std::string BOUNDARY = "BoundaryBoundaryBoundaryBoundaryBoundaryBoundaryBoundary"; +/// Mime prefix to our attachment. +static const std::string ATTACHMENT_PREFIX = CRLF + DASHES + BOUNDARY + CRLF + "Content-ID: " + CONTENT_ID + CRLF + + "Content-Type: application/octet-stream" + CRLF + CRLF; +/// Mime suffix terminating our attachment. +static const std::string ATTACHMENT_SUFFIX = CRLF + DASHES + BOUNDARY + DASHES; + +/** + * Class to generate consistent pseudo-random byte stream. + */ +class ByteGenerator { +public: + ByteGenerator(); + + /** + * Generate the next set of bytes in the stream. + * + * @param[out] buffer The buffer in which to place the generated bytes. + * @param size The number of bytes to generate. + */ + void generateBytes(std::vector* buffer, size_t size); + +private: + /// The underlying random byte generator. + std::independent_bits_engine m_engine; +}; + +ByteGenerator::ByteGenerator() { + m_engine.seed(BYTES_SEED); +} + +void ByteGenerator::generateBytes(std::vector* buffer, size_t size) { + for (size_t ix = 0; ix < size; ix++) { + (*buffer)[ix] = m_engine(); + } +} + +/** + * Our GTest class. + */ +class MimeParserFuzzTest : public ::testing::Test { +public: + /** + * Construct the objects we will use across tests. + */ + void SetUp() override; + + /** + * Feed a pseudo-random stream of bytes to the mime parser, making a number of + * calls with pseudo-random sizes. + */ + void feed(); + + /** + * Read the attachment the mime parser is rendering to, requesting a pseudo-random + * number of bytes with each read. + */ + void read(); + + /// The AttachmentManager. + std::shared_ptr m_attachmentManager; + /// The MimeParser which we will be primarily testing. + std::shared_ptr m_parser; + /// Flag to indicate the test has failed and loops should exit. + std::atomic m_failed; +}; + +void MimeParserFuzzTest::SetUp() { + m_attachmentManager = std::make_shared(AttachmentManager::AttachmentType::IN_PROCESS); + auto testableConsumer = std::make_shared(); + testableConsumer->setMessageObserver(std::make_shared()); + m_parser = std::make_shared(testableConsumer, m_attachmentManager); + m_parser->setAttachmentContextId(CONTEXT_ID); + m_parser->setBoundaryString(BOUNDARY); + m_failed = false; +} + +void MimeParserFuzzTest::feed() { + m_parser->feed(const_cast(ATTACHMENT_PREFIX.c_str()), ATTACHMENT_PREFIX.size()); + + ByteGenerator feedBytesSource; + + std::default_random_engine feedSizeGenerator; + feedSizeGenerator.seed(FEED_SIZE_SEED); + std::uniform_int_distribution feedSizeDistribution(1, MAX_FEED_SIZE); + auto feedSizeSource = std::bind(feedSizeDistribution, feedSizeGenerator); + + std::vector feedBuffer(MAX_FEED_SIZE); + + size_t totalBytesFed = 0; + int incompleteCount = 0; + for (int ix = 0; !m_failed && ix < FEED_COUNT; ix++) { + auto feedSize = feedSizeSource(); + feedBytesSource.generateBytes(&feedBuffer, feedSize); + while (true) { + ACSDK_DEBUG9(LX("callingFeed").d("totalBytesFed", totalBytesFed).d("feedSize", feedSize)); + auto status = m_parser->feed((char*)(&feedBuffer[0]), feedSize); + if (MimeParser::DataParsedStatus::OK == status) { + totalBytesFed += feedSize; + break; + } else if (MimeParser::DataParsedStatus::INCOMPLETE == status) { + ACSDK_DEBUG9(LX("feedIncomplete").d("action", "waitAndReDrive")); + ++incompleteCount; + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } else { + ASSERT_NE(status, status); + } + } + } + + m_parser->feed(const_cast(ATTACHMENT_SUFFIX.c_str()), ATTACHMENT_SUFFIX.size()); + + // Make sure there were enough INCOMPLETE return statuses. + ACSDK_DEBUG9(LX("doneFeeding").d("incompleteCount", incompleteCount).d("FEED_COUNT", FEED_COUNT)); + ASSERT_GT(incompleteCount, FEED_COUNT); +} + +void MimeParserFuzzTest::read() { + ByteGenerator verifyBytesSource; + + std::default_random_engine readSizeGenerator; + readSizeGenerator.seed(READ_SIZE_SEED); + std::uniform_int_distribution readSizeDistribution(1, MAX_READ_SIZE); + auto readSizeSource = std::bind(readSizeDistribution, readSizeGenerator); + + auto attachmentId = m_attachmentManager->generateAttachmentId(CONTEXT_ID, CONTENT_ID); + auto reader = m_attachmentManager->createReader(attachmentId, avsCommon::utils::sds::ReaderPolicy::BLOCKING); + + std::vector readBuffer(MAX_READ_SIZE); + std::vector verifyBuffer(MAX_READ_SIZE); + size_t totalBytesRead = 0; + + while (true) { + // Delay reads so that AnotherMimeParserTest::feed() blocks on a full attachment buffer + // in a reliable way. This makes the test results consistent run to run. + std::this_thread::sleep_for(std::chrono::milliseconds(5)); + + auto readSizeIn = readSizeSource(); + auto readStatus = AttachmentReader::ReadStatus::OK; + ACSDK_DEBUG9(LX("callingRead").d("totalBytesRead", totalBytesRead).d("readSizeIn", readSizeIn)); + auto readSizeOut = reader->read(readBuffer.data(), readSizeIn, &readStatus); + if (readSizeOut != 0) { + ACSDK_DEBUG9(LX("readReturned").d("readSizeOut", readSizeOut)); + verifyBytesSource.generateBytes(&verifyBuffer, readSizeOut); + for (size_t ix = 0; ix < readSizeOut; ix++) { + auto good = readBuffer[ix] == verifyBuffer[ix]; + if (!good) { + m_failed = true; + ASSERT_EQ(readBuffer[ix], verifyBuffer[ix]) << "UnexpectedByte at: " << totalBytesRead + ix; + } + } + totalBytesRead += readSizeOut; + } + + switch (readStatus) { + case AttachmentReader::ReadStatus::OK: + break; + + case AttachmentReader::ReadStatus::CLOSED: + ACSDK_DEBUG9(LX("readClosed")); + return; + + case AttachmentReader::ReadStatus::OK_WOULDBLOCK: + case AttachmentReader::ReadStatus::OK_TIMEDOUT: + case AttachmentReader::ReadStatus::ERROR_OVERRUN: + case AttachmentReader::ReadStatus::ERROR_BYTES_LESS_THAN_WORD_SIZE: + case AttachmentReader::ReadStatus::ERROR_INTERNAL: + ASSERT_NE(readStatus, readStatus); + break; + } + } +} + +/** + * Exercise MimeParser's re-drive, parsing, and attachment buffering by feeding in a large attachment + * consisting of pseudo-random bytes sent in pseudo-random sized chunks. At the same time, read the + * resulting attachment in pseudo-random sized requests. Expect that the data read matches the data + * that was fed. + */ +TEST_F(MimeParserFuzzTest, testRandomFeedAndReadSizesOfRandomData) { + auto readThread = std::thread(&MimeParserFuzzTest::read, this); + feed(); + readThread.join(); +} + +} // namespace test +} // namespace acl +} // namespace alexaClientSDK diff --git a/ACL/test/Transport/MimeParserTest.cpp b/ACL/test/Transport/MimeParserTest.cpp index c433a20c76..26d5e93435 100644 --- a/ACL/test/Transport/MimeParserTest.cpp +++ b/ACL/test/Transport/MimeParserTest.cpp @@ -1,7 +1,5 @@ /* - * MimeParserTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -22,18 +20,19 @@ #include -#include -#include #include "ACL/Transport/MessageConsumerInterface.h" +#include #include +#include +#include #include "Common/TestableAttachmentManager.h" -#include "TestableConsumer.h" -#include "MockMessageRequest.h" #include "Common/Common.h" #include "Common/MimeUtils.h" #include "Common/TestableMessageObserver.h" +#include "MockMessageRequest.h" +#include "TestableConsumer.h" namespace alexaClientSDK { namespace acl { @@ -42,11 +41,23 @@ namespace test { using namespace avsCommon::sdkInterfaces; using namespace avsCommon::avs::attachment; +/// String to identify log entries originating from this file. +static const std::string TAG("TestableMessageObserver"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + /// The size of the data for directive and attachments we will use. static const int TEST_DATA_SIZE = 100; -/// The number of segments that the MIME string will be broken into during simple testing. +/// The number of segments that the MIME string will be broken into during +/// simple testing. static const int TEST_MULTI_WRITE_ITERATIONS = 4; -/// An upper bound that the feedParser logic may use to ensure we don't loop infinitely. +/// An upper bound that the feedParser logic may use to ensure we don't loop +/// infinitely. static const int TEST_MULTI_MAX_ITERATIONS = 100; /// A test context id. static const std::string TEST_CONTEXT_ID = "TEST_CONTEXT_ID"; @@ -58,6 +69,45 @@ static const std::string TEST_CONTENT_ID_02 = "TEST_CONTENT_ID_02"; static const std::string TEST_CONTENT_ID_03 = "TEST_CONTENT_ID_03"; /// A test boundary string, copied from a real interaction with AVS. static const std::string MIME_TEST_BOUNDARY_STRING = "84109348-943b-4446-85e6-e73eda9fac43"; +/// The newline characters that MIME parsers expect. +static const std::string MIME_NEWLINE = "\r\n"; +/// The double dashes which may occur before and after a boundary string. +static const std::string MIME_BOUNDARY_DASHES = "--"; +/// The test boundary string with the preceding dashes. +static const std::string BOUNDARY = MIME_BOUNDARY_DASHES + MIME_TEST_BOUNDARY_STRING; +/// A complete boundary, including the CRLF prefix +static const std::string BOUNDARY_LINE = MIME_NEWLINE + BOUNDARY; +/// Header line without prefix or suffix CRLF. +static const std::string HEADER_LINE = "Content-Type: application/json"; +/// JSON payload. +static const std::string TEST_MESSAGE = + "{\"directive\":{\"header\":{\"namespace\":\"SpeechRecognizer\",\"name\":" + "\"StopCapture\",\"messageId\":\"4e5612af-e05c-4611-8910-1e23f47ffb41\"}," + "\"payload\":{}}}"; + +// The following *_LINES definitions are raw mime text for various test parts. Each one assumes that +// it will be prefixed by a boundary and a CRLF. These get concatenated by constructTestMimeString() +// which provides an initiating boundary and CRLF, and which also inserts a CRLF between each part +// that is added. Leaving out the terminal CRLFs here allows constructTestMimeString() to append a +// pair of dashes to the boundary terminating the last part. Those final dashes are the standard +// syntax for the end of a sequence of mime parts. + +/// Normal section with header, test message and terminating boundary +/// @note assumes previous terminating boundary and CRLF in the mime stream that this is appended to. +static const std::string NORMAL_LINES = HEADER_LINE + MIME_NEWLINE + MIME_NEWLINE + TEST_MESSAGE + BOUNDARY_LINE; +/// Normal section preceded by a duplicate boundary (one CRLF between boundaries) +/// @note assumes previous terminating boundary and CRLF in the mime stream that this is appended to. +static const std::string DUPLICATE_BOUNDARY_LINES = BOUNDARY + MIME_NEWLINE + NORMAL_LINES; +/// Normal section preceded by a duplicate boundary and CRLF (two CRLFs between boundaries) +/// @note assumes previous terminating boundary and CRLF in the mime stream that this is appended to. +static const std::string CRLF_DUPLICATE_BOUNDARY_LINES = BOUNDARY_LINE + MIME_NEWLINE + NORMAL_LINES; +/// Normal section preceded by triplicate boundaries (one CRLF between boundaries) +/// @note assumes previous terminating boundary and CRLF in the mime stream that this is appended to. +static const std::string TRIPLICATE_BOUNDARY_LINES = BOUNDARY + MIME_NEWLINE + BOUNDARY + MIME_NEWLINE + NORMAL_LINES; +/// Normal section preceded by triplicate boundaries with trailing CRLF (two CRLFs between boundaries) +/// @note assumes previous terminating boundary and CRLF in the mime stream that this is appended to. +static const std::string CRLF_TRIPLICATE_BOUNDARY_LINES = + BOUNDARY_LINE + MIME_NEWLINE + BOUNDARY_LINE + MIME_NEWLINE + NORMAL_LINES; /** * Our GTest class. @@ -68,28 +118,31 @@ class MimeParserTest : public ::testing::Test { * Construct the objects we will use across tests. */ void SetUp() override { - m_attachmentManager = std::make_shared(); m_testableMessageObserver = std::make_shared(); m_testableConsumer = std::make_shared(); m_testableConsumer->setMessageObserver(m_testableMessageObserver); - m_parser = std::make_shared(m_testableConsumer.get(), m_attachmentManager, TEST_CONTEXT_ID); + m_parser = std::make_shared(m_testableConsumer, m_attachmentManager); + m_parser->setAttachmentContextId(TEST_CONTEXT_ID); m_parser->setBoundaryString(MIME_TEST_BOUNDARY_STRING); } /** - * A utility function to feed data into our MimeParser object. A result of this function is that the MimeParser - * object will route Directives and Attachments to the appropriate objects as they are broken out of the + * A utility function to feed data into our MimeParser object. A result of + * this function is that the MimeParser object will route Directives and + * Attachments to the appropriate objects as they are broken out of the * aggregate MIME string. * * @param data The MIME string to be parsed. - * @param numberIterations The number of segments the MIME string is to be broken into, and then fed to the parser. + * @param numberIterations The number of segments the MIME string is to be + * broken into, and then fed to the parser. */ - void feedParser(const std::string & data, int numberIterations = 1) { - // Here we're simulating an ACL stream. We've got a mime string that we will feed to the mime parser in chunks. - // If any chunk fails (due to simulated attachment failing to write), we will re-drive it. + void feedParser(const std::string& data, int numberIterations = 1) { + // Here we're simulating an ACL stream. We've got a mime string that we + // will feed to the mime parser in chunks. If any chunk fails (due to + // simulated attachment failing to write), we will re-drive it. int writeQuantum = data.length(); if (numberIterations > 1) { @@ -103,7 +156,7 @@ class MimeParserTest : public ::testing::Test { int bytesToFeed = bytesRemaining < writeQuantum ? bytesRemaining : writeQuantum; if (MimeParser::DataParsedStatus::OK == - m_parser->feed(const_cast(&(data.c_str()[numberBytesWritten])), bytesToFeed)) { + m_parser->feed(const_cast(&(data.c_str()[numberBytesWritten])), bytesToFeed)) { numberBytesWritten += bytesToFeed; } @@ -112,7 +165,8 @@ class MimeParserTest : public ::testing::Test { } /** - * A utility function to validate that each MimePart we're tracking was received ok at its expected destination. + * A utility function to validate that each MimePart we're tracking was + * received ok at its expected destination. */ void validateMimePartsParsedOk() { for (auto mimePart : m_mimeParts) { @@ -133,10 +187,12 @@ class MimeParserTest : public ::testing::Test { }; /** - * Test feeding a MIME string to the parser in a single pass which only contains a JSON message. + * Test feeding a MIME string to the parser in a single pass which only contains + * a JSON message. */ TEST_F(MimeParserTest, testDirectiveReceivedSingleWrite) { - m_mimeParts.push_back(std::make_shared(TEST_DATA_SIZE, m_testableMessageObserver)); + m_mimeParts.push_back( + std::make_shared(MIME_TEST_BOUNDARY_STRING, TEST_DATA_SIZE, m_testableMessageObserver)); auto mimeString = constructTestMimeString(m_mimeParts, MIME_TEST_BOUNDARY_STRING); feedParser(mimeString); @@ -145,10 +201,12 @@ TEST_F(MimeParserTest, testDirectiveReceivedSingleWrite) { } /** - * Test feeding a MIME string to the parser in multiple passes which only contains a JSON message. + * Test feeding a MIME string to the parser in multiple passes which only + * contains a JSON message. */ TEST_F(MimeParserTest, testDirectiveReceivedMultiWrite) { - m_mimeParts.push_back(std::make_shared(TEST_DATA_SIZE, m_testableMessageObserver)); + m_mimeParts.push_back( + std::make_shared(MIME_TEST_BOUNDARY_STRING, TEST_DATA_SIZE, m_testableMessageObserver)); auto mimeString = constructTestMimeString(m_mimeParts, MIME_TEST_BOUNDARY_STRING); feedParser(mimeString, TEST_MULTI_WRITE_ITERATIONS); @@ -157,11 +215,12 @@ TEST_F(MimeParserTest, testDirectiveReceivedMultiWrite) { } /** - * Test feeding a MIME string to the parser in a single pass which only contains a binary attachment message. + * Test feeding a MIME string to the parser in a single pass which only contains + * a binary attachment message. */ TEST_F(MimeParserTest, testAttachmentReceivedSingleWrite) { m_mimeParts.push_back(std::make_shared( - TEST_CONTEXT_ID, TEST_CONTENT_ID_01, TEST_DATA_SIZE, m_attachmentManager)); + MIME_TEST_BOUNDARY_STRING, TEST_CONTEXT_ID, TEST_CONTENT_ID_01, TEST_DATA_SIZE, m_attachmentManager)); auto mimeString = constructTestMimeString(m_mimeParts, MIME_TEST_BOUNDARY_STRING); feedParser(mimeString); @@ -170,11 +229,12 @@ TEST_F(MimeParserTest, testAttachmentReceivedSingleWrite) { } /** - * Test feeding a MIME string to the parser in multiple passes which only contains a binary attachment message. + * Test feeding a MIME string to the parser in multiple passes which only + * contains a binary attachment message. */ TEST_F(MimeParserTest, testAttachmentReceivedMultiWrite) { m_mimeParts.push_back(std::make_shared( - TEST_CONTEXT_ID, TEST_CONTENT_ID_01, TEST_DATA_SIZE, m_attachmentManager)); + MIME_TEST_BOUNDARY_STRING, TEST_CONTEXT_ID, TEST_CONTENT_ID_01, TEST_DATA_SIZE, m_attachmentManager)); auto mimeString = constructTestMimeString(m_mimeParts, MIME_TEST_BOUNDARY_STRING); feedParser(mimeString, TEST_MULTI_WRITE_ITERATIONS); @@ -183,13 +243,14 @@ TEST_F(MimeParserTest, testAttachmentReceivedMultiWrite) { } /** - * Test feeding a MIME string to the parser in a single pass which contains a JSON message followed by - * a binary attachment message. + * Test feeding a MIME string to the parser in a single pass which contains a + * JSON message followed by a binary attachment message. */ TEST_F(MimeParserTest, testDirectiveAndAttachmentReceivedSingleWrite) { - m_mimeParts.push_back(std::make_shared(TEST_DATA_SIZE, m_testableMessageObserver)); + m_mimeParts.push_back( + std::make_shared(MIME_TEST_BOUNDARY_STRING, TEST_DATA_SIZE, m_testableMessageObserver)); m_mimeParts.push_back(std::make_shared( - TEST_CONTEXT_ID, TEST_CONTENT_ID_01, TEST_DATA_SIZE, m_attachmentManager)); + MIME_TEST_BOUNDARY_STRING, TEST_CONTEXT_ID, TEST_CONTENT_ID_01, TEST_DATA_SIZE, m_attachmentManager)); auto mimeString = constructTestMimeString(m_mimeParts, MIME_TEST_BOUNDARY_STRING); feedParser(mimeString); @@ -198,25 +259,66 @@ TEST_F(MimeParserTest, testDirectiveAndAttachmentReceivedSingleWrite) { } /** - * Test feeding a MIME string to the parser in multiple passes which contains a JSON message followed by - * a binary attachment message. + * Test feeding a MIME string to the parser in multiple passes which contains a + * JSON message followed by a binary attachment message. */ TEST_F(MimeParserTest, testDirectiveAndAttachmentReceivedMultiWrite) { - m_mimeParts.push_back(std::make_shared(TEST_DATA_SIZE, m_testableMessageObserver)); + m_mimeParts.push_back( + std::make_shared(MIME_TEST_BOUNDARY_STRING, TEST_DATA_SIZE, m_testableMessageObserver)); m_mimeParts.push_back(std::make_shared( - TEST_CONTEXT_ID, TEST_CONTENT_ID_01, TEST_DATA_SIZE, m_attachmentManager)); + MIME_TEST_BOUNDARY_STRING, TEST_CONTEXT_ID, TEST_CONTENT_ID_01, TEST_DATA_SIZE, m_attachmentManager)); + + auto mimeString = constructTestMimeString(m_mimeParts, MIME_TEST_BOUNDARY_STRING); + feedParser(mimeString, TEST_MULTI_WRITE_ITERATIONS); + + validateMimePartsParsedOk(); +} + +/** + * Test feeding mime text including duplicate boundaries that we want to just skip over. + */ +TEST_F(MimeParserTest, testDuplicateBounaries) { + m_mimeParts.push_back( + std::make_shared(MIME_TEST_BOUNDARY_STRING, TEST_DATA_SIZE, m_testableMessageObserver)); + m_mimeParts.push_back( + std::make_shared(MIME_TEST_BOUNDARY_STRING, TEST_DATA_SIZE, m_testableMessageObserver)); + m_mimeParts.push_back(std::make_shared(NORMAL_LINES, TEST_MESSAGE, m_testableMessageObserver)); + m_mimeParts.push_back( + std::make_shared(MIME_TEST_BOUNDARY_STRING, TEST_DATA_SIZE, m_testableMessageObserver)); + m_mimeParts.push_back( + std::make_shared(DUPLICATE_BOUNDARY_LINES, TEST_MESSAGE, m_testableMessageObserver)); + m_mimeParts.push_back( + std::make_shared(MIME_TEST_BOUNDARY_STRING, TEST_DATA_SIZE, m_testableMessageObserver)); + m_mimeParts.push_back( + std::make_shared(CRLF_DUPLICATE_BOUNDARY_LINES, TEST_MESSAGE, m_testableMessageObserver)); + m_mimeParts.push_back( + std::make_shared(MIME_TEST_BOUNDARY_STRING, TEST_DATA_SIZE, m_testableMessageObserver)); + m_mimeParts.push_back( + std::make_shared(TRIPLICATE_BOUNDARY_LINES, TEST_MESSAGE, m_testableMessageObserver)); + m_mimeParts.push_back( + std::make_shared(MIME_TEST_BOUNDARY_STRING, TEST_DATA_SIZE, m_testableMessageObserver)); + m_mimeParts.push_back( + std::make_shared(CRLF_TRIPLICATE_BOUNDARY_LINES, TEST_MESSAGE, m_testableMessageObserver)); + m_mimeParts.push_back( + std::make_shared(MIME_TEST_BOUNDARY_STRING, TEST_DATA_SIZE, m_testableMessageObserver)); auto mimeString = constructTestMimeString(m_mimeParts, MIME_TEST_BOUNDARY_STRING); + ACSDK_INFO(LX("testDuplicateBoundaries").d("mimeString", mimeString)); feedParser(mimeString, TEST_MULTI_WRITE_ITERATIONS); validateMimePartsParsedOk(); } -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); + +// ACSDK-1051 - MimeParser tests with attachments fail on Windows +#if defined(_WIN32) && !defined(RESOLVED_ACSDK_1051) + ::testing::GTEST_FLAG(filter) = "-MimeParserTest*Attachment*"; +#endif return RUN_ALL_TESTS(); } diff --git a/ACL/test/Transport/MockAuthDelegate.h b/ACL/test/Transport/MockAuthDelegate.h index 17bdcc6144..ca1f6817b3 100644 --- a/ACL/test/Transport/MockAuthDelegate.h +++ b/ACL/test/Transport/MockAuthDelegate.h @@ -1,7 +1,5 @@ /* - * MockAuthDelegate.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,8 +12,9 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_AUTH_DELEGATE_H_ -#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_AUTH_DELEGATE_H_ + +#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKAUTHDELEGATE_H_ +#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKAUTHDELEGATE_H_ #include @@ -30,15 +29,15 @@ namespace alexaClientSDK { namespace acl { namespace test { -class MockAuthDelegate: public avsCommon::sdkInterfaces::AuthDelegateInterface { +class MockAuthDelegate : public avsCommon::sdkInterfaces::AuthDelegateInterface { public: MOCK_METHOD1(addAuthObserver, void(std::shared_ptr)); MOCK_METHOD1(removeAuthObserver, void(std::shared_ptr)); MOCK_METHOD0(getAuthToken, std::string()); }; -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_AUTH_DELEGATE_H_ +#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKAUTHDELEGATE_H_ diff --git a/ACL/test/Transport/MockMessageRequest.h b/ACL/test/Transport/MockMessageRequest.h index ad53af8b7c..1c9b3a8920 100644 --- a/ACL/test/Transport/MockMessageRequest.h +++ b/ACL/test/Transport/MockMessageRequest.h @@ -1,7 +1,5 @@ /* - * MockMessageRequest.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,10 +12,12 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_MESSAGE_REQUEST_H_ -#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_MESSAGE_REQUEST_H_ + +#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKMESSAGEREQUEST_H_ +#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKMESSAGEREQUEST_H_ #include +#include #include @@ -36,14 +36,14 @@ class MockMessageRequest : public avsCommon::avs::MessageRequest { /** * Constructor. */ - MockMessageRequest() : avsCommon::avs::MessageRequest{"", nullptr} { } - MOCK_METHOD1(onExceptionReceived, void(const std::string & exceptionMessage)); - MOCK_METHOD1(onSendCompleted, void(Status status)); - + MockMessageRequest() : avsCommon::avs::MessageRequest{"", nullptr} { + } + MOCK_METHOD1(exceptionReceived, void(const std::string& exceptionMessage)); + MOCK_METHOD1(sendCompleted, void(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status status)); }; -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_MESSAGE_REQUEST_H_ +#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKMESSAGEREQUEST_H_ diff --git a/ACL/test/Transport/MockMessageRouterObserver.h b/ACL/test/Transport/MockMessageRouterObserver.h index 127531faa9..9c4cfc01c4 100644 --- a/ACL/test/Transport/MockMessageRouterObserver.h +++ b/ACL/test/Transport/MockMessageRouterObserver.h @@ -1,7 +1,5 @@ /* - * MockMessageRouterObserver.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,8 +12,9 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_MESSAGE_ROUTER_OBSERVER_H_ -#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_MESSAGE_ROUTER_OBSERVER_H_ + +#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKMESSAGEROUTEROBSERVER_H_ +#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKMESSAGEROUTEROBSERVER_H_ #include "ACL/Transport/MessageRouterObserverInterface.h" @@ -29,7 +28,7 @@ namespace transport { namespace test { // Cannot actually mock this class, since it is used exclusively through friend relationship -class MockMessageRouterObserver: public MessageRouterObserverInterface { +class MockMessageRouterObserver : public MessageRouterObserverInterface { public: void reset() { notifiedOfReceive = false; @@ -62,13 +61,13 @@ class MockMessageRouterObserver: public MessageRouterObserverInterface { private: virtual void onConnectionStatusChanged( - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override { + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override { notifiedOfStatusChanged = true; m_status = status; m_reason = reason; } - virtual void receive(const std::string & contextId, const std::string & message) override { + virtual void receive(const std::string& contextId, const std::string& message) override { notifiedOfReceive = true; m_attachmentContextId = contextId; m_message = message; @@ -82,9 +81,9 @@ class MockMessageRouterObserver: public MessageRouterObserverInterface { bool notifiedOfReceive; }; -} // namespace test -} // namespace transport -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace transport +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_MESSAGE_ROUTER_OBSERVER_H_ +#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKMESSAGEROUTEROBSERVER_H_ diff --git a/ACL/test/Transport/MockTransport.h b/ACL/test/Transport/MockTransport.h index 4dc9e959e6..9f4cf5e328 100644 --- a/ACL/test/Transport/MockTransport.h +++ b/ACL/test/Transport/MockTransport.h @@ -1,7 +1,5 @@ /* - * MockTransport.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_TRANSPORT_H_ -#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_TRANSPORT_H_ +#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKTRANSPORT_H_ +#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKTRANSPORT_H_ #include @@ -33,16 +31,17 @@ namespace test { using ::testing::Return; -class MockTransport: public TransportInterface { +class MockTransport : public TransportInterface { public: - MockTransport(): m_id{sNewId++} {}; + MockTransport() : m_id{sNewId++} {}; + MOCK_METHOD0(doShutdown, void()); MOCK_METHOD0(connect, bool()); MOCK_METHOD0(disconnect, void()); MOCK_METHOD0(isConnected, bool()); MOCK_METHOD0(isPendingDisconnected, bool()); MOCK_METHOD1(send, void(std::shared_ptr)); - MOCK_METHOD2(onAttachmentReceived, void(const std::string & contextId, const std::string & message)); + MOCK_METHOD2(onAttachmentReceived, void(const std::string& contextId, const std::string& message)); const int m_id; @@ -75,9 +74,9 @@ void disconnectMockTransport(MockTransport* transport) { ON_CALL(*transport, isConnected()).WillByDefault(Return(false)); } -} // namespace test -} // namespace transport -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace transport +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_TRANSPORT_H_ +#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKTRANSPORT_H_ diff --git a/ACL/test/Transport/MockTransportObserver.h b/ACL/test/Transport/MockTransportObserver.h index aba1e3e8bd..3cafb0a0a8 100644 --- a/ACL/test/Transport/MockTransportObserver.h +++ b/ACL/test/Transport/MockTransportObserver.h @@ -1,7 +1,5 @@ /* - * MockTransportObserver.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_TRANSPORT_OBSERVER_H_ -#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_TRANSPORT_OBSERVER_H_ +#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKTRANSPORTOBSERVER_H_ +#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKTRANSPORTOBSERVER_H_ #include "ACL/MessageRequest.h" #include "ACL/Message.h" @@ -34,7 +32,7 @@ namespace test { using ::testing::Return; -class MockTransportObserver: public TransportObserverInterface { +class MockTransportObserver : public TransportObserverInterface { public: MOCK_METHOD0(onConnected, void()); MOCK_METHOD1(onDisconnected, void(ConnectionChangedReason)); @@ -42,9 +40,9 @@ class MockTransportObserver: public TransportObserverInterface { MOCK_METHOD1(onMessageReceived, void(std::shared_ptr)); }; -} // namespace test -} // namespace transport -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace transport +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCK_TRANSPORT_OBSERVER_H_ +#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_MOCKTRANSPORTOBSERVER_H_ diff --git a/ACL/test/Transport/TestableConsumer.h b/ACL/test/Transport/TestableConsumer.h index 12df78bdf6..6366ae346f 100644 --- a/ACL/test/Transport/TestableConsumer.h +++ b/ACL/test/Transport/TestableConsumer.h @@ -1,22 +1,20 @@ /* - * TestableConsumer.h + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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. */ -#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLE_CONSUMER_H_ -#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLE_CONSUMER_H_ + +#ifndef ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLECONSUMER_H_ +#define ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLECONSUMER_H_ #include "ACL/Transport/MessageConsumerInterface.h" #include @@ -41,7 +39,7 @@ class TestableConsumer : public acl::MessageConsumerInterface { m_messageObserver = observer; } - void consumeMessage(const std::string & contextId, const std::string & message) override { + void consumeMessage(const std::string& contextId, const std::string& message) override { if (m_messageObserver) { m_messageObserver->receive(contextId, message); } @@ -52,8 +50,8 @@ class TestableConsumer : public acl::MessageConsumerInterface { std::shared_ptr m_messageObserver; }; -} // namespace test -} // namespace acl -} // namespace alexaClientSDK +} // namespace test +} // namespace acl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLE_CONSUMER_H_ +#endif // ALEXA_CLIENT_SDK_ACL_TEST_TRANSPORT_TESTABLECONSUMER_H_ diff --git a/ADSL/CMakeLists.txt b/ADSL/CMakeLists.txt index 725b0c65fd..48b7143f6d 100644 --- a/ADSL/CMakeLists.txt +++ b/ADSL/CMakeLists.txt @@ -4,4 +4,4 @@ project(ADSL LANGUAGES CXX) include(../build/BuildDefaults.cmake) add_subdirectory("src") -add_subdirectory("test") +acsdk_add_test_subdirectory_if_allowed() diff --git a/ADSL/include/ADSL/DirectiveProcessor.h b/ADSL/include/ADSL/DirectiveProcessor.h index 457357091a..224723b3a3 100644 --- a/ADSL/include/ADSL/DirectiveProcessor.h +++ b/ADSL/include/ADSL/DirectiveProcessor.h @@ -1,7 +1,5 @@ /* - * DirectiveProcessor.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVE_PROCESSOR_H_ -#define ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVE_PROCESSOR_H_ +#ifndef ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVEPROCESSOR_H_ +#define ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVEPROCESSOR_H_ #include #include @@ -95,6 +93,19 @@ class DirectiveProcessor { */ void shutdown(); + /** + * Disable the DirectiveProcessor, queues all outstanding @c AVSDirectives for cancellation and + * blocks until the processing of all @c AVSDirectives has completed. + */ + void disable(); + + /** + * Enable the DirectiveProcessor. + * + * @return Whether it succeeded to enable the directive processor. + */ + bool enable(); + private: /** * Handle used to identify @c DirectiveProcessor instances referenced by @c DirectiveHandlerResult. @@ -123,7 +134,9 @@ class DirectiveProcessor { * @param processorHandle handle of the @c DirectiveProcessor to forward to the result to. * @param directive The @c AVSDirective whose handling result will be specified by this instance. */ - DirectiveHandlerResult(ProcessorHandle processorHandle, std::shared_ptr directive); + DirectiveHandlerResult( + ProcessorHandle processorHandle, + std::shared_ptr directive); void setCompleted() override; @@ -222,6 +235,9 @@ class DirectiveProcessor { /// Whether or not the @c DirectiveProcessor is shutting down. bool m_isShuttingDown; + /// Whether or not the @c DirectiveProcessor is enabled. + bool m_isEnabled; + /// The current @c dialogRequestId std::string m_dialogRequestId; @@ -259,7 +275,7 @@ class DirectiveProcessor { static ProcessorHandle m_nextProcessorHandle; }; -} // namespace adsl -} // namespace alexaClientSDK +} // namespace adsl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVE_PROCESSOR_H_ +#endif // ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVEPROCESSOR_H_ diff --git a/ADSL/include/ADSL/DirectiveRouter.h b/ADSL/include/ADSL/DirectiveRouter.h index 033d8f135e..6d09aae16b 100644 --- a/ADSL/include/ADSL/DirectiveRouter.h +++ b/ADSL/include/ADSL/DirectiveRouter.h @@ -1,7 +1,5 @@ /* - * DirectiveRouter.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVE_ROUTER_H_ -#define ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVE_ROUTER_H_ +#ifndef ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVEROUTER_H_ +#define ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVEROUTER_H_ #include #include @@ -32,14 +30,14 @@ namespace adsl { * Class to maintain a mapping from @c NamespaceAndName to @c HandlerAndPolicy, and to invoke * @c DirectiveHandlerInterface methods on the @c DirectiveHandler registered for a given @c AVSDirective. */ -class DirectiveRouter : public avsCommon::utils::RequiresShutdown{ +class DirectiveRouter : public avsCommon::utils::RequiresShutdown { public: /// Constructor. DirectiveRouter(); /** * Add mappings from from handler's @c NamespaceAndName values to @c BlockingPolicy values, gotten through the - * handler's getConfiguration() method. If a mapping for any of the specified @c NamespaceAndName values already + * handler's getConfiguration() method. If a mapping for any of the specified @c NamespaceAndName values already * exists the entire call is refused. * * @param handler The handler to add. @@ -49,7 +47,7 @@ class DirectiveRouter : public avsCommon::utils::RequiresShutdown{ /** * Remove the specified mappings from @c NamespaceAndName values to @c BlockingPolicy values, gotten through the - * handler's getConfiguration() method. If any of the specified mappings do not match an existing mapping, the + * handler's getConfiguration() method. If any of the specified mappings do not match an existing mapping, the * entire operation is refused. * * @param handler The handler to remove. @@ -65,6 +63,15 @@ class DirectiveRouter : public avsCommon::utils::RequiresShutdown{ */ bool handleDirectiveImmediately(std::shared_ptr directive); + /** + * Check if the directive handler's blocking policy is HANDLE_IMMEDIATELY for this directive, if so invoke @c + * handleDirectiveImmediately() on the handler registered for the given @c AVSDirective. + * + * @param directive The directive to be handled immediately. + * @return Whether or not the handler was invoked. + */ + bool handleDirectiveWithPolicyHandleImmediately(std::shared_ptr directive); + /** * Invoke @c preHandleDirective() on the handler registered for the given @c AVSDirective. * @@ -74,8 +81,8 @@ class DirectiveRouter : public avsCommon::utils::RequiresShutdown{ * @return Whether or not the handler was invoked. */ bool preHandleDirective( - std::shared_ptr directive, - std::unique_ptr result); + std::shared_ptr directive, + std::unique_ptr result); /** * Invoke @c handleDirective() on the handler registered for the given @c AVSDirective. @@ -120,9 +127,9 @@ class DirectiveRouter : public avsCommon::utils::RequiresShutdown{ * @param handler The @c DirectiveHandlerInterface instance to call. */ HandlerCallScope( - std::unique_lock& lock, - DirectiveRouter* router, - std::shared_ptr handler); + std::unique_lock& lock, + DirectiveRouter* router, + std::shared_ptr handler); /** * Destructor. @@ -157,7 +164,7 @@ class DirectiveRouter : public avsCommon::utils::RequiresShutdown{ * @param handler The handler for which the reference count should be incremented. */ void incrementHandlerReferenceCountLocked( - std::shared_ptr handler); + std::shared_ptr handler); /** * Decrement the reference count for the specified handler. If the reference count goes to zero, call @@ -167,23 +174,18 @@ class DirectiveRouter : public avsCommon::utils::RequiresShutdown{ * @param handler The @c DirectiveHandlerInterface instance whose reference count is to be decremented. */ void decrementHandlerReferenceCountLocked( - std::unique_lock& lock, - std::shared_ptr handler); + std::unique_lock& lock, + std::shared_ptr handler); /** * Remove the specified mappings from @c NamespaceAndName values to @c BlockingPolicy values, gotten through the - * handler's getConfiguration() method. If any of the specified mappings do not match an existing mapping, the + * handler's getConfiguration() method. If any of the specified mappings do not match an existing mapping, the * entire operation is refused. This function should be called while holding m_mutex. * * @param handler The handler to remove. - * @param[out] releasedHandlers A vector of handlers which need to have onDeregistered() called after releasing the - * lock. - * @return @c true if @c handler was removed successfully, else @c false. - * vector indicates an error occurred. + * @return @c true if @c handler was removed successfully, else @c false indicates an error occurred. */ - bool removeDirectiveHandlerLocked( - std::shared_ptr handler, - std::vector> * releasedHandlers); + bool removeDirectiveHandlerLocked(std::shared_ptr handler); /// A mutex used to serialize access to @c m_configuration and @c m_handlerReferenceCounts. std::mutex m_mutex; @@ -201,10 +203,10 @@ class DirectiveRouter : public avsCommon::utils::RequiresShutdown{ * indicating that the handler will no longer be called (unless, of course, it is re-registered). */ std::unordered_map, int> - m_handlerReferenceCounts; + m_handlerReferenceCounts; }; -} // namespace adsl -} // namespace alexaClientSDK +} // namespace adsl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVE_ROUTER_H_ +#endif // ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVEROUTER_H_ diff --git a/ADSL/include/ADSL/DirectiveSequencer.h b/ADSL/include/ADSL/DirectiveSequencer.h index 376b9ffc47..995e7fc0f0 100644 --- a/ADSL/include/ADSL/DirectiveSequencer.h +++ b/ADSL/include/ADSL/DirectiveSequencer.h @@ -1,7 +1,5 @@ /* - * DirectiveSequencer.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVE_SEQUENCER_H_ -#define ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVE_SEQUENCER_H_ +#ifndef ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVESEQUENCER_H_ +#define ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVESEQUENCER_H_ #include #include @@ -46,7 +44,7 @@ class DirectiveSequencer : public avsCommon::sdkInterfaces::DirectiveSequencerIn * @return Returns a new DirectiveSequencer, or nullptr if the operation failed. */ static std::unique_ptr create( - std::shared_ptr exceptionSender); + std::shared_ptr exceptionSender); bool addDirectiveHandler(std::shared_ptr handler) override; @@ -56,6 +54,10 @@ class DirectiveSequencer : public avsCommon::sdkInterfaces::DirectiveSequencerIn bool onDirective(std::shared_ptr directive) override; + void disable() override; + + void enable() override; + private: /** * Constructor. @@ -95,6 +97,9 @@ class DirectiveSequencer : public avsCommon::sdkInterfaces::DirectiveSequencerIn /// Whether or not the @c DirectiveReceiver is shutting down. bool m_isShuttingDown; + /// Whether or not the @c DirectiveSequencer is enabled. + bool m_isEnabled; + /// Object used to route directives to their assigned handler. DirectiveRouter m_directiveRouter; @@ -111,7 +116,7 @@ class DirectiveSequencer : public avsCommon::sdkInterfaces::DirectiveSequencerIn std::thread m_receivingThread; }; -} // namespace adsl -} // namespace alexaClientSDK +} // namespace adsl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVE_SEQUENCER_H_ +#endif // ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_DIRECTIVESEQUENCER_H_ diff --git a/ADSL/include/ADSL/MessageInterpreter.h b/ADSL/include/ADSL/MessageInterpreter.h index 1fbf8cdcc2..fb67ace53f 100644 --- a/ADSL/include/ADSL/MessageInterpreter.h +++ b/ADSL/include/ADSL/MessageInterpreter.h @@ -1,7 +1,5 @@ /* - * MessageInterpreter.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_MESSAGE_INTERPRETER_H_ -#define ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_MESSAGE_INTERPRETER_H_ +#ifndef ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_MESSAGEINTERPRETER_H_ +#define ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_MESSAGEINTERPRETER_H_ #include @@ -33,24 +31,23 @@ namespace adsl { */ class MessageInterpreter : public avsCommon::sdkInterfaces::MessageObserverInterface { public: - /** - * Constructor. - * - * @param exceptionEncounteredSender The exceptions encountered messages sender, which will allow us to send - * exception encountered back to AVS. - * @param directiveSequencerInterface The DirectiveSequencerInterface implementation, which will receive - * @c AVSDirectives. - * @param attachmentManager The @c AttachmentManager which created @c AVSDirectives will use to acquire Attachments. - */ + /** + * Constructor. + * + * @param exceptionEncounteredSender The exceptions encountered messages sender, which will allow us to send + * exception encountered back to AVS. + * @param directiveSequencerInterface The DirectiveSequencerInterface implementation, which will receive + * @c AVSDirectives. + * @param attachmentManager The @c AttachmentManager which created @c AVSDirectives will use to acquire Attachments. + */ MessageInterpreter( - std::shared_ptr exceptionEncounteredSender, - std::shared_ptr directiveSequencer, - std::shared_ptr attachmentManager); + std::shared_ptr exceptionEncounteredSender, + std::shared_ptr directiveSequencer, + std::shared_ptr attachmentManager); - void receive(const std::string & contextId, const std::string & message) override; + void receive(const std::string& contextId, const std::string& message) override; private: - /** * Logs an error and sends an exception to AVS. This signifies that an error occurred when attempting to * parse a value with a particular @c key. @@ -69,7 +66,7 @@ class MessageInterpreter : public avsCommon::sdkInterfaces::MessageObserverInter std::shared_ptr m_attachmentManager; }; -} // namespace directiveSequencer -} // namespace alexaClientSDK +} // namespace adsl +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_ADSL_INCLUDE_MESSAGE_INTERPRETER_H_ +#endif // ALEXA_CLIENT_SDK_ADSL_INCLUDE_ADSL_MESSAGEINTERPRETER_H_ diff --git a/ADSL/src/DirectiveProcessor.cpp b/ADSL/src/DirectiveProcessor.cpp index 7857d81e56..e5b8fc5a66 100644 --- a/ADSL/src/DirectiveProcessor.cpp +++ b/ADSL/src/DirectiveProcessor.cpp @@ -1,19 +1,16 @@ /* - * DirectiveProcessor.cpp + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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 @@ -50,6 +47,7 @@ std::unordered_map Dir DirectiveProcessor::DirectiveProcessor(DirectiveRouter* directiveRouter) : m_directiveRouter{directiveRouter}, m_isShuttingDown{false}, + m_isEnabled{true}, m_isHandlingDirective{false} { std::lock_guard lock(m_handleMapMutex); m_handle = ++m_nextProcessorHandle; @@ -73,24 +71,26 @@ bool DirectiveProcessor::onDirective(std::shared_ptr directive) { } std::lock_guard onDirectiveLock(m_onDirectiveMutex); std::unique_lock lock(m_mutex); - if (m_isShuttingDown) { + if (m_isShuttingDown || !m_isEnabled) { ACSDK_WARN(LX("onDirectiveFailed") - .d("messageId", directive->getMessageId()).d("action", "ignored").d("reason", "shuttingDown")); + .d("messageId", directive->getMessageId()) + .d("action", "ignored") + .d("reason", m_isShuttingDown ? "shuttingDown" : "disabled")); return false; } if (!directive->getDialogRequestId().empty() && directive->getDialogRequestId() != m_dialogRequestId) { ACSDK_INFO(LX("onDirective") - .d("messageId", directive->getMessageId()) - .d("action", "dropped") - .d("reason", "dialogRequestIdDoesNotMatch") - .d("directivesDialogRequestId", directive->getDialogRequestId()) - .d("dialogRequestId", m_dialogRequestId)); + .d("messageId", directive->getMessageId()) + .d("action", "dropped") + .d("reason", "dialogRequestIdDoesNotMatch") + .d("directivesDialogRequestId", directive->getDialogRequestId()) + .d("dialogRequestId", m_dialogRequestId)); return true; } m_directiveBeingPreHandled = directive; lock.unlock(); auto handled = m_directiveRouter->preHandleDirective( - directive, alexaClientSDK::avsCommon::utils::memory::make_unique(m_handle, directive)); + directive, alexaClientSDK::avsCommon::utils::memory::make_unique(m_handle, directive)); lock.lock(); if (m_directiveBeingPreHandled) { m_directiveBeingPreHandled.reset(); @@ -119,9 +119,25 @@ void DirectiveProcessor::shutdown() { } } +void DirectiveProcessor::disable() { + std::lock_guard lock(m_mutex); + ACSDK_DEBUG(LX("disable")); + queueAllDirectivesForCancellationLocked(); + m_isEnabled = false; + m_wakeProcessingLoop.notify_one(); +} + +bool DirectiveProcessor::enable() { + std::lock_guard lock{m_mutex}; + m_isEnabled = true; + return m_isEnabled; +} + DirectiveProcessor::DirectiveHandlerResult::DirectiveHandlerResult( - DirectiveProcessor::ProcessorHandle processorHandle, std::shared_ptr directive) : - m_processorHandle{processorHandle}, m_directive{directive} { + DirectiveProcessor::ProcessorHandle processorHandle, + std::shared_ptr directive) : + m_processorHandle{processorHandle}, + m_directive{directive} { } void DirectiveProcessor::DirectiveHandlerResult::setCompleted() { @@ -146,8 +162,10 @@ void DirectiveProcessor::DirectiveHandlerResult::setFailed(const std::string& de void DirectiveProcessor::onHandlingCompleted(std::shared_ptr directive) { std::lock_guard lock(m_mutex); - ACSDK_DEBUG(LX("onHandlingCompeted").d("messageId", directive->getMessageId()).d("directiveBeingPreHandled", - m_directiveBeingPreHandled ? m_directiveBeingPreHandled->getMessageId() : "(nullptr)")); + ACSDK_DEBUG(LX("onHandlingCompeted") + .d("messageId", directive->getMessageId()) + .d("directiveBeingPreHandled", + m_directiveBeingPreHandled ? m_directiveBeingPreHandled->getMessageId() : "(nullptr)")); removeDirectiveLocked(directive); } @@ -155,23 +173,20 @@ void DirectiveProcessor::onHandlingCompleted(std::shared_ptr direc void DirectiveProcessor::onHandlingFailed(std::shared_ptr directive, const std::string& description) { std::unique_lock lock(m_mutex); ACSDK_DEBUG(LX("onHandlingFailed") - .d("messageId", directive->getMessageId()) - .d("directiveBeingPreHandled", - m_directiveBeingPreHandled ? m_directiveBeingPreHandled->getMessageId() : "(nullptr)") - .d("description", description)); + .d("messageId", directive->getMessageId()) + .d("directiveBeingPreHandled", + m_directiveBeingPreHandled ? m_directiveBeingPreHandled->getMessageId() : "(nullptr)") + .d("description", description)); removeDirectiveLocked(directive); scrubDialogRequestIdLocked(directive->getDialogRequestId()); } void DirectiveProcessor::removeDirectiveLocked(std::shared_ptr directive) { - auto matches = [directive](std::shared_ptr item) { - return item == directive; - }; + auto matches = [directive](std::shared_ptr item) { return item == directive; }; m_cancelingQueue.erase( - std::remove_if(m_cancelingQueue.begin(), m_cancelingQueue.end(), matches), - m_cancelingQueue.end()); + std::remove_if(m_cancelingQueue.begin(), m_cancelingQueue.end(), matches), m_cancelingQueue.end()); if (matches(m_directiveBeingPreHandled)) { m_directiveBeingPreHandled.reset(); @@ -183,8 +198,7 @@ void DirectiveProcessor::removeDirectiveLocked(std::shared_ptr dir } m_handlingQueue.erase( - std::remove_if(m_handlingQueue.begin(), m_handlingQueue.end(), matches), - m_handlingQueue.end()); + std::remove_if(m_handlingQueue.begin(), m_handlingQueue.end(), matches), m_handlingQueue.end()); if (!m_cancelingQueue.empty() || !m_handlingQueue.empty()) { m_wakeProcessingLoop.notify_one(); @@ -205,7 +219,7 @@ void DirectiveProcessor::processingLoop() { } } -bool DirectiveProcessor::processCancelingQueueLocked(std::unique_lock &lock) { +bool DirectiveProcessor::processCancelingQueueLocked(std::unique_lock& lock) { if (m_cancelingQueue.empty()) { return false; } @@ -218,7 +232,7 @@ bool DirectiveProcessor::processCancelingQueueLocked(std::unique_lock &lock) { +bool DirectiveProcessor::handleDirectiveLocked(std::unique_lock& lock) { if (m_handlingQueue.empty()) { return false; } @@ -235,11 +249,11 @@ bool DirectiveProcessor::handleDirectiveLocked(std::unique_lock &loc m_isHandlingDirective = false; if (!m_handlingQueue.empty() && m_handlingQueue.front() == directive) { m_handlingQueue.pop_front(); - } else if (!handled) { + } else if (!handled) { ACSDK_ERROR(LX("handlingDirectiveLockedFailed") - .d("expected", directive->getMessageId()) - .d("front", m_handlingQueue.empty() ? "(empty)" : m_handlingQueue.front()->getMessageId()) - .d("reason", "handlingQueueFrontChangedWithoutBeingHandled")); + .d("expected", directive->getMessageId()) + .d("front", m_handlingQueue.empty() ? "(empty)" : m_handlingQueue.front()->getMessageId()) + .d("reason", "handlingQueueFrontChangedWithoutBeingHandled")); } } if (!handled) { @@ -250,7 +264,8 @@ bool DirectiveProcessor::handleDirectiveLocked(std::unique_lock &loc void DirectiveProcessor::setDialogRequestIdLocked(const std::string& dialogRequestId) { if (dialogRequestId == m_dialogRequestId) { - ACSDK_WARN(LX("setDialogRequestIdLockedIgnored").d("reason", "unchanged").d("dialogRequestId", dialogRequestId)); + ACSDK_WARN( + LX("setDialogRequestIdLockedIgnored").d("reason", "unchanged").d("dialogRequestId", dialogRequestId)); return; } ACSDK_INFO(LX("setDialogRequestIdLocked").d("oldValue", m_dialogRequestId).d("newValue", dialogRequestId)); @@ -328,5 +343,5 @@ void DirectiveProcessor::queueAllDirectivesForCancellationLocked() { m_isHandlingDirective = false; } -} // namespace directiveSequencer -} // namespace alexaClientSDK +} // namespace adsl +} // namespace alexaClientSDK diff --git a/ADSL/src/DirectiveRouter.cpp b/ADSL/src/DirectiveRouter.cpp index bfc34736e5..ea63126d29 100644 --- a/ADSL/src/DirectiveRouter.cpp +++ b/ADSL/src/DirectiveRouter.cpp @@ -1,7 +1,5 @@ /* - * DirectiveRouter.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -65,9 +63,9 @@ bool DirectiveRouter::addDirectiveHandler(std::shared_ptr handler, - std::vector> * releasedHandlers) { - if (!releasedHandlers) { - ACSDK_ERROR(LX("removeDirectiveHandlersFailed").d("reason", "nullptrReleasedHandlers")); - return false; - } +bool DirectiveRouter::removeDirectiveHandlerLocked(std::shared_ptr handler) { if (!handler) { ACSDK_ERROR(LX("removeDirectiveHandlersFailed").d("reason", "nullptrHandler")); return false; @@ -105,11 +96,11 @@ bool DirectiveRouter::removeDirectiveHandlerLocked( auto it = m_configuration.find(item.first); if (m_configuration.end() == it || it->second != HandlerAndPolicy(handler, item.second)) { ACSDK_ERROR(LX("removeDirectiveHandlersFailed") - .d("reason", "notFound") - .d("namespace", item.first.nameSpace) - .d("name", item.first.name) - .d("handler", handler.get()) - .d("policy", item.second)); + .d("reason", "notFound") + .d("namespace", item.first.nameSpace) + .d("name", item.first.name) + .d("handler", handler.get()) + .d("policy", item.second)); return false; } } @@ -121,32 +112,31 @@ bool DirectiveRouter::removeDirectiveHandlerLocked( */ for (auto item : configuration) { m_configuration.erase(item.first); - ACSDK_INFO(LX("removeDirectiveHandlers") - .d("action", "removed") - .d("namespace", item.first.nameSpace) - .d("name", item.first.name) - .d("handler", handler.get()) - .d("policy", item.second)); + ACSDK_DEBUG9(LX("removeDirectiveHandlers") + .d("action", "removed") + .d("namespace", item.first.nameSpace) + .d("name", item.first.name) + .d("handler", handler.get()) + .d("policy", item.second)); auto it = m_handlerReferenceCounts.find(handler); if (0 == --(it->second)) { - releasedHandlers->push_back(handler); m_handlerReferenceCounts.erase(it); } } + return true; } bool DirectiveRouter::removeDirectiveHandler(std::shared_ptr handler) { std::unique_lock lock(m_mutex); - std::vector> releasedHandlers; - if (!removeDirectiveHandlerLocked(handler, &releasedHandlers)) { + + if (!removeDirectiveHandlerLocked(handler)) { return false; } + lock.unlock(); - for (auto releasedHandler : releasedHandlers) { - ACSDK_INFO(LX("onDeregisteredCalled").d("handler", releasedHandler.get())); - releasedHandler->onDeregistered(); - } + ACSDK_DEBUG9(LX("onDeregisteredCalled").d("handler", handler.get())); + handler->onDeregistered(); return true; } @@ -156,7 +146,8 @@ bool DirectiveRouter::handleDirectiveImmediately(std::shared_ptrgetMessageId()).d("reason", "noHandlerRegistered")); + .d("messageId", directive->getMessageId()) + .d("reason", "noHandlerRegistered")); return false; } ACSDK_INFO(LX("handleDirectiveImmediately").d("messageId", directive->getMessageId()).d("action", "calling")); @@ -165,14 +156,36 @@ bool DirectiveRouter::handleDirectiveImmediately(std::shared_ptr directive) { + std::unique_lock lock(m_mutex); + auto handlerAndPolicy = getHandlerAndPolicyLocked(directive); + if (!handlerAndPolicy) { + ACSDK_WARN(LX("handleDirectiveWithPolicyHandleImmediatelyFailed") + .d("messageId", directive->getMessageId()) + .d("reason", "noHandlerRegistered")); + return false; + } + if (BlockingPolicy::HANDLE_IMMEDIATELY != handlerAndPolicy.policy) { + return false; + } + ACSDK_INFO(LX("handleDirectiveWithPolicyHandleImmediately") + .d("messageId", directive->getMessageId()) + .d("action", "calling")); + HandlerCallScope scope(lock, this, handlerAndPolicy.handler); + handlerAndPolicy.handler->handleDirectiveImmediately(directive); + return true; +} + bool DirectiveRouter::preHandleDirective( - std::shared_ptr directive, - std::unique_ptr result) { + std::shared_ptr directive, + std::unique_ptr result) { std::unique_lock lock(m_mutex); auto handlerAndPolicy = getHandlerAndPolicyLocked(directive); if (!handlerAndPolicy) { ACSDK_WARN(LX("preHandleDirectiveFailed") - .d("messageId", directive->getMessageId()).d("reason", "noHandlerRegistered")); + .d("messageId", directive->getMessageId()) + .d("reason", "noHandlerRegistered")); return false; } ACSDK_INFO(LX("preHandleDirective").d("messageId", directive->getMessageId()).d("action", "calling")); @@ -181,17 +194,19 @@ bool DirectiveRouter::preHandleDirective( return true; } -bool DirectiveRouter::handleDirective(std::shared_ptr directive, BlockingPolicy* policyOut) { +bool DirectiveRouter::handleDirective( + std::shared_ptr directive, + BlockingPolicy* policyOut) { if (!policyOut) { - ACSDK_ERROR(LX("handleDirectiveFailed") - .d("messageId", directive->getMessageId()).d("reason", "nullptrPolicyOut")); + ACSDK_ERROR( + LX("handleDirectiveFailed").d("messageId", directive->getMessageId()).d("reason", "nullptrPolicyOut")); return false; } std::unique_lock lock(m_mutex); auto handlerAndPolicy = getHandlerAndPolicyLocked(directive); if (!handlerAndPolicy) { - ACSDK_WARN(LX("handleDirectiveFailed") - .d("messageId", directive->getMessageId()).d("reason", "noHandlerRegistered")); + ACSDK_WARN( + LX("handleDirectiveFailed").d("messageId", directive->getMessageId()).d("reason", "noHandlerRegistered")); return false; } ACSDK_INFO(LX("handleDirective").d("messageId", directive->getMessageId()).d("action", "calling")); @@ -201,20 +216,19 @@ bool DirectiveRouter::handleDirective(std::shared_ptrgetMessageId()) - .d("reason", "handleDirectiveReturnedFalse")); + .d("handler", handlerAndPolicy.handler.get()) + .d("messageId", directive->getMessageId()) + .d("reason", "handleDirectiveReturnedFalse")); } return result; } - bool DirectiveRouter::cancelDirective(std::shared_ptr directive) { std::unique_lock lock(m_mutex); auto handlerAndPolicy = getHandlerAndPolicyLocked(directive); if (!handlerAndPolicy) { - ACSDK_WARN(LX("cancelDirectiveFailed") - .d("messageId", directive->getMessageId()).d("reason", "noHandlerRegistered")); + ACSDK_WARN( + LX("cancelDirectiveFailed").d("messageId", directive->getMessageId()).d("reason", "noHandlerRegistered")); return false; } ACSDK_INFO(LX("cancelDirective").d("messageId", directive->getMessageId()).d("action", "calling")); @@ -230,9 +244,10 @@ void DirectiveRouter::doShutdown() { // Should remove all configurations cleanly. size_t numConfigurations = m_configuration.size(); for (size_t i = 0; i < numConfigurations && !m_configuration.empty(); ++i) { - std::vector> handlers; - if (removeDirectiveHandlerLocked(m_configuration.begin()->second.handler, &handlers)) { - releasedHandlers.insert(releasedHandlers.end(), handlers.begin(), handlers.end()); + auto handler = m_configuration.begin()->second.handler; + + if (removeDirectiveHandlerLocked(handler)) { + releasedHandlers.push_back(handler); } } @@ -242,18 +257,20 @@ void DirectiveRouter::doShutdown() { lock.unlock(); for (auto releasedHandler : releasedHandlers) { - ACSDK_INFO(LX("onDeregisteredCalled").d("handler", releasedHandler.get())); + ACSDK_DEBUG9(LX("onDeregisteredCalled").d("handler", releasedHandler.get())); releasedHandler->onDeregistered(); } } DirectiveRouter::HandlerCallScope::HandlerCallScope( - std::unique_lock& lock, - DirectiveRouter* router, - std::shared_ptr handler) : + std::unique_lock& lock, + DirectiveRouter* router, + std::shared_ptr handler) : // Parenthesis are used for initializing @c m_lock to work-around a bug in the C++ specification. see: // http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1288 - m_lock(lock), m_router{router}, m_handler{handler} { + m_lock(lock), + m_router{router}, + m_handler{handler} { m_router->incrementHandlerReferenceCountLocked(m_handler); m_lock.unlock(); } @@ -285,12 +302,13 @@ void DirectiveRouter::incrementHandlerReferenceCountLocked(std::shared_ptr& lock, std::shared_ptr handler) { + std::unique_lock& lock, + std::shared_ptr handler) { const auto it = m_handlerReferenceCounts.find(handler); if (it != m_handlerReferenceCounts.end()) { if (0 == --(it->second)) { m_handlerReferenceCounts.erase(it); - ACSDK_INFO(LX("onDeregisteredCalled").d("handler", handler.get())); + ACSDK_DEBUG9(LX("onDeregisteredCalled").d("handler", handler.get())); lock.unlock(); handler->onDeregistered(); lock.lock(); @@ -300,5 +318,5 @@ void DirectiveRouter::decrementHandlerReferenceCountLocked( } } -} // namespace adsl -} // namespace alexaClientSDK +} // namespace adsl +} // namespace alexaClientSDK diff --git a/ADSL/src/DirectiveSequencer.cpp b/ADSL/src/DirectiveSequencer.cpp index 2db01f9c40..d9e09f44f7 100644 --- a/ADSL/src/DirectiveSequencer.cpp +++ b/ADSL/src/DirectiveSequencer.cpp @@ -1,19 +1,16 @@ /* - * DirectiveSequencer.cpp + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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 @@ -22,6 +19,7 @@ #include #include +#include #include "ADSL/DirectiveSequencer.h" @@ -41,9 +39,10 @@ namespace adsl { using namespace avsCommon; using namespace avsCommon::avs; using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::utils; std::unique_ptr DirectiveSequencer::create( - std::shared_ptr exceptionSender) { + std::shared_ptr exceptionSender) { if (!exceptionSender) { ACSDK_INFO(LX("createFailed").d("reason", "nullptrExceptionSender")); return nullptr; @@ -69,11 +68,11 @@ bool DirectiveSequencer::onDirective(std::shared_ptr directive) { return false; } std::lock_guard lock(m_mutex); - if (m_isShuttingDown) { + if (m_isShuttingDown || !m_isEnabled) { ACSDK_WARN(LX("onDirectiveFailed") - .d("directive", directive->getHeaderAsString()) - .d("action", "ignored") - .d("reason", "isShuttingDown")); + .d("directive", directive->getHeaderAsString()) + .d("action", "ignored") + .d("reason", m_isShuttingDown ? "isShuttingDown" : "disabled")); return false; } ACSDK_INFO(LX("onDirective").d("directive", directive->getHeaderAsString())); @@ -83,17 +82,18 @@ bool DirectiveSequencer::onDirective(std::shared_ptr directive) { } DirectiveSequencer::DirectiveSequencer( - std::shared_ptr exceptionSender) : + std::shared_ptr exceptionSender) : DirectiveSequencerInterface{"DirectiveSequencer"}, m_mutex{}, m_exceptionSender{exceptionSender}, - m_isShuttingDown{false} { + m_isShuttingDown{false}, + m_isEnabled{true} { m_directiveProcessor = std::make_shared(&m_directiveRouter); m_receivingThread = std::thread(&DirectiveSequencer::receivingLoop, this); } void DirectiveSequencer::doShutdown() { - ACSDK_INFO(LX("doShutdown")); + ACSDK_DEBUG9(LX("doShutdown")); { std::lock_guard lock(m_mutex); m_isShuttingDown = true; @@ -107,10 +107,25 @@ void DirectiveSequencer::doShutdown() { m_exceptionSender.reset(); } +void DirectiveSequencer::disable() { + ACSDK_DEBUG9(LX("disable")); + std::lock_guard lock(m_mutex); + m_isEnabled = false; + m_directiveProcessor->setDialogRequestId(""); + m_directiveProcessor->disable(); + m_wakeReceivingLoop.notify_one(); +} + +void DirectiveSequencer::enable() { + ACSDK_DEBUG9(LX("disable")); + std::lock_guard lock(m_mutex); + m_isEnabled = true; + m_directiveProcessor->enable(); + m_wakeReceivingLoop.notify_one(); +} + void DirectiveSequencer::receivingLoop() { - auto wake = [this]() { - return !m_receivingQueue.empty() || m_isShuttingDown; - }; + auto wake = [this]() { return !m_receivingQueue.empty() || m_isShuttingDown; }; std::unique_lock lock(m_mutex); while (true) { @@ -122,7 +137,7 @@ void DirectiveSequencer::receivingLoop() { } } -void DirectiveSequencer::receiveDirectiveLocked(std::unique_lock &lock) { +void DirectiveSequencer::receiveDirectiveLocked(std::unique_lock& lock) { if (m_receivingQueue.empty()) { return; } @@ -130,32 +145,40 @@ void DirectiveSequencer::receiveDirectiveLocked(std::unique_lock &lo m_receivingQueue.pop_front(); lock.unlock(); + if (directive->getName() == "StopCapture" || directive->getName() == "Speak") { + ACSDK_METRIC_MSG(TAG, directive, Metrics::Location::ADSL_DEQUEUE); + } + bool handled = false; - /** - * Previously it was expected that all directives resulting from a Recognize event - * would be tagged with the dialogRequestId of that event. In practice that is not - * the observed behavior. - */ -#ifdef DIALOG_REQUST_ID_IN_ALL_RESPONSE_DIRECTIVES +/** + * Previously it was expected that all directives resulting from a Recognize event + * would be tagged with the dialogRequestId of that event. In practice that is not + * the observed behavior. + */ +#ifdef DIALOG_REQUEST_ID_IN_ALL_RESPONSE_DIRECTIVES if (directive->getDialogRequestId().empty()) { handled = m_directiveRouter.handleDirectiveImmediately(directive); } else { - handled = m_directiveProcessor->onDirective(directive); + handled = m_directiveRouter.handleDirectiveWithPolicyHandleImmediately(directive); + if (!handled) { + handled = m_directiveProcessor->onDirective(directive); + } } #else - handled = m_directiveProcessor->onDirective(directive); + handled = m_directiveRouter.handleDirectiveWithPolicyHandleImmediately(directive); + if (!handled) { + handled = m_directiveProcessor->onDirective(directive); + } #endif if (!handled) { ACSDK_INFO(LX("sendingExceptionEncountered").d("messageId", directive->getMessageId())); m_exceptionSender->sendExceptionEncountered( - directive->getUnparsedDirective(), - ExceptionErrorType::UNSUPPORTED_OPERATION, - "Unsupported operation"); + directive->getUnparsedDirective(), ExceptionErrorType::UNSUPPORTED_OPERATION, "Unsupported operation"); } lock.lock(); } -} // namespace directiveSequencer -} // namespace alexaClientSDK +} // namespace adsl +} // namespace alexaClientSDK diff --git a/ADSL/src/MessageInterpreter.cpp b/ADSL/src/MessageInterpreter.cpp index 39df46e798..b63cab2193 100644 --- a/ADSL/src/MessageInterpreter.cpp +++ b/ADSL/src/MessageInterpreter.cpp @@ -1,7 +1,5 @@ /* - * MessageInterpreter.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -21,6 +19,7 @@ #include #include #include +#include #include @@ -32,6 +31,7 @@ using namespace avsCommon::avs; using namespace avsCommon::avs::attachment; using namespace avsCommon::sdkInterfaces; using namespace avsCommon::utils::json::jsonUtils; +using namespace avsCommon::utils; using namespace rapidjson; /// String to identify log entries originating from this file. @@ -67,24 +67,23 @@ static const std::string JSON_MESSAGE_PAYLOAD_KEY = "payload"; * @param errorDescription The description of the error encountered. */ static void sendExceptionEncounteredHelper( - std::shared_ptr exceptionEncounteredSender, - const std::string& unparsedMessage, - const std::string& errorDescription) { - exceptionEncounteredSender->sendExceptionEncountered(unparsedMessage, - ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED, - errorDescription); + std::shared_ptr exceptionEncounteredSender, + const std::string& unparsedMessage, + const std::string& errorDescription) { + exceptionEncounteredSender->sendExceptionEncountered( + unparsedMessage, ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED, errorDescription); } MessageInterpreter::MessageInterpreter( - std::shared_ptr exceptionEncounteredSender, - std::shared_ptr directiveSequencer, - std::shared_ptr attachmentManager): + std::shared_ptr exceptionEncounteredSender, + std::shared_ptr directiveSequencer, + std::shared_ptr attachmentManager) : m_exceptionEncounteredSender{exceptionEncounteredSender}, - m_directiveSequencer{directiveSequencer}, m_attachmentManager{attachmentManager} { + m_directiveSequencer{directiveSequencer}, + m_attachmentManager{attachmentManager} { } void MessageInterpreter::receive(const std::string& contextId, const std::string& message) { - Document document; if (!parseJSON(message, &document)) { @@ -141,27 +140,28 @@ void MessageInterpreter::receive(const std::string& contextId, const std::string ACSDK_DEBUG(LX("receive").d("messageId", avsMessageId).m("No dialogRequestId attached to message.")); } - auto avsMessageHeader = - std::make_shared(avsNamespace, avsName, avsMessageId, avsDialogRequestId); - std::shared_ptr avsDirective = AVSDirective::create(message, avsMessageHeader, - payload, m_attachmentManager, contextId); + auto avsMessageHeader = std::make_shared(avsNamespace, avsName, avsMessageId, avsDialogRequestId); + std::shared_ptr avsDirective = + AVSDirective::create(message, avsMessageHeader, payload, m_attachmentManager, contextId); if (!avsDirective) { const std::string errorDescription = "AVSDirective is nullptr, failed to send to DirectiveSequencer"; ACSDK_ERROR(LX("receiveFailed").d("reason", "createAvsDirectiveFailed")); sendExceptionEncounteredHelper(m_exceptionEncounteredSender, message, errorDescription); return; } + + if (avsDirective->getName() == "StopCapture" || avsDirective->getName() == "Speak") { + ACSDK_METRIC_MSG(TAG, avsDirective, Metrics::Location::ADSL_ENQUEUE); + } + m_directiveSequencer->onDirective(avsDirective); } void MessageInterpreter::sendParseValueException(const std::string& key, const std::string& json) { - alexaClientSDK::avsCommon::utils::logger::LogEntry* errorDescription = &(LX("messageParsingFailed") - .d("reason", "valueRetrievalFailed") - .d("key", key) - .d("payload", json)); - ACSDK_ERROR(*errorDescription); - sendExceptionEncounteredHelper(m_exceptionEncounteredSender, json, errorDescription->c_str()); + const std::string errorMessage = "reason=valueRetrievalFailed,key=" + key + ",payload=" + json; + ACSDK_ERROR(LX("messageParsingFailed").m(errorMessage)); + sendExceptionEncounteredHelper(m_exceptionEncounteredSender, json, errorMessage); } -} // namespace directiveSequencer -} // namespace alexaClientSDK +} // namespace adsl +} // namespace alexaClientSDK diff --git a/ADSL/test/ADSL/MockDirectiveSequencer.h b/ADSL/test/ADSL/MockDirectiveSequencer.h index 2c124dcb28..69c6645dad 100644 --- a/ADSL/test/ADSL/MockDirectiveSequencer.h +++ b/ADSL/test/ADSL/MockDirectiveSequencer.h @@ -1,7 +1,5 @@ /* - * MockDirectiveSequencer.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ADSL_TEST_ADSL_MOCK_DIRECTIVE_SEQUENCER_H_ -#define ALEXA_CLIENT_SDK_ADSL_TEST_ADSL_MOCK_DIRECTIVE_SEQUENCER_H_ +#ifndef ALEXA_CLIENT_SDK_ADSL_TEST_ADSL_MOCKDIRECTIVESEQUENCER_H_ +#define ALEXA_CLIENT_SDK_ADSL_TEST_ADSL_MOCKDIRECTIVESEQUENCER_H_ #include #include @@ -24,7 +22,6 @@ #include #include - namespace alexaClientSDK { namespace adsl { namespace test { @@ -36,25 +33,31 @@ class MockDirectiveSequencer : public avsCommon::sdkInterfaces::DirectiveSequenc public: MockDirectiveSequencer(); - MOCK_METHOD0(doShutdown,void()); + MOCK_METHOD0(doShutdown, void()); - MOCK_METHOD1(addDirectiveHandler, - bool(std::shared_ptr handler)); + MOCK_METHOD1( + addDirectiveHandler, + bool(std::shared_ptr handler)); - MOCK_METHOD1(removeDirectiveHandler, - bool(std::shared_ptr handler)); + MOCK_METHOD1( + removeDirectiveHandler, + bool(std::shared_ptr handler)); MOCK_METHOD1(setDialogRequestId, void(const std::string& dialogRequestId)); MOCK_METHOD1(onDirective, bool(std::shared_ptr directive)); + + MOCK_METHOD0(disable, void()); + + MOCK_METHOD0(enable, void()); }; inline MockDirectiveSequencer::MockDirectiveSequencer() : avsCommon::sdkInterfaces::DirectiveSequencerInterface{"MockDirectiveSequencer"} { } -} // namespace test -} // namespace adsl -} // namespace alexaClientSDK +} // namespace test +} // namespace adsl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ADSL_TEST_ADSL_MOCK_DIRECTIVE_SEQUENCER_H_ +#endif // ALEXA_CLIENT_SDK_ADSL_TEST_ADSL_MOCKDIRECTIVESEQUENCER_H_ diff --git a/ADSL/test/DirectiveProcessorTest.cpp b/ADSL/test/DirectiveProcessorTest.cpp index a6386c4a79..c09dcc2fbb 100644 --- a/ADSL/test/DirectiveProcessorTest.cpp +++ b/ADSL/test/DirectiveProcessorTest.cpp @@ -1,7 +1,5 @@ /* - * DirectiveProcessorTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,6 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ + // @file DirectiveProcessorTest.cpp #include @@ -115,18 +114,18 @@ void DirectiveProcessorTest::SetUp() { m_processor = std::make_shared(m_router.get()); m_attachmentManager = std::make_shared(AttachmentManager::AttachmentType::IN_PROCESS); - auto avsMessageHeader_0_0 = std::make_shared( - NAMESPACE_AND_NAME_0_0, MESSAGE_ID_0_0, DIALOG_REQUEST_ID_0); + auto avsMessageHeader_0_0 = + std::make_shared(NAMESPACE_AND_NAME_0_0, MESSAGE_ID_0_0, DIALOG_REQUEST_ID_0); m_directive_0_0 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader_0_0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); - auto avsMessageHeader_0_1 = std::make_shared( - NAMESPACE_AND_NAME_0_1, MESSAGE_ID_0_1, DIALOG_REQUEST_ID_0); + UNPARSED_DIRECTIVE, avsMessageHeader_0_0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader_0_1 = + std::make_shared(NAMESPACE_AND_NAME_0_1, MESSAGE_ID_0_1, DIALOG_REQUEST_ID_0); m_directive_0_1 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader_0_1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); - auto avsMessageHeader_1_0 = std::make_shared( - NAMESPACE_AND_NAME_1_0, MESSAGE_ID_1_0, DIALOG_REQUEST_ID_1); + UNPARSED_DIRECTIVE, avsMessageHeader_0_1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader_1_0 = + std::make_shared(NAMESPACE_AND_NAME_1_0, MESSAGE_ID_1_0, DIALOG_REQUEST_ID_1); m_directive_1_0 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader_1_0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader_1_0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); } /** @@ -228,8 +227,7 @@ TEST_F(DirectiveProcessorTest, testOnUnregisteredDirective) { DirectiveHandlerConfiguration handler2Config; handler2Config[{NAMESPACE_AND_NAME_1_0}] = BlockingPolicy::NON_BLOCKING; - std::shared_ptr handler2 = MockDirectiveHandler::create(handler2Config); - + std::shared_ptr handler2 = MockDirectiveHandler::create(handler2Config); ASSERT_TRUE(m_router->addDirectiveHandler(handler1)); ASSERT_TRUE(m_router->addDirectiveHandler(handler2)); @@ -267,8 +265,8 @@ TEST_F(DirectiveProcessorTest, testOnUnregisteredDirective) { TEST_F(DirectiveProcessorTest, testSetDialogRequestIdCancelsOutstandingDirectives) { DirectiveHandlerConfiguration longRunningHandlerConfig; longRunningHandlerConfig[{NAMESPACE_AND_NAME_0_0}] = BlockingPolicy::BLOCKING; - auto longRunningHandler = MockDirectiveHandler::create( - longRunningHandlerConfig, MockDirectiveHandler::DEFAULT_DONE_TIMEOUT_MS); + auto longRunningHandler = + MockDirectiveHandler::create(longRunningHandlerConfig, MockDirectiveHandler::DEFAULT_DONE_TIMEOUT_MS); DirectiveHandlerConfiguration handler1Config; handler1Config[{NAMESPACE_AND_NAME_0_1}] = BlockingPolicy::NON_BLOCKING; @@ -276,7 +274,7 @@ TEST_F(DirectiveProcessorTest, testSetDialogRequestIdCancelsOutstandingDirective DirectiveHandlerConfiguration handler2Config; handler2Config[{NAMESPACE_AND_NAME_1_0}] = BlockingPolicy::NON_BLOCKING; - auto handler2 = MockDirectiveHandler::create(handler2Config); + auto handler2 = MockDirectiveHandler::create(handler2Config); ASSERT_TRUE(m_router->addDirectiveHandler(longRunningHandler)); ASSERT_TRUE(m_router->addDirectiveHandler(handler1)); @@ -307,6 +305,19 @@ TEST_F(DirectiveProcessorTest, testSetDialogRequestIdCancelsOutstandingDirective ASSERT_TRUE(handler2->waitUntilCompleted()); } -} // namespace test -} // namespace adsl -} // namespace alexaClientSDK +TEST_F(DirectiveProcessorTest, testAddDirectiveWhileDisabled) { + m_processor->disable(); + ASSERT_FALSE(m_processor->onDirective(m_directive_0_0)); +} + +TEST_F(DirectiveProcessorTest, testAddDirectiveAfterReEnabled) { + m_processor->disable(); + ASSERT_FALSE(m_processor->onDirective(m_directive_0_0)); + + m_processor->enable(); + ASSERT_TRUE(m_processor->onDirective(m_directive_0_0)); +} + +} // namespace test +} // namespace adsl +} // namespace alexaClientSDK diff --git a/ADSL/test/DirectiveRouterTest.cpp b/ADSL/test/DirectiveRouterTest.cpp index 58768d9d6a..0905dc77c9 100644 --- a/ADSL/test/DirectiveRouterTest.cpp +++ b/ADSL/test/DirectiveRouterTest.cpp @@ -1,7 +1,5 @@ /* - * DirectiveRouterTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -110,18 +108,18 @@ class DirectiveRouterTest : public ::testing::Test { void DirectiveRouterTest::SetUp() { m_attachmentManager = std::make_shared(AttachmentManager::AttachmentType::IN_PROCESS); - auto avsMessageHeader_0_0 = std::make_shared( - NAMESPACE_AND_NAME_0_0, MESSAGE_ID_0_0, DIALOG_REQUEST_ID_0); + auto avsMessageHeader_0_0 = + std::make_shared(NAMESPACE_AND_NAME_0_0, MESSAGE_ID_0_0, DIALOG_REQUEST_ID_0); m_directive_0_0 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader_0_0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); - auto avsMessageHeader_0_1 = std::make_shared( - NAMESPACE_AND_NAME_0_1, MESSAGE_ID_0_1, DIALOG_REQUEST_ID_0); + UNPARSED_DIRECTIVE, avsMessageHeader_0_0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader_0_1 = + std::make_shared(NAMESPACE_AND_NAME_0_1, MESSAGE_ID_0_1, DIALOG_REQUEST_ID_0); m_directive_0_1 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader_0_1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); - auto avsMessageHeader_1_0 = std::make_shared( - NAMESPACE_AND_NAME_1_0, MESSAGE_ID_1_0, DIALOG_REQUEST_ID_0); + UNPARSED_DIRECTIVE, avsMessageHeader_0_1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader_1_0 = + std::make_shared(NAMESPACE_AND_NAME_1_0, MESSAGE_ID_1_0, DIALOG_REQUEST_ID_0); m_directive_1_0 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader_1_0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader_1_0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); } void DirectiveRouterTest::TearDown() { @@ -308,7 +306,6 @@ TEST_F(DirectiveRouterTest, testResultOfHandleDirectiveFailure) { * to complete quickly. */ TEST_F(DirectiveRouterTest, testHandlerMethodsCanRunConcurrently) { - DirectiveHandlerConfiguration handler0Config; handler0Config[{NAMESPACE_AND_NAME_0_0}] = BlockingPolicy::BLOCKING; std::shared_ptr handler0 = MockDirectiveHandler::create(handler0Config); @@ -320,7 +317,7 @@ TEST_F(DirectiveRouterTest, testHandlerMethodsCanRunConcurrently) { auto sleeperFunction = [&sleeper]() { ASSERT_EQ(sleeper.wait_for(LONG_TIMEOUT), std::future_status::ready) - << "ERROR: Timeout reached while waiting for concurrent handler."; + << "ERROR: Timeout reached while waiting for concurrent handler."; }; auto wakerFunction = [&waker]() { @@ -329,22 +326,18 @@ TEST_F(DirectiveRouterTest, testHandlerMethodsCanRunConcurrently) { }; EXPECT_CALL(*(handler0.get()), handleDirectiveImmediately(_)).Times(0); - EXPECT_CALL(*(handler0.get()), preHandleDirective(m_directive_0_0, _)) - .WillOnce(InvokeWithoutArgs(sleeperFunction)); - EXPECT_CALL(*(handler0.get()), handleDirective(MESSAGE_ID_0_0)) - .WillOnce(InvokeWithoutArgs(wakerFunction)); + EXPECT_CALL(*(handler0.get()), preHandleDirective(m_directive_0_0, _)).WillOnce(InvokeWithoutArgs(sleeperFunction)); + EXPECT_CALL(*(handler0.get()), handleDirective(MESSAGE_ID_0_0)).WillOnce(InvokeWithoutArgs(wakerFunction)); EXPECT_CALL(*(handler0.get()), cancelDirective(_)).Times(0); EXPECT_CALL(*(handler0.get()), onDeregistered()).Times(1); - std::thread sleeperThread([this]() { - ASSERT_TRUE(m_router.preHandleDirective(m_directive_0_0, nullptr)); - }); + std::thread sleeperThread([this]() { ASSERT_TRUE(m_router.preHandleDirective(m_directive_0_0, nullptr)); }); auto policy = BlockingPolicy::NONE; ASSERT_TRUE(m_router.handleDirective(m_directive_0_0, &policy)); ASSERT_EQ(policy, BlockingPolicy::BLOCKING); sleeperThread.join(); } -} // namespace test -} // namespace adsl -} // namespace alexaClientSDK +} // namespace test +} // namespace adsl +} // namespace alexaClientSDK diff --git a/ADSL/test/DirectiveSequencerTest.cpp b/ADSL/test/DirectiveSequencerTest.cpp index b2ff71a6ac..5dbd00d7a5 100644 --- a/ADSL/test/DirectiveSequencerTest.cpp +++ b/ADSL/test/DirectiveSequencerTest.cpp @@ -1,7 +1,5 @@ /* - * DirectiveSequencerTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,6 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ + // @file DirectiveSequencerTest.cpp #include @@ -73,6 +72,9 @@ static const std::string NAME_BLOCKING("Blocking"); /// Name for Test::Non-Blocking directives. static const std::string NAME_NON_BLOCKING("Non-Blocking"); +/// Name for Test::Handle-Immediately directives. +static const std::string NAME_HANDLE_IMMEDIATELY("Handle-Immediately"); + /// MessageId for Testing:Done directives used to terminate tests. static const std::string MESSAGE_ID_DONE("Message_Done"); @@ -160,10 +162,10 @@ void DirectiveSequencerTest::SetUp() { } void DirectiveSequencerTest::TearDown() { - auto avsMessageHeader = std::make_shared( - NAMESPACE_TEST, NAME_DONE, MESSAGE_ID_DONE, DIALOG_REQUEST_ID_DONE); + auto avsMessageHeader = + std::make_shared(NAMESPACE_TEST, NAME_DONE, MESSAGE_ID_DONE, DIALOG_REQUEST_ID_DONE); std::shared_ptr directive = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); EXPECT_CALL(*(m_doneHandler.get()), handleDirectiveImmediately(_)).Times(0); EXPECT_CALL(*(m_doneHandler.get()), preHandleDirective(directive, _)).Times(1); @@ -209,7 +211,7 @@ TEST_F(DirectiveSequencerTest, testNullptrDirective) { TEST_F(DirectiveSequencerTest, testUnhandledDirective) { auto avsMessageHeader = std::make_shared(NAMESPACE_SPEAKER, NAME_SET_VOLUME, MESSAGE_ID_0); std::shared_ptr directive = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); EXPECT_CALL(*(m_exceptionEncounteredSender.get()), sendExceptionEncountered(_, _, _)).Times(1); m_sequencer->onDirective(directive); } @@ -221,7 +223,7 @@ TEST_F(DirectiveSequencerTest, testUnhandledDirective) { TEST_F(DirectiveSequencerTest, testEmptyDialogRequestId) { auto avsMessageHeader = std::make_shared(NAMESPACE_SPEAKER, NAME_SET_VOLUME, MESSAGE_ID_0); std::shared_ptr directive = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); DirectiveHandlerConfiguration config; config[{NAMESPACE_SPEAKER, NAME_SET_VOLUME}] = BlockingPolicy::NON_BLOCKING; auto handler = MockDirectiveHandler::create(config); @@ -234,6 +236,26 @@ TEST_F(DirectiveSequencerTest, testEmptyDialogRequestId) { ASSERT_TRUE(handler->waitUntilHandling()); } +/** + * Send a directive with a DialogRequestId but with HANDLE_IMMEDIATELY policy in its handlier. + * Expect a call to handleDirectiveImmediately(). + */ +TEST_F(DirectiveSequencerTest, testHandleImmediatelyHandler) { + auto avsMessageHeader = std::make_shared(NAMESPACE_TEST, NAME_HANDLE_IMMEDIATELY, MESSAGE_ID_0); + std::shared_ptr directive = AVSDirective::create( + UNPARSED_DIRECTIVE, avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + DirectiveHandlerConfiguration config; + config[{NAMESPACE_TEST, NAME_HANDLE_IMMEDIATELY}] = BlockingPolicy::HANDLE_IMMEDIATELY; + auto handler = MockDirectiveHandler::create(config); + EXPECT_CALL(*(handler.get()), handleDirectiveImmediately(directive)).Times(1); + EXPECT_CALL(*(handler.get()), preHandleDirective(_, _)).Times(0); + EXPECT_CALL(*(handler.get()), handleDirective(_)).Times(0); + EXPECT_CALL(*(handler.get()), cancelDirective(_)).Times(0); + ASSERT_TRUE(m_sequencer->addDirectiveHandler(handler)); + m_sequencer->onDirective(directive); + ASSERT_TRUE(handler->waitUntilHandling()); +} + /** * Set handlers (NON_BLOCKING) for two namespace,name pairs. Then remove one and change the other. Send directives * for each of the NamespaceAndName values. Expect that the directive with no mapping is not seen by a handler and @@ -242,10 +264,10 @@ TEST_F(DirectiveSequencerTest, testEmptyDialogRequestId) { TEST_F(DirectiveSequencerTest, testRemovingAndChangingHandlers) { auto avsMessageHeader0 = std::make_shared(NAMESPACE_SPEAKER, NAME_SET_VOLUME, MESSAGE_ID_0); std::shared_ptr directive0 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); auto avsMessageHeader1 = std::make_shared(NAMESPACE_TEST, NAME_NON_BLOCKING, MESSAGE_ID_1); std::shared_ptr directive1 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); DirectiveHandlerConfiguration handler0Config; handler0Config[{NAMESPACE_SPEAKER, NAME_SET_VOLUME}] = BlockingPolicy::NON_BLOCKING; @@ -291,10 +313,10 @@ TEST_F(DirectiveSequencerTest, testRemovingAndChangingHandlers) { * a call to cancelDirective() to close out the test. */ TEST_F(DirectiveSequencerTest, testBlockingDirective) { - auto avsMessageHeader = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); + auto avsMessageHeader = + std::make_shared(NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); std::shared_ptr directive = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); DirectiveHandlerConfiguration handlerConfig; handlerConfig[{NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK}] = BlockingPolicy::BLOCKING; @@ -317,14 +339,14 @@ TEST_F(DirectiveSequencerTest, testBlockingDirective) { * Send a long running directive with an non-empty @c DialogRequestId and a BLOCKING policy. */ TEST_F(DirectiveSequencerTest, testBlockingThenNonDialogDirective) { - auto avsMessageHeader0 = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); + auto avsMessageHeader0 = + std::make_shared(NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); std::shared_ptr directive0 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); auto avsMessageHeader1 = std::make_shared(NAMESPACE_SPEAKER, NAME_SET_VOLUME, MESSAGE_ID_1); std::shared_ptr directive1 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); DirectiveHandlerConfiguration handler0Config; handler0Config[{NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK}] = BlockingPolicy::BLOCKING; @@ -364,10 +386,10 @@ TEST_F(DirectiveSequencerTest, testBlockingThenNonDialogDirective) { * and a call to @c cancelDirective(@c MessageId). */ TEST_F(DirectiveSequencerTest, testBargeIn) { - auto avsMessageHeader = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); + auto avsMessageHeader = + std::make_shared(NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); std::shared_ptr directive = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); DirectiveHandlerConfiguration handlerConfig; handlerConfig[{NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK}] = BlockingPolicy::BLOCKING; @@ -394,29 +416,29 @@ TEST_F(DirectiveSequencerTest, testBargeIn) { * current value does not cancel queued directives. */ TEST_F(DirectiveSequencerTest, testBlockingThenNonBockingOnSameDialogId) { - auto avsMessageHeader0 = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); + auto avsMessageHeader0 = + std::make_shared(NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); std::shared_ptr directive0 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); - auto avsMessageHeader1 = std::make_shared( - NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_1, DIALOG_REQUEST_ID_0); + UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader1 = + std::make_shared(NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_1, DIALOG_REQUEST_ID_0); std::shared_ptr directive1 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); - auto avsMessageHeader2 = std::make_shared( - NAMESPACE_TEST, NAME_NON_BLOCKING, MESSAGE_ID_2, DIALOG_REQUEST_ID_0); + UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader2 = + std::make_shared(NAMESPACE_TEST, NAME_NON_BLOCKING, MESSAGE_ID_2, DIALOG_REQUEST_ID_0); std::shared_ptr directive2 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader2, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader2, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); DirectiveHandlerConfiguration handler0Config; - handler0Config[{NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK}] = BlockingPolicy::BLOCKING; + handler0Config[{NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK}] = BlockingPolicy::BLOCKING; auto handler0 = MockDirectiveHandler::create(handler0Config); DirectiveHandlerConfiguration handler1Config; - handler1Config[{NAMESPACE_AUDIO_PLAYER, NAME_PLAY}] = BlockingPolicy::NON_BLOCKING; + handler1Config[{NAMESPACE_AUDIO_PLAYER, NAME_PLAY}] = BlockingPolicy::NON_BLOCKING; auto handler1 = MockDirectiveHandler::create(handler1Config); DirectiveHandlerConfiguration handler2Config; - handler2Config[{NAMESPACE_TEST, NAME_NON_BLOCKING}] = BlockingPolicy::NON_BLOCKING; + handler2Config[{NAMESPACE_TEST, NAME_NON_BLOCKING}] = BlockingPolicy::NON_BLOCKING; auto handler2 = MockDirectiveHandler::create(handler2Config); ASSERT_TRUE(m_sequencer->addDirectiveHandler(handler0)); @@ -456,18 +478,18 @@ TEST_F(DirectiveSequencerTest, testBlockingThenNonBockingOnSameDialogId) { * end by setting the dialogRequestId to close out the test). */ TEST_F(DirectiveSequencerTest, testThatBargeInDropsSubsequentDirectives) { - auto avsMessageHeader0 = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); + auto avsMessageHeader0 = + std::make_shared(NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); std::shared_ptr directive0 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); - auto avsMessageHeader1 = std::make_shared( - NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_1, DIALOG_REQUEST_ID_0); + UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader1 = + std::make_shared(NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_1, DIALOG_REQUEST_ID_0); std::shared_ptr directive1 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); - auto avsMessageHeader2 = std::make_shared( - NAMESPACE_TEST, NAME_BLOCKING, MESSAGE_ID_2, DIALOG_REQUEST_ID_1); + UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader2 = + std::make_shared(NAMESPACE_TEST, NAME_BLOCKING, MESSAGE_ID_2, DIALOG_REQUEST_ID_1); std::shared_ptr directive2 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader2, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader2, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); DirectiveHandlerConfiguration handler0Config; handler0Config[{NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK}] = BlockingPolicy::BLOCKING; @@ -519,14 +541,14 @@ TEST_F(DirectiveSequencerTest, testThatBargeInDropsSubsequentDirectives) { * entirely. */ TEST_F(DirectiveSequencerTest, testPreHandleDirectiveError) { - auto avsMessageHeader0 = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); + auto avsMessageHeader0 = + std::make_shared(NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); std::shared_ptr directive0 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); - auto avsMessageHeader1 = std::make_shared( - NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_1, DIALOG_REQUEST_ID_0); + UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader1 = + std::make_shared(NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_1, DIALOG_REQUEST_ID_0); std::shared_ptr directive1 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); DirectiveHandlerConfiguration handler0Config; handler0Config[{NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK}] = BlockingPolicy::BLOCKING; @@ -540,8 +562,8 @@ TEST_F(DirectiveSequencerTest, testPreHandleDirectiveError) { ASSERT_TRUE(m_sequencer->addDirectiveHandler(handler1)); EXPECT_CALL(*(handler0.get()), handleDirectiveImmediately(directive0)).Times(0); - EXPECT_CALL(*(handler0.get()), preHandleDirective(directive0, _)).WillOnce( - Invoke(handler0.get(), &MockDirectiveHandler::doPreHandlingFailed)); + EXPECT_CALL(*(handler0.get()), preHandleDirective(directive0, _)) + .WillOnce(Invoke(handler0.get(), &MockDirectiveHandler::doPreHandlingFailed)); EXPECT_CALL(*(handler0.get()), handleDirective(MESSAGE_ID_0)).Times(0); EXPECT_CALL(*(handler0.get()), cancelDirective(MESSAGE_ID_0)).Times(0); @@ -563,14 +585,14 @@ TEST_F(DirectiveSequencerTest, testPreHandleDirectiveError) { * dropped before @c preHandleDirective() is called, and that if not, it will be cancelled. */ TEST_F(DirectiveSequencerTest, testHandleDirectiveError) { - auto avsMessageHeader0 = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); + auto avsMessageHeader0 = + std::make_shared(NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); std::shared_ptr directive0 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); - auto avsMessageHeader1 = std::make_shared( - NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_1, DIALOG_REQUEST_ID_0); + UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader1 = + std::make_shared(NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_1, DIALOG_REQUEST_ID_0); std::shared_ptr directive1 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); DirectiveHandlerConfiguration handler0Config; handler0Config[{NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK}] = BlockingPolicy::BLOCKING; @@ -585,13 +607,13 @@ TEST_F(DirectiveSequencerTest, testHandleDirectiveError) { EXPECT_CALL(*(handler0.get()), handleDirectiveImmediately(directive0)).Times(0); EXPECT_CALL(*(handler0.get()), preHandleDirective(directive0, _)).Times(1); - EXPECT_CALL(*(handler0.get()), handleDirective(MESSAGE_ID_0)).WillOnce( - Invoke(handler0.get(), &MockDirectiveHandler::doHandlingFailed)); + EXPECT_CALL(*(handler0.get()), handleDirective(MESSAGE_ID_0)) + .WillOnce(Invoke(handler0.get(), &MockDirectiveHandler::doHandlingFailed)); EXPECT_CALL(*(handler0.get()), cancelDirective(MESSAGE_ID_0)).Times(0); EXPECT_CALL(*(handler1.get()), handleDirectiveImmediately(directive1)).Times(0); EXPECT_CALL(*(handler1.get()), preHandleDirective(directive1, _)).Times(AtMost(1)); - EXPECT_CALL(*(handler1.get()), handleDirective(MESSAGE_ID_1)).Times(0);; + EXPECT_CALL(*(handler1.get()), handleDirective(MESSAGE_ID_1)).Times(0); EXPECT_CALL(*(handler1.get()), cancelDirective(MESSAGE_ID_1)).Times(AtMost(1)); m_sequencer->setDialogRequestId(DIALOG_REQUEST_ID_0); @@ -614,18 +636,18 @@ TEST_F(DirectiveSequencerTest, testHandleDirectiveError) { * inside cancelDirective() to verify that that operation is refused. */ TEST_F(DirectiveSequencerTest, testAddDirectiveHandlersWhileHandlingDirectives) { - auto avsMessageHeader0 = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); + auto avsMessageHeader0 = + std::make_shared(NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); std::shared_ptr directive0 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); - auto avsMessageHeader1 = std::make_shared( - NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_1, DIALOG_REQUEST_ID_0); + UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader1 = + std::make_shared(NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_1, DIALOG_REQUEST_ID_0); std::shared_ptr directive1 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); - auto avsMessageHeader2 = std::make_shared( - NAMESPACE_TEST, NAME_NON_BLOCKING, MESSAGE_ID_2, DIALOG_REQUEST_ID_0); + UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader2 = + std::make_shared(NAMESPACE_TEST, NAME_NON_BLOCKING, MESSAGE_ID_2, DIALOG_REQUEST_ID_0); std::shared_ptr directive2 = AVSDirective::create( - UNPARSED_DIRECTIVE, avsMessageHeader2, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + UNPARSED_DIRECTIVE, avsMessageHeader2, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); DirectiveHandlerConfiguration handler0Config; handler0Config[{NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK}] = BlockingPolicy::BLOCKING; @@ -640,7 +662,7 @@ TEST_F(DirectiveSequencerTest, testAddDirectiveHandlersWhileHandlingDirectives) auto handler2 = MockDirectiveHandler::create(handler2Config); DirectiveHandlerConfiguration handler3Config; - handler3Config[{NAMESPACE_AUDIO_PLAYER, NAME_PLAY}] = BlockingPolicy::NON_BLOCKING; + handler3Config[{NAMESPACE_AUDIO_PLAYER, NAME_PLAY}] = BlockingPolicy::NON_BLOCKING; auto handler3 = MockDirectiveHandler::create(handler3Config); DirectiveHandlerConfiguration handler4Config; @@ -703,6 +725,172 @@ TEST_F(DirectiveSequencerTest, testAddDirectiveHandlersWhileHandlingDirectives) ASSERT_TRUE(handler4->waitUntilCanceling()); } -} // namespace test -} // namespace adsl -} // namespace alexaClientSDK +/** + * Send an @c AVSDirective with an non-empty @c DialogRequestId and a @c BLOCKING policy followed by + * @c HANDLE_IMMEDIATELY and @c NON_BLOCKING @c AVSDirectives with the same @c DialogRequestId. Expect a call to + * @c preHandleDirective(@c AVSDirective) and a call to @c handleDirective() for the @c AVSDirective that are not + * @c HANDLE_IMMEDIATELY. And for the one with @c HANDLE_IMMEDIATELY, only @c handleDirectiveImmediately() is called. + */ +TEST_F(DirectiveSequencerTest, testHandleBlockingThenImmediatelyThenNonBockingOnSameDialogId) { + auto avsMessageHeader0 = + std::make_shared(NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); + std::shared_ptr directive0 = AVSDirective::create( + UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader1 = + std::make_shared(NAMESPACE_TEST, NAME_HANDLE_IMMEDIATELY, MESSAGE_ID_1, DIALOG_REQUEST_ID_0); + std::shared_ptr directive1 = AVSDirective::create( + UNPARSED_DIRECTIVE, avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader2 = + std::make_shared(NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_2, DIALOG_REQUEST_ID_0); + std::shared_ptr directive2 = AVSDirective::create( + UNPARSED_DIRECTIVE, avsMessageHeader2, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + + DirectiveHandlerConfiguration handler0Config; + handler0Config[{NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK}] = BlockingPolicy::BLOCKING; + auto handler0 = MockDirectiveHandler::create(handler0Config); + + DirectiveHandlerConfiguration handler1Config; + handler1Config[{NAMESPACE_TEST, NAME_HANDLE_IMMEDIATELY}] = BlockingPolicy::HANDLE_IMMEDIATELY; + auto handler1 = MockDirectiveHandler::create(handler1Config); + + DirectiveHandlerConfiguration handler2Config; + handler2Config[{NAMESPACE_AUDIO_PLAYER, NAME_PLAY}] = BlockingPolicy::NON_BLOCKING; + auto handler2 = MockDirectiveHandler::create(handler2Config); + + ASSERT_TRUE(m_sequencer->addDirectiveHandler(handler0)); + ASSERT_TRUE(m_sequencer->addDirectiveHandler(handler1)); + ASSERT_TRUE(m_sequencer->addDirectiveHandler(handler2)); + + // Enforce the sequence. + InSequence dummy; + + EXPECT_CALL(*(handler0.get()), handleDirectiveImmediately(_)).Times(0); + EXPECT_CALL(*(handler0.get()), preHandleDirective(directive0, _)).Times(1); + EXPECT_CALL(*(handler0.get()), handleDirective(MESSAGE_ID_0)).Times(1); + EXPECT_CALL(*(handler0.get()), cancelDirective(_)).Times(0); + + EXPECT_CALL(*(handler1.get()), handleDirectiveImmediately(directive1)).Times(1); + EXPECT_CALL(*(handler1.get()), preHandleDirective(_, _)).Times(0); + EXPECT_CALL(*(handler1.get()), handleDirective(_)).Times(0); + EXPECT_CALL(*(handler1.get()), cancelDirective(_)).Times(0); + + EXPECT_CALL(*(handler2.get()), handleDirectiveImmediately(_)).Times(0); + EXPECT_CALL(*(handler2.get()), preHandleDirective(directive2, _)).Times(1); + EXPECT_CALL(*(handler2.get()), handleDirective(MESSAGE_ID_2)).Times(1); + EXPECT_CALL(*(handler2.get()), cancelDirective(_)).Times(0); + + m_sequencer->setDialogRequestId(DIALOG_REQUEST_ID_0); + m_sequencer->onDirective(directive0); + ASSERT_TRUE(handler0->waitUntilCompleted()); + m_sequencer->onDirective(directive1); + m_sequencer->onDirective(directive2); + ASSERT_TRUE(handler2->waitUntilCompleted()); +} + +/** + * Check that the @ DirectiveSequencer does not handle directives when it is disabled + */ +TEST_F(DirectiveSequencerTest, testAddDirectiveAfterDisabled) { + auto avsMessageHeader = + std::make_shared(NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); + std::shared_ptr directive = AVSDirective::create( + UNPARSED_DIRECTIVE, avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + + DirectiveHandlerConfiguration handlerConfig; + handlerConfig[{NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK}] = BlockingPolicy::BLOCKING; + auto handler = MockDirectiveHandler::create(handlerConfig, LONG_HANDLING_TIME_MS); + + EXPECT_CALL(*handler, handleDirectiveImmediately(_)).Times(0); + EXPECT_CALL(*handler, preHandleDirective(directive, _)).Times(0); + EXPECT_CALL(*handler, handleDirective(MESSAGE_ID_2)).Times(0); + EXPECT_CALL(*handler, cancelDirective(_)).Times(0); + + ASSERT_TRUE(m_sequencer->addDirectiveHandler(handler)); + m_sequencer->disable(); + m_sequencer->setDialogRequestId(DIALOG_REQUEST_ID_0); + ASSERT_FALSE(m_sequencer->onDirective(directive)); + + // Tear down method expects the sequencer to be enabled + m_sequencer->enable(); +} + +/** + * Check that the @ DirectiveSequencer.disable() cancel directive being handled + */ +TEST_F(DirectiveSequencerTest, testDisableCancelsDirective) { + auto avsMessageHeader = + std::make_shared(NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); + std::shared_ptr directive = AVSDirective::create( + UNPARSED_DIRECTIVE, avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + + DirectiveHandlerConfiguration handlerConfig; + handlerConfig[{NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK}] = BlockingPolicy::BLOCKING; + auto handler = MockDirectiveHandler::create(handlerConfig, LONG_HANDLING_TIME_MS); + + EXPECT_CALL(*handler, handleDirectiveImmediately(_)).Times(0); + EXPECT_CALL(*handler, preHandleDirective(directive, _)).Times(1); + EXPECT_CALL(*handler, handleDirective(MESSAGE_ID_0)).Times(AtMost(1)); + EXPECT_CALL(*handler, cancelDirective(_)).Times(1); + + // Add directive and wait till prehandling + ASSERT_TRUE(m_sequencer->addDirectiveHandler(handler)); + m_sequencer->setDialogRequestId(DIALOG_REQUEST_ID_0); + ASSERT_TRUE(m_sequencer->onDirective(directive)); + ASSERT_TRUE(handler->waitUntilPreHandling()); + + // Disable + m_sequencer->disable(); + ASSERT_TRUE(handler->waitUntilCanceling()); + + // Tear down method expects the sequencer to be enabled + m_sequencer->enable(); +} + +/** + * Check that the @ DirectiveSequencer can handle directives after being re-enabled + */ +TEST_F(DirectiveSequencerTest, testAddDirectiveAfterReEnabled) { + auto avsMessageHeader0 = + std::make_shared(NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_0, DIALOG_REQUEST_ID_0); + std::shared_ptr directive0 = AVSDirective::create( + UNPARSED_DIRECTIVE, avsMessageHeader0, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader1 = + std::make_shared(NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_1, DIALOG_REQUEST_ID_1); + std::shared_ptr ignoredDirective1 = AVSDirective::create( + "ignoreDirective", avsMessageHeader1, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + auto avsMessageHeader2 = + std::make_shared(NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_2, DIALOG_REQUEST_ID_2); + std::shared_ptr ignoredDirective2 = AVSDirective::create( + "anotherIgnored", avsMessageHeader2, PAYLOAD_TEST, m_attachmentManager, TEST_ATTACHMENT_CONTEXT_ID); + + DirectiveHandlerConfiguration handlerConfig; + handlerConfig[{NAMESPACE_AUDIO_PLAYER, NAME_PLAY}] = BlockingPolicy::NON_BLOCKING; + auto handler = MockDirectiveHandler::create(handlerConfig); + + // No handle calls are expected + EXPECT_CALL(*handler, handleDirectiveImmediately(_)).Times(0); + EXPECT_CALL(*handler, preHandleDirective(_, _)).Times(0); + EXPECT_CALL(*handler, handleDirective(_)).Times(0); + EXPECT_CALL(*handler, cancelDirective(_)).Times(0); + + // Except for the ones handling the directive0 + EXPECT_CALL(*handler, preHandleDirective(directive0, _)).Times(1); + EXPECT_CALL(*handler, handleDirective(MESSAGE_ID_0)).Times(1); + + ASSERT_TRUE(m_sequencer->addDirectiveHandler(handler)); + m_sequencer->disable(); + + // Make sure these directives are ignored and never processed + ASSERT_FALSE(m_sequencer->onDirective(ignoredDirective1)); + ASSERT_FALSE(m_sequencer->onDirective(ignoredDirective2)); + + m_sequencer->enable(); + m_sequencer->setDialogRequestId(DIALOG_REQUEST_ID_0); + + ASSERT_TRUE(m_sequencer->onDirective(directive0)); + ASSERT_TRUE(handler->waitUntilCompleted()); +} + +} // namespace test +} // namespace adsl +} // namespace alexaClientSDK diff --git a/ADSL/test/MessageInterpreterTest.cpp b/ADSL/test/MessageInterpreterTest.cpp index 8ee505b4cf..d61d9d6f70 100644 --- a/ADSL/test/MessageInterpreterTest.cpp +++ b/ADSL/test/MessageInterpreterTest.cpp @@ -1,7 +1,5 @@ /* - * MessageInterpreterTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -53,6 +51,7 @@ static const std::string INVALID_JSON = "invalidTestJSON }}"; static const std::string TEST_ATTACHMENT_CONTEXT_ID = "testContextId"; /// A sample AVS speak directive with all valid JSON keys. +// clang-format off static const std::string SPEAK_DIRECTIVE = R"({ "directive": { "header": { @@ -64,8 +63,10 @@ static const std::string SPEAK_DIRECTIVE = R"({ "payload": )" + PAYLOAD_TEST + R"( } })"; +// clang-format on /// A sample AVS speak directive with invalid directive JSON keys. +// clang-format off static const std::string DIRECTIVE_INVALID_DIRECTIVE_KEY = R"({ "Foo_directive": { "header": { @@ -77,8 +78,10 @@ static const std::string DIRECTIVE_INVALID_DIRECTIVE_KEY = R"({ "payload":{} } })"; +// clang-format on /// A sample AVS speak directive with invalid header key. +// clang-format off static const std::string DIRECTIVE_INVALID_HEADER_KEY = R"({ "directive": { "Foo_header": { @@ -90,8 +93,10 @@ static const std::string DIRECTIVE_INVALID_HEADER_KEY = R"({ "payload":{} } })"; +// clang-format on /// A sample AVS speak directive with invalid namespace key. +// clang-format off static const std::string DIRECTIVE_INVALID_NAMESPACE_KEY = R"({ "directive": { "header": { @@ -103,8 +108,10 @@ static const std::string DIRECTIVE_INVALID_NAMESPACE_KEY = R"({ "payload":{} } })"; +// clang-format on /// A sample AVS speak directive with invalid name key. +// clang-format off static const std::string DIRECTIVE_INVALID_NAME_KEY = R"({ "directive": { "header": { @@ -116,8 +123,10 @@ static const std::string DIRECTIVE_INVALID_NAME_KEY = R"({ "payload":{} } })"; +// clang-format on /// A sample AVS speak directive with invalid messageId key. +// clang-format off static const std::string DIRECTIVE_INVALID_MESSAGEID_KEY = R"({ "directive": { "header": { @@ -129,8 +138,10 @@ static const std::string DIRECTIVE_INVALID_MESSAGEID_KEY = R"({ "payload":{} } })"; +// clang-format on /// A sample AVS speak directive with no payload key. +// clang-format off static const std::string DIRECTIVE_NO_PAYLOAD = R"({ "directive": { "header": { @@ -140,8 +151,10 @@ static const std::string DIRECTIVE_NO_PAYLOAD = R"({ } } })"; +// clang-format on /// A sample AVS speak directive with invalid payload key. +// clang-format off static const std::string DIRECTIVE_INVALID_PAYLOAD_KEY = R"({ "directive": { "header": { @@ -153,8 +166,10 @@ static const std::string DIRECTIVE_INVALID_PAYLOAD_KEY = R"({ "Foo_payload":{} } })"; +// clang-format on /// A sample AVS speak directive with no dialogRequestId key. +// clang-format off static const std::string DIRECTIVE_NO_DIALOG_REQUEST_ID_KEY = R"({ "directive": { "header": { @@ -165,6 +180,7 @@ static const std::string DIRECTIVE_NO_DIALOG_REQUEST_ID_KEY = R"({ "payload": )" + PAYLOAD_TEST + R"( } })"; +// clang-format on /** * Test fixture for testing MessageInterpreter class. @@ -175,9 +191,8 @@ class MessageIntepreterTest : public ::testing::Test { m_mockExceptionEncounteredSender = std::make_shared(); m_mockDirectiveSequencer = std::make_shared(); m_attachmentManager = std::make_shared(AttachmentManager::AttachmentType::IN_PROCESS); - m_messageInterpreter = std::make_shared(m_mockExceptionEncounteredSender, - m_mockDirectiveSequencer, m_attachmentManager); - + m_messageInterpreter = std::make_shared( + m_mockExceptionEncounteredSender, m_mockDirectiveSequencer, m_attachmentManager); } /// The mock ExceptionEncounteredSender. std::shared_ptr m_mockExceptionEncounteredSender; @@ -194,10 +209,8 @@ class MessageIntepreterTest : public ::testing::Test { * and passed to directive sequencer. ExceptionEncounteredEvent should be sent to AVS. */ TEST_F(MessageIntepreterTest, messageIsInValidJSON) { - EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)) - .Times(1); - EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)) - .Times(0); + EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)).Times(1); + EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)).Times(0); m_messageInterpreter->receive(TEST_ATTACHMENT_CONTEXT_ID, INVALID_JSON); } @@ -206,10 +219,8 @@ TEST_F(MessageIntepreterTest, messageIsInValidJSON) { * and passed to directive sequencer. ExceptionEncounteredEvent should be sent to AVS. */ TEST_F(MessageIntepreterTest, messageHasInvalidDirectiveKey) { - EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)) - .Times(1); - EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)) - .Times(0); + EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)).Times(1); + EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)).Times(0); m_messageInterpreter->receive(TEST_ATTACHMENT_CONTEXT_ID, DIRECTIVE_INVALID_DIRECTIVE_KEY); } @@ -218,10 +229,8 @@ TEST_F(MessageIntepreterTest, messageHasInvalidDirectiveKey) { * and passed to directive sequencer. ExceptionEncounteredEvent should be sent to AVS. */ TEST_F(MessageIntepreterTest, messageHasInvalidHeaderKey) { - EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)) - .Times(1); - EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)) - .Times(0); + EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)).Times(1); + EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)).Times(0); m_messageInterpreter->receive(TEST_ATTACHMENT_CONTEXT_ID, DIRECTIVE_INVALID_HEADER_KEY); } @@ -230,10 +239,8 @@ TEST_F(MessageIntepreterTest, messageHasInvalidHeaderKey) { * and passed to directive sequencer. ExceptionEncounteredEvent should be sent to AVS. */ TEST_F(MessageIntepreterTest, messageHasInvalidNamespaceKey) { - EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)) - .Times(1); - EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)) - .Times(0); + EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)).Times(1); + EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)).Times(0); m_messageInterpreter->receive(TEST_ATTACHMENT_CONTEXT_ID, DIRECTIVE_INVALID_NAMESPACE_KEY); } @@ -242,10 +249,8 @@ TEST_F(MessageIntepreterTest, messageHasInvalidNamespaceKey) { * and passed to directive sequencer. ExceptionEncounteredEvent should be sent to AVS. */ TEST_F(MessageIntepreterTest, messageHasInvalidNameKey) { - EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)) - .Times(1); - EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)) - .Times(0); + EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)).Times(1); + EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)).Times(0); m_messageInterpreter->receive(TEST_ATTACHMENT_CONTEXT_ID, DIRECTIVE_INVALID_NAME_KEY); } @@ -254,10 +259,8 @@ TEST_F(MessageIntepreterTest, messageHasInvalidNameKey) { * and passed to directive sequencer. ExceptionEncounteredEvent should be sent to AVS. */ TEST_F(MessageIntepreterTest, messageHasInvalidMessageIdKey) { - EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)) - .Times(1); - EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)) - .Times(0); + EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)).Times(1); + EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)).Times(0); m_messageInterpreter->receive(TEST_ATTACHMENT_CONTEXT_ID, DIRECTIVE_INVALID_MESSAGEID_KEY); } @@ -266,17 +269,16 @@ TEST_F(MessageIntepreterTest, messageHasInvalidMessageIdKey) { * AVSDirective should be created and passed to the directive sequencer. */ TEST_F(MessageIntepreterTest, messageHasNoDialogRequestIdKey) { - EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)) - .Times(0); + EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)).Times(0); EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)) - .Times(1) - .WillOnce(Invoke([](std::shared_ptr avsDirective) -> bool { - EXPECT_EQ(avsDirective->getNamespace(), NAMESPACE_TEST); - EXPECT_EQ(avsDirective->getName(), NAME_TEST); - EXPECT_EQ(avsDirective->getMessageId(), MESSAGE_ID_TEST); - EXPECT_TRUE(avsDirective->getDialogRequestId().empty()); - return true; - })); + .Times(1) + .WillOnce(Invoke([](std::shared_ptr avsDirective) -> bool { + EXPECT_EQ(avsDirective->getNamespace(), NAMESPACE_TEST); + EXPECT_EQ(avsDirective->getName(), NAME_TEST); + EXPECT_EQ(avsDirective->getMessageId(), MESSAGE_ID_TEST); + EXPECT_TRUE(avsDirective->getDialogRequestId().empty()); + return true; + })); m_messageInterpreter->receive(TEST_ATTACHMENT_CONTEXT_ID, DIRECTIVE_NO_DIALOG_REQUEST_ID_KEY); } @@ -285,10 +287,8 @@ TEST_F(MessageIntepreterTest, messageHasNoDialogRequestIdKey) { * and passed to directive sequencer. ExceptionEncounteredEvent should be sent to AVS. */ TEST_F(MessageIntepreterTest, messageHasNoPayloadKey) { - EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)) - .Times(1); - EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)) - .Times(0); + EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)).Times(1); + EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)).Times(0); m_messageInterpreter->receive(TEST_ATTACHMENT_CONTEXT_ID, DIRECTIVE_NO_PAYLOAD); } @@ -297,10 +297,8 @@ TEST_F(MessageIntepreterTest, messageHasNoPayloadKey) { * and passed to directive sequencer. ExceptionEncounteredEvent should be sent to AVS. */ TEST_F(MessageIntepreterTest, messageHasInvalidPayloadKey) { - EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)) - .Times(1); - EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)) - .Times(0); + EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)).Times(1); + EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)).Times(0); m_messageInterpreter->receive(TEST_ATTACHMENT_CONTEXT_ID, DIRECTIVE_INVALID_PAYLOAD_KEY); } @@ -309,20 +307,19 @@ TEST_F(MessageIntepreterTest, messageHasInvalidPayloadKey) { * and passed to the directive sequencer. */ TEST_F(MessageIntepreterTest, messageIsValidDirective) { - EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)) - .Times(0); + EXPECT_CALL(*m_mockExceptionEncounteredSender, sendExceptionEncountered(_, _, _)).Times(0); EXPECT_CALL(*m_mockDirectiveSequencer, onDirective(_)) - .Times(1) - .WillOnce(Invoke([](std::shared_ptr avsDirective) -> bool { - EXPECT_EQ(avsDirective->getNamespace(), NAMESPACE_TEST); - EXPECT_EQ(avsDirective->getName(), NAME_TEST); - EXPECT_EQ(avsDirective->getMessageId(), MESSAGE_ID_TEST); - EXPECT_EQ(avsDirective->getDialogRequestId(), DIALOG_REQUEST_ID_TEST); - return true; - })); + .Times(1) + .WillOnce(Invoke([](std::shared_ptr avsDirective) -> bool { + EXPECT_EQ(avsDirective->getNamespace(), NAMESPACE_TEST); + EXPECT_EQ(avsDirective->getName(), NAME_TEST); + EXPECT_EQ(avsDirective->getMessageId(), MESSAGE_ID_TEST); + EXPECT_EQ(avsDirective->getDialogRequestId(), DIALOG_REQUEST_ID_TEST); + return true; + })); m_messageInterpreter->receive(TEST_ATTACHMENT_CONTEXT_ID, SPEAK_DIRECTIVE); } -} // namespace test -} // namespace adsl -} // namespace alexaClientSDK +} // namespace test +} // namespace adsl +} // namespace alexaClientSDK diff --git a/ADSL/test/common/MockDirectiveHandler.cpp b/ADSL/test/common/MockDirectiveHandler.cpp index 155e04ea13..c5fc7cc624 100644 --- a/ADSL/test/common/MockDirectiveHandler.cpp +++ b/ADSL/test/common/MockDirectiveHandler.cpp @@ -1,7 +1,5 @@ /* - * DirectiveSequencerTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -34,32 +32,33 @@ const std::chrono::milliseconds MockDirectiveHandler::DEFAULT_HANDLING_TIME_MS(0 const std::chrono::milliseconds MockDirectiveHandler::DEFAULT_DONE_TIMEOUT_MS(15000); void DirectiveHandlerMockAdapter::preHandleDirective( - std::shared_ptr directive, std::unique_ptr result) { + std::shared_ptr directive, + std::unique_ptr result) { std::shared_ptr temp(std::move(result)); preHandleDirective(directive, temp); } std::shared_ptr> MockDirectiveHandler::create( - DirectiveHandlerConfiguration config, - std::chrono::milliseconds handlingTimeMs) { + DirectiveHandlerConfiguration config, + std::chrono::milliseconds handlingTimeMs) { auto result = std::make_shared>(config, handlingTimeMs); - ON_CALL(*result.get(), handleDirectiveImmediately(_)).WillByDefault( - Invoke(result.get(), &MockDirectiveHandler::mockHandleDirectiveImmediately)); - ON_CALL(*result.get(), preHandleDirective(_, _)).WillByDefault( - Invoke(result.get(), &MockDirectiveHandler::mockPreHandleDirective)); - ON_CALL(*result.get(), handleDirective(_)).WillByDefault( - Invoke(result.get(), &MockDirectiveHandler::mockHandleDirective)); - ON_CALL(*result.get(), cancelDirective(_)).WillByDefault( - Invoke(result.get(), &MockDirectiveHandler::mockCancelDirective)); - ON_CALL(*result.get(), onDeregistered()).WillByDefault( - Invoke(result.get(), &MockDirectiveHandler::mockOnDeregistered)); - ON_CALL(*result.get(), getConfiguration()).WillByDefault(Return (config)); + ON_CALL(*result.get(), handleDirectiveImmediately(_)) + .WillByDefault(Invoke(result.get(), &MockDirectiveHandler::mockHandleDirectiveImmediately)); + ON_CALL(*result.get(), preHandleDirective(_, _)) + .WillByDefault(Invoke(result.get(), &MockDirectiveHandler::mockPreHandleDirective)); + ON_CALL(*result.get(), handleDirective(_)) + .WillByDefault(Invoke(result.get(), &MockDirectiveHandler::mockHandleDirective)); + ON_CALL(*result.get(), cancelDirective(_)) + .WillByDefault(Invoke(result.get(), &MockDirectiveHandler::mockCancelDirective)); + ON_CALL(*result.get(), onDeregistered()) + .WillByDefault(Invoke(result.get(), &MockDirectiveHandler::mockOnDeregistered)); + ON_CALL(*result.get(), getConfiguration()).WillByDefault(Return(config)); return result; } MockDirectiveHandler::MockDirectiveHandler( - DirectiveHandlerConfiguration config, - std::chrono::milliseconds handlingTimeMs) : + DirectiveHandlerConfiguration config, + std::chrono::milliseconds handlingTimeMs) : m_handlingTimeMs{handlingTimeMs}, m_isCompleted{false}, m_isShuttingDown{false}, @@ -82,8 +81,8 @@ void MockDirectiveHandler::mockHandleDirectiveImmediately(std::shared_ptr directive, - std::shared_ptr result) { + std::shared_ptr directive, + std::shared_ptr result) { m_directive = directive; m_result = result; m_preHandlingPromise.set_value(); @@ -106,9 +105,7 @@ void MockDirectiveHandler::mockCancelDirective(const std::string& messageId) { } void MockDirectiveHandler::doHandleDirective(const std::string& messageId) { - auto wake = [this]() { - return m_isCompleted || m_isShuttingDown; - }; + auto wake = [this]() { return m_isCompleted || m_isShuttingDown; }; m_handlingPromise.set_value(); std::unique_lock lock(m_mutex); m_wakeNotifier.wait_for(lock, m_handlingTimeMs, wake); @@ -131,8 +128,8 @@ void MockDirectiveHandler::doHandlingCompleted() { } void MockDirectiveHandler::doPreHandlingFailed( - std::shared_ptr directive, - std::shared_ptr result) { + std::shared_ptr directive, + std::shared_ptr result) { m_directive = directive; m_result = result; m_result->setFailed("doPreHandlingFailed()"); @@ -176,6 +173,6 @@ bool MockDirectiveHandler::waitUntilCompleted(std::chrono::milliseconds timeout) return m_completedFuture.wait_for(timeout) == std::future_status::ready; } -} // namespace test -} // namespace adsl -} // namespace alexaClientSDK +} // namespace test +} // namespace adsl +} // namespace alexaClientSDK diff --git a/ADSL/test/common/MockDirectiveHandler.h b/ADSL/test/common/MockDirectiveHandler.h index 2cd7e0ce29..16613f8fc8 100644 --- a/ADSL/test/common/MockDirectiveHandler.h +++ b/ADSL/test/common/MockDirectiveHandler.h @@ -1,7 +1,5 @@ /* - * MockDirectiveHandler.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ADSL_TEST_COMMON_MOCK_DIRECTIVE_HANDLER_H_ -#define ALEXA_CLIENT_SDK_ADSL_TEST_COMMON_MOCK_DIRECTIVE_HANDLER_H_ +#ifndef ALEXA_CLIENT_SDK_ADSL_TEST_COMMON_MOCKDIRECTIVEHANDLER_H_ +#define ALEXA_CLIENT_SDK_ADSL_TEST_COMMON_MOCKDIRECTIVEHANDLER_H_ #include #include @@ -37,8 +35,8 @@ namespace test { class DirectiveHandlerMockAdapter : public avsCommon::sdkInterfaces::DirectiveHandlerInterface { public: void preHandleDirective( - std::shared_ptr directive, - std::unique_ptr result) override; + std::shared_ptr directive, + std::unique_ptr result) override; /** * Variant of preHandleDirective taking a shared_ptr instead of a unique_ptr. @@ -47,8 +45,8 @@ class DirectiveHandlerMockAdapter : public avsCommon::sdkInterfaces::DirectiveHa * @param result The object to receive completion/failure notifications. */ virtual void preHandleDirective( - std::shared_ptr directive, - std::shared_ptr result) = 0; + std::shared_ptr directive, + std::shared_ptr result) = 0; }; /** @@ -71,8 +69,8 @@ class MockDirectiveHandler : public DirectiveHandlerMockAdapter { * @return A new MockDirectiveHandler. */ static std::shared_ptr> create( - avsCommon::avs::DirectiveHandlerConfiguration config, - std::chrono::milliseconds handlingTimeMs = DEFAULT_HANDLING_TIME_MS); + avsCommon::avs::DirectiveHandlerConfiguration config, + std::chrono::milliseconds handlingTimeMs = DEFAULT_HANDLING_TIME_MS); /** * Constructor. @@ -80,8 +78,8 @@ class MockDirectiveHandler : public DirectiveHandlerMockAdapter { * @param handlingTimeMs The amount of time (in milliseconds) this handler takes to handle directives. */ MockDirectiveHandler( - avsCommon::avs::DirectiveHandlerConfiguration config, - std::chrono::milliseconds handlingTimeMs); + avsCommon::avs::DirectiveHandlerConfiguration config, + std::chrono::milliseconds handlingTimeMs); /// Destructor. ~MockDirectiveHandler(); @@ -100,8 +98,8 @@ class MockDirectiveHandler : public DirectiveHandlerMockAdapter { * @param result The result object to */ void mockPreHandleDirective( - std::shared_ptr directive, - std::shared_ptr result); + std::shared_ptr directive, + std::shared_ptr result); /** * The functional part of mocking handleDirective(). @@ -138,8 +136,8 @@ class MockDirectiveHandler : public DirectiveHandlerMockAdapter { * @param result An object to receive the result of the handling operation. */ void doPreHandlingFailed( - std::shared_ptr directive, - std::shared_ptr result); + std::shared_ptr directive, + std::shared_ptr result); /** * Trigger completion of handling. @@ -236,7 +234,10 @@ class MockDirectiveHandler : public DirectiveHandlerMockAdapter { std::future m_completedFuture; MOCK_METHOD1(handleDirectiveImmediately, void(std::shared_ptr)); - MOCK_METHOD2(preHandleDirective, void(std::shared_ptr, + MOCK_METHOD2( + preHandleDirective, + void( + std::shared_ptr, std::shared_ptr)); MOCK_METHOD1(handleDirective, bool(const std::string&)); MOCK_METHOD1(cancelDirective, void(const std::string&)); @@ -250,8 +251,8 @@ class MockDirectiveHandler : public DirectiveHandlerMockAdapter { static const std::chrono::milliseconds DEFAULT_DONE_TIMEOUT_MS; }; -} // namespace test -} // namespace adsl -} // namespace alexaClientSDK +} // namespace test +} // namespace adsl +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ADSL_TEST_COMMON_MOCK_DIRECTIVE_HANDLER_H_ +#endif // ALEXA_CLIENT_SDK_ADSL_TEST_COMMON_MOCKDIRECTIVEHANDLER_H_ diff --git a/AFML/CMakeLists.txt b/AFML/CMakeLists.txt index c8b056b3f8..bda6e0d60e 100644 --- a/AFML/CMakeLists.txt +++ b/AFML/CMakeLists.txt @@ -4,4 +4,4 @@ project(AFML LANGUAGES CXX) include(../build/BuildDefaults.cmake) add_subdirectory("src") -add_subdirectory("test") +acsdk_add_test_subdirectory_if_allowed() diff --git a/AFML/include/AFML/ActivityTrackerInterface.h b/AFML/include/AFML/ActivityTrackerInterface.h new file mode 100644 index 0000000000..2c2a689fa9 --- /dev/null +++ b/AFML/include/AFML/ActivityTrackerInterface.h @@ -0,0 +1,47 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_ACTIVITYTRACKERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_ACTIVITYTRACKERINTERFACE_H_ + +#include + +#include "AFML/Channel.h" + +namespace alexaClientSDK { +namespace afml { + +/** + * This @c ActivityTrackerInterface interface is used by the @c FocusManager to notify its activity tracker + * any focus updates to a vector of @c Channel::State due to @c acquireChannel(), @c releaseChannel() or + * stopForegroundActivity(). + */ +class ActivityTrackerInterface { +public: + /// Destructor. + virtual ~ActivityTrackerInterface() = default; + + /** + * This function is called whenever an activity in @c FocusManager causes updates to a vector of channels. + * + * @param channelStates A vector of @c Channel::State that has been updated. + */ + virtual void notifyOfActivityUpdates(const std::vector& channelStates) = 0; +}; + +} // namespace afml +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_ACTIVITYTRACKERINTERFACE_H_ diff --git a/AFML/include/AFML/AudioActivityTracker.h b/AFML/include/AFML/AudioActivityTracker.h new file mode 100644 index 0000000000..f1c1d99ed2 --- /dev/null +++ b/AFML/include/AFML/AudioActivityTracker.h @@ -0,0 +1,135 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_AUDIOACTIVITYTRACKER_H_ +#define ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_AUDIOACTIVITYTRACKER_H_ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "AFML/Channel.h" +#include "AFML/ActivityTrackerInterface.h" + +namespace alexaClientSDK { +namespace afml { + +/** + * The @c AudioActivityTracker implements the @c ActivityTrackerInterface and gets notification from the @c + * FocusManager any activities in the audio channels. It also implements the @c StateProviderInterface and will provide + * to AVS the activity of the audio channels as described in Focus Management. + */ +class AudioActivityTracker + : public avsCommon::utils::RequiresShutdown + , public ActivityTrackerInterface + , public avsCommon::sdkInterfaces::StateProviderInterface { +public: + /** + * Creates a new @c AudioActivityTracker instance. + * + * @param contextManager The AVS Context manager used to generate system context for events. + * @return A @c std::shared_ptr to the new @c AudioActivityTracker instance, or @c nullptr if the operation failed. + */ + static std::shared_ptr create( + std::shared_ptr contextManager); + + /// @name StateProviderInterface Functions + /// @{ + void provideState(const avsCommon::avs::NamespaceAndName& stateProviderName, unsigned int stateRequestToken) + override; + /// @} + + /// @name ActivityTrackerInterface Functions + /// @{ + void notifyOfActivityUpdates(const std::vector& channelStates) override; + /// @} + +private: + /** + * Constructor. + * + * @param contextManager The AVS Context manager used to generate system context for events. + */ + AudioActivityTracker(std::shared_ptr contextManager); + + /// @name RequiresShutdown Functions + /// @{ + void doShutdown() override; + /// @} + + /** + * This function processes the vector of @c Channel::State and stores them inside @c m_channelsContext. + * + * @param channelStates The vector of @c Channel::State that has been updated as notified by the FocusManager via + * the @c notifyOfActivityUpdates() callback. + */ + void executeNotifyOfActivityUpdates(const std::vector& channelStates); + + /** + * This function provides updated context information for AudioActivityTracker to @c ContextManager. This function + * is called when @c ContextManager calls @c provideState(). + * + * @param stateRequestToken The token @c ContextManager passed to the @c provideState() call, which will be passed + * along to the ContextManager::setState() call. + */ + void executeProvideState(unsigned int stateRequestToken); + + /** + * This function returns the channelName passed in to lower case. + * + * @param channelName The name of the @c Channel. + * @return The name of the @c Channel in lower case. + */ + const std::string& executeChannelNameInLowerCase(const std::string& channelName); + + /// The @c ContextManager used to generate system context for events. + std::shared_ptr m_contextManager; + + /** + * @name Executor Thread Variables + * + * These member variables are only accessed by functions in the @c m_executor worker thread, and do not require any + * synchronization. + */ + /// @{ + /// A map to store the @c Channel::State to all the audio channels. The key of this map is the name of the @c + /// Channel. + std::unordered_map m_channelStates; + + /// A map to store the channel name in lower cases as required by the AudioActivity context. The key of this map is + /// the name of the @c Channel. + std::unordered_map m_channelNamesInLowerCase; + /// @} + + /** + * @c Executor which queues up operations from asynchronous API calls. + * + * @note This declaration needs to come *after* the Executor Thread Variables above so that the thread shuts down + * before the Executor Thread Variables are destroyed. + */ + avsCommon::utils::threading::Executor m_executor; +}; + +} // namespace afml +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_AUDIOACTIVITYTRACKER_H_ diff --git a/AFML/include/AFML/Channel.h b/AFML/include/AFML/Channel.h index 49b2323015..57d1cc7889 100644 --- a/AFML/include/AFML/Channel.h +++ b/AFML/include/AFML/Channel.h @@ -1,7 +1,5 @@ /* - * Channel.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -18,6 +16,7 @@ #ifndef ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_CHANNEL_H_ #define ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_CHANNEL_H_ +#include #include #include @@ -33,12 +32,47 @@ namespace afml { */ class Channel { public: + /* + * This class contains the states of the @c Channel. The states inside this structure are intended to be shared via + * the @c ActivityTrackerInterface. + */ + struct State { + /// Constructor with @c Channel name as the parameter. + State(const std::string& name); + + /// Constructor. + State(); + + /* + * The channel's name. Although the name is not dynamic, it is useful for identifying which channel the state + * belongs to. + */ + std::string name; + + /// The current Focus of the Channel. + avsCommon::avs::FocusState focusState; + + /// The name of the AVS interface that is occupying the Channel. + std::string interfaceName; + + /// Time at which the channel goes to NONE focus. + std::chrono::steady_clock::time_point timeAtIdle; + }; + /** * Constructs a new Channel object with the provided priority. * + * @param name The channel's name. * @param priority The priority of the channel. */ - Channel(const unsigned int priority); + Channel(const std::string& name, const unsigned int priority); + + /** + * Returns the name of a channel. + * + * @return The channel's name. + */ + const std::string& getName() const; /** * Returns the priority of a Channel. @@ -53,45 +87,45 @@ class Channel { * @c NONE, the observer will be removed from the Channel. * * @param focus The focus of the Channel. + * @return @c true if focus changed, else @c false. */ - void setFocus(avsCommon::avs::FocusState focus); + bool setFocus(avsCommon::avs::FocusState focus); /** - * Sets a new observer and notifies the old observer, if there is one, that it lost focus. + * Sets a new observer. * * @param observer The observer of the Channel. */ void setObserver(std::shared_ptr observer); /** - * Compares this Channel and another Channel and checks which is higher priority. A Channel is considered higher - * priority than another Channel if its m_priority is lower than the other Channel's. + * Checks whether the Channel has an observer. * - * @param rhs The Channel to compare with this Channel. + * @return @c true if the Channel has an observer, else @c false. */ - bool operator > (const Channel& rhs) const; + bool hasObserver() const; /** - * Updates the Channel's activity id. + * Compares this Channel and another Channel and checks which is higher priority. A Channel is considered higher + * priority than another Channel if its m_priority is lower than the other Channel's. * - * @param activityId The activity id of the Channel. + * @param rhs The Channel to compare with this Channel. */ - void setActivityId(const std::string& activityId); + bool operator>(const Channel& rhs) const; /** - * Returns the activity id of the Channel. + * Updates the AVS interface occupying the Channel. * - * @return The Channel activity id. + * @param interface The name of the interface occupying the Channel. */ - std::string getActivityId() const; + void setInterface(const std::string& interface); /** - * Notifies the Channel's observer to stop if the @c activityId matches the Channel's activity id. + * Returns the name of the AVS interface occupying the Channel. * - * @param activityId The activity id to compare. - * @return @c true if the activity on the Channel was stopped and @c false otherwise. + * @return The name of the AVS interface. */ - bool stopActivity(const std::string& activityId); + std::string getInterface() const; /** * Checks whether the observer passed in currently owns the Channel. @@ -101,21 +135,25 @@ class Channel { */ bool doesObserverOwnChannel(std::shared_ptr observer) const; + /** + * Returns the @c State of the @c Channel. + * + * @return The @c State. + */ + Channel::State getState() const; + private: /// The priority of the Channel. const unsigned int m_priority; - /// The current Focus of the Channel. - avsCommon::avs::FocusState m_focusState; + /// The @c State of the @c Channel. + State m_state; /// The current observer of the Channel. std::shared_ptr m_observer; - - /// An identifier which should be unique to any activity that can occur on any Channel. - std::string m_currentActivityId; }; -} // namespace afml -} // namespace alexaClientSDK +} // namespace afml +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_CHANNEL_H_ +#endif // ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_CHANNEL_H_ diff --git a/AFML/include/AFML/FocusManager.h b/AFML/include/AFML/FocusManager.h index 246b4ddfbb..cac2aa2a89 100644 --- a/AFML/include/AFML/FocusManager.h +++ b/AFML/include/AFML/FocusManager.h @@ -1,7 +1,5 @@ /* - * FocusManager.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,18 +13,20 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_FOCUS_MANAGER_H_ -#define ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_FOCUS_MANAGER_H_ +#ifndef ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_FOCUSMANAGER_H_ +#define ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_FOCUSMANAGER_H_ #include #include #include +#include #include #include #include #include "AFML/Channel.h" +#include "AFML/ActivityTrackerInterface.h" #include "AVSCommon/Utils/Threading/Executor.h" namespace alexaClientSDK { @@ -34,25 +34,25 @@ namespace afml { /** * The FocusManager takes requests to acquire and release Channels and updates the focuses of other Channels based on - * their priorities so that the invariant that there can only be one Foreground Channel is held. The following + * their priorities so that the invariant that there can only be one Foreground Channel is held. The following * operations are provided: * - * acquire Channel - clients should call the acquireChannel() method, passing in the name of the Channel they wish to - * acquire, a pointer to the observer that they want to be notified once they get focus, and a unique activity id. + * acquire Channel - clients should call the acquireChannel() method, passing in the name of the Channel they wish to + * acquire, a pointer to the observer that they want to be notified once they get focus, and a unique interface name. * * release Channel - clients should call the releaseChannel() method, passing in the name of the Channel and the * observer of the Channel they wish to release. * - * stop foreground Channel - clients should call the stopForegroundActivitiy() method. + * stop foreground Channel - clients should call the stopForegroundActivity() method. * - * All of these methods will notify the observer of the Channel of focus changes via an asynchronous callback to the + * All of these methods will notify the observer of the Channel of focus changes via an asynchronous callback to the * ChannelObserverInterface##onFocusChanged() method, at which point the client should make a user observable change * based on the focus it receives. */ class FocusManager : public avsCommon::sdkInterfaces::FocusManagerInterface { public: /** - * The configuration used by the FocusManager to create Channel objects. Each configuration object has a + * The configuration used by the FocusManager to create Channel objects. Each configuration object has a * name and priority. */ struct ChannelConfiguration { @@ -63,8 +63,9 @@ class FocusManager : public avsCommon::sdkInterfaces::FocusManagerInterface { * @param configPriority The priority of the channel. Lower number priorities result in higher priority * Channels. The highest priority number possible is 0. */ - ChannelConfiguration(const std::string & configName, unsigned int configPriority) - : name{configName}, priority{configPriority} { + ChannelConfiguration(const std::string& configName, unsigned int configPriority) : + name{configName}, + priority{configPriority} { } /** @@ -83,24 +84,29 @@ class FocusManager : public avsCommon::sdkInterfaces::FocusManagerInterface { unsigned int priority; }; + /// The default @c ChannelConfiguration for AVS audio channels. + static const std::vector DEFAULT_AUDIO_CHANNELS; + + /// The default @c ChannelConfiguration for AVS visual channels. + static const std::vector DEFAULT_VISUAL_CHANNELS; + /** - * This constructor creates Channels based on the provided configurations. This is defaulted to the default - * AVS Channel configuration names and priorities if no input parameter is provided. + * This constructor creates Channels based on the provided configurations. * - * @param channelConfigurations A vector of @c channelConfiguration objects that will be used to create the + * @param channelConfigurations A vector of @c channelConfiguration objects that will be used to create the * Channels. No two Channels should have the same name or priority. If there are multiple configurations with the * same name or priority, the latter Channels with that name or priority will not be created. + * @param activityTrackerInterface The interface to notify the activity tracker a vector of channel states that has + * been updated. */ - FocusManager(const std::vector& channelConfigurations = { - {DIALOG_CHANNEL_NAME, DIALOG_CHANNEL_PRIORITY}, - {ALERTS_CHANNEL_NAME, ALERTS_CHANNEL_PRIORITY}, - {CONTENT_CHANNEL_NAME, CONTENT_CHANNEL_PRIORITY} - }); + FocusManager( + const std::vector& channelConfigurations, + std::shared_ptr activityTrackerInterface = nullptr); bool acquireChannel( - const std::string& channelName, - std::shared_ptr channelObserver, - const std::string& activityId) override; + const std::string& channelName, + std::shared_ptr channelObserver, + const std::string& interface) override; std::future releaseChannel( const std::string& channelName, @@ -108,6 +114,11 @@ class FocusManager : public avsCommon::sdkInterfaces::FocusManagerInterface { void stopForegroundActivity() override; + void addObserver(const std::shared_ptr& observer) override; + + void removeObserver( + const std::shared_ptr& observer) override; + private: /** * Functor so that we can compare Channel objects via shared_ptr. @@ -127,20 +138,28 @@ class FocusManager : public avsCommon::sdkInterfaces::FocusManagerInterface { }; /** - * Grants access to the Channel specified and updates other Channels as needed. This function provides the full + * Sets the @c FocusState for @c channel and notifies observers of the change. + * + * @param channel The @c Channel to set the @c FocusState for. + * @param focus The @c FocusState to set @c channel to. + */ + void setChannelFocus(const std::shared_ptr& channel, avsCommon::avs::FocusState focus); + + /** + * Grants access to the Channel specified and updates other Channels as needed. This function provides the full * implementation which the public method will call. * * @param channelToAcquire The Channel to acquire. * @param channelObserver The new observer of the Channel. - * @param activityId The id of the new activity on the Channel. + * @param interface The name of the AVS inferface on the Channel. */ void acquireChannelHelper( - std::shared_ptr channelToAcquire, - std::shared_ptr channelObserver, - const std::string& activityId); + std::shared_ptr channelToAcquire, + std::shared_ptr channelObserver, + const std::string& interface); /** - * Releases the Channel specified and updates other Channels as needed. This function provides the full + * Releases the Channel specified and updates other Channels as needed. This function provides the full * implementation which the public method will call. * * @param channelToRelease The Channel to release. @@ -149,20 +168,22 @@ class FocusManager : public avsCommon::sdkInterfaces::FocusManagerInterface { * @param channelName The name of the Channel. */ void releaseChannelHelper( - std::shared_ptr channelToRelease, - std::shared_ptr channelObserver, - std::shared_ptr> releaseChannelSuccess, - const std::string& channelName); + std::shared_ptr channelToRelease, + std::shared_ptr channelObserver, + std::shared_ptr> releaseChannelSuccess, + const std::string& channelName); /** - * Stops the Channel specified and updates other Channels as needed if the activity id passed in matches the - * activity id of the Channel. This function provides the full implementation which the public method will call. + * Stops the Channel specified and updates other Channels as needed if the interface name passed in matches the + * interface occupying the Channel. This function provides the full implementation which the public method will + * call. * * @param foregroundChannel The Channel to stop. - * @param foregroundChannelActivityId The id of the activity to stop. + * @param foregroundChannelInterface The name of the interface to stop. */ void stopForegroundActivityHelper( - std::shared_ptr foregroundChannel, std::string foregroundChannelActivityId); + std::shared_ptr foregroundChannel, + std::string foregroundChannelInterface); /** * Finds the channel from the given channel name. @@ -210,20 +231,44 @@ class FocusManager : public avsCommon::sdkInterfaces::FocusManagerInterface { */ void foregroundHighestPriorityActiveChannel(); + /** + * This function is called inside the executor context of @c FocusManager to notify its activityTracker of updates + * to a set of @c Channel via the @c ActivityTrackerInterface interface. + */ + void notifyActivityTracker(); + /// Map of channel names to shared_ptrs of Channel objects and contains every channel. std::unordered_map> m_allChannels; /// Set of currently observed Channels ordered by Channel priority. std::set, ChannelPtrComparator> m_activeChannels; - /// An internal executor that performs execution of callable objects passed to it sequentially but asynchronously. - avsCommon::utils::threading::Executor m_executor; + /// The set of observers to notify about focus changes. + std::unordered_set> m_observers; - /// Mutex used to lock m_activeChannels and Channels' activity ids. + /// Mutex used to lock m_activeChannels, m_observers and Channels' interface name. std::mutex m_mutex; + + /* + * A vector of channel's State that has been updated due to @c acquireChannel(), @c releaseChannel() or + * stopForegroundActivity(). This is accessed by functions in the @c m_executor worker thread, and do not require + * any synchronization. + */ + std::vector m_activityUpdates; + + /// The interface to notify its activity tracker of any changes to its channels. + std::shared_ptr m_activityTracker; + + /** + * @c Executor which queues up operations from asynchronous API calls. + * + * @note This declaration needs to come *after* the Executor Thread Variables so that the thread shuts down + * before the Executor Thread Variables are destroyed. + */ + avsCommon::utils::threading::Executor m_executor; }; -} // namespace afml -} // namespace alexaClientSDK +} // namespace afml +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_FOCUS_MANAGER_H_ +#endif // ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_FOCUSMANAGER_H_ diff --git a/AFML/include/AFML/VisualActivityTracker.h b/AFML/include/AFML/VisualActivityTracker.h new file mode 100644 index 0000000000..1494188941 --- /dev/null +++ b/AFML/include/AFML/VisualActivityTracker.h @@ -0,0 +1,112 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_VISUALACTIVITYTRACKER_H_ +#define ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_VISUALACTIVITYTRACKER_H_ + +#include +#include +#include + +#include +#include +#include +#include + +#include "AFML/Channel.h" +#include "AFML/ActivityTrackerInterface.h" + +namespace alexaClientSDK { +namespace afml { + +/** + * The @c VisualActivityTracker implements the @c ActivityTrackerInterface and gets notification from the @c + * FocusManager any activities in the visual channels. It also implements the @c StateProviderInterface and will + * provide to AVS the activity of the visual channels as described in Focus Management. + */ +class VisualActivityTracker + : public avsCommon::utils::RequiresShutdown + , public ActivityTrackerInterface + , public avsCommon::sdkInterfaces::StateProviderInterface { +public: + /** + * Creates a new @c VisualActivityTracker instance. + * + * @param contextManager The AVS Context manager used to generate system context for events. + * @return A @c std::shared_ptr to the new @c VisualActivityTracker instance, or @c nullptr if the operation failed. + */ + static std::shared_ptr create( + std::shared_ptr contextManager); + + /// @name StateProviderInterface Functions + /// @{ + void provideState(const avsCommon::avs::NamespaceAndName& stateProviderName, unsigned int stateRequestToken) + override; + /// @} + + /// @name ActivityTrackerInterface Functions + /// @{ + void notifyOfActivityUpdates(const std::vector& channelStates) override; + /// @} + +private: + /** + * Constructor. + * + * @param contextManager The AVS Context manager used to generate system context for events. + */ + VisualActivityTracker(std::shared_ptr contextManager); + + /// @name RequiresShutdown Functions + /// @{ + void doShutdown() override; + /// @} + + /** + * This function provides updated context information for VisualActivityTracker to @c ContextManager. This function + * is called when @c ContextManager calls @c provideState(). + * + * @param stateRequestToken The token @c ContextManager passed to the @c provideState() call, which will be passed + * along to the ContextManager::setState() call. + */ + void executeProvideState(unsigned int stateRequestToken); + + /// The @c ContextManager used to generate system context for events. + std::shared_ptr m_contextManager; + + /** + * @name Executor Thread Variables + * + * These member variables are only accessed by functions in the @c m_executor worker thread, and do not require any + * synchronization. + */ + /// @{ + /// Stores the @c Channel::State to the visual channels. + Channel::State m_channelState; + /// @} + + /** + * @c Executor which queues up operations from asynchronous API calls. + * + * @note This declaration needs to come *after* the Executor Thread Variables above so that the thread shuts down + * before the Executor Thread Variables are destroyed. + */ + avsCommon::utils::threading::Executor m_executor; +}; + +} // namespace afml +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AFML_INCLUDE_AFML_VISUALACTIVITYTRACKER_H_ diff --git a/AFML/src/AudioActivityTracker.cpp b/AFML/src/AudioActivityTracker.cpp new file mode 100644 index 0000000000..8fd84279ad --- /dev/null +++ b/AFML/src/AudioActivityTracker.cpp @@ -0,0 +1,161 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include +#include +#include + +#include +#include +#include + +#include "AFML/AudioActivityTracker.h" + +namespace alexaClientSDK { +namespace afml { + +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::utils; +using namespace avsCommon::avs; + +/// String to identify log entries originating from this file. +static const std::string TAG("AudioActivityTracker"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/// The state information @c NamespaceAndName to send to the @c ContextManager for AudioActivityTracker. +static const NamespaceAndName CONTEXT_MANAGER_STATE{"AudioActivityTracker", "ActivityState"}; + +/// The idleTime key used in the AudioActivityTracker context. +static const char IDLE_TIME_KEY[] = "idleTimeInMilliseconds"; + +/// The interface key used in the AudioActivityTracker context. +static const char INTERFACE_KEY[] = "interface"; + +std::shared_ptr AudioActivityTracker::create( + std::shared_ptr contextManager) { + if (!contextManager) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullContextManager")); + return nullptr; + } + + auto audioActivityTracker = std::shared_ptr(new AudioActivityTracker(contextManager)); + + contextManager->setStateProvider(CONTEXT_MANAGER_STATE, audioActivityTracker); + + return audioActivityTracker; +} + +void AudioActivityTracker::provideState( + const avsCommon::avs::NamespaceAndName& stateProviderName, + unsigned int stateRequestToken) { + ACSDK_DEBUG5(LX("provideState")); + m_executor.submit([this, stateRequestToken]() { executeProvideState(stateRequestToken); }); +} + +void AudioActivityTracker::notifyOfActivityUpdates(const std::vector& channelStates) { + ACSDK_DEBUG5(LX("notifyOfActivityUpdates")); + m_executor.submit([this, channelStates]() { executeNotifyOfActivityUpdates(channelStates); }); +} + +AudioActivityTracker::AudioActivityTracker( + std::shared_ptr contextManager) : + RequiresShutdown{"AudioActivityTracker"}, + m_contextManager{contextManager} { +} + +void AudioActivityTracker::doShutdown() { + m_executor.shutdown(); + m_contextManager.reset(); +} + +void AudioActivityTracker::executeNotifyOfActivityUpdates(const std::vector& channelStates) { + ACSDK_DEBUG5(LX("executeNotifyOfActivityUpdates")); + for (const auto& state : channelStates) { + /* + * Special logic to ignore the SpeechRecognizer interface as specified by the Focus Management requirements. + */ + if ("SpeechRecognizer" == state.interfaceName && FocusManagerInterface::DIALOG_CHANNEL_NAME == state.name) { + continue; + } + m_channelStates[state.name] = state; + } +} + +void AudioActivityTracker::executeProvideState(unsigned int stateRequestToken) { + ACSDK_DEBUG5(LX("executeProvideState")); + rapidjson::Document payload(rapidjson::kObjectType); + rapidjson::StringBuffer buffer; + rapidjson::Writer writer(buffer); + + auto currentTime = std::chrono::steady_clock::now(); + auto sendEmptyContext = true; + + if (!m_channelStates.empty()) { + for (auto it = m_channelStates.begin(); it != m_channelStates.end(); ++it) { + rapidjson::Value contextJson(rapidjson::kObjectType); + auto idleTime = std::chrono::milliseconds::zero(); + auto& channelContext = it->second; + + if (FocusState::NONE == channelContext.focusState) { + idleTime = + std::chrono::duration_cast(currentTime - channelContext.timeAtIdle); + } + + contextJson.AddMember(INTERFACE_KEY, channelContext.interfaceName, payload.GetAllocator()); + contextJson.AddMember(IDLE_TIME_KEY, idleTime.count(), payload.GetAllocator()); + + payload.AddMember( + rapidjson::StringRef(executeChannelNameInLowerCase(it->first)), contextJson, payload.GetAllocator()); + } + + if (!payload.Accept(writer)) { + ACSDK_ERROR(LX("executeProvideState").d("reason", "writerRefusedJsonObject")); + } else { + sendEmptyContext = false; + } + } + + if (sendEmptyContext) { + m_contextManager->setState( + CONTEXT_MANAGER_STATE, "", avsCommon::avs::StateRefreshPolicy::SOMETIMES, stateRequestToken); + } else { + m_contextManager->setState( + CONTEXT_MANAGER_STATE, + buffer.GetString(), + avsCommon::avs::StateRefreshPolicy::SOMETIMES, + stateRequestToken); + } +} + +const std::string& AudioActivityTracker::executeChannelNameInLowerCase(const std::string& channelName) { + auto it = m_channelNamesInLowerCase.find(channelName); + + // Store channel name in lower case if not done so yet. + if (it == m_channelNamesInLowerCase.end()) { + auto channelNameInLowerCase = avsCommon::utils::string::stringToLowerCase(channelName); + it = m_channelNamesInLowerCase.insert(it, std::make_pair(channelName, channelNameInLowerCase)); + } + return it->second; +} + +} // namespace afml +} // namespace alexaClientSDK diff --git a/AFML/src/CMakeLists.txt b/AFML/src/CMakeLists.txt index 1e8c73fe07..1b34e49d63 100644 --- a/AFML/src/CMakeLists.txt +++ b/AFML/src/CMakeLists.txt @@ -1,6 +1,8 @@ add_library(AFML SHARED + AudioActivityTracker.cpp Channel.cpp - FocusManager.cpp) + FocusManager.cpp + VisualActivityTracker.cpp) add_definitions("-DACSDK_LOG_MODULE=afml") include_directories(AFML "${AFML_SOURCE_DIR}/include") diff --git a/AFML/src/Channel.cpp b/AFML/src/Channel.cpp index 72a49ef88a..f515d39447 100644 --- a/AFML/src/Channel.cpp +++ b/AFML/src/Channel.cpp @@ -1,7 +1,5 @@ /* - * Channel.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -23,62 +21,73 @@ namespace afml { using namespace avsCommon::avs; using namespace avsCommon::sdkInterfaces; -Channel::Channel(const unsigned int priority) : - m_priority{priority}, - m_focusState{FocusState::NONE}, - m_observer{nullptr} { +Channel::State::State(const std::string& name) : + name{name}, + focusState{FocusState::NONE}, + timeAtIdle{std::chrono::steady_clock::now()} { +} + +Channel::State::State() : focusState{FocusState::NONE}, timeAtIdle{std::chrono::steady_clock::now()} { +} + +Channel::Channel(const std::string& name, const unsigned int priority) : + m_priority{priority}, + m_state{name}, + m_observer{nullptr} { +} + +const std::string& Channel::getName() const { + return m_state.name; } unsigned int Channel::getPriority() const { return m_priority; } -void Channel::setFocus(FocusState focus) { - if (focus == m_focusState) { - return; +bool Channel::setFocus(FocusState focus) { + if (focus == m_state.focusState) { + return false; } - m_focusState = focus; + m_state.focusState = focus; if (m_observer) { - m_observer->onFocusChanged(m_focusState); + m_observer->onFocusChanged(m_state.focusState); } - if (FocusState::NONE == m_focusState) { + if (FocusState::NONE == m_state.focusState) { m_observer = nullptr; + m_state.timeAtIdle = std::chrono::steady_clock::now(); } + return true; } void Channel::setObserver(std::shared_ptr observer) { - setFocus(FocusState::NONE); m_observer = observer; } -bool Channel::operator>(const Channel& rhs) const { - return m_priority < rhs.getPriority(); +bool Channel::hasObserver() const { + return m_observer != nullptr; } -void Channel::setActivityId(const std::string& activityId) { - m_currentActivityId = activityId; +bool Channel::operator>(const Channel& rhs) const { + return m_priority < rhs.getPriority(); } -std::string Channel::getActivityId() const { - return m_currentActivityId; +void Channel::setInterface(const std::string& interface) { + m_state.interfaceName = interface; } -bool Channel::stopActivity(const std::string& activityId) { - if (activityId != m_currentActivityId) { - return false; - } - if (!m_observer) { - return false; - } - setFocus(FocusState::NONE); - return true; +std::string Channel::getInterface() const { + return m_state.interfaceName; } bool Channel::doesObserverOwnChannel(std::shared_ptr observer) const { return observer == m_observer; } -} // namespace afml -} // namespace alexaClientSDK +Channel::State Channel::getState() const { + return m_state; +} + +} // namespace afml +} // namespace alexaClientSDK diff --git a/AFML/src/FocusManager.cpp b/AFML/src/FocusManager.cpp index e6c5e38a9f..74660da491 100644 --- a/AFML/src/FocusManager.cpp +++ b/AFML/src/FocusManager.cpp @@ -1,7 +1,5 @@ /* - * FocusManager.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -35,65 +33,68 @@ static const std::string TAG("FocusManager"); */ #define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) -FocusManager::FocusManager(const std::vector& channelConfigurations) { +const std::vector FocusManager::DEFAULT_AUDIO_CHANNELS = { + {FocusManagerInterface::DIALOG_CHANNEL_NAME, FocusManagerInterface::DIALOG_CHANNEL_PRIORITY}, + {FocusManagerInterface::ALERTS_CHANNEL_NAME, FocusManagerInterface::ALERTS_CHANNEL_PRIORITY}, + {FocusManagerInterface::CONTENT_CHANNEL_NAME, FocusManagerInterface::CONTENT_CHANNEL_PRIORITY}}; + +const std::vector FocusManager::DEFAULT_VISUAL_CHANNELS = { + {FocusManagerInterface::VISUAL_CHANNEL_NAME, FocusManagerInterface::VISUAL_CHANNEL_PRIORITY}}; + +FocusManager::FocusManager( + const std::vector& channelConfigurations, + std::shared_ptr activityTrackerInterface) : + m_activityTracker{activityTrackerInterface} { for (auto config : channelConfigurations) { if (doesChannelNameExist(config.name)) { - ACSDK_ERROR(LX("createChannelFailed") - .d("reason", "channelNameExists") - .d("config", config.toString())); + ACSDK_ERROR(LX("createChannelFailed").d("reason", "channelNameExists").d("config", config.toString())); continue; } if (doesChannelPriorityExist(config.priority)) { - ACSDK_ERROR(LX("createChannelFailed") - .d("reason", "channelPriorityExists") - .d("config", config.toString())); + ACSDK_ERROR(LX("createChannelFailed").d("reason", "channelPriorityExists").d("config", config.toString())); continue; } - auto channel = std::make_shared(config.priority); + auto channel = std::make_shared(config.name, config.priority); m_allChannels.insert({config.name, channel}); } } bool FocusManager::acquireChannel( - const std::string& channelName, - std::shared_ptr channelObserver, - const std::string& activityId) { + const std::string& channelName, + std::shared_ptr channelObserver, + const std::string& interface) { + ACSDK_DEBUG1(LX("acquireChannel").d("channelName", channelName).d("interface", interface)); std::shared_ptr channelToAcquire = getChannel(channelName); if (!channelToAcquire) { - ACSDK_ERROR(LX("acquireChannelFailed") - .d("reason", "channelNotFound") - .d("channelName", channelName)); + ACSDK_ERROR(LX("acquireChannelFailed").d("reason", "channelNotFound").d("channelName", channelName)); return false; } - m_executor.submit( - [this, channelToAcquire, channelObserver, activityId] () { - acquireChannelHelper(channelToAcquire, channelObserver, activityId); - } - ); + m_executor.submit([this, channelToAcquire, channelObserver, interface]() { + acquireChannelHelper(channelToAcquire, channelObserver, interface); + }); return true; } std::future FocusManager::releaseChannel( - const std::string& channelName, std::shared_ptr channelObserver) { + const std::string& channelName, + std::shared_ptr channelObserver) { + ACSDK_DEBUG1(LX("releaseChannel").d("channelName", channelName)); + // Using a shared_ptr here so that the promise stays in scope by the time the Executor picks up the task. auto releaseChannelSuccess = std::make_shared>(); std::future returnValue = releaseChannelSuccess->get_future(); std::shared_ptr channelToRelease = getChannel(channelName); if (!channelToRelease) { - ACSDK_ERROR(LX("releaseChannelFailed") - .d("reason", "channelNotFound") - .d("channelName", channelName)); + ACSDK_ERROR(LX("releaseChannelFailed").d("reason", "channelNotFound").d("channelName", channelName)); releaseChannelSuccess->set_value(false); return returnValue; } - m_executor.submit( - [this, channelToRelease, channelObserver, releaseChannelSuccess, channelName] () { - releaseChannelHelper(channelToRelease, channelObserver, releaseChannelSuccess, channelName); - } - ); + m_executor.submit([this, channelToRelease, channelObserver, releaseChannelSuccess, channelName]() { + releaseChannelHelper(channelToRelease, channelObserver, releaseChannelSuccess, channelName); + }); return returnValue; } @@ -107,45 +108,72 @@ void FocusManager::stopForegroundActivity() { return; } - std::string foregroundChannelActivityId = foregroundChannel->getActivityId(); + std::string foregroundChannelInterface = foregroundChannel->getInterface(); lock.unlock(); - m_executor.submitToFront( - [this, foregroundChannel, foregroundChannelActivityId] () { - stopForegroundActivityHelper(foregroundChannel, foregroundChannelActivityId); - } - ); + m_executor.submitToFront([this, foregroundChannel, foregroundChannelInterface]() { + stopForegroundActivityHelper(foregroundChannel, foregroundChannelInterface); + }); +} + +void FocusManager::addObserver(const std::shared_ptr& observer) { + std::lock_guard lock(m_mutex); + m_observers.insert(observer); +} + +void FocusManager::removeObserver(const std::shared_ptr& observer) { + std::lock_guard lock(m_mutex); + m_observers.erase(observer); +} + +void FocusManager::setChannelFocus(const std::shared_ptr& channel, FocusState focus) { + if (!channel->setFocus(focus)) { + return; + } + std::unique_lock lock(m_mutex); + auto observers = m_observers; + lock.unlock(); + for (auto& observer : observers) { + observer->onFocusChanged(channel->getName(), focus); + } + m_activityUpdates.push_back(channel->getState()); } void FocusManager::acquireChannelHelper( - std::shared_ptr channelToAcquire, - std::shared_ptr channelObserver, - const std::string& activityId) { + std::shared_ptr channelToAcquire, + std::shared_ptr channelObserver, + const std::string& interface) { + // Notify the old observer, if there is one, that it lost focus. + setChannelFocus(channelToAcquire, FocusState::NONE); + // Lock here to update internal state which stopForegroundActivity may concurrently access. std::unique_lock lock(m_mutex); std::shared_ptr foregroundChannel = getHighestPriorityActiveChannelLocked(); - channelToAcquire->setActivityId(activityId); + channelToAcquire->setInterface(interface); m_activeChannels.insert(channelToAcquire); lock.unlock(); + // Set the new observer. channelToAcquire->setObserver(channelObserver); + if (!foregroundChannel) { - channelToAcquire->setFocus(FocusState::FOREGROUND); + setChannelFocus(channelToAcquire, FocusState::FOREGROUND); } else if (foregroundChannel == channelToAcquire) { - channelToAcquire->setFocus(FocusState::FOREGROUND); + setChannelFocus(channelToAcquire, FocusState::FOREGROUND); } else if (*channelToAcquire > *foregroundChannel) { - foregroundChannel->setFocus(FocusState::BACKGROUND); - channelToAcquire->setFocus(FocusState::FOREGROUND); + setChannelFocus(foregroundChannel, FocusState::BACKGROUND); + setChannelFocus(channelToAcquire, FocusState::FOREGROUND); } else { - channelToAcquire->setFocus(FocusState::BACKGROUND); + setChannelFocus(channelToAcquire, FocusState::BACKGROUND); } + notifyActivityTracker(); } void FocusManager::releaseChannelHelper( - std::shared_ptr channelToRelease, - std::shared_ptr channelObserver, - std::shared_ptr> releaseChannelSuccess, - const std::string& name) { + std::shared_ptr channelToRelease, + std::shared_ptr channelObserver, + std::shared_ptr> releaseChannelSuccess, + const std::string& name) { if (!channelToRelease->doesObserverOwnChannel(channelObserver)) { ACSDK_ERROR(LX("releaseChannelHelperFailed").d("reason", "observerDoesNotOwnChannel").d("channel", name)); releaseChannelSuccess->set_value(false); @@ -159,24 +187,30 @@ void FocusManager::releaseChannelHelper( m_activeChannels.erase(channelToRelease); lock.unlock(); - channelToRelease->setFocus(FocusState::NONE); + setChannelFocus(channelToRelease, FocusState::NONE); if (wasForegrounded) { foregroundHighestPriorityActiveChannel(); } + notifyActivityTracker(); } void FocusManager::stopForegroundActivityHelper( - std::shared_ptr foregroundChannel, std::string foregroundChannelActivityId) { - if (!foregroundChannel->stopActivity(foregroundChannelActivityId)) { + std::shared_ptr foregroundChannel, + std::string foregroundChannelInterface) { + if (foregroundChannelInterface != foregroundChannel->getInterface()) { + return; + } + if (!foregroundChannel->hasObserver()) { return; } + setChannelFocus(foregroundChannel, FocusState::NONE); // Lock here to update internal state which stopForegroundActivity may concurrently access. std::unique_lock lock(m_mutex); - foregroundChannel->setActivityId(""); m_activeChannels.erase(foregroundChannel); lock.unlock(); foregroundHighestPriorityActiveChannel(); + notifyActivityTracker(); } std::shared_ptr FocusManager::getChannel(const std::string& channelName) const { @@ -218,9 +252,16 @@ void FocusManager::foregroundHighestPriorityActiveChannel() { lock.unlock(); if (channelToForeground) { - channelToForeground->setFocus(FocusState::FOREGROUND); + setChannelFocus(channelToForeground, FocusState::FOREGROUND); + } +} + +void FocusManager::notifyActivityTracker() { + if (m_activityTracker) { + m_activityTracker->notifyOfActivityUpdates(m_activityUpdates); } + m_activityUpdates.clear(); } -} // namespace afml -} // namespace alexaClientSDK +} // namespace afml +} // namespace alexaClientSDK diff --git a/AFML/src/VisualActivityTracker.cpp b/AFML/src/VisualActivityTracker.cpp new file mode 100644 index 0000000000..8296722738 --- /dev/null +++ b/AFML/src/VisualActivityTracker.cpp @@ -0,0 +1,139 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include +#include + +#include +#include + +#include "AFML/VisualActivityTracker.h" + +namespace alexaClientSDK { +namespace afml { + +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::utils; +using namespace avsCommon::avs; + +/// String to identify log entries originating from this file. +static const std::string TAG("VisualActivityTracker"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/// The state information @c NamespaceAndName to send to the @c ContextManager for VisualActivityTracker. +static const NamespaceAndName CONTEXT_MANAGER_STATE{"VisualActivityTracker", "ActivityState"}; + +/// The interface key used in the VisualActivityTracker context. +static const char FOCUSED_KEY[] = "focused"; + +/// The interface key used in the VisualActivityTracker context. +static const char INTERFACE_KEY[] = "interface"; + +std::shared_ptr VisualActivityTracker::create( + std::shared_ptr contextManager) { + if (!contextManager) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullContextManager")); + return nullptr; + } + + auto visualActivityTracker = std::shared_ptr(new VisualActivityTracker(contextManager)); + + contextManager->setStateProvider(CONTEXT_MANAGER_STATE, visualActivityTracker); + + return visualActivityTracker; +} + +void VisualActivityTracker::provideState( + const avsCommon::avs::NamespaceAndName& stateProviderName, + unsigned int stateRequestToken) { + ACSDK_DEBUG5(LX("provideState")); + m_executor.submit([this, stateRequestToken]() { executeProvideState(stateRequestToken); }); +} + +void VisualActivityTracker::notifyOfActivityUpdates(const std::vector& channels) { + ACSDK_DEBUG5(LX("notifyOfActivityUpdates")); + // Return error if vector is empty. + if (channels.empty()) { + ACSDK_WARN(LX("notifyOfActivityUpdates").d("reason", "emptyVector")); + return; + } + + /* + * Currently we only have one visual channel, so we log an error if we are not getting updates with the expected + * one. + */ + for (auto& channel : channels) { + if (FocusManagerInterface::VISUAL_CHANNEL_NAME != channel.name) { + ACSDK_ERROR(LX("notifyOfActivityUpdates").d("reason", "InvalidChannelName").d("name", channel.name)); + return; + } + } + + m_executor.submit([this, channels]() { + // The last element of the vector is the most recent channel state. + m_channelState = channels.back(); + }); +} + +VisualActivityTracker::VisualActivityTracker( + std::shared_ptr contextManager) : + RequiresShutdown{"VisualActivityTracker"}, + m_contextManager{contextManager} { +} + +void VisualActivityTracker::doShutdown() { + m_executor.shutdown(); + m_contextManager.reset(); +} + +void VisualActivityTracker::executeProvideState(unsigned int stateRequestToken) { + ACSDK_DEBUG5(LX("executeProvideState")); + rapidjson::Document payload(rapidjson::kObjectType); + rapidjson::StringBuffer buffer; + rapidjson::Writer writer(buffer); + auto sendEmptyContext = true; + + if (FocusState::NONE != m_channelState.focusState) { + rapidjson::Value contextJson(rapidjson::kObjectType); + contextJson.AddMember(INTERFACE_KEY, m_channelState.interfaceName, payload.GetAllocator()); + payload.AddMember(FOCUSED_KEY, contextJson, payload.GetAllocator()); + + if (!payload.Accept(writer)) { + ACSDK_ERROR(LX("executeProvideState").d("reason", "writerRefusedJsonObject")); + } else { + sendEmptyContext = false; + } + } + + if (sendEmptyContext) { + m_contextManager->setState( + CONTEXT_MANAGER_STATE, "", avsCommon::avs::StateRefreshPolicy::SOMETIMES, stateRequestToken); + } else { + m_contextManager->setState( + CONTEXT_MANAGER_STATE, + buffer.GetString(), + avsCommon::avs::StateRefreshPolicy::SOMETIMES, + stateRequestToken); + } +} + +} // namespace afml +} // namespace alexaClientSDK diff --git a/AFML/test/AudioActivityTrackerTest.cpp b/AFML/test/AudioActivityTrackerTest.cpp new file mode 100644 index 0000000000..f3aa38e6ca --- /dev/null +++ b/AFML/test/AudioActivityTrackerTest.cpp @@ -0,0 +1,309 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/// @file AudioActivityTrackerTest.cpp +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include "AFML/AudioActivityTracker.h" + +namespace alexaClientSDK { +namespace afml { +namespace test { + +using namespace avsCommon::avs; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::test; +using namespace avsCommon::utils::json; +using namespace ::testing; + +/// Plenty of time for a test to complete. +static std::chrono::milliseconds WAIT_TIMEOUT(1000); + +/// Namespace for AudioActivityTracke. +static const std::string NAMESPACE_AUDIO_ACTIVITY_TRACKER("AudioActivityTracker"); + +/// The @c NamespaceAndName to send to the @c ContextManager. +static const NamespaceAndName NAMESPACE_AND_NAME_STATE{NAMESPACE_AUDIO_ACTIVITY_TRACKER, "ActivityState"}; + +/// Provide State Token for testing. +static const unsigned int PROVIDE_STATE_TOKEN_TEST{1}; + +/// The default Dialog Channel name. +static const std::string DIALOG_CHANNEL_NAME{"Dialog"}; + +/// The default dialog Channel priority. +static unsigned int DIALOG_CHANNEL_PRIORITY{100}; + +/// The default Dialog interface name. +static const std::string DIALOG_INTERFACE_NAME{"SpeechSynthesizer"}; + +/// The SpeechRecognizer interface name. +static const std::string AIP_INTERFACE_NAME{"SpeechRecognizer"}; + +/// The default Content Channel name. +static const std::string CONTENT_CHANNEL_NAME{"Content"}; + +/// The default Content interface name. +static const std::string CONTENT_INTERFACE_NAME{"AudioPlayer"}; + +/// The default Content Channel priority. +static unsigned int CONTENT_CHANNEL_PRIORITY{300}; + +/// Timeout to sleep before asking for provideState(). +static const std::chrono::milliseconds SHORT_TIMEOUT_MS = std::chrono::milliseconds(5); + +class AudioActivityTrackerTest : public ::testing::Test { +public: + AudioActivityTrackerTest(); + + void SetUp() override; + void TearDown() override; + + /// @c AudioActivityTracker to test + std::shared_ptr m_audioActivityTracker; + + /// @c ContextManager to provide state and update state. + std::shared_ptr m_mockContextManager; + + /// A dialogChannel used for testing. + std::shared_ptr m_dialogChannel; + + /// A contentChannel used for testing. + std::shared_ptr m_contentChannel; + + /** + * Verify that the provided state matches the expected state + * + * @param jsonState The state to verify + * @param channels The set of channels that's passed into the AudioActivityTracker + */ + void verifyState(const std::string& providedState, const std::vector& channels); + + /** + * A helper function to verify the context provided by the AudioActivityTracker matches the set the channels + * notified via notifyOfActivityUpdates(). + * + * @param channels The set of channels that's passed into the AudioActivityTracker + */ + void provideUpdate(const std::vector& channels); + + /** + * This is invoked in response to a @c setState call. + * + * @return @c SUCCESS. + */ + SetStateResult wakeOnSetState(); + + /// Promise to be fulfilled when @c setState is called. + std::promise m_wakeSetStatePromise; + + /// Future to notify when @c setState is called. + std::future m_wakeSetStateFuture; +}; + +AudioActivityTrackerTest::AudioActivityTrackerTest() : + m_wakeSetStatePromise{}, + m_wakeSetStateFuture{m_wakeSetStatePromise.get_future()} { +} + +void AudioActivityTrackerTest::SetUp() { + m_mockContextManager = std::make_shared>(); + m_audioActivityTracker = AudioActivityTracker::create(m_mockContextManager); + ASSERT_TRUE(m_mockContextManager != nullptr); + + m_dialogChannel = std::make_shared(DIALOG_CHANNEL_NAME, DIALOG_CHANNEL_PRIORITY); + m_dialogChannel->setInterface(DIALOG_INTERFACE_NAME); + ASSERT_TRUE(m_dialogChannel != nullptr); + + m_contentChannel = std::make_shared(CONTENT_CHANNEL_NAME, CONTENT_CHANNEL_PRIORITY); + m_contentChannel->setInterface(CONTENT_INTERFACE_NAME); + ASSERT_TRUE(m_contentChannel != nullptr); +} + +void AudioActivityTrackerTest::TearDown() { + m_audioActivityTracker->shutdown(); +} + +void AudioActivityTrackerTest::verifyState( + const std::string& providedState, + const std::vector& channels) { + rapidjson::Document jsonContent; + jsonContent.Parse(providedState); + + for (auto& channel : channels) { + rapidjson::Value::ConstMemberIterator channelNode; + + // channel name needs to be in lower case. + auto channelName = avsCommon::utils::string::stringToLowerCase(channel.name); + ASSERT_TRUE(jsonUtils::findNode(jsonContent, channelName, &channelNode)); + + // Get and verify interface name. + std::string interfaceName; + std::string expectedInterfaceName = channel.interfaceName; + // There is an requirement such that "SpeechRecognizer" is not a valid interface for the Dialog Channel. + if (AIP_INTERFACE_NAME == expectedInterfaceName) { + expectedInterfaceName = DIALOG_INTERFACE_NAME; + } + ASSERT_TRUE(jsonUtils::retrieveValue(channelNode->value, "interface", &interfaceName)); + ASSERT_EQ(interfaceName, expectedInterfaceName); + + // Get and verify idleTimeInMilliseconds. + int64_t idleTime; + bool isChannelActive = FocusState::NONE != channel.focusState; + // If interface is "SpeechRecognizer", then channel should expected to be not active instead. + if (AIP_INTERFACE_NAME == channel.interfaceName) { + isChannelActive = false; + } + ASSERT_TRUE(jsonUtils::retrieveValue(channelNode->value, "idleTimeInMilliseconds", &idleTime)); + if (isChannelActive) { + ASSERT_EQ(idleTime, 0); + } else { + ASSERT_NE(idleTime, 0); + } + } +} + +void AudioActivityTrackerTest::provideUpdate(const std::vector& channels) { + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_STATE, _, StateRefreshPolicy::SOMETIMES, PROVIDE_STATE_TOKEN_TEST)) + .Times(1) + .WillOnce(DoAll( + // need to include all four arguments, but only care about jsonState + Invoke([this, &channels]( + const avsCommon::avs::NamespaceAndName& namespaceAndName, + const std::string& jsonState, + const avsCommon::avs::StateRefreshPolicy& refreshPolicy, + const unsigned int stateRequestToken) { verifyState(jsonState, channels); }), + InvokeWithoutArgs(this, &AudioActivityTrackerTest::wakeOnSetState))); + + m_audioActivityTracker->notifyOfActivityUpdates(channels); + std::this_thread::sleep_for(SHORT_TIMEOUT_MS); + m_audioActivityTracker->provideState(NAMESPACE_AND_NAME_STATE, PROVIDE_STATE_TOKEN_TEST); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); +} + +SetStateResult AudioActivityTrackerTest::wakeOnSetState() { + m_wakeSetStatePromise.set_value(); + return SetStateResult::SUCCESS; +} + +/// Test if there's no activity updates, AudioActivityTracker will return an empty context. +TEST_F(AudioActivityTrackerTest, noActivityUpdate) { + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_STATE, "", StateRefreshPolicy::SOMETIMES, PROVIDE_STATE_TOKEN_TEST)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &AudioActivityTrackerTest::wakeOnSetState)); + + m_audioActivityTracker->provideState(NAMESPACE_AND_NAME_STATE, PROVIDE_STATE_TOKEN_TEST); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); +} + +/// Test if there's an empty set of activity updates, AudioActivityTracker will return an empty context. +TEST_F(AudioActivityTrackerTest, emptyActivityUpdate) { + const std::vector channels; + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_STATE, "", StateRefreshPolicy::SOMETIMES, PROVIDE_STATE_TOKEN_TEST)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &AudioActivityTrackerTest::wakeOnSetState)); + + m_audioActivityTracker->notifyOfActivityUpdates(channels); + m_audioActivityTracker->provideState(NAMESPACE_AND_NAME_STATE, PROVIDE_STATE_TOKEN_TEST); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); +} + +/// Test if there's an activityUpdate for one active channel, context will be reported correctly. +TEST_F(AudioActivityTrackerTest, oneActiveChannel) { + std::vector channels; + m_dialogChannel->setFocus(FocusState::FOREGROUND); + channels.push_back(m_dialogChannel->getState()); + provideUpdate(channels); +} + +/* + * Test if there's an activityUpdate for one Dialog channel with "SpeechRecognizer" as an interface, + * AudioActivityTracker will ignore it and report empty context. + */ +TEST_F(AudioActivityTrackerTest, oneActiveChannelWithAIPAsInterface) { + std::vector channels; + m_dialogChannel->setInterface(AIP_INTERFACE_NAME); + m_dialogChannel->setFocus(FocusState::FOREGROUND); + channels.push_back(m_dialogChannel->getState()); + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_STATE, "", StateRefreshPolicy::SOMETIMES, PROVIDE_STATE_TOKEN_TEST)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &AudioActivityTrackerTest::wakeOnSetState)); + + m_audioActivityTracker->notifyOfActivityUpdates(channels); + std::this_thread::sleep_for(SHORT_TIMEOUT_MS); + m_audioActivityTracker->provideState(NAMESPACE_AND_NAME_STATE, PROVIDE_STATE_TOKEN_TEST); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); +} + +/* + * Test if there's an activityUpdate for one Dialog channel with "SpeechSynthesizer" and then "SpeechRecognizer" as an + * interface, AudioActivityTracker will ignore the "SpeechRecognizer" interface going active but report + * "SpeechSynthesizer" with idleTime not equal to zero. + */ +TEST_F(AudioActivityTrackerTest, oneActiveChannelWithDefaultAndAIPAsInterfaces) { + std::vector channels; + m_dialogChannel->setFocus(FocusState::FOREGROUND); + channels.push_back(m_dialogChannel->getState()); + provideUpdate(channels); +} + +/// Test if there's an activityUpdate for two active channels, context will be reported correctly. +TEST_F(AudioActivityTrackerTest, twoActiveChannels) { + std::vector channels; + m_dialogChannel->setFocus(FocusState::FOREGROUND); + m_contentChannel->setFocus(FocusState::BACKGROUND); + channels.push_back(m_dialogChannel->getState()); + channels.push_back(m_contentChannel->getState()); + provideUpdate(channels); +} + +/// Test if there's an activityUpdate for one active and one idle channels, context will be reported correctly. +TEST_F(AudioActivityTrackerTest, oneActiveOneIdleChannels) { + std::vector channels; + m_dialogChannel->setFocus(FocusState::FOREGROUND); + m_contentChannel->setFocus(FocusState::BACKGROUND); + m_dialogChannel->setFocus(FocusState::NONE); + m_contentChannel->setFocus(FocusState::FOREGROUND); + channels.push_back(m_dialogChannel->getState()); + channels.push_back(m_contentChannel->getState()); + provideUpdate(channels); +} + +} // namespace test +} // namespace afml +} // namespace alexaClientSDK diff --git a/AFML/test/CMakeLists.txt b/AFML/test/CMakeLists.txt index 670263f024..d376070274 100644 --- a/AFML/test/CMakeLists.txt +++ b/AFML/test/CMakeLists.txt @@ -1 +1,5 @@ -discover_unit_tests("${AFML_SOURCE_DIR}/include" AFML) +set(INCLUDE_PATH + "${AFML_SOURCE_DIR}/include" + "${AVSCommon_SOURCE_DIR}/SDKInterfaces/test") + +discover_unit_tests("${INCLUDE_PATH}" AFML) diff --git a/AFML/test/FocusManagerTest.cpp b/AFML/test/FocusManagerTest.cpp index 3fd9fb407a..215e18e1bf 100644 --- a/AFML/test/FocusManagerTest.cpp +++ b/AFML/test/FocusManagerTest.cpp @@ -1,7 +1,5 @@ /* - * FocusManagerTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -18,6 +16,7 @@ #include #include +#include #include "AFML/FocusManager.h" @@ -26,6 +25,7 @@ namespace afml { namespace test { using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::test; using namespace avsCommon::avs; /// Short time out for when callbacks are expected not to occur. @@ -34,38 +34,38 @@ static const auto SHORT_TIMEOUT = std::chrono::milliseconds(50); /// Long time out for the Channel observer to wait for the focus change callback (we should not reach this). static const auto DEFAULT_TIMEOUT = std::chrono::seconds(15); -/// The dialog Channel name used in intializing the FocusManager. +/// The dialog Channel name used in initializing the FocusManager. static const std::string DIALOG_CHANNEL_NAME = "DialogChannel"; -/// The alerts Channel name used in intializing the FocusManager. +/// The alerts Channel name used in initializing the FocusManager. static const std::string ALERTS_CHANNEL_NAME = "AlertsChannel"; -/// The content Channel name used in intializing the FocusManager. +/// The content Channel name used in initializing the FocusManager. static const std::string CONTENT_CHANNEL_NAME = "ContentChannel"; /// An incorrect Channel name that is never initialized as a Channel. static const std::string INCORRECT_CHANNEL_NAME = "aksdjfl;aksdjfl;akdsjf"; -/// The priority of the dialog Channel used in intializing the FocusManager. +/// The priority of the dialog Channel used in initializing the FocusManager. static const unsigned int DIALOG_CHANNEL_PRIORITY = 10; -/// The priority of the alerts Channel used in intializing the FocusManager. +/// The priority of the alerts Channel used in initializing the FocusManager. static const unsigned int ALERTS_CHANNEL_PRIORITY = 20; -/// The priority of the content Channel used in intializing the FocusManager. +/// The priority of the content Channel used in initializing the FocusManager. static const unsigned int CONTENT_CHANNEL_PRIORITY = 30; -/// Sample dialog activity id. -static const std::string DIALOG_ACTIVITY_ID = "dialog"; +/// Sample dialog interface name. +static const std::string DIALOG_INTERFACE_NAME = "dialog"; -/// Sample alerts activity id. -static const std::string ALERTS_ACTIVITY_ID = "alerts"; +/// Sample alerts interface name. +static const std::string ALERTS_INTERFACE_NAME = "alerts"; -/// Sample content activity id. -static const std::string CONTENT_ACTIVITY_ID = "content"; +/// Sample content interface name. +static const std::string CONTENT_INTERFACE_NAME = "content"; -/// Another sample dialog activity id. -static const std::string DIFFERENT_DIALOG_ACTIVITY_ID = "different dialog"; +/// Another sample dialog interface name. +static const std::string DIFFERENT_DIALOG_INTERFACE_NAME = "different dialog"; /// A test observer that mocks out the ChannelObserverInterface##onFocusChanged() call. class TestClient : public ChannelObserverInterface { @@ -73,8 +73,7 @@ class TestClient : public ChannelObserverInterface { /** * Constructor. */ - TestClient() : - m_focusState(FocusState::NONE), m_focusChangeOccurred(false) { + TestClient() : m_focusState(FocusState::NONE), m_focusChangeOccurred(false) { } /** @@ -98,9 +97,7 @@ class TestClient : public ChannelObserverInterface { */ FocusState waitForFocusChange(std::chrono::milliseconds timeout, bool* focusChanged) { std::unique_lock lock(m_mutex); - bool success = m_focusChanged.wait_for(lock, timeout, [this] () { - return m_focusChangeOccurred; - }); + bool success = m_focusChanged.wait_for(lock, timeout, [this]() { return m_focusChangeOccurred; }); if (!success) { *focusChanged = false; @@ -125,6 +122,86 @@ class TestClient : public ChannelObserverInterface { bool m_focusChangeOccurred; }; +/// A test observer that mocks out the ActivityTrackerInterface##notifyOfActivityUpdates() call. +class MockActivityTrackerInterface : public ActivityTrackerInterface { +public: + /** + * Constructor. + */ + MockActivityTrackerInterface() : m_activityUpdatesOccurred{false} { + } + + /// Structure of expected Channel::State result from tests. + struct ExpectedChannelStateResult { + /// The expected channel name. + const std::string name; + + /// The expected interface name. + const std::string interfaceName; + + /// The expected focus state. + const FocusState focusState; + }; + + /** + * Implementation of the ActivityTrackerInterface##notifyOfActivityUpdates() callback. + * + * @param channelStates A vector of @c Channel::State that has been updated. + */ + void notifyOfActivityUpdates(const std::vector& channelStates) override { + std::unique_lock lock(m_mutex); + m_updatedChannels.clear(); + for (auto& channel : channelStates) { + m_updatedChannels.push_back(channel); + } + m_activityUpdatesOccurred = true; + m_activityChanged.notify_one(); + } + + /** + * Waits for the ActivityTrackerInterface##notifyOfActivityUpdates() callback. + * + * @param timeout The amount of time to wait for the callback. + * @param expected The expected channel state results + */ + void waitForActivityUpdates( + std::chrono::milliseconds timeout, + const std::vector& expected) { + std::unique_lock lock(m_mutex); + bool success = m_activityChanged.wait_for(lock, timeout, [this, &expected]() { + if (m_activityUpdatesOccurred) { + EXPECT_EQ(m_updatedChannels.size(), expected.size()); + auto count = 0; + for (auto& channel : m_updatedChannels) { + EXPECT_EQ(channel.name, expected[count].name); + EXPECT_EQ(channel.interfaceName, expected[count].interfaceName); + EXPECT_EQ(channel.focusState, expected[count].focusState); + count++; + } + } + return m_activityUpdatesOccurred; + }); + + if (success) { + m_activityUpdatesOccurred = false; + } + ASSERT_TRUE(success); + } + +private: + /// The focus state of the observer. + std::vector m_updatedChannels; + + /// A lock to guard against activity changes. + std::mutex m_mutex; + + /// A condition variable to wait for activity changes. + std::condition_variable m_activityChanged; + + /// A boolean flag so that we can re-use the observer even after a callback has occurred. + bool m_activityUpdatesOccurred; +}; + /// Manages testing focus changes class FocusChangeManager { public: @@ -155,7 +232,9 @@ class FocusChangeManager { }; /// Test fixture for testing FocusManager. -class FocusManagerTest : public ::testing::Test, public FocusChangeManager { +class FocusManagerTest + : public ::testing::Test + , public FocusChangeManager { protected: /// The FocusManager. std::shared_ptr m_focusManager; @@ -172,18 +251,21 @@ class FocusManagerTest : public ::testing::Test, public FocusChangeManager { /// A client that acquires the content Channel. std::shared_ptr contentClient; + std::shared_ptr m_activityTracker; + virtual void SetUp() { + m_activityTracker = std::make_shared(); + FocusManager::ChannelConfiguration dialogChannelConfig{DIALOG_CHANNEL_NAME, DIALOG_CHANNEL_PRIORITY}; FocusManager::ChannelConfiguration alertsChannelConfig{ALERTS_CHANNEL_NAME, ALERTS_CHANNEL_PRIORITY}; FocusManager::ChannelConfiguration contentChannelConfig{CONTENT_CHANNEL_NAME, CONTENT_CHANNEL_PRIORITY}; - std::vector channelConfigurations { - dialogChannelConfig, alertsChannelConfig, contentChannelConfig - }; + std::vector channelConfigurations{ + dialogChannelConfig, alertsChannelConfig, contentChannelConfig}; - m_focusManager = std::make_shared(channelConfigurations); + m_focusManager = std::make_shared(channelConfigurations, m_activityTracker); dialogClient = std::make_shared(); alertsClient = std::make_shared(); @@ -194,12 +276,12 @@ class FocusManagerTest : public ::testing::Test, public FocusChangeManager { /// Tests acquireChannel with an invalid Channel name, expecting no focus changes to be made. TEST_F(FocusManagerTest, acquireInvalidChannelName) { - ASSERT_FALSE(m_focusManager->acquireChannel(INCORRECT_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); + ASSERT_FALSE(m_focusManager->acquireChannel(INCORRECT_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); } /// Tests acquireChannel, expecting to get Foreground status since no other Channels are active. TEST_F(FocusManagerTest, acquireChannelWithNoOtherChannelsActive) { - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::FOREGROUND); } @@ -208,20 +290,20 @@ TEST_F(FocusManagerTest, acquireChannelWithNoOtherChannelsActive) { * priority Channel should get Foreground focus. */ TEST_F(FocusManagerTest, acquireLowerPriorityChannelWithOneHigherPriorityChannelTaken) { - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); - ASSERT_TRUE(m_focusManager->acquireChannel(ALERTS_CHANNEL_NAME, alertsClient, ALERTS_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); + ASSERT_TRUE(m_focusManager->acquireChannel(ALERTS_CHANNEL_NAME, alertsClient, ALERTS_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::FOREGROUND); assertFocusChange(alertsClient, FocusState::BACKGROUND); } /** - * Tests acquireChannel with three Channels. The two lowest priority Channels should get Background focus while the + * Tests acquireChannel with three Channels. The two lowest priority Channels should get Background focus while the * highest priority Channel should be Foreground focused. */ TEST_F(FocusManagerTest, aquireLowerPriorityChannelWithTwoHigherPriorityChannelsTaken) { - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); - ASSERT_TRUE(m_focusManager->acquireChannel(ALERTS_CHANNEL_NAME, alertsClient, ALERTS_ACTIVITY_ID)); - ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); + ASSERT_TRUE(m_focusManager->acquireChannel(ALERTS_CHANNEL_NAME, alertsClient, ALERTS_INTERFACE_NAME)); + ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::FOREGROUND); assertFocusChange(alertsClient, FocusState::BACKGROUND); assertFocusChange(contentClient, FocusState::BACKGROUND); @@ -230,13 +312,13 @@ TEST_F(FocusManagerTest, aquireLowerPriorityChannelWithTwoHigherPriorityChannels /** * Tests acquireChannel with a high priority Channel while a low priority Channel is already taken. The lower priority * Channel should at first be Foreground focused and then get a change to Background focus while the higher priority - * should be Foreground focused. + * should be Foreground focused. */ TEST_F(FocusManagerTest, acquireHigherPriorityChannelWithOneLowerPriorityChannelTaken) { - ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_INTERFACE_NAME)); assertFocusChange(contentClient, FocusState::FOREGROUND); - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); assertFocusChange(contentClient, FocusState::BACKGROUND); assertFocusChange(dialogClient, FocusState::FOREGROUND); } @@ -246,10 +328,11 @@ TEST_F(FocusManagerTest, acquireHigherPriorityChannelWithOneLowerPriorityChannel * should obtain Foreground focus. */ TEST_F(FocusManagerTest, kickOutActivityOnSameChannel) { - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::FOREGROUND); - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, anotherDialogClient, DIFFERENT_DIALOG_ACTIVITY_ID)); + ASSERT_TRUE( + m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, anotherDialogClient, DIFFERENT_DIALOG_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::NONE); assertFocusChange(anotherDialogClient, FocusState::FOREGROUND); } @@ -258,7 +341,7 @@ TEST_F(FocusManagerTest, kickOutActivityOnSameChannel) { * Tests releaseChannel with a single Channel. The observer should be notified to stop. */ TEST_F(FocusManagerTest, simpleReleaseChannel) { - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::FOREGROUND); ASSERT_TRUE(m_focusManager->releaseChannel(DIALOG_CHANNEL_NAME, dialogClient).get()); @@ -269,7 +352,7 @@ TEST_F(FocusManagerTest, simpleReleaseChannel) { * Tests releaseChannel on a Channel with an incorrect observer. The client should not receive any callback. */ TEST_F(FocusManagerTest, simpleReleaseChannelWithIncorrectObserver) { - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::FOREGROUND); ASSERT_FALSE(m_focusManager->releaseChannel(CONTENT_CHANNEL_NAME, dialogClient).get()); @@ -285,22 +368,22 @@ TEST_F(FocusManagerTest, simpleReleaseChannelWithIncorrectObserver) { * be notified to stop. */ TEST_F(FocusManagerTest, releaseForegroundChannelWhileBackgroundChannelTaken) { - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::FOREGROUND); - ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_INTERFACE_NAME)); assertFocusChange(contentClient, FocusState::BACKGROUND); ASSERT_TRUE(m_focusManager->releaseChannel(DIALOG_CHANNEL_NAME, dialogClient).get()); assertFocusChange(dialogClient, FocusState::NONE); assertFocusChange(contentClient, FocusState::FOREGROUND); - } +} /** * Tests stopForegroundActivity with a single Channel. The observer should be notified to stop. */ TEST_F(FocusManagerTest, simpleNonTargetedStop) { - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::FOREGROUND); m_focusManager->stopForegroundActivity(); @@ -308,17 +391,17 @@ TEST_F(FocusManagerTest, simpleNonTargetedStop) { } /** - * Tests stopForegroundActivity with a three active Channels. The Foreground Channel observer should be notified to + * Tests stopForegroundActivity with a three active Channels. The Foreground Channel observer should be notified to * stop each time and the next highest priority background Channel should be brought to the foreground each time. */ TEST_F(FocusManagerTest, threeNonTargetedStopsWithThreeActivitiesHappening) { - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::FOREGROUND); - ASSERT_TRUE(m_focusManager->acquireChannel(ALERTS_CHANNEL_NAME, alertsClient, ALERTS_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(ALERTS_CHANNEL_NAME, alertsClient, ALERTS_INTERFACE_NAME)); assertFocusChange(alertsClient, FocusState::BACKGROUND); - ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_INTERFACE_NAME)); assertFocusChange(contentClient, FocusState::BACKGROUND); m_focusManager->stopForegroundActivity(); @@ -334,32 +417,32 @@ TEST_F(FocusManagerTest, threeNonTargetedStopsWithThreeActivitiesHappening) { } /** - * Tests stopForegroundActivity with a single Channel. The next client to request a different Channel should be given + * Tests stopForegroundActivity with a single Channel. The next client to request a different Channel should be given * foreground focus. */ TEST_F(FocusManagerTest, stopForegroundActivityAndAcquireDifferentChannel) { - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::FOREGROUND); m_focusManager->stopForegroundActivity(); assertFocusChange(dialogClient, FocusState::NONE); - ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_INTERFACE_NAME)); assertFocusChange(contentClient, FocusState::FOREGROUND); } /** - * Tests stopForegroundActivity with a single Channel. The next client to request the same Channel should be given + * Tests stopForegroundActivity with a single Channel. The next client to request the same Channel should be given * foreground focus. */ TEST_F(FocusManagerTest, stopForegroundActivityAndAcquireSameChannel) { - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::FOREGROUND); m_focusManager->stopForegroundActivity(); assertFocusChange(dialogClient, FocusState::NONE); - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::FOREGROUND); } @@ -368,10 +451,10 @@ TEST_F(FocusManagerTest, stopForegroundActivityAndAcquireSameChannel) { * should remain foregrounded while the background Channel's observer should be notified to stop. */ TEST_F(FocusManagerTest, releaseBackgroundChannelWhileTwoChannelsTaken) { - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::FOREGROUND); - ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_INTERFACE_NAME)); assertFocusChange(contentClient, FocusState::BACKGROUND); ASSERT_TRUE(m_focusManager->releaseChannel(CONTENT_CHANNEL_NAME, contentClient).get()); @@ -381,26 +464,181 @@ TEST_F(FocusManagerTest, releaseBackgroundChannelWhileTwoChannelsTaken) { } /** - * Tests acquireChannel of an already active foreground Channel while another Channel is also active. The original + * Tests acquireChannel of an already active foreground Channel while another Channel is also active. The original * observer of the foreground be notified to stop and the new observer of the Channel will be notified that it has * Foreground focus. The originally backgrounded Channel should not change focus. */ TEST_F(FocusManagerTest, kickOutActivityOnSameChannelWhileOtherChannelsActive) { - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::FOREGROUND); - ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_ACTIVITY_ID)); + ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_INTERFACE_NAME)); assertFocusChange(contentClient, FocusState::BACKGROUND); - ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, anotherDialogClient, DIFFERENT_DIALOG_ACTIVITY_ID)); + ASSERT_TRUE( + m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, anotherDialogClient, DIFFERENT_DIALOG_INTERFACE_NAME)); assertFocusChange(dialogClient, FocusState::NONE); assertFocusChange(anotherDialogClient, FocusState::FOREGROUND); assertNoFocusChange(contentClient); } +/// Tests that multiple observers can be added, and that they are notified of all focus changes. +TEST_F(FocusManagerTest, addObserver) { + // These are all the observers that will be added. + std::vector> observers; + observers.push_back(std::make_shared()); + observers.push_back(std::make_shared()); + + for (auto& observer : observers) { + m_focusManager->addObserver(observer); + } + + // Focus change on DIALOG channel. + for (auto& observer : observers) { + observer->expectFocusChange(DIALOG_CHANNEL_NAME, FocusState::FOREGROUND); + } + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); + + // Focus change on CONTENT channel. + for (auto& observer : observers) { + observer->expectFocusChange(CONTENT_CHANNEL_NAME, FocusState::BACKGROUND); + } + ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_INTERFACE_NAME)); + + // Wait for all pending changes to complete. + for (auto& observer : observers) { + ASSERT_TRUE(observer->waitForFocusChanges(DEFAULT_TIMEOUT)); + } + + // Drop foreground focus. + for (auto& observer : observers) { + observer->expectFocusChange(DIALOG_CHANNEL_NAME, FocusState::NONE); + observer->expectFocusChange(CONTENT_CHANNEL_NAME, FocusState::FOREGROUND); + } + m_focusManager->stopForegroundActivity(); + + for (auto& observer : observers) { + ASSERT_TRUE(observer->waitForFocusChanges(DEFAULT_TIMEOUT)); + } +} + +/// Tests that observers can be removed, and that they are no longer notified of focus changes after removal. +TEST_F(FocusManagerTest, removeObserver) { + // These are all the observers that will ever be added. + std::vector> allObservers; + + // Note: StrictMock here so that we fail on unexpected observer callbacks. + allObservers.push_back(std::make_shared>()); + allObservers.push_back(std::make_shared>()); + + for (auto& observer : allObservers) { + m_focusManager->addObserver(observer); + } + + // These are the observers which are currently added. + auto activeObservers = allObservers; + + // One focus change with all observers added. + for (auto& observer : activeObservers) { + observer->expectFocusChange(DIALOG_CHANNEL_NAME, FocusState::FOREGROUND); + } + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); + + // Wait for all pending changes to complete. + for (auto& observer : allObservers) { + ASSERT_TRUE(observer->waitForFocusChanges(DEFAULT_TIMEOUT)); + } + + // Remove an observer. + m_focusManager->removeObserver(activeObservers.back()); + activeObservers.pop_back(); + + // Now another focus change with the removed observer. + for (auto& observer : activeObservers) { + observer->expectFocusChange(CONTENT_CHANNEL_NAME, FocusState::BACKGROUND); + } + ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_INTERFACE_NAME)); + + // Wait for all pending changes to complete. + for (auto& observer : allObservers) { + ASSERT_TRUE(observer->waitForFocusChanges(DEFAULT_TIMEOUT)); + } + + // Remove all remaining observers. + for (auto& observer : activeObservers) { + m_focusManager->removeObserver(observer); + } + activeObservers.clear(); + + // And a final focus change with no observers. + m_focusManager->stopForegroundActivity(); + + for (auto& observer : allObservers) { + ASSERT_TRUE(observer->waitForFocusChanges(DEFAULT_TIMEOUT)); + } +} + +/** + * Tests activityTracker with three Channels and make sure notifyOfActivityUpdates() is called correctly. + */ +TEST_F(FocusManagerTest, activityTracker) { + // Acquire Content channel and expect notifyOfActivityUpdates() to notify activities on the Content channel. + const std::vector test1 = { + {CONTENT_CHANNEL_NAME, CONTENT_INTERFACE_NAME, FocusState::FOREGROUND}}; + ASSERT_TRUE(m_focusManager->acquireChannel(CONTENT_CHANNEL_NAME, contentClient, CONTENT_INTERFACE_NAME)); + m_activityTracker->waitForActivityUpdates(DEFAULT_TIMEOUT, test1); + + // Acquire Alert channel and expect notifyOfActivityUpdates() to notify activities to both Content and Alert + // channels. + const std::vector test2 = { + {CONTENT_CHANNEL_NAME, CONTENT_INTERFACE_NAME, FocusState::BACKGROUND}, + {ALERTS_CHANNEL_NAME, ALERTS_INTERFACE_NAME, FocusState::FOREGROUND}}; + ASSERT_TRUE(m_focusManager->acquireChannel(ALERTS_CHANNEL_NAME, alertsClient, ALERTS_INTERFACE_NAME)); + m_activityTracker->waitForActivityUpdates(DEFAULT_TIMEOUT, test2); + + // Acquire Dialog channel and expect notifyOfActivityUpdates() to notify activities to both Alert and Dialog + // channels. + const std::vector test3 = { + {ALERTS_CHANNEL_NAME, ALERTS_INTERFACE_NAME, FocusState::BACKGROUND}, + {DIALOG_CHANNEL_NAME, DIALOG_INTERFACE_NAME, FocusState::FOREGROUND}}; + ASSERT_TRUE(m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, dialogClient, DIALOG_INTERFACE_NAME)); + m_activityTracker->waitForActivityUpdates(DEFAULT_TIMEOUT, test3); + + // Release Content channel and expect notifyOfActivityUpdates() to notify activities to Content channel. + const std::vector test4 = { + {CONTENT_CHANNEL_NAME, CONTENT_INTERFACE_NAME, FocusState::NONE}}; + ASSERT_TRUE(m_focusManager->releaseChannel(CONTENT_CHANNEL_NAME, contentClient).get()); + m_activityTracker->waitForActivityUpdates(DEFAULT_TIMEOUT, test4); + + // Acquire Dialog channel with a different interface and expect notifyOfActivityUpdates() to notify activities to + // Dialog channels first with focus change on the previous one, and then later with the updated interface. + const std::vector test5 = { + {DIALOG_CHANNEL_NAME, DIALOG_INTERFACE_NAME, FocusState::NONE}, + {DIALOG_CHANNEL_NAME, DIFFERENT_DIALOG_INTERFACE_NAME, FocusState::FOREGROUND}}; + ASSERT_TRUE( + m_focusManager->acquireChannel(DIALOG_CHANNEL_NAME, anotherDialogClient, DIFFERENT_DIALOG_INTERFACE_NAME)); + m_activityTracker->waitForActivityUpdates(DEFAULT_TIMEOUT, test5); + + // Release Dialog channel and expect notifyOfActivityUpdates() to notify activities to both Dialog and Alerts + // channels. + const std::vector test6 = { + {DIALOG_CHANNEL_NAME, DIFFERENT_DIALOG_INTERFACE_NAME, FocusState::NONE}, + {ALERTS_CHANNEL_NAME, ALERTS_INTERFACE_NAME, FocusState::FOREGROUND}}; + ASSERT_TRUE(m_focusManager->releaseChannel(DIALOG_CHANNEL_NAME, anotherDialogClient).get()); + m_activityTracker->waitForActivityUpdates(DEFAULT_TIMEOUT, test6); + + // Release Alerts channel and expect notifyOfActivityUpdates() to notify activities to Alerts channel. + const std::vector test7 = { + {ALERTS_CHANNEL_NAME, ALERTS_INTERFACE_NAME, FocusState::NONE}}; + ASSERT_TRUE(m_focusManager->releaseChannel(ALERTS_CHANNEL_NAME, alertsClient).get()); + m_activityTracker->waitForActivityUpdates(DEFAULT_TIMEOUT, test7); +} + /// Test fixture for testing Channel. -class ChannelTest : public ::testing::Test, public FocusChangeManager { +class ChannelTest + : public ::testing::Test + , public FocusChangeManager { protected: /// A test client that used to observe Channels. std::shared_ptr clientA; @@ -412,68 +650,76 @@ class ChannelTest : public ::testing::Test, public FocusChangeManager { std::shared_ptr testChannel; virtual void SetUp() { - clientA = std::make_shared(); clientB = std::make_shared(); - testChannel = std::make_shared(DIALOG_CHANNEL_PRIORITY); + testChannel = std::make_shared(DIALOG_CHANNEL_NAME, DIALOG_CHANNEL_PRIORITY); } }; -/// Tests the that the getPriority method of Channel works properly. -TEST_F(ChannelTest, getPriority) { - ASSERT_EQ(testChannel->getPriority(), DIALOG_CHANNEL_PRIORITY); +/// Tests that the getName method of Channel works properly. +TEST_F(ChannelTest, getName) { + ASSERT_EQ(testChannel->getName(), DIALOG_CHANNEL_NAME); } -/// Tests that an old observer is kicked out on a Channel when a new observer is set. -TEST_F(ChannelTest, kickoutOldObserver) { - testChannel->setObserver(clientA); - - testChannel->setFocus(FocusState::FOREGROUND); - assertFocusChange(clientA, FocusState::FOREGROUND); - - testChannel->setObserver(clientB); - assertFocusChange(clientA, FocusState::NONE); +/// Tests that the getPriority method of Channel works properly. +TEST_F(ChannelTest, getPriority) { + ASSERT_EQ(testChannel->getPriority(), DIALOG_CHANNEL_PRIORITY); } /// Tests that the observer properly gets notified of focus changes. TEST_F(ChannelTest, setObserverThenSetFocus) { testChannel->setObserver(clientA); - testChannel->setFocus(FocusState::FOREGROUND); + ASSERT_TRUE(testChannel->setFocus(FocusState::FOREGROUND)); assertFocusChange(clientA, FocusState::FOREGROUND); - testChannel->setFocus(FocusState::BACKGROUND); + ASSERT_TRUE(testChannel->setFocus(FocusState::BACKGROUND)); assertFocusChange(clientA, FocusState::BACKGROUND); - testChannel->setFocus(FocusState::NONE); + ASSERT_TRUE(testChannel->setFocus(FocusState::NONE)); assertFocusChange(clientA, FocusState::NONE); + + ASSERT_FALSE(testChannel->setFocus(FocusState::NONE)); } /// Tests that Channels are compared properly TEST_F(ChannelTest, priorityComparison) { - std::shared_ptr lowerPriorityChannel = std::make_shared(CONTENT_CHANNEL_PRIORITY); + std::shared_ptr lowerPriorityChannel = + std::make_shared(CONTENT_CHANNEL_NAME, CONTENT_CHANNEL_PRIORITY); ASSERT_TRUE(*testChannel > *lowerPriorityChannel); ASSERT_FALSE(*lowerPriorityChannel > *testChannel); } -/** - * Tests that the stopActivity method on Channel works properly and that observers are stopped if the activity id - * matches the the Channel's activity and doesn't get stopped if the ids don't match. - */ -TEST_F(ChannelTest, testStopActivity) { - testChannel->setActivityId(DIALOG_ACTIVITY_ID); +/// Tests that a Channel correctly reports whether it has an observer. +TEST_F(ChannelTest, hasObserver) { + ASSERT_FALSE(testChannel->hasObserver()); testChannel->setObserver(clientA); + ASSERT_TRUE(testChannel->hasObserver()); + testChannel->setObserver(clientB); + ASSERT_TRUE(testChannel->hasObserver()); + testChannel->setObserver(nullptr); + ASSERT_FALSE(testChannel->hasObserver()); +} - testChannel->setFocus(FocusState::FOREGROUND); - assertFocusChange(clientA, FocusState::FOREGROUND); - - ASSERT_FALSE(testChannel->stopActivity(CONTENT_ACTIVITY_ID)); - assertNoFocusChange(clientA); - - ASSERT_TRUE(testChannel->stopActivity(DIALOG_ACTIVITY_ID)); - assertFocusChange(clientA, FocusState::NONE); +/* + * Tests that the timeAtIdle only gets updated when channel goes to idle and not when channel goes to Foreground or + * Background. + */ +TEST_F(ChannelTest, getTimeAtIdle) { + auto startTime = testChannel->getState().timeAtIdle; + ASSERT_TRUE(testChannel->setFocus(FocusState::FOREGROUND)); + auto afterForegroundTime = testChannel->getState().timeAtIdle; + ASSERT_EQ(startTime, afterForegroundTime); + + ASSERT_TRUE(testChannel->setFocus(FocusState::BACKGROUND)); + auto afterBackgroundTime = testChannel->getState().timeAtIdle; + ASSERT_EQ(afterBackgroundTime, afterForegroundTime); + + ASSERT_TRUE(testChannel->setFocus(FocusState::NONE)); + auto afterNoneTime = testChannel->getState().timeAtIdle; + ASSERT_GT(afterNoneTime, afterBackgroundTime); } -} // namespace test -} // namespace afml -} // namespace alexaClientSDK +} // namespace test +} // namespace afml +} // namespace alexaClientSDK diff --git a/AFML/test/VisualActivityTrackerTest.cpp b/AFML/test/VisualActivityTrackerTest.cpp new file mode 100644 index 0000000000..a4e572c158 --- /dev/null +++ b/AFML/test/VisualActivityTrackerTest.cpp @@ -0,0 +1,270 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/// @file VisualActivityTrackerTest.cpp +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include "AFML/VisualActivityTracker.h" + +namespace alexaClientSDK { +namespace afml { +namespace test { + +using namespace avsCommon::avs; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::test; +using namespace avsCommon::utils::json; +using namespace ::testing; + +/// Plenty of time for a test to complete. +static std::chrono::milliseconds WAIT_TIMEOUT(1000); + +/// Namespace for AudioActivityTracke. +static const std::string NAMESPACE_AUDIO_ACTIVITY_TRACKER("VisualActivityTracker"); + +/// The @c NamespaceAndName to send to the @c ContextManager. +static const NamespaceAndName NAMESPACE_AND_NAME_STATE{NAMESPACE_AUDIO_ACTIVITY_TRACKER, "ActivityState"}; + +/// Provide State Token for testing. +static const unsigned int PROVIDE_STATE_TOKEN_TEST{1}; + +/// The default Visual Channel name. +static const std::string VISUAL_CHANNEL_NAME{"Visual"}; + +/// The default Visual Interface name. +static const std::string VISUAL_INTERFACE_NAME{"TempateRuntime"}; + +/// The default Visual Channel priority. +static unsigned int VISUAL_CHANNEL_PRIORITY{100}; + +/// The default Invalid Channel name. +static const std::string INVALID_CHANNEL_NAME{"Invalid"}; + +/// The default Channel priority for the invalid channel. +static unsigned int INVALID_CHANNEL_PRIORITY{300}; + +/// Timeout to sleep before asking for provideState(). +static const std::chrono::milliseconds SHORT_TIMEOUT_MS = std::chrono::milliseconds(5); + +/// Test harness for @c VisualActivityTrackerTest class. +class VisualActivityTrackerTest : public ::testing::Test { +public: + /// A constructor which initializes the promises and futures needed for the test class. + VisualActivityTrackerTest(); + + /// Set up the test harness for running a test. + void SetUp() override; + + /// Clean up the test harness after running a test. + void TearDown() override; + + /// @c VisualActivityTracker to test + std::shared_ptr m_VisualActivityTracker; + + /// @c ContextManager to provide state and update state. + std::shared_ptr m_mockContextManager; + + /// A visualChannel used for testing. + std::shared_ptr m_visualChannel; + + /** + * Verify that the provided state matches the expected state + * + * @param jsonState The state to verify + * @param channels The set of channels that's passed into the VisualActivityTracker + */ + void verifyState(const std::string& providedState, const std::vector& channels); + + /** + * A helper function to verify the context provided by the VisualActivityTracker matches the set the channels + * notified via notifyOfActivityUpdates(). + * + * @param channels The set of channels that's passed into the VisualActivityTracker + */ + void provideUpdate(const std::vector& channels); + + /** + * This is invoked in response to a @c setState call. + * + * @return @c SUCCESS. + */ + SetStateResult wakeOnSetState(); + + /// Promise to be fulfilled when @c setState is called. + std::promise m_wakeSetStatePromise; + + /// Future to notify when @c setState is called. + std::future m_wakeSetStateFuture; +}; + +VisualActivityTrackerTest::VisualActivityTrackerTest() : m_wakeSetStateFuture{m_wakeSetStatePromise.get_future()} { +} + +void VisualActivityTrackerTest::SetUp() { + m_mockContextManager = std::make_shared>(); + m_VisualActivityTracker = VisualActivityTracker::create(m_mockContextManager); + ASSERT_TRUE(m_mockContextManager != nullptr); + + m_visualChannel = std::make_shared(VISUAL_CHANNEL_NAME, VISUAL_CHANNEL_PRIORITY); + m_visualChannel->setInterface(VISUAL_INTERFACE_NAME); + ASSERT_TRUE(m_visualChannel != nullptr); +} + +void VisualActivityTrackerTest::TearDown() { + m_VisualActivityTracker->shutdown(); +} + +void VisualActivityTrackerTest::verifyState( + const std::string& providedState, + const std::vector& channels) { + rapidjson::Document jsonContent; + jsonContent.Parse(providedState); + + // VisualActivityTracker should return empty context if otherwise if the vector is empty. + if (channels.size() == 0) { + ASSERT_TRUE(providedState.empty()); + return; + } + + // VisualActivityTracker should return empty context if any channel is not VISUAL_CHANNEL. + for (auto& channel : channels) { + if (FocusManagerInterface::VISUAL_CHANNEL_NAME != channel.name) { + ASSERT_TRUE(providedState.empty()); + return; + } + } + + // Get the last element of the channels vector as that's the most recent updates. + const auto& channel = channels.back(); + + // If channel is not active, VisualActivityTracker should return empty context as well. + if (FocusState::NONE == channel.focusState) { + ASSERT_TRUE(providedState.empty()); + return; + } + + // Get "focused" node. + rapidjson::Value::ConstMemberIterator focusNode; + ASSERT_TRUE(jsonUtils::findNode(jsonContent, "focused", &focusNode)); + + // Get and verify interface name. + std::string interfaceName; + ASSERT_TRUE(jsonUtils::retrieveValue(focusNode->value, "interface", &interfaceName)); + ASSERT_EQ(interfaceName, channel.interfaceName); +} + +void VisualActivityTrackerTest::provideUpdate(const std::vector& channels) { + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_STATE, _, StateRefreshPolicy::SOMETIMES, PROVIDE_STATE_TOKEN_TEST)) + .Times(1) + .WillOnce(DoAll( + // need to include all four arguments, but only care about jsonState + Invoke([this, &channels]( + const avsCommon::avs::NamespaceAndName& namespaceAndName, + const std::string& jsonState, + const avsCommon::avs::StateRefreshPolicy& refreshPolicy, + const unsigned int stateRequestToken) { verifyState(jsonState, channels); }), + InvokeWithoutArgs(this, &VisualActivityTrackerTest::wakeOnSetState))); + + m_VisualActivityTracker->notifyOfActivityUpdates(channels); + std::this_thread::sleep_for(SHORT_TIMEOUT_MS); + m_VisualActivityTracker->provideState(NAMESPACE_AND_NAME_STATE, PROVIDE_STATE_TOKEN_TEST); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); +} + +SetStateResult VisualActivityTrackerTest::wakeOnSetState() { + m_wakeSetStatePromise.set_value(); + return SetStateResult::SUCCESS; +} + +/// Test if there's no activity updates, VisualActivityTracker will return an empty context. +TEST_F(VisualActivityTrackerTest, noActivityUpdate) { + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_STATE, "", StateRefreshPolicy::SOMETIMES, PROVIDE_STATE_TOKEN_TEST)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &VisualActivityTrackerTest::wakeOnSetState)); + + m_VisualActivityTracker->provideState(NAMESPACE_AND_NAME_STATE, PROVIDE_STATE_TOKEN_TEST); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); +} + +/// Test if there's an empty vector of activity updates, VisualActivityTracker will return an empty context. +TEST_F(VisualActivityTrackerTest, emptyActivityUpdate) { + std::vector channels; + provideUpdate(channels); +} + +/// Test if there's an activityUpdate for one idle channel, VisualActivityTracker will return an empty context. +TEST_F(VisualActivityTrackerTest, oneIdleChannel) { + std::vector channels; + m_visualChannel->setFocus(FocusState::NONE); + channels.push_back(m_visualChannel->getState()); + provideUpdate(channels); +} + +/// Test if there's an activityUpdate for one active channel, context will be reported correctly. +TEST_F(VisualActivityTrackerTest, oneActiveChannel) { + std::vector channels; + m_visualChannel->setFocus(FocusState::FOREGROUND); + channels.push_back(m_visualChannel->getState()); + provideUpdate(channels); +} + +/* + * Test if there's an vector of activity updates with one valid and one invalid channel, VisualActivityTracker will + * return an empty context. + */ +TEST_F(VisualActivityTrackerTest, invalidChannelActivityUpdate) { + std::vector channels; + auto invalidChannel = std::make_shared(INVALID_CHANNEL_NAME, INVALID_CHANNEL_PRIORITY); + m_visualChannel->setFocus(FocusState::FOREGROUND); + channels.push_back(m_visualChannel->getState()); + channels.push_back(invalidChannel->getState()); + provideUpdate(channels); +} + +/* + * Test if there's an vector of activity updates with one valid channel, VisualActivityTracker take the state from the + * last element of the vector. + */ +TEST_F(VisualActivityTrackerTest, validChannelTwoActivityUpdates) { + std::vector channels; + m_visualChannel->setFocus(FocusState::FOREGROUND); + channels.push_back(m_visualChannel->getState()); + m_visualChannel->setFocus(FocusState::BACKGROUND); + channels.push_back(m_visualChannel->getState()); + provideUpdate(channels); +} + +} // namespace test +} // namespace afml +} // namespace alexaClientSDK \ No newline at end of file diff --git a/AVSCommon/AVS/CMakeLists.txt b/AVSCommon/AVS/CMakeLists.txt index 0130ac18bf..ec82c64620 100644 --- a/AVSCommon/AVS/CMakeLists.txt +++ b/AVSCommon/AVS/CMakeLists.txt @@ -1 +1 @@ -add_subdirectory("test") +acsdk_add_test_subdirectory_if_allowed() diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/AVSDirective.h b/AVSCommon/AVS/include/AVSCommon/AVS/AVSDirective.h index 4ed60349de..7e29406589 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/AVSDirective.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/AVSDirective.h @@ -1,7 +1,5 @@ /* - * AVSDirective.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AVS_DIRECTIVE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AVS_DIRECTIVE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_AVSDIRECTIVE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_AVSDIRECTIVE_H_ #include #include @@ -43,11 +41,12 @@ class AVSDirective : public AVSMessage { * @param attachmentContextId The contextId required to get attachments from the AttachmentManager. * @return The created AVSDirective object or @c nullptr if creation failed. */ - static std::unique_ptr create(const std::string& unparsedDirective, + static std::unique_ptr create( + const std::string& unparsedDirective, std::shared_ptr avsMessageHeader, const std::string& payload, std::shared_ptr attachmentManager, - const std::string & attachmentContextId); + const std::string& attachmentContextId); /** * Returns a reader for the attachment associated with this directive. @@ -57,7 +56,8 @@ class AVSDirective : public AVSMessage { * @return An attachment reader or @c nullptr if no attachment was found with the given @c contentId. */ std::unique_ptr getAttachmentReader( - const std::string & contentId, avsCommon::avs::attachment::AttachmentReader::Policy readerPolicy) const; + const std::string& contentId, + utils::sds::ReaderPolicy readerPolicy) const; /** * Returns the underlying unparsed directive. @@ -74,11 +74,12 @@ class AVSDirective : public AVSMessage { * @param attachmentManager The attachment manager object. * @param attachmentContextId The contextId required to get attachments from the AttachmentManager. */ - AVSDirective(const std::string& unparsedDirective, + AVSDirective( + const std::string& unparsedDirective, std::shared_ptr avsMessageHeader, const std::string& payload, std::shared_ptr attachmentManager, - const std::string & attachmentContextId); + const std::string& attachmentContextId); /// The unparsed directive JSON string from AVS. const std::string m_unparsedDirective; @@ -88,8 +89,8 @@ class AVSDirective : public AVSMessage { std::string m_attachmentContextId; }; -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AVS_DIRECTIVE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_AVSDIRECTIVE_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/AVSMessage.h b/AVSCommon/AVS/include/AVSCommon/AVS/AVSMessage.h index 10055b864d..b57b3215ef 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/AVSMessage.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/AVSMessage.h @@ -1,7 +1,5 @@ /* - * AVSMessage.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AVS_MESSAGE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AVS_MESSAGE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_AVSMESSAGE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_AVSMESSAGE_H_ #include "AVSMessageHeader.h" @@ -80,7 +78,7 @@ class AVSMessage { * * @return The payload. */ - std::string getPayload() const; + std::string getPayload() const; /** * Return a string representation of this @c AVSMessage's header. @@ -96,8 +94,8 @@ class AVSMessage { std::string m_payload; }; -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AVS_MESSAGE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_AVSMESSAGE_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/AVSMessageHeader.h b/AVSCommon/AVS/include/AVSCommon/AVS/AVSMessageHeader.h index 8747b2d602..45e850d3b4 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/AVSMessageHeader.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/AVSMessageHeader.h @@ -1,7 +1,5 @@ /* - * AVSMessageHeader.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AVS_MESSAGE_HEADER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AVS_MESSAGE_HEADER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_AVSMESSAGEHEADER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_AVSMESSAGEHEADER_H_ #include @@ -37,10 +35,11 @@ class AVSMessageHeader { * @param avsMessageId The message ID of an AVS message. * @param avsDialogRequestId The dialog request ID of an AVS message, which is optional. */ - AVSMessageHeader(const std::string& avsNamespace, - const std::string& avsName, - const std::string& avsMessageId, - const std::string& avsDialogRequestId = ""): + AVSMessageHeader( + const std::string& avsNamespace, + const std::string& avsName, + const std::string& avsMessageId, + const std::string& avsDialogRequestId = "") : m_namespace{avsNamespace}, m_name{avsName}, m_messageId{avsMessageId}, @@ -80,7 +79,7 @@ class AVSMessageHeader { * * @return A string representation of this @c AVSMessage's header. */ - std::string getAsString() const; + std::string getAsString() const; private: /// Namespace of the AVSMessage header. @@ -93,8 +92,8 @@ class AVSMessageHeader { const std::string m_dialogRequestId; }; -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AVS_MESSAGE_HEADER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_AVSMESSAGEHEADER_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/AbstractConnection.h b/AVSCommon/AVS/include/AVSCommon/AVS/AbstractConnection.h new file mode 100644 index 0000000000..7b39a5d673 --- /dev/null +++ b/AVSCommon/AVS/include/AVSCommon/AVS/AbstractConnection.h @@ -0,0 +1,109 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ABSTRACTCONNECTION_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ABSTRACTCONNECTION_H_ + +#include +#include +#include + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace avs { + +/** + * This class reflects a connection to AVS and how it may be observed. + */ +class AbstractConnection { +public: + /// Type alias for brevity. + using ConnectionStatusObserverInterface = avsCommon::sdkInterfaces::ConnectionStatusObserverInterface; + + /** + * Constructor. + */ + AbstractConnection( + std::unordered_set> observers = + std::unordered_set>()); + + /** + * Destructor. + */ + virtual ~AbstractConnection() = default; + + /** + * Returns whether the AVS connection is established. If the connection is pending, @c false will be returned. + * + * @return Whether the AVS connection is established. + */ + virtual bool isConnected() const = 0; + + /** + * Adds an observer to be notified of connection status changes. The observer will be notified of the current + * connection status before this function returns. + * + * @param observer The observer to add. + */ + void addConnectionStatusObserver(std::shared_ptr observer); + + /** + * Removes an observer from being notified of connection status changes. + * + * @param observer The observer to remove. + */ + void removeConnectionStatusObserver(std::shared_ptr observer); + +protected: + /** + * Utility function to update our local status variables. + * + * @param status The Connection Status. + * @param reason The reason the Connection Status changed. + */ + void updateConnectionStatus( + ConnectionStatusObserverInterface::Status status, + ConnectionStatusObserverInterface::ChangedReason reason); + + /** + * Utility function to notify all observers of the current Connection Status and Reason. + */ + void notifyObservers(); + + /** + * Removes all observers registered for Connection status notifications. + */ + void clearObservers(); + + /// Mutex to protect access to data members. + std::mutex m_mutex; + + /// The current connection status. @c m_mutex must be acquired before access. + ConnectionStatusObserverInterface::Status m_connectionStatus; + + /// The reason we changed to the current connection status. @c m_mutex must be acquired before access. + ConnectionStatusObserverInterface::ChangedReason m_connectionChangedReason; + + /// Set of observers to notify when the connection status changes. @c m_mutex must be acquired before access. + std::unordered_set> m_connectionStatusObservers; +}; + +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ABSTRACTCONNECTION_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/Attachment.h b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/Attachment.h index 22f123c5a8..0dbbd69d76 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/Attachment.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/Attachment.h @@ -1,7 +1,5 @@ /* - * Attachment.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENT_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENT_H_ #include #include @@ -25,6 +23,8 @@ #include "AVSCommon/AVS/Attachment/AttachmentReader.h" #include "AVSCommon/AVS/Attachment/AttachmentWriter.h" #include "AVSCommon/Utils/SDS/InProcessSDS.h" +#include "AVSCommon/Utils/SDS/ReaderPolicy.h" +#include "AVSCommon/Utils/SDS/WriterPolicy.h" namespace alexaClientSDK { namespace avsCommon { @@ -41,7 +41,7 @@ class Attachment { * * @param attachmentId The id for this attachment. */ - Attachment(const std::string & attachmentId); + Attachment(const std::string& attachmentId); /** * Destructor. @@ -53,7 +53,9 @@ class Attachment { * * @return a @unique_ptr to an AttachmentWriter. */ - virtual std::unique_ptr createWriter() = 0; + + virtual std::unique_ptr createWriter( + utils::sds::WriterPolicy policy = utils::sds::WriterPolicy::ALL_OR_NOTHING) = 0; /** * Creates a reader object, with which the Attachment may be read from. @@ -61,7 +63,7 @@ class Attachment { * @param The policy used to configure the reader. * @return a @unique_ptr to an AttachmentReader. * */ - virtual std::unique_ptr createReader(AttachmentReader::Policy policy) = 0; + virtual std::unique_ptr createReader(utils::sds::ReaderPolicy policy) = 0; /** * An accessor to get the attachmentId. @@ -95,9 +97,9 @@ class Attachment { std::atomic m_hasCreatedReader; }; -} // namespace attachment -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace attachment +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENT_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentManager.h b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentManager.h index 713549ac24..275d9bfadc 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentManager.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentManager.h @@ -1,7 +1,5 @@ /* - * AttachmentManager.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_MANAGER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_MANAGER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENTMANAGER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENTMANAGER_H_ #include #include @@ -80,21 +78,22 @@ class AttachmentManager : public AttachmentManagerInterface { */ AttachmentManager(AttachmentType attachmentType); - std::string generateAttachmentId(const std::string & contextId, const std::string & contentId) const override; + std::string generateAttachmentId(const std::string& contextId, const std::string& contentId) const override; bool setAttachmentTimeoutMinutes(std::chrono::minutes timeoutMinutes) override; - std::unique_ptr createWriter(const std::string & attachmentId) override; + std::unique_ptr createWriter( + const std::string& attachmentId, + utils::sds::WriterPolicy policy = avsCommon::utils::sds::WriterPolicy::ALL_OR_NOTHING) override; - std::unique_ptr createReader( - const std::string & attachmentId, AttachmentReader::Policy policy) override; + std::unique_ptr createReader(const std::string& attachmentId, utils::sds::ReaderPolicy policy) + override; private: /** * A utility structure to encapsulate an @c Attachment, its creation time, and other appropriate data fields. */ struct AttachmentManagementDetails { - /** * Constructor. This sets the creationTime to the time of instantiation. */ @@ -115,7 +114,7 @@ class AttachmentManager : public AttachmentManagerInterface { * @param attachmentId The attachment id for the attachment detail being requested. * @return The attachment detail object. */ - AttachmentManagementDetails & getDetailsLocked(const std::string & attachmentId); + AttachmentManagementDetails& getDetailsLocked(const std::string& attachmentId); /** * A cleanup function, which will release an @c AttachmentManagementDetails from the map if either both a writer @@ -134,9 +133,9 @@ class AttachmentManager : public AttachmentManagerInterface { std::unordered_map m_attachmentDetailsMap; }; -} // namespace attachment -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace attachment +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_MANAGER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENTMANAGER_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentManagerInterface.h b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentManagerInterface.h index b2f448c29c..6accf92d8f 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentManagerInterface.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentManagerInterface.h @@ -1,7 +1,5 @@ /* - * AttachmentManagerInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,9 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_MANAGER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_MANAGER_INTERFACE_H_ - +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENTMANAGERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENTMANAGERINTERFACE_H_ #include #include @@ -64,7 +61,7 @@ class AttachmentManagerInterface { * @param contentId The contentId, which is considered unique when paired with a particular contextId. * @return The combined strings, which may be then used as a single attachmentId, per the logic outlined above. */ - virtual std::string generateAttachmentId(const std::string & contextId, const std::string & contentId) const = 0; + virtual std::string generateAttachmentId(const std::string& contextId, const std::string& contentId) const = 0; /** * Sets the timeout parameter which is used to ensure unused attachments are eventually cleaned up. This @@ -87,9 +84,12 @@ class AttachmentManagerInterface { * @note Calls to @c createReader and @c createWriter may occur in any order. * * @param attachmentId The id of the @c Attachment. + * @param policy The WriterPolicy that the AttachmentWriter should adhere to. * @return An @c AttachmentWriter. */ - virtual std::unique_ptr createWriter(const std::string & attachmentId) = 0; + virtual std::unique_ptr createWriter( + const std::string& attachmentId, + utils::sds::WriterPolicy policy = avsCommon::utils::sds::WriterPolicy::ALL_OR_NOTHING) = 0; /** * Returns a pointer to an @c AttachmentReader. @@ -100,12 +100,13 @@ class AttachmentManagerInterface { * @return An @c AttachmentReader. */ virtual std::unique_ptr createReader( - const std::string & attachmentId, AttachmentReader::Policy policy) = 0; + const std::string& attachmentId, + utils::sds::ReaderPolicy policy) = 0; }; -} // namespace attachment -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace attachment +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_MANAGER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENTMANAGERINTERFACE_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentReader.h b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentReader.h index 798df36459..9c7fd89466 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentReader.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentReader.h @@ -1,7 +1,5 @@ /* - * AttachmentReader.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,12 +13,14 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_READER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_READER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENTREADER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENTREADER_H_ #include #include +#include "AVSCommon/Utils/SDS/ReaderPolicy.h" + namespace alexaClientSDK { namespace avsCommon { namespace avs { @@ -31,16 +31,6 @@ namespace attachment { */ class AttachmentReader { public: - /** - * An enum class to allow configuration of the type of reader. - */ - enum class Policy { - /// A read of n bytes will not return until n bytes are available, or a timeout occurs. - BLOCKING, - /// A read of n bytes will return immediately, whether n bytes were available or not. - NON_BLOCKING - }; - /** * An enum class to communicate the possible states following a @c read() call. */ @@ -84,8 +74,27 @@ class AttachmentReader { * reader policy. * @return The number of bytes read as a result of this call. */ - virtual std::size_t read(void* buf, std::size_t numBytes, ReadStatus* readStatus, - std::chrono::milliseconds timeoutMs = std::chrono::milliseconds(0)) = 0; + virtual std::size_t read( + void* buf, + std::size_t numBytes, + ReadStatus* readStatus, + std::chrono::milliseconds timeoutMs = std::chrono::milliseconds(0)) = 0; + + /** + * The seek function. + * + * @param offset The offset to seek to within the @c Attachment. + * @return @c true if the specified position points at unexpired data, or @c false otherwise. Note that it is valid + * to seek into a future index that has not been written to yet. + */ + virtual bool seek(uint64_t offset) = 0; + + /** + * Utility function to return the number of bytes in an attachment. + * + * @return Number of unread bytes in the attachment by this attachment reader. + */ + virtual uint64_t getNumUnreadBytes() = 0; /** * The close function. An implementation will take care of any resource management when a reader no longer @@ -96,9 +105,9 @@ class AttachmentReader { virtual void close(ClosePoint closePoint = ClosePoint::AFTER_DRAINING_CURRENT_BUFFER) = 0; }; -} // namespace attachment -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace attachment +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_READER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENTREADER_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentWriter.h b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentWriter.h index 45cfd21001..440a5d090a 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentWriter.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/AttachmentWriter.h @@ -1,7 +1,5 @@ /* - * AttachmentWriter.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,9 +13,10 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_WRITER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_WRITER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENTWRITER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENTWRITER_H_ +#include #include namespace alexaClientSDK { @@ -40,10 +39,13 @@ class AttachmentWriter { CLOSED, /// The write could not succeed due to the underlying buffer being full. OK_BUFFER_FULL, - /// The number of bytes in the request is smaller than the word-size of the underlying data representation. + /// The number of bytes in the request is smaller than the word-size of the underlying data representation. This + /// is only posible if the policy is ALL_OR_NOTHING. ERROR_BYTES_LESS_THAN_WORD_SIZE, /// A non-specified error occurred. - ERROR_INTERNAL + ERROR_INTERNAL, + /// The write timed out. This is only possible if the writer policy is BLOCKING. + TIMEDOUT }; /** @@ -57,9 +59,16 @@ class AttachmentWriter { * @param buf The buffer where data should be copied from. * @param numBytes The size of the buffer in bytes. * @param[out] writeStatus The out-parameter where the resulting state of the write will be expressed. + * @param timeout The maximum time to wait (if @c policy is @c BLOCKING) for space to write into. If this parameter + * is zero, there is no timeout and blocking writes will wait forever. If @c policy is not @C BLOCKING, this + * parameter is ignored. * @return The number of bytes written as a result of this call. */ - virtual std::size_t write(const void* buf, std::size_t numBytes, WriteStatus* writeStatus) = 0; + virtual std::size_t write( + const void* buf, + std::size_t numBytes, + WriteStatus* writeStatus, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) = 0; /** * The close function. An implementation will take care of any resource management when a writer no longer @@ -68,9 +77,9 @@ class AttachmentWriter { virtual void close() = 0; }; -} // namespace attachment -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace attachment +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_WRITER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_ATTACHMENTWRITER_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/InProcessAttachment.h b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/InProcessAttachment.h index f8076fdd4d..eec02df9e8 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/InProcessAttachment.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/InProcessAttachment.h @@ -1,7 +1,5 @@ /* - * InProcessAttachment.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_IN_PROCESS_ATTACHMENT_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_IN_PROCESS_ATTACHMENT_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_INPROCESSATTACHMENT_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_INPROCESSATTACHMENT_H_ #include "AVSCommon/AVS/Attachment/Attachment.h" #include "AVSCommon/AVS/Attachment/InProcessAttachmentReader.h" @@ -47,20 +45,22 @@ class InProcessAttachment : public Attachment { * @param id The attachment id. * @param sds The underlying @c SharedDataStream object. If not specified, then this class will create its own. */ - InProcessAttachment(const std::string & id, std::unique_ptr sds = nullptr); + InProcessAttachment(const std::string& id, std::unique_ptr sds = nullptr); - std::unique_ptr createWriter() override; + std::unique_ptr createWriter( + InProcessAttachmentWriter::SDSTypeWriter::Policy policy = + InProcessAttachmentWriter::SDSTypeWriter::Policy::ALL_OR_NOTHING) override; - std::unique_ptr createReader(AttachmentReader::Policy policy) override; + std::unique_ptr createReader(InProcessAttachmentReader::SDSTypeReader::Policy policy) override; private: // The sds from which we will create the reader and writer. std::shared_ptr m_sds; }; -} // namespace attachment -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace attachment +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_IN_PROCESS_ATTACHMENT_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_INPROCESSATTACHMENT_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/InProcessAttachmentReader.h b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/InProcessAttachmentReader.h index c83d5a2e82..fa4faee429 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/InProcessAttachmentReader.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/InProcessAttachmentReader.h @@ -1,7 +1,5 @@ /* - * InProcessAttachmentReader.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_IN_PROCESS_ATTACHMENT_READER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_IN_PROCESS_ATTACHMENT_READER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_INPROCESSATTACHMENTREADER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_INPROCESSATTACHMENTREADER_H_ #include "AVSCommon/Utils/SDS/InProcessSDS.h" #include "AVSCommon/Utils/SDS/Reader.h" @@ -44,7 +42,7 @@ class InProcessAttachmentReader : public AttachmentReader { /** * Create an InProcessAttachmentReader. * - * @param policy The @c AttachmentReader::Policy of this object. + * @param policy The policy this reader should adhere to. * @param sds The underlying @c SharedDataStream which this object will use. * @param index If being constructed from an existing @c SharedDataStream, the index indicates where to read from. * @param reference The position in the stream @c offset is applied to. This parameter defaults to 0, indicating @@ -53,37 +51,44 @@ class InProcessAttachmentReader : public AttachmentReader { * to @c ABSOLUTE, indicating offset is relative to the very beginning of the Attachment. */ static std::unique_ptr create( - Policy policy, - std::shared_ptr sds, - SDSTypeIndex offset = 0, - SDSTypeReader::Reference reference = SDSTypeReader::Reference::ABSOLUTE); + SDSTypeReader::Policy policy, + std::shared_ptr sds, + SDSTypeIndex offset = 0, + SDSTypeReader::Reference reference = SDSTypeReader::Reference::ABSOLUTE); /** * Destructor. */ ~InProcessAttachmentReader(); - std::size_t read(void* buf, std::size_t numBytes, ReadStatus* readStatus, - std::chrono::milliseconds timeoutMs = std::chrono::milliseconds(0)) override; + std::size_t read( + void* buf, + std::size_t numBytes, + ReadStatus* readStatus, + std::chrono::milliseconds timeoutMs = std::chrono::milliseconds(0)) override; void close(ClosePoint closePoint = ClosePoint::AFTER_DRAINING_CURRENT_BUFFER) override; + bool seek(uint64_t offset) override; + + uint64_t getNumUnreadBytes() override; + private: /** * Constructor. * - * @param policy The @c AttachmentReader::Policy of this object. + * @param policy The @c ReaderPolicy of this object. * @param sds The underlying @c SharedDataStream which this object will use. */ - InProcessAttachmentReader(Policy policy, std::shared_ptr sds); + InProcessAttachmentReader(SDSTypeReader::Policy policy, std::shared_ptr sds); /// The underlying @c SharedDataStream reader. std::shared_ptr m_reader; }; -} // namespace attachment -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace attachment +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_IN_PROCESS_ATTACHMENT_READER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_INPROCESSATTACHMENTREADER_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/InProcessAttachmentWriter.h b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/InProcessAttachmentWriter.h index c015dab800..60e9d760db 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/InProcessAttachmentWriter.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/Attachment/InProcessAttachmentWriter.h @@ -1,7 +1,5 @@ /* - * InProcessAttachmentWriter.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_IN_PROCESS_ATTACHMENT_WRITER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_IN_PROCESS_ATTACHMENT_WRITER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_INPROCESSATTACHMENTWRITER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_INPROCESSATTACHMENTWRITER_H_ #include "AVSCommon/Utils/SDS/InProcessSDS.h" #include "AVSCommon/Utils/SDS/Writer.h" @@ -43,16 +41,23 @@ class InProcessAttachmentWriter : public AttachmentWriter { * Create an InProcessAttachmentWriter. * * @param sds The underlying @c SharedDataStream which this object will use. + * @param policy The policy of the new Writer. * @return Returns a new InProcessAttachmentWriter, or nullptr if the operation failed. */ - static std::unique_ptr create(std::shared_ptr sds); + static std::unique_ptr create( + std::shared_ptr sds, + SDSTypeWriter::Policy policy = SDSTypeWriter::Policy::ALL_OR_NOTHING); /** * Destructor. */ ~InProcessAttachmentWriter(); - std::size_t write(const void* buf, std::size_t numBytes, WriteStatus* writeStatus) override; + std::size_t write( + const void* buf, + std::size_t numBytes, + WriteStatus* writeStatus, + std::chrono::milliseconds timeout = std::chrono::milliseconds(0)) override; void close() override; @@ -61,16 +66,19 @@ class InProcessAttachmentWriter : public AttachmentWriter { * Constructor. * * @param sds The underlying @c SharedDataStream which this object will use. + * @param policy The policy of the new Writer. */ - InProcessAttachmentWriter(std::shared_ptr sds); + InProcessAttachmentWriter( + std::shared_ptr sds, + SDSTypeWriter::Policy policy = SDSTypeWriter::Policy::ALL_OR_NOTHING); /// The underlying @c SharedDataStream reader. std::shared_ptr m_writer; }; -} // namespace attachment -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace attachment +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_ATTACHMENT_IN_PROCESS_ATTACHMENT_WRITER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_ATTACHMENT_INPROCESSATTACHMENTWRITER_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/AudioInputStream.h b/AVSCommon/AVS/include/AVSCommon/AVS/AudioInputStream.h index b6e7fbecaa..93b0f135fd 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/AudioInputStream.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/AudioInputStream.h @@ -1,7 +1,5 @@ /* - * AudioInputStream.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,8 +12,9 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AUDIO_INPUT_STREAM_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AUDIO_INPUT_STREAM_H_ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_AUDIOINPUTSTREAM_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_AUDIOINPUTSTREAM_H_ #include "AVSCommon/Utils/SDS/InProcessSDS.h" @@ -26,8 +25,8 @@ namespace avs { /// The type used store and stream binary data. using AudioInputStream = utils::sds::InProcessSDS; -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AUDIO_INPUT_STREAM_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_AUDIOINPUTSTREAM_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/BlockingPolicy.h b/AVSCommon/AVS/include/AVSCommon/AVS/BlockingPolicy.h index 9cb7a452cb..6f978f2ac5 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/BlockingPolicy.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/BlockingPolicy.h @@ -1,7 +1,5 @@ /* - * BlockingPolicy.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_BLOCKING_POLICY_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_BLOCKING_POLICY_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_BLOCKINGPOLICY_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_BLOCKINGPOLICY_H_ #include @@ -38,6 +36,12 @@ enum class BlockingPolicy { */ BLOCKING, + /** + * Handling of an @c AVSDirective with this @c BlockingPolicy is done immediately and does NOT block the handling of + * subsequent @c AVSDirectives. + */ + HANDLE_IMMEDIATELY, + /** * BlockingPolicy not specified. */ @@ -51,7 +55,7 @@ enum class BlockingPolicy { * @param policy The policy value to write to the @c ostream as a string. * @return The @c ostream that was passed in and written to. */ -inline std::ostream& operator << (std::ostream& stream, BlockingPolicy policy) { +inline std::ostream& operator<<(std::ostream& stream, BlockingPolicy policy) { switch (policy) { case BlockingPolicy::NON_BLOCKING: stream << "NON_BLOCKING"; @@ -59,6 +63,9 @@ inline std::ostream& operator << (std::ostream& stream, BlockingPolicy policy) { case BlockingPolicy::BLOCKING: stream << "BLOCKING"; break; + case BlockingPolicy::HANDLE_IMMEDIATELY: + stream << "HANDLE_IMMEDIATELY"; + break; case BlockingPolicy::NONE: stream << "NONE"; break; @@ -66,8 +73,8 @@ inline std::ostream& operator << (std::ostream& stream, BlockingPolicy policy) { return stream; } -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_BLOCKING_POLICY_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_BLOCKINGPOLICY_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/CapabilityAgent.h b/AVSCommon/AVS/include/AVSCommon/AVS/CapabilityAgent.h index 13cf2d011e..2d58d0bcec 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/CapabilityAgent.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/CapabilityAgent.h @@ -1,7 +1,5 @@ /* - * CapabilityAgent.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,9 +13,10 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_CAPABILITY_AGENT_H -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_CAPABILITY_AGENT_H +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_CAPABILITYAGENT_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_CAPABILITYAGENT_H_ +#include #include #include #include @@ -45,11 +44,11 @@ namespace avs { * @li @c ContextRequesterInterface: To request context from the @c ContextManager, * as necessary. */ -class CapabilityAgent : - public sdkInterfaces::DirectiveHandlerInterface, - public sdkInterfaces::ChannelObserverInterface, - public sdkInterfaces::StateProviderInterface, - public sdkInterfaces::ContextRequesterInterface { +class CapabilityAgent + : public sdkInterfaces::DirectiveHandlerInterface + , public sdkInterfaces::ChannelObserverInterface + , public sdkInterfaces::StateProviderInterface + , public sdkInterfaces::ContextRequesterInterface { public: /** * Destructor. @@ -66,20 +65,21 @@ class CapabilityAgent : * @c DirectiveAndResultInterface as the argument. */ void preHandleDirective( - std::shared_ptr directive, - std::unique_ptr result) override final; + std::shared_ptr directive, + std::unique_ptr result) override final; - bool handleDirective(const std::string &messageId) override final; + bool handleDirective(const std::string& messageId) override final; - void cancelDirective(const std::string &messageId) override final; + void cancelDirective(const std::string& messageId) override final; void onDeregistered() override; void onFocusChanged(FocusState newFocus) override; - void provideState(const unsigned int stateRequestToken) override; + void provideState(const avsCommon::avs::NamespaceAndName& stateProviderName, const unsigned int stateRequestToken) + override; - void onContextAvailable(const std::string &jsonContext) override; + void onContextAvailable(const std::string& jsonContext) override; void onContextFailure(const sdkInterfaces::ContextRequestError error) override; @@ -91,8 +91,8 @@ class CapabilityAgent : * @param exceptionEncounteredSender Object to use to send ExceptionEncountered messages. */ CapabilityAgent( - const std::string &nameSpace, - std::shared_ptr exceptionEncounteredSender); + const std::string& nameSpace, + std::shared_ptr exceptionEncounteredSender); /** * CapabilityAgent maintains a map from messageId to instances of DirectiveInfo so that CapabilityAgents @@ -107,8 +107,8 @@ class CapabilityAgent : * @param resultIn The @c DirectiveHandlerResultInterface instance with which to populate this DirectiveInfo. */ DirectiveInfo( - std::shared_ptr directiveIn, - std::unique_ptr resultIn); + std::shared_ptr directiveIn, + std::unique_ptr resultIn); /** * Destructor. @@ -120,6 +120,9 @@ class CapabilityAgent : /// @c DirectiveHandlerResultInterface. std::shared_ptr result; + + /// Flag to indicate whether the directive is cancelled. + std::atomic isCancelled; }; /** @@ -132,8 +135,8 @@ class CapabilityAgent : * @return A DirectiveInfo instance with which to track the processing of @c directive. */ virtual std::shared_ptr createDirectiveInfo( - std::shared_ptr directive, - std::unique_ptr result); + std::shared_ptr directive, + std::unique_ptr result); /** * Notification that a directive has arrived. This notification gives the DirectiveHandler a chance to @@ -186,7 +189,19 @@ class CapabilityAgent : * * @param messageId The message Id of the @c AVSDirective. */ - void removeDirective(const std::string &messageId); + void removeDirective(const std::string& messageId); + + /** + * Send ExceptionEncountered and report a failure to handle the @c AVSDirective. + * + * @param info The @c AVSDirective that encountered the error and ancillary information. + * @param message The error message to include in the ExceptionEncountered message. + * @param type The type of Exception that was encountered. + */ + void sendExceptionEncounteredAndReportFailed( + std::shared_ptr info, + const std::string& message, + avsCommon::avs::ExceptionErrorType type = avsCommon::avs::ExceptionErrorType::INTERNAL_ERROR); /** * Builds a JSON event string which includes the header, the @c payload and an optional @c context. @@ -202,10 +217,10 @@ class CapabilityAgent : * else a pair of empty strings. */ const std::pair buildJsonEventString( - const std::string &eventName, - const std::string &dialogRequestIdString = "", - const std::string &payload = "{}", - const std::string &context = ""); + const std::string& eventName, + const std::string& dialogRequestIdString = "", + const std::string& payload = "{}", + const std::string& context = ""); /// The namespace of the capability agent. const std::string m_namespace; @@ -223,14 +238,14 @@ class CapabilityAgent : std::shared_ptr getDirectiveInfo(const std::string& messageId); /// Map of message Id to @c DirectiveAndResultInterface. - std::unordered_map > m_directiveInfoMap; + std::unordered_map> m_directiveInfoMap; /// Mutex to protect message Id to @c DirectiveAndResultInterface mapping. std::mutex m_mutex; }; -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_CAPABILITY_AGENT_H +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_CAPABILITYAGENT_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/DialogUXStateAggregator.h b/AVSCommon/AVS/include/AVSCommon/AVS/DialogUXStateAggregator.h index 709c750b67..85b0d89e78 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/DialogUXStateAggregator.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/DialogUXStateAggregator.h @@ -1,7 +1,5 @@ /* - * DialogUXStateAggregator.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,16 +13,17 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_DIALOG_UX_STATE_AGGREGATOR_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_DIALOG_UX_STATE_AGGREGATOR_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_DIALOGUXSTATEAGGREGATOR_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_DIALOGUXSTATEAGGREGATOR_H_ #include #include #include "AVSCommon/SDKInterfaces/AudioInputProcessorObserverInterface.h" +#include #include "AVSCommon/SDKInterfaces/DialogUXStateObserverInterface.h" #include "AVSCommon/SDKInterfaces/MessageObserverInterface.h" -#include "AVSCommon/SDKInterfaces/SpeechSynthesizerObserver.h" +#include "AVSCommon/SDKInterfaces/SpeechSynthesizerObserverInterface.h" #include #include @@ -37,10 +36,11 @@ namespace avs { * This class serves as a component to aggregate other observer interfaces into one UX component that notifies * observers of AVS dialog specific UX changes based on events that occur within these components. */ -class DialogUXStateAggregator : - public sdkInterfaces::AudioInputProcessorObserverInterface, - public sdkInterfaces::SpeechSynthesizerObserver, - public sdkInterfaces::MessageObserverInterface { +class DialogUXStateAggregator + : public sdkInterfaces::AudioInputProcessorObserverInterface + , public sdkInterfaces::SpeechSynthesizerObserverInterface + , public sdkInterfaces::MessageObserverInterface + , public sdkInterfaces::ConnectionStatusObserverInterface { public: /** * Constructor. @@ -51,12 +51,12 @@ class DialogUXStateAggregator : DialogUXStateAggregator(std::chrono::milliseconds timeoutForThinkingToIdle = std::chrono::seconds{5}); /** - * Adds an observer to be notified of UX state changes. + * Adds an observer to be notified of UX state changes. * - * @warning The user of this class must make sure that the observer remains valid until the destruction of this - * object as state changes may come in at any time, leading to callbacks to the observer. Failure to do so may + * @warning The user of this class must make sure that the observer remains valid until the destruction of this + * object as state changes may come in at any time, leading to callbacks to the observer. Failure to do so may * result in crashes when this class attempts to access its observers. - * + * * @param observer The new observer to notify of UX state changes. */ void addObserver(std::shared_ptr observer); @@ -75,10 +75,10 @@ class DialogUXStateAggregator : void onStateChanged(sdkInterfaces::AudioInputProcessorObserverInterface::State state) override; - void onStateChanged(sdkInterfaces::SpeechSynthesizerObserver::SpeechSynthesizerState state) override; + void onStateChanged(sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState state) override; + + void receive(const std::string& contextId, const std::string& message) override; - void receive(const std::string & contextId, const std::string & message) override; - private: /** * Notifies all observers of the current state. This should only be used within the internal executor. @@ -92,15 +92,30 @@ class DialogUXStateAggregator : */ void setState(sdkInterfaces::DialogUXStateObserverInterface::DialogUXState newState); + /** + * Sets the internal state to @c IDLE if both @c SpeechSynthesizer and @c AudioInputProcessor are in idle state. + */ + void tryEnterIdleState(); + /** * Transitions the internal state from THINKING to IDLE. */ void transitionFromThinkingTimedOut(); /** - * Transitions the internal state after a SPEAKING finishes to IDLE. + * Timer callback that makes sure that the state is IDLE if both @c AudioInputProcessor and @c SpeechSynthesizer + * are in IDLE state. */ - void transitionFromSpeakingFinished(); + void tryEnterIdleStateOnTimer(); + + void onConnectionStatusChanged( + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override; + + /** + * Called internally when some activity starts: Speech is going to be played or voice recognition is about to start. + */ + void onActivityStarted(); /** * @name Executor Thread Variables @@ -120,7 +135,7 @@ class DialogUXStateAggregator : const std::chrono::milliseconds m_timeoutForThinkingToIdle; /// A timer to transition out of the THINKING state. - avsCommon::utils::timing::Timer m_thinkingToIdleTimer; + avsCommon::utils::timing::Timer m_thinkingTimeoutTimer; /// A timer to transition out of the SPEAKING state for multiturn situations. avsCommon::utils::timing::Timer m_multiturnSpeakingToListeningTimer; @@ -133,10 +148,17 @@ class DialogUXStateAggregator : * before the Executor Thread Variables are destroyed. */ avsCommon::utils::threading::Executor m_executor; + + /// Contains the current state of the @c SpeechSynthesizer as reported by @c SpeechSynthesizerObserverInterface + alexaClientSDK::avsCommon::sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState + m_speechSynthesizerState; + + /// Contains the current state of the @c AudioInputProcessor as reported by @c AudioInputProcessorObserverInterface + alexaClientSDK::avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface::State m_audioInputProcessorState; }; -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_DIALOG_UX_STATE_AGGREGATOR_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_DIALOGUXSTATEAGGREGATOR_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/DirectiveHandlerConfiguration.h b/AVSCommon/AVS/include/AVSCommon/AVS/DirectiveHandlerConfiguration.h index 376eb5deb4..69368bab07 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/DirectiveHandlerConfiguration.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/DirectiveHandlerConfiguration.h @@ -1,7 +1,5 @@ /* - * DirectiveHandlerConfiguration.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_DIRECTIVE_HANDLER_CONFIGURATION_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_DIRECTIVE_HANDLER_CONFIGURATION_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_DIRECTIVEHANDLERCONFIGURATION_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_DIRECTIVEHANDLERCONFIGURATION_H_ #include @@ -28,13 +26,13 @@ namespace avsCommon { namespace avs { /** - * Map of @c NamespaceAndName values to @c BlockingPolicy with which to register a @c DirectiveHandlerInterface to a @c + * Map of @c NamespaceAndName values to @c BlockingPolicy with which to register a @c DirectiveHandlerInterface to a @c * DirectiveSequencer. */ using DirectiveHandlerConfiguration = std::unordered_map; -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_DIRECTIVE_HANDLER_CONFIGURATION_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_DIRECTIVEHANDLERCONFIGURATION_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/EventBuilder.h b/AVSCommon/AVS/include/AVSCommon/AVS/EventBuilder.h index 523d7b6eef..ecc6ec4a7c 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/EventBuilder.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/EventBuilder.h @@ -1,7 +1,5 @@ /* - * EventBuilder.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_EVENT_BUILDER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_EVENT_BUILDER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_EVENTBUILDER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_EVENTBUILDER_H_ #include #include @@ -39,14 +37,14 @@ namespace avs { * else a pair of empty strings. */ const std::pair buildJsonEventString( - const std::string &nameSpace, - const std::string &eventName, - const std::string &dialogRequestIdValue = "", - const std::string &jsonPayloadValue = "{}", - const std::string &jsonContext = ""); + const std::string& nameSpace, + const std::string& eventName, + const std::string& dialogRequestIdValue = "", + const std::string& jsonPayloadValue = "{}", + const std::string& jsonContext = ""); -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_EVENT_BUILDER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_EVENTBUILDER_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/ExceptionEncounteredSender.h b/AVSCommon/AVS/include/AVSCommon/AVS/ExceptionEncounteredSender.h index 2126a78242..9a8e82d2ce 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/ExceptionEncounteredSender.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/ExceptionEncounteredSender.h @@ -1,7 +1,5 @@ /* - * ExceptionEncounteredSender.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_EXCEPTION_ENCOUNTERED_SENDER_H -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_EXCEPTION_ENCOUNTERED_SENDER_H +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_EXCEPTIONENCOUNTEREDSENDER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_EXCEPTIONENCOUNTEREDSENDER_H_ #include #include @@ -62,14 +60,13 @@ class ExceptionEncounteredSender : public avsCommon::sdkInterfaces::ExceptionEnc * * @param messageSender The object to use for sending events. */ - ExceptionEncounteredSender( - std::shared_ptr messageSender); + ExceptionEncounteredSender(std::shared_ptr messageSender); /// The object to use for sending events. std::shared_ptr m_messageSender; }; -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_EXCEPTION_ENCOUNTERED_SENDER_H \ No newline at end of file +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_EXCEPTIONENCOUNTEREDSENDER_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/ExceptionErrorType.h b/AVSCommon/AVS/include/AVSCommon/AVS/ExceptionErrorType.h index 15a0720be7..aeee91b43d 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/ExceptionErrorType.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/ExceptionErrorType.h @@ -1,7 +1,5 @@ /* - * ExceptionEncountered.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -18,8 +16,8 @@ /** * @file */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AVS_EXCEPTION_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AVS_EXCEPTION_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_EXCEPTIONERRORTYPE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_EXCEPTIONERRORTYPE_H_ #include @@ -54,8 +52,8 @@ inline std::ostream& operator<<(std::ostream& stream, ExceptionErrorType type) { return stream; } -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_AVS_EXCEPTION_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_EXCEPTIONERRORTYPE_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/ExternalMediaPlayer/AdapterUtils.h b/AVSCommon/AVS/include/AVSCommon/AVS/ExternalMediaPlayer/AdapterUtils.h new file mode 100644 index 0000000000..cd5672e952 --- /dev/null +++ b/AVSCommon/AVS/include/AVSCommon/AVS/ExternalMediaPlayer/AdapterUtils.h @@ -0,0 +1,120 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_EXTERNALMEDIAPLAYER_ADAPTERUTILS_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_EXTERNALMEDIAPLAYER_ADAPTERUTILS_H_ + +#include +#include +#include +#include + +#include "AVSCommon/AVS/NamespaceAndName.h" +#include "AVSCommon/SDKInterfaces/ExternalMediaAdapterInterface.h" +#include "AVSCommon/Utils/RetryTimer.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace avs { +namespace externalMediaPlayer { + +/// Enumeration class for events sent by adapters to AVS. +enum class AdapterEvent { + /// ChangeReport event sent after adapter's initialization succeeds/fails. + CHANGE_REPORT, + + /// Event to request token from third party. + REQUEST_TOKEN, + + /// Login event when a guest user logs in. + LOGIN, + + /// Logout event when a user logs out. + LOGOUT, + + /// PlayerEvent to announce all kinds of player events - like play/pause/next etc. + PLAYER_EVENT, + + /// PlayerErrorEvent to report all errors from the adapters. + PLAYER_ERROR_EVENT +}; + +/// Table with the retry times on subsequent retries for session management (token fetch/changeReport send). +extern const std::vector SESSION_RETRY_TABLE; + +/// The retry timer for session management (token fetch/changeReport send). +extern avsCommon::utils::RetryTimer SESSION_RETRY_TIMER; + +// The NamespaceAndName for events sent from the adapter to AVS. +extern const avsCommon::avs::NamespaceAndName CHANGE_REPORT; +extern const avsCommon::avs::NamespaceAndName REQUEST_TOKEN; +extern const avsCommon::avs::NamespaceAndName LOGIN; +extern const avsCommon::avs::NamespaceAndName LOGOUT; +extern const avsCommon::avs::NamespaceAndName PLAYER_EVENT; +extern const avsCommon::avs::NamespaceAndName PLAYER_ERROR_EVENT; + +/** + * Method to iterate over a vector of supported operation in playback state and convert to JSON. + * + * @param supportedOperations The array of supported operations from the current playback state. + * @param allocator The rapidjson allocator, required for the results of this function to be mergable with other + * rapidjson::Value objects. + * @return The rapidjson::Value representing the array. + */ +rapidjson::Value buildSupportedOperations( + const std::vector& supportedOperations, + rapidjson::Document::AllocatorType& allocator); + +/** + * Method to convert a playbackState to JSON. + * + * @param playbackState The playback state of the adapter. + * @param The rapidjson allocator, required for the results of this function to be mergable with other + * rapidjson::Value objects. + * @return The rapidjson::Value representing the playback state JSON. + */ +rapidjson::Value buildPlaybackState( + const avsCommon::sdkInterfaces::externalMediaPlayer::AdapterPlaybackState& playbackState, + rapidjson::Document::AllocatorType& allocator); + +/** + * Method to convert session state to JSON. + * + * @param sessionState The session state of the adapter. + * @param The rapidjson allocator, required for the results of this function to be mergable with other + * rapidjson::Value objects. + * @return The rapidjson::Value representing the session state in JSON. + */ +rapidjson::Value buildSessionState( + const avsCommon::sdkInterfaces::externalMediaPlayer::AdapterSessionState& sessionState, + rapidjson::Document::AllocatorType& allocator); + +/** + * Method to build the default player. + * + * @param document The JSON Value to write the default player state into. + * @param allocator The rapidjson allocator, required for the results of this function to be mergable with other + * rapidjson::Value objects. + * @return @c true if the build of default player state was successful, @c false otherwise. + */ +bool buildDefaultPlayerState(rapidjson::Value* document, rapidjson::Document::AllocatorType& allocator); + +} // namespace externalMediaPlayer +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // end +// ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_EXTERNALMEDIAPLAYER_ADAPTERUTILS_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/FocusState.h b/AVSCommon/AVS/include/AVSCommon/AVS/FocusState.h index f448c14def..5b0124bca4 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/FocusState.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/FocusState.h @@ -1,7 +1,5 @@ /* - * FocusState.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_FOCUS_STATE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_FOCUS_STATE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_FOCUSSTATE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_FOCUSSTATE_H_ #include @@ -33,7 +31,7 @@ enum class FocusState { /// Represents the intermediate level focus a Channel can have. BACKGROUND, - + /// This focus is used to represent when a Channel is not being used or when an observer should stop. NONE }; @@ -67,8 +65,8 @@ inline std::ostream& operator<<(std::ostream& stream, const FocusState& state) { return stream << focusStateToString(state); } -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_FOCUS_STATE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_FOCUSSTATE_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/HandlerAndPolicy.h b/AVSCommon/AVS/include/AVSCommon/AVS/HandlerAndPolicy.h index 2b83edc001..2abb726b38 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/HandlerAndPolicy.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/HandlerAndPolicy.h @@ -1,7 +1,5 @@ /* - * HandlerAndPolicy.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_HANDLER_AND_POLICY_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_HANDLER_AND_POLICY_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_HANDLERANDPOLICY_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_HANDLERANDPOLICY_H_ #include #include "AVSCommon/SDKInterfaces/DirectiveHandlerInterface.h" @@ -42,15 +40,16 @@ class HandlerAndPolicy { * @param handlerIn The @c AVSDirectiveHandlerInterface value for this instance. * @param policyIn The @c BlockingPolicy value for this instance. */ - HandlerAndPolicy(std::shared_ptr handlerIn, - BlockingPolicy policyIn); + HandlerAndPolicy( + std::shared_ptr handlerIn, + BlockingPolicy policyIn); /** * Return whether this instance specifies a non-null directive handler and a non-NONE BlockingPolicy. * * @return Whether this instance specifies a non-null directive handler and a non-NONE BlockingPolicy. */ - operator bool () const; + operator bool() const; /// The @c DirectiveHandlerInterface value for this instance. std::shared_ptr handler; @@ -66,7 +65,7 @@ class HandlerAndPolicy { * @param rhs The HandlerAndPolicy instance on the right hand side of the == operation. * @return Whether the @c lhs instance is equal to the @c rhs instance. */ -bool operator == (const HandlerAndPolicy& lhs, const HandlerAndPolicy& rhs); +bool operator==(const HandlerAndPolicy& lhs, const HandlerAndPolicy& rhs); /** * != operator. @@ -75,10 +74,10 @@ bool operator == (const HandlerAndPolicy& lhs, const HandlerAndPolicy& rhs); * @param rhs The HandlerAndPolicy instance on the right hand side of the != operation. * @return Whether the @c lhs instance is NOT equal to the @c rhs instance. */ -bool operator != (const HandlerAndPolicy& lhs, const HandlerAndPolicy& rhs); +bool operator!=(const HandlerAndPolicy& lhs, const HandlerAndPolicy& rhs); -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_HANDLER_AND_POLICY_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_HANDLERANDPOLICY_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/IndicatorState.h b/AVSCommon/AVS/include/AVSCommon/AVS/IndicatorState.h new file mode 100644 index 0000000000..52042a4f86 --- /dev/null +++ b/AVSCommon/AVS/include/AVSCommon/AVS/IndicatorState.h @@ -0,0 +1,74 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_INDICATORSTATE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_INDICATORSTATE_H_ + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace avs { + +/** + * An enum class used to represent the state of the notification indicator. + * + * @note These values shouldn't be changed before evaluating the effect a change will have on existing databases. + */ +enum class IndicatorState { OFF = 0, ON = 1, UNDEFINED }; + +/** + * Convert an IndicatorState to an int. + * + * @param state The @c IndicatorState to convert. + * @return The int representation of state + */ +inline int indicatorStateToInt(IndicatorState state) { + return static_cast(state); +} + +/** + * Convert an int into an @c IndicatorState. + * + * @param stateNum The int to convert. + * @return The IndicatorState representation of stateNum or nullptr if stateNum is invalid. + */ +inline const IndicatorState intToIndicatorState(int stateNum) { + if (stateNum < 0 || stateNum >= static_cast(IndicatorState::UNDEFINED)) { + return IndicatorState::UNDEFINED; + } + return static_cast(stateNum); +} + +inline std::ostream& operator<<(std::ostream& stream, IndicatorState state) { + switch (state) { + case IndicatorState::ON: + stream << "ON"; + return stream; + case IndicatorState::OFF: + stream << "OFF"; + return stream; + case IndicatorState::UNDEFINED: + stream << "UNDEFINED"; + return stream; + } + return stream << "UNKNOWN STATE"; +} + +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_INDICATORSTATE_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/Initialization/AlexaClientSDKInit.h b/AVSCommon/AVS/include/AVSCommon/AVS/Initialization/AlexaClientSDKInit.h index b8027cd0a1..3c6a49d0ce 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/Initialization/AlexaClientSDKInit.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/Initialization/AlexaClientSDKInit.h @@ -1,7 +1,5 @@ /* - * AlexaClientSDKInit.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,8 +12,9 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_INITIALIZATION_ALEXA_CLIENT_SDK_INIT_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_INITIALIZATION_ALEXA_CLIENT_SDK_INIT_H_ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_INITIALIZATION_ALEXACLIENTSDKINIT_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_INITIALIZATION_ALEXACLIENTSDKINIT_H_ #include #include @@ -53,7 +52,7 @@ class AlexaClientSDKInit { * * @return Whether the initialization was successful. */ - static bool initialize(const std::vector &jsonStreams); + static bool initialize(const std::vector& jsonStreams); /** * Uninitialize the Alexa Client SDK. @@ -72,8 +71,8 @@ class AlexaClientSDKInit { static std::atomic_int g_isInitialized; }; -} // namespace initialization -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_INITIALIZATION_ALEXA_CLIENT_SDK_INIT_H_ +} // namespace initialization +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_INITIALIZATION_ALEXACLIENTSDKINIT_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/MessageRequest.h b/AVSCommon/AVS/include/AVSCommon/AVS/MessageRequest.h index cd89f05a6f..8770f2e097 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/MessageRequest.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/MessageRequest.h @@ -1,7 +1,5 @@ /* - * MessageRequest.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,13 +13,16 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_MESSAGE_REQUEST_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_MESSAGE_REQUEST_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_MESSAGEREQUEST_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_MESSAGEREQUEST_H_ #include #include +#include +#include #include "AVSCommon/AVS/Attachment/AttachmentReader.h" +#include namespace alexaClientSDK { namespace avsCommon { @@ -33,54 +34,14 @@ namespace avs { */ class MessageRequest { public: - /** - * This enum expresses the various end-states that a send request could arrive at. - */ - enum class Status { - /// The message has not yet been processed for sending. - PENDING, - - /// The message was successfully sent. - SUCCESS, - - /// The send failed because AVS was not connected. - NOT_CONNECTED, - - /// The send failed because AVS is not synchronized. - NOT_SYNCHRONIZED, - - /// The send failed because of timeout waiting for AVS response. - TIMEDOUT, - - /// The send failed due to an underlying protocol error. - PROTOCOL_ERROR, - - /// The send failed due to an internal error within ACL. - INTERNAL_ERROR, - - /// The send failed due to an internal error on the server. - SERVER_INTERNAL_ERROR, - - /// The send failed due to server refusing the request. - REFUSED, - - /// The send failed due to server canceling it before the transmission completed. - CANCELED, - - /// The send failed due to excessive load on the server. - THROTTLED, - - /// The access credentials provided to ACL were invalid. - INVALID_AUTH - }; - /** * Constructor. * @param jsonContent The message to be sent to AVS. * @param attachmentReader The attachment data (if present) to be sent to AVS along with the message. * Defaults to @c nullptr. */ - MessageRequest(const std::string & jsonContent, + MessageRequest( + const std::string& jsonContent, std::shared_ptr attachmentReader = nullptr); /** @@ -106,32 +67,53 @@ class MessageRequest { * This is called once the send request has completed. The status parameter indicates success or failure. * @param status Whether the send request succeeded or failed. */ - virtual void onSendCompleted(Status status); + virtual void sendCompleted(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status status); /** * This function will be called if AVS responds with an exception message to this message request being sent. * * @param exceptionMessage The exception message. */ - virtual void onExceptionReceived(const std::string & exceptionMessage); + virtual void exceptionReceived(const std::string& exceptionMessage); /** - * Utility function to convert a modern enum class to a string. + * Add observer of MessageRequestObserverInterface. * - * @param status The enum value. - * @return The string representation of the incoming value. + * @param observer The observer to be added to the set. */ - static std::string statusToString(Status status); + void addObserver(std::shared_ptr observer); + + /** + * Remove observer of MessageRequestObserverInterface. + * + * @param observer The observer to be removed from the set. + */ + void removeObserver(std::shared_ptr observer); + + /** + * A function to evaluate if the given status reflects receipt of the message by the server. + * + * @param status The status being queried. + * @return Whether the status reflects receipt of the message by the server. + */ + static bool isServerStatus(sdkInterfaces::MessageRequestObserverInterface::Status status); + +protected: + /// Mutex to guard access of m_observers. + std::mutex m_observerMutex; + + /// Set of observers of MessageRequestObserverInterface. + std::unordered_set> m_observers; -private: /// The JSON content to be sent to AVS. std::string m_jsonContent; + /// The AttachmentReader of the Attachment data to be sent to AVS. std::shared_ptr m_attachmentReader; }; -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_MESSAGE_REQUEST_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_MESSAGEREQUEST_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/NamespaceAndName.h b/AVSCommon/AVS/include/AVSCommon/AVS/NamespaceAndName.h index 2ffdf44755..e013977b2e 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/NamespaceAndName.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/NamespaceAndName.h @@ -1,7 +1,5 @@ /* - * NamespaceAndName.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_NAMESPACE_AND_NAME_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_NAMESPACE_AND_NAME_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_NAMESPACEANDNAME_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_NAMESPACEANDNAME_H_ #include @@ -40,7 +38,7 @@ class NamespaceAndName { * @param nameSpaceIn The @c namespace value for this instance. * @param nameIn The @c name value for this instance. */ - NamespaceAndName(const std::string &nameSpaceIn, const std::string &nameIn); + NamespaceAndName(const std::string& nameSpaceIn, const std::string& nameIn); /// The @c namespace value of this instance. const std::string nameSpace; @@ -56,21 +54,22 @@ class NamespaceAndName { * @param rhs The right hand side of the == operation. * @return Whether or not this instance and @c rhs are equivalent. */ - bool operator==(const NamespaceAndName &lhs, const NamespaceAndName &rhs); +bool operator==(const NamespaceAndName& lhs, const NamespaceAndName& rhs); -} // namespace avs -} // namespace adsl -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK namespace std { /** * @ std::hash() specialization defined to allow @c NamespaceAndName to be used as a key in @c std::unordered_map. */ -template <> struct hash { +template <> +struct hash { size_t operator()(const alexaClientSDK::avsCommon::avs::NamespaceAndName& in) const; }; -} // namespace std +} // namespace std -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_NAMESPACE_AND_NAME_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_NAMESPACEANDNAME_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/PlaybackButtons.h b/AVSCommon/AVS/include/AVSCommon/AVS/PlaybackButtons.h new file mode 100644 index 0000000000..5c24196a29 --- /dev/null +++ b/AVSCommon/AVS/include/AVSCommon/AVS/PlaybackButtons.h @@ -0,0 +1,106 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_PLAYBACKBUTTONS_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_PLAYBACKBUTTONS_H_ + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace avs { + +/// Enumeration class for supported playback buttons. +enum class PlaybackButton { + /// Playback Controller 'Play' button. + PLAY, + + /// Playback Controller 'Pause' button. + PAUSE, + + /// Playback Controller 'Next' button. + NEXT, + + /// Playback Controller 'Previous' button. + PREVIOUS +}; + +/** + * Convert a @c PlaybackButton to @c std::string. + * + * @param button The @c PlaybackButton to convert. + * @return The representation of @c button. + */ +inline std::string PlaybackButtonToString(PlaybackButton button) { + switch (button) { + case PlaybackButton::PLAY: + return "Play"; + case PlaybackButton::PAUSE: + return "Pause"; + case PlaybackButton::PREVIOUS: + return "Previous"; + case PlaybackButton::NEXT: + return "Next"; + } + + return "unknown playbackButton"; +} + +/** + * A macro to be used in operator << overload function to help with the translation + * of @c Button to string. + * + * @param button The @c Button that needs to be translated. + */ +#define ACSDK_PLAYBACK_BUTTON_TO_STRING(button) \ + case PlaybackButton::button: { \ + return stream << #button; \ + } + +/** + * Write a @c Button value to an @c ostream as a string. + * + * @param stream The stream to write the value to. + * @param button The @c Button value to write to the @c ostream as a string. + * @return The @c ostream that was passed in and written to. + */ +inline std::ostream& operator<<(std::ostream& stream, const PlaybackButton& button) { + switch (button) { + ACSDK_PLAYBACK_BUTTON_TO_STRING(PLAY); + ACSDK_PLAYBACK_BUTTON_TO_STRING(PAUSE); + ACSDK_PLAYBACK_BUTTON_TO_STRING(NEXT); + ACSDK_PLAYBACK_BUTTON_TO_STRING(PREVIOUS); + } + + return stream; +} + +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK + +namespace std { +/** + * @ std::hash() specialization defined to allow @c PlaybackButton to be used as a key in @c std::unordered_map. + */ +template <> +struct hash { + inline size_t operator()(const alexaClientSDK::avsCommon::avs::PlaybackButton& button) const { + return std::hash{}(PlaybackButtonToString(button)); + } +}; +} // namespace std + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_PLAYBACKBUTTONS_H_ diff --git a/CapabilityAgents/AudioPlayer/include/AudioPlayer/PlayerActivity.h b/AVSCommon/AVS/include/AVSCommon/AVS/PlayerActivity.h similarity index 81% rename from CapabilityAgents/AudioPlayer/include/AudioPlayer/PlayerActivity.h rename to AVSCommon/AVS/include/AVSCommon/AVS/PlayerActivity.h index 96e0bf71e2..61fb63bc35 100644 --- a/CapabilityAgents/AudioPlayer/include/AudioPlayer/PlayerActivity.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/PlayerActivity.h @@ -1,7 +1,5 @@ /* - * PlayerActivity.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,14 +13,14 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_PLAYER_ACTIVITY_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_PLAYER_ACTIVITY_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_PLAYERACTIVITY_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_PLAYERACTIVITY_H_ #include namespace alexaClientSDK { -namespace capabilityAgents { -namespace audioPlayer { +namespace avsCommon { +namespace avs { /// Identifies the player state. enum class PlayerActivity { @@ -83,8 +81,8 @@ inline std::ostream& operator<<(std::ostream& stream, const PlayerActivity& play return stream << playerActivityToString(playerActivity); } -} // namespace audioPlayer -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_PLAYER_ACTIVITY_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_PLAYERACTIVITY_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/SpeakerConstants/SpeakerConstants.h b/AVSCommon/AVS/include/AVSCommon/AVS/SpeakerConstants/SpeakerConstants.h new file mode 100644 index 0000000000..b6f1f08ec9 --- /dev/null +++ b/AVSCommon/AVS/include/AVSCommon/AVS/SpeakerConstants/SpeakerConstants.h @@ -0,0 +1,46 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/** + * @file + */ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_SPEAKERCONSTANTS_SPEAKERCONSTANTS_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_SPEAKERCONSTANTS_SPEAKERCONSTANTS_H_ + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace avs { +namespace speakerConstants { + +/// AVS setVolume Minimum. +const int8_t AVS_SET_VOLUME_MIN = 0; + +/// AVS setVolume Maximum. +const int8_t AVS_SET_VOLUME_MAX = 100; + +/// AVS adjustVolume Minimum. +const int8_t AVS_ADJUST_VOLUME_MIN = -100; + +/// AVS adjustVolume Maximum. +const int8_t AVS_ADJUST_VOLUME_MAX = 100; + +} // namespace speakerConstants +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_SPEAKERCONSTANTS_SPEAKERCONSTANTS_H_ diff --git a/AVSCommon/AVS/include/AVSCommon/AVS/StateRefreshPolicy.h b/AVSCommon/AVS/include/AVSCommon/AVS/StateRefreshPolicy.h index a092f26a7e..d7068aed84 100644 --- a/AVSCommon/AVS/include/AVSCommon/AVS/StateRefreshPolicy.h +++ b/AVSCommon/AVS/include/AVSCommon/AVS/StateRefreshPolicy.h @@ -1,7 +1,5 @@ /* - * StateRefreshPolicy.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_STATE_REFRESH_POLICY_H -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_STATE_REFRESH_POLICY_H +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_STATEREFRESHPOLICY_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_STATEREFRESHPOLICY_H_ namespace alexaClientSDK { namespace avsCommon { @@ -34,14 +32,21 @@ enum class StateRefreshPolicy { NEVER, /** - * Indicates to the @c ContextManager that the stateProvider needs to be queried and the state refreshed every time it - * processes a @c getContext request. + * Indicates to the @c ContextManager that the stateProvider needs to be queried and the state refreshed every time + * it processes a @c getContext request. + */ + ALWAYS, + + /** + * Indicates to the @c ContextManager that the stateProvider needs to be queried and the state refreshed every time + * it processes a @c getContext request. The stateProvider may choose to not report context by supplying an empty + * @c jsonState via @c setState. */ - ALWAYS + SOMETIMES }; -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_INCLUDE_AVS_COMMON_AVS_STATE_REFRESH_POLICY_H +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_INCLUDE_AVSCOMMON_AVS_STATEREFRESHPOLICY_H_ diff --git a/AVSCommon/AVS/src/AVSDirective.cpp b/AVSCommon/AVS/src/AVSDirective.cpp index 5822711ed2..4cd1d099a3 100644 --- a/AVSCommon/AVS/src/AVSDirective.cpp +++ b/AVSCommon/AVS/src/AVSDirective.cpp @@ -1,7 +1,5 @@ /* - * AVSDirective.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -36,11 +34,11 @@ static const std::string TAG("AvsDirective"); #define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) std::unique_ptr AVSDirective::create( - const std::string& unparsedDirective, - std::shared_ptr avsMessageHeader, - const std::string& payload, - std::shared_ptr attachmentManager, - const std::string & attachmentContextId) { + const std::string& unparsedDirective, + std::shared_ptr avsMessageHeader, + const std::string& payload, + std::shared_ptr attachmentManager, + const std::string& attachmentContextId) { if (!avsMessageHeader) { ACSDK_ERROR(LX("createFailed").d("reason", "nullMessageHeader")); return nullptr; @@ -49,23 +47,23 @@ std::unique_ptr AVSDirective::create( ACSDK_ERROR(LX("createFailed").d("reason", "nullAttachmentManager")); return nullptr; } - return std::unique_ptr(new AVSDirective(unparsedDirective, avsMessageHeader, payload, - attachmentManager, attachmentContextId)); + return std::unique_ptr( + new AVSDirective(unparsedDirective, avsMessageHeader, payload, attachmentManager, attachmentContextId)); } std::unique_ptr AVSDirective::getAttachmentReader( - const std::string& contentId, AttachmentReader::Policy readerPolicy) const { + const std::string& contentId, + sds::ReaderPolicy readerPolicy) const { auto attachmentId = m_attachmentManager->generateAttachmentId(m_attachmentContextId, contentId); return m_attachmentManager->createReader(attachmentId, readerPolicy); } AVSDirective::AVSDirective( - const std::string& unparsedDirective, - std::shared_ptr avsMessageHeader, - const std::string& payload, - std::shared_ptr attachmentManager, - const std::string & attachmentContextId) - : + const std::string& unparsedDirective, + std::shared_ptr avsMessageHeader, + const std::string& payload, + std::shared_ptr attachmentManager, + const std::string& attachmentContextId) : AVSMessage{avsMessageHeader, payload}, m_unparsedDirective{unparsedDirective}, m_attachmentManager{attachmentManager}, @@ -76,6 +74,6 @@ std::string AVSDirective::getUnparsedDirective() const { return m_unparsedDirective; } -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/AVSMessage.cpp b/AVSCommon/AVS/src/AVSMessage.cpp index fbdc23d707..0bc085c8a0 100644 --- a/AVSCommon/AVS/src/AVSMessage.cpp +++ b/AVSCommon/AVS/src/AVSMessage.cpp @@ -1,7 +1,5 @@ /* - * AVSMessage.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -22,7 +20,8 @@ namespace avsCommon { namespace avs { AVSMessage::AVSMessage(std::shared_ptr avsMessageHeader, std::string payload) : - m_header{avsMessageHeader}, m_payload{std::move(payload)} { + m_header{avsMessageHeader}, + m_payload{std::move(payload)} { } std::string AVSMessage::getNamespace() const { @@ -49,6 +48,6 @@ std::string AVSMessage::getHeaderAsString() const { return m_header->getAsString(); } -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/AVSMessageHeader.cpp b/AVSCommon/AVS/src/AVSMessageHeader.cpp index b4f2c22a72..db1e00fa21 100644 --- a/AVSCommon/AVS/src/AVSMessageHeader.cpp +++ b/AVSCommon/AVS/src/AVSMessageHeader.cpp @@ -1,7 +1,5 @@ /* - * AVSMessageHeader.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -38,14 +36,16 @@ std::string AVSMessageHeader::getDialogRequestId() const { } std::string AVSMessageHeader::getAsString() const { + // clang-format off return std::string() + "{\"namespace:\"" + m_namespace + "\",name:\"" + m_name + "\",messageId:\"" + m_messageId + "\",dialogRequestId:\"" + m_dialogRequestId + "\"}"; + // clang-format on } -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/AbstractConnection.cpp b/AVSCommon/AVS/src/AbstractConnection.cpp new file mode 100644 index 0000000000..e88b162616 --- /dev/null +++ b/AVSCommon/AVS/src/AbstractConnection.cpp @@ -0,0 +1,100 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "AVSCommon/AVS/AbstractConnection.h" +#include "AVSCommon/Utils/Logger/Logger.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace avs { + +using namespace avsCommon::sdkInterfaces; + +/// String to identify log entries originating from this file. +static const std::string TAG("AbstractConnection"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +AbstractConnection::AbstractConnection( + std::unordered_set> observers) : + m_connectionStatus{ConnectionStatusObserverInterface::Status::DISCONNECTED}, + m_connectionChangedReason{ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST}, + m_connectionStatusObservers{observers} { +} + +void AbstractConnection::addConnectionStatusObserver(std::shared_ptr observer) { + if (!observer) { + ACSDK_ERROR(LX("addConnectionStatusObserverFailed").d("reason", "nullObserver")); + return; + } + + std::unique_lock lock{m_mutex}; + auto localStatus = m_connectionStatus; + auto localReason = m_connectionChangedReason; + bool addedOk = m_connectionStatusObservers.insert(observer).second; + lock.unlock(); + + if (addedOk) { + observer->onConnectionStatusChanged(localStatus, localReason); + } +} + +void AbstractConnection::removeConnectionStatusObserver( + std::shared_ptr observer) { + if (!observer) { + ACSDK_ERROR(LX("removeConnectionStatusObserverFailed").d("reason", "nullObserver")); + return; + } + + std::lock_guard lock{m_mutex}; + m_connectionStatusObservers.erase(observer); +} + +void AbstractConnection::updateConnectionStatus( + ConnectionStatusObserverInterface::Status status, + ConnectionStatusObserverInterface::ChangedReason reason) { + std::unique_lock lock{m_mutex}; + m_connectionStatus = status; + m_connectionChangedReason = reason; + lock.unlock(); + + notifyObservers(); +} + +void AbstractConnection::notifyObservers() { + std::unique_lock lock{m_mutex}; + auto observers = m_connectionStatusObservers; + auto localStatus = m_connectionStatus; + auto localReason = m_connectionChangedReason; + lock.unlock(); + + for (auto observer : observers) { + observer->onConnectionStatusChanged(localStatus, localReason); + } +} + +void AbstractConnection::clearObservers() { + std::lock_guard lock{m_mutex}; + m_connectionStatusObservers.clear(); +} + +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/AlexaClientSDKInit.cpp b/AVSCommon/AVS/src/AlexaClientSDKInit.cpp index 854dbfd583..b93f3adc64 100644 --- a/AVSCommon/AVS/src/AlexaClientSDKInit.cpp +++ b/AVSCommon/AVS/src/AlexaClientSDKInit.cpp @@ -1,7 +1,5 @@ /* - * AlexaClientSDKInit.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -17,8 +15,8 @@ #include -#include "AVSCommon/Utils/Configuration/ConfigurationNode.h" #include "AVSCommon/AVS/Initialization/AlexaClientSDKInit.h" +#include "AVSCommon/Utils/Configuration/ConfigurationNode.h" #include "AVSCommon/Utils/Logger/Logger.h" namespace alexaClientSDK { @@ -43,7 +41,7 @@ bool AlexaClientSDKInit::isInitialized() { return g_isInitialized > 0; } -bool AlexaClientSDKInit::initialize(const std::vector &jsonStreams) { +bool AlexaClientSDKInit::initialize(const std::vector& jsonStreams) { if (!(curl_version_info(CURLVERSION_NOW)->features & CURL_VERSION_HTTP2)) { ACSDK_ERROR(LX("initializeFailed").d("reason", "curlDoesNotSupportHTTP2")); return false; @@ -74,7 +72,7 @@ void AlexaClientSDKInit::uninitialize() { utils::configuration::ConfigurationNode::uninitialize(); } -} // namespace initialization -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace initialization +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/Attachment/Attachment.cpp b/AVSCommon/AVS/src/Attachment/Attachment.cpp index 6feaaa65ba..c701cacce8 100644 --- a/AVSCommon/AVS/src/Attachment/Attachment.cpp +++ b/AVSCommon/AVS/src/Attachment/Attachment.cpp @@ -1,7 +1,5 @@ /* - * Attachment.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -22,8 +20,10 @@ namespace avsCommon { namespace avs { namespace attachment { -Attachment::Attachment(const std::string & attachmentId) - : m_id{attachmentId}, m_hasCreatedWriter{false}, m_hasCreatedReader{false} { +Attachment::Attachment(const std::string& attachmentId) : + m_id{attachmentId}, + m_hasCreatedWriter{false}, + m_hasCreatedReader{false} { } std::string Attachment::getId() const { @@ -38,7 +38,7 @@ bool Attachment::hasCreatedWriter() { return m_hasCreatedWriter; } -} // namespace attachment -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace attachment +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/Attachment/AttachmentManager.cpp b/AVSCommon/AVS/src/Attachment/AttachmentManager.cpp index 49e5d82141..d3af724870 100644 --- a/AVSCommon/AVS/src/Attachment/AttachmentManager.cpp +++ b/AVSCommon/AVS/src/Attachment/AttachmentManager.cpp @@ -1,7 +1,5 @@ /* - * AttachmentManager.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -49,19 +47,19 @@ constexpr std::chrono::minutes AttachmentManager::ATTACHMENT_MANAGER_TIMOUT_MINU static const std::string ATTACHMENT_ID_COMBINING_SUBSTRING = ":"; AttachmentManager::AttachmentManagementDetails::AttachmentManagementDetails() : - creationTime{std::chrono::steady_clock::now()} { + creationTime{std::chrono::steady_clock::now()} { } AttachmentManager::AttachmentManager(AttachmentType attachmentType) : - m_attachmentType{attachmentType}, m_attachmentExpirationMinutes{ATTACHMENT_MANAGER_TIMOUT_MINUTES_DEFAULT} { + m_attachmentType{attachmentType}, + m_attachmentExpirationMinutes{ATTACHMENT_MANAGER_TIMOUT_MINUTES_DEFAULT} { } -std::string AttachmentManager::generateAttachmentId( - const std::string & contextId, const std::string & contentId) const { +std::string AttachmentManager::generateAttachmentId(const std::string& contextId, const std::string& contentId) const { if (contextId.empty() && contentId.empty()) { ACSDK_ERROR(LX("generateAttachmentIdFailed") - .d("reason", "contextId and contentId are empty") - .d("result", "empty string")); + .d("reason", "contextId and contentId are empty") + .d("result", "empty string")); return ""; } if (contextId.empty()) { @@ -81,8 +79,8 @@ bool AttachmentManager::setAttachmentTimeoutMinutes(std::chrono::minutes minutes int minimumMinutes = ATTACHMENT_MANAGER_TIMOUT_MINUTES_MINIMUM.count(); std::string minutePrintString = (1 == minimumMinutes) ? " minute" : " minutes"; ACSDK_ERROR(LX("setAttachmentTimeoutError") - .d("reason", "timeout parameter less than minimum value") - .d("attemptedSetting", std::to_string(minimumMinutes) + minutePrintString)); + .d("reason", "timeout parameter less than minimum value") + .d("attemptedSetting", std::to_string(minimumMinutes) + minutePrintString)); return false; } @@ -91,14 +89,12 @@ bool AttachmentManager::setAttachmentTimeoutMinutes(std::chrono::minutes minutes return true; } -AttachmentManager::AttachmentManagementDetails & AttachmentManager::getDetailsLocked(const std::string & attachmentId) { - +AttachmentManager::AttachmentManagementDetails& AttachmentManager::getDetailsLocked(const std::string& attachmentId) { // This call ensures the details object exists, whether updated previously, or as a new object. - auto & details = m_attachmentDetailsMap[attachmentId]; + auto& details = m_attachmentDetailsMap[attachmentId]; // If it's a new object, the inner attachment has not yet been created. Let's go do that. if (!details.attachment) { - // Lack of default case will allow compiler to generate warnings if a case is unhandled. switch (m_attachmentType) { // The in-process attachment type. @@ -118,25 +114,28 @@ AttachmentManager::AttachmentManagementDetails & AttachmentManager::getDetailsLo return details; } -std::unique_ptr AttachmentManager::createWriter(const std::string & attachmentId) { +std::unique_ptr AttachmentManager::createWriter( + const std::string& attachmentId, + utils::sds::WriterPolicy policy) { std::lock_guard lock(m_mutex); - auto & details = getDetailsLocked(attachmentId); + auto& details = getDetailsLocked(attachmentId); if (!details.attachment) { ACSDK_ERROR(LX("createWriterFailed").d("reason", "Could not access attachment")); return nullptr; } - auto writer = details.attachment->createWriter(); + auto writer = details.attachment->createWriter(policy); removeExpiredAttachmentsLocked(); return writer; } std::unique_ptr AttachmentManager::createReader( - const std::string & attachmentId, AttachmentReader::Policy policy) { + const std::string& attachmentId, + sds::ReaderPolicy policy) { std::lock_guard lock(m_mutex); - auto & details = getDetailsLocked(attachmentId); + auto& details = getDetailsLocked(attachmentId); if (!details.attachment) { ACSDK_ERROR(LX("createWriterFailed").d("reason", "Could not access attachment")); return nullptr; @@ -151,8 +150,8 @@ void AttachmentManager::removeExpiredAttachmentsLocked() { std::vector idsToErase; auto now = std::chrono::steady_clock::now(); - for (auto & iter : m_attachmentDetailsMap) { - auto & details = iter.second; + for (auto& iter : m_attachmentDetailsMap) { + auto& details = iter.second; /* * Our criteria for releasing an AttachmentManagementDetails object - either: @@ -163,7 +162,7 @@ void AttachmentManager::removeExpiredAttachmentsLocked() { auto attachmentLifetime = std::chrono::duration_cast(now - details.creationTime); if ((details.attachment->hasCreatedReader() && details.attachment->hasCreatedWriter()) || - attachmentLifetime > m_attachmentExpirationMinutes) { + attachmentLifetime > m_attachmentExpirationMinutes) { idsToErase.push_back(iter.first); } } @@ -173,7 +172,7 @@ void AttachmentManager::removeExpiredAttachmentsLocked() { } } -} // namespace attachment -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace attachment +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/Attachment/InProcessAttachment.cpp b/AVSCommon/AVS/src/Attachment/InProcessAttachment.cpp index 0ccb5dcc6e..4a1c6392b3 100644 --- a/AVSCommon/AVS/src/Attachment/InProcessAttachment.cpp +++ b/AVSCommon/AVS/src/Attachment/InProcessAttachment.cpp @@ -1,7 +1,5 @@ /* - * InProcessAttachment.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -25,8 +23,9 @@ namespace attachment { using namespace alexaClientSDK::avsCommon::utils::memory; -InProcessAttachment::InProcessAttachment(const std::string & id, std::unique_ptr sds) : - Attachment(id), m_sds{std::move(sds)} { +InProcessAttachment::InProcessAttachment(const std::string& id, std::unique_ptr sds) : + Attachment(id), + m_sds{std::move(sds)} { if (!m_sds) { auto buffSize = SDSType::calculateBufferSize(SDS_BUFFER_DEFAULT_SIZE_IN_BYTES); auto buff = std::make_shared(buffSize); @@ -34,14 +33,15 @@ InProcessAttachment::InProcessAttachment(const std::string & id, std::unique_ptr } } -std::unique_ptr InProcessAttachment::createWriter() { +std::unique_ptr InProcessAttachment::createWriter( + InProcessAttachmentWriter::SDSTypeWriter::Policy policy) { std::lock_guard lock(m_mutex); if (m_hasCreatedWriter) { return nullptr; } - auto writer = InProcessAttachmentWriter::create(m_sds); + auto writer = InProcessAttachmentWriter::create(m_sds, policy); if (writer) { m_hasCreatedWriter = true; } @@ -49,7 +49,8 @@ std::unique_ptr InProcessAttachment::createWriter() { return std::move(writer); } -std::unique_ptr InProcessAttachment::createReader(AttachmentReader::Policy policy) { +std::unique_ptr InProcessAttachment::createReader( + InProcessAttachmentReader::SDSTypeReader::Policy policy) { std::lock_guard lock(m_mutex); if (m_hasCreatedReader) { @@ -64,7 +65,7 @@ std::unique_ptr InProcessAttachment::createReader(AttachmentRe return std::move(reader); } -} // namespace attachment -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace attachment +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/Attachment/InProcessAttachmentReader.cpp b/AVSCommon/AVS/src/Attachment/InProcessAttachmentReader.cpp index 1b0bd641f2..f7b16f73f7 100644 --- a/AVSCommon/AVS/src/Attachment/InProcessAttachmentReader.cpp +++ b/AVSCommon/AVS/src/Attachment/InProcessAttachmentReader.cpp @@ -1,7 +1,5 @@ /* - * InProcessAttachmentReader.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -36,10 +34,10 @@ static const std::string TAG("InProcessAttachmentReader"); #define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) std::unique_ptr InProcessAttachmentReader::create( - Policy policy, - std::shared_ptr sds, - SDSTypeIndex offset, - SDSTypeReader::Reference reference) { + SDSTypeReader::Policy policy, + std::shared_ptr sds, + SDSTypeIndex offset, + SDSTypeReader::Reference reference) { auto reader = std::unique_ptr(new InProcessAttachmentReader(policy, sds)); if (!reader->m_reader) { @@ -55,16 +53,13 @@ std::unique_ptr InProcessAttachmentReader::create( return reader; } -InProcessAttachmentReader::InProcessAttachmentReader(Policy policy, std::shared_ptr sds) { +InProcessAttachmentReader::InProcessAttachmentReader(SDSTypeReader::Policy policy, std::shared_ptr sds) { if (!sds) { ACSDK_ERROR(LX("ConstructorFailed").d("reason", "SDS parameter is nullptr")); return; } - auto sdsPolicy = (AttachmentReader::Policy::BLOCKING == policy) ? - SDSType::Reader::Policy::BLOCKING : SDSType::Reader::Policy::NONBLOCKING; - - m_reader = sds->createReader(sdsPolicy); + m_reader = sds->createReader(policy); if (!m_reader) { ACSDK_ERROR(LX("ConstructorFailed").d("reason", "could not create an SDS reader")); @@ -77,7 +72,10 @@ InProcessAttachmentReader::~InProcessAttachmentReader() { } std::size_t InProcessAttachmentReader::read( - void* buf, std::size_t numBytes, ReadStatus* readStatus, std::chrono::milliseconds timeoutMs) { + void* buf, + std::size_t numBytes, + ReadStatus* readStatus, + std::chrono::milliseconds timeoutMs) { if (!readStatus) { ACSDK_ERROR(LX("readFailed").d("reason", "read status is nullptr")); return 0; @@ -170,7 +168,23 @@ void InProcessAttachmentReader::close(ClosePoint closePoint) { } } -} // namespace attachment -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +bool InProcessAttachmentReader::seek(uint64_t offset) { + if (m_reader) { + return m_reader->seek(offset); + } + return false; +} + +uint64_t InProcessAttachmentReader::getNumUnreadBytes() { + if (m_reader) { + return m_reader->tell(utils::sds::InProcessSDS::Reader::Reference::BEFORE_WRITER); + } + + ACSDK_ERROR(LX("getNumUnreadBytesFailed").d("reason", "noReader")); + return 0; +} + +} // namespace attachment +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/Attachment/InProcessAttachmentWriter.cpp b/AVSCommon/AVS/src/Attachment/InProcessAttachmentWriter.cpp index ba2cbff36f..af49b35702 100644 --- a/AVSCommon/AVS/src/Attachment/InProcessAttachmentWriter.cpp +++ b/AVSCommon/AVS/src/Attachment/InProcessAttachmentWriter.cpp @@ -1,7 +1,5 @@ /* - * InProcessAttachmentWriter.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -35,8 +33,10 @@ static const std::string TAG("InProcessAttachmentWriter"); */ #define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) -std::unique_ptr InProcessAttachmentWriter::create(std::shared_ptr sds) { - auto writer = std::unique_ptr(new InProcessAttachmentWriter(sds)); +std::unique_ptr InProcessAttachmentWriter::create( + std::shared_ptr sds, + SDSTypeWriter::Policy policy) { + auto writer = std::unique_ptr(new InProcessAttachmentWriter(sds, policy)); if (!writer->m_writer) { ACSDK_ERROR(LX("createFailed").d("reason", "could not create instance")); @@ -46,19 +46,23 @@ std::unique_ptr InProcessAttachmentWriter::create(std return writer; } -InProcessAttachmentWriter::InProcessAttachmentWriter(std::shared_ptr sds) { +InProcessAttachmentWriter::InProcessAttachmentWriter(std::shared_ptr sds, SDSTypeWriter::Policy policy) { if (!sds) { ACSDK_ERROR(LX("constructorFailed").d("reason", "SDS parameter is nullptr")); return; } - m_writer = sds->createWriter(SDSTypeWriter::Policy::ALL_OR_NOTHING); + m_writer = sds->createWriter(policy); } InProcessAttachmentWriter::~InProcessAttachmentWriter() { close(); } -std::size_t InProcessAttachmentWriter::write(const void* buff, std::size_t numBytes, WriteStatus* writeStatus) { +std::size_t InProcessAttachmentWriter::write( + const void* buff, + std::size_t numBytes, + WriteStatus* writeStatus, + std::chrono::milliseconds timeout) { if (!writeStatus) { ACSDK_ERROR(LX("writeFailed").d("reason", "writeStatus is nullptr")); return 0; @@ -86,7 +90,7 @@ std::size_t InProcessAttachmentWriter::write(const void* buff, std::size_t numBy std::size_t bytesWritten = 0; auto numWords = numBytes / wordSize; - auto writeResult = m_writer->write(buff, numWords); + auto writeResult = m_writer->write(buff, numWords, timeout); /* * Convert SDS return code accordingly: @@ -108,13 +112,17 @@ std::size_t InProcessAttachmentWriter::write(const void* buff, std::size_t numBy ACSDK_ERROR(LX("AttachmentWriter has generated an internal error.")); *writeStatus = WriteStatus::ERROR_INTERNAL; break; + case SDSType::Writer::Error::TIMEDOUT: + ACSDK_DEBUG9(LX("AttachmentWriter has timed out while attempting a write.")); + *writeStatus = WriteStatus::TIMEDOUT; + break; } // If the status was not updated, then there's an error code from SDS we may not be handling. if (WriteStatus::OK == *writeStatus) { ACSDK_ERROR(LX("writeFailed") - .d("reason", "unhandled error code from underlying SDS") - .d("code", std::to_string(writeResult))); + .d("reason", "unhandled error code from underlying SDS") + .d("code", std::to_string(writeResult))); *writeStatus = WriteStatus::ERROR_INTERNAL; } @@ -135,7 +143,7 @@ void InProcessAttachmentWriter::close() { } } -} // namespace attachment -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace attachment +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/CapabilityAgent.cpp b/AVSCommon/AVS/src/CapabilityAgent.cpp index d27a6d410a..243f63f02d 100644 --- a/AVSCommon/AVS/src/CapabilityAgent.cpp +++ b/AVSCommon/AVS/src/CapabilityAgent.cpp @@ -1,7 +1,5 @@ /* - * CapabilityAgent.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -43,29 +41,29 @@ static const std::string TAG("CapabilityAgent"); #define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) std::shared_ptr CapabilityAgent::createDirectiveInfo( - std::shared_ptr directive, - std::unique_ptr result) { + std::shared_ptr directive, + std::unique_ptr result) { return std::make_shared(directive, std::move(result)); } CapabilityAgent::CapabilityAgent( - const std::string &nameSpace, - std::shared_ptr exceptionEncounteredSender) - : + const std::string& nameSpace, + std::shared_ptr exceptionEncounteredSender) : m_namespace{nameSpace}, m_exceptionEncounteredSender{exceptionEncounteredSender} { } CapabilityAgent::DirectiveInfo::DirectiveInfo( - std::shared_ptr directiveIn, - std::unique_ptr resultIn) - : - directive{directiveIn}, result{std::move(resultIn)} { + std::shared_ptr directiveIn, + std::unique_ptr resultIn) : + directive{directiveIn}, + result{std::move(resultIn)}, + isCancelled{false} { } void CapabilityAgent::preHandleDirective( - std::shared_ptr directive, - std::unique_ptr result) { + std::shared_ptr directive, + std::unique_ptr result) { std::string messageId = directive->getMessageId(); auto info = getDirectiveInfo(messageId); if (info) { @@ -74,20 +72,20 @@ void CapabilityAgent::preHandleDirective( result->setFailed(error); if (m_exceptionEncounteredSender) { m_exceptionEncounteredSender->sendExceptionEncountered( - directive->getUnparsedDirective(), ExceptionErrorType::INTERNAL_ERROR, error); + directive->getUnparsedDirective(), ExceptionErrorType::INTERNAL_ERROR, error); } return; } ACSDK_DEBUG(LX("addingMessageIdToMap").d("messageId", messageId)); info = createDirectiveInfo(directive, std::move(result)); { - std::lock_guard lock(m_mutex); + std::lock_guard lock(m_mutex); m_directiveInfoMap[messageId] = info; } preHandleDirective(info); } -bool CapabilityAgent::handleDirective(const std::string &messageId) { +bool CapabilityAgent::handleDirective(const std::string& messageId) { auto info = getDirectiveInfo(messageId); if (!info) { ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "messageIdNotFound").d("messageId", messageId)); @@ -97,21 +95,37 @@ bool CapabilityAgent::handleDirective(const std::string &messageId) { return true; } -void CapabilityAgent::cancelDirective(const std::string &messageId) { +void CapabilityAgent::cancelDirective(const std::string& messageId) { auto info = getDirectiveInfo(messageId); if (!info) { ACSDK_ERROR(LX("cancelDirectiveFailed").d("reason", "messageIdNotFound").d("messageId", messageId)); return; } + /* + * We mark this directive as cancelled so the @c CapabilityAgent can use this flag to handle directives that've + * already been handled, but are not yet complete. + */ + info->isCancelled = true; cancelDirective(info); } +void CapabilityAgent::sendExceptionEncounteredAndReportFailed( + std::shared_ptr info, + const std::string& message, + avsCommon::avs::ExceptionErrorType type) { + m_exceptionEncounteredSender->sendExceptionEncountered(info->directive->getUnparsedDirective(), type, message); + if (info && info->result) { + info->result->setFailed(message); + } + removeDirective(info->directive->getMessageId()); +} + void CapabilityAgent::onDeregistered() { // default no op } -void CapabilityAgent::removeDirective(const std::string &messageId) { - std::lock_guard lock(m_mutex); +void CapabilityAgent::removeDirective(const std::string& messageId) { + std::lock_guard lock(m_mutex); ACSDK_DEBUG(LX("removingMessageIdFromMap").d("messageId", messageId)); m_directiveInfoMap.erase(messageId); } @@ -120,11 +134,11 @@ void CapabilityAgent::onFocusChanged(FocusState) { // default no-op } -void CapabilityAgent::provideState(const unsigned int) { +void CapabilityAgent::provideState(const avsCommon::avs::NamespaceAndName& stateProviderName, const unsigned int) { // default no-op } -void CapabilityAgent::onContextAvailable(const std::string &) { +void CapabilityAgent::onContextAvailable(const std::string&) { // default no-op } @@ -133,15 +147,15 @@ void CapabilityAgent::onContextFailure(const sdkInterfaces::ContextRequestError) } const std::pair CapabilityAgent::buildJsonEventString( - const std::string &eventName, - const std::string &dialogRequestIdString, - const std::string &payload, - const std::string &context) { + const std::string& eventName, + const std::string& dialogRequestIdString, + const std::string& payload, + const std::string& context) { return avs::buildJsonEventString(m_namespace, eventName, dialogRequestIdString, payload, context); } std::shared_ptr CapabilityAgent::getDirectiveInfo(const std::string& messageId) { - std::lock_guard lock(m_mutex); + std::lock_guard lock(m_mutex); auto it = m_directiveInfoMap.find(messageId); if (it != m_directiveInfoMap.end()) { return it->second; @@ -149,7 +163,6 @@ std::shared_ptr CapabilityAgent::getDirectiveInf return nullptr; } -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK - +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/DialogUXStateAggregator.cpp b/AVSCommon/AVS/src/DialogUXStateAggregator.cpp index ac594d6892..02707ad64d 100644 --- a/AVSCommon/AVS/src/DialogUXStateAggregator.cpp +++ b/AVSCommon/AVS/src/DialogUXStateAggregator.cpp @@ -1,7 +1,5 @@ /* - * DialogUXStateAggregator.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -38,9 +36,11 @@ static const std::string TAG("DialogUXStateAggregator"); */ static const std::chrono::milliseconds SHORT_TIMEOUT{200}; -DialogUXStateAggregator::DialogUXStateAggregator(std::chrono::milliseconds timeoutForThinkingToIdle) : - m_currentState{DialogUXStateObserverInterface::DialogUXState::IDLE}, - m_timeoutForThinkingToIdle{timeoutForThinkingToIdle} { +DialogUXStateAggregator::DialogUXStateAggregator(std::chrono::milliseconds timeoutForThinkingToIdle) : + m_currentState{DialogUXStateObserverInterface::DialogUXState::IDLE}, + m_timeoutForThinkingToIdle{timeoutForThinkingToIdle}, + m_speechSynthesizerState{SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED}, + m_audioInputProcessorState{AudioInputProcessorObserverInterface::State::IDLE} { } void DialogUXStateAggregator::addObserver(std::shared_ptr observer) { @@ -48,12 +48,10 @@ void DialogUXStateAggregator::addObserver(std::shared_ptronDialogUXStateChanged(m_currentState); - } - ); + m_executor.submit([this, observer]() { + m_observers.insert(observer); + observer->onDialogUXStateChanged(m_currentState); + }); } void DialogUXStateAggregator::removeObserver(std::shared_ptr observer) { @@ -61,85 +59,85 @@ void DialogUXStateAggregator::removeObserver(std::shared_ptr buildJsonEventString( - const std::string &nameSpace, - const std::string &eventName, - const std::string &dialogRequestIdValue, - const std::string &jsonPayloadValue, - const std::string &jsonContext) { + const std::string& nameSpace, + const std::string& eventName, + const std::string& dialogRequestIdValue, + const std::string& jsonPayloadValue, + const std::string& jsonContext) { Document eventAndContext(kObjectType); - Document::AllocatorType &allocator = eventAndContext.GetAllocator(); + Document::AllocatorType& allocator = eventAndContext.GetAllocator(); const std::pair emptyPair; if (!jsonContext.empty()) { Document context(kObjectType); // The context needs to be parsed to convert to a JSON object. if (context.Parse(jsonContext).HasParseError()) { - ACSDK_DEBUG(LX("buildJsonEventStringFailed") - .d("reason", "parseContextFailed") - .sensitive("context", jsonContext)); + ACSDK_DEBUG( + LX("buildJsonEventStringFailed").d("reason", "parseContextFailed").sensitive("context", jsonContext)); return emptyPair; } eventAndContext.CopyFrom(context, allocator); @@ -158,6 +156,10 @@ const std::pair buildJsonEventString( Document header = buildHeader(nameSpace, eventName, dialogRequestIdValue, allocator, &messageId); ACSDK_DEBUG(LX("buildJsonEventString").d("messageId", messageId).d("namespace", nameSpace).d("name", eventName)); + if (eventName == "SpeechStarted" || eventName == "SpeechFinished" || eventName == "Recognize") { + ACSDK_METRIC_IDS(TAG, eventName, messageId, dialogRequestIdValue, Metrics::Location::BUILDING_MESSAGE); + } + Document event = buildEvent(&header, jsonPayloadValue, allocator); if (event.ObjectEmpty()) { @@ -177,6 +179,6 @@ const std::pair buildJsonEventString( return std::make_pair(messageId, eventAndContextBuf.GetString()); } -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/ExceptionEncounteredSender.cpp b/AVSCommon/AVS/src/ExceptionEncounteredSender.cpp index 7a6a795545..0c8d5faf87 100644 --- a/AVSCommon/AVS/src/ExceptionEncounteredSender.cpp +++ b/AVSCommon/AVS/src/ExceptionEncounteredSender.cpp @@ -1,7 +1,5 @@ /* - * ExceptionEncounteredSender.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -64,8 +62,8 @@ static const char ERROR_TYPE_KEY[] = "type"; static const char ERROR_MESSAGE_KEY[] = "message"; std::unique_ptr ExceptionEncounteredSender::create( - std::shared_ptr messagesender) { - if(!messagesender) { + std::shared_ptr messagesender) { + if (!messagesender) { ACSDK_ERROR(LX("createFailed").d("reason", "nullMessageSender")); return nullptr; } @@ -73,10 +71,9 @@ std::unique_ptr ExceptionEncounteredSender::create( } void ExceptionEncounteredSender::sendExceptionEncountered( - const std::string& unparsedDirective, - avs::ExceptionErrorType error, - const std::string& errorDescription) { - + const std::string& unparsedDirective, + avs::ExceptionErrorType error, + const std::string& errorDescription) { // Constructing Json for Context rapidjson::Document contextDocument(rapidjson::kObjectType); rapidjson::Value contextArray(rapidjson::kArrayType); @@ -86,25 +83,17 @@ void ExceptionEncounteredSender::sendExceptionEncountered( contextDocument.Accept(contextWriter); std::string contextJson = contextBuffer.GetString(); - //Constructing Json for Payload + // Constructing Json for Payload rapidjson::Document payloadDataDocument(rapidjson::kObjectType); payloadDataDocument.AddMember( - UNPARSED_DIRECTIVE_KEY_STRING, - rapidjson::StringRef(unparsedDirective), - payloadDataDocument.GetAllocator()); + UNPARSED_DIRECTIVE_KEY_STRING, rapidjson::StringRef(unparsedDirective), payloadDataDocument.GetAllocator()); rapidjson::Document errorDataDocument(rapidjson::kObjectType); std::ostringstream errorStringVal; errorStringVal << error; - errorDataDocument.AddMember( - ERROR_TYPE_KEY, - errorStringVal.str(), - errorDataDocument.GetAllocator()); + errorDataDocument.AddMember(ERROR_TYPE_KEY, errorStringVal.str(), errorDataDocument.GetAllocator()); rapidjson::Value messageJson(rapidjson::StringRef(errorDescription)); errorDataDocument.AddMember(ERROR_MESSAGE_KEY, messageJson, errorDataDocument.GetAllocator()); - payloadDataDocument.AddMember( - ERROR_KEY, - errorDataDocument, - payloadDataDocument.GetAllocator()); + payloadDataDocument.AddMember(ERROR_KEY, errorDataDocument, payloadDataDocument.GetAllocator()); rapidjson::StringBuffer payloadJson; rapidjson::Writer payloadWriter(payloadJson); @@ -116,20 +105,16 @@ void ExceptionEncounteredSender::sendExceptionEncountered( ACSDK_ERROR(LX("sendExceptionEncounteredFailed").d("reason", "payloadEmpty")); return; } - auto msgIdAndJsonEvent = buildJsonEventString( - NAMESPACE, - EXCEPTION_ENCOUNTERED_EVENT_NAME, - "", - payload, - contextJson); + auto msgIdAndJsonEvent = + buildJsonEventString(NAMESPACE, EXCEPTION_ENCOUNTERED_EVENT_NAME, "", payload, contextJson); // msgId should not be empty - if(msgIdAndJsonEvent.first.empty()) { + if (msgIdAndJsonEvent.first.empty()) { ACSDK_ERROR(LX("sendExceptionEncounteredFailed").d("reason", "msgIdEmpty")); return; } - //Json event should not be empty + // Json event should not be empty if (msgIdAndJsonEvent.second.empty()) { ACSDK_ERROR(LX("sendExceptionEncounteredFailed").d("reason", "JsonEventEmpty")); return; @@ -139,10 +124,10 @@ void ExceptionEncounteredSender::sendExceptionEncountered( } ExceptionEncounteredSender::ExceptionEncounteredSender( - std::shared_ptr messageSender): + std::shared_ptr messageSender) : m_messageSender{messageSender} { } -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK \ No newline at end of file +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/ExternalMediaPlayer/AdapterUtils.cpp b/AVSCommon/AVS/src/ExternalMediaPlayer/AdapterUtils.cpp new file mode 100644 index 0000000000..5c20ceb6d3 --- /dev/null +++ b/AVSCommon/AVS/src/ExternalMediaPlayer/AdapterUtils.cpp @@ -0,0 +1,196 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "AVSCommon/AVS/ExternalMediaPlayer/AdapterUtils.h" + +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace avs { +namespace externalMediaPlayer { + +using namespace avsCommon::avs; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::externalMediaPlayer; + +/* + * As per Spotify integration spec request for RequestToken retries shall not be performed in + * an interval of less than 800 milliseconds. + */ +const std::vector SESSION_RETRY_TABLE = { + 1600, // Retry 1: 1.6s -> .8s to 2.4s + 2000, // Retry 2: 2.0s -> 1.0s to 3s + 3000, // Retry 3: 3.00s + 5000, // Retry 4: 5.00s + 10000, // Retry 5: 10.00s + 20000, // Retry 6: 20.00s +}; + +avsCommon::utils::RetryTimer SESSION_RETRY_TIMER(SESSION_RETRY_TABLE); + +const NamespaceAndName CHANGE_REPORT("Alexa", "ChangeReport"); +const NamespaceAndName REQUEST_TOKEN("ExternalMediaPlayer", "RequestToken"); +const NamespaceAndName LOGIN("ExternalMediaPlayer", "Login"); +const NamespaceAndName LOGOUT("ExternalMediaPlayer", "Logout"); +const NamespaceAndName PLAYER_EVENT("ExternalMediaPlayer", "PlayerEvent"); +const NamespaceAndName PLAYER_ERROR_EVENT("ExternalMediaPlayer", "PlayerError"); + +// The key values used in the context payload from External Media Player to AVS. +const char PLAYER_ID[] = "playerId"; +const char ENDPOINT_ID[] = "endpointId"; +const char LOGGED_IN[] = "loggedIn"; +const char USERNAME[] = "username"; +const char IS_GUEST[] = "isGuest"; +const char LAUNCHED[] = "launched"; +const char ACTIVE[] = "active"; + +// The key values used in the context payload from External Media Player to AVS. +const char STATE[] = "state"; +const char OPERATIONS[] = "supportedOperations"; +const char MEDIA[] = "media"; +const char POSITIONINMS[] = "positionMilliseconds"; +const char SHUFFLE[] = "shuffle"; +const char REPEAT[] = "repeat"; +const char FAVORITE[] = "favorite"; +const char PLAYBACK_SOURCE[] = "playbackSource"; +const char TYPE[] = "type"; +const char PLAYBACK_SOURCE_ID[] = "playbackSourceId"; +const char TRACKNAME[] = "trackName"; +const char TRACK_ID[] = "trackId"; +const char TRACK_NUMBER[] = "trackNumber"; +const char ARTIST[] = "artist"; +const char ARTIST_ID[] = "artistId"; +const char ALBUM[] = "album"; +const char ALBUM_ID[] = "albumId"; +const char COVER_URLS[] = "coverUrls"; +const char TINY_URL[] = "tiny"; +const char SMALL_URL[] = "small"; +const char MEDIUM_URL[] = "medium"; +const char LARGE_URL[] = "large"; +const char COVER_ID[] = "coverId"; +const char MEDIA_PROVIDER[] = "mediaProvider"; +const char MEDIA_TYPE[] = "mediaType"; +const char DURATIONINMS[] = "durationInMilliseconds"; +const char VALUE[] = "value"; +const char UNCERTAINITYINMS[] = "uncertaintyInMilliseconds"; + +/// The default state of a player. +const char DEFAULT_STATE[] = "IDLE"; + +rapidjson::Value buildSupportedOperations( + const std::vector& supportedOperations, + rapidjson::Document::AllocatorType& allocator) { + rapidjson::Value opArray(rapidjson::kArrayType); + + for (const auto& op : supportedOperations) { + rapidjson::Value opJson; + opJson.SetString(SupportedPlaybackOperationToString(op), allocator); + opArray.PushBack(opJson, allocator); + } + + return opArray; +} + +rapidjson::Value buildPlaybackState( + const AdapterPlaybackState& playbackState, + rapidjson::Document::AllocatorType& allocator) { + rapidjson::Value playerJson; + playerJson.SetObject(); + + playerJson.AddMember(PLAYER_ID, playbackState.playerId, allocator); + playerJson.AddMember(STATE, playbackState.state, allocator); + auto operations = buildSupportedOperations(playbackState.supportedOperations, allocator); + playerJson.AddMember(OPERATIONS, operations, allocator); + playerJson.AddMember( + POSITIONINMS, + std::chrono::duration_cast(playbackState.trackOffset).count(), + allocator); + playerJson.AddMember(SHUFFLE, SHUFFLE_STATUS_STRING(playbackState.shuffleEnabled), allocator); + playerJson.AddMember(REPEAT, REPEAT_STATUS_STRING(playbackState.repeatEnabled), allocator); + playerJson.AddMember(FAVORITE, RatingToString(playbackState.favorites), allocator); + + rapidjson::Document media(rapidjson::kObjectType); + media.AddMember(TYPE, playbackState.type, allocator); + + rapidjson::Document value(rapidjson::kObjectType); + value.AddMember(PLAYBACK_SOURCE, playbackState.playbackSource, allocator); + value.AddMember(PLAYBACK_SOURCE_ID, playbackState.playbackSourceId, allocator); + value.AddMember(TRACKNAME, playbackState.trackName, allocator); + value.AddMember(TRACK_ID, playbackState.trackId, allocator); + value.AddMember(TRACK_NUMBER, playbackState.trackNumber, allocator); + value.AddMember(ARTIST, playbackState.artistName, allocator); + value.AddMember(ARTIST_ID, playbackState.artistId, allocator); + value.AddMember(ALBUM, playbackState.albumName, allocator); + value.AddMember(ALBUM_ID, playbackState.albumId, allocator); + + rapidjson::Document coverUrl(rapidjson::kObjectType); + coverUrl.AddMember(TINY_URL, playbackState.tinyURL, allocator); + coverUrl.AddMember(SMALL_URL, playbackState.smallURL, allocator); + coverUrl.AddMember(MEDIUM_URL, playbackState.mediumURL, allocator); + coverUrl.AddMember(LARGE_URL, playbackState.largeURL, allocator); + value.AddMember(COVER_URLS, coverUrl, allocator); + + value.AddMember(COVER_ID, playbackState.coverId, allocator); + value.AddMember(MEDIA_PROVIDER, playbackState.mediaProvider, allocator); + value.AddMember(MEDIA_TYPE, MediaTypeToString(playbackState.mediaType), allocator); + value.AddMember( + DURATIONINMS, std::chrono::duration_cast(playbackState.duration).count(), allocator); + + media.AddMember(VALUE, value, allocator); + playerJson.AddMember(MEDIA, media, allocator); + + return playerJson; +} + +rapidjson::Value buildSessionState( + const AdapterSessionState& sessionState, + rapidjson::Document::AllocatorType& allocator) { + rapidjson::Value playerJson; + playerJson.SetObject(); + playerJson.AddMember(PLAYER_ID, sessionState.playerId, allocator); + playerJson.AddMember(ENDPOINT_ID, sessionState.endpointId, allocator); + playerJson.AddMember(LOGGED_IN, sessionState.loggedIn, allocator); + playerJson.AddMember(USERNAME, sessionState.userName, allocator); + playerJson.AddMember(IS_GUEST, sessionState.isGuest, allocator); + playerJson.AddMember(LAUNCHED, sessionState.launched, allocator); + playerJson.AddMember(ACTIVE, sessionState.active, allocator); + + return playerJson; +} + +bool buildDefaultPlayerState(rapidjson::Value* document, rapidjson::Document::AllocatorType& allocator) { + if (!document) { + return false; + } + document->AddMember(STATE, DEFAULT_STATE, allocator); + rapidjson::Value opArray(rapidjson::kArrayType); + document->AddMember(OPERATIONS, opArray, allocator); + document->AddMember(SHUFFLE, SHUFFLE_STATUS_STRING(false), allocator); + document->AddMember(REPEAT, REPEAT_STATUS_STRING(false), allocator); + document->AddMember(FAVORITE, RatingToString(Favorites::NOT_RATED), allocator); + document->AddMember(POSITIONINMS, 0, allocator); + document->AddMember(UNCERTAINITYINMS, 0, allocator); + + return true; +} + +} // namespace externalMediaPlayer +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/HandlerAndPolicy.cpp b/AVSCommon/AVS/src/HandlerAndPolicy.cpp index fcafd344ad..f207c1e85a 100644 --- a/AVSCommon/AVS/src/HandlerAndPolicy.cpp +++ b/AVSCommon/AVS/src/HandlerAndPolicy.cpp @@ -1,7 +1,5 @@ /* - * HandlerAndPolicy.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -29,21 +27,22 @@ HandlerAndPolicy::HandlerAndPolicy() : policy{BlockingPolicy::NONE} { } HandlerAndPolicy::HandlerAndPolicy(std::shared_ptr handlerIn, BlockingPolicy policyIn) : - handler{handlerIn}, policy{policyIn} { + handler{handlerIn}, + policy{policyIn} { } -HandlerAndPolicy::operator bool () const { +HandlerAndPolicy::operator bool() const { return handler && (policy != BlockingPolicy::NONE); } -bool operator == (const HandlerAndPolicy& lhs, const HandlerAndPolicy& rhs) { +bool operator==(const HandlerAndPolicy& lhs, const HandlerAndPolicy& rhs) { return std::tie(lhs.handler, lhs.policy) == std::tie(rhs.handler, rhs.policy); } -bool operator != (const HandlerAndPolicy& lhs, const HandlerAndPolicy& rhs) { +bool operator!=(const HandlerAndPolicy& lhs, const HandlerAndPolicy& rhs) { return !(lhs == rhs); } -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/MessageRequest.cpp b/AVSCommon/AVS/src/MessageRequest.cpp index 89e01a5b2b..17154b9b4a 100644 --- a/AVSCommon/AVS/src/MessageRequest.cpp +++ b/AVSCommon/AVS/src/MessageRequest.cpp @@ -1,7 +1,5 @@ /* - * MessageRequest.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -16,18 +14,32 @@ */ #include "AVSCommon/AVS/MessageRequest.h" +#include "AVSCommon/Utils/Logger/Logger.h" namespace alexaClientSDK { namespace avsCommon { namespace avs { -MessageRequest::MessageRequest(const std::string & jsonContent, - std::shared_ptr attachmentReader) : - m_jsonContent{jsonContent}, m_attachmentReader{attachmentReader} { +using namespace sdkInterfaces; + +/// String to identify log entries originating from this file. +static const std::string TAG("MessageRequest"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +MessageRequest::MessageRequest( + const std::string& jsonContent, + std::shared_ptr attachmentReader) : + m_jsonContent{jsonContent}, + m_attachmentReader{attachmentReader} { } MessageRequest::~MessageRequest() { - } std::string MessageRequest::getJsonContent() { @@ -38,45 +50,75 @@ std::shared_ptr MessageRequest::ge return m_attachmentReader; } -void MessageRequest::onSendCompleted(Status status) { - // default no-op +void MessageRequest::sendCompleted(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status status) { + std::unique_lock lock{m_observerMutex}; + auto observers = m_observers; + lock.unlock(); + + for (auto observer : observers) { + observer->onSendCompleted(status); + } } -void MessageRequest::onExceptionReceived(const std::string & exceptionMessage) { - // default no-op +void MessageRequest::exceptionReceived(const std::string& exceptionMessage) { + ACSDK_ERROR(LX("onExceptionReceived").d("exception", exceptionMessage)); + + std::unique_lock lock{m_observerMutex}; + auto observers = m_observers; + lock.unlock(); + + for (auto observer : observers) { + observer->onExceptionReceived(exceptionMessage); + } +} + +void MessageRequest::addObserver(std::shared_ptr observer) { + if (!observer) { + ACSDK_ERROR(LX("addObserverFailed").d("reason", "nullObserver")); + return; + } + + std::lock_guard lock{m_observerMutex}; + m_observers.insert(observer); } -std::string MessageRequest::statusToString(Status status) { +void MessageRequest::removeObserver( + std::shared_ptr observer) { + if (!observer) { + ACSDK_ERROR(LX("removeObserverFailed").d("reason", "nullObserver")); + return; + } + + std::lock_guard lock{m_observerMutex}; + m_observers.erase(observer); +} + +using namespace avsCommon::sdkInterfaces; + +bool MessageRequest::isServerStatus(MessageRequestObserverInterface::Status status) { switch (status) { - case Status::PENDING: - return "PENDING"; - case Status::SUCCESS: - return "SUCCESS"; - case Status::NOT_CONNECTED: - return "NOT_CONNECTED"; - case Status::NOT_SYNCHRONIZED: - return "NOT_SYNCHRONIZED"; - case Status::TIMEDOUT: - return "TIMEDOUT"; - case Status::PROTOCOL_ERROR: - return "PROTOCOL_ERROR"; - case Status::INTERNAL_ERROR: - return "INTERNAL_ERROR"; - case Status::SERVER_INTERNAL_ERROR: - return "SERVER_INTERNAL_ERROR"; - case Status::REFUSED: - return "REFUSED"; - case Status::CANCELED: - return "CANCELED"; - case Status::THROTTLED: - return "THROTTLED"; - case Status::INVALID_AUTH: - return "INVALID_AUTH"; + case MessageRequestObserverInterface::Status::SUCCESS: + case MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT: + case MessageRequestObserverInterface::Status::SERVER_INTERNAL_ERROR_V2: + case MessageRequestObserverInterface::Status::CANCELED: + case MessageRequestObserverInterface::Status::THROTTLED: + case MessageRequestObserverInterface::Status::BAD_REQUEST: + case MessageRequestObserverInterface::Status::SERVER_OTHER_ERROR: + return true; + case MessageRequestObserverInterface::Status::PENDING: + case MessageRequestObserverInterface::Status::NOT_CONNECTED: + case MessageRequestObserverInterface::Status::NOT_SYNCHRONIZED: + case MessageRequestObserverInterface::Status::TIMEDOUT: + case MessageRequestObserverInterface::Status::PROTOCOL_ERROR: + case MessageRequestObserverInterface::Status::INTERNAL_ERROR: + case MessageRequestObserverInterface::Status::REFUSED: + case MessageRequestObserverInterface::Status::INVALID_AUTH: + return false; } - return "sendMessageStatusToString_UNHANDLED_ERROR"; + return false; } -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/src/NamespaceAndName.cpp b/AVSCommon/AVS/src/NamespaceAndName.cpp index b141377dc0..1ffd6af539 100644 --- a/AVSCommon/AVS/src/NamespaceAndName.cpp +++ b/AVSCommon/AVS/src/NamespaceAndName.cpp @@ -1,7 +1,5 @@ /* - * NamespaceAndName.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -24,26 +22,27 @@ namespace alexaClientSDK { namespace avsCommon { namespace avs { - NamespaceAndName::NamespaceAndName(const std::string &nameSpaceIn, const std::string &nameIn) : - nameSpace{nameSpaceIn}, name{nameIn} { - } +NamespaceAndName::NamespaceAndName(const std::string& nameSpaceIn, const std::string& nameIn) : + nameSpace{nameSpaceIn}, + name{nameIn} { +} - bool operator==(const NamespaceAndName &lhs, const NamespaceAndName &rhs) { - return std::tie(lhs.nameSpace, lhs.name) == std::tie(rhs.nameSpace, rhs.name); - } +bool operator==(const NamespaceAndName& lhs, const NamespaceAndName& rhs) { + return std::tie(lhs.nameSpace, lhs.name) == std::tie(rhs.nameSpace, rhs.name); +} -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK namespace std { size_t hash::operator()( - const alexaClientSDK::avsCommon::avs::NamespaceAndName& in) const { + const alexaClientSDK::avsCommon::avs::NamespaceAndName& in) const { std::size_t seed = 0; alexaClientSDK::avsCommon::utils::functional::hashCombine(seed, in.nameSpace); alexaClientSDK::avsCommon::utils::functional::hashCombine(seed, in.name); return seed; }; -} // namespace std +} // namespace std diff --git a/AVSCommon/AVS/test/AVSCommon/AVS/Attachment/MockAttachmentManager.h b/AVSCommon/AVS/test/AVSCommon/AVS/Attachment/MockAttachmentManager.h index 40c1b449a8..74d46469f3 100644 --- a/AVSCommon/AVS/test/AVSCommon/AVS/Attachment/MockAttachmentManager.h +++ b/AVSCommon/AVS/test/AVSCommon/AVS/Attachment/MockAttachmentManager.h @@ -1,7 +1,5 @@ /* - * MockAttachmentManager.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,9 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_TEST_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_MANAGER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_TEST_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_MANAGER_INTERFACE_H_ - +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_TEST_AVSCOMMON_AVS_ATTACHMENT_MOCKATTACHMENTMANAGER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_TEST_AVSCOMMON_AVS_ATTACHMENT_MOCKATTACHMENTMANAGER_H_ #include #include @@ -33,22 +30,22 @@ namespace attachment { namespace test { /// Mock class that implements the AttachmentManager. -class MockAttachmentManager : public AttachmentManagerInterface{ +class MockAttachmentManager : public AttachmentManagerInterface { public: - MOCK_CONST_METHOD2( - generateAttachmentId, - std::string (const std::string & contextId, const std::string & contentId)); - MOCK_METHOD1(setAttachmentTimeoutMinutes, bool (std::chrono::minutes timeoutMinutes)); - MOCK_METHOD1(createWriter, std::unique_ptr (const std::string & attachmentId)); + MOCK_CONST_METHOD2(generateAttachmentId, std::string(const std::string& contextId, const std::string& contentId)); + MOCK_METHOD1(setAttachmentTimeoutMinutes, bool(std::chrono::minutes timeoutMinutes)); + MOCK_METHOD2( + createWriter, + std::unique_ptr(const std::string& attachmentId, utils::sds::WriterPolicy policy)); MOCK_METHOD2( - createReader, - std::unique_ptr (const std::string & attachmentId, AttachmentReader::Policy policy)); + createReader, + std::unique_ptr(const std::string& attachmentId, utils::sds::ReaderPolicy policy)); }; -} // namespace test -} // namespace attachment -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace attachment +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_TEST_AVS_COMMON_AVS_ATTACHMENT_ATTACHMENT_MANAGER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_TEST_AVSCOMMON_AVS_ATTACHMENT_MOCKATTACHMENTMANAGER_H_ diff --git a/AVSCommon/AVS/test/AlexaClientSDKInitTest.cpp b/AVSCommon/AVS/test/AlexaClientSDKInitTest.cpp index bd065184e7..dae7f40a53 100644 --- a/AVSCommon/AVS/test/AlexaClientSDKInitTest.cpp +++ b/AVSCommon/AVS/test/AlexaClientSDKInitTest.cpp @@ -1,7 +1,5 @@ /* - * AlexaClientSDKInitTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -87,8 +85,8 @@ TEST(AlexaClientSDKInitTest, uninitialize) { AlexaClientSDKInit::uninitialize(); } -} // namesapce test -} // namespace initialization -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace initialization +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/test/Attachment/AttachmentManagerV2Test.cpp b/AVSCommon/AVS/test/Attachment/AttachmentManagerV2Test.cpp index ab46b1edf8..3cab3e7920 100644 --- a/AVSCommon/AVS/test/Attachment/AttachmentManagerV2Test.cpp +++ b/AVSCommon/AVS/test/Attachment/AttachmentManagerV2Test.cpp @@ -1,7 +1,5 @@ /* - * AttachmentManagerV2Test.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -54,7 +52,8 @@ class AttachmentManagerTest : public ::testing::Test { /** * Constructor. */ - AttachmentManagerTest() : m_manager{AttachmentManager::AttachmentType::IN_PROCESS} { } + AttachmentManagerTest() : m_manager{AttachmentManager::AttachmentType::IN_PROCESS} { + } /// Local type aliases. using ReaderVec = std::vector>; @@ -68,7 +67,7 @@ class AttachmentManagerTest : public ::testing::Test { /** * Utility function for testing writer futures. */ - void testWriters(const WriterVec & writers, bool expectedValid); + void testWriters(const WriterVec& writers, bool expectedValid); /** * Utility function for creating three reader futures, and inserting them into the vector. @@ -78,7 +77,7 @@ class AttachmentManagerTest : public ::testing::Test { /** * Utility function for testing reader futures. */ - void testReaders(const ReaderVec & readers, bool expectedValid); + void testReaders(const ReaderVec& readers, bool expectedValid); /// A local @c AttachmentManager object. AttachmentManager m_manager; @@ -90,8 +89,8 @@ void AttachmentManagerTest::createWriters(WriterVec* writers) { writers->push_back(m_manager.createWriter(TEST_ATTACHMENT_ID_STRING_THREE)); } -void AttachmentManagerTest::testWriters(const WriterVec & writers, bool expectedValid) { - for (auto & writer : writers) { +void AttachmentManagerTest::testWriters(const WriterVec& writers, bool expectedValid) { + for (auto& writer : writers) { if (expectedValid) { ASSERT_NE(writer, nullptr); } else { @@ -101,13 +100,13 @@ void AttachmentManagerTest::testWriters(const WriterVec & writers, bool expected } void AttachmentManagerTest::createReaders(ReaderVec* readers) { - readers->push_back(m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, AttachmentReader::Policy::BLOCKING)); - readers->push_back(m_manager.createReader(TEST_ATTACHMENT_ID_STRING_TWO, AttachmentReader::Policy::BLOCKING)); - readers->push_back(m_manager.createReader(TEST_ATTACHMENT_ID_STRING_THREE, AttachmentReader::Policy::BLOCKING)); + readers->push_back(m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, utils::sds::ReaderPolicy::BLOCKING)); + readers->push_back(m_manager.createReader(TEST_ATTACHMENT_ID_STRING_TWO, utils::sds::ReaderPolicy::BLOCKING)); + readers->push_back(m_manager.createReader(TEST_ATTACHMENT_ID_STRING_THREE, utils::sds::ReaderPolicy::BLOCKING)); } -void AttachmentManagerTest::testReaders(const ReaderVec & readers, bool expectedValid) { - for (auto & reader : readers) { +void AttachmentManagerTest::testReaders(const ReaderVec& readers, bool expectedValid) { + for (auto& reader : readers) { if (expectedValid) { ASSERT_NE(reader, nullptr); } else { @@ -157,7 +156,7 @@ TEST_F(AttachmentManagerTest, testAttachmentManagerSetTimeout) { TEST_F(AttachmentManagerTest, testAttachmentManagerCreateWriterThenReader) { // Create the writer before the reader. auto writer = m_manager.createWriter(TEST_ATTACHMENT_ID_STRING_ONE); - auto reader = m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, AttachmentReader::Policy::BLOCKING); + auto reader = m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, utils::sds::ReaderPolicy::BLOCKING); ASSERT_NE(writer, nullptr); ASSERT_NE(reader, nullptr); } @@ -167,7 +166,7 @@ TEST_F(AttachmentManagerTest, testAttachmentManagerCreateWriterThenReader) { */ TEST_F(AttachmentManagerTest, testAttachmentManagerCreateReaderThenWriter) { // Create the reader before the writer. - auto reader = m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, AttachmentReader::Policy::BLOCKING); + auto reader = m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, utils::sds::ReaderPolicy::BLOCKING); auto writer = m_manager.createWriter(TEST_ATTACHMENT_ID_STRING_ONE); ASSERT_NE(writer, nullptr); ASSERT_NE(reader, nullptr); @@ -178,7 +177,7 @@ TEST_F(AttachmentManagerTest, testAttachmentManagerCreateReaderThenWriter) { */ TEST_F(AttachmentManagerTest, testAttachmentManagerCreateReader) { // Create the reader. - auto reader = m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, AttachmentReader::Policy::BLOCKING); + auto reader = m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, utils::sds::ReaderPolicy::BLOCKING); ASSERT_NE(reader, nullptr); } @@ -190,7 +189,7 @@ TEST_F(AttachmentManagerTest, testAttachmentManagerReadAttachmentWithoutWriter) std::vector result(testPattern.size()); // Create the reader. - auto reader = m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, AttachmentReader::Policy::NON_BLOCKING); + auto reader = m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, utils::sds::ReaderPolicy::NONBLOCKING); ASSERT_NE(reader, nullptr); // Verify that read indicates an empty (but not closed) buffer. @@ -260,8 +259,8 @@ TEST_F(AttachmentManagerTest, testAttachmentManagerCreateMultipleWriters) { * Verify an AttachmentManager can't create multiple readers. */ TEST_F(AttachmentManagerTest, testAttachmentManagerCreateMultipleReaders) { - auto reader1 = m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, AttachmentReader::Policy::BLOCKING); - auto reader2 = m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, AttachmentReader::Policy::BLOCKING); + auto reader1 = m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, utils::sds::ReaderPolicy::BLOCKING); + auto reader2 = m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, utils::sds::ReaderPolicy::BLOCKING); ASSERT_NE(reader1, nullptr); ASSERT_EQ(reader2, nullptr); } @@ -271,7 +270,7 @@ TEST_F(AttachmentManagerTest, testAttachmentManagerCreateMultipleReaders) { */ TEST_F(AttachmentManagerTest, testAttachmentWriterAndReaderInOnePass) { auto writer = m_manager.createWriter(TEST_ATTACHMENT_ID_STRING_ONE); - auto reader = m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, AttachmentReader::Policy::BLOCKING); + auto reader = m_manager.createReader(TEST_ATTACHMENT_ID_STRING_ONE, utils::sds::ReaderPolicy::BLOCKING); ASSERT_NE(writer, nullptr); ASSERT_NE(reader, nullptr); @@ -293,7 +292,7 @@ TEST_F(AttachmentManagerTest, testAttachmentWriterAndReaderInOnePass) { } } -} // namespace test -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/test/Attachment/AttachmentReaderTest.cpp b/AVSCommon/AVS/test/Attachment/AttachmentReaderTest.cpp index 363146a5cf..76db9a536f 100644 --- a/AVSCommon/AVS/test/Attachment/AttachmentReaderTest.cpp +++ b/AVSCommon/AVS/test/Attachment/AttachmentReaderTest.cpp @@ -1,7 +1,5 @@ /* - * AttachmentReaderTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -46,7 +44,7 @@ class AttachmentReaderTest : public ::testing::Test { * Constructor. */ AttachmentReaderTest() : - m_readerPolicy{AttachmentReader::Policy::NON_BLOCKING}, + m_readerPolicy{InProcessSDS::Reader::Policy::NONBLOCKING}, m_writerPolicy{InProcessSDS::Writer::Policy::ALL_OR_NOTHING} { } @@ -72,10 +70,12 @@ class AttachmentReaderTest : public ::testing::Test { * @param dataOffset The offset into the pattern which is being read from. */ void readAndVerifyResult( - std::shared_ptr reader, size_t resultSize, size_t dataOffset = 0); + std::shared_ptr reader, + size_t resultSize, + size_t dataOffset = 0); /// The commonly used AttachmentReader policy. - AttachmentReader::Policy m_readerPolicy; + ReaderPolicy m_readerPolicy; /// The commonly used SDSWriter policy. InProcessSDS::Writer::Policy m_writerPolicy; /// The commonly used SDS in these tests. @@ -121,7 +121,6 @@ void AttachmentReaderTest::testMultipleReads(bool closeWriterBeforeReading) { int iterationsMax = 10; while (!done && iterations < iterationsMax) { - auto bytesRead = m_reader->read(result.data(), result.size(), &readStatus); if (terminalStatus == readStatus) { @@ -143,7 +142,9 @@ void AttachmentReaderTest::testMultipleReads(bool closeWriterBeforeReading) { } void AttachmentReaderTest::readAndVerifyResult( - std::shared_ptr reader, size_t resultSize, size_t dataOffset) { + std::shared_ptr reader, + size_t resultSize, + size_t dataOffset) { std::vector result(resultSize); auto readStatus = InProcessAttachmentReader::ReadStatus::OK; auto numRead = reader->read(result.data(), result.size(), &readStatus); @@ -209,8 +210,10 @@ TEST_F(AttachmentReaderTest, testAttachmentReaderPartialReadWithSeek) { auto reader = InProcessAttachmentReader::create(m_readerPolicy, m_sds, TEST_SDS_SEEK_POSITION); ASSERT_NE(reader, nullptr); - readAndVerifyResult(std::shared_ptr( - std::move(reader)), TEST_SDS_PARTIAL_READ_AMOUNT_IN_BYTES, TEST_SDS_SEEK_POSITION); + readAndVerifyResult( + std::shared_ptr(std::move(reader)), + TEST_SDS_PARTIAL_READ_AMOUNT_IN_BYTES, + TEST_SDS_SEEK_POSITION); } /** @@ -227,7 +230,7 @@ TEST_F(AttachmentReaderTest, testAttachmentReaderMultipleReadsOfUnfinishedData) testMultipleReads(true); } -} // namespace test -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/test/Attachment/AttachmentTest.cpp b/AVSCommon/AVS/test/Attachment/AttachmentTest.cpp index 8a1febbd6c..052b412666 100644 --- a/AVSCommon/AVS/test/Attachment/AttachmentTest.cpp +++ b/AVSCommon/AVS/test/Attachment/AttachmentTest.cpp @@ -1,7 +1,5 @@ /* - * AttachmentTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -47,13 +45,13 @@ class AttachmentTest : public ::testing::Test { * * @param policy The policy for the reader to be created. */ - void testCreateReader(AttachmentReader::Policy policy); + void testCreateReader(ReaderPolicy policy); /// A local attachment object to simplify test code. std::shared_ptr m_attachment; }; -void AttachmentTest::testCreateReader(AttachmentReader::Policy policy) { +void AttachmentTest::testCreateReader(ReaderPolicy policy) { // Test create reader where there is no writer. auto reader = m_attachment->createReader(policy); ASSERT_NE(reader, nullptr); @@ -86,14 +84,14 @@ TEST_F(AttachmentTest, testGetAttachmentId) { * Verify that an Attachment can create a blocking reader in various scenarios. */ TEST_F(AttachmentTest, testAttachmentCreateBlockingReader) { - testCreateReader(AttachmentReader::Policy::BLOCKING); + testCreateReader(ReaderPolicy::BLOCKING); } /** * Verify that an Attachment can create a non-blocking reader in various scenarios. */ TEST_F(AttachmentTest, testAttachmentCreateNonBlockingReader) { - testCreateReader(AttachmentReader::Policy::NON_BLOCKING); + testCreateReader(ReaderPolicy::NONBLOCKING); } /** @@ -111,7 +109,7 @@ TEST_F(AttachmentTest, testAttachmentCreateWriter) { // Once again - this time test where there is a reader. m_attachment = std::make_shared(TEST_ATTACHMENT_ID_STRING_ONE); - m_attachment->createReader(AttachmentReader::Policy::NON_BLOCKING); + m_attachment->createReader(ReaderPolicy::NONBLOCKING); writer = m_attachment->createWriter(); ASSERT_NE(writer, nullptr); @@ -131,7 +129,7 @@ TEST_F(AttachmentTest, testCreateAttachmentWithSDS) { // Test member functions, ensure they appear to work correctly. ASSERT_EQ(TEST_ATTACHMENT_ID_STRING_ONE, attachment->getId()); - auto reader = attachment->createReader(AttachmentReader::Policy::NON_BLOCKING); + auto reader = attachment->createReader(ReaderPolicy::NONBLOCKING); ASSERT_NE(reader, nullptr); auto writer = attachment->createWriter(); @@ -148,7 +146,7 @@ TEST_F(AttachmentTest, testAttachmentCreateMultipleWriters) { ASSERT_EQ(writer2, nullptr); } -} // namespace test -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/test/Attachment/AttachmentWriterTest.cpp b/AVSCommon/AVS/test/Attachment/AttachmentWriterTest.cpp index 56ea41508a..1102b4f9bc 100644 --- a/AVSCommon/AVS/test/Attachment/AttachmentWriterTest.cpp +++ b/AVSCommon/AVS/test/Attachment/AttachmentWriterTest.cpp @@ -1,7 +1,5 @@ /* - * AttachmentWriterTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -69,7 +67,7 @@ void AttachmentWriterTest::init() { ASSERT_NE(m_sds, nullptr); m_writer = InProcessAttachmentWriter::create(m_sds); ASSERT_NE(m_writer, nullptr); - m_reader = InProcessAttachmentReader::create(AttachmentReader::Policy::NON_BLOCKING, m_sds); + m_reader = InProcessAttachmentReader::create(ReaderPolicy::NONBLOCKING, m_sds); ASSERT_NE(m_reader, nullptr); m_testPattern = createTestPattern(TEST_SDS_BUFFER_SIZE_IN_BYTES); } @@ -97,7 +95,6 @@ void AttachmentWriterTest::testMultipleReads(bool closeWriterBeforeReading) { int iterationsMax = 10; while (!done && iterations < iterationsMax) { - auto bytesRead = m_reader->read(result.data(), result.size(), &readStatus); if (terminalStatus == readStatus) { @@ -187,7 +184,7 @@ TEST_F(AttachmentWriterTest, testAttachmentWriterAndReaderMultipleReadsOfUnfinis testMultipleReads(false); } -} // namespace test -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/test/Attachment/Common/Common.cpp b/AVSCommon/AVS/test/Attachment/Common/Common.cpp index 9d0b9b2b3b..1c275080a2 100644 --- a/AVSCommon/AVS/test/Attachment/Common/Common.cpp +++ b/AVSCommon/AVS/test/Attachment/Common/Common.cpp @@ -1,7 +1,5 @@ /* - * Common.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -43,7 +41,7 @@ std::vector createTestPattern(int patternSize) { return vec; } -} // namespace test -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/test/Attachment/Common/Common.h b/AVSCommon/AVS/test/Attachment/Common/Common.h index b730a6d737..8ce0bd72f8 100644 --- a/AVSCommon/AVS/test/Attachment/Common/Common.h +++ b/AVSCommon/AVS/test/Attachment/Common/Common.h @@ -1,7 +1,5 @@ /* - * Common.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_AVS_TEST_ATTACHMENT_COMMON_COMMON_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_AVS_TEST_ATTACHMENT_COMMON_COMMON_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_AVS_TEST_ATTACHMENT_COMMON_COMMON_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_AVS_TEST_ATTACHMENT_COMMON_COMMON_H_ #include #include @@ -57,9 +55,9 @@ std::unique_ptr createSDS(int size); */ std::vector createTestPattern(int size); -} // namespace test -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_AVS_TEST_ATTACHMENT_COMMON_COMMON_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_AVS_TEST_ATTACHMENT_COMMON_COMMON_H_ diff --git a/AVSCommon/AVS/test/CapabilityAgentTest.cpp b/AVSCommon/AVS/test/CapabilityAgentTest.cpp index ec92d3e1d9..97da0e22f3 100644 --- a/AVSCommon/AVS/test/CapabilityAgentTest.cpp +++ b/AVSCommon/AVS/test/CapabilityAgentTest.cpp @@ -1,7 +1,5 @@ /* - * CapabilityAgentTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -70,13 +68,16 @@ static const std::string PAYLOAD("payload"); static const std::string PAYLOAD_TEST("payload_Test"); /// A payload for testing +// clang-format off static const std::string PAYLOAD_SPEECH_RECOGNIZER = "{" "\"profile\":\"CLOSE_TALK\"," "\"format\":\"AUDIO_L16_RATE_16000_CHANNELS_1\"" "}"; +// clang-format on /// A context for testing +// clang-format off static const std::string CONTEXT_TEST = "{" "\"context\":[" @@ -93,11 +94,13 @@ static const std::string CONTEXT_TEST = "}" "]" "}"; +// clang-format on /** * TestEvents for testing. Tuple contains test event string to compare the result string with, the dialogRequestID and * the context to be passed as arguments. */ +// clang-format off static const std::tuple testEventWithDialogReqIdAndContext = { std::make_tuple( /// Event with context and dialog request id. @@ -128,7 +131,9 @@ static const std::tuple testEventWithDial "}" "}" "}", DIALOG_REQUEST_ID_TEST, CONTEXT_TEST)}; +// clang-format on +// clang-format off static const std::tuple testEventWithDialogReqIdNoContext = { std::make_tuple( /// An event with no context. @@ -146,7 +151,9 @@ static const std::tuple testEventWithDial "}" "}" "}",DIALOG_REQUEST_ID_TEST, "")}; +// clang-format on +// clang-format off static const std::tuple testEventWithoutDialogReqIdOrContext = { std::make_tuple( /// An event with no dialog request id and no context for testing. @@ -163,7 +170,9 @@ static const std::tuple testEventWithoutD "}" "}" "}", "", "")}; +// clang-format on +// clang-format off static const std::tuple testEventWithContextAndNoDialogReqId = { std::make_tuple( /// An event with no dialog request id for testing. @@ -193,13 +202,14 @@ static const std::tuple testEventWithCont "}" "}" "}", "", CONTEXT_TEST)}; +// clang-format on /// Mock @c DirectiveHandlerResultInterface implementation. class MockResult : public DirectiveHandlerResultInterface { public: - void setCompleted() override; + void setCompleted() override; - void setFailed(const std::string& description) override; + void setFailed(const std::string& description) override; }; void MockResult::setCompleted() { @@ -213,9 +223,9 @@ void MockResult::setFailed(const std::string& description) { class MockCapabilityAgent : public CapabilityAgent { public: // Expand polymorphic matching in this scope to include these inherited methods. - using DirectiveHandlerInterface::preHandleDirective; - using DirectiveHandlerInterface::handleDirective; using DirectiveHandlerInterface::cancelDirective; + using DirectiveHandlerInterface::handleDirective; + using DirectiveHandlerInterface::preHandleDirective; /** * Creates an instance of the @c MockCapabilityAgent. @@ -253,8 +263,11 @@ class MockCapabilityAgent : public CapabilityAgent { FunctionCalled waitForFunctionCalls(const std::chrono::milliseconds duration = std::chrono::milliseconds(400)); - const std::pair callBuildJsonEventString(const std::string& eventName, - const std::string& dialogRequestIdValue, const std::string& jsonPayloadValue, const std::string& jsonContext); + const std::pair callBuildJsonEventString( + const std::string& eventName, + const std::string& dialogRequestIdValue, + const std::string& jsonPayloadValue, + const std::string& jsonContext); private: /// flag to indicate which function has been called. @@ -277,7 +290,6 @@ MockCapabilityAgent::MockCapabilityAgent(const std::string& nameSpace) : } MockCapabilityAgent::~MockCapabilityAgent() { - } void MockCapabilityAgent::handleDirectiveImmediately(std::shared_ptr directive) { @@ -309,18 +321,20 @@ avs::DirectiveHandlerConfiguration MockCapabilityAgent::getConfiguration() const return avs::DirectiveHandlerConfiguration(); } -MockCapabilityAgent::FunctionCalled MockCapabilityAgent::waitForFunctionCalls - (const std::chrono::milliseconds duration) { +MockCapabilityAgent::FunctionCalled MockCapabilityAgent::waitForFunctionCalls( + const std::chrono::milliseconds duration) { std::unique_lock lock(m_mutex); - if (!m_wakeTrigger.wait_for(lock, duration, [this]() { return (m_functionCalled != FunctionCalled::NONE); })) - { + if (!m_wakeTrigger.wait_for(lock, duration, [this]() { return (m_functionCalled != FunctionCalled::NONE); })) { return FunctionCalled::NONE; } return m_functionCalled; } -const std::pair MockCapabilityAgent::callBuildJsonEventString(const std::string& eventName, - const std::string& dialogRequestIdValue, const std::string& jsonPayloadValue, const std::string& jsonContext) { +const std::pair MockCapabilityAgent::callBuildJsonEventString( + const std::string& eventName, + const std::string& dialogRequestIdValue, + const std::string& jsonPayloadValue, + const std::string& jsonContext) { return CapabilityAgent::buildJsonEventString(eventName, dialogRequestIdValue, jsonPayloadValue, jsonContext); } @@ -334,8 +348,9 @@ class CapabilityAgentTest : public ::testing::Test { * @param dialogRequestIdPresent Whether a dialogRequestId is expected or not. This helps decide which parts of the * string to compare. */ - void testBuildJsonEventString(std::tuple testTuple, - bool dialogRequestIdPresent); + void testBuildJsonEventString( + std::tuple testTuple, + bool dialogRequestIdPresent); void SetUp() override; @@ -356,7 +371,7 @@ void CapabilityAgentTest::SetUp() { * @param messageId The messageId that was removed (if successful). * @return bool Indicates whether removing the messageId was successful. */ -bool removeMessageId(Document *document, std::string *messageId) { +bool removeMessageId(Document* document, std::string* messageId) { if (!document || !messageId) { return false; } @@ -378,11 +393,11 @@ bool removeMessageId(Document *document, std::string *messageId) { } void CapabilityAgentTest::testBuildJsonEventString( - std::tuple testTuple, - bool dialogRequestIdPresent) { + std::tuple testTuple, + bool dialogRequestIdPresent) { std::string testString = std::get<0>(testTuple); - std::pair msgIdAndJsonEvent = m_capabilityAgent->callBuildJsonEventString(NAME_RECOGNIZE, - std::get<1>(testTuple), PAYLOAD_SPEECH_RECOGNIZER, std::get<2>(testTuple)); + std::pair msgIdAndJsonEvent = m_capabilityAgent->callBuildJsonEventString( + NAME_RECOGNIZE, std::get<1>(testTuple), PAYLOAD_SPEECH_RECOGNIZER, std::get<2>(testTuple)); std::string& jsonEventString = msgIdAndJsonEvent.second; Document expected, actual; @@ -408,13 +423,13 @@ void CapabilityAgentTest::testBuildJsonEventString( * Expect the @c handleDirectiveImmediately with the argument of @c DirectiveAndResultInterface will be called. */ TEST_F(CapabilityAgentTest, testCallToHandleImmediately) { - auto avsMessageHeader = std::make_shared(NAMESPACE_SPEECH_RECOGNIZER, NAME_STOP_CAPTURE, - MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); - std::shared_ptr directive = AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, - m_attachmentManager, ""); + auto avsMessageHeader = std::make_shared( + NAMESPACE_SPEECH_RECOGNIZER, NAME_STOP_CAPTURE, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, ""); m_capabilityAgent->handleDirectiveImmediately(directive); - ASSERT_EQ(MockCapabilityAgent::FunctionCalled::HANDLE_DIRECTIVE_IMMEDIATELY, - m_capabilityAgent->waitForFunctionCalls()); + ASSERT_EQ( + MockCapabilityAgent::FunctionCalled::HANDLE_DIRECTIVE_IMMEDIATELY, m_capabilityAgent->waitForFunctionCalls()); } /** @@ -422,11 +437,11 @@ TEST_F(CapabilityAgentTest, testCallToHandleImmediately) { * Expect the @c preHandleDirective with the argument of @c DirectiveAndResultInterface will be called. */ TEST_F(CapabilityAgentTest, testCallToPrehandleDirective) { - auto avsMessageHeader = std::make_shared(NAMESPACE_SPEECH_RECOGNIZER, NAME_STOP_CAPTURE, - MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); - std::shared_ptr directive = AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, - m_attachmentManager, ""); - std::unique_ptr dirHandlerResult(new MockResult ); + auto avsMessageHeader = std::make_shared( + NAMESPACE_SPEECH_RECOGNIZER, NAME_STOP_CAPTURE, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, ""); + std::unique_ptr dirHandlerResult(new MockResult); m_capabilityAgent->preHandleDirective(directive, std::move(dirHandlerResult)); ASSERT_EQ(MockCapabilityAgent::FunctionCalled::PREHANDLE_DIRECTIVE, m_capabilityAgent->waitForFunctionCalls()); } @@ -437,11 +452,11 @@ TEST_F(CapabilityAgentTest, testCallToPrehandleDirective) { * Expect the @c handleDirective with the argument of @c DirectiveAndResultInterface will be called. */ TEST_F(CapabilityAgentTest, testCallToHandleDirective) { - auto avsMessageHeader = std::make_shared(NAMESPACE_SPEECH_RECOGNIZER, NAME_STOP_CAPTURE, - MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); - std::shared_ptr directive = AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, - m_attachmentManager, ""); - std::unique_ptr dirHandlerResult(new MockResult ); + auto avsMessageHeader = std::make_shared( + NAMESPACE_SPEECH_RECOGNIZER, NAME_STOP_CAPTURE, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, ""); + std::unique_ptr dirHandlerResult(new MockResult); m_capabilityAgent->preHandleDirective(directive, std::move(dirHandlerResult)); ASSERT_EQ(MockCapabilityAgent::FunctionCalled::PREHANDLE_DIRECTIVE, m_capabilityAgent->waitForFunctionCalls()); m_capabilityAgent->handleDirective(MESSAGE_ID_TEST); @@ -453,10 +468,10 @@ TEST_F(CapabilityAgentTest, testCallToHandleDirective) { * @c preHandleDirective is called before handleDirective. Expect @c handleDirective to return @c false. */ TEST_F(CapabilityAgentTest, testCallToHandleDirectiveWithNoPrehandle) { - auto avsMessageHeader = std::make_shared(NAMESPACE_SPEECH_RECOGNIZER, NAME_STOP_CAPTURE, - MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); - std::shared_ptr directive = AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, - m_attachmentManager, ""); + auto avsMessageHeader = std::make_shared( + NAMESPACE_SPEECH_RECOGNIZER, NAME_STOP_CAPTURE, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, ""); ASSERT_FALSE(m_capabilityAgent->CapabilityAgent::handleDirective(MESSAGE_ID_TEST)); } @@ -465,11 +480,11 @@ TEST_F(CapabilityAgentTest, testCallToHandleDirectiveWithNoPrehandle) { * Expect the @c cancelDirective with the argument of @c DirectiveAndResultInterface will be called. */ TEST_F(CapabilityAgentTest, testCallToCancelDirective) { - auto avsMessageHeader = std::make_shared(NAMESPACE_SPEECH_RECOGNIZER, NAME_STOP_CAPTURE, - MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); - std::shared_ptr directive = AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, - m_attachmentManager, ""); - std::unique_ptr dirHandlerResult(new MockResult ); + auto avsMessageHeader = std::make_shared( + NAMESPACE_SPEECH_RECOGNIZER, NAME_STOP_CAPTURE, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, ""); + std::unique_ptr dirHandlerResult(new MockResult); m_capabilityAgent->preHandleDirective(directive, std::move(dirHandlerResult)); ASSERT_EQ(MockCapabilityAgent::FunctionCalled::PREHANDLE_DIRECTIVE, m_capabilityAgent->waitForFunctionCalls()); m_capabilityAgent->cancelDirective(MESSAGE_ID_TEST); @@ -482,10 +497,10 @@ TEST_F(CapabilityAgentTest, testCallToCancelDirective) { * @c DirectiveAndResultInterface will not be called. */ TEST_F(CapabilityAgentTest, testCallToCancelDirectiveWithNoPrehandle) { - auto avsMessageHeader = std::make_shared(NAMESPACE_SPEECH_RECOGNIZER, NAME_STOP_CAPTURE, - MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); - std::shared_ptr directive = AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, - m_attachmentManager, ""); + auto avsMessageHeader = std::make_shared( + NAMESPACE_SPEECH_RECOGNIZER, NAME_STOP_CAPTURE, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, ""); m_capabilityAgent->CapabilityAgent::cancelDirective(MESSAGE_ID_TEST); ASSERT_EQ(MockCapabilityAgent::FunctionCalled::NONE, m_capabilityAgent->waitForFunctionCalls()); } @@ -526,6 +541,6 @@ TEST_F(CapabilityAgentTest, testWithContextAndNoDialogId) { testBuildJsonEventString(testEventWithContextAndNoDialogReqId, false); } -} // namespace test -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/test/DialogUXStateAggregatorTest.cpp b/AVSCommon/AVS/test/DialogUXStateAggregatorTest.cpp index 7c11eaa99e..46a0ed47e1 100644 --- a/AVSCommon/AVS/test/DialogUXStateAggregatorTest.cpp +++ b/AVSCommon/AVS/test/DialogUXStateAggregatorTest.cpp @@ -1,7 +1,5 @@ /* - * DialogUXStateAggregatorTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -53,7 +51,6 @@ class TestObserver : public DialogUXStateObserverInterface { m_state = newState; m_changeOccurred = true; m_UXChanged.notify_one(); - } /** @@ -64,11 +61,10 @@ class TestObserver : public DialogUXStateObserverInterface { * @return Returns @c true if the callback occured within the timeout period and @c false otherwise. */ DialogUXStateObserverInterface::DialogUXState waitForStateChange( - std::chrono::milliseconds timeout, bool* uxChanged) { + std::chrono::milliseconds timeout, + bool* uxChanged) { std::unique_lock lock{m_mutex}; - bool success = m_UXChanged.wait_for(lock, timeout, [this] () { - return m_changeOccurred; - }); + bool success = m_UXChanged.wait_for(lock, timeout, [this]() { return m_changeOccurred; }); if (!success) { *uxChanged = false; @@ -104,9 +100,9 @@ class StateChangeManager { * @param timeout An optional timeout parameter to wait for a state change */ void assertStateChange( - std::shared_ptr observer, - DialogUXStateObserverInterface::DialogUXState expectedState, - std::chrono::milliseconds timeout = DEFAULT_TIMEOUT) { + std::shared_ptr observer, + DialogUXStateObserverInterface::DialogUXState expectedState, + std::chrono::milliseconds timeout = DEFAULT_TIMEOUT) { ASSERT_TRUE(observer); bool stateChanged = false; auto receivedState = observer->waitForStateChange(timeout, &stateChanged); @@ -129,7 +125,9 @@ class StateChangeManager { }; /// Test fixture for testing DialogUXStateAggregator. -class DialogUXAggregatorTest : public ::testing::Test, public StateChangeManager { +class DialogUXAggregatorTest + : public ::testing::Test + , public StateChangeManager { protected: /// The UX state aggregator std::shared_ptr m_aggregator; @@ -221,10 +219,10 @@ TEST_F(DialogUXAggregatorTest, aipBusyLeadsToThinkingState) { assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::THINKING); } -/// Tests that BUSY state goes to IDLE after the specified timeout. +/// Tests that BUSY state goes to IDLE after the specified timeout. TEST_F(DialogUXAggregatorTest, busyGoesToIdleAfterTimeout) { - std::shared_ptr anotherAggregator = - std::make_shared(std::chrono::milliseconds(200)); + std::shared_ptr anotherAggregator = + std::make_shared(std::chrono::milliseconds(200)); anotherAggregator->addObserver(m_anotherTestObserver); @@ -234,12 +232,10 @@ TEST_F(DialogUXAggregatorTest, busyGoesToIdleAfterTimeout) { assertStateChange(m_anotherTestObserver, DialogUXStateObserverInterface::DialogUXState::THINKING); assertStateChange( - m_anotherTestObserver, - DialogUXStateObserverInterface::DialogUXState::IDLE, - std::chrono::milliseconds(400)); + m_anotherTestObserver, DialogUXStateObserverInterface::DialogUXState::IDLE, std::chrono::milliseconds(400)); } -/// Tests that the BUSY state remains in BUSY immediately if a message is received. +/// Tests that the BUSY state remains in BUSY immediately if a message is received. TEST_F(DialogUXAggregatorTest, busyThenReceiveRemainsInBusyImmediately) { assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::IDLE); @@ -261,7 +257,7 @@ TEST_F(DialogUXAggregatorTest, busyThenReceiveGoesToIdleAfterShortTimeout) { m_aggregator->receive("", ""); assertStateChange( - m_testObserver, DialogUXStateObserverInterface::DialogUXState::IDLE, std::chrono::milliseconds(250)); + m_testObserver, DialogUXStateObserverInterface::DialogUXState::IDLE, std::chrono::milliseconds(250)); } /// Tests that the BUSY state goes to IDLE after a SpeechSynthesizer speak state is received. @@ -273,13 +269,13 @@ TEST_F(DialogUXAggregatorTest, busyThenReceiveThenSpeakGoesToSpeak) { m_aggregator->receive("", ""); - m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING); + m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING); assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::SPEAKING); } -/** - * Tests that the BUSY state goes to SPEAKING but not IDLE after both a message is received and a SpeechSynthesizer +/** + * Tests that the BUSY state goes to SPEAKING but not IDLE after both a message is received and a SpeechSynthesizer * speak state is received. */ TEST_F(DialogUXAggregatorTest, busyThenReceiveThenSpeakGoesToSpeakButNotIdle) { @@ -290,48 +286,72 @@ TEST_F(DialogUXAggregatorTest, busyThenReceiveThenSpeakGoesToSpeakButNotIdle) { m_aggregator->receive("", ""); - m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING); + m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING); assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::SPEAKING); assertNoStateChange(m_testObserver); } -/// Tests that a SpeechSynthesizer finished state leads to the IDLE state. -TEST_F(DialogUXAggregatorTest, speakingFinishedGoesToIdle) { - assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::IDLE); +/// Tests that both SpeechSynthesizer and AudioInputProcessor finished/idle state leadss to the IDLE state. +TEST_F(DialogUXAggregatorTest, speakingAndRecognizingFinishedGoesToIdle) { + assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::IDLE); m_aggregator->onStateChanged(AudioInputProcessorObserverInterface::State::BUSY); assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::THINKING); m_aggregator->receive("", ""); - m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING); + m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING); assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::SPEAKING); - m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + m_aggregator->onStateChanged(AudioInputProcessorObserverInterface::State::IDLE); + m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); + + assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::IDLE); +} + +/// Tests that SpeechSynthesizer or AudioInputProcessor non-idle state prevents the IDLE state. +TEST_F(DialogUXAggregatorTest, nonIdleObservantsPreventsIdle) { + assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::IDLE); + + // AIP is active, SS is not. Expected: non idle + m_aggregator->onStateChanged(AudioInputProcessorObserverInterface::State::BUSY); + m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); + assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::THINKING); + + // Both AIP and SS are inactive. Expected: idle + m_aggregator->onStateChanged(AudioInputProcessorObserverInterface::State::IDLE); + m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); + assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::IDLE); + // AIP is inactive, SS is active. Expected: non-idle + m_aggregator->receive("", ""); + m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING); + assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::SPEAKING); + + // AIP is inactive, SS is inactive: Expected: idle + m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::IDLE); } /// Tests that a SpeechSynthesizer finished state does not go to the IDLE state after a very short timeout. TEST_F(DialogUXAggregatorTest, speakingFinishedDoesNotGoesToIdleImmediately) { - assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::IDLE); + assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::IDLE); m_aggregator->onStateChanged(AudioInputProcessorObserverInterface::State::BUSY); assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::THINKING); m_aggregator->receive("", ""); - m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING); + m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING); assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::SPEAKING); - m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); - assertNoStateChange( - m_testObserver); + assertNoStateChange(m_testObserver); } /// Tests that a simple message receive does nothing. @@ -342,7 +362,7 @@ TEST_F(DialogUXAggregatorTest, simpleReceiveDoesNothing) { assertNoStateChange(m_testObserver); - m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING); + m_aggregator->onStateChanged(sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING); assertStateChange(m_testObserver, DialogUXStateObserverInterface::DialogUXState::SPEAKING); @@ -351,6 +371,6 @@ TEST_F(DialogUXAggregatorTest, simpleReceiveDoesNothing) { assertNoStateChange(m_testObserver); } -} // namespace test -} // namespace avsCommon -} // namespace alexaClientSDK \ No newline at end of file +} // namespace test +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/test/ExceptionEncounteredSenderTest.cpp b/AVSCommon/AVS/test/ExceptionEncounteredSenderTest.cpp index 4e86020ea6..1a7b1fee61 100644 --- a/AVSCommon/AVS/test/ExceptionEncounteredSenderTest.cpp +++ b/AVSCommon/AVS/test/ExceptionEncounteredSenderTest.cpp @@ -1,7 +1,5 @@ /* - * ExceptionEncounteredSenderTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,7 +13,6 @@ * permissions and limitations under the License. */ - #include #include #include @@ -113,7 +110,7 @@ class ExceptionEncounteredEvent { private: /// The Unparsed Directive string to use for this ExceptionEncountered event - std::string m_unparsedDirective; + std::string m_unparsedDirective; /// The Error type to use for this ExceptionEncountered event avs::ExceptionErrorType m_error; @@ -122,10 +119,13 @@ class ExceptionEncounteredEvent { std::string m_errorDescription; }; -ExceptionEncounteredEvent::ExceptionEncounteredEvent(const std::string& unparsedDirective, - avs::ExceptionErrorType error, - const std::string& errorDescription) : - m_unparsedDirective{unparsedDirective}, m_error{error}, m_errorDescription{errorDescription} { +ExceptionEncounteredEvent::ExceptionEncounteredEvent( + const std::string& unparsedDirective, + avs::ExceptionErrorType error, + const std::string& errorDescription) : + m_unparsedDirective{unparsedDirective}, + m_error{error}, + m_errorDescription{errorDescription} { } void ExceptionEncounteredEvent::send(std::shared_ptr exceptionEncounteredSender) { @@ -135,11 +135,9 @@ void ExceptionEncounteredEvent::send(std::shared_ptr request) { rapidjson::Document document; document.Parse(request->getJsonContent().c_str()); - EXPECT_FALSE(document.HasParseError()) << - "rapidjson detected a parsing error at offset:" << - std::to_string(document.GetErrorOffset()) << - ", error message: " << - GetParseError_En(document.GetParseError()); + EXPECT_FALSE(document.HasParseError()) + << "rapidjson detected a parsing error at offset:" << std::to_string(document.GetErrorOffset()) + << ", error message: " << GetParseError_En(document.GetParseError()); auto context = document.FindMember(MESSAGE_CONTEXT_KEY); ASSERT_NE(context, document.MemberEnd()); @@ -173,7 +171,7 @@ void ExceptionEncounteredEvent::verifyMessage(std::shared_ptr( - unparsedDirective, error, errorDescription); + m_exceptionEncounteredEvent = + std::make_shared(unparsedDirective, error, errorDescription); EXPECT_CALL(*m_mockMessageSender, sendMessage(_)) - .WillOnce( - Invoke(m_exceptionEncounteredEvent.get(), &ExceptionEncounteredEvent::verifyMessage)); + .WillOnce(Invoke(m_exceptionEncounteredEvent.get(), &ExceptionEncounteredEvent::verifyMessage)); m_exceptionEncounteredEvent->send(m_exceptionEncounteredSender); done = true; return done; @@ -228,9 +225,9 @@ bool ExceptionEncounteredSenderTest::testExceptionEncounteredSucceeds( */ TEST_F(ExceptionEncounteredSenderTest, errorTypeUnexpectedInformationReceived) { ASSERT_TRUE(testExceptionEncounteredSucceeds( - UNPARSED_DIRECTIVE_JSON_STRING, - avs::ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED, - "The directive sent was malformed")); + UNPARSED_DIRECTIVE_JSON_STRING, + avs::ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED, + "The directive sent was malformed")); } /* * This function sends @c ExceptionErrorType::UNSUPPORTED_OPERATION and verifies that @@ -238,9 +235,7 @@ TEST_F(ExceptionEncounteredSenderTest, errorTypeUnexpectedInformationReceived) { */ TEST_F(ExceptionEncounteredSenderTest, errorTypeUnexpectedOperation) { ASSERT_TRUE(testExceptionEncounteredSucceeds( - UNPARSED_DIRECTIVE_JSON_STRING, - avs::ExceptionErrorType::UNSUPPORTED_OPERATION, - "Operation not supported")); + UNPARSED_DIRECTIVE_JSON_STRING, avs::ExceptionErrorType::UNSUPPORTED_OPERATION, "Operation not supported")); } /* * This function sends @c ExceptionErrorType::INTERNAL_ERROR and verifies that @@ -248,10 +243,8 @@ TEST_F(ExceptionEncounteredSenderTest, errorTypeUnexpectedOperation) { */ TEST_F(ExceptionEncounteredSenderTest, errorTypeInternalError) { ASSERT_TRUE(testExceptionEncounteredSucceeds( - UNPARSED_DIRECTIVE_JSON_STRING, - avs::ExceptionErrorType::INTERNAL_ERROR, - "An error occurred with the device")); + UNPARSED_DIRECTIVE_JSON_STRING, avs::ExceptionErrorType::INTERNAL_ERROR, "An error occurred with the device")); } -} // namespace test -} // namespace avsCommon -} // namespace alexaClientSDK \ No newline at end of file +} // namespace test +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/test/HandlerAndPolicyTest.cpp b/AVSCommon/AVS/test/HandlerAndPolicyTest.cpp index adda17544b..5723797e72 100644 --- a/AVSCommon/AVS/test/HandlerAndPolicyTest.cpp +++ b/AVSCommon/AVS/test/HandlerAndPolicyTest.cpp @@ -1,7 +1,5 @@ /* - * HandlerAndPolicyTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -31,13 +29,19 @@ namespace test { /// Minimal DirectiveHandlerInterface implementation so we can generate instance pointers. class TestDirectiveHandler : public sdkInterfaces::DirectiveHandlerInterface { public: - void handleDirectiveImmediately(std::shared_ptr ) override {} - void preHandleDirective( - std::shared_ptr , - std::unique_ptr ) override {} - bool handleDirective(const std::string&) override { return false; } - void cancelDirective(const std::string&) override {} - void onDeregistered() override {} + void handleDirectiveImmediately(std::shared_ptr) override { + } + void preHandleDirective( + std::shared_ptr, + std::unique_ptr) override { + } + bool handleDirective(const std::string&) override { + return false; + } + void cancelDirective(const std::string&) override { + } + void onDeregistered() override { + } avs::DirectiveHandlerConfiguration getConfiguration() const override { // Not using an empty initializer list here to account for a GCC 4.9.2 regression return avs::DirectiveHandlerConfiguration(); @@ -47,8 +51,7 @@ class TestDirectiveHandler : public sdkInterfaces::DirectiveHandlerInterface { /** * HandlerAndPolicyTest */ -class HandlerAndPolicyTest : public ::testing::Test { -}; +class HandlerAndPolicyTest : public ::testing::Test {}; /** * Invoke default constructor. Expect @c nameSpace and @c name properties are both empty strings. @@ -107,7 +110,7 @@ TEST_F(HandlerAndPolicyTest, testOperatorEqualandNotEqual) { ASSERT_NE(handlerAndPolicy3, handlerAndPolicy4); } -} // namespace test -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/AVS/test/NamespaceAndNameTest.cpp b/AVSCommon/AVS/test/NamespaceAndNameTest.cpp index 5c61abc034..738207c5aa 100644 --- a/AVSCommon/AVS/test/NamespaceAndNameTest.cpp +++ b/AVSCommon/AVS/test/NamespaceAndNameTest.cpp @@ -1,7 +1,5 @@ /* - * NamespaceAndNameTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -44,8 +42,7 @@ static const std::string NAMESPACE_SPEAKER("Speaker"); static const std::string NAME_SET_VOLUME("SetVolume"); /// NamespaceAndNameTest -class NamespaceAndNameTest : public ::testing::Test { -}; +class NamespaceAndNameTest : public ::testing::Test {}; /** * Invoke default constructor. Expect @c nameSpace and @c name properties are both empty strings. @@ -79,7 +76,7 @@ TEST_F(NamespaceAndNameTest, testInUnorderedMap) { ASSERT_NE(testMap[key1], testMap[key2]); } -} // namespace test -} // namespace avs -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace avs +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/CMakeLists.txt b/AVSCommon/CMakeLists.txt index 2650f24213..03c24ecbae 100644 --- a/AVSCommon/CMakeLists.txt +++ b/AVSCommon/CMakeLists.txt @@ -8,26 +8,34 @@ add_subdirectory("AVS") add_subdirectory("Utils") add_library(AVSCommon SHARED + AVS/src/AVSDirective.cpp + AVS/src/AVSMessage.cpp + AVS/src/AVSMessageHeader.cpp + AVS/src/AbstractConnection.cpp + AVS/src/ExternalMediaPlayer/AdapterUtils.cpp AVS/src/AlexaClientSDKInit.cpp AVS/src/Attachment/Attachment.cpp AVS/src/Attachment/AttachmentManager.cpp AVS/src/Attachment/InProcessAttachment.cpp AVS/src/Attachment/InProcessAttachmentReader.cpp AVS/src/Attachment/InProcessAttachmentWriter.cpp - AVS/src/AVSDirective.cpp - AVS/src/AVSMessage.cpp - AVS/src/AVSMessageHeader.cpp AVS/src/CapabilityAgent.cpp + AVS/src/DialogUXStateAggregator.cpp AVS/src/EventBuilder.cpp AVS/src/ExceptionEncounteredSender.cpp AVS/src/HandlerAndPolicy.cpp AVS/src/MessageRequest.cpp AVS/src/NamespaceAndName.cpp - AVS/src/DialogUXStateAggregator.cpp Utils/src/Configuration/ConfigurationNode.cpp Utils/src/Executor.cpp + Utils/src/FileUtils.cpp Utils/src/JSONUtils.cpp - Utils/src/LibcurlUtils.cpp + Utils/src/LibcurlUtils/CurlEasyHandleWrapper.cpp + Utils/src/LibcurlUtils/CurlMultiHandleWrapper.cpp + Utils/src/LibcurlUtils/HTTPContentFetcherFactory.cpp + Utils/src/LibcurlUtils/HttpPost.cpp + Utils/src/LibcurlUtils/LibCurlHttpContentFetcher.cpp + Utils/src/LibcurlUtils/LibcurlUtils.cpp Utils/src/Logger/ConsoleLogger.cpp Utils/src/Logger/Level.cpp Utils/src/Logger/LogEntry.cpp @@ -36,14 +44,21 @@ add_library(AVSCommon SHARED Utils/src/Logger/Logger.cpp Utils/src/Logger/LoggerSinkManager.cpp Utils/src/Logger/LoggerUtils.cpp + Utils/src/Logger/LogStringFormatter.cpp Utils/src/Logger/ModuleLogger.cpp Utils/src/Logger/ThreadMoniker.cpp + Utils/src/Metrics.cpp Utils/src/RequiresShutdown.cpp + Utils/src/RetryTimer.cpp + Utils/src/SafeCTimeAccess.cpp + Utils/src/Stream/StreamFunctions.cpp + Utils/src/Stream/Streambuf.cpp Utils/src/StringUtils.cpp Utils/src/TaskQueue.cpp Utils/src/TaskThread.cpp - Utils/src/Timer.cpp + Utils/src/TimePoint.cpp Utils/src/TimeUtils.cpp + Utils/src/Timer.cpp Utils/src/UUIDGeneration.cpp) target_include_directories(AVSCommon PUBLIC diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AVSEndpointAssignerInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AVSEndpointAssignerInterface.h index 6548857796..813ed99ebf 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AVSEndpointAssignerInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AVSEndpointAssignerInterface.h @@ -1,7 +1,5 @@ /* - * AVSEndpointAssignerInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_AVS_ENDPOINT_ASSIGNER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_AVS_ENDPOINT_ASSIGNER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AVSENDPOINTASSIGNERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AVSENDPOINTASSIGNERINTERFACE_H_ #include @@ -40,8 +38,8 @@ class AVSEndpointAssignerInterface { virtual void setAVSEndpoint(const std::string& avsEndpoint) = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_AVS_ENDPOINT_ASSIGNER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AVSENDPOINTASSIGNERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Audio/AlertsAudioFactoryInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Audio/AlertsAudioFactoryInterface.h new file mode 100644 index 0000000000..ac23169d1b --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Audio/AlertsAudioFactoryInterface.h @@ -0,0 +1,48 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIO_ALERTSAUDIOFACTORYINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIO_ALERTSAUDIOFACTORYINTERFACE_H_ + +#include +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { +namespace audio { + +/** + * This is an interface to produce functions that provide streams to the alert audio resources. + */ +class AlertsAudioFactoryInterface { +public: + virtual ~AlertsAudioFactoryInterface() = default; + + virtual std::function()> alarmDefault() const = 0; + virtual std::function()> alarmShort() const = 0; + virtual std::function()> timerDefault() const = 0; + virtual std::function()> timerShort() const = 0; + virtual std::function()> reminderDefault() const = 0; + virtual std::function()> reminderShort() const = 0; +}; + +} // namespace audio +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIO_ALERTSAUDIOFACTORYINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Audio/AudioFactoryInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Audio/AudioFactoryInterface.h new file mode 100644 index 0000000000..14e864ea71 --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Audio/AudioFactoryInterface.h @@ -0,0 +1,52 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIO_AUDIOFACTORYINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIO_AUDIOFACTORYINTERFACE_H_ + +#include + +#include "AVSCommon/SDKInterfaces/Audio/AlertsAudioFactoryInterface.h" +#include "AVSCommon/SDKInterfaces/Audio/NotificationsAudioFactoryInterface.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { +namespace audio { + +/** + * This is the interface that distributes interfaces for various audio stream providers. + */ +class AudioFactoryInterface { +public: + virtual ~AudioFactoryInterface() = default; + + /** + * This shares a factory that produces audio streams for the alerts components. + */ + virtual std::shared_ptr alerts() const = 0; + + /** + * This shares a factory that produces audio streams for the notifications components. + */ + virtual std::shared_ptr notifications() const = 0; +}; + +} // namespace audio +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIO_AUDIOFACTORYINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Audio/NotificationsAudioFactoryInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Audio/NotificationsAudioFactoryInterface.h new file mode 100644 index 0000000000..53a0a71775 --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Audio/NotificationsAudioFactoryInterface.h @@ -0,0 +1,43 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIO_NOTIFICATIONSAUDIOFACTORYINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIO_NOTIFICATIONSAUDIOFACTORYINTERFACE_H_ + +#include +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { +namespace audio { + +/** + * This is an interface to produce the default notification sound. + */ +class NotificationsAudioFactoryInterface { +public: + virtual ~NotificationsAudioFactoryInterface() = default; + + virtual std::function()> notificationDefault() const = 0; +}; + +} // namespace audio +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIO_NOTIFICATIONSAUDIOFACTORYINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AudioInputProcessorObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AudioInputProcessorObserverInterface.h index 666e0efe17..2e669f4986 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AudioInputProcessorObserverInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AudioInputProcessorObserverInterface.h @@ -1,7 +1,5 @@ /* - * AudioInputProcessorObserverInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_AUDIO_INPUT_PROCESSOR_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_AUDIO_INPUT_PROCESSOR_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIOINPUTPROCESSOROBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIOINPUTPROCESSOROBSERVERINTERFACE_H_ #include @@ -88,8 +86,8 @@ inline std::ostream& operator<<(std::ostream& stream, const AudioInputProcessorO return stream << AudioInputProcessorObserverInterface::stateToString(state); } -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_AUDIO_INPUT_PROCESSOR_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIOINPUTPROCESSOROBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AudioPlayerInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AudioPlayerInterface.h new file mode 100644 index 0000000000..ba76adaddc --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AudioPlayerInterface.h @@ -0,0 +1,66 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIOPLAYERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIOPLAYERINTERFACE_H_ + +#include +#include + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +/** + * This class provides an interface to the @c AudioPlayer. + */ +class AudioPlayerInterface { +public: + /** + * Destructor + */ + virtual ~AudioPlayerInterface() = default; + + /** + * This function adds an observer to @c AudioPlayer so that it will get notified for AudioPlayer state changes. + * + * @param observer The @c AudioPlayerObserverInterface + */ + virtual void addObserver(std::shared_ptr observer) = 0; + + /** + * This function removes an observer from @c AudioPlayer so that it will no longer be notified of + * AudioPlayer state changes. + * + * @param observer The @c AudioPlayerObserverInterface + */ + virtual void removeObserver(std::shared_ptr observer) = 0; + + /** + * This function retrieves the offset of the current AudioItem the @c AudioPlayer is handling. + * @note This function is blocking. + * + * @return This returns the offset in millisecond. + */ + virtual std::chrono::milliseconds getAudioItemOffset() = 0; +}; + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIOPLAYERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AudioPlayerObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AudioPlayerObserverInterface.h new file mode 100644 index 0000000000..7828ca60b8 --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AudioPlayerObserverInterface.h @@ -0,0 +1,60 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIOPLAYEROBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIOPLAYEROBSERVERINTERFACE_H_ + +#include +#include + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +/** + * This class allows any observers of the @c AudioPlayer to be notified of changes in the @c AudioPlayer audio state. + */ +class AudioPlayerObserverInterface { +public: + /** + * Destructor + */ + virtual ~AudioPlayerObserverInterface() = default; + + /// The context of the AudioPlayer when the observer is notified of the @c PlayerActivity state change. + struct Context { + /// The ID of the @c AudioItem that the @ AudioPlayer is handling. + std::string audioItemId; + + /// The offset in millisecond from the start of the @c AudioItem. + std::chrono::milliseconds offset; + }; + + /** + * Used to notify the observer when the @c AudioPlayer has a change in @c PlayerActivity. + * + * @param state The @c PlayerActivity of the @c AudioPlayer. + * @param context The @c Context of the @c AudioPlayer. + */ + virtual void onPlayerActivityChanged(avsCommon::avs::PlayerActivity state, const Context& context) = 0; +}; + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUDIOPLAYEROBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AuthDelegateInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AuthDelegateInterface.h index 858c3a12c3..6a3e0ac60e 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AuthDelegateInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AuthDelegateInterface.h @@ -1,7 +1,5 @@ /* - * AuthDelegateInterface.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_AUTH_DELEGATE_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_AUTH_DELEGATE_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUTHDELEGATEINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUTHDELEGATEINTERFACE_H_ #include #include @@ -28,12 +26,12 @@ namespace avsCommon { namespace sdkInterfaces { /** - * The AuthDelegateInterface is used to provide clients with valid LWA authroization + * The AuthDelegateInterface is used to provide clients with valid LWA authorization * tokens. @see * https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/content/avs-api-overview#authorization * Given an @c AuthDelegateInterface pointer, the client is expected to call @c getAuthToken() immediately before * making AVS requests. The returned value is passed in the HTTP/2 header of requests sent to AVS. - * These authroization tokens may expire, so AuthDelegates also track the state of authorization (essentially, + * These authorization tokens may expire, so AuthDelegates also track the state of authorization (essentially, * whether an immediate call to @c getAuthToken() will return a token that is expected to be viable). The client * may elect to receive callbacks when this state changes by calling @c setAuthObserver(). This allows the client * to avoid sending requests tha are doomed to fail because the authorization token has already expired. This also @@ -71,8 +69,8 @@ class AuthDelegateInterface { virtual std::string getAuthToken() = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_AUTH_DELEGATE_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUTHDELEGATEINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AuthObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AuthObserverInterface.h index 432d4b6f03..3c68f6de53 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AuthObserverInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/AuthObserverInterface.h @@ -1,7 +1,5 @@ /* - * AuthObserverInterface.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -18,8 +16,8 @@ /** * @file */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_AUTH_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_AUTH_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUTHOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUTHOBSERVERINTERFACE_H_ #include @@ -46,8 +44,8 @@ class AuthObserverInterface { /// The enum Error encodes possible errors which may occur when changing state. enum class Error { - /// No error. - NO_ERROR, + /// Success. + SUCCESS, /// An unknown body containing no error field has been encountered. UNKNOWN_ERROR, /// The client authorization failed. @@ -86,7 +84,7 @@ class AuthObserverInterface { * @return The @c ostream that was passed in and written to. */ inline std::ostream& operator<<(std::ostream& stream, const AuthObserverInterface::State& state) { - switch(state) { + switch (state) { case AuthObserverInterface::State::UNINITIALIZED: stream << "UNINTIALIZED"; break; @@ -111,9 +109,9 @@ inline std::ostream& operator<<(std::ostream& stream, const AuthObserverInterfac * @return The @c ostream that was passed in and written to. */ inline std::ostream& operator<<(std::ostream& stream, const AuthObserverInterface::Error& error) { - switch(error) { - case AuthObserverInterface::Error::NO_ERROR: - stream << "NO_ERROR"; + switch (error) { + case AuthObserverInterface::Error::SUCCESS: + stream << "SUCCESS"; break; case AuthObserverInterface::Error::UNKNOWN_ERROR: stream << "UNKNOWN_ERROR"; @@ -140,8 +138,8 @@ inline std::ostream& operator<<(std::ostream& stream, const AuthObserverInterfac return stream; } -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_AUTH_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_AUTHOBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ChannelObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ChannelObserverInterface.h index c6c5f6c91b..f0f04b0743 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ChannelObserverInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ChannelObserverInterface.h @@ -1,7 +1,5 @@ /* - * ChannelObserverInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_CHANNEL_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_CHANNEL_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_CHANNELOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_CHANNELOBSERVERINTERFACE_H_ #include "AVSCommon/AVS/FocusState.h" @@ -48,8 +46,8 @@ class ChannelObserverInterface { virtual void onFocusChanged(avs::FocusState newFocus) = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_CHANNEL_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_CHANNELOBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ConnectionStatusObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ConnectionStatusObserverInterface.h index 8da055e92a..af44ecb87d 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ConnectionStatusObserverInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ConnectionStatusObserverInterface.h @@ -1,7 +1,5 @@ /* - * ConnectionStatusObserverInterface.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_CONNECTION_STATUS_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_CONNECTION_STATUS_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_CONNECTIONSTATUSOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_CONNECTIONSTATUSOBSERVERINTERFACE_H_ #include @@ -40,10 +38,7 @@ class ConnectionStatusObserverInterface { PENDING, /// ACL is connected to AVS. - CONNECTED, - - /// ACL is connected and has done any necessary post-connection actions. - POST_CONNECTED + CONNECTED }; /** @@ -114,7 +109,7 @@ class ConnectionStatusObserverInterface { * @param status The ConnectionStatusObserverInterface::Status value to write to the @c ostream as a string. * @return The @c ostream that was passed in and written to. */ -inline std::ostream& operator << (std::ostream& stream, ConnectionStatusObserverInterface::Status status) { +inline std::ostream& operator<<(std::ostream& stream, ConnectionStatusObserverInterface::Status status) { switch (status) { case ConnectionStatusObserverInterface::Status::DISCONNECTED: stream << "DISCONNECTED"; @@ -125,9 +120,6 @@ inline std::ostream& operator << (std::ostream& stream, ConnectionStatusObserver case ConnectionStatusObserverInterface::Status::CONNECTED: stream << "CONNECTED"; break; - case ConnectionStatusObserverInterface::Status::POST_CONNECTED: - stream << "POST_CONNECTED"; - break; } return stream; } @@ -139,7 +131,7 @@ inline std::ostream& operator << (std::ostream& stream, ConnectionStatusObserver * @param reason The ConnectionStatusObserverInterface::ChangeReason value to write to the @c ostream as a string. * @return The @c ostream that was passed in and written to. */ -inline std::ostream& operator << (std::ostream& stream, ConnectionStatusObserverInterface::ChangedReason reason) { +inline std::ostream& operator<<(std::ostream& stream, ConnectionStatusObserverInterface::ChangedReason reason) { switch (reason) { case ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST: stream << "ACL_CLIENT_REQUEST"; @@ -187,8 +179,8 @@ inline std::ostream& operator << (std::ostream& stream, ConnectionStatusObserver return stream; } -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_CONNECTION_STATUS_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_CONNECTIONSTATUSOBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ContextManagerInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ContextManagerInterface.h index 384e4a3f8d..f98fd6c8f4 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ContextManagerInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ContextManagerInterface.h @@ -1,7 +1,5 @@ /* - * ContextManagerInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_CONTEXT_MANAGER_INTERFACE_H -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_CONTEXT_MANAGER_INTERFACE_H +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_CONTEXTMANAGERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_CONTEXTMANAGERINTERFACE_H_ #include @@ -42,7 +40,8 @@ enum class SetStateResult { STATE_PROVIDER_NOT_REGISTERED, /** - * @c setState request failed because the @c StateProviderInterface provided the wrong token to the @c ContextManager. + * @c setState request failed because the @c StateProviderInterface provided the wrong token to the @c + * ContextManager. */ STATE_TOKEN_OUTDATED }; @@ -61,7 +60,7 @@ class ContextManagerInterface { virtual ~ContextManagerInterface() = default; /** - * Registers a @c StateProviderInterface with the @c ContextManager. When the context manager receives a + * Registers a @c StateProviderInterface with the @c ContextManager. When the context manager receives a * @c getContext request, it queries the registered @c StateProviderInterfaces for updated state, if needed. * If a @c StateProviderInterface tries to register a @c NamespaceAndName that is already present, the older * @c StateProviderInterface will be replaced with the new one. @@ -71,8 +70,9 @@ class ContextManagerInterface { * @param namespaceAndName The namespace and name of the @c StateProviderInterface. * @param stateProvider The @c StateProviderInterface that will be mapped against the @c namespaceAndName. */ - virtual void setStateProvider(const avs::NamespaceAndName& namespaceAndName, - std::shared_ptr stateProvider) = 0; + virtual void setStateProvider( + const avs::NamespaceAndName& namespaceAndName, + std::shared_ptr stateProvider) = 0; /** * Sets the state information. The refresh policy indicates to the @c ContextManager whether on a @c getContext @@ -91,14 +91,18 @@ class ContextManagerInterface { * The @c jsonState is the json value that is associated with the key "payload". * * @param namespaceAndName The namespace and name of the @c StateProviderInterface whose state is being updated. - * @param jsonState The state of the @c StateProviderInterface. + * @param jsonState The state of the @c StateProviderInterface. The @c StateProviderInterface with a @c + * refreshPolicy of SOMETIMES can pass in an empty string to indicate no contexts needs to be sent by the provider. * @param refreshPolicy The refresh policy for the state. * @param stateRequestToken The token that was provided in a @c provideState request. Defaults to 0. * * @return The status of the setState operation. */ - virtual SetStateResult setState(const avs::NamespaceAndName& namespaceAndName, const std::string& jsonState, - const avs::StateRefreshPolicy& refreshPolicy, const unsigned int stateRequestToken = 0) = 0; + virtual SetStateResult setState( + const avs::NamespaceAndName& namespaceAndName, + const std::string& jsonState, + const avs::StateRefreshPolicy& refreshPolicy, + const unsigned int stateRequestToken = 0) = 0; /** * Request the @c ContextManager for context. If a request to the @c StateProviderInterfaces for updated states @@ -113,8 +117,8 @@ class ContextManagerInterface { virtual void getContext(std::shared_ptr contextRequester) = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_CONTEXT_MANAGER_INTERFACE_H +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_CONTEXTMANAGERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ContextRequesterInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ContextRequesterInterface.h index a28cf1df24..d93891a4d0 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ContextRequesterInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ContextRequesterInterface.h @@ -1,7 +1,5 @@ /* - * ContextRequesterInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -18,8 +16,8 @@ /** * @file */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_CONTEXT_REQUESTER_INTERFACE_H -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_CONTEXT_REQUESTER_INTERFACE_H +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_CONTEXTREQUESTERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_CONTEXTREQUESTERINTERFACE_H_ #include #include @@ -44,7 +42,7 @@ enum class ContextRequestError { */ class ContextRequesterInterface { public: - /** + /** * Destructor. */ virtual ~ContextRequesterInterface() = default; @@ -68,7 +66,6 @@ class ContextRequesterInterface { * @param error The reason why the getContext request failed. */ virtual void onContextFailure(const ContextRequestError error) = 0; - }; /** @@ -90,8 +87,8 @@ inline std::ostream& operator<<(std::ostream& stream, const ContextRequestError& return stream; } -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_CONTEXT_REQUESTER_INTERFACE_H +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_CONTEXTREQUESTERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DialogUXStateObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DialogUXStateObserverInterface.h index bead929584..de2d383b05 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DialogUXStateObserverInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DialogUXStateObserverInterface.h @@ -1,7 +1,5 @@ /* - * DialogUXStateObserverInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -17,8 +15,8 @@ /// @file DialogUXStateObserverInterface.h -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_DIALOG_UX_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_DIALOG_UX_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_DIALOGUXSTATEOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_DIALOGUXSTATEOBSERVERINTERFACE_H_ #include @@ -61,7 +59,7 @@ class DialogUXStateObserverInterface { virtual ~DialogUXStateObserverInterface() = default; /** - * This function is called whenever the AVS UX dialog state of the system changes. This function will block + * This function is called whenever the AVS UX dialog state of the system changes. This function will block * processing of other state changes, so any implementation of this should return quickly. * * @param newState The new dialog specific AVS UX state. @@ -104,8 +102,8 @@ inline std::ostream& operator<<(std::ostream& stream, const DialogUXStateObserve return stream << DialogUXStateObserverInterface::stateToString(state); } -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_DIALOG_UX_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_DIALOGUXSTATEOBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DirectiveHandlerInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DirectiveHandlerInterface.h index 56f08c5f9c..aceaba17c9 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DirectiveHandlerInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DirectiveHandlerInterface.h @@ -1,7 +1,5 @@ /* - * DirectiveHandlerInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_DIRECTIVE_HANDLER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_DIRECTIVE_HANDLER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_DIRECTIVEHANDLERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_DIRECTIVEHANDLERINTERFACE_H_ #include @@ -56,7 +54,7 @@ class DirectiveHandlerInterface { * * @param directive The directive to handle. */ - virtual void handleDirectiveImmediately(std::shared_ptr directive) = 0; + virtual void handleDirectiveImmediately(std::shared_ptr directive) = 0; /** * Notification that a directive has arrived. This notification gives the DirectiveHandler a chance to @@ -76,8 +74,8 @@ class DirectiveHandlerInterface { * @param result An object to receive the result of the operation. */ virtual void preHandleDirective( - std::shared_ptr directive, - std::unique_ptr result) = 0; + std::shared_ptr directive, + std::unique_ptr result) = 0; /** * Handle the action specified by the directive identified by @c messageId. The handling of subsequent directives @@ -96,7 +94,7 @@ class DirectiveHandlerInterface { * @return @c false when @c messageId is not recognized, else @c true. Any errors related to handling of a valid * messageId should be reported using @c DirectiveHandlerResultInterface::setFailed(). */ - virtual bool handleDirective(const std::string &messageId) = 0; + virtual bool handleDirective(const std::string& messageId) = 0; /** * Cancel an ongoing @c preHandleDirective() or @c handleDirective() operation for the specified @c AVSDirective. @@ -109,7 +107,7 @@ class DirectiveHandlerInterface { * * @param messageId The message ID of a directive previously passed to preHandleDirective(). */ - virtual void cancelDirective(const std::string &messageId) = 0; + virtual void cancelDirective(const std::string& messageId) = 0; /** * Notification that this handler has been de-registered and will not receive any more calls. @@ -117,7 +115,7 @@ class DirectiveHandlerInterface { virtual void onDeregistered() = 0; /** - * Returns the configuration of the directive handler regarding which namespace and name pairs it should handle and + * Returns the configuration of the directive handler regarding which namespace and name pairs it should handle and * the appropriate policy for each pair. * * @return The @c avs::DirectiveHandlerConfiguration of the handler. @@ -125,8 +123,8 @@ class DirectiveHandlerInterface { virtual avs::DirectiveHandlerConfiguration getConfiguration() const = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_DIRECTIVE_HANDLER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_DIRECTIVEHANDLERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DirectiveHandlerResultInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DirectiveHandlerResultInterface.h index e639564b3e..f7375f6929 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DirectiveHandlerResultInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DirectiveHandlerResultInterface.h @@ -1,7 +1,5 @@ /* - * DirectiveHandlerResultInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_DIRECTIVE_HANDLER_RESULT_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_DIRECTIVE_HANDLER_RESULT_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_DIRECTIVEHANDLERRESULTINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_DIRECTIVEHANDLERRESULTINTERFACE_H_ #include @@ -57,8 +55,8 @@ class DirectiveHandlerResultInterface { virtual void setFailed(const std::string& description) = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_DIRECTIVE_HANDLER_RESULT_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_DIRECTIVEHANDLERRESULTINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DirectiveSequencerInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DirectiveSequencerInterface.h index 5fdcdc4bdc..f529403df1 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DirectiveSequencerInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/DirectiveSequencerInterface.h @@ -1,7 +1,5 @@ /* - * DirectiveSequencerInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_DIRECTIVE_SEQUENCER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_DIRECTIVE_SEQUENCER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_DIRECTIVESEQUENCERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_DIRECTIVESEQUENCERINTERFACE_H_ #include #include @@ -60,7 +58,7 @@ class DirectiveSequencerInterface : public utils::RequiresShutdown { /** * Add the specified handler as a handler for its specified namespace, name, and policy. Note that implmentations - * of this should call the handler's getConfiguration() method to get the namespace(s), name(s), and policy(ies) of + * of this should call the handler's getConfiguration() method to get the namespace(s), name(s), and policy(ies) of * the handler. If any of the mappings fail, the entire call is refused. * * @param handler The handler to add. @@ -69,13 +67,10 @@ class DirectiveSequencerInterface : public utils::RequiresShutdown { virtual bool addDirectiveHandler(std::shared_ptr handler) = 0; /** - * Remove the specified handler's mapping of @c NamespaceAndName to @c BlockingPolicy values. Note that - * implementations of this should call the handler's getConfiguration() method to get the namespace(s), name(s), and - * policy(ies) of the handler. If the handler's configurations are unable to be removed, the entire operation is + * Remove the specified handler's mapping of @c NamespaceAndName to @c BlockingPolicy values. Note that + * implementations of this should call the handler's getConfiguration() method to get the namespace(s), name(s), and + * policy(ies) of the handler. If the handler's configurations are unable to be removed, the entire operation is * refused. - - specified mappings from @c NamespaceAndName values to @c HandlerAndPolicy values. If any of - * the specified mappings do not match an existing mapping, the entire operation is refused. * * @param handler The handler to remove. * @return Whether the handler was removed. @@ -100,15 +95,26 @@ class DirectiveSequencerInterface : public utils::RequiresShutdown { * @return Whether or not the directive was accepted. */ virtual bool onDirective(std::shared_ptr directive) = 0; + + /** + * Disable the DirectiveSequencer. + * + * @note While disabled the DirectiveSequencer should not be able to handle directives. + */ + virtual void disable() = 0; + + /** + * Enable the DirectiveSequencer. + */ + virtual void enable() = 0; }; inline DirectiveSequencerInterface::DirectiveSequencerInterface(const std::string& name) : utils::RequiresShutdown{name} { } +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK - -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_DIRECTIVE_SEQUENCER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_DIRECTIVESEQUENCERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ExceptionEncounteredSenderInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ExceptionEncounteredSenderInterface.h index eacc08ccfc..e8760979dc 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ExceptionEncounteredSenderInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ExceptionEncounteredSenderInterface.h @@ -1,7 +1,5 @@ /* - * ExceptionEncounteredSenderInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ASV_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_EXCEPTION_ENCOUNTERED_SENDER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_ASV_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_EXCEPTION_ENCOUNTERED_SENDER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_EXCEPTIONENCOUNTEREDSENDERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_EXCEPTIONENCOUNTEREDSENDERINTERFACE_H_ #include "AVSCommon/AVS/ExceptionErrorType.h" @@ -45,11 +43,13 @@ class ExceptionEncounteredSenderInterface { * @param errorDescription Additional error details for logging and troubleshooting. */ virtual void sendExceptionEncountered( - const std::string& unparsedDirective, avs::ExceptionErrorType error, const std::string& errorDescription) = 0; + const std::string& unparsedDirective, + avs::ExceptionErrorType error, + const std::string& errorDescription) = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ASV_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_EXCEPTION_ENCOUNTERED_SENDER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_EXCEPTIONENCOUNTEREDSENDERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ExternalMediaAdapterInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ExternalMediaAdapterInterface.h new file mode 100644 index 0000000000..613d92d4bb --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ExternalMediaAdapterInterface.h @@ -0,0 +1,605 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_EXTERNALMEDIAADAPTERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_EXTERNALMEDIAADAPTERINTERFACE_H_ + +#include "AVSCommon/Utils/RequiresShutdown.h" + +#include +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { +namespace externalMediaPlayer { + +/// Enum class for the different Request Types that an ExternalMediaAdapter handles. +enum class RequestType { + /// Initialization + INIT, + + /// DeInitialization + DEINIT, + + /// Login + LOGIN, + + /// Logout + LOGOUT, + + /// Play + PLAY, + + /// Resume + RESUME, + + /// Pause + PAUSE, + + /// Stop + STOP, + + /// Pause or Resume depending on current state. + PAUSE_RESUME_TOGGLE, + + /// Next + NEXT, + + /// Previous + PREVIOUS, + + /// Starover from the beginning + START_OVER, + + /// Fast-forward + FAST_FORWARD, + + /// rewind + REWIND, + + /// Enable Loop on. + ENABLE_REPEAT, + + /// Disable loop on. + DISABLE_REPEAT, + + /// Enable shuffle. + ENABLE_SHUFFLE, + + /// Disable shuffle. + DISABLE_SHUFFLE, + + /// Mark a track as favorite.(thumbs up) + FAVORITE, + + /// Mark a track as not a favorite.(thumbs down) + UNFAVORITE, + + /// Seek to a given offset. + SEEK, + + /// Seek to an offset relative to the current offset. + ADJUST_SEEK, + + /// Set volume level to a given volume. + SET_VOLUME, + + /// Adjust volume level relative to the existing volume. + ADJUST_VOLUME, + + /// Set mute to true/false. + SET_MUTE, + + /// None means there are no pending requests. + NONE +}; + +enum class SupportedPlaybackOperation { + /// Play + PLAY, + + /// Resume + RESUME, + + /// Pause + PAUSE, + + /// Stop + STOP, + + /// Next + NEXT, + + /// Previous + PREVIOUS, + + /// Starover a track from the beginning + START_OVER, + + /// Fast-forward + FAST_FORWARD, + + /// rewind + REWIND, + + /// Enable Loop on. + ENABLE_REPEAT, + + /// Enable repeat of a track . + ENABLE_REPEAT_ONE, + + /// Disable loop on. + DISABLE_REPEAT, + + /// Enable shuffle. + ENABLE_SHUFFLE, + + /// Disable shuffle. + DISABLE_SHUFFLE, + + /// Mark a track as favorite.(thumbs up) + FAVORITE, + + /// Mark a track as not a favorite.(thumbs down) + UNFAVORITE, + + /// Seek to a given offset. + SEEK, + + /// Seek to an offset relative to the current offset. + ADJUST_SEEK, + +}; + +/** + * Enum which identifies how a state change was triggered. + */ +enum class ChangeCauseType { + /// The state change was triggered as result of voice interaction. + VOICE_INTERACTION, + + /// Change was triggered by a physical interaction. + PHYSICAL_INTERACTION, + + /// Change was triggered by an app interaction. + APP_INTERACTION, + + /// Change was triggered by a rule. + RULE_TRIGGER, + + /// Change was triggerd by periodic polling. + PERIODIC_POLL +}; + +/** + * Enum which identifies the ratings of a track. + */ +enum class Favorites { + /// Favorite rating. + FAVORITED, + + /// Unfavorite rating. + UNFAVORITED, + + /// track not rated. + NOT_RATED +}; + +/** + * Enum which identifies the media type. + */ +enum class MediaType { + /// The media is track. + TRACK, + + /// The media is a podcast. + PODCAST, + + /// The media is a station. + STATION, + + /// The media is an ad. + AD, + + /// The media is a sample. + SAMPLE, + + /// The media type is something other than track/podcast/station/ad/sample + OTHER +}; + +/** + * struct that represents the session state of an adapter. + */ +struct AdapterSessionState { + /* + * Default Constructor. + */ + AdapterSessionState(); + + /// The playerId of an adapter which is the pre-negotiated business id for a partner music provider. + std::string playerId; + + /// The unique device endpoint. + std::string endpointId; + + /// Flag that identifies if a user is currently logged in or not. + bool loggedIn; + + /// The userName of the user currently logged in via a Login directive from the AVS. + std::string userName; + + /// Flag that identifies if the user currently logged in is a guest or not. + bool isGuest; + + /// Flag that identifies if an application has been launched or not. + bool launched; + + /** + * Flag that identifies if the application is currently active or not. This could mean different things + * for different applications. + */ + bool active; + + /** + * The accessToken used to login a user. The access token may also be used as a bearer token if the adapter + * makes an authenticated Web API to the music provider. + */ + std::string accessToken; + + /// The validity period of the token in milliseconds. + std::chrono::milliseconds tokenRefreshInterval; +}; + +/** + * struct that encapsulates an adapter's playback state. + */ +struct AdapterPlaybackState { + /// Default constructor. + AdapterPlaybackState(); + + /// The playerId of an adapter which is the pre-negotiated business id for a partner music provider. + std::string playerId; + + /// The state of the default player - IDLE/STOPPED/PLAYING... + std::string state; + + /// The set of states the default player can move into from its current state. + std::vector supportedOperations; + + /// The offset of the track in milliseconds. + std::chrono::milliseconds trackOffset; + + /// Bool to identify if shuffling is enabled or not. + bool shuffleEnabled; + + /// Bool to identify if looping of songs is enabled or not. + bool repeatEnabled; + + /// The favorite status {"FAVORITED"/"UNFAVORITED"/"NOT_RATED"}. + Favorites favorites; + + /// The type of the media item. For now hard-coded to ExternalMediaPlayerMusicItem. + std::string type; + + /// The display name for current playback context, e.g. playlist name. + std::string playbackSource; + + /// An arbitrary identifier for current playback context as per the music provider, e.g. a URI that can be saved as + /// a preset or queried to Music Service Provider services for additional info. + std::string playbackSourceId; + + /// The display name for the currently playing trackname of the track. + std::string trackName; + + /// The arbitrary identifier for currently playing trackid of the track as per the music provider. + std::string trackId; + + /// The display value for the number or abstract position of the currently playing track in the album or context + /// trackNumber of the track. + std::string trackNumber; + + /// The display name for the currently playing artist. + std::string artistName; + + /// An arbitrary identifier for currently playing artist as per the music provider, e.g. a URI that can be queried + /// to MSP services for additional info. + std::string artistId; + + /// The display name of the currently playing album. + std::string albumName; + + /// Arbitrary identifier for currently playing album specific to the music provider, e.g. a URI that can be queried + /// to MSP services for additional info. + std::string albumId; + + /// The URL for tiny cover art image resource} . + std::string tinyURL; + + /// The URL for small cover art image resource} . + std::string smallURL; + + /// The URL for medium cover art image resource} . + std::string mediumURL; + + /// The URL for large cover art image resource} . + std::string largeURL; + + /// The Arbitrary identifier for cover art image resource specific to the music provider, for retrieval from an MSP + /// API. + std::string coverId; + + /// Music Service Provider name for the currently playing media item; distinct from the application identity + /// although the two may be the same. + std::string mediaProvider; + + /// The Media type enum value from {TRACK, PODCAST, STATION, AD, SAMPLE, OTHER} type of the media. + MediaType mediaType; + + /// Media item duration in milliseconds. + std::chrono::milliseconds duration; +}; + +/** + * Class that encapsulates an adapter session and playback state. + */ +class AdapterState { +public: + /// Default constructor. + AdapterState() = default; + + /// Variable to hold the session state. + AdapterSessionState sessionState; + + /// Variable to hold the playback state. + AdapterPlaybackState playbackState; +}; + +/** + * The ExternalMediaAdapterInterface specifies the interface of an adapter object to interact with a third party + * music service provider library. The adapter object handles session management of an user with the third party + * library/cloud and provides users with an interface to manage behaviors to control their play queue. + */ +class ExternalMediaAdapterInterface : public avsCommon::utils::RequiresShutdown { +public: + /** + * ExternalMediaAdapterInterface constructor. + * + * @param adapaterName The name of the adapter. + */ + ExternalMediaAdapterInterface(const std::string& adapaterName); + + /// Method to initialize a third party library. + virtual void init() = 0; + + /// Method to de-initialize a third party library. + virtual void deInit() = 0; + + /** + * Method to allow a user to login to a third party music provider. + * + * @param accessToken The access context of the user identifier. + * @param userName The userName of the user logging in. + * @param forceLogin bool which signifies if the adapter has to a force a login or merely cache the access token. + * @param tokenRefreshInterval The duration in milliseconds for which the accessToken is valid. + */ + virtual void handleLogin( + const std::string& accessToken, + const std::string& userName, + bool forceLogin, + std::chrono::milliseconds tokenRefreshInterval) = 0; + + /** + * Method that handles logging out a user from a third party library/cloud. + */ + virtual void handleLogout() = 0; + + /** + * Method to allow a user to initiate play from a third party music service provider based on a play context. + * + * @param playContextToken Play context {Track/playlist/album/artist/station/podcast} identifier. + * @param index The index of the media item in the container, if the container is indexable. + * @param offset The offset position within media item, in milliseconds. + */ + virtual void handlePlay(std::string& playContextToken, int64_t index, std::chrono::milliseconds offset) = 0; + + /** + * Method to initiate the different types of play control like PLAY/PAUSE/RESUME/NEXT/... + * + * @param requestType The type of REQUEST. Will always be PLAY/PAUSE/RESUME/NEXT... + */ + virtual void handlePlayControl(RequestType requestType) = 0; + + /** + * Method to seek to the given offset. + * + * @param offset The offset to seek to. + */ + virtual void handleSeek(std::chrono::milliseconds offset) = 0; + + /** + * Method to seek to an offset from the current position. + * + * @param deltaOffset The offset to seek to relative to the current offset. + */ + virtual void handleAdjustSeek(std::chrono::milliseconds deltaOffset) = 0; + + /** + * Method to set volume to a given value. + * + * @param volume The volume level to be set. + */ + virtual void handleSetVolume(int8_t volume) = 0; + + /** + * Method to mute/unmute the speaker. + * + * @param mute @c true mute the speaker @c false unmute a speaker. + */ + virtual void handleSetMute(bool mute) = 0; + + /// Method to fetch the state(session state and playback state) of an adapter. + virtual AdapterState getState() = 0; +}; + +inline AdapterSessionState::AdapterSessionState() : loggedIn{false}, isGuest{false}, launched{false}, active{false} { +} + +inline AdapterPlaybackState::AdapterPlaybackState() : + state{"IDLE"}, + trackOffset{0}, + shuffleEnabled{false}, + repeatEnabled{false}, + favorites{Favorites::NOT_RATED}, + mediaType{MediaType::TRACK}, + duration{0} { +} + +inline ExternalMediaAdapterInterface::ExternalMediaAdapterInterface(const std::string& adapterName) : + RequiresShutdown{adapterName} { +} + +/** + * Convert a @c SupportedPlaybackOperation to an AVS-compliant @c std::string. + * + * @param operation The @c SupportedPlaybackOperation to convert. + * @return The AVS-compliant string representation of @c operation. + */ +inline std::string SupportedPlaybackOperationToString(SupportedPlaybackOperation operation) { + switch (operation) { + case SupportedPlaybackOperation::PLAY: + return "Play"; + case SupportedPlaybackOperation::RESUME: + return "Resume"; + case SupportedPlaybackOperation::PAUSE: + return "Pause"; + case SupportedPlaybackOperation::STOP: + return "Stop"; + case SupportedPlaybackOperation::NEXT: + return "Next"; + case SupportedPlaybackOperation::PREVIOUS: + return "Previous"; + case SupportedPlaybackOperation::START_OVER: + return "StartOver"; + case SupportedPlaybackOperation::FAST_FORWARD: + return "FastForward"; + case SupportedPlaybackOperation::REWIND: + return "Rewind"; + case SupportedPlaybackOperation::ENABLE_REPEAT: + return "EnableRepeat"; + case SupportedPlaybackOperation::ENABLE_REPEAT_ONE: + return "EnableRepeatOne"; + case SupportedPlaybackOperation::DISABLE_REPEAT: + return "DisableRepeat"; + case SupportedPlaybackOperation::ENABLE_SHUFFLE: + return "EnableShuffle"; + case SupportedPlaybackOperation::DISABLE_SHUFFLE: + return "DisableShuffle"; + case SupportedPlaybackOperation::FAVORITE: + return "Favorite"; + case SupportedPlaybackOperation::UNFAVORITE: + return "Unfavorite"; + case SupportedPlaybackOperation::SEEK: + return "SetSeekPosition"; + case SupportedPlaybackOperation::ADJUST_SEEK: + return "AdjustSeekPosition"; + } + + return "unknown operation"; +} + +/** + * Convert a @c ChangeCauseType to an AVS-compliant @c std::string. + * + * @param changeType The @c ChangeCauseType to convert. + * @return The AVS-compliant string representation of @c changeType. + */ +inline std::string ChangeTriggerToString(ChangeCauseType changeType) { + switch (changeType) { + case ChangeCauseType::VOICE_INTERACTION: + return "VOICE_INTERACTION"; + case ChangeCauseType::PHYSICAL_INTERACTION: + return "PHYSICAL_INTERACTION"; + case ChangeCauseType::APP_INTERACTION: + return "APP_INTERACTION"; + case ChangeCauseType::RULE_TRIGGER: + return "RULE_TRIGGER"; + case ChangeCauseType::PERIODIC_POLL: + return "PERIODIC_POLL"; + } + + return "unknown changeTrigger"; +} + +/** + * Convert a @c Favorites to an AVS-compliant @c std::string. + * + * @param rating The @c ChangeCauseType to convert. + * @return The AVS-compliant string representation of @c rating. + */ +inline std::string RatingToString(Favorites rating) { + switch (rating) { + case Favorites::FAVORITED: + return "FAVORITED"; + case Favorites::UNFAVORITED: + return "UNFAVORITED"; + case Favorites::NOT_RATED: + return "NOT_RATED"; + } + + return "unknown rating"; +} + +/** + * Convert a @c Favorites to an AVS-compliant @c std::string. + * + * @param mediaType The @c MediaType to convert. + * @return The AVS-compliant string representation of @c mediaType. + */ +inline std::string MediaTypeToString(MediaType mediaType) { + switch (mediaType) { + case MediaType::TRACK: + return "TRACK"; + case MediaType::PODCAST: + return "PODCAST"; + case MediaType::STATION: + return "STATION"; + case MediaType::AD: + return "AD"; + case MediaType::SAMPLE: + return "SAMPLE"; + case MediaType::OTHER: + return "OTHER"; + } + + return "unknown mediaType"; +} + +inline std::string SHUFFLE_STATUS_STRING(bool shuffleEnabled) { + return (shuffleEnabled == true) ? "SHUFFLED" : "NOT_SHUFFLED"; +} + +inline std::string REPEAT_STATUS_STRING(bool repeatEnabled) { + return (repeatEnabled == true) ? "REPEATED" : "NOT_REPEATED"; +} + +} // namespace externalMediaPlayer +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_EXTERNALMEDIAADAPTERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ExternalMediaPlayerInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ExternalMediaPlayerInterface.h new file mode 100644 index 0000000000..4b676228ce --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/ExternalMediaPlayerInterface.h @@ -0,0 +1,54 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_EXTERNALMEDIAPLAYERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_EXTERNALMEDIAPLAYERINTERFACE_H_ + +#include +#include +#include +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +/** + * This class provides an interface to the @c ExternalMediaPlayer. + * Currently it provides an interface for adapters to set the player in focus when they acquire focus. + */ +class ExternalMediaPlayerInterface { +public: + /** + * Destructor + */ + virtual ~ExternalMediaPlayerInterface() = default; + + /** + * Method to set the player in focus after an adapter has acquired the channel. + * + * @param playerInFocus The business name of the adapter that has currently acquired focus. + */ + virtual void setPlayerInFocus(const std::string& playerInFocus) = 0; +}; + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_EXTERNALMEDIAPLAYERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/FocusManagerInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/FocusManagerInterface.h index 352d163e77..93abccd617 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/FocusManagerInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/FocusManagerInterface.h @@ -1,7 +1,5 @@ /* - * FocusManagerInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,14 +13,15 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_FOCUS_MANAGER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_FOCUS_MANAGER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_FOCUSMANAGERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_FOCUSMANAGERINTERFACE_H_ #include #include #include #include "ChannelObserverInterface.h" +#include "FocusManagerObserverInterface.h" namespace alexaClientSDK { namespace avsCommon { @@ -30,18 +29,18 @@ namespace sdkInterfaces { /** * A FocusManager takes requests to acquire and release Channels and updates the focuses of other Channels based on - * their priorities so that the invariant that there can only be one Foreground Channel is held. The following + * their priorities so that the invariant that there can only be one Foreground Channel is held. The following * operations are provided: * - * acquire Channel - clients should call the acquireChannel() method, passing in the name of the Channel they wish to - * acquire, a pointer to the observer that they want to be notified once they get focus, and a unique activity id. + * acquire Channel - clients should call the acquireChannel() method, passing in the name of the Channel they wish to + * acquire, a pointer to the observer that they want to be notified once they get focus, and a unique interface name. * * release Channel - clients should call the releaseChannel() method, passing in the name of the Channel and the * observer of the Channel they wish to release. * - * stop foreground Channel - clients should call the stopForegroundActivitiy() method. + * stop foreground Channel - clients should call the stopForegroundActivity() method. * - * All of these methods will notify the observer of the Channel of focus changes via an asynchronous callback to the + * All of these methods will notify the observer of the Channel of focus changes via an asynchronous callback to the * ChannelObserverInterface##onFocusChanged() method, at which point the client should make a user observable change * based on the focus it receives. */ @@ -65,29 +64,36 @@ class FocusManagerInterface { /// The default Content Channel priority. static constexpr unsigned int CONTENT_CHANNEL_PRIORITY = 300; + /// The default Visual Channel name. + static constexpr const char* VISUAL_CHANNEL_NAME = "Visual"; + + /// The default Visual Channel priority. + static constexpr unsigned int VISUAL_CHANNEL_PRIORITY = 100; + /// Destructor. virtual ~FocusManagerInterface() = default; /** * This method will acquire the channel and grant the appropriate focus to it and other channels if needed. The * caller will be notified via an ChannelObserverInterface##onFocusChanged() call to the @c channelObserver when - * it can start the activity. If the Channel was already held by a different observer, the observer will be + * it can start the activity. If the Channel was already held by a different observer, the observer will be * notified via ChannelObserverInterface##onFocusChanged() to stop before letting the new observer start. * * @param channelName The name of the Channel to acquire. * @param channelObserver The observer that will be acquiring the Channel and be notified of focus changes. - * @param activityId The id of the new activity on the Channel. This should be unique and represents the activity - * using the Channel. + * @param interface The name of the AVS interface occupying the Channel. This should be unique and represents the + * name of the AVS interface using the Channel. The name of the AVS interface is used by the ActivityTracker to + * send Context to AVS. * * @return Returns @c true if the Channel can be acquired and @c false otherwise. */ virtual bool acquireChannel( - const std::string& channelName, - std::shared_ptr channelObserver, - const std::string& activityId) = 0; + const std::string& channelName, + std::shared_ptr channelObserver, + const std::string& interface) = 0; /** - * This method will release the Channel and notify the observer of the Channel, if the observer is the same as the + * This method will release the Channel and notify the observer of the Channel, if the observer is the same as the * observer passed in the acquireChannel call, to stop via ChannelObserverInterface##onFocusChanged(). If the * Channel to release is the current foreground focused Channel, it will also notify the next highest priority * Channel via an ChannelObserverInterface##onFocusChanged() callback that it has gained foreground focus. @@ -107,10 +113,26 @@ class FocusManagerInterface { * to the foreground. */ virtual void stopForegroundActivity() = 0; + + /** + * Add an observer to the focus manager. + * + * @param observer The observer to add. + */ + virtual void addObserver( + const std::shared_ptr& observer) = 0; + + /** + * Remove an observer from the focus manager. + * + * @param observer The observer to remove. + */ + virtual void removeObserver( + const std::shared_ptr& observer) = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_FOCUS_MANAGER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_FOCUSMANAGERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/FocusManagerObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/FocusManagerObserverInterface.h new file mode 100644 index 0000000000..4ce79f98bc --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/FocusManagerObserverInterface.h @@ -0,0 +1,43 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_FOCUSMANAGEROBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_FOCUSMANAGEROBSERVERINTERFACE_H_ + +#include "AVSCommon/AVS/FocusState.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +/// An interface that clients can extend to register to observe focus changes. +class FocusManagerObserverInterface { +public: + virtual ~FocusManagerObserverInterface() = default; + + /** + * Used to notify the observer of focus changes. This function should return quickly. + * + * @param channelName The name of the channel which changed @c FocusState. + * @param newFocus The new @c FocusState of @c channelName. + */ + virtual void onFocusChanged(const std::string& channelName, avsCommon::avs::FocusState newFocus) = 0; +}; + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_FOCUSMANAGEROBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/GlobalSettingsObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/GlobalSettingsObserverInterface.h new file mode 100644 index 0000000000..c0295343d4 --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/GlobalSettingsObserverInterface.h @@ -0,0 +1,44 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_GLOBALSETTINGSOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_GLOBALSETTINGSOBSERVERINTERFACE_H_ + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { +/** + * The interface for observer of all the settings. + */ +class GlobalSettingsObserverInterface { +public: + /** + * Destructor + */ + virtual ~GlobalSettingsObserverInterface() = default; + + /** + * The callback executed when a setting is changed. + * @param mapOfSettings The map which contains pair for all settings. + */ + virtual void onSettingChanged(const std::unordered_map& mapOfSettings) = 0; +}; + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_GLOBALSETTINGSOBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/HTTPContentFetcherInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/HTTPContentFetcherInterface.h new file mode 100644 index 0000000000..5d8c381b1f --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/HTTPContentFetcherInterface.h @@ -0,0 +1,62 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_HTTPCONTENTFETCHERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_HTTPCONTENTFETCHERINTERFACE_H_ + +#include + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +/** + * This class allows users to fetch content from remote location using HTTP(S). + */ +class HTTPContentFetcherInterface { +public: + /// Represents what HTTP content to fetch. + enum class FetchOptions { + /// Retrieves the content type part of the HTTP header. + CONTENT_TYPE, + + /// Retrieves the entire body of the remote location. + ENTIRE_BODY + }; + + /** + * Destructor. + */ + virtual ~HTTPContentFetcherInterface() = default; + + /** + * This function retrieves content from a remote location. No thread safety is guaranteed. + * + * @param option Flag indicating desired content. + * @param writer An optional writer parameter to be used when writing to an external stream. + * @return A new @c HTTPContent object or @c nullptr if a failure occured. + */ + virtual std::unique_ptr getContent( + FetchOptions option, + std::shared_ptr writer = nullptr) = 0; +}; + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_HTTPCONTENTFETCHERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/HTTPContentFetcherInterfaceFactoryInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/HTTPContentFetcherInterfaceFactoryInterface.h new file mode 100644 index 0000000000..06fd356902 --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/HTTPContentFetcherInterfaceFactoryInterface.h @@ -0,0 +1,48 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_HTTPCONTENTFETCHERINTERFACEFACTORYINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_HTTPCONTENTFETCHERINTERFACEFACTORYINTERFACE_H_ + +#include +#include + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +/* + * A factory interface class to produce @c HTTPContentFetcherInterface objects. + */ +class HTTPContentFetcherInterfaceFactoryInterface { +public: + /** + * Destructor. + */ + virtual ~HTTPContentFetcherInterfaceFactoryInterface() = default; + + /** + * Produces an @c HTTPContentFetcherInterface object or @c nullptr on failure. + */ + virtual std::unique_ptr create(const std::string& url) = 0; +}; + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_HTTPCONTENTFETCHERINTERFACEFACTORYINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/KeyWordDetectorStateObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/KeyWordDetectorStateObserverInterface.h index d08a2b7a25..658b1c5dc2 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/KeyWordDetectorStateObserverInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/KeyWordDetectorStateObserverInterface.h @@ -1,7 +1,5 @@ /* - * KeyWordDetectorStateObserverInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_KEY_WORD_DETECTOR_STATE_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_KEY_WORD_DETECTOR_STATE_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_KEYWORDDETECTORSTATEOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_KEYWORDDETECTORSTATEOBSERVERINTERFACE_H_ namespace alexaClientSDK { namespace avsCommon { @@ -53,8 +51,8 @@ class KeyWordDetectorStateObserverInterface { virtual void onStateChanged(KeyWordDetectorState keyWordDetectorState) = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_KEY_WORD_DETECTOR_STATE_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_KEYWORDDETECTORSTATEOBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/KeyWordObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/KeyWordObserverInterface.h index 525c4876c0..f3e610373b 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/KeyWordObserverInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/KeyWordObserverInterface.h @@ -1,7 +1,5 @@ /* - * KeyWordObserverInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_KEY_WORD_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_KEY_WORD_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_KEYWORDOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_KEYWORDOBSERVERINTERFACE_H_ #include @@ -34,7 +32,7 @@ class KeyWordObserverInterface { /// This represents when an index passed into the onKeyWordDetected() call should be ignored. static constexpr avs::AudioInputStream::Index UNSPECIFIED_INDEX = std::numeric_limits::max(); - + /** * Destructor. */ @@ -43,7 +41,7 @@ class KeyWordObserverInterface { /** * Used to notify the observer of keyword detections. Once called, the client should return as soon as possible. * Failure to do so might block the wake word engine from processing audio data, depending on which wake word - * engine is used. Any additional work that needs to be done should be done on a separate thread or after + * engine is used. Any additional work that needs to be done should be done on a separate thread or after * returning. * * @param stream The stream in which the keyword was detected. @@ -54,14 +52,14 @@ class KeyWordObserverInterface { * stream. If this is set to UNSPECIFIED_INDEX, then it should be ignored. */ virtual void onKeyWordDetected( - std::shared_ptr stream, - std::string keyword, - avs::AudioInputStream::Index beginIndex = UNSPECIFIED_INDEX, - avs::AudioInputStream::Index endIndex = UNSPECIFIED_INDEX) = 0; + std::shared_ptr stream, + std::string keyword, + avs::AudioInputStream::Index beginIndex = UNSPECIFIED_INDEX, + avs::AudioInputStream::Index endIndex = UNSPECIFIED_INDEX) = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_KEY_WORD_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_KEYWORDOBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/MessageObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/MessageObserverInterface.h index ad8fb98ce4..1e10d954e0 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/MessageObserverInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/MessageObserverInterface.h @@ -1,7 +1,5 @@ /* - * MessageObserverInterface.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,13 +13,15 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_MESSAGE_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_MESSAGE_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_MESSAGEOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_MESSAGEOBSERVERINTERFACE_H_ namespace alexaClientSDK { namespace avsCommon { namespace sdkInterfaces { +#include + /** * This class allows a client to receive messages from AVS. */ @@ -39,11 +39,11 @@ class MessageObserverInterface { * message arrived on. * @param message The AVS message that has been received. */ - virtual void receive(const std::string & contextId, const std::string & message) = 0; + virtual void receive(const std::string& contextId, const std::string& message) = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_MESSAGE_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_MESSAGEOBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/MessageRequestObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/MessageRequestObserverInterface.h new file mode 100644 index 0000000000..e1d8fef4fa --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/MessageRequestObserverInterface.h @@ -0,0 +1,143 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_MESSAGEREQUESTOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_MESSAGEREQUESTOBSERVERINTERFACE_H_ + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +/** + * An interface class which allows a derived class to observe a MessageRequest implementation. + */ +class MessageRequestObserverInterface { +public: + /** + * This enum expresses the various end-states that a send request could arrive at. + */ + enum class Status { + /// The message has not yet been processed for sending. + PENDING, + + /// The message was successfully sent. + SUCCESS, + + /// The message was successfully sent but the HTTPReponse had no content. + SUCCESS_NO_CONTENT, + + /// The send failed because AVS was not connected. + NOT_CONNECTED, + + /// The send failed because AVS is not synchronized. + NOT_SYNCHRONIZED, + + /// The send failed because of timeout waiting for AVS response. + TIMEDOUT, + + /// The send failed due to an underlying protocol error. + PROTOCOL_ERROR, + + /// The send failed due to an internal error within ACL. + INTERNAL_ERROR, + + /// The send failed due to an internal error on the server which sends code 500. + SERVER_INTERNAL_ERROR_V2, + + /// The send failed due to server refusing the request. + REFUSED, + + /// The send failed due to server canceling it before the transmission completed. + CANCELED, + + /// The send failed due to excessive load on the server. + THROTTLED, + + /// The access credentials provided to ACL were invalid. + INVALID_AUTH, + + /// The send failed due to invalid request sent by the user. + BAD_REQUEST, + + /// The send failed due to unknown server error. + SERVER_OTHER_ERROR + }; + + /* + * Destructor + */ + virtual ~MessageRequestObserverInterface() = default; + + /* + * Called when a message request has been processed by AVS. + */ + virtual void onSendCompleted(MessageRequestObserverInterface::Status status) = 0; + + /* + * Called when an exception is thrown when trying to send a message to AVS. + */ + virtual void onExceptionReceived(const std::string& exceptionMessage) = 0; +}; + +/** + * Write a @c MessageRequestObserverInterface::Status value to an @c ostream as a string. + * + * @param stream The stream to write the value to. + * @param reason The status to write to the @c ostream as a string. + * @return The @c ostream that was passed in and written to. + */ +inline std::ostream& operator<<(std::ostream& stream, MessageRequestObserverInterface::Status status) { + switch (status) { + case MessageRequestObserverInterface::Status::PENDING: + return stream << "PENDING"; + case MessageRequestObserverInterface::Status::SUCCESS: + return stream << "SUCCESS"; + case MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT: + return stream << "SUCCESS_NO_CONTENT"; + case MessageRequestObserverInterface::Status::NOT_CONNECTED: + return stream << "NOT_CONNECTED"; + case MessageRequestObserverInterface::Status::NOT_SYNCHRONIZED: + return stream << "NOT_SYNCHRONIZED"; + case MessageRequestObserverInterface::Status::TIMEDOUT: + return stream << "TIMEDOUT"; + case MessageRequestObserverInterface::Status::PROTOCOL_ERROR: + return stream << "PROTOCOL_ERROR"; + case MessageRequestObserverInterface::Status::INTERNAL_ERROR: + return stream << "INTERNAL_ERROR"; + case MessageRequestObserverInterface::Status::SERVER_INTERNAL_ERROR_V2: + return stream << "SERVER_INTERNAL_ERROR_V2"; + case MessageRequestObserverInterface::Status::REFUSED: + return stream << "REFUSED"; + case MessageRequestObserverInterface::Status::CANCELED: + return stream << "CANCELED"; + case MessageRequestObserverInterface::Status::THROTTLED: + return stream << "THROTTLED"; + case MessageRequestObserverInterface::Status::INVALID_AUTH: + return stream << "INVALID_AUTH"; + case MessageRequestObserverInterface::Status::BAD_REQUEST: + return stream << "BAD_REQUEST"; + case MessageRequestObserverInterface::Status::SERVER_OTHER_ERROR: + return stream << "SERVER_OTHER_ERROR"; + } + return stream << "Unknown MessageRequestObserverInterface::Status"; +} + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_MESSAGEREQUESTOBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/MessageSenderInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/MessageSenderInterface.h index 318b3ee398..43435e4a5f 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/MessageSenderInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/MessageSenderInterface.h @@ -1,7 +1,5 @@ /* - * MessageSenderInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_MESSAGE_SENDER_INTERFACE_H -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_MESSAGE_SENDER_INTERFACE_H +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_MESSAGESENDERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_MESSAGESENDERINTERFACE_H_ #include "AVSCommon/AVS/MessageRequest.h" @@ -44,8 +42,8 @@ class MessageSenderInterface { virtual void sendMessage(std::shared_ptr request) = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_MESSAGE_SENDER_INTERFACE_H +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_MESSAGESENDERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/NotificationsObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/NotificationsObserverInterface.h new file mode 100644 index 0000000000..72e0137277 --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/NotificationsObserverInterface.h @@ -0,0 +1,47 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_NOTIFICATIONSOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_NOTIFICATIONSOBSERVERINTERFACE_H_ + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +/** + * An interface to allow being notified of changes to the currently stored IndicatorState. + */ +class NotificationsObserverInterface { +public: + /** + * Destructor + */ + virtual ~NotificationsObserverInterface() = default; + + /** + * Notifies the observer that a SetIndicator directive has been processed + * + * @param state The value of the persistVisualIndicator field of the directive. + */ + virtual void onSetIndicator(avsCommon::avs::IndicatorState state) = 0; +}; + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_NOTIFICATIONSOBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/PlaybackHandlerInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/PlaybackHandlerInterface.h new file mode 100644 index 0000000000..e0990bbf6d --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/PlaybackHandlerInterface.h @@ -0,0 +1,43 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_PLAYBACKHANDLERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_PLAYBACKHANDLERINTERFACE_H_ + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +/** + * This class allows a playback button press handler + * to be notified a playback button is pressed. + */ +class PlaybackHandlerInterface { +public: + /** + * Used to notify the handler when a playback button is pressed. + * + * @param button The button that has been pressed. + */ + virtual void onButtonPressed(avs::PlaybackButton button) = 0; +}; + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_PLAYBACKHANDLERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/PlaybackRouterInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/PlaybackRouterInterface.h new file mode 100644 index 0000000000..cb90784697 --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/PlaybackRouterInterface.h @@ -0,0 +1,80 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_PLAYBACKROUTERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_PLAYBACKROUTERINTERFACE_H_ + +#include +#include + +#include "PlaybackHandlerInterface.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +/** + * The @c PlaybackRouterInterface used to get a playback button press and + * send it it to the current handler. + */ +class PlaybackRouterInterface { +public: + /** + * Destructor + */ + virtual ~PlaybackRouterInterface() = default; + + /** + * This method can be called by the client when "Play" is pressed on a physical button or on the GUI. + * A PlayCommandIssued event message will be sent to the observer. + */ + virtual void playButtonPressed() = 0; + + /** + * This method can be called by the client when "Pause" is pressed on a physical button or on the GUI. + * A PauseCommandIssued event message will be sent to the observer. + */ + virtual void pauseButtonPressed() = 0; + + /** + * This method can be called by the client when "Next" is pressed on a physical button or on the GUI. + * A NextCommandIssued event message will be sent to the observer. + */ + virtual void nextButtonPressed() = 0; + + /** + * This method can be called by the client when "Previous" is pressed on a physical button or on the GUI. + * A PreviousCommandIssued event message will be sent to the observer. + */ + virtual void previousButtonPressed() = 0; + + /** + * This method sets the playback button press handler that any time a button is pressed + * this handler will be called. + * @param handler - The handler to call on future playback button presses. + */ + virtual void setHandler(std::shared_ptr handler) = 0; + + /** + * This method switches playback button pressess handling to the default handler. + */ + virtual void switchToDefaultHandler() = 0; +}; + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_PLAYBACKROUTERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SingleSettingObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SingleSettingObserverInterface.h new file mode 100644 index 0000000000..8bc458eb5c --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SingleSettingObserverInterface.h @@ -0,0 +1,45 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SINGLESETTINGOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SINGLESETTINGOBSERVERINTERFACE_H_ + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { +/** + * The interface for observer of a single setting. + */ +class SingleSettingObserverInterface { +public: + /** + * Destructor + */ + virtual ~SingleSettingObserverInterface() = default; + + /** + * The callback executed when a setting is changed. + * @param key The name of the Setting. + * @param value The value to which the setting has to be changed. + */ + virtual void onSettingChanged(const std::string& key, const std::string& value) = 0; +}; + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SINGLESETTINGOBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SoftwareInfoSenderObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SoftwareInfoSenderObserverInterface.h new file mode 100644 index 0000000000..5c2164235d --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SoftwareInfoSenderObserverInterface.h @@ -0,0 +1,67 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SOFTWAREINFOSENDEROBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SOFTWAREINFOSENDEROBSERVERINTERFACE_H_ + +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +namespace softwareInfo { + +/// Type to use to communicate a firmware version. +typedef int32_t FirmwareVersion; + +/// The invalid firmware version. +static const FirmwareVersion INVALID_FIRMWARE_VERSION = 0; + +static const FirmwareVersion MAX_FIRMWARE_VERSION = std::numeric_limits::max(); + +/** + * Determine whether a firmware version is valid. + * + * @param version The version to check. + * @return Whether the specified firmware version is valid. + */ +inline bool isValidFirmwareVersion(FirmwareVersion version) { + return version > 0; +} + +}; // namespace softwareInfo + +/** + * This interface receives notifications from @c SoftwareInfoSender instances. + */ +class SoftwareInfoSenderObserverInterface { +public: + virtual ~SoftwareInfoSenderObserverInterface() = default; + + /** + * Notification that the firmware version has been accepted by AVS. + * + * @param The firmware version that was accepted. + */ + virtual void onFirmwareVersionAccepted(softwareInfo::FirmwareVersion firmwareVersion) = 0; +}; + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SOFTWAREINFOSENDEROBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeakerInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeakerInterface.h new file mode 100644 index 0000000000..346aa4bcbd --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeakerInterface.h @@ -0,0 +1,129 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SPEAKERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SPEAKERINTERFACE_H_ + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +/** + * The SpeakerInterface is concerned with the control of volume and mute settings of a speaker. + * The two settings are independent of each other, and the respective APIs shall not affect + * the other setting in any way. Compound behaviors (such as unmuting when volume is adjusted) will + * be handled at a layer above this interface. + */ +class SpeakerInterface { +public: + /** + * This enum provides the type of the @c SpeakerInterface. + */ + enum class Type { + /// Speaker source that should be synced with AVS. + AVS_SYNCED, + /// Speaker source that will not be synced with AVS. + LOCAL + }; + + /** + * This contains the current settings of the @c SpeakerInterface. + * The minimum volume level should correspond to no volume output, but this setting should still be independent + * from mute. For speakers which do not have independent mute and volume settings, the interface must be implemented + * as if they did so. For example, when unmuting a speaker, the volume setting should correspond to the level it was + * at before muting. + */ + struct SpeakerSettings { + /// Must be within [AVS_SET_VOLUME_MIN, AVS_SET_VOLUME_MAX]. + int8_t volume; + /// True means muted, false means unmuted. + bool mute; + /// Operator overload to compare two SpeakerSettings objects. + bool operator==(const SpeakerSettings& rhs) const { + return volume == rhs.volume && mute == rhs.mute; + } + }; + + /** + * Set the absolute volume of the speaker. @c volume + * will be [AVS_SET_VOLUME_MIN, AVS_SET_VOLUME_MAX], and implementers of the interface must normalize + * the volume to fit the needs of their drivers. + * + * @param volume A volume to set the speaker to. + * @return Whether the operation was successful. + */ + virtual bool setVolume(int8_t volume) = 0; + + /** + * Set a relative change for the volume of the speaker. @c volume + * will be [AVS_ADJUST_VOLUME_MIN, AVS_ADJUST_VOLUME_MAX], and implementers of the interface must normalize + * the volume to fit the needs of their drivers. + * + * @param delta The delta to apply to the volume. + * @return Whether the operation was successful. + */ + virtual bool adjustVolume(int8_t delta) = 0; + + /** + * Set the mute of the speaker. + * + * @param mute Represents whether the speaker should be muted (true) or unmuted (false). + * @return Whether the operation was successful. + */ + virtual bool setMute(bool mute) = 0; + + /** + * Return a @c SpeakerSettings object to indicate the current settings of the speaker. + * + * @param settings A @c SpeakerSettings object if successful. + * @return Whether the operation was successful. + */ + virtual bool getSpeakerSettings(SpeakerSettings* settings) = 0; + + /** + * Get the @c Type. The @c Type should remain static and not change with the lifetime of the speaker. + * + * @return The @c Type. + */ + virtual Type getSpeakerType() = 0; +}; + +/** + * Write a @c Type value to an @c ostream as a string. + * + * @param stream The stream to write the value to. + * @param type The type value to write to the @c ostream as a string. + * @return The @c ostream that was passed in and written to. + */ +inline std::ostream& operator<<(std::ostream& stream, SpeakerInterface::Type type) { + switch (type) { + case SpeakerInterface::Type::AVS_SYNCED: + stream << "AVS_SYNCED"; + return stream; + case SpeakerInterface::Type::LOCAL: + stream << "LOCAL"; + return stream; + } + stream << "UNKNOWN"; + return stream; +} + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SPEAKERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeakerManagerInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeakerManagerInterface.h new file mode 100644 index 0000000000..18d14274b3 --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeakerManagerInterface.h @@ -0,0 +1,128 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SPEAKERMANAGERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SPEAKERMANAGERINTERFACE_H_ + +#include +#include + +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +class SpeakerManagerInterface { +public: + /** + * Set the volume for speakers of a certain @c Type. + * + * @param type The type of speakers to modify. + * @param volume The volume to set. Values must be between [0,100]. + * @param forceNoNotifications Setting this to true will ensure no event is sent and no observer is notified. + * Setting this to false does not guarantee that a notification will be sent. + * @return A future to be set with the operation's result. The future must be checked for validity + * before attempting to obtain the shared state. An invalid future indicates an internal error, + * and the caller should not assume the operation was succcessful. + */ + virtual std::future setVolume( + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + int8_t volume, + bool forceNoNotifications = false) = 0; + + /** + * Adjusts the volume for speakers of a certain @c Type with a volume delta. + * + * @param type The type of speakers to modify. + * @param delta The delta to modify volume by. Values must be between [-100,100]. + * @param forceNoNotifications Setting this to true will ensure no event is sent and no observer is notified. + * Setting this to false does not guarantee that a notification will be sent. + * @return A future to be set with the operation's result. The future must be checked for validity + * before attempting to obtain the shared state. An invalid future indicates an internal error, + * and the caller should not assume the operation was succcessful. + */ + virtual std::future adjustVolume( + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + int8_t delta, + bool forceNoNotifications = false) = 0; + + /** + * Sets the mute for speakers of a certain @c Type. + * + * @param type The type of speakers to modify. + * @param mute A boolean indicating mute. true = mute, false = unmute. + * @param forceNoNotifications Setting this to true will ensure no event is sent and no observer is notified. + * Setting this to false does not guarantee that a notification will be sent. + * @return A future to be set with the operation's result. The future must be checked for validity + * before attempting to obtain the shared state. An invalid future indicates an internal error, + * and the caller should not assume the operation was succcessful. + */ + virtual std::future setMute( + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + bool mute, + bool forceNoNotifications = false) = 0; + + /** + * Gets the speaker settings. + * + * @param type The type of speakers to retrieve settings for. + * @param[out] settings The settings if the operation was successful. + * @return A future to be set with the operation's result. The future must be checked for validity + * before attempting to obtain the shared state. An invalid future indicates an internal error, + * and the caller should not assume the operation was succcessful. + */ + virtual std::future getSpeakerSettings( + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings* settings) = 0; + + /** + * Adds an observer to be notified when the SpeakerManager changes the @c SpeakerInterface::SpeakerSettings of a + * group of @c SpeakerInterface::Type speakers. + * + * @param observer The observer to be notified when the @c SpeakerInterface::SpeakerSettings of a group successfully + * changes. + */ + virtual void addSpeakerManagerObserver( + std::shared_ptr observer) = 0; + + /** + * Removes an observer from being notified when the SpeakerManager changes the @c SpeakerInterface::SpeakerSettings + * of a group of @c SpeakerInterface::Type speakers. + * + * @param observer The observer to be notified when the @c SpeakerInterface::SpeakerSettings of a group successfully + * changes. + */ + virtual void removeSpeakerManagerObserver( + std::shared_ptr observer) = 0; + + /** + * Adds a speaker to be tracked by @c SpeakerManagerInterface. + * This method is not guaranteed to be thread safe and should be called during the initialization step only. + * All speakers added this way must be destroyed during the shutdown process. + * @remarks + * Note that after this method @c SpeakerManagerInterface instance will hold a reference to the @c SpeakerInterface + * added. + * @param speaker + */ + virtual void addSpeaker(std::shared_ptr speaker) = 0; +}; + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SPEAKERMANAGERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeakerManagerObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeakerManagerObserverInterface.h new file mode 100644 index 0000000000..2c791fd541 --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeakerManagerObserverInterface.h @@ -0,0 +1,79 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SPEAKERMANAGEROBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SPEAKERMANAGEROBSERVERINTERFACE_H_ + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +/** + * This interface is for observing changes to speakers that are made by the @c SpeakerManager. + * + * Observers of the SpeakerManager are notified using the SpeakerManagers internal thread. The callback function must + * exit as quickly as possible and perform minimal calculations. Not doing so can cause delays in the @c SpeakerManager. + * No other SpeakerManager methods which utilize that thread must be called from this callback. + */ +class SpeakerManagerObserverInterface { +public: + /// Indicates whether the source of the call is from an AVS Directive or through a Local API call. + enum class Source { + // The call occured as a result of an AVS Directive. + DIRECTIVE, + // The call occured as a result of a local API call. + LOCAL_API + }; + + /** + * A callback for when the @c SpeakerInterface::SpeakerSettings succesfully changes. + * + * @param source. This indicates the origin of the call. + * @param type. This indicates the type of speaker that was modified. + * @param settings. This indicates the current settings after the change. + */ + virtual void onSpeakerSettingsChanged( + const Source& source, + const SpeakerInterface::Type& type, + const SpeakerInterface::SpeakerSettings& settings) = 0; +}; + +/** + * Write a @c Source value to an @c ostream as a string. + * + * @param stream The stream to write the value to. + * @param type The source value to write to the @c ostream as a string. + * @return The @c ostream that was passed in and written to. + */ +inline std::ostream& operator<<(std::ostream& stream, SpeakerManagerObserverInterface::Source source) { + switch (source) { + case SpeakerManagerObserverInterface::Source::DIRECTIVE: + stream << "DIRECTIVE"; + return stream; + case SpeakerManagerObserverInterface::Source::LOCAL_API: + stream << "LOCAL_API"; + return stream; + } + stream << "UNKNOWN"; + return stream; +} + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SPEAKERMANAGEROBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeechSynthesizerObserver.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeechSynthesizerObserverInterface.h similarity index 50% rename from AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeechSynthesizerObserver.h rename to AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeechSynthesizerObserverInterface.h index 380d1fbeb9..4964a84443 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeechSynthesizerObserver.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/SpeechSynthesizerObserverInterface.h @@ -1,7 +1,5 @@ /* - * SpeechSynthesizerObserver.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_SPEECH_SYNTHESIZER_OBSERVER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_SPEECH_SYNTHESIZER_OBSERVER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SPEECHSYNTHESIZEROBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SPEECHSYNTHESIZEROBSERVERINTERFACE_H_ #include @@ -27,7 +25,7 @@ namespace sdkInterfaces { /** * Interface for observing a SpeechSynthesizer. */ -class SpeechSynthesizerObserver { +class SpeechSynthesizerObserverInterface { public: /** * This is an enum class used to indicate the state of the @c SpeechSynthesizer. @@ -37,16 +35,22 @@ class SpeechSynthesizerObserver { PLAYING, /// In this state, the @c SpeechSynthesizer is idle and not playing speech. - FINISHED + FINISHED, + + /// In this state, the @c SpeechSynthesizer is gaining the channel focus while still not playing anything + GAINING_FOCUS, + + /// In this state, the @c SpeechSynthesizer is losing the channel focus but not yet considered @c FINISHED + LOSING_FOCUS }; /** * Destructor. */ - virtual ~SpeechSynthesizerObserver() = default; + virtual ~SpeechSynthesizerObserverInterface() = default; /** - * Notification that the @c SpeechSynthesizer state has changed. + * Notification that the @c SpeechSynthesizer state has changed. Callback functions must return as soon as possible. * @param state The new state of the @c speechSynthesizer. */ virtual void onStateChanged(SpeechSynthesizerState state) = 0; @@ -59,20 +63,28 @@ class SpeechSynthesizerObserver { * @param state The state value to write to the @c ostream as a string. * @return The @c ostream that was passed in and written to. */ -inline std::ostream& operator<<(std::ostream& stream, const SpeechSynthesizerObserver::SpeechSynthesizerState state) { - switch(state) { - case SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING: +inline std::ostream& operator<<( + std::ostream& stream, + const SpeechSynthesizerObserverInterface::SpeechSynthesizerState state) { + switch (state) { + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING: stream << "PLAYING"; break; - case SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED: + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED: stream << "FINISHED"; break; + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::GAINING_FOCUS: + stream << "GAINING_FOCUS"; + break; + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::LOSING_FOCUS: + stream << "LOSING_FOCUS"; + break; } return stream; } -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_SPEECH_SYNTHESIZER_OBSERVER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_SPEECHSYNTHESIZEROBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/StateProviderInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/StateProviderInterface.h index 37b369130e..9a19aebc86 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/StateProviderInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/StateProviderInterface.h @@ -1,7 +1,5 @@ /* - * StateProviderInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,10 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_STATE_PROVIDER_INTERFACE_H -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_STATE_PROVIDER_INTERFACE_H +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_STATEPROVIDERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_STATEPROVIDERINTERFACE_H_ + +#include "AVSCommon/AVS/NamespaceAndName.h" namespace alexaClientSDK { namespace avsCommon { @@ -40,13 +40,14 @@ class StateProviderInterface { * @c provideState request. The @c stateProviderInterface must use the same token when it updates its state via the * @c setState call. * + * @param stateProviderName The name of the state provider. * @param stateRequestToken The token to use in the @c setState call. */ - virtual void provideState(const unsigned int stateRequestToken) = 0; + virtual void provideState(const avs::NamespaceAndName& stateProviderName, const unsigned int stateRequestToken) = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_STATE_PROVIDER_INTERFACE_H +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_STATEPROVIDERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/StateSynchronizerObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/StateSynchronizerObserverInterface.h index 7fe6eeec0a..ea150bc885 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/StateSynchronizerObserverInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/StateSynchronizerObserverInterface.h @@ -1,7 +1,5 @@ /* - * StateSynchronizerObserverInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_STATE_SYNCHRONIZER_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_STATE_SYNCHRONIZER_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_STATESYNCHRONIZEROBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_STATESYNCHRONIZEROBSERVERINTERFACE_H_ namespace alexaClientSDK { namespace avsCommon { @@ -55,8 +53,8 @@ class StateSynchronizerObserverInterface { virtual void onStateChanged(State newState) = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_STATE_SYNCHRONIZER_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_STATESYNCHRONIZEROBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/TemplateRuntimeObserverInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/TemplateRuntimeObserverInterface.h new file mode 100644 index 0000000000..921deed045 --- /dev/null +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/TemplateRuntimeObserverInterface.h @@ -0,0 +1,103 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_TEMPLATERUNTIMEOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_TEMPLATERUNTIMEOBSERVERINTERFACE_H_ + +#include +#include + +#include "AVSCommon/AVS/FocusState.h" +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { + +/** + * This @c TemplateRuntimeObserverInterface class is used to notify observers when a @c RenderTemplate or + * @c RenderPlayerInfo directive is received. These two directives contains metadata for rendering display + * cards for devices with GUI support. + */ +class TemplateRuntimeObserverInterface { +public: + /** + * The @c AudioPlayerInfo contains information that is useful for rendering a PlayerInfo display card. + * @c AudioPlayerInfo is passed to the observers as a parameter in the @c renderPlayerInfoCard callback. + */ + struct AudioPlayerInfo { + /** + * The state of the @c AudioPlayer. This information is useful for implementing the progress bar + * in the display card. It is assumed that the client is responsible for progressing the progress bar + * when the @c AudioPlayer is in PLAYING state. + */ + avsCommon::avs::PlayerActivity audioPlayerState; + + /** + * The offset in millisecond of the media that @c AudioPlayer is handling. This information is + * useful for implementation of the progress bar. + */ + std::chrono::milliseconds offset; + }; + + /** + * Destructor + */ + virtual ~TemplateRuntimeObserverInterface() = default; + + /** + * Used to notify the observer when a RenderTemplate directive is received. Once called, the client should + * render the Template display card based on the metadata provided in the payload in structured JSON format. + * + * @note The payload may contain customer sensitive information and should be used with utmost care. + * Failure to do so may result in exposing or mishandling of customer data. + * + * @param jsonPayload The payload of the RenderTemplate directive in structured JSON format. + * @param focusState The @c FocusState of the channel used by TemplateRuntime interface. + */ + virtual void renderTemplateCard(const std::string& jsonPayload, avsCommon::avs::FocusState focusState) = 0; + + /** + * Used to notify the observer when the client should clear the Template display card. Once the card is cleared, + * the client should call templateCardCleared(). + */ + virtual void clearTemplateCard() = 0; + + /** + * Used to notify the observer when a RenderPlayerInfo directive is received. Once called, the client should + * render the PlayerInfo display card based on the metadata provided in the payload in structured JSON + * format. + * + * @param jsonPayload The payload of the RenderPlayerInfo directive in structured JSON format. + * @param audioPlayerInfo Information on the @c AudioPlayer. + * @param focusState The @c FocusState of the channel used by TemplateRuntime interface. + */ + virtual void renderPlayerInfoCard( + const std::string& jsonPayload, + TemplateRuntimeObserverInterface::AudioPlayerInfo audioPlayerInfo, + avsCommon::avs::FocusState focusState) = 0; + + /** + * Used to notify the observer when the client should clear the PlayerInfo display card. Once the card is cleared, + * the client should call templateCardCleared(). + */ + virtual void clearPlayerInfoCard() = 0; +}; + +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_TEMPLATERUNTIMEOBSERVERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/UserActivityNotifierInterface.h b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/UserActivityNotifierInterface.h index 681c665492..147df9f0f7 100644 --- a/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/UserActivityNotifierInterface.h +++ b/AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/UserActivityNotifierInterface.h @@ -1,7 +1,5 @@ /* - * UserActivityNotifierInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_USER_ACTIVITY_NOTIFIER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_USER_ACTIVITY_NOTIFIER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_USERACTIVITYNOTIFIERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_USERACTIVITYNOTIFIERINTERFACE_H_ namespace alexaClientSDK { namespace avsCommon { @@ -32,12 +30,12 @@ class UserActivityNotifierInterface { /// Destructor. virtual ~UserActivityNotifierInterface() = default; - /// The function to be called when the user has become active. + /// The function to be called when the user has become active. virtual void onUserActive() = 0; }; -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_INCLUDE_AVS_COMMON_SDK_INTERFACES_USER_ACTIVITY_NOTIFIER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_INCLUDE_AVSCOMMON_SDKINTERFACES_USERACTIVITYNOTIFIERINTERFACE_H_ diff --git a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockAVSEndpointAssigner.h b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockAVSEndpointAssigner.h index 33c1f90042..f8d230d0a6 100644 --- a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockAVSEndpointAssigner.h +++ b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockAVSEndpointAssigner.h @@ -1,7 +1,5 @@ /* - * MockAVSEndpointAssigner.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_AVS_ENDPOINT_ASSIGNER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_AVS_ENDPOINT_ASSIGNER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKAVSENDPOINTASSIGNER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKAVSENDPOINTASSIGNER_H_ #include "AVSCommon/SDKInterfaces/AVSEndpointAssignerInterface.h" #include @@ -34,9 +32,9 @@ class MockAVSEndpointAssigner : public AVSEndpointAssignerInterface { MOCK_METHOD1(setAVSEndpoint, void(const std::string& avsEndpoint)); }; -} // namespace test -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_AVS_ENDPOINT_ASSIGNER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKAVSENDPOINTASSIGNER_H_ diff --git a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockContextManager.h b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockContextManager.h index f0f6b56269..295b617fa5 100644 --- a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockContextManager.h +++ b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockContextManager.h @@ -1,7 +1,5 @@ /* - * MockContextManager.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_CONTEXT_MANAGER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_CONTEXT_MANAGER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKCONTEXTMANAGER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKCONTEXTMANAGER_H_ #include "AVSCommon/SDKInterfaces/ContextManagerInterface.h" #include @@ -29,20 +27,23 @@ namespace test { /// Mock class that implements the ContextManager. class MockContextManager : public ContextManagerInterface { public: - MOCK_METHOD2(setStateProvider, void( - const avs::NamespaceAndName& namespaceAndName, - std::shared_ptr stateProvider)); - MOCK_METHOD4(setState, SetStateResult ( + MOCK_METHOD0(doShutdown, void()); + MOCK_METHOD2( + setStateProvider, + void(const avs::NamespaceAndName& namespaceAndName, std::shared_ptr stateProvider)); + MOCK_METHOD4( + setState, + SetStateResult( const avs::NamespaceAndName& namespaceAndName, const std::string& jsonState, const avs::StateRefreshPolicy& refreshPolicy, const unsigned int stateRequestToken)); - MOCK_METHOD1(getContext, void (std::shared_ptr contextRequester)); + MOCK_METHOD1(getContext, void(std::shared_ptr contextRequester)); }; -} // namespace test -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_CONTEXT_MANAGER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKCONTEXTMANAGER_H_ diff --git a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockDirectiveHandlerResult.h b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockDirectiveHandlerResult.h index 8dcace66f6..f7c3a2c471 100644 --- a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockDirectiveHandlerResult.h +++ b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockDirectiveHandlerResult.h @@ -1,7 +1,5 @@ /* - * MockDirectiveHandlerResult.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_DIRECTIVE_HANDLER_RESULT_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_DIRECTIVE_HANDLER_RESULT_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKDIRECTIVEHANDLERRESULT_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKDIRECTIVEHANDLERRESULT_H_ #include #include @@ -31,13 +29,13 @@ namespace test { /// Mock @c DirectiveHandlerResultInterface implementation. class MockDirectiveHandlerResult : public DirectiveHandlerResultInterface { public: - MOCK_METHOD0(setCompleted, void()); - MOCK_METHOD1(setFailed, void(const std::string& description)); + MOCK_METHOD0(setCompleted, void()); + MOCK_METHOD1(setFailed, void(const std::string& description)); }; -} // namespace test -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_DIRECTIVE_HANDLER_RESULT_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKDIRECTIVEHANDLERRESULT_H_ diff --git a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockDirectiveSequencer.h b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockDirectiveSequencer.h index 1c890b1ca8..96c34b9adc 100644 --- a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockDirectiveSequencer.h +++ b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockDirectiveSequencer.h @@ -1,7 +1,5 @@ /* - * MockDirectiveSequencer.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_DIRECTIVE_SEQUENCER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_DIRECTIVE_SEQUENCER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKDIRECTIVESEQUENCER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKDIRECTIVESEQUENCER_H_ #include "AVSCommon/SDKInterfaces/DirectiveSequencerInterface.h" #include @@ -30,21 +28,22 @@ namespace test { class MockDirectiveSequencer : public DirectiveSequencerInterface { public: MockDirectiveSequencer(); - MOCK_METHOD1(addDirectiveHandler, bool (std::shared_ptr handler)); - MOCK_METHOD1(removeDirectiveHandler, bool (std::shared_ptr handler)); - MOCK_METHOD1(setDialogRequestId, void (const std::string& dialogRequestId)); - MOCK_METHOD1(onDirective, bool (std::shared_ptr directive)); - MOCK_METHOD0(doShutdown, void ()); + MOCK_METHOD1(addDirectiveHandler, bool(std::shared_ptr handler)); + MOCK_METHOD1(removeDirectiveHandler, bool(std::shared_ptr handler)); + MOCK_METHOD1(setDialogRequestId, void(const std::string& dialogRequestId)); + MOCK_METHOD1(onDirective, bool(std::shared_ptr directive)); + MOCK_METHOD0(doShutdown, void()); + MOCK_METHOD0(disable, void()); + MOCK_METHOD0(enable, void()); }; - inline MockDirectiveSequencer::MockDirectiveSequencer() : avsCommon::sdkInterfaces::DirectiveSequencerInterface{"MockDirectiveSequencer"} { } -} // namespace test -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_DIRECTIVE_SEQUENCER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKDIRECTIVESEQUENCER_H_ diff --git a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockExceptionEncounteredSender.h b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockExceptionEncounteredSender.h index 85dde51b97..d69d950a8b 100644 --- a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockExceptionEncounteredSender.h +++ b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockExceptionEncounteredSender.h @@ -1,7 +1,5 @@ /* - * MockExceptionEncounteredSenderInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_TEST_AVS_COMMON_MOCK_EXCEPTION_ENCOUNTERED_SENDER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_TEST_AVS_COMMON_MOCK_EXCEPTION_ENCOUNTERED_SENDER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKEXCEPTIONENCOUNTEREDSENDER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKEXCEPTIONENCOUNTEREDSENDER_H_ #include "AVSCommon/SDKInterfaces/ExceptionEncounteredSenderInterface.h" #include @@ -31,13 +29,14 @@ namespace test { */ class MockExceptionEncounteredSender : public ExceptionEncounteredSenderInterface { public: - MOCK_METHOD3(sendExceptionEncountered, void(const std::string& unparsedDirective, avs::ExceptionErrorType error, - const std::string& errorDescription)); + MOCK_METHOD3( + sendExceptionEncountered, + void(const std::string& unparsedDirective, avs::ExceptionErrorType error, const std::string& errorDescription)); }; -} // namespace test -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_TEST_AVS_COMMON_MOCK_EXCEPTION_ENCOUNTERED_SENDER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKEXCEPTIONENCOUNTEREDSENDER_H_ diff --git a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockFocusManager.h b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockFocusManager.h index ed9deb91a0..f3ede1512c 100644 --- a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockFocusManager.h +++ b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockFocusManager.h @@ -1,7 +1,5 @@ /* - * MockFocusManager.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_FOCUS_MANAGER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_FOCUS_MANAGER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKFOCUSMANAGER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKFOCUSMANAGER_H_ #include "AVSCommon/SDKInterfaces/FocusManagerInterface.h" #include @@ -29,19 +27,29 @@ namespace test { /// Mock class that implements the FocusManager. class MockFocusManager : public FocusManagerInterface { public: - MOCK_METHOD3(acquireChannel, bool ( - const std::string& channelName, + MOCK_METHOD3( + acquireChannel, + bool( + const std::string& channelName, std::shared_ptr channelObserver, - const std::string& activityId)); - MOCK_METHOD2(releaseChannel, std::future ( + const std::string& interface)); + MOCK_METHOD2( + releaseChannel, + std::future( const std::string& channelName, std::shared_ptr channelObserver)); - MOCK_METHOD0(stopForegroundActivity, void ()); + MOCK_METHOD0(stopForegroundActivity, void()); + MOCK_METHOD1( + addObserver, + void(const std::shared_ptr& observer)); + MOCK_METHOD1( + removeObserver, + void(const std::shared_ptr& observer)); }; -} // namespace test -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_FOCUS_MANAGER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKFOCUSMANAGER_H_ diff --git a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockFocusManagerObserver.h b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockFocusManagerObserver.h new file mode 100644 index 0000000000..32e47714c3 --- /dev/null +++ b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockFocusManagerObserver.h @@ -0,0 +1,85 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKFOCUSMANAGEROBSERVER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKFOCUSMANAGEROBSERVER_H_ + +#include "AVSCommon/SDKInterfaces/FocusManagerObserverInterface.h" + +#include + +#include +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { +namespace test { + +/// Mock class that implements the FocusManagerObserver. +class MockFocusManagerObserver : public FocusManagerObserverInterface { +public: + MockFocusManagerObserver(); + + MOCK_METHOD2(onFocusChanged, void(const std::string& channelName, avs::FocusState newFocus)); + + /** + * EXPECT_CALL wrapper which tracks the number of onFocusChanged calls we are expecting. + * + * @param channelName The name of the channel which changed @c FocusState. + * @param newFocus The new @c FocusState of @c channelName. + */ + void expectFocusChange(const std::string& channelName, avs::FocusState newFocus); + + /** + * Waits for @c expectFocusChange() calls to complete. + * + * @param timeout Amount of time to wait for all calls to complete. + * @return @c true if all calls completed, else @c false. + */ + bool waitForFocusChanges(std::chrono::milliseconds timeout = std::chrono::milliseconds::zero()); + +private: + size_t m_expects; + std::mutex m_mutex; + std::condition_variable m_conditionVariable; +}; + +inline MockFocusManagerObserver::MockFocusManagerObserver() : m_expects{0} { +} + +inline void MockFocusManagerObserver::expectFocusChange(const std::string& channelName, avs::FocusState newFocus) { + std::lock_guard lock(m_mutex); + EXPECT_CALL(*this, onFocusChanged(testing::StrEq(channelName), newFocus)) + .WillOnce(testing::InvokeWithoutArgs([this] { + std::lock_guard lock(m_mutex); + --m_expects; + m_conditionVariable.notify_all(); + })); + ++m_expects; +} + +inline bool MockFocusManagerObserver::waitForFocusChanges(std::chrono::milliseconds timeout) { + std::unique_lock lock(m_mutex); + return m_conditionVariable.wait_for(lock, timeout, [this] { return !m_expects; }); +} + +} // namespace test +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKFOCUSMANAGEROBSERVER_H_ diff --git a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockMessageSender.h b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockMessageSender.h index a0ffb093d9..3b63704d84 100644 --- a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockMessageSender.h +++ b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockMessageSender.h @@ -1,7 +1,5 @@ /* - * MockMessageSender.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_MESSAGE_SENDER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_MESSAGE_SENDER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKMESSAGESENDER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKMESSAGESENDER_H_ #include "AVSCommon/SDKInterfaces/MessageSenderInterface.h" #include @@ -29,12 +27,12 @@ namespace test { /// Mock class that implements the MessageSender. class MockMessageSender : public MessageSenderInterface { public: - MOCK_METHOD1(sendMessage, void (std::shared_ptr request)); + MOCK_METHOD1(sendMessage, void(std::shared_ptr request)); }; -} // namespace test -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_MESSAGE_SENDER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKMESSAGESENDER_H_ diff --git a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockPlaybackHandler.h b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockPlaybackHandler.h new file mode 100644 index 0000000000..1e60faf04f --- /dev/null +++ b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockPlaybackHandler.h @@ -0,0 +1,40 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKPLAYBACKHANDLER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKPLAYBACKHANDLER_H_ + +#include + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { +namespace test { + +/** + * Mock class implementing @c PlaybackRouterInterface + */ +class MockPlaybackHandler : public PlaybackHandlerInterface { +public: + MOCK_METHOD1(onButtonPressed, void(avs::PlaybackButton button)); +}; + +} // namespace test +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKPLAYBACKHANDLER_H_ diff --git a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockPlaybackRouter.h b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockPlaybackRouter.h new file mode 100644 index 0000000000..d71ff9be6e --- /dev/null +++ b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockPlaybackRouter.h @@ -0,0 +1,46 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKPLAYBACKROUTER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKPLAYBACKROUTER_H_ + +#include + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace sdkInterfaces { +namespace test { + +/** + * Mock class implementing @c PlaybackRouterInterface + */ +class MockPlaybackRouter : public PlaybackRouterInterface { +public: + MOCK_METHOD0(playButtonPressed, void()); + MOCK_METHOD0(pauseButtonPressed, void()); + MOCK_METHOD0(nextButtonPressed, void()); + MOCK_METHOD0(previousButtonPressed, void()); + MOCK_METHOD1(setHandler, void(std::shared_ptr handler)); + MOCK_METHOD0(switchToDefaultHandler, void()); +}; + +} // namespace test +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKPLAYBACKROUTER_H_ diff --git a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockStateSynchronizerObserver.h b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockStateSynchronizerObserver.h index 4683442483..1e4df38a65 100644 --- a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockStateSynchronizerObserver.h +++ b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockStateSynchronizerObserver.h @@ -1,7 +1,5 @@ /* - * MockStateSynchronizerObserver.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_STATE_SYNCHRONIZER_OBSERVER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_STATE_SYNCHRONIZER_OBSERVER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKSTATESYNCHRONIZEROBSERVER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKSTATESYNCHRONIZEROBSERVER_H_ #include "AVSCommon/SDKInterfaces/StateSynchronizerObserverInterface.h" #include @@ -34,9 +32,9 @@ class MockStateSynchronizerObserver : public StateSynchronizerObserverInterface MOCK_METHOD1(onStateChanged, void(StateSynchronizerObserverInterface::State newstate)); }; -} // namespace test -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_STATE_SYNCHRONIZER_OBSERVER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKSTATESYNCHRONIZEROBSERVER_H_ diff --git a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockUserActivityNotifier.h b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockUserActivityNotifier.h index 9595d2406e..245860372e 100644 --- a/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockUserActivityNotifier.h +++ b/AVSCommon/SDKInterfaces/test/AVSCommon/SDKInterfaces/MockUserActivityNotifier.h @@ -1,7 +1,5 @@ /* - * MockUserActivityNotifier.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_USER_ACTIVITY_NOTIFIER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_USER_ACTIVITY_NOTIFIER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKUSERACTIVITYNOTIFIER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKUSERACTIVITYNOTIFIER_H_ #include "AVSCommon/SDKInterfaces/UserActivityNotifierInterface.h" #include @@ -32,9 +30,9 @@ class MockUserActivityNotifier : public UserActivityNotifierInterface { MOCK_METHOD0(onUserActive, void()); }; -} // namespace test -} // namespace sdkInterfaces -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace sdkInterfaces +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_SDK_INTERFACES_TEST_AVS_COMMON_SDK_INTERFACES_MOCK_USER_ACTIVITY_NOTIFIER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_SDKINTERFACES_TEST_AVSCOMMON_SDKINTERFACES_MOCKUSERACTIVITYNOTIFIER_H_ diff --git a/AVSCommon/Utils/CMakeLists.txt b/AVSCommon/Utils/CMakeLists.txt index 0130ac18bf..ec82c64620 100644 --- a/AVSCommon/Utils/CMakeLists.txt +++ b/AVSCommon/Utils/CMakeLists.txt @@ -1 +1 @@ -add_subdirectory("test") +acsdk_add_test_subdirectory_if_allowed() diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/AudioFormat.h b/AVSCommon/Utils/include/AVSCommon/Utils/AudioFormat.h index 2c590285bd..73e853536a 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/AudioFormat.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/AudioFormat.h @@ -1,7 +1,5 @@ /* - * AudioFormat.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -18,8 +16,8 @@ /** * @file AudioFormat.h */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_AUDIO_FORMAT_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_AUDIO_FORMAT_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_AUDIOFORMAT_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_AUDIOFORMAT_H_ #include @@ -36,7 +34,21 @@ struct AudioFormat { */ enum class Encoding { /// Represents LPCM (Linear pulse code modulation) encoding. - LPCM + LPCM, + + /// Represents OPUS encoding. + OPUS + }; + + /** + * An enum class to represent layout of audio files for streams with more than one channel. + */ + enum class Layout { + /// Non-Interleaved : The L and R are separated in different streams. + NON_INTERLEAVED, + + /// Interleaved : The L and R sides of a stereo recording are interleaved. + INTERLEAVED }; /** @@ -64,6 +76,12 @@ struct AudioFormat { /// The number of channels. unsigned int numChannels; + + /// @c true if the data is signed @c false otherwise. + bool dataSigned; + + /// The layout of format for cases where numChannels > 1. + Layout layout; }; /** @@ -78,11 +96,13 @@ inline std::ostream& operator<<(std::ostream& stream, const AudioFormat::Encodin case AudioFormat::Encoding::LPCM: stream << "LPCM"; break; + case AudioFormat::Encoding::OPUS: + stream << "OPUS"; + break; } return stream; } - /** * Write an @c Endianness value to an @c ostream as a string. * @@ -102,8 +122,8 @@ inline std::ostream& operator<<(std::ostream& stream, const AudioFormat::Endiann return stream; } -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_AUDIO_FORMAT_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_AUDIOFORMAT_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Configuration/ConfigurationNode.h b/AVSCommon/Utils/include/AVSCommon/Utils/Configuration/ConfigurationNode.h index 4cfecb7129..4b8ab9dc67 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Configuration/ConfigurationNode.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Configuration/ConfigurationNode.h @@ -1,7 +1,5 @@ /* - * ConfigurationNode.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_CONFIGURATION_CONFIGURATION_NODE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_CONFIGURATION_CONFIGURATION_NODE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_CONFIGURATION_CONFIGURATIONNODE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_CONFIGURATION_CONFIGURATIONNODE_H_ #include #include @@ -53,9 +51,9 @@ namespace configuration { * @endcode * * The configuration is specified via JSON documents with a root object that corresponds to the root - * @c ConfigurationNode value returned by ConfigurationNode::getRoot(). ConfiguriatonNode Sub-nodes accessed by operator[] - * correspond to JSON objects values with the of the name . So, the code example above would return - * "someStringValue" if the configuration was initialized with the following JSON document: + * @c ConfigurationNode value returned by ConfigurationNode::getRoot(). ConfiguriatonNode Sub-nodes accessed by + * operator[] correspond to JSON objects values with the of the name . So, the code example above would + * return "someStringValue" if the configuration was initialized with the following JSON document: * @code * { * "someComponent" : { @@ -85,7 +83,7 @@ class ConfigurationNode { * * @return Whether the initialization was successful. */ - static bool initialize(const std::vector &jsonStreams); + static bool initialize(const std::vector& jsonStreams); /** * Uninitialize the global configuration. @@ -115,7 +113,7 @@ class ConfigurationNode { * @c false if not specified. * @return Whether this @c ConfigurationNode has a @c bool value for @c key. */ - bool getBool(const std::string& key, bool *out = nullptr, bool defaultValue = false) const; + bool getBool(const std::string& key, bool* out = nullptr, bool defaultValue = false) const; /** * Get @c int value for @c key from this @c ConfigurationNode. @@ -126,7 +124,7 @@ class ConfigurationNode { * Zero if not specified. * @return Whether this @c ConfigurationNode has an @c int value for @c key. */ - bool getInt(const std::string& key, int *out = nullptr, int defaultValue = 0) const; + bool getInt(const std::string& key, int* out = nullptr, int defaultValue = 0) const; /** * Get the @c string value for @c key from this @c ConfigurationNode. @@ -152,11 +150,11 @@ class ConfigurationNode { * value for @c key. Zero if not specified. * @return Whether this @c ConfigurationNode has an integer value for @c key. */ - template + template bool getDuration( - const std::string& key, - OutputType* out = static_cast(0), - DefaultType defaultValue = std::chrono::seconds(0)) const; + const std::string& key, + OutputType* out = static_cast(0), + DefaultType defaultValue = std::chrono::seconds(0)) const; /** * operator[] to get @c ConfigurationNode value for @c key from this @c ConfigurationNode. @@ -174,6 +172,25 @@ class ConfigurationNode { */ operator bool() const; + /** + * Common logic for getting a value of a specific type. + * + * @tparam Type The type to be gotten. + * @param key The key of the value to get. + * @param out Pointer to receive the value. May be nullptr to just test for the presence of the value. + * @param defaultValue A default output value if no value of the desired type for @c key is present. + * @param isType rapidjson::Value member function to test for the desired type. + * @param getType rapidjson::Value member function to get the desired type. + * @return Whether a value of the specified @c Type is present for @c key. + */ + template + bool getValue( + const std::string& key, + Type* out, + Type defaultValue, + bool (rapidjson::Value::*isType)() const, + Type (rapidjson::Value::*getType)() const) const; + private: /** * Constructor. @@ -194,25 +211,6 @@ class ConfigurationNode { */ bool getString(const std::string& key, const char** out, const char* defaultValue) const; - /** - * Common logic for getting a value of a specific type. - * - * @tparam Type The type to be gotten. - * @param key The key of the value to get. - * @param out Pointer to receive the value. May be nullptr to just test for the presence of the value. - * @param defaultValue A default output value if no value of the desired type for @c key is present. - * @param isType rapidjson::Value member function to test for the desired type. - * @param getType rapidjson::Value member function to get the desired type. - * @return Whether a value of the specified @c Type is present for @c key. - */ - template - bool getValue( - const std::string& key, - Type *out, - Type defaultValue, - bool (rapidjson::Value::*isType)() const, - Type (rapidjson::Value::*getType)() const) const; - /// Object value within the global configuration that this @c ConfigurationNode represents. const rapidjson::Value* m_object; @@ -229,7 +227,7 @@ class ConfigurationNode { static ConfigurationNode m_root; }; -template +template bool ConfigurationNode::getDuration(const std::string& key, OutputType* out, DefaultType defaultValue) const { int temp; auto result = getInt(key, &temp); @@ -239,9 +237,35 @@ bool ConfigurationNode::getDuration(const std::string& key, OutputType* out, Def return result; } -} // namespace configuration -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +template +bool ConfigurationNode::getValue( + const std::string& key, + Type* out, + Type defaultValue, + bool (rapidjson::Value::*isType)() const, + Type (rapidjson::Value::*getType)() const) const { + if (key.empty() || !m_object) { + if (out) { + *out = defaultValue; + } + return false; + } + auto it = m_object->FindMember(key.c_str()); + if (m_object->MemberEnd() == it || !(it->value.*isType)()) { + if (out) { + *out = defaultValue; + } + return false; + } + if (out) { + *out = (it->value.*getType)(); + } + return true; +} + +} // namespace configuration +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_CONFIGURATION_CONFIGURATION_NODE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_CONFIGURATION_CONFIGURATIONNODE_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/File/FileUtils.h b/AVSCommon/Utils/include/AVSCommon/Utils/File/FileUtils.h new file mode 100644 index 0000000000..d55dbd76d0 --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/File/FileUtils.h @@ -0,0 +1,47 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_FILE_FILEUTILS_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_FILE_FILEUTILS_H_ + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace file { + +/** + * A small utility function to help determine if a file exists. + * + * @param filePath The path to the file being queried about. + * @return Whether the file exists and is accessible. + */ +bool fileExists(const std::string& filePath); + +/** + * A utility function to delete a file. + * + * @param filePath The path to the file being deleted. + * @return Whether the file was deleted ok. + */ +bool removeFile(const std::string& filePath); + +} // namespace file +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_FILE_FILEUTILS_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/HTTPContent.h b/AVSCommon/Utils/include/AVSCommon/Utils/HTTPContent.h new file mode 100644 index 0000000000..7a9b3fca1e --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/HTTPContent.h @@ -0,0 +1,60 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_HTTPCONTENT_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_HTTPCONTENT_H_ + +#include +#include +#include + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { + +/** + * This struct encapsulates content received from HTTP request, specifically the status code, the content-type, and the + * actual content of the response. + */ +struct HTTPContent { + /** + * This function blocks until @c statusCode is set and checks whether it is equal to 200, indicating an HTTP sucess + * code. + * + * @return @c true if `statuscode == 200`, else @c false. + */ + operator bool() const; + + /// A @c long representing the HTTP status code. + mutable std::future statusCode; + + /// A @c string representing the content-type of the HTTP content. + std::future contentType; + + /// An @c Attachment from which to read the HTTP content from or @c nullptr if no data was fetched. + std::shared_ptr dataStream; +}; + +inline HTTPContent::operator bool() const { + return statusCode.get() == 200; +} + +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_HTTPCONTENT_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/JSON/JSONUtils.h b/AVSCommon/Utils/include/AVSCommon/Utils/JSON/JSONUtils.h index 0088484b0d..f16aa66090 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/JSON/JSONUtils.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/JSON/JSONUtils.h @@ -1,7 +1,5 @@ /* - * JSONUtils.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,8 +12,9 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_JSON_JSONUTILS_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_JSON_JSONUTILS_H_ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_JSON_JSONUTILS_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_JSON_JSONUTILS_H_ #include #include @@ -45,34 +44,10 @@ inline static std::string getTag() { * @param[out] iteratorPtr A pointer to a @c ConstMemberIterator, which will contain the @c Value. * @return @c true if the lookup is successful, @c false otherwise. */ -bool findNode(const rapidjson::Value& jsonNode, const std::string& key, rapidjson::Value::ConstMemberIterator* iteratorPtr); - -/** - * TODO: ACSDK-382 Remove references of this method with the retrieveValue method. - * Given a JSON string, this function will look up a particular string value of a direct child - * node of the logical JSON document. If the node being looked up is a logical JSON object, - * then that object will be serialized and placed in the output string parameter. - * - * In this initial version of the api, this function will return false if the given key refers to a - * boolean, number or array. - * - * @param jsonContent The JSON string content. - * @param key The key of the underlying JSON content we wish to acquire the value of. - * @param[out] value The output parameter which will be assigned the string value. - * @return @c true if the lookup is successful, @c false otherwise. - */ -bool lookupStringValue(const std::string& jsonContent, const std::string& key, std::string* value); - -/** - * TODO: ACSDK-382 Replace references of this method with the retrieveValue method. - * This function is similar to lookupStringValue(), but converts the value to an int64_t - * - * @param jsonContent The JSON string content. - * @param key The key of the underlying JSON content we wish to acquire the value of. - * @param[out] value The output parameter which will be assigned the int64_t value. - * @return @c true if the lookup is successful, @c false otherwise. - */ -bool lookupInt64Value(const std::string& jsonContent, const std::string& key, int64_t* value); +bool findNode( + const rapidjson::Value& jsonNode, + const std::string& key, + rapidjson::Value::ConstMemberIterator* iteratorPtr); /** * Invoke a rapidjson parse on a JSON string. @@ -101,6 +76,15 @@ bool convertToValue(const rapidjson::Value& documentNode, std::string* value); */ bool convertToValue(const rapidjson::Value& documentNode, int64_t* value); +/** + * Converts a given rapidjson value node to a bool. The node must be Bool type. + * + * @param documentNode A logical node within a parsed JSON document which rapidjson understands. + * @param[out] value The output parameter which will be assigned the bool value. + * @return @c true If the node was successfully converted, @c false otherwise. + */ +bool convertToValue(const rapidjson::Value& documentNode, bool* value); + /** * A template function to find and retrieve a value of type T from a direct child of the * provided @c rapidjson::Value object. The type T must have an overload of the function @@ -108,8 +92,9 @@ bool convertToValue(const rapidjson::Value& documentNode, int64_t* value); * * @param jsonNode A logical node within a parsed JSON document which rapidjson understands. * @param key The key in which to look for the value. - * @param[out] value The output parameter which will be assigned the value of type T. - * @return @c true If the node was successfully converted, @c false otherwise. + * @param[out] value The output parameter which will be assigned the value of type T if the function + * succeeds. No modification is done in case of failure. + * @return @c true If the value was successfully retrieved, @c false otherwise. */ template bool retrieveValue(const rapidjson::Value& jsonNode, const std::string& key, T* value) { @@ -123,11 +108,7 @@ bool retrieveValue(const rapidjson::Value& jsonNode, const std::string& key, T* return false; } - if (!convertToValue(iterator->value, value)) { - return false; - } - - return true; + return convertToValue(iterator->value, value); } /** @@ -137,8 +118,9 @@ bool retrieveValue(const rapidjson::Value& jsonNode, const std::string& key, T* * * @param jsonString A JSON string. * @param key The key in which to look for the value. - * @param[out] value The output parameter which will be assigned the value of type T. - * @return @c true If the node was successfully converted, @c false otherwise. + * @param[out] value The output parameter which will be assigned the value of type T if the function + * succeeds. No modification is done in case of failure. + * @return @c true If the value was successfully retrieved, @c false otherwise. */ template bool retrieveValue(const std::string jsonString, const std::string& key, T* value) { @@ -163,12 +145,12 @@ bool retrieveValue(const std::string jsonString, const std::string& key, T* valu * @param key The name of the array being looked for. * @return Whether a child element of array type was found. */ -bool jsonArrayExists(const rapidjson::Value & parsedDocument, const std::string & key); +bool jsonArrayExists(const rapidjson::Value& parsedDocument, const std::string& key); -} // namespace jsonUtils -} // namespace json -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace jsonUtils +} // namespace json +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_JSON_JSONUTILS_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_JSON_JSONUTILS_H_ diff --git a/ACL/include/ACL/Transport/CurlEasyHandleWrapper.h b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/CurlEasyHandleWrapper.h similarity index 71% rename from ACL/include/ACL/Transport/CurlEasyHandleWrapper.h rename to AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/CurlEasyHandleWrapper.h index 3272093e4b..be830bf33f 100644 --- a/ACL/include/ACL/Transport/CurlEasyHandleWrapper.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/CurlEasyHandleWrapper.h @@ -1,7 +1,5 @@ /* - * CurlEasyHandleWrapper.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,15 +13,20 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_CURL_EASY_HANDLE_WRAPPER_H_ -#define ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_CURL_EASY_HANDLE_WRAPPER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_CURLEASYHANDLEWRAPPER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_CURLEASYHANDLEWRAPPER_H_ #include #include #include +#include +#include + namespace alexaClientSDK { -namespace acl { +namespace avsCommon { +namespace utils { +namespace libcurlUtils { /** * Class to allocate and configure a curl easy handle @@ -38,7 +41,7 @@ class CurlEasyHandleWrapper { * @param numBlocks The number of "blocks" to read or write * @param userData Some user data passed in with CURLOPT_XDATA (where X = READ, WRITE, or HEADER) */ - typedef size_t (*CurlCallback)(char *buffer, size_t blockSize, size_t numBlocks, void *userData); + using CurlCallback = size_t (*)(char* buffer, size_t blockSize, size_t numBlocks, void* userData); /** * Definitions for HTTP action types @@ -81,6 +84,13 @@ class CurlEasyHandleWrapper { */ CURL* getCurlHandle(); + /** + * Used to check if curl is correctly initialized + * + * @return true if curl handler is valid + */ + bool isValid(); + /* * Adds an HTTP Header to the current easy handle * @@ -141,14 +151,22 @@ class CurlEasyHandleWrapper { * @param userData User data passed into the read callback. * @return Whether the addition was successful. */ - bool setPostStream(const std::string& fieldName, void *userData); + bool setPostStream(const std::string& fieldName, void* userData); + + /** + * Sets the data to be sent in the next POST operation. + * + * @param data String buffer to the full data to send in a HTTP POST operation. + * @returns Whether the operation was successful. + */ + bool setPostData(const std::string& data); /** * Sets how long the stream should take, in seconds, to establish a connection. * If not set explicitly there is no timeout. * - * @param timeoutSeconds The amount of time, in seconds, establishing a connection should take. Set to @c 0 to disable - * a timeout. + * @param timeoutSeconds The amount of time, in seconds, establishing a connection should take. Set to @c 0 to + * disable a timeout. * @returns Whether setting the timeout was successful */ bool setConnectionTimeout(const std::chrono::seconds timeoutSeconds); @@ -160,8 +178,8 @@ class CurlEasyHandleWrapper { * @param userData Any data to be passed to the callback * @return Whether the addition was successful */ - bool setWriteCallback(CurlCallback callback, void* userData); + /** * Sets the callback to call when libcurl has HTTP header data available * NOTE: Each header line is provided individually @@ -170,8 +188,8 @@ class CurlEasyHandleWrapper { * @param userData Any data to be passed to the callback * @return Whether the addition was successful */ - bool setHeaderCallback(CurlCallback callback, void* userData); + /** * Sets the callback to call when libcurl requires data to POST * @@ -181,6 +199,16 @@ class CurlEasyHandleWrapper { */ bool setReadCallback(CurlCallback callback, void* userData); + /** + * Helper function for calling curl_easy_setopt and checking the result. + * + * @param option The option parameter to pass through to curl_easy_setopt. + * @param param The param option to pass through to curl_easy_setopt. + * @return @c true of the operation was successful. + */ + template + bool setopt(CURLoption option, ParamType param); + private: /** * Frees and sets the following attributes to NULL: @@ -200,16 +228,33 @@ class CurlEasyHandleWrapper { bool setDefaultOptions(); /// The associated libcurl easy handle - CURL *m_handle; + CURL* m_handle; /// A list of headers needed to be added at the HTTP level - curl_slist *m_requestHeaders; + curl_slist* m_requestHeaders; /// A list of headers needed to be added to a POST action - curl_slist *m_postHeaders; + curl_slist* m_postHeaders; /// The associated multipart post - curl_httppost *m_post; + curl_httppost* m_post; }; -} // alexaClientSDK -} // acl +template +bool CurlEasyHandleWrapper::setopt(CURLoption option, ParamType value) { + auto result = curl_easy_setopt(m_handle, option, value); + if (result != CURLE_OK) { + logger::acsdkError(logger::LogEntry("CurlEasyHandleWrapper", "setoptFailed") + .d("reason", "curl_easy_setopt failed") + .d("option", option) + .sensitive("value", value) + .d("result", result) + .d("error", curl_easy_strerror(result))); + return false; + } + return true; +} + +} // namespace libcurlUtils +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_ACL_INCLUDE_ACL_TRANSPORT_CURL_EASY_HANDLE_WRAPPER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_CURLEASYHANDLEWRAPPER_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/CurlMultiHandleWrapper.h b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/CurlMultiHandleWrapper.h new file mode 100644 index 0000000000..4069025f44 --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/CurlMultiHandleWrapper.h @@ -0,0 +1,119 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_CURLMULTIHANDLEWRAPPER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_CURLMULTIHANDLEWRAPPER_H_ + +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace libcurlUtils { + +/** + * This class wraps a @c libcurl @c multi @c handle as a C++ object. + * Wrapping enables: + * - tracking handles to ensure that all handles are removed before curl_multi_cleanup() is called. + * - centralized and consistent logging when curl_multi operations fail. + * - simplified signatures for calling code. + * - (slightly) improved type safety (so far just time values). + */ +class CurlMultiHandleWrapper { +public: + /** + * Create a CurlMultiHandleWrapper. + * + * @return The new CurlMultiHandleWrapper instance, or nullptr if the operation fails. + */ + static std::unique_ptr create(); + + /** + * Destructor. + */ + ~CurlMultiHandleWrapper(); + + /** + * Get the @c libcurl @c multi @c handle underlying this instance. + * + * @return The @c libcurl @c multi @c handle underlying this instance. + */ + CURLM* getCurlHandle(); + + /** + * Add a @c libcurl @c handle to this instance. + * + * @param handle The @c libcurl @c handle to add to this instance. + * @return @c libcurl code indicating the result of this operation. + */ + CURLMcode addHandle(CURL* handle); + + /** + * Remove a @c libcurl @c handle from this instance. + * + * @param handle The @c libcurl @c handle to remove from this instance. + * @return @c libcurl code indicating the result of this operation. + */ + CURLMcode removeHandle(CURL* handle); + + /** + * Read and/or write available data for the @c libcurl @c handles added to this @c libcurl @c multi @c handle. + * + * @param[out] runningHandles Returns the number of handles for which read/write operations were performed. + * @return @c libcurl code indicating the result of this operation. + */ + CURLMcode perform(int* runningHandles); + + /** + * Wait for actions to perform on the @c libcurl @c handles added to this @c libcurl @c multi @c handle. + * + * @param timeout How long to wait for actions to perform. + * @param[out] countHandlesUpdated The number of handles for which actions are ready to be performed. + * @return @c libcurl code indicating the result of this operation. + */ + CURLMcode wait(std::chrono::milliseconds timeout, int* countHandlesUpdated); + + /** + * Receive the next messages about the @c libcurl @c handles added to this @c libcurl @c multi @c handle. + * + * @param[out] messagesInQueue The number of @c libcurl @c handles for which messages remain. + * @return The next message or nullptr if there are no more messages. + */ + CURLMsg* infoRead(int* messagesInQueue); + +private: + /** + * Constructor. + * + * @param handle The @c libcurl @c multi @c handle to wrap. + */ + CurlMultiHandleWrapper(CURLM* handle); + + /// The wrapped @c libcurl @c handles. + CURLM* m_handle; + + /// The set of @c libcurl @c handles added to this instance. + std::unordered_set m_streamHandles; +}; + +} // namespace libcurlUtils +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_CURLMULTIHANDLEWRAPPER_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/HTTPContentFetcherFactory.h b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/HTTPContentFetcherFactory.h new file mode 100644 index 0000000000..9e5d62ede9 --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/HTTPContentFetcherFactory.h @@ -0,0 +1,43 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_HTTPCONTENTFETCHERFACTORY_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_HTTPCONTENTFETCHERFACTORY_H_ + +#include +#include + +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace libcurlUtils { + +/** + * A class that produces @c HTTPContentFetchers. + */ +class HTTPContentFetcherFactory : public avsCommon::sdkInterfaces::HTTPContentFetcherInterfaceFactoryInterface { +public: + std::unique_ptr create(const std::string& url) override; +}; + +} // namespace libcurlUtils +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_HTTPCONTENTFETCHERFACTORY_H_ diff --git a/AuthDelegate/include/AuthDelegate/HttpPost.h b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/HttpPost.h similarity index 62% rename from AuthDelegate/include/AuthDelegate/HttpPost.h rename to AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/HttpPost.h index 298a2269d1..fbf770b246 100644 --- a/AuthDelegate/include/AuthDelegate/HttpPost.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/HttpPost.h @@ -1,7 +1,5 @@ /* - * HttpPost.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AUTHDELEGATE_INCLUDE_AUTHDELEGATE_HTTP_POST_H_ -#define ALEXA_CLIENT_SDK_AUTHDELEGATE_INCLUDE_AUTHDELEGATE_HTTP_POST_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_HTTPPOST_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_HTTPPOST_H_ #include #include @@ -25,17 +23,19 @@ #include #include -#include "AuthDelegate/HttpPostInterface.h" +#include "AVSCommon/Utils/LibcurlUtils/CurlEasyHandleWrapper.h" +#include "AVSCommon/Utils/LibcurlUtils/HttpPostInterface.h" namespace alexaClientSDK { -namespace authDelegate { +namespace avsCommon { +namespace utils { +namespace libcurlUtils { /// LIBCURL based implementation of HttpPostInterface. class HttpPost : public HttpPostInterface { public: - /// HttpPost destructor - ~HttpPost(); + ~HttpPost() = default; /** * Deleted copy constructor. @@ -59,35 +59,16 @@ class HttpPost : public HttpPostInterface { */ static std::unique_ptr create(); - long doPost(const std::string& m_url, - const std::string& data, - std::chrono::seconds timeout, - std::string& body) override; - -private: - /** - * HttpPost constructor. - * - * @param curl CURL handle with which to make requests. - */ - HttpPost(); + bool addHTTPHeader(const std::string& header) override; - /** - * init() is used by create() to perform initialization after construction but before returning the - * HttpPost instance so that clients only get access to fully formed instances. - * - * @return @c true if initialization is successful. - */ - bool init(); + long doPost(const std::string& url, const std::string& data, std::chrono::seconds timeout, std::string& body) + override; +private: /** - * Helper function for calling curl_easy_setopt and checking the result. - * - * @param option The option parameter to pass through to curl_easy_setopt. - * @param param The param option to pass through to curl_easy_setopt. - * @return @c true of the operation was successful. + * Default HttpPost constructor. */ - template bool setopt(CURLoption option, ParamType param); + HttpPost() = default; /** * Callback function used to accumulate the body of the HTTP Post response @@ -105,13 +86,15 @@ class HttpPost : public HttpPostInterface { std::mutex m_mutex; /// CURL handle with which to make requests - CURL* m_curl; + CurlEasyHandleWrapper m_curl; /// String used to accumuate the response body. std::string m_bodyAccumulator; }; -} // namespace authDelegate -} // namespace alexaClientSDK +} // namespace libcurlUtils +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AUTHDELEGATE_INCLUDE_AUTHDELEGATE_HTTP_POST_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_HTTPPOST_H_ diff --git a/AuthDelegate/include/AuthDelegate/HttpPostInterface.h b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/HttpPostInterface.h similarity index 57% rename from AuthDelegate/include/AuthDelegate/HttpPostInterface.h rename to AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/HttpPostInterface.h index e8a2a7b256..d29bb471bc 100644 --- a/AuthDelegate/include/AuthDelegate/HttpPostInterface.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/HttpPostInterface.h @@ -1,7 +1,5 @@ /* - * HttpPostInterface.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,27 +13,31 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AUTHDELEGATE_INCLUDE_AUTHDELEGATE_HTTP_POST_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AUTHDELEGATE_INCLUDE_AUTHDELEGATE_HTTP_POST_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_HTTPPOSTINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_HTTPPOSTINTERFACE_H_ #include #include namespace alexaClientSDK { -namespace authDelegate { +namespace avsCommon { +namespace utils { +namespace libcurlUtils { /// Minimal interface for making Http POST requests. class HttpPostInterface { public: - /// The HTTP response code to use when the disposition of Post request is undefined. - static const long HTTP_RESPONSE_CODE_UNDEFINED = 0; - - /// The HTTP response code for successful response. - static const long HTTP_RESPONSE_CODE_SUCCESS_OK = 200; - /// Virtual destructor to assure proper cleanup of derived types. virtual ~HttpPostInterface() = default; + /** + * Adds a HTTP Header to the CURL handle + * + * @param header The HTTP header to add to the POST request. + * @returns @c true if the addition was successful @c false otherwise. + */ + virtual bool addHTTPHeader(const std::string& header) = 0; + /** * Perform an HTTP Post request returning the response body as a string. This method blocks for the duration * of the request. @@ -46,14 +48,16 @@ class HttpPostInterface { * @param[out] body A string to receive the body of the request if there is one. * @return A HttpStatus indicating the disposition of the Post request. */ - virtual long doPost(const std::string& url, - const std::string& data, - std::chrono::seconds timeout, - std::string& body) = 0; - + virtual long doPost( + const std::string& url, + const std::string& data, + std::chrono::seconds timeout, + std::string& body) = 0; }; -} // namespace authDelegate -} // namespace alexaClientSDK +} // namespace libcurlUtils +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AUTHDELEGATE_INCLUDE_AUTHDELEGATE_HTTP_POST_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_HTTPPOSTINTERFACE_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/HttpResponseCodes.h b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/HttpResponseCodes.h new file mode 100644 index 0000000000..684c2eddd1 --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/HttpResponseCodes.h @@ -0,0 +1,32 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_HTTPRESPONSECODES_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_HTTPRESPONSECODES_H_ + +enum HTTPResponseCode { + /// No HTTP response received. + HTTP_RESPONSE_CODE_UNDEFINED = 0, + /// HTTP Success with reponse payload. + SUCCESS_OK = 200, + /// HTTP Succcess with no response payload. + SUCCESS_NO_CONTENT = 204, + /// HTTP code for invalid request by user. + BAD_REQUEST = 400, + /// HTTP code for internal error by server which didn't fulfill the request. + SERVER_INTERNAL_ERROR = 500 +}; + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_HTTPRESPONSECODES_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/LibCurlHttpContentFetcher.h b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/LibCurlHttpContentFetcher.h new file mode 100644 index 0000000000..af91b4fa0c --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/LibCurlHttpContentFetcher.h @@ -0,0 +1,116 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_LIBCURLHTTPCONTENTFETCHER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_LIBCURLHTTPCONTENTFETCHER_H_ + +#include +#include +#include +#include + +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace libcurlUtils { + +/** + * A class used to retrieve content from remote URLs. Note that this object will only write to the Attachment while it + * remains alive. If the object goes out of scope, writing to the Attachment will abort. + */ +class LibCurlHttpContentFetcher : public avsCommon::sdkInterfaces::HTTPContentFetcherInterface { +public: + LibCurlHttpContentFetcher(const std::string& url); + + /** + * @copydoc + * In this implementation, the function may only be called once. Subsequent calls will return @c nullptr. + */ + std::unique_ptr getContent( + FetchOptions option, + std::shared_ptr writer) override; + + /* + * Destructor. + */ + ~LibCurlHttpContentFetcher() override; + +private: + /// The callback to parse HTTP headers. + static size_t headerCallback(char* data, size_t size, size_t nmemb, void* userData); + + /// The callback to parse HTTP bodies. + static size_t bodyCallback(char* data, size_t size, size_t nmemb, void* userData); + + /// A no-op callback to not parse HTTP bodies. + static size_t noopCallback(char* data, size_t size, size_t nmemb, void* userData); + + /// The URL to fetch from. + std::string m_url; + + /// A libcurl wrapper. + CurlEasyHandleWrapper m_curlWrapper; + + /// A promise to the caller of @c getContent() that the HTTP status code will be set. + std::promise m_statusCodePromise; + + /// A promise to the caller of @c getContent() that the HTTP content type will be set. + std::promise m_contentTypePromise; + + /** + * A flag to indicate that the body callback has begun. This is used so that we know when header parsing has + * finished and we can satisfy the promises. + */ + bool m_bodyCallbackBegan; + + /** + * The writer used to write the HTTP body to, if desired by the caller of @c getContent(). + */ + std::shared_ptr m_streamWriter; + + /** + * The last status code parsed in an HTTP response header. Since we follow redirects, we only want the last status + * code. + */ + long m_lastStatusCode; + + /** + * The last content type parsed in an HTTP response header. Since we follow redirects, we only want the last content + * type. + */ + std::string m_lastContentType; + + /// Flag to indicate that the data-fetch operation has completed. + std::atomic m_done; + + /** + * Internal thread that does the curl_easy_perform. The reason for using a thread is that curl_easy_perform may + * block forever if the URL specified is a live stream. + */ + std::thread m_thread; + + /// Flag to indicate that a call to @c getContent() has been made. Subsequent calls will not be accepted. + std::atomic_flag m_hasObjectBeenUsed; +}; + +} // namespace libcurlUtils +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_LIBCURLHTTPCONTENTFETCHER_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/LibcurlUtils.h b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/LibcurlUtils.h index 98e4c4cadb..23fbbeca5a 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/LibcurlUtils.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/LibcurlUtils/LibcurlUtils.h @@ -1,7 +1,5 @@ /* - * LibcurlUtils.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LIBCURLUTILS_LIBCURLUTILS_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LIBCURLUTILS_LIBCURLUTILS_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_LIBCURLUTILS_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_LIBCURLUTILS_H_ #include @@ -46,9 +44,9 @@ namespace libcurlUtils { */ bool prepareForTLS(CURL* handle); -} // namespace libcurlUtils -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace libcurlUtils +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LIBCURLUTILS_LIBCURLUTILS_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LIBCURLUTILS_LIBCURLUTILS_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/ConsoleLogger.h b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/ConsoleLogger.h index 9a6f04d9a6..202d8aca74 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/ConsoleLogger.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/ConsoleLogger.h @@ -1,7 +1,5 @@ /* - * ConsoleLogger.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,10 +13,12 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_CONSOLE_LOGGER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_CONSOLE_LOGGER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_CONSOLELOGGER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_CONSOLELOGGER_H_ #include "AVSCommon/Utils/Logger/Logger.h" +#include "AVSCommon/Utils/Logger/LoggerUtils.h" +#include "AVSCommon/Utils/Logger/LogStringFormatter.h" namespace alexaClientSDK { namespace avsCommon { @@ -35,19 +35,21 @@ class ConsoleLogger : public Logger { * * @return The one and only @c ConsoleLogger instance. */ - static Logger& instance(); + static std::shared_ptr instance(); - void emit( - Level level, - std::chrono::system_clock::time_point time, - const char *threadMoniker, - const char *text) override; + void emit(Level level, std::chrono::system_clock::time_point time, const char* threadMoniker, const char* text) + override; private: /** * Constructor. */ ConsoleLogger(); + + std::mutex m_coutMutex; + + /// Object to format log strings correctly. + LogStringFormatter m_logFormatter; }; /** @@ -55,11 +57,11 @@ class ConsoleLogger : public Logger { * * @return The singleton instance of @c ConsoleLogger. */ -Logger& getConsoleLogger(); +std::shared_ptr getConsoleLogger(); -} // namespace logger -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_CONSOLE_LOGGER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_CONSOLELOGGER_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/Level.h b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/Level.h index 870497a802..4aa3cb4cf9 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/Level.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/Level.h @@ -1,7 +1,5 @@ /* - * Level.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LEVEL_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LEVEL_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LEVEL_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LEVEL_H_ #include @@ -99,11 +97,23 @@ char convertLevelToChar(Level level); * @return The @c Level corresponding to the specified name. If the @c name is not recognized, * returns @c Level::UNKNOWN. */ -Level convertNameToLevel(const std::string &name); +Level convertNameToLevel(const std::string& name); + +/** + * Write a log severity @c Level value to an @c ostream as a string. + * + * @param stream The stream to write the value to. + * @param level The @c Level value to write to the @c ostream as a string. + * @return The @c ostream that was passed in and written to. + */ +inline std::ostream& operator<<(std::ostream& stream, Level level) { + stream << convertLevelToName(level); + return stream; +} -} // namespace logger -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LEVEL_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LEVEL_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogEntry.h b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogEntry.h index 45c4be9355..2618e6c52c 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogEntry.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogEntry.h @@ -1,7 +1,5 @@ /* - * LogEntry.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,8 +12,9 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOG_ENTRY_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOG_ENTRY_H_ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGENTRY_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGENTRY_H_ #include #include @@ -29,7 +28,6 @@ namespace logger { /// LogEntry is used to compile the log entry text to log via Logger. class LogEntry { public: - /** * Constructor. * @param source The name of the source of this log entry. @@ -74,7 +72,7 @@ class LogEntry { * @param value The value to add to this LogEntry. * @return This instance to facilitate adding more information to this log entry. */ - template + template inline LogEntry& d(const char* key, const ValueType& value); /** @@ -85,7 +83,7 @@ class LogEntry { * @param value The value to add to this LogEntry. * @return This instance to facilitate adding more information to this log entry. */ - template + template inline LogEntry& sensitive(const char* key, const ValueType& value); /** @@ -137,7 +135,7 @@ class LogEntry { LogEntryStream m_stream; }; -template +template LogEntry& LogEntry::d(const char* key, const ValueType& value) { prefixKeyValuePair(); m_stream << key << KEY_VALUE_SEPARATOR << value; @@ -147,20 +145,20 @@ LogEntry& LogEntry::d(const char* key, const ValueType& value) { // Define ACSDK_EMIT_SENSITIVE_LOGS if you want to include sensitive data in log output. #ifdef ACSDK_EMIT_SENSITIVE_LOGS -template +template LogEntry& LogEntry::sensitive(const char* key, const ValueType& value) { return d(key, value); } #else -template +template LogEntry& LogEntry::sensitive(const char* key, const ValueType& value) { return *this; } #endif -} // namespace logger -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOG_ENTRY_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGENTRY_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogEntryBuffer.h b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogEntryBuffer.h index cdc085607f..8626a0137d 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogEntryBuffer.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogEntryBuffer.h @@ -1,7 +1,5 @@ /* - * LogEntryBuffer.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOG_ENTRY_BUFFER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOG_ENTRY_BUFFER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGENTRYBUFFER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGENTRYBUFFER_H_ #include #include @@ -59,7 +57,6 @@ class LogEntryBuffer : public std::streambuf { const char* c_str() const; private: - /// A small embedded buffer used unless the data to be buffered grows beyond its capacity. char m_smallBuffer[ACSDK_LOG_ENTRY_BUFFER_SMALL_BUFFER_SIZE]; @@ -70,9 +67,9 @@ class LogEntryBuffer : public std::streambuf { std::unique_ptr> m_largeBuffer; }; -} // namespace logger -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOG_ENTRY_BUFFER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGENTRYBUFFER_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogEntryStream.h b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogEntryStream.h index 205ed00ba8..edd2a60bd1 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogEntryStream.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogEntryStream.h @@ -1,7 +1,5 @@ /* - * LogEntryStream.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOG_ENTRY_STREAM_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOG_ENTRY_STREAM_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGENTRYSTREAM_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGENTRYSTREAM_H_ #include #include "AVSCommon/Utils/Logger/LogEntryBuffer.h" @@ -30,7 +28,9 @@ namespace logger { * A simple override of @c std::ostream specialized to minimizing copying and memory allocations while constructing * the text of a LogEntry. */ -class LogEntryStream : private LogEntryBuffer, public std::ostream { +class LogEntryStream + : private LogEntryBuffer + , public std::ostream { public: /// Create a new LogEntryStream. LogEntryStream(); @@ -43,9 +43,9 @@ class LogEntryStream : private LogEntryBuffer, public std::ostream { const char* c_str() const; }; -} // namespace logger -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOG_ENTRY_STREAM_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGENTRYSTREAM_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogLevelObserverInterface.h b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogLevelObserverInterface.h index 8ef9b9b023..74ae2252e3 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogLevelObserverInterface.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogLevelObserverInterface.h @@ -1,7 +1,5 @@ /* - * LogLevelObserverInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOG_LEVEL_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOG_LEVEL_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGLEVELOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGLEVELOBSERVERINTERFACE_H_ #include "AVSCommon/Utils/Logger/Level.h" @@ -39,9 +37,9 @@ class LogLevelObserverInterface { virtual void onLogLevelChanged(Level level) = 0; }; -} // namespace logger -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOG_LEVEL_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGLEVELOBSERVERINTERFACE_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogStringFormatter.h b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogStringFormatter.h new file mode 100644 index 0000000000..0f9f562356 --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LogStringFormatter.h @@ -0,0 +1,60 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGSTRINGFORMATTER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGSTRINGFORMATTER_H_ + +#include + +#include "AVSCommon/Utils/Logger/Logger.h" +#include "AVSCommon/Utils/Timing/SafeCTimeAccess.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace logger { + +/** + * A class used to format log strings. + */ +class LogStringFormatter { +public: + LogStringFormatter(); + + /** + * Formats a log message into a printable string with other metadata regarding the log message. + * + * @param level The severity Level of this log line. + * @param time The time that the event to log occurred. + * @param threadMoniker Moniker of the thread that generated the event. + * @param text The text of the entry to log. + * @return The formatted string. + */ + std::string format( + Level level, + std::chrono::system_clock::time_point time, + const char* threadMoniker, + const char* text); + +private: + std::shared_ptr m_safeCTimeAccess; +}; + +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGSTRINGFORMATTER_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/Logger.h b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/Logger.h index e7dcc4bcb7..fd24bfc068 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/Logger.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/Logger.h @@ -1,7 +1,5 @@ /* - * Logger.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOGGER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOGGER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGGER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGGER_H_ #include #include @@ -195,10 +193,10 @@ class Logger { * @param text The text of the entry to log. */ virtual void emit( - Level level, - std::chrono::system_clock::time_point time, - const char *threadMoniker, - const char *text) = 0; + Level level, + std::chrono::system_clock::time_point time, + const char* threadMoniker, + const char* text) = 0; /** * Add an observer to this object. @@ -206,7 +204,7 @@ class Logger { * @param An observer to this class, which will be notified when * the logLevel changes. */ - void addLogLevelObserver(LogLevelObserverInterface * observer); + void addLogLevelObserver(LogLevelObserverInterface* observer); /** * Remove an observer to this object. @@ -214,7 +212,7 @@ class Logger { * @param An observer to this class that will be removed from the * notificaiton of logLevel changes. */ - void removeLogLevelObserver(LogLevelObserverInterface * observer); + void removeLogLevelObserver(LogLevelObserverInterface* observer); protected: /** @@ -228,13 +226,21 @@ class Logger { std::atomic m_level; private: + /** + * Initialize the log level from the specified @c ConfigurationNode. + * + * @param configuration The @c ConfigurationNode to read the log level from. + * @return Whether the logLevel was applied. + */ + bool initLogLevel(const configuration::ConfigurationNode configuration); + /** * Notify the observers of a logLevel change. */ void notifyObserversOnLogLevelChanged(); /// Vector of observers that want to be notified of logLevel changes - std::vector m_observers; + std::vector m_observers; /// This mutex guards access to m_observers std::mutex m_observersMutex; @@ -257,19 +263,19 @@ bool Logger::shouldLog(Level level) const { #endif /// Build the getLogger function name for whatever @c Logger logs will be sent to. -#define ACSDK_GET_SINK_LOGGER ACSDK_GET_LOGGER_FUNCTION_NAME(ACSDK_LOG_SINK) +#define ACSDK_GET_SINK_LOGGER ACSDK_GET_LOGGER_FUNCTION_NAME(ACSDK_LOG_SINK) /** * Get the @c Logger that logs should be sent to. * * @return The @c Logger that logs should be sent to. */ -Logger& ACSDK_GET_SINK_LOGGER(); +std::shared_ptr ACSDK_GET_SINK_LOGGER(); -} // namespace logger -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK #ifdef ACSDK_LOG_MODULE @@ -285,7 +291,7 @@ namespace logger { * In this case @c ACSDK_LOG_MODULE was defined and logs will be sent to the @c Logger returned by * @c getLogger(). */ -#define ACSDK_GET_LOGGER_FUNCTION ACSDK_GET_LOGGER_FUNCTION_NAME(ACSDK_LOG_MODULE) +#define ACSDK_GET_LOGGER_FUNCTION ACSDK_GET_LOGGER_FUNCTION_NAME(ACSDK_LOG_MODULE) /** * Inline method to get the logger for the module specified by @c ACSDK_LOG_MODULE. @@ -295,19 +301,32 @@ inline Logger& ACSDK_GET_LOGGER_FUNCTION() { return moduleLogger; } -} // namespace logger -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#else // ACSDK_LOG_MODULE -#else // ACSDK_LOG_MODULE +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace logger { /** - * Macro to define the function that ACSDK_ macros will send logs to. + * Inline method to get the function that ACSDK_ macros will send logs to. * In this case @c ACSDK_LOG_MODULE was not defined, so logs are sent to the @c Logger returned by * @c getLogger(). */ -#define ACSDK_GET_LOGGER_FUNCTION ACSDK_GET_SINK_LOGGER +inline Logger& ACSDK_GET_LOGGER_FUNCTION() { + static std::shared_ptr logger = ACSDK_GET_SINK_LOGGER(); + return *logger; +} + +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK #endif @@ -317,12 +336,12 @@ inline Logger& ACSDK_GET_LOGGER_FUNCTION() { * @param level The log level to associate with the log line. * @param entry The text (or builder of the text) for the log entry. */ -#define ACSDK_LOG(level, entry) \ - do { \ - auto& loggerInstance = alexaClientSDK::avsCommon::utils::logger::ACSDK_GET_LOGGER_FUNCTION(); \ - if (loggerInstance.shouldLog(level)) { \ - loggerInstance.log(level, entry); \ - } \ +#define ACSDK_LOG(level, entry) \ + do { \ + auto& loggerInstance = alexaClientSDK::avsCommon::utils::logger::ACSDK_GET_LOGGER_FUNCTION(); \ + if (loggerInstance.shouldLog(level)) { \ + loggerInstance.log(level, entry); \ + } \ } while (false) #ifdef ACSDK_DEBUG_LOG_ENABLED @@ -415,7 +434,7 @@ inline Logger& ACSDK_GET_LOGGER_FUNCTION() { */ #define ACSDK_DEBUG(entry) ACSDK_LOG(alexaClientSDK::avsCommon::utils::logger::Level::DEBUG0, entry) -#else // ACSDK_DEBUG_LOG_ENABLED +#else // ACSDK_DEBUG_LOG_ENABLED /** * Compile out a DEBUG9 severity log line. @@ -505,7 +524,7 @@ inline Logger& ACSDK_GET_LOGGER_FUNCTION() { */ #define ACSDK_DEBUG(entry) -#endif // ACSDK_DEBUG_LOG_ENABLED +#endif // ACSDK_DEBUG_LOG_ENABLED /** * Send a INFO severity log line. @@ -538,6 +557,4 @@ inline Logger& ACSDK_GET_LOGGER_FUNCTION() { */ #define ACSDK_CRITICAL(entry) ACSDK_LOG(alexaClientSDK::avsCommon::utils::logger::Level::CRITICAL, entry) -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOGGER_H_ - - +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGGER_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LoggerSinkManager.h b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LoggerSinkManager.h index 742df7947e..3d0f3e9cd1 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LoggerSinkManager.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LoggerSinkManager.h @@ -1,7 +1,5 @@ /* - * LoggerSinkManager.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOGGER_SINK_MANAGER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOGGER_SINK_MANAGER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGGERSINKMANAGER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGGERSINKMANAGER_H_ #include #include @@ -56,13 +54,16 @@ class LoggerSinkManager { void removeSinkObserver(SinkObserverInterface* observer); /** - * Change the sink logger managed by the manager. + * Initialize the sink logger managed by the manager. + * This function can be called only before any other threads in the process have been created by the + * program. * * @param sink The new @c Logger to forward logs to. * - * @note It is up to the application to serialize calls to changeSinkLogger. + * @note If this function is not called, the default sink logger + * will be the one returned by getLogger(). */ - void changeSinkLogger(Logger& sink); + void initialize(const std::shared_ptr& sink); private: /** @@ -77,12 +78,12 @@ class LoggerSinkManager { std::vector m_sinkObservers; /// The @c Logger to forward logs to. - std::atomic m_sink; + std::shared_ptr m_sink; }; -} // namespace logger -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOGGER_SINK_MANAGER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGGERSINKMANAGER_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LoggerUtils.h b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LoggerUtils.h index 4f0e13fa0c..99ab880e6e 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LoggerUtils.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/LoggerUtils.h @@ -1,9 +1,5 @@ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOGGERUTILS_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOGGERUTILS_H_ /* - * LoggerUtils.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -17,6 +13,9 @@ * permissions and limitations under the License. */ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGGERUTILS_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGGERUTILS_H_ + #include #include "AVSCommon/Utils/Logger/Logger.h" @@ -141,23 +140,19 @@ void acsdkCritical(const LogEntry& entry); void logEntry(Level level, const LogEntry& entry); /** - * Formats a log message into a printable string with other metadata regarding the log message. + * Stream out an array of bytes as a hex dump. * - * @param level The severity Level of this log line. - * @param time The time that the event to log occurred. - * @param threadMoniker Moniker of the thread that generated the event. - * @param text The text of the entry to log. - * @return The formatted string. + * @param stream The stream to render to. + * @param prefix A prefix added to each row. + * @param width The number of bytes to output per row. + * @param data The bytes to render. + * @param size The number of bytes to render. */ -std::string formatLogString( - Level level, - std::chrono::system_clock::time_point time, - const char *threadMoniker, - const char *text); +void dumpBytesToStream(std::ostream& stream, const char* prefix, size_t width, const unsigned char* data, size_t size); -} // namespace logger -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_LOGGERUTILS_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_LOGGERUTILS_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/ModuleLogger.h b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/ModuleLogger.h index 944f7782c9..cbf01d0203 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/ModuleLogger.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/ModuleLogger.h @@ -1,7 +1,5 @@ /* - * ModuleLogger.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_MODULE_LOGGER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_MODULE_LOGGER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_MODULELOGGER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_MODULELOGGER_H_ #include "AVSCommon/Utils/Logger/Logger.h" @@ -28,7 +26,10 @@ namespace logger { /** * @c Logger implementation providing per module configuration. Forwards logs to another @c Logger. */ -class ModuleLogger : public Logger, protected LogLevelObserverInterface, protected SinkObserverInterface { +class ModuleLogger + : public Logger + , protected LogLevelObserverInterface + , protected SinkObserverInterface { public: /** * Constructor. @@ -40,28 +41,32 @@ class ModuleLogger : public Logger, protected LogLevelObserverInterface, protect void setLevel(Level level) override; - void emit( - Level level, - std::chrono::system_clock::time_point time, - const char *threadId, - const char *text) override; + void emit(Level level, std::chrono::system_clock::time_point time, const char* threadId, const char* text) override; private: void onLogLevelChanged(Level level) override; - void onSinkChanged(Logger& sink) override; + void onSinkChanged(const std::shared_ptr& sink) override; + + /** + * Combine @c m_moduleLogLevel and @c m_sinkLogLevel to determine the appropriate value for m_logLevel. + */ + void updateLogLevel(); + + /// Log level specified for this module logger. + Level m_moduleLogLevel; - /// flag to determine if the m_sink's logLevel is to be used - bool m_useSinkLogLevel; + /// Log level specified for the sink to forward logs to. + Level m_sinkLogLevel; protected: /// The @c Logger to forward logs to. - std::atomic m_sink; + std::shared_ptr m_sink; }; -} // namespace logger -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_MODULE_LOGGER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_MODULELOGGER_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/SinkObserverInterface.h b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/SinkObserverInterface.h index 51ab0e1d3d..4273370904 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/SinkObserverInterface.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/SinkObserverInterface.h @@ -1,7 +1,5 @@ /* - * SinkObserverInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,10 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_SINK_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_SINK_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_SINKOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_SINKOBSERVERINTERFACE_H_ + +#include namespace alexaClientSDK { namespace avsCommon { @@ -36,12 +36,12 @@ class SinkObserverInterface { * * @param sink The updated sink @c Logger */ - virtual void onSinkChanged(Logger& sink) = 0; + virtual void onSinkChanged(const std::shared_ptr& sink) = 0; }; -} // namespace logger -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_SINK_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_SINKOBSERVERINTERFACE_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/ThreadMoniker.h b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/ThreadMoniker.h index 2ba2c97c83..c009645f56 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Logger/ThreadMoniker.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Logger/ThreadMoniker.h @@ -1,7 +1,5 @@ /* - * ThreadMoniker.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_THREAD_MONIKER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_THREAD_MONIKER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_THREADMONIKER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_THREADMONIKER_H_ #include @@ -42,7 +40,7 @@ class ThreadMoniker { * * @return The moniker for @c std::this_thread. */ - static inline const std::string &getThisThreadMoniker(); + static inline const std::string& getThisThreadMoniker(); private: /// The current thread's moniker. @@ -52,14 +50,13 @@ class ThreadMoniker { static thread_local ThreadMoniker m_threadMoniker; }; -const std::string &ThreadMoniker::getThisThreadMoniker() { +const std::string& ThreadMoniker::getThisThreadMoniker() { return m_threadMoniker.m_moniker; } -} // namespace logger -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK - -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_LOGGER_THREAD_MONIKER_H_ +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_LOGGER_THREADMONIKER_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/MediaPlayer/ErrorTypes.h b/AVSCommon/Utils/include/AVSCommon/Utils/MediaPlayer/ErrorTypes.h new file mode 100644 index 0000000000..98e0b2dd19 --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/MediaPlayer/ErrorTypes.h @@ -0,0 +1,78 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_MEDIAPLAYER_ERRORTYPES_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_MEDIAPLAYER_ERRORTYPES_H_ + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace mediaPlayer { + +/// Identifies the specific type of error in a @c PlaybackFailed event. +enum class ErrorType { + /// An unknown error occurred. + MEDIA_ERROR_UNKNOWN, + /// The server recognized the request as being malformed (bad request, unauthorized, forbidden, not found, etc). + MEDIA_ERROR_INVALID_REQUEST, + /// The client was unable to reach the service. + MEDIA_ERROR_SERVICE_UNAVAILABLE, + /// The server accepted the request, but was unable to process the request as expected. + MEDIA_ERROR_INTERNAL_SERVER_ERROR, + /// There was an internal error on the client. + MEDIA_ERROR_INTERNAL_DEVICE_ERROR +}; + +/** + * Convert an @c ErrorType to an AVS-compliant @c std::string. + * + * @param errorType The @c ErrorType to convert. + * @return The AVS-compliant string representation of @c errorType. + */ +inline std::string errorTypeToString(ErrorType errorType) { + switch (errorType) { + case ErrorType::MEDIA_ERROR_UNKNOWN: + return "MEDIA_ERROR_UNKNOWN"; + case ErrorType::MEDIA_ERROR_INVALID_REQUEST: + return "MEDIA_ERROR_INVALID_REQUEST"; + case ErrorType::MEDIA_ERROR_SERVICE_UNAVAILABLE: + return "MEDIA_ERROR_SERVICE_UNAVAILABLE"; + case ErrorType::MEDIA_ERROR_INTERNAL_SERVER_ERROR: + return "MEDIA_ERROR_INTERNAL_SERVER_ERROR"; + case ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR: + return "MEDIA_ERROR_INTERNAL_DEVICE_ERROR"; + } + return "unknown ErrorType"; +} + +/** + * Write an @c ErrorType value to an @c ostream. + * + * @param stream The stream to write the value to. + * @param errorType The @c ErrorType value to write to the @c ostream as a string. + * @return The @c ostream that was passed in and written to. + */ +inline std::ostream& operator<<(std::ostream& stream, const ErrorType& errorType) { + return stream << errorTypeToString(errorType); +} + +} // namespace mediaPlayer +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_MEDIAPLAYER_ERRORTYPES_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/MediaPlayer/MediaPlayerInterface.h b/AVSCommon/Utils/include/AVSCommon/Utils/MediaPlayer/MediaPlayerInterface.h index a38f8290fe..1179d93c76 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/MediaPlayer/MediaPlayerInterface.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/MediaPlayer/MediaPlayerInterface.h @@ -1,7 +1,5 @@ /* - * MediaPlayerInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,156 +13,212 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_MEDIA_PLAYER_MEDIA_PLAYER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_MEDIA_PLAYER_MEDIA_PLAYER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_MEDIAPLAYER_MEDIAPLAYERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_MEDIAPLAYER_MEDIAPLAYERINTERFACE_H_ +#include #include #include #include #include "AVSCommon/AVS/Attachment/AttachmentReader.h" -#include "MediaPlayerObserverInterface.h" +#include "AVSCommon/Utils/AudioFormat.h" namespace alexaClientSDK { namespace avsCommon { namespace utils { namespace mediaPlayer { -/** - * An enum class used to specify the status of an operation performed by the @c MediaPlayer. - */ -enum class MediaPlayerStatus { - /// The operation was successful. - SUCCESS, - - /// The operation is pending. If there is an error, it may be notified via onPlaybackError. - PENDING, +/// Represents offset returned when MediaPlayer is in an invalid state. +static const std::chrono::milliseconds MEDIA_PLAYER_INVALID_OFFSET{-1}; - /// An error was encountered and the operation failed. - FAILURE -}; +/// Forward-declare the observer class. +class MediaPlayerObserverInterface; /** - * A MediaPlayer allows for sourcing, playback control, navigation, and querying the state of media content. + * A @c MediaPlayerInterface allows for sourcing, playback control, navigation, and querying the state of media content. + * A @c MediaPlayerInterface implementation must only handle one source at a time. + * + * Each playback controlling API call (i.e. @c play(), @c pause(), @c stop(), @c resume()) which returns @c true will + * result in a callback to the observer. If @c false is returned from these calls, no callback will occur. Callbacks + * should not be made on the caller's thread prior to returning from a call. + * + * An implementation can call @c onPlaybackError() at any time. If an @c onPlaybackError() callback occurs while a + * plaback controlling API call is waiting for a callback, the original callback must not be made, and the + * implementation should rever to a stopped state. Any subsequent operations after an @c onPlaybackError() callback + * must be preceded by a new @c setSource() call. + * + * Implementations must make a call to @c onPlaybackStopped() with the previous @c SourceId when a new source is + * set if the previous source was in a non-stopped state. Any calls to a @c MediaPlayerInterface after an @c + * onPlaybackStopped() call will fail, as the MediaPlayer has "reset" its state. + * + * @c note A @c MediaPlayerInterface implementation must be able to support the various audio formats listed at: + * https://developer.amazon.com/docs/alexa-voice-service/recommended-media-support.html. */ class MediaPlayerInterface { public: + /// A type that identifies which source is currently being operated on. + using SourceId = uint64_t; + + /// An @c SourceId used to represent an error from calls to @c setSource(). + static const SourceId ERROR = 0; + /** * Destructor. */ virtual ~MediaPlayerInterface() = default; /** - * Set the source to play. The source should be set before issuing @c play or @c stop. + * Set an @c AttachmentReader source to play. The source should be set before making calls to any of the playback + * control APIs. If any source was set prior to this call, that source will be discarded. * - * The @c MediaPlayer can handle only one source at a time. + * @note A @c MediaPlayerInterface implementation must handle only one source at a time. An implementation must call + * @c MediaPlayerObserverInterface::onPlaybackStopped() with the previous source's id if there was a source set. * * @param attachmentReader Object with which to read an incoming audio attachment. - * - * @return @c SUCCESS if the source was set successfully else @c FAILURE. If setSource is called when audio is - * currently playing, the playing audio will be stopped and the source set to the new value. If there is an error - * stopping the player, this will return @c FAILURE. + * @param format The audioFormat to be used to interpret raw audio data. + * @return The @c SourceId that represents the source being handled as a result of this call. @c ERROR will be + * returned if the source failed to be set. */ - virtual MediaPlayerStatus setSource( - std::shared_ptr attachmentReader) = 0; + virtual SourceId setSource( + std::shared_ptr attachmentReader, + const avsCommon::utils::AudioFormat* format = nullptr) = 0; /** - * Set the source to play. The source should be set before issuing @c play or @c stop. + * Set a url source to play. The source should be set before making calls to any of the playback control APIs. If + * any source was set prior to this call, that source will be discarded. * - * The @c MediaPlayer can handle only one source at a time. + * @note A @c MediaPlayerInterface implementation must handle only one source at a time. An implementation must call + * @c MediaPlayerObserverInterface::onPlaybackStopped() with the previous source's id if there was a source set. * * @param url The url to set as the source. + * @param offset An optional offset parameter to start playing from when a @c play() call is made. * - * @return @c SUCCESS if the source was set successfully else @c FAILURE. If setSource is called when audio is - * currently playing, the playing audio will be stopped and the source set to the new value. If there is an error - * stopping the player, this will return @c FAILURE. + * @return The @c SourceId that represents the source being handled as a result of this call. @c ERROR will be + * returned if the source failed to be set. */ - virtual MediaPlayerStatus setSource(const std::string& url) = 0; + virtual SourceId setSource( + const std::string& url, + std::chrono::milliseconds offset = std::chrono::milliseconds::zero()) = 0; /** - * Set the source to play. The source should be set before issuing @c play or @c stop. + * Set an @c istream source to play. The source should be set before making calls to any of the playback control + * APIs. If any source was set prior to this call, that source will be discarded. * - * The @c MediaPlayer can handle only one source at a time. + * @note A @c MediaPlayerInterface implementation must handle only one source at a time. An implementation must call + * @c MediaPlayerObserverInterface::onPlaybackStopped() with the previous source's id if there was a source set. * - * @param stream Object with which to read an incoming audio stream. + * @param stream Object from which to read an incoming audio stream. * @param repeat Whether the audio stream should be played in a loop until stopped. * - * @return @c SUCCESS if the the source was set successfully else @c FAILURE. If setSource is called when audio is - * currently playing, the playing audio will be stopped and the source set to the new value. If there is an error - * stopping the player, this will return @c FAILURE. + * @return The @c SourceId that represents the source being handled as a result of this call. @c ERROR will be + * returned if the source failed to be set. */ - virtual MediaPlayerStatus setSource( - std::shared_ptr stream, bool repeat) = 0; + virtual SourceId setSource(std::shared_ptr stream, bool repeat) = 0; /** - * Set the offset for playback. A seek will be performed to the offset at the next @c play() command. + * Starts playing audio specified by the @c setSource() call. * - * The following situations will reset the offset: - * # A seek attempt is made (ie. via play()). - * # A new source is set. + * The source must be set before issuing @c play(). * - * @param offset The offset in milliseconds to seek to. + * If @c play() is called + * @li without making a @c setSource(), @c false will be returned. + * @li when audio is already playing, @c false will be returned. + * @li after a play() call has already been made but no callback or return code has been issued + * yet, @c false will be returned. * - * @return @c SUCCESS if the offset was successfully set, and FAILURE for any error. + * If the id does not match the id of the active source, then @c false will be returned. + * If the @c play() succeeded, @c true will be returned. + * When @c true is returned, a callback will be made to either @c MediaPlayerObserverInterface::onPlaybackStarted() + * or to @c MediaPlayerObserverInterface::onPlaybackError(). + * + * @param id The id of the source on which to operate. + * + * @return @c true if the call succeeded, in which case a callback will be made, or @c false otherwise. */ - virtual MediaPlayerStatus setOffset(std::chrono::milliseconds offset) { return MediaPlayerStatus::FAILURE; } + virtual bool play(SourceId id) = 0; /** - * Start playing audio. The source should be set before issuing @c play. If @c play is called without - * setting source, it will return an error. If @c play is called when audio is already playing, - * there is no effect. Status returned will be @c SUCCESS. - * If @c play is called again after @c stop on the same source, then the audio plays from the beginning. - * - * @return @c SUCCESS if the state transition to play was successful. If state transition is pending then it returns - * @c PENDING and the state transition status is notified via @c onPlaybackStarted or @c onPlaybackError. If state - * transition was unsuccessful, returns @c FAILURE. + * Stops playing the audio specified by the @c setSource() call. + * + * The source must be set before issuing @c stop(). + * + * Once @c stop() has been called, subsequent @c play() calls will fail. + * If @c stop() is called when audio has already stopped, @c false will be returned. + * If the id does not match the id of the active source, then @c false will be returned. + * If the @c stop() succeeded, @c true will be returned. + * When @c true is returned, a callback will be made to either @c MediaPlayerObserverInterface::onPlaybackStopped() + * or to @c MediaPlayerObserverInterface::onPlaybackError(). + * + * @param id The id of the source on which to operate. + * + * @return @c true if the call succeeded, in which case a callback will be made, or @c false otherwise. */ - virtual MediaPlayerStatus play() = 0; + virtual bool stop(SourceId id) = 0; /** - * Stop playing the audio. Once audio has been stopped, starting playback again will start from the beginning. - * The source should be set before issuing @c stop. If @c stop is called without setting source, it will - * return an error. - * If @c stop is called when audio has already stopped, there is no effect. Status returned will be @c SUCCESS. - * - * @return @c SUCCESS if the state transition to stop was successful. If state transition is pending then it returns - * @c PENDING and the state transition status is notified via @c onPlaybackStarted or @c onPlaybackError. If state - * transition was unsuccessful, returns @c FAILURE. + * Pauses playing audio specified by the @c setSource() call. + * + * The source must be set before issuing @c pause(). + * If @c pause() is called + * @li without making a @c setSource(), @c false will be returned. + * @li when audio is not starting/resuming/playing, @c false will be returned. + * @li when a play() or resume() call has already been made, but no callback has been issued + * yet for those functions, the audio stream will pause without playing any audio. Implementations must call + * both @c MediaPlayerObserverInterface::onPlaybackStarted() / + * @c MediaPlayerObserverInterface::onPlaybackResumed and @c MediaPlayerObserverInterface::onPlaybackPaused() + * in this scenario, as both the @c play() / @c resume() and the @c pause() are required to have corresponding + * callbacks. + * + * If the id does not match the id of the active source, then @c false will be returned. + * If the @c pause() succeeded, @c true will be returned. + * When @c true is returned, a callback will be made to either @c MediaPlayerObserverInterface::onPlaybackPaused() + * or to @c MediaPlayerObserverInterface::onPlaybackError(). + * + * @param id The id of the source on which to operate. + * + * @return @c true if the call succeeded, in which case a callback will be made, or @c false otherwise. */ - virtual MediaPlayerStatus stop() = 0; + virtual bool pause(SourceId id) = 0; /** - * Pause playing the audio. Once audio has been paused, calling @c resume() will start the audio. - * The source should be set before issuing @c pause. If @c pause is called without setting source, it will - * return an error. - * Calling @c pause will only have an effect when audio is currently playing. Calling @c pause in all other states will have no effect, - * and result in a return of @c FAILURE. - * - * @return @c SUCCESS if the state transition to pause was successful. If state transition is pending then it returns - * @c PENDING and the state transition status is notified via @c onPlaybackPaused or @c onPlaybackError. If state - * transition was unsuccessful, returns @c FAILURE. + * Resumes playing the paused audio specified by the @c setSource() call. + * + * The source must be set before issuing @c resume(). + * If @c resume() is called + * @li without making a @c setSource(), @c false will be returned. + * @li when audio is already playing, @c false will be returned. + * @li when audio is not paused, @c false will be returned. + * @li after a resume() call has already been made but no callback or return code has been issued yet, @c false will + * be returned. + * + * If the id does not match the id of the active source, then @c false will be returned. + * If the @c resume() succeeded, @c true will be returned. + * When @c true is returned, a callback will be made to either @c MediaPlayerObserverInterface::onPlaybackResumed() + * or to @c MediaPlayerObserverInterface::onPlaybackError(). + * + * @param id The id of the source on which to operate. + * + * @return @c true if the call succeeded, in which case a callback will be made, or @c false otherwise. */ - virtual MediaPlayerStatus pause() = 0; + virtual bool resume(SourceId id) = 0; /** - * Resume playing the paused audio. The source should be set before issuing @c resume. If @c resume is called without setting source, it will - * return an error. - * Calling @c resume will only have an effect when audio is currently paused. Calling @c resume in other states will have no effect, - * and result in a return of @c FAILURE. - * - * @return @c SUCCESS if the state transition to play was successful. If state transition is pending then it returns - * @c PENDING and the state transition status is notified via @c onPlaybackResumed or @c onPlaybackError. If state - * transition was unsuccessful, returns @c FAILURE. + * Returns the offset, in milliseconds, of the media source. + * + * @param id The id of the source on which to operate. + * + * @return If the specified source is playing, the offset in milliseconds that the source has been playing + * will be returned. If the specified source is not playing, the last offset it played will be returned. */ - virtual MediaPlayerStatus resume() = 0; + virtual std::chrono::milliseconds getOffset(SourceId id) = 0; /** - * Returns the offset, in milliseconds, of the media stream. + * Returns the number of bytes queued up in the media player buffers. * - * @return If a stream is playing, the offset in milliseconds that the stream has been playing, - * if there is no stream playing it returns @c -1. + * @return The number of bytes currently queued in this MediaPlayer's buffer. */ - virtual int64_t getOffsetInMilliseconds() = 0; + virtual uint64_t getNumBytesBuffered() = 0; /** * Sets an observer to be notified when playback state changes. @@ -172,12 +226,12 @@ class MediaPlayerInterface { * @param playerObserver The observer to send the notifications to. */ virtual void setObserver( - std::shared_ptr playerObserver) = 0; + std::shared_ptr playerObserver) = 0; }; -} // namespace mediaPlayer -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace mediaPlayer +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_MEDIA_PLAYER_MEDIA_PLAYER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_MEDIAPLAYER_MEDIAPLAYERINTERFACE_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/MediaPlayer/MediaPlayerObserverInterface.h b/AVSCommon/Utils/include/AVSCommon/Utils/MediaPlayer/MediaPlayerObserverInterface.h index bf6420b740..cbfd3f5aac 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/MediaPlayer/MediaPlayerObserverInterface.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/MediaPlayer/MediaPlayerObserverInterface.h @@ -1,7 +1,5 @@ /* - * MediaPlayerObserverInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,10 +13,16 @@ * permissions and limitations under the License. */ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_MEDIAPLAYER_MEDIAPLAYEROBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_MEDIAPLAYER_MEDIAPLAYEROBSERVERINTERFACE_H_ + #include +#include +#include -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_MEDIA_PLAYER_MEDIA_PLAYER_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_MEDIA_PLAYER_MEDIA_PLAYER_OBSERVER_INTERFACE_H_ +#include + +#include "MediaPlayerInterface.h" namespace alexaClientSDK { namespace avsCommon { @@ -27,78 +31,144 @@ namespace mediaPlayer { /** * A player observer will receive notifications when the player starts playing or when it stops playing a stream. - * A pointer to the @c MediaPlayerObserverInterface needs to be provided to a @c MediaPlayer for it to notify the observer. + * A pointer to the @c MediaPlayerObserverInterface needs to be provided to a @c MediaPlayer for it to notify the + * observer. */ class MediaPlayerObserverInterface { public: + /// A type that identifies which source is currently being operated on. + using SourceId = MediaPlayerInterface::SourceId; + + /// The different types of metadata "stream tags". + enum class TagType { STRING, UINT, INT, DOUBLE, BOOLEAN }; + + /** + * Structure to hold the key, value and type of tag that is found. + * + * @param key Key of the stream tag + * @param value Value of the stream tag + * @param type Type of the stream tag. + */ + struct TagKeyValueType { + /// Key extracted from the stream tag. + std::string key; + /// Value extracted from the stream tag. + std::string value; + /// Type of the stream tag. + MediaPlayerObserverInterface::TagType type; + }; + + typedef std::vector VectorOfTags; + /** * Destructor. */ virtual ~MediaPlayerObserverInterface() = default; /** - * This is an indication to the observer that the @c MediaPlayer has starting playing the audio data. + * This is an indication to the observer that the @c MediaPlayer has started playing the source specified by + * the id. * - * @note The observer has to return soon. Otherwise this could block the @c MediaPlayer from processing other signals - * or playback. + * @note The observer must quickly return to quickly from this callback. Failure to do so could block the @c + * MediaPlayer from further processing. */ - virtual void onPlaybackStarted() = 0; + virtual void onPlaybackStarted(SourceId id) = 0; /** - * This is an indication to the observer that the @c MediaPlayer has starting finished the audio data. + * This is an indication to the observer that the @c MediaPlayer finished the source. * - * @note The observer has to return soon. Otherwise this could block the @c MediaPlayer from processing other signals - * or playback. + * @note The observer must quickly return to quickly from this callback. Failure to do so could block the @c + * MediaPlayer from further processing. + * + * @param id The id of the source to which this callback corresponds to. */ - virtual void onPlaybackFinished() = 0; + virtual void onPlaybackFinished(SourceId id) = 0; /** * This is an indication to the observer that the @c MediaPlayer encountered an error. Errors can occur during * playback. * - * @note The observer has to return soon. Otherwise this could block the @c MediaPlayer from processing other signals - * or playback. + * @note The observer must quickly return from this callback. Failure to do so could block the @c MediaPlayer from + * further processing. + * + * @param id The id of the source to which this callback corresponds to. + * @param type The type of error encountered by the @c MediaPlayerInterface. + * @param error The error encountered by the @c MediaPlayerInterface. + */ + virtual void onPlaybackError(SourceId id, const ErrorType& type, std::string error) = 0; + + /** + * This is an indication to the observer that the @c MediaPlayer has paused playing the source. + * + * @note The observer must quickly return from this callback. Failure to do so could block the @c MediaPlayer from + * further processing. + + * @param id The id of the source to which this callback corresponds to. */ - virtual void onPlaybackError(std::string error) = 0; + virtual void onPlaybackPaused(SourceId id){}; /** - * This is an indication to the observer that the @c MediaPlayer has paused playing the audio data. + * This is an indication to the observer that the @c MediaPlayer has resumed playing the source. * - * @note The observer has to return soon. Otherwise this could block the @c MediaPlayer from processing other signals - * or playback. + * @note The observer must quickly return from this callback. Failure to do so could block the @c MediaPlayer from + * further processing. + * + * @param id The id of the source to which this callback corresponds to. */ - virtual void onPlaybackPaused() {}; + virtual void onPlaybackResumed(SourceId id){}; /** - * This is an indication to the observer that the @c MediaPlayer has resumed playing the audio data. + * This is an indication to the observer that the @c MediaPlayer has stopped the source. + * + * @note The observer must quickly return from this callback. Failure to do so could block the @c MediaPlayer from + * further processing. * - * @note The observer has to return soon. Otherwise this could block the @c MediaPlayer from processing other signals - * or playback. + * @param id The id of the source to which this callback corresponds to. */ - virtual void onPlaybackResumed() {}; + virtual void onPlaybackStopped(SourceId id){}; /** * This is an indication to the observer that the @c MediaPlayer is experiencing a buffer underrun. * This will only be sent after playback has started. Playback will be paused until the buffer is filled. * - * @note The observer has to return soon. Otherwise this could block the @c MediaPlayer from processing other signals - * or playback. + * @note The observer must quickly return from this callback. Failure to do so could block the @c MediaPlayer from + * further processing. + * + * @param id The id of the source to which this callback corresponds to. */ - virtual void onBufferUnderrun() {} + virtual void onBufferUnderrun(SourceId id) { + } /** - * This is an indication to the observer that the @c MediaPlayer's buffer has refilled. This will only be sent after playback - * has started. Playback will resume. + * This is an indication to the observer that the @c MediaPlayer's buffer has refilled. This will only be sent after + * playback has started. Playback will resume. + * + * @note The observer must quickly return from this callback. Failure to do so could block the @c MediaPlayer from + * further processing. + * + * @param id The id of the source to which this callback corresponds to. + */ + virtual void onBufferRefilled(SourceId id) { + } + + /** + * This is an indication to the observer that the @c MediaPlayer has found tags in the stream. + * Tags are key value pairs extracted from the metadata of the stream. There can be multiple + * tags that have the same key. Vector preserves the order of insertion + * (push_back) which may come in handy. + * + * @note The observer must quickly returnfrom this callback. Failure to do so could block the @c MediaPlayer from + * further processing. * - * @note The observer has to return soon. Otherwise this could block the @c MediaPlayer from processing other signals - * or playback. + * @param id The id of the source to which this callback corresponds to. + * @param vectorOfTags The vector containing stream tags. */ - virtual void onBufferRefilled() {} + virtual void onTags(SourceId id, std::unique_ptr vectorOfTags){}; }; -} // namespace mediaPlayer -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace mediaPlayer +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_MEDIA_PLAYER_MEDIA_PLAYER_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_MEDIAPLAYER_MEDIAPLAYEROBSERVERINTERFACE_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Memory/Memory.h b/AVSCommon/Utils/include/AVSCommon/Utils/Memory/Memory.h index 79eb4ea98d..3afd70709a 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Memory/Memory.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Memory/Memory.h @@ -1,7 +1,5 @@ /* - * Memory.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -20,8 +18,8 @@ * retrieved Dec. 21, 2016, as indicated below. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_MEMORY_MEMORY_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_MEMORY_MEMORY_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_MEMORY_MEMORY_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_MEMORY_MEMORY_H_ #include #include @@ -32,16 +30,15 @@ namespace utils { namespace memory { // START Herb Sutter code sample adaptation -template -std::unique_ptr make_unique(Args&&... args) -{ +template +std::unique_ptr make_unique(Args&&... args) { return std::unique_ptr(new T(std::forward(args)...)); } // END Herb Sutter code sample adaptation -} // namespace memory -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace memory +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_MEMORY_MEMORY_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_MEMORY_MEMORY_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Metrics.h b/AVSCommon/Utils/include/AVSCommon/Utils/Metrics.h new file mode 100644 index 0000000000..f2586e9ebf --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Metrics.h @@ -0,0 +1,159 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_METRICS_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_METRICS_H_ + +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { + +const std::string METRICS_TAG = ":METRICS:"; + +class Metrics { +public: + /** + * Enum indicating the location where the metric message was issued + */ + enum Location { + // Enqueue message in ADSL module + ADSL_ENQUEUE, + + // Dequeue message in ADSL module + ADSL_DEQUEUE, + + // SpeechSynthesizer receive the message + SPEECH_SYNTHESIZER_RECEIVE, + + // AudioInputProcessor receive the message + AIP_RECEIVE, + + // AudioInputProcessor send the message + AIP_SEND, + + // Used when issuing an extra metric log for missing Ids + BUILDING_MESSAGE + }; + + /** + * Add @c Metric related info to a @c LogEntry + * @param logEntry The @c LogEntry object to add the metric info. + * @param name @c Event/@c Directive name. + * @param messageId The message ID. + * @param dialogRequestId The dialog request ID of the message + * @param location The location in which the log was issued. + * @return The given @c LogEntry with the metric info added. + */ + static logger::LogEntry& d( + alexaClientSDK::avsCommon::utils::logger::LogEntry& logEntry, + const std::string& name, + const std::string& messageId, + const std::string& dialogRequestId, + Location location); + + /** + * Add metric related info to a @c LogEntry + * @param logEntry The @c LogEntry object to add the metric info. + * @param msg The @c AVSMessage related to this metric + * @param location The location in which the log was issued. + * @return The given @c LogEntry with the metric info added. + */ + static logger::LogEntry& d( + alexaClientSDK::avsCommon::utils::logger::LogEntry& logEntry, + const std::shared_ptr msg, + Location location); + +private: + /** + * Translate @c Location into a string representation. + * @param location A @c Location to translate. + * @return a String representation of the given location. + */ + static const std::string locationToString(Location location); +}; + +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#ifdef ACSDK_LATENCY_LOG_ENABLED + +/** + * Send a METRIC log line. + * + * @param entry The text (or builder of the text) for the log entry. + */ +#define ACSDK_METRIC_WITH_ENTRY(entry) ACSDK_CRITICAL(entry) + +/** + * Send a Metric log line. + * + * @param TAG The name of the source of the log entry + * @param name The Event \ Directive name. + * @param messageId The message ID of the Event \ directive + * @param dialogRequestId The dialog request ID of the Event \ Directive + * @param location The location where this message was issued. + */ +#define ACSDK_METRIC_IDS(TAG, name, messageId, dialogRequestId, location) \ + do { \ + alexaClientSDK::avsCommon::utils::logger::LogEntry logEntry( \ + TAG, __func__ + alexaClientSDK::avsCommon::utils::METRICS_TAG); \ + alexaClientSDK::avsCommon::utils::Metrics::d(logEntry, name, messageId, dialogRequestId, location); \ + ACSDK_METRIC_WITH_ENTRY(logEntry); \ + } while (false) + +/** + * Send a Metric log line. + * + * @param TAG The name of the source of the log entry + * @param msg The text (or builder of the text) for the log entry. + * @param location The location where this message was issued. + */ +#define ACSDK_METRIC_MSG(TAG, msg, location) \ + do { \ + alexaClientSDK::avsCommon::utils::logger::LogEntry logEntry( \ + TAG, __func__ + alexaClientSDK::avsCommon::utils::METRICS_TAG); \ + alexaClientSDK::avsCommon::utils::Metrics::d(logEntry, msg, location); \ + ACSDK_METRIC_WITH_ENTRY(logEntry); \ + } while (false) + +#else // ACSDK_LATENCY_LOG_ENABLED + +/** + * Compile out a METRIC log line. + * + * @param TAG The name of the source of the log entry + * @param name The Event \ Directive name. + * @param messageId The message ID of the Event \ directive + * @param dialogRequestId The dialog request ID of the Event \ Directive + * @param location The location where this message was issued. + */ +#define ACSDK_METRIC_IDS(TAG, name, messageId, dialogRequestId, location) + +/** + * Compile out a METRIC log line. + * + * @param TAG The name of the source of the log entry + * @param msg The text (or builder of the text) for the log entry. + * @param location The location where this message was issued. + */ +#define ACSDK_METRIC_MSG(TAG, msg, location) + +#endif // ACSDK_LATENCY_LOG_ENABLED + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_METRICS_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/PlaylistParser/PlaylistParserInterface.h b/AVSCommon/Utils/include/AVSCommon/Utils/PlaylistParser/PlaylistParserInterface.h index 52cc0becbd..6fc6be90f2 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/PlaylistParser/PlaylistParserInterface.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/PlaylistParser/PlaylistParserInterface.h @@ -1,7 +1,5 @@ /* - * PlaylistParserInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,11 +13,12 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_PLAYLIST_PARSER_PLAYLIST_PARSER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_PLAYLIST_PARSER_PLAYLIST_PARSER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_PLAYLISTPARSER_PLAYLISTPARSERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_PLAYLISTPARSER_PLAYLISTPARSERINTERFACE_H_ #include #include +#include #include "PlaylistParserObserverInterface.h" @@ -29,10 +28,19 @@ namespace utils { namespace playlistParser { /** - * A PlaylistParser parses playlists. + * An interface that can be implemented to parse playlists in a DFS manner. */ class PlaylistParserInterface { public: + /// The different types of playlists that are currently supported + enum class PlaylistType { + M3U, + + M3U8, + + PLS + }; + /** * Destructor. */ @@ -40,20 +48,25 @@ class PlaylistParserInterface { /** * This function returns immediately. It parses the playlist specified in the @c url asynchronously. The playlist - * parsing is a DFS parsing. If the playlist contains a link to another playlist, then it will proceed to parse - * that before proceeding. The result of parsing the playlist is notified to the - * @c PlaylistParserObserverInterface via the @c onPlaylistParsed call. + * will be parsed in a DFS manner. If the playlist contains a link to another playlist, then it will proceed to + * parse that before proceeding. Callbacks willbe issued @c PlaylistParserObserverInterface via the @c + * onPlaylistParsed call whenever a entry has been parsed. * * @param url The url of the playlist to be parsed. - * @param observer The observer to be notified of when playlist parsing is complete. - * @return @c true if it was successful in adding a new playlist parsing request to the queue @c else false. + * @param observer The observer to be notified of playlist parsing. + * @param playlistTypesToNotBeParsed The playlist types to skip parsing of. + * @return 0 if adding a new playlist parsing request to the queue failed or the id of the request otherwise. This + * id will be included in the callback to notify the observer which original request the callback is referencing. */ - virtual bool parsePlaylist(const std::string& url, std::shared_ptr observer) = 0; + virtual int parsePlaylist( + std::string url, + std::shared_ptr observer, + std::vector playlistTypesToNotBeParsed = std::vector()) = 0; }; -} // namespace playlistParser -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace playlistParser +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_PLAYLIST_PARSER_PLAYLIST_PARSER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_PLAYLISTPARSER_PLAYLISTPARSERINTERFACE_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/PlaylistParser/PlaylistParserObserverInterface.h b/AVSCommon/Utils/include/AVSCommon/Utils/PlaylistParser/PlaylistParserObserverInterface.h index 6882cc8221..be057bde7e 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/PlaylistParser/PlaylistParserObserverInterface.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/PlaylistParser/PlaylistParserObserverInterface.h @@ -1,7 +1,5 @@ /* - * PlaylistParserObserverInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,9 +13,10 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_PLAYLIST_PARSER_PLAYLIST_PARSER_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_PLAYLIST_PARSER_PLAYLIST_PARSER_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_PLAYLISTPARSER_PLAYLISTPARSEROBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_PLAYLISTPARSER_PLAYLISTPARSEROBSERVERINTERFACE_H_ +#include #include #include #include @@ -32,20 +31,17 @@ namespace playlistParser { */ enum class PlaylistParseResult { - /// The playlist was parsed successfully. - PARSE_RESULT_SUCCESS, - - /// The playlist could not be handled. - PARSE_RESULT_UNHANDLED, - - /// There was an error parsing the playlist. - PARSE_RESULT_ERROR, + /// The playlist has been fully parsed successfully. This indicates that parsing of the playlist has completed. + SUCCESS, - /// The playlist was ignored due to its scheme or MIME type. - PARSE_RESULT_IGNORED, + /** + * The playlist parsing has encountered an error and will abort parsing. In this case, the url in the callback will + * not be valid. + */ + ERROR, - ///Parsing of the playlist was cancelled part-way through. - PARSE_RESULT_CANCELLED + /// The playlist parsing is still ongoing. + STILL_ONGOING }; /** @@ -53,22 +49,30 @@ enum class PlaylistParseResult { */ class PlaylistParserObserverInterface { public: + /// An invalid duration. + static constexpr std::chrono::milliseconds INVALID_DURATION = std::chrono::milliseconds(-1); + /** * Destructor. */ virtual ~PlaylistParserObserverInterface() = default; /** - * Notification that the playlist parsing has been completed. + * Notification that an entry has been parsed. * - * @param playlistUrl The playlist that was parsed. - * @param urls A list of the urls extracted from the playlist. + * @param requestId The id of the callback to connect this callback to an original request. + * @param url An entry that has been extracted. * @param parseResult The result of parsing the playlist. + * @param duration A duration in milliseconds of the playlist entry, if it was able to be deduced based on + * available playlist metadata. + * + * @note This function is always called from a single thread in PlayListParser. */ - virtual void onPlaylistParsed( - std::string playlistUrl, - std::queue urls, - PlaylistParseResult parseResult) = 0; + virtual void onPlaylistEntryParsed( + int requestId, + std::string url, + PlaylistParseResult parseResult, + std::chrono::milliseconds duration = INVALID_DURATION) = 0; }; /** @@ -80,28 +84,22 @@ class PlaylistParserObserverInterface { */ inline std::ostream& operator<<(std::ostream& stream, const PlaylistParseResult& result) { switch (result) { - case PlaylistParseResult::PARSE_RESULT_SUCCESS: - stream << "PARSE_RESULT_SUCCESS"; - break; - case PlaylistParseResult::PARSE_RESULT_UNHANDLED: - stream << "PARSE_RESULT_UNHANDLED"; - break; - case PlaylistParseResult::PARSE_RESULT_ERROR: - stream << "PARSE_RESULT_ERROR"; + case PlaylistParseResult::SUCCESS: + stream << "SUCCESS"; break; - case PlaylistParseResult::PARSE_RESULT_IGNORED: - stream << "PARSE_RESULT_IGNORED"; + case PlaylistParseResult::ERROR: + stream << "ERROR"; break; - case PlaylistParseResult::PARSE_RESULT_CANCELLED: - stream << "PARSE_RESULT_CANCELLED"; + case PlaylistParseResult::STILL_ONGOING: + stream << "STILL_ONGOING"; break; } return stream; } -} // namespace playlistParser -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace playlistParser +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_PLAYLIST_PARSER_PLAYLIST_PARSER_OBSERVER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_PLAYLISTPARSER_PLAYLISTPARSEROBSERVERINTERFACE_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/RequiresShutdown.h b/AVSCommon/Utils/include/AVSCommon/Utils/RequiresShutdown.h index 6553bb5123..39c0816aab 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/RequiresShutdown.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/RequiresShutdown.h @@ -1,7 +1,5 @@ /* - * RequiresShutdown.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_REQUIRES_SHUTDOWN_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_REQUIRES_SHUTDOWN_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_REQUIRESSHUTDOWN_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_REQUIRESSHUTDOWN_H_ #include #include @@ -83,8 +81,8 @@ class RequiresShutdown { bool m_isShutdown; }; -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_REQUIRES_SHUTDOWN_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_REQUIRESSHUTDOWN_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/RetryTimer.h b/AVSCommon/Utils/include/AVSCommon/Utils/RetryTimer.h new file mode 100644 index 0000000000..f521a222e2 --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/RetryTimer.h @@ -0,0 +1,83 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_RETRYTIMER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_RETRYTIMER_H_ + +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { + +/** + * A @c RetryTimer holds information needed to compute a retry time for a thread + * when waiting on events. + */ +class RetryTimer { +public: + /** + * Constructor. + * + * @param retryTable The table with entries for retry times. + */ + RetryTimer(const std::vector& retryTable); + + /** + * Constructor. + * + * @param retryTable The table with entries for retry times. + * @param randomizationPercentage The randomization percentage to be used while computing the distribution range + * around the retry time. + */ + RetryTimer(const std::vector& retryTable, int randomizationPercentage); + + /** + * Constructor. + * + * @param retryTable The table with entries for retry times. + * @param decreasePercentage The lower bound of the retry time duration. + * @param increasePercentage The upper bound of the retry time duration. + */ + RetryTimer(const std::vector& retryTable, int decreasePercentage, int increasePercentage); + + /** + * Method to return a randomized delay in milliseconds when threads are waiting on an event. + * + * @param retryCount The number of retries. + * @return delay in milliseconds. + */ + std::chrono::milliseconds calculateTimeToRetry(int retryCount) const; + +private: + /// Retry table with retry time in milliseconds. + const std::vector m_RetryTable; + + /// Size of the retry table. + const size_t m_RetrySize; + + /// The lower bound (as a percentage) for randomizing the next retry time. + const int m_RetryDecreasePercentage; + + /// The upper bound (as a percentage) for randomizing the next retry time. + const int m_RetryIncreasePercentage; +}; + +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_RETRYTIMER_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/SDKVersion.h b/AVSCommon/Utils/include/AVSCommon/Utils/SDKVersion.h new file mode 100644 index 0000000000..0840b16617 --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/SDKVersion.h @@ -0,0 +1,55 @@ +/* + * SDKVersion.h + * + * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDKVERSION_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDKVERSION_H_ + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { + +/// These functions are responsible for providing access to the current SDK version. +/// NOTE: To make changes to this file you *MUST* do so via SDKVersion.h.in. +namespace sdkVersion{ + +inline static std::string getCurrentVersion(){ + return "0.0.0"; +} + +inline static int getMajorVersion(){ + return 0; +} + +inline static int getMinorVersion(){ + return 0; +} + +inline static int getPatchVersion(){ + return 0; +} + + + +} // namespace sdkVersion +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDKVERSION_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/SDKVersion.h.in b/AVSCommon/Utils/include/AVSCommon/Utils/SDKVersion.h.in new file mode 100644 index 0000000000..ae77b508fc --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/SDKVersion.h.in @@ -0,0 +1,55 @@ +/* + * SDKVersion.h + * + * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDKVERSION_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDKVERSION_H_ + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { + +/// These functions are responsible for providing access to the current SDK version. +/// NOTE: To make changes to this file you *MUST* do so via SDKVersion.h.in. +namespace sdkVersion{ + +inline static std::string getCurrentVersion(){ + return "@PROJECT_VERSION@"; +} + +inline static int getMajorVersion(){ + return @PROJECT_VERSION_MAJOR@; +} + +inline static int getMinorVersion(){ + return @PROJECT_VERSION_MINOR@; +} + +inline static int getPatchVersion(){ + return @PROJECT_VERSION_PATCH@; +} + + + +} // namespace sdkVersion +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDKVERSION_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/SDS/BufferLayout.h b/AVSCommon/Utils/include/AVSCommon/Utils/SDS/BufferLayout.h index 8d8d4696b1..bd6b03e717 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/SDS/BufferLayout.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/SDS/BufferLayout.h @@ -1,7 +1,5 @@ /* - * BufferLayout.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_BUFFER_LAYOUT_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_BUFFER_LAYOUT_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_BUFFERLAYOUT_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_BUFFERLAYOUT_H_ #include #include @@ -36,7 +34,7 @@ namespace sds { * This is a nested class inside @c SharedDatastream which defines the layout of a @c Buffer for use with a * @c SharedDataStream. This layout begins with a fixed @c Header structure, followed by two arrays of * @c Reader @c Indexes, with the remainder allocated to data. All four of these sections are aligned on a 64-bit - * boundary. + * boundary. */ template class SharedDataStream::BufferLayout { @@ -45,7 +43,7 @@ class SharedDataStream::BufferLayout { static const uint32_t MAGIC_NUMBER = 0x53445348; /// Version of this header layout. - static const uint32_t VERSION = 0; + static const uint32_t VERSION = 2; /** * The constructor only initializes a shared pointer to the provided buffer. Attaching and/or initializing is @@ -59,7 +57,7 @@ class SharedDataStream::BufferLayout { ~BufferLayout(); /** - * This structure defines the header fields for the @c Buffer. The header fields in the shared @c Buffer are the + * This structure defines the header fields for the @c Buffer. The header fields in the shared @c Buffer are the * mechanism by which SDS instances in different processes share state. When initializing a new @c Buffer, this * struct must be placement-constructed at the base of the @c Buffer. When accessing a pre-initialized @c Buffer, * this struct must be reinterpret_cast from the base of the @c Buffer. @@ -103,6 +101,12 @@ class SharedDataStream::BufferLayout { /// This field contains the mutex used by @c dataAvailableConditionVariable. Mutex dataAvailableMutex; + /** + * This field contains the condition variable used to notify @c Writers that space is available. Note that + * this condition variable does not have a dedicated mutex; the condition is protected by backwardSeekMutex. + */ + ConditionVariable spaceAvailableConditionVariable; + /** * This field contains a mutex used to temporarily hold off @c Readers from seeking backwards in the buffer * while a @c Reader is updating @c oldestUnconsumedCursor. The is necessary to prevent a race condition where @@ -114,6 +118,9 @@ class SharedDataStream::BufferLayout { /// This field indicates whether there is an enabled (not closed) @c Writer. AtomicBool isWriterEnabled; + /// This field indicates that a @c Writer had at one point been enabled and then closed. + AtomicBool hasWriterBeenClosed; + /** * This mutex is used to protect creation of the writer. In particular, it is locked when attempting to add * the writer so that there are no races between overlapping calls to @c createWriter(). @@ -253,7 +260,7 @@ class SharedDataStream::BufferLayout { * @note This function does not require the caller to hold Header::readerEnableMutex. Reading the enabled flag is * an atomic operation in and of itself. It is up to the caller to determine whether there are subsequent * operations which depend on the enabled state that might require holding the mutex to avoid a race condition. - * + * * @param id The id of the reader to check the enabled status of. * @return @c true if the specified reader is enabled, else @c false. */ @@ -410,9 +417,13 @@ template const std::string SharedDataStream::BufferLayout::TAG = "SdsBufferLayout"; template -SharedDataStream::BufferLayout::BufferLayout(std::shared_ptr buffer): - m_buffer{buffer}, m_readerEnabledArray{nullptr}, m_readerCursorArray{nullptr}, - m_readerCloseIndexArray{nullptr}, m_dataSize{0}, m_data{nullptr} { +SharedDataStream::BufferLayout::BufferLayout(std::shared_ptr buffer) : + m_buffer{buffer}, + m_readerEnabledArray{nullptr}, + m_readerCursorArray{nullptr}, + m_readerCloseIndexArray{nullptr}, + m_dataSize{0}, + m_data{nullptr} { } template @@ -455,16 +466,16 @@ bool SharedDataStream::BufferLayout::init(size_t wordSize, size_t maxReaders) // Make sure parameters are not too large to store. if (wordSize > std::numeric_limits::max()) { logger::acsdkError(logger::LogEntry(TAG, "initFailed") - .d("reason", "wordSizeTooLarge") - .d("wordSize", wordSize) - .d("wordSizeLimit", std::numeric_limits::max())); + .d("reason", "wordSizeTooLarge") + .d("wordSize", wordSize) + .d("wordSizeLimit", std::numeric_limits::max())); return false; } if (maxReaders > std::numeric_limits::max()) { logger::acsdkError(logger::LogEntry(TAG, "initFailed") - .d("reason", "maxReadersTooLarge") - .d("maxReaders", maxReaders) - .d("maxReadersLimit", std::numeric_limits::max())); + .d("reason", "maxReadersTooLarge") + .d("maxReaders", maxReaders) + .d("maxReadersLimit", std::numeric_limits::max())); return false; } @@ -472,14 +483,14 @@ bool SharedDataStream::BufferLayout::init(size_t wordSize, size_t maxReaders) calculateAndCacheConstants(wordSize, maxReaders); // Default construction of the Header. - auto header = new(getHeader()) Header; + auto header = new (getHeader()) Header; // Default construction of the reader arrays. size_t id; for (id = 0; id < maxReaders; ++id) { - new(m_readerEnabledArray + id) AtomicBool; - new(m_readerCursorArray + id) AtomicIndex; - new(m_readerCloseIndexArray + id) AtomicIndex; + new (m_readerEnabledArray + id) AtomicBool; + new (m_readerCursorArray + id) AtomicIndex; + new (m_readerCloseIndexArray + id) AtomicIndex; } // Header field initialization. @@ -489,6 +500,7 @@ bool SharedDataStream::BufferLayout::init(size_t wordSize, size_t maxReaders) header->wordSize = wordSize; header->maxReaders = maxReaders; header->isWriterEnabled = false; + header->hasWriterBeenClosed = false; header->writeStartCursor = 0; header->writeEndCursor = 0; header->oldestUnconsumedCursor = 0; @@ -510,23 +522,23 @@ bool SharedDataStream::BufferLayout::attach() { auto header = getHeader(); if (header->magic != MAGIC_NUMBER) { logger::acsdkError(logger::LogEntry(TAG, "attachFailed") - .d("reason", "magicNumberMismatch") - .d("magicNumber", header->magic) - .d("expectedMagicNumber", std::to_string(MAGIC_NUMBER))); + .d("reason", "magicNumberMismatch") + .d("magicNumber", header->magic) + .d("expectedMagicNumber", std::to_string(MAGIC_NUMBER))); return false; } if (header->version != VERSION) { logger::acsdkError(logger::LogEntry(TAG, "attachFailed") - .d("reason", "incompatibleVersion") - .d("version", header->version) - .d("expectedVersion", std::to_string(VERSION))); + .d("reason", "incompatibleVersion") + .d("version", header->version) + .d("expectedVersion", std::to_string(VERSION))); return false; } if (header->traitsNameHash != stableHash(T::traitsName)) { logger::acsdkError(logger::LogEntry(TAG, "attachFailed") - .d("reason", "traitsNameHashMismatch") - .d("hash", header->traitsNameHash) - .d("expectedHash", stableHash(T::traitsName))); + .d("reason", "traitsNameHashMismatch") + .d("hash", header->traitsNameHash) + .d("expectedHash", stableHash(T::traitsName))); return false; } @@ -537,10 +549,10 @@ bool SharedDataStream::BufferLayout::attach() { return false; } if (std::numeric_limitsreferenceCount)>::max() == header->referenceCount) { - logger::acsdkError(logger::LogEntry(TAG, "attachFailed") - .d("reason", "bufferMaxUsersExceeded") - .d("numUsers", header->referenceCount) - .d("maxNumUsers", std::numeric_limitsreferenceCount)>::max)); + logger::acsdkError(logger::LogEntry(TAG, "attachFailed") + .d("reason", "bufferMaxUsersExceeded") + .d("numUsers", header->referenceCount) + .d("maxNumUsers", std::numeric_limitsreferenceCount)>::max())); return false; } ++header->referenceCount; @@ -571,7 +583,7 @@ void SharedDataStream::BufferLayout::detach() { m_readerEnabledArray[id].~AtomicBool(); } - //Destruction of the Header. + // Destruction of the Header. header->~Header(); } @@ -597,9 +609,7 @@ typename SharedDataStream::Index SharedDataStream::BufferLayout::wordsUnti template size_t SharedDataStream::BufferLayout::calculateDataOffset(size_t wordSize, size_t maxReaders) { - return alignSizeTo( - calculateReaderCloseIndexArrayOffset(maxReaders) + (maxReaders * sizeof(AtomicIndex)), - wordSize); + return alignSizeTo(calculateReaderCloseIndexArrayOffset(maxReaders) + (maxReaders * sizeof(AtomicIndex)), wordSize); } template @@ -611,6 +621,8 @@ void SharedDataStream::BufferLayout::updateOldestUnconsumedCursor() { template void SharedDataStream::BufferLayout::updateOldestUnconsumedCursorLocked() { + auto header = getHeader(); + // Note: as an optimization, we could skip this function if Writer policy is nonblockable (ACSDK-251). // The only barrier to a blocking writer overrunning a reader is oldestUnconsumedCursor, so we have to be careful @@ -618,15 +630,15 @@ void SharedDataStream::BufferLayout::updateOldestUnconsumedCursorLocked() { // without moving oldestUnconsumedCursor. Note that readers can continue to read while we are looping; it means // oldest may not be completely accurate, but it will always be older than the readers because they are reading // away from it. Also note that backwards seeks (which would break the invariant) are prevented with a mutex which - // is held while this function is called. - auto header = getHeader(); - Index oldest = header->writeStartCursor; + // is held while this function is called. Also note that all read cursors may be in the future, so we start with + // an unlimited barrier and work back from there. + Index oldest = std::numeric_limits::max(); for (size_t id = 0; id < header->maxReaders; ++id) { // Note that this code is calling isReaderEnabled() without holding readerEnableMutex. On the surface, this // appears to be a race condition because a reader may be disabled and/or re-enabled before the subsequent code // reads the cursor, but it turns out to be safe because: // - if a reader is enabled, its cursor is valid - // - if a reader becomes disabled, its cursor doesn't change + // - if a reader becomes disabled, its cursor moves to writeCursor (which will never be the oldest) // - if a reader becomes re-enabled, its cursor defaults to writeCursor (which will never be the oldest) // - if a reader is created that wants to be at an older index, it gets there by doing a backward seek (which // is locked when this function is called) @@ -635,6 +647,11 @@ void SharedDataStream::BufferLayout::updateOldestUnconsumedCursorLocked() { } } + // If no barrier was found, block at the write cursor so that we retain data until a reader comes along to read it. + if (std::numeric_limits::max() == oldest) { + oldest = header->writeStartCursor; + } + // Now that we've measured the oldest cursor, we can safely update oldestUnconsumedCursor with no risk of an // overrun of any readers. @@ -643,11 +660,15 @@ void SharedDataStream::BufferLayout::updateOldestUnconsumedCursorLocked() { // ('oldestUnconsumedCursor') if it is older than it needs to be. if (oldest > header->oldestUnconsumedCursor) { header->oldestUnconsumedCursor = oldest; + + // Notify the writer(s). + // Note: as an optimization, we could skip this if there are no blocking writers (ACSDK-251). + header->spaceAvailableConditionVariable.notify_all(); } } template -uint32_t SharedDataStream::BufferLayout::stableHash(const char * string) { +uint32_t SharedDataStream::BufferLayout::stableHash(const char* string) { // Simple, stable hash which XORs all bytes of string into the hash value. uint32_t hashed = 0; size_t pos = 0; @@ -688,8 +709,7 @@ void SharedDataStream::BufferLayout::calculateAndCacheConstants(size_t wordSi auto buffer = reinterpret_cast(m_buffer->data()); m_readerEnabledArray = reinterpret_cast(buffer + calculateReaderEnabledArrayOffset()); m_readerCursorArray = reinterpret_cast(buffer + calculateReaderCursorArrayOffset(maxReaders)); - m_readerCloseIndexArray = reinterpret_cast( - buffer + calculateReaderCloseIndexArrayOffset(maxReaders)); + m_readerCloseIndexArray = reinterpret_cast(buffer + calculateReaderCloseIndexArrayOffset(maxReaders)); m_dataSize = (m_buffer->size() - calculateDataOffset(wordSize, maxReaders)) / wordSize; m_data = buffer + calculateDataOffset(wordSize, maxReaders); } @@ -699,9 +719,9 @@ bool SharedDataStream::BufferLayout::isAttached() const { return m_data != nullptr; } -} // namespace sds -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sds +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_BUFFER_LAYOUT_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_BUFFERLAYOUT_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/SDS/InProcessSDS.h b/AVSCommon/Utils/include/AVSCommon/Utils/SDS/InProcessSDS.h index 0fdaffdd34..0129289efc 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/SDS/InProcessSDS.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/SDS/InProcessSDS.h @@ -1,7 +1,5 @@ /* - * InProcessSDS.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_IN_PROCESS_SDS_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_IN_PROCESS_SDS_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_INPROCESSSDS_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_INPROCESSSDS_H_ #include #include @@ -49,15 +47,15 @@ struct InProcessSDSTraits { using ConditionVariable = std::condition_variable; /// A unique identifier representing this combination of traits. - static constexpr const char * traitsName = "alexaClientSDK::avsCommon::utils::sds::InProcessSDSTraits"; + static constexpr const char* traitsName = "alexaClientSDK::avsCommon::utils::sds::InProcessSDSTraits"; }; /// Type alias for a SharedDataStream which works between threads in a single process. using InProcessSDS = SharedDataStream; -} // namespace sds -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sds +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_IN_PROCESS_SDS_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_INPROCESSSDS_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/SDS/Reader.h b/AVSCommon/Utils/include/AVSCommon/Utils/SDS/Reader.h index 8efcbb4fa7..132b582862 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/SDS/Reader.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/SDS/Reader.h @@ -1,7 +1,5 @@ /* - * Reader.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_READER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_READER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_READER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_READER_H_ #include #include @@ -27,6 +25,7 @@ #include "AVSCommon/Utils/Logger/LoggerUtils.h" #include "SharedDataStream.h" +#include "ReaderPolicy.h" namespace alexaClientSDK { namespace avsCommon { @@ -45,21 +44,7 @@ template class SharedDataStream::Reader { public: /// Specifies the policy to use for reading from the stream. - enum class Policy { - /** - * A @c NONBLOCKING @c Reader will return any available data (up to the amount requested) immediately, without - * waiting for more data to be written to the stream. If no data is available, a @c NONBLOCKING @c Reader will - * return @c Error::WOULDBLOCK. - */ - NONBLOCKING, - /** - * A @c BLOCKING @c Reader will wait for up to the specified timeout (or forever if `(timeout == 0)`) for data - * to become available. As soon as at least one word is available, the @c Reader will return up to the - * requested amount of data. If no data becomes available in the specified timeout, a @c BLOCKING @c Reader - * will return @c Error::TIMEDOUT. - */ - BLOCKING - }; + using Policy = ReaderPolicy; /// Specifies a reference to measure @c seek()/@c tell()/@c close() offsets against. enum class Reference { @@ -124,7 +109,7 @@ class SharedDataStream::Reader { * @note A stream is closed for the @c Reader if @c Reader::close() has been called on it, or if @c Writer::close() * has been called and the @c Reader has consumed all remaining data left in the stream when the @c Writer * closed. In the special case of a new stream, where no @c Writer has been created, the stream is not - * considered to be closed for the @c Reader; attempts to @c read() will either block or return @c WOULDBLOCK, + * considered to be closed for the @c Reader; attempts to @c read() will either block or return @c WOULDBLOCK, * depending on the @c Policy. */ ssize_t read(void* buf, size_t nWords, std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); @@ -132,9 +117,10 @@ class SharedDataStream::Reader { /** * This function moves the @c Reader to the specified location in the stream. If successful, subsequent calls to * @c read() will start from the new location. For this function to succeed, the specified location *must* point - * at data which still exists in the buffer; if the specified location points at old data which has already been - * overwritten, or new data which has not yet been written, the @c seek() call will fail. If the @c seek() call - * fails, the @c Reader position will remain unchanged. + * at data which has not been pushed out of the buffer; if the specified location points at old data which has + * already been overwritten, the @c seek() call will fail. If the specified location points at future data which + * does not yet exist in the buffer, the @c seek() call will succeed. If the @c seek() call fails, the @c Reader + * position will remain unchanged. * * @param offset The position (in @c wordSize words) in the stream, relative to @c reference, to move the @c Reader * to. @@ -148,6 +134,9 @@ class SharedDataStream::Reader { * * @param reference The position in the stream the return value is measured against. * @return The @c Reader's position (in @c wordSize words) in the stream relative to @c reference. + * + * @note For @c Reference::BEFORE_WRITER, if the read cursor points at a location in the future (after the writer), + * then the reader is not before the writer, so this function will return 0. */ Index tell(Reference reference = Reference::ABSOLUTE) const; @@ -221,11 +210,10 @@ template const std::string SharedDataStream::Reader::TAG = "SdsReader"; template -SharedDataStream::Reader::Reader( - Policy policy, - std::shared_ptr bufferLayout, - uint8_t id) : - m_policy{policy}, m_bufferLayout{bufferLayout}, m_id{id}, +SharedDataStream::Reader::Reader(Policy policy, std::shared_ptr bufferLayout, uint8_t id) : + m_policy{policy}, + m_bufferLayout{bufferLayout}, + m_id{id}, m_readerCursor{&m_bufferLayout->getReaderCursorArray()[m_id]}, m_readerCloseIndex{&m_bufferLayout->getReaderCloseIndexArray()[m_id]} { // Note - SharedDataStream::createReader() holds readerEnableMutex while calling this function. @@ -243,14 +231,15 @@ SharedDataStream::Reader::Reader( template SharedDataStream::Reader::~Reader() { - // Note: It is important that deleted readers do not change their cursor. This allows - // updateOldestUnconsumedCursor() to be thread-safe without holding readerEnableMutex. See - // updateOldestUnconsumedCursor() comments for further explanation. + // Note: We can't leave a reader with its cursor in the future; doing so can introduce a race condition in + // updateOldestUnconsumedCursor(). See updateOldestUnconsumedCursor() comments for further explanation. + seek(0, Reference::BEFORE_WRITER); + std::lock_guard lock(m_bufferLayout->getHeader()->readerEnableMutex); m_bufferLayout->disableReaderLocked(m_id); m_bufferLayout->updateOldestUnconsumedCursor(); } - + template ssize_t SharedDataStream::Reader::read(void* buf, size_t nWords, std::chrono::milliseconds timeout) { if (nullptr == buf) { @@ -271,15 +260,17 @@ ssize_t SharedDataStream::Reader::read(void* buf, size_t nWords, std::chrono: // Initial check for overrun. auto header = m_bufferLayout->getHeader(); - if ((header->writeEndCursor - *m_readerCursor) > m_bufferLayout->getDataSize()) { + if ((header->writeEndCursor >= *m_readerCursor) && + (header->writeEndCursor - *m_readerCursor) > m_bufferLayout->getDataSize()) { return Error::OVERRUN; } - // Figure out how much we can actually copy. std::unique_lock lock(header->dataAvailableMutex, std::defer_lock); if (Policy::BLOCKING == m_policy) { lock.lock(); } + + // Figure out how much we can actually copy. size_t wordsAvailable = tell(Reference::BEFORE_WRITER); if (0 == wordsAvailable) { if (header->writeEndCursor > 0 && !header->isWriterEnabled) { @@ -287,21 +278,25 @@ ssize_t SharedDataStream::Reader::read(void* buf, size_t nWords, std::chrono: } else if (Policy::NONBLOCKING == m_policy) { return Error::WOULDBLOCK; } else if (Policy::BLOCKING == m_policy) { + // Condition for returning from read: the Writer has been closed or there is data to read + auto predicate = [this, header] { + return header->hasWriterBeenClosed || tell(Reference::BEFORE_WRITER) > 0; + }; + if (std::chrono::milliseconds::zero() == timeout) { - header->dataAvailableConditionVariable.wait( - lock, - [this] { return tell(Reference::BEFORE_WRITER) > 0; }); - } else { - if (!header->dataAvailableConditionVariable.wait_for( - lock, - timeout, - [this] { return tell(Reference::BEFORE_WRITER) > 0; })) { - return Error::TIMEDOUT; - } + header->dataAvailableConditionVariable.wait(lock, predicate); + } else if (!header->dataAvailableConditionVariable.wait_for(lock, timeout, predicate)) { + return Error::TIMEDOUT; } } wordsAvailable = tell(Reference::BEFORE_WRITER); + + // If there is still no data, the writer has closed in the interim + if (0 == wordsAvailable) { + return Error::CLOSED; + } } + if (Policy::BLOCKING == m_policy) { lock.unlock(); } @@ -313,7 +308,7 @@ ssize_t SharedDataStream::Reader::read(void* buf, size_t nWords, std::chrono: if ((*m_readerCursor + nWords) > readerCloseIndex) { nWords = readerCloseIndex - *m_readerCursor; } - + // Split it across the wrap. size_t beforeWrap = m_bufferLayout->wordsUntilWrap(*m_readerCursor); if (beforeWrap > nWords) { @@ -326,9 +321,9 @@ ssize_t SharedDataStream::Reader::read(void* buf, size_t nWords, std::chrono: memcpy(buf8, m_bufferLayout->getData(*m_readerCursor), beforeWrap * getWordSize()); if (afterWrap > 0) { memcpy( - buf8 + (beforeWrap * getWordSize()), - m_bufferLayout->getData(*m_readerCursor + beforeWrap), - afterWrap * getWordSize()); + buf8 + (beforeWrap * getWordSize()), + m_bufferLayout->getData(*m_readerCursor + beforeWrap), + afterWrap * getWordSize()); } // Advance the read cursor. @@ -362,10 +357,10 @@ bool SharedDataStream::Reader::seek(Index offset, Reference reference) { case Reference::BEFORE_READER: if (offset > *m_readerCursor) { logger::acsdkError(logger::LogEntry(TAG, "seekFailed") - .d("reason", "seekBeforeStreamStart") - .d("reference", "BEFORE_READER") - .d("seekOffset", offset) - .d("readerCursor", m_readerCursor->load())); + .d("reason", "seekBeforeStreamStart") + .d("reference", "BEFORE_READER") + .d("seekOffset", offset) + .d("readerCursor", m_readerCursor->load())); return false; } absolute = *m_readerCursor - offset; @@ -373,10 +368,10 @@ bool SharedDataStream::Reader::seek(Index offset, Reference reference) { case Reference::BEFORE_WRITER: if (offset > *writeStartCursor) { logger::acsdkError(logger::LogEntry(TAG, "seekFailed") - .d("reason", "seekBeforeStreamStart") - .d("reference", "BEFORE_WRITER") - .d("seekOffset", offset) - .d("writeStartCursor", writeStartCursor->load())); + .d("reason", "seekBeforeStreamStart") + .d("reference", "BEFORE_WRITER") + .d("seekOffset", offset) + .d("writeStartCursor", writeStartCursor->load())); return false; } absolute = *writeStartCursor - offset; @@ -388,18 +383,9 @@ bool SharedDataStream::Reader::seek(Index offset, Reference reference) { // Don't seek beyond the close index. if (absolute > *m_readerCloseIndex) { logger::acsdkError(logger::LogEntry(TAG, "seekFailed") - .d("reason", "seekBeyondCloseIndex") - .d("position", absolute) - .d("readerCloseIndex", m_readerCloseIndex->load())); - return false; - } - - // Don't seek to future indices that have not been written yet. - if (absolute > *writeStartCursor) { - logger::acsdkError(logger::LogEntry(TAG, "seekFailed") - .d("reason", "seekUnwrittenIndices") - .d("position", absolute) - .d("writeStartCursor", writeStartCursor->load())); + .d("reason", "seekBeyondCloseIndex") + .d("position", absolute) + .d("readerCloseIndex", m_readerCloseIndex->load())); return false; } @@ -415,7 +401,7 @@ bool SharedDataStream::Reader::seek(Index offset, Reference reference) { // Note: If this is a backward seek, it is important that this check is performed while holding the // backwardSeekMutex to prevent a writer from starting to overwrite us between here and the m_readerCursor update // below. If this is not a backward seek, then the mutex is not held. - if (*writeEndCursor - absolute > m_bufferLayout->getDataSize()) { + if (*writeEndCursor >= absolute && *writeEndCursor - absolute > m_bufferLayout->getDataSize()) { logger::acsdkError(logger::LogEntry(TAG, "seekFailed").d("reason", "seekOverwrittenData")); return false; } @@ -441,7 +427,7 @@ typename SharedDataStream::Index SharedDataStream::Reader::tell(Reference case Reference::BEFORE_READER: return 0; case Reference::BEFORE_WRITER: - return *writeStartCursor - *m_readerCursor; + return (*writeStartCursor >= *m_readerCursor) ? *writeStartCursor - *m_readerCursor : 0; case Reference::ABSOLUTE: return *m_readerCursor; } @@ -466,10 +452,10 @@ void SharedDataStream::Reader::close(Index offset, Reference reference) { case Reference::BEFORE_WRITER: if (*writeStartCursor < offset) { logger::acsdkError(logger::LogEntry(TAG, "closeFailed") - .d("reason", "invalidIndex") - .d("reference", "BEFORE_WRITER") - .d("offset", offset) - .d("writeStartCursor", writeStartCursor->load())); + .d("reason", "invalidIndex") + .d("reference", "BEFORE_WRITER") + .d("offset", offset) + .d("writeStartCursor", writeStartCursor->load())); } else { absolute = *writeStartCursor - offset; } @@ -500,6 +486,8 @@ size_t SharedDataStream::Reader::getWordSize() const { template std::string SharedDataStream::Reader::errorToString(Error error) { switch (error) { + case Error::CLOSED: + return "CLOSED"; case Error::OVERRUN: return "OVERRUN"; case Error::WOULDBLOCK: @@ -513,9 +501,9 @@ std::string SharedDataStream::Reader::errorToString(Error error) { return "(unknown error " + to_string(error) + ")"; } -} // namespace sds -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sds +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_READER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_READER_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/SDS/ReaderPolicy.h b/AVSCommon/Utils/include/AVSCommon/Utils/SDS/ReaderPolicy.h new file mode 100644 index 0000000000..da89aecfb2 --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/SDS/ReaderPolicy.h @@ -0,0 +1,46 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_READERPOLICY_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_READERPOLICY_H_ + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace sds { + +/// Specifies the policy to use for reading from the stream. +enum class ReaderPolicy { + /** + * A @c NONBLOCKING @c Reader will return any available data (up to the amount requested) immediately, without + * waiting for more data to be written to the stream. If no data is available, a @c NONBLOCKING @c Reader will + * return @c Error::WOULDBLOCK. + */ + NONBLOCKING, + /** + * A @c BLOCKING @c Reader will wait for up to the specified timeout (or forever if `(timeout == 0)`) for data + * to become available. As soon as at least one word is available, the @c Reader will return up to the + * requested amount of data. If no data becomes available in the specified timeout, a @c BLOCKING @c Reader + * will return @c Error::TIMEDOUT. + */ + BLOCKING +}; + +} // namespace sds +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_READERPOLICY_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/SDS/SharedDataStream.h b/AVSCommon/Utils/include/AVSCommon/Utils/SDS/SharedDataStream.h index c37c36857c..9c500f5e5c 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/SDS/SharedDataStream.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/SDS/SharedDataStream.h @@ -1,7 +1,5 @@ /* - * SharedDataStream.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_SHARED_DATA_STREAM_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_SHARED_DATA_STREAM_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_SHAREDDATASTREAM_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_SHAREDDATASTREAM_H_ #include #include @@ -78,10 +76,10 @@ namespace sds { * methods: * @li @c DefaultConstructible `(std::is_default_constructible == true)`. * @li @c notify_all() unblocks any threads waiting for this condition variable. - * @li @c wait(lock) waits indefinitely for @c lock. - * @li @c wait(lock, predicate) waits indefinitely using @c lock for the @c predicate to be satisfied. + * @li @c wait(lock) waits indefinitely for @c lock. + * @li @c wait(lock, predicate) waits indefinitely using @c lock for the @c predicate to be satisfied. * @li @c wait_for(lock, timeout, predicate) waits using @c lock up to the specified @c timeout for the @c - * predicate to be satisfied. + * predicate to be satisfied. * @li If the stream will be shared between processes, the @c ConditionVariable type *must* be a PODType: * `(std::is_pod == true)`. * @@ -156,9 +154,9 @@ class SharedDataStream { * @return The new stream if @c buffer was successfully initialized, else @c nullptr. */ static std::unique_ptr create( - std::shared_ptr buffer, - size_t wordSize = 1, - size_t maxReaders = 1); + std::shared_ptr buffer, + size_t wordSize = 1, + size_t maxReaders = 1); /** * This function creates a new @c SharedDataStream using a preinitialized @c Buffer. This allows a stream to @@ -251,10 +249,10 @@ class SharedDataStream { * previous @c Reader will no longer be used to attempt to read from the stream. */ std::unique_ptr createReader( - size_t id, - typename Reader::Policy policy, - bool startWithNewData = false, - bool forceReplacement = false); + size_t id, + typename Reader::Policy policy, + bool startWithNewData = false, + bool forceReplacement = false); private: /** @@ -290,11 +288,11 @@ class SharedDataStream { * previous @c Reader will no longer be used to attempt to read from the stream. */ std::unique_ptr createReaderLocked( - size_t id, - typename Reader::Policy policy, - bool startWithNewData, - bool forceReplacement, - std::unique_lock* lock); + size_t id, + typename Reader::Policy policy, + bool startWithNewData, + bool forceReplacement, + std::unique_lock* lock); /** * The tag associated with log entries from this class. @@ -303,7 +301,6 @@ class SharedDataStream { /// The @c BufferLayout of the shared buffer. std::shared_ptr m_bufferLayout; - }; template @@ -325,9 +322,9 @@ size_t SharedDataStream::calculateBufferSize(size_t nWords, size_t wordSize, template std::unique_ptr> SharedDataStream::create( - std::shared_ptr buffer, - size_t wordSize, - size_t maxReaders) { + std::shared_ptr buffer, + size_t wordSize, + size_t maxReaders) { size_t expectedSize = calculateBufferSize(1, wordSize, maxReaders); if (0 == expectedSize) { // Logged in calcutlateBuffersize(). @@ -337,9 +334,9 @@ std::unique_ptr> SharedDataStream::create( return nullptr; } else if (expectedSize > buffer->size()) { logger::acsdkError(logger::LogEntry(TAG, "createFailed") - .d("reason", "bufferSizeTooSmall") - .d("bufferSize", buffer->size()) - .d("expectedSize", expectedSize)); + .d("reason", "bufferSizeTooSmall") + .d("bufferSize", buffer->size()) + .d("expectedSize", expectedSize)); return nullptr; } @@ -378,14 +375,15 @@ size_t SharedDataStream::getWordSize() const { } template -std::unique_ptr::Writer> -SharedDataStream::createWriter(typename Writer::Policy policy, bool forceReplacement) { +std::unique_ptr::Writer> SharedDataStream::createWriter( + typename Writer::Policy policy, + bool forceReplacement) { auto header = m_bufferLayout->getHeader(); std::lock_guard lock(header->writerEnableMutex); if (header->isWriterEnabled && !forceReplacement) { logger::acsdkError(logger::LogEntry(TAG, "createWriterFailed") - .d("reason", "existingWriterAttached") - .d("forceReplacement", "false")); + .d("reason", "existingWriterAttached") + .d("forceReplacement", "false")); return nullptr; } else { return std::unique_ptr(new Writer(policy, m_bufferLayout)); @@ -393,8 +391,9 @@ SharedDataStream::createWriter(typename Writer::Policy policy, bool forceRepl } template -std::unique_ptr::Reader> -SharedDataStream::createReader(typename Reader::Policy policy, bool startWithNewData) { +std::unique_ptr::Reader> SharedDataStream::createReader( + typename Reader::Policy policy, + bool startWithNewData) { std::unique_lock lock(m_bufferLayout->getHeader()->readerEnableMutex); for (size_t id = 0; id < m_bufferLayout->getHeader()->maxReaders; ++id) { if (!m_bufferLayout->isReaderEnabled(id)) { @@ -406,12 +405,11 @@ SharedDataStream::createReader(typename Reader::Policy policy, bool startWith } template -std::unique_ptr::Reader> -SharedDataStream::createReader( - size_t id, - typename Reader::Policy policy, - bool startWithNewData, - bool forceReplacement) { +std::unique_ptr::Reader> SharedDataStream::createReader( + size_t id, + typename Reader::Policy policy, + bool startWithNewData, + bool forceReplacement) { std::unique_lock lock(m_bufferLayout->getHeader()->readerEnableMutex); return createReaderLocked(id, policy, startWithNewData, forceReplacement, &lock); } @@ -422,18 +420,17 @@ SharedDataStream::SharedDataStream(std::shared_ptr buffer) : } template -std::unique_ptr::Reader> -SharedDataStream::createReaderLocked( - size_t id, - typename Reader::Policy policy, - bool startWithNewData, - bool forceReplacement, - std::unique_lock * lock) { +std::unique_ptr::Reader> SharedDataStream::createReaderLocked( + size_t id, + typename Reader::Policy policy, + bool startWithNewData, + bool forceReplacement, + std::unique_lock* lock) { if (m_bufferLayout->isReaderEnabled(id) && !forceReplacement) { logger::acsdkError(logger::LogEntry(TAG, "createReaderLockedFailed") - .d("reason", "readerAlreadyAttached") - .d("readerId", id) - .d("forceReplacement", "false")); + .d("reason", "readerAlreadyAttached") + .d("readerId", id) + .d("forceReplacement", "false")); return nullptr; } else { // Note: Reader constructor does not call updateUnconsumedCursor() automatically, because we may be seeking to @@ -460,13 +457,13 @@ SharedDataStream::createReaderLocked( } } -} // namespace sds -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sds +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK #include "BufferLayout.h" #include "Reader.h" #include "Writer.h" -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_SHARED_DATA_STREAM_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_SHAREDDATASTREAM_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/SDS/Writer.h b/AVSCommon/Utils/include/AVSCommon/Utils/SDS/Writer.h index e32453eb5c..ce4c8760b0 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/SDS/Writer.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/SDS/Writer.h @@ -1,7 +1,5 @@ /* - * Writer.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_WRITER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_WRITER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_WRITER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_WRITER_H_ #include #include @@ -28,6 +26,7 @@ #include "AVSCommon/Utils/Logger/LoggerUtils.h" #include "SharedDataStream.h" +#include "WriterPolicy.h" namespace alexaClientSDK { namespace avsCommon { @@ -40,30 +39,14 @@ namespace sds { * * @note This class is primarily intended to be used from a single thread. The @c Writer as a whole is thread-safe in * the sense that @c Writer and @c Readers can all live in different threads, but individual member functions of a - * @c Reader instance should not be called from multiple threads except where specifically noted in function + * @c Writer instance should not be called from multiple threads except where specifically noted in function * documentation below. */ template class SharedDataStream::Writer { public: /// Specifies the policy to use for writing to the stream. - enum class Policy { - /** - * A @c NONBLOCKABLE @c Writer will always write all the data provided without waiting for @c Readers to move - * out of the way. - * - * @note: This policy causes the @c Writer to notify @c BLOCKING @c Readers about new data being available - * without holding a mutex. This means that a @c read() call may miss a notification and block when data - * is actually available. The assumption here is that a @c NONBLOCKABLE @c Writer will be frequently - * writing data, and a subsequent @c write() will again notify the @c Reader and wake it up. - */ - NONBLOCKABLE, - /** - * An @c ALL_OR_NOTHING @c Writer will either write all the data provided if it can do so without overwriting - * unconsumed data, or it will return @c Error::WOULDBLOCK without writing any data at all. - */ - ALL_OR_NOTHING - }; + using Policy = WriterPolicy; /** * Enumerates error codes which may be returned by @c write(). @@ -77,7 +60,9 @@ class SharedDataStream::Writer { /// Returned when policy is @c Policy::ALL_OR_NOTHING and the @c write() would overwrrite unconsumed data. WOULDBLOCK = -1, /// Returned when a @c write() parameter is invalid. - INVALID = -2 + INVALID = -2, + /// Returned when policy is @c Policy::BLOCKING and no space becomes available before the specified timeout. + TIMEDOUT = -3, }; }; @@ -97,12 +82,19 @@ class SharedDataStream::Writer { * * @param buf A buffer to copy the data from. * @param nWords The maximum number of @c wordSize words to copy. + * @param timeout The maximum time to wait (if @c policy is @c BLOCKING) for space to write into. If this parameter + * is zero, there is no timeout and blocking writes will wait forever. If @c policy is not @C BLOCKING, this + * parameter is ignored. * @return The number of @c wordSize words copied, or zero if the stream has closed, or a * negative @c Error code if the stream is still open, but no data could be written. * * @note A stream is closed for the @c Writer if @c Writer::close() has been called. + * + * @warning If @c policy is @c BLOCKING and @c timeout is 0, this function will only unblock when a @c Reader + * @c read()s some data or @c seek()s forward. Applications which use this combination of parameters must use + * @c Readers to drain some data from the @c SharedDataStream if they need to unblock the @c Writer. */ - ssize_t write(const void* buf, size_t nWords); + ssize_t write(const void* buf, size_t nWords, std::chrono::milliseconds timeout = std::chrono::milliseconds(0)); /** * This function reports the current position of the @c Writer in the stream. @@ -157,7 +149,9 @@ const std::string SharedDataStream::Writer::TAG = "SdsWriter"; template SharedDataStream::Writer::Writer(Policy policy, std::shared_ptr bufferLayout) : - m_policy{policy}, m_bufferLayout{bufferLayout}, m_closed{false} { + m_policy{policy}, + m_bufferLayout{bufferLayout}, + m_closed{false} { // Note - SharedDataStream::createWriter() holds writerEnableMutex while calling this function. auto header = m_bufferLayout->getHeader(); header->isWriterEnabled = true; @@ -170,7 +164,7 @@ SharedDataStream::Writer::~Writer() { } template -ssize_t SharedDataStream::Writer::write(const void* buf, size_t nWords) { +ssize_t SharedDataStream::Writer::write(const void* buf, size_t nWords, std::chrono::milliseconds timeout) { if (nullptr == buf) { logger::acsdkError(logger::LogEntry(TAG, "writeFailed").d("reason", "nullBuffer")); return Error::INVALID; @@ -186,50 +180,101 @@ ssize_t SharedDataStream::Writer::write(const void* buf, size_t nWords) { return Error::CLOSED; } - // Don't try to write more data than we can fit in the circular buffer. - if (nWords > m_bufferLayout->getDataSize()) { - switch (m_policy) { - case Policy::NONBLOCKABLE: - nWords = m_bufferLayout->getDataSize(); - break; - case Policy::ALL_OR_NOTHING: - return Error::WOULDBLOCK; - } - } - - Index writeEnd = header->writeStartCursor + nWords; + auto wordsToCopy = nWords; + auto buf8 = static_cast(buf); std::unique_lock backwardSeekLock(header->backwardSeekMutex, std::defer_lock); - if (Policy::ALL_OR_NOTHING == m_policy) { - backwardSeekLock.lock(); + Index writeEnd = header->writeStartCursor + nWords; - // Note - this check must be performed while locked to prevent a reader from backwards-seeking into the write - // region between here and the writeEndCursor update below. - if ((writeEnd - header->oldestUnconsumedCursor) > m_bufferLayout->getDataSize()) { - return Error::WOULDBLOCK; - } + switch (m_policy) { + case Policy::NONBLOCKABLE: + // For NONBLOCKABLE, we can truncate the write if it won't fit in the buffer. + if (nWords > m_bufferLayout->getDataSize()) { + wordsToCopy = nWords = m_bufferLayout->getDataSize(); + writeEnd = header->writeStartCursor + nWords; + } + break; + case Policy::ALL_OR_NOTHING: + // For ALL_OR_NOTHING, we can't overwrite readers, and we can't truncate, but we might be able to discard + // bytes that overflow if oldestUnconsumedCursor is in the future (e.g. there are readers waiting for future + // data which has not been written yet). + + // Note - this check must be performed while locked to prevent a reader from backwards-seeking into the + // write region between here and the writeEndCursor update below. + backwardSeekLock.lock(); + if ((writeEnd >= header->oldestUnconsumedCursor) && + ((writeEnd - header->oldestUnconsumedCursor) > m_bufferLayout->getDataSize())) { + return Error::WOULDBLOCK; + } + break; + case Policy::BLOCKING: + // For BLOCKING, we need to wait until there is room for at least one word. + + // Condition for returning from write: there is space for a write. + auto predicate = [this, header] { + return (header->writeStartCursor < header->oldestUnconsumedCursor) || + (header->writeStartCursor - header->oldestUnconsumedCursor) < m_bufferLayout->getDataSize(); + }; + + // Note - this check must be performed while locked to prevent a reader from backwards-seeking into the + // write region between here and the writeEndCursor update below. + backwardSeekLock.lock(); + + // Wait for space to become available. + if (std::chrono::milliseconds::zero() == timeout) { + header->spaceAvailableConditionVariable.wait(backwardSeekLock, predicate); + } else if (!header->spaceAvailableConditionVariable.wait_for(backwardSeekLock, timeout, predicate)) { + return Error::TIMEDOUT; + } + + // Figure out how much space we have. + auto spaceAvailable = m_bufferLayout->getDataSize(); + if (header->writeStartCursor >= header->oldestUnconsumedCursor) { + auto wordsToOverrun = + m_bufferLayout->getDataSize() - (header->writeStartCursor - header->oldestUnconsumedCursor); + if (wordsToOverrun < spaceAvailable) { + spaceAvailable = wordsToOverrun; + } + } + + // For BLOCKING, we can truncate the write if it won't fit in the buffer. + if (spaceAvailable < nWords) { + wordsToCopy = nWords = spaceAvailable; + writeEnd = header->writeStartCursor + nWords; + } + + break; } header->writeEndCursor = writeEnd; - if (Policy::ALL_OR_NOTHING == m_policy) { + // We've updated our end cursor, so we no longer need to hold off backward seeks. + if (backwardSeekLock) { backwardSeekLock.unlock(); } + if (Policy::ALL_OR_NOTHING == m_policy) { + // If we have more data than the SDS can hold and we're not going to be overwriting oldestUnconsumedCursor, we + // can safely discard the initial data and just leave the trailing data in the buffer. + if (wordsToCopy > m_bufferLayout->getDataSize()) { + wordsToCopy = m_bufferLayout->getDataSize(); + buf8 += (nWords - wordsToCopy) * getWordSize(); + } + } + // Split it across the wrap. size_t beforeWrap = m_bufferLayout->wordsUntilWrap(header->writeStartCursor); - if (beforeWrap > nWords) { - beforeWrap = nWords; + if (beforeWrap > wordsToCopy) { + beforeWrap = wordsToCopy; } - size_t afterWrap = nWords - beforeWrap; + size_t afterWrap = wordsToCopy - beforeWrap; // Copy the two segments. - auto buf8 = static_cast(buf); memcpy(m_bufferLayout->getData(header->writeStartCursor), buf8, beforeWrap * getWordSize()); if (afterWrap > 0) { memcpy( - m_bufferLayout->getData(header->writeStartCursor + beforeWrap), - buf8 + beforeWrap * getWordSize(), - afterWrap * getWordSize()); + m_bufferLayout->getData(header->writeStartCursor + beforeWrap), + buf8 + beforeWrap * getWordSize(), + afterWrap * getWordSize()); } // Advance the write cursor. @@ -268,6 +313,12 @@ void SharedDataStream::Writer::close() { } if (header->isWriterEnabled) { header->isWriterEnabled = false; + + std::unique_lock dataAvailableLock(header->dataAvailableMutex); + + header->hasWriterBeenClosed = true; + + header->dataAvailableConditionVariable.notify_all(); } m_closed = true; } @@ -280,16 +331,22 @@ size_t SharedDataStream::Writer::getWordSize() const { template std::string SharedDataStream::Writer::errorToString(Error error) { switch (error) { + case Error::CLOSED: + return "CLOSED"; case Error::WOULDBLOCK: return "WOULDBLOCK"; case Error::INVALID: return "INVALID"; + case Error::TIMEDOUT: + return "TIMEDOUT"; } + logger::acsdkError(logger::LogEntry(TAG, "errorToStringFailed").d("reason", "invalidError").d("error", error)); + return "(unknown error " + to_string(error) + ")"; } -} // namespace sds -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace sds +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_SDS_WRITER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_WRITER_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/SDS/WriterPolicy.h b/AVSCommon/Utils/include/AVSCommon/Utils/SDS/WriterPolicy.h new file mode 100644 index 0000000000..f3a90f21ff --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/SDS/WriterPolicy.h @@ -0,0 +1,63 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_WRITERPOLICY_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_WRITERPOLICY_H_ + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace sds { + +/// Specifies the policy to use for writing to the stream. +enum class WriterPolicy { + /** + * A @c NONBLOCKABLE @c Writer will always write all the data provided without waiting for @c Readers to move + * out of the way. + * + * @note: This policy causes the @c Writer to notify @c BLOCKING @c Readers about new data being available + * without holding a mutex. This means that a @c read() call may miss a notification and block when data + * is actually available. The assumption here is that a @c NONBLOCKABLE @c Writer will be frequently + * writing data, and a subsequent @c write() will again notify the @c Reader and wake it up. + */ + NONBLOCKABLE, + /** + * An @c ALL_OR_NOTHING @c Writer will either write all the data provided if it can do so without overwriting + * unconsumed data, or it will return @c Error::WOULDBLOCK without writing any data at all. + * + * @note: If there are no @c Readers attached, data can be written to a @c ShardDataStream until it fills up, + * but it will then stop accepting data from an @c ALL_OR_NOTHING @c Writer until a @c Reader attaches and + * consumes some of the data. However, there is a corner case where a @c Reader is attached, but has + * @c seek()ed into the future. In this scenario, all data written until the @c Writer catches up with the + * @c Reader will never be consumed, so the @c SharedDataStream will allow an @c ALL_OR_NOTHING @c Writer to + * continue writing new data (and discarding old data) until it reaches the index the @c Reader is waiting + * for. + */ + ALL_OR_NOTHING, + /** + * A @c BLOCKING @c Writer will wait for up to the specified timeout (or forever if `(timeout == 0)`) for space + * to become available. As soon as at least one word can be written, the @c Writer will write as many words as + * it can without overwriting unconsumed data, and return the number of words written. If no space becomes + * available in the specified timeout, a @c BLOCKING @c Writer will return @c Error::TIMEDOUT. + */ + BLOCKING +}; + +} // namespace sds +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_SDS_WRITERPOLICY_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Stream/StreamFunctions.h b/AVSCommon/Utils/include/AVSCommon/Utils/Stream/StreamFunctions.h new file mode 100644 index 0000000000..8f430a9290 --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Stream/StreamFunctions.h @@ -0,0 +1,41 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_STREAM_STREAMFUNCTIONS_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_STREAM_STREAMFUNCTIONS_H_ + +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace stream { + +/** + * Implementation converts a byte array into a stream. The data is never copied and multiple streams can be created to + * the same data source without affecting each other + * + * @param data pointer to the data to make into a stream + * @param length length of data + */ +std::unique_ptr streamFromData(const unsigned char* data, size_t length); + +} // namespace stream +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_STREAM_STREAMFUNCTIONS_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Stream/Streambuf.h b/AVSCommon/Utils/include/AVSCommon/Utils/Stream/Streambuf.h new file mode 100644 index 0000000000..0bdcd4c749 --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Stream/Streambuf.h @@ -0,0 +1,69 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_STREAM_STREAMBUF_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_STREAM_STREAMBUF_H_ + +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace stream { + +/** + * This class takes byte array and makes a non-copying std::streambuf out of it. + */ +class Streambuf : public std::streambuf { +public: + /** + * Streambuf + * + * @param data the beginning of the byte array + * @param length the size of the byte array + */ + Streambuf(const unsigned char* data, size_t length); + + std::streampos seekoff( + std::streamoff off, + std::ios_base::seekdir way, + std::ios_base::openmode which = std::ios_base::in) override; + std::streampos seekpos(std::streampos sp, std::ios_base::openmode which = std::ios_base::in) override; + +private: + int_type underflow() override; + int_type uflow() override; + int_type pbackfail(int_type ch) override; + std::streamsize showmanyc() override; + + /** + * This function makes sure that the requested operation is valid and does the update. + * + * @return the position in the stream + */ + std::streampos UpdateAndValidate(); + + char* const m_begin; + char* m_current; + char* const m_end; +}; + +} // namespace stream +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_STREAM_STREAMBUF_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/String/StringUtils.h b/AVSCommon/Utils/include/AVSCommon/Utils/String/StringUtils.h index 2b5312468a..721befb1a4 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/String/StringUtils.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/String/StringUtils.h @@ -1,7 +1,5 @@ /* - * StringUtils.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,10 +13,11 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_STRING_STRING_UTILS_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_STRING_STRING_UTILS_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_STRING_STRINGUTILS_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_STRING_STRINGUTILS_H_ #include +#include namespace alexaClientSDK { namespace avsCommon { @@ -33,7 +32,7 @@ namespace string { * @param[out] result The resulting integer, if successfully parsed from the string. * @return @c true If the string was parsed as an integer, otherwise @c false. */ -bool stringToInt(const std::string & str, int* result); +bool stringToInt(const std::string& str, int* result); /** * A utility function to convert a c-string to an integer. @@ -45,9 +44,26 @@ bool stringToInt(const std::string & str, int* result); */ bool stringToInt(const char* str, int* result); -} // namespace string -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +/** + * A utility function to convert a vector of bytes to a printable string. For example, the vector {1, 2, 3} will return + * the string "0x01 0x02 0x03" + * + * @param byteVector a vector of bytes + * @return a string of the hex values of each byte printed. + */ +std::string byteVectorToString(const std::vector& byteVector); + +/** + * A utility function to convert a string into lower case. + * + * @param input The input string to be converted. + * @return The converted string in lower case. + */ +std::string stringToLowerCase(const std::string& input); + +} // namespace string +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_STRING_STRING_UTILS_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_STRING_STRINGUTILS_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Threading/Executor.h b/AVSCommon/Utils/include/AVSCommon/Utils/Threading/Executor.h index 18352e1624..ea796a694a 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Threading/Executor.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Threading/Executor.h @@ -1,7 +1,5 @@ /* - * Executor.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_THREADING_EXECUTOR_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_THREADING_EXECUTOR_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_THREADING_EXECUTOR_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_THREADING_EXECUTOR_H_ #include #include @@ -52,8 +50,8 @@ class Executor { * @param args The arguments to call the task with. * @returns A @c std::future for the return value of the task. */ - template - auto submit(Task task, Args &&... args) -> std::future; + template + auto submit(Task task, Args&&... args) -> std::future; /** * Submits a callable type (function, lambda expression, bind expression, or another function object) to the front @@ -64,8 +62,8 @@ class Executor { * @param args The arguments to call the task with. * @returns A @c std::future for the return value of the task. */ - template - auto submitToFront(Task task, Args &&... args) -> std::future; + template + auto submitToFront(Task task, Args&&... args) -> std::future; /** * Wait for any previously submitted tasks to complete. @@ -86,20 +84,19 @@ class Executor { std::unique_ptr m_taskThread; }; - -template -auto Executor::submit(Task task, Args &&... args) -> std::future { +template +auto Executor::submit(Task task, Args&&... args) -> std::future { return m_taskQueue->push(task, std::forward(args)...); } -template -auto Executor::submitToFront(Task task, Args &&... args) -> std::future { +template +auto Executor::submitToFront(Task task, Args&&... args) -> std::future { return m_taskQueue->pushToFront(task, std::forward(args)...); } -} // namespace threading -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace threading +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_THREADING_EXECUTOR_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_THREADING_EXECUTOR_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Threading/TaskQueue.h b/AVSCommon/Utils/include/AVSCommon/Utils/Threading/TaskQueue.h index 53c693d8dd..85bcb82252 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Threading/TaskQueue.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Threading/TaskQueue.h @@ -1,7 +1,5 @@ /* - * TaskQueue.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_THREADING_TASK_QUEUE_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_THREADING_TASK_QUEUE_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_THREADING_TASKQUEUE_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_THREADING_TASKQUEUE_H_ #include #include @@ -51,8 +49,8 @@ class TaskQueue { * @returns A @c std::future to access the return value of the task. If the queue is shutdown, the task will be * dropped, and an invalid future will be returned. */ - template - auto push(Task task, Args &&... args) -> std::future; + template + auto push(Task task, Args&&... args) -> std::future; /** * Pushes a task on the front of the queue. If the queue is shutdown, the task will be dropped, and an invalid @@ -63,8 +61,8 @@ class TaskQueue { * @returns A @c std::future to access the return value of the task. If the queue is shutdown, the task will be * dropped, and an invalid future will be returned. */ - template - auto pushToFront(Task task, Args &&... args) -> std::future; + template + auto pushToFront(Task task, Args&&... args) -> std::future; /** * Returns and removes the task at the front of the queue. If there are no tasks, this call will block until there @@ -102,8 +100,8 @@ class TaskQueue { * @returns A @c std::future to access the return value of the task. If the queue is shutdown, the task will be * dropped, and an invalid future will be returned. */ - template - auto pushTo(bool front, Task task, Args &&... args) -> std::future; + template + auto pushTo(bool front, Task task, Args&&... args) -> std::future; /// The queue of tasks Queue m_queue; @@ -118,14 +116,14 @@ class TaskQueue { std::atomic_bool m_shutdown; }; -template -auto TaskQueue::push(Task task, Args &&... args) -> std::future { +template +auto TaskQueue::push(Task task, Args&&... args) -> std::future { bool front = true; return pushTo(!front, std::forward(task), std::forward(args)...); } -template -auto TaskQueue::pushToFront(Task task, Args &&... args) -> std::future { +template +auto TaskQueue::pushToFront(Task task, Args&&... args) -> std::future { bool front = true; return pushTo(front, std::forward(task), std::forward(args)...); } @@ -137,7 +135,7 @@ auto TaskQueue::pushToFront(Task task, Args &&... args) -> std::future -inline static void forwardPromise(std::shared_ptr> promise, std::future * future) { +inline static void forwardPromise(std::shared_ptr> promise, std::future* future) { promise->set_value(future->get()); } @@ -148,13 +146,13 @@ inline static void forwardPromise(std::shared_ptr> promise, std: * @param future The @c std::future on which to wait before fulfilling @c promise. */ template <> -inline void forwardPromise(std::shared_ptr> promise, std::future * future) { +inline void forwardPromise(std::shared_ptr> promise, std::future* future) { future->get(); promise->set_value(); } -template -auto TaskQueue::pushTo(bool front, Task task, Args &&... args) -> std::future { +template +auto TaskQueue::pushTo(bool front, Task task, Args&&... args) -> std::future { // Remove arguments from the tasks type by binding the arguments to the task. auto boundTask = std::bind(std::forward(task), std::forward(args)...); @@ -208,9 +206,9 @@ auto TaskQueue::pushTo(bool front, Task task, Args &&... args) -> std::future #include @@ -74,11 +72,9 @@ class TaskThread { std::thread m_thread; }; -} // namespace threading -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK - -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_THREADING_TASK_THREAD_H_ - +} // namespace threading +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_THREADING_TASKTHREAD_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Timing/SafeCTimeAccess.h b/AVSCommon/Utils/include/AVSCommon/Utils/Timing/SafeCTimeAccess.h new file mode 100644 index 0000000000..dea27b6698 --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Timing/SafeCTimeAccess.h @@ -0,0 +1,86 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_TIMING_SAFECTIMEACCESS_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_TIMING_SAFECTIMEACCESS_H_ + +#include +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace timing { + +/** + * This class allows access safe access to the multithreaded-unsafe time functions. It is a singleton because there + * needs to be a single lock that protects the time functions. That single lock is contained within this class. + */ +class SafeCTimeAccess { +public: + /** + * The method for accessing the singleton SafeCTimeAccess class. It returns a shared_ptr so classes that depend on + * this class can keep it alive until they are destroyed. + * + * @return std::shared_ptr to the singleton SafeCTimeAccess object. + */ + static std::shared_ptr instance(); + + /** + * Function to safely call std::gmtime. std::gmtime uses a static internal data structure that is not thread-safe. + * + * @param time The time since epoch to convert. + * @param[out] time The output in calendar time, expressed in UTC time. + * @return true if successful, false otherwise. + */ + bool getGmtime(const std::time_t& time, std::tm* calendarTime); + + /** + * Function to safely call std::localtime. std::localtime uses a static internal data structure that is not + * thread-safe. + * + * @param time The time since epoch to convert. + * @param[out] time The output in calendar time, expressed in UTC time. + * @return true if successful, false otherwise. + */ + bool getLocaltime(const std::time_t& time, std::tm* calendarTime); + +private: + SafeCTimeAccess() = default; + + /** + * Helper function to eliminate duplicate code, because getGmtime and getLocaltime are almost identical. + * + * @param timeAccessFunction One of two funtions (std::gmtime and std::localtime) that need to be safely accessed. + * @param time The time since epoch to convert. + * @param[out] time The output in calendar time, expressed in UTC time. + * @return true if successful, false otherwise. + */ + bool safeAccess( + std::tm* (*timeAccessFunction)(const std::time_t* time), + const std::time_t& time, + std::tm* calendarTime); + + /// Mutex used to protect access to the ctime functions. + std::mutex m_timeLock; +}; + +} // namespace timing +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_TIMING_SAFECTIMEACCESS_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Timing/TimePoint.h b/AVSCommon/Utils/include/AVSCommon/Utils/Timing/TimePoint.h new file mode 100644 index 0000000000..6b90da3a32 --- /dev/null +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Timing/TimePoint.h @@ -0,0 +1,74 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_TIMING_TIMEPOINT_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_TIMING_TIMEPOINT_H_ + +#include + +#include "AVSCommon/Utils/Timing/TimeUtils.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace timing { + +/** + * A simple utility class that is useful in our SDK to map between ISO-8601 and Unix (epoch) time. + */ +class TimePoint { +public: + /** + * Constructor. + */ + TimePoint(); + + /** + * Sets the time with an ISO-8601 formatted string. This will update the object's Unix time to the relative value. + * + * @param time_ISO_8601 A string representation of time in ISO-8601 format. + */ + bool setTime_ISO_8601(const std::string& time_ISO_8601); + + /** + * Returns the time managed by this object in ISO-8601 format. + * + * @return The time managed by this object in ISO-8601 format. + */ + std::string getTime_ISO_8601() const; + + /** + * Returns the time managed by this object in Unix epoch time format. + * + * @return The time managed by this object in Unix epoch time format. + */ + int64_t getTime_Unix() const; + +private: + /// The scheduled time for the alert in ISO-8601 format. + std::string m_time_ISO_8601; + /// The scheduled time for the alert in Unix epoch format. + int64_t m_time_Unix; + + /// Object used to safely access time utilities. + TimeUtils m_timeUtils; +}; + +} // namespace timing +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_TIMING_TIMEPOINT_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Timing/TimeUtils.h b/AVSCommon/Utils/include/AVSCommon/Utils/Timing/TimeUtils.h index ff4ea45db4..3f2af49e6f 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Timing/TimeUtils.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Timing/TimeUtils.h @@ -1,7 +1,5 @@ /* - * TimeUtils.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,55 +13,112 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_TIMING_TIME_UTILS_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_TIMING_TIME_UTILS_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_TIMING_TIMEUTILS_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_TIMING_TIMEUTILS_H_ +#include #include +#include "AVSCommon/Utils/RetryTimer.h" +#include "AVSCommon/Utils/Timing/SafeCTimeAccess.h" + namespace alexaClientSDK { namespace avsCommon { namespace utils { namespace timing { /** - * This function converts a string representing time, encoded in the ISO-8601 format, to what is commonly - * known as Unix time (epoch). - * - * For completeness, the expected format of the input string is as follows: - * - * YYYY-MM-DDTHH:MM:SS+0000 - * - * Where (in order of listing) : - * Y means year - * M means month - * D means day - * H means hour - * M means minute - * S means second - * - * So, for example: - * - * 1986-8-8T21:30:00+0000 - * - * means the year 1986, August 8th, 9:30pm. - * - * @param timeString The time string, formatted as described above. - * @param[out] unixTime The converted time into Unix epoch time. - * @return Whether the conversion was successful. + * Class used to safely access the time utilities. */ -bool convert8601TimeStringToUnix(const std::string & timeString, int64_t* unixTime); +class TimeUtils { +public: + /** + * Constructor. + */ + TimeUtils(); -/** - * Gets the current time in Unix epoch time, as a 64 bit integer. - * - * @param[out] currentTime The current time in Unix epoch time, as a 64 bit integer. - * @return Whether the get time was successful. - */ -bool getCurrentUnixTime(int64_t* currentTime); + /** + * Convert tm struct to time_t in UTC time + * + * This function is needed because mktime uses the current timezone. Hence, we calculate the current timezone + * difference, and adjust the converted time. + * + * @param utcTm time to be converted. This should be in UTC time + * @param[out] ret The converted UTC time to time_t + * @return Whether the conversion was successful. + */ + bool convertToUtcTimeT(const std::tm* utcTm, std::time_t* ret); + + /** + * This function converts a string representing time, encoded in the ISO-8601 format, to what is commonly + * known as Unix time (epoch). + * + * For completeness, the expected format of the input string is as follows: + * + * YYYY-MM-DDTHH:MM:SS+0000 + * + * Where (in order of listing) : + * Y means year + * M means month + * D means day + * H means hour + * M means minute + * S means second + * + * So, for example: + * + * 1986-08-08T21:30:00+0000 + * + * means the year 1986, August 8th, 9:30pm. + * + * @param timeString The time string, formatted as described above. + * @param[out] unixTime The converted time into Unix epoch time. + * @return Whether the conversion was successful. + */ + bool convert8601TimeStringToUnix(const std::string& timeString, int64_t* unixTime); + + /** + * Gets the current time in Unix epoch time, as a 64 bit integer. + * + * @param[out] currentTime The current time in Unix epoch time, as a 64 bit integer. + * @return Whether the get time was successful. + */ + bool getCurrentUnixTime(int64_t* currentTime); + + /** + * Convert timeval struct to a ISO 8601 RFC 3339 date-time string. This follows these specifications: + * - https://tools.ietf.org/html/rfc3339 + * + * The end result will look like "1970-01-01T00:00:00.000Z" + * + * @param t The time from the Unix epoch to convert. + * @param[out] iso8601TimeString The resulting time string. + * @return True, if successful, false otherwise. + */ + bool convertTimeToUtcIso8601Rfc3339(const struct timeval& t, std::string* iso8601TimeString); + +private: + /** + * Calculate localtime offset in std::time_t. + * + * In order to calculate the timezone offset, we call gmtime and localtime giving the same arbitrary time point. + * Then, we convert them back to time_t and calculate the conversion difference. The arbitrary time point is 24 + * hours past epoch, so we don't have to deal with negative time_t values. + * + * This function uses non-threadsafe time functions. Thus, it is important to use the SafeCTimeAccess class. + * + * @param[out] ret Required pointer to object where the result will be saved. + * @return Whether it succeeded to calculate the localtime offset. + */ + bool localtimeOffset(std::time_t* ret); + + /// Object used to safely access the system ctime functions. + std::shared_ptr m_safeCTimeAccess; +}; -} // namespace timing -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace timing +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_TIMING_TIME_UTILS_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_TIMING_TIMEUTILS_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/Timing/Timer.h b/AVSCommon/Utils/include/AVSCommon/Utils/Timing/Timer.h index d5f15b0e8d..9f6382ab0d 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/Timing/Timer.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/Timing/Timer.h @@ -1,7 +1,5 @@ /* - * Timer.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_TIMING_TIMER_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_TIMING_TIMER_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_TIMING_TIMER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_TIMING_TIMER_H_ #include #include @@ -58,7 +56,7 @@ class Timer { /** * The period specifies the time from the end of one task call to the start of the next task call. This period * type ensures a specific amount of idle time between task calls. - */ + */ RELATIVE }; @@ -95,14 +93,14 @@ class Timer { * @param args The arguments to call the task with. * @returns @c true if the timer started, else @c false. */ - template + template bool start( const std::chrono::duration& delay, const std::chrono::duration& period, PeriodType periodType, size_t maxCount, Task task, - Args &&... args); + Args&&... args); /** * Submits a callable type (function, lambda expression, bind expression, or another function object) to be @@ -125,13 +123,13 @@ class Timer { * @param args The arguments to call @c task with. * @returns @c true if the timer started, else @c false. */ - template + template bool start( const std::chrono::duration& period, PeriodType periodType, size_t maxCount, Task task, - Args &&... args); + Args&&... args); /** * Submits a callable type (function, lambda expression, bind expression, or another function object) to be @@ -151,11 +149,9 @@ class Timer { * @returns A valid @c std::future for the return value of @c task if the timer started, else an invalid * @c std::future. Note that the promise will be broken if @c stop() is called before @c task is called. */ - template - auto start( - const std::chrono::duration& delay, - Task task, - Args &&... args) -> std::future; + template + auto start(const std::chrono::duration& delay, Task task, Args&&... args) + -> std::future; /** * Stops the @c Timer (if running). This will not interrupt an active call to the task, but will prevent any @@ -198,7 +194,7 @@ class Timer { * @c PeriodType::ABSOLUTE and the task runtime exceeds @c period. * @param task A callable type representing a task. */ - template + template void callTask( std::chrono::duration delay, std::chrono::duration period, @@ -230,20 +226,19 @@ class Timer { bool m_stopping; }; -template +template bool Timer::start( const std::chrono::duration& delay, const std::chrono::duration& period, PeriodType periodType, size_t maxCount, Task task, - Args &&... args) { - + Args&&... args) { if (delay < std::chrono::duration::zero()) { logger::acsdkError(logger::LogEntry(TAG, "startFailed").d("reason", "negativeDelay")); return false; } - if(period < std::chrono::duration::zero()) { + if (period < std::chrono::duration::zero()) { logger::acsdkError(logger::LogEntry(TAG, "startFailed").d("reason", "negativePeriod")); return false; } @@ -267,35 +262,25 @@ bool Timer::start( auto translatedTask = [boundTask]() { boundTask->operator()(); }; // Kick off the new timer thread. - m_thread = std::thread{std::bind( - &Timer::callTask, - this, - delay, - period, - periodType, - maxCount, - translatedTask)}; + m_thread = std::thread{ + std::bind(&Timer::callTask, this, delay, period, periodType, maxCount, translatedTask)}; return true; } -template +template bool Timer::start( const std::chrono::duration& period, PeriodType periodType, size_t maxCount, Task task, - Args &&... args) { - + Args&&... args) { return start(period, period, periodType, maxCount, std::forward(task), std::forward(args)...); } -template -auto Timer::start( - const std::chrono::duration& delay, - Task task, - Args &&... args) -> std::future { - +template +auto Timer::start(const std::chrono::duration& delay, Task task, Args&&... args) + -> std::future { // Can't start if already running. if (!activate()) { logger::acsdkError(logger::LogEntry(TAG, "startFailed").d("reason", "timerAlreadyActive")); @@ -324,26 +309,19 @@ auto Timer::start( // Kick off the new timer thread. static const size_t once = 1; - m_thread = std::thread{std::bind( - &Timer::callTask, - this, - delay, - delay, - PeriodType::ABSOLUTE, - once, - translatedTask)}; + m_thread = std::thread{ + std::bind(&Timer::callTask, this, delay, delay, PeriodType::ABSOLUTE, once, translatedTask)}; return packagedTask->get_future(); } -template +template void Timer::callTask( std::chrono::duration delay, std::chrono::duration period, PeriodType periodType, size_t maxCount, std::function task) { - // Timepoint to measure delay/period against. auto now = std::chrono::steady_clock::now(); @@ -364,36 +342,36 @@ void Timer::callTask( } switch (periodType) { - case PeriodType::ABSOLUTE: - // Update our estimate of where we should be after the delay. - now += waitTime; - - // Run the task if we're still on schedule. - if (!offSchedule) { + case PeriodType::ABSOLUTE: + // Update our estimate of where we should be after the delay. + now += waitTime; + + // Run the task if we're still on schedule. + if (!offSchedule) { + task(); + } + + // If the task runtime put us off schedule, skip the next task run. + if (now + period < std::chrono::steady_clock::now()) { + offSchedule = true; + } else { + offSchedule = false; + } + break; + + case PeriodType::RELATIVE: task(); - } - - // If the task runtime put us off schedule, skip the next task run. - if (now + period < std::chrono::steady_clock::now()) { - offSchedule = true; - } else { - offSchedule = false; - } - break; - - case PeriodType::RELATIVE: - task(); - now = std::chrono::steady_clock::now(); - break; + now = std::chrono::steady_clock::now(); + break; } } + m_stopping = false; m_running = false; } +} // namespace timing +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -} // namespace timing -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK - -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_TIMING_TIMER_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_TIMING_TIMER_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/UUIDGeneration/UUIDGeneration.h b/AVSCommon/Utils/include/AVSCommon/Utils/UUIDGeneration/UUIDGeneration.h index 395f634798..dbc82444d0 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/UUIDGeneration/UUIDGeneration.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/UUIDGeneration/UUIDGeneration.h @@ -1,7 +1,5 @@ /* - * UUIDGeneration.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVSCCOMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_UUID_GENERATION_UUID_GENERATION_H_ -#define ALEXA_CLIENT_SDK_AVSCCOMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_UUID_GENERATION_UUID_GENERATION_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_UUIDGENERATION_UUIDGENERATION_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_UUIDGENERATION_UUIDGENERATION_H_ #include @@ -27,17 +25,18 @@ namespace uuidGeneration { /** * Generates a variant 1, version 4 universally unique identifier (UUID) consisting of 32 hexadecimal digits. - * The UUID generated is of the format xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx where M indicates the version, and the two most - * significant bits of N indicates the variant. M is 0100 (binary) for version 4 and N is 10xx(binary) for variant 1. + * The UUID generated is of the format xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx where M indicates the version, and the two + * most significant bits of N indicates the variant. M is 0100 (binary) for version 4 and N is 10xx(binary) for + * variant 1. * @see https://tools.ietf.org/html/rfc4122. * * @return A uuid as a string. */ const std::string generateUUID(); -} // namespace uuidGeneration -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace uuidGeneration +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVSCCOMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_UUID_GENERATION_UUID_GENERATION_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_UUIDGENERATION_UUIDGENERATION_H_ diff --git a/AVSCommon/Utils/include/AVSCommon/Utils/functional/hash.h b/AVSCommon/Utils/include/AVSCommon/Utils/functional/hash.h index bcb32a0be0..5aaade7e12 100644 --- a/AVSCommon/Utils/include/AVSCommon/Utils/functional/hash.h +++ b/AVSCommon/Utils/include/AVSCommon/Utils/functional/hash.h @@ -1,7 +1,5 @@ /* - * hash.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,9 +13,10 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_FUNCTIONAL_HASH_H_ -#define ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_FUNCTIONAL_HASH_H_ +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_FUNCTIONAL_HASH_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_FUNCTIONAL_HASH_H_ +#include #include #include @@ -34,15 +33,16 @@ namespace functional { * @param seed Accumulated value from multiple calls. * @param value The next value whose hash is to be combined. */ -template void hashCombine(size_t& seed, Type const& value) { +template +void hashCombine(size_t& seed, Type const& value) { constexpr int bitsMinus1 = (CHAR_BIT * sizeof(size_t)) - 1; std::hash hasher; seed = hasher(value) ^ ((seed << 1) | ((seed >> bitsMinus1) & 1)); } -} // namespace functional -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace functional +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_AVS_COMMON_UTILS_INCLUDE_AVS_COMMON_UTILS_FUNCTIONAL_HASH_H_ +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_INCLUDE_AVSCOMMON_UTILS_FUNCTIONAL_HASH_H_ diff --git a/AVSCommon/Utils/src/Configuration/ConfigurationNode.cpp b/AVSCommon/Utils/src/Configuration/ConfigurationNode.cpp index 73f4523d24..48e5036f16 100644 --- a/AVSCommon/Utils/src/Configuration/ConfigurationNode.cpp +++ b/AVSCommon/Utils/src/Configuration/ConfigurationNode.cpp @@ -1,7 +1,5 @@ /* - * ConfigurationNode.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -43,6 +41,7 @@ std::mutex ConfigurationNode::m_mutex; Document ConfigurationNode::m_document; ConfigurationNode ConfigurationNode::m_root; +#ifdef ACSDK_DEBUG_LOG_ENABLED /** * Render @c rapidjson::Value as a string. * @@ -58,6 +57,7 @@ static std::string valueToString(const Value& value) { ACSDK_ERROR(LX("valueToStringFailed").d("reason", "AcceptReturnedFalse")); return ""; } +#endif // ACSDK_DEBUG_LOG_ENABLED /** * Deep (possibly recursive) merge of two @c rapidjson values of type @c rapidjson::Type::kObject. The contents @@ -70,7 +70,7 @@ static std::string valueToString(const Value& value) { */ static void mergeDocument(const std::string& path, Value& out, Value& in, Document::AllocatorType& allocator) { for (auto inIt = in.MemberBegin(); inIt != in.MemberEnd(); inIt++) { - auto outIt = out.FindMember(inIt->name); + auto outIt = out.FindMember(inIt->name); if (outIt != out.MemberEnd() && inIt->value != outIt->value) { auto memberPath = path + "." + outIt->name.GetString(); if (outIt->value.IsObject()) { @@ -78,10 +78,10 @@ static void mergeDocument(const std::string& path, Value& out, Value& in, Docume mergeDocument(memberPath, outIt->value, inIt->value, allocator); } else { ACSDK_DEBUG(LX("mergeDocument") - .d("reason", "valueReplaced") - .d("path", memberPath) - .sensitive("old", valueToString(outIt->value)) - .sensitive("new", valueToString(inIt->value))); + .d("reason", "valueReplaced") + .d("path", memberPath) + .sensitive("old", valueToString(outIt->value)) + .sensitive("new", valueToString(inIt->value))); outIt->value = inIt->value; } } else { @@ -90,7 +90,7 @@ static void mergeDocument(const std::string& path, Value& out, Value& in, Docume } } -bool ConfigurationNode::initialize(const std::vector &jsonStreams) { +bool ConfigurationNode::initialize(const std::vector& jsonStreams) { std::lock_guard lock(m_mutex); if (m_root) { ACSDK_ERROR(LX("initializeFailed").d("reason", "alreadyInitialized")); @@ -104,19 +104,19 @@ bool ConfigurationNode::initialize(const std::vector &jsonStream } IStreamWrapper wrapper(*jsonStream); Document overlay(&m_document.GetAllocator()); - overlay.ParseStream(wrapper); + overlay.ParseStream(wrapper); if (overlay.HasParseError()) { ACSDK_ERROR(LX("initializeFailed") - .d("reason", "parseFailure") - .d("offset", overlay.GetErrorOffset()) - .d("message", GetParseError_En(overlay.GetParseError()))); + .d("reason", "parseFailure") + .d("offset", overlay.GetErrorOffset()) + .d("message", GetParseError_En(overlay.GetParseError()))); m_document.SetObject(); return false; } mergeDocument("root", m_document, overlay, m_document.GetAllocator()); } m_root = ConfigurationNode(&m_document); - ACSDK_INFO(LX("initializeSuccess").sensitive("configuration", valueToString(m_document))); + ACSDK_DEBUG0(LX("initializeSuccess").sensitive("configuration", valueToString(m_document))); return true; } @@ -133,11 +133,11 @@ ConfigurationNode ConfigurationNode::getRoot() { ConfigurationNode::ConfigurationNode() : m_object{nullptr} { } -bool ConfigurationNode::getBool(const std::string& key, bool *out, bool defaultValue) const { +bool ConfigurationNode::getBool(const std::string& key, bool* out, bool defaultValue) const { return getValue(key, out, defaultValue, &Value::IsBool, &Value::GetBool); } -bool ConfigurationNode::getInt(const std::string& key, int *out, int defaultValue) const { +bool ConfigurationNode::getInt(const std::string& key, int* out, int defaultValue) const { return getValue(key, out, defaultValue, &Value::IsInt, &Value::GetInt); } @@ -154,32 +154,6 @@ bool ConfigurationNode::getString(const std::string& key, const char** out, cons return getValue(key, out, defaultValue, &Value::IsString, &Value::GetString); } -template -bool ConfigurationNode::getValue( - const std::string& key, - Type *out, - Type defaultValue, - bool (rapidjson::Value::*isType)() const, - Type (rapidjson::Value::*getType)() const) const { - if (key.empty() || !m_object) { - if (out) { - *out = defaultValue; - } - return false; - } - auto it = m_object->FindMember(key.c_str()); - if (m_object->MemberEnd() == it || !(it->value.*isType)()) { - if (out) { - *out = defaultValue; - } - return false; - } - if (out) { - *out = (it->value.*getType)(); - } - return true; -} - ConfigurationNode ConfigurationNode::operator[](const std::string& key) const { if (!*this) { return ConfigurationNode(); @@ -198,7 +172,7 @@ ConfigurationNode::operator bool() const { ConfigurationNode::ConfigurationNode(const rapidjson::Value* object) : m_object{object} { } -} // namespace configuration -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace configuration +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Executor.cpp b/AVSCommon/Utils/src/Executor.cpp index 729735f99b..2d93f83dad 100644 --- a/AVSCommon/Utils/src/Executor.cpp +++ b/AVSCommon/Utils/src/Executor.cpp @@ -1,7 +1,5 @@ /* - * Executor.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -36,9 +34,7 @@ Executor::~Executor() { void Executor::waitForSubmittedTasks() { std::promise flushedPromise; auto flushedFuture = flushedPromise.get_future(); - auto task = [this, &flushedPromise]() { - flushedPromise.set_value(); - }; + auto task = [&flushedPromise]() { flushedPromise.set_value(); }; submit(task); flushedFuture.get(); } @@ -52,7 +48,7 @@ bool Executor::isShutdown() { return m_taskQueue->isShutdown(); } -} // namespace threading -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace threading +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/FileUtils.cpp b/AVSCommon/Utils/src/FileUtils.cpp new file mode 100644 index 0000000000..117ea7ef53 --- /dev/null +++ b/AVSCommon/Utils/src/FileUtils.cpp @@ -0,0 +1,66 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "AVSCommon/Utils/File/FileUtils.h" + +#include "AVSCommon/Utils/Logger/Logger.h" + +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace file { + +/// String to identify log entries originating from this file. +static const std::string TAG("FileUtils"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/* + * TODO - make this more portable and dependable. + * + * https://issues.labcollab.net/browse/ACSDK-380 + */ +bool fileExists(const std::string& filePath) { + std::ifstream is(filePath); + return is.good(); +} + +bool removeFile(const std::string& filePath) { + if (!fileExists(filePath)) { + ACSDK_WARN(LX("removeFileFailed").d("reason", "File does not exist.")); + return false; + } + + int result = std::remove(filePath.c_str()); + if (result != 0) { + ACSDK_ERROR(LX("removeFileFailed").d("reason", "could not remove file.").d("result", result)); + return false; + } + + return true; +} + +} // namespace file +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/JSONUtils.cpp b/AVSCommon/Utils/src/JSONUtils.cpp index 6e0e81c532..9ed612f4a6 100644 --- a/AVSCommon/Utils/src/JSONUtils.cpp +++ b/AVSCommon/Utils/src/JSONUtils.cpp @@ -1,7 +1,5 @@ /* - * JSONParser.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -81,7 +79,6 @@ static std::ostream& operator<<(std::ostream& stream, rapidjson::Type type) { * @return @c true If the JSON content was valid, @c false otherwise. */ bool parseJSON(const std::string& jsonContent, rapidjson::Document* document) { - if (!document) { ACSDK_ERROR(LX("parseJSONFailed").d("reason", "nullDocument")); return false; @@ -91,8 +88,8 @@ bool parseJSON(const std::string& jsonContent, rapidjson::Document* document) { if (document->HasParseError()) { ACSDK_ERROR(LX("parseJSONFailed") - .d("offset", document->GetErrorOffset()) - .d("error", GetParseError_En(document->GetParseError()))); + .d("offset", document->GetErrorOffset()) + .d("error", GetParseError_En(document->GetParseError()))); return false; } return true; @@ -105,12 +102,11 @@ bool parseJSON(const std::string& jsonContent, rapidjson::Document* document) { * @param[out] value The output parameter where the converted string will be assigned. */ static void serializeJSONObjectToString(const rapidjson::Value& documentNode, std::string* value) { - if (!documentNode.IsObject()) { ACSDK_ERROR(LX("serializeJSONObjectToStringFailed") - .d("reason", "invalidType") - .d("expectedType", rapidjson::Type::kObjectType) - .d("type", documentNode.GetType())); + .d("reason", "invalidType") + .d("expectedType", rapidjson::Type::kObjectType) + .d("type", documentNode.GetType())); return; } @@ -118,16 +114,17 @@ static void serializeJSONObjectToString(const rapidjson::Value& documentNode, st rapidjson::Writer writer(stringBuffer); if (!documentNode.Accept(writer)) { - ACSDK_ERROR(LX("serializeJSONObjectToStringFailed") - .d("reason", "acceptFailed") - .d("handler", "Writer")); + ACSDK_ERROR(LX("serializeJSONObjectToStringFailed").d("reason", "acceptFailed").d("handler", "Writer")); return; } *value = stringBuffer.GetString(); } -bool findNode(const rapidjson::Value& jsonNode, const std::string& key, rapidjson::Value::ConstMemberIterator* iteratorPtr) { +bool findNode( + const rapidjson::Value& jsonNode, + const std::string& key, + rapidjson::Value::ConstMemberIterator* iteratorPtr) { if (!iteratorPtr) { ACSDK_ERROR(LX("findNodeFailed").d("reason", "nullIteratorPtr")); return false; @@ -144,22 +141,12 @@ bool findNode(const rapidjson::Value& jsonNode, const std::string& key, rapidjso return true; } -// TODO: ACSDK-382 Remove and replace references with the template retrieveValue function -bool lookupStringValue(const std::string& jsonContent, const std::string& key, std::string* value) { - return retrieveValue(jsonContent, key, value); -} - -// TODO: ACSDK-382 Remove and replace references with the template retrieveValue function -bool lookupInt64Value(const std::string& jsonContent, const std::string& key, int64_t* value) { - return retrieveValue(jsonContent, key, value); -} - // Overloads of convertToValue bool convertToValue(const rapidjson::Value& documentNode, std::string* value) { if (!value) { - ACSDK_ERROR(LX("convertToStringValueFailed").d("reason", "nullValue")); - return false; + ACSDK_ERROR(LX("convertToStringValueFailed").d("reason", "nullValue")); + return false; } if (!documentNode.IsString() && !documentNode.IsObject()) { @@ -167,9 +154,9 @@ bool convertToValue(const rapidjson::Value& documentNode, std::string* value) { expectedTypes << rapidjson::Type::kObjectType << "/" << rapidjson::Type::kStringType; ACSDK_ERROR(LX("convertToStringValueFailed") - .d("reason", "invalidType") - .d("expectedTypes", expectedTypes.str()) - .d("type", documentNode.GetType())); + .d("reason", "invalidType") + .d("expectedTypes", expectedTypes.str()) + .d("type", documentNode.GetType())); return false; } @@ -184,8 +171,8 @@ bool convertToValue(const rapidjson::Value& documentNode, std::string* value) { bool convertToValue(const rapidjson::Value& documentNode, int64_t* value) { if (!value) { - ACSDK_ERROR(LX("convertToInt64ValueFailed").d("reason", "nullValue")); - return false; + ACSDK_ERROR(LX("convertToInt64ValueFailed").d("reason", "nullValue")); + return false; } if (!documentNode.IsInt64()) { @@ -198,7 +185,23 @@ bool convertToValue(const rapidjson::Value& documentNode, int64_t* value) { return true; } -bool jsonArrayExists(const rapidjson::Value & parsedDocument, const std::string & key) { +bool convertToValue(const rapidjson::Value& documentNode, bool* value) { + if (!value) { + ACSDK_ERROR(LX("convertToBoolValueFailed").d("reason", "nullValue")); + return false; + } + + if (!documentNode.IsBool()) { + ACSDK_ERROR(LX("convertToBoolValueFailed").d("reason", "invalidValue").d("expectedValue", "Bool")); + return false; + } + + *value = documentNode.GetBool(); + + return true; +} + +bool jsonArrayExists(const rapidjson::Value& parsedDocument, const std::string& key) { auto iter = parsedDocument.FindMember(key); if (parsedDocument.MemberEnd() == iter) { ACSDK_ERROR(LX("lookupArrayExistsFailed").d("reason", "keyNotFound").d("key", key)); @@ -213,8 +216,8 @@ bool jsonArrayExists(const rapidjson::Value & parsedDocument, const std::string return true; } -} // namespace jsonUtils -} // namespace json -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace jsonUtils +} // namespace json +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/LibcurlUtils/CurlEasyHandleWrapper.cpp b/AVSCommon/Utils/src/LibcurlUtils/CurlEasyHandleWrapper.cpp new file mode 100644 index 0000000000..57c4448cf7 --- /dev/null +++ b/AVSCommon/Utils/src/LibcurlUtils/CurlEasyHandleWrapper.cpp @@ -0,0 +1,258 @@ +/* + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace libcurlUtils { + +using namespace alexaClientSDK::avsCommon::utils; + +/// String to identify log entries originating from this file. +static const std::string TAG("CurlEasyHandleWrapper"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/// MIME Content-Type for JSON data +static std::string JSON_MIME_TYPE = "text/json"; +/// MIME Content-Type for octet stream data +static std::string OCTET_MIME_TYPE = "application/octet-stream"; + +CurlEasyHandleWrapper::CurlEasyHandleWrapper() : + m_handle{curl_easy_init()}, + m_requestHeaders{nullptr}, + m_postHeaders{nullptr}, + m_post{nullptr} { + if (m_handle == nullptr) { + ACSDK_ERROR(LX("CurlEasyHandleWrapperFailed").d("reason", "curl_easy_init failed")); + } else { + setDefaultOptions(); + } +}; + +CurlEasyHandleWrapper::~CurlEasyHandleWrapper() { + cleanupResources(); + if (m_handle != nullptr) { + curl_easy_cleanup(m_handle); + } +}; + +bool CurlEasyHandleWrapper::reset() { + cleanupResources(); + long responseCode = 0; + CURLcode ret = curl_easy_getinfo(m_handle, CURLINFO_RESPONSE_CODE, &responseCode); + if (ret != CURLE_OK) { + ACSDK_ERROR(LX("resetFailed") + .d("reason", "curlFailure") + .d("method", "curl_easy_getinfo") + .d("info", "CURLINFO_RESPONSE_CODE") + .d("error", curl_easy_strerror(ret))); + curl_easy_cleanup(m_handle); + m_handle = curl_easy_init(); + // If we can't create a new handle don't try to set options + if (!m_handle) { + ACSDK_ERROR(LX("resetFailed").d("reason", "curlFailure").d("method", "curl_easy_init")); + return false; + } + return setDefaultOptions(); + } + + /* + * It appears that re-using a curl easy handle after receiving an HTTP 204 (Success No Content) + * causes the next transfer to timeout. As a workaround just cleanup the handle and create a new one + * if we receive a 204. + * + * This may be related to an older curl version. This workaround is confirmed unneeded for curl 7.55.1 + */ + if (HTTPResponseCode::SUCCESS_NO_CONTENT == responseCode) { + ACSDK_DEBUG(LX("reset").d("responseCode", "HTTP_RESPONSE_SUCCESS_NO_CONTENT")); + curl_easy_cleanup(m_handle); + m_handle = curl_easy_init(); + if (!m_handle) { + ACSDK_ERROR(LX("resetFailed").d("reason", "curlFailure").d("method", "curl_easy_init")); + return false; + } + } else { + curl_easy_reset(m_handle); + } + return setDefaultOptions(); +} + +bool CurlEasyHandleWrapper::isValid() { + return m_handle != nullptr; +} + +CURL* CurlEasyHandleWrapper::getCurlHandle() { + return m_handle; +} + +bool CurlEasyHandleWrapper::addHTTPHeader(const std::string& header) { + m_requestHeaders = curl_slist_append(m_requestHeaders, header.c_str()); + if (!m_requestHeaders) { + ACSDK_ERROR(LX("addHTTPHeaderFailed").d("reason", "curlFailure").d("method", "curl_slist_append")); + ACSDK_DEBUG(LX("addHTTPHeaderFailed").sensitive("header", header)); + return false; + } + return setopt(CURLOPT_HTTPHEADER, m_requestHeaders); +} + +bool CurlEasyHandleWrapper::addPostHeader(const std::string& header) { + m_postHeaders = curl_slist_append(m_postHeaders, header.c_str()); + if (!m_postHeaders) { + ACSDK_ERROR(LX("addPostHeaderFailed").d("reason", "curlFailure").d("method", "curl_slist_append")); + ACSDK_DEBUG(LX("addPostHeaderFailed").sensitive("header", header)); + return false; + } + return true; +} + +bool CurlEasyHandleWrapper::setURL(const std::string& url) { + return setopt(CURLOPT_URL, url.c_str()); +} + +bool CurlEasyHandleWrapper::setTransferType(TransferType type) { + bool ret = false; + switch (type) { + case TransferType::kGET: + ret = setopt(CURLOPT_HTTPGET, 1L); + break; + case TransferType::kPOST: + ret = setopt(CURLOPT_HTTPPOST, m_post); + break; + } + return ret; +} + +bool CurlEasyHandleWrapper::setPostContent(const std::string& fieldName, const std::string& payload) { + curl_httppost* last = nullptr; + CURLFORMcode ret = curl_formadd( + &m_post, + &last, + CURLFORM_COPYNAME, + fieldName.c_str(), + CURLFORM_COPYCONTENTS, + payload.c_str(), + CURLFORM_CONTENTTYPE, + JSON_MIME_TYPE.c_str(), + CURLFORM_CONTENTHEADER, + m_postHeaders, + CURLFORM_END); + if (ret) { + ACSDK_ERROR(LX("setPostContentFailed") + .d("reason", "curlFailure") + .d("method", "curl_formadd") + .d("fieldName", fieldName) + .sensitive("content", payload) + .d("curlFormCode", ret)); + + return false; + } + return true; +} + +bool CurlEasyHandleWrapper::setTransferTimeout(const long timeoutSeconds) { + return setopt(CURLOPT_TIMEOUT, timeoutSeconds); +} + +bool CurlEasyHandleWrapper::setPostStream(const std::string& fieldName, void* userData) { + curl_httppost* last = m_post; + CURLFORMcode ret = curl_formadd( + &m_post, + &last, + CURLFORM_COPYNAME, + fieldName.c_str(), + CURLFORM_STREAM, + userData, + CURLFORM_CONTENTTYPE, + OCTET_MIME_TYPE.c_str(), + CURLFORM_END); + if (ret) { + ACSDK_ERROR(LX("setPostStreamFailed") + .d("reason", "curlFailure") + .d("method", "curl_formadd") + .d("fieldName", fieldName) + .d("curlFormCode", ret)); + return false; + } + return true; +} + +bool CurlEasyHandleWrapper::setPostData(const std::string& data) { + return setopt(CURLOPT_POSTFIELDS, data.c_str()); +} + +bool CurlEasyHandleWrapper::setConnectionTimeout(const std::chrono::seconds timeoutSeconds) { + return setopt(CURLOPT_CONNECTTIMEOUT, timeoutSeconds.count()); +} + +bool CurlEasyHandleWrapper::setWriteCallback(CurlCallback callback, void* userData) { + return setopt(CURLOPT_WRITEFUNCTION, callback) && (userData == nullptr || setopt(CURLOPT_WRITEDATA, userData)); +} + +bool CurlEasyHandleWrapper::setHeaderCallback(CurlCallback callback, void* userData) { + return setopt(CURLOPT_HEADERFUNCTION, callback) && (userData == nullptr || setopt(CURLOPT_HEADERDATA, userData)); +} + +bool CurlEasyHandleWrapper::setReadCallback(CurlCallback callback, void* userData) { + return setopt(CURLOPT_READFUNCTION, callback) && (userData == nullptr || setopt(CURLOPT_READDATA, userData)); +} + +void CurlEasyHandleWrapper::cleanupResources() { + if (m_requestHeaders) { + curl_slist_free_all(m_requestHeaders); + m_requestHeaders = nullptr; + } + + if (m_postHeaders) { + curl_slist_free_all(m_postHeaders); + m_postHeaders = nullptr; + } + + if (m_post) { + curl_formfree(m_post); + m_post = nullptr; + } +} + +bool CurlEasyHandleWrapper::setDefaultOptions() { + if (prepareForTLS(m_handle)) { + /* + * The documentation from libcurl recommends setting CURLOPT_NOSIGNAL to 1 for multi-threaded applications. + * https://curl.haxx.se/libcurl/c/threadsafe.html + */ + return setopt(CURLOPT_NOSIGNAL, 1); + } + ACSDK_ERROR(LX("setDefaultOptions").d("reason", "prepareForTLS failed")); + curl_easy_cleanup(m_handle); + m_handle = nullptr; + return false; +} + +} // namespace libcurlUtils +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/LibcurlUtils/CurlMultiHandleWrapper.cpp b/AVSCommon/Utils/src/LibcurlUtils/CurlMultiHandleWrapper.cpp new file mode 100644 index 0000000000..bdf158d2b9 --- /dev/null +++ b/AVSCommon/Utils/src/LibcurlUtils/CurlMultiHandleWrapper.cpp @@ -0,0 +1,114 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace libcurlUtils { + +using namespace alexaClientSDK::avsCommon::utils; + +/// String to identify log entries originating from this file. +static const std::string TAG("CurlMultiHandleWrapper"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +std::unique_ptr CurlMultiHandleWrapper::create() { + auto handle = curl_multi_init(); + if (!handle) { + ACSDK_ERROR(LX("createFailed").d("reason", "curlMultiInitFailed")); + return nullptr; + } + return std::unique_ptr(new CurlMultiHandleWrapper(handle)); +} + +CurlMultiHandleWrapper::~CurlMultiHandleWrapper() { + bool shouldCleanup = true; + for (auto streamHandle : m_streamHandles) { + auto result = curl_multi_remove_handle(m_handle, streamHandle); + if (result != CURLM_OK) { + ACSDK_ERROR(LX("curlMultiRemoveHandleFailed").d("error", curl_multi_strerror(result))); + shouldCleanup = false; + } + } + m_streamHandles.clear(); + if (shouldCleanup) { + curl_multi_cleanup(m_handle); + } else { + // If removal of any stream handles failed, skip curl_multi_cleanup() because it will hang. + ACSDK_ERROR(LX("multiHandleLeaked").d("reason", "curlMultiRemoveHandleFailed")); + } + m_handle = nullptr; +} + +CURLM* CurlMultiHandleWrapper::getCurlHandle() { + return m_handle; +} + +CURLMcode CurlMultiHandleWrapper::addHandle(CURL* handle) { + auto result = curl_multi_add_handle(m_handle, handle); + if (CURLM_OK == result) { + m_streamHandles.insert(handle); + } else { + ACSDK_ERROR(LX("curlMultiAddHandleFailed").d("error", curl_multi_strerror(result))); + } + return result; +} + +CURLMcode CurlMultiHandleWrapper::removeHandle(CURL* handle) { + auto result = curl_multi_remove_handle(m_handle, handle); + if (CURLM_OK == result) { + m_streamHandles.erase(handle); + } else { + ACSDK_ERROR(LX("curlMultiRemoveHandleFailed").d("error", curl_multi_strerror(result))); + } + return result; +} + +CURLMcode CurlMultiHandleWrapper::perform(int* runningHandles) { + auto result = curl_multi_perform(m_handle, runningHandles); + if (result != CURLM_OK && result != CURLM_CALL_MULTI_PERFORM) { + ACSDK_ERROR(LX("curlMultiPerformFailed").d("error", curl_multi_strerror(result))); + } + return result; +} + +CURLMcode CurlMultiHandleWrapper::wait(std::chrono::milliseconds timeout, int* countHandlesUpdated) { + auto result = curl_multi_wait(m_handle, NULL, 0, timeout.count(), countHandlesUpdated); + if (result != CURLM_OK) { + ACSDK_ERROR(LX("curlMultiWaitFailed").d("error", curl_multi_strerror(result))); + } + return result; +} + +CURLMsg* CurlMultiHandleWrapper::infoRead(int* messagesInQueue) { + return curl_multi_info_read(m_handle, messagesInQueue); +} + +CurlMultiHandleWrapper::CurlMultiHandleWrapper(CURLM* handle) : m_handle{handle} { +} + +} // namespace libcurlUtils +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/LibcurlUtils/HTTPContentFetcherFactory.cpp b/AVSCommon/Utils/src/LibcurlUtils/HTTPContentFetcherFactory.cpp new file mode 100644 index 0000000000..46104598eb --- /dev/null +++ b/AVSCommon/Utils/src/LibcurlUtils/HTTPContentFetcherFactory.cpp @@ -0,0 +1,33 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace libcurlUtils { + +std::unique_ptr HTTPContentFetcherFactory::create( + const std::string& url) { + return avsCommon::utils::memory::make_unique(url); +} + +} // namespace libcurlUtils +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/LibcurlUtils/HttpPost.cpp b/AVSCommon/Utils/src/LibcurlUtils/HttpPost.cpp new file mode 100644 index 0000000000..58dc60e2d5 --- /dev/null +++ b/AVSCommon/Utils/src/LibcurlUtils/HttpPost.cpp @@ -0,0 +1,107 @@ +/* + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace libcurlUtils { + +using namespace alexaClientSDK::avsCommon::utils; + +/// String to identify log entries originating from this file. +static const std::string TAG("HttpPost"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +std::unique_ptr HttpPost::create() { + std::unique_ptr httpPost(new HttpPost()); + if (httpPost->m_curl.isValid()) { + return httpPost; + } + return nullptr; +} + +bool HttpPost::addHTTPHeader(const std::string& header) { + return m_curl.addHTTPHeader(header); +} + +long HttpPost::doPost( + const std::string& url, + const std::string& data, + std::chrono::seconds timeout, + std::string& body) { + std::lock_guard lock(m_mutex); + + body.clear(); + + if (!m_curl.setTransferTimeout(static_cast(timeout.count())) || !m_curl.setURL(url) || + !m_curl.setPostData(data) || !m_curl.setWriteCallback(staticWriteCallbackLocked, &body)) { + return HTTPResponseCode::HTTP_RESPONSE_CODE_UNDEFINED; + } + + auto curlHandle = m_curl.getCurlHandle(); + auto result = curl_easy_perform(curlHandle); + + if (result != CURLE_OK) { + ACSDK_ERROR(LX("doPostFailed") + .d("reason", "curl_easy_performFailed") + .d("result", result) + .d("error", curl_easy_strerror(result))); + body.clear(); + return HTTPResponseCode::HTTP_RESPONSE_CODE_UNDEFINED; + } + + long responseCode = 0; + result = curl_easy_getinfo(curlHandle, CURLINFO_RESPONSE_CODE, &responseCode); + if (result != CURLE_OK) { + ACSDK_ERROR(LX("doPostFailed") + .d("reason", "curl_easy_getinfoFailed") + .d("property", "CURLINFO_RESPONSE_CODE") + .d("result", result) + .d("error", curl_easy_strerror(result))); + body.clear(); + return HTTPResponseCode::HTTP_RESPONSE_CODE_UNDEFINED; + } else { + ACSDK_DEBUG(LX("doPostSucceeded").d("code", responseCode)); + return responseCode; + } +} + +size_t HttpPost::staticWriteCallbackLocked(char* ptr, size_t size, size_t nmemb, void* userdata) { + if (!userdata) { + ACSDK_ERROR(LX("staticWriteCallbackFailed").d("reason", "nullUserData")); + return 0; + } + + size_t count = size * nmemb; + auto body = static_cast(userdata); + body->append(ptr, count); + return count; +} + +} // namespace libcurlUtils +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/LibcurlUtils/LibCurlHttpContentFetcher.cpp b/AVSCommon/Utils/src/LibcurlUtils/LibCurlHttpContentFetcher.cpp new file mode 100644 index 0000000000..2e3c40bdcb --- /dev/null +++ b/AVSCommon/Utils/src/LibcurlUtils/LibCurlHttpContentFetcher.cpp @@ -0,0 +1,276 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace libcurlUtils { + +/// String to identify log entries originating from this file. +static const std::string TAG("LibCurlHttpContentFetcher"); + +/** + * The timeout for a blocking write call to an @c AttachmentWriter. This value may be increased to decrease wakeups but + * may also increase latency. + */ +static const std::chrono::milliseconds TIMEOUT_FOR_BLOCKING_WRITE = std::chrono::milliseconds(100); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +size_t LibCurlHttpContentFetcher::headerCallback(char* data, size_t size, size_t nmemb, void* userData) { + if (!userData) { + ACSDK_ERROR(LX("headerCallback").d("reason", "nullUserDataPointer")); + return 0; + } + std::string line(static_cast(data), size * nmemb); + std::transform(line.begin(), line.end(), line.begin(), ::tolower); + if (line.find("http") == 0) { + // To find lines like: "HTTP/1.1 200 OK" + std::istringstream iss(line); + std::string httpVersion; + long statusCode; + iss >> httpVersion >> statusCode; + LibCurlHttpContentFetcher* thisObject = static_cast(userData); + thisObject->m_lastStatusCode = statusCode; + } else if (line.find("content-type") == 0) { + // To find lines like: "Content-Type: audio/x-mpegurl; charset=utf-8" + std::istringstream iss(line); + std::string contentTypeBeginning; + std::string contentType; + iss >> contentTypeBeginning >> contentType; + + size_t separator = contentType.find(";"); + if (separator != std::string::npos) { + // Remove characters after the separator ; + contentType.erase(separator); + } + LibCurlHttpContentFetcher* thisObject = static_cast(userData); + thisObject->m_lastContentType = contentType; + } + return size * nmemb; +} + +size_t LibCurlHttpContentFetcher::bodyCallback(char* data, size_t size, size_t nmemb, void* userData) { + if (!userData) { + ACSDK_ERROR(LX("bodyCallback").d("reason", "nullUserDataPointer")); + return 0; + } + LibCurlHttpContentFetcher* thisObject = static_cast(userData); + if (thisObject->m_done) { + // In order to properly quit when downloading live content, which block forever when performing a GET request + return 0; + } + if (!thisObject->m_bodyCallbackBegan) { + thisObject->m_bodyCallbackBegan = true; + thisObject->m_statusCodePromise.set_value(thisObject->m_lastStatusCode); + thisObject->m_contentTypePromise.set_value(thisObject->m_lastContentType); + } + auto streamWriter = thisObject->m_streamWriter; + size_t totalBytesWritten = 0; + + if (streamWriter) { + size_t targetNumBytes = size * nmemb; + + while (totalBytesWritten < targetNumBytes && !thisObject->m_done) { + avsCommon::avs::attachment::AttachmentWriter::WriteStatus writeStatus = + avsCommon::avs::attachment::AttachmentWriter::WriteStatus::OK; + + size_t numBytesWritten = streamWriter->write( + data, + targetNumBytes - totalBytesWritten, + &writeStatus, + std::chrono::milliseconds(TIMEOUT_FOR_BLOCKING_WRITE)); + totalBytesWritten += numBytesWritten; + data += numBytesWritten; + + switch (writeStatus) { + case avsCommon::avs::attachment::AttachmentWriter::WriteStatus::CLOSED: + case avsCommon::avs::attachment::AttachmentWriter::WriteStatus::ERROR_BYTES_LESS_THAN_WORD_SIZE: + case avsCommon::avs::attachment::AttachmentWriter::WriteStatus::ERROR_INTERNAL: + return totalBytesWritten; + case avsCommon::avs::attachment::AttachmentWriter::WriteStatus::TIMEDOUT: + case avsCommon::avs::attachment::AttachmentWriter::WriteStatus::OK: + // might still have bytes to write + continue; + case avsCommon::avs::attachment::AttachmentWriter::WriteStatus::OK_BUFFER_FULL: + ACSDK_ERROR(LX(__func__).d("unexpected return code", "OK_BUFFER_FULL")); + return 0; + } + ACSDK_ERROR(LX(__func__).m("unexpected writeStatus")); + return 0; + } + } + return totalBytesWritten; +} + +size_t LibCurlHttpContentFetcher::noopCallback(char* data, size_t size, size_t nmemb, void* userData) { + return 0; +} + +LibCurlHttpContentFetcher::LibCurlHttpContentFetcher(const std::string& url) : + m_url{url}, + m_bodyCallbackBegan{false}, + m_lastStatusCode{0}, + m_done{false} { + m_hasObjectBeenUsed.clear(); +} + +std::unique_ptr LibCurlHttpContentFetcher::getContent( + FetchOptions fetchOption, + std::shared_ptr writer) { + if (m_hasObjectBeenUsed.test_and_set()) { + return nullptr; + } + if (!m_curlWrapper.setURL(m_url)) { + ACSDK_ERROR(LX("getContentFailed").d("reason", "failedToSetUrl")); + return nullptr; + } + auto curlReturnValue = curl_easy_setopt(m_curlWrapper.getCurlHandle(), CURLOPT_FOLLOWLOCATION, 1L); + if (curlReturnValue != CURLE_OK) { + ACSDK_ERROR(LX("getContentFailed").d("reason", "enableFollowRedirectsFailed")); + return nullptr; + } + curlReturnValue = curl_easy_setopt(m_curlWrapper.getCurlHandle(), CURLOPT_AUTOREFERER, 1L); + if (curlReturnValue != CURLE_OK) { + ACSDK_ERROR(LX("getContentFailed").d("reason", "enableAutoReferralSettingToRedirectsFailed")); + return nullptr; + } + // This enables the libcurl cookie engine, allowing it to send cookies + curlReturnValue = curl_easy_setopt(m_curlWrapper.getCurlHandle(), CURLOPT_COOKIEFILE, ""); + if (curlReturnValue != CURLE_OK) { + ACSDK_ERROR(LX("getContentFailed").d("reason", "enableLibCurlCookieEngineFailed")); + return nullptr; + } + auto httpStatusCodeFuture = m_statusCodePromise.get_future(); + auto contentTypeFuture = m_contentTypePromise.get_future(); + + std::shared_ptr stream = nullptr; + + // This flag will remain false if the caller of getContent() passed in their own writer. + bool writerWasCreatedLocally = false; + + switch (fetchOption) { + case FetchOptions::CONTENT_TYPE: + /* + * Since this option only wants the content-type, I set a noop callback for parsing the body of the HTTP + * response. For some webpages, it is required to set a body callback in order for the full webpage data + * to render. + */ + curlReturnValue = curl_easy_setopt(m_curlWrapper.getCurlHandle(), CURLOPT_WRITEFUNCTION, noopCallback); + if (curlReturnValue != CURLE_OK) { + ACSDK_ERROR(LX("getContentFailed").d("reason", "failedToSetCurlCallback")); + return nullptr; + } + m_thread = std::thread([this]() { + long finalResponseCode = 0; + char* contentType = nullptr; + auto curlReturnValue = curl_easy_perform(m_curlWrapper.getCurlHandle()); + if (curlReturnValue != CURLE_OK && curlReturnValue != CURLE_WRITE_ERROR) { + ACSDK_ERROR(LX("curlEasyPerformFailed").d("error", curl_easy_strerror(curlReturnValue))); + } + curlReturnValue = + curl_easy_getinfo(m_curlWrapper.getCurlHandle(), CURLINFO_RESPONSE_CODE, &finalResponseCode); + if (curlReturnValue != CURLE_OK) { + ACSDK_ERROR(LX("curlEasyGetInfoFailed").d("error", curl_easy_strerror(curlReturnValue))); + } + ACSDK_DEBUG9(LX("getContent").d("responseCode", finalResponseCode).sensitive("url", m_url)); + m_statusCodePromise.set_value(finalResponseCode); + curlReturnValue = curl_easy_getinfo(m_curlWrapper.getCurlHandle(), CURLINFO_CONTENT_TYPE, &contentType); + if (curlReturnValue == CURLE_OK && contentType) { + ACSDK_DEBUG9(LX("getContent").d("contentType", contentType).sensitive("url", m_url)); + m_contentTypePromise.set_value(std::string(contentType)); + } else { + ACSDK_ERROR(LX("curlEasyGetInfoFailed").d("error", curl_easy_strerror(curlReturnValue))); + ACSDK_ERROR(LX("getContent").d("contentType", "failedToGetContentType").sensitive("url", m_url)); + m_contentTypePromise.set_value(""); + } + }); + break; + case FetchOptions::ENTIRE_BODY: + if (!writer) { + // Using the url as the identifier for the attachment + stream = std::make_shared(m_url); + writer = stream->createWriter(sds::WriterPolicy::BLOCKING); + writerWasCreatedLocally = true; + } + + m_streamWriter = writer; + + if (!m_streamWriter) { + ACSDK_ERROR(LX("getContentFailed").d("reason", "failedToCreateWriter")); + return nullptr; + } + if (!m_curlWrapper.setWriteCallback(bodyCallback, this)) { + ACSDK_ERROR(LX("getContentFailed").d("reason", "failedToSetCurlBodyCallback")); + return nullptr; + } + if (!m_curlWrapper.setHeaderCallback(headerCallback, this)) { + ACSDK_ERROR(LX("getContentFailed").d("reason", "failedToSetCurlHeaderCallback")); + return nullptr; + } + m_thread = std::thread([this, writerWasCreatedLocally]() { + auto curlReturnValue = curl_easy_perform(m_curlWrapper.getCurlHandle()); + if (curlReturnValue != CURLE_OK) { + ACSDK_ERROR(LX("curlEasyPerformFailed").d("error", curl_easy_strerror(curlReturnValue))); + } + if (!m_bodyCallbackBegan) { + m_statusCodePromise.set_value(m_lastStatusCode); + m_contentTypePromise.set_value(m_lastContentType); + } + /* + * If the writer was created locally, its job is done and can be safely closed. + */ + if (writerWasCreatedLocally) { + m_streamWriter->close(); + } + + /* + * Note: If the writer was not created locally, its owner must ensure that it closes when necessary. + * In the case of a livestream, if the writer is not closed the LibCurlHttpContentFetcher + * will continue to download data indefinitely. + */ + + m_done = true; + }); + break; + default: + return nullptr; + } + return avsCommon::utils::memory::make_unique( + avsCommon::utils::HTTPContent{std::move(httpStatusCodeFuture), std::move(contentTypeFuture), stream}); +} + +LibCurlHttpContentFetcher::~LibCurlHttpContentFetcher() { + if (m_thread.joinable()) { + m_thread.join(); + } +} + +} // namespace libcurlUtils +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/LibcurlUtils.cpp b/AVSCommon/Utils/src/LibcurlUtils/LibcurlUtils.cpp similarity index 61% rename from AVSCommon/Utils/src/LibcurlUtils.cpp rename to AVSCommon/Utils/src/LibcurlUtils/LibcurlUtils.cpp index 04df63d4f4..d4cf445113 100644 --- a/AVSCommon/Utils/src/LibcurlUtils.cpp +++ b/AVSCommon/Utils/src/LibcurlUtils/LibcurlUtils.cpp @@ -1,7 +1,5 @@ /* - * LibcurlUtils.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -43,6 +41,9 @@ static const std::string LIBCURLUTILS_CONFIG_KEY = "libcurlUtils"; /// Key for looking up a configuration value for @c CURLOPT_CAPATH static const std::string CAPATH_CONFIG_KEY = "CURLOPT_CAPATH"; +/// Key for looking up a configuration value for verifying hosts and peers. +static const std::string VERIFY_HOSTS_AND_PEERS_CONFIG_KEY = "verifyHostsAndPeers"; + /** * Set an @c option on a @c libcurl handle to @c value with stringification of @c option name and @c value for logging. * @@ -63,16 +64,20 @@ static const std::string CAPATH_CONFIG_KEY = "CURLOPT_CAPATH"; * @param valueAsString String representation of the value being set. * @return Whether the option was set. */ -template +template static bool setopt( - CURL* handle, CURLoption option, ValueType value, const char* optionName, const char* valueAsString) { + CURL* handle, + CURLoption option, + ValueType value, + const char* optionName, + const char* valueAsString) { auto result = curl_easy_setopt(handle, option, value); if (result != CURLE_OK) { ACSDK_ERROR(LX("curl_easy_setoptFailed") - .d("option", optionName) - .sensitive("value", valueAsString) - .d("result", result) - .d("error", curl_easy_strerror(result))); + .d("option", optionName) + .sensitive("value", valueAsString) + .d("result", result) + .d("error", curl_easy_strerror(result))); return false; } return true; @@ -84,22 +89,35 @@ bool prepareForTLS(CURL* handle) { return false; } if (!(SETOPT(handle, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2) && - SETOPT(handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0) && - SETOPT(handle, CURLOPT_USE_SSL, CURLUSESSL_ALL) && - SETOPT(handle, CURLOPT_SSL_VERIFYPEER, 1L) && - SETOPT(handle, CURLOPT_SSL_VERIFYHOST, 2L))) { + SETOPT(handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0) && + SETOPT(handle, CURLOPT_USE_SSL, CURLUSESSL_ALL) && SETOPT(handle, CURLOPT_SSL_VERIFYPEER, 1L) && + SETOPT(handle, CURLOPT_SSL_VERIFYHOST, 2L))) { return false; } + auto config = configuration::ConfigurationNode::getRoot()[LIBCURLUTILS_CONFIG_KEY]; + std::string caPath; - if (configuration::ConfigurationNode::getRoot()[LIBCURLUTILS_CONFIG_KEY].getString(CAPATH_CONFIG_KEY, &caPath)) { - return setopt(handle, CURLOPT_CAPATH, caPath.c_str(), "CURLOPT_CAPATH", caPath.c_str()); + if (config.getString(CAPATH_CONFIG_KEY, &caPath) && + !setopt(handle, CURLOPT_CAPATH, caPath.c_str(), "CURLOPT_CAPATH", caPath.c_str())) { + return false; + } + +// Only allow disabling the verification of hosts and peers in debug configurations. +#ifdef DEBUG + bool verifyHostsAndPeers = true; + if (config.getBool(VERIFY_HOSTS_AND_PEERS_CONFIG_KEY, &verifyHostsAndPeers) && !verifyHostsAndPeers) { + if (!(SETOPT(handle, CURLOPT_SSL_VERIFYPEER, 0L) && SETOPT(handle, CURLOPT_SSL_VERIFYHOST, 0L))) { + return false; + } + ACSDK_WARN(LX("verificationOfHostsAndPeersDisabled")); } +#endif return true; } -} // namespace libcurlUtils -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK +} // namespace libcurlUtils +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Logger/ConsoleLogger.cpp b/AVSCommon/Utils/src/Logger/ConsoleLogger.cpp index 0a4449fa53..1fe922af80 100644 --- a/AVSCommon/Utils/src/Logger/ConsoleLogger.cpp +++ b/AVSCommon/Utils/src/Logger/ConsoleLogger.cpp @@ -1,7 +1,5 @@ /* - * ConsoleLogger.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -22,6 +20,8 @@ #include "AVSCommon/Utils/Logger/ConsoleLogger.h" #include "AVSCommon/Utils/Logger/LoggerUtils.h" +#include "AVSCommon/Utils/Logger/ThreadMoniker.h" +#include "AVSCommon/Utils/SDKVersion.h" namespace alexaClientSDK { namespace avsCommon { @@ -31,39 +31,40 @@ namespace logger { /// Configuration key for DefaultLogger settings static const std::string CONFIG_KEY_DEFAULT_LOGGER = "consoleLogger"; -Logger& ConsoleLogger::instance() { - static ConsoleLogger singleConsoletLogger; +std::shared_ptr ConsoleLogger::instance() { + static std::shared_ptr singleConsoletLogger = std::shared_ptr(new ConsoleLogger); return singleConsoletLogger; } -/// Mutex to serialize output of log lines to @c std::cout. -static std::mutex g_coutMutex; - void ConsoleLogger::emit( - Level level, - std::chrono::system_clock::time_point time, - const char *threadMoniker, - const char *text) { - std::lock_guard lock(g_coutMutex); - std::cout << formatLogString(level, time, threadMoniker, text) << std::endl; + Level level, + std::chrono::system_clock::time_point time, + const char* threadMoniker, + const char* text) { + std::lock_guard lock(m_coutMutex); + std::cout << m_logFormatter.format(level, time, threadMoniker, text) << std::endl; } -ConsoleLogger::ConsoleLogger() : +ConsoleLogger::ConsoleLogger() : Logger(Level::UNKNOWN) { #ifdef DEBUG - Logger(Level::DEBUG0) + setLevel(Level::DEBUG0); #else - Logger(Level::INFO) -#endif // DEBUG -{ + setLevel(Level::INFO); +#endif // DEBUG init(configuration::ConfigurationNode::getRoot()[CONFIG_KEY_DEFAULT_LOGGER]); + std::string currentVersionLogEntry("sdkVersion: " + avsCommon::utils::sdkVersion::getCurrentVersion()); + emit( + alexaClientSDK::avsCommon::utils::logger::Level::INFO, + std::chrono::system_clock::now(), + ThreadMoniker::getThisThreadMoniker().c_str(), + currentVersionLogEntry.c_str()); } -Logger& getConsoleLogger() { +std::shared_ptr getConsoleLogger() { return ConsoleLogger::instance(); } -} // namespace logger -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK - +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Logger/Level.cpp b/AVSCommon/Utils/src/Logger/Level.cpp index bceba929fb..1d7710725c 100644 --- a/AVSCommon/Utils/src/Logger/Level.cpp +++ b/AVSCommon/Utils/src/Logger/Level.cpp @@ -1,7 +1,5 @@ /* - * Level.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -24,7 +22,9 @@ namespace avsCommon { namespace utils { namespace logger { -#define LEVEL_TO_NAME(name) case Level::name: return #name; +#define LEVEL_TO_NAME(name) \ + case Level::name: \ + return #name; std::string convertLevelToName(Level in) { switch (in) { @@ -48,7 +48,9 @@ std::string convertLevelToName(Level in) { return "UNKNOWN"; } -#define LEVEL_TO_CHAR(name, ch) case Level::name: return ch; +#define LEVEL_TO_CHAR(name, ch) \ + case Level::name: \ + return ch; char convertLevelToChar(Level in) { switch (in) { @@ -72,27 +74,26 @@ char convertLevelToChar(Level in) { return '?'; } -#define NAME_TO_LEVEL(name) {#name, Level::name} +#define NAME_TO_LEVEL(name) \ + { #name, Level::name } -Level convertNameToLevel(const std::string &in) { - static std::unordered_map nameToLevel = { - NAME_TO_LEVEL(DEBUG9), - NAME_TO_LEVEL(DEBUG8), - NAME_TO_LEVEL(DEBUG7), - NAME_TO_LEVEL(DEBUG6), - NAME_TO_LEVEL(DEBUG5), - NAME_TO_LEVEL(DEBUG4), - NAME_TO_LEVEL(DEBUG3), - NAME_TO_LEVEL(DEBUG2), - NAME_TO_LEVEL(DEBUG1), - NAME_TO_LEVEL(DEBUG0), - NAME_TO_LEVEL(INFO), - NAME_TO_LEVEL(WARN), - NAME_TO_LEVEL(ERROR), - NAME_TO_LEVEL(CRITICAL), - NAME_TO_LEVEL(NONE), - NAME_TO_LEVEL(UNKNOWN) - }; +Level convertNameToLevel(const std::string& in) { + static std::unordered_map nameToLevel = {NAME_TO_LEVEL(DEBUG9), + NAME_TO_LEVEL(DEBUG8), + NAME_TO_LEVEL(DEBUG7), + NAME_TO_LEVEL(DEBUG6), + NAME_TO_LEVEL(DEBUG5), + NAME_TO_LEVEL(DEBUG4), + NAME_TO_LEVEL(DEBUG3), + NAME_TO_LEVEL(DEBUG2), + NAME_TO_LEVEL(DEBUG1), + NAME_TO_LEVEL(DEBUG0), + NAME_TO_LEVEL(INFO), + NAME_TO_LEVEL(WARN), + NAME_TO_LEVEL(ERROR), + NAME_TO_LEVEL(CRITICAL), + NAME_TO_LEVEL(NONE), + NAME_TO_LEVEL(UNKNOWN)}; auto it = nameToLevel.find(in); if (it != nameToLevel.end()) { return it->second; @@ -100,8 +101,7 @@ Level convertNameToLevel(const std::string &in) { return Level::UNKNOWN; } -} // namespace logger -} /// namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK - +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Logger/LogEntry.cpp b/AVSCommon/Utils/src/Logger/LogEntry.cpp index b4c18d8875..cfb2f3aa5c 100644 --- a/AVSCommon/Utils/src/Logger/LogEntry.cpp +++ b/AVSCommon/Utils/src/Logger/LogEntry.cpp @@ -1,7 +1,5 @@ /* - * LogEntry.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -54,7 +52,6 @@ static const std::string BOOL_TRUE = "true"; /// String for boolean FALSE static const std::string BOOL_FALSE = "false"; - LogEntry::LogEntry(const std::string& source, const char* event) : m_hasMetadata(false) { m_stream << source << SECTION_SEPARATOR << event; } @@ -140,7 +137,7 @@ void LogEntry::appendEscapedString(const char* in) { } } -} // namespace logger -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Logger/LogEntryBuffer.cpp b/AVSCommon/Utils/src/Logger/LogEntryBuffer.cpp index 2593c3209f..2d0812958a 100644 --- a/AVSCommon/Utils/src/Logger/LogEntryBuffer.cpp +++ b/AVSCommon/Utils/src/Logger/LogEntryBuffer.cpp @@ -1,7 +1,5 @@ /* - * LogEntryBuffer.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -69,7 +67,7 @@ const char* LogEntryBuffer::c_str() const { return m_base; } -} // namespace logger -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Logger/LogEntryStream.cpp b/AVSCommon/Utils/src/Logger/LogEntryStream.cpp index 871f5319bd..f5a7121f5b 100644 --- a/AVSCommon/Utils/src/Logger/LogEntryStream.cpp +++ b/AVSCommon/Utils/src/Logger/LogEntryStream.cpp @@ -1,7 +1,5 @@ /* - * LogEntryStream.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -17,6 +15,8 @@ #include "AVSCommon/Utils/Logger/LogEntryStream.h" +#include "AVSCommon/Utils/RetryTimer.h" + namespace alexaClientSDK { namespace avsCommon { namespace utils { @@ -29,7 +29,7 @@ const char* LogEntryStream::LogEntryStream::c_str() const { return LogEntryBuffer::c_str(); } -} // namespace logger -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Logger/LogStringFormatter.cpp b/AVSCommon/Utils/src/Logger/LogStringFormatter.cpp new file mode 100644 index 0000000000..b851942e2e --- /dev/null +++ b/AVSCommon/Utils/src/Logger/LogStringFormatter.cpp @@ -0,0 +1,90 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +#include "AVSCommon/Utils/Logger/LogStringFormatter.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace logger { + +/// Format string for strftime() to produce date and time in the format "YYYY-MM-DD HH:MM:SS". +static const char* STRFTIME_FORMAT_STRING = "%Y-%m-%d %H:%M:%S"; + +/// Size of buffer needed to hold "YYYY-MM-DD HH:MM:SS" and a null terminator. +static const int DATE_AND_TIME_STRING_SIZE = 20; + +/// Separator between date/time and millis. +static const char TIME_AND_MILLIS_SEPARATOR = '.'; + +// Format string for sprintf() to produce millis in the format "nnn". +static const char* MILLIS_FORMAT_STRING = "%03d"; + +/// Size of buffer needed to hold "nnn" (milliseconds value) and a null terminator +static const int MILLIS_STRING_SIZE = 4; + +/// Separator string between milliseconds value and ExampleLogger name. +static const std::string MILLIS_AND_THREAD_SEPARATOR = " ["; + +/// Separator between thread ID and level indicator in log lines. +static const std::string THREAD_AND_LEVEL_SEPARATOR = "] "; + +/// Separator between level indicator and text in log lines. +static const char LEVEL_AND_TEXT_SEPARATOR = ' '; + +/// Number of milliseconds per second. +static const int MILLISECONDS_PER_SECOND = 1000; + +LogStringFormatter::LogStringFormatter() : m_safeCTimeAccess(timing::SafeCTimeAccess::instance()) { +} + +std::string LogStringFormatter::format( + Level level, + std::chrono::system_clock::time_point time, + const char* threadMoniker, + const char* text) { + bool dateTimeFailure = false; + bool millisecondFailure = false; + char dateTimeString[DATE_AND_TIME_STRING_SIZE]; + auto timeAsTime_t = std::chrono::system_clock::to_time_t(time); + std::tm timeAsTm; + if (!m_safeCTimeAccess->getGmtime(timeAsTime_t, &timeAsTm) || + 0 == strftime(dateTimeString, sizeof(dateTimeString), STRFTIME_FORMAT_STRING, &timeAsTm)) { + dateTimeFailure = true; + } + auto timeMillisPart = static_cast( + std::chrono::duration_cast(time.time_since_epoch()).count() % + MILLISECONDS_PER_SECOND); + char millisString[MILLIS_STRING_SIZE]; + if (std::snprintf(millisString, sizeof(millisString), MILLIS_FORMAT_STRING, timeMillisPart) < 0) { + millisecondFailure = true; + } + + std::stringstream stringToEmit; + stringToEmit << (dateTimeFailure ? "ERROR: strftime() failed. Date and time not logged." : dateTimeString) + << TIME_AND_MILLIS_SEPARATOR + << (millisecondFailure ? "ERROR: snprintf() failed. Milliseconds not logged." : millisString) + << MILLIS_AND_THREAD_SEPARATOR << threadMoniker << THREAD_AND_LEVEL_SEPARATOR + << convertLevelToChar(level) << LEVEL_AND_TEXT_SEPARATOR << text; + return stringToEmit.str(); +} + +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Logger/Logger.cpp b/AVSCommon/Utils/src/Logger/Logger.cpp index d3aae83930..5795cd5d43 100644 --- a/AVSCommon/Utils/src/Logger/Logger.cpp +++ b/AVSCommon/Utils/src/Logger/Logger.cpp @@ -1,7 +1,5 @@ /* - * Logger.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -25,7 +23,10 @@ namespace avsCommon { namespace utils { namespace logger { -/// Configuration key for log level +/// Configuration key for root level "logger" object. +static const std::string CONFIG_KEY_LOGGER = "logger"; + +/// Configuration key for "logLevel" values under "logger" and other per-module objects. static const std::string CONFIG_KEY_LOG_LEVEL = "logLevel"; Logger::Logger(Level level) : m_level{level} { @@ -33,25 +34,29 @@ Logger::Logger(Level level) : m_level{level} { void Logger::log(Level level, const LogEntry& entry) { if (shouldLog(level)) { - emit( - level, - std::chrono::system_clock::now(), - ThreadMoniker::getThisThreadMoniker().c_str(), - entry.c_str()); + emit(level, std::chrono::system_clock::now(), ThreadMoniker::getThisThreadMoniker().c_str(), entry.c_str()); } } void Logger::init(const configuration::ConfigurationNode configuration) { + if (!initLogLevel(configuration)) { + initLogLevel(configuration::ConfigurationNode::getRoot()[CONFIG_KEY_LOGGER]); + } +} + +bool Logger::initLogLevel(const configuration::ConfigurationNode configuration) { std::string name; if (configuration.getString(CONFIG_KEY_LOG_LEVEL, &name)) { Level level = convertNameToLevel(name); if (level != Level::UNKNOWN) { setLevel(level); + return true; } else { // Log without ACSDK_* macros to avoid recursive invocation of constructor. log(Level::ERROR, LogEntry("Logger", "unknownLogLevel").d("name", name)); } } + return false; } void Logger::setLevel(Level level) { @@ -60,9 +65,21 @@ void Logger::setLevel(Level level) { m_level = level; notifyObserversOnLogLevelChanged(); } +#ifndef ACSDK_DEBUG_LOG_ENABLED + if (m_level <= Level::DEBUG0) { + // Log without ACSDK_* macros to avoid recursive invocation of constructor. + log(Level::WARN, + LogEntry("Logger", "debugLogLevelSpecifiedWhenDebugLogsCompiledOut") + .d("level", m_level) + .m("\n" + "\nWARNING: By default DEBUG logs are compiled out of RELEASE builds." + "\nRebuild with the cmake parameter -DCMAKE_BUILD_TYPE=DEBUG to enable debug logs." + "\n")); + } +#endif } -void Logger::addLogLevelObserver(LogLevelObserverInterface * observer) { +void Logger::addLogLevelObserver(LogLevelObserverInterface* observer) { { std::lock_guard lock(m_observersMutex); m_observers.push_back(observer); @@ -72,16 +89,14 @@ void Logger::addLogLevelObserver(LogLevelObserverInterface * observer) { observer->onLogLevelChanged(m_level); } -void Logger::removeLogLevelObserver(LogLevelObserverInterface * observer) { +void Logger::removeLogLevelObserver(LogLevelObserverInterface* observer) { std::lock_guard lock(m_observersMutex); - m_observers.erase( - std::remove(m_observers.begin(), m_observers.end(), observer), - m_observers.end()); + m_observers.erase(std::remove(m_observers.begin(), m_observers.end(), observer), m_observers.end()); } void Logger::notifyObserversOnLogLevelChanged() { - std::vector observersCopy; + std::vector observersCopy; // copy the vector first with the lock { @@ -95,8 +110,7 @@ void Logger::notifyObserversOnLogLevelChanged() { } } -} // namespace logger -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK - +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Logger/LoggerSinkManager.cpp b/AVSCommon/Utils/src/Logger/LoggerSinkManager.cpp index 03b0da2529..ca3026eea6 100644 --- a/AVSCommon/Utils/src/Logger/LoggerSinkManager.cpp +++ b/AVSCommon/Utils/src/Logger/LoggerSinkManager.cpp @@ -1,7 +1,5 @@ /* - * LoggerSinkManager.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -40,7 +38,7 @@ void LoggerSinkManager::addSinkObserver(SinkObserverInterface* observer) { } // notify this observer of the current sink right away - observer->onSinkChanged(*m_sink); + observer->onSinkChanged(m_sink); } void LoggerSinkManager::removeSinkObserver(SinkObserverInterface* observer) { @@ -48,13 +46,11 @@ void LoggerSinkManager::removeSinkObserver(SinkObserverInterface* observer) { return; } std::lock_guard lock(m_sinkObserverMutex); - m_sinkObservers.erase( - std::remove(m_sinkObservers.begin(), m_sinkObservers.end(), observer), - m_sinkObservers.end()); + m_sinkObservers.erase(std::remove(m_sinkObservers.begin(), m_sinkObservers.end(), observer), m_sinkObservers.end()); } -void LoggerSinkManager::changeSinkLogger(Logger& sink) { - if (m_sink == &sink) { +void LoggerSinkManager::initialize(const std::shared_ptr& sink) { + if (m_sink == sink) { // don't do anything if the sink is the same return; } @@ -66,19 +62,18 @@ void LoggerSinkManager::changeSinkLogger(Logger& sink) { observersCopy = m_sinkObservers; } - m_sink = &sink; + m_sink = sink; // call the callbacks for (auto observer : observersCopy) { - observer->onSinkChanged(*m_sink); + observer->onSinkChanged(m_sink); } } -LoggerSinkManager::LoggerSinkManager() : - m_sink(&ACSDK_GET_SINK_LOGGER()) { +LoggerSinkManager::LoggerSinkManager() : m_sink(ACSDK_GET_SINK_LOGGER()) { } -} // namespace logger -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Logger/LoggerUtils.cpp b/AVSCommon/Utils/src/Logger/LoggerUtils.cpp index 4e9cb00a78..be88e5f2bb 100644 --- a/AVSCommon/Utils/src/Logger/LoggerUtils.cpp +++ b/AVSCommon/Utils/src/Logger/LoggerUtils.cpp @@ -1,7 +1,5 @@ /* - * LoggerUtils.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,101 +13,76 @@ * permissions and limitations under the License. */ +#include +#include +#include + #include "AVSCommon/Utils/Logger/LoggerUtils.h" #include "AVSCommon/Utils/Logger/Logger.h" -#include - namespace alexaClientSDK { namespace avsCommon { namespace utils { namespace logger { -/// Format string for strftime() to produce date and time in the format "YYYY-MM-DD HH:MM:SS". -static const char* STRFTIME_FORMAT_STRING = "%Y-%m-%d %H:%M:%S"; - -/// Size of buffer needed to hold "YYYY-MM-DD HH:MM:SS" and a null terminator. -static const int DATE_AND_TIME_STRING_SIZE = 20; - -/// Separator between date/time and millis. -static const char TIME_AND_MILLIS_SEPARATOR = '.'; - -// Format string for sprintf() to produce millis in the format "nnn". -static const char* MILLIS_FORMAT_STRING = "%03d"; - -/// Size of buffer needed to hold "nnn" (milliseconds value) and a null terminator -static const int MILLIS_STRING_SIZE = 4; - -/// Separator string between milliseconds value and ExampleLogger name. -static const std::string MILLIS_AND_THREAD_SEPARATOR = " ["; - -/// Separator between thread ID and level indicator in log lines. -static const std::string THREAD_AND_LEVEL_SEPARATOR = "] "; - -/// Separator between level indicator and text in log lines. -static const char LEVEL_AND_TEXT_SEPARATOR = ' '; - -/// Number of milliseconds per second. -static const int MILLISECONDS_PER_SECOND = 1000; - void acsdkDebug9(const LogEntry& entry) { - logEntry(Level::DEBUG9, entry); + logEntry(Level::DEBUG9, entry); } void acsdkDebug8(const LogEntry& entry) { - logEntry(Level::DEBUG8, entry); + logEntry(Level::DEBUG8, entry); } void acsdkDebug7(const LogEntry& entry) { - logEntry(Level::DEBUG7, entry); + logEntry(Level::DEBUG7, entry); } void acsdkDebug6(const LogEntry& entry) { - logEntry(Level::DEBUG6, entry); + logEntry(Level::DEBUG6, entry); } void acsdkDebug5(const LogEntry& entry) { - logEntry(Level::DEBUG5, entry); + logEntry(Level::DEBUG5, entry); } void acsdkDebug4(const LogEntry& entry) { - logEntry(Level::DEBUG4, entry); + logEntry(Level::DEBUG4, entry); } void acsdkDebug3(const LogEntry& entry) { - logEntry(Level::DEBUG3, entry); + logEntry(Level::DEBUG3, entry); } void acsdkDebug2(const LogEntry& entry) { - logEntry(Level::DEBUG2, entry); + logEntry(Level::DEBUG2, entry); } void acsdkDebug1(const LogEntry& entry) { - logEntry(Level::DEBUG1, entry); + logEntry(Level::DEBUG1, entry); } void acsdkDebug0(const LogEntry& entry) { - logEntry(Level::DEBUG0, entry); + logEntry(Level::DEBUG0, entry); } void acsdkDebug(const LogEntry& entry) { - logEntry(Level::DEBUG0, entry); + logEntry(Level::DEBUG0, entry); } void acsdkInfo(const LogEntry& entry) { - logEntry(Level::INFO, entry); + logEntry(Level::INFO, entry); } void acsdkWarn(const LogEntry& entry) { - logEntry(Level::WARN, entry); + logEntry(Level::WARN, entry); } void acsdkError(const LogEntry& entry) { - logEntry(Level::ERROR, entry); + logEntry(Level::ERROR, entry); } void acsdkCritical(const LogEntry& entry) { - logEntry(Level::CRITICAL, entry); + logEntry(Level::CRITICAL, entry); } void logEntry(Level level, const LogEntry& entry) { @@ -117,42 +90,51 @@ void logEntry(Level level, const LogEntry& entry) { loggerInstance.log(level, entry); } -std::string formatLogString( - Level level, - std::chrono::system_clock::time_point time, - const char *threadMoniker, - const char *text) { - bool dateTimeFailure = false; - bool millisecondFailure = false; - char dateTimeString[DATE_AND_TIME_STRING_SIZE]; - auto timeAsTime_t = std::chrono::system_clock::to_time_t(time); - auto timeAsTmPtr = std::gmtime(&timeAsTime_t); - if (!timeAsTmPtr || 0 == strftime(dateTimeString, sizeof(dateTimeString), STRFTIME_FORMAT_STRING, timeAsTmPtr)) { - dateTimeFailure = true; - } - auto timeMillisPart = static_cast( - std::chrono::duration_cast(time.time_since_epoch()).count() % - MILLISECONDS_PER_SECOND); - char millisString[MILLIS_STRING_SIZE]; - if (std::snprintf(millisString, sizeof(millisString), MILLIS_FORMAT_STRING, timeMillisPart) < 0) { - millisecondFailure = true; +void dumpBytesToStream(std::ostream& stream, const char* prefix, size_t width, const unsigned char* data, size_t size) { + std::ios incomingFormat(nullptr); + incomingFormat.copyfmt(stream); + + stream << std::hex << std::right << std::setfill('0'); + + for (size_t ix = 0; ix < size; ix += width) { + // Output byte offset for this row. + stream << prefix << std::setw(8) << ix; + stream << " : "; + + // Output bytes for this row in hex. + auto columnLimit = ix + width; + auto byteLimit = columnLimit < size ? columnLimit : size; + for (size_t iy = ix; iy < columnLimit; iy++) { + if (iy < byteLimit) { + stream << std::setw(2) << static_cast(data[iy]); + } else { + stream << " "; + } + // Split the output in to 4 byte (8 hex digit) wide columns. + if ((iy < columnLimit - 1) && (iy & 0x03) == 0x03) { + stream << " "; + } + } + + stream << " : "; + + // Output bytes as visible characters. + for (size_t iy = ix; iy < byteLimit; iy++) { + auto ch = data[iy]; + if (std::isprint(ch)) { + stream << ch; + } else { + stream << '.'; + } + } + + stream << std::endl; } - std::stringstream stringToEmit; - stringToEmit - << (dateTimeFailure ? "ERROR: strftime() failed. Date and time not logged." : dateTimeString) - << TIME_AND_MILLIS_SEPARATOR - << (millisecondFailure ? "ERROR: snprintf() failed. Milliseconds not logged." : millisString) - << MILLIS_AND_THREAD_SEPARATOR - << threadMoniker - << THREAD_AND_LEVEL_SEPARATOR - << convertLevelToChar(level) - << LEVEL_AND_TEXT_SEPARATOR - << text; - return stringToEmit.str(); -} - -} // namespace logger -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK + stream.copyfmt(incomingFormat); +} + +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Logger/ModuleLogger.cpp b/AVSCommon/Utils/src/Logger/ModuleLogger.cpp index c4d8c0ed99..62c004a202 100644 --- a/AVSCommon/Utils/src/Logger/ModuleLogger.cpp +++ b/AVSCommon/Utils/src/Logger/ModuleLogger.cpp @@ -1,7 +1,5 @@ /* - * ModuleLogger.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -25,49 +23,48 @@ namespace utils { namespace logger { void ModuleLogger::emit( - Level level, - std::chrono::system_clock::time_point time, - const char *threadId, - const char *text) { + Level level, + std::chrono::system_clock::time_point time, + const char* threadId, + const char* text) { if (shouldLog(level)) { - m_sink.load()->emit(level, time, threadId, text); + m_sink->emit(level, time, threadId, text); } } void ModuleLogger::setLevel(Level level) { - Logger::m_level = level; - - /* - * Once the logLevel of the MoudleLogger has been changed, it should no - * longer use the logLevel in the m_sink, hence the flag is cleared here. - */ - m_useSinkLogLevel = false; + m_moduleLogLevel = level; + updateLogLevel(); } void ModuleLogger::onLogLevelChanged(Level level) { - if (m_useSinkLogLevel) { - Logger::m_level = level; + m_sinkLogLevel = level; + updateLogLevel(); +} + +void ModuleLogger::onSinkChanged(const std::shared_ptr& logger) { + if (m_sink) { + m_sink->removeLogLevelObserver(this); } + m_sink = logger; + m_sink->addLogLevelObserver(this); } -void ModuleLogger::onSinkChanged(Logger& logger) { - if (m_sink.load()) { - m_sink.load()->removeLogLevelObserver(this); +void ModuleLogger::updateLogLevel() { + if (Level::UNKNOWN == m_sinkLogLevel) { + Logger::setLevel(m_moduleLogLevel); + } else if (Level::UNKNOWN == m_moduleLogLevel) { + Logger::setLevel(m_sinkLogLevel); + } else { + Logger::setLevel((m_sinkLogLevel > m_moduleLogLevel) ? m_sinkLogLevel : m_moduleLogLevel); } - m_sink = &logger; - m_sink.load()->addLogLevelObserver(this); } ModuleLogger::ModuleLogger(const std::string& configKey) : Logger(Level::UNKNOWN), - m_useSinkLogLevel(true), + m_moduleLogLevel(Level::UNKNOWN), + m_sinkLogLevel(Level::UNKNOWN), m_sink(nullptr) { - /* - * Note that m_useSinkLogLevel is set to true by default. The idea is for - * the ModuleLogger to use the same logLevel as its sink unless it's been - * set specifically. - */ - /* * By adding itself to the LoggerSinkManager, the LoggerSinkManager will * notify the ModuleLogger of the current sink logger via the @@ -80,8 +77,7 @@ ModuleLogger::ModuleLogger(const std::string& configKey) : init(configuration::ConfigurationNode::getRoot()[configKey]); } -} // namespace logger -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK - +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Logger/ThreadMoniker.cpp b/AVSCommon/Utils/src/Logger/ThreadMoniker.cpp index b60d7b1a72..0b0fcd173a 100644 --- a/AVSCommon/Utils/src/Logger/ThreadMoniker.cpp +++ b/AVSCommon/Utils/src/Logger/ThreadMoniker.cpp @@ -1,7 +1,5 @@ /* - * ThreadMoniker.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -37,9 +35,7 @@ ThreadMoniker::ThreadMoniker() { m_moniker = stream.str(); } -} // namespace logger -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK - - +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Metrics.cpp b/AVSCommon/Utils/src/Metrics.cpp new file mode 100644 index 0000000000..bf66d9a90a --- /dev/null +++ b/AVSCommon/Utils/src/Metrics.cpp @@ -0,0 +1,66 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "AVSCommon/Utils/Metrics.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { + +using namespace alexaClientSDK::avsCommon::avs; +using namespace alexaClientSDK::avsCommon::utils::logger; + +const std::string Metrics::locationToString(Metrics::Location location) { + switch (location) { + case ADSL_ENQUEUE: + return "ADSL Enqueue"; + case ADSL_DEQUEUE: + return "ADSL Dequeue"; + case SPEECH_SYNTHESIZER_RECEIVE: + return "SpeechSynthesizer Receive"; + case AIP_RECEIVE: + return "AIP Receive"; + case AIP_SEND: + return "AIP Send"; + case BUILDING_MESSAGE: + return "Building Message"; + } + + // UNREACHABLE + return "unknown"; +} + +logger::LogEntry& Metrics::d(LogEntry& logEntry, const std::shared_ptr msg, Metrics::Location location) { + return d(logEntry, msg->getName(), msg->getMessageId(), msg->getDialogRequestId(), location); +} + +logger::LogEntry& Metrics::d( + LogEntry& logEntry, + const std::string& name, + const std::string& messageId, + const std::string& dialogRequestId, + Location location) { + logEntry.d("Location", locationToString(location)).d("NAME", name); + + if (!messageId.empty() || !dialogRequestId.empty()) { + logEntry.d("MessageID", messageId).d("DialogRequestID", dialogRequestId); + }; + + return logEntry; +} + +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/RequiresShutdown.cpp b/AVSCommon/Utils/src/RequiresShutdown.cpp index b831f15224..58784de458 100644 --- a/AVSCommon/Utils/src/RequiresShutdown.cpp +++ b/AVSCommon/Utils/src/RequiresShutdown.cpp @@ -1,7 +1,5 @@ /* - * RequiresShutdown.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -44,7 +42,7 @@ class ShutdownMonitor { * * @param object A pointer to the object to track. */ - void add(const RequiresShutdown * object); + void add(const RequiresShutdown* object); /** * Removes a @c RequiresShutdown object from the set of objects being tracked. This must be called at destruction @@ -52,7 +50,10 @@ class ShutdownMonitor { * * @param object A pointer to the object to track. */ - void remove(const RequiresShutdown * object); + void remove(const RequiresShutdown* object); + + /// Constructor + ShutdownMonitor(); /// Destructor. ~ShutdownMonitor(); @@ -62,13 +63,16 @@ class ShutdownMonitor { std::mutex m_mutex; /// Alias to the container type used to hold objects. - using Objects = std::unordered_set; + using Objects = std::unordered_set; /// The @c RequiredShutdown objects being tracked. Objects m_objects; + + // a @c Logger instance to be used on the destructor + alexaClientSDK::avsCommon::utils::logger::ModuleLogger m_destructorLogger; }; -void ShutdownMonitor::add(const RequiresShutdown * object) { +void ShutdownMonitor::add(const RequiresShutdown* object) { if (nullptr == object) { ACSDK_ERROR(LX("addFailed").d("reason", "nullptrObject")); } @@ -82,7 +86,7 @@ void ShutdownMonitor::add(const RequiresShutdown * object) { } } -void ShutdownMonitor::remove(const RequiresShutdown * object) { +void ShutdownMonitor::remove(const RequiresShutdown* object) { if (nullptr == object) { ACSDK_ERROR(LX("removeFailed").d("reason", "nullptrObject")); } @@ -92,15 +96,21 @@ void ShutdownMonitor::remove(const RequiresShutdown * object) { } } +ShutdownMonitor::ShutdownMonitor() : m_destructorLogger(ACSDK_STRINGIFY(ACSDK_LOG_MODULE)) { +} + ShutdownMonitor::~ShutdownMonitor() { std::lock_guard lock(m_mutex); - // TODO: can't use logger here since it may have already been destroyed. Revisit whether there's a good - // way to defer logger destruction until after ~ShutdownMonitor() (ACSDK-445). + for (auto object : m_objects) { if (!object->isShutdown()) { - std::cerr << "WARNING: shutdown() not called on " << object->name() << "." << std::endl; + m_destructorLogger.log( + alexaClientSDK::avsCommon::utils::logger::Level::WARN, + LX("ShutdownMonitor").d("reason", "no shutdown() call").d("name: ", object->name())); } - std::cerr << "WARNING: " << object->name() << " was never deleted." << std::endl; + m_destructorLogger.log( + alexaClientSDK::avsCommon::utils::logger::Level::WARN, + LX("ShutdownMonitor").d("reason", "never deleted").d("name", object->name())); } } @@ -137,6 +147,6 @@ bool RequiresShutdown::isShutdown() const { return m_isShutdown; } -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/RetryTimer.cpp b/AVSCommon/Utils/src/RetryTimer.cpp new file mode 100644 index 0000000000..38236018ee --- /dev/null +++ b/AVSCommon/Utils/src/RetryTimer.cpp @@ -0,0 +1,62 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include "AVSCommon/Utils/RetryTimer.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { + +RetryTimer::RetryTimer(const std::vector& retryTable) : + m_RetryTable{retryTable}, + m_RetrySize{retryTable.size()}, + m_RetryDecreasePercentage{(100 * 100) / (100 + 50)}, + m_RetryIncreasePercentage{100 + 50} { +} + +RetryTimer::RetryTimer(const std::vector& retryTable, int randomizationPercentage) : + m_RetryTable{retryTable}, + m_RetrySize{retryTable.size()}, + m_RetryDecreasePercentage{(100 * 100) / (100 + randomizationPercentage)}, + m_RetryIncreasePercentage{100 + randomizationPercentage} { +} + +RetryTimer::RetryTimer(const std::vector& retryTable, int decreasePercentage, int increasePercentage) : + m_RetryTable{retryTable}, + m_RetrySize{retryTable.size()}, + m_RetryDecreasePercentage{decreasePercentage}, + m_RetryIncreasePercentage{increasePercentage} { +} + +std::chrono::milliseconds RetryTimer::calculateTimeToRetry(int retryCount) const { + if (retryCount < 0) { + retryCount = 0; + } else if ((size_t)retryCount >= m_RetrySize) { + retryCount = m_RetrySize - 1; + } + + std::mt19937 generator(static_cast(std::time(nullptr))); + std::uniform_int_distribution distribution( + (m_RetryTable[retryCount] * m_RetryDecreasePercentage) / 100, + (m_RetryTable[retryCount] * m_RetryIncreasePercentage) / 100); + auto delayMs = std::chrono::milliseconds(distribution(generator)); + return delayMs; +} + +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/SafeCTimeAccess.cpp b/AVSCommon/Utils/src/SafeCTimeAccess.cpp new file mode 100644 index 0000000000..f1751d3dd4 --- /dev/null +++ b/AVSCommon/Utils/src/SafeCTimeAccess.cpp @@ -0,0 +1,62 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "AVSCommon/Utils/Timing/SafeCTimeAccess.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace timing { + +std::shared_ptr SafeCTimeAccess::instance() { + static std::shared_ptr s_safeCTimeAccess(new SafeCTimeAccess); + return s_safeCTimeAccess; +} + +bool SafeCTimeAccess::safeAccess( + std::tm* (*timeAccessFunction)(const std::time_t* time), + const std::time_t& time, + std::tm* calendarTime) { + // No logging on errors, because it's known that logging calls this function, which can cause recursion problems. + + if (!calendarTime) { + return false; + } + + bool succeeded = false; + { + std::lock_guard lock{m_timeLock}; + auto tempCalendarTime = timeAccessFunction(&time); + if (tempCalendarTime) { + *calendarTime = *tempCalendarTime; + succeeded = true; + } + } + + return succeeded; +} + +bool SafeCTimeAccess::getGmtime(const std::time_t& time, std::tm* calendarTime) { + return safeAccess(std::gmtime, time, calendarTime); +} + +bool SafeCTimeAccess::getLocaltime(const std::time_t& time, std::tm* calendarTime) { + return safeAccess(std::localtime, time, calendarTime); +} + +} // namespace timing +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Stream/StreamFunctions.cpp b/AVSCommon/Utils/src/Stream/StreamFunctions.cpp new file mode 100644 index 0000000000..f3e670d208 --- /dev/null +++ b/AVSCommon/Utils/src/Stream/StreamFunctions.cpp @@ -0,0 +1,48 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "AVSCommon/Utils/Stream/StreamFunctions.h" + +#include +#include + +#include "AVSCommon/Utils/Stream/Streambuf.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace stream { + +std::unique_ptr streamFromData(const unsigned char* data, size_t length) { + /** + * This is an std::istream that holds onto the std::streambuf object. The streambuf cannot be deleted until the + * istream is destroyed. + */ + class ResourceStream : public std::istream { + public: + ResourceStream(std::unique_ptr buf) : std::istream(buf.get()), m_buf(std::move(buf)) { + } + + private: + std::unique_ptr m_buf; + }; + + return std::unique_ptr(new ResourceStream(std::unique_ptr(new Streambuf(data, length)))); +} + +} // namespace stream +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Stream/Streambuf.cpp b/AVSCommon/Utils/src/Stream/Streambuf.cpp new file mode 100644 index 0000000000..4dc47c637a --- /dev/null +++ b/AVSCommon/Utils/src/Stream/Streambuf.cpp @@ -0,0 +1,91 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "AVSCommon/Utils/Stream/Streambuf.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace stream { + +// There are two casts, as a streambuf uses Type=char. This requires removing the const and removing the unsigned. +// setg only is for reading, so this operation is safe, although ugly. +Streambuf::Streambuf(const unsigned char* data, size_t length) : + m_begin(reinterpret_cast(const_cast(data))), + m_current(m_begin), + m_end(m_begin + length) { + setg(m_begin, m_current, m_end); +} + +std::streampos Streambuf::seekoff(std::streamoff off, std::ios_base::seekdir way, std::ios_base::openmode which) { + switch (way) { + case std::ios_base::beg: + setg(m_begin, m_begin + off, m_end); + break; + case std::ios_base::cur: + gbump(off); + break; + case std::ios_base::end: + setg(m_begin, m_end + off, m_end); + break; + default: + return std::streampos(std::streamoff(-1)); + } + + return UpdateAndValidate(); +} + +std::streampos Streambuf::seekpos(std::streampos sp, std::ios_base::openmode which) { + return seekoff(sp - pos_type(off_type(0)), std::ios_base::beg, which); +} + +Streambuf::int_type Streambuf::underflow() { + m_current = gptr(); + if (m_current == m_end) { + return Streambuf::traits_type::eof(); + } + return Streambuf::traits_type::to_int_type(*m_current); +} + +Streambuf::int_type Streambuf::uflow() { + ++m_current; + setg(m_begin, m_current, m_end); + return underflow(); +} + +Streambuf::int_type Streambuf::pbackfail(int_type ch) { + if (m_current == m_begin || (ch != Streambuf::traits_type::eof() && ch != m_current[-1])) { + return Streambuf::traits_type::eof(); + } + return Streambuf::traits_type::to_int_type(*--m_current); +} + +std::streamsize Streambuf::showmanyc() { + return m_end - m_current; +} + +std::streampos Streambuf::UpdateAndValidate() { + m_current = gptr(); + if (!gptr() || gptr() >= egptr() || gptr() < eback()) { + return std::streampos(std::streamoff(-1)); + } + + return gptr() - eback(); +} + +} // namespace stream +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/StringUtils.cpp b/AVSCommon/Utils/src/StringUtils.cpp index 2a9d4ef304..874e218c6e 100644 --- a/AVSCommon/Utils/src/StringUtils.cpp +++ b/AVSCommon/Utils/src/StringUtils.cpp @@ -1,7 +1,5 @@ /* - * StringUtils.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,15 +12,16 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ - -#include "AVSCommon/Utils/String/StringUtils.h" - -#include "AVSCommon/Utils/Logger/Logger.h" - +#include #include +#include #include #include +#include "AVSCommon/Utils/Logger/Logger.h" + +#include "AVSCommon/Utils/String/StringUtils.h" + namespace alexaClientSDK { namespace avsCommon { namespace utils { @@ -42,7 +41,7 @@ static const std::string TAG("StringUtils"); static const int BASE_TEN = 10; -bool stringToInt(const std::string & str, int* result) { +bool stringToInt(const std::string& str, int* result) { return stringToInt(str.c_str(), result); } @@ -61,24 +60,51 @@ bool stringToInt(const char* str, int* result) { char* endPtr = nullptr; long tempResult = strtol(str, &endPtr, BASE_TEN); - // If strtol fails, then endPtr will still point to the beginning of str - a simple way to detect error. + // If strtol() fails, then endPtr will still point to the beginning of str - a simple way to detect error. if (str == endPtr) { - ACSDK_ERROR(LX("stringToIntFailed").m("input string was not parseable as an integer.")); + ACSDK_ERROR(LX("stringToIntFailed").m("input string was not parsable as an integer.")); return false; } - if (ERANGE == errno || - tempResult < std::numeric_limits::min() || + if (ERANGE == errno || tempResult < std::numeric_limits::min() || tempResult > std::numeric_limits::max()) { ACSDK_ERROR(LX("stringToIntFailed").m("converted number was out of range.")); return false; } + // Ignore trailing whitespace. + while (isspace(*endPtr)) { + endPtr++; + } + + // If endPtr does not point to a null terminator, then parsing the number was terminated by running in to + // a non-digit (and non-whitespace character), in which case the string was not just an integer (e.g. "1.23"). + if (*endPtr != '\0') { + ACSDK_ERROR(LX("stringToIntFailed").m("non-whitespace in string after integer.")); + return false; + } + *result = static_cast(tempResult); return true; } -} // namespace string -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK \ No newline at end of file +std::string byteVectorToString(const std::vector& byteVector) { + std::stringstream ss; + bool firstTime = true; + for (const auto& byte : byteVector) { + ss << std::hex << (firstTime ? "" : " ") << "0x" << std::setfill('0') << std::setw(2) << int(byte) << std::dec; + firstTime = false; + } + return ss.str(); +} + +std::string stringToLowerCase(const std::string& input) { + std::string lowerCaseString = input; + std::transform(lowerCaseString.begin(), lowerCaseString.end(), lowerCaseString.begin(), ::tolower); + return lowerCaseString; +} + +} // namespace string +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/TaskQueue.cpp b/AVSCommon/Utils/src/TaskQueue.cpp index 0743feef08..51c680b972 100644 --- a/AVSCommon/Utils/src/TaskQueue.cpp +++ b/AVSCommon/Utils/src/TaskQueue.cpp @@ -1,7 +1,5 @@ /* - * TaskQueue.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -28,9 +26,7 @@ TaskQueue::TaskQueue() : m_shutdown{false} { std::unique_ptr> TaskQueue::pop() { std::unique_lock queueLock{m_queueMutex}; - auto shouldNotWait = [this]() { - return m_shutdown || !m_queue.empty(); - }; + auto shouldNotWait = [this]() { return m_shutdown || !m_queue.empty(); }; if (!shouldNotWait()) { m_queueChanged.wait(queueLock, shouldNotWait); @@ -57,7 +53,7 @@ bool TaskQueue::isShutdown() { return m_shutdown; } -} // namespace threading -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK +} // namespace threading +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/TaskThread.cpp b/AVSCommon/Utils/src/TaskThread.cpp index f224146a26..8078e381c0 100644 --- a/AVSCommon/Utils/src/TaskThread.cpp +++ b/AVSCommon/Utils/src/TaskThread.cpp @@ -1,7 +1,5 @@ /* - * TaskThread.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -22,10 +20,7 @@ namespace avsCommon { namespace utils { namespace threading { - -TaskThread::TaskThread(std::shared_ptr taskQueue) : - m_taskQueue{taskQueue}, - m_shutdown{false} { +TaskThread::TaskThread(std::shared_ptr taskQueue) : m_taskQueue{taskQueue}, m_shutdown{false} { } TaskThread::~TaskThread() { @@ -62,7 +57,7 @@ void TaskThread::processTasksLoop() { } } -} // namespace threading -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK +} // namespace threading +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/TimePoint.cpp b/AVSCommon/Utils/src/TimePoint.cpp new file mode 100644 index 0000000000..078f343ff9 --- /dev/null +++ b/AVSCommon/Utils/src/TimePoint.cpp @@ -0,0 +1,63 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "AVSCommon/Utils/Timing/TimePoint.h" + +#include "AVSCommon/Utils/Logger/Logger.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace timing { + +using namespace avsCommon::utils::logger; + +/// String to identify log entries originating from this file. +static const std::string TAG("TimePoint"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +TimePoint::TimePoint() : m_time_Unix{0} { +} + +bool TimePoint::setTime_ISO_8601(const std::string& time_ISO_8601) { + int64_t tempUnixTime = 0; + if (!m_timeUtils.convert8601TimeStringToUnix(time_ISO_8601, &tempUnixTime)) { + ACSDK_ERROR(LX("setTime_ISO_8601Failed").d("input", time_ISO_8601).m("Could not convert to Unix time.")); + return false; + } + + m_time_ISO_8601 = time_ISO_8601; + m_time_Unix = tempUnixTime; + return true; +} + +std::string TimePoint::getTime_ISO_8601() const { + return m_time_ISO_8601; +} + +int64_t TimePoint::getTime_Unix() const { + return m_time_Unix; +} + +} // namespace timing +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/TimeUtils.cpp b/AVSCommon/Utils/src/TimeUtils.cpp index a9ce7e4f5a..f61a249b5e 100644 --- a/AVSCommon/Utils/src/TimeUtils.cpp +++ b/AVSCommon/Utils/src/TimeUtils.cpp @@ -1,25 +1,26 @@ /* - * TimeUtils.cpp + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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 #include +#include +#include +#include +#include #include "AVSCommon/Utils/Timing/TimeUtils.h" - #include "AVSCommon/Utils/Logger/Logger.h" #include "AVSCommon/Utils/String/StringUtils.h" @@ -67,119 +68,208 @@ static const std::string ENCODED_TIME_STRING_PLUS_SEPARATOR_STRING = "+"; /// The offset into an ISO-8601 formatted string where the year begins. static const unsigned long ENCODED_TIME_STRING_YEAR_OFFSET = 0; /// The offset into an ISO-8601 formatted string where the month begins. -static const unsigned long ENCODED_TIME_STRING_MONTH_OFFSET = - ENCODED_TIME_STRING_YEAR_OFFSET + ENCODED_TIME_STRING_YEAR_STRING_LENGTH + - ENCODED_TIME_STRING_DASH_SEPARATOR_STRING.length(); +static const unsigned long ENCODED_TIME_STRING_MONTH_OFFSET = ENCODED_TIME_STRING_YEAR_OFFSET + + ENCODED_TIME_STRING_YEAR_STRING_LENGTH + + ENCODED_TIME_STRING_DASH_SEPARATOR_STRING.length(); /// The offset into an ISO-8601 formatted string where the day begins. -static const unsigned long ENCODED_TIME_STRING_DAY_OFFSET = - ENCODED_TIME_STRING_MONTH_OFFSET + ENCODED_TIME_STRING_MONTH_STRING_LENGTH + - ENCODED_TIME_STRING_DASH_SEPARATOR_STRING.length(); +static const unsigned long ENCODED_TIME_STRING_DAY_OFFSET = ENCODED_TIME_STRING_MONTH_OFFSET + + ENCODED_TIME_STRING_MONTH_STRING_LENGTH + + ENCODED_TIME_STRING_DASH_SEPARATOR_STRING.length(); /// The offset into an ISO-8601 formatted string where the hour begins. -static const unsigned long ENCODED_TIME_STRING_HOUR_OFFSET = - ENCODED_TIME_STRING_DAY_OFFSET + ENCODED_TIME_STRING_DAY_STRING_LENGTH + - ENCODED_TIME_STRING_T_SEPARATOR_STRING.length(); +static const unsigned long ENCODED_TIME_STRING_HOUR_OFFSET = ENCODED_TIME_STRING_DAY_OFFSET + + ENCODED_TIME_STRING_DAY_STRING_LENGTH + + ENCODED_TIME_STRING_T_SEPARATOR_STRING.length(); /// The offset into an ISO-8601 formatted string where the minute begins. -static const unsigned long ENCODED_TIME_STRING_MINUTE_OFFSET = - ENCODED_TIME_STRING_HOUR_OFFSET + ENCODED_TIME_STRING_HOUR_STRING_LENGTH + - ENCODED_TIME_STRING_COLON_SEPARATOR_STRING.length(); +static const unsigned long ENCODED_TIME_STRING_MINUTE_OFFSET = ENCODED_TIME_STRING_HOUR_OFFSET + + ENCODED_TIME_STRING_HOUR_STRING_LENGTH + + ENCODED_TIME_STRING_COLON_SEPARATOR_STRING.length(); /// The offset into an ISO-8601 formatted string where the second begins. -static const unsigned long ENCODED_TIME_STRING_SECOND_OFFSET = - ENCODED_TIME_STRING_MINUTE_OFFSET + ENCODED_TIME_STRING_MINUTE_STRING_LENGTH + - ENCODED_TIME_STRING_COLON_SEPARATOR_STRING.length(); +static const unsigned long ENCODED_TIME_STRING_SECOND_OFFSET = ENCODED_TIME_STRING_MINUTE_OFFSET + + ENCODED_TIME_STRING_MINUTE_STRING_LENGTH + + ENCODED_TIME_STRING_COLON_SEPARATOR_STRING.length(); /// The total expected length of an ISO-8601 formatted string. static const unsigned long ENCODED_TIME_STRING_EXPECTED_LENGTH = - ENCODED_TIME_STRING_SECOND_OFFSET + ENCODED_TIME_STRING_SECOND_STRING_LENGTH + - ENCODED_TIME_STRING_PLUS_SEPARATOR_STRING.length() + ENCODED_TIME_STRING_POSTFIX_STRING_LENGTH; + ENCODED_TIME_STRING_SECOND_OFFSET + ENCODED_TIME_STRING_SECOND_STRING_LENGTH + + ENCODED_TIME_STRING_PLUS_SEPARATOR_STRING.length() + ENCODED_TIME_STRING_POSTFIX_STRING_LENGTH; + +/** + * Utility function that wraps localtime conversion to std::time_t. + * + * This function also creates a copy of the given timeStruct since mktime can + * change the object. + * + * @param timeStruct Required pointer to timeStruct to be converted to time_t. + * @param[out] ret Required pointer to object where the result will be saved. + * @return Whether the conversion was successful. + */ +static bool convertToLocalTimeT(const std::tm* timeStruct, std::time_t* ret) { + if (timeStruct == nullptr) { + return false; + } + + std::tm tmCopy = *timeStruct; + *ret = std::mktime(&tmCopy); + return *ret >= 0; +} + +TimeUtils::TimeUtils() : m_safeCTimeAccess{SafeCTimeAccess::instance()} { +} -bool convert8601TimeStringToUnix(const std::string & timeString, int64_t* unixTime) { +bool TimeUtils::convertToUtcTimeT(const std::tm* utcTm, std::time_t* ret) { + std::time_t converted; + std::time_t offset; - // TODO : ACSDK-387 to investigate a simpler and more portable implementation of this logic. + if (ret == nullptr) { + ACSDK_ERROR(LX("convertToUtcTimeT").m("return variable is null")); + return false; + } - if (!unixTime) { - ACSDK_ERROR(LX("convert8601TimeStringToUnixFailed").m("unixTime parameter was nullptr.")); + if (!convertToLocalTimeT(utcTm, &converted) || !localtimeOffset(&offset)) { + ACSDK_ERROR(LX("convertToUtcTimeT").m("failed to convert to local time")); return false; } - std::time_t rawtime = std::time(0); - auto timeInfo = std::localtime(&rawtime); + // adjust converted time + *ret = converted - offset; + return true; +} + +bool TimeUtils::convert8601TimeStringToUnix(const std::string& timeString, int64_t* convertedTime) { + // TODO : Use std::get_time once we only support compilers that implement this function (GCC 5.1+ / Clang 3.3+) - if (!timeInfo) { - ACSDK_ERROR(LX("convert8601TimeStringToUnixFailed").m("localtime returned nullptr.")); + if (!convertedTime) { + ACSDK_ERROR(LX("convert8601TimeStringToUnixFailed").m("convertedTime parameter was nullptr.")); return false; } + std::tm timeInfo; + if (timeString.length() != ENCODED_TIME_STRING_EXPECTED_LENGTH) { ACSDK_ERROR(LX("convert8601TimeStringToUnixFailed").d("unexpected time string length:", timeString.length())); return false; } - if (!stringToInt(timeString.substr(ENCODED_TIME_STRING_YEAR_OFFSET, ENCODED_TIME_STRING_YEAR_STRING_LENGTH), - &(timeInfo->tm_year))) { + if (!stringToInt( + timeString.substr(ENCODED_TIME_STRING_YEAR_OFFSET, ENCODED_TIME_STRING_YEAR_STRING_LENGTH), + &(timeInfo.tm_year))) { ACSDK_ERROR(LX("convert8601TimeStringToUnixFailed").m("error parsing year. Input:" + timeString)); return false; } - if (!stringToInt(timeString.substr(ENCODED_TIME_STRING_MONTH_OFFSET, ENCODED_TIME_STRING_MONTH_STRING_LENGTH), - &(timeInfo->tm_mon))) { + if (!stringToInt( + timeString.substr(ENCODED_TIME_STRING_MONTH_OFFSET, ENCODED_TIME_STRING_MONTH_STRING_LENGTH), + &(timeInfo.tm_mon))) { ACSDK_ERROR(LX("convert8601TimeStringToUnixFailed").m("error parsing month. Input:" + timeString)); return false; } - if (!stringToInt(timeString.substr(ENCODED_TIME_STRING_DAY_OFFSET, ENCODED_TIME_STRING_DAY_STRING_LENGTH), - &(timeInfo->tm_mday))) { + if (!stringToInt( + timeString.substr(ENCODED_TIME_STRING_DAY_OFFSET, ENCODED_TIME_STRING_DAY_STRING_LENGTH), + &(timeInfo.tm_mday))) { ACSDK_ERROR(LX("convert8601TimeStringToUnixFailed").m("error parsing day. Input:" + timeString)); return false; } - if (!stringToInt(timeString.substr(ENCODED_TIME_STRING_HOUR_OFFSET, ENCODED_TIME_STRING_HOUR_STRING_LENGTH), - &(timeInfo->tm_hour))) { + if (!stringToInt( + timeString.substr(ENCODED_TIME_STRING_HOUR_OFFSET, ENCODED_TIME_STRING_HOUR_STRING_LENGTH), + &(timeInfo.tm_hour))) { ACSDK_ERROR(LX("convert8601TimeStringToUnixFailed").m("error parsing hour. Input:" + timeString)); return false; } - if (!stringToInt(timeString.substr(ENCODED_TIME_STRING_MINUTE_OFFSET, ENCODED_TIME_STRING_MINUTE_STRING_LENGTH), - &(timeInfo->tm_min))) { + if (!stringToInt( + timeString.substr(ENCODED_TIME_STRING_MINUTE_OFFSET, ENCODED_TIME_STRING_MINUTE_STRING_LENGTH), + &(timeInfo.tm_min))) { ACSDK_ERROR(LX("convert8601TimeStringToUnixFailed").m("error parsing minute. Input:" + timeString)); return false; } - if (!stringToInt(timeString.substr(ENCODED_TIME_STRING_SECOND_OFFSET, ENCODED_TIME_STRING_SECOND_STRING_LENGTH), - &(timeInfo->tm_sec))) { + if (!stringToInt( + timeString.substr(ENCODED_TIME_STRING_SECOND_OFFSET, ENCODED_TIME_STRING_SECOND_STRING_LENGTH), + &(timeInfo.tm_sec))) { ACSDK_ERROR(LX("convert8601TimeStringToUnixFailed").m("error parsing second. Input:" + timeString)); return false; } - // adjust for unix epoch. - timeInfo->tm_year -= 1900; - timeInfo->tm_mon -= 1; + // adjust for C struct tm standard + timeInfo.tm_isdst = 0; + timeInfo.tm_year -= 1900; + timeInfo.tm_mon -= 1; + + std::time_t convertedTimeT; + bool ok = convertToUtcTimeT(&timeInfo, &convertedTimeT); - *unixTime = static_cast(std::mktime(timeInfo)); + if (!ok) { + return false; + } + *convertedTime = static_cast(convertedTimeT); return true; } -bool getCurrentUnixTime(int64_t* currentTime) { - - // TODO : ACSDK-387 to investigate a simpler and more portable implementation of this logic. - +bool TimeUtils::getCurrentUnixTime(int64_t* currentTime) { if (!currentTime) { ACSDK_ERROR(LX("getCurrentUnixTimeFailed").m("currentTime parameter was nullptr.")); return false; } - std::time_t rawtime = std::time(0); - auto timeInfo = std::localtime(&rawtime); - if (!timeInfo) { - ACSDK_ERROR(LX("getCurrentUnixTimeFailed").m("localtime returned nullptr.")); + auto now = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()); + *currentTime = static_cast(now); + + return now >= 0; +} + +bool TimeUtils::convertTimeToUtcIso8601Rfc3339(const struct timeval& timeVal, std::string* iso8601TimeString) { + // The length of the RFC 3339 string for the time is maximum 28 characters, include an extra byte for the '\0' + // terminator. + char buf[29]; + memset(buf, 0, sizeof(buf)); + + // Need to assign it to time_t since time_t in some platforms is long long + // and timeVal.tv_sec is long in some platforms + const time_t timeSecs = timeVal.tv_sec; + + std::tm utcTm; + if (!m_safeCTimeAccess->getGmtime(timeSecs, &utcTm)) { + ACSDK_ERROR(LX("convertTimeToUtcIso8601Rfc3339").m("cannot retrieve tm struct")); + return false; + } + + // it's possible for std::strftime to correctly return length = 0, but not with the format string used. In this + // case length == 0 is an error. + auto strftimeResult = std::strftime(buf, sizeof(buf) - 1, "%Y-%m-%dT%H:%M:%S", &utcTm); + if (strftimeResult == 0) { + ACSDK_ERROR(LX("convertTimeToUtcIso8601Rfc3339Failed").m("strftime(..) failed")); + return false; + } + + std::stringstream millisecondTrailer; + millisecondTrailer << buf << "." << std::setfill('0') << std::setw(3) << (timeVal.tv_usec / 1000) << "Z"; + + *iso8601TimeString = millisecondTrailer.str(); + return true; +} + +bool TimeUtils::localtimeOffset(std::time_t* ret) { + static const std::chrono::time_point timePoint{std::chrono::hours(24)}; + auto fixedTime = std::chrono::system_clock::to_time_t(timePoint); + + std::tm utcTm; + std::time_t utc; + std::tm localTm; + std::time_t local; + if (!m_safeCTimeAccess->getGmtime(fixedTime, &utcTm) || !convertToLocalTimeT(&utcTm, &utc) || + !m_safeCTimeAccess->getLocaltime(fixedTime, &localTm) || !convertToLocalTimeT(&localTm, &local)) { + ACSDK_ERROR(LX("localtimeOffset").m("cannot retrieve tm struct")); return false; } - *currentTime = static_cast(std::mktime(timeInfo)); + *ret = utc - local; return true; } -} // namespace timing -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace timing +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/Timer.cpp b/AVSCommon/Utils/src/Timer.cpp index 397ec244b6..020b8cbe75 100644 --- a/AVSCommon/Utils/src/Timer.cpp +++ b/AVSCommon/Utils/src/Timer.cpp @@ -1,7 +1,5 @@ /* - * Timer.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -53,8 +51,7 @@ bool Timer::activate() { return !m_running.exchange(true); } - -} // namespace timing -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace timing +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/src/UUIDGeneration.cpp b/AVSCommon/Utils/src/UUIDGeneration.cpp index 191fb561e1..e68b015e7a 100644 --- a/AVSCommon/Utils/src/UUIDGeneration.cpp +++ b/AVSCommon/Utils/src/UUIDGeneration.cpp @@ -1,7 +1,5 @@ /* - * UUIDGeneration.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -70,28 +68,28 @@ static const size_t BITS_IN_HEX_DIGIT = 4; * @return A hex string of length @c numDigits. */ static const std::string generateHexWithReplacement( - std::independent_bits_engine& ibe, - unsigned int numDigits, - uint8_t replacementBits, - unsigned short numReplacementBits) { + std::independent_bits_engine& ibe, + unsigned int numDigits, + uint8_t replacementBits, + unsigned short numReplacementBits) { if (numReplacementBits > MAX_NUM_REPLACEMENT_BITS) { ACSDK_ERROR(LX("generateHexWithReplacementFailed") - .d("reason", "replacingMoreBitsThanProvided") - .d("numReplacementBitsLimit", MAX_NUM_REPLACEMENT_BITS) - .d("numReplacementBits", numReplacementBits)); + .d("reason", "replacingMoreBitsThanProvided") + .d("numReplacementBitsLimit", MAX_NUM_REPLACEMENT_BITS) + .d("numReplacementBits", numReplacementBits)); return ""; } if (numReplacementBits > (numDigits * BITS_IN_HEX_DIGIT)) { ACSDK_ERROR(LX("generateHexWithReplacementFailed") - .d("reason", "replacingMoreBitsThanGenerated") - .d("numDigitsInBits", numDigits * BITS_IN_HEX_DIGIT) - .d("numReplacementBits", numReplacementBits)); + .d("reason", "replacingMoreBitsThanGenerated") + .d("numDigitsInBits", numDigits * BITS_IN_HEX_DIGIT) + .d("numReplacementBits", numReplacementBits)); return ""; } // Makes assumption that 1 digit = 4 bits. - std::vector bytes(ceil(numDigits/2.0)); + std::vector bytes(ceil(numDigits / 2.0)); std::generate(bytes.begin(), bytes.end(), std::ref(ibe)); // Replace the specified number of bits from the first byte. @@ -100,7 +98,7 @@ static const std::string generateHexWithReplacement( bytes.at(0) |= replacementBits; std::ostringstream oss; - for (const auto &byte : bytes) { + for (const auto& byte : bytes) { oss << std::hex << std::setfill('0') << std::setw(2) << static_cast(byte); } @@ -120,8 +118,8 @@ static const std::string generateHexWithReplacement( * @return A hex string of length @c numDigits. */ static const std::string generateHex( - std::independent_bits_engine& ibe, - unsigned int numDigits) { + std::independent_bits_engine& ibe, + unsigned int numDigits) { return generateHexWithReplacement(ibe, numDigits, 0, 0); } @@ -132,25 +130,24 @@ const std::string generateUUID() { std::unique_lock lock(mutex); if (!seeded) { std::random_device rd; - ibe.seed(rd() + - std::chrono::duration_cast( - std::chrono::steady_clock::now().time_since_epoch()).count()); + ibe.seed( + rd() + + std::chrono::duration_cast(std::chrono::steady_clock::now().time_since_epoch()) + .count()); seeded = true; } std::ostringstream uuidText; - uuidText << generateHex(ibe, 8) << SEPARATOR << - generateHex(ibe, 4) << SEPARATOR << - generateHexWithReplacement(ibe, 4, UUID_VERSION_VALUE, 4) << SEPARATOR << - generateHexWithReplacement(ibe, 4, UUID_VARIANT_VALUE, 2) << SEPARATOR << - generateHex(ibe, 12); + uuidText << generateHex(ibe, 8) << SEPARATOR << generateHex(ibe, 4) << SEPARATOR + << generateHexWithReplacement(ibe, 4, UUID_VERSION_VALUE, 4) << SEPARATOR + << generateHexWithReplacement(ibe, 4, UUID_VARIANT_VALUE, 2) << SEPARATOR << generateHex(ibe, 12); lock.unlock(); return uuidText.str(); } -} // namespace uuidGeneration -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace uuidGeneration +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/AVSCommon/Utils/MediaPlayer/MockMediaPlayer.h b/AVSCommon/Utils/test/AVSCommon/Utils/MediaPlayer/MockMediaPlayer.h new file mode 100644 index 0000000000..bbfa416605 --- /dev/null +++ b/AVSCommon/Utils/test/AVSCommon/Utils/MediaPlayer/MockMediaPlayer.h @@ -0,0 +1,382 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_TEST_AVSCOMMON_UTILS_MEDIAPLAYER_MOCKMEDIAPLAYER_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_TEST_AVSCOMMON_UTILS_MEDIAPLAYER_MOCKMEDIAPLAYER_H_ + +#include + +#include "AVSCommon/Utils/MediaPlayer/MediaPlayerInterface.h" +#include "AVSCommon/Utils/RequiresShutdown.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace mediaPlayer { +namespace test { + +/// Default time parameter. +static const std::chrono::milliseconds DEFAULT_TIME(50); + +/** + * Interface to add virtual functions to MediaPlayerInterface to allow for mocking / EXPECT + * of polymorphic methods. + */ +class MockMediaPlayerHelper : public MediaPlayerInterface { +public: + /** + * Variant of setSource() taking an attachment reader. + * + * @param attachmentReader The attachment from which to read audio data. + * @param audioFormat The audioFormat to be used when playing raw PCM data. + * @return The SourceId used by MediaPlayerInterface to identify this @c setSource() request. + */ + virtual SourceId attachmentSetSource( + std::shared_ptr attachmentReader, + const avsCommon::utils::AudioFormat* audioFormat) = 0; + /** + * Variant of setSource() taking an istream from which to read audio data. + * + * @param stream The stream from which to read audio data. + * @param repeat Whether or not to repeat playing the audio. + * @return The SourceId used by MediaPlayerInterface to identify this @c setSource() request. + */ + virtual SourceId streamSetSource(std::shared_ptr stream, bool repeat) = 0; + /** + * Variant of setSource() taking a URL with which to fetch audio data. + * + * @param url The URL with which to fetch the audio data. + * @return The SourceId used by MediaPlayerInterface to identify this @c setSource() request. + */ + virtual SourceId urlSetSource(const std::string& url) = 0; +}; + +/// A mock MediaPlayer for unit tests. +class MockMediaPlayer + : public MockMediaPlayerHelper + , public RequiresShutdown { +public: + using observer = avsCommon::utils::mediaPlayer::MediaPlayerObserverInterface; + + /** + * Creates an instance of the @c MockMediaPlayer. + * + * @return An instance of the @c MockMediaPlayer. + */ + static std::shared_ptr> create(); + + MockMediaPlayer(); + + // 'override' commented out below to avoid needless warnings generated because MOCK_METHOD* does not use it. + + /// @name MediaPlayerInterface overrides + /// @{ + SourceId setSource( + std::shared_ptr attachmentReader, + const avsCommon::utils::AudioFormat* audioFormat = nullptr) /*override*/; + SourceId setSource( + const std::string& url, + std::chrono::milliseconds offset = std::chrono::milliseconds::zero()) /*override*/; + SourceId setSource(std::shared_ptr stream, bool repeat) /*override*/; + void setObserver(std::shared_ptr playerObserver) /*override*/; + /// @} + + MOCK_METHOD1(play, bool(SourceId)); + MOCK_METHOD1(pause, bool(SourceId)); + MOCK_METHOD1(resume, bool(SourceId)); + MOCK_METHOD1(stop, bool(SourceId)); + MOCK_METHOD1(getOffset, std::chrono::milliseconds(SourceId)); + MOCK_METHOD0(getNumBytesBuffered, uint64_t()); + + /// @name RequiresShutdown overrides + /// @{ + void doShutdown() /*override*/; + /// @} + + MOCK_METHOD2( + attachmentSetSource, + SourceId( + std::shared_ptr attachmentReader, + const avsCommon::utils::AudioFormat* audioFormat)); + MOCK_METHOD2(streamSetSource, SourceId(std::shared_ptr stream, bool repeat)); + MOCK_METHOD1(urlSetSource, SourceId(const std::string& url)); + + /** + * This is a mock method which will generate a new SourceId. + * + * @return @c SUCCESS. + */ + SourceId mockSetSource(); + + /** + * This is a mock method which will send the @c onPlaybackStarted() notification to the observer. + * + * @return Whether the operation was successful. + */ + bool mockPlay(SourceId sourceId); + + /** + * This is a mock method which will send the @c onPlaybackPaused() notification to the observer. + * + * @return Whether the operation was successful. + */ + bool mockPause(SourceId sourceId); + + /** + * This is a mock method which will send the @c onPlaybackResumed() notification to the observer. + * + * @return Whether the operation was successful. + */ + bool mockResume(SourceId sourceId); + + /** + * This is a mock method which will send the @c onPlaybackStopped() notification to the observer. + * + * @return Whether the operation was successful. + */ + bool mockStop(SourceId sourceId); + + /** + * This is a mock method which will send the @c onPlaybackFinished() notification to the observer. + * + * @return Whether the operation was successful. + */ + bool mockFinished(SourceId sourceId); + + /** + * This is a mock method which will send the @c onPlaybackError() notification to the observer. + * + * @return Whether the operation was successful. + */ + bool mockError(SourceId sourceId); + + /** + * This is a mock method which validates @c sourceId and if valid, sets the offset. + */ + bool mockSetOffset(SourceId sourceId, std::chrono::milliseconds offset); + + /** + * This is a mock method which validates the id in a @c getOffset() call. + */ + std::chrono::milliseconds mockGetOffset(SourceId id); + + /** + * Waits for the next call to @c setSource(). + * + * @param timeout The maximum time to wait. + * @return @c true if setSource was called within @c timeout milliseconds else @c false. + */ + bool waitUntilNextSetSource(const std::chrono::milliseconds timeout = std::chrono::milliseconds(DEFAULT_TIME)); + + /** + * Waits for the current source to reach the playback started state. + * + * @param timeout The maximum time to wait. + * @return @c true if the state was reached within @c timeout milliseconds else @c false. + */ + bool waitUntilPlaybackStarted(const std::chrono::milliseconds timeout = std::chrono::milliseconds(DEFAULT_TIME)); + + /** + * Waits for the current source to reach the playback paused state. + * + * @param timeout The maximum time to wait. + * @return @c true if the state was reached within @c timeout milliseconds else @c false. + */ + bool waitUntilPlaybackPaused(const std::chrono::milliseconds timeout = std::chrono::milliseconds(DEFAULT_TIME)); + + /** + * Waits for the current source to reach the playback resumed state. + * + * @param timeout The maximum time to wait. + * @return @c true if the state was reached within @c timeout milliseconds else @c false. + */ + bool waitUntilPlaybackResumed(const std::chrono::milliseconds timeout = std::chrono::milliseconds(DEFAULT_TIME)); + + /** + * Waits for the current source to reach the playback stopped state. + * + * @param timeout The maximum time to wait. + * @return @c true if the state was reached within @c timeout milliseconds else @c false. + */ + bool waitUntilPlaybackStopped(const std::chrono::milliseconds timeout = std::chrono::milliseconds(DEFAULT_TIME)); + + /** + * Waits for the current source to reach the playback finished state. + * + * @param timeout The maximum time to wait. + * @return @c true if the state was reached within @c timeout milliseconds else @c false. + */ + bool waitUntilPlaybackFinished(const std::chrono::milliseconds timeout = std::chrono::milliseconds(DEFAULT_TIME)); + + /** + * Waits for the current source to reach the playback error state. + * + * @param timeout The maximum time to wait. + * @return @c true if the state was reached within @c timeout milliseconds else @c false. + */ + bool waitUntilPlaybackError(const std::chrono::milliseconds timeout = std::chrono::milliseconds(DEFAULT_TIME)); + + /** + * Get the SourceId for the media MockMediaPlayer is currently playing. + * + * @return The SourceId for the media MockMediaPlayer is currently playing. + */ + SourceId getCurrentSourceId(); + +private: + struct Source; + + /** + * Track whether or not a particular MediaPlayer state has been reached for a particular source. + */ + class SourceState { + public: + /** + * Constructor. Initializes the state to unreached. + * + * @param source The source whose state is being tracked. + * @param name Name of the state to be tracked (for logging) + * @param notifyFunction The function to call to notify our observer that this state has been reached. + */ + SourceState( + Source* source, + const std::string& name, + std::function, SourceId)> notifyFunction); + + /** + * Destructor. If necessary, wakes and joins m_thread (cancelling any non-started notification) + * so that m_thread can be destroyed. + */ + ~SourceState(); + + /** + * Trigger the transition to reaching this state. + * @note This method returns immediately (possibly before the notification has been delivered). + */ + void trigger(); + + /** + * Wait until this state is reached. + * + * @param timeout How long to wait to reach this state before giving up. + * @return Whether or not this state was reached. + */ + bool wait(const std::chrono::milliseconds timeout); + + /** + * Reset this state to unreached. + */ + void resetStateReached(); + + private: + /** + * Make notification callback to report reaching this state. + * + * @param timeout How long to wait before giving up on actually reaching the state and delivering + * an @c onPlaybackFailed() callback, instead. + */ + void notify(const std::chrono::milliseconds timeout); + + /// The source whose state we are tracking. + Source* m_source; + + /// Name of this state (for logging). + const std::string& m_name; + + /// The function to use to deliver this notification. + std::function, SourceId)> m_notifyFunction; + + /// Used to serialize access to some data members. + std::mutex m_mutex; + + /// Whether or not this state has been reached. Access synchronized with @c mutex. + bool m_stateReached; + + /// Used to wake threads waiting to reach this state. + std::condition_variable m_wake; + + /// Thread used to make observer callbacks asynchronously. + std::thread m_thread; + + /// Whether or not this instance is shutting down. Access synchronized with @c mutex. + bool m_shutdown; + }; + + /** + * Object to track the states for a given source. + */ + struct Source { + public: + /** + * Constructor. Initializes this source such that all states have not been reached. + * + * @param player The @c MockMediaPlayer this source was added to. + * @param id The @c SourceId that this source was assigned. + */ + Source(MockMediaPlayer* player, SourceId id); + + /// The @c MockMediaPlayer this source was added to. + MockMediaPlayer* mockMediaPlayer; + + /// The @c SourceId that this source was assigned. + SourceId sourceId; + + /// Offset to report for @c getOffset() calls for this source. + std::chrono::milliseconds offset; + + /// Tracks if playbackStarted state has been reached. + SourceState started; + + /// Tracks if playbackPaused state has been reached. + SourceState paused; + + /// Tracks if playbackResumed state has been reached. + SourceState resumed; + + /// Tracks if playbackStopped state has been reached. + SourceState stopped; + + /// Tracks if playbackFinished state has been reached. + SourceState finished; + + /// Tracks if playbackError state has been reached. + SourceState error; + }; + + /** + * Get the current @c Source, but only if it matches the specified @c SourceId. + * + * @param The @c SourceId to match with the current source. + * @return The current @c Source, or nullptr if the current source does not match @c sourceId. + */ + std::shared_ptr getCurrentSource(SourceId sourceId); + + /// Serialize access to m_sources. + std::mutex m_mutex; + + /// All sources fed to this MediaPlayer + std::vector> m_sources; + + /// The player observer to be notified of the media player state changes. + std::shared_ptr m_playerObserver; +}; + +} // namespace test +} // namespace mediaPlayer +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_TEST_AVSCOMMON_UTILS_MEDIAPLAYER_MOCKMEDIAPLAYER_H_ diff --git a/AVSCommon/Utils/test/CMakeLists.txt b/AVSCommon/Utils/test/CMakeLists.txt index e9de3afd53..841c6ec1d9 100644 --- a/AVSCommon/Utils/test/CMakeLists.txt +++ b/AVSCommon/Utils/test/CMakeLists.txt @@ -1 +1,7 @@ -discover_unit_tests("${AVSCommon_INCLUDE_DIRS}" AVSCommon) +add_subdirectory("Common") + +set(INCLUDE_PATH + "${AVSCommon_INCLUDE_DIRS}" + "${AVSCommon_SOURCE_DIR}/SDKInterfaces/test") + +discover_unit_tests("${INCLUDE_PATH}" AVSCommon) diff --git a/AVSCommon/Utils/test/Common/CMakeLists.txt b/AVSCommon/Utils/test/Common/CMakeLists.txt new file mode 100644 index 0000000000..06bf61ed4d --- /dev/null +++ b/AVSCommon/Utils/test/Common/CMakeLists.txt @@ -0,0 +1,8 @@ +add_library(UtilsCommonTestLib MockMediaPlayer.cpp) +target_include_directories(UtilsCommonTestLib PUBLIC + "${AVSCommon_INCLUDE_DIRS}" + "${AVSCommon_SOURCE_DIR}/Utils/test") +target_link_libraries(UtilsCommonTestLib + AVSCommon + gtest_main + gmock_main) diff --git a/AVSCommon/Utils/test/Common/MockMediaPlayer.cpp b/AVSCommon/Utils/test/Common/MockMediaPlayer.cpp new file mode 100644 index 0000000000..da653fbf26 --- /dev/null +++ b/AVSCommon/Utils/test/Common/MockMediaPlayer.cpp @@ -0,0 +1,321 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "AVSCommon/Utils/MediaPlayer/MediaPlayerObserverInterface.h" +#include "AVSCommon/Utils/MediaPlayer/MockMediaPlayer.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace mediaPlayer { +namespace test { + +using namespace testing; + +const static std::chrono::milliseconds WAIT_LOOP_INTERVAL{1}; + +std::shared_ptr> MockMediaPlayer::create() { + auto result = std::make_shared>(); + + ON_CALL(*result.get(), attachmentSetSource(_, _)) + .WillByDefault(InvokeWithoutArgs(result.get(), &MockMediaPlayer::mockSetSource)); + ON_CALL(*result.get(), urlSetSource(_)) + .WillByDefault(InvokeWithoutArgs(result.get(), &MockMediaPlayer::mockSetSource)); + ON_CALL(*result.get(), streamSetSource(_, _)) + .WillByDefault(InvokeWithoutArgs(result.get(), &MockMediaPlayer::mockSetSource)); + ON_CALL(*result.get(), play(_)).WillByDefault(Invoke(result.get(), &MockMediaPlayer::mockPlay)); + ON_CALL(*result.get(), stop(_)).WillByDefault(Invoke(result.get(), &MockMediaPlayer::mockStop)); + ON_CALL(*result.get(), pause(_)).WillByDefault(Invoke(result.get(), &MockMediaPlayer::mockPause)); + ON_CALL(*result.get(), resume(_)).WillByDefault(Invoke(result.get(), &MockMediaPlayer::mockResume)); + ON_CALL(*result.get(), getOffset(_)).WillByDefault(Invoke(result.get(), &MockMediaPlayer::mockGetOffset)); + return result; +} + +MockMediaPlayer::MockMediaPlayer() : RequiresShutdown{"MockMediaPlayer"}, m_playerObserver{nullptr} { + // Create a 'source' for sourceId = 0 + mockSetSource(); +} + +MediaPlayerInterface::SourceId MockMediaPlayer::setSource( + std::shared_ptr attachmentReader, + const avsCommon::utils::AudioFormat* audioFormat) { + return attachmentSetSource(attachmentReader, audioFormat); +} + +MediaPlayerInterface::SourceId MockMediaPlayer::setSource(const std::string& url, std::chrono::milliseconds offset) { + return urlSetSource(url); +} + +MediaPlayerInterface::SourceId MockMediaPlayer::setSource(std::shared_ptr stream, bool repeat) { + return streamSetSource(stream, repeat); +} + +void MockMediaPlayer::setObserver(std::shared_ptr playerObserver) { + m_playerObserver = playerObserver; +} + +void MockMediaPlayer::doShutdown() { + std::lock_guard lock(m_mutex); + m_playerObserver.reset(); + m_sources.clear(); +} + +MediaPlayerInterface::SourceId MockMediaPlayer::mockSetSource() { + std::lock_guard lock(m_mutex); + SourceId result = m_sources.size(); + m_sources.emplace_back(std::make_shared(this, result)); + return result; +} + +bool MockMediaPlayer::mockPlay(SourceId sourceId) { + auto source = getCurrentSource(sourceId); + if (!source) { + return false; + } + source->started.trigger(); + return true; +} + +bool MockMediaPlayer::mockPause(SourceId sourceId) { + auto source = getCurrentSource(sourceId); + if (!source) { + return false; + } + source->resumed.resetStateReached(); + source->paused.trigger(); + return true; +} + +bool MockMediaPlayer::mockResume(SourceId sourceId) { + auto source = getCurrentSource(sourceId); + if (!source) { + return false; + } + source->paused.resetStateReached(); + source->resumed.trigger(); + return true; +} + +bool MockMediaPlayer::mockStop(SourceId sourceId) { + auto source = getCurrentSource(sourceId); + if (!source) { + return false; + } + source->stopped.trigger(); + return true; +} + +bool MockMediaPlayer::mockFinished(SourceId sourceId) { + auto source = getCurrentSource(sourceId); + if (!source) { + return false; + } + source->finished.trigger(); + return true; +} + +bool MockMediaPlayer::mockError(SourceId sourceId) { + auto source = getCurrentSource(sourceId); + if (!source) { + return false; + } + source->error.trigger(); + return true; +} + +bool MockMediaPlayer::mockSetOffset(SourceId sourceId, std::chrono::milliseconds offset) { + auto source = getCurrentSource(sourceId); + if (!source) { + return false; + } + std::lock_guard lock(m_mutex); + source->offset = offset; + return true; +} + +std::chrono::milliseconds MockMediaPlayer::mockGetOffset(SourceId sourceId) { + auto source = getCurrentSource(sourceId); + if (!source) { + return MEDIA_PLAYER_INVALID_OFFSET; + } + return source->offset; +} + +bool MockMediaPlayer::waitUntilNextSetSource(const std::chrono::milliseconds timeout) { + auto originalSourceId = getCurrentSourceId(); + auto timeLimit = std::chrono::steady_clock::now() + timeout; + while (std::chrono::steady_clock::now() < timeLimit) { + if (getCurrentSourceId() != originalSourceId) { + return true; + } + std::this_thread::sleep_for(WAIT_LOOP_INTERVAL); + } + return false; +} + +bool MockMediaPlayer::waitUntilPlaybackStarted(std::chrono::milliseconds timeout) { + return m_sources[getCurrentSourceId()]->started.wait(timeout); +} + +bool MockMediaPlayer::waitUntilPlaybackPaused(std::chrono::milliseconds timeout) { + return m_sources[getCurrentSourceId()]->paused.wait(timeout); +} + +bool MockMediaPlayer::waitUntilPlaybackResumed(std::chrono::milliseconds timeout) { + return m_sources[getCurrentSourceId()]->resumed.wait(timeout); +} + +bool MockMediaPlayer::waitUntilPlaybackStopped(std::chrono::milliseconds timeout) { + return m_sources[getCurrentSourceId()]->stopped.wait(timeout); +} + +bool MockMediaPlayer::waitUntilPlaybackFinished(std::chrono::milliseconds timeout) { + return m_sources[getCurrentSourceId()]->finished.wait(timeout); +} + +bool MockMediaPlayer::waitUntilPlaybackError(std::chrono::milliseconds timeout) { + return m_sources[getCurrentSourceId()]->error.wait(timeout); +} + +MediaPlayerInterface::SourceId MockMediaPlayer::getCurrentSourceId() { + std::unique_lock lock(m_mutex); + return m_sources.size() - 1; +} + +MockMediaPlayer::SourceState::SourceState( + Source* source, + const std::string& name, + std::function, SourceId)> notifyFunction) : + m_source{source}, + m_name{name}, + m_notifyFunction{notifyFunction}, + m_stateReached{false}, + m_shutdown{false} { +} + +MockMediaPlayer::SourceState::~SourceState() { + { + std::lock_guard lock(m_mutex); + m_shutdown = true; + } + m_wake.notify_all(); + if (m_thread.joinable()) { + m_thread.join(); + } +} + +void MockMediaPlayer::SourceState::trigger() { + std::lock_guard lock(m_mutex); + if (m_stateReached) { + return; + } + m_thread = std::thread(&MockMediaPlayer::SourceState::notify, this, DEFAULT_TIME); + m_stateReached = true; + m_wake.notify_all(); +} + +void MockMediaPlayer::SourceState::notify(const std::chrono::milliseconds timeout) { + std::unique_lock lock(m_mutex); + auto observer = m_source->mockMediaPlayer->m_playerObserver; + if (!m_wake.wait_for(lock, timeout, [this]() { return (m_stateReached || m_shutdown); })) { + if (observer) { + lock.unlock(); + observer->onPlaybackError( + m_source->sourceId, ErrorType::MEDIA_ERROR_UNKNOWN, m_name + ": wait to notify timed out"); + } + return; + } + if (observer) { + m_notifyFunction(observer, m_source->sourceId); + } + return; +} + +bool MockMediaPlayer::SourceState::wait(const std::chrono::milliseconds timeout) { + std::unique_lock lock(m_mutex); + if (!m_wake.wait_for(lock, timeout, [this]() { return (m_stateReached || m_shutdown); })) { + return false; + } + return m_stateReached; +} + +void MockMediaPlayer::SourceState::resetStateReached() { + if (m_thread.joinable()) { + m_thread.join(); + } + std::unique_lock lock(m_mutex); + m_stateReached = false; +} + +static void notifyPlaybackStarted( + std::shared_ptr observer, + MediaPlayerInterface::SourceId sourceId) { + observer->onPlaybackStarted(sourceId); +} + +static void notifyPlaybackPaused( + std::shared_ptr observer, + MediaPlayerInterface::SourceId sourceId) { + observer->onPlaybackPaused(sourceId); +} + +static void notifyPlaybackResumed( + std::shared_ptr observer, + MediaPlayerInterface::SourceId sourceId) { + observer->onPlaybackResumed(sourceId); +} + +static void notifyPlaybackStopped( + std::shared_ptr observer, + MediaPlayerInterface::SourceId sourceId) { + observer->onPlaybackStopped(sourceId); +} + +static void notifyPlaybackFinished( + std::shared_ptr observer, + MediaPlayerInterface::SourceId sourceId) { + observer->onPlaybackFinished(sourceId); +} + +static void notifyPlaybackError( + std::shared_ptr observer, + MediaPlayerInterface::SourceId sourceId) { + observer->onPlaybackError(sourceId, ErrorType::MEDIA_ERROR_INTERNAL_SERVER_ERROR, "mock error"); +} + +MockMediaPlayer::Source::Source(MockMediaPlayer* player, SourceId id) : + mockMediaPlayer{player}, + sourceId{id}, + offset{MEDIA_PLAYER_INVALID_OFFSET}, + started{this, "started", notifyPlaybackStarted}, + paused{this, "paused", notifyPlaybackPaused}, + resumed{this, "resumed", notifyPlaybackResumed}, + stopped{this, "stopped", notifyPlaybackStopped}, + finished{this, "finished", notifyPlaybackFinished}, + error{this, "error", notifyPlaybackError} { +} + +std::shared_ptr MockMediaPlayer::getCurrentSource(SourceId sourceId) { + if (ERROR == sourceId || sourceId != getCurrentSourceId()) { + return nullptr; + } + return m_sources[static_cast(sourceId)]; +} + +} // namespace test +} // namespace mediaPlayer +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/ConfigurationNodeTest.cpp b/AVSCommon/Utils/test/ConfigurationNodeTest.cpp index 6993137e38..588566f2e8 100644 --- a/AVSCommon/Utils/test/ConfigurationNodeTest.cpp +++ b/AVSCommon/Utils/test/ConfigurationNodeTest.cpp @@ -1,7 +1,5 @@ /* - * ConfigurationNodeTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,6 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ + // @file ConfigurationNodeTest.cpp #include @@ -82,6 +81,7 @@ static const std::string NEW_STRING_VALUE2_1_1 = "new-stringValue2.1.1"; static const std::string BAD_JSON = "{ bad json }"; /// First JSON string to parse, serving as default for configuration values. +// clang-format off static const std::string FIRST_JSON = R"( { "object1" : { @@ -95,8 +95,10 @@ static const std::string FIRST_JSON = R"( } } })"; +// clang-format on /// Second JSON string to parse, overlaying configuration values from FIRST_JSON. +// clang-format off static const std::string SECOND_JSON = R"( { "object1" : { @@ -106,8 +108,10 @@ static const std::string SECOND_JSON = R"( "int1.1" : 11 } })"; +// clang-format on /// Third JSON string to parse, overlaying configuration values from FIRST_JSON and SECOND_JSON. +// clang-format off static const std::string THIRD_JSON = R"( { "object2" : { @@ -118,12 +122,12 @@ static const std::string THIRD_JSON = R"( } } })"; +// clang-format on /** * Class for testing the ConfigurationNode class */ -class ConfigurationNodeTest : public ::testing::Test { -}; +class ConfigurationNodeTest : public ::testing::Test {}; /** * Verify initialization a configuration. Verify both the implementation of accessor methods and the results @@ -171,7 +175,7 @@ TEST_F(ConfigurationNodeTest, testInitializationAndAccess) { int nonExistentInt21 = 0; ASSERT_NE(nonExistentInt21, NON_EXISTENT_INT_VALUE2_1); ASSERT_FALSE(ConfigurationNode::getRoot()[OBJECT2].getInt( - NON_EXISTENT_INT2_1, &nonExistentInt21, NON_EXISTENT_INT_VALUE2_1)); + NON_EXISTENT_INT2_1, &nonExistentInt21, NON_EXISTENT_INT_VALUE2_1)); ASSERT_EQ(nonExistentInt21, NON_EXISTENT_INT_VALUE2_1); // Verify extraction if an integer value. @@ -187,8 +191,7 @@ TEST_F(ConfigurationNodeTest, testInitializationAndAccess) { // Verify retrieval of default value when type does not match an existing value. nonExistentInt21 = 0; ASSERT_NE(nonExistentInt21, NON_EXISTENT_INT_VALUE2_1); - ASSERT_FALSE(ConfigurationNode::getRoot()[OBJECT2].getInt( - STRING2_1, &nonExistentInt21, NON_EXISTENT_INT_VALUE2_1)); + ASSERT_FALSE(ConfigurationNode::getRoot()[OBJECT2].getInt(STRING2_1, &nonExistentInt21, NON_EXISTENT_INT_VALUE2_1)); ASSERT_EQ(nonExistentInt21, NON_EXISTENT_INT_VALUE2_1); // Verify overwrite of string value in nested Configuration node. @@ -197,8 +200,8 @@ TEST_F(ConfigurationNodeTest, testInitializationAndAccess) { ASSERT_EQ(string211, NEW_STRING_VALUE2_1_1); } -} // namespace test -} // namespace configuration -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK +} // namespace test +} // namespace configuration +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/ExecutorTest.cpp b/AVSCommon/Utils/test/ExecutorTest.cpp index 2576bba48a..d2c7d0a849 100644 --- a/AVSCommon/Utils/test/ExecutorTest.cpp +++ b/AVSCommon/Utils/test/ExecutorTest.cpp @@ -1,7 +1,5 @@ /* - * ExecutorTest.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -27,13 +25,13 @@ namespace utils { namespace threading { namespace test { -class ExecutorTest: public ::testing::Test { +class ExecutorTest : public ::testing::Test { public: Executor executor; }; TEST_F(ExecutorTest, submitStdFunctionAndVerifyExecution) { - std::function function = []() { }; + std::function function = []() {}; auto future = executor.submit(function); auto future_status = future.wait_for(SHORT_TIMEOUT_MS); ASSERT_EQ(future_status, std::future_status::ready); @@ -46,7 +44,7 @@ TEST_F(ExecutorTest, submitStdBindAndVerifyExecution) { } TEST_F(ExecutorTest, submitLambdaAndVerifyExecution) { - auto future = executor.submit([]() { }); + auto future = executor.submit([]() {}); auto future_status = future.wait_for(SHORT_TIMEOUT_MS); ASSERT_EQ(future_status, std::future_status::ready); } @@ -82,14 +80,14 @@ TEST_F(ExecutorTest, submitFunctionWithObjectReturnTypeNoArgsAndVerifyExecution) TEST_F(ExecutorTest, submitFunctionWithNoReturnTypePrimitiveArgsAndVerifyExecution) { int value = VALUE; - auto future = executor.submit([](int number) { }, value); + auto future = executor.submit([](int number) {}, value); auto future_status = future.wait_for(SHORT_TIMEOUT_MS); ASSERT_EQ(future_status, std::future_status::ready); } TEST_F(ExecutorTest, submitFunctionWithNoReturnTypeObjectArgsAndVerifyExecution) { SimpleObject arg(0); - auto future = executor.submit([](SimpleObject object) { }, arg); + auto future = executor.submit([](SimpleObject object) {}, arg); auto future_status = future.wait_for(SHORT_TIMEOUT_MS); ASSERT_EQ(future_status, std::future_status::ready); } @@ -136,14 +134,12 @@ TEST_F(ExecutorTest, submitToFront) { std::list order; // submit a task which will block the executor - executor.submit( - [&] { - blocked = true; - while (!ready) { - std::this_thread::yield(); - } + executor.submit([&] { + blocked = true; + while (!ready) { + std::this_thread::yield(); } - ); + }); // wait for it to block while (!blocked) { @@ -193,8 +189,7 @@ struct SlowDestructor { * Boolean indicating destruction is completed (if != nullptr). Mutable so that a lambda can write to it in a * SlowDestructor parameter that is captured by value. */ - mutable std::atomic * cleanedUp; - + mutable std::atomic* cleanedUp; }; /// This test verifies that the executor waits to fulfill its promise until after the task is cleaned up. @@ -203,14 +198,15 @@ TEST_F(ExecutorTest, futureWaitsForTaskCleanup) { SlowDestructor slowDestructor; // Submit a lambda to execute which captures a parameter by value that is slow to destruct. - executor.submit( - [slowDestructor, &cleanedUp] { + executor + .submit([slowDestructor, &cleanedUp] { // Update the captured copy of slowDestructor so that it will delay destruction and update the cleanedUp // flag. slowDestructor.cleanedUp = &cleanedUp; } - // wait for the promise to be fulfilled. - ).wait(); + // wait for the promise to be fulfilled. + ) + .wait(); ASSERT_TRUE(cleanedUp); } @@ -221,15 +217,13 @@ TEST_F(ExecutorTest, shutdown) { std::atomic blocked(false); // submit a task which will block the executor and then sleep briefly - auto done = executor.submit( - [&] { - blocked = true; - while (!ready) { - std::this_thread::yield(); - } - std::this_thread::sleep_for(SHORT_TIMEOUT_MS); + auto done = executor.submit([&] { + blocked = true; + while (!ready) { + std::this_thread::yield(); } - ); + std::this_thread::sleep_for(SHORT_TIMEOUT_MS); + }); // wait for it to block while (!blocked) { @@ -253,8 +247,8 @@ TEST_F(ExecutorTest, shutdown) { ASSERT_FALSE(rejected.valid()); } -} // namespace test -} // namespace threading -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK +} // namespace test +} // namespace threading +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/ExecutorTestUtils.h b/AVSCommon/Utils/test/ExecutorTestUtils.h index 00d6cf4813..c035759cb4 100644 --- a/AVSCommon/Utils/test/ExecutorTestUtils.h +++ b/AVSCommon/Utils/test/ExecutorTestUtils.h @@ -1,7 +1,5 @@ /* - * ExecutorTestUtils.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,6 +12,10 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ + +#ifndef ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_TEST_EXECUTORTESTUTILS_H_ +#define ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_TEST_EXECUTORTESTUTILS_H_ + #include namespace alexaClientSDK { @@ -54,18 +56,21 @@ class ExampleFunctor { */ class SimpleObject { public: - SimpleObject() : m_value{0} { }; - SimpleObject(int value) : m_value{value} { }; + SimpleObject() : m_value{0} {}; + SimpleObject(int value) : m_value{value} {}; int getValue() { return m_value; } + private: int m_value; }; -} // namespace test -} // namespace threading -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK +} // namespace test +} // namespace threading +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_AVSCOMMON_UTILS_TEST_EXECUTORTESTUTILS_H_ diff --git a/AVSCommon/Utils/test/JSONUtilTest.cpp b/AVSCommon/Utils/test/JSONUtilTest.cpp index 7177802a61..b7fce64290 100644 --- a/AVSCommon/Utils/test/JSONUtilTest.cpp +++ b/AVSCommon/Utils/test/JSONUtilTest.cpp @@ -1,7 +1,5 @@ /* - * AVSMessageTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,7 +13,7 @@ * permissions and limitations under the License. */ -/// @file AVSMessageTest.cpp +/// @file JSONUtilTest.cpp #include #include @@ -51,7 +49,7 @@ static const std::string JSON_MESSAGE_DIALOG_REQUEST_ID_STRING = "dialogRequestI static const std::string JSON_MESSAGE_PAYLOAD_STRING = "payload"; /// The directive key in the JSON content of an AVS message -static const std::string DIRECTIVE_TEST = "directive"; +static const std::string DIRECTIVE_KEY = "directive"; /// The namespace in AVS message. static const std::string NAMESPACE_TEST = "SpeechSynthesizer"; /// The name field in AVS message. @@ -63,15 +61,25 @@ static const std::string DIALOG_REQUEST_ID_TEST = "dialogRequestIdTest"; /// The payload in AVS message. static const std::string PAYLOAD_TEST = R"({"url":"cid:testCID","format":"testFormat","token":"testToken"})"; -/// An invalid JSON string for testing. -static const std::string INVALID_JSON = "invalidTestJSON"; -/// An invalid AVS directive JSON. -static const std::string INVALID_DIRECTIVE = R"({ +/// A random text to test the output value modification. +static const std::string OUTPUT_DEFAULT_TEXT_STRING = "defaultString"; +/// A random integer to test the output value modification. +static const int OUTPUT_DEFAULT_INT_VALUE = 42; +/// Expected string value. +static const std::string EXPECTED_STRING_VALUE = "expectedValue"; +/// Expected int value. +static const int EXPECTED_INT_VALUE = 123; +/// Expected int value converted to a string. +static const std::string EXPECTED_INT_VALUE_STRINGIFIED = "123"; + +/// An invalid AVS directive JSON.`` +static const std::string EMPTY_DIRECTIVE = R"({ "directive": { } })"; /// A sample AVS speak directive with all valid JSON keys. +// clang-format off static const std::string SPEAK_DIRECTIVE = R"({ "directive": { "header": { @@ -83,142 +91,143 @@ static const std::string SPEAK_DIRECTIVE = R"({ "payload": )" + PAYLOAD_TEST + R"( } })"; +// clang-format on + +/// The JSON key used in value reading tests. +static const std::string VALUE_KEY = "anInt64"; -/// The JSON key used in @c int64Json(). -static const std::string INT64_KEY = "anInt64"; +/// A JSON key *not* used in value reading tests. +static const std::string MISSING_KEY = "missingKey"; -/// A JSON key *not* used in @c int64Json(). -static const std::string INT64_MISSING_KEY = "missingKey"; +/// An invalid JSON string for testing. +static const std::string INVALID_JSON = "invalidTestJSON"; -/// A JSON value which does not convert to an int64. -static const std::string NOT_AN_INT64 = R"("not a number")"; +// clang-format off +/// A valid JSON string with scalar string value. +static const std::string VALID_JSON_STRING_VALUE = R"({")" + VALUE_KEY + R"(":")" + EXPECTED_STRING_VALUE + R"("})"; -/// A JSON value which does convert to an int64. -static const std::string AN_INT64_STRING = "3147483647"; +/// A valid JSON string with integer value. +static const std::string VALID_JSON_INTEGER_VALUE = R"({")" + + VALUE_KEY + R"(":)" + EXPECTED_INT_VALUE_STRINGIFIED + R"(})"; -/// The int64 conversion of AN_INT64_STRING. -static const int64_t AN_INT64 = 3147483647; +// clang-format on /// A double. static const double A_DOUBLE = 1.0; -/// A function to generate JSON containing the key @c INT64_KEY with the provided @c value. -static const std::string int64Json(const std::string& value) { - return R"({")" + INT64_KEY + R"(": )" + value + R"(})"; -} +/// A bool used for construction of rapidjson::Value objects. +static const bool A_BOOL = false; /// A valid string JSON Value. static const std::string STRING_VALUE = "stringValue"; /// A valid empty string JSON Value. -static const std::string STRING_VALUE_EMPTY = "{}"; - -/// A non-existent key. -static const std::string MISSING_KEY = "missingKey"; +static const std::string STRING_VALUE_EMPTY_JSON_OBJECT = "{}"; /// Define test fixture for testing AVSMessage. class JSONUtilTest : public ::testing::Test {}; -// TODO: Refactor unit tests when lookUpXXX functions are removed. ACSDK-382 /** - * Test with invalid JSON format, it should not crash the AVSMessage. + * Tests retrieveValue(const std::string jsonString, const std::string& key, T* value) + * with T = std::string for getting child object as a string. */ -TEST_F(JSONUtilTest, invalidJson) { +TEST_F(JSONUtilTest, validJsonChildObjectAsString) { std::string value; - ASSERT_FALSE(jsonUtils::lookupStringValue(INVALID_JSON, DIRECTIVE_TEST, &value)); - ASSERT_TRUE(value.empty()); + ASSERT_TRUE(jsonUtils::retrieveValue(EMPTY_DIRECTIVE, DIRECTIVE_KEY, &value)); + ASSERT_EQ(value, STRING_VALUE_EMPTY_JSON_OBJECT); } /** - * Test with invalid directive, it should not crash the AVSMessage and return the empty. + * Tests retrieveValue(const std::string jsonString, const std::string& key, T* value) + * with T = std::string for getting value of a scalar string. */ -TEST_F(JSONUtilTest, invalidDirective) { +TEST_F(JSONUtilTest, validJsonScalarString) { std::string value; - ASSERT_TRUE(jsonUtils::lookupStringValue(INVALID_DIRECTIVE, DIRECTIVE_TEST, &value)); - ASSERT_EQ(value, "{}"); - - ASSERT_FALSE(jsonUtils::lookupStringValue(value, NAMESPACE_TEST, &value)); - ASSERT_EQ(value, "{}"); + ASSERT_TRUE(jsonUtils::retrieveValue(VALID_JSON_STRING_VALUE, VALUE_KEY, &value)); + ASSERT_EQ(value, EXPECTED_STRING_VALUE); } /** - * Test extracting header with valid AVS directive. + * Tests retrieveValue(const std::string jsonString, const std::string& key, T* value) + * with T = int64 for getting an integer value. */ -TEST_F(JSONUtilTest, extractHeaderFromValidDirective) { - std::string jsonContent; - std::string value; - - ASSERT_TRUE(jsonUtils::lookupStringValue(SPEAK_DIRECTIVE, DIRECTIVE_TEST, &jsonContent)); - - ASSERT_TRUE(jsonUtils::lookupStringValue(jsonContent, JSON_MESSAGE_HEADER_STRING, &jsonContent)); - - jsonUtils::lookupStringValue(jsonContent, JSON_MESSAGE_NAMESPACE_STRING, &value); - EXPECT_EQ(value, NAMESPACE_TEST); - - jsonUtils::lookupStringValue(jsonContent, JSON_MESSAGE_NAME_STRING, &value); - EXPECT_EQ(value, NAME_TEST); - - jsonUtils::lookupStringValue(jsonContent, JSON_MESSAGE_ID_STRING, &value); - EXPECT_EQ(value, MESSAGE_ID_TEST); - - jsonUtils::lookupStringValue(jsonContent, JSON_MESSAGE_DIALOG_REQUEST_ID_STRING, &value); - EXPECT_EQ(value, DIALOG_REQUEST_ID_TEST); +TEST_F(JSONUtilTest, validJsonInteger) { + int64_t value = OUTPUT_DEFAULT_INT_VALUE; + ASSERT_TRUE(jsonUtils::retrieveValue(VALID_JSON_INTEGER_VALUE, VALUE_KEY, &value)); + ASSERT_EQ(value, EXPECTED_INT_VALUE); } /** - * Test extracting payload with valid AVS directive. + * Tests retrieveValue(const std::string jsonString, const std::string& key, T* value) + * with T = int64 and an invalid JSON. Returns false. */ -TEST_F(JSONUtilTest, extractPayloadFromValidDirective) { - std::string jsonContent; - std::string value; - std::string payload; - - ASSERT_TRUE(jsonUtils::lookupStringValue(SPEAK_DIRECTIVE, DIRECTIVE_TEST, &jsonContent)); +TEST_F(JSONUtilTest, retrieveValueStringBasedInt64FromInvalidJSON) { + int64_t value = OUTPUT_DEFAULT_INT_VALUE; + ASSERT_FALSE(retrieveValue(INVALID_JSON, VALUE_KEY, &value)); + ASSERT_EQ(value, OUTPUT_DEFAULT_INT_VALUE); +} - ASSERT_TRUE(jsonUtils::lookupStringValue(jsonContent, JSON_MESSAGE_PAYLOAD_STRING, &payload)); +/** + * Tests retrieveValue(const std::string jsonString, const std::string& key, T* value) + * with T = std::string and an invalid JSON. Returns false. + */ +TEST_F(JSONUtilTest, retrieveValueStringBasedStringFromInvalidJSON) { + std::string value = OUTPUT_DEFAULT_TEXT_STRING; + ASSERT_FALSE(retrieveValue(INVALID_JSON, VALUE_KEY, &value)); + ASSERT_EQ(value, OUTPUT_DEFAULT_TEXT_STRING); +} - ASSERT_EQ(payload, PAYLOAD_TEST); +/** + * Tests retrieveValue(const std::string jsonString, const std::string& key, T* value) + * with T = int64 and an incorrect key. Returns false. + */ +TEST_F(JSONUtilTest, retrieveValueStringBasedWithIncorrectKey) { + int64_t value = OUTPUT_DEFAULT_INT_VALUE; + ASSERT_FALSE(retrieveValue(VALID_JSON_INTEGER_VALUE, MISSING_KEY, &value)); + ASSERT_EQ(value, OUTPUT_DEFAULT_INT_VALUE); } +/** + * Tests retrieveValue(const std::string jsonString, const std::string& key, T* value) + * with T = int64 and a null output param. Returns false. + */ +TEST_F(JSONUtilTest, retrieveValueStringBasedWithNull) { + int64_t* value = nullptr; + ASSERT_FALSE(retrieveValue(VALID_JSON_INTEGER_VALUE, VALUE_KEY, value)); +} /** - * Test failure to extract an int64. + * Tests retrieveValue(const rapidjson::Value& jsonNode, const std::string& key, T* value) + * with T = int64 and a value of invalid type. Returns false. */ -TEST_F(JSONUtilTest, extractValidInt64Failures) { - int64_t expected = 0; +TEST_F(JSONUtilTest, retrieveValueDocumentBasedWithInvalidValueType) { + Document doc; + doc.Parse(VALID_JSON_STRING_VALUE); int64_t value; - - // Verify lookup fails with a null value pointer. - EXPECT_FALSE(jsonUtils::lookupInt64Value(int64Json(std::to_string(expected)), INT64_KEY, nullptr)); - - // Verify lookup fails with invalid json. - EXPECT_FALSE(jsonUtils::lookupInt64Value(INVALID_JSON, INT64_KEY, &value)); - - // Verify lookup fails with incorrect key. - EXPECT_FALSE(jsonUtils::lookupInt64Value(int64Json(std::to_string(expected)), INT64_MISSING_KEY, &value)); - - // Verify lookup fails with non-numeric value. - EXPECT_FALSE(jsonUtils::lookupInt64Value(int64Json(NOT_AN_INT64), INT64_KEY, &value)); + ASSERT_FALSE(retrieveValue(doc, VALUE_KEY, &value)); } /** - * Test extracting min int64. + * Tests retrieveValue(const rapidjson::Value& jsonNode, const std::string& key, T* value) + * with T = int64 and a null output param. Returns false. */ -TEST_F(JSONUtilTest, extractMinInt64) { - int64_t expected = std::numeric_limits::min(); - int64_t value; - ASSERT_TRUE(jsonUtils::lookupInt64Value(int64Json(std::to_string(expected)), INT64_KEY, &value)); - ASSERT_EQ(value, expected); +TEST_F(JSONUtilTest, retrieveValueDocumentBasedWithNull) { + Document doc; + doc.Parse(VALID_JSON_INTEGER_VALUE); + int64_t* value = nullptr; + ASSERT_FALSE(retrieveValue(doc, VALUE_KEY, value)); } /** - * Test extracting max int64. + * Tests retrieveValue(const rapidjson::Value& jsonNode, const std::string& key, T* value) + * with T = int64 and a valid value. Returns true and obtains the correct value. */ -TEST_F(JSONUtilTest, extractMaxInt64) { - int64_t expected = std::numeric_limits::max(); +TEST_F(JSONUtilTest, retrieveValueDocumentBasedWithValidInt64) { + Document doc; + doc.Parse(VALID_JSON_INTEGER_VALUE); int64_t value; - ASSERT_TRUE(jsonUtils::lookupInt64Value(int64Json(std::to_string(expected)), INT64_KEY, &value)); - ASSERT_EQ(value, expected); + ASSERT_TRUE(retrieveValue(doc, VALUE_KEY, &value)); + ASSERT_EQ(value, EXPECTED_INT_VALUE); } /** @@ -237,7 +246,7 @@ TEST_F(JSONUtilTest, findNodeKeyExists) { Document doc; doc.Parse(SPEAK_DIRECTIVE); Value::ConstMemberIterator iterator; - ASSERT_TRUE(findNode(doc, DIRECTIVE_TEST, &iterator)); + ASSERT_TRUE(findNode(doc, DIRECTIVE_KEY, &iterator)); ASSERT_NE(iterator, doc.MemberEnd()); } @@ -276,68 +285,6 @@ TEST_F(JSONUtilTest, parseJSONInvalidJSON) { ASSERT_TRUE(doc.HasParseError()); } -/** - * Tests retrieveValue(const rapidjson::Value& jsonNode, const std::string& key, T* value) - * with T = int64 and a invalid value. Returns false. - */ -TEST_F(JSONUtilTest, retrieveValueDocumentBasedWithInvalidValue) { - Document doc; - doc.Parse(int64Json(NOT_AN_INT64)); - int64_t value; - ASSERT_FALSE(retrieveValue(doc, INT64_KEY, &value)); -} - -/** - * Tests retrieveValue(const rapidjson::Value& jsonNode, const std::string& key, T* value) - * with T = int64 and a null output param. Returns false. - */ -TEST_F(JSONUtilTest, retrieveValueDocumentBasedWithNull) { - Document doc; - doc.Parse(int64Json(AN_INT64_STRING)); - int64_t* value = nullptr; - ASSERT_FALSE(retrieveValue(doc, INT64_KEY, value)); -} - -/** - * Tests retrieveValue(const rapidjson::Value& jsonNode, const std::string& key, T* value) - * with T = int64 and a valid value. Returns true and obtains the correct value. - */ -TEST_F(JSONUtilTest, retrieveValueDocumentBasedWithValidInt64) { - Document doc; - doc.Parse(int64Json(AN_INT64_STRING)); - int64_t value; - ASSERT_TRUE(retrieveValue(doc, INT64_KEY, &value)); - ASSERT_EQ(value, AN_INT64); -} - -/** - * Tests retrieveValue(const std::string jsonString, const std::string& key, T* value) - * with T = int64 and a valid value. Returns true and obtains the correct value. - */ -TEST_F(JSONUtilTest, retrieveValueStringBasedWithValidValue) { - int64_t value; - ASSERT_TRUE(retrieveValue(int64Json(AN_INT64_STRING), INT64_KEY, &value)); - ASSERT_EQ(value, AN_INT64); -} - -/** - * Tests retrieveValue(const std::string jsonString, const std::string& key, T* value) - * with T = int64 and a invalid value. Returns false. - */ -TEST_F(JSONUtilTest, retrieveValueStringBasedWithInvalidValue) { - int64_t value; - ASSERT_FALSE(retrieveValue(int64Json(NOT_AN_INT64), INT64_KEY, &value)); -} - -/** - * Tests retrieveValue(const std::string jsonString, const std::string& key, T* value) - * with T = int64 and a null output param. Returns false. - */ -TEST_F(JSONUtilTest, retrieveValueStringBasedWithNull) { - int64_t* value = nullptr; - ASSERT_FALSE(retrieveValue(int64Json(AN_INT64_STRING), INT64_KEY, value)); -} - /** * Tests convertToValue with Value of rapidjson::Type::kStringType. Returns * true and contains the correct value. @@ -358,7 +305,7 @@ TEST_F(JSONUtilTest, convertToStringValueWithObject) { rapidjson::Value emptyObject(kObjectType); std::string actual; ASSERT_TRUE(convertToValue(emptyObject, &actual)); - ASSERT_EQ(STRING_VALUE_EMPTY, actual); + ASSERT_EQ(STRING_VALUE_EMPTY_JSON_OBJECT, actual); } /** @@ -386,7 +333,7 @@ TEST_F(JSONUtilTest, convertToStringValueWithNullOutputParam) { * Tests convertToValue with valid int64_6. Returns true and contains the correct value. */ TEST_F(JSONUtilTest, convertToInt64ValueWithInt64) { - rapidjson::Value expected(AN_INT64); + rapidjson::Value expected(EXPECTED_INT_VALUE); int64_t actual; ASSERT_TRUE(convertToValue(expected, &actual)); ASSERT_EQ(expected.GetInt64(), actual); @@ -406,13 +353,42 @@ TEST_F(JSONUtilTest, convertToInt64ValueWithDouble) { * Returns false. */ TEST_F(JSONUtilTest, convertToInt64ValueWithNullOutputParam) { - rapidjson::Value node(AN_INT64); + rapidjson::Value node(EXPECTED_INT_VALUE); int64_t* value = nullptr; ASSERT_FALSE(convertToValue(node, value)); } -} // namespace test -} // namespace json -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +/** + * Tests convertToValue with null output param. + * Returns false. + */ +TEST_F(JSONUtilTest, convertToBoolValueWithNullOutputParam) { + rapidjson::Value node(A_BOOL); + bool* value = nullptr; + ASSERT_FALSE(convertToValue(node, value)); +} + +/** + * Tests convertToValue with a nonbool. Returns false. + */ +TEST_F(JSONUtilTest, convertToBoolValueWithNonBool) { + rapidjson::Value expected(A_DOUBLE); + bool actual; + ASSERT_FALSE(convertToValue(expected, &actual)); +} + +/** + * Tests convertToValue with valid bool. Returns true and contains the correct value. + */ +TEST_F(JSONUtilTest, convertToBoolValueWithBool) { + rapidjson::Value expected(A_BOOL); + bool actual; + ASSERT_TRUE(convertToValue(expected, &actual)); + ASSERT_EQ(expected.GetBool(), actual); +} + +} // namespace test +} // namespace json +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/LogEntryStreamTest.cpp b/AVSCommon/Utils/test/LogEntryStreamTest.cpp index 72782a6c50..36d71d62ed 100644 --- a/AVSCommon/Utils/test/LogEntryStreamTest.cpp +++ b/AVSCommon/Utils/test/LogEntryStreamTest.cpp @@ -1,7 +1,5 @@ /* - * LogEntryStreamTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -27,7 +25,6 @@ namespace test { using namespace ::testing; - /** * Class for testing the LogEntryStream class */ @@ -95,8 +92,8 @@ TEST_F(LogEntryStreamTest, aLotOfStrings) { ASSERT_EQ(strlen(m_stream.c_str()), expected.str().length()); } -} // namespace test -} // namespace logger -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK +} // namespace test +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/LoggerTest.cpp b/AVSCommon/Utils/test/LoggerTest.cpp index 907734a4fa..af12d543c9 100644 --- a/AVSCommon/Utils/test/LoggerTest.cpp +++ b/AVSCommon/Utils/test/LoggerTest.cpp @@ -1,7 +1,5 @@ /* - * LoggerTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -30,7 +28,6 @@ namespace test { using namespace ::testing; - /// Macro used to initial creation of log entries for this source. #define LX(event) LogEntry(TEST_SOURCE_STRING, event) @@ -53,10 +50,12 @@ using namespace ::testing; #define ESCAPED_METADATA_VALUE R"(reserved_chars['\\' '\,' '\:' '\='])" /// Expected output string for test of boolean metadata. +// clang-format off #define METADATA_EXPECTED_BOOLEANS \ METADATA_KEY_TRUE KEY_VALUE_SEPARATOR "true" \ KEY_VALUE_PAIR_SEPARATOR \ METADATA_KEY_FALSE KEY_VALUE_SEPARATOR "false" +// clang-format on /// String used to test that the source component is logged static const std::string TEST_SOURCE_STRING = ""; @@ -77,13 +76,10 @@ static const std::string TEST_MESSAGE_STRING_1 = "World Hello!"; */ class MockLogger : public Logger { public: - MOCK_METHOD1(shouldLog, bool(Level level)); - MOCK_METHOD4(emit, void( - Level level, - std::chrono::system_clock::time_point time, - const char *threadMoniker, - const char *text)); + MOCK_METHOD4( + emit, + void(Level level, std::chrono::system_clock::time_point time, const char* threadMoniker, const char* text)); /** * Create a new MockLogger instance. @@ -104,11 +100,7 @@ class MockLogger : public Logger { * @param threadMoniker Moniker of the thread that generated the event. * @param text The text of the log entry. */ - void mockEmit( - Level level, - std::chrono::system_clock::time_point time, - const char *threadId, - const char *text); + void mockEmit(Level level, std::chrono::system_clock::time_point time, const char* threadId, const char* text); /// The last time value passed in a log(...) call. std::chrono::system_clock::time_point m_lastTime; @@ -154,40 +146,36 @@ class TestLogger : public Logger { */ TestLogger(); - void emit( - Level level, - std::chrono::system_clock::time_point time, - const char *threadMoniker, - const char *text) override; + void emit(Level level, std::chrono::system_clock::time_point time, const char* threadMoniker, const char* text) + override; }; TestLogger::TestLogger() : Logger(Level::DEBUG9) { } void TestLogger::emit( - Level level, - std::chrono::system_clock::time_point time, - const char *threadMoniker, - const char *text) { + Level level, + std::chrono::system_clock::time_point time, + const char* threadMoniker, + const char* text) { g_log->emit(level, time, threadMoniker, text); } // Temporarily back out of namespace "test" to put getLoggerTestLogger() in the required namespace. -} // namespace test +} // namespace test /** * Function for ACSDK_* macros to use to get the @c Logger to use. * @return The @c Logger to use. */ -Logger& getLoggerTestLogger() { - static test::TestLogger testLogger; +std::shared_ptr getLoggerTestLogger() { + static std::shared_ptr testLogger = std::make_shared(); return testLogger; } // Return to namespace "test" namespace test { - std::shared_ptr> MockLogger::create() { auto result = std::make_shared>(); ON_CALL(*result.get(), shouldLog(_)).WillByDefault(Return(true)); @@ -199,10 +187,10 @@ MockLogger::MockLogger() : Logger(Level::DEBUG9) { } void MockLogger::mockEmit( - Level level, - std::chrono::system_clock::time_point time, - const char *threadMoniker, - const char *text) { + Level level, + std::chrono::system_clock::time_point time, + const char* threadMoniker, + const char* text) { m_lastTime = time; m_lastThreadMoniker = threadMoniker; m_lastText = text; @@ -213,7 +201,7 @@ MockModuleLogger::MockModuleLogger() : ModuleLogger(ACSDK_STRINGIFY(ACSDK_LOG_SI MockModuleLogger::~MockModuleLogger() { LoggerSinkManager::instance().removeSinkObserver(this); - m_sink.load()->removeLogLevelObserver(this); + m_sink->removeLogLevelObserver(this); } /** @@ -239,7 +227,8 @@ class LoggerTest : public ::testing::Test { void LoggerTest::SetUp() { // make sure getLoggerTestLogger() is used as sink - LoggerSinkManager::instance().changeSinkLogger(getLoggerTestLogger()); + g_log = MockLogger::create(); + LoggerSinkManager::instance().initialize(getLoggerTestLogger()); } void LoggerTest::TearDown() { @@ -247,8 +236,6 @@ void LoggerTest::TearDown() { } void LoggerTest::setLevelExpectations(Level level) { - - g_log = MockLogger::create(); ACSDK_GET_LOGGER_FUNCTION().setLevel(level); switch (level) { @@ -484,7 +471,6 @@ TEST_F(LoggerTest, logNoneLevel) { * emit() method is between (inclusive) the before and after times. */ TEST_F(LoggerTest, verifyTime) { - g_log = MockLogger::create(); ACSDK_GET_LOGGER_FUNCTION().setLevel(Level::INFO); EXPECT_CALL(*(g_log.get()), emit(Level::INFO, _, _, _)).Times(1); @@ -500,12 +486,11 @@ TEST_F(LoggerTest, verifyTime) { * two threads and verifies that the thread moniker values passed to the emit() method are in fact different. */ TEST_F(LoggerTest, verifyThreadMoniker) { - g_log = MockLogger::create(); ACSDK_GET_LOGGER_FUNCTION().setLevel(Level::INFO); EXPECT_CALL(*(g_log.get()), emit(Level::INFO, _, _, _)).Times(2); ACSDK_INFO(LX("testing threadMoniker (1 of 2)")); auto firstThreadMoniker = g_log->m_lastThreadMoniker; - std::thread secondThread([this, firstThreadMoniker]() { + std::thread secondThread([firstThreadMoniker]() { ACSDK_INFO(LX("testing threadMoniker (2 of 2)")); ASSERT_NE(firstThreadMoniker, g_log->m_lastThreadMoniker); }); @@ -518,7 +503,6 @@ TEST_F(LoggerTest, verifyThreadMoniker) { * passed to the emit() method. */ TEST_F(LoggerTest, verifySource) { - g_log = MockLogger::create(); ACSDK_GET_LOGGER_FUNCTION().setLevel(Level::INFO); EXPECT_CALL(*(g_log.get()), emit(Level::INFO, _, _, _)).Times(1); ACSDK_INFO(LX("random_event")); @@ -531,7 +515,6 @@ TEST_F(LoggerTest, verifySource) { * passed to the emit() method. */ TEST_F(LoggerTest, verifyEvent) { - g_log = MockLogger::create(); ACSDK_GET_LOGGER_FUNCTION().setLevel(Level::INFO); EXPECT_CALL(*(g_log.get()), emit(Level::INFO, _, _, _)).Times(1); std::string event(TEST_EVENT_STRING); @@ -545,11 +528,12 @@ TEST_F(LoggerTest, verifyEvent) { * both the key and escaped value are included in the text passed to the emit() method. */ TEST_F(LoggerTest, verifyMetadata) { - g_log = MockLogger::create(); ACSDK_GET_LOGGER_FUNCTION().setLevel(Level::INFO); EXPECT_CALL(*(g_log.get()), emit(Level::INFO, _, _, _)).Times(1); ACSDK_INFO(LX("testing metadata") - .d(METADATA_KEY, UNESCAPED_METADATA_VALUE).d(METADATA_KEY_TRUE, true).d(METADATA_KEY_FALSE, false)); + .d(METADATA_KEY, UNESCAPED_METADATA_VALUE) + .d(METADATA_KEY_TRUE, true) + .d(METADATA_KEY_FALSE, false)); ASSERT_NE(g_log->m_lastText.find(METADATA_KEY KEY_VALUE_SEPARATOR ESCAPED_METADATA_VALUE), std::string::npos); ASSERT_NE(g_log->m_lastText.find(METADATA_EXPECTED_BOOLEANS), std::string::npos); } @@ -559,7 +543,6 @@ TEST_F(LoggerTest, verifyMetadata) { * Expects that the message is included in text passed to the emit() method. */ TEST_F(LoggerTest, verifyMessage) { - g_log = MockLogger::create(); ACSDK_GET_LOGGER_FUNCTION().setLevel(Level::INFO); EXPECT_CALL(*(g_log.get()), emit(Level::INFO, _, _, _)).Times(1); std::string message(TEST_MESSAGE_STRING); @@ -571,7 +554,6 @@ TEST_F(LoggerTest, verifyMessage) { * Test passing sensitive data to the logging system. It should only be emitted in DEBUG builds. */ TEST_F(LoggerTest, testSensitiveDataSuppressed) { - g_log = MockLogger::create(); ACSDK_GET_LOGGER_FUNCTION().setLevel(Level::INFO); EXPECT_CALL(*(g_log.get()), emit(Level::INFO, _, _, _)).Times(1); ACSDK_INFO(LX("testing metadata").sensitive(METADATA_KEY, UNESCAPED_METADATA_VALUE)); @@ -590,12 +572,12 @@ TEST_F(LoggerTest, testSensitiveDataSuppressed) { */ TEST_F(LoggerTest, testModuleLoggerObserver) { MockModuleLogger mockModuleLogger; - getLoggerTestLogger().setLevel(Level::WARN); + getLoggerTestLogger()->setLevel(Level::WARN); ASSERT_EQ(mockModuleLogger.getLogLevel(), Level::WARN); mockModuleLogger.setLevel(Level::CRITICAL); ASSERT_EQ(mockModuleLogger.getLogLevel(), Level::CRITICAL); - getLoggerTestLogger().setLevel(Level::NONE); - ASSERT_EQ(mockModuleLogger.getLogLevel(), Level::CRITICAL); + getLoggerTestLogger()->setLevel(Level::NONE); + ASSERT_EQ(mockModuleLogger.getLogLevel(), Level::NONE); } /** @@ -606,7 +588,7 @@ TEST_F(LoggerTest, testMultipleModuleLoggerObservers) { MockModuleLogger mockModuleLogger2; MockModuleLogger mockModuleLogger3; - getLoggerTestLogger().setLevel(Level::WARN); + getLoggerTestLogger()->setLevel(Level::WARN); ASSERT_EQ(mockModuleLogger1.getLogLevel(), Level::WARN); ASSERT_EQ(mockModuleLogger2.getLogLevel(), Level::WARN); ASSERT_EQ(mockModuleLogger3.getLogLevel(), Level::WARN); @@ -616,8 +598,8 @@ TEST_F(LoggerTest, testMultipleModuleLoggerObservers) { ASSERT_EQ(mockModuleLogger2.getLogLevel(), Level::WARN); ASSERT_EQ(mockModuleLogger3.getLogLevel(), Level::WARN); - getLoggerTestLogger().setLevel(Level::NONE); - ASSERT_EQ(mockModuleLogger1.getLogLevel(), Level::CRITICAL); + getLoggerTestLogger()->setLevel(Level::NONE); + ASSERT_EQ(mockModuleLogger1.getLogLevel(), Level::NONE); ASSERT_EQ(mockModuleLogger2.getLogLevel(), Level::NONE); ASSERT_EQ(mockModuleLogger3.getLogLevel(), Level::NONE); } @@ -627,11 +609,11 @@ TEST_F(LoggerTest, testMultipleModuleLoggerObservers) { * ModuleLoggers will be changed. */ TEST_F(LoggerTest, testChangeSinkLogger) { - g_log = MockLogger::create(); std::shared_ptr sink1 = MockLogger::create(); + std::shared_ptr sink1Logger = sink1; // reset loglevel to INFO - getLoggerTestLogger().setLevel(Level::INFO); + getLoggerTestLogger()->setLevel(Level::INFO); // ModuleLoggers uses TestLogger as sink, so there shouldn't be any message // sent to sink1 @@ -640,17 +622,17 @@ TEST_F(LoggerTest, testChangeSinkLogger) { ASSERT_EQ(sink1->m_lastText.find(TEST_MESSAGE_STRING), std::string::npos); // change to use sink1, now log message should be sent to sink1 - LoggerSinkManager::instance().changeSinkLogger(*sink1); + LoggerSinkManager::instance().initialize(sink1Logger); ACSDK_INFO(LX(TEST_MESSAGE_STRING_1)); ASSERT_NE(g_log->m_lastText.find(TEST_MESSAGE_STRING), std::string::npos); ASSERT_NE(sink1->m_lastText.find(TEST_MESSAGE_STRING_1), std::string::npos); // reset to the default sink to avoid messing up with subsequent tests - LoggerSinkManager::instance().changeSinkLogger(getLoggerTestLogger()); + LoggerSinkManager::instance().initialize(getLoggerTestLogger()); } -} // namespace test -} // namespace logger -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK +} // namespace test +} // namespace logger +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/RequiresShutdownTest.cpp b/AVSCommon/Utils/test/RequiresShutdownTest.cpp index f26c9233c7..01ef70ab42 100644 --- a/AVSCommon/Utils/test/RequiresShutdownTest.cpp +++ b/AVSCommon/Utils/test/RequiresShutdownTest.cpp @@ -1,7 +1,5 @@ /* - * RequiresShutdownTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -34,7 +32,8 @@ class Object : public alexaClientSDK::avsCommon::utils::RequiresShutdown { * * @param name of object to log in any messages. */ - Object(const std::string& name) : alexaClientSDK::avsCommon::utils::RequiresShutdown(name), properShutdown{true} {} + Object(const std::string& name) : alexaClientSDK::avsCommon::utils::RequiresShutdown(name), properShutdown{true} { + } /// Dummy shutdown function which doesn't do anything. void doShutdown() override; @@ -96,10 +95,10 @@ TEST(RequiresShutdownTest, allTestCases) { // raw pointer leak that implements and calls proper shutdown function, but doesn't call it auto rawPointerLeakNoCallShutdown = new Object("rawPointerLeakNoCallShutdown"); - (void) rawPointerLeakNoCallShutdown; + (void)rawPointerLeakNoCallShutdown; } -} // namespace test -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/SafeTimeAccessTest.cpp b/AVSCommon/Utils/test/SafeTimeAccessTest.cpp new file mode 100644 index 0000000000..6e56dc436d --- /dev/null +++ b/AVSCommon/Utils/test/SafeTimeAccessTest.cpp @@ -0,0 +1,219 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +#include + +#include "AVSCommon/Utils/Timing/SafeCTimeAccess.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace timing { +namespace test { + +/// A bound on the upper time to check. +const time_t LARGE_TIME_VALUE = (0x1 << 30) - 1; + +/// Test to verify that getGmtime returns failure if a nullptr is passed for the result variable. +TEST(SafeCTimeAccessTest, getGmtimeNullReturnValue) { + auto safeCTimeAccess = SafeCTimeAccess::instance(); + ASSERT_FALSE(safeCTimeAccess->getGmtime(0, nullptr)); +} + +/// Test to verify that getLocaltime returns failure if a nullptr is passed for the result variable. +TEST(SafeCTimeAccessTest, getLocaltimeNullReturnValue) { + auto safeCTimeAccess = SafeCTimeAccess::instance(); + ASSERT_FALSE(safeCTimeAccess->getLocaltime(0, nullptr)); +} + +/** + * Utility function to check to see if two std::tm objects are equal. + * + * @param a One of the structures to check. + * @param b The other structure to check. + */ +static void checkTm(const std::tm& a, const std::tm& b) { + EXPECT_EQ(a.tm_sec, b.tm_sec); + EXPECT_EQ(a.tm_min, b.tm_min); + EXPECT_EQ(a.tm_hour, b.tm_hour); + EXPECT_EQ(a.tm_mday, b.tm_mday); + EXPECT_EQ(a.tm_mon, b.tm_mon); + EXPECT_EQ(a.tm_year, b.tm_year); + EXPECT_EQ(a.tm_wday, b.tm_wday); + EXPECT_EQ(a.tm_yday, b.tm_yday); + EXPECT_EQ(a.tm_isdst, b.tm_isdst); +} + +/** + * Helper function to run through the test cases for getGmtime testing. + * + * @param expected The std::tm structure string that getGmtime should generate. + * @param t The time_t to convert. + */ +static void testGmtimeHelper(const std::tm& expected, const time_t& t) { + auto safeCTimeAccess = SafeCTimeAccess::instance(); + std::tm result; + EXPECT_TRUE(safeCTimeAccess->getGmtime(t, &result)); + checkTm(expected, result); +} + +/** + * Helper function to run through the test cases for getLocaltime testing. + * + * @param expected The std::tm structure string that getLocaltime should generate. + * @param t The time_t to convert. + */ +static void testLocaltimeHelper(const std::tm& expected, const time_t& t) { + auto safeCTimeAccess = SafeCTimeAccess::instance(); + std::tm result; + EXPECT_TRUE(safeCTimeAccess->getLocaltime(t, &result)); + checkTm(expected, result); +} + +/// Test to verify that getGmtime returns the correct calendar date for the Unix epoch. +TEST(SafeCTimeAccessTest, getGmtimeAtTheEpoch) { + std::tm epoch; + epoch.tm_sec = 0; + epoch.tm_min = 0; + epoch.tm_hour = 0; + epoch.tm_mday = 1; + epoch.tm_mon = 0; + epoch.tm_year = 70; + epoch.tm_wday = 4; + epoch.tm_yday = 0; + epoch.tm_isdst = 0; + testGmtimeHelper(epoch, 0); +} + +/// Test to verify that getGmtime returns the same calendar date as std::gmtime. +TEST(SafeCTimeAccessTest, getGmtime) { + for (time_t t = 0; t < LARGE_TIME_VALUE; t = 2 * (t + 1)) { + auto gmtimeResult = std::gmtime(&t); + ASSERT_NE(nullptr, gmtimeResult); + testGmtimeHelper(*gmtimeResult, t); + } +} + +/// Test to verify that getLocaltime returns the same calendar date as std::localtime. +TEST(SafeCTimeAccessTest, getLocaltime) { + for (time_t t = 0; t < LARGE_TIME_VALUE; t = 2 * (t + 1)) { + auto localtimeResult = std::localtime(&t); + ASSERT_NE(nullptr, localtimeResult); + testLocaltimeHelper(*localtimeResult, t); + } +} + +/** + * The test code for SafeCTimeTest::getGmtime and SafeCTimeTest::getLocaltime is almost identical, this allows switching + * between them. + */ +enum class TestType { GMTIME, LOCALTIME }; + +/// Mutex to guard access to the results vector. +static std::mutex g_resultsLock; + +/** + * Function that accesses the safe time functions that is called from many threads. We call the function in a tight + * loop with no lock and save the results to be checked later. + * + * @param startingSeed This is used to make sure that different time values are checked. + * @param type The flavor of testing to perform. Can be GMTIME or LOCALTIME. + * @param results A vector where the results are appended to be checked later. + */ +static void callSafeCTimeFunction( + int startingSeed, + const TestType& type, + std::vector>* results) { + auto safeCTimeAccess = SafeCTimeAccess::instance(); + std::vector> internalResults; + for (int i = 0; i < 4; ++i) { + for (time_t t = startingSeed; t < LARGE_TIME_VALUE; t = 1.5 * (t + 1)) { + std::tm result; + switch (type) { + case TestType::GMTIME: + EXPECT_TRUE(safeCTimeAccess->getGmtime(t, &result)); + break; + case TestType::LOCALTIME: + EXPECT_TRUE(safeCTimeAccess->getLocaltime(t, &result)); + break; + default: + EXPECT_TRUE(false); + break; + }; + internalResults.push_back(std::make_pair(t, result)); + } + } + + std::lock_guard lock{g_resultsLock}; + results->insert(std::end(*results), std::begin(internalResults), std::end(internalResults)); +} + +/** + * Main function for testing multithreaded access to the safe time functions. This function starts multiple threads + * that continuously access the time functions in an externally thread-unsafe manner. The results are collected in a + * single vector, where they are compared against the matching system function. + * + * @param type The flavor of testing to perform. Can be GMTIME or LOCALTIME. + */ +static void checkSafeCTimeFunction(const TestType& type) { + std::vector> results; + const int NUMBER_OF_THREADS = 254; + std::thread threads[NUMBER_OF_THREADS]; + for (int threadIndex = 0; threadIndex < NUMBER_OF_THREADS; ++threadIndex) { + threads[threadIndex] = std::thread(callSafeCTimeFunction, threadIndex, type, &results); + } + + for (int threadIndex = 0; threadIndex < NUMBER_OF_THREADS; ++threadIndex) { + threads[threadIndex].join(); + } + + for (const auto& result : results) { + std::tm* stdResult; + switch (type) { + case TestType::GMTIME: + stdResult = std::gmtime(&result.first); + break; + case TestType::LOCALTIME: + stdResult = std::localtime(&result.first); + break; + default: + EXPECT_TRUE(false); + break; + }; + EXPECT_NE(nullptr, stdResult); + checkTm(*stdResult, result.second); + } +} + +/// Test to make sure that multithreaded access SafeCTimeAccess::getGmtime is safe. +TEST(SafeCTimeAccessTest, DISABLED_gmTimeMultithreadedAccess) { + // TODO: ACSDK-1208 investigate Pi failure + checkSafeCTimeFunction(TestType::GMTIME); +} + +/// Test to make sure that multithreaded access SafeCTimeAccess::getLocaltimetime is safe. +TEST(SafeCTimeAccessTest, DISABLED_localtimeMultithreadedAccess) { + // TODO: ACSDK-1208 investigate Pi failure + checkSafeCTimeFunction(TestType::LOCALTIME); +} + +} // namespace test +} // namespace timing +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/SharedDataStreamTest.cpp b/AVSCommon/Utils/test/SharedDataStreamTest.cpp index febd69a26d..50e0bdfe8b 100644 --- a/AVSCommon/Utils/test/SharedDataStreamTest.cpp +++ b/AVSCommon/Utils/test/SharedDataStreamTest.cpp @@ -1,7 +1,5 @@ /* - * SharedDataStreamTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -52,7 +50,7 @@ struct MinimalTraits { /// Forward declare a @c ConditionVariable type. class ConditionVariable; /// Unique string describing this set of traits. - static constexpr const char * traitsName = "alexaClientSDK::avsCommon::utils::sds::test::MinimalTraits"; + static constexpr const char* traitsName = "alexaClientSDK::avsCommon::utils::sds::test::MinimalTraits"; }; /** @@ -72,7 +70,7 @@ struct MinimalTraits2 { /// Same @c ConditionVariable type as @c MinimalTraits. using ConditionVariable = MinimalTraits::ConditionVariable; /// Unique string descring this set of traits. Note that this differes from @c MinimalTraits::traitsName. - static constexpr const char * traitsName = "alexaClientSDK::avsCommon::utils::sds::test::MinimalTraits2"; + static constexpr const char* traitsName = "alexaClientSDK::avsCommon::utils::sds::test::MinimalTraits2"; }; /// An @c AtomicIndex type with the minimum functionality required by SDS. @@ -123,7 +121,7 @@ class MinimalTraits::Buffer : private InProcessSDS::Buffer { return InProcessSDS::Buffer::size(); } /// Get a pointer to the raw data buffer. - InProcessSDS::Buffer::value_type * data() { + InProcessSDS::Buffer::value_type* data() { return InProcessSDS::Buffer::data(); } }; @@ -154,17 +152,14 @@ class MinimalTraits::ConditionVariable : private InProcessSDS::ConditionVariable InProcessSDS::ConditionVariable::wait(*lockPointer); } /// Wait forever for @c pred to be true. - template + template void wait(std::unique_lock& lock, Predicate pred) { auto lockPointer = reinterpret_cast*>(&lock); InProcessSDS::ConditionVariable::wait(*lockPointer, pred); } /// Wait until timeout for @c pred to be true. - template - bool wait_for( - std::unique_lock& lock, - const std::chrono::duration& rel_time, - Predicate pred) { + template + bool wait_for(std::unique_lock& lock, const std::chrono::duration& rel_time, Predicate pred) { auto lockPointer = reinterpret_cast*>(&lock); return InProcessSDS::ConditionVariable::wait_for(*lockPointer, rel_time, pred); } @@ -207,10 +202,10 @@ class Source { }; std::future Source::run( - std::shared_ptr writer, - size_t frequencyHz, - size_t blockSizeWords, - size_t maxWords) { + std::shared_ptr writer, + size_t frequencyHz, + size_t blockSizeWords, + size_t maxWords) { m_counter = 0; size_t wordSize = writer->getWordSize(); std::chrono::nanoseconds period(frequencyHz ? ((1000000000 / frequencyHz) * blockSizeWords) : 0); @@ -218,8 +213,8 @@ std::future Source::run( period, timing::Timer::PeriodType::RELATIVE, timing::Timer::FOREVER, - [this, writer, frequencyHz, blockSizeWords, maxWords, wordSize] { - uint8_t block[blockSizeWords * writer->getWordSize()]; + [this, writer, blockSizeWords, maxWords, wordSize] { + std::vector block(blockSizeWords * writer->getWordSize()); size_t wordsToWrite = 0; for (size_t word = 0; word < blockSizeWords; ++word) { for (size_t byte = 0; byte < wordSize; ++byte) { @@ -237,10 +232,9 @@ std::future Source::run( } ssize_t nWords; do { - nWords = - writer->write(block, wordsToWrite); + nWords = writer->write(block.data(), wordsToWrite); } while (nWords == Sds::Writer::Error::WOULDBLOCK); - bool unexpectedWriteReturn = nWords != static_cast(sizeof(block) / wordSize); + bool unexpectedWriteReturn = nWords != static_cast(block.size() / wordSize); EXPECT_FALSE(unexpectedWriteReturn) << "write returned " << nWords; if (unexpectedWriteReturn || (maxWords > 0 && m_counter == maxWords)) { m_timer.stop(); @@ -276,6 +270,7 @@ class Sink { size_t frequencyHz, size_t blockSizeWords, size_t maxWords = 0); + private: /// The @c Timer to use for receiving data. timing::Timer m_timer; @@ -288,10 +283,10 @@ class Sink { }; std::future Sink::run( - std::shared_ptr reader, - size_t frequencyHz, - size_t blockSizeWords, - size_t maxWords) { + std::shared_ptr reader, + size_t frequencyHz, + size_t blockSizeWords, + size_t maxWords) { m_counter = 0; size_t wordSize = reader->getWordSize(); std::chrono::nanoseconds period(frequencyHz ? ((1000000000 / frequencyHz) * blockSizeWords) : 0); @@ -299,9 +294,9 @@ std::future Sink::run( period, timing::Timer::PeriodType::RELATIVE, timing::Timer::FOREVER, - [this, reader, frequencyHz, blockSizeWords, maxWords, wordSize] { - uint8_t block[blockSizeWords * wordSize]; - ssize_t nWords = reader->read(block, sizeof(block) / wordSize); + [this, reader, blockSizeWords, maxWords, wordSize] { + std::vector block(blockSizeWords * wordSize); + ssize_t nWords = reader->read(block.data(), block.size() / wordSize); if (nWords == Sds::Reader::Error::WOULDBLOCK) { return; } else if (nWords == Sds::Reader::Error::CLOSED) { @@ -309,11 +304,11 @@ std::future Sink::run( m_promise.set_value(m_counter); return; } - bool unexpectedReadReturn = nWords <= 0 || nWords > static_cast(sizeof(block) / wordSize); + bool unexpectedReadReturn = nWords <= 0 || nWords > static_cast(block.size() / wordSize); EXPECT_FALSE(unexpectedReadReturn) << "read returned " << nWords; if (unexpectedReadReturn) { - m_timer.stop(); - m_promise.set_value(m_counter); + m_timer.stop(); + m_promise.set_value(m_counter); } for (ssize_t word = 0; word < nWords; ++word) { for (size_t byte = 0; byte < wordSize; ++byte) { @@ -441,19 +436,19 @@ TEST_F(SharedDataStreamTest, sdsOpen) { ASSERT_EQ(sds3, nullptr); // Verify that open fails if magic number is wrong. - uint32_t * buffer32 = reinterpret_cast(buffer->data()); - buffer32[0]= ~buffer32[0]; + uint32_t* buffer32 = reinterpret_cast(buffer->data()); + buffer32[0] = ~buffer32[0]; sds2 = Sds::open(buffer); ASSERT_EQ(sds2, nullptr); - buffer32[0]= ~buffer32[0]; + buffer32[0] = ~buffer32[0]; sds2 = Sds::open(buffer); ASSERT_NE(sds2, nullptr); // Verify that open fails if version is incompatible. - buffer32[1]= ~buffer32[1]; + buffer32[1] = ~buffer32[1]; sds2 = Sds::open(buffer); ASSERT_EQ(sds2, nullptr); - buffer32[1]= ~buffer32[1]; + buffer32[1] = ~buffer32[1]; sds2 = Sds::open(buffer); ASSERT_NE(sds2, nullptr); } @@ -637,10 +632,18 @@ TEST_F(SharedDataStreamTest, readerRead) { // Verify blocked reader unblocks. ASSERT_TRUE(blocking->seek(0, Sds::Reader::Reference::BEFORE_WRITER)); - auto numRead = std::async([blocking, readBuf] () mutable { return blocking->read(readBuf, WORDCOUNT, TIMEOUT); }); + auto numRead = std::async([blocking, readBuf]() mutable { return blocking->read(readBuf, WORDCOUNT, TIMEOUT); }); ASSERT_NE(numRead.wait_for(std::chrono::milliseconds::zero()), std::future_status::ready); ASSERT_EQ(writer->write(writeBuf, WORDCOUNT), static_cast(WORDCOUNT)); ASSERT_EQ(numRead.get(), static_cast(WORDCOUNT)); + + // Verify blocked reader which is seeked to a future index unblocks. + size_t indexesToSkip = 1; + ASSERT_TRUE(blocking->seek(indexesToSkip, Sds::Reader::Reference::AFTER_READER)); + numRead = std::async([blocking, readBuf]() mutable { return blocking->read(readBuf, WORDCOUNT, TIMEOUT); }); + ASSERT_NE(numRead.wait_for(std::chrono::milliseconds::zero()), std::future_status::ready); + ASSERT_EQ(writer->write(writeBuf, WORDCOUNT), static_cast(WORDCOUNT)); + ASSERT_EQ(numRead.get(), static_cast(WORDCOUNT - indexesToSkip)); } /// This tests @c SharedDataStream::Reader::seek(). @@ -686,18 +689,20 @@ TEST_F(SharedDataStreamTest, readerSeek) { // Verify we can seek forward from the current read position to the end of the written data. seekWords = writeWords - readerPos; - ASSERT_TRUE(reader->seek(seekWords, Sds::Reader::Reference::AFTER_READER)); + ASSERT_TRUE(reader->seek(seekWords, Sds::Reader::Reference::AFTER_READER)); readerPos += seekWords; ASSERT_EQ(reader->read(readBuf, readWords), Sds::Reader::Error::WOULDBLOCK); - // Verify we can't seek forward from the current read position beyond the end of the written data. + // Verify we can seek forward from the current read position beyond the end of the written data. seekWords = 1; - ASSERT_FALSE(reader->seek(seekWords, Sds::Reader::Reference::AFTER_READER)); + ASSERT_TRUE(reader->seek(seekWords, Sds::Reader::Reference::AFTER_READER)); ASSERT_EQ(reader->read(readBuf, readWords), Sds::Reader::Error::WOULDBLOCK); + readerPos += seekWords; //--- Sds::Reader::Reference::BEFORE_READER --- // Verify we can seek backward from the current read position to the middle of the written data. + seekWords = 2; ASSERT_TRUE(reader->seek(seekWords, Sds::Reader::Reference::BEFORE_READER)); readerPos -= seekWords; ASSERT_EQ(reader->read(readBuf, readWords), static_cast(readWords)); @@ -758,13 +763,14 @@ TEST_F(SharedDataStreamTest, readerSeek) { readerPos = seekWords; ASSERT_EQ(reader->read(readBuf, readWords), Sds::Reader::Error::WOULDBLOCK); - // Verify we can't seek directly to a position beyond the end of the written data. + // Verify we can seek directly to a position beyond the end of the written data. seekWords = writerPos + 1; - ASSERT_FALSE(reader->seek(seekWords)); + ASSERT_TRUE(reader->seek(seekWords)); ASSERT_EQ(reader->read(readBuf, readWords), Sds::Reader::Error::WOULDBLOCK); + readerPos = seekWords; // Verify we can seek directly to the middle of the written data. - seekWords = writerPos - 1; + seekWords = writerPos - 2; ASSERT_TRUE(reader->seek(seekWords)); readerPos = seekWords; ASSERT_EQ(reader->read(readBuf, readWords), static_cast(readWords)); @@ -941,8 +947,9 @@ TEST_F(SharedDataStreamTest, writerWrite) { static const size_t WORDSIZE = 2; static const size_t WORDCOUNT = 2; static const size_t MAXREADERS = 1; + static const std::chrono::milliseconds TIMEOUT{100}; - // Initialize two sdses. + // Initialize three sdses. size_t bufferSize = Sds::calculateBufferSize(WORDCOUNT, WORDSIZE, MAXREADERS); auto buffer1 = std::make_shared(bufferSize); auto sds1 = Sds::create(buffer1, WORDSIZE, MAXREADERS); @@ -950,22 +957,28 @@ TEST_F(SharedDataStreamTest, writerWrite) { auto buffer2 = std::make_shared(bufferSize); auto sds2 = Sds::create(buffer2, WORDSIZE, MAXREADERS); ASSERT_NE(sds2, nullptr); + auto buffer3 = std::make_shared(bufferSize); + auto sds3 = Sds::create(buffer3, WORDSIZE, MAXREADERS); + ASSERT_NE(sds3, nullptr); - // Create nonblockable and all-or-nothing writers. + // Create nonblockable, all-or-nothing and blocking writers. auto nonblockable = sds1->createWriter(Sds::Writer::Policy::NONBLOCKABLE); ASSERT_NE(nonblockable, nullptr); auto allOrNothing = sds2->createWriter(Sds::Writer::Policy::ALL_OR_NOTHING); ASSERT_NE(allOrNothing, nullptr); + std::shared_ptr blocking = sds3->createWriter(Sds::Writer::Policy::BLOCKING); + ASSERT_NE(blocking, nullptr); // Verify bad parameter handling. uint8_t writeBuf[WORDSIZE * WORDCOUNT]; ASSERT_EQ(nonblockable->write(nullptr, WORDCOUNT), Sds::Writer::Error::INVALID); ASSERT_EQ(nonblockable->write(writeBuf, 0), Sds::Writer::Error::INVALID); - // Verify both writers can write data to their buffers. + // Verify all writers can write data to their buffers. size_t writeWords = WORDCOUNT / 2; ASSERT_EQ(nonblockable->write(writeBuf, writeWords), static_cast(writeWords)); ASSERT_EQ(allOrNothing->write(writeBuf, writeWords), static_cast(writeWords)); + ASSERT_EQ(blocking->write(writeBuf, writeWords), static_cast(writeWords)); // Verify nonblockable writer can overflow the buffer without blocking. writeWords = WORDCOUNT; @@ -973,6 +986,31 @@ TEST_F(SharedDataStreamTest, writerWrite) { // Verify all-or-nothing writer can't overflow the buffer. ASSERT_EQ(allOrNothing->write(writeBuf, writeWords), Sds::Writer::Error::WOULDBLOCK); + + // Verify blocking writer can fill the buffer. + ASSERT_EQ(blocking->write(writeBuf, WORDCOUNT), static_cast(WORDCOUNT / 2)); + + // Verify blocking writer can't write to a full buffer. + ASSERT_EQ(blocking->write(writeBuf, writeWords, TIMEOUT), Sds::Writer::Error::TIMEDOUT); + + // Verify blocked writer unblocks. + writeWords = 1; + auto reader3 = sds3->createReader(Sds::Reader::Policy::NONBLOCKING); + auto result = std::async([blocking, writeBuf]() mutable { return blocking->write(writeBuf, WORDCOUNT, TIMEOUT); }); + ASSERT_NE(result.wait_for(std::chrono::milliseconds::zero()), std::future_status::ready); + ASSERT_TRUE(reader3->seek(writeWords, Sds::Reader::Reference::AFTER_READER)); + ASSERT_EQ(result.get(), static_cast(writeWords)); + + // Verify all-or-nothing writer can't overrun a reader who is in the future. + auto reader2 = sds2->createReader(Sds::Reader::Policy::NONBLOCKING); + ASSERT_NE(reader2, nullptr); + ASSERT_TRUE(reader2->seek(WORDCOUNT, Sds::Reader::Reference::AFTER_READER)); + writeWords = WORDCOUNT * 2; + ASSERT_EQ(allOrNothing->write(writeBuf, writeWords), Sds::Writer::Error::WOULDBLOCK); + + // Verify all-or-nothing writer can discard data that will not be read by a reader who is waiting in the future. + writeWords = WORDCOUNT + WORDCOUNT / 2; + ASSERT_EQ(allOrNothing->write(writeBuf, writeWords), static_cast(writeWords)); } /// This tests @c SharedDataStream::Writer::tell(). @@ -1061,7 +1099,7 @@ TEST_F(SharedDataStreamTest, concurrencyNonblockableWriterDualReader) { auto buffer = std::make_shared(bufferSize); auto sds = Sds::create(buffer, WORDSIZE, MAXREADERS); ASSERT_TRUE(sds); - + auto writer = sds->createWriter(Sds::Writer::Policy::NONBLOCKABLE); ASSERT_TRUE(writer); auto blockingReader = sds->createReader(Sds::Reader::Policy::BLOCKING); @@ -1096,7 +1134,7 @@ TEST_F(SharedDataStreamTest, concurrencyAllOrNothingWriterNonblockingReader) { auto buffer = std::make_shared(bufferSize); auto sds = Sds::create(buffer, WORDSIZE, MAXREADERS); ASSERT_TRUE(sds); - + std::shared_ptr writer = sds->createWriter(Sds::Writer::Policy::ALL_OR_NOTHING); ASSERT_TRUE(writer); auto reader = sds->createReader(Sds::Reader::Policy::NONBLOCKING); @@ -1141,8 +1179,75 @@ TEST_F(SharedDataStreamTest, concurrencyMultipleSds) { ASSERT_EQ(caWords.get(), TEST_SIZE_WORDS); } -} // namespace test -} // namespace sds -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +/// This tests that a @c Reader closes if a @c Writer is attached and closed before writing anything +TEST_F(SharedDataStreamTest, writerClosedBeforeWriting) { + static const size_t WORDSIZE = 2; + static const size_t WORDCOUNT = 2; + static const size_t MAXREADERS = 2; + static const std::chrono::milliseconds READ_TIMEOUT{100}; + // explicitly set the time for closing the writer to be less than the READ_TIMEOUT + static const std::chrono::milliseconds CLOSE_WRITER_AFTER_READ{50}; + + // Initialize an sds. + size_t bufferSize = Sds::calculateBufferSize(WORDCOUNT, WORDSIZE, MAXREADERS); + auto buffer = std::make_shared(bufferSize); + auto sds = Sds::create(buffer, WORDSIZE, MAXREADERS); + ASSERT_NE(sds, nullptr); + + uint8_t readBuf[WORDSIZE * WORDCOUNT * 2]; + + // Create blocking reader. + std::shared_ptr blocking = sds->createReader(Sds::Reader::Policy::BLOCKING); + ASSERT_NE(blocking, nullptr); + + // Attach a writer. + auto writer = sds->createWriter(Sds::Writer::Policy::NONBLOCKABLE); + ASSERT_NE(writer, nullptr); + + // Close the writer before reader times out + auto writerCloseThread = std::async(std::launch::async, [&writer]() { + std::this_thread::sleep_for(CLOSE_WRITER_AFTER_READ); + writer->close(); + return true; + }); + + auto error = blocking->read(readBuf, WORDCOUNT, READ_TIMEOUT); + + // Ensure that the reader did not timeout + ASSERT_EQ(error, Sds::Reader::Error::CLOSED); +} + +/// This tests that a @c Reader closes if a @c Writer is attached and closed before the @c Reader is first attached +TEST_F(SharedDataStreamTest, writerClosedBeforeAttachingReader) { + static const size_t WORDSIZE = 2; + static const size_t WORDCOUNT = 2; + static const size_t MAXREADERS = 2; + + // Initialize an sds. + size_t bufferSize = Sds::calculateBufferSize(WORDCOUNT, WORDSIZE, MAXREADERS); + auto buffer = std::make_shared(bufferSize); + auto sds = Sds::create(buffer, WORDSIZE, MAXREADERS); + ASSERT_NE(sds, nullptr); + + uint8_t readBuf[WORDSIZE * WORDCOUNT * 2]; + + auto writer = sds->createWriter(Sds::Writer::Policy::NONBLOCKABLE); + ASSERT_NE(writer, nullptr); + + // Close the writer before creating reader + writer->close(); + + // Create blocking reader. + auto blocking = sds->createReader(Sds::Reader::Policy::BLOCKING); + ASSERT_NE(blocking, nullptr); + + auto error = blocking->read(readBuf, WORDCOUNT); + + ASSERT_EQ(error, Sds::Reader::Error::CLOSED); +} + +} // namespace test +} // namespace sds +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/StreamFunctionsTest.cpp b/AVSCommon/Utils/test/StreamFunctionsTest.cpp new file mode 100644 index 0000000000..441d2998a2 --- /dev/null +++ b/AVSCommon/Utils/test/StreamFunctionsTest.cpp @@ -0,0 +1,178 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace test { + +/** + * Utility function to check if a stream contents match a data block + */ +static bool streamAndDataAreEqual(const std::istream& stream, const unsigned char* data, size_t length) { + std::ostringstream oss; + oss << stream.rdbuf(); + + return oss.str() == std::string(data, data + length); +} + +static const unsigned char TEST_DATA[] = {'T', 'E', 'S', 'T', '_', 'D', 'A', 'T', 'A'}; + +class StreamFunctionsTest : public ::testing::Test { +public: + StreamFunctionsTest() : m_stream(stream::streamFromData(TEST_DATA, sizeof(TEST_DATA))) { + } + +protected: + std::unique_ptr m_stream; +}; + +/** + * Verify that audio bytes passed in are returned exactly the same + */ +TEST_F(StreamFunctionsTest, StreamFromData) { + ASSERT_TRUE(streamAndDataAreEqual(*m_stream, TEST_DATA, sizeof(TEST_DATA))); +} + +/** + * Verify that non-char data streams work correctly + */ +TEST_F(StreamFunctionsTest, DataContainsUnprintableChars) { + const std::vector> testData = { + {5, 0, 3, 6}, // NULLS in data + {0, 0, 6, 6}, // NULLS at beginning + {6, 6, 0, 0}, // NULLS at beginning + {3, 255, 5, 255, 4}, // -1 + {255, 255, 5, 4}, // -1 at beginning + {3, 5, 255, 255}, // -1 at end + {0, 255}, // BOTH + {255, 0} // BOTH + }; + + for (const auto& data : testData) { + auto stream = stream::streamFromData(data.data(), data.size()); + ASSERT_TRUE(streamAndDataAreEqual(*stream, data.data(), data.size())); + } +} + +/** + * Verify that empty datasets work + */ +TEST_F(StreamFunctionsTest, EmptyVector) { + const unsigned char empty[] = {}; + auto stream = stream::streamFromData(empty, sizeof(empty)); + ASSERT_TRUE(streamAndDataAreEqual(*stream, empty, sizeof(empty))); +} + +/** + * Verify that multiple streams created from the same source can be operated on independently + */ +TEST_F(StreamFunctionsTest, MultipleStreams) { + // get two streams to the same data + auto stream1 = stream::streamFromData(TEST_DATA, sizeof(TEST_DATA)); + auto stream2 = stream::streamFromData(TEST_DATA, sizeof(TEST_DATA)); + + // get a single char from one stream + char c; + stream1->get(c); + + // check to make sure that the streams are not locked together + ASSERT_EQ(TEST_DATA[0], c); + ASSERT_TRUE(streamAndDataAreEqual(*stream1, TEST_DATA + 1, sizeof(TEST_DATA) - 1)); + ASSERT_TRUE(streamAndDataAreEqual(*stream2, TEST_DATA, sizeof(TEST_DATA))); +} + +/** + * Verify that seekg works going forward + */ +TEST_F(StreamFunctionsTest, seekgBasicForward) { + const std::streampos step = 2; + m_stream->seekg(step); + ASSERT_TRUE(streamAndDataAreEqual(*m_stream, TEST_DATA + step, sizeof(TEST_DATA) - step)); +} + +/** + * Verify that seekg can reset + */ +TEST_F(StreamFunctionsTest, seekgBasicReset) { + // get 4 chars from char from one stream + char c; + m_stream->get(c); + m_stream->get(c); + m_stream->get(c); + m_stream->get(c); + + // reset back to beginning + m_stream->seekg(0); + + ASSERT_TRUE(streamAndDataAreEqual(*m_stream, TEST_DATA, sizeof(TEST_DATA))); +} + +/** + * Verify that tellg works on creation + */ +TEST_F(StreamFunctionsTest, tellgBasic) { + ASSERT_EQ(0, m_stream->tellg()); +} + +/** + * Verify that the stream will have a bad tellg result when seeking past end + */ +TEST_F(StreamFunctionsTest, tellgPastEnd) { + m_stream->seekg(sizeof(TEST_DATA) + 1); + ASSERT_EQ(-1, m_stream->tellg()); +} + +/** + * Verify that the stream will have a bad tellg result when seeking before beginning + */ +TEST_F(StreamFunctionsTest, tellgBeforeBeginning) { + m_stream->seekg(-1); + ASSERT_EQ(-1, m_stream->tellg()); +} + +/** + * Verify that tellg is set correctly after seeking + */ +TEST_F(StreamFunctionsTest, tellgAfterSeeking) { + const std::streampos step = 2; + m_stream->seekg(step); + ASSERT_EQ(step, m_stream->tellg()); + ASSERT_TRUE(streamAndDataAreEqual(*m_stream, TEST_DATA + step, sizeof(TEST_DATA) - step)); +} + +/** + * Verify that tellg is set correctly after reading from stream + */ +TEST_F(StreamFunctionsTest, tellgAfterReading) { + // get 4 chars from char from one stream + const int numberToRead = 4; + + for (int i = 0; i < numberToRead; ++i) { + char c; + m_stream->get(c); + } + + ASSERT_EQ(numberToRead, m_stream->tellg()); +} + +} // namespace test +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/StreambufTest.cpp b/AVSCommon/Utils/test/StreambufTest.cpp new file mode 100644 index 0000000000..4fc8352146 --- /dev/null +++ b/AVSCommon/Utils/test/StreambufTest.cpp @@ -0,0 +1,156 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace test { + +static const std::vector testData = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + +class StreambufTest : public ::testing::Test { +public: + StreambufTest() : m_sb(testData.data(), testData.size()) { + } + +protected: + stream::Streambuf m_sb; +}; + +/** + * Verify that the Streambuf is created correctly + */ +TEST_F(StreambufTest, Creation) { + ASSERT_EQ(testData[0], m_sb.sgetc()); +} + +/** + * Verify that the seekoff can be called based from the beginning + */ +TEST_F(StreambufTest, seekoffBeginning) { + const std::vector positions = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + for (const auto& pos : positions) { + ASSERT_EQ(pos, m_sb.seekoff(pos, std::ios_base::beg)); + ASSERT_EQ(testData[pos], m_sb.sgetc()); + } +} + +/** + * Verify that the seekoff can be called based from the current positon + */ +TEST_F(StreambufTest, seekoffCurrentForward) { + const std::streampos pos = 3; + ASSERT_EQ(pos, m_sb.seekoff(pos, std::ios_base::cur)); + ASSERT_EQ(testData[pos], m_sb.sgetc()); + + ASSERT_EQ(2 * pos, m_sb.seekoff(pos, std::ios_base::cur)); + ASSERT_EQ(testData[2 * pos], m_sb.sgetc()); +} + +/** + * Verify that you can seek all the way until the end correctly + */ +TEST_F(StreambufTest, seekoffFromBeginningUntilEnd) { + const std::streampos step = 1; + m_sb.seekoff(0, std::ios_base::beg); + for (size_t i = 0; i < testData.size() - 1; ++i) { + ASSERT_EQ(testData[i], m_sb.sgetc()); + ASSERT_NE(-1, m_sb.seekoff(step, std::ios_base::cur)); + } + ASSERT_EQ(testData[testData.size() - 1], m_sb.sgetc()); + ASSERT_EQ(-1, m_sb.seekoff(step, std::ios_base::cur)); +} + +/** + * Verify that you can seek all the way from the end to the beginning + */ +TEST_F(StreambufTest, seekoffFromEndUntilBeginning) { + const std::streampos step = -1; + m_sb.seekoff(-1, std::ios_base::end); + for (size_t i = 0; i < testData.size() - 1; ++i) { + ASSERT_EQ(testData[testData.size() - i - 1], m_sb.sgetc()); + ASSERT_NE(-1, m_sb.seekoff(step, std::ios_base::cur)); + } + ASSERT_EQ(testData[0], m_sb.sgetc()); + ASSERT_EQ(-1, m_sb.seekoff(step, std::ios_base::cur)); +} + +/** + * Verify that you can seek backward from the end + */ +TEST_F(StreambufTest, seekoffCurrentBackward) { + auto end = m_sb.seekoff(-1, std::ios_base::end); + + const std::streampos pos = 3; + ASSERT_EQ(end - pos, m_sb.seekoff(-pos, std::ios_base::cur)); + ASSERT_EQ(testData[end - pos], m_sb.sgetc()); + + ASSERT_EQ(end - (2 * pos), m_sb.seekoff(-pos, std::ios_base::cur)); + ASSERT_EQ(testData[end - (2 * pos)], m_sb.sgetc()); +} + +/** + * Verify that a seek to before the stream results in an error + */ +TEST_F(StreambufTest, seekoffBeforeStart) { + ASSERT_EQ(-1, m_sb.seekoff(-1, std::ios_base::beg)); +} + +/** + * Verify that a seek to after the stream results in an error + */ +TEST_F(StreambufTest, seekoffPastEnd) { + ASSERT_EQ(-1, m_sb.seekoff(1, std::ios_base::end)); +} + +/** + * Verify that a basic seekpos works + */ +TEST_F(StreambufTest, seekpos) { + const std::streampos pos = 3; + ASSERT_EQ(pos, m_sb.seekpos(pos)); + ASSERT_EQ(testData[pos], m_sb.sgetc()); +} + +/** + * Verify that a basic seekpos before the beginning results in an error + */ +TEST_F(StreambufTest, seekposBeforeStart) { + ASSERT_EQ(-1, m_sb.seekpos(-1)); +} + +/** + * Verify that a basic seekpos after the end results in an error + */ +TEST_F(StreambufTest, seekposAfterEnd) { + ASSERT_EQ(-1, m_sb.seekpos(sizeof(testData) + 1)); +} + +/** + * Verify that a seekpos to the end is correct + */ +TEST_F(StreambufTest, seekposToEnd) { + auto end = m_sb.seekoff(0, std::ios_base::end); + ASSERT_EQ(end, m_sb.seekpos(end)); +} + +} // namespace test +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/StringUtilsTest.cpp b/AVSCommon/Utils/test/StringUtilsTest.cpp new file mode 100644 index 0000000000..12cf1eb84c --- /dev/null +++ b/AVSCommon/Utils/test/StringUtilsTest.cpp @@ -0,0 +1,222 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace test { + +using namespace alexaClientSDK::avsCommon::utils::string; + +/** + * Verify that converting an empty string to an integer fails. + */ +TEST(StringUtilsTest, testEmptyStringFails) { + int result = 0; + ASSERT_FALSE(stringToInt("", &result)); +} + +/** + * Verify that converting a simple decimal integer string to integer succeeds. + */ +TEST(StringUtilsTest, testSimpleDecimalInteger) { + int result = 0; + ASSERT_TRUE(stringToInt("123", &result)); + ASSERT_EQ(123, result); +} + +/** + * Verify that converting a negative decimal integer string to integer succeeds. + */ +TEST(StringUtilsTest, testNegativeInt) { + int result = 0; + ASSERT_TRUE(stringToInt("-987654", &result)); + ASSERT_EQ(-987654, result); +} + +/** + * Verify that converting a decimal integer string with leading whitespace to integer succeeds. + */ +TEST(StringUtilsTest, testInitialWhitespaceSucceeds) { + int result = 0; + ASSERT_TRUE(stringToInt("\t 10101", &result)); + ASSERT_EQ(10101, result); +} + +/** + * Verify that converting a decimal integer string with trailing whitespace to integer succeeds. + */ +TEST(StringUtilsTest, testTrailingWhitespaceSucceeds) { + int result = 0; + ASSERT_TRUE(stringToInt("982389\t ", &result)); + ASSERT_EQ(982389, result); +} + +/** + * Verify that converting a decimal integer string with leading and trailing whitespace to integer succeeds. + */ +TEST(StringUtilsTest, testLeadingAndTrailingWhitespaceSucceeds) { + int result = 0; + ASSERT_TRUE(stringToInt(" 982389 ", &result)); + ASSERT_EQ(982389, result); +} + +/** + * Verify that converting a decimal integer with leading non-whitespace and non-decimal digit characters fails. + */ +TEST(StringUtilsTest, testNonWhitespacePrefixFails) { + int result = 0; + ASSERT_FALSE(stringToInt("a123", &result)); +} + +/** + * Verify that converting a decimal integer with trailing non-whitespace and non-decimal digit characters fails. + */ +TEST(StringUtilsTest, testNonWhitespaceSuffixFails) { + int result = 0; + ASSERT_FALSE(stringToInt("123a", &result)); +} + +/** + * Verify that converting a decimal integer with leading and trailing non-whitespace and non-decimal digit + * characters fails. + */ +TEST(StringUtilsTest, testNonWhitespacePrefixAndSuffixFails) { + int result = 0; + ASSERT_FALSE(stringToInt("a123a", &result)); +} + +/** + * Verify that converting a decimal integer with both leading whitespace and non-whitespace characters fails. + */ +TEST(StringUtilsTest, testNonWhitespaceAndNonWhitespacePrefixFails) { + int result = 0; + ASSERT_FALSE(stringToInt(" e123", &result)); +} + +/** + * Verify that converting a decimal integer with both trailing whitespace and non-whitespace characters fails. + */ +TEST(StringUtilsTest, testNonWhitespaceAndNonWhitespaceSuffixFails) { + int result = 0; + ASSERT_FALSE(stringToInt("123e ", &result)); +} + +/** + * Verify that converting a decimal integer with leading and trailing whitespace and non-whitespace characters fails. + */ +TEST(StringUtilsTest, testNonWhitespaceAndNonWhitespacePrefixAndSuffixFails) { + int result = 0; + ASSERT_FALSE(stringToInt(" e123e ", &result)); +} + +/** + * Verify that converting "0" to integer succeeds. + */ +TEST(StringUtilsTest, testZeroSucceeds) { + int result = -1; + ASSERT_TRUE(stringToInt("0", &result)); + ASSERT_EQ(0, result); +} + +/** + * Verify that converting a floating string to integer fails. + */ +TEST(StringUtilsTest, testDecimalFloatFails) { + int result = 0; + ASSERT_FALSE(stringToInt("1.234", &result)); +} + +/** + * Verify that converting an octal integer string si interpreted as decmal with a leading zero. + */ +TEST(StringUtilsTest, testOctalInterpretedAsDecimal) { + int result = 0; + ASSERT_TRUE(stringToInt("0567", &result)); + ASSERT_EQ(567, result); +} + +/** + * Verify that converting a hex integer string to integer fails. + */ +TEST(StringUtilsTest, testHexIntFails) { + int result = 0; + ASSERT_FALSE(stringToInt("0x321", &result)); +} + +/** + * Verify that converting a too large integer string to int fails. + */ +TEST(StringUtilsTest, testTooLargeIntFails) { + int result = 0; + ASSERT_FALSE(stringToInt("987654321987654321987654321", &result)); +} + +/** + * Verify that converting a too small integer string to int fails. + */ +TEST(StringUtilsTest, testTooSmallIntFails) { + int result = 0; + ASSERT_FALSE(stringToInt("-11111111111111111111111111", &result)); +} + +/** + * Verify that converting a string with multiple numbers in it fails. + */ +TEST(StringUtilsTest, testMultipleNumbers) { + int result = 0; + ASSERT_FALSE(stringToInt("123 123", &result)); + ASSERT_FALSE(stringToInt(" 123 123", &result)); + ASSERT_FALSE(stringToInt("123 123 ", &result)); + ASSERT_FALSE(stringToInt(" 123 123 ", &result)); + ASSERT_FALSE(stringToInt("1 2 3", &result)); +} + +/** + * Verify that converting a empty string to lower case works. + */ +TEST(StringUtilsTest, testToLowerEmptyString) { + ASSERT_EQ(stringToLowerCase(""), ""); +} + +/** + * Verify that converting a lower case string to lower case works. + */ +TEST(StringUtilsTest, testToLowerCaseString) { + ASSERT_EQ(stringToLowerCase("abc"), "abc"); +} + +/** + * Verify that converting a Upper case string to lower case works. + */ +TEST(StringUtilsTest, testToUpperCaseString) { + ASSERT_EQ(stringToLowerCase("ABC"), "abc"); +} + +/** + * Verify that converting a Camel case string to lower case works. + */ +TEST(StringUtilsTest, testToCamelCaseString) { + ASSERT_EQ(stringToLowerCase("AbCd"), "abcd"); +} + +} // namespace test +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/TaskQueueTest.cpp b/AVSCommon/Utils/test/TaskQueueTest.cpp index 3617567404..8b74733ac8 100644 --- a/AVSCommon/Utils/test/TaskQueueTest.cpp +++ b/AVSCommon/Utils/test/TaskQueueTest.cpp @@ -1,7 +1,5 @@ /* - * TaskQueueTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -27,9 +25,8 @@ namespace utils { namespace threading { namespace test { -class TaskQueueTest: public ::testing::Test { +class TaskQueueTest : public ::testing::Test { public: - /** * Asserts that a call to pop on an empty queue is blocking, and will be awoken by a task being pushed onto * the queue @@ -80,7 +77,7 @@ TEST_F(TaskQueueTest, pushStdBindAndVerifyPopReturnsIt) { } TEST_F(TaskQueueTest, pushLambdaAndVerifyPopReturnsIt) { - auto future = queue.push([]() { }); + auto future = queue.push([]() {}); auto task = queue.pop(); task->operator()(); auto future_status = future.wait_for(SHORT_TIMEOUT_MS); @@ -126,7 +123,7 @@ TEST_F(TaskQueueTest, pushFunctionWithObjectReturnTypeNoArgsAndVerifyPopReturnsI TEST_F(TaskQueueTest, pushFunctionWithNoReturnTypePrimitiveArgsAndVerifyPopReturnsIt) { int value = VALUE; - auto future = queue.push([](int number) { }, value); + auto future = queue.push([](int number) {}, value); auto task = queue.pop(); task->operator()(); auto future_status = future.wait_for(SHORT_TIMEOUT_MS); @@ -135,7 +132,7 @@ TEST_F(TaskQueueTest, pushFunctionWithNoReturnTypePrimitiveArgsAndVerifyPopRetur TEST_F(TaskQueueTest, pushFunctionWithNoReturnTypeObjectArgsAndVerifyPopReturnsIt) { SimpleObject arg(0); - auto future = queue.push([](SimpleObject object) { }, arg); + auto future = queue.push([](SimpleObject object) {}, arg); auto task = queue.pop(); task->operator()(); auto future_status = future.wait_for(SHORT_TIMEOUT_MS); @@ -280,8 +277,8 @@ TEST_F(TaskQueueTest, pushFailsToEnqueueANewTaskOnAShutdownQueue) { ASSERT_EQ(retrievedTask, nullptr); } -} // namespace test -} // namespace threading -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK +} // namespace test +} // namespace threading +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/TaskThreadTest.cpp b/AVSCommon/Utils/test/TaskThreadTest.cpp index 670bf717af..6baef96727 100644 --- a/AVSCommon/Utils/test/TaskThreadTest.cpp +++ b/AVSCommon/Utils/test/TaskThreadTest.cpp @@ -1,7 +1,5 @@ /* - * TaskThreadTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -26,7 +24,7 @@ namespace utils { namespace threading { namespace test { -class TaskThreadTest: public ::testing::Test { +class TaskThreadTest : public ::testing::Test { public: std::shared_ptr createTaskQueue() { return std::make_shared(); @@ -106,8 +104,8 @@ TEST_F(TaskThreadTest, theTaskThreadIsNotStartedUntilStartIsCalled) { queue->shutdown(); } -} // namespace test -} // namespace threading -} // namespace avsCommon -} // namespace utils -} // namespace alexaClientSDK +} // namespace test +} // namespace threading +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/TimeUtilsTest.cpp b/AVSCommon/Utils/test/TimeUtilsTest.cpp new file mode 100644 index 0000000000..46a6fb1b73 --- /dev/null +++ b/AVSCommon/Utils/test/TimeUtilsTest.cpp @@ -0,0 +1,127 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +#include + +#include "AVSCommon/Utils/Timing/SafeCTimeAccess.h" +#include "AVSCommon/Utils/Timing/TimeUtils.h" + +namespace alexaClientSDK { +namespace avsCommon { +namespace utils { +namespace timing { +namespace test { + +TEST(TimeTest, testStringConversion) { + TimeUtils timeUtils; + std::string dateStr{"1986-08-10T21:30:00+0000"}; + int64_t date; + auto success = timeUtils.convert8601TimeStringToUnix(dateStr, &date); + ASSERT_TRUE(success); + + auto dateTimeT = static_cast(date); + std::tm dateTm; + auto safeCTimeAccess = SafeCTimeAccess::instance(); + ASSERT_TRUE(safeCTimeAccess->getGmtime(dateTimeT, &dateTm)); + ASSERT_EQ(dateTm.tm_year, 86); + ASSERT_EQ(dateTm.tm_mon, 7); + ASSERT_EQ(dateTm.tm_mday, 10); + ASSERT_EQ(dateTm.tm_hour, 21); + ASSERT_EQ(dateTm.tm_min, 30); +} + +TEST(TimeTest, testStringConversionError) { + TimeUtils timeUtils; + std::string dateStr{"1986-8-10T21:30:00+0000"}; + int64_t date; + auto success = timeUtils.convert8601TimeStringToUnix(dateStr, &date); + ASSERT_FALSE(success); +} + +TEST(TimeTest, testStringConversionNullParam) { + TimeUtils timeUtils; + std::string dateStr{"1986-8-10T21:30:00+0000"}; + auto success = timeUtils.convert8601TimeStringToUnix(dateStr, nullptr); + ASSERT_FALSE(success); +} + +TEST(TimeTest, testTimeConversion) { + TimeUtils timeUtils; + std::time_t randomDate = 524089800; + std::tm date; + auto safeCTimeAccess = SafeCTimeAccess::instance(); + ASSERT_TRUE(safeCTimeAccess->getGmtime(randomDate, &date)); + std::time_t convertBack; + auto success = timeUtils.convertToUtcTimeT(&date, &convertBack); + + ASSERT_TRUE(success); + ASSERT_EQ(randomDate, convertBack); +} + +TEST(TimeTest, testCurrentTime) { + TimeUtils timeUtils; + int64_t time = -1; + auto success = timeUtils.getCurrentUnixTime(&time); + + ASSERT_TRUE(success); + ASSERT_GT(time, 0); +} + +TEST(TimeTest, testCurrentTimeNullParam) { + TimeUtils timeUtils; + auto success = timeUtils.getCurrentUnixTime(nullptr); + ASSERT_FALSE(success); +} + +/** + * Helper function to run through the test cases for time to string conversions. + * + * @param expectedString The string that convertTimeToUtcIso8601Rfc3339 should generate. + * @param t The timeval to convert. + */ +static void testIso8601ConversionHelper(const std::string& expectedString, const struct timeval& t) { + TimeUtils timeUtils; + std::string resultString; + EXPECT_TRUE(timeUtils.convertTimeToUtcIso8601Rfc3339(t, &resultString)); + EXPECT_EQ(expectedString, resultString); +} + +TEST(TimeTest, testIso8601Conversion) { + testIso8601ConversionHelper("1970-01-01T00:00:00.000Z", {0, 0}); + testIso8601ConversionHelper("1970-01-01T00:00:01.000Z", {1, 0}); + testIso8601ConversionHelper("1970-01-01T00:00:00.001Z", {0, 1000}); + testIso8601ConversionHelper("1970-01-01T00:01:00.000Z", {60, 0}); + testIso8601ConversionHelper("1970-01-01T01:00:00.000Z", {60 * 60, 0}); + testIso8601ConversionHelper("1970-01-02T00:00:00.000Z", {60 * 60 * 24, 0}); + testIso8601ConversionHelper("1970-02-01T00:00:00.000Z", {60 * 60 * 24 * 31, 0}); + testIso8601ConversionHelper("1971-01-01T00:00:00.000Z", {60 * 60 * 24 * 365, 0}); + + testIso8601ConversionHelper("1970-01-02T00:00:00.000Z", {60 * 60 * 24, 999}); + testIso8601ConversionHelper("1970-01-02T00:00:00.001Z", {60 * 60 * 24, 1000}); + testIso8601ConversionHelper("1970-01-02T00:00:00.001Z", {60 * 60 * 24, 1001}); + testIso8601ConversionHelper("1970-01-02T00:00:00.001Z", {60 * 60 * 24, 1999}); + testIso8601ConversionHelper("1970-01-02T00:00:00.002Z", {60 * 60 * 24, 2000}); + testIso8601ConversionHelper("1970-01-02T00:00:00.002Z", {60 * 60 * 24, 2001}); + testIso8601ConversionHelper("1970-01-02T00:00:00.202Z", {60 * 60 * 24, 202001}); +} + +} // namespace test +} // namespace timing +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/TimerTest.cpp b/AVSCommon/Utils/test/TimerTest.cpp index 87e8d93ef5..afa6240a44 100644 --- a/AVSCommon/Utils/test/TimerTest.cpp +++ b/AVSCommon/Utils/test/TimerTest.cpp @@ -1,7 +1,5 @@ /* - * TimerTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -56,7 +54,7 @@ static const auto TIMEOUT = std::chrono::seconds(1); static const size_t ITERATIONS = 5; /// Test harness for Timer class. -class TimerTest: public ::testing::Test { +class TimerTest : public ::testing::Test { public: /// Set up the test harness for running a test. void SetUp() override; @@ -129,7 +127,6 @@ void TimerTest::verifyTimestamps( Timer::PeriodType periodType, std::chrono::milliseconds duration, size_t iterations) { - // For ABSOLUTE periods, the actual number of task calls may be less than iterations if duration exceeds // period. size_t expectedTaskCalls = iterations; @@ -140,10 +137,8 @@ void TimerTest::verifyTimestamps( std::unique_lock lock(m_mutex); ASSERT_TRUE(m_conditionVariable.wait_for( - lock, - TIMEOUT, - [this, expectedTaskCalls] { return m_timestamps.size() == expectedTaskCalls; })); - + lock, TIMEOUT, [this, expectedTaskCalls] { return m_timestamps.size() == expectedTaskCalls; })); + // First timestamp should always occur after an elapsed time of delay. auto timestamp = m_timestamps.begin(); auto elapsed = delay; @@ -181,7 +176,7 @@ void TimerTest::verifyTimestamps( } } - //note: can't ASSERT_EQ on iterators with older GCC versions - see https://github.com/google/googletest/issues/742 + // note: can't ASSERT_EQ on iterators with older GCC versions - see https://github.com/google/googletest/issues/742 bool timestampEqualsEnd = (timestamp == m_timestamps.end()); ASSERT_TRUE(timestampEqualsEnd); } @@ -214,10 +209,7 @@ TEST_F(TimerTest, singleShot) { TEST_F(TimerTest, multiShot) { auto t0 = std::chrono::steady_clock::now(); ASSERT_TRUE(m_timer->start( - SHORT_DELAY, - Timer::PeriodType::ABSOLUTE, - ITERATIONS, - std::bind(&TimerTest::simpleTask, this, NO_DELAY))); + SHORT_DELAY, Timer::PeriodType::ABSOLUTE, ITERATIONS, std::bind(&TimerTest::simpleTask, this, NO_DELAY))); ASSERT_TRUE(m_timer->isActive()); verifyTimestamps(t0, SHORT_DELAY, SHORT_DELAY, Timer::PeriodType::ABSOLUTE, NO_DELAY, ITERATIONS); ASSERT_TRUE(waitForInactive()); @@ -248,10 +240,7 @@ TEST_F(TimerTest, multiShotWithDelay) { TEST_F(TimerTest, forever) { auto t0 = std::chrono::steady_clock::now(); ASSERT_TRUE(m_timer->start( - SHORT_DELAY, - Timer::PeriodType::ABSOLUTE, - Timer::FOREVER, - std::bind(&TimerTest::simpleTask, this, NO_DELAY))); + SHORT_DELAY, Timer::PeriodType::ABSOLUTE, Timer::FOREVER, std::bind(&TimerTest::simpleTask, this, NO_DELAY))); ASSERT_TRUE(m_timer->isActive()); verifyTimestamps(t0, SHORT_DELAY, SHORT_DELAY, Timer::PeriodType::ABSOLUTE, NO_DELAY, ITERATIONS); ASSERT_TRUE(m_timer->isActive()); @@ -266,10 +255,7 @@ TEST_F(TimerTest, forever) { TEST_F(TimerTest, slowTaskLessThanPeriod) { auto t0 = std::chrono::steady_clock::now(); ASSERT_TRUE(m_timer->start( - MEDIUM_DELAY, - Timer::PeriodType::ABSOLUTE, - ITERATIONS, - std::bind(&TimerTest::simpleTask, this, SHORT_DELAY))); + MEDIUM_DELAY, Timer::PeriodType::ABSOLUTE, ITERATIONS, std::bind(&TimerTest::simpleTask, this, SHORT_DELAY))); ASSERT_TRUE(m_timer->isActive()); verifyTimestamps(t0, MEDIUM_DELAY, MEDIUM_DELAY, Timer::PeriodType::ABSOLUTE, SHORT_DELAY, ITERATIONS); } @@ -281,10 +267,7 @@ TEST_F(TimerTest, slowTaskLessThanPeriod) { TEST_F(TimerTest, slowTaskGreaterThanPeriod) { auto t0 = std::chrono::steady_clock::now(); ASSERT_TRUE(m_timer->start( - SHORT_DELAY, - Timer::PeriodType::ABSOLUTE, - ITERATIONS, - std::bind(&TimerTest::simpleTask, this, MEDIUM_DELAY))); + SHORT_DELAY, Timer::PeriodType::ABSOLUTE, ITERATIONS, std::bind(&TimerTest::simpleTask, this, MEDIUM_DELAY))); ASSERT_TRUE(m_timer->isActive()); verifyTimestamps(t0, SHORT_DELAY, SHORT_DELAY, Timer::PeriodType::ABSOLUTE, MEDIUM_DELAY, ITERATIONS); } @@ -296,10 +279,7 @@ TEST_F(TimerTest, slowTaskGreaterThanPeriod) { TEST_F(TimerTest, slowTaskGreaterThanTwoPeriods) { auto t0 = std::chrono::steady_clock::now(); ASSERT_TRUE(m_timer->start( - SHORT_DELAY, - Timer::PeriodType::ABSOLUTE, - ITERATIONS, - std::bind(&TimerTest::simpleTask, this, LONG_DELAY))); + SHORT_DELAY, Timer::PeriodType::ABSOLUTE, ITERATIONS, std::bind(&TimerTest::simpleTask, this, LONG_DELAY))); ASSERT_TRUE(m_timer->isActive()); verifyTimestamps(t0, SHORT_DELAY, SHORT_DELAY, Timer::PeriodType::ABSOLUTE, LONG_DELAY, ITERATIONS); } @@ -311,10 +291,7 @@ TEST_F(TimerTest, slowTaskGreaterThanTwoPeriods) { TEST_F(TimerTest, endToStartPeriod) { auto t0 = std::chrono::steady_clock::now(); ASSERT_TRUE(m_timer->start( - SHORT_DELAY, - Timer::PeriodType::RELATIVE, - ITERATIONS, - std::bind(&TimerTest::simpleTask, this, MEDIUM_DELAY))); + SHORT_DELAY, Timer::PeriodType::RELATIVE, ITERATIONS, std::bind(&TimerTest::simpleTask, this, MEDIUM_DELAY))); ASSERT_TRUE(m_timer->isActive()); verifyTimestamps(t0, SHORT_DELAY, SHORT_DELAY, Timer::PeriodType::RELATIVE, MEDIUM_DELAY, ITERATIONS); } @@ -372,10 +349,7 @@ TEST_F(TimerTest, stopSingleShotAfterTask) { TEST_F(TimerTest, stopMultiShot) { auto t0 = std::chrono::steady_clock::now(); ASSERT_TRUE(m_timer->start( - SHORT_DELAY, - Timer::PeriodType::ABSOLUTE, - ITERATIONS, - std::bind(&TimerTest::simpleTask, this, NO_DELAY))); + SHORT_DELAY, Timer::PeriodType::ABSOLUTE, ITERATIONS, std::bind(&TimerTest::simpleTask, this, NO_DELAY))); ASSERT_TRUE(m_timer->isActive()); verifyTimestamps(t0, SHORT_DELAY, SHORT_DELAY, Timer::PeriodType::ABSOLUTE, NO_DELAY, ITERATIONS - 1); ASSERT_TRUE(m_timer->isActive()); @@ -463,10 +437,27 @@ TEST_F(TimerTest, deleteDuringTask) { verifyTimestamps(t0, SHORT_DELAY, SHORT_DELAY, Timer::PeriodType::ABSOLUTE, SHORT_DELAY); } -/// This test verifies that +/** + * This test verifies that a call to start() succeeds on a timer which was previously stopped while running a task, but + * which is inactive at the time the new start() is called. + */ +TEST_F(TimerTest, startRunningAfterStopDuringTask) { + ASSERT_TRUE(m_timer->start(NO_DELAY, std::bind(&TimerTest::simpleTask, this, MEDIUM_DELAY)).valid()); + ASSERT_TRUE(m_timer->isActive()); + std::this_thread::sleep_for(SHORT_DELAY); + m_timer->stop(); + ASSERT_TRUE(waitForInactive()); + m_timestamps.clear(); + auto t0 = std::chrono::steady_clock::now(); + ASSERT_EQ( + m_timer->start(MEDIUM_DELAY, std::bind(&TimerTest::simpleTask, this, NO_DELAY)).wait_for(TIMEOUT), + std::future_status::ready); + ASSERT_TRUE(waitForInactive()); + verifyTimestamps(t0, MEDIUM_DELAY, MEDIUM_DELAY, Timer::PeriodType::ABSOLUTE, NO_DELAY); +} -} // namespace test -} // namespace timing -} // namespace utils -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace timing +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/AVSCommon/Utils/test/UUIDGenerationTest.cpp b/AVSCommon/Utils/test/UUIDGenerationTest.cpp index ffa3134860..60d80e67d7 100644 --- a/AVSCommon/Utils/test/UUIDGenerationTest.cpp +++ b/AVSCommon/Utils/test/UUIDGenerationTest.cpp @@ -1,7 +1,5 @@ /* - * UUIDGenerationTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,6 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ + #include #include #include @@ -72,8 +71,7 @@ static const unsigned int MAX_TEST_THREADS(10); /// The maximum number of retries. static const unsigned int MAX_RETRIES(20); -class UUIDGenerationTest : public ::testing::Test { -}; +class UUIDGenerationTest : public ::testing::Test {}; /** * Call @c generateUUID and expect a string of length @c UUID_LENGTH. @@ -91,7 +89,7 @@ TEST_F(UUIDGenerationTest, testUUIDContainsOnlyHexCharacters) { ASSERT_EQ(UUID_LENGTH, uuid.length()); for (unsigned int i = 0; i < uuid.length(); i++) { if (i == HYPHEN1_POSITION || i == HYPHEN2_POSITION || i == HYPHEN3_POSITION || i == HYPHEN4_POSITION) { - ASSERT_EQ(HYPHEN, uuid.substr(i,1)); + ASSERT_EQ(HYPHEN, uuid.substr(i, 1)); } else { ASSERT_TRUE(isxdigit(uuid[i])); } @@ -102,15 +100,14 @@ TEST_F(UUIDGenerationTest, testUUIDContainsOnlyHexCharacters) { * Call @c generateUUID and check that the version is set correctly. */ TEST_F(UUIDGenerationTest, testUUIDVersion) { - ASSERT_EQ(UUID_VERSION, generateUUID().substr(UUID_VERSION_OFFSET,1)); + ASSERT_EQ(UUID_VERSION, generateUUID().substr(UUID_VERSION_OFFSET, 1)); } /** * Call @c generateUUID and check the variant is set correctly. */ TEST_F(UUIDGenerationTest, testUUIDVariant) { - ASSERT_EQ(UUID_VARIANT, strtoul(generateUUID().substr(UUID_VARIANT_OFFSET,1).c_str(), - nullptr, 16) & UUID_VARIANT); + ASSERT_EQ(UUID_VARIANT, strtoul(generateUUID().substr(UUID_VARIANT_OFFSET, 1).c_str(), nullptr, 16) & UUID_VARIANT); } /** @@ -118,10 +115,10 @@ TEST_F(UUIDGenerationTest, testUUIDVariant) { */ TEST_F(UUIDGenerationTest, testUUIDHyphens) { std::string uuid = generateUUID(); - ASSERT_EQ(HYPHEN, uuid.substr(HYPHEN1_POSITION,1)); - ASSERT_EQ(HYPHEN, uuid.substr(HYPHEN2_POSITION,1)); - ASSERT_EQ(HYPHEN, uuid.substr(HYPHEN3_POSITION,1)); - ASSERT_EQ(HYPHEN, uuid.substr(HYPHEN4_POSITION,1)); + ASSERT_EQ(HYPHEN, uuid.substr(HYPHEN1_POSITION, 1)); + ASSERT_EQ(HYPHEN, uuid.substr(HYPHEN2_POSITION, 1)); + ASSERT_EQ(HYPHEN, uuid.substr(HYPHEN3_POSITION, 1)); + ASSERT_EQ(HYPHEN, uuid.substr(HYPHEN4_POSITION, 1)); } /** @@ -136,9 +133,9 @@ TEST_F(UUIDGenerationTest, testMultipleRequests) { auto uuid = generateUUID(); uuidsGenerated.insert(uuid); ASSERT_EQ(UUID_LENGTH, uuid.length()); - ASSERT_EQ(UUID_VERSION, uuid.substr(UUID_VERSION_OFFSET,1)); - ASSERT_EQ(UUID_VARIANT, strtoul(uuid.substr(UUID_VARIANT_OFFSET,1).c_str(), nullptr, 16) & UUID_VARIANT); - ASSERT_EQ(prevSizeOfSet+1, uuidsGenerated.size()); + ASSERT_EQ(UUID_VERSION, uuid.substr(UUID_VERSION_OFFSET, 1)); + ASSERT_EQ(UUID_VARIANT, strtoul(uuid.substr(UUID_VARIANT_OFFSET, 1).c_str(), nullptr, 16) & UUID_VARIANT); + ASSERT_EQ(prevSizeOfSet + 1, uuidsGenerated.size()); } } @@ -152,7 +149,7 @@ TEST_F(UUIDGenerationTest, testMultipleConcurrentRequests) { std::unordered_set uuidsGenerated; for (int i = 0; i < no_of_threads; ++i) { - auto future = std::async(std::launch::async, [this]() { return generateUUID(); }); + auto future = std::async(std::launch::async, []() { return generateUUID(); }); uuidRequesters.push_back(std::move(future)); } @@ -161,9 +158,9 @@ TEST_F(UUIDGenerationTest, testMultipleConcurrentRequests) { auto uuid = future.get(); uuidsGenerated.insert(uuid); ASSERT_EQ(UUID_LENGTH, uuid.length()); - ASSERT_EQ(UUID_VERSION, uuid.substr(UUID_VERSION_OFFSET,1)); - ASSERT_EQ(UUID_VARIANT, strtoul(uuid.substr(UUID_VARIANT_OFFSET,1).c_str(), nullptr, 16) & UUID_VARIANT); - ASSERT_EQ(prevSizeOfSet+1, uuidsGenerated.size()); + ASSERT_EQ(UUID_VERSION, uuid.substr(UUID_VERSION_OFFSET, 1)); + ASSERT_EQ(UUID_VARIANT, strtoul(uuid.substr(UUID_VARIANT_OFFSET, 1).c_str(), nullptr, 16) & UUID_VARIANT); + ASSERT_EQ(prevSizeOfSet + 1, uuidsGenerated.size()); } } @@ -172,11 +169,10 @@ TEST_F(UUIDGenerationTest, testMultipleConcurrentRequests) { */ TEST_F(UUIDGenerationTest, testAllHexValuesGenerated) { std::unordered_set hexCharacters = { - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' - }; + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; for (unsigned int retry = 0; retry < MAX_RETRIES && !hexCharacters.empty(); retry++) { std::string uuid = generateUUID(); - for (const char &digit : uuid) { + for (const char& digit : uuid) { hexCharacters.erase(digit); if (hexCharacters.empty()) { break; @@ -187,7 +183,6 @@ TEST_F(UUIDGenerationTest, testAllHexValuesGenerated) { ASSERT_TRUE(hexCharacters.empty()); } -} // namespace test -} // namespace avsCommon -} // namespace alexaClientSDK - +} // namespace test +} // namespace avsCommon +} // namespace alexaClientSDK diff --git a/ApplicationUtilities/CMakeLists.txt b/ApplicationUtilities/CMakeLists.txt index 1cf6cb4b73..9548a220d3 100644 --- a/ApplicationUtilities/CMakeLists.txt +++ b/ApplicationUtilities/CMakeLists.txt @@ -4,3 +4,4 @@ project(ApplicationUtilities LANGUAGES CXX) include(../build/BuildDefaults.cmake) add_subdirectory("DefaultClient") +add_subdirectory("Resources") diff --git a/ApplicationUtilities/DefaultClient/include/DefaultClient/DefaultClient.h b/ApplicationUtilities/DefaultClient/include/DefaultClient/DefaultClient.h index b9840ac579..2f7f335c7b 100644 --- a/ApplicationUtilities/DefaultClient/include/DefaultClient/DefaultClient.h +++ b/ApplicationUtilities/DefaultClient/include/DefaultClient/DefaultClient.h @@ -1,7 +1,5 @@ /* - * DefaultClient.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,30 +13,54 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_DEFAULT_CLIENT_INCLUDE_DEFAULT_CLIENT_H_ -#define ALEXA_CLIENT_SDK_DEFAULT_CLIENT_INCLUDE_DEFAULT_CLIENT_H_ +#ifndef ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_DEFAULTCLIENT_INCLUDE_DEFAULTCLIENT_DEFAULTCLIENT_H_ +#define ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_DEFAULTCLIENT_INCLUDE_DEFAULTCLIENT_DEFAULTCLIENT_H_ #include +#include #include +#include #include +#include #include #include #include +#include #include -#include #include #include +#include +#include +#include +#include #include #include #include +#include +#include +#include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include namespace alexaClientSDK { namespace defaultClient { /** - * This class serves to instantiate each default component with of the SDK with no specializations to provide an + * This class serves to instantiate each default component with of the SDK with no specializations to provide an * "out-of-box" component that users may utilize for AVS interaction. */ class DefaultClient { @@ -49,15 +71,32 @@ class DefaultClient { /** * Creates and initializes a default AVS SDK client. To connect the client to AVS, users should make a call to * connect() after creation. - * + * + * @param externalMusicProviderMediaPlayers The map of to use to play content from each + * external music provider. + * @param adapterCreationMap The map of to use when creating the adapters for the + * different music providers supported by ExternalMediaPlayer. * @param speakMediaPlayer The media player to use to play Alexa speech from. * @param audioMediaPlayer The media player to use to play Alexa audio content from. * @param alertsMediaPlayer The media player to use to play alerts from. + * @param notificationsMediaPlayer The media player to to play notification indicators. + * @param speakSpeaker The speaker to control volume of Alexa speech. + * @param audioSpeaker The speaker to control volume of Alexa audio content. + * @param alertsSpeaker The speaker to control volume of alerts. + * @param notificationsSpeaker The speaker to control volume of notifications. + * @param additionalSpeakers A list of additional speakers to receive volume changes. + * @param audioFactory The audioFactory is a component that provides unique audio streams. * @param authDelegate The component that provides the client with valid LWA authorization. - * @Param alertStorage The storage interface that will be used to store alerts. - * @param alexaDialogStateObservers Observers that can be used to be notified of Alexa dialog related UX state + * @param alertStorage The storage interface that will be used to store alerts. + * @param messageStorage The storage interface that will be used to store certified sender messages. + * @param notificationsStorage The storage interface that will be used to store notification indicators. + * @param alexaDialogStateObservers Observers that can be used to be notified of Alexa dialog related UX state * changes. * @param connectionObservers Observers that can be used to be notified of connection status changes. + * @param isGuiSupported Whether the device supports GUI. + * @param firmwareVersion The firmware version to report to @c AVS or @c INVALID_FIRMWARE_VERSION. + * @param sendSoftwareInfoOnConnected Whether to send SoftwareInfo upon connecting to @c AVS. + * @param softwareInfoSenderObserver Object to receive notifications about sending SoftwareInfo. * @return A @c std::unique_ptr to a DefaultClient if all went well or @c nullptr otherwise. * * TODO: ACSDK-384 Remove the requirement of clients having to wait for authorization before making the connect() @@ -65,25 +104,44 @@ class DefaultClient { * TODO: Allow the user to pass in a MediaPlayer factory rather than each media player individually. */ static std::unique_ptr create( - std::shared_ptr speakMediaPlayer, - std::shared_ptr audioMediaPlayer, - std::shared_ptr alertsMediaPlayer, - std::shared_ptr authDelegate, - std::shared_ptr alertStorage, - std::unordered_set> - alexaDialogStateObservers, - std::unordered_set> - connectionObservers); + const std::unordered_map>& + externalMusicProviderMediaPlayers, + const capabilityAgents::externalMediaPlayer::ExternalMediaPlayer::AdapterCreationMap& adapterCreationMap, + std::shared_ptr speakMediaPlayer, + std::shared_ptr audioMediaPlayer, + std::shared_ptr alertsMediaPlayer, + std::shared_ptr notificationsMediaPlayer, + std::shared_ptr speakSpeaker, + std::shared_ptr audioSpeaker, + std::shared_ptr alertsSpeaker, + std::shared_ptr notificationsSpeaker, + const std::vector>& additionalSpeakers, + std::shared_ptr audioFactory, + std::shared_ptr authDelegate, + std::shared_ptr alertStorage, + std::shared_ptr messageStorage, + std::shared_ptr notificationsStorage, + std::shared_ptr settingsStorage, + std::unordered_set> + alexaDialogStateObservers, + std::unordered_set> + connectionObservers, + bool isGuiSupported, + avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion = + avsCommon::sdkInterfaces::softwareInfo::INVALID_FIRMWARE_VERSION, + bool sendSoftwareInfoOnConnected = false, + std::shared_ptr softwareInfoSenderObserver = + nullptr); /** * Connects the client to AVS. Note that users should first wait for the authorization state to be set to REFRESHED - * before calling this function. After this call, users can observe the state of the connection asynchronously by + * before calling this function. After this call, users can observe the state of the connection asynchronously by * using a connectionObserver that was passed in to the create() function. * - * @param avsEndpoint An optional parameter to the AVS URL to connect to. This is defaulted to the North American - * endpoint. + * @param avsEndpoint An optional parameter to the AVS URL to connect to. If empty the "endpoint" value of the + * "acl" configuration will be used. If there no such configuration value a default value will be used instead. */ - void connect(const std::string& avsEndpoint = "https://avs-alexa-na.amazon.com"); + void connect(const std::string& avsEndpoint = ""); /** * Disconnects the client from AVS if it is connected. After the call, users can observer the state of the @@ -92,7 +150,7 @@ class DefaultClient { void disconnect(); /** - * Stops the foreground activity if there is one. This acts as a "stop" button that can be used to stop an + * Stops the foreground activity if there is one. This acts as a "stop" button that can be used to stop an * ongoing activity. This call will block until the foreground activity has stopped all user-observable activities. */ void stopForegroundActivity(); @@ -103,7 +161,7 @@ class DefaultClient { * @param observer The observer to add. */ void addAlexaDialogStateObserver( - std::shared_ptr observer); + std::shared_ptr observer); /** * Removes an observer to be notified of Alexa dialog related UX state. @@ -115,7 +173,7 @@ class DefaultClient { * @param observer The observer to remove. */ void removeAlexaDialogStateObserver( - std::shared_ptr observer); + std::shared_ptr observer); /** * Adds an observer to be notified of connection status changes. @@ -130,7 +188,149 @@ class DefaultClient { * @param observer The observer to remove. */ void removeConnectionObserver( - std::shared_ptr observer); + std::shared_ptr observer); + + /** + * Adds an observer to be notified of alert state changes. + * + * @param observer The observer to add. + */ + void addAlertsObserver(std::shared_ptr observer); + + /** + * Removes an observer to be notified of alert state changes. + * + * @param observer The observer to remove. + */ + void removeAlertsObserver(std::shared_ptr observer); + + /** + * Adds an observer to be notified of @c AudioPlayer state changes. This can be used to be be notified of the @c + * PlayerActivity of the @c AudioPlayer. + * + * @param observer The observer to add. + */ + void addAudioPlayerObserver(std::shared_ptr observer); + + /** + * Removes an observer to be notified of @c AudioPlayer state changes. + * + * @param observer The observer to remove. + */ + void removeAudioPlayerObserver(std::shared_ptr observer); + + /** + * Adds an observer to be notified when a TemplateRuntime directive is received. + * + * @param observer The observer to add. + */ + void addTemplateRuntimeObserver( + std::shared_ptr observer); + + /** + * Removes an observer to be notified when a TemplateRuntime directive is received. + * + * @param observer The observer to remove. + */ + void removeTemplateRuntimeObserver( + std::shared_ptr observer); + + /** + * Notify the TemplateRuntime Capability Agent that the display card is cleared from the screen. + */ + void TemplateRuntimeDisplayCardCleared(); + + /** + * Adds an observer to a single setting to be notified of that setting change. + * + * @param key The name of the setting. + * @param observer The settings observer to be added. + */ + void addSettingObserver( + const std::string& key, + std::shared_ptr observer); + + /** + * Removes an observer to a single setting to be notified of that setting change. + * + * @param key The name of the setting. + * @param observer The settings observer to remove. + */ + void removeSettingObserver( + const std::string& key, + std::shared_ptr observer); + + /** + * Adds an observer to be notified of IndicatorState changes. + * + * @param observer The observer to add. + */ + void addNotificationsObserver(std::shared_ptr observer); + + /** + * Removes an observer to be notified of IndicatorState changes. + * + * @param observer The observer to remove. + */ + void removeNotificationsObserver( + std::shared_ptr observer); + + /** + * Calls the changeSetting function of Settings object. + * + * @param key The name of the setting to be changed. + * @param value The value of the setting to be set. + */ + void changeSetting(const std::string& key, const std::string& value); + + /** + * Sends the default settings set by the user to the AVS after connection is established. + */ + void sendDefaultSettings(); + + /** + * Get a reference to the PlaybackRouter + * + * @return shared_ptr to the PlaybackRouter. + */ + std::shared_ptr getPlaybackRouter() const; + + /** + * Adds a SpeakerManagerObserver to be alerted when the volume and mute changes. + * + * @param observer The observer to be notified upon volume and mute changes. + */ + void addSpeakerManagerObserver(std::shared_ptr observer); + + /** + * Removes a SpeakerManagerObserver from being alerted when the volume and mute changes. + * + * @param observer The observer to be notified upon volume and mute changes. + */ + void removeSpeakerManagerObserver( + std::shared_ptr observer); + + /** + * Get a shared_ptr to the SpeakerManager. + * + * @return shared_ptr to the SpeakerManager. + */ + std::shared_ptr getSpeakerManager(); + + /** + * Get a shared_ptr to the RegistrationManager. + * + * @return shared_ptr to the RegistrationManager. + */ + std::shared_ptr getRegistrationManager(); + + /** + * Update the firmware version. + * + * @param firmwareVersion The new firmware version. + * @return Whether the setting was accepted. + */ + bool setFirmwareVersion(avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion); /** * Begins a wake word initiated Alexa interaction. @@ -139,13 +339,15 @@ class DefaultClient { * @param beginIndex The begin index of the keyword found within the stream. * @param endIndex The end index of the keyword found within the stream. * @param keyword The keyword that was detected. + * @param espData The ESP measurement data. * @return A future indicating whether the interaction was successfully started. */ std::future notifyOfWakeWord( - capabilityAgents::aip::AudioProvider wakeWordAudioProvider, - avsCommon::avs::AudioInputStream::Index beginIndex, - avsCommon::avs::AudioInputStream::Index endIndex, - std::string keyword); + capabilityAgents::aip::AudioProvider wakeWordAudioProvider, + avsCommon::avs::AudioInputStream::Index beginIndex, + avsCommon::avs::AudioInputStream::Index endIndex, + std::string keyword, + const capabilityAgents::aip::ESPData& espData = capabilityAgents::aip::ESPData::EMPTY_ESP_DATA); /** * Begins a tap to talk initiated Alexa interaction. Note that this can also be used for wake word engines that @@ -156,8 +358,8 @@ class DefaultClient { * @return A future indicating whether the interaction was successfully started. */ std::future notifyOfTapToTalk( - capabilityAgents::aip::AudioProvider tapToTalkAudioProvider, - avsCommon::avs::AudioInputStream::Index beginIndex = INVALID_INDEX); + capabilityAgents::aip::AudioProvider tapToTalkAudioProvider, + avsCommon::avs::AudioInputStream::Index beginIndex = INVALID_INDEX); /** * Begins a hold to talk initiated Alexa interaction. @@ -170,12 +372,21 @@ class DefaultClient { /** * Ends a hold to talk interaction by forcing the client to stop streaming audio data to the cloud and ending any * currently ongoing recognize interactions. - * + * * @return A future indicating whether audio streaming was successfully stopped. This can be false if this was * called in the wrong state. */ std::future notifyOfHoldToTalkEnd(); + /** + * Ends a tap to talk interaction by forcing the client to stop streaming audio data to the cloud and ending any + * currently ongoing recognize interactions. + * + * @return A future indicating whether audio streaming was successfully stopped. This can be false if this was + * called in the wrong state. + */ + std::future notifyOfTapToTalkEnd(); + /** * Destructor. */ @@ -184,37 +395,89 @@ class DefaultClient { private: /** * Initializes the SDK and "glues" all the components together. - * + * + * @param externalMusicProviderMediaPlayers The map of to use to play content from each + * external music provider. + * @param adapterCreationMap The map of to use when creating the adapters for the + * different music providers supported by ExternalMediaPlayer. * @param speakMediaPlayer The media player to use to play Alexa speech from. * @param audioMediaPlayer The media player to use to play Alexa audio content from. * @param alertsMediaPlayer The media player to use to play alerts from. + * @param notificationsMediaPlayer The media player to to play notification indicators. + * @param speakSpeaker The speaker to control volume of Alexa speech. + * @param audioSpeaker The speaker to control volume of Alexa audio content. + * @param alertsSpeaker The speaker to control volume of alerts. + * @param notificationsSpeaker The speaker to control volume of notifications. + * @param additionalSpeakers A list of additional speakers to receive volume changes. + * @param audioFactory The audioFactory is a component the provides unique audio streams. * @param authDelegate The component that provides the client with valid LWA authorization. - * @Param alertStorage The storage interface that will be used to store alerts. - * @param alexaDialogStateObservers Observers that can be used to be notified of Alexa dialog related UX state + * @param alertStorage The storage interface that will be used to store alerts. + * @param messageStorage The storage interface that will be used to store certified sender messages. + * @param notificationsStorage The storage interface that will be used to store notification indicators. + * @param alexaDialogStateObservers Observers that can be used to be notified of Alexa dialog related UX state * changes. * @param connectionObservers Observers that can be used to be notified of connection status changes. - * @return Whether the SDK was intialized properly. + * @param isGuiSupported Whether the device supports GUI. + * @param firmwareVersion The firmware version to report to @c AVS or @c INVALID_FIRMWARE_VERSION. + * @param sendSoftwareInfoOnConnected Whether to send SoftwareInfo upon connecting to @c AVS. + * @param softwareInfoSenderObserver Object to receive notifications about sending SoftwareInfo. + * @return Whether the SDK was initialized properly. */ bool initialize( - std::shared_ptr speakMediaPlayer, - std::shared_ptr audioMediaPlayer, - std::shared_ptr alertsMediaPlayer, - std::shared_ptr authDelegate, - std::shared_ptr alertStorage, - std::unordered_set> - alexaDialogStateObservers, - std::unordered_set> - connectionObservers); + const std::unordered_map>& + externalMusicProviderMediaPlayers, + const capabilityAgents::externalMediaPlayer::ExternalMediaPlayer::AdapterCreationMap& adapterCreationMap, + std::shared_ptr speakMediaPlayer, + std::shared_ptr audioMediaPlayer, + std::shared_ptr alertsMediaPlayer, + std::shared_ptr notificationsMediaPlayer, + std::shared_ptr speakSpeaker, + std::shared_ptr audioSpeaker, + std::shared_ptr alertsSpeaker, + std::shared_ptr notificationsSpeaker, + const std::vector>& additionalSpeakers, + std::shared_ptr audioFactory, + std::shared_ptr authDelegate, + std::shared_ptr alertStorage, + std::shared_ptr messageStorage, + std::shared_ptr notificationsStorage, + std::shared_ptr settingsStorage, + std::unordered_set> + alexaDialogStateObservers, + std::unordered_set> + connectionObservers, + bool isGuiSupported, + avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion, + bool sendSoftwareInfoOnConnected, + std::shared_ptr softwareInfoSenderObserver); /// The directive sequencer. std::shared_ptr m_directiveSequencer; - /// The focus manager. - std::shared_ptr m_focusManager; + /// The focus manager for audio channels. + std::shared_ptr m_audioFocusManager; + + /// The focus manager for visual channels. + std::shared_ptr m_visualFocusManager; + + /// The audio activity tracker. + std::shared_ptr m_audioActivityTracker; + + /// The visual activity tracker. + std::shared_ptr m_visualActivityTracker; + + /// The message router. + std::shared_ptr m_messageRouter; /// The connection manager. std::shared_ptr m_connectionManager; + /// The exception sender. + std::shared_ptr m_exceptionSender; + + /// The certified sender. + std::shared_ptr m_certifiedSender; + /// The audio input processor. std::shared_ptr m_audioInputProcessor; @@ -224,17 +487,44 @@ class DefaultClient { /// The audio player. std::shared_ptr m_audioPlayer; + /// The external media player. + std::shared_ptr m_externalMediaPlayer; + /// The alerts capability agent. std::shared_ptr m_alertsCapabilityAgent; + /// The notifications capability agent. + std::shared_ptr m_notificationsCapabilityAgent; + /// The Alexa dialog UX aggregator. std::shared_ptr m_dialogUXStateAggregator; - /// The state synchronizer. - std::shared_ptr m_stateSynchronizer; + /// The playbackRouter. + std::shared_ptr m_playbackRouter; + + /// The playbackController capability agent. + std::shared_ptr m_playbackController; + + /// The settings object. + std::shared_ptr m_settings; + + /// The speakerManager. Used for controlling the volume and mute settings of @c SpeakerInterface objects. + std::shared_ptr m_speakerManager; + + /// The TemplateRuntime capability agent. + std::shared_ptr m_templateRuntime; + + /// Mutex to serialize access to m_softwareInfoSender. + std::mutex m_softwareInfoSenderMutex; + + /// The System.SoftwareInfoSender capability agent. + std::shared_ptr m_softwareInfoSender; + + /// The RegistrationManager used to control customer registration. + std::shared_ptr m_registrationManager; }; -} // namespace defaultClient -} // namespace alexaClientSDK +} // namespace defaultClient +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_DEFAULT_CLIENT_INCLUDE_DEFAULT_CLIENT_H_ +#endif // ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_DEFAULTCLIENT_INCLUDE_DEFAULTCLIENT_DEFAULTCLIENT_H_ diff --git a/ApplicationUtilities/DefaultClient/src/CMakeLists.txt b/ApplicationUtilities/DefaultClient/src/CMakeLists.txt index 0a06c7687c..ebfe54544c 100644 --- a/ApplicationUtilities/DefaultClient/src/CMakeLists.txt +++ b/ApplicationUtilities/DefaultClient/src/CMakeLists.txt @@ -6,16 +6,23 @@ add_library(DefaultClient SHARED target_include_directories(DefaultClient PUBLIC "${DefaultClient_SOURCE_DIR}/include") target_link_libraries(DefaultClient - AVSCommon - ACL - ADSL + AVSCommon + ACL + ADSL AFML - AIP + AIP Alerts + Notifications + PlaybackController + SpeakerManager SpeechSynthesizer + Settings + TemplateRuntime AudioPlayer + ExternalMediaPlayer AVSSystem - ContextManager) + ContextManager + RegistrationManager) # install target -asdk_install() \ No newline at end of file +asdk_install() diff --git a/ApplicationUtilities/DefaultClient/src/DefaultClient.cpp b/ApplicationUtilities/DefaultClient/src/DefaultClient.cpp index 0bcb518df3..f8ba4a13c0 100644 --- a/ApplicationUtilities/DefaultClient/src/DefaultClient.cpp +++ b/ApplicationUtilities/DefaultClient/src/DefaultClient.cpp @@ -1,7 +1,5 @@ /* - * DefaultClient.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -17,13 +15,13 @@ #include "DefaultClient/DefaultClient.h" -#include - -#include #include +#include +#include #include #include #include +#include #include #include @@ -41,24 +39,57 @@ static const std::string TAG("DefaultClient"); #define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) std::unique_ptr DefaultClient::create( - std::shared_ptr speakMediaPlayer, - std::shared_ptr audioMediaPlayer, - std::shared_ptr alertsMediaPlayer, - std::shared_ptr authDelegate, - std::shared_ptr alertStorage, - std::unordered_set> - alexaDialogStateObservers, - std::unordered_set> - connectionObservers) { + const std::unordered_map>& + externalMusicProviderMediaPlayers, + const capabilityAgents::externalMediaPlayer::ExternalMediaPlayer::AdapterCreationMap& adapterCreationMap, + std::shared_ptr speakMediaPlayer, + std::shared_ptr audioMediaPlayer, + std::shared_ptr alertsMediaPlayer, + std::shared_ptr notificationsMediaPlayer, + std::shared_ptr speakSpeaker, + std::shared_ptr audioSpeaker, + std::shared_ptr alertsSpeaker, + std::shared_ptr notificationsSpeaker, + const std::vector>& additionalSpeakers, + std::shared_ptr audioFactory, + std::shared_ptr authDelegate, + std::shared_ptr alertStorage, + std::shared_ptr messageStorage, + std::shared_ptr notificationsStorage, + std::shared_ptr settingsStorage, + std::unordered_set> + alexaDialogStateObservers, + std::unordered_set> + connectionObservers, + bool isGuiSupported, + avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion, + bool sendSoftwareInfoOnConnected, + std::shared_ptr softwareInfoSenderObserver) { std::unique_ptr defaultClient(new DefaultClient()); if (!defaultClient->initialize( - speakMediaPlayer, - audioMediaPlayer, - alertsMediaPlayer, - authDelegate, - alertStorage, - alexaDialogStateObservers, - connectionObservers)) { + externalMusicProviderMediaPlayers, + adapterCreationMap, + speakMediaPlayer, + audioMediaPlayer, + alertsMediaPlayer, + notificationsMediaPlayer, + speakSpeaker, + audioSpeaker, + alertsSpeaker, + notificationsSpeaker, + additionalSpeakers, + audioFactory, + authDelegate, + alertStorage, + messageStorage, + notificationsStorage, + settingsStorage, + alexaDialogStateObservers, + connectionObservers, + isGuiSupported, + firmwareVersion, + sendSoftwareInfoOnConnected, + softwareInfoSenderObserver)) { return nullptr; } @@ -66,15 +97,37 @@ std::unique_ptr DefaultClient::create( } bool DefaultClient::initialize( - std::shared_ptr speakMediaPlayer, - std::shared_ptr audioMediaPlayer, - std::shared_ptr alertsMediaPlayer, - std::shared_ptr authDelegate, - std::shared_ptr alertStorage, - std::unordered_set> - alexaDialogStateObservers, - std::unordered_set> - connectionObservers) { + const std::unordered_map>& + externalMusicProviderMediaPlayers, + const capabilityAgents::externalMediaPlayer::ExternalMediaPlayer::AdapterCreationMap& adapterCreationMap, + std::shared_ptr speakMediaPlayer, + std::shared_ptr audioMediaPlayer, + std::shared_ptr alertsMediaPlayer, + std::shared_ptr notificationsMediaPlayer, + std::shared_ptr speakSpeaker, + std::shared_ptr audioSpeaker, + std::shared_ptr alertsSpeaker, + std::shared_ptr notificationsSpeaker, + const std::vector>& additionalSpeakers, + std::shared_ptr audioFactory, + std::shared_ptr authDelegate, + std::shared_ptr alertStorage, + std::shared_ptr messageStorage, + std::shared_ptr notificationsStorage, + std::shared_ptr settingsStorage, + std::unordered_set> + alexaDialogStateObservers, + std::unordered_set> + connectionObservers, + bool isGuiSupported, + avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion, + bool sendSoftwareInfoOnConnected, + std::shared_ptr softwareInfoSenderObserver) { + if (!audioFactory) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "nullAudioFactory")); + return false; + } + if (!speakMediaPlayer) { ACSDK_ERROR(LX("initializeFailed").d("reason", "nullSpeakMediaPlayer")); return false; @@ -90,6 +143,11 @@ bool DefaultClient::initialize( return false; } + if (!notificationsMediaPlayer) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "nullNotificationsMediaPlayer")); + return false; + } + if (!authDelegate) { ACSDK_ERROR(LX("initializeFailed").d("reason", "nullAuthDelegate")); return false; @@ -102,49 +160,55 @@ bool DefaultClient::initialize( } /* - * Creating the Focus Manager - This component deals with the management of layered audio focus across various - * components. It handles granting access to Channels as well as pushing different "Channels" to foreground, - * background, or no focus based on which other Channels are active and the priorities of those Channels. Each - * Capability Agent will require the Focus Manager in order to request access to the Channel it wishes to play on. + * Creating customerDataManager which will be used by the registrationManager and all classes that extend + * CustomerDataHandler */ - m_focusManager = std::make_shared(); + auto customerDataManager = std::make_shared(); /* * Creating the Attachment Manager - This component deals with managing attachments and allows for readers and * writers to be created to handle the attachment. */ auto attachmentManager = std::make_shared( - avsCommon::avs::attachment::AttachmentManager::AttachmentType::IN_PROCESS); + avsCommon::avs::attachment::AttachmentManager::AttachmentType::IN_PROCESS); /* * Creating the message router - This component actually maintains the connection to AVS over HTTP2. It is created * using the auth delegate, which provides authorization to connect to AVS, and the attachment manager, which helps * ACL write attachments received from AVS. */ - auto messageRouter = std::make_shared(authDelegate, attachmentManager); + m_messageRouter = std::make_shared(authDelegate, attachmentManager); /* * Creating the connection manager - This component is the overarching connection manager that glues together all * the other networking components into one easy-to-use component. */ - m_connectionManager = acl::AVSConnectionManager::create( - messageRouter, - false, - connectionObservers, - {m_dialogUXStateAggregator}); + m_connectionManager = + acl::AVSConnectionManager::create(m_messageRouter, false, connectionObservers, {m_dialogUXStateAggregator}); if (!m_connectionManager) { ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateConnectionManager")); return false; } + /* + * Creating our certified sender - this component guarantees that messages given to it (expected to be JSON + * formatted AVS Events) will be sent to AVS. This nicely decouples strict message sending from components which + * require an Event be sent, even in conditions when there is no active AVS connection. + */ + m_certifiedSender = certifiedSender::CertifiedSender::create( + m_connectionManager, m_connectionManager, messageStorage, customerDataManager); + if (!m_certifiedSender) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateCertifiedSender")); + return false; + } + /* * Creating the Exception Sender - This component helps the SDK send exceptions when it is unable to handle a * directive sent by AVS. For that reason, the Directive Sequencer and each Capability Agent will need this * component. */ - std::shared_ptr exceptionSender = - avsCommon::avs::ExceptionEncounteredSender::create(m_connectionManager); - if (!exceptionSender) { + m_exceptionSender = avsCommon::avs::ExceptionEncounteredSender::create(m_connectionManager); + if (!m_exceptionSender) { ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateExceptionSender")); return false; } @@ -154,7 +218,7 @@ bool DefaultClient::initialize( * directives sent from AVS and forwarding them along to the appropriate Capability Agent that deals with * directives in that Namespace/Name. */ - m_directiveSequencer = adsl::DirectiveSequencer::create(exceptionSender); + m_directiveSequencer = adsl::DirectiveSequencer::create(m_exceptionSender); if (!m_directiveSequencer) { ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateDirectiveSequencer")); return false; @@ -164,13 +228,18 @@ bool DefaultClient::initialize( * Creating the Message Interpreter - This component takes care of converting ACL messages to Directives for the * Directive Sequencer to process. This essentially "glues" together the ACL and ADSL. */ - auto messageInterpreter = std::make_shared( - exceptionSender, - m_directiveSequencer, - attachmentManager); + auto messageInterpreter = + std::make_shared(m_exceptionSender, m_directiveSequencer, attachmentManager); m_connectionManager->addMessageObserver(messageInterpreter); + /* + * Creating the Registration Manager - This component is responsible for implementing any customer registration + * operation such as login and logout + */ + m_registrationManager = std::make_shared( + m_directiveSequencer, m_connectionManager, customerDataManager); + /* * Creating the Context Manager - This component manages the context of each of the components to update to AVS. * It is required for each of the capability agents so that they may provide their state just before any event is @@ -181,28 +250,29 @@ bool DefaultClient::initialize( ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateContextManager")); return false; } + acl::PostConnectObject::init(contextManager); /* - * Creating the state synchronizer - This component is responsible for updating AVS of the state of all components - * whenever a new connection is established as part of the System interface of AVS. + * Creating the Audio Activity Tracker - This component is responsibly for reporting the audio channel focus + * information to AVS. */ - // TODO: ACSDK-421: Revert this to use m_connectionManager rather than messageRouter. - m_stateSynchronizer = capabilityAgents::system::StateSynchronizer::create( - contextManager, messageRouter); - if (!m_stateSynchronizer) { - ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateStateSynchronizer")); - return false; - } + m_audioActivityTracker = afml::AudioActivityTracker::create(contextManager); - m_connectionManager->addConnectionStatusObserver(m_stateSynchronizer); - m_stateSynchronizer->addObserver(m_connectionManager); + /* + * Creating the Focus Manager - This component deals with the management of layered audio focus across various + * components. It handles granting access to Channels as well as pushing different "Channels" to foreground, + * background, or no focus based on which other Channels are active and the priorities of those Channels. Each + * Capability Agent will require the Focus Manager in order to request access to the Channel it wishes to play on. + */ + m_audioFocusManager = + std::make_shared(afml::FocusManager::DEFAULT_AUDIO_CHANNELS, m_audioActivityTracker); /* * Creating the User Inactivity Monitor - This component is responsibly for updating AVS of user inactivity as * described in the System Interface of AVS. */ - auto userInactivityMonitor = capabilityAgents::system::UserInactivityMonitor::create( - m_connectionManager, exceptionSender); + auto userInactivityMonitor = + capabilityAgents::system::UserInactivityMonitor::create(m_connectionManager, m_exceptionSender); if (!userInactivityMonitor) { ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateUserInactivityMonitor")); return false; @@ -213,13 +283,13 @@ bool DefaultClient::initialize( * interface of AVS. */ m_audioInputProcessor = capabilityAgents::aip::AudioInputProcessor::create( - m_directiveSequencer, - m_connectionManager, - contextManager, - m_focusManager, - m_dialogUXStateAggregator, - exceptionSender, - userInactivityMonitor); + m_directiveSequencer, + m_connectionManager, + contextManager, + m_audioFocusManager, + m_dialogUXStateAggregator, + m_exceptionSender, + userInactivityMonitor); if (!m_audioInputProcessor) { ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateAudioInputProcessor")); return false; @@ -231,14 +301,13 @@ bool DefaultClient::initialize( * Creating the Speech Synthesizer - This component is the Capability Agent that implements the SpeechSynthesizer * interface of AVS. */ - m_speechSynthesizer = - capabilityAgents::speechSynthesizer::SpeechSynthesizer::create( - speakMediaPlayer, - m_connectionManager, - m_focusManager, - contextManager, - attachmentManager, - exceptionSender); + m_speechSynthesizer = capabilityAgents::speechSynthesizer::SpeechSynthesizer::create( + speakMediaPlayer, + m_connectionManager, + m_audioFocusManager, + contextManager, + m_exceptionSender, + m_dialogUXStateAggregator); if (!m_speechSynthesizer) { ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateSpeechSynthesizer")); return false; @@ -246,17 +315,38 @@ bool DefaultClient::initialize( m_speechSynthesizer->addObserver(m_dialogUXStateAggregator); + /* + * Creating the PlaybackController Capability Agent - This component is the Capability Agent that implements the + * PlaybackController interface of AVS. + */ + m_playbackController = + capabilityAgents::playbackController::PlaybackController::create(contextManager, m_connectionManager); + if (!m_playbackController) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreatePlaybackController")); + return false; + } + + /* + * Creating the PlaybackRouter - This component routes a playback button press to the active handler. + * The default handler is @c PlaybackController. + */ + m_playbackRouter = capabilityAgents::playbackController::PlaybackRouter::create(m_playbackController); + if (!m_playbackRouter) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreatePlaybackRouter")); + return false; + } + /* * Creating the Audio Player - This component is the Capability Agent that implements the AudioPlayer * interface of AVS. */ m_audioPlayer = capabilityAgents::audioPlayer::AudioPlayer::create( - audioMediaPlayer, - m_connectionManager, - m_focusManager, - contextManager, - attachmentManager, - exceptionSender); + audioMediaPlayer, + m_connectionManager, + m_audioFocusManager, + contextManager, + m_exceptionSender, + m_playbackRouter); if (!m_audioPlayer) { ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateAudioPlayer")); return false; @@ -267,28 +357,148 @@ bool DefaultClient::initialize( * interface of AVS. */ m_alertsCapabilityAgent = capabilityAgents::alerts::AlertsCapabilityAgent::create( - m_connectionManager, - m_focusManager, - contextManager, - exceptionSender, - capabilityAgents::alerts::renderer::Renderer::create(alertsMediaPlayer), - alertStorage, - nullptr); + m_connectionManager, + m_certifiedSender, + m_audioFocusManager, + contextManager, + m_exceptionSender, + alertStorage, + audioFactory->alerts(), + capabilityAgents::alerts::renderer::Renderer::create(alertsMediaPlayer), + customerDataManager); if (!m_alertsCapabilityAgent) { ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateAlertsCapabilityAgent")); - return false; + return false; + } + + addConnectionObserver(m_alertsCapabilityAgent); + + addConnectionObserver(m_dialogUXStateAggregator); + + /* + * Creating the Notifications Capability Agent - This component is the Capability Agent that implements the + * Notifications interface of AVS. + */ + m_notificationsCapabilityAgent = capabilityAgents::notifications::NotificationsCapabilityAgent::create( + notificationsStorage, + capabilityAgents::notifications::NotificationRenderer::create(notificationsMediaPlayer), + contextManager, + m_exceptionSender, + audioFactory->notifications(), + customerDataManager); + if (!m_notificationsCapabilityAgent) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateNotificationsCapabilityAgent")); + return false; + } + + std::shared_ptr settingsUpdatedEventSender = + alexaClientSDK::capabilityAgents::settings::SettingsUpdatedEventSender::create(m_connectionManager); + if (!settingsUpdatedEventSender) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateSettingsObserver")); + return false; + } + + /* + * Creating the Setting object - This component implements the Setting interface of AVS. + */ + m_settings = capabilityAgents::settings::Settings::create( + settingsStorage, {settingsUpdatedEventSender}, customerDataManager); + + if (!m_settings) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateSettingsObject")); + return false; + } + + std::vector> allSpeakers = { + speakSpeaker, audioSpeaker, alertsSpeaker, notificationsSpeaker}; + allSpeakers.insert(allSpeakers.end(), additionalSpeakers.begin(), additionalSpeakers.end()); + + /* + * Creating the SpeakerManager Capability Agent - This component is the Capability Agent that implements the + * Speaker interface of AVS. + */ + m_speakerManager = capabilityAgents::speakerManager::SpeakerManager::create( + allSpeakers, contextManager, m_connectionManager, m_exceptionSender); + if (!m_speakerManager) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateSpeakerManager")); + return false; + } + + /* + * Creating the ExternalMediaPlayer CA - This component is the Capability Agent that implements the + * ExternalMediaPlayer interface of AVS. + */ + m_externalMediaPlayer = capabilityAgents::externalMediaPlayer::ExternalMediaPlayer::create( + externalMusicProviderMediaPlayers, + adapterCreationMap, + m_speakerManager, + m_connectionManager, + m_audioFocusManager, + contextManager, + m_exceptionSender, + m_playbackRouter); + if (!m_externalMediaPlayer) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateExternalMediaPlayer")); + return false; } - m_connectionManager->addConnectionStatusObserver(m_alertsCapabilityAgent); + m_speakerManager->addSpeaker(m_externalMediaPlayer); + + if (isGuiSupported) { + /* + * Creating the Visual Activity Tracker - This component is responsibly for reporting the visual channel focus + * information to AVS. + */ + m_visualActivityTracker = afml::VisualActivityTracker::create(contextManager); + + /* + * Creating the Visual Focus Manager - This component deals with the management of visual focus across various + * components. It handles granting access to Channels as well as pushing different "Channels" to foreground, + * background, or no focus based on which other Channels are active and the priorities of those Channels. Each + * Capability Agent will require the Focus Manager in order to request access to the Channel it wishes to play + * on. + */ + m_visualFocusManager = + std::make_shared(afml::FocusManager::DEFAULT_VISUAL_CHANNELS, m_visualActivityTracker); + + /* + * Creating the TemplateRuntime Capability Agent - This component is the Capability Agent that implements the + * TemplateRuntime interface of AVS. + */ + m_templateRuntime = capabilityAgents::templateRuntime::TemplateRuntime::create( + m_audioPlayer, m_visualFocusManager, m_exceptionSender); + if (!m_templateRuntime) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateTemplateRuntimeCapabilityAgent")); + return false; + } + m_dialogUXStateAggregator->addObserver(m_templateRuntime); + } /* * Creating the Endpoint Handler - This component is responsible for handling directives from AVS instructing the * client to change the endpoint to connect to. */ - auto endpointHandler = capabilityAgents::system::EndpointHandler::create(m_connectionManager, exceptionSender); + auto endpointHandler = capabilityAgents::system::EndpointHandler::create(m_connectionManager, m_exceptionSender); if (!endpointHandler) { ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateEndpointHandler")); - return false; + return false; + } + + if (avsCommon::sdkInterfaces::softwareInfo::isValidFirmwareVersion(firmwareVersion)) { + auto tempSender = capabilityAgents::system::SoftwareInfoSender::create( + firmwareVersion, + sendSoftwareInfoOnConnected, + softwareInfoSenderObserver, + m_connectionManager, + m_connectionManager, + m_exceptionSender); + if (tempSender) { + std::lock_guard lock(m_softwareInfoSenderMutex); + m_softwareInfoSender = tempSender; + } else { + ACSDK_ERROR(LX("initializeFailed").d("reason", "unableToCreateSoftwareInfoSender")); + return false; + } } /* @@ -296,57 +506,83 @@ bool DefaultClient::initialize( */ if (!m_directiveSequencer->addDirectiveHandler(m_speechSynthesizer)) { ACSDK_ERROR(LX("initializeFailed") - .d("reason", "unableToRegisterDirectiveHandler") - .d("directiveHandler", "SpeechSynthesizer")); + .d("reason", "unableToRegisterDirectiveHandler") + .d("directiveHandler", "SpeechSynthesizer")); return false; } if (!m_directiveSequencer->addDirectiveHandler(m_audioPlayer)) { ACSDK_ERROR(LX("initializeFailed") - .d("reason", "unableToRegisterDirectiveHandler") - .d("directiveHandler", "AudioPlayer")); + .d("reason", "unableToRegisterDirectiveHandler") + .d("directiveHandler", "AudioPlayer")); + return false; + } + + if (!m_directiveSequencer->addDirectiveHandler(m_externalMediaPlayer)) { + ACSDK_ERROR(LX("initializeFailed") + .d("reason", "unableToRegisterDirectiveHandler") + .d("directiveHandler", "ExternalMediaPlayer")); return false; } if (!m_directiveSequencer->addDirectiveHandler(m_audioInputProcessor)) { ACSDK_ERROR(LX("initializeFailed") - .d("reason", "unableToRegisterDirectiveHandler") - .d("directiveHandler", "AudioInputProcessor")); - return false; + .d("reason", "unableToRegisterDirectiveHandler") + .d("directiveHandler", "AudioInputProcessor")); + return false; } if (!m_directiveSequencer->addDirectiveHandler(m_alertsCapabilityAgent)) { ACSDK_ERROR(LX("initializeFailed") - .d("reason", "unableToRegisterDirectiveHandler") - .d("directiveHandler", "AlertsCapabilityAgent")); - return false; + .d("reason", "unableToRegisterDirectiveHandler") + .d("directiveHandler", "AlertsCapabilityAgent")); + return false; } if (!m_directiveSequencer->addDirectiveHandler(endpointHandler)) { ACSDK_ERROR(LX("initializeFailed") - .d("reason", "unableToRegisterDirectiveHandler") - .d("directiveHandler", "EndpointHandler")); - return false; + .d("reason", "unableToRegisterDirectiveHandler") + .d("directiveHandler", "EndpointHandler")); + return false; } if (!m_directiveSequencer->addDirectiveHandler(userInactivityMonitor)) { ACSDK_ERROR(LX("initializeFailed") - .d("reason", "unableToRegisterDirectiveHandler") - .d("directiveHandler", "UserInactivityMonitor")); - return false; + .d("reason", "unableToRegisterDirectiveHandler") + .d("directiveHandler", "UserInactivityMonitor")); + return false; + } + + if (!m_directiveSequencer->addDirectiveHandler(m_speakerManager)) { + ACSDK_ERROR(LX("initializeFailed") + .d("reason", "unableToRegisterDirectiveHandler") + .d("directiveHandler", "SpeakerManager")); + return false; + } + + if (isGuiSupported) { + if (!m_directiveSequencer->addDirectiveHandler(m_templateRuntime)) { + ACSDK_ERROR(LX("initializeFailed") + .d("reason", "unableToRegisterDirectiveHandler") + .d("directiveHandler", "TemplateRuntime")); + return false; + } } + if (!m_directiveSequencer->addDirectiveHandler(m_notificationsCapabilityAgent)) { + ACSDK_ERROR(LX("initializeFailed") + .d("reason", "unableToRegisterDirectiveHandler") + .d("directiveHandler", "NotificationsCapabilityAgent")); + return false; + } return true; } void DefaultClient::connect(const std::string& avsEndpoint) { - m_connectionManager->setAVSEndpoint(avsEndpoint); + if (!avsEndpoint.empty()) { + m_connectionManager->setAVSEndpoint(avsEndpoint); + } m_connectionManager->enable(); - /* - * TODO: Once we have a StateSynchronizer observer, only enable the alerts capability agent to send events once - * the StateSynchronizer has notified that the SynchronizeState event has been sent. - */ - m_alertsCapabilityAgent->enableSendEvents(); } void DefaultClient::disconnect() { @@ -354,78 +590,242 @@ void DefaultClient::disconnect() { } void DefaultClient::stopForegroundActivity() { - m_focusManager->stopForegroundActivity(); + m_audioFocusManager->stopForegroundActivity(); } void DefaultClient::addAlexaDialogStateObserver( - std::shared_ptr observer) { + std::shared_ptr observer) { m_dialogUXStateAggregator->addObserver(observer); } void DefaultClient::removeAlexaDialogStateObserver( - std::shared_ptr observer) { + std::shared_ptr observer) { m_dialogUXStateAggregator->removeObserver(observer); } void DefaultClient::addConnectionObserver( - std::shared_ptr observer) { + std::shared_ptr observer) { m_connectionManager->addConnectionStatusObserver(observer); } void DefaultClient::removeConnectionObserver( - std::shared_ptr observer) { + std::shared_ptr observer) { m_connectionManager->removeConnectionStatusObserver(observer); } +void DefaultClient::addAlertsObserver(std::shared_ptr observer) { + m_alertsCapabilityAgent->addObserver(observer); +} + +void DefaultClient::removeAlertsObserver(std::shared_ptr observer) { + m_alertsCapabilityAgent->removeObserver(observer); +} + +void DefaultClient::addAudioPlayerObserver( + std::shared_ptr observer) { + m_audioPlayer->addObserver(observer); +} + +void DefaultClient::removeAudioPlayerObserver( + std::shared_ptr observer) { + m_audioPlayer->removeObserver(observer); +} + +void DefaultClient::addTemplateRuntimeObserver( + std::shared_ptr observer) { + if (!m_templateRuntime) { + ACSDK_ERROR(LX("addTemplateRuntimeObserverFailed").d("reason", "guiNotSupported")); + return; + } + m_templateRuntime->addObserver(observer); +} + +void DefaultClient::removeTemplateRuntimeObserver( + std::shared_ptr observer) { + if (!m_templateRuntime) { + ACSDK_ERROR(LX("removeTemplateRuntimeObserverFailed").d("reason", "guiNotSupported")); + return; + } + m_templateRuntime->removeObserver(observer); +} + +void DefaultClient::TemplateRuntimeDisplayCardCleared() { + if (!m_templateRuntime) { + ACSDK_ERROR(LX("TemplateRuntimeDisplayCardClearedFailed").d("reason", "guiNotSupported")); + return; + } + m_templateRuntime->displayCardCleared(); +} + +void DefaultClient::addSettingObserver( + const std::string& key, + std::shared_ptr observer) { + m_settings->addSingleSettingObserver(key, observer); +} + +void DefaultClient::removeSettingObserver( + const std::string& key, + std::shared_ptr observer) { + m_settings->removeSingleSettingObserver(key, observer); +} + +void DefaultClient::addNotificationsObserver( + std::shared_ptr observer) { + m_notificationsCapabilityAgent->addObserver(observer); +} + +void DefaultClient::removeNotificationsObserver( + std::shared_ptr observer) { + m_notificationsCapabilityAgent->removeObserver(observer); +} + +void DefaultClient::changeSetting(const std::string& key, const std::string& value) { + m_settings->changeSetting(key, value); +} + +void DefaultClient::sendDefaultSettings() { + m_settings->sendDefaultSettings(); +} + +std::shared_ptr DefaultClient::getPlaybackRouter() const { + return m_playbackRouter; +} + +std::shared_ptr DefaultClient::getRegistrationManager() { + return m_registrationManager; +} + +void DefaultClient::addSpeakerManagerObserver( + std::shared_ptr observer) { + m_speakerManager->addSpeakerManagerObserver(observer); +} + +void DefaultClient::removeSpeakerManagerObserver( + std::shared_ptr observer) { + m_speakerManager->removeSpeakerManagerObserver(observer); +} + +std::shared_ptr DefaultClient::getSpeakerManager() { + return m_speakerManager; +} + +bool DefaultClient::setFirmwareVersion(avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion) { + { + std::lock_guard lock(m_softwareInfoSenderMutex); + + if (!m_softwareInfoSender) { + m_softwareInfoSender = capabilityAgents::system::SoftwareInfoSender::create( + firmwareVersion, true, nullptr, m_connectionManager, m_connectionManager, m_exceptionSender); + if (m_softwareInfoSender) { + return true; + } + + ACSDK_ERROR(LX("setFirmwareVersionFailed").d("reason", "unableToCreateSoftwareInfoSender")); + return false; + } + } + + return m_softwareInfoSender->setFirmwareVersion(firmwareVersion); +} + std::future DefaultClient::notifyOfWakeWord( - capabilityAgents::aip::AudioProvider wakeWordAudioProvider, - avsCommon::avs::AudioInputStream::Index beginIndex, - avsCommon::avs::AudioInputStream::Index endIndex, - std::string keyword) { + capabilityAgents::aip::AudioProvider wakeWordAudioProvider, + avsCommon::avs::AudioInputStream::Index beginIndex, + avsCommon::avs::AudioInputStream::Index endIndex, + std::string keyword, + const capabilityAgents::aip::ESPData& espData) { return m_audioInputProcessor->recognize( - wakeWordAudioProvider, capabilityAgents::aip::Initiator::WAKEWORD, beginIndex, endIndex, keyword); + wakeWordAudioProvider, capabilityAgents::aip::Initiator::WAKEWORD, beginIndex, endIndex, keyword, espData); } std::future DefaultClient::notifyOfTapToTalk( - capabilityAgents::aip::AudioProvider tapToTalkAudioProvider, - avsCommon::avs::AudioInputStream::Index beginIndex) { - return m_audioInputProcessor->recognize( - tapToTalkAudioProvider, capabilityAgents::aip::Initiator::TAP, beginIndex); + capabilityAgents::aip::AudioProvider tapToTalkAudioProvider, + avsCommon::avs::AudioInputStream::Index beginIndex) { + return m_audioInputProcessor->recognize(tapToTalkAudioProvider, capabilityAgents::aip::Initiator::TAP, beginIndex); } - std::future DefaultClient::notifyOfHoldToTalkStart(capabilityAgents::aip::AudioProvider holdToTalkAudioProvider) { - return m_audioInputProcessor->recognize( - holdToTalkAudioProvider, capabilityAgents::aip::Initiator::PRESS_AND_HOLD); + return m_audioInputProcessor->recognize(holdToTalkAudioProvider, capabilityAgents::aip::Initiator::PRESS_AND_HOLD); } std::future DefaultClient::notifyOfHoldToTalkEnd() { - return m_audioInputProcessor->stopCapture(); + return m_audioInputProcessor->stopCapture(); +} + +std::future DefaultClient::notifyOfTapToTalkEnd() { + return m_audioInputProcessor->stopCapture(); } DefaultClient::~DefaultClient() { if (m_directiveSequencer) { + ACSDK_DEBUG5(LX("DirectiveSequencerShutdown")); m_directiveSequencer->shutdown(); } - if (m_stateSynchronizer) { - m_stateSynchronizer->shutdown(); + if (m_speakerManager) { + ACSDK_DEBUG5(LX("SpeakerManagerShutdown")); + m_speakerManager->shutdown(); + } + if (m_templateRuntime) { + ACSDK_DEBUG5(LX("TemplateRuntimeShutdown")); + m_templateRuntime->shutdown(); } if (m_audioInputProcessor) { + ACSDK_DEBUG5(LX("AIPShutdown")); m_audioInputProcessor->shutdown(); } if (m_audioPlayer) { + ACSDK_DEBUG5(LX("AudioPlayerShutdown")); m_audioPlayer->shutdown(); } + if (m_externalMediaPlayer) { + ACSDK_DEBUG5(LX("ExternalMediaPlayerShutdown")); + m_externalMediaPlayer->shutdown(); + } if (m_speechSynthesizer) { + ACSDK_DEBUG5(LX("SpeechSynthesizerShutdown")); m_speechSynthesizer->shutdown(); } if (m_alertsCapabilityAgent) { + ACSDK_DEBUG5(LX("AlertsShutdown")); m_alertsCapabilityAgent->shutdown(); } + if (m_playbackController) { + ACSDK_DEBUG5(LX("PlaybackControllerShutdown")); + m_playbackController->shutdown(); + } + if (m_softwareInfoSender) { + ACSDK_DEBUG5(LX("SoftwareInfoShutdown")); + m_softwareInfoSender->shutdown(); + } + if (m_messageRouter) { + ACSDK_DEBUG5(LX("MessageRouterShutdown.")); + m_messageRouter->shutdown(); + } if (m_connectionManager) { + ACSDK_DEBUG5(LX("ConnectionManagerShutdown.")); m_connectionManager->shutdown(); } + if (m_certifiedSender) { + ACSDK_DEBUG5(LX("CertifiedSenderShutdown.")); + m_certifiedSender->shutdown(); + } + if (m_audioActivityTracker) { + ACSDK_DEBUG5(LX("AudioActivityTrackerShutdown.")); + m_audioActivityTracker->shutdown(); + } + if (m_visualActivityTracker) { + ACSDK_DEBUG5(LX("VisualActivityTrackerShutdown.")); + m_visualActivityTracker->shutdown(); + } + if (m_playbackRouter) { + ACSDK_DEBUG5(LX("PlaybackRouterShutdown.")); + m_playbackRouter->shutdown(); + } + if (m_notificationsCapabilityAgent) { + ACSDK_DEBUG5(LX("NotificationsShutdown.")); + m_notificationsCapabilityAgent->shutdown(); + } } -} // namespace defaultClient -} // namespace alexaClientSDK +} // namespace defaultClient +} // namespace alexaClientSDK diff --git a/ApplicationUtilities/Resources/Audio/CMakeLists.txt b/ApplicationUtilities/Resources/Audio/CMakeLists.txt new file mode 100644 index 0000000000..86d593304b --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/CMakeLists.txt @@ -0,0 +1,4 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) +project(AudioResources LANGUAGES CXX) + +add_subdirectory("src") diff --git a/ApplicationUtilities/Resources/Audio/include/Audio/AlertsAudioFactory.h b/ApplicationUtilities/Resources/Audio/include/Audio/AlertsAudioFactory.h new file mode 100644 index 0000000000..7e4c2a9a32 --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/include/Audio/AlertsAudioFactory.h @@ -0,0 +1,44 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_ALERTSAUDIOFACTORY_H_ +#define ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_ALERTSAUDIOFACTORY_H_ + +#include + +namespace alexaClientSDK { +namespace applicationUtilities { +namespace resources { +namespace audio { + +/** + * A class that delivers a stream to the audio data for the various Alerts. + */ +class AlertsAudioFactory : public avsCommon::sdkInterfaces::audio::AlertsAudioFactoryInterface { +public: + std::function()> alarmDefault() const override; + std::function()> alarmShort() const override; + std::function()> timerDefault() const override; + std::function()> timerShort() const override; + std::function()> reminderDefault() const override; + std::function()> reminderShort() const override; +}; + +} // namespace audio +} // namespace resources +} // namespace applicationUtilities +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_ALERTSAUDIOFACTORY_H_ diff --git a/ApplicationUtilities/Resources/Audio/include/Audio/AudioFactory.h b/ApplicationUtilities/Resources/Audio/include/Audio/AudioFactory.h new file mode 100644 index 0000000000..2412741bed --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/include/Audio/AudioFactory.h @@ -0,0 +1,43 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_AUDIOFACTORY_H_ +#define ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_AUDIOFACTORY_H_ + +#include + +#include +#include + +namespace alexaClientSDK { +namespace applicationUtilities { +namespace resources { +namespace audio { + +/** + * A class that constructs an object to create unique streams to the audio data for the Alerts. + */ +class AudioFactory : public avsCommon::sdkInterfaces::audio::AudioFactoryInterface { +public: + std::shared_ptr alerts() const override; + std::shared_ptr notifications() const override; +}; + +} // namespace audio +} // namespace resources +} // namespace applicationUtilities +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_AUDIOFACTORY_H_ diff --git a/ApplicationUtilities/Resources/Audio/include/Audio/Data/.clang-format b/ApplicationUtilities/Resources/Audio/include/Audio/Data/.clang-format new file mode 100644 index 0000000000..fc63453063 --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/include/Audio/Data/.clang-format @@ -0,0 +1,5 @@ +--- +Language: Cpp +BasedOnStyle: None +... + diff --git a/ApplicationUtilities/Resources/Audio/include/Audio/Data/create_header.bash b/ApplicationUtilities/Resources/Audio/include/Audio/Data/create_header.bash new file mode 100644 index 0000000000..d7a69b342d --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/include/Audio/Data/create_header.bash @@ -0,0 +1,69 @@ +#!/bin/bash + +# This is used to create a header file that contains binary data from a file that can be used in this library. The +# files are downloaded from https://developer.amazon.com/docs/alexa-voice-service/ux-design-overview.html#sounds. + +if [ "$#" -ne 2 ] || ! [ -f "${1}" ] || [ -f "${2}" ]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +FILE=${1} +FULL_OUTPUT=${2} +OUTPUT_FILE=$(basename ${FULL_OUTPUT}) +GUARD=`echo "ALEXA_CLIENT_SDK_${FULL_OUTPUT}" | tr '[:lower:]' '[:upper:]' | sed -e 's/[^a-zA-Z0-9\]/_/g' | sed -e 's/$/_/g'` + +cat < ${FULL_OUTPUT} +/* + * ${OUTPUT_FILE} + * + * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/* + * ****************** + * ALEXA AUDIO ASSETS + * ****************** + * + * Copyright 2017 Amazon.com, Inc. or its affiliates ("Amazon"). + * All Rights Reserved. + * + * These materials are licensed to you as "Alexa Materials" under the Alexa Voice + * Service Agreement, which is currently available at + * https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/support/terms-and-agreements. + */ +EOF + +echo "" >> ${FULL_OUTPUT} +echo "#ifndef ${GUARD}" >> ${FULL_OUTPUT} +echo "#define ${GUARD}" >> ${FULL_OUTPUT} +echo "" >> ${FULL_OUTPUT} +echo "namespace alexaClientSDK {" >> ${FULL_OUTPUT} +echo "namespace applicationUtilities {" >> ${FULL_OUTPUT} +echo "namespace resources {" >> ${FULL_OUTPUT} +echo "namespace audio {" >> ${FULL_OUTPUT} +echo "namespace data {" >> ${FULL_OUTPUT} +echo "" >> ${FULL_OUTPUT} +echo "// clang-format off" >> ${FULL_OUTPUT} +xxd -i ${FILE} >> ${FULL_OUTPUT} +echo "// clang-format on" >> ${FULL_OUTPUT} +echo "" >> ${FULL_OUTPUT} +echo "#endif // ${GUARD}" >> ${FULL_OUTPUT} +echo "" >> ${FULL_OUTPUT} +echo "} // namespace data" >> ${FULL_OUTPUT} +echo "} // namespace audio" >> ${FULL_OUTPUT} +echo "} // namespace resources" >> ${FULL_OUTPUT} +echo "} // namespace applicationUtilities" >> ${FULL_OUTPUT} +echo "} // namespace alexaClientSDK" >> ${FULL_OUTPUT} + diff --git a/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_alerts_notification_01._TTH_.mp3.h b/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_alerts_notification_01._TTH_.mp3.h new file mode 100644 index 0000000000..d1910f7fbd --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_alerts_notification_01._TTH_.mp3.h @@ -0,0 +1,3905 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/* + * ****************** + * ALEXA AUDIO ASSETS + * ****************** + * + * Copyright 2018 Amazon.com, Inc. or its affiliates ("Amazon"). + * All Rights Reserved. + * + * These materials are licensed to you as "Alexa Materials" under the Alexa Voice + * Service Agreement, which is currently available at + * https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/support/terms-and-agreements. + */ + +#ifndef ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_ALERTS_NOTIFICATION_01__TTH__MP3_H_ +#define ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_ALERTS_NOTIFICATION_01__TTH__MP3_H_ + +namespace alexaClientSDK { +namespace applicationUtilities { +namespace resources { +namespace audio { +namespace data { + +// clang-format off +unsigned char med_alerts_notification_01__TTH__mp3[] = { + 0x49, 0x44, 0x33, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x54, 0x45, + 0x4e, 0x43, 0x00, 0x00, 0x00, 0x15, 0x20, 0x00, 0x00, 0x53, 0x6f, 0x75, + 0x6e, 0x64, 0x20, 0x47, 0x72, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x33, + 0x2e, 0x35, 0x2e, 0x36, 0x00, 0xff, 0xfb, 0xd4, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xd4, 0x60, 0x00, 0x0d, 0xd6, + 0x7c, 0x74, 0xb4, 0x81, 0x8f, 0x63, 0x70, 0x66, 0x2e, 0x06, 0x61, 0x08, + 0xc3, 0x6e, 0x22, 0x21, 0xd6, 0xd8, 0x47, 0xe1, 0xed, 0xc1, 0x7f, 0x38, + 0xdb, 0x80, 0x23, 0x0d, 0xb8, 0x0a, 0x12, 0x93, 0xd3, 0x02, 0x03, 0xa6, + 0xde, 0x6f, 0x8b, 0x16, 0x27, 0x3f, 0x53, 0x8b, 0x78, 0xff, 0x7b, 0x3a, + 0x91, 0x84, 0x7a, 0xd9, 0x9c, 0x4e, 0x72, 0x76, 0x26, 0x0a, 0x02, 0x50, + 0x2e, 0x0c, 0xac, 0x43, 0xd0, 0x9d, 0x38, 0xdf, 0xb0, 0x2e, 0x49, 0xd9, + 0x97, 0x18, 0xbe, 0x0b, 0x61, 0xf4, 0x74, 0x35, 0xb9, 0xa9, 0x0e, 0x86, + 0x4c, 0xb1, 0xb3, 0xd5, 0xfc, 0x7f, 0x0e, 0xca, 0xca, 0xef, 0x6c, 0x39, + 0x4a, 0x39, 0xbf, 0x4b, 0x2c, 0x72, 0x8b, 0x2b, 0x65, 0x95, 0x64, 0x43, + 0x37, 0x24, 0x16, 0x1b, 0x4c, 0x4c, 0x84, 0xc1, 0x0c, 0x4b, 0x7e, 0xf0, + 0x1e, 0x42, 0xfe, 0x18, 0x75, 0x10, 0xc4, 0xb3, 0xff, 0xa2, 0xf7, 0xf2, + 0xa6, 0x6f, 0x95, 0x01, 0xa1, 0xa5, 0x1b, 0x3f, 0x2e, 0x00, 0x20, 0x1c, + 0x3c, 0x38, 0x30, 0x33, 0x27, 0xc7, 0x11, 0x2c, 0x77, 0x7c, 0xae, 0xad, + 0xf3, 0x83, 0xc7, 0x28, 0x70, 0x4c, 0x73, 0x8a, 0x82, 0x22, 0x29, 0xdf, + 0x38, 0x3c, 0x59, 0x72, 0x59, 0x3d, 0x7c, 0x67, 0x11, 0x2f, 0xff, 0xa2, + 0xc7, 0x3a, 0xec, 0x32, 0x7f, 0xcb, 0x1d, 0x25, 0x9f, 0xfb, 0x06, 0x02, + 0x40, 0xef, 0x6a, 0x99, 0x9f, 0xfc, 0x27, 0x6b, 0xce, 0x0c, 0x1c, 0x60, + 0x40, 0x1d, 0x1c, 0x58, 0x60, 0x66, 0x7e, 0xbd, 0xf6, 0x1c, 0xa6, 0xfb, + 0xe7, 0x07, 0x90, 0x99, 0xd9, 0x65, 0x70, 0xfd, 0xa2, 0x41, 0xe3, 0x92, + 0xc4, 0x4d, 0xb8, 0xb1, 0xca, 0x2c, 0x60, 0xe2, 0x22, 0x00, 0x47, 0xfb, + 0x1c, 0xe7, 0x3c, 0xf4, 0xcf, 0x40, 0xf0, 0x19, 0x32, 0x7b, 0x87, 0xa7, + 0x8e, 0x4d, 0x3e, 0x61, 0x08, 0xc8, 0xef, 0x77, 0xe2, 0x33, 0xdb, 0x21, + 0x91, 0x0f, 0x71, 0x11, 0xdf, 0xf6, 0xcf, 0xff, 0xc4, 0xd0, 0xa9, 0xee, + 0x7d, 0x42, 0x73, 0x85, 0xcd, 0x13, 0xa7, 0xb9, 0xe8, 0x9a, 0x16, 0x89, + 0xfc, 0x4d, 0xfa, 0x7c, 0x27, 0x3f, 0x73, 0x7f, 0xff, 0xaf, 0xa2, 0x13, + 0x9f, 0x97, 0xfe, 0xe2, 0xf2, 0xf8, 0x94, 0xc9, 0xcd, 0xdf, 0x77, 0x77, + 0x7d, 0xdd, 0xdf, 0x88, 0x00, 0x9f, 0xa1, 0x39, 0xfb, 0xe9, 0xbc, 0x4a, + 0xe8, 0x11, 0x0b, 0xd0, 0xaa, 0x71, 0x11, 0x11, 0x14, 0x01, 0x10, 0x00, + 0x01, 0x43, 0xba, 0xc0, 0x4c, 0xcd, 0x17, 0x33, 0x48, 0xf6, 0x11, 0x95, + 0x4b, 0x6e, 0x9f, 0x39, 0xa0, 0xd5, 0x87, 0x2b, 0xb5, 0x87, 0x62, 0xa8, + 0xe4, 0xcc, 0x5b, 0xc6, 0x40, 0x5d, 0x97, 0x24, 0xbf, 0x68, 0xee, 0xd9, + 0xa3, 0x28, 0x4b, 0x58, 0x41, 0x82, 0x18, 0x02, 0x05, 0x5a, 0x37, 0x20, + 0xb8, 0x93, 0x53, 0x79, 0x00, 0xea, 0x22, 0x9d, 0x38, 0x3a, 0xc9, 0x8c, + 0xd7, 0x9b, 0x70, 0xa2, 0xd6, 0x89, 0x7f, 0x1d, 0x84, 0xb3, 0x77, 0xd7, + 0xaa, 0x69, 0xae, 0x46, 0xb1, 0x2b, 0x8a, 0x5c, 0x97, 0xc4, 0xdf, 0x69, + 0xb8, 0x13, 0x54, 0x6a, 0xb9, 0x14, 0x18, 0x4e, 0x28, 0x55, 0x68, 0x7b, + 0x73, 0xfb, 0x21, 0x97, 0x43, 0x4f, 0xe5, 0xca, 0x81, 0x76, 0x5c, 0x09, + 0xd1, 0xbc, 0x7a, 0x9d, 0x08, 0x72, 0x65, 0xc0, 0xff, 0x37, 0x49, 0x03, + 0x6a, 0x8c, 0xce, 0x4a, 0x19, 0x27, 0x1b, 0x03, 0x51, 0x34, 0x51, 0xaa, + 0x4b, 0x01, 0x7b, 0x73, 0x2f, 0x75, 0xf2, 0x19, 0xec, 0x07, 0x59, 0x72, + 0x8a, 0x68, 0xab, 0xdd, 0x97, 0x61, 0x38, 0x47, 0xc1, 0x3a, 0x0d, 0xc4, + 0x22, 0x16, 0x4a, 0xa3, 0x74, 0xc3, 0x47, 0x33, 0xd0, 0xf4, 0x2f, 0x8f, + 0x92, 0x8a, 0xc4, 0x09, 0xe6, 0xb2, 0x42, 0x0b, 0x6a, 0x20, 0xe3, 0x2d, + 0x11, 0xeb, 0xe7, 0xf2, 0xae, 0x22, 0x8e, 0xca, 0x13, 0x01, 0x0f, 0x2a, + 0x19, 0xd7, 0x2f, 0xcc, 0xb6, 0x84, 0x3d, 0x48, 0xa5, 0x7e, 0xb0, 0xd4, + 0x78, 0x0e, 0x05, 0x84, 0xb1, 0x9b, 0x3a, 0x89, 0xf2, 0x1c, 0x98, 0x6e, + 0x39, 0xa3, 0xa6, 0x59, 0x5b, 0x9b, 0x14, 0xaf, 0x21, 0x1b, 0x70, 0x5b, + 0x63, 0x20, 0xd3, 0x26, 0x86, 0x91, 0x68, 0x42, 0xa9, 0x48, 0xe4, 0x69, + 0x32, 0xb7, 0x26, 0x54, 0xc6, 0x01, 0x04, 0x4e, 0x8e, 0x03, 0xa4, 0xd2, + 0x82, 0xb9, 0x69, 0x5e, 0x4f, 0x27, 0x91, 0x2e, 0x4a, 0x85, 0x22, 0x25, + 0xc5, 0x3a, 0x5f, 0x89, 0xe9, 0xe4, 0x99, 0x7c, 0xa7, 0x95, 0x95, 0xf0, + 0xd5, 0x6f, 0x65, 0xfe, 0x7b, 0x03, 0x92, 0x10, 0xfa, 0x03, 0x31, 0x9f, + 0x10, 0xaf, 0x4f, 0x12, 0x7e, 0xbd, 0xef, 0xd7, 0xdd, 0xc4, 0xa7, 0xdb, + 0xbf, 0xac, 0xcf, 0x8d, 0xff, 0xdc, 0xe7, 0xcc, 0xbc, 0xbd, 0x5b, 0xed, + 0x4e, 0x2f, 0xb9, 0x91, 0x72, 0x91, 0xd2, 0xcb, 0xb2, 0xf4, 0x8e, 0x15, + 0x90, 0xa7, 0x29, 0x35, 0x84, 0xde, 0x59, 0x75, 0xf4, 0xb9, 0x71, 0xf7, + 0xc8, 0xc9, 0xca, 0x4a, 0x44, 0x77, 0x96, 0xc5, 0x65, 0x32, 0xf6, 0x9d, + 0x30, 0x88, 0xc9, 0x69, 0xed, 0x34, 0x3f, 0xdd, 0xee, 0xd5, 0x08, 0xce, + 0xef, 0x1f, 0xa4, 0x87, 0xfd, 0xc4, 0x9a, 0x39, 0xe1, 0x7c, 0xf0, 0xea, + 0x4f, 0x30, 0xb6, 0xa9, 0xd1, 0x40, 0xd3, 0x73, 0xab, 0x62, 0xe2, 0x2c, + 0x04, 0xf3, 0x61, 0x51, 0x0d, 0xbb, 0xaa, 0xb8, 0x70, 0x42, 0xaa, 0x16, + 0x4a, 0x0a, 0xb4, 0x85, 0x19, 0x62, 0xb7, 0x10, 0x4a, 0x42, 0x05, 0x1c, + 0x7f, 0xd9, 0x61, 0x30, 0x18, 0x72, 0x66, 0x6d, 0xa7, 0xa0, 0x15, 0xc7, + 0x87, 0x92, 0x69, 0x0d, 0xa3, 0xff, 0xfb, 0xd4, 0x60, 0x1a, 0x8d, 0xd8, + 0x87, 0x76, 0x36, 0x01, 0xf8, 0x7b, 0x70, 0x61, 0x4d, 0xd6, 0xd1, 0x08, + 0xc3, 0x6e, 0x60, 0xc1, 0xd6, 0xda, 0x26, 0x61, 0xed, 0xc1, 0x80, 0xb4, + 0x9b, 0x88, 0x13, 0x0d, 0xb9, 0xb0, 0x71, 0x7b, 0xe8, 0x19, 0x1a, 0xe8, + 0x81, 0x5b, 0x56, 0xbb, 0x94, 0xc4, 0x6a, 0xbc, 0xb1, 0x9c, 0x4b, 0x68, + 0xa1, 0xfa, 0x07, 0x52, 0x72, 0x4d, 0x2b, 0xab, 0xc7, 0x25, 0x6b, 0x2e, + 0x96, 0x6a, 0x4b, 0x16, 0x5d, 0xa9, 0x52, 0x8c, 0xce, 0x4d, 0x0a, 0x73, + 0x05, 0x4a, 0x9b, 0x32, 0x0d, 0xd3, 0x5e, 0x44, 0x42, 0xfe, 0x57, 0x4d, + 0x66, 0x11, 0x77, 0x34, 0x55, 0x4a, 0x7b, 0xa7, 0x91, 0x6b, 0xb2, 0x76, + 0xd0, 0x56, 0xa7, 0xd2, 0x85, 0xbc, 0xf0, 0x06, 0xf1, 0xf8, 0xd8, 0xa1, + 0x3f, 0xe0, 0x23, 0xa1, 0xa3, 0xd0, 0xd3, 0xf4, 0x7e, 0x19, 0x28, 0xb6, + 0xb3, 0x9c, 0xca, 0x21, 0xef, 0xd5, 0x86, 0x39, 0x96, 0x69, 0xba, 0x54, + 0x18, 0x09, 0xb2, 0xdc, 0x9a, 0x3e, 0x8e, 0xb3, 0xb1, 0xc5, 0x28, 0x4f, + 0x8b, 0xe2, 0x45, 0xd1, 0x7a, 0x39, 0xcc, 0xa3, 0x91, 0x2a, 0x7d, 0x99, + 0xec, 0xc7, 0x18, 0x69, 0x95, 0xc8, 0x83, 0x40, 0xb8, 0x10, 0x95, 0x73, + 0x3a, 0xe1, 0x46, 0x39, 0x94, 0x45, 0x52, 0xda, 0x6d, 0x81, 0xb4, 0x55, + 0x32, 0x1e, 0xc5, 0x6a, 0x16, 0x7b, 0x2a, 0x16, 0x98, 0x52, 0x30, 0x15, + 0x44, 0x89, 0xb4, 0xfd, 0x3e, 0x14, 0x49, 0xe5, 0xf2, 0x7e, 0x73, 0x17, + 0xe8, 0x86, 0x4a, 0x84, 0xe6, 0x3a, 0x5e, 0xaa, 0x98, 0x4f, 0x47, 0x34, + 0xa4, 0x33, 0xf1, 0x7d, 0x81, 0x5a, 0xdb, 0x44, 0x29, 0xe3, 0x5a, 0x75, + 0xa9, 0x98, 0xeb, 0x66, 0x4d, 0x2e, 0xd7, 0xd0, 0x67, 0x22, 0x5c, 0xc7, + 0x5e, 0x4e, 0x2e, 0x08, 0x3a, 0x00, 0xd7, 0x5d, 0xc8, 0x80, 0x0d, 0x3f, + 0xd7, 0x3f, 0xdc, 0x37, 0xf0, 0x79, 0x4b, 0x9a, 0x94, 0x4c, 0x4b, 0xd1, + 0xda, 0x9f, 0xd4, 0x51, 0x5f, 0xc3, 0x8a, 0x96, 0xff, 0x73, 0x71, 0xfb, + 0x79, 0xde, 0xfd, 0xee, 0xd3, 0xff, 0xc8, 0xf4, 0xec, 0x88, 0x64, 0x8f, + 0xf5, 0x8b, 0x2a, 0x56, 0x1a, 0xfb, 0x91, 0xc8, 0x6b, 0x51, 0x24, 0x8f, + 0xd8, 0xf9, 0x3c, 0x93, 0x9f, 0xce, 0x93, 0x7c, 0xf3, 0x34, 0xb0, 0xe5, + 0xc7, 0xbe, 0x5e, 0x64, 0xc7, 0x95, 0xcd, 0x77, 0x2c, 0xa3, 0x6e, 0x2e, + 0x4d, 0x86, 0x18, 0xcb, 0x33, 0xaf, 0x9e, 0x59, 0xf9, 0x1f, 0xb1, 0x1e, + 0x67, 0x54, 0x6e, 0x17, 0xcf, 0x13, 0x54, 0xc7, 0x9b, 0x3d, 0x30, 0xd2, + 0x23, 0xe3, 0xe1, 0xa4, 0x00, 0xa1, 0x80, 0xe5, 0xc3, 0xb2, 0xa1, 0x7a, + 0x38, 0x1e, 0x70, 0xe0, 0x30, 0x15, 0x35, 0x56, 0x15, 0xcc, 0x55, 0x0b, + 0x7e, 0x02, 0x22, 0x49, 0xaa, 0x52, 0xf6, 0x2b, 0x6c, 0x61, 0xe6, 0x19, + 0x22, 0xc6, 0x4d, 0x92, 0xca, 0xa5, 0x9b, 0x92, 0xa0, 0xa4, 0x4f, 0x16, + 0x42, 0x95, 0x14, 0x0d, 0x1d, 0xd2, 0xe9, 0x8c, 0xa9, 0x36, 0x8a, 0xc4, + 0x9d, 0x46, 0xe7, 0x1c, 0x92, 0xbb, 0xed, 0xa3, 0xd2, 0xd8, 0xa3, 0x90, + 0x5d, 0xde, 0xbf, 0xfa, 0x7e, 0xa3, 0x57, 0x5b, 0x75, 0x0d, 0x8d, 0xeb, + 0x2b, 0xd7, 0xee, 0xd0, 0xf8, 0x87, 0xd1, 0xb6, 0xde, 0x9c, 0x48, 0xa9, + 0xcc, 0x24, 0xb3, 0x62, 0xe5, 0xcd, 0xa0, 0xe4, 0x70, 0x2e, 0xa9, 0x48, + 0xc5, 0xc9, 0x2a, 0xfe, 0x1b, 0x13, 0x1a, 0x79, 0x88, 0x7c, 0x1f, 0xe5, + 0xf0, 0xd0, 0x3a, 0x8f, 0x46, 0x77, 0x47, 0x29, 0x8e, 0xa7, 0xd1, 0x0f, + 0x7a, 0x75, 0x60, 0xd0, 0x3f, 0xd2, 0xcb, 0x28, 0x52, 0x71, 0x38, 0x87, + 0x9f, 0xc7, 0xed, 0x5b, 0x8a, 0x95, 0x62, 0xca, 0x59, 0x64, 0x84, 0x21, + 0x6e, 0x66, 0xe2, 0x39, 0x56, 0xa0, 0x6a, 0x71, 0x87, 0x17, 0x68, 0x71, + 0xcc, 0x67, 0xa4, 0x12, 0xd6, 0x57, 0xa0, 0xdb, 0x88, 0x53, 0xb6, 0x49, + 0x4e, 0x43, 0xe5, 0x4e, 0xe4, 0x97, 0x82, 0x3d, 0xd5, 0x4b, 0xce, 0x46, + 0x7a, 0x81, 0x46, 0x8e, 0x3c, 0x1e, 0x27, 0xd5, 0xa8, 0x07, 0xcc, 0x10, + 0x9a, 0xe2, 0xa4, 0xd4, 0x51, 0x18, 0x0f, 0x13, 0xf1, 0x2e, 0xb9, 0x3a, + 0xdb, 0xcd, 0xf4, 0x2d, 0xd2, 0x22, 0x0c, 0x24, 0xd3, 0x82, 0xbd, 0x38, + 0xc8, 0x88, 0x7d, 0x54, 0x73, 0xc6, 0xe5, 0x6c, 0x66, 0x58, 0x6a, 0x95, + 0x85, 0xa6, 0x49, 0x5f, 0xc3, 0x55, 0xb1, 0x1c, 0xcc, 0x6e, 0x4f, 0x5b, + 0x15, 0x49, 0xf8, 0x2f, 0xd1, 0x4f, 0x18, 0xe3, 0x8c, 0x01, 0xbd, 0xfc, + 0xb5, 0x5d, 0xd6, 0x88, 0x7c, 0xa1, 0xca, 0xa4, 0x29, 0x89, 0x53, 0x4f, + 0xde, 0x40, 0x27, 0x52, 0xc6, 0xcd, 0x3f, 0x04, 0x96, 0x74, 0x24, 0xdb, + 0x7f, 0x67, 0xcf, 0xc7, 0x9f, 0xfc, 0x3c, 0xb9, 0x95, 0xfe, 0x34, 0xef, + 0x99, 0xca, 0xdc, 0xcb, 0xc8, 0xa2, 0xd9, 0xec, 0x53, 0x4c, 0xce, 0xb4, + 0x84, 0xeb, 0xe7, 0x91, 0x11, 0x3f, 0x3d, 0xdf, 0xcb, 0x5b, 0x28, 0x93, + 0xb4, 0xe6, 0x7a, 0x99, 0xed, 0xe7, 0xf2, 0x43, 0xb9, 0x12, 0x95, 0x47, + 0xb9, 0xfb, 0xfe, 0x47, 0x4d, 0x48, 0xbb, 0xbb, 0x52, 0x86, 0x2c, 0xa3, + 0x52, 0x4d, 0xc6, 0xef, 0x61, 0x9f, 0xa8, 0x45, 0xea, 0x00, 0x2d, 0x00, + 0x00, 0x7b, 0xf5, 0xe6, 0x9e, 0x44, 0x6f, 0x10, 0xc6, 0xf9, 0x08, 0x73, + 0xd5, 0xc7, 0x71, 0x44, 0x70, 0x0b, 0x06, 0x60, 0x18, 0xbd, 0x1b, 0x81, + 0x77, 0x10, 0x51, 0xec, 0x88, 0xb7, 0x78, 0xc2, 0xc3, 0xc6, 0x90, 0xe3, + 0x2f, 0x43, 0xe4, 0xf1, 0x61, 0x91, 0x84, 0x9f, 0x19, 0x3b, 0xa0, 0xb9, + 0xd5, 0x30, 0x55, 0x29, 0xd6, 0xff, 0xfb, 0xd4, 0x60, 0x1c, 0x00, 0x08, + 0x79, 0x75, 0xb7, 0xb5, 0x6f, 0x00, 0x00, 0x5c, 0x02, 0xb6, 0xf0, 0xa5, + 0x8c, 0x00, 0x5f, 0xf6, 0x0d, 0x39, 0xb9, 0xda, 0x80, 0x01, 0xf1, 0xaf, + 0xa6, 0x37, 0x35, 0x20, 0x00, 0x88, 0xca, 0x84, 0xb9, 0x0a, 0x79, 0x24, + 0x13, 0xe4, 0xc2, 0x52, 0xce, 0xaf, 0x84, 0xd3, 0x51, 0xe5, 0x63, 0x65, + 0xea, 0x0a, 0x8c, 0xac, 0xa9, 0x11, 0xd2, 0x09, 0x91, 0xa5, 0xd3, 0xc0, + 0xbe, 0x9f, 0x6b, 0x7f, 0x4d, 0x95, 0xd9, 0x5e, 0x4f, 0xfc, 0xa2, 0xcd, + 0xae, 0x6f, 0x3f, 0xaf, 0x7e, 0x66, 0x2b, 0x7a, 0x72, 0x7e, 0x59, 0x5a, + 0x0e, 0x8d, 0xda, 0x9f, 0x9f, 0x7d, 0x64, 0xb7, 0xe5, 0x19, 0x45, 0xe5, + 0xf2, 0xd9, 0xda, 0x2a, 0xce, 0xfc, 0xb3, 0x28, 0x9c, 0xc4, 0x2a, 0x55, + 0x0d, 0x4a, 0xa6, 0x69, 0x1f, 0xeb, 0xf8, 0xc5, 0x68, 0x2a, 0xba, 0xd6, + 0xe5, 0x8f, 0xf3, 0xf7, 0x20, 0x96, 0x5f, 0x98, 0xaf, 0x3f, 0x42, 0xe9, + 0xc7, 0x6f, 0xc7, 0x1c, 0x9c, 0xe6, 0x3b, 0x3e, 0xfe, 0xc3, 0x51, 0x8e, + 0x40, 0x71, 0x39, 0x63, 0xbb, 0x0e, 0x4a, 0x2d, 0xd2, 0x4b, 0x5f, 0xe8, + 0xee, 0xe5, 0x94, 0x91, 0xab, 0x1a, 0xdd, 0x2c, 0x72, 0x32, 0xfc, 0x67, + 0x28, 0x96, 0xc8, 0xde, 0x1e, 0xdb, 0x94, 0xc8, 0x5f, 0x5a, 0x29, 0x65, + 0x04, 0x42, 0x21, 0x43, 0x1d, 0x91, 0xd4, 0xca, 0xdc, 0xe3, 0x8d, 0x22, + 0x8e, 0xf2, 0x57, 0x0e, 0x5e, 0xa9, 0x2b, 0xa4, 0xbb, 0x1f, 0x88, 0x41, + 0xd2, 0x87, 0x87, 0xb4, 0xb4, 0xcf, 0xc4, 0x0d, 0x18, 0x9a, 0xbd, 0x24, + 0xb3, 0x25, 0x9d, 0xaf, 0x76, 0x8a, 0xfd, 0x1f, 0xcd, 0x50, 0x44, 0xf7, + 0x03, 0x4e, 0xde, 0xaf, 0x22, 0x91, 0x52, 0x44, 0xab, 0xd2, 0xfc, 0x66, + 0xe6, 0x16, 0x68, 0x6f, 0x83, 0x82, 0x28, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x58, 0xeb, 0x5f, 0xff, 0xad, 0xcd, 0x8a, 0xa3, 0x05, 0xa0, 0x25, 0x87, + 0xb4, 0xc6, 0x30, 0xfa, 0xb5, 0x48, 0x1d, 0xb1, 0x4a, 0xda, 0xc7, 0x98, + 0xbf, 0x9b, 0xe7, 0x3b, 0xf9, 0xfc, 0xd5, 0xfe, 0xee, 0x35, 0x7f, 0xa9, + 0xdf, 0xfa, 0x33, 0x66, 0x8f, 0xd6, 0xdf, 0x85, 0x13, 0x3b, 0xef, 0xfa, + 0x1f, 0x5f, 0x85, 0xde, 0xac, 0x47, 0xe9, 0xb5, 0xcc, 0xb5, 0xbb, 0xeb, + 0xcf, 0xf9, 0x3f, 0x42, 0xfb, 0xe8, 0xd5, 0xf8, 0xc9, 0xf8, 0x9d, 0xea, + 0x91, 0x64, 0x2a, 0x54, 0x18, 0xfb, 0x8c, 0xe7, 0xfd, 0x7c, 0xa5, 0x6d, + 0x40, 0x28, 0x16, 0xcb, 0x45, 0xa8, 0x5a, 0x2d, 0x16, 0x8b, 0x45, 0xa2, + 0xd1, 0x68, 0x20, 0x24, 0x30, 0x68, 0x08, 0x31, 0xa0, 0x94, 0x30, 0xc0, + 0x3b, 0x31, 0x05, 0xa4, 0x3b, 0x70, 0x96, 0x5f, 0xb0, 0x21, 0x8b, 0x21, + 0x4b, 0x24, 0x05, 0x33, 0x67, 0xae, 0x3d, 0x93, 0xf2, 0xc3, 0x11, 0x08, + 0xc3, 0x22, 0x03, 0x23, 0x53, 0xd8, 0x53, 0x19, 0x8d, 0x12, 0xa2, 0x60, + 0x6e, 0xa4, 0x50, 0x18, 0x10, 0x62, 0x06, 0x2e, 0x10, 0x81, 0x86, 0x00, + 0xa8, 0x21, 0x03, 0x1c, 0x84, 0x40, 0xc0, 0x60, 0xd0, 0xa0, 0x1c, 0x06, + 0x90, 0xc0, 0xa1, 0x04, 0x0b, 0x1c, 0xf8, 0x5d, 0x40, 0x80, 0x81, 0x70, + 0x00, 0x60, 0x91, 0x78, 0x0d, 0x2e, 0x83, 0x04, 0xfc, 0x78, 0x0b, 0x4c, + 0x19, 0xf1, 0xde, 0x27, 0x70, 0x24, 0x45, 0x00, 0x00, 0x78, 0x94, 0x40, + 0x80, 0x08, 0x1b, 0xbb, 0xf2, 0x91, 0x10, 0x38, 0x45, 0x0d, 0x08, 0x20, + 0x06, 0x00, 0x02, 0xf9, 0x87, 0x30, 0x2c, 0xac, 0x68, 0x8a, 0xbf, 0xe6, + 0xa6, 0xe8, 0x93, 0xee, 0x44, 0xca, 0x02, 0x7d, 0x2b, 0x87, 0xa2, 0x23, + 0xe1, 0x0a, 0x05, 0xcf, 0x0b, 0x33, 0xfc, 0x9c, 0x20, 0x88, 0x9b, 0x97, + 0xcf, 0xa0, 0x7c, 0x4b, 0x47, 0x69, 0x05, 0x10, 0x90, 0x82, 0x11, 0x40, + 0xdb, 0xcb, 0x9f, 0xf9, 0x70, 0xd0, 0x9c, 0x44, 0xdc, 0xcd, 0x39, 0xf2, + 0xe0, 0x83, 0xc7, 0x69, 0x3e, 0x33, 0x24, 0x48, 0x6b, 0x8a, 0xd8, 0x88, + 0x08, 0x4c, 0x44, 0x3f, 0xfe, 0xc6, 0x8b, 0x4c, 0xbe, 0x92, 0x0a, 0x41, + 0x8d, 0x16, 0xe4, 0x54, 0x86, 0x93, 0xa4, 0xa0, 0xcc, 0x1c, 0x17, 0x39, + 0x6c, 0x73, 0xcb, 0xa0, 0xd8, 0x30, 0x03, 0x80, 0x03, 0x31, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x93, 0x87, 0x0d, 0x06, 0x4d, 0x23, + 0x44, 0xe7, 0x0f, 0xa0, 0x01, 0x80, 0x08, 0x0a, 0x07, 0x03, 0x81, 0xe0, + 0xfc, 0x7e, 0x3f, 0x03, 0x81, 0xb7, 0x9a, 0xe7, 0x87, 0x87, 0x04, 0x9a, + 0xd0, 0xbd, 0xec, 0x52, 0xda, 0x00, 0x0f, 0x7b, 0x5f, 0xf7, 0xdd, 0xfb, + 0x66, 0x0d, 0x7b, 0x00, 0xf3, 0x16, 0x81, 0x0b, 0x10, 0xee, 0x1b, 0xe0, + 0x82, 0x84, 0x20, 0xc0, 0x2b, 0x12, 0x3c, 0x9f, 0x33, 0x37, 0x48, 0xf3, + 0xfd, 0xca, 0xe6, 0x0c, 0x68, 0x64, 0x4d, 0x2c, 0xcc, 0xd7, 0xfb, 0xf7, + 0x19, 0xb2, 0x28, 0x6c, 0x4e, 0x4d, 0x7f, 0xfd, 0xa6, 0xc6, 0x87, 0x11, + 0x2f, 0x93, 0xa9, 0x7f, 0xdf, 0xf3, 0x03, 0x73, 0xe5, 0xf6, 0x51, 0x51, + 0x3f, 0xff, 0xff, 0x34, 0x7a, 0x4b, 0x30, 0x3d, 0x33, 0x2f, 0xff, 0xff, + 0xff, 0xe7, 0xcc, 0x10, 0x62, 0xfa, 0x76, 0x5a, 0x87, 0x2c, 0x41, 0x71, + 0xdf, 0xff, 0xff, 0xff, 0xff, 0x44, 0x06, 0x0e, 0x55, 0x02, 0x3b, 0x62, + 0x00, 0xc0, 0x8c, 0x0a, 0x00, 0xc7, 0x0e, 0x68, 0xec, 0x4f, 0x06, 0x32, + 0x68, 0x2c, 0x64, 0xde, 0x52, 0xa6, 0x15, 0x40, 0x3e, 0x42, 0x03, 0x06, + 0x01, 0x21, 0x56, 0x61, 0xfc, 0x7a, 0x66, 0xbe, 0x2f, 0x7a, 0x64, 0x64, + 0x32, 0xe6, 0x20, 0x80, 0xca, 0xff, 0xfb, 0xd4, 0x60, 0x16, 0x0c, 0x88, + 0x07, 0x69, 0x4a, 0x1f, 0x7b, 0x20, 0x02, 0x52, 0x0c, 0xb9, 0x8a, 0xec, + 0xb4, 0x01, 0x24, 0x89, 0xc1, 0x16, 0x6f, 0xeb, 0x4d, 0xc1, 0x87, 0xb4, + 0x22, 0x05, 0xe5, 0x35, 0xb8, 0x60, 0x06, 0x06, 0x86, 0x07, 0x60, 0x88, + 0x60, 0x7a, 0x02, 0xc6, 0x03, 0xa0, 0x20, 0x1c, 0x01, 0x4c, 0x24, 0xc7, + 0x00, 0x0c, 0x11, 0x78, 0x80, 0x22, 0x19, 0x32, 0x06, 0x24, 0xcd, 0x9d, + 0x15, 0x85, 0x4e, 0x61, 0xe3, 0x94, 0x09, 0x41, 0x9e, 0xe6, 0x92, 0x97, + 0xa8, 0x05, 0x41, 0xd6, 0x5d, 0x36, 0xec, 0xb0, 0xd6, 0x72, 0xe2, 0xce, + 0xd6, 0x8b, 0x4a, 0xa2, 0xdf, 0x19, 0x87, 0x6c, 0xd5, 0xab, 0xc9, 0x98, + 0x66, 0x1d, 0xb3, 0x2a, 0x86, 0x9f, 0xe7, 0xf9, 0xfe, 0xa5, 0xa0, 0x76, + 0x9f, 0xab, 0x70, 0xcb, 0x92, 0xe4, 0xbb, 0xb4, 0xdd, 0xc6, 0xad, 0x9c, + 0x75, 0x95, 0x5a, 0x6b, 0x55, 0x5f, 0xd7, 0x76, 0x1d, 0x96, 0xd2, 0xd2, + 0xee, 0x53, 0x0e, 0xde, 0x95, 0x46, 0xa5, 0xd4, 0xd1, 0xa8, 0xcd, 0x9a, + 0xd4, 0xdd, 0xfa, 0xd0, 0xd3, 0xfd, 0x66, 0xb5, 0x35, 0x35, 0x6a, 0x6b, + 0x5b, 0xab, 0x4d, 0x97, 0xff, 0xfe, 0x35, 0x71, 0xfc, 0x79, 0xae, 0xe3, + 0x4b, 0x67, 0x1f, 0xd7, 0x77, 0x8e, 0x3f, 0x97, 0x7f, 0xf1, 0xc7, 0xf2, + 0xcb, 0xff, 0xf7, 0x8f, 0xe5, 0xfb, 0xfd, 0x63, 0xf5, 0xa9, 0xbb, 0xff, + 0x96, 0x5f, 0x97, 0xd5, 0x96, 0xde, 0xad, 0x9c, 0x02, 0xc3, 0x98, 0x92, + 0xb1, 0x39, 0x2c, 0x35, 0x76, 0xae, 0xd4, 0x41, 0x86, 0x6d, 0x55, 0x8c, + 0xd8, 0x89, 0x39, 0x4b, 0x99, 0x9b, 0xda, 0xac, 0xed, 0x32, 0xe1, 0xa2, + 0x95, 0xd3, 0xf5, 0x76, 0x97, 0x94, 0xb6, 0x74, 0x34, 0x16, 0x12, 0x21, + 0xbe, 0x14, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x77, 0x65, 0xb2, 0x91, + 0x82, 0xd2, 0x39, 0xd6, 0xad, 0x2f, 0x06, 0x90, 0x78, 0xe2, 0x71, 0x80, + 0xd3, 0xa2, 0xee, 0xeb, 0xb3, 0x67, 0x9e, 0x75, 0x68, 0xa2, 0x8a, 0x34, + 0x92, 0x45, 0x6d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfa, 0x5f, 0xff, 0xa4, 0x92, 0x4f, 0xff, 0xff, 0xff, 0xfa, 0x28, + 0xa2, 0xb4, 0x51, 0x49, 0xd4, 0x92, 0x49, 0x3a, 0x46, 0x45, 0xd1, 0xc2, + 0x00, 0x9a, 0x30, 0x45, 0xe4, 0x92, 0x32, 0x6d, 0x3f, 0xf4, 0x48, 0x2e, + 0x02, 0xb6, 0x40, 0x01, 0x80, 0x04, 0x18, 0xb9, 0x85, 0x46, 0x1e, 0x71, + 0x8f, 0xd6, 0x4c, 0x79, 0x86, 0x1a, 0x23, 0x51, 0xa1, 0xa2, 0x10, 0x11, + 0x84, 0x22, 0x00, 0x69, 0x81, 0xf8, 0x00, 0xe1, 0x82, 0x8a, 0x08, 0xf9, + 0x8a, 0xf4, 0x1c, 0x71, 0x8a, 0xea, 0xa5, 0x50, 0xe0, 0x13, 0x26, 0x03, + 0x48, 0x02, 0xe6, 0x00, 0xf0, 0x03, 0x08, 0xfc, 0x17, 0x00, 0x10, 0xd1, + 0x98, 0x03, 0x55, 0x34, 0x64, 0xc3, 0x97, 0x97, 0x9c, 0x28, 0x50, 0x94, + 0x69, 0x81, 0x80, 0x18, 0x59, 0x95, 0xa7, 0xda, 0x22, 0x34, 0xc0, 0x11, + 0xa5, 0xb6, 0xb6, 0x99, 0x4b, 0x7d, 0x4c, 0xf2, 0x35, 0xf7, 0x7e, 0x1c, + 0xa4, 0x80, 0x61, 0xa9, 0x6e, 0x7d, 0x72, 0x1d, 0x88, 0x0f, 0x39, 0x44, + 0x65, 0xfa, 0x90, 0xe6, 0xff, 0xb1, 0x36, 0xb1, 0x0d, 0xcf, 0xc1, 0x8f, + 0xab, 0x95, 0x45, 0x9c, 0x82, 0x2f, 0x14, 0xb7, 0x5e, 0x21, 0x04, 0xca, + 0xaf, 0x5c, 0x8a, 0xc1, 0xf1, 0x4c, 0xe5, 0x71, 0x08, 0xfd, 0x6b, 0xf4, + 0xd2, 0x19, 0x3c, 0xb3, 0xe2, 0x71, 0x09, 0x2d, 0x9a, 0xf2, 0xe9, 0x34, + 0x5e, 0x92, 0xa4, 0x4e, 0x0c, 0x95, 0x58, 0xab, 0x22, 0x84, 0x45, 0xf5, + 0x10, 0x80, 0xe2, 0x32, 0xea, 0x92, 0xd8, 0x5b, 0xf1, 0x2f, 0xdd, 0x4b, + 0x98, 0xf7, 0x57, 0xad, 0xd8, 0xfc, 0xee, 0xd6, 0xc7, 0x3e, 0xd8, 0xb7, + 0x87, 0xd4, 0xbb, 0x97, 0x37, 0x7e, 0xc5, 0xbc, 0x33, 0xb9, 0x56, 0xd7, + 0x39, 0x6e, 0x92, 0x9f, 0xeb, 0xd6, 0xa5, 0xbf, 0x85, 0x8a, 0x79, 0x46, + 0xb0, 0xa1, 0x95, 0x4b, 0x6d, 0xf6, 0x59, 0x0d, 0xc4, 0xfe, 0x62, 0x19, + 0x7e, 0x9e, 0xd7, 0xfd, 0xf7, 0x52, 0x81, 0x80, 0x45, 0x50, 0xe6, 0x22, + 0x1a, 0x7e, 0xa1, 0x72, 0x50, 0x36, 0xe5, 0xed, 0x1a, 0x0d, 0x2e, 0x70, + 0x68, 0xee, 0xbb, 0x8e, 0x9d, 0x61, 0xa8, 0x4e, 0x9a, 0x74, 0xa3, 0x50, + 0xb1, 0x83, 0x98, 0x70, 0xc2, 0x04, 0x2f, 0x3b, 0x18, 0x96, 0xd3, 0xbf, + 0x2f, 0x7c, 0x09, 0x2f, 0xaf, 0x10, 0x8e, 0xca, 0xac, 0x65, 0x45, 0x3f, + 0x49, 0xf5, 0xe8, 0x2a, 0x90, 0x0c, 0x12, 0xd3, 0x90, 0x60, 0x02, 0x24, + 0x26, 0x0c, 0x20, 0xe6, 0xac, 0x4d, 0x70, 0xb0, 0x01, 0xa6, 0x12, 0x82, + 0xe8, 0x61, 0xd6, 0x91, 0x0b, 0xc1, 0x7f, 0x32, 0x56, 0x24, 0x9d, 0x40, + 0x98, 0xf4, 0x8c, 0x17, 0xc4, 0x39, 0x76, 0x07, 0x82, 0xe8, 0x98, 0xd3, + 0x4a, 0x8d, 0x97, 0xa3, 0x6c, 0x59, 0xb5, 0xfb, 0x75, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xbf, + 0xed, 0xac, 0xeb, 0xb2, 0x24, 0x90, 0x12, 0x41, 0xe8, 0xd5, 0xd4, 0x25, + 0xc3, 0x62, 0xa6, 0x28, 0xe6, 0x01, 0x91, 0x94, 0xb1, 0x24, 0x08, 0x02, + 0x49, 0x15, 0x24, 0x7d, 0xa4, 0xea, 0x06, 0x22, 0x00, 0x00, 0xc0, 0x05, + 0x14, 0x7c, 0xc2, 0xbb, 0x1e, 0x4c, 0xd2, 0x05, 0x4a, 0x18, 0xc4, 0x0d, + 0x2e, 0x5c, 0xcc, 0xad, 0x23, 0x80, 0xc0, 0x97, 0x05, 0x14, 0x0a, 0x04, + 0x69, 0x82, 0x28, 0x10, 0x81, 0x8d, 0xae, 0x3f, 0x41, 0xb2, 0xe4, 0xcf, + 0xa9, 0x8a, 0x78, 0x01, 0x89, 0xff, 0xfb, 0xd4, 0x60, 0x17, 0x8d, 0xd7, + 0xde, 0x6f, 0x43, 0x1b, 0xf8, 0xab, 0x72, 0x65, 0x6c, 0xb8, 0x61, 0x78, + 0xf3, 0x6e, 0x1d, 0x2d, 0xbd, 0x04, 0x4f, 0xe6, 0xad, 0xc1, 0xaf, 0xb2, + 0xe0, 0xc5, 0xe6, 0xcd, 0xb9, 0x82, 0xde, 0x03, 0xc1, 0x81, 0x1c, 0x02, + 0x19, 0x80, 0xaa, 0x02, 0x71, 0x80, 0x40, 0x00, 0x7b, 0x0e, 0x1e, 0x28, + 0x5b, 0x60, 0x52, 0x11, 0x25, 0xb4, 0x4e, 0xa4, 0x96, 0x1e, 0x51, 0x41, + 0xd8, 0x6d, 0x85, 0xa2, 0xa1, 0xae, 0x8c, 0xb6, 0x35, 0x1d, 0x68, 0x11, + 0xea, 0x77, 0x85, 0xd5, 0x78, 0x2f, 0xc4, 0x69, 0x69, 0x65, 0x30, 0xd4, + 0xc3, 0x8d, 0x7a, 0x54, 0xef, 0x4a, 0x6a, 0x42, 0xe9, 0x77, 0x62, 0xd5, + 0x7e, 0x77, 0x1d, 0x6b, 0x4f, 0x49, 0x14, 0x28, 0xee, 0xd7, 0x5e, 0x8a, + 0x6d, 0x5a, 0x0a, 0xb2, 0x95, 0x45, 0x4b, 0x5b, 0xbb, 0x23, 0x7a, 0x9d, + 0x95, 0xa2, 0x82, 0x4b, 0x53, 0xaf, 0x4a, 0xc9, 0x59, 0xd7, 0x65, 0x26, + 0x8a, 0x93, 0x63, 0x8a, 0x74, 0x50, 0x52, 0x2a, 0x73, 0x14, 0x59, 0xd6, + 0x89, 0xb2, 0xd0, 0x49, 0xd3, 0x65, 0x2c, 0xd1, 0x24, 0xe8, 0x9c, 0x75, + 0x99, 0x39, 0x8a, 0x46, 0x26, 0xc7, 0x94, 0x6c, 0x5d, 0x30, 0x1c, 0xf1, + 0x99, 0x1d, 0x43, 0x70, 0x2e, 0x68, 0x0c, 0x02, 0xde, 0x03, 0x07, 0x80, + 0x09, 0xb1, 0xac, 0x29, 0x20, 0x08, 0x1e, 0x01, 0x20, 0xd0, 0xb3, 0xc9, + 0xf2, 0x0e, 0x4c, 0x9c, 0x23, 0x82, 0x10, 0xe8, 0x02, 0x82, 0x87, 0x2c, + 0x59, 0x41, 0xf0, 0x84, 0x23, 0x00, 0x33, 0x3a, 0x44, 0x40, 0x41, 0x07, + 0x14, 0x46, 0xb3, 0x13, 0xc5, 0xf3, 0x84, 0x38, 0x9d, 0x34, 0x48, 0xc5, + 0x33, 0xc9, 0x2d, 0x8d, 0xd3, 0x57, 0x80, 0x4c, 0x44, 0xef, 0x11, 0x00, + 0xe1, 0x80, 0x49, 0x11, 0x98, 0x71, 0x84, 0x81, 0x81, 0x78, 0x02, 0xa5, + 0xe8, 0x30, 0x0b, 0x8c, 0x3a, 0xc4, 0xb8, 0xd1, 0x69, 0x1c, 0xcc, 0x30, + 0x00, 0xe4, 0xc0, 0x7c, 0x02, 0x81, 0x40, 0x02, 0xa0, 0xd4, 0x80, 0x14, + 0x0f, 0x47, 0x41, 0xe8, 0x98, 0xd8, 0xa8, 0x07, 0x0c, 0xea, 0x3c, 0xfc, + 0x75, 0xaa, 0x8f, 0xa9, 0xad, 0xd5, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5b, 0x75, 0xb7, + 0xbe, 0x51, 0x01, 0x69, 0x0f, 0x0f, 0x58, 0x7f, 0xc7, 0x95, 0x7a, 0xc5, + 0xd0, 0xe6, 0xab, 0x18, 0xe0, 0x30, 0xad, 0x37, 0x08, 0xbd, 0x95, 0x4a, + 0x06, 0x09, 0xb9, 0x32, 0xa6, 0x36, 0xe0, 0x64, 0x47, 0xa4, 0x90, 0xd5, + 0x26, 0x3c, 0x71, 0xec, 0x26, 0x9e, 0x40, 0x66, 0x46, 0x1d, 0xf0, 0x23, + 0x20, 0x20, 0xa6, 0x8c, 0x15, 0x00, 0x56, 0x4c, 0x38, 0xc2, 0xcc, 0xcd, + 0x41, 0xf4, 0x22, 0x8c, 0x6e, 0xd0, 0x69, 0x8c, 0x1c, 0xc0, 0x33, 0xcc, + 0x0d, 0x70, 0x1b, 0x03, 0x00, 0xe9, 0x01, 0x02, 0x24, 0x74, 0x0a, 0x6f, + 0x80, 0xca, 0x01, 0x3c, 0x06, 0x13, 0x07, 0xcb, 0xe5, 0x65, 0x62, 0x28, + 0x53, 0x70, 0x8b, 0x3a, 0x25, 0xec, 0x97, 0x3b, 0x11, 0x65, 0xe4, 0x80, + 0x18, 0x76, 0x66, 0x55, 0x4e, 0xb7, 0x63, 0x34, 0xb5, 0x5b, 0x04, 0x3d, + 0x4d, 0x8e, 0x2f, 0xb5, 0x6c, 0xbf, 0x19, 0x0f, 0x3f, 0xf7, 0x7b, 0x9f, + 0xfa, 0xff, 0xd4, 0xae, 0x8b, 0xf6, 0x6d, 0x4c, 0xda, 0x94, 0xdb, 0xe8, + 0xd0, 0x55, 0x2d, 0x2e, 0x79, 0xb5, 0xa2, 0xd9, 0xc3, 0x2e, 0x92, 0x5a, + 0xcf, 0x1e, 0xd1, 0x45, 0xaa, 0x49, 0x4f, 0x77, 0x4d, 0x14, 0x68, 0x19, + 0xad, 0xae, 0x93, 0xbc, 0xf9, 0x5b, 0x3a, 0x51, 0x3d, 0x51, 0x89, 0x0d, + 0x65, 0x24, 0x6c, 0x3b, 0x93, 0x5a, 0x44, 0x38, 0x6d, 0xa2, 0x62, 0x80, + 0x9b, 0xc8, 0xa9, 0x16, 0x2b, 0x87, 0xd4, 0x0a, 0xa2, 0x42, 0x88, 0x80, + 0xe3, 0x8c, 0x05, 0x9c, 0x01, 0x27, 0x00, 0x0e, 0x02, 0x0b, 0x30, 0x65, + 0x83, 0x76, 0x2e, 0x01, 0xc9, 0x20, 0x20, 0x00, 0x27, 0x00, 0x26, 0xa0, + 0x59, 0x91, 0x67, 0x0a, 0x40, 0x30, 0x58, 0x19, 0x75, 0x34, 0x04, 0x85, + 0xe2, 0x88, 0x45, 0xc4, 0x80, 0x51, 0xce, 0xaa, 0x33, 0xc6, 0x0f, 0x59, + 0x55, 0xa8, 0xac, 0x9c, 0x68, 0x18, 0x07, 0x80, 0x11, 0x80, 0x80, 0x0b, + 0x98, 0x17, 0x82, 0x81, 0x86, 0x71, 0x21, 0x9b, 0x5e, 0x15, 0x91, 0x84, + 0x30, 0x22, 0x8f, 0x03, 0x91, 0x82, 0x30, 0x26, 0x08, 0x8c, 0x94, 0xcf, + 0x98, 0xd1, 0x8c, 0x2a, 0x42, 0x70, 0xc0, 0xd8, 0x0c, 0x4c, 0x05, 0x40, + 0x30, 0x14, 0x00, 0x28, 0x0e, 0x06, 0xc8, 0x99, 0x22, 0x3b, 0x87, 0xaa, + 0x4c, 0x9b, 0x1b, 0x35, 0x68, 0x3e, 0xe8, 0xfb, 0x7f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xd4, 0x93, 0x5c, 0xc4, 0x0c, 0x3d, 0x11, 0xa9, 0xb3, 0x26, 0x16, + 0xe4, 0xcd, 0x36, 0x47, 0x61, 0x4e, 0x0d, 0x39, 0x35, 0xa8, 0x7d, 0x80, + 0x4e, 0x88, 0x99, 0x18, 0x6a, 0x40, 0x0c, 0x22, 0xe2, 0x44, 0xcc, 0x29, + 0xa2, 0x92, 0x8e, 0x39, 0x95, 0xe6, 0x4c, 0x3d, 0xf0, 0x93, 0x8d, 0x30, + 0xa1, 0xac, 0x4c, 0x16, 0xa0, 0x53, 0x88, 0x00, 0xd1, 0x30, 0x31, 0x00, + 0x5a, 0x30, 0x17, 0x00, 0xed, 0x31, 0xb8, 0x44, 0xc5, 0x30, 0x7c, 0x00, + 0x47, 0x30, 0x18, 0xc0, 0x1c, 0x30, 0x09, 0x00, 0x03, 0x30, 0x02, 0xc0, + 0x0e, 0x03, 0x00, 0x54, 0x36, 0xc4, 0x04, 0xd6, 0x0c, 0xe3, 0xa5, 0xe9, + 0x24, 0x80, 0x0c, 0xe2, 0x6c, 0x60, 0x2a, 0x30, 0xa7, 0x54, 0xa8, 0xee, + 0xd4, 0x65, 0x43, 0xdd, 0x7a, 0xff, 0xfb, 0xd4, 0x40, 0x2a, 0x0d, 0x96, + 0x21, 0x6c, 0x40, 0x8b, 0xef, 0xa3, 0x72, 0xb7, 0x8d, 0x98, 0x21, 0x7d, + 0xf4, 0x6e, 0x17, 0xcd, 0xb2, 0xfa, 0x0f, 0xbe, 0x8d, 0xc2, 0xee, 0xb4, + 0x1f, 0x95, 0xfc, 0x51, 0xb8, 0x1b, 0xad, 0x5d, 0x8a, 0x7f, 0xe9, 0x98, + 0xbf, 0x18, 0xb6, 0x7e, 0xfe, 0x7e, 0x7e, 0x37, 0xff, 0xa9, 0xbf, 0xa9, + 0x1e, 0xae, 0xeb, 0x6f, 0xf4, 0x5b, 0xbd, 0xeb, 0x47, 0xa9, 0x6a, 0xd6, + 0x8f, 0xa3, 0xba, 0x3e, 0xbe, 0xb6, 0xa9, 0xa9, 0x53, 0x98, 0xb2, 0xd3, + 0xa9, 0xd0, 0x52, 0xcd, 0x54, 0x86, 0x6c, 0xe9, 0xcc, 0x4f, 0x27, 0x59, + 0xc2, 0xb5, 0x66, 0x62, 0xe5, 0x30, 0x62, 0xe0, 0xb9, 0xc3, 0x06, 0x8b, + 0xb2, 0x28, 0x58, 0x16, 0xc0, 0x02, 0x06, 0x14, 0x68, 0x26, 0xc1, 0xd4, + 0x4e, 0x93, 0x28, 0x8c, 0xb8, 0x5f, 0x80, 0x36, 0xc2, 0x45, 0xc0, 0x74, + 0x58, 0x81, 0x21, 0xe0, 0x67, 0x8e, 0x85, 0xd6, 0x1d, 0xe8, 0x93, 0x43, + 0x89, 0x04, 0x19, 0x24, 0x50, 0x69, 0x49, 0x1f, 0x07, 0x30, 0x06, 0x0f, + 0xb0, 0xfe, 0xe6, 0x11, 0x71, 0x20, 0x06, 0xf9, 0x1a, 0x93, 0xe6, 0x23, + 0x58, 0x8c, 0xe6, 0x23, 0x10, 0x99, 0xa6, 0x01, 0xe8, 0x21, 0xc6, 0x01, + 0x40, 0x1f, 0x26, 0x08, 0x40, 0x2c, 0x86, 0x03, 0x68, 0x39, 0xe6, 0x7d, + 0x70, 0xc8, 0xc6, 0x18, 0x70, 0x01, 0x06, 0x05, 0x08, 0x01, 0x40, 0x60, + 0x1d, 0x4c, 0x01, 0x70, 0x02, 0x90, 0x78, 0x1e, 0xe1, 0x92, 0x57, 0x96, + 0x28, 0xac, 0xa5, 0xe2, 0x82, 0x4c, 0x5e, 0x8e, 0xc5, 0x88, 0x0c, 0x2c, + 0xac, 0xf7, 0x6a, 0x51, 0x43, 0xde, 0x65, 0x56, 0xcd, 0xab, 0xbe, 0x8d, + 0xf1, 0x48, 0x31, 0x7e, 0x31, 0x6c, 0xff, 0xf3, 0xaf, 0xff, 0xff, 0xd5, + 0xfe, 0xa5, 0xff, 0x75, 0xa3, 0xfe, 0x8b, 0x77, 0xeb, 0x47, 0xea, 0xd1, + 0x47, 0xd7, 0xd1, 0xf5, 0xf5, 0xa3, 0x56, 0x95, 0x74, 0x5a, 0x9d, 0x4e, + 0x82, 0x96, 0x8d, 0xb4, 0x9d, 0xe8, 0xa2, 0x9d, 0x66, 0x45, 0xea, 0xcc, + 0xc9, 0x13, 0x49, 0x81, 0x36, 0x06, 0x64, 0x88, 0x94, 0x49, 0x82, 0x80, + 0xde, 0x06, 0xcf, 0x85, 0x18, 0x0a, 0x40, 0x81, 0x15, 0x4a, 0x28, 0x90, + 0x31, 0x66, 0x01, 0xb0, 0x16, 0x38, 0x0e, 0x8a, 0x58, 0x20, 0x12, 0x1e, + 0xb0, 0x92, 0x95, 0xd6, 0x52, 0x20, 0xc8, 0x20, 0xce, 0x8a, 0x0d, 0x2f, + 0x30, 0x54, 0x8f, 0x53, 0x2e, 0xb9, 0x47, 0x73, 0x54, 0x7f, 0x03, 0x83, + 0x08, 0x44, 0x79, 0x03, 0x06, 0x94, 0x4e, 0x92, 0x20, 0xc1, 0x85, 0x81, + 0x29, 0x30, 0x72, 0x80, 0x2a, 0x30, 0x57, 0x81, 0x98, 0x31, 0xf7, 0x06, + 0xd2, 0x30, 0x55, 0x80, 0xd3, 0x30, 0x19, 0xc0, 0x36, 0x30, 0x0a, 0x00, + 0x17, 0x02, 0x80, 0x40, 0x04, 0x00, 0x64, 0x17, 0xc0, 0x7f, 0x70, 0x02, + 0xb8, 0x41, 0xaa, 0x11, 0x09, 0xe4, 0x99, 0x5e, 0x87, 0x1c, 0x8d, 0xac, + 0xe7, 0xd2, 0x12, 0xc3, 0x05, 0x8e, 0x2a, 0x86, 0x33, 0xe9, 0x36, 0xe5, + 0x3d, 0xed, 0x9a, 0xeb, 0x55, 0xd5, 0x73, 0xac, 0xe3, 0xff, 0x8f, 0xff, + 0xff, 0x55, 0xf5, 0xfa, 0xfa, 0xbd, 0xfa, 0xea, 0xfe, 0xda, 0xdb, 0xaa, + 0xee, 0x9a, 0xa8, 0xd1, 0xd1, 0xa3, 0x53, 0xaa, 0x92, 0x92, 0xba, 0x2d, + 0x46, 0xc8, 0xea, 0x77, 0xfe, 0xee, 0xee, 0xa7, 0xa9, 0x96, 0x89, 0x8a, + 0x28, 0xad, 0x66, 0x2e, 0x7c, 0xe1, 0xc3, 0x24, 0x89, 0xf3, 0x02, 0xf1, + 0xe0, 0xfc, 0x40, 0xc2, 0x09, 0x0e, 0x3c, 0x74, 0x93, 0x84, 0x3c, 0x07, + 0x5b, 0x02, 0xc3, 0x49, 0x64, 0x4a, 0x24, 0x71, 0x34, 0x46, 0x83, 0x54, + 0x80, 0x66, 0x46, 0x8f, 0x92, 0x91, 0x58, 0x0a, 0x85, 0x03, 0x04, 0x3c, + 0x41, 0xee, 0xc4, 0x30, 0xb2, 0xd3, 0xe9, 0xa5, 0x49, 0x25, 0x9e, 0x1e, + 0x0c, 0x07, 0x31, 0xef, 0xcc, 0xa4, 0xa4, 0x89, 0x4d, 0x29, 0x1a, 0xae, + 0x8c, 0x1b, 0x52, 0xd4, 0xcc, 0x22, 0x01, 0xa9, 0x0c, 0x0c, 0xf0, 0x67, + 0xcc, 0x0a, 0xa0, 0x53, 0x0c, 0x0f, 0x80, 0x94, 0xcc, 0x21, 0x31, 0x69, + 0x4e, 0x31, 0x37, 0x34, 0xcc, 0x52, 0x70, 0x4b, 0x0c, 0x15, 0xe0, 0x26, + 0x4c, 0x09, 0xd0, 0x14, 0x0c, 0x05, 0x80, 0x08, 0x4c, 0x02, 0x70, 0x02, + 0x8e, 0x47, 0x17, 0x72, 0x78, 0xcc, 0x38, 0xf3, 0xc8, 0x59, 0x03, 0xd0, + 0x38, 0xef, 0xf3, 0x58, 0x98, 0x67, 0x71, 0x47, 0x56, 0x53, 0x52, 0x4b, + 0x7d, 0xf9, 0xb5, 0x9d, 0x37, 0x27, 0xad, 0xe3, 0xdf, 0xe6, 0x37, 0xf9, + 0xcc, 0x77, 0x9f, 0x35, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xab, 0xff, 0x57, + 0xaf, 0xd4, 0xb5, 0xab, 0xff, 0xaf, 0xf7, 0xfd, 0x7a, 0xeb, 0xa9, 0xea, + 0x52, 0x92, 0xa4, 0xb6, 0xeb, 0x47, 0x49, 0xf6, 0x75, 0x6f, 0xbd, 0xf5, + 0x2d, 0x48, 0xa2, 0xcb, 0x52, 0xd1, 0x74, 0x98, 0xc8, 0xc9, 0x31, 0xd6, + 0x5c, 0x2f, 0x1e, 0x17, 0xe0, 0x73, 0x0a, 0x85, 0xde, 0x40, 0x4f, 0x16, + 0xc0, 0xc5, 0x1b, 0x07, 0x31, 0x22, 0x05, 0x32, 0x2a, 0x4c, 0x13, 0xc4, + 0xc8, 0x35, 0x14, 0x16, 0x9e, 0x33, 0xa6, 0x44, 0x70, 0x90, 0x81, 0xe4, + 0x3e, 0x5d, 0x2b, 0x9e, 0x51, 0xe6, 0x4d, 0x30, 0x1a, 0xc6, 0xaf, 0x33, + 0x7b, 0x88, 0xfa, 0x3e, 0x1e, 0x94, 0xbb, 0x32, 0x12, 0x85, 0xb4, 0x31, + 0xb1, 0x42, 0x38, 0x30, 0x0c, 0x80, 0x4a, 0x30, 0x15, 0x40, 0x2c, 0x03, + 0x07, 0x4a, 0x60, 0xc0, 0x86, 0x3e, 0x62, 0x2d, 0x94, 0xc6, 0x60, 0xc1, + 0x81, 0x9c, 0x60, 0x24, 0x00, 0x8e, 0x60, 0x14, 0x80, 0x3c, 0x86, 0xa0, + 0xd0, 0x01, 0x86, 0x70, 0x1c, 0xff, 0xfb, 0xd4, 0x40, 0x1d, 0x0f, 0xf4, + 0x98, 0x68, 0x3f, 0x83, 0xed, 0x9b, 0x70, 0xa6, 0xad, 0x07, 0xf0, 0x7e, + 0x94, 0x6e, 0x12, 0x05, 0x96, 0xfc, 0x0f, 0xb5, 0xad, 0xca, 0x9d, 0xb3, + 0x9f, 0x81, 0xfa, 0x51, 0xb9, 0x83, 0xd4, 0x40, 0x81, 0x5d, 0x12, 0x40, + 0xf2, 0x38, 0x86, 0x5a, 0x84, 0xdc, 0x94, 0x44, 0xd4, 0x82, 0x3d, 0x96, + 0x91, 0x3d, 0x03, 0x74, 0x51, 0x4e, 0x9b, 0x29, 0x15, 0x6c, 0xa4, 0x7f, + 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0x7f, 0xaf, + 0xbf, 0xfe, 0xae, 0xaf, 0xbf, 0x57, 0xb5, 0x1a, 0x2a, 0x2e, 0x9a, 0xc8, + 0x68, 0x18, 0x9a, 0x49, 0x1b, 0x14, 0x89, 0xe0, 0x0c, 0x18, 0x7b, 0xe4, + 0xd9, 0x32, 0x92, 0xd0, 0x30, 0x0e, 0x88, 0x06, 0xf4, 0x5f, 0x27, 0xcb, + 0xa1, 0x84, 0x41, 0xe0, 0x19, 0x24, 0x92, 0x48, 0xc1, 0xa8, 0x30, 0x2a, + 0xc6, 0xa9, 0x33, 0x7e, 0x08, 0xfa, 0x3e, 0x1a, 0x14, 0xb7, 0x32, 0x38, + 0x85, 0x2d, 0x32, 0x76, 0x82, 0xc5, 0x30, 0x69, 0x80, 0xb8, 0x30, 0x20, + 0x40, 0x39, 0x30, 0x64, 0x80, 0xb0, 0x31, 0x77, 0x09, 0x0c, 0x34, 0xc8, + 0xa5, 0xc2, 0x31, 0x13, 0x82, 0x7b, 0x30, 0x5d, 0xc1, 0x04, 0x30, 0x2d, + 0x00, 0x8f, 0x30, 0x1c, 0x40, 0x58, 0x30, 0x0f, 0x80, 0x2b, 0x03, 0x52, + 0x68, 0x02, 0x98, 0x88, 0xd8, 0xb6, 0x6e, 0x33, 0x02, 0xda, 0x5e, 0x20, + 0xe5, 0x81, 0x9f, 0x27, 0x0b, 0x23, 0x08, 0xaa, 0x45, 0xa6, 0x47, 0x50, + 0x37, 0xb2, 0x68, 0xa6, 0x8a, 0x97, 0x99, 0xa9, 0xd1, 0xd2, 0x5f, 0x67, + 0xaf, 0xd7, 0xff, 0xfd, 0x9f, 0xfa, 0xff, 0xee, 0xdd, 0x95, 0xed, 0xff, + 0xff, 0x53, 0xff, 0x5f, 0x76, 0x5f, 0xb7, 0x76, 0xd2, 0xf6, 0x4b, 0xa9, + 0x3d, 0x6c, 0xfa, 0x24, 0x61, 0x9b, 0x2c, 0xa8, 0x06, 0x6d, 0x10, 0x9c, + 0x0b, 0x65, 0xe1, 0xf4, 0x0d, 0x4a, 0x03, 0x94, 0x0e, 0x82, 0xd1, 0x24, + 0x6c, 0x81, 0x48, 0x1a, 0x04, 0x03, 0x50, 0x08, 0x9d, 0x36, 0x24, 0x04, + 0xbc, 0x01, 0xc3, 0x88, 0xd9, 0x8d, 0x93, 0x38, 0x89, 0x86, 0xbc, 0x2c, + 0x19, 0x92, 0x6c, 0x56, 0x51, 0xfe, 0xce, 0xc3, 0xb9, 0x8e, 0xe2, 0x24, + 0x01, 0x87, 0x04, 0x07, 0x29, 0x82, 0x66, 0x03, 0xd1, 0x81, 0xf8, 0x07, + 0xa1, 0x82, 0x44, 0x06, 0xa9, 0x85, 0xc0, 0x1a, 0x11, 0x96, 0x02, 0x67, + 0x71, 0x80, 0xbe, 0x03, 0xf8, 0x88, 0x04, 0x21, 0x10, 0x02, 0xe0, 0x50, + 0x00, 0x0b, 0xca, 0x13, 0xa0, 0x0d, 0x62, 0x58, 0x2c, 0x08, 0x61, 0x44, + 0x64, 0x58, 0x35, 0x9d, 0x0c, 0x63, 0xdd, 0x64, 0x99, 0x88, 0xd2, 0xec, + 0xa4, 0x0d, 0xac, 0xa9, 0xf5, 0xbb, 0xa7, 0x75, 0x27, 0xeb, 0xb7, 0xff, + 0xff, 0xff, 0xf5, 0x7f, 0xff, 0xd4, 0xaf, 0x55, 0xff, 0xea, 0xbe, 0xfd, + 0x56, 0xff, 0x7f, 0x5e, 0xaa, 0xff, 0x5f, 0xae, 0xab, 0x32, 0x0a, 0x49, + 0xa6, 0x65, 0xf4, 0xd4, 0x49, 0x94, 0x82, 0xd4, 0x1e, 0x8d, 0x4b, 0xe6, + 0x00, 0x43, 0x06, 0x62, 0x4d, 0x17, 0x45, 0x89, 0x82, 0x6e, 0x16, 0xa3, + 0xa8, 0x11, 0x46, 0x80, 0x48, 0x06, 0x10, 0x1c, 0x24, 0xc3, 0x74, 0x15, + 0xf4, 0xc9, 0x2e, 0x2b, 0x18, 0xff, 0x57, 0x61, 0x84, 0xc7, 0xeb, 0x1e, + 0xc4, 0xc5, 0xa9, 0x16, 0x74, 0xc2, 0x97, 0x03, 0xf8, 0xc0, 0x80, 0x00, + 0x3c, 0xc2, 0xc4, 0x09, 0x08, 0xca, 0x33, 0x32, 0xd4, 0xdc, 0x0a, 0xc7, + 0x5c, 0xc1, 0xd9, 0x0f, 0x40, 0xc1, 0x2a, 0x05, 0x8c, 0xc0, 0xaf, 0x02, + 0xe8, 0xc0, 0x64, 0x01, 0xe4, 0xc0, 0x3b, 0x01, 0x18, 0x0c, 0xe2, 0x90, + 0x32, 0xa1, 0x83, 0x95, 0x1d, 0xe2, 0xc9, 0x0c, 0x44, 0x5c, 0x20, 0x84, + 0x30, 0xc4, 0x4b, 0x48, 0xb9, 0x0d, 0x16, 0x41, 0x89, 0x1a, 0xf2, 0xfa, + 0x09, 0x54, 0xf3, 0xfd, 0x39, 0x4d, 0xd7, 0xeb, 0xed, 0xbf, 0xad, 0xff, + 0xfd, 0xf7, 0xf5, 0x7f, 0xf5, 0xd7, 0xea, 0xfd, 0xfe, 0xbf, 0xbe, 0xf5, + 0x55, 0xbf, 0x7e, 0xea, 0xfd, 0x05, 0x6d, 0xeb, 0xf5, 0xd9, 0x56, 0x52, + 0xed, 0x33, 0x4d, 0x69, 0x13, 0xe2, 0xd6, 0x06, 0x22, 0xb9, 0x0f, 0x3c, + 0x4f, 0x91, 0x10, 0x32, 0x2d, 0xc1, 0x67, 0x23, 0x70, 0x86, 0x1a, 0x98, + 0x97, 0x0a, 0x60, 0x92, 0xc0, 0x35, 0x82, 0xc7, 0x01, 0x14, 0x1b, 0x61, + 0x6d, 0xc0, 0xe0, 0x26, 0x1b, 0x13, 0x34, 0xe0, 0x2a, 0x30, 0x6b, 0xc6, + 0x3a, 0x34, 0x8e, 0x18, 0x73, 0x35, 0x57, 0x39, 0x08, 0x30, 0xb5, 0x04, + 0x4f, 0x31, 0x7c, 0xc0, 0x25, 0x30, 0x16, 0x01, 0x19, 0x30, 0x1a, 0x41, + 0xf2, 0x30, 0xa6, 0x01, 0x14, 0x30, 0xae, 0x43, 0x06, 0x35, 0xed, 0x08, + 0xd1, 0x30, 0xde, 0x01, 0x26, 0x30, 0x10, 0xc0, 0x6b, 0x30, 0x0e, 0x80, + 0x08, 0x0e, 0x01, 0x08, 0xc0, 0x18, 0x00, 0x51, 0xbb, 0x12, 0xd9, 0x1d, + 0xc0, 0x4b, 0x76, 0x91, 0xe8, 0x9a, 0x6a, 0xaa, 0xf5, 0x3a, 0xab, 0x0a, + 0xe3, 0x35, 0x96, 0x4f, 0x42, 0xf4, 0x46, 0xa5, 0x74, 0x9d, 0x9d, 0x97, + 0x4c, 0xf7, 0x75, 0x79, 0x3d, 0xcf, 0xc6, 0xb6, 0x79, 0x65, 0xcb, 0xbf, + 0xbe, 0xef, 0x9b, 0xde, 0x3f, 0xff, 0xfe, 0xff, 0xeb, 0xf5, 0xfb, 0xda, + 0xab, 0x23, 0x5e, 0xa7, 0xbb, 0xd7, 0x6a, 0xd0, 0xb2, 0x9e, 0xf7, 0x7a, + 0x55, 0xd6, 0xb4, 0x59, 0x4c, 0xae, 0xdd, 0x48, 0xa2, 0xda, 0xea, 0x74, + 0x12, 0xa2, 0xea, 0x75, 0xb2, 0x08, 0xd2, 0x69, 0xe5, 0x24, 0xa3, 0x07, + 0x45, 0xd6, 0x64, 0x62, 0x5d, 0x94, 0x06, 0xc0, 0xe5, 0x12, 0xc1, 0xc9, + 0x80, 0xc9, 0xc0, 0x3b, 0xe2, 0xff, 0xfb, 0xd4, 0x40, 0x52, 0x0f, 0x96, + 0x4e, 0x6b, 0xbe, 0x03, 0xf8, 0x9b, 0x70, 0xbc, 0x8d, 0x37, 0xf0, 0x7f, + 0x14, 0x6e, 0x53, 0xcd, 0xa0, 0xfa, 0x0f, 0xc2, 0x8d, 0xc2, 0x73, 0x34, + 0x20, 0x99, 0xf9, 0xd1, 0xb8, 0x95, 0x26, 0x8b, 0xe2, 0x07, 0x16, 0x29, + 0x16, 0x27, 0x0f, 0x1b, 0x93, 0x23, 0x92, 0x26, 0xd2, 0x6c, 0x8d, 0x19, + 0x50, 0x49, 0xc0, 0xdb, 0x01, 0x1a, 0x8b, 0x94, 0xa8, 0x44, 0x89, 0xc3, + 0x12, 0xe9, 0x91, 0x7d, 0x24, 0x9c, 0xc4, 0xc1, 0x35, 0x11, 0x68, 0xcc, + 0x5e, 0x43, 0x24, 0xce, 0x50, 0x9c, 0x80, 0xc3, 0x4a, 0x31, 0x0c, 0xcd, + 0xe2, 0x2e, 0x60, 0xc0, 0x73, 0x0a, 0xf4, 0xc1, 0x00, 0x0c, 0x10, 0xc1, + 0x3d, 0x10, 0x94, 0xc9, 0xf0, 0x1a, 0x48, 0xfd, 0x23, 0x90, 0x20, 0xc4, + 0xbb, 0x09, 0x8c, 0xc0, 0xd4, 0x02, 0x88, 0xc0, 0x11, 0x01, 0x2c, 0xaa, + 0x01, 0x10, 0x80, 0x01, 0xb2, 0xaa, 0x15, 0x33, 0x40, 0x5f, 0x6f, 0x73, + 0x2a, 0x4b, 0x38, 0x12, 0x21, 0x19, 0x70, 0x5f, 0xe8, 0xa3, 0x4d, 0xa5, + 0x92, 0x53, 0x57, 0xa4, 0xb7, 0x66, 0xb6, 0x39, 0x6e, 0xad, 0xdb, 0x78, + 0xf7, 0x1a, 0xfb, 0xfc, 0xb9, 0x77, 0x2d, 0xf7, 0xf9, 0xbf, 0xff, 0xff, + 0xfd, 0xfd, 0xff, 0xa9, 0xff, 0x7f, 0xb2, 0xeb, 0xd5, 0xdf, 0xeb, 0x55, + 0xaf, 0xfe, 0xbd, 0x68, 0xd4, 0xda, 0xff, 0xa2, 0xdf, 0xb3, 0xd7, 0x53, + 0xad, 0x94, 0xba, 0x55, 0x32, 0x92, 0xa0, 0xe8, 0xa9, 0x14, 0x16, 0x6b, + 0x30, 0x3c, 0x52, 0x2a, 0x8c, 0xb0, 0x26, 0x98, 0x16, 0x06, 0x2e, 0x12, + 0x1c, 0x31, 0xe0, 0x52, 0xe8, 0x5d, 0x59, 0x17, 0x59, 0x14, 0x33, 0x48, + 0x86, 0x82, 0x13, 0x80, 0x6f, 0xc3, 0x8f, 0x45, 0x91, 0xba, 0x16, 0xd8, + 0x0a, 0x15, 0x22, 0x24, 0x34, 0x9c, 0x37, 0x3c, 0x8a, 0x29, 0x19, 0xe4, + 0x94, 0xa3, 0x62, 0xcc, 0x00, 0x51, 0x1d, 0x8d, 0x0c, 0x63, 0xff, 0x8f, + 0xde, 0x49, 0x71, 0xcc, 0x67, 0xa0, 0xdb, 0x0c, 0x6c, 0xb0, 0x36, 0x0c, + 0x0a, 0x80, 0x18, 0x0c, 0x01, 0x10, 0x83, 0x8c, 0x09, 0xa0, 0x70, 0xcc, + 0x19, 0x80, 0xe2, 0x0d, 0xf8, 0x92, 0x77, 0x4c, 0x32, 0x10, 0x39, 0xcc, + 0x07, 0x20, 0x08, 0x0c, 0x01, 0xd0, 0x00, 0x41, 0xc0, 0x10, 0x81, 0x40, + 0x0f, 0x14, 0x50, 0x17, 0xc6, 0xc8, 0x9f, 0x46, 0x20, 0xb3, 0x42, 0xe3, + 0x0e, 0xb1, 0xcd, 0x1b, 0x03, 0xa0, 0x7b, 0x59, 0x50, 0xbe, 0x3f, 0xb2, + 0x24, 0x54, 0xf9, 0x68, 0xe5, 0x24, 0x0f, 0xa8, 0xc5, 0x13, 0x07, 0x56, + 0xd6, 0xff, 0xd7, 0xff, 0xff, 0xfa, 0xec, 0xfa, 0x9d, 0x76, 0xeb, 0xbf, + 0xfb, 0xfe, 0xcf, 0xd3, 0xfa, 0xf5, 0xab, 0xfe, 0xfd, 0xaf, 0x7d, 0x99, + 0x7a, 0xaf, 0x5a, 0xf7, 0xaf, 0xad, 0xaa, 0xad, 0x17, 0x4c, 0x73, 0x40, + 0xd4, 0x2e, 0x0b, 0x94, 0xe8, 0x26, 0x5d, 0x18, 0xa6, 0x6b, 0x26, 0x8d, + 0x96, 0xb1, 0xf6, 0x1e, 0x72, 0x49, 0x65, 0x30, 0x88, 0x60, 0x30, 0xcb, + 0xc7, 0x1a, 0x98, 0xb2, 0x51, 0x50, 0x5c, 0x03, 0x01, 0xb4, 0x25, 0xc3, + 0x23, 0xa0, 0x84, 0xc3, 0x7f, 0xc1, 0x3b, 0xd3, 0x18, 0x20, 0x8a, 0xa3, + 0x6d, 0x58, 0x39, 0xa3, 0x0d, 0xf8, 0x09, 0xa3, 0x06, 0x1c, 0x03, 0xd3, + 0x07, 0xb8, 0x26, 0xa3, 0x11, 0x94, 0x69, 0xc3, 0xd3, 0x00, 0x5c, 0x33, + 0x14, 0xd8, 0x07, 0x73, 0x05, 0x84, 0x05, 0x83, 0x02, 0x68, 0x03, 0x93, + 0x01, 0x3c, 0x02, 0x63, 0x01, 0x10, 0x00, 0x10, 0x07, 0x50, 0x07, 0x14, + 0x4e, 0xc1, 0xb3, 0x8a, 0x08, 0x86, 0x8c, 0x21, 0x42, 0x0d, 0x53, 0xc4, + 0x61, 0x2e, 0x43, 0x86, 0x4c, 0xf9, 0x44, 0xbe, 0x91, 0x75, 0x23, 0xc3, + 0xd1, 0xa9, 0xbb, 0x95, 0xc6, 0xa9, 0x13, 0x3d, 0x9d, 0xfb, 0x6d, 0x56, + 0xaf, 0xff, 0xbf, 0xff, 0xff, 0xfd, 0x5f, 0xf7, 0xff, 0xff, 0xff, 0xff, + 0xb7, 0x57, 0xbf, 0xbf, 0xb7, 0x57, 0xad, 0xb5, 0x1f, 0xd6, 0x46, 0x03, + 0x7c, 0x16, 0x03, 0x74, 0x0d, 0xc2, 0xc7, 0x41, 0xc5, 0xc7, 0x59, 0x32, + 0xa5, 0x26, 0x80, 0xcb, 0x80, 0x75, 0x22, 0x26, 0x99, 0x15, 0x19, 0xe1, + 0x1b, 0x15, 0x9b, 0x2d, 0x3c, 0x9d, 0x75, 0x30, 0x9c, 0x05, 0xfa, 0x31, + 0x21, 0x03, 0xf8, 0x3f, 0x37, 0x4a, 0x03, 0x32, 0x54, 0x40, 0xa8, 0x30, + 0xda, 0x80, 0x34, 0x30, 0x44, 0x40, 0x1c, 0x30, 0x27, 0x01, 0x76, 0x30, + 0x09, 0x80, 0x1a, 0x30, 0x47, 0x05, 0xfc, 0x37, 0x23, 0x90, 0x24, 0x30, + 0x7a, 0x80, 0x6b, 0x30, 0x23, 0xc0, 0x34, 0x30, 0x0d, 0x00, 0x1f, 0x30, + 0x05, 0xc0, 0x02, 0x22, 0x01, 0x40, 0x0a, 0x41, 0x98, 0xd2, 0x08, 0xc1, + 0x88, 0x6e, 0xc0, 0x5d, 0x89, 0x01, 0xa8, 0x61, 0x53, 0x05, 0xb5, 0xc9, + 0x49, 0x79, 0x12, 0xb8, 0xbe, 0x25, 0x55, 0xe2, 0x7b, 0xd2, 0x7c, 0xff, + 0x7d, 0x6f, 0x7e, 0xff, 0xeb, 0xe3, 0xff, 0xf1, 0xff, 0xfd, 0x7f, 0xf5, + 0x2b, 0xb7, 0x53, 0x7f, 0xfd, 0xeb, 0xdd, 0x5d, 0xba, 0xfa, 0xd0, 0xf4, + 0xba, 0x9b, 0xdf, 0xb3, 0xf7, 0x6e, 0x9f, 0x59, 0xa7, 0x5a, 0x1c, 0xc3, + 0xc7, 0xd1, 0xc2, 0xe9, 0x32, 0x2b, 0xc1, 0x62, 0x41, 0x69, 0x85, 0x93, + 0x8c, 0x29, 0xc3, 0xdd, 0x8a, 0x0c, 0xc5, 0xf2, 0x54, 0x42, 0x84, 0xe1, + 0x78, 0x86, 0x86, 0x12, 0x03, 0x1f, 0x07, 0x20, 0xc5, 0x46, 0x24, 0x51, + 0x59, 0x87, 0x98, 0x3f, 0x3a, 0xc8, 0x00, 0x06, 0x0e, 0xd0, 0x8c, 0x06, + 0x1c, 0x00, 0x73, 0x47, 0x77, 0xf9, 0x20, 0x66, 0x32, 0x4a, 0xcb, 0x06, + 0x7c, 0x71, 0x9c, 0x26, 0x0c, 0xff, 0xfb, 0xd4, 0x40, 0x5f, 0x0f, 0xd5, + 0x2f, 0x6e, 0xbf, 0x83, 0xef, 0x9b, 0x70, 0xb0, 0xcd, 0x38, 0x12, 0x7f, + 0x34, 0x6e, 0x1b, 0xd9, 0xba, 0xf6, 0x0f, 0xe6, 0xad, 0xc2, 0xd2, 0xb3, + 0xdf, 0x41, 0xfc, 0xd5, 0xb9, 0x00, 0x44, 0x86, 0x02, 0x88, 0x12, 0xc6, + 0x04, 0x30, 0x0d, 0x66, 0x16, 0xf9, 0xa4, 0xe7, 0x90, 0x0a, 0xbd, 0xa6, + 0x28, 0x38, 0x4c, 0x06, 0x0b, 0xe0, 0x21, 0xe6, 0x06, 0x08, 0x12, 0x86, + 0x03, 0x90, 0x09, 0x26, 0x02, 0xd8, 0x05, 0xc7, 0x53, 0x26, 0x79, 0x8c, + 0xb5, 0x89, 0xaf, 0xc8, 0x1f, 0x04, 0xfe, 0x6c, 0x34, 0x0f, 0x45, 0xfb, + 0xaa, 0x5d, 0x9c, 0x62, 0x49, 0xb7, 0x1a, 0xf5, 0xf7, 0x26, 0x9e, 0x04, + 0xad, 0x47, 0x28, 0x85, 0xc5, 0x73, 0xe5, 0x5a, 0x97, 0xfb, 0xcf, 0xc3, + 0xbf, 0xdf, 0xdf, 0xfe, 0xff, 0x3f, 0xd7, 0xeb, 0xf5, 0x7a, 0xff, 0xea, + 0xff, 0x4b, 0xdf, 0xdb, 0xad, 0xba, 0xbd, 0x5e, 0x8f, 0xaf, 0xd2, 0xf4, + 0x7d, 0xbb, 0x3e, 0xb6, 0x7d, 0x4f, 0xd4, 0x9f, 0x3a, 0xda, 0x46, 0xa7, + 0x92, 0x71, 0x9d, 0x00, 0xa8, 0xe1, 0xee, 0xa4, 0x89, 0x40, 0x10, 0x92, + 0x05, 0x81, 0x14, 0xd8, 0xae, 0x94, 0xc8, 0x33, 0x91, 0x42, 0x22, 0x99, + 0xe0, 0xce, 0x40, 0x3a, 0x91, 0x32, 0x71, 0x67, 0x0d, 0xf9, 0xd3, 0x90, + 0x9c, 0xb1, 0x87, 0x52, 0x86, 0xf1, 0x9d, 0xb8, 0xd2, 0xa9, 0xf1, 0xc1, + 0xdb, 0x21, 0x8e, 0x70, 0x24, 0x89, 0x83, 0xac, 0x14, 0x81, 0x83, 0x30, + 0x07, 0xd9, 0x82, 0xee, 0x12, 0x01, 0x82, 0xc0, 0x1e, 0x71, 0x8c, 0xf2, + 0x76, 0xc9, 0x8e, 0xda, 0x92, 0x19, 0x8e, 0x90, 0x01, 0xb9, 0x82, 0xaa, + 0x01, 0x51, 0x80, 0xe0, 0x00, 0x59, 0x30, 0x12, 0xc6, 0x04, 0x30, 0x02, + 0x61, 0x8f, 0x19, 0xc2, 0xa4, 0xd8, 0x26, 0x65, 0x26, 0xa3, 0xa3, 0xc8, + 0x50, 0xa0, 0xba, 0x30, 0xb4, 0x68, 0x72, 0xc1, 0x75, 0xa5, 0x4d, 0x6f, + 0x27, 0x49, 0x8f, 0xdf, 0x93, 0xcc, 0xc4, 0x62, 0xd8, 0x53, 0xe3, 0x10, + 0x9f, 0xc3, 0x59, 0xca, 0x7b, 0x7b, 0xea, 0xd8, 0xd6, 0x7f, 0xf8, 0xef, + 0xf2, 0xdf, 0x3f, 0x4b, 0x6b, 0xfa, 0x9a, 0xbb, 0x75, 0xdf, 0x49, 0x4d, + 0xaf, 0x52, 0x8f, 0xde, 0xa5, 0xba, 0xec, 0xf7, 0xa9, 0x55, 0x2d, 0x97, + 0xda, 0xab, 0x20, 0xca, 0xad, 0x69, 0x32, 0xe6, 0x56, 0x4d, 0x14, 0x1d, + 0xee, 0xef, 0x49, 0x68, 0xd9, 0x47, 0x5d, 0xd9, 0x13, 0x36, 0xd8, 0x9d, + 0x41, 0x49, 0x11, 0x84, 0xba, 0xd0, 0x38, 0x1d, 0x41, 0x1e, 0x97, 0x88, + 0x10, 0x0b, 0x03, 0x40, 0xcd, 0xa5, 0x00, 0x18, 0x44, 0x8c, 0x22, 0x70, + 0x67, 0xc0, 0x40, 0x0c, 0x43, 0xc5, 0x9a, 0x56, 0x0f, 0xe0, 0xcb, 0x9b, + 0x8e, 0x01, 0xcb, 0x02, 0xc0, 0xf1, 0x64, 0x93, 0x63, 0x50, 0x0a, 0x90, + 0x40, 0xdc, 0xe5, 0xf1, 0x23, 0x1c, 0xc2, 0xb9, 0x44, 0x46, 0xa9, 0x23, + 0x1f, 0x4e, 0xa4, 0x14, 0x57, 0x3f, 0x4d, 0x66, 0x46, 0x0f, 0xc9, 0x92, + 0x86, 0x56, 0x42, 0x78, 0x67, 0x65, 0x55, 0x92, 0xc6, 0x26, 0xfb, 0x01, + 0xc7, 0xf6, 0x5a, 0x29, 0xe6, 0x34, 0x78, 0x41, 0x46, 0x15, 0x10, 0x48, + 0xc6, 0x19, 0xa8, 0x4f, 0xa6, 0x5b, 0xd2, 0x19, 0xc7, 0x3f, 0x06, 0x4e, + 0x06, 0x1c, 0xf0, 0x8e, 0x66, 0x0c, 0x98, 0x38, 0x46, 0x06, 0xf0, 0x1e, + 0x26, 0x04, 0x28, 0x12, 0xc6, 0x03, 0x30, 0x0d, 0x27, 0x6d, 0xc6, 0xd4, + 0xab, 0xcd, 0x5a, 0x1a, 0x72, 0x80, 0xa7, 0xc1, 0x28, 0x0f, 0xd5, 0xa6, + 0xc5, 0x7a, 0x01, 0x84, 0x7b, 0xb7, 0x11, 0xdd, 0x0d, 0x3e, 0x4f, 0x15, + 0x7a, 0x7a, 0xd9, 0xc3, 0x59, 0x61, 0xbe, 0x7e, 0xfb, 0xac, 0xf7, 0x86, + 0xbb, 0xcd, 0x7e, 0x3f, 0xdf, 0xe6, 0x1e, 0xaf, 0xfe, 0xbb, 0x3f, 0x7f, + 0x6b, 0x5f, 0xfb, 0x2f, 0xb3, 0xfa, 0x99, 0xbf, 0x6a, 0xa8, 0x33, 0x7b, + 0x56, 0xab, 0x6e, 0xab, 0xd3, 0x4f, 0xdf, 0xbb, 0xe9, 0xaf, 0xa9, 0x0b, + 0x56, 0x8d, 0x92, 0x1f, 0x25, 0xa4, 0xdc, 0xa6, 0x06, 0x5e, 0x26, 0x82, + 0x80, 0xb2, 0x70, 0x9b, 0x21, 0x81, 0x88, 0x84, 0xec, 0x91, 0xc3, 0x52, + 0xe9, 0xa9, 0x3e, 0x18, 0xb4, 0x1b, 0xc2, 0x38, 0x09, 0x82, 0xb8, 0x94, + 0x41, 0x49, 0x28, 0xed, 0x49, 0x8a, 0x46, 0x87, 0x0e, 0x0a, 0x90, 0xf8, + 0x63, 0x1a, 0x21, 0xe4, 0x73, 0x78, 0x51, 0xa2, 0x63, 0x19, 0x0f, 0x88, + 0x62, 0x6e, 0x00, 0x72, 0x60, 0x9e, 0x01, 0x2c, 0x60, 0x35, 0x83, 0xe0, + 0x60, 0xc8, 0x83, 0xfa, 0x60, 0x03, 0x97, 0x9a, 0x64, 0xa0, 0xad, 0x4a, + 0x63, 0xa7, 0x85, 0x3c, 0x60, 0xff, 0x02, 0x4e, 0x60, 0x80, 0x81, 0x60, + 0x60, 0x4b, 0x00, 0xe6, 0x60, 0x2d, 0x80, 0x90, 0x7a, 0x4a, 0x72, 0xa4, + 0x8c, 0x2b, 0xd9, 0x91, 0xb2, 0xe4, 0xa1, 0xa6, 0x59, 0x8c, 0x52, 0xdc, + 0x9a, 0x61, 0x92, 0x42, 0x65, 0x99, 0x67, 0x0f, 0xdb, 0xb1, 0x9d, 0xd9, + 0x5e, 0xbb, 0xf7, 0x2a, 0x7e, 0x3f, 0x96, 0xbb, 0xf8, 0x7f, 0xeb, 0x3f, + 0xd7, 0xff, 0xff, 0xeb, 0xfd, 0xfb, 0x7f, 0xd6, 0xd5, 0xaf, 0xd4, 0xdd, + 0x9b, 0xbf, 0xa7, 0xff, 0xaf, 0x6f, 0x53, 0x75, 0xf5, 0xaf, 0xa9, 0x3e, + 0xcd, 0xd9, 0xbb, 0xfd, 0xfa, 0x5c, 0xdc, 0xdb, 0x72, 0x64, 0xb4, 0xe6, + 0x44, 0xa8, 0x19, 0x39, 0x76, 0x16, 0xcc, 0x98, 0x44, 0xc8, 0x32, 0xc0, + 0x81, 0x8c, 0xcc, 0xcc, 0x8c, 0x96, 0x6a, 0x1c, 0x30, 0x70, 0x18, 0xb2, + 0x62, 0x43, 0x80, 0x70, 0x3c, 0x0d, 0x60, 0x54, 0x26, 0x4c, 0x91, 0x3a, + 0xb5, 0x69, 0xbf, 0x63, 0xf8, 0xff, 0xfb, 0xd4, 0x40, 0x58, 0x0f, 0xf5, + 0x86, 0x6d, 0x3f, 0x03, 0xf9, 0xab, 0x70, 0xb1, 0xed, 0xd7, 0xe0, 0x7f, + 0x14, 0x6e, 0x17, 0x19, 0xba, 0xfe, 0x0f, 0xce, 0x8d, 0xc2, 0x44, 0xb3, + 0xdf, 0xc1, 0xf6, 0xcd, 0xb8, 0x60, 0xc0, 0xa2, 0x22, 0x18, 0xc5, 0xb6, + 0x42, 0x90, 0xe7, 0xb4, 0x9f, 0xec, 0xc3, 0x1b, 0x53, 0x8c, 0xfb, 0x29, + 0x34, 0xc0, 0xc6, 0x09, 0x06, 0x04, 0xc1, 0x58, 0x05, 0x90, 0xc0, 0x0d, + 0x09, 0x68, 0xc9, 0xdb, 0x15, 0x54, 0xcc, 0xcc, 0xa2, 0x6c, 0xc2, 0x12, + 0x0a, 0xd0, 0x2a, 0x06, 0x59, 0x80, 0x3a, 0x03, 0x51, 0x80, 0x10, 0x01, + 0x49, 0x80, 0x06, 0x01, 0x30, 0xc3, 0xc0, 0xa8, 0x88, 0xa4, 0xb2, 0xb9, + 0x89, 0x27, 0x8b, 0xec, 0xa1, 0xb4, 0x12, 0x38, 0x3a, 0xb3, 0xc3, 0x4b, + 0x18, 0x87, 0xb7, 0x10, 0xce, 0x92, 0xbe, 0x34, 0x9a, 0xee, 0xaa, 0x5f, + 0xe6, 0xf7, 0xae, 0xe5, 0x97, 0x3b, 0xcf, 0xcf, 0xff, 0xff, 0xff, 0xf5, + 0xf7, 0xad, 0xfa, 0xdb, 0xbf, 0x66, 0xd7, 0x67, 0xba, 0xfd, 0x6f, 0xd4, + 0x8f, 0x55, 0x55, 0x27, 0xd5, 0x5e, 0xb6, 0xb5, 0xdb, 0xb3, 0xf6, 0xf6, + 0xeb, 0x7e, 0x8f, 0x59, 0x97, 0x5a, 0x9f, 0x38, 0x9f, 0x38, 0x7e, 0xf3, + 0xe8, 0x22, 0x62, 0x27, 0xa0, 0x35, 0xf2, 0x03, 0x0b, 0x1a, 0xa8, 0xcc, + 0x66, 0x06, 0xd9, 0x99, 0xb9, 0xf4, 0x9d, 0x00, 0xeb, 0x87, 0xbe, 0x6f, + 0x3a, 0x11, 0x0c, 0x02, 0x9d, 0xc8, 0xc4, 0x54, 0x64, 0x4e, 0xd5, 0x38, + 0x63, 0xce, 0xf9, 0x99, 0x83, 0x74, 0x45, 0xd1, 0x8d, 0x0a, 0x21, 0x09, + 0xfa, 0x32, 0x4a, 0x91, 0x8e, 0x5e, 0x2c, 0x51, 0x83, 0xa2, 0x20, 0x09, + 0x82, 0x7a, 0x01, 0xa1, 0x82, 0x64, 0x0d, 0x51, 0x85, 0xda, 0x10, 0x79, + 0x8e, 0x3c, 0x65, 0x91, 0xcf, 0xbf, 0x04, 0xc1, 0x85, 0x80, 0x14, 0x69, + 0x82, 0x06, 0x08, 0x21, 0x81, 0x10, 0x04, 0x29, 0x80, 0xa6, 0x02, 0x11, + 0x80, 0xc8, 0x01, 0x08, 0x1c, 0xe0, 0x07, 0x42, 0x87, 0xec, 0x10, 0xc4, + 0x46, 0x42, 0xe4, 0x26, 0x53, 0x0c, 0x6c, 0x30, 0x46, 0x7c, 0x88, 0x92, + 0x83, 0x9e, 0x5a, 0x22, 0x69, 0x99, 0x90, 0xc3, 0xe7, 0x90, 0x31, 0x27, + 0x95, 0x74, 0xca, 0xa9, 0xb4, 0xc5, 0x9f, 0x57, 0x9f, 0xf6, 0xeb, 0xf5, + 0x7b, 0xfa, 0x5f, 0xeb, 0xff, 0xbb, 0x74, 0xbd, 0x5e, 0xcb, 0xd6, 0xdd, + 0x2e, 0xa7, 0xeb, 0x66, 0xd6, 0xae, 0xe9, 0x75, 0xb6, 0xb3, 0xad, 0xcc, + 0xba, 0x8d, 0xba, 0xca, 0x9b, 0x14, 0x50, 0x65, 0x1d, 0x1f, 0x45, 0xc3, + 0x12, 0xe8, 0xb9, 0x80, 0xd1, 0xde, 0x05, 0x9d, 0x12, 0x26, 0xc4, 0xc0, + 0x21, 0x18, 0x4c, 0x20, 0x98, 0xf8, 0x2c, 0xcc, 0x83, 0xca, 0x1a, 0x41, + 0x5c, 0xc8, 0xb2, 0x08, 0x07, 0x01, 0x83, 0x56, 0x17, 0xb0, 0x9f, 0x40, + 0xa6, 0x36, 0x15, 0x96, 0x5b, 0x99, 0x3e, 0xb3, 0xe6, 0x09, 0xc1, 0x25, + 0x86, 0x31, 0xe8, 0xa6, 0xa7, 0xea, 0x49, 0x77, 0x86, 0x2d, 0x9b, 0xee, + 0x26, 0x8d, 0x42, 0x67, 0x06, 0x06, 0xc0, 0x74, 0xe6, 0x06, 0x10, 0x5e, + 0x46, 0x17, 0x08, 0x5a, 0xa6, 0x38, 0xa0, 0x3c, 0x46, 0xf6, 0x7b, 0x4f, + 0x06, 0x1b, 0xb8, 0x36, 0x26, 0x05, 0x40, 0x0d, 0x86, 0x01, 0xa8, 0x04, + 0x26, 0x00, 0x10, 0x02, 0x41, 0xc0, 0x0f, 0x82, 0xd0, 0x01, 0xb2, 0x0d, + 0xc0, 0xa0, 0x0b, 0x31, 0x08, 0x39, 0x47, 0xe2, 0x44, 0xdc, 0x59, 0x92, + 0xa5, 0xe2, 0x33, 0x92, 0xe8, 0xa8, 0xeb, 0x9a, 0xb3, 0x22, 0x71, 0x4e, + 0xce, 0xbd, 0x4f, 0x6a, 0x3e, 0xbf, 0xff, 0xff, 0xfe, 0xaf, 0xff, 0xfe, + 0xff, 0xfa, 0xed, 0xff, 0xff, 0xeb, 0xff, 0xbf, 0xfa, 0x2d, 0xdb, 0x75, + 0x3e, 0xca, 0xf3, 0x13, 0x59, 0x90, 0xe9, 0x00, 0x00, 0x8c, 0x13, 0x66, + 0x32, 0x02, 0x90, 0x20, 0x88, 0x26, 0x9b, 0x2d, 0x41, 0xdd, 0x0b, 0x44, + 0x5b, 0x93, 0x06, 0xe2, 0xe0, 0x29, 0x9c, 0xa8, 0xda, 0xa4, 0xc4, 0x14, + 0xd5, 0x30, 0x9f, 0xc9, 0xe2, 0x30, 0x0a, 0x4d, 0x51, 0x3b, 0xd9, 0x1d, + 0xa4, 0x31, 0x79, 0x85, 0x19, 0x34, 0xdc, 0xc3, 0xe5, 0x30, 0x40, 0xc0, + 0x5a, 0x30, 0x2c, 0xc0, 0x4b, 0x30, 0x28, 0x42, 0xc4, 0x31, 0xcc, 0x46, + 0x3e, 0x3f, 0xe6, 0x95, 0x61, 0x31, 0x53, 0x80, 0xa1, 0x30, 0x50, 0xc0, + 0x44, 0x30, 0x22, 0x00, 0x35, 0x30, 0x0f, 0xc0, 0x22, 0x30, 0x11, 0x00, + 0x0f, 0x00, 0xb7, 0x0a, 0x54, 0x35, 0x58, 0x15, 0x39, 0x0c, 0x17, 0x00, + 0x99, 0x91, 0xa2, 0x33, 0x34, 0x16, 0x94, 0xc8, 0xe5, 0x99, 0x92, 0x29, + 0x9a, 0x1a, 0xa8, 0xdd, 0x24, 0xdd, 0x07, 0x45, 0x68, 0x22, 0x9a, 0x8f, + 0x6e, 0xb4, 0x7d, 0x0f, 0x43, 0xaf, 0xfb, 0xfd, 0xbf, 0xeb, 0x7f, 0x7e, + 0xaf, 0x6f, 0x7e, 0xb7, 0x56, 0xa5, 0xf6, 0x4f, 0xdb, 0xa9, 0x3e, 0x9d, + 0x7b, 0x75, 0x37, 0x4f, 0xad, 0x3e, 0xa6, 0xe8, 0x23, 0xac, 0xcd, 0x9a, + 0x89, 0x36, 0x6b, 0x33, 0x15, 0xa0, 0x1d, 0x14, 0x17, 0xd0, 0x89, 0xa0, + 0x6c, 0x02, 0xe0, 0x0d, 0x20, 0x98, 0x38, 0x52, 0x36, 0x74, 0xc8, 0x60, + 0x2e, 0x83, 0xd3, 0xc2, 0x0b, 0x05, 0x95, 0x8c, 0xd9, 0x50, 0xdc, 0xb8, + 0x4b, 0x2b, 0x3a, 0xed, 0x63, 0xab, 0xa0, 0xc3, 0x7b, 0x2e, 0x38, 0xc1, + 0x6e, 0x3d, 0xd4, 0xf5, 0x0e, 0x88, 0xc0, 0xce, 0x04, 0x37, 0x54, 0xfc, + 0x26, 0x0e, 0x50, 0xc7, 0x76, 0x03, 0xfc, 0xc3, 0x07, 0x02, 0x30, 0xc0, + 0x07, 0x08, 0xc8, 0xc5, 0x95, 0x11, 0x10, 0xee, 0xf2, 0x39, 0xac, 0xc4, + 0x98, 0x01, 0x20, 0x88, 0x25, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0f, 0xf5, + 0x6e, 0x6c, 0xbf, 0x83, 0xf3, 0x9b, 0x70, 0x98, 0x0d, 0x07, 0xe0, 0x7e, + 0x54, 0x6e, 0x15, 0xf1, 0xaa, 0xfc, 0x0f, 0xe6, 0x8d, 0xc2, 0xeb, 0xb7, + 0x5f, 0x01, 0xfa, 0x51, 0xb8, 0xf3, 0x01, 0xe8, 0x01, 0x13, 0x00, 0xec, + 0x01, 0xa0, 0x10, 0x09, 0xa0, 0x32, 0x42, 0xe6, 0x0e, 0x5c, 0x3e, 0x31, + 0x9a, 0x16, 0xa0, 0xf7, 0xca, 0x04, 0x5c, 0x9f, 0x17, 0xa5, 0x72, 0x91, + 0xb2, 0x89, 0x13, 0x34, 0x14, 0x81, 0x6d, 0x24, 0x93, 0x38, 0xb3, 0x16, + 0xa2, 0x9d, 0xba, 0xff, 0xff, 0xff, 0xab, 0xdb, 0xd5, 0xfd, 0x7f, 0xff, + 0xff, 0xf5, 0x7f, 0xff, 0x4d, 0x95, 0xba, 0xda, 0x87, 0x43, 0xdf, 0xdd, + 0xff, 0x52, 0x9a, 0xb5, 0xe8, 0xb5, 0x69, 0x2d, 0xc7, 0xe0, 0x6f, 0x20, + 0xb6, 0x24, 0x99, 0x70, 0x05, 0xc2, 0x02, 0xc2, 0x08, 0x61, 0xcd, 0x8f, + 0x8c, 0xa0, 0x2d, 0x10, 0x90, 0x2c, 0x24, 0x43, 0xc5, 0x2e, 0x52, 0x74, + 0x4c, 0x0d, 0x1c, 0xc0, 0xc6, 0x18, 0xd8, 0xc7, 0xb3, 0x47, 0x78, 0xd0, + 0xe4, 0xa8, 0x4c, 0xc0, 0xc3, 0x35, 0x8c, 0xd1, 0xc7, 0x19, 0xc8, 0xc2, + 0x2d, 0x02, 0xec, 0xc0, 0x64, 0x02, 0x68, 0xc2, 0x6f, 0x04, 0x24, 0xc0, + 0x50, 0x42, 0x04, 0xfe, 0x05, 0x23, 0xec, 0xc6, 0x3d, 0x0b, 0x50, 0xc1, + 0xf0, 0x04, 0xf4, 0xc0, 0xff, 0x02, 0xb8, 0xc0, 0x92, 0x01, 0x74, 0xc0, + 0x69, 0x01, 0x10, 0xf0, 0x84, 0xc3, 0x20, 0x20, 0x17, 0xf4, 0x38, 0x17, + 0x79, 0x42, 0xe5, 0x6c, 0xa6, 0x2b, 0x29, 0x83, 0xeb, 0xae, 0xab, 0x51, + 0xad, 0xea, 0x25, 0xaa, 0x6a, 0x5a, 0xb2, 0xda, 0x9c, 0xd6, 0x3c, 0xd7, + 0xea, 0xc6, 0x5f, 0xfa, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5a, + 0xf5, 0x7d, 0x5f, 0x5b, 0x55, 0x77, 0xfa, 0xbf, 0x4b, 0xfd, 0x7b, 0xd4, + 0xfd, 0x2f, 0x5f, 0xad, 0x5a, 0x9e, 0xad, 0x1e, 0xfd, 0x4d, 0xed, 0xd4, + 0xfc, 0xc9, 0x2e, 0x62, 0xdc, 0x9c, 0x2a, 0xb9, 0x90, 0xfb, 0x03, 0x92, + 0x84, 0x2f, 0x69, 0xb3, 0x1d, 0x04, 0xc6, 0x86, 0x9a, 0x58, 0x32, 0x64, + 0xab, 0x0c, 0xe0, 0x30, 0x09, 0x71, 0x12, 0x2c, 0x10, 0x89, 0x03, 0x76, + 0x98, 0x88, 0xa4, 0xb3, 0x86, 0xcd, 0x9d, 0x3d, 0x86, 0xe5, 0x8c, 0x0c, + 0xa1, 0xe6, 0x8c, 0x9b, 0x56, 0x03, 0x8d, 0x51, 0xae, 0x2a, 0x4c, 0x74, + 0xa8, 0xfa, 0x0e, 0xc3, 0x26, 0x05, 0x4c, 0x4a, 0x21, 0x2d, 0x8c, 0x1e, + 0x70, 0x83, 0xcc, 0x27, 0x70, 0x3a, 0x8c, 0x0d, 0x93, 0x96, 0x4f, 0x61, + 0xf2, 0xf1, 0x4c, 0x49, 0xd0, 0x8f, 0x8c, 0x15, 0xe0, 0x42, 0xcc, 0x0b, + 0x90, 0x23, 0x8c, 0x07, 0x00, 0x11, 0x4c, 0x05, 0x70, 0x09, 0x00, 0xd1, + 0x17, 0x08, 0x41, 0x05, 0xa6, 0x88, 0xc4, 0x3d, 0x51, 0xc4, 0x14, 0x0e, + 0x4d, 0x09, 0x09, 0x26, 0x39, 0x23, 0x7c, 0xcc, 0x50, 0x48, 0x10, 0x64, + 0x24, 0x19, 0x02, 0x78, 0xba, 0x89, 0x3a, 0x72, 0xb9, 0xa2, 0xac, 0x68, + 0xeb, 0x9c, 0x4a, 0xda, 0xfd, 0x7f, 0xd6, 0xbd, 0x55, 0x7a, 0xfd, 0x16, + 0xaa, 0xef, 0x55, 0x2a, 0xbd, 0x54, 0x90, 0xd5, 0xbd, 0x6d, 0x7a, 0xaa, + 0xd2, 0x56, 0xa5, 0xbf, 0x5a, 0xb4, 0x92, 0xab, 0x47, 0xdb, 0x52, 0x1e, + 0x87, 0x51, 0xf7, 0xb1, 0xc7, 0xe5, 0x94, 0x79, 0xa9, 0x74, 0xd8, 0xc8, + 0x50, 0xa0, 0x6c, 0x4e, 0x8a, 0xd4, 0xbd, 0x28, 0x80, 0x6a, 0x50, 0x58, + 0xa9, 0x18, 0x58, 0x45, 0x25, 0x1d, 0x06, 0x84, 0x00, 0xc1, 0x03, 0x27, + 0x0f, 0x0e, 0x70, 0x44, 0x28, 0x1a, 0x10, 0x84, 0x34, 0xe2, 0xcc, 0x89, + 0xfe, 0x75, 0x0e, 0x77, 0xce, 0x26, 0x20, 0xa6, 0xa2, 0x99, 0x97, 0x1c, + 0x9c, 0x17, 0x19, 0x2a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x47, 0x86, 0xbc, 0x33, 0x5d, 0x49, 0xcf, 0x3f, 0x8f, 0x58, + 0x38, 0x32, 0x8b, 0x46, 0xde, 0x32, 0x6c, 0xc1, 0xfd, 0x30, 0xa2, 0xc0, + 0x21, 0x30, 0x5b, 0x80, 0x12, 0x30, 0xe9, 0xc1, 0xfd, 0x31, 0x5d, 0x0a, + 0xf4, 0x35, 0xc7, 0x11, 0x6a, 0x30, 0x48, 0x02, 0x77, 0x30, 0x23, 0x40, + 0xf0, 0x30, 0x15, 0x00, 0x65, 0x30, 0x0c, 0x40, 0x38, 0x30, 0x04, 0x00, + 0x19, 0x03, 0x3c, 0x01, 0xe2, 0x31, 0xc2, 0x91, 0x19, 0x61, 0x48, 0x89, + 0xf8, 0xbc, 0x55, 0x37, 0x19, 0xc2, 0x48, 0xc4, 0xd5, 0x12, 0x1a, 0xce, + 0x6a, 0xb3, 0xc8, 0x20, 0xa4, 0x99, 0xd3, 0x65, 0xd6, 0xa7, 0x7a, 0xff, + 0x5f, 0xff, 0xf6, 0xfd, 0x7f, 0x57, 0xb2, 0xfd, 0x7f, 0xff, 0x43, 0xff, + 0xd7, 0xff, 0x6f, 0xdf, 0xf5, 0xff, 0xff, 0xff, 0xeb, 0x1f, 0x6e, 0x8a, + 0x27, 0xc0, 0xe1, 0x11, 0x0d, 0x2c, 0xf2, 0x45, 0x90, 0x20, 0x2c, 0xc5, + 0x34, 0x53, 0x54, 0xc4, 0x31, 0xe0, 0x60, 0x72, 0xba, 0xcc, 0xc4, 0x70, + 0x00, 0x72, 0x46, 0x21, 0xf5, 0x46, 0xfe, 0xba, 0xaa, 0x40, 0x00, 0x30, + 0x1d, 0x40, 0xac, 0x30, 0x2e, 0x81, 0x0f, 0x30, 0x50, 0xc2, 0x6c, 0x30, + 0xfe, 0x13, 0xcb, 0x37, 0x63, 0x8b, 0xf8, 0x30, 0xd2, 0x02, 0x0b, 0x30, + 0x40, 0x40, 0xba, 0x30, 0x11, 0x00, 0x34, 0x30, 0x61, 0x01, 0xf6, 0x33, + 0x28, 0x89, 0x22, 0x30, 0xa3, 0x01, 0x05, 0x30, 0x23, 0x40, 0x58, 0x30, + 0x0d, 0x80, 0x2b, 0x30, 0x08, 0xc0, 0x1c, 0x30, 0x08, 0x80, 0x09, 0x00, + 0xa8, 0x35, 0x49, 0x12, 0x15, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd4, + 0xbc, 0x66, 0xc0, 0x03, 0xf2, 0xa3, 0x72, 0x83, 0xcc, 0xf8, 0x02, 0x7e, + 0x10, 0x6e, 0x15, 0x25, 0xa7, 0x00, 0x15, 0xfa, 0x00, 0x02, 0x50, 0x33, + 0x5f, 0x42, 0xbf, 0x40, 0x00, 0xc2, 0x4c, 0xd5, 0xcb, 0x25, 0xb2, 0x5b, + 0x59, 0x61, 0x96, 0x92, 0x89, 0x3d, 0x47, 0x52, 0xdd, 0x07, 0xeb, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x6e, 0xaf, 0x51, 0xe7, 0x48, 0x6a, 0x88, 0x4a, 0x44, 0x52, + 0x59, 0xc0, 0xe2, 0x07, 0x62, 0x13, 0x89, 0xd4, 0x4c, 0x88, 0x00, 0x55, + 0x98, 0x06, 0x4a, 0x13, 0xcc, 0x55, 0x51, 0xea, 0x8c, 0x54, 0x62, 0x63, + 0x8c, 0x69, 0x13, 0xd5, 0xcf, 0x94, 0x84, 0x82, 0x8c, 0x63, 0x41, 0x05, + 0x0c, 0x88, 0x11, 0x76, 0x0c, 0x22, 0x40, 0x2d, 0x8c, 0x04, 0x50, 0x67, + 0xcc, 0x1a, 0x50, 0x4c, 0x8c, 0x47, 0x30, 0xcf, 0x8c, 0x5f, 0x61, 0xea, + 0x4c, 0x3e, 0x20, 0x7f, 0x8c, 0x08, 0x40, 0x15, 0x0c, 0x07, 0xc0, 0x0f, + 0x82, 0xe0, 0x00, 0x98, 0x00, 0xe0, 0x09, 0x98, 0x01, 0x60, 0x00, 0x96, + 0x61, 0xff, 0x0e, 0x40, 0x56, 0xa2, 0x11, 0x8c, 0x81, 0x88, 0xad, 0xcb, + 0xc3, 0x70, 0xc8, 0xcc, 0x65, 0xcd, 0xc8, 0xe5, 0x20, 0x45, 0x0d, 0x0d, + 0x59, 0x02, 0xe2, 0x0c, 0xf3, 0x7d, 0x6c, 0x9b, 0x51, 0x75, 0x37, 0xff, + 0xfa, 0xff, 0xef, 0xf5, 0xea, 0x6e, 0xbd, 0x55, 0xfb, 0x7f, 0xfa, 0xbf, + 0xfd, 0x55, 0x21, 0xbd, 0x0f, 0x6e, 0xb7, 0xeb, 0x7f, 0x66, 0xa6, 0xa6, + 0xcc, 0x11, 0xd4, 0x60, 0xbe, 0x6c, 0x70, 0xa8, 0x3e, 0xc6, 0x4c, 0x0d, + 0xbc, 0x80, 0xc6, 0x83, 0xb0, 0xd1, 0x23, 0xc3, 0x6c, 0xea, 0x29, 0x2d, + 0x67, 0x08, 0xb0, 0x80, 0x49, 0x1b, 0x8f, 0xe0, 0x98, 0x20, 0x26, 0x8c, + 0x8a, 0x19, 0xb9, 0xc3, 0xac, 0xf3, 0x06, 0xc3, 0xd2, 0xe6, 0x01, 0x00, + 0x13, 0xc6, 0x0f, 0xd0, 0x5d, 0x46, 0x16, 0xe0, 0x7c, 0x06, 0x43, 0xb1, + 0x09, 0xc7, 0xc5, 0x81, 0x9f, 0xe6, 0x31, 0x60, 0x8a, 0x86, 0x07, 0x80, + 0x18, 0xe6, 0x09, 0x08, 0x5b, 0x26, 0x3d, 0x89, 0x70, 0xa6, 0x1f, 0xab, + 0x0c, 0x66, 0x3a, 0xf8, 0xa1, 0x26, 0x1e, 0xf8, 0x54, 0xe6, 0x0c, 0x68, + 0x19, 0x26, 0x00, 0xf8, 0x0b, 0x86, 0x04, 0x60, 0x11, 0x06, 0x02, 0xe0, + 0x04, 0xc3, 0x00, 0x03, 0x8d, 0x00, 0x2e, 0x16, 0x46, 0x1b, 0xd0, 0xb9, + 0x0a, 0x85, 0x92, 0x1a, 0x48, 0xad, 0x25, 0x95, 0x4f, 0x4d, 0x16, 0xb7, + 0x74, 0xd6, 0xb5, 0xbd, 0x49, 0x5b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xff, 0xfe, 0x93, 0xeb, + 0x31, 0x3a, 0x99, 0x80, 0x8e, 0x00, 0xc7, 0x25, 0x0b, 0x4f, 0x20, 0xe5, + 0xf2, 0x6c, 0x3c, 0x61, 0x76, 0x13, 0x47, 0x0c, 0x12, 0x30, 0x2e, 0x08, + 0x40, 0x04, 0x8c, 0xb1, 0x81, 0x60, 0x59, 0xa0, 0x6a, 0x82, 0x0e, 0xe2, + 0xe2, 0x09, 0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x27, 0x05, 0xc6, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x00, 0x00, 0x00, 0x08, 0x06, 0x0c, 0x02, 0x00, 0x0c, 0x06, 0x00, + 0x40, 0x00, 0x03, 0x44, 0x30, 0x38, 0x35, 0x02, 0x0a, 0x00, 0x0c, 0xbe, + 0x98, 0xc3, 0x0d, 0x49, 0x93, 0x42, 0xe6, 0x8d, 0x54, 0xd9, 0x82, 0xb8, + 0x2f, 0x18, 0xca, 0x02, 0x00, 0x00, 0x0d, 0xcc, 0x6c, 0x00, 0x6c, 0xc3, + 0xdc, 0x83, 0x4c, 0x08, 0xd6, 0xbc, 0x58, 0x07, 0x5c, 0xf3, 0x03, 0x20, + 0x3d, 0x30, 0x97, 0x05, 0x53, 0xa7, 0xdb, 0x69, 0x03, 0x67, 0xf9, 0x26, + 0x4e, 0x81, 0x8c, 0xf0, 0xc2, 0x06, 0x03, 0x81, 0x50, 0x18, 0xae, 0x54, + 0x40, 0x60, 0xf8, 0x8e, 0x9f, 0x34, 0x40, 0x2f, 0xa8, 0x82, 0xa1, 0xce, + 0x03, 0x08, 0x60, 0x50, 0x06, 0x10, 0x00, 0x18, 0x23, 0x0f, 0x4c, 0x9b, + 0x03, 0x62, 0x01, 0xbc, 0x03, 0x1a, 0x06, 0x03, 0x81, 0x48, 0x18, 0x78, + 0x05, 0x00, 0x50, 0x0f, 0xa4, 0xa7, 0x5c, 0x52, 0xe2, 0x01, 0x90, 0xc2, + 0xa1, 0x70, 0x26, 0x05, 0x00, 0x28, 0x1d, 0x19, 0x8c, 0x68, 0x07, 0x00, + 0xdf, 0xcb, 0x24, 0x4c, 0x58, 0xc9, 0xc2, 0xfa, 0x60, 0x61, 0x44, 0x07, + 0x81, 0x86, 0x00, 0xc4, 0x06, 0x1a, 0xc1, 0x50, 0x18, 0x20, 0x00, 0xe1, + 0x73, 0x41, 0x40, 0x67, 0xfd, 0x34, 0xcb, 0x67, 0x8b, 0xe6, 0xea, 0x03, + 0x03, 0x40, 0xb8, 0x0c, 0x16, 0x01, 0x40, 0x28, 0x0a, 0x80, 0x10, 0x13, + 0x82, 0x80, 0xa8, 0x28, 0x06, 0x84, 0x11, 0xff, 0x63, 0x45, 0x9b, 0x9b, + 0xaa, 0xc1, 0x68, 0xe1, 0xdf, 0x06, 0xf1, 0x87, 0xe8, 0x19, 0xa2, 0x0a, + 0x27, 0x74, 0x7f, 0xf7, 0xfd, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x00, 0x08, + 0xfe, 0x85, 0x47, 0xee, 0x7a, 0xc0, 0x00, 0xc3, 0x30, 0x58, 0xdd, 0xcf, + 0x50, 0x00, 0x24, 0xee, 0x0d, 0x27, 0xb9, 0xea, 0x80, 0x02, 0x1d, 0x41, + 0x65, 0xb7, 0x38, 0xd0, 0x00, 0x90, 0x58, 0xad, 0x0c, 0xc4, 0xa0, 0x29, + 0xe2, 0x0f, 0x20, 0x84, 0x10, 0x65, 0xc7, 0xd9, 0x7b, 0xff, 0x1f, 0xca, + 0xaa, 0x77, 0xdb, 0xe5, 0x16, 0x8e, 0x60, 0xcb, 0x08, 0x20, 0x5d, 0x22, + 0xe4, 0x00, 0x9b, 0x2a, 0x14, 0xc8, 0x98, 0x82, 0x65, 0xe3, 0x3d, 0x44, + 0xa9, 0x97, 0xff, 0xff, 0xff, 0xb5, 0x67, 0x4f, 0x7f, 0xff, 0xff, 0xf9, + 0x03, 0x29, 0x10, 0x42, 0x4c, 0xb2, 0x33, 0x67, 0x58, 0x8b, 0x97, 0x47, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x1b, 0xa2, 0x70, 0xe8, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x16, 0x44, 0xd0, 0xd1, 0x5d, 0x24, 0x4c, 0x07, 0x84, + 0xd4, 0xc4, 0xad, 0x37, 0x8c, 0x01, 0xc1, 0xb0, 0xd2, 0xc1, 0x09, 0x4c, + 0x03, 0x0b, 0x14, 0xd4, 0xec, 0x1b, 0x4c, 0x35, 0x01, 0xa0, 0xd3, 0xd4, + 0x37, 0x0c, 0x2c, 0x0e, 0xc0, 0xc2, 0xac, 0x34, 0x0c, 0x12, 0x40, 0x09, + 0x18, 0x48, 0x00, 0x4d, 0x2c, 0xcc, 0x4c, 0x46, 0x44, 0xc3, 0x24, 0x00, + 0x8d, 0x0c, 0x00, 0x60, 0x58, 0xc6, 0x00, 0x44, 0x40, 0x28, 0x0d, 0x14, + 0xd3, 0x22, 0x24, 0xd9, 0xf0, 0x39, 0xcf, 0x00, 0xf0, 0x1a, 0x03, 0x0e, + 0x63, 0x93, 0x85, 0xe2, 0xa8, 0x1f, 0x26, 0x40, 0x62, 0x2c, 0x01, 0xb6, + 0x43, 0xf2, 0x7c, 0x9f, 0x64, 0xdc, 0x09, 0x0a, 0x01, 0x60, 0x40, 0x2e, + 0x0c, 0x3d, 0x80, 0xdf, 0xbf, 0xbb, 0xf0, 0xfc, 0xc6, 0x48, 0x38, 0x31, + 0x64, 0x0c, 0xc0, 0xe2, 0xff, 0xfc, 0xa8, 0xe5, 0xe2, 0xa1, 0x7c, 0xd5, + 0x3f, 0xff, 0xf4, 0xcc, 0xd3, 0x4d, 0x35, 0x37, 0xff, 0xff, 0xe9, 0xa0, + 0xc9, 0xa2, 0x9e, 0x87, 0xfe, 0x46, 0x16, 0xca, 0x3f, 0xf9, 0x49, 0xca, + 0x17, 0x53, 0x5a, 0xeb, 0x4c, 0xbe, 0x7c, 0x9b, 0x69, 0x3e, 0x58, 0x47, + 0xff, 0xff, 0xff, 0xdd, 0x65, 0x03, 0x23, 0xff, 0xff, 0xff, 0xfe, 0x92, + 0x89, 0x93, 0x86, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x8e, 0x93, + 0x51, 0x50, 0x60, 0x10, 0x00, 0x06, 0x00, 0x44, 0x8c, 0x65, 0xc6, 0x01, + 0x86, 0x0f, 0x42, 0x70, 0x63, 0x7e, 0x00, 0x06, 0x4a, 0xe9, 0xc2, 0x62, + 0x8e, 0x04, 0x06, 0x07, 0x41, 0x7e, 0x61, 0xe6, 0xa9, 0x66, 0x02, 0x60, + 0xc2, 0x61, 0xb0, 0xdd, 0x60, 0x20, 0x9a, 0x31, 0xae, 0x27, 0xb3, 0xc3, + 0x54, 0xe8, 0x31, 0x89, 0x0b, 0x33, 0x36, 0xa3, 0xa0, 0x30, 0x6c, 0x08, + 0x93, 0xb6, 0x60, 0xea, 0x31, 0x24, 0x01, 0x60, 0xfe, 0x81, 0x9c, 0x4e, + 0x80, 0x60, 0x10, 0xc0, 0x03, 0x06, 0x86, 0x44, 0x76, 0x01, 0xa3, 0x4a, + 0xc0, 0x98, 0x04, 0x0c, 0x3a, 0x26, 0x0b, 0x46, 0x24, 0x88, 0x73, 0xba, + 0x60, 0x6c, 0x15, 0xb0, 0x0d, 0x01, 0x80, 0xc6, 0xa3, 0x40, 0xe4, 0x88, + 0x28, 0xe1, 0x73, 0xaa, 0x03, 0x0a, 0x8a, 0x43, 0x20, 0x82, 0x82, 0x90, + 0x01, 0x03, 0x10, 0xd2, 0x80, 0xad, 0x45, 0xca, 0x39, 0xa9, 0x4d, 0x93, + 0x66, 0x03, 0x08, 0x06, 0xc0, 0xc3, 0x41, 0x91, 0x1d, 0x89, 0xd0, 0x0c, + 0x0a, 0x0c, 0x01, 0x00, 0x73, 0x62, 0x65, 0x46, 0x44, 0x58, 0xc7, 0xf0, + 0x6c, 0x90, 0xbf, 0x01, 0xa8, 0x01, 0x80, 0xc0, 0x03, 0x9e, 0x18, 0x84, + 0x2e, 0x75, 0x15, 0x51, 0x45, 0x4f, 0xfc, 0x2d, 0x04, 0x9a, 0x25, 0xc5, + 0x02, 0x21, 0x08, 0xed, 0x12, 0x13, 0x65, 0xa9, 0x24, 0xb4, 0x91, 0xff, + 0x29, 0x0c, 0xd1, 0xc2, 0x91, 0x1e, 0x64, 0x4c, 0x15, 0x8a, 0xc4, 0x55, + 0x1a, 0xd1, 0x45, 0x49, 0x2d, 0x49, 0x7f, 0xe5, 0x23, 0xe6, 0x64, 0xd1, + 0x91, 0x1e, 0x3e, 0x06, 0x30, 0x65, 0xc2, 0xc8, 0x00, 0xb0, 0x6c, 0x73, + 0x49, 0xf4, 0xaa, 0x32, 0x31, 0x2e, 0xa0, 0xb1, 0x95, 0x14, 0x88, 0xb1, + 0x9a, 0x13, 0x5f, 0xe9, 0x8b, 0xb2, 0x6c, 0xde, 0xe5, 0x34, 0x08, 0x28, + 0x9a, 0x83, 0x66, 0x03, 0x6a, 0x1f, 0x65, 0x22, 0x2c, 0x4d, 0xff, 0xff, + 0xfe, 0x5d, 0x35, 0x29, 0x0c, 0xe8, 0x64, 0x50, 0x1a, 0x02, 0x97, 0x89, + 0xa2, 0x79, 0x16, 0xff, 0xff, 0xfd, 0x94, 0xeb, 0x27, 0x08, 0x2a, 0x80, + 0x00, 0x00, 0x00, 0x02, 0x81, 0x80, 0xc0, 0x60, 0x20, 0x04, 0x00, 0x00, + 0x01, 0xe1, 0x3a, 0x18, 0xf0, 0xc0, 0x01, 0x33, 0x8c, 0x19, 0x01, 0x21, + 0xe3, 0x45, 0xad, 0xcc, 0x2a, 0xbe, 0x16, 0xb6, 0x85, 0xcc, 0x46, 0xd0, + 0x18, 0x98, 0x44, 0x22, 0x64, 0xe1, 0x89, 0xc2, 0x4b, 0xc8, 0x5c, 0x1c, + 0x2c, 0x56, 0x93, 0x53, 0x8f, 0x62, 0xc1, 0x55, 0x18, 0x63, 0x03, 0x72, + 0x89, 0xa0, 0x0e, 0xe0, 0x5b, 0x41, 0x5a, 0x53, 0xef, 0x0a, 0x90, 0x72, + 0x44, 0x0b, 0xf1, 0xd5, 0x24, 0x47, 0x6a, 0xbf, 0xf7, 0x1d, 0xa4, 0xd1, + 0xca, 0xa5, 0x7f, 0xfb, 0xa9, 0x15, 0x2d, 0x4f, 0xff, 0xff, 0x5f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xe4, 0xa1, 0x6a, 0xd0, 0xff, 0x97, + 0x87, 0xb5, 0x5f, 0xf2, 0xb2, 0x73, 0x2e, 0xb4, 0x94, 0x75, 0x49, 0x37, + 0xff, 0xff, 0xff, 0x65, 0x1d, 0x16, 0xab, 0xff, 0xff, 0xff, 0xda, 0x9a, + 0x8d, 0x89, 0x55, 0x01, 0x39, 0x6f, 0xac, 0xc0, 0x30, 0x1e, 0xcc, 0x01, + 0x42, 0x7c, 0xc9, 0xc0, 0x42, 0xcc, 0x28, 0xc4, 0x20, 0x18, 0x07, 0xa6, + 0x1f, 0xa3, 0x1e, 0x63, 0xba, 0x36, 0xa6, 0x2a, 0xa1, 0x92, 0x60, 0xaa, + 0x01, 0xc6, 0x13, 0xe0, 0xce, 0xff, 0xfb, 0xd4, 0x60, 0x13, 0x08, 0x87, + 0xfd, 0x65, 0xcc, 0x1f, 0x7b, 0x00, 0x00, 0x62, 0x2b, 0x89, 0xba, 0xed, + 0x1c, 0x00, 0x1d, 0xbd, 0x97, 0x29, 0x4f, 0x65, 0xed, 0xc9, 0x66, 0x32, + 0x26, 0x35, 0xb6, 0x9d, 0xb9, 0x60, 0x62, 0x09, 0xc6, 0x0e, 0xe1, 0xb4, + 0x65, 0xb2, 0x94, 0xe6, 0x22, 0x41, 0xa2, 0x61, 0x78, 0x05, 0x26, 0x01, + 0x40, 0x52, 0x2c, 0x02, 0x40, 0x10, 0x00, 0x08, 0x01, 0x32, 0x4b, 0x5e, + 0xc1, 0x9d, 0xd5, 0xd6, 0xaa, 0x89, 0x59, 0x33, 0x39, 0x1c, 0x72, 0x25, + 0x8e, 0x04, 0x08, 0xd2, 0xd9, 0x7d, 0x68, 0xdb, 0xb6, 0xfd, 0xc0, 0x0c, + 0x42, 0x41, 0x5e, 0x9d, 0xff, 0x90, 0x57, 0x86, 0xdf, 0xfb, 0x78, 0x54, + 0x86, 0x1d, 0xc8, 0xe4, 0x39, 0x62, 0xa5, 0x97, 0xdd, 0xdf, 0xb5, 0x18, + 0x87, 0xe3, 0x79, 0x3b, 0x0d, 0x72, 0x95, 0xff, 0x97, 0xd7, 0x96, 0x50, + 0xbf, 0xf3, 0xf5, 0x29, 0x23, 0x10, 0xe5, 0xe8, 0x62, 0x1c, 0xc7, 0x39, + 0x5b, 0xb7, 0x23, 0x7d, 0x1d, 0xc9, 0xfa, 0x91, 0x07, 0xf2, 0x95, 0xdb, + 0x87, 0xed, 0x61, 0xda, 0xf4, 0xf7, 0x23, 0x16, 0x3f, 0x74, 0xf2, 0xce, + 0x67, 0xf5, 0xed, 0xd4, 0x67, 0x0e, 0x25, 0x33, 0xb0, 0xe4, 0x43, 0x91, + 0xf6, 0x77, 0x23, 0x7d, 0x1d, 0xc8, 0x7e, 0x37, 0x7e, 0x51, 0x39, 0x5e, + 0x9e, 0x37, 0x2f, 0xbb, 0x1b, 0xa7, 0xce, 0xbd, 0xbd, 0x58, 0xdd, 0x24, + 0xb2, 0x93, 0x92, 0xb9, 0x7e, 0x54, 0x96, 0x35, 0x49, 0x49, 0x49, 0x63, + 0x9f, 0xdd, 0x53, 0xdb, 0xd7, 0x3f, 0x55, 0x30, 0xe6, 0xf3, 0xaf, 0x9d, + 0xba, 0x7e, 0x4c, 0xf6, 0xd5, 0xdb, 0x2e, 0x5b, 0x3b, 0x81, 0xdf, 0x46, + 0xb9, 0x14, 0xb7, 0xac, 0x3f, 0x58, 0x52, 0x58, 0xae, 0xfe, 0x4b, 0x39, + 0x77, 0x31, 0x00, 0x7c, 0x10, 0x77, 0x40, 0x00, 0x01, 0x60, 0x20, 0xee, + 0xd9, 0xbb, 0x41, 0x42, 0x06, 0xb9, 0xa0, 0xf7, 0x43, 0x5e, 0xa8, 0xd4, + 0xbf, 0x3b, 0xb3, 0x4d, 0x79, 0x51, 0x08, 0xb4, 0x8e, 0x4c, 0xb1, 0x80, + 0xa6, 0xd3, 0xc1, 0x6d, 0x98, 0x33, 0xfe, 0xd7, 0xee, 0x13, 0x11, 0xc1, + 0xf8, 0x58, 0x02, 0x0b, 0x14, 0x22, 0x0b, 0xc8, 0x89, 0x63, 0x8d, 0xa9, + 0xe8, 0xfa, 0x19, 0xcf, 0x53, 0xfa, 0x7f, 0xfe, 0x9f, 0xfe, 0x67, 0x46, + 0xee, 0x8d, 0xa3, 0x2b, 0xf3, 0xd1, 0xbb, 0xfe, 0x7d, 0xa8, 0xe6, 0x36, + 0xae, 0x8d, 0x74, 0x6f, 0xbf, 0xfe, 0x93, 0xfa, 0x39, 0x9d, 0x69, 0xff, + 0xff, 0x53, 0x5c, 0xe1, 0xb9, 0xa4, 0xca, 0x7e, 0x58, 0x02, 0x01, 0xb9, + 0x31, 0x00, 0xc0, 0x90, 0x39, 0x4c, 0x22, 0x46, 0xfc, 0xcf, 0xac, 0xc1, + 0x4c, 0x74, 0x84, 0x60, 0xc1, 0x6c, 0x25, 0x0c, 0x1d, 0xc9, 0x8c, 0xd0, + 0x7c, 0xf0, 0x08, 0x88, 0x58, 0xc1, 0x98, 0x12, 0xcc, 0x1d, 0x01, 0x30, + 0xc1, 0x88, 0x19, 0x4c, 0x01, 0x01, 0x20, 0xd5, 0x71, 0x6a, 0x00, 0x43, + 0x66, 0x60, 0x48, 0x01, 0x47, 0x69, 0x8d, 0x25, 0xf3, 0x8b, 0x2f, 0xa7, + 0x39, 0xd1, 0x5d, 0xa5, 0xfd, 0x4a, 0xd2, 0x63, 0x58, 0x95, 0x14, 0x7d, + 0xdd, 0x98, 0x85, 0xb5, 0xa9, 0x3b, 0x29, 0x54, 0xae, 0x55, 0x1b, 0x82, + 0xc4, 0x65, 0x8e, 0x53, 0xbd, 0x6a, 0x01, 0x70, 0x99, 0xd3, 0x5e, 0x9f, + 0x7d, 0x5d, 0xd9, 0x6c, 0x79, 0x87, 0x3b, 0xb7, 0xab, 0x4a, 0x9c, 0xa8, + 0x7a, 0x3a, 0xe4, 0xc3, 0xb9, 0x9c, 0xa4, 0xe4, 0xe9, 0x6a, 0x34, 0x95, + 0x55, 0x7a, 0x9e, 0x51, 0x5d, 0x5a, 0xad, 0x7b, 0x32, 0x98, 0xe6, 0x71, + 0x62, 0x57, 0x3e, 0x7d, 0x1d, 0x3a, 0xa1, 0x6a, 0x4e, 0xa8, 0x62, 0xb7, + 0x2b, 0x95, 0x4d, 0xa8, 0x6a, 0x1a, 0xf9, 0xb4, 0xe5, 0x3a, 0x5c, 0x73, + 0x56, 0xe5, 0x12, 0xe8, 0xd2, 0x55, 0x7c, 0xb0, 0x9c, 0xb5, 0xc5, 0x75, + 0x67, 0xd6, 0xdd, 0x6b, 0xfe, 0x6b, 0x8b, 0x5a, 0xd6, 0xb7, 0xf9, 0xae, + 0xbf, 0xf8, 0xae, 0xb1, 0xbc, 0xd6, 0xbf, 0x3f, 0xfc, 0x5b, 0xd6, 0xbe, + 0xd6, 0xdf, 0xc5, 0xad, 0xfd, 0x75, 0x6b, 0x6f, 0x50, 0xa3, 0xab, 0xe6, + 0x61, 0x56, 0xb2, 0xb1, 0x02, 0x11, 0x45, 0x2a, 0xb5, 0x5d, 0x1a, 0xd6, + 0x85, 0x1a, 0x53, 0x94, 0x4f, 0x47, 0xda, 0x74, 0xd1, 0x54, 0xea, 0xd9, + 0x0a, 0xe8, 0x28, 0x29, 0xbc, 0x1b, 0x30, 0x02, 0x20, 0x40, 0x90, 0x50, + 0xa5, 0x08, 0xf6, 0x06, 0x19, 0x0a, 0x82, 0x18, 0x28, 0x30, 0x5d, 0xbc, + 0xf2, 0x70, 0x0a, 0x10, 0xc0, 0x01, 0xe6, 0xae, 0x63, 0x2d, 0x30, 0x43, + 0x33, 0xb9, 0xdd, 0x01, 0x31, 0xa9, 0xd0, 0xcb, 0x24, 0x47, 0xd1, 0xcc, + 0xe4, 0xd0, 0x1c, 0xa2, 0x50, 0x3d, 0x87, 0xb2, 0x93, 0x55, 0xbd, 0x68, + 0xba, 0x28, 0xa3, 0x49, 0xff, 0xff, 0xfe, 0x6b, 0x7c, 0xdf, 0xfe, 0x9f, + 0xff, 0xff, 0xff, 0xff, 0xd5, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, + 0x54, 0x1d, 0x90, 0x34, 0xd5, 0x80, 0x86, 0xff, 0xd4, 0xae, 0x2f, 0x05, + 0xaa, 0x00, 0x32, 0xc4, 0x00, 0x00, 0x18, 0x41, 0x83, 0x99, 0x98, 0xd2, + 0xcc, 0x1a, 0xf1, 0xb2, 0x81, 0xc5, 0xf0, 0x4e, 0x98, 0x2e, 0x07, 0x21, + 0x8a, 0x22, 0xa6, 0x9e, 0xec, 0x10, 0xd9, 0x8f, 0x40, 0x12, 0x98, 0x3b, + 0x80, 0x21, 0x83, 0xe0, 0x34, 0x18, 0x12, 0x81, 0x49, 0x84, 0x71, 0x3d, + 0x1b, 0x4f, 0x88, 0x31, 0x97, 0x40, 0x9e, 0x18, 0x39, 0x83, 0x19, 0xd1, + 0x81, 0xa7, 0x28, 0x61, 0x82, 0xc2, 0x32, 0xb8, 0x11, 0xb9, 0xb5, 0xdb, + 0xb7, 0xa0, 0x47, 0x6a, 0x23, 0x24, 0xca, 0x54, 0x8d, 0xd3, 0x76, 0x6d, + 0x4b, 0xa6, 0x5b, 0xbc, 0x83, 0xff, 0xfb, 0xd4, 0x40, 0x2c, 0x09, 0xd4, + 0xff, 0x69, 0xc5, 0xbb, 0xd9, 0xa3, 0x70, 0xa0, 0x8c, 0xe8, 0x8a, 0x7f, + 0x54, 0x6e, 0x13, 0xb9, 0xa5, 0x19, 0x4f, 0x62, 0x8d, 0xc2, 0x7e, 0x34, + 0xa2, 0x8d, 0xfc, 0xc9, 0xb8, 0x75, 0x22, 0x5a, 0x8d, 0x65, 0x52, 0xe6, + 0xbb, 0xbf, 0xb7, 0xbd, 0x7f, 0x7b, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0x75, 0x2b, + 0xbb, 0xf4, 0x9e, 0xe4, 0xc8, 0x1a, 0x40, 0x84, 0xcc, 0xc9, 0xca, 0x80, + 0x28, 0x88, 0x1c, 0x30, 0xb6, 0x82, 0x15, 0x5d, 0x34, 0x0a, 0x62, 0x95, + 0x00, 0xee, 0xc4, 0x99, 0x68, 0xac, 0xa2, 0x54, 0x0c, 0x59, 0xe1, 0x44, + 0x4e, 0x70, 0xb9, 0x8b, 0xd6, 0x00, 0x00, 0x13, 0x91, 0x80, 0x00, 0x06, + 0x04, 0x78, 0x19, 0xa6, 0x24, 0xf1, 0x0b, 0x46, 0x46, 0x09, 0x2b, 0x86, + 0x67, 0x80, 0x1c, 0x66, 0x06, 0x40, 0x24, 0x46, 0x0a, 0xe0, 0x91, 0xa6, + 0x74, 0x10, 0x18, 0xa1, 0xc1, 0xfe, 0x98, 0x1b, 0x60, 0x93, 0x98, 0x34, + 0x61, 0xb8, 0x98, 0x10, 0xe0, 0x61, 0x18, 0x29, 0x80, 0xad, 0x9b, 0x58, + 0x67, 0x73, 0x98, 0x88, 0xc0, 0x54, 0x98, 0x1b, 0x60, 0x13, 0x13, 0xb5, + 0x1e, 0x9c, 0x65, 0x80, 0x17, 0xb4, 0xbb, 0xae, 0x15, 0x65, 0x79, 0x9d, + 0x84, 0x99, 0x81, 0x9d, 0xd6, 0x95, 0x6a, 0x5e, 0x09, 0x09, 0x1b, 0xaa, + 0xfb, 0x4b, 0xf4, 0x5f, 0x79, 0xdb, 0xb1, 0xdc, 0xb5, 0x0d, 0x4c, 0x6e, + 0xd6, 0x5d, 0xbb, 0x2c, 0xc7, 0x1b, 0x9c, 0xc3, 0x3e, 0x7e, 0x7c, 0xff, + 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfd, 0x5e, 0xab, 0x46, 0xa0, 0x94, 0x0b, 0x69, 0x8e, 0x71, 0x3a, + 0x5c, 0x01, 0xa2, 0x40, 0xe0, 0x07, 0xd9, 0x56, 0xd3, 0x52, 0x62, 0x81, + 0x00, 0xeb, 0x44, 0x99, 0x44, 0x41, 0xf6, 0x2a, 0x92, 0x20, 0x1a, 0xb6, + 0x03, 0x00, 0xc1, 0x85, 0x34, 0x99, 0x3e, 0x53, 0xa2, 0x62, 0xb2, 0x36, + 0x52, 0x15, 0xb3, 0x00, 0x40, 0x35, 0x30, 0x88, 0x17, 0x63, 0x17, 0xe2, + 0xd5, 0x30, 0x24, 0x06, 0x43, 0x01, 0x30, 0x47, 0x30, 0x0f, 0x0c, 0x53, + 0x00, 0x80, 0x5e, 0x30, 0x6b, 0x13, 0xb3, 0x3d, 0x33, 0x17, 0x31, 0xc8, + 0x0e, 0xd3, 0x01, 0x10, 0x40, 0x24, 0xaa, 0xaa, 0x33, 0x87, 0x2d, 0xa8, + 0x3f, 0xf2, 0x97, 0xea, 0xd6, 0xde, 0x77, 0xdd, 0xa1, 0x55, 0xb1, 0x42, + 0xf4, 0xe3, 0xae, 0xcf, 0x3b, 0x34, 0xf8, 0x6a, 0x5c, 0xf3, 0xf7, 0x19, + 0xba, 0x94, 0xf9, 0xf2, 0xad, 0x7b, 0xf9, 0x6f, 0x0e, 0x77, 0xff, 0x3c, + 0xff, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x57, 0xfd, 0xbe, 0xbd, 0x4d, 0xd4, 0xed, 0x98, 0x2a, 0x98, 0xbc, 0x0b, + 0xee, 0x39, 0xc9, 0x16, 0x50, 0x22, 0xe0, 0x18, 0x84, 0x4f, 0xb6, 0x9d, + 0x52, 0xd0, 0x9c, 0x33, 0x06, 0x80, 0x00, 0x38, 0x23, 0x31, 0xa2, 0x44, + 0x68, 0x18, 0x01, 0xa2, 0xda, 0xec, 0x64, 0x6f, 0x17, 0x7d, 0x35, 0xbd, + 0x10, 0x30, 0x0c, 0x02, 0x01, 0x31, 0x80, 0x45, 0x19, 0x33, 0x4c, 0x83, + 0x8a, 0x32, 0x0d, 0x81, 0xcf, 0x30, 0x08, 0x80, 0x3f, 0x30, 0x1b, 0x02, + 0x18, 0x30, 0x89, 0x83, 0x91, 0x30, 0x11, 0x80, 0x3c, 0x30, 0x13, 0x80, + 0x27, 0x30, 0x4b, 0xc1, 0xbc, 0x30, 0x08, 0x00, 0x2a, 0x30, 0x41, 0xc0, + 0xe7, 0x35, 0x22, 0x83, 0x8b, 0x30, 0xe9, 0x40, 0xbb, 0x30, 0x27, 0x00, + 0x2e, 0x3f, 0xcf, 0x37, 0x0e, 0x33, 0xcf, 0x10, 0x86, 0xa9, 0x1c, 0x37, + 0x81, 0x92, 0xda, 0xdc, 0xba, 0x50, 0xf6, 0x52, 0xe1, 0x32, 0xc5, 0x6e, + 0xfd, 0x9d, 0x33, 0xa5, 0xc3, 0x03, 0x57, 0xa4, 0x84, 0xcf, 0xc6, 0x77, + 0x77, 0x0c, 0xf9, 0xbc, 0x31, 0xcb, 0x7f, 0xf8, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xdf, 0xdb, 0x51, 0xdd, 0x44, 0x3c, 0x0d, 0x44, 0x78, 0x40, 0x52, 0x27, + 0x8e, 0x81, 0x0f, 0x1e, 0x56, 0x60, 0x82, 0x75, 0x9c, 0x3a, 0x70, 0xcc, + 0x35, 0x00, 0xb9, 0x83, 0x12, 0xc8, 0xcc, 0x39, 0xb8, 0x26, 0xe2, 0xde, + 0xc8, 0x19, 0xbd, 0x7d, 0x00, 0x03, 0x01, 0xa2, 0x5d, 0x39, 0x3e, 0x41, + 0xe3, 0xcf, 0x72, 0x72, 0x34, 0x03, 0x2f, 0x30, 0x30, 0x4a, 0x98, 0x50, + 0x8a, 0x01, 0x86, 0xc8, 0xc9, 0x18, 0x4f, 0x80, 0xe9, 0x83, 0xb0, 0x3a, + 0x18, 0xbd, 0x89, 0xf1, 0x80, 0x68, 0x06, 0x98, 0x29, 0x02, 0x49, 0xd0, + 0x53, 0x2e, 0x99, 0x5e, 0x85, 0x09, 0x81, 0xc0, 0x11, 0x01, 0x8e, 0xe0, + 0xd8, 0x00, 0x04, 0x44, 0x41, 0x31, 0xc0, 0x31, 0xc4, 0x34, 0x49, 0x1d, + 0x64, 0x40, 0x8f, 0x1d, 0xc5, 0x77, 0x1c, 0x44, 0xca, 0x4c, 0x47, 0xa0, + 0x33, 0xc5, 0xf6, 0x25, 0x09, 0xe2, 0xa3, 0xcf, 0x31, 0x59, 0xe5, 0xe4, + 0xd5, 0xd4, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xab, 0xfe, 0xff, 0xf7, 0xfb, + 0xea, 0xff, 0xbf, 0xd5, 0xab, 0xf7, 0xd2, 0xf5, 0xab, 0x53, 0xab, 0xb2, + 0x59, 0x95, 0x79, 0x99, 0x81, 0xba, 0x03, 0x9e, 0x00, 0xd8, 0xd1, 0x34, + 0x23, 0x0c, 0x4c, 0x8a, 0x42, 0x8e, 0x81, 0xbb, 0x93, 0x8e, 0xc5, 0x13, + 0x86, 0xa8, 0x01, 0x50, 0x04, 0x65, 0x15, 0x10, 0xf6, 0x21, 0x40, 0x1f, + 0x10, 0x39, 0xa1, 0x60, 0xcc, 0xd9, 0xf0, 0xdd, 0xbd, 0xf9, 0x50, 0x07, + 0x72, 0x00, 0x06, 0x01, 0xe0, 0x63, 0xa6, 0x60, 0x40, 0xac, 0x46, 0x86, + 0xc8, 0x66, 0x46, 0x2a, 0x08, 0xff, 0xfb, 0xd4, 0x40, 0x5b, 0x0d, 0x95, + 0x1c, 0x69, 0x44, 0x13, 0xd3, 0x83, 0x72, 0xa1, 0x8d, 0x28, 0x66, 0x7f, + 0x34, 0x6e, 0x18, 0xa1, 0xaf, 0x04, 0x2f, 0xee, 0xad, 0xc3, 0x19, 0xb5, + 0xe0, 0x49, 0xfd, 0x4d, 0xb8, 0x7b, 0x61, 0xc0, 0x80, 0x98, 0x28, 0x20, + 0xcc, 0x19, 0x10, 0x60, 0x8b, 0x18, 0x1d, 0xe0, 0x01, 0x18, 0x03, 0xa0, + 0x48, 0x18, 0x43, 0xc0, 0x81, 0x98, 0x02, 0xc0, 0x7e, 0x98, 0x1b, 0x81, + 0xe2, 0x1b, 0x66, 0xe9, 0x5d, 0x18, 0x20, 0x40, 0xf5, 0x18, 0x0e, 0xa0, + 0x51, 0x9e, 0x5f, 0x1b, 0x70, 0x99, 0xca, 0x01, 0x8c, 0x12, 0x4d, 0x4b, + 0x1d, 0xa6, 0x09, 0x4d, 0xd8, 0x61, 0xfe, 0xcd, 0xf3, 0xeb, 0xfd, 0x23, + 0x9e, 0xe4, 0x4e, 0x62, 0x30, 0xfb, 0x5a, 0xd4, 0xaa, 0x59, 0xff, 0xf8, + 0xe7, 0xdf, 0xcb, 0x79, 0x7f, 0xff, 0x35, 0xff, 0xaf, 0xfd, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0xaf, + 0xdb, 0xa9, 0x1e, 0x5f, 0x52, 0x67, 0x03, 0xbe, 0x06, 0x09, 0x11, 0x44, + 0xa8, 0x39, 0xc4, 0xfc, 0x9c, 0x18, 0x6c, 0xf2, 0xe2, 0xe6, 0x28, 0x1a, + 0xa0, 0x21, 0x10, 0x58, 0x69, 0xd5, 0x18, 0xa0, 0x40, 0xc2, 0x2d, 0x05, + 0xb9, 0x94, 0x62, 0x5a, 0xc1, 0x80, 0x90, 0x12, 0xf9, 0xa1, 0xca, 0x29, + 0x21, 0x8e, 0x82, 0xd2, 0x31, 0xb4, 0x8e, 0x2c, 0x79, 0x84, 0x26, 0x12, + 0xa0, 0xd0, 0x61, 0x06, 0x19, 0x50, 0x93, 0x46, 0x09, 0xf0, 0x26, 0xa6, + 0x07, 0xb8, 0x0b, 0x46, 0x38, 0x00, 0x13, 0x26, 0x09, 0x30, 0x25, 0x26, + 0x14, 0x18, 0x7e, 0xc6, 0x63, 0x09, 0x6d, 0x86, 0x35, 0x98, 0x6a, 0xc6, + 0x0c, 0xe0, 0x21, 0xa7, 0x77, 0x00, 0x6a, 0x03, 0xa6, 0xb6, 0x44, 0x05, + 0x0d, 0x30, 0x50, 0x00, 0x30, 0x0a, 0xc7, 0x1a, 0x1d, 0x8b, 0xce, 0x4f, + 0xa8, 0xfb, 0x07, 0x8e, 0x4a, 0xe7, 0x5a, 0x33, 0xf7, 0xa8, 0x72, 0xbb, + 0xfb, 0xfd, 0xec, 0xc4, 0x3b, 0x96, 0xfb, 0xbe, 0xf3, 0xf9, 0xce, 0xff, + 0x3f, 0xbc, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xf6, 0xf7, 0xfe, 0xdf, 0x5f, + 0xfd, 0xb5, 0xa9, 0xbf, 0xff, 0xf7, 0xef, 0xe9, 0xfb, 0x75, 0xf5, 0xaa, + 0xf5, 0xa9, 0x0d, 0x4b, 0x5b, 0x2c, 0xc9, 0x92, 0xa8, 0x82, 0x95, 0xdc, + 0xe0, 0x40, 0x05, 0x03, 0x0a, 0x1c, 0x81, 0x60, 0x90, 0xa2, 0x8b, 0x3c, + 0x80, 0x8a, 0x44, 0x04, 0x95, 0x41, 0x10, 0xfc, 0x9c, 0x1f, 0x65, 0x62, + 0x6c, 0xe9, 0xf1, 0xca, 0x22, 0xc5, 0xf3, 0x00, 0xcf, 0x00, 0xc9, 0x42, + 0xe1, 0x04, 0x4f, 0x8a, 0xf1, 0x98, 0xbc, 0x03, 0x28, 0x23, 0x02, 0xd3, + 0x0a, 0xe6, 0x67, 0x84, 0xfa, 0x6e, 0xc9, 0x99, 0x9e, 0x90, 0x0c, 0x06, + 0xe0, 0xac, 0x4d, 0x34, 0x51, 0x76, 0x8c, 0x84, 0x57, 0x7d, 0x0d, 0xdf, + 0x31, 0x99, 0xcc, 0x24, 0xb0, 0xb9, 0x0c, 0x13, 0xc1, 0x90, 0x4c, 0x56, + 0xe2, 0x2b, 0x0c, 0x0e, 0xc0, 0x71, 0x4c, 0x09, 0xe0, 0x3d, 0x0c, 0x57, + 0x90, 0x56, 0xcc, 0x0b, 0x50, 0x4d, 0x8c, 0x11, 0x11, 0x6d, 0x4e, 0x27, + 0xa9, 0x7d, 0x4c, 0x08, 0x70, 0x84, 0xcc, 0x0c, 0xc0, 0x32, 0x8e, 0xbe, + 0xd3, 0x61, 0x10, 0xfe, 0x8b, 0x33, 0x60, 0xc1, 0x42, 0x13, 0x5d, 0xd5, + 0x26, 0x83, 0x22, 0xca, 0x99, 0x54, 0xd7, 0xfc, 0x62, 0xbb, 0xfa, 0x30, + 0x02, 0x07, 0x96, 0xb8, 0x91, 0x36, 0xeb, 0x33, 0x96, 0xe6, 0x1f, 0xdd, + 0x65, 0xbb, 0xb6, 0xbf, 0xf9, 0xbe, 0xff, 0x3f, 0xb8, 0xff, 0xef, 0xbf, + 0xbf, 0xb7, 0x7f, 0xfb, 0x76, 0x7e, 0xc9, 0xf4, 0xfd, 0x7d, 0x6a, 0xeb, + 0x47, 0x5a, 0x9b, 0xdf, 0x55, 0xf6, 0x7e, 0xcf, 0xdf, 0xd3, 0xeb, 0x43, + 0xad, 0x5a, 0xce, 0x36, 0xb3, 0x8d, 0x9c, 0x45, 0xd7, 0x2f, 0x1e, 0xa9, + 0x32, 0x0a, 0x57, 0x40, 0xae, 0x33, 0x20, 0x74, 0x98, 0x12, 0x31, 0x11, + 0x0c, 0x00, 0x51, 0x1c, 0x20, 0x3e, 0x61, 0x45, 0xa0, 0x47, 0x93, 0xc6, + 0x6b, 0x59, 0x1c, 0x4d, 0x1d, 0x63, 0x80, 0x74, 0x30, 0xad, 0x48, 0x10, + 0xb4, 0x95, 0xc8, 0x20, 0x03, 0x84, 0x1d, 0x82, 0x7c, 0xcc, 0xa0, 0x4b, + 0x3d, 0x34, 0xcb, 0x4a, 0x6e, 0xa0, 0x00, 0x00, 0xc1, 0x2c, 0x5d, 0xcd, + 0x9a, 0x18, 0xbc, 0xe0, 0x79, 0x82, 0xce, 0x37, 0x45, 0xe8, 0xc5, 0x1c, + 0x1b, 0x4c, 0x50, 0x91, 0xe0, 0xe5, 0x60, 0x6b, 0x0c, 0x56, 0x01, 0x70, + 0xc1, 0x24, 0x2b, 0x4c, 0xb9, 0xc4, 0x74, 0xc1, 0x74, 0x1c, 0x8c, 0x36, + 0x86, 0xbc, 0xcc, 0x0f, 0x1c, 0x0d, 0x2d, 0x81, 0x18, 0x30, 0x52, 0xc0, + 0x2b, 0xc0, 0x0a, 0x33, 0x06, 0xc1, 0xe1, 0x61, 0x02, 0xfc, 0x74, 0x09, + 0x68, 0xa3, 0xb9, 0xd2, 0x7c, 0x80, 0x1c, 0x2d, 0x22, 0x6c, 0x2b, 0xa3, + 0x16, 0x57, 0x26, 0xc5, 0x9e, 0x7e, 0x66, 0x6c, 0x48, 0x24, 0xa2, 0xe1, + 0x60, 0xa6, 0xd4, 0x4c, 0x8a, 0x9a, 0x68, 0x7f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0xff, 0x57, 0xbb, 0x6b, 0x4b, + 0xb3, 0xf3, 0x33, 0x66, 0x4c, 0x72, 0x00, 0xcd, 0x52, 0x1c, 0x62, 0x91, + 0x89, 0x78, 0x02, 0x0c, 0x1d, 0xa6, 0xb5, 0x75, 0xa6, 0x6e, 0x60, 0x26, + 0xf0, 0x02, 0x49, 0x9a, 0xd9, 0x62, 0xd0, 0x0d, 0xcb, 0x0d, 0xe0, 0xdd, + 0x33, 0x02, 0x84, 0x55, 0xf7, 0xd7, 0x00, 0x18, 0x17, 0xa1, 0xe4, 0x9a, + 0x02, 0x87, 0xc5, 0x9a, 0x8b, 0x07, 0x93, 0x9a, 0xc5, 0xe1, 0xe6, 0x18, + 0x67, 0xa0, 0x77, 0x98, 0x5e, 0x03, 0x7c, 0x1a, 0x49, 0xc0, 0x6c, 0x98, + 0x64, 0x40, 0x91, 0x18, 0x1e, 0xff, 0xfb, 0xd4, 0x40, 0x60, 0x8d, 0xd4, + 0xef, 0x69, 0x45, 0x1b, 0xd4, 0x9b, 0x70, 0x9d, 0x4d, 0x28, 0x31, 0x7e, + 0x93, 0x6e, 0x18, 0xcd, 0xb9, 0x0a, 0x2f, 0xe6, 0x8d, 0xd2, 0xef, 0xb4, + 0xa0, 0x41, 0xfd, 0xd1, 0xb8, 0xa0, 0x2c, 0x98, 0xc9, 0x81, 0xa6, 0x18, + 0x0f, 0x40, 0x13, 0x98, 0x26, 0x01, 0x53, 0x1a, 0x2a, 0xf3, 0x1a, 0x18, + 0xb6, 0x00, 0xcc, 0x18, 0x1e, 0x20, 0x4a, 0x81, 0xe2, 0xc0, 0x06, 0xc5, + 0x98, 0x19, 0x20, 0x80, 0x63, 0x89, 0x05, 0xcf, 0x85, 0xcc, 0x13, 0x22, + 0xc9, 0x48, 0x9b, 0x17, 0x19, 0x15, 0x27, 0x86, 0xca, 0x29, 0x8e, 0xb2, + 0xb2, 0x24, 0x4c, 0xbe, 0x6e, 0x94, 0xcd, 0x34, 0x12, 0x53, 0x56, 0xda, + 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfd, 0x7f, 0x4b, 0xfc, 0xfa, 0x48, 0x44, 0xb0, 0x03, 0x0e, 0x2e, + 0x04, 0x05, 0xbc, 0x91, 0x38, 0x06, 0x28, 0x06, 0xf4, 0x8a, 0xee, 0x9d, + 0x94, 0xe6, 0x01, 0x7a, 0xc0, 0xd8, 0x13, 0x03, 0x30, 0xf9, 0x93, 0x19, + 0xe0, 0x6c, 0xd8, 0x92, 0xba, 0xce, 0x18, 0x30, 0xc0, 0xba, 0x02, 0x4c, + 0xc3, 0xf7, 0x44, 0xb8, 0xcf, 0x6b, 0x38, 0x14, 0xc8, 0x67, 0x14, 0x98, + 0xc0, 0x8e, 0x09, 0x6c, 0xc2, 0x59, 0x24, 0xa8, 0xd2, 0xf9, 0x3b, 0x2c, + 0xc1, 0xd5, 0x06, 0x18, 0xc0, 0xe4, 0x02, 0xf8, 0xc4, 0x56, 0x0f, 0x00, + 0xc0, 0x90, 0x00, 0xc4, 0xc0, 0x7f, 0x02, 0x50, 0xc9, 0x2a, 0x7b, 0xa4, + 0xc5, 0xa4, 0x07, 0x94, 0xc0, 0xbb, 0x02, 0x10, 0xf8, 0xe4, 0x7a, 0x30, + 0x4c, 0x51, 0xc1, 0x21, 0x57, 0x1a, 0x20, 0xa6, 0xa6, 0xdf, 0x18, 0x82, + 0x65, 0x36, 0x8f, 0xfe, 0xe1, 0xd5, 0xa4, 0xf7, 0x7c, 0xb6, 0x5d, 0x41, + 0x0f, 0x5f, 0xab, 0x5a, 0x2d, 0x87, 0x6a, 0x4c, 0x46, 0xb5, 0xf9, 0x55, + 0xb3, 0xff, 0xfd, 0xdf, 0xff, 0xef, 0xff, 0xeb, 0xff, 0xb7, 0x6f, 0x47, + 0x5d, 0x2d, 0x6c, 0xaf, 0xec, 0xa7, 0xd5, 0x7d, 0x5d, 0x4a, 0x4b, 0x49, + 0xdb, 0xbe, 0xaa, 0x3a, 0x9d, 0x1d, 0x6c, 0xae, 0xdd, 0x1b, 0xe8, 0xdf, + 0x4a, 0xf4, 0x50, 0x4b, 0x26, 0x8d, 0xd2, 0xac, 0x9a, 0x2b, 0x31, 0x88, + 0x35, 0x1c, 0x01, 0x40, 0x42, 0xd2, 0x45, 0xb9, 0x87, 0xd8, 0xd8, 0x03, + 0x22, 0x58, 0x83, 0x1f, 0x40, 0x9d, 0x24, 0x16, 0xa2, 0x66, 0x5b, 0x60, + 0x80, 0x78, 0x01, 0x36, 0x1f, 0x27, 0x8a, 0xe4, 0x30, 0x42, 0x30, 0x36, + 0x68, 0xc3, 0xd5, 0x30, 0x2e, 0x11, 0x62, 0x2a, 0x7a, 0x99, 0xd6, 0xdc, + 0xe9, 0xe3, 0x05, 0x70, 0x10, 0xb3, 0x1a, 0xd5, 0xcf, 0x43, 0x68, 0x25, + 0x79, 0xd3, 0x38, 0x84, 0x89, 0x43, 0x02, 0x98, 0x38, 0x13, 0x0b, 0xcc, + 0xa4, 0x63, 0x5a, 0x05, 0x0b, 0x73, 0x09, 0x84, 0x1c, 0xe3, 0x01, 0xe4, + 0x24, 0x13, 0x1f, 0x9c, 0x82, 0xd3, 0x04, 0x14, 0x12, 0x23, 0x04, 0xfc, + 0x31, 0xf3, 0x29, 0xb3, 0x98, 0xd3, 0x0a, 0x18, 0x31, 0x73, 0x01, 0xf4, + 0x11, 0x23, 0x14, 0x8f, 0x1c, 0x1c, 0x2d, 0x70, 0xf1, 0x10, 0xf2, 0x08, + 0xd0, 0x32, 0xb6, 0xa2, 0xa5, 0xb6, 0x7b, 0x46, 0xa3, 0x90, 0x43, 0x8f, + 0x8b, 0xa2, 0xa1, 0xd3, 0xff, 0x0e, 0xd3, 0x4a, 0x29, 0xaf, 0xef, 0x19, + 0x7e, 0x1d, 0xb1, 0x85, 0xac, 0x3f, 0x58, 0xf3, 0xf5, 0xfd, 0xc7, 0xff, + 0xff, 0xff, 0xeb, 0xff, 0xfb, 0x7b, 0x7f, 0xa3, 0xff, 0x55, 0xea, 0x57, + 0x57, 0x57, 0xed, 0xdf, 0xbb, 0x7b, 0x76, 0x7e, 0x8b, 0xe8, 0xa5, 0xd1, + 0xeb, 0x4b, 0xad, 0x4f, 0x9c, 0x4d, 0x2a, 0xc8, 0x61, 0xf6, 0x31, 0x06, + 0xa1, 0x09, 0xd0, 0xd5, 0x23, 0x24, 0x20, 0xd1, 0xc6, 0x2b, 0x40, 0x31, + 0xa6, 0x85, 0xb0, 0xac, 0x5d, 0x34, 0x2e, 0x26, 0xa3, 0x14, 0xca, 0xe6, + 0x81, 0x20, 0xe0, 0x35, 0x38, 0x81, 0x91, 0x60, 0xf7, 0x48, 0x70, 0x63, + 0xe0, 0x68, 0x4f, 0x8c, 0xd9, 0x70, 0xb8, 0x4f, 0x13, 0x29, 0x88, 0x29, + 0xb5, 0x68, 0x00, 0x03, 0x02, 0x18, 0x13, 0x53, 0x00, 0xc4, 0xee, 0x73, + 0x12, 0xb0, 0x29, 0xf3, 0x2b, 0x58, 0x2f, 0xa3, 0x06, 0xc8, 0x0b, 0x83, + 0x0b, 0x04, 0x83, 0xf3, 0x59, 0x4c, 0xb5, 0x23, 0x0a, 0x9c, 0x16, 0x73, + 0x00, 0x70, 0x02, 0xd3, 0x03, 0x14, 0x3e, 0x73, 0x00, 0x9c, 0x09, 0xf3, + 0x01, 0x9c, 0x20, 0xa3, 0x10, 0xec, 0x9d, 0x23, 0x14, 0xd4, 0x04, 0xf3, + 0x03, 0xb8, 0x00, 0x13, 0xee, 0x74, 0xd3, 0x03, 0x03, 0x63, 0x31, 0x22, + 0xd7, 0x23, 0xc6, 0xdc, 0x13, 0x0e, 0x56, 0xed, 0xc3, 0x6d, 0xce, 0x33, + 0x0a, 0xd5, 0x2b, 0xb3, 0x23, 0xa7, 0x97, 0x53, 0x3f, 0x17, 0xf2, 0xa9, + 0x6a, 0x57, 0x9d, 0x7b, 0xb5, 0xaf, 0x63, 0xf8, 0xf2, 0xde, 0x7f, 0xcd, + 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0xff, + 0xff, 0xff, 0xdf, 0xa9, 0xfa, 0xf6, 0xb2, 0xbb, 0xad, 0x4a, 0x41, 0x68, + 0xe7, 0x4d, 0x99, 0x04, 0x0a, 0x86, 0xc7, 0xd0, 0x11, 0x20, 0x35, 0xa7, + 0x87, 0xa2, 0xb1, 0x64, 0xa6, 0x90, 0x18, 0x00, 0x02, 0x7c, 0x9c, 0x2f, + 0x9f, 0xca, 0xc9, 0x17, 0x10, 0x0e, 0xa8, 0x84, 0x25, 0xf3, 0x46, 0x32, + 0x0d, 0x4c, 0x00, 0xa2, 0x87, 0x1e, 0xb2, 0x28, 0x91, 0x3a, 0x9b, 0xae, + 0x6f, 0x11, 0x4f, 0xf5, 0xe0, 0x00, 0x0c, 0x08, 0x80, 0x4c, 0x4c, 0x02, + 0xb3, 0xba, 0x4c, 0x4a, 0x80, 0xa9, 0x4c, 0xad, 0xe0, 0xc2, 0x8c, 0x18, + 0x80, 0x1b, 0x8c, 0x20, 0x91, 0xad, 0xcd, 0x00, 0xf1, 0xe2, 0x8c, 0x20, + 0xd0, 0x4e, 0x4c, 0x15, 0x20, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0d, 0xd5, + 0xb6, 0x6c, 0x43, 0x13, 0xfa, 0xa3, 0x72, 0xb3, 0x0d, 0x28, 0x62, 0x7f, + 0x73, 0x6e, 0x57, 0x91, 0xaf, 0x08, 0x0f, 0xe6, 0x8d, 0xc2, 0xef, 0x35, + 0xa1, 0xcd, 0xfc, 0x35, 0xb9, 0x71, 0x0c, 0x08, 0x41, 0x58, 0x0c, 0x03, + 0x00, 0x3a, 0xcc, 0x08, 0x10, 0x6d, 0x8c, 0x3d, 0x05, 0x9d, 0x0c, 0x4b, + 0x70, 0x22, 0x0c, 0x08, 0xc0, 0x22, 0xce, 0x1c, 0x54, 0x28, 0x26, 0x06, + 0x07, 0x0a, 0x84, 0xb8, 0xd1, 0xd9, 0x73, 0x49, 0x5d, 0xea, 0x06, 0xc4, + 0xe4, 0xf5, 0x61, 0x58, 0x4e, 0x55, 0x95, 0xbf, 0xf0, 0xb9, 0x7d, 0x9f, + 0xad, 0x49, 0x4b, 0x2f, 0x8d, 0xc3, 0x74, 0xf8, 0x6b, 0x78, 0x73, 0xf7, + 0x9e, 0x7c, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xff, 0xdf, 0xff, 0xff, 0xff, + 0xff, 0xdf, 0xfe, 0xef, 0xfd, 0x7f, 0xf7, 0x43, 0xfa, 0xd0, 0x6f, 0xd3, + 0x41, 0x06, 0xae, 0xd4, 0xcb, 0x85, 0xc2, 0xe2, 0x0b, 0x2f, 0xa4, 0x59, + 0x03, 0xa9, 0x06, 0x98, 0xe7, 0x8c, 0x99, 0x5d, 0x11, 0x95, 0x1a, 0x08, + 0x17, 0x13, 0x37, 0x74, 0xd2, 0x51, 0x82, 0x04, 0xe1, 0x06, 0x4c, 0xb0, + 0x40, 0x16, 0x45, 0xc2, 0xa9, 0x0e, 0x9c, 0x73, 0xc6, 0x60, 0xa8, 0xb0, + 0xff, 0x8e, 0x20, 0xc0, 0xb5, 0x07, 0x70, 0xca, 0x64, 0x3f, 0xf0, 0xcb, + 0xd6, 0x20, 0xdc, 0xd5, 0xd6, 0x01, 0x20, 0xc0, 0xec, 0x07, 0x50, 0xc2, + 0x9e, 0x2b, 0xd4, 0xdb, 0x36, 0x1e, 0xd8, 0xc3, 0x42, 0x05, 0x3c, 0xc0, + 0x92, 0x02, 0xe8, 0xc4, 0x49, 0x14, 0x08, 0xc0, 0xb3, 0x04, 0x98, 0xc0, + 0xd8, 0x0c, 0xbc, 0xc5, 0xe1, 0x1b, 0x0c, 0xc3, 0xc3, 0x02, 0xcc, 0x78, + 0x12, 0x03, 0x24, 0x05, 0x5e, 0x70, 0x03, 0x0b, 0x2f, 0x32, 0x23, 0x33, + 0xe5, 0x62, 0x62, 0x34, 0x8f, 0xd3, 0x61, 0xa5, 0x7d, 0x1f, 0xeb, 0xf0, + 0x55, 0x3d, 0x9d, 0xe7, 0x47, 0xaa, 0x6b, 0xff, 0x3d, 0x8e, 0xb2, 0xd7, + 0xe5, 0x97, 0xeb, 0x3f, 0xd7, 0xf7, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xdf, 0xfd, 0x2f, 0xfb, 0xff, 0xa9, 0xff, 0xa9, 0x2d, 0xea, 0x6d, + 0x4f, 0xae, 0xb5, 0x54, 0x93, 0xa9, 0xda, 0xc9, 0x52, 0x49, 0x35, 0x2e, + 0x8a, 0x0f, 0x49, 0x24, 0x0f, 0xa4, 0xb4, 0x49, 0xa5, 0x19, 0x0b, 0x38, + 0x1b, 0xdc, 0x00, 0x43, 0xb0, 0xb0, 0x90, 0x71, 0xcf, 0x1c, 0x00, 0x62, + 0xc7, 0x05, 0x0a, 0x19, 0x9e, 0x37, 0x2e, 0xb2, 0x24, 0xca, 0xca, 0x85, + 0x32, 0x0a, 0x05, 0xbf, 0x90, 0x73, 0x41, 0x98, 0x17, 0x28, 0x8c, 0x02, + 0xdf, 0x04, 0x3c, 0x88, 0x98, 0x95, 0x49, 0x74, 0x8c, 0x8d, 0xa7, 0xd3, + 0x84, 0x18, 0x0c, 0xa0, 0x98, 0x18, 0xe0, 0x05, 0x65, 0x18, 0xff, 0x82, + 0xc6, 0x99, 0xd7, 0xc0, 0x22, 0x18, 0x13, 0x80, 0x7e, 0x18, 0x35, 0x02, + 0x65, 0x9a, 0x07, 0x42, 0xef, 0x18, 0x3f, 0x00, 0x33, 0x98, 0x21, 0xe0, + 0x02, 0x18, 0x67, 0x41, 0xec, 0x98, 0x05, 0xe0, 0x65, 0x18, 0x1b, 0x40, + 0xa1, 0x98, 0xfc, 0xa6, 0x1e, 0x98, 0x3a, 0x00, 0x4e, 0x89, 0x00, 0x46, + 0x07, 0xc0, 0x2e, 0xc1, 0x20, 0x15, 0x00, 0x18, 0x45, 0xae, 0x85, 0xb9, + 0x6e, 0x2d, 0x87, 0xfa, 0x1b, 0x9c, 0x83, 0x1c, 0xa7, 0x9a, 0x21, 0x19, + 0xa2, 0xca, 0x5d, 0x2f, 0x95, 0x39, 0x4f, 0xd6, 0x73, 0xf4, 0xba, 0x86, + 0xac, 0x58, 0x8d, 0x46, 0xa8, 0xf9, 0x77, 0x1d, 0x73, 0xff, 0x2c, 0xbf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfa, 0x5f, 0xf7, 0xff, 0x53, 0xff, + 0x52, 0x5f, 0x5e, 0x92, 0x5a, 0xeb, 0x6a, 0x92, 0x7d, 0xab, 0xd2, 0x49, + 0xeb, 0xad, 0xaa, 0x49, 0x2a, 0x69, 0x3a, 0x2a, 0x40, 0x71, 0x05, 0xd8, + 0x2f, 0x60, 0x03, 0xd1, 0x29, 0x18, 0x10, 0x92, 0x14, 0x4d, 0x09, 0x21, + 0x92, 0x8b, 0x1b, 0x9a, 0xa2, 0x89, 0x8d, 0x09, 0x50, 0x4b, 0x99, 0xa6, + 0x08, 0xf8, 0x96, 0x8c, 0x80, 0x03, 0x90, 0xc0, 0x94, 0x4c, 0x4d, 0x4d, + 0xd2, 0x2f, 0x1b, 0x2c, 0x37, 0xba, 0x0a, 0xf9, 0x00, 0x03, 0x0d, 0xc0, + 0x30, 0x39, 0x07, 0x77, 0xd3, 0x8d, 0x37, 0xf0, 0x3b, 0x44, 0x2f, 0x53, + 0x10, 0x20, 0x5f, 0x31, 0x8e, 0x4d, 0x03, 0x98, 0xc8, 0xc9, 0x31, 0x38, + 0x0f, 0xe3, 0x12, 0x90, 0x64, 0x34, 0x02, 0x2a, 0x13, 0x0b, 0x60, 0x6f, + 0x30, 0xe1, 0x28, 0x43, 0xcb, 0x0b, 0xa4, 0x30, 0xaa, 0x15, 0x83, 0x00, + 0xb0, 0x6b, 0x10, 0x60, 0x2a, 0xa9, 0x80, 0x42, 0x34, 0x09, 0x07, 0x09, + 0x70, 0x9b, 0x47, 0x52, 0x6f, 0xed, 0xe4, 0xfb, 0xdf, 0xaa, 0xfa, 0x3e, + 0x91, 0xf8, 0x7a, 0x9e, 0x85, 0xd3, 0xa3, 0xb1, 0x49, 0x9c, 0xdc, 0xbf, + 0xf7, 0x9d, 0xfc, 0x35, 0xf9, 0xdb, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0x5f, 0xfa, 0xff, 0xd3, 0xfb, 0x7f, 0x53, + 0x7a, 0x7e, 0x9e, 0xa4, 0xfd, 0x37, 0xdd, 0x48, 0x69, 0xa9, 0x5a, 0x06, + 0x8d, 0x5a, 0x86, 0x34, 0x2a, 0x51, 0xa2, 0x50, 0x10, 0x10, 0x52, 0x62, + 0xcb, 0x04, 0x1f, 0x0c, 0x62, 0x27, 0x72, 0x91, 0x2e, 0x5a, 0x22, 0xe5, + 0x23, 0x53, 0x61, 0x72, 0x0b, 0xb0, 0xc2, 0x41, 0x7c, 0x05, 0xc6, 0x29, + 0x01, 0x66, 0x9b, 0xb8, 0x1b, 0x54, 0x45, 0x0d, 0x1a, 0x10, 0x3f, 0x02, + 0x1f, 0x9e, 0x00, 0x60, 0xa6, 0x00, 0xa0, 0x66, 0xb2, 0x96, 0x2e, 0x66, + 0x87, 0x97, 0x90, 0x68, 0x59, 0x08, 0xd2, 0x60, 0xb8, 0x02, 0x62, 0x60, + 0xe4, 0x14, 0x80, 0x67, 0xc4, 0x1b, 0xae, 0x61, 0x07, 0x03, 0x3c, 0x60, + 0x4b, 0x85, 0xb6, 0x61, 0x40, 0xff, 0xfb, 0xd4, 0x40, 0x6b, 0x0d, 0xd5, + 0x75, 0x67, 0xc3, 0x13, 0xd9, 0x9b, 0x72, 0xac, 0x6c, 0xe8, 0x31, 0x7f, + 0x32, 0x6e, 0x57, 0xd5, 0xa5, 0x04, 0x2f, 0xea, 0x8d, 0xc2, 0xdc, 0x35, + 0xe0, 0xc5, 0xfa, 0x4d, 0xb8, 0x86, 0x7c, 0x24, 0x00, 0xf1, 0x83, 0x7e, + 0x1d, 0x41, 0xab, 0x94, 0x98, 0x51, 0x82, 0x1c, 0x0b, 0x81, 0x80, 0x98, + 0x03, 0x39, 0xbb, 0x70, 0xf3, 0x28, 0x28, 0xde, 0xa5, 0x1b, 0x93, 0x01, + 0x2c, 0x46, 0xf2, 0x6e, 0x8a, 0xcc, 0xbd, 0xf7, 0xee, 0x6f, 0xf5, 0x25, + 0x79, 0x55, 0xa9, 0x4c, 0xae, 0xfe, 0xb1, 0xaf, 0x5f, 0x3f, 0xd7, 0x7b, + 0xfa, 0xd7, 0x73, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xef, 0x57, 0xf5, 0xf5, 0xdf, 0xeb, 0xff, 0xf5, 0x2b, 0xe9, 0xed, + 0x5b, 0xd9, 0xfd, 0x34, 0xdb, 0x52, 0x0e, 0xb4, 0xd4, 0xa7, 0xa0, 0x68, + 0x6a, 0x7a, 0x91, 0x04, 0x01, 0xb8, 0x18, 0x05, 0x80, 0x42, 0x63, 0x92, + 0x39, 0xe1, 0x0c, 0x8e, 0x68, 0xcd, 0xa4, 0x5b, 0x35, 0x2f, 0x9c, 0x35, + 0x37, 0x20, 0x83, 0xf8, 0x9b, 0x84, 0x70, 0x3b, 0xcc, 0x42, 0x40, 0x6c, + 0x27, 0xb0, 0x0a, 0xa0, 0xe6, 0x11, 0xc1, 0x82, 0xea, 0x18, 0xf1, 0xa4, + 0x64, 0x17, 0x79, 0x8d, 0xbc, 0xaf, 0x61, 0x8d, 0x32, 0x3a, 0xb9, 0x80, + 0x26, 0x03, 0xc1, 0x85, 0x5a, 0x31, 0x91, 0xa8, 0x86, 0x19, 0xb1, 0x86, + 0x86, 0x03, 0x11, 0x81, 0xa4, 0x0a, 0xf9, 0x88, 0x36, 0x0c, 0x30, 0x60, + 0x42, 0xc6, 0x07, 0x40, 0x22, 0xa6, 0xe5, 0x79, 0x4f, 0xa6, 0x2f, 0x00, + 0x23, 0xa6, 0x07, 0x78, 0x0a, 0x47, 0x41, 0x68, 0x44, 0x23, 0x3c, 0x24, + 0x46, 0x19, 0x69, 0xac, 0x33, 0x00, 0x91, 0xc4, 0x9d, 0xe9, 0x3d, 0x47, + 0x19, 0x8f, 0x4c, 0xe7, 0x08, 0x86, 0xa5, 0xd2, 0xfb, 0x38, 0xe7, 0x56, + 0x5b, 0x72, 0x82, 0x9a, 0xef, 0x35, 0x57, 0x1d, 0xf3, 0xff, 0xf7, 0xff, + 0xbf, 0xff, 0xfe, 0x7f, 0xea, 0xff, 0xd7, 0xab, 0xff, 0x57, 0x5a, 0xb5, + 0x3f, 0xfb, 0xad, 0xaa, 0x4b, 0xec, 0xdd, 0x7a, 0x3e, 0xc8, 0xd7, 0xa9, + 0xeb, 0x47, 0xa9, 0x2f, 0x5a, 0x2d, 0x4a, 0x8d, 0x48, 0xb5, 0x4b, 0x5a, + 0x28, 0xa4, 0xb6, 0x32, 0x37, 0x9a, 0x9d, 0x13, 0xc0, 0x6e, 0x0d, 0xc8, + 0x30, 0xc5, 0x58, 0x84, 0xa0, 0x58, 0xe8, 0x22, 0x1c, 0x6e, 0x31, 0xa6, + 0x67, 0xce, 0x97, 0x4b, 0x66, 0x84, 0x58, 0x83, 0x07, 0x14, 0x06, 0x88, + 0x68, 0x6a, 0xd2, 0x74, 0x31, 0x10, 0xcd, 0x0c, 0xa8, 0x03, 0x01, 0x0e, + 0x35, 0x23, 0xc6, 0x44, 0xd7, 0x0c, 0x15, 0x30, 0xad, 0x0c, 0xff, 0x20, + 0xa2, 0xcc, 0x60, 0x84, 0xd0, 0x8c, 0x5e, 0x51, 0x98, 0xcc, 0x05, 0x20, + 0x0a, 0x8c, 0x32, 0xf1, 0x49, 0x8d, 0xb1, 0xf0, 0x96, 0x4c, 0x39, 0x70, + 0x0f, 0x8c, 0x10, 0xc0, 0x0d, 0x0c, 0x45, 0x90, 0x3c, 0x4c, 0x06, 0x80, + 0x40, 0x4c, 0x01, 0x00, 0x7a, 0x0d, 0x94, 0xb2, 0x14, 0xcc, 0x6e, 0xa0, + 0x16, 0x0c, 0x0d, 0x30, 0x0a, 0xc0, 0x1c, 0xa0, 0x3a, 0x90, 0x1b, 0x20, + 0xa0, 0x08, 0x20, 0x06, 0x01, 0x8c, 0x60, 0x67, 0x01, 0xcb, 0x91, 0x86, + 0x45, 0x81, 0xca, 0x13, 0x90, 0xd2, 0x4c, 0xd4, 0x5c, 0x84, 0x91, 0x78, + 0x9b, 0x51, 0x11, 0x2b, 0xb2, 0x2c, 0x50, 0x74, 0xd1, 0x97, 0x57, 0x59, + 0x8f, 0xdb, 0xaf, 0xff, 0xff, 0xfa, 0xff, 0xab, 0xff, 0xfd, 0xfa, 0xbb, + 0x36, 0xbf, 0x7b, 0x7d, 0x77, 0x7d, 0x2a, 0x3e, 0xea, 0xab, 0xad, 0xba, + 0xea, 0xb2, 0xd9, 0x96, 0xc6, 0x2e, 0x8d, 0x44, 0xf9, 0x74, 0xf1, 0x4c, + 0x1a, 0x00, 0x0e, 0x18, 0x10, 0x39, 0x17, 0x2b, 0x8c, 0xd9, 0x22, 0x1c, + 0x08, 0x7d, 0x98, 0x99, 0x31, 0x4a, 0x8a, 0x65, 0xc3, 0x62, 0x68, 0xa6, + 0x04, 0xb2, 0x2e, 0x52, 0x64, 0x3e, 0x13, 0x01, 0x18, 0x83, 0x60, 0x80, + 0x59, 0x29, 0x9d, 0x51, 0x1c, 0xa7, 0xa8, 0xfa, 0x62, 0x0a, 0x6a, 0x2a, + 0xaa, 0x00, 0x3c, 0x01, 0x80, 0x94, 0x20, 0x01, 0xad, 0x0a, 0x80, 0x61, + 0x94, 0x2c, 0x29, 0x71, 0xc8, 0x26, 0x2d, 0x39, 0x85, 0xfe, 0x18, 0xc1, + 0x81, 0x1c, 0x49, 0x29, 0x84, 0xee, 0x5b, 0x51, 0x81, 0x6e, 0x0f, 0x69, + 0x81, 0x94, 0x08, 0x81, 0x87, 0xd0, 0x12, 0x61, 0x80, 0x90, 0x07, 0x11, + 0x81, 0x74, 0x1d, 0x69, 0xce, 0x38, 0x91, 0xa9, 0x8e, 0x5a, 0x17, 0x09, + 0x82, 0x44, 0x07, 0xb1, 0xb1, 0xc0, 0x99, 0xc2, 0x21, 0xb1, 0x92, 0x98, + 0xb8, 0x58, 0x18, 0x61, 0x0c, 0xd7, 0x22, 0xfe, 0xcf, 0x6f, 0x14, 0x41, + 0x6b, 0xb1, 0x08, 0x8d, 0x03, 0x5a, 0x96, 0x62, 0xfe, 0x61, 0x2a, 0xd5, + 0xf9, 0xa9, 0x25, 0x9e, 0xef, 0x75, 0x2c, 0xe1, 0x96, 0x77, 0x72, 0xfc, + 0x7f, 0x7f, 0xff, 0xac, 0x3f, 0xff, 0xf7, 0xff, 0x53, 0x75, 0x7a, 0xfd, + 0xff, 0xfe, 0xef, 0xdb, 0x5d, 0xb5, 0xfd, 0x6f, 0x5f, 0xf6, 0xeb, 0xd0, + 0x57, 0x7f, 0x4f, 0xd0, 0x42, 0xd4, 0x10, 0x5d, 0x6e, 0xd5, 0x17, 0x5c, + 0xb6, 0x5c, 0x10, 0xb8, 0x1a, 0xd5, 0xa1, 0xcc, 0x2d, 0x92, 0xa6, 0xa4, + 0x80, 0x2c, 0x3c, 0x1c, 0x29, 0x12, 0xe9, 0x74, 0x91, 0x3a, 0x89, 0x15, + 0x30, 0x2b, 0x20, 0x43, 0xc0, 0x80, 0x02, 0x78, 0x95, 0x1f, 0x24, 0x40, + 0x81, 0x81, 0x83, 0x76, 0x17, 0x79, 0x38, 0x58, 0x80, 0x00, 0xa1, 0x8e, + 0x1a, 0x2a, 0xe6, 0x2a, 0x18, 0xf8, 0x02, 0x05, 0x1b, 0x7a, 0x22, 0x40, + 0x98, 0x46, 0x21, 0x78, 0x18, 0x08, 0xa6, 0x38, 0x98, 0x88, 0xe7, 0xd5, + 0x18, 0x1f, 0xa1, 0x34, 0x98, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0d, 0x95, + 0xd8, 0x68, 0x3f, 0xab, 0xfb, 0xa3, 0x70, 0xb6, 0xad, 0x68, 0x11, 0x7e, + 0x94, 0x6e, 0x16, 0x41, 0xa4, 0xfc, 0x0f, 0xee, 0x8d, 0xc2, 0xca, 0xb4, + 0xa0, 0x59, 0xfd, 0x49, 0xb8, 0x1f, 0x81, 0x5a, 0x18, 0x17, 0xc1, 0x29, + 0x98, 0x2f, 0x60, 0x8c, 0x18, 0x26, 0xc3, 0x32, 0x9a, 0x69, 0x86, 0xc7, + 0x98, 0x0a, 0x21, 0x75, 0x98, 0x0b, 0xc0, 0x80, 0x01, 0x9f, 0xf2, 0x06, + 0x83, 0x70, 0x0a, 0x13, 0x03, 0x36, 0x0c, 0x06, 0x00, 0x07, 0x9c, 0x05, + 0x87, 0x03, 0x60, 0x82, 0x74, 0xd0, 0xcc, 0x5a, 0xc6, 0x80, 0xe6, 0x32, + 0x03, 0xbc, 0x7b, 0x35, 0x2d, 0x1d, 0x73, 0x7b, 0xbb, 0x35, 0x04, 0xed, + 0x51, 0xe6, 0xb3, 0x33, 0x7f, 0xfa, 0xbf, 0xef, 0xef, 0xfe, 0xaf, 0x6e, + 0x87, 0xa7, 0x7a, 0xd7, 0xe9, 0xfa, 0x0d, 0xdb, 0xdf, 0xfb, 0xbf, 0x77, + 0xe8, 0x36, 0xa4, 0x10, 0xd6, 0xb5, 0xeb, 0x33, 0x7d, 0x48, 0x3d, 0x68, + 0x9e, 0x40, 0xe8, 0x48, 0x20, 0x1a, 0xd6, 0x22, 0xca, 0x36, 0x0a, 0x00, + 0x16, 0x33, 0x80, 0x54, 0xa1, 0x1c, 0x99, 0xa2, 0x6b, 0x54, 0xd1, 0x46, + 0xc6, 0xa1, 0xdf, 0x01, 0x80, 0xe4, 0x98, 0xf8, 0x05, 0x04, 0x9b, 0x08, + 0xc0, 0x0c, 0x65, 0x32, 0x2a, 0x92, 0xc9, 0xb2, 0x0f, 0xa8, 0xe1, 0x81, + 0x4e, 0x08, 0xd1, 0xaa, 0x08, 0xd7, 0xf9, 0xb0, 0xd2, 0x53, 0xb9, 0xd3, + 0x8e, 0x37, 0x81, 0x89, 0x6a, 0x05, 0xb9, 0x8a, 0x58, 0x47, 0x71, 0xc6, + 0xa0, 0x28, 0x41, 0x8a, 0x38, 0x05, 0x81, 0x84, 0xea, 0x0d, 0x89, 0x86, + 0xa6, 0x2a, 0x89, 0x81, 0x24, 0x07, 0xd9, 0x83, 0x6a, 0x3b, 0x51, 0xb3, + 0xc6, 0xcb, 0x61, 0x8b, 0x6a, 0x23, 0x81, 0x82, 0x48, 0x0c, 0x79, 0xb9, + 0xee, 0x19, 0x03, 0xe8, 0x58, 0x58, 0x78, 0xe0, 0x30, 0xb8, 0x88, 0x34, + 0xbc, 0xc9, 0xa9, 0xcd, 0x3e, 0xad, 0x95, 0xb9, 0x25, 0xcc, 0x66, 0xcc, + 0x66, 0x8b, 0x71, 0xab, 0x52, 0xdb, 0x1d, 0xad, 0x5a, 0xa7, 0xfe, 0x3a, + 0xca, 0xf6, 0xf9, 0xfc, 0xd7, 0x7f, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfe, + 0xff, 0xfa, 0xbd, 0x5f, 0xab, 0xa3, 0xff, 0x57, 0xee, 0xfe, 0xff, 0x6d, + 0x6c, 0x8a, 0xea, 0x57, 0xa9, 0xfd, 0x94, 0xbe, 0xd6, 0xeb, 0xf4, 0x8d, + 0xb9, 0x78, 0xfb, 0x99, 0x04, 0x00, 0xc0, 0xcf, 0x66, 0x13, 0x22, 0xa8, + 0xb9, 0x4c, 0x8b, 0xc0, 0x63, 0x80, 0x03, 0x81, 0x1a, 0x53, 0x49, 0x6e, + 0x92, 0x93, 0x28, 0x05, 0xfb, 0x00, 0x68, 0xa6, 0x45, 0xf1, 0x88, 0x7c, + 0xb2, 0x06, 0x73, 0xf1, 0x28, 0xb4, 0xcb, 0x84, 0x20, 0x65, 0x03, 0x01, + 0xdc, 0x0b, 0xa3, 0x38, 0xd9, 0x24, 0x33, 0x42, 0x04, 0x70, 0x93, 0x70, + 0xec, 0x49, 0xe3, 0x0d, 0x0c, 0x00, 0x33, 0x0f, 0xe8, 0x06, 0xb3, 0x70, + 0x70, 0x48, 0xb3, 0x0f, 0x10, 0x0d, 0x03, 0x04, 0x5c, 0x18, 0xe3, 0x0f, + 0x48, 0x60, 0xa3, 0x04, 0x90, 0x03, 0x03, 0x00, 0x08, 0x22, 0x23, 0x01, + 0x74, 0x45, 0xe3, 0x0f, 0xc4, 0x12, 0xa3, 0x01, 0xb8, 0x07, 0x13, 0x2f, + 0x29, 0xba, 0x06, 0x22, 0x70, 0x16, 0xb4, 0x20, 0x64, 0x12, 0x60, 0xc3, + 0x14, 0x55, 0x9f, 0x45, 0xea, 0xd0, 0x67, 0x61, 0xa6, 0x8c, 0xdb, 0x52, + 0x45, 0xa3, 0x30, 0xd5, 0xad, 0x6e, 0xac, 0x57, 0x9c, 0xfb, 0xb6, 0x79, + 0xcf, 0xad, 0xfa, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xfb, + 0x7d, 0xba, 0x9b, 0xfd, 0x2f, 0xff, 0xfa, 0xfd, 0xfd, 0xfd, 0x9b, 0x6b, + 0x6e, 0xae, 0xb5, 0x75, 0x35, 0xe7, 0xf9, 0x89, 0xe7, 0x5a, 0xc8, 0x09, + 0xaa, 0xcb, 0x03, 0x88, 0x3d, 0x61, 0x1a, 0x94, 0x81, 0xb3, 0x49, 0x90, + 0x50, 0xb8, 0x71, 0x51, 0x48, 0xe1, 0x81, 0xb2, 0xa9, 0x14, 0x4f, 0x13, + 0x63, 0x98, 0x03, 0x5c, 0x3a, 0x45, 0xe0, 0x12, 0x23, 0x40, 0xf4, 0x80, + 0xec, 0x82, 0xeb, 0x95, 0x18, 0x95, 0x25, 0x93, 0x10, 0x53, 0x51, 0x6a, + 0xaa, 0x30, 0x37, 0x45, 0xfa, 0x33, 0x4d, 0x64, 0x84, 0x34, 0x2d, 0x17, + 0x63, 0x33, 0xfc, 0x4c, 0x00, 0x30, 0x43, 0x45, 0xa3, 0x30, 0xa1, 0xd3, + 0x58, 0x35, 0x85, 0x5b, 0x07, 0x30, 0xb6, 0xc3, 0x58, 0x0e, 0x0c, 0xd4, + 0xc4, 0x05, 0x1a, 0x18, 0xc0, 0x41, 0x03, 0x78, 0xaa, 0x31, 0xc9, 0x89, + 0x72, 0x8e, 0x61, 0x9a, 0xb4, 0x12, 0x69, 0x84, 0xe2, 0x06, 0xf1, 0xc3, + 0x8c, 0x23, 0xd0, 0xf3, 0x21, 0x0d, 0x86, 0x02, 0x80, 0x80, 0x98, 0x5c, + 0x00, 0x30, 0x0e, 0x65, 0x72, 0xf9, 0x5e, 0x70, 0xe3, 0x40, 0x57, 0xff, + 0x2d, 0x7f, 0xaf, 0x69, 0xd9, 0x9b, 0xa1, 0xdf, 0x73, 0xaf, 0x5f, 0x9b, + 0xd6, 0xaf, 0x63, 0xfc, 0xd6, 0x3f, 0x86, 0xf7, 0xfc, 0xfd, 0xf7, 0xff, + 0xeb, 0xff, 0x57, 0x5e, 0xda, 0xff, 0x53, 0x21, 0xed, 0xeb, 0xb6, 0xdb, + 0x21, 0xad, 0x5b, 0x7d, 0x55, 0xfb, 0xd7, 0xb6, 0xb5, 0x22, 0xbd, 0x3e, + 0x8b, 0xf5, 0x2f, 0x5a, 0x17, 0xcf, 0xaf, 0x31, 0x75, 0x34, 0x86, 0x26, + 0x5c, 0x33, 0x11, 0xc0, 0x19, 0x8c, 0x22, 0x06, 0x37, 0x2b, 0x13, 0x43, + 0xc0, 0x18, 0xb5, 0x04, 0x09, 0x89, 0x85, 0x95, 0x99, 0x64, 0xf9, 0x45, + 0x06, 0x08, 0x06, 0x82, 0x8e, 0xcb, 0xc5, 0xb2, 0x18, 0xe2, 0xe4, 0x03, + 0x37, 0x4c, 0x28, 0x40, 0xae, 0x66, 0x3f, 0x10, 0xa8, 0x01, 0x81, 0x3e, + 0x24, 0xf1, 0x94, 0x42, 0xe0, 0xe1, 0x99, 0xa0, 0x8f, 0xb9, 0x98, 0x62, + 0x49, 0x21, 0x82, 0x52, 0x20, 0x09, 0x80, 0x2a, 0x67, 0x31, 0x97, 0xbe, + 0x73, 0xf9, 0x83, 0x3a, 0x12, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0f, 0xd5, + 0xdb, 0x69, 0x3e, 0x83, 0xfc, 0xa3, 0x70, 0xb5, 0xad, 0x27, 0xf1, 0x7f, + 0x33, 0x6e, 0x17, 0x0d, 0xa2, 0xfc, 0x0f, 0xee, 0x8d, 0xc2, 0xdf, 0x34, + 0x9f, 0x81, 0xfa, 0xd1, 0xb8, 0x31, 0x83, 0x5a, 0x12, 0xa9, 0x89, 0x6c, + 0x48, 0x29, 0x82, 0x08, 0x03, 0xd9, 0x81, 0xa6, 0x19, 0xc1, 0x81, 0x84, + 0x08, 0x41, 0x82, 0xf6, 0x05, 0xa9, 0x81, 0x46, 0x00, 0xa1, 0xe4, 0x19, + 0xa6, 0x61, 0x20, 0x69, 0xb0, 0xc0, 0x60, 0x05, 0x2a, 0x2d, 0xe4, 0x5a, + 0xcd, 0x0b, 0xbc, 0xe7, 0xb5, 0xfc, 0x6c, 0x49, 0x64, 0x5d, 0x86, 0x75, + 0x0c, 0x52, 0xd9, 0xdd, 0x3c, 0x53, 0x5f, 0xf8, 0xdf, 0xc7, 0xf9, 0x5f, + 0xbf, 0x86, 0xf0, 0xfe, 0x7f, 0xff, 0xff, 0xaf, 0xff, 0xf5, 0xfb, 0x7f, + 0xaf, 0xb2, 0xfd, 0xba, 0xbe, 0xaa, 0xec, 0xed, 0xdf, 0x7f, 0x76, 0xd4, + 0xde, 0xbf, 0x6f, 0x6d, 0x25, 0xbd, 0x74, 0xfa, 0x8d, 0x13, 0x66, 0x30, + 0x35, 0xad, 0x22, 0x06, 0xa6, 0x2e, 0x8a, 0x1c, 0x45, 0xc4, 0x2a, 0x62, + 0x17, 0xf0, 0x49, 0x47, 0x3c, 0x07, 0x74, 0x4f, 0xe7, 0x0c, 0xd0, 0x64, + 0x9d, 0x8c, 0x11, 0x34, 0x0e, 0xb0, 0x07, 0xc0, 0x99, 0x26, 0xc0, 0x04, + 0x30, 0xc9, 0xc0, 0xda, 0x10, 0x70, 0xd4, 0x81, 0x1e, 0x50, 0x30, 0x6e, + 0x82, 0x71, 0x31, 0xcd, 0x5e, 0xd1, 0x31, 0xad, 0x9b, 0x87, 0x36, 0x3f, + 0x07, 0xa2, 0x31, 0x1b, 0x00, 0xbf, 0x31, 0x8a, 0x4b, 0xe7, 0x3b, 0xe0, + 0x4e, 0xde, 0x31, 0x87, 0x41, 0xd3, 0x30, 0x47, 0x01, 0x7e, 0x31, 0xc8, + 0x83, 0xdf, 0x30, 0x23, 0x81, 0x29, 0x30, 0x06, 0xc1, 0xe1, 0x32, 0x5d, + 0xab, 0x69, 0x31, 0xee, 0xc2, 0x57, 0x30, 0x5f, 0x80, 0x9e, 0x39, 0x78, + 0x13, 0x68, 0x32, 0x30, 0xf3, 0x33, 0x1d, 0x29, 0x30, 0x00, 0x45, 0x11, + 0x46, 0xe4, 0xaf, 0xd6, 0x9c, 0x88, 0x6a, 0x40, 0xed, 0x65, 0x2d, 0xbb, + 0xad, 0x40, 0x53, 0xb1, 0xcb, 0x39, 0xe1, 0x4f, 0x53, 0xee, 0xd4, 0xfc, + 0x33, 0xfc, 0xfb, 0x87, 0xf7, 0x5f, 0xdf, 0xdf, 0xff, 0xfe, 0xaf, 0xef, + 0x57, 0xdb, 0xae, 0xad, 0x6e, 0xaf, 0xef, 0xd4, 0xd7, 0xd6, 0xaa, 0xff, + 0xb6, 0xbb, 0x77, 0xee, 0xae, 0x82, 0xd5, 0xb3, 0x68, 0x5f, 0x42, 0xfe, + 0xcc, 0xab, 0xe6, 0x6e, 0x86, 0x75, 0x34, 0xe8, 0x9b, 0x99, 0x1b, 0xb0, + 0xb9, 0xc0, 0xcb, 0xa0, 0x19, 0x72, 0x0c, 0x43, 0x0d, 0x8b, 0xe0, 0x34, + 0x00, 0x54, 0x13, 0x52, 0x64, 0xed, 0x66, 0xa6, 0x68, 0xc3, 0x39, 0x14, + 0xa1, 0x1c, 0x52, 0x21, 0xe8, 0x10, 0xf0, 0x0a, 0x18, 0x18, 0xcc, 0x88, + 0x14, 0x0b, 0x66, 0x0e, 0x90, 0x4e, 0xa6, 0x39, 0x5b, 0xd8, 0xe6, 0x34, + 0xf3, 0x73, 0x66, 0xc9, 0x10, 0xfb, 0xc6, 0x1f, 0x10, 0x3f, 0xa6, 0x21, + 0x08, 0x21, 0xc6, 0xc7, 0x29, 0x6a, 0x86, 0x1a, 0x78, 0x27, 0xa6, 0x0e, + 0x70, 0x6f, 0xa6, 0x19, 0x88, 0xbd, 0xc6, 0x08, 0xa8, 0x02, 0x66, 0x0d, + 0x98, 0x29, 0xa6, 0x46, 0xfa, 0xa5, 0xe6, 0x51, 0x38, 0x00, 0xe6, 0x0c, + 0xe0, 0x03, 0x80, 0x6a, 0xf1, 0xa8, 0x19, 0x68, 0x68, 0x08, 0x93, 0xc0, + 0x60, 0x91, 0x38, 0x20, 0x03, 0x07, 0x46, 0x4f, 0x85, 0x81, 0x25, 0x8d, + 0x0b, 0x42, 0xf4, 0x83, 0x0c, 0xd1, 0xb2, 0x04, 0xd1, 0x12, 0x48, 0x75, + 0x4a, 0x86, 0xa9, 0xac, 0xe9, 0xea, 0xda, 0xa5, 0xde, 0x85, 0xee, 0xfd, + 0xfd, 0x7f, 0xea, 0xfe, 0xbf, 0x5d, 0x5f, 0xfe, 0xca, 0x7d, 0x6d, 0x5f, + 0xf6, 0xea, 0xbe, 0xff, 0xd4, 0xaf, 0xb6, 0xcd, 0xda, 0xfa, 0x56, 0x5a, + 0x94, 0xbd, 0x3a, 0xb4, 0xfa, 0x27, 0x5e, 0x70, 0x24, 0x1c, 0x0c, 0xdb, + 0x40, 0xe0, 0x8a, 0x80, 0x44, 0xa8, 0xb9, 0x4c, 0x80, 0xc3, 0x1c, 0x0d, + 0xa8, 0xba, 0x62, 0x6c, 0x92, 0xe6, 0xc6, 0xc5, 0xb3, 0x00, 0xb2, 0xf0, + 0x32, 0x41, 0xc7, 0x60, 0xae, 0x80, 0xe1, 0x49, 0x8b, 0x34, 0x0d, 0xd2, + 0x60, 0xbb, 0x90, 0x51, 0x44, 0x80, 0xd5, 0x30, 0x5d, 0x45, 0x00, 0x34, + 0x6c, 0xa1, 0xec, 0x34, 0x2e, 0xc4, 0xee, 0x3a, 0xbc, 0x83, 0xd1, 0x30, + 0xe7, 0x04, 0x9c, 0x30, 0x66, 0x91, 0x1b, 0x37, 0x42, 0x0d, 0xb2, 0x30, + 0xc4, 0x02, 0x6f, 0x30, 0x0b, 0x01, 0x30, 0x32, 0xd5, 0x41, 0x7f, 0x30, + 0x21, 0xc0, 0x58, 0x30, 0x37, 0x83, 0xed, 0x30, 0xde, 0x39, 0x2a, 0x31, + 0x1a, 0xc3, 0x86, 0x30, 0x48, 0x00, 0xed, 0x36, 0xb6, 0xa3, 0x16, 0x2d, + 0x39, 0x70, 0x70, 0xc0, 0x90, 0x50, 0x52, 0x34, 0xa5, 0x39, 0x71, 0x9b, + 0x6a, 0x8d, 0x25, 0x4a, 0x13, 0xc1, 0x5a, 0x7b, 0x46, 0x8d, 0xb0, 0x7f, + 0xbc, 0x71, 0xd6, 0x77, 0xbf, 0xfb, 0x71, 0x5d, 0xd5, 0xc2, 0xe4, 0xbe, + 0xff, 0xf2, 0x6a, 0xc7, 0xf3, 0x75, 0x3f, 0xff, 0xf5, 0xfa, 0xd5, 0xb5, + 0x2d, 0xad, 0x76, 0xba, 0x97, 0x5a, 0xd0, 0x7e, 0xa5, 0xd5, 0x67, 0xad, + 0x14, 0xaa, 0xba, 0x2e, 0xba, 0x2b, 0x4f, 0x4d, 0xaa, 0x52, 0x4b, 0xd4, + 0xec, 0xba, 0x2a, 0xe8, 0x3e, 0xa4, 0x55, 0xad, 0x13, 0xef, 0x32, 0x31, + 0xe6, 0x6c, 0xeb, 0x99, 0x2d, 0x6c, 0xa2, 0xb9, 0xe6, 0x96, 0x49, 0xe5, + 0xae, 0x43, 0x0b, 0x66, 0xee, 0xb1, 0x66, 0x91, 0x65, 0x94, 0x80, 0x80, + 0xd0, 0x16, 0x3a, 0x16, 0xd0, 0x47, 0xa2, 0xf8, 0x59, 0xe2, 0xb6, 0x03, + 0x1a, 0xb8, 0x14, 0x20, 0x5f, 0x21, 0x84, 0xe1, 0x68, 0xe3, 0x1d, 0x1c, + 0xb3, 0x62, 0xf8, 0x5e, 0x90, 0x03, 0x2e, 0x26, 0x63, 0x84, 0x3e, 0x11, + 0x8d, 0x09, 0x0a, 0x03, 0x38, 0xff, 0xfb, 0xd4, 0x60, 0x6b, 0x0d, 0x97, + 0x36, 0x70, 0x3f, 0x03, 0xfb, 0xa3, 0x70, 0x81, 0x6c, 0xe8, 0x1a, 0x7a, + 0x92, 0x6e, 0x18, 0x6d, 0xb9, 0x00, 0x2f, 0xf2, 0x8d, 0xc2, 0xa6, 0xb4, + 0x1e, 0xc5, 0xfd, 0xd1, 0xb8, 0xa8, 0x1b, 0x68, 0x43, 0xcf, 0x93, 0x82, + 0xd8, 0x6d, 0x93, 0x25, 0xec, 0xc1, 0x32, 0xd6, 0x91, 0x44, 0x00, 0x01, + 0x95, 0x10, 0x00, 0x00, 0x00, 0x20, 0x34, 0x60, 0x18, 0x02, 0xe6, 0x03, + 0xe0, 0x58, 0x60, 0x70, 0x0b, 0xe6, 0x10, 0xe1, 0xe4, 0x63, 0xa4, 0xd2, + 0x67, 0xf7, 0x52, 0x84, 0x63, 0xb4, 0x20, 0x66, 0x0b, 0xe1, 0xca, 0x63, + 0x80, 0x35, 0x06, 0x11, 0xe0, 0xc8, 0x60, 0x26, 0x0e, 0x06, 0xac, 0xab, + 0x80, 0x67, 0xd6, 0x03, 0xc1, 0x83, 0x0a, 0x0f, 0x36, 0x0a, 0x44, 0x00, + 0xa2, 0x60, 0x24, 0x38, 0x60, 0x41, 0xaa, 0x39, 0x52, 0x02, 0x6c, 0x5d, + 0xa0, 0x66, 0xc7, 0xce, 0xd1, 0x52, 0x13, 0x87, 0xd4, 0x9a, 0x2e, 0x62, + 0xad, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0x17, 0xc0, 0x0a, 0x8b, 0x88, 0x10, + 0xf2, 0xd3, 0x8c, 0xc9, 0x55, 0xd7, 0x56, 0xfa, 0xc6, 0xb0, 0xb3, 0x59, + 0x21, 0x0b, 0x1b, 0xb0, 0x0d, 0x81, 0xf5, 0x20, 0xc1, 0x12, 0x01, 0xe0, + 0xd4, 0xc7, 0x44, 0xec, 0xcf, 0x7a, 0x40, 0xb0, 0xd5, 0xda, 0x1b, 0xd4, + 0xc0, 0x76, 0x00, 0xe8, 0xc2, 0x56, 0x06, 0x38, 0xce, 0xb4, 0x2c, 0xe4, + 0xc1, 0xae, 0x05, 0xf8, 0xc0, 0x43, 0x05, 0x28, 0xc9, 0x3a, 0x11, 0x78, + 0x42, 0x06, 0xe9, 0x85, 0x2c, 0x30, 0x91, 0x9b, 0xb4, 0x5e, 0xd9, 0x9e, + 0x10, 0x0d, 0xd1, 0x84, 0xe6, 0x05, 0xb9, 0xc6, 0x8d, 0xc6, 0x99, 0x38, + 0x99, 0x50, 0x8c, 0x63, 0x41, 0x41, 0x83, 0xc3, 0x25, 0xc8, 0x43, 0xd4, + 0x06, 0xde, 0xcb, 0x05, 0xa4, 0xd5, 0xa6, 0xf2, 0x96, 0xca, 0xa1, 0x5d, + 0x98, 0xa6, 0x9b, 0xcf, 0x7b, 0x8e, 0x46, 0xbb, 0xfa, 0xa9, 0x96, 0x5f, + 0xdd, 0xe3, 0xfb, 0xd7, 0x7f, 0xff, 0xf1, 0xff, 0xf5, 0x7a, 0xff, 0xed, + 0xe8, 0xeb, 0xbe, 0xb5, 0xea, 0xbf, 0xbb, 0xea, 0xba, 0xd4, 0xa4, 0xba, + 0xbd, 0xdb, 0x77, 0xf4, 0x75, 0x57, 0xad, 0xbd, 0x9b, 0xa5, 0xad, 0x1b, + 0xd4, 0x73, 0xb1, 0x83, 0xe6, 0xc6, 0xef, 0x91, 0x22, 0x5d, 0x03, 0x30, + 0x68, 0x08, 0x0f, 0x60, 0xd0, 0xb6, 0x24, 0xb9, 0xe3, 0xa3, 0x1a, 0x03, + 0xd4, 0x86, 0xc2, 0x64, 0x64, 0x62, 0x8a, 0x9d, 0x29, 0x70, 0xcc, 0x10, + 0x00, 0x01, 0xe2, 0x06, 0x64, 0x88, 0x54, 0x2d, 0x60, 0x17, 0x38, 0x16, + 0x42, 0x7d, 0xc7, 0xd1, 0x14, 0x3d, 0x9d, 0x35, 0xdc, 0xe9, 0xec, 0x18, + 0x04, 0x80, 0x11, 0x98, 0x05, 0x40, 0x1e, 0x18, 0x0a, 0xa0, 0x42, 0x98, + 0x14, 0xc0, 0x7e, 0x18, 0x2a, 0x21, 0x1d, 0x98, 0x84, 0x47, 0x4d, 0x1c, + 0x32, 0x4a, 0x65, 0x98, 0x85, 0x41, 0x59, 0x18, 0x33, 0xa1, 0x5d, 0x98, + 0xc3, 0xa1, 0x87, 0x98, 0x09, 0x40, 0x39, 0x18, 0x0d, 0x61, 0xb3, 0x1a, + 0x34, 0x4b, 0xc3, 0x18, 0xef, 0x01, 0x24, 0x18, 0x2a, 0xe0, 0x63, 0x9c, + 0xe2, 0xc1, 0xad, 0xa1, 0x99, 0x00, 0xb1, 0x8e, 0x07, 0x18, 0x58, 0x2a, + 0x4c, 0x3a, 0xec, 0x3e, 0x82, 0x9e, 0x02, 0xaf, 0x9d, 0xed, 0xdc, 0x86, + 0xfb, 0x6a, 0xb6, 0x71, 0xbf, 0xee, 0x59, 0x52, 0x77, 0x7b, 0xd6, 0x1f, + 0xfb, 0xdf, 0x7f, 0xfb, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xeb, 0xf5, 0xff, 0x5d, 0xb5, 0xfe, 0xff, 0xff, 0x6f, 0x6d, 0xd7, + 0xdd, 0x7a, 0x99, 0x5a, 0x99, 0x0c, 0xcd, 0xdb, 0x2f, 0xa4, 0xe6, 0x44, + 0xc8, 0x1b, 0xa2, 0x63, 0x84, 0xcc, 0x73, 0xcb, 0xa4, 0x78, 0x18, 0x52, + 0xe2, 0x73, 0x52, 0x93, 0x31, 0x5b, 0x1a, 0x29, 0x04, 0xc3, 0x44, 0x0c, + 0xf8, 0xd0, 0xa2, 0x5f, 0x44, 0x80, 0x01, 0xb1, 0x04, 0x21, 0x86, 0x69, + 0x2a, 0x30, 0x5d, 0xc0, 0x34, 0x35, 0x84, 0x03, 0x5e, 0x31, 0xe2, 0x4f, + 0x1c, 0x32, 0x54, 0xc7, 0x57, 0x30, 0x37, 0x41, 0x3f, 0x30, 0x0c, 0x45, + 0xc8, 0x31, 0x99, 0xc4, 0xda, 0x30, 0x5f, 0xc0, 0x2c, 0x30, 0x3c, 0x42, + 0x5b, 0x31, 0x9f, 0x48, 0x05, 0x24, 0x05, 0x80, 0xc2, 0x3d, 0x0b, 0xd4, + 0xe1, 0x59, 0x8a, 0x54, 0xc0, 0xe9, 0x10, 0xa4, 0xc1, 0x1a, 0x05, 0x98, + 0xe1, 0xf0, 0xcd, 0x58, 0xf8, 0xd8, 0x40, 0x4c, 0xc4, 0x64, 0xc8, 0x01, + 0x03, 0x04, 0xd5, 0xe0, 0xd1, 0x9d, 0x6b, 0x32, 0xe4, 0x97, 0x77, 0xdb, + 0xeb, 0x51, 0xb5, 0xe3, 0x0a, 0xf8, 0xdd, 0x68, 0x47, 0x6d, 0xd8, 0x95, + 0x43, 0xf8, 0xe7, 0x5e, 0x6a, 0x97, 0xbf, 0x77, 0x1b, 0xff, 0xfc, 0xc3, + 0xff, 0xff, 0x3f, 0xff, 0xf5, 0xbb, 0xeb, 0x53, 0xee, 0xbe, 0xe8, 0xeb, + 0x77, 0xe9, 0x27, 0xa6, 0x8b, 0x69, 0xde, 0xb7, 0x57, 0x75, 0xad, 0x69, + 0xdb, 0x5b, 0xbe, 0xca, 0xaa, 0x9a, 0x37, 0x53, 0x21, 0xdd, 0x7a, 0x09, + 0x32, 0xe6, 0x37, 0xa8, 0xf2, 0xb5, 0x1b, 0xa3, 0x51, 0x61, 0x8f, 0x65, + 0xd3, 0x66, 0xc5, 0xc8, 0x6c, 0x81, 0x64, 0x22, 0x58, 0x0e, 0xaa, 0xc0, + 0xed, 0x0c, 0x93, 0x16, 0x46, 0xd0, 0x03, 0x0d, 0x0f, 0xb9, 0xe3, 0x32, + 0x2e, 0x68, 0x9c, 0xc4, 0x94, 0x35, 0x40, 0x30, 0x90, 0x03, 0x3d, 0x33, + 0x2a, 0x11, 0x72, 0x68, 0x26, 0x0c, 0x0e, 0x94, 0x50, 0xd5, 0x25, 0x83, + 0x42, 0x04, 0x39, 0x28, 0xce, 0xa6, 0x4b, 0xe8, 0x9c, 0x37, 0xd3, 0x3a, + 0x60, 0x0e, 0x00, 0x3e, 0x60, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0x96, + 0xb7, 0x70, 0x3f, 0x83, 0xfb, 0xa3, 0x70, 0x98, 0xad, 0x27, 0xd0, 0x7e, + 0x74, 0x6e, 0x1b, 0xf5, 0xa6, 0xf6, 0x0f, 0xee, 0x8d, 0xc2, 0x03, 0xb3, + 0x9f, 0x95, 0xea, 0x51, 0xb8, 0x14, 0x80, 0x50, 0x60, 0x1c, 0x00, 0x76, + 0x60, 0x30, 0x80, 0xdc, 0x60, 0x6e, 0x02, 0x56, 0x61, 0x59, 0x95, 0xbc, + 0x6d, 0x2d, 0x87, 0x6a, 0x61, 0xa7, 0x81, 0x7c, 0x60, 0x9c, 0x01, 0x4c, + 0x60, 0xa9, 0x04, 0x20, 0x60, 0x01, 0x01, 0x12, 0x60, 0x2d, 0x81, 0x38, + 0x69, 0x88, 0xab, 0x8a, 0x62, 0x42, 0x02, 0x92, 0x60, 0x36, 0x80, 0xc4, + 0x07, 0x8f, 0x86, 0x84, 0x06, 0x53, 0x07, 0x4c, 0x2c, 0x23, 0x24, 0x3c, + 0x05, 0xdc, 0xcb, 0x2e, 0x8b, 0xb2, 0x26, 0xaa, 0x23, 0x9a, 0x7e, 0x92, + 0x47, 0x9d, 0xea, 0x4f, 0x5a, 0x91, 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xea, 0xf5, 0xfb, 0x75, 0x3f, + 0x57, 0xa2, 0x97, 0x2e, 0x1f, 0x51, 0xd0, 0xd6, 0x02, 0x10, 0x84, 0xb9, + 0x24, 0x33, 0x29, 0x92, 0x60, 0x0c, 0x24, 0x28, 0x0c, 0xd1, 0x33, 0x73, + 0x8b, 0x99, 0x9c, 0x31, 0x28, 0x10, 0x70, 0x75, 0x82, 0xa9, 0xe1, 0xa2, + 0x64, 0x25, 0x60, 0xdf, 0x44, 0x95, 0x29, 0x91, 0xe3, 0x00, 0x10, 0x2f, + 0x43, 0x8a, 0xe5, 0x3e, 0xe3, 0x3c, 0x95, 0x99, 0x43, 0xb2, 0xbc, 0x57, + 0xf3, 0x0c, 0x64, 0x33, 0xa3, 0x01, 0x84, 0x3c, 0xa3, 0x0a, 0x70, 0x53, + 0x53, 0x00, 0x4c, 0x12, 0x53, 0x0c, 0x60, 0x2e, 0xa3, 0x0f, 0x04, 0xdc, + 0xc3, 0x03, 0x28, 0x00, 0xf3, 0x08, 0xc4, 0x51, 0x73, 0xf3, 0x62, 0x2e, + 0x43, 0x3b, 0xb4, 0x0d, 0x83, 0x09, 0xc0, 0x04, 0x50, 0xde, 0xe3, 0x90, + 0x2b, 0x31, 0xa7, 0x33, 0x1b, 0x15, 0x04, 0x05, 0x21, 0xc4, 0xb0, 0x10, + 0x95, 0x50, 0x4f, 0x1b, 0x09, 0x6a, 0x56, 0x7a, 0xb0, 0x59, 0x94, 0x3b, + 0x4e, 0xb4, 0xeb, 0xab, 0x0c, 0xb9, 0x4e, 0x96, 0xb9, 0x12, 0x9a, 0xb7, + 0xbb, 0xb2, 0xab, 0xff, 0xcc, 0xae, 0x65, 0xff, 0x6a, 0x9b, 0xfb, 0xdf, + 0xcb, 0xb7, 0x74, 0x91, 0xb3, 0x29, 0x76, 0xba, 0x0a, 0x76, 0x74, 0x51, + 0xf3, 0x25, 0x56, 0xbd, 0xe9, 0x3e, 0x8a, 0x3a, 0xce, 0x24, 0xe8, 0x56, + 0x71, 0xa9, 0x24, 0xaa, 0x0b, 0xda, 0xa3, 0x27, 0x7a, 0x49, 0xae, 0x81, + 0x92, 0x5a, 0x09, 0x27, 0x41, 0x02, 0xf2, 0x49, 0x29, 0xdd, 0x68, 0x52, + 0x36, 0x75, 0xa8, 0xd9, 0x2d, 0x22, 0xf1, 0x79, 0x6c, 0x64, 0x7d, 0xee, + 0x4d, 0x10, 0x63, 0xc8, 0x98, 0x10, 0x63, 0x25, 0x90, 0xc0, 0xc8, 0xe0, + 0x6d, 0x5a, 0xa4, 0x2e, 0x11, 0x2f, 0x2c, 0xb0, 0x05, 0x0a, 0x05, 0x83, + 0x4c, 0x5d, 0xd6, 0xa3, 0x33, 0x55, 0xb8, 0xeb, 0x16, 0x71, 0x3a, 0x30, + 0x42, 0xe7, 0x07, 0x34, 0x20, 0x08, 0x08, 0x09, 0x82, 0x8a, 0x89, 0x13, + 0x23, 0xe2, 0x76, 0x2d, 0x8a, 0x02, 0xc0, 0x1e, 0xa0, 0x66, 0x00, 0xc0, + 0x00, 0x60, 0x3e, 0x04, 0x26, 0x0c, 0x00, 0xd0, 0x63, 0x62, 0x67, 0xa6, + 0xcc, 0xf0, 0xbc, 0x60, 0x7c, 0x15, 0xe6, 0x03, 0x20, 0xb4, 0x61, 0x18, + 0x21, 0x26, 0x02, 0xc0, 0x3c, 0x60, 0xea, 0x41, 0x27, 0xd3, 0x4e, 0xd4, + 0x66, 0xaa, 0x18, 0x66, 0x13, 0xc0, 0x44, 0x06, 0xfc, 0x38, 0x16, 0x68, + 0x06, 0x2c, 0x98, 0x5c, 0x38, 0x65, 0x81, 0xc6, 0x2b, 0x84, 0xc1, 0x69, + 0x69, 0x1e, 0x3f, 0x54, 0xac, 0x9d, 0x93, 0x51, 0x96, 0xa7, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0x5e, 0xfe, 0xfd, 0x4f, 0x58, 0xea, 0x02, 0xc3, 0xc9, 0xe5, 0x14, + 0x8c, 0xc6, 0xb0, 0x0e, 0x60, 0x32, 0x86, 0x76, 0x5d, 0x9a, 0x9a, 0x00, + 0x98, 0x10, 0x30, 0x62, 0x48, 0x91, 0xa9, 0x5d, 0xcc, 0x00, 0x00, 0x29, + 0x13, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0xaa, + 0xaa, 0x64, 0x00, 0x03, 0x02, 0xc4, 0x2a, 0x73, 0x38, 0x91, 0x2a, 0xf3, + 0x1f, 0xd0, 0x7f, 0x93, 0x5d, 0x9c, 0x46, 0x83, 0x0a, 0x14, 0x0b, 0x63, + 0x01, 0x7c, 0x4c, 0xb3, 0x32, 0x5c, 0x6e, 0x73, 0x03, 0x94, 0x0c, 0xc3, + 0x04, 0xdc, 0x0a, 0xc3, 0x18, 0xb8, 0x5a, 0xd3, 0x00, 0x90, 0x0a, 0x73, + 0x08, 0x40, 0x24, 0xa3, 0x8f, 0x14, 0x1a, 0xe3, 0x06, 0x60, 0x15, 0x83, + 0x04, 0xbc, 0x07, 0x33, 0x8a, 0x3c, 0x34, 0xd2, 0xf3, 0x52, 0x36, 0x30, + 0xc1, 0x03, 0x01, 0x01, 0x4a, 0x82, 0x50, 0x05, 0x8f, 0xaa, 0xd4, 0xcd, + 0xd2, 0x3c, 0xfc, 0xe1, 0x83, 0x61, 0xb5, 0x8c, 0x35, 0x61, 0xf6, 0xab, + 0x66, 0xe6, 0x74, 0x77, 0xb1, 0xb1, 0xa9, 0xce, 0x6f, 0xba, 0xc3, 0xff, + 0xff, 0xbf, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0x5f, 0xab, 0x5d, 0x5f, 0xed, + 0xda, 0xa5, 0xfd, 0x07, 0x77, 0xaa, 0xda, 0xd3, 0x6f, 0x7d, 0x5d, 0x4c, + 0xba, 0x0a, 0xaf, 0x53, 0xbe, 0xd7, 0xd3, 0x5b, 0x50, 0x4d, 0xf5, 0xdb, + 0x3b, 0x4e, 0x99, 0x48, 0xc1, 0x33, 0x00, 0xc1, 0xe1, 0x85, 0x04, 0x6a, + 0x78, 0x4b, 0x26, 0xc1, 0xa1, 0x87, 0x00, 0x7e, 0x79, 0x35, 0x59, 0x14, + 0x8c, 0xc5, 0xca, 0x01, 0x6a, 0x24, 0xcb, 0x82, 0x17, 0x31, 0x1c, 0xa0, + 0x38, 0xe0, 0x34, 0xa4, 0x4e, 0x1d, 0x2f, 0x80, 0x1e, 0x00, 0xc0, 0xb5, + 0x0d, 0xd4, 0xd2, 0x6a, 0x61, 0x04, 0xca, 0x42, 0x29, 0xb4, 0xde, 0x41, + 0x17, 0x98, 0xc3, 0xe3, 0x00, 0x64, 0xc3, 0x10, 0x30, 0x60, 0xce, 0x24, + 0x35, 0x40, 0xc2, 0x76, 0x03, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0d, 0xd5, + 0xd1, 0x69, 0x3e, 0x93, 0xfb, 0x9b, 0x70, 0xb5, 0xec, 0xe7, 0xb5, 0x7f, + 0x54, 0x6e, 0x57, 0x25, 0xa0, 0xf8, 0x2f, 0xe9, 0xad, 0xc2, 0xd1, 0x34, + 0x1f, 0x89, 0xfd, 0x51, 0xb8, 0x20, 0xc2, 0x6b, 0x07, 0x70, 0xc7, 0xaa, + 0x1e, 0xf4, 0xc1, 0x54, 0x04, 0x04, 0xc2, 0x00, 0x13, 0x68, 0xdd, 0x8b, + 0x1c, 0xd8, 0xc4, 0x9e, 0x09, 0xa0, 0xc0, 0xf7, 0x03, 0x7c, 0xf9, 0x7e, + 0x38, 0xae, 0xcd, 0x73, 0x63, 0x24, 0x60, 0x0c, 0x8d, 0x3a, 0x16, 0x94, + 0x66, 0x82, 0x9a, 0x2f, 0x2d, 0x95, 0x2d, 0x5a, 0xb6, 0xaf, 0xf6, 0x96, + 0x1e, 0xb9, 0x63, 0x78, 0xeb, 0x1c, 0x6c, 0x6e, 0xf5, 0x6b, 0x17, 0xb1, + 0xd5, 0xcc, 0xbb, 0xff, 0xfd, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0x64, + 0xb5, 0xaf, 0x7f, 0xfd, 0x75, 0x2d, 0xfd, 0x07, 0xba, 0xd5, 0xeb, 0x76, + 0xeb, 0x75, 0x55, 0xd5, 0x65, 0x20, 0xaf, 0x55, 0xdb, 0xd6, 0xb5, 0xaf, + 0x65, 0xea, 0xd3, 0xfd, 0x36, 0x3d, 0x38, 0x2f, 0x40, 0xcf, 0x12, 0x22, + 0xa6, 0xa0, 0xd0, 0x31, 0xa1, 0x5c, 0x14, 0x78, 0x14, 0x54, 0x79, 0x35, + 0xb1, 0x8a, 0xd3, 0x44, 0xcc, 0x8a, 0x08, 0x2e, 0x07, 0x38, 0x29, 0x08, + 0x3a, 0x81, 0xb4, 0xe5, 0xd0, 0x30, 0x6b, 0x0d, 0x67, 0x41, 0x80, 0x7a, + 0x05, 0x01, 0x92, 0x6e, 0xc2, 0x61, 0x8e, 0x02, 0x96, 0xe9, 0x91, 0xd2, + 0x35, 0xd1, 0x81, 0x3e, 0x0d, 0xb9, 0x82, 0x18, 0x51, 0x99, 0x86, 0x9c, + 0x61, 0x11, 0x80, 0x18, 0x0c, 0x09, 0x81, 0x3c, 0x0d, 0x79, 0x89, 0xe2, + 0x15, 0xf1, 0x81, 0xb2, 0x00, 0x59, 0x82, 0x96, 0x0a, 0x71, 0xce, 0x60, + 0x93, 0xc9, 0x8d, 0x6a, 0x00, 0xc9, 0x82, 0xe8, 0x03, 0xa1, 0xed, 0x12, + 0x73, 0x83, 0x19, 0x31, 0xe1, 0xc3, 0xcc, 0x50, 0x85, 0x17, 0x15, 0x08, + 0xdd, 0x98, 0x7c, 0x34, 0xde, 0x76, 0x2a, 0xd0, 0xe5, 0x1b, 0x87, 0xaa, + 0x50, 0xcd, 0xdc, 0xe4, 0xa6, 0x1f, 0xad, 0xda, 0x5a, 0x4b, 0xd9, 0xef, + 0x2f, 0xcf, 0xb9, 0xe3, 0x87, 0x3f, 0xff, 0xff, 0xff, 0xf5, 0xfd, 0xbf, + 0xfd, 0x7f, 0xa9, 0xee, 0xad, 0xef, 0xd5, 0x55, 0x7e, 0xb5, 0xeb, 0x53, + 0x2d, 0x92, 0x42, 0xff, 0x5d, 0x05, 0x2d, 0xbb, 0xbf, 0xa9, 0x6d, 0x76, + 0x5a, 0xaf, 0xd6, 0xa6, 0x5b, 0xa9, 0x74, 0xd6, 0xba, 0x0b, 0xb2, 0x0b, + 0x33, 0x3c, 0x89, 0xb0, 0xe0, 0x07, 0x48, 0x27, 0x83, 0x0a, 0x4b, 0x86, + 0xd9, 0x44, 0xac, 0x00, 0x2c, 0x87, 0x97, 0x42, 0xa7, 0xae, 0xa3, 0x30, + 0xc4, 0x1e, 0x48, 0x24, 0xd1, 0x02, 0x1f, 0x02, 0xea, 0x0f, 0x43, 0xc8, + 0x90, 0x29, 0xb2, 0x06, 0x00, 0x80, 0x07, 0xc6, 0x38, 0xda, 0x59, 0x86, + 0x2a, 0xb9, 0xd5, 0xa6, 0x37, 0x18, 0xb3, 0x86, 0x01, 0xa8, 0x61, 0x66, + 0x06, 0xb9, 0x5f, 0xc6, 0x03, 0xc9, 0xb1, 0x26, 0x05, 0xd0, 0x32, 0x86, + 0x00, 0x68, 0x4d, 0x62, 0x20, 0x6f, 0x05, 0x41, 0x24, 0x30, 0x52, 0xc2, + 0xc9, 0x32, 0xc7, 0x88, 0x5d, 0x30, 0x6b, 0x01, 0x77, 0x30, 0x1a, 0xc0, + 0x1a, 0x36, 0xb0, 0x4c, 0x42, 0x20, 0xa8, 0xf0, 0x48, 0x36, 0x06, 0xbc, + 0x96, 0x11, 0xee, 0x6b, 0x10, 0xca, 0xeb, 0x8f, 0x47, 0xa2, 0xee, 0x1c, + 0x9f, 0x0a, 0x39, 0x44, 0x86, 0x7e, 0x86, 0xb5, 0x25, 0x59, 0xfa, 0x2a, + 0x7d, 0x58, 0xff, 0xee, 0x1c, 0xfe, 0x6f, 0xfb, 0xfb, 0xee, 0xbf, 0xff, + 0xff, 0xff, 0xff, 0xfb, 0xbf, 0xdd, 0x0d, 0x54, 0x3a, 0xed, 0xeb, 0xff, + 0xed, 0x7d, 0xaa, 0xd4, 0xca, 0xab, 0x7a, 0x7b, 0x6d, 0x7a, 0x6c, 0x9f, + 0x6b, 0xa0, 0xa4, 0x17, 0x5a, 0x6a, 0x69, 0x9a, 0x46, 0x8b, 0x30, 0x3c, + 0x39, 0x64, 0x08, 0x2f, 0x99, 0x06, 0x20, 0x02, 0x9e, 0x55, 0x23, 0x00, + 0x35, 0x00, 0xb1, 0x26, 0xa4, 0x4c, 0xeb, 0x41, 0x0a, 0x01, 0x08, 0x30, + 0x18, 0x26, 0x56, 0x3a, 0x28, 0x62, 0x06, 0x41, 0xc0, 0xa0, 0x71, 0xb0, + 0x45, 0xcb, 0x55, 0x30, 0x4f, 0x03, 0x4f, 0x30, 0xf6, 0x54, 0xf7, 0x30, + 0x75, 0xca, 0x8b, 0x34, 0x35, 0x84, 0xa4, 0x30, 0x73, 0x81, 0x7d, 0x30, + 0x8b, 0x83, 0x90, 0x36, 0x73, 0x85, 0x0f, 0x30, 0xcc, 0x00, 0xa4, 0x30, + 0x32, 0x40, 0x80, 0x30, 0x21, 0x00, 0x92, 0x30, 0x32, 0x80, 0xb7, 0x30, + 0x42, 0x41, 0x32, 0x39, 0x2a, 0xe3, 0xf2, 0x31, 0x9e, 0x83, 0x38, 0x30, + 0x02, 0x41, 0x1f, 0x31, 0xe8, 0xa3, 0x15, 0x25, 0x34, 0x21, 0x40, 0x70, + 0xc1, 0x10, 0xfa, 0x38, 0x08, 0xc2, 0x8a, 0xc0, 0x20, 0x5b, 0x32, 0xd6, + 0x66, 0xa7, 0xa9, 0x39, 0x93, 0x65, 0xa3, 0xbf, 0x5a, 0xec, 0x7e, 0x5d, + 0x9e, 0x34, 0x34, 0x99, 0x7e, 0xab, 0xe1, 0x97, 0xf7, 0x0f, 0xdf, 0x7f, + 0x9d, 0xff, 0xff, 0xff, 0xf5, 0xfa, 0xbf, 0xf6, 0x6d, 0x3a, 0xea, 0x6f, + 0x6b, 0x29, 0x6d, 0x65, 0x23, 0xed, 0xea, 0xbd, 0x7d, 0x68, 0x55, 0xfd, + 0xdf, 0x67, 0xb5, 0xdb, 0x4d, 0x26, 0xd0, 0x45, 0xda, 0x83, 0x2b, 0x4f, + 0xa4, 0x9d, 0xe9, 0xa0, 0x9a, 0x52, 0x7d, 0x13, 0x54, 0x83, 0xd0, 0x03, + 0x52, 0x83, 0x6e, 0x33, 0x51, 0x64, 0x97, 0x12, 0x9a, 0xd2, 0x28, 0x1b, + 0x97, 0xd6, 0xa3, 0x8c, 0x5a, 0x8b, 0xc1, 0xb6, 0x6e, 0x55, 0x1c, 0x26, + 0x21, 0x90, 0x00, 0xf5, 0xe0, 0x72, 0x0b, 0x24, 0xdc, 0x00, 0x60, 0xbf, + 0x07, 0xb6, 0x62, 0x51, 0xaf, 0xd6, 0x60, 0xce, 0x97, 0xda, 0x69, 0x60, + 0x0a, 0x14, 0x61, 0xf8, 0x01, 0x42, 0x63, 0x28, 0x90, 0x02, 0x79, 0xc1, + 0x86, 0xdc, 0x62, 0xf9, 0x82, 0xff, 0xfb, 0xd4, 0x40, 0x6d, 0x0d, 0xd5, + 0xcd, 0x68, 0x3e, 0x03, 0xfb, 0x9b, 0x70, 0xb7, 0xed, 0x17, 0xb1, 0x7f, + 0x30, 0x6e, 0x16, 0xe1, 0xa4, 0xfc, 0x2f, 0xd6, 0x8d, 0xc2, 0xe7, 0x34, + 0x1f, 0x01, 0xf7, 0xcd, 0xb8, 0x4a, 0x61, 0x01, 0x00, 0xf4, 0x63, 0x71, + 0x80, 0xde, 0x60, 0x12, 0x83, 0x06, 0x60, 0x06, 0x83, 0xac, 0x64, 0x0b, + 0x8f, 0x24, 0x61, 0x6e, 0x82, 0x40, 0x2c, 0x02, 0x98, 0x04, 0x73, 0x88, + 0xb5, 0x2a, 0x6e, 0x8a, 0xde, 0x9a, 0x2a, 0xe2, 0xa5, 0x66, 0xb5, 0x15, + 0x7f, 0xaf, 0xb8, 0x51, 0xe7, 0xf6, 0x35, 0x33, 0x29, 0x89, 0x4b, 0xaa, + 0x5b, 0xef, 0x6b, 0xef, 0x54, 0xb5, 0xb3, 0xef, 0x37, 0x96, 0x1c, 0xef, + 0x7b, 0xfb, 0xdf, 0xff, 0xff, 0xe9, 0xff, 0xaf, 0xfb, 0x5b, 0xdd, 0x5e, + 0xda, 0x0f, 0xa9, 0x4c, 0xd5, 0xd2, 0x65, 0xee, 0xa5, 0x3d, 0x6e, 0xb5, + 0xad, 0x54, 0xaa, 0xbd, 0xb7, 0xfe, 0xbd, 0x7b, 0x33, 0xd9, 0xd0, 0x76, + 0x41, 0x36, 0x67, 0x49, 0x35, 0x3d, 0xd6, 0x62, 0xa4, 0x53, 0x31, 0x5a, + 0x06, 0x46, 0x49, 0x10, 0xd0, 0xe4, 0x86, 0x64, 0xaa, 0x81, 0x5d, 0x02, + 0x44, 0x39, 0x8c, 0x59, 0x62, 0x86, 0x4d, 0xd2, 0x60, 0xb6, 0xa0, 0x24, + 0x26, 0x0a, 0x24, 0x35, 0x02, 0x6c, 0x48, 0x84, 0xec, 0x45, 0x8b, 0x85, + 0xb4, 0x18, 0x0e, 0x60, 0x10, 0x98, 0xdd, 0xc6, 0x29, 0x18, 0xdd, 0x01, + 0x4e, 0x9a, 0x2b, 0x80, 0x61, 0x98, 0x26, 0x80, 0x48, 0x18, 0x03, 0x63, + 0x9c, 0x19, 0x13, 0xe3, 0xf2, 0x98, 0x2f, 0x60, 0xa3, 0x18, 0x10, 0x00, + 0x60, 0x98, 0x32, 0x40, 0x7a, 0x98, 0x16, 0xe0, 0x81, 0x18, 0x44, 0x82, + 0x21, 0x9a, 0x70, 0x89, 0x98, 0x99, 0x33, 0xc1, 0x4f, 0x98, 0x33, 0xa0, + 0x69, 0x01, 0xad, 0x0a, 0xe0, 0x65, 0xb2, 0x10, 0x18, 0x30, 0x34, 0x08, + 0x40, 0xc0, 0x38, 0x0a, 0x16, 0xfc, 0x1f, 0x80, 0xb2, 0x89, 0x92, 0x1c, + 0x57, 0x34, 0x1c, 0xf1, 0xda, 0x5e, 0x49, 0xcb, 0xc9, 0x98, 0xac, 0xb6, + 0x44, 0x8e, 0xd1, 0x2c, 0x9e, 0x74, 0x51, 0x47, 0xdd, 0x7f, 0xed, 0xd7, + 0xff, 0xfd, 0xb5, 0xaa, 0xda, 0x56, 0xbf, 0xaf, 0xd2, 0xef, 0xab, 0xba, + 0xeb, 0x57, 0x7a, 0x9b, 0x6e, 0xa5, 0xff, 0xdb, 0xed, 0x4b, 0x6b, 0xa2, + 0xa7, 0x5a, 0xe9, 0x3a, 0xe9, 0x9a, 0xb3, 0x3a, 0x24, 0xea, 0x34, 0x42, + 0x10, 0x40, 0x00, 0xd4, 0x54, 0x4a, 0xe6, 0x05, 0x71, 0xc9, 0x0d, 0x1c, + 0x4e, 0xe4, 0xc1, 0x3e, 0x91, 0x82, 0x6a, 0x3a, 0xa2, 0x64, 0x8c, 0x2b, + 0x80, 0xd0, 0x01, 0x6d, 0x32, 0x3a, 0xa1, 0x9e, 0x03, 0x52, 0xd4, 0x3e, + 0xa9, 0x3a, 0x65, 0xf3, 0x03, 0xa4, 0x01, 0xe3, 0x24, 0x68, 0xfd, 0xc3, + 0x23, 0xd8, 0x2f, 0xf3, 0x5a, 0x08, 0x22, 0x13, 0x07, 0x10, 0x38, 0x63, + 0x01, 0xad, 0x26, 0xd3, 0x4a, 0xd1, 0x46, 0xa3, 0x0c, 0x08, 0x2b, 0xd0, + 0xb8, 0x48, 0xc6, 0x24, 0xf0, 0x3e, 0xc6, 0x06, 0x68, 0x06, 0x46, 0x10, + 0x50, 0x0b, 0xe6, 0x26, 0x60, 0x99, 0xa6, 0x0a, 0x68, 0x00, 0xe1, 0xc0, + 0x22, 0x81, 0xc9, 0x18, 0x06, 0xf2, 0xa4, 0xb0, 0x1c, 0xe7, 0x71, 0x61, + 0x25, 0x4a, 0x77, 0xec, 0x4a, 0x88, 0xcb, 0x2e, 0x4c, 0xcd, 0xac, 0x8c, + 0x72, 0xda, 0x0c, 0x2b, 0xd7, 0x31, 0x9e, 0xfa, 0xc9, 0x1e, 0x6b, 0xee, + 0xb6, 0xcf, 0xfa, 0xdf, 0xff, 0xeb, 0xaf, 0x6d, 0x7b, 0xea, 0xd5, 0xaf, + 0xb7, 0x75, 0x77, 0x6f, 0xab, 0x53, 0xdd, 0x14, 0xad, 0x5b, 0x3e, 0xb6, + 0x7d, 0x2d, 0x90, 0x7a, 0x55, 0xb3, 0x68, 0xa9, 0xd1, 0xa4, 0x96, 0xa4, + 0xd9, 0x4f, 0x45, 0x5b, 0x24, 0xb4, 0xec, 0x7d, 0xb3, 0x1a, 0x6c, 0xa2, + 0xe9, 0x92, 0x74, 0x0b, 0x63, 0xa4, 0xa0, 0x7c, 0x98, 0x26, 0x47, 0x91, + 0x01, 0x80, 0xa5, 0x00, 0x68, 0x83, 0x3e, 0x2e, 0x42, 0x70, 0x87, 0x97, + 0x0e, 0x91, 0x84, 0x34, 0x63, 0x85, 0xac, 0x5c, 0x00, 0x7d, 0x28, 0x87, + 0x0b, 0x84, 0x74, 0x19, 0x97, 0xc7, 0x41, 0x6c, 0xd5, 0x95, 0x24, 0x00, + 0x03, 0x02, 0x90, 0x14, 0xd3, 0x20, 0x34, 0x61, 0x13, 0x0b, 0x4c, 0x58, + 0x23, 0x24, 0x68, 0x30, 0x93, 0x02, 0xf0, 0x02, 0xa3, 0x03, 0xe4, 0x2a, + 0x83, 0x1a, 0x2c, 0x66, 0x43, 0x01, 0xb4, 0x06, 0x90, 0x50, 0x0a, 0x86, + 0x0b, 0x68, 0x13, 0x66, 0x00, 0x00, 0x13, 0x66, 0x02, 0xd8, 0x92, 0x86, + 0x1c, 0x6a, 0x3f, 0x26, 0x2e, 0xe8, 0x23, 0xe6, 0x06, 0x30, 0x03, 0xc0, + 0x4c, 0xb8, 0x1a, 0x22, 0x00, 0x6d, 0xd7, 0x86, 0x3e, 0x24, 0x03, 0xac, + 0x87, 0x01, 0x61, 0x87, 0xa8, 0x8e, 0x50, 0x99, 0x19, 0xa4, 0xa1, 0xba, + 0x5e, 0xa8, 0xe0, 0xb3, 0x0f, 0x28, 0xcc, 0xf9, 0x10, 0x76, 0x9a, 0x9b, + 0x25, 0x40, 0xef, 0x76, 0x7e, 0xdf, 0xf6, 0xff, 0xfb, 0x7f, 0xaf, 0xef, + 0xef, 0xa9, 0x5d, 0xfe, 0xea, 0xd6, 0xfa, 0xd5, 0xd6, 0xda, 0x99, 0x2d, + 0x5f, 0x67, 0xdd, 0x9e, 0xa5, 0xab, 0x52, 0x68, 0x73, 0xcf, 0x99, 0x1e, + 0xe4, 0x7a, 0xac, 0x29, 0x20, 0x38, 0xd8, 0x65, 0x49, 0xe2, 0xe9, 0x99, + 0x24, 0x03, 0x80, 0x2d, 0xd3, 0x33, 0x45, 0xea, 0x38, 0x6e, 0x60, 0x27, + 0xb0, 0xb8, 0x52, 0xf1, 0x50, 0xd0, 0xc0, 0x35, 0x30, 0xf6, 0x42, 0xf7, + 0x97, 0x10, 0x26, 0xc8, 0x23, 0x6e, 0x54, 0xd4, 0x62, 0xfa, 0x8e, 0xb0, + 0x06, 0x0a, 0x60, 0x51, 0x66, 0x7b, 0x89, 0x76, 0x66, 0x2d, 0xd9, 0x53, + 0x06, 0x8e, 0x90, 0xba, 0x26, 0x03, 0x18, 0x01, 0x86, 0x25, 0x50, 0xed, + 0xe7, 0x12, 0x12, 0x9f, 0x66, 0xff, 0xfb, 0xd4, 0x40, 0x69, 0x8d, 0x95, + 0xa9, 0x70, 0x3f, 0x93, 0xf4, 0x9b, 0x70, 0xb5, 0x6c, 0xe7, 0xa1, 0x7f, + 0x14, 0x6e, 0x56, 0x15, 0xa4, 0xf8, 0x0f, 0x6e, 0x8d, 0xc2, 0xc3, 0xb3, + 0x9e, 0xd9, 0xfa, 0x51, 0xb8, 0x1f, 0x70, 0x2d, 0x06, 0x0d, 0x48, 0x20, + 0x26, 0x0f, 0x88, 0x3e, 0x66, 0x05, 0x60, 0x1b, 0x46, 0x11, 0xe8, 0x1a, + 0x46, 0x2c, 0xd9, 0x24, 0x86, 0x03, 0xb0, 0x25, 0x06, 0x01, 0xb0, 0x05, + 0xa6, 0xd2, 0x0f, 0x65, 0x1b, 0x1a, 0x7b, 0x95, 0x79, 0x95, 0x40, 0xf3, + 0xf7, 0x25, 0xb5, 0x62, 0x12, 0x5a, 0x69, 0x55, 0x68, 0x63, 0x0d, 0x65, + 0x3f, 0x67, 0x59, 0xf6, 0x7e, 0xd6, 0x1a, 0xb1, 0xcc, 0xb5, 0xad, 0x7e, + 0xb7, 0xdf, 0xff, 0xff, 0xe7, 0xff, 0x2b, 0xad, 0x97, 0xfb, 0xf5, 0xf6, + 0x5f, 0xbb, 0xaf, 0x7f, 0x7e, 0xea, 0xb3, 0xbb, 0xf5, 0x6f, 0x52, 0xee, + 0x93, 0xa6, 0xce, 0xeb, 0x5a, 0x37, 0xaa, 0xab, 0x29, 0x4d, 0x5e, 0x9a, + 0xb5, 0x3b, 0x24, 0x97, 0x55, 0x4d, 0xa9, 0x2d, 0x34, 0x9d, 0x6a, 0x41, + 0x4f, 0x27, 0x08, 0x21, 0x14, 0x34, 0x17, 0x31, 0x90, 0xca, 0x81, 0x9d, + 0x86, 0x05, 0x88, 0x97, 0x8c, 0xae, 0x6d, 0x5a, 0xd0, 0x21, 0xe0, 0x38, + 0xa0, 0x1a, 0x54, 0x04, 0xd9, 0x78, 0x61, 0xba, 0x01, 0x91, 0x07, 0x33, + 0x23, 0x0c, 0x30, 0xb9, 0x3c, 0x60, 0x1d, 0x73, 0x31, 0xfe, 0x40, 0x36, + 0x13, 0x4a, 0xd3, 0x04, 0x10, 0x97, 0x31, 0x45, 0x1b, 0x33, 0x6e, 0x58, + 0x85, 0x30, 0x17, 0x00, 0x13, 0x09, 0xc1, 0x6c, 0x31, 0x5f, 0x31, 0x63, + 0x15, 0xc0, 0x2e, 0x33, 0x7d, 0x44, 0x33, 0xf4, 0xfb, 0x98, 0x3d, 0x4f, + 0x02, 0x23, 0x20, 0x20, 0x16, 0x3d, 0xf2, 0x33, 0x70, 0x2a, 0x0c, 0xcf, + 0x30, 0x92, 0x70, 0xa0, 0x82, 0x7b, 0xcd, 0xa3, 0xcd, 0x6e, 0x5b, 0x78, + 0xe2, 0x57, 0xf5, 0x67, 0x09, 0xfd, 0xe5, 0x77, 0x0e, 0x7d, 0xc9, 0xad, + 0x63, 0xff, 0xbc, 0x77, 0xbd, 0xe3, 0xcd, 0x6b, 0xff, 0xbf, 0xbf, 0xff, + 0xfd, 0x7f, 0xff, 0x6a, 0x1a, 0x57, 0xa9, 0x5d, 0x68, 0xe9, 0x3a, 0xac, + 0xb5, 0x76, 0xff, 0xb2, 0xf4, 0x6d, 0x5d, 0xff, 0xab, 0x76, 0x77, 0x5e, + 0xca, 0x7d, 0x1a, 0xea, 0x49, 0x55, 0x29, 0x2b, 0xd6, 0x8e, 0xeb, 0x3c, + 0xee, 0xb3, 0xe7, 0xe7, 0x02, 0x10, 0x20, 0x6c, 0x45, 0x07, 0xbc, 0x3c, + 0x8d, 0x63, 0x13, 0xc0, 0x0a, 0x18, 0x5b, 0x1d, 0x13, 0x23, 0xf9, 0x91, + 0x78, 0xd9, 0x30, 0xfc, 0x42, 0x8a, 0x8c, 0x49, 0x62, 0x0e, 0x66, 0x44, + 0x00, 0xde, 0x00, 0x05, 0x05, 0x22, 0xa2, 0x64, 0x8a, 0x85, 0x90, 0x30, + 0x3c, 0xc0, 0xd5, 0x33, 0x89, 0x02, 0x21, 0x30, 0xea, 0xd0, 0x3e, 0x31, + 0xb0, 0xc5, 0x51, 0x30, 0x48, 0x40, 0xdd, 0x30, 0xaa, 0x88, 0xd4, 0x32, + 0x87, 0x0c, 0xf0, 0x30, 0x2c, 0x80, 0x3d, 0x30, 0x09, 0xc0, 0xcd, 0x30, + 0x52, 0x00, 0xd3, 0x30, 0x2a, 0xc0, 0x0c, 0x30, 0x7e, 0x02, 0x54, 0x31, + 0xeb, 0x04, 0xec, 0x31, 0x59, 0x80, 0x30, 0x30, 0x2d, 0xc0, 0x11, 0x01, + 0x52, 0x00, 0x67, 0x41, 0x81, 0x66, 0x01, 0x62, 0x01, 0x97, 0xc8, 0x60, + 0xb5, 0x0e, 0x42, 0xcc, 0x0b, 0x44, 0x61, 0x1a, 0x3d, 0x39, 0x3e, 0x5f, + 0x31, 0x3a, 0x7d, 0x33, 0x32, 0xbc, 0xc8, 0xd9, 0x33, 0xaa, 0x4e, 0xb5, + 0xad, 0x16, 0x49, 0x5b, 0x7f, 0xfe, 0xdf, 0xfa, 0x15, 0x6e, 0xae, 0xd5, + 0xb6, 0xa5, 0x29, 0xd0, 0x5d, 0x9a, 0xd7, 0xd6, 0xfa, 0x6c, 0xbd, 0x1e, + 0x9b, 0x5b, 0x55, 0x7d, 0x4e, 0xcf, 0x56, 0xf5, 0xef, 0x45, 0x7b, 0xba, + 0xbe, 0xd5, 0xdd, 0xe8, 0x6c, 0x79, 0x08, 0xba, 0x01, 0x40, 0x23, 0xcb, + 0x8e, 0x93, 0x02, 0x06, 0x06, 0x59, 0x78, 0x22, 0x16, 0x4e, 0x3a, 0xcb, + 0x8b, 0xad, 0x96, 0x60, 0x08, 0x43, 0x03, 0xce, 0x0d, 0x92, 0xd9, 0x04, + 0x32, 0x58, 0x0d, 0x0b, 0x18, 0x2b, 0x4c, 0x41, 0x4d, 0x45, 0x55, 0x55, + 0x55, 0xe0, 0x0c, 0x00, 0xa0, 0x01, 0x4c, 0xae, 0x51, 0xf6, 0x8c, 0x6d, + 0x81, 0x56, 0x0d, 0x1b, 0x50, 0x7d, 0x4c, 0x11, 0x30, 0x85, 0x8c, 0x18, + 0x72, 0x91, 0xcd, 0x2b, 0x72, 0x22, 0x0c, 0x1b, 0xf0, 0x22, 0xcc, 0x06, + 0xf0, 0x40, 0xcc, 0x75, 0xc0, 0xda, 0x4c, 0x0d, 0xb0, 0x25, 0x4c, 0x2b, + 0xc0, 0x8c, 0x4d, 0x88, 0xa8, 0x0c, 0x8c, 0x1b, 0xe0, 0xb5, 0x0c, 0x10, + 0xf0, 0x38, 0x4e, 0x11, 0xb0, 0xd1, 0x53, 0x4c, 0x44, 0xe8, 0xc0, 0x85, + 0x0c, 0x0c, 0x05, 0x0a, 0x09, 0x40, 0x53, 0xd2, 0x57, 0x4f, 0x5d, 0xf8, + 0x59, 0xb4, 0x9a, 0xac, 0xb2, 0x6b, 0x52, 0xf2, 0x52, 0xfd, 0xd1, 0x77, + 0x28, 0x94, 0xb7, 0x5c, 0xcb, 0x53, 0xfd, 0xdf, 0x2b, 0x7f, 0xf7, 0xf5, + 0xdf, 0xff, 0xd7, 0xff, 0xdb, 0xb7, 0x52, 0xba, 0x99, 0x95, 0x43, 0x56, + 0xba, 0xd7, 0x7d, 0x94, 0xc9, 0xb6, 0x9a, 0xa8, 0xba, 0xba, 0xfa, 0x49, + 0xd1, 0x53, 0xb6, 0xca, 0xb2, 0x2a, 0xd9, 0xd1, 0x52, 0x74, 0xea, 0x42, + 0xe8, 0xa1, 0xa6, 0x8a, 0x55, 0x3a, 0xda, 0xa5, 0xa3, 0xb1, 0xb6, 0xb3, + 0x05, 0xbd, 0x44, 0x14, 0x9e, 0x72, 0xc0, 0x40, 0x2c, 0x0d, 0x42, 0x33, + 0x51, 0xda, 0x43, 0xcb, 0xa3, 0xd8, 0x37, 0x44, 0x45, 0x9c, 0xa0, 0x64, + 0x54, 0x4a, 0x62, 0x4d, 0x98, 0x39, 0x00, 0x17, 0x45, 0xe2, 0x22, 0x47, + 0x11, 0xe1, 0x10, 0x00, 0x68, 0xcd, 0x0c, 0xd2, 0x6e, 0xc4, 0x89, 0xf6, + 0x72, 0x67, 0x00, 0x30, 0x07, 0x80, 0x61, 0x34, 0x05, 0x4b, 0xde, 0x32, + 0x80, 0x87, 0x8c, 0x36, 0x7e, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0d, 0xd6, + 0x66, 0x6b, 0x3d, 0x8b, 0xfb, 0xa3, 0x70, 0xcd, 0xec, 0xe7, 0x81, 0x7f, + 0x34, 0x6e, 0x55, 0x5d, 0xa2, 0xf6, 0x0f, 0xee, 0x6d, 0xc2, 0xac, 0x34, + 0x5e, 0xc5, 0xfd, 0x4d, 0xb8, 0x41, 0x91, 0x30, 0xb1, 0xc1, 0xdb, 0x30, + 0xb5, 0x1b, 0x78, 0x39, 0x86, 0x92, 0x15, 0x31, 0x4a, 0x02, 0xb0, 0x30, + 0x58, 0x40, 0x87, 0x31, 0x9f, 0xc1, 0x64, 0x30, 0x48, 0x00, 0xc2, 0x30, + 0x9e, 0x42, 0x42, 0x33, 0x75, 0x55, 0xd9, 0x30, 0xb7, 0x01, 0x29, 0x30, + 0x0f, 0xc0, 0x2e, 0x33, 0x85, 0x10, 0x24, 0x57, 0xd2, 0xec, 0xae, 0xa1, + 0x82, 0x82, 0x2f, 0x39, 0x7d, 0x33, 0xcf, 0x2e, 0x66, 0xf1, 0x8d, 0xcd, + 0x3c, 0x5c, 0xa5, 0x9d, 0x9e, 0x8a, 0xff, 0xcd, 0xd3, 0x44, 0x30, 0xab, + 0xac, 0x79, 0xdd, 0xe3, 0xfa, 0xfe, 0xe5, 0xff, 0x8e, 0xb5, 0xbf, 0xfe, + 0xbd, 0x55, 0x29, 0xf5, 0x7a, 0x9a, 0x82, 0x90, 0x46, 0xa4, 0xec, 0xb5, + 0xfd, 0xb3, 0x34, 0x54, 0x91, 0xb9, 0x83, 0xa6, 0x92, 0x5b, 0x3b, 0x2a, + 0xb4, 0x54, 0x8a, 0x35, 0x35, 0xd9, 0x99, 0x9d, 0x6e, 0x8a, 0x4b, 0x49, + 0x34, 0x12, 0x5b, 0x29, 0xd6, 0x92, 0x4b, 0xa5, 0xd4, 0xd5, 0x74, 0x13, + 0x46, 0x89, 0xea, 0xcb, 0x28, 0xad, 0x52, 0xba, 0x05, 0xc3, 0xa1, 0x9c, + 0x00, 0x91, 0xc2, 0x8e, 0x44, 0x87, 0xc1, 0x90, 0xc6, 0x01, 0x19, 0x00, + 0x89, 0x91, 0xa9, 0xba, 0x64, 0x1c, 0xea, 0x24, 0x71, 0x14, 0x44, 0x8a, + 0x00, 0xb8, 0xb0, 0x0c, 0x32, 0x64, 0x5f, 0x21, 0xe4, 0xa0, 0x97, 0x80, + 0x60, 0x31, 0xd7, 0x21, 0x80, 0x08, 0x0e, 0xa9, 0x92, 0x7c, 0x54, 0x09, + 0x91, 0x82, 0x34, 0xa9, 0xa0, 0x42, 0x18, 0x61, 0x84, 0x0e, 0x08, 0xd1, + 0x85, 0x3c, 0x3f, 0x39, 0xaf, 0x48, 0x33, 0xf1, 0x85, 0x54, 0x06, 0x89, + 0x80, 0x2c, 0x09, 0x19, 0x94, 0x76, 0x03, 0x30, 0x40, 0x4f, 0x66, 0x0f, + 0x40, 0x74, 0x06, 0xa7, 0x7a, 0x7d, 0xa6, 0x43, 0xc0, 0x17, 0x46, 0x0a, + 0x88, 0x07, 0x67, 0x14, 0x58, 0x69, 0xa4, 0x66, 0x6c, 0x14, 0x60, 0x80, + 0x83, 0xa0, 0x2c, 0x81, 0xbb, 0xab, 0x0e, 0xae, 0xe1, 0x12, 0x90, 0x4e, + 0xde, 0xd6, 0x56, 0xf7, 0x95, 0x4b, 0x3c, 0xb7, 0x86, 0x19, 0x6f, 0x3f, + 0xc3, 0xff, 0xbc, 0xee, 0xb2, 0xd7, 0xeb, 0x9f, 0xff, 0x8e, 0xff, 0xfd, + 0xbe, 0xfe, 0xde, 0xd5, 0x6a, 0xdd, 0x7d, 0x7f, 0xdd, 0xfa, 0x92, 0x55, + 0x75, 0xd4, 0x8d, 0xd5, 0xd0, 0x7f, 0x5e, 0xad, 0x77, 0xb5, 0x4b, 0x6a, + 0x6f, 0xf4, 0x7f, 0xea, 0xe9, 0x6b, 0x97, 0x93, 0x51, 0xb8, 0xc6, 0x01, + 0xd8, 0x04, 0xa9, 0x6d, 0x66, 0x68, 0x0a, 0xd8, 0x54, 0x52, 0x32, 0x41, + 0x37, 0x59, 0x92, 0x6d, 0x17, 0xc0, 0x34, 0x33, 0x13, 0x53, 0x16, 0x1f, + 0x20, 0x04, 0x21, 0x02, 0xba, 0x65, 0x26, 0x18, 0x0d, 0x81, 0x01, 0x99, + 0x22, 0x45, 0x32, 0x99, 0x10, 0x23, 0x63, 0x9a, 0x0f, 0xa1, 0xc2, 0x18, + 0x05, 0x00, 0x94, 0x98, 0xa2, 0xe5, 0x01, 0x1d, 0xce, 0xe7, 0x93, 0x98, + 0xa8, 0xe0, 0xb7, 0x18, 0x27, 0x40, 0x38, 0x18, 0xc5, 0x00, 0x80, 0x18, + 0x1d, 0x80, 0x39, 0x98, 0x4b, 0x22, 0x45, 0x98, 0xba, 0xe2, 0x65, 0x98, + 0xb5, 0xa0, 0xdd, 0x98, 0x16, 0xc0, 0x47, 0x1c, 0x78, 0x66, 0xa1, 0xb0, + 0x09, 0x18, 0x28, 0x79, 0x7c, 0x14, 0xbd, 0x25, 0x1e, 0x2a, 0x3a, 0x96, + 0x60, 0x9a, 0x69, 0xdb, 0x33, 0xb9, 0xf7, 0x75, 0xbb, 0xac, 0x29, 0xf0, + 0xbb, 0x8e, 0xf3, 0xcb, 0x78, 0xff, 0x75, 0xdd, 0x65, 0xaf, 0xc3, 0x9f, + 0xff, 0x9e, 0xff, 0xfd, 0xbb, 0xf5, 0x7e, 0xbd, 0x5b, 0x6e, 0xbf, 0xea, + 0xae, 0xee, 0xfa, 0x92, 0xd3, 0xad, 0x6a, 0x6b, 0xab, 0x76, 0xfa, 0xf5, + 0x55, 0xbd, 0xaa, 0x5e, 0x9b, 0xff, 0x7d, 0x6f, 0xea, 0xb5, 0x04, 0xb4, + 0x4f, 0x65, 0x60, 0x1b, 0x78, 0xe2, 0x41, 0x34, 0x18, 0x50, 0x43, 0x89, + 0x33, 0x14, 0x8e, 0x56, 0x62, 0x91, 0xf7, 0x0c, 0x74, 0x32, 0x11, 0x58, + 0xf9, 0x79, 0x22, 0x50, 0x0d, 0x47, 0x13, 0x3a, 0x45, 0xf5, 0xa4, 0x00, + 0x03, 0x06, 0x2c, 0x4d, 0xe3, 0x3c, 0x27, 0x01, 0x43, 0x27, 0x49, 0xc2, + 0x33, 0x4c, 0x64, 0xec, 0xc3, 0x02, 0xfc, 0x0f, 0x13, 0x09, 0x2e, 0x7e, + 0x33, 0x92, 0x36, 0xd8, 0x03, 0x16, 0x4c, 0x69, 0x93, 0x0b, 0xd0, 0x52, + 0xe3, 0x32, 0x18, 0x3d, 0xa3, 0x06, 0x3c, 0x1c, 0x43, 0x10, 0xb0, 0xb6, + 0xd3, 0xbd, 0xf8, 0x51, 0xe3, 0x4e, 0x3c, 0x63, 0x93, 0x0a, 0xc8, 0x24, + 0x23, 0xa5, 0xcf, 0xcd, 0xb4, 0xf2, 0x34, 0x6b, 0x34, 0xca, 0x63, 0xf3, + 0x22, 0x08, 0x8c, 0x2a, 0x03, 0x11, 0x05, 0x80, 0xc2, 0xd6, 0xa6, 0xd8, + 0x5b, 0x55, 0x14, 0x48, 0x82, 0x80, 0x34, 0x10, 0x87, 0xa2, 0xa0, 0xc4, + 0xe2, 0x50, 0x24, 0x27, 0xa4, 0x62, 0x29, 0x4d, 0x26, 0xa2, 0x8a, 0x29, + 0x6a, 0xec, 0x87, 0x9f, 0x7c, 0xa1, 0xf7, 0x01, 0xb5, 0x8d, 0xbf, 0xf3, + 0x90, 0xe4, 0xaa, 0x31, 0x1b, 0xc6, 0x5b, 0x6a, 0x6f, 0x94, 0xd4, 0xb5, + 0x2c, 0xdd, 0xef, 0xf7, 0x55, 0x29, 0x6a, 0xdb, 0x9b, 0xab, 0x45, 0x8d, + 0x0d, 0x14, 0x4a, 0x7a, 0x9a, 0x7a, 0xf6, 0x33, 0x7b, 0x9d, 0xbd, 0x7b, + 0x9f, 0xd8, 0xad, 0xec, 0x28, 0xe8, 0x25, 0xd5, 0x66, 0x6c, 0x58, 0x8c, + 0xd3, 0x4e, 0x6b, 0x0d, 0xd9, 0x9b, 0x9c, 0xa2, 0xdc, 0x56, 0xf5, 0x99, + 0x74, 0x8a, 0x9e, 0xfd, 0xfc, 0x2f, 0x54, 0xab, 0xba, 0x58, 0xa4, 0xdd, + 0xb9, 0x56, 0x73, 0xb4, 0x72, 0xff, 0xfb, 0xd4, 0x60, 0x63, 0x8d, 0x98, + 0xaa, 0x68, 0x39, 0x13, 0xfc, 0xd3, 0x70, 0xb8, 0x0d, 0x07, 0x65, 0x7f, + 0x74, 0x6e, 0x1a, 0x99, 0x9e, 0xee, 0x0f, 0xee, 0x8d, 0xc2, 0x4a, 0x33, + 0x9d, 0x81, 0xfa, 0x51, 0xb9, 0x3a, 0x5a, 0x69, 0xc9, 0xe8, 0xd5, 0x3d, + 0x98, 0x9d, 0xd9, 0x4d, 0xfe, 0x5e, 0x94, 0xca, 0x25, 0x15, 0x37, 0x1f, + 0xdd, 0x26, 0x38, 0xfd, 0xba, 0x4b, 0xf6, 0x2a, 0xf6, 0xb5, 0x9d, 0xd3, + 0xf2, 0xed, 0x78, 0x7d, 0xbb, 0xf2, 0x7e, 0x60, 0x42, 0x3c, 0xf8, 0xcd, + 0x0c, 0x19, 0x2c, 0x79, 0x67, 0xd8, 0x89, 0x60, 0xca, 0xa1, 0xa4, 0x82, + 0xb0, 0x97, 0xd4, 0xc6, 0x51, 0x05, 0xcc, 0x46, 0xd6, 0x01, 0x27, 0x9c, + 0x98, 0x79, 0xb3, 0x71, 0x4c, 0x8c, 0x14, 0xf2, 0x66, 0x54, 0x97, 0x80, + 0x0b, 0x00, 0x60, 0x01, 0x00, 0xce, 0x60, 0x01, 0x01, 0x80, 0x60, 0x31, + 0x82, 0x86, 0x60, 0x6a, 0x04, 0x80, 0x60, 0xd9, 0x8a, 0x1e, 0x62, 0xc3, + 0x3d, 0x3c, 0x71, 0x5c, 0x58, 0x52, 0x62, 0x0e, 0x0b, 0x04, 0x60, 0x93, + 0x85, 0x38, 0x68, 0xc5, 0x0e, 0xa8, 0x61, 0xc6, 0x04, 0x20, 0x63, 0x33, + 0x89, 0x5a, 0x67, 0x7b, 0x9e, 0x2e, 0x62, 0x58, 0x0a, 0x36, 0x60, 0x5f, + 0x03, 0x4c, 0x6e, 0xf9, 0xe6, 0xc4, 0xac, 0x67, 0x63, 0x26, 0x46, 0x4a, + 0x02, 0x4c, 0x16, 0x27, 0x2f, 0x48, 0x60, 0x35, 0xdb, 0xb4, 0xcb, 0xcd, + 0x71, 0x59, 0xdf, 0x5e, 0x1b, 0x9d, 0xcf, 0x4f, 0xce, 0x5b, 0xdd, 0xc9, + 0xfe, 0x7f, 0xd6, 0xbb, 0xcf, 0xee, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xdf, + 0xff, 0xd7, 0xff, 0xef, 0xf5, 0xff, 0xa9, 0xfa, 0xff, 0xff, 0xfd, 0x5f, + 0xd5, 0xeb, 0xec, 0xda, 0xaf, 0xa9, 0x5d, 0x1f, 0x43, 0xd7, 0xd2, 0x45, + 0x5a, 0x07, 0xea, 0x44, 0x8c, 0x3e, 0x81, 0x64, 0x1a, 0x86, 0x05, 0xb3, + 0x88, 0x58, 0x89, 0x0d, 0x92, 0x90, 0xcb, 0x80, 0x0c, 0xd1, 0x04, 0xcc, + 0x09, 0x52, 0xf9, 0x38, 0x6f, 0x26, 0x4a, 0x46, 0x2b, 0x04, 0x88, 0x01, + 0x8e, 0x3c, 0x66, 0x5c, 0x1b, 0x26, 0x41, 0x6a, 0x40, 0xda, 0x47, 0x02, + 0xc2, 0x4d, 0x8c, 0x4c, 0x14, 0x60, 0xb5, 0xcc, 0x07, 0x25, 0x85, 0x4c, + 0xd1, 0x85, 0x93, 0xcd, 0x74, 0xc1, 0x95, 0x8c, 0x12, 0x00, 0x6c, 0xcc, + 0x62, 0x80, 0x15, 0x4f, 0x88, 0x22, 0x17, 0x8c, 0x7a, 0xa0, 0x0b, 0x0c, + 0x2d, 0x50, 0x6d, 0x4c, 0x20, 0x50, 0x5c, 0x4c, 0x0e, 0xa0, 0x2c, 0x4c, + 0x00, 0x82, 0x45, 0x8c, 0xe3, 0x63, 0xce, 0x0c, 0x51, 0x91, 0x2e, 0x8c, + 0x0a, 0x00, 0x68, 0xcc, 0xaf, 0x28, 0x55, 0x74, 0xc6, 0x11, 0x01, 0xc7, + 0x84, 0xc8, 0xc1, 0xc2, 0xa9, 0xac, 0xf3, 0x4d, 0xd0, 0x3f, 0xad, 0xb6, + 0x4e, 0x93, 0xbd, 0x49, 0x20, 0x96, 0x5a, 0x9a, 0xc3, 0x39, 0x99, 0x55, + 0xaa, 0xb5, 0x2b, 0x65, 0x62, 0xde, 0x19, 0xe7, 0x6e, 0xaf, 0x3f, 0x2b, + 0x98, 0x7f, 0x37, 0x87, 0x39, 0xfe, 0xf4, 0xf5, 0xa4, 0xdb, 0x29, 0x25, + 0x33, 0xa0, 0xf4, 0x90, 0x30, 0x49, 0x6e, 0xc7, 0x11, 0x49, 0x34, 0x8c, + 0x19, 0xd9, 0x72, 0xf1, 0x71, 0x05, 0x32, 0x37, 0x31, 0x3c, 0x79, 0x14, + 0xef, 0xbb, 0xad, 0x14, 0x51, 0x73, 0x03, 0xc9, 0x27, 0x65, 0x20, 0x8c, + 0xdd, 0x49, 0xb2, 0xd2, 0x55, 0xd3, 0x6b, 0x2d, 0x15, 0x1e, 0x4d, 0xe6, + 0xc7, 0x59, 0x66, 0x46, 0xec, 0x8a, 0x46, 0xe8, 0xb2, 0x08, 0x9e, 0x41, + 0x34, 0x98, 0xde, 0xe6, 0x01, 0xa2, 0x81, 0xa6, 0x40, 0x32, 0xa6, 0xa4, + 0x18, 0xba, 0xa1, 0xc2, 0x5b, 0x64, 0xcc, 0x99, 0x75, 0x9c, 0x65, 0x17, + 0x84, 0x35, 0x32, 0xf8, 0xa5, 0xdc, 0x9b, 0x03, 0x17, 0x10, 0x66, 0x91, + 0x30, 0x14, 0x00, 0x45, 0x30, 0x1f, 0xc0, 0x36, 0x30, 0x30, 0x00, 0x47, + 0x30, 0x4f, 0xc0, 0x7e, 0x30, 0x9c, 0x81, 0x73, 0x31, 0xd2, 0x51, 0x4e, + 0x3f, 0x1f, 0x4e, 0x96, 0x1e, 0x40, 0xac, 0xc0, 0x13, 0x0b, 0x2c, 0xc9, + 0x7d, 0x2c, 0x4c, 0xc0, 0xd3, 0x06, 0x8c, 0xc0, 0xe2, 0x03, 0xb0, 0xdb, + 0xc0, 0x0b, 0x54, 0xc6, 0x0f, 0x04, 0xb0, 0xc0, 0xda, 0x01, 0x7c, 0x0e, + 0x79, 0x80, 0x06, 0x6a, 0x00, 0x02, 0x45, 0xd8, 0x7c, 0x42, 0xc2, 0x33, + 0xe4, 0x51, 0x14, 0x8d, 0x07, 0xc9, 0x24, 0xa3, 0xae, 0x6a, 0xf5, 0xcb, + 0xda, 0xbe, 0xef, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0xff, + 0xbf, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xf5, 0x3f, 0x7f, 0x53, 0xea, 0x74, + 0x13, 0x30, 0x21, 0xe3, 0x64, 0x91, 0x2a, 0x0b, 0x28, 0xd4, 0x9e, 0x02, + 0x4f, 0x01, 0x84, 0xca, 0x86, 0x66, 0xe5, 0xc5, 0xd6, 0x64, 0xb2, 0x60, + 0x4c, 0x80, 0xe5, 0x0d, 0x1d, 0xa7, 0x05, 0xb8, 0xc4, 0x75, 0x03, 0x65, + 0x0a, 0xb0, 0x05, 0x30, 0x03, 0x03, 0xc6, 0x34, 0x93, 0x1f, 0xbe, 0x35, + 0xe0, 0x43, 0x8b, 0x3b, 0xd0, 0x00, 0xe7, 0x31, 0x30, 0x03, 0x83, 0x30, + 0xc0, 0xe8, 0x98, 0x32, 0xe6, 0x72, 0x8d, 0x30, 0x53, 0x46, 0xb0, 0x30, + 0x39, 0xc5, 0x1d, 0x30, 0x80, 0xc7, 0x5b, 0x30, 0x1c, 0x41, 0xdc, 0x31, + 0x06, 0x44, 0x15, 0x3e, 0x7c, 0xe1, 0xa4, 0x34, 0x15, 0x02, 0xdf, 0x30, + 0xba, 0x40, 0xfe, 0x3a, 0x81, 0xac, 0xd8, 0x64, 0xa0, 0x28, 0x98, 0x08, + 0x2c, 0x0a, 0x06, 0x41, 0xa0, 0x24, 0x06, 0x86, 0x05, 0x61, 0x50, 0xcb, + 0x63, 0x0b, 0x00, 0xda, 0xf1, 0x7c, 0x61, 0xa8, 0xc2, 0x95, 0x48, 0xdd, + 0xe7, 0x0e, 0xf4, 0xed, 0x6a, 0x58, 0xeb, 0x92, 0xfa, 0xc1, 0x30, 0x24, + 0xa2, 0xb4, 0x05, 0x23, 0xbb, 0xff, 0xfb, 0xd4, 0x60, 0x37, 0x0f, 0x17, + 0xf9, 0x68, 0x39, 0x83, 0xfc, 0xcb, 0x70, 0x60, 0xac, 0x88, 0x5d, 0x75, + 0xa7, 0x6e, 0x19, 0x4d, 0x9c, 0xf0, 0x0f, 0xe9, 0xed, 0xc9, 0x9a, 0x33, + 0x9f, 0xe5, 0xe8, 0xa9, 0xb8, 0x85, 0xbb, 0x14, 0xd4, 0x94, 0x99, 0x67, + 0xbe, 0xe1, 0x4d, 0x67, 0x7f, 0xfa, 0xb9, 0xf8, 0xe3, 0xf6, 0x3b, 0x9f, + 0x72, 0xb1, 0xa9, 0x7f, 0x35, 0xac, 0xa9, 0xf0, 0xe5, 0x8c, 0x66, 0x2d, + 0x58, 0xce, 0xcd, 0x9c, 0x6d, 0xf2, 0x59, 0x8d, 0x1d, 0xe9, 0x45, 0x79, + 0xbe, 0x5f, 0x9d, 0xa4, 0xbb, 0x62, 0xfd, 0xf9, 0x65, 0x0c, 0x8b, 0x3a, + 0x7a, 0x6b, 0x72, 0xb9, 0xcc, 0x29, 0x24, 0x73, 0x1a, 0xc7, 0x5d, 0x9c, + 0xfb, 0xbd, 0xc6, 0x45, 0x73, 0x29, 0x44, 0xb7, 0x1a, 0xb3, 0xdb, 0x8d, + 0x61, 0x31, 0x76, 0x6e, 0x7e, 0xbf, 0xf6, 0xbe, 0x76, 0xaf, 0xd7, 0xdd, + 0x34, 0xed, 0xa9, 0xda, 0xb5, 0x64, 0x99, 0xcd, 0x4d, 0xdd, 0x95, 0x56, + 0xfa, 0x5d, 0xc4, 0x71, 0xc3, 0x27, 0x30, 0x40, 0x3a, 0xc6, 0x9f, 0x11, + 0x07, 0x36, 0xf2, 0x0c, 0x89, 0x27, 0xb3, 0x8d, 0x34, 0xcd, 0x8b, 0x13, + 0x52, 0xeb, 0x15, 0x99, 0x9a, 0x75, 0xbf, 0xb5, 0x43, 0x00, 0x97, 0x23, + 0x69, 0xa5, 0x18, 0xb1, 0x35, 0xad, 0x80, 0x00, 0x40, 0x6b, 0xff, 0xc0, + 0x00, 0x00, 0x67, 0x4b, 0xe5, 0x17, 0x08, 0x41, 0x31, 0x10, 0x9c, 0x60, + 0x8b, 0x36, 0x67, 0x24, 0x1c, 0x60, 0x20, 0xba, 0x62, 0x70, 0xb8, 0x61, + 0x8b, 0x70, 0x60, 0xd8, 0x66, 0x63, 0x60, 0x60, 0x7d, 0xdd, 0x6c, 0x64, + 0xa0, 0x50, 0x5a, 0x30, 0x9e, 0x09, 0x79, 0x30, 0x02, 0x80, 0x14, 0xb2, + 0xc3, 0x72, 0xe3, 0x47, 0xb9, 0x26, 0x6a, 0xe8, 0x98, 0x18, 0x1e, 0x9d, + 0x7b, 0xd4, 0x82, 0x0f, 0x7a, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x0c, 0xf8, + 0x0a, 0x2f, 0xff, 0x89, 0xc6, 0x78, 0x60, 0xc0, 0xb6, 0x06, 0x18, 0xcb, + 0x15, 0x2f, 0x04, 0xca, 0x46, 0x3f, 0x48, 0xcf, 0x4c, 0x17, 0x94, 0xc2, + 0x8c, 0x07, 0x00, 0xc6, 0xbd, 0x26, 0x4c, 0xf8, 0x55, 0x21, 0x10, 0xc7, + 0xd7, 0x07, 0xa4, 0xc3, 0x2c, 0x0c, 0x60, 0xc6, 0xdd, 0x18, 0x88, 0xc0, + 0x33, 0x05, 0xcc, 0xc0, 0x78, 0x0a, 0x8c, 0xdc, 0x08, 0x85, 0xc4, 0xc4, + 0x41, 0x09, 0x0c, 0xc0, 0x9e, 0x02, 0xf0, 0xdf, 0xd1, 0x34, 0x0b, 0x8c, + 0x28, 0xd3, 0x16, 0x14, 0x38, 0x02, 0x97, 0xa4, 0x62, 0x96, 0x4e, 0xcf, + 0x4e, 0xf2, 0x1a, 0xa4, 0x9e, 0xa9, 0x24, 0x94, 0x72, 0xe5, 0x49, 0x8f, + 0xa9, 0x97, 0xdf, 0xaf, 0x86, 0x15, 0x6e, 0xd8, 0xed, 0x4e, 0xe5, 0xda, + 0xb9, 0x77, 0x5f, 0xbe, 0xfe, 0xfb, 0xdd, 0xdf, 0x54, 0xcd, 0xa9, 0x6d, + 0xe2, 0x9f, 0xeb, 0x36, 0xbd, 0xf5, 0x8a, 0xe6, 0x59, 0x35, 0x6d, 0x5a, + 0xfa, 0xd6, 0x66, 0xfe, 0xba, 0xff, 0xe6, 0xfa, 0x9b, 0x1b, 0xa5, 0x6f, + 0xef, 0x6d, 0xc6, 0x83, 0x5b, 0x63, 0x57, 0x8b, 0xfe, 0x69, 0xbb, 0xe3, + 0x57, 0xfb, 0xbd, 0xef, 0x7f, 0x8c, 0xfd, 0xd7, 0xd7, 0x11, 0x37, 0x16, + 0x5a, 0x45, 0xcd, 0x2d, 0xbf, 0x6c, 0x6e, 0xdf, 0xe7, 0x76, 0xc5, 0x71, + 0xba, 0x42, 0xd6, 0x73, 0x38, 0x9b, 0xab, 0x76, 0x6f, 0x3b, 0xaa, 0xed, + 0xc7, 0x1b, 0xb6, 0xf3, 0xe4, 0xd5, 0x31, 0x85, 0x74, 0x8c, 0x0b, 0xb7, + 0x8d, 0xe0, 0x2d, 0xa0, 0xd0, 0x80, 0x00, 0x25, 0x60, 0x2a, 0x24, 0x98, + 0x05, 0x00, 0xb9, 0x81, 0x20, 0x06, 0x18, 0x2d, 0x81, 0xa9, 0x89, 0x30, + 0xec, 0x1c, 0x35, 0x07, 0x49, 0x8a, 0xd0, 0x3c, 0x18, 0x7d, 0x83, 0xb9, + 0x9c, 0x51, 0xba, 0x98, 0x12, 0x03, 0xd1, 0x80, 0xd0, 0x75, 0x9a, 0xeb, + 0x38, 0x59, 0x87, 0x10, 0x55, 0x98, 0x0d, 0x81, 0x40, 0x02, 0x50, 0xc6, + 0xc3, 0xe4, 0x93, 0x1a, 0x25, 0xb3, 0x54, 0x74, 0x0c, 0xdf, 0x35, 0xb2, + 0xd6, 0xc9, 0x3e, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 0x81, 0x99, 0xa6, + 0x10, 0x32, 0x8d, 0x13, 0xf5, 0xe2, 0x48, 0xd3, 0x23, 0x78, 0x07, 0xaa, + 0x30, 0x81, 0xc4, 0x0c, 0x36, 0x47, 0x85, 0x1c, 0x31, 0x87, 0x11, 0x6c, + 0x33, 0x69, 0x4b, 0x17, 0x30, 0xca, 0xc5, 0xc4, 0x31, 0xd1, 0x29, 0x39, + 0x3e, 0xd4, 0xb5, 0x8c, 0x31, 0xb8, 0x86, 0xc3, 0x30, 0xce, 0xc4, 0xd4, + 0x35, 0x38, 0x87, 0x2f, 0x30, 0x03, 0x41, 0x0b, 0x30, 0xbd, 0x04, 0x3c, + 0x39, 0xa0, 0x7a, 0x08, 0x33, 0x3b, 0x44, 0xce, 0x30, 0xb4, 0x01, 0xad, + 0x3a, 0x4a, 0xf8, 0xd4, 0x42, 0xb3, 0x0c, 0x8a, 0xc4, 0x01, 0x73, 0x0d, + 0x87, 0x0c, 0x14, 0x0f, 0x0a, 0x84, 0x96, 0x15, 0xfb, 0x7b, 0x60, 0x56, + 0x36, 0xf3, 0x45, 0xdf, 0xbb, 0xec, 0xe6, 0x58, 0xfc, 0x4c, 0x32, 0x36, + 0xc3, 0x23, 0x9b, 0xd4, 0xc4, 0x33, 0x8c, 0x46, 0xf6, 0xe3, 0x15, 0x73, + 0xb5, 0x49, 0x1b, 0xb5, 0xaa, 0x6b, 0xbb, 0xab, 0x73, 0x78, 0xe5, 0xfb, + 0xcf, 0xb9, 0x67, 0x67, 0x59, 0xda, 0xdd, 0xed, 0xd6, 0xdd, 0x35, 0xca, + 0xf7, 0x32, 0xca, 0xf4, 0x8b, 0x75, 0x2c, 0xda, 0xab, 0x7b, 0x19, 0x4d, + 0xd9, 0xab, 0x52, 0xdb, 0x77, 0xef, 0xd2, 0xe5, 0x8d, 0xeb, 0x7d, 0xe5, + 0xab, 0x3c, 0xce, 0x39, 0x6e, 0x5f, 0xad, 0x63, 0x7f, 0xef, 0x53, 0xca, + 0xe4, 0x96, 0xea, 0xdc, 0xe4, 0xdb, 0xf7, 0x2d, 0xb3, 0xf4, 0xf5, 0xe1, + 0xed, 0x4b, 0x77, 0x8f, 0x2a, 0xff, 0xfb, 0xd4, 0x60, 0x5c, 0x8f, 0x97, + 0xd7, 0x67, 0x39, 0x83, 0xfc, 0xd3, 0x72, 0x69, 0x2c, 0xe8, 0x0a, 0x7a, + 0x6a, 0x6e, 0x1a, 0x79, 0x9c, 0xee, 0x0f, 0xee, 0x8d, 0xc1, 0xf0, 0xb3, + 0x9f, 0x65, 0xf8, 0x29, 0xb8, 0x67, 0xa9, 0xfb, 0xbd, 0xf9, 0x65, 0x7a, + 0x7a, 0x0b, 0xbb, 0xbb, 0x66, 0xd6, 0x13, 0x14, 0xd2, 0x2e, 0xe1, 0x56, + 0xd6, 0x58, 0xca, 0xac, 0x72, 0xac, 0xa2, 0xa5, 0xec, 0xe3, 0xf1, 0x8b, + 0x16, 0xc9, 0x41, 0x98, 0x36, 0x89, 0xf5, 0x08, 0x5c, 0x91, 0x47, 0x59, + 0xed, 0x84, 0xe7, 0xaa, 0x6a, 0xf8, 0xda, 0x87, 0xae, 0x54, 0xbd, 0x30, + 0xfb, 0xc4, 0xac, 0xd0, 0xcb, 0xd7, 0xc1, 0xc4, 0x8c, 0xfc, 0x30, 0x00, + 0x01, 0x13, 0x80, 0x00, 0x00, 0x05, 0xd5, 0x06, 0x80, 0x10, 0x00, 0x03, + 0xcc, 0x02, 0xc0, 0xb0, 0xc0, 0xb8, 0x21, 0xcc, 0x35, 0x4b, 0xe8, 0xd7, + 0x75, 0x4c, 0x4c, 0x23, 0xc1, 0xe8, 0xc1, 0x40, 0x3d, 0xcc, 0xc1, 0x47, + 0xe0, 0x58, 0x28, 0x4c, 0x38, 0x41, 0x10, 0xca, 0x2c, 0x42, 0x8c, 0x7a, + 0x40, 0x98, 0x14, 0x11, 0xa0, 0xa8, 0x82, 0xf2, 0x16, 0xf1, 0x5f, 0x19, + 0xc2, 0x9a, 0x29, 0x3d, 0x13, 0x27, 0xd1, 0x57, 0xa0, 0xf6, 0xbf, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xfa, 0x81, 0x33, 0x9a, 0x22, 0xdd, 0x82, 0x71, 0x6f, + 0xfc, 0xa8, 0x11, 0xdc, 0x5c, 0xce, 0x05, 0x47, 0x11, 0x85, 0xa0, 0x65, + 0xf3, 0x8d, 0xdc, 0x66, 0xac, 0x93, 0x64, 0x6a, 0xbb, 0x82, 0xe6, 0x61, + 0x9f, 0x83, 0x46, 0x63, 0x9b, 0x22, 0xb0, 0x7d, 0x76, 0x2d, 0x9e, 0x63, + 0xd0, 0x07, 0x48, 0x61, 0x56, 0x89, 0x5a, 0x63, 0xb8, 0x80, 0x10, 0x60, + 0x23, 0x84, 0xd4, 0x60, 0x64, 0x04, 0xfa, 0x67, 0xaf, 0x10, 0xd8, 0x65, + 0xbd, 0x01, 0x64, 0x61, 0x08, 0x80, 0x0e, 0x07, 0xe4, 0x03, 0x81, 0x9a, + 0xd1, 0x51, 0x87, 0x0f, 0x00, 0x43, 0xd3, 0x71, 0x85, 0x32, 0x89, 0x13, + 0xb9, 0x14, 0x78, 0xa1, 0xf8, 0x86, 0xbb, 0x4f, 0x0e, 0x53, 0xdd, 0xa7, + 0xa7, 0x9e, 0x9e, 0xed, 0x5b, 0xf8, 0xd1, 0xfd, 0x3d, 0xac, 0xa9, 0x71, + 0xca, 0x72, 0xbf, 0xf7, 0x1e, 0x77, 0x5d, 0xb5, 0xcc, 0x3e, 0xab, 0xba, + 0xaa, 0x6a, 0x2a, 0x4d, 0x24, 0x93, 0x5d, 0x6d, 0x41, 0x1b, 0x29, 0x06, + 0x35, 0x3c, 0xb4, 0xda, 0xa4, 0x8f, 0xa9, 0x25, 0xad, 0x6b, 0xe7, 0x0e, + 0x2d, 0x35, 0x20, 0xa7, 0x64, 0x51, 0x41, 0x54, 0x5c, 0xe9, 0xd5, 0xb2, + 0x08, 0x19, 0x9d, 0xa6, 0xe8, 0x20, 0x6a, 0x91, 0x8d, 0x2b, 0x25, 0x41, + 0x33, 0x89, 0xa4, 0xa7, 0xba, 0x28, 0x31, 0x68, 0xcd, 0x6a, 0x5b, 0x9b, + 0xa7, 0x51, 0xf6, 0x32, 0x45, 0x23, 0x56, 0x48, 0x9c, 0x03, 0x40, 0x74, + 0xb4, 0x62, 0x27, 0x33, 0xc9, 0x8a, 0xdc, 0xea, 0x96, 0x68, 0x6a, 0xec, + 0x8b, 0xba, 0x25, 0x01, 0xca, 0x26, 0x0c, 0xc4, 0xa4, 0x74, 0x6a, 0x00, + 0xc3, 0xb0, 0xec, 0x24, 0x25, 0xb8, 0x0b, 0x48, 0x60, 0x03, 0x80, 0x16, + 0x60, 0x10, 0x00, 0x54, 0x60, 0x25, 0x80, 0xba, 0x60, 0x51, 0x01, 0xe0, + 0x60, 0xfd, 0x8e, 0xa2, 0x69, 0x19, 0x8a, 0x8c, 0x61, 0x35, 0x82, 0x5e, + 0x60, 0x71, 0x04, 0x24, 0x61, 0xc7, 0x86, 0x96, 0x60, 0x47, 0x81, 0x56, + 0x60, 0x5f, 0x01, 0xfa, 0x60, 0xc4, 0x10, 0x6c, 0x60, 0x94, 0x00, 0xe0, + 0x60, 0x0a, 0x80, 0x12, 0x1e, 0xa0, 0x99, 0x82, 0x80, 0xa5, 0x04, 0xee, + 0x39, 0x85, 0x32, 0x08, 0x8a, 0x69, 0x96, 0x12, 0x4d, 0x4c, 0x6c, 0x68, + 0x9d, 0x66, 0x6b, 0x75, 0x22, 0xaf, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xee, 0xd9, + 0x08, 0x0a, 0x9c, 0x68, 0x16, 0x13, 0x1a, 0x06, 0xc5, 0x1f, 0xf8, 0xa8, + 0x0b, 0x52, 0x80, 0x32, 0xa2, 0xe1, 0x04, 0x48, 0x98, 0x82, 0x9a, 0x8b, + 0x55, 0x30, 0x24, 0x41, 0x70, 0x32, 0xa5, 0x8d, 0xcb, 0x32, 0x8d, 0x04, + 0x65, 0x35, 0x72, 0x44, 0xc6, 0x30, 0x30, 0x43, 0x45, 0x31, 0x8b, 0xd8, + 0x04, 0x3e, 0xa2, 0x5a, 0xd3, 0x31, 0xfb, 0xc3, 0x38, 0x30, 0x85, 0x80, + 0x4b, 0x30, 0xae, 0xc2, 0xad, 0x30, 0x56, 0x01, 0x93, 0x30, 0xf7, 0xc0, + 0x93, 0x33, 0xfb, 0xe0, 0xa7, 0x30, 0x4b, 0x02, 0xe5, 0x30, 0x14, 0x00, + 0xd8, 0x32, 0x75, 0xc1, 0x8f, 0x8d, 0x99, 0x71, 0x21, 0xe3, 0xc4, 0x11, + 0x8d, 0xec, 0x4c, 0x17, 0x51, 0xa7, 0xca, 0x27, 0x20, 0x17, 0x5f, 0x75, + 0xe5, 0xf8, 0x51, 0x61, 0x6a, 0x59, 0xd8, 0x77, 0x0e, 0x4e, 0xee, 0xf7, + 0x29, 0x79, 0xba, 0xf8, 0x67, 0xbd, 0x56, 0xfb, 0x39, 0x61, 0xdd, 0xf3, + 0x9f, 0x9e, 0x38, 0xf7, 0x0e, 0x65, 0xcc, 0x7b, 0x86, 0x7c, 0xa9, 0x8f, + 0x6a, 0x7d, 0x6c, 0xbf, 0xf7, 0xba, 0xf5, 0xb1, 0xee, 0x3d, 0xab, 0xdc, + 0x6b, 0xd8, 0xcb, 0xf7, 0x87, 0x2c, 0xdb, 0xb5, 0xcf, 0xb7, 0x6a, 0xf5, + 0xbc, 0xac, 0xd3, 0x73, 0x2b, 0xb3, 0x14, 0x7d, 0xde, 0x54, 0xf7, 0x77, + 0xbb, 0x56, 0x77, 0x7e, 0xdf, 0xeb, 0x97, 0xf5, 0x53, 0xbf, 0xdb, 0xd8, + 0x77, 0x98, 0x6a, 0xb7, 0x77, 0xff, 0xff, 0x72, 0xbe, 0xad, 0x7d, 0x05, + 0x7c, 0xec, 0xf6, 0xcd, 0x5b, 0x1a, 0xfd, 0xd9, 0xce, 0xc6, 0x37, 0x70, + 0xed, 0x2b, 0x22, 0x00, 0x81, 0xc9, 0x8b, 0x2d, 0x59, 0xe9, 0x7a, 0xf1, + 0x79, 0xae, 0x63, 0x6e, 0xb6, 0x75, 0xed, 0x4c, 0x5a, 0xc3, 0x31, 0xa4, + 0x58, 0xa7, 0x5e, 0xbd, 0x99, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0x97, + 0x05, 0x68, 0x3b, 0x03, 0xfa, 0xc3, 0x70, 0xc8, 0x0d, 0x07, 0x51, 0x7f, + 0x52, 0x6e, 0x1d, 0xfd, 0xa0, 0xe8, 0x0f, 0xef, 0x0d, 0xc2, 0x08, 0xb3, + 0x9f, 0x25, 0xea, 0x35, 0xb8, 0x44, 0xd6, 0xb3, 0x5a, 0xfe, 0x00, 0x60, + 0x28, 0x80, 0xa8, 0x60, 0x38, 0x01, 0x02, 0x60, 0x4d, 0x81, 0x6c, 0x60, + 0x7b, 0x02, 0x82, 0x60, 0xf9, 0x85, 0xe0, 0x62, 0xf0, 0x2a, 0x56, 0x7a, + 0x82, 0x34, 0x64, 0x63, 0x28, 0x04, 0xae, 0x60, 0x47, 0x8a, 0x68, 0x68, + 0xdc, 0x1e, 0x34, 0x60, 0x71, 0x81, 0xf8, 0x62, 0x5e, 0x08, 0x68, 0x63, + 0x25, 0x1b, 0xce, 0x63, 0xc4, 0x02, 0x50, 0x60, 0x36, 0x81, 0x86, 0x68, + 0x3d, 0x1a, 0xb5, 0xe6, 0x10, 0x70, 0x73, 0x50, 0x12, 0xe5, 0x31, 0x98, + 0x59, 0x88, 0x73, 0x52, 0x87, 0x5d, 0xfc, 0x97, 0xb2, 0xc6, 0xcf, 0x15, + 0x8f, 0xe9, 0xb5, 0x71, 0xb1, 0xbd, 0x1d, 0x7d, 0xaa, 0xea, 0xcc, 0x7e, + 0x51, 0xde, 0xfd, 0x8b, 0xfb, 0xff, 0xc7, 0x2f, 0xfd, 0xeb, 0xff, 0x9f, + 0xce, 0x68, 0xab, 0xaf, 0xd9, 0xff, 0xad, 0x4f, 0xdf, 0xd2, 0xea, 0x5b, + 0x56, 0xcf, 0xb3, 0xf4, 0x52, 0xe8, 0x27, 0xd9, 0xf5, 0xa4, 0xda, 0xd5, + 0xd0, 0x4d, 0xb6, 0x47, 0xa4, 0xbb, 0x2d, 0x36, 0x6a, 0x07, 0xcf, 0x69, + 0x18, 0xa6, 0x82, 0xce, 0x19, 0xd0, 0x38, 0x4f, 0x95, 0x0c, 0x4b, 0xe4, + 0x80, 0xb1, 0x06, 0xac, 0x07, 0xa0, 0xb7, 0x11, 0x10, 0xb4, 0x62, 0xe1, + 0x3e, 0x29, 0x40, 0xfa, 0x98, 0x2d, 0x03, 0x15, 0x2c, 0xd1, 0x46, 0xe7, + 0x03, 0xac, 0x02, 0x45, 0x21, 0x4c, 0x06, 0xe7, 0x0b, 0x20, 0x35, 0x58, + 0x0c, 0xd9, 0x5c, 0x51, 0x47, 0x08, 0x5c, 0x39, 0x63, 0x20, 0x4d, 0x55, + 0x03, 0x03, 0xc9, 0x8a, 0x73, 0x22, 0x44, 0x6b, 0x63, 0x08, 0xc0, 0x29, + 0xa3, 0x1c, 0x5d, 0xb9, 0x33, 0xe8, 0xf6, 0x7f, 0xa3, 0x21, 0xec, 0x57, + 0xb3, 0x0d, 0x98, 0x46, 0xe3, 0x0b, 0x10, 0x74, 0x43, 0x06, 0x5c, 0x20, + 0x53, 0x0e, 0x40, 0x25, 0xb3, 0x5e, 0xd2, 0x07, 0xc3, 0x21, 0x24, 0x0b, + 0x23, 0x06, 0x00, 0x01, 0x91, 0x75, 0x71, 0xaa, 0xc0, 0x52, 0x39, 0x86, + 0x8c, 0x85, 0x80, 0x9a, 0x28, 0xa8, 0x03, 0x47, 0x7f, 0xe3, 0xaf, 0xe4, + 0xf3, 0x94, 0xd9, 0xdf, 0x08, 0x72, 0x4b, 0x7a, 0x8e, 0x66, 0x1d, 0x8d, + 0xce, 0xde, 0x81, 0x29, 0xaf, 0x77, 0x56, 0xb7, 0x53, 0x0c, 0xab, 0xcb, + 0x63, 0x74, 0x37, 0xae, 0xd8, 0x9e, 0xaf, 0x5e, 0xd6, 0x19, 0xe3, 0x95, + 0xcd, 0xe5, 0x8f, 0x79, 0x67, 0x3b, 0x5d, 0xfd, 0xe5, 0x96, 0xae, 0xde, + 0xcf, 0x0c, 0xb9, 0xda, 0xf7, 0xa7, 0xae, 0xda, 0xb7, 0x5a, 0x6a, 0xbd, + 0xcf, 0xa3, 0xb7, 0x49, 0x6b, 0x2b, 0x94, 0xd8, 0xff, 0x68, 0x31, 0xe5, + 0x2d, 0x4c, 0x2f, 0xd3, 0x5a, 0xed, 0x9a, 0x6d, 0x5c, 0xa6, 0xb3, 0xab, + 0x54, 0xb4, 0xf1, 0x8b, 0x57, 0xaa, 0xd4, 0xa7, 0xb3, 0x31, 0xbc, 0xb5, + 0x2b, 0x96, 0xef, 0x55, 0xf3, 0x97, 0xd8, 0xe7, 0x7b, 0x3d, 0x5a, 0x82, + 0xde, 0x1b, 0xb9, 0xae, 0x5e, 0xca, 0xe6, 0x57, 0x6e, 0xe7, 0x67, 0x2d, + 0x7d, 0xee, 0x7e, 0xb7, 0xca, 0x7a, 0xb5, 0x99, 0x18, 0x43, 0xdf, 0x49, + 0x03, 0x85, 0x47, 0x2a, 0x14, 0xc3, 0x4f, 0x9e, 0x9a, 0xa7, 0xb7, 0x96, + 0x72, 0xbc, 0xe3, 0xef, 0xf8, 0x8c, 0x24, 0xa3, 0x72, 0xe4, 0x6f, 0xd5, + 0x2e, 0x4a, 0xf5, 0xe6, 0xed, 0xc0, 0xa9, 0xe0, 0x0b, 0x80, 0x39, 0x80, + 0x00, 0x0e, 0x18, 0x0d, 0x81, 0xc9, 0x82, 0x90, 0x45, 0x18, 0x56, 0x8a, + 0xe9, 0x8f, 0x43, 0x8d, 0x1f, 0xe7, 0x5d, 0x89, 0x91, 0x60, 0xcc, 0x18, + 0xe4, 0x91, 0x89, 0x86, 0xab, 0x06, 0x98, 0x94, 0x06, 0xe1, 0x8e, 0x98, + 0xbb, 0x9c, 0x9c, 0xcd, 0x29, 0x94, 0x98, 0x96, 0x98, 0x36, 0x02, 0x90, + 0x1a, 0x74, 0x20, 0x63, 0x08, 0x01, 0x8b, 0x16, 0x06, 0x04, 0x28, 0x05, + 0x00, 0x0f, 0x5c, 0x66, 0x47, 0x51, 0x70, 0xd2, 0x4c, 0x95, 0x52, 0xd2, + 0x34, 0x52, 0xdd, 0x8d, 0xee, 0xb5, 0x3b, 0x6b, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, + 0x9e, 0xc5, 0x40, 0x32, 0x8a, 0x4b, 0x1e, 0xc7, 0x98, 0x0a, 0x73, 0x44, + 0x2a, 0xd0, 0x52, 0x8c, 0x0d, 0x04, 0x90, 0x47, 0x17, 0x0d, 0x04, 0xce, + 0x88, 0x06, 0x09, 0xba, 0x40, 0x0c, 0x09, 0x20, 0x2d, 0x8c, 0x3c, 0x53, + 0x90, 0x4c, 0xa3, 0x72, 0x06, 0x4c, 0xfa, 0x40, 0xee, 0x8c, 0x02, 0x50, + 0x7c, 0x0c, 0x54, 0x64, 0x0a, 0xcf, 0x73, 0xa2, 0x86, 0x8c, 0x65, 0xa0, + 0x25, 0xcc, 0x2c, 0x70, 0x1a, 0x4c, 0x36, 0x21, 0x2b, 0xcc, 0x06, 0xd0, + 0x1d, 0x0c, 0x23, 0x21, 0x67, 0x0c, 0x76, 0x90, 0x14, 0xcc, 0x7d, 0x80, + 0xbe, 0x8c, 0x14, 0x10, 0x3f, 0xce, 0x21, 0xd8, 0xd4, 0x50, 0x4d, 0x08, + 0xb8, 0xc9, 0x04, 0x00, 0x45, 0x69, 0xf0, 0xec, 0x41, 0x2d, 0x83, 0xe2, + 0x32, 0x8a, 0x7e, 0xee, 0x5d, 0x49, 0x0c, 0xca, 0xa8, 0x69, 0xe5, 0x4e, + 0x9c, 0xb6, 0x1e, 0x94, 0x4a, 0x5f, 0xdc, 0xb7, 0x95, 0x6b, 0xb6, 0xf3, + 0xb5, 0x9f, 0xdd, 0xde, 0x1c, 0xcb, 0xb7, 0x7f, 0xf5, 0xff, 0xde, 0x73, + 0xb8, 0x67, 0xfa, 0xd6, 0x5f, 0xaf, 0xfd, 0xef, 0x1c, 0x35, 0x97, 0xf6, + 0xfe, 0xf3, 0xe6, 0x7c, 0xfc, 0xff, 0x19, 0xad, 0x61, 0xcc, 0xec, 0x6b, + 0xe9, 0xa6, 0x75, 0x49, 0xfd, 0xb5, 0x31, 0xab, 0xd5, 0xf7, 0x52, 0xed, + 0xdc, 0x77, 0x95, 0x7a, 0x4b, 0xff, 0xfb, 0xd4, 0x60, 0x4e, 0x89, 0x97, + 0x32, 0x68, 0x3b, 0x0b, 0xfb, 0xc3, 0x70, 0x86, 0xcc, 0xf7, 0xdd, 0x7a, + 0x10, 0x6e, 0x21, 0x41, 0x9c, 0xe4, 0xcf, 0xf3, 0x4d, 0xc9, 0xdf, 0x33, + 0x9e, 0x01, 0xea, 0x49, 0xb8, 0xb8, 0xe7, 0xbb, 0xb9, 0xeb, 0x1c, 0x71, + 0xc6, 0xae, 0xf5, 0xcc, 0x6b, 0xea, 0xcf, 0x3f, 0x0c, 0x30, 0xd6, 0xb2, + 0xa4, 0xcb, 0x2f, 0xad, 0xbd, 0x5f, 0xdf, 0xe7, 0xfa, 0xca, 0xff, 0x32, + 0xcf, 0x2a, 0x6a, 0xb4, 0xb9, 0x53, 0x53, 0xdb, 0x74, 0x0f, 0x42, 0x87, + 0xee, 0xdc, 0x80, 0x5a, 0x6a, 0x75, 0x2b, 0x03, 0x2e, 0x97, 0x6f, 0x18, + 0xcd, 0x8c, 0xf1, 0x8c, 0xca, 0x60, 0x01, 0xf3, 0xc3, 0xb3, 0x52, 0x7c, + 0xa0, 0x93, 0x1a, 0x9b, 0xca, 0x3c, 0xc0, 0x00, 0x00, 0x14, 0x73, 0x40, + 0x00, 0x00, 0x17, 0x04, 0xc0, 0x24, 0x00, 0x8c, 0x03, 0x80, 0x04, 0xc0, + 0xcc, 0x03, 0x8c, 0x29, 0x03, 0x34, 0xc5, 0x0d, 0x5f, 0x0f, 0xb4, 0xc1, + 0xfc, 0xc6, 0x24, 0x0e, 0xcc, 0x47, 0x85, 0x64, 0xc7, 0x94, 0x95, 0x0c, + 0x2d, 0x41, 0x2c, 0x00, 0x18, 0x27, 0x42, 0xcf, 0x04, 0x65, 0x7e, 0x0c, + 0x06, 0x07, 0x40, 0x0a, 0x05, 0xe1, 0x38, 0x86, 0xfc, 0x49, 0x94, 0x09, + 0xd2, 0x06, 0x2c, 0x03, 0xa4, 0xd4, 0xd8, 0xe9, 0x70, 0x9e, 0x46, 0x5f, + 0x48, 0xeb, 0x24, 0x7c, 0xc0, 0xb6, 0x62, 0x78, 0xf9, 0x79, 0x75, 0xaf, + 0x5e, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x51, 0x4c, 0x67, 0xd4, 0x88, 0xce, 0x9c, + 0x20, 0xc3, 0x84, 0x77, 0x93, 0xa6, 0xb5, 0x24, 0xf5, 0x19, 0x24, 0x66, + 0x1e, 0x02, 0xf1, 0xd1, 0xc1, 0x29, 0x13, 0xc5, 0x66, 0x23, 0x40, 0x60, + 0x8e, 0x87, 0x60, 0x64, 0x55, 0x23, 0x84, 0x6a, 0xcc, 0x0a, 0xc8, 0x71, + 0xf8, 0x00, 0x96, 0x60, 0xa9, 0x04, 0xee, 0x62, 0x89, 0x36, 0x1c, 0x6e, + 0x27, 0x4f, 0x5e, 0x61, 0x04, 0x09, 0xe8, 0x60, 0x2c, 0x86, 0x16, 0x64, + 0x07, 0x84, 0x84, 0x60, 0x3a, 0x05, 0xc8, 0x62, 0x58, 0x93, 0xba, 0x72, + 0xd0, 0xb1, 0x1a, 0x63, 0x34, 0x0b, 0xb6, 0x60, 0x60, 0x83, 0xfc, 0x63, + 0x28, 0x38, 0xa2, 0x98, 0xc0, 0x82, 0x93, 0x22, 0x84, 0xc2, 0x0f, 0xa5, + 0x05, 0x70, 0x00, 0x09, 0x0b, 0x60, 0xe6, 0x99, 0x48, 0xbc, 0xe0, 0xe7, + 0x25, 0x8d, 0x4b, 0x14, 0x79, 0xb9, 0xb4, 0xf7, 0x5e, 0x2c, 0xee, 0x3a, + 0x89, 0xa6, 0xab, 0xdc, 0x36, 0xe6, 0xef, 0xb1, 0x08, 0xc4, 0x04, 0xa5, + 0x12, 0x87, 0x39, 0x93, 0xf6, 0x9a, 0x1a, 0x96, 0xf7, 0x74, 0x7b, 0xab, + 0xf4, 0xf8, 0xe3, 0x73, 0x0e, 0xe7, 0x5b, 0x3a, 0xb8, 0xdd, 0xa6, 0xd5, + 0x8c, 0x2a, 0x5c, 0xa7, 0xa7, 0xa5, 0xc6, 0xa7, 0x35, 0x3d, 0x4b, 0x2f, + 0xbb, 0x85, 0x4e, 0x5a, 0xbb, 0x76, 0x23, 0xf3, 0x99, 0x4f, 0x58, 0xdd, + 0x3d, 0xe9, 0xc8, 0xcd, 0xcb, 0xf4, 0x7a, 0xdc, 0x8a, 0x51, 0x5e, 0x82, + 0x6f, 0x19, 0x7e, 0xe9, 0xe7, 0x65, 0x54, 0x53, 0xd0, 0xe6, 0x12, 0xd8, + 0x63, 0xe9, 0xee, 0x4b, 0xa9, 0x2a, 0x7e, 0x32, 0xe9, 0x9c, 0xec, 0xcb, + 0xf3, 0x8d, 0xd7, 0xaf, 0x1d, 0x96, 0xcd, 0xe5, 0x31, 0x10, 0x91, 0xdc, + 0xa1, 0xca, 0xa4, 0xc5, 0x35, 0x7b, 0x55, 0x63, 0x72, 0xc9, 0x7d, 0xac, + 0x27, 0xae, 0xcb, 0xa6, 0x6a, 0x67, 0x1b, 0xc6, 0xfe, 0x56, 0xa3, 0xa4, + 0x20, 0x8d, 0x98, 0xf6, 0x9d, 0x1a, 0x9d, 0x8a, 0xc1, 0x64, 0x30, 0xdd, + 0x9c, 0x25, 0x96, 0xbe, 0x7e, 0x7f, 0x0b, 0x74, 0x14, 0xe3, 0x82, 0x8c, + 0x80, 0xe8, 0xee, 0xe9, 0xe3, 0x71, 0x83, 0x4d, 0x25, 0xc5, 0x0f, 0x02, + 0x80, 0x30, 0xa8, 0x0d, 0x98, 0x05, 0x01, 0xc1, 0x81, 0x28, 0x3a, 0x98, + 0x35, 0x09, 0x11, 0x8d, 0x4a, 0x28, 0x9b, 0x33, 0xc4, 0x41, 0x84, 0xe8, + 0x9f, 0x98, 0x45, 0x0e, 0x11, 0xa4, 0xf9, 0x0d, 0x18, 0x23, 0x06, 0x29, + 0x8a, 0xf1, 0x4f, 0x1f, 0x0a, 0x92, 0xb1, 0x95, 0xf0, 0xc5, 0x18, 0x3d, + 0x84, 0x08, 0x1a, 0xe6, 0xc0, 0x66, 0x52, 0x81, 0x8e, 0x08, 0x0d, 0x90, + 0x17, 0x36, 0x30, 0x08, 0x39, 0x44, 0xc6, 0x60, 0xa7, 0x45, 0xab, 0x65, + 0x2a, 0xb6, 0x52, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xef, 0xca, 0x20, 0xdc, + 0xc4, 0x5c, 0x83, 0x16, 0xce, 0x01, 0x58, 0x1d, 0xcb, 0xd9, 0x76, 0xd0, + 0x12, 0x30, 0xd5, 0x66, 0xcc, 0x4e, 0x9a, 0x22, 0x05, 0x40, 0xd2, 0x30, + 0x69, 0x00, 0xbb, 0x34, 0xca, 0xca, 0xed, 0x31, 0x5a, 0xc9, 0x58, 0x36, + 0x0a, 0x07, 0xcd, 0x30, 0xd2, 0x01, 0x89, 0x31, 0xc0, 0xd1, 0x22, 0x3e, + 0x38, 0x50, 0x56, 0x32, 0x08, 0x40, 0x13, 0x30, 0x77, 0x80, 0x91, 0x33, + 0x91, 0x05, 0x04, 0x30, 0x5c, 0x01, 0x69, 0x30, 0x63, 0x02, 0xbf, 0x3f, + 0x06, 0x97, 0xed, 0x33, 0xf6, 0x41, 0xa9, 0x30, 0x7b, 0x00, 0x94, 0x3c, + 0xb3, 0x53, 0x60, 0x5e, 0x37, 0x15, 0xd3, 0x23, 0x19, 0x30, 0x41, 0x42, + 0xeb, 0x95, 0x45, 0x02, 0x03, 0x5e, 0x95, 0x85, 0x94, 0xc8, 0xd1, 0x11, + 0x4b, 0xdd, 0x97, 0xaa, 0x01, 0xc2, 0x58, 0xd8, 0x63, 0xec, 0xea, 0x55, + 0xb6, 0xca, 0xf2, 0xc5, 0x21, 0xd8, 0x09, 0xd4, 0xd3, 0xb9, 0x16, 0x9e, + 0x7c, 0xe4, 0x38, 0x58, 0xed, 0xd9, 0xc8, 0x13, 0x2b, 0x95, 0x27, 0x69, + 0x2e, 0x7d, 0x25, 0x48, 0xd6, 0x74, 0x74, 0xf2, 0xda, 0xb4, 0xb4, 0xf8, + 0xee, 0x86, 0x21, 0x86, 0x58, 0xff, 0xfb, 0xd4, 0x60, 0x45, 0x0d, 0x98, + 0x6e, 0x68, 0x38, 0x83, 0xfb, 0xcb, 0x70, 0x5f, 0x6c, 0xe7, 0xd9, 0x76, + 0x6d, 0x6e, 0x1c, 0xe9, 0xa0, 0xea, 0x4f, 0xef, 0x0d, 0xc2, 0x5e, 0xb4, + 0x1d, 0x15, 0xfa, 0x49, 0xb8, 0x54, 0xc6, 0x13, 0x6a, 0x55, 0x5a, 0x7a, + 0xae, 0x52, 0x0a, 0x4e, 0x4f, 0xde, 0xa7, 0xb1, 0x9d, 0x24, 0x86, 0x39, + 0x86, 0x34, 0xd1, 0xe9, 0x7d, 0x26, 0xe4, 0x51, 0xaa, 0x1a, 0x19, 0x34, + 0x26, 0x96, 0x92, 0x41, 0xf4, 0x51, 0xbb, 0xb3, 0xd3, 0x37, 0xe2, 0xd2, + 0x89, 0x44, 0xae, 0x9e, 0x72, 0xbc, 0xa2, 0x92, 0xa4, 0xa2, 0x86, 0x9a, + 0x7a, 0x6e, 0xa5, 0x7a, 0x9a, 0xed, 0x5a, 0xb1, 0xbb, 0x73, 0x1f, 0x37, + 0x4d, 0x39, 0x19, 0xcb, 0x29, 0x35, 0x26, 0xf2, 0x94, 0x4e, 0xc5, 0x28, + 0xa7, 0x64, 0xef, 0xa5, 0x89, 0x99, 0x9a, 0x4b, 0xf3, 0xf7, 0x1b, 0x2d, + 0x16, 0x38, 0xa7, 0xb9, 0xa6, 0x8a, 0x48, 0xce, 0x30, 0xf9, 0xc8, 0x40, + 0x63, 0x84, 0x4b, 0x6a, 0x55, 0x49, 0x2e, 0xc6, 0x97, 0x28, 0x66, 0x53, + 0x04, 0x3d, 0xc7, 0xd0, 0xad, 0x06, 0x03, 0x65, 0x4f, 0xca, 0xb7, 0x02, + 0xbf, 0x26, 0x8e, 0x41, 0x54, 0x00, 0x03, 0x6f, 0x00, 0x00, 0x86, 0x97, + 0xea, 0x41, 0x0b, 0x03, 0x20, 0x21, 0x78, 0xcb, 0xc3, 0x84, 0xff, 0xc2, + 0x64, 0x39, 0xa8, 0x30, 0xc4, 0xce, 0x38, 0x41, 0x2f, 0x11, 0x0d, 0x80, + 0x85, 0x44, 0xdd, 0x2a, 0xbc, 0xc6, 0xa3, 0x5c, 0xc1, 0x10, 0xf0, 0x03, + 0x2e, 0x0d, 0x44, 0x21, 0x18, 0x5b, 0xd8, 0x5d, 0xa2, 0x72, 0x42, 0x94, + 0xeb, 0x3e, 0x6a, 0x8b, 0x2d, 0x4e, 0xbd, 0x5f, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfb, 0x05, 0xdd, 0x07, 0x2e, 0x3d, 0x47, 0xbb, 0xef, 0xc7, 0xd1, 0xfa, + 0xa3, 0x1a, 0x22, 0xab, 0xb2, 0x06, 0x07, 0x88, 0x1e, 0x86, 0x45, 0xc0, + 0x4b, 0x66, 0x53, 0x8a, 0x3a, 0x86, 0x44, 0x88, 0xb9, 0x20, 0xd0, 0x2c, + 0x0c, 0x14, 0x91, 0x6d, 0x4c, 0x3e, 0x81, 0x7b, 0x0c, 0x13, 0xa0, 0x4d, + 0x4c, 0x09, 0xb0, 0x80, 0xcc, 0x8f, 0x11, 0x45, 0x4c, 0x04, 0x90, 0x55, + 0x4c, 0x06, 0x71, 0x74, 0x8d, 0x77, 0x55, 0x7c, 0x0c, 0x4b, 0x50, 0xcf, + 0x8c, 0x09, 0xe0, 0x48, 0xcc, 0xde, 0x08, 0xc1, 0x0f, 0xc8, 0x08, 0x82, + 0x07, 0x05, 0x84, 0x84, 0x82, 0x54, 0x1a, 0x35, 0x1e, 0x91, 0xc3, 0x52, + 0x8a, 0x2c, 0xe5, 0xb2, 0xd8, 0x75, 0xd0, 0x6c, 0x6c, 0xc2, 0x9e, 0x1b, + 0x7b, 0x30, 0x8a, 0x3b, 0x11, 0xe8, 0xb4, 0xbe, 0x59, 0x2c, 0x96, 0xd3, + 0x67, 0x85, 0x2d, 0x9b, 0xf7, 0x30, 0xfe, 0xdc, 0xaf, 0x47, 0xfc, 0xc7, + 0x5d, 0xcb, 0x5f, 0x86, 0x55, 0x6c, 0x65, 0x8e, 0xbb, 0x97, 0x28, 0xb7, + 0x85, 0xfb, 0x79, 0xfd, 0xcc, 0x6d, 0x50, 0xdb, 0xc2, 0xb6, 0x1c, 0xcf, + 0x75, 0x6c, 0xf3, 0x1a, 0x4c, 0x33, 0xfa, 0x9c, 0xc7, 0x2d, 0x6f, 0x9f, + 0x77, 0x29, 0x7e, 0xf5, 0x85, 0x8f, 0xd6, 0xa9, 0xb9, 0x66, 0xcf, 0x67, + 0xa9, 0x71, 0xc3, 0x2b, 0x39, 0xf3, 0x2b, 0xd9, 0x5c, 0xfc, 0x3e, 0xf5, + 0xba, 0x7d, 0xd4, 0xbb, 0xf6, 0xe8, 0x75, 0x85, 0x7e, 0xf3, 0x79, 0x67, + 0xdb, 0x57, 0xaf, 0xf7, 0xf9, 0xad, 0x57, 0xb7, 0xff, 0x5e, 0xc7, 0x3b, + 0xbc, 0x58, 0xc8, 0x5a, 0xd0, 0xfd, 0x9b, 0xb6, 0xea, 0x08, 0xe1, 0x2a, + 0xcf, 0x5f, 0x53, 0x5c, 0xce, 0xb6, 0x39, 0xa8, 0x98, 0x72, 0xe7, 0xaa, + 0xc1, 0xb8, 0xd7, 0x0a, 0x72, 0x9a, 0xd6, 0x01, 0xc1, 0x80, 0x24, 0x01, + 0x29, 0x80, 0x0e, 0x01, 0x61, 0x80, 0x18, 0x02, 0xb9, 0x80, 0x36, 0x05, + 0x61, 0x80, 0x9c, 0x0c, 0xa9, 0x83, 0x32, 0x2e, 0x11, 0x89, 0xca, 0x52, + 0xe9, 0x80, 0x0c, 0x0d, 0x31, 0x81, 0x46, 0x05, 0xe9, 0x82, 0xbc, 0x17, + 0xd1, 0x81, 0x0c, 0x04, 0xd9, 0x83, 0xd2, 0x1f, 0x91, 0xa0, 0x70, 0x6a, + 0x09, 0x8f, 0x96, 0x09, 0x51, 0x82, 0x40, 0x02, 0xd8, 0x1e, 0x74, 0x40, + 0x5a, 0x28, 0x03, 0x0b, 0x08, 0x40, 0x85, 0xc3, 0x0c, 0xc9, 0x13, 0x19, + 0x82, 0xf9, 0xf2, 0xf1, 0x5c, 0x93, 0x3c, 0x6d, 0x2c, 0x9b, 0x97, 0x0e, + 0x28, 0xc1, 0x67, 0xd9, 0xd0, 0x6a, 0x4b, 0x4e, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfe, 0xbf, 0xfb, 0x6a, 0x6f, 0xff, 0xed, 0xd5, 0xdb, 0xff, 0xff, + 0xff, 0xd3, 0xff, 0x41, 0x9f, 0x2f, 0xdc, 0xe0, 0xb5, 0x84, 0x24, 0x4e, + 0x99, 0x0e, 0x23, 0x53, 0x20, 0x83, 0x84, 0x31, 0xd7, 0x35, 0x55, 0x15, + 0x34, 0x5d, 0x80, 0x39, 0x9b, 0x98, 0x0b, 0x28, 0xe1, 0x0f, 0x02, 0x2c, + 0x2a, 0x46, 0x8a, 0x2b, 0x06, 0xf3, 0x79, 0x93, 0xda, 0x39, 0xa4, 0x52, + 0xa3, 0xe8, 0xb1, 0xb5, 0x31, 0x3d, 0x15, 0x83, 0x03, 0x44, 0x59, 0x35, + 0xcd, 0x4b, 0xd3, 0x06, 0x90, 0x61, 0x31, 0x10, 0x19, 0xc3, 0x11, 0x92, + 0x04, 0x31, 0x59, 0x0a, 0x63, 0x0b, 0xa2, 0xfb, 0x33, 0x76, 0x2d, 0x63, + 0x57, 0x00, 0xbf, 0x30, 0xeb, 0x05, 0x63, 0xa8, 0x74, 0x1d, 0x39, 0xb8, + 0x26, 0x42, 0x7a, 0xb2, 0xa7, 0x71, 0xae, 0xd2, 0x6a, 0x25, 0x04, 0xdf, + 0xbd, 0x9c, 0x2a, 0x82, 0xe6, 0x55, 0xf2, 0x85, 0xea, 0x6a, 0xfe, 0x7c, + 0xd4, 0xdd, 0x6e, 0x6e, 0xae, 0x39, 0xd9, 0xd6, 0xad, 0xeb, 0x57, 0xad, + 0xef, 0xf5, 0xf9, 0xeb, 0x7a, 0xc4, 0x99, 0xc6, 0x37, 0xbf, 0x8c, 0x7f, + 0xab, 0x66, 0xfb, 0xd6, 0x75, 0x5a, 0x67, 0x1a, 0xbf, 0xc4, 0x91, 0xbc, + 0x0b, 0x47, 0xce, 0xbb, 0x96, 0xff, 0xfb, 0xd4, 0x60, 0x3d, 0x0d, 0x96, + 0x25, 0x67, 0x3b, 0x83, 0xda, 0x7b, 0x72, 0x9c, 0xac, 0xe7, 0x46, 0x7e, + 0x92, 0x6e, 0x5a, 0xf9, 0x9c, 0xea, 0x4f, 0xbd, 0xed, 0xca, 0x61, 0xb3, + 0x9c, 0xc1, 0xfa, 0xcd, 0xb9, 0xab, 0x13, 0xc1, 0xa4, 0x1f, 0x9b, 0x5a, + 0xb6, 0xc4, 0x7b, 0x4f, 0x02, 0x3d, 0x20, 0xef, 0x12, 0xea, 0x34, 0xbb, + 0xbc, 0x3c, 0xcf, 0x2d, 0xb3, 0x0e, 0xdf, 0xcf, 0x24, 0x1c, 0x66, 0xb2, + 0xde, 0xdb, 0xd7, 0xcd, 0xef, 0x37, 0xfe, 0x9f, 0x53, 0xd2, 0x6b, 0x53, + 0x33, 0x66, 0x16, 0x6f, 0xbb, 0xba, 0x02, 0x46, 0x17, 0x3a, 0x5c, 0xe2, + 0x93, 0xf4, 0xac, 0x93, 0x7a, 0xeb, 0x78, 0x81, 0x88, 0xf1, 0x07, 0x14, + 0xaf, 0x89, 0x26, 0x5e, 0x08, 0xba, 0x01, 0x38, 0x01, 0x24, 0x00, 0x00, + 0x70, 0x05, 0x06, 0x01, 0x98, 0x02, 0x66, 0x03, 0x10, 0x08, 0x06, 0x05, + 0x98, 0x12, 0xa6, 0x0b, 0x80, 0x2e, 0xc6, 0x22, 0x69, 0xbe, 0xa7, 0x34, + 0xf8, 0x7f, 0xe6, 0x27, 0xd8, 0x27, 0xe6, 0x0a, 0x80, 0x00, 0x86, 0x0b, + 0xb0, 0x19, 0x06, 0x06, 0x40, 0x32, 0xa6, 0x0a, 0xe8, 0x1e, 0x06, 0xa0, + 0x0b, 0x3b, 0x86, 0x08, 0xf8, 0x42, 0x06, 0x03, 0xa0, 0x13, 0xe0, 0x69, + 0xde, 0x01, 0x84, 0x16, 0x06, 0x84, 0xa0, 0xc8, 0x86, 0x0a, 0x11, 0xa8, + 0xb3, 0xc3, 0xdd, 0xba, 0x85, 0xd8, 0xee, 0x32, 0x52, 0x45, 0x83, 0xe9, + 0x25, 0x21, 0xa7, 0x99, 0x90, 0x3a, 0xcc, 0xb4, 0x52, 0x7b, 0xb2, 0x95, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x4a, 0xfe, 0xfa, 0xbf, 0xdf, 0xff, + 0x7f, 0xf7, 0xdf, 0xfd, 0xd7, 0xf5, 0x75, 0x7a, 0x4d, 0xcd, 0x5d, 0xa2, + 0xba, 0x0d, 0xe4, 0x16, 0x24, 0x4b, 0xc5, 0xd2, 0x74, 0x02, 0x54, 0x38, + 0x17, 0x5a, 0x4b, 0xa8, 0xc1, 0x25, 0x19, 0x8a, 0x40, 0x01, 0xc8, 0xa2, + 0x66, 0x38, 0xdc, 0xb8, 0x07, 0x10, 0x3b, 0x03, 0xd6, 0x03, 0x00, 0x1c, + 0x26, 0x13, 0x18, 0x20, 0x70, 0x53, 0x28, 0x44, 0xbb, 0x73, 0x48, 0x5c, + 0x38, 0x23, 0x07, 0xfc, 0x0c, 0x43, 0x06, 0x38, 0x50, 0x93, 0x21, 0xa8, + 0x8c, 0xe3, 0x05, 0x58, 0x04, 0x30, 0x28, 0x6e, 0x46, 0x10, 0x20, 0xbb, + 0x46, 0x0c, 0x20, 0x06, 0xe6, 0x06, 0x10, 0x28, 0x86, 0x30, 0xa2, 0x15, + 0x66, 0x04, 0x90, 0x20, 0x60, 0x40, 0x0b, 0x00, 0x9f, 0x24, 0xa1, 0xa9, + 0x23, 0x28, 0xd2, 0x76, 0x8a, 0x65, 0x37, 0x53, 0xd6, 0x5d, 0xad, 0xe6, + 0x47, 0x07, 0xaa, 0x43, 0xa0, 0x91, 0x35, 0x42, 0x63, 0xde, 0xd7, 0x6d, + 0x4c, 0x6f, 0x4b, 0xc1, 0xcf, 0x19, 0x57, 0x09, 0xfb, 0xf6, 0xe6, 0xa8, + 0x52, 0x45, 0xff, 0x3f, 0x14, 0xae, 0x73, 0x8b, 0xfc, 0xdf, 0xeb, 0x5b, + 0xad, 0x25, 0xf4, 0xcd, 0xfe, 0xe4, 0x7e, 0xc3, 0x7b, 0x76, 0x38, 0xae, + 0x19, 0xdc, 0x78, 0xef, 0x25, 0xd3, 0xc8, 0xd2, 0x67, 0x11, 0x97, 0x59, + 0x81, 0x05, 0x5e, 0xf6, 0xba, 0x6b, 0xcd, 0x6e, 0xdc, 0xe1, 0x78, 0x1b, + 0x87, 0x98, 0x77, 0xb5, 0x6b, 0x12, 0xb8, 0xb4, 0x58, 0x8e, 0x53, 0x43, + 0x87, 0x0b, 0x77, 0xde, 0x63, 0x41, 0xa4, 0x48, 0x6d, 0xf5, 0xcc, 0x08, + 0xb7, 0x88, 0xcb, 0x67, 0xbb, 0xc5, 0xb6, 0xc5, 0x4a, 0xd7, 0x4f, 0xeb, + 0x24, 0x3c, 0xc3, 0x53, 0x67, 0x78, 0x3f, 0x95, 0xcf, 0x6c, 0x23, 0xd0, + 0xa2, 0x13, 0x97, 0x5e, 0x1e, 0x37, 0x1f, 0x30, 0x21, 0x5e, 0x8b, 0xa2, + 0xc3, 0x11, 0x88, 0x93, 0xd3, 0x22, 0xdf, 0xf0, 0x30, 0x0f, 0x40, 0x54, + 0x30, 0x13, 0x00, 0x7f, 0x30, 0x19, 0x40, 0xc4, 0x30, 0x28, 0x01, 0x61, + 0x30, 0x54, 0x43, 0x30, 0x31, 0x19, 0x14, 0xf1, 0x38, 0xe8, 0x1d, 0xd4, + 0x30, 0xf1, 0x03, 0x11, 0x30, 0x2a, 0x41, 0x9d, 0x30, 0x29, 0x04, 0xa9, + 0x30, 0x98, 0xc1, 0xac, 0x31, 0x2d, 0x04, 0x3f, 0x33, 0x40, 0x87, 0x5d, + 0x32, 0x63, 0x00, 0xe7, 0x30, 0x5d, 0x40, 0x62, 0x03, 0x50, 0x0a, 0x41, + 0x85, 0x10, 0xb9, 0xd0, 0x0c, 0x04, 0x01, 0x40, 0x08, 0x7c, 0xc1, 0xf8, + 0x8d, 0xf4, 0xd4, 0x51, 0x27, 0x0e, 0x2a, 0x6e, 0x62, 0x7d, 0x6a, 0x44, + 0xbe, 0xba, 0x9d, 0xb5, 0x29, 0xfa, 0xbf, 0xed, 0xfe, 0xbf, 0xff, 0xff, + 0xff, 0xfd, 0xea, 0x6f, 0xff, 0xdd, 0x5a, 0xff, 0xf5, 0xdb, 0xd4, 0xcb, + 0xdf, 0x7e, 0xb6, 0xed, 0xdd, 0x7b, 0x5f, 0x5b, 0xe4, 0x30, 0x0d, 0x13, + 0x41, 0x31, 0x8d, 0x31, 0x4c, 0x01, 0x02, 0x44, 0x59, 0x68, 0x1c, 0xac, + 0xdd, 0x33, 0xee, 0x1a, 0xe0, 0xb1, 0x54, 0x53, 0x19, 0x04, 0xc6, 0x30, + 0x01, 0x9e, 0x20, 0x44, 0xd5, 0x30, 0x0b, 0x0e, 0xd3, 0x50, 0x19, 0x66, + 0x35, 0x2b, 0x68, 0x13, 0x4d, 0xb4, 0x86, 0x30, 0xb1, 0x24, 0x33, 0x1a, + 0x44, 0x40, 0x3e, 0x2e, 0x7d, 0xb3, 0x21, 0x40, 0xdc, 0x31, 0xf1, 0x17, + 0xf3, 0x91, 0x28, 0x39, 0x30, 0x98, 0x03, 0xa3, 0x1b, 0xf0, 0x97, 0x36, + 0x1f, 0x68, 0x03, 0x53, 0x50, 0x24, 0x26, 0x1c, 0xd0, 0xf8, 0xe1, 0x16, + 0x0c, 0x48, 0x30, 0xb8, 0x14, 0xb4, 0x5e, 0x2b, 0x4a, 0x0d, 0x9a, 0x9b, + 0xb5, 0x0d, 0xcc, 0xbf, 0x54, 0x32, 0x5b, 0x14, 0xd3, 0xb8, 0x52, 0x49, + 0x21, 0x8a, 0x92, 0xe8, 0x6e, 0x35, 0x4f, 0x57, 0x74, 0x95, 0xb0, 0xa2, + 0xab, 0x6b, 0x3c, 0xef, 0xd4, 0xca, 0xd6, 0x16, 0xf0, 0xcf, 0x5a, 0xcb, + 0xfc, 0xea, 0xf1, 0xab, 0x8f, 0x6c, 0x4b, 0x5a, 0x6e, 0x35, 0x77, 0xa9, + 0xa3, 0xf9, 0x65, 0xdf, 0xdc, 0xd3, 0x62, 0x2e, 0xe3, 0xc5, 0x81, 0xbd, + 0xcb, 0x16, 0x24, 0x2d, 0x4b, 0xff, 0xfb, 0xd4, 0x60, 0x42, 0x0f, 0x96, + 0x85, 0x67, 0xba, 0x83, 0xda, 0x7b, 0x70, 0x99, 0x8d, 0x07, 0x20, 0x7e, + 0x11, 0x6e, 0x1a, 0x01, 0x9c, 0xea, 0x0f, 0x69, 0xed, 0xca, 0x60, 0x33, + 0xdc, 0x95, 0xfa, 0x51, 0xb8, 0x8d, 0xc6, 0xf4, 0xc4, 0x5b, 0x38, 0x47, + 0x60, 0x6a, 0x7a, 0xdf, 0x8d, 0xc1, 0x8d, 0xb8, 0xba, 0xd5, 0xaf, 0x7b, + 0x63, 0x76, 0xa4, 0xf2, 0xc7, 0x9f, 0xb9, 0xd2, 0x16, 0xe0, 0xc6, 0xa7, + 0x96, 0x3e, 0xab, 0x1e, 0x3d, 0xf5, 0x06, 0x13, 0xdb, 0x6e, 0x8c, 0xd0, + 0xdf, 0x79, 0xf5, 0x6d, 0x66, 0x0c, 0xb9, 0x79, 0x01, 0x7c, 0x2b, 0x9f, + 0x4c, 0xa8, 0x40, 0x74, 0x3d, 0xdc, 0xdb, 0xb3, 0xff, 0x8a, 0x6f, 0xdd, + 0x70, 0x8e, 0x85, 0xa4, 0x2d, 0xfc, 0x00, 0x40, 0x46, 0xb1, 0x7d, 0x4c, + 0x05, 0xc0, 0x13, 0x8c, 0x0a, 0x50, 0x29, 0x4c, 0x12, 0x60, 0x4f, 0x0c, + 0x24, 0xb0, 0xb5, 0x4c, 0x6f, 0xc4, 0x84, 0x0f, 0xb9, 0x87, 0x05, 0xcc, + 0x72, 0x20, 0xc2, 0x8c, 0x18, 0x50, 0x31, 0x4c, 0x86, 0xf1, 0x61, 0x8c, + 0x13, 0x00, 0x54, 0x0c, 0x2e, 0xb0, 0xda, 0x0c, 0x17, 0xf4, 0x61, 0xcc, + 0x20, 0x80, 0x51, 0xcc, 0x01, 0xe0, 0x0a, 0x00, 0x35, 0x20, 0xe1, 0x62, + 0x44, 0x3c, 0x6f, 0x0e, 0x91, 0x76, 0x48, 0x13, 0xac, 0x4d, 0x0f, 0xa3, + 0x54, 0x53, 0x48, 0xa4, 0x6d, 0x53, 0x20, 0xc8, 0x1c, 0xba, 0x6c, 0xf7, + 0x4a, 0xf6, 0xdf, 0xd5, 0xd9, 0xbd, 0xfb, 0x6a, 0x6f, 0xf7, 0xff, 0xb5, + 0xb5, 0xff, 0xd5, 0x57, 0x7e, 0xaf, 0xeb, 0x5d, 0xbd, 0x0a, 0xd9, 0xb6, + 0x66, 0xd7, 0xd7, 0xfd, 0x5f, 0xd5, 0x65, 0x28, 0xe3, 0xba, 0xc5, 0x38, + 0x39, 0x22, 0x0a, 0x44, 0x8d, 0x8d, 0xc9, 0xd0, 0x33, 0x46, 0x4d, 0x47, + 0x0d, 0x4b, 0xb9, 0xa2, 0x6a, 0x31, 0x0c, 0x90, 0x3f, 0x62, 0x65, 0x04, + 0x4c, 0x09, 0x50, 0xe4, 0xc9, 0x93, 0x45, 0x18, 0x51, 0x16, 0xc9, 0x8b, + 0xcc, 0xc0, 0x9e, 0x42, 0x5b, 0xd9, 0xf1, 0x11, 0xe5, 0x18, 0xcd, 0x09, + 0x99, 0x88, 0x9a, 0xb4, 0x1d, 0x24, 0x83, 0x01, 0x82, 0xe8, 0x34, 0x18, + 0x77, 0x1d, 0x09, 0xb3, 0xea, 0xe5, 0x11, 0x12, 0x71, 0x89, 0xe0, 0xd3, + 0x1c, 0xc8, 0x6f, 0x51, 0x9f, 0x70, 0xac, 0x18, 0x60, 0x83, 0x09, 0xd4, + 0x3c, 0x6b, 0x49, 0x99, 0x61, 0x46, 0x00, 0x02, 0x02, 0xd6, 0x6c, 0x6a, + 0x5a, 0xce, 0x5c, 0x97, 0xf1, 0xb8, 0x3f, 0x39, 0x43, 0xb0, 0x1c, 0x72, + 0xd5, 0x0d, 0x8a, 0x29, 0xa7, 0xfa, 0x3d, 0x8d, 0xe9, 0x0c, 0xf6, 0xfb, + 0xcd, 0xe7, 0x57, 0x58, 0x61, 0xdd, 0xe7, 0xf4, 0x9f, 0xdb, 0xda, 0xbd, + 0x7f, 0x0f, 0x5a, 0x7c, 0xe7, 0x19, 0xc6, 0x35, 0x6f, 0xab, 0x63, 0xdf, + 0x7a, 0xbc, 0xd9, 0xb3, 0xf8, 0x9a, 0x8f, 0x79, 0x22, 0xc2, 0x70, 0x6d, + 0x85, 0x02, 0x1b, 0xe9, 0xa6, 0x96, 0x69, 0x6f, 0x5d, 0xfb, 0x43, 0x9b, + 0x30, 0xae, 0xea, 0x4a, 0x5a, 0x91, 0xfc, 0xce, 0x7b, 0x72, 0xc4, 0xf3, + 0x52, 0xf5, 0xce, 0xf3, 0x5a, 0x55, 0xf4, 0x4c, 0xdb, 0x54, 0x85, 0x47, + 0xb1, 0x20, 0x66, 0x0d, 0x29, 0x0b, 0x72, 0x57, 0xee, 0x7a, 0x4f, 0x0e, + 0x14, 0x48, 0x90, 0xf5, 0xba, 0x5e, 0xb7, 0xcc, 0x3a, 0xc3, 0x02, 0xcb, + 0x7d, 0xc6, 0xfb, 0x87, 0x1b, 0xa8, 0xfd, 0x46, 0xd6, 0x2b, 0x98, 0x2f, + 0xf3, 0xbc, 0x06, 0xe5, 0x5e, 0x94, 0x52, 0xd0, 0x2e, 0x99, 0x09, 0x91, + 0x86, 0x03, 0xb0, 0x0b, 0xa6, 0x02, 0xc8, 0x0e, 0xc6, 0x03, 0xb0, 0x15, + 0xa6, 0x06, 0x18, 0x27, 0x06, 0x0b, 0xe0, 0x5d, 0xa6, 0x23, 0x2a, 0xdf, + 0x47, 0x62, 0xd9, 0x97, 0x26, 0x2d, 0x88, 0x4e, 0xc6, 0x02, 0xe0, 0x2c, + 0x86, 0x4d, 0x90, 0x66, 0x26, 0x0e, 0xe0, 0x23, 0x26, 0x14, 0xf8, 0x1f, + 0x66, 0x32, 0x48, 0x61, 0xc6, 0x2b, 0x38, 0x13, 0x66, 0x07, 0xe0, 0x07, + 0x80, 0x78, 0x4b, 0x81, 0xac, 0x00, 0x06, 0x44, 0x98, 0x18, 0xd1, 0xa0, + 0xd8, 0x00, 0x9d, 0xcd, 0x4b, 0xaa, 0x63, 0x14, 0xd9, 0x37, 0x35, 0x74, + 0xea, 0x73, 0x14, 0xe9, 0x25, 0xf6, 0x74, 0x54, 0xb5, 0xb6, 0xaf, 0x4b, + 0xff, 0xdb, 0xff, 0xf6, 0xed, 0xdf, 0xa4, 0xaf, 0xd9, 0xb5, 0xff, 0xdf, + 0xf4, 0xec, 0x9d, 0xbf, 0xf7, 0xf5, 0x6e, 0xbd, 0xbb, 0xed, 0xea, 0xf5, + 0x6a, 0x4c, 0x09, 0x02, 0x2f, 0x20, 0x5c, 0x99, 0x81, 0x82, 0x12, 0x0e, + 0x06, 0x79, 0xd3, 0x52, 0x75, 0x56, 0x60, 0x32, 0xc0, 0xa5, 0x02, 0xa9, + 0x91, 0x8a, 0x66, 0x61, 0x6b, 0x24, 0x93, 0x2a, 0x40, 0x0c, 0x08, 0x20, + 0x81, 0x4c, 0x49, 0x82, 0xce, 0x8c, 0xa9, 0x11, 0x2c, 0xcd, 0x3a, 0xc0, + 0x21, 0x4c, 0x1f, 0x00, 0x54, 0x0c, 0x0f, 0x31, 0x1b, 0x0c, 0x63, 0xc0, + 0xe4, 0x0c, 0x15, 0xe0, 0x04, 0x4c, 0x05, 0x40, 0x4b, 0x0c, 0x5c, 0x11, + 0x54, 0xcc, 0x07, 0x60, 0x18, 0x0c, 0x00, 0x60, 0x97, 0xcd, 0x25, 0x55, + 0x30, 0x4c, 0x1b, 0xe0, 0x6d, 0xcc, 0x03, 0x90, 0x20, 0x0c, 0x4d, 0x44, + 0x29, 0x18, 0xa3, 0xa1, 0xb9, 0x10, 0x0b, 0xfa, 0x21, 0x0c, 0x4e, 0x41, + 0x57, 0xe0, 0x29, 0xd9, 0xbe, 0x53, 0xcd, 0xc6, 0x63, 0x92, 0x79, 0x43, + 0xb3, 0x39, 0x4f, 0x20, 0x8d, 0xc6, 0x62, 0xae, 0xd7, 0x28, 0xe9, 0x27, + 0x6c, 0xd7, 0xab, 0x86, 0xaa, 0xda, 0xe6, 0x3c, 0xd7, 0x3f, 0x2c, 0x71, + 0xe5, 0x8d, 0x73, 0x78, 0x77, 0x3c, 0x3b, 0xfc, 0xb9, 0x3b, 0x66, 0xdf, + 0x2a, 0xd9, 0xcf, 0x1c, 0x6a, 0x55, 0xed, 0xcb, 0x75, 0x2b, 0x76, 0xbe, + 0x5d, 0xa0, 0xc7, 0x3e, 0x4a, 0xff, 0xfb, 0xd4, 0x60, 0x46, 0x8d, 0x97, + 0x3e, 0x68, 0x3a, 0x0b, 0xf9, 0xc3, 0x70, 0x88, 0xac, 0xe7, 0x49, 0x7e, + 0x73, 0x6e, 0x21, 0x69, 0xa0, 0xe0, 0x0f, 0xef, 0x0d, 0xc1, 0x92, 0xb3, + 0x9e, 0xe9, 0xd8, 0x1d, 0xb8, 0xb7, 0xdc, 0xf3, 0xb1, 0x3d, 0x7f, 0x77, + 0xfe, 0xf5, 0xca, 0x96, 0xec, 0xf2, 0x9e, 0x73, 0x3e, 0x52, 0xe5, 0x67, + 0x1c, 0xe7, 0x77, 0x95, 0x7b, 0x9b, 0xde, 0x19, 0x55, 0xb1, 0x56, 0xce, + 0x16, 0x72, 0x96, 0xf3, 0xbb, 0x9f, 0xde, 0xa9, 0x6f, 0x76, 0xbd, 0x6c, + 0x2a, 0x52, 0x52, 0xd5, 0x9e, 0xe7, 0x3e, 0xfe, 0x59, 0xeb, 0x2c, 0xb0, + 0xb7, 0x6a, 0xc5, 0xd9, 0xab, 0xb3, 0x71, 0xa5, 0x9d, 0x9d, 0x3c, 0x1d, + 0x23, 0xf2, 0x41, 0x56, 0xc7, 0x55, 0xb7, 0x86, 0xee, 0xe7, 0x72, 0xb3, + 0x73, 0x5f, 0x71, 0xaa, 0x55, 0x8b, 0xa9, 0x4a, 0x80, 0xd0, 0xdb, 0xcc, + 0x00, 0x01, 0x22, 0x90, 0x00, 0x05, 0x00, 0x08, 0x60, 0x08, 0x80, 0x42, + 0x60, 0x19, 0x00, 0x90, 0x60, 0x34, 0x81, 0x26, 0x60, 0x73, 0x02, 0xa8, + 0x61, 0x8b, 0x87, 0xb6, 0x68, 0x88, 0x9a, 0x68, 0x61, 0x1b, 0x83, 0x7a, + 0x60, 0x64, 0x01, 0xc2, 0x62, 0xb3, 0x80, 0x82, 0x60, 0x94, 0x80, 0xf2, + 0x60, 0xed, 0x01, 0x24, 0x64, 0x5c, 0x12, 0xe0, 0x60, 0x5c, 0x01, 0xe0, + 0x60, 0x03, 0x80, 0x7a, 0x00, 0x10, 0x06, 0xef, 0x00, 0x26, 0x0a, 0x00, + 0x47, 0xe3, 0x40, 0x83, 0x91, 0x34, 0xe5, 0xd2, 0x06, 0x4e, 0x20, 0xb5, + 0x29, 0x4b, 0x53, 0x5d, 0xd9, 0x1b, 0x25, 0x57, 0xdf, 0xfb, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xef, 0xfa, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, + 0xff, 0xff, 0x51, 0x64, 0x4e, 0x26, 0xa7, 0x8d, 0xd8, 0xa0, 0x13, 0x80, + 0x9f, 0x91, 0x42, 0xa4, 0x69, 0xe8, 0x07, 0xe6, 0x1c, 0x59, 0xf5, 0x93, + 0xc8, 0xa4, 0x1f, 0x32, 0x06, 0x06, 0xb0, 0x6e, 0xa6, 0x62, 0x49, 0xea, + 0x26, 0x27, 0x23, 0x52, 0xc6, 0xa8, 0xf1, 0x02, 0x66, 0x0e, 0x90, 0x0c, + 0x46, 0x1c, 0xb8, 0x83, 0xe6, 0xf2, 0x09, 0xf9, 0xe6, 0x14, 0x28, 0x0d, + 0x06, 0x10, 0xd0, 0x76, 0x46, 0x4c, 0xa1, 0x53, 0x46, 0x0b, 0x30, 0x24, + 0xa6, 0x15, 0x38, 0x3c, 0x27, 0x1c, 0x42, 0x46, 0x05, 0x08, 0xd3, 0x8f, + 0x05, 0xc2, 0x3e, 0x4e, 0x2d, 0x50, 0x62, 0xe1, 0x26, 0x06, 0x2a, 0x22, + 0x02, 0x79, 0xc8, 0x03, 0x1f, 0xa8, 0xa3, 0x2a, 0x6a, 0xcb, 0xf9, 0xcb, + 0x4c, 0xb5, 0x4a, 0xb9, 0xa2, 0xb0, 0xe3, 0x56, 0x7b, 0x59, 0x43, 0x24, + 0x60, 0x33, 0x4a, 0x85, 0xdf, 0x79, 0xde, 0x59, 0xb8, 0x2d, 0xd4, 0x86, + 0xef, 0x40, 0xb0, 0xec, 0x56, 0x7a, 0x06, 0xfe, 0xc1, 0x4f, 0x84, 0x35, + 0xf3, 0xf6, 0x30, 0xcf, 0xf5, 0x62, 0xcd, 0xac, 0x77, 0x35, 0x72, 0xdd, + 0x0c, 0xcd, 0x34, 0xc4, 0x46, 0xf4, 0xb6, 0x57, 0x4f, 0x3b, 0x6f, 0x1b, + 0xf4, 0xf5, 0x27, 0x25, 0xd3, 0x52, 0xcc, 0x29, 0xe9, 0xa2, 0x5a, 0xb7, + 0x25, 0xb3, 0x4e, 0xff, 0x5b, 0x8d, 0x5c, 0xa3, 0x8c, 0x46, 0xe9, 0xf0, + 0x8f, 0x3c, 0x32, 0xe8, 0x76, 0x62, 0x57, 0x18, 0x96, 0x5b, 0x7a, 0x2d, + 0x50, 0xd7, 0x80, 0x6c, 0xc6, 0x79, 0x6e, 0x7a, 0x27, 0x06, 0xcc, 0xe2, + 0xfa, 0xd7, 0xdd, 0xd9, 0x24, 0x8e, 0x23, 0x1f, 0xaf, 0x5a, 0xbc, 0x82, + 0x09, 0x95, 0xd5, 0xb5, 0x00, 0xe5, 0x0d, 0x47, 0x9e, 0x6b, 0x4e, 0x26, + 0x32, 0xe8, 0xd5, 0x4b, 0x74, 0x16, 0x26, 0x6b, 0xe3, 0x4a, 0xfd, 0xdd, + 0xab, 0x66, 0x5b, 0x49, 0x66, 0x7f, 0x1b, 0xb4, 0xce, 0x98, 0x38, 0x6e, + 0xac, 0x76, 0x5d, 0x2b, 0x96, 0x22, 0x32, 0xcd, 0xb9, 0x7a, 0x53, 0x23, + 0xc2, 0x29, 0x2c, 0x8d, 0x4e, 0x49, 0x5a, 0xc8, 0x77, 0xa5, 0xf5, 0xa1, + 0xaa, 0x48, 0xe3, 0x3f, 0x6f, 0xa3, 0x30, 0xc8, 0x4f, 0x2c, 0x01, 0x53, + 0x28, 0x2a, 0x01, 0x8c, 0x04, 0x02, 0x4c, 0x25, 0x0e, 0x8c, 0x8e, 0x83, + 0xcf, 0xd2, 0x19, 0xcc, 0xca, 0x0b, 0x40, 0x22, 0xf1, 0x9e, 0xc6, 0x40, + 0xc8, 0x22, 0x60, 0x29, 0xfc, 0x75, 0xa9, 0x62, 0x6e, 0x40, 0xb8, 0x60, + 0xd8, 0x2a, 0x0d, 0xf0, 0x35, 0x79, 0x30, 0x1f, 0x20, 0xa5, 0xc8, 0x81, + 0x4d, 0x0c, 0xdc, 0xe9, 0xad, 0x90, 0x32, 0x41, 0x6b, 0x51, 0xaa, 0x91, + 0x5b, 0x21, 0xa9, 0x24, 0xfa, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x28, 0x01, + 0x04, 0xdd, 0xac, 0x2e, 0x33, 0xaf, 0xe2, 0x90, 0x5d, 0xb5, 0x45, 0x05, + 0xaa, 0x68, 0x00, 0x03, 0x03, 0xe4, 0x20, 0x13, 0x31, 0xc0, 0x39, 0xa3, + 0x32, 0x38, 0xae, 0xc3, 0x23, 0x6c, 0x62, 0x73, 0x03, 0x04, 0x14, 0xc3, + 0x02, 0x4c, 0xd7, 0x73, 0x2b, 0x6d, 0x14, 0x43, 0x02, 0x1c, 0x1b, 0xb3, + 0x05, 0x64, 0x10, 0xf3, 0x07, 0x48, 0x7d, 0x93, 0x02, 0xbc, 0x07, 0xf3, + 0x0a, 0xa8, 0x35, 0x23, 0x55, 0xcc, 0x75, 0x63, 0x09, 0xd0, 0x1a, 0xa3, + 0x02, 0x0c, 0x06, 0x33, 0xbd, 0x38, 0xc9, 0xaf, 0x32, 0x85, 0x0b, 0xd0, + 0x89, 0x49, 0x10, 0xae, 0x9d, 0xc6, 0xe5, 0x83, 0x66, 0x9c, 0xb1, 0x4c, + 0xd7, 0x1d, 0x46, 0x76, 0xd8, 0x9f, 0xe6, 0xbf, 0x2f, 0x81, 0x54, 0x3a, + 0x04, 0x85, 0x27, 0x1b, 0x3b, 0x6c, 0x2e, 0xd4, 0x06, 0xa7, 0xd8, 0x3b, + 0x3e, 0xbf, 0x38, 0xec, 0x3f, 0x2e, 0xec, 0xbf, 0x3d, 0x54, 0xbf, 0x95, + 0x4e, 0xea, 0xa7, 0x5c, 0xb3, 0x99, 0x64, 0xc4, 0xd7, 0x81, 0x8f, 0x68, + 0x4a, 0xd8, 0xb1, 0x27, 0xad, 0xff, 0xfb, 0xd4, 0x60, 0x44, 0x0d, 0x97, + 0xef, 0x6d, 0xb9, 0x13, 0xfa, 0x7b, 0x70, 0x77, 0xcc, 0xe7, 0x79, 0x7a, + 0x8d, 0x6e, 0x5a, 0x4d, 0xb0, 0xea, 0x0f, 0xe5, 0x8d, 0xc2, 0x65, 0x34, + 0x1c, 0xc5, 0xfa, 0x35, 0xb8, 0xda, 0x9a, 0xfd, 0x20, 0xdf, 0x12, 0x37, + 0xbe, 0x82, 0xa8, 0x7c, 0xc3, 0x23, 0x3d, 0xd7, 0x0b, 0x87, 0xb1, 0x19, + 0xb2, 0xdb, 0x49, 0xe7, 0x72, 0x7e, 0xc1, 0x97, 0xcc, 0x0d, 0x70, 0x21, + 0xb5, 0xba, 0x7e, 0xca, 0xfb, 0x2d, 0xac, 0x8e, 0xa1, 0x3c, 0x78, 0xc1, + 0x05, 0xa6, 0x93, 0x3f, 0x87, 0x19, 0x5b, 0x0d, 0x74, 0xf9, 0xaa, 0xd4, + 0x61, 0x66, 0xa4, 0xb9, 0x85, 0x56, 0x4b, 0x31, 0x3d, 0xf9, 0x64, 0xca, + 0xc2, 0x9e, 0x6d, 0x44, 0x48, 0xd5, 0xad, 0x5b, 0xb9, 0xa3, 0xae, 0xaf, + 0xe6, 0xa9, 0xee, 0x12, 0x09, 0xa1, 0xb3, 0x6f, 0x8a, 0xea, 0x69, 0xf3, + 0xfb, 0x36, 0x31, 0xb7, 0x69, 0x70, 0xdd, 0x32, 0x48, 0xf0, 0x9b, 0x11, + 0xf2, 0xd6, 0x0a, 0x26, 0x08, 0x0d, 0xf1, 0xe1, 0xc5, 0x87, 0xf7, 0xa9, + 0xe1, 0xdd, 0x74, 0x00, 0x00, 0x95, 0x20, 0x00, 0x2a, 0xa9, 0x08, 0x02, + 0x0c, 0x80, 0xb8, 0x00, 0x0e, 0x8c, 0x04, 0x42, 0x6c, 0xc1, 0x68, 0xb7, + 0x0d, 0x20, 0x0b, 0xa4, 0xc2, 0x08, 0x30, 0x0c, 0x19, 0x41, 0x7c, 0xc0, + 0x78, 0x52, 0x4c, 0x0a, 0x02, 0x70, 0xc1, 0x44, 0xca, 0xcd, 0xe6, 0xd2, + 0x6c, 0xc7, 0x00, 0x52, 0xcc, 0x0d, 0xc1, 0x48, 0x10, 0xb3, 0x04, 0x25, + 0x02, 0xcf, 0x87, 0xce, 0x1d, 0x28, 0x6f, 0xe4, 0x54, 0x87, 0xa7, 0x2a, + 0x13, 0x84, 0xf9, 0x7e, 0x81, 0xe3, 0x44, 0x28, 0xeb, 0x52, 0x9a, 0xba, + 0x95, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0x69, 0xbb, 0x91, 0x01, 0x0b, 0x36, 0x51, + 0xca, 0x01, 0xb0, 0x46, 0xea, 0xfc, 0xac, 0x2e, 0xf7, 0x37, 0x97, 0x00, + 0x4c, 0xac, 0x71, 0x80, 0xbc, 0x08, 0x29, 0x8c, 0x0e, 0x22, 0x01, 0x95, + 0xee, 0x1b, 0xc1, 0x9f, 0x42, 0x0c, 0x09, 0x82, 0xce, 0x09, 0x51, 0x84, + 0xf8, 0x12, 0xb9, 0xad, 0xd4, 0x0f, 0x79, 0x85, 0x94, 0x00, 0x99, 0x80, + 0xb8, 0x04, 0x49, 0x88, 0x26, 0x1c, 0xe1, 0x81, 0x12, 0x08, 0x41, 0x80, + 0xe6, 0x08, 0xd9, 0x92, 0xa0, 0x37, 0xb9, 0x80, 0xb6, 0x05, 0x59, 0x80, + 0x66, 0x02, 0x81, 0xa1, 0xc9, 0x64, 0x05, 0x41, 0x53, 0xec, 0xb2, 0x5f, + 0x0c, 0xbf, 0x10, 0xdc, 0x37, 0x27, 0xc6, 0xb5, 0x24, 0xa6, 0x2f, 0x2d, + 0xb5, 0x2a, 0x7d, 0xe4, 0xb0, 0x1c, 0xdc, 0x9e, 0x54, 0xd9, 0x29, 0xee, + 0x5b, 0xed, 0x5d, 0x5b, 0xdf, 0xe5, 0x86, 0x77, 0x3e, 0xa5, 0xfe, 0xe3, + 0x7f, 0x78, 0xe7, 0xaa, 0x64, 0xdd, 0xec, 0x7f, 0x21, 0xa3, 0x2e, 0xcf, + 0xd2, 0x06, 0xa9, 0x34, 0x6e, 0xd4, 0xac, 0x59, 0x58, 0xf1, 0x09, 0xfc, + 0x61, 0xa7, 0x6d, 0xd2, 0xf4, 0x4d, 0x4e, 0xd3, 0xeb, 0x32, 0xc7, 0xd5, + 0xa6, 0x9c, 0xc6, 0x72, 0xac, 0xf5, 0x7d, 0x33, 0x8e, 0xb7, 0x5a, 0xf4, + 0x72, 0x8b, 0x9d, 0x9f, 0x8b, 0x69, 0xae, 0xb3, 0xd7, 0x4f, 0x3e, 0xe3, + 0x94, 0xa5, 0x5a, 0x5d, 0xef, 0x43, 0x2d, 0x47, 0x8f, 0xd2, 0xd4, 0x31, + 0x75, 0x7e, 0x6c, 0xb9, 0x5e, 0x39, 0x0e, 0xdd, 0x96, 0xe3, 0xa9, 0x6d, + 0x45, 0xe1, 0xcc, 0xe5, 0xee, 0x53, 0x75, 0x08, 0x3f, 0x6e, 0xcc, 0x44, + 0xc8, 0x3f, 0x04, 0x2d, 0x74, 0xd2, 0xcc, 0xed, 0x99, 0x40, 0x18, 0x01, + 0xd1, 0x60, 0x0f, 0x83, 0x00, 0x7c, 0x30, 0x1d, 0x40, 0x01, 0x30, 0x3d, + 0x00, 0x2e, 0x30, 0xc1, 0x46, 0x07, 0x36, 0x8e, 0x48, 0x63, 0x30, 0xd2, + 0x40, 0x1b, 0x30, 0x44, 0x80, 0x00, 0x30, 0x1f, 0xc1, 0x4c, 0x30, 0x0f, + 0x01, 0x0b, 0x30, 0x0f, 0x01, 0x04, 0x35, 0x67, 0x8c, 0xa9, 0x31, 0x72, + 0xc1, 0x75, 0x30, 0x3b, 0x80, 0x2c, 0x03, 0xca, 0x40, 0x52, 0x00, 0x5a, + 0x78, 0x21, 0x0a, 0x17, 0x60, 0xcd, 0x0b, 0x8c, 0x54, 0x8a, 0x43, 0x34, + 0x66, 0x4c, 0x15, 0xe4, 0xd1, 0xf2, 0xc1, 0x83, 0x98, 0xa2, 0x64, 0x91, + 0x7a, 0x82, 0xe8, 0xd0, 0xd6, 0xc9, 0xb6, 0x8e, 0xbf, 0xff, 0xff, 0xfd, + 0x4a, 0xff, 0xff, 0xff, 0x7f, 0xeb, 0xff, 0x5f, 0xaa, 0xa5, 0xfe, 0x96, + 0xaf, 0xfa, 0xeb, 0xd0, 0x6e, 0xd5, 0xf5, 0xa2, 0xc6, 0xa7, 0x58, 0x77, + 0x08, 0xd8, 0x5c, 0xc7, 0x21, 0x48, 0x9a, 0x68, 0x6a, 0x0d, 0xb1, 0x45, + 0x27, 0x66, 0x45, 0x9e, 0x9b, 0x92, 0x00, 0x08, 0x55, 0x93, 0x09, 0x21, + 0xee, 0x0c, 0xe1, 0x73, 0x2e, 0x17, 0x6a, 0x30, 0x45, 0x11, 0x73, 0x7b, + 0x48, 0xd7, 0x33, 0x8e, 0x0f, 0x03, 0xf9, 0x12, 0xd2, 0x31, 0xe3, 0x10, + 0x53, 0x06, 0x48, 0x18, 0x35, 0xd3, 0x8f, 0xd3, 0x02, 0x71, 0x36, 0x30, + 0xe5, 0x07, 0xc3, 0x4f, 0x82, 0x35, 0x31, 0x0c, 0x08, 0x93, 0x18, 0xf1, + 0xd6, 0x35, 0x03, 0x47, 0x43, 0x24, 0xf0, 0xee, 0x30, 0x6c, 0x04, 0x93, + 0x7e, 0x00, 0x50, 0xa8, 0xf4, 0xd7, 0x21, 0xa7, 0xa5, 0x7d, 0x33, 0x06, + 0x51, 0x15, 0x80, 0xa7, 0x22, 0xb2, 0xd7, 0x9b, 0x4f, 0x0c, 0x0b, 0x34, + 0xee, 0xbb, 0xb9, 0xc6, 0x9f, 0x97, 0xef, 0x19, 0x36, 0xa7, 0xa8, 0xed, + 0x50, 0xc8, 0x28, 0xa3, 0x12, 0xfa, 0xf2, 0xc9, 0x8e, 0x7f, 0xdd, 0xb5, + 0x9d, 0xce, 0xe1, 0xca, 0xea, 0xd8, 0xb5, 0xf3, 0x24, 0xf8, 0x87, 0x88, + 0x31, 0x9e, 0xcf, 0x01, 0xf5, 0xf6, 0xdb, 0xe7, 0x96, 0x2e, 0x59, 0xe1, + 0xb8, 0xd7, 0x32, 0x5f, 0x2f, 0xff, 0xfb, 0xd4, 0x60, 0x41, 0x0f, 0xf6, + 0xde, 0x6a, 0x3a, 0x03, 0xd9, 0x7b, 0x70, 0x98, 0x8c, 0xe7, 0x10, 0x7e, + 0x93, 0x6e, 0x5a, 0xd9, 0xac, 0xe8, 0x0f, 0x65, 0xed, 0xc2, 0x6b, 0x33, + 0xdc, 0x41, 0xfa, 0x41, 0xb8, 0xdc, 0x37, 0x76, 0xb9, 0xa1, 0xd9, 0xc6, + 0x2c, 0xf5, 0x7d, 0x16, 0x90, 0x5e, 0xbc, 0x6d, 0x66, 0xbb, 0x93, 0xfd, + 0x39, 0xc7, 0x78, 0xdc, 0xf2, 0xb4, 0xdc, 0x1c, 0x4b, 0x16, 0x48, 0x51, + 0xa5, 0x83, 0x46, 0x3b, 0xba, 0x8c, 0xf3, 0x50, 0x63, 0x62, 0x33, 0xb9, + 0x36, 0xfb, 0x31, 0xde, 0x5b, 0x1e, 0xd1, 0xe1, 0xf8, 0x35, 0x96, 0x34, + 0x8d, 0x50, 0xa9, 0x7a, 0x62, 0x8e, 0x5a, 0x7e, 0x3b, 0x27, 0x81, 0x4b, + 0xf1, 0x15, 0xb5, 0x63, 0xe6, 0x6d, 0x51, 0xe6, 0x5f, 0xb4, 0xa2, 0x87, + 0x43, 0xf7, 0xd9, 0xb4, 0x51, 0x1c, 0xb6, 0xad, 0x0e, 0xd6, 0x90, 0xc0, + 0x2b, 0x00, 0xc8, 0xc0, 0x16, 0x01, 0x74, 0xc0, 0x15, 0x02, 0x70, 0xc0, + 0x16, 0x04, 0x7c, 0xc0, 0x4f, 0x0a, 0x30, 0xc1, 0x5c, 0x46, 0x04, 0xc9, + 0xb4, 0x5d, 0x60, 0xc0, 0x40, 0x0b, 0xb4, 0xc0, 0x02, 0x09, 0x78, 0xc3, + 0x1d, 0x02, 0x6c, 0xc0, 0x73, 0x05, 0x94, 0xc1, 0x40, 0x16, 0xc0, 0xd3, + 0xef, 0x52, 0xc0, 0xc5, 0xdf, 0x0b, 0x10, 0xc0, 0xce, 0x03, 0x8c, 0x0e, + 0x8e, 0x80, 0x33, 0x50, 0x46, 0x48, 0x34, 0x10, 0xb1, 0x60, 0xc1, 0x23, + 0x48, 0xa8, 0x5a, 0x65, 0x91, 0xac, 0x82, 0x8c, 0xcf, 0x33, 0x54, 0xcc, + 0xc8, 0xa4, 0xe8, 0x7f, 0xad, 0xbf, 0xf5, 0xd5, 0xff, 0xed, 0xd5, 0xd9, + 0x1b, 0xb5, 0xfd, 0x9b, 0xeb, 0xd0, 0xea, 0xb7, 0xf6, 0xbb, 0x7b, 0x68, + 0x25, 0x5d, 0x7d, 0xff, 0xe8, 0xb7, 0xeb, 0xb5, 0x6b, 0xde, 0xa4, 0xba, + 0x46, 0xd4, 0xc5, 0x0a, 0x09, 0x40, 0xb6, 0x78, 0x80, 0x39, 0x7c, 0x2f, + 0xe8, 0xf2, 0x83, 0x2d, 0x7a, 0x13, 0xe9, 0x8b, 0xe1, 0x38, 0xac, 0xbc, + 0x4a, 0xa8, 0x8d, 0x00, 0x09, 0x11, 0x2a, 0x82, 0x01, 0x90, 0xc5, 0x46, + 0xa6, 0x0d, 0xe5, 0x3a, 0x5c, 0xcd, 0xfd, 0x26, 0x8c, 0x13, 0xc7, 0x5c, + 0xc4, 0xb4, 0xf1, 0x0e, 0xb1, 0x5d, 0x60, 0x48, 0xbb, 0x82, 0x81, 0xfa, + 0x66, 0x6e, 0x09, 0x46, 0x10, 0xe0, 0x24, 0x62, 0x04, 0x2c, 0x26, 0x3b, + 0xaf, 0xd4, 0x4c, 0xc0, 0xa0, 0x60, 0xf2, 0x13, 0x04, 0x89, 0xb4, 0x84, + 0x65, 0x0d, 0xc5, 0xe3, 0x8e, 0x5b, 0x58, 0x2a, 0x18, 0xb4, 0x17, 0xa7, + 0x8a, 0xb4, 0xec, 0xa6, 0x58, 0xff, 0xbe, 0x13, 0x56, 0x20, 0x28, 0xf5, + 0xe9, 0xa8, 0x75, 0xfe, 0x88, 0xe1, 0x5a, 0x9b, 0x3a, 0xf2, 0xdd, 0x54, + 0xb1, 0x77, 0x3d, 0xe5, 0x6e, 0x9f, 0x1c, 0x2e, 0xf7, 0x76, 0xb6, 0xe3, + 0xde, 0x3e, 0xe9, 0x8b, 0xde, 0x5f, 0x58, 0x57, 0x96, 0xf0, 0x20, 0xeb, + 0x5b, 0xdd, 0x5b, 0xde, 0xe3, 0x31, 0x66, 0x7a, 0xc1, 0x16, 0xb3, 0xb5, + 0x55, 0xfd, 0xe2, 0x41, 0x7f, 0xd8, 0xe9, 0x98, 0x6f, 0x77, 0x02, 0x2c, + 0x55, 0xc3, 0xa8, 0x77, 0x8b, 0x9b, 0x45, 0x8a, 0xfe, 0x2c, 0x29, 0xdf, + 0xea, 0x35, 0x2b, 0x3e, 0x29, 0x88, 0xf3, 0xd2, 0x3c, 0x36, 0x7d, 0xe6, + 0x7b, 0xc0, 0xf0, 0x61, 0x6b, 0x0c, 0x77, 0x8b, 0xf5, 0x56, 0x98, 0x56, + 0x96, 0x27, 0x9a, 0x3d, 0xaf, 0x0e, 0x0e, 0xa6, 0x75, 0x4c, 0xe0, 0xe5, + 0x9e, 0x67, 0x6c, 0x2e, 0x01, 0xc0, 0xaa, 0x9d, 0xca, 0x67, 0x94, 0x82, + 0xd5, 0x06, 0x7b, 0x9e, 0xe1, 0xca, 0xf6, 0xb0, 0xaf, 0x53, 0xfd, 0x51, + 0x1a, 0x24, 0x95, 0xdd, 0x9f, 0x40, 0x30, 0x05, 0xc0, 0x00, 0x30, 0x10, + 0x00, 0x02, 0x30, 0x1f, 0x40, 0x31, 0x30, 0x34, 0x00, 0x7c, 0x30, 0x6f, + 0x41, 0x01, 0x31, 0x48, 0x86, 0x70, 0x3b, 0x29, 0x8b, 0x9f, 0x31, 0x55, + 0x01, 0xb6, 0x30, 0x7d, 0x41, 0x4b, 0x32, 0x04, 0x81, 0xf2, 0x30, 0x27, + 0x01, 0xc2, 0x30, 0x3b, 0xc4, 0x1f, 0x30, 0x52, 0x04, 0xa8, 0x31, 0x4a, + 0x80, 0x33, 0x30, 0x2d, 0x40, 0x22, 0x03, 0x7c, 0x34, 0x02, 0x99, 0x81, + 0x84, 0x1c, 0x31, 0x82, 0x12, 0x8c, 0xf0, 0xe6, 0x09, 0xfd, 0x35, 0x19, + 0x1e, 0x22, 0x26, 0xa8, 0x99, 0x94, 0x9a, 0x9c, 0xeb, 0x55, 0x4d, 0x6a, + 0xa4, 0xdd, 0x5f, 0xf5, 0xdd, 0xff, 0xff, 0xdb, 0x5f, 0xff, 0x7e, 0xae, + 0xff, 0xff, 0xd1, 0xaf, 0xee, 0xd5, 0xb5, 0x5e, 0xa5, 0x54, 0xce, 0xf7, + 0xe8, 0xff, 0x5d, 0x0b, 0x53, 0x76, 0x5a, 0x08, 0xba, 0xf3, 0x05, 0xdc, + 0x99, 0x06, 0xd5, 0x19, 0x23, 0xc5, 0x73, 0x42, 0xe8, 0xb2, 0xcf, 0xa4, + 0x65, 0x52, 0x55, 0xad, 0x15, 0x8d, 0x41, 0xb6, 0x5d, 0x2f, 0x90, 0x24, + 0xc8, 0xc1, 0xe4, 0x5b, 0x1e, 0x60, 0x0c, 0x30, 0x02, 0x94, 0xc0, 0x81, + 0xe1, 0xce, 0x4f, 0x5d, 0x6c, 0xe9, 0xa8, 0xb6, 0x8c, 0x6b, 0x02, 0x6c, + 0xc5, 0xa4, 0x71, 0xcc, 0xbc, 0x51, 0x64, 0xc2, 0x74, 0x03, 0x8c, 0x14, + 0x81, 0xd0, 0x46, 0x05, 0x41, 0x40, 0x07, 0x30, 0x57, 0x09, 0x53, 0x22, + 0xca, 0x7d, 0x30, 0x1a, 0x08, 0x31, 0xc0, 0x18, 0x15, 0x2a, 0xc4, 0x71, + 0x58, 0x7b, 0x9a, 0xd7, 0xa9, 0xac, 0x56, 0xa4, 0xa7, 0x87, 0x2b, 0x3a, + 0x30, 0xff, 0x62, 0x53, 0x93, 0x34, 0x92, 0x99, 0x88, 0x8c, 0x31, 0x4d, + 0x0c, 0xc7, 0xdf, 0xb8, 0xac, 0x62, 0x7a, 0xe4, 0xb2, 0x4f, 0x2c, 0xb5, + 0x62, 0x5f, 0xdc, 0x2c, 0xd2, 0x6e, 0xb7, 0x3b, 0xbf, 0xc2, 0x9a, 0xbc, + 0xd6, 0xf5, 0xa6, 0x77, 0x88, 0x1a, 0xb6, 0x3d, 0xa0, 0x5e, 0xfa, 0x9a, + 0x5a, 0xe6, 0x17, 0xae, 0xf7, 0xff, 0xfb, 0xd4, 0x60, 0x3c, 0x0d, 0x96, + 0xb8, 0x6f, 0xba, 0x8b, 0xd8, 0x7b, 0x70, 0x9b, 0x2c, 0xf7, 0x15, 0x7e, + 0x90, 0x6e, 0x1b, 0xd5, 0xaa, 0xe8, 0x4f, 0xe1, 0xed, 0xc2, 0x66, 0xb3, + 0x9c, 0x01, 0xf8, 0x35, 0xb9, 0x0a, 0x91, 0xa2, 0x5e, 0xf3, 0x56, 0x16, + 0xa1, 0xe6, 0x91, 0xf3, 0x19, 0x92, 0x2c, 0x2d, 0xc1, 0x93, 0x51, 0x68, + 0xc3, 0xd8, 0x71, 0x5d, 0xd6, 0x0d, 0xe3, 0xc4, 0x6f, 0x7a, 0xc9, 0x5d, + 0xc9, 0x02, 0x5c, 0xde, 0xb0, 0x9e, 0xdd, 0xaa, 0x0c, 0x79, 0xfe, 0x73, + 0xb7, 0xb1, 0xeb, 0x88, 0x51, 0xad, 0xbd, 0xbf, 0xdc, 0x7b, 0xe2, 0x6c, + 0x44, 0x7b, 0x7b, 0x6a, 0x97, 0xa6, 0xf3, 0x24, 0x2d, 0xc2, 0x89, 0x88, + 0x43, 0x09, 0x51, 0xdf, 0x67, 0x76, 0xb4, 0x8f, 0x69, 0xa5, 0x28, 0x7b, + 0x72, 0xb4, 0xd4, 0xdb, 0x9d, 0xb3, 0xbb, 0x3c, 0xd6, 0x6b, 0xef, 0x26, + 0xe9, 0x79, 0xfd, 0x25, 0x00, 0x2c, 0x01, 0x80, 0x98, 0x01, 0x99, 0x80, + 0x46, 0x02, 0x81, 0x80, 0x5c, 0x04, 0x29, 0x80, 0xa2, 0x07, 0xc1, 0x81, + 0x54, 0x12, 0x29, 0x84, 0x36, 0x7d, 0x51, 0xad, 0x06, 0x79, 0xc9, 0x85, + 0xbe, 0x13, 0x21, 0x80, 0x5e, 0x18, 0xf9, 0x8c, 0xe2, 0x1b, 0xc9, 0x81, + 0xb8, 0x02, 0x39, 0x81, 0xde, 0x05, 0x19, 0x8b, 0xd0, 0x0e, 0x99, 0x89, + 0x28, 0x02, 0xc9, 0x81, 0x2e, 0x00, 0x60, 0x12, 0xd2, 0x02, 0x88, 0xc1, + 0xc4, 0x44, 0x20, 0x13, 0xc9, 0x1c, 0x3a, 0x8b, 0x09, 0xb9, 0x81, 0x16, + 0x3a, 0x6c, 0x79, 0x99, 0x49, 0x1a, 0x22, 0x6e, 0x81, 0xe7, 0x64, 0xcf, + 0xb4, 0xeb, 0x57, 0x47, 0xfe, 0xff, 0xff, 0xea, 0xad, 0x7f, 0xed, 0x65, + 0xd4, 0xdd, 0x6d, 0xde, 0xff, 0x56, 0xa6, 0xaf, 0xef, 0xaf, 0xa5, 0xd9, + 0xf5, 0x69, 0x36, 0xaa, 0xfd, 0xbd, 0xae, 0x96, 0x85, 0x75, 0x2b, 0xee, + 0xa9, 0x18, 0x1a, 0xb4, 0xb4, 0x99, 0x17, 0x65, 0x83, 0x74, 0x46, 0xda, + 0x2e, 0xb6, 0xbd, 0x9a, 0x3e, 0x81, 0x18, 0x89, 0x4c, 0x89, 0xb1, 0x90, + 0x72, 0xe4, 0x23, 0x92, 0x06, 0x02, 0x98, 0x3c, 0xc6, 0x2a, 0x40, 0xc5, + 0x46, 0x44, 0x00, 0xcf, 0x06, 0x83, 0xa0, 0x2d, 0xe6, 0x0b, 0x10, 0x3f, + 0x86, 0x0a, 0x18, 0xec, 0x66, 0x67, 0xa8, 0x81, 0x06, 0x10, 0x78, 0x18, + 0x26, 0x03, 0x00, 0x16, 0x86, 0x0e, 0x30, 0x26, 0xc6, 0x00, 0x00, 0x10, + 0x22, 0x30, 0x3a, 0x8c, 0x16, 0x42, 0x60, 0x8c, 0x18, 0xf0, 0x18, 0x0c, + 0x03, 0xc0, 0x01, 0xc0, 0xca, 0x76, 0x57, 0xbb, 0xb6, 0xfa, 0xba, 0x6d, + 0xd9, 0xf9, 0x86, 0xa2, 0xed, 0xe2, 0xc3, 0xb9, 0x16, 0x2e, 0xc0, 0x2e, + 0xdc, 0x6f, 0xb3, 0x51, 0x18, 0xb2, 0xee, 0xa2, 0x86, 0x5d, 0xe6, 0x6e, + 0xe8, 0x46, 0xbb, 0x8e, 0xb9, 0x33, 0x28, 0x8b, 0x53, 0xc4, 0xe9, 0x33, + 0xad, 0xff, 0x6b, 0xfb, 0xcd, 0x59, 0xac, 0x2b, 0xdf, 0xeb, 0x3a, 0xcc, + 0x2d, 0xda, 0xb9, 0x89, 0x19, 0xf4, 0x48, 0x90, 0x58, 0x75, 0xaf, 0xaf, + 0x87, 0xf3, 0x45, 0x53, 0x3d, 0x7d, 0x68, 0x71, 0x77, 0x06, 0xef, 0x60, + 0x3d, 0x85, 0x2b, 0x54, 0x77, 0x70, 0x5a, 0xf1, 0xaa, 0x79, 0x66, 0xab, + 0x9c, 0xb1, 0x33, 0x02, 0x26, 0xb3, 0x25, 0xbc, 0x18, 0x53, 0x47, 0x81, + 0x5e, 0xdf, 0x12, 0xba, 0xf1, 0xf1, 0x1d, 0x53, 0x89, 0x27, 0xb7, 0x8b, + 0x1d, 0xca, 0xd1, 0xbd, 0x7b, 0x84, 0xb1, 0xb4, 0xe3, 0x57, 0xd3, 0x66, + 0x6c, 0xe2, 0x3d, 0x37, 0x4c, 0xc0, 0x80, 0xa2, 0x83, 0x88, 0xd7, 0xb8, + 0xbb, 0xa5, 0x5f, 0x6f, 0x31, 0x77, 0xba, 0x46, 0xcc, 0x26, 0xa3, 0xfb, + 0xda, 0x3d, 0xe5, 0x58, 0x8f, 0x1a, 0xdb, 0xaf, 0x86, 0xe8, 0x68, 0x06, + 0xc3, 0x00, 0x94, 0x01, 0xd3, 0x01, 0x48, 0x05, 0x03, 0x02, 0x6c, 0x09, + 0xf3, 0x04, 0xf8, 0x16, 0x23, 0x0f, 0x8c, 0x50, 0x93, 0x6c, 0xc4, 0xe8, + 0x83, 0x0f, 0x8c, 0x24, 0x13, 0x07, 0xf8, 0x15, 0x43, 0x09, 0x7c, 0x0c, + 0xf3, 0x06, 0xcc, 0x0e, 0x73, 0x06, 0x28, 0x16, 0x83, 0x0c, 0xac, 0x98, + 0x13, 0x05, 0xf8, 0x08, 0xf3, 0x00, 0x58, 0x01, 0xa0, 0x05, 0x45, 0x40, + 0x2c, 0x24, 0x8f, 0x1c, 0x05, 0xb1, 0xd4, 0x51, 0xbb, 0x99, 0x9f, 0x49, + 0x25, 0x9b, 0x29, 0xd4, 0xe8, 0x3b, 0xa9, 0x6a, 0xad, 0x2b, 0x2d, 0x17, + 0xea, 0xfe, 0xbd, 0x5f, 0xfa, 0xb5, 0x7f, 0x4a, 0xdf, 0xaf, 0xba, 0xee, + 0xef, 0x5b, 0x6a, 0xe9, 0x56, 0x8b, 0xb3, 0x33, 0x57, 0x57, 0xf5, 0x54, + 0xeb, 0xdf, 0xd2, 0x41, 0x77, 0x6a, 0x96, 0x8b, 0x2d, 0x0d, 0x2a, 0x3b, + 0x26, 0xcb, 0xee, 0xeb, 0x54, 0x6a, 0x12, 0x62, 0x8b, 0x85, 0xa4, 0xfa, + 0x80, 0x7c, 0x0e, 0x24, 0x77, 0x5b, 0x24, 0x92, 0xd4, 0x31, 0xc1, 0x59, + 0x54, 0x1f, 0x10, 0x27, 0x8d, 0x65, 0x11, 0x55, 0x00, 0x00, 0x0a, 0xf4, + 0x00, 0x0c, 0x08, 0x40, 0x56, 0x0c, 0x67, 0xd1, 0x46, 0xcc, 0x69, 0xe1, + 0x18, 0x0c, 0xd4, 0xa1, 0x1a, 0xcc, 0x08, 0x10, 0x34, 0x8c, 0x2f, 0xc1, + 0x87, 0x4d, 0x95, 0x22, 0xd9, 0x8c, 0x24, 0xe0, 0x3b, 0xcc, 0x0e, 0x90, + 0x2f, 0xcc, 0x09, 0xf0, 0xa4, 0x4c, 0x09, 0x70, 0x27, 0x8c, 0x18, 0x40, + 0x19, 0x8c, 0x39, 0x31, 0xb2, 0x40, 0xc2, 0x18, 0x0f, 0x01, 0x76, 0x03, + 0xa2, 0x67, 0x29, 0xa1, 0x69, 0x1f, 0xb6, 0xc4, 0xcc, 0x25, 0xf0, 0xd3, + 0xf0, 0xdb, 0xb5, 0xc5, 0x84, 0x7e, 0x60, 0x35, 0x43, 0x28, 0x5d, 0x2a, + 0x08, 0xe3, 0xbe, 0x02, 0x30, 0x29, 0x92, 0x34, 0x20, 0x1a, 0x0c, 0x60, + 0x54, 0x90, 0x97, 0x21, 0x88, 0xff, 0xfb, 0xd4, 0x60, 0x34, 0x89, 0xd7, + 0x99, 0x6a, 0x39, 0x4b, 0xf8, 0x63, 0x70, 0x7a, 0x4c, 0xe7, 0x36, 0x7a, + 0x4a, 0x6e, 0x21, 0x31, 0xb2, 0xe0, 0x4f, 0xe5, 0xed, 0xc1, 0xaf, 0xb2, + 0x1c, 0xc9, 0xe6, 0x9d, 0xb8, 0xa4, 0x2a, 0xa5, 0x81, 0x9e, 0xd8, 0x84, + 0xad, 0xeb, 0xd5, 0x04, 0xa6, 0x51, 0x28, 0x99, 0xbf, 0xae, 0xd7, 0xa7, + 0xba, 0xf8, 0xe6, 0x91, 0xd6, 0x96, 0x8b, 0xd7, 0x45, 0x78, 0xda, 0x79, + 0xc6, 0x1c, 0x58, 0xb9, 0x43, 0xcf, 0xa1, 0x9f, 0xb6, 0xfd, 0xd2, 0xc6, + 0xea, 0x25, 0x46, 0xd2, 0xf9, 0xb2, 0x12, 0x27, 0x4b, 0xe3, 0xeb, 0x0b, + 0xa0, 0x5d, 0x43, 0xdf, 0x61, 0x41, 0xd0, 0x96, 0xf2, 0x9c, 0x33, 0xba, + 0x88, 0x91, 0xc1, 0x1f, 0x45, 0x6b, 0x13, 0xdd, 0x54, 0xa5, 0x0d, 0x5f, + 0xae, 0x5a, 0xb0, 0xe9, 0xa4, 0xc5, 0xf3, 0x7e, 0x3c, 0x1d, 0x9f, 0x9d, + 0xe5, 0x8c, 0xb0, 0x49, 0x7e, 0x35, 0xaa, 0x58, 0x56, 0xfa, 0x67, 0x0e, + 0xf9, 0x73, 0xfd, 0x43, 0xba, 0xc6, 0xc5, 0x4b, 0x35, 0x5e, 0xba, 0x14, + 0x22, 0x6a, 0xbe, 0x65, 0xc4, 0x07, 0xe0, 0x61, 0xfa, 0x9d, 0x17, 0x00, + 0xcb, 0x54, 0x39, 0x59, 0x0a, 0x35, 0x8f, 0x47, 0x46, 0xd7, 0x19, 0x02, + 0x05, 0x80, 0x00, 0x30, 0x01, 0x00, 0x23, 0x00, 0x80, 0x0d, 0x30, 0x17, + 0x01, 0xe3, 0x02, 0xe0, 0x47, 0x30, 0x71, 0x0c, 0x63, 0x16, 0xe5, 0x91, + 0x3d, 0xb4, 0x42, 0xa3, 0x1e, 0x20, 0x9d, 0x30, 0x02, 0x20, 0x83, 0x15, + 0x54, 0x64, 0x30, 0xc8, 0x03, 0x43, 0x00, 0x10, 0x44, 0x30, 0xfa, 0x2e, + 0x43, 0x0f, 0x50, 0x05, 0x1e, 0x05, 0x90, 0x64, 0x86, 0x50, 0x97, 0x22, + 0xe5, 0x83, 0x3a, 0x08, 0xa2, 0xf5, 0xe7, 0x56, 0x8a, 0x8c, 0x37, 0x41, + 0x4b, 0x41, 0x6e, 0x8a, 0x91, 0x45, 0x2a, 0xd1, 0x5a, 0xff, 0xff, 0xff, + 0xf7, 0xdf, 0xff, 0xba, 0x7f, 0xfe, 0xc9, 0xff, 0xfe, 0xfb, 0xff, 0xfb, + 0xff, 0xf3, 0xfe, 0xff, 0xb7, 0xa6, 0x82, 0xd3, 0xa0, 0x2f, 0x17, 0x30, + 0x17, 0x89, 0x0f, 0xb3, 0x5d, 0x69, 0x17, 0x84, 0x47, 0x94, 0x16, 0xf1, + 0x12, 0xab, 0x01, 0x81, 0x3e, 0x1a, 0xd1, 0x96, 0x50, 0x03, 0x29, 0xa4, + 0xae, 0x95, 0x51, 0x96, 0xfa, 0x31, 0x49, 0x81, 0x8e, 0x13, 0x59, 0x85, + 0x20, 0x72, 0x71, 0xa8, 0x58, 0x99, 0x79, 0x82, 0x6c, 0x10, 0x51, 0x80, + 0x72, 0x02, 0x69, 0x87, 0x2e, 0x15, 0x81, 0x81, 0x90, 0x05, 0x11, 0x84, + 0x82, 0x0d, 0xf9, 0x82, 0x72, 0x1a, 0xb9, 0x85, 0xc2, 0x08, 0xb9, 0x80, + 0xc8, 0x02, 0x91, 0xd6, 0xa9, 0xb0, 0x80, 0x04, 0xd1, 0xa1, 0xd6, 0x93, + 0xf7, 0x19, 0x70, 0xde, 0x89, 0xb7, 0x89, 0xd6, 0x7f, 0x17, 0x2b, 0x5b, + 0x65, 0x4c, 0x64, 0x74, 0x32, 0xfe, 0xc3, 0x68, 0xa0, 0xcc, 0xa0, 0x85, + 0x01, 0x63, 0x32, 0x86, 0x52, 0xef, 0xb4, 0x96, 0x76, 0xd9, 0x51, 0xc5, + 0x76, 0xb7, 0x8d, 0x69, 0xd2, 0x8e, 0xbb, 0x36, 0x67, 0x27, 0x2a, 0x43, + 0xb5, 0x79, 0x5a, 0xf5, 0x35, 0x3d, 0x27, 0x79, 0x15, 0x9e, 0x23, 0xf7, + 0x36, 0xd6, 0x99, 0x1e, 0x4e, 0x8e, 0x7b, 0x3b, 0xce, 0xf6, 0x78, 0x7a, + 0x6a, 0x8f, 0xb6, 0x15, 0x23, 0xd5, 0x85, 0x7b, 0x73, 0xe8, 0x2a, 0xd6, + 0xd8, 0x88, 0xb5, 0x7c, 0x06, 0x66, 0x08, 0x6e, 0x70, 0xdf, 0xb7, 0xed, + 0x52, 0x78, 0x3e, 0x63, 0x5c, 0x77, 0xad, 0xa6, 0x92, 0xb5, 0x6e, 0x33, + 0x1c, 0x74, 0x43, 0xd4, 0xa5, 0xd7, 0x6a, 0xe6, 0x7f, 0x19, 0x7f, 0xd5, + 0x5d, 0xd5, 0x8c, 0xce, 0x6c, 0xaa, 0x95, 0x33, 0x86, 0xe2, 0x38, 0xb3, + 0x37, 0x48, 0xf5, 0xea, 0x45, 0x79, 0x53, 0x02, 0x25, 0x58, 0xd0, 0xd8, + 0xac, 0xea, 0xf9, 0xa5, 0x54, 0x38, 0xb0, 0xab, 0x37, 0x45, 0xc3, 0x83, + 0xdc, 0xb6, 0x60, 0x34, 0xe7, 0xbc, 0x05, 0xd3, 0x98, 0x5f, 0x9c, 0x6d, + 0xea, 0x3a, 0x3c, 0x4f, 0x45, 0xa4, 0x90, 0xe8, 0xa4, 0x48, 0x31, 0x3e, + 0x87, 0x3c, 0xa7, 0xea, 0x5e, 0xac, 0x89, 0x68, 0xd0, 0x9c, 0x9a, 0xa2, + 0x6d, 0x99, 0x4c, 0xd0, 0x22, 0xb8, 0x88, 0x00, 0x8c, 0x00, 0x40, 0x5c, + 0xc0, 0x60, 0x0f, 0x0c, 0x12, 0x42, 0x6c, 0xc4, 0x90, 0xfc, 0x8d, 0xbf, + 0x9a, 0x8c, 0xc3, 0x18, 0x3c, 0x8c, 0x4e, 0x42, 0xd4, 0xd9, 0x39, 0x25, + 0x4c, 0x2c, 0x80, 0xc8, 0xc3, 0x4c, 0x0b, 0x0c, 0x53, 0x44, 0xcc, 0xc2, + 0xe0, 0x10, 0x8c, 0x04, 0xc0, 0x04, 0x02, 0x80, 0x0f, 0x70, 0x5b, 0x06, + 0x82, 0x99, 0xa1, 0x5a, 0x77, 0xbe, 0xa5, 0x3a, 0xb4, 0x59, 0x27, 0x3c, + 0xad, 0x04, 0xb7, 0x52, 0xa8, 0x18, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x5f, + 0xef, 0xde, 0xda, 0xd7, 0xf6, 0xff, 0xfd, 0x3f, 0xfb, 0x6d, 0xeb, 0x6f, + 0x7f, 0xff, 0xf9, 0x84, 0x09, 0xd9, 0x94, 0x09, 0xaf, 0xfb, 0x4c, 0x28, + 0x78, 0x37, 0xad, 0xe0, 0x0c, 0x08, 0x90, 0xce, 0x8c, 0x81, 0xf0, 0xa3, + 0x0c, 0xcd, 0x42, 0xac, 0x8d, 0x48, 0xd0, 0x9c, 0x4c, 0x13, 0x90, 0x51, + 0x0c, 0x28, 0x92, 0x35, 0x0d, 0xad, 0xb1, 0x0f, 0x0c, 0x39, 0xb0, 0x15, + 0x0c, 0x03, 0x60, 0x1e, 0x0c, 0x4c, 0xc0, 0x3b, 0xcc, 0x07, 0xc0, 0x41, + 0x4c, 0x01, 0xa0, 0x88, 0x0c, 0x95, 0x41, 0x98, 0x8c, 0x15, 0x70, 0x47, + 0x8c, 0x01, 0xc0, 0x14, 0xc2, 0xb4, 0x14, 0x49, 0x60, 0x4a, 0x70, 0x80, + 0x35, 0x0d, 0x46, 0x66, 0x25, 0x71, 0x4d, 0xd9, 0xbb, 0x2d, 0x4f, 0xb4, + 0xc4, 0x6c, 0xc5, 0xe7, 0x51, 0xf4, 0x59, 0x72, 0x5c, 0x36, 0x44, 0xe9, + 0x30, 0x47, 0x85, 0xac, 0xc6, 0xff, 0xfb, 0xd4, 0x60, 0x31, 0x0d, 0xd8, + 0x73, 0x6e, 0xb8, 0x8b, 0xf8, 0xc3, 0x70, 0x6c, 0x0c, 0xe7, 0x20, 0x7a, + 0x4d, 0x6e, 0x1f, 0xf5, 0xa6, 0xe2, 0x4f, 0xe3, 0x0d, 0xc1, 0xf2, 0x33, + 0x9c, 0x89, 0xe8, 0x35, 0xb8, 0x9b, 0x57, 0xe5, 0x3e, 0x9d, 0xf7, 0xb6, + 0x53, 0x35, 0x0d, 0x4d, 0x46, 0x2e, 0x40, 0xf8, 0x46, 0xa3, 0x19, 0x4e, + 0xdd, 0xbb, 0x95, 0xf9, 0xba, 0xd7, 0xee, 0xe1, 0x66, 0x6a, 0x63, 0x3d, + 0xd8, 0x9f, 0xd4, 0xfc, 0xd4, 0xae, 0xfe, 0x55, 0xe2, 0xb6, 0x27, 0x6e, + 0x50, 0xd7, 0x95, 0xe5, 0x95, 0xba, 0x37, 0xff, 0x97, 0xe9, 0x65, 0x91, + 0x2e, 0x4a, 0x63, 0x31, 0x19, 0x1c, 0xfc, 0x9a, 0x51, 0x72, 0x51, 0xf5, + 0xe7, 0xad, 0x49, 0xe9, 0xa9, 0xed, 0xcc, 0x48, 0x21, 0xea, 0x1e, 0xca, + 0xbb, 0x4d, 0x3f, 0x4f, 0x16, 0x97, 0xcb, 0xe6, 0xef, 0x5e, 0x96, 0x67, + 0xab, 0xf1, 0x29, 0x75, 0xc9, 0x7f, 0x30, 0x9b, 0xa5, 0x90, 0xc8, 0xea, + 0x53, 0x5d, 0x81, 0xf3, 0x9a, 0x8e, 0xfc, 0xba, 0xe5, 0x8c, 0x2a, 0x58, + 0xb1, 0x2d, 0x88, 0xd5, 0xa2, 0x86, 0xa2, 0x12, 0xda, 0xb7, 0xf2, 0xbf, + 0x4d, 0x3b, 0x77, 0x3d, 0xc6, 0x23, 0x2e, 0x25, 0x7a, 0xf4, 0x54, 0xbb, + 0x5f, 0x8a, 0x7e, 0x41, 0x1e, 0xed, 0x5a, 0xb5, 0x29, 0xaa, 0xe3, 0x84, + 0x12, 0x50, 0xcf, 0xb7, 0x6a, 0x8f, 0x34, 0xbe, 0xb9, 0x7f, 0x93, 0xb4, + 0xb8, 0x56, 0xd4, 0xb6, 0x72, 0xcf, 0x37, 0xcc, 0x64, 0xd1, 0x95, 0x4c, + 0x90, 0xa6, 0x00, 0x20, 0x0c, 0x60, 0x30, 0x07, 0xa6, 0x10, 0x29, 0x7c, + 0x70, 0xf2, 0x7c, 0x86, 0x18, 0xe0, 0x4e, 0x61, 0x98, 0x37, 0x66, 0xf6, + 0x25, 0x44, 0x61, 0x86, 0x0a, 0xc6, 0x0e, 0x43, 0x06, 0x67, 0x56, 0x68, + 0x66, 0x14, 0x61, 0x6a, 0x2a, 0x05, 0x80, 0xd2, 0xc3, 0xf8, 0x22, 0x64, + 0x98, 0xde, 0x2d, 0x9a, 0x19, 0x29, 0x37, 0x45, 0x37, 0x53, 0xae, 0xc8, + 0xbf, 0xe8, 0x5d, 0xaf, 0xb7, 0xff, 0xff, 0xff, 0xfd, 0xdb, 0xfb, 0x76, + 0xff, 0xed, 0xfa, 0xfe, 0xff, 0xea, 0xda, 0xaf, 0xbf, 0xff, 0xfa, 0x9b, + 0xea, 0xdf, 0xdb, 0xa4, 0x25, 0x77, 0x24, 0xf1, 0x39, 0x1b, 0x97, 0xaf, + 0xb5, 0x44, 0xf0, 0x6a, 0x65, 0x93, 0xac, 0x24, 0xa6, 0xeb, 0x21, 0x80, + 0x3a, 0x0b, 0xd1, 0x8d, 0xec, 0x2e, 0xb9, 0x88, 0x42, 0x77, 0x29, 0xa6, + 0x2a, 0x1f, 0xc1, 0x83, 0xf2, 0x04, 0xa1, 0x81, 0xa6, 0x17, 0xb9, 0x81, + 0x86, 0x29, 0xe1, 0x80, 0xd2, 0x04, 0xa8, 0x88, 0x0d, 0x93, 0x12, 0xd4, + 0x14, 0x33, 0x02, 0x44, 0x00, 0xc3, 0x03, 0x00, 0x0b, 0xb3, 0x33, 0xc4, + 0x42, 0x63, 0x0c, 0x98, 0x01, 0xe1, 0xa0, 0x2e, 0xcf, 0x48, 0x16, 0x5d, + 0x03, 0xce, 0xdb, 0xad, 0x0a, 0x15, 0xe9, 0x14, 0x6d, 0xe4, 0x31, 0x0a, + 0x45, 0x19, 0x82, 0xa7, 0x1e, 0x65, 0xe8, 0xcf, 0x23, 0x4d, 0x53, 0x74, + 0x6f, 0x33, 0xa4, 0xb2, 0xe9, 0x19, 0x4c, 0x82, 0x04, 0x88, 0xbb, 0x90, + 0x53, 0xef, 0x2c, 0x6e, 0xf0, 0x2c, 0xb2, 0x01, 0xaf, 0x00, 0xc6, 0x5f, + 0x98, 0xf4, 0x52, 0x59, 0x14, 0xc7, 0x3d, 0x57, 0xd7, 0xcc, 0x53, 0x57, + 0xb5, 0x6a, 0x8b, 0x19, 0xc8, 0x6e, 0xcd, 0x5a, 0xd8, 0xdc, 0x94, 0xd4, + 0xd5, 0x1c, 0x77, 0xe5, 0xf7, 0x65, 0xf1, 0xcc, 0x28, 0x63, 0xf6, 0x61, + 0xf9, 0x2e, 0x55, 0xa8, 0x68, 0x6f, 0xe3, 0x39, 0x6e, 0xa5, 0xd9, 0x5d, + 0x8d, 0xdb, 0xb5, 0x10, 0x95, 0x51, 0x4a, 0xe3, 0xba, 0x80, 0xa5, 0x36, + 0x77, 0x72, 0x76, 0xe4, 0xfc, 0xff, 0xc9, 0xa2, 0x16, 0x65, 0x32, 0x99, + 0x24, 0xf6, 0xa1, 0x8c, 0xe2, 0x76, 0xe5, 0x94, 0xd5, 0x63, 0x55, 0x22, + 0xd6, 0x6d, 0x42, 0xa5, 0xd0, 0xdc, 0x52, 0x4d, 0x19, 0xff, 0xe6, 0xec, + 0x7e, 0x3c, 0xb7, 0x9d, 0xc8, 0x45, 0xec, 0xab, 0x4c, 0xc6, 0x60, 0x9a, + 0xb8, 0xcc, 0xe1, 0x31, 0x1e, 0x7e, 0x22, 0xf1, 0xda, 0xfb, 0xb2, 0x42, + 0xc8, 0xc5, 0x7a, 0x93, 0xf1, 0xa9, 0xdd, 0x63, 0x66, 0xbc, 0xa1, 0x84, + 0x97, 0x6e, 0xc5, 0x59, 0x55, 0x6c, 0xa7, 0x24, 0xd1, 0xfe, 0xcd, 0x59, + 0xa2, 0x64, 0x12, 0xb5, 0x5b, 0x90, 0x9a, 0x0d, 0x00, 0xe3, 0x00, 0xa0, + 0x4b, 0x30, 0x7f, 0x35, 0xe3, 0x25, 0x63, 0x0b, 0x30, 0x2e, 0x02, 0x03, + 0x03, 0xc1, 0xb6, 0x33, 0xd0, 0x07, 0xf3, 0x04, 0x00, 0x31, 0x30, 0x25, + 0x00, 0x93, 0x6c, 0xa2, 0x37, 0x32, 0xb1, 0x03, 0xf3, 0x02, 0x00, 0x00, + 0x0b, 0x66, 0x38, 0x04, 0x68, 0x53, 0x2e, 0x1b, 0x98, 0x13, 0xea, 0x42, + 0xa4, 0x13, 0x64, 0xcc, 0xd2, 0x45, 0xdd, 0x23, 0x53, 0xd4, 0x53, 0x35, + 0x45, 0x0e, 0xcd, 0x66, 0xfd, 0xff, 0xff, 0xff, 0xf5, 0x6d, 0xfe, 0xa5, + 0x7e, 0xab, 0x5b, 0xff, 0xbe, 0xf5, 0x6c, 0xaf, 0x56, 0xbf, 0xea, 0xf7, + 0xb2, 0xbe, 0xd6, 0xa5, 0xaf, 0xaa, 0xab, 0xc9, 0xe3, 0x9c, 0xa2, 0xa2, + 0x51, 0x34, 0x80, 0x7e, 0x4b, 0x64, 0xfd, 0x36, 0x16, 0x60, 0xb7, 0xba, + 0x03, 0xc6, 0xb1, 0xbc, 0x86, 0xa5, 0x30, 0x12, 0x21, 0xa3, 0x45, 0x97, + 0x5c, 0x39, 0x47, 0x6b, 0x73, 0x40, 0x73, 0xc2, 0x30, 0x38, 0x16, 0x33, + 0x0e, 0x35, 0x5b, 0x3a, 0xe9, 0x5a, 0x31, 0xa3, 0x03, 0x30, 0x88, 0x0c, + 0x23, 0x25, 0x21, 0xf2, 0x30, 0x1c, 0x00, 0xd3, 0x06, 0x31, 0x65, 0x37, + 0x86, 0x69, 0x93, 0x06, 0x80, 0xad, 0x25, 0x02, 0x00, 0x7d, 0x82, 0xc0, + 0xe3, 0x21, 0xc5, 0x84, 0xe0, 0x44, 0x20, 0x89, 0x22, 0x1c, 0x8c, 0x3c, + 0x4b, 0xc1, 0xf2, 0xdb, 0xde, 0xff, 0xfb, 0xd4, 0x60, 0x23, 0x8f, 0x97, + 0x1b, 0x70, 0x39, 0x83, 0xcf, 0x7b, 0x70, 0x98, 0x8c, 0xe7, 0x05, 0x7e, + 0x8d, 0x6e, 0x1c, 0x21, 0xbe, 0xe4, 0x0f, 0x61, 0x8d, 0xc2, 0x0d, 0x33, + 0x9c, 0x49, 0xe6, 0xb5, 0xb8, 0x48, 0x8b, 0x49, 0x25, 0x8d, 0xf3, 0xe1, + 0x3e, 0x8e, 0x61, 0x35, 0x23, 0x2e, 0xdb, 0x55, 0xab, 0xd1, 0xf1, 0x49, + 0x21, 0xc0, 0x84, 0xe3, 0x67, 0x19, 0xde, 0xcd, 0x49, 0xe2, 0x4d, 0x5a, + 0x6f, 0x57, 0x92, 0x9a, 0xd5, 0xf4, 0xfa, 0xfb, 0x89, 0x5d, 0x42, 0x8f, + 0xb7, 0x93, 0x35, 0x63, 0x11, 0x58, 0xdf, 0xd6, 0xb2, 0xfb, 0xbd, 0x7f, + 0x2c, 0x1c, 0x78, 0xcd, 0xaa, 0xdd, 0x2b, 0x24, 0x6e, 0x5d, 0xc4, 0x87, + 0x86, 0xab, 0xc0, 0xdc, 0x6d, 0x45, 0x83, 0xdc, 0xdd, 0x37, 0x59, 0x96, + 0x90, 0x25, 0x65, 0x9e, 0x46, 0x67, 0xca, 0x8b, 0xc4, 0x5e, 0x66, 0x92, + 0x06, 0xfb, 0xc8, 0x51, 0xa6, 0x8e, 0xfd, 0xf3, 0xfc, 0x66, 0xaf, 0x65, + 0xcb, 0xc8, 0xfa, 0x62, 0x84, 0xfa, 0x25, 0x77, 0x79, 0x34, 0xd9, 0x0e, + 0x06, 0xa4, 0x6b, 0xb5, 0x10, 0xf8, 0x70, 0xda, 0xd8, 0xb6, 0x42, 0xcd, + 0xa8, 0x56, 0x83, 0x07, 0xe2, 0x2e, 0x34, 0xda, 0xf4, 0x39, 0xa5, 0xab, + 0x54, 0xaf, 0xd1, 0x7b, 0x8f, 0x77, 0x7a, 0x60, 0x9e, 0x34, 0x3d, 0x3a, + 0x99, 0xc3, 0xe3, 0x5b, 0xdc, 0xc0, 0x27, 0x00, 0x08, 0x00, 0x14, 0xa0, + 0x00, 0xe2, 0x20, 0x0b, 0x03, 0x80, 0x6f, 0x30, 0x22, 0x00, 0x16, 0x30, + 0x7c, 0x43, 0x35, 0x34, 0xf9, 0xc3, 0x25, 0x30, 0x71, 0x40, 0x24, 0x30, + 0x01, 0x40, 0x26, 0x30, 0x89, 0x02, 0x90, 0x30, 0x25, 0x00, 0xbf, 0x30, + 0x2e, 0xc2, 0x9a, 0x30, 0xba, 0x44, 0x90, 0x30, 0xb5, 0x41, 0x16, 0x30, + 0x13, 0x80, 0x4d, 0x03, 0x3e, 0xb8, 0x00, 0x04, 0x85, 0x8c, 0x13, 0x83, + 0x48, 0x5c, 0x24, 0x08, 0xe2, 0x26, 0x24, 0x11, 0x34, 0x5c, 0xbc, 0x78, + 0xdd, 0x25, 0x9e, 0x34, 0xb2, 0x69, 0x27, 0x4d, 0x93, 0xa9, 0x6b, 0xea, + 0x75, 0x7a, 0xaa, 0xfd, 0x5e, 0xbd, 0xbf, 0xd2, 0xbf, 0xf5, 0x2a, 0xfe, + 0xf5, 0xab, 0x6b, 0x20, 0xaa, 0x6a, 0x6f, 0xd6, 0xdf, 0xde, 0xee, 0xf5, + 0xdd, 0xbe, 0xdf, 0x5a, 0xeb, 0xad, 0xfb, 0x26, 0xfd, 0x48, 0x26, 0xa5, + 0x56, 0xa2, 0x28, 0x4c, 0x0c, 0xd0, 0x18, 0x66, 0x72, 0xf9, 0x01, 0x33, + 0x09, 0xe5, 0x3b, 0x29, 0xe3, 0xb4, 0x2a, 0x4c, 0x80, 0xb6, 0x99, 0x82, + 0x50, 0xa4, 0x32, 0x1b, 0x06, 0x42, 0xf3, 0x32, 0x7a, 0x50, 0xf9, 0x67, + 0xc8, 0x46, 0x60, 0x62, 0x88, 0x0d, 0x06, 0x11, 0xcf, 0xa2, 0x6f, 0x09, + 0x48, 0xc6, 0x03, 0xc1, 0xbe, 0x60, 0xfa, 0x04, 0xe1, 0x72, 0x59, 0x30, + 0x49, 0x00, 0x73, 0x10, 0x81, 0x44, 0x33, 0xd7, 0x54, 0x83, 0x11, 0xf0, + 0x5e, 0x30, 0x12, 0x01, 0x52, 0x85, 0xaa, 0xaa, 0xb6, 0x25, 0xcb, 0x1f, + 0x7e, 0x15, 0x1a, 0xd7, 0xc2, 0x47, 0x02, 0xc0, 0xce, 0x0b, 0xf8, 0xc4, + 0x56, 0x55, 0xf9, 0xc9, 0xd9, 0x54, 0xe4, 0xeb, 0xbb, 0x29, 0x94, 0xcb, + 0x9f, 0x86, 0x55, 0x9c, 0xdd, 0x2c, 0x39, 0x95, 0x0f, 0x3b, 0x2b, 0xa6, + 0xca, 0xa4, 0xba, 0xa6, 0x75, 0xbb, 0xab, 0xf4, 0xb9, 0xe2, 0xde, 0xce, + 0x66, 0xab, 0xfe, 0x61, 0x4d, 0x67, 0x29, 0x6b, 0xb4, 0xdb, 0xfd, 0x31, + 0xf3, 0xcf, 0x9f, 0xbe, 0xd2, 0x7b, 0xc4, 0x48, 0x31, 0x3d, 0x48, 0xaa, + 0x5c, 0x3a, 0x44, 0xc2, 0x1d, 0x1e, 0xb8, 0x7c, 0x5c, 0x5a, 0xd2, 0x12, + 0xf4, 0x6b, 0xfa, 0xba, 0xe9, 0xd9, 0x2a, 0x63, 0x89, 0xcf, 0x5e, 0x44, + 0x63, 0xd3, 0x30, 0xc4, 0x27, 0x2b, 0x99, 0x66, 0x08, 0x07, 0x15, 0xf0, + 0xd9, 0x0f, 0x17, 0x22, 0x8d, 0x52, 0xfc, 0xc4, 0xdf, 0xc6, 0xbf, 0x13, + 0x1c, 0xb3, 0x12, 0xbe, 0x64, 0xfa, 0xae, 0x66, 0xaa, 0x63, 0x69, 0x72, + 0xd3, 0x65, 0x27, 0x0b, 0xae, 0xd8, 0x35, 0x30, 0x61, 0x47, 0x2a, 0x76, + 0x23, 0xb7, 0x9c, 0x31, 0x20, 0x12, 0x56, 0xfd, 0xaf, 0x44, 0x96, 0x27, + 0x59, 0x64, 0x2e, 0xb5, 0x95, 0xc6, 0xb9, 0x9a, 0x64, 0xa7, 0x44, 0x90, + 0x26, 0x32, 0x1d, 0x47, 0x00, 0x50, 0x2e, 0x07, 0x66, 0x01, 0xc1, 0x50, + 0x61, 0x42, 0xf8, 0x26, 0x7f, 0xcf, 0xa4, 0x60, 0xe0, 0x11, 0x26, 0x09, + 0xa2, 0x4e, 0x60, 0x7e, 0x73, 0x66, 0x09, 0xa0, 0x3c, 0x61, 0x04, 0x2a, + 0xa6, 0xaf, 0xec, 0x80, 0x63, 0x08, 0x0a, 0xc1, 0x50, 0x01, 0x0a, 0x02, + 0x48, 0x03, 0x49, 0x2a, 0x6c, 0x48, 0x13, 0x87, 0xaa, 0x96, 0x9a, 0x28, + 0xa7, 0x59, 0x9a, 0xcc, 0xd1, 0x5a, 0x95, 0x5d, 0x07, 0x76, 0x59, 0x5d, + 0x96, 0x6d, 0x47, 0xff, 0xfe, 0xaa, 0x97, 0xab, 0xeb, 0xaf, 0xab, 0xab, + 0x76, 0xf5, 0xfe, 0xf7, 0xf5, 0x36, 0xba, 0xde, 0xa5, 0x7b, 0xb2, 0xbd, + 0x7a, 0xaf, 0xb5, 0x94, 0xbb, 0xea, 0xf5, 0x6d, 0xff, 0xaa, 0xba, 0x8c, + 0x46, 0xc2, 0x92, 0x25, 0xd6, 0x32, 0x06, 0xe0, 0x88, 0xe7, 0xf4, 0x9d, + 0xaa, 0x02, 0xfc, 0xbc, 0x8a, 0x2b, 0x40, 0x2f, 0x04, 0x05, 0xaa, 0x30, + 0x04, 0x02, 0x02, 0x30, 0xe6, 0x90, 0x8c, 0x32, 0x1e, 0xca, 0xcd, 0x37, + 0x47, 0x80, 0x4f, 0x30, 0x7c, 0x81, 0xa4, 0x30, 0xba, 0x04, 0x18, 0x37, + 0x81, 0x0c, 0x67, 0x30, 0xd9, 0x81, 0x1a, 0x30, 0x11, 0x40, 0x6f, 0x30, + 0xec, 0x42, 0xf4, 0x30, 0x04, 0x00, 0xa4, 0x30, 0x41, 0xc0, 0x70, 0x30, + 0xc1, 0x07, 0x4b, 0x00, 0x80, 0x7e, 0x60, 0x10, 0x80, 0x20, 0x56, 0xc1, + 0xb3, 0xcb, 0xa5, 0x48, 0x1f, 0xff, 0xfb, 0xd4, 0x60, 0x21, 0x0d, 0xd8, + 0x9b, 0x6c, 0xb7, 0x03, 0xf8, 0x7b, 0x70, 0x6a, 0x2c, 0xe7, 0x42, 0x7a, + 0x4d, 0x6e, 0x19, 0xad, 0xb8, 0xea, 0x4f, 0x3d, 0xed, 0xc2, 0x69, 0x33, + 0x9c, 0x05, 0xf9, 0xc9, 0xb9, 0x40, 0xc7, 0xd5, 0xa9, 0x4c, 0x18, 0x3a, + 0xc0, 0xad, 0xd9, 0xa7, 0x81, 0xa5, 0xa8, 0x34, 0xc0, 0x18, 0x23, 0x24, + 0x6c, 0x57, 0x55, 0xb1, 0xa0, 0xb2, 0x17, 0x36, 0x36, 0xe8, 0x3a, 0xae, + 0x34, 0x71, 0xc3, 0x6b, 0x51, 0xcc, 0x62, 0x70, 0x1b, 0xe5, 0x4b, 0x1b, + 0x7a, 0x9f, 0x8a, 0xd4, 0x12, 0xe9, 0x77, 0x63, 0x73, 0xd5, 0xf4, 0xc6, + 0xfd, 0x9a, 0x46, 0x19, 0x16, 0xde, 0x46, 0x52, 0x30, 0xa3, 0xa0, 0xc7, + 0x53, 0xed, 0x0a, 0x6b, 0x3f, 0x54, 0xce, 0x95, 0x6d, 0x47, 0x92, 0x85, + 0x6d, 0x71, 0x93, 0xed, 0xc9, 0xc5, 0x94, 0xe3, 0x80, 0xbc, 0x5a, 0xa8, + 0xfa, 0x09, 0x50, 0xca, 0x69, 0xa8, 0xcf, 0xb7, 0xaa, 0x04, 0x19, 0xa0, + 0x72, 0x3f, 0x95, 0xc6, 0x0a, 0x18, 0xb0, 0x8a, 0x39, 0x6a, 0xa9, 0x3c, + 0xf1, 0x11, 0x91, 0x0d, 0x3a, 0x4e, 0x42, 0x65, 0x11, 0xaa, 0x39, 0xb7, + 0x33, 0x63, 0xf7, 0x4b, 0x2a, 0xf6, 0x07, 0x8a, 0x67, 0x4f, 0x98, 0x15, + 0x8b, 0xab, 0x24, 0x53, 0x66, 0xf2, 0x6b, 0xae, 0x10, 0xe6, 0xa6, 0x04, + 0xea, 0xf3, 0x4c, 0x74, 0x43, 0x15, 0x95, 0x88, 0xa5, 0x43, 0x74, 0x57, + 0xc8, 0xf2, 0x70, 0xd6, 0xa8, 0x43, 0x54, 0x8b, 0x0a, 0xd8, 0x0f, 0x1b, + 0x15, 0x43, 0x0d, 0x0d, 0x78, 0xc3, 0x06, 0x2c, 0xd0, 0x5f, 0xac, 0xaf, + 0x17, 0x34, 0x51, 0x4c, 0xe4, 0xcf, 0x09, 0xfb, 0x72, 0x26, 0x39, 0xc8, + 0xe0, 0xaa, 0x3d, 0x50, 0xe7, 0x90, 0x4e, 0x27, 0xec, 0x6d, 0x2b, 0x00, + 0x00, 0xac, 0x4a, 0xce, 0x38, 0x00, 0x42, 0xa0, 0x36, 0x16, 0x06, 0xc3, + 0x01, 0x05, 0x6f, 0x31, 0x93, 0x50, 0x93, 0x08, 0xb0, 0x33, 0x30, 0x8c, + 0x01, 0x83, 0x20, 0xf2, 0x30, 0x16, 0x0a, 0xa3, 0x02, 0x20, 0xbb, 0x32, + 0xca, 0x10, 0x03, 0x23, 0xc0, 0x1f, 0x05, 0x03, 0xf0, 0x17, 0x90, 0xc1, + 0x41, 0xaa, 0x08, 0x61, 0x4c, 0xbd, 0xae, 0xec, 0xe9, 0xd7, 0x55, 0xda, + 0xee, 0xb7, 0x5a, 0xd3, 0x52, 0x2f, 0x52, 0x90, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x6f, 0xfa, 0xff, 0xf6, 0xef, 0xfd, 0xbf, 0xfa, 0xbf, + 0xfe, 0xaf, 0xfe, 0x60, 0x25, 0xad, 0x4d, 0x24, 0x40, 0x9b, 0x90, 0x7b, + 0x7e, 0x31, 0x01, 0x5e, 0xd0, 0x5a, 0x87, 0x39, 0xe6, 0x40, 0xc0, 0x68, + 0x0f, 0x0d, 0x4e, 0x54, 0x7c, 0xd0, 0xfe, 0x4d, 0x8d, 0xb9, 0x8a, 0xd4, + 0xc1, 0xd0, 0x13, 0x4c, 0x13, 0xd0, 0x28, 0xd6, 0xbc, 0x8d, 0xcc, 0x24, + 0xc1, 0x58, 0x12, 0x03, 0xc6, 0x3d, 0x41, 0x06, 0x1c, 0x12, 0x20, 0xa0, + 0x5a, 0x31, 0x81, 0x15, 0xc3, 0x0d, 0xf0, 0x12, 0x03, 0x02, 0x80, 0x2e, + 0x83, 0x21, 0xf2, 0xac, 0xf4, 0x49, 0x24, 0xb2, 0x75, 0x69, 0x0f, 0x2d, + 0xa8, 0x6a, 0x0d, 0x99, 0x85, 0x26, 0x6e, 0x44, 0x4b, 0xb9, 0x0f, 0xd3, + 0x40, 0x9f, 0xa1, 0x49, 0xa4, 0x35, 0x28, 0x88, 0x67, 0x7d, 0x11, 0x5a, + 0xdd, 0x88, 0xd0, 0x60, 0xde, 0x90, 0xaf, 0x07, 0x7a, 0xf3, 0x45, 0xb7, + 0xc7, 0xd6, 0x71, 0xf1, 0xaa, 0x40, 0xa5, 0xa6, 0x60, 0xa6, 0x2f, 0x68, + 0x90, 0x65, 0x83, 0xab, 0xcb, 0x8c, 0xdb, 0x76, 0x87, 0xef, 0xbf, 0x47, + 0x94, 0xad, 0x37, 0x87, 0xcf, 0x18, 0xb3, 0x1e, 0x94, 0xd3, 0xdb, 0xe1, + 0xe3, 0xdb, 0x6e, 0xd3, 0xde, 0x79, 0xb3, 0x0e, 0x0e, 0x37, 0x96, 0x4c, + 0x53, 0x36, 0xbb, 0xf7, 0xfa, 0xf6, 0x97, 0x2f, 0x76, 0xea, 0x6a, 0x7f, + 0xdf, 0x69, 0xb6, 0xfb, 0xd5, 0xab, 0xe3, 0xd7, 0xc2, 0x6c, 0x8d, 0x8d, + 0x52, 0x97, 0x8d, 0x48, 0x3e, 0x0d, 0xb1, 0x8f, 0xea, 0x72, 0xbb, 0xce, + 0x2b, 0x1b, 0x75, 0x8d, 0xf3, 0xae, 0x5a, 0x5e, 0x15, 0x6f, 0x95, 0x66, + 0x60, 0xed, 0xfe, 0x37, 0x1b, 0x15, 0xa4, 0xff, 0xc2, 0x85, 0xc3, 0x00, + 0x74, 0x01, 0xa3, 0x00, 0x78, 0x01, 0xf3, 0x00, 0xcc, 0x03, 0x23, 0x01, + 0x70, 0x06, 0x53, 0x03, 0x44, 0x0f, 0x43, 0x0b, 0xb0, 0x49, 0xf3, 0x4e, + 0x20, 0xf2, 0x43, 0x07, 0xa0, 0x11, 0x53, 0x03, 0x3c, 0x11, 0xe3, 0x0d, + 0xf0, 0x22, 0xb3, 0x00, 0x28, 0x02, 0xa3, 0x04, 0xf0, 0x12, 0xa3, 0x02, + 0x1c, 0x8e, 0xd3, 0x02, 0xa8, 0x09, 0x37, 0x54, 0x0e, 0x63, 0x13, 0x70, + 0x72, 0xe3, 0x4c, 0x65, 0x0a, 0x04, 0xe9, 0x11, 0x40, 0xb8, 0x60, 0xd5, + 0xa6, 0xb2, 0xca, 0x06, 0xc8, 0xad, 0xe8, 0x19, 0x22, 0x92, 0xcc, 0x92, + 0x5e, 0xb4, 0xd6, 0x83, 0xb7, 0xbf, 0xf4, 0x7d, 0xfb, 0x7f, 0x5f, 0x64, + 0x96, 0xaf, 0xfa, 0xab, 0xe8, 0xd9, 0x6e, 0xbd, 0x9b, 0x7d, 0xd7, 0xa7, + 0xef, 0x7e, 0xb4, 0x6a, 0x6a, 0x9e, 0xdf, 0xdd, 0x6d, 0xa9, 0x5b, 0x2d, + 0x34, 0x5d, 0x55, 0x22, 0xec, 0xeb, 0x5b, 0xb9, 0x48, 0x9a, 0x35, 0x48, + 0xe2, 0x46, 0x60, 0x20, 0xc6, 0x9b, 0x75, 0xb5, 0x2a, 0x02, 0x86, 0x06, + 0x61, 0x55, 0x23, 0x14, 0x10, 0x26, 0xcd, 0x62, 0x55, 0x64, 0x00, 0x03, + 0x09, 0x10, 0x1e, 0x34, 0x26, 0x0d, 0x63, 0x76, 0xc6, 0x92, 0x34, 0x37, + 0x2b, 0x53, 0x06, 0x50, 0x57, 0x30, 0x4b, 0x1f, 0x63, 0x12, 0x52, 0x40, + 0x0c, 0x0c, 0xd1, 0x90, 0x75, 0x1e, 0x29, 0x70, 0x30, 0x09, 0x18, 0x25, + 0x00, 0xb1, 0x91, 0xd1, 0x42, 0x18, 0x70, 0x00, 0x61, 0x20, 0x05, 0x83, + 0xa0, 0xe3, 0x27, 0x04, 0x39, 0xff, 0xfb, 0xd4, 0x60, 0x1c, 0x0d, 0x96, + 0x4d, 0x6f, 0xba, 0x93, 0xcf, 0x63, 0x70, 0x99, 0xec, 0xe7, 0x06, 0x7e, + 0x6d, 0x6e, 0x5a, 0x59, 0xbe, 0xe8, 0x2f, 0x3d, 0x8d, 0xc2, 0x65, 0xb3, + 0x9c, 0x09, 0xf8, 0xa9, 0xb8, 0xdd, 0x92, 0x4f, 0x24, 0x4d, 0xa0, 0xdc, + 0x8f, 0x35, 0x7a, 0xa5, 0x3a, 0x8f, 0x67, 0x82, 0x8b, 0x35, 0x9a, 0x55, + 0x94, 0x6f, 0x4f, 0x9f, 0x0a, 0x69, 0x9d, 0xbf, 0x4c, 0x3f, 0x77, 0x12, + 0xf1, 0x75, 0x07, 0x3a, 0xbe, 0xaf, 0xaa, 0xd7, 0xe7, 0xa7, 0xa9, 0x6e, + 0xc7, 0xe0, 0xc7, 0x69, 0x04, 0xcd, 0x7a, 0xd1, 0x63, 0x74, 0x66, 0x05, + 0xfb, 0x78, 0xd7, 0xdb, 0xdb, 0x57, 0xf0, 0x75, 0xdd, 0xbb, 0xf9, 0x4b, + 0xfb, 0xbb, 0x97, 0x52, 0xb1, 0xff, 0xbd, 0x57, 0xfb, 0x4f, 0xae, 0x59, + 0x55, 0xcd, 0x44, 0xad, 0xcc, 0x7a, 0xba, 0xfc, 0x30, 0xde, 0xd5, 0x7f, + 0x21, 0x89, 0xd6, 0x75, 0xdb, 0x7a, 0x7a, 0xb1, 0x35, 0x7e, 0x8f, 0x5a, + 0xac, 0x5a, 0x38, 0xe2, 0xa6, 0x46, 0xba, 0x57, 0xe5, 0x3e, 0x61, 0xa5, + 0xf5, 0x4f, 0x6b, 0xcf, 0x2e, 0x0b, 0x0f, 0xbd, 0x8b, 0x5d, 0xde, 0x83, + 0x6f, 0xed, 0x8f, 0x37, 0x8d, 0xfd, 0x71, 0x56, 0xdf, 0x32, 0xb4, 0xbb, + 0xd9, 0x6b, 0x3d, 0x7b, 0x4d, 0x6d, 0x18, 0x08, 0x65, 0x00, 0x00, 0xa0, + 0x01, 0xa6, 0x00, 0x80, 0x06, 0xc6, 0x01, 0xb8, 0x0d, 0x66, 0x03, 0x90, + 0x1a, 0x06, 0x07, 0xa8, 0x3e, 0xa6, 0x17, 0x51, 0xd7, 0x06, 0xe4, 0xa1, + 0xc1, 0xa6, 0x1c, 0xb0, 0x3e, 0x46, 0x09, 0x98, 0x2d, 0xe6, 0x10, 0x78, + 0x00, 0xa6, 0x05, 0x30, 0x18, 0x82, 0x41, 0xc1, 0x98, 0x06, 0xc2, 0xa9, + 0x18, 0x38, 0xa0, 0x14, 0x03, 0x80, 0x1c, 0x01, 0xb9, 0x09, 0xa0, 0x9c, + 0xc6, 0x74, 0x9c, 0x23, 0x53, 0x74, 0x2b, 0x48, 0xeb, 0x24, 0x9b, 0xd1, + 0x4d, 0xcd, 0x0a, 0xe5, 0x42, 0xda, 0x8f, 0x26, 0xb5, 0x1f, 0x6a, 0x99, + 0x35, 0xee, 0xe8, 0xaa, 0xa5, 0xa9, 0x6a, 0xeb, 0x4d, 0x5f, 0xfd, 0xef, + 0xab, 0xe9, 0x5a, 0xbd, 0xfb, 0x37, 0xe9, 0xad, 0x96, 0xbd, 0x15, 0xbb, + 0xd7, 0xd7, 0xde, 0xf7, 0x5f, 0x7a, 0xde, 0xae, 0xba, 0xd6, 0x9d, 0x7b, + 0xbe, 0xfd, 0x99, 0xba, 0xdd, 0x54, 0x96, 0xb1, 0xe4, 0x95, 0xd6, 0xa0, + 0x71, 0x0a, 0x48, 0xa1, 0x3f, 0x53, 0xb3, 0xa0, 0x3d, 0xc4, 0x96, 0xc6, + 0xcb, 0x72, 0x09, 0xb0, 0xcc, 0x18, 0x1d, 0x06, 0x89, 0xaf, 0x79, 0xe1, + 0x1b, 0x70, 0x8b, 0x39, 0xe2, 0x48, 0x6c, 0x98, 0x44, 0x84, 0xb1, 0x86, + 0x88, 0x46, 0x9b, 0x68, 0x9f, 0xb8, 0x60, 0x3a, 0x18, 0x09, 0x01, 0xf1, + 0x87, 0x78, 0x37, 0x80, 0x40, 0x54, 0xc1, 0x24, 0x13, 0x0c, 0xa6, 0xcb, + 0x6c, 0xc3, 0xb0, 0x01, 0xd2, 0xb8, 0x7a, 0x4d, 0x32, 0x5a, 0xa0, 0x3d, + 0xe1, 0x96, 0xc8, 0x68, 0x7b, 0xdb, 0x9d, 0x4f, 0x90, 0x10, 0x4e, 0x54, + 0xe1, 0x06, 0x3c, 0x8d, 0x37, 0xe3, 0x86, 0x54, 0x92, 0x99, 0x85, 0x81, + 0x30, 0xc8, 0xce, 0xf2, 0x77, 0xae, 0x3e, 0x1b, 0x5c, 0x68, 0xb1, 0xb5, + 0x58, 0x3a, 0xf4, 0xb6, 0x6c, 0xec, 0xbd, 0xb1, 0x57, 0xbd, 0xca, 0xac, + 0x49, 0x0d, 0x67, 0x7a, 0xec, 0xd9, 0xbe, 0xbd, 0x1d, 0xf6, 0xcb, 0x47, + 0x46, 0xd6, 0x7d, 0x5c, 0xac, 0x7d, 0xe6, 0x5a, 0x8d, 0xb7, 0x6c, 0xbe, + 0x33, 0xa6, 0xa8, 0xb2, 0x6b, 0x74, 0x4e, 0x3a, 0xe6, 0x7a, 0xdb, 0xb3, + 0x75, 0xf6, 0xd7, 0x11, 0x24, 0xaf, 0x29, 0x7f, 0xe0, 0x55, 0x6d, 0x3c, + 0xbe, 0x1e, 0x3b, 0x36, 0x65, 0x1b, 0x53, 0x03, 0x35, 0x7e, 0xaf, 0x40, + 0xe9, 0xf9, 0xea, 0xff, 0x66, 0xaf, 0xbd, 0x1a, 0xa6, 0xaa, 0xcd, 0xa4, + 0xcb, 0x5c, 0x3e, 0x79, 0x95, 0xb1, 0x2f, 0x80, 0x95, 0xcc, 0x3e, 0xd3, + 0xf3, 0x7a, 0x53, 0x23, 0x5a, 0x11, 0x3e, 0xa2, 0x17, 0x97, 0x27, 0x72, + 0x5c, 0xd7, 0xa7, 0xe0, 0x4b, 0xd0, 0xd5, 0x87, 0x22, 0x75, 0xd6, 0x56, + 0x03, 0x01, 0x00, 0x02, 0xb3, 0x00, 0xf4, 0x03, 0x03, 0x01, 0x98, 0x04, + 0xf3, 0x02, 0xc4, 0x08, 0x23, 0x05, 0x88, 0x14, 0x53, 0x10, 0xdc, 0xad, + 0x23, 0x93, 0x5c, 0xbc, 0xb3, 0x12, 0xa4, 0x13, 0x63, 0x05, 0x18, 0x05, + 0x83, 0x02, 0xcc, 0x07, 0x33, 0x00, 0x78, 0x10, 0x13, 0x04, 0x54, 0x07, + 0x13, 0x06, 0x2c, 0x17, 0xb3, 0x02, 0x60, 0x02, 0xe1, 0x60, 0x15, 0xc0, + 0x98, 0x0f, 0x38, 0xc6, 0x10, 0xc2, 0x54, 0xf1, 0x8b, 0xb2, 0x47, 0xcf, + 0x1a, 0x24, 0x78, 0xc5, 0x8e, 0xb1, 0xa9, 0xbc, 0xc9, 0x6e, 0x6c, 0xb9, + 0xd3, 0x53, 0x45, 0x32, 0x68, 0xbd, 0x6c, 0xaa, 0x75, 0x5f, 0xeb, 0xf4, + 0xbf, 0xb7, 0xe9, 0xd6, 0xca, 0x6b, 0x2a, 0xbb, 0x27, 0xa2, 0xdb, 0xd1, + 0xe7, 0xa7, 0x35, 0x1a, 0x9e, 0xc7, 0x54, 0xed, 0x8e, 0x69, 0xef, 0x74, + 0x7d, 0x3f, 0x3b, 0xba, 0x3f, 0xe6, 0x1e, 0xeb, 0xbe, 0x79, 0x67, 0x42, + 0x52, 0x22, 0x12, 0xa2, 0x71, 0x39, 0x86, 0x98, 0x7a, 0x1a, 0x54, 0x88, + 0x94, 0x4b, 0x01, 0x82, 0x45, 0x1c, 0x9c, 0x4d, 0x5a, 0x30, 0x47, 0x14, + 0xb3, 0x3d, 0x86, 0xb1, 0x34, 0x6f, 0x17, 0x83, 0xc5, 0xd1, 0xcc, 0x31, + 0x3f, 0x11, 0xc3, 0x03, 0xc6, 0x17, 0x36, 0x57, 0x5b, 0x63, 0x02, 0xf0, + 0xc9, 0x30, 0x4e, 0x0c, 0x23, 0x19, 0x81, 0xb0, 0x02, 0x80, 0x58, 0xf0, + 0x6e, 0x99, 0x0e, 0x07, 0x11, 0x81, 0xc8, 0x0b, 0x83, 0x80, 0x41, 0x0a, + 0x0c, 0x01, 0xf7, 0x08, 0xbb, 0xe4, 0xec, 0x5a, 0x56, 0x30, 0xaf, 0x1c, + 0xa9, 0xc7, 0xc5, 0x7a, 0x78, 0xff, 0xfb, 0xd4, 0x60, 0x22, 0x0f, 0x96, + 0xaf, 0x70, 0x39, 0x83, 0xcf, 0x63, 0x70, 0x9d, 0xac, 0xe6, 0xf0, 0x7d, + 0xb0, 0x6e, 0x1c, 0x8d, 0xbc, 0xe6, 0x0f, 0xbd, 0xed, 0xc2, 0x41, 0xb3, + 0x5c, 0x19, 0xf5, 0xb5, 0xb9, 0xb9, 0xd9, 0x5a, 0xa8, 0x68, 0x47, 0x97, + 0x04, 0x4a, 0x92, 0xa9, 0xe4, 0x4b, 0x7d, 0x5c, 0x51, 0xca, 0x38, 0x4d, + 0x70, 0x18, 0x61, 0xc2, 0x7f, 0x09, 0xfb, 0xc8, 0x5f, 0x1e, 0x90, 0xed, + 0x94, 0xb2, 0xe5, 0xcf, 0x41, 0x6a, 0x31, 0xb2, 0xca, 0xc5, 0x9a, 0xdb, + 0x3b, 0xaf, 0x1c, 0xad, 0x72, 0xd5, 0x89, 0xcd, 0x69, 0x83, 0x88, 0x5f, + 0x97, 0x57, 0x27, 0x5e, 0xa9, 0x1a, 0x58, 0xd2, 0xde, 0x92, 0xd4, 0xf3, + 0x4c, 0x46, 0xa9, 0x73, 0x3b, 0x77, 0x76, 0xe8, 0x51, 0xd1, 0xd6, 0xd4, + 0x38, 0xde, 0x2f, 0x3d, 0xdf, 0xd8, 0xe3, 0xa9, 0xab, 0x47, 0x50, 0x33, + 0x8c, 0x25, 0x9f, 0x52, 0xf2, 0xcb, 0x3b, 0x67, 0xe5, 0x87, 0x98, 0x6a, + 0xab, 0xe8, 0xff, 0x3a, 0xbd, 0xba, 0xc0, 0x95, 0x7b, 0x15, 0x8d, 0x4b, + 0x31, 0xb6, 0xd8, 0x5a, 0x7b, 0x77, 0x9d, 0x7d, 0xa5, 0x90, 0xc1, 0x38, + 0x70, 0x48, 0x83, 0x95, 0xb4, 0xb7, 0xa1, 0xde, 0xa5, 0x93, 0xfd, 0xaa, + 0xf5, 0x9e, 0x96, 0x5e, 0x94, 0xd1, 0xb2, 0x60, 0x02, 0x00, 0x44, 0x01, + 0x01, 0x1c, 0xc0, 0x22, 0x02, 0x20, 0xc0, 0x5d, 0x04, 0x0c, 0xc0, 0xd4, + 0x09, 0x50, 0xc2, 0xc7, 0x37, 0xa4, 0xd2, 0xcf, 0x52, 0xe0, 0xc2, 0x5f, + 0x0a, 0x04, 0xc1, 0x2c, 0x06, 0x50, 0xc1, 0xfa, 0x0b, 0x70, 0xc0, 0xa5, + 0x01, 0xf4, 0xc2, 0x2a, 0x04, 0xec, 0xc0, 0xf3, 0x06, 0xcc, 0xc0, 0xb9, + 0x01, 0x64, 0xc0, 0x10, 0x00, 0x30, 0x00, 0x56, 0x07, 0xa0, 0x5c, 0xc4, + 0xcc, 0x7a, 0x11, 0xcb, 0x86, 0xc6, 0x09, 0xad, 0xd4, 0x5c, 0x2e, 0xd3, + 0x44, 0xcd, 0xd0, 0x73, 0x36, 0x64, 0x96, 0x92, 0x46, 0xcc, 0xf5, 0x26, + 0xfa, 0xe9, 0x7f, 0xdf, 0x74, 0xbb, 0xfd, 0x7f, 0xfb, 0x29, 0x68, 0x5d, + 0x5f, 0xa9, 0x6f, 0xf4, 0xdd, 0xd2, 0x65, 0xae, 0x8e, 0xb5, 0x20, 0xb5, + 0xd6, 0x9f, 0xb2, 0xee, 0xf4, 0x59, 0xd3, 0x76, 0x46, 0xaa, 0xac, 0xa4, + 0x13, 0xad, 0xd2, 0xdd, 0x6c, 0xca, 0x74, 0x2b, 0x52, 0xf6, 0x65, 0x28, + 0x9f, 0x74, 0x0b, 0xcc, 0xa0, 0x4a, 0x30, 0x5e, 0x95, 0x46, 0x4c, 0x8a, + 0x85, 0xf8, 0x7e, 0xea, 0x59, 0x6d, 0x09, 0x15, 0x73, 0x00, 0x9c, 0x14, + 0x13, 0x0a, 0xfc, 0x78, 0x23, 0x24, 0x88, 0xa3, 0x33, 0x06, 0x64, 0x37, + 0x83, 0x04, 0x34, 0x16, 0x93, 0x08, 0xf8, 0x12, 0x23, 0x4c, 0xa8, 0x49, + 0xa2, 0x21, 0x66, 0x4c, 0x0d, 0xb0, 0x28, 0x4c, 0x02, 0xc0, 0x89, 0xc6, + 0x40, 0x84, 0x30, 0x1a, 0x00, 0x38, 0x30, 0x5f, 0xc0, 0x07, 0x30, 0x13, + 0x00, 0x1a, 0x53, 0x71, 0x3a, 0x4e, 0x93, 0x88, 0x26, 0x9a, 0x98, 0xc4, + 0xba, 0x91, 0x4c, 0x6f, 0xa6, 0x4e, 0x35, 0xc2, 0x70, 0xe3, 0x4e, 0x31, + 0x17, 0x8d, 0xa7, 0x1c, 0xda, 0xcb, 0x19, 0xd4, 0xa6, 0xd2, 0x48, 0xf5, + 0x71, 0x54, 0xb2, 0xab, 0xda, 0xa4, 0x8c, 0xea, 0x66, 0x27, 0xff, 0x1a, + 0x89, 0x7f, 0x07, 0x78, 0x89, 0x2e, 0xfc, 0x79, 0x71, 0x0a, 0x25, 0x33, + 0xea, 0xd9, 0x36, 0x31, 0x1a, 0x1c, 0xd1, 0xf5, 0xad, 0xda, 0xb3, 0xc9, + 0x01, 0xc2, 0x6c, 0xe1, 0xad, 0xa6, 0x1b, 0xdc, 0xc1, 0x7b, 0x57, 0xcc, + 0xd4, 0xab, 0xed, 0x4b, 0x3c, 0xee, 0xdb, 0x1f, 0x57, 0x2f, 0x71, 0x68, + 0x10, 0x2b, 0x15, 0xec, 0x56, 0xb9, 0x62, 0x37, 0x52, 0x24, 0x66, 0x78, + 0x93, 0x4a, 0xab, 0x96, 0x3d, 0x9f, 0x42, 0x78, 0xc8, 0xf6, 0x7a, 0x4d, + 0x34, 0x57, 0xac, 0x33, 0xfa, 0xc0, 0xef, 0x61, 0xb8, 0x40, 0x79, 0x2b, + 0xf6, 0xfc, 0xc7, 0x9e, 0x06, 0x98, 0xe3, 0xb5, 0xb7, 0xba, 0x89, 0x06, + 0x3c, 0x48, 0x97, 0x81, 0x32, 0x3e, 0x1e, 0x27, 0x9e, 0x78, 0x8f, 0x99, + 0xdd, 0xbe, 0xb1, 0x25, 0xf2, 0xc6, 0xac, 0x6d, 0x41, 0x70, 0xbe, 0x63, + 0x67, 0x31, 0x77, 0xb8, 0xf2, 0xe3, 0x6c, 0x53, 0xce, 0x16, 0x40, 0x02, + 0x00, 0x11, 0x80, 0x48, 0x00, 0x49, 0x80, 0x86, 0x00, 0x81, 0x80, 0xf0, + 0x01, 0x69, 0x81, 0xf6, 0x04, 0xf1, 0x86, 0x08, 0x39, 0xf9, 0xb3, 0x78, + 0x23, 0x38, 0xd0, 0xe0, 0x26, 0x0a, 0x18, 0x1d, 0xe6, 0x0a, 0xf0, 0x63, + 0x66, 0x00, 0x58, 0x18, 0xc6, 0x01, 0x68, 0x0b, 0xc6, 0x1a, 0xb0, 0x1b, + 0x06, 0x06, 0x68, 0x05, 0x45, 0xa5, 0x01, 0x61, 0xec, 0xd0, 0xd0, 0xce, + 0x14, 0x63, 0x11, 0x33, 0x23, 0x12, 0x0d, 0x8d, 0x29, 0xcd, 0x45, 0xd4, + 0x6a, 0x6e, 0x64, 0xa9, 0xcd, 0x27, 0x5c, 0xac, 0xcf, 0x5b, 0xa7, 0xf5, + 0x7f, 0xff, 0xb5, 0xff, 0x7f, 0x55, 0x6c, 0xbe, 0xbd, 0xeb, 0xd7, 0x57, + 0xae, 0xbe, 0xdd, 0x15, 0xa9, 0x17, 0xd2, 0x49, 0xd1, 0x49, 0x9d, 0xa9, + 0xed, 0xd0, 0xd6, 0x83, 0x5b, 0x49, 0x9e, 0x9f, 0xf7, 0x65, 0xea, 0x77, + 0xeb, 0x6b, 0x68, 0xae, 0xba, 0x76, 0xa3, 0x61, 0x16, 0x2d, 0x53, 0x76, + 0xee, 0xba, 0xcb, 0xa0, 0x23, 0x9d, 0x68, 0x65, 0xe5, 0xea, 0x30, 0xb2, + 0x25, 0x73, 0x1b, 0x55, 0xa3, 0x37, 0xeb, 0x8e, 0xd3, 0x9c, 0xa3, 0x08, + 0x31, 0x60, 0x1c, 0x13, 0x08, 0x18, 0xf4, 0x30, 0xae, 0xaf, 0x93, 0x0d, + 0x61, 0x6c, 0x30, 0x23, 0x11, 0x13, 0x13, 0xd1, 0x8a, 0x00, 0x80, 0x19, + 0x87, 0xe8, 0x2c, 0x98, 0x10, 0x84, 0x59, 0x83, 0x00, 0x0e, 0x93, 0x01, + 0xd0, 0x42, 0x45, 0xa6, 0x44, 0xff, 0xfb, 0xd4, 0x60, 0x1b, 0x8d, 0x97, + 0x00, 0x6f, 0x39, 0x83, 0xd8, 0x4b, 0x70, 0x83, 0x4c, 0x87, 0xb1, 0x71, + 0xe5, 0x6e, 0x23, 0x4d, 0xc0, 0xdc, 0x2f, 0xe1, 0xed, 0xc1, 0x87, 0xb3, + 0x5c, 0xd9, 0xe3, 0x95, 0xb9, 0x95, 0x7a, 0x92, 0x4a, 0x95, 0x53, 0x26, + 0x0b, 0x36, 0x8c, 0x2c, 0x32, 0xe5, 0x74, 0x63, 0xd4, 0x75, 0xdb, 0xad, + 0x03, 0x47, 0x8c, 0x5b, 0x9b, 0xab, 0x17, 0x97, 0x44, 0xac, 0x3e, 0xf2, + 0x88, 0x1e, 0x5d, 0x45, 0x3d, 0x76, 0x21, 0x52, 0x5d, 0xbb, 0x17, 0xec, + 0x5c, 0xef, 0xd9, 0x98, 0xaf, 0xaa, 0x46, 0x6e, 0x38, 0xb5, 0xdd, 0xec, + 0xa3, 0x96, 0xa1, 0xbb, 0x2e, 0xb0, 0xb7, 0x69, 0x3e, 0x96, 0xa1, 0x58, + 0x64, 0xb2, 0xf1, 0x19, 0x38, 0xab, 0x8a, 0x21, 0x53, 0x1c, 0x69, 0x62, + 0x70, 0x7b, 0x0b, 0x41, 0x19, 0x50, 0xa1, 0xd5, 0xd1, 0xaa, 0xd1, 0x29, + 0x62, 0xa8, 0x04, 0x24, 0x81, 0xf3, 0xe7, 0x83, 0x69, 0x21, 0x16, 0x94, + 0x08, 0xd7, 0x72, 0x8e, 0x79, 0x2a, 0xe2, 0x7b, 0x07, 0x9e, 0x89, 0x32, + 0xcb, 0x8c, 0x69, 0x84, 0x73, 0x42, 0x8e, 0x53, 0x51, 0xa3, 0xe6, 0x17, + 0x65, 0x05, 0xa0, 0x5c, 0x3d, 0xd0, 0x96, 0x3a, 0x8b, 0x66, 0xbb, 0x24, + 0x6a, 0xb2, 0xf9, 0x1e, 0x26, 0x3e, 0x25, 0x3e, 0x8b, 0xa0, 0xc5, 0x95, + 0x9c, 0x6d, 0xba, 0x28, 0xdb, 0x13, 0x5f, 0x58, 0x61, 0x39, 0x41, 0x95, + 0x94, 0x62, 0x69, 0xd4, 0x31, 0x7a, 0x40, 0x21, 0x98, 0xf2, 0x69, 0x88, + 0x01, 0x40, 0xd1, 0xa9, 0x86, 0x2a, 0x86, 0x45, 0xe3, 0x92, 0x90, 0x8c, + 0x0a, 0x5d, 0x33, 0xf9, 0xd8, 0xc3, 0x60, 0x73, 0x03, 0x86, 0x8d, 0x66, + 0x4e, 0x07, 0x07, 0x13, 0xec, 0x9a, 0x18, 0xe7, 0x81, 0xf4, 0x96, 0x46, + 0xaa, 0x95, 0x2c, 0xcc, 0xac, 0x4f, 0x58, 0x61, 0x36, 0xc9, 0x2c, 0x92, + 0xc0, 0x87, 0x0d, 0xe3, 0xf8, 0x91, 0xe2, 0x47, 0x9b, 0x7b, 0xd6, 0xeb, + 0xba, 0xda, 0xb8, 0xc6, 0x71, 0x9f, 0xff, 0xff, 0xff, 0xff, 0x67, 0x67, + 0x6b, 0x52, 0x8a, 0x8a, 0x8a, 0x88, 0xbd, 0xd9, 0xd9, 0x9d, 0x9d, 0x9d, + 0xaa, 0xb5, 0x45, 0x45, 0x4a, 0xa5, 0xac, 0xec, 0xee, 0xce, 0xce, 0xce, + 0x5a, 0x51, 0x51, 0x6a, 0x9b, 0x3b, 0x59, 0xd9, 0x9f, 0xa6, 0xaa, 0x8a, + 0x8a, 0x8a, 0x9d, 0xd9, 0xc2, 0x36, 0x77, 0xfa, 0x28, 0xc1, 0x45, 0x15, + 0x15, 0x64, 0xd2, 0x0d, 0x7a, 0x98, 0x60, 0x1a, 0x83, 0xba, 0x62, 0xf7, + 0x11, 0x58, 0x62, 0x91, 0x19, 0x88, 0x6c, 0x66, 0x04, 0xc2, 0x61, 0x97, + 0x05, 0x6c, 0x62, 0x9c, 0x86, 0x9e, 0x75, 0x36, 0x8e, 0x00, 0x62, 0x7f, + 0x82, 0x1a, 0x60, 0xcb, 0x01, 0xc0, 0x60, 0xb6, 0x01, 0x2a, 0x60, 0x2f, + 0x82, 0x72, 0x60, 0x4d, 0x00, 0x4e, 0x61, 0x47, 0x06, 0xa2, 0x60, 0x96, + 0x80, 0x26, 0x18, 0x00, 0xe3, 0x12, 0x03, 0x55, 0x5b, 0x9c, 0x94, 0x02, + 0x2d, 0xe5, 0x6c, 0x48, 0x44, 0xeb, 0x58, 0xc3, 0x80, 0x2b, 0x23, 0xca, + 0xef, 0xab, 0xc5, 0x32, 0x60, 0x8b, 0xcd, 0x89, 0xb3, 0xa6, 0x08, 0x97, + 0x4b, 0x7e, 0x6d, 0xb6, 0x8a, 0xbc, 0xd3, 0x6c, 0x41, 0x4b, 0x20, 0x06, + 0x3c, 0xaa, 0xcf, 0x22, 0xea, 0x6d, 0x20, 0x58, 0x2d, 0xdf, 0xca, 0x9e, + 0xfc, 0xa7, 0xbf, 0xd9, 0x25, 0x14, 0xef, 0x56, 0x6a, 0x1a, 0xb2, 0x8d, + 0xd3, 0x24, 0x5e, 0xc7, 0x56, 0xc5, 0x6b, 0x61, 0x4b, 0xa4, 0x5a, 0xdc, + 0xa2, 0x47, 0x64, 0x5b, 0x41, 0x18, 0xa7, 0xda, 0x91, 0x26, 0x69, 0xb1, + 0xa3, 0x15, 0x26, 0xf2, 0xd3, 0xf6, 0xe6, 0xd7, 0x32, 0xf6, 0xc0, 0x3f, + 0x0d, 0x14, 0xad, 0xe8, 0x87, 0x4a, 0xa7, 0xc3, 0x12, 0xad, 0xf3, 0x2b, + 0xeb, 0x1c, 0x28, 0x52, 0x99, 0x5e, 0x86, 0x33, 0x29, 0x9f, 0x28, 0xf6, + 0xb0, 0x6e, 0x21, 0x92, 0x21, 0x43, 0xb9, 0x90, 0xea, 0x8b, 0xe0, 0xc1, + 0x9d, 0xb5, 0x87, 0x6a, 0xb4, 0x71, 0xa7, 0x74, 0x01, 0xc1, 0xb8, 0x0a, + 0xb5, 0x2a, 0x74, 0xf4, 0x7e, 0xc6, 0x8d, 0x60, 0xd2, 0x1a, 0xa1, 0x43, + 0x6b, 0x05, 0x6a, 0x1a, 0xbc, 0xcb, 0x56, 0xc6, 0x6c, 0x50, 0xb0, 0xb4, + 0x1a, 0x73, 0x21, 0x94, 0x5d, 0xd8, 0xff, 0x38, 0xd0, 0xc3, 0xa9, 0x32, + 0xdf, 0x0f, 0x2d, 0x30, 0xe2, 0xa3, 0x58, 0x10, 0x2d, 0x25, 0x86, 0x24, + 0xaa, 0xf5, 0xf5, 0x6a, 0xb0, 0xdf, 0x6b, 0x70, 0x67, 0x58, 0x67, 0x8a, + 0xac, 0x95, 0xba, 0x36, 0xdc, 0xde, 0x30, 0x20, 0xcb, 0xd2, 0x55, 0xd8, + 0x49, 0x08, 0x15, 0x71, 0x0f, 0x00, 0x48, 0xf0, 0x0f, 0x8b, 0x03, 0x41, + 0x86, 0x58, 0x64, 0x1b, 0x47, 0x94, 0x61, 0x86, 0xb8, 0x14, 0x98, 0x1b, + 0x00, 0x81, 0x80, 0x60, 0x04, 0x18, 0x05, 0x80, 0x59, 0x81, 0xe0, 0x21, + 0x98, 0x86, 0x07, 0x69, 0x82, 0x20, 0x0c, 0x97, 0x88, 0x01, 0x44, 0x65, + 0x28, 0x29, 0x56, 0x9c, 0xa3, 0xa3, 0x41, 0xc3, 0x99, 0xcc, 0x30, 0xcb, + 0x29, 0x8a, 0xaf, 0x2a, 0xf7, 0x43, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xbb, 0x75, 0xd7, 0xb7, 0xff, 0x7f, 0xdb, 0xdf, 0xf5, 0xed, 0xfb, 0x7f, + 0xff, 0xff, 0xff, 0x8d, 0xf8, 0x80, 0xbb, 0x7f, 0xc5, 0x80, 0xbd, 0x1c, + 0x4d, 0x9a, 0x30, 0x14, 0x02, 0xc3, 0x31, 0x97, 0xc5, 0xf1, 0x33, 0x66, + 0x86, 0xf4, 0x33, 0x77, 0x85, 0x0f, 0x30, 0x09, 0xc2, 0x04, 0x30, 0x57, + 0x0d, 0x97, 0x33, 0xca, 0x10, 0x1c, 0x30, 0x8f, 0x82, 0x2b, 0x30, 0x02, + 0x00, 0xb2, 0x30, 0x42, 0x40, 0xee, 0x30, 0x32, 0x40, 0x42, 0x30, 0x69, + 0x00, 0x0a, 0x30, 0x6a, 0xc3, 0xff, 0xfb, 0xd4, 0x60, 0x19, 0x8f, 0xf8, + 0x67, 0x70, 0x37, 0x83, 0xf8, 0x63, 0x70, 0x5d, 0x8c, 0x87, 0x10, 0x74, + 0xe7, 0x6e, 0x62, 0x51, 0xc0, 0xde, 0x0f, 0xe1, 0xed, 0xc1, 0x72, 0xb3, + 0x9c, 0x41, 0xc8, 0x15, 0xb8, 0x8c, 0x30, 0x2d, 0x40, 0x34, 0x05, 0x00, + 0x4a, 0x67, 0x81, 0x72, 0x20, 0x44, 0x01, 0x89, 0x09, 0x0e, 0x45, 0xce, + 0x22, 0x13, 0xc4, 0xb5, 0x5d, 0x98, 0x31, 0x30, 0x69, 0xa0, 0x87, 0xb5, + 0x94, 0xc6, 0xf0, 0x76, 0xe2, 0xb0, 0x7c, 0x3b, 0x03, 0xb7, 0xcf, 0xe6, + 0xe8, 0xa0, 0x88, 0xac, 0x1c, 0xe0, 0xb8, 0x93, 0xd9, 0x35, 0xa9, 0x64, + 0xdc, 0x5a, 0x8a, 0xb4, 0x5e, 0x0b, 0xad, 0x96, 0x72, 0x9b, 0x52, 0x85, + 0xd5, 0x8b, 0x90, 0x17, 0x1d, 0x27, 0x30, 0x80, 0xf0, 0x71, 0x33, 0x89, + 0x2a, 0xd8, 0x07, 0x36, 0x6b, 0x62, 0x53, 0x86, 0x2f, 0x97, 0x95, 0x1e, + 0x3e, 0x23, 0x93, 0xcb, 0x76, 0x3d, 0x15, 0x9f, 0x55, 0x61, 0x81, 0x25, + 0x90, 0xa9, 0xe6, 0xa1, 0x1f, 0x47, 0xa4, 0x27, 0xcf, 0xd5, 0xc6, 0x35, + 0x38, 0x40, 0x58, 0x21, 0x93, 0x0f, 0xac, 0x5e, 0x24, 0x08, 0x4b, 0x44, + 0x03, 0xd1, 0x52, 0xc1, 0x3c, 0x4a, 0x13, 0xd5, 0x9f, 0x10, 0x55, 0x28, + 0x26, 0x95, 0x47, 0x03, 0x42, 0x9a, 0xf5, 0xce, 0x8f, 0xc5, 0x62, 0x6a, + 0xc3, 0xe3, 0x94, 0x48, 0x24, 0x43, 0xc3, 0xc4, 0xc7, 0xf8, 0x7a, 0x95, + 0x42, 0x31, 0x05, 0x95, 0x6d, 0x1b, 0x5d, 0x67, 0x0c, 0x04, 0xb1, 0x53, + 0x62, 0x1b, 0x6b, 0x8b, 0x45, 0x6b, 0x89, 0xc0, 0x79, 0x81, 0xd1, 0x6a, + 0xca, 0x14, 0x5e, 0xa0, 0xf2, 0x9c, 0xe0, 0x4b, 0x08, 0xdb, 0x6c, 0xc9, + 0x11, 0xf9, 0x84, 0x4a, 0x09, 0x8b, 0xa5, 0xb8, 0x0a, 0xa7, 0x60, 0x6c, + 0xf0, 0xf8, 0xfc, 0xfe, 0x97, 0xbc, 0xc6, 0xd1, 0x98, 0x0a, 0x5b, 0x08, + 0x80, 0xb0, 0x68, 0x74, 0x60, 0x44, 0x4e, 0x7a, 0x73, 0x0c, 0x63, 0x70, + 0x66, 0x59, 0x68, 0x4a, 0x11, 0x18, 0x18, 0x2b, 0x18, 0xf0, 0xdf, 0x81, + 0x98, 0x74, 0xa0, 0x0d, 0x03, 0x80, 0x78, 0x3e, 0xe4, 0xdc, 0x8b, 0xad, + 0x4e, 0x74, 0x77, 0x31, 0xdd, 0x69, 0xee, 0xec, 0xad, 0xbf, 0xec, 0xab, + 0xff, 0xdf, 0xb7, 0xfe, 0xfe, 0x8f, 0x5d, 0x69, 0xfa, 0x6f, 0xdd, 0xb6, + 0xa7, 0xcf, 0xad, 0x7e, 0xb7, 0xeb, 0xba, 0x66, 0x5d, 0xbd, 0x91, 0xfb, + 0x4d, 0xd3, 0xb2, 0x1d, 0xd9, 0xa3, 0xd4, 0xe1, 0x13, 0x55, 0x2f, 0xd2, + 0xa1, 0xbe, 0xa9, 0xda, 0x86, 0x01, 0x78, 0x38, 0xa6, 0x4a, 0x30, 0x57, + 0x86, 0x81, 0x29, 0x74, 0xc6, 0x4f, 0x28, 0x9b, 0xe6, 0x08, 0xd8, 0x2e, + 0xe6, 0x1a, 0x20, 0x9f, 0x46, 0xdc, 0x71, 0x42, 0xa6, 0x1d, 0xb0, 0x27, + 0x86, 0x09, 0x78, 0x15, 0xe6, 0x09, 0xc0, 0x1e, 0x26, 0x03, 0x50, 0x19, + 0x46, 0x07, 0x78, 0x05, 0x46, 0x08, 0xf0, 0x11, 0xc6, 0x09, 0xa0, 0x00, + 0x82, 0xc0, 0x21, 0x87, 0x55, 0xb7, 0x45, 0x44, 0xd5, 0x4f, 0x84, 0x46, + 0x71, 0xd6, 0x4b, 0xea, 0x9c, 0xef, 0xb2, 0x09, 0xd8, 0x8a, 0x96, 0x33, + 0x59, 0x86, 0x53, 0x11, 0x7d, 0xa2, 0x51, 0xb5, 0x2b, 0x7e, 0x16, 0x46, + 0xdb, 0x04, 0xf5, 0x05, 0xc9, 0x65, 0x57, 0x9d, 0xe4, 0x8d, 0xbe, 0x33, + 0x94, 0x70, 0x98, 0xa3, 0xd9, 0x1c, 0x98, 0x94, 0xe3, 0xca, 0x4a, 0x3b, + 0x32, 0xd6, 0x35, 0x4c, 0x38, 0xcd, 0x73, 0xb7, 0xb0, 0x27, 0x74, 0xe7, + 0x36, 0x14, 0x70, 0xe4, 0x3f, 0xa5, 0x89, 0x77, 0x36, 0xa5, 0x04, 0x33, + 0xf9, 0x13, 0xa5, 0x36, 0x99, 0x59, 0x50, 0xed, 0x22, 0xd8, 0x26, 0x54, + 0x1f, 0xa8, 0x6e, 0x97, 0x9c, 0x14, 0x49, 0x54, 0x54, 0x8f, 0xdc, 0x93, + 0x48, 0xf5, 0x96, 0x23, 0xf1, 0xc9, 0x26, 0xa8, 0x38, 0xb6, 0xde, 0xe2, + 0xa2, 0x43, 0x57, 0x27, 0xf2, 0x85, 0xad, 0x42, 0x78, 0xb0, 0x2b, 0xd5, + 0x4b, 0x0a, 0x75, 0x5d, 0x54, 0xcc, 0x26, 0xf2, 0x51, 0xa9, 0xec, 0xc8, + 0x43, 0x04, 0xed, 0xac, 0x6f, 0x97, 0xd9, 0x10, 0x39, 0x6d, 0x67, 0x4f, + 0xa1, 0x49, 0x65, 0x43, 0xa4, 0xcb, 0xd3, 0xfd, 0x48, 0x94, 0x85, 0x15, + 0x53, 0x88, 0x07, 0x6b, 0x9c, 0x66, 0xdc, 0x2a, 0xe0, 0xab, 0x54, 0x51, + 0x52, 0xdb, 0x2a, 0x4f, 0x15, 0x24, 0x8a, 0xf4, 0xda, 0x29, 0xeb, 0x54, + 0x78, 0x8a, 0x26, 0x86, 0xe5, 0xc3, 0x34, 0x4a, 0x27, 0x10, 0xa7, 0x98, + 0x86, 0xdc, 0xfd, 0xe3, 0x8c, 0x37, 0x6e, 0x98, 0xdb, 0xed, 0xb5, 0x63, + 0xd5, 0x07, 0x7a, 0xfc, 0xd4, 0x7f, 0xd9, 0xc1, 0x78, 0xcc, 0x50, 0xc1, + 0x33, 0x97, 0x1c, 0xc1, 0x40, 0x64, 0x47, 0x45, 0xb1, 0x61, 0x01, 0x97, + 0x4a, 0x27, 0xbd, 0x54, 0x1d, 0x0c, 0x18, 0x34, 0x45, 0x0a, 0x42, 0x70, + 0x19, 0x72, 0x6c, 0xc1, 0x47, 0x0c, 0xd9, 0xa9, 0x9b, 0xa6, 0x8a, 0x06, + 0x74, 0xdd, 0x76, 0x64, 0x54, 0xcb, 0xb6, 0xd5, 0xfe, 0xbe, 0xdf, 0xf6, + 0xfe, 0xaf, 0xfb, 0xa6, 0xba, 0x26, 0xdf, 0xfd, 0x3f, 0x73, 0xff, 0xbf, + 0xd2, 0xc9, 0xaa, 0x25, 0x8d, 0x4e, 0xdf, 0xf4, 0x5e, 0xfb, 0x15, 0x3f, + 0xd4, 0x24, 0xfd, 0x42, 0x6d, 0xee, 0x77, 0xbd, 0x04, 0xbe, 0x04, 0x7a, + 0x24, 0x00, 0x03, 0x00, 0xa4, 0x07, 0xb3, 0x15, 0x7c, 0x05, 0xa3, 0x18, + 0xb8, 0xac, 0xe3, 0x44, 0xc4, 0x1e, 0xb3, 0x04, 0x34, 0x06, 0xe3, 0x04, + 0xec, 0x81, 0xa3, 0x40, 0xb4, 0x77, 0xd3, 0x08, 0x94, 0x0f, 0x23, 0x01, + 0x80, 0x04, 0xf3, 0x05, 0x7c, 0x00, 0x53, 0x00, 0xd8, 0x06, 0x13, 0x03, + 0x7c, 0x05, 0x83, 0x03, 0x44, 0xff, 0xfb, 0xd4, 0x60, 0x1a, 0x8d, 0xd8, + 0x53, 0x6f, 0xb8, 0x13, 0xf8, 0x7b, 0x70, 0x60, 0xcc, 0xd7, 0x11, 0x79, + 0xa5, 0x6e, 0x60, 0x71, 0xbe, 0xde, 0x2f, 0xbd, 0x8d, 0xc1, 0x79, 0x33, + 0x9c, 0x85, 0xd6, 0x9d, 0xb8, 0x28, 0xf3, 0x01, 0x00, 0x01, 0xb6, 0x58, + 0x5a, 0xdc, 0x50, 0x96, 0x23, 0x1a, 0x69, 0xbe, 0x8d, 0x92, 0x46, 0xcc, + 0xdb, 0x75, 0x8c, 0xf1, 0x38, 0xd3, 0x8d, 0x7d, 0x41, 0x16, 0x05, 0xf0, + 0x8e, 0xdf, 0x7f, 0xdd, 0x62, 0xfc, 0x29, 0x8a, 0x8b, 0xb9, 0x0a, 0x6f, + 0x04, 0xaa, 0x93, 0xc8, 0xe7, 0x3b, 0x30, 0x4c, 0xf4, 0x1b, 0x34, 0xc9, + 0xa1, 0xb8, 0xc4, 0xe6, 0x57, 0x25, 0x5a, 0xe4, 0xa7, 0xb9, 0x4b, 0xbc, + 0xed, 0x91, 0xdb, 0x2a, 0xc7, 0xad, 0x43, 0x70, 0x8f, 0x09, 0x86, 0x76, + 0x76, 0x97, 0x18, 0x13, 0xb6, 0xc2, 0x7c, 0xc4, 0xbb, 0x5d, 0x4e, 0xe2, + 0xe0, 0x75, 0xbc, 0x4a, 0xaa, 0x21, 0x24, 0x5c, 0x17, 0xa6, 0x8c, 0xb2, + 0xa8, 0x53, 0xc1, 0x64, 0x49, 0xb3, 0x23, 0x1c, 0x1e, 0x3f, 0x73, 0x7a, + 0xea, 0x05, 0x5e, 0xbf, 0x77, 0xd2, 0x4c, 0x71, 0x99, 0x2f, 0x3e, 0xd7, + 0x71, 0x90, 0xc5, 0x85, 0x6c, 0x09, 0xcf, 0xd7, 0x16, 0x06, 0xc5, 0x2c, + 0x66, 0x55, 0x8b, 0xbc, 0x49, 0xbe, 0x39, 0xd4, 0x33, 0x36, 0x2e, 0x98, + 0x93, 0xd7, 0x8e, 0xaa, 0x54, 0x69, 0xb6, 0x1b, 0x4a, 0xe1, 0xa1, 0x86, + 0x3a, 0xbd, 0xad, 0x9b, 0x6f, 0x98, 0x55, 0xf6, 0x74, 0xdb, 0x16, 0x3b, + 0x9b, 0x76, 0x61, 0xa7, 0xc5, 0x95, 0xc9, 0xff, 0x65, 0xab, 0x8d, 0x18, + 0xe1, 0x2f, 0xb8, 0xa4, 0x09, 0xab, 0x52, 0x8f, 0xaa, 0xaa, 0xc7, 0x8e, + 0xc1, 0xbb, 0xe5, 0x9d, 0xc7, 0x4e, 0x0c, 0xef, 0xcf, 0xd6, 0x05, 0x74, + 0x57, 0x28, 0x08, 0x05, 0x9c, 0xaf, 0x4b, 0xd9, 0xc0, 0x5c, 0x26, 0xcc, + 0x34, 0x05, 0x71, 0x5d, 0x46, 0x5e, 0xd4, 0xf3, 0x30, 0x3e, 0x05, 0x13, + 0x20, 0x24, 0xa2, 0x30, 0xe4, 0x04, 0x00, 0x50, 0x09, 0x81, 0x44, 0x18, + 0x30, 0xdc, 0x34, 0x1e, 0xe8, 0xa4, 0x82, 0x68, 0xad, 0x92, 0x45, 0x4c, + 0x72, 0xa4, 0x5d, 0x34, 0x28, 0xa0, 0xaa, 0x6d, 0x57, 0x5d, 0x96, 0x97, + 0xff, 0xff, 0xee, 0xff, 0xfb, 0xa7, 0x4b, 0x7f, 0x6d, 0x76, 0xf5, 0xf5, + 0xe9, 0x6d, 0xed, 0xfd, 0xba, 0xb7, 0x6f, 0x64, 0xb7, 0x6a, 0x5a, 0xef, + 0xaf, 0xba, 0xba, 0x80, 0x24, 0x6a, 0x59, 0xb6, 0xd5, 0xb5, 0x18, 0x23, + 0xad, 0x03, 0xca, 0x10, 0xc0, 0x0b, 0x06, 0x9c, 0xc8, 0xb6, 0x14, 0xa4, + 0xc6, 0xf6, 0x37, 0x74, 0xd1, 0x5f, 0x0e, 0x98, 0xc1, 0xc9, 0x03, 0x98, + 0xc1, 0x53, 0x14, 0x04, 0xce, 0xe5, 0x28, 0x68, 0xc2, 0x01, 0x04, 0x4c, + 0xc0, 0x92, 0x02, 0x70, 0xc1, 0x64, 0x03, 0xc8, 0xc0, 0x3d, 0x01, 0x2c, + 0xc0, 0xce, 0x01, 0xfc, 0xc0, 0x8f, 0x03, 0x78, 0xc0, 0xb9, 0x00, 0x0c, + 0x0c, 0x00, 0xa0, 0xfa, 0x17, 0x82, 0x48, 0x48, 0x89, 0xf8, 0x0c, 0x06, + 0x2a, 0xb8, 0xba, 0x84, 0xf1, 0x03, 0x33, 0x0f, 0xe2, 0xec, 0xba, 0x37, + 0x8b, 0xcb, 0x03, 0x8a, 0xc9, 0xa4, 0xa2, 0x62, 0x15, 0x67, 0x11, 0xee, + 0x69, 0xa4, 0x8d, 0x02, 0x7a, 0x88, 0x8c, 0x3e, 0x15, 0x66, 0xf9, 0xe6, + 0x73, 0x97, 0xad, 0x18, 0x2c, 0xb1, 0xe9, 0x34, 0x93, 0xbd, 0xb3, 0xc5, + 0xcd, 0xb2, 0x57, 0x5a, 0x98, 0xe1, 0xca, 0xbe, 0xfa, 0x9b, 0x97, 0xaa, + 0x7c, 0xd3, 0x57, 0x53, 0xa5, 0x75, 0xed, 0x3b, 0x01, 0x39, 0xe2, 0x73, + 0x30, 0x9a, 0x18, 0x21, 0xaf, 0x49, 0x19, 0x6d, 0x34, 0x6a, 0x8c, 0xd4, + 0x0a, 0xc7, 0xb7, 0x8a, 0x07, 0x47, 0xc7, 0x67, 0xa0, 0xc1, 0xa5, 0x64, + 0x52, 0x99, 0x7c, 0x48, 0x67, 0x52, 0x2f, 0x7d, 0x7d, 0x89, 0x89, 0x5d, + 0x3e, 0x10, 0x0b, 0x24, 0x32, 0x20, 0xb9, 0x18, 0x94, 0x64, 0x1f, 0xb8, + 0xfd, 0x4d, 0x9e, 0xfd, 0x1f, 0x6c, 0xc8, 0x73, 0x01, 0x51, 0x0f, 0x11, + 0x12, 0x3c, 0x78, 0x96, 0x16, 0x89, 0x0e, 0x3e, 0x68, 0x1c, 0x46, 0x6a, + 0xb9, 0x42, 0x73, 0x85, 0x02, 0x11, 0x89, 0x6c, 0xf9, 0xa7, 0x12, 0xb2, + 0xb4, 0x6a, 0xa2, 0x19, 0xed, 0x70, 0xf0, 0x39, 0x42, 0x42, 0x82, 0x35, + 0xa1, 0x6e, 0x32, 0x27, 0xac, 0x91, 0x6d, 0x8c, 0x74, 0xfa, 0x02, 0x28, + 0x92, 0x5d, 0x3e, 0x26, 0x4c, 0x42, 0x53, 0x47, 0xda, 0xe9, 0x8f, 0x19, + 0x64, 0x1a, 0xcc, 0x10, 0xe6, 0x28, 0x11, 0x05, 0xd0, 0xf3, 0x26, 0x56, + 0x53, 0x11, 0x40, 0xd2, 0xcc, 0x17, 0x60, 0xc0, 0xb0, 0x44, 0xc2, 0x02, + 0xd8, 0xc0, 0x69, 0x84, 0x33, 0x04, 0x12, 0x0e, 0xc0, 0x46, 0x07, 0xb1, + 0x3c, 0x1e, 0x83, 0xdd, 0x03, 0xa8, 0xa9, 0x91, 0x55, 0x14, 0x9d, 0xd1, + 0x40, 0xc0, 0xf2, 0xa8, 0x22, 0x62, 0xa4, 0x6a, 0x5d, 0xea, 0xd5, 0xff, + 0xed, 0xff, 0xff, 0xff, 0x9d, 0xff, 0x7f, 0xaf, 0xff, 0xfd, 0xfe, 0x8d, + 0xff, 0xfb, 0x5b, 0x7b, 0x26, 0xdf, 0xfe, 0x95, 0xa5, 0x05, 0x86, 0xbf, + 0x05, 0xe7, 0xef, 0xb7, 0x94, 0x15, 0x79, 0xe3, 0x2d, 0x00, 0x77, 0x40, + 0x00, 0x60, 0xb4, 0x0e, 0xc6, 0x37, 0x6d, 0x30, 0x73, 0x62, 0xf8, 0x26, + 0x60, 0xe6, 0x78, 0x60, 0x2e, 0x24, 0x26, 0x13, 0x07, 0x1e, 0x71, 0x74, + 0x12, 0x86, 0x16, 0xc0, 0x5e, 0x60, 0x96, 0x02, 0xa6, 0x10, 0x61, 0x76, + 0x60, 0x1e, 0x04, 0x46, 0x01, 0x40, 0x2a, 0x61, 0x9c, 0x0a, 0x46, 0x06, + 0xa0, 0x04, 0xf3, 0xb4, 0x47, 0x85, 0x9c, 0x3a, 0x90, 0x65, 0xc8, 0x8b, + 0x92, 0x89, 0xef, 0xf3, 0xe6, 0xff, 0xfb, 0xd4, 0x60, 0x22, 0x09, 0x97, + 0x7a, 0x70, 0x39, 0x33, 0xd8, 0x63, 0x70, 0x7d, 0x0c, 0xe7, 0x16, 0x79, + 0xad, 0x6e, 0x5b, 0xa9, 0xc0, 0xe4, 0x2f, 0x3d, 0x2d, 0xc2, 0x62, 0x33, + 0x9b, 0x85, 0xe6, 0xb5, 0xb8, 0xf1, 0x2d, 0x55, 0xd8, 0xe1, 0x36, 0x14, + 0xac, 0x50, 0xa6, 0x1c, 0x82, 0x49, 0x63, 0x4a, 0x10, 0x31, 0x83, 0x25, + 0xea, 0x87, 0x2a, 0xc6, 0xc0, 0xf6, 0xa9, 0x5c, 0x72, 0x24, 0xda, 0xcc, + 0xc0, 0x0e, 0xad, 0x1d, 0x58, 0x62, 0x5f, 0x45, 0x2b, 0x97, 0x4a, 0xaa, + 0xc1, 0x6f, 0xc4, 0x52, 0xf4, 0x7f, 0xdd, 0x34, 0x6b, 0xbd, 0x23, 0x88, + 0x74, 0x62, 0x5c, 0xd8, 0xce, 0x62, 0x1c, 0x0b, 0xad, 0x9c, 0x2d, 0x61, + 0x55, 0xa3, 0xc9, 0xf3, 0x8c, 0x49, 0xf3, 0x19, 0x65, 0x6e, 0xa9, 0x9b, + 0x1c, 0x1c, 0x8f, 0x8f, 0x38, 0xa1, 0x22, 0xc6, 0x9c, 0x89, 0x63, 0x8b, + 0x13, 0x2b, 0xb3, 0xab, 0xec, 0xd3, 0x65, 0x35, 0x48, 0x0b, 0x97, 0x36, + 0xfa, 0x32, 0xef, 0x2d, 0x34, 0xcd, 0x3a, 0x2a, 0x32, 0xf6, 0x24, 0x29, + 0xd1, 0x76, 0x3f, 0x15, 0x9d, 0x2d, 0xc1, 0x2b, 0x52, 0xbc, 0x7a, 0x78, + 0xf2, 0x37, 0x94, 0x9c, 0x45, 0x09, 0xec, 0x69, 0xde, 0x3e, 0xbf, 0x18, + 0x9c, 0x2e, 0xeb, 0x20, 0x9a, 0x3f, 0x94, 0xae, 0xaf, 0x3c, 0x60, 0x94, + 0x7b, 0x50, 0x8d, 0x93, 0xb7, 0x2a, 0xb5, 0x8f, 0xa5, 0xa6, 0xcf, 0x1f, + 0x73, 0x07, 0xf4, 0x4b, 0x1d, 0x6b, 0x6f, 0xd6, 0x80, 0x0c, 0xc0, 0x00, + 0x47, 0x13, 0x54, 0x58, 0x00, 0x82, 0x00, 0x94, 0xc0, 0xf4, 0x00, 0x8c, + 0x3d, 0x86, 0x70, 0xdb, 0xa1, 0x18, 0x8c, 0x34, 0x80, 0xbc, 0x48, 0x16, + 0xc2, 0xa0, 0x22, 0x40, 0x05, 0x83, 0xc0, 0x68, 0x65, 0x06, 0x4d, 0x20, + 0x80, 0x43, 0x30, 0x06, 0x00, 0x20, 0x42, 0xc2, 0x78, 0x13, 0xf2, 0x5c, + 0x7a, 0x17, 0xcc, 0x52, 0x75, 0x9a, 0x1d, 0x59, 0xe4, 0x51, 0x38, 0x91, + 0xc3, 0x87, 0xd6, 0xba, 0x6a, 0x31, 0x9f, 0xb2, 0x9c, 0xd1, 0x74, 0x17, + 0xff, 0xfd, 0x7f, 0xab, 0xfa, 0x3d, 0x5b, 0xe9, 0xf5, 0xff, 0xdb, 0x7f, + 0x41, 0x5b, 0x3a, 0xb4, 0xef, 0xa5, 0xfe, 0xbb, 0x3f, 0xd4, 0x83, 0x37, + 0x56, 0xb6, 0x7a, 0x0b, 0x55, 0x6c, 0xf6, 0xd4, 0xa5, 0xf3, 0x22, 0x59, + 0xf5, 0x47, 0x29, 0x6e, 0xb6, 0x5d, 0xbb, 0x8a, 0xcc, 0xf7, 0x58, 0xe5, + 0x69, 0xf8, 0x60, 0x44, 0x07, 0xc6, 0x34, 0x0e, 0xee, 0x6f, 0xd0, 0x61, + 0x27, 0x4f, 0xc4, 0x98, 0x62, 0x00, 0x12, 0xa6, 0x02, 0x42, 0x68, 0x63, + 0xac, 0x55, 0x26, 0x13, 0x20, 0x98, 0x48, 0x00, 0x62, 0x30, 0xb0, 0x03, + 0x01, 0x09, 0x81, 0x78, 0x0b, 0x18, 0x50, 0x81, 0x39, 0x40, 0x0d, 0x3c, + 0xa7, 0x81, 0x2a, 0x2b, 0xd0, 0x23, 0xb4, 0x6e, 0xa5, 0x15, 0x49, 0xc2, + 0x60, 0xe6, 0x54, 0xa1, 0xab, 0xa5, 0x69, 0x25, 0x1b, 0xa7, 0x49, 0xb8, + 0x67, 0x17, 0x08, 0xe4, 0xa5, 0xf2, 0x12, 0x3a, 0x9d, 0x9f, 0xaa, 0xc7, + 0xaa, 0x53, 0xb8, 0xff, 0x43, 0xe2, 0xa1, 0x06, 0xe4, 0x48, 0x4d, 0xb2, + 0xe5, 0xe4, 0xb2, 0x6b, 0xcb, 0x19, 0xfb, 0x8b, 0x6b, 0x67, 0xe3, 0x63, + 0xef, 0x9e, 0x13, 0xb2, 0x51, 0x0a, 0x95, 0x5d, 0x6d, 0x92, 0x35, 0x55, + 0x6c, 0x99, 0xa1, 0x94, 0x64, 0xa5, 0x53, 0x89, 0x54, 0x91, 0xad, 0x15, + 0x09, 0xa0, 0x24, 0xc4, 0x81, 0xc5, 0x20, 0xcc, 0x19, 0x4d, 0xc4, 0x88, + 0x85, 0xd8, 0xa2, 0x45, 0x55, 0x60, 0x8b, 0x9f, 0x99, 0xb2, 0xc4, 0x22, + 0xa3, 0x2b, 0xa3, 0x42, 0x80, 0xac, 0x58, 0xa5, 0x66, 0x47, 0x12, 0x89, + 0x1c, 0x28, 0x80, 0xec, 0x93, 0x25, 0x31, 0x12, 0x04, 0x03, 0xcc, 0x18, + 0x95, 0xd2, 0xef, 0xd5, 0xe4, 0x87, 0x89, 0x0e, 0x20, 0x65, 0x75, 0x6a, + 0x0b, 0xe8, 0x2a, 0x86, 0x6e, 0x42, 0x5a, 0x52, 0x8b, 0x2c, 0xd2, 0x04, + 0x14, 0x93, 0x0e, 0x1c, 0x51, 0xa5, 0x6e, 0x8b, 0x92, 0x11, 0x20, 0x6d, + 0xea, 0x5e, 0x36, 0x6d, 0x26, 0x64, 0xfc, 0x08, 0x80, 0x24, 0x84, 0x06, + 0x84, 0x60, 0x72, 0x60, 0x0c, 0x0f, 0x06, 0x04, 0x62, 0x5a, 0x60, 0xbd, + 0x0d, 0xc7, 0x08, 0x11, 0x66, 0x62, 0x68, 0x25, 0xc6, 0x0c, 0xe0, 0xfa, + 0x60, 0x8a, 0x07, 0xe6, 0x0c, 0xc0, 0xa4, 0x61, 0xe6, 0x24, 0xa6, 0x51, + 0x80, 0xa0, 0x62, 0x72, 0x07, 0x60, 0x20, 0x18, 0x04, 0xec, 0x36, 0x04, + 0x58, 0xf7, 0x25, 0x0d, 0x0b, 0xa7, 0x4d, 0x5e, 0xa4, 0x4f, 0x19, 0xa0, + 0x7a, 0xe6, 0x46, 0xec, 0xea, 0x73, 0xa8, 0x3a, 0x90, 0x5b, 0x18, 0x3d, + 0xe8, 0x29, 0xec, 0xb7, 0xd7, 0xdf, 0xb6, 0xa7, 0x55, 0x14, 0xd2, 0x5a, + 0x93, 0x5d, 0x95, 0x46, 0xb6, 0x5d, 0x4f, 0x45, 0x06, 0xa5, 0xa9, 0x97, + 0xdd, 0x0d, 0x5a, 0x15, 0xb3, 0xd4, 0xaa, 0x6e, 0xee, 0x92, 0xda, 0xb6, + 0x52, 0x08, 0x3a, 0x6b, 0x74, 0x95, 0xad, 0x04, 0x5d, 0x5d, 0xd0, 0xbb, + 0xb5, 0x4b, 0xaa, 0xd7, 0xbd, 0xd1, 0x5a, 0xda, 0xe3, 0x9d, 0x5a, 0xe0, + 0xc4, 0x7d, 0x6e, 0xc6, 0x75, 0x20, 0x9a, 0x51, 0xac, 0x4b, 0xd4, 0xfa, + 0x89, 0xa6, 0xc9, 0x30, 0x0c, 0x12, 0x83, 0x3a, 0xc7, 0x2c, 0x33, 0x4c, + 0x4f, 0x73, 0xcd, 0x40, 0x47, 0x30, 0xfe, 0x0d, 0x03, 0x04, 0x50, 0xc0, + 0x31, 0x69, 0x15, 0xa2, 0x61, 0xdb, 0x59, 0xe6, 0x0c, 0xc1, 0x36, 0x0c, + 0x01, 0x11, 0xc0, 0x0a, 0x31, 0x04, 0x03, 0xc3, 0x00, 0xb0, 0x14, 0x67, + 0x26, 0xb8, 0xbc, 0x42, 0x8c, 0x63, 0x40, 0x4f, 0xd7, 0x42, 0x6c, 0x5f, + 0xd0, 0xd1, 0xc8, 0x8f, 0x50, 0xff, 0xfb, 0xd4, 0x60, 0x1f, 0x0d, 0xf6, + 0xdd, 0x70, 0x39, 0x03, 0xcf, 0x4b, 0x70, 0x9a, 0xac, 0xe6, 0xe0, 0x7d, + 0xe8, 0x6e, 0x56, 0xad, 0xc0, 0xee, 0x2f, 0x3c, 0xcd, 0xd2, 0xc4, 0xb2, + 0x1c, 0x81, 0xec, 0x0d, 0xb9, 0xb5, 0x14, 0xc7, 0x22, 0x59, 0x32, 0xa1, + 0x49, 0x9f, 0xc5, 0xb1, 0x42, 0xa7, 0x50, 0x2e, 0xc9, 0xcb, 0x0a, 0x16, + 0xb9, 0x57, 0xbd, 0x3b, 0x16, 0x5b, 0xdf, 0xe6, 0xca, 0xd6, 0xa5, 0x5c, + 0x6c, 0x35, 0x4e, 0xbd, 0x98, 0x5a, 0xd8, 0xbd, 0xde, 0x05, 0x64, 0xa5, + 0x9a, 0x49, 0xb4, 0x92, 0xec, 0xa4, 0x92, 0xef, 0x5e, 0x53, 0xd4, 0xcc, + 0x20, 0x3e, 0x55, 0x0c, 0x8d, 0xa5, 0x2b, 0x49, 0x18, 0x90, 0xbc, 0xd1, + 0x2f, 0x28, 0x15, 0xa2, 0xb1, 0x5b, 0x4c, 0x91, 0x06, 0x9b, 0x96, 0x18, + 0x73, 0x8e, 0x9a, 0xa2, 0xcd, 0xae, 0x89, 0x45, 0x8e, 0x97, 0x2a, 0xda, + 0xe8, 0xc6, 0xc9, 0xd7, 0x44, 0x23, 0x3a, 0x84, 0x97, 0x49, 0xd5, 0x1e, + 0xd1, 0xeb, 0x27, 0x42, 0x61, 0xcb, 0xa3, 0x60, 0xf9, 0x1a, 0xcd, 0x93, + 0x52, 0x93, 0x4d, 0x0a, 0x68, 0x46, 0x90, 0xb9, 0x3c, 0x52, 0x24, 0xcb, + 0x8a, 0x19, 0x28, 0xdb, 0xd8, 0x42, 0xd2, 0xed, 0x45, 0x84, 0xd6, 0xd2, + 0x84, 0x26, 0x59, 0x61, 0xb5, 0x50, 0x1e, 0x8f, 0xf2, 0x6a, 0xdb, 0xbc, + 0x4d, 0x1e, 0xa6, 0xf5, 0xd0, 0x34, 0xb9, 0x80, 0x18, 0x00, 0x08, 0x40, + 0x08, 0x41, 0xc0, 0x3a, 0x86, 0x01, 0xbc, 0x0e, 0x07, 0x54, 0xc2, 0xe3, + 0x02, 0x3c, 0xd9, 0x7b, 0x12, 0x54, 0xc3, 0x07, 0x00, 0x18, 0xc0, 0xd2, + 0x01, 0x40, 0xc0, 0x28, 0x01, 0xf0, 0x00, 0x05, 0x89, 0x80, 0xc2, 0x00, + 0xe1, 0x82, 0x98, 0x08, 0x31, 0x81, 0x7a, 0x03, 0x11, 0x80, 0x14, 0x00, + 0x58, 0x65, 0x27, 0x4f, 0xe5, 0x25, 0xd8, 0xfc, 0x68, 0x2c, 0xf3, 0x5b, + 0x57, 0xad, 0x7d, 0xe2, 0x6e, 0xb6, 0x78, 0xf6, 0xf8, 0xcf, 0xc7, 0x79, + 0x7c, 0x5f, 0x15, 0xae, 0x33, 0xaf, 0xbd, 0x63, 0x59, 0xff, 0x5f, 0x11, + 0x7f, 0xc2, 0x3f, 0xeb, 0xfc, 0xfe, 0x93, 0x73, 0xd2, 0x4c, 0xd4, 0xcf, + 0xc5, 0xd5, 0x4b, 0x35, 0xcf, 0x53, 0x13, 0x49, 0x33, 0x36, 0x9d, 0x5b, + 0x57, 0xb6, 0x3c, 0x75, 0xf2, 0xbf, 0x3f, 0x48, 0x93, 0x31, 0x37, 0x68, + 0x9c, 0x9c, 0xaf, 0x7d, 0xb5, 0xcd, 0xc7, 0xc4, 0x5c, 0x22, 0x45, 0x6f, + 0x19, 0x93, 0xcb, 0x62, 0x73, 0x78, 0xa4, 0x6b, 0xa9, 0xe4, 0x41, 0x00, + 0x37, 0xdb, 0xb0, 0x3c, 0xc2, 0x90, 0x60, 0x40, 0x13, 0x06, 0x44, 0xa5, + 0x3e, 0x68, 0x1e, 0x92, 0x06, 0x75, 0x83, 0x06, 0x3c, 0x0d, 0x02, 0x40, + 0x14, 0x60, 0xc8, 0x03, 0xe5, 0x60, 0x92, 0x4c, 0x01, 0xa6, 0x07, 0x60, + 0x60, 0x0a, 0x02, 0x73, 0x01, 0xc0, 0x32, 0x30, 0x95, 0x07, 0x41, 0x00, + 0x11, 0x88, 0x40, 0x18, 0x20, 0xa2, 0x24, 0x42, 0x02, 0x30, 0x39, 0xcf, + 0x42, 0xad, 0x14, 0x5c, 0x5a, 0x4e, 0x1c, 0xbf, 0x37, 0x91, 0x29, 0x05, + 0x4b, 0x83, 0x23, 0x3a, 0x55, 0x40, 0x75, 0xbc, 0x52, 0x95, 0xea, 0x85, + 0xca, 0x18, 0xe7, 0x2b, 0xc9, 0xdc, 0xab, 0x9a, 0x77, 0x52, 0x67, 0x58, + 0xb6, 0xb7, 0xf3, 0xdb, 0x77, 0x3f, 0x6e, 0xee, 0xdd, 0x9e, 0x61, 0x77, + 0x1e, 0x91, 0x4e, 0x5b, 0xc4, 0x7e, 0x82, 0x30, 0x71, 0xfb, 0x73, 0xb7, + 0x72, 0x71, 0x97, 0x64, 0x37, 0x4b, 0xee, 0xd2, 0x8e, 0x34, 0xde, 0xac, + 0xc1, 0x85, 0xb1, 0xfa, 0xd6, 0x18, 0xeb, 0x83, 0xdb, 0x09, 0x1b, 0x5f, + 0xec, 0x6d, 0x1e, 0x92, 0x2f, 0xda, 0xf6, 0xd6, 0x8e, 0xc5, 0x52, 0x18, + 0x91, 0x73, 0x2b, 0xb3, 0x0f, 0x99, 0x6b, 0x29, 0xfd, 0xb3, 0xc6, 0x31, + 0x8f, 0x9b, 0xf7, 0xf7, 0xf0, 0xef, 0x1a, 0xe6, 0xd4, 0xdb, 0xe3, 0xd1, + 0xfb, 0xd2, 0xd6, 0xe6, 0x4d, 0x67, 0x50, 0x54, 0x00, 0x84, 0x40, 0x26, + 0x55, 0x03, 0x20, 0xa0, 0x30, 0x98, 0x01, 0x87, 0x51, 0x80, 0xd3, 0x1e, + 0x98, 0xd9, 0x3f, 0x41, 0x50, 0x3a, 0x4c, 0x0b, 0x81, 0x28, 0xc1, 0x10, + 0x02, 0x0c, 0x1c, 0x40, 0x24, 0xc3, 0xc8, 0x1d, 0x8c, 0x35, 0xc3, 0x48, + 0xc0, 0x2c, 0x0e, 0xc1, 0xa0, 0x30, 0x02, 0x28, 0xf1, 0x84, 0x88, 0x80, + 0xc4, 0xc7, 0x55, 0x45, 0x3b, 0x65, 0x4c, 0xb5, 0xce, 0x6f, 0x1a, 0xfb, + 0x86, 0xf0, 0x41, 0xb0, 0xd4, 0x3b, 0x22, 0x8a, 0x43, 0xf1, 0x89, 0x45, + 0x0d, 0x34, 0x66, 0x7a, 0x8a, 0x5f, 0x49, 0x2b, 0xaf, 0x35, 0x57, 0x2b, + 0xd7, 0xf0, 0xce, 0xa6, 0xb7, 0x96, 0x39, 0x73, 0xb8, 0x67, 0xd9, 0x62, + 0xe4, 0x64, 0x4e, 0x96, 0x56, 0x27, 0x16, 0x8e, 0x96, 0x2b, 0x12, 0x3a, + 0x38, 0x2a, 0xc4, 0x66, 0x8e, 0x0a, 0x82, 0x23, 0x24, 0x74, 0xb1, 0x58, + 0x8c, 0xd1, 0xd2, 0xc5, 0x14, 0x84, 0xf0, 0x1c, 0xac, 0xa6, 0xe8, 0xf2, + 0xb1, 0x1a, 0x23, 0xa5, 0x8a, 0xc4, 0xe6, 0x8e, 0x8b, 0x14, 0xc9, 0x0d, + 0x2c, 0x53, 0x27, 0x78, 0xe9, 0x62, 0x9a, 0x23, 0xa5, 0x62, 0x84, 0xe6, + 0x41, 0xe5, 0x65, 0x34, 0x19, 0xe1, 0xc1, 0x09, 0x5c, 0x0c, 0x88, 0xc5, + 0x80, 0xc8, 0xd2, 0x31, 0x30, 0xa5, 0x1e, 0x03, 0x59, 0xc0, 0x9b, 0x37, + 0xb4, 0x94, 0xa3, 0x4f, 0x33, 0x1d, 0x30, 0x81, 0x03, 0x33, 0x04, 0x20, + 0x5a, 0x30, 0x60, 0x00, 0x91, 0x20, 0xe3, 0x30, 0x0b, 0x00, 0x63, 0x0d, + 0xa0, 0x3d, 0x4a, 0xd7, 0xe6, 0xbc, 0xf3, 0x92, 0x58, 0x07, 0xe8, 0x53, + 0x46, 0x14, 0x62, 0x7a, 0xb6, 0x37, 0xcb, 0xe6, 0x17, 0x46, 0xc9, 0x5a, + 0xa6, 0x27, 0x77, 0x65, 0x44, 0xff, 0xfb, 0xd4, 0x60, 0x1e, 0x8f, 0xd6, + 0xaf, 0x70, 0x39, 0x03, 0xcf, 0x4b, 0x70, 0x9d, 0xac, 0xd6, 0xe1, 0x7d, + 0xe5, 0x6e, 0xda, 0x4d, 0xc0, 0xe4, 0x0f, 0x3d, 0x2d, 0xc2, 0x53, 0xb4, + 0x1b, 0x45, 0xe5, 0xa9, 0xb8, 0x94, 0x08, 0x62, 0x75, 0xf9, 0xd0, 0xa5, + 0x3e, 0x15, 0xa5, 0xfe, 0x44, 0x02, 0x95, 0xc5, 0xf2, 0xbd, 0x38, 0x9f, + 0x8e, 0xc9, 0x12, 0xd1, 0x5d, 0xb0, 0x3e, 0x7d, 0x5a, 0xe3, 0x11, 0xe4, + 0xd4, 0xaf, 0x16, 0x69, 0x02, 0x14, 0x1a, 0xce, 0xc9, 0x57, 0xaa, 0xc0, + 0xe1, 0x65, 0x22, 0xa8, 0x88, 0xa9, 0x59, 0xc1, 0xc6, 0x59, 0x7a, 0x67, + 0x4e, 0xa6, 0xaa, 0x31, 0xc2, 0x74, 0x97, 0x44, 0xf2, 0xdc, 0x89, 0xe9, + 0x4d, 0x94, 0xd1, 0x08, 0x84, 0x23, 0xcd, 0x95, 0x5c, 0x85, 0x01, 0x09, + 0x5a, 0x0f, 0xea, 0x12, 0x77, 0x2a, 0xae, 0x20, 0x36, 0xe3, 0x24, 0xaa, + 0x09, 0x06, 0x8d, 0x92, 0x12, 0x15, 0x49, 0xe4, 0x57, 0x28, 0x3c, 0x91, + 0x34, 0x38, 0x7d, 0x34, 0x88, 0xbb, 0x48, 0x5e, 0xa4, 0xfa, 0xcc, 0x20, + 0x67, 0x50, 0xae, 0xac, 0x86, 0x23, 0xb6, 0xd8, 0x8a, 0x30, 0x81, 0x94, + 0xe4, 0xe1, 0x04, 0x8a, 0x31, 0x22, 0xc6, 0x2d, 0xd0, 0x45, 0x38, 0xa4, + 0x9a, 0x16, 0xed, 0xe4, 0x88, 0x45, 0x44, 0x08, 0x1d, 0x64, 0x57, 0x03, + 0x4d, 0x27, 0x40, 0x04, 0x00, 0x14, 0x50, 0x02, 0x09, 0x80, 0x76, 0x00, + 0x19, 0x80, 0xe8, 0x01, 0x01, 0x81, 0xe6, 0x03, 0xa9, 0x86, 0x0c, 0x15, + 0x71, 0xb3, 0xc8, 0x29, 0x69, 0x86, 0x78, 0x05, 0xb1, 0x81, 0xee, 0x04, + 0x79, 0x80, 0xbe, 0x04, 0x09, 0x80, 0x74, 0x05, 0x71, 0x80, 0xfe, 0x02, + 0x71, 0x80, 0x16, 0x01, 0x38, 0xc0, 0x00, 0x0b, 0x4c, 0x98, 0x17, 0xf3, + 0x00, 0xc0, 0x43, 0xd0, 0x85, 0x53, 0xd6, 0xa5, 0x2c, 0x66, 0xdb, 0xc4, + 0x92, 0x58, 0x10, 0xd3, 0xca, 0xf5, 0x44, 0x4c, 0xeb, 0x17, 0xa5, 0x2f, + 0x2e, 0x5c, 0x21, 0x66, 0x2c, 0x77, 0xdf, 0xd3, 0xfc, 0x7d, 0xff, 0xbd, + 0x3f, 0xe8, 0xee, 0xfa, 0x32, 0x16, 0x6d, 0x4c, 0x8a, 0xd7, 0x47, 0x2e, + 0x8b, 0xaa, 0x1a, 0x99, 0x96, 0x75, 0x75, 0x55, 0xa2, 0xab, 0xb3, 0x2a, + 0x90, 0xa2, 0x13, 0x55, 0x16, 0xbc, 0xf6, 0x47, 0x3a, 0x3b, 0x22, 0x25, + 0xcc, 0xed, 0xd4, 0xd5, 0xb2, 0xa1, 0x9e, 0xad, 0x77, 0x2b, 0x16, 0x64, + 0x21, 0xc8, 0x03, 0xa9, 0xe3, 0x48, 0xee, 0x7a, 0x0d, 0x10, 0x0d, 0x77, + 0x1f, 0x30, 0xd0, 0x93, 0x01, 0x21, 0x60, 0x34, 0xbd, 0x3c, 0x43, 0x2a, + 0x93, 0x2b, 0x3b, 0xc1, 0x0b, 0x53, 0x0c, 0x10, 0xbc, 0x30, 0x2a, 0x07, + 0xe3, 0x12, 0x51, 0x15, 0x30, 0x6f, 0x00, 0xc2, 0x10, 0x17, 0x30, 0xdb, + 0x01, 0x98, 0x0c, 0xb7, 0xeb, 0x89, 0x3c, 0x9e, 0xe2, 0x25, 0x5c, 0x3a, + 0x58, 0x45, 0x7c, 0xe9, 0x37, 0xcb, 0x19, 0x3e, 0x32, 0x4a, 0xf2, 0x6a, + 0x78, 0x94, 0xa7, 0x41, 0xa9, 0x0c, 0x94, 0xc7, 0x3a, 0x5a, 0xd5, 0xaf, + 0xa1, 0xae, 0x1a, 0x95, 0x4c, 0xd8, 0x27, 0xaa, 0x79, 0x1b, 0x53, 0xf3, + 0x4d, 0xd5, 0xee, 0xea, 0xce, 0xc6, 0xe1, 0x8d, 0x46, 0x86, 0xf3, 0x77, + 0x28, 0x6b, 0xd5, 0x57, 0x75, 0x9b, 0x5e, 0x28, 0x4a, 0xa1, 0x56, 0xf9, + 0x02, 0x6b, 0xa8, 0xd5, 0xa4, 0xca, 0x43, 0xc1, 0x32, 0x0c, 0x59, 0x09, + 0x1b, 0x9f, 0x39, 0x22, 0x53, 0x5e, 0x17, 0x48, 0x91, 0x1b, 0x4d, 0x20, + 0x58, 0xb4, 0xca, 0x49, 0x0c, 0xc8, 0xd4, 0x9c, 0x24, 0x48, 0x22, 0xc3, + 0xa4, 0x85, 0xed, 0xbd, 0x25, 0x67, 0x09, 0xa6, 0x92, 0x23, 0x26, 0xd9, + 0x28, 0x88, 0x91, 0x7a, 0x25, 0x7b, 0x53, 0x94, 0x22, 0xc8, 0xe4, 0xdb, + 0x79, 0xc4, 0x31, 0x42, 0x28, 0x5e, 0x96, 0x42, 0x51, 0xa2, 0x37, 0x39, + 0x54, 0x6f, 0x5e, 0xaa, 0x08, 0x68, 0x5c, 0x98, 0xad, 0x46, 0x48, 0x60, + 0x40, 0x67, 0xc5, 0xc4, 0xad, 0x2d, 0x14, 0x6b, 0xae, 0xdd, 0x79, 0xa7, + 0x50, 0x65, 0x42, 0x8d, 0x92, 0x31, 0xbd, 0xe5, 0xc8, 0x5e, 0x83, 0x01, + 0x60, 0x1d, 0x30, 0x0d, 0x02, 0xe3, 0x01, 0x00, 0x55, 0x30, 0x25, 0x0a, + 0x23, 0x05, 0x81, 0x8f, 0x31, 0x31, 0xa9, 0x63, 0xd8, 0xdb, 0xb3, 0x31, + 0xab, 0x17, 0xe3, 0x01, 0xe0, 0x6f, 0x05, 0x03, 0x91, 0x84, 0x20, 0x24, + 0x98, 0xa3, 0x80, 0x01, 0x83, 0xd8, 0x01, 0x0d, 0x00, 0x6b, 0x52, 0x0d, + 0x48, 0x63, 0x48, 0x27, 0xdb, 0x1e, 0x5e, 0x9b, 0x92, 0x93, 0xa5, 0x0d, + 0x31, 0x87, 0xa6, 0x53, 0x2e, 0x4d, 0x33, 0x8b, 0xb5, 0x38, 0x5e, 0x18, + 0xa5, 0xf7, 0xf3, 0xef, 0x87, 0xcd, 0xb2, 0x2a, 0xdf, 0x36, 0x94, 0x37, + 0x6b, 0xa2, 0xe7, 0xeb, 0x44, 0x97, 0x39, 0x2c, 0x86, 0x3b, 0x1a, 0xb5, + 0x77, 0x7f, 0x98, 0xe7, 0xbb, 0x98, 0xce, 0xf4, 0x7a, 0xa9, 0xa6, 0xa5, + 0x4c, 0x49, 0xe6, 0x31, 0xa6, 0xb2, 0xa9, 0xa7, 0x1e, 0x86, 0x18, 0xf6, + 0x3d, 0x15, 0x3d, 0x59, 0x8e, 0x9c, 0xda, 0x35, 0x51, 0xcf, 0x47, 0x77, + 0x21, 0x0c, 0x46, 0xe6, 0x68, 0xee, 0xca, 0xe4, 0x88, 0x04, 0x0c, 0xbc, + 0xd3, 0x48, 0x55, 0x00, 0x3c, 0x01, 0x80, 0xd8, 0x9d, 0x19, 0xad, 0x29, + 0xd9, 0xbc, 0xd8, 0x7e, 0x9d, 0x50, 0x8e, 0x21, 0x87, 0xe8, 0x1b, 0x18, + 0x11, 0x04, 0x39, 0x8f, 0x78, 0x06, 0x11, 0x04, 0xd8, 0x30, 0x03, 0x8c, + 0x2d, 0x81, 0x81, 0x34, 0x43, 0x80, 0x06, 0x04, 0x58, 0x57, 0xd9, 0x14, + 0x25, 0x48, 0x42, 0x7c, 0x5f, 0x42, 0x44, 0x0f, 0x13, 0xcd, 0xd8, 0x13, + 0xcd, 0xe7, 0x22, 0x18, 0x4e, 0xff, 0xfb, 0xd4, 0x60, 0x1f, 0x0f, 0x96, + 0xbc, 0x70, 0x39, 0x2b, 0xcf, 0x4b, 0x70, 0x96, 0x2d, 0x26, 0xe6, 0x7c, + 0xca, 0x6e, 0x1a, 0x71, 0xc0, 0xe4, 0x0f, 0x3d, 0x2d, 0xc2, 0x72, 0xb2, + 0x5b, 0x01, 0xe4, 0xc1, 0xb9, 0xc8, 0x51, 0x08, 0xc9, 0xb8, 0x84, 0x96, + 0x85, 0x1c, 0xc6, 0xf5, 0x5a, 0x50, 0x73, 0x20, 0xcf, 0xfa, 0x16, 0x37, + 0xc7, 0x39, 0xd0, 0xb8, 0x9e, 0x2b, 0x34, 0x56, 0x0a, 0xc0, 0xdc, 0x2b, + 0x5a, 0xdb, 0x51, 0xdd, 0xa5, 0xdc, 0xe4, 0xdf, 0x37, 0xda, 0xe6, 0x12, + 0x96, 0x2a, 0x59, 0xb2, 0x2d, 0x44, 0x8d, 0x82, 0xf2, 0x19, 0x21, 0x64, + 0x91, 0xca, 0xa8, 0x44, 0x80, 0x81, 0x84, 0x24, 0x24, 0x78, 0x69, 0x04, + 0x64, 0x5c, 0x68, 0xa1, 0xf8, 0x9b, 0x81, 0x58, 0x41, 0x62, 0x35, 0x8b, + 0x13, 0x51, 0xc1, 0xd0, 0xd3, 0x40, 0xbc, 0x27, 0xe3, 0xa6, 0x5e, 0x57, + 0x09, 0x62, 0xc4, 0x60, 0xda, 0x64, 0xec, 0x8a, 0x16, 0x5d, 0x36, 0x96, + 0xd2, 0x08, 0xde, 0xc9, 0x1e, 0x92, 0xb2, 0x86, 0x32, 0x6c, 0x8a, 0x0a, + 0x23, 0x44, 0xcc, 0xc8, 0x53, 0x41, 0x22, 0xa5, 0x4f, 0x34, 0xf8, 0xb0, + 0x3d, 0x01, 0x23, 0x93, 0x36, 0xb9, 0xea, 0x62, 0x2a, 0xb0, 0xfd, 0x51, + 0x5a, 0x40, 0xf6, 0xce, 0x1f, 0x51, 0xb8, 0xa6, 0x5f, 0x29, 0xf2, 0x74, + 0x54, 0x55, 0x40, 0x02, 0xc8, 0x00, 0x0a, 0xb4, 0x0c, 0x00, 0x99, 0x80, + 0x3c, 0x00, 0x81, 0x80, 0x8e, 0x01, 0x99, 0x81, 0x40, 0x04, 0x41, 0x84, + 0x46, 0x14, 0x49, 0xa0, 0xee, 0x3f, 0x71, 0x84, 0x02, 0x06, 0x99, 0x81, + 0x40, 0x03, 0x81, 0x80, 0x84, 0x02, 0xa1, 0x80, 0x86, 0x03, 0x39, 0x81, + 0x88, 0x02, 0x49, 0x80, 0x34, 0x00, 0x52, 0xc7, 0x86, 0x1d, 0x02, 0xc9, + 0x91, 0x68, 0x2a, 0x12, 0x93, 0xc6, 0xbe, 0x11, 0x33, 0x0d, 0x39, 0x1d, + 0x39, 0x24, 0x84, 0xf3, 0xc8, 0x61, 0x0c, 0xd9, 0xdc, 0xc2, 0xff, 0xad, + 0xef, 0xff, 0xfd, 0x5b, 0xd3, 0x6a, 0xa1, 0x89, 0xa5, 0x1a, 0xdb, 0x33, + 0x1a, 0x6a, 0xb2, 0x2d, 0xd1, 0x59, 0xba, 0x33, 0xaf, 0x38, 0xed, 0x12, + 0x6b, 0xbc, 0xf2, 0x66, 0x37, 0xc8, 0x17, 0x35, 0x26, 0x35, 0x0e, 0x3d, + 0x4f, 0x32, 0x65, 0xdb, 0x55, 0x4a, 0xac, 0xe3, 0x6e, 0xaf, 0xb2, 0x68, + 0x6a, 0x32, 0xe6, 0xba, 0x00, 0x61, 0x32, 0x9c, 0x6a, 0x21, 0xcf, 0x72, + 0x01, 0x2c, 0x1b, 0x50, 0xc3, 0xe6, 0xd3, 0x3c, 0xa1, 0x81, 0xb8, 0xb9, + 0x19, 0x4d, 0xac, 0x31, 0xc4, 0xf3, 0x64, 0x98, 0x7e, 0x96, 0x91, 0x83, + 0x28, 0x93, 0x98, 0x11, 0x04, 0x79, 0x8a, 0x40, 0x03, 0x8b, 0x01, 0x41, + 0x80, 0x98, 0x07, 0x98, 0x39, 0x84, 0x8a, 0x3d, 0x29, 0x05, 0xd2, 0xc1, + 0x21, 0xc5, 0xd0, 0xf5, 0xa7, 0x91, 0x64, 0xb2, 0x0a, 0x29, 0xa9, 0x46, + 0x70, 0x16, 0x20, 0xc3, 0x52, 0x01, 0x5c, 0xca, 0x38, 0x8c, 0x82, 0x1c, + 0x74, 0x2b, 0x86, 0x02, 0x70, 0xea, 0x7c, 0x79, 0x12, 0x33, 0xad, 0x9d, + 0xd9, 0x82, 0xfd, 0xc0, 0xed, 0x2f, 0x07, 0xfa, 0xbd, 0x79, 0x6a, 0x1d, + 0x21, 0xc3, 0x86, 0xfa, 0xb0, 0x5f, 0xda, 0x2a, 0x3c, 0xd7, 0x23, 0xe9, + 0xae, 0xab, 0x08, 0x8d, 0x46, 0x1a, 0x8d, 0x03, 0xd9, 0x5c, 0xdc, 0x9e, + 0xcb, 0x1c, 0xfb, 0x23, 0xca, 0x10, 0xd2, 0xea, 0xbe, 0x6f, 0x2f, 0x68, + 0x05, 0x12, 0x30, 0xda, 0x3c, 0x94, 0x18, 0x69, 0x41, 0x99, 0x46, 0x10, + 0x51, 0xcd, 0x5d, 0x26, 0x75, 0x8d, 0x44, 0x21, 0x48, 0x6d, 0xa2, 0x18, + 0xe2, 0x29, 0x0a, 0xe9, 0x13, 0x67, 0x4d, 0xbd, 0x14, 0x54, 0x2e, 0x8d, + 0xb4, 0x12, 0x28, 0xdd, 0x2a, 0xd3, 0x5e, 0x65, 0xa3, 0x02, 0xd8, 0x40, + 0xdc, 0x16, 0x64, 0xd2, 0xab, 0xa8, 0x98, 0x7d, 0x02, 0x12, 0x1a, 0x27, + 0x17, 0x67, 0x7c, 0x10, 0x2b, 0x6d, 0x74, 0x6d, 0x54, 0xa0, 0xae, 0xc9, + 0x64, 0x18, 0xc4, 0x95, 0x3a, 0xa2, 0xf4, 0xba, 0x0f, 0x36, 0xd1, 0x22, + 0x20, 0x51, 0xac, 0xd7, 0x08, 0x40, 0x28, 0xc0, 0x00, 0x03, 0x4c, 0x01, + 0x40, 0x78, 0xc0, 0x40, 0x12, 0xcc, 0x0d, 0x43, 0x48, 0xc2, 0xb1, 0xea, + 0x4e, 0xca, 0x88, 0x00, 0xc5, 0xc8, 0x24, 0x4c, 0x0c, 0xc0, 0x48, 0x08, + 0x01, 0xa6, 0x04, 0xe0, 0x70, 0x60, 0x84, 0x06, 0xe0, 0x60, 0x79, 0x57, + 0x50, 0xe8, 0x6a, 0xc3, 0x48, 0xd1, 0x21, 0x3e, 0x44, 0xab, 0x09, 0xb4, + 0xd3, 0x68, 0xdc, 0xa1, 0x7a, 0x8b, 0x14, 0x96, 0xd2, 0xbd, 0xbd, 0x75, + 0xa7, 0xf3, 0x63, 0x09, 0x5f, 0xf5, 0xb9, 0x75, 0xfd, 0xb5, 0x99, 0x7b, + 0xa9, 0x2a, 0x6a, 0x49, 0x06, 0xb3, 0xaf, 0x64, 0x99, 0x93, 0x76, 0x64, + 0x4e, 0x5d, 0x2a, 0x33, 0x65, 0xad, 0x8c, 0x10, 0x53, 0xad, 0x06, 0x5e, + 0xcb, 0x63, 0xe9, 0x20, 0x93, 0x26, 0xa4, 0x6b, 0x5a, 0x4b, 0x4d, 0x55, + 0xa1, 0x49, 0x7a, 0x33, 0xa9, 0xd9, 0xd2, 0x5a, 0x14, 0x35, 0x4e, 0x20, + 0x6b, 0xa7, 0xa2, 0xd5, 0xad, 0x36, 0x4d, 0x9e, 0xa3, 0xb3, 0x79, 0xba, + 0x2a, 0x0f, 0x48, 0x6c, 0x1b, 0x4d, 0x5a, 0xa7, 0x52, 0x49, 0x98, 0x86, + 0x6c, 0xc9, 0x50, 0xd8, 0x51, 0x30, 0x6c, 0x01, 0xb3, 0x20, 0xb4, 0x55, + 0x34, 0x15, 0x8e, 0xb3, 0x8b, 0xa2, 0x66, 0x31, 0x22, 0x07, 0xd3, 0x03, + 0x70, 0x58, 0x31, 0x1c, 0x10, 0x73, 0x01, 0xe0, 0x10, 0x01, 0x00, 0xc0, + 0x58, 0x27, 0x15, 0x62, 0x25, 0x44, 0x56, 0xeb, 0x80, 0xae, 0x2f, 0xe4, + 0xb9, 0x58, 0x9e, 0x42, 0x40, 0xfc, 0xd2, 0xc6, 0x4c, 0x8d, 0x42, 0x89, + 0x1a, 0xab, 0x5c, 0x96, 0xf3, 0xff, 0xfb, 0xd4, 0x60, 0x1e, 0x0d, 0xf6, + 0x96, 0x70, 0x39, 0x03, 0xcf, 0x4b, 0x70, 0x9a, 0xcc, 0x86, 0xb0, 0x79, + 0x2d, 0x6e, 0x5a, 0x91, 0xc0, 0xe4, 0x4f, 0x3d, 0x2d, 0xc2, 0x5e, 0x32, + 0x1b, 0x01, 0xe3, 0x35, 0xb9, 0x2e, 0x54, 0x79, 0x74, 0x25, 0x4f, 0x9b, + 0x5c, 0xcd, 0xa5, 0x22, 0x78, 0x8e, 0x40, 0x31, 0x31, 0x45, 0xb4, 0x44, + 0xeb, 0x03, 0x43, 0x95, 0xe0, 0xb5, 0x46, 0x6e, 0xdc, 0x16, 0x47, 0xd5, + 0xa4, 0x16, 0xf3, 0xce, 0xcf, 0x57, 0x66, 0x85, 0x7b, 0xc4, 0x4a, 0x4a, + 0x6c, 0x5a, 0xb1, 0x29, 0x04, 0x64, 0x4b, 0x12, 0x01, 0x11, 0x25, 0x0d, + 0xa8, 0x41, 0x06, 0x82, 0x30, 0x22, 0xaa, 0x71, 0x01, 0x19, 0x84, 0x44, + 0x02, 0x95, 0x9c, 0xa0, 0xd1, 0x2d, 0x13, 0xa7, 0x35, 0x4a, 0xc5, 0x68, + 0x71, 0x29, 0xc2, 0xc6, 0x28, 0xc0, 0x1b, 0x61, 0x91, 0x55, 0xa3, 0xa6, + 0x10, 0x19, 0x0d, 0xc4, 0x0c, 0xc7, 0x20, 0x67, 0x6d, 0x6a, 0x56, 0x8d, + 0x5c, 0x54, 0x8a, 0xcb, 0xb1, 0x68, 0x92, 0x42, 0xd4, 0x10, 0x3a, 0x68, + 0xb9, 0xc8, 0xc0, 0xaa, 0x25, 0x62, 0x65, 0x58, 0xc8, 0xfa, 0x44, 0xe3, + 0x27, 0xde, 0xa4, 0x45, 0x4d, 0xc8, 0xfa, 0x68, 0xa2, 0xb5, 0xa9, 0x1c, + 0x2e, 0x1f, 0xea, 0x26, 0x5e, 0xad, 0x48, 0xe1, 0x67, 0x2d, 0x53, 0x51, + 0x8a, 0xb0, 0x54, 0x7e, 0x01, 0x00, 0x69, 0x81, 0x68, 0x1a, 0x18, 0x7b, + 0x25, 0x79, 0x82, 0x62, 0x06, 0x98, 0x1f, 0x80, 0x52, 0x83, 0xb7, 0x36, + 0x1a, 0x60, 0x96, 0x0d, 0x83, 0xc0, 0x13, 0x72, 0x71, 0xb1, 0x5d, 0x1d, + 0x22, 0x69, 0xe9, 0x13, 0x88, 0x6d, 0xb3, 0xa8, 0x94, 0xea, 0x3a, 0xd4, + 0x83, 0x77, 0x34, 0x08, 0x5b, 0xe5, 0x15, 0xc8, 0x25, 0x39, 0xad, 0x27, + 0xff, 0xa9, 0x5b, 0xe5, 0x7b, 0x3c, 0x45, 0x48, 0x52, 0x4d, 0x13, 0xaa, + 0x4d, 0x99, 0x75, 0x32, 0xd4, 0xdb, 0xba, 0x91, 0x7b, 0x98, 0xb9, 0xe3, + 0xc8, 0x25, 0xa2, 0x6a, 0x92, 0xe8, 0xa9, 0x91, 0x4a, 0x82, 0xec, 0x82, + 0x67, 0x10, 0x45, 0x1a, 0x96, 0xea, 0x65, 0x19, 0xba, 0x68, 0x29, 0x66, + 0x46, 0x2b, 0x37, 0x4e, 0x68, 0x92, 0xe7, 0x56, 0x8d, 0x2b, 0xa9, 0x25, + 0xd2, 0x3c, 0x60, 0xaa, 0x06, 0x68, 0x3d, 0x54, 0x11, 0x35, 0xd2, 0x35, + 0x34, 0x5a, 0x08, 0x32, 0xda, 0xb3, 0x8c, 0x02, 0xac, 0x6d, 0x4d, 0x25, + 0x25, 0x45, 0x49, 0x9d, 0x8b, 0x82, 0x19, 0xf2, 0x30, 0x9a, 0x56, 0x90, + 0xc0, 0x7c, 0x42, 0x0c, 0x38, 0x8f, 0x80, 0xcf, 0x95, 0x6a, 0x0e, 0xc0, + 0x03, 0xf4, 0xc3, 0xb0, 0x3e, 0x8c, 0x09, 0x41, 0xb8, 0x88, 0x43, 0x09, + 0x82, 0x65, 0x67, 0x18, 0x2b, 0x04, 0x7d, 0xe4, 0x00, 0xb7, 0x45, 0x7e, + 0xd0, 0xc7, 0xa1, 0x9c, 0x82, 0x17, 0x01, 0xf2, 0x29, 0x61, 0x1e, 0x27, + 0x02, 0xda, 0xac, 0x62, 0x2f, 0x67, 0xf9, 0x3b, 0x59, 0x26, 0x23, 0xa4, + 0xa9, 0x54, 0xaa, 0x4c, 0x13, 0x08, 0x3c, 0x23, 0x16, 0xc3, 0xa8, 0xe2, + 0x34, 0xa2, 0xae, 0x94, 0xef, 0x4b, 0x65, 0x53, 0x94, 0x57, 0xab, 0x69, + 0x1d, 0xc9, 0xfb, 0xe8, 0xcf, 0xee, 0xfe, 0x1c, 0x08, 0xab, 0x7d, 0x3f, + 0x90, 0xed, 0xa6, 0xbc, 0x9c, 0x5d, 0x7c, 0x55, 0x84, 0x6a, 0x91, 0x48, + 0xc4, 0xfc, 0x17, 0x26, 0x64, 0xc4, 0x50, 0xa7, 0x42, 0x67, 0xc3, 0x43, + 0xe8, 0x4a, 0x58, 0xae, 0x50, 0x2d, 0x65, 0x10, 0x46, 0x8f, 0x2e, 0x64, + 0x12, 0x28, 0x9c, 0xa1, 0xd1, 0x38, 0x66, 0x87, 0x1d, 0xab, 0x45, 0x1a, + 0x32, 0xea, 0x10, 0xae, 0xf9, 0xa8, 0x75, 0x52, 0xe4, 0xac, 0x23, 0x21, + 0x44, 0x4e, 0x80, 0xf3, 0xd5, 0x58, 0xfd, 0xc8, 0x56, 0xf3, 0xb3, 0x47, + 0xd5, 0x8c, 0x49, 0xde, 0xe1, 0x30, 0x8d, 0x71, 0xd5, 0xd0, 0xaa, 0x80, + 0x89, 0x32, 0x58, 0xe2, 0x12, 0xce, 0x2e, 0xb6, 0xaf, 0x21, 0xa1, 0x4b, + 0x0a, 0xd4, 0x11, 0xcd, 0xb5, 0xa5, 0x2d, 0xc7, 0x4d, 0x78, 0x42, 0x51, + 0x2b, 0x2d, 0x59, 0xb9, 0xa8, 0x89, 0x4c, 0x48, 0xa2, 0xe8, 0x87, 0x00, + 0xf0, 0x38, 0x14, 0x4c, 0x1a, 0x40, 0x10, 0xc6, 0x18, 0x5a, 0x0f, 0x38, + 0x1a, 0x30, 0xc5, 0x30, 0x0f, 0xc0, 0x41, 0x36, 0x09, 0x01, 0xf3, 0x00, + 0x10, 0x38, 0x30, 0x88, 0x03, 0x61, 0x10, 0x00, 0xbf, 0xd1, 0x92, 0x87, + 0x86, 0x22, 0x48, 0xe6, 0x29, 0x03, 0x0e, 0x01, 0x98, 0x91, 0x3c, 0x30, + 0xc3, 0x19, 0x3b, 0xbd, 0xf2, 0x83, 0xec, 0xab, 0x18, 0xa7, 0x98, 0xd7, + 0xfb, 0xb9, 0xff, 0x2e, 0xe9, 0x90, 0x6a, 0xf4, 0x1d, 0x5d, 0xa8, 0xa6, + 0xb5, 0x26, 0xb4, 0x19, 0x69, 0x22, 0x9a, 0xde, 0xee, 0xb6, 0x53, 0x24, + 0xc9, 0x23, 0xa0, 0x8b, 0xba, 0xd4, 0xa5, 0x32, 0x26, 0xa6, 0x2d, 0x73, + 0x06, 0x63, 0xac, 0x66, 0xce, 0x85, 0x94, 0xef, 0x41, 0x6b, 0x6b, 0xba, + 0xab, 0x4d, 0x0a, 0x49, 0xaa, 0x69, 0x52, 0x96, 0xe8, 0x32, 0xeb, 0x46, + 0x81, 0x8c, 0xea, 0xab, 0x75, 0x32, 0x6c, 0xec, 0x83, 0xd1, 0x89, 0x89, + 0x4d, 0x24, 0x2b, 0x64, 0x11, 0x36, 0x3a, 0xa1, 0xf8, 0x16, 0x28, 0x9e, + 0xd0, 0x32, 0x15, 0x60, 0x0c, 0x00, 0xc0, 0x84, 0xd1, 0x9c, 0xef, 0x4e, + 0x2b, 0x15, 0xd8, 0xdc, 0x20, 0x9d, 0xc5, 0x00, 0x2c, 0xc0, 0x4c, 0x24, + 0x8c, 0x00, 0x03, 0x5c, 0x20, 0x3f, 0x03, 0x80, 0x10, 0xc2, 0x4c, 0x1d, + 0x96, 0xb2, 0x3f, 0xb2, 0xa9, 0x5b, 0x98, 0x5d, 0x0f, 0x42, 0x42, 0x4a, + 0x46, 0x9a, 0x84, 0xbf, 0x3c, 0x2e, 0xa9, 0x53, 0x7d, 0x65, 0x54, 0x4f, + 0x99, 0x90, 0xf6, 0x83, 0xbc, 0xff, 0xfb, 0xd4, 0x60, 0x1f, 0x0f, 0xd6, + 0xba, 0x70, 0x39, 0x0b, 0xcf, 0x4b, 0x74, 0x97, 0xec, 0xa6, 0xb0, 0x78, + 0xc8, 0x6e, 0x5a, 0x8d, 0xc0, 0xe4, 0x0f, 0x3d, 0x2d, 0xc2, 0x6d, 0xb3, + 0x9a, 0xc5, 0xf4, 0x8d, 0xb9, 0x86, 0xbb, 0x59, 0x1e, 0x4c, 0xe5, 0xc8, + 0xb2, 0x2b, 0x86, 0xf8, 0x8d, 0x28, 0x4a, 0x52, 0x70, 0x42, 0xd8, 0xcf, + 0x13, 0xe8, 0x93, 0xc6, 0x39, 0x54, 0xcc, 0x4f, 0x58, 0xb1, 0x16, 0xcf, + 0xa3, 0x4f, 0x3a, 0x77, 0x71, 0x94, 0x0b, 0x49, 0x47, 0x5a, 0x8b, 0xbd, + 0x9e, 0xdc, 0x2e, 0x5c, 0xbb, 0x6d, 0x21, 0x58, 0xa2, 0x0d, 0x69, 0xec, + 0x36, 0x8e, 0x05, 0x51, 0x93, 0xa9, 0x12, 0x89, 0x34, 0x4c, 0x89, 0xf2, + 0x42, 0x2a, 0x22, 0x2d, 0xd1, 0x24, 0xab, 0x48, 0x4d, 0x14, 0x63, 0x22, + 0x66, 0x12, 0x26, 0x3c, 0xa9, 0xd4, 0x48, 0xe1, 0x28, 0x23, 0x19, 0x6c, + 0x15, 0x42, 0x34, 0xa8, 0xa1, 0x20, 0x41, 0x38, 0xae, 0x58, 0xea, 0xc5, + 0x11, 0x4d, 0x6d, 0x82, 0x53, 0x66, 0x46, 0x89, 0x2e, 0x68, 0x2a, 0x24, + 0x44, 0xb0, 0x34, 0xc0, 0xa7, 0x18, 0x26, 0x51, 0x86, 0x46, 0xa4, 0x80, + 0x53, 0x1c, 0x5b, 0x3a, 0xd0, 0x6e, 0x4b, 0x35, 0x51, 0x2b, 0x65, 0x89, + 0x32, 0x53, 0x34, 0x81, 0xfb, 0x24, 0x73, 0x51, 0x4a, 0xa5, 0x17, 0x33, + 0xa5, 0x88, 0x8c, 0x03, 0x80, 0x0c, 0xaa, 0x03, 0xc1, 0x70, 0x3b, 0x30, + 0x04, 0x07, 0xc3, 0x02, 0x51, 0x37, 0x30, 0x6e, 0x8a, 0x43, 0x78, 0x2a, + 0x39, 0x31, 0x24, 0x13, 0x83, 0x06, 0x90, 0x7f, 0x30, 0x49, 0x03, 0x33, + 0x06, 0xa0, 0x2c, 0x31, 0x11, 0x00, 0x70, 0xe0, 0xb7, 0x26, 0x00, 0x06, + 0x4e, 0x42, 0x83, 0x40, 0x28, 0x07, 0x5e, 0x40, 0x89, 0x84, 0x17, 0xc1, + 0x81, 0x5c, 0x15, 0x87, 0x00, 0xb5, 0x73, 0x0e, 0xad, 0xb3, 0x4a, 0x7d, + 0xda, 0x95, 0xbd, 0x7e, 0xf3, 0x6c, 0xf3, 0x93, 0x3b, 0xcd, 0x7d, 0x52, + 0x47, 0xd7, 0x6c, 0x93, 0x17, 0x0f, 0x29, 0xa5, 0x41, 0x1c, 0x4d, 0xc5, + 0xc4, 0x71, 0x35, 0x55, 0x2e, 0xd2, 0xe9, 0x74, 0xf3, 0x1a, 0xda, 0x17, + 0x25, 0x46, 0xf4, 0x3a, 0x25, 0x0b, 0xc7, 0xd5, 0xd7, 0x59, 0x9d, 0xc2, + 0x42, 0xb3, 0x30, 0xf2, 0x6e, 0x15, 0xb1, 0xeb, 0x23, 0x11, 0x8b, 0xcc, + 0xe0, 0xc9, 0x67, 0x4b, 0x45, 0x98, 0x61, 0xcc, 0xc0, 0x24, 0x27, 0x57, + 0xaf, 0x18, 0xcf, 0x63, 0x86, 0xdc, 0x9a, 0x4a, 0x23, 0x85, 0x98, 0x11, + 0x83, 0x79, 0x99, 0xc1, 0x25, 0x1b, 0x74, 0xa0, 0x21, 0xaa, 0x39, 0x37, + 0x95, 0x41, 0x34, 0xc0, 0xec, 0x0d, 0x4c, 0x8b, 0xc0, 0xcc, 0x88, 0x31, + 0x00, 0x80, 0x1c, 0x61, 0x78, 0x03, 0xeb, 0xd5, 0xd9, 0x7e, 0x1e, 0x75, + 0x8a, 0x8f, 0x31, 0x52, 0x21, 0x7c, 0xf0, 0x89, 0x64, 0x32, 0x93, 0xe5, + 0xb0, 0xe1, 0x50, 0x18, 0xc9, 0x43, 0xa9, 0x88, 0xe4, 0x7a, 0x84, 0x2b, + 0x8f, 0x63, 0xc8, 0xc0, 0x45, 0x90, 0x71, 0xe6, 0x7c, 0x9e, 0x0a, 0x34, + 0x49, 0xfa, 0x88, 0x43, 0x8e, 0xe5, 0x6a, 0xad, 0x85, 0xbd, 0xdb, 0x96, + 0x1f, 0x47, 0xa3, 0x2c, 0xda, 0x95, 0x95, 0x75, 0xd7, 0xc9, 0xc5, 0xb8, + 0x49, 0x64, 0xc4, 0x88, 0xed, 0x87, 0xc9, 0xb4, 0xca, 0x0a, 0xa2, 0x48, + 0x3e, 0x91, 0x5c, 0x5d, 0xf0, 0xa4, 0x88, 0x18, 0x25, 0x1d, 0x6d, 0x25, + 0x89, 0x98, 0x50, 0x8d, 0xb4, 0xa8, 0x50, 0x49, 0x86, 0x49, 0x39, 0x1a, + 0x8a, 0x13, 0x08, 0x91, 0x32, 0xb1, 0x00, 0xfc, 0x4e, 0xdd, 0x48, 0xc2, + 0xc5, 0x89, 0xd5, 0x74, 0xe0, 0x83, 0x04, 0x24, 0xac, 0xb4, 0x69, 0x69, + 0xb7, 0x52, 0x49, 0xb4, 0x8f, 0xbc, 0x38, 0xaa, 0x6b, 0x76, 0x61, 0x52, + 0xf0, 0x5c, 0x49, 0x93, 0x7f, 0x59, 0x7b, 0x23, 0x43, 0x33, 0x26, 0x5a, + 0x7a, 0xbd, 0x95, 0x51, 0x95, 0x04, 0xb2, 0x6d, 0xda, 0x39, 0xb1, 0x70, + 0x7a, 0x66, 0x4f, 0x48, 0xa3, 0x7c, 0xd1, 0x88, 0x45, 0x39, 0x28, 0xb9, + 0x70, 0xfb, 0x11, 0xfb, 0x04, 0x42, 0xb4, 0x18, 0x01, 0x40, 0x05, 0x84, + 0x00, 0x64, 0x2c, 0x03, 0x28, 0xb0, 0x18, 0xc6, 0x06, 0x90, 0x00, 0xe6, + 0x15, 0x08, 0x23, 0x86, 0xb4, 0x28, 0x2d, 0xa6, 0x16, 0xc8, 0x01, 0x26, + 0x06, 0x30, 0x09, 0xc6, 0x01, 0x80, 0x0c, 0xc0, 0x90, 0x25, 0xcc, 0x00, + 0xf0, 0x0e, 0x42, 0xa0, 0x0c, 0x2c, 0x0b, 0xa4, 0x02, 0x81, 0xc2, 0x1a, + 0xc5, 0xdb, 0xd2, 0xb3, 0x5c, 0xa5, 0xa9, 0x88, 0x89, 0xca, 0x73, 0x64, + 0x2a, 0xda, 0x60, 0xa1, 0x22, 0x02, 0x52, 0xdb, 0x3f, 0x7a, 0xc4, 0x25, + 0x50, 0xad, 0x8e, 0x4b, 0x2e, 0x19, 0x49, 0x17, 0xcd, 0xaa, 0x15, 0x29, + 0x77, 0x2a, 0x5e, 0x45, 0x93, 0x29, 0x91, 0x94, 0x67, 0x8c, 0x6e, 0xa6, + 0x74, 0x54, 0x9d, 0x05, 0x04, 0xe1, 0x44, 0xa3, 0x91, 0x22, 0x8e, 0x6f, + 0x95, 0x0f, 0x28, 0x76, 0x0e, 0x68, 0xaf, 0xb8, 0x20, 0x46, 0x46, 0x4c, + 0x19, 0x12, 0x85, 0xd8, 0x1c, 0xa4, 0x21, 0xe0, 0x54, 0x16, 0x9a, 0x9a, + 0x43, 0x15, 0x42, 0x72, 0x36, 0x5e, 0x89, 0xec, 0xd8, 0x59, 0x89, 0x6d, + 0x8a, 0x46, 0x3c, 0x51, 0x00, 0x36, 0x30, 0x23, 0x05, 0xd3, 0x4b, 0xf0, + 0x67, 0x32, 0x25, 0x6b, 0x63, 0xa5, 0x91, 0x41, 0x30, 0xb5, 0x0f, 0x03, + 0x04, 0x40, 0xed, 0x30, 0x62, 0x10, 0x83, 0x0a, 0x00, 0x17, 0x58, 0xa6, + 0x16, 0x60, 0x02, 0x44, 0x01, 0xc4, 0xc0, 0x08, 0xe2, 0x3a, 0xd0, 0x11, + 0x19, 0x18, 0xc5, 0xa1, 0x7a, 0x34, 0xcd, 0xd4, 0x7a, 0x16, 0x4f, 0xce, + 0xc6, 0x65, 0xca, 0x31, 0x4e, 0xff, 0xfb, 0xd4, 0x60, 0x1d, 0x8d, 0xd6, + 0xcf, 0x70, 0x39, 0x03, 0xcf, 0x4b, 0x70, 0x94, 0x8d, 0xa6, 0xb0, 0x79, + 0x23, 0x6e, 0x1a, 0x51, 0xc0, 0xe4, 0x2f, 0x3d, 0x2d, 0xc2, 0x6c, 0xb4, + 0x1b, 0x05, 0xf4, 0xa1, 0xb8, 0x72, 0x2a, 0xd0, 0xf3, 0x51, 0x14, 0xa7, + 0x34, 0xa5, 0x42, 0xce, 0x35, 0x31, 0x78, 0x51, 0xc5, 0x4e, 0x46, 0x7c, + 0xb2, 0x7f, 0xb8, 0xb0, 0xca, 0xff, 0x2f, 0xe2, 0xfd, 0xba, 0x99, 0xfe, + 0x61, 0xc6, 0x8d, 0xd3, 0x72, 0x4a, 0xa8, 0x96, 0x64, 0x8f, 0x07, 0xa4, + 0xb9, 0xaf, 0x05, 0xa1, 0x88, 0x2e, 0xb1, 0x5e, 0x26, 0x60, 0x46, 0x65, + 0x41, 0x52, 0x05, 0x45, 0x85, 0x6f, 0x46, 0x55, 0x62, 0x50, 0x56, 0x90, + 0xc9, 0x00, 0x95, 0x64, 0x1a, 0x2c, 0xba, 0x32, 0x70, 0x6d, 0xe3, 0x67, + 0x14, 0x65, 0xa1, 0x49, 0x22, 0xd3, 0x23, 0x26, 0xed, 0x15, 0x5c, 0xc1, + 0x28, 0xbb, 0x24, 0x44, 0x33, 0x6f, 0x14, 0x0f, 0xa0, 0x7c, 0x60, 0xe4, + 0xd1, 0x56, 0xeb, 0x02, 0x89, 0x41, 0x1d, 0x99, 0x19, 0xe5, 0x85, 0x71, + 0x60, 0x85, 0xb3, 0x52, 0x62, 0x21, 0x02, 0x63, 0x2b, 0x0c, 0xb7, 0x08, + 0x22, 0x6a, 0x89, 0x78, 0x62, 0x93, 0x2b, 0x24, 0x49, 0xb4, 0x34, 0x14, + 0x24, 0x10, 0x13, 0xa8, 0xa2, 0x12, 0x34, 0x0d, 0xa1, 0x49, 0x5b, 0xe5, + 0xd1, 0x53, 0x5a, 0xbe, 0x28, 0x54, 0xda, 0x58, 0x60, 0x1a, 0x02, 0x80, + 0xc0, 0x23, 0x10, 0x82, 0x10, 0x88, 0x21, 0xc1, 0x22, 0x9c, 0x60, 0x59, + 0x10, 0x26, 0x87, 0xd5, 0x6c, 0x60, 0xc4, 0x2a, 0xa6, 0x04, 0x00, 0xec, + 0x60, 0x7c, 0x02, 0x00, 0xe0, 0xea, 0x0e, 0x24, 0x91, 0x60, 0xc1, 0x46, + 0x27, 0xb0, 0x0a, 0xca, 0x54, 0x52, 0x4f, 0x03, 0x26, 0xec, 0x99, 0x89, + 0x20, 0x72, 0xed, 0xb3, 0x72, 0xc3, 0xef, 0x83, 0xe4, 0xfc, 0xd8, 0x25, + 0x0c, 0xc7, 0xbd, 0xd5, 0xbe, 0xee, 0xe3, 0xb1, 0xfe, 0xe4, 0x6c, 0xef, + 0xb1, 0x0c, 0x70, 0x49, 0xc2, 0x1c, 0xa1, 0x33, 0x24, 0x53, 0x45, 0xac, + 0xb6, 0xa5, 0x59, 0x52, 0x9c, 0x35, 0x36, 0xaf, 0xff, 0x8f, 0x5d, 0x8e, + 0xe3, 0x10, 0x18, 0xb3, 0x34, 0x5a, 0xe4, 0x71, 0x04, 0xe4, 0xac, 0x99, + 0x59, 0x31, 0x30, 0x42, 0xdc, 0x8c, 0x82, 0x99, 0x39, 0x17, 0x22, 0xfc, + 0x44, 0x11, 0x0c, 0xfc, 0x74, 0x42, 0x0c, 0x20, 0x7c, 0x58, 0xa7, 0x45, + 0x1d, 0x16, 0x81, 0xb1, 0xaa, 0xb1, 0x5a, 0xb2, 0x3a, 0x81, 0x37, 0x30, + 0x50, 0x30, 0x39, 0x15, 0x73, 0x34, 0x82, 0xfb, 0x36, 0x5c, 0x61, 0xb3, + 0x8b, 0x11, 0xe0, 0x12, 0x24, 0xf3, 0x08, 0x00, 0x1f, 0x31, 0x4e, 0x08, + 0x33, 0x0b, 0x20, 0x02, 0x0e, 0x00, 0x63, 0x09, 0x20, 0x3a, 0x0c, 0x00, + 0x85, 0x0b, 0x93, 0x29, 0x9c, 0x52, 0xa1, 0x56, 0xa5, 0x20, 0x06, 0x33, + 0x01, 0x80, 0x9e, 0x65, 0x4e, 0xad, 0x32, 0x98, 0xaa, 0xb4, 0x20, 0x7a, + 0x90, 0x65, 0x0a, 0x80, 0x4e, 0x4e, 0xa7, 0xc7, 0x02, 0x90, 0xdf, 0x48, + 0xa7, 0x19, 0x9f, 0x2b, 0x9e, 0xa6, 0x17, 0x30, 0x91, 0x8e, 0x6b, 0x6a, + 0x56, 0xad, 0xc5, 0x95, 0xce, 0xb4, 0xf9, 0x60, 0x83, 0x08, 0xa4, 0xd3, + 0x51, 0x61, 0x5b, 0x6c, 0xd6, 0x26, 0xf6, 0x20, 0xc9, 0x92, 0x32, 0x36, + 0x4b, 0x12, 0x52, 0x36, 0x39, 0x12, 0x66, 0xd9, 0x5c, 0xd8, 0xa4, 0x70, + 0xc2, 0xca, 0x16, 0x36, 0xd9, 0x07, 0xc5, 0x39, 0x92, 0x86, 0xa9, 0x73, + 0x84, 0x16, 0xb3, 0x65, 0x06, 0x90, 0xb1, 0x17, 0x11, 0x1d, 0x27, 0x42, + 0xda, 0x49, 0xd1, 0xba, 0x22, 0x61, 0x0d, 0x6c, 0xd5, 0x44, 0xb9, 0x0a, + 0xb0, 0x7b, 0x4d, 0x51, 0x3a, 0xe7, 0xc8, 0x12, 0x44, 0x81, 0xeb, 0x34, + 0x82, 0x54, 0xaa, 0x15, 0xe4, 0x9c, 0xc5, 0xd3, 0xc4, 0x4c, 0x1a, 0xb9, + 0xaf, 0x2c, 0x8a, 0xe5, 0xad, 0x99, 0xe6, 0x9e, 0xd4, 0x6e, 0xb9, 0xd5, + 0x44, 0xd2, 0xe2, 0xd2, 0x42, 0xf4, 0x5a, 0x3b, 0x24, 0x98, 0x6d, 0x3b, + 0x43, 0xea, 0x3d, 0x0a, 0x35, 0xd0, 0x37, 0xe5, 0x06, 0x1a, 0x00, 0x40, + 0x04, 0x01, 0xf9, 0x80, 0x84, 0x00, 0xa1, 0x81, 0x36, 0x02, 0x59, 0x83, + 0xf8, 0x0b, 0x61, 0xa1, 0xa0, 0x24, 0xc9, 0x84, 0x34, 0x03, 0xf1, 0x81, + 0x36, 0x02, 0xa9, 0x80, 0x6a, 0x02, 0x79, 0x80, 0x44, 0x03, 0x41, 0x80, + 0xca, 0x01, 0x51, 0x80, 0x06, 0x00, 0x6a, 0xf8, 0x8d, 0x85, 0x17, 0x5d, + 0x05, 0x66, 0x15, 0x7c, 0xd3, 0x11, 0xd1, 0xe8, 0x11, 0xa0, 0x9b, 0xc5, + 0xc8, 0xd3, 0xd9, 0x33, 0xb1, 0xa4, 0x35, 0x57, 0x92, 0xbc, 0xdb, 0x7a, + 0x4e, 0xad, 0x5e, 0x94, 0xf9, 0xf8, 0xb4, 0xe9, 0xf9, 0x8d, 0x7f, 0xe2, + 0x79, 0x9b, 0x95, 0x48, 0x94, 0xda, 0x9b, 0x63, 0xd1, 0x26, 0x07, 0xcc, + 0x1a, 0x96, 0x3d, 0x26, 0x62, 0x69, 0x93, 0xb7, 0x26, 0x29, 0xbc, 0x6c, + 0x56, 0xa9, 0xc0, 0xf8, 0xc6, 0xda, 0x3c, 0xac, 0x43, 0x4a, 0xcd, 0xee, + 0x6d, 0x3a, 0x73, 0x34, 0x97, 0x32, 0x95, 0x3c, 0x9b, 0x45, 0xd2, 0xf1, + 0x47, 0x5b, 0x4e, 0xf8, 0x7e, 0x3b, 0x34, 0xee, 0x06, 0x66, 0xda, 0x08, + 0x01, 0x67, 0x1f, 0xd7, 0xc8, 0xd8, 0x80, 0x0c, 0x13, 0x04, 0xc4, 0xcb, + 0x0d, 0x69, 0x8d, 0xc8, 0xdf, 0x2c, 0xc8, 0x3c, 0xaa, 0x0c, 0x07, 0x04, + 0x7c, 0xc0, 0xb4, 0x1b, 0x0c, 0x03, 0xc0, 0xa8, 0x0c, 0x19, 0x01, 0x70, + 0x11, 0x30, 0x67, 0x07, 0x34, 0xf6, 0x6a, 0x56, 0x5e, 0x88, 0x52, 0x70, + 0xdb, 0x84, 0x6c, 0x25, 0x8b, 0xa4, 0x22, 0xfa, 0xb4, 0x73, 0x9d, 0x82, + 0x2a, 0xaa, 0x33, 0x8e, 0xc3, 0xff, 0xfb, 0xd4, 0x60, 0x1d, 0x8d, 0xd6, + 0x8f, 0x70, 0x39, 0x0b, 0xcf, 0x4b, 0x70, 0x99, 0x2c, 0x86, 0xd2, 0x79, + 0x2b, 0x6e, 0x5a, 0xe1, 0xc0, 0xe4, 0x0f, 0x3d, 0x8d, 0xc2, 0x78, 0x37, + 0xdb, 0x01, 0xe4, 0xb5, 0xb8, 0xbd, 0x42, 0x2d, 0x49, 0xf4, 0x51, 0xda, + 0x9c, 0x56, 0xa1, 0xd3, 0xc1, 0x70, 0x44, 0x48, 0xa1, 0xd4, 0x91, 0xe0, + 0xa9, 0x9e, 0x40, 0x71, 0x81, 0x55, 0x75, 0x5e, 0xc7, 0xd4, 0x37, 0xba, + 0xaf, 0x66, 0x39, 0x46, 0xba, 0x6d, 0xbc, 0xc1, 0x68, 0xb8, 0x6e, 0x5b, + 0x98, 0x85, 0x71, 0x87, 0xa2, 0x4d, 0x19, 0xb9, 0xb7, 0xe9, 0x93, 0xed, + 0x59, 0x75, 0xa9, 0x18, 0xa1, 0x74, 0x22, 0xad, 0x90, 0xb9, 0x06, 0x8f, + 0xa0, 0x65, 0x0f, 0x14, 0x1c, 0x93, 0x85, 0x46, 0x9e, 0xe4, 0x28, 0x54, + 0x3e, 0x71, 0x04, 0x9c, 0xf3, 0x42, 0x33, 0x2b, 0x96, 0x92, 0xc3, 0x01, + 0x7c, 0x3e, 0x99, 0x83, 0x09, 0xb3, 0xda, 0x2e, 0xb2, 0x37, 0x26, 0xc2, + 0xa6, 0x97, 0x83, 0x94, 0x26, 0xb0, 0x40, 0xee, 0xa3, 0x92, 0xe8, 0x12, + 0x92, 0x8f, 0x2e, 0xaa, 0x17, 0x21, 0x7c, 0x09, 0xa9, 0x44, 0x4e, 0x26, + 0x7f, 0x9d, 0xcd, 0x2d, 0x83, 0x91, 0xb4, 0xc3, 0x93, 0x6c, 0xeb, 0xc9, + 0x46, 0x18, 0x55, 0x8d, 0x63, 0x57, 0x32, 0x69, 0x39, 0x17, 0x82, 0xb6, + 0xd0, 0x00, 0x00, 0xe0, 0x0d, 0x10, 0x80, 0x20, 0x30, 0x05, 0x4c, 0x00, + 0x40, 0xe0, 0xc0, 0x50, 0x28, 0xcc, 0x16, 0x54, 0x80, 0xdb, 0x5d, 0x36, + 0xcc, 0x35, 0xc2, 0x48, 0xc0, 0x20, 0x06, 0xc3, 0x00, 0x38, 0xc0, 0x98, + 0x06, 0x4c, 0x1d, 0x40, 0x20, 0x38, 0x13, 0x9a, 0x0c, 0x69, 0x04, 0xa1, + 0x38, 0xa1, 0x37, 0x37, 0x56, 0xb7, 0xbe, 0xc5, 0x6d, 0x16, 0xad, 0x61, + 0x62, 0xcc, 0xa4, 0x32, 0xd3, 0x02, 0x95, 0x08, 0x10, 0x99, 0x96, 0x22, + 0x7b, 0xab, 0x36, 0xf7, 0xca, 0x11, 0xba, 0x76, 0xe8, 0xfa, 0xee, 0xba, + 0x8a, 0xff, 0xff, 0x8e, 0x1f, 0x1d, 0xec, 0xad, 0xd1, 0x74, 0xfc, 0xed, + 0xdf, 0xfc, 0x3b, 0xd9, 0xb1, 0x8d, 0xb9, 0xa9, 0x8e, 0x6e, 0xdb, 0xba, + 0x5d, 0x70, 0xeb, 0xb7, 0x4f, 0x5b, 0x27, 0xae, 0xe7, 0xb6, 0xed, 0xdb, + 0x1b, 0xaf, 0xa7, 0xec, 0xb8, 0x8a, 0xa6, 0xdf, 0x76, 0x77, 0x65, 0xaa, + 0xca, 0x63, 0x44, 0x53, 0xf4, 0xb3, 0x92, 0xdf, 0x0d, 0xa6, 0xc0, 0x69, + 0x44, 0x78, 0xac, 0x69, 0xb7, 0x67, 0xf1, 0xa9, 0x6b, 0x30, 0x1e, 0x17, + 0x13, 0x04, 0xd5, 0xf3, 0x32, 0xe2, 0x0a, 0x93, 0x80, 0x81, 0xa2, 0x30, + 0xe4, 0x01, 0x53, 0x03, 0x30, 0x18, 0x25, 0x05, 0x60, 0x30, 0x32, 0x98, + 0x06, 0x00, 0x51, 0x80, 0x40, 0x45, 0x2a, 0xba, 0xc6, 0x74, 0x9a, 0xbc, + 0x58, 0x61, 0x97, 0xc5, 0x49, 0x58, 0xa2, 0x35, 0x09, 0x31, 0x8a, 0x27, + 0x27, 0xb2, 0xd2, 0x15, 0x30, 0xcd, 0x37, 0xd3, 0x04, 0xad, 0xe1, 0xda, + 0x7c, 0xac, 0x2e, 0x12, 0x13, 0x2f, 0x74, 0x25, 0x99, 0x20, 0x6e, 0x66, + 0x3b, 0x3a, 0xe9, 0x89, 0x2c, 0xe3, 0x8a, 0x3e, 0x7f, 0x06, 0x23, 0xd6, + 0xbc, 0x5a, 0x48, 0xb0, 0xeb, 0x7b, 0x2d, 0x1c, 0xa8, 0xa5, 0x17, 0xfd, + 0x6f, 0x02, 0xda, 0x1f, 0xfa, 0x09, 0xfb, 0x07, 0x6f, 0x61, 0x4e, 0xec, + 0xd5, 0xb2, 0xa2, 0x37, 0x1e, 0x42, 0x78, 0xe1, 0xaa, 0x1b, 0x15, 0xd3, + 0x3e, 0x7b, 0x0a, 0x52, 0xda, 0x64, 0xcf, 0x34, 0xb5, 0xd4, 0x35, 0xc8, + 0x6d, 0x2a, 0x8c, 0x80, 0x79, 0x6a, 0xeb, 0xcc, 0xa9, 0xb2, 0xa3, 0xa3, + 0x10, 0xf9, 0xf6, 0xd1, 0xca, 0x19, 0xff, 0x62, 0xe7, 0xe5, 0x8a, 0xfc, + 0x95, 0x13, 0xf5, 0x7b, 0x62, 0x29, 0x2a, 0x31, 0x3b, 0x32, 0x81, 0x44, + 0x26, 0x10, 0x2d, 0xa1, 0xfa, 0x43, 0xa4, 0xcc, 0xd1, 0x17, 0xb3, 0xed, + 0xdc, 0xb6, 0xde, 0x61, 0xe3, 0x0b, 0xa1, 0xa1, 0xc2, 0xca, 0xfb, 0x09, + 0x3d, 0x88, 0xdd, 0x7d, 0xe7, 0xd6, 0x28, 0x7e, 0x52, 0x26, 0x7a, 0x90, + 0xda, 0xad, 0xb5, 0x5f, 0x86, 0x03, 0x88, 0x9b, 0x42, 0x16, 0x0e, 0x5e, + 0x80, 0x10, 0x11, 0x98, 0x1d, 0x00, 0xb1, 0x87, 0xd8, 0x9e, 0x1b, 0x60, + 0xa7, 0xf1, 0x85, 0xa8, 0x27, 0x98, 0x19, 0x00, 0xf1, 0x80, 0x60, 0x08, + 0x18, 0x06, 0x80, 0xc9, 0x83, 0x40, 0x17, 0xaa, 0xa4, 0x3f, 0x40, 0x3f, + 0x39, 0x19, 0x8b, 0x88, 0xe8, 0xda, 0x06, 0xaa, 0x6a, 0xb2, 0x56, 0xdf, + 0x26, 0xce, 0xa3, 0xd8, 0x4e, 0x94, 0xb7, 0x4b, 0x3e, 0x7d, 0xa9, 0x7b, + 0x96, 0xfd, 0xff, 0xfb, 0xd5, 0xa2, 0xba, 0x69, 0xb6, 0xa6, 0xf6, 0x3a, + 0xef, 0x74, 0x16, 0x94, 0xca, 0xb7, 0x5a, 0x08, 0xa9, 0x0d, 0x91, 0x4d, + 0xa8, 0x32, 0x46, 0x97, 0x5a, 0x0b, 0x99, 0xb3, 0xbe, 0xcb, 0x53, 0xd3, + 0x41, 0x35, 0xa6, 0xba, 0xd2, 0x41, 0x1d, 0x6a, 0xb2, 0x92, 0x45, 0x1a, + 0x4c, 0xa3, 0xce, 0xee, 0xa5, 0x56, 0xb4, 0xee, 0xc8, 0xd0, 0x64, 0xd6, + 0x67, 0x79, 0xd5, 0x5d, 0x4e, 0x76, 0x91, 0x81, 0x90, 0x56, 0x1f, 0x4d, + 0x33, 0x15, 0xb3, 0xaf, 0x51, 0x3c, 0x4f, 0x59, 0x04, 0x2a, 0x73, 0xad, + 0x41, 0x90, 0x4d, 0x48, 0xa0, 0xe9, 0x98, 0x51, 0x53, 0x9f, 0x10, 0x88, + 0x59, 0x94, 0x12, 0xad, 0x1a, 0xfe, 0x17, 0x29, 0xd0, 0xf0, 0x2b, 0x98, + 0x50, 0x06, 0x11, 0x80, 0x30, 0x05, 0x18, 0x3e, 0x04, 0xf0, 0xd0, 0x14, + 0xa0, 0x79, 0x81, 0xe0, 0x40, 0xc9, 0x1e, 0x26, 0x57, 0x55, 0x65, 0x0e, + 0xd3, 0x6e, 0x09, 0x2d, 0x1e, 0xa5, 0x74, 0x02, 0x66, 0x71, 0x8f, 0x5a, + 0x61, 0x1e, 0x90, 0x4d, 0xa1, 0xff, 0xfb, 0xd4, 0x60, 0x1b, 0x8d, 0xd6, + 0x82, 0x70, 0x39, 0x03, 0xcf, 0x4b, 0x70, 0x99, 0x2d, 0xf6, 0xb0, 0x75, + 0x2b, 0x6e, 0x1a, 0x4d, 0xbe, 0xe4, 0x2f, 0x3d, 0x2d, 0xc2, 0x69, 0xb7, + 0x5a, 0xc5, 0xe4, 0xa1, 0xb8, 0xca, 0xe5, 0x19, 0xaa, 0x84, 0x2a, 0x98, + 0x91, 0x87, 0x12, 0x12, 0xaf, 0x3d, 0xe1, 0x2b, 0x95, 0x8d, 0x0f, 0xd7, + 0x0a, 0xf4, 0xea, 0xb6, 0x13, 0x2e, 0x9e, 0x3a, 0x60, 0x76, 0xe5, 0x15, + 0xb5, 0xec, 0x3a, 0x6e, 0x08, 0xe9, 0x2b, 0xbf, 0x5e, 0x6b, 0x47, 0x25, + 0x65, 0x4b, 0x2a, 0xc3, 0x5a, 0xaa, 0x25, 0x94, 0x38, 0xad, 0xa2, 0x30, + 0xc0, 0xfb, 0x14, 0xe3, 0x41, 0x81, 0x34, 0x54, 0xd1, 0x49, 0x22, 0x1e, + 0x8e, 0x7c, 0xca, 0x62, 0xbe, 0x7d, 0x11, 0xc3, 0x8c, 0x30, 0x61, 0x92, + 0x11, 0xca, 0x25, 0x83, 0x40, 0xf8, 0xa0, 0x53, 0x4e, 0x4c, 0xe5, 0x24, + 0x81, 0xcd, 0x9d, 0x55, 0x62, 0x67, 0xa6, 0x9b, 0xd6, 0x24, 0x88, 0xac, + 0xca, 0xcd, 0x2b, 0x22, 0x76, 0x95, 0x54, 0xf1, 0x7d, 0xdf, 0x31, 0x7b, + 0x5f, 0x15, 0x56, 0x0d, 0xa0, 0xc5, 0xa0, 0xda, 0xa4, 0xf3, 0x4d, 0x76, + 0x1c, 0x88, 0x96, 0xa6, 0x65, 0xea, 0x68, 0xa2, 0xd9, 0x65, 0x76, 0x48, + 0xe4, 0xba, 0x67, 0x96, 0x23, 0xd5, 0xfa, 0x0c, 0x39, 0x6f, 0x47, 0x88, + 0xdc, 0x8a, 0x93, 0x52, 0x6d, 0x68, 0x4a, 0x4c, 0x18, 0x11, 0x8c, 0x21, + 0x7d, 0xce, 0x25, 0xe5, 0x40, 0x41, 0xea, 0xa3, 0x59, 0x8f, 0x01, 0x86, + 0xa1, 0x1a, 0x78, 0xde, 0x9d, 0x44, 0x4a, 0x21, 0x05, 0x88, 0x91, 0x48, + 0x65, 0x1a, 0xd3, 0x1c, 0x36, 0x46, 0xdc, 0xd2, 0x8e, 0x72, 0x62, 0x1c, + 0x68, 0x9a, 0xd7, 0xa7, 0xfc, 0x66, 0x7e, 0x18, 0xa4, 0xd6, 0x6f, 0x3b, + 0x70, 0xcc, 0xa8, 0x6b, 0xe3, 0xdd, 0x1c, 0x77, 0x0e, 0x7d, 0x4c, 0xb3, + 0x8a, 0xdd, 0x1d, 0x7b, 0xd4, 0xa6, 0x6f, 0x66, 0xb5, 0xcb, 0xa2, 0x5c, + 0xfb, 0x5e, 0xfa, 0x86, 0x45, 0xdb, 0x2e, 0x99, 0x50, 0xf7, 0xba, 0x1c, + 0x95, 0xc7, 0x34, 0xd7, 0x3a, 0x9c, 0xc8, 0x7a, 0xcc, 0x39, 0xd2, 0x11, + 0x6e, 0xe8, 0xf4, 0xcd, 0x3a, 0x5b, 0x6e, 0x5e, 0x92, 0x72, 0xce, 0x72, + 0xeb, 0xbd, 0x6d, 0x67, 0x1d, 0x83, 0x66, 0x51, 0xd8, 0x4d, 0xa0, 0x8d, + 0x0f, 0x7b, 0xfb, 0xb5, 0x9f, 0x67, 0xc8, 0xa0, 0x69, 0xc7, 0x22, 0x97, + 0x89, 0x5e, 0xa1, 0xd0, 0xc4, 0x79, 0x5d, 0x79, 0x92, 0xf9, 0x6a, 0xc4, + 0x30, 0x62, 0x13, 0x73, 0x32, 0xf3, 0x4b, 0x36, 0xdb, 0x53, 0x43, 0x55, + 0x22, 0x2f, 0x1a, 0x0d, 0x80, 0xe0, 0x2e, 0x30, 0x4c, 0x01, 0xc0, 0x70, + 0x1d, 0x81, 0x80, 0x80, 0xc1, 0xec, 0x1b, 0x98, 0x7a, 0xde, 0x60, 0xee, + 0x5b, 0x7e, 0x21, 0xc2, 0xd8, 0x49, 0x9c, 0x4d, 0xd1, 0xf6, 0x74, 0xaa, + 0x09, 0x48, 0xc7, 0x54, 0x2e, 0x53, 0x67, 0x69, 0xfc, 0xa2, 0x6c, 0x1c, + 0x71, 0x56, 0xcc, 0xe4, 0x0c, 0x06, 0x75, 0x4a, 0xb8, 0xe7, 0x70, 0x98, + 0xe5, 0x6c, 0x86, 0x91, 0x63, 0x54, 0xce, 0xf5, 0xc5, 0x5d, 0x49, 0x23, + 0xdd, 0xc6, 0xd1, 0xf7, 0x6b, 0xaa, 0x77, 0x61, 0x8f, 0x9c, 0xee, 0x77, + 0x9c, 0x56, 0xb9, 0x99, 0x89, 0x91, 0x8c, 0xb2, 0x3a, 0x44, 0x61, 0x19, + 0xb1, 0x05, 0x92, 0x36, 0x88, 0x91, 0x12, 0x45, 0xa2, 0x55, 0x30, 0x78, + 0x88, 0x5d, 0xf3, 0x23, 0x4c, 0x91, 0x22, 0x71, 0x79, 0x45, 0xa4, 0x10, + 0xb7, 0xaa, 0x80, 0x33, 0x9a, 0x23, 0xc4, 0x33, 0x80, 0x62, 0x33, 0x45, + 0xa4, 0xf2, 0x69, 0x24, 0x23, 0xf0, 0x6a, 0x4d, 0x5b, 0x6c, 0x34, 0x58, + 0xb8, 0xb6, 0x90, 0xb4, 0x92, 0xdc, 0x56, 0x91, 0x29, 0x65, 0x9e, 0xaf, + 0x6b, 0xaa, 0x15, 0x79, 0x1b, 0xdb, 0x2a, 0xdd, 0xce, 0x95, 0xd6, 0x11, + 0xeb, 0x02, 0x82, 0x88, 0x31, 0x12, 0xaf, 0xad, 0x7c, 0x14, 0x27, 0x36, + 0xbb, 0x2d, 0xa3, 0x29, 0x29, 0x6a, 0x8c, 0x62, 0xf2, 0x59, 0x66, 0xa6, + 0x5d, 0x42, 0x76, 0xa2, 0x2b, 0x5c, 0x91, 0x46, 0x7e, 0x38, 0x01, 0x46, + 0x01, 0x60, 0x02, 0x23, 0x08, 0x03, 0x08, 0x33, 0x9d, 0x34, 0xe1, 0x2f, + 0xa3, 0x05, 0x50, 0x75, 0x30, 0x3a, 0x00, 0x00, 0x60, 0x06, 0x18, 0x0a, + 0x80, 0x58, 0x08, 0x20, 0x0a, 0x00, 0x96, 0x03, 0x69, 0xac, 0x3a, 0x67, + 0x4c, 0x61, 0xb2, 0x62, 0x43, 0x0a, 0x21, 0x40, 0xa1, 0xf8, 0x9b, 0x81, + 0xe5, 0x12, 0x46, 0x60, 0x5a, 0xa1, 0x73, 0x89, 0x94, 0x18, 0xaa, 0xdf, + 0x09, 0x51, 0x46, 0x5b, 0xf7, 0xef, 0xcc, 0xbb, 0x99, 0x8e, 0x22, 0xf6, + 0xba, 0xe2, 0xe9, 0x6a, 0xab, 0x48, 0x4d, 0x2e, 0x2d, 0xa4, 0x73, 0x4a, + 0x4c, 0x77, 0x04, 0xeb, 0xbc, 0x44, 0x3d, 0xc7, 0x56, 0x73, 0xba, 0x54, + 0xd7, 0x06, 0x67, 0x4d, 0xe9, 0x4d, 0x4c, 0xcf, 0x6c, 0x94, 0x30, 0xc9, + 0x19, 0x6a, 0x7f, 0x4f, 0x53, 0x0e, 0x94, 0xcb, 0xd8, 0xc5, 0x79, 0xee, + 0x22, 0x97, 0x83, 0x20, 0x8a, 0xd6, 0x0a, 0x28, 0x0b, 0x14, 0x8b, 0x52, + 0x62, 0x34, 0x18, 0x71, 0x44, 0x5c, 0x4b, 0xaa, 0x49, 0x16, 0xc3, 0x9e, + 0x2f, 0xef, 0xd2, 0x47, 0x55, 0x20, 0x0c, 0x4a, 0x06, 0x8d, 0x8c, 0x18, + 0x4d, 0x3e, 0xbc, 0x0d, 0x69, 0x3c, 0xcc, 0x63, 0x10, 0xcc, 0x2d, 0x1b, + 0x4c, 0xe0, 0x09, 0x0c, 0x03, 0x00, 0x53, 0x64, 0xc2, 0x20, 0x1d, 0x75, + 0xc3, 0x71, 0x98, 0xdc, 0x95, 0xb5, 0x43, 0x61, 0x41, 0x40, 0x10, 0xa1, + 0x00, 0xc1, 0x03, 0x07, 0x87, 0xc4, 0xe4, 0xe1, 0xf4, 0x64, 0x73, 0x46, + 0xb9, 0x00, 0xb0, 0xa0, 0xc1, 0xff, 0xfb, 0xd4, 0x40, 0x1e, 0x0d, 0xf5, + 0xb3, 0x6b, 0x3c, 0x0b, 0xa9, 0x33, 0x72, 0xb6, 0x2e, 0x07, 0x60, 0x75, + 0xe6, 0x6e, 0x15, 0x0c, 0xcc, 0xe8, 0x4e, 0x61, 0x8b, 0x82, 0xf3, 0x37, + 0x5b, 0x81, 0xd7, 0x99, 0xb9, 0x02, 0x02, 0x01, 0x40, 0x90, 0x56, 0x23, + 0x27, 0x13, 0x91, 0x91, 0x91, 0x93, 0xa3, 0x24, 0x40, 0x81, 0x02, 0x04, + 0x0a, 0x20, 0x40, 0x8c, 0x99, 0x32, 0x69, 0xa6, 0x99, 0x3b, 0x20, 0x81, + 0x04, 0x08, 0x10, 0x31, 0x04, 0x13, 0x3c, 0xf2, 0x64, 0xd3, 0xbb, 0xb2, + 0x10, 0x61, 0x04, 0x08, 0x42, 0x10, 0x4c, 0x2c, 0xfb, 0x3e, 0xcf, 0x26, + 0x7a, 0x08, 0x41, 0x08, 0x28, 0xc8, 0x64, 0xec, 0xf3, 0xd6, 0x4c, 0x9d, + 0x93, 0x83, 0x23, 0x21, 0x08, 0x32, 0x09, 0xba, 0x67, 0xd9, 0xf7, 0x77, + 0x06, 0x34, 0x44, 0x32, 0x11, 0x6b, 0xbb, 0x7b, 0xb4, 0xee, 0x0c, 0x84, + 0x21, 0x8c, 0x88, 0x4e, 0xed, 0x3b, 0xbb, 0x4f, 0x62, 0x32, 0x10, 0x88, + 0x88, 0xbb, 0xbb, 0xbd, 0x4f, 0x53, 0x73, 0x32, 0x20, 0xc8, 0x83, 0x1e, + 0xf7, 0x6c, 0xfb, 0x0f, 0x10, 0xa1, 0x08, 0x06, 0x2f, 0x03, 0x87, 0x03, + 0x11, 0x66, 0xd2, 0x7a, 0xc6, 0xef, 0xa8, 0x26, 0x3d, 0x8a, 0x26, 0x1a, + 0x8e, 0x86, 0xcd, 0x82, 0x46, 0x16, 0x81, 0xe0, 0x60, 0x8c, 0x1c, 0x48, + 0xae, 0x85, 0x34, 0x54, 0x8c, 0x41, 0x5c, 0x0b, 0x60, 0x98, 0x1d, 0x07, + 0x19, 0xa6, 0xa7, 0x27, 0x67, 0x59, 0xe6, 0x87, 0x9a, 0x66, 0x9a, 0x21, + 0x70, 0xc0, 0x95, 0x50, 0x32, 0x21, 0x8a, 0xc5, 0x42, 0xad, 0x33, 0x1d, + 0x76, 0xce, 0xaf, 0x8e, 0xfd, 0xfb, 0x23, 0x23, 0xc6, 0xc7, 0x07, 0x07, + 0x90, 0x22, 0x43, 0x86, 0xce, 0xfd, 0xfc, 0x77, 0xef, 0xdf, 0xc0, 0x20, + 0x62, 0x04, 0x08, 0x18, 0x62, 0x07, 0x93, 0xb2, 0x67, 0xda, 0x67, 0xa6, + 0x62, 0x08, 0x44, 0x18, 0x40, 0x82, 0x16, 0x9a, 0xf6, 0xf4, 0x9d, 0xa6, + 0x85, 0x20, 0x42, 0x22, 0x23, 0x0f, 0x3d, 0x3c, 0x4c, 0x3d, 0xa6, 0x4e, + 0x08, 0x2a, 0x4a, 0x8f, 0x1d, 0x3d, 0xb2, 0x69, 0xce, 0xed, 0xe2, 0x15, + 0x88, 0x64, 0x44, 0x5e, 0xae, 0xcf, 0xb4, 0xdf, 0x60, 0xa2, 0x8c, 0x52, + 0xa1, 0xbb, 0xeb, 0xbd, 0xda, 0x4f, 0xd9, 0xb3, 0xc3, 0x47, 0x8b, 0xbb, + 0xdf, 0x29, 0xdd, 0xb3, 0x43, 0x34, 0x54, 0x59, 0x3e, 0x7b, 0xbe, 0xbd, + 0xd2, 0x10, 0xd0, 0xde, 0x19, 0xbb, 0xbd, 0xea, 0xd3, 0xb5, 0x80, 0xc2, + 0x85, 0xd3, 0x43, 0x13, 0x4c, 0xef, 0x2c, 0x3b, 0xac, 0xe0, 0xd5, 0x60, + 0xa3, 0x13, 0x05, 0xc2, 0xa2, 0xc3, 0x26, 0x94, 0x0c, 0x76, 0x20, 0x30, + 0x20, 0x2c, 0xc1, 0x00, 0x32, 0xc8, 0x98, 0x06, 0x02, 0x09, 0x64, 0x4b, + 0x6a, 0x83, 0xa9, 0x0a, 0xa0, 0x49, 0x8c, 0x98, 0xc9, 0x8c, 0xb1, 0x97, + 0x72, 0xee, 0x62, 0x4c, 0xe9, 0xc9, 0x67, 0x2c, 0xe5, 0x76, 0xae, 0xd5, + 0xda, 0xc4, 0x59, 0xcb, 0x92, 0xed, 0x39, 0x4e, 0x53, 0x94, 0xe5, 0x39, + 0x4f, 0xf3, 0xb4, 0x00, 0xc0, 0x88, 0x35, 0x04, 0x40, 0x88, 0x1d, 0x06, + 0xa0, 0xd4, 0x1a, 0x98, 0x9d, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1f, 0x2e, + 0x5c, 0xb5, 0x6a, 0xd5, 0xab, 0x56, 0xad, 0x5b, 0x56, 0x97, 0x2e, 0x5c, + 0xf3, 0x4b, 0x97, 0x35, 0x5a, 0xd5, 0x95, 0xab, 0x5d, 0xad, 0x6d, 0x69, + 0xb5, 0xad, 0x6b, 0x5b, 0x6a, 0xe8, 0x2a, 0x0a, 0x82, 0xa0, 0xd1, 0x60, + 0x68, 0x1a, 0x96, 0x42, 0xc0, 0x2f, 0x0e, 0xb7, 0xfe, 0xdd, 0x40, 0xd0, + 0x34, 0x1a, 0xac, 0x35, 0xf2, 0xa0, 0xae, 0x0b, 0x77, 0x89, 0x43, 0x42, + 0x55, 0x84, 0x81, 0xa0, 0x69, 0xe0, 0xd3, 0xa0, 0xa8, 0x2a, 0x62, 0x21, + 0xae, 0x69, 0x41, 0x3a, 0x6a, 0xcd, 0xd0, 0x7c, 0x2e, 0x0c, 0x6f, 0x8a, + 0x44, 0x68, 0x5a, 0x30, 0x34, 0xb9, 0x18, 0xb4, 0x1c, 0x81, 0x00, 0x13, + 0x04, 0x42, 0x43, 0x0a, 0x40, 0xe6, 0x42, 0x91, 0xc9, 0x84, 0xc4, 0x89, + 0xd0, 0x85, 0x06, 0xa8, 0xb8, 0xa8, 0x6a, 0xda, 0x5b, 0x4b, 0x8a, 0xb5, + 0x3a, 0x5b, 0x4d, 0x24, 0x39, 0x0e, 0x43, 0x94, 0x4a, 0xe5, 0x72, 0x1c, + 0x73, 0x1c, 0xa6, 0x89, 0xd2, 0xa1, 0x4e, 0xa1, 0xa8, 0x6b, 0x2d, 0x61, + 0x2b, 0x95, 0xca, 0xe5, 0x72, 0xb9, 0x99, 0xf3, 0xea, 0xe6, 0x0b, 0x0b, + 0x2b, 0xd7, 0xaf, 0x5e, 0xc6, 0x38, 0x91, 0x22, 0x44, 0x89, 0x12, 0x06, + 0x44, 0xd2, 0x24, 0x48, 0x91, 0x23, 0x33, 0x47, 0x12, 0x4b, 0x7b, 0x51, + 0x29, 0x34, 0x89, 0x19, 0x99, 0x99, 0xa7, 0x9a, 0x4a, 0xab, 0xcd, 0x3c, + 0xc5, 0x3b, 0x6c, 0xd1, 0xc0, 0x24, 0xaa, 0xbb, 0x9b, 0x55, 0x56, 0x45, + 0x19, 0xff, 0xb6, 0xce, 0x79, 0x99, 0xaa, 0xaa, 0xaf, 0x39, 0x53, 0x33, + 0x94, 0x95, 0x57, 0xf5, 0x55, 0x4f, 0x2d, 0x46, 0xa3, 0x24, 0x48, 0x91, + 0x22, 0x44, 0x8d, 0x57, 0xc3, 0x81, 0x89, 0x25, 0xb3, 0x32, 0xf3, 0x24, + 0x64, 0x8a, 0x55, 0x55, 0x54, 0x48, 0x91, 0x22, 0x28, 0xce, 0x39, 0xa4, + 0x64, 0xd3, 0x89, 0x12, 0x24, 0x48, 0x6a, 0x4c, 0x41, 0x4d, 0x45, 0x33, + 0x2e, 0x39, 0x38, 0x2e, 0x32, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xfb, 0xd4, 0x60, 0x23, 0x0f, 0xf0, + 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0d, 0x20, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x01, 0xa4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x34, 0x80, 0x00, 0x00, 0x04, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x41, 0x47, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff +}; +unsigned int med_alerts_notification_01__TTH__mp3_len = 46249; +// clang-format on + +#endif // ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_ALERTS_NOTIFICATION_01__TTH__MP3_H_ + +} // namespace data +} // namespace audio +} // namespace resources +} // namespace applicationUtilities +} // namespace alexaClientSDK diff --git a/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_system_alerts_melodic_01._TTH_.mp3.h b/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_system_alerts_melodic_01._TTH_.mp3.h new file mode 100644 index 0000000000..b8fad1ebd6 --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_system_alerts_melodic_01._TTH_.mp3.h @@ -0,0 +1,16257 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/* + * ****************** + * ALEXA AUDIO ASSETS + * ****************** + * + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates ("Amazon"). + * All Rights Reserved. + * + * These materials are licensed to you as "Alexa Materials" under the Alexa Voice + * Service Agreement, which is currently available at + * https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/support/terms-and-agreements. + */ + +#ifndef ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_SYSTEM_ALERTS_MELODIC_01__TTH__MP3_H_ +#define ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_SYSTEM_ALERTS_MELODIC_01__TTH__MP3_H_ + +namespace alexaClientSDK { +namespace applicationUtilities { +namespace resources { +namespace audio { +namespace data { + +// clang-format off +unsigned char med_system_alerts_melodic_01__TTH__mp3[] = { + 0x49, 0x44, 0x33, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x54, 0x45, + 0x4e, 0x43, 0x00, 0x00, 0x00, 0x15, 0x20, 0x00, 0x00, 0x53, 0x6f, 0x75, + 0x6e, 0x64, 0x20, 0x47, 0x72, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x33, + 0x2e, 0x35, 0x2e, 0x36, 0x00, 0xff, 0xfb, 0xd4, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xd4, 0x60, 0x00, 0x00, 0x06, + 0x85, 0x4e, 0x38, 0x05, 0x77, 0x40, 0x02, 0x5e, 0xed, 0x06, 0xa2, 0xa0, + 0x8c, 0x00, 0x22, 0xa2, 0x15, 0x0b, 0x99, 0xfa, 0x00, 0x01, 0x6d, 0x3a, + 0xa1, 0x67, 0x16, 0x70, 0x00, 0x31, 0xb8, 0x48, 0x10, 0x08, 0xe6, 0x44, + 0x95, 0x66, 0x52, 0x8e, 0x22, 0x32, 0x18, 0xd0, 0x45, 0x98, 0xda, 0x26, + 0x98, 0xd5, 0x62, 0x08, 0xce, 0xf6, 0x9c, 0xee, 0xac, 0x08, 0xed, 0xe9, + 0xa0, 0xdc, 0x84, 0x60, 0xc6, 0x01, 0x34, 0xcb, 0x73, 0xa4, 0xcf, 0x33, + 0x7c, 0xcb, 0x92, 0x1c, 0xc4, 0xd0, 0x34, 0xc0, 0xc0, 0xa0, 0xea, 0xdb, + 0x3b, 0xb5, 0x4e, 0x1a, 0xd3, 0x2e, 0x05, 0xc6, 0x48, 0x44, 0x88, 0x7b, + 0x54, 0xcc, 0xc0, 0x02, 0x30, 0x40, 0x0b, 0x40, 0xae, 0x23, 0x2b, 0x9d, + 0x21, 0xd2, 0x2d, 0x4d, 0xd7, 0x43, 0xf1, 0x05, 0xa9, 0x9a, 0x01, 0xcb, + 0xc6, 0x91, 0x6e, 0xbb, 0xa0, 0x84, 0xb4, 0x1f, 0x50, 0x76, 0x27, 0x0f, + 0xdb, 0xd5, 0x25, 0x25, 0x3d, 0x3d, 0x3d, 0x3d, 0x3c, 0x6e, 0x37, 0x6e, + 0xa3, 0xfe, 0xff, 0xc6, 0xe9, 0xe9, 0xe9, 0xed, 0xf6, 0xa4, 0x6e, 0x37, + 0x1b, 0x8d, 0xcb, 0xed, 0xea, 0xa5, 0x24, 0x6e, 0x37, 0x4f, 0x6f, 0xba, + 0xc3, 0x0e, 0x7f, 0xff, 0xff, 0xff, 0xe7, 0xcd, 0xd7, 0xa7, 0xa7, 0xb7, + 0xdd, 0x61, 0x4f, 0x4f, 0x6f, 0x3e, 0xff, 0xe1, 0x85, 0x3d, 0x3e, 0x7d, + 0xd6, 0x18, 0x61, 0xcf, 0xff, 0xff, 0xcf, 0xbf, 0x85, 0xbc, 0xfb, 0xff, + 0xf9, 0xfe, 0x14, 0xf6, 0xfb, 0xaa, 0x94, 0x94, 0x9c, 0xaf, 0x18, 0x96, + 0x58, 0xe8, 0xff, 0x33, 0xf8, 0x66, 0x06, 0x70, 0x00, 0x88, 0x00, 0x00, + 0x00, 0x88, 0x80, 0x02, 0x3f, 0xc3, 0xcf, 0xe0, 0x00, 0x19, 0x48, 0x00, + 0x73, 0x18, 0xdc, 0x03, 0x18, 0xfc, 0x80, 0x06, 0xfa, 0x27, 0x5f, 0xff, + 0xdd, 0xdf, 0x03, 0x78, 0x89, 0x43, 0x8b, 0x37, 0x77, 0x38, 0x88, 0x4e, + 0x00, 0x00, 0x4e, 0xee, 0x7a, 0x3b, 0xbb, 0xbf, 0xfb, 0x9f, 0x11, 0x0b, + 0xa8, 0x89, 0xff, 0xff, 0x4f, 0xff, 0x42, 0xf8, 0x88, 0x54, 0x00, 0x01, + 0x13, 0xaf, 0xa3, 0xb9, 0xe8, 0x5f, 0xff, 0x5d, 0xdc, 0xd0, 0x0c, 0x0d, + 0xdd, 0xdd, 0xf4, 0x03, 0x03, 0x73, 0xf7, 0xd0, 0x0c, 0x59, 0xc4, 0x44, + 0x2d, 0x10, 0xbf, 0xfd, 0x13, 0xff, 0xf4, 0x42, 0xdd, 0xc5, 0xbe, 0xee, + 0xee, 0xe7, 0xfa, 0x6e, 0xe7, 0x00, 0x04, 0x50, 0x06, 0x04, 0x01, 0x80, + 0x40, 0x44, 0x36, 0x6d, 0x10, 0x00, 0x00, 0x00, 0xc1, 0x6a, 0x0c, 0x4c, + 0xc6, 0xe1, 0x26, 0xd4, 0xc0, 0xb2, 0x06, 0x0c, 0xc1, 0x65, 0x3a, 0x1c, + 0xc0, 0x8c, 0x01, 0xf0, 0xc1, 0xf7, 0x53, 0x34, 0xce, 0x57, 0x24, 0x44, + 0xc1, 0xeb, 0x13, 0x2c, 0xda, 0x75, 0x15, 0xf4, 0xc0, 0x7a, 0x0b, 0xf0, + 0xdb, 0x17, 0x18, 0xf8, 0xc0, 0xc1, 0x09, 0xa8, 0xc1, 0xb7, 0x02, 0x6c, + 0xc0, 0x67, 0x00, 0x60, 0x78, 0x03, 0xe1, 0x40, 0x0d, 0xcc, 0x16, 0xc0, + 0x0e, 0x0c, 0x00, 0x60, 0x03, 0xc0, 0x58, 0x60, 0xef, 0x03, 0x1a, 0x9c, + 0x34, 0x60, 0x16, 0x04, 0x25, 0xa3, 0xa4, 0x41, 0x31, 0x40, 0x88, 0x48, + 0x0d, 0x98, 0x03, 0x06, 0x2c, 0x73, 0x43, 0xa2, 0x0f, 0x78, 0x42, 0x40, + 0xf6, 0x45, 0xc8, 0x04, 0x02, 0x0e, 0xd1, 0x5b, 0x8b, 0x84, 0x91, 0x20, + 0xc3, 0x50, 0x70, 0x13, 0xc5, 0xc2, 0xb8, 0x18, 0xf2, 0xa2, 0x9a, 0x5a, + 0x2f, 0x00, 0x70, 0xc4, 0xc7, 0x78, 0xba, 0x27, 0x87, 0x31, 0x94, 0x5c, + 0x5a, 0x98, 0x89, 0x8b, 0x80, 0xb8, 0x29, 0x41, 0x67, 0x95, 0x4b, 0xc9, + 0x17, 0x98, 0xbe, 0x68, 0x93, 0xa4, 0xc9, 0xa9, 0x13, 0x62, 0x28, 0x39, + 0x86, 0xe5, 0x42, 0x78, 0x90, 0x1f, 0x8a, 0x09, 0x15, 0xdd, 0xc7, 0x94, + 0xd9, 0x4f, 0xdc, 0xf2, 0x13, 0xa6, 0x87, 0x49, 0xc3, 0x72, 0xe9, 0x03, + 0x2a, 0x97, 0x94, 0x64, 0x48, 0x1b, 0x3f, 0xaa, 0xa7, 0x4c, 0xbe, 0x7e, + 0x5e, 0x4d, 0x34, 0x54, 0x66, 0xc8, 0x91, 0x03, 0xe5, 0x45, 0xa0, 0x6c, + 0x4d, 0x9c, 0x3a, 0x9a, 0xf4, 0xd4, 0xdd, 0xb5, 0x2d, 0x06, 0x59, 0x92, + 0x06, 0x37, 0x5a, 0x6b, 0x3a, 0xf4, 0xd2, 0x62, 0xa1, 0x74, 0xdc, 0xc6, + 0x59, 0x47, 0x63, 0x45, 0x32, 0x96, 0xe9, 0xa7, 0xff, 0xff, 0xfb, 0xad, + 0x8f, 0x16, 0x54, 0x5d, 0x3a, 0x6e, 0x6c, 0x63, 0xff, 0xff, 0xf9, 0xf4, + 0x51, 0x44, 0xe1, 0x34, 0x78, 0xc8, 0x9c, 0x2b, 0x0e, 0x20, 0x00, 0x00, + 0x00, 0x20, 0x94, 0x00, 0x00, 0x00, 0x0f, 0x61, 0xa0, 0x30, 0xa6, 0xfb, + 0x72, 0xc6, 0x9f, 0x16, 0xdd, 0x28, 0x87, 0x7a, 0xa6, 0xc7, 0xd1, 0xb3, + 0xce, 0x33, 0x46, 0x3e, 0xa9, 0x63, 0x8f, 0x47, 0xff, 0xef, 0x6a, 0xd1, + 0xbf, 0xce, 0x31, 0xbb, 0xd9, 0xa8, 0xff, 0xfd, 0x2d, 0xdb, 0x5b, 0xbb, + 0xff, 0xf5, 0x63, 0xcc, 0x7d, 0x52, 0xd3, 0xf5, 0x4f, 0xdb, 0xfd, 0x4d, + 0xd5, 0x2a, 0x7b, 0xbe, 0x9f, 0x3b, 0xb2, 0xf7, 0x99, 0x3f, 0xff, 0xff, + 0xff, 0x57, 0x65, 0x3c, 0x81, 0x03, 0xcf, 0x12, 0x43, 0x7f, 0xfc, 0xaa, + 0x4c, 0x07, 0x81, 0xd0, 0x71, 0x00, 0x61, 0x54, 0x00, 0x60, 0x2e, 0x81, + 0x90, 0x60, 0x5b, 0x81, 0x38, 0x60, 0x89, 0x81, 0xdc, 0x60, 0x6f, 0x05, + 0x5a, 0x61, 0xd7, 0x0a, 0x72, 0x65, 0xb3, 0x2b, 0xc6, 0x69, 0xeb, 0x33, + 0xcc, 0x63, 0x84, 0x86, 0x94, 0x61, 0x35, 0x82, 0xe0, 0x60, 0x6b, 0x02, + 0xa6, 0x60, 0xa0, 0x03, 0x5e, 0x61, 0xa2, 0x00, 0x70, 0x60, 0xb5, 0x01, + 0x5a, 0x60, 0x2d, 0x00, 0x5a, 0xff, 0xfb, 0xd4, 0x60, 0x1e, 0x08, 0x88, + 0xaa, 0x75, 0xc1, 0x37, 0x7f, 0x20, 0x00, 0x62, 0x2e, 0x98, 0x57, 0xe4, + 0x08, 0x00, 0x1f, 0x35, 0xd7, 0x0d, 0x4f, 0xe1, 0xed, 0xc1, 0x64, 0xba, + 0xa1, 0x04, 0xd1, 0x15, 0xb8, 0x0a, 0x01, 0xb5, 0x5b, 0x94, 0x19, 0x40, + 0x81, 0xb6, 0x97, 0x26, 0x01, 0x7f, 0x9d, 0x27, 0xd6, 0x2d, 0x2b, 0x69, + 0x32, 0xd6, 0x87, 0x0c, 0xbd, 0x72, 0xc7, 0x66, 0x43, 0x56, 0x92, 0x92, + 0xac, 0x96, 0x23, 0x0c, 0xe1, 0x13, 0xb1, 0x0c, 0xcd, 0x42, 0xa7, 0x62, + 0xb6, 0xd4, 0xc6, 0x1b, 0x86, 0x5f, 0x88, 0x93, 0x64, 0x71, 0xec, 0xbf, + 0xb9, 0x41, 0x71, 0xa6, 0x64, 0xeb, 0x47, 0x63, 0x6f, 0x4c, 0x66, 0x2f, + 0x2b, 0x80, 0x2a, 0x76, 0x1a, 0x89, 0xbf, 0x9b, 0x9a, 0xaf, 0x05, 0x36, + 0xd0, 0x4c, 0x8e, 0x51, 0x37, 0x2e, 0xa4, 0x79, 0xae, 0x3f, 0xb1, 0x79, + 0x1c, 0x62, 0x96, 0x39, 0x5e, 0xe5, 0xa9, 0xda, 0x93, 0x39, 0x5a, 0xe7, + 0x70, 0x8e, 0xe1, 0x6e, 0xe5, 0x6b, 0xd9, 0xe3, 0x95, 0xab, 0xba, 0xad, + 0x7b, 0x94, 0x34, 0xb6, 0x3b, 0x23, 0xad, 0x9d, 0x8c, 0xaf, 0xf6, 0xed, + 0x37, 0x33, 0xb1, 0x7a, 0x62, 0xfc, 0xee, 0xa8, 0xeb, 0x57, 0xb5, 0x63, + 0xf2, 0xb7, 0x4d, 0x6b, 0x2b, 0x57, 0xaa, 0xe5, 0x19, 0xb1, 0x56, 0x76, + 0x18, 0xa7, 0xb1, 0xcb, 0x1b, 0xb7, 0x41, 0x56, 0xc7, 0x29, 0x32, 0xcf, + 0xf1, 0xa0, 0xb3, 0x95, 0xe9, 0xab, 0x34, 0xb5, 0xf1, 0xde, 0x1d, 0xde, + 0xf2, 0xaf, 0x4b, 0x37, 0xdb, 0x99, 0xf7, 0x3d, 0xca, 0x79, 0x63, 0x2b, + 0x77, 0xb7, 0xab, 0x56, 0x22, 0x32, 0xaa, 0x59, 0x98, 0x16, 0x33, 0x19, + 0xa5, 0xd4, 0xf5, 0xd8, 0x0b, 0x78, 0x4f, 0x4b, 0x1d, 0xa7, 0x52, 0x19, + 0x82, 0xdf, 0x58, 0x9b, 0x74, 0x83, 0x80, 0x81, 0xa5, 0x24, 0x40, 0x00, + 0xe8, 0x43, 0x14, 0x90, 0x45, 0xf2, 0xd6, 0x5b, 0x1b, 0xfb, 0xd3, 0xeb, + 0x74, 0xb3, 0xab, 0x38, 0x61, 0x23, 0x8e, 0x20, 0x20, 0x10, 0x1b, 0xbd, + 0x9a, 0xc8, 0xa9, 0x95, 0xc8, 0xef, 0x6a, 0xda, 0x4a, 0xd9, 0xdc, 0x82, + 0xcc, 0xf2, 0x19, 0x55, 0xd5, 0x11, 0x8e, 0xa5, 0x31, 0xea, 0xc6, 0x67, + 0xaa, 0xbd, 0x5b, 0xb2, 0x37, 0xb2, 0x7b, 0xed, 0x67, 0xf4, 0xa2, 0xfe, + 0xf4, 0x5f, 0xfd, 0x7a, 0xfe, 0x8b, 0xaf, 0xff, 0x6d, 0xeb, 0xbe, 0xf4, + 0x64, 0x3a, 0xb2, 0x1d, 0x1a, 0x08, 0x13, 0x29, 0xd4, 0xae, 0x19, 0x42, + 0x92, 0x10, 0xa1, 0xc2, 0xac, 0x58, 0x74, 0x70, 0xc0, 0x69, 0x45, 0xc8, + 0xd1, 0x09, 0x8e, 0x60, 0x15, 0x00, 0x30, 0x60, 0x2a, 0x80, 0x7a, 0x60, + 0x4c, 0x00, 0xfc, 0x60, 0x96, 0x82, 0x5e, 0x61, 0x7f, 0x11, 0xa0, 0x6f, + 0xd8, 0x0b, 0xaa, 0x62, 0x2c, 0x03, 0x28, 0x60, 0xaa, 0x81, 0xe2, 0x60, + 0x4c, 0x81, 0x7a, 0x60, 0x47, 0x01, 0xcc, 0x60, 0x64, 0x80, 0x60, 0x60, + 0x3b, 0x80, 0x7e, 0x00, 0x00, 0x11, 0x01, 0x6b, 0x91, 0x69, 0xb8, 0x00, + 0xcf, 0x81, 0xdf, 0x52, 0x08, 0xb2, 0xe5, 0x56, 0x94, 0x41, 0x92, 0x39, + 0x74, 0x3c, 0xc6, 0xc0, 0x43, 0xb9, 0xf0, 0x6e, 0x51, 0x58, 0x0a, 0xb4, + 0x13, 0x7e, 0x82, 0x04, 0x5e, 0x09, 0xa9, 0x3f, 0x6e, 0x55, 0xae, 0xc6, + 0xe9, 0xa5, 0x51, 0x7a, 0x36, 0x8e, 0xe4, 0x31, 0x59, 0x76, 0x14, 0x96, + 0xa1, 0xfb, 0x6d, 0xca, 0x65, 0xe8, 0x26, 0x01, 0xe0, 0xce, 0xc8, 0x9c, + 0x46, 0xa3, 0x96, 0x18, 0x57, 0xa1, 0xaa, 0x8c, 0xc0, 0xf8, 0x1e, 0x0f, + 0x57, 0x0d, 0xae, 0x46, 0x93, 0x53, 0xd6, 0xcc, 0x2f, 0x36, 0x09, 0x9b, + 0x9e, 0x9d, 0x55, 0xeb, 0x3e, 0x98, 0x92, 0xcf, 0x57, 0x91, 0x75, 0x73, + 0x86, 0xc4, 0xfa, 0x14, 0x06, 0x19, 0x5b, 0x5f, 0xc3, 0x4f, 0xbe, 0x79, + 0x06, 0xb8, 0x71, 0x65, 0xce, 0x61, 0xe9, 0x91, 0x66, 0x14, 0x93, 0x55, + 0xfc, 0xd5, 0xad, 0x67, 0xbd, 0x71, 0x25, 0xb3, 0x88, 0xb6, 0x93, 0x1e, + 0x2f, 0x89, 0x02, 0x35, 0xaf, 0xf1, 0x9c, 0x6f, 0x78, 0xd6, 0xf7, 0x9a, + 0x56, 0x6b, 0x5f, 0x7e, 0xf7, 0xd4, 0x4d, 0x6b, 0x5a, 0xd7, 0xa7, 0xfe, + 0x3d, 0x2b, 0xf7, 0x8d, 0xe3, 0x1b, 0xb5, 0xe2, 0xc7, 0xd4, 0x5b, 0xda, + 0x35, 0xfb, 0xe8, 0xf7, 0x89, 0xb8, 0x0e, 0x79, 0x6d, 0x71, 0x67, 0xcc, + 0x08, 0xec, 0x35, 0xae, 0x5c, 0x64, 0x04, 0x01, 0xd8, 0x6b, 0xba, 0x90, + 0x66, 0x5a, 0x28, 0xa0, 0xe8, 0x08, 0x7f, 0xba, 0xe7, 0x44, 0x53, 0xbc, + 0xee, 0xf2, 0xa6, 0x9b, 0xa9, 0x55, 0xb6, 0xd5, 0xba, 0x55, 0xd5, 0x3b, + 0xef, 0x7e, 0x89, 0x54, 0x23, 0x17, 0x2b, 0xce, 0x99, 0x1a, 0x97, 0xa5, + 0x79, 0x7f, 0xfd, 0xd8, 0x99, 0xfc, 0xcd, 0xbb, 0xb9, 0xd3, 0xfd, 0x33, + 0xda, 0xff, 0xb2, 0xdb, 0xfa, 0xaa, 0x5b, 0x4e, 0x92, 0x2d, 0xe9, 0x54, + 0xa1, 0x89, 0x10, 0xb4, 0xb3, 0x97, 0x15, 0x51, 0x60, 0xe8, 0x70, 0x6a, + 0x6c, 0xc2, 0xc8, 0x50, 0xf8, 0xd3, 0xd8, 0xa0, 0x42, 0x99, 0x07, 0xaa, + 0x30, 0x26, 0x80, 0x97, 0x30, 0x26, 0xc0, 0xbe, 0x30, 0x31, 0x01, 0x1f, + 0x30, 0x4c, 0xc1, 0xf6, 0x30, 0x95, 0x84, 0x73, 0x31, 0xd7, 0xd8, 0x7e, + 0x3f, 0x45, 0xe5, 0x13, 0x31, 0x7c, 0xc4, 0x60, 0x30, 0x61, 0x81, 0x09, + 0x30, 0x20, 0x40, 0xd0, 0x30, 0x65, 0x81, 0x71, 0x31, 0x0c, 0xc1, 0x0d, + 0x30, 0x4a, 0x40, 0x76, 0x01, 0x00, 0xf2, 0x34, 0x03, 0xd0, 0x38, 0x30, + 0x64, 0x14, 0x54, 0x14, 0xc6, 0x86, 0x0e, 0x84, 0x61, 0xcd, 0x77, 0x9c, + 0x35, 0x67, 0x96, 0xbf, 0x0d, 0xff, 0xfb, 0xd4, 0x60, 0x26, 0x8d, 0x88, + 0x6d, 0x70, 0x40, 0x03, 0xfb, 0x7b, 0x70, 0x5b, 0x6d, 0xf8, 0x56, 0x40, + 0x45, 0x6e, 0x20, 0xe5, 0xcd, 0x04, 0x6f, 0xed, 0xed, 0xc1, 0x4e, 0x38, + 0x21, 0x04, 0xb1, 0x89, 0xb8, 0xde, 0x0f, 0x7e, 0x64, 0x89, 0x5a, 0x61, + 0x80, 0x4b, 0x71, 0xdb, 0x84, 0x4f, 0x64, 0xd5, 0xe0, 0x68, 0x54, 0x86, + 0xab, 0xa0, 0x86, 0x04, 0xc0, 0xb0, 0x35, 0xeb, 0x2c, 0x8e, 0xb4, 0x00, + 0xed, 0x43, 0x55, 0xef, 0x3a, 0xe9, 0x7a, 0xe2, 0xdf, 0x91, 0x50, 0x4e, + 0x40, 0x34, 0x2e, 0x99, 0x55, 0xcf, 0xcd, 0xe3, 0x89, 0xcb, 0x09, 0x36, + 0x87, 0x48, 0xf7, 0x90, 0x57, 0x51, 0xdb, 0x49, 0x7a, 0xbd, 0xeb, 0xe4, + 0x7d, 0x5e, 0x46, 0x61, 0xab, 0x02, 0xb1, 0xb4, 0xb1, 0x32, 0x43, 0x54, + 0xa9, 0x51, 0x0b, 0x30, 0x1f, 0xae, 0xd6, 0x61, 0x0b, 0xaa, 0x7e, 0x12, + 0x1a, 0xa8, 0xa2, 0x7b, 0x0e, 0xed, 0x3a, 0xa6, 0x19, 0x28, 0x75, 0x99, + 0x15, 0xd1, 0x60, 0x5a, 0xaa, 0xca, 0x42, 0x9d, 0x4c, 0xae, 0x89, 0xb6, + 0xb7, 0xac, 0xb1, 0x5a, 0xaf, 0x7a, 0x98, 0xae, 0x9b, 0x99, 0xe2, 0xb8, + 0x3c, 0x9e, 0xf0, 0x98, 0x57, 0x32, 0x43, 0x66, 0x57, 0x42, 0xc4, 0x94, + 0x56, 0xc1, 0x73, 0x86, 0xc1, 0x03, 0x31, 0xb5, 0x68, 0xcc, 0x4f, 0x21, + 0xc5, 0xdc, 0xad, 0x6c, 0xf3, 0x43, 0xdb, 0x1d, 0x68, 0xdf, 0x3b, 0x2b, + 0x8b, 0x14, 0x39, 0xf4, 0xf9, 0x49, 0x3c, 0x18, 0x96, 0x9e, 0x03, 0xec, + 0xbf, 0x8c, 0x9d, 0x99, 0x44, 0xdb, 0xb3, 0xc2, 0x3a, 0x89, 0x0b, 0x46, + 0xbb, 0x2e, 0x49, 0xe5, 0x1a, 0xd8, 0x01, 0x0e, 0x60, 0x00, 0xa0, 0x5a, + 0x5a, 0x96, 0x9a, 0x2b, 0x53, 0x3a, 0xdd, 0x95, 0x66, 0x47, 0xaa, 0x48, + 0x8c, 0xff, 0xd5, 0x0b, 0x7e, 0xb0, 0xe6, 0x20, 0x55, 0x0c, 0x0c, 0x30, + 0xce, 0xac, 0xed, 0x62, 0xd3, 0xbf, 0x55, 0x5b, 0x51, 0xcd, 0x77, 0x75, + 0x59, 0x1e, 0xf3, 0x94, 0x9e, 0x46, 0xbe, 0xcd, 0x6b, 0x31, 0xf7, 0x6f, + 0x4f, 0xfe, 0xbf, 0xdd, 0x3f, 0xff, 0x4b, 0x7d, 0x14, 0xea, 0x8f, 0xdf, + 0xd9, 0xaa, 0x56, 0x35, 0xef, 0xbb, 0x48, 0xad, 0x3b, 0x90, 0xca, 0xc2, + 0xe7, 0x13, 0x12, 0x11, 0x33, 0xb0, 0xa1, 0xc5, 0xae, 0x13, 0x55, 0x11, + 0x10, 0x30, 0x22, 0x16, 0x00, 0xc8, 0xc0, 0x45, 0x02, 0x0c, 0xc0, 0x9a, + 0x03, 0xa8, 0xc1, 0x1b, 0x06, 0xdc, 0xc2, 0x2e, 0x0f, 0xb0, 0xc6, 0x41, + 0x62, 0xc4, 0xf3, 0xfb, 0x69, 0x30, 0xc7, 0x49, 0x10, 0x9c, 0xc2, 0xa2, + 0x08, 0xd0, 0xc1, 0x74, 0x06, 0x10, 0xc1, 0x9d, 0x06, 0xb4, 0xc3, 0x18, + 0x02, 0x2c, 0xc0, 0xfc, 0x02, 0x28, 0xc0, 0x2d, 0x00, 0x6c, 0x48, 0x01, + 0xa0, 0xe0, 0x35, 0x08, 0x00, 0x87, 0x9a, 0x17, 0xb1, 0x87, 0x89, 0x2a, + 0x57, 0x7a, 0xea, 0xf2, 0xa1, 0x7e, 0x99, 0xeb, 0xd9, 0x7a, 0x32, 0x8b, + 0x86, 0x18, 0x16, 0xfa, 0x67, 0x40, 0xed, 0xab, 0x1c, 0x3a, 0x80, 0x17, + 0x19, 0x61, 0x5a, 0x7b, 0xb2, 0x2a, 0x04, 0x8c, 0x34, 0xd1, 0xea, 0xb4, + 0x11, 0x67, 0x36, 0x3b, 0x4b, 0x72, 0x30, 0xf2, 0x33, 0xa9, 0x4c, 0x96, + 0xbc, 0xae, 0x24, 0xe2, 0xd8, 0x61, 0x81, 0x76, 0x03, 0x38, 0xe3, 0x67, + 0x52, 0xaa, 0x63, 0x43, 0x78, 0xf9, 0xfb, 0x74, 0x37, 0x22, 0x4a, 0xe3, + 0x78, 0xb7, 0x99, 0x8e, 0xf9, 0x8c, 0xee, 0x8b, 0xec, 0x0f, 0xea, 0xe5, + 0x97, 0x3d, 0xc6, 0xa4, 0x96, 0x60, 0x3f, 0x30, 0xe2, 0xf9, 0x92, 0x9e, + 0x14, 0xcc, 0xda, 0xb3, 0x51, 0xe3, 0x76, 0xd8, 0x8f, 0x5b, 0x20, 0x61, + 0xf5, 0x3d, 0x5b, 0xdf, 0xc2, 0x6f, 0x63, 0x9e, 0x03, 0x16, 0x6d, 0x0a, + 0x1b, 0x8b, 0x9b, 0x94, 0x6a, 0xd2, 0x25, 0x55, 0xfb, 0x6c, 0xb4, 0x14, + 0xc3, 0xc8, 0xef, 0x5c, 0xe2, 0x5a, 0xf5, 0x81, 0x9b, 0xde, 0x35, 0x5b, + 0xa9, 0x6b, 0xdf, 0x53, 0xcf, 0x34, 0x26, 0xa8, 0x76, 0x87, 0x1e, 0x79, + 0xf3, 0x27, 0xa6, 0x34, 0xd5, 0xba, 0xcf, 0x6d, 0x45, 0xac, 0xf1, 0x23, + 0x46, 0x65, 0x61, 0x7e, 0xd9, 0xd6, 0x5d, 0xb0, 0x2d, 0x5d, 0x58, 0xe1, + 0x15, 0x49, 0x49, 0x17, 0x6c, 0x38, 0x52, 0x24, 0x49, 0xf1, 0x98, 0x5a, + 0xac, 0x00, 0x39, 0x75, 0x36, 0xa2, 0x67, 0xb3, 0x97, 0xc5, 0xee, 0x53, + 0xda, 0x1f, 0x61, 0x7d, 0xc9, 0xf2, 0x31, 0xaa, 0x9d, 0x89, 0xf9, 0x3c, + 0xf4, 0x53, 0x64, 0x3e, 0xa2, 0xf4, 0xca, 0xa7, 0x4d, 0x91, 0x3a, 0xeb, + 0x76, 0x92, 0xdf, 0xe7, 0xd3, 0xed, 0x7d, 0x17, 0xeb, 0xb6, 0xf6, 0xed, + 0x6b, 0x27, 0x4f, 0x27, 0x2f, 0xea, 0x74, 0x64, 0xda, 0xf6, 0xd9, 0xc9, + 0xfc, 0xfc, 0xd5, 0x5f, 0x65, 0xa2, 0x90, 0xe7, 0x96, 0x90, 0x37, 0x71, + 0x46, 0x18, 0x41, 0x0a, 0xe0, 0xc4, 0xc4, 0x94, 0x59, 0x5c, 0x5c, 0x5d, + 0x25, 0x50, 0x03, 0x01, 0x34, 0x05, 0x43, 0x01, 0xb0, 0x05, 0x73, 0x02, + 0x94, 0x07, 0xe3, 0x04, 0x30, 0x0e, 0x13, 0x08, 0x44, 0x21, 0x03, 0x18, + 0x40, 0xe8, 0x33, 0xce, 0xa9, 0x37, 0xe3, 0x1b, 0x58, 0x1d, 0xf3, 0x06, + 0xec, 0x01, 0xb3, 0x00, 0x84, 0x0e, 0xf3, 0x02, 0x8c, 0x18, 0x43, 0x08, + 0x68, 0x0d, 0x23, 0x03, 0xe8, 0x0a, 0x90, 0x50, 0x0a, 0xc5, 0xb7, 0x1a, + 0x0a, 0x2f, 0x61, 0x6d, 0xcc, 0x3f, 0xd8, 0xdf, 0x81, 0xa1, 0x98, 0xf5, + 0xb7, 0xa6, 0x1b, 0x8a, 0x33, 0xca, 0x49, 0x64, 0xbf, 0x82, 0xc6, 0xf4, + 0x74, 0xf1, 0xb7, 0xad, 0xa1, 0xbb, 0x30, 0x7b, 0x35, 0xbc, 0xfe, 0x36, + 0x21, 0xd0, 0x54, 0x49, 0xa9, 0xff, 0xfb, 0xd4, 0x60, 0x32, 0x8c, 0xd7, + 0x28, 0x70, 0x42, 0x13, 0xfb, 0x63, 0x70, 0x50, 0x0e, 0x08, 0x41, 0x28, + 0x22, 0x6e, 0x22, 0x0d, 0xc0, 0xfe, 0x0f, 0xf1, 0x8d, 0xc1, 0x23, 0xb8, + 0x21, 0x40, 0xd0, 0x95, 0xb8, 0x52, 0xa5, 0x6b, 0xd0, 0x6b, 0xc3, 0x2b, + 0x9d, 0xa3, 0x8e, 0xb3, 0x49, 0x34, 0xae, 0xc4, 0x31, 0xa7, 0xd2, 0x28, + 0x8f, 0x1b, 0x6c, 0x54, 0x37, 0x69, 0x15, 0x12, 0xad, 0x94, 0xeb, 0x57, + 0xdd, 0x91, 0x72, 0xed, 0x69, 0xb7, 0xbd, 0x75, 0xe0, 0x30, 0x84, 0x39, + 0x11, 0x58, 0x59, 0xdd, 0x58, 0x9f, 0xb3, 0xae, 0xd1, 0x1b, 0x33, 0xd6, + 0xe8, 0x66, 0x2b, 0xf3, 0x06, 0x47, 0x6e, 0xf2, 0x6b, 0x2e, 0x42, 0xbe, + 0x5b, 0x7a, 0xb3, 0xd3, 0x0d, 0x63, 0xd4, 0x3f, 0x69, 0xdb, 0x3d, 0x0c, + 0xc7, 0x1f, 0x47, 0x64, 0x3b, 0xf7, 0xbb, 0x79, 0xa7, 0x4e, 0x37, 0xb7, + 0x6d, 0x46, 0xfc, 0x77, 0x96, 0x7d, 0xfb, 0x77, 0x5a, 0x94, 0x9c, 0x79, + 0xda, 0x35, 0x68, 0x27, 0x2d, 0x4e, 0x5b, 0x7d, 0xec, 0x7f, 0x9d, 0xae, + 0x4f, 0x5d, 0xa6, 0x6e, 0xff, 0xb2, 0xc7, 0x3d, 0x06, 0xb1, 0x75, 0x77, + 0x3d, 0x08, 0x00, 0x1c, 0x5e, 0x86, 0xa5, 0x26, 0x2b, 0x3a, 0xd1, 0x11, + 0x4f, 0x95, 0x83, 0x83, 0x32, 0x5b, 0x9e, 0xa3, 0x75, 0xaf, 0x9d, 0x69, + 0x11, 0x98, 0xca, 0xcb, 0xa4, 0x8c, 0xaf, 0x57, 0x5d, 0x7b, 0x7b, 0xbd, + 0x35, 0x4e, 0x7f, 0xbd, 0xfb, 0x6b, 0xb2, 0x6d, 0xb7, 0x7d, 0xeb, 0x4b, + 0xea, 0xe5, 0xab, 0x7f, 0xde, 0xd7, 0xa2, 0x75, 0x4b, 0xd4, 0x94, 0xad, + 0xbb, 0x5a, 0x87, 0x3b, 0x3a, 0x4e, 0x0c, 0xc8, 0xac, 0x4a, 0x85, 0x33, + 0x8f, 0x08, 0x14, 0x29, 0x88, 0x28, 0xc2, 0x81, 0x05, 0x30, 0x1d, 0x00, + 0xa5, 0x30, 0x08, 0x01, 0x14, 0x30, 0x23, 0xc1, 0xcf, 0x30, 0x4a, 0x83, + 0x2a, 0x30, 0x96, 0xc7, 0x1d, 0x31, 0xe4, 0xa9, 0x2c, 0x3d, 0xbc, 0xb8, + 0x3b, 0x31, 0xf8, 0x87, 0x78, 0x30, 0xd1, 0x43, 0x83, 0x30, 0x8f, 0xc1, + 0xf7, 0x30, 0xbb, 0x81, 0xd4, 0x31, 0x90, 0x40, 0x94, 0x30, 0xa8, 0x40, + 0xe2, 0x30, 0x23, 0x80, 0x07, 0x16, 0x01, 0x3c, 0x20, 0x48, 0x3a, 0x34, + 0x21, 0x07, 0x1a, 0x2c, 0x9c, 0x79, 0x80, 0x18, 0xf0, 0x39, 0xbc, 0x75, + 0x8a, 0x80, 0x28, 0x61, 0x08, 0x1b, 0xe9, 0x74, 0x46, 0x95, 0x55, 0xcc, + 0x54, 0x24, 0x98, 0x98, 0x82, 0x5f, 0x55, 0xc7, 0x2d, 0x91, 0x50, 0xb5, + 0xa7, 0xe6, 0x75, 0x27, 0xc8, 0x83, 0x30, 0x8c, 0xa1, 0xf7, 0x46, 0x0c, + 0x4f, 0xbf, 0x6b, 0x6e, 0x9c, 0x7e, 0x40, 0xa9, 0xdd, 0xc8, 0xd4, 0xb2, + 0x56, 0xea, 0x33, 0x27, 0x1c, 0xb4, 0x72, 0x24, 0x27, 0x61, 0x35, 0xca, + 0x66, 0x76, 0xa2, 0x23, 0xa7, 0x1a, 0x3d, 0x4c, 0x9d, 0x42, 0xf2, 0xe6, + 0xa1, 0x23, 0x61, 0x83, 0x82, 0x99, 0x38, 0x8a, 0x76, 0x62, 0x5e, 0x3e, + 0x35, 0x2d, 0xc2, 0x25, 0x88, 0x89, 0xc4, 0xe3, 0x62, 0x1d, 0x90, 0x17, + 0xe4, 0x07, 0xe7, 0xaf, 0x29, 0x2e, 0x90, 0xd8, 0x1d, 0x8f, 0xd5, 0xa3, + 0x84, 0xe4, 0xb1, 0x64, 0x1b, 0x3e, 0x54, 0xe2, 0x7a, 0x25, 0x74, 0xf4, + 0x68, 0x35, 0x8e, 0xcc, 0x93, 0x92, 0x47, 0x6a, 0xaf, 0x3c, 0xaa, 0x4f, + 0x3f, 0x58, 0xc4, 0x27, 0x8a, 0x4f, 0x98, 0x35, 0x22, 0xa9, 0x79, 0x08, + 0xc8, 0xe6, 0x35, 0x89, 0x13, 0xac, 0x2c, 0x97, 0x1c, 0xa9, 0x71, 0x1a, + 0x43, 0xb3, 0xd6, 0x9d, 0x20, 0xd2, 0xef, 0x34, 0xe2, 0x23, 0xb2, 0xab, + 0x10, 0x99, 0xb6, 0xa5, 0xb6, 0x5d, 0xba, 0x27, 0x52, 0x1a, 0xb8, 0xac, + 0x4d, 0x06, 0x84, 0x10, 0xed, 0xa2, 0xa2, 0x41, 0x1c, 0xc5, 0x08, 0x92, + 0x5a, 0x48, 0x29, 0x08, 0xcb, 0xa0, 0xe5, 0x53, 0x50, 0x4e, 0xba, 0x55, + 0xae, 0xea, 0xe6, 0x66, 0xd5, 0x82, 0xcb, 0x47, 0xfd, 0xa3, 0xda, 0xee, + 0xde, 0x91, 0x23, 0xff, 0xb3, 0xa9, 0x6e, 0xbd, 0xbf, 0xed, 0xfc, 0xd4, + 0xfd, 0x6b, 0xb7, 0xd9, 0x69, 0xeb, 0xbf, 0xcc, 0xa9, 0x4b, 0xff, 0xe9, + 0x66, 0xd5, 0xbd, 0x9b, 0xf6, 0x4f, 0xbb, 0x2d, 0x3a, 0xbe, 0xee, 0x73, + 0xd2, 0x62, 0x1c, 0xaa, 0xaa, 0xea, 0x2a, 0x2e, 0x61, 0x38, 0x78, 0xa6, + 0x12, 0x90, 0x14, 0x14, 0x5d, 0x85, 0xd5, 0x7a, 0x80, 0x03, 0x01, 0x18, + 0x03, 0x53, 0x01, 0x9c, 0x02, 0xc3, 0x02, 0x88, 0x02, 0x53, 0x04, 0x54, + 0x03, 0xe3, 0x08, 0x90, 0x0a, 0x53, 0x1a, 0x54, 0x42, 0x23, 0xd2, 0xac, + 0x66, 0x33, 0x1b, 0x7c, 0x09, 0xa3, 0x07, 0xd8, 0x0b, 0x43, 0x02, 0x10, + 0x11, 0x83, 0x00, 0x08, 0x19, 0x33, 0x02, 0x6c, 0x0b, 0x93, 0x00, 0xd4, + 0x01, 0x73, 0x00, 0x00, 0x02, 0x13, 0x00, 0x18, 0x00, 0x25, 0x15, 0x47, + 0x61, 0x00, 0x01, 0x9a, 0xea, 0x9b, 0x30, 0x2a, 0x75, 0x3b, 0xb4, 0xcf, + 0x1c, 0xc4, 0x75, 0xa3, 0xe1, 0x6f, 0x17, 0x48, 0x54, 0x2e, 0x00, 0x8f, + 0xd4, 0x8f, 0x3a, 0xd2, 0xae, 0xac, 0x77, 0xfe, 0x37, 0x2b, 0x43, 0x9a, + 0xcd, 0x71, 0x25, 0x54, 0x11, 0xa7, 0x2d, 0xe2, 0x86, 0x29, 0xb0, 0x97, + 0x5b, 0x62, 0x12, 0xb9, 0xe9, 0x4c, 0xba, 0x59, 0x11, 0x7f, 0x80, 0x79, + 0x81, 0x38, 0x7a, 0x58, 0x42, 0x0e, 0x9e, 0x50, 0xd8, 0x61, 0x14, 0x54, + 0x73, 0x1a, 0x39, 0x6a, 0x59, 0x4d, 0x51, 0x73, 0x05, 0xad, 0xed, 0xea, + 0xe9, 0x10, 0x51, 0x16, 0xe6, 0x71, 0x58, 0xca, 0xe0, 0xc8, 0x91, 0x8c, + 0x22, 0xad, 0x1c, 0xa3, 0x85, 0x09, 0x41, 0xab, 0x2b, 0xda, 0x42, 0xf0, + 0x3f, 0x28, 0xe1, 0x82, 0xf3, 0xff, 0xfb, 0xd4, 0x60, 0x59, 0x0d, 0xc6, + 0xef, 0x70, 0x42, 0x93, 0xfb, 0x43, 0x70, 0x48, 0x2d, 0xc8, 0x62, 0x1c, + 0x42, 0x6e, 0x61, 0x89, 0xc0, 0xfe, 0x0f, 0xf5, 0x8d, 0xc1, 0xe1, 0x38, + 0x20, 0x44, 0xb1, 0x99, 0xb8, 0xcb, 0x1e, 0xd5, 0x07, 0x34, 0xc0, 0xed, + 0xa8, 0xd8, 0xa3, 0xdc, 0x88, 0x2c, 0x7c, 0xc2, 0xef, 0x6b, 0xd0, 0xa1, + 0x34, 0x53, 0x8f, 0xa8, 0xab, 0xa8, 0xaa, 0xb4, 0x96, 0x78, 0x49, 0x48, + 0x1b, 0xd4, 0x2c, 0xb3, 0xa9, 0xa3, 0xe1, 0xd8, 0xf6, 0xa3, 0xc5, 0xc7, + 0x18, 0x75, 0x20, 0x00, 0xd4, 0xcf, 0xf5, 0xab, 0xab, 0xec, 0xe6, 0x72, + 0x16, 0xdf, 0xbd, 0x74, 0xbd, 0x02, 0x05, 0x64, 0x42, 0xbc, 0x85, 0x26, + 0xf4, 0x0f, 0xdd, 0x1d, 0x99, 0x08, 0xca, 0xa7, 0x63, 0x15, 0x11, 0x29, + 0xbf, 0x44, 0xf6, 0xa6, 0xdf, 0xdf, 0xea, 0xbd, 0x76, 0x4d, 0xeb, 0xff, + 0xff, 0xdb, 0xf7, 0xff, 0xff, 0x7f, 0xdf, 0xaf, 0xfe, 0xbe, 0xb2, 0xce, + 0x53, 0x31, 0x2f, 0x60, 0xc1, 0xc5, 0xa3, 0xb8, 0x21, 0x28, 0x80, 0x49, + 0xa9, 0x30, 0x20, 0x40, 0xda, 0x30, 0x14, 0x01, 0x43, 0x30, 0x0a, 0x41, + 0xee, 0x30, 0x01, 0x83, 0x5d, 0x30, 0x03, 0xc7, 0x78, 0x30, 0x3e, 0x2c, + 0xdb, 0x30, 0x94, 0x38, 0x9a, 0x30, 0x45, 0x87, 0xed, 0x30, 0x5e, 0x83, + 0x2a, 0x30, 0x7f, 0x81, 0x16, 0x30, 0xc2, 0xc0, 0x0d, 0x31, 0xa9, 0x80, + 0x2c, 0x30, 0xad, 0x81, 0x2c, 0x30, 0x20, 0xc0, 0x02, 0x0c, 0x03, 0x84, + 0x0a, 0x03, 0x81, 0x40, 0x53, 0x06, 0x81, 0x83, 0x0c, 0xa5, 0x53, 0x25, + 0xc3, 0x94, 0xe4, 0x7e, 0xe3, 0x88, 0x80, 0xc6, 0x27, 0x53, 0x02, 0x29, + 0x2a, 0x6e, 0x8f, 0xf9, 0x83, 0xa0, 0xf4, 0x07, 0x62, 0x36, 0xc6, 0xa2, + 0x4d, 0x1e, 0x57, 0x03, 0x45, 0x21, 0x15, 0x0b, 0x00, 0x2a, 0xdc, 0xe3, + 0xf2, 0xef, 0xbf, 0xd5, 0x94, 0x25, 0xbb, 0x32, 0x88, 0x44, 0x4a, 0x36, + 0x80, 0xb9, 0xbd, 0x4a, 0xe1, 0x54, 0x0d, 0x85, 0xfc, 0x39, 0x79, 0x29, + 0x4d, 0x40, 0xeb, 0x1a, 0x43, 0xca, 0x0e, 0x41, 0x9b, 0x65, 0xab, 0x5c, + 0x7f, 0x83, 0xcb, 0xa8, 0x93, 0xc2, 0xad, 0xf0, 0xe4, 0xed, 0xaf, 0x2e, + 0x95, 0x8f, 0x69, 0x68, 0xcc, 0xa1, 0x53, 0x02, 0x03, 0x87, 0xe9, 0x50, + 0x0a, 0xeb, 0x93, 0x9d, 0x18, 0xf9, 0xa1, 0x8a, 0x7e, 0x46, 0x0d, 0xc7, + 0x62, 0x61, 0xa9, 0x71, 0x74, 0x54, 0xa9, 0xb7, 0xae, 0x81, 0xcf, 0x49, + 0x56, 0xca, 0x66, 0x32, 0x9d, 0x2a, 0x83, 0x96, 0x22, 0x59, 0x89, 0xd2, + 0x39, 0x1c, 0x47, 0x66, 0x2b, 0xfa, 0xa2, 0x41, 0xe4, 0x29, 0xec, 0x46, + 0x65, 0x7b, 0x4e, 0xaa, 0x80, 0x82, 0x84, 0xcb, 0x4b, 0xe8, 0x86, 0x5b, + 0x78, 0xf8, 0xc6, 0xe7, 0x6a, 0x57, 0xbd, 0xd8, 0xc1, 0xba, 0x88, 0x4a, + 0x8a, 0x53, 0xf9, 0xc9, 0x41, 0x75, 0xd6, 0xa6, 0x39, 0x2e, 0xa4, 0xe4, + 0xc9, 0x0a, 0x78, 0x5c, 0x17, 0x9b, 0x16, 0xf4, 0x76, 0x22, 0x8e, 0xcb, + 0x4c, 0x97, 0x16, 0x88, 0xc8, 0x8e, 0x00, 0x8a, 0xd6, 0xf4, 0x36, 0x1c, + 0x85, 0x4d, 0x61, 0xdc, 0x90, 0xcc, 0x46, 0x8a, 0x08, 0x56, 0xd1, 0x34, + 0x05, 0x4c, 0x2d, 0xb5, 0x46, 0x55, 0xc5, 0xe6, 0xd7, 0x8a, 0x33, 0xf0, + 0x19, 0xdf, 0x03, 0xd3, 0x35, 0xad, 0x08, 0x8c, 0xd9, 0xf7, 0xad, 0x8b, + 0xf9, 0x5a, 0xed, 0x96, 0xd3, 0xf2, 0xb1, 0xb1, 0xf1, 0xad, 0xa9, 0xf7, + 0x3b, 0x3b, 0x7d, 0xcc, 0xcc, 0xc7, 0x7d, 0xac, 0xf1, 0x33, 0x4f, 0x2c, + 0xd5, 0xf1, 0xfc, 0xdf, 0xfe, 0x75, 0x5a, 0xd9, 0xf5, 0xdf, 0xe4, 0xec, + 0x37, 0xef, 0xdf, 0xcc, 0x7f, 0x99, 0xde, 0x36, 0x2f, 0x73, 0x55, 0xe7, + 0x9b, 0xad, 0xe1, 0xcc, 0xef, 0x0f, 0x8c, 0xd2, 0x7d, 0x5a, 0x32, 0xe6, + 0x14, 0x34, 0xd8, 0x05, 0xb0, 0x4a, 0x26, 0x81, 0x07, 0x4c, 0xb5, 0x96, + 0x28, 0xc4, 0x12, 0x0b, 0xb0, 0x34, 0xc4, 0x14, 0xd4, 0x55, 0x55, 0x55, + 0x55, 0x00, 0x00, 0x0d, 0xd9, 0x63, 0x20, 0x00, 0x70, 0x02, 0x41, 0xc0, + 0x2c, 0x18, 0x0a, 0x20, 0x06, 0x98, 0x12, 0x80, 0x1a, 0x18, 0x25, 0xe0, + 0x4a, 0x98, 0x76, 0x41, 0xcd, 0x1b, 0xdc, 0xc2, 0xae, 0x98, 0x7e, 0xc0, + 0x6e, 0x18, 0x27, 0x20, 0x58, 0x98, 0x0e, 0x60, 0x56, 0x98, 0x09, 0x40, + 0x70, 0x18, 0x10, 0x60, 0x24, 0x18, 0x07, 0xe0, 0x32, 0x85, 0x00, 0x06, + 0x2f, 0x6b, 0x4a, 0x49, 0xd8, 0xe9, 0x84, 0x56, 0x52, 0x6a, 0x43, 0xde, + 0xd3, 0x67, 0x6e, 0x1e, 0x7e, 0xe8, 0xdd, 0x89, 0xb0, 0x12, 0x59, 0x64, + 0x33, 0x1e, 0xfe, 0xce, 0x40, 0xec, 0xd2, 0xa4, 0x6e, 0x69, 0x17, 0xd4, + 0xe2, 0x69, 0xcb, 0x90, 0xc1, 0xb1, 0x46, 0x9f, 0x62, 0xf4, 0xc5, 0x89, + 0x5a, 0xe1, 0xca, 0x82, 0x5f, 0x18, 0x74, 0x5f, 0x17, 0x04, 0x52, 0x09, + 0x14, 0x05, 0x83, 0x98, 0x79, 0xae, 0x40, 0x82, 0x23, 0x0c, 0x15, 0x23, + 0x34, 0x64, 0xb6, 0xc7, 0xa4, 0x89, 0x87, 0xcc, 0x02, 0xde, 0xf7, 0xa9, + 0xc5, 0xa2, 0x2f, 0x98, 0x1c, 0xa8, 0x86, 0xa3, 0xfb, 0xa7, 0x30, 0xdc, + 0x4f, 0x6b, 0xd7, 0x1d, 0x42, 0xce, 0x9d, 0x7d, 0x5b, 0xff, 0x1d, 0xf1, + 0x35, 0x55, 0x1f, 0x0b, 0xef, 0xcf, 0x49, 0xf3, 0xb7, 0x33, 0x1c, 0xdb, + 0xdf, 0xff, 0x73, 0x4a, 0xe9, 0x75, 0x55, 0x37, 0x2e, 0x9c, 0xc4, 0x94, + 0x8d, 0x70, 0xbb, 0x25, 0xae, 0x3c, 0xc0, 0x17, 0x17, 0x50, 0x3e, 0x77, + 0x2c, 0x3f, 0x2e, 0xfd, 0xb3, 0x34, 0x7c, 0x94, 0x13, 0x91, 0xa6, 0x84, + 0x0b, 0xbf, 0x64, 0xae, 0xf6, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x09, 0xc6, + 0x26, 0x70, 0x44, 0xd3, 0xfa, 0x43, 0x70, 0x6c, 0xce, 0x08, 0x21, 0x3c, + 0x68, 0x6e, 0x28, 0xb5, 0xc1, 0x0a, 0x4f, 0xef, 0x0d, 0xc2, 0x0f, 0x38, + 0x20, 0x05, 0x91, 0xa1, 0xb8, 0x1c, 0xbc, 0xc7, 0x8e, 0x81, 0x63, 0xf6, + 0x2c, 0x8e, 0xc8, 0xd5, 0x49, 0x31, 0x53, 0xeb, 0x51, 0x74, 0x95, 0xb6, + 0xb0, 0x9f, 0x53, 0x57, 0xb4, 0xf4, 0xbf, 0xf3, 0x73, 0xdf, 0xc7, 0xf5, + 0xcf, 0xcc, 0x68, 0x9f, 0x53, 0x13, 0xbc, 0xfd, 0xa4, 0x57, 0x3e, 0xcd, + 0x7f, 0x5d, 0x4d, 0x71, 0x3c, 0x74, 0xf1, 0x71, 0x13, 0x33, 0x77, 0x5c, + 0x5c, 0x7e, 0xb5, 0xf7, 0x4d, 0xc2, 0xcf, 0xbf, 0xcc, 0xcc, 0x2d, 0x4c, + 0x8c, 0x32, 0x1e, 0x05, 0xa0, 0x92, 0x83, 0xaa, 0x11, 0xc8, 0x60, 0x90, + 0xa1, 0xe2, 0x36, 0xc3, 0x05, 0x84, 0x10, 0x6c, 0xc0, 0x00, 0x02, 0xfc, + 0xc1, 0x15, 0x02, 0xc4, 0xc0, 0x12, 0x03, 0x28, 0xc1, 0x46, 0x02, 0xa8, + 0xc2, 0x99, 0x14, 0x84, 0xc2, 0x33, 0x54, 0x40, 0xd9, 0xaf, 0x59, 0x1c, + 0xc1, 0x2f, 0x24, 0x60, 0xcc, 0xbe, 0x30, 0x98, 0xcb, 0x17, 0x0a, 0x2c, + 0xc3, 0xce, 0x08, 0x00, 0xc3, 0x4f, 0x05, 0xb4, 0xc0, 0x56, 0x04, 0xb8, + 0xc0, 0xc5, 0x03, 0x04, 0xc0, 0xb4, 0x03, 0x90, 0x48, 0x04, 0xc1, 0x27, + 0xce, 0xb4, 0xa0, 0xdb, 0x7a, 0x0d, 0x19, 0x34, 0xf4, 0x43, 0x8f, 0xba, + 0x68, 0xd6, 0x72, 0xcf, 0x16, 0x34, 0xc5, 0xd4, 0x0d, 0xa9, 0x20, 0x08, + 0x1a, 0x14, 0x15, 0x12, 0x26, 0x08, 0x18, 0x44, 0x31, 0xa3, 0xe3, 0x1e, + 0x24, 0x21, 0x25, 0x31, 0x30, 0x23, 0x24, 0x16, 0x21, 0x0c, 0x31, 0x20, + 0x41, 0x18, 0x3a, 0x08, 0x88, 0x03, 0x40, 0xa0, 0x85, 0x60, 0x4b, 0xec, + 0x02, 0x0e, 0x61, 0xe3, 0x66, 0x04, 0x40, 0x14, 0x09, 0x2f, 0xd8, 0xe8, + 0x00, 0x90, 0x81, 0x88, 0x84, 0x97, 0x00, 0xbb, 0xe9, 0x1f, 0x0a, 0x25, + 0x0a, 0x30, 0x20, 0x10, 0x31, 0x78, 0x30, 0x21, 0x4e, 0x0b, 0x3e, 0x42, + 0x10, 0x81, 0xc2, 0xc4, 0x61, 0xed, 0x79, 0x88, 0xa9, 0x23, 0x11, 0x85, + 0x4a, 0x11, 0x70, 0x6a, 0xcb, 0xe4, 0x2c, 0x85, 0x4f, 0x03, 0xad, 0x05, + 0x83, 0x49, 0xc4, 0xc9, 0x4c, 0x15, 0x26, 0x95, 0x08, 0x58, 0x63, 0x48, + 0xe0, 0x97, 0x03, 0xce, 0xe7, 0x4b, 0x99, 0xaa, 0x57, 0xb4, 0x89, 0x5b, + 0xbe, 0xf4, 0x33, 0x96, 0x0e, 0xc8, 0xdf, 0xa6, 0xb9, 0x1f, 0x95, 0x53, + 0xd1, 0xbd, 0x11, 0x58, 0x4b, 0x87, 0x10, 0x90, 0x38, 0x6f, 0xf4, 0x1d, + 0x6f, 0x78, 0xd8, 0x89, 0xc1, 0x95, 0x65, 0xfa, 0x9c, 0x7f, 0xe4, 0xb3, + 0xd4, 0x9b, 0xb5, 0x7a, 0x2f, 0x39, 0x33, 0x39, 0x43, 0x72, 0xac, 0x6e, + 0xb6, 0x15, 0xfb, 0x7a, 0x5b, 0x9d, 0x34, 0x82, 0xdd, 0x4c, 0x69, 0xe6, + 0xef, 0xd9, 0xe5, 0xdf, 0xf9, 0x45, 0x2c, 0xee, 0xe8, 0xe9, 0x29, 0xf2, + 0xdd, 0xdc, 0x35, 0x62, 0xfd, 0x25, 0x8c, 0xef, 0xce, 0xe7, 0xce, 0xe1, + 0x6f, 0x2d, 0xe7, 0x49, 0x84, 0xe6, 0x79, 0x61, 0xf5, 0xac, 0x57, 0xfc, + 0xaf, 0x4a, 0xf5, 0x63, 0x1c, 0x35, 0x6f, 0xef, 0x5f, 0xbf, 0x53, 0x29, + 0xfa, 0x98, 0xe1, 0xff, 0xcb, 0x13, 0x31, 0x4d, 0x81, 0x02, 0x67, 0xcb, + 0xe9, 0x3b, 0x4b, 0x5a, 0x9f, 0x1b, 0x19, 0xe7, 0xcb, 0x3d, 0xc4, 0x87, + 0x53, 0xb6, 0xa4, 0x06, 0x0e, 0xab, 0x98, 0x84, 0xa0, 0x05, 0x88, 0x6c, + 0x93, 0x3c, 0xe3, 0xcc, 0xa7, 0x2b, 0x1e, 0x23, 0xaa, 0xa5, 0xf0, 0x97, + 0x57, 0x76, 0xc8, 0x7d, 0x5d, 0xa8, 0xe9, 0x34, 0xa8, 0x9a, 0xf8, 0xae, + 0x69, 0xba, 0x91, 0x84, 0x76, 0x2f, 0x46, 0x0c, 0x38, 0xde, 0xb5, 0x8b, + 0x59, 0xbb, 0xab, 0xde, 0xbe, 0xef, 0xb2, 0x21, 0xad, 0xa5, 0xa4, 0x7c, + 0xc4, 0x41, 0x1d, 0x0f, 0xaa, 0x7f, 0x7a, 0x1d, 0x11, 0x7c, 0x5b, 0xa4, + 0x66, 0xad, 0xa3, 0x91, 0xb9, 0x33, 0xcd, 0xca, 0xbb, 0xdc, 0x78, 0xea, + 0x63, 0x65, 0xe6, 0x6e, 0x3d, 0x03, 0xa7, 0x1b, 0x2e, 0x1e, 0x0a, 0x10, + 0x2c, 0xa3, 0x03, 0xd0, 0xa0, 0xc0, 0x6a, 0x13, 0x87, 0xe1, 0x10, 0xa8, + 0x9c, 0x30, 0x42, 0x88, 0x21, 0xe0, 0x4e, 0x2e, 0x30, 0x1f, 0x01, 0x00, + 0x30, 0x32, 0xc0, 0x3a, 0x31, 0x16, 0x04, 0xd6, 0x30, 0xfe, 0x41, 0x54, + 0x30, 0x85, 0x82, 0x5e, 0x31, 0xd3, 0xcb, 0x91, 0x3c, 0xee, 0xd5, 0xd4, + 0x30, 0x77, 0x47, 0xdc, 0x3e, 0x1d, 0x2d, 0xfb, 0x32, 0xbe, 0x40, 0xcc, + 0x31, 0xd3, 0x40, 0x3d, 0x30, 0xf3, 0x01, 0x83, 0x30, 0x1b, 0x00, 0xe0, + 0x30, 0x20, 0x00, 0x18, 0x30, 0x5b, 0xc0, 0x79, 0x32, 0x68, 0x3b, 0x32, + 0xb1, 0x9d, 0x1a, 0x4a, 0x81, 0xa5, 0xe9, 0x86, 0xc0, 0x79, 0x80, 0x4a, + 0xd9, 0xc1, 0x43, 0x99, 0x85, 0x07, 0xa9, 0xbe, 0xe3, 0xb1, 0x89, 0xe6, + 0xc1, 0x82, 0xe1, 0x09, 0x80, 0x20, 0x10, 0x70, 0x0a, 0x4c, 0x07, 0x18, + 0x14, 0x15, 0x08, 0xc0, 0xd2, 0xd4, 0x98, 0x08, 0x08, 0x18, 0x76, 0x02, + 0x22, 0x18, 0x80, 0x13, 0x10, 0x80, 0x06, 0x05, 0x80, 0x46, 0x06, 0x00, + 0xa0, 0x20, 0x44, 0xc0, 0x10, 0x09, 0x8b, 0x3f, 0x0e, 0xda, 0x96, 0x85, + 0x00, 0x56, 0x2a, 0x60, 0x08, 0x14, 0xd5, 0xd0, 0x0b, 0x26, 0x94, 0x40, + 0x8d, 0xb3, 0x8c, 0xba, 0xa5, 0x2d, 0xa2, 0x76, 0xab, 0x61, 0x77, 0x93, + 0x5d, 0x35, 0x55, 0xf8, 0x5e, 0x92, 0xd3, 0xb8, 0x5b, 0x8f, 0x71, 0x31, + 0x70, 0x70, 0x28, 0x4a, 0x40, 0xbe, 0x22, 0x89, 0xe9, 0xc2, 0xdc, 0x6f, + 0x29, 0xc9, 0x11, 0xd6, 0x2b, 0xff, 0xfb, 0xd4, 0x60, 0x5e, 0x8f, 0xca, + 0x2b, 0x70, 0x40, 0x83, 0xfd, 0x7b, 0x70, 0x50, 0x2e, 0x08, 0x51, 0x40, + 0x25, 0x6e, 0x1f, 0x39, 0xc1, 0x06, 0x0f, 0xf1, 0x2d, 0xc1, 0x2a, 0xb7, + 0xa1, 0x48, 0xd0, 0x89, 0xb9, 0xab, 0x0c, 0xd6, 0x47, 0x32, 0xa1, 0x28, + 0xb2, 0x52, 0x58, 0x55, 0xc8, 0xe4, 0x49, 0xe2, 0x8a, 0x55, 0x2f, 0xd1, + 0x0e, 0x4f, 0xac, 0xc4, 0x76, 0x37, 0x97, 0x64, 0xf9, 0x36, 0x9d, 0x6c, + 0x5d, 0x4f, 0x11, 0x12, 0xe2, 0xa5, 0x58, 0x5a, 0x5d, 0x34, 0xbd, 0x54, + 0x9f, 0x0c, 0xda, 0x78, 0xcc, 0xd6, 0xd0, 0xe9, 0x99, 0x82, 0xe8, 0x72, + 0x7d, 0x5a, 0x86, 0x21, 0xd7, 0x65, 0x82, 0xad, 0x6d, 0x58, 0x6e, 0x62, + 0x6a, 0x95, 0x42, 0xa6, 0x6e, 0x91, 0x89, 0xb5, 0xec, 0x48, 0x49, 0xb6, + 0x68, 0x6a, 0x6c, 0x9f, 0xae, 0x18, 0xb4, 0x38, 0x2d, 0x95, 0xbd, 0xa4, + 0x97, 0x11, 0x5b, 0x1b, 0xa3, 0x28, 0xa3, 0x3d, 0x71, 0x8d, 0x66, 0xe8, + 0xcc, 0xd1, 0x95, 0x10, 0x17, 0x0c, 0xf5, 0xab, 0xc5, 0xcf, 0x7e, 0xe0, + 0xf1, 0x77, 0xb6, 0xc7, 0x72, 0xab, 0x98, 0xec, 0xe8, 0xf8, 0x96, 0x0a, + 0xb9, 0x95, 0x2a, 0xda, 0xb2, 0x7b, 0x2e, 0x23, 0x9e, 0x00, 0x80, 0x37, + 0x71, 0xd6, 0x53, 0x35, 0x46, 0xab, 0x45, 0x35, 0xda, 0x21, 0xb2, 0x3b, + 0x32, 0x4e, 0x21, 0xcf, 0xfc, 0xb5, 0x3a, 0x87, 0xff, 0xc9, 0xca, 0xcd, + 0x4d, 0x52, 0xfc, 0xdd, 0x18, 0xda, 0xbd, 0x18, 0xca, 0xe9, 0xd6, 0xd5, + 0x97, 0x7f, 0xd9, 0xfe, 0xab, 0xad, 0x2f, 0x93, 0xae, 0xac, 0xfa, 0xf6, + 0xda, 0xf6, 0xd9, 0x76, 0x54, 0xfa, 0x57, 0x55, 0xae, 0x95, 0xa2, 0x2a, + 0xbd, 0xde, 0xf6, 0x53, 0x99, 0x99, 0x92, 0xea, 0x83, 0x92, 0x76, 0x74, + 0x65, 0x51, 0x11, 0x00, 0x71, 0x13, 0x01, 0x14, 0x01, 0x63, 0x01, 0xd0, + 0x1e, 0x83, 0x07, 0xc0, 0x08, 0xd3, 0x02, 0x40, 0x0b, 0xb3, 0x02, 0xd4, + 0x23, 0x03, 0x0e, 0x80, 0xc0, 0x73, 0x96, 0x68, 0xec, 0x23, 0x07, 0xb4, + 0xa3, 0x93, 0xea, 0xfc, 0x03, 0xa3, 0x20, 0x10, 0x59, 0xc3, 0x02, 0x60, + 0x29, 0x23, 0x07, 0x48, 0x0a, 0x93, 0x02, 0xd0, 0x09, 0x91, 0x90, 0x15, + 0x4c, 0x06, 0x60, 0x40, 0x41, 0xc9, 0xb3, 0x3b, 0x45, 0x8c, 0xd2, 0x02, + 0x32, 0x6b, 0x54, 0xce, 0x63, 0x13, 0x03, 0xb9, 0xc6, 0xc6, 0x26, 0x45, + 0x9c, 0x9d, 0x3c, 0x12, 0x61, 0x70, 0x51, 0xb5, 0xca, 0x62, 0xc0, 0x32, + 0x60, 0xb2, 0x83, 0x8c, 0x85, 0xde, 0x80, 0x82, 0x6b, 0x0c, 0x03, 0x03, + 0x27, 0x10, 0xd1, 0x4e, 0xc0, 0x21, 0x56, 0xb3, 0x46, 0xab, 0xa5, 0xb0, + 0x73, 0xee, 0xd0, 0xed, 0xb4, 0x3a, 0x77, 0x16, 0x5c, 0xde, 0x64, 0xf3, + 0x6e, 0x1c, 0xbf, 0x05, 0x45, 0x66, 0x29, 0x94, 0xea, 0x99, 0xd1, 0x73, + 0xc7, 0x0c, 0x01, 0xc7, 0x90, 0xb2, 0x82, 0x0e, 0x89, 0x11, 0xe3, 0x90, + 0x6b, 0x59, 0x59, 0xb5, 0xc3, 0x68, 0x0f, 0x2f, 0x41, 0x76, 0xa0, 0x8d, + 0x64, 0x65, 0x18, 0x5d, 0x8e, 0x95, 0x2f, 0x6a, 0xa4, 0x29, 0x5d, 0x78, + 0xc6, 0x96, 0x44, 0xb3, 0x6a, 0x35, 0x05, 0x96, 0x96, 0xde, 0x4e, 0x3d, + 0x76, 0x99, 0x4a, 0xe6, 0x95, 0x9f, 0x14, 0xb4, 0xc4, 0x32, 0xf6, 0xa1, + 0x8b, 0xc2, 0xcd, 0xc9, 0x13, 0x9a, 0x95, 0x4b, 0xd7, 0x63, 0x5b, 0x5a, + 0x95, 0x9c, 0xee, 0xea, 0xba, 0xd2, 0xf1, 0x97, 0x94, 0x51, 0x6d, 0xf4, + 0x6f, 0x57, 0x65, 0x8b, 0x95, 0x76, 0xec, 0x2e, 0x2c, 0x45, 0x59, 0xa8, + 0xbc, 0xa5, 0x18, 0xa3, 0xd4, 0x08, 0x5b, 0x1d, 0x3a, 0xc1, 0x46, 0xc8, + 0x4c, 0x96, 0x02, 0x81, 0x78, 0x00, 0x07, 0x94, 0x5d, 0x1f, 0xad, 0x49, + 0xad, 0x06, 0xdd, 0xdc, 0x5e, 0xb7, 0xc0, 0xf5, 0x1a, 0x90, 0xc1, 0x4f, + 0x6c, 0xac, 0xfe, 0x66, 0x1d, 0x08, 0x64, 0x73, 0x42, 0x4e, 0xef, 0x25, + 0xc8, 0x3a, 0x25, 0xca, 0xd2, 0xb1, 0xbf, 0x7f, 0xad, 0x54, 0xb6, 0xa7, + 0xbf, 0xff, 0x4a, 0xef, 0xfe, 0xff, 0x7f, 0x7f, 0x5f, 0xff, 0x5b, 0x6b, + 0xfd, 0xfd, 0xf9, 0x15, 0x91, 0x4c, 0x47, 0x35, 0x03, 0x20, 0x51, 0x35, + 0x33, 0x29, 0x59, 0x18, 0x33, 0xcd, 0x30, 0x0a, 0x40, 0x25, 0x30, 0x07, + 0x02, 0xc4, 0x30, 0x5a, 0x41, 0x05, 0x30, 0x27, 0x01, 0x9e, 0x30, 0x2a, + 0xc2, 0x63, 0x30, 0xc7, 0x8d, 0xb4, 0x35, 0x05, 0x94, 0x01, 0x31, 0xe4, + 0x04, 0x31, 0x3f, 0xcb, 0x21, 0xb0, 0x32, 0x1e, 0xc2, 0x8d, 0x30, 0x9d, + 0x82, 0xe7, 0x30, 0xc9, 0x41, 0x84, 0x30, 0x10, 0xc1, 0x13, 0x30, 0x27, + 0xc0, 0x94, 0x30, 0x25, 0x81, 0x5a, 0x32, 0x49, 0x88, 0xce, 0x72, 0x03, + 0x34, 0x0b, 0x0c, 0xec, 0x01, 0x05, 0x68, 0x81, 0x13, 0xb1, 0xee, 0xe9, + 0x86, 0xfd, 0xa0, 0x70, 0x71, 0x90, 0xdb, 0x27, 0xcd, 0x19, 0x98, 0x44, + 0x02, 0x84, 0x94, 0x53, 0x30, 0x18, 0x81, 0xe0, 0x1e, 0x29, 0xc9, 0x43, + 0x85, 0x6c, 0x04, 0x0c, 0x0f, 0xb0, 0x3c, 0x2d, 0x5c, 0x42, 0x80, 0x07, + 0x4e, 0x5d, 0x21, 0x4f, 0xf1, 0xa0, 0x1b, 0x65, 0x77, 0x1b, 0x8b, 0x57, + 0xf5, 0x37, 0xce, 0x1d, 0x9f, 0x91, 0x4b, 0x56, 0x0d, 0xc6, 0x6b, 0xef, + 0x73, 0xed, 0x79, 0x9e, 0xcf, 0x34, 0x3f, 0x0d, 0x05, 0xf2, 0xa2, 0xbc, + 0x87, 0x09, 0xe9, 0xb1, 0xe5, 0x97, 0xa1, 0xa6, 0x1d, 0x00, 0x85, 0xd4, + 0x26, 0x1c, 0x9c, 0x2d, 0x8a, 0xc6, 0x11, 0x31, 0x47, 0xd7, 0x9d, 0xf2, + 0x49, 0x74, 0xf1, 0xb5, 0x64, 0x33, 0x38, 0x1c, 0x87, 0x22, 0x5e, 0xe4, + 0x28, 0xd1, 0xf4, 0x2b, 0x1f, 0xff, 0xfb, 0xd4, 0x60, 0x5f, 0x8f, 0xc8, + 0x3e, 0x70, 0x41, 0x83, 0xfc, 0x63, 0x70, 0x4c, 0xee, 0x08, 0x51, 0x4c, + 0x22, 0x6e, 0x25, 0x85, 0xc1, 0x04, 0x0f, 0xf5, 0xed, 0xc1, 0x15, 0x96, + 0xa2, 0x8c, 0xd0, 0x8d, 0x34, 0xbb, 0x47, 0x65, 0xc8, 0xd9, 0x5e, 0xa9, + 0xad, 0xed, 0x62, 0x8d, 0xe3, 0x3b, 0x56, 0x12, 0x21, 0x6b, 0xcb, 0x1c, + 0x72, 0x2c, 0xa2, 0x5a, 0x51, 0x86, 0x10, 0xa6, 0xf4, 0x66, 0x59, 0x4b, + 0x0b, 0xe7, 0xbe, 0xef, 0xaf, 0x86, 0xef, 0xd6, 0xad, 0xb2, 0xc4, 0x2c, + 0xaf, 0x75, 0x9e, 0x8a, 0xd4, 0x87, 0xf7, 0x16, 0xb3, 0xd0, 0xa1, 0x76, + 0xd3, 0x9b, 0xa3, 0x33, 0x5b, 0x7b, 0xa5, 0x97, 0x13, 0x5d, 0xd3, 0xba, + 0xc0, 0xe3, 0x74, 0x70, 0x4b, 0x64, 0x20, 0x02, 0xe4, 0x1e, 0xdd, 0x99, + 0x54, 0xdd, 0x14, 0xd1, 0x52, 0x6d, 0x25, 0x91, 0x4e, 0x45, 0x9f, 0x3d, + 0x02, 0x5e, 0x24, 0xc9, 0xbf, 0xc5, 0xfe, 0x44, 0x6e, 0xaa, 0x7a, 0x9b, + 0xed, 0x46, 0xe6, 0xd6, 0xff, 0x7f, 0xed, 0x4b, 0x7f, 0xef, 0x7f, 0xa2, + 0x5b, 0xdf, 0xfb, 0x25, 0xf7, 0x5e, 0xbf, 0xe8, 0x8f, 0xb5, 0x6d, 0xe4, + 0xef, 0x4a, 0xa1, 0x6e, 0xaa, 0xae, 0xa6, 0x28, 0xa0, 0x6a, 0x43, 0xa8, + 0x30, 0x6c, 0x42, 0x05, 0x20, 0xb4, 0x63, 0xb8, 0x5a, 0x90, 0x31, 0x81, + 0x24, 0x02, 0x89, 0x80, 0xe6, 0x15, 0xc1, 0x85, 0x1a, 0x03, 0xa9, 0x81, + 0xb2, 0x09, 0xd0, 0xa8, 0x05, 0xe6, 0x06, 0xd1, 0xc6, 0x47, 0x17, 0xf9, + 0x04, 0x06, 0x08, 0x5a, 0xbb, 0x46, 0xee, 0x8f, 0xfe, 0xa6, 0x24, 0xd0, + 0xa9, 0xa6, 0x25, 0x58, 0x4c, 0xc6, 0x0f, 0xb0, 0x31, 0xa6, 0x08, 0xf8, + 0x3b, 0x46, 0x03, 0x00, 0x09, 0xa6, 0x08, 0x88, 0x0f, 0x42, 0x4b, 0xc1, + 0x8c, 0xeb, 0xe9, 0x8b, 0x40, 0xb9, 0x93, 0x53, 0x11, 0x8f, 0xa2, 0x11, + 0x8d, 0x4a, 0x49, 0x9e, 0x81, 0x81, 0x8c, 0x93, 0xf9, 0x91, 0x86, 0xe1, + 0x80, 0xb3, 0xb9, 0xc3, 0xe3, 0x11, 0x88, 0x62, 0x99, 0x87, 0xa1, 0x09, + 0x81, 0xc0, 0xa1, 0x8b, 0x80, 0x1a, 0xd0, 0x30, 0xa0, 0x0c, 0x45, 0x51, + 0xa1, 0x10, 0x68, 0x00, 0x07, 0x08, 0x81, 0x80, 0x19, 0x82, 0xa1, 0x03, + 0x9c, 0x28, 0x10, 0x16, 0x70, 0x08, 0x01, 0x04, 0x06, 0x8c, 0x44, 0xbf, + 0x4a, 0xa2, 0xa2, 0x04, 0x00, 0x1b, 0xe5, 0x2d, 0x4d, 0x28, 0x25, 0x8f, + 0xb8, 0xce, 0xcb, 0x8b, 0x71, 0x96, 0xb0, 0xa7, 0x1d, 0xf6, 0xa0, 0x8e, + 0xba, 0x25, 0xd1, 0x50, 0x48, 0x89, 0xb9, 0x84, 0x9e, 0x5e, 0x2d, 0x60, + 0x58, 0xde, 0x43, 0x9b, 0x9c, 0xa0, 0x3d, 0x46, 0x33, 0x1a, 0x45, 0xda, + 0x12, 0x9d, 0xc1, 0x12, 0x94, 0xca, 0xad, 0xc9, 0xea, 0xbd, 0x58, 0x93, + 0x70, 0x8f, 0x1e, 0x33, 0xda, 0x30, 0xb0, 0xcd, 0x2a, 0x21, 0x46, 0xa1, + 0xac, 0x55, 0xcd, 0xe3, 0x59, 0xdc, 0x27, 0x8c, 0xba, 0xda, 0xaa, 0x45, + 0xb9, 0x23, 0x3d, 0xcd, 0xd8, 0xaa, 0xc5, 0x68, 0x7a, 0x92, 0xcf, 0x95, + 0x0e, 0x54, 0x7f, 0x65, 0x97, 0x76, 0x95, 0xf4, 0xd1, 0x9e, 0xc3, 0x78, + 0xda, 0xe7, 0x16, 0x5f, 0x77, 0x2a, 0xc7, 0xbb, 0x24, 0x69, 0xe0, 0x3e, + 0x74, 0xee, 0x49, 0xa1, 0xb5, 0x32, 0x3c, 0x8d, 0x0a, 0x48, 0x91, 0x2e, + 0xee, 0x79, 0x67, 0xbb, 0x06, 0xa1, 0xc3, 0x92, 0x05, 0xa3, 0xda, 0x9a, + 0x96, 0x33, 0xed, 0xcf, 0xda, 0xde, 0x3c, 0x7d, 0x1e, 0xad, 0xb1, 0xdd, + 0x9f, 0x90, 0xe0, 0xca, 0xac, 0x45, 0xb6, 0xcf, 0xa5, 0x5a, 0x9c, 0x04, + 0xdc, 0x20, 0x00, 0x64, 0x4b, 0xfc, 0x7d, 0x7f, 0xfb, 0xff, 0xff, 0xff, + 0xf8, 0xff, 0x2e, 0x7a, 0x43, 0x42, 0x2b, 0x14, 0x2b, 0xa7, 0x1d, 0x4a, + 0x65, 0x46, 0xf0, 0x8c, 0x66, 0x10, 0x52, 0x84, 0x41, 0x9d, 0x80, 0x60, + 0xf3, 0xc1, 0x50, 0x56, 0x60, 0x28, 0x17, 0x00, 0xb5, 0xea, 0xd9, 0x64, + 0xfc, 0xae, 0x75, 0xcc, 0x5c, 0x3c, 0xc3, 0x78, 0xd7, 0x7f, 0xff, 0xd0, + 0xa7, 0xc7, 0xb1, 0xce, 0x59, 0xd3, 0x46, 0x0b, 0xaa, 0x08, 0x40, 0x03, + 0x00, 0x54, 0x02, 0x23, 0x01, 0x0c, 0x0d, 0x63, 0x07, 0x14, 0x08, 0x23, + 0x01, 0x9c, 0x12, 0xb3, 0x03, 0x48, 0x20, 0x63, 0x0b, 0xb4, 0x32, 0xd3, + 0x11, 0x94, 0x4b, 0xe3, 0x08, 0xec, 0xef, 0x73, 0xb0, 0x27, 0x2b, 0x03, + 0x15, 0xf0, 0x6f, 0xc3, 0x0d, 0xd8, 0x05, 0x83, 0x04, 0x44, 0x08, 0x33, + 0x02, 0x08, 0x07, 0x73, 0x01, 0x94, 0x01, 0x13, 0x00, 0xd0, 0x14, 0x52, + 0x00, 0x79, 0xa0, 0x11, 0x06, 0x71, 0x11, 0x99, 0x5f, 0x88, 0x6a, 0xa0, + 0x41, 0x60, 0x26, 0x61, 0xc0, 0x20, 0x01, 0x7e, 0x50, 0x88, 0x32, 0x16, + 0x84, 0xfe, 0xce, 0x61, 0x00, 0x1c, 0x68, 0x3c, 0x61, 0xc0, 0x21, 0x6b, + 0xd5, 0x88, 0x04, 0x37, 0x65, 0xa2, 0x30, 0x0c, 0xa8, 0xc1, 0xa2, 0x17, + 0x09, 0x60, 0x5b, 0xd5, 0xcc, 0xa7, 0x89, 0x42, 0x45, 0x02, 0x17, 0x8a, + 0x29, 0x12, 0x65, 0xcf, 0x8a, 0x7c, 0x40, 0xec, 0xdf, 0x26, 0x11, 0x5a, + 0x6a, 0x32, 0xe1, 0x34, 0xf8, 0xe4, 0x2a, 0x3d, 0x7f, 0x74, 0xc7, 0xb4, + 0x33, 0xb8, 0x75, 0xaf, 0x27, 0x61, 0xb5, 0xc2, 0x8d, 0xe7, 0x8f, 0x7c, + 0x49, 0xa8, 0xee, 0xd5, 0x4b, 0x19, 0x66, 0x8e, 0xe2, 0xcb, 0x19, 0xfc, + 0x9f, 0x57, 0xcc, 0xde, 0x95, 0x99, 0x9e, 0x69, 0x24, 0x8a, 0xfe, 0xcf, + 0x60, 0x4f, 0x58, 0xd6, 0x85, 0xe1, 0xb2, 0xff, 0xf6, 0xf2, 0x16, 0xfc, + 0x3a, 0xd2, 0x96, 0xc5, 0x64, 0xad, 0xf7, 0x3d, 0xab, 0xa8, 0xae, 0xdc, + 0x9f, 0x5e, 0xd7, 0xc6, 0x2d, 0xff, 0xfb, 0xd4, 0x60, 0x6a, 0x0c, 0xc8, + 0x39, 0x70, 0x42, 0x13, 0xfc, 0x7b, 0x70, 0x39, 0xc5, 0x48, 0xc3, 0x28, + 0x02, 0x4d, 0x1c, 0xad, 0xbd, 0x10, 0x4f, 0xf5, 0xad, 0xc9, 0xcf, 0x37, + 0xa0, 0x89, 0x81, 0x95, 0xb8, 0xfe, 0xe4, 0x92, 0x1d, 0x9f, 0x44, 0x99, + 0xec, 0x7b, 0x43, 0x87, 0x5c, 0x56, 0x05, 0xed, 0x1b, 0x14, 0x92, 0x24, + 0x08, 0xb7, 0xce, 0xb3, 0x8f, 0x7b, 0xdb, 0xd6, 0x49, 0xf3, 0x5c, 0x41, + 0x81, 0x9c, 0x44, 0xd4, 0xdb, 0xf3, 0x3d, 0x92, 0xda, 0x54, 0xc7, 0x93, + 0x1b, 0x9e, 0x6b, 0x3e, 0x65, 0x91, 0xe6, 0xe1, 0x00, 0xf5, 0x88, 0x80, + 0x1a, 0x3b, 0x7f, 0xff, 0x57, 0xf6, 0x72, 0x2b, 0x84, 0x76, 0x0f, 0x3d, + 0xd9, 0x83, 0x18, 0xa5, 0x06, 0xa2, 0x98, 0x80, 0x89, 0x57, 0xba, 0x03, + 0x8a, 0x01, 0xa5, 0xd2, 0x30, 0xe8, 0x6d, 0xc3, 0x52, 0x50, 0x51, 0x4e, + 0x4a, 0x59, 0x4a, 0x96, 0x9d, 0x96, 0xed, 0x47, 0x43, 0xb6, 0xb7, 0xff, + 0xff, 0x4a, 0xd3, 0x42, 0x7b, 0xd0, 0x13, 0x20, 0x05, 0x00, 0x03, 0x82, + 0x00, 0x40, 0x30, 0x4d, 0xc0, 0x1b, 0x30, 0x11, 0x00, 0x30, 0x30, 0x20, + 0xc0, 0x53, 0x30, 0x47, 0x00, 0x66, 0x31, 0x29, 0x80, 0x4e, 0x30, 0xe2, + 0x85, 0x96, 0x3b, 0x53, 0x8e, 0x3b, 0x31, 0x87, 0xc4, 0xbd, 0x30, 0x09, + 0x41, 0x0b, 0x06, 0x01, 0x24, 0x0e, 0x02, 0xd4, 0x42, 0x01, 0x01, 0x40, + 0x14, 0x26, 0x0f, 0x81, 0x00, 0x52, 0x60, 0xc0, 0xc0, 0x28, 0xc4, 0x10, + 0x24, 0x79, 0x2c, 0x43, 0x72, 0x60, 0x10, 0x60, 0x47, 0x30, 0x60, 0x04, + 0x30, 0x58, 0x17, 0x38, 0x20, 0x22, 0x0c, 0x0f, 0x01, 0x00, 0x12, 0x08, + 0x18, 0x94, 0xd8, 0x60, 0x19, 0x15, 0x4d, 0xca, 0x50, 0x80, 0x12, 0x86, + 0x4b, 0x8a, 0x08, 0xdc, 0x56, 0x74, 0x4c, 0x00, 0x53, 0x55, 0x88, 0x42, + 0xe9, 0x9e, 0xd8, 0x25, 0xa1, 0x61, 0x3b, 0x66, 0x96, 0xb4, 0x13, 0x18, + 0x70, 0xb0, 0x8d, 0xfc, 0x46, 0x88, 0x62, 0x14, 0x8d, 0x05, 0x72, 0xf0, + 0xc1, 0xa6, 0x4c, 0x31, 0x3c, 0x64, 0x46, 0x41, 0x25, 0x98, 0x9b, 0x17, + 0x0c, 0x09, 0x33, 0xc8, 0x97, 0xce, 0x28, 0x7c, 0xb9, 0xa2, 0xe9, 0xbb, + 0x3a, 0x0e, 0x92, 0x36, 0x63, 0x6d, 0x06, 0x4d, 0x6d, 0xb3, 0xa9, 0x68, + 0x35, 0x04, 0x59, 0xa9, 0x29, 0x25, 0xb2, 0x6a, 0xa2, 0xa3, 0x17, 0x5d, + 0x25, 0x25, 0x7a, 0x1a, 0xd2, 0xb9, 0xea, 0x53, 0x46, 0x49, 0x1b, 0xb2, + 0xd0, 0x53, 0x54, 0xef, 0x64, 0x52, 0x52, 0xd4, 0xa4, 0x5a, 0xcc, 0xce, + 0xbb, 0xb6, 0xcb, 0x53, 0xa4, 0xd4, 0x68, 0x29, 0x03, 0x65, 0x66, 0x8a, + 0x5a, 0x91, 0x66, 0x4d, 0x02, 0xf2, 0x69, 0x00, 0xa9, 0x00, 0x3b, 0xb1, + 0x69, 0xdc, 0xf3, 0xcf, 0x79, 0xe1, 0xbc, 0x7f, 0x58, 0xec, 0xad, 0x10, + 0xe3, 0xd0, 0xdf, 0x22, 0x23, 0x15, 0x3f, 0x75, 0x23, 0xc8, 0xe4, 0xa5, + 0x9f, 0x3f, 0xc6, 0x3a, 0x15, 0x88, 0x44, 0x4c, 0x60, 0x89, 0x5c, 0x6c, + 0xd4, 0x39, 0x8c, 0xe3, 0x44, 0x5c, 0xc8, 0x57, 0x30, 0x93, 0xa3, 0x0c, + 0x14, 0x67, 0x1a, 0x85, 0x3b, 0x31, 0x15, 0xd9, 0x64, 0x2c, 0x77, 0x6d, + 0x68, 0xab, 0x36, 0xca, 0xbd, 0x35, 0x62, 0xec, 0x49, 0x2c, 0xb2, 0x9c, + 0xb2, 0xa1, 0xa5, 0xa6, 0xe7, 0x7c, 0xb2, 0x64, 0xb5, 0x17, 0x47, 0x64, + 0x6e, 0xed, 0x32, 0xb1, 0x9c, 0xe9, 0x18, 0x35, 0x9d, 0x8c, 0x79, 0x44, + 0xc5, 0x90, 0x40, 0x24, 0x2c, 0x1e, 0x51, 0x41, 0x31, 0x82, 0x43, 0x05, + 0xc0, 0xa8, 0x1f, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, + 0x32, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x06, 0x90, 0x02, 0x80, 0x0a, 0x0c, 0x01, 0x30, 0x08, 0x42, 0x01, + 0xde, 0x30, 0x0a, 0xc0, 0x00, 0x30, 0x17, 0x80, 0x31, 0x30, 0x2b, 0x41, + 0xce, 0x30, 0x55, 0xc3, 0xab, 0x30, 0xcf, 0xc3, 0x6c, 0x3b, 0x8d, 0xd0, + 0x7d, 0x31, 0x2f, 0x03, 0xa8, 0x30, 0x8c, 0x41, 0xa0, 0x30, 0x26, 0x00, + 0xcf, 0x30, 0x32, 0x40, 0x2e, 0x30, 0x11, 0x80, 0x2f, 0x30, 0x0e, 0xc0, + 0xb2, 0x31, 0x00, 0x0c, 0xc8, 0xe0, 0xf0, 0x52, 0x50, 0xc2, 0xf0, 0x50, + 0x12, 0x75, 0x55, 0xc9, 0x80, 0xa2, 0x83, 0x32, 0x68, 0x29, 0x89, 0x21, + 0x87, 0x92, 0x43, 0x80, 0x83, 0x08, 0x18, 0x0a, 0x07, 0x17, 0x45, 0xe4, + 0x08, 0x05, 0xc8, 0x48, 0x40, 0xb4, 0x82, 0x40, 0x28, 0x19, 0xd0, 0x8b, + 0xa1, 0xc5, 0x93, 0x35, 0x52, 0x80, 0x6f, 0xc8, 0xf0, 0x73, 0xb0, 0x87, + 0xf3, 0x76, 0x29, 0xe2, 0xf5, 0x21, 0xea, 0x78, 0xf4, 0x02, 0xdd, 0xf0, + 0xa5, 0x97, 0x43, 0x2f, 0x90, 0xa4, 0x4f, 0x22, 0x85, 0xdc, 0x35, 0x26, + 0xbb, 0x93, 0x4c, 0x77, 0x9c, 0xa5, 0x90, 0x5d, 0x04, 0x44, 0x33, 0x44, + 0x97, 0x40, 0xe9, 0x2c, 0xc8, 0xe4, 0xdb, 0xa9, 0x8e, 0xdb, 0x2c, 0xb8, + 0x7b, 0x8e, 0x47, 0x53, 0x2c, 0x64, 0x56, 0xa6, 0xcf, 0xdb, 0xbd, 0xd1, + 0x73, 0xb7, 0xa6, 0x33, 0xe2, 0xbe, 0x8e, 0x71, 0x6e, 0x7d, 0xce, 0xfe, + 0x2e, 0xa1, 0x97, 0x54, 0xed, 0xdd, 0xf5, 0x3f, 0x31, 0x1c, 0xdf, 0x4f, + 0x6f, 0xf5, 0x1b, 0xb8, 0x7c, 0xf6, 0xc7, 0x57, 0xde, 0xcd, 0xb5, 0x6d, + 0xbb, 0x52, 0x69, 0x87, 0xa5, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xc6, + 0xfe, 0x6e, 0x44, 0x13, 0xfc, 0x5b, 0x72, 0x61, 0x2e, 0x08, 0x31, 0x3c, + 0x25, 0x6e, 0x21, 0x45, 0xc1, 0x06, 0x0f, 0xf5, 0x8d, 0xc1, 0x92, 0xb7, + 0xa1, 0xcc, 0xd1, 0x1d, 0xb9, 0xbb, 0x57, 0xcc, 0x20, 0x30, 0x05, 0x73, + 0x65, 0x2f, 0x9a, 0x53, 0xeb, 0x76, 0xf3, 0xda, 0x86, 0xe3, 0x09, 0x10, + 0x84, 0x8b, 0xb1, 0x17, 0x3c, 0xa2, 0x94, 0x67, 0x3c, 0xc9, 0x97, 0x6a, + 0xd1, 0x6d, 0xb1, 0xa7, 0x5d, 0x1c, 0x8e, 0xf6, 0x49, 0x48, 0xcc, 0xe3, + 0x68, 0x88, 0xd9, 0xac, 0x97, 0x2f, 0x64, 0x77, 0x74, 0xf7, 0xbb, 0x66, + 0x45, 0x6a, 0xa7, 0xa3, 0x3d, 0x3f, 0xd9, 0x8e, 0xda, 0xaf, 0xf7, 0xd5, + 0x9c, 0x86, 0xea, 0x44, 0xa1, 0xd3, 0x6b, 0xb3, 0xca, 0x65, 0x9e, 0xa6, + 0x62, 0xb5, 0x08, 0x28, 0x65, 0x1a, 0x1d, 0x38, 0x90, 0x88, 0x44, 0x4d, + 0x42, 0x9c, 0x3a, 0x1d, 0x10, 0x30, 0xb1, 0x86, 0xb0, 0x0a, 0x60, 0x16, + 0x00, 0x0c, 0x60, 0x04, 0x82, 0x32, 0x60, 0xcb, 0x80, 0xc8, 0x60, 0x19, + 0x81, 0x1a, 0x60, 0x23, 0x02, 0x34, 0x60, 0x88, 0x88, 0x32, 0x66, 0x68, + 0x8c, 0x3c, 0x61, 0x04, 0x24, 0x52, 0x7b, 0x65, 0x79, 0xac, 0x63, 0x7f, + 0x80, 0x9e, 0x63, 0x32, 0x05, 0xc6, 0x61, 0x0c, 0x82, 0x94, 0x60, 0xee, + 0x01, 0x6a, 0x60, 0x63, 0x80, 0xc8, 0x20, 0x02, 0xcc, 0xc0, 0x40, 0x08, + 0xc2, 0x45, 0xfc, 0x0a, 0x01, 0x98, 0x78, 0xea, 0x99, 0x7e, 0x15, 0x98, + 0x10, 0x0c, 0x89, 0x03, 0x26, 0x06, 0x06, 0x66, 0xc4, 0x01, 0x66, 0x0a, + 0xd1, 0xc6, 0xff, 0xa3, 0xa6, 0x14, 0x83, 0x0f, 0x30, 0x90, 0xe6, 0x62, + 0xe8, 0x03, 0x3a, 0x02, 0x0e, 0x26, 0x44, 0x00, 0xd5, 0x39, 0x81, 0x00, + 0xdb, 0x78, 0x48, 0x04, 0x4e, 0x83, 0x00, 0x60, 0x80, 0x2c, 0x94, 0x1b, + 0x22, 0x0d, 0x5e, 0x95, 0x19, 0x78, 0xd4, 0xfd, 0x3b, 0x6d, 0x71, 0x3a, + 0x63, 0xad, 0x72, 0x55, 0x0e, 0xd9, 0xaa, 0xbf, 0x99, 0x4c, 0x5d, 0xe2, + 0xb7, 0x1c, 0x6f, 0x45, 0x4a, 0xdb, 0x0f, 0x89, 0x6f, 0xb3, 0xca, 0x87, + 0xe9, 0x2c, 0xba, 0x5d, 0x84, 0xe9, 0x43, 0x3d, 0xa3, 0xf9, 0x73, 0x8e, + 0x98, 0x2a, 0x9a, 0xd4, 0x9f, 0xed, 0x6a, 0xd8, 0x72, 0xae, 0xab, 0xba, + 0x76, 0x57, 0x20, 0xdd, 0xab, 0x5e, 0x90, 0x29, 0xf8, 0x13, 0xa2, 0xa3, + 0xf4, 0x7b, 0xbd, 0xea, 0x5f, 0x63, 0xd7, 0xf7, 0x6d, 0x47, 0xb6, 0x12, + 0x9f, 0xdb, 0xd3, 0x73, 0x7b, 0x7f, 0x7e, 0x06, 0xdf, 0x6f, 0x20, 0x6b, + 0x21, 0x5e, 0xbb, 0x9f, 0x6a, 0x0b, 0xd5, 0xed, 0xb5, 0xd3, 0x39, 0x88, + 0xae, 0xcb, 0xde, 0xe6, 0x51, 0xdf, 0xee, 0xf7, 0xdf, 0xa3, 0x5d, 0x1e, + 0xc9, 0xf5, 0xaf, 0x2f, 0x65, 0xa8, 0xbf, 0x57, 0x42, 0x7b, 0x1d, 0xa1, + 0x66, 0x87, 0x0a, 0x55, 0xd3, 0xee, 0xb8, 0x98, 0x7c, 0x7a, 0xbc, 0x77, + 0x01, 0xdd, 0x5b, 0x40, 0x0a, 0x39, 0xb2, 0x2e, 0xfa, 0xd5, 0x4d, 0x6e, + 0x87, 0xff, 0x66, 0xfc, 0xdf, 0xfd, 0x9d, 0x49, 0x64, 0x0e, 0x77, 0x53, + 0x38, 0x90, 0x6e, 0x8a, 0xd2, 0xa5, 0x9c, 0x28, 0x38, 0x79, 0x71, 0xa8, + 0xe1, 0x84, 0xc4, 0x61, 0x79, 0x31, 0xd6, 0x30, 0x91, 0xa6, 0x8f, 0x09, + 0xcf, 0x38, 0x99, 0x35, 0x72, 0xae, 0xb7, 0x59, 0xea, 0x93, 0x11, 0x0d, + 0xb2, 0x3b, 0xce, 0x76, 0x56, 0x98, 0x8a, 0x94, 0x3a, 0xa8, 0x6e, 0xb3, + 0x9b, 0x5b, 0xa3, 0x2f, 0x36, 0xf9, 0xec, 0xd5, 0x5a, 0x6f, 0xff, 0xff, + 0xff, 0xad, 0xee, 0xe8, 0xb6, 0xd5, 0x59, 0x14, 0xeb, 0x38, 0xeb, 0x9e, + 0x4c, 0xed, 0x9c, 0xa4, 0x92, 0x62, 0x0a, 0x6a, 0x29, 0x99, 0x71, 0xc9, + 0xc1, 0x71, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x02, 0x00, 0x02, 0x60, 0x04, 0x01, 0xea, 0x60, 0x97, 0x80, 0x46, + 0x60, 0x3c, 0x00, 0xb8, 0x60, 0x76, 0x80, 0xce, 0x60, 0xd9, 0x03, 0x42, + 0x65, 0x68, 0x05, 0xdc, 0x61, 0xe7, 0x20, 0x9c, 0x6c, 0xd8, 0x77, 0xce, + 0x61, 0xf3, 0x8b, 0x6a, 0x62, 0x88, 0x81, 0x80, 0x61, 0x01, 0x00, 0x6a, + 0x60, 0x96, 0x81, 0x0c, 0x60, 0x3d, 0x00, 0x36, 0x60, 0x09, 0x81, 0x7a, + 0x14, 0x02, 0x4c, 0x56, 0x00, 0xc0, 0xc6, 0xf9, 0x8d, 0xc1, 0x00, 0x93, + 0xe6, 0x0c, 0x08, 0xd9, 0x29, 0x81, 0x02, 0xd0, 0x3a, 0xed, 0x31, 0xc4, + 0x8c, 0x3f, 0x5c, 0x09, 0x08, 0x2a, 0xc5, 0x00, 0xb1, 0x50, 0x94, 0xc1, + 0xd0, 0x51, 0xe3, 0x1a, 0x09, 0xe4, 0xc5, 0xe7, 0x72, 0x04, 0x21, 0x04, + 0xfb, 0xcc, 0xcd, 0x06, 0x41, 0x66, 0xe0, 0x55, 0x07, 0xc8, 0x81, 0x56, + 0x8e, 0xf3, 0x37, 0x56, 0x4f, 0xd6, 0xa1, 0x31, 0x1e, 0xad, 0x1b, 0xab, + 0x4d, 0x69, 0xb9, 0x2f, 0xc5, 0x50, 0xbf, 0x4b, 0x41, 0x1e, 0x96, 0xa6, + 0x37, 0x2a, 0xa4, 0x4a, 0xa1, 0xd2, 0xcb, 0x25, 0x0b, 0x19, 0xde, 0xf1, + 0x97, 0x7c, 0xf6, 0x21, 0xa1, 0xd6, 0x37, 0x9d, 0x4d, 0x1c, 0xd9, 0x7b, + 0xcb, 0xab, 0xea, 0xed, 0x15, 0x57, 0x30, 0xc6, 0x95, 0x10, 0x8e, 0xa1, + 0xad, 0xec, 0xf5, 0xbe, 0xb5, 0x71, 0x86, 0xef, 0x95, 0x6d, 0xb5, 0x9d, + 0x7a, 0xe5, 0xbb, 0xac, 0x76, 0xbf, 0x59, 0xa5, 0x18, 0x29, 0x9b, 0x6a, + 0xed, 0xb3, 0xad, 0xd9, 0xda, 0xb9, 0x8b, 0xed, 0xee, 0x98, 0x39, 0xf6, + 0xea, 0xe7, 0xc5, 0x76, 0x2e, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xc7, + 0xfe, 0x70, 0x42, 0x03, 0xfd, 0x63, 0x70, 0x38, 0xc5, 0xd8, 0xd3, 0x28, + 0x02, 0x4d, 0x1d, 0x29, 0xc1, 0x0c, 0x4f, 0xf1, 0x0d, 0xc1, 0x8b, 0x34, + 0xe2, 0x0c, 0xd2, 0x95, 0xb9, 0x9b, 0x9a, 0xb3, 0x15, 0x66, 0x99, 0x47, + 0xef, 0x0e, 0x65, 0x22, 0x8f, 0x92, 0x5d, 0xb8, 0xe7, 0x32, 0x5a, 0x51, + 0x94, 0x99, 0xaf, 0xe3, 0xab, 0x6f, 0x90, 0x30, 0xba, 0x15, 0xab, 0xa2, + 0x7b, 0x6c, 0xc1, 0x4c, 0xe8, 0x09, 0xac, 0x48, 0x80, 0x1a, 0xff, 0xff, + 0xbd, 0xda, 0xdd, 0x0e, 0x08, 0x82, 0x8a, 0xdb, 0x29, 0x01, 0x14, 0x96, + 0xbd, 0x28, 0x38, 0x5a, 0xa1, 0x4a, 0x10, 0xd5, 0x2c, 0x97, 0x10, 0x16, + 0xda, 0x81, 0x75, 0x04, 0x56, 0x35, 0xb7, 0xb0, 0x5c, 0xd0, 0x8c, 0xe0, + 0x40, 0xef, 0x6e, 0x51, 0xb4, 0x5d, 0xa3, 0xff, 0xff, 0xe9, 0xee, 0x7a, + 0x10, 0xa0, 0xd0, 0x78, 0x02, 0xe3, 0x00, 0x4c, 0x0f, 0x73, 0x00, 0xc4, + 0x02, 0xa3, 0x01, 0x1c, 0x03, 0xb3, 0x01, 0xb0, 0x02, 0x83, 0x01, 0xfc, + 0x32, 0xa3, 0x17, 0x18, 0x46, 0x73, 0x10, 0x4c, 0x93, 0x53, 0xd5, 0xbe, + 0x20, 0x23, 0x18, 0x90, 0x69, 0x23, 0x07, 0xf8, 0x15, 0x63, 0x03, 0xec, + 0x08, 0xb3, 0x01, 0x30, 0x00, 0x93, 0x00, 0x1c, 0x01, 0x93, 0x00, 0xe0, + 0x04, 0xa0, 0x31, 0xb8, 0xc1, 0xce, 0x80, 0x80, 0x99, 0x85, 0x23, 0x06, + 0x57, 0x05, 0x0c, 0x07, 0x61, 0x61, 0x64, 0xb0, 0x67, 0x50, 0xc3, 0xf5, + 0xb3, 0xf6, 0xad, 0x8c, 0x4a, 0x13, 0x04, 0x81, 0x4c, 0x34, 0x05, 0x07, + 0x13, 0x21, 0xf1, 0xe0, 0x8c, 0xb9, 0x9a, 0x46, 0xc4, 0x20, 0x79, 0x85, + 0x51, 0x87, 0x56, 0x54, 0x50, 0xaa, 0x11, 0x4f, 0x18, 0x2d, 0x74, 0x21, + 0xfb, 0xad, 0x0c, 0x33, 0x16, 0x60, 0xaa, 0xb2, 0xd5, 0xcd, 0x66, 0x57, + 0xa7, 0x45, 0xd7, 0x72, 0xa1, 0x14, 0xd2, 0x19, 0x26, 0xa8, 0x2e, 0x2e, + 0x15, 0x53, 0x56, 0x58, 0x5d, 0xc5, 0x31, 0x41, 0xe3, 0x7e, 0x40, 0x70, + 0x80, 0xd6, 0x20, 0x58, 0x86, 0x23, 0x3a, 0x9a, 0x9c, 0xcc, 0x98, 0xf4, + 0x59, 0x23, 0xc6, 0x54, 0x7d, 0xca, 0x9f, 0xb5, 0x5b, 0x93, 0x53, 0x10, + 0xfa, 0xc4, 0x93, 0x4a, 0xab, 0x0e, 0xc8, 0x41, 0x6f, 0x22, 0x22, 0x3e, + 0x36, 0x5a, 0x99, 0xd3, 0x53, 0xaa, 0x20, 0xc4, 0xa8, 0xd9, 0x5e, 0xc6, + 0x4f, 0x7b, 0x5a, 0xac, 0x77, 0x70, 0x33, 0x71, 0xae, 0xf1, 0x08, 0xf1, + 0x51, 0x26, 0xa5, 0xa2, 0x44, 0xf0, 0xa8, 0xc5, 0xbd, 0x0e, 0x66, 0x48, + 0x24, 0x5a, 0xce, 0x16, 0x1a, 0x48, 0x9c, 0x2b, 0x35, 0x8d, 0x80, 0x1a, + 0x66, 0xca, 0x65, 0xa9, 0xb5, 0x5a, 0xfa, 0x5a, 0xba, 0x53, 0xbe, 0xbd, + 0xd5, 0x64, 0x7c, 0x5a, 0xe1, 0x21, 0x53, 0x08, 0x1c, 0x44, 0xae, 0xc4, + 0x14, 0xae, 0x73, 0xa1, 0xc7, 0x01, 0x8e, 0xe2, 0x45, 0x51, 0xa1, 0xe5, + 0x1a, 0x1a, 0x73, 0x08, 0xa4, 0x92, 0x28, 0x9e, 0xf2, 0xb2, 0x1d, 0x9c, + 0xf2, 0xbb, 0x8d, 0x71, 0xd2, 0xb9, 0xd3, 0x23, 0x15, 0x95, 0x5d, 0x9b, + 0x52, 0x22, 0x33, 0xad, 0x0d, 0x29, 0x11, 0xb3, 0x39, 0xeb, 0xf9, 0xce, + 0xe3, 0x59, 0x8c, 0x54, 0x42, 0x11, 0x3d, 0xbf, 0xff, 0xfe, 0xea, 0xdf, + 0xee, 0x67, 0xd0, 0xe3, 0xdb, 0x75, 0x9f, 0x09, 0x18, 0xd4, 0xc4, 0x14, + 0xd4, 0x53, 0x32, 0xe3, 0x93, 0x82, 0xe3, 0x25, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x06, 0xb8, 0xd1, 0x01, 0x33, 0x84, 0x40, 0x31, 0xb1, 0x33, 0x00, + 0x08, 0x00, 0x80, 0x60, 0x03, 0xa6, 0x01, 0xe8, 0x06, 0x46, 0x32, 0x98, + 0x06, 0x26, 0x10, 0xb0, 0x1f, 0xc7, 0x0e, 0x30, 0x5b, 0xa6, 0x1c, 0xe8, + 0x67, 0x26, 0x06, 0xc0, 0x23, 0xa6, 0x02, 0x38, 0x0d, 0x86, 0x14, 0x4a, + 0x62, 0x63, 0x83, 0x05, 0xc2, 0x20, 0x03, 0x13, 0x16, 0x1e, 0x34, 0x04, + 0xc2, 0x02, 0x8c, 0x13, 0x25, 0xa1, 0x0c, 0x2d, 0x07, 0x18, 0x98, 0x05, + 0x69, 0xeb, 0x29, 0x24, 0x4b, 0xac, 0x5d, 0x01, 0xa0, 0xd9, 0x72, 0xbe, + 0xa4, 0x9f, 0xb6, 0xc9, 0x23, 0x32, 0xdb, 0x74, 0x0d, 0x74, 0x94, 0x16, + 0x0e, 0xba, 0x16, 0x03, 0x64, 0x92, 0x29, 0x43, 0xd1, 0xd6, 0x12, 0xa9, + 0x07, 0x0f, 0xf4, 0x28, 0x13, 0x84, 0x6e, 0x66, 0xf8, 0xb1, 0xa2, 0x37, + 0xa5, 0x95, 0x85, 0xe6, 0xac, 0x32, 0x3c, 0x7e, 0xa4, 0xa9, 0xf6, 0xe2, + 0xe7, 0xe9, 0x47, 0xb2, 0xc3, 0x54, 0xc6, 0x7d, 0x7d, 0xc4, 0x9a, 0xf7, + 0x89, 0x0f, 0x58, 0xce, 0x31, 0x1f, 0x36, 0xce, 0x68, 0xdd, 0x73, 0x60, + 0xf2, 0xc2, 0x74, 0x18, 0x78, 0x95, 0xcd, 0xb8, 0x60, 0x85, 0xb7, 0xae, + 0x8c, 0x90, 0x14, 0xb3, 0xac, 0x55, 0x5e, 0x32, 0xce, 0xf6, 0xea, 0x9c, + 0x58, 0x60, 0x55, 0x55, 0x32, 0xb0, 0x34, 0x70, 0x6c, 0x94, 0x9c, 0xfd, + 0x6a, 0x5a, 0x0c, 0x5f, 0x5d, 0x6a, 0x5c, 0x76, 0x5d, 0x83, 0x85, 0xee, + 0x0c, 0xb4, 0x90, 0x8c, 0x99, 0x90, 0x1d, 0xae, 0xa6, 0x53, 0xf9, 0xee, + 0xfe, 0x6f, 0x1a, 0x2d, 0x75, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xf5, + 0xc4, 0x36, 0x45, 0x9b, 0xfb, 0x7a, 0xe0, 0x69, 0xad, 0xd8, 0x20, 0x4c, + 0x68, 0x6e, 0x1d, 0xfd, 0xc1, 0x0c, 0x4f, 0xf5, 0x6d, 0xc2, 0x3d, 0xb7, + 0x9f, 0x81, 0xb3, 0x25, 0xb8, 0x77, 0x49, 0x2d, 0x1d, 0xd7, 0xcc, 0xf3, + 0xc3, 0x4f, 0x5e, 0x97, 0xd5, 0x43, 0x54, 0xf4, 0x89, 0xc5, 0xf6, 0x35, + 0x9b, 0xf9, 0xfa, 0xaf, 0xee, 0x6e, 0x7a, 0xa5, 0x7d, 0xa9, 0xd7, 0xaf, + 0x9a, 0xbb, 0x9f, 0x68, 0x4f, 0xee, 0xe7, 0xe3, 0x78, 0xe2, 0x16, 0x62, + 0x7f, 0x8b, 0x5a, 0xf4, 0x9a, 0xb6, 0xe3, 0xba, 0x82, 0xaf, 0xee, 0xa6, + 0xa8, 0xe5, 0x56, 0x19, 0x97, 0x16, 0x79, 0x62, 0x72, 0x43, 0x4c, 0x69, + 0xe6, 0x1e, 0xa4, 0x04, 0xc0, 0x03, 0x57, 0x19, 0x03, 0x64, 0xc0, 0x76, + 0x00, 0x38, 0xc0, 0x03, 0x00, 0x2c, 0xc0, 0x1e, 0x01, 0xa0, 0xc0, 0x23, + 0x0e, 0xb4, 0xc4, 0xf4, 0x12, 0xd0, 0xc3, 0x35, 0x1f, 0xb8, 0xf6, 0xcf, + 0x7b, 0x84, 0xc6, 0x42, 0x10, 0x20, 0xc3, 0xc7, 0x08, 0x30, 0xc1, 0xba, + 0x03, 0xd4, 0xc0, 0x73, 0x02, 0x20, 0xc0, 0x5a, 0x01, 0x14, 0xc0, 0x65, + 0x00, 0x5c, 0xc4, 0x60, 0xcc, 0xc2, 0x72, 0xac, 0x48, 0x59, 0x30, 0xbc, + 0x12, 0x1a, 0x53, 0x53, 0xc8, 0x30, 0x03, 0x21, 0x2e, 0x8c, 0x5f, 0x07, + 0x4c, 0x44, 0x09, 0x8e, 0xca, 0x07, 0xcc, 0x30, 0x01, 0x0c, 0x00, 0x02, + 0x80, 0x20, 0x50, 0x18, 0x1f, 0x8d, 0x18, 0x04, 0x00, 0xca, 0x9b, 0x59, + 0x72, 0x01, 0x9e, 0x6b, 0x75, 0xe5, 0xcb, 0x08, 0x48, 0x08, 0xdb, 0x87, + 0x12, 0xc6, 0x95, 0x7a, 0xc0, 0x6c, 0x31, 0xe9, 0xb1, 0x4a, 0xbd, 0xb2, + 0x96, 0xcb, 0xda, 0xdb, 0xb2, 0xe8, 0xc0, 0xcf, 0x0d, 0xba, 0xb7, 0x84, + 0x71, 0xac, 0x30, 0x03, 0x02, 0x10, 0x83, 0x20, 0x91, 0x2c, 0x21, 0x48, + 0x70, 0x4d, 0x71, 0x26, 0x61, 0x88, 0xd0, 0x8a, 0x68, 0x95, 0xab, 0x04, + 0xe6, 0xca, 0x9f, 0x50, 0xe4, 0x6d, 0x95, 0x77, 0xa4, 0x58, 0xe4, 0xce, + 0x4b, 0x4e, 0xdb, 0x77, 0x9c, 0x97, 0x4b, 0x6e, 0x3a, 0x93, 0xeb, 0x32, + 0xfd, 0xc9, 0xb6, 0x59, 0x53, 0x0e, 0x58, 0xf5, 0x36, 0x2e, 0xe3, 0x7b, + 0xea, 0x6d, 0xb7, 0x68, 0x4c, 0x72, 0xde, 0xbe, 0x94, 0x66, 0xde, 0xee, + 0x5b, 0xa0, 0xfb, 0x85, 0x6a, 0xd2, 0x88, 0x7b, 0x61, 0xdc, 0xff, 0x6f, + 0x6c, 0x4c, 0xdb, 0x58, 0x7f, 0x9c, 0xfb, 0x17, 0x73, 0x8d, 0x18, 0xe4, + 0xcf, 0x9c, 0x37, 0x3b, 0xc1, 0x54, 0xe9, 0x8d, 0x6a, 0xe6, 0xe9, 0x69, + 0x26, 0x2b, 0xd1, 0x50, 0x4e, 0x53, 0xe8, 0x82, 0x29, 0xc5, 0x43, 0x2c, + 0xa6, 0x22, 0xf8, 0x49, 0x6a, 0x95, 0xb2, 0x6c, 0xb5, 0x56, 0x88, 0xa9, + 0xb4, 0x91, 0x63, 0xe1, 0x97, 0xaf, 0x9e, 0xbc, 0x87, 0x94, 0x3b, 0x79, + 0x46, 0x13, 0xdb, 0x8c, 0x61, 0x04, 0xb2, 0x49, 0x25, 0x1c, 0xc4, 0x30, + 0xde, 0xaa, 0xb7, 0xb4, 0xb2, 0x69, 0x7f, 0x71, 0xeb, 0x21, 0xf7, 0xb2, + 0xb6, 0xa3, 0xd2, 0x94, 0x33, 0x65, 0x59, 0x9e, 0x13, 0xee, 0xcc, 0xdc, + 0x8b, 0x3a, 0xdf, 0xdd, 0xa9, 0x33, 0xe6, 0xbd, 0xc5, 0xb9, 0xd5, 0xf9, + 0x4b, 0x76, 0x75, 0xef, 0xb3, 0x50, 0xd9, 0x4a, 0xe9, 0xbd, 0xef, 0xda, + 0x52, 0x51, 0x6b, 0xd2, 0x56, 0xcc, 0x3e, 0x54, 0xba, 0x94, 0xf7, 0x27, + 0x66, 0x1c, 0x75, 0x0c, 0xe0, 0xfa, 0x30, 0x4c, 0x84, 0x54, 0x4c, 0xae, + 0x9a, 0x65, 0x90, 0x69, 0xc3, 0x88, 0xcc, 0x9d, 0x6c, 0x8c, 0xb3, 0xc3, + 0xe3, 0x43, 0x49, 0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x27, 0x05, 0xc6, + 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x04, 0xc0, 0x1e, 0x30, 0x02, 0x01, 0x31, 0x30, 0x44, 0x00, + 0x40, 0x11, 0x80, 0xa2, 0x60, 0x23, 0x81, 0x00, 0x60, 0xaa, 0x03, 0xe8, + 0x66, 0xa3, 0x06, 0x62, 0x60, 0xd5, 0x28, 0xa2, 0x70, 0x1d, 0x7f, 0x74, + 0x60, 0xfd, 0x02, 0x62, 0x62, 0x8c, 0x00, 0x6e, 0x61, 0x0e, 0x80, 0x4c, + 0x60, 0x6f, 0x00, 0xde, 0x60, 0x5f, 0x80, 0xb8, 0x60, 0x55, 0x02, 0x06, + 0x62, 0xf0, 0x01, 0x96, 0x96, 0x26, 0x49, 0x0c, 0x98, 0xc6, 0x7e, 0x6d, + 0xa1, 0x18, 0x34, 0x38, 0x1c, 0x57, 0x00, 0xae, 0x8e, 0x0e, 0x09, 0x31, + 0xbe, 0xd8, 0xdc, 0xd6, 0x73, 0x0e, 0x09, 0x04, 0x8a, 0xa6, 0x35, 0x0b, + 0x18, 0xac, 0x10, 0x5e, 0x93, 0x08, 0x86, 0x17, 0xb2, 0x87, 0x35, 0xc2, + 0xc0, 0x35, 0x5d, 0x28, 0xbc, 0x02, 0xb9, 0xd7, 0xd8, 0x58, 0x43, 0x06, + 0x30, 0x25, 0xfa, 0xf1, 0xb4, 0xd8, 0x22, 0x01, 0x7f, 0x58, 0xa4, 0x89, + 0xa6, 0xd8, 0xa4, 0xe3, 0xfa, 0xe7, 0x2f, 0x85, 0xfc, 0xfa, 0xee, 0xa4, + 0x99, 0x8e, 0x29, 0x45, 0x11, 0x9d, 0x55, 0x64, 0xb2, 0x99, 0x81, 0xc4, + 0xbf, 0x49, 0x2b, 0x65, 0x95, 0xac, 0xd5, 0x27, 0xaa, 0xf7, 0x50, 0x9b, + 0xd8, 0x53, 0xb2, 0xb3, 0x45, 0x95, 0xba, 0x1d, 0xf5, 0x7a, 0xea, 0x49, + 0x5c, 0xa6, 0xc3, 0x4b, 0x93, 0xfc, 0xc0, 0xb6, 0x59, 0xb3, 0x8b, 0x4c, + 0xf6, 0x69, 0x5c, 0x63, 0xcf, 0xbb, 0xbe, 0x89, 0x9c, 0xc0, 0xb4, 0x3b, + 0x42, 0x79, 0x98, 0x0e, 0x6d, 0xb5, 0x60, 0x77, 0x03, 0x16, 0x8f, 0x68, + 0xd7, 0xb5, 0xfe, 0xad, 0x13, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xc8, + 0x75, 0x70, 0x41, 0x83, 0xfc, 0x7b, 0x70, 0x4f, 0xa5, 0xe8, 0x83, 0x48, + 0x26, 0x4c, 0x23, 0xe1, 0xc1, 0x04, 0x0f, 0xf1, 0x8d, 0xc1, 0xc8, 0x38, + 0x20, 0x85, 0x91, 0xa1, 0xba, 0x52, 0xe9, 0x92, 0x2c, 0xae, 0x7f, 0x55, + 0x79, 0x2e, 0xda, 0xab, 0x6a, 0xc2, 0x67, 0xb3, 0x75, 0x21, 0x4d, 0x1e, + 0x99, 0xd6, 0xa3, 0x77, 0xf1, 0x64, 0xd4, 0x7a, 0xe2, 0x48, 0x73, 0x5a, + 0xf8, 0x8b, 0xe0, 0x3e, 0xa7, 0xdf, 0x73, 0x6d, 0xc4, 0xb2, 0x45, 0x92, + 0x49, 0x69, 0xb6, 0x48, 0xcc, 0x0a, 0xe4, 0xe8, 0x2d, 0x68, 0xd2, 0x00, + 0xbe, 0x9b, 0x1e, 0x4a, 0xbb, 0xd4, 0xe5, 0x9f, 0x83, 0xfd, 0x4f, 0x7f, + 0xf3, 0xff, 0xfd, 0x63, 0x45, 0x6f, 0x8a, 0xcc, 0xcc, 0x6c, 0xfd, 0x9b, + 0xa5, 0xab, 0x61, 0x24, 0x79, 0xa4, 0xcb, 0xc0, 0xa3, 0x99, 0xaa, 0x4b, + 0xb3, 0xba, 0xd9, 0x9b, 0x6f, 0x31, 0x4f, 0x73, 0x50, 0x48, 0x00, 0xb0, + 0x32, 0xd0, 0x96, 0x7e, 0x1c, 0x52, 0x37, 0x43, 0x53, 0x72, 0x23, 0xc6, + 0x0d, 0x59, 0x67, 0xff, 0xd7, 0xfa, 0xca, 0xd8, 0x34, 0x0a, 0x12, 0x41, + 0xb1, 0x04, 0xc2, 0x47, 0x00, 0x15, 0x30, 0x0a, 0x80, 0xb5, 0x30, 0x64, + 0x00, 0x73, 0x30, 0x13, 0x00, 0x76, 0x30, 0x1a, 0xc0, 0xe3, 0x30, 0x07, + 0x04, 0xba, 0x33, 0xb5, 0x44, 0xed, 0x32, 0x4b, 0x91, 0x42, 0x3a, 0xa3, + 0xbf, 0x85, 0x31, 0xba, 0x06, 0x72, 0x30, 0xc9, 0x00, 0x55, 0x30, 0x78, + 0x02, 0x42, 0x30, 0x46, 0x00, 0x41, 0x30, 0x13, 0x40, 0x4f, 0x30, 0x2a, + 0xc0, 0x91, 0x37, 0x69, 0xdc, 0xcb, 0x61, 0x43, 0x2b, 0x86, 0x85, 0x62, + 0x26, 0x27, 0x2b, 0x98, 0xc4, 0x0e, 0x15, 0x18, 0x18, 0xb0, 0xfc, 0x68, + 0xd3, 0x00, 0x5a, 0x54, 0x7f, 0x91, 0x01, 0x99, 0xc8, 0x23, 0x43, 0x00, + 0x30, 0x64, 0xc2, 0xa2, 0x33, 0x10, 0x89, 0xcc, 0x26, 0x17, 0x4f, 0xe3, + 0x0c, 0x01, 0x0c, 0x38, 0x16, 0x1a, 0x10, 0x21, 0xe1, 0x83, 0x01, 0xc6, + 0x0c, 0x04, 0x18, 0x08, 0x02, 0x2a, 0x01, 0x30, 0x28, 0x84, 0x20, 0x1e, + 0xa7, 0x40, 0xa0, 0x41, 0x82, 0xc0, 0xe9, 0x76, 0xa2, 0x82, 0x20, 0x01, + 0x6b, 0x23, 0xa8, 0x66, 0x0a, 0x05, 0xa9, 0x7a, 0xf1, 0x48, 0x74, 0xd7, + 0x90, 0xa5, 0xa2, 0x44, 0x35, 0xc8, 0x6d, 0x77, 0xab, 0x00, 0xf2, 0x3d, + 0x84, 0x62, 0xf7, 0x80, 0x80, 0xf8, 0xe1, 0x30, 0x7d, 0x2c, 0x09, 0xe5, + 0x74, 0x17, 0xe8, 0x88, 0xf8, 0xe8, 0x1a, 0x8e, 0xd6, 0x37, 0x37, 0xa8, + 0x9d, 0x9b, 0xb4, 0x9b, 0x9e, 0xfc, 0xda, 0x0b, 0x37, 0x73, 0x1b, 0xa4, + 0x6a, 0xca, 0x71, 0x3c, 0x2b, 0xa3, 0x8e, 0x23, 0xc7, 0xd8, 0xc7, 0x3a, + 0x2d, 0xb3, 0xeb, 0x61, 0xc8, 0x4c, 0x16, 0x5d, 0xd8, 0xce, 0xb2, 0x59, + 0xba, 0xb3, 0xd2, 0xcb, 0x92, 0x96, 0x34, 0x90, 0xad, 0x6a, 0x15, 0xc9, + 0xd6, 0xda, 0x18, 0x50, 0xa2, 0xb5, 0x3e, 0xeb, 0xe9, 0x0c, 0x7b, 0x0b, + 0x5b, 0x7a, 0xb1, 0xac, 0x2d, 0x9f, 0xe9, 0x81, 0x6b, 0x0f, 0xc4, 0xc7, + 0xfa, 0xb6, 0xa9, 0x68, 0x39, 0x64, 0x59, 0x4a, 0xeb, 0xfa, 0xbb, 0x9f, + 0x3f, 0x71, 0xa4, 0x4c, 0xae, 0x3f, 0x4b, 0xe5, 0x94, 0xeb, 0x8f, 0x0e, + 0xcf, 0xd0, 0x02, 0x01, 0xb2, 0x69, 0xb9, 0x85, 0x2e, 0xaf, 0xe3, 0x86, + 0xb9, 0x6b, 0x1d, 0x60, 0xcc, 0x7c, 0x1d, 0x54, 0xea, 0xe4, 0x64, 0xb3, + 0x23, 0x63, 0xd3, 0x4f, 0xe1, 0x14, 0xd7, 0x8c, 0x75, 0x6c, 0x54, 0xe2, + 0x10, 0xd2, 0x51, 0x18, 0xc1, 0x22, 0x7a, 0xb4, 0x55, 0xc3, 0xf1, 0x5d, + 0xd7, 0x28, 0x91, 0x7f, 0x5d, 0xff, 0xd1, 0xfe, 0xfc, 0xcd, 0x7c, 0xba, + 0xcb, 0x4a, 0xc4, 0x42, 0x4f, 0x15, 0xc2, 0xed, 0x15, 0xaa, 0xfa, 0x5c, + 0xad, 0xf1, 0x75, 0xc7, 0xc5, 0xff, 0x35, 0x3c, 0x55, 0xbd, 0x75, 0x52, + 0xb7, 0x53, 0x15, 0x71, 0x70, 0xb3, 0xe9, 0x29, 0x1f, 0x6c, 0x91, 0x3a, + 0xc1, 0x90, 0x96, 0x68, 0xdc, 0xd1, 0xe8, 0x68, 0x82, 0xe1, 0x05, 0x07, + 0x05, 0x91, 0x02, 0x3c, 0x87, 0x82, 0x1a, 0x89, 0xaa, 0x06, 0xd0, 0x03, + 0x00, 0x00, 0x00, 0x62, 0x00, 0x21, 0xcc, 0x21, 0x80, 0x0f, 0x8c, 0x01, + 0xb0, 0x1c, 0xcc, 0x00, 0xf0, 0x7a, 0x0c, 0x22, 0x51, 0x59, 0x4c, 0x5c, + 0x32, 0xf7, 0x0c, 0x9e, 0xf5, 0x42, 0x0e, 0x84, 0xf9, 0x32, 0x0c, 0xf1, + 0x01, 0x30, 0x4c, 0x45, 0xf0, 0xba, 0x0c, 0x1c, 0x40, 0x19, 0xcc, 0x18, + 0xd0, 0x6e, 0x8c, 0x0b, 0xf0, 0x22, 0x8c, 0x0e, 0x30, 0x28, 0x00, 0x8f, + 0xcc, 0xe2, 0x73, 0xd5, 0xcc, 0xde, 0x9a, 0x0a, 0x23, 0x35, 0xcf, 0xcd, + 0x91, 0xd5, 0xaa, 0x6a, 0xdb, 0x1d, 0xbe, 0x07, 0xbd, 0xa1, 0x60, 0xe9, + 0x97, 0x24, 0x62, 0x45, 0x19, 0x11, 0xc8, 0xfe, 0x61, 0x88, 0x99, 0x02, + 0x20, 0xe2, 0xa9, 0xec, 0x62, 0xc8, 0x18, 0x40, 0x2a, 0xb0, 0x42, 0x00, + 0xc2, 0x88, 0x30, 0xe0, 0x9c, 0xf0, 0xa0, 0x73, 0x0c, 0x0c, 0x14, 0x15, + 0x99, 0x80, 0x05, 0x98, 0x40, 0x6a, 0x85, 0x69, 0x02, 0x81, 0x23, 0x94, + 0x12, 0x59, 0x92, 0xe5, 0x2f, 0xf4, 0xb5, 0x2f, 0xea, 0x60, 0xce, 0x25, + 0xf2, 0x57, 0x23, 0x53, 0x72, 0x00, 0x14, 0x5c, 0x91, 0xc5, 0xb4, 0x52, + 0x4d, 0x11, 0xd8, 0x03, 0x70, 0xed, 0x5d, 0x8e, 0x61, 0x56, 0x73, 0x74, + 0x0a, 0xba, 0x63, 0xf7, 0xab, 0x90, 0xe7, 0xea, 0xe6, 0x75, 0x4c, 0x06, + 0x67, 0x3a, 0xe2, 0xbb, 0x73, 0x8a, 0xd9, 0x68, 0xb0, 0xde, 0x46, 0x7c, + 0xe2, 0xac, 0x55, 0xc6, 0x49, 0xff, 0xfb, 0xd4, 0x60, 0x64, 0x0c, 0xd9, + 0x32, 0x70, 0x40, 0x93, 0xfa, 0x7b, 0x70, 0x68, 0x6e, 0x08, 0x20, 0x60, + 0x45, 0x6e, 0x22, 0xf1, 0xc0, 0xfa, 0x2f, 0xe5, 0x8d, 0xc1, 0x63, 0x37, + 0xa0, 0xc4, 0xd0, 0x95, 0xb8, 0x67, 0xd9, 0x86, 0x68, 0xce, 0x31, 0xe9, + 0x25, 0x62, 0x31, 0xac, 0x46, 0x8f, 0x59, 0x2f, 0x02, 0x48, 0x8f, 0x62, + 0x6a, 0x5f, 0x1f, 0x7b, 0x80, 0xe0, 0xbf, 0x12, 0x34, 0x75, 0x6f, 0x6a, + 0x82, 0xa7, 0x67, 0x99, 0xf6, 0xdf, 0xd6, 0x3c, 0x28, 0x1a, 0x87, 0x95, + 0x8b, 0xb7, 0xc9, 0x3e, 0x9e, 0x35, 0xc9, 0x06, 0x4a, 0x6a, 0x90, 0x27, + 0x85, 0x77, 0x08, 0xee, 0x50, 0x9b, 0xf5, 0x19, 0xd5, 0xdd, 0x6a, 0x4b, + 0x51, 0xae, 0xdd, 0xb6, 0x76, 0x27, 0xf0, 0x15, 0xd3, 0xc3, 0x88, 0xdf, + 0x2a, 0xa1, 0x87, 0x6e, 0x6d, 0xca, 0x0c, 0xb2, 0x20, 0x96, 0x95, 0x92, + 0x31, 0x36, 0x27, 0x87, 0xcb, 0xdb, 0x3c, 0xc7, 0x0e, 0xe5, 0x9d, 0x36, + 0x1c, 0xd5, 0x9b, 0x2b, 0xa1, 0xa8, 0x67, 0x3b, 0x1c, 0xe4, 0xe6, 0xd8, + 0x16, 0xcb, 0x6f, 0xdd, 0xac, 0xea, 0x65, 0x46, 0x57, 0x23, 0xa9, 0xa4, + 0x77, 0x43, 0x12, 0xda, 0x37, 0x4d, 0x9e, 0x92, 0x4b, 0x75, 0xa5, 0xa8, + 0xa6, 0x62, 0xce, 0x53, 0xb2, 0x1e, 0xad, 0x6b, 0x59, 0x2c, 0xb4, 0x54, + 0x54, 0x42, 0x31, 0xaf, 0x75, 0x25, 0xb5, 0xe8, 0xc7, 0x67, 0x4e, 0xab, + 0xaa, 0x3b, 0xba, 0x9b, 0xc6, 0x23, 0xa2, 0x23, 0xbd, 0x3e, 0xb7, 0x22, + 0x9d, 0xe2, 0x57, 0x29, 0x90, 0x45, 0x83, 0xd4, 0x16, 0x16, 0x12, 0x0a, + 0x17, 0x2b, 0x09, 0x87, 0x05, 0x4e, 0x71, 0xe2, 0x00, 0x08, 0x78, 0x71, + 0x00, 0x0d, 0x00, 0x10, 0xc0, 0x6a, 0x02, 0x68, 0x78, 0x6e, 0x50, 0x50, + 0x27, 0x06, 0x08, 0xc8, 0x0d, 0xa6, 0x1a, 0xe0, 0x3f, 0x86, 0xfd, 0x90, + 0xa3, 0x66, 0x22, 0x30, 0x1b, 0x46, 0x79, 0xd0, 0x1b, 0x26, 0x1f, 0x38, + 0x65, 0xa6, 0x0d, 0xe0, 0x07, 0xc6, 0x07, 0x98, 0x10, 0x86, 0x02, 0x40, + 0x0f, 0xe6, 0x01, 0x18, 0x05, 0x00, 0x40, 0x0d, 0x4b, 0x24, 0x97, 0xc9, + 0xe0, 0x87, 0xca, 0x04, 0xa6, 0x49, 0x1c, 0x17, 0x9d, 0xbb, 0x49, 0x54, + 0x42, 0x71, 0xab, 0x39, 0x6b, 0xf5, 0x9b, 0xa6, 0x33, 0xf0, 0xd8, 0xda, + 0x7a, 0xc9, 0x79, 0x59, 0x74, 0x0e, 0xcd, 0x59, 0xcc, 0x34, 0xe1, 0x48, + 0x5a, 0x13, 0x29, 0x86, 0xd6, 0x19, 0x94, 0x2f, 0x25, 0x85, 0x67, 0x2d, + 0x72, 0x57, 0x5a, 0x43, 0x05, 0xca, 0x22, 0x32, 0xf8, 0xa4, 0x05, 0x1c, + 0x92, 0xb2, 0x57, 0x05, 0xc4, 0xe3, 0xd3, 0x42, 0x78, 0x2c, 0x21, 0x90, + 0x0c, 0xcf, 0xfc, 0x8c, 0x1c, 0x26, 0x88, 0xe4, 0xc8, 0x4e, 0xd2, 0x5a, + 0x41, 0xd0, 0x2b, 0x2f, 0x93, 0xc2, 0xf6, 0x04, 0xd3, 0xd4, 0x15, 0xcb, + 0x04, 0x75, 0x27, 0x62, 0x1a, 0x90, 0xae, 0x32, 0x00, 0xf4, 0x5b, 0x20, + 0xa2, 0x1f, 0xd6, 0x1c, 0x9d, 0x1a, 0xab, 0x5b, 0x0d, 0x94, 0x2c, 0x24, + 0x46, 0x97, 0x5a, 0x09, 0x4c, 0x1f, 0x25, 0x17, 0x4f, 0x42, 0x43, 0x78, + 0x15, 0x46, 0x51, 0x3f, 0x80, 0x6e, 0x4f, 0x30, 0xa9, 0xd1, 0x6c, 0x76, + 0x3d, 0x40, 0x74, 0x96, 0x82, 0x3f, 0x97, 0x0f, 0x81, 0x72, 0xbb, 0xca, + 0x0c, 0x2e, 0x38, 0x14, 0xaa, 0x82, 0x90, 0xeb, 0x9e, 0x56, 0x3d, 0xde, + 0x3b, 0x8e, 0x46, 0x29, 0x53, 0x36, 0x4d, 0x1c, 0x1f, 0x35, 0x2d, 0x5a, + 0x83, 0x91, 0xc3, 0x30, 0xa8, 0x22, 0x1d, 0xaf, 0x59, 0x25, 0xa1, 0xec, + 0xe5, 0xf3, 0xd1, 0xf5, 0xa5, 0x83, 0x81, 0x01, 0xb2, 0x12, 0x70, 0x92, + 0xa3, 0x90, 0xf8, 0x40, 0x3c, 0x0b, 0xca, 0x21, 0x00, 0x7a, 0x8b, 0x00, + 0x0c, 0xa8, 0x15, 0xa0, 0x1f, 0x5e, 0xce, 0x6d, 0xa4, 0x64, 0x9a, 0x0c, + 0xb5, 0x5b, 0x22, 0xcc, 0xd3, 0x9a, 0x20, 0xd1, 0x94, 0xc8, 0x71, 0x23, + 0x3e, 0x5f, 0x69, 0xa2, 0x98, 0x59, 0x53, 0xe7, 0xbb, 0x4f, 0x65, 0xa1, + 0x1a, 0x8b, 0xea, 0x9a, 0x75, 0x55, 0xd9, 0x6c, 0xa5, 0xb4, 0x9a, 0x16, + 0xec, 0xeb, 0xbd, 0x3f, 0xbe, 0x73, 0xbd, 0x2d, 0xab, 0x6d, 0x69, 0x6d, + 0x65, 0x74, 0x5d, 0xd7, 0x4b, 0xf6, 0x23, 0x6a, 0x8d, 0x7a, 0x6e, 0x6b, + 0x38, 0xcb, 0x96, 0xe5, 0x51, 0x8a, 0x22, 0x83, 0x98, 0x50, 0xa1, 0x27, + 0x64, 0x0c, 0x16, 0x15, 0x18, 0xa2, 0xe5, 0x1f, 0x69, 0x00, 0x03, 0x02, + 0x68, 0x01, 0xa1, 0x50, 0x5b, 0x8c, 0x30, 0x80, 0x2e, 0xcc, 0x02, 0xf0, + 0x23, 0x8c, 0x11, 0xe0, 0x44, 0x0c, 0x3b, 0x83, 0x40, 0x8d, 0x19, 0x54, + 0x35, 0x4c, 0x68, 0x30, 0x36, 0xcc, 0xe3, 0x32, 0xb7, 0x4c, 0x21, 0xc0, + 0x4c, 0x8c, 0x11, 0xb0, 0x32, 0xcc, 0x0f, 0x50, 0x1a, 0x0c, 0x04, 0x90, + 0x0d, 0x1e, 0x50, 0x08, 0x03, 0x20, 0x50, 0x05, 0x47, 0x00, 0x19, 0x6f, + 0x40, 0x11, 0x43, 0xed, 0x8c, 0xb9, 0xe2, 0x93, 0x81, 0x80, 0x49, 0x81, + 0xeb, 0x56, 0x2a, 0x70, 0xcb, 0x1f, 0xa5, 0x8c, 0xd8, 0x68, 0x58, 0xb3, + 0x3a, 0x66, 0x4b, 0xb1, 0x2d, 0x9f, 0xd6, 0x54, 0x90, 0xc9, 0x0e, 0x99, + 0x8b, 0xe5, 0xae, 0x3e, 0x09, 0x84, 0xbf, 0x97, 0x42, 0xb5, 0x38, 0x8d, + 0xd1, 0x60, 0x14, 0xee, 0x9d, 0x97, 0x4a, 0x2d, 0xb7, 0xb1, 0x48, 0x85, + 0x97, 0x62, 0xa4, 0xb5, 0xea, 0x84, 0xba, 0x15, 0xdf, 0xd9, 0x1c, 0xd5, + 0x04, 0x83, 0xb3, 0xb1, 0x1c, 0x63, 0xf4, 0x8e, 0x94, 0x8f, 0x08, 0x29, + 0xfd, 0x89, 0x57, 0xb6, 0xfd, 0x4a, 0x5f, 0xb7, 0x65, 0xc7, 0xbe, 0xe1, + 0x46, 0x66, 0xe8, 0x60, 0x47, 0xff, 0xfb, 0xd4, 0x60, 0x52, 0x80, 0x09, + 0x51, 0x70, 0x3e, 0x95, 0x7f, 0x20, 0x00, 0x54, 0x2d, 0xd8, 0x42, 0xa2, + 0x94, 0x00, 0x29, 0xea, 0x09, 0x08, 0xb9, 0xfe, 0x00, 0x11, 0x8d, 0x41, + 0x61, 0x97, 0x10, 0x20, 0x00, 0x02, 0x7a, 0x2e, 0xfb, 0xc9, 0x24, 0x79, + 0x50, 0xe0, 0xfe, 0xc1, 0xd2, 0x37, 0x56, 0x05, 0xbd, 0x76, 0x1f, 0x99, + 0x9c, 0x9c, 0x82, 0xe0, 0xa7, 0xf6, 0x33, 0x2e, 0x92, 0x49, 0x30, 0xd6, + 0x4f, 0x8c, 0x92, 0x45, 0x25, 0xb9, 0x15, 0x86, 0x5f, 0x5b, 0x2f, 0xec, + 0x4e, 0x1e, 0x86, 0x65, 0xb3, 0xb3, 0xad, 0x3b, 0x90, 0xe5, 0x67, 0x86, + 0xed, 0x26, 0x75, 0xe2, 0x6e, 0x5c, 0x4e, 0x11, 0x29, 0x81, 0xe3, 0x59, + 0x45, 0xe8, 0xe3, 0x53, 0xf2, 0x18, 0x95, 0xdc, 0xe2, 0xd4, 0x93, 0xae, + 0xf5, 0x6c, 0x3e, 0xf4, 0xeb, 0xb1, 0x6e, 0x5e, 0xff, 0xd9, 0x9a, 0x87, + 0x61, 0xd7, 0xae, 0x86, 0xbc, 0x76, 0x51, 0x56, 0xdc, 0xbe, 0xdd, 0x48, + 0xdb, 0xed, 0x3b, 0x2d, 0xa9, 0x46, 0xf2, 0x4c, 0x4d, 0x31, 0x0c, 0xeb, + 0xc7, 0xa2, 0x92, 0x07, 0x9a, 0x2b, 0x28, 0x68, 0x18, 0x3b, 0x90, 0xd2, + 0x79, 0x45, 0x5f, 0x69, 0x4a, 0x0e, 0xac, 0x80, 0x00, 0x15, 0xd5, 0xc5, + 0x4a, 0x28, 0xec, 0xf6, 0xdd, 0x59, 0x1f, 0x23, 0xa3, 0xa2, 0x56, 0xe6, + 0x25, 0xd3, 0xe8, 0xa6, 0x77, 0x99, 0xdc, 0xa8, 0xa6, 0x6a, 0x3b, 0xb3, + 0x14, 0xda, 0x55, 0x3c, 0xf5, 0xfa, 0x3f, 0x2f, 0x44, 0xff, 0xd7, 0xf5, + 0xa6, 0x8d, 0xdd, 0xae, 0xf3, 0xba, 0x9a, 0xda, 0x7e, 0xdd, 0x65, 0x6b, + 0x2d, 0x36, 0xa1, 0xb4, 0xdd, 0x8b, 0xb6, 0xbf, 0x66, 0xff, 0xd9, 0x50, + 0xd4, 0xa1, 0x54, 0xe5, 0x46, 0x21, 0x9c, 0x45, 0x8c, 0xa5, 0x10, 0x1a, + 0x24, 0x2e, 0x73, 0x09, 0x0b, 0x04, 0x80, 0x00, 0x42, 0x00, 0x00, 0xc0, + 0x9d, 0x01, 0x8c, 0xc1, 0x39, 0x0a, 0x6c, 0xc0, 0x92, 0x04, 0x0c, 0xc1, + 0x2b, 0x1b, 0x34, 0xc0, 0xa0, 0x05, 0xa4, 0xc5, 0xd1, 0x33, 0x94, 0xcb, + 0x61, 0x12, 0xd8, 0xc3, 0x0e, 0x03, 0x7c, 0xc8, 0xdf, 0x26, 0x88, 0xc8, + 0x3b, 0x0d, 0x14, 0xc7, 0x19, 0x1d, 0x90, 0xcb, 0x4b, 0x74, 0x74, 0xc0, + 0x1b, 0x01, 0x08, 0x20, 0x00, 0x53, 0x08, 0x00, 0x43, 0x63, 0x0f, 0xa0, + 0x1d, 0x23, 0xd3, 0x8e, 0x35, 0x93, 0x0a, 0x8c, 0x07, 0xc4, 0x31, 0x1d, + 0x01, 0x9f, 0xe3, 0x20, 0x70, 0x65, 0x21, 0xa7, 0x91, 0x66, 0x92, 0x3b, + 0xa9, 0x9c, 0x0b, 0x05, 0x99, 0x50, 0x2c, 0x61, 0x22, 0xc1, 0xa0, 0x0d, + 0x46, 0xa4, 0x59, 0x9a, 0x5e, 0x58, 0x65, 0x79, 0xfc, 0x0a, 0x9a, 0x2b, + 0x06, 0x24, 0x50, 0x32, 0xf0, 0xe8, 0x68, 0x42, 0x6d, 0x41, 0x99, 0x8e, + 0x4e, 0xa6, 0x26, 0x18, 0xb7, 0xf2, 0x79, 0x1c, 0x9a, 0x36, 0x82, 0xe2, + 0x40, 0xc4, 0xbf, 0x44, 0x77, 0xd4, 0xc4, 0x03, 0xc3, 0x14, 0x13, 0x4c, + 0x6c, 0x1d, 0x30, 0x18, 0xc0, 0xc0, 0x82, 0x98, 0xdc, 0x7a, 0xa5, 0x9d, + 0xcb, 0x8b, 0x96, 0xc1, 0xd7, 0x7a, 0xbb, 0x85, 0xaa, 0x74, 0x7c, 0x02, + 0x81, 0x93, 0x15, 0x85, 0x16, 0xd9, 0xc0, 0xa6, 0xc2, 0xbc, 0xc4, 0x73, + 0xb4, 0x0e, 0x7e, 0x6c, 0x1e, 0xfd, 0xc6, 0xbf, 0x34, 0xa6, 0x4c, 0x9a, + 0x24, 0xa6, 0x4f, 0xdb, 0x72, 0x5a, 0x55, 0xee, 0x65, 0x76, 0x55, 0x95, + 0x6c, 0xa2, 0x94, 0xf1, 0x8d, 0x44, 0xa9, 0x2c, 0x4b, 0x1e, 0x17, 0x69, + 0xe6, 0x6e, 0xae, 0xd6, 0x4e, 0xcd, 0xab, 0x1a, 0xa1, 0x9e, 0x9e, 0xbd, + 0x23, 0xc3, 0xef, 0xc8, 0x26, 0xa5, 0x91, 0x4b, 0x10, 0xe5, 0x2d, 0x34, + 0x53, 0x28, 0x8c, 0x3b, 0xd7, 0x66, 0x72, 0x01, 0x78, 0x6d, 0x41, 0x70, + 0xee, 0xe9, 0xa7, 0x69, 0xa4, 0xf3, 0xb5, 0x3e, 0x83, 0xb2, 0x2d, 0xfc, + 0xbe, 0x5b, 0x37, 0x4d, 0x2b, 0xb1, 0x3d, 0x3d, 0x6e, 0xbf, 0x6b, 0x76, + 0x25, 0x29, 0x9c, 0x80, 0xa9, 0x7b, 0x4d, 0x41, 0x0d, 0x53, 0x54, 0xb5, + 0x37, 0x73, 0x58, 0xf6, 0x73, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xbc, 0x46, 0xed, 0xfa, 0xdf, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xfa, 0xb5, 0xab, 0x31, 0xe0, 0x00, 0x9b, 0x80, 0x00, 0x11, 0xf0, + 0xdd, 0x05, 0xd4, 0x62, 0x63, 0xb8, 0x64, 0xd2, 0x21, 0x5d, 0xc8, 0x0a, + 0x52, 0x9c, 0x85, 0x73, 0x21, 0x09, 0x05, 0x43, 0x74, 0x62, 0x50, 0xc6, + 0x22, 0x2a, 0xa2, 0x3d, 0xe7, 0xa9, 0xcc, 0xce, 0xc9, 0xd0, 0xb4, 0x4e, + 0x8e, 0xe5, 0x31, 0x6e, 0x49, 0x8e, 0x4f, 0x55, 0x77, 0x75, 0xd5, 0xee, + 0x4b, 0x35, 0x0d, 0xad, 0x35, 0x6d, 0x50, 0xc7, 0x9a, 0xb4, 0xfc, 0xcf, + 0xdb, 0x23, 0x16, 0xae, 0x9d, 0x36, 0x33, 0xd6, 0x46, 0x43, 0xbc, 0xf4, + 0x95, 0x32, 0xbd, 0xdc, 0xad, 0x0c, 0x75, 0x7f, 0xff, 0xff, 0xfe, 0x65, + 0x29, 0x1d, 0xbf, 0xff, 0xff, 0xfb, 0x54, 0xc0, 0xd9, 0x01, 0x80, 0x03, + 0x00, 0xe8, 0x02, 0x60, 0x10, 0x3f, 0xc6, 0x24, 0x41, 0x9b, 0x46, 0x95, + 0x40, 0x68, 0x46, 0x14, 0x58, 0x3c, 0x06, 0x04, 0xe8, 0x3e, 0x66, 0x28, + 0x90, 0x26, 0xe1, 0x81, 0x5e, 0x18, 0x19, 0xc2, 0xe9, 0x98, 0x10, 0x40, + 0x7c, 0x98, 0x40, 0x03, 0x61, 0x99, 0x32, 0xc7, 0x6b, 0x9b, 0xee, 0x9b, + 0x62, 0x19, 0xd1, 0xa5, 0xc0, 0x18, 0xee, 0x22, 0x1d, 0x18, 0x56, 0xa0, + 0xcc, 0x18, 0x14, 0xe0, 0x42, 0x98, 0x15, 0xc0, 0x79, 0x81, 0xab, 0xf6, + 0xc0, 0x75, 0x23, 0x38, 0x18, 0xff, 0xfb, 0xd4, 0x60, 0x28, 0x0d, 0xd8, + 0x11, 0x70, 0x43, 0x97, 0x7e, 0xa0, 0x00, 0x54, 0x6e, 0x08, 0x41, 0xe8, + 0x94, 0x00, 0x20, 0x75, 0xc1, 0x08, 0x0f, 0xf5, 0x2d, 0xc1, 0x4e, 0x37, + 0xa1, 0x01, 0x00, 0x89, 0xb9, 0xe8, 0xa2, 0x06, 0x48, 0x8a, 0x01, 0x97, + 0x49, 0x20, 0x65, 0x60, 0x00, 0x18, 0x50, 0x50, 0x02, 0xc0, 0xa0, 0x40, + 0x2a, 0x03, 0x33, 0x2f, 0xc0, 0xed, 0x67, 0x00, 0x01, 0x09, 0x92, 0x80, + 0xd9, 0x90, 0x6c, 0x14, 0x1e, 0xf8, 0x06, 0x03, 0x87, 0x24, 0x1a, 0x03, + 0xc0, 0xcb, 0xc4, 0x90, 0x30, 0xf8, 0x00, 0x49, 0x85, 0xc0, 0x5a, 0x14, + 0xb0, 0x6c, 0xe2, 0x3c, 0x15, 0x02, 0x34, 0x9a, 0x1c, 0x83, 0x12, 0x81, + 0x04, 0x20, 0x43, 0xd9, 0x5c, 0xd4, 0x7a, 0x24, 0x8a, 0x84, 0x8c, 0xb4, + 0x60, 0x45, 0x47, 0x19, 0xd2, 0x4c, 0xe9, 0x60, 0x76, 0x94, 0x49, 0x83, + 0x52, 0xe9, 0x16, 0x25, 0x49, 0x84, 0x94, 0x9b, 0xa0, 0x81, 0xaa, 0x2a, + 0x34, 0x76, 0x52, 0xcd, 0x53, 0x30, 0x51, 0xa2, 0x14, 0x12, 0x26, 0x92, + 0x45, 0x7d, 0x74, 0x8e, 0xac, 0xe1, 0xdd, 0x15, 0xae, 0xb7, 0x53, 0x4e, + 0x9a, 0xf9, 0x92, 0x8c, 0x59, 0xde, 0x9a, 0xd1, 0x4d, 0x97, 0x45, 0x05, + 0xd7, 0x76, 0x41, 0x1a, 0x4e, 0xf3, 0x04, 0xde, 0xad, 0xd7, 0x3f, 0xa9, + 0x05, 0xb2, 0x2b, 0x77, 0xa1, 0x64, 0x16, 0x93, 0x3a, 0x36, 0xa2, 0xad, + 0x4a, 0x3a, 0xe8, 0x29, 0x7e, 0x8a, 0xd7, 0x59, 0xf6, 0x66, 0x3c, 0x69, + 0x35, 0x35, 0x2f, 0x04, 0x00, 0x5d, 0x93, 0xe6, 0x46, 0x28, 0x1b, 0x2d, + 0x4a, 0x4d, 0x27, 0x5a, 0x6e, 0x8d, 0x33, 0xaa, 0x31, 0xd5, 0x3a, 0xa5, + 0xaf, 0xf4, 0xd2, 0xaa, 0xc8, 0xab, 0x7e, 0x5a, 0xef, 0x25, 0xdb, 0x47, + 0xd1, 0xef, 0x9d, 0x34, 0x45, 0xb5, 0x97, 0x2a, 0xef, 0x4a, 0x6d, 0x54, + 0xc9, 0x6f, 0x4f, 0xd3, 0x47, 0x93, 0xbf, 0x44, 0xd3, 0xa7, 0x7a, 0x53, + 0x33, 0x6d, 0xae, 0xda, 0x37, 0xd1, 0xb5, 0xf4, 0x6a, 0xa2, 0xe4, 0x5d, + 0x6f, 0x94, 0xb5, 0x53, 0x4b, 0x72, 0x1e, 0x1a, 0x1e, 0x07, 0x12, 0x10, + 0x71, 0x01, 0x61, 0x33, 0x02, 0x84, 0x0f, 0xa3, 0x00, 0x14, 0x17, 0xd3, + 0x03, 0x92, 0x18, 0x23, 0x58, 0xec, 0xcf, 0xb3, 0x01, 0x94, 0x25, 0x43, + 0x01, 0x7c, 0x2b, 0xc3, 0x03, 0x9c, 0x27, 0x73, 0x03, 0xec, 0x28, 0x93, + 0x1b, 0x84, 0x57, 0xa3, 0x07, 0xc4, 0x01, 0x13, 0x02, 0x8c, 0x2a, 0xe3, + 0x10, 0x38, 0xa6, 0xb3, 0xe2, 0x6f, 0xd5, 0x53, 0x15, 0x38, 0x53, 0x73, + 0x01, 0x90, 0x18, 0x03, 0x42, 0x12, 0xf3, 0x2f, 0xc5, 0x43, 0x19, 0x88, + 0x93, 0x4c, 0x6e, 0xf3, 0x5b, 0x0b, 0x52, 0x62, 0x58, 0xc1, 0x86, 0x48, + 0xd0, 0x90, 0xa8, 0xc5, 0x80, 0x30, 0xc4, 0x60, 0xe0, 0xc2, 0x60, 0x80, + 0xc3, 0xe0, 0xcc, 0xc7, 0xa3, 0x7c, 0xd9, 0x02, 0xc1, 0x5f, 0xac, 0x91, + 0x21, 0xcd, 0x2f, 0x41, 0x41, 0x60, 0x54, 0x2f, 0x2d, 0x10, 0x54, 0x10, + 0x30, 0x40, 0xa4, 0x30, 0x04, 0x0e, 0x6a, 0x49, 0xc4, 0xa6, 0xad, 0x20, + 0x42, 0x07, 0xc3, 0x50, 0xea, 0x69, 0xae, 0xc7, 0x59, 0xdd, 0x68, 0xb8, + 0xe0, 0xb0, 0x8c, 0xa7, 0x36, 0x99, 0x6e, 0x96, 0x1a, 0x7e, 0x64, 0xd1, + 0x77, 0x92, 0xa2, 0x0d, 0xcd, 0x62, 0x53, 0x2a, 0x23, 0x99, 0x35, 0x34, + 0x84, 0xee, 0xb4, 0x27, 0x46, 0xf3, 0x1e, 0x2e, 0xa7, 0xa0, 0x3c, 0xda, + 0x68, 0xd8, 0x84, 0x94, 0x8a, 0x73, 0x82, 0xfb, 0x18, 0x28, 0x5d, 0xfd, + 0xea, 0x54, 0x51, 0xa6, 0xdc, 0x75, 0xbd, 0x73, 0x5c, 0x3c, 0x97, 0xc6, + 0x15, 0x65, 0xa8, 0x42, 0xb5, 0x6b, 0x74, 0x92, 0x63, 0x52, 0xaa, 0x9c, + 0xe3, 0x3a, 0xf3, 0xc6, 0x4b, 0xaa, 0xae, 0xa5, 0x4d, 0xdc, 0xf1, 0x88, + 0x7a, 0x9c, 0xdd, 0x55, 0x4c, 0x77, 0xc5, 0x8e, 0xfb, 0x96, 0xa1, 0x53, + 0xd4, 0xbd, 0x78, 0x2a, 0xf4, 0x6f, 0xb7, 0xb6, 0xd3, 0x08, 0xe5, 0xb3, + 0x9c, 0x9b, 0xb8, 0x45, 0x26, 0x14, 0x56, 0xb5, 0x73, 0x6b, 0x12, 0x83, + 0x7c, 0x21, 0xe5, 0xf4, 0x97, 0x73, 0x6d, 0x93, 0x7c, 0x07, 0x34, 0x23, + 0x3e, 0xe2, 0xd9, 0x32, 0x54, 0xae, 0x67, 0x20, 0xaf, 0x4b, 0xd3, 0xaf, + 0x5a, 0x3b, 0x6e, 0xee, 0xfc, 0xae, 0xb4, 0xe7, 0xdd, 0x3b, 0xad, 0x7a, + 0xb3, 0x7a, 0x25, 0xb4, 0x5e, 0xc8, 0xab, 0xd1, 0x1b, 0x57, 0xaa, 0x6e, + 0xba, 0xec, 0xbd, 0xdb, 0x64, 0x55, 0xe7, 0x69, 0x6a, 0xb5, 0x4f, 0xfb, + 0xa3, 0xab, 0x56, 0xf3, 0x19, 0x54, 0x84, 0x76, 0x33, 0x4c, 0x52, 0x04, + 0x08, 0x3a, 0x22, 0x95, 0x43, 0xb8, 0x94, 0x12, 0xe2, 0x0a, 0xb2, 0x18, + 0x0c, 0x09, 0x30, 0x1b, 0x0c, 0x0d, 0x80, 0x15, 0xcc, 0x34, 0x53, 0xa2, + 0x8d, 0xaa, 0xf0, 0x8e, 0x4c, 0x1f, 0x70, 0x14, 0x8c, 0x0a, 0xc0, 0x57, + 0x4c, 0x2d, 0xf0, 0x3d, 0x0c, 0x07, 0x80, 0x00, 0xcc, 0x69, 0xc0, 0x57, + 0x4c, 0x06, 0xb0, 0x2d, 0x0c, 0x12, 0x60, 0x1d, 0x4c, 0x20, 0x90, 0x96, + 0x8e, 0xf6, 0xa7, 0x71, 0x0c, 0x5b, 0x70, 0x6e, 0x0c, 0x15, 0x60, 0x55, + 0xcc, 0xab, 0x22, 0x32, 0x91, 0x1c, 0xc4, 0x8a, 0xc3, 0x6f, 0x77, 0x4d, + 0xb2, 0x1d, 0x30, 0xb0, 0x24, 0x86, 0x84, 0x6b, 0xf0, 0xf9, 0x85, 0x03, + 0xc6, 0x3c, 0x01, 0xa7, 0x41, 0x80, 0x45, 0x61, 0x63, 0xb1, 0xff, 0x05, + 0x00, 0xa2, 0xc1, 0x00, 0x34, 0x98, 0x11, 0x0e, 0x93, 0x00, 0x80, 0x21, + 0x86, 0x94, 0xac, 0x06, 0x61, 0x20, 0x89, 0x09, 0x1a, 0x52, 0x32, 0xac, + 0xf6, 0xea, 0x22, 0x00, 0xa6, 0xff, 0xfb, 0xd4, 0x60, 0x3f, 0x0c, 0xd7, + 0x41, 0x70, 0x44, 0x0b, 0xfc, 0x43, 0x74, 0x51, 0x4d, 0xd8, 0x41, 0x30, + 0x22, 0x6e, 0x1c, 0x51, 0xbd, 0x14, 0x6f, 0xf1, 0xad, 0xc9, 0x28, 0xb8, + 0x21, 0x44, 0xf0, 0x95, 0xb8, 0xbc, 0xad, 0xa4, 0xc5, 0x65, 0x93, 0x0f, + 0xc5, 0xcb, 0xec, 0x46, 0x1a, 0x7d, 0x9b, 0xc9, 0x64, 0x03, 0x13, 0x96, + 0x4a, 0x23, 0x54, 0x40, 0x20, 0x02, 0x41, 0x41, 0x08, 0x58, 0x28, 0x21, + 0x9a, 0xf0, 0x0f, 0x86, 0xc1, 0xb8, 0x74, 0xa4, 0xd4, 0x2c, 0x5d, 0x33, + 0x34, 0x0d, 0x62, 0x7a, 0x10, 0x78, 0x89, 0x12, 0x75, 0xf7, 0x4a, 0xbc, + 0xab, 0xb5, 0xc2, 0x37, 0xc5, 0xca, 0xd1, 0x71, 0x45, 0x3a, 0x73, 0x43, + 0x65, 0x78, 0x89, 0xfd, 0xae, 0x6f, 0x7b, 0xe3, 0xb4, 0x8f, 0xa7, 0xd6, + 0x5a, 0xb9, 0xe2, 0x2f, 0xff, 0xfb, 0xee, 0xd2, 0x67, 0xde, 0x3e, 0x77, + 0xaa, 0x88, 0x95, 0xe1, 0xe1, 0xd2, 0xe3, 0x8c, 0x65, 0xb2, 0x49, 0x52, + 0xcf, 0x63, 0x86, 0x88, 0x01, 0x39, 0x6e, 0xef, 0x74, 0x14, 0xbd, 0xfa, + 0xd0, 0x7e, 0xd6, 0xc4, 0x66, 0x52, 0xc4, 0x43, 0x74, 0x6c, 0x53, 0x2d, + 0x1f, 0xfa, 0xaa, 0x36, 0x29, 0xcf, 0x05, 0x1a, 0xba, 0x25, 0x75, 0xd9, + 0xad, 0xfd, 0x7b, 0xed, 0xed, 0x7b, 0x32, 0x54, 0xae, 0x89, 0x6b, 0x11, + 0xf4, 0xfa, 0xae, 0xbe, 0xf7, 0xfd, 0xef, 0x4b, 0xbf, 0x6b, 0xf6, 0xab, + 0xb1, 0xec, 0x8a, 0x9d, 0xa9, 0x22, 0x23, 0x3d, 0xed, 0xab, 0xb5, 0x0a, + 0xa4, 0x77, 0x72, 0x1c, 0x8c, 0x06, 0x88, 0x54, 0x63, 0x06, 0x73, 0x0e, + 0x80, 0x05, 0x19, 0x00, 0x18, 0x08, 0x60, 0x03, 0x18, 0x12, 0x40, 0x32, + 0x18, 0x53, 0x20, 0x83, 0x1a, 0xa2, 0xe0, 0x96, 0x00, 0x82, 0xd6, 0x30, + 0x24, 0x00, 0x88, 0x16, 0x05, 0x6c, 0x1a, 0x01, 0x41, 0x8a, 0x2e, 0x0b, + 0xb9, 0x82, 0xd8, 0x01, 0x49, 0x82, 0x5e, 0x08, 0xe1, 0x85, 0x54, 0x19, + 0x69, 0xd4, 0x46, 0x13, 0x81, 0x89, 0x5c, 0x0c, 0x89, 0x83, 0xfe, 0x04, + 0xf1, 0x99, 0x93, 0x60, 0xe5, 0x39, 0x85, 0x0a, 0x86, 0x7e, 0xbb, 0x19, + 0xfc, 0x34, 0x98, 0xc2, 0x27, 0x21, 0xbb, 0x42, 0x06, 0x02, 0x16, 0x18, + 0x80, 0x66, 0x85, 0x61, 0x83, 0x23, 0x10, 0xb6, 0x0c, 0x42, 0x81, 0x20, + 0x03, 0x22, 0xf9, 0x71, 0x1b, 0x40, 0x10, 0x14, 0x20, 0x12, 0xc5, 0x1a, + 0x89, 0x8a, 0x92, 0x60, 0xe1, 0x5b, 0x78, 0xe8, 0x4a, 0x21, 0x4b, 0x25, + 0x36, 0x60, 0x15, 0x3a, 0x68, 0x12, 0xee, 0x3e, 0x51, 0xc8, 0xfb, 0x17, + 0x8b, 0x5d, 0x81, 0xdf, 0xe9, 0x4a, 0xb6, 0x45, 0x69, 0x5d, 0x08, 0xd0, + 0xe3, 0x19, 0xca, 0xcc, 0x81, 0x1c, 0x51, 0xd2, 0x91, 0x78, 0x93, 0x1d, + 0xa2, 0xd0, 0xbe, 0x98, 0xf3, 0x30, 0x2f, 0x95, 0x9f, 0x37, 0x32, 0x63, + 0xcb, 0x1e, 0x26, 0xc4, 0x8b, 0x19, 0x9e, 0x3a, 0x75, 0xd1, 0x45, 0x02, + 0xb3, 0x15, 0x9a, 0xa0, 0xc9, 0xbb, 0xde, 0xb7, 0x67, 0x65, 0x7d, 0x6e, + 0x68, 0xba, 0x15, 0xd2, 0xd2, 0xf5, 0x23, 0xfe, 0xdf, 0xf4, 0x7b, 0xdb, + 0xa9, 0x26, 0x5d, 0x75, 0xaa, 0xf5, 0xb3, 0xfb, 0xb5, 0x77, 0x5f, 0x52, + 0xd0, 0xa0, 0xd4, 0xb5, 0xaa, 0xa4, 0xdb, 0x45, 0xeb, 0x35, 0x2e, 0x11, + 0x08, 0xee, 0x77, 0x8d, 0xac, 0xe7, 0x1b, 0xde, 0x2d, 0x7c, 0x4d, 0x11, + 0x12, 0x4d, 0x40, 0x9f, 0x56, 0xd1, 0x78, 0xdf, 0xf2, 0x0e, 0x39, 0x7f, + 0x2d, 0xc8, 0xf7, 0x49, 0xd6, 0xb7, 0x7f, 0xff, 0xfa, 0xed, 0x7d, 0xbe, + 0x9a, 0xf5, 0xab, 0x7f, 0x6e, 0xbf, 0xbd, 0xf7, 0x7f, 0xff, 0x4f, 0x6c, + 0xcf, 0xa7, 0xaf, 0xac, 0xee, 0xd5, 0xc9, 0x26, 0xea, 0x94, 0x1a, 0x5c, + 0xae, 0x44, 0x61, 0xd3, 0x0b, 0x98, 0x69, 0x85, 0x50, 0x26, 0x80, 0x33, + 0x0f, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x00, 0x28, 0xc8, 0x00, 0xc0, 0x04, 0x05, 0x4c, 0x13, 0x02, 0x88, + 0xc7, 0x2d, 0xf4, 0x4f, 0xba, 0x48, 0x98, 0xc3, 0x74, 0x15, 0x4c, 0x13, + 0x04, 0x6c, 0xc6, 0x20, 0x31, 0x8c, 0x0d, 0x03, 0x3c, 0xcf, 0x70, 0xc4, + 0x8c, 0x19, 0xc0, 0x24, 0xc3, 0xe0, 0x10, 0x8c, 0x8d, 0xc5, 0x5c, 0xe3, + 0x80, 0x66, 0x8c, 0xc7, 0xc5, 0x02, 0x30, 0x78, 0x2d, 0xc3, 0x01, 0x44, + 0x01, 0x33, 0x01, 0x08, 0x01, 0x83, 0x01, 0x04, 0x04, 0x33, 0x02, 0x7c, + 0x0d, 0xe3, 0x01, 0xc0, 0x01, 0xe0, 0x08, 0x00, 0x62, 0x30, 0x25, 0x01, + 0xc1, 0x1d, 0x03, 0x00, 0x24, 0x30, 0x02, 0x80, 0x35, 0x1a, 0x00, 0xa0, + 0x84, 0x01, 0x23, 0x01, 0x14, 0x01, 0x03, 0x06, 0xcc, 0x01, 0x33, 0x00, + 0x44, 0x00, 0x24, 0x15, 0x51, 0xd6, 0x0a, 0x60, 0x08, 0x80, 0x08, 0x15, + 0x00, 0x15, 0x3e, 0x82, 0xa0, 0x04, 0x18, 0x09, 0xc0, 0x66, 0x04, 0x00, + 0x54, 0xf0, 0xb5, 0xfa, 0xd3, 0x8a, 0x28, 0x35, 0xe6, 0x2e, 0xce, 0xa2, + 0x3c, 0x9e, 0x55, 0x68, 0x74, 0x39, 0xb5, 0x1d, 0x6a, 0x67, 0xaa, 0x75, + 0x88, 0x4f, 0xa1, 0x21, 0xe5, 0x49, 0x5c, 0xba, 0x2a, 0x96, 0xd4, 0x2e, + 0xdd, 0x2e, 0x20, 0xa6, 0x93, 0x2c, 0x70, 0xae, 0xad, 0x6a, 0x8f, 0x05, + 0x8d, 0xe3, 0xed, 0x30, 0xc6, 0xd3, 0xba, 0xe6, 0xd2, 0x5b, 0xfc, 0xb6, + 0x57, 0x3b, 0xbe, 0x35, 0xff, 0xd6, 0x35, 0x4c, 0xfd, 0x6f, 0x5a, 0xf5, + 0xdd, 0x3c, 0xe4, 0x43, 0x3d, 0x74, 0xa9, 0x86, 0xc3, 0x4f, 0xbc, 0xb6, + 0xf4, 0xad, 0x99, 0x22, 0x95, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xc7, + 0x48, 0x3f, 0x45, 0x9b, 0xdf, 0x7a, 0xe0, 0x5e, 0x2e, 0x08, 0x42, 0x68, + 0x45, 0x6e, 0x1c, 0x61, 0xc1, 0x14, 0x4f, 0xf1, 0xad, 0xc1, 0xe0, 0xb7, + 0xe0, 0x01, 0xb1, 0xa1, 0xb8, 0xbd, 0x1d, 0xb7, 0x0b, 0x35, 0xcb, 0xb1, + 0x82, 0xea, 0x50, 0x84, 0x2a, 0x1b, 0x01, 0xe0, 0x00, 0x78, 0x0a, 0x4a, + 0x6e, 0x61, 0x9f, 0x33, 0xc7, 0xb6, 0x2b, 0x67, 0x97, 0x22, 0xd9, 0xe6, + 0xd5, 0xa6, 0x6e, 0x8d, 0xb2, 0x16, 0xa5, 0xee, 0xaf, 0xd5, 0xec, 0xb5, + 0x46, 0x55, 0x33, 0xb2, 0x94, 0xc4, 0xb8, 0xa8, 0xe3, 0x98, 0x3c, 0x22, + 0xe7, 0xa0, 0x95, 0x14, 0xac, 0xe8, 0x54, 0x11, 0x34, 0xb9, 0xdc, 0xf4, + 0xd7, 0xd7, 0xa2, 0xf5, 0xfa, 0xb7, 0xaf, 0xd6, 0x95, 0xbe, 0x8d, 0xa2, + 0xfd, 0xd6, 0xbb, 0x75, 0xd3, 0xaf, 0x5a, 0x69, 0x6d, 0x5f, 0xd6, 0xb5, + 0x46, 0x1d, 0x87, 0xce, 0xc7, 0xb0, 0x89, 0x86, 0x9a, 0xca, 0x1c, 0xa8, + 0x7e, 0x54, 0x04, 0x0e, 0x00, 0xe8, 0x00, 0x30, 0x04, 0x73, 0x00, 0x18, + 0x0d, 0x43, 0x04, 0xbc, 0xcb, 0xb3, 0x26, 0x84, 0x2d, 0x23, 0x01, 0x6c, + 0x08, 0x53, 0x00, 0x88, 0x17, 0x63, 0x01, 0x84, 0x17, 0xd3, 0x01, 0x30, + 0x12, 0xc3, 0x05, 0x0c, 0x4f, 0x73, 0x02, 0x64, 0x01, 0x53, 0x03, 0xcc, + 0x0a, 0x73, 0x09, 0x18, 0x49, 0x23, 0x88, 0x66, 0xf8, 0x63, 0x1d, 0x58, + 0x17, 0x43, 0x05, 0x2c, 0x0a, 0xd3, 0x35, 0x39, 0x0c, 0x7e, 0x47, 0x32, + 0x01, 0x08, 0xca, 0x34, 0x53, 0x19, 0x03, 0xcb, 0x70, 0x01, 0x30, 0x1d, + 0xd4, 0x0c, 0x05, 0x11, 0x08, 0x84, 0x65, 0x08, 0x53, 0x17, 0x00, 0x8c, + 0x44, 0xe5, 0x37, 0x1a, 0x78, 0x18, 0x07, 0x62, 0x06, 0x04, 0x00, 0x48, + 0x8c, 0x44, 0x19, 0x30, 0x08, 0x81, 0xc1, 0x4b, 0xc3, 0x50, 0x8f, 0x08, + 0x97, 0x8a, 0xbd, 0x58, 0x23, 0x73, 0x45, 0x50, 0x34, 0x8b, 0xb0, 0x5a, + 0x71, 0xcd, 0x4f, 0x72, 0x9e, 0xea, 0xd1, 0x94, 0xca, 0x5a, 0x25, 0x4b, + 0x6f, 0xc5, 0x5a, 0x97, 0xe7, 0x86, 0xa1, 0x83, 0x29, 0x13, 0xc1, 0xc0, + 0x16, 0xb2, 0x44, 0xe0, 0x5e, 0xcc, 0x87, 0x19, 0x44, 0xd8, 0xd8, 0x9e, + 0x95, 0x03, 0x23, 0xc4, 0xa2, 0x6a, 0x73, 0xcc, 0x9d, 0x94, 0x6f, 0x41, + 0x2c, 0x7f, 0x5e, 0xbd, 0x0a, 0x3a, 0x17, 0x5b, 0x56, 0xb6, 0x5b, 0xe8, + 0xa9, 0x99, 0xd6, 0xb7, 0xd4, 0xf7, 0xf4, 0xd9, 0x55, 0xe7, 0xb6, 0xaa, + 0xba, 0xfb, 0xbb, 0x32, 0xba, 0x4b, 0xba, 0xea, 0xd4, 0xb6, 0xd3, 0xb2, + 0xfa, 0x9d, 0x7b, 0xa9, 0x4a, 0xb2, 0xdd, 0x5b, 0xdd, 0x9b, 0x7b, 0xb3, + 0x29, 0x14, 0x0e, 0x1c, 0xc0, 0xbb, 0x8f, 0xaa, 0x39, 0xdc, 0xbe, 0xd5, + 0xca, 0x7d, 0x5d, 0xa4, 0xb7, 0xdd, 0x2a, 0xd7, 0x0a, 0x04, 0x16, 0x10, + 0x94, 0x63, 0x7e, 0xca, 0x4a, 0x60, 0x26, 0x43, 0x94, 0x7a, 0x52, 0xe9, + 0xa0, 0xdd, 0x57, 0x30, 0xb1, 0x89, 0xe5, 0xda, 0xa2, 0x3b, 0x6d, 0x3e, + 0x3a, 0x7a, 0x7f, 0xbd, 0xf8, 0x9e, 0xbd, 0xb6, 0xaa, 0x88, 0xe2, 0x3a, + 0x1f, 0x4c, 0xff, 0xa2, 0x6e, 0xd7, 0xb4, 0xc4, 0x43, 0x8d, 0xb9, 0x8a, + 0xef, 0x9b, 0xb7, 0x49, 0x8b, 0x9a, 0x95, 0x84, 0xe4, 0xdf, 0xe4, 0x64, + 0x36, 0xf6, 0xac, 0xb7, 0x1d, 0x35, 0xcc, 0x2c, 0x52, 0xdf, 0xb7, 0x51, + 0x37, 0x37, 0x25, 0x42, 0x1b, 0xd5, 0x1b, 0xb8, 0xb9, 0xe2, 0xa5, 0x89, + 0x95, 0x90, 0x27, 0x34, 0x76, 0xb8, 0x88, 0x22, 0x03, 0xc8, 0xc1, 0xd1, + 0x90, 0x0e, 0x06, 0xd3, 0x10, 0x53, 0x51, 0x4c, 0xcb, 0x8e, 0x4e, 0x0b, + 0x8c, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x01, 0xf4, 0x03, 0x01, 0x60, 0x2f, 0x30, 0x19, 0x08, 0x21, 0x4a, + 0x33, 0x31, 0xb6, 0x20, 0x03, 0x03, 0x80, 0x4f, 0x30, 0x4f, 0x05, 0x93, + 0x0d, 0xd0, 0xa2, 0x30, 0x7f, 0x06, 0x33, 0x21, 0x33, 0xb2, 0x30, 0x80, + 0x00, 0xa3, 0x03, 0x41, 0x40, 0x30, 0xa7, 0x46, 0x13, 0x39, 0x42, 0xeb, + 0x93, 0x12, 0x04, 0x30, 0xb3, 0x02, 0x70, 0x0d, 0x83, 0x01, 0x8c, 0x0d, + 0xd3, 0x00, 0xd0, 0x04, 0x43, 0x00, 0x7c, 0x00, 0x53, 0x00, 0xe8, 0x08, + 0x11, 0xe0, 0x22, 0xf3, 0x5d, 0xe6, 0x09, 0x68, 0x00, 0x00, 0x20, 0x0d, + 0x80, 0xc0, 0x07, 0x22, 0x88, 0x08, 0x01, 0xd3, 0x01, 0x28, 0x07, 0xb3, + 0x05, 0x80, 0x05, 0xa0, 0xc0, 0x06, 0x57, 0x52, 0x26, 0xb7, 0x63, 0x00, + 0x14, 0x02, 0x21, 0x60, 0x04, 0x55, 0xc8, 0x88, 0x00, 0x91, 0xc0, 0x4a, + 0x4c, 0x01, 0xd0, 0x02, 0x56, 0x42, 0x63, 0xc3, 0x11, 0x05, 0xb4, 0x8c, + 0x7a, 0xb9, 0x11, 0x29, 0xd5, 0x4a, 0xb9, 0x72, 0x0e, 0xab, 0x3d, 0x65, + 0x89, 0x1b, 0x79, 0xcb, 0x44, 0x26, 0x05, 0x1a, 0x69, 0x70, 0x4c, 0x96, + 0xa9, 0x11, 0x5c, 0xa7, 0xb4, 0x29, 0xa0, 0x9b, 0xcc, 0xac, 0x2c, 0x15, + 0xb2, 0x92, 0x97, 0xad, 0x6a, 0xed, 0xd6, 0xa3, 0xc7, 0xd7, 0xde, 0x2e, + 0xdd, 0xf7, 0x4c, 0xe7, 0xeb, 0x74, 0xdf, 0xf8, 0xdf, 0xc6, 0xbf, 0xff, + 0xfd, 0x40, 0x24, 0x47, 0x8c, 0x69, 0x44, 0x3d, 0x65, 0xb2, 0x15, 0x7a, + 0xfe, 0xc5, 0xd5, 0xee, 0xb0, 0x5c, 0x49, 0x76, 0x44, 0xfa, 0xd8, 0x3c, + 0x30, 0x1f, 0x45, 0xa7, 0x4b, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xc6, + 0xb6, 0x3f, 0x46, 0x13, 0xdf, 0x7a, 0xe0, 0x63, 0x2d, 0xd8, 0x31, 0x64, + 0x25, 0x6e, 0x18, 0xd8, 0xcb, 0x1e, 0x6f, 0x7d, 0xeb, 0x81, 0xc0, 0xb7, + 0xa0, 0xcd, 0x31, 0x21, 0xb8, 0xe9, 0xaa, 0x67, 0x9d, 0x4b, 0xf7, 0x71, + 0xce, 0xd6, 0xf2, 0x26, 0x62, 0x66, 0x4c, 0x6e, 0x53, 0x94, 0xae, 0x66, + 0x05, 0x01, 0xc4, 0x23, 0x3f, 0x19, 0xce, 0x6b, 0x9c, 0xe8, 0x8e, 0x87, + 0x23, 0x50, 0x7d, 0x55, 0xd7, 0xb2, 0xa9, 0xee, 0xed, 0x57, 0x64, 0x9d, + 0xf7, 0xb3, 0xa7, 0xbf, 0x5e, 0xc8, 0xb3, 0xb9, 0x9d, 0x9d, 0x11, 0xd5, + 0xda, 0xb6, 0x7a, 0x2d, 0xeb, 0xd9, 0x2e, 0xaa, 0xfd, 0x17, 0x27, 0x7a, + 0xba, 0x32, 0xb2, 0x4d, 0x47, 0xfe, 0xe5, 0x78, 0x7d, 0x27, 0x5a, 0x1d, + 0x8e, 0x77, 0x63, 0x8d, 0x71, 0x77, 0x05, 0x16, 0x18, 0x0d, 0x62, 0x0b, + 0x0d, 0x18, 0x18, 0x02, 0x7a, 0xa4, 0x41, 0x80, 0xc0, 0x07, 0x98, 0x0d, + 0x81, 0x61, 0x83, 0x72, 0xe9, 0x9a, 0x9f, 0x07, 0x91, 0x82, 0x80, 0x16, + 0xad, 0xb3, 0x0c, 0x00, 0x38, 0x30, 0x50, 0x06, 0xc3, 0x20, 0xa1, 0xa5, + 0x22, 0x0b, 0x23, 0x01, 0xe0, 0xcb, 0x30, 0x69, 0x36, 0x43, 0x1b, 0x22, + 0x13, 0x83, 0x01, 0x24, 0x1c, 0xc0, 0xa0, 0x16, 0x26, 0x01, 0x30, 0x0b, + 0x46, 0x00, 0x48, 0x05, 0x21, 0x40, 0x02, 0xcc, 0x00, 0x80, 0x2b, 0x03, + 0x80, 0x2a, 0x55, 0xa0, 0x90, 0x0d, 0xc1, 0x40, 0xab, 0x0f, 0x00, 0x24, + 0x60, 0x00, 0x80, 0x14, 0x24, 0x01, 0x99, 0x74, 0xc1, 0x00, 0x24, 0x18, + 0x18, 0xc0, 0x1b, 0xa8, 0x23, 0xcc, 0x80, 0xc9, 0x51, 0x50, 0x01, 0xb0, + 0x48, 0x00, 0x6c, 0xe9, 0x1e, 0x8c, 0x05, 0x80, 0x17, 0x88, 0x80, 0x62, + 0x65, 0xb0, 0xcd, 0x3d, 0xc9, 0x49, 0x48, 0xb8, 0xb2, 0x18, 0xbb, 0x84, + 0x85, 0xcb, 0x04, 0x1f, 0x93, 0xd8, 0x9e, 0xbb, 0x84, 0xc9, 0x69, 0xd9, + 0xaf, 0x32, 0x74, 0xd4, 0x59, 0x37, 0x88, 0x7a, 0x91, 0x3e, 0x38, 0x62, + 0x1e, 0x08, 0xf5, 0xdd, 0x4b, 0x39, 0x77, 0x06, 0x6d, 0xb7, 0xb9, 0x5e, + 0xf3, 0x5a, 0x77, 0x3c, 0xb5, 0xb9, 0x67, 0x38, 0xfe, 0x52, 0xe2, 0x01, + 0x70, 0x01, 0xe9, 0xf0, 0x0c, 0x69, 0xa2, 0xc1, 0x76, 0x76, 0xce, 0xf8, + 0x90, 0x8a, 0x79, 0x14, 0x7f, 0xff, 0xfa, 0x95, 0xf8, 0xb8, 0x00, 0xc8, + 0x88, 0x00, 0x2a, 0x63, 0xa5, 0xd6, 0x35, 0x44, 0xbe, 0xee, 0x65, 0x77, + 0x6a, 0xbf, 0xac, 0x92, 0x58, 0xcc, 0x45, 0xf2, 0xb2, 0xa3, 0x36, 0x7a, + 0xca, 0xdc, 0xe9, 0x14, 0xe4, 0x43, 0xb3, 0x10, 0xc2, 0x49, 0x1a, 0x0f, + 0x8e, 0xc5, 0xe7, 0xf1, 0x61, 0x2c, 0x17, 0x54, 0x51, 0x63, 0x84, 0x9a, + 0x0a, 0x90, 0x79, 0x79, 0x83, 0xc8, 0xa5, 0xf9, 0xbb, 0xab, 0x8b, 0x76, + 0xa4, 0xab, 0xee, 0xea, 0x22, 0x97, 0x8f, 0x9f, 0xba, 0xe2, 0xa3, 0x99, + 0xf6, 0xfe, 0xa6, 0xfa, 0xed, 0xa6, 0xeb, 0xaf, 0x9f, 0x4a, 0xf4, 0x8e, + 0x3e, 0x79, 0xfb, 0x98, 0xfe, 0xea, 0x6b, 0xe6, 0xde, 0x13, 0x61, 0xfa, + 0x7e, 0x85, 0xcc, 0xe7, 0x12, 0x82, 0x90, 0x90, 0x29, 0xb1, 0xac, 0xa6, + 0x20, 0x91, 0x31, 0x05, 0x35, 0x14, 0xcc, 0xb8, 0xe4, 0xe0, 0xb8, 0xca, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x01, 0xe4, 0x03, 0x04, 0x40, 0x1f, 0x30, 0x4f, 0x01, 0x43, 0x13, + 0x66, 0x77, 0x3c, 0x1c, 0x0e, 0xc3, 0x0a, 0xa0, 0x3f, 0x30, 0x55, 0x13, + 0xa3, 0x03, 0x11, 0x47, 0x30, 0x57, 0x07, 0xe3, 0x3f, 0xb1, 0x3a, 0x30, + 0xae, 0x04, 0x53, 0x11, 0x10, 0xf6, 0x31, 0xa8, 0x4e, 0xb3, 0x74, 0x47, + 0x12, 0xf3, 0x15, 0xb0, 0x33, 0x13, 0x08, 0x24, 0x0c, 0x23, 0x00, 0x38, + 0x01, 0x13, 0x00, 0xfc, 0x00, 0xa1, 0x10, 0x0b, 0x26, 0x02, 0xf8, 0x08, + 0xc2, 0xc0, 0x7e, 0x01, 0x40, 0x08, 0x18, 0x02, 0xe4, 0xc0, 0xdb, 0x00, + 0x68, 0x30, 0x03, 0xa3, 0x00, 0x64, 0x01, 0xe0, 0xc0, 0x2c, 0xc4, 0x80, + 0x32, 0x30, 0x10, 0xc0, 0xb8, 0x30, 0x43, 0x40, 0x8f, 0x0e, 0x00, 0xd9, + 0xfa, 0x30, 0x03, 0x40, 0x07, 0x69, 0x60, 0xc0, 0x0d, 0x08, 0x00, 0x14, + 0x72, 0xc6, 0x00, 0x0a, 0x30, 0x1d, 0xc1, 0x38, 0x30, 0x15, 0x80, 0x16, + 0x92, 0x21, 0xf7, 0x2a, 0x24, 0xaa, 0x69, 0x8a, 0x18, 0x22, 0x26, 0x54, + 0xa5, 0xb2, 0x92, 0x13, 0xf8, 0x2a, 0x23, 0xa9, 0x9a, 0x1b, 0x3d, 0x72, + 0xbc, 0xaa, 0x8a, 0x9c, 0xba, 0xb0, 0x4f, 0x92, 0xf9, 0x6d, 0x31, 0xdf, + 0x33, 0xe7, 0x53, 0x97, 0x6d, 0x69, 0xbe, 0xb9, 0xdc, 0x7b, 0x6a, 0x0b, + 0xdd, 0xc2, 0xb3, 0xd7, 0x1a, 0x7d, 0xfc, 0x3c, 0xc5, 0xef, 0xe9, 0x2c, + 0x5c, 0x78, 0xb8, 0xde, 0xef, 0x9d, 0xeb, 0xff, 0x5f, 0xbf, 0x33, 0x10, + 0x75, 0xe4, 0x4a, 0x4a, 0xcb, 0x6f, 0xef, 0xea, 0x20, 0xc6, 0xec, 0x92, + 0xaf, 0x6b, 0x1a, 0x5d, 0xa5, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0x47, + 0x27, 0x3f, 0x45, 0x93, 0xdf, 0x7a, 0xe0, 0x46, 0xc5, 0xd8, 0xca, 0x48, + 0x02, 0x4d, 0x1e, 0x0d, 0xc1, 0x0e, 0x0f, 0xf5, 0x6d, 0xc2, 0x1f, 0xb8, + 0x20, 0x05, 0xa1, 0xa1, 0xb8, 0x16, 0x2c, 0xe4, 0x11, 0x08, 0x07, 0x9c, + 0x21, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x4a, 0xd2, 0x00, 0xac, 0x11, 0x57, + 0x65, 0xd5, 0xff, 0xff, 0xea, 0x57, 0xad, 0x91, 0xc8, 0xe1, 0x8b, 0x35, + 0x0e, 0x87, 0x49, 0x1c, 0xcc, 0x0c, 0xce, 0x45, 0x9d, 0x66, 0x3e, 0x30, + 0x32, 0xc2, 0x21, 0xa0, 0xb8, 0x18, 0x4e, 0x18, 0x24, 0x70, 0xa9, 0x16, + 0x38, 0xf8, 0xf7, 0x18, 0x95, 0x9f, 0x40, 0xbb, 0x02, 0xa1, 0x43, 0x02, + 0xe2, 0x21, 0xe5, 0x1a, 0xa3, 0x6f, 0xff, 0xff, 0xaf, 0x95, 0xab, 0x7c, + 0x71, 0x80, 0x9c, 0x00, 0xf9, 0x81, 0x32, 0x03, 0x09, 0x84, 0xbc, 0x0e, + 0x09, 0xad, 0x38, 0x02, 0x81, 0x82, 0x4c, 0x00, 0xa9, 0x80, 0x86, 0x11, + 0x89, 0x85, 0x96, 0x0d, 0xf1, 0x80, 0x9a, 0x05, 0x39, 0x8c, 0x10, 0x0e, + 0x00, 0x38, 0x3a, 0x33, 0x08, 0x40, 0x11, 0xf3, 0x10, 0x94, 0x12, 0x33, + 0xe8, 0xe2, 0xc2, 0x83, 0x42, 0x74, 0x18, 0x40, 0x10, 0xc9, 0x26, 0xab, + 0x94, 0x26, 0x74, 0x04, 0x01, 0xc7, 0x59, 0x81, 0x8d, 0x98, 0x41, 0xa8, + 0xd5, 0x4c, 0x28, 0x4e, 0x4c, 0x57, 0x0b, 0x00, 0x40, 0xf1, 0x86, 0xa0, + 0xb0, 0x18, 0x8a, 0x59, 0x06, 0x24, 0x85, 0x07, 0x0d, 0x9a, 0xc4, 0xc3, + 0x3a, 0x4f, 0x12, 0x80, 0x13, 0x86, 0x0d, 0x82, 0x68, 0x6a, 0x80, 0x13, + 0x00, 0x01, 0xb3, 0x0c, 0x55, 0xb3, 0x36, 0x81, 0xf4, 0xba, 0x04, 0x00, + 0x2e, 0xf4, 0x84, 0x50, 0x05, 0xae, 0xfb, 0xb5, 0x95, 0x73, 0x39, 0x19, + 0x94, 0xd8, 0x76, 0x90, 0x5b, 0x7d, 0x67, 0x53, 0x99, 0x67, 0x53, 0xaf, + 0x0d, 0xb7, 0x99, 0x93, 0x8f, 0x18, 0x04, 0xb3, 0x86, 0x89, 0xa2, 0x68, + 0xc5, 0x43, 0xe9, 0xad, 0x92, 0x5c, 0xd2, 0x55, 0xa4, 0x79, 0x8e, 0x73, + 0x5a, 0xe2, 0x6a, 0x4b, 0xd5, 0x38, 0x96, 0x68, 0xc8, 0x45, 0xf6, 0xdd, + 0xec, 0x73, 0x2b, 0xa6, 0xde, 0x6d, 0x33, 0x0e, 0x48, 0x9d, 0x0f, 0xb9, + 0xdb, 0x08, 0xdb, 0xed, 0xee, 0x9a, 0x73, 0x99, 0x3d, 0x33, 0x83, 0xf1, + 0xf1, 0x31, 0x53, 0xdc, 0xd7, 0x11, 0x2f, 0xba, 0x75, 0xb3, 0x9e, 0x26, + 0xad, 0xbe, 0xd9, 0x7f, 0x13, 0x52, 0xe6, 0x43, 0xaf, 0x96, 0xd3, 0x77, + 0xcc, 0x55, 0x67, 0x96, 0xbd, 0x15, 0x9c, 0xd8, 0xa9, 0x85, 0xcd, 0xcf, + 0x9c, 0x08, 0x0e, 0x71, 0x98, 0x02, 0xac, 0x57, 0x29, 0x0d, 0x4b, 0x33, + 0x56, 0xe1, 0x8c, 0xa4, 0x18, 0x5a, 0x32, 0xa0, 0x6b, 0x31, 0xc0, 0x5b, + 0x46, 0xca, 0x9c, 0x54, 0x06, 0x40, 0xca, 0x36, 0xae, 0x74, 0x34, 0x17, + 0xc1, 0xe3, 0xa9, 0x12, 0xcd, 0x85, 0x28, 0x92, 0xea, 0x0b, 0x86, 0x33, + 0x22, 0x94, 0xb8, 0x31, 0xa2, 0x3f, 0x75, 0x78, 0x88, 0x49, 0x96, 0xb4, + 0x34, 0x7a, 0x6a, 0x97, 0x5d, 0xa5, 0xc3, 0x65, 0xc6, 0xf3, 0xb5, 0x53, + 0x2f, 0x5a, 0xcb, 0xb5, 0x21, 0x1e, 0xd5, 0x49, 0x71, 0xb6, 0xb2, 0x8e, + 0xdc, 0x3a, 0xb3, 0xe9, 0x76, 0xb3, 0x6b, 0xd3, 0x63, 0x3b, 0x6b, 0x87, + 0x1d, 0x43, 0x6e, 0x91, 0x28, 0xd8, 0xb3, 0x7a, 0x1e, 0x50, 0xf4, 0x9d, + 0x25, 0x46, 0x20, 0xe3, 0x14, 0x1a, 0x0a, 0x87, 0x65, 0x87, 0x85, 0x85, + 0x49, 0x38, 0x43, 0x10, 0x03, 0x84, 0x24, 0x60, 0x88, 0x28, 0x13, 0x8b, + 0x88, 0x41, 0xd8, 0xe0, 0x6a, 0x98, 0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, + 0x70, 0x5c, 0x65, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x0d, 0x00, 0x1c, 0x30, 0x23, 0x40, 0xf7, 0x30, 0xa4, 0x8a, + 0x7c, 0x35, 0xc9, 0x02, 0x33, 0x30, 0x51, 0x00, 0x88, 0x30, 0x17, 0x41, + 0x30, 0x30, 0xc6, 0x80, 0xa2, 0x30, 0x04, 0x02, 0x68, 0x30, 0x60, 0x41, + 0x65, 0x30, 0x4b, 0xc1, 0x18, 0x30, 0x5d, 0x41, 0x49, 0x31, 0x12, 0x82, + 0xea, 0x3f, 0x3a, 0xc8, 0xde, 0x32, 0x8c, 0x83, 0x1c, 0x30, 0xa1, 0xc1, + 0x2f, 0x3a, 0x82, 0xf0, 0xda, 0xe7, 0xf3, 0x3c, 0x1e, 0x8d, 0x70, 0x16, + 0x34, 0x68, 0xa4, 0xc1, 0x40, 0xa1, 0x03, 0xf4, 0x69, 0x82, 0x58, 0x05, + 0x18, 0x3c, 0x04, 0x2c, 0x2d, 0x0e, 0x18, 0x98, 0x89, 0x4e, 0x69, 0x63, + 0x01, 0x85, 0x80, 0x60, 0x90, 0x20, 0x28, 0x3e, 0xec, 0x97, 0xd5, 0x51, + 0xba, 0xa9, 0xae, 0x66, 0x65, 0xe8, 0x24, 0x22, 0xc3, 0x33, 0x79, 0x61, + 0xf2, 0x50, 0x0b, 0x67, 0x80, 0xda, 0x42, 0xe3, 0x8d, 0x3f, 0xd1, 0x8a, + 0x69, 0x95, 0x61, 0xa4, 0xb1, 0x06, 0xcb, 0x62, 0x4e, 0xb5, 0x26, 0xf7, + 0x48, 0xaf, 0xf8, 0x12, 0x97, 0x82, 0xc9, 0x46, 0x1e, 0x21, 0x38, 0xd4, + 0xb7, 0x0e, 0xc6, 0x5d, 0x9a, 0xc6, 0x22, 0xce, 0x36, 0x52, 0x28, 0x3c, + 0x1c, 0xf6, 0x6b, 0x13, 0x76, 0xbb, 0x75, 0x23, 0x64, 0xc1, 0x9c, 0x3a, + 0x98, 0x48, 0x72, 0x4c, 0x0c, 0x45, 0x61, 0xb7, 0xc7, 0x19, 0xc3, 0x13, + 0xad, 0x5e, 0x51, 0xe6, 0xe6, 0xfb, 0x26, 0xba, 0x76, 0x9b, 0x1e, 0xda, + 0xc5, 0xd3, 0x3b, 0x42, 0x52, 0xa1, 0x91, 0x54, 0xd7, 0x73, 0x57, 0x97, + 0x33, 0x17, 0x1c, 0xc3, 0xc5, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xc7, + 0x59, 0x70, 0x43, 0x03, 0xfc, 0x43, 0x70, 0x4f, 0x66, 0x58, 0x73, 0x4c, + 0x26, 0x5c, 0x1c, 0xc5, 0xc1, 0x0a, 0x2f, 0xf0, 0xcd, 0xd2, 0x05, 0x37, + 0xa0, 0x09, 0xa3, 0x21, 0xb8, 0x12, 0x94, 0x3a, 0xc6, 0x96, 0xe3, 0x47, + 0x58, 0xb1, 0x84, 0xf2, 0xc5, 0xa0, 0xd5, 0x13, 0x00, 0x6e, 0x8c, 0x90, + 0x04, 0xd8, 0x55, 0x45, 0x1a, 0xd7, 0xa9, 0xd9, 0xe8, 0xe5, 0x6b, 0xfe, + 0x53, 0xe5, 0xff, 0x6f, 0xdb, 0x37, 0xe2, 0x29, 0x73, 0xd4, 0x58, 0xcb, + 0x93, 0x28, 0x41, 0x68, 0x1c, 0xa4, 0x45, 0x82, 0x52, 0x73, 0x46, 0xa3, + 0x11, 0x4f, 0x5e, 0xf6, 0xe3, 0xc9, 0x57, 0x71, 0x14, 0xcf, 0x8b, 0x61, + 0x7b, 0x1b, 0x1d, 0xad, 0x4b, 0x6b, 0xd2, 0xbf, 0xf3, 0xa8, 0x67, 0xdf, + 0x2f, 0xff, 0xca, 0x4b, 0x31, 0x8a, 0x38, 0x1e, 0x11, 0x9c, 0x0f, 0x2c, + 0xf8, 0xc1, 0xe0, 0x41, 0x18, 0x04, 0x00, 0x27, 0x18, 0x0a, 0xe0, 0xb3, + 0x98, 0x47, 0x49, 0x7f, 0x1a, 0x56, 0x01, 0xe9, 0x98, 0x1c, 0x80, 0x55, + 0x18, 0x02, 0x20, 0x7d, 0x98, 0x45, 0x00, 0xda, 0x98, 0x11, 0x20, 0x69, + 0x18, 0x4a, 0x80, 0xdf, 0x98, 0x11, 0xc0, 0x82, 0x98, 0x19, 0x40, 0xea, + 0x18, 0x64, 0xe3, 0xbd, 0x9e, 0xc5, 0x16, 0xb4, 0x99, 0x02, 0xa2, 0x35, + 0x98, 0x3b, 0x40, 0xc1, 0x1c, 0x05, 0x26, 0x69, 0xc3, 0xe1, 0x9b, 0xd3, + 0x66, 0x51, 0x6b, 0x08, 0x04, 0x40, 0x60, 0x99, 0x85, 0x17, 0xe2, 0x54, + 0x91, 0xe0, 0x41, 0x6b, 0x09, 0x8c, 0x2b, 0x44, 0xc4, 0x41, 0x73, 0x9a, + 0x0c, 0xc9, 0x82, 0x08, 0xb4, 0xb5, 0xed, 0x08, 0x00, 0x88, 0x9a, 0xce, + 0x92, 0x58, 0x10, 0x84, 0x07, 0x1b, 0xa1, 0x9d, 0xb7, 0x93, 0x51, 0x15, + 0x47, 0x5d, 0xfe, 0x79, 0xe8, 0x64, 0x35, 0xeb, 0x4c, 0x3a, 0xf0, 0xe4, + 0x29, 0x86, 0xb9, 0x78, 0xb8, 0xb5, 0x29, 0x69, 0x21, 0x06, 0xf4, 0x0e, + 0x4c, 0x3e, 0xbc, 0x73, 0x0b, 0x9c, 0x46, 0x29, 0x93, 0x49, 0x49, 0xe1, + 0xdd, 0x6c, 0xd4, 0xed, 0x25, 0xaa, 0xd2, 0x07, 0x28, 0xed, 0x73, 0x2b, + 0x35, 0xe0, 0xce, 0x5d, 0xf9, 0x2a, 0x12, 0xa4, 0x89, 0xe5, 0x08, 0xce, + 0x55, 0xf7, 0x21, 0x31, 0x9d, 0xca, 0x6a, 0xce, 0xc5, 0xe9, 0xcb, 0xb6, + 0xf9, 0xb7, 0xac, 0x6e, 0xe1, 0xcf, 0x0e, 0x7e, 0xdf, 0x2d, 0x3d, 0xd5, + 0xe5, 0x39, 0xd2, 0xc4, 0x69, 0xa8, 0xc8, 0x6f, 0xcf, 0x6d, 0xae, 0xa9, + 0x21, 0x92, 0x91, 0x88, 0x55, 0xd4, 0x57, 0x35, 0x89, 0xd4, 0xbd, 0xfc, + 0x5e, 0x53, 0x9a, 0x64, 0x48, 0x10, 0x12, 0x00, 0x09, 0xd9, 0x71, 0x23, + 0x56, 0x29, 0xe3, 0x19, 0xc5, 0xff, 0x0a, 0x79, 0x45, 0xeb, 0xd6, 0xbf, + 0x43, 0x59, 0xda, 0xf7, 0x21, 0x91, 0xfe, 0x73, 0x7b, 0x70, 0x8d, 0xd6, + 0xc3, 0x6f, 0x7e, 0x7c, 0x96, 0xcc, 0xe0, 0xc6, 0x61, 0x5b, 0xa5, 0xa2, + 0x3a, 0x5a, 0x06, 0x32, 0x8c, 0x2b, 0xa9, 0x52, 0xf1, 0x67, 0x91, 0xb3, + 0x2b, 0x12, 0xb6, 0xf1, 0xcd, 0x7e, 0xe9, 0x28, 0x9d, 0xe3, 0x96, 0x5d, + 0x6b, 0x36, 0xd2, 0xa6, 0x9f, 0x59, 0xd0, 0xdf, 0xbd, 0x8b, 0xaf, 0xb8, + 0xee, 0x9e, 0x79, 0xc7, 0x7d, 0x53, 0x25, 0x40, 0xde, 0x5e, 0x1b, 0xba, + 0x9a, 0x8c, 0xa4, 0x87, 0xbb, 0xee, 0xe6, 0x62, 0xba, 0xbb, 0x5d, 0x15, + 0x22, 0x12, 0xf6, 0xf7, 0x79, 0x53, 0x2a, 0xcc, 0xa1, 0x08, 0x3b, 0x85, + 0x0e, 0x14, 0xd5, 0x10, 0xc4, 0xcc, 0x1e, 0x02, 0xd0, 0x03, 0x89, 0xcc, + 0xb1, 0x0c, 0x4e, 0x98, 0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x70, 0x5c, + 0x64, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x06, 0x00, 0x03, 0x00, 0xac, 0x06, 0x43, 0x00, 0x18, 0x14, 0xd3, + 0x02, 0xf9, 0x33, 0x43, 0x12, 0x88, 0x40, 0x73, 0x01, 0x54, 0x04, 0x23, + 0x02, 0x4c, 0x15, 0x23, 0x07, 0x9c, 0x1a, 0x63, 0x04, 0x60, 0x03, 0xd3, + 0x11, 0xec, 0x12, 0xc3, 0x01, 0x3c, 0x0a, 0x03, 0x00, 0x04, 0x1c, 0xd3, + 0x05, 0xb0, 0x60, 0x03, 0x74, 0x4f, 0x45, 0xa3, 0x0e, 0xe0, 0x40, 0x03, + 0x03, 0xf4, 0x15, 0xb3, 0x80, 0x7a, 0x33, 0x95, 0x73, 0x34, 0x32, 0x04, + 0x8b, 0x01, 0x85, 0x50, 0x90, 0x32, 0x7a, 0x26, 0x3a, 0x84, 0x06, 0x00, + 0x04, 0x2c, 0x4a, 0x5f, 0xa3, 0x01, 0x40, 0x32, 0x34, 0x35, 0x32, 0x81, + 0x15, 0x9a, 0x05, 0x2e, 0xfa, 0x19, 0x4f, 0xbb, 0x06, 0x1a, 0x80, 0x1c, + 0x09, 0x03, 0xdb, 0x96, 0x52, 0xce, 0xa7, 0x95, 0x0e, 0x2f, 0x3c, 0xe4, + 0x15, 0x95, 0x5b, 0x16, 0xec, 0xcc, 0xca, 0x29, 0xb3, 0x7a, 0xa6, 0xe2, + 0x31, 0xca, 0xee, 0xde, 0x85, 0xee, 0xca, 0x52, 0x78, 0x56, 0xcc, 0xf6, + 0xa9, 0x91, 0x46, 0x2b, 0xfd, 0x6f, 0x8d, 0x31, 0xe7, 0xd4, 0x56, 0xd5, + 0x3f, 0xc7, 0x55, 0xe5, 0xff, 0x64, 0x69, 0xd3, 0xf5, 0x0c, 0xb7, 0xd5, + 0x5f, 0xd8, 0x7c, 0xf7, 0xcf, 0xc8, 0x55, 0x37, 0x3f, 0xf7, 0xbf, 0x3a, + 0xeb, 0x99, 0x4b, 0x35, 0xda, 0xd3, 0x67, 0x7d, 0xbf, 0x77, 0x1b, 0xdf, + 0x31, 0xb3, 0x76, 0x4e, 0xef, 0x19, 0x72, 0xf1, 0xff, 0xd7, 0xa6, 0xdd, + 0xff, 0xb9, 0xcc, 0xe7, 0x9d, 0x88, 0x48, 0xc8, 0x4a, 0x13, 0x4f, 0x64, + 0x38, 0x1b, 0x5a, 0xd2, 0x00, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xc6, + 0xbd, 0x6e, 0xc3, 0x13, 0xfb, 0x33, 0x70, 0x48, 0xe5, 0x78, 0x93, 0x48, + 0x26, 0x4c, 0x1c, 0x21, 0xc1, 0x0c, 0x4f, 0xec, 0xcd, 0xc2, 0x37, 0x37, + 0x5f, 0xc5, 0x83, 0x2d, 0xb8, 0x5c, 0x59, 0xaf, 0x5f, 0xa1, 0x4c, 0x7f, + 0x2f, 0xfe, 0x7f, 0xff, 0xff, 0xf9, 0x7a, 0xf5, 0xa4, 0x8d, 0x22, 0xd5, + 0x7d, 0xc4, 0x1c, 0x44, 0xf6, 0xf1, 0xea, 0x27, 0x2f, 0xd5, 0x54, 0xe8, + 0x9a, 0xa9, 0xe4, 0xa1, 0x9c, 0xee, 0x1a, 0x10, 0x06, 0x44, 0x2e, 0x72, + 0x52, 0x2c, 0x39, 0xe4, 0x20, 0x4e, 0xdb, 0x53, 0xa7, 0x5a, 0x9e, 0xf7, + 0x3c, 0x73, 0xc5, 0x2e, 0x67, 0xff, 0xd5, 0xf2, 0xe0, 0x16, 0x1a, 0x81, + 0x52, 0x80, 0x64, 0xc0, 0x63, 0x01, 0xe8, 0xc0, 0x6a, 0x04, 0x94, 0xc0, + 0xf3, 0x47, 0xf8, 0xcc, 0x39, 0x0e, 0x2c, 0xc0, 0x7d, 0x02, 0x58, 0xc0, + 0x7f, 0x0c, 0x30, 0xc3, 0x93, 0x0d, 0x94, 0xc0, 0xde, 0x02, 0xcc, 0xc4, + 0x42, 0x02, 0x70, 0xc0, 0x4b, 0x03, 0xc4, 0xc1, 0x4b, 0x02, 0x1c, 0xc0, + 0xc7, 0x16, 0xac, 0xc5, 0x5e, 0xd4, 0x7c, 0xc1, 0xf8, 0x15, 0x44, 0xc2, + 0x63, 0x04, 0x80, 0xf9, 0x89, 0x0c, 0xd2, 0x50, 0xd6, 0x89, 0x0c, 0x1d, + 0xdc, 0x58, 0xb4, 0x44, 0x34, 0x10, 0x58, 0x11, 0xf8, 0x10, 0x28, 0x82, + 0x40, 0x48, 0x29, 0x7e, 0xd2, 0x68, 0xe9, 0xc4, 0x81, 0xc0, 0x6b, 0xbc, + 0x0a, 0x12, 0xaa, 0xeb, 0x75, 0x7e, 0x30, 0x44, 0x7b, 0x30, 0x72, 0x72, + 0x61, 0xd8, 0xd5, 0x67, 0x11, 0xd8, 0x67, 0x8d, 0xbc, 0xa2, 0x5a, 0xf0, + 0x45, 0x2a, 0x3b, 0xf2, 0x77, 0xfe, 0x27, 0x39, 0x33, 0x03, 0xbb, 0xee, + 0xdb, 0x5b, 0x9e, 0xdc, 0x43, 0x30, 0x70, 0x18, 0xe4, 0x90, 0x42, 0x4a, + 0x24, 0xd8, 0x50, 0x20, 0x23, 0xd1, 0xa6, 0x44, 0xbc, 0xde, 0x5a, 0x74, + 0x8c, 0xda, 0xb7, 0xe3, 0x30, 0xa9, 0x6d, 0xa3, 0xad, 0xa9, 0x3f, 0x6c, + 0x76, 0xf8, 0x67, 0xe8, 0xea, 0x6c, 0xee, 0x6f, 0xdb, 0x7a, 0x66, 0xdb, + 0xbf, 0xf6, 0x1f, 0x6a, 0x68, 0xdd, 0xa6, 0xe7, 0xea, 0xa3, 0xcd, 0xcf, + 0x6f, 0xef, 0x72, 0xdf, 0x7d, 0xd6, 0x78, 0x42, 0xa1, 0x8e, 0x97, 0xab, + 0x9c, 0xf1, 0x1e, 0x72, 0x4d, 0x78, 0x62, 0x11, 0xb4, 0x9f, 0x7f, 0x24, + 0xfc, 0x13, 0xa5, 0xfc, 0x64, 0xf5, 0x04, 0xf3, 0x85, 0x58, 0x71, 0x00, + 0x18, 0x96, 0x2d, 0x02, 0x45, 0xa3, 0x92, 0xf9, 0x9a, 0xdc, 0xb5, 0x33, + 0x49, 0x4d, 0x7e, 0xb0, 0x98, 0xad, 0xcf, 0x8d, 0x08, 0x23, 0x2e, 0x43, + 0xc1, 0x87, 0xe7, 0x87, 0xfb, 0x99, 0xf9, 0xf8, 0xa9, 0x4c, 0xaa, 0xa6, + 0xc9, 0xc2, 0xc6, 0x4b, 0xbd, 0x26, 0xfd, 0xb6, 0xfe, 0x34, 0xd1, 0xbd, + 0xcb, 0x9d, 0x6f, 0x55, 0xf3, 0x51, 0xf6, 0xd7, 0xdd, 0x45, 0x6e, 0x94, + 0xb7, 0x43, 0x13, 0x7d, 0xdc, 0x31, 0xce, 0x96, 0x25, 0xeb, 0x74, 0xaf, + 0x2f, 0x8a, 0x6a, 0x4f, 0xa9, 0xdd, 0x53, 0xbe, 0x2d, 0xaf, 0x7d, 0x33, + 0x6f, 0x67, 0x62, 0x12, 0x97, 0xa8, 0x92, 0x7c, 0xba, 0xe5, 0x8c, 0x59, + 0xce, 0x33, 0xa6, 0xed, 0xf8, 0x9b, 0x6d, 0x5b, 0xe5, 0x17, 0xa4, 0xf9, + 0xb7, 0x36, 0x90, 0x88, 0x71, 0x01, 0x97, 0x51, 0xe2, 0x61, 0x99, 0xc4, + 0x0e, 0x0f, 0xa3, 0xd0, 0xeb, 0x61, 0x51, 0x00, 0x4d, 0x22, 0x00, 0xfc, + 0x98, 0xc3, 0xcc, 0x11, 0x03, 0x31, 0xda, 0x1f, 0x53, 0x10, 0x53, 0x51, + 0x4c, 0xcb, 0x8e, 0x4e, 0x0b, 0x8c, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x3a, 0xc1, 0x2a, 0x30, 0x72, 0x02, 0x09, 0x31, 0x57, 0x60, + 0x62, 0x3d, 0x35, 0xc7, 0xfb, 0x30, 0xc5, 0xc1, 0xca, 0x30, 0x87, 0xc6, + 0x1f, 0x34, 0x10, 0x42, 0x00, 0x30, 0x4b, 0x40, 0xf4, 0x31, 0x1b, 0x45, + 0xa3, 0x30, 0x6e, 0x00, 0xf9, 0x31, 0x21, 0x04, 0xdf, 0x31, 0x28, 0x48, + 0x20, 0x30, 0xb8, 0xfc, 0x04, 0x38, 0x24, 0xcc, 0x60, 0x30, 0xa1, 0xc3, + 0x7a, 0x3e, 0x8c, 0xe6, 0x34, 0xb0, 0x6d, 0x30, 0x81, 0x3b, 0x33, 0x34, + 0xa6, 0x33, 0xd4, 0xe4, 0x31, 0xb4, 0x08, 0x30, 0x50, 0x0b, 0x31, 0x78, + 0x6d, 0x31, 0x70, 0x4d, 0x31, 0x58, 0x1b, 0x40, 0x68, 0x5c, 0x16, 0x30, + 0xf0, 0x5d, 0x31, 0xe8, 0x39, 0x30, 0xb8, 0x19, 0x68, 0x01, 0x70, 0x20, + 0xc0, 0x50, 0x20, 0xc2, 0x70, 0x60, 0xc2, 0x50, 0x68, 0x0c, 0x03, 0x08, + 0x80, 0x53, 0x03, 0x02, 0x30, 0x70, 0x52, 0x01, 0x01, 0x00, 0x40, 0x94, + 0x6d, 0x55, 0x5d, 0xd5, 0x85, 0x44, 0x68, 0x7d, 0x5b, 0x54, 0x15, 0x72, + 0xb4, 0x96, 0x6b, 0x51, 0xe2, 0x61, 0xab, 0xa5, 0x92, 0xce, 0x43, 0x8f, + 0xb3, 0x5a, 0x75, 0x9c, 0x28, 0xcb, 0xc8, 0x66, 0x91, 0xa4, 0x8f, 0x39, + 0xcf, 0xf4, 0x61, 0x32, 0x55, 0x42, 0x61, 0xa3, 0xf5, 0xcc, 0x18, 0xb1, + 0xcf, 0xd6, 0x32, 0x73, 0x87, 0x06, 0x07, 0x8a, 0x6d, 0x38, 0xee, 0x75, + 0x7e, 0x5b, 0x1e, 0x33, 0x29, 0x92, 0xcc, 0xdd, 0x9f, 0x4f, 0x1f, 0xbf, + 0x53, 0xaa, 0x4f, 0xe5, 0x89, 0x1f, 0x4f, 0x24, 0xb0, 0xee, 0x9d, 0x4e, + 0xab, 0x93, 0xcb, 0x88, 0x8e, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd9, + 0xb4, 0x70, 0x3f, 0x83, 0xfd, 0x7b, 0x70, 0x6f, 0xae, 0x08, 0x22, 0x3c, + 0x68, 0x6e, 0x21, 0xc9, 0xc0, 0xfe, 0x0f, 0xed, 0x8d, 0xc1, 0x70, 0x37, + 0x60, 0xc4, 0x61, 0x15, 0xb8, 0x4e, 0x2a, 0xd8, 0x90, 0xea, 0x96, 0x66, + 0x51, 0xab, 0x9f, 0x37, 0x5d, 0xb6, 0x0b, 0x1c, 0x28, 0x2c, 0x2a, 0x3b, + 0xd1, 0x4a, 0xcd, 0x1e, 0x6b, 0xbc, 0x8a, 0xbb, 0x7d, 0xdb, 0x97, 0x3a, + 0x86, 0x8b, 0x5a, 0x91, 0x95, 0x3b, 0xab, 0xbe, 0x86, 0xde, 0x84, 0xc0, + 0xab, 0x3c, 0x69, 0x16, 0x22, 0x65, 0x20, 0xa0, 0x81, 0x09, 0xba, 0x76, + 0x75, 0xc3, 0xc6, 0x18, 0x4c, 0xce, 0xed, 0x36, 0xac, 0x73, 0x32, 0xab, + 0xfa, 0xa1, 0x4b, 0x98, 0x35, 0x3f, 0xd3, 0xb1, 0xda, 0x93, 0xd0, 0x9d, + 0xc1, 0x42, 0x4b, 0x3a, 0x2e, 0xce, 0xb6, 0x47, 0x8e, 0x2d, 0x0a, 0x40, + 0x24, 0x00, 0x16, 0xe8, 0xfa, 0x83, 0xb9, 0x5f, 0x49, 0x5d, 0x35, 0xcb, + 0xe1, 0x4b, 0xa1, 0x9d, 0x22, 0x89, 0x5f, 0xfb, 0x5c, 0xf1, 0xd5, 0xcd, + 0xb2, 0xe5, 0x2b, 0xdf, 0x27, 0xa0, 0x28, 0x6c, 0x1c, 0x1f, 0x89, 0x23, + 0xa3, 0x59, 0xce, 0x76, 0x84, 0x77, 0xd9, 0x2a, 0x79, 0x8f, 0xf9, 0x8a, + 0xd1, 0xd1, 0x2f, 0xfe, 0x9b, 0xf8, 0xe3, 0xdf, 0xf5, 0x9d, 0x75, 0xd1, + 0xe7, 0xe5, 0xb9, 0xe2, 0xf8, 0xaa, 0xe6, 0xbb, 0xe1, 0x77, 0xe3, 0xbd, + 0x5f, 0xe2, 0x39, 0x9f, 0xe6, 0x38, 0xb9, 0xab, 0xbe, 0xa6, 0xba, 0xbd, + 0x2b, 0xaa, 0xf5, 0x84, 0xe4, 0xf8, 0x83, 0xae, 0xb8, 0x9b, 0x18, 0x70, + 0xd3, 0xac, 0xb2, 0xc1, 0x6c, 0x0e, 0x22, 0x06, 0x0d, 0x13, 0x0c, 0x26, + 0x98, 0x3b, 0x13, 0x18, 0x1b, 0x20, 0x5e, 0x13, 0x08, 0x6a, 0x63, 0x64, + 0x8f, 0x78, 0x7f, 0x52, 0x84, 0x1a, 0x62, 0x3f, 0x82, 0x48, 0x62, 0x00, + 0x09, 0x3e, 0x69, 0x68, 0x18, 0x90, 0x61, 0x3d, 0x05, 0x12, 0x63, 0xb8, + 0x8d, 0xf4, 0x61, 0x11, 0x00, 0x5a, 0x60, 0x5c, 0x83, 0x00, 0x61, 0xd4, + 0x0a, 0xd6, 0x6c, 0x6d, 0x9f, 0xda, 0x62, 0x38, 0x02, 0x3c, 0x60, 0xca, + 0x81, 0x02, 0x71, 0x09, 0x46, 0xc6, 0x5e, 0x68, 0x84, 0x46, 0x28, 0xfc, + 0x62, 0x60, 0xa5, 0xb8, 0x30, 0x12, 0xa9, 0xe6, 0xe4, 0x4c, 0x03, 0x32, + 0xcc, 0x45, 0x01, 0x8c, 0x58, 0x06, 0x46, 0xdd, 0xe2, 0xce, 0x8a, 0x3b, + 0xa7, 0x54, 0x35, 0x2c, 0x70, 0xe2, 0x92, 0x96, 0xe8, 0xfa, 0xb8, 0x4f, + 0xec, 0x00, 0xf0, 0x5e, 0x8d, 0xd3, 0x37, 0x79, 0x13, 0x53, 0xb9, 0x5a, + 0xec, 0x92, 0xe5, 0xc8, 0xbc, 0x31, 0x2d, 0x96, 0xb8, 0xb3, 0x09, 0xc8, + 0x8a, 0x0b, 0x07, 0x87, 0xed, 0xa1, 0x8f, 0x03, 0xf9, 0x4a, 0x23, 0x03, + 0x63, 0xb2, 0x93, 0xec, 0x9e, 0x72, 0x76, 0xb9, 0x1c, 0x97, 0xaa, 0xe1, + 0x49, 0x60, 0xf4, 0x20, 0xbc, 0x70, 0xa5, 0x68, 0x90, 0x39, 0x8f, 0x24, + 0xa7, 0xab, 0x0f, 0xe3, 0x46, 0x89, 0xcc, 0xcf, 0xd0, 0xd1, 0xaf, 0x36, + 0x30, 0x5e, 0x58, 0x24, 0x34, 0xb4, 0xaf, 0x05, 0x16, 0x9d, 0x1f, 0xbe, + 0x4d, 0x42, 0x89, 0x29, 0xf1, 0x33, 0xd6, 0x9c, 0xd0, 0xfb, 0x9b, 0xbf, + 0xdc, 0xf9, 0x39, 0x51, 0x5a, 0x02, 0xf3, 0xd8, 0x2a, 0x76, 0xa8, 0x49, + 0x09, 0xc6, 0x8a, 0x2e, 0x32, 0x75, 0xae, 0x68, 0xaf, 0x13, 0x77, 0x61, + 0xe2, 0xdb, 0x3c, 0x4f, 0xb2, 0x98, 0xdc, 0x3e, 0x3e, 0x6e, 0x13, 0x74, + 0x78, 0xd9, 0x99, 0xa5, 0xcf, 0x21, 0x85, 0x7b, 0xa9, 0x51, 0x1d, 0xaf, + 0xaa, 0xb5, 0xe2, 0x49, 0xbb, 0x05, 0x3b, 0x95, 0x93, 0x9e, 0x18, 0x2a, + 0x4c, 0x3a, 0x1d, 0x88, 0xe3, 0xb3, 0x22, 0x3c, 0x8e, 0x44, 0x08, 0xc8, + 0x39, 0x26, 0x25, 0xd6, 0xf4, 0x96, 0xaf, 0xbb, 0x70, 0x96, 0x24, 0xc4, + 0x9d, 0xdd, 0xd7, 0xb5, 0x6b, 0x7b, 0x3a, 0xad, 0xcc, 0xc9, 0x6b, 0xce, + 0xb3, 0x9b, 0xdd, 0x1a, 0x86, 0xc8, 0xde, 0xfe, 0xe9, 0x5c, 0x94, 0x45, + 0xbb, 0xd6, 0xf4, 0xa3, 0x59, 0xee, 0xfb, 0x2f, 0x56, 0xab, 0x55, 0x37, + 0xd5, 0x1e, 0xb6, 0x39, 0x19, 0xb4, 0xa7, 0x7c, 0xda, 0xb3, 0x5d, 0x96, + 0x73, 0x3a, 0xd9, 0xb5, 0xae, 0xa8, 0x54, 0x77, 0xe7, 0x56, 0x5a, 0xa3, + 0xae, 0x26, 0xaa, 0x2e, 0x1e, 0x21, 0x04, 0x4e, 0x71, 0x50, 0x80, 0x59, + 0x04, 0xd4, 0x05, 0x02, 0x00, 0xb5, 0x40, 0x0c, 0x04, 0x90, 0x17, 0x4c, + 0x18, 0x00, 0x89, 0x8c, 0x58, 0x15, 0xc7, 0x4f, 0x27, 0x31, 0x82, 0x8c, + 0x3a, 0x10, 0x9b, 0x4c, 0x2e, 0x02, 0x9c, 0x0d, 0x21, 0xc2, 0xad, 0xcc, + 0x39, 0x80, 0x29, 0x0c, 0x7b, 0x80, 0x72, 0xcc, 0x2a, 0xf0, 0x43, 0xcc, + 0x16, 0x00, 0x44, 0x0c, 0x2c, 0x30, 0x30, 0xcd, 0x86, 0x61, 0xc0, 0x4c, + 0x58, 0x10, 0x31, 0x8c, 0x14, 0x20, 0x07, 0x0e, 0xc9, 0x43, 0x90, 0x28, + 0x05, 0x0c, 0x49, 0x30, 0x3a, 0x22, 0x08, 0x52, 0x31, 0x79, 0x45, 0x15, + 0x6b, 0xf8, 0xaa, 0xcc, 0x48, 0x20, 0xfa, 0x7d, 0x38, 0x0d, 0x7a, 0xb3, + 0xfe, 0xe3, 0x52, 0x3f, 0x2e, 0x15, 0xe5, 0xb6, 0xd2, 0x25, 0x30, 0xdb, + 0xf7, 0x2d, 0x92, 0x3b, 0xb2, 0x09, 0xf8, 0xc4, 0xdc, 0xaa, 0x62, 0xe4, + 0x96, 0x57, 0xf4, 0xb3, 0x96, 0xb2, 0x7f, 0xa7, 0xe5, 0xac, 0x31, 0xe7, + 0x9e, 0x32, 0x1f, 0x4c, 0x4b, 0x15, 0x6a, 0x1f, 0x53, 0x4a, 0xf2, 0x24, + 0x55, 0x75, 0xe1, 0x44, 0x82, 0xdc, 0xd5, 0x48, 0xcd, 0x52, 0x3c, 0x79, + 0x19, 0x89, 0xb5, 0xf5, 0x55, 0xcc, 0x70, 0x1e, 0xbd, 0x80, 0xdb, 0x59, + 0x62, 0x4c, 0xda, 0xf2, 0x0c, 0xff, 0xfb, 0xd4, 0x60, 0x53, 0x8d, 0xd8, + 0x1c, 0x70, 0x40, 0x0b, 0xfa, 0x7b, 0x70, 0x5d, 0xed, 0xf8, 0x42, 0x40, + 0x65, 0x6e, 0x20, 0xb1, 0xc1, 0x00, 0x4f, 0xe9, 0x8d, 0xc1, 0x7e, 0x38, + 0x20, 0xc0, 0xf0, 0x95, 0xb8, 0xcf, 0xb1, 0xad, 0xdd, 0xca, 0xf5, 0x9d, + 0xd2, 0xfa, 0x92, 0x3c, 0x5d, 0xb2, 0x4a, 0xe4, 0xae, 0x99, 0xf7, 0x73, + 0x9e, 0x24, 0x48, 0x73, 0x66, 0x0d, 0xd8, 0x59, 0xdf, 0xc1, 0x55, 0xb2, + 0xf6, 0x09, 0x9f, 0x32, 0xa2, 0xaf, 0x12, 0x02, 0xb2, 0x2b, 0x2d, 0x5c, + 0xb7, 0x6c, 0xc0, 0x9d, 0x6e, 0x46, 0xf9, 0x29, 0x5b, 0x40, 0x5a, 0x5d, + 0x2b, 0x77, 0x96, 0x0a, 0x31, 0xb8, 0x37, 0x48, 0xfd, 0xca, 0x15, 0x6a, + 0xcb, 0x3b, 0x34, 0x94, 0x73, 0xb5, 0xeb, 0xa9, 0x5d, 0xd3, 0x2b, 0xa7, + 0x8f, 0x1d, 0x38, 0xad, 0xc9, 0xa3, 0xf1, 0x79, 0xf8, 0xc2, 0x56, 0x29, + 0x50, 0xd1, 0x80, 0x00, 0x02, 0xc5, 0x53, 0xc7, 0x5c, 0xf1, 0x9a, 0x2c, + 0x9a, 0xd6, 0xbc, 0x8d, 0x4a, 0xe6, 0x73, 0x79, 0x21, 0xac, 0x62, 0xeb, + 0xf4, 0x8e, 0x63, 0x20, 0x81, 0x74, 0xd4, 0x94, 0x8b, 0xfe, 0x4f, 0xef, + 0x72, 0x5f, 0x56, 0x77, 0x77, 0x98, 0xae, 0xb7, 0xb7, 0x55, 0x76, 0xfa, + 0xb3, 0xb3, 0x2d, 0x91, 0xd3, 0x6e, 0xba, 0xaa, 0x7a, 0xd9, 0x7b, 0xa2, + 0x74, 0x6a, 0x6d, 0xed, 0x5d, 0x2a, 0xaf, 0xf6, 0xad, 0x1d, 0x7a, 0xe6, + 0xfb, 0x93, 0xdd, 0xd5, 0x19, 0x5d, 0x91, 0x56, 0xea, 0xa1, 0xe3, 0x0d, + 0x47, 0x11, 0x12, 0x01, 0x54, 0xcc, 0x34, 0x54, 0x0e, 0x61, 0x82, 0x51, + 0x21, 0x80, 0xc8, 0x08, 0x49, 0x80, 0xe4, 0x19, 0x61, 0x86, 0x67, 0x25, + 0xb9, 0xbf, 0x86, 0x48, 0xa1, 0x81, 0x3a, 0x14, 0xa9, 0x87, 0x66, 0x28, + 0xa1, 0xbe, 0x32, 0x59, 0x99, 0x88, 0x3a, 0x11, 0x61, 0x8b, 0x4a, 0x2b, + 0x39, 0x80, 0xe6, 0x09, 0x01, 0x81, 0xb2, 0x06, 0x19, 0x81, 0x14, 0x05, + 0x99, 0xac, 0x0a, 0xc6, 0xe1, 0x88, 0x48, 0x09, 0xf1, 0x82, 0x3a, 0x01, + 0xe8, 0x72, 0xc3, 0x5e, 0x5c, 0xd2, 0x2e, 0x10, 0x41, 0x30, 0x80, 0x4a, + 0x81, 0x86, 0x1a, 0x24, 0x9a, 0x42, 0x4a, 0x11, 0xc2, 0x06, 0x24, 0x1a, + 0x67, 0x41, 0x58, 0x54, 0xe8, 0x18, 0xc8, 0xd4, 0x75, 0x4b, 0x9b, 0x33, + 0x64, 0x87, 0xdf, 0xd7, 0x35, 0x7e, 0x47, 0x1f, 0xdb, 0x11, 0x98, 0x5b, + 0x42, 0x77, 0x2b, 0xac, 0x87, 0x95, 0xf3, 0x5f, 0x72, 0xd8, 0x65, 0xdf, + 0xa6, 0x92, 0x61, 0x71, 0xa7, 0xc2, 0x73, 0x8c, 0xbe, 0x51, 0x89, 0x21, + 0xfd, 0xce, 0x52, 0x6a, 0x25, 0xd1, 0x93, 0x96, 0x79, 0x7e, 0x36, 0x9d, + 0x3d, 0x94, 0x7a, 0x59, 0x3a, 0x65, 0x93, 0xeb, 0xb8, 0xe2, 0xe3, 0x12, + 0x51, 0x91, 0x4c, 0x92, 0xad, 0x42, 0xc5, 0x86, 0x7e, 0xe9, 0xc5, 0x14, + 0x2f, 0x7e, 0x34, 0x16, 0xfd, 0x09, 0x4e, 0x96, 0x70, 0xec, 0xe0, 0xb2, + 0xb5, 0xc6, 0xad, 0x56, 0x16, 0x61, 0x99, 0xa2, 0x3e, 0x78, 0x9d, 0x0b, + 0x07, 0xa7, 0x9b, 0xeb, 0xdf, 0x3f, 0x61, 0x95, 0xb4, 0x70, 0xa5, 0xef, + 0x40, 0x5e, 0xcd, 0x69, 0xf6, 0x9b, 0x5e, 0xb8, 0xa8, 0x52, 0x84, 0xfa, + 0x38, 0xce, 0xdb, 0xa9, 0x35, 0x86, 0xa5, 0xd5, 0xce, 0x47, 0x07, 0xde, + 0xc7, 0xfc, 0x79, 0x13, 0xeb, 0x3d, 0xbc, 0x85, 0xdb, 0x1f, 0xb9, 0x4b, + 0x1b, 0x3c, 0xa4, 0xb6, 0x3e, 0xac, 0x4e, 0xc1, 0xe2, 0x52, 0xe1, 0xe3, + 0xa4, 0xc3, 0x43, 0x01, 0x30, 0x3f, 0x58, 0xb0, 0xb2, 0x05, 0x98, 0xd5, + 0xa3, 0x3d, 0xa4, 0xcd, 0x37, 0x5c, 0xea, 0x96, 0x00, 0x26, 0x27, 0x18, + 0xe7, 0x3e, 0x66, 0xd8, 0xa9, 0x31, 0x11, 0xa5, 0x92, 0x8a, 0x25, 0x91, + 0xc4, 0xce, 0x6d, 0x31, 0xdd, 0x9f, 0x5a, 0xa2, 0x33, 0xa2, 0x33, 0x1b, + 0xf5, 0xdd, 0x19, 0x09, 0xfd, 0x59, 0xde, 0x4a, 0xd6, 0xcf, 0x7d, 0x8e, + 0x88, 0xee, 0x7b, 0x3f, 0x65, 0xd6, 0x95, 0x4b, 0x55, 0x57, 0xa1, 0x71, + 0x1a, 0x69, 0x52, 0xa5, 0x08, 0x53, 0xa5, 0x9b, 0xd5, 0x92, 0x96, 0xc7, + 0x5f, 0x3a, 0x9e, 0x85, 0x41, 0x03, 0x87, 0x86, 0x08, 0x0a, 0xa2, 0x1c, + 0x63, 0xb1, 0x86, 0x28, 0xc1, 0x17, 0x70, 0x41, 0x8a, 0x30, 0x30, 0x81, + 0x3b, 0x30, 0x2e, 0xc3, 0x96, 0x30, 0x4e, 0xad, 0x4b, 0x32, 0x1b, 0x0a, + 0x3e, 0x30, 0x50, 0x80, 0x86, 0x30, 0x4c, 0xd0, 0xe3, 0x34, 0x66, 0x54, + 0xa2, 0x30, 0xaf, 0x43, 0xdb, 0x30, 0x45, 0x47, 0x7e, 0x30, 0x7e, 0x80, + 0x8c, 0x30, 0x0b, 0xc0, 0x50, 0x30, 0x4e, 0x84, 0xb7, 0x33, 0xe0, 0xa9, + 0xf1, 0x31, 0x5e, 0xc2, 0x1b, 0x30, 0x4e, 0x81, 0x06, 0x38, 0xfe, 0x4e, + 0x23, 0x23, 0x56, 0xb4, 0x83, 0x0c, 0x8d, 0x39, 0xc7, 0x4e, 0x40, 0x4c, + 0x01, 0xa7, 0xbc, 0x91, 0x14, 0xdb, 0x33, 0x40, 0x9f, 0x26, 0xfe, 0x16, + 0xe8, 0x33, 0xa8, 0xdc, 0xbd, 0xba, 0xa9, 0x4b, 0x61, 0x98, 0x6d, 0x22, + 0xd3, 0x30, 0xa9, 0x04, 0x59, 0xe6, 0xa6, 0x84, 0xc6, 0xa0, 0x78, 0xb4, + 0x18, 0xeb, 0xcf, 0xe1, 0x15, 0x97, 0xc5, 0x21, 0xbc, 0xac, 0x51, 0x3f, + 0xcf, 0xa5, 0x74, 0x88, 0xd0, 0x74, 0x92, 0xa8, 0x31, 0x2d, 0x5f, 0x97, + 0x2e, 0xba, 0xcd, 0x17, 0x27, 0x5e, 0xbc, 0xf0, 0xe8, 0xbc, 0xb5, 0x1a, + 0x53, 0xb2, 0xdd, 0x93, 0xf0, 0xf0, 0x7c, 0xb0, 0xb2, 0xf2, 0xc7, 0x39, + 0xb5, 0xca, 0x4d, 0x60, 0x42, 0xac, 0x6a, 0x0a, 0xa9, 0x56, 0x1f, 0xa3, + 0xee, 0x39, 0x1d, 0x54, 0x94, 0xcb, 0x7b, 0xaf, 0xcd, 0xd5, 0x36, 0x5d, + 0x58, 0x9f, 0x53, 0xd9, 0xc3, 0xff, 0xfb, 0xd4, 0x60, 0x5e, 0x0f, 0xf8, + 0x1b, 0x70, 0x3f, 0x83, 0xfa, 0x63, 0x70, 0x58, 0x0e, 0x08, 0x41, 0x2c, + 0x62, 0x6e, 0xa4, 0xd5, 0xc0, 0xfa, 0x0f, 0xed, 0xed, 0xc1, 0xa4, 0x37, + 0xe0, 0x80, 0xf1, 0x95, 0xb8, 0xd0, 0xa5, 0x86, 0x5c, 0xa9, 0x87, 0xbe, + 0x8c, 0xe5, 0x0f, 0x9a, 0x8d, 0x2a, 0xd4, 0x86, 0x78, 0xe3, 0x0b, 0xa5, + 0x20, 0xd2, 0xdb, 0xe9, 0x4a, 0xb5, 0x75, 0x96, 0x9f, 0x74, 0xfa, 0xcd, + 0x90, 0x10, 0xe2, 0x25, 0xfd, 0xdb, 0x89, 0xc4, 0xea, 0x6a, 0x5f, 0x7d, + 0xd4, 0x58, 0x75, 0x8d, 0x21, 0xa3, 0x67, 0x21, 0x37, 0xe5, 0x85, 0x93, + 0xb8, 0x84, 0xb4, 0xc5, 0x85, 0xaa, 0x4b, 0x45, 0xc5, 0xef, 0x83, 0xe3, + 0xd1, 0x3c, 0x2e, 0x02, 0x24, 0x00, 0x12, 0x3d, 0x96, 0x83, 0x0f, 0x9f, + 0x3f, 0x3c, 0xc7, 0x72, 0x1b, 0x74, 0x9c, 0xa9, 0x5a, 0x7e, 0x45, 0xd7, + 0xff, 0x22, 0x9b, 0x5a, 0x09, 0xc7, 0x22, 0x5e, 0x5c, 0xd0, 0x8e, 0x42, + 0x97, 0x9a, 0x59, 0xdd, 0x9d, 0x35, 0x5b, 0xa2, 0xaf, 0x95, 0x75, 0x5f, + 0xed, 0x5e, 0xfa, 0xfb, 0x35, 0xcd, 0x76, 0xbd, 0xf9, 0xbd, 0xbf, 0x79, + 0x7a, 0x6b, 0x7b, 0x75, 0x66, 0x57, 0x7d, 0x9e, 0x9e, 0xcf, 0xa3, 0x53, + 0xb1, 0x6d, 0x8e, 0x86, 0x43, 0xb9, 0xe1, 0xd8, 0x2a, 0x10, 0xc2, 0x21, + 0xc7, 0x07, 0x70, 0x8c, 0xc6, 0x1c, 0x50, 0x90, 0xe6, 0x0a, 0x30, 0x31, + 0x26, 0x0e, 0x88, 0x7c, 0x86, 0x2d, 0xc6, 0x0b, 0x67, 0xb1, 0x01, 0x69, + 0x06, 0x11, 0xe0, 0x49, 0x26, 0x30, 0x00, 0x2e, 0x67, 0xde, 0x90, 0x9c, + 0x06, 0x42, 0x00, 0x40, 0x06, 0x4e, 0x70, 0xa2, 0xe6, 0x13, 0x28, 0x3f, + 0xa6, 0x03, 0xe8, 0x1a, 0x26, 0x03, 0xe8, 0xbd, 0xc6, 0x66, 0xc7, 0xdc, + 0x86, 0x10, 0x70, 0x83, 0xc6, 0x05, 0xa0, 0x2a, 0x66, 0x95, 0x00, 0x66, + 0xaf, 0x22, 0xcc, 0x06, 0x7c, 0xd4, 0x45, 0x74, 0x24, 0x1a, 0x00, 0x44, + 0x5f, 0xb9, 0x31, 0xe4, 0xb0, 0x6b, 0x00, 0x01, 0x80, 0x13, 0x0a, 0x8e, + 0x2b, 0xb2, 0xda, 0x2f, 0xa7, 0x10, 0xb9, 0xcc, 0x41, 0xf1, 0x53, 0x05, + 0xba, 0xda, 0x33, 0x97, 0x62, 0xe3, 0x72, 0x48, 0x19, 0x7b, 0x88, 0xf0, + 0x3a, 0x6f, 0xa4, 0xd4, 0x6a, 0x95, 0x73, 0x41, 0x75, 0x60, 0x08, 0xab, + 0x40, 0x7c, 0x25, 0xee, 0xdc, 0x66, 0x54, 0x9a, 0x64, 0x91, 0x5d, 0x15, + 0x94, 0xde, 0x27, 0xd2, 0x24, 0x8f, 0xf5, 0x22, 0xad, 0x48, 0xe0, 0xc6, + 0x95, 0x88, 0xb6, 0xa1, 0x8e, 0xac, 0x42, 0xce, 0x29, 0x95, 0xe5, 0xfd, + 0x5c, 0xa7, 0x39, 0x74, 0x8c, 0x63, 0x2f, 0x48, 0xd3, 0xe9, 0x66, 0x24, + 0xe9, 0x13, 0xe1, 0x69, 0x08, 0x46, 0xbe, 0x59, 0x43, 0x0f, 0x13, 0xb9, + 0xd2, 0xa5, 0x79, 0x65, 0xf2, 0x39, 0x50, 0xe4, 0x9d, 0x67, 0x68, 0xdd, + 0x9e, 0xaf, 0xae, 0x98, 0xda, 0x1e, 0xaa, 0xd4, 0x31, 0xcd, 0xe5, 0xde, + 0xd0, 0x85, 0x4b, 0xba, 0xbf, 0x80, 0xf8, 0xdc, 0x37, 0x1e, 0x3e, 0x92, + 0x55, 0x2a, 0xea, 0x22, 0x94, 0xe8, 0x8b, 0x67, 0x51, 0x58, 0x1c, 0xe1, + 0x2a, 0x58, 0xe0, 0xb5, 0xa3, 0x8b, 0xed, 0xde, 0x52, 0xae, 0x68, 0x36, + 0xc6, 0x34, 0x8b, 0x6a, 0x85, 0x58, 0xad, 0x95, 0x09, 0x9d, 0xa6, 0x3b, + 0x2b, 0xe6, 0xd5, 0x0a, 0xbd, 0xb6, 0x88, 0x73, 0xd5, 0x72, 0x8d, 0x5a, + 0xd7, 0x01, 0xd2, 0x92, 0x63, 0x81, 0x1a, 0xc6, 0xc1, 0x14, 0xed, 0x4a, + 0xbb, 0x41, 0x1d, 0x93, 0xa5, 0x14, 0xea, 0x52, 0xec, 0x80, 0x33, 0x55, + 0xc4, 0xd8, 0xc8, 0x15, 0x38, 0xb4, 0x19, 0xe3, 0xc3, 0xb4, 0x46, 0x2a, + 0x6b, 0x38, 0x9d, 0x3a, 0x68, 0x2f, 0xbf, 0x26, 0x4f, 0xd3, 0x35, 0x2f, + 0x62, 0x2e, 0xbb, 0xc1, 0x4b, 0x6d, 0xa7, 0xd5, 0xb4, 0xa5, 0xe7, 0x4e, + 0xce, 0x8c, 0xf2, 0x29, 0x5d, 0x48, 0xc6, 0x5b, 0xa3, 0xce, 0x42, 0x15, + 0x5a, 0x8e, 0x8f, 0x66, 0x46, 0x6a, 0x79, 0x15, 0xfb, 0xb5, 0x55, 0x1e, + 0xa8, 0xae, 0x8b, 0x91, 0xb2, 0xd8, 0xd4, 0xb3, 0x9e, 0xac, 0xc6, 0x76, + 0xa7, 0xad, 0x1e, 0x63, 0x32, 0x51, 0x0c, 0x30, 0xb2, 0x3e, 0xc5, 0x95, + 0xd4, 0xd3, 0x20, 0xe7, 0x49, 0x47, 0xaa, 0xf8, 0x92, 0x07, 0xc3, 0xc1, + 0x01, 0xc8, 0x3c, 0x3c, 0x2a, 0x2e, 0x31, 0x8a, 0x74, 0x1a, 0x57, 0x10, + 0xa0, 0x0c, 0x10, 0x20, 0x33, 0x4c, 0x1a, 0xd0, 0x5b, 0x8c, 0x54, 0x24, + 0x26, 0x4e, 0xf4, 0x80, 0xa9, 0x0c, 0x37, 0x80, 0xbf, 0xcc, 0x12, 0xf4, + 0x44, 0x8c, 0x6e, 0x55, 0x0b, 0x4c, 0x12, 0x70, 0xa1, 0x0c, 0x9e, 0x30, + 0xa7, 0xcc, 0x03, 0x50, 0x13, 0x0c, 0x07, 0xa0, 0x2f, 0x8c, 0x05, 0xb1, + 0x28, 0xcd, 0x7c, 0xf8, 0xaf, 0x4c, 0x5c, 0x60, 0x88, 0x4c, 0x10, 0x10, + 0x3b, 0x0e, 0x92, 0x93, 0xb2, 0x90, 0xba, 0x20, 0x97, 0x05, 0xc9, 0x49, + 0x21, 0x52, 0xc1, 0xc4, 0x1c, 0x34, 0x92, 0x87, 0x17, 0x92, 0x5a, 0x0f, + 0x07, 0x91, 0x35, 0xa9, 0xd7, 0x65, 0x60, 0x9a, 0x8c, 0x37, 0x1d, 0x6a, + 0x72, 0xd7, 0xf2, 0xcc, 0xaa, 0x65, 0xc1, 0x90, 0xb2, 0x87, 0xdd, 0xa6, + 0xd7, 0x75, 0xec, 0xc4, 0xa0, 0xd8, 0xad, 0x5a, 0x48, 0xa5, 0xab, 0x5c, + 0xc6, 0xfc, 0xe4, 0xe2, 0x13, 0x97, 0x3b, 0x70, 0xa9, 0x00, 0xe0, 0x4c, + 0x60, 0xa6, 0x80, 0xae, 0xe7, 0x88, 0x9d, 0xf3, 0xbe, 0x1c, 0xd8, 0x48, + 0xa2, 0x35, 0xa5, 0xd5, 0x0e, 0x99, 0x1f, 0x2a, 0xb1, 0xa4, 0x6a, 0x65, + 0xd6, 0xd5, 0x56, 0xb5, 0x7c, 0xae, 0xfb, 0x25, 0xd8, 0x72, 0xb4, 0x6a, + 0xe6, 0x36, 0x75, 0x8e, 0x5b, 0xff, 0xfb, 0xd4, 0x60, 0x56, 0x89, 0x87, + 0xe5, 0x70, 0x40, 0x0b, 0xfa, 0x63, 0x70, 0x5f, 0x4e, 0x08, 0x30, 0x40, + 0x25, 0x6e, 0x20, 0x59, 0xc1, 0x00, 0xcf, 0xed, 0x8d, 0xc0, 0xfd, 0x8f, + 0xa2, 0x74, 0xd1, 0x0d, 0x28, 0xe9, 0xd7, 0x1c, 0xaa, 0x5e, 0x59, 0xb4, + 0x3c, 0x4d, 0xb4, 0x65, 0x3c, 0xc6, 0x5f, 0xe2, 0xa3, 0x8b, 0x64, 0xe3, + 0x18, 0x35, 0x43, 0xad, 0x99, 0xa4, 0x71, 0x38, 0x87, 0x02, 0xc5, 0xa8, + 0xb2, 0xf1, 0x61, 0xb3, 0xed, 0x2e, 0x34, 0x95, 0x9c, 0xcb, 0x6f, 0x31, + 0x1b, 0x9a, 0xd2, 0xa9, 0x80, 0xb6, 0x63, 0x13, 0x8f, 0xbf, 0x5d, 0x62, + 0x92, 0x94, 0xc5, 0x13, 0xd5, 0x43, 0x1f, 0x65, 0xd6, 0xae, 0x90, 0x86, + 0xe3, 0x15, 0x33, 0x25, 0xa0, 0x8f, 0x43, 0xd8, 0x9e, 0xf9, 0x27, 0x41, + 0x88, 0x0c, 0xe5, 0x6b, 0xa0, 0x89, 0x7d, 0x8f, 0x20, 0x55, 0x49, 0x3a, + 0x81, 0x52, 0x1b, 0x44, 0x2f, 0x29, 0xb6, 0xbb, 0x7d, 0xcc, 0x90, 0x94, + 0x1a, 0x2f, 0x5b, 0x31, 0x15, 0x9a, 0x8c, 0x5d, 0x6f, 0x25, 0xd5, 0x6d, + 0xb5, 0x19, 0xb6, 0x55, 0x64, 0xa2, 0xdb, 0x47, 0xbd, 0xe7, 0xa5, 0x48, + 0xfb, 0xa2, 0x75, 0x65, 0xa6, 0x43, 0x59, 0xde, 0xb6, 0x52, 0xb1, 0xfb, + 0xd9, 0x3b, 0x6c, 0xea, 0x44, 0x64, 0xbd, 0x3b, 0xe7, 0xb3, 0x15, 0xd4, + 0xe9, 0x68, 0x72, 0xf5, 0x48, 0xc3, 0x9d, 0x44, 0xc3, 0xd7, 0x11, 0x12, + 0x72, 0x0e, 0x62, 0x8f, 0x71, 0x00, 0xe8, 0x10, 0x40, 0x24, 0x48, 0x0a, + 0x25, 0x90, 0x98, 0x13, 0x13, 0x05, 0xf4, 0x0e, 0xf3, 0x13, 0x38, 0xb2, + 0x23, 0xb0, 0x30, 0x48, 0x93, 0x0f, 0xe8, 0x1a, 0xa3, 0x16, 0x84, 0x6a, + 0x33, 0xa6, 0x6c, 0x74, 0x43, 0x14, 0xec, 0x17, 0x13, 0x2a, 0x08, 0x5d, + 0xa3, 0x04, 0xfc, 0x14, 0xc3, 0x02, 0xd8, 0x1f, 0xb3, 0x06, 0x34, 0x17, + 0xd3, 0x73, 0x28, 0xdc, 0xa3, 0x1d, 0xac, 0x10, 0xe3, 0x06, 0x60, 0x04, + 0xb2, 0x75, 0xe3, 0x78, 0x02, 0x34, 0x11, 0x13, 0x23, 0x1f, 0x03, 0x04, + 0x0e, 0x00, 0x85, 0x83, 0x09, 0x8e, 0x5c, 0xa4, 0x8a, 0x6b, 0xae, 0x83, + 0xee, 0xbd, 0x9f, 0x57, 0x99, 0xaf, 0xc7, 0x9a, 0x63, 0xfd, 0x2d, 0x99, + 0x2f, 0x2c, 0x59, 0x7d, 0x2e, 0x57, 0x6f, 0x38, 0x05, 0x92, 0x3b, 0x6e, + 0xf2, 0xe5, 0x89, 0x4f, 0xd1, 0x2b, 0xc6, 0x9f, 0x0c, 0xd2, 0x4f, 0x5e, + 0x9f, 0x86, 0x68, 0x24, 0x54, 0x92, 0xf8, 0xe1, 0xb1, 0xd9, 0x8b, 0x43, + 0xad, 0x38, 0xf9, 0x7a, 0x48, 0x4c, 0x22, 0x5c, 0xf3, 0x65, 0x2b, 0xca, + 0x45, 0xc8, 0x77, 0x85, 0x11, 0xb2, 0xd6, 0x21, 0x4c, 0xdd, 0x27, 0x4e, + 0x97, 0x3d, 0x45, 0x4c, 0x1f, 0xc4, 0xa2, 0xb1, 0xa8, 0x46, 0xd5, 0x57, + 0xa6, 0x75, 0x7e, 0x5b, 0xdc, 0x58, 0x5b, 0x56, 0xfa, 0x44, 0xd8, 0xd1, + 0xe3, 0x4d, 0xa2, 0xf4, 0xca, 0xa3, 0x4a, 0x76, 0x8f, 0x0e, 0x12, 0x44, + 0x75, 0xb2, 0x4c, 0xbc, 0x3c, 0xa5, 0x2a, 0xe7, 0x2f, 0xc9, 0x5a, 0x64, + 0xf1, 0xc5, 0xc7, 0x2f, 0xac, 0x85, 0xc7, 0x14, 0xc1, 0xad, 0x5b, 0x95, + 0x95, 0x99, 0x59, 0x66, 0xa3, 0x6d, 0xea, 0xfb, 0x4c, 0x21, 0xc2, 0xb5, + 0xa7, 0x8c, 0x17, 0x9f, 0xbc, 0x7e, 0xbc, 0xf5, 0x6f, 0x46, 0xe2, 0x44, + 0x16, 0xb4, 0x9c, 0x86, 0x94, 0x48, 0x2e, 0x95, 0x3c, 0xd0, 0xb0, 0x60, + 0x42, 0x3a, 0x11, 0x0a, 0x67, 0x81, 0x50, 0x01, 0x4a, 0xed, 0x8d, 0x00, + 0x01, 0xf9, 0xd6, 0xbd, 0x4d, 0xde, 0x9f, 0xf6, 0x66, 0x1d, 0x1c, 0xce, + 0x43, 0x40, 0xc7, 0x39, 0x0e, 0xf4, 0xf2, 0xb0, 0x13, 0x8d, 0x99, 0xe4, + 0x60, 0xb0, 0xc6, 0x3c, 0x30, 0x06, 0x20, 0x4d, 0xc1, 0x55, 0x93, 0xbc, + 0x8c, 0xfa, 0xd1, 0x65, 0x68, 0xda, 0xb7, 0xff, 0xff, 0xbb, 0xff, 0xff, + 0xfd, 0x79, 0x94, 0x24, 0x72, 0x1a, 0x34, 0x25, 0x2e, 0x10, 0x4c, 0x41, + 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x23, 0x41, 0xb4, 0x30, 0x46, 0x44, 0x3b, 0x31, 0x4e, 0xb0, + 0x20, 0x3f, 0x03, 0x0e, 0x19, 0x30, 0x58, 0x06, 0x2e, 0x31, 0x71, 0x9b, + 0x01, 0x3b, 0xed, 0x25, 0x1a, 0x31, 0x11, 0x83, 0x7c, 0x31, 0x94, 0x4e, + 0x6d, 0x31, 0xa0, 0x03, 0x28, 0x31, 0x2d, 0xc1, 0x53, 0x31, 0xbf, 0x02, + 0xfe, 0x3c, 0xae, 0xe3, 0x5c, 0x33, 0xcf, 0x03, 0x3a, 0x30, 0xbd, 0x41, + 0x6b, 0x38, 0xf4, 0x60, 0xdc, 0xea, 0x13, 0x4f, 0x13, 0x0c, 0xa8, 0x17, + 0x30, 0xf8, 0x8c, 0x14, 0x08, 0x02, 0x90, 0x8a, 0x0e, 0x0c, 0xdd, 0x0f, + 0x03, 0x01, 0xe8, 0x33, 0x04, 0x14, 0x04, 0x9d, 0xd5, 0x2b, 0x77, 0xa1, + 0xb4, 0x62, 0x68, 0x2e, 0x8c, 0x16, 0x0c, 0x0f, 0x3e, 0xcd, 0x7c, 0xbc, + 0xcd, 0x21, 0x43, 0x25, 0x8a, 0xde, 0xf2, 0x3a, 0xce, 0x1c, 0x71, 0xed, + 0x69, 0xad, 0x81, 0x27, 0x9b, 0x3c, 0x6a, 0x1e, 0x9c, 0x90, 0xb5, 0xda, + 0x25, 0x88, 0xed, 0xb8, 0x4f, 0xb1, 0x7b, 0x56, 0x32, 0x9c, 0x83, 0x9d, + 0x8d, 0x44, 0x75, 0xc6, 0x50, 0x9d, 0x09, 0x07, 0xce, 0x0a, 0x44, 0xda, + 0xa0, 0xf6, 0x30, 0x59, 0x9f, 0x21, 0xcc, 0xe9, 0xa5, 0x19, 0xd6, 0x84, + 0xc5, 0x1d, 0xc7, 0xd9, 0xfa, 0x3d, 0x31, 0x53, 0x03, 0x21, 0x7d, 0xc1, + 0xbd, 0x57, 0x93, 0xdc, 0xd1, 0x3e, 0x93, 0x69, 0x13, 0x70, 0xd4, 0x3c, + 0x58, 0x17, 0x28, 0x6a, 0x41, 0x5c, 0x7e, 0x1f, 0xca, 0xc5, 0x42, 0x06, + 0xb0, 0x15, 0x88, 0xb3, 0x7e, 0x74, 0x35, 0x26, 0xbd, 0x83, 0x8d, 0x9c, + 0x94, 0x1c, 0x2c, 0x09, 0x0e, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd9, + 0xdc, 0x70, 0x3d, 0x83, 0xfc, 0x7b, 0x70, 0x6f, 0x2e, 0x08, 0x20, 0x60, + 0x65, 0x6e, 0x22, 0xcd, 0xc0, 0xfe, 0x4f, 0xed, 0xed, 0xc1, 0x49, 0x38, + 0x21, 0x44, 0xb1, 0x09, 0xba, 0xaf, 0xca, 0x35, 0x00, 0x58, 0x1b, 0x4f, + 0x05, 0xc2, 0x14, 0x65, 0xc0, 0x4c, 0xb0, 0x21, 0xa6, 0xe1, 0x61, 0x34, + 0x55, 0x88, 0xa7, 0x17, 0x8c, 0x74, 0x52, 0x2a, 0xd3, 0x66, 0x46, 0xcc, + 0x04, 0xc1, 0xb2, 0x68, 0x61, 0x3c, 0xa3, 0x42, 0x8e, 0x73, 0x31, 0x0c, + 0x48, 0x12, 0x26, 0x74, 0xab, 0xe7, 0x75, 0x58, 0x39, 0x13, 0xca, 0xc2, + 0x16, 0x7f, 0x5d, 0x0c, 0x55, 0xab, 0x11, 0x29, 0x16, 0x96, 0xf5, 0x00, + 0xf9, 0x47, 0x2a, 0x8b, 0x83, 0x7a, 0x55, 0xe9, 0xe4, 0xe2, 0x5d, 0x54, + 0xce, 0x4e, 0xb4, 0xf8, 0xea, 0x0f, 0x22, 0x6a, 0x48, 0x09, 0xd8, 0x6b, + 0x89, 0xf0, 0x4c, 0x0f, 0x80, 0x85, 0x4e, 0xfe, 0x35, 0x79, 0x95, 0x2c, + 0xdc, 0xd6, 0x77, 0x72, 0xd5, 0xa4, 0x21, 0x4a, 0x31, 0x37, 0x6d, 0x36, + 0x9d, 0x6c, 0xb2, 0xeb, 0x1c, 0x3c, 0xd0, 0xd0, 0xf3, 0x2f, 0xf6, 0x38, + 0x48, 0xdd, 0xea, 0xf7, 0x44, 0x34, 0xae, 0xb4, 0x92, 0x95, 0xa5, 0x94, + 0xe7, 0x21, 0xaa, 0xd2, 0x31, 0xd9, 0x65, 0x32, 0x31, 0x58, 0xcc, 0xbd, + 0xb7, 0x79, 0x19, 0x25, 0x5b, 0x5b, 0x45, 0x67, 0x62, 0xd1, 0xdb, 0x7a, + 0xe6, 0x6a, 0xa3, 0x2c, 0x88, 0xf4, 0x64, 0x52, 0x29, 0xdd, 0x5a, 0xd6, + 0x8f, 0x76, 0x76, 0xab, 0x14, 0xca, 0xd9, 0x90, 0xc5, 0x2f, 0x29, 0x84, + 0x9c, 0xa3, 0x46, 0x03, 0x45, 0x44, 0x86, 0x0b, 0x07, 0x82, 0x42, 0xe4, + 0x11, 0x38, 0x90, 0x48, 0x60, 0x20, 0xf0, 0xf2, 0xc8, 0x60, 0x26, 0x81, + 0xd4, 0x08, 0x0b, 0xf4, 0xc1, 0x93, 0x84, 0x48, 0xc9, 0xc8, 0x27, 0x54, + 0xc3, 0x23, 0x03, 0xd8, 0xc4, 0x20, 0x31, 0xd0, 0xe7, 0x9e, 0x51, 0xe4, + 0xc8, 0x5a, 0x3b, 0x10, 0xc3, 0xa5, 0x20, 0x84, 0xc8, 0x2a, 0x19, 0x94, + 0xc1, 0x1b, 0x0a, 0x80, 0xc2, 0x79, 0x19, 0xdc, 0xd0, 0x8a, 0xa8, 0xb4, + 0xc5, 0x27, 0x0e, 0x64, 0xc0, 0xc8, 0x06, 0x28, 0xcc, 0xed, 0xcd, 0x11, + 0x48, 0xcc, 0x54, 0xcc, 0x84, 0xc4, 0xc1, 0x80, 0xd4, 0xf9, 0x00, 0x80, + 0xb1, 0xe8, 0x20, 0x09, 0x80, 0xb3, 0x76, 0x16, 0x91, 0xe2, 0xc2, 0xcd, + 0x22, 0x80, 0x88, 0x05, 0x0c, 0xd5, 0x3b, 0xac, 0xfa, 0x27, 0x0a, 0x73, + 0x35, 0xc6, 0xe6, 0xa3, 0x8c, 0x2d, 0xe2, 0x53, 0xa4, 0x82, 0x7a, 0xd8, + 0x22, 0x9d, 0x29, 0xdb, 0x01, 0xc9, 0x98, 0xb9, 0x72, 0xd6, 0x53, 0x1b, + 0x83, 0xfa, 0xe0, 0xcf, 0xb6, 0x38, 0xab, 0xfa, 0xfe, 0x22, 0xe7, 0x58, + 0x60, 0xee, 0x4a, 0xb5, 0xc4, 0x6d, 0xb2, 0xc3, 0xcb, 0xa6, 0x39, 0x99, + 0x1e, 0x3b, 0x7b, 0xb6, 0x54, 0x8c, 0x26, 0xaa, 0xae, 0x1c, 0x5e, 0xcb, + 0x0a, 0xbb, 0xbb, 0xfd, 0x42, 0x4e, 0x43, 0x66, 0x66, 0x50, 0xb5, 0x27, + 0x1f, 0xb7, 0x29, 0xd6, 0xd9, 0x5b, 0xdb, 0x1e, 0x3d, 0x60, 0x4a, 0xbb, + 0x79, 0x1d, 0x30, 0xe2, 0x92, 0x64, 0xc6, 0xac, 0xf5, 0xfd, 0x5d, 0xcc, + 0xac, 0xbd, 0x1f, 0x2a, 0x67, 0x45, 0xe9, 0xb6, 0xeb, 0x88, 0x38, 0x51, + 0xd6, 0xad, 0xaf, 0x93, 0x2c, 0x91, 0x18, 0x60, 0xf6, 0xdd, 0xd1, 0x89, + 0x79, 0x08, 0x7a, 0xca, 0xae, 0x63, 0x7b, 0x96, 0x18, 0x6a, 0xb5, 0x6b, + 0x32, 0x7a, 0x2a, 0x1c, 0xb3, 0x09, 0xad, 0xe4, 0x06, 0x46, 0xe7, 0x97, + 0x79, 0xa8, 0xec, 0x8d, 0xf0, 0x3b, 0x84, 0x5a, 0xe1, 0x95, 0xd3, 0x62, + 0xb6, 0x13, 0xf8, 0x99, 0x79, 0x11, 0x4d, 0x1d, 0xce, 0x44, 0x34, 0xe3, + 0x6a, 0x9a, 0x32, 0xe4, 0x99, 0xd8, 0xe1, 0x3d, 0x62, 0x3a, 0x20, 0x94, + 0xef, 0x6e, 0x49, 0xdd, 0xdf, 0xdb, 0xf4, 0xaa, 0x7d, 0x15, 0xd5, 0x11, + 0xd5, 0xfd, 0x8f, 0xf4, 0x33, 0x91, 0xc4, 0x1d, 0x89, 0x44, 0x77, 0x6f, + 0x4f, 0xc9, 0xa7, 0x6e, 0xb6, 0xb3, 0xae, 0xc9, 0xba, 0x53, 0xce, 0x65, + 0xfb, 0x6e, 0x96, 0xed, 0x67, 0xaf, 0x65, 0x32, 0x3a, 0xe8, 0xff, 0xd9, + 0xd6, 0x97, 0xff, 0x46, 0x72, 0x6d, 0x57, 0x5e, 0xdd, 0xee, 0xcc, 0xef, + 0x6c, 0xac, 0xd6, 0xba, 0x68, 0x93, 0x18, 0x18, 0x62, 0x19, 0x86, 0x06, + 0x19, 0x45, 0x8e, 0x0e, 0x83, 0x10, 0x18, 0x31, 0xaa, 0x19, 0x00, 0x03, + 0x01, 0xcc, 0x0f, 0x63, 0x03, 0xe0, 0x33, 0x33, 0x02, 0x16, 0x6c, 0x63, + 0x64, 0xe4, 0x41, 0x13, 0x03, 0xb8, 0x10, 0x93, 0x13, 0xb4, 0xce, 0xc3, + 0xb5, 0x5d, 0x03, 0x13, 0x1f, 0x44, 0x14, 0xc3, 0x80, 0xac, 0xc3, 0x03, + 0x19, 0x10, 0x51, 0xc3, 0x06, 0xb8, 0x20, 0x93, 0x0b, 0x8c, 0x45, 0x23, + 0x31, 0x6b, 0x0c, 0x03, 0x12, 0x74, 0x49, 0x03, 0x05, 0x30, 0x16, 0x93, + 0x55, 0xa4, 0x33, 0xd7, 0x12, 0x03, 0x53, 0x16, 0x20, 0x16, 0x3e, 0x1c, + 0x08, 0x20, 0x0a, 0x16, 0x04, 0x30, 0x30, 0x46, 0x5e, 0xce, 0x9d, 0x34, + 0x4a, 0x4f, 0x16, 0x83, 0x51, 0x0a, 0x97, 0xd8, 0x58, 0x02, 0xcc, 0xcb, + 0xf4, 0x09, 0x09, 0x74, 0xdc, 0x36, 0xf1, 0xcd, 0x8b, 0xca, 0xe3, 0x4e, + 0xc4, 0x2e, 0x40, 0xda, 0x29, 0xf6, 0x01, 0x03, 0x26, 0xf7, 0x5e, 0x68, + 0x52, 0xe4, 0xba, 0xd2, 0x63, 0xb2, 0xb7, 0xde, 0x19, 0x71, 0xd5, 0x6a, + 0xe5, 0xf6, 0xf5, 0x63, 0x99, 0xd0, 0xe0, 0x82, 0x51, 0x21, 0x0b, 0xcc, + 0x08, 0x53, 0x82, 0xdb, 0x22, 0x1c, 0xf9, 0xf2, 0xb1, 0x4a, 0x87, 0xb3, + 0x2b, 0x14, 0x74, 0x59, 0x7b, 0xff, 0xfb, 0xd4, 0x60, 0x52, 0x0d, 0xd9, + 0x16, 0x70, 0x3f, 0x13, 0xfb, 0x7b, 0x70, 0x53, 0x4d, 0xe8, 0x42, 0x20, + 0x45, 0x6e, 0x65, 0x5d, 0xbe, 0xfa, 0x0f, 0xed, 0xed, 0xc1, 0x53, 0x37, + 0xe1, 0x04, 0x80, 0x89, 0xb8, 0x98, 0x4e, 0x0c, 0xac, 0x09, 0x0f, 0x19, + 0x30, 0x86, 0x29, 0x91, 0x65, 0xf2, 0xaa, 0xa4, 0xd2, 0x41, 0x61, 0xa8, + 0xcb, 0x5e, 0x4a, 0x52, 0xeb, 0x64, 0xcb, 0x50, 0xee, 0xca, 0xdc, 0xa0, + 0x41, 0x1f, 0x91, 0x25, 0x6e, 0x5b, 0x8f, 0x32, 0x7c, 0xef, 0x50, 0x58, + 0xf9, 0x42, 0x14, 0x70, 0x21, 0x55, 0x5a, 0xf5, 0x81, 0x81, 0xaa, 0x19, + 0xc9, 0x46, 0xe5, 0x6a, 0xfd, 0x61, 0xb7, 0xa6, 0xec, 0x9f, 0xdb, 0xac, + 0x43, 0x91, 0x09, 0x95, 0x41, 0x97, 0x58, 0x85, 0x55, 0x99, 0x15, 0x4a, + 0x48, 0xfd, 0xb9, 0x82, 0x33, 0x73, 0x62, 0xd2, 0xb1, 0xc9, 0xb5, 0xa1, + 0x91, 0xd3, 0x3b, 0x12, 0x8d, 0x56, 0xcd, 0x24, 0x67, 0x15, 0x1b, 0x8b, + 0x73, 0xd4, 0xc3, 0x7b, 0x31, 0xd5, 0x12, 0x31, 0xb9, 0x46, 0x95, 0x7b, + 0x93, 0x39, 0xbe, 0xa9, 0x44, 0x17, 0xc3, 0x8d, 0x88, 0xe7, 0x99, 0x8c, + 0x90, 0x00, 0x01, 0xd3, 0xfa, 0xeb, 0xa2, 0x25, 0x16, 0x6b, 0x32, 0x3e, + 0x6a, 0x93, 0x57, 0x4e, 0x97, 0x50, 0xcc, 0x14, 0x23, 0x1c, 0x21, 0x6a, + 0xee, 0x14, 0x96, 0x44, 0xed, 0xd7, 0xab, 0x32, 0xdd, 0xf4, 0xff, 0x45, + 0x42, 0x7b, 0x6b, 0x52, 0x64, 0xbc, 0xce, 0x8b, 0xd5, 0x7a, 0xff, 0x4a, + 0x26, 0xdd, 0x77, 0x6a, 0x3f, 0xdb, 0xd5, 0x57, 0x5f, 0xe9, 0xaf, 0x75, + 0xba, 0x12, 0xfb, 0x73, 0x4e, 0xbd, 0x19, 0xee, 0xf5, 0x47, 0x8b, 0x34, + 0xa6, 0x48, 0x90, 0x2a, 0xb9, 0x83, 0xcc, 0x28, 0x57, 0x0e, 0x0c, 0x30, + 0x49, 0x40, 0xf4, 0x30, 0x85, 0x00, 0x6e, 0x31, 0x1c, 0x9b, 0x70, 0x39, + 0xfc, 0xc3, 0xa7, 0x30, 0x7e, 0x43, 0x92, 0x30, 0x9d, 0x54, 0x5d, 0x37, + 0x0f, 0xdb, 0x96, 0x30, 0x73, 0xc5, 0x02, 0x3c, 0x59, 0x12, 0xc4, 0x30, + 0xc6, 0xc3, 0x8d, 0x30, 0x5c, 0x41, 0x71, 0x31, 0x35, 0x84, 0xf7, 0x38, + 0x46, 0xea, 0x33, 0x32, 0x61, 0x03, 0x51, 0x30, 0x58, 0x40, 0xa0, 0x3e, + 0x83, 0x32, 0x2b, 0xb3, 0x2c, 0x39, 0x33, 0x82, 0xe4, 0x7d, 0x0e, 0x0e, + 0x9c, 0x2f, 0x01, 0x81, 0x85, 0x02, 0x88, 0xd1, 0xfd, 0xb5, 0x01, 0x1c, + 0x0d, 0x1c, 0xa0, 0x9e, 0x36, 0x18, 0x30, 0xa3, 0x86, 0x12, 0x02, 0x85, + 0x2b, 0xad, 0xac, 0x97, 0x14, 0x68, 0x2d, 0x9f, 0xa9, 0xd4, 0x1c, 0xea, + 0x48, 0x54, 0xbd, 0xd9, 0x47, 0x38, 0x0e, 0x15, 0x0c, 0x32, 0x08, 0xd3, + 0x4f, 0x9c, 0x8d, 0xb2, 0x38, 0xc4, 0x3f, 0x49, 0x3a, 0xfa, 0xb1, 0x98, + 0xc4, 0x16, 0xaf, 0x56, 0xea, 0xae, 0x2f, 0x89, 0x59, 0xc8, 0x7e, 0xa3, + 0xa7, 0x48, 0x22, 0x9f, 0xca, 0xa8, 0x53, 0xb1, 0xab, 0xd8, 0xd0, 0xf9, + 0x1b, 0xce, 0xf3, 0xa4, 0xbb, 0xad, 0x25, 0x96, 0xd5, 0x89, 0xc5, 0xe6, + 0x15, 0xc3, 0xd7, 0x3d, 0x14, 0x4e, 0x95, 0xea, 0x9e, 0xcc, 0x7b, 0xbd, + 0x3c, 0x16, 0x4f, 0xa7, 0xeb, 0x96, 0x14, 0xf9, 0xbe, 0xdc, 0xd9, 0x79, + 0xb3, 0x33, 0x02, 0xd4, 0x74, 0xf1, 0xfe, 0xaf, 0xca, 0x2d, 0x36, 0x85, + 0xb0, 0x8f, 0xa4, 0x4a, 0x75, 0xad, 0x38, 0xdc, 0xb9, 0x3f, 0x61, 0xac, + 0xb4, 0xc1, 0x44, 0xaa, 0x26, 0x2e, 0x67, 0xe4, 0x8e, 0x68, 0x54, 0x73, + 0xfe, 0x04, 0x26, 0x95, 0x6a, 0x85, 0x30, 0x84, 0x28, 0x4c, 0x46, 0x25, + 0x7b, 0x82, 0xf2, 0x1e, 0xfc, 0xfd, 0x5e, 0x91, 0x97, 0xb1, 0xc4, 0x5a, + 0xbc, 0x18, 0xb0, 0x1b, 0x99, 0x9d, 0xa7, 0x17, 0xd7, 0x4c, 0xe8, 0x4c, + 0x27, 0xef, 0x11, 0xc7, 0xaa, 0x91, 0x81, 0xf2, 0xc3, 0x24, 0x23, 0xcd, + 0x76, 0xb4, 0x75, 0xbe, 0x52, 0x31, 0x1d, 0x32, 0xbf, 0x48, 0xb0, 0x9a, + 0x8a, 0x63, 0x99, 0x08, 0x3d, 0x8e, 0xe7, 0x12, 0xc0, 0xd2, 0x60, 0x3a, + 0x98, 0x61, 0x44, 0xdc, 0xd8, 0xc5, 0x4c, 0x6f, 0x64, 0x88, 0x80, 0x52, + 0x8d, 0x0d, 0xe1, 0x26, 0x77, 0x97, 0x01, 0x00, 0x27, 0x93, 0x10, 0xa6, + 0x54, 0x74, 0xe8, 0xda, 0x35, 0xa4, 0xad, 0xf6, 0x74, 0x55, 0x5e, 0x97, + 0xef, 0x6f, 0x5f, 0x97, 0xd5, 0xea, 0xc9, 0xbf, 0xd1, 0x79, 0xdf, 0xa7, + 0xb5, 0xb4, 0x7f, 0x56, 0xd1, 0xbd, 0xe8, 0xd6, 0x9e, 0xbd, 0x5d, 0xab, + 0xd9, 0x96, 0xca, 0xea, 0xd7, 0xbb, 0x10, 0xca, 0xe6, 0x39, 0x8a, 0x18, + 0x58, 0x33, 0xb8, 0x93, 0x0b, 0x38, 0x11, 0x88, 0x67, 0x01, 0x2d, 0x06, + 0x40, 0x03, 0x02, 0x8c, 0x02, 0x93, 0x06, 0xd8, 0x3e, 0x23, 0x04, 0x54, + 0xa0, 0x83, 0x96, 0xac, 0x0d, 0x20, 0xe2, 0x8f, 0xcc, 0x5c, 0x81, 0x67, + 0xcf, 0x03, 0xa0, 0xbb, 0x0c, 0x3b, 0xa1, 0xcf, 0x8e, 0x44, 0x38, 0xa3, + 0x4c, 0x41, 0x80, 0x94, 0xcc, 0x3a, 0x90, 0xdd, 0x0c, 0x11, 0xf0, 0x17, + 0xce, 0x0e, 0x82, 0xae, 0x0c, 0x8d, 0xb0, 0x29, 0x4c, 0x23, 0x60, 0x11, + 0x4e, 0x26, 0x0b, 0x33, 0x72, 0x38, 0xc0, 0xe0, 0xa4, 0xc6, 0x30, 0xa1, + 0x19, 0x6b, 0x02, 0x40, 0xa4, 0x80, 0x23, 0x06, 0x83, 0x06, 0x87, 0x4c, + 0xfc, 0xb8, 0xe0, 0xe1, 0x08, 0x08, 0x1e, 0x1c, 0x0a, 0x42, 0x88, 0xda, + 0xed, 0x2e, 0x82, 0x27, 0x34, 0x98, 0xe0, 0x88, 0x1d, 0x69, 0xb9, 0xb2, + 0x18, 0x3d, 0xc4, 0xe2, 0x51, 0xac, 0xda, 0x65, 0x2f, 0x7d, 0xd4, 0xb1, + 0xaf, 0x3b, 0x71, 0xa5, 0x70, 0xab, 0x96, 0x01, 0x2e, 0x19, 0x6d, 0x3b, + 0xfc, 0xca, 0x18, 0xa3, 0x6f, 0xff, 0xfb, 0xd4, 0x60, 0x45, 0x0d, 0xd9, + 0x42, 0x70, 0x3f, 0x13, 0xfc, 0x7b, 0x70, 0x55, 0xed, 0xf8, 0x42, 0x34, + 0x42, 0x6e, 0x25, 0x35, 0xc0, 0xfa, 0x0f, 0xed, 0xed, 0xc1, 0x60, 0x38, + 0x21, 0x04, 0xf1, 0x15, 0xb8, 0x4e, 0x5c, 0x17, 0x60, 0x55, 0x1f, 0x86, + 0x82, 0xf2, 0x7d, 0xba, 0x1a, 0xb9, 0x12, 0x86, 0x43, 0x39, 0xe3, 0xa6, + 0x8c, 0x85, 0x03, 0x03, 0x09, 0xa6, 0xce, 0xdd, 0x01, 0x5f, 0x06, 0x32, + 0x25, 0x10, 0xed, 0xb6, 0x33, 0x7e, 0xd3, 0xfb, 0x7f, 0x76, 0x43, 0x2d, + 0xb1, 0xc2, 0x6d, 0xae, 0x9f, 0x32, 0x2b, 0xcc, 0x25, 0x42, 0xaa, 0x04, + 0xb0, 0x62, 0x2e, 0x9e, 0x39, 0x2d, 0xae, 0xa3, 0xa8, 0xd1, 0xc9, 0x86, + 0xbc, 0x47, 0x74, 0xa1, 0x5e, 0x53, 0xdd, 0x65, 0x08, 0x54, 0x23, 0x5c, + 0x14, 0x2a, 0x87, 0xb1, 0x5e, 0xbe, 0xa3, 0x9b, 0xe5, 0xbd, 0xe2, 0x47, + 0x38, 0x2d, 0x19, 0x84, 0xf2, 0x03, 0x33, 0xe5, 0x96, 0xcd, 0xc7, 0x5b, + 0xac, 0x37, 0x6a, 0x64, 0xf1, 0xd3, 0x0d, 0x66, 0x25, 0x8f, 0xf7, 0x70, + 0xf1, 0x05, 0xc9, 0xeb, 0x1c, 0xef, 0xde, 0xa9, 0x61, 0xd6, 0x65, 0x0a, + 0xa1, 0x70, 0xd3, 0x88, 0x8d, 0xb1, 0xd9, 0x66, 0x6c, 0x6a, 0x99, 0x40, + 0x9e, 0x4f, 0xb1, 0xc2, 0x6e, 0x43, 0x50, 0xa3, 0x4d, 0x3e, 0xad, 0x3e, + 0x13, 0xa8, 0x85, 0xe5, 0x51, 0xf0, 0x4c, 0xc5, 0x80, 0x00, 0x11, 0x96, + 0x4c, 0xd4, 0xe9, 0x87, 0x5c, 0xf9, 0xa5, 0x26, 0x43, 0x9c, 0xbb, 0xfb, + 0xb7, 0x45, 0x46, 0x24, 0x96, 0x35, 0x59, 0x08, 0xf3, 0xdd, 0x21, 0x93, + 0xb0, 0x26, 0x21, 0xdd, 0x5e, 0xff, 0xad, 0x74, 0x45, 0xfb, 0xd6, 0xbd, + 0x3f, 0xd9, 0x9f, 0xfb, 0x2f, 0x4d, 0x6a, 0xac, 0xb6, 0x4d, 0xa8, 0x8a, + 0xf3, 0x6f, 0x7d, 0xb5, 0x45, 0x4b, 0xee, 0xbf, 0xf9, 0xad, 0xe9, 0x67, + 0xfa, 0x9d, 0x48, 0xf4, 0x86, 0x43, 0x3a, 0xb2, 0x14, 0x4d, 0x54, 0x80, + 0x46, 0x76, 0x06, 0x18, 0x19, 0xc4, 0x45, 0x40, 0x03, 0x98, 0x04, 0x60, + 0x72, 0x98, 0x27, 0x02, 0x94, 0x18, 0x6f, 0xe5, 0xd6, 0x9c, 0xbf, 0x62, + 0x61, 0x18, 0x36, 0xa1, 0x4c, 0x98, 0xab, 0xe9, 0x9c, 0x18, 0xc5, 0xc6, + 0xf8, 0x98, 0xc6, 0xc8, 0x12, 0x9a, 0xa5, 0xb9, 0x01, 0x18, 0x2f, 0xe2, + 0xce, 0x18, 0xb1, 0x40, 0xe5, 0x98, 0x38, 0x62, 0x9d, 0x1c, 0x54, 0xaf, + 0xc9, 0x18, 0xd6, 0x01, 0x0f, 0x18, 0x41, 0xa0, 0x8f, 0x9b, 0x73, 0xf1, + 0xb2, 0xc4, 0x9a, 0x63, 0x01, 0x98, 0x1e, 0x06, 0x07, 0x01, 0x8f, 0x0b, + 0x3e, 0xc1, 0x46, 0x8b, 0x86, 0x97, 0xe1, 0x66, 0x00, 0x0a, 0x02, 0x2e, + 0x49, 0xa1, 0xa4, 0x46, 0xe6, 0x92, 0x51, 0x82, 0x22, 0x75, 0x72, 0x9f, + 0xcb, 0xdd, 0x87, 0x48, 0x62, 0x14, 0x10, 0x85, 0xd6, 0xca, 0xa4, 0x94, + 0x8f, 0x5b, 0xe5, 0x37, 0x14, 0x78, 0xa2, 0x4e, 0xa4, 0x96, 0x3e, 0xdc, + 0x9e, 0x66, 0xb4, 0xed, 0xc4, 0x25, 0x70, 0xc4, 0xd3, 0x74, 0x57, 0xa6, + 0x21, 0x9c, 0xc7, 0x04, 0x73, 0xb5, 0xc5, 0xfa, 0x45, 0xbd, 0x3f, 0x1d, + 0x48, 0x8a, 0x5d, 0x24, 0x9d, 0x38, 0xa4, 0x99, 0x8f, 0x75, 0x62, 0xa1, + 0x7c, 0x7f, 0xd4, 0xe7, 0x68, 0x64, 0x3d, 0xce, 0x13, 0x35, 0x52, 0xa5, + 0x9c, 0xe7, 0x38, 0x94, 0x11, 0x10, 0xfa, 0x25, 0x12, 0xd0, 0x13, 0xad, + 0xc8, 0x7a, 0xc3, 0x63, 0xd5, 0xa9, 0x96, 0x17, 0x4c, 0x8d, 0xaf, 0xd8, + 0x6e, 0xb8, 0x5d, 0xc5, 0x54, 0x28, 0xdb, 0x52, 0xcd, 0xd1, 0x17, 0x8b, + 0xaa, 0x91, 0x70, 0x9e, 0x96, 0xd2, 0x4c, 0xed, 0x5a, 0x88, 0x86, 0xde, + 0xc4, 0x69, 0xa2, 0x15, 0x4f, 0xb2, 0x7e, 0x45, 0x3f, 0x55, 0xa8, 0x4c, + 0x36, 0x58, 0x2d, 0xc8, 0x52, 0x75, 0x58, 0x7d, 0xb4, 0xc2, 0x52, 0x5d, + 0x81, 0xf2, 0xa9, 0x95, 0x35, 0x45, 0xb7, 0x19, 0x6b, 0x1e, 0x09, 0xff, + 0x86, 0x66, 0x74, 0x55, 0x9a, 0x95, 0x29, 0xed, 0xa9, 0x93, 0xaf, 0xe0, + 0x31, 0xcc, 0xcc, 0xcf, 0x05, 0xf9, 0xca, 0xda, 0x75, 0xa3, 0x57, 0xd1, + 0xac, 0xed, 0x13, 0x21, 0x0e, 0x4d, 0xc8, 0x69, 0x84, 0xd8, 0x42, 0x8b, + 0xa0, 0xc9, 0x28, 0x4a, 0x84, 0x72, 0x6c, 0x83, 0x32, 0x7d, 0x4f, 0x27, + 0xb4, 0xf1, 0x33, 0x8c, 0xf8, 0xbf, 0x9a, 0xe0, 0xd7, 0x66, 0x3b, 0x93, + 0x4b, 0x2d, 0x91, 0xf3, 0xfe, 0xac, 0xe7, 0x55, 0xf6, 0x42, 0x26, 0xbb, + 0x5c, 0xf6, 0xcf, 0xf6, 0x3b, 0x6b, 0x7e, 0xd5, 0xef, 0xce, 0xaf, 0x44, + 0x99, 0xbb, 0xba, 0x51, 0xf4, 0x6c, 0x95, 0xbe, 0xf5, 0xe6, 0xa6, 0xdd, + 0x15, 0xf5, 0x7e, 0xf7, 0x5e, 0xba, 0xd1, 0xb2, 0x92, 0xba, 0xad, 0xd6, + 0xad, 0x22, 0x4c, 0x52, 0x91, 0x58, 0xce, 0x8c, 0x28, 0x72, 0x9c, 0x44, + 0x4d, 0x48, 0xaa, 0x8a, 0x2e, 0xc3, 0x14, 0x0e, 0x31, 0x90, 0x4d, 0x02, + 0x01, 0x06, 0x60, 0x21, 0x09, 0x38, 0x61, 0xdc, 0xa7, 0x3a, 0x6c, 0x76, + 0x87, 0x5c, 0x60, 0x6d, 0x83, 0xda, 0x60, 0x63, 0x8a, 0x88, 0x68, 0x6c, + 0x89, 0x56, 0x61, 0xe8, 0x18, 0xdc, 0x7d, 0x19, 0x45, 0xb2, 0x63, 0x98, + 0x8e, 0x5e, 0x61, 0x71, 0x84, 0x56, 0x60, 0xc0, 0x86, 0xd6, 0x69, 0x46, + 0x49, 0xb2, 0x62, 0x00, 0x05, 0x58, 0x60, 0xc8, 0x01, 0x90, 0x71, 0xb3, + 0x89, 0xb2, 0x87, 0xc6, 0x73, 0x31, 0x98, 0xc4, 0xc6, 0x64, 0x60, 0x20, + 0x58, 0x46, 0x01, 0x0f, 0x01, 0x03, 0x60, 0x60, 0xf0, 0x70, 0x5d, 0x15, + 0x86, 0x80, 0x8a, 0x90, 0x68, 0x04, 0xd5, 0x54, 0x75, 0x52, 0x2c, 0x0a, + 0xdd, 0x56, 0x58, 0x79, 0x57, 0xff, 0xfb, 0xd4, 0x60, 0x33, 0x0f, 0xd9, + 0x16, 0x70, 0x3f, 0x03, 0xfc, 0x7b, 0x70, 0x56, 0x2e, 0x08, 0x40, 0x18, + 0x45, 0x6e, 0x1e, 0xed, 0xc1, 0x00, 0x0f, 0xe9, 0x8d, 0xc1, 0x39, 0x38, + 0x21, 0x44, 0xf0, 0x89, 0xb8, 0x36, 0x56, 0x74, 0xb8, 0x1e, 0xe5, 0xd8, + 0xcc, 0xdd, 0x06, 0x67, 0x7e, 0x82, 0x1d, 0x7f, 0x9b, 0xab, 0xf3, 0x39, + 0x35, 0x0c, 0x3d, 0x90, 0x33, 0xfa, 0xd7, 0xe1, 0x86, 0xf9, 0xd8, 0x89, + 0xdd, 0x97, 0x9d, 0x29, 0x63, 0xb1, 0x99, 0x42, 0x9f, 0x6c, 0x38, 0xcc, + 0x32, 0xc2, 0xf9, 0x0c, 0x89, 0x01, 0x26, 0xa6, 0x49, 0x9c, 0xc6, 0x12, + 0xcb, 0x7a, 0x71, 0x9d, 0xd5, 0x56, 0xe5, 0xca, 0x51, 0xc9, 0xa9, 0xbe, + 0x8c, 0xea, 0xe4, 0x82, 0xb1, 0xb2, 0xaf, 0x61, 0xba, 0x5a, 0x95, 0x89, + 0x21, 0x68, 0xca, 0xf5, 0x44, 0xf1, 0x76, 0xc4, 0xa6, 0x7b, 0x1e, 0x32, + 0x8d, 0x46, 0xce, 0xc8, 0xab, 0x6e, 0xb4, 0x44, 0xcc, 0x15, 0x89, 0xef, + 0x1d, 0xec, 0xf3, 0x3e, 0x9d, 0x58, 0xa4, 0x95, 0xe2, 0xde, 0x96, 0xdc, + 0x18, 0xe3, 0x27, 0x22, 0x4a, 0xa5, 0x76, 0xf1, 0x52, 0xc6, 0x8a, 0x56, + 0x1d, 0xf2, 0xab, 0xf2, 0xe3, 0x87, 0x6f, 0x5e, 0x30, 0x32, 0x36, 0x36, + 0x4b, 0x15, 0xeb, 0x13, 0x0a, 0x89, 0xa5, 0xad, 0xbe, 0xf9, 0x92, 0x46, + 0xe6, 0xfa, 0xb1, 0x38, 0xea, 0xad, 0x87, 0x94, 0x0d, 0xb4, 0x38, 0xa9, + 0x5f, 0x5d, 0xbd, 0x85, 0xa9, 0xb5, 0x18, 0xe8, 0xba, 0xa8, 0x9f, 0x33, + 0x30, 0xa1, 0xe6, 0xc1, 0xdc, 0x69, 0x0e, 0xc2, 0xcc, 0xe6, 0x57, 0x13, + 0x13, 0x04, 0x03, 0xf1, 0x1c, 0xcb, 0x2c, 0x96, 0x1b, 0x9e, 0xd0, 0x35, + 0x4f, 0x60, 0x6c, 0xa9, 0x91, 0x8d, 0x31, 0x98, 0x9a, 0xef, 0x55, 0x7b, + 0x27, 0xad, 0x7f, 0x7b, 0x7a, 0x3d, 0x3b, 0x3a, 0x5d, 0xda, 0xd6, 0x7e, + 0xd6, 0xde, 0xe4, 0xb2, 0xfe, 0xf6, 0x6d, 0x6d, 0xa7, 0x4e, 0x8d, 0xbe, + 0xb7, 0xff, 0x44, 0x9d, 0x0a, 0xfa, 0xbb, 0x52, 0xf6, 0x57, 0x45, 0xbd, + 0x1f, 0x42, 0x16, 0xae, 0xe9, 0xde, 0xfa, 0x4a, 0xd9, 0x93, 0xa3, 0x8c, + 0x11, 0x62, 0x38, 0xd1, 0x60, 0x41, 0xa2, 0x62, 0x68, 0x43, 0x8a, 0x9c, + 0xc2, 0x45, 0x12, 0x1c, 0x60, 0x16, 0x00, 0xc6, 0x60, 0x12, 0x86, 0x04, + 0x61, 0x67, 0xa4, 0xd6, 0x65, 0x4b, 0x86, 0x90, 0x10, 0x02, 0x71, 0x81, + 0x06, 0x18, 0xb9, 0x85, 0x84, 0x3e, 0x31, 0x89, 0x22, 0x07, 0x09, 0xf3, + 0x1e, 0x32, 0x69, 0x8e, 0x0c, 0x2c, 0xe1, 0x82, 0xba, 0x07, 0x51, 0x82, + 0x98, 0x16, 0xb1, 0x8b, 0xa8, 0x9c, 0xd1, 0x81, 0xe2, 0x04, 0x89, 0x82, + 0x34, 0x04, 0xc9, 0xd5, 0x0c, 0x6a, 0x87, 0x18, 0xb1, 0x01, 0x78, 0x23, + 0x04, 0x54, 0x75, 0x6f, 0xb3, 0x94, 0xc7, 0x76, 0x95, 0x6b, 0xa9, 0x3e, + 0xc1, 0x50, 0x45, 0x2d, 0xa5, 0x97, 0xc4, 0x9c, 0x86, 0x51, 0x21, 0x86, + 0x6a, 0xb3, 0xa8, 0x1e, 0x5d, 0x02, 0xca, 0x20, 0x1b, 0xf2, 0x4a, 0x4c, + 0x70, 0x9d, 0x77, 0x29, 0x60, 0xc7, 0xda, 0x5f, 0x5f, 0xe2, 0xd9, 0x3f, + 0x53, 0x5f, 0x6d, 0x9b, 0x32, 0xb2, 0x8b, 0x12, 0x1f, 0x51, 0xca, 0x94, + 0xd7, 0x2d, 0xaa, 0x4a, 0xaa, 0x61, 0x4b, 0x35, 0x1e, 0x92, 0x95, 0xb0, + 0x82, 0xb4, 0x96, 0x8d, 0x7a, 0xf4, 0x4d, 0xaa, 0x88, 0xf8, 0xb3, 0x13, + 0xab, 0x62, 0x65, 0xc3, 0x23, 0x83, 0xdb, 0xb5, 0x1c, 0xae, 0x71, 0x85, + 0x2c, 0xd8, 0xbb, 0x34, 0x7d, 0xe8, 0xac, 0xe3, 0x4d, 0xb4, 0xbd, 0x72, + 0xf6, 0xd7, 0xee, 0x53, 0xd8, 0x98, 0xd6, 0x2e, 0x24, 0xc7, 0x14, 0x6c, + 0x20, 0x34, 0xbd, 0x4d, 0x50, 0x8d, 0x9e, 0x42, 0x9a, 0xc9, 0x9a, 0xf8, + 0x17, 0x55, 0x12, 0xe8, 0x97, 0xa1, 0xea, 0xd7, 0x63, 0x5d, 0x0d, 0x93, + 0x15, 0x9f, 0xc5, 0x6a, 0x22, 0x68, 0xf5, 0xbd, 0x7e, 0xed, 0x3b, 0x7f, + 0xf3, 0x7b, 0xaf, 0x6f, 0xca, 0xa7, 0x53, 0x03, 0x18, 0xa5, 0x69, 0x7d, + 0x4c, 0x22, 0x70, 0xf2, 0xb8, 0x1d, 0x21, 0x39, 0xe8, 0x99, 0x11, 0x5c, + 0x3f, 0x2f, 0xed, 0x79, 0x63, 0xe6, 0xfb, 0xbd, 0xff, 0xdb, 0xe4, 0x6d, + 0xec, 0x8d, 0xf6, 0xe7, 0x46, 0x63, 0x04, 0xc6, 0x92, 0x1d, 0x53, 0x49, + 0x0a, 0x30, 0xb2, 0x35, 0xbf, 0xbf, 0xea, 0xd6, 0x6a, 0xbf, 0xae, 0x97, + 0xed, 0xd0, 0xde, 0xbe, 0xdb, 0x6d, 0xdb, 0xdb, 0xd2, 0xfd, 0x4d, 0x5d, + 0x7f, 0x7e, 0xca, 0xfe, 0xb5, 0x62, 0x6f, 0xba, 0x5f, 0xef, 0x53, 0xdf, + 0xb3, 0x13, 0x52, 0xc4, 0x2b, 0x86, 0x89, 0x23, 0x8c, 0x29, 0xdc, 0xe2, + 0x44, 0x54, 0x8e, 0x69, 0x06, 0x55, 0x30, 0x10, 0x80, 0xe9, 0x30, 0x35, + 0xc3, 0x42, 0x30, 0xba, 0xd8, 0x21, 0x32, 0x0a, 0x05, 0x0c, 0x30, 0x14, + 0xc1, 0x1b, 0x30, 0x84, 0x85, 0x48, 0x33, 0xfd, 0x84, 0x17, 0x31, 0x70, + 0x8a, 0xcd, 0x3f, 0x22, 0x29, 0x34, 0x31, 0x2d, 0x43, 0xbd, 0x31, 0x0d, + 0x01, 0xe9, 0x30, 0x7f, 0x40, 0x4c, 0x34, 0x43, 0x55, 0x0b, 0x30, 0x67, + 0x80, 0x35, 0x30, 0x16, 0xc0, 0x03, 0x35, 0x2a, 0x2e, 0xe9, 0xb9, 0x81, + 0x50, 0xf3, 0x4e, 0x31, 0x2e, 0x88, 0x47, 0x6b, 0xe6, 0x10, 0xa9, 0xac, + 0x81, 0xac, 0xcc, 0xbf, 0xeb, 0x08, 0x1d, 0x0b, 0x74, 0x55, 0x36, 0x7c, + 0xaa, 0xb3, 0xed, 0x69, 0xc0, 0x53, 0x99, 0x74, 0x8e, 0x30, 0xca, 0xd7, + 0x43, 0xae, 0xf8, 0x34, 0x68, 0x39, 0xb3, 0xc1, 0xac, 0x3a, 0x0e, 0x7d, + 0x60, 0x76, 0xeb, 0x1d, 0x7a, 0x1a, 0x4c, 0x10, 0xff, 0xcf, 0xc7, 0xe2, + 0x12, 0x89, 0xd5, 0x96, 0xa8, 0xff, 0xfb, 0xd4, 0x60, 0x41, 0x8f, 0xd8, + 0xcf, 0x70, 0x3f, 0x03, 0xf9, 0x7b, 0x70, 0x50, 0xae, 0x08, 0x51, 0x48, + 0x22, 0x6e, 0xa3, 0x89, 0xbe, 0xfa, 0x0f, 0xe5, 0x8d, 0xc1, 0x5e, 0x38, + 0x21, 0x04, 0xf0, 0x9d, 0xb8, 0x65, 0xe1, 0x9d, 0x38, 0xde, 0x88, 0x69, + 0x40, 0xac, 0xb9, 0x2b, 0xa4, 0x51, 0x35, 0x2f, 0xce, 0xba, 0x59, 0x5c, + 0x39, 0x32, 0x4f, 0xb4, 0xe2, 0x84, 0xff, 0x3b, 0x37, 0xb3, 0x2d, 0x81, + 0x7e, 0x29, 0xe4, 0x86, 0xae, 0xd6, 0xdd, 0xaf, 0xa1, 0x72, 0xbf, 0x56, + 0x2d, 0x45, 0x70, 0x26, 0x2a, 0xf4, 0xfa, 0xdb, 0x83, 0xc5, 0xca, 0x61, + 0xdc, 0x56, 0x05, 0x54, 0x73, 0x8a, 0x33, 0x63, 0x35, 0x15, 0x5b, 0x8f, + 0x2a, 0x5a, 0x1b, 0x27, 0xef, 0xd9, 0xd7, 0xe2, 0xb3, 0x29, 0x5b, 0x9c, + 0x9f, 0xd9, 0xbd, 0x61, 0xcb, 0xa2, 0xfb, 0xb5, 0x6c, 0xef, 0x17, 0x76, + 0x65, 0x99, 0xea, 0xda, 0xb6, 0x65, 0x13, 0x42, 0xa2, 0x23, 0x34, 0x49, + 0xe6, 0x78, 0xaf, 0x80, 0x9a, 0x6b, 0x7d, 0x15, 0x95, 0x95, 0xcd, 0xdd, + 0xb4, 0x9d, 0x66, 0x81, 0x76, 0xdd, 0x34, 0xc1, 0x71, 0x4e, 0xaa, 0x93, + 0x30, 0xe2, 0xac, 0x34, 0x9e, 0xec, 0xee, 0xf4, 0xcf, 0x39, 0xfc, 0xed, + 0x58, 0xc4, 0xd2, 0xc4, 0x84, 0x51, 0xf2, 0x8d, 0x24, 0xd6, 0x90, 0x76, + 0x20, 0x02, 0xe8, 0xee, 0x64, 0x6e, 0x60, 0x85, 0x69, 0x2d, 0x05, 0xa9, + 0xd8, 0xc8, 0x8d, 0x19, 0x84, 0x65, 0xc9, 0x76, 0x5d, 0xd1, 0x69, 0x68, + 0x97, 0x31, 0x8d, 0x82, 0x01, 0xb3, 0x69, 0xdb, 0x9b, 0x99, 0xd5, 0xee, + 0xbf, 0xfb, 0x3b, 0xf7, 0xeb, 0x5d, 0x93, 0x46, 0x5b, 0x6b, 0x93, 0xbe, + 0xaf, 0xa6, 0xd4, 0xb5, 0x1d, 0x35, 0x7d, 0x3a, 0x7f, 0xeb, 0xd3, 0xf4, + 0xfa, 0x6c, 0xdd, 0x0a, 0xa8, 0xe6, 0x7a, 0x91, 0x96, 0x30, 0x32, 0x97, + 0x63, 0x09, 0x02, 0x60, 0x61, 0xc5, 0x18, 0x18, 0x53, 0x02, 0x80, 0x0f, + 0x73, 0x04, 0xac, 0x26, 0xa3, 0x08, 0x05, 0x69, 0x33, 0x64, 0x10, 0x4d, + 0xe3, 0x0a, 0x58, 0x22, 0x13, 0x0b, 0x3c, 0x5f, 0xc3, 0x4d, 0x74, 0xbb, + 0x93, 0x07, 0x65, 0x34, 0x43, 0x3b, 0x17, 0xec, 0xd3, 0x08, 0xc8, 0x44, + 0x33, 0x15, 0xac, 0x1b, 0x23, 0x03, 0x78, 0x2f, 0x33, 0x48, 0xa0, 0xb8, + 0x83, 0x12, 0x8c, 0x0a, 0x23, 0x02, 0x58, 0x07, 0xc0, 0x2d, 0x66, 0x1b, + 0x66, 0x52, 0x26, 0x06, 0x80, 0x14, 0x00, 0x5b, 0xd8, 0x44, 0x12, 0xca, + 0xa8, 0xb3, 0x26, 0x49, 0x97, 0xe9, 0x3d, 0x01, 0xd7, 0xb7, 0x60, 0xc0, + 0x9b, 0xab, 0x02, 0x79, 0x19, 0x63, 0x28, 0xa3, 0x61, 0x50, 0xf3, 0xc9, + 0xb6, 0x19, 0x3e, 0xc0, 0xd6, 0xc6, 0x36, 0xa6, 0xf1, 0x6b, 0x71, 0x07, + 0xc5, 0x96, 0x3d, 0x4f, 0xcc, 0x0d, 0x0e, 0xd8, 0x78, 0xe2, 0x90, 0x2b, + 0x94, 0xdd, 0x4a, 0x22, 0x21, 0x5c, 0x74, 0x80, 0x8a, 0x68, 0x82, 0x82, + 0x57, 0x11, 0xc9, 0xe4, 0x24, 0xa5, 0xe5, 0x60, 0xa9, 0x5b, 0x4b, 0x82, + 0x50, 0x92, 0xc0, 0x54, 0xa8, 0x7c, 0x13, 0x0c, 0xcf, 0x09, 0x89, 0x07, + 0x55, 0x87, 0x44, 0x80, 0xf4, 0xac, 0x60, 0x68, 0x3a, 0x96, 0xf8, 0x85, + 0x0b, 0x8c, 0x71, 0x34, 0x7e, 0x08, 0x95, 0xe1, 0xa9, 0xb2, 0xa1, 0xe4, + 0xc8, 0x9e, 0xb5, 0x30, 0xf6, 0x7d, 0x4c, 0x26, 0x89, 0xcd, 0xf4, 0x2b, + 0x21, 0xb0, 0x4c, 0x7c, 0xe9, 0x20, 0xec, 0xdc, 0x54, 0xe8, 0x96, 0x64, + 0x4c, 0x12, 0x04, 0x56, 0x49, 0x88, 0x8a, 0xe5, 0xf5, 0x84, 0x21, 0xf4, + 0xaa, 0x88, 0xaa, 0x21, 0x38, 0x2d, 0x3c, 0x25, 0xa1, 0x1b, 0x2b, 0x25, + 0xbe, 0x7d, 0x09, 0xe1, 0x84, 0xae, 0x56, 0x88, 0xe3, 0xc9, 0x74, 0xa2, + 0x97, 0xda, 0x54, 0x70, 0x7a, 0x53, 0x36, 0x1f, 0xd7, 0x59, 0xe4, 0x21, + 0xf8, 0xc0, 0x82, 0x4c, 0x2b, 0x1e, 0x42, 0x21, 0x92, 0x41, 0xa0, 0xf6, + 0xf8, 0x9c, 0x68, 0x49, 0x7c, 0xe8, 0xaa, 0x4c, 0x05, 0x0a, 0xab, 0x0f, + 0x95, 0x94, 0x87, 0xd1, 0x19, 0x82, 0x3a, 0xcd, 0x9d, 0xde, 0xf5, 0x86, + 0xf2, 0x07, 0xd7, 0xad, 0x00, 0xae, 0x6a, 0x13, 0xf4, 0xe5, 0xed, 0x51, + 0xcd, 0xc9, 0x09, 0x30, 0xd6, 0xf0, 0xdb, 0x29, 0xde, 0xb3, 0x3f, 0xa9, + 0x9d, 0xee, 0xac, 0xbb, 0xbb, 0xa6, 0xcd, 0x6a, 0xba, 0x6c, 0xac, 0x89, + 0xd5, 0x75, 0xb7, 0x7f, 0xda, 0x96, 0x3b, 0x5f, 0xb7, 0x3f, 0xf6, 0x77, + 0xfb, 0xa3, 0x5b, 0xf7, 0xfe, 0xce, 0xb3, 0x91, 0x10, 0xf3, 0xdd, 0x18, + 0xc3, 0x49, 0x9e, 0x7a, 0x1e, 0x60, 0xe1, 0x86, 0x8d, 0x8a, 0x0e, 0x17, + 0x38, 0x6c, 0xea, 0x38, 0x41, 0x43, 0x05, 0x07, 0xd5, 0x30, 0x1b, 0x00, + 0x61, 0x30, 0x5b, 0xc0, 0xa1, 0x30, 0x2f, 0xcb, 0xc1, 0x38, 0x21, 0x01, + 0xc2, 0x30, 0xc4, 0x01, 0x34, 0x30, 0xa2, 0x49, 0x9f, 0x32, 0xa1, 0x4e, + 0x64, 0x31, 0xb2, 0xd0, 0x99, 0x3e, 0xa4, 0xf8, 0x78, 0x31, 0xab, 0x08, + 0x2c, 0x30, 0xc0, 0x00, 0xea, 0x30, 0x40, 0x00, 0x3d, 0x34, 0xbf, 0x43, + 0x95, 0x30, 0xaa, 0x80, 0xa3, 0x30, 0x31, 0xc0, 0x9b, 0x37, 0xc4, 0xcd, + 0x7c, 0x13, 0x0a, 0xa4, 0x2d, 0x90, 0xc0, 0x3c, 0x7d, 0xd4, 0x19, 0xb0, + 0x8c, 0x03, 0x56, 0xa4, 0xa2, 0x5f, 0xd1, 0x85, 0x61, 0x11, 0x86, 0x56, + 0x92, 0x21, 0x0e, 0x84, 0x95, 0xce, 0x4b, 0x45, 0xee, 0xdf, 0x4f, 0xbe, + 0xf0, 0xde, 0xe1, 0xcb, 0xcc, 0x0d, 0x9c, 0x45, 0xd9, 0x45, 0xb6, 0xd2, + 0x2d, 0x2a, 0x81, 0xae, 0xb2, 0xa8, 0xd3, 0xdf, 0x55, 0x87, 0xc3, 0x30, + 0xc4, 0x91, 0xf3, 0x6e, 0xeb, 0xff, 0xfb, 0xd4, 0x60, 0x40, 0x0f, 0xf8, + 0xf2, 0x70, 0x3e, 0x83, 0xfa, 0x63, 0x70, 0x55, 0xed, 0xf8, 0x41, 0x4c, + 0x25, 0x6e, 0x1f, 0x5d, 0xc1, 0x00, 0x0f, 0xe9, 0x8d, 0xc1, 0x47, 0xb7, + 0x21, 0x01, 0x80, 0x89, 0xb9, 0x50, 0x75, 0xb8, 0x40, 0x28, 0x7e, 0x51, + 0x1a, 0x0f, 0x89, 0x09, 0xc5, 0x85, 0x42, 0xc8, 0x78, 0x99, 0xf2, 0x73, + 0x00, 0x76, 0x4e, 0xc8, 0x6b, 0xd4, 0x1c, 0x24, 0x3b, 0x59, 0x0e, 0x95, + 0x4e, 0xc3, 0xe3, 0xc2, 0xf9, 0x88, 0x7e, 0x95, 0xd1, 0x38, 0xee, 0x4b, + 0xea, 0xcd, 0x91, 0x94, 0x47, 0x15, 0x8b, 0xc7, 0xf3, 0x44, 0x8d, 0x20, + 0x27, 0x5a, 0x65, 0x19, 0x3c, 0x19, 0x97, 0x5a, 0x28, 0x99, 0x2c, 0x5e, + 0x74, 0x2b, 0x0e, 0x87, 0xd2, 0xaa, 0x19, 0xd2, 0xf4, 0x12, 0xb8, 0x90, + 0x78, 0xb4, 0x90, 0x3b, 0x46, 0x18, 0x88, 0x22, 0x58, 0x18, 0x3c, 0x60, + 0x9c, 0xd9, 0x2d, 0x81, 0x2a, 0xe3, 0xe8, 0x72, 0xc0, 0xea, 0xd3, 0xc4, + 0x45, 0x4b, 0xd4, 0x42, 0x5e, 0x94, 0x43, 0xd2, 0x14, 0x26, 0x65, 0xb2, + 0x59, 0x68, 0xcb, 0x4c, 0x9a, 0x57, 0x55, 0x09, 0x89, 0x23, 0xe3, 0x77, + 0x7c, 0x7f, 0x4c, 0xc2, 0x78, 0xc1, 0xa0, 0x70, 0xb4, 0x10, 0x32, 0x1c, + 0x04, 0x53, 0xc4, 0xe4, 0xe0, 0xd4, 0xf8, 0xa8, 0x4b, 0x20, 0x95, 0x07, + 0xb0, 0x74, 0x9c, 0xe9, 0xca, 0x53, 0xe8, 0x04, 0x00, 0x79, 0xc9, 0x24, + 0x50, 0x44, 0xd1, 0xe8, 0xa6, 0x68, 0x81, 0xeb, 0x57, 0x4c, 0xe6, 0x37, + 0x73, 0x52, 0xed, 0x4c, 0x59, 0xe7, 0xb7, 0x33, 0x80, 0x8d, 0xb4, 0x22, + 0xe8, 0x8a, 0x8a, 0x9d, 0x51, 0xbd, 0xeb, 0xb3, 0xd7, 0x2a, 0x2f, 0xfd, + 0x5d, 0x7d, 0x58, 0xdd, 0xe9, 0x6a, 0x79, 0xe8, 0xb6, 0xf9, 0xb2, 0xee, + 0x4b, 0xbf, 0xe4, 0x9c, 0xfd, 0x95, 0x6e, 0x8e, 0x9a, 0x51, 0x5b, 0x65, + 0xe9, 0xd4, 0x87, 0x4b, 0x8e, 0x54, 0x72, 0xe1, 0x44, 0x0f, 0x29, 0x10, + 0x69, 0xd5, 0x4c, 0xc7, 0x71, 0x50, 0x3b, 0x0b, 0x8a, 0x98, 0x02, 0x80, + 0x15, 0x98, 0x12, 0x20, 0xb4, 0x98, 0x08, 0x22, 0x68, 0x1a, 0xca, 0x00, + 0x80, 0x98, 0x08, 0x60, 0x3a, 0x98, 0x41, 0x80, 0x64, 0x1a, 0x3b, 0xc0, + 0x28, 0x98, 0xba, 0x42, 0x84, 0x1f, 0x4d, 0x09, 0x38, 0x98, 0xd3, 0x23, + 0x20, 0x98, 0x1f, 0x80, 0xcd, 0x98, 0x20, 0x20, 0x51, 0x99, 0x65, 0xc5, + 0x89, 0x98, 0x61, 0x60, 0x35, 0x18, 0x12, 0xc0, 0x07, 0x9e, 0x70, 0x60, + 0x6d, 0x86, 0x7c, 0x48, 0x5c, 0x61, 0x82, 0x48, 0x20, 0x02, 0x98, 0x4e, + 0xdb, 0xfe, 0xdb, 0xb2, 0x77, 0x59, 0x70, 0x3f, 0x01, 0x87, 0x73, 0x5b, + 0xcc, 0x46, 0x30, 0xec, 0xc4, 0xe0, 0xca, 0xcc, 0xe6, 0x38, 0xcd, 0xe9, + 0x62, 0x2e, 0x1c, 0xfd, 0x48, 0x5d, 0xa8, 0x02, 0x9a, 0x27, 0x9d, 0x98, + 0x6d, 0xc1, 0x8c, 0xcb, 0xee, 0x3b, 0x11, 0xfa, 0x0b, 0x14, 0xef, 0x11, + 0x93, 0x1a, 0x64, 0x99, 0x0a, 0x14, 0x87, 0xc9, 0x97, 0x1d, 0x9f, 0x23, + 0x39, 0xf8, 0x51, 0xc2, 0x9a, 0xe5, 0x2a, 0x1e, 0x35, 0xeb, 0x11, 0x41, + 0x8d, 0xd4, 0x94, 0xd6, 0xfa, 0xe5, 0xe6, 0x0b, 0x6a, 0xb9, 0x7f, 0x59, + 0xe4, 0x86, 0xed, 0x1c, 0x38, 0xd9, 0xcc, 0x6d, 0xdd, 0x66, 0xa1, 0x45, + 0x62, 0xf6, 0x51, 0xfc, 0x95, 0xcc, 0x16, 0x12, 0xe5, 0xd0, 0x8b, 0x8d, + 0x43, 0x44, 0xd1, 0x32, 0xa7, 0xed, 0x0b, 0xca, 0x18, 0x79, 0x2a, 0xf5, + 0xc5, 0xc3, 0xa5, 0xcc, 0x1e, 0x2d, 0x6d, 0xc8, 0x0e, 0xa1, 0x57, 0xca, + 0xbf, 0xd5, 0x14, 0xdc, 0xa5, 0x1b, 0x9a, 0x36, 0x64, 0xcf, 0xdf, 0xe8, + 0xb6, 0xef, 0x59, 0x52, 0x6a, 0x4c, 0xc7, 0x11, 0xeb, 0xcd, 0xd0, 0xcd, + 0x31, 0x5c, 0x9a, 0x7e, 0x6c, 0x78, 0x9c, 0xfa, 0x35, 0x44, 0xa8, 0xdf, + 0x3a, 0x26, 0x96, 0x76, 0x01, 0x61, 0x3c, 0x77, 0x0c, 0x36, 0xf7, 0x85, + 0x59, 0xb9, 0x99, 0xbb, 0x1d, 0xee, 0x1b, 0xb1, 0xb0, 0x85, 0xaf, 0x69, + 0x93, 0x9e, 0x43, 0xc9, 0x66, 0x59, 0x1f, 0x78, 0xc2, 0x20, 0x99, 0x58, + 0x86, 0x62, 0xff, 0xea, 0xde, 0xef, 0xad, 0xeb, 0x5b, 0x3e, 0xfb, 0x5f, + 0x4f, 0xfd, 0x68, 0xbf, 0xb5, 0x7b, 0xbf, 0xf3, 0x1d, 0xea, 0xc8, 0xef, + 0x73, 0xec, 0xf7, 0xec, 0xca, 0x9d, 0xa9, 0xfb, 0x55, 0x3f, 0x4d, 0x2c, + 0xea, 0xe5, 0x1d, 0x9e, 0xe8, 0xc1, 0x00, 0x44, 0xa2, 0x00, 0x94, 0x71, + 0x65, 0x49, 0x02, 0x81, 0xa2, 0x4c, 0x85, 0x00, 0x03, 0x00, 0x30, 0x00, + 0xa3, 0x01, 0xbc, 0x1e, 0x91, 0x01, 0x60, 0xc6, 0x74, 0x40, 0x55, 0xe6, + 0x06, 0x50, 0x0b, 0x66, 0x08, 0x98, 0xb1, 0x86, 0x2f, 0xf9, 0x0a, 0x66, + 0x1b, 0x48, 0x90, 0x07, 0x91, 0xfa, 0x25, 0x26, 0x2e, 0x20, 0x89, 0xc6, + 0x12, 0x38, 0x31, 0x46, 0x06, 0x70, 0x1b, 0xc6, 0x3a, 0x99, 0xf5, 0x06, + 0x0b, 0xb0, 0x0c, 0x43, 0x40, 0x1d, 0x9e, 0x24, 0x7d, 0x71, 0x99, 0x42, + 0x20, 0x87, 0x10, 0xb5, 0xad, 0x79, 0x9f, 0xac, 0x2a, 0xf4, 0x57, 0x93, + 0x2f, 0xc4, 0x60, 0x88, 0x6f, 0x42, 0xc2, 0x35, 0xe7, 0x0e, 0x2e, 0xd3, + 0x20, 0xda, 0x93, 0x0e, 0x24, 0x3e, 0xff, 0xc0, 0xf1, 0xf7, 0x95, 0xf6, + 0x74, 0x9f, 0x78, 0x3a, 0x08, 0x81, 0xe7, 0xa4, 0xd2, 0x06, 0x91, 0x12, + 0x95, 0x41, 0x0d, 0x79, 0xf3, 0x8e, 0xde, 0xa2, 0x7b, 0xcb, 0x4a, 0xdc, + 0x5e, 0xb5, 0x21, 0x12, 0x34, 0x8f, 0x46, 0xe3, 0x87, 0x47, 0x6e, 0x17, + 0xde, 0x4e, 0xc4, 0x33, 0x67, 0xcd, 0x4f, 0xe3, 0x72, 0xec, 0xb4, 0x9d, + 0x2b, 0xa8, 0xcf, 0x5d, 0x56, 0xff, 0xfb, 0xd4, 0x60, 0x4d, 0x8d, 0xd7, + 0xca, 0x70, 0x40, 0x93, 0xf8, 0x63, 0x70, 0x50, 0x6d, 0xc8, 0x51, 0x3c, + 0x22, 0x6e, 0x64, 0xbd, 0xc0, 0xfa, 0x0f, 0xe9, 0xed, 0xc1, 0x4b, 0xb8, + 0x21, 0x48, 0xf1, 0x95, 0xb8, 0xb4, 0xf6, 0xd2, 0x76, 0xff, 0x40, 0xdc, + 0x34, 0x7e, 0x05, 0x2b, 0x71, 0xbb, 0x51, 0x2c, 0x3e, 0x87, 0x1d, 0x97, + 0x17, 0x5d, 0x61, 0x85, 0x8a, 0x6f, 0xdc, 0xc2, 0xce, 0x69, 0xc6, 0xba, + 0x15, 0xc6, 0xcd, 0xb8, 0xfb, 0xf7, 0x65, 0x85, 0x4e, 0x24, 0xf6, 0x2b, + 0x90, 0xa1, 0xc7, 0x1c, 0x71, 0xbd, 0xd4, 0x58, 0xb9, 0x0e, 0x26, 0xcf, + 0xfd, 0xfa, 0x35, 0x43, 0xf4, 0xe9, 0x1a, 0xbb, 0x16, 0x77, 0x75, 0x13, + 0xfa, 0xbe, 0x24, 0xc9, 0x58, 0x42, 0x4b, 0x4b, 0xd0, 0xfe, 0x18, 0x1b, + 0x58, 0xdb, 0xae, 0x2a, 0x30, 0x56, 0x84, 0x66, 0x4e, 0x03, 0x82, 0x33, + 0xc9, 0x91, 0x92, 0xcc, 0x00, 0x6a, 0x45, 0xde, 0xb1, 0x06, 0xd8, 0x87, + 0x25, 0xaf, 0x4d, 0x75, 0x91, 0x20, 0x11, 0x29, 0xb0, 0x13, 0x91, 0xc0, + 0xf6, 0xe7, 0x7a, 0x44, 0x3c, 0x89, 0xdd, 0x1d, 0xfe, 0xfd, 0xdb, 0xf7, + 0xb3, 0x3b, 0x31, 0x3d, 0x2a, 0xce, 0x8a, 0xff, 0x7f, 0xe6, 0x36, 0x96, + 0xd7, 0xaf, 0x7f, 0x93, 0xee, 0x55, 0xdd, 0xbe, 0x97, 0xd7, 0x6f, 0xef, + 0xad, 0x99, 0xf4, 0x64, 0xa2, 0x68, 0x9a, 0xba, 0xaa, 0x91, 0x9d, 0xde, + 0x10, 0x21, 0xdd, 0x06, 0x63, 0x18, 0xc3, 0x91, 0x60, 0x94, 0x28, 0x59, + 0x80, 0x76, 0x05, 0xf1, 0x80, 0x3a, 0x20, 0xd9, 0x82, 0xb6, 0xba, 0xe1, + 0x91, 0x98, 0x2e, 0xa9, 0x83, 0x5c, 0x13, 0x01, 0x85, 0x06, 0x30, 0xf9, + 0xac, 0xf2, 0x59, 0xd1, 0x81, 0x8c, 0x7f, 0x29, 0xeb, 0x99, 0xd0, 0x11, + 0x8b, 0xe2, 0x17, 0x49, 0x8a, 0xa4, 0x16, 0xf9, 0x82, 0x16, 0x09, 0x69, + 0x84, 0x1e, 0xc5, 0xb9, 0x85, 0x10, 0x0a, 0xf9, 0x80, 0x08, 0x00, 0xe1, + 0xbc, 0x16, 0x62, 0x43, 0x18, 0x80, 0x66, 0x1e, 0x28, 0xe0, 0xd3, 0x38, + 0x1d, 0xe7, 0x53, 0x50, 0xc0, 0x20, 0x63, 0x01, 0xc7, 0x57, 0x7a, 0x29, + 0x17, 0x0c, 0x10, 0x11, 0x96, 0x27, 0xa3, 0x2a, 0x7c, 0x9d, 0xd8, 0x35, + 0xb1, 0x43, 0xef, 0x0b, 0x48, 0x79, 0x99, 0xed, 0x47, 0x51, 0x9e, 0xc0, + 0xae, 0xfc, 0x7e, 0x2d, 0x6d, 0x5b, 0x1e, 0x0a, 0x76, 0x76, 0xee, 0x3c, + 0x6f, 0xa5, 0x78, 0x1e, 0x31, 0x24, 0x81, 0x5d, 0x8a, 0x78, 0x0a, 0x07, + 0x6d, 0xe7, 0x61, 0x73, 0x5c, 0x21, 0x87, 0x14, 0x22, 0xc2, 0x87, 0x21, + 0xcb, 0xee, 0xd3, 0xe8, 0x95, 0x62, 0x88, 0xe3, 0x46, 0xad, 0xe1, 0xa1, + 0x42, 0xea, 0x59, 0x11, 0x8a, 0xe3, 0xae, 0x63, 0xad, 0xca, 0xee, 0xce, + 0x06, 0xb6, 0x05, 0xf6, 0x68, 0xce, 0xd7, 0x8c, 0xf3, 0xf1, 0xa9, 0xe4, + 0x57, 0x04, 0x36, 0x2d, 0x10, 0xf6, 0x6a, 0xb5, 0x35, 0x36, 0xc1, 0x94, + 0xf0, 0x7f, 0x0d, 0x81, 0x1d, 0x35, 0xde, 0xa2, 0x54, 0xcd, 0xcc, 0x45, + 0xf9, 0x0e, 0x8a, 0x9e, 0x73, 0x66, 0x56, 0xb1, 0x1d, 0xe9, 0x05, 0xcb, + 0x44, 0x76, 0x14, 0x3a, 0x1b, 0xe6, 0x15, 0x6a, 0xe5, 0xd3, 0x4b, 0x03, + 0xd4, 0xfb, 0xd8, 0x29, 0x4e, 0x89, 0x65, 0xaa, 0xca, 0x45, 0x18, 0xa6, + 0x53, 0xba, 0xc2, 0xe1, 0x81, 0xb6, 0x13, 0x43, 0x2b, 0xf4, 0x4d, 0xa1, + 0x9d, 0xad, 0xd1, 0x58, 0x98, 0x9c, 0xa3, 0x75, 0x7a, 0x99, 0x81, 0x0c, + 0x71, 0x86, 0xc6, 0x7e, 0x36, 0xa8, 0x58, 0x1d, 0xa7, 0x17, 0x44, 0x25, + 0x76, 0x77, 0xb1, 0x9e, 0xd4, 0x3f, 0x09, 0x51, 0x63, 0x63, 0x30, 0x50, + 0x82, 0x74, 0x4c, 0x11, 0xc8, 0xa2, 0x90, 0x1f, 0xb3, 0xe3, 0x55, 0xb4, + 0x6f, 0xbb, 0x53, 0x7a, 0xa5, 0xe6, 0x4d, 0x7e, 0x42, 0x86, 0x7f, 0xe7, + 0x0e, 0x84, 0x75, 0x23, 0x78, 0x51, 0x1f, 0x71, 0x9e, 0x13, 0x77, 0xf9, + 0xdc, 0xbe, 0x67, 0xfe, 0xeb, 0xaf, 0xf7, 0xba, 0xcd, 0xb7, 0xd7, 0xdd, + 0x9b, 0x4b, 0xbc, 0xd5, 0xd9, 0xfd, 0x7d, 0xbe, 0xf5, 0xfa, 0xc8, 0xdd, + 0x12, 0xfb, 0xfd, 0xbf, 0x5d, 0x6b, 0xbe, 0xa6, 0xab, 0x4f, 0xd9, 0x5d, + 0x6c, 0xe4, 0x61, 0xc7, 0x79, 0xc4, 0x44, 0x48, 0x24, 0x1e, 0x62, 0xb8, + 0xe0, 0xa7, 0x30, 0xf1, 0x95, 0x30, 0x21, 0xc0, 0xb0, 0x30, 0x2e, 0x04, + 0x17, 0x30, 0xa6, 0xd5, 0xa6, 0x33, 0x7e, 0x44, 0xaf, 0x30, 0x59, 0xc0, + 0x9a, 0x30, 0x9c, 0x05, 0x7b, 0x34, 0xe5, 0x86, 0x78, 0x31, 0x58, 0x0f, + 0x3e, 0x35, 0x46, 0xbc, 0x71, 0x31, 0x5c, 0x42, 0x13, 0x31, 0x21, 0x40, + 0xea, 0x30, 0x42, 0x01, 0x6a, 0x31, 0xe4, 0x0e, 0x72, 0x31, 0x36, 0xc1, + 0x0e, 0x30, 0x45, 0x80, 0x19, 0x11, 0xb8, 0x62, 0x46, 0x23, 0x44, 0xc2, + 0x24, 0xaa, 0xa9, 0xa4, 0x5a, 0x12, 0x63, 0x65, 0xad, 0x08, 0x51, 0x49, + 0x3f, 0x6d, 0x89, 0xb1, 0x97, 0xf5, 0xb2, 0xa3, 0xfb, 0xe2, 0xfd, 0x38, + 0xae, 0x9b, 0x2e, 0x74, 0xdd, 0xe7, 0x41, 0xb2, 0x53, 0x2e, 0x55, 0x5b, + 0x20, 0x6e, 0xb0, 0xf4, 0x5e, 0x42, 0xe9, 0x3f, 0xaf, 0x5c, 0xcb, 0x90, + 0xfc, 0xc4, 0x9a, 0xf5, 0xa7, 0xee, 0x30, 0xe5, 0x47, 0x73, 0x7c, 0x55, + 0xa8, 0x94, 0xd3, 0xf7, 0xca, 0x64, 0xb4, 0x34, 0x83, 0x04, 0x38, 0x65, + 0xcd, 0x3d, 0x31, 0x3c, 0x50, 0xa4, 0x11, 0xb0, 0x60, 0x26, 0x0b, 0xf2, + 0x32, 0xf1, 0xe0, 0xa3, 0x15, 0x27, 0xfa, 0x6d, 0x98, 0xf4, 0x62, 0x42, + 0x74, 0xb9, 0x38, 0xcc, 0x25, 0xda, 0x10, 0x74, 0xc6, 0x66, 0x45, 0x3d, + 0x65, 0x82, 0xe2, 0xc8, 0x73, 0xff, 0xfb, 0xd4, 0x60, 0x5a, 0x0f, 0xd8, + 0xf0, 0x70, 0x3e, 0x83, 0xf9, 0x7b, 0x70, 0x54, 0xcd, 0xe8, 0x42, 0x34, + 0x45, 0x6e, 0x24, 0xbd, 0xc0, 0xf8, 0x0f, 0xed, 0xed, 0xc1, 0x40, 0x37, + 0xa1, 0x44, 0xd1, 0x09, 0xb9, 0xaa, 0x18, 0x2f, 0x79, 0x95, 0xaf, 0xcf, + 0xc8, 0xed, 0xea, 0x48, 0x47, 0x93, 0xec, 0x46, 0xd9, 0xc0, 0x78, 0xea, + 0x0a, 0xb6, 0xea, 0x6b, 0x9e, 0x13, 0x5d, 0x57, 0x1a, 0x32, 0x11, 0x01, + 0x25, 0xb5, 0x24, 0x68, 0x09, 0xf3, 0x9d, 0xa8, 0xec, 0x60, 0x32, 0xd9, + 0xd2, 0x8a, 0x55, 0xb4, 0x4c, 0x2a, 0x29, 0xea, 0xe6, 0xc0, 0xc8, 0xd4, + 0xdd, 0x23, 0x0f, 0x78, 0xaf, 0xdb, 0x3c, 0x06, 0x6d, 0x1f, 0xaf, 0x69, + 0x65, 0xe7, 0x3c, 0x55, 0x85, 0xfe, 0xdc, 0x9c, 0x5f, 0xb8, 0x99, 0x29, + 0xf7, 0xa8, 0xc5, 0xe5, 0xc3, 0xf4, 0xe2, 0x59, 0x72, 0x77, 0xa4, 0x30, + 0xac, 0x49, 0x1b, 0xf8, 0x3f, 0x17, 0x08, 0xf5, 0x20, 0xbe, 0x38, 0x49, + 0x69, 0x3e, 0x62, 0x25, 0x00, 0x00, 0xa7, 0x36, 0xac, 0xd4, 0xd5, 0x1a, + 0x8b, 0xd4, 0x9a, 0x8d, 0x29, 0x6c, 0xa8, 0x64, 0x7f, 0xe8, 0x65, 0x21, + 0x10, 0xe2, 0x5c, 0x75, 0xd1, 0x51, 0xde, 0xba, 0x56, 0xba, 0xf4, 0xb1, + 0xba, 0x22, 0xba, 0xaf, 0xf7, 0xb2, 0x7e, 0xa9, 0xa7, 0xa5, 0x1d, 0xaf, + 0x97, 0x76, 0xbe, 0x9a, 0xf6, 0xaa, 0x31, 0x93, 0xfb, 0xad, 0x1a, 0x6a, + 0x6c, 0xf5, 0xd7, 0xdb, 0x62, 0xf7, 0xab, 0xf2, 0x3e, 0xdb, 0x95, 0x36, + 0x5a, 0xd8, 0xc8, 0x83, 0x48, 0x67, 0x91, 0x45, 0x82, 0xcc, 0x61, 0x72, + 0x0d, 0xa8, 0xb2, 0x24, 0xc0, 0x59, 0x02, 0x38, 0xc0, 0xec, 0x10, 0xc4, + 0xc2, 0x1b, 0x44, 0x28, 0xdc, 0x2d, 0x0f, 0x0c, 0xc3, 0x03, 0x09, 0xe4, + 0xc0, 0x9f, 0x21, 0x08, 0xcc, 0x34, 0x2a, 0x0c, 0xc3, 0x57, 0x12, 0x24, + 0xfa, 0x49, 0xc8, 0xf8, 0xc1, 0xf3, 0x06, 0x98, 0xc0, 0x7f, 0x0b, 0x48, + 0xc0, 0x2d, 0x04, 0xe8, 0xca, 0xe1, 0x0b, 0x48, 0xc5, 0x18, 0x01, 0x40, + 0x0c, 0x0e, 0x99, 0xc9, 0x06, 0x81, 0xa7, 0xc3, 0x11, 0x0c, 0x40, 0x68, + 0x02, 0x4e, 0x02, 0x30, 0x45, 0x76, 0x92, 0xe2, 0x96, 0xd1, 0x20, 0xe8, + 0xdc, 0x66, 0x92, 0x8a, 0xcc, 0x8d, 0xb6, 0x8f, 0xe9, 0x86, 0xcb, 0x9c, + 0xf6, 0xba, 0xd3, 0xd4, 0x0a, 0x0b, 0x95, 0x2b, 0xd8, 0xa5, 0xf7, 0x49, + 0xa6, 0xc9, 0x9d, 0x34, 0xe8, 0x87, 0xda, 0x5b, 0x09, 0xd4, 0x4f, 0xdf, + 0xd9, 0x1c, 0xfc, 0xa2, 0x9e, 0x1c, 0x91, 0xb4, 0x54, 0x40, 0xff, 0x8d, + 0x04, 0xe9, 0x54, 0xaa, 0x8e, 0x15, 0x29, 0xa0, 0xa1, 0x78, 0x95, 0x3f, + 0x12, 0x8c, 0x90, 0x4d, 0xc6, 0x65, 0x93, 0xe1, 0xe9, 0xe4, 0x7b, 0xa7, + 0x90, 0xa6, 0xd8, 0xf4, 0xa9, 0xca, 0xf5, 0x76, 0xd6, 0xaf, 0x3e, 0xb4, + 0x4b, 0xd6, 0x4b, 0x95, 0x10, 0x69, 0x75, 0x7c, 0x76, 0xe7, 0x15, 0x5b, + 0x12, 0x91, 0x38, 0xa3, 0xd2, 0x59, 0x30, 0xdb, 0x11, 0x12, 0x90, 0x5d, + 0x9b, 0xca, 0x42, 0xbe, 0x62, 0xec, 0xe8, 0xd3, 0x73, 0x71, 0x95, 0xfa, + 0x1c, 0x9b, 0x73, 0x78, 0xc8, 0xa3, 0x5b, 0x5d, 0x35, 0xc7, 0x90, 0xf4, + 0xdd, 0x1b, 0x16, 0x1a, 0x8e, 0x95, 0xd3, 0x0b, 0x5a, 0x84, 0xb9, 0x2c, + 0x97, 0x6c, 0x97, 0x95, 0x93, 0xa5, 0x16, 0x84, 0xa6, 0x95, 0xcc, 0x8a, + 0x14, 0x49, 0xcc, 0xf5, 0x9d, 0xb6, 0x1a, 0x69, 0x47, 0x45, 0x0a, 0xe9, + 0x22, 0x84, 0x3c, 0x72, 0x39, 0x62, 0xa1, 0x88, 0x8a, 0xb4, 0x2b, 0x52, + 0xec, 0x76, 0x56, 0xcd, 0x12, 0x6b, 0x27, 0x21, 0xa8, 0xd4, 0xb7, 0x6f, + 0x48, 0x17, 0xe7, 0xe8, 0xe4, 0x5a, 0x01, 0x3a, 0xc8, 0xa8, 0x5c, 0x92, + 0xc5, 0x32, 0x1a, 0x67, 0x16, 0xc0, 0xce, 0x1d, 0x27, 0x27, 0x82, 0x19, + 0x0b, 0x4f, 0x26, 0xb4, 0x97, 0x4c, 0xf2, 0x12, 0xba, 0xa2, 0x9d, 0xce, + 0x0b, 0x64, 0xd7, 0xa3, 0x14, 0xe9, 0x7e, 0xc8, 0xb3, 0x35, 0xd7, 0x4a, + 0x57, 0xbd, 0xff, 0xa2, 0xff, 0x25, 0xe9, 0x7f, 0x4b, 0x7f, 0xdb, 0xd1, + 0xbb, 0xee, 0x8d, 0xec, 0xcb, 0xfa, 0xf5, 0x93, 0x56, 0xb5, 0x3f, 0x6e, + 0xf6, 0xad, 0xff, 0xdf, 0x47, 0x64, 0x56, 0xa6, 0xd5, 0x56, 0x2b, 0xa4, + 0xc9, 0x42, 0x94, 0xea, 0xc6, 0x14, 0x1d, 0x8c, 0x38, 0x91, 0x40, 0x00, + 0x46, 0x76, 0x20, 0x25, 0x12, 0xc2, 0x30, 0x18, 0x40, 0x3c, 0x30, 0x41, + 0x03, 0x41, 0x30, 0x53, 0xc3, 0x9c, 0x0e, 0xf6, 0x9c, 0xc0, 0xa7, 0x03, + 0x94, 0xc1, 0x15, 0x0d, 0x74, 0xda, 0x33, 0x16, 0xc8, 0xc3, 0xd7, 0x24, + 0x14, 0xd5, 0xb4, 0x37, 0x0c, 0xc6, 0x0d, 0x0a, 0x94, 0xc5, 0x42, 0x07, + 0xd4, 0xc2, 0xaf, 0x03, 0x4c, 0xc2, 0xe2, 0x45, 0x9c, 0xc1, 0xdd, 0x03, + 0x44, 0xc0, 0xf6, 0x01, 0xc0, 0xe8, 0x45, 0x4d, 0x18, 0x38, 0xc8, 0xc4, + 0x52, 0x7d, 0xbb, 0x33, 0x76, 0x82, 0x84, 0xc4, 0xe8, 0x87, 0x54, 0xc9, + 0xeb, 0x7d, 0x19, 0x4a, 0xe4, 0x54, 0x30, 0x7b, 0xb1, 0x03, 0xb8, 0xcf, + 0x63, 0xcf, 0x25, 0xb7, 0x28, 0x5e, 0xad, 0x95, 0x68, 0x3f, 0x0f, 0xdc, + 0x92, 0x21, 0x2e, 0x66, 0xce, 0xa5, 0x56, 0xb2, 0xda, 0x40, 0x4f, 0xeb, + 0x2f, 0x86, 0xd9, 0x54, 0xb6, 0x92, 0x66, 0x95, 0x94, 0xcf, 0xb1, 0xb7, + 0x21, 0x48, 0xb3, 0x21, 0x56, 0xa1, 0x71, 0x7a, 0x92, 0x48, 0x17, 0x75, + 0x09, 0x96, 0x99, 0x6f, 0x56, 0x65, 0x54, 0xc3, 0x1d, 0x58, 0xb8, 0x3d, + 0x56, 0x52, 0x2a, 0x76, 0x93, 0xc6, 0x2a, 0x20, 0xe9, 0x55, 0x34, 0x1f, + 0x4a, 0x15, 0x42, 0x09, 0x70, 0xff, 0xfb, 0xd4, 0x60, 0x53, 0x8d, 0xd9, + 0x44, 0x70, 0x3e, 0x03, 0xfb, 0x7b, 0x70, 0x4f, 0x4e, 0x08, 0x52, 0x18, + 0x25, 0x6e, 0x24, 0xc1, 0xc0, 0xf8, 0x2f, 0xe9, 0xed, 0xc1, 0x53, 0x37, + 0xa1, 0x08, 0x31, 0x89, 0xb9, 0xb0, 0xa1, 0x3f, 0x9c, 0x59, 0x5c, 0x8b, + 0x69, 0xea, 0x9b, 0x27, 0xaa, 0xe7, 0x49, 0xe8, 0xa7, 0x2b, 0x02, 0xe5, + 0xec, 0x43, 0x31, 0x0a, 0x4e, 0xa9, 0x56, 0x59, 0x16, 0xdd, 0xd7, 0x4b, + 0x87, 0x03, 0x75, 0x47, 0x16, 0x3a, 0x16, 0xae, 0x55, 0xa9, 0x5e, 0xa9, + 0xd8, 0x94, 0xae, 0x97, 0x67, 0x92, 0x34, 0xdf, 0x52, 0x4a, 0xd2, 0xd8, + 0x70, 0xa1, 0x66, 0x23, 0x91, 0xd8, 0xde, 0xba, 0x7c, 0x5a, 0x17, 0x26, + 0xc4, 0x54, 0xe7, 0x3c, 0x56, 0x3e, 0xa2, 0x5a, 0x84, 0x74, 0x38, 0xab, + 0x19, 0x91, 0xae, 0x14, 0x66, 0x2f, 0xaf, 0x51, 0x4b, 0x88, 0xad, 0xaa, + 0xa8, 0x71, 0x1e, 0x33, 0x9d, 0xce, 0x8e, 0x67, 0x15, 0xb8, 0x8e, 0xd0, + 0xc4, 0xe9, 0xac, 0x5b, 0x12, 0x87, 0x81, 0xfe, 0x96, 0x25, 0x26, 0x91, + 0x98, 0x9e, 0x46, 0x9f, 0xf1, 0xe5, 0x43, 0xce, 0x41, 0x1c, 0x33, 0x97, + 0x03, 0xe2, 0x66, 0x90, 0x00, 0x1d, 0x8c, 0x9c, 0xb9, 0xd0, 0xfb, 0xf3, + 0x5a, 0x08, 0x14, 0x7b, 0x75, 0xa8, 0x24, 0x18, 0x45, 0x52, 0x18, 0x48, + 0x8c, 0xf6, 0x16, 0xb6, 0x74, 0x48, 0xfa, 0x57, 0xa7, 0xba, 0x52, 0x9f, + 0xff, 0x22, 0xec, 0x5d, 0x2a, 0xe9, 0xfa, 0xfa, 0xd3, 0xae, 0xc4, 0x5e, + 0x45, 0xda, 0x94, 0xff, 0xdf, 0xad, 0x3e, 0xb4, 0xb5, 0xff, 0x32, 0x97, + 0x9e, 0xfa, 0xf2, 0x92, 0xc7, 0x5a, 0x32, 0x39, 0x2c, 0x34, 0xac, 0x12, + 0x17, 0x58, 0xa9, 0x27, 0x14, 0x30, 0xa8, 0x88, 0x98, 0x7c, 0x83, 0xc0, + 0x61, 0x18, 0x1d, 0x00, 0xff, 0x98, 0x30, 0x86, 0x16, 0x9b, 0x31, 0x21, + 0xed, 0x18, 0x32, 0x20, 0x64, 0x18, 0x47, 0x83, 0xd2, 0x99, 0xbd, 0x45, + 0xc5, 0x18, 0x3f, 0x80, 0xdf, 0x98, 0xc1, 0xa2, 0x1d, 0x98, 0x03, 0xa0, + 0x77, 0x18, 0x19, 0x20, 0x13, 0x98, 0x33, 0x00, 0xf2, 0x18, 0xd4, 0x4a, + 0x26, 0x18, 0x29, 0xc0, 0x65, 0x18, 0x0c, 0x80, 0x29, 0x98, 0xf8, 0x0a, + 0xae, 0xa2, 0x09, 0xc3, 0xc6, 0x28, 0xc1, 0x9e, 0x96, 0x84, 0xd2, 0x56, + 0xb3, 0xe8, 0xe5, 0xa5, 0xe4, 0xd4, 0x59, 0x7c, 0x36, 0x48, 0x61, 0x7a, + 0x41, 0xae, 0x03, 0x86, 0xcf, 0xdc, 0x25, 0x84, 0x71, 0x5e, 0x28, 0x94, + 0x55, 0x90, 0x28, 0x73, 0x49, 0x6d, 0x98, 0xca, 0x74, 0x43, 0x8b, 0x76, + 0xb4, 0xad, 0xd1, 0x91, 0xcb, 0x1c, 0x27, 0x46, 0x61, 0xdf, 0x74, 0x9c, + 0x64, 0x39, 0x14, 0xa9, 0x58, 0x99, 0x46, 0xc4, 0xcc, 0x6a, 0x9f, 0x8d, + 0xb1, 0x91, 0x27, 0xfb, 0x01, 0xb8, 0x38, 0x4f, 0xc6, 0xc7, 0xc7, 0xfb, + 0x11, 0x71, 0x50, 0xa4, 0xd8, 0x49, 0xed, 0x53, 0xc9, 0x85, 0x12, 0x9d, + 0x1c, 0xb2, 0xca, 0xf9, 0x3a, 0x89, 0x53, 0x27, 0x99, 0x68, 0x8c, 0x95, + 0x0c, 0x62, 0x3c, 0x62, 0x3c, 0x42, 0xd5, 0xca, 0xa8, 0xc8, 0x51, 0xe0, + 0xbb, 0x84, 0x94, 0x42, 0xd0, 0x27, 0xfc, 0x25, 0x84, 0x6a, 0x92, 0xa9, + 0x35, 0xda, 0xd5, 0x50, 0x86, 0x44, 0x42, 0x62, 0xaa, 0xb5, 0x61, 0x6c, + 0x71, 0x35, 0x51, 0x05, 0xb6, 0x02, 0x95, 0x5e, 0xda, 0x6d, 0x24, 0x53, + 0xc5, 0xd0, 0xe2, 0x3f, 0x54, 0x4b, 0x88, 0xa8, 0x74, 0xa9, 0x15, 0x7b, + 0x02, 0xe1, 0x0f, 0x4e, 0xa7, 0x56, 0x56, 0xb2, 0xa2, 0x58, 0x44, 0xab, + 0xd7, 0x6c, 0x2a, 0x26, 0x64, 0x85, 0x20, 0x27, 0x93, 0x8c, 0xac, 0x0d, + 0x6a, 0x7b, 0xdd, 0x9a, 0x2c, 0x75, 0x6b, 0x2b, 0xb5, 0xc3, 0x09, 0x76, + 0x9e, 0x39, 0x7e, 0x64, 0x70, 0x7a, 0xa4, 0x78, 0xb9, 0x7e, 0x3d, 0x47, + 0x73, 0x21, 0xcc, 0x83, 0x76, 0x77, 0xa7, 0x8a, 0xc3, 0xad, 0x42, 0xb0, + 0x5b, 0x15, 0xe4, 0x01, 0x74, 0x0e, 0x46, 0xf5, 0xd4, 0x88, 0x11, 0x14, + 0x2b, 0x1f, 0x26, 0xd7, 0xea, 0xf9, 0x4b, 0x4c, 0xa9, 0x69, 0xf9, 0xde, + 0x28, 0xb1, 0x85, 0x0a, 0x3e, 0xde, 0x77, 0xce, 0x55, 0xf6, 0x5d, 0x33, + 0xa6, 0xde, 0xba, 0x39, 0xd9, 0xb4, 0xee, 0xd4, 0xfb, 0xff, 0xfa, 0x57, + 0xf5, 0xda, 0x8a, 0xd5, 0x66, 0xd5, 0xb7, 0x6c, 0xd9, 0x5c, 0xad, 0x23, + 0xce, 0xee, 0xef, 0x6f, 0xa6, 0xf6, 0xd7, 0xf5, 0x56, 0xca, 0x11, 0xe1, + 0x0e, 0x82, 0xe6, 0x22, 0x86, 0x18, 0x8a, 0x62, 0x98, 0x40, 0x11, 0x18, + 0x59, 0x54, 0x58, 0x60, 0xfa, 0x70, 0x09, 0x00, 0x73, 0x07, 0x01, 0xf0, + 0x61, 0xbf, 0x24, 0x42, 0x66, 0xd2, 0x89, 0xac, 0x60, 0x60, 0x83, 0x76, + 0x60, 0xf0, 0x0f, 0x50, 0x69, 0x4f, 0x14, 0xb2, 0x61, 0x32, 0x02, 0x38, + 0x62, 0xdb, 0x0b, 0xb4, 0x60, 0xc1, 0x81, 0xca, 0x60, 0x3b, 0x01, 0xec, + 0x60, 0x19, 0x81, 0x24, 0x65, 0xc8, 0x9b, 0xde, 0x62, 0x35, 0x02, 0x06, + 0x60, 0x59, 0x80, 0xb4, 0x60, 0x42, 0x05, 0x08, 0xc5, 0x14, 0xbb, 0x65, + 0xd8, 0x8e, 0xad, 0xf6, 0xb0, 0xdc, 0xa3, 0x91, 0xd8, 0x6d, 0x99, 0x42, + 0x9a, 0x8b, 0xf0, 0xdd, 0x69, 0xd6, 0x93, 0x36, 0x75, 0x93, 0x1d, 0x82, + 0x17, 0x89, 0xe0, 0x7a, 0x62, 0x70, 0xeb, 0x4b, 0x4c, 0x54, 0x85, 0xb2, + 0xb8, 0x1f, 0x37, 0x75, 0xd0, 0x72, 0x16, 0x3b, 0x34, 0x8e, 0x39, 0x0f, + 0xbb, 0x7c, 0xac, 0x4d, 0xc9, 0xc1, 0x70, 0xe7, 0x99, 0x01, 0xee, 0xbb, + 0x18, 0xd1, 0x51, 0xc9, 0x85, 0x7a, 0xb4, 0xea, 0x4f, 0xa9, 0x9c, 0x0e, + 0x74, 0x48, 0xf5, 0x47, 0x3f, 0xff, 0xfb, 0xd4, 0x60, 0x48, 0x0d, 0xd9, + 0x29, 0x70, 0x3e, 0x0b, 0xf9, 0x7b, 0x70, 0x58, 0xce, 0x08, 0x42, 0x0c, + 0x62, 0x6e, 0x26, 0x8d, 0xc0, 0xf8, 0x2f, 0xf1, 0xed, 0xc1, 0x4d, 0xb8, + 0x21, 0x04, 0x80, 0x95, 0xb8, 0x0b, 0xce, 0x15, 0x90, 0xa1, 0xb2, 0x99, + 0xa6, 0x92, 0x99, 0x95, 0x16, 0xe9, 0x85, 0x76, 0xae, 0x53, 0xa1, 0x45, + 0xf5, 0x44, 0xc6, 0xfc, 0xd0, 0x4f, 0x39, 0xb0, 0x2b, 0xd4, 0xf1, 0x4e, + 0xbb, 0x50, 0xf2, 0x72, 0x68, 0x62, 0x46, 0x42, 0x7b, 0x05, 0x09, 0x72, + 0x5e, 0x32, 0x89, 0x23, 0x3a, 0x7d, 0x3e, 0xb6, 0xa4, 0x34, 0x9c, 0xd2, + 0xe8, 0x05, 0x0b, 0x82, 0x3d, 0xf9, 0xce, 0xa1, 0x41, 0x31, 0xce, 0x80, + 0x65, 0x91, 0xe9, 0xd1, 0x68, 0x6a, 0xd8, 0xd1, 0xd7, 0x33, 0xa1, 0x88, + 0x63, 0xc5, 0x85, 0x43, 0xf8, 0xa9, 0xd5, 0x15, 0xa1, 0x41, 0x51, 0x1b, + 0xcb, 0xa4, 0xf2, 0x4c, 0xe3, 0x55, 0xf6, 0x8b, 0x2d, 0x40, 0x67, 0x76, + 0xac, 0x7b, 0x0d, 0x9e, 0x0b, 0x09, 0xa2, 0xe4, 0x97, 0x88, 0xbe, 0xc3, + 0x67, 0xcb, 0x86, 0x47, 0x6a, 0xa6, 0x15, 0x0b, 0xf8, 0x08, 0x74, 0xc6, + 0x81, 0xb0, 0x70, 0xa9, 0xd7, 0x6e, 0xce, 0xd7, 0xca, 0x22, 0xde, 0xb4, + 0x10, 0xf2, 0x8c, 0xdd, 0x2a, 0x11, 0x22, 0x6a, 0x84, 0xb1, 0x4a, 0x80, + 0x03, 0x68, 0x68, 0xb8, 0x91, 0x04, 0x65, 0x4a, 0x1a, 0x9f, 0x9f, 0xd4, + 0xfa, 0x6a, 0xe2, 0x8d, 0x44, 0xb9, 0xda, 0x54, 0xce, 0x14, 0xfc, 0x15, + 0xa6, 0x66, 0xde, 0x70, 0xb2, 0xce, 0x8c, 0x8e, 0x8b, 0x25, 0xb7, 0xe5, + 0xdb, 0xba, 0x5f, 0x7a, 0x35, 0xa6, 0x27, 0x4f, 0x4e, 0x9d, 0x97, 0x9a, + 0xde, 0xb4, 0x44, 0x66, 0x46, 0x52, 0xda, 0x9a, 0x7f, 0x7f, 0xfa, 0xfa, + 0x29, 0x93, 0xfe, 0xdb, 0x3a, 0xaa, 0x19, 0xea, 0xc8, 0x75, 0x43, 0x20, + 0xa1, 0x98, 0xa2, 0x8b, 0x30, 0x18, 0xa0, 0x30, 0xa5, 0x0e, 0x73, 0x1c, + 0xa3, 0x03, 0x16, 0xa3, 0x08, 0xb0, 0x1e, 0xf3, 0x0e, 0x74, 0x23, 0xe3, + 0x30, 0xb0, 0x6d, 0x93, 0x41, 0x10, 0x8e, 0xa3, 0x04, 0x4c, 0x07, 0x63, + 0x13, 0xc8, 0x98, 0x03, 0x4f, 0x0c, 0x41, 0x73, 0x02, 0xf4, 0x25, 0x03, + 0x0f, 0x34, 0x75, 0xf3, 0x03, 0xf4, 0x28, 0x63, 0x02, 0x3c, 0x44, 0x53, + 0x0d, 0x30, 0xd2, 0xc3, 0x55, 0x50, 0x00, 0x33, 0x27, 0x7c, 0x4e, 0xb3, + 0x08, 0x28, 0x13, 0x42, 0x71, 0x91, 0xad, 0x80, 0x26, 0x17, 0x12, 0x19, + 0x10, 0x58, 0x02, 0x09, 0x14, 0x0f, 0x4c, 0x18, 0x20, 0x0e, 0x06, 0x25, + 0xc8, 0x70, 0x9d, 0xc7, 0x52, 0x0b, 0x30, 0xaa, 0x08, 0x50, 0x17, 0x7d, + 0x55, 0xdf, 0xb4, 0xfa, 0x4c, 0x17, 0x91, 0x67, 0x24, 0x30, 0x90, 0x22, + 0xc5, 0x3c, 0x65, 0xd1, 0x57, 0x6a, 0x8e, 0x67, 0x71, 0xb7, 0x29, 0xf2, + 0x7c, 0x20, 0x07, 0x51, 0x2b, 0x86, 0x81, 0x4d, 0x31, 0xf7, 0x6f, 0x14, + 0xa6, 0x38, 0xa5, 0x8c, 0x55, 0xb1, 0xb8, 0x07, 0xe9, 0x6c, 0x6b, 0x1c, + 0xa3, 0x72, 0x11, 0x96, 0xa9, 0x4d, 0xad, 0xb9, 0xab, 0x0e, 0xb4, 0xda, + 0x8d, 0x5c, 0x97, 0x48, 0xaa, 0x0b, 0xa3, 0xb6, 0x66, 0x15, 0x5a, 0xb4, + 0xfd, 0x71, 0x8a, 0xa6, 0x2f, 0x6c, 0x4c, 0x4e, 0x2b, 0x82, 0xd8, 0x89, + 0x80, 0x7f, 0xa7, 0x92, 0x44, 0x81, 0xba, 0x3c, 0x67, 0x8d, 0x71, 0x91, + 0x08, 0x42, 0x71, 0x59, 0x09, 0x3a, 0x5f, 0x5c, 0x89, 0xfb, 0x4e, 0x55, + 0xad, 0x47, 0x41, 0xce, 0x72, 0xb1, 0xa5, 0xdb, 0x12, 0x10, 0x50, 0xe7, + 0xf6, 0x30, 0xd5, 0x87, 0xeb, 0xa2, 0x74, 0x75, 0xad, 0x41, 0x4f, 0x9a, + 0x4a, 0xf5, 0x62, 0x16, 0xa9, 0x64, 0x95, 0x4a, 0xde, 0xcc, 0xe0, 0x70, + 0x1f, 0xac, 0xc7, 0x12, 0x61, 0x3a, 0x63, 0xb7, 0x38, 0xac, 0x27, 0xab, + 0x39, 0xf8, 0xe0, 0xfd, 0x0c, 0x8c, 0xbe, 0x77, 0x59, 0xfa, 0xe2, 0xc6, + 0xe3, 0x93, 0x3b, 0x03, 0x04, 0x14, 0xf2, 0x14, 0xb9, 0x54, 0xc5, 0x8e, + 0x9f, 0x36, 0x91, 0xb8, 0x54, 0x27, 0x14, 0xf0, 0x10, 0xd8, 0xa8, 0x6b, + 0xf7, 0x09, 0x60, 0x3c, 0x3e, 0xd3, 0xbb, 0x6e, 0x8e, 0x77, 0x31, 0x9a, + 0x06, 0xb1, 0x9b, 0x42, 0xf2, 0x34, 0x19, 0x48, 0x49, 0x0f, 0x33, 0x8c, + 0x08, 0x2b, 0xae, 0xf4, 0x66, 0x4e, 0x39, 0x2a, 0x99, 0x32, 0x95, 0xbc, + 0x69, 0x4d, 0x65, 0x7c, 0x83, 0x36, 0x61, 0x2d, 0xde, 0x41, 0x99, 0xa9, + 0xe6, 0x4d, 0xda, 0xbd, 0xb5, 0xd5, 0x48, 0xbd, 0x7d, 0x29, 0xd7, 0xb1, + 0x4b, 0xdb, 0xdc, 0xb6, 0x5e, 0xd7, 0x7a, 0x3d, 0xfb, 0xa7, 0xab, 0xdb, + 0xcb, 0x9b, 0xa6, 0xdd, 0xdd, 0xfd, 0xf9, 0x68, 0xd6, 0xab, 0x99, 0x55, + 0xd2, 0x4c, 0xc4, 0x75, 0x77, 0x90, 0x60, 0xc7, 0x21, 0xc8, 0x28, 0x61, + 0x34, 0x06, 0x6b, 0xa0, 0x81, 0x86, 0xa8, 0xa3, 0x8d, 0x70, 0x95, 0x30, + 0x33, 0x81, 0x13, 0x30, 0xd4, 0xc2, 0xc7, 0x33, 0x56, 0xaf, 0x10, 0x3f, + 0x66, 0xa4, 0x51, 0x32, 0xbd, 0x01, 0xf7, 0x30, 0x1f, 0x40, 0xd7, 0x30, + 0x0a, 0x84, 0x2e, 0x30, 0x31, 0xc1, 0x6f, 0x30, 0x95, 0x46, 0x9e, 0x30, + 0x14, 0x81, 0x00, 0x30, 0x26, 0x80, 0x91, 0x30, 0x10, 0xc5, 0x24, 0x35, + 0xf6, 0x59, 0xea, 0x30, 0x89, 0x03, 0x20, 0x30, 0x28, 0x40, 0xe9, 0x32, + 0x0f, 0x13, 0xb9, 0x06, 0x38, 0x80, 0xa2, 0xc2, 0x99, 0xdd, 0x05, 0x19, + 0xa8, 0x39, 0x98, 0x05, 0x1a, 0x23, 0x51, 0x9c, 0x1b, 0x8f, 0x27, 0x0b, + 0x13, 0x18, 0xc0, 0x69, 0xa3, 0x09, 0x01, 0x44, 0x85, 0x45, 0xc2, 0xc5, + 0x00, 0xa2, 0xc2, 0xd6, 0x8a, 0xff, 0xfb, 0xd4, 0x60, 0x33, 0x0f, 0xf9, + 0xcb, 0x70, 0x3f, 0x03, 0xfb, 0x7b, 0x70, 0x53, 0xae, 0x08, 0x41, 0x24, + 0x42, 0x6e, 0x24, 0x51, 0xc1, 0x00, 0x0f, 0xed, 0xed, 0xc1, 0x5b, 0x38, + 0x21, 0x00, 0xb0, 0x95, 0xb8, 0x92, 0x09, 0x10, 0x18, 0x50, 0x93, 0x5a, + 0x0b, 0x82, 0xd4, 0x0b, 0x07, 0x08, 0x02, 0x52, 0x6a, 0x5e, 0xca, 0x57, + 0x52, 0x29, 0x98, 0x28, 0x4a, 0xc1, 0x17, 0x0d, 0x7d, 0xb6, 0x4c, 0x54, + 0x74, 0x20, 0x2e, 0x28, 0xa0, 0x0a, 0x81, 0x5b, 0xdd, 0x75, 0x28, 0x81, + 0x5d, 0x27, 0xc1, 0x3e, 0x81, 0xe0, 0x39, 0x08, 0x49, 0x98, 0x78, 0x0e, + 0xd2, 0x14, 0x3c, 0x0e, 0xfb, 0x21, 0xf0, 0x13, 0x08, 0x95, 0x13, 0x8a, + 0xc1, 0xe2, 0x61, 0x0f, 0x5a, 0x98, 0x9d, 0xa8, 0x51, 0x48, 0xc8, 0xc3, + 0x82, 0x30, 0xe8, 0xa2, 0xa6, 0x1a, 0x88, 0xe9, 0x58, 0x6d, 0x42, 0xe8, + 0x60, 0x48, 0x88, 0x6b, 0x7c, 0xe4, 0x87, 0x2b, 0xe0, 0x9c, 0x67, 0x3a, + 0x88, 0xbe, 0xc5, 0x43, 0x55, 0x67, 0x02, 0x78, 0xef, 0x55, 0xaf, 0xb3, + 0xa3, 0xd9, 0x7a, 0x81, 0x54, 0xe2, 0x4c, 0x1a, 0x37, 0x15, 0x80, 0xd1, + 0x73, 0x63, 0x86, 0xfa, 0x55, 0xd2, 0x2d, 0x26, 0xea, 0xec, 0x73, 0x12, + 0xb6, 0xb4, 0x4b, 0x94, 0xbe, 0xea, 0x45, 0x43, 0xf6, 0x63, 0x9f, 0x72, + 0x61, 0x3a, 0xc0, 0x89, 0x61, 0xc5, 0xa6, 0x80, 0xf5, 0xa5, 0x3b, 0x11, + 0xbd, 0xd4, 0x24, 0x36, 0x76, 0x68, 0x91, 0x15, 0x8e, 0x6c, 0x17, 0x47, + 0xca, 0xed, 0x5e, 0xdb, 0x2a, 0x49, 0xfa, 0xf5, 0x12, 0x2d, 0x8c, 0x59, + 0x5c, 0xad, 0xb5, 0x3a, 0x4f, 0xa8, 0x93, 0xaa, 0x14, 0x7c, 0xe8, 0xf9, + 0xde, 0x24, 0xd8, 0x93, 0x6b, 0xe6, 0x83, 0x09, 0x75, 0x34, 0xd6, 0xd1, + 0x01, 0x00, 0x12, 0xed, 0x4d, 0x84, 0xae, 0x39, 0x0b, 0xcc, 0x9c, 0x20, + 0x8b, 0x32, 0x10, 0x13, 0x59, 0x0c, 0xee, 0x5b, 0x77, 0xf5, 0xa7, 0x39, + 0x8d, 0x52, 0x4b, 0xb6, 0xbf, 0x23, 0xd1, 0x93, 0x74, 0xbb, 0x7b, 0x76, + 0x7a, 0x39, 0x34, 0xff, 0x65, 0xf6, 0xed, 0xd5, 0xb7, 0xff, 0x5d, 0x16, + 0xb2, 0xf6, 0x7e, 0x86, 0x27, 0xbe, 0xab, 0xbf, 0x45, 0x54, 0x46, 0xf7, + 0xd8, 0xad, 0xd1, 0xdd, 0x51, 0x8b, 0x33, 0xdd, 0x8a, 0x62, 0xdc, 0xd0, + 0x01, 0xe0, 0xd0, 0x55, 0x42, 0x8b, 0x29, 0x46, 0x20, 0xc0, 0x72, 0x03, + 0x30, 0x76, 0x42, 0xec, 0x30, 0x67, 0x03, 0xdd, 0x30, 0x61, 0x72, 0xc6, + 0x3c, 0xca, 0x4f, 0xc9, 0x31, 0x5e, 0x44, 0x06, 0x30, 0x33, 0x01, 0x15, + 0x30, 0xf0, 0x80, 0xcf, 0x30, 0x16, 0x00, 0xc8, 0x31, 0x47, 0x02, 0x31, + 0x30, 0x2f, 0xc1, 0x15, 0x30, 0x1e, 0x00, 0x01, 0x30, 0x0b, 0xc2, 0xd5, + 0x32, 0x91, 0x15, 0xab, 0x30, 0x13, 0x81, 0x2d, 0x30, 0x4e, 0x80, 0x09, + 0x34, 0x64, 0x53, 0x18, 0x1d, 0x1e, 0x24, 0x31, 0x0e, 0x90, 0x68, 0x98, + 0xa8, 0xd9, 0x98, 0x15, 0x99, 0x70, 0x38, 0x5c, 0x24, 0xc1, 0x07, 0xc2, + 0xc0, 0x62, 0x00, 0x10, 0x10, 0x31, 0x87, 0x88, 0x00, 0x43, 0x14, 0xc9, + 0xe6, 0x51, 0x21, 0x60, 0x11, 0xe0, 0x87, 0xd9, 0x00, 0x4b, 0x5d, 0x87, + 0x06, 0x07, 0x11, 0x03, 0x25, 0x70, 0xd0, 0x13, 0x19, 0x6f, 0xd6, 0x12, + 0x71, 0x11, 0x57, 0xa6, 0x4d, 0x01, 0x45, 0x9f, 0x66, 0x20, 0xa5, 0x33, + 0x6d, 0x3d, 0xf5, 0x8f, 0xac, 0x0d, 0x0b, 0x71, 0x6e, 0xb2, 0x14, 0x81, + 0x06, 0x3d, 0x8e, 0xc2, 0x44, 0xd8, 0xa8, 0x88, 0x85, 0x34, 0x21, 0xc7, + 0x5c, 0x22, 0x4c, 0x79, 0xbe, 0x66, 0x48, 0x2e, 0x91, 0xac, 0x8a, 0xc4, + 0xac, 0xcc, 0xa7, 0x32, 0x75, 0xdb, 0x6c, 0xed, 0x6e, 0x71, 0x54, 0xad, + 0xb0, 0x9f, 0xb1, 0x29, 0x62, 0x32, 0xc4, 0x8e, 0xad, 0xc3, 0xf6, 0xc6, + 0x73, 0xde, 0x03, 0xe8, 0x2a, 0xeb, 0xf6, 0x17, 0x6a, 0x97, 0x8e, 0x39, + 0x65, 0x82, 0xf5, 0xae, 0x3f, 0xbc, 0x6b, 0xc4, 0x91, 0x30, 0xf9, 0xb9, + 0x70, 0xa6, 0x63, 0x6c, 0xf7, 0xb4, 0xae, 0x4c, 0xf0, 0x20, 0xa8, 0x20, + 0x27, 0x2d, 0x05, 0x97, 0xc9, 0x68, 0x6d, 0x90, 0x1e, 0x31, 0x39, 0xc6, + 0xac, 0xca, 0xe7, 0x28, 0x0c, 0x78, 0xac, 0xef, 0x19, 0x64, 0x78, 0xd5, + 0x07, 0xb9, 0x3e, 0x80, 0xaf, 0x8b, 0x7c, 0xc2, 0xcb, 0x43, 0x62, 0xe2, + 0x03, 0xd7, 0x38, 0x8a, 0xeb, 0x41, 0x85, 0x0d, 0xd3, 0x8b, 0xd6, 0xc6, + 0xd6, 0x79, 0xa2, 0x1f, 0x9b, 0x3b, 0xab, 0x78, 0x18, 0x67, 0x2d, 0xb1, + 0x5a, 0xcd, 0x00, 0x18, 0xf5, 0x66, 0x8e, 0x44, 0xb5, 0x7b, 0xb8, 0x6b, + 0x62, 0x31, 0x00, 0xd6, 0x64, 0x63, 0xb3, 0x96, 0x40, 0x66, 0x4a, 0x53, + 0x1d, 0xc1, 0x47, 0xcc, 0xd9, 0x69, 0x59, 0x2e, 0xad, 0x23, 0x96, 0xde, + 0xcb, 0xb9, 0x6c, 0xaf, 0xd3, 0xff, 0x4a, 0x3a, 0x37, 0x5a, 0xed, 0xed, + 0xde, 0xcb, 0x6f, 0xcb, 0xba, 0x5f, 0x6b, 0x2d, 0xa8, 0x94, 0x6d, 0x6a, + 0xd6, 0xd0, 0x97, 0x65, 0x7b, 0x31, 0x74, 0xde, 0xf7, 0xb5, 0x0f, 0x63, + 0xc5, 0xc3, 0xce, 0xa5, 0x14, 0x38, 0x70, 0xeb, 0x3a, 0x90, 0x54, 0xc7, + 0x84, 0x02, 0x60, 0x22, 0x81, 0x15, 0x5e, 0x80, 0x03, 0x01, 0xa4, 0x0b, + 0x43, 0x06, 0xd8, 0x08, 0x13, 0x17, 0xad, 0x3f, 0xe3, 0xcc, 0x7c, 0x1f, + 0x13, 0x11, 0x3c, 0x0b, 0x63, 0x03, 0xe8, 0x12, 0x03, 0x06, 0x6c, 0x04, + 0x33, 0x01, 0x10, 0x03, 0x03, 0x12, 0x9c, 0x05, 0x03, 0x02, 0x28, 0x08, + 0x81, 0x80, 0x05, 0x4c, 0x04, 0x20, 0x7c, 0x0c, 0x19, 0x14, 0xbf, 0x0c, + 0x26, 0xc0, 0x07, 0x03, 0x00, 0xff, 0xfb, 0xd4, 0x60, 0x1d, 0x8d, 0x87, + 0x7b, 0x70, 0x41, 0x93, 0xfa, 0x63, 0x70, 0x5a, 0x6e, 0x08, 0x41, 0x2c, + 0x65, 0x6e, 0x9e, 0x3d, 0xc1, 0x04, 0x2f, 0xed, 0x2d, 0xc0, 0xd0, 0x90, + 0xe2, 0x9c, 0x70, 0x89, 0x28, 0xd3, 0x1d, 0x54, 0x64, 0x43, 0xa6, 0x69, + 0xb2, 0x98, 0x25, 0x2e, 0x10, 0x4a, 0x00, 0xa0, 0x8c, 0x8e, 0x44, 0xf7, + 0xb5, 0x84, 0xf5, 0x54, 0x91, 0xfa, 0x15, 0x32, 0xb9, 0x0c, 0xb2, 0x17, + 0x7a, 0x9d, 0x87, 0x33, 0x58, 0x62, 0x5d, 0x17, 0x8d, 0x3a, 0x0c, 0xad, + 0xa6, 0xb8, 0xb2, 0xa9, 0x14, 0x31, 0x83, 0xca, 0xfc, 0xc3, 0x3d, 0xb3, + 0x20, 0x86, 0x24, 0x72, 0x48, 0x09, 0xfe, 0x87, 0xa9, 0x40, 0xa9, 0xf1, + 0xb9, 0x83, 0xc4, 0x93, 0xc3, 0x1c, 0x64, 0xb4, 0x07, 0xbd, 0x23, 0x4e, + 0x1d, 0x6d, 0xf2, 0xd7, 0xd7, 0xed, 0xd0, 0x2e, 0x7d, 0xe9, 0xd8, 0x1f, + 0x62, 0x85, 0x8b, 0xb5, 0x06, 0x21, 0xbd, 0x48, 0xa3, 0x9a, 0xff, 0xf5, + 0x5c, 0x5e, 0xfb, 0x14, 0x8b, 0x1e, 0x66, 0x3a, 0x2e, 0xa4, 0x4a, 0xb2, + 0x9a, 0xe3, 0x0d, 0xc1, 0x7c, 0x3f, 0xc8, 0x90, 0xd7, 0xdf, 0xa0, 0x5b, + 0x5b, 0x37, 0x57, 0x20, 0x8e, 0x95, 0xe8, 0xeb, 0x13, 0x70, 0x40, 0x9b, + 0xeb, 0x39, 0x56, 0x51, 0x42, 0x85, 0x76, 0x16, 0x7e, 0xe5, 0x20, 0xc6, + 0x9e, 0xa2, 0xfb, 0x22, 0xc6, 0x98, 0x6f, 0xee, 0x92, 0x8b, 0x63, 0x83, + 0x19, 0x57, 0xfc, 0xf5, 0xb5, 0x6a, 0xb2, 0xad, 0x21, 0x4c, 0xe5, 0xa1, + 0x38, 0x38, 0x69, 0xb6, 0xc8, 0x84, 0x00, 0x0e, 0x78, 0x66, 0x8a, 0xee, + 0x9b, 0x96, 0x29, 0x39, 0x9b, 0x45, 0x84, 0xb9, 0x42, 0x75, 0x99, 0x17, + 0x75, 0x2f, 0x23, 0xbf, 0x54, 0x5d, 0xdb, 0x97, 0xff, 0xc9, 0x6e, 0x8e, + 0x8a, 0xb6, 0xaa, 0xf7, 0x2b, 0xec, 0xa5, 0xd1, 0x6f, 0x6d, 0xae, 0xbb, + 0xf2, 0xa6, 0xff, 0x4d, 0xcb, 0xd8, 0xce, 0x5b, 0xa5, 0xbd, 0x3d, 0x79, + 0xff, 0x22, 0x33, 0xcc, 0xd7, 0xa7, 0xaa, 0x5d, 0x77, 0x55, 0x65, 0xda, + 0xe5, 0xbb, 0x96, 0x8c, 0x3f, 0x65, 0xce, 0xa4, 0x54, 0x28, 0xd7, 0x29, + 0x4c, 0x0a, 0xca, 0x26, 0x43, 0x38, 0x88, 0xd3, 0x08, 0x90, 0x4c, 0x55, + 0xe6, 0x03, 0x98, 0x04, 0x26, 0x0d, 0x30, 0x35, 0x06, 0x33, 0x49, 0x70, + 0x27, 0xbc, 0x78, 0x8e, 0x86, 0x1f, 0xd8, 0x17, 0x26, 0x07, 0x80, 0x15, + 0x86, 0x12, 0x78, 0x0f, 0xe6, 0x03, 0x30, 0x01, 0x06, 0x25, 0x60, 0x49, + 0xc6, 0x03, 0x38, 0x17, 0x62, 0x20, 0x2b, 0x0c, 0x07, 0x30, 0x51, 0xcc, + 0x85, 0x96, 0x0d, 0x4c, 0x16, 0x90, 0x57, 0xcc, 0x01, 0x40, 0x0f, 0x8c, + 0x70, 0x54, 0x12, 0x44, 0x21, 0x07, 0x32, 0x38, 0x80, 0x51, 0xe2, 0x23, + 0xa2, 0x00, 0xf1, 0x43, 0x5e, 0x58, 0x24, 0xb3, 0x8a, 0xbf, 0x83, 0x43, + 0x14, 0x57, 0x55, 0xdc, 0xb9, 0xb9, 0x25, 0x73, 0x83, 0x51, 0x6c, 0xbc, + 0xce, 0xe4, 0x72, 0x72, 0x7d, 0xfc, 0x96, 0xba, 0xd1, 0xa8, 0xc4, 0xf4, + 0x92, 0x36, 0xfa, 0xc2, 0xa7, 0xe1, 0xc9, 0x5c, 0xa6, 0x43, 0x1d, 0x98, + 0x87, 0x2d, 0xd6, 0x97, 0xa0, 0x28, 0x18, 0xc1, 0x53, 0x67, 0x06, 0x89, + 0x45, 0x83, 0x44, 0x44, 0x63, 0x30, 0x3e, 0xfe, 0x99, 0x19, 0x15, 0x08, + 0x27, 0x39, 0xb4, 0x77, 0x4c, 0xa0, 0x6c, 0x90, 0xd3, 0x48, 0x53, 0x99, + 0x19, 0x14, 0xed, 0x24, 0x8c, 0xc7, 0x5a, 0x86, 0x9d, 0x62, 0x6f, 0x9b, + 0xc5, 0x6d, 0x2c, 0xc4, 0x97, 0x5c, 0x87, 0x4b, 0x99, 0x49, 0x46, 0x4c, + 0xc9, 0x48, 0xab, 0x8d, 0x32, 0xa3, 0x30, 0x40, 0xff, 0x14, 0x2f, 0x31, + 0x88, 0xd6, 0x47, 0x4a, 0x64, 0x9e, 0xa6, 0xa3, 0xc6, 0xea, 0x1a, 0xa4, + 0xb5, 0xec, 0xe2, 0x09, 0xba, 0x8a, 0xc9, 0x36, 0x69, 0x9c, 0x9e, 0x1b, + 0xf7, 0x0a, 0xc2, 0x55, 0x26, 0xa7, 0x49, 0xca, 0x37, 0xc8, 0x73, 0x19, + 0x69, 0xca, 0xaa, 0x60, 0x7c, 0x46, 0x70, 0x89, 0xeb, 0x00, 0x71, 0x79, + 0x17, 0x90, 0x54, 0x96, 0xc4, 0xc0, 0x06, 0xbd, 0x3a, 0x5e, 0x8f, 0xff, + 0xe5, 0xe8, 0xdf, 0x77, 0xaa, 0xeb, 0xeb, 0xc8, 0xca, 0x62, 0x31, 0x87, + 0x26, 0xa2, 0x01, 0x34, 0x80, 0x0d, 0xd5, 0x02, 0x8f, 0xb1, 0x90, 0x8f, + 0xef, 0xfa, 0x17, 0xc2, 0x0a, 0x14, 0x1a, 0xdf, 0xff, 0xff, 0xff, 0xd9, + 0xc8, 0x40, 0x12, 0x46, 0xd4, 0x55, 0x30, 0x24, 0xc1, 0x0d, 0x30, 0x5c, + 0x03, 0xf4, 0x31, 0xb3, 0xec, 0x91, 0x3f, 0x2e, 0x4b, 0x52, 0x30, 0xe9, + 0xc2, 0x6b, 0x30, 0x4d, 0x81, 0x03, 0x30, 0x47, 0x41, 0xbc, 0x30, 0x03, + 0x01, 0xfa, 0x31, 0x0c, 0x46, 0x3f, 0x30, 0x15, 0x40, 0xc2, 0x30, 0x06, + 0x00, 0xd9, 0x30, 0x3c, 0xc3, 0xd4, 0x35, 0xfa, 0xa0, 0x8e, 0x30, 0xf1, + 0x42, 0x70, 0x30, 0x33, 0x80, 0x8d, 0x33, 0x3b, 0x83, 0x18, 0x11, 0x11, + 0x9e, 0x1a, 0x6d, 0x28, 0xb2, 0x4b, 0x6c, 0x16, 0x18, 0x22, 0x48, 0x4a, + 0xe1, 0x18, 0x23, 0x40, 0x7d, 0xca, 0xa0, 0x80, 0x80, 0x57, 0x11, 0xba, + 0xa6, 0x42, 0x96, 0xc2, 0x53, 0xe2, 0x75, 0xa5, 0x35, 0x06, 0xa4, 0xda, + 0x4a, 0x25, 0xf2, 0x29, 0x24, 0x26, 0x5e, 0xf2, 0x3f, 0xb6, 0x60, 0xea, + 0x57, 0xee, 0xfc, 0x35, 0x2f, 0x8f, 0x4a, 0xde, 0xd7, 0x27, 0x0b, 0x73, + 0xd1, 0x39, 0x5d, 0x94, 0x6c, 0x55, 0x6c, 0x3f, 0x21, 0x2b, 0xf3, 0x0a, + 0x16, 0x34, 0xee, 0x23, 0x84, 0xb1, 0x54, 0x50, 0x22, 0x2b, 0x15, 0x29, + 0xc6, 0x15, 0xdb, 0xd7, 0xab, 0x29, 0xc7, 0x0b, 0x35, 0xb0, 0x47, 0x44, + 0x41, 0xc3, 0x3b, 0x5e, 0x5f, 0xff, 0xfb, 0xd4, 0x60, 0x53, 0x8f, 0xd8, + 0x7e, 0x70, 0x3f, 0x83, 0xfb, 0x7b, 0x70, 0x56, 0xee, 0x08, 0x41, 0x34, + 0x42, 0x6e, 0x23, 0xb5, 0xc0, 0xfc, 0x0f, 0xed, 0xed, 0xc1, 0x58, 0x37, + 0x60, 0xc0, 0xd0, 0x95, 0xb9, 0x33, 0x32, 0xc1, 0x6b, 0x84, 0x91, 0x58, + 0x8f, 0x01, 0x7a, 0xb0, 0xe0, 0xbc, 0x69, 0x76, 0xf2, 0xce, 0x50, 0x20, + 0xe1, 0x0e, 0x84, 0xa5, 0xea, 0x56, 0x78, 0x6f, 0x5c, 0x94, 0x2c, 0x37, + 0xaa, 0xad, 0x7a, 0xd2, 0x31, 0xe9, 0xfe, 0xa3, 0x4d, 0x1d, 0x8a, 0x2b, + 0xd7, 0x08, 0xb8, 0x6a, 0x7a, 0xcd, 0x4c, 0x3a, 0x5a, 0xfb, 0x55, 0xb6, + 0xd9, 0xbb, 0x0f, 0x60, 0xb5, 0x59, 0x66, 0x54, 0xeb, 0x3c, 0xba, 0xdc, + 0x05, 0xc6, 0x5c, 0x32, 0xe4, 0x9f, 0x66, 0x95, 0xb6, 0xaf, 0x1f, 0x6b, + 0x28, 0x86, 0xd8, 0x6c, 0xbd, 0x2a, 0xcc, 0xa8, 0x62, 0x4e, 0x4c, 0xd0, + 0xe9, 0xf2, 0x68, 0xfe, 0xc2, 0x35, 0x89, 0xea, 0xf6, 0x91, 0x08, 0xf7, + 0xc4, 0x38, 0x40, 0x02, 0x2c, 0xfb, 0x20, 0xe9, 0x26, 0x75, 0x54, 0xec, + 0x96, 0xf2, 0x94, 0xec, 0x70, 0x3b, 0x58, 0x94, 0x52, 0x6c, 0xdd, 0x0d, + 0xf7, 0xb1, 0x13, 0x65, 0x4b, 0x5d, 0x08, 0xc9, 0x4b, 0x54, 0xba, 0x76, + 0x45, 0x5f, 0x4b, 0xe8, 0x54, 0xd7, 0xef, 0x57, 0xfd, 0xbb, 0x2b, 0x9f, + 0x69, 0xd9, 0x3e, 0xef, 0xb2, 0x75, 0xdf, 0xbd, 0x6e, 0xcc, 0x88, 0xaf, + 0xbe, 0xab, 0xa5, 0xab, 0x66, 0xe4, 0xd7, 0x2a, 0xbb, 0x16, 0x64, 0x90, + 0xd6, 0x41, 0x46, 0x48, 0xb2, 0x49, 0x30, 0x70, 0x8c, 0x2c, 0xc7, 0x24, + 0xc0, 0x2e, 0xe8, 0x10, 0x41, 0x80, 0xcc, 0x0d, 0x08, 0x8c, 0x4e, 0x83, + 0x0d, 0x87, 0xf2, 0xd3, 0x76, 0xe4, 0xd6, 0x43, 0x03, 0x44, 0x31, 0xb3, + 0x02, 0x18, 0x25, 0x03, 0x12, 0xf8, 0x1c, 0x53, 0x01, 0x78, 0x16, 0xb3, + 0x11, 0x24, 0x7b, 0x83, 0x02, 0x80, 0x0d, 0xd3, 0x00, 0xac, 0x11, 0x23, + 0x06, 0x48, 0x2f, 0x93, 0x91, 0x65, 0xbc, 0x73, 0x15, 0xe8, 0x1e, 0x73, + 0x03, 0xbc, 0x09, 0x80, 0x85, 0xd0, 0x13, 0x02, 0x3c, 0x1a, 0x75, 0x18, + 0xb3, 0xba, 0xca, 0x1c, 0x2a, 0x2b, 0x2a, 0x4f, 0xa4, 0x3b, 0x17, 0x25, + 0xe7, 0x46, 0x20, 0xc7, 0x36, 0x26, 0xb4, 0x53, 0x5d, 0xee, 0x5b, 0x45, + 0xe3, 0x6b, 0x93, 0xc1, 0x70, 0x06, 0x9b, 0x0e, 0x3c, 0xcf, 0x64, 0xa2, + 0x27, 0x11, 0x94, 0xcb, 0x27, 0x19, 0xb3, 0x04, 0x89, 0x46, 0x9d, 0x97, + 0x32, 0xcb, 0xb5, 0x43, 0x0b, 0x75, 0xa0, 0x4b, 0x72, 0x28, 0xb5, 0x8d, + 0xb0, 0x31, 0xaf, 0xb1, 0x2a, 0x1d, 0x1e, 0x50, 0xdb, 0x17, 0x6c, 0xef, + 0x50, 0xf3, 0x11, 0xe2, 0x19, 0xd9, 0xcb, 0x7d, 0xb1, 0x09, 0x5e, 0x8a, + 0x3e, 0x9e, 0xb7, 0xdd, 0x1c, 0x71, 0x37, 0xe9, 0x46, 0x8f, 0x4f, 0x23, + 0x24, 0x8c, 0xac, 0x5f, 0x6b, 0x98, 0xf4, 0x62, 0x6f, 0x7b, 0x22, 0xed, + 0x45, 0x03, 0xbd, 0x5c, 0x2d, 0xae, 0xd2, 0xcf, 0x55, 0xcc, 0xea, 0x67, + 0x33, 0xf0, 0xfc, 0x5f, 0x59, 0x69, 0x54, 0x30, 0xb9, 0xa3, 0xe2, 0x1d, + 0xca, 0xd8, 0xf9, 0x5a, 0xac, 0x58, 0x0c, 0x0d, 0x91, 0xd2, 0x68, 0x5c, + 0x78, 0xcd, 0xe8, 0x95, 0x0a, 0x59, 0x4c, 0xb5, 0x2a, 0x14, 0xe7, 0x16, + 0x3a, 0x26, 0xe7, 0x5c, 0xec, 0x4b, 0x6c, 0x09, 0xa6, 0x86, 0x35, 0x2c, + 0x35, 0x53, 0x8c, 0x90, 0x6a, 0xf1, 0xae, 0xf1, 0x99, 0x15, 0xab, 0x51, + 0x61, 0xb0, 0x3b, 0x83, 0x19, 0xc6, 0x57, 0x37, 0x8c, 0x12, 0xb0, 0x51, + 0x0d, 0x82, 0xe5, 0x0c, 0xe6, 0x49, 0x1f, 0xee, 0xd3, 0xf0, 0x16, 0xde, + 0x28, 0x09, 0xf2, 0x78, 0x99, 0xb2, 0x28, 0x5c, 0x50, 0xd4, 0x79, 0x54, + 0x91, 0x37, 0x40, 0xb6, 0xad, 0x92, 0x33, 0x41, 0xd1, 0x3a, 0xe8, 0x3a, + 0x4c, 0x9e, 0x66, 0x4c, 0x63, 0x01, 0xab, 0xe6, 0xaa, 0xd5, 0x87, 0xaf, + 0x9d, 0x43, 0x34, 0x9d, 0x5b, 0x77, 0xda, 0xc7, 0xf7, 0xae, 0xfa, 0x95, + 0x92, 0x8c, 0xcc, 0x8b, 0x9e, 0xb4, 0x29, 0x57, 0xaa, 0xf4, 0x6d, 0x6e, + 0xb7, 0xdf, 0x29, 0xdd, 0xde, 0xad, 0x79, 0x18, 0xfd, 0x3b, 0x67, 0xb2, + 0xb2, 0x74, 0xf9, 0x7d, 0x74, 0xb3, 0xd8, 0xac, 0xc7, 0xb2, 0x51, 0xce, + 0x69, 0x91, 0xae, 0xc3, 0x46, 0x91, 0xc4, 0x91, 0xdc, 0x60, 0x4d, 0x59, + 0x1a, 0x02, 0x00, 0xa9, 0xd5, 0x30, 0x4e, 0x01, 0xc3, 0x30, 0x5c, 0x44, + 0x54, 0x30, 0xbb, 0xbd, 0x2f, 0x37, 0x48, 0x8c, 0x0e, 0x30, 0xd4, 0x82, + 0xdf, 0x30, 0x24, 0x40, 0x76, 0x31, 0x02, 0xc2, 0x4b, 0x30, 0x04, 0xc0, + 0x79, 0x31, 0xd0, 0x06, 0x61, 0x30, 0x66, 0xc0, 0x0f, 0x30, 0x36, 0x00, + 0x99, 0x30, 0xb5, 0x41, 0x50, 0x3a, 0x48, 0x85, 0xea, 0x32, 0x16, 0x40, + 0xd4, 0x30, 0x79, 0x80, 0x41, 0x39, 0x76, 0x13, 0x9e, 0x0e, 0x31, 0xb2, + 0xd3, 0x0e, 0xca, 0x30, 0xd1, 0x81, 0x00, 0x19, 0x29, 0xe1, 0x10, 0xca, + 0x6f, 0x2f, 0xa4, 0xac, 0x77, 0x04, 0x60, 0xe6, 0x5e, 0x09, 0x25, 0x83, + 0x40, 0xc0, 0x8f, 0xab, 0xce, 0xc6, 0x98, 0x6d, 0x09, 0x50, 0x1d, 0xe9, + 0x81, 0x98, 0x22, 0xfc, 0x86, 0x95, 0x45, 0xeb, 0x84, 0xca, 0x5a, 0xd4, + 0x4a, 0xc4, 0x46, 0x85, 0xcb, 0x7e, 0xec, 0x48, 0xdd, 0x9e, 0x46, 0x67, + 0x29, 0x21, 0xd8, 0xdc, 0x7d, 0x5a, 0x94, 0x65, 0x5d, 0x36, 0x77, 0xe8, + 0x63, 0xc4, 0xeb, 0x63, 0x12, 0xb6, 0x3b, 0x61, 0xd8, 0xce, 0x7f, 0xd9, + 0x52, 0xaa, 0x95, 0x10, 0xd8, 0x8c, 0x9e, 0x34, 0x75, 0x86, 0xd9, 0xd1, + 0xeb, 0x84, 0x7c, 0x45, 0x7a, 0xff, 0xfb, 0xd4, 0x60, 0x54, 0x0f, 0xd8, + 0xf2, 0x70, 0x3f, 0x03, 0xfb, 0x7b, 0x70, 0x4c, 0x6d, 0xa8, 0x52, 0x34, + 0x45, 0x6e, 0x62, 0x99, 0xc0, 0xfc, 0x0f, 0xed, 0x8d, 0xc1, 0x46, 0xb7, + 0xa1, 0x04, 0x50, 0x89, 0xb9, 0xa9, 0x8d, 0x63, 0x2a, 0x36, 0x17, 0xcb, + 0x6c, 0x28, 0x73, 0x53, 0x7b, 0xd7, 0x4c, 0x90, 0x15, 0x8f, 0xe6, 0x51, + 0x28, 0x64, 0x97, 0x2a, 0xe6, 0x76, 0x08, 0xb1, 0x5c, 0x61, 0xb8, 0x42, + 0x62, 0x3c, 0xd0, 0xd7, 0x27, 0x8f, 0x1b, 0x64, 0x52, 0x4a, 0x5b, 0xd3, + 0xaa, 0xc5, 0x62, 0x5a, 0x35, 0xb6, 0xed, 0xdb, 0x92, 0x96, 0xb2, 0xbc, + 0x57, 0xa9, 0xa1, 0x31, 0x36, 0x48, 0xc4, 0x86, 0xf8, 0x0c, 0x8f, 0x12, + 0x8c, 0xef, 0x9e, 0x36, 0xed, 0x75, 0x17, 0x11, 0x18, 0xbd, 0x1d, 0xc2, + 0x9a, 0xcc, 0x10, 0x1c, 0x59, 0xd6, 0xdb, 0x9a, 0xa2, 0xb0, 0x2d, 0x2a, + 0x68, 0xc3, 0x19, 0x33, 0x66, 0x05, 0xca, 0xbd, 0xfb, 0x92, 0xad, 0xc9, + 0x69, 0x32, 0x6e, 0x22, 0x58, 0xe3, 0x4a, 0x87, 0x1d, 0x70, 0xc7, 0x19, + 0xa2, 0x97, 0x39, 0x42, 0x50, 0x00, 0x2c, 0x91, 0x6a, 0x55, 0xdd, 0x2a, + 0x3b, 0xb6, 0x85, 0xa7, 0x4b, 0x3a, 0x69, 0x99, 0xea, 0xe9, 0xbb, 0xcc, + 0x78, 0x57, 0x7a, 0xeb, 0xb2, 0xbd, 0x5d, 0x55, 0xe6, 0x2d, 0xd5, 0xde, + 0xbb, 0xd7, 0xbe, 0xe9, 0xba, 0x7f, 0x4a, 0x2b, 0x7a, 0xdf, 0x4e, 0xba, + 0x65, 0xec, 0x89, 0x55, 0xd3, 0xf5, 0x25, 0x19, 0x3f, 0x3a, 0x3f, 0xff, + 0x6d, 0xfa, 0x7b, 0xdb, 0xaa, 0xd7, 0xdd, 0x14, 0xf3, 0x48, 0xb3, 0xa0, + 0x51, 0x5d, 0x94, 0xb1, 0x42, 0x40, 0x83, 0x81, 0x82, 0xa0, 0x0b, 0x89, + 0x84, 0x12, 0x18, 0x01, 0x8b, 0x49, 0x81, 0x19, 0xf2, 0xcc, 0x41, 0x21, + 0x88, 0xa8, 0x0e, 0x79, 0x82, 0x1e, 0x01, 0xc9, 0x81, 0x44, 0x1a, 0x51, + 0x80, 0xda, 0x02, 0xb9, 0x91, 0xae, 0x18, 0xc1, 0x82, 0xa8, 0x08, 0x11, + 0x81, 0xbe, 0x02, 0x29, 0x85, 0x3c, 0x13, 0x11, 0xcf, 0xd6, 0xcd, 0x71, + 0x8f, 0x5c, 0x06, 0xc1, 0x83, 0x5a, 0x03, 0x49, 0xd5, 0x07, 0x9a, 0xa9, + 0xe9, 0x9f, 0x0d, 0x1b, 0x2b, 0x71, 0xa7, 0x00, 0xc4, 0x85, 0x4d, 0x9c, + 0xb5, 0xce, 0xcd, 0xca, 0xc6, 0x1c, 0x40, 0xb0, 0x58, 0x42, 0xe3, 0x71, + 0x81, 0x0b, 0x8e, 0xcf, 0x13, 0x80, 0xb2, 0xac, 0x9e, 0x18, 0x4e, 0x15, + 0xaf, 0x30, 0xdc, 0xad, 0xc0, 0xd0, 0x0b, 0xf7, 0x14, 0x79, 0xd7, 0x5c, + 0x61, 0x97, 0x45, 0xb5, 0x13, 0x80, 0xa0, 0xd9, 0x4c, 0x19, 0x72, 0x7a, + 0x3d, 0x66, 0xec, 0x5e, 0x42, 0x4d, 0x61, 0x77, 0x2f, 0x64, 0xbe, 0x48, + 0x35, 0x6d, 0x3d, 0x49, 0x28, 0x05, 0xb1, 0x24, 0x4c, 0x4a, 0xe0, 0x82, + 0xf5, 0xc9, 0x8c, 0xa1, 0xbc, 0x72, 0x98, 0x8c, 0xf0, 0x38, 0xe2, 0x31, + 0xf9, 0x00, 0x76, 0x26, 0x9c, 0x3a, 0xd8, 0x8a, 0x52, 0x26, 0x09, 0x6e, + 0x99, 0x22, 0x2d, 0x9a, 0x24, 0x1c, 0x4b, 0x0e, 0x3a, 0x27, 0x17, 0x98, + 0x32, 0x64, 0xae, 0x5f, 0x25, 0x30, 0x89, 0x84, 0x4a, 0xd0, 0xcb, 0xd6, + 0x2c, 0x33, 0xe7, 0x2a, 0x0b, 0x6b, 0xae, 0x5d, 0x30, 0x8f, 0x60, 0x39, + 0x80, 0xe9, 0x19, 0x50, 0xb5, 0xe7, 0x19, 0xb8, 0x87, 0x0a, 0x09, 0x65, + 0xa5, 0x34, 0x48, 0xa8, 0x31, 0x36, 0xb7, 0x21, 0xbc, 0x98, 0xf7, 0x12, + 0x97, 0xd4, 0x98, 0x1e, 0x0f, 0x57, 0x38, 0x86, 0x37, 0x16, 0x4b, 0x87, + 0x2a, 0x8b, 0x0e, 0x1f, 0xa8, 0x5a, 0xc5, 0xd4, 0x9f, 0x9e, 0x32, 0x60, + 0x7b, 0x58, 0x0e, 0x8c, 0x88, 0x67, 0x02, 0x00, 0xf7, 0xaa, 0x44, 0x83, + 0xb1, 0x5a, 0x18, 0xc0, 0xf4, 0xba, 0x22, 0x04, 0x87, 0x03, 0x0a, 0x4d, + 0x1c, 0x5a, 0x35, 0xde, 0xe4, 0x72, 0x35, 0x94, 0xcf, 0xc8, 0x95, 0x12, + 0x9c, 0xdd, 0x84, 0x6c, 0x24, 0x5b, 0x1f, 0x09, 0x01, 0x33, 0x57, 0x3c, + 0xa4, 0x47, 0x7e, 0xba, 0x77, 0x6b, 0xaf, 0x6d, 0x94, 0xb5, 0xbd, 0x7f, + 0xad, 0x89, 0xab, 0xfb, 0xad, 0xae, 0x9e, 0xc9, 0x5a, 0x55, 0x2b, 0xaa, + 0xed, 0x52, 0xa5, 0xb5, 0xff, 0xd3, 0xdc, 0x88, 0xff, 0x91, 0xea, 0xa8, + 0xaf, 0x3d, 0x0f, 0x73, 0x9c, 0x10, 0xbc, 0x48, 0x50, 0x1b, 0x9d, 0xc4, + 0x90, 0x29, 0x0c, 0x2e, 0x41, 0x9a, 0x10, 0x0c, 0x0e, 0xc0, 0x31, 0xcc, + 0x1a, 0xf0, 0x41, 0x0c, 0x56, 0xc5, 0x24, 0xcf, 0x61, 0x00, 0xda, 0x8c, + 0x33, 0xe0, 0x34, 0xcc, 0x0c, 0x70, 0x2f, 0x0c, 0x4d, 0x20, 0x74, 0x40, + 0x00, 0x66, 0x98, 0xc2, 0x80, 0x61, 0x02, 0x40, 0xc9, 0x30, 0x08, 0x00, + 0xde, 0x30, 0x2f, 0xc2, 0x73, 0x36, 0x06, 0x20, 0xe5, 0x31, 0x24, 0x42, + 0x4d, 0x30, 0x36, 0x80, 0xf4, 0x32, 0x5c, 0x33, 0x24, 0x1a, 0x31, 0x31, + 0x93, 0x1d, 0xbd, 0x22, 0x44, 0x2f, 0x98, 0xc0, 0xe0, 0x90, 0xdb, 0x3b, + 0x7b, 0xa0, 0x37, 0x49, 0x58, 0x01, 0x48, 0xb0, 0xdc, 0x3e, 0x50, 0x03, + 0x83, 0x96, 0xa6, 0xcf, 0x6c, 0x95, 0x17, 0x26, 0xa1, 0xb8, 0x72, 0x1d, + 0x91, 0xcb, 0x5b, 0xf8, 0x9c, 0x3f, 0x3b, 0x8d, 0x99, 0xe9, 0x6d, 0xf6, + 0xa3, 0x21, 0x69, 0x49, 0xce, 0xf3, 0xbf, 0x8c, 0x62, 0x1b, 0x87, 0xd9, + 0x74, 0xce, 0x12, 0x9a, 0x3b, 0x26, 0xd3, 0x11, 0x94, 0xa8, 0xb4, 0x64, + 0x94, 0x50, 0x84, 0x89, 0x40, 0xf0, 0x91, 0xc1, 0xd3, 0x4c, 0xa5, 0x32, + 0x01, 0xb3, 0x58, 0x49, 0x25, 0x94, 0x0a, 0x09, 0xe0, 0x2a, 0x4c, 0x94, + 0x6a, 0xc7, 0x4e, 0xcc, 0x6d, 0x48, 0xcc, 0x81, 0x65, 0x09, 0x8d, 0x79, + 0x16, 0x03, 0xcb, 0x20, 0x1c, 0xff, 0xfb, 0xd4, 0x60, 0x59, 0x8d, 0x88, + 0x1a, 0x70, 0x40, 0x0b, 0xfb, 0x4b, 0x74, 0x50, 0x4e, 0x08, 0x52, 0x28, + 0x25, 0x6e, 0x1e, 0x2d, 0xc1, 0x02, 0x2f, 0xe5, 0x2d, 0xc1, 0x87, 0xb8, + 0x21, 0x24, 0x83, 0x15, 0xb8, 0xb6, 0x92, 0x32, 0x70, 0x80, 0x8e, 0xcd, + 0x34, 0x30, 0x69, 0x5a, 0x25, 0x58, 0x91, 0x70, 0xb1, 0xa4, 0x10, 0x36, + 0x46, 0xa2, 0x50, 0x8b, 0x27, 0x1b, 0x15, 0x0a, 0xd7, 0x9a, 0x64, 0xc9, + 0xa3, 0x26, 0xd8, 0x99, 0x65, 0xea, 0x1e, 0x96, 0xbe, 0xb2, 0x50, 0x71, + 0x82, 0xeb, 0xc1, 0x4a, 0x40, 0xc9, 0xe2, 0xa7, 0x66, 0xbb, 0x6c, 0x18, + 0x50, 0x80, 0x3c, 0x40, 0xb9, 0x39, 0x19, 0x29, 0x5d, 0xa3, 0x04, 0x25, + 0x8b, 0x90, 0xd1, 0x30, 0x80, 0xba, 0x86, 0x03, 0x68, 0x0b, 0x11, 0x87, + 0x09, 0x01, 0x90, 0x00, 0x12, 0x6b, 0x4e, 0x5f, 0x69, 0x87, 0x85, 0x90, + 0xcd, 0xc4, 0xd7, 0x2a, 0x1f, 0x47, 0x29, 0xf2, 0x21, 0x11, 0xd1, 0x84, + 0xb0, 0x08, 0x24, 0x46, 0xcc, 0xad, 0xbb, 0x33, 0xd1, 0xab, 0xa7, 0xad, + 0xbd, 0xed, 0xf6, 0xa9, 0x7f, 0xd3, 0xed, 0xce, 0xb9, 0xb7, 0x65, 0xff, + 0xd9, 0xac, 0xeb, 0xf5, 0xdb, 0xff, 0xad, 0xa8, 0x6d, 0x19, 0xeb, 0x4e, + 0x96, 0xb2, 0x9d, 0x9d, 0xd6, 0xd5, 0x21, 0x99, 0x2e, 0x38, 0x45, 0x1c, + 0xa0, 0x8d, 0x1a, 0x1c, 0x30, 0x75, 0x62, 0x05, 0x50, 0x63, 0x18, 0x15, + 0x80, 0x1f, 0x98, 0x2f, 0x20, 0x57, 0x98, 0xa5, 0xc4, 0x45, 0x1e, 0x4b, + 0x00, 0x01, 0x98, 0x5d, 0xc0, 0x14, 0x18, 0x2c, 0x20, 0x6f, 0x18, 0x6f, + 0xa0, 0xc5, 0x98, 0x10, 0x20, 0x8b, 0x18, 0x6a, 0xa1, 0x37, 0x98, 0x03, + 0x00, 0x45, 0x18, 0x03, 0x40, 0x7e, 0x98, 0x0f, 0x21, 0xda, 0x19, 0x51, + 0xee, 0x90, 0x18, 0x60, 0xa0, 0xef, 0x18, 0x0e, 0x00, 0x54, 0x9b, 0x37, + 0x19, 0x35, 0x97, 0x10, 0xee, 0x5c, 0x9e, 0x74, 0x2d, 0x2d, 0xd0, 0xd1, + 0xd0, 0x1c, 0x36, 0xc4, 0xa5, 0x4b, 0x69, 0xb9, 0xd3, 0xd6, 0x7e, 0xa1, + 0xf8, 0x25, 0xa8, 0xfb, 0xba, 0xd7, 0xe3, 0x33, 0x16, 0xa3, 0xb2, 0xf7, + 0xc1, 0xc2, 0xb3, 0x0e, 0xc7, 0xe4, 0x4f, 0x14, 0xcd, 0x59, 0x0b, 0xf5, + 0x28, 0xab, 0x6a, 0x18, 0x96, 0xd2, 0xd7, 0x91, 0x55, 0xae, 0x44, 0x4a, + 0xb0, 0xb6, 0xe9, 0x0c, 0x44, 0xc2, 0xd1, 0x51, 0x1c, 0x53, 0x3c, 0x29, + 0x72, 0xac, 0xc5, 0x2d, 0x43, 0x67, 0xa9, 0x7c, 0xb6, 0xc3, 0xea, 0xa0, + 0x47, 0x2e, 0x81, 0x0c, 0xc4, 0xec, 0xc6, 0x21, 0x45, 0x19, 0x25, 0x11, + 0x3d, 0x9c, 0xb2, 0x3d, 0xb2, 0xb1, 0xe5, 0x8c, 0x34, 0x84, 0xb2, 0x05, + 0x25, 0x78, 0xfb, 0x44, 0x8c, 0x55, 0x64, 0xd2, 0x46, 0xf2, 0xf3, 0x48, + 0x8c, 0x89, 0xa8, 0xcc, 0xb1, 0xa8, 0x2e, 0xf1, 0x11, 0x85, 0xfa, 0x19, + 0xe5, 0x26, 0x65, 0xf3, 0x8a, 0x0d, 0xa4, 0xd4, 0xf1, 0x3a, 0x4a, 0xac, + 0xe4, 0xb4, 0x4b, 0x3e, 0xdb, 0x68, 0xea, 0x8c, 0xa7, 0xa8, 0x10, 0xea, + 0x4c, 0xb0, 0xbc, 0x64, 0xa9, 0x34, 0xf4, 0xa3, 0x47, 0x10, 0x07, 0x99, + 0x58, 0x4e, 0x67, 0x51, 0xa0, 0x19, 0x15, 0x20, 0x21, 0x68, 0x22, 0x05, + 0x35, 0xca, 0x00, 0x38, 0xb5, 0x2a, 0xb3, 0xc9, 0xf8, 0xca, 0x1b, 0x1a, + 0xce, 0xdf, 0x29, 0x21, 0x5c, 0xb5, 0xfc, 0x59, 0x7b, 0xf5, 0xeb, 0x2e, + 0xa7, 0x0b, 0x96, 0xd9, 0xd3, 0xed, 0xfe, 0x55, 0x4c, 0x31, 0x4c, 0xcc, + 0x54, 0x75, 0x52, 0x8d, 0x62, 0x6c, 0x97, 0xd9, 0x79, 0xec, 0xcc, 0xa8, + 0x7d, 0x95, 0x0e, 0x45, 0x43, 0x31, 0x88, 0xcf, 0xe5, 0x49, 0x6c, 0xe9, + 0x74, 0xbe, 0xbf, 0xa5, 0x3f, 0xfb, 0x77, 0xbe, 0x4d, 0xfa, 0xfa, 0xf7, + 0xe5, 0x47, 0xbb, 0x68, 0x8f, 0x57, 0x6b, 0x4c, 0xa4, 0x59, 0x27, 0x30, + 0x9d, 0x58, 0x50, 0xea, 0xe3, 0x82, 0xc4, 0x68, 0x83, 0x08, 0xcd, 0x3c, + 0x41, 0x31, 0x05, 0x35, 0x14, 0xcc, 0xb8, 0xe4, 0xe0, 0xb8, 0xc9, 0x55, + 0x55, 0x00, 0x4d, 0xd2, 0x00, 0x60, 0x27, 0x00, 0x88, 0x60, 0x82, 0x83, + 0x72, 0x61, 0xf8, 0x2f, 0x38, 0x73, 0x5b, 0x08, 0x8a, 0x61, 0x12, 0x01, + 0xd8, 0x60, 0x7f, 0x83, 0x32, 0x60, 0x74, 0x83, 0xf8, 0x60, 0x54, 0x80, + 0xf4, 0x60, 0x4d, 0x82, 0x08, 0x60, 0x4a, 0x00, 0xda, 0x60, 0x2d, 0x80, + 0xec, 0x60, 0x6f, 0x03, 0xca, 0x61, 0xed, 0xa6, 0x3e, 0x61, 0x6c, 0x01, + 0xa2, 0x60, 0x49, 0x80, 0x90, 0x25, 0xb4, 0x4a, 0xd0, 0xc0, 0x32, 0x09, + 0x09, 0x65, 0x59, 0xaa, 0xa3, 0x94, 0x3e, 0xe0, 0xbb, 0x3c, 0x6a, 0xed, + 0x4b, 0x90, 0x85, 0x9b, 0x7a, 0x02, 0x69, 0xf0, 0xdb, 0xe2, 0xe4, 0xc4, + 0xdf, 0x17, 0x5e, 0x99, 0xdd, 0x82, 0x22, 0xed, 0x3e, 0x28, 0xa5, 0xd2, + 0x77, 0xfe, 0x41, 0x27, 0x58, 0x66, 0xf6, 0x27, 0x24, 0x79, 0x5e, 0xa7, + 0x96, 0x5f, 0x6a, 0x36, 0xe3, 0xc3, 0xe1, 0xb2, 0x29, 0x8a, 0xc4, 0x22, + 0xb0, 0x18, 0x34, 0x0e, 0x89, 0x03, 0xf4, 0x0f, 0x92, 0x0d, 0x13, 0x36, + 0x8d, 0x41, 0xf1, 0x48, 0xf1, 0x20, 0xaa, 0xe4, 0x78, 0xa1, 0x93, 0x68, + 0xd5, 0x65, 0x4d, 0xf0, 0x61, 0x0b, 0x37, 0x03, 0x01, 0xe9, 0xc9, 0x55, + 0x72, 0x2a, 0x3b, 0x12, 0x2f, 0xcc, 0x26, 0x6f, 0xa8, 0xa0, 0x86, 0x88, + 0xb2, 0x7e, 0x08, 0xd1, 0x9f, 0x3a, 0x93, 0x28, 0x58, 0xd6, 0x57, 0x65, + 0x21, 0xe6, 0x54, 0xc2, 0x35, 0xcc, 0xb6, 0xf6, 0xd5, 0x4e, 0xed, 0xce, + 0x9c, 0xe5, 0x09, 0x39, 0x24, 0x33, 0x3e, 0x4c, 0xd1, 0x11, 0x7c, 0xb9, + 0xa7, 0x39, 0xb9, 0x87, 0x2c, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x08, 0x87, + 0xc8, 0x70, 0x41, 0x33, 0xfa, 0x4b, 0x70, 0x5f, 0x8e, 0x08, 0x49, 0x20, + 0x65, 0x6e, 0x23, 0xf5, 0xc0, 0xfa, 0x0f, 0xed, 0xed, 0xc1, 0xba, 0xb8, + 0x20, 0x88, 0xb1, 0x95, 0xb8, 0xc9, 0xfb, 0x84, 0xfc, 0x69, 0x7c, 0x53, + 0xb3, 0x4b, 0x50, 0xa4, 0x3c, 0xfc, 0x5f, 0x5c, 0xd0, 0xba, 0x12, 0x71, + 0xe2, 0xc2, 0x61, 0xcd, 0x28, 0x4e, 0x0b, 0x81, 0x61, 0x6b, 0x00, 0x00, + 0x22, 0x7e, 0x40, 0x02, 0x5b, 0xe4, 0x63, 0x4c, 0x33, 0xca, 0xff, 0x83, + 0xb2, 0xc7, 0x41, 0x61, 0x08, 0x69, 0x1f, 0x33, 0xb1, 0x7a, 0x7e, 0x79, + 0x9a, 0x35, 0x09, 0xb0, 0x05, 0x0c, 0xe3, 0x32, 0x30, 0x85, 0x67, 0x15, + 0x72, 0x51, 0x95, 0x88, 0x45, 0x1e, 0x3d, 0x51, 0xbb, 0x23, 0x55, 0xaa, + 0xd4, 0x6d, 0x4f, 0xfa, 0xba, 0x3a, 0xaf, 0x7f, 0xef, 0xdb, 0xfe, 0x9e, + 0x94, 0xd1, 0x16, 0x9a, 0x13, 0x6d, 0x3f, 0x5d, 0x76, 0x77, 0x91, 0x11, + 0x5d, 0x66, 0x21, 0x77, 0xd6, 0xfd, 0xe6, 0xac, 0xaf, 0x20, 0xf4, 0x71, + 0x21, 0x8a, 0xc5, 0x29, 0xdc, 0x3a, 0x35, 0x44, 0x40, 0x33, 0x01, 0x84, + 0x16, 0xc3, 0x03, 0xcc, 0x4b, 0x73, 0x13, 0x8b, 0xec, 0x63, 0xba, 0xf8, + 0xca, 0xd3, 0x09, 0x00, 0x29, 0x23, 0x02, 0x84, 0x25, 0x73, 0x16, 0xb0, + 0x04, 0xf3, 0x01, 0x60, 0x16, 0x93, 0x0b, 0x1c, 0x10, 0x23, 0x02, 0x00, + 0x0e, 0x23, 0x03, 0x38, 0x07, 0x53, 0x06, 0x8c, 0x30, 0x83, 0x48, 0x61, + 0x75, 0x23, 0x14, 0xec, 0x09, 0x03, 0x04, 0xd0, 0x06, 0x91, 0x33, 0xe1, + 0x26, 0xd3, 0x23, 0x01, 0x32, 0x31, 0x23, 0x24, 0x02, 0x58, 0x37, 0x81, + 0x3a, 0x9e, 0x38, 0x16, 0x43, 0x05, 0x2e, 0x58, 0xec, 0x14, 0xc9, 0x1a, + 0x44, 0x41, 0x81, 0xb1, 0x02, 0xf5, 0xdb, 0xa1, 0x65, 0x71, 0x89, 0x0c, + 0x79, 0xee, 0x75, 0xd8, 0xcc, 0x33, 0x2d, 0x5a, 0x14, 0xb1, 0xf8, 0xe5, + 0x14, 0x46, 0x34, 0xcc, 0xdc, 0x07, 0x56, 0x3a, 0xe2, 0xcd, 0xd3, 0x44, + 0x5f, 0xc9, 0x69, 0x09, 0x2f, 0x27, 0x03, 0x6a, 0xb4, 0xf7, 0x45, 0x28, + 0x9b, 0x58, 0xe7, 0x88, 0x9d, 0x2b, 0x8f, 0xd4, 0x2d, 0xc5, 0xcb, 0x68, + 0x4c, 0x55, 0xc3, 0xf7, 0xed, 0xd1, 0x11, 0x0d, 0xed, 0xce, 0x26, 0xe3, + 0x1a, 0xe6, 0x1a, 0xd4, 0x25, 0x63, 0x12, 0x79, 0x65, 0x06, 0xf1, 0x18, + 0xae, 0x9d, 0x9d, 0x10, 0x9e, 0x5e, 0xca, 0x85, 0x76, 0x84, 0xaf, 0xb9, + 0xca, 0xc5, 0x32, 0x71, 0x69, 0x85, 0x1e, 0xf5, 0x79, 0x70, 0xeb, 0x0f, + 0x1f, 0xc4, 0x6c, 0x3f, 0xb1, 0x02, 0x63, 0xf5, 0x30, 0xd1, 0x11, 0x47, + 0x3a, 0xb5, 0x4c, 0xa5, 0x51, 0x36, 0x48, 0xab, 0x6a, 0x4f, 0xa7, 0xd0, + 0xd6, 0xbb, 0xac, 0x55, 0x65, 0x93, 0x4f, 0x0b, 0xc9, 0x7d, 0x63, 0x45, + 0xa2, 0x10, 0x8b, 0xa6, 0x1c, 0xea, 0xa1, 0xdc, 0xeb, 0x2f, 0x92, 0xee, + 0x4a, 0xeb, 0x35, 0xa1, 0x6c, 0x2e, 0x10, 0x14, 0x2c, 0x6b, 0x12, 0x35, + 0xc0, 0x97, 0x30, 0xdb, 0xe0, 0x27, 0xd3, 0xe6, 0x9a, 0x69, 0xb1, 0x0a, + 0x4b, 0x37, 0x12, 0x46, 0xf2, 0x5e, 0x8e, 0x4e, 0xa7, 0x98, 0x6c, 0xce, + 0xc0, 0x4e, 0x99, 0x4c, 0x72, 0x10, 0x4c, 0x9e, 0x33, 0x04, 0x80, 0x00, + 0x3a, 0x8c, 0xd5, 0x67, 0xf6, 0xc3, 0xac, 0xd1, 0x6b, 0x4d, 0x01, 0x9c, + 0x05, 0x52, 0x19, 0x68, 0x85, 0x72, 0x63, 0xba, 0x29, 0x91, 0x99, 0x85, + 0x73, 0x43, 0xc1, 0x99, 0x19, 0x67, 0x26, 0xa2, 0xa2, 0xca, 0x76, 0xdb, + 0xe8, 0xe6, 0x2d, 0x72, 0xed, 0xab, 0xdc, 0xa5, 0x4b, 0xde, 0xda, 0xba, + 0xab, 0x76, 0x63, 0xeb, 0xef, 0x3b, 0x13, 0x32, 0x5b, 0x3e, 0xcc, 0xe8, + 0x8d, 0xae, 0x66, 0xa2, 0x2b, 0x9a, 0x64, 0x75, 0x5d, 0x5d, 0x12, 0xdb, + 0xbb, 0x31, 0x58, 0x7b, 0xaa, 0xa1, 0xd9, 0x99, 0xd9, 0x58, 0x26, 0x62, + 0x8e, 0x20, 0xd6, 0x41, 0xc6, 0x50, 0xa1, 0x21, 0x62, 0x88, 0x07, 0xa1, + 0xf1, 0x61, 0x37, 0x0e, 0x18, 0x22, 0x28, 0x1a, 0x1a, 0x24, 0x22, 0x3d, + 0x30, 0x3a, 0xc1, 0x9c, 0x30, 0x2f, 0x84, 0x6b, 0x30, 0x30, 0xfb, 0x36, + 0x32, 0x20, 0x4c, 0xf3, 0x30, 0x5f, 0x42, 0xa0, 0x30, 0x32, 0x81, 0x52, + 0x30, 0x48, 0x40, 0xb5, 0x26, 0x03, 0x94, 0xc4, 0x84, 0x01, 0x10, 0xc0, + 0xae, 0x02, 0x1c, 0x14, 0x07, 0x99, 0x82, 0xa4, 0x01, 0x71, 0xa5, 0x82, + 0x31, 0xd9, 0x88, 0xe8, 0x00, 0x91, 0x81, 0xce, 0x00, 0x11, 0xdc, 0x54, + 0x0a, 0xd6, 0x61, 0x86, 0x0c, 0xb1, 0x01, 0x15, 0xa2, 0x59, 0x69, 0xf2, + 0xf1, 0x2a, 0xab, 0xa3, 0x04, 0xba, 0x89, 0x21, 0x1e, 0x7e, 0x21, 0x88, + 0x7d, 0xfd, 0x8c, 0xbb, 0x8b, 0xb9, 0xfc, 0xa6, 0xe5, 0x12, 0x8f, 0xc3, + 0x6e, 0x93, 0xf7, 0x03, 0xce, 0xcf, 0xdf, 0x91, 0xc0, 0x52, 0x58, 0x3a, + 0x03, 0x7d, 0x63, 0x52, 0x99, 0xc9, 0x1c, 0x4e, 0x6e, 0x55, 0x25, 0x8f, + 0x32, 0x4a, 0xc2, 0xbb, 0x69, 0x40, 0x2c, 0x3d, 0x3f, 0xa4, 0x99, 0x27, + 0x2a, 0x87, 0x2a, 0x63, 0xcf, 0x6e, 0x71, 0xd9, 0xce, 0x68, 0xcf, 0xa3, + 0x9e, 0xaf, 0x11, 0x64, 0xd1, 0x69, 0x99, 0x0c, 0x8c, 0x67, 0x2e, 0x9c, + 0xa4, 0x35, 0x59, 0xe2, 0xab, 0x53, 0x90, 0x23, 0x5a, 0x34, 0x03, 0x75, + 0x9c, 0xa9, 0x9e, 0x23, 0xe7, 0x6a, 0xb9, 0x8f, 0x44, 0xe3, 0x72, 0xa9, + 0x18, 0xc6, 0x88, 0xbe, 0x9a, 0x58, 0xd1, 0x5a, 0x8e, 0xed, 0x82, 0xb1, + 0x58, 0xdc, 0xa7, 0x92, 0x9a, 0x7e, 0xcc, 0xe9, 0x5a, 0xca, 0xfa, 0x3c, + 0x14, 0xfb, 0x1b, 0x94, 0xfb, 0xff, 0xfb, 0xd4, 0x60, 0x68, 0x8f, 0xd8, + 0x85, 0x70, 0x3f, 0x03, 0xfa, 0x7b, 0x70, 0x60, 0x6e, 0x08, 0x31, 0x3c, + 0x63, 0x6e, 0x24, 0x11, 0xc0, 0xfa, 0x0f, 0xe9, 0xed, 0xc1, 0x96, 0xb8, + 0x20, 0xc8, 0xf1, 0x95, 0xb8, 0x63, 0x55, 0xc3, 0x99, 0x2b, 0x2a, 0x99, + 0x32, 0xaa, 0x44, 0xba, 0x82, 0xe5, 0x2c, 0xd1, 0x1f, 0x3a, 0x79, 0x1f, + 0x0a, 0x7c, 0xc4, 0x92, 0x16, 0x14, 0x0c, 0xd1, 0x37, 0x11, 0xb9, 0x70, + 0xa6, 0xb3, 0xf6, 0x55, 0x73, 0x3a, 0x12, 0xae, 0x7a, 0xd0, 0xc2, 0x93, + 0x8e, 0xaa, 0xda, 0x99, 0x36, 0xa3, 0xca, 0x49, 0x92, 0x31, 0x3f, 0xd4, + 0x45, 0xf4, 0x42, 0x1e, 0xd5, 0x2e, 0x51, 0x46, 0x9d, 0x80, 0x11, 0x11, + 0x77, 0x49, 0xa9, 0x49, 0xe2, 0x57, 0x50, 0xf3, 0x8c, 0xc4, 0xce, 0x63, + 0x7f, 0x9c, 0x5e, 0x91, 0xd2, 0xe9, 0xc2, 0xb9, 0xf8, 0x25, 0x87, 0x6f, + 0x5c, 0xd1, 0x5e, 0xf9, 0x2f, 0x0e, 0x7d, 0xf2, 0xe7, 0x9c, 0x3c, 0x88, + 0xb7, 0xe7, 0x61, 0xde, 0x72, 0x3b, 0xb7, 0x97, 0xc6, 0x2f, 0xef, 0xfc, + 0xf2, 0xc8, 0x8f, 0x3a, 0x59, 0x54, 0x9e, 0x77, 0xe7, 0x92, 0x7d, 0x22, + 0x3f, 0x9f, 0xba, 0x17, 0x27, 0x53, 0xca, 0x67, 0xc9, 0x2c, 0xca, 0x1f, + 0x4b, 0x97, 0x63, 0xf4, 0x52, 0xd8, 0xa1, 0x48, 0xf0, 0xc8, 0x5a, 0xa9, + 0x8c, 0xa1, 0x54, 0x19, 0x19, 0xa8, 0x70, 0x61, 0x87, 0x30, 0x5c, 0xc1, + 0xd6, 0x30, 0x82, 0x04, 0x79, 0x31, 0x6e, 0x7a, 0xe8, 0x3d, 0x7a, 0xcc, + 0x0b, 0x30, 0xfd, 0x42, 0xae, 0x30, 0x50, 0x81, 0xd1, 0x30, 0x43, 0xc1, + 0x66, 0x30, 0x0c, 0x40, 0x64, 0x30, 0xc4, 0x42, 0x23, 0x30, 0x34, 0x40, + 0xe5, 0x30, 0x39, 0x41, 0x00, 0x30, 0x4d, 0x00, 0xd2, 0x34, 0xec, 0x0d, + 0xdb, 0x31, 0x90, 0xc3, 0x65, 0x30, 0x23, 0xc0, 0x7c, 0x30, 0x00, 0xce, + 0xa4, 0x03, 0x22, 0xa4, 0xca, 0x29, 0x75, 0x41, 0x40, 0xd7, 0x2a, 0x2c, + 0x38, 0x4e, 0x3c, 0xa5, 0x6d, 0x37, 0x44, 0xef, 0x65, 0x0c, 0x21, 0xe7, + 0x94, 0x2d, 0x37, 0x55, 0xd3, 0x6e, 0x10, 0xeb, 0x69, 0x12, 0x7d, 0x1f, + 0xd8, 0xa4, 0x3a, 0xf4, 0xbb, 0x8f, 0xfb, 0x52, 0x79, 0x59, 0xd4, 0x61, + 0xdc, 0xce, 0x91, 0xc5, 0x6e, 0x73, 0xae, 0x6b, 0x46, 0x96, 0x4c, 0x57, + 0xc6, 0x79, 0x03, 0x14, 0xbe, 0x2c, 0x9d, 0x4a, 0x27, 0xad, 0x27, 0x62, + 0x16, 0x7f, 0xc8, 0xac, 0x57, 0x19, 0x8c, 0xc8, 0x6e, 0x61, 0xde, 0x12, + 0x6c, 0xbb, 0x59, 0xc1, 0x6b, 0xc4, 0xc9, 0xda, 0xf5, 0xb5, 0x58, 0xc4, + 0xbc, 0x70, 0xa7, 0xd2, 0x2c, 0x08, 0xb4, 0x2d, 0x28, 0x86, 0xab, 0x1b, + 0x1a, 0xce, 0x88, 0x07, 0x9a, 0x55, 0x75, 0x01, 0x88, 0xbc, 0x33, 0x9d, + 0x6a, 0x08, 0x8f, 0x13, 0xb0, 0x69, 0xa8, 0x6b, 0x9a, 0xa7, 0xec, 0xf1, + 0x8c, 0xde, 0xc6, 0x8e, 0x84, 0x3d, 0x7c, 0xbe, 0x39, 0xb8, 0x2b, 0x58, + 0x19, 0x8f, 0xe8, 0x8b, 0xef, 0x58, 0x9b, 0x97, 0xa3, 0xe4, 0xfd, 0x46, + 0x25, 0x59, 0x9d, 0x2e, 0xe2, 0x20, 0x9c, 0x5e, 0x2b, 0x60, 0xd6, 0x54, + 0x72, 0x3e, 0x35, 0x22, 0xa9, 0x1f, 0x2b, 0x9f, 0x59, 0x4c, 0xdd, 0x15, + 0x48, 0xae, 0x65, 0x52, 0xae, 0x99, 0xd1, 0x0a, 0x25, 0x4d, 0x1a, 0x94, + 0x0c, 0x0f, 0x51, 0xb1, 0x1b, 0x9e, 0x23, 0xd8, 0x97, 0xcb, 0x94, 0x65, + 0xda, 0xe9, 0x30, 0xa3, 0x76, 0xa3, 0x4b, 0x13, 0xf3, 0x9d, 0xcd, 0x65, + 0x95, 0x0e, 0x32, 0x57, 0x62, 0xec, 0x6e, 0x39, 0x17, 0xe6, 0x14, 0x52, + 0x6d, 0xaa, 0x48, 0xaf, 0x8a, 0xf6, 0xd1, 0x29, 0x6f, 0xfa, 0x99, 0x95, + 0x3b, 0x64, 0x2f, 0x9a, 0x93, 0x03, 0xb5, 0x42, 0xba, 0xb2, 0x18, 0x9d, + 0x72, 0x85, 0xcf, 0x59, 0x0c, 0xe4, 0x45, 0x8e, 0xeb, 0xba, 0x1f, 0x77, + 0x5b, 0x3d, 0x9b, 0x9d, 0x59, 0xae, 0xce, 0xa8, 0xfa, 0xab, 0x5f, 0x9f, + 0x57, 0xc9, 0xa6, 0xdf, 0x5a, 0x29, 0xb3, 0xbe, 0xe8, 0x7b, 0x3b, 0x6a, + 0xfd, 0xd5, 0x74, 0xb1, 0xd5, 0x1e, 0x96, 0xad, 0x5e, 0x95, 0xb9, 0xdd, + 0x4e, 0xdd, 0xed, 0x3d, 0x8e, 0xad, 0x9d, 0xca, 0x2e, 0xe2, 0x65, 0x14, + 0x67, 0x16, 0x10, 0x13, 0x16, 0x20, 0xf3, 0x88, 0x86, 0x89, 0x9c, 0xe5, + 0x0b, 0x0d, 0x09, 0xaa, 0x00, 0x2a, 0x01, 0x82, 0x12, 0x07, 0xc1, 0x83, + 0x90, 0x0f, 0x39, 0x8b, 0x5e, 0xc7, 0x71, 0xeb, 0x4a, 0x2f, 0x69, 0x86, + 0xbe, 0x0a, 0xb1, 0x83, 0x10, 0x07, 0x79, 0x81, 0xaa, 0x08, 0x09, 0x81, + 0x1c, 0x07, 0xd9, 0x81, 0xf6, 0x11, 0xa1, 0x80, 0xa2, 0x02, 0x11, 0x81, + 0x44, 0x07, 0x28, 0x58, 0x25, 0x03, 0x13, 0x2c, 0x72, 0x23, 0x0e, 0x5c, + 0x19, 0x43, 0x00, 0xb8, 0x07, 0xf3, 0x04, 0x91, 0x05, 0x1e, 0x92, 0xd0, + 0x49, 0xce, 0x8b, 0xd4, 0xec, 0xc7, 0x1f, 0xe8, 0x3e, 0x1d, 0x6a, 0x51, + 0x99, 0xd8, 0xc4, 0x6a, 0x46, 0xcb, 0xea, 0x53, 0xbf, 0x34, 0xae, 0xeb, + 0xbe, 0xfa, 0x42, 0x9f, 0xf9, 0xa9, 0x05, 0x3e, 0x54, 0xf2, 0x8f, 0x80, + 0x60, 0x0b, 0x93, 0xb3, 0xf1, 0xf7, 0x96, 0x07, 0x76, 0x64, 0xed, 0xec, + 0x8e, 0xd4, 0xb5, 0x69, 0x63, 0x5f, 0x82, 0x02, 0x9a, 0xa7, 0x53, 0x9a, + 0xef, 0xd5, 0x26, 0x99, 0x96, 0xd6, 0x13, 0x39, 0xd2, 0xa3, 0xc9, 0x93, + 0xf9, 0x9c, 0x30, 0x29, 0x39, 0x75, 0x5d, 0xf8, 0xf0, 0x48, 0x6e, 0x02, + 0xa9, 0xd9, 0xd5, 0x0b, 0x47, 0x2b, 0xcb, 0x2d, 0x2b, 0x42, 0x86, 0x0b, + 0x61, 0x71, 0x4b, 0x25, 0xb7, 0xa2, 0x70, 0x94, 0xa4, 0xbb, 0xc5, 0xeb, + 0x72, 0x57, 0x52, 0xba, 0xad, 0xff, 0xfb, 0xd4, 0x60, 0x5a, 0x8d, 0x97, + 0xe6, 0x70, 0x40, 0x2b, 0xf8, 0x63, 0x70, 0x55, 0x2e, 0x08, 0x56, 0x20, + 0x65, 0x6e, 0x1d, 0x79, 0xc1, 0x02, 0x4f, 0xbd, 0x2d, 0xc1, 0x86, 0x38, + 0x20, 0xc4, 0xf1, 0x95, 0xba, 0x59, 0xda, 0xb3, 0xd5, 0xec, 0x1f, 0x9d, + 0x44, 0xa0, 0xe2, 0x3e, 0x7d, 0x2a, 0xce, 0x65, 0x5b, 0xbc, 0xa5, 0x71, + 0x4e, 0x8b, 0xd5, 0x28, 0x59, 0x1a, 0xfb, 0x59, 0x52, 0x4e, 0xba, 0xb6, + 0x16, 0xca, 0x1b, 0x76, 0x71, 0x6a, 0x37, 0xd6, 0x47, 0x07, 0x94, 0xcf, + 0x4f, 0x9e, 0xc5, 0xb0, 0xd9, 0x0f, 0xd8, 0x3d, 0x6f, 0xb4, 0x49, 0xa0, + 0x93, 0x12, 0x23, 0x18, 0x84, 0x86, 0xd7, 0x07, 0x6f, 0x07, 0xc5, 0x73, + 0xa7, 0xca, 0x63, 0x80, 0xbc, 0x01, 0xd4, 0xa0, 0x00, 0x38, 0xf6, 0x5e, + 0xec, 0x35, 0x0b, 0xe2, 0xe7, 0x38, 0xef, 0x70, 0x4e, 0x25, 0x72, 0x84, + 0x69, 0x15, 0x09, 0xc5, 0x33, 0xc1, 0xd2, 0xa7, 0xb3, 0x97, 0x07, 0xee, + 0x9d, 0x90, 0xcd, 0xad, 0xbc, 0xc6, 0x65, 0xbb, 0xf7, 0xe9, 0x44, 0xef, + 0x7c, 0x9f, 0xdf, 0xb5, 0x7f, 0xff, 0xd7, 0xfd, 0x11, 0xa4, 0xe9, 0x4a, + 0xd3, 0xbe, 0xca, 0x8f, 0xed, 0x67, 0xd1, 0xf6, 0xbd, 0x95, 0x7f, 0xfd, + 0x8c, 0x95, 0x55, 0x2d, 0x19, 0xb7, 0x50, 0xf9, 0xc5, 0x84, 0xc1, 0xc5, + 0x8e, 0x02, 0x15, 0x98, 0xe2, 0x4e, 0x84, 0x98, 0x15, 0xa0, 0x25, 0x18, + 0x33, 0x00, 0x1b, 0x18, 0xaf, 0x22, 0xa5, 0x9e, 0x63, 0x60, 0x90, 0x18, + 0x68, 0x60, 0x0b, 0x98, 0x23, 0xc0, 0x55, 0x98, 0x43, 0xe0, 0x36, 0x18, + 0x0d, 0x80, 0x33, 0x18, 0x4c, 0x40, 0xa3, 0x98, 0x00, 0x80, 0x14, 0x81, + 0x80, 0x11, 0x11, 0x00, 0x9e, 0x60, 0x8c, 0x85, 0x26, 0x60, 0x1f, 0x80, + 0x56, 0x16, 0x00, 0x18, 0x3f, 0x4b, 0xc9, 0x63, 0x57, 0x4a, 0xb8, 0x2e, + 0xae, 0x9f, 0xb6, 0xc6, 0x42, 0x50, 0xd5, 0x22, 0x21, 0x34, 0x7f, 0x34, + 0x27, 0x8e, 0x65, 0x84, 0x21, 0x43, 0xb7, 0x05, 0x93, 0x9e, 0x3b, 0x61, + 0x7c, 0x8b, 0x17, 0x0c, 0x2e, 0xce, 0x4c, 0xa5, 0x51, 0xcd, 0xa9, 0xe5, + 0xb8, 0x51, 0x8b, 0xba, 0x65, 0x8d, 0x0e, 0x57, 0xa8, 0x2b, 0x04, 0x8d, + 0x0a, 0x45, 0x44, 0x6f, 0x65, 0x19, 0xc3, 0xa3, 0xa7, 0xed, 0x71, 0xf3, + 0x85, 0x8d, 0x96, 0x6a, 0xe8, 0x3e, 0x62, 0x2d, 0x2a, 0x89, 0xb6, 0xa0, + 0x8c, 0x76, 0x4a, 0x22, 0x23, 0x0b, 0xb8, 0x88, 0x94, 0x8b, 0x36, 0xcd, + 0xde, 0x72, 0x02, 0x66, 0xe6, 0x57, 0xac, 0xd2, 0xa4, 0x4d, 0xb0, 0xcc, + 0x59, 0xec, 0x24, 0xba, 0x69, 0xdb, 0x66, 0x7a, 0x2a, 0x15, 0xae, 0x85, + 0x56, 0x0d, 0x29, 0x3b, 0x95, 0x1a, 0x26, 0x31, 0x04, 0x2c, 0x20, 0xc3, + 0x27, 0xde, 0xac, 0x10, 0x30, 0x60, 0xa3, 0x90, 0xc8, 0xb5, 0x6b, 0x50, + 0xec, 0x3c, 0x86, 0x72, 0x61, 0x33, 0x62, 0x3b, 0x67, 0xc7, 0xb4, 0x79, + 0x34, 0xea, 0x2a, 0xce, 0x47, 0x0d, 0x36, 0x4a, 0x44, 0x23, 0x11, 0x91, + 0x1b, 0x91, 0x52, 0x52, 0xef, 0x4c, 0x19, 0x07, 0xe4, 0x2a, 0x06, 0xc4, + 0x80, 0xa8, 0x82, 0x26, 0xf9, 0x9a, 0x99, 0xd4, 0x4b, 0x3c, 0x97, 0x39, + 0xd5, 0x9a, 0xf9, 0x23, 0xff, 0xf2, 0x26, 0x5e, 0x91, 0xab, 0x9f, 0x6f, + 0xc2, 0x77, 0xff, 0x32, 0x13, 0x20, 0x51, 0x64, 0x27, 0x51, 0xd5, 0xad, + 0xa6, 0x56, 0x4a, 0x53, 0x44, 0xe6, 0xda, 0xdb, 0x5b, 0x23, 0x3f, 0x3e, + 0xd6, 0x41, 0xe9, 0x57, 0x4b, 0x7d, 0x6b, 0xf3, 0x3a, 0xd5, 0xf5, 0x64, + 0xbe, 0x96, 0xb2, 0x25, 0xb4, 0x43, 0x55, 0x2a, 0xc8, 0x96, 0x74, 0xa5, + 0x1f, 0xad, 0xec, 0x8c, 0xd5, 0x4a, 0x3b, 0x0b, 0x8c, 0x51, 0xe7, 0x14, + 0x94, 0xc5, 0x10, 0x11, 0x20, 0x74, 0xa1, 0x33, 0x8a, 0x07, 0x6a, 0x1c, + 0x07, 0x61, 0x42, 0xa6, 0x20, 0xa6, 0xa2, 0x99, 0x97, 0x1c, 0x9c, 0x17, + 0x19, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x19, 0xc0, 0xc1, 0x30, 0x71, 0x02, 0xe6, 0x31, 0xa2, 0x66, + 0x0b, 0x3f, 0xb0, 0xca, 0x10, 0x30, 0xf9, 0x41, 0xd3, 0x30, 0x6b, 0x00, + 0x3c, 0x30, 0xc9, 0x81, 0x40, 0x30, 0x22, 0x80, 0xb2, 0x30, 0xd9, 0x41, + 0x99, 0x30, 0x21, 0x80, 0x33, 0x30, 0x01, 0x40, 0x18, 0x1d, 0x01, 0x68, + 0xc3, 0x36, 0x15, 0x18, 0x68, 0x07, 0x03, 0x00, 0x3c, 0x00, 0xf0, 0x33, + 0x13, 0x73, 0xf8, 0xc3, 0x8c, 0xa2, 0x24, 0x07, 0x83, 0x7a, 0xa5, 0x85, + 0x76, 0xaa, 0x3a, 0x4c, 0xb3, 0x7a, 0x3a, 0x78, 0xcc, 0x57, 0x8f, 0x42, + 0x29, 0xb9, 0x3e, 0xa4, 0x1b, 0xa4, 0x29, 0xb1, 0x78, 0x60, 0x28, 0xec, + 0x90, 0x56, 0x44, 0x57, 0xa0, 0x4e, 0xe5, 0xf4, 0x0a, 0x0d, 0x64, 0xba, + 0x37, 0x4e, 0x8d, 0x34, 0xd0, 0xa6, 0x3c, 0x69, 0x6d, 0xbf, 0x92, 0x98, + 0x75, 0xe5, 0x8e, 0xbf, 0x30, 0xdc, 0x96, 0x9e, 0x6a, 0x66, 0x08, 0xad, + 0x49, 0x3d, 0x3d, 0xd7, 0xf5, 0xff, 0x86, 0x20, 0x9c, 0xb1, 0xcf, 0x09, + 0xec, 0xe5, 0xd7, 0xe2, 0xb7, 0xa0, 0x38, 0x3e, 0x35, 0xb8, 0xdd, 0x15, + 0x0c, 0xb3, 0x55, 0xe5, 0xb7, 0xa2, 0xaf, 0xa4, 0x9a, 0x93, 0x08, 0x72, + 0x51, 0x01, 0xcf, 0xcf, 0x59, 0x90, 0xca, 0x23, 0x91, 0x29, 0xf8, 0x11, + 0xfe, 0x99, 0xa5, 0x86, 0x26, 0xe9, 0x62, 0x12, 0xd8, 0x62, 0x1f, 0x8c, + 0x52, 0xd0, 0xd0, 0x4c, 0x49, 0x25, 0x52, 0x6a, 0x79, 0xf7, 0x8a, 0x7a, + 0x5f, 0x2f, 0x9d, 0x77, 0xe9, 0xb3, 0xa3, 0xc3, 0x90, 0x65, 0x34, 0x86, + 0xb5, 0xda, 0xf4, 0xd9, 0xcb, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0x99, + 0x31, 0x75, 0x3f, 0x03, 0xef, 0xc3, 0x70, 0x65, 0x0e, 0x08, 0x32, 0x20, + 0x65, 0x6e, 0x22, 0x75, 0xc0, 0xfa, 0x0f, 0xe1, 0x8d, 0xc1, 0x58, 0x37, + 0xa1, 0x59, 0x11, 0x15, 0xb9, 0x6c, 0xc4, 0xa9, 0xa7, 0x9f, 0xc9, 0xab, + 0x54, 0x52, 0x0a, 0x1a, 0xd1, 0xbb, 0x9c, 0x8d, 0x56, 0xab, 0x47, 0x6e, + 0xb5, 0xda, 0x5c, 0xe8, 0x22, 0x54, 0xf3, 0xf3, 0x71, 0x78, 0x7e, 0x9a, + 0xb4, 0xcc, 0xa6, 0x35, 0x01, 0xba, 0x15, 0xea, 0x42, 0x66, 0xdf, 0x79, + 0x64, 0x69, 0xea, 0x94, 0xc4, 0xdd, 0x09, 0x34, 0x92, 0x53, 0x2d, 0x88, + 0xb5, 0x16, 0x76, 0xb0, 0xb1, 0xa6, 0xa4, 0xcb, 0x1a, 0xe2, 0xc5, 0x77, + 0xdd, 0xe6, 0xaf, 0x0e, 0xb2, 0xc2, 0x13, 0x40, 0x20, 0x00, 0x00, 0x1f, + 0x79, 0x84, 0x61, 0xc3, 0x3e, 0xe7, 0x79, 0xb1, 0x55, 0xd0, 0xf1, 0xf6, + 0x80, 0xc0, 0x42, 0x0e, 0x10, 0xde, 0x15, 0x23, 0x6c, 0xf3, 0xfa, 0x65, + 0x35, 0xf3, 0xff, 0x2b, 0xa2, 0xad, 0x86, 0x33, 0xd5, 0x52, 0xde, 0x88, + 0xbf, 0x59, 0x36, 0x52, 0x6e, 0x84, 0xde, 0xf7, 0x99, 0x1d, 0xf4, 0x75, + 0x72, 0x5b, 0x64, 0x5b, 0xe9, 0xaa, 0x2b, 0xa9, 0x6f, 0x46, 0xbd, 0x7e, + 0x64, 0x92, 0xea, 0x8d, 0x66, 0x79, 0xec, 0xe7, 0x98, 0xca, 0xd4, 0x75, + 0x91, 0x19, 0xee, 0xd6, 0x11, 0x73, 0x2c, 0x87, 0x41, 0xa3, 0x82, 0x84, + 0x98, 0x58, 0x50, 0xc7, 0x16, 0x45, 0x2a, 0x89, 0x89, 0x90, 0x6a, 0x85, + 0x18, 0x12, 0x80, 0xd2, 0x98, 0x0f, 0x42, 0x58, 0x18, 0x63, 0x7d, 0x98, + 0x9c, 0x6c, 0x67, 0x67, 0x18, 0x35, 0xa1, 0xab, 0x98, 0x17, 0x01, 0x9a, + 0x18, 0x5c, 0x41, 0x89, 0x98, 0x0d, 0x80, 0x32, 0x98, 0x20, 0xc1, 0x5c, + 0x18, 0x17, 0x20, 0x1a, 0x98, 0x09, 0xc0, 0x1c, 0x18, 0x02, 0x20, 0x32, + 0x98, 0xbd, 0xa2, 0x7f, 0x98, 0x0d, 0x40, 0x0d, 0x98, 0x05, 0xa0, 0x0c, + 0x1c, 0x02, 0xa1, 0x92, 0x64, 0x9d, 0x78, 0xa4, 0xcc, 0xd9, 0xb5, 0xcd, + 0x73, 0xc8, 0x6c, 0xd7, 0x75, 0xdb, 0xa3, 0x8d, 0x2a, 0x77, 0x61, 0xd5, + 0x42, 0xdc, 0xda, 0x53, 0xd4, 0xce, 0x9d, 0x89, 0x63, 0x54, 0xad, 0x29, + 0x76, 0x1d, 0x49, 0xe6, 0xef, 0x1e, 0x6d, 0x9e, 0x47, 0xd2, 0x0f, 0x6c, + 0xad, 0xb4, 0xbe, 0x92, 0x2e, 0xd3, 0x69, 0x5c, 0x86, 0xae, 0xf3, 0xbf, + 0x25, 0xb3, 0x92, 0x01, 0x00, 0x44, 0x08, 0xc6, 0x28, 0xdf, 0x1e, 0x4e, + 0x59, 0x30, 0x21, 0x9f, 0x9a, 0x27, 0x3e, 0x8c, 0xb7, 0x01, 0x34, 0x7a, + 0x2e, 0xcb, 0x50, 0xb2, 0x42, 0x1e, 0x59, 0x58, 0x66, 0x4d, 0xe5, 0xd0, + 0x93, 0x9c, 0x5a, 0x4d, 0x5a, 0x5c, 0x7c, 0xbe, 0x36, 0x07, 0x4c, 0x9c, + 0x5e, 0x34, 0x20, 0x1d, 0xba, 0x38, 0xc2, 0x5b, 0x25, 0x92, 0x04, 0x22, + 0x88, 0x89, 0x11, 0x6d, 0xc2, 0xc1, 0x91, 0x44, 0xfc, 0x9a, 0x4e, 0x56, + 0x86, 0x30, 0x2b, 0xd5, 0xf1, 0xf4, 0x73, 0xb8, 0x20, 0xab, 0xc8, 0x07, + 0x50, 0x13, 0x8e, 0xca, 0xe7, 0x26, 0x68, 0x46, 0x08, 0x87, 0x34, 0x4c, + 0x9f, 0x9c, 0x0f, 0x37, 0x5f, 0xdb, 0xba, 0xb5, 0xac, 0x8e, 0x33, 0xa3, + 0x37, 0x12, 0x46, 0xd8, 0x44, 0x20, 0x2e, 0xe4, 0x90, 0xad, 0x20, 0x59, + 0x12, 0x10, 0x88, 0x48, 0x54, 0xca, 0x87, 0x97, 0x0e, 0x67, 0xe5, 0xc2, + 0x19, 0x11, 0x18, 0x80, 0x2b, 0x3c, 0x17, 0x3b, 0x00, 0x78, 0xa0, 0x96, + 0x4f, 0x1f, 0xc2, 0x50, 0xa0, 0xb8, 0x3c, 0x19, 0x88, 0xe3, 0xa9, 0x30, + 0x2c, 0xb0, 0x56, 0xa2, 0xa9, 0xb2, 0xce, 0xa4, 0x8a, 0x96, 0x61, 0x5e, + 0xc7, 0xbb, 0x5b, 0x55, 0x76, 0xb2, 0x23, 0xb1, 0x18, 0xe5, 0x04, 0xd6, + 0x64, 0x2f, 0x4a, 0xab, 0x37, 0x46, 0xb5, 0xd5, 0x0e, 0xa4, 0xc4, 0x75, + 0x31, 0xfd, 0xbf, 0x5a, 0xd3, 0xa7, 0x4e, 0xd6, 0x7a, 0x5b, 0x96, 0xda, + 0xb6, 0xb5, 0x4e, 0xef, 0x5e, 0xb6, 0xea, 0x94, 0x64, 0xa7, 0xb2, 0x6b, + 0xd2, 0x9b, 0x7d, 0x92, 0xd4, 0xcd, 0xb7, 0xdd, 0x1d, 0x91, 0xec, 0x7d, + 0xd2, 0x64, 0x08, 0xa3, 0x1d, 0xcc, 0x18, 0x08, 0x38, 0x5c, 0x40, 0xe1, + 0x6c, 0x25, 0x30, 0x54, 0x01, 0xe3, 0x30, 0x5d, 0xc4, 0xb2, 0x31, 0x0b, + 0x3a, 0xcd, 0x37, 0x27, 0x8e, 0x30, 0x30, 0xac, 0x03, 0x17, 0x30, 0x5b, + 0xc1, 0xc6, 0x31, 0xa3, 0xc1, 0x9f, 0x30, 0x28, 0xc1, 0x2e, 0x30, 0xa4, + 0x02, 0x63, 0x30, 0x20, 0x40, 0x07, 0x30, 0x08, 0x00, 0x45, 0x30, 0x1b, + 0xc0, 0x36, 0x31, 0xc6, 0x01, 0x4e, 0x30, 0x58, 0x40, 0x1e, 0x30, 0x13, + 0x80, 0x05, 0x07, 0xcd, 0xa0, 0xdf, 0x4d, 0x08, 0x5b, 0xee, 0xc5, 0x57, + 0xa4, 0xaa, 0x72, 0x20, 0xd7, 0xb9, 0x09, 0x6f, 0x16, 0xfc, 0x69, 0xe5, + 0x75, 0xdd, 0x98, 0x0d, 0x6f, 0xae, 0xc7, 0xea, 0x19, 0x66, 0xcc, 0xca, + 0x2a, 0xb5, 0x5f, 0x35, 0xdc, 0xcd, 0xe0, 0xa7, 0xc5, 0xc3, 0xaa, 0xdc, + 0x75, 0x45, 0x43, 0x2c, 0xbd, 0xa8, 0x35, 0xb2, 0x53, 0xcf, 0xbb, 0x34, + 0xa7, 0xbb, 0x69, 0xec, 0xaf, 0x41, 0xb0, 0x44, 0x66, 0x74, 0xe9, 0xbd, + 0x8e, 0x04, 0x63, 0x4d, 0x00, 0xbc, 0x7d, 0x48, 0xf5, 0x85, 0x32, 0x54, + 0x18, 0xed, 0x8f, 0x29, 0x53, 0xb1, 0x42, 0x6e, 0xa9, 0xd7, 0xd5, 0xed, + 0x67, 0xea, 0xe1, 0xee, 0x15, 0x68, 0x79, 0xd5, 0x1e, 0xc8, 0x71, 0x87, + 0xb4, 0x57, 0x6b, 0xa3, 0x62, 0xa9, 0x5a, 0x5d, 0x77, 0x19, 0x46, 0xae, + 0x50, 0xd5, 0x54, 0xf5, 0xc1, 0x4e, 0xae, 0x6f, 0x7a, 0xf6, 0x64, 0xd2, + 0x3c, 0x9f, 0xaa, 0x11, 0x72, 0xff, 0xfb, 0xd4, 0x60, 0x61, 0x8f, 0x98, + 0xe3, 0x73, 0x3e, 0x83, 0xf8, 0x7b, 0x70, 0x55, 0x6e, 0x08, 0x59, 0x3c, + 0x62, 0x6e, 0x24, 0x7d, 0xd2, 0xfa, 0x0f, 0xe1, 0xed, 0xc1, 0x46, 0xb8, + 0x21, 0x58, 0x61, 0x15, 0xb8, 0x22, 0x9b, 0x0d, 0x25, 0x0a, 0x19, 0x1d, + 0x39, 0x02, 0x02, 0x7d, 0xa5, 0x34, 0x73, 0xc4, 0x79, 0x1b, 0x30, 0x2e, + 0x5f, 0xea, 0xac, 0x7f, 0x24, 0x54, 0x5a, 0xf3, 0xd8, 0x96, 0x52, 0xa5, + 0x51, 0x4d, 0xeb, 0x2d, 0xb2, 0xa9, 0x50, 0x96, 0xe4, 0x2d, 0xa7, 0x11, + 0x1f, 0xe5, 0xeb, 0x2c, 0x76, 0xa7, 0xf4, 0xaf, 0xba, 0xa2, 0x55, 0xf7, + 0x55, 0x42, 0xd0, 0xfb, 0x3c, 0x85, 0x10, 0xe5, 0x56, 0x9d, 0x6a, 0xa6, + 0x94, 0x31, 0x30, 0xb6, 0xca, 0xa0, 0x8b, 0x1a, 0x57, 0xcb, 0xb3, 0xb5, + 0xbd, 0x3e, 0x75, 0x17, 0xc2, 0x7a, 0x9f, 0x07, 0x78, 0x1a, 0x80, 0x00, + 0x01, 0x25, 0x48, 0x00, 0x80, 0xdb, 0x76, 0xa7, 0xc6, 0x69, 0x12, 0x0d, + 0x31, 0x8e, 0x65, 0x9f, 0xfe, 0x82, 0xa8, 0xc9, 0xa3, 0x9e, 0x74, 0xe7, + 0x76, 0xb5, 0x88, 0xbd, 0xa1, 0xe3, 0xf4, 0x8d, 0xa3, 0x99, 0x45, 0xd9, + 0x55, 0x65, 0x1d, 0x89, 0x3b, 0xa5, 0x7d, 0x8a, 0x8b, 0xb6, 0xda, 0xf5, + 0x96, 0xf5, 0xa7, 0x7d, 0xb7, 0xff, 0xfe, 0xbb, 0xfb, 0x2f, 0xb2, 0x27, + 0xdb, 0xff, 0xbe, 0xff, 0xd1, 0x7e, 0xd7, 0xbc, 0xec, 0xaa, 0xdd, 0x5e, + 0xb2, 0x1d, 0x88, 0x24, 0x19, 0x4c, 0x28, 0xcc, 0x53, 0x95, 0x0a, 0x14, + 0xc1, 0x76, 0x06, 0x2c, 0xc2, 0x59, 0x0d, 0x90, 0xc7, 0x8e, 0xac, 0x64, + 0xfe, 0xac, 0x24, 0x40, 0xc4, 0xa4, 0x07, 0x14, 0xc1, 0x99, 0x07, 0x9c, + 0xc0, 0xee, 0x0c, 0x60, 0xc0, 0xdb, 0x01, 0xd4, 0xc4, 0x21, 0x00, 0x58, + 0xc0, 0xd2, 0x01, 0xe8, 0x20, 0x06, 0x23, 0x02, 0x80, 0x09, 0x23, 0x1b, + 0x64, 0x54, 0xc3, 0x07, 0x38, 0x03, 0xe3, 0x00, 0xcc, 0x00, 0xd3, 0xb5, + 0x05, 0x8e, 0xa0, 0x82, 0x21, 0x4a, 0xdb, 0xa3, 0xc4, 0xd2, 0x1a, 0x5b, + 0xb8, 0xd9, 0x9b, 0x95, 0x1b, 0xa3, 0x19, 0x76, 0xa0, 0xa6, 0xb7, 0x07, + 0x49, 0xa0, 0x35, 0x36, 0x67, 0x8a, 0x5c, 0xe5, 0x49, 0xdd, 0xea, 0x66, + 0x3d, 0x3f, 0x6e, 0x3a, 0xd9, 0x1d, 0x27, 0x91, 0x5d, 0xc0, 0x2d, 0x0a, + 0x6e, 0x85, 0xfd, 0x90, 0x43, 0x2e, 0xde, 0x72, 0xa8, 0x7e, 0x9a, 0x5a, + 0x7e, 0x2a, 0xe7, 0x6f, 0x7c, 0xa4, 0x53, 0x2d, 0x1f, 0x88, 0x6a, 0x12, + 0xd3, 0x93, 0x64, 0xe9, 0x45, 0x50, 0xbf, 0xbe, 0x76, 0xbd, 0x33, 0x4c, + 0xca, 0xfd, 0x9f, 0xe7, 0x35, 0x15, 0x0c, 0xd1, 0xcc, 0x86, 0xd5, 0x0d, + 0x0c, 0x15, 0x87, 0x05, 0x11, 0x7d, 0x2f, 0x19, 0x72, 0x78, 0x6f, 0x47, + 0x32, 0x56, 0xa7, 0x56, 0xa4, 0x5e, 0xd5, 0xf2, 0xda, 0x25, 0xb4, 0xc1, + 0xb1, 0xd4, 0xac, 0x64, 0x70, 0xd3, 0x1a, 0xf3, 0x9e, 0x9e, 0xa9, 0x53, + 0xea, 0xe7, 0x26, 0xd6, 0xb7, 0xe5, 0x21, 0xd1, 0x22, 0x99, 0x96, 0x45, + 0x62, 0xee, 0x0b, 0x6a, 0xaa, 0x90, 0x98, 0xd2, 0x85, 0xc5, 0x4e, 0xbb, + 0x5c, 0x9f, 0xad, 0xae, 0x2a, 0xb5, 0x5a, 0xc4, 0x16, 0xc7, 0x6f, 0xa6, + 0x6a, 0x66, 0x65, 0x65, 0xae, 0x20, 0x35, 0xa8, 0x9b, 0xa2, 0xb9, 0xdd, + 0x48, 0xce, 0x75, 0xaa, 0x26, 0x7d, 0x76, 0x69, 0x55, 0xca, 0xe5, 0xd3, + 0xf3, 0xd9, 0xc1, 0x58, 0xd8, 0xfd, 0x70, 0xdb, 0xad, 0x5d, 0x80, 0xe7, + 0x49, 0xa1, 0xec, 0x44, 0xc5, 0x58, 0xa9, 0x91, 0x0d, 0x44, 0x48, 0x9f, + 0xc0, 0xe8, 0x63, 0x5d, 0x8d, 0x62, 0x25, 0x16, 0x7b, 0xb2, 0x96, 0xc2, + 0x2c, 0xce, 0x04, 0x70, 0xd5, 0xa0, 0x95, 0xb9, 0xd6, 0x49, 0xab, 0x33, + 0xfe, 0xfd, 0xf6, 0xc4, 0xab, 0x1d, 0xa5, 0x65, 0xf9, 0xf3, 0x2a, 0xb9, + 0x5d, 0x26, 0x55, 0xad, 0x66, 0x49, 0x4c, 0xfd, 0xca, 0x8c, 0xf3, 0xad, + 0xab, 0x2a, 0x39, 0x5f, 0x7e, 0xae, 0xfb, 0xb5, 0xef, 0xfa, 0x7e, 0x4e, + 0xbd, 0xeb, 0x55, 0x91, 0xff, 0xfa, 0xb6, 0xdf, 0xaf, 0x5d, 0xbf, 0xff, + 0x54, 0xdc, 0x89, 0xfe, 0xfd, 0xa6, 0x26, 0xce, 0x5b, 0xb4, 0x8a, 0x82, + 0x46, 0x13, 0x11, 0x61, 0x71, 0x42, 0x18, 0x73, 0x08, 0x84, 0x1c, 0x4c, + 0x79, 0x15, 0x30, 0x3d, 0x00, 0x8f, 0x30, 0x82, 0xc0, 0xde, 0x31, 0xce, + 0x0c, 0x75, 0x3f, 0xa9, 0x01, 0xa1, 0x31, 0x08, 0x80, 0x06, 0x30, 0x49, + 0xc0, 0x4e, 0x31, 0xb8, 0x00, 0x43, 0x30, 0x18, 0x80, 0x65, 0x30, 0xea, + 0x81, 0x9e, 0x0b, 0x80, 0x8e, 0x60, 0x15, 0x00, 0x58, 0x60, 0x00, 0x81, + 0x12, 0x62, 0x0b, 0x0e, 0x26, 0x60, 0x3f, 0x80, 0xca, 0x60, 0x04, 0x00, + 0x18, 0x2a, 0xf4, 0xe8, 0x4d, 0xf7, 0x19, 0x6e, 0xb0, 0x77, 0x06, 0x4d, + 0x0e, 0xbe, 0x30, 0x54, 0x3b, 0x2f, 0x7d, 0x63, 0xd2, 0x58, 0xec, 0x4e, + 0xfb, 0x39, 0xcd, 0xf8, 0xb2, 0xfe, 0x40, 0xd1, 0x96, 0x62, 0xe4, 0xc4, + 0x28, 0xe0, 0x9b, 0xeb, 0x65, 0xf4, 0x72, 0xe1, 0xf8, 0xbc, 0x51, 0xea, + 0x84, 0x4b, 0x67, 0xdf, 0x2a, 0x78, 0x6a, 0x23, 0x2d, 0xa5, 0x61, 0x2b, + 0x86, 0xc8, 0x8b, 0x87, 0x90, 0xd1, 0xa9, 0x03, 0x91, 0x5e, 0xf9, 0xfc, + 0xc9, 0xc7, 0xad, 0x0c, 0x8a, 0x43, 0x99, 0x3a, 0x97, 0x78, 0x87, 0xb8, + 0x3d, 0x6e, 0x84, 0xa8, 0x8c, 0xf1, 0xb1, 0xc5, 0x41, 0x01, 0x58, 0xfd, + 0xe9, 0xba, 0xaa, 0xd9, 0xe5, 0x3b, 0xc4, 0x2d, 0x8d, 0xf4, 0x44, 0x4f, + 0x54, 0x29, 0xd3, 0x8d, 0xd2, 0xaf, 0xaf, 0x2b, 0x53, 0xf7, 0x53, 0x4e, + 0xb8, 0x50, 0x21, 0x6f, 0x18, 0xff, 0xfb, 0xd4, 0x60, 0x5b, 0x8f, 0x88, + 0x83, 0x70, 0x3f, 0x03, 0xf8, 0x7b, 0x70, 0x58, 0x8e, 0x08, 0x56, 0x34, + 0x62, 0x6e, 0x25, 0x71, 0xd4, 0xfa, 0x0f, 0xe1, 0xed, 0xc1, 0x56, 0xb8, + 0x21, 0x14, 0xb1, 0x09, 0xb8, 0xe1, 0xc2, 0x8c, 0xfd, 0x71, 0x0d, 0xd4, + 0x65, 0xcc, 0x5a, 0xcc, 0xf5, 0xa9, 0x76, 0x92, 0x60, 0x52, 0xc3, 0x4c, + 0x3c, 0x91, 0x28, 0xd5, 0x13, 0x49, 0xfa, 0x4b, 0x11, 0x2a, 0xaa, 0x5a, + 0x53, 0xb7, 0x56, 0x2a, 0x86, 0xca, 0xb5, 0x74, 0x56, 0x55, 0xa7, 0x6f, + 0x1c, 0x90, 0xe6, 0xdc, 0xd1, 0x72, 0xe4, 0xd5, 0x46, 0x88, 0x0f, 0x63, + 0x52, 0xb9, 0x82, 0xb0, 0xad, 0x83, 0x0d, 0xc9, 0x0d, 0x6b, 0x51, 0xc1, + 0x7d, 0x76, 0xd8, 0xe8, 0xa7, 0xa9, 0xb4, 0x4a, 0x61, 0x79, 0xb9, 0x91, + 0xca, 0x23, 0x92, 0xd2, 0xdb, 0x12, 0x30, 0xe2, 0x2c, 0xd7, 0x40, 0x16, + 0x96, 0x40, 0x02, 0x5c, 0xd9, 0x91, 0x53, 0x98, 0x52, 0x74, 0x50, 0x66, + 0xfd, 0x31, 0x15, 0x19, 0xa0, 0x32, 0x84, 0x75, 0xe0, 0x5a, 0x65, 0x95, + 0xe6, 0xce, 0x5c, 0x3f, 0x33, 0x32, 0x96, 0xe6, 0xe6, 0x5a, 0x29, 0xda, + 0x8c, 0xaa, 0x51, 0xec, 0x88, 0xa9, 0xb5, 0x59, 0x50, 0xd4, 0x7a, 0x21, + 0x16, 0xdd, 0x7f, 0x4f, 0xf6, 0xff, 0xff, 0xed, 0xd3, 0xdd, 0x74, 0xbe, + 0x8c, 0xbf, 0x5d, 0xba, 0x7d, 0x3a, 0x53, 0xab, 0xd9, 0x1e, 0xcc, 0x77, + 0x48, 0xb3, 0xa1, 0xdd, 0x14, 0x5c, 0x5b, 0x00, 0x98, 0x84, 0x30, 0xd4, + 0x22, 0x03, 0x12, 0x60, 0x45, 0x00, 0xe4, 0x60, 0xdc, 0x83, 0x86, 0x63, + 0x3e, 0x31, 0x80, 0x7e, 0x5a, 0x10, 0x0a, 0x61, 0xdf, 0x02, 0xe0, 0x60, + 0xbd, 0x84, 0xa0, 0x61, 0x56, 0x87, 0x3a, 0x60, 0x46, 0x81, 0x54, 0x61, + 0x6f, 0x86, 0x26, 0x60, 0x09, 0x00, 0x64, 0x60, 0x18, 0x80, 0xb2, 0x60, + 0x29, 0x82, 0x7c, 0x28, 0x41, 0x80, 0x30, 0x08, 0xc0, 0xb0, 0x02, 0xa0, + 0x96, 0x26, 0x3a, 0xc2, 0x33, 0x98, 0x3e, 0x0e, 0x66, 0x90, 0xa8, 0x6a, + 0x46, 0xfb, 0x3e, 0x8c, 0xf6, 0x43, 0x41, 0x05, 0x2f, 0x66, 0x86, 0xc3, + 0x5b, 0xaa, 0x9a, 0x5a, 0x63, 0xb0, 0x32, 0x8a, 0x55, 0x64, 0x8e, 0x45, + 0x79, 0x88, 0x3d, 0x94, 0x48, 0xa8, 0x9f, 0x67, 0x2e, 0x3d, 0x39, 0x0d, + 0xc2, 0x5c, 0x18, 0xa3, 0x63, 0x70, 0xe1, 0xa7, 0xea, 0x42, 0xc5, 0xdf, + 0xc8, 0x86, 0xd1, 0xd2, 0xf5, 0x3b, 0x2a, 0xe1, 0x9d, 0x14, 0xe6, 0x65, + 0x39, 0x1b, 0x8a, 0x67, 0x25, 0x84, 0xca, 0x0d, 0xbd, 0x73, 0x64, 0x53, + 0x39, 0xe6, 0x85, 0x41, 0x50, 0x32, 0x2d, 0xa8, 0x8f, 0x75, 0xda, 0xe2, + 0x3a, 0x8d, 0xe3, 0x13, 0x8a, 0x2d, 0x20, 0x5f, 0x55, 0x92, 0xbf, 0x7c, + 0x88, 0x64, 0x51, 0x21, 0x57, 0x43, 0xdd, 0xa4, 0x0f, 0xe5, 0x49, 0xc0, + 0x87, 0xb2, 0x9a, 0x51, 0xee, 0x84, 0xbf, 0x54, 0x33, 0xa7, 0xdb, 0x66, + 0x54, 0x41, 0x56, 0xc3, 0x9d, 0xc6, 0xcc, 0x91, 0x58, 0x94, 0xe8, 0x52, + 0x47, 0x49, 0xf4, 0x19, 0xfa, 0x68, 0x2a, 0x22, 0x1d, 0x2b, 0x88, 0xc8, + 0x53, 0x82, 0x75, 0x7c, 0xfa, 0x86, 0x9b, 0x3f, 0x14, 0x94, 0x5d, 0x30, + 0xcd, 0x97, 0x26, 0x37, 0xea, 0x35, 0x7a, 0xb5, 0x9b, 0x29, 0x45, 0x3b, + 0x1b, 0xe5, 0xb5, 0xcb, 0x6c, 0x76, 0x9a, 0x30, 0x2e, 0xd9, 0xd8, 0xd4, + 0xaf, 0x98, 0xdf, 0x21, 0xca, 0xd5, 0xc3, 0xa4, 0x54, 0xad, 0xaa, 0x56, + 0x75, 0xc9, 0x88, 0x7d, 0xa2, 0x17, 0x9c, 0x4b, 0x8b, 0x69, 0xcc, 0xa5, + 0x5b, 0x78, 0x5c, 0x20, 0x89, 0x19, 0xcc, 0xb9, 0x21, 0xc9, 0xc2, 0x74, + 0x72, 0x8f, 0x50, 0x99, 0x42, 0x00, 0xfc, 0x2f, 0x56, 0x81, 0xbc, 0x01, + 0x68, 0x07, 0xc1, 0x38, 0x00, 0x5a, 0x92, 0x86, 0x4b, 0x15, 0x65, 0xc4, + 0xc7, 0xbb, 0xaa, 0xa1, 0xdf, 0x89, 0x59, 0x13, 0x4b, 0x7c, 0xb4, 0x96, + 0x8f, 0x6a, 0x22, 0xa3, 0x3a, 0x35, 0x96, 0xb4, 0x77, 0x27, 0x75, 0xad, + 0x66, 0xb3, 0xfe, 0xcb, 0x47, 0x5d, 0x1d, 0x2f, 0xff, 0xf4, 0xa5, 0x2b, + 0xbb, 0x2d, 0x53, 0x4b, 0xff, 0xf7, 0x4d, 0x5c, 0xbd, 0x37, 0x6a, 0x77, + 0xa6, 0xd4, 0xe4, 0x33, 0xbb, 0xd2, 0x45, 0xaa, 0x39, 0xa7, 0x44, 0xb4, + 0x60, 0xe7, 0x34, 0x67, 0x2a, 0x92, 0x28, 0xa8, 0x26, 0x71, 0x46, 0x08, + 0x28, 0x38, 0x22, 0x83, 0x30, 0x0f, 0xc1, 0x16, 0x30, 0x29, 0xc2, 0xe5, + 0x30, 0xcd, 0x28, 0x10, 0x39, 0x29, 0x8a, 0xbd, 0x30, 0x75, 0x82, 0x60, + 0x30, 0x5e, 0xc2, 0x9d, 0x31, 0xc2, 0x42, 0x90, 0x30, 0x5e, 0x41, 0x9b, + 0x30, 0x5a, 0x43, 0xd0, 0x22, 0x00, 0x1c, 0xc0, 0x2b, 0x00, 0x80, 0xc0, + 0x90, 0x02, 0x9c, 0xc4, 0x9d, 0x1a, 0xcc, 0xc1, 0x30, 0x01, 0xa4, 0xc0, + 0x3b, 0x00, 0x68, 0xcc, 0x32, 0xff, 0x23, 0x6a, 0x7a, 0xad, 0x2e, 0xb1, + 0x76, 0xb8, 0xe8, 0xbf, 0x57, 0x9b, 0xbb, 0x77, 0xa6, 0xa8, 0xd1, 0x96, + 0xfc, 0x34, 0xdc, 0x19, 0xaa, 0x55, 0xbf, 0x8c, 0xf9, 0xbe, 0x93, 0xbb, + 0xf6, 0x9a, 0xd4, 0xad, 0x7e, 0xb3, 0x99, 0x4c, 0xcb, 0x4b, 0x66, 0xad, + 0xb5, 0x0d, 0x2d, 0x23, 0xf5, 0x8d, 0x26, 0x0d, 0x81, 0xfe, 0x6e, 0x75, + 0x61, 0x2c, 0xd9, 0x42, 0x9a, 0x61, 0x58, 0x4a, 0x17, 0x55, 0x62, 0xb5, + 0x0f, 0x6f, 0x51, 0x21, 0x8e, 0x11, 0x0d, 0xc6, 0x33, 0xc4, 0xeb, 0x35, + 0x95, 0xc9, 0xd5, 0x2b, 0x33, 0xd4, 0xda, 0xd1, 0xe6, 0xc6, 0x8a, 0x2b, + 0x99, 0xd1, 0x4f, 0xd7, 0x0a, 0x35, 0xdb, 0x0a, 0x74, 0xea, 0x59, 0x34, + 0xee, 0xb8, 0xab, 0x12, 0x77, 0xff, 0xfb, 0xd4, 0x60, 0x54, 0x8d, 0x89, + 0x35, 0x74, 0xbe, 0x83, 0xf8, 0x7b, 0x70, 0x54, 0x2e, 0x08, 0x56, 0x20, + 0x45, 0x6e, 0x25, 0x05, 0xd2, 0xfa, 0x2f, 0xe5, 0xed, 0xc1, 0x5e, 0xb7, + 0xa1, 0x08, 0x81, 0x89, 0xb9, 0x68, 0x79, 0xe3, 0x05, 0xc9, 0x5c, 0xb7, + 0x0d, 0x0e, 0x8a, 0xc0, 0xe6, 0xfd, 0x8d, 0x8d, 0x2e, 0xaf, 0x78, 0xca, + 0xf9, 0xa5, 0x59, 0x1d, 0x6d, 0x34, 0xc7, 0x77, 0xd2, 0xb5, 0x36, 0x29, + 0x13, 0xaa, 0xc5, 0xfd, 0x37, 0x30, 0xab, 0x59, 0x90, 0x66, 0x53, 0xd6, + 0xe7, 0x69, 0xf7, 0x0c, 0xd4, 0xf7, 0x72, 0x86, 0x73, 0xce, 0x9b, 0x4e, + 0xaa, 0xd6, 0xe0, 0x30, 0x3e, 0x49, 0xb8, 0xc6, 0x61, 0x7c, 0xc5, 0x19, + 0xf2, 0x49, 0x7d, 0x3b, 0x44, 0x4a, 0x0d, 0x8e, 0x78, 0x8f, 0x71, 0x73, + 0xcd, 0x25, 0x09, 0x86, 0x65, 0x95, 0xed, 0xc0, 0x7e, 0x8a, 0x60, 0x38, + 0x12, 0x6f, 0x54, 0x84, 0xbc, 0xee, 0x34, 0xa1, 0xa4, 0x51, 0xc9, 0x92, + 0x7c, 0x6d, 0xb8, 0x1d, 0x19, 0x39, 0x20, 0x1a, 0x51, 0x1d, 0x29, 0x55, + 0x43, 0x90, 0xbb, 0x88, 0xe0, 0x0f, 0x09, 0x31, 0x62, 0x07, 0x08, 0x01, + 0x1a, 0x90, 0x00, 0x22, 0x90, 0xf3, 0x08, 0x91, 0x74, 0xf0, 0x42, 0x64, + 0xfb, 0x48, 0xee, 0xaf, 0xa7, 0x56, 0x54, 0x4e, 0x35, 0x14, 0x67, 0x04, + 0x47, 0xa3, 0xa7, 0xab, 0xd0, 0xaf, 0xb2, 0x0a, 0xf7, 0xbb, 0x92, 0x88, + 0xc8, 0x43, 0xd2, 0x7b, 0xb7, 0xaf, 0x3d, 0xb6, 0x6d, 0x3d, 0x3f, 0xd7, + 0xa7, 0xf6, 0xa5, 0xff, 0xbd, 0x69, 0xb2, 0x7a, 0xfe, 0xbf, 0xad, 0xd9, + 0x6f, 0x4c, 0xca, 0xf4, 0x3a, 0x55, 0x83, 0xe5, 0xd6, 0xec, 0xce, 0x3c, + 0x61, 0x25, 0x18, 0xe2, 0x81, 0xf3, 0x10, 0x71, 0x87, 0x2c, 0x34, 0x86, + 0x06, 0xc8, 0x27, 0x86, 0x05, 0x60, 0x5e, 0xe6, 0x0f, 0xfd, 0x4f, 0x86, + 0x2a, 0x99, 0x43, 0xe6, 0x09, 0xd8, 0x46, 0x46, 0x08, 0xd0, 0x5f, 0xa6, + 0x32, 0x30, 0x64, 0x86, 0x0a, 0x60, 0x34, 0xa6, 0x09, 0xd0, 0x35, 0x26, + 0x03, 0x58, 0x02, 0x85, 0x60, 0x10, 0x18, 0x05, 0xe0, 0x3a, 0x18, 0xc3, + 0xc0, 0xa1, 0x18, 0x3e, 0x20, 0x16, 0x80, 0x80, 0x7d, 0x38, 0xc4, 0x40, + 0xc7, 0xdd, 0xa1, 0x3c, 0xd6, 0xd4, 0xa5, 0xec, 0x7f, 0xdf, 0xf8, 0x3d, + 0xb1, 0x49, 0x16, 0x7b, 0xad, 0x2e, 0x50, 0x27, 0x65, 0x40, 0x21, 0xab, + 0x74, 0xec, 0xa1, 0x42, 0xdd, 0x1a, 0x90, 0x44, 0x3f, 0x30, 0xa6, 0x71, + 0xb7, 0xfd, 0x81, 0xb3, 0x45, 0xeb, 0x2c, 0x84, 0xb4, 0x89, 0x9d, 0xc2, + 0x61, 0xf7, 0x19, 0xb8, 0x48, 0xe5, 0x50, 0x54, 0x25, 0xa6, 0x29, 0x0d, + 0x75, 0x43, 0x83, 0x3b, 0xc3, 0xf1, 0x73, 0x57, 0xd0, 0x56, 0x50, 0xca, + 0xad, 0x9a, 0x6e, 0x07, 0xa3, 0xc4, 0x32, 0x29, 0x76, 0x66, 0x64, 0x95, + 0xcd, 0xb5, 0x4e, 0x8f, 0x57, 0xa1, 0xe7, 0xa9, 0xdc, 0x75, 0xa7, 0xd2, + 0xad, 0x31, 0x10, 0x47, 0x31, 0x78, 0x52, 0xb4, 0xee, 0x46, 0x24, 0xdc, + 0x8b, 0xbc, 0x2b, 0x5b, 0x48, 0x32, 0x21, 0x74, 0xcd, 0xb6, 0xe3, 0xcd, + 0xeb, 0xd5, 0x7b, 0xe4, 0x8b, 0x2b, 0xc6, 0xf6, 0x04, 0xcb, 0x9c, 0x26, + 0xa4, 0x8b, 0x3a, 0x13, 0x19, 0x91, 0x5e, 0x88, 0x42, 0xd3, 0xd8, 0x63, + 0x6c, 0x9d, 0x08, 0xca, 0x9c, 0xed, 0x70, 0x80, 0xae, 0x53, 0x1f, 0x8f, + 0x15, 0x4e, 0x4a, 0xe5, 0x7a, 0x26, 0x23, 0x6c, 0x48, 0x79, 0x6b, 0xcc, + 0x87, 0xcc, 0x68, 0xec, 0xae, 0x95, 0x90, 0x54, 0x29, 0x27, 0x06, 0xad, + 0xb7, 0xa1, 0xd8, 0x42, 0xd2, 0x2d, 0x6e, 0x91, 0x0e, 0xd1, 0x05, 0xe9, + 0x8d, 0x50, 0xa7, 0x49, 0xa0, 0xaa, 0xad, 0x76, 0xaf, 0x6b, 0x54, 0xab, + 0x4f, 0xc4, 0x1b, 0xe3, 0xbd, 0x50, 0xe6, 0xc8, 0x75, 0x28, 0x57, 0xb6, + 0xa0, 0x6c, 0x55, 0xa4, 0xcb, 0x90, 0xc4, 0x13, 0x37, 0x44, 0xc4, 0x1a, + 0xe0, 0x9e, 0x21, 0x4e, 0x0c, 0xe1, 0xad, 0x88, 0x80, 0x01, 0x1d, 0xc1, + 0x25, 0x70, 0x3a, 0x33, 0x23, 0xa9, 0x4e, 0x27, 0xca, 0x8c, 0x64, 0x7e, + 0x40, 0xc1, 0x01, 0xb5, 0xf3, 0xf3, 0xe6, 0x86, 0xeb, 0x93, 0x2f, 0x7d, + 0xb9, 0x33, 0xd1, 0x29, 0x23, 0x3b, 0xba, 0x10, 0x8e, 0x95, 0x32, 0x2a, + 0x36, 0xeb, 0x64, 0xd6, 0xfa, 0xfa, 0xa7, 0xec, 0xbf, 0xfb, 0xa5, 0x6d, + 0x46, 0xdb, 0x67, 0xa9, 0x8b, 0xe5, 0xd3, 0xdb, 0xff, 0xed, 0xfa, 0x35, + 0x1a, 0x7b, 0xaa, 0x3c, 0xc4, 0x2b, 0x23, 0x10, 0xaa, 0x88, 0x09, 0x5c, + 0xa8, 0x85, 0x34, 0xc6, 0x51, 0x48, 0x40, 0x26, 0x90, 0x70, 0xc5, 0x00, + 0x30, 0x20, 0x00, 0x60, 0x82, 0x82, 0x58, 0x60, 0xbb, 0x05, 0x7a, 0x62, + 0xac, 0xd1, 0x60, 0x72, 0x34, 0x8c, 0x96, 0x61, 0x99, 0x82, 0x78, 0x60, + 0xb8, 0x05, 0x14, 0x62, 0x8e, 0x07, 0x9e, 0x60, 0x92, 0x02, 0x6c, 0x60, + 0x67, 0x03, 0x48, 0x60, 0x5e, 0x80, 0x96, 0xff, 0x98, 0x00, 0x40, 0x52, + 0x18, 0xd4, 0xa2, 0xb3, 0x18, 0x1f, 0xc0, 0x5b, 0x18, 0x09, 0xa0, 0x04, + 0x83, 0xa0, 0x24, 0x75, 0x04, 0x47, 0x47, 0xcd, 0x4f, 0x33, 0x74, 0xee, + 0x96, 0x35, 0xf5, 0x62, 0x80, 0x56, 0x44, 0x1f, 0x38, 0x8a, 0x2b, 0x4d, + 0xae, 0x30, 0xf4, 0x50, 0x7d, 0x5d, 0x54, 0x55, 0x5a, 0x2f, 0xab, 0x95, + 0x24, 0x6d, 0xdf, 0xc9, 0x0b, 0xed, 0x48, 0xd6, 0x97, 0x74, 0x82, 0x00, + 0x93, 0x3f, 0xb1, 0x66, 0xae, 0xc3, 0x17, 0x8b, 0xfa, 0xc0, 0xe0, 0xe7, + 0x71, 0xff, 0x4f, 0x87, 0x05, 0x35, 0x2a, 0x04, 0xf9, 0x6b, 0x8e, 0x6e, + 0x3e, 0x24, 0x63, 0xcc, 0xe7, 0xff, 0xfb, 0xd4, 0x60, 0x45, 0x09, 0x89, + 0x81, 0x72, 0x3e, 0x33, 0xf8, 0x7b, 0x70, 0x46, 0x83, 0xe8, 0x7a, 0x08, + 0x23, 0x4a, 0x26, 0x09, 0xd0, 0xf8, 0x0f, 0xe1, 0xed, 0xc1, 0x56, 0xb7, + 0xa1, 0x64, 0x71, 0x89, 0xb9, 0x25, 0xb9, 0x7a, 0x86, 0x33, 0x25, 0x10, + 0xe6, 0x03, 0x29, 0x3a, 0x94, 0x69, 0x56, 0xb7, 0xa4, 0x1f, 0xa1, 0x10, + 0x95, 0xca, 0x18, 0x27, 0xf1, 0x40, 0xbc, 0x93, 0x84, 0x74, 0xa0, 0x8e, + 0x73, 0x02, 0x0e, 0x8e, 0x44, 0x35, 0x34, 0xb6, 0x87, 0x9e, 0x48, 0xa3, + 0xf9, 0xcd, 0x54, 0x87, 0xa2, 0xd2, 0xaa, 0xcc, 0xa4, 0x1b, 0x59, 0xd3, + 0x09, 0xe4, 0x38, 0xb7, 0xa9, 0x94, 0x8c, 0xec, 0x48, 0x02, 0xfa, 0x70, + 0xae, 0x9b, 0xd2, 0x45, 0x41, 0x42, 0x85, 0x4e, 0xcc, 0xe4, 0xf5, 0x79, + 0xf1, 0x72, 0x47, 0x2b, 0xd5, 0x49, 0xd9, 0x5e, 0x1d, 0x56, 0x57, 0x5c, + 0xe7, 0x56, 0xca, 0xe0, 0xc6, 0x9e, 0x45, 0x38, 0x36, 0x37, 0x9d, 0xb6, + 0x6b, 0x5e, 0x54, 0x32, 0x2c, 0x9c, 0xaa, 0xf3, 0xe1, 0x74, 0xd6, 0xd2, + 0xa6, 0x39, 0xd8, 0xb4, 0x72, 0x2c, 0xb8, 0xa8, 0x60, 0xc5, 0xc3, 0x21, + 0x3c, 0x26, 0xec, 0x10, 0x60, 0x13, 0x85, 0xa8, 0xca, 0x54, 0x52, 0x69, + 0x60, 0x9a, 0xa9, 0xd3, 0x8d, 0xcc, 0x0e, 0x26, 0xf1, 0x70, 0x2c, 0x24, + 0xa4, 0x9a, 0x29, 0x4b, 0x82, 0x15, 0x55, 0xda, 0xc9, 0xfa, 0x8c, 0x2c, + 0x0a, 0x70, 0x7b, 0x80, 0x00, 0x36, 0xd3, 0x8d, 0x10, 0x00, 0x12, 0xe4, + 0x95, 0x6c, 0x5f, 0xe3, 0x20, 0x04, 0x42, 0x20, 0x26, 0xcd, 0xbf, 0x8c, + 0xa5, 0xd5, 0xb2, 0x11, 0xa0, 0x65, 0x73, 0x31, 0x50, 0x3c, 0x2a, 0x19, + 0xc6, 0xb8, 0xbb, 0xc1, 0xc7, 0xb0, 0x18, 0x6d, 0x61, 0x05, 0x95, 0x51, + 0x14, 0xac, 0xd6, 0x61, 0x72, 0xdf, 0xdb, 0xaf, 0xff, 0xff, 0x5f, 0xfd, + 0x82, 0xdb, 0xa2, 0xea, 0x0f, 0x01, 0x80, 0x04, 0x82, 0x20, 0xb0, 0x49, + 0xe0, 0xa1, 0x81, 0xae, 0x05, 0xd1, 0x83, 0x2c, 0x0c, 0xb9, 0x8a, 0x3a, + 0xc7, 0xc1, 0xde, 0x06, 0x12, 0xf9, 0x86, 0x9a, 0x03, 0xa1, 0x80, 0x7c, + 0x0a, 0xc1, 0x90, 0xfa, 0x0d, 0x19, 0x82, 0x2e, 0x05, 0xe1, 0x85, 0xc2, + 0x14, 0x19, 0x80, 0x4c, 0x00, 0x08, 0x5c, 0x01, 0xa3, 0x00, 0xd4, 0x0a, + 0x53, 0x11, 0xa8, 0x7a, 0x93, 0x01, 0xe4, 0x09, 0xf3, 0x00, 0x20, 0x02, + 0x81, 0x55, 0xa1, 0xc1, 0x53, 0xc5, 0xd9, 0x23, 0xcc, 0xe8, 0xaf, 0x26, + 0xb8, 0xe9, 0xc1, 0x6c, 0xc1, 0x9a, 0x58, 0x8f, 0x54, 0x79, 0x19, 0x33, + 0x59, 0x6a, 0xcf, 0x2b, 0x0d, 0x5f, 0xcd, 0x95, 0x47, 0x59, 0xe4, 0x2d, + 0x7e, 0xbe, 0x4d, 0xb3, 0xfa, 0xa3, 0x6f, 0x04, 0x0b, 0x03, 0x2e, 0xa5, + 0xd9, 0x10, 0x94, 0x40, 0x12, 0x26, 0x5b, 0x0f, 0x40, 0x2f, 0xab, 0xfd, + 0x00, 0xb1, 0x27, 0x18, 0xb7, 0x35, 0x94, 0x66, 0xf2, 0xac, 0x4c, 0xcf, + 0x67, 0x22, 0xf0, 0x70, 0x3f, 0x3b, 0xd1, 0x4e, 0xea, 0x8a, 0x60, 0x50, + 0x27, 0x20, 0xab, 0xce, 0xf6, 0x27, 0xae, 0x08, 0x7c, 0x36, 0x93, 0xf6, + 0x32, 0xd4, 0xaf, 0xae, 0x4f, 0x8c, 0xa5, 0x19, 0xb2, 0x89, 0x43, 0xc9, + 0x50, 0xf5, 0x20, 0x55, 0x0e, 0x65, 0xf1, 0x50, 0xa3, 0x4e, 0xa9, 0x98, + 0x60, 0x65, 0xfa, 0xf4, 0x26, 0x25, 0x22, 0xdc, 0xcd, 0x07, 0x41, 0xfe, + 0xae, 0x7e, 0xa7, 0x5f, 0x9c, 0xa5, 0x3b, 0xe0, 0x2b, 0xa0, 0x27, 0x0e, + 0xa2, 0xc0, 0xcc, 0xb9, 0x9d, 0x53, 0x1d, 0x80, 0xef, 0xc9, 0xb8, 0x7e, + 0x43, 0x80, 0x7f, 0x1d, 0x48, 0xf9, 0x12, 0x0d, 0x7a, 0x54, 0xaa, 0x51, + 0x2b, 0x2c, 0xa6, 0x32, 0x7a, 0x02, 0x31, 0x16, 0x89, 0x86, 0xc0, 0x78, + 0x3a, 0x60, 0x5f, 0x42, 0x74, 0xc0, 0xf4, 0xf3, 0x38, 0x0b, 0xf2, 0xad, + 0x8c, 0xf9, 0x5b, 0x6b, 0xaa, 0x8d, 0xea, 0x89, 0x6d, 0xe3, 0x09, 0xc1, + 0x2c, 0x75, 0x2b, 0x21, 0xe0, 0x80, 0x3f, 0x54, 0x88, 0xa6, 0xa3, 0x29, + 0x09, 0x55, 0x43, 0x78, 0xca, 0x96, 0x4c, 0x1c, 0x88, 0x41, 0xa6, 0x39, + 0x72, 0xac, 0x2c, 0x25, 0xe8, 0xaf, 0x39, 0x8b, 0x08, 0xf6, 0x4e, 0x05, + 0x41, 0xc0, 0x64, 0x15, 0xe1, 0xda, 0x01, 0x6a, 0xc8, 0x00, 0x14, 0xea, + 0x24, 0x17, 0x26, 0xc3, 0xd4, 0x21, 0x6f, 0x91, 0x6b, 0x1a, 0xe1, 0xc5, + 0x45, 0x23, 0x53, 0x12, 0x82, 0x7f, 0x6c, 0xba, 0x9d, 0x23, 0xe9, 0x1f, + 0xea, 0x9f, 0x3e, 0xe5, 0xe3, 0xa3, 0xa9, 0xcc, 0xce, 0xc7, 0x2e, 0xcc, + 0xcf, 0x5d, 0xad, 0xf5, 0x4f, 0xeb, 0x45, 0x4f, 0xea, 0x9c, 0xcf, 0xfd, + 0xdb, 0x74, 0xb5, 0x16, 0xfa, 0x5d, 0x7f, 0x5f, 0x43, 0xe9, 0x4a, 0xfe, + 0xdf, 0xea, 0xf5, 0xea, 0x8c, 0xd3, 0x36, 0x74, 0x70, 0x68, 0x82, 0x0e, + 0xc2, 0xe0, 0x62, 0x50, 0x21, 0x04, 0xa9, 0x55, 0x30, 0x25, 0xc0, 0x2a, + 0x30, 0x57, 0x80, 0x38, 0x31, 0x38, 0xc4, 0x0e, 0x3b, 0xd1, 0xc2, 0x3a, + 0x30, 0xb9, 0x40, 0x1a, 0x30, 0x26, 0x83, 0x41, 0x30, 0x80, 0x44, 0x32, + 0x30, 0x0f, 0x81, 0x37, 0x30, 0x2e, 0xc3, 0xae, 0x30, 0x03, 0xc0, 0x7c, + 0x30, 0x10, 0x00, 0x2b, 0x30, 0x06, 0xc1, 0x06, 0x30, 0x37, 0x87, 0xf0, + 0x30, 0x15, 0xc0, 0x78, 0x20, 0x00, 0x74, 0x55, 0x50, 0xeb, 0x62, 0xae, + 0xf7, 0x43, 0xd2, 0x58, 0xab, 0x56, 0x6f, 0xd9, 0x2b, 0xb3, 0x59, 0xdb, + 0x79, 0x9e, 0xa9, 0x3b, 0x52, 0x9a, 0x72, 0x63, 0xf0, 0xb8, 0x39, 0x5c, + 0xca, 0x1e, 0xc9, 0x0b, 0xe2, 0xf4, 0x3e, 0x2e, 0xc6, 0x9d, 0xd6, 0x7e, + 0xe2, 0x33, 0x26, 0xd5, 0xe0, 0xff, 0xfb, 0xd4, 0x60, 0x34, 0x8f, 0xc9, + 0x7b, 0x74, 0xbe, 0x03, 0xf8, 0x7b, 0x70, 0x54, 0xed, 0xa8, 0x5a, 0x20, + 0x62, 0x6e, 0x65, 0xd5, 0xce, 0xf8, 0x0f, 0xe1, 0xed, 0xc1, 0x4f, 0x37, + 0xa1, 0x48, 0x61, 0x89, 0xb9, 0x8f, 0x4c, 0xcc, 0x4a, 0x5b, 0x66, 0x97, + 0x15, 0x97, 0xc9, 0x9a, 0xe5, 0x66, 0xae, 0xdf, 0x15, 0x0c, 0x32, 0x8c, + 0x13, 0x95, 0xa5, 0xa1, 0x52, 0x64, 0x61, 0x40, 0x5f, 0xd7, 0x0e, 0x6c, + 0x06, 0x11, 0xca, 0x9e, 0xb2, 0xc1, 0xa4, 0xaf, 0xba, 0x91, 0x80, 0xc2, + 0x37, 0xa5, 0x2e, 0xe8, 0xa4, 0x25, 0x0e, 0x3e, 0xcb, 0x6a, 0x72, 0x3a, + 0x25, 0xca, 0x1a, 0x1f, 0x21, 0xfa, 0xba, 0x92, 0x04, 0xec, 0xa9, 0xe8, + 0x8a, 0xf2, 0xec, 0xd8, 0x9e, 0x6e, 0x6f, 0x64, 0x6e, 0x2f, 0x84, 0xf9, + 0x0a, 0x66, 0x60, 0x6e, 0x73, 0x53, 0xa5, 0x4b, 0xf1, 0xa4, 0x72, 0x2b, + 0x23, 0xd1, 0x4a, 0x9e, 0x3f, 0x2c, 0x79, 0x3e, 0x42, 0x97, 0x13, 0x30, + 0x2b, 0x52, 0x2a, 0x87, 0x48, 0x51, 0x8b, 0x66, 0x66, 0x76, 0x54, 0x9e, + 0xde, 0xa0, 0xd8, 0x9a, 0x55, 0xe7, 0x3b, 0x29, 0xee, 0xad, 0xc3, 0x39, + 0xe2, 0xab, 0x37, 0x14, 0x27, 0x8b, 0x4b, 0x39, 0xbc, 0xfa, 0x44, 0x2c, + 0xc2, 0x6f, 0x50, 0x16, 0xf7, 0x05, 0x1a, 0xa6, 0x64, 0x83, 0x12, 0x9c, + 0xe6, 0x43, 0x18, 0xd0, 0xf6, 0x23, 0x7d, 0x1c, 0x97, 0x70, 0x3c, 0x60, + 0x97, 0x18, 0x71, 0xc9, 0xe9, 0xec, 0xb4, 0x9b, 0x17, 0x65, 0x61, 0xea, + 0x75, 0xa7, 0x48, 0x98, 0xab, 0x06, 0xe8, 0x5f, 0x88, 0x01, 0xc2, 0x5c, + 0xc4, 0x30, 0x84, 0x93, 0x77, 0xe6, 0x28, 0x03, 0xe2, 0xe2, 0x16, 0xc0, + 0x00, 0x01, 0x44, 0x5a, 0x20, 0x00, 0x04, 0x7f, 0xa3, 0x6d, 0xae, 0x26, + 0x9a, 0x28, 0xff, 0xe7, 0xce, 0xb6, 0xca, 0x1c, 0x48, 0x66, 0x60, 0x04, + 0x36, 0xee, 0x7a, 0x7e, 0x59, 0xf2, 0x30, 0xa4, 0x52, 0x2c, 0x2b, 0x42, + 0xbd, 0x5e, 0x49, 0x1d, 0x19, 0x91, 0x1d, 0xfd, 0x3a, 0x51, 0xbd, 0xad, + 0xfa, 0x6c, 0xff, 0xd7, 0x44, 0xff, 0x6f, 0x6f, 0xef, 0xff, 0xbb, 0xa7, + 0x6f, 0x4d, 0x6f, 0xdb, 0xeb, 0xee, 0xff, 0xb2, 0xc8, 0xce, 0x73, 0x10, + 0xee, 0x62, 0x03, 0x20, 0x22, 0x0a, 0x29, 0x11, 0x4c, 0x19, 0x78, 0xc9, + 0x4c, 0x04, 0xb0, 0x13, 0x4c, 0x0f, 0x40, 0x57, 0x8c, 0x3c, 0xd4, 0x72, + 0xce, 0x6d, 0x71, 0x54, 0x0c, 0x22, 0xd0, 0x4d, 0x4c, 0x20, 0x40, 0xaa, + 0xcc, 0x52, 0x80, 0x52, 0x4c, 0x18, 0x40, 0x2d, 0x8c, 0x4c, 0x40, 0xd0, + 0x4c, 0x05, 0x30, 0x2b, 0x4c, 0x00, 0x90, 0x0b, 0x8c, 0x03, 0xe0, 0x31, + 0xcc, 0x41, 0xf1, 0x69, 0xcc, 0x0c, 0xe0, 0x1f, 0x4c, 0x05, 0x10, 0x04, + 0x8a, 0x5a, 0x8d, 0x4f, 0x62, 0x80, 0x52, 0x3b, 0x4a, 0x66, 0x98, 0xcf, + 0x94, 0xcc, 0x10, 0xc5, 0x97, 0xac, 0x83, 0x6f, 0x7b, 0x8b, 0x05, 0x48, + 0x5a, 0x7b, 0xb6, 0xd6, 0xdf, 0x67, 0x45, 0xb1, 0xc5, 0x65, 0xed, 0x91, + 0x63, 0xbb, 0xab, 0xaa, 0x1b, 0x6c, 0x0e, 0x55, 0x69, 0xe7, 0x7e, 0x19, + 0x8e, 0xc6, 0x5e, 0x4a, 0x90, 0xfc, 0xc3, 0xb3, 0x1d, 0x88, 0x3e, 0x0a, + 0x38, 0x93, 0x50, 0x21, 0xec, 0xe6, 0x79, 0xc3, 0x87, 0x23, 0xd5, 0xf9, + 0x55, 0x12, 0x19, 0xc0, 0xac, 0x38, 0xcc, 0x45, 0x03, 0x72, 0xb9, 0xcd, + 0x0f, 0x39, 0xd9, 0x98, 0x17, 0xdd, 0x33, 0x28, 0x12, 0x2b, 0x86, 0x83, + 0xd9, 0x0b, 0x7a, 0xce, 0xd2, 0xa8, 0x4a, 0x9b, 0x4a, 0xb3, 0x10, 0xfc, + 0x7c, 0x87, 0x6b, 0x50, 0x11, 0xb3, 0xaf, 0x30, 0x39, 0x99, 0x6a, 0x0b, + 0x24, 0x9f, 0x2c, 0xa2, 0x9b, 0x2f, 0x3b, 0x11, 0x9a, 0x89, 0x4e, 0x21, + 0xa7, 0x3b, 0x3a, 0xbd, 0x4a, 0xab, 0x43, 0x1c, 0x9c, 0x50, 0x83, 0xcc, + 0xdf, 0x52, 0x3d, 0x53, 0x3c, 0x57, 0x29, 0x0b, 0xda, 0x81, 0x50, 0xa9, + 0x99, 0xea, 0xb9, 0x69, 0x28, 0xe4, 0x51, 0xb1, 0xb1, 0x69, 0x1c, 0x4d, + 0x92, 0x49, 0xb3, 0xa8, 0xd0, 0x56, 0xaa, 0x13, 0xc7, 0x33, 0xd3, 0x4e, + 0x77, 0x8c, 0x6b, 0x2e, 0x2a, 0xd4, 0x3c, 0xff, 0x32, 0x50, 0xa9, 0xe0, + 0x39, 0x2a, 0x95, 0xb3, 0xee, 0x39, 0xb4, 0xb8, 0x4e, 0xcf, 0x01, 0x46, + 0xcc, 0xc0, 0x4a, 0x14, 0xa3, 0xd0, 0xa5, 0x8c, 0x85, 0x41, 0x42, 0x8e, + 0x28, 0x8c, 0xa8, 0x7b, 0xd5, 0x92, 0x7a, 0x9c, 0x3a, 0x87, 0xf9, 0x0e, + 0x2f, 0xc5, 0xf4, 0xff, 0x50, 0x12, 0x04, 0xb9, 0x70, 0x55, 0x97, 0x20, + 0x28, 0x00, 0xe6, 0xbf, 0x80, 0x0d, 0xae, 0x63, 0x3a, 0x2e, 0x21, 0xf0, + 0xde, 0xcc, 0x7f, 0xd2, 0xbf, 0xe0, 0xf9, 0x48, 0xa6, 0x64, 0x44, 0x97, + 0xdf, 0x07, 0x47, 0x5e, 0x50, 0xc6, 0x09, 0x14, 0x8e, 0x7b, 0x29, 0xd4, + 0x4a, 0x14, 0x8e, 0x81, 0x03, 0x03, 0x08, 0x39, 0x5f, 0xfe, 0xcb, 0xfa, + 0xe4, 0x6f, 0xbf, 0xfa, 0xf4, 0xbd, 0x7a, 0x7f, 0xf4, 0xb7, 0xed, 0xaf, + 0x65, 0xd6, 0xde, 0x8c, 0x84, 0xfd, 0x2c, 0xd4, 0xff, 0xea, 0x8c, 0xaa, + 0xf2, 0x95, 0x1a, 0x28, 0xea, 0x10, 0xa2, 0x1e, 0x42, 0x8c, 0xcc, 0x77, + 0x01, 0x11, 0x5a, 0x00, 0x37, 0x80, 0xa8, 0x0b, 0x26, 0x02, 0x20, 0x25, + 0x86, 0x0c, 0xba, 0x44, 0x66, 0x90, 0x78, 0x67, 0x06, 0x06, 0x78, 0x17, + 0xa6, 0x02, 0x00, 0x1d, 0x06, 0x06, 0xd0, 0x30, 0xe6, 0x00, 0xf8, 0x05, + 0xa2, 0xc4, 0x6d, 0x98, 0x0d, 0xc0, 0x2f, 0x00, 0x80, 0x00, 0x30, 0x06, + 0x00, 0x83, 0x30, 0xa3, 0x80, 0x2c, 0x30, 0x23, 0x40, 0x40, 0x43, 0x62, + 0x11, 0xa7, 0x8c, 0x5a, 0xed, 0xff, 0xfb, 0xd4, 0x60, 0x1f, 0x08, 0x98, + 0xc8, 0x75, 0x3f, 0xab, 0xf8, 0x7b, 0x70, 0x55, 0xad, 0xf8, 0x45, 0x0c, + 0x42, 0x6e, 0x21, 0xfd, 0xd4, 0xfe, 0x4f, 0xbd, 0xed, 0xc1, 0x4e, 0x37, + 0xa1, 0x20, 0x81, 0x15, 0xb9, 0x24, 0x8e, 0x1a, 0xa4, 0x81, 0xa1, 0xd6, + 0x15, 0x03, 0xcd, 0xc7, 0x69, 0x14, 0xe1, 0xf7, 0x5f, 0xae, 0x74, 0x3b, + 0x55, 0xe6, 0x90, 0xd6, 0x76, 0x69, 0xdf, 0x56, 0x05, 0x44, 0xe2, 0x3e, + 0xf6, 0xe0, 0x19, 0x74, 0x8d, 0xb3, 0xc3, 0x6f, 0x5b, 0xf2, 0xe9, 0x34, + 0xca, 0x67, 0xd1, 0x78, 0x4e, 0xca, 0xdb, 0xf9, 0xda, 0xe8, 0x84, 0x4a, + 0xb5, 0x24, 0xbb, 0x43, 0xd1, 0x09, 0x74, 0x6a, 0x41, 0x9d, 0x3a, 0xf1, + 0x2a, 0xc0, 0x79, 0xaa, 0x90, 0xd3, 0xbd, 0x1f, 0x0d, 0x65, 0xbd, 0xa1, + 0x3f, 0x67, 0x28, 0x6a, 0xf5, 0xca, 0xcb, 0x73, 0x31, 0xfe, 0xce, 0xd5, + 0x05, 0xad, 0x8d, 0x58, 0xda, 0xb4, 0xba, 0x5f, 0xcb, 0x73, 0x7e, 0x3c, + 0x34, 0x39, 0x99, 0x86, 0xe9, 0xd6, 0xf5, 0xfa, 0x39, 0xad, 0xc4, 0x88, + 0xcd, 0xa5, 0xcb, 0x0a, 0xb5, 0x3e, 0xdf, 0x0d, 0x8e, 0x35, 0x15, 0xec, + 0x14, 0xd4, 0x57, 0xb1, 0xa6, 0x6f, 0x87, 0x01, 0xe4, 0x77, 0x26, 0x57, + 0x48, 0x64, 0x64, 0xdc, 0xeb, 0x98, 0x11, 0x94, 0xf3, 0x32, 0x56, 0x3b, + 0x04, 0x2c, 0x55, 0xbd, 0x74, 0xa3, 0x8c, 0xce, 0xd6, 0xc4, 0xb6, 0x9b, + 0x71, 0xc6, 0xe4, 0x59, 0x8e, 0xe2, 0xf6, 0x35, 0x23, 0x37, 0x49, 0x76, + 0xd7, 0x09, 0x21, 0x3f, 0x96, 0x45, 0x6a, 0x8d, 0xf1, 0xcd, 0x01, 0x6a, + 0x48, 0x33, 0xc4, 0xa1, 0xc6, 0x5d, 0x8f, 0xf7, 0xc6, 0x3c, 0x55, 0x85, + 0xd2, 0x75, 0x2c, 0x89, 0x33, 0xd5, 0x8f, 0xd7, 0x63, 0x12, 0x56, 0x93, + 0xcc, 0x90, 0x10, 0x81, 0xf2, 0x16, 0xb1, 0x6c, 0x00, 0x27, 0x80, 0x07, + 0xc1, 0xc8, 0x83, 0x84, 0x27, 0x90, 0x45, 0x64, 0xad, 0x9f, 0x95, 0x71, + 0x5a, 0x3b, 0xa2, 0xe6, 0x5f, 0x25, 0xd3, 0x41, 0x35, 0x67, 0x63, 0x1a, + 0x44, 0x74, 0xcd, 0x3e, 0xad, 0x5b, 0xb1, 0x6b, 0x47, 0xbb, 0xdf, 0x43, + 0xbf, 0xfd, 0xdf, 0x25, 0xb3, 0x2f, 0xd9, 0x77, 0xbd, 0xbd, 0xde, 0x4f, + 0x7a, 0x7e, 0x8d, 0xd9, 0x1b, 0xeb, 0x7f, 0x4d, 0x7b, 0xa3, 0x5d, 0x99, + 0xee, 0x8e, 0xab, 0x49, 0x8a, 0x20, 0xce, 0x62, 0x14, 0xea, 0xea, 0x50, + 0x6e, 0x8e, 0x00, 0x18, 0xea, 0x25, 0x82, 0xc9, 0x03, 0x34, 0x0a, 0x00, + 0x18, 0x04, 0x80, 0x35, 0x82, 0x41, 0x4e, 0x30, 0x14, 0x54, 0x9d, 0x31, + 0xba, 0x43, 0xd6, 0x30, 0x15, 0xc0, 0xc1, 0x30, 0x06, 0x40, 0x2a, 0x30, + 0x88, 0x40, 0x50, 0x24, 0x01, 0x6c, 0xc4, 0x04, 0x09, 0x40, 0xc0, 0x71, + 0x00, 0xc4, 0xc0, 0x20, 0x00, 0xbd, 0x55, 0x0c, 0x20, 0xf0, 0x5f, 0x01, + 0xc0, 0x32, 0x13, 0x00, 0x16, 0x2d, 0x8e, 0xf4, 0xe1, 0x05, 0xf3, 0x26, + 0x36, 0xd8, 0xaf, 0xc1, 0xff, 0x3a, 0x79, 0x95, 0x0f, 0x2f, 0x6a, 0x26, + 0x45, 0xd9, 0x10, 0x73, 0x1d, 0xec, 0x0a, 0xb3, 0x40, 0xa4, 0x3b, 0xd9, + 0xe2, 0x21, 0x0b, 0x9b, 0x4a, 0xae, 0x20, 0xea, 0x86, 0xc5, 0xdb, 0x09, + 0xff, 0xb5, 0x69, 0x7f, 0x5c, 0x24, 0xde, 0x9f, 0xac, 0x06, 0x21, 0x70, + 0x5e, 0x8a, 0x7f, 0xb2, 0xc8, 0x73, 0xae, 0x95, 0xf0, 0xce, 0xc8, 0x88, + 0x62, 0xad, 0x02, 0xcd, 0x3a, 0x71, 0x65, 0x3d, 0x2c, 0x07, 0x26, 0xde, + 0xd4, 0xfd, 0xeb, 0x1a, 0x29, 0x49, 0x16, 0x8b, 0x98, 0x0c, 0xcc, 0x3a, + 0xba, 0x6d, 0x54, 0xaf, 0x88, 0xdc, 0xe6, 0xf9, 0xce, 0x66, 0xe5, 0x2a, + 0x81, 0x3b, 0xb5, 0x72, 0xb9, 0xaa, 0xf7, 0x72, 0x70, 0x39, 0xbc, 0xea, + 0x67, 0x07, 0x36, 0x65, 0x7b, 0xd6, 0x76, 0x37, 0xae, 0x4d, 0xf1, 0xd8, + 0x91, 0xb1, 0x99, 0xec, 0xf5, 0xe3, 0x33, 0xb7, 0xa6, 0xe3, 0x5e, 0x32, + 0x8c, 0x64, 0x56, 0xb1, 0x33, 0xe2, 0x77, 0x90, 0x98, 0x6b, 0xdc, 0xe2, + 0xb7, 0x3c, 0x6c, 0x74, 0xbb, 0x7d, 0xb5, 0x4b, 0xe8, 0x2e, 0x13, 0xc5, + 0x92, 0xde, 0x1b, 0x55, 0xd7, 0x10, 0x58, 0xee, 0xa7, 0xce, 0x62, 0x2d, + 0xc5, 0x55, 0xab, 0x59, 0x70, 0xbb, 0x43, 0xda, 0xb0, 0xad, 0xc2, 0x1e, + 0x94, 0x86, 0x9b, 0x4a, 0xc7, 0x52, 0x32, 0x3e, 0x4e, 0x9e, 0xe8, 0xf3, + 0xcd, 0x64, 0x94, 0x9e, 0x07, 0xe3, 0x81, 0x62, 0x16, 0x56, 0x76, 0x00, + 0xf8, 0x06, 0xf0, 0x6f, 0x12, 0x10, 0x08, 0x61, 0x0f, 0x1a, 0x1a, 0xc4, + 0xa3, 0x42, 0xc3, 0xa2, 0xff, 0x52, 0x18, 0x82, 0x1c, 0x26, 0x5b, 0xd6, + 0xd6, 0xe7, 0x4a, 0xeb, 0x44, 0x4d, 0xd5, 0xf7, 0xd0, 0xea, 0xaf, 0x7b, + 0x1a, 0x66, 0x52, 0x39, 0x4e, 0xc8, 0xe4, 0x3f, 0xa6, 0xbf, 0x42, 0x77, + 0xff, 0xe9, 0xbe, 0xe4, 0x45, 0xa6, 0xde, 0x4b, 0xec, 0xe9, 0xa7, 0x4e, + 0xaf, 0x4d, 0x76, 0x7a, 0xb4, 0xd5, 0xb5, 0xf2, 0xbf, 0xfa, 0x2a, 0x75, + 0x53, 0x5d, 0xd1, 0x8a, 0xc8, 0xa4, 0x42, 0x00, 0xa4, 0x62, 0x8a, 0x8c, + 0x76, 0x07, 0x21, 0x04, 0xd4, 0x10, 0x0c, 0x08, 0x60, 0x2a, 0x4c, 0x08, + 0xb0, 0x6b, 0x8c, 0x1b, 0x46, 0x5c, 0xcc, 0xea, 0x81, 0x66, 0x8c, 0x0e, + 0x60, 0x44, 0xcc, 0x02, 0xb0, 0x14, 0x4c, 0x25, 0xe0, 0x44, 0x0c, 0x02, + 0xa0, 0x55, 0x8c, 0x20, 0xb1, 0x10, 0x4c, 0x02, 0xb0, 0x09, 0xcc, 0x06, + 0x70, 0x09, 0x80, 0x40, 0x2c, 0x98, 0x49, 0xc1, 0xab, 0x98, 0x08, 0x20, + 0x1d, 0x97, 0x78, 0x19, 0xa5, 0xe9, 0x42, 0x75, 0xa5, 0x93, 0xc2, 0x78, + 0x47, 0xb4, 0xa7, 0xcc, 0x16, 0xff, 0xfb, 0xd4, 0x60, 0x24, 0x08, 0x89, + 0x20, 0x75, 0x3e, 0x8b, 0xef, 0x7b, 0x70, 0x56, 0x4e, 0x08, 0x59, 0x20, + 0x45, 0x6e, 0x21, 0x79, 0xd5, 0x03, 0x2f, 0xbd, 0xed, 0xc1, 0x5a, 0xb9, + 0xa1, 0xa4, 0x31, 0x89, 0xb8, 0x32, 0x62, 0xde, 0xf8, 0xe8, 0x39, 0xa5, + 0x06, 0xc9, 0x2f, 0x6f, 0x42, 0xa0, 0x1e, 0x66, 0x51, 0x29, 0x90, 0xf2, + 0x21, 0x84, 0x18, 0xbe, 0x0c, 0x12, 0xe0, 0xaa, 0x47, 0xaf, 0x94, 0xa7, + 0x02, 0x12, 0xc6, 0x58, 0x61, 0x1f, 0xea, 0x82, 0x36, 0x64, 0xbf, 0x3b, + 0x18, 0xce, 0xd4, 0xaa, 0x72, 0x76, 0x55, 0x3b, 0x92, 0x19, 0x06, 0x33, + 0x7a, 0xc1, 0xc4, 0x9c, 0x3c, 0x55, 0x6b, 0x0c, 0x4b, 0xca, 0x48, 0x49, + 0xe8, 0x49, 0xc5, 0xc4, 0x8f, 0x9b, 0x5e, 0x2f, 0x9e, 0xf3, 0x1f, 0xd1, + 0x55, 0x0b, 0x85, 0xb3, 0x99, 0xe9, 0xd6, 0x7f, 0x36, 0x2f, 0x36, 0x32, + 0xa9, 0x55, 0xcc, 0x67, 0xe5, 0xea, 0xf1, 0x44, 0x6e, 0x2e, 0x4b, 0xc4, + 0x62, 0xe8, 0x63, 0xa7, 0x90, 0xeb, 0xa9, 0xe2, 0x47, 0x62, 0x5e, 0x52, + 0x59, 0x8d, 0x56, 0x72, 0xa7, 0x55, 0x3a, 0x51, 0x30, 0xa3, 0xdf, 0xb0, + 0x34, 0x2a, 0x98, 0xd5, 0xe8, 0x55, 0x14, 0x2a, 0x74, 0x14, 0x4e, 0x8d, + 0x4c, 0x2e, 0x5c, 0x5d, 0xd9, 0x09, 0x64, 0x53, 0x44, 0x60, 0x52, 0x43, + 0x5b, 0x8d, 0x66, 0x87, 0x69, 0xc5, 0x79, 0xfe, 0xe6, 0xe7, 0x25, 0xb5, + 0x06, 0x56, 0x47, 0xf1, 0x9a, 0x2c, 0xac, 0x87, 0x39, 0xda, 0x73, 0x26, + 0xd0, 0x50, 0xa3, 0x2b, 0x27, 0x63, 0x42, 0x53, 0xca, 0xa8, 0xac, 0xe8, + 0xc4, 0x52, 0x92, 0xc7, 0x4c, 0x75, 0x32, 0x8e, 0x75, 0x0a, 0x3c, 0xca, + 0x65, 0x51, 0xaa, 0x53, 0x44, 0xf4, 0xfe, 0x3b, 0x55, 0xa4, 0x81, 0xe1, + 0xdc, 0x51, 0x13, 0x41, 0xe9, 0x3a, 0x85, 0xd8, 0x8f, 0x00, 0x00, 0x18, + 0x0a, 0x80, 0x02, 0xf7, 0x37, 0x17, 0xc3, 0xc1, 0x2d, 0xcd, 0xcc, 0xeb, + 0xc1, 0xa5, 0xdf, 0xb2, 0xed, 0xbb, 0x27, 0xec, 0xc9, 0xe8, 0x67, 0xb9, + 0x57, 0xdd, 0x66, 0xa2, 0xa1, 0x50, 0xee, 0xcb, 0x4a, 0xa3, 0xb9, 0x88, + 0xce, 0x54, 0x44, 0x73, 0x7d, 0xbf, 0x4f, 0x64, 0xaa, 0xdf, 0xfb, 0x51, + 0x7e, 0xb4, 0xd7, 0x77, 0xd5, 0xd5, 0x77, 0xf7, 0xfd, 0xdf, 0x7d, 0x49, + 0xbb, 0x7f, 0xfa, 0x23, 0xee, 0xec, 0xc8, 0xc5, 0x41, 0x51, 0xeb, 0x61, + 0x82, 0x67, 0x1e, 0x2a, 0x77, 0xaa, 0x0f, 0x11, 0x50, 0x1c, 0x5d, 0x04, + 0x6a, 0xae, 0x00, 0x30, 0x14, 0x00, 0x4f, 0x30, 0x1e, 0xc0, 0xb4, 0x30, + 0x73, 0x8b, 0x51, 0x34, 0x0e, 0x02, 0x2c, 0x30, 0x40, 0x00, 0x79, 0x30, + 0x0b, 0xc0, 0xaa, 0x30, 0x4f, 0x80, 0xe1, 0x30, 0x06, 0xc0, 0xa5, 0x30, + 0x8e, 0x42, 0x50, 0x30, 0x0b, 0x80, 0x42, 0x0c, 0x01, 0x74, 0xc0, 0x25, + 0x01, 0x50, 0xc0, 0x9f, 0x06, 0x58, 0xc0, 0x35, 0x00, 0x69, 0x7d, 0x9c, + 0xce, 0x2a, 0x66, 0xf6, 0x18, 0x48, 0xa2, 0xef, 0x52, 0xfe, 0x98, 0x4d, + 0x97, 0x07, 0x45, 0xfc, 0xc3, 0x39, 0x4f, 0xd4, 0xb1, 0xc2, 0x5c, 0x89, + 0xd1, 0xc0, 0xa3, 0x09, 0x32, 0x1a, 0x96, 0x8a, 0xe2, 0x99, 0x34, 0xc5, + 0xc4, 0xe7, 0x27, 0x70, 0x53, 0x86, 0xe2, 0x39, 0x12, 0x41, 0xda, 0xa1, + 0xa9, 0x90, 0x6c, 0x67, 0xe2, 0x50, 0x9e, 0x1f, 0xca, 0x23, 0xb8, 0xc7, + 0x56, 0x8c, 0xf4, 0x52, 0x18, 0x6e, 0xd4, 0xfd, 0x2f, 0x78, 0x64, 0x2b, + 0x62, 0xa8, 0x17, 0x67, 0xf3, 0x0b, 0x1d, 0xdb, 0x94, 0x85, 0x5b, 0x32, + 0xb9, 0x4a, 0x70, 0xa7, 0x59, 0x91, 0xcf, 0xa6, 0x64, 0x87, 0x33, 0x56, + 0x2e, 0xf2, 0x14, 0x53, 0xf6, 0xed, 0xf1, 0x20, 0xb7, 0xe5, 0xe3, 0xd8, + 0x2c, 0x10, 0xb0, 0xe6, 0xe7, 0x26, 0xf7, 0xaf, 0x8d, 0xb3, 0xb8, 0x3e, + 0xda, 0xb6, 0x12, 0xd3, 0xc7, 0xb3, 0xd1, 0x8f, 0x71, 0xae, 0xff, 0x0f, + 0x62, 0x6a, 0x57, 0x8d, 0x50, 0x60, 0x4d, 0x09, 0x7a, 0x14, 0x18, 0x13, + 0x5e, 0x4a, 0xc5, 0x7b, 0x3c, 0xd6, 0x8b, 0x77, 0xf1, 0x1d, 0xde, 0x35, + 0xad, 0x66, 0xba, 0xe5, 0xae, 0x68, 0x18, 0x61, 0xac, 0x5b, 0x79, 0xa3, + 0x6d, 0x8a, 0x36, 0xb1, 0x2c, 0x18, 0x1b, 0x72, 0x71, 0x8f, 0x1d, 0xeb, + 0xc5, 0x7c, 0xf2, 0x29, 0xb0, 0xc3, 0x1c, 0xf8, 0x85, 0x1d, 0x6a, 0xfa, + 0x45, 0xa7, 0x1f, 0xc1, 0x91, 0xbd, 0x60, 0xfd, 0x33, 0x15, 0x07, 0x31, + 0x08, 0x7c, 0x9e, 0x09, 0xc5, 0xf9, 0x00, 0x03, 0xed, 0x8e, 0x7c, 0xa6, + 0xbc, 0xb7, 0x73, 0x04, 0x85, 0xe1, 0x2b, 0x2d, 0xe7, 0xe5, 0xe7, 0xeb, + 0xd9, 0x95, 0xfe, 0xce, 0x4b, 0x35, 0x78, 0x4f, 0x9d, 0x43, 0x3a, 0x98, + 0xe8, 0xc7, 0x31, 0x8e, 0x55, 0x5d, 0xd4, 0xe8, 0x8a, 0x52, 0x96, 0x9d, + 0x97, 0xaa, 0x2a, 0xcc, 0x57, 0xef, 0x4f, 0x5f, 0xdb, 0xf4, 0xdf, 0x4f, + 0xda, 0xc9, 0xff, 0xed, 0x4f, 0xfb, 0xa7, 0x4d, 0x7b, 0x91, 0xf4, 0x74, + 0x92, 0xe8, 0x77, 0x43, 0x2e, 0x39, 0x9c, 0xb5, 0x39, 0xe0, 0xd0, 0x39, + 0x05, 0x38, 0xa2, 0xd1, 0xdc, 0x1d, 0x08, 0x0c, 0x07, 0x00, 0x11, 0xcc, + 0x0d, 0xf0, 0x19, 0x8c, 0x34, 0x61, 0x92, 0x4d, 0xca, 0x00, 0x4a, 0x0c, + 0x1c, 0xc0, 0x0b, 0x4c, 0x0c, 0xb0, 0x16, 0x0c, 0x2f, 0xb0, 0x21, 0xcc, + 0x01, 0x30, 0x17, 0x0c, 0x57, 0x20, 0x6e, 0xcc, 0x06, 0x70, 0x1c, 0x49, + 0x00, 0x0f, 0x1d, 0x00, 0xc4, 0xc0, 0xa5, 0x0a, 0xc4, 0xc0, 0x51, 0x00, + 0xa5, 0x45, 0x13, 0x8d, 0x8a, 0x12, 0x70, 0x72, 0xa5, 0x49, 0x99, 0x78, + 0x43, 0x58, 0x99, 0x9b, 0x14, 0xff, 0xfb, 0xd4, 0x60, 0x23, 0x8d, 0x89, + 0x1a, 0x75, 0xbf, 0x0b, 0xef, 0xc3, 0x70, 0x3d, 0xe5, 0x78, 0xba, 0x08, + 0x22, 0x4c, 0x23, 0xcd, 0xd4, 0xfc, 0x2f, 0xbd, 0xed, 0xc1, 0x59, 0x39, + 0x61, 0x48, 0x61, 0x95, 0xb8, 0xe4, 0xf5, 0x94, 0xbc, 0x90, 0x63, 0xa9, + 0x0d, 0x4a, 0x35, 0x25, 0x0e, 0x48, 0x6a, 0x32, 0xf8, 0x06, 0x22, 0x26, + 0x01, 0xa6, 0x5f, 0x0b, 0xc4, 0xc5, 0xb9, 0x71, 0x57, 0x12, 0x5e, 0x4a, + 0x9f, 0xd5, 0x4c, 0xa3, 0x2e, 0xeb, 0x28, 0x4a, 0xa1, 0x91, 0x3f, 0x93, + 0xaf, 0x71, 0xe0, 0x73, 0x25, 0x10, 0x98, 0xc3, 0xda, 0xaa, 0x6d, 0xac, + 0x31, 0x7e, 0xc4, 0x8e, 0x3b, 0x2e, 0xbb, 0x76, 0x4d, 0x1b, 0xb1, 0x7e, + 0x1e, 0x88, 0xca, 0x1f, 0xe9, 0x6c, 0x56, 0xd5, 0x2d, 0x49, 0x34, 0x3b, + 0x20, 0x93, 0x45, 0x2e, 0xd3, 0x4e, 0xd3, 0x55, 0xc6, 0x62, 0x73, 0x09, + 0x13, 0xc3, 0x56, 0x3f, 0x1a, 0xbf, 0x4f, 0x0f, 0x5d, 0x9a, 0xed, 0x67, + 0x46, 0xcc, 0x05, 0x86, 0x74, 0xb6, 0xe8, 0xa4, 0x36, 0x23, 0xf1, 0xf8, + 0xae, 0x11, 0x1b, 0xd2, 0xb8, 0xde, 0x70, 0xdc, 0x1d, 0x27, 0x99, 0x92, + 0xe1, 0x51, 0xf7, 0x86, 0xa3, 0xd5, 0x73, 0x94, 0x44, 0x5f, 0x49, 0xb7, + 0xe6, 0xb4, 0xd5, 0x04, 0xae, 0xf7, 0xc1, 0xd0, 0xf5, 0x79, 0x5c, 0xbb, + 0xed, 0x51, 0x46, 0x75, 0x2b, 0x8c, 0x3e, 0xf8, 0xda, 0xaf, 0xf1, 0xb9, + 0x4c, 0x0d, 0x4b, 0x5a, 0x4d, 0xb8, 0x55, 0x5a, 0x3c, 0xf9, 0x49, 0x57, + 0x53, 0xd4, 0x16, 0xf1, 0x91, 0xd7, 0xa9, 0x2a, 0x9c, 0xb1, 0x06, 0xd0, + 0xf6, 0xd4, 0x46, 0x07, 0x87, 0xe8, 0x20, 0xe8, 0x6a, 0x39, 0x1a, 0x79, + 0xdc, 0x47, 0xe3, 0x37, 0xe5, 0xf6, 0x7c, 0x60, 0x16, 0xa2, 0xaa, 0xe2, + 0xc6, 0x5d, 0x0c, 0xdd, 0x80, 0x22, 0x82, 0xbc, 0x74, 0x00, 0x00, 0x0f, + 0x8d, 0xed, 0x5b, 0x40, 0x4e, 0x8d, 0xb7, 0x5f, 0xf8, 0x99, 0x56, 0x45, + 0xc8, 0xab, 0x93, 0xa3, 0xed, 0xb4, 0x76, 0x49, 0x45, 0x20, 0x43, 0x0b, + 0x94, 0x25, 0x59, 0x04, 0x9a, 0x81, 0x8c, 0xa4, 0xa1, 0xdd, 0xf0, 0xea, + 0x1b, 0x79, 0xc6, 0x50, 0x39, 0x54, 0xa7, 0xb1, 0x63, 0x2d, 0xf4, 0x73, + 0x3f, 0xb7, 0xff, 0xff, 0xed, 0xaa, 0x76, 0xe5, 0x2d, 0x40, 0x65, 0x08, + 0xc0, 0x3a, 0x00, 0x18, 0xc0, 0xbb, 0x02, 0x44, 0xc2, 0xfe, 0x27, 0xe0, + 0xda, 0xe2, 0x0a, 0xd4, 0xc1, 0xb4, 0x02, 0x80, 0xc0, 0x87, 0x04, 0xf4, + 0xc0, 0xd2, 0x06, 0xf0, 0xc0, 0x67, 0x01, 0x28, 0xc5, 0x07, 0x06, 0x24, + 0xc0, 0x80, 0x01, 0x80, 0xc0, 0x39, 0x00, 0x30, 0xc0, 0x34, 0x01, 0x98, + 0xc2, 0x1e, 0x0a, 0x08, 0xc0, 0x31, 0x00, 0xa9, 0x52, 0xa8, 0x95, 0x2b, + 0x97, 0x03, 0x8d, 0x7d, 0xa9, 0x8c, 0xbb, 0x8b, 0x89, 0xce, 0xd6, 0x90, + 0x58, 0x54, 0x0b, 0xa9, 0xf2, 0xde, 0x85, 0xa1, 0xcd, 0xaf, 0x49, 0x42, + 0x81, 0x50, 0x7b, 0x9c, 0x05, 0x89, 0x5a, 0x2e, 0x24, 0xc0, 0xf4, 0x49, + 0xa9, 0xd9, 0xd9, 0x89, 0x79, 0xc4, 0xae, 0xba, 0x94, 0xd7, 0x55, 0xbf, + 0x50, 0x10, 0x72, 0x16, 0xbe, 0xa8, 0x24, 0x13, 0x9c, 0xec, 0x6f, 0x99, + 0xd7, 0xa3, 0xc7, 0x98, 0xf6, 0x46, 0xc1, 0x65, 0x95, 0xcd, 0xf1, 0x6d, + 0x8a, 0x8b, 0x5d, 0xb9, 0xaf, 0x20, 0x96, 0x14, 0xea, 0xd5, 0xd2, 0xda, + 0xb5, 0x91, 0x09, 0x7e, 0xcf, 0x15, 0x2c, 0xe4, 0xf2, 0x68, 0xb0, 0x14, + 0xd8, 0x45, 0x36, 0x2d, 0xba, 0x73, 0x60, 0x6d, 0x72, 0x4b, 0x38, 0xbd, + 0x7a, 0x6a, 0x1d, 0x0b, 0x47, 0xea, 0x9d, 0xb1, 0x12, 0xab, 0x4e, 0x3a, + 0x57, 0xa9, 0x9e, 0x32, 0x2e, 0x9b, 0x93, 0x2f, 0xa3, 0xc9, 0x1d, 0x50, + 0xce, 0xaa, 0x55, 0xc9, 0xa9, 0x61, 0x37, 0xb8, 0xaa, 0x17, 0x7b, 0xc3, + 0xd6, 0xa6, 0x15, 0xc4, 0x28, 0xae, 0x6a, 0x07, 0xb1, 0x62, 0xc2, 0xc3, + 0x86, 0xd6, 0xa0, 0x44, 0x9d, 0x7d, 0x5e, 0xbe, 0xac, 0x55, 0x2a, 0x2a, + 0xc2, 0xcc, 0xf1, 0xc6, 0x22, 0xb1, 0x46, 0x8b, 0x6f, 0x84, 0x98, 0x8e, + 0xf5, 0xb9, 0x85, 0x95, 0x50, 0xb6, 0xf9, 0x46, 0xe9, 0xcd, 0x3e, 0xdc, + 0xa8, 0x54, 0x22, 0x1f, 0x62, 0x39, 0x7c, 0x74, 0x9f, 0x44, 0x46, 0x40, + 0xc0, 0x5c, 0x33, 0x92, 0x74, 0x49, 0xe2, 0x61, 0x4e, 0x91, 0x2c, 0xd4, + 0x28, 0xb5, 0x39, 0x3d, 0x27, 0x80, 0x90, 0x43, 0x8f, 0xa9, 0xb9, 0x00, + 0x0b, 0xa8, 0x6c, 0xa3, 0xd8, 0xc2, 0xaf, 0xb5, 0x57, 0x76, 0x3f, 0xcf, + 0xf4, 0xfa, 0xad, 0x5c, 0xdb, 0x8f, 0xff, 0x09, 0xda, 0x58, 0x6b, 0x6e, + 0x87, 0x29, 0x41, 0x14, 0xc8, 0x47, 0x67, 0x3b, 0x20, 0xc5, 0xae, 0x6e, + 0xf7, 0xe8, 0x8e, 0xbf, 0xef, 0xff, 0x4a, 0x6b, 0xff, 0xf7, 0xfb, 0xfe, + 0xe9, 0xf5, 0xd3, 0xbf, 0xbb, 0xac, 0xcb, 0x5b, 0x2f, 0x7b, 0xff, 0x62, + 0x90, 0xae, 0xec, 0x84, 0x66, 0x62, 0x89, 0xd9, 0x45, 0xd9, 0x11, 0xe6, + 0xb9, 0x4b, 0x28, 0x50, 0x91, 0xc8, 0xe2, 0xcb, 0x72, 0x30, 0x7c, 0x31, + 0x00, 0x87, 0x01, 0x80, 0x1a, 0x03, 0x71, 0x80, 0xc6, 0x0a, 0x89, 0x84, + 0x30, 0xa2, 0x01, 0xa8, 0x9c, 0x29, 0x69, 0x82, 0x5c, 0x08, 0x40, 0x5c, + 0x01, 0x23, 0x0e, 0x20, 0x0c, 0xd3, 0x01, 0x90, 0x0f, 0xf3, 0x0d, 0xd8, + 0x41, 0xe0, 0xc0, 0x2f, 0xc0, 0x40, 0x42, 0x98, 0x01, 0x60, 0x09, 0x18, + 0x59, 0xa0, 0x6b, 0x89, 0x02, 0x8a, 0xa1, 0x64, 0xd0, 0xc6, 0x64, 0x14, + 0xb4, 0x30, 0xde, 0x38, 0xd7, 0x47, 0x29, 0x20, 0x2e, 0x44, 0xe8, 0x38, + 0x4b, 0xec, 0x26, 0x61, 0xa4, 0xff, 0xfb, 0xd4, 0x60, 0x26, 0x88, 0x89, + 0x2b, 0x75, 0xbe, 0xab, 0xef, 0x7b, 0x70, 0x57, 0x4d, 0xf8, 0x59, 0x0c, + 0x62, 0x6e, 0x21, 0x0d, 0xd7, 0x01, 0x2f, 0x3d, 0xed, 0xc1, 0x40, 0x39, + 0x61, 0x98, 0x11, 0x89, 0xb8, 0x9c, 0x80, 0x43, 0x8d, 0x23, 0xf5, 0x36, + 0x5b, 0x0b, 0xe1, 0x70, 0x37, 0xce, 0x73, 0xb4, 0x83, 0xa9, 0x02, 0x82, + 0xd0, 0x6e, 0xb6, 0x97, 0x91, 0x9c, 0x74, 0x89, 0x42, 0xf2, 0x68, 0x9b, + 0x8a, 0x63, 0xce, 0x73, 0xfd, 0x36, 0x5c, 0x0b, 0xdb, 0x42, 0x71, 0x58, + 0x87, 0x23, 0xc7, 0x4b, 0xd3, 0x71, 0xac, 0xcb, 0x53, 0x9b, 0x0d, 0xe8, + 0xd4, 0x8a, 0x65, 0x72, 0xa9, 0x85, 0x32, 0xae, 0x75, 0x19, 0x7d, 0x3d, + 0x95, 0xda, 0x72, 0x81, 0x57, 0x34, 0x42, 0x25, 0x92, 0x23, 0xc8, 0x35, + 0x7a, 0xdb, 0xe0, 0x3b, 0x42, 0x5c, 0x5a, 0xdb, 0x5e, 0xb8, 0x1d, 0x4a, + 0x24, 0x25, 0x14, 0xe6, 0x74, 0xab, 0xd9, 0xe1, 0x37, 0xb7, 0x47, 0x51, + 0x22, 0x95, 0x47, 0x59, 0xc2, 0xc4, 0x84, 0x40, 0x2d, 0xc9, 0x73, 0x2d, + 0x1a, 0xad, 0x55, 0xa8, 0xd5, 0x45, 0xc9, 0xcd, 0x85, 0x85, 0x8d, 0x09, + 0x96, 0xea, 0xf5, 0x2a, 0xa5, 0x4a, 0xe3, 0x34, 0x54, 0x76, 0x93, 0xfa, + 0x69, 0x9a, 0xc8, 0x5c, 0x8d, 0x51, 0xd4, 0x72, 0x2e, 0x27, 0x88, 0xd6, + 0xf1, 0xc2, 0x66, 0x53, 0xa1, 0xbd, 0x4a, 0xdc, 0xae, 0x4e, 0xd9, 0x54, + 0xae, 0xb9, 0x3d, 0x47, 0xc1, 0x60, 0xa2, 0x71, 0x39, 0x0d, 0xfa, 0x12, + 0xde, 0x79, 0xbc, 0x9c, 0xee, 0xda, 0xb5, 0x0a, 0x6b, 0xb3, 0x1a, 0xa9, + 0x41, 0x1d, 0xe3, 0xb2, 0x7e, 0x99, 0x34, 0xcd, 0x42, 0x76, 0x69, 0x32, + 0x6f, 0x6c, 0x25, 0xee, 0x44, 0xe1, 0x03, 0x14, 0x81, 0xde, 0x2c, 0xcf, + 0x89, 0xbb, 0x68, 0x9c, 0x16, 0x80, 0x00, 0x03, 0x51, 0x68, 0x00, 0x16, + 0xc6, 0x81, 0x2a, 0x84, 0x51, 0xb2, 0x24, 0xdf, 0xcd, 0xd4, 0xb3, 0x0b, + 0x59, 0x0d, 0x8e, 0x36, 0x72, 0x15, 0x34, 0x33, 0xf2, 0xff, 0x32, 0xc8, + 0x8f, 0x22, 0x29, 0x69, 0xa5, 0x08, 0xe8, 0xa2, 0x9c, 0x04, 0x86, 0x5d, + 0x3a, 0x7f, 0x5d, 0xd9, 0xbe, 0xbd, 0x93, 0x4a, 0x7f, 0xf7, 0xb1, 0x7d, + 0xf6, 0x5d, 0x7f, 0x6a, 0x29, 0x32, 0xff, 0xbf, 0x67, 0xf5, 0xed, 0xf6, + 0xa5, 0xea, 0x95, 0x55, 0x3f, 0x3b, 0x22, 0x19, 0x02, 0x38, 0xe0, 0x8c, + 0x20, 0xe1, 0x47, 0x50, 0x17, 0x0c, 0x6d, 0x45, 0x38, 0x0c, 0xcf, 0x40, + 0x06, 0x06, 0x20, 0xb8, 0x60, 0x30, 0x1e, 0xa6, 0x08, 0x3e, 0xbc, 0x61, + 0xa0, 0x6e, 0x66, 0x01, 0xa1, 0x44, 0x09, 0x06, 0xc3, 0x1b, 0xb0, 0xcf, + 0x20, 0x0c, 0xa3, 0x10, 0x43, 0x03, 0x10, 0x00, 0xd9, 0x40, 0x29, 0x15, + 0x40, 0x74, 0xc6, 0x58, 0x3e, 0xcc, 0x0b, 0xc0, 0x45, 0x94, 0x23, 0xd5, + 0xd2, 0xb8, 0x58, 0xf7, 0x3a, 0x55, 0xc5, 0x69, 0xfc, 0x72, 0x22, 0xc7, + 0xca, 0x18, 0xc4, 0x6e, 0x9b, 0x0a, 0x33, 0x86, 0x21, 0x4e, 0x4b, 0x0c, + 0x02, 0x7a, 0x81, 0x25, 0xef, 0x95, 0xa5, 0xfc, 0x93, 0x28, 0x8e, 0x32, + 0xc4, 0x9d, 0x25, 0xaa, 0xe3, 0x05, 0x00, 0x86, 0x9b, 0xe9, 0x65, 0xb2, + 0xf8, 0x95, 0x24, 0x25, 0x88, 0xb0, 0xad, 0x0b, 0x7a, 0x05, 0x3a, 0x75, + 0x9d, 0xd5, 0x44, 0x27, 0x95, 0xaa, 0x43, 0xe5, 0x85, 0x09, 0x65, 0x94, + 0xc2, 0x80, 0x76, 0x24, 0xd6, 0xd1, 0x4c, 0x05, 0x29, 0xbd, 0xb7, 0x6f, + 0x5a, 0x5d, 0xa9, 0x5a, 0x12, 0x4d, 0xbe, 0x1c, 0x78, 0x11, 0x54, 0x16, + 0xf8, 0xcf, 0xda, 0xea, 0x23, 0xca, 0xdd, 0xf2, 0xfc, 0x90, 0x61, 0xbd, + 0x66, 0x57, 0x3c, 0xad, 0xa8, 0xd4, 0x7e, 0x31, 0xb9, 0x2a, 0xed, 0x03, + 0x50, 0xa8, 0xbd, 0x24, 0x5c, 0xb8, 0x39, 0xcf, 0xad, 0xb9, 0x6a, 0xa8, + 0xba, 0xa9, 0x1d, 0x66, 0x13, 0x1d, 0x67, 0x7c, 0xc2, 0xf5, 0xb5, 0x3f, + 0x1e, 0x0c, 0x3f, 0x8b, 0xc6, 0x9d, 0x9f, 0x6d, 0x6a, 0xd6, 0x18, 0xd1, + 0xdf, 0xbf, 0xb4, 0x08, 0x53, 0xd9, 0x6e, 0x0a, 0xaa, 0x2c, 0x69, 0x95, + 0xf1, 0xa1, 0xc6, 0xba, 0xb2, 0x46, 0x16, 0x08, 0xd0, 0x29, 0x0e, 0x8d, + 0x94, 0xbb, 0x62, 0x7a, 0x1b, 0xe6, 0x26, 0x55, 0x43, 0x1a, 0xc4, 0xd3, + 0xb2, 0xa6, 0x94, 0x0d, 0xa7, 0xaa, 0xd3, 0x79, 0x78, 0x27, 0x8a, 0xb2, + 0xde, 0x5b, 0x25, 0x20, 0xe7, 0x13, 0x19, 0x8e, 0xbb, 0x4b, 0x57, 0x20, + 0x06, 0x67, 0x4c, 0x03, 0xe5, 0x54, 0xd7, 0x52, 0x22, 0xf8, 0x9b, 0x52, + 0xbb, 0x15, 0x1a, 0xff, 0x34, 0xad, 0x57, 0x41, 0xf8, 0x57, 0x2f, 0x99, + 0x10, 0xee, 0xb6, 0x66, 0x9e, 0x45, 0xb9, 0x59, 0x96, 0x5d, 0x4c, 0xe7, + 0xeb, 0xb7, 0x45, 0x6c, 0x9b, 0x4b, 0xdd, 0x75, 0xff, 0x4f, 0xfe, 0x9d, + 0x3f, 0xfd, 0x56, 0xde, 0xd5, 0xbf, 0xbf, 0xd7, 0xfd, 0x3f, 0x7e, 0x8c, + 0xe5, 0x53, 0xaa, 0x22, 0xb9, 0x8c, 0xcc, 0x12, 0xac, 0x28, 0x18, 0xc5, + 0x22, 0x21, 0xc1, 0xc5, 0x04, 0x06, 0x50, 0x03, 0x01, 0x84, 0x07, 0xc3, + 0x02, 0x30, 0x11, 0x33, 0x08, 0x15, 0x12, 0x83, 0x3e, 0x44, 0x3a, 0xb3, + 0x04, 0x8c, 0x0d, 0xa3, 0x01, 0x08, 0x10, 0x93, 0x06, 0x84, 0x18, 0x03, + 0x01, 0x5c, 0x07, 0xf3, 0x10, 0x2c, 0x2e, 0x43, 0x01, 0x78, 0x04, 0xe5, + 0x88, 0x60, 0x02, 0x00, 0x7c, 0x60, 0x76, 0x83, 0x6c, 0x60, 0x12, 0x80, + 0x6c, 0x92, 0xe2, 0x44, 0x5c, 0xcf, 0xc2, 0xdc, 0x68, 0x26, 0xef, 0x20, + 0xe0, 0x45, 0x1d, 0x68, 0x95, 0x22, 0xa5, 0x0e, 0x56, 0x98, 0xeb, 0xe4, + 0xe5, 0x0d, 0x45, 0x1c, 0x29, 0xff, 0xfb, 0xd4, 0x60, 0x2a, 0x0c, 0x88, + 0xed, 0x75, 0x3f, 0x13, 0xef, 0x7b, 0x70, 0x4c, 0x04, 0x88, 0x9d, 0x04, + 0x63, 0x4a, 0x24, 0x75, 0xd4, 0xfc, 0x4f, 0xbd, 0xed, 0xc1, 0x2f, 0xb9, + 0x21, 0xe4, 0x30, 0x89, 0xb8, 0xc4, 0x99, 0xfa, 0xa5, 0x2c, 0x06, 0x49, + 0xc6, 0x5c, 0x06, 0x09, 0x09, 0x3a, 0xc4, 0xdd, 0x14, 0xce, 0x73, 0x05, + 0xda, 0x8d, 0x72, 0x55, 0xb2, 0x9e, 0x65, 0x9a, 0xa5, 0x60, 0x77, 0x34, + 0x2a, 0x52, 0x24, 0x85, 0x20, 0xa3, 0x4e, 0x9f, 0x67, 0x84, 0x46, 0x77, + 0x6a, 0x82, 0xb5, 0x80, 0xde, 0x6a, 0x3b, 0xd0, 0x2a, 0xa4, 0x28, 0xfc, + 0x43, 0x0d, 0xb8, 0x33, 0x65, 0x99, 0x55, 0x09, 0x0c, 0x4e, 0x17, 0xf6, + 0x8b, 0xaf, 0xab, 0xf5, 0x33, 0x6b, 0x93, 0x33, 0x34, 0x8f, 0xa2, 0xa9, + 0x55, 0x8b, 0xb6, 0x6b, 0xc4, 0x53, 0x40, 0x8e, 0xa5, 0x70, 0xb4, 0x66, + 0xb5, 0x06, 0x95, 0xb0, 0xb3, 0x19, 0x4c, 0xe5, 0x12, 0x31, 0xf8, 0xe0, + 0xab, 0x88, 0xa4, 0x78, 0x8e, 0x43, 0x95, 0x19, 0x47, 0x2e, 0x56, 0x55, + 0xcc, 0xed, 0x4c, 0x8a, 0xf5, 0x1d, 0x6c, 0xf5, 0xfb, 0xa9, 0xac, 0xb1, + 0x1c, 0xef, 0xcc, 0x46, 0xf6, 0xc5, 0x46, 0x56, 0x9d, 0xd6, 0x3a, 0xe1, + 0x69, 0xb5, 0x18, 0xae, 0x62, 0x92, 0x23, 0x6b, 0x3a, 0x12, 0xcd, 0xb8, + 0xa7, 0xfe, 0xda, 0x19, 0x18, 0x23, 0x45, 0xd6, 0x5b, 0xda, 0xe7, 0x43, + 0x99, 0xfb, 0xf5, 0x8d, 0xf5, 0x3b, 0x72, 0x3a, 0xce, 0x4a, 0xf6, 0xb4, + 0x93, 0x2a, 0x80, 0xb7, 0xb6, 0x2a, 0xcd, 0x35, 0xb5, 0x02, 0xa7, 0x0a, + 0x13, 0x38, 0x5b, 0x1b, 0xd5, 0xc7, 0x50, 0xd0, 0x1b, 0x80, 0x79, 0x47, + 0x93, 0xe4, 0x98, 0x00, 0x00, 0x03, 0x95, 0xb7, 0x2c, 0x68, 0x02, 0xcd, + 0xa0, 0xec, 0xa7, 0xcf, 0xca, 0xb0, 0xda, 0x58, 0x1c, 0xc2, 0x8a, 0x7f, + 0x93, 0xf5, 0x9f, 0xf7, 0x9d, 0xce, 0x6d, 0xbc, 0x28, 0x93, 0xd7, 0x28, + 0x63, 0x00, 0x07, 0x50, 0x70, 0xf9, 0xd6, 0x0c, 0x61, 0xb2, 0xa6, 0x85, + 0x52, 0x3e, 0xf7, 0xb2, 0xd0, 0x60, 0x4a, 0x97, 0x53, 0xc1, 0x51, 0x52, + 0x2a, 0xff, 0xff, 0xff, 0xfd, 0x67, 0xf4, 0x8b, 0x83, 0xa1, 0x25, 0x28, + 0x43, 0x2f, 0x1c, 0x26, 0x14, 0x50, 0xb2, 0xd5, 0x00, 0x18, 0x0b, 0xa0, + 0x26, 0x18, 0x16, 0x80, 0x46, 0x98, 0x57, 0x65, 0x0b, 0x1a, 0xc4, 0xe0, + 0xdc, 0x98, 0x31, 0x20, 0x48, 0x18, 0x17, 0xc0, 0x39, 0x98, 0x4f, 0xc0, + 0x45, 0x18, 0x0a, 0x80, 0xa5, 0x98, 0x6d, 0x40, 0xa9, 0x98, 0x08, 0xe0, + 0x1a, 0x94, 0x00, 0xf0, 0x23, 0x00, 0xe4, 0xc0, 0x4d, 0x06, 0x2c, 0xc0, + 0x1c, 0x00, 0x2d, 0x1f, 0x83, 0xf5, 0x40, 0xe6, 0x40, 0xd5, 0x8a, 0xc2, + 0x0e, 0xea, 0xab, 0x85, 0x49, 0x0d, 0x56, 0xaa, 0x54, 0x26, 0x60, 0x9e, + 0x8a, 0x4a, 0x3f, 0x99, 0x0a, 0xe3, 0xf9, 0x2e, 0x78, 0x06, 0xe4, 0x74, + 0x08, 0xbc, 0x47, 0x0e, 0x95, 0x5a, 0x60, 0x84, 0xc0, 0x56, 0x05, 0xc1, + 0x06, 0x42, 0x4d, 0xd2, 0x74, 0xd8, 0x4a, 0x44, 0x9d, 0x3c, 0x18, 0x26, + 0xe2, 0xe8, 0x4c, 0x89, 0x6b, 0x32, 0x3d, 0x10, 0x5f, 0x4c, 0xf0, 0x8e, + 0xbf, 0x8e, 0x28, 0x8b, 0x7b, 0x98, 0xe6, 0x24, 0xe5, 0xbc, 0x43, 0x92, + 0x26, 0xf9, 0xba, 0x85, 0x2e, 0x03, 0x30, 0x73, 0x96, 0x64, 0xe6, 0x19, + 0x94, 0x8c, 0x7a, 0x8d, 0x11, 0x05, 0x7b, 0x95, 0x5e, 0x32, 0xad, 0x28, + 0x12, 0xf9, 0x51, 0x35, 0x2e, 0xe7, 0xd3, 0x7d, 0x97, 0xce, 0x67, 0xac, + 0x70, 0xcf, 0x98, 0x29, 0xf5, 0x54, 0x38, 0xed, 0x6a, 0x48, 0xba, 0x4e, + 0xc3, 0x82, 0x9f, 0xbf, 0x4f, 0x31, 0x2a, 0x52, 0x8e, 0x0f, 0x54, 0x87, + 0xe3, 0x7b, 0x2e, 0x93, 0xcf, 0xd5, 0x2c, 0xdb, 0x6a, 0xb4, 0xf7, 0x57, + 0x31, 0xbb, 0x6b, 0x42, 0xa0, 0xa7, 0x19, 0x18, 0x15, 0x4c, 0x97, 0x6c, + 0x67, 0x4f, 0xe4, 0xd5, 0x63, 0xbd, 0xda, 0x98, 0xdb, 0xd9, 0x9b, 0xa3, + 0xb9, 0x42, 0xc4, 0x07, 0x26, 0x26, 0x3d, 0x32, 0xd9, 0x8d, 0x52, 0xc8, + 0xdd, 0x98, 0xd1, 0x5b, 0x6e, 0xd6, 0xa4, 0x6f, 0xd2, 0xb1, 0x48, 0xbf, + 0x0a, 0xac, 0xa6, 0x59, 0xd4, 0xaf, 0x6d, 0x55, 0xa2, 0x13, 0xe4, 0xf1, + 0x58, 0x7e, 0x3f, 0x67, 0x3a, 0x53, 0x8b, 0xa4, 0xdb, 0x22, 0x58, 0xbf, + 0x93, 0xe4, 0xf0, 0xe7, 0x31, 0x0e, 0xb1, 0xc2, 0x77, 0xa4, 0x05, 0xee, + 0xeb, 0x50, 0x13, 0xd3, 0x87, 0x62, 0xa6, 0x4d, 0xa0, 0xc9, 0x4e, 0x23, + 0x34, 0x60, 0x94, 0x24, 0xf2, 0x10, 0x3d, 0x20, 0x5e, 0xc0, 0x31, 0x06, + 0x96, 0x6c, 0x90, 0x2c, 0xba, 0xbf, 0xb2, 0x32, 0x5a, 0x44, 0x24, 0xc8, + 0xa4, 0xba, 0x15, 0x3d, 0xfd, 0x77, 0xb6, 0x85, 0xff, 0x7c, 0xf4, 0x4f, + 0xdb, 0xff, 0xff, 0xff, 0xfd, 0x5b, 0xb7, 0xff, 0xd7, 0x47, 0xb6, 0xcf, + 0x42, 0x92, 0xa4, 0x77, 0x44, 0x91, 0x98, 0xb3, 0x9d, 0x17, 0x2b, 0x99, + 0xdc, 0x42, 0xaa, 0x80, 0x03, 0x80, 0x86, 0x30, 0x2d, 0x00, 0x3a, 0x30, + 0xc0, 0xc3, 0x29, 0x36, 0x4b, 0xc1, 0xd0, 0x30, 0x69, 0xc0, 0x73, 0x30, + 0x22, 0x01, 0x08, 0x30, 0x5a, 0x41, 0x8f, 0x30, 0x10, 0x80, 0x76, 0x30, + 0x39, 0x40, 0xe1, 0x10, 0x00, 0x34, 0xe1, 0x98, 0x02, 0xe0, 0x19, 0x18, + 0x33, 0x40, 0x42, 0x18, 0x05, 0xe0, 0x0d, 0x21, 0x48, 0xde, 0x6f, 0x65, + 0x98, 0xb9, 0x1e, 0xb7, 0x2f, 0x89, 0x07, 0x3d, 0x26, 0x0c, 0x34, 0x20, + 0x43, 0x94, 0x2a, 0x12, 0x7c, 0x99, 0x30, 0x52, 0x42, 0x88, 0xf0, 0x55, + 0xa8, 0x09, 0x42, 0x96, 0xc6, 0xff, 0xfb, 0xd4, 0x60, 0x2b, 0x08, 0x89, + 0x2d, 0x75, 0xbe, 0x8b, 0xef, 0xc3, 0x70, 0x34, 0x20, 0x18, 0xfd, 0x00, + 0x43, 0x01, 0x24, 0xf9, 0xd6, 0xfa, 0xaf, 0xbd, 0xed, 0xc1, 0x54, 0xb9, + 0x61, 0xa4, 0x31, 0x89, 0xb9, 0xf9, 0x36, 0x4b, 0xae, 0x17, 0x2e, 0xa4, + 0x4f, 0x9e, 0xa5, 0xd8, 0xe7, 0xaa, 0x60, 0x84, 0x9a, 0x10, 0x0e, 0xa7, + 0xd1, 0x99, 0x10, 0x98, 0xcb, 0x3b, 0x80, 0xea, 0x3b, 0x2e, 0x23, 0x8d, + 0x84, 0x35, 0x23, 0x76, 0xba, 0xef, 0xca, 0x29, 0x31, 0x7c, 0xeb, 0xe4, + 0xee, 0x43, 0x4f, 0x3c, 0x5a, 0x20, 0xf6, 0x46, 0xac, 0xc8, 0x60, 0x38, + 0x72, 0x9f, 0x4f, 0x7c, 0x2a, 0x9a, 0x0a, 0xa7, 0xd4, 0x72, 0xd4, 0x97, + 0x2a, 0x93, 0x0f, 0xec, 0xf5, 0xfb, 0x50, 0x3c, 0x8e, 0x66, 0x53, 0x05, + 0xd3, 0x4e, 0xc6, 0x2e, 0xbb, 0x50, 0xeb, 0xc1, 0x23, 0x94, 0x45, 0x26, + 0x26, 0x6b, 0xd3, 0x3e, 0x71, 0x9b, 0xd2, 0xca, 0x18, 0x06, 0xf5, 0xfb, + 0xb2, 0x58, 0x7e, 0x5b, 0xb7, 0xf3, 0xb5, 0xa8, 0xe6, 0xe1, 0x30, 0xd3, + 0x95, 0x02, 0x42, 0xe6, 0xb0, 0x91, 0x45, 0xb0, 0xb5, 0x25, 0x74, 0x69, + 0xa2, 0xf0, 0x0c, 0xd4, 0x61, 0xd9, 0x89, 0x72, 0x25, 0x41, 0x57, 0xfb, + 0x62, 0x82, 0x09, 0xec, 0xf3, 0x5c, 0x7f, 0xab, 0xc6, 0x27, 0xa7, 0xa5, + 0x53, 0xb0, 0xec, 0xb6, 0x72, 0x34, 0xf8, 0xe3, 0x3d, 0x29, 0xa0, 0xb1, + 0x33, 0x2d, 0xb9, 0x7a, 0x89, 0xf8, 0x8d, 0xd3, 0x72, 0x06, 0x85, 0xd1, + 0x4b, 0xda, 0x6b, 0x58, 0xb3, 0x0c, 0x38, 0x0c, 0xc1, 0x84, 0xc0, 0x73, + 0x91, 0xe4, 0xc2, 0x89, 0xb0, 0x98, 0xc4, 0x7d, 0xff, 0x5f, 0x65, 0xb5, + 0x6a, 0x63, 0xcb, 0x62, 0x4d, 0x19, 0x14, 0xd8, 0x78, 0x00, 0x00, 0x2d, + 0xfa, 0xdb, 0xad, 0x48, 0x0f, 0xf7, 0x24, 0x18, 0x16, 0x02, 0xd6, 0x2d, + 0x0e, 0xb2, 0x18, 0x20, 0x41, 0x21, 0x8b, 0xe0, 0x60, 0x09, 0xa4, 0xb0, + 0x6b, 0xdc, 0x21, 0x2a, 0x3c, 0x16, 0x68, 0x24, 0xe6, 0x58, 0xbf, 0x5f, + 0x62, 0xad, 0x5a, 0x28, 0x7b, 0x2c, 0xb7, 0xff, 0xff, 0xff, 0xfe, 0xbf, + 0xa4, 0x56, 0x80, 0xc8, 0x07, 0xa6, 0x02, 0xe0, 0x18, 0xc6, 0x10, 0x49, + 0x8a, 0x66, 0x94, 0xf8, 0x79, 0x46, 0x07, 0xa8, 0x13, 0x26, 0x00, 0x00, + 0x09, 0x26, 0x13, 0x58, 0x1e, 0x86, 0x01, 0xf8, 0x08, 0x81, 0x40, 0x1f, + 0x0c, 0x01, 0x00, 0x03, 0x42, 0xa0, 0x01, 0x97, 0x20, 0xc1, 0xbf, 0x04, + 0x50, 0x88, 0x0d, 0xc4, 0xfb, 0x22, 0x13, 0xa2, 0xc0, 0x5d, 0x0b, 0x79, + 0xb2, 0xe2, 0x2d, 0x06, 0xb2, 0x1e, 0x2b, 0x8b, 0x96, 0xb6, 0x43, 0xe9, + 0x1c, 0x58, 0x4c, 0x40, 0x3f, 0x90, 0x03, 0x24, 0xc2, 0x31, 0x49, 0xfc, + 0x53, 0x98, 0xe6, 0x45, 0x1e, 0x02, 0x85, 0x0e, 0x43, 0x49, 0x20, 0xf5, + 0xa5, 0x54, 0x48, 0x6b, 0x4b, 0x01, 0x8c, 0x30, 0x0c, 0x13, 0x11, 0x48, + 0x7f, 0x31, 0x13, 0x75, 0x42, 0x54, 0xfd, 0x4b, 0x13, 0xd5, 0x29, 0xcb, + 0xa4, 0x2c, 0x8a, 0x56, 0x29, 0x51, 0x53, 0x96, 0x34, 0x51, 0x08, 0x91, + 0x5a, 0x64, 0x21, 0xa6, 0xea, 0xf1, 0x79, 0x49, 0x26, 0x0f, 0xd3, 0xa9, + 0x09, 0x0c, 0x53, 0xf1, 0x0b, 0x47, 0xd1, 0x14, 0xa1, 0x57, 0x33, 0x26, + 0xe3, 0x30, 0x9d, 0x59, 0x54, 0x78, 0xaa, 0x0a, 0xa7, 0x11, 0x68, 0xd5, + 0xdb, 0x9a, 0x9a, 0x55, 0x03, 0xb5, 0xc3, 0x22, 0x52, 0x25, 0x10, 0x85, + 0xcc, 0x08, 0xac, 0x44, 0xc1, 0x52, 0x79, 0xc4, 0x60, 0x3a, 0x5b, 0xdc, + 0x95, 0xa9, 0xf4, 0x26, 0x09, 0x72, 0xa6, 0x58, 0x0b, 0x13, 0x7a, 0xc1, + 0xde, 0x97, 0xdc, 0x54, 0xe4, 0xcb, 0xb4, 0x7b, 0x0a, 0x12, 0xc6, 0xf9, + 0x0e, 0xf2, 0x69, 0x3a, 0xb0, 0x72, 0xc0, 0x56, 0x9f, 0x0c, 0x30, 0x50, + 0xea, 0x28, 0x5a, 0x22, 0x27, 0x96, 0x97, 0x2b, 0xb6, 0x35, 0x11, 0xc6, + 0xf5, 0xdb, 0x5b, 0xec, 0x4c, 0xdc, 0xbf, 0xa6, 0x26, 0xc5, 0xe8, 0xd1, + 0x14, 0xca, 0xe3, 0xc1, 0x81, 0xc1, 0x91, 0x0d, 0x3c, 0xa1, 0x1d, 0x6f, + 0x1f, 0xa9, 0x20, 0xa1, 0x86, 0x9a, 0x30, 0x91, 0x99, 0x8f, 0x52, 0x44, + 0xf5, 0x10, 0xc6, 0x79, 0xb7, 0x90, 0xe4, 0x38, 0xd2, 0x1e, 0xa0, 0xf4, + 0x23, 0x24, 0xb8, 0x9a, 0x1c, 0x20, 0x6a, 0x0c, 0x40, 0x6a, 0xba, 0x94, + 0x05, 0xfa, 0x92, 0x25, 0x07, 0x0f, 0xe5, 0xa4, 0xa6, 0x4e, 0xb4, 0x88, + 0x34, 0x23, 0xa5, 0x1d, 0xe6, 0xee, 0x6b, 0x9c, 0x26, 0x20, 0xa6, 0xe4, + 0xf4, 0x84, 0x5f, 0xfb, 0x39, 0xaa, 0x4f, 0x53, 0xe6, 0x6c, 0xb3, 0x5d, + 0x6e, 0x8a, 0x8a, 0xca, 0x6a, 0xb7, 0x66, 0x45, 0xff, 0xd9, 0xef, 0xaf, + 0xef, 0x6b, 0xcc, 0xa8, 0x9f, 0xd7, 0xa7, 0xcf, 0xff, 0x6f, 0xdf, 0xfe, + 0xae, 0x9f, 0xdd, 0x6b, 0xa7, 0x9d, 0x15, 0xe4, 0xc8, 0xec, 0x0d, 0x40, + 0x8a, 0x59, 0x88, 0x46, 0x1c, 0x1a, 0x32, 0x3c, 0x00, 0x9d, 0x04, 0x0c, + 0x06, 0x81, 0x7c, 0x54, 0x38, 0x8c, 0x22, 0xfe, 0x0c, 0xdc, 0xf4, 0xf2, + 0x8c, 0x00, 0xc3, 0x24, 0xc0, 0x80, 0x20, 0x4c, 0xa2, 0x82, 0xf0, 0x98, + 0x15, 0x4c, 0x21, 0x42, 0x8c, 0xbd, 0xa6, 0x00, 0xc0, 0x44, 0x60, 0x00, + 0x0b, 0xa6, 0x20, 0x04, 0x1e, 0x60, 0x06, 0x01, 0x25, 0xd8, 0x0d, 0xe3, + 0x49, 0x0c, 0x8e, 0xb4, 0x7b, 0x97, 0x33, 0x19, 0xc0, 0x81, 0x2e, 0xce, + 0x55, 0x29, 0xa6, 0x14, 0x8e, 0x07, 0x93, 0x83, 0x39, 0x3d, 0x4e, 0x8c, + 0x44, 0xa9, 0xb2, 0x23, 0x69, 0xf4, 0xf9, 0xd8, 0x2d, 0x8b, 0x85, 0xe3, + 0xbc, 0xf6, 0xda, 0xb9, 0xae, 0xff, 0xfb, 0xd4, 0x60, 0x2d, 0x88, 0x89, + 0x0a, 0x74, 0xbe, 0x8b, 0xcf, 0xc3, 0x70, 0x4f, 0x24, 0x68, 0x9d, 0x04, + 0x63, 0x4a, 0x23, 0x99, 0xd4, 0xfc, 0xcf, 0x3d, 0xed, 0xc1, 0x4c, 0xba, + 0x21, 0xf0, 0x11, 0x89, 0xb8, 0x45, 0x44, 0xe6, 0xe9, 0xa4, 0x8b, 0x27, + 0x2b, 0x9c, 0x1b, 0xaf, 0xe0, 0x29, 0x2f, 0x3e, 0x0f, 0x55, 0xca, 0xcc, + 0xc9, 0xf7, 0x90, 0x47, 0x62, 0xaf, 0xc3, 0xab, 0x2b, 0x76, 0xdf, 0xd9, + 0x03, 0xb3, 0x0d, 0x5b, 0x72, 0x9d, 0x47, 0xea, 0x06, 0x77, 0x1d, 0x47, + 0x7a, 0x02, 0x73, 0x36, 0xa7, 0x10, 0x04, 0x6a, 0x18, 0x8d, 0x45, 0xa0, + 0xc7, 0x0a, 0x81, 0xf7, 0x7e, 0xdf, 0x1c, 0x27, 0x35, 0x08, 0x8f, 0xc4, + 0xa1, 0x0e, 0xe5, 0x98, 0x0e, 0x33, 0x67, 0x1a, 0xd2, 0xab, 0xd2, 0xf8, + 0x9c, 0x75, 0xef, 0x84, 0x4a, 0xf2, 0x95, 0xc8, 0x70, 0x95, 0xd6, 0x8c, + 0xd3, 0x3e, 0xb1, 0xe6, 0xeb, 0x07, 0xce, 0xd9, 0x86, 0xe0, 0x59, 0xb7, + 0x1f, 0xaf, 0xdc, 0x01, 0x28, 0xe4, 0x1d, 0x2e, 0xbf, 0x05, 0xbf, 0xf1, + 0xea, 0x39, 0x54, 0x2a, 0x5d, 0x05, 0xc3, 0x52, 0x98, 0x85, 0xe8, 0xa6, + 0x37, 0x6c, 0x72, 0x3f, 0x03, 0xd2, 0xcc, 0x63, 0x22, 0xd4, 0x0b, 0x8c, + 0x6e, 0xbc, 0x72, 0x37, 0x76, 0x3f, 0x33, 0x79, 0xd3, 0xc2, 0x1a, 0x84, + 0x58, 0x86, 0xe9, 0xb3, 0x86, 0x5c, 0x29, 0x4e, 0xa1, 0xc8, 0x94, 0xae, + 0xb4, 0x42, 0x47, 0x47, 0x9c, 0xfe, 0x6d, 0x6b, 0x18, 0xf4, 0x61, 0xcb, + 0x5d, 0x4e, 0x9b, 0x7c, 0xfa, 0x4e, 0xbc, 0xf1, 0x18, 0xc6, 0xdc, 0x37, + 0x61, 0xda, 0x62, 0x32, 0xc5, 0x6c, 0x21, 0x24, 0xe3, 0x12, 0x7c, 0xc0, + 0x00, 0x00, 0x1c, 0x8d, 0xcb, 0x23, 0x44, 0x76, 0x63, 0x8e, 0x2e, 0x7f, + 0xf9, 0x9b, 0x28, 0xaa, 0x0e, 0x2c, 0x25, 0xdb, 0x97, 0x9f, 0x3e, 0x69, + 0xb9, 0xd7, 0x22, 0x76, 0x0e, 0x6e, 0x4c, 0x8f, 0x4b, 0xaa, 0xd8, 0x3a, + 0x78, 0x5d, 0x82, 0x10, 0xc1, 0x21, 0x0b, 0x82, 0x33, 0xcf, 0x84, 0xda, + 0x91, 0x53, 0x37, 0x9c, 0x8c, 0x7b, 0x4f, 0xa2, 0xa1, 0x7d, 0xe5, 0xd5, + 0xed, 0xd9, 0xff, 0xff, 0xa7, 0x8e, 0x3a, 0x54, 0xda, 0x04, 0xa1, 0x21, + 0x65, 0x00, 0x86, 0x80, 0x6f, 0x6d, 0x22, 0x15, 0x94, 0x03, 0x06, 0x40, + 0x61, 0x30, 0xb9, 0x07, 0x43, 0x23, 0x2a, 0xeb, 0x3a, 0x08, 0x6b, 0x63, + 0x42, 0x20, 0x48, 0x31, 0x0f, 0x0d, 0x23, 0x13, 0x01, 0x1b, 0x45, 0x13, + 0x00, 0x80, 0xa0, 0x30, 0x03, 0x00, 0xe4, 0x00, 0x98, 0x08, 0x80, 0xd1, + 0x86, 0xd0, 0xfd, 0x02, 0x81, 0xc9, 0x05, 0x50, 0xc5, 0xc1, 0x25, 0x8e, + 0xdc, 0x80, 0x82, 0x9e, 0x14, 0x26, 0x52, 0xec, 0xdf, 0x69, 0x4a, 0x9c, + 0x25, 0xd9, 0x0a, 0x5b, 0x44, 0x92, 0xf6, 0x15, 0x48, 0x93, 0x40, 0x21, + 0x64, 0x14, 0x48, 0x41, 0x60, 0x2c, 0x46, 0xf1, 0x2d, 0x27, 0x03, 0x75, + 0x56, 0x97, 0x25, 0x02, 0x96, 0xb8, 0x37, 0x10, 0xd4, 0x29, 0x56, 0x68, + 0x93, 0x99, 0x1b, 0x8f, 0x12, 0x32, 0xcc, 0x7d, 0x09, 0x31, 0xfe, 0x9e, + 0xca, 0x90, 0xd4, 0x1e, 0x97, 0x44, 0x19, 0x42, 0xda, 0x9d, 0x4f, 0xb3, + 0x2b, 0x4e, 0x22, 0x78, 0xb9, 0x3d, 0x5c, 0xa2, 0xbf, 0x57, 0x2f, 0x9e, + 0xea, 0xa6, 0x0a, 0x2f, 0x1a, 0x46, 0xfd, 0xd8, 0x0b, 0x01, 0xbb, 0x18, + 0xd0, 0x3f, 0xd9, 0xd5, 0x0e, 0x6c, 0x8c, 0x84, 0xe1, 0x50, 0x79, 0x2e, + 0x50, 0xc4, 0x79, 0xc1, 0xb5, 0x7e, 0x53, 0x2c, 0x4c, 0x8e, 0x54, 0x4a, + 0x22, 0x97, 0x08, 0x74, 0x77, 0x05, 0x72, 0x32, 0x36, 0x23, 0x2e, 0x0e, + 0x85, 0x03, 0x33, 0x9a, 0xed, 0xf4, 0x08, 0x69, 0xd7, 0xcf, 0xb1, 0xd5, + 0x92, 0x36, 0x47, 0x8c, 0xaf, 0xc3, 0xa6, 0xf9, 0x99, 0x18, 0xe6, 0x87, + 0x0a, 0x3a, 0xb6, 0xaa, 0x17, 0x6c, 0xea, 0xf5, 0xe5, 0xd3, 0x26, 0xa1, + 0x28, 0x98, 0x9a, 0x94, 0x15, 0x50, 0xc0, 0x79, 0x09, 0x1c, 0xbb, 0x87, + 0x55, 0x65, 0x1c, 0x26, 0x62, 0x8c, 0xdc, 0xac, 0x7f, 0x0d, 0x76, 0x93, + 0x4f, 0x29, 0x97, 0x4d, 0x4f, 0x5e, 0x2e, 0xd8, 0x94, 0x68, 0xc3, 0xc1, + 0x6d, 0x84, 0xfa, 0x44, 0xa8, 0x1b, 0xe6, 0x45, 0x97, 0xa7, 0x11, 0xc5, + 0x93, 0x31, 0x0c, 0x5e, 0x25, 0x4a, 0xc0, 0xeb, 0x06, 0x59, 0x0e, 0x17, + 0x32, 0x60, 0x74, 0x02, 0x84, 0xd7, 0xf9, 0x07, 0x31, 0x15, 0x00, 0x61, + 0x5c, 0x73, 0xa2, 0x34, 0xff, 0x53, 0x70, 0x41, 0xe9, 0x41, 0x92, 0x66, + 0x77, 0x2c, 0xf9, 0xdb, 0xd3, 0xb5, 0x35, 0xc9, 0x3e, 0xd9, 0x91, 0x4a, + 0x66, 0xbd, 0xae, 0xed, 0x99, 0xfa, 0xb2, 0xab, 0x4f, 0x43, 0xe8, 0xce, + 0xed, 0x56, 0x29, 0x1b, 0xdf, 0xf7, 0xf4, 0x52, 0xb7, 0x4f, 0x5f, 0xfd, + 0xff, 0xfd, 0x3f, 0xff, 0xff, 0xfe, 0x8d, 0x6d, 0x77, 0x62, 0xbd, 0x8e, + 0x82, 0x4a, 0xee, 0x30, 0x90, 0x73, 0x4c, 0x48, 0x82, 0x02, 0x91, 0x0e, + 0xe1, 0x21, 0x15, 0x00, 0x69, 0x34, 0x80, 0x0a, 0x06, 0x43, 0x0a, 0x30, + 0xa1, 0x33, 0x08, 0x3c, 0x63, 0xe4, 0xa7, 0x6b, 0x32, 0xa6, 0x01, 0x30, + 0xc1, 0x5e, 0x30, 0xd9, 0x00, 0x80, 0x80, 0x63, 0x30, 0x72, 0x05, 0xd4, + 0x2a, 0x22, 0x00, 0x61, 0x20, 0x34, 0x31, 0x21, 0x0e, 0x90, 0x10, 0x46, + 0x3a, 0xf9, 0x47, 0x29, 0x9b, 0xe2, 0xed, 0x48, 0x3e, 0x8d, 0x22, 0x6c, + 0x63, 0xb2, 0x2a, 0x1b, 0x95, 0x4d, 0xe1, 0xa2, 0x1c, 0x64, 0xf9, 0x22, + 0x9c, 0x42, 0x8b, 0x1a, 0x8d, 0x46, 0xd6, 0x7c, 0x9d, 0x6f, 0xcf, 0x94, + 0x12, 0x76, 0x00, 0xa5, 0x10, 0xff, 0xfb, 0xd4, 0x60, 0x2b, 0x08, 0x88, + 0x84, 0x76, 0x3f, 0xb3, 0xcf, 0x7b, 0x70, 0x4d, 0x84, 0x08, 0xbd, 0x04, + 0xa5, 0x4b, 0x25, 0x01, 0xd8, 0xfa, 0x2f, 0x3f, 0x0d, 0xc1, 0x1e, 0x92, + 0xa2, 0xb4, 0x11, 0x0d, 0x2c, 0x83, 0xb1, 0x20, 0x9b, 0x73, 0x2c, 0x2f, + 0x8e, 0x63, 0xc0, 0xba, 0x30, 0x65, 0x58, 0xc6, 0x92, 0x3c, 0x4b, 0x94, + 0xa6, 0x80, 0x54, 0xbd, 0x5c, 0x1c, 0xc8, 0x4a, 0x1a, 0x7f, 0x96, 0x33, + 0x29, 0x08, 0x57, 0x76, 0x07, 0x34, 0x3c, 0xf1, 0x53, 0x18, 0xa7, 0x8b, + 0xe2, 0x54, 0xaf, 0x44, 0x28, 0x8d, 0xc5, 0x14, 0x36, 0x75, 0x7a, 0x50, + 0xc5, 0x9d, 0x81, 0xf2, 0x89, 0x4d, 0x22, 0x51, 0x52, 0xcf, 0xcd, 0x32, + 0x9d, 0x40, 0xf5, 0x52, 0x86, 0x37, 0xc0, 0x73, 0x60, 0xd2, 0x31, 0xf4, + 0xb4, 0x6b, 0x5c, 0xab, 0x57, 0x6b, 0x8e, 0x88, 0x9d, 0x42, 0xaa, 0x65, + 0x7e, 0xc6, 0xe1, 0x3d, 0x9c, 0x97, 0x31, 0x21, 0x3e, 0xd4, 0x29, 0xd9, + 0x9c, 0x5b, 0xdc, 0x91, 0x2f, 0x6a, 0xae, 0x43, 0x99, 0xa2, 0x3c, 0xde, + 0x19, 0x2f, 0xba, 0x46, 0x60, 0x81, 0x2b, 0x8c, 0x16, 0x58, 0xcc, 0x91, + 0x5f, 0xe9, 0xe5, 0x20, 0x47, 0x4e, 0xc2, 0x7f, 0x36, 0x55, 0xcc, 0xd5, + 0x8e, 0xa4, 0x73, 0x7c, 0xa2, 0x83, 0x15, 0xaa, 0x2a, 0x82, 0xaf, 0xd7, + 0x8d, 0xc6, 0xaf, 0x0d, 0xa9, 0x8d, 0xe5, 0x5d, 0x35, 0xbc, 0x56, 0x39, + 0x1f, 0x2a, 0xd2, 0x8d, 0x80, 0xdd, 0x5d, 0x55, 0x81, 0x80, 0xb1, 0x14, + 0x84, 0x9d, 0x0e, 0x19, 0x8a, 0x81, 0x3f, 0x15, 0x8a, 0x36, 0x36, 0xa0, + 0x00, 0x00, 0x39, 0x7b, 0x73, 0x36, 0x40, 0x0f, 0xe8, 0xde, 0xbf, 0x33, + 0xab, 0x30, 0xb3, 0xb8, 0x14, 0xc1, 0x16, 0x26, 0x47, 0xa3, 0x53, 0x2a, + 0xd1, 0x68, 0x2c, 0x64, 0x90, 0x1a, 0xae, 0x21, 0x18, 0x26, 0xa6, 0x12, + 0x27, 0x0a, 0x83, 0x0e, 0x17, 0x11, 0x03, 0x0a, 0x4c, 0xb2, 0x94, 0xb7, + 0x7a, 0xc9, 0x20, 0xb9, 0x42, 0x76, 0x35, 0x7c, 0x5d, 0x6c, 0x87, 0x5b, + 0x3a, 0xb7, 0xa2, 0xb2, 0x37, 0x3d, 0xbf, 0xff, 0xec, 0xe2, 0xfb, 0x35, + 0x17, 0x58, 0xd5, 0x4d, 0x0e, 0x08, 0x0c, 0x12, 0x41, 0xf8, 0xc0, 0xf8, + 0x50, 0x4c, 0x14, 0x73, 0xb0, 0xf3, 0x95, 0x3f, 0xcc, 0x5b, 0xc4, 0x18, + 0xc1, 0x28, 0x2d, 0x4c, 0x16, 0x82, 0xa0, 0x2a, 0x09, 0x26, 0x25, 0x60, + 0x98, 0x60, 0x0c, 0x01, 0xd6, 0xc1, 0x20, 0x28, 0x63, 0x0c, 0x15, 0x00, + 0xa0, 0x38, 0x68, 0x02, 0x74, 0x5f, 0x16, 0xd4, 0x47, 0x89, 0xba, 0x46, + 0x09, 0xf3, 0x91, 0xbe, 0x7c, 0x0b, 0x93, 0x7a, 0x44, 0xb9, 0x3f, 0x1d, + 0xad, 0xc3, 0x0c, 0x82, 0x16, 0x25, 0x82, 0x78, 0x60, 0x25, 0x57, 0x8e, + 0x21, 0x7c, 0x6e, 0xae, 0xd1, 0x6a, 0xc3, 0x95, 0x0c, 0x39, 0x0d, 0xf6, + 0xf2, 0xda, 0x52, 0xab, 0x19, 0x0e, 0xa5, 0x12, 0x31, 0x5c, 0x37, 0xcd, + 0xd3, 0x84, 0xb9, 0xb5, 0x99, 0x23, 0xea, 0xd3, 0xd9, 0x73, 0xd8, 0xd6, + 0x1e, 0x2b, 0x8f, 0x43, 0xf8, 0xd6, 0xb4, 0xeb, 0x45, 0xdd, 0xf9, 0x8c, + 0x2e, 0x42, 0xec, 0xda, 0x8a, 0x5b, 0xaf, 0x4b, 0x30, 0xe8, 0x44, 0x22, + 0x30, 0xfd, 0x0c, 0x4a, 0x76, 0x1b, 0xa6, 0x78, 0xe0, 0x19, 0xea, 0x59, + 0xc9, 0x3c, 0x4a, 0x57, 0x9c, 0x02, 0xf8, 0x58, 0x8e, 0xbe, 0xf7, 0x5e, + 0xc8, 0xd4, 0xfc, 0x6a, 0x62, 0xa3, 0xe9, 0x1b, 0xc6, 0xc6, 0x10, 0xfc, + 0xae, 0x40, 0xf6, 0x5b, 0x9d, 0xa9, 0x4b, 0x5e, 0x2c, 0xe3, 0xc6, 0x25, + 0x91, 0x77, 0x92, 0x16, 0xfb, 0x59, 0x89, 0x43, 0xb8, 0xc5, 0x69, 0xe6, + 0x69, 0xa2, 0x96, 0xec, 0xce, 0x3b, 0x74, 0xf1, 0xd6, 0xe3, 0x11, 0x93, + 0xdb, 0xb1, 0x4b, 0x1a, 0x83, 0xe8, 0xa9, 0x22, 0xf1, 0xb8, 0xb4, 0x32, + 0xfc, 0x52, 0xd5, 0xaf, 0x2b, 0x99, 0x9e, 0x91, 0xd3, 0x41, 0x32, 0x68, + 0x72, 0xe4, 0x86, 0x72, 0x1e, 0xca, 0x0e, 0x95, 0xd1, 0x40, 0x93, 0x56, + 0xa5, 0x6d, 0x7e, 0x2b, 0x1f, 0x7a, 0x79, 0x2d, 0xa9, 0x24, 0x98, 0x7d, + 0x60, 0x3a, 0x27, 0x59, 0xc6, 0x83, 0x9d, 0x4b, 0xd2, 0x79, 0x56, 0x0d, + 0x6e, 0x43, 0x51, 0xcb, 0x6b, 0xec, 0x32, 0x35, 0x0d, 0x2c, 0x9e, 0x3e, + 0xf0, 0xc4, 0xbd, 0x2d, 0x12, 0x1e, 0x38, 0x20, 0x18, 0xe0, 0x16, 0x63, + 0x67, 0x11, 0xb6, 0x92, 0x8d, 0x00, 0x03, 0x91, 0x09, 0xbf, 0xa6, 0x61, + 0x07, 0x47, 0x6e, 0xcd, 0x4e, 0xd3, 0x22, 0x2d, 0xf2, 0xec, 0x85, 0x4b, + 0xe1, 0x11, 0x19, 0x4a, 0xae, 0x10, 0xd6, 0x7c, 0x1a, 0xf0, 0x94, 0x4a, + 0x38, 0xd3, 0xcc, 0x91, 0x5b, 0x16, 0x01, 0x38, 0xd2, 0xc8, 0x98, 0xb1, + 0xeb, 0x5a, 0xa8, 0xb4, 0xf9, 0x63, 0xaf, 0xa0, 0x4f, 0xff, 0xff, 0xff, + 0xec, 0xb9, 0xb1, 0x47, 0x8b, 0x65, 0x94, 0x07, 0x60, 0xe1, 0x77, 0x99, + 0x5a, 0x04, 0x0c, 0x05, 0x30, 0x0f, 0x8c, 0x0b, 0xe0, 0x19, 0xcc, 0x28, + 0x51, 0xf1, 0x0d, 0x64, 0x90, 0x13, 0x8c, 0x1d, 0xb0, 0x08, 0x06, 0x81, + 0x81, 0x30, 0x28, 0x00, 0x29, 0x12, 0x02, 0x44, 0xc1, 0x74, 0x00, 0x80, + 0x0a, 0x00, 0x69, 0x40, 0x01, 0x09, 0xf2, 0x60, 0xf4, 0x80, 0x2e, 0x60, + 0x2e, 0x00, 0x1b, 0x42, 0x48, 0xc9, 0x52, 0xa0, 0xfc, 0x3f, 0x09, 0x5b, + 0x04, 0x06, 0x22, 0x84, 0xbe, 0x0c, 0x48, 0x86, 0x19, 0x52, 0x7d, 0x9d, + 0x64, 0xfd, 0xf9, 0x7e, 0x35, 0xe0, 0x35, 0x0e, 0x11, 0x4b, 0x86, 0x7a, + 0x19, 0x8e, 0x68, 0x4c, 0x12, 0x5a, 0x5c, 0xd5, 0x09, 0x65, 0x79, 0xcc, + 0x4f, 0x55, 0xa6, 0xb3, 0x6a, 0xff, 0xfb, 0xd4, 0x60, 0x32, 0x09, 0x89, + 0x43, 0x74, 0xbe, 0x0b, 0xef, 0x7b, 0x70, 0x4c, 0x64, 0xe8, 0x9d, 0x04, + 0x63, 0x4a, 0x24, 0x99, 0xd6, 0xfa, 0xaf, 0xbd, 0xed, 0xc1, 0x69, 0xba, + 0x21, 0x58, 0x11, 0x95, 0xb8, 0x74, 0xbc, 0x08, 0xc0, 0x8d, 0x2a, 0xd4, + 0x47, 0x7b, 0xe2, 0x77, 0x2a, 0xf9, 0xe2, 0xba, 0x5e, 0x4c, 0xab, 0x44, + 0xdc, 0xfd, 0x34, 0x13, 0xca, 0xe4, 0xe8, 0x91, 0x10, 0x74, 0x99, 0x40, + 0x3c, 0xc5, 0x8a, 0x55, 0x4a, 0x1d, 0x84, 0x29, 0x09, 0x5f, 0x6a, 0x2f, + 0xc8, 0xb5, 0x62, 0xa9, 0xa9, 0xbd, 0x8c, 0x57, 0x1a, 0x19, 0xd6, 0x55, + 0xcb, 0x47, 0xd2, 0x99, 0x91, 0x5c, 0x8e, 0x7c, 0xbf, 0x3b, 0xf2, 0xea, + 0x4a, 0x14, 0xca, 0x14, 0x4b, 0x5a, 0x55, 0x36, 0x4e, 0x0e, 0x27, 0x05, + 0x03, 0x63, 0x52, 0x4d, 0x14, 0xc6, 0x85, 0x30, 0x47, 0x5c, 0x42, 0x54, + 0x1a, 0x2e, 0x2f, 0xe2, 0x9f, 0xce, 0x07, 0x01, 0xa2, 0xa6, 0x54, 0xa9, + 0x12, 0x48, 0x63, 0xc3, 0x85, 0x5a, 0xa8, 0x40, 0x98, 0x8a, 0x64, 0x72, + 0x98, 0xf0, 0x67, 0x5d, 0xa0, 0x58, 0xd2, 0xca, 0x24, 0xfb, 0x72, 0xa1, + 0x0a, 0x4f, 0xbc, 0x44, 0x21, 0x0e, 0xe0, 0x9e, 0x6a, 0xa8, 0x8f, 0xb2, + 0xde, 0xad, 0x8f, 0x85, 0x6b, 0xd9, 0x5b, 0x13, 0xd1, 0x1a, 0x10, 0xd7, + 0x94, 0xcb, 0xa7, 0x04, 0xad, 0x5f, 0xac, 0xa9, 0x8d, 0xd6, 0x73, 0x1c, + 0xee, 0x9d, 0xf1, 0x8a, 0xfd, 0x0c, 0x57, 0x1b, 0x0a, 0x21, 0xf4, 0x22, + 0x08, 0x12, 0x60, 0xb0, 0x74, 0x0f, 0xd4, 0x6a, 0x31, 0xe1, 0x2b, 0x0c, + 0xc1, 0x8c, 0x20, 0x04, 0x18, 0x07, 0x50, 0x90, 0x99, 0x40, 0x00, 0x00, + 0x4e, 0xc8, 0xe3, 0x91, 0xa2, 0x17, 0x77, 0x3f, 0xbf, 0xfc, 0xda, 0x20, + 0xb6, 0x65, 0x47, 0xc8, 0xba, 0x5a, 0x53, 0x78, 0xbf, 0x6e, 0x15, 0x2e, + 0x0a, 0x69, 0x9f, 0xf0, 0xf3, 0x3a, 0x68, 0xdd, 0x3a, 0x52, 0xdc, 0x71, + 0xc9, 0x79, 0x3c, 0x0a, 0x9a, 0xc9, 0x44, 0x83, 0x0a, 0x1b, 0x11, 0x19, + 0xd0, 0x94, 0x86, 0xf1, 0x4b, 0x9a, 0xfe, 0x8d, 0xff, 0xff, 0xff, 0x59, + 0xa8, 0x5c, 0xa8, 0xf9, 0x05, 0x84, 0x41, 0xe7, 0x19, 0x2a, 0x83, 0x0b, + 0x30, 0x54, 0x23, 0x30, 0x02, 0xc0, 0x0b, 0x30, 0x1b, 0x00, 0x84, 0x30, + 0x6c, 0xc4, 0xb3, 0x34, 0x19, 0x42, 0x5a, 0x30, 0x38, 0xc0, 0x6d, 0x30, + 0x14, 0x80, 0x52, 0x30, 0x1e, 0xc0, 0x59, 0x24, 0x00, 0x90, 0xc0, 0xe5, + 0x03, 0x1c, 0xc0, 0x04, 0x00, 0x05, 0x2a, 0x8c, 0x00, 0x30, 0x08, 0x4c, + 0x19, 0x40, 0x47, 0xc4, 0x80, 0x73, 0x5c, 0x82, 0x39, 0xcc, 0x59, 0xd7, + 0xd4, 0x65, 0xd5, 0x0c, 0x82, 0xaa, 0x0c, 0x49, 0xc3, 0x70, 0xdc, 0x42, + 0x51, 0x61, 0xf6, 0x8a, 0x38, 0x55, 0x03, 0xe9, 0x0f, 0x67, 0x0e, 0x8a, + 0x28, 0x0a, 0x05, 0x1c, 0x22, 0xe4, 0x7e, 0xae, 0xcb, 0x7a, 0xe9, 0x14, + 0x7a, 0x19, 0x4b, 0xe7, 0x18, 0xb4, 0x16, 0x11, 0xd2, 0x99, 0x1d, 0x49, + 0x34, 0x62, 0x8c, 0xd3, 0x73, 0x84, 0x7f, 0x32, 0x99, 0x07, 0xb9, 0xda, + 0x4a, 0x22, 0x1f, 0xc7, 0xc2, 0x05, 0x0c, 0x49, 0x1a, 0x23, 0xdc, 0xe9, + 0x42, 0xa4, 0x39, 0x11, 0x85, 0xd9, 0x56, 0x84, 0xb5, 0xa1, 0xea, 0x2c, + 0x13, 0x85, 0x41, 0xbe, 0x77, 0x1d, 0x28, 0xb5, 0x6c, 0xcd, 0x4c, 0xa6, + 0xec, 0x33, 0xcd, 0x65, 0xfc, 0x62, 0xfc, 0xac, 0x7e, 0xcc, 0x9a, 0x49, + 0x29, 0x8d, 0xd7, 0x93, 0x28, 0x68, 0xae, 0x66, 0xa7, 0x5d, 0x41, 0x73, + 0x91, 0x85, 0x08, 0xdc, 0xed, 0xa9, 0x54, 0xd2, 0x96, 0x3a, 0xee, 0x22, + 0xc3, 0xd4, 0x42, 0x29, 0x0c, 0x61, 0x9d, 0x0a, 0x6e, 0x8b, 0x1d, 0x76, + 0x91, 0x6a, 0x4e, 0xb5, 0x23, 0xd6, 0x93, 0x10, 0xa1, 0x3c, 0x4c, 0x32, + 0xb8, 0xdd, 0xe1, 0xf8, 0x76, 0xab, 0xd4, 0xe8, 0x95, 0xda, 0x37, 0x2d, + 0xec, 0x91, 0x59, 0x60, 0x27, 0x1e, 0x33, 0x26, 0xd9, 0x18, 0x20, 0xbf, + 0x7a, 0x98, 0x9d, 0x52, 0xa3, 0x6e, 0x39, 0x93, 0xae, 0xd4, 0xc9, 0x5b, + 0x24, 0x14, 0xc9, 0xb4, 0x73, 0xd5, 0x99, 0x91, 0x37, 0x95, 0x40, 0x96, + 0x51, 0xc4, 0x51, 0xaf, 0x2e, 0x11, 0xaf, 0x91, 0x4c, 0xa9, 0x43, 0xc8, + 0xfc, 0x27, 0x84, 0xb8, 0x5c, 0x8a, 0x13, 0xc6, 0x39, 0xfa, 0x2c, 0xc2, + 0x94, 0x32, 0x48, 0xf0, 0x62, 0x0f, 0x83, 0xb7, 0x72, 0x06, 0x40, 0xb0, + 0x88, 0x40, 0x16, 0x23, 0xe5, 0xe6, 0x80, 0x89, 0x5d, 0xed, 0xf9, 0x9d, + 0xca, 0x13, 0x7c, 0x27, 0x0e, 0xd8, 0xdd, 0x33, 0x22, 0x45, 0x82, 0xa3, + 0x75, 0x18, 0xa8, 0x31, 0x4d, 0x11, 0x41, 0x84, 0x98, 0xee, 0x9b, 0xb1, + 0x1d, 0x6a, 0xf7, 0x6b, 0x2e, 0xe6, 0xfd, 0xd2, 0x8b, 0xd6, 0x9e, 0x9b, + 0x7f, 0xfd, 0xff, 0xd5, 0x5f, 0x7f, 0xd9, 0xed, 0x95, 0xd9, 0xba, 0x7f, + 0xd7, 0xe8, 0xef, 0x6d, 0x8b, 0x39, 0x2e, 0xf2, 0x58, 0xac, 0x32, 0x52, + 0x89, 0xa1, 0xcc, 0x34, 0x7c, 0x20, 0x20, 0xe7, 0x0f, 0xaa, 0x88, 0xc9, + 0x1f, 0x30, 0x0a, 0x04, 0x33, 0x01, 0x20, 0xea, 0x30, 0xbd, 0xa7, 0x53, + 0xa4, 0x53, 0x3c, 0x30, 0x2b, 0x09, 0x72, 0xb0, 0x08, 0x30, 0xef, 0x02, + 0xc0, 0xb8, 0x22, 0x98, 0x2d, 0x88, 0xf1, 0x80, 0xc8, 0x01, 0x03, 0x80, + 0x44, 0xc0, 0x00, 0x05, 0x8c, 0x52, 0x47, 0x60, 0xaa, 0x00, 0x48, 0xfe, + 0xd6, 0xb9, 0x3b, 0x0e, 0x15, 0xda, 0x7c, 0x96, 0x39, 0x9c, 0x91, 0x5c, + 0xc9, 0xe8, 0xf8, 0x4e, 0x0e, 0x63, 0xc4, 0x7f, 0x09, 0xa1, 0x00, 0x54, + 0x88, 0xd1, 0x7a, 0x34, 0xf0, 0xff, 0xfb, 0xd4, 0x60, 0x26, 0x0f, 0x89, + 0x16, 0x76, 0x3e, 0x03, 0xcf, 0x7b, 0x70, 0x5c, 0x8e, 0xa8, 0x5c, 0x08, + 0xe5, 0x6e, 0x22, 0x95, 0xd8, 0xfa, 0x0f, 0x3d, 0xed, 0xc1, 0x4b, 0xb5, + 0xa1, 0xe4, 0x11, 0x89, 0xb9, 0x94, 0x53, 0x2c, 0x13, 0x45, 0x2b, 0x00, + 0xb2, 0x1f, 0xe2, 0x64, 0x3b, 0xc3, 0xad, 0xcc, 0xb0, 0x93, 0x03, 0x4c, + 0x9e, 0x90, 0x26, 0x3a, 0x9f, 0x2a, 0xc2, 0xe2, 0x89, 0x2e, 0xe7, 0x5b, + 0xb3, 0xed, 0xe2, 0xed, 0x0e, 0x46, 0x1f, 0x2c, 0xf6, 0x5d, 0x92, 0x54, + 0xfa, 0x90, 0xfe, 0x2f, 0x87, 0xab, 0x32, 0xda, 0x09, 0x74, 0xcc, 0x3b, + 0xd0, 0x0f, 0x11, 0x6a, 0x3a, 0x1e, 0x04, 0x2f, 0x4a, 0xf5, 0xc9, 0xc6, + 0xdb, 0x19, 0xa0, 0xfc, 0x88, 0xe9, 0xa9, 0x1c, 0xf6, 0x0a, 0x7d, 0x69, + 0x09, 0x5d, 0x90, 0x84, 0x49, 0x7e, 0x54, 0x9a, 0x29, 0xf8, 0xb1, 0xa5, + 0x31, 0x22, 0xa2, 0xd4, 0xe8, 0x6a, 0xb0, 0xb6, 0x21, 0x06, 0x4c, 0x06, + 0x67, 0x38, 0xd0, 0x10, 0x2c, 0x49, 0x74, 0x62, 0x1a, 0xe1, 0x08, 0xd3, + 0x3c, 0xa4, 0x3d, 0x0e, 0x13, 0x65, 0x66, 0x67, 0x46, 0x0d, 0x9f, 0xbd, + 0x7c, 0xf5, 0x8a, 0x65, 0xe6, 0x05, 0xca, 0x49, 0xdb, 0x62, 0x3c, 0xe9, + 0x80, 0x7b, 0xed, 0xf3, 0xd5, 0x3a, 0xe2, 0xbd, 0x62, 0x78, 0xeb, 0xa6, + 0x26, 0x26, 0x4a, 0x39, 0x27, 0x90, 0xea, 0xb1, 0x36, 0x9d, 0x0c, 0x8e, + 0x68, 0xa7, 0x6a, 0xe8, 0xa9, 0x86, 0xe7, 0x3b, 0x21, 0x95, 0x4f, 0xa1, + 0x67, 0x3b, 0xd5, 0x02, 0x10, 0xa7, 0x2f, 0x8c, 0xad, 0xa8, 0xe7, 0xaa, + 0x46, 0x46, 0xe3, 0x25, 0x52, 0x41, 0x0a, 0xc3, 0xd8, 0xa4, 0x08, 0x2a, + 0x44, 0x69, 0x20, 0x8d, 0x00, 0xb5, 0x0d, 0x00, 0x1d, 0x42, 0x4e, 0x00, + 0xc3, 0x1c, 0x73, 0xa0, 0x00, 0x00, 0x08, 0xa8, 0x03, 0x48, 0x03, 0xd1, + 0xc6, 0x18, 0x97, 0x3f, 0xdc, 0xc1, 0xba, 0xb1, 0xe7, 0x39, 0xf1, 0xb0, + 0x59, 0x8a, 0x37, 0x4d, 0x7f, 0xdf, 0xa2, 0x59, 0x6c, 0xb7, 0x57, 0x5f, + 0x2b, 0x33, 0x51, 0xf7, 0x36, 0x8e, 0x8c, 0x79, 0x9d, 0x18, 0xa9, 0xd5, + 0x52, 0x95, 0x73, 0xd1, 0x36, 0xc8, 0xf5, 0xf6, 0xdf, 0xf4, 0xf5, 0x27, + 0xf5, 0xff, 0xcd, 0xed, 0x5f, 0xfd, 0xbf, 0x75, 0xae, 0x96, 0xa3, 0xce, + 0xca, 0xd6, 0x55, 0x53, 0x3a, 0x18, 0xb7, 0x15, 0x39, 0x8a, 0x3d, 0x5c, + 0x34, 0x56, 0x82, 0xc9, 0x16, 0x41, 0x61, 0x42, 0xb2, 0x9d, 0x08, 0x35, + 0x0c, 0x05, 0x00, 0xd4, 0xc0, 0x74, 0x2d, 0x8c, 0x1d, 0x26, 0x1c, 0xc3, + 0xa8, 0x7b, 0x0c, 0x22, 0x01, 0x54, 0x54, 0x04, 0xcc, 0x32, 0x80, 0xc8, + 0xc0, 0x38, 0x08, 0x0c, 0x4f, 0x03, 0x2c, 0x14, 0x01, 0x6b, 0xc0, 0x2e, + 0x05, 0xa6, 0x0e, 0xc3, 0xfa, 0x02, 0x01, 0xb6, 0xec, 0xaf, 0x7c, 0x8f, + 0x3f, 0x0b, 0x72, 0x24, 0x39, 0x98, 0x5c, 0x8f, 0x05, 0x7d, 0x5b, 0x4b, + 0xcb, 0x1a, 0x20, 0xe7, 0x3d, 0xcc, 0xe3, 0xec, 0x52, 0x0b, 0xd9, 0x88, + 0x7a, 0x1c, 0x44, 0xb1, 0xf8, 0xf5, 0x9f, 0x03, 0xb0, 0xeb, 0x4d, 0x1c, + 0x86, 0x21, 0x92, 0xc6, 0xac, 0x18, 0x68, 0xc2, 0x4a, 0x97, 0x76, 0x74, + 0x2b, 0x59, 0x56, 0xce, 0xe6, 0xc7, 0x14, 0xf6, 0x50, 0xe4, 0x01, 0xc6, + 0xae, 0xaa, 0x95, 0xc0, 0xbe, 0xa8, 0x97, 0x6a, 0xb8, 0x46, 0xc3, 0xd4, + 0xc2, 0xc3, 0x2c, 0x65, 0xb5, 0x87, 0x7a, 0x30, 0x52, 0xcc, 0x92, 0xc8, + 0x9d, 0x61, 0x80, 0xac, 0x8f, 0x92, 0xf8, 0xde, 0xd5, 0x46, 0xa5, 0x4e, + 0x1f, 0x36, 0xb0, 0xb3, 0x41, 0x95, 0xf4, 0x67, 0xeb, 0xb6, 0x48, 0x2a, + 0xd7, 0x24, 0x31, 0x8a, 0x92, 0xbc, 0x8c, 0x9b, 0x45, 0x12, 0x67, 0xca, + 0x5a, 0x50, 0xf0, 0x6f, 0xd2, 0x8d, 0xad, 0xeb, 0x7c, 0x25, 0x53, 0xc3, + 0x45, 0x45, 0x63, 0x99, 0x3a, 0xed, 0x90, 0xfc, 0x61, 0x8e, 0x84, 0x5a, + 0x64, 0x65, 0x5d, 0xa4, 0x13, 0xae, 0x1d, 0xc2, 0x01, 0xda, 0x69, 0xa3, + 0x97, 0x8e, 0x78, 0x8e, 0x2d, 0xc8, 0x72, 0xdb, 0xb5, 0x42, 0xe9, 0xcd, + 0x80, 0xc0, 0x84, 0xc4, 0xce, 0xee, 0x1b, 0x6a, 0xfd, 0xd9, 0x62, 0x29, + 0x9d, 0xae, 0x61, 0xbe, 0x72, 0x7c, 0xb8, 0x66, 0xeb, 0x0a, 0x74, 0x3a, + 0xae, 0x6c, 0xca, 0x25, 0x69, 0x80, 0xdc, 0xb6, 0x5d, 0x55, 0x6b, 0x84, + 0x2d, 0x50, 0xa5, 0x35, 0x4b, 0x6a, 0xac, 0xdd, 0x31, 0x51, 0x68, 0x93, + 0x99, 0x1d, 0x04, 0xfc, 0x19, 0x43, 0x81, 0xf0, 0x70, 0x8b, 0x79, 0x96, + 0xd2, 0x4d, 0x55, 0xfd, 0x01, 0x64, 0x61, 0x02, 0x26, 0xeb, 0x27, 0xbe, + 0xa5, 0xa6, 0x5e, 0x44, 0xd4, 0x8b, 0x5f, 0xec, 0x32, 0xd3, 0x4d, 0x9e, + 0x59, 0xe4, 0xa2, 0xfb, 0x14, 0x62, 0x76, 0xe9, 0x7d, 0x50, 0x2c, 0xea, + 0xc8, 0xc5, 0x63, 0x96, 0x42, 0x0f, 0x23, 0xa6, 0xce, 0xf4, 0xdd, 0x5d, + 0xe9, 0xda, 0xaf, 0x90, 0x9f, 0xa3, 0x19, 0x28, 0xfa, 0xbf, 0xff, 0xa7, + 0xfd, 0x3f, 0xaf, 0xfa, 0xff, 0xfd, 0x52, 0x8f, 0xa5, 0x51, 0xcc, 0xee, + 0x57, 0x9c, 0xb0, 0x6e, 0x31, 0x51, 0xc2, 0x36, 0xb2, 0xbb, 0x8e, 0x31, + 0x30, 0x12, 0x01, 0xb3, 0x03, 0x30, 0x76, 0x30, 0xd4, 0x79, 0xd3, 0x65, + 0x40, 0xe6, 0x30, 0x98, 0x03, 0x73, 0x03, 0x10, 0x46, 0x30, 0x56, 0x07, + 0x54, 0x13, 0x18, 0x98, 0x80, 0xc1, 0x80, 0x50, 0x08, 0x37, 0x31, 0x50, + 0x0c, 0x30, 0x9a, 0x22, 0x03, 0x00, 0xf0, 0x0a, 0x6e, 0xa3, 0x94, 0xba, + 0xb2, 0x8e, 0x54, 0x42, 0x5c, 0xfa, 0x88, 0xe9, 0x11, 0x29, 0x3b, 0x25, + 0xae, 0x6b, 0x94, 0xa3, 0x12, 0xff, 0xfb, 0xd4, 0x60, 0x20, 0x89, 0x88, + 0xdf, 0x76, 0x3e, 0x83, 0xcf, 0x7b, 0x70, 0x57, 0x4d, 0xf8, 0x79, 0x04, + 0x62, 0x6e, 0x62, 0x35, 0xd8, 0xfc, 0xaf, 0x3d, 0xed, 0xc1, 0x27, 0x8e, + 0xa2, 0x74, 0x11, 0x8d, 0x2c, 0x18, 0x93, 0x21, 0x04, 0x05, 0x38, 0x5d, + 0x48, 0x09, 0x04, 0x55, 0x21, 0xa5, 0xcd, 0x09, 0x2d, 0x51, 0xa8, 0xf2, + 0x48, 0xae, 0x26, 0x79, 0x51, 0x9c, 0x8f, 0xd2, 0x88, 0xe5, 0x4b, 0x32, + 0xd9, 0x8c, 0x80, 0x86, 0x84, 0x87, 0x1c, 0x05, 0x24, 0x8c, 0xaa, 0x46, + 0x9b, 0xa1, 0x6a, 0xb2, 0xf2, 0x98, 0x32, 0x49, 0xb5, 0x15, 0xcd, 0x8f, + 0x58, 0x95, 0xf2, 0x2a, 0x49, 0xd2, 0x12, 0x7c, 0x9a, 0x27, 0x8a, 0x1a, + 0xda, 0x3f, 0xda, 0x60, 0x5d, 0x6d, 0x38, 0x9f, 0x2f, 0x8c, 0xa8, 0x98, + 0x47, 0x06, 0x52, 0xb1, 0x53, 0x18, 0x43, 0x5b, 0x96, 0xa6, 0x66, 0x88, + 0xac, 0x46, 0xc2, 0x6f, 0xab, 0x4c, 0xee, 0x07, 0x31, 0xbc, 0xc0, 0xc8, + 0xab, 0x43, 0x4d, 0xd4, 0x39, 0x3c, 0x8e, 0x56, 0x24, 0xdf, 0xa2, 0xd1, + 0xd0, 0xe2, 0x59, 0x59, 0x0d, 0x1c, 0x9e, 0x34, 0x17, 0x28, 0x43, 0x84, + 0x24, 0xbb, 0x82, 0x81, 0x3e, 0x99, 0x4a, 0x21, 0x0d, 0xda, 0x39, 0xa1, + 0xc4, 0x57, 0xac, 0xb0, 0xb6, 0x29, 0xa1, 0x23, 0x4f, 0xf5, 0x63, 0x2b, + 0x9a, 0xa1, 0x12, 0xd3, 0x75, 0x56, 0x97, 0x2c, 0x73, 0x21, 0x31, 0xe2, + 0xce, 0xcc, 0xda, 0xca, 0xd7, 0x49, 0x21, 0x48, 0x81, 0x52, 0xc7, 0x88, + 0xa0, 0x7c, 0x8c, 0x51, 0x2b, 0x99, 0x60, 0x17, 0xe7, 0xab, 0x48, 0xd5, + 0x94, 0x2a, 0x39, 0xd6, 0xc4, 0xb4, 0x29, 0x6d, 0xa8, 0x6a, 0x64, 0x3a, + 0x51, 0xc7, 0x6b, 0xd6, 0x1d, 0x04, 0x79, 0x81, 0x46, 0x1d, 0xc1, 0x2c, + 0x14, 0x91, 0x82, 0x0c, 0x13, 0xa1, 0x81, 0x36, 0x00, 0x03, 0xfc, 0x5b, + 0xd2, 0x06, 0x6e, 0xa5, 0x8d, 0x10, 0xb0, 0x88, 0xc4, 0x93, 0x06, 0x92, + 0xbd, 0x56, 0x27, 0x32, 0xe9, 0x7f, 0xff, 0xe5, 0xff, 0x0e, 0xda, 0x68, + 0x6b, 0xd2, 0x26, 0x55, 0xf5, 0xda, 0x7a, 0x32, 0xb1, 0xb7, 0x36, 0x43, + 0x44, 0x25, 0x6e, 0x76, 0x65, 0x3a, 0xb9, 0x9e, 0x44, 0xda, 0x9a, 0x23, + 0xd9, 0x48, 0xda, 0xb2, 0xd7, 0x4d, 0xbb, 0x1b, 0xea, 0xed, 0x7f, 0x4f, + 0x47, 0xff, 0xff, 0xff, 0xda, 0xb6, 0x69, 0x9f, 0xd7, 0x51, 0x72, 0x98, + 0x33, 0xb9, 0x9c, 0xae, 0x66, 0x30, 0x84, 0xdc, 0x48, 0xc9, 0xd1, 0x05, + 0x45, 0xa1, 0x30, 0x17, 0x02, 0xa3, 0x07, 0xe4, 0x93, 0x35, 0xfe, 0x06, + 0x12, 0x80, 0x5c, 0x1a, 0x03, 0xa3, 0x0c, 0x90, 0x0c, 0x30, 0x03, 0x00, + 0x53, 0x0f, 0xa0, 0x5c, 0x53, 0x39, 0xc0, 0xb0, 0x04, 0x98, 0x7d, 0x8b, + 0xe9, 0x81, 0x60, 0x03, 0xac, 0xe1, 0x9e, 0x97, 0x68, 0x57, 0xa6, 0x99, + 0x15, 0x68, 0x93, 0x90, 0xf8, 0x46, 0x9c, 0x28, 0xe3, 0x5c, 0x94, 0xaa, + 0x54, 0x29, 0x35, 0x19, 0x62, 0x30, 0x8e, 0x02, 0xf3, 0x0c, 0xb1, 0x1e, + 0x48, 0xb3, 0x64, 0xe6, 0x1f, 0x28, 0x6a, 0x95, 0x1a, 0xe4, 0xb9, 0x93, + 0x0d, 0x67, 0xea, 0xa9, 0xe1, 0xd4, 0x66, 0xa7, 0x0e, 0x68, 0x85, 0x72, + 0x13, 0x09, 0x9e, 0x3a, 0xee, 0xe8, 0x51, 0x3a, 0x43, 0x16, 0x5d, 0x27, + 0x21, 0x36, 0x46, 0x4c, 0xb1, 0x33, 0x33, 0x35, 0x35, 0x45, 0x4a, 0x98, + 0x71, 0xa3, 0x2a, 0x15, 0x90, 0xcf, 0xe6, 0xf6, 0x33, 0x95, 0x89, 0xf4, + 0x33, 0xf5, 0x56, 0xce, 0xbf, 0x10, 0xec, 0x66, 0x5d, 0x22, 0xd7, 0xa8, + 0xaa, 0x49, 0x2f, 0x43, 0x48, 0x3c, 0x56, 0x4c, 0xa5, 0x82, 0xbe, 0x89, + 0x48, 0x44, 0x54, 0x38, 0xbf, 0x73, 0x50, 0xbc, 0x71, 0x67, 0x78, 0xda, + 0xad, 0x55, 0xab, 0xdf, 0xb3, 0xa9, 0x1b, 0x17, 0x2c, 0x6f, 0x61, 0xa7, + 0x0e, 0xb5, 0x87, 0x8a, 0xf8, 0x14, 0xb2, 0xe9, 0x52, 0xbc, 0xa6, 0x67, + 0x6e, 0x76, 0xc3, 0x45, 0xc3, 0x93, 0x93, 0x7a, 0x0d, 0x3e, 0xd9, 0x55, + 0xd3, 0xe8, 0x10, 0x26, 0xa7, 0x65, 0x91, 0x66, 0x48, 0x0d, 0xec, 0xad, + 0xd0, 0xe3, 0xc6, 0x92, 0x1a, 0x25, 0xc1, 0xc5, 0x58, 0xd5, 0x35, 0x32, + 0xaa, 0x53, 0x30, 0x3e, 0x52, 0x42, 0x54, 0xb6, 0x42, 0x61, 0x58, 0x86, + 0x4a, 0x4f, 0x05, 0xd2, 0x80, 0xc0, 0x33, 0x50, 0xd5, 0x51, 0xcc, 0xd5, + 0x01, 0x4c, 0x67, 0xa9, 0xcf, 0xd1, 0x65, 0x3d, 0xc8, 0x6b, 0x80, 0x1f, + 0x42, 0x34, 0xc2, 0xd0, 0x3a, 0x48, 0x39, 0xd6, 0xf8, 0x47, 0x6c, 0x6d, + 0xa4, 0x00, 0x1e, 0x42, 0x81, 0x79, 0x94, 0xc2, 0x3f, 0x0a, 0x29, 0x8a, + 0x12, 0x4a, 0x44, 0x72, 0x8a, 0x4a, 0x76, 0x46, 0xd0, 0xa1, 0xbe, 0xf9, + 0xe6, 0xc4, 0x70, 0x33, 0x52, 0xf1, 0x53, 0xa2, 0x41, 0x85, 0x44, 0xeb, + 0x73, 0x84, 0xe1, 0xb3, 0x6e, 0x36, 0x27, 0xbe, 0xa2, 0xc5, 0x57, 0x38, + 0x99, 0x5c, 0x68, 0xe6, 0xaf, 0x24, 0xcf, 0xff, 0xff, 0xff, 0xf5, 0x24, + 0x46, 0x38, 0xb6, 0x01, 0x6b, 0xc5, 0x80, 0x07, 0x02, 0xd0, 0x8a, 0x2c, + 0xa9, 0x80, 0xa8, 0x17, 0x18, 0x3a, 0x20, 0x69, 0xb9, 0xf0, 0x34, 0x38, + 0x02, 0xa0, 0x9e, 0x61, 0x80, 0x0c, 0x05, 0x80, 0x16, 0x30, 0xa9, 0x0b, + 0x34, 0x8c, 0x50, 0x21, 0x08, 0x0f, 0x98, 0xb1, 0x04, 0xf1, 0x10, 0x63, + 0xa5, 0x68, 0xb5, 0xa1, 0x02, 0x34, 0x9e, 0x51, 0x90, 0xd7, 0x21, 0xfc, + 0x06, 0x71, 0x27, 0x4a, 0x09, 0x3a, 0x50, 0xbf, 0x97, 0x42, 0xac, 0xa6, + 0x57, 0x5c, 0x30, 0x8e, 0xa2, 0xc8, 0x61, 0x42, 0x26, 0x0c, 0x8a, 0xa2, + 0x80, 0x9d, 0xb0, 0xbd, 0x71, 0xff, 0xfb, 0xd4, 0x60, 0x27, 0x08, 0x88, + 0xf7, 0x76, 0x3e, 0x03, 0xcf, 0x7b, 0x70, 0x50, 0x04, 0x18, 0x9d, 0x04, + 0x23, 0x4a, 0x23, 0xb5, 0xd8, 0xfc, 0xcf, 0x3d, 0xed, 0xc1, 0x7e, 0x3a, + 0x61, 0xa8, 0x22, 0x89, 0xb9, 0x1a, 0x67, 0x68, 0xe1, 0x32, 0x4b, 0xf2, + 0x14, 0x72, 0x13, 0x92, 0x18, 0x87, 0xbb, 0x33, 0x14, 0x04, 0x86, 0x02, + 0x50, 0xbe, 0x9f, 0xea, 0x34, 0xda, 0xb1, 0x72, 0xb5, 0x3d, 0xef, 0x11, + 0x34, 0xa7, 0x30, 0xa3, 0x25, 0x4e, 0x93, 0xc6, 0x1a, 0x12, 0xca, 0xe0, + 0xae, 0x4d, 0xa5, 0x9a, 0xe1, 0x28, 0x5e, 0x3a, 0x37, 0x15, 0xad, 0x8c, + 0x2a, 0xa4, 0x7a, 0x2b, 0x31, 0xcf, 0xd4, 0x31, 0x78, 0xde, 0x2f, 0xe8, + 0x94, 0xe9, 0xf8, 0xa8, 0x3f, 0x27, 0x34, 0x16, 0xa3, 0xa8, 0x27, 0x49, + 0xac, 0x1d, 0xe7, 0x69, 0xde, 0x93, 0x46, 0xb0, 0x38, 0xab, 0xd2, 0xe9, + 0x15, 0x94, 0x93, 0x1e, 0x87, 0x9e, 0x54, 0xc8, 0xa2, 0xe6, 0x74, 0x97, + 0xb4, 0x13, 0x82, 0x3d, 0x76, 0xa0, 0x37, 0xc9, 0xfc, 0xf1, 0x14, 0xaa, + 0x82, 0x54, 0x8c, 0x51, 0x1f, 0xd1, 0x18, 0x1e, 0xbc, 0x5d, 0xb7, 0xdd, + 0x16, 0xa4, 0x6c, 0x8e, 0x78, 0xbe, 0x99, 0x12, 0x9b, 0x4a, 0xa3, 0xac, + 0xac, 0x42, 0x5a, 0xda, 0x94, 0x0a, 0x66, 0x35, 0x52, 0x81, 0x1d, 0x11, + 0x31, 0x05, 0x4e, 0x98, 0x60, 0x56, 0x41, 0x55, 0x97, 0xc7, 0x07, 0xa9, + 0x87, 0x86, 0xe3, 0xc2, 0x72, 0xe6, 0x61, 0x9b, 0x65, 0xe8, 0xb0, 0xf6, + 0xb2, 0xed, 0x14, 0xb0, 0xc2, 0x4e, 0x48, 0x5b, 0x8b, 0x68, 0xdf, 0x8a, + 0x9e, 0x3f, 0xd3, 0xe0, 0xc2, 0xb3, 0xd2, 0xb1, 0x09, 0x06, 0x11, 0xac, + 0x5e, 0x41, 0x96, 0x4a, 0x80, 0xe4, 0x2c, 0x45, 0xf5, 0x4a, 0x00, 0x00, + 0x04, 0x4c, 0x92, 0x49, 0x5b, 0x43, 0x84, 0x68, 0x86, 0xbd, 0xcd, 0x33, + 0xba, 0xe0, 0x23, 0x21, 0xd4, 0x21, 0x73, 0xbc, 0xb2, 0xfb, 0xde, 0xcb, + 0xce, 0xec, 0xf8, 0xea, 0x68, 0x31, 0x8f, 0x03, 0x8c, 0x07, 0x40, 0xc0, + 0x74, 0x44, 0x67, 0xc2, 0x53, 0xa4, 0x1c, 0xa4, 0x91, 0xa4, 0xb2, 0xcf, + 0x47, 0x9f, 0x56, 0xa9, 0xa4, 0x24, 0xd0, 0xf6, 0xa2, 0xf3, 0xdd, 0xa8, + 0xde, 0x73, 0xff, 0xfd, 0x29, 0xb8, 0x68, 0x68, 0xb8, 0x08, 0x78, 0x95, + 0x03, 0x87, 0x0e, 0x6c, 0xdc, 0x3e, 0x63, 0x5e, 0x50, 0x30, 0x00, 0x00, + 0x33, 0x01, 0x70, 0x20, 0x30, 0x7e, 0x15, 0x73, 0x71, 0x20, 0x9e, 0x30, + 0x0a, 0x02, 0x13, 0x00, 0x10, 0x30, 0x30, 0x6a, 0x05, 0x90, 0xb8, 0x0f, + 0x98, 0x17, 0x84, 0x03, 0x11, 0x65, 0x88, 0x80, 0x61, 0x6e, 0x11, 0x04, + 0x40, 0x48, 0xa6, 0x61, 0xa2, 0x99, 0x42, 0x11, 0x86, 0x9b, 0x79, 0x78, + 0x2e, 0x09, 0xe4, 0xdc, 0x52, 0x0c, 0x30, 0xc7, 0x19, 0x71, 0x51, 0xa4, + 0x85, 0xb9, 0x1d, 0x38, 0xf0, 0x25, 0x04, 0xb0, 0x88, 0x33, 0xd0, 0xc0, + 0x6c, 0x17, 0x56, 0x11, 0x5f, 0x5d, 0xb0, 0x9d, 0x62, 0x12, 0x71, 0x93, + 0x84, 0xb1, 0x25, 0x65, 0x84, 0x42, 0xd8, 0xcc, 0xe4, 0x59, 0xd8, 0xa3, + 0x69, 0x16, 0x86, 0x01, 0xe4, 0x48, 0x94, 0xa7, 0x21, 0x2e, 0x33, 0x81, + 0xb6, 0x31, 0x85, 0xf4, 0x61, 0x01, 0x3a, 0x94, 0x87, 0xa1, 0x6e, 0x34, + 0x15, 0xe9, 0xa4, 0x69, 0xb2, 0x21, 0xa8, 0x71, 0x7b, 0x5c, 0x9f, 0xa5, + 0xf4, 0x3a, 0xdf, 0x96, 0xe5, 0x5a, 0x4d, 0xa8, 0xff, 0x2f, 0xeb, 0x73, + 0xb6, 0x44, 0xb1, 0xbc, 0xb9, 0x59, 0x1f, 0xa7, 0xda, 0xac, 0xfa, 0x82, + 0x76, 0xbe, 0x81, 0x46, 0xc3, 0x89, 0x38, 0x74, 0x30, 0xb8, 0xa1, 0xf0, + 0x98, 0x34, 0x9b, 0x5a, 0x3c, 0x92, 0x6d, 0xa8, 0xb3, 0x91, 0x12, 0x8a, + 0x7c, 0x9d, 0x87, 0x02, 0xc8, 0x4a, 0x1a, 0x86, 0x39, 0xc1, 0xa6, 0xd4, + 0x0b, 0x69, 0xc7, 0x8e, 0x4f, 0x26, 0x6c, 0xee, 0x4b, 0x88, 0x12, 0xab, + 0xaa, 0x73, 0xc3, 0xa6, 0xd5, 0xc9, 0x55, 0x1a, 0x9d, 0xe3, 0x82, 0xe1, + 0xf4, 0x37, 0x88, 0x62, 0xdc, 0x79, 0xd4, 0x93, 0xe1, 0x41, 0xde, 0xed, + 0x08, 0x72, 0x9e, 0xf3, 0xbd, 0xbb, 0x34, 0xc9, 0xf4, 0xe2, 0x9e, 0x34, + 0x47, 0xd2, 0xa9, 0x28, 0x74, 0x2f, 0x51, 0x58, 0xdd, 0x65, 0xd3, 0x09, + 0xf2, 0xcc, 0x87, 0x21, 0x8c, 0xe5, 0xf5, 0xa9, 0x2e, 0xdc, 0xfd, 0x6c, + 0x85, 0xa4, 0xdc, 0xce, 0x03, 0xa8, 0xd3, 0x1b, 0x48, 0x13, 0xe4, 0x7d, + 0x9a, 0x2a, 0x26, 0x92, 0xb6, 0xa4, 0x9b, 0x44, 0x0e, 0x52, 0xa8, 0x36, + 0x5b, 0x17, 0x51, 0x41, 0xa7, 0x3a, 0xc6, 0x2a, 0x8b, 0x36, 0xd0, 0x80, + 0xc0, 0xeb, 0x08, 0x0b, 0x3d, 0xd6, 0xc5, 0x45, 0x57, 0x43, 0xbd, 0xd2, + 0x49, 0x2e, 0x7e, 0x54, 0xbd, 0x9d, 0x48, 0xe9, 0x29, 0x4c, 0xad, 0x62, + 0x30, 0x97, 0x99, 0x19, 0xec, 0xf4, 0x2e, 0xe8, 0x8f, 0xeb, 0x7b, 0x2d, + 0x3f, 0xa2, 0xdb, 0xd3, 0xf7, 0xff, 0xd7, 0xbe, 0x8b, 0x7d, 0xd3, 0xff, + 0xfd, 0xbd, 0x76, 0xea, 0x8b, 0x66, 0x7a, 0xd2, 0xee, 0x10, 0xe7, 0x75, + 0x71, 0x0a, 0xf5, 0x28, 0xe0, 0x0e, 0xc2, 0x27, 0x23, 0x98, 0xe8, 0x02, + 0x70, 0x33, 0x88, 0x00, 0x40, 0x80, 0x38, 0x01, 0x45, 0x81, 0x38, 0xc2, + 0xc8, 0x99, 0x0e, 0x11, 0x81, 0xb0, 0x30, 0x23, 0x0c, 0x0a, 0x40, 0x40, + 0x14, 0x2d, 0x61, 0x50, 0x0d, 0x30, 0x40, 0x03, 0x97, 0x3d, 0x72, 0x8e, + 0x00, 0x29, 0x81, 0xe0, 0x53, 0xac, 0xd8, 0x78, 0x58, 0x54, 0xc7, 0x69, + 0xd4, 0xad, 0x6c, 0x27, 0x4e, 0x26, 0x3a, 0x30, 0xbd, 0xab, 0x0b, 0xca, + 0xe5, 0xf9, 0x3a, 0x88, 0x58, 0xff, 0xfb, 0xd4, 0x60, 0x1f, 0x08, 0x88, + 0xb1, 0x76, 0x3f, 0x2b, 0xcf, 0xc3, 0x70, 0x5e, 0xae, 0x08, 0x8d, 0x08, + 0x62, 0x6e, 0x60, 0x3d, 0xd7, 0x06, 0x4e, 0xe9, 0xed, 0xc1, 0x0a, 0x9b, + 0xe3, 0x68, 0x10, 0x8d, 0x74, 0x5f, 0x1f, 0x84, 0x28, 0x83, 0x33, 0x97, + 0xd2, 0x90, 0xb2, 0x9c, 0xd0, 0x5d, 0x3f, 0x56, 0x28, 0x56, 0x4f, 0x06, + 0x93, 0xbc, 0xfe, 0x8a, 0x84, 0xe5, 0x3c, 0xc8, 0x87, 0xbb, 0x72, 0x21, + 0xc5, 0xb6, 0x3a, 0x1b, 0x11, 0xa2, 0x7f, 0xdf, 0x59, 0x04, 0x3d, 0x2b, + 0x8a, 0xf6, 0x1d, 0xa7, 0x90, 0x53, 0xc0, 0x12, 0xb7, 0x26, 0x32, 0xea, + 0xc3, 0x50, 0xe4, 0xb6, 0x03, 0x89, 0x45, 0xe2, 0xd0, 0xcc, 0x26, 0x37, + 0x49, 0x28, 0x68, 0xb6, 0xe2, 0xb2, 0xf9, 0x6c, 0x5e, 0xcd, 0xb8, 0xa5, + 0x8b, 0x53, 0x74, 0x72, 0xcb, 0xf7, 0xa9, 0x39, 0x1c, 0xa7, 0x83, 0xe0, + 0x09, 0x55, 0x2d, 0x59, 0x55, 0x24, 0x66, 0x27, 0x09, 0x8a, 0xd3, 0xcf, + 0x51, 0x52, 0x59, 0x95, 0x47, 0xb9, 0x84, 0xae, 0x9a, 0x35, 0x28, 0xa5, + 0xa6, 0xca, 0x62, 0x5b, 0xc9, 0xc9, 0x74, 0x9a, 0x57, 0x33, 0xf4, 0x51, + 0xc8, 0x63, 0x76, 0xa5, 0x5b, 0xa6, 0xb5, 0x72, 0x76, 0xed, 0x69, 0x14, + 0x82, 0x51, 0x6e, 0xbc, 0x15, 0x37, 0x37, 0x49, 0x9e, 0x17, 0xea, 0xd4, + 0x9f, 0xec, 0x6e, 0x49, 0x1b, 0xfa, 0x48, 0x9c, 0xa7, 0x19, 0x1c, 0xae, + 0x92, 0x7b, 0x19, 0x4d, 0x6a, 0x3a, 0x7a, 0xb2, 0xa9, 0x04, 0xb2, 0x9a, + 0x2f, 0x45, 0x1d, 0xb5, 0x28, 0x98, 0x82, 0xa3, 0xf7, 0x62, 0xec, 0xc2, + 0x33, 0x4e, 0xfd, 0x42, 0x61, 0xdb, 0xb2, 0xb6, 0x4e, 0xe1, 0x40, 0x4c, + 0xaa, 0x22, 0xff, 0x33, 0x08, 0x76, 0x19, 0x9f, 0xa8, 0xa5, 0x36, 0x46, + 0xa4, 0x5e, 0x05, 0x89, 0x00, 0x80, 0x02, 0x01, 0x46, 0xd3, 0x4d, 0xd6, + 0x90, 0xf2, 0x21, 0x8a, 0x13, 0xd1, 0x1f, 0x80, 0x94, 0x33, 0xd4, 0x4a, + 0xf2, 0xf4, 0xa1, 0x96, 0x50, 0x5e, 0x79, 0x1e, 0x7f, 0x3c, 0x8b, 0xb0, + 0xf7, 0x87, 0xf4, 0xb5, 0xbd, 0x58, 0xaa, 0x8f, 0x31, 0xd0, 0xc2, 0xd4, + 0x10, 0xe4, 0x3b, 0xb0, 0x27, 0x10, 0xaa, 0x36, 0x8b, 0x43, 0xbd, 0x28, + 0xfa, 0xa2, 0x90, 0xb7, 0xbb, 0x6a, 0x8a, 0xf5, 0xef, 0xb5, 0x95, 0x56, + 0xbb, 0x22, 0xee, 0xeb, 0x64, 0xba, 0x2d, 0x7f, 0xfe, 0xff, 0xfd, 0x3f, + 0xe8, 0xb5, 0xf5, 0x24, 0xb9, 0xa5, 0x20, 0x77, 0x21, 0x11, 0xec, 0x09, + 0x3b, 0xa7, 0xc1, 0x68, 0x19, 0xe8, 0x0c, 0x0e, 0x06, 0xcc, 0x17, 0x09, + 0x8c, 0x66, 0x9d, 0x8f, 0xec, 0x2b, 0x0d, 0x6e, 0x05, 0xce, 0x39, 0x9a, + 0x4c, 0x56, 0xc3, 0x8f, 0x1a, 0x2e, 0x0d, 0xf7, 0x69, 0xcc, 0x9c, 0x10, + 0x8d, 0x14, 0x3c, 0x02, 0x83, 0xc9, 0x86, 0xe2, 0x10, 0xc0, 0x1e, 0x61, + 0x88, 0x82, 0x72, 0xe2, 0x83, 0xab, 0xa6, 0xa3, 0x56, 0x2c, 0x9b, 0xf4, + 0xf0, 0xbc, 0xdc, 0x7c, 0x5c, 0x35, 0x33, 0x41, 0xc2, 0xf0, 0x26, 0x22, + 0xb0, 0x43, 0xb0, 0xdb, 0x03, 0x57, 0x6d, 0x7d, 0x74, 0x52, 0x3f, 0xec, + 0x0d, 0x53, 0xb1, 0x36, 0x9e, 0xfb, 0xc5, 0xe2, 0xce, 0xfb, 0x5b, 0x7e, + 0xe3, 0x6d, 0xfc, 0x8e, 0x57, 0x40, 0xfd, 0xcb, 0x29, 0xa6, 0x5e, 0x16, + 0xbf, 0x0a, 0x68, 0x71, 0xbf, 0x8c, 0xe6, 0xce, 0xa7, 0x63, 0xdb, 0x94, + 0x8a, 0x36, 0x27, 0x36, 0x35, 0x1b, 0x93, 0x82, 0x12, 0xaf, 0x1f, 0xea, + 0xa5, 0xa2, 0xa6, 0xeb, 0x4c, 0x6a, 0x04, 0xea, 0x91, 0x12, 0xc1, 0x0d, + 0xd2, 0xe3, 0x2a, 0xe7, 0x3b, 0xa8, 0xe5, 0x86, 0xfd, 0x85, 0x74, 0xe0, + 0xb8, 0x48, 0x99, 0xad, 0x8d, 0x4c, 0x0d, 0xce, 0x30, 0x67, 0x57, 0xa1, + 0xf0, 0xda, 0xaa, 0xfe, 0x13, 0x94, 0xca, 0x05, 0x52, 0xdc, 0x54, 0xfb, + 0xb6, 0x06, 0x28, 0x8b, 0x97, 0x49, 0xbd, 0xc0, 0xb6, 0xfb, 0x64, 0x37, + 0xfa, 0xc3, 0x75, 0xef, 0x58, 0x8f, 0x21, 0x49, 0xdd, 0xcd, 0xb9, 0xf7, + 0x97, 0x9e, 0x48, 0xdb, 0x6a, 0xdd, 0xe3, 0xb0, 0xde, 0xb1, 0x20, 0x4f, + 0x9b, 0xc4, 0xc7, 0xae, 0xe9, 0x6b, 0xcf, 0x26, 0xb3, 0x17, 0x31, 0xa9, + 0xf3, 0xa7, 0x92, 0xc3, 0x7f, 0x6b, 0x5a, 0xb5, 0x71, 0x9e, 0x1a, 0xd6, + 0x9f, 0x61, 0xfc, 0x93, 0x33, 0x36, 0x2c, 0xcc, 0xab, 0x56, 0x46, 0x56, + 0x55, 0x46, 0x6b, 0xb6, 0x3d, 0x3b, 0xe2, 0xb8, 0x40, 0x48, 0x40, 0xdc, + 0xb2, 0xb4, 0x47, 0x5f, 0xff, 0xe5, 0xff, 0xc9, 0x27, 0xee, 0x76, 0x2e, + 0x91, 0x97, 0x49, 0x7f, 0x6d, 0xbe, 0xad, 0xea, 0x66, 0x4c, 0xb1, 0xf8, + 0x86, 0x48, 0x08, 0x20, 0xb0, 0xa7, 0x0c, 0x13, 0x7c, 0x35, 0xf3, 0xad, + 0x9f, 0x99, 0x9d, 0x11, 0x87, 0x83, 0x41, 0xc7, 0x10, 0x6c, 0x5d, 0x65, + 0xc7, 0x28, 0xab, 0x96, 0x97, 0xea, 0xeb, 0xa1, 0xff, 0xff, 0xff, 0x20, + 0xff, 0xde, 0x98, 0xb2, 0x6a, 0x00, 0x26, 0x41, 0x50, 0x0a, 0xcc, 0x02, + 0x50, 0x10, 0x00, 0x01, 0x83, 0x18, 0x2e, 0x80, 0x37, 0x18, 0x0f, 0xa0, + 0xf4, 0x18, 0x7c, 0x8a, 0x84, 0x9c, 0x60, 0xe7, 0x80, 0x99, 0x13, 0x42, + 0x1f, 0x98, 0x1d, 0xc1, 0x47, 0x18, 0x39, 0xc0, 0x21, 0x98, 0x06, 0x00, + 0x65, 0x88, 0x40, 0x9f, 0x30, 0x0b, 0x00, 0x57, 0x30, 0x0e, 0x00, 0x53, + 0x30, 0x1e, 0x80, 0x45, 0x31, 0x4a, 0x8f, 0xdf, 0xc3, 0x52, 0x74, 0xc9, + 0xb9, 0x39, 0x88, 0x0c, 0xc9, 0x12, 0x69, 0xa2, 0xc4, 0xcc, 0x10, 0x75, + 0xa8, 0x0c, 0x06, 0x97, 0x02, 0x81, 0x04, 0x21, 0xcb, 0x90, 0x15, 0x32, + 0x4c, 0x94, 0xb7, 0x60, 0x64, 0xff, 0xfb, 0xd4, 0x60, 0x30, 0x0e, 0x89, + 0x79, 0x76, 0x41, 0x13, 0xfa, 0x7b, 0x70, 0x2e, 0xe6, 0xb8, 0xe3, 0x04, + 0x02, 0x5d, 0x25, 0xa9, 0xd8, 0xfa, 0x0f, 0xed, 0xed, 0xc1, 0x50, 0x39, + 0x61, 0xd8, 0x50, 0x89, 0xb9, 0x28, 0xe5, 0x02, 0x85, 0x81, 0x8b, 0x01, + 0x43, 0x11, 0x60, 0x2c, 0xcd, 0x74, 0x28, 0x89, 0x77, 0x03, 0x81, 0x41, + 0xe5, 0xd1, 0x82, 0x1c, 0x36, 0x20, 0xff, 0x36, 0x65, 0x3e, 0xea, 0x2f, + 0x55, 0x39, 0x64, 0xae, 0xf3, 0xa3, 0x30, 0xfd, 0xbc, 0x8e, 0x54, 0x68, + 0x9c, 0xb1, 0x27, 0x57, 0x4b, 0x95, 0x73, 0x99, 0xfc, 0x76, 0xc0, 0x27, + 0x26, 0xf2, 0xbc, 0xfe, 0x47, 0x17, 0xe6, 0x25, 0x42, 0xa6, 0x58, 0x65, + 0xf8, 0xe9, 0x13, 0xc3, 0x8c, 0xa4, 0x2e, 0x2b, 0x87, 0x14, 0x82, 0x16, + 0xc0, 0xc6, 0x67, 0x2b, 0x90, 0xd4, 0x0b, 0x9a, 0xa7, 0x11, 0x18, 0x1b, + 0x91, 0x8c, 0x88, 0x25, 0x47, 0x71, 0x41, 0x31, 0x33, 0x3f, 0x45, 0x2a, + 0x51, 0xd1, 0xd4, 0xd5, 0x49, 0x30, 0x37, 0x26, 0x98, 0x54, 0x0f, 0x51, + 0xa7, 0xe4, 0x65, 0x32, 0x95, 0xb9, 0xcb, 0x69, 0xc7, 0x3c, 0xd9, 0xec, + 0xed, 0x4e, 0x6c, 0x07, 0x33, 0xfd, 0x4a, 0xea, 0x90, 0x24, 0x7c, 0xa0, + 0xc3, 0xc6, 0x28, 0x4b, 0x0f, 0x24, 0x6b, 0x92, 0x23, 0x33, 0x8f, 0x8b, + 0xa6, 0xed, 0xe6, 0xcf, 0x60, 0x3f, 0xa4, 0x28, 0xf5, 0x87, 0x47, 0x3b, + 0xd6, 0x16, 0xac, 0xd7, 0xab, 0xc5, 0x9a, 0x0c, 0x09, 0x54, 0xaf, 0xa3, + 0xc5, 0x8c, 0xdf, 0xb8, 0xf9, 0x5e, 0x75, 0x85, 0x3d, 0xab, 0x05, 0x95, + 0x5e, 0xae, 0x42, 0xdc, 0x18, 0xd8, 0xfa, 0x7d, 0xf3, 0xe6, 0x28, 0x90, + 0xda, 0x09, 0x49, 0xf0, 0x86, 0xa3, 0x9b, 0x63, 0x00, 0x03, 0x71, 0xb0, + 0x0f, 0xff, 0xff, 0xff, 0xed, 0xea, 0xe8, 0xff, 0x7a, 0xa7, 0xec, 0x9d, + 0x4c, 0xec, 0xb4, 0x75, 0x69, 0x04, 0xa8, 0xf8, 0x50, 0xc8, 0x1d, 0xea, + 0x27, 0x22, 0xb3, 0x69, 0x5c, 0x9b, 0x98, 0x2a, 0x39, 0xed, 0x16, 0x0f, + 0x96, 0xc4, 0x2f, 0xff, 0xff, 0xff, 0xe9, 0x30, 0x25, 0xc0, 0xe8, 0x30, + 0x19, 0x01, 0x49, 0x30, 0x49, 0xc8, 0x50, 0x30, 0x59, 0x44, 0x07, 0x30, + 0x76, 0xc6, 0xfc, 0x31, 0x85, 0x9e, 0xfb, 0x38, 0xcd, 0x24, 0x12, 0x31, + 0x7c, 0x86, 0xa5, 0x24, 0x09, 0xb0, 0xc1, 0x48, 0x00, 0xf0, 0xc2, 0x7b, + 0x04, 0x80, 0xc4, 0xbc, 0x01, 0x30, 0xc2, 0x44, 0x00, 0xdc, 0xc0, 0x9b, + 0x00, 0x38, 0x68, 0x09, 0xc3, 0x11, 0x06, 0x4a, 0x18, 0x99, 0x82, 0xc1, + 0x82, 0x90, 0x61, 0x86, 0xce, 0xb1, 0x8b, 0x22, 0xd8, 0xa5, 0x3e, 0xe8, + 0xaf, 0xa8, 0x9a, 0x13, 0x54, 0x11, 0xa7, 0xbc, 0xc9, 0xd2, 0xfa, 0xc7, + 0xd8, 0x7b, 0x05, 0x5e, 0x4d, 0x0e, 0x04, 0x90, 0xba, 0x55, 0xdb, 0x8a, + 0xa2, 0x97, 0x49, 0x1e, 0x48, 0xec, 0x10, 0xf5, 0xbc, 0x90, 0xd4, 0x3f, + 0x13, 0x81, 0xdc, 0x18, 0x6a, 0x3f, 0x69, 0x81, 0x49, 0xcb, 0xd1, 0x58, + 0xac, 0x7e, 0x71, 0x10, 0xa9, 0x97, 0x59, 0xa4, 0xab, 0x8a, 0x2e, 0xb2, + 0x9e, 0x69, 0x79, 0x3a, 0xad, 0xcd, 0x09, 0x80, 0x75, 0x9c, 0xec, 0x49, + 0xd6, 0xd5, 0x87, 0x06, 0x04, 0x30, 0xf2, 0x3f, 0x13, 0x29, 0xb6, 0xf7, + 0xd0, 0x19, 0xd7, 0x49, 0x03, 0xd5, 0x90, 0xe4, 0x8e, 0xdf, 0x34, 0x76, + 0x15, 0x0b, 0x69, 0x94, 0x8d, 0x57, 0x9f, 0x49, 0xa5, 0x3c, 0x8f, 0x50, + 0xb4, 0xfc, 0x24, 0x2e, 0x56, 0x7b, 0xb0, 0xab, 0x27, 0x7c, 0xc4, 0xe1, + 0x79, 0xd2, 0x2c, 0x47, 0x1b, 0x03, 0x74, 0x79, 0x4c, 0x43, 0x4d, 0x74, + 0xda, 0xa4, 0x56, 0x61, 0x38, 0x9c, 0x7a, 0xab, 0x52, 0x25, 0x21, 0xe5, + 0x26, 0xef, 0x0e, 0x52, 0x2e, 0x54, 0xcd, 0x6a, 0xea, 0x27, 0x1c, 0x59, + 0x99, 0x6a, 0x6e, 0xaa, 0xd7, 0x73, 0xbd, 0x96, 0x0a, 0x51, 0x41, 0x85, + 0x64, 0x74, 0xeb, 0xf3, 0x99, 0x5a, 0xcf, 0x43, 0xe5, 0x77, 0x54, 0xdc, + 0x66, 0xcc, 0xa7, 0x55, 0xcf, 0x19, 0x4f, 0x43, 0x7e, 0x77, 0x14, 0x2d, + 0x5e, 0x5e, 0x56, 0xa1, 0x73, 0xe4, 0x49, 0x0d, 0x95, 0x92, 0x42, 0x7b, + 0xb8, 0x90, 0x96, 0x22, 0xc8, 0x84, 0x03, 0x00, 0x9c, 0x08, 0x30, 0x4d, + 0x04, 0xa0, 0xb9, 0x01, 0x44, 0xf0, 0x5c, 0x29, 0x84, 0xb7, 0xfc, 0x80, + 0x56, 0x4a, 0xd1, 0x9f, 0xa2, 0x1e, 0xbc, 0x8b, 0xfa, 0x7c, 0xb3, 0xae, + 0x7f, 0x08, 0x8d, 0x08, 0x9c, 0xec, 0xd8, 0xc9, 0x62, 0x29, 0x5a, 0x86, + 0xb9, 0x28, 0x4c, 0xc9, 0xa9, 0xc8, 0xc8, 0x93, 0xa9, 0xd0, 0xc1, 0x92, + 0x72, 0x12, 0xa5, 0x43, 0xdd, 0xd9, 0x52, 0xea, 0x9a, 0xaa, 0xd0, 0x84, + 0xf4, 0x5d, 0xa9, 0xfd, 0xfe, 0x94, 0x47, 0xd2, 0xb6, 0xfe, 0x95, 0xff, + 0xf4, 0xf3, 0x3a, 0xfe, 0xfb, 0x4e, 0x42, 0x66, 0x43, 0xb9, 0x94, 0x76, + 0x74, 0x56, 0x40, 0xae, 0x1c, 0xc1, 0x91, 0xc3, 0xea, 0x00, 0x90, 0x03, + 0x00, 0x34, 0x03, 0xf3, 0x01, 0x30, 0x00, 0x43, 0x04, 0x7c, 0x35, 0xe3, + 0x0e, 0x5c, 0x0b, 0x43, 0x09, 0x3c, 0x21, 0x33, 0x15, 0x60, 0xf0, 0x83, + 0xd6, 0x68, 0x9c, 0x73, 0x1e, 0x38, 0x2a, 0x43, 0x09, 0x0c, 0x18, 0xd3, + 0x03, 0x4c, 0x0c, 0xd3, 0x05, 0x08, 0x1a, 0x23, 0x05, 0x7c, 0x04, 0xc3, + 0x03, 0x94, 0x01, 0xb3, 0x00, 0xb0, 0x01, 0xe3, 0x00, 0x2c, 0x02, 0x90, + 0x73, 0x71, 0x10, 0x14, 0xf4, 0x06, 0x5d, 0x39, 0x63, 0x5d, 0x15, 0x30, + 0x05, 0x07, 0x63, 0xc9, 0xf8, 0xa1, 0xac, 0xe9, 0x2a, 0xd0, 0x8e, 0x1d, + 0x53, 0xb0, 0x50, 0x37, 0x0e, 0xff, 0xfb, 0xd4, 0x60, 0x2e, 0x0c, 0xd8, + 0xa0, 0x75, 0x40, 0x93, 0xfa, 0x7b, 0x70, 0x51, 0x0e, 0x98, 0x52, 0x20, + 0x22, 0x6e, 0x24, 0x3d, 0xd0, 0xfe, 0x0f, 0xed, 0xed, 0xc1, 0x41, 0x3a, + 0x61, 0x41, 0x00, 0x89, 0xb8, 0x52, 0xa0, 0xfc, 0x95, 0xb0, 0xc6, 0xe7, + 0x51, 0x5b, 0x1e, 0x59, 0x86, 0xe0, 0x44, 0x02, 0xe4, 0x95, 0x7b, 0xdc, + 0x9b, 0x6f, 0xe5, 0x5c, 0x86, 0xec, 0x46, 0xde, 0xa7, 0x92, 0x89, 0xe2, + 0xbd, 0x5a, 0x2c, 0xf3, 0x2a, 0x12, 0xa8, 0x22, 0x7a, 0xf4, 0xa3, 0x60, + 0x2f, 0x48, 0x63, 0x24, 0x16, 0x63, 0xa1, 0x0f, 0x42, 0xda, 0xd5, 0xea, + 0x48, 0x48, 0x76, 0x94, 0xb1, 0x9e, 0x47, 0x58, 0x4f, 0xa8, 0xd5, 0x5a, + 0x38, 0xdf, 0xdd, 0x47, 0xe3, 0xae, 0x1f, 0xb7, 0xc3, 0xde, 0x63, 0xa8, + 0x66, 0x3b, 0xd9, 0xd9, 0x1a, 0x95, 0x77, 0x53, 0xd1, 0xfc, 0x47, 0x4e, + 0x78, 0xbd, 0xe1, 0xc0, 0xde, 0xbb, 0x76, 0xbc, 0x0d, 0x6f, 0xde, 0x0d, + 0x25, 0x7f, 0x55, 0xd4, 0x49, 0x74, 0xd5, 0x1d, 0xca, 0x24, 0x16, 0x26, + 0x09, 0xde, 0x62, 0xb6, 0xfb, 0x7d, 0x26, 0xdb, 0x99, 0x21, 0x62, 0x57, + 0xb7, 0x87, 0x3c, 0xbd, 0xf4, 0x92, 0xc2, 0x6b, 0xbc, 0x58, 0xd0, 0x57, + 0x35, 0xa4, 0x1a, 0xde, 0x0c, 0x1b, 0xda, 0x3f, 0x96, 0x5c, 0x40, 0xa4, + 0x6c, 0x33, 0xb1, 0x38, 0x35, 0xa7, 0x61, 0xbd, 0x6e, 0xcb, 0x9e, 0xd8, + 0x5a, 0x62, 0x2e, 0xf5, 0x95, 0x5a, 0x2d, 0x32, 0xa1, 0x77, 0x74, 0x49, + 0x00, 0x25, 0x0e, 0xdb, 0x13, 0x85, 0xb4, 0xcf, 0x68, 0x00, 0x64, 0x00, + 0x00, 0x8f, 0xe2, 0xb9, 0x47, 0xc6, 0xb3, 0x78, 0xcc, 0xd9, 0xf7, 0x41, + 0x75, 0x3e, 0x19, 0x3f, 0xf3, 0xbc, 0xb9, 0xff, 0x4b, 0x7a, 0x4a, 0x64, + 0x44, 0xcb, 0xb6, 0xe6, 0xa1, 0x4e, 0xcd, 0xab, 0xbd, 0x16, 0xdb, 0xef, + 0x36, 0x9d, 0x5b, 0xb5, 0x7f, 0xfe, 0xff, 0xe6, 0x56, 0xed, 0x74, 0xfd, + 0x6d, 0xf7, 0xd7, 0xd3, 0xab, 0x74, 0xea, 0xee, 0x63, 0x31, 0xd5, 0xc7, + 0x68, 0x41, 0x08, 0x50, 0xe1, 0x9c, 0x11, 0x58, 0x69, 0xce, 0x31, 0x88, + 0x8a, 0xec, 0x8a, 0x16, 0xc2, 0x86, 0x30, 0x12, 0x00, 0x6d, 0x30, 0x21, + 0xc0, 0xc0, 0x30, 0x25, 0x00, 0xb6, 0x31, 0xb1, 0x41, 0x7a, 0x30, 0x8d, + 0x04, 0x69, 0x31, 0xea, 0x58, 0x9c, 0x3f, 0x5b, 0x65, 0x2b, 0x31, 0x7d, + 0x44, 0x4e, 0x30, 0x5d, 0x80, 0xf9, 0x1a, 0x01, 0x10, 0xc1, 0xb8, 0x05, + 0xf4, 0xc4, 0x3b, 0x04, 0x1c, 0x04, 0x12, 0x70, 0x90, 0x0d, 0xa6, 0x02, + 0x48, 0x03, 0x26, 0x5c, 0xa2, 0x38, 0x1a, 0xb2, 0xcc, 0x78, 0x00, 0xee, + 0xc5, 0x99, 0x88, 0x8c, 0x58, 0x0c, 0x6c, 0x96, 0xeb, 0x00, 0x10, 0x16, + 0xae, 0xe0, 0x12, 0x61, 0x4c, 0x12, 0x54, 0xc2, 0x00, 0x15, 0xe3, 0xa2, + 0x0e, 0x05, 0x70, 0x69, 0xdd, 0xad, 0xb0, 0x66, 0xc0, 0xaf, 0x60, 0xa1, + 0xc0, 0x01, 0x60, 0x15, 0xdc, 0x95, 0x32, 0x38, 0xdb, 0xee, 0xd6, 0x9e, + 0xa9, 0xa5, 0x0e, 0xa6, 0x9b, 0x6e, 0x31, 0x98, 0xbb, 0x27, 0x86, 0x31, + 0x61, 0x74, 0xef, 0x58, 0x90, 0xa7, 0x15, 0x71, 0x0a, 0x43, 0xdb, 0x88, + 0x63, 0x2a, 0x1c, 0x8c, 0x7e, 0xd8, 0x80, 0x81, 0x05, 0x56, 0x90, 0x4d, + 0x24, 0x0d, 0xe5, 0xca, 0xd5, 0x58, 0x9a, 0xdf, 0x3a, 0x65, 0x84, 0xf9, + 0x7d, 0x40, 0xd8, 0x84, 0x28, 0xee, 0xbb, 0x69, 0x70, 0x4f, 0xb9, 0xb4, + 0xc0, 0x3b, 0x63, 0x48, 0xfa, 0x1d, 0xdd, 0xb1, 0xcb, 0x0d, 0xb2, 0x0c, + 0xf8, 0x3d, 0x62, 0xb2, 0xc1, 0xd6, 0xdf, 0xc7, 0x80, 0xcd, 0x12, 0x34, + 0x68, 0xee, 0xe2, 0x21, 0xea, 0xa4, 0x5b, 0xf6, 0xa7, 0xb6, 0x78, 0xf5, + 0x8d, 0x0b, 0x86, 0xbe, 0xcb, 0x16, 0x05, 0x99, 0x67, 0x91, 0x96, 0x05, + 0x20, 0xbe, 0x54, 0x46, 0x82, 0xb5, 0xb5, 0x3d, 0xeb, 0x11, 0xa9, 0x93, + 0x11, 0x2d, 0x2b, 0x13, 0x23, 0x85, 0xe7, 0x3e, 0x17, 0x99, 0xd7, 0xb1, + 0x06, 0x58, 0xca, 0xc5, 0x6c, 0xf0, 0x1a, 0xf6, 0xe4, 0xd9, 0x29, 0xda, + 0xd7, 0x98, 0xec, 0xaa, 0x65, 0xb6, 0xe5, 0x06, 0x15, 0x33, 0xb6, 0x2d, + 0xa9, 0xce, 0x86, 0x76, 0x68, 0x8f, 0x51, 0xec, 0x83, 0x21, 0x08, 0x53, + 0xa6, 0x59, 0xcd, 0x03, 0x20, 0x21, 0xa2, 0xec, 0x05, 0xb2, 0xb2, 0x2a, + 0xa4, 0xb4, 0xdd, 0xf4, 0x4d, 0xbe, 0xd4, 0xa5, 0x53, 0x52, 0x91, 0x4f, + 0xf7, 0xcf, 0xfa, 0xaf, 0x64, 0xbf, 0xbd, 0x57, 0xd5, 0xd6, 0xd2, 0xb9, + 0x27, 0xa2, 0x53, 0x56, 0x7a, 0x50, 0xb6, 0xd4, 0x97, 0xbf, 0xad, 0x3c, + 0xde, 0xbd, 0xd9, 0x7d, 0x9c, 0xfa, 0xfe, 0xff, 0xaa, 0xb6, 0xbf, 0xb3, + 0x53, 0xdb, 0xb7, 0xbe, 0x8a, 0xeb, 0x62, 0xbd, 0xca, 0x62, 0x18, 0xe4, + 0x55, 0x00, 0x72, 0x10, 0xe3, 0x98, 0x0c, 0xd5, 0x0e, 0x46, 0x73, 0x86, + 0x0c, 0x14, 0x82, 0x01, 0xd5, 0x0c, 0x0c, 0x01, 0x30, 0x10, 0x0c, 0x03, + 0xf0, 0x17, 0xcc, 0x04, 0x00, 0x16, 0x4c, 0x4e, 0x90, 0x56, 0x4c, 0x22, + 0x40, 0xfb, 0x0c, 0x64, 0x16, 0x3d, 0xcf, 0x46, 0x36, 0x9a, 0x8c, 0x76, + 0x91, 0x0b, 0xcc, 0x2a, 0x40, 0x8d, 0x8c, 0x12, 0x00, 0x73, 0x8c, 0x1a, + 0x70, 0x6a, 0xcc, 0x31, 0xa0, 0x22, 0x4c, 0x0e, 0xe0, 0x2f, 0x0c, 0x03, + 0x70, 0x09, 0xcc, 0x01, 0x10, 0x00, 0x85, 0x06, 0xc9, 0x30, 0x01, 0x08, + 0x99, 0x4a, 0x28, 0x61, 0xd0, 0xc2, 0x0e, 0x88, 0xc0, 0xc5, 0x00, 0x64, + 0x42, 0xa6, 0x59, 0xcd, 0xc5, 0x4b, 0x10, 0xb5, 0xc5, 0x56, 0xe0, 0x30, + 0x35, 0xd8, 0x6e, 0x88, 0x2d, 0xff, 0xfb, 0xd4, 0x60, 0x30, 0x0d, 0xc8, + 0x75, 0x70, 0x40, 0x8b, 0xfc, 0x7b, 0x70, 0x4a, 0xae, 0x08, 0x62, 0x34, + 0x22, 0x6e, 0x1e, 0xfd, 0xcd, 0x06, 0x4f, 0xf1, 0x8d, 0xc1, 0x5f, 0xb8, + 0x21, 0x04, 0xf0, 0x89, 0xb8, 0x2b, 0x91, 0x39, 0x30, 0x2c, 0x59, 0x87, + 0xca, 0xe5, 0x50, 0x52, 0x66, 0x44, 0x1a, 0x3c, 0xd4, 0x3a, 0xff, 0xa9, + 0x19, 0x74, 0x1c, 0xb7, 0x68, 0x6b, 0xbb, 0x19, 0x5d, 0x79, 0x65, 0x16, + 0xd9, 0x8e, 0x1a, 0x1f, 0x4c, 0xc7, 0x2c, 0xe8, 0xf4, 0x5b, 0x6b, 0x0c, + 0x2c, 0x45, 0x84, 0xab, 0x43, 0xd5, 0xcb, 0x81, 0xba, 0x86, 0xb6, 0x99, + 0xea, 0x15, 0x3d, 0x61, 0x75, 0x2b, 0x1c, 0x65, 0x7a, 0x35, 0xaa, 0x23, + 0xa8, 0x8c, 0x4e, 0x2c, 0x2d, 0xaf, 0xe3, 0xac, 0x21, 0x11, 0x18, 0x62, + 0x42, 0xca, 0xb6, 0x57, 0x28, 0x6e, 0xd4, 0x2b, 0xc8, 0xc8, 0x98, 0x8f, + 0x19, 0xc9, 0x5f, 0xf0, 0xdb, 0xe2, 0xb0, 0xb1, 0xb8, 0x36, 0x2f, 0xb9, + 0xb3, 0xc2, 0x93, 0x51, 0x5e, 0x48, 0xfe, 0x35, 0x59, 0x61, 0x36, 0x3d, + 0x8b, 0xa7, 0x16, 0x7a, 0x3c, 0x8f, 0x12, 0x7f, 0x05, 0xae, 0xcf, 0x1e, + 0x51, 0xee, 0xe1, 0xb1, 0xb0, 0x30, 0xc2, 0x79, 0x4b, 0x4f, 0x2d, 0x66, + 0x67, 0x6d, 0x78, 0xd9, 0x36, 0x1e, 0x4f, 0x55, 0x65, 0xf7, 0x1d, 0x66, + 0x96, 0xcc, 0x27, 0x29, 0x7c, 0xb4, 0xdc, 0x95, 0xab, 0x84, 0x8e, 0x73, + 0xc2, 0x76, 0xb4, 0x70, 0x28, 0xe2, 0x36, 0xa5, 0x5d, 0x30, 0x65, 0xf0, + 0x14, 0xa0, 0x01, 0x7c, 0x9a, 0x49, 0x3b, 0xb6, 0x9a, 0xd1, 0xad, 0x2d, + 0xa9, 0xb3, 0xbe, 0xa7, 0x6b, 0xd6, 0xbb, 0xf9, 0xf2, 0x1c, 0x75, 0xe5, + 0x29, 0x50, 0xbb, 0x35, 0x13, 0xcc, 0xb5, 0x5a, 0x2d, 0x6c, 0xfc, 0xbd, + 0x56, 0x77, 0x67, 0xdd, 0x90, 0xc6, 0xff, 0x6b, 0x77, 0xfa, 0x52, 0x8b, + 0xdb, 0x75, 0xfd, 0xb6, 0xa7, 0xbf, 0xef, 0xff, 0xda, 0x9a, 0x22, 0xd5, + 0xb2, 0x35, 0x1d, 0xf4, 0x79, 0x14, 0xa1, 0x98, 0x29, 0x98, 0x32, 0x15, + 0x5d, 0xe1, 0x84, 0x63, 0x01, 0x24, 0x04, 0x83, 0x01, 0xb8, 0x03, 0x33, + 0x03, 0x6c, 0x1b, 0x53, 0x04, 0x8c, 0x09, 0xb3, 0x08, 0x74, 0x20, 0x43, + 0x18, 0xa0, 0xea, 0xb3, 0xd1, 0x19, 0x3c, 0x03, 0x1b, 0x88, 0x1e, 0x13, + 0x06, 0xec, 0x00, 0x93, 0x00, 0xc8, 0x11, 0x53, 0x02, 0x4c, 0x18, 0x63, + 0x08, 0x88, 0x0d, 0x43, 0x04, 0x00, 0x0c, 0xb0, 0x80, 0x19, 0x85, 0x80, + 0x07, 0x30, 0xf8, 0x34, 0xc0, 0xc0, 0x00, 0x10, 0x0c, 0xc2, 0xf1, 0xe3, + 0x48, 0x04, 0x19, 0x09, 0x54, 0x04, 0xa3, 0x2f, 0x5b, 0x4b, 0x7f, 0x9b, + 0x84, 0x3d, 0x0f, 0xbf, 0x91, 0xc0, 0xe1, 0xdc, 0xf6, 0x2c, 0x46, 0x6e, + 0x06, 0x99, 0x8a, 0xb1, 0x55, 0xa3, 0x16, 0x77, 0xd5, 0x3a, 0x5c, 0xd1, + 0x37, 0x1b, 0xd1, 0xca, 0x47, 0xe6, 0xec, 0x6a, 0x4b, 0x31, 0x9b, 0x2c, + 0x81, 0x29, 0xa1, 0x53, 0xf4, 0x8d, 0x62, 0xb1, 0x3d, 0xf2, 0x28, 0x92, + 0x8c, 0x64, 0xf9, 0x4d, 0x58, 0x8e, 0x62, 0x5b, 0x30, 0x14, 0xa4, 0x93, + 0xb2, 0x71, 0x49, 0x7a, 0x1a, 0xd3, 0xd7, 0x6c, 0x67, 0xe5, 0x17, 0x21, + 0x0f, 0x1b, 0x3a, 0xc6, 0x8f, 0x2c, 0xb8, 0xf4, 0xe5, 0xa6, 0x52, 0x22, + 0x8b, 0x79, 0xbe, 0xbe, 0x9c, 0x47, 0x53, 0xa5, 0x7b, 0x0c, 0x3e, 0xe3, + 0xb7, 0x75, 0xac, 0x82, 0x1a, 0x2e, 0xbd, 0x69, 0xcf, 0x74, 0x55, 0xdf, + 0xff, 0xd8, 0xad, 0x5a, 0xe5, 0xdd, 0xf8, 0xde, 0x5c, 0xd5, 0x20, 0x81, + 0x9d, 0x8a, 0xd1, 0xfd, 0xe6, 0x7e, 0x36, 0xf7, 0xd1, 0xe7, 0x56, 0x0c, + 0x87, 0xe7, 0xf5, 0xc7, 0x6f, 0x15, 0x6f, 0xea, 0xdb, 0xff, 0x62, 0x39, + 0xad, 0x1d, 0x79, 0xaa, 0x5e, 0xb6, 0x89, 0x39, 0xc5, 0x56, 0x72, 0xe9, + 0xf5, 0xc9, 0x0c, 0x26, 0x12, 0x4b, 0x36, 0x42, 0x4e, 0x1b, 0x06, 0x03, + 0x36, 0x2d, 0xab, 0x4d, 0xc5, 0x9b, 0x36, 0xbf, 0xd5, 0xee, 0xc5, 0x30, + 0x93, 0x63, 0x43, 0x91, 0xa8, 0x98, 0x94, 0x5d, 0x26, 0x36, 0x7c, 0xa7, + 0xf8, 0x08, 0xb3, 0x63, 0x74, 0xfd, 0x1c, 0xea, 0x52, 0xb0, 0x5a, 0x90, + 0xad, 0xa2, 0x2b, 0x66, 0xdb, 0xd3, 0xeb, 0x49, 0x5a, 0x96, 0x7f, 0xe9, + 0xd9, 0x65, 0x2b, 0xeb, 0x99, 0xff, 0x46, 0x65, 0x5e, 0x97, 0x4e, 0x9d, + 0x99, 0xaa, 0xfb, 0x4a, 0x4b, 0xb6, 0x95, 0xda, 0xec, 0x4b, 0x99, 0xd6, + 0x50, 0x85, 0x30, 0x66, 0x10, 0x1c, 0xaf, 0x03, 0x28, 0xb5, 0x00, 0x0e, + 0x33, 0x87, 0x30, 0x0e, 0x00, 0xab, 0x30, 0x00, 0x81, 0x4c, 0x30, 0x17, + 0xc5, 0x77, 0x30, 0x9c, 0x04, 0x08, 0x30, 0x91, 0xc7, 0x53, 0x31, 0xe7, + 0xa9, 0xc6, 0x3d, 0xe8, 0xb8, 0xf5, 0x31, 0xfd, 0x87, 0xa0, 0x30, 0xda, + 0x43, 0x93, 0x30, 0x8d, 0xc2, 0x05, 0x30, 0xbe, 0x81, 0xda, 0x31, 0x95, + 0xc0, 0x92, 0x30, 0xac, 0x41, 0x30, 0x30, 0x22, 0x00, 0x07, 0x28, 0x01, + 0x68, 0x49, 0x10, 0x15, 0x21, 0x08, 0xc1, 0xc6, 0xa3, 0x30, 0x1f, 0x40, + 0x1e, 0x50, 0x17, 0x56, 0xc7, 0x38, 0x70, 0x11, 0x17, 0x59, 0x8d, 0x09, + 0x2e, 0xa0, 0x07, 0x5d, 0x5b, 0xcc, 0x64, 0x30, 0x82, 0xa5, 0x91, 0x67, + 0x71, 0x63, 0xbb, 0x30, 0x98, 0xdc, 0x1a, 0xcd, 0x9b, 0x22, 0x6e, 0x87, + 0x08, 0x62, 0xee, 0xfc, 0x3b, 0x1c, 0x8f, 0x25, 0xdb, 0xb8, 0xbb, 0x97, + 0xd4, 0x6d, 0xb5, 0x2e, 0xbc, 0x9a, 0x5a, 0xec, 0xc1, 0xb6, 0x16, 0x34, + 0x3e, 0xa9, 0x84, 0x72, 0xa8, 0x56, 0xa1, 0x42, 0x6d, 0x6c, 0x2f, 0xb7, + 0x82, 0x75, 0x21, 0x0d, 0xeb, 0xff, 0xfb, 0xd4, 0x60, 0x49, 0x8d, 0xd9, + 0x04, 0x70, 0x3f, 0x03, 0xfc, 0x7b, 0x70, 0x57, 0xee, 0x08, 0x41, 0x34, + 0x22, 0x6e, 0x1d, 0x29, 0xc1, 0x08, 0x6f, 0xed, 0x8d, 0xc1, 0x50, 0xb8, + 0x21, 0x05, 0x00, 0x95, 0xb8, 0x31, 0xd4, 0x2a, 0x46, 0xa5, 0x8a, 0x97, + 0x35, 0x95, 0xc3, 0xf5, 0xcb, 0x32, 0x9a, 0x8d, 0xe9, 0xca, 0x41, 0x80, + 0x94, 0x7b, 0x53, 0xf6, 0x64, 0x8b, 0xe2, 0x7e, 0x7b, 0x24, 0x2f, 0x15, + 0x58, 0x90, 0x67, 0x40, 0xaa, 0xda, 0x30, 0x72, 0xab, 0x9a, 0x61, 0x9d, + 0xec, 0x0f, 0xce, 0xfc, 0xa8, 0x5c, 0x60, 0xc5, 0x5c, 0xab, 0x19, 0x92, + 0x6d, 0x8d, 0x58, 0x3c, 0x5b, 0x21, 0x69, 0xb2, 0x4d, 0xb5, 0xcc, 0xd2, + 0xa3, 0x7b, 0x15, 0x9a, 0x9a, 0x4f, 0xb8, 0x26, 0x4f, 0x16, 0x5d, 0x42, + 0xbb, 0x64, 0xf1, 0x54, 0x2a, 0x47, 0xef, 0x54, 0x0e, 0x6e, 0x4d, 0xaf, + 0xd4, 0x8f, 0xe3, 0x37, 0x33, 0x40, 0x8a, 0xf2, 0x33, 0x83, 0xdc, 0xcc, + 0xbb, 0x55, 0x45, 0x82, 0x94, 0x73, 0x67, 0x64, 0x79, 0x0d, 0xca, 0x0b, + 0x54, 0x65, 0xf5, 0xf6, 0xca, 0xa8, 0x73, 0x2a, 0xbd, 0x1e, 0x84, 0xa3, + 0x23, 0xa9, 0x12, 0x24, 0xec, 0xe4, 0x57, 0xa1, 0x45, 0xde, 0x73, 0x98, + 0x7b, 0x90, 0x90, 0x80, 0x50, 0x4d, 0x35, 0xd4, 0xa5, 0xad, 0xfb, 0x2d, + 0x4d, 0x4c, 0x61, 0x31, 0xec, 0x32, 0x45, 0xfa, 0x73, 0x9c, 0xaf, 0x65, + 0x26, 0x6e, 0x04, 0x67, 0xb2, 0x1e, 0x97, 0x65, 0x31, 0x55, 0x57, 0xbe, + 0xba, 0x55, 0xf6, 0xd0, 0xca, 0xd7, 0x53, 0x56, 0x97, 0x77, 0x52, 0xa1, + 0x2d, 0xf6, 0xb2, 0xf4, 0x7a, 0x53, 0xa5, 0xd1, 0x4c, 0xd7, 0xeb, 0x5a, + 0xdd, 0xb4, 0x3f, 0x79, 0xaa, 0x5b, 0xdb, 0xe8, 0x84, 0x4f, 0x2d, 0x15, + 0xec, 0xd4, 0xc1, 0xce, 0x71, 0x2c, 0x55, 0x16, 0x38, 0x20, 0xa5, 0x10, + 0x82, 0x47, 0x12, 0x20, 0x04, 0x20, 0xe6, 0x24, 0x8c, 0x05, 0xe0, 0x0e, + 0x4c, 0x07, 0x30, 0x0e, 0x0c, 0x0c, 0xc0, 0x5f, 0xcc, 0x16, 0xe0, 0x1e, + 0x0c, 0x23, 0xe0, 0x2d, 0x4c, 0x6c, 0x11, 0x01, 0x0f, 0x57, 0x91, 0xa7, + 0xcc, 0x70, 0x70, 0x25, 0x8c, 0x20, 0x80, 0x2f, 0x8c, 0x07, 0x80, 0x47, + 0x0c, 0x00, 0x20, 0x66, 0x4c, 0x09, 0xf0, 0x2f, 0x4c, 0x03, 0xd0, 0x0e, + 0x4c, 0x00, 0x60, 0x09, 0x4c, 0x00, 0x80, 0x01, 0x13, 0x18, 0x94, 0x08, + 0x40, 0x08, 0x67, 0xfe, 0xa6, 0xf4, 0x0e, 0x9d, 0x50, 0xed, 0xb6, 0xe7, + 0x31, 0x15, 0x59, 0x2f, 0xa4, 0x96, 0x26, 0xd1, 0x07, 0x43, 0xe9, 0xb1, + 0xad, 0x18, 0x4e, 0x27, 0x01, 0xda, 0x2d, 0xf3, 0x2a, 0x7a, 0xdb, 0x81, + 0x67, 0xd0, 0xb3, 0x90, 0xcb, 0xfb, 0x16, 0x76, 0xe5, 0x12, 0xa9, 0x1d, + 0x2d, 0x68, 0xbb, 0x04, 0xbd, 0x2e, 0x91, 0x46, 0xa0, 0x4a, 0x57, 0xe8, + 0xbe, 0x77, 0xa3, 0x8a, 0xd0, 0x32, 0x59, 0x5a, 0x4d, 0x88, 0xe1, 0x30, + 0xfa, 0xd3, 0x78, 0xf5, 0x2b, 0xcd, 0xb3, 0x57, 0x9d, 0xf8, 0xe7, 0x57, + 0xc7, 0x5d, 0x5f, 0x6b, 0x53, 0xd9, 0x85, 0xca, 0xa1, 0xc5, 0x66, 0x6f, + 0x2e, 0xd3, 0x9f, 0x7f, 0xea, 0x89, 0x7c, 0x52, 0xfe, 0x74, 0xd6, 0x37, + 0xa0, 0x8f, 0xf7, 0xe0, 0xcc, 0xb3, 0x70, 0xf5, 0xfd, 0xb6, 0x71, 0xac, + 0xfc, 0xb3, 0xf7, 0x59, 0xb4, 0x8b, 0x3e, 0x7a, 0x3a, 0x52, 0xd3, 0x4a, + 0xed, 0x2d, 0x4a, 0x7e, 0x3d, 0xb9, 0x13, 0x1b, 0x7d, 0x59, 0x9b, 0x1e, + 0xee, 0x26, 0xab, 0x8c, 0x51, 0xcf, 0xbc, 0xb3, 0xdb, 0xef, 0xad, 0x6a, + 0x7e, 0xd5, 0x5d, 0x97, 0xb3, 0xf0, 0xa7, 0x3d, 0x81, 0xb8, 0xaa, 0xe2, + 0xc2, 0x81, 0xbb, 0xa2, 0xe9, 0xa9, 0x34, 0x6b, 0x51, 0xc5, 0xcd, 0x3d, + 0xd8, 0x2a, 0x99, 0xea, 0xf4, 0x69, 0xfc, 0x95, 0xb2, 0xe4, 0xcc, 0xe7, + 0x39, 0xd3, 0x2b, 0x66, 0x24, 0x85, 0x6e, 0xd6, 0xf4, 0xbd, 0x29, 0xfb, + 0xaa, 0x6b, 0xed, 0xea, 0xe5, 0x9a, 0xe8, 0x89, 0x4a, 0xc8, 0x77, 0x4d, + 0x3a, 0x22, 0xae, 0xf5, 0x33, 0xd3, 0xb7, 0xdf, 0xb9, 0x3f, 0x4d, 0xf7, + 0xd5, 0x2e, 0xaa, 0x8d, 0x75, 0xcc, 0xac, 0x23, 0x1e, 0x8f, 0x76, 0x30, + 0xc2, 0xa9, 0x0c, 0x20, 0x1f, 0x1c, 0x10, 0x41, 0x50, 0x47, 0x60, 0x0d, + 0x30, 0x17, 0xc0, 0xc6, 0x30, 0x0c, 0x01, 0x4d, 0x30, 0x19, 0x81, 0x8a, + 0x31, 0x5a, 0x03, 0x91, 0x30, 0x06, 0x07, 0x96, 0x30, 0x38, 0x2e, 0x03, + 0x30, 0xa1, 0x3a, 0x00, 0x30, 0x50, 0x88, 0x09, 0x30, 0x60, 0x83, 0x30, + 0x30, 0x86, 0x01, 0x18, 0x30, 0xc5, 0xc0, 0x15, 0x31, 0xb2, 0x80, 0x3a, + 0x30, 0xb4, 0x01, 0x56, 0x30, 0x21, 0x40, 0x04, 0x30, 0x1d, 0x80, 0x05, + 0x02, 0x89, 0xa6, 0x02, 0x81, 0xe6, 0x0e, 0x04, 0x06, 0x1e, 0x54, 0xa6, + 0x59, 0x89, 0x28, 0xd9, 0x32, 0x86, 0xc9, 0x19, 0x28, 0x75, 0x52, 0xd2, + 0x00, 0x6d, 0x9f, 0xc5, 0xce, 0x61, 0x58, 0x48, 0xcc, 0x1f, 0xb5, 0xbb, + 0x34, 0xee, 0xac, 0x3b, 0xbf, 0x3c, 0xe7, 0x3b, 0xf2, 0x50, 0xb0, 0x0a, + 0x99, 0x8d, 0xd1, 0xc2, 0x84, 0x61, 0xe9, 0x41, 0x24, 0x8c, 0x2b, 0x2c, + 0xaa, 0x50, 0x82, 0x36, 0xb5, 0x0c, 0xba, 0x12, 0xf7, 0x71, 0x5b, 0x60, + 0xb1, 0x20, 0xb6, 0x6e, 0x90, 0xbe, 0x3a, 0x91, 0xc9, 0xe2, 0x71, 0x68, + 0x4b, 0x26, 0x03, 0x60, 0xf0, 0x62, 0x4a, 0x16, 0x34, 0xf0, 0x64, 0x53, + 0x84, 0xe7, 0x07, 0xf1, 0xd5, 0x19, 0x70, 0xfc, 0x9b, 0xc4, 0xb4, 0xa2, + 0x19, 0x36, 0xae, 0x1c, 0x9a, 0x9b, 0x07, 0x65, 0xd4, 0xae, 0x99, 0x22, + 0x57, 0x9a, 0xb8, 0xe1, 0x71, 0xff, 0xfb, 0xd4, 0x60, 0x5c, 0x8d, 0xd8, + 0xfa, 0x70, 0x3f, 0x03, 0xfd, 0x63, 0x70, 0x4d, 0x6d, 0xc8, 0x52, 0x34, + 0x42, 0x6e, 0x5b, 0xc9, 0xc1, 0x08, 0x4f, 0xed, 0x2d, 0xc1, 0x5a, 0x38, + 0x21, 0x08, 0xd0, 0x95, 0xb8, 0x2d, 0x55, 0x87, 0xb5, 0x0e, 0x96, 0xb4, + 0x19, 0xa6, 0x6c, 0xd5, 0x41, 0x65, 0x7f, 0x93, 0x0d, 0x0a, 0x49, 0xa8, + 0x25, 0x0c, 0x17, 0x1a, 0x15, 0x9f, 0x3e, 0x12, 0x99, 0x85, 0x22, 0xa5, + 0x74, 0x68, 0x7e, 0xb9, 0xeb, 0x83, 0x36, 0xa8, 0x7a, 0x58, 0x2d, 0x18, + 0x98, 0x16, 0x99, 0x84, 0xc8, 0x48, 0x60, 0xe8, 0xe4, 0xd8, 0xba, 0xd9, + 0xd9, 0x95, 0x4b, 0x06, 0x4e, 0x0f, 0xa3, 0xb8, 0x94, 0xc2, 0x77, 0x9e, + 0x57, 0x63, 0xf8, 0x92, 0x2a, 0x3b, 0x3b, 0x38, 0x29, 0x97, 0x4e, 0xc7, + 0x71, 0x29, 0x72, 0xc4, 0xaa, 0xc5, 0x43, 0x04, 0xd0, 0xb8, 0xca, 0x10, + 0xa4, 0x7b, 0x50, 0x0d, 0x5d, 0x11, 0x4a, 0x4b, 0x82, 0xe4, 0x8a, 0x4d, + 0x10, 0x00, 0x1c, 0xa8, 0x27, 0x4e, 0xb5, 0xd6, 0x65, 0x53, 0xa8, 0xb7, + 0xff, 0xab, 0xad, 0x97, 0x94, 0x53, 0x31, 0x98, 0x58, 0x9b, 0x19, 0x56, + 0xf6, 0x66, 0xf6, 0x5d, 0x52, 0xd6, 0x77, 0xaa, 0x51, 0x15, 0xba, 0xef, + 0xe9, 0xef, 0x76, 0xf6, 0xfa, 0xf4, 0xbd, 0xe8, 0x9f, 0xfb, 0xae, 0xdf, + 0xf4, 0xaf, 0xca, 0xf7, 0xf5, 0x6f, 0xfa, 0x6b, 0xa5, 0x93, 0xab, 0x95, + 0xb3, 0x11, 0x0c, 0xf2, 0x4c, 0xcb, 0x4a, 0xb9, 0x68, 0xc8, 0x66, 0x05, + 0x73, 0x03, 0x16, 0x15, 0x51, 0x2a, 0x60, 0x0f, 0x80, 0x18, 0x44, 0x05, + 0xa1, 0x81, 0x06, 0x05, 0xc1, 0x85, 0x20, 0x01, 0x91, 0x84, 0x26, 0x08, + 0x99, 0x8c, 0xe0, 0x30, 0xa1, 0xea, 0x5c, 0x4b, 0xe9, 0x8d, 0xd0, 0x0c, + 0x51, 0x84, 0x4e, 0x0a, 0x19, 0x81, 0xae, 0x09, 0xe9, 0x81, 0x14, 0x0c, + 0xb1, 0x81, 0xe6, 0x04, 0xb1, 0x81, 0x1a, 0x06, 0x79, 0x80, 0x18, 0x01, + 0x21, 0x80, 0x00, 0x00, 0x99, 0x20, 0x10, 0xa8, 0x9b, 0x39, 0x32, 0xa6, + 0xf2, 0x76, 0x25, 0x99, 0x23, 0x8b, 0x43, 0xf6, 0xa5, 0xd0, 0x54, 0x0f, + 0x27, 0xa9, 0x4a, 0x0e, 0x21, 0xaf, 0x14, 0x97, 0x5c, 0x9c, 0xdd, 0x2b, + 0x79, 0x19, 0x6d, 0xb6, 0xa2, 0x6a, 0xe2, 0x18, 0x97, 0xcb, 0x24, 0xb1, + 0xc6, 0x77, 0x47, 0x15, 0x90, 0x3d, 0xb3, 0x4e, 0x65, 0x1c, 0xa6, 0x4b, + 0x52, 0xdc, 0xcd, 0x3a, 0x30, 0xbb, 0x92, 0x22, 0x42, 0xd9, 0x3a, 0x35, + 0xf2, 0x34, 0x50, 0xe5, 0x49, 0x59, 0x63, 0x54, 0x8b, 0x3b, 0x11, 0xf7, + 0xac, 0x20, 0x5b, 0x15, 0xab, 0x9c, 0x5a, 0x7a, 0x7e, 0x73, 0xd6, 0x24, + 0x59, 0x28, 0x61, 0x9d, 0x44, 0x92, 0xd2, 0xa9, 0xb2, 0xc6, 0xdc, 0x14, + 0x4b, 0xed, 0x67, 0x51, 0xb9, 0xc5, 0x9b, 0x5d, 0xa5, 0x6a, 0x1f, 0xa1, + 0x55, 0x1f, 0xde, 0x94, 0x1d, 0x14, 0xf1, 0x44, 0xa5, 0x7a, 0xf6, 0xa2, + 0xa5, 0xe6, 0xdf, 0xc8, 0xcf, 0xc6, 0x11, 0x62, 0x0a, 0x2d, 0x95, 0x15, + 0xfd, 0x54, 0xee, 0xa7, 0x78, 0x87, 0x12, 0xbb, 0x66, 0x32, 0xc8, 0x6a, + 0x70, 0x39, 0x07, 0x23, 0x8c, 0xc5, 0x26, 0x90, 0x92, 0x4c, 0x2c, 0x24, + 0x84, 0x5c, 0xfa, 0x6a, 0x65, 0xec, 0xc8, 0xad, 0x2a, 0x38, 0xa8, 0xa0, + 0xd9, 0xae, 0x32, 0xf1, 0xe5, 0x68, 0xb3, 0x84, 0x64, 0xcd, 0x31, 0xb0, + 0x0d, 0x98, 0xc0, 0xec, 0x78, 0x8b, 0xa2, 0xda, 0xca, 0x9e, 0x46, 0x5a, + 0xef, 0xfe, 0xe7, 0xb7, 0x9d, 0x57, 0xba, 0x2d, 0x9f, 0x47, 0x7e, 0xbb, + 0xf7, 0xaa, 0x3a, 0x7b, 0xd3, 0xfa, 0x57, 0x6d, 0x0c, 0xae, 0xfa, 0x32, + 0x5d, 0xdb, 0x7f, 0x9d, 0xce, 0xcb, 0xda, 0xb2, 0x7a, 0x31, 0xf4, 0x0f, + 0x8e, 0x16, 0x62, 0x07, 0x18, 0x30, 0x8a, 0x34, 0x68, 0xa9, 0xce, 0x3c, + 0x58, 0xa9, 0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x27, 0x05, 0xc6, 0x4a, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x00, 0x64, 0x00, 0x20, 0x29, 0x66, 0x0e, 0x58, 0x24, 0x26, 0x03, + 0xa0, 0x61, 0x06, 0x16, 0x60, 0x0a, 0x86, 0x23, 0x69, 0x13, 0x26, 0x1d, + 0x6c, 0x80, 0x07, 0x62, 0x3c, 0xd2, 0xa6, 0x23, 0x59, 0x9d, 0x86, 0x96, + 0x62, 0x52, 0x46, 0x90, 0xa8, 0xa4, 0x26, 0x35, 0x10, 0x91, 0x46, 0x2b, + 0x58, 0x64, 0xe6, 0x00, 0x10, 0x49, 0x46, 0x09, 0xe8, 0x30, 0xa6, 0x0a, + 0xd0, 0x3a, 0x81, 0x41, 0x29, 0x93, 0x23, 0x20, 0xb8, 0x59, 0xbb, 0x70, + 0xc6, 0x80, 0x46, 0x9f, 0x1c, 0x7e, 0x7b, 0xca, 0x81, 0xab, 0x72, 0xa7, + 0x7d, 0x87, 0x98, 0xe5, 0x50, 0x6e, 0xa5, 0xb1, 0x91, 0x02, 0xa6, 0x06, + 0x18, 0x93, 0x1d, 0xc0, 0x44, 0x00, 0x70, 0x0c, 0x1c, 0x97, 0x31, 0xa1, + 0x68, 0xc1, 0x84, 0x30, 0x12, 0x18, 0xc8, 0xc4, 0x03, 0x03, 0x87, 0x0c, + 0x6c, 0x34, 0x02, 0x07, 0xcc, 0x3e, 0x02, 0x30, 0x30, 0x7c, 0xc3, 0x21, + 0x61, 0xe2, 0x8a, 0x0b, 0x85, 0xc3, 0xa0, 0xd1, 0xa8, 0x5c, 0x6c, 0x61, + 0x40, 0x59, 0x10, 0x1d, 0x3c, 0x8c, 0x2c, 0x16, 0x30, 0x68, 0x84, 0x84, + 0x08, 0xaa, 0x69, 0x7e, 0xfe, 0x17, 0x38, 0xac, 0x10, 0x61, 0x50, 0x89, + 0x20, 0x18, 0x1c, 0x0c, 0x41, 0xb0, 0xc0, 0x32, 0x07, 0x97, 0xf1, 0xac, + 0xa8, 0x1a, 0xd0, 0x7a, 0x42, 0xc2, 0x4b, 0x50, 0x52, 0xc7, 0x16, 0x2e, + 0xb3, 0x31, 0x1a, 0x4a, 0xeb, 0x6b, 0x49, 0x82, 0x8f, 0x4c, 0xb5, 0xa8, + 0x25, 0xdb, 0x5f, 0x04, 0x18, 0x76, 0xa0, 0xab, 0x06, 0x42, 0x03, 0x43, + 0x9a, 0x95, 0xaa, 0x62, 0xcf, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xcb, + 0x81, 0x70, 0x40, 0x13, 0xfc, 0xc3, 0x70, 0x64, 0xee, 0x08, 0x31, 0x40, + 0x65, 0x6e, 0xa6, 0x39, 0xc1, 0x04, 0x4f, 0xf1, 0xed, 0xc1, 0x13, 0x1a, + 0x21, 0xcc, 0xa0, 0x89, 0x70, 0xa6, 0xe4, 0xb5, 0x4c, 0xdc, 0xa4, 0x98, + 0x50, 0x75, 0xb2, 0x91, 0x6a, 0xc8, 0xb8, 0x19, 0x3c, 0x6a, 0x34, 0xa3, + 0x49, 0x98, 0xa6, 0x0d, 0x15, 0xb6, 0x61, 0x92, 0x16, 0x3e, 0x95, 0x13, + 0x2e, 0xdb, 0xb2, 0xfd, 0xc2, 0x1d, 0xe7, 0x72, 0x7e, 0x5f, 0x00, 0x43, + 0x32, 0xd6, 0xde, 0x24, 0xd2, 0x1b, 0x9d, 0x04, 0xc3, 0xe9, 0x56, 0x72, + 0x0e, 0x72, 0xde, 0x26, 0xba, 0xef, 0xc3, 0x11, 0x96, 0x57, 0x5e, 0xac, + 0x2a, 0x7e, 0x18, 0x92, 0xcd, 0x47, 0xa8, 0x9d, 0x88, 0x9b, 0xfd, 0x4d, + 0x52, 0x9a, 0x41, 0xd8, 0x61, 0xfc, 0xa4, 0x89, 0xc4, 0xa5, 0xb2, 0xf9, + 0xaa, 0xb1, 0x7a, 0x57, 0x9e, 0x97, 0x38, 0x72, 0x66, 0x47, 0x4d, 0x14, + 0xb9, 0x57, 0x18, 0xc7, 0x37, 0x2f, 0xc2, 0x31, 0x4c, 0xfe, 0x5d, 0xb7, + 0x18, 0xc6, 0x57, 0xf2, 0xd9, 0x54, 0xba, 0xe5, 0x2d, 0x48, 0xab, 0xff, + 0x0d, 0x4d, 0xde, 0xc2, 0x76, 0xbc, 0xfb, 0x73, 0x82, 0x61, 0xe8, 0x3a, + 0x2f, 0x09, 0x93, 0xca, 0x9c, 0x48, 0xbb, 0xbe, 0xfd, 0x82, 0x00, 0x2b, + 0x2d, 0x04, 0x4c, 0x54, 0xee, 0xe8, 0x3d, 0x53, 0x58, 0x52, 0x0e, 0x78, + 0x22, 0x3b, 0x4b, 0x99, 0x19, 0x3c, 0xe2, 0x95, 0x86, 0xa9, 0x38, 0x5f, + 0x66, 0x73, 0x23, 0xe9, 0x3e, 0x8a, 0x8c, 0x6a, 0xa3, 0x35, 0x9a, 0x34, + 0xc5, 0x23, 0x50, 0xc6, 0xa3, 0x9a, 0x54, 0x6b, 0x3b, 0x23, 0x7a, 0xeb, + 0xbf, 0x2a, 0x25, 0x7d, 0xee, 0x7c, 0xa5, 0xf9, 0x2d, 0x75, 0xea, 0xe8, + 0x8f, 0x74, 0x7e, 0x9d, 0x05, 0xf3, 0xd2, 0xca, 0xda, 0xf9, 0x9e, 0x5d, + 0x16, 0x73, 0x22, 0x3b, 0xa1, 0x8e, 0x79, 0x19, 0x45, 0x44, 0x06, 0xa1, + 0xd0, 0xc2, 0xa4, 0x65, 0x0e, 0x00, 0xa2, 0x62, 0x03, 0x87, 0x81, 0xc5, + 0x0a, 0x1c, 0x10, 0x34, 0x03, 0x01, 0x70, 0x0a, 0xe3, 0x02, 0x8c, 0x02, + 0xa3, 0x0d, 0x30, 0x48, 0x23, 0x0d, 0xb4, 0x0d, 0x63, 0x06, 0xc0, 0x1e, + 0x43, 0x17, 0x4c, 0x91, 0x93, 0xa4, 0xed, 0x15, 0xa3, 0x01, 0x5c, 0x4e, + 0x23, 0xc4, 0x32, 0x39, 0x73, 0x24, 0x64, 0x0c, 0x43, 0x17, 0x4c, 0x0b, + 0xd3, 0x0c, 0x48, 0x12, 0x53, 0x01, 0x28, 0x0b, 0xc3, 0x01, 0x70, 0x02, + 0x83, 0x04, 0xec, 0x08, 0xd3, 0x43, 0x12, 0x4d, 0x55, 0x47, 0x34, 0x78, + 0x60, 0xc1, 0x8b, 0xb4, 0xff, 0x18, 0xa5, 0x9e, 0xe0, 0xba, 0x60, 0xc3, + 0xf9, 0xf7, 0x4d, 0x06, 0x43, 0x57, 0x18, 0xe0, 0x6a, 0xaa, 0xc5, 0x00, + 0x11, 0x20, 0xb1, 0x80, 0x84, 0x04, 0x80, 0xd4, 0x75, 0x00, 0x01, 0x00, + 0x44, 0xe2, 0xe7, 0x83, 0x03, 0x65, 0xb2, 0x28, 0x0b, 0x98, 0x48, 0x0e, + 0x18, 0x15, 0x30, 0x58, 0x31, 0x38, 0xcb, 0x5b, 0x06, 0x7a, 0x94, 0xa9, + 0x69, 0x6e, 0x97, 0x12, 0x20, 0xa6, 0xab, 0x5a, 0xbe, 0xdf, 0x3f, 0x4c, + 0x19, 0xc9, 0x80, 0x19, 0x8c, 0x69, 0x69, 0x32, 0x74, 0xc5, 0x66, 0xe2, + 0xe2, 0x84, 0x1b, 0xc5, 0xf8, 0xed, 0x17, 0x15, 0x62, 0x79, 0x3a, 0xc8, + 0x73, 0x15, 0xe4, 0x84, 0xe1, 0x13, 0xa0, 0x41, 0x12, 0xb0, 0x07, 0x44, + 0x3c, 0x00, 0x6b, 0x20, 0x5f, 0x32, 0xad, 0x12, 0x10, 0x90, 0x8c, 0x90, + 0x08, 0x58, 0x45, 0xc8, 0x58, 0x8d, 0xd3, 0xa5, 0x4c, 0x49, 0x94, 0x8a, + 0x69, 0xdf, 0xa9, 0x54, 0x88, 0x71, 0x8c, 0x74, 0x9f, 0xd2, 0x98, 0xad, + 0x05, 0xb9, 0xda, 0x1b, 0x11, 0xe2, 0x12, 0xe9, 0xb9, 0x75, 0x68, 0xaf, + 0x61, 0x21, 0x5d, 0xf4, 0x38, 0xb0, 0x62, 0xce, 0xd5, 0x02, 0x05, 0xee, + 0xc8, 0xe5, 0x6a, 0xc4, 0xee, 0xad, 0xe0, 0x3c, 0x72, 0x89, 0xd5, 0x50, + 0x1a, 0x76, 0xca, 0xc1, 0xef, 0x1e, 0x2d, 0x71, 0x2f, 0xcc, 0x68, 0x38, + 0x9e, 0x66, 0xc9, 0x21, 0x3d, 0x7b, 0x1a, 0x67, 0x6f, 0x1b, 0x33, 0x48, + 0x2c, 0xcc, 0xd7, 0x89, 0x0a, 0x13, 0xca, 0x33, 0x39, 0x56, 0xf6, 0x91, + 0x7b, 0x7e, 0x2e, 0xe4, 0xb6, 0xef, 0x01, 0x9d, 0xc5, 0xd4, 0x8f, 0xdb, + 0xa2, 0xd6, 0x24, 0xbd, 0xa9, 0xb1, 0x3c, 0xec, 0x00, 0x54, 0x69, 0x00, + 0x41, 0x5a, 0x3b, 0x33, 0xdf, 0x38, 0xaa, 0x35, 0xd7, 0xff, 0xdf, 0xcb, + 0xff, 0xb5, 0x15, 0x7d, 0xbd, 0x59, 0x9b, 0x4b, 0xb0, 0xaa, 0xbb, 0x2b, + 0xd1, 0x55, 0x55, 0x9d, 0x2b, 0x23, 0x24, 0x67, 0x39, 0x1e, 0x82, 0xcd, + 0x21, 0x7e, 0x1c, 0x17, 0x8a, 0x3e, 0xe4, 0x11, 0xe2, 0xad, 0x17, 0x0a, + 0x35, 0x06, 0x9d, 0xff, 0xf7, 0xeb, 0x16, 0x60, 0x28, 0xd0, 0x80, 0x00, + 0x18, 0x50, 0xe0, 0x01, 0x5a, 0x30, 0x17, 0x40, 0x32, 0x30, 0x1f, 0x81, + 0xf2, 0x30, 0x81, 0x00, 0x1e, 0x30, 0x23, 0xc0, 0xc3, 0x30, 0x34, 0xc2, + 0x36, 0x30, 0xf2, 0x8c, 0x57, 0x39, 0xba, 0x0f, 0x44, 0x30, 0x86, 0xca, + 0x1f, 0x3f, 0x95, 0x47, 0x3d, 0x32, 0x38, 0x85, 0x92, 0x30, 0x10, 0x02, + 0xee, 0x30, 0x7f, 0x80, 0xc7, 0x30, 0x27, 0x00, 0xb1, 0x1c, 0x01, 0x8c, + 0xc0, 0x84, 0x04, 0x14, 0x89, 0x46, 0x67, 0xea, 0xd1, 0x9c, 0x43, 0x86, + 0x47, 0x63, 0x9a, 0x84, 0x66, 0x61, 0x79, 0x38, 0x69, 0x54, 0xcb, 0x74, + 0x33, 0xdb, 0x8b, 0x4c, 0x26, 0x44, 0x35, 0xf9, 0x84, 0x58, 0x1e, 0x50, + 0x2f, 0x2e, 0x39, 0x00, 0x85, 0x6c, 0x11, 0x1a, 0x56, 0x10, 0xc1, 0x00, + 0x08, 0x74, 0x48, 0x00, 0xa3, 0xff, 0xfb, 0xd4, 0x60, 0x36, 0x0f, 0xc8, + 0x45, 0x70, 0x41, 0x03, 0xfc, 0x63, 0x70, 0x30, 0x25, 0xe8, 0xe3, 0x14, + 0x03, 0x4d, 0x24, 0xed, 0xc1, 0x04, 0x0f, 0xf5, 0xed, 0xc1, 0x4c, 0xb7, + 0xe1, 0x05, 0x30, 0x95, 0xb8, 0x60, 0x91, 0x4b, 0xee, 0xdd, 0x90, 0x27, + 0x44, 0xd3, 0x5d, 0xb7, 0x5d, 0xfa, 0x4e, 0x38, 0xbb, 0xea, 0xec, 0x32, + 0x49, 0x03, 0x57, 0x9b, 0x80, 0x2e, 0x45, 0xa1, 0xd9, 0x04, 0xf2, 0xd8, + 0x9c, 0x7a, 0x58, 0xf1, 0x20, 0x7c, 0x48, 0x80, 0xe2, 0x72, 0x90, 0xe9, + 0xc7, 0xa7, 0x1c, 0xb9, 0xe3, 0x95, 0x6b, 0xdf, 0x68, 0xa4, 0x8d, 0x5c, + 0x48, 0x70, 0x21, 0xd9, 0xd6, 0xce, 0xd7, 0xb0, 0xd4, 0x4c, 0xaa, 0x82, + 0x55, 0xad, 0xce, 0x43, 0x39, 0x71, 0xa6, 0xd6, 0x95, 0x1d, 0x9b, 0xc7, + 0x1b, 0xe9, 0xb8, 0xb9, 0x4f, 0x7a, 0x91, 0x1d, 0xb6, 0xb1, 0xc6, 0x14, + 0x33, 0x12, 0x67, 0xbe, 0x35, 0x2b, 0xec, 0x72, 0xcb, 0x97, 0xd8, 0x0e, + 0x95, 0xfe, 0xc2, 0xc4, 0xb6, 0xfd, 0x9e, 0x56, 0x8d, 0x2e, 0xbc, 0xc5, + 0x7d, 0x65, 0xff, 0xae, 0xfa, 0x2e, 0x42, 0x6a, 0x16, 0x6a, 0xce, 0x39, + 0x66, 0x2f, 0x3c, 0xd6, 0xd6, 0x2a, 0x2f, 0x42, 0x5d, 0x6a, 0xb0, 0xfe, + 0xb7, 0x4b, 0x29, 0x8f, 0x57, 0x59, 0x72, 0x79, 0x66, 0x96, 0x2d, 0xae, + 0xf6, 0x96, 0xd4, 0x20, 0x5e, 0xe0, 0x16, 0xda, 0x89, 0x00, 0xef, 0xff, + 0xff, 0xfe, 0x99, 0x11, 0x66, 0xc6, 0xee, 0x9f, 0x6b, 0xe8, 0x48, 0x9c, + 0x47, 0x98, 0xd6, 0xb9, 0x74, 0xfd, 0x49, 0x15, 0xb7, 0x1b, 0x0e, 0x05, + 0xe5, 0x88, 0x31, 0x08, 0x03, 0x7d, 0xc9, 0xfd, 0xbc, 0x37, 0x47, 0x87, + 0x7f, 0xff, 0xff, 0xc4, 0x3f, 0xa8, 0xc0, 0x31, 0x00, 0x2c, 0xc0, 0x5a, + 0x0b, 0x80, 0xc1, 0x65, 0x03, 0xe4, 0xc0, 0x6b, 0x07, 0x40, 0xc0, 0xb5, + 0x09, 0xcc, 0xc2, 0xfc, 0x39, 0x58, 0xd4, 0xf0, 0x52, 0x84, 0xc7, 0x9e, + 0x18, 0x8c, 0xff, 0xb0, 0x9b, 0xb0, 0xc8, 0x73, 0x06, 0xe4, 0xc2, 0xaa, + 0x0d, 0x5c, 0xc3, 0x55, 0x06, 0xa8, 0xc0, 0x15, 0x04, 0xa4, 0xc0, 0xbb, + 0x02, 0xc0, 0xc0, 0x9e, 0x06, 0xa0, 0xc4, 0xb1, 0x98, 0xc8, 0xf4, 0x98, + 0xc7, 0xe0, 0x30, 0xc9, 0x62, 0x28, 0xce, 0x70, 0x88, 0xc0, 0x65, 0xec, + 0x14, 0xf6, 0x98, 0x57, 0x0f, 0x9b, 0x32, 0x01, 0x98, 0xb2, 0x55, 0x9c, + 0x32, 0x2c, 0x98, 0x36, 0x02, 0x8f, 0x03, 0x26, 0x02, 0x80, 0x66, 0x11, + 0x84, 0x8c, 0x48, 0xc2, 0xb0, 0x05, 0x90, 0x98, 0x36, 0x00, 0x97, 0x34, + 0xc0, 0xb0, 0x26, 0x58, 0x60, 0xf0, 0x10, 0xbf, 0xc6, 0x00, 0xc7, 0x15, + 0x89, 0xbd, 0x8a, 0x2a, 0x1c, 0x07, 0xaa, 0xbb, 0x76, 0x5e, 0x69, 0x47, + 0x61, 0x4c, 0xea, 0x46, 0x60, 0x67, 0x5d, 0xdd, 0x55, 0x35, 0xad, 0x1f, + 0x97, 0x44, 0xa9, 0x5b, 0xad, 0xf5, 0x4a, 0x95, 0x38, 0xa1, 0x36, 0x1f, + 0xb1, 0x1c, 0x0f, 0x50, 0xf6, 0x26, 0x14, 0x28, 0xf0, 0x6d, 0x80, 0x86, + 0xac, 0x5c, 0x31, 0x30, 0xa4, 0x42, 0x0c, 0x17, 0x79, 0x4a, 0x46, 0x6e, + 0x6d, 0x82, 0xa9, 0x86, 0xf6, 0xec, 0x31, 0x54, 0xad, 0x76, 0x6b, 0x73, + 0x39, 0x53, 0xf3, 0xbe, 0x7f, 0x12, 0x03, 0xfd, 0x38, 0xc8, 0xab, 0xcb, + 0xc7, 0xd5, 0x7d, 0x01, 0x85, 0xaa, 0x3b, 0xa9, 0xe9, 0x02, 0x04, 0x94, + 0x82, 0xdc, 0xa8, 0xa3, 0xa9, 0x33, 0x1d, 0x74, 0xce, 0xd8, 0xdf, 0x0a, + 0xb0, 0x9d, 0x4b, 0x2c, 0x1a, 0xe6, 0x47, 0xb6, 0x6f, 0x71, 0x77, 0x1a, + 0xf6, 0x9b, 0x76, 0x9e, 0x3b, 0x04, 0x48, 0xf4, 0x8b, 0x7a, 0x44, 0x91, + 0xec, 0x8c, 0xd8, 0xbc, 0x0d, 0x6e, 0x14, 0x6c, 0xbb, 0xf3, 0xfd, 0xdd, + 0xc2, 0xd8, 0xdb, 0x8b, 0x2c, 0x07, 0x8f, 0x9c, 0x70, 0xf5, 0x96, 0xad, + 0x51, 0x9f, 0x2a, 0x1b, 0x57, 0x92, 0x10, 0x9b, 0x1c, 0x31, 0xa6, 0x18, + 0x32, 0x02, 0x00, 0xad, 0xcd, 0xcf, 0x29, 0x55, 0x9e, 0x79, 0xe7, 0xaa, + 0x89, 0x14, 0x86, 0x11, 0x33, 0x4a, 0xc6, 0x53, 0xf1, 0x97, 0xa9, 0x4f, + 0x63, 0x3c, 0xdd, 0x95, 0x93, 0xf7, 0xa7, 0x63, 0x59, 0x24, 0x55, 0x3e, + 0xf2, 0xbf, 0xb2, 0xfe, 0x74, 0xde, 0x97, 0xb7, 0xd6, 0xf5, 0xed, 0x67, + 0xaa, 0xb2, 0xd5, 0x66, 0xef, 0x2f, 0xbb, 0xb3, 0xfe, 0x9f, 0x95, 0xfd, + 0x79, 0x95, 0xbf, 0xd2, 0x9a, 0x2b, 0x15, 0x5c, 0xa5, 0x57, 0x13, 0x57, + 0x20, 0xa1, 0xc4, 0x4d, 0x90, 0xe5, 0x1e, 0x24, 0x22, 0x10, 0x28, 0xa1, + 0xaa, 0x30, 0x1f, 0x00, 0x5f, 0x30, 0x19, 0x42, 0x88, 0x30, 0x92, 0xc0, + 0x73, 0x30, 0x50, 0xc1, 0x1e, 0x30, 0x04, 0xc0, 0x1f, 0x30, 0x39, 0x8c, + 0xfc, 0x38, 0x09, 0xc7, 0x4a, 0x2a, 0x29, 0x98, 0x69, 0x47, 0xf8, 0x02, + 0x61, 0xa4, 0x0b, 0x8e, 0x62, 0x2f, 0x84, 0x94, 0x60, 0xe1, 0x02, 0x9e, + 0x60, 0x90, 0x83, 0x94, 0x60, 0x2b, 0x00, 0x46, 0x02, 0x08, 0x18, 0x31, + 0x60, 0x30, 0xad, 0x7f, 0x31, 0x50, 0x25, 0x31, 0xda, 0x8a, 0x30, 0x7c, + 0x50, 0x31, 0xd9, 0x51, 0x33, 0x88, 0x3a, 0x32, 0x02, 0x67, 0x30, 0x74, + 0xee, 0x0a, 0xc9, 0x27, 0x64, 0x81, 0x46, 0x25, 0x8b, 0x26, 0x12, 0x86, + 0x25, 0xac, 0x26, 0x31, 0x54, 0xb0, 0xc2, 0x20, 0x79, 0x21, 0x40, 0xc1, + 0x83, 0x14, 0x30, 0x50, 0x02, 0x54, 0x66, 0x0c, 0x82, 0x50, 0xe9, 0x08, + 0x38, 0x06, 0x01, 0x0b, 0xf8, 0x0a, 0x0d, 0x18, 0x00, 0xd0, 0x1c, 0x82, + 0x15, 0x98, 0x30, 0x01, 0xc7, 0x9d, 0xa4, 0x7a, 0x8c, 0x31, 0xf7, 0xea, + 0x12, 0xe4, 0xb7, 0x47, 0x51, 0xff, 0xfb, 0xd4, 0x60, 0x4a, 0x0f, 0xc9, + 0x54, 0x70, 0x41, 0x03, 0xfd, 0x7b, 0x70, 0x56, 0xce, 0x08, 0x40, 0x40, + 0x25, 0x6e, 0x22, 0xf9, 0xc1, 0x04, 0x0f, 0xf5, 0xed, 0xc1, 0x51, 0xb8, + 0x21, 0x04, 0xd0, 0x95, 0xb8, 0x55, 0xa0, 0x7b, 0xd4, 0x50, 0x0b, 0x50, + 0x2e, 0xc6, 0x20, 0xd0, 0x6d, 0x7c, 0xa2, 0x54, 0x15, 0xe7, 0x32, 0x81, + 0x0e, 0x66, 0x80, 0xf9, 0xe4, 0x13, 0x86, 0x14, 0x8d, 0x46, 0xd2, 0x65, + 0x3a, 0xb9, 0x56, 0xde, 0xad, 0x68, 0xc6, 0x1b, 0x27, 0x65, 0x8a, 0xe4, + 0xfd, 0x52, 0xa7, 0x4e, 0xb2, 0xb7, 0x6c, 0xbf, 0x3b, 0x75, 0x58, 0xd1, + 0x1f, 0x39, 0x37, 0x6e, 0x33, 0x54, 0x27, 0x38, 0xae, 0xd4, 0x90, 0xd9, + 0x9e, 0xd2, 0x76, 0xe7, 0xf8, 0x61, 0x81, 0x0e, 0xf8, 0x61, 0x84, 0xd8, + 0xcf, 0x55, 0xc9, 0x9e, 0xf2, 0x23, 0x9b, 0x84, 0x19, 0x9e, 0xd2, 0x1b, + 0xe8, 0x4c, 0x2e, 0x3a, 0x8b, 0x45, 0x4c, 0x5b, 0x67, 0x19, 0x72, 0x99, + 0xdc, 0x0b, 0xda, 0xf8, 0xbb, 0x13, 0x52, 0x99, 0xf4, 0x68, 0x79, 0x9e, + 0xb6, 0x6e, 0xd5, 0x6f, 0x1a, 0x56, 0xaa, 0x67, 0x72, 0xee, 0x6b, 0xb6, + 0xb9, 0x34, 0x45, 0x83, 0x0d, 0xc1, 0x9d, 0xcb, 0x31, 0xde, 0xb6, 0xbb, + 0x7b, 0x06, 0xd1, 0x95, 0x8a, 0xd6, 0x55, 0xc2, 0x1b, 0x2a, 0xdc, 0x70, + 0x0f, 0x89, 0xc4, 0x8d, 0x51, 0xd0, 0xab, 0xa2, 0x80, 0x82, 0x66, 0x86, + 0x2e, 0x8d, 0x1a, 0x4d, 0x03, 0x35, 0xfc, 0x3b, 0xc8, 0xc0, 0xbe, 0x57, + 0x55, 0x6d, 0x7b, 0x56, 0xcf, 0xb3, 0x74, 0xf2, 0x68, 0x76, 0x4a, 0xb5, + 0x5a, 0xf4, 0x45, 0x74, 0xa2, 0x29, 0xd1, 0xa9, 0x69, 0xa5, 0xfb, 0x25, + 0x1d, 0x2d, 0xf4, 0x6a, 0x2d, 0xff, 0xd5, 0x37, 0x5b, 0x35, 0xcd, 0xec, + 0x8f, 0xdd, 0xe4, 0xb1, 0x95, 0x55, 0x51, 0x5d, 0xc4, 0x54, 0xe4, 0x22, + 0xb3, 0x38, 0xf3, 0xa1, 0x41, 0x8f, 0x51, 0x71, 0x21, 0xee, 0x2a, 0xc3, + 0x4a, 0x35, 0xcc, 0x02, 0xd0, 0x0f, 0x8c, 0x05, 0x30, 0x42, 0x8c, 0x21, + 0x90, 0x20, 0x8c, 0x0e, 0x10, 0x5a, 0x4c, 0x10, 0xa0, 0x9c, 0x0c, 0x39, + 0x10, 0xf4, 0x4c, 0x51, 0xf1, 0x69, 0x8c, 0x34, 0xb4, 0x67, 0xcf, 0xbb, + 0xfe, 0xbc, 0x0c, 0x72, 0xc2, 0x36, 0x0c, 0x3e, 0x40, 0x30, 0x0c, 0x12, + 0x90, 0x31, 0xcc, 0x09, 0x00, 0x2c, 0x4c, 0x07, 0x70, 0x0f, 0xcc, 0x06, + 0x00, 0x6b, 0x4c, 0x0b, 0x05, 0xcc, 0xa2, 0x3b, 0x8c, 0x89, 0x0a, 0xcc, + 0x95, 0x81, 0x81, 0xd2, 0xa0, 0xe8, 0x5e, 0x61, 0x60, 0x24, 0x22, 0x3e, + 0x47, 0x86, 0x03, 0x0f, 0xa6, 0x73, 0x5d, 0x15, 0x63, 0x01, 0xc1, 0xd1, + 0x21, 0x4c, 0xc3, 0x40, 0x20, 0x64, 0x09, 0x46, 0xa3, 0x08, 0xc2, 0x54, + 0x91, 0x20, 0x04, 0x6a, 0x81, 0x44, 0x18, 0x30, 0x44, 0x00, 0xb4, 0x15, + 0x33, 0x0e, 0x02, 0x47, 0x40, 0x02, 0x61, 0x45, 0x79, 0x51, 0x34, 0xab, + 0x70, 0x0b, 0xe9, 0x28, 0x65, 0x78, 0x37, 0x29, 0x74, 0xbd, 0xf5, 0x76, + 0x98, 0x7a, 0xc8, 0xa9, 0x0f, 0x59, 0x85, 0xc4, 0x9b, 0x12, 0xa5, 0x12, + 0x1e, 0xba, 0x2c, 0x32, 0xb9, 0x42, 0x67, 0x64, 0x51, 0xa8, 0x62, 0x49, + 0x09, 0xc7, 0x0c, 0xcb, 0xb7, 0x0c, 0x4f, 0x44, 0x6b, 0x23, 0xb8, 0x31, + 0xa7, 0x7d, 0x36, 0x98, 0xdb, 0xa0, 0xe2, 0x14, 0x97, 0x7d, 0xa5, 0x4b, + 0xed, 0x2c, 0x5e, 0x58, 0x31, 0xf3, 0x2d, 0x3c, 0x58, 0xf0, 0xa4, 0x83, + 0x12, 0xb1, 0xad, 0x06, 0xb1, 0xf3, 0x09, 0x5e, 0xf7, 0x0c, 0xd6, 0x87, + 0x2e, 0x31, 0x15, 0xb9, 0xc7, 0xc2, 0x79, 0x5d, 0xbe, 0x9e, 0x04, 0x1b, + 0x5b, 0x19, 0x77, 0xb6, 0xf8, 0x53, 0x49, 0xb8, 0x0a, 0xf8, 0x53, 0xc1, + 0x89, 0x58, 0x11, 0xae, 0xf6, 0x5a, 0xcb, 0x4b, 0x6a, 0xb7, 0xce, 0x30, + 0xc4, 0xeb, 0x7e, 0xd9, 0xbd, 0xe2, 0x4b, 0x4c, 0xf8, 0x4f, 0x27, 0x81, + 0x3b, 0x8b, 0x44, 0x09, 0x1d, 0x37, 0xb2, 0x52, 0x3c, 0x4a, 0xbe, 0xee, + 0x71, 0x1a, 0xe2, 0xc1, 0x49, 0x42, 0x0c, 0x00, 0x70, 0x0b, 0x43, 0x23, + 0x16, 0xee, 0xf4, 0xfc, 0xc4, 0x27, 0x92, 0x32, 0xb4, 0x80, 0x29, 0xf5, + 0x9a, 0x83, 0x01, 0xcc, 0xb3, 0x55, 0x3b, 0xed, 0xba, 0x26, 0xb3, 0xaa, + 0xf5, 0x69, 0xe9, 0x2a, 0x16, 0x53, 0xb7, 0xad, 0x9d, 0x74, 0x7f, 0x6e, + 0xb6, 0x65, 0xdd, 0xcb, 0xd7, 0xac, 0xf5, 0xeb, 0x4d, 0xaa, 0xaa, 0x8d, + 0x4a, 0xd3, 0x57, 0xa2, 0x6f, 0x6a, 0x7a, 0xf9, 0xf7, 0xf7, 0x9b, 0x67, + 0x32, 0x28, 0x7d, 0x91, 0x89, 0x12, 0x72, 0x0a, 0x94, 0x85, 0x73, 0x8b, + 0x85, 0x29, 0x90, 0x45, 0x90, 0x5c, 0xb5, 0x02, 0x46, 0x40, 0x01, 0xa8, + 0x03, 0x00, 0x32, 0x30, 0x3d, 0x40, 0x25, 0x30, 0x01, 0x80, 0x1c, 0x30, + 0x19, 0x40, 0x39, 0x30, 0x38, 0x00, 0x42, 0x30, 0xee, 0x00, 0x5a, 0x30, + 0xbc, 0x03, 0xd6, 0x39, 0x7a, 0x09, 0x41, 0x31, 0x47, 0x43, 0xcd, 0x30, + 0x0d, 0x00, 0xe7, 0x30, 0x00, 0xc0, 0x7e, 0x28, 0x02, 0x80, 0x1a, 0x00, + 0xb1, 0x80, 0x84, 0x00, 0x61, 0x85, 0xc1, 0x06, 0x03, 0x3b, 0x18, 0x48, + 0x10, 0x63, 0x52, 0x48, 0x63, 0xe5, 0x09, 0x69, 0x30, 0x40, 0x45, 0x04, + 0x00, 0x8c, 0x24, 0x73, 0x3d, 0x60, 0xc8, 0x68, 0x50, 0x84, 0xc2, 0xf6, + 0x34, 0x28, 0xd9, 0x68, 0x24, 0x2b, 0x2b, 0xcb, 0x39, 0x2b, 0xbb, 0x75, + 0x0e, 0x74, 0xac, 0xad, 0x42, 0x6f, 0xc8, 0x5b, 0x05, 0x9a, 0x45, 0x7b, + 0x11, 0x42, 0x39, 0xb6, 0x6b, 0x24, 0x75, 0x25, 0x8a, 0x52, 0xc0, 0x9c, + 0x69, 0x33, 0x63, 0x81, 0xdc, 0xff, 0xfb, 0xd4, 0x60, 0x41, 0x0c, 0xc6, + 0xa8, 0x6f, 0xc4, 0x9b, 0xfc, 0x5b, 0x70, 0x45, 0x0d, 0x88, 0x83, 0x28, + 0x42, 0x6e, 0x60, 0xb1, 0xc1, 0x0a, 0x0f, 0xf5, 0xed, 0xc1, 0x96, 0xb7, + 0xe0, 0xc5, 0x31, 0x95, 0xba, 0x18, 0x38, 0x14, 0x21, 0x05, 0x01, 0x31, + 0x29, 0x76, 0x1e, 0x35, 0x1b, 0x8e, 0x94, 0x64, 0xca, 0x55, 0x8a, 0x24, + 0x40, 0x98, 0xc6, 0xc6, 0x15, 0x1f, 0x9d, 0xb1, 0x13, 0xfb, 0x9d, 0x51, + 0xca, 0xf3, 0x3f, 0x6f, 0xf7, 0x43, 0x7d, 0xaf, 0xbf, 0xb6, 0xb3, 0x96, + 0xf0, 0xc8, 0x7f, 0x0c, 0xfc, 0xfa, 0xf7, 0x1f, 0x31, 0x5d, 0xf7, 0xf2, + 0xdf, 0xed, 0x91, 0x53, 0xdf, 0x3d, 0x71, 0xc4, 0xff, 0x1e, 0xea, 0xaf, + 0x9e, 0xff, 0x87, 0x71, 0xef, 0xa7, 0x3a, 0x1d, 0xcc, 0xe7, 0x9c, 0xca, + 0xe1, 0x95, 0xc3, 0x17, 0x01, 0x4a, 0xd1, 0x20, 0x03, 0x4c, 0x6a, 0x7f, + 0xcd, 0xba, 0x33, 0xf4, 0xdf, 0xfe, 0x9f, 0xd0, 0xb4, 0x5a, 0x33, 0x14, + 0x83, 0x38, 0x73, 0x21, 0xb7, 0x12, 0x91, 0x42, 0x44, 0x9d, 0x4c, 0x1d, + 0x0a, 0xec, 0x95, 0xf2, 0x6f, 0xd1, 0x9e, 0xcf, 0x4a, 0xb7, 0x47, 0xf7, + 0xaf, 0xfd, 0xaf, 0xd3, 0x5d, 0xb6, 0xaf, 0x6f, 0xaf, 0xdb, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xe7, 0x73, 0xdc, 0xa4, 0x43, 0x15, 0x86, 0xe3, 0xcb, + 0x0f, 0x30, 0x09, 0x80, 0x0b, 0x30, 0x0a, 0x40, 0x27, 0x30, 0x55, 0x40, + 0x35, 0x30, 0x1f, 0x40, 0x1e, 0x30, 0x21, 0x00, 0x61, 0x30, 0x3a, 0x42, + 0x92, 0x30, 0x7b, 0x45, 0x31, 0x31, 0x15, 0x45, 0xfa, 0x3f, 0x75, 0xda, + 0xa7, 0x31, 0x9a, 0x04, 0xaa, 0x30, 0xd3, 0xc2, 0x3e, 0x30, 0x3d, 0x01, + 0x29, 0x30, 0x4b, 0x40, 0x2c, 0x30, 0x1e, 0x00, 0x49, 0x30, 0x1d, 0x41, + 0x06, 0x31, 0x30, 0x15, 0x31, 0xd4, 0x5f, 0x01, 0x1e, 0x86, 0x0a, 0xb5, + 0x26, 0x28, 0x02, 0xe1, 0x70, 0x34, 0x98, 0x15, 0x11, 0x0f, 0x60, 0xe5, + 0x70, 0xc5, 0x45, 0x28, 0xee, 0x82, 0x8c, 0xc2, 0xa0, 0x20, 0x0c, 0x12, + 0x18, 0x1a, 0x05, 0x0b, 0x05, 0x2c, 0xd0, 0xc0, 0xb0, 0x3d, 0xf2, 0x11, + 0x02, 0x71, 0x00, 0xc0, 0x7d, 0xad, 0x28, 0x64, 0x29, 0x01, 0x23, 0x40, + 0x51, 0x60, 0x0f, 0x26, 0x05, 0x26, 0x62, 0xf2, 0x46, 0xfe, 0x38, 0xfb, + 0xcc, 0xc0, 0x58, 0xbf, 0xf5, 0xe2, 0xf9, 0xbe, 0xcf, 0x2b, 0x47, 0xe3, + 0xf9, 0x2f, 0xa4, 0x93, 0x27, 0x1c, 0x5b, 0x0a, 0xec, 0x34, 0xb5, 0xef, + 0x6e, 0xa8, 0xbb, 0xb3, 0x9d, 0x1a, 0xa4, 0xb5, 0x1b, 0x5f, 0x35, 0x6b, + 0x0e, 0xa5, 0xc5, 0xde, 0xda, 0x91, 0x62, 0x7a, 0xcd, 0xef, 0x5f, 0x58, + 0x6c, 0x14, 0x83, 0x15, 0xfd, 0xa1, 0xbc, 0xcc, 0x4d, 0xda, 0x98, 0xae, + 0x6d, 0xe1, 0xd7, 0x70, 0xa0, 0xeb, 0x14, 0x9f, 0x75, 0xad, 0xb4, 0xe5, + 0xab, 0xc8, 0xe3, 0x24, 0x7a, 0x78, 0x36, 0xcf, 0xbf, 0xac, 0x78, 0xb1, + 0x73, 0xa7, 0xb8, 0xd5, 0xad, 0xe9, 0x7a, 0xd2, 0x97, 0x85, 0x36, 0xad, + 0xa9, 0xb1, 0xe6, 0xf9, 0xaf, 0x9a, 0xb7, 0xa5, 0xa9, 0xb8, 0x9a, 0xd6, + 0x6f, 0x0a, 0xfa, 0xa4, 0x78, 0x54, 0xce, 0xfc, 0x18, 0x11, 0xe1, 0xc2, + 0x6e, 0x7a, 0xda, 0xf3, 0x10, 0x75, 0x07, 0x32, 0xd9, 0xf4, 0x20, 0x80, + 0x1e, 0x75, 0xa6, 0x95, 0x06, 0xd6, 0x83, 0x9b, 0x24, 0x84, 0x0f, 0x6d, + 0x22, 0xd9, 0x94, 0xb3, 0x9f, 0xac, 0xf2, 0x4d, 0x66, 0xd4, 0xb9, 0xc8, + 0xf2, 0x97, 0x91, 0x17, 0xd4, 0x74, 0x28, 0x92, 0x2b, 0x20, 0xb1, 0x07, + 0xa9, 0x97, 0x75, 0x4a, 0x92, 0x6a, 0xb2, 0xb7, 0x76, 0xb9, 0x5a, 0xaa, + 0x79, 0x1d, 0x16, 0x7d, 0xde, 0x7b, 0xbe, 0x46, 0x67, 0x91, 0x4d, 0xab, + 0xba, 0x51, 0xd3, 0xa2, 0x2f, 0x56, 0x96, 0xfb, 0x99, 0xd9, 0x4c, 0x84, + 0xc8, 0xfb, 0x37, 0x6a, 0x58, 0xf9, 0x4e, 0x84, 0xc7, 0x0e, 0xba, 0xa9, + 0xc8, 0xd6, 0x73, 0x98, 0x6e, 0x06, 0x32, 0x94, 0x54, 0xa0, 0x84, 0x15, + 0x60, 0xf9, 0x06, 0x08, 0x2a, 0x30, 0x04, 0x40, 0x0c, 0x30, 0x03, 0xc0, + 0xf9, 0x01, 0x05, 0xde, 0x60, 0x26, 0x80, 0xf6, 0x60, 0x28, 0x02, 0x24, + 0x60, 0x88, 0x87, 0xb6, 0x65, 0xd6, 0x8b, 0x98, 0x60, 0x97, 0x23, 0x3e, + 0x76, 0x2c, 0x75, 0xb4, 0x62, 0xdb, 0x82, 0x6c, 0x63, 0x01, 0x04, 0xee, + 0x60, 0xfa, 0x82, 0x38, 0x60, 0xe2, 0x00, 0xfa, 0x60, 0x5f, 0x80, 0xb0, + 0x60, 0x01, 0x01, 0xa6, 0x5f, 0x83, 0x0e, 0x97, 0x53, 0x07, 0x41, 0x13, + 0x15, 0x19, 0xd3, 0x3a, 0x41, 0xb3, 0x00, 0x02, 0x91, 0x20, 0x04, 0xc1, + 0x01, 0xe4, 0xd7, 0x00, 0x24, 0x52, 0xb0, 0x32, 0x7d, 0x27, 0x30, 0x1c, + 0x20, 0x6b, 0x40, 0xa1, 0xe8, 0xc4, 0xd0, 0x45, 0xcd, 0x30, 0x48, 0x0e, + 0x90, 0x8e, 0x83, 0xd4, 0xc6, 0x09, 0x01, 0x2d, 0xe9, 0x08, 0x00, 0xcb, + 0x04, 0x40, 0xc2, 0x12, 0xca, 0x81, 0x78, 0xd0, 0x22, 0xfa, 0xaa, 0xf9, + 0x52, 0xa2, 0xba, 0xbf, 0xb2, 0x4e, 0x19, 0x97, 0xd2, 0xac, 0x22, 0xdc, + 0xb5, 0xa9, 0xb8, 0x90, 0xb6, 0xe5, 0x55, 0xf6, 0x84, 0xa2, 0xae, 0xf8, + 0x8f, 0x86, 0xd3, 0x1d, 0xdc, 0x24, 0xdd, 0x5b, 0x22, 0xb8, 0x38, 0x39, + 0xc4, 0x8a, 0xcc, 0xba, 0x47, 0xbe, 0x92, 0xcf, 0x15, 0x8b, 0x2d, 0x95, + 0xb6, 0xe3, 0xde, 0xed, 0x8f, 0xa9, 0x16, 0x05, 0xa3, 0xb9, 0xc3, 0x64, + 0xc4, 0x5a, 0x43, 0x8c, 0xa8, 0x81, 0x47, 0xb7, 0xc4, 0x49, 0xb4, 0xea, + 0x7b, 0xc2, 0x70, 0xb4, 0xcd, 0x76, 0x8f, 0x1a, 0x92, 0xc9, 0x1e, 0x03, + 0x0d, 0x2a, 0xcc, 0x8e, 0x4a, 0xff, 0xfb, 0xd4, 0x60, 0x6c, 0x0f, 0xf8, + 0xac, 0x70, 0x41, 0x83, 0xfd, 0x7b, 0x70, 0x65, 0x2d, 0xf8, 0x31, 0x34, + 0x47, 0x6e, 0x21, 0x71, 0xc1, 0x06, 0x0f, 0xf9, 0x8d, 0xc1, 0x72, 0xb7, + 0xe0, 0xc1, 0x10, 0x8d, 0xb8, 0xbb, 0xdf, 0xb6, 0x70, 0xde, 0xfe, 0x33, + 0xb9, 0xe1, 0x44, 0x71, 0x99, 0x4f, 0x78, 0x6e, 0x51, 0xe0, 0x79, 0x5b, + 0xe3, 0xef, 0xb7, 0xc0, 0xac, 0xd5, 0xc6, 0xb7, 0x88, 0xed, 0xb5, 0xdd, + 0x37, 0x59, 0x71, 0x0e, 0x24, 0x0d, 0xd7, 0x1a, 0xa6, 0x2b, 0x67, 0xaf, + 0x5e, 0x42, 0x7f, 0x2d, 0xa1, 0x4a, 0xe5, 0x67, 0xf0, 0x23, 0x4f, 0x59, + 0x59, 0x69, 0x96, 0xf5, 0xd3, 0x94, 0x30, 0x80, 0x15, 0xc3, 0x74, 0x9d, + 0xac, 0x95, 0x4a, 0xac, 0xcd, 0xe6, 0x77, 0x31, 0x58, 0x82, 0x91, 0x95, + 0xd9, 0xd6, 0x5b, 0xbc, 0xef, 0xed, 0x57, 0x66, 0x75, 0x6d, 0xd9, 0xf2, + 0x76, 0x79, 0x03, 0xf3, 0xa8, 0x6d, 0x1d, 0xb4, 0x67, 0xd9, 0xbc, 0xf6, + 0xbb, 0x56, 0xe8, 0x8d, 0xda, 0xef, 0xb5, 0x9a, 0x93, 0x94, 0xfa, 0xa5, + 0x1b, 0x7a, 0x1d, 0x43, 0x66, 0x55, 0x97, 0x63, 0xbf, 0xcc, 0xba, 0xb6, + 0xcd, 0xcc, 0x76, 0x39, 0xd5, 0x52, 0x93, 0x74, 0xcc, 0x56, 0x64, 0x54, + 0x49, 0xa7, 0xbb, 0x4f, 0x51, 0xe4, 0x38, 0x8a, 0x08, 0xa5, 0xc7, 0x06, + 0x1c, 0x52, 0xe6, 0x20, 0xf8, 0x6d, 0xc4, 0x85, 0x31, 0x45, 0x82, 0x40, + 0x08, 0x08, 0xf3, 0x00, 0x40, 0x0f, 0xf3, 0x05, 0x34, 0x09, 0x73, 0x03, + 0x08, 0x07, 0x43, 0x04, 0x24, 0x07, 0x53, 0x07, 0x98, 0x19, 0x93, 0x2d, + 0x18, 0x30, 0x63, 0x11, 0xf1, 0x10, 0x63, 0x8f, 0x03, 0xed, 0x33, 0x14, + 0xcc, 0x6c, 0x53, 0x14, 0xa4, 0x06, 0x80, 0x30, 0x85, 0x26, 0x0a, 0x18, + 0x0d, 0xc6, 0x03, 0xc0, 0x05, 0x20, 0x90, 0x32, 0xc0, 0xc0, 0x06, 0x60, + 0xd8, 0x06, 0x00, 0x61, 0x07, 0x30, 0x80, 0x0b, 0x03, 0x11, 0xb0, 0x08, + 0x06, 0x01, 0xbb, 0x61, 0x30, 0x10, 0x02, 0x63, 0x1b, 0x80, 0x05, 0x30, + 0x79, 0x15, 0x03, 0x42, 0x10, 0x7b, 0x22, 0x0a, 0xf1, 0x00, 0x04, 0x98, + 0x06, 0x81, 0x39, 0x82, 0x08, 0x0a, 0x3b, 0x66, 0x02, 0x60, 0x0f, 0x02, + 0x8a, 0x80, 0x6b, 0x2c, 0x30, 0x03, 0x02, 0x09, 0x5a, 0x95, 0xac, 0xc1, + 0xd0, 0x16, 0x42, 0x41, 0x20, 0x17, 0xa7, 0xcc, 0x02, 0xb8, 0xa0, 0x16, + 0x3f, 0x11, 0x87, 0x3b, 0x2a, 0xeb, 0xb3, 0x2d, 0x91, 0x43, 0xef, 0xd2, + 0xb0, 0x21, 0xda, 0x93, 0x39, 0x88, 0x0b, 0x44, 0x23, 0xf1, 0x24, 0x8e, + 0xb5, 0x53, 0x2b, 0x34, 0x48, 0xa0, 0x9e, 0xca, 0xb6, 0xd2, 0xb5, 0x68, + 0x82, 0x66, 0x17, 0x28, 0x75, 0xa8, 0xd9, 0xf5, 0xcd, 0x19, 0xc5, 0x6c, + 0x43, 0x8f, 0xf5, 0xfb, 0x7b, 0xa7, 0x4c, 0xda, 0x08, 0x31, 0xc3, 0xdf, + 0x44, 0xb9, 0x47, 0xf5, 0xeb, 0x17, 0xdd, 0xe8, 0x3d, 0xab, 0xab, 0xbc, + 0xfb, 0x1f, 0x0d, 0x10, 0x9b, 0xb4, 0x9a, 0xaf, 0x7d, 0xe7, 0xb2, 0x71, + 0x7a, 0xf7, 0xdd, 0xe5, 0xad, 0x5d, 0x82, 0xdd, 0xee, 0xd7, 0xc3, 0x0d, + 0x6d, 0x56, 0xde, 0x62, 0xd0, 0xc7, 0xbb, 0x36, 0x6d, 0xe7, 0x3d, 0x67, + 0x41, 0x8f, 0x38, 0xe3, 0xef, 0xef, 0x47, 0x69, 0x76, 0xbd, 0xb0, 0xb9, + 0x2f, 0xb3, 0x87, 0x2c, 0x21, 0x4f, 0xc0, 0x4d, 0x46, 0xc7, 0x53, 0x66, + 0xa5, 0xb5, 0xed, 0x81, 0x36, 0x75, 0x35, 0xbd, 0x26, 0x63, 0x03, 0xae, + 0xea, 0x52, 0xc3, 0xa1, 0x08, 0x9d, 0x89, 0x94, 0xab, 0x78, 0xbd, 0x32, + 0x23, 0x46, 0xce, 0xe1, 0xe8, 0x05, 0x99, 0x65, 0x4e, 0x99, 0x29, 0x2d, + 0xb2, 0xa3, 0x7c, 0xcf, 0xdd, 0x8e, 0x74, 0xfc, 0xff, 0x9d, 0x58, 0xde, + 0x85, 0x2f, 0xfe, 0x77, 0x73, 0x3d, 0xb7, 0x2b, 0x7f, 0x87, 0xb7, 0xc5, + 0xfc, 0xcf, 0x2f, 0x2e, 0x5c, 0xb4, 0xa5, 0x97, 0xac, 0xcb, 0x85, 0xfc, + 0x4e, 0xe5, 0x71, 0x24, 0xa7, 0x1a, 0xee, 0x65, 0x92, 0xd0, 0xa4, 0xf4, + 0x53, 0xd8, 0x02, 0x38, 0x10, 0x97, 0x23, 0x39, 0x40, 0x9f, 0x1c, 0x02, + 0x0a, 0x40, 0x00, 0x10, 0x02, 0xc6, 0x00, 0x88, 0x1b, 0xe0, 0xe0, 0x18, + 0x8c, 0x00, 0xe0, 0x0c, 0x4c, 0x06, 0xa0, 0x06, 0x8c, 0x07, 0xd0, 0xbf, + 0x0c, 0x56, 0x61, 0x07, 0x4c, 0x3f, 0xb2, 0x0c, 0x4f, 0x50, 0x37, 0x4b, + 0x0c, 0x61, 0x61, 0x97, 0x8c, 0x1a, 0x20, 0x5b, 0x8c, 0x0c, 0xf0, 0x25, + 0x45, 0x80, 0x79, 0x0b, 0x80, 0x26, 0x60, 0x16, 0x00, 0xc4, 0x0a, 0x15, + 0x82, 0xc7, 0x62, 0x9b, 0x98, 0x0c, 0x98, 0x18, 0x66, 0x0d, 0x08, 0x01, + 0xb7, 0x3c, 0x2c, 0x3c, 0x06, 0x42, 0x06, 0x18, 0xa2, 0xe7, 0x35, 0x92, + 0x06, 0x17, 0x81, 0xe1, 0x50, 0x1c, 0xc1, 0x20, 0x34, 0x0c, 0x18, 0x4b, + 0xc3, 0x00, 0xca, 0x65, 0x89, 0x0d, 0x8e, 0x81, 0xb2, 0x85, 0x51, 0x9b, + 0x6e, 0x4e, 0xa9, 0x50, 0x17, 0x91, 0xc4, 0x5a, 0x73, 0x3f, 0x53, 0x99, + 0x53, 0x5d, 0x94, 0x2b, 0x99, 0x4b, 0xad, 0x6e, 0x96, 0x91, 0xb5, 0x74, + 0xdf, 0xb7, 0x96, 0x53, 0x39, 0x1e, 0xe8, 0xb0, 0xf0, 0x1e, 0x4c, 0x06, + 0x83, 0xb5, 0x1c, 0x21, 0x90, 0x0a, 0x28, 0x48, 0xaa, 0xfc, 0x89, 0xc7, + 0x10, 0x26, 0x99, 0x0e, 0x47, 0xa9, 0x84, 0x8c, 0x88, 0x74, 0x42, 0xe6, + 0x9c, 0x6e, 0x22, 0x6d, 0x36, 0xa3, 0xb4, 0x39, 0x20, 0xb9, 0x4b, 0xa9, + 0x4a, 0xdd, 0x39, 0x64, 0xa7, 0x42, 0xa2, 0x06, 0x56, 0x2c, 0xdd, 0x35, + 0xb5, 0x8c, 0x7a, 0x66, 0x98, 0x9b, 0x30, 0x64, 0xcd, 0x34, 0xcc, 0xa3, + 0xf6, 0x6b, 0x3f, 0x1c, 0x75, 0xff, 0xfb, 0xd4, 0x60, 0x68, 0x8c, 0xc7, + 0x50, 0x6f, 0x43, 0x13, 0xfd, 0x43, 0x72, 0x5f, 0xae, 0x08, 0x41, 0x3c, + 0x45, 0x6e, 0x9a, 0x51, 0xc1, 0x12, 0x4f, 0xf1, 0x6d, 0xc1, 0x6f, 0xb8, + 0x21, 0xcc, 0x71, 0x15, 0xb8, 0x29, 0x35, 0x11, 0xb0, 0xf8, 0x42, 0xbe, + 0x85, 0x17, 0xd6, 0x6d, 0x07, 0x31, 0x43, 0x31, 0xa3, 0x8a, 0x71, 0x92, + 0xe4, 0x17, 0x62, 0x24, 0x0b, 0x47, 0x08, 0x06, 0xf3, 0x94, 0x7d, 0x6a, + 0xd8, 0xcf, 0xb6, 0x33, 0x58, 0xd9, 0x14, 0x74, 0x22, 0xa5, 0x3e, 0xef, + 0x43, 0x77, 0xb6, 0x7a, 0x68, 0xae, 0x8c, 0x4f, 0xb3, 0x6b, 0xaa, 0x30, + 0xe5, 0x47, 0x10, 0xbb, 0x31, 0x8e, 0xb4, 0xe9, 0x67, 0x6e, 0x64, 0xd5, + 0x4e, 0xcd, 0xa9, 0x69, 0xa2, 0x23, 0xbe, 0x46, 0xdc, 0xaf, 0xa4, 0x94, + 0x4a, 0xab, 0x2a, 0x77, 0x4f, 0x6d, 0xb6, 0x65, 0xe8, 0x8d, 0x7d, 0x26, + 0x6b, 0x7b, 0xd6, 0x95, 0x75, 0x4b, 0xbd, 0x3a, 0xa2, 0xbc, 0xec, 0x22, + 0x43, 0x0d, 0x10, 0x1c, 0x34, 0x3e, 0x58, 0x88, 0xd0, 0x14, 0x59, 0x4e, + 0x56, 0x08, 0xa0, 0x2c, 0x48, 0x78, 0x57, 0x00, 0x14, 0x00, 0x46, 0x22, + 0x01, 0xfd, 0xb3, 0x98, 0x0a, 0xc0, 0x03, 0x18, 0x00, 0x40, 0x0d, 0x98, + 0x0b, 0x20, 0x1b, 0x18, 0xf6, 0x60, 0x07, 0x98, 0x52, 0x40, 0x0f, 0x9d, + 0x2f, 0x81, 0x10, 0x18, 0x8c, 0xa1, 0xed, 0x98, 0x29, 0x80, 0xba, 0x98, + 0x0d, 0xe0, 0x48, 0x18, 0x03, 0x80, 0x19, 0x98, 0x05, 0x20, 0x18, 0x0e, + 0x00, 0x74, 0x00, 0x03, 0x18, 0x8c, 0x10, 0x34, 0x58, 0x30, 0x6a, 0x78, + 0xc7, 0x80, 0x21, 0x00, 0x05, 0x6f, 0x08, 0x0e, 0x81, 0x89, 0xd0, 0x44, + 0x04, 0xd4, 0x48, 0x44, 0x10, 0xab, 0xf0, 0xe0, 0xa0, 0xf0, 0xb6, 0x1e, + 0x4f, 0x3a, 0x91, 0x7d, 0x25, 0xe7, 0x29, 0x65, 0xf3, 0x4c, 0xd4, 0x94, + 0x07, 0x0b, 0xba, 0xf6, 0x34, 0x78, 0xc6, 0x6d, 0xfd, 0xf6, 0x87, 0x55, + 0xe5, 0xaf, 0x9d, 0x66, 0x95, 0x1e, 0x51, 0xfb, 0xf0, 0x1e, 0x7a, 0xea, + 0x41, 0xd5, 0x44, 0x09, 0xa1, 0x69, 0x6a, 0x46, 0xa4, 0x45, 0x49, 0xe7, + 0x46, 0xf8, 0x42, 0x25, 0x50, 0x4b, 0x32, 0x73, 0x1e, 0xb9, 0x01, 0x17, + 0x26, 0xc7, 0x5f, 0xcb, 0xae, 0xfe, 0xe9, 0xcb, 0xfc, 0xf7, 0x51, 0x7d, + 0x7d, 0x53, 0xbb, 0x7c, 0x3a, 0xfe, 0xb8, 0xee, 0x5d, 0x0d, 0xb7, 0x52, + 0xb5, 0xfc, 0x7d, 0x71, 0xd4, 0x6c, 0xa6, 0xd7, 0x35, 0x1f, 0xfd, 0x54, + 0xbf, 0xdf, 0x12, 0xdf, 0x67, 0x51, 0xc6, 0xfb, 0x8d, 0xf1, 0x75, 0x7e, + 0xf9, 0x9a, 0xf9, 0x9d, 0xcb, 0xdb, 0x59, 0xdd, 0xc6, 0xf7, 0x39, 0xa9, + 0x80, 0xe5, 0x8d, 0x10, 0x01, 0xa3, 0x72, 0x8a, 0x65, 0x34, 0x66, 0x76, + 0xb3, 0x5a, 0x8d, 0xd7, 0xbd, 0x3d, 0x3f, 0xbb, 0x19, 0x98, 0xa4, 0x35, + 0x8a, 0x60, 0x44, 0x41, 0x65, 0x66, 0x40, 0xa3, 0x1c, 0x38, 0xe5, 0x16, + 0x13, 0xa0, 0x92, 0xc4, 0xc5, 0x8a, 0x77, 0xb9, 0x4e, 0xfa, 0x94, 0xc2, + 0x44, 0x33, 0x15, 0x51, 0x37, 0x54, 0x74, 0x98, 0x8c, 0x62, 0x3f, 0x2c, + 0x99, 0x65, 0x6a, 0xb6, 0x67, 0x75, 0xb7, 0xd3, 0xf6, 0xd7, 0xd7, 0x56, + 0x75, 0x5e, 0xbf, 0xf4, 0xf4, 0x5f, 0x4d, 0x74, 0xee, 0xd9, 0x56, 0xab, + 0x72, 0x3a, 0x97, 0x31, 0x19, 0x5d, 0x07, 0x0e, 0x4c, 0x41, 0x4d, 0x45, + 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x01, 0x00, 0x3c, 0x42, 0x08, 0x79, 0x81, 0x1c, 0x02, 0xf1, 0x80, + 0xbc, 0x00, 0x99, 0x80, 0x3c, 0x03, 0x91, 0x80, 0x26, 0x23, 0x29, 0x8b, + 0xe4, 0x2c, 0x41, 0x87, 0x36, 0x55, 0xe1, 0xff, 0x1b, 0x4b, 0x49, 0x8e, + 0x9c, 0x22, 0xc1, 0x89, 0xa6, 0x14, 0x21, 0x84, 0x68, 0x09, 0x69, 0x81, + 0x3e, 0x05, 0x61, 0x80, 0xfc, 0x03, 0x29, 0x81, 0x02, 0x02, 0x79, 0x8b, + 0x42, 0x49, 0x85, 0x27, 0xb8, 0x40, 0xc2, 0x62, 0x28, 0x72, 0x66, 0xf0, + 0x0e, 0x98, 0x40, 0xe0, 0x3c, 0x80, 0xfa, 0x30, 0xf4, 0x21, 0x31, 0x98, + 0x79, 0x3e, 0x98, 0x26, 0x31, 0x18, 0x00, 0x06, 0x02, 0x43, 0x20, 0xd0, + 0x04, 0x0b, 0x80, 0x81, 0xc1, 0x0b, 0xc0, 0xa4, 0x30, 0x1a, 0x01, 0x98, + 0x35, 0x77, 0xfe, 0xba, 0x80, 0x16, 0x01, 0xb2, 0x20, 0x2e, 0x40, 0xb7, + 0x61, 0xd7, 0x36, 0x57, 0x10, 0x83, 0x69, 0xad, 0x36, 0x7b, 0xf6, 0x28, + 0xd4, 0x6d, 0x96, 0xbf, 0x8f, 0x34, 0x13, 0x17, 0xb9, 0x48, 0xf5, 0x6e, + 0x21, 0x78, 0x81, 0x79, 0x16, 0x6a, 0xe9, 0xfa, 0x82, 0x1c, 0x57, 0x6e, + 0xa0, 0xde, 0x19, 0x66, 0xb5, 0x67, 0x95, 0x8d, 0x66, 0x48, 0x11, 0xb1, + 0x24, 0x5b, 0xc0, 0x57, 0xc1, 0xdd, 0x7e, 0xad, 0x47, 0x9b, 0x82, 0xfb, + 0x70, 0xe4, 0xb4, 0xd4, 0xcc, 0x6a, 0xc1, 0x83, 0x3c, 0x78, 0x0f, 0xe4, + 0x97, 0x54, 0x68, 0xbd, 0xe9, 0x98, 0x11, 0x77, 0xdb, 0x28, 0xef, 0x6d, + 0x94, 0xc5, 0x63, 0xfc, 0xe3, 0xc3, 0xdf, 0xb4, 0x49, 0xe3, 0xed, 0x9d, + 0xee, 0xab, 0x23, 0xd8, 0x59, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xc8, + 0x21, 0x70, 0x42, 0x03, 0xfd, 0x7b, 0x70, 0x5e, 0xee, 0x08, 0x53, 0x44, + 0x45, 0x6e, 0x1f, 0xe9, 0xc1, 0x06, 0x0f, 0xf1, 0x8d, 0xc1, 0x29, 0x97, + 0xe2, 0x4c, 0xa0, 0x8d, 0x30, 0x8b, 0x67, 0x97, 0xb7, 0xd5, 0xa2, 0xea, + 0x1c, 0xf8, 0xcc, 0x5d, 0x6f, 0x76, 0x8b, 0x7d, 0x4d, 0x79, 0x77, 0x6f, + 0x7c, 0x6f, 0x5a, 0xde, 0xad, 0x1e, 0x90, 0x7e, 0x20, 0xee, 0x1b, 0xcb, + 0x36, 0xda, 0x56, 0xe8, 0xcc, 0xef, 0x1f, 0x3a, 0xf2, 0x02, 0x94, 0x44, + 0x80, 0x03, 0x21, 0x14, 0xd6, 0xb5, 0x2f, 0x4d, 0x27, 0x49, 0xb1, 0x9a, + 0xbb, 0x75, 0x43, 0x35, 0xfa, 0x9d, 0x5a, 0xdc, 0xd7, 0xc5, 0x5d, 0xd2, + 0x8d, 0x4c, 0xa8, 0x46, 0x39, 0x07, 0x28, 0xa8, 0xb9, 0x82, 0x23, 0x85, + 0x26, 0x52, 0x5e, 0xcf, 0xab, 0x2a, 0x22, 0x3d, 0x9e, 0x8a, 0xe8, 0xc7, + 0x66, 0xf7, 0x5b, 0x51, 0x9b, 0x6a, 0xd9, 0x56, 0xac, 0x53, 0x50, 0xfa, + 0xf6, 0xfb, 0xbd, 0x29, 0xe6, 0xfe, 0x97, 0xfd, 0x27, 0xe5, 0x4a, 0xdb, + 0xd1, 0xe4, 0xa1, 0xd4, 0xa8, 0xe4, 0x90, 0xe6, 0x73, 0xc4, 0xd0, 0xca, + 0x3c, 0x04, 0x9c, 0x56, 0x8c, 0x61, 0xe7, 0x12, 0x18, 0x00, 0x60, 0xc0, + 0x00, 0x04, 0x8c, 0xc0, 0xfa, 0x02, 0xa8, 0x10, 0x03, 0x19, 0x80, 0x62, + 0x04, 0x01, 0x82, 0x54, 0x0e, 0x41, 0x98, 0xf0, 0x17, 0x29, 0x81, 0xf8, + 0x98, 0xc9, 0xac, 0x11, 0xee, 0xe1, 0x84, 0xc8, 0x03, 0x31, 0x89, 0x30, + 0x00, 0x30, 0x70, 0x76, 0xe6, 0x05, 0xf0, 0x0a, 0xa6, 0x05, 0x88, 0x08, + 0x86, 0x05, 0x50, 0x1d, 0xa6, 0x3f, 0x04, 0x19, 0x69, 0x22, 0x65, 0x50, + 0xa9, 0x83, 0x6c, 0x66, 0xc0, 0x15, 0x8a, 0x88, 0x0c, 0x4a, 0x01, 0x0b, + 0xb3, 0x0d, 0xde, 0x0f, 0x30, 0xcd, 0x98, 0xfb, 0x57, 0x73, 0x13, 0x0c, + 0x81, 0xc5, 0xc3, 0x1e, 0x87, 0x81, 0xc5, 0xe2, 0x20, 0x09, 0x85, 0xc2, + 0x0e, 0xbb, 0x0e, 0x7d, 0x07, 0x02, 0x2c, 0x39, 0x45, 0x67, 0x53, 0x4d, + 0x25, 0xc2, 0xc1, 0x51, 0x20, 0x54, 0xb9, 0x50, 0xb7, 0x37, 0x56, 0x54, + 0xce, 0x5c, 0x17, 0x12, 0x36, 0xd4, 0x6f, 0x5b, 0xa9, 0x38, 0xd0, 0xd4, + 0x5a, 0x17, 0x45, 0x3d, 0x84, 0xc1, 0x5e, 0xe2, 0xa1, 0xb5, 0x51, 0xae, + 0x7d, 0xa5, 0xcb, 0x0d, 0xab, 0x12, 0xe5, 0xbf, 0x58, 0x28, 0x3b, 0xa6, + 0xf5, 0xfe, 0x94, 0xf5, 0xe9, 0xd3, 0xa7, 0x59, 0x79, 0x1a, 0xdb, 0x3d, + 0xf9, 0xcc, 0x1f, 0xda, 0x16, 0x29, 0xdd, 0x97, 0x6e, 0xc7, 0x2d, 0x45, + 0x5e, 0xeb, 0xd7, 0x60, 0x8d, 0xba, 0x33, 0x7a, 0x3e, 0xbf, 0x1e, 0xf4, + 0x3f, 0x59, 0x85, 0x53, 0x7b, 0xb8, 0xf2, 0xfa, 0xf5, 0xd8, 0xa7, 0x5d, + 0xe8, 0x61, 0x6d, 0xf7, 0x13, 0x4d, 0x5b, 0xdb, 0x28, 0xfb, 0xde, 0x2e, + 0xd7, 0xa1, 0x6e, 0x9b, 0xbd, 0x4b, 0xd1, 0x66, 0x6d, 0x6e, 0xe7, 0x1e, + 0xb9, 0x3d, 0xa9, 0x3a, 0x62, 0xf8, 0x99, 0x66, 0xb5, 0x7f, 0x98, 0xd4, + 0x36, 0xda, 0x57, 0x53, 0x98, 0x89, 0x86, 0x0a, 0x9f, 0x5d, 0xe8, 0x83, + 0x97, 0x68, 0xd8, 0x02, 0xd4, 0x4f, 0xff, 0xff, 0xaf, 0xfe, 0x65, 0xf5, + 0x7c, 0x75, 0xdd, 0x77, 0x6d, 0xdb, 0xae, 0x6d, 0x60, 0x35, 0x63, 0x43, + 0x07, 0x9e, 0x2a, 0x8e, 0x87, 0x96, 0xab, 0x28, 0x2c, 0x38, 0x5b, 0x93, + 0x91, 0x87, 0x16, 0x3a, 0x6c, 0xf4, 0xc0, 0xc3, 0x6e, 0x7d, 0xc1, 0xf7, + 0xe2, 0x61, 0x83, 0x50, 0x0c, 0xb1, 0x00, 0x31, 0x68, 0x6d, 0xe5, 0x27, + 0x24, 0x66, 0xaf, 0xff, 0xfa, 0x28, 0x1b, 0x3a, 0x49, 0x0a, 0x05, 0xc6, + 0xb0, 0x6a, 0x62, 0x0a, 0x6a, 0x29, 0x99, 0x71, 0xc9, 0xc1, 0x71, 0x95, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x1c, 0x00, 0x34, 0xc0, 0x26, 0x02, 0xcc, 0xc1, 0x6c, 0x00, 0x38, + 0xc0, 0x11, 0x01, 0x50, 0xc0, 0x61, 0x02, 0xfc, 0xc0, 0x26, 0x11, 0x80, + 0xcd, 0xd7, 0x11, 0x6c, 0xc8, 0xd2, 0x3c, 0x78, 0xed, 0xe4, 0xed, 0xc4, + 0xc6, 0x66, 0x16, 0xe8, 0xc3, 0xa0, 0x00, 0xe4, 0xc1, 0xd4, 0x09, 0x80, + 0xa0, 0x2a, 0x93, 0x00, 0x9c, 0x01, 0x53, 0x02, 0x54, 0x07, 0x93, 0x75, + 0x9f, 0x4c, 0xea, 0x14, 0x05, 0x37, 0x8c, 0x18, 0xf9, 0x32, 0x39, 0x94, + 0xc7, 0x61, 0xd3, 0x08, 0x87, 0x0c, 0x3c, 0x94, 0x34, 0x89, 0x70, 0xc2, + 0x94, 0x83, 0xd6, 0x85, 0x4c, 0xce, 0x3b, 0x01, 0x17, 0x02, 0x04, 0x86, + 0x09, 0x0a, 0x98, 0x6c, 0x56, 0x61, 0xb0, 0xf8, 0x90, 0x0c, 0x1c, 0x14, + 0x30, 0xc0, 0x60, 0xc3, 0x40, 0x45, 0xfc, 0x60, 0x20, 0x61, 0x83, 0x01, + 0xc4, 0xc2, 0x58, 0x64, 0x0a, 0x15, 0x30, 0xc8, 0x15, 0x22, 0xcb, 0xe0, + 0x60, 0x70, 0x28, 0x60, 0x2d, 0x7b, 0x21, 0xe0, 0x08, 0x00, 0xa4, 0x1b, + 0x08, 0x04, 0x06, 0x82, 0xea, 0xf5, 0x73, 0xa0, 0xfb, 0x86, 0xdc, 0x94, + 0xc1, 0x40, 0x1f, 0x88, 0xda, 0x62, 0x17, 0x84, 0x35, 0x46, 0x37, 0xd0, + 0xf4, 0xc2, 0x18, 0xa0, 0x84, 0xa8, 0x46, 0x21, 0xae, 0x6c, 0xea, 0xba, + 0x6d, 0x0b, 0x90, 0xdc, 0x3c, 0x9e, 0x44, 0x6d, 0xec, 0xcb, 0x5a, 0xb4, + 0x18, 0x0a, 0x8d, 0xe2, 0x78, 0x10, 0xe3, 0xcc, 0xea, 0x23, 0xe5, 0x36, + 0xd9, 0xa2, 0x37, 0xd6, 0x3b, 0xbc, 0xef, 0x71, 0xfb, 0x1d, 0x23, 0x3f, + 0xc4, 0x3d, 0xed, 0xe2, 0xb6, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xc9, + 0x30, 0x70, 0x41, 0x03, 0xfc, 0x7b, 0x70, 0x45, 0x27, 0xd8, 0xa3, 0x1c, + 0x23, 0x5d, 0x28, 0xad, 0xc0, 0xfc, 0x0f, 0xed, 0xed, 0xc1, 0x94, 0x37, + 0x20, 0x84, 0x81, 0x95, 0xb8, 0x8b, 0xde, 0x6d, 0xb8, 0x5e, 0x3b, 0x5b, + 0x04, 0x19, 0x1f, 0xc3, 0x66, 0x7f, 0xaa, 0x62, 0x4d, 0xb6, 0xda, 0x3b, + 0xc8, 0x0c, 0x19, 0xbc, 0x18, 0x73, 0x5a, 0xb8, 0xfd, 0x69, 0x9a, 0x1f, + 0x92, 0xbb, 0x66, 0x8d, 0xac, 0xe9, 0xec, 0x58, 0xf3, 0x4d, 0x9d, 0x6e, + 0xb0, 0xb6, 0xfd, 0xe4, 0x26, 0xd8, 0xf3, 0x3d, 0xbf, 0xbc, 0x28, 0xef, + 0x1e, 0x4e, 0xdc, 0xdb, 0xb6, 0x37, 0x91, 0x63, 0x44, 0xa2, 0x52, 0xeb, + 0x73, 0x2e, 0x71, 0x1e, 0x46, 0xdc, 0xbe, 0x00, 0xbb, 0x09, 0x00, 0x0a, + 0x17, 0xff, 0xff, 0xff, 0xff, 0xe5, 0xfe, 0x5e, 0x9c, 0xf2, 0x2c, 0x9f, + 0xcc, 0xc8, 0xea, 0x8b, 0x57, 0x12, 0x28, 0x21, 0xa0, 0x86, 0x12, 0x28, + 0x50, 0x41, 0x2c, 0x3c, 0x14, 0x86, 0xa7, 0x83, 0x81, 0xc5, 0x17, 0xb2, + 0xa9, 0xe6, 0x65, 0xe4, 0xdf, 0x99, 0xdf, 0x7a, 0x54, 0xe6, 0x08, 0xda, + 0x92, 0x48, 0x59, 0xcb, 0xae, 0x8e, 0xa7, 0xb7, 0xff, 0xff, 0x57, 0xb0, + 0xf6, 0x91, 0x51, 0x54, 0x01, 0x80, 0x4a, 0x0b, 0x01, 0xa2, 0x61, 0x71, + 0x01, 0x84, 0x60, 0xab, 0x81, 0x4e, 0x60, 0x24, 0x85, 0x3c, 0x61, 0x75, + 0x8e, 0xe2, 0x64, 0x05, 0xa0, 0x60, 0x66, 0xb5, 0xbb, 0xb4, 0x7c, 0x9b, + 0xe6, 0xb8, 0x6a, 0xa1, 0x0d, 0x9e, 0x63, 0x09, 0x87, 0x80, 0x61, 0x78, + 0x01, 0xc2, 0x61, 0x1b, 0x84, 0xec, 0x60, 0x92, 0x81, 0xe4, 0x60, 0xb8, + 0x82, 0x24, 0x60, 0x28, 0x66, 0x4c, 0x7e, 0x74, 0x96, 0xe6, 0xf6, 0xbc, + 0x62, 0xa4, 0x26, 0x88, 0xca, 0x6b, 0x48, 0xa6, 0x18, 0x02, 0x68, 0x69, + 0x07, 0x1f, 0x88, 0x7b, 0x71, 0xc6, 0x4e, 0x2e, 0x62, 0xa2, 0x46, 0x22, + 0x44, 0x67, 0xe7, 0x00, 0xa3, 0x60, 0xa0, 0xb9, 0x91, 0x11, 0x99, 0x00, + 0x6a, 0x14, 0x18, 0x59, 0x01, 0x8d, 0x0c, 0x80, 0x87, 0x4b, 0x98, 0x60, + 0x64, 0x06, 0x3a, 0x2c, 0x62, 0x20, 0x04, 0xa0, 0xe6, 0x24, 0x2e, 0x62, + 0x42, 0x68, 0xd4, 0x22, 0x01, 0x30, 0x80, 0x73, 0x02, 0x03, 0x75, 0x02, + 0xe0, 0x06, 0x06, 0x04, 0xcd, 0x96, 0x04, 0xb8, 0xca, 0xc4, 0xeb, 0xaa, + 0xa9, 0x7c, 0x5a, 0x6b, 0x72, 0x48, 0xa4, 0x86, 0x5f, 0x85, 0xf8, 0x43, + 0x88, 0xa5, 0x59, 0x58, 0x3e, 0x56, 0x11, 0x45, 0xf7, 0x49, 0x82, 0xec, + 0x8a, 0x72, 0x8a, 0x5c, 0x66, 0x54, 0xa0, 0x56, 0x23, 0x25, 0xd6, 0x54, + 0x0d, 0x50, 0xd2, 0x69, 0xa6, 0xa6, 0x39, 0xda, 0xd8, 0x1d, 0xe5, 0xcd, + 0xe2, 0x88, 0xbe, 0xb0, 0x26, 0xb0, 0x8d, 0x78, 0x93, 0x8e, 0xe6, 0x9b, + 0x91, 0xfa, 0x14, 0x99, 0x55, 0xc5, 0x6b, 0x39, 0x22, 0xa9, 0xdb, 0x7a, + 0x10, 0x8d, 0x67, 0x86, 0xb6, 0x65, 0xae, 0x5c, 0x15, 0xca, 0xf5, 0x32, + 0x72, 0x1a, 0xe1, 0x4c, 0xc2, 0xc2, 0xaf, 0x56, 0x9e, 0xa8, 0x97, 0x4a, + 0xd6, 0xd5, 0x62, 0xbd, 0x8e, 0x87, 0xeb, 0x19, 0xdc, 0xb7, 0x86, 0xb3, + 0xd1, 0x5f, 0x02, 0x8d, 0xb8, 0x73, 0x57, 0x2e, 0xd3, 0xed, 0xae, 0x30, + 0xd9, 0xd5, 0xd0, 0x5a, 0xd5, 0x6e, 0x30, 0x14, 0x2c, 0xee, 0x29, 0xe7, + 0x4b, 0x69, 0x59, 0x5c, 0x1a, 0x99, 0xd3, 0x15, 0xb3, 0x4c, 0xe7, 0xbd, + 0x5e, 0x47, 0x56, 0xa9, 0x99, 0xb6, 0xad, 0x4c, 0xb2, 0xa9, 0xb6, 0xe0, + 0xad, 0xac, 0xcd, 0xc8, 0xe3, 0xb4, 0xee, 0x91, 0x72, 0x72, 0x23, 0x0b, + 0xb1, 0xda, 0x9e, 0x28, 0x50, 0xf2, 0x00, 0x0d, 0x6a, 0x59, 0x8a, 0xd1, + 0x91, 0xda, 0x32, 0x55, 0x56, 0x0e, 0x50, 0x99, 0x3a, 0x66, 0xc4, 0xf9, + 0xcc, 0xb2, 0x79, 0x69, 0x85, 0x7c, 0x3c, 0x25, 0xd6, 0x91, 0x5f, 0x4f, + 0x6b, 0x9d, 0x9a, 0x86, 0x99, 0x9a, 0x67, 0x39, 0x89, 0xaa, 0x26, 0xd7, + 0x7b, 0x6a, 0xee, 0x8a, 0xc8, 0x9e, 0x5d, 0x94, 0xbb, 0xa3, 0x9e, 0xad, + 0xba, 0x34, 0xf5, 0xa1, 0x36, 0xdc, 0xac, 0xce, 0xe9, 0xbb, 0x23, 0x3e, + 0xfb, 0x91, 0x5e, 0x97, 0x34, 0xeb, 0x23, 0x3b, 0x21, 0x0a, 0xbb, 0x3a, + 0xad, 0xf6, 0x1a, 0x47, 0x31, 0xd1, 0xcc, 0xe8, 0x62, 0x8e, 0x38, 0xf1, + 0x88, 0x2e, 0xa1, 0x20, 0x50, 0xb3, 0x9c, 0x10, 0x19, 0x40, 0x45, 0x40, + 0x0c, 0x0a, 0xd0, 0x0a, 0x8c, 0x0a, 0x20, 0x32, 0x8c, 0x4c, 0x80, 0x16, + 0xcc, 0x1a, 0xd0, 0x06, 0x8c, 0x19, 0xd0, 0x29, 0x4c, 0x4b, 0x20, 0xbe, + 0x8e, 0xc3, 0x81, 0xc0, 0x4c, 0x5e, 0x00, 0x64, 0x8d, 0x4e, 0xa0, 0x6f, + 0x0c, 0x57, 0x51, 0x1c, 0xcc, 0x27, 0xc0, 0x11, 0x0c, 0x15, 0xd0, 0x31, + 0x0c, 0x07, 0x80, 0x2e, 0xcc, 0x03, 0x50, 0x11, 0x0c, 0x00, 0xa0, 0x17, + 0x40, 0xc8, 0x92, 0xec, 0x30, 0x48, 0x5c, 0x12, 0x29, 0x18, 0x71, 0x45, + 0x9e, 0x1d, 0x9e, 0x0a, 0x64, 0x3a, 0x05, 0x38, 0x20, 0x04, 0xc4, 0x9d, + 0x4d, 0xe7, 0x6d, 0xca, 0x69, 0x6e, 0xfa, 0x33, 0x87, 0x0d, 0x19, 0x02, + 0xe8, 0x26, 0x05, 0x91, 0xa0, 0x2b, 0xe8, 0xbd, 0x45, 0xf7, 0x4f, 0xb4, + 0xe4, 0x85, 0x29, 0x92, 0x55, 0x45, 0xdd, 0x67, 0xd1, 0x89, 0x34, 0x48, + 0x66, 0x38, 0xc8, 0x98, 0x83, 0xfa, 0xcc, 0xe5, 0x52, 0xe6, 0xf1, 0xd2, + 0x2a, 0x4b, 0xdc, 0x53, 0x9d, 0x1a, 0xd0, 0xa0, 0x60, 0x5d, 0x22, 0xd9, + 0xa0, 0x07, 0x31, 0x8a, 0x9b, 0x2e, 0x45, 0xb4, 0xfe, 0x6f, 0x5c, 0x9e, + 0x12, 0x16, 0x05, 0x62, 0xc9, 0xff, 0xfb, 0xd4, 0x60, 0x51, 0x0d, 0xd9, + 0xf2, 0x70, 0x3d, 0x0b, 0xfa, 0x7b, 0x70, 0x4c, 0x6e, 0x08, 0x51, 0x2c, + 0x25, 0x6e, 0x28, 0xfd, 0xc0, 0xf4, 0x55, 0xfd, 0x00, 0x01, 0x41, 0xb8, + 0x21, 0x06, 0x84, 0x50, 0x00, 0x61, 0xba, 0x45, 0x8c, 0xd4, 0x3d, 0x90, + 0xa6, 0x53, 0x79, 0xbd, 0x4c, 0x95, 0x8a, 0xbe, 0xa0, 0x3c, 0xce, 0x62, + 0x5e, 0x8e, 0x27, 0x4e, 0x27, 0x21, 0xc6, 0x95, 0x24, 0x4a, 0xb2, 0xfe, + 0x72, 0x92, 0xbb, 0x26, 0x9e, 0xa9, 0x0c, 0x13, 0xad, 0x0d, 0x32, 0xc8, + 0x50, 0x8f, 0xb9, 0x2e, 0xa2, 0x8e, 0x52, 0xf8, 0xe7, 0xa2, 0xfc, 0x87, + 0x1f, 0xe7, 0x72, 0x78, 0xd6, 0x34, 0x54, 0xa7, 0x43, 0x21, 0x4c, 0xdc, + 0xa9, 0x39, 0xd2, 0x48, 0x23, 0x88, 0xea, 0x3c, 0x0d, 0xf5, 0x16, 0xc5, + 0xc9, 0x94, 0xf8, 0x2f, 0x87, 0xe2, 0xa9, 0x85, 0x0d, 0x77, 0x15, 0x98, + 0xf5, 0x2a, 0xce, 0xb3, 0xe1, 0xc1, 0x72, 0x75, 0x41, 0x57, 0xb8, 0x29, + 0x8d, 0x73, 0x1d, 0xc8, 0xe7, 0x46, 0x25, 0x09, 0xb2, 0xe8, 0xee, 0x3f, + 0x9c, 0x9b, 0x57, 0x9a, 0x92, 0xa8, 0x69, 0xaa, 0xa3, 0x7c, 0xa9, 0x6b, + 0x2c, 0x0f, 0x1b, 0x67, 0x3a, 0xdf, 0x64, 0xf4, 0x10, 0x85, 0x39, 0x1b, + 0x1a, 0x65, 0xe5, 0x0f, 0x8a, 0x75, 0x91, 0x41, 0xb4, 0x67, 0x8b, 0xba, + 0x54, 0x94, 0x83, 0x1c, 0x2b, 0xd8, 0x01, 0x95, 0xc3, 0xdf, 0x5f, 0x3a, + 0xd0, 0xf6, 0xd4, 0x06, 0x47, 0x3a, 0x10, 0x28, 0xd4, 0xad, 0x36, 0x8b, + 0x8c, 0x55, 0x8e, 0x94, 0xa7, 0x8d, 0x48, 0x6a, 0xb9, 0xde, 0x9d, 0xe9, + 0xbd, 0x76, 0xae, 0x9f, 0xd1, 0x1b, 0xed, 0xa6, 0xcb, 0xdf, 0xeb, 0xbf, + 0xfa, 0x5b, 0xae, 0x89, 0xdf, 0x4e, 0xdf, 0xfa, 0x22, 0xdb, 0xad, 0xae, + 0xf7, 0xdf, 0xb3, 0x92, 0xcf, 0xb4, 0x79, 0x5f, 0x42, 0xab, 0xb4, 0x4c, + 0x05, 0x39, 0x84, 0x04, 0xd0, 0xcc, 0x05, 0xa8, 0xb0, 0xb0, 0xc8, 0x60, + 0x52, 0x00, 0x58, 0x60, 0x0c, 0x83, 0xd0, 0x62, 0x20, 0x03, 0xca, 0x60, + 0xcb, 0x82, 0x54, 0x60, 0xca, 0x02, 0xf0, 0x62, 0x9d, 0x24, 0x80, 0x6c, + 0x54, 0xaf, 0x2a, 0x64, 0x6e, 0x80, 0x10, 0x69, 0x56, 0xa0, 0xca, 0x61, + 0xb5, 0x03, 0xd8, 0x60, 0xd3, 0x82, 0xb2, 0x60, 0xc1, 0x81, 0x08, 0x60, + 0x3b, 0x80, 0x74, 0xd0, 0xc2, 0xe0, 0x0f, 0x98, 0x00, 0xe0, 0x16, 0x98, + 0x00, 0x40, 0x1c, 0xb0, 0x13, 0x24, 0xf9, 0x10, 0x1c, 0x51, 0x52, 0xa1, + 0x48, 0x65, 0xa0, 0x22, 0x4a, 0x19, 0x41, 0xfd, 0x50, 0x86, 0xbd, 0x44, + 0xa6, 0xcf, 0x74, 0x8d, 0x44, 0x95, 0x5a, 0x18, 0x80, 0xda, 0xfa, 0xd0, + 0x95, 0x03, 0x00, 0x23, 0xdb, 0x1d, 0x68, 0x24, 0xc4, 0x59, 0x00, 0x80, + 0x12, 0x28, 0xa1, 0x26, 0x20, 0x3c, 0x49, 0x38, 0x29, 0x92, 0x15, 0xeb, + 0x49, 0xa7, 0xd5, 0xa2, 0xac, 0x65, 0xbe, 0xa6, 0x10, 0xa7, 0x65, 0xb9, + 0xb5, 0x59, 0x13, 0xa4, 0x95, 0x14, 0xd1, 0xc9, 0x4d, 0x33, 0x5f, 0x71, + 0x69, 0x5b, 0x49, 0xf8, 0x71, 0xeb, 0x6c, 0x70, 0x24, 0xbd, 0xe6, 0x89, + 0xd4, 0xca, 0x3b, 0x75, 0xef, 0x71, 0x19, 0x83, 0x75, 0x6e, 0xb4, 0x2f, + 0xe4, 0x15, 0x48, 0xdf, 0x4c, 0xbc, 0xac, 0x31, 0xe6, 0x82, 0x9b, 0xdc, + 0x62, 0x12, 0x9a, 0x4a, 0xb0, 0xd3, 0xf0, 0xff, 0x4b, 0xd9, 0x64, 0x01, + 0x6d, 0xfc, 0x6d, 0xdf, 0xd7, 0xed, 0xdf, 0xac, 0xdd, 0x1d, 0x06, 0xe1, + 0x26, 0x9a, 0x62, 0xcf, 0xac, 0x15, 0x0e, 0x58, 0x84, 0x3d, 0x57, 0x94, + 0xb6, 0x19, 0x73, 0x91, 0x61, 0x53, 0x3f, 0x8d, 0x15, 0x73, 0xbe, 0xd6, + 0x9a, 0x54, 0x0a, 0xee, 0xbd, 0xf0, 0x87, 0x1a, 0x24, 0xce, 0xe2, 0x4a, + 0x79, 0x80, 0x49, 0x18, 0x23, 0xd7, 0x28, 0x71, 0xa0, 0x57, 0x2a, 0xac, + 0x2a, 0x3a, 0xb1, 0x62, 0xae, 0xac, 0x34, 0xca, 0xa8, 0xe4, 0x6e, 0xfc, + 0x0c, 0xee, 0x44, 0x5d, 0xa6, 0x65, 0x0b, 0x94, 0xcb, 0x5c, 0x47, 0xd2, + 0x5e, 0xed, 0xb5, 0xa9, 0x2b, 0xf3, 0x10, 0x6c, 0xd0, 0xa8, 0x93, 0xb7, + 0x65, 0xce, 0x8d, 0x32, 0x56, 0x78, 0xca, 0xe1, 0xbb, 0x32, 0x38, 0xbb, + 0xe9, 0x1a, 0x8c, 0xc5, 0x5d, 0x36, 0xa3, 0x0c, 0x38, 0x58, 0x38, 0xea, + 0x70, 0xee, 0xbd, 0xa8, 0xfe, 0xe2, 0x2c, 0x32, 0x20, 0xa8, 0xfa, 0x61, + 0x36, 0x12, 0x00, 0x35, 0xac, 0xec, 0xf3, 0x9f, 0x5b, 0x31, 0x98, 0xf6, + 0x6b, 0x23, 0x19, 0xe9, 0xfa, 0xaa, 0x2d, 0xcd, 0x2a, 0x1c, 0xf5, 0x4e, + 0xef, 0xbc, 0xf6, 0xfa, 0xd7, 0x9d, 0x2e, 0xf5, 0x2e, 0xb7, 0xf2, 0x17, + 0x56, 0xdb, 0x67, 0xed, 0xee, 0xbe, 0x7f, 0xfb, 0x5a, 0xfa, 0x6d, 0xd9, + 0x9a, 0xbd, 0xfa, 0x53, 0x45, 0x2f, 0xf5, 0xa7, 0x2e, 0xa6, 0xb2, 0x26, + 0xd7, 0x5b, 0x9d, 0xe3, 0x4f, 0x62, 0x29, 0xca, 0xe5, 0x18, 0xe1, 0xd0, + 0xa4, 0x41, 0x21, 0xe7, 0x33, 0x90, 0xa2, 0xaa, 0x18, 0x26, 0x00, 0x01, + 0x28, 0x00, 0x03, 0x01, 0x2c, 0x06, 0x33, 0x02, 0xc4, 0x16, 0x73, 0x01, + 0x20, 0x0a, 0xd3, 0x02, 0x64, 0x3b, 0xf3, 0x01, 0x60, 0x0e, 0x13, 0x0c, + 0xe4, 0x72, 0xb3, 0x19, 0x94, 0x2f, 0xa3, 0x05, 0xa0, 0x07, 0xb3, 0x14, + 0x04, 0x57, 0x43, 0x13, 0x74, 0x20, 0x53, 0x10, 0x1c, 0x39, 0xe3, 0x1b, + 0x95, 0x33, 0xf3, 0x00, 0x3c, 0x01, 0xa5, 0xfa, 0x60, 0x60, 0x04, 0xc0, + 0x61, 0x3a, 0x02, 0x64, 0x70, 0x45, 0xa8, 0xee, 0x60, 0xbc, 0x81, 0x22, + 0x2c, 0xd1, 0x13, 0x03, 0x82, 0x34, 0x00, 0xd1, 0x05, 0x80, 0x31, 0xc0, + 0x74, 0x0c, 0x24, 0x29, 0x16, 0xff, 0xfb, 0xd4, 0x60, 0x2d, 0x80, 0x09, + 0x64, 0x80, 0xc4, 0x2e, 0x7e, 0xa0, 0x02, 0x67, 0x50, 0x48, 0x69, 0xc1, + 0x94, 0x00, 0x20, 0xbd, 0xc1, 0x0e, 0x3d, 0xfe, 0x00, 0x11, 0x12, 0x37, + 0xa2, 0x4f, 0x9a, 0x20, 0x01, 0x59, 0x74, 0xd8, 0x0c, 0x58, 0x06, 0x03, + 0x00, 0x84, 0x00, 0xc7, 0x83, 0xe0, 0x32, 0x01, 0x54, 0x0c, 0xaa, 0x9a, + 0x03, 0x41, 0xa2, 0x50, 0x2d, 0x0e, 0x70, 0x05, 0x12, 0x00, 0xc4, 0x01, + 0x40, 0x2c, 0x00, 0x03, 0x3f, 0x0d, 0x40, 0xc1, 0x20, 0x90, 0x30, 0x50, + 0x34, 0xdc, 0xb8, 0x5f, 0x24, 0x8c, 0x47, 0x18, 0x0c, 0x00, 0x09, 0x91, + 0x71, 0x8b, 0x00, 0x0d, 0x07, 0x00, 0x10, 0x1e, 0x06, 0x0e, 0x05, 0x85, + 0xf0, 0x01, 0x60, 0x39, 0x64, 0xc9, 0x6f, 0x30, 0x16, 0x78, 0xe3, 0x62, + 0x06, 0x4f, 0x91, 0x70, 0xe5, 0x44, 0x64, 0x21, 0x51, 0xda, 0x29, 0x21, + 0x95, 0x74, 0x0d, 0x8e, 0x24, 0xc6, 0xa3, 0x96, 0x7c, 0x83, 0x90, 0x73, + 0xe5, 0xf2, 0xb9, 0x80, 0xb2, 0x89, 0xd1, 0xf4, 0x39, 0xc5, 0x02, 0x1c, + 0xe9, 0x32, 0x6e, 0x6a, 0x62, 0xce, 0x44, 0xcf, 0x9c, 0x33, 0x2e, 0x1c, + 0x50, 0xf4, 0x6c, 0x43, 0x8d, 0xc9, 0xa2, 0x68, 0xcc, 0x9a, 0x2e, 0x9e, + 0x47, 0x40, 0xe1, 0xd4, 0x54, 0x81, 0x71, 0x23, 0x03, 0x13, 0x04, 0x0d, + 0x0c, 0x14, 0x5e, 0x31, 0x2f, 0x15, 0x8a, 0x27, 0xce, 0x93, 0x27, 0xcc, + 0x6a, 0x5a, 0x49, 0x16, 0x9d, 0xdc, 0xd4, 0xfa, 0xe6, 0x66, 0x06, 0x85, + 0xb3, 0x04, 0xec, 0xf4, 0x13, 0x37, 0x2a, 0xa6, 0x5d, 0x9d, 0x2e, 0xcc, + 0x51, 0x49, 0x16, 0x32, 0x5a, 0x49, 0x98, 0xa4, 0xdf, 0xff, 0xff, 0xfd, + 0x33, 0x74, 0xd2, 0x57, 0xff, 0xff, 0xff, 0x9d, 0x34, 0x81, 0xa0, 0x00, + 0x00, 0x04, 0x06, 0x64, 0x00, 0x00, 0x00, 0x01, 0xbc, 0xed, 0x44, 0x70, + 0xed, 0x91, 0x88, 0xd2, 0xb5, 0x94, 0xae, 0xc4, 0x29, 0x8a, 0x75, 0x95, + 0xde, 0x47, 0x40, 0x69, 0x73, 0xa9, 0x05, 0x07, 0xa9, 0x03, 0xf9, 0x98, + 0x96, 0x7a, 0xa3, 0x6b, 0x55, 0xa5, 0x16, 0xee, 0xd4, 0xb9, 0x19, 0x51, + 0x2e, 0x7a, 0x33, 0x6e, 0xb4, 0x67, 0xd3, 0x3b, 0x2d, 0x1d, 0x9d, 0x98, + 0xbb, 0xeb, 0xb1, 0xb9, 0xd5, 0x9d, 0x27, 0x25, 0x25, 0x45, 0xe5, 0x45, + 0xec, 0xfb, 0xa2, 0x32, 0x35, 0x8f, 0x98, 0xb7, 0x59, 0x65, 0x6d, 0x35, + 0xdc, 0x94, 0x38, 0x77, 0xff, 0xff, 0xff, 0xd8, 0xa5, 0x76, 0x1f, 0xff, + 0xff, 0xff, 0xd0, 0xcc, 0x34, 0x58, 0x60, 0x30, 0x14, 0x00, 0x30, 0x08, + 0x07, 0x5c, 0xc4, 0x4c, 0x30, 0xd8, 0xd1, 0x94, 0x09, 0xe8, 0xc2, 0x57, + 0x07, 0x08, 0xc0, 0x87, 0x08, 0x24, 0xc4, 0xd8, 0x05, 0x64, 0xc1, 0x94, + 0x00, 0xfc, 0xc1, 0x8c, 0x16, 0x24, 0xc0, 0x74, 0x05, 0x74, 0xc2, 0x6c, + 0x1c, 0xe4, 0xc9, 0xe2, 0x3d, 0x2c, 0xe4, 0x78, 0xce, 0xe8, 0xcf, 0xfb, + 0x30, 0x40, 0xc7, 0x57, 0x10, 0xe8, 0xc2, 0xbf, 0x06, 0x68, 0xc0, 0x83, + 0x02, 0x54, 0xc0, 0xa6, 0x03, 0x84, 0xcf, 0xff, 0x23, 0xa3, 0x19, 0xcc, + 0x80, 0x5d, 0x33, 0x33, 0xa8, 0xd4, 0xe3, 0x90, 0x72, 0xb0, 0xc3, 0x82, + 0x42, 0x40, 0x40, 0x80, 0x30, 0x66, 0xa7, 0x19, 0xc7, 0xd6, 0x06, 0x19, + 0x03, 0xb2, 0xa0, 0x60, 0x1d, 0x2a, 0x9a, 0x19, 0x81, 0x81, 0xcd, 0xcd, + 0x3d, 0xcc, 0x8c, 0x73, 0x1e, 0x05, 0x34, 0x36, 0x69, 0x20, 0x65, 0xcc, + 0x4d, 0x70, 0x39, 0xb4, 0x35, 0x22, 0x16, 0xe1, 0x89, 0x64, 0x69, 0xf3, + 0x98, 0x8a, 0xbf, 0x50, 0x15, 0xe9, 0x4c, 0x31, 0x08, 0x8f, 0xc3, 0xb1, + 0x68, 0x9d, 0x3d, 0x58, 0x62, 0x53, 0x2f, 0xa2, 0xe5, 0x5a, 0x68, 0xdd, + 0x5d, 0x54, 0xbb, 0xdd, 0xe5, 0x8d, 0x7c, 0x2f, 0x6b, 0x99, 0xe5, 0x86, + 0x57, 0xfb, 0x63, 0x5d, 0xfe, 0xd0, 0x65, 0xff, 0xfa, 0xc3, 0xf0, 0xc3, + 0xf7, 0xac, 0xef, 0x6f, 0x78, 0xe3, 0xdc, 0xb9, 0xdc, 0xf7, 0x5f, 0x3c, + 0xf9, 0xbf, 0xdf, 0x32, 0xd6, 0xb7, 0xff, 0x87, 0xf3, 0xbf, 0x9e, 0x3d, + 0xe6, 0xf9, 0x6f, 0x58, 0x54, 0xd7, 0x3e, 0xde, 0xf9, 0x9e, 0x79, 0xe3, + 0xac, 0xf9, 0xdd, 0x7f, 0x7f, 0xbf, 0xcf, 0xe6, 0x7f, 0xbf, 0xde, 0xbb, + 0xbe, 0x6f, 0x5d, 0xff, 0xfa, 0x9c, 0xd7, 0x3b, 0xdd, 0xe1, 0xdd, 0x67, + 0x9e, 0x1d, 0xfa, 0xb8, 0x63, 0xfa, 0xab, 0x85, 0x7b, 0xbf, 0xdb, 0x58, + 0x5e, 0xed, 0x2d, 0x10, 0x0a, 0xda, 0xd2, 0x00, 0x70, 0x29, 0x35, 0xff, + 0xd7, 0xaf, 0xaf, 0xff, 0xff, 0xf7, 0x32, 0xb7, 0xb0, 0xc7, 0x21, 0xc1, + 0x18, 0xd6, 0x3c, 0x84, 0x61, 0x98, 0xe7, 0x43, 0xa1, 0x84, 0xb3, 0x89, + 0x3b, 0xb9, 0x9e, 0x62, 0x11, 0x5c, 0x3e, 0x8a, 0xd4, 0x7d, 0x95, 0xad, + 0xd7, 0xff, 0xdb, 0xad, 0x5b, 0x4f, 0xf6, 0x7b, 0x7d, 0xff, 0x66, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x5e, 0x65, 0x55, 0xef, 0xdc, 0xfe, 0x0d, 0x86, + 0x55, 0x30, 0x1c, 0x40, 0xce, 0x30, 0x0b, 0x41, 0x95, 0x30, 0x27, 0x9f, + 0xa8, 0x35, 0xb0, 0x4c, 0x57, 0x30, 0x1d, 0x42, 0x58, 0x30, 0x0d, 0xc2, + 0xbc, 0x30, 0x42, 0x42, 0x59, 0x30, 0x3c, 0x42, 0x4b, 0x31, 0xd2, 0xc4, + 0xe8, 0x30, 0x70, 0xc0, 0x28, 0x30, 0x2f, 0x42, 0x54, 0x31, 0x2b, 0x89, + 0x87, 0x3f, 0x27, 0x75, 0x83, 0x31, 0x64, 0x85, 0x05, 0x30, 0x20, 0x01, + 0x48, 0x34, 0x61, 0x37, 0x32, 0xfc, 0x4e, 0x31, 0x68, 0x9d, 0x35, 0x5e, + 0x5d, 0x36, 0x40, 0x9d, 0x0e, 0x25, 0x8c, 0x00, 0x55, 0x0d, 0x6d, 0x0f, + 0x8c, 0x54, 0x06, 0x0c, 0x4a, 0xff, 0xfb, 0xd4, 0x60, 0x2c, 0x0c, 0x48, + 0x23, 0x6f, 0xc2, 0x03, 0xfd, 0x4b, 0x70, 0x2f, 0x46, 0x08, 0xe3, 0x14, + 0x03, 0x5d, 0x1a, 0xa8, 0xd5, 0x18, 0x6f, 0x7d, 0xeb, 0x80, 0xc8, 0x16, + 0x63, 0x5c, 0xd0, 0x09, 0x34, 0x11, 0x8c, 0x12, 0x08, 0x0c, 0x36, 0x0d, + 0x4c, 0x7c, 0x29, 0x4e, 0x20, 0x23, 0x09, 0x80, 0x15, 0x0f, 0x08, 0x12, + 0x93, 0x94, 0xa0, 0x31, 0x30, 0x5c, 0x2f, 0x30, 0x04, 0x02, 0x0b, 0x81, + 0x46, 0x12, 0x10, 0xc6, 0x04, 0x81, 0xd2, 0x32, 0xed, 0x32, 0xd5, 0xd0, + 0x17, 0x01, 0x58, 0x26, 0xdf, 0xb4, 0xb8, 0x64, 0xd2, 0x97, 0xf6, 0x36, + 0xd9, 0x16, 0xa3, 0x21, 0xa5, 0x6f, 0x2d, 0xd8, 0x74, 0xa7, 0x60, 0x57, + 0x7d, 0xc5, 0x98, 0x7c, 0x46, 0xb8, 0x82, 0xdc, 0x20, 0x36, 0x91, 0xfc, + 0x38, 0x86, 0x65, 0x9a, 0x89, 0x1a, 0x26, 0x29, 0x11, 0x0a, 0xed, 0xaf, + 0xd7, 0x46, 0xd1, 0x03, 0x11, 0x87, 0x46, 0xb1, 0x8b, 0x5d, 0x4b, 0x61, + 0x9c, 0xda, 0x5a, 0xac, 0x8d, 0xef, 0xf1, 0x8a, 0xe8, 0x36, 0x89, 0x19, + 0x65, 0x5d, 0x5e, 0x7b, 0x05, 0x2b, 0x62, 0xc4, 0xfa, 0xf3, 0x94, 0xe5, + 0x2f, 0x9e, 0x15, 0xac, 0x4a, 0xb1, 0x3b, 0x52, 0xfc, 0x91, 0x3d, 0x25, + 0x2a, 0x4d, 0xfd, 0xcd, 0xd9, 0xf6, 0x3d, 0xd4, 0x14, 0xf7, 0xf7, 0x58, + 0x84, 0x22, 0xe4, 0xee, 0x4e, 0x87, 0x9c, 0xf3, 0xf8, 0xb7, 0x78, 0xa7, + 0xc4, 0xd3, 0x30, 0x8f, 0x10, 0xb9, 0xad, 0xe4, 0x63, 0x00, 0x3b, 0x62, + 0x40, 0x02, 0x1f, 0xff, 0xf4, 0xff, 0xf4, 0x99, 0xc9, 0xad, 0x84, 0xee, + 0x0c, 0x48, 0x8c, 0x20, 0x2b, 0x66, 0x47, 0xfc, 0x33, 0xf8, 0xc4, 0x49, + 0x08, 0xc1, 0xd6, 0xa5, 0xab, 0xe2, 0x8b, 0x2c, 0x4c, 0x3a, 0x41, 0xe8, + 0xb1, 0x74, 0xa3, 0xff, 0xff, 0xff, 0xff, 0xed, 0x48, 0x0e, 0xd6, 0x80, + 0x06, 0x06, 0xe0, 0x70, 0x60, 0xe0, 0x04, 0x66, 0x39, 0xef, 0xac, 0x7e, + 0x76, 0x23, 0x26, 0x21, 0xe0, 0x30, 0x60, 0xa4, 0x19, 0x26, 0x31, 0xa0, + 0xfc, 0x60, 0x74, 0x02, 0x66, 0x78, 0x00, 0xae, 0x60, 0x36, 0x0a, 0xc6, + 0x16, 0x00, 0x2e, 0x62, 0xb2, 0x24, 0x46, 0xe5, 0x11, 0xa7, 0x06, 0x20, + 0xa8, 0x17, 0x06, 0x06, 0x50, 0x16, 0x26, 0x01, 0x18, 0x12, 0xc6, 0x01, + 0x20, 0x02, 0xe6, 0x00, 0x30, 0x0a, 0x46, 0x03, 0x10, 0x27, 0x66, 0x03, + 0x08, 0x00, 0xa5, 0x99, 0x1c, 0x02, 0x50, 0xc0, 0x93, 0x00, 0x1c, 0x10, + 0x00, 0x40, 0xd0, 0x05, 0xad, 0xa1, 0x80, 0x02, 0x00, 0x48, 0x54, 0x06, + 0x00, 0x10, 0x40, 0xa1, 0x80, 0x04, 0x25, 0x2a, 0x6c, 0x4b, 0x59, 0xb1, + 0x60, 0x00, 0x28, 0x93, 0xa8, 0x2c, 0x02, 0x70, 0x90, 0x04, 0x11, 0x26, + 0x13, 0x23, 0xa1, 0x51, 0x50, 0xc3, 0x6f, 0x1f, 0x27, 0x0b, 0x22, 0x40, + 0xd4, 0x6c, 0x7c, 0xda, 0xae, 0x18, 0x46, 0x8a, 0x98, 0xff, 0x6d, 0x58, + 0x6c, 0x57, 0xbf, 0x60, 0x1a, 0x07, 0x4a, 0xb1, 0xb9, 0xbd, 0x5e, 0xe1, + 0x3a, 0xf2, 0xb5, 0x91, 0xb9, 0xb2, 0x24, 0x58, 0x14, 0xad, 0x63, 0x5f, + 0x7d, 0xbb, 0x7e, 0x16, 0xeb, 0x36, 0xf5, 0x24, 0x9b, 0x79, 0xf5, 0x48, + 0xb9, 0x15, 0x06, 0x9c, 0x0c, 0x85, 0x5c, 0x6d, 0x12, 0xd2, 0x6e, 0xc9, + 0x65, 0x58, 0x86, 0xd1, 0xed, 0x67, 0xb3, 0xa7, 0x5d, 0xde, 0x87, 0xd9, + 0x32, 0x30, 0x0e, 0x10, 0x22, 0x29, 0x00, 0x0f, 0x4a, 0x88, 0x00, 0xec, + 0x3c, 0xff, 0xff, 0xf5, 0x45, 0xf5, 0x3d, 0xd8, 0x33, 0xc9, 0x3b, 0xb5, + 0x9e, 0xf6, 0x07, 0x53, 0x3b, 0x88, 0x82, 0x53, 0x95, 0x59, 0xc6, 0x03, + 0xb9, 0xa9, 0x63, 0x50, 0x03, 0x42, 0x51, 0x3d, 0x7a, 0xb6, 0xdc, 0x95, + 0x77, 0xdb, 0xd5, 0xff, 0xff, 0xff, 0xf4, 0x56, 0x98, 0x82, 0x9a, 0x8a, + 0x66, 0x5c, 0x72, 0x70, 0x5c, 0x64, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x00, 0x18, 0x88, 0x00, 0x14, 0x03, 0x31, 0x81, 0x14, 0x03, 0x31, + 0x84, 0xe6, 0x01, 0xc9, 0xa7, 0xfa, 0x09, 0xc0, 0x60, 0x54, 0xc6, 0x04, + 0x60, 0x11, 0x81, 0x00, 0xab, 0x85, 0x80, 0x36, 0x31, 0x2f, 0xc1, 0xbf, + 0x30, 0x54, 0x80, 0x21, 0x30, 0x4b, 0x40, 0xf6, 0x30, 0xa2, 0x02, 0xaf, + 0x3a, 0x50, 0x4c, 0x50, 0x31, 0x2c, 0x81, 0x0b, 0x30, 0x80, 0x40, 0x7c, + 0x32, 0xf1, 0xcc, 0xca, 0xe0, 0x93, 0x10, 0x19, 0x0d, 0x39, 0x3c, 0x34, + 0xa8, 0x39, 0x27, 0x8a, 0x8b, 0x03, 0x8d, 0x85, 0x04, 0x43, 0x03, 0x0c, + 0x0a, 0x5f, 0xd0, 0x50, 0xa8, 0xc5, 0xac, 0x83, 0x64, 0x9e, 0xcc, 0x06, + 0x06, 0x55, 0x10, 0x50, 0x11, 0xcc, 0x04, 0x00, 0x43, 0x00, 0xab, 0x35, + 0x1f, 0x44, 0x0b, 0x53, 0x05, 0x81, 0x61, 0xc7, 0x52, 0xcc, 0x88, 0x94, + 0x02, 0xb8, 0xe3, 0xac, 0xc1, 0xe5, 0x9a, 0xb9, 0x07, 0x41, 0x12, 0xb7, + 0xfa, 0xb6, 0x70, 0xa9, 0x55, 0xf6, 0x99, 0xb9, 0x98, 0x85, 0xa0, 0xb4, + 0x54, 0x5a, 0x26, 0x12, 0x00, 0x4c, 0x40, 0x8d, 0x98, 0x98, 0x49, 0x02, + 0x17, 0x13, 0x5d, 0x8b, 0x13, 0x9c, 0x40, 0x84, 0xa7, 0x91, 0x1a, 0xa2, + 0xf2, 0xce, 0x92, 0x33, 0x4d, 0x65, 0x1f, 0xcc, 0x59, 0xa6, 0xce, 0x54, + 0xab, 0xd3, 0x76, 0x75, 0xd8, 0xd3, 0x66, 0x25, 0x1e, 0xa8, 0x7a, 0x56, + 0xc6, 0x18, 0xd4, 0x3f, 0x6a, 0xb6, 0xbf, 0x66, 0xd1, 0x52, 0xb7, 0x54, + 0xab, 0xd3, 0xb3, 0x3d, 0xaa, 0xc8, 0x9f, 0x64, 0xa7, 0x4b, 0x1a, 0xba, + 0x98, 0xe9, 0x9f, 0x34, 0xf4, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xd6, + 0xe9, 0x70, 0x45, 0x1b, 0xfc, 0x53, 0x70, 0x64, 0x8d, 0xf8, 0x30, 0x68, + 0x65, 0x6e, 0x1f, 0x4d, 0xb7, 0x10, 0x2f, 0xf5, 0xad, 0xd9, 0xe2, 0x38, + 0x20, 0x45, 0x91, 0xa1, 0xb8, 0x1f, 0x0b, 0xa4, 0x57, 0xb4, 0xd4, 0x7d, + 0xa9, 0x7f, 0xba, 0xc3, 0x99, 0x67, 0xdb, 0x96, 0x45, 0xf7, 0x3a, 0x71, + 0xbe, 0x94, 0x45, 0xb9, 0x0a, 0x2c, 0xd1, 0xef, 0x0c, 0xa6, 0x65, 0x17, + 0x2b, 0x3b, 0x93, 0x68, 0xca, 0xb7, 0x27, 0xbd, 0x5a, 0x6a, 0x2a, 0x73, + 0x37, 0xe5, 0x77, 0x91, 0xcb, 0x5b, 0xb6, 0x77, 0x3b, 0x90, 0xa8, 0xb7, + 0x73, 0xee, 0xad, 0x99, 0x91, 0x69, 0xfc, 0xfe, 0x8d, 0x55, 0x44, 0x29, + 0xab, 0xa5, 0xbd, 0x52, 0x6a, 0x51, 0x77, 0xbe, 0xe8, 0xa4, 0x4a, 0x4c, + 0x8e, 0x42, 0xbb, 0xc8, 0x61, 0xf6, 0x18, 0x28, 0x2e, 0xa1, 0xd1, 0xe4, + 0x17, 0x08, 0x0f, 0x61, 0x8c, 0x30, 0x68, 0x7c, 0x40, 0x48, 0x68, 0x40, + 0x60, 0x12, 0x80, 0x66, 0x60, 0x37, 0x01, 0xf0, 0x61, 0x40, 0x97, 0x0a, + 0x6a, 0x4c, 0x86, 0x48, 0x60, 0x9d, 0x81, 0x0e, 0x60, 0x36, 0x03, 0x22, + 0x61, 0x29, 0x02, 0x4c, 0x60, 0x19, 0x02, 0x8e, 0x62, 0x87, 0x09, 0x2c, + 0x60, 0x4b, 0x80, 0x5a, 0x60, 0xb3, 0x01, 0x64, 0x61, 0x92, 0x86, 0xa2, + 0x78, 0x76, 0x5b, 0x1e, 0x65, 0x75, 0x80, 0x88, 0x61, 0x14, 0x00, 0x64, + 0x63, 0xd8, 0xe2, 0x63, 0x80, 0x80, 0x63, 0x78, 0xf2, 0x67, 0x1b, 0x44, + 0x64, 0xb0, 0x84, 0x60, 0x78, 0x1e, 0x60, 0x29, 0x18, 0x6e, 0xd8, 0x28, + 0x4a, 0x24, 0x18, 0x28, 0x28, 0x84, 0x14, 0x06, 0x03, 0x04, 0x86, 0x31, + 0x87, 0x67, 0x46, 0x85, 0x06, 0x16, 0x81, 0x41, 0x80, 0x2a, 0x1c, 0xd4, + 0x14, 0xc1, 0xd0, 0x68, 0xc0, 0xd0, 0x64, 0x38, 0x06, 0x30, 0x2c, 0x16, + 0x32, 0x80, 0xe6, 0x31, 0x6c, 0x04, 0x54, 0xa9, 0x77, 0x31, 0x32, 0xce, + 0x07, 0x80, 0xba, 0x25, 0x16, 0x6f, 0xf5, 0x39, 0x0a, 0xbe, 0xfc, 0xa4, + 0x06, 0x54, 0x4f, 0xbc, 0xab, 0x29, 0xee, 0x5a, 0xa6, 0xf1, 0x2f, 0x07, + 0xb2, 0xd2, 0xa0, 0xe5, 0x06, 0xb2, 0xe9, 0xc2, 0x54, 0xc0, 0xe1, 0x18, + 0x77, 0x9d, 0x40, 0xbc, 0x89, 0xd4, 0xae, 0xc9, 0x29, 0x66, 0x8b, 0x75, + 0xd1, 0x34, 0xad, 0x34, 0xc7, 0x82, 0x35, 0x29, 0x14, 0x59, 0x14, 0x99, + 0x03, 0xac, 0xb4, 0x19, 0x05, 0x2d, 0x4c, 0xe6, 0xac, 0x64, 0xeb, 0x76, + 0xb2, 0x17, 0x46, 0xfb, 0xb2, 0xda, 0xeb, 0x52, 0xb4, 0x59, 0x24, 0xd2, + 0xd4, 0xba, 0xe9, 0xbf, 0x77, 0x42, 0xf5, 0x2d, 0x48, 0xb5, 0x56, 0x42, + 0xd5, 0x9a, 0xa4, 0x91, 0xeb, 0xb6, 0xba, 0x6e, 0xc9, 0xdd, 0x9d, 0x15, + 0xa2, 0x79, 0xe9, 0x1d, 0x64, 0x0f, 0x19, 0x0b, 0x03, 0x09, 0x8d, 0x7d, + 0x26, 0xab, 0xd8, 0xce, 0xe5, 0xcb, 0xd5, 0xbf, 0x96, 0x29, 0x73, 0x94, + 0x8b, 0x50, 0x01, 0xe1, 0x04, 0x2c, 0x59, 0x6a, 0x31, 0xd2, 0xb9, 0xa1, + 0x99, 0x9c, 0x95, 0x0f, 0x34, 0x3f, 0x5a, 0x7e, 0x47, 0x7d, 0x15, 0x8f, + 0xb7, 0x5e, 0xdd, 0xaa, 0x55, 0x61, 0xa1, 0xa3, 0x5e, 0x62, 0xf6, 0xba, + 0x96, 0xfd, 0xda, 0x6b, 0x89, 0x46, 0xd2, 0xe3, 0x5a, 0xfa, 0x7b, 0x47, + 0xa7, 0x8b, 0xfa, 0xdb, 0x87, 0xb5, 0x8f, 0xbc, 0x7c, 0x35, 0x37, 0x17, + 0x2b, 0x23, 0xa7, 0x69, 0x5b, 0xaa, 0x6b, 0x1c, 0x3f, 0x8e, 0x62, 0x99, + 0x1a, 0x36, 0x9e, 0xaa, 0x29, 0x2e, 0x2a, 0xd2, 0x07, 0x1b, 0x0b, 0x76, + 0x71, 0x52, 0x2a, 0xe7, 0x0e, 0x35, 0xb3, 0x83, 0xd1, 0xc5, 0x03, 0x47, + 0x61, 0x62, 0xcf, 0x0d, 0x04, 0x85, 0x90, 0x35, 0x43, 0x94, 0xc4, 0x14, + 0xd4, 0x53, 0x32, 0xe3, 0x93, 0x82, 0xe3, 0x2a, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x01, 0xf4, 0x03, 0x01, 0x40, 0x2b, 0x02, 0x05, 0x81, 0x87, 0x6d, + 0x64, 0x9b, 0xc9, 0x92, 0xd1, 0x81, 0xd8, 0x36, 0x98, 0x0c, 0x09, 0x21, + 0x82, 0xe8, 0x9f, 0x98, 0x26, 0x07, 0xb1, 0x83, 0x1a, 0x11, 0x89, 0x09, + 0x59, 0x85, 0xb8, 0x58, 0x98, 0xe8, 0x22, 0x91, 0xb3, 0x47, 0x67, 0xe1, + 0x8b, 0xe8, 0x0b, 0xa1, 0x81, 0xda, 0x05, 0x39, 0x80, 0xa8, 0x06, 0xb1, + 0x80, 0x66, 0x02, 0x19, 0x80, 0x5c, 0x01, 0x61, 0x80, 0xba, 0x07, 0xa9, + 0x80, 0x78, 0x00, 0x1a, 0x18, 0x27, 0x11, 0x82, 0x9e, 0x00, 0x21, 0x80, + 0x12, 0x00, 0xd1, 0x54, 0x01, 0x32, 0x80, 0x1c, 0x03, 0x80, 0x50, 0x30, + 0x0d, 0x00, 0xd3, 0x30, 0x06, 0xc0, 0x94, 0x30, 0x01, 0x00, 0x05, 0x67, + 0x80, 0xe0, 0x03, 0x1d, 0x63, 0x00, 0x50, 0x01, 0xd1, 0xd0, 0x05, 0xab, + 0x8e, 0x00, 0x04, 0x60, 0x37, 0x81, 0x50, 0x1c, 0x04, 0xc3, 0x27, 0x59, + 0x91, 0xba, 0x64, 0x94, 0x2d, 0x62, 0x17, 0x70, 0xed, 0x8c, 0xe6, 0xff, + 0x72, 0x8d, 0xf9, 0x5e, 0x93, 0x89, 0x2c, 0xa9, 0x8f, 0x11, 0xba, 0x78, + 0x8a, 0xf5, 0x88, 0xf0, 0x05, 0x1c, 0x46, 0x04, 0x7b, 0x53, 0x33, 0x1f, + 0x6f, 0x34, 0xda, 0xb7, 0x87, 0xd2, 0xa8, 0x61, 0xbe, 0x92, 0x23, 0x64, + 0x77, 0x4e, 0xb2, 0xb5, 0x8a, 0xfd, 0xf6, 0x7c, 0xff, 0xf1, 0x4a, 0x6a, + 0xb4, 0xf4, 0xbf, 0xff, 0xdf, 0x7f, 0x39, 0xb5, 0x25, 0xc3, 0x97, 0x3a, + 0xf2, 0xac, 0x3e, 0x31, 0xb4, 0x76, 0xe1, 0x27, 0xac, 0xd1, 0xc4, 0xa1, + 0xc8, 0xa0, 0x8a, 0xe9, 0xd0, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0e, 0xc7, + 0x1d, 0x3f, 0xc5, 0x93, 0xdf, 0x7a, 0xe0, 0x48, 0xc6, 0xb8, 0x93, 0x34, + 0x23, 0x5c, 0x1b, 0x89, 0xb1, 0x16, 0x4f, 0xf1, 0xad, 0xca, 0x1a, 0x38, + 0x20, 0x05, 0xa1, 0xa1, 0xb8, 0xb6, 0x38, 0xb5, 0x35, 0x17, 0x38, 0x81, + 0x28, 0x02, 0x6b, 0x1b, 0x00, 0x39, 0x19, 0x95, 0x7f, 0x5b, 0xdd, 0x67, + 0xff, 0xff, 0x3f, 0xff, 0xff, 0xfe, 0xc4, 0x55, 0xa5, 0x55, 0xc6, 0x18, + 0xd6, 0x8a, 0x74, 0x0a, 0x04, 0x10, 0x2c, 0x73, 0xd1, 0x8c, 0x9a, 0x5b, + 0x5e, 0x8b, 0x2d, 0x48, 0xa1, 0xcf, 0x8b, 0x08, 0x0e, 0x2e, 0x13, 0x21, + 0x50, 0xc1, 0xc4, 0xc5, 0x52, 0x95, 0x05, 0xb5, 0x35, 0xe3, 0x69, 0x4c, + 0xc8, 0x65, 0x51, 0x1f, 0xff, 0xdb, 0xf0, 0xb3, 0x9e, 0x44, 0x69, 0xc6, + 0xc4, 0x12, 0x01, 0x80, 0x50, 0x01, 0xc9, 0x80, 0x3e, 0x04, 0x91, 0x80, + 0x10, 0x58, 0x99, 0x85, 0x20, 0x11, 0x61, 0x80, 0x90, 0x02, 0xb9, 0x80, + 0xba, 0x01, 0x89, 0x81, 0xea, 0x05, 0x61, 0x81, 0x2a, 0x02, 0x99, 0x85, + 0x4a, 0x1f, 0x60, 0x38, 0x16, 0xc3, 0x00, 0x48, 0x18, 0x43, 0x01, 0xa4, + 0x52, 0x73, 0x25, 0xbb, 0x65, 0xd3, 0x10, 0xcc, 0x37, 0x93, 0x02, 0x58, + 0x10, 0x43, 0x33, 0xbe, 0x4c, 0x78, 0x52, 0x01, 0x10, 0xcc, 0x74, 0xcf, + 0x08, 0x47, 0xc0, 0x42, 0xa5, 0x73, 0xa8, 0x82, 0x0c, 0x56, 0x00, 0x05, + 0x07, 0x90, 0x4e, 0x60, 0x40, 0x39, 0x95, 0x0a, 0x67, 0xc8, 0x1d, 0x07, + 0x08, 0x51, 0x49, 0x2a, 0x5a, 0x51, 0x80, 0x46, 0x84, 0xc0, 0xd4, 0x7d, + 0x04, 0x03, 0xcc, 0x8b, 0x51, 0x11, 0x02, 0x53, 0xf1, 0x6b, 0xb9, 0x11, + 0x84, 0x5e, 0xa4, 0x99, 0x61, 0x2b, 0x3b, 0x39, 0x3c, 0x2e, 0x66, 0x01, + 0x4a, 0xea, 0xd7, 0xa5, 0x1c, 0xa6, 0xa6, 0xaf, 0xf1, 0x9a, 0x42, 0xe0, + 0xca, 0x14, 0x47, 0x00, 0x97, 0x05, 0x39, 0xa2, 0x87, 0x01, 0x9c, 0x9c, + 0x81, 0x88, 0x9e, 0x22, 0x5d, 0x30, 0x4c, 0xa8, 0x7c, 0x7a, 0xa9, 0x17, + 0x8e, 0xa2, 0x76, 0x8b, 0x59, 0x32, 0x82, 0x36, 0x75, 0x20, 0x84, 0xcd, + 0x2a, 0x91, 0xd0, 0xd2, 0x55, 0x77, 0x3c, 0xeb, 0x6a, 0xa9, 0xae, 0xa6, + 0x5a, 0x0a, 0x5f, 0xf5, 0x3b, 0xaf, 0x6d, 0x5d, 0x4a, 0xa5, 0x5a, 0x97, + 0xa9, 0xfe, 0xad, 0x7d, 0xbd, 0x74, 0x7f, 0x75, 0xf5, 0xaa, 0xa5, 0xaf, + 0x5a, 0x13, 0x76, 0xc6, 0xb4, 0xb0, 0x60, 0x7e, 0xe4, 0xc3, 0x76, 0x65, + 0x52, 0x18, 0x45, 0x06, 0x37, 0xeb, 0x61, 0x62, 0xf5, 0x3e, 0x22, 0x75, + 0x65, 0x3a, 0x39, 0x86, 0x42, 0x2d, 0x9d, 0xda, 0xb3, 0xa9, 0x51, 0xc3, + 0xa1, 0xc3, 0x27, 0x78, 0x88, 0xba, 0x22, 0x0f, 0x54, 0x3c, 0x76, 0x3d, + 0xda, 0x99, 0xc7, 0xd9, 0xe3, 0x12, 0x8b, 0xa6, 0xec, 0xb6, 0x82, 0x9c, + 0xf8, 0x1e, 0x29, 0x66, 0xa5, 0xc5, 0x46, 0x7e, 0x64, 0x33, 0x7f, 0xd7, + 0x51, 0x10, 0x43, 0x3c, 0x39, 0xeb, 0xaf, 0x5d, 0x24, 0x44, 0x5f, 0x17, + 0x3f, 0x29, 0x57, 0x15, 0x57, 0x0d, 0x29, 0x5a, 0xcd, 0xcd, 0xc3, 0x35, + 0xd3, 0xbd, 0xce, 0x3b, 0x99, 0x9a, 0x88, 0x98, 0xbe, 0xe5, 0xbb, 0x99, + 0x4b, 0x92, 0xed, 0x55, 0xae, 0x10, 0x54, 0x58, 0x71, 0xb2, 0x30, 0x3c, + 0x3d, 0xc3, 0xe0, 0x78, 0x42, 0x12, 0x85, 0x58, 0x70, 0x8e, 0xe6, 0x83, + 0x60, 0xe4, 0x25, 0x17, 0x04, 0x8c, 0x17, 0x13, 0xa6, 0x20, 0xa6, 0xa2, + 0x99, 0x97, 0x1c, 0x9c, 0x17, 0x19, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x00, 0xb4, 0x03, 0x02, 0xe0, 0x29, 0x30, 0x3b, 0x05, 0x83, 0x0c, + 0xa9, 0x45, 0x38, 0xd8, 0x18, 0xe3, 0x09, 0x60, 0x5b, 0x1d, 0x04, 0xd3, + 0x14, 0x40, 0x78, 0x30, 0x9a, 0x0a, 0xc3, 0x39, 0x82, 0x85, 0x01, 0x0b, + 0xb1, 0x83, 0x70, 0xb1, 0x98, 0x91, 0xad, 0x91, 0xa4, 0x41, 0xb4, 0x41, + 0x83, 0xee, 0x17, 0x21, 0x80, 0xd8, 0x09, 0xe9, 0x80, 0x6c, 0x04, 0x71, + 0x80, 0x26, 0x02, 0x78, 0x30, 0x02, 0x53, 0x00, 0xe8, 0x12, 0x20, 0x50, + 0x12, 0xc3, 0xc0, 0x08, 0x98, 0x01, 0x20, 0x53, 0x98, 0x21, 0xe0, 0x03, + 0x13, 0x00, 0x8c, 0x60, 0x0b, 0x80, 0x20, 0x0a, 0x02, 0x8c, 0x1c, 0x01, + 0xb9, 0x28, 0x16, 0x86, 0x07, 0xd0, 0x11, 0x22, 0x80, 0x02, 0x2b, 0x10, + 0x38, 0x01, 0x08, 0x08, 0x1a, 0x02, 0x19, 0x80, 0x1a, 0x00, 0xaa, 0xb7, + 0x20, 0x08, 0x38, 0x16, 0x80, 0x80, 0x39, 0xd0, 0x35, 0x25, 0x6f, 0xc1, + 0x50, 0xc1, 0x49, 0x01, 0xe1, 0x0c, 0x6b, 0xaa, 0x3e, 0x0d, 0x45, 0x0c, + 0x77, 0xc7, 0x7c, 0x77, 0xd1, 0x37, 0x85, 0x74, 0xf4, 0xcb, 0x84, 0xac, + 0xe5, 0x75, 0x1c, 0xd2, 0x31, 0x19, 0x63, 0x6f, 0x23, 0xd7, 0x4b, 0xb5, + 0x45, 0xb2, 0x8f, 0xda, 0x04, 0xd0, 0xae, 0xcd, 0xb7, 0xa8, 0x46, 0x7d, + 0x2d, 0x79, 0xf2, 0x18, 0x0a, 0x23, 0x93, 0x4b, 0x55, 0xef, 0x3f, 0xa2, + 0xed, 0xb5, 0x91, 0x9f, 0x76, 0x2c, 0xef, 0xa3, 0x76, 0xb1, 0x18, 0x7d, + 0xb3, 0xff, 0xf7, 0xfb, 0xf7, 0x69, 0xfd, 0x73, 0xbf, 0xf5, 0x6d, 0xd1, + 0xfd, 0xdc, 0x7b, 0x52, 0x46, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd6, + 0xf7, 0x33, 0x45, 0x93, 0xdf, 0x7a, 0xe2, 0x66, 0xee, 0x08, 0x31, 0x68, + 0x25, 0x6e, 0x1d, 0x04, 0xfd, 0x16, 0x4f, 0x7d, 0xeb, 0x81, 0xe1, 0x37, + 0xe0, 0x45, 0x81, 0xa1, 0xb8, 0x31, 0x83, 0x3a, 0x08, 0x00, 0xd5, 0x36, + 0xf6, 0x69, 0xb3, 0xc6, 0xe6, 0x18, 0x63, 0xbb, 0xf7, 0x6c, 0x66, 0x71, + 0x62, 0x09, 0x04, 0x8e, 0x61, 0x28, 0x4c, 0x95, 0x63, 0x29, 0x0e, 0x66, + 0xe1, 0xcd, 0x50, 0xcc, 0x02, 0x40, 0x69, 0xd5, 0xfd, 0xda, 0xe4, 0xea, + 0xb7, 0x47, 0x67, 0xaa, 0x51, 0xc8, 0x6c, 0xd2, 0x5a, 0x4f, 0x23, 0x58, + 0xde, 0xb6, 0x44, 0x7a, 0xd3, 0xbc, 0xe9, 0x66, 0x5c, 0x9a, 0xd6, 0xed, + 0x3b, 0xda, 0x4a, 0x25, 0x1d, 0x5e, 0xbd, 0x56, 0xee, 0x72, 0x25, 0x65, + 0x9d, 0xd3, 0x5a, 0x9c, 0xbb, 0xb1, 0x25, 0x77, 0x70, 0x8b, 0x8d, 0x8b, + 0xb8, 0xb0, 0x8a, 0x87, 0xca, 0x03, 0x1c, 0xaa, 0x3c, 0x0e, 0x71, 0x30, + 0xe0, 0x28, 0x40, 0x03, 0x30, 0x3e, 0x01, 0xb3, 0x04, 0x70, 0x0a, 0x31, + 0x2a, 0x5e, 0x53, 0xbc, 0x40, 0xd4, 0x30, 0xa2, 0x03, 0x53, 0x04, 0xf1, + 0x4e, 0x30, 0x3b, 0x13, 0xd3, 0x04, 0xf0, 0x8a, 0x33, 0xdf, 0x0d, 0x43, + 0x0a, 0x80, 0x41, 0x31, 0x1f, 0x0d, 0xe3, 0x1d, 0x24, 0x89, 0x38, 0x4d, + 0xed, 0x2d, 0x31, 0x92, 0x02, 0xe1, 0x30, 0x88, 0xc0, 0xac, 0x03, 0x00, + 0xe0, 0x10, 0x05, 0x31, 0x80, 0x04, 0x02, 0xb9, 0x80, 0xae, 0x04, 0x40, + 0xb0, 0x1d, 0x00, 0xd0, 0x02, 0x04, 0x00, 0x6c, 0x98, 0x13, 0xe0, 0x0a, + 0x09, 0x00, 0x5c, 0x60, 0x0c, 0x80, 0x08, 0x2c, 0x05, 0xb8, 0x40, 0x03, + 0x46, 0x02, 0x68, 0x13, 0x46, 0x0b, 0x38, 0x0d, 0xe3, 0xc0, 0x21, 0x46, + 0x8c, 0x01, 0x70, 0x00, 0x5c, 0x33, 0x00, 0x18, 0x02, 0xa0, 0x60, 0x00, + 0x8c, 0x9c, 0x94, 0x01, 0x63, 0x00, 0xd4, 0x17, 0x03, 0x00, 0x70, 0x01, + 0x86, 0xa0, 0x8b, 0xd5, 0x68, 0x14, 0x6c, 0xb4, 0x53, 0x1d, 0xc0, 0xe9, + 0x8a, 0xad, 0x7d, 0x15, 0xb8, 0x58, 0xe0, 0xc6, 0x72, 0x8d, 0x77, 0x79, + 0xaa, 0xe1, 0xf5, 0x5e, 0x2d, 0xf3, 0xb8, 0xaf, 0xba, 0x74, 0xbd, 0x40, + 0x7c, 0x9d, 0x7b, 0x14, 0x82, 0x41, 0xf7, 0x8a, 0xbb, 0x6d, 0x8d, 0x7b, + 0xcd, 0x58, 0x4e, 0xa0, 0x45, 0x42, 0x6b, 0x9d, 0xef, 0x2e, 0x19, 0xce, + 0xe9, 0x9a, 0x6b, 0x72, 0x6e, 0xb7, 0xc6, 0xf7, 0xad, 0xe3, 0x7f, 0xfd, + 0xe6, 0x57, 0x1c, 0x73, 0x3a, 0xe2, 0x24, 0x13, 0x5b, 0x46, 0x5e, 0x6a, + 0xf7, 0xa9, 0xea, 0x3e, 0xc5, 0xb1, 0x0c, 0x28, 0xa1, 0x95, 0xb1, 0x5a, + 0xe9, 0x01, 0x09, 0x43, 0xc3, 0xe7, 0x96, 0x13, 0xd4, 0x99, 0xac, 0x5b, + 0x0a, 0x0a, 0x9d, 0xab, 0x5b, 0x19, 0xfd, 0x57, 0xa0, 0xb5, 0x18, 0xf3, + 0x42, 0x45, 0x1c, 0x76, 0x23, 0x08, 0x78, 0xed, 0xfa, 0x68, 0x8e, 0x6f, + 0x69, 0x1f, 0xab, 0xa4, 0x23, 0x3a, 0x53, 0x48, 0xaa, 0x31, 0x2a, 0x49, + 0x1f, 0x26, 0xd5, 0xea, 0x92, 0x24, 0x19, 0x3b, 0xa7, 0x8f, 0x86, 0xae, + 0xc6, 0xb4, 0x71, 0xe9, 0xed, 0x33, 0xc2, 0xf1, 0xf2, 0xbc, 0xfe, 0x3f, + 0x5a, 0x55, 0x68, 0xaa, 0xa9, 0x7e, 0xab, 0xe3, 0xbf, 0xab, 0xa5, 0xee, + 0xd9, 0x6f, 0xae, 0x12, 0xae, 0x6a, 0xe1, 0xe9, 0x9e, 0x98, 0x8d, 0xe5, + 0xba, 0x9f, 0xb4, 0xbe, 0x67, 0x9f, 0x66, 0x84, 0xa1, 0xac, 0x2f, 0x32, + 0x5a, 0x8d, 0x14, 0x72, 0xcc, 0x1e, 0xa2, 0x40, 0x70, 0x70, 0x2a, 0x09, + 0x4e, 0xa1, 0x84, 0xd0, 0x95, 0xcd, 0x0d, 0x26, 0x20, 0xa6, 0xa2, 0x99, + 0x97, 0x1c, 0x9c, 0x17, 0x19, 0x2a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x18, 0x0c, 0x03, 0x60, 0x06, 0xcc, 0x07, 0xf0, 0x15, 0x4c, 0x1f, + 0x80, 0x1e, 0x4d, 0x30, 0xe0, 0x05, 0x8c, 0x0f, 0x00, 0x01, 0xcc, 0x03, + 0x10, 0x7f, 0xcc, 0x23, 0xd0, 0x5f, 0x0c, 0x05, 0xf0, 0x27, 0x4c, 0x4f, + 0xa0, 0x75, 0x0c, 0x18, 0x30, 0x04, 0xcc, 0x1c, 0x80, 0x2b, 0x4c, 0x38, + 0x50, 0xa1, 0x4f, 0x64, 0xc7, 0x4d, 0x8c, 0xe2, 0x10, 0x09, 0x8c, 0x2d, + 0x40, 0x09, 0x8e, 0x56, 0xab, 0x36, 0xa0, 0x90, 0xcc, 0xa1, 0x33, 0x03, + 0xdb, 0x40, 0xce, 0x84, 0x93, 0x31, 0x34, 0x94, 0xc3, 0xc0, 0xa4, 0x1e, + 0x05, 0x15, 0x81, 0xc4, 0xe0, 0x70, 0x10, 0xc3, 0xe2, 0xf3, 0xc5, 0xb3, + 0x82, 0x07, 0x6d, 0x19, 0xa6, 0x3f, 0x20, 0xe1, 0xbb, 0x0e, 0x4c, 0x50, + 0x20, 0x04, 0xcf, 0xaa, 0x33, 0x59, 0x00, 0xd0, 0x39, 0x4a, 0x5c, 0xa9, + 0x00, 0xe0, 0x05, 0xe5, 0xaf, 0x39, 0x33, 0xa8, 0xec, 0xb6, 0xcc, 0xb9, + 0x04, 0xd8, 0xe2, 0xcc, 0xad, 0xd7, 0x89, 0xd8, 0xce, 0x37, 0x68, 0xf8, + 0xfc, 0x3a, 0x88, 0x62, 0xf0, 0x35, 0x67, 0x08, 0x54, 0xda, 0x4c, 0x44, + 0xdc, 0xac, 0xe4, 0x2a, 0xd6, 0x9a, 0x4c, 0xc5, 0x5d, 0x70, 0x93, 0x52, + 0x74, 0xd3, 0x87, 0xe6, 0x5b, 0x6a, 0xe9, 0xb1, 0x15, 0xf5, 0x35, 0xba, + 0x67, 0x9e, 0x18, 0x44, 0x41, 0x95, 0xc3, 0x61, 0x7b, 0x97, 0x43, 0x1f, + 0x3c, 0x36, 0x36, 0xcc, 0x3a, 0xd9, 0xcf, 0xd4, 0x6d, 0xee, 0x25, 0x8c, + 0xb8, 0xaa, 0xeb, 0xfe, 0x67, 0xe2, 0xe3, 0xbe, 0xaa, 0x6e, 0xa7, 0xb9, + 0xe6, 0xbe, 0xf7, 0x57, 0x56, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xc7, + 0x33, 0x6f, 0x44, 0x0b, 0xfc, 0x5b, 0x72, 0x46, 0x85, 0xc8, 0xa3, 0x40, + 0x03, 0x4d, 0x1a, 0x24, 0xcd, 0x18, 0x6f, 0x7d, 0xeb, 0x82, 0x13, 0xb7, + 0xe0, 0x01, 0x81, 0xa1, 0xb8, 0xd6, 0x43, 0x1f, 0x6a, 0x44, 0xbd, 0x13, + 0xb4, 0x75, 0xe0, 0xe0, 0x1d, 0x21, 0x00, 0x06, 0xda, 0x6a, 0x6c, 0xfa, + 0xf6, 0xff, 0xff, 0xf2, 0xd3, 0xf8, 0x06, 0x14, 0x38, 0x20, 0x82, 0xdd, + 0x04, 0x2a, 0x1a, 0x13, 0xd6, 0x77, 0x8e, 0x29, 0x01, 0xa1, 0xa9, 0x1a, + 0xe1, 0x8c, 0x33, 0xec, 0x14, 0xc1, 0xf2, 0x53, 0xa1, 0x60, 0xd9, 0x30, + 0x48, 0xb8, 0x88, 0xab, 0xc6, 0x76, 0x34, 0xeb, 0xbb, 0xc8, 0x88, 0x93, + 0x43, 0x69, 0xa1, 0x5f, 0xff, 0xfb, 0xac, 0x2c, 0x2f, 0x4c, 0x34, 0x4c, + 0x92, 0x96, 0x83, 0x96, 0x22, 0x02, 0x5a, 0x18, 0x17, 0x82, 0xf9, 0x88, + 0x72, 0x69, 0x1d, 0x03, 0x07, 0x79, 0x83, 0xe0, 0x16, 0x18, 0x0a, 0x84, + 0x01, 0x8a, 0x50, 0x1c, 0x18, 0x03, 0x07, 0x41, 0x83, 0xe8, 0x5d, 0x98, + 0x39, 0x83, 0xb1, 0x84, 0x28, 0x56, 0x98, 0xe2, 0x0f, 0x21, 0xb7, 0xd6, + 0x51, 0x91, 0x88, 0x60, 0x0d, 0x11, 0x82, 0x02, 0x04, 0x99, 0x81, 0x00, + 0x02, 0x61, 0x80, 0x9a, 0x01, 0x79, 0x80, 0x4c, 0x01, 0x71, 0x80, 0x8c, + 0x00, 0x19, 0x80, 0x5e, 0x00, 0x1a, 0x44, 0x0a, 0x00, 0xc6, 0x24, 0x03, + 0xeb, 0x00, 0x50, 0x64, 0x99, 0x46, 0x93, 0x00, 0x18, 0x03, 0xf3, 0x01, + 0x90, 0x00, 0xa1, 0x60, 0x00, 0x50, 0x0c, 0x3c, 0x00, 0x9b, 0x49, 0x46, + 0xd6, 0xd9, 0x82, 0xb6, 0x33, 0x00, 0x68, 0x05, 0xf2, 0xe4, 0xd0, 0x63, + 0x66, 0xdb, 0x55, 0xca, 0x95, 0x08, 0x15, 0x50, 0x95, 0xcb, 0x88, 0x55, + 0x0e, 0x57, 0x18, 0xab, 0xeb, 0x31, 0x89, 0xd3, 0xc7, 0xcc, 0xf1, 0x4e, + 0x54, 0xec, 0x08, 0xe7, 0xca, 0x0e, 0xce, 0x48, 0x28, 0xaa, 0x75, 0x4b, + 0x53, 0x2b, 0xc6, 0xf8, 0x32, 0xc6, 0x7c, 0xed, 0xc6, 0x23, 0x35, 0x73, + 0xfb, 0xea, 0x5a, 0xb3, 0x67, 0x3a, 0x8b, 0x82, 0xc2, 0x47, 0x19, 0x28, + 0x39, 0xa8, 0x58, 0x65, 0x80, 0xf9, 0xa8, 0xa0, 0x52, 0x2b, 0xa8, 0xaa, + 0xd8, 0xd5, 0x11, 0x1f, 0x17, 0xd2, 0x97, 0xb4, 0x7f, 0xab, 0xf7, 0x25, + 0x32, 0xb2, 0x6b, 0x9e, 0x20, 0x05, 0x15, 0x23, 0x72, 0xe2, 0xa7, 0x87, + 0xa5, 0xf6, 0xa7, 0x26, 0xaf, 0x6a, 0xd7, 0x2a, 0xd4, 0xf0, 0x70, 0x48, + 0x7b, 0xec, 0x16, 0x53, 0x19, 0xeb, 0xb1, 0x03, 0x00, 0x51, 0x65, 0x06, + 0x0c, 0xcc, 0x20, 0xd4, 0xf9, 0x9d, 0x50, 0x47, 0x5e, 0x69, 0x91, 0x97, + 0xb9, 0x35, 0x1c, 0xce, 0x31, 0xe7, 0x56, 0x91, 0x58, 0x68, 0x9a, 0xba, + 0x52, 0xf9, 0x4e, 0x21, 0x20, 0x7e, 0x89, 0x2f, 0x53, 0x5d, 0xd1, 0x4f, + 0x03, 0x6f, 0x92, 0xbe, 0x2a, 0x66, 0x23, 0x5d, 0xae, 0x2a, 0x13, 0x8b, + 0x49, 0xa1, 0x8f, 0x5d, 0xd2, 0x0d, 0x87, 0x97, 0x7e, 0xf9, 0x92, 0xe2, + 0x18, 0xbf, 0x81, 0xfc, 0xd3, 0x54, 0x24, 0x6f, 0xcc, 0x5b, 0x91, 0x38, + 0xc9, 0x58, 0x72, 0xe8, 0xf9, 0x1a, 0x85, 0x9a, 0x72, 0x1c, 0x2c, 0x2e, + 0xe4, 0x09, 0xc5, 0xc0, 0x58, 0x39, 0x15, 0x38, 0x45, 0x10, 0xc5, 0x80, + 0xc0, 0xec, 0x08, 0x0c, 0x01, 0x80, 0xf8, 0x72, 0x98, 0x82, 0x9a, 0x8a, + 0x66, 0x5c, 0x72, 0x70, 0x5c, 0x65, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x06, 0x00, 0x03, 0x00, 0x34, 0x05, 0x83, 0x01, 0x34, 0x16, 0x13, + 0x08, 0x51, 0x2a, 0xe3, 0x45, 0xb8, 0x3b, 0xb3, 0x03, 0x48, 0x0a, 0x83, + 0x00, 0x4c, 0x0d, 0x93, 0x08, 0x68, 0x1a, 0xd3, 0x02, 0x34, 0x0d, 0xc3, + 0x0a, 0x30, 0x18, 0x93, 0x02, 0x70, 0x12, 0x33, 0x02, 0x50, 0x20, 0x23, + 0x0a, 0xf4, 0x82, 0xd3, 0xcc, 0xdb, 0x47, 0xf3, 0x1b, 0x24, 0x4c, 0x13, + 0x06, 0x60, 0x1a, 0x03, 0x6d, 0xa6, 0xcd, 0x0c, 0x7e, 0x33, 0x2a, 0x6c, + 0xc7, 0xed, 0x40, 0xa8, 0x78, 0x04, 0x17, 0x30, 0xa2, 0xb4, 0x23, 0x32, + 0x34, 0x14, 0x30, 0x10, 0x18, 0x88, 0xa2, 0xbc, 0xc1, 0xc2, 0xc3, 0x8c, + 0x13, 0xc7, 0x80, 0x0a, 0x4d, 0x93, 0xc5, 0x42, 0x80, 0x21, 0x10, 0x05, + 0x97, 0x26, 0x91, 0x86, 0x89, 0xc2, 0xc7, 0xa8, 0x16, 0x4e, 0xe6, 0x48, + 0x55, 0x45, 0x51, 0xca, 0xdf, 0x06, 0x2d, 0x66, 0x76, 0x7a, 0xa4, 0x14, + 0xc5, 0x9f, 0xc7, 0x29, 0x6c, 0xc4, 0xee, 0xba, 0x2f, 0xa4, 0xdc, 0x85, + 0xf2, 0x22, 0x37, 0x0a, 0x35, 0x2c, 0x40, 0xb9, 0x60, 0x1b, 0xd1, 0x63, + 0x67, 0x1e, 0xcf, 0x36, 0x3f, 0x7d, 0x69, 0xb9, 0x2d, 0x72, 0xcb, 0x1e, + 0xa1, 0xef, 0xaf, 0x38, 0xc5, 0x2a, 0x2a, 0x5a, 0xd1, 0x7b, 0xda, 0xc8, + 0x7c, 0x0d, 0x79, 0x73, 0x77, 0x9f, 0x6d, 0xb9, 0xd3, 0x19, 0xbc, 0xa3, + 0x2c, 0xfa, 0x27, 0x5b, 0xf7, 0xeb, 0x15, 0x72, 0xef, 0x08, 0x9c, 0xa7, + 0xac, 0x72, 0xe1, 0x7e, 0x26, 0x72, 0x4e, 0xd4, 0x31, 0xbe, 0x33, 0x6e, + 0x33, 0xf7, 0xbf, 0x58, 0xcf, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd7, + 0x58, 0x70, 0x42, 0x93, 0xfc, 0x33, 0x70, 0x6b, 0x0d, 0xd8, 0x20, 0x68, + 0x65, 0x6e, 0x1b, 0x1d, 0xbf, 0x0c, 0x2f, 0xed, 0x0d, 0xd1, 0xc0, 0x37, + 0xe0, 0x89, 0xa2, 0x95, 0xb8, 0x35, 0x4b, 0xee, 0x34, 0xe4, 0x19, 0x49, + 0x5e, 0x4e, 0x05, 0x04, 0x69, 0x50, 0x3e, 0x0f, 0x38, 0xa1, 0x5b, 0x6d, + 0x56, 0xa9, 0xa9, 0xcd, 0xee, 0xb6, 0x39, 0x63, 0xfb, 0x83, 0xa9, 0x62, + 0xa6, 0x45, 0xf4, 0xfd, 0xac, 0x36, 0x97, 0xb6, 0x66, 0xfc, 0xcd, 0x38, + 0xd9, 0x67, 0xf2, 0x75, 0xee, 0xae, 0x63, 0x23, 0xa3, 0xb1, 0x9c, 0xfb, + 0x2b, 0x1d, 0x51, 0x9e, 0x8a, 0xd7, 0x39, 0x1d, 0x1a, 0x89, 0x69, 0x5d, + 0x12, 0x84, 0x5a, 0x51, 0x2e, 0x4a, 0xb5, 0xd8, 0xb2, 0x2d, 0xe6, 0x55, + 0x5a, 0xdc, 0x9e, 0xac, 0xb7, 0x52, 0xea, 0xc4, 0x46, 0xae, 0xb3, 0x5d, + 0xd4, 0xc9, 0xd5, 0x47, 0x93, 0x31, 0xa9, 0x5b, 0x39, 0x1c, 0xee, 0x82, + 0x26, 0x45, 0x51, 0x36, 0x13, 0x45, 0x0f, 0x1c, 0x0e, 0x14, 0x03, 0x90, + 0x58, 0x05, 0x50, 0x14, 0x4d, 0x47, 0x0e, 0x31, 0x80, 0x7e, 0x03, 0x41, + 0x80, 0x24, 0x0a, 0x19, 0x81, 0x40, 0x95, 0x51, 0x86, 0xf8, 0x1f, 0x49, + 0x80, 0xb2, 0x01, 0xe1, 0x81, 0x12, 0x09, 0x71, 0x83, 0xc6, 0x0c, 0xf1, + 0x82, 0x30, 0x01, 0x89, 0x88, 0xe6, 0x06, 0xa1, 0x80, 0xea, 0x05, 0x61, + 0x80, 0x24, 0x0e, 0xe9, 0x81, 0xf4, 0x31, 0xc1, 0xb0, 0x7b, 0xb6, 0xf1, + 0x84, 0xa8, 0x20, 0x41, 0x81, 0x5e, 0x0b, 0x09, 0xa9, 0x3e, 0x19, 0x0a, + 0xb9, 0x95, 0x14, 0x18, 0x09, 0xc0, 0x60, 0x4a, 0x28, 0x10, 0x90, 0x84, + 0x98, 0x89, 0x00, 0x18, 0x00, 0x60, 0xb0, 0x69, 0x7e, 0x8c, 0x25, 0x00, + 0xd9, 0xcd, 0xd2, 0x29, 0xcd, 0x50, 0xc9, 0x69, 0x76, 0xd3, 0x7a, 0x44, + 0xd9, 0x0c, 0x0d, 0x51, 0x7c, 0x3b, 0x73, 0xd4, 0x9b, 0x7a, 0x51, 0x6a, + 0x22, 0xe8, 0xbf, 0x56, 0x1f, 0xe9, 0x7c, 0xe6, 0x32, 0xcc, 0x21, 0x98, + 0xe7, 0xe9, 0xe8, 0xb5, 0x56, 0x93, 0x03, 0x22, 0xe0, 0xb4, 0x8e, 0x18, + 0x68, 0xc9, 0xb7, 0x7b, 0x88, 0xc6, 0x2f, 0x10, 0xd0, 0x8c, 0x64, 0x13, + 0x3d, 0x9e, 0x36, 0xf9, 0x2d, 0xed, 0x9d, 0x9e, 0x2a, 0x78, 0xb7, 0x81, + 0xfa, 0x33, 0x98, 0x2d, 0x70, 0x5c, 0x0c, 0x56, 0x64, 0xb7, 0x1c, 0x8a, + 0x32, 0x2d, 0xb1, 0xe2, 0xb9, 0xf0, 0x3e, 0x29, 0xa1, 0x21, 0x39, 0xdb, + 0xd6, 0x69, 0x3b, 0x5d, 0x9c, 0xa8, 0x9e, 0xee, 0xa9, 0xda, 0x54, 0xe9, + 0xa9, 0x9f, 0x15, 0x18, 0x72, 0x4d, 0x5b, 0xf9, 0x08, 0xe8, 0xd5, 0x23, + 0x92, 0x14, 0xf9, 0xa9, 0x18, 0xa4, 0xa8, 0x48, 0x0c, 0x09, 0xbe, 0x66, + 0xfa, 0xbb, 0x76, 0xb5, 0x9f, 0xd7, 0x31, 0xe5, 0x5e, 0xde, 0x69, 0x45, + 0xc2, 0xc5, 0x2c, 0x24, 0x55, 0x76, 0x4d, 0xea, 0xee, 0x47, 0x43, 0xdd, + 0x5a, 0xe6, 0x1e, 0x6b, 0x50, 0xae, 0xe5, 0x88, 0x9c, 0x42, 0xe6, 0xdd, + 0xab, 0xbb, 0x25, 0x63, 0xcb, 0x4d, 0xce, 0x6f, 0xa4, 0x9c, 0xd2, 0x16, + 0xcc, 0xd3, 0xbb, 0xa5, 0xe8, 0x88, 0x74, 0x2b, 0x53, 0xb9, 0xcb, 0x21, + 0xdc, 0xa8, 0xb7, 0x79, 0xaa, 0x52, 0xa2, 0xa3, 0xab, 0x9a, 0xf3, 0x2e, + 0x9d, 0x39, 0x5a, 0xee, 0xb2, 0x51, 0x59, 0xd0, 0x96, 0x23, 0x9f, 0x52, + 0x99, 0x08, 0x93, 0x34, 0x72, 0xa1, 0x41, 0x14, 0x20, 0x61, 0x71, 0xa1, + 0xe1, 0x23, 0x09, 0x8a, 0x9c, 0x72, 0x07, 0x9c, 0x58, 0x4c, 0x0e, 0x24, + 0x98, 0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x70, 0x5c, 0x64, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x38, 0x0c, 0x05, 0xd0, 0x1b, 0x8c, 0x06, 0x80, 0x47, 0x4c, 0x0f, + 0xd4, 0x53, 0x8c, 0xc8, 0x10, 0xda, 0xcc, 0x07, 0xf0, 0x24, 0x8c, 0x07, + 0xb0, 0xc2, 0x8c, 0x37, 0xb0, 0xd2, 0x4c, 0x0d, 0xc0, 0x2c, 0x4c, 0x3f, + 0xe0, 0x37, 0x8c, 0x02, 0x30, 0x34, 0x4c, 0x14, 0x90, 0x28, 0x4c, 0x09, + 0xf1, 0x6e, 0xcc, 0x56, 0x9d, 0x19, 0x4c, 0x39, 0x41, 0x49, 0x4c, 0x2b, + 0x70, 0x36, 0x8f, 0x90, 0x88, 0xc5, 0xa2, 0x8d, 0x98, 0xe0, 0xc6, 0xdf, + 0x4c, 0x30, 0x04, 0xa8, 0x24, 0x62, 0x42, 0xc1, 0x9e, 0x06, 0x18, 0x00, + 0x08, 0x00, 0x30, 0x50, 0x34, 0xfb, 0x0b, 0x81, 0x9c, 0x89, 0x72, 0x2b, + 0xbb, 0xe6, 0x02, 0x0a, 0x9e, 0xea, 0x6a, 0xda, 0xbb, 0x8a, 0x56, 0x61, + 0xe1, 0x24, 0xc3, 0x2f, 0xdb, 0xec, 0xee, 0x35, 0x87, 0x21, 0xef, 0xb5, + 0x79, 0x80, 0x43, 0x91, 0x89, 0xfc, 0xa5, 0xf0, 0x6c, 0x52, 0x73, 0x71, + 0xf8, 0x6d, 0xff, 0x8d, 0xcf, 0xca, 0x2b, 0x82, 0xb1, 0xe2, 0x19, 0xc6, + 0x87, 0x82, 0x82, 0x00, 0x8f, 0x34, 0x83, 0x07, 0x11, 0xb7, 0xa3, 0x52, + 0xcb, 0x9c, 0xb6, 0x97, 0x25, 0x24, 0xcd, 0x95, 0x73, 0x6d, 0x50, 0x9f, + 0xda, 0x35, 0x5a, 0xf5, 0x0e, 0xa4, 0x22, 0x4d, 0xcd, 0x72, 0x32, 0xea, + 0x05, 0x6a, 0xa3, 0xac, 0x98, 0x66, 0xea, 0x51, 0x0b, 0x88, 0xe2, 0x2a, + 0xee, 0x59, 0xed, 0xba, 0x58, 0x5a, 0x98, 0x1c, 0xc8, 0xb7, 0x11, 0xcc, + 0xf7, 0x7e, 0xf8, 0xf9, 0x1b, 0x31, 0x75, 0x33, 0xa1, 0x13, 0x43, 0xe2, + 0x4d, 0xb4, 0xae, 0x18, 0x54, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xc7, + 0x18, 0x70, 0x43, 0x0b, 0xfb, 0x43, 0x70, 0x67, 0x4e, 0x08, 0x32, 0x60, + 0xa5, 0x6e, 0x29, 0xed, 0xc0, 0xfc, 0x0f, 0xf9, 0xed, 0xc1, 0xe2, 0xb8, + 0x20, 0x45, 0x94, 0x21, 0xba, 0xfb, 0x20, 0x78, 0xa3, 0xb0, 0x70, 0x24, + 0x07, 0x90, 0x00, 0x5c, 0xa2, 0x9b, 0xe5, 0x9b, 0xf4, 0x1c, 0xc3, 0x95, + 0xee, 0xf7, 0x0e, 0x0a, 0xf6, 0x55, 0x42, 0x39, 0x89, 0xb6, 0xd2, 0xd3, + 0x55, 0x44, 0x20, 0xad, 0x9c, 0xee, 0x37, 0x61, 0x63, 0xa9, 0x48, 0x40, + 0x65, 0x2b, 0x9c, 0x87, 0x75, 0x22, 0x2a, 0x1c, 0xa5, 0x41, 0xf7, 0xce, + 0x47, 0x6c, 0xea, 0x4a, 0x2b, 0xa2, 0xf5, 0x4b, 0xfa, 0xdd, 0xd2, 0x74, + 0x22, 0x2b, 0x6b, 0x74, 0xfe, 0xfb, 0xd1, 0x77, 0x5d, 0xbf, 0xee, 0x9d, + 0x2f, 0x99, 0x4e, 0xfc, 0xa9, 0x27, 0x2b, 0xd2, 0xd9, 0x4a, 0x65, 0x64, + 0x45, 0x25, 0x4a, 0xe8, 0x79, 0x23, 0xd4, 0x7a, 0x94, 0x64, 0x26, 0x28, + 0x71, 0x31, 0x86, 0x08, 0xa8, 0xbb, 0x04, 0x4c, 0x13, 0xb0, 0x54, 0x8c, + 0x1f, 0xa0, 0x8d, 0xcc, 0x61, 0x18, 0xb2, 0x0f, 0xbb, 0x12, 0x2d, 0x4c, + 0x37, 0xf0, 0x7d, 0x0c, 0x24, 0x31, 0xbf, 0xcd, 0x1e, 0xf0, 0x8c, 0x8c, + 0x15, 0x90, 0x4c, 0x0c, 0x3a, 0x91, 0x9e, 0x4c, 0x20, 0x40, 0x58, 0xcc, + 0x53, 0x61, 0x5d, 0xcc, 0x44, 0x31, 0x03, 0x0c, 0xf2, 0x6e, 0xe3, 0x8e, + 0x1f, 0x73, 0x28, 0x8c, 0x2e, 0x11, 0x22, 0x0d, 0x1e, 0xc4, 0xc8, 0xc4, + 0x20, 0x02, 0x0c, 0x09, 0xc5, 0x54, 0xc3, 0x74, 0x23, 0x8c, 0x41, 0xc4, + 0x40, 0xc2, 0x74, 0x0e, 0x01, 0xa0, 0x14, 0x60, 0x48, 0x0a, 0xa6, 0x0b, + 0x40, 0xa6, 0x60, 0xd4, 0x05, 0xa6, 0x00, 0xc0, 0x22, 0x08, 0x00, 0xa3, + 0x05, 0x00, 0x8d, 0x30, 0xc0, 0x07, 0x93, 0x05, 0x20, 0x2d, 0x02, 0x00, + 0x0a, 0x28, 0x18, 0x00, 0x80, 0x31, 0x81, 0x48, 0x0f, 0x18, 0x17, 0x81, + 0x41, 0x80, 0xb8, 0x07, 0x00, 0x00, 0x64, 0xc0, 0xb8, 0x0e, 0x4c, 0x0b, + 0x00, 0x24, 0xbd, 0xc6, 0x01, 0x20, 0x08, 0x24, 0x00, 0xcd, 0xfb, 0xa6, + 0x84, 0x92, 0xd3, 0x24, 0x94, 0x06, 0xc8, 0x54, 0x15, 0x35, 0x4b, 0xc2, + 0xc9, 0x63, 0x0d, 0xc5, 0x86, 0xb4, 0x14, 0xe9, 0x6b, 0xaf, 0xb4, 0xb9, + 0x97, 0x2f, 0x26, 0x0a, 0x5f, 0x56, 0x0d, 0xc2, 0x89, 0x0a, 0x2f, 0xd6, + 0x4b, 0x28, 0x8c, 0x62, 0x74, 0x5e, 0x9c, 0x9b, 0x62, 0x2b, 0x47, 0xeb, + 0x9c, 0x14, 0x4c, 0x67, 0x4a, 0x84, 0x64, 0xcb, 0x85, 0xcc, 0x35, 0x7f, + 0x64, 0x64, 0x84, 0x85, 0x39, 0xca, 0x76, 0x2a, 0x91, 0x8c, 0x69, 0x27, + 0x06, 0x05, 0x62, 0x7f, 0x33, 0x25, 0xd7, 0x4e, 0x6b, 0xca, 0xf6, 0xad, + 0xab, 0x5a, 0x28, 0xb9, 0x8e, 0xc2, 0xdc, 0xde, 0xe6, 0xa5, 0x87, 0x1d, + 0x5a, 0xf0, 0xed, 0x88, 0xcd, 0x3d, 0x16, 0x54, 0xcc, 0xcd, 0xec, 0x29, + 0x07, 0xb4, 0x65, 0x44, 0x48, 0xd8, 0xaa, 0x50, 0xca, 0xfa, 0x17, 0x53, + 0x27, 0x26, 0x52, 0x30, 0x47, 0x68, 0x8a, 0xdf, 0xd5, 0xcb, 0x96, 0x84, + 0xf4, 0x0d, 0xb2, 0x49, 0x01, 0x50, 0xa7, 0x6d, 0x63, 0x8a, 0xe6, 0xc3, + 0x0a, 0x22, 0xa7, 0x49, 0x96, 0xb7, 0xd0, 0x9e, 0xe5, 0x74, 0xe1, 0x16, + 0xcd, 0x8a, 0x55, 0x79, 0xe4, 0xd6, 0xc6, 0xa0, 0x69, 0x69, 0x84, 0xdc, + 0x97, 0x6a, 0xbb, 0x8a, 0x21, 0x9d, 0x6d, 0x71, 0x14, 0xff, 0x54, 0x29, + 0x8f, 0x18, 0x87, 0x24, 0x05, 0xe4, 0xd0, 0x80, 0x4e, 0xfc, 0x87, 0xb5, + 0x6c, 0x6f, 0x93, 0xf4, 0x78, 0xee, 0xd7, 0x6a, 0xe7, 0x52, 0x3b, 0x76, + 0x98, 0x3a, 0xde, 0x66, 0x1c, 0x78, 0xd2, 0x07, 0x35, 0x53, 0x44, 0x57, + 0x35, 0x1d, 0xcd, 0x52, 0x25, 0xac, 0x8e, 0x40, 0xa9, 0xc7, 0xd8, 0xc6, + 0x65, 0x9b, 0xe2, 0xc7, 0xcb, 0x55, 0x7f, 0x17, 0xc5, 0xfe, 0xb2, 0xe9, + 0x31, 0xf5, 0x6b, 0x38, 0xe9, 0xae, 0x38, 0x56, 0xfa, 0xa7, 0x69, 0xe9, + 0x6d, 0x3b, 0xf6, 0xd3, 0x9a, 0xfe, 0x22, 0x23, 0xe6, 0x26, 0xe3, 0xb6, + 0x6b, 0x9d, 0xf7, 0xe6, 0xd5, 0x12, 0x92, 0x74, 0xde, 0xab, 0xef, 0xaf, + 0xfa, 0x5e, 0xd1, 0x22, 0x17, 0x36, 0xa9, 0x5d, 0x2a, 0x28, 0xaa, 0x71, + 0x05, 0xeb, 0x63, 0x85, 0x03, 0xb4, 0x51, 0xe2, 0xe3, 0x81, 0x42, 0x8f, + 0x43, 0x4a, 0x12, 0x40, 0x76, 0x0e, 0x89, 0xea, 0x40, 0x0c, 0x0e, 0x30, + 0x24, 0x8c, 0x1c, 0x80, 0x02, 0x8c, 0x5c, 0xf1, 0x2d, 0x8f, 0x5e, 0x90, + 0x5e, 0x4c, 0x3d, 0x90, 0x3a, 0x8c, 0x36, 0xc0, 0xf9, 0x4d, 0x02, 0x42, + 0xa0, 0x8c, 0x21, 0xe0, 0x82, 0xcc, 0x6f, 0x91, 0x70, 0x8c, 0x1c, 0x60, + 0x05, 0x4c, 0x09, 0xf0, 0x41, 0x8c, 0x33, 0x61, 0x0d, 0xcd, 0x6b, 0x12, + 0x5a, 0x4c, 0x3b, 0xa0, 0x41, 0x8c, 0x15, 0x30, 0x21, 0xcf, 0x45, 0x63, + 0xae, 0xc4, 0xdc, 0x1c, 0x32, 0x5a, 0x00, 0x4c, 0xc2, 0x80, 0x00, 0x28, + 0x98, 0xfa, 0xd2, 0x45, 0x97, 0x7d, 0x9e, 0x90, 0x06, 0x30, 0x80, 0x60, + 0x76, 0x97, 0x9b, 0x29, 0x51, 0xd7, 0xa2, 0x1a, 0x72, 0x99, 0x0b, 0x39, + 0x8c, 0x40, 0x32, 0x58, 0x4b, 0xa9, 0x0c, 0x49, 0xa3, 0x10, 0xf3, 0x5c, + 0xbb, 0x6e, 0x59, 0x36, 0xfc, 0xd9, 0xb9, 0x2d, 0xe4, 0xf5, 0xe9, 0xac, + 0x71, 0xb8, 0xa8, 0xbe, 0xd9, 0x51, 0xcd, 0x13, 0x89, 0x4e, 0x34, 0x89, + 0x55, 0xd7, 0x3a, 0xbd, 0x25, 0xfc, 0xec, 0xb8, 0x62, 0x59, 0x61, 0xb8, + 0xe4, 0xba, 0xbe, 0xe5, 0xb5, 0xad, 0xb8, 0x4a, 0x5d, 0x16, 0x8e, 0xb1, + 0x1f, 0x92, 0xdf, 0xb5, 0xd6, 0xff, 0xfb, 0xd4, 0x60, 0x52, 0x8d, 0xd8, + 0x04, 0x70, 0x40, 0x0b, 0xfa, 0x63, 0x70, 0x5b, 0x8e, 0x08, 0x42, 0x34, + 0x65, 0x6e, 0x21, 0x11, 0xc0, 0xfe, 0x2f, 0xe9, 0x8d, 0xc1, 0x61, 0x38, + 0x21, 0x09, 0x01, 0x15, 0xb8, 0xe1, 0xd2, 0x62, 0x46, 0x6a, 0xe5, 0x49, + 0x57, 0x42, 0x72, 0xe6, 0xaf, 0x75, 0x52, 0x57, 0x35, 0x22, 0x47, 0xe8, + 0xc2, 0x92, 0x5a, 0x99, 0xe5, 0x11, 0x5c, 0xc9, 0x21, 0x74, 0xed, 0x9b, + 0xbe, 0x60, 0x95, 0xcc, 0x74, 0x92, 0xb8, 0xc6, 0x2a, 0x21, 0xae, 0x3f, + 0xad, 0x9c, 0x5f, 0x55, 0x8e, 0x37, 0xcb, 0x9f, 0xc9, 0xc5, 0xae, 0xc0, + 0xba, 0x07, 0xa2, 0x8d, 0x69, 0xca, 0x25, 0xad, 0x37, 0x0c, 0x77, 0x42, + 0x89, 0xeb, 0xbb, 0xac, 0x9d, 0xa3, 0xba, 0x5c, 0x33, 0x20, 0x42, 0xf1, + 0xaf, 0x9f, 0x99, 0x16, 0x4e, 0xa0, 0xb1, 0x84, 0x41, 0xb2, 0x75, 0xc4, + 0xe6, 0x40, 0x00, 0x08, 0x82, 0x8b, 0x92, 0xaa, 0x9a, 0x1b, 0x23, 0x45, + 0x4a, 0x7f, 0x76, 0x7f, 0xef, 0xe6, 0x6d, 0xcf, 0x8e, 0xd0, 0xdc, 0xfd, + 0xeb, 0x11, 0x88, 0x4b, 0x96, 0x99, 0x2d, 0xf4, 0x38, 0x4d, 0x99, 0xfa, + 0xb6, 0xf4, 0xdb, 0x4f, 0x3f, 0x5d, 0xef, 0x5a, 0x22, 0xfa, 0x17, 0xcc, + 0x79, 0xbf, 0x4f, 0x74, 0xa7, 0x76, 0x23, 0x6a, 0xb3, 0x17, 0x46, 0xaf, + 0xb1, 0xc8, 0xa9, 0x5f, 0xea, 0xfa, 0xd1, 0x1b, 0xbb, 0x51, 0xd7, 0xc9, + 0xa2, 0x2a, 0x11, 0x58, 0x5c, 0x81, 0xe3, 0x0a, 0x8a, 0x88, 0x21, 0x43, + 0xa1, 0xc7, 0x11, 0x0a, 0x61, 0x01, 0x15, 0x10, 0x21, 0x80, 0xd2, 0x03, + 0x59, 0x83, 0x54, 0x13, 0xc1, 0x8c, 0x26, 0xd8, 0x59, 0xef, 0x62, 0x37, + 0xe1, 0x88, 0x12, 0x16, 0x19, 0x86, 0x6c, 0x5d, 0x61, 0xa8, 0x78, 0x5f, + 0x79, 0x88, 0x04, 0x03, 0xe1, 0x91, 0x3c, 0x0c, 0xb9, 0x86, 0x1a, 0x09, + 0x89, 0x83, 0x2c, 0x0a, 0x41, 0x86, 0x2a, 0x0c, 0x99, 0xb5, 0xfc, 0x6d, + 0x09, 0x8c, 0xda, 0x04, 0x31, 0x82, 0xbc, 0x01, 0xc0, 0x1e, 0x91, 0xd4, + 0x30, 0x6a, 0xc5, 0x99, 0x92, 0x80, 0xac, 0x85, 0x40, 0xa9, 0x38, 0xbd, + 0x98, 0x43, 0x1d, 0x5d, 0x8e, 0x92, 0x97, 0x06, 0x47, 0x5c, 0xcd, 0x32, + 0x5d, 0x1e, 0x50, 0x37, 0x8a, 0x51, 0x1a, 0x81, 0xa4, 0x0f, 0xab, 0x98, + 0xff, 0x53, 0xcb, 0x25, 0x0e, 0xc4, 0x69, 0xae, 0x43, 0xad, 0x91, 0xc0, + 0x94, 0x38, 0x94, 0xef, 0xed, 0xc6, 0x59, 0x0f, 0xe3, 0x7a, 0x2f, 0x9c, + 0x63, 0xcf, 0x8f, 0x68, 0x94, 0xed, 0x40, 0xfe, 0x72, 0x78, 0x6a, 0x66, + 0xb8, 0xce, 0x8f, 0x2e, 0x53, 0x26, 0x06, 0xca, 0x10, 0x0c, 0x96, 0x2a, + 0x7d, 0xd5, 0xea, 0x54, 0x96, 0x88, 0x03, 0xb9, 0xa6, 0x3e, 0x58, 0x59, + 0x4a, 0x19, 0x8f, 0x24, 0xa7, 0xdf, 0x43, 0x8d, 0x09, 0x69, 0xe1, 0x70, + 0xed, 0xdd, 0x5e, 0xda, 0xd1, 0xe5, 0xbb, 0x9d, 0x94, 0x95, 0x9a, 0xd9, + 0x46, 0x2d, 0xb1, 0xf4, 0x15, 0x68, 0xda, 0xb7, 0x49, 0x68, 0x52, 0x9b, + 0x93, 0x55, 0x15, 0x8e, 0xcf, 0x52, 0xac, 0x70, 0xcd, 0x16, 0x42, 0x9e, + 0xd6, 0x44, 0x20, 0xa6, 0x2f, 0x37, 0x02, 0xd6, 0x94, 0x39, 0x8d, 0xd4, + 0xc6, 0x51, 0x32, 0xb9, 0xbb, 0xe2, 0x11, 0xdb, 0x08, 0xe8, 0xa9, 0x74, + 0x05, 0x94, 0xc5, 0x94, 0x38, 0x1f, 0x32, 0x94, 0x9b, 0xc9, 0xd1, 0x98, + 0x2e, 0x58, 0xad, 0xc0, 0xe1, 0xff, 0xba, 0x11, 0xc1, 0x1d, 0xc2, 0xd9, + 0x20, 0xa6, 0x72, 0x58, 0x2f, 0xa4, 0x02, 0xe4, 0xa1, 0x80, 0x0b, 0xa6, + 0xab, 0x42, 0x6a, 0x6e, 0x85, 0x14, 0x19, 0x4c, 0xe5, 0x28, 0xec, 0x86, + 0x2f, 0xaf, 0x7f, 0x73, 0xb3, 0xb9, 0xe9, 0x68, 0xef, 0x53, 0x38, 0x6b, + 0xdd, 0x1d, 0xfe, 0xbb, 0x99, 0x69, 0xdf, 0xfd, 0xfa, 0xeb, 0xd9, 0x15, + 0xba, 0xd1, 0x1d, 0x76, 0xea, 0xaf, 0xdd, 0xd2, 0xff, 0xeb, 0xd6, 0x92, + 0xab, 0x2a, 0x93, 0xb7, 0x45, 0x65, 0x55, 0x7d, 0xb5, 0xdf, 0xd9, 0xf4, + 0xad, 0xdb, 0xa9, 0x8e, 0xe6, 0x98, 0xea, 0xc2, 0xa4, 0x3a, 0xbb, 0x54, + 0x48, 0x48, 0x7c, 0x60, 0x8a, 0x48, 0xa8, 0x07, 0x05, 0x21, 0x44, 0x94, + 0x5a, 0x00, 0x3c, 0x01, 0x80, 0xe0, 0x08, 0x59, 0x80, 0xc4, 0x19, 0x21, + 0x85, 0xf3, 0x24, 0xa9, 0xbb, 0xd6, 0x48, 0x31, 0x81, 0x02, 0x14, 0x89, + 0x87, 0x4a, 0x27, 0xb1, 0xbc, 0xf6, 0x57, 0xe9, 0x87, 0xfa, 0x12, 0x21, + 0x89, 0xfe, 0x2b, 0xf9, 0x80, 0xf6, 0x09, 0x11, 0x81, 0x96, 0x06, 0xb9, + 0x80, 0x84, 0x01, 0x21, 0xa7, 0x2e, 0xde, 0x71, 0x87, 0x9c, 0x0d, 0x31, + 0x82, 0x2e, 0x02, 0xe9, 0x84, 0xd1, 0xca, 0xe9, 0xc9, 0x61, 0x26, 0x26, + 0x80, 0x28, 0x14, 0x0c, 0xb0, 0x89, 0xb5, 0x30, 0x5a, 0x41, 0x84, 0x5e, + 0x15, 0x94, 0xd5, 0x29, 0x81, 0xd4, 0x62, 0xab, 0xbd, 0x37, 0xd9, 0xbc, + 0xa5, 0xb2, 0x3e, 0x70, 0xcc, 0xcb, 0x34, 0x7b, 0xbb, 0x1d, 0x73, 0x5d, + 0x76, 0xda, 0x2a, 0xe1, 0x60, 0xf4, 0xb5, 0xb8, 0x6f, 0x0e, 0x4f, 0xbf, + 0x74, 0xbf, 0x52, 0x4f, 0x84, 0xbe, 0x5c, 0xbc, 0xb6, 0x9d, 0x6a, 0x75, + 0xcb, 0x56, 0x40, 0xc9, 0xf5, 0x59, 0x32, 0x7a, 0xd0, 0x1d, 0x93, 0x15, + 0x19, 0xf2, 0xe7, 0x23, 0x80, 0xb6, 0x77, 0xb2, 0xa0, 0xda, 0x2c, 0x5c, + 0x78, 0xa4, 0xcf, 0xcc, 0xe0, 0x4e, 0x99, 0xc6, 0xd4, 0x17, 0xee, 0x86, + 0xea, 0xb3, 0xa6, 0xcf, 0x98, 0x5a, 0xea, 0xca, 0x95, 0x0c, 0x5a, 0x61, + 0x49, 0xd3, 0x6e, 0x28, 0x35, 0x7c, 0xe0, 0xda, 0xbb, 0x68, 0x93, 0xc0, + 0xcd, 0x6e, 0x48, 0x3b, 0xb2, 0xff, 0xfb, 0xd4, 0x60, 0x62, 0x09, 0xd8, + 0x1f, 0x70, 0x40, 0x2b, 0xf9, 0x63, 0x70, 0x5b, 0x2e, 0x08, 0x42, 0x20, + 0xc2, 0x6e, 0x24, 0x2d, 0xc0, 0xfa, 0x0f, 0xed, 0xed, 0xc1, 0xab, 0xb8, + 0x20, 0xc9, 0x11, 0x95, 0xb8, 0x84, 0x6b, 0x52, 0x2b, 0xe2, 0x4a, 0x5c, + 0x32, 0x3b, 0x38, 0x26, 0x37, 0x74, 0x71, 0x44, 0xe9, 0xd4, 0x71, 0xdc, + 0xc1, 0x51, 0x8b, 0xdd, 0x13, 0x48, 0xe1, 0x58, 0xda, 0x95, 0x55, 0x7a, + 0xd9, 0xb7, 0x2c, 0x5d, 0x33, 0x6c, 0xc5, 0x54, 0x66, 0x4b, 0x0c, 0xd4, + 0xbf, 0x68, 0x56, 0x1a, 0x24, 0x27, 0xa9, 0x39, 0xc5, 0x69, 0x8e, 0x46, + 0x6e, 0x14, 0xcb, 0x47, 0x42, 0x82, 0x09, 0xa0, 0x80, 0x52, 0x00, 0x00, + 0x0e, 0xc3, 0xa1, 0x8e, 0x3b, 0x8b, 0x85, 0xad, 0x19, 0xf5, 0xb3, 0x1f, + 0x3b, 0x7c, 0xae, 0xd1, 0x7b, 0xba, 0xcc, 0x22, 0x72, 0xa2, 0x26, 0x93, + 0xac, 0xc7, 0xd6, 0xa6, 0xb7, 0xf1, 0x9b, 0xe3, 0xf5, 0xff, 0x69, 0xf4, + 0xd3, 0xba, 0x27, 0x54, 0x57, 0xd1, 0xbb, 0x5b, 0xef, 0xfa, 0x7d, 0xbf, + 0xcb, 0x67, 0x56, 0x55, 0xb1, 0xd5, 0x9a, 0xbf, 0xd9, 0x2a, 0x92, 0x5d, + 0xb4, 0xb1, 0xb4, 0xb1, 0x8a, 0xea, 0x47, 0xb2, 0xf9, 0x2b, 0x4f, 0x69, + 0x5d, 0x0c, 0xec, 0xe1, 0x4e, 0x10, 0x00, 0x80, 0x8e, 0x20, 0x58, 0xca, + 0x3a, 0x98, 0x80, 0x86, 0x30, 0x3f, 0x01, 0xa3, 0x30, 0x43, 0x44, 0x9c, + 0x30, 0x7d, 0xb9, 0xc1, 0x33, 0x85, 0x8d, 0x18, 0x30, 0x72, 0x00, 0xbe, + 0x30, 0x66, 0xd5, 0x75, 0x35, 0x9b, 0xda, 0x44, 0x30, 0xe7, 0x44, 0xe3, + 0x30, 0xba, 0x49, 0x90, 0x30, 0xb1, 0x00, 0xb2, 0x30, 0x1d, 0xc0, 0x96, + 0x30, 0x7f, 0x06, 0x75, 0x33, 0x7b, 0x38, 0x69, 0x31, 0x86, 0x42, 0xfd, + 0x30, 0x5c, 0x81, 0x6e, 0x34, 0x1b, 0x13, 0x54, 0x4e, 0x33, 0x73, 0x10, + 0x6c, 0xeb, 0xba, 0x80, 0xf2, 0x53, 0x25, 0x36, 0x11, 0x02, 0x20, 0x09, + 0xa0, 0x2c, 0x2a, 0x54, 0x99, 0xc0, 0x14, 0x0b, 0x0f, 0xbf, 0x4d, 0xd9, + 0x63, 0xaa, 0x79, 0x23, 0x59, 0x4e, 0xdb, 0x6a, 0xd2, 0xd5, 0x61, 0xe6, + 0x53, 0x0a, 0x6c, 0x4d, 0xb2, 0xc2, 0x43, 0x76, 0x9f, 0x97, 0x7e, 0x1d, + 0xa8, 0xeb, 0xb9, 0x30, 0x34, 0x7e, 0x35, 0x29, 0x85, 0x39, 0x72, 0xc9, + 0x1c, 0xf9, 0xc0, 0xc6, 0xa5, 0x4e, 0x2d, 0xbf, 0x66, 0x3f, 0xd5, 0x4b, + 0x0e, 0x2a, 0xf3, 0x87, 0x0c, 0xce, 0x0a, 0x36, 0xfe, 0xc4, 0xc8, 0x68, + 0xba, 0x80, 0x9d, 0x57, 0x26, 0xd2, 0xad, 0x8d, 0xa7, 0xa3, 0xb4, 0x6a, + 0x2e, 0xda, 0x46, 0xa4, 0xd5, 0xef, 0x19, 0xa2, 0x29, 0xdd, 0x22, 0xd2, + 0x48, 0xb7, 0x38, 0xec, 0x6f, 0x91, 0x8c, 0x6a, 0xf5, 0x98, 0x4c, 0xf1, + 0x51, 0x0b, 0x49, 0x74, 0xf6, 0xd9, 0xd9, 0xcd, 0xc5, 0xe6, 0x38, 0x38, + 0x43, 0xda, 0x9c, 0x1b, 0x16, 0xd1, 0xcd, 0x07, 0xbb, 0xf7, 0xed, 0x4d, + 0x0a, 0x08, 0xd1, 0xd9, 0x58, 0xd8, 0x18, 0x21, 0x36, 0x48, 0x5f, 0x55, + 0xb0, 0x55, 0x08, 0x6d, 0x6e, 0x7e, 0xcb, 0xb5, 0x12, 0x4d, 0x2d, 0x05, + 0xad, 0x99, 0xc0, 0xec, 0x7b, 0x09, 0xfe, 0x1c, 0xde, 0x49, 0x3b, 0x6b, + 0x85, 0xdc, 0x24, 0x6f, 0xd4, 0x74, 0x42, 0xb6, 0x49, 0x8f, 0xfb, 0xc8, + 0x93, 0xc3, 0x36, 0x62, 0x38, 0x9f, 0x2b, 0x0a, 0xb5, 0xd2, 0xf1, 0x24, + 0x7c, 0xde, 0x84, 0x9b, 0xfb, 0x33, 0x0e, 0x54, 0x59, 0xfe, 0x81, 0x23, + 0xce, 0x43, 0x48, 0xb7, 0x11, 0xcb, 0x20, 0x55, 0x19, 0x32, 0x69, 0xa6, + 0x66, 0x71, 0x68, 0x1b, 0x9e, 0x4a, 0xd1, 0xab, 0x19, 0x98, 0x83, 0x3f, + 0xa4, 0x75, 0x79, 0x91, 0x28, 0x4a, 0x79, 0xa8, 0x91, 0x70, 0x46, 0x27, + 0xb2, 0xdb, 0xc4, 0xcd, 0xd8, 0xd9, 0x10, 0x88, 0xb7, 0xb5, 0x6c, 0x55, + 0x64, 0x2e, 0xbd, 0x7d, 0x9f, 0x5b, 0xcc, 0xc4, 0xa9, 0x19, 0x2e, 0xac, + 0xb3, 0x77, 0x6a, 0xa3, 0xd4, 0xd5, 0x77, 0x23, 0x23, 0xbf, 0x5a, 0xd2, + 0xab, 0x54, 0x44, 0x56, 0x9b, 0xee, 0xc8, 0xef, 0x93, 0x73, 0xd2, 0x6b, + 0x8c, 0x69, 0x51, 0x2e, 0xd4, 0x63, 0xaa, 0x14, 0x42, 0x69, 0x84, 0x4c, + 0xc2, 0x23, 0x61, 0xd3, 0x85, 0x30, 0x0c, 0x2a, 0x81, 0xc2, 0x14, 0x81, + 0xd5, 0x17, 0x08, 0x81, 0xea, 0xf0, 0x0c, 0x0e, 0x20, 0x48, 0x4c, 0x16, + 0x30, 0xb9, 0x0c, 0x47, 0x89, 0x01, 0xce, 0xa5, 0x62, 0x18, 0x8c, 0x1c, + 0x00, 0x6b, 0x4c, 0x48, 0x00, 0x4b, 0x4e, 0xd4, 0x40, 0xef, 0x8c, 0x63, + 0xe0, 0x54, 0x8c, 0x7c, 0xc0, 0xd9, 0x4c, 0x1e, 0x90, 0x5d, 0xcc, 0x02, + 0x50, 0x26, 0x4c, 0x0b, 0x31, 0x20, 0x0c, 0xf4, 0xab, 0xda, 0x0c, 0x0c, + 0x50, 0xc3, 0x0c, 0x0b, 0xe0, 0x3c, 0xc6, 0x25, 0x19, 0x1a, 0xa5, 0x64, + 0x0d, 0x63, 0x02, 0x30, 0xe3, 0xc1, 0x41, 0x89, 0x9b, 0x2b, 0x62, 0x60, + 0xc9, 0x33, 0x29, 0x11, 0x0e, 0x01, 0x21, 0x6b, 0x12, 0x04, 0xe8, 0x80, + 0x97, 0xea, 0x1d, 0xa2, 0xae, 0xf2, 0xa4, 0x7e, 0x9b, 0xc8, 0xbe, 0x2d, + 0x6a, 0x0c, 0x8a, 0x5f, 0x90, 0xba, 0xd0, 0x43, 0x40, 0x72, 0x21, 0xd6, + 0x02, 0xf4, 0x46, 0x21, 0xf7, 0xfa, 0x96, 0xec, 0x4a, 0x97, 0x54, 0xb1, + 0x7c, 0x2e, 0xb6, 0x95, 0x39, 0xd1, 0x9b, 0xc8, 0xc4, 0x13, 0xe5, 0xa7, + 0xad, 0x3e, 0x91, 0x2a, 0x5a, 0x59, 0xa8, 0x07, 0x68, 0x0c, 0x5d, 0x54, + 0xc6, 0xad, 0x56, 0x4d, 0xab, 0x38, 0x62, 0x9a, 0x87, 0x62, 0x5a, 0xd6, + 0x10, 0x9b, 0x71, 0xe6, 0xcb, 0xe8, 0x69, 0x51, 0x8f, 0xe4, 0xe2, 0x93, + 0xcb, 0xd6, 0x5d, 0x92, 0x33, 0xff, 0xfb, 0xd4, 0x60, 0x5a, 0x0d, 0xf8, + 0x4b, 0x70, 0x3f, 0x8b, 0xfa, 0x63, 0x70, 0x5b, 0xee, 0x08, 0x30, 0x4c, + 0x25, 0x6e, 0x20, 0x1d, 0xc1, 0x00, 0x4f, 0xe9, 0x2d, 0xc1, 0x7a, 0x38, + 0x20, 0xc0, 0xf0, 0x95, 0xb8, 0x85, 0x27, 0x8e, 0x5b, 0x71, 0x79, 0xa9, + 0x92, 0xc3, 0xf7, 0x8e, 0xad, 0x42, 0xe8, 0xf2, 0xb2, 0x06, 0x15, 0x9c, + 0x29, 0x88, 0x95, 0xfe, 0x74, 0xda, 0x92, 0x92, 0x32, 0xe9, 0x2d, 0xd8, + 0xaa, 0xc2, 0x0f, 0xa3, 0x3a, 0x2c, 0x13, 0x1a, 0x31, 0xf3, 0x15, 0xe7, + 0x36, 0x3d, 0x2c, 0xd1, 0xff, 0x28, 0xf5, 0xa4, 0xa4, 0xe3, 0x88, 0x55, + 0x3f, 0xc7, 0x1a, 0x7d, 0x98, 0x6a, 0xc1, 0xe5, 0xc9, 0xdb, 0x28, 0xe1, + 0x47, 0x37, 0x20, 0xa3, 0x75, 0x92, 0xc8, 0xb8, 0x7e, 0xa1, 0x7c, 0x28, + 0x1e, 0xce, 0x4d, 0xc2, 0x72, 0xec, 0x60, 0xc9, 0x9e, 0x72, 0xe1, 0xb1, + 0xf2, 0x9c, 0xe9, 0x78, 0xd3, 0x6c, 0x74, 0xc9, 0x31, 0x19, 0xe8, 0x0c, + 0xd3, 0x18, 0xdc, 0xee, 0x41, 0xc9, 0x94, 0x16, 0x78, 0x65, 0x8d, 0x5d, + 0xbd, 0x9a, 0xef, 0x67, 0xbb, 0x9d, 0xa9, 0x9a, 0xf5, 0x35, 0xec, 0xee, + 0x9e, 0x8f, 0x3a, 0x3e, 0xd4, 0x5b, 0x4b, 0x7f, 0xcd, 0x67, 0x6d, 0x93, + 0x3a, 0xdd, 0xba, 0xa2, 0xef, 0x5f, 0x6f, 0x37, 0x46, 0x56, 0x9f, 0xee, + 0x5a, 0x3d, 0x5d, 0x73, 0x11, 0x11, 0xd1, 0x22, 0x22, 0xc3, 0x98, 0x86, + 0x71, 0xa6, 0x31, 0x47, 0xac, 0xe5, 0x04, 0x39, 0x45, 0x87, 0xb3, 0x86, + 0x07, 0x03, 0x52, 0x43, 0x03, 0xc0, 0x0c, 0x13, 0x06, 0xac, 0x12, 0xa3, + 0x13, 0xe8, 0xf7, 0x73, 0xbb, 0x80, 0x1f, 0xc3, 0x0d, 0x10, 0x2f, 0xb3, + 0x04, 0xad, 0x0d, 0x83, 0x1a, 0xe5, 0x3d, 0x13, 0x04, 0x4c, 0x2a, 0xe3, + 0x26, 0x4c, 0x33, 0x73, 0x01, 0x74, 0x04, 0x43, 0x01, 0xa8, 0x0b, 0xe3, + 0x00, 0x88, 0x43, 0xd3, 0x69, 0x6d, 0xf3, 0x73, 0x19, 0x58, 0x1c, 0x33, + 0x04, 0xd4, 0x0c, 0xa3, 0xc8, 0x2c, 0xeb, 0xa4, 0x16, 0x4a, 0x54, 0x90, + 0xa4, 0x52, 0x38, 0x02, 0x41, 0x8a, 0xaf, 0xe4, 0x13, 0x17, 0xc1, 0xe2, + 0x11, 0x04, 0x1a, 0x2c, 0xef, 0xab, 0xf7, 0x7d, 0xb8, 0x2d, 0x07, 0x15, + 0xe7, 0x86, 0x15, 0x13, 0xd2, 0xc5, 0x9a, 0xf3, 0x24, 0x87, 0x1e, 0x14, + 0xbf, 0x69, 0x8a, 0x1f, 0x59, 0xd6, 0x68, 0x0c, 0xb2, 0x3f, 0x0a, 0x8b, + 0x4b, 0xdf, 0xf8, 0xfd, 0x47, 0x01, 0xba, 0xc5, 0x9c, 0xb7, 0xd1, 0x89, + 0x8d, 0xb8, 0x14, 0x12, 0x41, 0x7a, 0x80, 0xf3, 0x48, 0x01, 0xc8, 0x0d, + 0x88, 0xc7, 0x14, 0x27, 0x93, 0x08, 0x2c, 0x9e, 0xd8, 0x1c, 0x84, 0x30, + 0x32, 0x91, 0x08, 0x88, 0xc4, 0x12, 0x29, 0x08, 0xea, 0x11, 0x42, 0x07, + 0x8a, 0x06, 0x17, 0x59, 0xa3, 0x84, 0x0d, 0x48, 0x71, 0xb4, 0x4a, 0x00, + 0x98, 0x36, 0xda, 0xc3, 0x4b, 0x45, 0x12, 0xce, 0x9c, 0x4d, 0x36, 0xdc, + 0x98, 0x66, 0x6a, 0x90, 0xb3, 0xd5, 0x60, 0xe4, 0xd9, 0x2d, 0x67, 0xe1, + 0x44, 0xa3, 0x0d, 0xae, 0x40, 0x7a, 0xaa, 0x6e, 0x4d, 0x95, 0xa3, 0xb7, + 0x15, 0x8a, 0xa7, 0x34, 0x68, 0x4c, 0x33, 0x49, 0x93, 0x34, 0xf8, 0x32, + 0x79, 0x24, 0x4a, 0xe1, 0x11, 0xc1, 0x43, 0x32, 0x3f, 0x08, 0x2a, 0x0f, + 0xa9, 0x49, 0x73, 0x4a, 0x97, 0x90, 0x2e, 0x81, 0xe5, 0x85, 0x01, 0x51, + 0x48, 0x65, 0xe2, 0x11, 0xa6, 0x81, 0xb7, 0x86, 0x56, 0x6f, 0x1e, 0x2e, + 0xe5, 0xae, 0xe9, 0xbb, 0x52, 0xf9, 0x6e, 0xe4, 0x36, 0x30, 0x3c, 0xc4, + 0x19, 0x18, 0x30, 0x44, 0x32, 0x69, 0xea, 0xca, 0x60, 0xd9, 0x98, 0x09, + 0x4f, 0xa2, 0x5b, 0x3d, 0x24, 0x7d, 0xa7, 0x5e, 0xd9, 0x0c, 0xeb, 0x91, + 0xaa, 0xa8, 0xee, 0xe9, 0xf7, 0x6f, 0x64, 0xeb, 0x3e, 0xbf, 0x67, 0x9c, + 0x94, 0x97, 0x46, 0x6d, 0x5f, 0x74, 0x22, 0x57, 0x37, 0x4b, 0xcb, 0x57, + 0xb9, 0x92, 0x6a, 0x50, 0x9b, 0xaa, 0x3b, 0xbf, 0xd8, 0x72, 0x8a, 0xd0, + 0x5c, 0xe2, 0x81, 0x11, 0x50, 0xf0, 0xf0, 0x39, 0x83, 0x05, 0xc4, 0x19, + 0xcc, 0x50, 0x81, 0x03, 0x80, 0x25, 0x30, 0x2f, 0x00, 0x68, 0x30, 0x92, + 0xc1, 0x77, 0x31, 0xbe, 0x11, 0xa0, 0x3f, 0xb4, 0x86, 0xeb, 0x31, 0x6c, + 0x02, 0x86, 0x32, 0x05, 0xc9, 0x7f, 0x3e, 0xe2, 0x4a, 0x94, 0x31, 0xe5, + 0x42, 0x6f, 0x33, 0xa2, 0x89, 0x22, 0x30, 0x6d, 0xc1, 0xf6, 0x30, 0x48, + 0x82, 0xbf, 0x30, 0x99, 0xc3, 0x63, 0x3a, 0xec, 0x8a, 0xde, 0x32, 0xb5, + 0x40, 0xf4, 0x30, 0x98, 0x80, 0x37, 0x38, 0x98, 0x7c, 0xd8, 0x02, 0x03, + 0x3b, 0x88, 0xcc, 0x82, 0x25, 0x30, 0xa0, 0x28, 0x84, 0x06, 0x28, 0x22, + 0x08, 0x1e, 0xaf, 0x92, 0xeb, 0x2e, 0x87, 0x68, 0xb9, 0xe0, 0xa0, 0x12, + 0x93, 0x74, 0x93, 0x4d, 0x92, 0x26, 0x02, 0x03, 0xa2, 0xf0, 0xe8, 0xa8, + 0x0d, 0xef, 0x83, 0xad, 0xc8, 0x22, 0x0c, 0xc6, 0x4c, 0xf1, 0x3b, 0xf4, + 0xef, 0x0d, 0x87, 0xda, 0xbb, 0xfe, 0xd2, 0xde, 0x46, 0xfe, 0x35, 0x29, + 0x8d, 0xaa, 0xa5, 0xea, 0xb2, 0xb9, 0xe6, 0x72, 0xee, 0xe2, 0x79, 0x1f, + 0xec, 0x4b, 0xc7, 0xaa, 0x14, 0x4f, 0x57, 0x95, 0x6d, 0x06, 0x5a, 0x51, + 0x29, 0x3a, 0x2d, 0x98, 0xf0, 0x32, 0xb6, 0x87, 0x2a, 0x4e, 0x86, 0x34, + 0xcc, 0x04, 0x9b, 0x35, 0x21, 0x27, 0x18, 0x0b, 0xf1, 0x78, 0x9d, 0x52, + 0x75, 0xab, 0x53, 0x8f, 0x74, 0x77, 0x2c, 0xae, 0x1b, 0x8e, 0x36, 0xd4, + 0x31, 0x1e, 0xcd, 0x0e, 0x29, 0x7e, 0x63, 0x7e, 0xc4, 0x7a, 0x36, 0x1d, + 0x1b, 0x4e, 0x29, 0x56, 0xe1, 0xff, 0xfb, 0xd4, 0x60, 0x65, 0x8d, 0xf9, + 0x55, 0x70, 0x3e, 0x83, 0xfc, 0x7b, 0x70, 0x6c, 0xce, 0x08, 0x20, 0x24, + 0x65, 0x6e, 0x20, 0x19, 0xc1, 0x00, 0x2f, 0xed, 0x8d, 0xd1, 0x6b, 0xb7, + 0x60, 0xc0, 0xf1, 0x95, 0xb9, 0x4e, 0xc0, 0x86, 0x20, 0x20, 0xa1, 0xe7, + 0x32, 0x17, 0xa5, 0x71, 0xdc, 0x70, 0xd1, 0x2a, 0xc0, 0xbe, 0xed, 0x70, + 0xc0, 0xd5, 0x55, 0x0a, 0x8d, 0x96, 0xcf, 0x90, 0xa8, 0x28, 0x51, 0xca, + 0x86, 0xaf, 0xed, 0xe3, 0x6b, 0x24, 0xab, 0xcc, 0x8f, 0xcf, 0xe8, 0x47, + 0x12, 0x5f, 0xb1, 0x28, 0x5f, 0x29, 0x58, 0x6d, 0x01, 0x99, 0x29, 0x11, + 0xbd, 0x93, 0x6c, 0xd0, 0x70, 0xa1, 0x53, 0x38, 0x5d, 0x8e, 0x55, 0x87, + 0x6f, 0x1b, 0x9b, 0x93, 0x8e, 0x0c, 0xaa, 0x64, 0xea, 0x58, 0xdd, 0x3c, + 0x0e, 0x64, 0x29, 0xb1, 0xc1, 0x5f, 0x16, 0x45, 0xf2, 0xc2, 0x5f, 0xcc, + 0x72, 0x04, 0x3e, 0x89, 0xf8, 0x1d, 0xb4, 0x65, 0xb2, 0x91, 0x14, 0x9e, + 0x69, 0x37, 0xd2, 0xed, 0x2a, 0x1e, 0x3b, 0xab, 0x1d, 0x53, 0x42, 0xbf, + 0xe6, 0x0e, 0xa1, 0x5b, 0xf6, 0x56, 0x2a, 0x73, 0xe2, 0xd7, 0x32, 0xa7, + 0xe8, 0x8e, 0xae, 0x92, 0xbb, 0x11, 0xd1, 0x6d, 0x46, 0x39, 0xd8, 0xd7, + 0x73, 0xdd, 0x2a, 0x67, 0x55, 0x77, 0xa5, 0x51, 0x50, 0x94, 0x3a, 0x10, + 0xc5, 0xd2, 0x49, 0x77, 0x76, 0x2d, 0x9c, 0x63, 0x29, 0x4d, 0x63, 0xd5, + 0xfb, 0x5c, 0x96, 0x10, 0x47, 0x5a, 0x33, 0x27, 0xad, 0xaa, 0x8e, 0x4f, + 0x76, 0x55, 0xb3, 0xa5, 0x0a, 0x97, 0x41, 0x1d, 0x6f, 0x1b, 0x17, 0x8e, + 0x14, 0x50, 0x46, 0x0f, 0xb0, 0x74, 0x3e, 0x1d, 0x14, 0x0e, 0x2c, 0x3c, + 0xe1, 0xe1, 0x03, 0x89, 0x80, 0xc8, 0x30, 0x0d, 0xc0, 0xc8, 0x30, 0x1d, + 0x42, 0x1f, 0x30, 0x9f, 0x98, 0xfc, 0x37, 0x61, 0x87, 0x2d, 0x30, 0x23, + 0x83, 0x1a, 0x30, 0xb8, 0x8d, 0x99, 0x36, 0x01, 0x92, 0xb6, 0x30, 0x8f, + 0x81, 0xba, 0x30, 0x7f, 0xc7, 0x73, 0x30, 0xd2, 0x01, 0x8c, 0x30, 0x93, + 0xc0, 0xd9, 0x30, 0xda, 0x82, 0x2c, 0x36, 0x3f, 0x56, 0xec, 0x31, 0xe9, + 0x01, 0xf6, 0x30, 0x59, 0xc0, 0xd3, 0x38, 0x09, 0x03, 0x69, 0x49, 0x34, + 0x21, 0xe0, 0x11, 0xc8, 0x14, 0x0d, 0x20, 0x0a, 0x83, 0x43, 0x42, 0x93, + 0x4d, 0xc1, 0xb7, 0x7a, 0xe0, 0xb5, 0x0a, 0x91, 0xc1, 0x72, 0xac, 0xa4, + 0x51, 0x38, 0xab, 0xfc, 0x0c, 0x16, 0x80, 0xdf, 0x78, 0x31, 0x61, 0xe6, + 0x1c, 0x48, 0xc7, 0xdf, 0x95, 0x5c, 0x9c, 0x93, 0x4b, 0x2b, 0x3f, 0x53, + 0x95, 0xb0, 0xa5, 0xd4, 0x22, 0xac, 0x7e, 0xa5, 0xec, 0x48, 0xda, 0x11, + 0x26, 0x4d, 0x98, 0x29, 0xa1, 0x3e, 0x73, 0x1a, 0xca, 0x1e, 0xd0, 0x80, + 0xe3, 0xec, 0x1c, 0x31, 0x2b, 0xd9, 0x30, 0x81, 0x47, 0x23, 0x5e, 0xe3, + 0x49, 0x50, 0x4f, 0x4e, 0x9a, 0x5c, 0xbe, 0xeb, 0xdb, 0x70, 0xbf, 0xe7, + 0xa5, 0x36, 0x19, 0x85, 0x65, 0xee, 0xba, 0x11, 0xc8, 0xa9, 0x1b, 0x47, + 0x07, 0x47, 0x37, 0x3e, 0xa4, 0x0d, 0xdf, 0xa3, 0x43, 0x51, 0x2d, 0x30, + 0xac, 0xe4, 0x92, 0x5b, 0x71, 0x22, 0xda, 0xc2, 0xb9, 0x13, 0x09, 0x9a, + 0x5f, 0x65, 0xf0, 0x53, 0xfe, 0x35, 0x30, 0x3c, 0xa2, 0x68, 0x53, 0x61, + 0x5b, 0xe8, 0xcb, 0x2f, 0x9e, 0xae, 0x3b, 0x58, 0x91, 0xe3, 0x87, 0xf5, + 0x23, 0x45, 0x25, 0xcf, 0x7f, 0xbd, 0x68, 0x96, 0x29, 0x3b, 0x59, 0x0c, + 0x64, 0x08, 0x1c, 0xb1, 0xb9, 0x91, 0x82, 0x52, 0xb1, 0x0d, 0x45, 0xcd, + 0xec, 0x55, 0x68, 0xe1, 0xc1, 0x34, 0x62, 0xac, 0x0e, 0x99, 0x05, 0x86, + 0xa9, 0xaa, 0x40, 0x96, 0x26, 0xa0, 0xc7, 0xbd, 0xb1, 0x8c, 0xe7, 0x63, + 0x1d, 0xb6, 0x0a, 0x9d, 0x53, 0xea, 0x7f, 0x7a, 0x79, 0x45, 0xff, 0x5c, + 0xef, 0xfd, 0x3e, 0xcd, 0x2d, 0xd7, 0xf6, 0x53, 0x23, 0x5b, 0x7d, 0xde, + 0xad, 0xaa, 0xde, 0xb6, 0xad, 0x67, 0x7d, 0xfc, 0x9f, 0x44, 0xac, 0xdd, + 0x6e, 0xed, 0xa7, 0x36, 0xee, 0x5b, 0x32, 0xd5, 0x48, 0x5f, 0x79, 0x55, + 0x8f, 0x57, 0x66, 0x75, 0x95, 0x93, 0xad, 0x17, 0x33, 0xd5, 0x19, 0x1a, + 0x26, 0x24, 0x4b, 0x91, 0xce, 0x50, 0xf0, 0x6c, 0x0a, 0x2a, 0xc1, 0xd0, + 0xf0, 0x14, 0x86, 0x12, 0x0c, 0x30, 0x29, 0x41, 0x04, 0x30, 0x04, 0x83, + 0x4d, 0x30, 0x79, 0xe4, 0xf4, 0x32, 0x34, 0x8a, 0xd1, 0x30, 0xe3, 0xc1, + 0x1e, 0x31, 0x26, 0x8d, 0xd0, 0x3a, 0xf5, 0x96, 0xa7, 0x32, 0x3a, 0x91, + 0x54, 0x30, 0x32, 0x47, 0x3b, 0x32, 0x3c, 0x86, 0xfb, 0x30, 0x64, 0xc3, + 0x18, 0x30, 0xa1, 0x47, 0xa9, 0x33, 0xa2, 0x31, 0xf9, 0x31, 0x14, 0x44, + 0x47, 0x30, 0x2c, 0x01, 0xd8, 0x31, 0x5e, 0x13, 0x36, 0x60, 0x33, 0x75, + 0x93, 0x27, 0x47, 0x30, 0xe0, 0xf2, 0xe9, 0x0c, 0x10, 0x04, 0x20, 0x88, + 0x01, 0x96, 0x15, 0x33, 0xd6, 0x48, 0xc8, 0x28, 0xd0, 0x12, 0xca, 0xa2, + 0x62, 0x2f, 0xba, 0x83, 0xa9, 0xe8, 0x21, 0xc8, 0x45, 0xc8, 0xa2, 0xeb, + 0x94, 0x3c, 0x33, 0x72, 0xf7, 0xea, 0x09, 0x65, 0x91, 0xa8, 0x8c, 0x4e, + 0x34, 0xed, 0xce, 0xc6, 0xe6, 0xe9, 0xac, 0xc1, 0x2f, 0xf3, 0xa7, 0x25, + 0xa9, 0x2e, 0x89, 0xa8, 0x58, 0x11, 0x81, 0x62, 0x0b, 0xe2, 0x78, 0xb1, + 0xe3, 0x25, 0xe3, 0xb9, 0x25, 0x62, 0x02, 0xa7, 0x55, 0x40, 0x91, 0x49, + 0x4d, 0x68, 0x81, 0xa7, 0xcb, 0xcf, 0x91, 0x34, 0x6a, 0x62, 0xe1, 0xca, + 0x95, 0xa4, 0xb3, 0xe3, 0xd3, 0xe4, 0xe4, 0x47, 0x4e, 0x48, 0xa4, 0xb1, + 0x8d, 0x89, 0x55, 0x36, 0x64, 0xff, 0xfb, 0xd4, 0x60, 0x5a, 0x0d, 0xf8, + 0xdd, 0x70, 0x3f, 0x03, 0xfb, 0x63, 0x70, 0x57, 0x2d, 0xe8, 0x41, 0x3c, + 0x25, 0x6e, 0x63, 0xa1, 0xc0, 0xfc, 0x2f, 0xed, 0xed, 0xc1, 0x5a, 0xb8, + 0x21, 0x00, 0xf0, 0x89, 0xb8, 0xf4, 0xb0, 0x74, 0x61, 0x06, 0xb8, 0x5b, + 0x2a, 0x32, 0x77, 0x52, 0x32, 0xf6, 0x3e, 0xc3, 0xea, 0x83, 0xb2, 0xe1, + 0x54, 0x98, 0xa9, 0x29, 0x7a, 0x8b, 0xcb, 0x55, 0x58, 0x3d, 0x5c, 0x92, + 0x84, 0xa4, 0x92, 0x50, 0xe3, 0x83, 0x56, 0x52, 0xf1, 0x5e, 0x01, 0xe1, + 0x42, 0x52, 0x19, 0xda, 0x19, 0x7c, 0xfc, 0x4f, 0x27, 0x8f, 0xe7, 0xc6, + 0x89, 0x8a, 0x92, 0x6e, 0x73, 0x0b, 0x66, 0x65, 0xe5, 0x7c, 0xad, 0x71, + 0xea, 0xb3, 0xb3, 0xfc, 0x79, 0x0d, 0xc2, 0xa2, 0x01, 0xcb, 0x63, 0xd2, + 0xe2, 0xe8, 0x84, 0x98, 0xda, 0xa1, 0xea, 0xc0, 0x7c, 0x7c, 0xb8, 0x9e, + 0x3b, 0x11, 0x80, 0x68, 0x22, 0x7e, 0x62, 0x06, 0xcb, 0x4b, 0x82, 0xe2, + 0x11, 0x80, 0x05, 0x08, 0xba, 0xcd, 0x6d, 0x26, 0x63, 0xdb, 0x7e, 0x9a, + 0xd6, 0xd6, 0x31, 0x9f, 0x11, 0x65, 0x97, 0x37, 0x7a, 0xe3, 0x32, 0xb4, + 0x26, 0x41, 0x32, 0x30, 0xfd, 0x35, 0xdf, 0x52, 0xb1, 0x51, 0x91, 0x1d, + 0xff, 0x91, 0xbf, 0x7b, 0x7d, 0x6e, 0x8d, 0xa5, 0xdb, 0x37, 0xc9, 0xa2, + 0xa6, 0x9f, 0xb7, 0x6b, 0xa6, 0xdf, 0xa3, 0x55, 0x11, 0x19, 0xf7, 0x75, + 0xe8, 0xae, 0x96, 0x67, 0x7b, 0xce, 0x44, 0x46, 0x10, 0x52, 0xba, 0x98, + 0xe3, 0x07, 0x08, 0x20, 0x7c, 0xa6, 0x1a, 0xce, 0x41, 0x45, 0x38, 0x1a, + 0x8e, 0x85, 0x1f, 0x00, 0x86, 0x04, 0x68, 0x1f, 0x06, 0x07, 0xd0, 0x63, + 0xe6, 0x08, 0x0c, 0xb1, 0x06, 0xcf, 0x68, 0x79, 0xe6, 0x04, 0xe0, 0x21, + 0xe6, 0x26, 0x79, 0x8f, 0x87, 0x60, 0xc9, 0xf9, 0xe6, 0x3c, 0xf8, 0x34, + 0xc7, 0x02, 0x09, 0x43, 0x46, 0x30, 0xd0, 0x9d, 0xc6, 0x0c, 0x00, 0x3c, + 0xa6, 0x18, 0x68, 0x86, 0x06, 0x8b, 0x25, 0xe1, 0xc6, 0x2b, 0x08, 0x91, + 0x46, 0x0b, 0xd0, 0x2b, 0x66, 0xd7, 0x48, 0x64, 0xec, 0x21, 0x53, 0x93, + 0x0c, 0x14, 0x22, 0x37, 0x18, 0x18, 0x18, 0x16, 0x2f, 0xc1, 0x81, 0x84, + 0x24, 0x3c, 0xd3, 0x31, 0x4e, 0xa2, 0x20, 0xc7, 0xe2, 0x38, 0x5d, 0x25, + 0x65, 0x30, 0x00, 0x07, 0x99, 0x88, 0xbb, 0x09, 0xfe, 0xd5, 0x99, 0x8d, + 0x97, 0x42, 0x3e, 0xff, 0xaf, 0xe6, 0xea, 0xf4, 0x30, 0x09, 0x4c, 0x8e, + 0x06, 0x64, 0x53, 0x6f, 0xe4, 0xee, 0x54, 0x97, 0x66, 0xe2, 0x2c, 0xfe, + 0xcd, 0xa8, 0x9c, 0x2b, 0x5d, 0xbd, 0xea, 0xdb, 0x8c, 0x14, 0x61, 0x6c, + 0x5b, 0x49, 0xae, 0x1e, 0xa8, 0x11, 0x6c, 0xb2, 0x2c, 0x48, 0x8d, 0x86, + 0xe6, 0xac, 0x72, 0x6d, 0x69, 0x95, 0x95, 0xb9, 0x76, 0xe4, 0xa0, 0x73, + 0x56, 0xb6, 0xcc, 0xcc, 0xfa, 0xa6, 0x93, 0x2b, 0x43, 0xe7, 0xc8, 0x41, + 0xcc, 0xaa, 0x86, 0xce, 0xf3, 0x5a, 0x6f, 0x8e, 0x8b, 0x97, 0x2c, 0xc8, + 0xe6, 0x66, 0xa9, 0xd8, 0x21, 0xa7, 0xda, 0x51, 0x88, 0xf4, 0xf2, 0xaa, + 0x26, 0x1a, 0x98, 0x98, 0xd4, 0x6c, 0x2e, 0x68, 0x7b, 0x74, 0x16, 0x67, + 0xc7, 0x8c, 0x06, 0xf6, 0xf5, 0xa7, 0xda, 0x8a, 0xf9, 0x89, 0x99, 0x4c, + 0xc2, 0xcd, 0x76, 0xb5, 0x43, 0xd6, 0x63, 0x7d, 0x5d, 0x12, 0x14, 0xd9, + 0x59, 0x6c, 0x87, 0x94, 0xfd, 0x1f, 0x2e, 0x9e, 0x32, 0x42, 0x5e, 0x43, + 0x55, 0x99, 0x79, 0x06, 0x4a, 0xb6, 0xab, 0x1e, 0x30, 0x46, 0x5d, 0xae, + 0x25, 0xd3, 0xb7, 0x70, 0xd8, 0xa4, 0x95, 0xda, 0xe4, 0xfe, 0x6a, 0x53, + 0x76, 0x53, 0x21, 0xfc, 0x58, 0xc3, 0x00, 0x9f, 0x99, 0xc7, 0xb1, 0xa2, + 0xec, 0x20, 0xbb, 0xf0, 0xa4, 0xb4, 0x3a, 0x5b, 0x36, 0xcc, 0x09, 0xa1, + 0x40, 0x1b, 0x03, 0x2f, 0x20, 0x96, 0x64, 0x02, 0xdc, 0x36, 0x8e, 0x80, + 0x63, 0x81, 0xa1, 0x32, 0x35, 0x64, 0x6d, 0x73, 0x53, 0xb7, 0x3f, 0xbe, + 0xad, 0x5f, 0xe5, 0xed, 0x2a, 0xab, 0xfd, 0x7c, 0xec, 0x93, 0x69, 0xaa, + 0xa7, 0xf3, 0xed, 0xeb, 0xab, 0x2e, 0xeb, 0x2e, 0xc8, 0xda, 0xa6, 0x55, + 0xee, 0xef, 0x76, 0x92, 0xc7, 0xe8, 0x95, 0xa2, 0xcc, 0xe7, 0x73, 0x07, + 0x89, 0x34, 0xc2, 0x96, 0x18, 0x3b, 0xb0, 0x53, 0x38, 0xb3, 0x88, 0x51, + 0x6e, 0x41, 0x40, 0x2a, 0x30, 0x41, 0x40, 0xae, 0x30, 0x6f, 0x80, 0x62, + 0x30, 0xfd, 0x16, 0xea, 0x38, 0xb7, 0x42, 0xc5, 0x30, 0x6c, 0xc3, 0x2c, + 0x30, 0x81, 0xd1, 0x63, 0x36, 0x08, 0x57, 0xb0, 0x30, 0x6c, 0x42, 0xee, + 0x3a, 0x5a, 0x92, 0x36, 0x30, 0x8b, 0xc2, 0x57, 0x30, 0x30, 0x41, 0x4f, + 0x31, 0x0c, 0x04, 0x13, 0x37, 0xec, 0x60, 0x8f, 0x32, 0x36, 0x82, 0x97, + 0x30, 0x4f, 0xc0, 0x76, 0x3e, 0x01, 0xd0, 0x8a, 0x33, 0x28, 0x37, 0x33, + 0xc3, 0x64, 0x12, 0x89, 0x07, 0x23, 0xfb, 0x3c, 0x06, 0x82, 0x04, 0x05, + 0xb7, 0x38, 0xa1, 0x8f, 0x02, 0x03, 0x89, 0x4b, 0x2e, 0xc7, 0xc7, 0x87, + 0x53, 0x20, 0x58, 0x0d, 0x86, 0xb6, 0xed, 0xa0, 0x58, 0x14, 0x20, 0x3e, + 0x3e, 0xe0, 0x36, 0x8a, 0x68, 0xf5, 0xa5, 0x14, 0x06, 0xc8, 0xd6, 0x1e, + 0x96, 0x4d, 0x0c, 0x4b, 0x5b, 0x1c, 0x2d, 0xf8, 0x6e, 0xf1, 0x38, 0x3d, + 0xbb, 0x58, 0x86, 0xa2, 0xf2, 0x37, 0xac, 0xe3, 0x4f, 0x9f, 0xc9, 0x57, + 0x03, 0xf5, 0x8e, 0x8e, 0xa7, 0x4b, 0x2c, 0xa8, 0x31, 0x0d, 0xea, 0xa9, + 0xfa, 0x4d, 0xa5, 0x58, 0x86, 0x16, 0xc3, 0xfd, 0xac, 0xab, 0x72, 0x65, + 0x46, 0xa9, 0x97, 0x06, 0x54, 0xff, 0xfb, 0xd4, 0x60, 0x54, 0x8f, 0xd9, + 0x0d, 0x70, 0x3f, 0x03, 0xfb, 0x7b, 0x70, 0x4c, 0xae, 0x08, 0x51, 0x3c, + 0x25, 0x6e, 0x24, 0x19, 0xc0, 0xfc, 0x0f, 0xf1, 0x8d, 0xc1, 0x5f, 0x37, + 0xe1, 0x04, 0xf0, 0x95, 0xb8, 0x66, 0x76, 0x87, 0x6f, 0xd5, 0xd0, 0x1e, + 0x2d, 0xba, 0x63, 0x7d, 0x05, 0x51, 0x2b, 0x1a, 0x1d, 0x98, 0xee, 0x71, + 0x98, 0xd9, 0x60, 0xd7, 0xa6, 0x5c, 0x2a, 0xa3, 0x4f, 0xc0, 0x45, 0xba, + 0x4f, 0x44, 0xcc, 0x14, 0x72, 0x43, 0x71, 0x91, 0x91, 0xe1, 0xaa, 0x8f, + 0xe4, 0xeb, 0xa5, 0x54, 0x66, 0x35, 0x72, 0xc1, 0xc8, 0xc1, 0xab, 0x42, + 0x73, 0x6d, 0x72, 0x64, 0x55, 0x4d, 0x2c, 0x19, 0x19, 0x9a, 0x9b, 0x64, + 0xa2, 0x81, 0xb9, 0x74, 0x92, 0x7d, 0xbb, 0xa2, 0xd8, 0xe2, 0xea, 0xca, + 0x5a, 0x46, 0xb4, 0x1e, 0xa4, 0x51, 0xbb, 0x73, 0x42, 0x5b, 0xec, 0x9f, + 0x73, 0x7c, 0xb6, 0xca, 0xda, 0xde, 0xc9, 0x66, 0x35, 0x74, 0x8e, 0x66, + 0x6a, 0xa0, 0xed, 0x2c, 0x6a, 0x66, 0x37, 0x4d, 0xce, 0x6d, 0x90, 0xc5, + 0xe1, 0xe9, 0xdb, 0x5c, 0xc9, 0x81, 0x80, 0x0d, 0x77, 0xda, 0xcc, 0x97, + 0xac, 0xf0, 0x35, 0xac, 0xfc, 0x77, 0x28, 0x53, 0xb8, 0x85, 0xfa, 0x9a, + 0xa3, 0x78, 0xc8, 0x83, 0xba, 0x19, 0x37, 0xe9, 0xba, 0xf5, 0xea, 0x75, + 0xfa, 0x5f, 0xa7, 0xfe, 0xaf, 0xeb, 0x7d, 0x0f, 0xf9, 0x7d, 0xdb, 0xa7, + 0xd3, 0xfd, 0x69, 0x5f, 0x4f, 0x6e, 0x95, 0x4d, 0xe6, 0xa3, 0xfe, 0xbe, + 0xed, 0x66, 0xd9, 0xa9, 0xce, 0xca, 0xc4, 0x69, 0x2d, 0x31, 0x47, 0x1c, + 0xa7, 0x11, 0x62, 0x0a, 0x87, 0x03, 0x04, 0x46, 0x94, 0xc3, 0x0c, 0x0a, + 0x90, 0x22, 0x4c, 0x1d, 0x40, 0xea, 0x0c, 0x0c, 0x92, 0x29, 0x8e, 0x46, + 0x50, 0x47, 0x03, 0x89, 0xcb, 0x31, 0x5e, 0x05, 0x6f, 0x3b, 0x96, 0x82, + 0x7a, 0x30, 0xfb, 0x87, 0xe4, 0x37, 0xd5, 0x62, 0x45, 0x30, 0xe1, 0x82, + 0xef, 0x30, 0xef, 0xc3, 0x6a, 0x30, 0x50, 0xc1, 0xd9, 0x38, 0x4e, 0x80, + 0x5a, 0x32, 0x3d, 0xc1, 0x49, 0x30, 0x8d, 0x80, 0x1f, 0x38, 0x88, 0x6c, + 0xcd, 0x89, 0xc3, 0x09, 0x80, 0x90, 0x1c, 0x61, 0xa2, 0x82, 0x0b, 0x03, + 0x40, 0xeb, 0xb0, 0xc0, 0xa1, 0x20, 0x50, 0xe9, 0x99, 0x96, 0xcc, 0x0c, + 0x11, 0x30, 0x68, 0x14, 0x20, 0x1c, 0xac, 0x2b, 0xc1, 0x68, 0x87, 0x00, + 0x18, 0x33, 0xfa, 0x83, 0xc4, 0x80, 0xab, 0x6d, 0x26, 0x6e, 0x1a, 0x67, + 0x0d, 0xc1, 0xa9, 0xc3, 0xb0, 0xfa, 0xb7, 0xc4, 0xd9, 0x23, 0x99, 0x93, + 0xbd, 0x44, 0xa4, 0xe1, 0xa7, 0xca, 0x52, 0xf3, 0xba, 0xd2, 0xa7, 0xf2, + 0x45, 0x0e, 0x01, 0xd0, 0x5c, 0x52, 0x12, 0x18, 0x26, 0x5e, 0x80, 0xb4, + 0x5f, 0x11, 0x30, 0xb4, 0x9b, 0x0d, 0x17, 0x9c, 0x9e, 0x18, 0x94, 0x4b, + 0x62, 0xa1, 0x39, 0x53, 0x64, 0x35, 0x25, 0x93, 0xf1, 0xd0, 0xb4, 0xc9, + 0x3c, 0x49, 0x33, 0x29, 0x93, 0x44, 0x92, 0xb6, 0x19, 0x12, 0x8e, 0x4e, + 0x09, 0xa8, 0x66, 0x4a, 0x29, 0x63, 0xd4, 0x36, 0xfc, 0xf6, 0x02, 0xd1, + 0x58, 0xaf, 0x22, 0x92, 0xaa, 0xa4, 0xae, 0x27, 0x31, 0x3f, 0x4e, 0x55, + 0x39, 0x03, 0x25, 0xe5, 0xab, 0x07, 0xe1, 0x99, 0x74, 0xe5, 0x82, 0x27, + 0x3c, 0x4f, 0x68, 0xb0, 0x20, 0xb8, 0x38, 0x21, 0x9c, 0xc0, 0x49, 0xce, + 0x11, 0x9b, 0x36, 0x3f, 0x25, 0x9c, 0xac, 0x2b, 0x37, 0xc5, 0x95, 0xca, + 0x91, 0xb1, 0x15, 0xd2, 0x64, 0x03, 0x42, 0xf5, 0x8f, 0xa1, 0xc2, 0x84, + 0xd9, 0x92, 0x4f, 0x6d, 0x42, 0xdb, 0x41, 0x42, 0x19, 0x1c, 0xa6, 0x9c, + 0xf3, 0x53, 0xab, 0x1f, 0x9f, 0x64, 0xea, 0x22, 0xb8, 0x7b, 0xc4, 0x11, + 0x08, 0x90, 0xd8, 0x74, 0x2b, 0x00, 0x82, 0x49, 0x89, 0xa0, 0x1c, 0x38, + 0xca, 0x71, 0x93, 0x54, 0xfb, 0xd5, 0xed, 0x69, 0x6d, 0xf5, 0x61, 0xf4, + 0x86, 0x95, 0x11, 0x99, 0x73, 0xcf, 0x8e, 0x38, 0x11, 0xb5, 0x14, 0xcf, + 0x0c, 0xb6, 0x76, 0x67, 0xa2, 0xd9, 0x1e, 0x44, 0xff, 0xd9, 0xda, 0xbd, + 0x1e, 0xee, 0xbe, 0xbd, 0x13, 0xf9, 0x2d, 0x56, 0xec, 0xfb, 0x72, 0x56, + 0x94, 0xde, 0xca, 0xd6, 0xd2, 0x86, 0xd5, 0x91, 0x12, 0x88, 0xef, 0x35, + 0x8e, 0x46, 0x2f, 0x4b, 0xb2, 0xdc, 0xd2, 0xd3, 0xda, 0x62, 0x1c, 0x4c, + 0x82, 0xe3, 0x4a, 0xe3, 0x10, 0x58, 0x14, 0xa4, 0x88, 0x8b, 0x07, 0x45, + 0x86, 0x87, 0x52, 0x2f, 0x40, 0x03, 0x01, 0x4c, 0x0c, 0x93, 0x04, 0x18, + 0x45, 0x63, 0x0b, 0x2c, 0xab, 0xf3, 0x7e, 0xf4, 0x40, 0xa3, 0x04, 0xb4, + 0x23, 0x53, 0x12, 0x35, 0x02, 0x63, 0x15, 0x18, 0xbb, 0x33, 0x13, 0x78, + 0xd8, 0xd3, 0x5f, 0x9e, 0x94, 0xa3, 0x00, 0xb4, 0x52, 0xc3, 0x12, 0x78, + 0x17, 0x73, 0x06, 0x04, 0x4e, 0x03, 0x71, 0xcd, 0xfe, 0xe3, 0x13, 0xa8, + 0x23, 0xc3, 0x06, 0xf4, 0x11, 0x73, 0xad, 0xd0, 0xe5, 0xfb, 0x37, 0xd6, + 0x0d, 0x31, 0x64, 0x2e, 0x05, 0x30, 0x0a, 0x83, 0x56, 0x11, 0xa2, 0xc5, + 0x6a, 0xd2, 0x08, 0x28, 0x0c, 0x1c, 0x89, 0x5f, 0x0d, 0x3c, 0x5e, 0x6f, + 0xb3, 0x72, 0x2b, 0x0e, 0x9a, 0x29, 0x50, 0x92, 0xe4, 0xa2, 0x16, 0x42, + 0x61, 0xb1, 0x16, 0x58, 0x82, 0x04, 0x6e, 0x57, 0x28, 0x34, 0xf8, 0xb1, + 0x37, 0x65, 0xd3, 0x1e, 0x0c, 0x34, 0x0d, 0x84, 0xb9, 0x05, 0xdd, 0x41, + 0xb5, 0x6f, 0x10, 0x00, 0x87, 0x59, 0xfa, 0x78, 0x24, 0x3b, 0x3a, 0x5e, + 0x4a, 0x92, 0x84, 0x28, 0x00, 0x25, 0x0a, 0x9e, 0x0a, 0x98, 0x11, 0x89, + 0x24, 0x28, 0xa0, 0x3f, 0x61, 0xff, 0xfb, 0xd4, 0x60, 0x4f, 0x0d, 0xd9, + 0x0b, 0x70, 0x3f, 0x13, 0xfa, 0x63, 0x70, 0x57, 0x0e, 0x08, 0x41, 0x48, + 0x25, 0x6e, 0x22, 0xe9, 0xc0, 0xfc, 0x0f, 0xed, 0x8d, 0xc1, 0x5c, 0x37, + 0x21, 0x01, 0x00, 0x89, 0xb9, 0x8a, 0x38, 0x4d, 0x3c, 0x13, 0xd6, 0xea, + 0x01, 0x78, 0x90, 0xaf, 0x0b, 0x25, 0x36, 0x56, 0x2e, 0x2e, 0x0f, 0xa5, + 0xe6, 0x47, 0x54, 0x90, 0x9e, 0xc2, 0x72, 0x3b, 0x16, 0x54, 0x25, 0x35, + 0x29, 0x32, 0x55, 0x38, 0x44, 0x70, 0x56, 0xf3, 0x42, 0xda, 0xb2, 0xf1, + 0x05, 0x49, 0xd9, 0xbd, 0x8d, 0xca, 0x8d, 0x11, 0x58, 0x54, 0x7c, 0xc5, + 0xc8, 0x95, 0x58, 0xd2, 0x1b, 0x8b, 0xc7, 0x82, 0x64, 0x31, 0x30, 0x86, + 0x84, 0x34, 0x55, 0x0d, 0xe2, 0x12, 0xd2, 0x7b, 0x27, 0xf2, 0x3e, 0x36, + 0xe2, 0xfb, 0x70, 0x9a, 0x5e, 0x3b, 0xb5, 0x95, 0xbe, 0x4a, 0x2a, 0x2d, + 0x5a, 0x9d, 0x18, 0xd4, 0xc2, 0x76, 0xb8, 0xda, 0x3a, 0xac, 0x97, 0x47, + 0xf4, 0x13, 0x65, 0x67, 0x68, 0x66, 0x0e, 0x3c, 0xc2, 0x74, 0xac, 0x40, + 0xbc, 0x92, 0x70, 0x76, 0xf6, 0x8e, 0x64, 0xd3, 0x92, 0xa2, 0x90, 0x90, + 0xec, 0x1c, 0x01, 0x68, 0x06, 0x00, 0x55, 0x4d, 0x4e, 0x3d, 0x04, 0xa8, + 0x29, 0x68, 0xd1, 0x58, 0x04, 0xc5, 0x36, 0xd6, 0x52, 0x41, 0x04, 0x81, + 0xcb, 0x65, 0x85, 0x09, 0x6a, 0x14, 0x06, 0x1e, 0x64, 0xa4, 0x6f, 0x3a, + 0xba, 0xea, 0xbe, 0x74, 0xd4, 0xf7, 0xe5, 0xd3, 0xf5, 0x76, 0x55, 0xdf, + 0x6a, 0x6b, 0x37, 0xa5, 0xed, 0x5c, 0xba, 0xd1, 0xf2, 0x7c, 0xf5, 0x7b, + 0xae, 0x6b, 0xa5, 0x2a, 0x94, 0x55, 0x7a, 0xd5, 0x3c, 0x99, 0xb4, 0xa2, + 0x96, 0xcb, 0x75, 0x42, 0x39, 0x8b, 0x58, 0x9a, 0x8d, 0x28, 0x7d, 0x4b, + 0x23, 0x8c, 0x0e, 0x81, 0x02, 0x8c, 0x26, 0x86, 0x01, 0xf8, 0x0f, 0xe6, + 0x01, 0xf0, 0x8e, 0x86, 0x1b, 0x7a, 0x6c, 0xa6, 0xba, 0xe8, 0x71, 0x46, + 0x06, 0x58, 0x3b, 0x66, 0x06, 0x08, 0xa2, 0x06, 0x81, 0xb8, 0x8e, 0xa6, + 0x1f, 0x91, 0x6e, 0xc7, 0xd8, 0xd3, 0xd1, 0x66, 0x39, 0x08, 0xe0, 0x26, + 0x14, 0xc8, 0x4a, 0x26, 0x08, 0x58, 0x5b, 0x26, 0x7d, 0x64, 0xb1, 0xe6, + 0x2f, 0x00, 0x59, 0x86, 0x09, 0x90, 0x0f, 0x07, 0xfe, 0x82, 0x78, 0x43, + 0xc6, 0xe6, 0xa2, 0x67, 0xac, 0xa0, 0xe9, 0xc1, 0x51, 0xd1, 0xd1, 0xa1, + 0x41, 0xf3, 0x07, 0x00, 0x0e, 0x1f, 0x10, 0x81, 0x0b, 0x00, 0xa3, 0x02, + 0x97, 0x26, 0xfb, 0x53, 0x48, 0x85, 0x1f, 0x44, 0x86, 0xb7, 0x61, 0x30, + 0x91, 0xe6, 0x50, 0xe6, 0xb9, 0xef, 0x2c, 0x6d, 0xf8, 0x65, 0x70, 0x6c, + 0x21, 0x97, 0xb3, 0xe9, 0x4c, 0x62, 0x41, 0x30, 0xcd, 0x64, 0xd5, 0xdc, + 0x58, 0xdc, 0xec, 0x7d, 0xd5, 0x9b, 0x7e, 0x30, 0xd3, 0x82, 0x19, 0x00, + 0xe4, 0xac, 0xd8, 0xc9, 0x08, 0x7c, 0x1d, 0x8e, 0xd5, 0x3a, 0x99, 0x82, + 0x4d, 0x5e, 0x89, 0xa1, 0xb1, 0xad, 0x11, 0xdd, 0x7a, 0x2d, 0x2a, 0x32, + 0x68, 0xb4, 0xbc, 0x37, 0x22, 0x92, 0x12, 0x3a, 0x90, 0xd8, 0x9c, 0x42, + 0x3d, 0x93, 0x82, 0xc0, 0xdd, 0x61, 0x88, 0xe2, 0x56, 0x3b, 0x40, 0x2b, + 0x12, 0x2a, 0x57, 0xda, 0x1e, 0x46, 0xbc, 0xe4, 0xd5, 0xf4, 0x03, 0xc4, + 0xa2, 0x59, 0xd8, 0xfe, 0x53, 0xee, 0x88, 0xed, 0x0d, 0x5a, 0xf6, 0xcb, + 0x51, 0x1f, 0x9a, 0x26, 0x5a, 0x9e, 0xe4, 0x13, 0x78, 0x53, 0x91, 0x0c, + 0x51, 0x2f, 0xc6, 0x19, 0x44, 0x90, 0x90, 0x76, 0xa8, 0xb0, 0xb0, 0xf1, + 0x0d, 0x44, 0x98, 0xa7, 0x34, 0xba, 0xfd, 0xab, 0xc7, 0xca, 0x96, 0x1f, + 0x9c, 0xa9, 0x97, 0xd6, 0xb8, 0x67, 0x5d, 0x5a, 0x59, 0x25, 0x2e, 0x72, + 0xcf, 0x1d, 0x13, 0x8a, 0xab, 0xcb, 0xeb, 0xce, 0x97, 0xc0, 0x3a, 0x1c, + 0x27, 0x78, 0x45, 0x80, 0x41, 0x71, 0x30, 0x22, 0x07, 0x40, 0xa8, 0x13, + 0x4f, 0xb2, 0x65, 0x0a, 0x8c, 0x4d, 0xd1, 0x3c, 0xd4, 0x14, 0x51, 0x20, + 0x09, 0x23, 0x91, 0x2d, 0xa3, 0x73, 0x85, 0xbd, 0xf2, 0x91, 0xee, 0xf2, + 0x6a, 0x97, 0xf6, 0xbf, 0x34, 0x94, 0xa9, 0xd6, 0xd7, 0x7a, 0xfe, 0xcb, + 0xea, 0x88, 0x9b, 0xb1, 0x5a, 0xec, 0xaa, 0xa8, 0x87, 0xd5, 0x14, 0xd5, + 0x56, 0x76, 0x6f, 0x5f, 0xf2, 0xa1, 0x35, 0xba, 0xf6, 0xb5, 0x56, 0x6b, + 0x2b, 0x11, 0x13, 0x75, 0xb6, 0x8f, 0xa2, 0x91, 0xe5, 0x33, 0x33, 0x41, + 0x1c, 0x63, 0xb5, 0x15, 0x08, 0x62, 0x21, 0xe0, 0x27, 0x21, 0x40, 0x4f, + 0x00, 0x8d, 0x30, 0x07, 0x80, 0x6d, 0x30, 0x0b, 0x43, 0x5c, 0x30, 0xbe, + 0xd4, 0x73, 0x32, 0xb6, 0x43, 0xa6, 0x0e, 0x00, 0xfc, 0xc0, 0x89, 0x0d, + 0x7c, 0xc3, 0x04, 0x21, 0xb8, 0xc5, 0x05, 0x05, 0x48, 0xff, 0x05, 0x30, + 0x5c, 0xc7, 0xc8, 0x17, 0xa0, 0xc1, 0xd3, 0x04, 0x60, 0xc1, 0x5a, 0x0c, + 0xb8, 0xc8, 0xc4, 0x55, 0x30, 0xc1, 0x6f, 0x02, 0xb4, 0xc1, 0x38, 0x02, + 0x64, 0xf1, 0x80, 0x37, 0x48, 0x8c, 0x68, 0x81, 0x59, 0x64, 0xa4, 0xd4, + 0xde, 0x06, 0x4c, 0x11, 0x50, 0x6d, 0x39, 0x0a, 0x69, 0xa7, 0x68, 0x50, + 0xda, 0x69, 0xeb, 0x9c, 0x65, 0xd0, 0xeb, 0x0c, 0x86, 0x5f, 0x0f, 0x77, + 0x9e, 0x2c, 0x16, 0xac, 0x3d, 0x9d, 0x98, 0x1a, 0xe3, 0x64, 0xa9, 0x2d, + 0x8a, 0x3c, 0xb1, 0x69, 0x43, 0x77, 0x92, 0x5d, 0x81, 0x22, 0xd4, 0xd0, + 0xd5, 0xa9, 0xa7, 0x94, 0x93, 0x9f, 0x35, 0x11, 0x4e, 0x2b, 0x02, 0x83, + 0x74, 0x61, 0x4a, 0xc5, 0xb1, 0x9d, 0x18, 0xf2, 0xeb, 0xa6, 0x24, 0x9f, + 0xa9, 0x74, 0x5c, 0x62, 0x67, 0xff, 0xfb, 0xd4, 0x60, 0x49, 0x8f, 0x88, + 0x2d, 0x70, 0x3f, 0x83, 0xfa, 0x63, 0x70, 0x51, 0x2e, 0x08, 0x6a, 0x0c, + 0x62, 0x6e, 0x25, 0x0d, 0xc0, 0xfa, 0x0f, 0xe9, 0xed, 0xc1, 0x44, 0xb7, + 0xa1, 0x04, 0xb0, 0x89, 0xb9, 0x56, 0x4a, 0xcf, 0x15, 0x57, 0x29, 0x46, + 0xe2, 0xc4, 0x46, 0x4a, 0xcc, 0x94, 0x1e, 0x36, 0xfb, 0xa4, 0x10, 0x96, + 0x11, 0xe8, 0xfe, 0xc7, 0x8f, 0x89, 0x65, 0xc3, 0x1b, 0xe2, 0x11, 0x53, + 0x16, 0x3d, 0xfe, 0x4d, 0x48, 0xb9, 0xc6, 0x1b, 0x54, 0x2e, 0x65, 0x0d, + 0x1a, 0x04, 0x25, 0x98, 0x20, 0xa1, 0xe8, 0xd2, 0x4a, 0x5e, 0xae, 0xa7, + 0xcb, 0xca, 0x54, 0x46, 0x59, 0x7d, 0x4c, 0x4b, 0xcf, 0xe1, 0x8a, 0xb6, + 0x81, 0x32, 0x12, 0x77, 0xac, 0x7a, 0x95, 0x97, 0x89, 0x14, 0x64, 0xe9, + 0x21, 0xe5, 0x2c, 0xb5, 0x3b, 0xc8, 0x50, 0xe3, 0x4a, 0xba, 0xaa, 0x0c, + 0x56, 0x29, 0xbb, 0xd7, 0x3b, 0x68, 0xb4, 0x5c, 0x3e, 0x3a, 0x50, 0x23, + 0xbf, 0x62, 0xc9, 0xf0, 0xea, 0x74, 0x1f, 0xa6, 0x1e, 0xc6, 0x40, 0x88, + 0x00, 0x00, 0xc9, 0xc8, 0x88, 0x00, 0x1b, 0x50, 0x8e, 0x77, 0x16, 0x94, + 0xec, 0xd7, 0x7c, 0xcc, 0x29, 0xcb, 0x0b, 0x22, 0xdd, 0x7b, 0x5e, 0xf0, + 0x1d, 0xb8, 0xa0, 0x61, 0x96, 0xb0, 0xce, 0xe0, 0xf4, 0x58, 0x38, 0x1b, + 0x48, 0xee, 0xe9, 0x65, 0x9d, 0x6d, 0x4d, 0xba, 0xa6, 0xd4, 0xfd, 0xfd, + 0xbf, 0x6f, 0xb7, 0xda, 0x9f, 0xff, 0xe6, 0xa7, 0xaf, 0xfa, 0xff, 0xff, + 0x5b, 0xfe, 0xfd, 0x37, 0x54, 0xdb, 0x6d, 0x8c, 0xb9, 0x42, 0x9f, 0x29, + 0x4a, 0x88, 0x58, 0x70, 0x87, 0x39, 0x51, 0x18, 0x0c, 0xc0, 0x4a, 0x04, + 0x2c, 0xc0, 0xff, 0x0e, 0x98, 0xc3, 0x09, 0x69, 0xdc, 0xca, 0x2e, 0x16, + 0x08, 0xc0, 0x4b, 0x04, 0x7c, 0xc2, 0x32, 0x17, 0x00, 0xd1, 0x9a, 0x11, + 0x1c, 0xc6, 0x10, 0x34, 0x44, 0xfe, 0x24, 0xc3, 0x20, 0xc4, 0x77, 0x0d, + 0x5c, 0xc4, 0xc8, 0x08, 0x9c, 0xc2, 0x21, 0x01, 0x58, 0xd5, 0x45, 0x55, + 0xa4, 0x98, 0x4a, 0x03, 0x02, 0x3c, 0x02, 0x13, 0x55, 0x08, 0x2c, 0x3c, + 0xcf, 0x40, 0xb6, 0x66, 0x4e, 0x83, 0xad, 0x22, 0xeb, 0x6e, 0x63, 0x05, + 0x89, 0x02, 0x1a, 0x22, 0x84, 0xf4, 0x05, 0xb1, 0xa0, 0xe6, 0xae, 0xb3, + 0x1b, 0x5d, 0x49, 0x2a, 0xfd, 0x38, 0x95, 0x94, 0x9b, 0x90, 0xeb, 0xac, + 0x22, 0xab, 0xa1, 0xe3, 0x96, 0xce, 0xa8, 0x15, 0x2c, 0xcb, 0x7a, 0xc9, + 0xdd, 0x08, 0xf3, 0xe9, 0x22, 0x8e, 0xbb, 0x54, 0xac, 0x29, 0xac, 0xce, + 0xc2, 0x60, 0xa7, 0xc9, 0xfe, 0x4f, 0x9d, 0x09, 0xf6, 0x51, 0xee, 0x70, + 0xa5, 0x54, 0xc6, 0x11, 0x3d, 0x62, 0x50, 0x3c, 0x3c, 0x5c, 0xe3, 0x26, + 0x5e, 0x34, 0x18, 0xa5, 0xed, 0x85, 0xf9, 0x60, 0x73, 0x56, 0x2b, 0x22, + 0xaa, 0x53, 0x08, 0x99, 0xd9, 0xfa, 0x39, 0x50, 0x6d, 0xa8, 0x92, 0x0e, + 0x4a, 0x94, 0x29, 0xf1, 0xda, 0xad, 0x7c, 0xc4, 0xb6, 0x5f, 0x1e, 0x26, + 0x59, 0x0f, 0x03, 0x89, 0x8d, 0xe1, 0xcb, 0x1d, 0x72, 0xa3, 0x47, 0xb9, + 0x9d, 0x37, 0x3b, 0x9e, 0x35, 0x42, 0x56, 0x99, 0xce, 0xdd, 0xaf, 0xa3, + 0xae, 0x9e, 0x5c, 0x2f, 0xad, 0xbf, 0x3f, 0x0c, 0x95, 0x4c, 0x7c, 0xb6, + 0xc3, 0xd2, 0x7d, 0x27, 0x53, 0xe9, 0xb9, 0xe2, 0xda, 0x51, 0xca, 0xae, + 0x6f, 0xf5, 0x09, 0x50, 0xcb, 0x22, 0x90, 0xea, 0x8b, 0x19, 0xe3, 0x83, + 0x16, 0x50, 0x36, 0x56, 0x43, 0x3d, 0x1c, 0xd9, 0x5a, 0x54, 0xf0, 0x59, + 0x16, 0xd6, 0x1c, 0xce, 0x94, 0x53, 0x72, 0x55, 0x65, 0xea, 0xe5, 0x5a, + 0xf5, 0x9d, 0x16, 0xe9, 0x38, 0xa6, 0x3a, 0x49, 0x7b, 0x7c, 0xac, 0xca, + 0x33, 0xa1, 0x42, 0x5c, 0x87, 0x41, 0x3d, 0x13, 0x61, 0x7c, 0x41, 0x8f, + 0x45, 0x49, 0x92, 0xf0, 0xb0, 0x10, 0x03, 0x39, 0xad, 0x49, 0x2d, 0x83, + 0x7a, 0x77, 0x5b, 0xfa, 0x64, 0xcc, 0xba, 0xb2, 0x09, 0x5b, 0x32, 0x26, + 0x6a, 0x89, 0xda, 0x32, 0x52, 0x41, 0xcb, 0x66, 0xda, 0xa8, 0x89, 0xd1, + 0x95, 0xf5, 0x4b, 0xf4, 0x75, 0xa7, 0xe8, 0x88, 0xaf, 0xfd, 0xe7, 0xf7, + 0xb7, 0xea, 0xdd, 0x74, 0xfd, 0x9d, 0x1e, 0x97, 0x5e, 0x9c, 0xc8, 0x9d, + 0xa7, 0x6a, 0x26, 0xee, 0xef, 0x4e, 0xb2, 0x5d, 0xcb, 0xed, 0x23, 0x5d, + 0xd9, 0x56, 0x53, 0xe0, 0x44, 0x29, 0x18, 0x69, 0x4a, 0x43, 0x0e, 0xc2, + 0xd4, 0x79, 0x55, 0x30, 0x31, 0x80, 0xe7, 0x30, 0x49, 0xc2, 0x68, 0x30, + 0x73, 0x55, 0x67, 0x36, 0x34, 0x04, 0x8e, 0x30, 0xa0, 0x02, 0x0d, 0x30, + 0xac, 0x45, 0xc6, 0x34, 0xad, 0xcb, 0x57, 0x30, 0x46, 0xd2, 0xc4, 0x30, + 0x07, 0x3d, 0x11, 0x30, 0x30, 0x84, 0xd9, 0x31, 0x42, 0xc1, 0x78, 0x30, + 0x26, 0x03, 0x5b, 0x34, 0xd3, 0x87, 0xcc, 0x31, 0x0a, 0x40, 0x94, 0x30, + 0x25, 0x80, 0x78, 0x32, 0x6f, 0x10, 0xc6, 0x08, 0x54, 0x11, 0xc1, 0x03, + 0x86, 0xf8, 0x2c, 0xfc, 0x70, 0x32, 0xee, 0xa9, 0x94, 0x65, 0xec, 0x80, + 0x92, 0x38, 0x0c, 0xdb, 0x62, 0x1e, 0x09, 0x4d, 0x5f, 0xa5, 0x38, 0x7f, + 0x19, 0xf4, 0xbd, 0x4a, 0x98, 0x5b, 0x5c, 0x92, 0x35, 0xc9, 0x1b, 0x9d, + 0x75, 0xe2, 0xad, 0x4c, 0xf9, 0x3e, 0xae, 0x87, 0xc3, 0x8e, 0xc6, 0x52, + 0xa8, 0x2d, 0xd6, 0xa4, 0x80, 0xa1, 0x12, 0xf7, 0xdd, 0x04, 0xd6, 0xad, + 0x5f, 0x8c, 0x68, 0x42, 0x46, 0xaa, 0x98, 0xce, 0x78, 0x4f, 0x0e, 0x6c, + 0xa4, 0x21, 0x21, 0xcb, 0x27, 0x7a, 0xee, 0x49, 0x13, 0xca, 0x94, 0x32, + 0xc9, 0xda, 0x2e, 0x57, 0x6f, 0xff, 0xfb, 0xd4, 0x60, 0x4f, 0x0f, 0xd9, + 0x0d, 0x70, 0x3e, 0x83, 0xf9, 0x7b, 0x70, 0x48, 0x0e, 0x08, 0x52, 0x20, + 0x25, 0x6e, 0x24, 0xd1, 0xc0, 0xfa, 0x0f, 0xe9, 0xed, 0xc1, 0x51, 0x38, + 0x20, 0xc0, 0x80, 0x89, 0xb8, 0xdc, 0x96, 0x97, 0x67, 0xf2, 0x80, 0xee, + 0x4c, 0xb7, 0x3d, 0x8e, 0xa5, 0x79, 0x68, 0xca, 0x94, 0x02, 0x39, 0xea, + 0x31, 0xe2, 0x35, 0xf2, 0x29, 0x56, 0xbb, 0x5c, 0xc8, 0xb9, 0x62, 0x8e, + 0xa6, 0xbb, 0x12, 0x3f, 0x9f, 0x69, 0x96, 0xc7, 0xe7, 0x42, 0x5e, 0xed, + 0xe8, 0xb5, 0xb4, 0xd3, 0x23, 0x2b, 0xc5, 0x4b, 0x23, 0xe5, 0xf4, 0xeb, + 0x82, 0xb7, 0x06, 0x9a, 0xa1, 0x5b, 0x09, 0xb0, 0xe8, 0x63, 0x46, 0xbd, + 0x62, 0x3b, 0x67, 0x5c, 0xc1, 0x46, 0x39, 0x54, 0xee, 0x46, 0x1d, 0x7c, + 0xff, 0x72, 0x48, 0x25, 0x9f, 0x4f, 0x1d, 0x58, 0xd7, 0x19, 0xad, 0x54, + 0xfd, 0x69, 0xdb, 0xe5, 0x34, 0x48, 0x27, 0x22, 0xe4, 0xf1, 0x80, 0xad, + 0x8e, 0xc8, 0x74, 0xb7, 0x32, 0xc7, 0x53, 0x9e, 0xba, 0x47, 0xc7, 0x58, + 0x6c, 0x72, 0x4e, 0x28, 0x4b, 0x13, 0x08, 0x8a, 0x10, 0xf4, 0xa9, 0x28, + 0x19, 0x2a, 0x49, 0x87, 0xf0, 0x48, 0x00, 0x00, 0x65, 0xf1, 0xf1, 0xa2, + 0x71, 0x2f, 0x33, 0xe8, 0x89, 0xd4, 0xfb, 0xb9, 0x99, 0x5f, 0xe0, 0x40, + 0x12, 0x74, 0x63, 0x29, 0x65, 0x37, 0xc9, 0xae, 0x9f, 0xff, 0xfb, 0x49, + 0xe9, 0x5e, 0x5b, 0x6c, 0x52, 0x7d, 0xff, 0xbd, 0x7a, 0x2a, 0xfd, 0xfd, + 0xec, 0xfa, 0x5f, 0xff, 0xff, 0xe5, 0xa5, 0x73, 0xda, 0x5b, 0x67, 0x95, + 0x5f, 0x54, 0x64, 0x43, 0x1c, 0x8c, 0x94, 0x2b, 0x08, 0x24, 0xac, 0x40, + 0x1c, 0x3c, 0x35, 0x1c, 0x79, 0x81, 0x38, 0x03, 0xa9, 0x82, 0xce, 0x04, + 0x99, 0x81, 0x72, 0x55, 0x19, 0xbf, 0x3c, 0x0b, 0xe1, 0x86, 0x10, 0x09, + 0x71, 0x84, 0xfa, 0x4a, 0x49, 0x94, 0x2a, 0x6e, 0x91, 0x8d, 0xb6, 0x7b, + 0x49, 0xfc, 0x17, 0xa0, 0x11, 0x8e, 0x08, 0x41, 0x81, 0x84, 0xc8, 0x08, + 0xb0, 0xb0, 0x49, 0xa6, 0x96, 0xa8, 0x54, 0x46, 0x18, 0x90, 0x10, 0xa6, + 0x06, 0x98, 0x15, 0x26, 0xe0, 0xc9, 0xab, 0x6e, 0x61, 0xd3, 0x88, 0xb1, + 0x18, 0xa8, 0x94, 0xa9, 0x24, 0xb2, 0x56, 0xdc, 0x30, 0x50, 0x1d, 0xac, + 0x39, 0xea, 0x3a, 0x01, 0x08, 0xab, 0x52, 0xc1, 0x45, 0xe0, 0xf6, 0x32, + 0xaa, 0x0c, 0xca, 0x34, 0xb6, 0x5b, 0x3b, 0x67, 0x4e, 0xb7, 0x11, 0x8f, + 0xac, 0x79, 0x54, 0x55, 0xb8, 0xb5, 0xa7, 0x12, 0x9d, 0xfc, 0x66, 0xaf, + 0x6c, 0x6e, 0x65, 0xb9, 0xc0, 0xad, 0x2e, 0x96, 0x43, 0x10, 0x7f, 0x9a, + 0xea, 0xbd, 0x42, 0xb4, 0x75, 0x31, 0x28, 0x52, 0xa8, 0xf8, 0x2a, 0x8b, + 0x9c, 0xae, 0x0a, 0x07, 0xa9, 0xa7, 0x09, 0xcb, 0x7b, 0x64, 0x8a, 0xf7, + 0xec, 0x6e, 0x78, 0x52, 0xc5, 0x4a, 0xa3, 0x96, 0x62, 0xb9, 0x44, 0x4b, + 0x9c, 0x8b, 0xa4, 0x89, 0xf0, 0xaa, 0x9a, 0xe9, 0xfb, 0xbe, 0xa1, 0xdc, + 0xa3, 0x29, 0xd5, 0x29, 0x24, 0xa3, 0xf7, 0x3a, 0x22, 0x5d, 0xb0, 0x35, + 0xa9, 0x10, 0x95, 0xd1, 0x9e, 0x5f, 0x54, 0xc7, 0x3a, 0xe9, 0x27, 0x1e, + 0x48, 0x28, 0x52, 0x3a, 0x33, 0x11, 0xa4, 0xbc, 0xfd, 0xe3, 0x52, 0x89, + 0x10, 0xe6, 0xa5, 0x6b, 0x61, 0x2c, 0x4b, 0x25, 0xe5, 0xcd, 0xb1, 0x48, + 0xa7, 0x5d, 0x30, 0xab, 0x17, 0x13, 0x21, 0xb2, 0xc1, 0x4f, 0x3e, 0x7c, + 0x9a, 0x7a, 0xf5, 0x20, 0xa5, 0x62, 0x43, 0x97, 0x4a, 0xf3, 0xfd, 0xaa, + 0x1b, 0x1c, 0x64, 0xf1, 0xfc, 0xaf, 0x8e, 0xb9, 0x56, 0xb2, 0x3c, 0x8a, + 0xe0, 0xad, 0x4f, 0xd6, 0x26, 0xd2, 0x47, 0x71, 0xe5, 0x0a, 0x2a, 0x10, + 0xad, 0x52, 0x98, 0x6a, 0x44, 0xe1, 0x34, 0x56, 0x37, 0x30, 0x2f, 0x5c, + 0xbd, 0x0b, 0x6a, 0x99, 0x25, 0x93, 0x7d, 0x84, 0xae, 0x2f, 0x12, 0x00, + 0x78, 0xe2, 0xb1, 0xc7, 0x41, 0x68, 0xe9, 0x18, 0x9b, 0x21, 0x90, 0x23, + 0x2b, 0x23, 0x2a, 0xc8, 0xbb, 0x70, 0x78, 0xa5, 0x6f, 0x19, 0xae, 0xdd, + 0xeb, 0xd2, 0xcf, 0xbf, 0xd2, 0x94, 0xbe, 0xcb, 0xee, 0xaf, 0xbb, 0x27, + 0x46, 0x4b, 0x53, 0x3e, 0xff, 0x45, 0x96, 0xff, 0xd5, 0x74, 0xdd, 0x15, + 0x17, 0x66, 0xbc, 0x9d, 0xaa, 0xed, 0x99, 0x7a, 0x3a, 0x4d, 0xae, 0xda, + 0x1e, 0xb3, 0xec, 0xe5, 0x1d, 0x54, 0x70, 0x20, 0x30, 0xcc, 0xae, 0x42, + 0x0a, 0x1c, 0x12, 0x03, 0x0e, 0x1c, 0x08, 0x20, 0xa3, 0x14, 0xc0, 0x2a, + 0x30, 0x01, 0x00, 0x37, 0x30, 0x24, 0xc1, 0x5d, 0x30, 0x13, 0xc5, 0x30, + 0x35, 0x5b, 0x01, 0x1d, 0x30, 0x0f, 0x40, 0x61, 0x30, 0x7c, 0x00, 0xaa, + 0x05, 0x44, 0xda, 0x62, 0xcd, 0x07, 0x94, 0x7c, 0xba, 0x1b, 0xfe, 0x63, + 0x3b, 0x8b, 0xe2, 0x60, 0xb1, 0x03, 0x1a, 0x60, 0x86, 0x82, 0x06, 0x65, + 0x1e, 0x19, 0xb6, 0x61, 0x69, 0x80, 0x44, 0x44, 0x09, 0x69, 0xe7, 0x02, + 0x6c, 0x84, 0x1a, 0x11, 0x25, 0xba, 0x31, 0x08, 0x8b, 0x8a, 0x80, 0x67, + 0x2e, 0x40, 0xe1, 0xa5, 0xd2, 0xa6, 0x4a, 0x17, 0xc8, 0xa0, 0xab, 0x76, + 0x5d, 0xee, 0xcb, 0x39, 0x69, 0xae, 0xeb, 0x44, 0x8e, 0x42, 0x68, 0xa4, + 0x8f, 0xdd, 0x15, 0x3b, 0x93, 0x10, 0x96, 0xc6, 0x70, 0x8b, 0x76, 0xb4, + 0xbe, 0xbe, 0x31, 0x79, 0x4c, 0xce, 0x34, 0xb3, 0x31, 0xb9, 0x2b, 0xfc, + 0x20, 0x1c, 0x19, 0x2e, 0x33, 0x3f, 0x8e, 0xaa, 0x93, 0x91, 0x49, 0x67, + 0xa1, 0xee, 0x1b, 0x9d, 0x92, 0x1d, 0x38, 0xb2, 0xc2, 0x59, 0x6a, 0xec, + 0x55, 0x85, 0xc9, 0x49, 0x47, 0xff, 0xfb, 0xd4, 0x60, 0x4a, 0x8f, 0xd7, + 0xf3, 0x70, 0x40, 0x03, 0xfa, 0x63, 0x70, 0x4d, 0x8e, 0x08, 0x52, 0x2c, + 0x42, 0x6e, 0x21, 0xd9, 0xc0, 0xfe, 0x0f, 0xe5, 0xed, 0xc1, 0x28, 0xb8, + 0x21, 0x44, 0xb0, 0x89, 0xb8, 0x06, 0xc5, 0x85, 0x91, 0xa6, 0x7c, 0xed, + 0xc5, 0xed, 0x9b, 0x2e, 0x62, 0x15, 0xe6, 0x56, 0x3f, 0x71, 0x5d, 0x4b, + 0x66, 0x4b, 0xcf, 0x9d, 0x64, 0xac, 0xb8, 0x97, 0x73, 0xfb, 0xb0, 0xc3, + 0x24, 0x5d, 0x5f, 0xaa, 0xdf, 0x5a, 0xe9, 0xd4, 0x71, 0x98, 0xcb, 0xeb, + 0xaf, 0x19, 0xe1, 0x95, 0x5f, 0xa3, 0x8e, 0xbe, 0x8d, 0x8d, 0x4e, 0x8b, + 0x8e, 0x28, 0x70, 0xb7, 0x50, 0xa6, 0x38, 0x28, 0xe3, 0x31, 0x40, 0x7d, + 0x67, 0xd7, 0xd5, 0x52, 0x74, 0x4d, 0x23, 0xb7, 0xe6, 0x2f, 0x2e, 0xdb, + 0x8e, 0x19, 0x3a, 0x56, 0xe1, 0xf7, 0x1f, 0xb4, 0xf9, 0x21, 0x08, 0xe9, + 0x75, 0x38, 0xe6, 0xab, 0x46, 0xb1, 0x24, 0x27, 0x3f, 0x43, 0x6c, 0xbc, + 0x9d, 0x06, 0xa3, 0x20, 0x00, 0x2c, 0x6b, 0xe2, 0x4f, 0x9c, 0xa7, 0xb5, + 0x6a, 0x77, 0xef, 0x4e, 0xce, 0xdd, 0xb6, 0xdd, 0x91, 0xe8, 0xf5, 0x3a, + 0xd8, 0xe8, 0x66, 0x12, 0x7b, 0x91, 0x59, 0xdd, 0xf4, 0xff, 0xd3, 0xd6, + 0xbf, 0xef, 0x5a, 0x7f, 0xff, 0xfe, 0x8a, 0x9d, 0x3e, 0xad, 0xfd, 0x52, + 0xbf, 0x47, 0xbb, 0x7f, 0xab, 0x7f, 0xee, 0x9f, 0x76, 0x69, 0x11, 0x54, + 0xb2, 0xce, 0xe7, 0x33, 0xa9, 0x13, 0x45, 0x40, 0x15, 0x28, 0xca, 0xa2, + 0x0a, 0x7c, 0xc0, 0xc3, 0x09, 0x71, 0x47, 0x04, 0x60, 0x03, 0x80, 0x2c, + 0x60, 0x48, 0x84, 0xd2, 0x60, 0x0a, 0x9c, 0x48, 0x68, 0xe4, 0x06, 0xd6, + 0x60, 0x78, 0x01, 0x16, 0x60, 0xa6, 0x8d, 0xf4, 0x63, 0xc5, 0x95, 0x16, + 0x62, 0x08, 0x8d, 0x78, 0x7e, 0x88, 0xb2, 0xc2, 0x63, 0x84, 0x0a, 0x08, + 0x61, 0x8f, 0x83, 0xd0, 0x60, 0x8c, 0x02, 0x14, 0x63, 0xc4, 0xaa, 0x18, + 0x60, 0x9e, 0x01, 0x4c, 0x2c, 0x00, 0xf9, 0xd1, 0x01, 0xde, 0xc1, 0xa0, + 0x81, 0x80, 0xc9, 0x58, 0x46, 0x70, 0x2a, 0x32, 0xa2, 0xed, 0x75, 0x66, + 0xa7, 0x43, 0x75, 0x82, 0x61, 0xa1, 0xa4, 0xea, 0x37, 0x07, 0x79, 0xf3, + 0x87, 0xa6, 0x1e, 0x96, 0xce, 0xd2, 0x23, 0xcd, 0xf3, 0xfb, 0x0c, 0x49, + 0xde, 0x67, 0x56, 0x0a, 0x7d, 0xb1, 0x75, 0xa1, 0x71, 0xb8, 0x5b, 0xf3, + 0x25, 0xa9, 0xd9, 0x6c, 0x5a, 0xa7, 0x66, 0x6d, 0x3e, 0xf1, 0x30, 0x9d, + 0x72, 0x52, 0xad, 0x47, 0x8c, 0x7d, 0x34, 0xd6, 0x02, 0x9e, 0xa7, 0x3a, + 0xf3, 0x53, 0x9a, 0x55, 0x9e, 0x45, 0x2b, 0x2e, 0x1c, 0xd5, 0xca, 0xe3, + 0xaa, 0x8f, 0x98, 0x15, 0x2f, 0x62, 0xbc, 0x44, 0x6b, 0x72, 0x2b, 0x9c, + 0x0d, 0x1c, 0x69, 0x55, 0x2b, 0x1a, 0xc3, 0xf5, 0x62, 0xf1, 0xca, 0xb3, + 0x33, 0xba, 0xb2, 0x32, 0x28, 0x9e, 0x37, 0x44, 0x6d, 0x66, 0x54, 0x45, + 0x53, 0x6d, 0x5e, 0xb8, 0x96, 0x2b, 0x03, 0xc5, 0x6e, 0x62, 0x36, 0xa4, + 0x14, 0xcf, 0x9b, 0xd8, 0xd7, 0x2d, 0xf6, 0x6c, 0x82, 0xd6, 0xc8, 0xed, + 0xbe, 0x1c, 0x67, 0x04, 0x6c, 0x47, 0x8a, 0xd6, 0xbd, 0x42, 0xba, 0xe2, + 0xee, 0xad, 0xb6, 0x76, 0x28, 0x70, 0x1e, 0x77, 0x36, 0xe6, 0xb9, 0x3d, + 0xe4, 0x6c, 0xb3, 0x7c, 0x4a, 0x2b, 0x65, 0xa3, 0x2a, 0xb9, 0xeb, 0x63, + 0x5b, 0x9a, 0xab, 0xc1, 0x64, 0x7f, 0x5d, 0xa8, 0x9d, 0xac, 0x9d, 0x28, + 0x7a, 0x79, 0x89, 0x70, 0xae, 0x73, 0xb3, 0x59, 0x42, 0xad, 0x2e, 0x82, + 0xd4, 0xdd, 0x3b, 0x81, 0xc9, 0xd7, 0xdf, 0xd4, 0x9d, 0xdf, 0x6e, 0x8c, + 0x22, 0xb3, 0x3c, 0xbb, 0x6e, 0x38, 0x4e, 0x87, 0x2d, 0x31, 0xe5, 0x26, + 0x64, 0x04, 0x72, 0x68, 0xd3, 0x7b, 0x26, 0xb5, 0xd6, 0xde, 0xfd, 0x6d, + 0x4d, 0xdb, 0xf9, 0x9d, 0x97, 0xff, 0x74, 0xff, 0x5d, 0xb7, 0xfd, 0x2f, + 0xe9, 0xd1, 0xfb, 0x75, 0xfa, 0x7f, 0xfd, 0xd7, 0xf4, 0xba, 0x3e, 0xac, + 0x94, 0x45, 0x23, 0x5d, 0x8c, 0x71, 0x43, 0xb9, 0xce, 0xc2, 0xc4, 0x20, + 0x41, 0x83, 0xa9, 0x04, 0x96, 0x30, 0x14, 0xc0, 0xc8, 0x30, 0x04, 0x43, + 0xf3, 0x30, 0x5c, 0xd6, 0xb2, 0x31, 0xdc, 0x05, 0xa7, 0x30, 0x65, 0x82, + 0x56, 0x30, 0x9f, 0x45, 0xed, 0x35, 0x64, 0xca, 0xe4, 0x30, 0x11, 0xcf, + 0xf7, 0x3b, 0x6c, 0xba, 0x64, 0x31, 0x49, 0xc1, 0xcd, 0x31, 0x4f, 0x02, + 0x99, 0x30, 0x33, 0xc1, 0x3f, 0x31, 0x60, 0xd7, 0xf7, 0x30, 0xc2, 0x81, + 0x43, 0x01, 0x00, 0x54, 0x75, 0x04, 0x84, 0x22, 0x31, 0x01, 0x4c, 0x5b, + 0xb3, 0x02, 0x64, 0xcf, 0x0b, 0x4d, 0x24, 0x38, 0x8f, 0x05, 0x0e, 0x28, + 0x4c, 0x65, 0x61, 0xd4, 0x19, 0x0e, 0x60, 0x80, 0x4f, 0xb3, 0x9d, 0x69, + 0xab, 0x35, 0xb7, 0x41, 0x4b, 0xa6, 0x60, 0x88, 0x72, 0x19, 0x7c, 0x5e, + 0x46, 0xc8, 0xeb, 0x3c, 0xaf, 0x43, 0x4c, 0x71, 0xa0, 0x58, 0xa4, 0x22, + 0xd3, 0x71, 0x58, 0xf0, 0xf5, 0xd7, 0xde, 0x76, 0x95, 0xea, 0xab, 0x2d, + 0x73, 0x11, 0x66, 0x59, 0xd8, 0xa8, 0x2e, 0xd3, 0xa9, 0xe7, 0x4e, 0xa6, + 0x9c, 0x4e, 0xb4, 0x94, 0xc6, 0x3a, 0x1c, 0xca, 0x72, 0x38, 0x2b, 0xd0, + 0x84, 0x6c, 0x75, 0xcb, 0xc7, 0x23, 0x84, 0xe9, 0x65, 0x3f, 0xd5, 0xb3, + 0x2d, 0xa8, 0x55, 0xce, 0x8e, 0xa3, 0x91, 0x70, 0x93, 0x52, 0x37, 0x2d, + 0xdd, 0xc2, 0x1a, 0x71, 0xea, 0xcb, 0x01, 0xda, 0x90, 0x89, 0x1d, 0x3c, + 0xce, 0xcf, 0x1d, 0xeb, 0x63, 0x03, 0xa3, 0x4d, 0x24, 0xae, 0x5b, 0x73, + 0x9d, 0xb8, 0xf7, 0x61, 0x33, 0xff, 0xfb, 0xd4, 0x60, 0x66, 0x0f, 0xc9, + 0x2a, 0x70, 0x3e, 0x83, 0xfa, 0x7b, 0x70, 0x56, 0x6e, 0x08, 0x53, 0x20, + 0x42, 0x6e, 0x23, 0xe9, 0xc0, 0xfa, 0x0f, 0xe5, 0xed, 0xc1, 0x68, 0xb8, + 0x21, 0x04, 0xb1, 0x95, 0xb8, 0xd3, 0x6b, 0xb6, 0x35, 0x5b, 0x92, 0x0c, + 0xdd, 0xa2, 0xa5, 0x9e, 0x75, 0x1b, 0xb6, 0x27, 0x16, 0xc7, 0x39, 0x21, + 0x68, 0xea, 0xc6, 0xe3, 0x39, 0xab, 0x15, 0xa8, 0xa8, 0x2a, 0x96, 0x17, + 0xa8, 0xe8, 0x08, 0x5a, 0x3e, 0x2d, 0x60, 0xda, 0x3c, 0x75, 0x53, 0x0b, + 0x8a, 0xa5, 0x58, 0xdb, 0x74, 0xe3, 0xe7, 0x29, 0xa2, 0x2b, 0x5f, 0xaa, + 0x54, 0x8b, 0xa7, 0x16, 0x3c, 0x38, 0x28, 0x9b, 0x14, 0x89, 0xcd, 0x42, + 0x88, 0x87, 0x35, 0x61, 0x0c, 0x27, 0x88, 0xd4, 0x4a, 0x94, 0xd6, 0x2d, + 0xec, 0x2b, 0x95, 0x51, 0xfc, 0x70, 0x9d, 0x41, 0x29, 0x37, 0xcb, 0x90, + 0x90, 0x00, 0x08, 0x13, 0xd6, 0x5a, 0x6e, 0x2c, 0x7a, 0xca, 0x96, 0xbe, + 0x5d, 0xb7, 0x93, 0x7a, 0xe9, 0x39, 0xd8, 0x04, 0x21, 0x51, 0xc2, 0x99, + 0x4a, 0x18, 0x5a, 0x03, 0x61, 0xce, 0x04, 0x08, 0x53, 0x8e, 0x8e, 0xb4, + 0x49, 0x9b, 0x66, 0x5f, 0x36, 0x8d, 0xaf, 0xaf, 0xd1, 0x99, 0xf6, 0xa2, + 0x7b, 0x7b, 0xea, 0xee, 0xdf, 0xb3, 0xaf, 0xd3, 0xfb, 0xfa, 0xde, 0x6d, + 0xbf, 0xef, 0x6e, 0xde, 0x95, 0xad, 0xd0, 0xd4, 0x43, 0xf5, 0xcc, 0xaf, + 0x73, 0x2a, 0x3b, 0x22, 0x0c, 0x02, 0x08, 0x73, 0x1c, 0xe5, 0x38, 0xc3, + 0x31, 0x80, 0xc2, 0x05, 0x71, 0x81, 0x74, 0x1f, 0x89, 0x85, 0x5a, 0xa6, + 0x51, 0x9c, 0xae, 0x24, 0x09, 0x82, 0xea, 0x04, 0xb1, 0x84, 0xcc, 0x2a, + 0x39, 0xa5, 0xc0, 0x32, 0x21, 0x8b, 0x3c, 0x70, 0x71, 0xb8, 0x81, 0xd4, + 0x69, 0x8b, 0x86, 0x15, 0xe9, 0x88, 0x46, 0x05, 0x01, 0x81, 0x94, 0x07, + 0x11, 0x92, 0x08, 0x64, 0x71, 0x89, 0xba, 0x08, 0x30, 0x38, 0x24, 0x50, + 0x0a, 0x86, 0x64, 0xe0, 0xd5, 0xcb, 0x92, 0x2a, 0x59, 0xa0, 0x3a, 0x38, + 0xc0, 0x28, 0xe2, 0x98, 0x90, 0x23, 0xfb, 0x17, 0x76, 0xd3, 0x15, 0x7e, + 0xb6, 0x55, 0x4a, 0xed, 0xb5, 0xd8, 0x79, 0x63, 0xb7, 0x05, 0x78, 0xed, + 0x3d, 0x71, 0x98, 0xdd, 0x67, 0x46, 0x51, 0x00, 0xbb, 0x8e, 0xc4, 0x0d, + 0x0c, 0x43, 0x70, 0xd4, 0x51, 0xa8, 0x32, 0x86, 0xf9, 0xe4, 0xa3, 0x8b, + 0x69, 0xd6, 0x85, 0x43, 0x8c, 0x49, 0x15, 0xf4, 0x6b, 0xa6, 0x14, 0x39, + 0x16, 0xc0, 0xd3, 0x19, 0x48, 0xa3, 0x59, 0x56, 0x35, 0xa5, 0x0f, 0x85, + 0x6e, 0x95, 0x6c, 0x26, 0xeb, 0x1a, 0x51, 0x24, 0xbf, 0x0d, 0x4f, 0x5c, + 0xab, 0xd5, 0xcf, 0x59, 0x19, 0xe5, 0x52, 0xc6, 0x7a, 0x8d, 0x52, 0x39, + 0xa4, 0x90, 0xf7, 0x8d, 0x7a, 0x52, 0xb0, 0x25, 0x19, 0x1e, 0x42, 0x67, + 0x6b, 0xba, 0xe1, 0x0e, 0x76, 0x60, 0xe1, 0x0e, 0x72, 0x51, 0xa3, 0x56, + 0xd8, 0x5a, 0x10, 0xf6, 0x02, 0xf5, 0x15, 0x7d, 0x95, 0x99, 0x52, 0xfe, + 0x1b, 0x92, 0x1a, 0x87, 0xa5, 0x58, 0xa5, 0x66, 0x86, 0x9e, 0x4c, 0xbd, + 0x77, 0x68, 0xcb, 0x83, 0x94, 0xfe, 0x50, 0xaf, 0x61, 0xe9, 0xc0, 0xc7, + 0x76, 0x46, 0x26, 0x86, 0x46, 0x28, 0x0c, 0x0a, 0x95, 0xdc, 0x5d, 0x49, + 0x69, 0x53, 0x8d, 0x6b, 0x2a, 0xe4, 0x73, 0x9c, 0x87, 0x0b, 0x3a, 0xbd, + 0x70, 0x90, 0x5e, 0x65, 0xa2, 0x16, 0xb9, 0x8f, 0xa6, 0x33, 0x84, 0xbb, + 0x6d, 0x08, 0x6f, 0x76, 0x7e, 0x9c, 0xe7, 0x52, 0xe3, 0x07, 0x19, 0x84, + 0xca, 0x3d, 0x6d, 0x44, 0xe5, 0x22, 0x99, 0x8a, 0x7c, 0x92, 0xb1, 0xa5, + 0x20, 0x01, 0x96, 0x4c, 0x5d, 0x34, 0xf3, 0xf6, 0x1e, 0x77, 0xb9, 0xe4, + 0x31, 0x7f, 0xa5, 0xac, 0xa3, 0xd4, 0x4b, 0xc4, 0x22, 0x85, 0xff, 0x3f, + 0xb9, 0x99, 0xcb, 0xcf, 0x23, 0x5d, 0xa7, 0xff, 0xde, 0xbd, 0x9b, 0x54, + 0x5e, 0xf5, 0xcf, 0xfd, 0xd9, 0x89, 0xd7, 0x6f, 0x6e, 0x53, 0xab, 0xa2, + 0x5f, 0xef, 0xf7, 0xb3, 0x1a, 0xef, 0xd6, 0xab, 0x64, 0x74, 0xf6, 0x5d, + 0xec, 0x6a, 0x22, 0x3b, 0x59, 0xa9, 0xb2, 0x9a, 0xa5, 0x12, 0x52, 0x44, + 0x06, 0x0c, 0x61, 0x27, 0x15, 0x73, 0x38, 0xd1, 0xa2, 0xa3, 0x84, 0x14, + 0x3c, 0x2c, 0x51, 0x80, 0xe2, 0xc6, 0x40, 0x0c, 0x04, 0xf0, 0x17, 0x8c, + 0x0c, 0x60, 0xe2, 0x4c, 0x1e, 0xb3, 0x83, 0x0d, 0x87, 0x30, 0xc6, 0x4c, + 0x29, 0xb0, 0x88, 0x4c, 0x09, 0x91, 0xbd, 0x0c, 0xa4, 0x42, 0x3e, 0xcc, + 0x21, 0x30, 0x26, 0xcf, 0x3f, 0xda, 0x5d, 0x0c, 0x2c, 0x30, 0x5d, 0x0c, + 0x0f, 0x70, 0x9e, 0x8c, 0x00, 0x40, 0x4c, 0x8c, 0x9a, 0x11, 0x44, 0x8c, + 0x47, 0xe0, 0x22, 0x8c, 0x0d, 0x30, 0x05, 0x41, 0x7f, 0x40, 0x62, 0xc1, + 0x4f, 0x0c, 0x71, 0xa3, 0x06, 0x74, 0x78, 0xa3, 0x33, 0x6c, 0x50, 0x4a, + 0xaa, 0x2e, 0xa6, 0x23, 0x12, 0x93, 0x25, 0xd3, 0x63, 0x76, 0xa1, 0xe6, + 0x2e, 0x9a, 0x8b, 0xa6, 0x23, 0x46, 0x81, 0xcb, 0xd1, 0xd5, 0x76, 0x57, + 0xcb, 0xef, 0x06, 0x51, 0xb2, 0xb7, 0x22, 0x26, 0xbf, 0x21, 0x6f, 0xd4, + 0x03, 0x85, 0x05, 0x58, 0xcb, 0xbe, 0xe8, 0xd5, 0x84, 0x38, 0xf5, 0x24, + 0x2e, 0x6a, 0x98, 0xec, 0x3a, 0x8c, 0xb0, 0xfc, 0xbe, 0x4c, 0x82, 0x87, + 0x3b, 0xd5, 0x42, 0x39, 0x82, 0x32, 0x12, 0x98, 0x57, 0x31, 0x36, 0x1f, + 0x6a, 0xb7, 0x18, 0x88, 0x9c, 0x40, 0x5c, 0x2a, 0x15, 0xeb, 0xa5, 0x4a, + 0xb4, 0xdb, 0x49, 0x2d, 0xc3, 0x4f, 0xa5, 0x94, 0x91, 0x11, 0x4c, 0x0f, + 0x8e, 0xa5, 0x2a, 0xb5, 0xa1, 0xff, 0xfb, 0xd4, 0x60, 0x59, 0x8d, 0xd9, + 0x10, 0x70, 0x3e, 0x8b, 0xfa, 0x7b, 0x70, 0x53, 0x4e, 0x08, 0x41, 0x2c, + 0x42, 0x6e, 0x24, 0xd5, 0xc0, 0xfa, 0x4f, 0xed, 0xed, 0xc1, 0x7a, 0x38, + 0x20, 0xc0, 0x61, 0x15, 0xb8, 0xa9, 0xa2, 0x45, 0x62, 0x14, 0xdd, 0x56, + 0xa5, 0x4b, 0x9c, 0x63, 0xf1, 0x52, 0x87, 0x6e, 0x2c, 0x73, 0xdb, 0x2a, + 0x85, 0x7a, 0x21, 0x72, 0xf5, 0xfd, 0x97, 0x11, 0x54, 0x6e, 0x6b, 0x4b, + 0xa6, 0x35, 0x0a, 0x92, 0x47, 0x37, 0x87, 0x59, 0xca, 0xa7, 0x55, 0x39, + 0xbb, 0x55, 0x3c, 0x5a, 0x6d, 0x6e, 0x5b, 0x71, 0x96, 0x02, 0xe1, 0x4b, + 0x0d, 0x23, 0x11, 0x48, 0x72, 0x27, 0x1b, 0x9b, 0xd8, 0x9b, 0x55, 0xda, + 0x62, 0x72, 0xcb, 0x57, 0xc2, 0x1e, 0xde, 0xbb, 0xbb, 0x12, 0x9d, 0x55, + 0x11, 0xec, 0xac, 0xcb, 0x95, 0xda, 0x12, 0xed, 0x8d, 0x12, 0xc4, 0x66, + 0x92, 0x86, 0x04, 0x42, 0x60, 0xfd, 0x59, 0x7a, 0xb0, 0x60, 0xc1, 0x35, + 0x0e, 0x73, 0x88, 0xf0, 0x2e, 0x22, 0xc6, 0xa0, 0x70, 0x04, 0xb3, 0x49, + 0xbd, 0x7b, 0xdb, 0x2e, 0x46, 0x69, 0xe5, 0x2a, 0xfd, 0x28, 0x0d, 0xb4, + 0xdd, 0x76, 0x77, 0xbc, 0xaa, 0xac, 0x8f, 0x4f, 0x44, 0x2c, 0xd3, 0x2b, + 0xe9, 0xd1, 0xb4, 0xd5, 0xfb, 0x93, 0xfb, 0xbd, 0xae, 0xbc, 0xf3, 0x65, + 0xae, 0xe8, 0xea, 0xd6, 0xd5, 0x3f, 0x75, 0xad, 0xd3, 0xea, 0xca, 0xae, + 0xb2, 0x75, 0xbd, 0xbc, 0xeb, 0xdf, 0xfa, 0xf4, 0xaf, 0x6d, 0x99, 0xb3, + 0xe5, 0x29, 0xd9, 0x98, 0x43, 0x2a, 0x15, 0x4e, 0xb2, 0x31, 0x0c, 0x53, + 0x9c, 0xc4, 0x0a, 0x28, 0x18, 0x90, 0x62, 0xe9, 0x43, 0x01, 0xcc, 0x03, + 0x43, 0x03, 0x50, 0x2c, 0x53, 0x04, 0xb4, 0x21, 0x23, 0x69, 0xac, 0x02, + 0x83, 0x02, 0x44, 0x0a, 0x93, 0x03, 0xdc, 0x2f, 0x33, 0x59, 0x0c, 0x4d, + 0xe3, 0x0e, 0xb4, 0x75, 0x93, 0x48, 0x20, 0xb2, 0x13, 0x14, 0x74, 0x24, + 0x93, 0x11, 0xf0, 0x18, 0x93, 0x09, 0x14, 0x12, 0x13, 0x01, 0xd8, 0xfc, + 0xf3, 0x03, 0xb4, 0x0d, 0x73, 0x03, 0x08, 0x06, 0x23, 0x85, 0x0d, 0x33, + 0x40, 0x03, 0x0d, 0x0b, 0x21, 0x01, 0x52, 0x87, 0xfd, 0xfc, 0x45, 0x08, + 0xcb, 0xbb, 0x2f, 0x69, 0x4b, 0xe5, 0xb8, 0x4c, 0x30, 0x24, 0x5b, 0x6b, + 0x6e, 0x49, 0x74, 0x56, 0x44, 0x30, 0xb6, 0x90, 0x48, 0x88, 0x4a, 0xd8, + 0xad, 0xee, 0xb3, 0xa4, 0xf0, 0xc6, 0x19, 0xf4, 0x75, 0xf5, 0x58, 0xeb, + 0xd9, 0xe2, 0xb6, 0xc9, 0x13, 0x8a, 0x62, 0x5e, 0xfc, 0xba, 0x4d, 0x25, + 0xe4, 0x80, 0x5d, 0x15, 0x62, 0x4e, 0x2e, 0x09, 0x36, 0x58, 0x90, 0x28, + 0x26, 0x75, 0x3a, 0xe4, 0xee, 0x5d, 0x69, 0xdb, 0xe7, 0x4c, 0x87, 0x29, + 0x88, 0xba, 0x52, 0x43, 0x80, 0x88, 0x5a, 0x8e, 0xa5, 0x88, 0x5e, 0x54, + 0x2e, 0xcf, 0x38, 0x6b, 0xf0, 0x56, 0x1e, 0x1c, 0x87, 0x5c, 0x25, 0x42, + 0x14, 0xd2, 0xd8, 0xab, 0x49, 0x2a, 0x13, 0xfd, 0x4e, 0xfe, 0xcc, 0x47, + 0xa5, 0x66, 0xc2, 0x25, 0x91, 0x08, 0x74, 0x74, 0x9a, 0x11, 0x93, 0x6b, + 0xf2, 0xdd, 0x0a, 0x73, 0xa4, 0x55, 0x44, 0x4a, 0xa3, 0x1d, 0xa1, 0x4c, + 0xca, 0x74, 0xf2, 0x68, 0xd0, 0x60, 0x76, 0xf2, 0x14, 0x24, 0x8a, 0x79, + 0x82, 0x58, 0x0b, 0xec, 0x45, 0xb1, 0x5c, 0xdd, 0x15, 0xcd, 0xb1, 0x0e, + 0x50, 0xac, 0xc3, 0x7a, 0xa6, 0x44, 0xa9, 0xd3, 0x08, 0x52, 0x75, 0x90, + 0xeb, 0x5e, 0x43, 0x1c, 0x4d, 0x37, 0x4d, 0xab, 0xb5, 0xca, 0x2d, 0xc9, + 0x26, 0xc7, 0x12, 0x1c, 0xcc, 0x2a, 0x6b, 0xba, 0x5b, 0x57, 0xab, 0x30, + 0xd4, 0xcc, 0x7f, 0xb4, 0x1f, 0x4a, 0xfa, 0x1e, 0xc7, 0x54, 0x25, 0x69, + 0x2a, 0x47, 0x13, 0xf2, 0xbc, 0xdc, 0x4f, 0x33, 0x1b, 0xc9, 0xd6, 0xd4, + 0xc9, 0xbb, 0x14, 0xc4, 0x30, 0xe2, 0x84, 0x46, 0x78, 0x87, 0x92, 0x38, + 0xf7, 0x23, 0xd2, 0xee, 0xc5, 0x23, 0xa1, 0xab, 0x64, 0x4a, 0x15, 0x6d, + 0xa1, 0xd9, 0xbe, 0x9e, 0xbb, 0x6b, 0xbf, 0xb5, 0x33, 0xd5, 0x59, 0x8b, + 0xa1, 0xd9, 0xa8, 0xf4, 0x4a, 0xdd, 0xee, 0x52, 0x52, 0xb4, 0xa5, 0x59, + 0xd9, 0xea, 0xd5, 0x95, 0xf7, 0x23, 0x2d, 0x6f, 0x4d, 0xe7, 0xa9, 0xba, + 0xdc, 0xed, 0x64, 0x55, 0x36, 0xb7, 0x23, 0xbf, 0xbe, 0xd6, 0xea, 0xf2, + 0xb9, 0x84, 0x58, 0x6d, 0xd5, 0x95, 0x43, 0xec, 0xdc, 0x48, 0xc0, 0x54, + 0x0b, 0x10, 0x23, 0x14, 0x58, 0x61, 0x4c, 0x2a, 0x1d, 0x0f, 0x88, 0x00, + 0xf5, 0x61, 0x00, 0x02, 0x80, 0x31, 0x8c, 0x0d, 0xe0, 0x7e, 0x4c, 0x17, + 0x43, 0x1f, 0x4d, 0x89, 0xb0, 0xf8, 0x0c, 0x18, 0x10, 0x2c, 0x8c, 0x22, + 0xe1, 0xdd, 0xcc, 0xd9, 0x22, 0xd1, 0x8c, 0x1f, 0x60, 0x72, 0xcc, 0x57, + 0xb1, 0x29, 0x4c, 0x03, 0xf0, 0x36, 0x8c, 0x0b, 0x50, 0x0d, 0xcc, 0x18, + 0x20, 0x70, 0x8c, 0x89, 0x24, 0xe7, 0x0c, 0x08, 0x80, 0x30, 0x8c, 0x07, + 0xe0, 0x17, 0xcd, 0xbf, 0x15, 0x9d, 0xc5, 0x47, 0xd7, 0x45, 0x1a, 0x56, + 0xfb, 0x21, 0x82, 0x97, 0xf4, 0xa9, 0xd9, 0x77, 0x97, 0x63, 0x28, 0x68, + 0xce, 0x63, 0x89, 0x0f, 0x2f, 0xa6, 0x74, 0x84, 0xf4, 0x57, 0x66, 0xa8, + 0x8e, 0x9d, 0x48, 0xa4, 0xd8, 0x53, 0x52, 0x1e, 0x8a, 0x25, 0xc3, 0x32, + 0x55, 0xf4, 0x0d, 0xc2, 0xf4, 0x51, 0xd2, 0x5d, 0x6f, 0x3b, 0xf4, 0xc3, + 0x5b, 0xb3, 0x0e, 0x5f, 0x6d, 0xc9, 0xb8, 0x32, 0x94, 0x92, 0x81, 0x88, + 0xb1, 0x8f, 0xb3, 0xc4, 0x9f, 0x24, 0x94, 0x4f, 0x53, 0xd3, 0x1b, 0x96, + 0x52, 0xb1, 0x9f, 0xa8, 0x95, 0xff, 0xfb, 0xd4, 0x60, 0x4a, 0x0d, 0xd9, + 0x61, 0x70, 0x3e, 0x13, 0xf9, 0x7b, 0x70, 0x58, 0x8e, 0x08, 0x31, 0x0c, + 0x65, 0x6e, 0x25, 0xf5, 0xc0, 0xf6, 0x2f, 0xe1, 0xed, 0xc1, 0x3c, 0xb7, + 0x21, 0x48, 0x31, 0x89, 0xb9, 0xe7, 0xcd, 0x28, 0x72, 0xc3, 0x93, 0x63, + 0xf7, 0xca, 0x54, 0xe9, 0x77, 0x76, 0x85, 0x29, 0x55, 0x87, 0x79, 0x40, + 0xc8, 0xbd, 0x1d, 0x36, 0x9c, 0x84, 0xcc, 0x4d, 0xa2, 0x2a, 0x56, 0xd7, + 0x2d, 0x07, 0x03, 0x6a, 0xe6, 0x3b, 0xe5, 0x6b, 0x8b, 0x62, 0xfa, 0x51, + 0x74, 0x8c, 0x39, 0x0f, 0x95, 0xc3, 0xf5, 0xf3, 0xad, 0x1e, 0x79, 0x1d, + 0x6d, 0xc7, 0xce, 0x55, 0x69, 0xf6, 0xd6, 0x05, 0xda, 0x8c, 0xa6, 0x52, + 0x33, 0xa1, 0x06, 0x41, 0xc9, 0x62, 0xf1, 0x57, 0x15, 0xd1, 0xd2, 0x77, + 0x0f, 0x0b, 0x29, 0x58, 0x51, 0x2e, 0x29, 0x23, 0xc8, 0xfc, 0x4f, 0x48, + 0x77, 0xa1, 0xef, 0xa1, 0x24, 0x0c, 0x73, 0xf5, 0xbe, 0x7f, 0x0d, 0x57, + 0x15, 0x72, 0xaa, 0x5f, 0x66, 0x31, 0x8f, 0x27, 0x6a, 0x68, 0x30, 0xda, + 0x91, 0x6c, 0x0e, 0xd5, 0x87, 0x2a, 0x99, 0xb6, 0x1c, 0x48, 0x0c, 0xaa, + 0x55, 0x2e, 0x4f, 0x97, 0xa4, 0xcd, 0x02, 0x74, 0x2e, 0x17, 0x27, 0x5a, + 0x99, 0xf0, 0xf4, 0xc4, 0x1f, 0xc7, 0x32, 0x74, 0x6e, 0x92, 0x62, 0xe8, + 0x75, 0x88, 0x03, 0x79, 0x8e, 0x40, 0x80, 0x5e, 0x20, 0x7a, 0x1b, 0x31, + 0x70, 0x79, 0x9a, 0x0c, 0x79, 0x97, 0x77, 0xd4, 0xda, 0x95, 0x22, 0xe9, + 0x73, 0x2f, 0xa6, 0xfa, 0x91, 0xff, 0x0b, 0x6d, 0xba, 0xbd, 0x15, 0xfa, + 0x3e, 0x8f, 0x4f, 0x95, 0x4b, 0x7c, 0xd3, 0x5b, 0x77, 0xe6, 0xf3, 0xb6, + 0xf5, 0x56, 0xd2, 0x8a, 0x72, 0xaf, 0xb3, 0x6f, 0x23, 0xaa, 0xad, 0x1b, + 0xb2, 0xb3, 0x1e, 0xbf, 0x6f, 0xfd, 0x25, 0xb3, 0x9e, 0xac, 0xbd, 0xb4, + 0x55, 0x2b, 0xce, 0x30, 0xcf, 0x31, 0x59, 0x19, 0x05, 0xcc, 0x87, 0x06, + 0x40, 0xe8, 0xc7, 0x28, 0x88, 0xa3, 0x00, 0x80, 0x40, 0x98, 0x11, 0x00, + 0x01, 0x98, 0x7e, 0x0a, 0x44, 0x99, 0xcc, 0x62, 0xb7, 0x18, 0x1a, 0xe0, + 0xfc, 0x98, 0x43, 0x04, 0x46, 0x1a, 0x98, 0x45, 0xc3, 0x98, 0x56, 0x80, + 0x8e, 0x18, 0xb7, 0xc3, 0x67, 0x18, 0x36, 0xa0, 0x6f, 0x98, 0x13, 0x00, + 0x82, 0x18, 0x03, 0xe0, 0x84, 0x19, 0xcc, 0x66, 0xbc, 0x98, 0xa4, 0x80, + 0x84, 0x98, 0x1b, 0x20, 0x2b, 0x1b, 0x3a, 0x63, 0x51, 0x73, 0xd1, 0x4d, + 0x60, 0x1f, 0x87, 0x78, 0x3a, 0x0e, 0xfb, 0x2f, 0x60, 0x49, 0x20, 0x28, + 0x0a, 0xae, 0x02, 0xaa, 0x30, 0x15, 0xe2, 0x80, 0x66, 0x1b, 0x1b, 0x47, + 0xe7, 0xf5, 0xc2, 0x6d, 0xa0, 0xf6, 0x92, 0x8c, 0x6d, 0x71, 0x4c, 0x84, + 0x21, 0x6b, 0xeb, 0xb1, 0xd0, 0x91, 0xc0, 0x8f, 0xea, 0x00, 0x24, 0x4e, + 0xdc, 0xef, 0x1f, 0xf8, 0xc4, 0x46, 0x5c, 0xc5, 0x2c, 0x51, 0xa3, 0x14, + 0x07, 0x01, 0xc4, 0xda, 0xed, 0x7c, 0x73, 0x2b, 0x9a, 0x0e, 0x66, 0xe2, + 0xe2, 0xba, 0x7c, 0xa6, 0x37, 0x90, 0x93, 0xd8, 0xc4, 0x34, 0x4b, 0x52, + 0xd8, 0xd6, 0xf9, 0x8d, 0x61, 0xb0, 0xff, 0xb2, 0xa5, 0x14, 0x91, 0x4f, + 0x17, 0xc8, 0x85, 0xbd, 0x22, 0x43, 0xd4, 0xe9, 0x04, 0xe9, 0xc4, 0x4d, + 0x0f, 0x67, 0xcb, 0x09, 0x26, 0xf6, 0x75, 0xd4, 0xcb, 0x05, 0xf1, 0x2f, + 0x45, 0x3a, 0x74, 0xfe, 0x24, 0xed, 0x34, 0x46, 0xc6, 0x24, 0xe8, 0x4a, + 0x12, 0x71, 0xa4, 0xd5, 0x85, 0xf9, 0x09, 0x2c, 0x2b, 0xb5, 0xca, 0x98, + 0xac, 0x70, 0x37, 0x1c, 0x17, 0x99, 0xd0, 0xb6, 0x36, 0x54, 0xea, 0xbd, + 0x56, 0x9b, 0x60, 0x5c, 0x5e, 0xa7, 0xf2, 0x16, 0x7e, 0x2d, 0xd1, 0x14, + 0xf9, 0x34, 0x5c, 0x23, 0x29, 0xce, 0x54, 0x71, 0x6d, 0x84, 0x7f, 0x3c, + 0x2f, 0x46, 0x3a, 0x49, 0x56, 0x8e, 0x59, 0x3d, 0x55, 0x30, 0x49, 0xb9, + 0xd4, 0x87, 0xbc, 0xca, 0xe9, 0x88, 0x84, 0xce, 0xf0, 0xfe, 0x4a, 0xb0, + 0x23, 0x55, 0x39, 0x38, 0x94, 0x70, 0xcc, 0x94, 0x21, 0x2e, 0xac, 0x37, + 0xc6, 0x63, 0x91, 0xba, 0x79, 0x94, 0x65, 0xd1, 0x2a, 0x86, 0xc3, 0x3a, + 0x06, 0x72, 0x1e, 0xce, 0xa0, 0x07, 0xf0, 0xf5, 0x29, 0xda, 0x81, 0xf8, + 0x47, 0x33, 0x02, 0x72, 0x66, 0x3a, 0x5c, 0xf3, 0x43, 0x53, 0xf2, 0xda, + 0x5f, 0x34, 0x22, 0x20, 0x7b, 0xb1, 0x61, 0xe7, 0x4d, 0xbd, 0xdc, 0xdf, + 0x74, 0x08, 0xee, 0x4d, 0xdf, 0xc9, 0xeb, 0x4b, 0x7a, 0xfa, 0x7b, 0xaf, + 0xfe, 0x4a, 0x5b, 0x75, 0x56, 0xed, 0xf5, 0xe9, 0xdf, 0x66, 0x99, 0xdb, + 0x7d, 0x92, 0xae, 0xdf, 0x7f, 0x5d, 0x76, 0xff, 0xff, 0xad, 0xbb, 0xb8, + 0xc8, 0xa5, 0x39, 0xc3, 0x8e, 0x06, 0xae, 0x40, 0x44, 0x73, 0x80, 0x80, + 0x05, 0x20, 0x70, 0x62, 0x2a, 0x30, 0x0c, 0x21, 0xe0, 0x77, 0x4c, 0x39, + 0x10, 0x7e, 0x0c, 0xbe, 0xa1, 0x99, 0x4d, 0x15, 0x22, 0x7b, 0x8c, 0x18, + 0xc0, 0x63, 0x8c, 0x4c, 0x82, 0x47, 0x8d, 0x34, 0xf0, 0xf5, 0xcc, 0x0b, + 0x30, 0x89, 0x8c, 0x2b, 0x11, 0xd1, 0x4c, 0x0d, 0x90, 0x98, 0x8c, 0x0d, + 0x30, 0xf8, 0xcc, 0x3b, 0x63, 0x05, 0x0d, 0x2d, 0xe1, 0xf8, 0x4c, 0xb5, + 0x91, 0x41, 0x4c, 0x26, 0xe0, 0x4d, 0x00, 0xe4, 0x63, 0x5f, 0x02, 0xcc, + 0x1a, 0x1e, 0x32, 0xb0, 0xb8, 0x64, 0x2c, 0x34, 0x14, 0x30, 0xd0, 0x98, + 0xc0, 0xc0, 0x01, 0xe1, 0x02, 0x17, 0xa3, 0xda, 0x9e, 0x5f, 0x88, 0xdc, + 0xaa, 0xac, 0x95, 0xdb, 0x52, 0xc6, 0x6e, 0x5d, 0x8c, 0x1c, 0x97, 0x71, + 0x92, 0xc3, 0x32, 0x66, 0x19, 0xff, 0xfb, 0xd4, 0x60, 0x36, 0x0d, 0xc9, + 0x8f, 0x70, 0x3e, 0x0b, 0xfc, 0x7b, 0x70, 0x4a, 0x2e, 0x08, 0x51, 0x20, + 0x25, 0x6e, 0x27, 0x8d, 0xc0, 0xfc, 0x0f, 0xed, 0xed, 0xc1, 0x08, 0x37, + 0x62, 0x4c, 0x70, 0x89, 0xb9, 0x09, 0x50, 0xf8, 0x69, 0x98, 0xbb, 0x03, + 0x80, 0x19, 0x52, 0xd8, 0x47, 0xd7, 0x9d, 0xb1, 0x2e, 0x78, 0x13, 0x90, + 0x43, 0xc6, 0x98, 0x2a, 0xa4, 0xa0, 0x4e, 0xe3, 0x9a, 0xf0, 0x2a, 0xe3, + 0x9f, 0x70, 0xcf, 0xe4, 0x41, 0xe0, 0x4a, 0x94, 0x7b, 0x4e, 0x27, 0xe8, + 0x81, 0x4f, 0x9b, 0xcb, 0x67, 0xda, 0xf9, 0xc2, 0x80, 0x45, 0x27, 0xd4, + 0x69, 0x43, 0xa5, 0x3c, 0xc3, 0x19, 0xb6, 0x33, 0x01, 0x6d, 0x44, 0x6e, + 0x0a, 0xe1, 0x0c, 0x67, 0x92, 0x13, 0xe4, 0xa3, 0x0a, 0x71, 0x3c, 0xa1, + 0x42, 0x8c, 0x66, 0xa5, 0xcb, 0xd4, 0x84, 0x73, 0x08, 0xed, 0x5e, 0x54, + 0x21, 0xce, 0x48, 0x6a, 0x18, 0xa9, 0xce, 0x5b, 0xda, 0xd3, 0xc5, 0xb6, + 0x11, 0xc4, 0xf1, 0x28, 0xcc, 0x7e, 0x2e, 0x76, 0xa9, 0x66, 0x4a, 0xaa, + 0x60, 0x17, 0xea, 0xa1, 0x68, 0x63, 0x01, 0xe6, 0xae, 0x8a, 0xf2, 0x22, + 0x71, 0xc5, 0x2c, 0x8f, 0x5f, 0xc1, 0xf9, 0x44, 0x62, 0x4d, 0x96, 0x1a, + 0x65, 0x89, 0xbd, 0x91, 0x51, 0x65, 0x59, 0xd2, 0xa4, 0x61, 0x57, 0x3e, + 0x38, 0xeb, 0xda, 0x15, 0xcb, 0xec, 0x86, 0x8b, 0x3b, 0x81, 0x74, 0x43, + 0x91, 0x8c, 0xb9, 0x8e, 0x86, 0xbd, 0x72, 0x66, 0x66, 0x20, 0xcb, 0x11, + 0x11, 0x44, 0xaa, 0xec, 0x27, 0x42, 0x93, 0x07, 0x43, 0xb5, 0x08, 0xed, + 0x54, 0xec, 0x49, 0x0a, 0x45, 0x5a, 0x3c, 0xb1, 0x90, 0x42, 0xda, 0xe0, + 0x05, 0xfd, 0xac, 0xf6, 0x59, 0x67, 0xb8, 0xf8, 0xb2, 0x14, 0x53, 0x2d, + 0x8e, 0x66, 0x9e, 0xcc, 0x80, 0x4d, 0xde, 0x09, 0x1a, 0xd0, 0x9b, 0x23, + 0x4a, 0xb6, 0x7f, 0xfa, 0xfa, 0x55, 0xa5, 0x46, 0xea, 0x8a, 0xeb, 0xe5, + 0x6b, 0x66, 0xf9, 0x3a, 0xd3, 0x5a, 0x37, 0xff, 0xf4, 0xff, 0x5f, 0xd2, + 0x9f, 0xdf, 0xfc, 0xfe, 0xef, 0xd0, 0xfd, 0x74, 0x54, 0x1a, 0xb7, 0xb8, + 0x45, 0x91, 0x8e, 0xc2, 0xc2, 0xe8, 0xec, 0x71, 0x51, 0x84, 0x2a, 0xb0, + 0xc5, 0x30, 0x23, 0x01, 0x4b, 0x30, 0xc8, 0x42, 0xa3, 0x33, 0x1e, 0xad, + 0x0e, 0x3e, 0x79, 0x24, 0xf1, 0x32, 0xdd, 0x82, 0x27, 0x30, 0x2c, 0xc0, + 0x75, 0x30, 0x05, 0x03, 0xdc, 0x30, 0x26, 0x41, 0x3d, 0x30, 0xc7, 0x46, + 0x64, 0x30, 0x19, 0x01, 0x1a, 0x30, 0x2b, 0x80, 0x99, 0x30, 0x19, 0x45, + 0x4a, 0x35, 0x75, 0xdc, 0x6c, 0x30, 0x59, 0x83, 0x4a, 0x30, 0x23, 0x40, + 0xe7, 0x31, 0xae, 0x53, 0x8d, 0x40, 0x12, 0xf9, 0x1c, 0x23, 0x1b, 0x8d, + 0x07, 0x39, 0x19, 0xc0, 0xd1, 0xad, 0x37, 0x18, 0xd1, 0xf8, 0x70, 0xd1, + 0x84, 0x84, 0x18, 0x71, 0x58, 0x19, 0xd0, 0x02, 0x1c, 0x61, 0xe2, 0xe6, + 0x18, 0x40, 0x10, 0x18, 0xcb, 0x44, 0x46, 0x42, 0xc0, 0x06, 0x1c, 0x0c, + 0xc9, 0x0b, 0xc6, 0xee, 0x98, 0x20, 0x11, 0x80, 0x82, 0xb8, 0xec, 0x99, + 0x98, 0xae, 0x41, 0x08, 0x08, 0x70, 0x7b, 0xf0, 0xa5, 0xec, 0xdd, 0x3a, + 0x16, 0x78, 0xc8, 0x0a, 0x71, 0xc1, 0x09, 0x50, 0x9e, 0x2e, 0x7c, 0x4c, + 0xb5, 0x0f, 0xbc, 0x00, 0x9f, 0x8b, 0xe9, 0x64, 0xbc, 0x17, 0x32, 0xf2, + 0xe2, 0x73, 0x86, 0x61, 0x6c, 0x18, 0xe7, 0x69, 0x63, 0x43, 0x4c, 0x91, + 0x2e, 0xad, 0x64, 0x3f, 0xd5, 0x8a, 0x75, 0x75, 0x91, 0xef, 0xd4, 0x8a, + 0x20, 0xe3, 0x57, 0x99, 0xc9, 0x54, 0x74, 0xce, 0x92, 0x8e, 0x08, 0x41, + 0x3b, 0x4e, 0x3c, 0x50, 0xb3, 0x17, 0x95, 0xca, 0x09, 0x29, 0x1c, 0xb1, + 0x92, 0x16, 0xb5, 0x02, 0xb5, 0x7d, 0x04, 0x9e, 0xd2, 0xf3, 0x1a, 0x61, + 0xbe, 0xa9, 0x63, 0xf1, 0x80, 0xfc, 0x5d, 0x28, 0x10, 0xc6, 0xb5, 0x7e, + 0xab, 0x0f, 0x50, 0x64, 0x73, 0x74, 0xae, 0x86, 0xe6, 0x96, 0x41, 0xae, + 0x5f, 0xa8, 0xd9, 0x51, 0x4c, 0x35, 0x6d, 0xc2, 0x97, 0xae, 0xd9, 0xd9, + 0xdc, 0x17, 0x0e, 0x6f, 0x5d, 0x2e, 0x1b, 0x98, 0x18, 0xd4, 0x2f, 0x14, + 0x35, 0x82, 0x9b, 0xc4, 0x6b, 0xb1, 0x29, 0x5c, 0x72, 0xc7, 0x65, 0x88, + 0x6e, 0xd5, 0x0c, 0x6b, 0x6c, 0xab, 0xca, 0x84, 0xf1, 0xfc, 0xd8, 0xda, + 0xe6, 0xcc, 0xfd, 0x95, 0xeb, 0x35, 0x93, 0x4a, 0xe8, 0x69, 0xa5, 0x21, + 0xfa, 0xac, 0x8a, 0x87, 0x97, 0xe8, 0xd5, 0x45, 0x1a, 0xb2, 0xa6, 0x11, + 0x05, 0x81, 0x68, 0xc7, 0x27, 0xe0, 0x27, 0x23, 0x20, 0x00, 0x79, 0xd3, + 0xbb, 0xd5, 0x1e, 0x9e, 0xb3, 0xff, 0xff, 0xfe, 0xb2, 0xe4, 0xc0, 0x69, + 0x01, 0x26, 0x4d, 0x8e, 0xf5, 0x54, 0x59, 0x29, 0x5a, 0x86, 0x22, 0x9a, + 0x74, 0x43, 0x22, 0x31, 0x5b, 0x25, 0xdf, 0x6a, 0xa2, 0x1d, 0xca, 0x88, + 0x8b, 0xfd, 0x7f, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, + 0xa1, 0x75, 0x7d, 0xa9, 0x45, 0xab, 0x39, 0x5a, 0x64, 0x2c, 0x74, 0x75, + 0x0b, 0xf8, 0x03, 0x04, 0x14, 0x1e, 0x43, 0x04, 0x60, 0x27, 0x73, 0x03, + 0xfe, 0x08, 0xa3, 0x8a, 0xec, 0xa2, 0x93, 0x0e, 0xac, 0x28, 0x63, 0x02, + 0x00, 0x0a, 0x33, 0x09, 0x50, 0x08, 0xd3, 0x00, 0xb0, 0x07, 0x23, 0x0d, + 0xf0, 0x12, 0xb3, 0x01, 0xdc, 0x0a, 0x51, 0xe0, 0x22, 0x0c, 0x00, 0x70, + 0x82, 0xcc, 0x52, 0x43, 0xd1, 0x4c, 0x01, 0xa0, 0x30, 0xc3, 0x81, 0x7d, + 0x33, 0x03, 0xd3, 0x0c, 0x09, 0x2f, 0xc1, 0x24, 0xc9, 0x08, 0x28, 0xe8, + 0x59, 0x89, 0x06, 0x87, 0x0e, 0xff, 0xfb, 0xd4, 0x60, 0x26, 0x8c, 0xc8, + 0x9b, 0x70, 0x41, 0x93, 0xfb, 0x7b, 0x70, 0x42, 0x45, 0x08, 0x83, 0x34, + 0x23, 0x4c, 0x1c, 0xf9, 0xc1, 0x06, 0x4f, 0xe5, 0x2d, 0xc1, 0x45, 0x38, + 0x21, 0x48, 0xb0, 0x95, 0xb8, 0x97, 0xbc, 0x40, 0x1e, 0x8f, 0x29, 0xea, + 0x5e, 0x20, 0x08, 0x21, 0x7b, 0x97, 0x32, 0xd6, 0x64, 0x0c, 0x75, 0x31, + 0x1b, 0x02, 0xc6, 0x7f, 0xef, 0xa2, 0x92, 0xb5, 0x45, 0x98, 0xb3, 0x73, + 0x5c, 0x69, 0x70, 0xa0, 0xa9, 0x72, 0xa5, 0x8e, 0xaa, 0xbc, 0x5f, 0x4f, + 0xa2, 0x34, 0xa6, 0xdb, 0x06, 0x59, 0xea, 0x62, 0xd2, 0x53, 0x9d, 0xba, + 0xa2, 0x7a, 0x87, 0xba, 0xc6, 0x80, 0x15, 0x9a, 0x4d, 0x01, 0x6e, 0x62, + 0x33, 0x8b, 0x13, 0x49, 0x3f, 0x30, 0x18, 0x1a, 0xc9, 0xd1, 0x16, 0x64, + 0x2d, 0x0f, 0x44, 0xe2, 0xf4, 0x82, 0x97, 0x82, 0xb5, 0xb1, 0x9d, 0x61, + 0x44, 0x8a, 0x55, 0xa2, 0x20, 0x9e, 0xa8, 0x6a, 0xb9, 0xe2, 0x84, 0xf0, + 0x41, 0xab, 0xae, 0x77, 0x2d, 0xb9, 0xab, 0x92, 0x2a, 0xd3, 0x26, 0x46, + 0xc7, 0x6c, 0x73, 0xce, 0xf2, 0x5a, 0xd1, 0xbe, 0x2f, 0x6c, 0xb4, 0xd3, + 0xc8, 0xff, 0x15, 0xab, 0x84, 0x36, 0x68, 0x72, 0xe6, 0x4b, 0x6a, 0x34, + 0x6d, 0xc5, 0x80, 0xef, 0xd1, 0xcf, 0x1d, 0xee, 0xe5, 0x92, 0x6d, 0x47, + 0x83, 0x2f, 0xb3, 0x74, 0xd0, 0xad, 0xf1, 0x98, 0xda, 0xb4, 0xd1, 0xaf, + 0x7b, 0xc7, 0xc6, 0x35, 0x48, 0xba, 0xb4, 0x5a, 0x41, 0x82, 0xfe, 0x04, + 0x68, 0xd4, 0x9a, 0x3d, 0x6d, 0x9a, 0xfb, 0x49, 0x06, 0x99, 0x63, 0x80, + 0xcf, 0x24, 0xbb, 0x8d, 0xbc, 0xbf, 0xa2, 0x91, 0x53, 0x65, 0xcc, 0xc1, + 0x27, 0x22, 0x20, 0x01, 0x15, 0x75, 0x32, 0x90, 0x49, 0x6b, 0xca, 0x2f, + 0xfe, 0xf9, 0x3f, 0xf3, 0x67, 0x3b, 0xe4, 0x5d, 0x3f, 0xe9, 0x16, 0xb9, + 0xf3, 0x4c, 0x66, 0xb9, 0x11, 0xd6, 0x0a, 0xc1, 0x22, 0x04, 0x0f, 0x20, + 0x48, 0x00, 0x11, 0xa0, 0xc9, 0xdd, 0x08, 0xc8, 0xb8, 0xc3, 0xfa, 0xd4, + 0x9c, 0xac, 0x04, 0xdf, 0xff, 0xd7, 0xfd, 0xdf, 0xce, 0xa9, 0x46, 0x91, + 0x1c, 0x0d, 0x06, 0x90, 0xb0, 0xa8, 0xb2, 0x00, 0x18, 0x0c, 0x60, 0x51, + 0x18, 0x34, 0x40, 0x29, 0x98, 0xb8, 0x69, 0x10, 0x1e, 0x36, 0xa0, 0xb3, + 0x98, 0x86, 0x20, 0x4b, 0x18, 0x1e, 0xc0, 0x87, 0x18, 0x31, 0xa0, 0x22, + 0x98, 0x09, 0x80, 0x21, 0x18, 0x8f, 0xa0, 0x13, 0x98, 0x11, 0x00, 0x40, + 0x08, 0x00, 0x2f, 0x30, 0x08, 0x01, 0xf6, 0x30, 0x9b, 0x13, 0x2e, 0x30, + 0x82, 0x80, 0x36, 0x0e, 0x02, 0xbc, 0x1b, 0x91, 0xa6, 0x4a, 0x6a, 0x1e, + 0xd7, 0x06, 0xb6, 0xd4, 0x49, 0x02, 0x22, 0x46, 0x9d, 0xe3, 0x64, 0xed, + 0x01, 0x90, 0xa5, 0x67, 0x5f, 0xa6, 0xe5, 0x0c, 0x4b, 0x9d, 0x39, 0x74, + 0xe3, 0x3e, 0x6b, 0xb0, 0x89, 0x0e, 0x53, 0xb5, 0x60, 0x3a, 0x49, 0xb8, + 0x7a, 0x47, 0xdb, 0xb0, 0xf4, 0x8a, 0x5b, 0x1d, 0x78, 0xe5, 0xb0, 0xf4, + 0x3b, 0x11, 0x99, 0xa1, 0xb5, 0x0d, 0xd9, 0x13, 0xc9, 0x91, 0x2a, 0x22, + 0x17, 0x20, 0x48, 0x3e, 0x21, 0x1d, 0x91, 0x0f, 0x20, 0x5b, 0x49, 0x9a, + 0x93, 0x53, 0x45, 0xb1, 0xc6, 0x6d, 0x96, 0x61, 0x5d, 0x86, 0xa2, 0x96, + 0xb2, 0xfb, 0xd6, 0x57, 0xd1, 0x75, 0xee, 0x0a, 0x0c, 0xc1, 0x1c, 0xa9, + 0x13, 0x5b, 0xad, 0x29, 0x5a, 0xbd, 0xae, 0x4e, 0x2b, 0xee, 0x53, 0x2a, + 0xb1, 0x24, 0x1a, 0xf5, 0x13, 0x72, 0x98, 0xd5, 0x29, 0x18, 0xb1, 0x27, + 0xd6, 0x43, 0x59, 0x84, 0x52, 0x55, 0xf2, 0xc5, 0x61, 0x08, 0x19, 0x46, + 0x59, 0xde, 0x4b, 0xbe, 0x6d, 0x25, 0x05, 0xe4, 0xac, 0x76, 0x19, 0xa9, + 0x90, 0xc2, 0x92, 0xd5, 0xe2, 0xca, 0x24, 0xa2, 0x9b, 0x24, 0x8f, 0x9e, + 0x28, 0x2a, 0x5b, 0x16, 0x8f, 0x11, 0x8b, 0xba, 0x64, 0x40, 0xc0, 0x00, + 0x18, 0x1a, 0xdb, 0x2a, 0xb6, 0x6c, 0x89, 0x73, 0x9e, 0x15, 0x11, 0xe7, + 0x3f, 0x4c, 0xdd, 0x24, 0x8c, 0xa1, 0xc9, 0x40, 0x66, 0xf1, 0xcd, 0x99, + 0x00, 0x23, 0x31, 0x35, 0xb9, 0xab, 0xdd, 0x7d, 0xff, 0xd9, 0xbe, 0x9b, + 0x66, 0xd3, 0x6e, 0xed, 0xbc, 0xad, 0x73, 0x50, 0x9e, 0x46, 0xff, 0x97, + 0x74, 0xb2, 0xf7, 0xfd, 0x53, 0xf2, 0xb7, 0xfe, 0xda, 0x59, 0xfb, 0x91, + 0xaa, 0xa7, 0x76, 0x98, 0xce, 0x4b, 0xa8, 0x7d, 0x4c, 0x41, 0xe7, 0x38, + 0xe7, 0x72, 0x03, 0x0d, 0x1a, 0x40, 0xfa, 0x06, 0x00, 0x03, 0x02, 0x54, + 0x02, 0x13, 0x06, 0x40, 0x1a, 0xe3, 0x18, 0x74, 0xca, 0xf3, 0xd4, 0xdc, + 0x48, 0xa3, 0x0f, 0x24, 0x0c, 0x13, 0x03, 0x90, 0x0b, 0x83, 0x09, 0x04, + 0x08, 0xd2, 0x20, 0x2c, 0x0c, 0x45, 0x00, 0x9d, 0x0c, 0x05, 0xf0, 0x2b, + 0xc2, 0xa0, 0x52, 0x18, 0x05, 0xe0, 0x96, 0x99, 0x5b, 0x6b, 0xb1, 0x98, + 0x1c, 0xa0, 0xa7, 0x92, 0x00, 0x64, 0x65, 0x43, 0xa6, 0x12, 0x44, 0x42, + 0x12, 0x62, 0x72, 0xc1, 0x04, 0x0a, 0xd6, 0x48, 0x0c, 0x50, 0x30, 0xd7, + 0x9b, 0xb2, 0x49, 0x56, 0x5f, 0x05, 0x03, 0xb0, 0xe5, 0x0a, 0xb1, 0xd2, + 0x3a, 0xcb, 0xbb, 0xe3, 0xac, 0x66, 0x66, 0x37, 0x0f, 0x65, 0x18, 0x8c, + 0x40, 0x1b, 0x7e, 0x23, 0x14, 0x34, 0x0e, 0x74, 0x56, 0xa3, 0xcc, 0xfa, + 0x46, 0x1f, 0x36, 0x09, 0x66, 0x5f, 0x3f, 0x12, 0x8c, 0x55, 0x83, 0x6d, + 0x7a, 0xb4, 0xb9, 0x7b, 0x6b, 0x57, 0x4a, 0x0c, 0x2c, 0x6a, 0x48, 0x16, + 0x25, 0xca, 0x6a, 0xf7, 0x2c, 0xbd, 0x85, 0xd4, 0x3d, 0x53, 0x05, 0x9e, + 0x94, 0x4e, 0x3c, 0x91, 0x25, 0xff, 0xfb, 0xd4, 0x60, 0x4d, 0x0d, 0xc7, + 0x91, 0x70, 0x41, 0x13, 0xfb, 0x63, 0x70, 0x51, 0x6e, 0x08, 0x52, 0x40, + 0x25, 0x6e, 0x21, 0xe5, 0xc0, 0xfe, 0x0f, 0xed, 0x8d, 0xc1, 0x03, 0x0e, + 0x22, 0x0c, 0xd0, 0x8d, 0x28, 0x8d, 0xac, 0xf3, 0x1c, 0x84, 0xdf, 0xde, + 0x13, 0xaa, 0xdd, 0xfa, 0xdf, 0xcf, 0x59, 0x6a, 0xae, 0xbd, 0xe7, 0xcf, + 0x3f, 0x03, 0x47, 0xcd, 0x23, 0xda, 0x35, 0x8b, 0x68, 0xbd, 0xa7, 0x1f, + 0x6a, 0x3e, 0x57, 0x14, 0x4b, 0xd8, 0xb5, 0xe7, 0x9d, 0xbb, 0x4d, 0x34, + 0x9b, 0x58, 0x7f, 0xbd, 0x98, 0x9a, 0x6e, 0xf8, 0xb4, 0xfa, 0xf0, 0xb6, + 0xdf, 0xad, 0x52, 0x84, 0x89, 0x09, 0xaa, 0x46, 0xb5, 0x1d, 0xf5, 0xf5, + 0x8d, 0x52, 0xa5, 0xdf, 0x72, 0x90, 0xc0, 0x4e, 0x81, 0x94, 0x77, 0x32, + 0x1e, 0xd1, 0x53, 0xb5, 0x13, 0xcf, 0x2f, 0x50, 0x09, 0xcb, 0x20, 0x00, + 0x2c, 0x9a, 0xad, 0x6b, 0x4d, 0x07, 0x53, 0x54, 0xbb, 0xf9, 0xe0, 0x68, + 0xa1, 0x9c, 0x24, 0x63, 0x64, 0x42, 0x32, 0xb3, 0x96, 0x64, 0x51, 0xa1, + 0xb2, 0x18, 0x90, 0xc1, 0xb5, 0xdd, 0xd5, 0x11, 0x2a, 0xb5, 0xb2, 0xfb, + 0xaf, 0xed, 0x69, 0x7f, 0x5d, 0xba, 0x75, 0x52, 0xfe, 0xfd, 0x6d, 0xd4, + 0xfc, 0xdf, 0xff, 0x4f, 0xfe, 0xfe, 0xcf, 0xa7, 0xf2, 0xfe, 0x5a, 0x5e, + 0x86, 0xa1, 0x85, 0x45, 0x18, 0x5a, 0x67, 0x29, 0x4e, 0xc6, 0x43, 0x8c, + 0x72, 0x94, 0xc8, 0x2a, 0xa1, 0x01, 0x03, 0x01, 0xec, 0x10, 0xd3, 0x05, + 0x60, 0x3e, 0x23, 0x19, 0x7e, 0xc3, 0x93, 0xe4, 0x4c, 0xb1, 0x63, 0x0d, + 0x4c, 0x25, 0x73, 0x04, 0x78, 0x11, 0x73, 0x04, 0x1c, 0x1c, 0x03, 0x00, + 0x68, 0x1f, 0xa3, 0x0d, 0x34, 0x62, 0x33, 0x01, 0x94, 0x0b, 0x23, 0x00, + 0xd8, 0x0c, 0x93, 0x04, 0xdc, 0x3a, 0xe3, 0x69, 0x79, 0xd8, 0x63, 0x10, + 0x7c, 0x25, 0xa3, 0x03, 0xc8, 0x08, 0x53, 0x3f, 0xb2, 0x31, 0x80, 0x10, + 0x69, 0xb1, 0xaa, 0xc1, 0x8f, 0x2c, 0xaa, 0x31, 0x41, 0xc2, 0x22, 0xd6, + 0x0c, 0x3a, 0x04, 0x86, 0x98, 0x0a, 0x05, 0x16, 0xee, 0x38, 0xe3, 0xa0, + 0x01, 0xf9, 0xf2, 0x60, 0x18, 0xa4, 0xb9, 0x9a, 0xb4, 0xb8, 0xa5, 0x03, + 0xd3, 0x16, 0x7c, 0x1d, 0x5a, 0x2a, 0x38, 0x4d, 0xf8, 0x71, 0xc3, 0xb5, + 0x0c, 0xbf, 0x99, 0x35, 0xb8, 0x5c, 0xcc, 0x7d, 0xf9, 0xbf, 0x14, 0x93, + 0x52, 0x39, 0x12, 0x82, 0x51, 0xf9, 0x99, 0x1f, 0xd6, 0xdd, 0xa5, 0xfe, + 0x3e, 0xae, 0x3f, 0x1c, 0x45, 0x84, 0xe4, 0xab, 0x4c, 0x0d, 0x19, 0x15, + 0x94, 0xce, 0x5a, 0x38, 0x67, 0x5f, 0x2c, 0x71, 0x94, 0x9a, 0x09, 0xef, + 0x09, 0x75, 0xfc, 0x26, 0x51, 0x92, 0xa2, 0x44, 0x96, 0x2e, 0x5c, 0x4a, + 0x3d, 0xa3, 0x85, 0xe2, 0xe9, 0xfa, 0x65, 0xc7, 0x48, 0x63, 0xd9, 0x90, + 0xed, 0x2b, 0x9f, 0x5e, 0x73, 0x19, 0x49, 0xe2, 0x29, 0xc2, 0x12, 0x28, + 0x8c, 0xe3, 0x41, 0x54, 0x91, 0x09, 0x69, 0xc0, 0xf7, 0xf0, 0xae, 0x21, + 0x17, 0x92, 0x61, 0xc9, 0xe4, 0x6a, 0x8e, 0x2c, 0x66, 0x64, 0xfe, 0x38, + 0x49, 0x5e, 0xbc, 0xbd, 0xfa, 0x5e, 0x3b, 0xe9, 0x75, 0x76, 0xba, 0x4d, + 0x3c, 0x74, 0xfd, 0xc4, 0xc7, 0x64, 0x9e, 0xf4, 0xe5, 0x85, 0xee, 0xb1, + 0x4e, 0x7c, 0xed, 0x97, 0x8a, 0x85, 0x62, 0xd0, 0x9c, 0x76, 0x60, 0x4c, + 0x1d, 0x4a, 0xed, 0x08, 0x02, 0x91, 0x20, 0x7f, 0x2c, 0x9d, 0x90, 0x0a, + 0xc2, 0x01, 0x4e, 0x36, 0x40, 0x01, 0x62, 0xa5, 0xd5, 0xea, 0x9a, 0x7c, + 0xfe, 0x53, 0xbe, 0xf3, 0xfe, 0xf9, 0xab, 0x16, 0x7c, 0x8b, 0xb5, 0x1c, + 0x2a, 0x03, 0x4e, 0x24, 0x4c, 0x51, 0x42, 0xe8, 0x0a, 0x5e, 0x09, 0x01, + 0x80, 0xa2, 0xc4, 0xab, 0x32, 0xc4, 0x4c, 0x76, 0x47, 0xb7, 0xd4, 0xc7, + 0x7f, 0xff, 0xfd, 0x74, 0x78, 0xc7, 0x75, 0x0a, 0x82, 0x29, 0x50, 0xaa, + 0x09, 0xa8, 0x08, 0xb1, 0x21, 0xe3, 0x49, 0x88, 0x29, 0xa8, 0xb5, 0x55, + 0x55, 0x30, 0x24, 0x01, 0x9f, 0x30, 0x07, 0x44, 0xc6, 0x30, 0xbb, 0x7d, + 0x7d, 0x36, 0x73, 0x4c, 0xf8, 0x30, 0x16, 0xc3, 0x0f, 0x30, 0x16, 0x82, + 0x5c, 0x31, 0x2d, 0x01, 0xc5, 0x30, 0x1b, 0x01, 0x59, 0x31, 0x42, 0x47, + 0x4e, 0x30, 0x29, 0x00, 0xc1, 0x30, 0x11, 0x40, 0xe8, 0x30, 0x6c, 0x02, + 0x73, 0x39, 0x73, 0x56, 0x31, 0x31, 0x7e, 0x81, 0xbb, 0x30, 0x45, 0x40, + 0x80, 0x34, 0xa2, 0xa1, 0x64, 0x53, 0x02, 0x00, 0x33, 0xec, 0x70, 0x52, + 0xbb, 0xa4, 0x54, 0x30, 0x0c, 0x25, 0x5d, 0xc0, 0xd0, 0xe2, 0xc8, 0xb9, + 0x68, 0x5e, 0x44, 0xde, 0xb0, 0x2c, 0x25, 0x77, 0xc0, 0x4f, 0x82, 0x79, + 0x44, 0x65, 0xc2, 0x10, 0x66, 0xc1, 0x0f, 0xa8, 0xb3, 0x2c, 0x83, 0x5d, + 0x85, 0x9b, 0x39, 0x06, 0xba, 0xd0, 0x7a, 0x9e, 0xeb, 0xf9, 0x00, 0xb5, + 0x97, 0xf5, 0xc6, 0x86, 0xa5, 0x50, 0x2c, 0x3f, 0x2e, 0x87, 0x79, 0x2c, + 0x58, 0x52, 0x1b, 0x8e, 0x39, 0x50, 0x3e, 0x55, 0x21, 0xcf, 0xd8, 0x98, + 0x62, 0x37, 0xe1, 0x9c, 0xfe, 0xb9, 0x7e, 0xbc, 0x74, 0xb9, 0xda, 0x74, + 0x47, 0x6a, 0xb2, 0x11, 0x15, 0x47, 0x0b, 0x71, 0x95, 0xeb, 0x70, 0xe2, + 0x33, 0x40, 0x4f, 0xc3, 0x60, 0x7b, 0x12, 0x11, 0xd4, 0xf5, 0x46, 0xf4, + 0xef, 0x4e, 0x3b, 0x8f, 0x11, 0x37, 0xa3, 0xf5, 0xe6, 0xda, 0x9b, 0x5d, + 0xa4, 0x59, 0x0e, 0xd7, 0x15, 0x16, 0x22, 0xb3, 0x1e, 0x8d, 0x8b, 0x96, + 0x05, 0xbb, 0x4a, 0x92, 0x9b, 0x29, 0x64, 0x3d, 0x73, 0x78, 0x2e, 0x6a, + 0x59, 0x16, 0xa1, 0x51, 0x5e, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd8, + 0xef, 0x70, 0x3f, 0x03, 0xfb, 0x7b, 0x70, 0x66, 0xce, 0x08, 0x32, 0x2c, + 0x65, 0x6e, 0x23, 0xbd, 0xc0, 0xfc, 0x0f, 0xed, 0xed, 0xc1, 0x4a, 0xb8, + 0x21, 0x49, 0x01, 0x09, 0xb8, 0x91, 0x80, 0xf9, 0xcd, 0x4c, 0xe9, 0xf5, + 0x12, 0xcb, 0xee, 0xce, 0xcc, 0xe1, 0xe3, 0xc7, 0x38, 0x9b, 0x55, 0xa1, + 0x4e, 0x2e, 0x50, 0xdb, 0xa0, 0xbd, 0x57, 0xb8, 0xb4, 0x2b, 0xd9, 0xf3, + 0xa5, 0xb6, 0xb7, 0x2b, 0x2a, 0xa4, 0x6c, 0x53, 0xed, 0xa9, 0xe3, 0x26, + 0x0c, 0x92, 0xfa, 0xb6, 0x5c, 0xe2, 0x3a, 0xb3, 0xfa, 0xc1, 0x90, 0xfd, + 0x56, 0x32, 0x9f, 0xa9, 0x21, 0xfc, 0x48, 0x14, 0x0a, 0x42, 0x7a, 0x06, + 0x80, 0x00, 0x11, 0xbd, 0x33, 0xbc, 0x42, 0x8f, 0x99, 0xbb, 0x74, 0xb9, + 0x2a, 0x97, 0x95, 0x39, 0x08, 0x8e, 0xd7, 0xf2, 0x33, 0x8f, 0xdf, 0x37, + 0x97, 0x78, 0xb2, 0x8e, 0xa1, 0xc4, 0x90, 0x7c, 0x29, 0x1a, 0x77, 0xba, + 0x29, 0xd0, 0xab, 0x47, 0x6d, 0xb7, 0x54, 0x77, 0xbb, 0x3e, 0x79, 0xbb, + 0x75, 0x49, 0x36, 0xd7, 0xd9, 0x2f, 0x59, 0xa5, 0xba, 0x33, 0xa6, 0xa5, + 0x5c, 0x97, 0x65, 0x5e, 0xe8, 0x9a, 0xb9, 0x0b, 0x2c, 0xe8, 0xad, 0x2c, + 0xf9, 0x54, 0xfa, 0xbb, 0x92, 0x95, 0x42, 0xb9, 0xb7, 0x64, 0x8c, 0x2d, + 0x22, 0xe5, 0x0e, 0x07, 0x0c, 0x32, 0x2c, 0x0e, 0x2c, 0xe8, 0x04, 0x51, + 0x23, 0x0b, 0x30, 0xb8, 0xb0, 0x81, 0x82, 0x54, 0x0d, 0x59, 0x82, 0xea, + 0x21, 0x61, 0x86, 0x41, 0xd6, 0x49, 0xbd, 0x94, 0x5c, 0x71, 0x86, 0xa4, + 0x16, 0x09, 0x81, 0x4e, 0x04, 0x01, 0x87, 0xda, 0x11, 0x69, 0x80, 0x52, + 0x04, 0x39, 0x8f, 0x10, 0x2e, 0x89, 0x83, 0x1e, 0x01, 0x79, 0x81, 0xc4, + 0x03, 0x59, 0x85, 0xa6, 0x02, 0xa1, 0xd1, 0xb4, 0x3c, 0x89, 0x90, 0xce, + 0x04, 0xf1, 0x83, 0xd0, 0x00, 0x99, 0xd3, 0xb0, 0x9d, 0x41, 0x31, 0x8f, + 0x9b, 0x98, 0xd5, 0x71, 0x8f, 0x8a, 0x05, 0x00, 0xc7, 0x50, 0x19, 0xaa, + 0x09, 0x92, 0x91, 0x2e, 0x1c, 0x41, 0x08, 0x79, 0x88, 0x85, 0x3f, 0xd0, + 0x59, 0x40, 0xc4, 0x89, 0x6b, 0xb5, 0xc8, 0x8c, 0xd8, 0x84, 0x0d, 0xa0, + 0xc3, 0x4a, 0x7a, 0x06, 0xa6, 0x4f, 0x7b, 0x92, 0x2a, 0x56, 0xde, 0x2b, + 0x0d, 0x4d, 0xbe, 0xef, 0xdd, 0xaa, 0x77, 0xb7, 0xb6, 0xe4, 0xb1, 0x8c, + 0x26, 0xa5, 0xf1, 0x94, 0xfa, 0xa1, 0x18, 0x75, 0x9c, 0xed, 0x0a, 0x43, + 0xa9, 0xb9, 0xa1, 0x25, 0x64, 0xfa, 0x96, 0x26, 0x27, 0x9d, 0x9d, 0x20, + 0xd2, 0xaf, 0x48, 0xaa, 0xd3, 0xa8, 0x7b, 0xe5, 0x13, 0x63, 0x44, 0x07, + 0xe8, 0x9b, 0x3e, 0x7e, 0xf0, 0x82, 0x23, 0xf4, 0xad, 0x52, 0x3a, 0x4f, + 0x31, 0x38, 0xb0, 0x35, 0x2b, 0x14, 0x91, 0x1b, 0x98, 0xd8, 0x9a, 0xe2, + 0xa2, 0x15, 0x92, 0xcd, 0x11, 0x3a, 0xcd, 0x06, 0x57, 0x07, 0xee, 0x10, + 0xdf, 0xb3, 0xc8, 0xe9, 0x8d, 0x85, 0x0a, 0x7d, 0x1d, 0xa1, 0x5a, 0xce, + 0xa8, 0x55, 0xb8, 0x3d, 0x81, 0x89, 0x60, 0xb0, 0xbe, 0x47, 0x35, 0x9e, + 0xee, 0x10, 0x12, 0xaa, 0x4b, 0x23, 0x72, 0xbb, 0x42, 0x6f, 0x15, 0x5d, + 0x1a, 0x33, 0xd7, 0xb0, 0x19, 0x95, 0xee, 0x71, 0xa3, 0x35, 0x41, 0x84, + 0xda, 0xfd, 0x76, 0xd4, 0x75, 0x28, 0x9f, 0x3f, 0x9a, 0x33, 0x83, 0x7b, + 0xb8, 0x10, 0x62, 0x1a, 0x14, 0xea, 0x0a, 0xaf, 0x59, 0x2a, 0x74, 0xa5, + 0xa8, 0xfb, 0x0d, 0x87, 0x31, 0xe4, 0xf9, 0x6e, 0x92, 0x9b, 0xe7, 0x4b, + 0x08, 0xa5, 0x8e, 0x10, 0xa4, 0x16, 0x5d, 0x49, 0x32, 0x2a, 0x6b, 0xba, + 0x47, 0x93, 0x4d, 0xc8, 0xd9, 0x8e, 0xdb, 0xad, 0x13, 0xc9, 0xeb, 0x2b, + 0x48, 0x8c, 0x87, 0xbd, 0x50, 0x3c, 0x84, 0x9b, 0x3b, 0x19, 0x08, 0xfd, + 0x59, 0x15, 0xeb, 0x4e, 0xb7, 0x5b, 0xd8, 0xdf, 0xfb, 0xdb, 0xa5, 0x2f, + 0xab, 0xa7, 0x9f, 0xfd, 0xfd, 0xad, 0x4f, 0x3a, 0x35, 0xe7, 0xfd, 0x3e, + 0xab, 0x6e, 0xff, 0x45, 0xdd, 0x1b, 0x5a, 0xfe, 0x85, 0x3b, 0x92, 0x47, + 0x04, 0x20, 0xe4, 0x30, 0x30, 0x50, 0x14, 0x0e, 0xa5, 0x52, 0x8a, 0x29, + 0xdd, 0xc2, 0x2a, 0x30, 0x50, 0x01, 0x69, 0x30, 0x7f, 0xc2, 0xda, 0x31, + 0x67, 0x2d, 0x7b, 0x3e, 0x40, 0x87, 0xac, 0x31, 0x0e, 0x81, 0xb3, 0x30, + 0x40, 0xc0, 0x35, 0x30, 0x2c, 0x03, 0x30, 0x30, 0x1a, 0xc0, 0x0b, 0x32, + 0x30, 0xc2, 0x68, 0x30, 0x56, 0x01, 0x06, 0x30, 0x34, 0xc0, 0x85, 0x30, + 0x9e, 0x82, 0xf0, 0x39, 0x71, 0xdf, 0x8c, 0x31, 0xd5, 0x81, 0x2a, 0x30, + 0x62, 0xc0, 0x89, 0x27, 0x38, 0x34, 0x93, 0x53, 0x4a, 0x18, 0x35, 0x1a, + 0x00, 0xe8, 0xd7, 0x80, 0x74, 0xd0, 0x20, 0x3d, 0xdb, 0x4c, 0x22, 0x82, + 0xd7, 0x14, 0x18, 0x06, 0x10, 0xd9, 0x7d, 0xcc, 0x61, 0xfd, 0x57, 0x88, + 0xbe, 0xf7, 0xbc, 0x85, 0x91, 0x5c, 0x4e, 0xfb, 0xec, 0xd6, 0x60, 0x35, + 0xb6, 0xb0, 0xd4, 0xae, 0xe3, 0x5a, 0x82, 0xa3, 0x72, 0xba, 0xb4, 0xab, + 0xd2, 0x9d, 0xfd, 0x88, 0x48, 0x5a, 0xac, 0x42, 0xdc, 0x66, 0x91, 0xb6, + 0x36, 0x06, 0xe7, 0xe4, 0x12, 0x7a, 0xe5, 0xa3, 0x4a, 0x73, 0xf5, 0x06, + 0x1e, 0x23, 0x6a, 0xfe, 0x81, 0xf1, 0xe4, 0xfc, 0xb0, 0xc1, 0x3e, 0x22, + 0x2a, 0x46, 0x5e, 0x2b, 0x15, 0x8b, 0x19, 0xf0, 0x8f, 0x30, 0x89, 0x46, + 0x4b, 0x0c, 0x6a, 0xed, 0xd0, 0x93, 0x2b, 0x5a, 0x59, 0x80, 0xaa, 0x6a, + 0xe2, 0x85, 0x15, 0x71, 0x7b, 0x51, 0x43, 0x55, 0x8b, 0x0c, 0x53, 0x88, + 0x44, 0x82, 0x78, 0xe2, 0xa2, 0xff, 0xfb, 0xd4, 0x60, 0x61, 0x0f, 0xd8, + 0x8f, 0x70, 0x3f, 0x03, 0xfb, 0x63, 0x70, 0x56, 0xad, 0xe8, 0x41, 0x40, + 0x22, 0x6e, 0x61, 0xd9, 0xbe, 0xfe, 0x0f, 0xed, 0x8d, 0xc1, 0x62, 0x37, + 0xe1, 0x05, 0x20, 0x95, 0xb8, 0x22, 0x13, 0x69, 0xcc, 0xe0, 0x17, 0x1e, + 0x6a, 0xb4, 0x7d, 0x19, 0x31, 0xd3, 0xe2, 0xd1, 0x78, 0xf0, 0x80, 0x3a, + 0x96, 0x08, 0x76, 0xd7, 0x48, 0x46, 0xe4, 0x31, 0x15, 0xc8, 0x1a, 0xba, + 0x58, 0x93, 0x8c, 0x87, 0x08, 0xdf, 0x2d, 0x1c, 0xad, 0x7c, 0xf8, 0xe0, + 0xf1, 0x9b, 0x2e, 0x5d, 0x1a, 0x9e, 0x7d, 0x7a, 0x55, 0xc7, 0x8c, 0x4c, + 0x04, 0xe2, 0x7a, 0xf3, 0xf5, 0xe8, 0x93, 0x67, 0x0e, 0x8f, 0x92, 0xa5, + 0xf0, 0x30, 0x57, 0x75, 0x69, 0x5d, 0x51, 0x04, 0x7c, 0x2f, 0x5c, 0xe0, + 0x60, 0x30, 0x03, 0x83, 0x76, 0xb9, 0xd4, 0x16, 0x5f, 0x74, 0x9c, 0xc9, + 0x46, 0x76, 0x27, 0xa2, 0x54, 0x28, 0x7f, 0x9c, 0x44, 0xcf, 0xfb, 0xb2, + 0x3c, 0x20, 0x29, 0xa4, 0x37, 0x71, 0xd1, 0x4a, 0x7b, 0xb6, 0xfd, 0x3e, + 0x9e, 0xdd, 0xff, 0x4b, 0x59, 0x55, 0x15, 0xf6, 0x54, 0x7b, 0x7f, 0x4b, + 0xa2, 0xb5, 0x2d, 0xeb, 0xfa, 0xf9, 0x92, 0x9e, 0x5d, 0x25, 0xe8, 0x89, + 0xb1, 0x8f, 0x67, 0x43, 0x65, 0x35, 0x5d, 0x6f, 0x42, 0xa9, 0xc8, 0xe8, + 0xc9, 0x38, 0xc1, 0x41, 0x3a, 0x01, 0x01, 0x98, 0xe2, 0x40, 0xd5, 0x10, + 0x38, 0x00, 0x70, 0x93, 0x03, 0x98, 0x0d, 0x53, 0x07, 0x8c, 0x10, 0xe3, + 0x18, 0x29, 0x51, 0x93, 0xf0, 0xd8, 0x39, 0x23, 0x0e, 0x68, 0x0d, 0x93, + 0x03, 0x94, 0x0d, 0xe3, 0x15, 0x10, 0x21, 0x10, 0xb0, 0x1e, 0x26, 0x34, + 0xd0, 0x2e, 0x80, 0x40, 0x3a, 0xcc, 0x00, 0xa0, 0x48, 0x0c, 0x08, 0xd0, + 0xbf, 0x4d, 0x82, 0x8a, 0x0f, 0xcc, 0x44, 0x30, 0xaa, 0xcc, 0x0d, 0x80, + 0x48, 0x0c, 0x8f, 0xa4, 0xca, 0x88, 0x8c, 0x44, 0x6c, 0xcc, 0xf4, 0x45, + 0x9c, 0x44, 0x81, 0xc2, 0xc4, 0x44, 0x47, 0x6d, 0xdd, 0x42, 0xd3, 0x5d, + 0xad, 0x08, 0x80, 0x0c, 0x88, 0x0e, 0x20, 0xfc, 0x89, 0x12, 0xbf, 0x4e, + 0x7a, 0xde, 0x7b, 0xa6, 0x04, 0x40, 0xcb, 0xfe, 0x9a, 0x6d, 0xe3, 0x82, + 0xa9, 0x5a, 0xd4, 0x3f, 0x36, 0xc9, 0x27, 0x6c, 0x3f, 0xd3, 0xb8, 0xbf, + 0x31, 0x1a, 0x5c, 0x61, 0xae, 0xcc, 0x4f, 0x48, 0x5f, 0xea, 0xc5, 0x91, + 0x7b, 0xec, 0x97, 0x16, 0x8f, 0x4b, 0x54, 0x16, 0x4b, 0x14, 0xc2, 0x9e, + 0x94, 0xd5, 0x9d, 0x16, 0x90, 0x70, 0xf1, 0x27, 0x99, 0x9f, 0xa9, 0xba, + 0x94, 0x4b, 0x16, 0x8e, 0x67, 0x04, 0x77, 0x18, 0x2a, 0xb6, 0xca, 0x67, + 0x84, 0x53, 0xf1, 0xf4, 0xb8, 0xe3, 0x04, 0x78, 0x51, 0xc1, 0x1a, 0x2a, + 0xc6, 0xbd, 0xfa, 0x2c, 0x52, 0x7c, 0x4f, 0x1f, 0x5a, 0xf8, 0x0d, 0x12, + 0x93, 0x44, 0x43, 0x85, 0x8a, 0x5c, 0x38, 0x3d, 0x26, 0x1e, 0x15, 0x44, + 0x42, 0x9a, 0x13, 0x8a, 0xdd, 0x55, 0x13, 0x91, 0x21, 0x1a, 0xa8, 0x88, + 0xa9, 0x44, 0xe9, 0xd7, 0x2a, 0x2b, 0xc2, 0x98, 0xbd, 0x10, 0x95, 0xc5, + 0x72, 0xd4, 0x07, 0x49, 0x8a, 0x4a, 0xd4, 0xd4, 0xed, 0x33, 0xb1, 0x7a, + 0x54, 0x24, 0xc7, 0x4e, 0xa2, 0xbb, 0x6b, 0xa8, 0xe3, 0x9c, 0xa6, 0x36, + 0x4f, 0x1f, 0x31, 0x3f, 0x3a, 0x43, 0x6c, 0x94, 0x7b, 0x55, 0x0b, 0x8a, + 0xc3, 0xf2, 0x85, 0xe5, 0x80, 0x0c, 0x82, 0x5f, 0x31, 0x05, 0x0e, 0x0f, + 0x04, 0x9e, 0xa4, 0x9e, 0xb4, 0x10, 0x49, 0x06, 0x4e, 0x22, 0x1c, 0x98, + 0xa6, 0xce, 0xf9, 0x81, 0x92, 0xee, 0xef, 0x12, 0x86, 0x23, 0xa2, 0x41, + 0x85, 0x00, 0x4a, 0xee, 0xea, 0x54, 0x2d, 0x9d, 0x4f, 0xde, 0xce, 0xf5, + 0x4d, 0xae, 0xae, 0x76, 0x7a, 0x75, 0xfe, 0xaf, 0xb5, 0x1d, 0xd7, 0xff, + 0xd5, 0xd3, 0x6b, 0x3b, 0x9f, 0xb3, 0xfb, 0xbd, 0xe4, 0xd1, 0x7f, 0xad, + 0x1b, 0xbc, 0x96, 0x5b, 0x51, 0x4d, 0x49, 0x91, 0x1e, 0xf3, 0xa2, 0xb9, + 0x48, 0x64, 0x71, 0x33, 0x15, 0x84, 0x44, 0x05, 0x62, 0x67, 0x10, 0x17, + 0x40, 0x88, 0x7e, 0x30, 0x35, 0x00, 0x49, 0x30, 0x77, 0xc0, 0xff, 0x31, + 0xa1, 0x0c, 0xde, 0x3f, 0xcb, 0x80, 0xb5, 0x30, 0xeb, 0x80, 0x4e, 0x30, + 0x71, 0xc0, 0xf2, 0x31, 0x1c, 0xc1, 0xdb, 0x30, 0x27, 0x41, 0x6e, 0x30, + 0xf6, 0x43, 0x59, 0x00, 0x01, 0x68, 0x60, 0x26, 0x02, 0x9a, 0x60, 0x7c, + 0x89, 0x60, 0x64, 0xd6, 0xcc, 0x04, 0x62, 0x58, 0x84, 0xac, 0x60, 0x64, + 0x01, 0xb2, 0x72, 0xd4, 0x02, 0x5f, 0x83, 0x82, 0x1c, 0x69, 0x62, 0x60, + 0xc8, 0x86, 0x85, 0xc4, 0x0d, 0x27, 0x5a, 0x6f, 0x8b, 0x2a, 0xb6, 0x87, + 0x04, 0xd7, 0xaa, 0xa6, 0x8f, 0x83, 0xeb, 0x29, 0x5f, 0xb4, 0x0d, 0x31, + 0x3e, 0xaf, 0x3f, 0x8d, 0xd2, 0x07, 0x78, 0x1f, 0xa8, 0x1b, 0x1a, 0xd0, + 0xb7, 0x56, 0x08, 0x79, 0x9b, 0x25, 0xd9, 0xfd, 0xbd, 0xf4, 0xaf, 0xe4, + 0x86, 0x2d, 0x0f, 0x5e, 0x8f, 0x4f, 0x22, 0x2c, 0x18, 0x9b, 0x08, 0xa9, + 0x07, 0x61, 0xf1, 0xa9, 0x59, 0x19, 0xd9, 0xe9, 0xc3, 0xca, 0x19, 0x2b, + 0x94, 0xf5, 0x79, 0x28, 0x9d, 0x17, 0x30, 0xcb, 0xb4, 0x42, 0x5e, 0xe9, + 0x85, 0x9b, 0x6d, 0xde, 0xf5, 0x07, 0xb0, 0x83, 0x68, 0x0a, 0x4f, 0x99, + 0x12, 0x18, 0x2f, 0x5f, 0xa9, 0x0a, 0xc8, 0x0e, 0x0e, 0x4b, 0xa5, 0x24, + 0x4c, 0x34, 0x82, 0xb8, 0xbc, 0xb5, 0x21, 0xcb, 0x9e, 0x5a, 0x2f, 0x9d, + 0x8e, 0xe9, 0x00, 0x49, 0x25, 0x87, 0xcb, 0x48, 0x3c, 0x8d, 0x6b, 0xfd, + 0x76, 0x90, 0x57, 0x9a, 0xb9, 0xff, 0xfb, 0xd4, 0x60, 0x67, 0x0f, 0xc8, + 0x2a, 0x70, 0x3f, 0x83, 0xfa, 0x63, 0x70, 0x60, 0xae, 0x08, 0x31, 0x3c, + 0x65, 0x6e, 0x21, 0xc5, 0xc0, 0xfc, 0x0f, 0xed, 0x8d, 0xc1, 0x63, 0x36, + 0x21, 0x4c, 0xb1, 0x89, 0xb9, 0xce, 0x10, 0x71, 0x65, 0x17, 0x2d, 0xa9, + 0xfa, 0x12, 0xe3, 0x03, 0xd4, 0xcc, 0xc0, 0x58, 0xc6, 0xd5, 0x18, 0xe7, + 0x36, 0x8d, 0x7a, 0x15, 0xae, 0xe7, 0xb3, 0xd1, 0x34, 0x9d, 0x95, 0xe7, + 0x6b, 0x5c, 0x5e, 0xb0, 0x9e, 0xa5, 0x78, 0x92, 0xd1, 0x10, 0xb4, 0x48, + 0x5a, 0xeb, 0xa7, 0xfc, 0x74, 0xf2, 0x11, 0x49, 0x33, 0xc8, 0xc8, 0xcb, + 0x84, 0x00, 0xaf, 0x77, 0xad, 0xbf, 0xbd, 0xb1, 0x35, 0x70, 0xdf, 0x5a, + 0x51, 0x1d, 0x09, 0xa7, 0xd9, 0xb7, 0x61, 0x4f, 0x6d, 0xcb, 0xbf, 0x7d, + 0x25, 0x3e, 0x78, 0x72, 0x79, 0xae, 0x0f, 0xfe, 0xd3, 0xac, 0xb5, 0xd5, + 0xbe, 0xcd, 0x5d, 0x36, 0xbc, 0xc5, 0xef, 0x57, 0x64, 0xa4, 0xa8, 0xed, + 0x93, 0x76, 0x4e, 0x4e, 0xeb, 0x75, 0x54, 0xdd, 0xfe, 0xe8, 0x89, 0xad, + 0x17, 0x5a, 0x3d, 0x89, 0xdd, 0x59, 0x2d, 0xb5, 0xb7, 0x79, 0xe9, 0x32, + 0x39, 0x97, 0x52, 0x0a, 0x2c, 0x48, 0x49, 0x47, 0x8f, 0x05, 0x28, 0x48, + 0x3a, 0x51, 0xa2, 0x82, 0x41, 0x68, 0x39, 0xa2, 0x31, 0x61, 0x70, 0x1c, + 0x24, 0x60, 0x3d, 0x01, 0x18, 0x60, 0xd9, 0x85, 0xee, 0x63, 0x30, 0x50, + 0x08, 0x7f, 0x16, 0x0e, 0x9e, 0x61, 0xb8, 0x03, 0x34, 0x60, 0xda, 0x85, + 0x56, 0x60, 0xb8, 0x86, 0xa0, 0x60, 0x95, 0x82, 0x1c, 0x60, 0x9f, 0x84, + 0x04, 0x60, 0x8e, 0x01, 0x82, 0x60, 0x5f, 0x81, 0x88, 0x60, 0xdc, 0x05, + 0xe2, 0x65, 0x3b, 0xbd, 0x6a, 0x62, 0x95, 0x02, 0x66, 0x60, 0x93, 0x80, + 0xec, 0x26, 0x22, 0x25, 0x9c, 0x61, 0x82, 0x66, 0x01, 0x08, 0x10, 0x76, + 0xfb, 0x2d, 0x15, 0x24, 0xe9, 0xae, 0xd6, 0x9a, 0xd8, 0x94, 0xbc, 0xbd, + 0x56, 0x1b, 0xa2, 0x01, 0x5b, 0x22, 0xe2, 0x6d, 0xa1, 0x0f, 0x1b, 0x01, + 0x92, 0xc8, 0x5f, 0x16, 0xab, 0x4f, 0x42, 0xf1, 0x3b, 0x2e, 0xdc, 0x37, + 0x41, 0x4f, 0x35, 0x05, 0xc9, 0x1a, 0x1b, 0xbd, 0x0e, 0xc7, 0x62, 0x32, + 0xe8, 0xbc, 0xfc, 0x92, 0xc3, 0xbd, 0x86, 0xda, 0x78, 0x7a, 0x3b, 0xc2, + 0x7c, 0x56, 0x1f, 0x13, 0x88, 0x9e, 0x55, 0x2b, 0x18, 0x0d, 0xd6, 0x7a, + 0x63, 0x46, 0x4b, 0xc2, 0x32, 0x12, 0xa2, 0x38, 0x8c, 0x94, 0x78, 0x28, + 0xd1, 0x59, 0x16, 0x15, 0x70, 0x22, 0x3c, 0x78, 0xb6, 0x42, 0xb9, 0x4c, + 0x88, 0xb4, 0xcc, 0x8e, 0x4d, 0x5f, 0x73, 0x03, 0x93, 0x48, 0x4d, 0xe8, + 0xa9, 0xe4, 0xa7, 0xc3, 0xc4, 0x04, 0x83, 0x76, 0x93, 0xb4, 0x5c, 0x40, + 0xa9, 0xe4, 0x2a, 0x69, 0x62, 0xc0, 0x96, 0x25, 0xa4, 0x75, 0x0c, 0x9b, + 0xe3, 0x8d, 0x8c, 0xa1, 0x25, 0x27, 0x5a, 0x9f, 0x11, 0x21, 0x65, 0x1f, + 0x5e, 0xf9, 0xc9, 0xa5, 0x24, 0xe8, 0xd6, 0x3b, 0x42, 0x78, 0x64, 0x50, + 0x60, 0xf7, 0x79, 0x7a, 0x1a, 0xe7, 0x4e, 0xfe, 0xfe, 0x79, 0x11, 0x7d, + 0x05, 0x1c, 0xbc, 0xda, 0x64, 0xf4, 0xf0, 0x6c, 0x4b, 0xb9, 0x10, 0xcd, + 0x94, 0x1b, 0xb0, 0xb0, 0x9a, 0x4d, 0x27, 0x9a, 0x07, 0x41, 0x69, 0x3c, + 0x3a, 0x59, 0x40, 0xf0, 0xd0, 0x49, 0x39, 0x0a, 0x34, 0x40, 0x00, 0x03, + 0xae, 0x2e, 0x9f, 0x50, 0x77, 0xaa, 0x9e, 0x97, 0xe7, 0x7f, 0x25, 0xe5, + 0xcf, 0xe6, 0x81, 0x12, 0xb9, 0xcc, 0xcd, 0x0d, 0x03, 0xb0, 0x55, 0x10, + 0x56, 0x90, 0x38, 0x4e, 0x1d, 0x85, 0xaa, 0x33, 0x92, 0xc7, 0x42, 0xa3, + 0x32, 0xa2, 0xbb, 0x2b, 0x1a, 0xbb, 0x5f, 0x2f, 0xed, 0xc9, 0x9f, 0xcb, + 0x6f, 0xcc, 0xd4, 0xbf, 0xb7, 0xfd, 0x3b, 0xaf, 0xab, 0xbf, 0xbf, 0x4f, + 0x67, 0xb5, 0x17, 0xfa, 0xae, 0xd9, 0x54, 0xca, 0xcb, 0x22, 0x55, 0xd0, + 0xe0, 0x32, 0x2c, 0x51, 0x99, 0x9c, 0x38, 0xa1, 0x72, 0x15, 0x17, 0x05, + 0x32, 0x30, 0x18, 0xc1, 0x6a, 0x30, 0x35, 0x44, 0xa3, 0x31, 0x1e, 0x3d, + 0xcc, 0x3a, 0xc6, 0x8c, 0x79, 0x30, 0x80, 0x82, 0x94, 0x30, 0x21, 0xc2, + 0x59, 0x31, 0x63, 0x00, 0x4d, 0x30, 0x0f, 0x01, 0x5d, 0x30, 0xb6, 0x40, + 0xb6, 0x30, 0x23, 0x80, 0xca, 0x30, 0x34, 0x80, 0x45, 0x30, 0x6e, 0x42, + 0x96, 0x34, 0xfc, 0x14, 0x40, 0x31, 0x58, 0x40, 0x38, 0x30, 0x52, 0x80, + 0x57, 0x0d, 0x53, 0x0c, 0x65, 0x32, 0x30, 0x73, 0x21, 0x30, 0x31, 0xe0, + 0x26, 0xe6, 0xfe, 0x40, 0xce, 0xb9, 0x30, 0x2c, 0x95, 0xba, 0xea, 0xe3, + 0xa4, 0xed, 0x2b, 0xeb, 0x2d, 0x79, 0xb3, 0x2f, 0xd7, 0x75, 0xa8, 0x3b, + 0xd0, 0x3c, 0x42, 0x42, 0xed, 0x35, 0x25, 0xac, 0xe2, 0xdf, 0x87, 0x5f, + 0x26, 0x27, 0x02, 0xc9, 0x1a, 0xe4, 0x0c, 0xea, 0xbd, 0xd1, 0x17, 0x2e, + 0x75, 0xba, 0x52, 0xc3, 0xf3, 0x8f, 0x1a, 0x2d, 0x40, 0x72, 0x33, 0x16, + 0x35, 0x2a, 0xe9, 0x89, 0x5e, 0xb6, 0x4f, 0x2e, 0xaf, 0x1f, 0xd0, 0xd7, + 0x59, 0xbb, 0x9a, 0x9d, 0xfa, 0xb9, 0x7a, 0x2b, 0x13, 0x4c, 0xec, 0xd2, + 0x1f, 0xe5, 0x80, 0xff, 0x56, 0x65, 0x69, 0x21, 0x2a, 0xc5, 0x50, 0xe2, + 0xda, 0x75, 0x3e, 0x34, 0x15, 0x87, 0x34, 0x34, 0x6a, 0x57, 0x69, 0x23, + 0xa1, 0x67, 0x10, 0x24, 0x50, 0x2b, 0x95, 0xed, 0xcb, 0x6a, 0x34, 0xf3, + 0xf7, 0x37, 0xfd, 0x18, 0xa4, 0x43, 0x15, 0x12, 0xa7, 0x98, 0x17, 0x59, + 0x71, 0x39, 0x56, 0x55, 0xf2, 0xb7, 0x29, 0xd1, 0x92, 0x28, 0xdc, 0x8c, + 0xb6, 0x83, 0xae, 0xaa, 0x92, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd9, + 0x0d, 0x70, 0x3e, 0x83, 0xfb, 0x7b, 0x70, 0x66, 0xce, 0x08, 0x20, 0x3c, + 0x65, 0x6e, 0x22, 0x99, 0xc0, 0xfc, 0x0f, 0xe9, 0xed, 0xc1, 0x67, 0x38, + 0x21, 0x04, 0xf0, 0x95, 0xb8, 0xe4, 0x84, 0x47, 0x65, 0x80, 0x72, 0x42, + 0x61, 0x8f, 0x22, 0x3c, 0xe9, 0x70, 0x5d, 0x1d, 0x68, 0x62, 0x94, 0xbe, + 0xbf, 0x64, 0x57, 0xa5, 0x12, 0x4a, 0xf9, 0x1c, 0x66, 0x80, 0xba, 0x35, + 0x15, 0x8f, 0xa7, 0xcc, 0x35, 0xf8, 0x19, 0x45, 0xd1, 0xb1, 0x66, 0x56, + 0xe8, 0x90, 0xce, 0xa5, 0xb7, 0xd9, 0x52, 0x27, 0x1f, 0xb6, 0x3c, 0x78, + 0xc6, 0x97, 0x1e, 0xe5, 0xfd, 0x10, 0x75, 0x9c, 0x4e, 0x47, 0x71, 0x25, + 0x56, 0x87, 0x48, 0x7b, 0xce, 0xfa, 0xb6, 0x8f, 0xf3, 0x4d, 0x7b, 0x6e, + 0x16, 0x8f, 0x38, 0x52, 0xe8, 0xa9, 0xc1, 0x24, 0xd7, 0x21, 0xc7, 0x23, + 0x97, 0x7f, 0x23, 0xfb, 0xb7, 0xc9, 0x33, 0x9f, 0xf2, 0xd6, 0x49, 0x14, + 0xc4, 0xb3, 0x29, 0xe7, 0xb2, 0x11, 0x1a, 0xae, 0x43, 0x2b, 0xde, 0x55, + 0xd0, 0xe8, 0xcc, 0x9b, 0x3e, 0xcd, 0x5b, 0x27, 0xcd, 0x5a, 0x22, 0x95, + 0xce, 0xea, 0xe8, 0x55, 0x53, 0x23, 0x5a, 0xcb, 0xaa, 0xa6, 0xb7, 0xb2, + 0xcb, 0x5e, 0xee, 0x63, 0xee, 0x9f, 0x2b, 0x97, 0x26, 0xa5, 0x56, 0xa1, + 0x9c, 0xa3, 0x54, 0x49, 0x4a, 0x51, 0x51, 0x01, 0x43, 0x08, 0x0f, 0x28, + 0xa0, 0x4d, 0x82, 0x41, 0x83, 0x45, 0x98, 0xa2, 0x22, 0x66, 0x08, 0x08, + 0x31, 0x06, 0x06, 0x40, 0x89, 0xa6, 0x09, 0x2f, 0x31, 0xc6, 0x5e, 0xb9, + 0x93, 0x26, 0x0c, 0x48, 0x51, 0x46, 0x06, 0xa0, 0x29, 0x86, 0x08, 0x98, + 0x15, 0xa6, 0x03, 0xd0, 0x03, 0x26, 0x22, 0xd0, 0x14, 0xc6, 0x05, 0x00, + 0x10, 0x66, 0x03, 0xa8, 0x03, 0x26, 0x0a, 0x80, 0x18, 0x86, 0x98, 0x88, + 0x28, 0x26, 0x23, 0x20, 0x0b, 0x00, 0x60, 0x71, 0xcf, 0x02, 0xc3, 0x76, + 0x0c, 0xc5, 0x12, 0x0a, 0xa7, 0x08, 0x4b, 0x1e, 0x64, 0x69, 0x03, 0x0f, + 0x3a, 0x2e, 0x2c, 0x8d, 0x96, 0xb7, 0x91, 0xd8, 0x84, 0x4a, 0x08, 0x77, + 0x24, 0x92, 0xb9, 0x44, 0x0d, 0x01, 0x3a, 0x90, 0x43, 0xf8, 0xce, 0x24, + 0x2d, 0x8d, 0x88, 0xb3, 0x87, 0xe6, 0x62, 0x41, 0x0a, 0x79, 0x20, 0xa8, + 0x36, 0x4d, 0x56, 0x3b, 0x3f, 0x1a, 0x96, 0x4e, 0xc8, 0x22, 0xfc, 0x5d, + 0xb5, 0x65, 0x20, 0xca, 0x6e, 0x1c, 0x91, 0x4f, 0x13, 0xe9, 0xda, 0x8d, + 0x93, 0x0c, 0x07, 0x69, 0xd9, 0x22, 0x09, 0x18, 0x6f, 0x32, 0xae, 0xdb, + 0x8c, 0x86, 0x3b, 0x2a, 0x9f, 0x69, 0xd2, 0xb2, 0xaa, 0x84, 0x72, 0x95, + 0x33, 0x1a, 0x57, 0xb1, 0xa3, 0x43, 0x72, 0x4b, 0x99, 0x6a, 0x79, 0x95, + 0xad, 0xec, 0xd9, 0x8a, 0x98, 0x67, 0x59, 0x52, 0xac, 0x32, 0xbe, 0x3f, + 0xdf, 0xc2, 0x8d, 0x22, 0x21, 0x91, 0x56, 0xe3, 0x05, 0x56, 0x87, 0x43, + 0x6a, 0x74, 0xb2, 0x8d, 0x55, 0x35, 0xb3, 0xc9, 0x12, 0x66, 0x75, 0x4b, + 0x69, 0xfc, 0xe2, 0x7d, 0xc7, 0x43, 0xe6, 0x95, 0xe2, 0xd2, 0xcd, 0x19, + 0x58, 0x56, 0xd1, 0xd2, 0x4a, 0x83, 0x6e, 0xac, 0xe9, 0xb7, 0xbf, 0x4d, + 0x5b, 0x89, 0xd6, 0x1a, 0x53, 0x91, 0x26, 0x61, 0x78, 0xdd, 0x12, 0x1b, + 0xf8, 0x10, 0x96, 0x97, 0x69, 0xc5, 0x22, 0xa5, 0xec, 0x38, 0x50, 0x53, + 0xf0, 0x99, 0x9d, 0x31, 0x30, 0xbd, 0x4d, 0xd9, 0xb9, 0x10, 0x61, 0x26, + 0xf9, 0x3f, 0x58, 0x57, 0x72, 0xce, 0x22, 0xe4, 0xbe, 0xac, 0xec, 0x37, + 0xef, 0x7b, 0xc3, 0x9f, 0x7e, 0x97, 0xd5, 0x3f, 0xc1, 0x14, 0xad, 0x84, + 0x6a, 0x6c, 0xd9, 0x4c, 0x04, 0x7d, 0xcc, 0xe1, 0xf5, 0x2a, 0x20, 0xa1, + 0x19, 0xed, 0x92, 0xfc, 0x8d, 0x8c, 0x5a, 0xbe, 0xbd, 0xd9, 0xf6, 0xb6, + 0xca, 0x6b, 0xeb, 0x3e, 0x8c, 0xbe, 0xd7, 0x4a, 0x2a, 0xdf, 0xf4, 0xd6, + 0xc6, 0xb6, 0xad, 0x5d, 0xec, 0xc8, 0xfd, 0x3f, 0xdd, 0xa8, 0x4c, 0x96, + 0x45, 0x75, 0x21, 0x74, 0x65, 0xb3, 0x5d, 0xf2, 0x33, 0x98, 0x71, 0xc8, + 0x39, 0x0e, 0x27, 0x26, 0xa3, 0xc3, 0x04, 0x8c, 0x24, 0x43, 0x8c, 0x48, + 0xa0, 0x78, 0x3e, 0x29, 0x30, 0x5f, 0x41, 0xd8, 0x30, 0x82, 0x04, 0x4f, + 0x31, 0x73, 0x78, 0x76, 0x3d, 0xa2, 0x4b, 0x97, 0x30, 0xfa, 0xc2, 0x94, + 0x30, 0x51, 0x01, 0xbb, 0x30, 0x47, 0xc1, 0x4a, 0x30, 0x06, 0xc0, 0x86, + 0x30, 0xab, 0x42, 0x39, 0x30, 0x37, 0x40, 0xe5, 0x30, 0x34, 0x41, 0x26, + 0x30, 0x61, 0x81, 0x14, 0x34, 0xcb, 0x10, 0x65, 0x31, 0x69, 0x43, 0x53, + 0x30, 0x23, 0xc0, 0x98, 0x07, 0x4d, 0x39, 0x50, 0x0c, 0xda, 0x73, 0x30, + 0xb5, 0x2b, 0x45, 0x83, 0xa8, 0x0a, 0xbc, 0x72, 0x1d, 0x77, 0x6d, 0xd6, + 0x51, 0x67, 0x25, 0x94, 0x38, 0x0a, 0xe9, 0x39, 0x60, 0xca, 0x45, 0xfe, + 0xba, 0xac, 0xbf, 0x4e, 0x9b, 0x88, 0xd6, 0x63, 0xce, 0x64, 0x46, 0x1a, + 0x9f, 0xa6, 0x66, 0x6c, 0x4a, 0x3c, 0xe7, 0x2a, 0xbc, 0x08, 0xed, 0x45, + 0xee, 0x36, 0x5b, 0x11, 0x99, 0x7b, 0xc9, 0x11, 0x77, 0xf7, 0x2a, 0x0c, + 0xc4, 0x34, 0x27, 0x37, 0x0f, 0xe3, 0x21, 0x74, 0xbc, 0xb9, 0x4f, 0x2d, + 0xa8, 0xfc, 0x24, 0x83, 0x8a, 0xe9, 0xdd, 0xf2, 0x84, 0x56, 0x29, 0xd0, + 0x7d, 0xa7, 0xcb, 0xd2, 0xe4, 0xfb, 0x5b, 0x6b, 0x88, 0x87, 0x33, 0x96, + 0xd8, 0x68, 0x6c, 0xc9, 0xd7, 0x15, 0x6b, 0x52, 0x27, 0x28, 0xb7, 0x49, + 0xa3, 0x45, 0x72, 0xa2, 0x53, 0x1f, 0x8c, 0x07, 0xf2, 0xdb, 0x02, 0x39, + 0x6d, 0x3d, 0x6a, 0xc6, 0x52, 0xff, 0xfb, 0xd4, 0x60, 0x60, 0x89, 0x89, + 0x0b, 0x70, 0x3e, 0x83, 0xfa, 0x7b, 0x70, 0x51, 0x4e, 0x08, 0x41, 0x40, + 0x25, 0x6e, 0x1f, 0x2d, 0xc1, 0x00, 0xaf, 0xe1, 0x8d, 0xc1, 0x43, 0x82, + 0x21, 0x58, 0xc1, 0x0c, 0x00, 0x1b, 0xcc, 0x0a, 0x88, 0xe5, 0xca, 0x2a, + 0xfb, 0x53, 0x1c, 0x36, 0x03, 0x4c, 0xfc, 0x6f, 0x4e, 0xb5, 0x61, 0xd9, + 0xb8, 0x92, 0x5d, 0xa8, 0x55, 0xea, 0x16, 0x18, 0xe9, 0x45, 0x4a, 0xfa, + 0x76, 0x02, 0x72, 0x26, 0xcf, 0x45, 0xf6, 0x63, 0x41, 0x5e, 0x74, 0x32, + 0xdd, 0x54, 0xdf, 0xdb, 0x66, 0x50, 0xc7, 0x64, 0x45, 0x35, 0xb9, 0xa9, + 0x99, 0x56, 0x9a, 0x60, 0xc7, 0x7a, 0xc6, 0xab, 0x60, 0x59, 0x47, 0x29, + 0x9e, 0x2b, 0x21, 0x30, 0x9c, 0x4c, 0x70, 0x97, 0x99, 0xd7, 0x15, 0x2f, + 0x0e, 0x28, 0xed, 0x39, 0x8e, 0x32, 0x8d, 0x91, 0x9b, 0x4b, 0x83, 0x49, + 0x18, 0xac, 0x37, 0xce, 0x68, 0x07, 0x00, 0x2f, 0x3a, 0x93, 0x75, 0xad, + 0x74, 0x1d, 0xd3, 0x52, 0xe0, 0x71, 0x28, 0x0d, 0xe3, 0xf3, 0xc2, 0xd2, + 0x16, 0xb4, 0xcf, 0x8a, 0x15, 0x79, 0xe5, 0x7e, 0xc9, 0xbd, 0x5b, 0x5f, + 0xa3, 0xcc, 0xba, 0xf9, 0x76, 0xdd, 0x9d, 0x97, 0xff, 0xa3, 0xaa, 0xad, + 0x29, 0xa7, 0xf3, 0xa7, 0xed, 0xa5, 0x99, 0x9d, 0xe8, 0x9d, 0x6f, 0xc9, + 0xdb, 0x93, 0x4a, 0x55, 0xf5, 0x4b, 0x6e, 0x72, 0x9e, 0x96, 0x67, 0x46, + 0x21, 0x58, 0x83, 0x0a, 0x30, 0x1a, 0x56, 0x07, 0x41, 0x22, 0x07, 0x46, + 0xa0, 0xf0, 0xf8, 0x44, 0x60, 0x81, 0x81, 0xcc, 0x60, 0xe1, 0x03, 0x96, + 0x62, 0xce, 0xae, 0x30, 0x7a, 0x7d, 0x8b, 0x0e, 0x61, 0xa7, 0x82, 0x74, + 0x60, 0xc0, 0x01, 0xce, 0x60, 0x6b, 0x81, 0xee, 0x60, 0x44, 0x01, 0xe2, + 0x60, 0xa2, 0x84, 0x44, 0x60, 0x22, 0x80, 0x8c, 0x60, 0x52, 0x01, 0xaa, + 0x60, 0x19, 0x84, 0xec, 0x62, 0x53, 0x8e, 0x50, 0x61, 0xc9, 0x82, 0xd4, + 0x60, 0x2a, 0x00, 0xf6, 0x0c, 0xb2, 0xc2, 0xab, 0x73, 0x30, 0x45, 0x28, + 0x0d, 0xc2, 0x97, 0x37, 0x2a, 0x67, 0x6a, 0x9e, 0x95, 0xc5, 0x7e, 0xdf, + 0xd7, 0xdd, 0xc3, 0x72, 0x9e, 0x27, 0x86, 0x41, 0x2c, 0x8a, 0x3f, 0xcf, + 0x25, 0x0c, 0xb2, 0x42, 0xd0, 0x28, 0x68, 0xf9, 0x0d, 0x4a, 0xe9, 0xb2, + 0xad, 0x25, 0x6b, 0xaf, 0xd5, 0x57, 0xf6, 0x1e, 0x95, 0xc3, 0x16, 0x29, + 0xe5, 0x47, 0xc7, 0x88, 0x88, 0xcf, 0xf2, 0xd5, 0xcb, 0x51, 0x4d, 0xf5, + 0xcb, 0x10, 0x55, 0xae, 0xa1, 0x20, 0xd8, 0xc4, 0xf9, 0x51, 0xc1, 0x9a, + 0xf7, 0xd0, 0x8b, 0x4e, 0x5d, 0xb6, 0xdd, 0xe5, 0xcd, 0xc6, 0x66, 0x5b, + 0x30, 0x89, 0x74, 0x57, 0xf6, 0x4f, 0x90, 0xeb, 0x11, 0x9a, 0xd2, 0xa3, + 0x8f, 0x9e, 0xb6, 0x99, 0x7a, 0xc5, 0x8f, 0x34, 0x9c, 0xa7, 0x0c, 0x14, + 0x7d, 0x09, 0x56, 0x32, 0x72, 0xcc, 0x27, 0x90, 0xa7, 0x4c, 0xb6, 0xc7, + 0x57, 0x98, 0xce, 0x11, 0xa2, 0x3f, 0xba, 0x5f, 0x61, 0xf2, 0x0c, 0xf4, + 0x48, 0x78, 0xf3, 0xd1, 0x92, 0x57, 0x20, 0x28, 0xa4, 0x9c, 0x32, 0x60, + 0x96, 0x06, 0x6f, 0x48, 0x1d, 0x51, 0xb8, 0x72, 0xb9, 0x7a, 0xaa, 0xc7, + 0x5f, 0x49, 0x0f, 0x2f, 0x69, 0x4d, 0x9b, 0xe5, 0x8b, 0x55, 0x32, 0x75, + 0x52, 0x83, 0x44, 0xf3, 0xaa, 0x95, 0x6c, 0x86, 0x78, 0x14, 0xae, 0x36, + 0x0b, 0x32, 0x80, 0x03, 0x27, 0x62, 0x02, 0xa1, 0x85, 0x28, 0x25, 0x3c, + 0x65, 0xea, 0xa0, 0xa1, 0xb1, 0x02, 0xc0, 0x8f, 0x03, 0x99, 0x71, 0xb0, + 0x30, 0x76, 0x80, 0x19, 0x51, 0x19, 0x20, 0x13, 0x58, 0x41, 0xaa, 0x3e, + 0x45, 0xe5, 0x89, 0x95, 0x68, 0x80, 0x81, 0x86, 0x74, 0x51, 0xd0, 0xf1, + 0x47, 0xcd, 0x21, 0x42, 0xab, 0xe3, 0x18, 0x5c, 0xb0, 0xca, 0x16, 0xe5, + 0x6e, 0xf8, 0xcb, 0x18, 0x97, 0x8a, 0xb6, 0x35, 0x12, 0x44, 0xd8, 0x0d, + 0x07, 0x43, 0xcd, 0x0e, 0x05, 0x92, 0xe0, 0x80, 0x34, 0x98, 0x82, 0x9a, + 0x8a, 0x5e, 0x40, 0x03, 0x02, 0xc4, 0x03, 0x83, 0x06, 0x28, 0x05, 0x03, + 0x15, 0x44, 0x6f, 0x13, 0xc7, 0x24, 0x17, 0xa3, 0x0c, 0xa4, 0x02, 0x93, + 0x04, 0x48, 0x0a, 0x33, 0x08, 0x44, 0x06, 0x83, 0x01, 0xa0, 0x05, 0x83, + 0x09, 0xa8, 0x12, 0x73, 0x00, 0x20, 0x02, 0xd0, 0xc0, 0x05, 0x41, 0x80, + 0x2e, 0x98, 0x2c, 0x61, 0x3f, 0x98, 0x09, 0xa0, 0x10, 0x82, 0x00, 0x08, + 0x02, 0x74, 0x6d, 0x21, 0xca, 0x84, 0x6b, 0xc3, 0x0d, 0x77, 0x0d, 0xa1, + 0xc5, 0xb5, 0x5e, 0xe8, 0xf9, 0x1c, 0xe8, 0x62, 0xf0, 0xe0, 0x73, 0x57, + 0x27, 0x16, 0x4e, 0x96, 0xc6, 0xc2, 0xfa, 0xe1, 0x39, 0x32, 0x1b, 0xa3, + 0x79, 0x0d, 0x27, 0x45, 0xe0, 0xe9, 0x25, 0x27, 0x6a, 0xda, 0x18, 0xc6, + 0xde, 0xb8, 0x44, 0x39, 0x27, 0xd8, 0x13, 0xca, 0xd6, 0x5e, 0x48, 0x01, + 0x02, 0xc2, 0xe4, 0x64, 0x42, 0xa2, 0x52, 0xe8, 0xc0, 0x09, 0xa4, 0x0c, + 0x2f, 0x49, 0x9b, 0x24, 0x10, 0x40, 0xb2, 0x13, 0x2a, 0xc0, 0x9c, 0x4f, + 0x82, 0x73, 0x24, 0x50, 0xb5, 0x49, 0x9a, 0x20, 0x3d, 0x06, 0x18, 0xe9, + 0xda, 0x64, 0x30, 0x26, 0x4d, 0xb7, 0x72, 0x05, 0x62, 0x40, 0x85, 0xf3, + 0x65, 0xbb, 0x5d, 0x29, 0x16, 0x34, 0x96, 0x88, 0xd8, 0xd6, 0x4d, 0xf2, + 0x12, 0xc9, 0x36, 0x9c, 0xe4, 0x8d, 0x09, 0x12, 0xb0, 0x51, 0xd3, 0x55, + 0xb3, 0x0f, 0x25, 0x49, 0x72, 0x76, 0x61, 0x4c, 0x9e, 0x93, 0x08, 0x11, + 0x27, 0x39, 0xa6, 0xc6, 0x49, 0x87, 0xaa, 0xd4, 0x0b, 0x36, 0xa3, 0x04, + 0x88, 0x49, 0x9e, 0xf4, 0xf3, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd7, + 0x8e, 0x70, 0x40, 0x93, 0xef, 0x4b, 0x70, 0x6b, 0x4d, 0xf8, 0x21, 0x18, + 0x68, 0x6e, 0x24, 0x59, 0xd0, 0xfc, 0x0f, 0xbf, 0x0d, 0xc1, 0xca, 0x38, + 0x20, 0x41, 0x21, 0x95, 0xb8, 0x60, 0x60, 0x80, 0xe1, 0x0b, 0x10, 0x1d, + 0x55, 0x2b, 0x25, 0x18, 0xbc, 0x28, 0x88, 0xf2, 0xc4, 0x31, 0x12, 0x93, + 0x20, 0xd0, 0x51, 0x40, 0x0b, 0xab, 0x9d, 0x42, 0x61, 0x33, 0x5b, 0xef, + 0xd3, 0x30, 0xc2, 0x17, 0x4b, 0x91, 0x7a, 0xb8, 0x27, 0x4f, 0x74, 0xe8, + 0x42, 0x3c, 0x91, 0x0a, 0x9d, 0x2f, 0xb2, 0x0c, 0xe5, 0xc3, 0x69, 0xd4, + 0xf6, 0x9c, 0xf7, 0xdd, 0xdf, 0x71, 0x77, 0xf3, 0xcf, 0x75, 0x35, 0xfc, + 0xf5, 0x33, 0x57, 0x3d, 0x71, 0x68, 0xd3, 0x77, 0x7f, 0xa4, 0xca, 0xfd, + 0x57, 0x1b, 0xdd, 0xaf, 0xf1, 0x73, 0xda, 0x3c, 0xdd, 0xcc, 0xcc, 0xcb, + 0x47, 0xf7, 0xf7, 0x71, 0xcf, 0xfb, 0x16, 0xf7, 0x57, 0xbf, 0xfc, 0x45, + 0xed, 0xdc, 0x9b, 0x51, 0x30, 0x7c, 0xba, 0xb8, 0xe2, 0x4d, 0xec, 0xc9, + 0x83, 0x49, 0xb3, 0xdc, 0xf1, 0x71, 0xe2, 0x43, 0x0e, 0xb0, 0x90, 0xbb, + 0x2c, 0x3a, 0x30, 0x1f, 0x40, 0xc1, 0x30, 0x6b, 0x82, 0xe8, 0x31, 0x8e, + 0xe6, 0x75, 0x3f, 0x09, 0xca, 0x18, 0x30, 0xee, 0x41, 0xd9, 0x30, 0x66, + 0x00, 0x46, 0x30, 0xc7, 0x01, 0x36, 0x30, 0x23, 0x00, 0xbc, 0x30, 0xcb, + 0x41, 0xad, 0x30, 0x1e, 0x00, 0x37, 0x30, 0x02, 0xc0, 0x06, 0x02, 0x80, + 0xa8, 0x61, 0xcc, 0x09, 0xdc, 0x8a, 0x46, 0x00, 0x48, 0x02, 0x20, 0x13, + 0x10, 0xb2, 0x89, 0x46, 0x89, 0x4a, 0x21, 0x83, 0xb9, 0x65, 0xcc, 0xf2, + 0x55, 0xa1, 0x69, 0xc3, 0xb8, 0xd2, 0x26, 0x82, 0x9a, 0x1c, 0xe9, 0xe2, + 0xe2, 0x91, 0x71, 0x71, 0x2f, 0x8a, 0x22, 0x7e, 0xaf, 0x2d, 0xa5, 0x81, + 0x72, 0x6a, 0x28, 0x5b, 0x4b, 0xeb, 0x03, 0x1b, 0x03, 0x62, 0x2d, 0xc8, + 0xc4, 0x91, 0x6f, 0xa5, 0x55, 0x2a, 0x66, 0x1b, 0xd2, 0xb9, 0x24, 0x11, + 0x84, 0xb6, 0xe5, 0x14, 0xb2, 0x23, 0xd7, 0x7e, 0x53, 0x2f, 0x99, 0x94, + 0xd8, 0x87, 0xaf, 0x43, 0x99, 0x3a, 0xbb, 0x8d, 0x48, 0x20, 0x59, 0xcb, + 0x13, 0x12, 0xf9, 0xe8, 0xf4, 0xcb, 0xbb, 0x15, 0xa6, 0xa3, 0xd3, 0x62, + 0x88, 0xc4, 0x26, 0x6e, 0x5b, 0xb1, 0x2f, 0xa3, 0x82, 0xeb, 0xd1, 0x3b, + 0xd1, 0x28, 0x72, 0x37, 0x12, 0xbb, 0x6a, 0x51, 0x0e, 0x48, 0xe5, 0xd1, + 0x88, 0xc4, 0x19, 0x05, 0xe5, 0x1a, 0xaf, 0x72, 0x45, 0x29, 0x9c, 0x7f, + 0xac, 0xe5, 0x37, 0x0e, 0x4a, 0xe7, 0xa1, 0xe8, 0x63, 0x1d, 0x52, 0x4f, + 0xbb, 0xd2, 0xe8, 0x06, 0x49, 0x2b, 0xc2, 0x5b, 0x83, 0x60, 0xb7, 0x18, + 0xbd, 0x41, 0x29, 0x95, 0xf6, 0x2f, 0x2d, 0xa4, 0x86, 0x67, 0x25, 0xd3, + 0x56, 0x65, 0xfa, 0x96, 0x63, 0x94, 0x2e, 0x0d, 0x90, 0xcd, 0x58, 0xc6, + 0x04, 0x8a, 0xd5, 0xa0, 0xab, 0x6a, 0x2b, 0x20, 0xdc, 0xed, 0xea, 0x39, + 0x5e, 0x52, 0xab, 0x30, 0xd7, 0xe5, 0x0c, 0x4d, 0xb8, 0x12, 0x1c, 0x60, + 0xdb, 0xce, 0x43, 0xb7, 0x19, 0x85, 0xc3, 0xcc, 0xfe, 0x13, 0x22, 0x60, + 0xf2, 0x3b, 0x2d, 0xb4, 0x5d, 0xdf, 0x69, 0xf1, 0xa9, 0x0a, 0xbf, 0x69, + 0x10, 0xe2, 0x26, 0x15, 0x90, 0x1f, 0x6c, 0xc9, 0xb1, 0x36, 0xa2, 0x71, + 0x33, 0x46, 0x72, 0xb9, 0x8a, 0x8a, 0x49, 0x45, 0xa9, 0x1d, 0xce, 0x0a, + 0x12, 0xa1, 0x14, 0x83, 0x3e, 0xad, 0xbf, 0x86, 0xb9, 0x7d, 0xb6, 0xe7, + 0xe7, 0x9c, 0x3f, 0x33, 0x95, 0x64, 0x77, 0x41, 0x88, 0x7d, 0x6e, 0x98, + 0xc2, 0x6a, 0x8c, 0xcd, 0x9a, 0x53, 0x9a, 0xcd, 0xc9, 0x4c, 0x42, 0xee, + 0xe6, 0x23, 0xb1, 0xa5, 0x67, 0x46, 0x43, 0x32, 0x3d, 0x88, 0x4d, 0x0c, + 0xa5, 0x47, 0x3a, 0xcc, 0x59, 0x2a, 0xc7, 0x6a, 0xea, 0x92, 0x32, 0x6b, + 0x2a, 0xd9, 0x8e, 0xe9, 0x39, 0xea, 0xeb, 0x52, 0x14, 0x8c, 0xb6, 0x35, + 0x83, 0xc7, 0x17, 0x20, 0xab, 0x90, 0x69, 0x44, 0xc5, 0xc3, 0x82, 0xa3, + 0x88, 0x30, 0x06, 0x11, 0x20, 0x1c, 0x8a, 0x01, 0x12, 0x03, 0x84, 0x6a, + 0x30, 0x28, 0x01, 0xa5, 0x30, 0x17, 0x04, 0x9a, 0x30, 0xac, 0x7a, 0x71, + 0x38, 0x03, 0x4e, 0x90, 0x30, 0x5e, 0x43, 0x49, 0x30, 0x28, 0x83, 0x22, + 0x30, 0xb8, 0x83, 0x05, 0x30, 0x17, 0x00, 0x69, 0x30, 0x1f, 0x02, 0xba, + 0x30, 0x2a, 0xc0, 0x23, 0x30, 0x12, 0x00, 0x38, 0x04, 0x80, 0xa6, 0x63, + 0x14, 0x88, 0x4a, 0x60, 0x47, 0x00, 0x32, 0x60, 0x19, 0x80, 0x20, 0x76, + 0x1b, 0x76, 0x9c, 0x59, 0x2e, 0x3d, 0xf8, 0x0a, 0xdb, 0x60, 0x91, 0xc0, + 0x0b, 0x03, 0x0e, 0xaf, 0xf8, 0x53, 0x13, 0xb6, 0xd3, 0x28, 0x62, 0x70, + 0x86, 0x8b, 0x69, 0xbd, 0x7f, 0x59, 0xcb, 0xae, 0xc2, 0xa2, 0x4c, 0x3e, + 0x3c, 0xd9, 0xe5, 0x2e, 0x14, 0x6d, 0x62, 0x4e, 0x43, 0x6b, 0x95, 0xaf, + 0xbb, 0xf0, 0x75, 0xe8, 0xd4, 0x6a, 0x69, 0xad, 0xb2, 0x67, 0x51, 0xc1, + 0x1c, 0xa0, 0x59, 0x91, 0x9f, 0x6e, 0x04, 0xa8, 0xdf, 0xca, 0x85, 0xbc, + 0xc2, 0x3f, 0x55, 0x4c, 0xa9, 0x88, 0x8d, 0x6c, 0x47, 0x63, 0x77, 0x61, + 0x95, 0x00, 0xdf, 0x96, 0xb7, 0x16, 0x08, 0x48, 0x95, 0x3b, 0xf3, 0x7d, + 0x1a, 0xd4, 0x9e, 0x6f, 0x7e, 0xca, 0xce, 0xaa, 0x71, 0x32, 0xa1, 0x45, + 0x86, 0xa8, 0x84, 0x7d, 0x98, 0xb2, 0xb5, 0x44, 0x60, 0x5c, 0x3f, 0x49, + 0x4e, 0x86, 0xc6, 0x39, 0x5b, 0x32, 0xd4, 0xed, 0x9d, 0x72, 0xc0, 0x85, + 0x32, 0xbd, 0x5c, 0xbc, 0x76, 0xff, 0xfb, 0xd4, 0x60, 0x62, 0x8f, 0x89, + 0x1e, 0x74, 0x3e, 0x83, 0xf8, 0x7b, 0x70, 0x50, 0x4d, 0xe8, 0x41, 0x3c, + 0x25, 0x6e, 0x62, 0xed, 0xc0, 0xfa, 0x0f, 0xe1, 0xed, 0xc1, 0x65, 0x38, + 0x21, 0x5c, 0x81, 0x89, 0xb8, 0x8b, 0x51, 0x32, 0x23, 0x11, 0xaa, 0xd4, + 0x62, 0xb5, 0x28, 0xd7, 0xa8, 0xec, 0x49, 0xf7, 0x2b, 0x1c, 0x0d, 0xe9, + 0x36, 0x67, 0xcd, 0xf7, 0x4b, 0xee, 0x3a, 0xed, 0x46, 0xa0, 0x65, 0x5f, + 0x76, 0xf2, 0x56, 0x06, 0xf7, 0xee, 0x6e, 0xaa, 0xc4, 0xb4, 0xba, 0x63, + 0x83, 0x0e, 0x22, 0x2d, 0xea, 0xe1, 0x32, 0xd3, 0x75, 0x7b, 0x93, 0x5a, + 0x67, 0x46, 0x0c, 0x48, 0xaa, 0x28, 0x09, 0xd6, 0xa4, 0x2d, 0xc1, 0x1e, + 0x98, 0x4a, 0x9d, 0x10, 0x48, 0x3b, 0xf2, 0x79, 0x29, 0x72, 0x1e, 0x12, + 0xa2, 0x4b, 0xb0, 0x75, 0x92, 0xa0, 0xdd, 0x49, 0x81, 0xb0, 0x28, 0x86, + 0xf1, 0x6d, 0x02, 0x62, 0x60, 0x0b, 0x7f, 0xfe, 0x37, 0x48, 0x74, 0x96, + 0x91, 0x2d, 0x4b, 0x01, 0x95, 0x65, 0xc8, 0x81, 0x1b, 0x55, 0x5a, 0x90, + 0x25, 0x4f, 0xfc, 0xf8, 0x1c, 0x36, 0xdc, 0x85, 0x44, 0x3b, 0x32, 0x66, + 0x74, 0xcc, 0xff, 0x4d, 0xbb, 0xf7, 0x74, 0xeb, 0x91, 0xbd, 0x7b, 0x3b, + 0xb1, 0xd7, 0xb6, 0x6e, 0xd4, 0x6f, 0x4f, 0x7b, 0x7e, 0x9f, 0xeb, 0xd1, + 0x99, 0x11, 0x5f, 0xa3, 0x7a, 0x27, 0xbb, 0x18, 0xe5, 0x8a, 0x9d, 0x95, + 0x8a, 0x66, 0x52, 0x28, 0x7d, 0x51, 0x87, 0x89, 0x44, 0xe0, 0x23, 0x10, + 0x30, 0x52, 0x01, 0xdf, 0x30, 0x60, 0xc4, 0x92, 0x31, 0x18, 0x39, 0x37, + 0x37, 0xa8, 0x0d, 0xc8, 0x30, 0xb0, 0x82, 0xfd, 0x30, 0x5c, 0xc1, 0xba, + 0x31, 0x99, 0xc1, 0x97, 0x30, 0x29, 0x41, 0x1a, 0x30, 0xb2, 0x82, 0x43, + 0x01, 0x01, 0xee, 0x60, 0x10, 0x00, 0x8a, 0x60, 0x39, 0x80, 0x1c, 0x63, + 0x85, 0x01, 0xca, 0x60, 0xb4, 0x80, 0x0c, 0x60, 0x2a, 0x00, 0x02, 0x0f, + 0x7b, 0x80, 0xd5, 0xdf, 0x4a, 0x47, 0x41, 0x4d, 0x61, 0x31, 0x77, 0xa5, + 0xdf, 0x76, 0x21, 0xb9, 0xe8, 0x2a, 0x61, 0xa2, 0x3a, 0x6e, 0xc4, 0x11, + 0x26, 0x95, 0xed, 0xb5, 0x98, 0xa4, 0x6d, 0x1a, 0x64, 0xa2, 0x06, 0x87, + 0x35, 0x2f, 0x6b, 0x2e, 0x4f, 0x65, 0xd1, 0x69, 0x0c, 0x15, 0x0d, 0x59, + 0x9a, 0x94, 0xc8, 0x1c, 0x28, 0xb4, 0x37, 0x0d, 0xb3, 0x9d, 0x4c, 0x45, + 0x13, 0x99, 0x70, 0x68, 0x48, 0x9c, 0x6a, 0xe4, 0x1b, 0xe5, 0x72, 0x7d, + 0x90, 0xe9, 0x70, 0x52, 0x35, 0x38, 0x1c, 0x0b, 0xa6, 0x66, 0x07, 0x65, + 0xfd, 0x5c, 0x6d, 0x3f, 0x50, 0xa2, 0x66, 0x43, 0x5d, 0x23, 0xd3, 0x90, + 0xe0, 0x38, 0x3c, 0x55, 0xa1, 0x49, 0x38, 0x14, 0x57, 0x77, 0x3b, 0x66, + 0x90, 0xe1, 0xa3, 0x52, 0x8a, 0x04, 0xb1, 0xed, 0xa4, 0xec, 0x79, 0x4e, + 0x24, 0x39, 0x85, 0x65, 0xa9, 0x51, 0xb4, 0x21, 0x5f, 0xd9, 0x8d, 0x27, + 0xee, 0xa3, 0xa1, 0x24, 0x21, 0x8e, 0x8b, 0x94, 0x21, 0xb8, 0xec, 0xbb, + 0x32, 0x75, 0xc6, 0x3a, 0x68, 0xfc, 0x61, 0x66, 0x6e, 0x85, 0xd9, 0x97, + 0x95, 0xcf, 0x93, 0xad, 0x6f, 0x50, 0xb7, 0xf2, 0x17, 0x55, 0x7a, 0x92, + 0x22, 0x71, 0x85, 0x4e, 0xb0, 0xe0, 0xd8, 0xac, 0x56, 0x2d, 0xc8, 0xaf, + 0x6f, 0x82, 0x9a, 0xdc, 0x65, 0x44, 0x15, 0x99, 0xce, 0xa5, 0x2c, 0xeb, + 0xb6, 0xbb, 0x25, 0xcb, 0xe1, 0xc2, 0x85, 0xb2, 0xb0, 0xb2, 0xc5, 0x7b, + 0x88, 0xe7, 0xc2, 0x98, 0xb9, 0xc5, 0x63, 0x2f, 0x8a, 0x17, 0x31, 0xd6, + 0x4b, 0x22, 0x9a, 0xe1, 0x0e, 0x34, 0x40, 0x00, 0x31, 0xdd, 0x0f, 0xb9, + 0xad, 0xe9, 0x62, 0x6d, 0x29, 0xe5, 0x79, 0xc2, 0x2a, 0x79, 0xe7, 0x7d, + 0x5e, 0x9b, 0x05, 0xc2, 0x8b, 0x04, 0x30, 0xe2, 0x81, 0xa0, 0x57, 0x90, + 0x59, 0x1a, 0x4b, 0xd0, 0x88, 0x67, 0x75, 0x9a, 0x69, 0x2a, 0x9d, 0x69, + 0x64, 0xb5, 0x9c, 0xcb, 0xcd, 0x4d, 0x1d, 0xbf, 0xd7, 0xd7, 0x9f, 0xd1, + 0x74, 0x5f, 0x4d, 0xe6, 0xed, 0x5e, 0xb7, 0x5f, 0xff, 0xaf, 0x3d, 0x53, + 0x5d, 0xa9, 0xfd, 0x95, 0x67, 0x57, 0x66, 0x72, 0x58, 0xa8, 0x60, 0xe8, + 0x15, 0x03, 0xaa, 0x19, 0x83, 0x21, 0x9d, 0x43, 0xbd, 0x30, 0x59, 0x81, + 0x75, 0x30, 0x94, 0xc3, 0x3c, 0x31, 0xe3, 0x29, 0x0f, 0x3f, 0xae, 0x88, + 0x8a, 0x31, 0x27, 0x01, 0xad, 0x30, 0x67, 0x41, 0xdb, 0x30, 0x38, 0x83, + 0x0c, 0x30, 0x34, 0xc0, 0x61, 0x31, 0x04, 0xc0, 0x3b, 0x30, 0x34, 0x80, + 0x72, 0x22, 0x01, 0xbc, 0xc0, 0x98, 0x02, 0x90, 0xc6, 0x6d, 0x19, 0x50, + 0xc1, 0xb2, 0x01, 0x08, 0xc0, 0x2f, 0x00, 0x24, 0xe6, 0x10, 0x30, 0x77, + 0x70, 0x90, 0x69, 0x5c, 0x55, 0x2a, 0x9b, 0x49, 0xf8, 0x79, 0xb6, 0x9e, + 0x81, 0xe0, 0x35, 0xca, 0xe2, 0xc1, 0x34, 0xeb, 0x31, 0x6e, 0x2d, 0xe7, + 0xf5, 0x9b, 0x42, 0x9b, 0x9c, 0x45, 0xfe, 0x82, 0xdb, 0x83, 0xf8, 0xce, + 0x6c, 0x42, 0xe5, 0x0c, 0x25, 0x94, 0x45, 0x62, 0x1b, 0x82, 0x1f, 0xfb, + 0x4c, 0x09, 0xe2, 0x6b, 0x6e, 0xb5, 0x1b, 0xbf, 0x01, 0x21, 0x2b, 0x69, + 0xc8, 0x65, 0x89, 0x1a, 0xc2, 0x81, 0x69, 0x55, 0x9b, 0x8b, 0xb3, 0x29, + 0x0e, 0x53, 0x27, 0x19, 0xa0, 0x39, 0xaf, 0xa1, 0xeb, 0x6e, 0x4a, 0xf5, + 0x72, 0x21, 0xe3, 0x32, 0x16, 0xad, 0x82, 0xbb, 0x48, 0x33, 0x26, 0x94, + 0x8c, 0xcd, 0xc8, 0x85, 0x6a, 0x85, 0x99, 0x08, 0x61, 0x52, 0x4e, 0x91, + 0x71, 0x62, 0x52, 0x3d, 0x41, 0x26, 0x19, 0x22, 0xc3, 0x43, 0x24, 0x55, + 0x28, 0x51, 0x0b, 0xb2, 0xd8, 0xff, 0xfb, 0xd4, 0x60, 0x5e, 0x0f, 0x89, + 0x4a, 0x74, 0xbe, 0x83, 0xf9, 0x7b, 0x70, 0x54, 0x6d, 0x78, 0x69, 0x28, + 0xa2, 0x6e, 0x63, 0x7d, 0xd0, 0xfc, 0x0f, 0xe1, 0xed, 0xc1, 0x54, 0xb7, + 0xa1, 0x64, 0xf1, 0x89, 0xb9, 0xae, 0x5e, 0x8d, 0x1b, 0x4d, 0x48, 0x05, + 0x84, 0x7b, 0x5b, 0xf5, 0xd3, 0x29, 0x3e, 0xc9, 0xad, 0x0d, 0xa9, 0x45, + 0x68, 0xac, 0x4a, 0x1c, 0x3c, 0x6a, 0x8b, 0x1d, 0xe4, 0x66, 0x0f, 0x01, + 0x54, 0xd2, 0xc9, 0x83, 0x41, 0x0f, 0x8e, 0xcd, 0x68, 0xb0, 0x9e, 0xbe, + 0x60, 0x9a, 0x73, 0xdd, 0x77, 0x19, 0x37, 0x0d, 0x4a, 0x72, 0xab, 0xb2, + 0xa2, 0xaa, 0x4d, 0xeb, 0x33, 0x72, 0x96, 0x13, 0x1c, 0x45, 0xe9, 0x1b, + 0x49, 0x9b, 0x59, 0xb6, 0xf6, 0x0a, 0xa0, 0xf2, 0x55, 0x97, 0x65, 0x51, + 0xe5, 0x0c, 0xe4, 0x5a, 0x50, 0x1f, 0xac, 0x2c, 0x27, 0x52, 0x15, 0x19, + 0x56, 0x88, 0x6e, 0x41, 0xab, 0x15, 0xc3, 0x14, 0x1a, 0xc3, 0xa0, 0x09, + 0x36, 0x60, 0x7c, 0x97, 0x10, 0x1e, 0x40, 0x00, 0x13, 0xaf, 0xd4, 0x00, + 0x1b, 0x75, 0x52, 0x45, 0x72, 0x4c, 0xda, 0x25, 0x52, 0x84, 0xdb, 0x14, + 0x08, 0xa8, 0xa4, 0xec, 0x8a, 0xca, 0x88, 0xaf, 0x2e, 0xe6, 0x32, 0x3b, + 0x38, 0xe5, 0x22, 0xa9, 0x55, 0xdd, 0x5a, 0xa2, 0x10, 0x8b, 0x64, 0x65, + 0x31, 0x16, 0x8e, 0x47, 0xb6, 0xcb, 0x2d, 0x7b, 0x16, 0x9f, 0xd5, 0x09, + 0xb4, 0xa9, 0xd2, 0x9e, 0x9f, 0xb7, 0x7f, 0xff, 0xff, 0xab, 0x7e, 0x97, + 0xf5, 0x6e, 0xed, 0xd7, 0x5f, 0xd5, 0x9d, 0x9e, 0xf6, 0x5c, 0x33, 0xa2, + 0xa9, 0xd1, 0x50, 0x7c, 0xf2, 0x6a, 0x19, 0x81, 0xcc, 0x04, 0x39, 0x84, + 0x02, 0x05, 0xe1, 0x8e, 0x2c, 0x52, 0x89, 0xfb, 0x4c, 0x10, 0x59, 0x88, + 0x18, 0x01, 0x61, 0x82, 0x42, 0x01, 0xa1, 0x8d, 0x78, 0x01, 0xa9, 0x80, + 0xcc, 0x03, 0x39, 0x86, 0xf0, 0x0e, 0x90, 0x8c, 0x04, 0x13, 0x00, 0x98, + 0x03, 0x20, 0xa8, 0x11, 0x26, 0x1b, 0xa0, 0xed, 0xa6, 0x02, 0x88, 0x0c, + 0xa1, 0x40, 0x02, 0x86, 0x6a, 0xba, 0x1a, 0xfb, 0x36, 0x69, 0x92, 0xa6, + 0x1e, 0xc0, 0xef, 0x44, 0xe5, 0xcf, 0x3c, 0x14, 0xd9, 0xb2, 0x8c, 0x3b, + 0x10, 0xc4, 0x4d, 0xfc, 0x93, 0xd3, 0x3c, 0x4d, 0xd6, 0xa4, 0x3c, 0xfa, + 0xc3, 0xb0, 0x14, 0xb5, 0xf9, 0x93, 0xc3, 0xef, 0x03, 0xd9, 0x38, 0xfe, + 0x3a, 0x55, 0x5b, 0xf8, 0x8b, 0x4d, 0x6b, 0x73, 0x11, 0xd9, 0x96, 0x77, + 0x3f, 0x60, 0xfe, 0x50, 0x36, 0xa3, 0x17, 0xd5, 0xec, 0x0a, 0xa4, 0xf3, + 0x2a, 0x14, 0x67, 0xb1, 0x23, 0xdc, 0x14, 0xad, 0x8b, 0xa5, 0x4c, 0xcf, + 0x4e, 0x99, 0x99, 0x9e, 0x26, 0xde, 0x9c, 0xca, 0x95, 0x44, 0x27, 0xf7, + 0x65, 0xaa, 0x7d, 0x58, 0xa5, 0xdb, 0xc3, 0xa6, 0xce, 0x2e, 0xf7, 0x19, + 0x8d, 0xa9, 0x4a, 0xdf, 0x1d, 0x0a, 0x53, 0xc3, 0x4f, 0x9c, 0x36, 0x49, + 0xb8, 0x38, 0xce, 0xb7, 0x05, 0xfc, 0x34, 0xa3, 0x63, 0xc5, 0x5c, 0xae, + 0x69, 0x28, 0x0b, 0xea, 0xd8, 0xef, 0x0f, 0x07, 0xf0, 0x99, 0x14, 0x8f, + 0x95, 0x4d, 0xac, 0xa9, 0xe4, 0x25, 0x65, 0x4c, 0xc4, 0xf5, 0x76, 0xad, + 0x6d, 0x86, 0xa9, 0x57, 0xc1, 0x57, 0xaa, 0x66, 0x56, 0x2d, 0xb9, 0xbc, + 0x6a, 0xbb, 0x1e, 0x22, 0xb9, 0xa3, 0x17, 0x0a, 0x46, 0xdb, 0x29, 0x94, + 0xac, 0xfa, 0x50, 0xc7, 0x69, 0x8d, 0xb5, 0x7b, 0x93, 0xa8, 0x8c, 0x4f, + 0x57, 0xef, 0x0d, 0x85, 0x9a, 0x2c, 0x06, 0xc7, 0x97, 0x72, 0x96, 0x3c, + 0x14, 0x31, 0x09, 0x40, 0xaa, 0x92, 0xce, 0x69, 0x67, 0x17, 0xd1, 0x10, + 0xf5, 0x3b, 0x20, 0xa4, 0xac, 0x1b, 0x03, 0x08, 0xd3, 0x09, 0x39, 0xe2, + 0xb8, 0x0b, 0x60, 0x2a, 0x59, 0x40, 0x05, 0x14, 0x6f, 0xab, 0x4d, 0x4b, + 0x5f, 0x35, 0xf8, 0xc6, 0x7f, 0x87, 0x86, 0x40, 0xb3, 0x34, 0x5a, 0x53, + 0xc8, 0xde, 0x9e, 0xf9, 0x42, 0xf2, 0xcb, 0xce, 0xf0, 0x9d, 0x61, 0xb6, + 0x74, 0x2b, 0x33, 0x2f, 0x22, 0x1d, 0xb3, 0x6f, 0xd1, 0x12, 0x8f, 0xe8, + 0xc4, 0xd7, 0xa3, 0x6f, 0xfa, 0x22, 0x57, 0xfb, 0xa3, 0xff, 0x6a, 0xaf, + 0x32, 0x27, 0xf9, 0xfd, 0xff, 0xdf, 0xef, 0xff, 0xbd, 0x0a, 0x47, 0x3a, + 0xea, 0xb7, 0x16, 0xe2, 0xdc, 0xe6, 0x61, 0x8d, 0x71, 0x01, 0xc6, 0x1c, + 0xc0, 0x94, 0x15, 0x22, 0x30, 0x1c, 0x00, 0x80, 0x30, 0x6a, 0x41, 0xd1, + 0x31, 0x92, 0x19, 0xd0, 0x3e, 0xbb, 0x08, 0x1b, 0x30, 0xe7, 0x01, 0x74, + 0x30, 0x5b, 0x42, 0x3a, 0x30, 0xa9, 0xc3, 0x8b, 0x30, 0x20, 0x40, 0xbe, + 0x30, 0x9d, 0x43, 0x21, 0x00, 0x00, 0x3c, 0x60, 0x1a, 0x80, 0xae, 0x60, + 0x33, 0x82, 0x74, 0x60, 0x9c, 0x10, 0x24, 0x60, 0x16, 0x81, 0x04, 0x16, + 0x00, 0x5c, 0x0a, 0xa5, 0x83, 0x76, 0x11, 0xe5, 0xda, 0x90, 0x59, 0xce, + 0x44, 0xff, 0xb7, 0xac, 0x6d, 0xf4, 0x7e, 0x64, 0x0d, 0x15, 0x87, 0xd0, + 0xbd, 0x33, 0x4c, 0x41, 0x2a, 0x20, 0xda, 0x8d, 0x05, 0xdb, 0x72, 0xdb, + 0x26, 0xa3, 0x50, 0xe4, 0x04, 0xe1, 0x4b, 0x9c, 0xee, 0x42, 0xd9, 0xb5, + 0xe7, 0x62, 0x62, 0x8a, 0xcd, 0xc8, 0x02, 0x96, 0x0d, 0x86, 0xe8, 0xca, + 0x4b, 0x2f, 0x1c, 0x30, 0x93, 0xe6, 0x43, 0x11, 0x2e, 0x5d, 0x2b, 0xd1, + 0x2f, 0x8f, 0x75, 0x7a, 0x41, 0x90, 0xf0, 0x78, 0x96, 0x47, 0x2e, 0xd1, + 0xa6, 0xe3, 0x73, 0x29, 0x92, 0xa0, 0x81, 0x4c, 0xbd, 0x5f, 0x62, 0x72, + 0x82, 0x90, 0x2f, 0xec, 0xc6, 0xe4, 0x17, 0xab, 0xc8, 0xf3, 0x45, 0xbe, + 0x31, 0x94, 0xb8, 0x78, 0xe0, 0xff, 0xfb, 0xd4, 0x60, 0x54, 0x89, 0x89, + 0x0a, 0x74, 0xbe, 0x83, 0xf8, 0x7b, 0x70, 0x53, 0x0e, 0x08, 0x45, 0x3c, + 0x25, 0x6e, 0x25, 0x3d, 0xd2, 0xfa, 0xaf, 0xe1, 0xed, 0xc1, 0x62, 0xb7, + 0xa1, 0x5c, 0x72, 0x89, 0xb9, 0xd0, 0xc0, 0xea, 0x47, 0x36, 0x44, 0x61, + 0xe0, 0x77, 0x31, 0x4c, 0xd4, 0x75, 0xb0, 0xc8, 0x93, 0x74, 0xcc, 0xf2, + 0x3a, 0xa5, 0xf2, 0xa5, 0x5e, 0x95, 0x7d, 0xda, 0x9b, 0xd1, 0x69, 0xd6, + 0x56, 0x27, 0x17, 0x68, 0x53, 0x2b, 0x12, 0xb6, 0x45, 0xdc, 0x6c, 0xc0, + 0x4c, 0x3b, 0x3d, 0x1f, 0xbc, 0x42, 0x14, 0xfb, 0x78, 0xcc, 0xda, 0xab, + 0x63, 0x7c, 0xc6, 0xe2, 0xf8, 0xf2, 0x56, 0x9e, 0x4a, 0xb5, 0x75, 0x94, + 0x8f, 0x5f, 0x2c, 0xc1, 0x3c, 0x9a, 0xa2, 0x48, 0x9e, 0x72, 0x49, 0x59, + 0xc3, 0xa3, 0x1f, 0x5d, 0xf3, 0xf3, 0xe9, 0x4c, 0x9e, 0x4f, 0xa5, 0x97, + 0x2f, 0x1f, 0xe4, 0xf4, 0x69, 0x76, 0x6c, 0x23, 0x53, 0x92, 0x93, 0xa4, + 0x81, 0xd6, 0xf0, 0xf7, 0x9d, 0x56, 0x2d, 0xec, 0xc2, 0xc6, 0x19, 0xc2, + 0x80, 0x4c, 0x0d, 0x60, 0x24, 0x40, 0x09, 0xc0, 0x09, 0x7b, 0xef, 0x13, + 0x6e, 0xd0, 0xf3, 0x7b, 0xeb, 0x14, 0xc3, 0x21, 0x06, 0xdf, 0xd0, 0x86, + 0xa7, 0xa3, 0xb9, 0x6a, 0x64, 0x88, 0x44, 0xc0, 0xc0, 0x54, 0x82, 0x12, + 0x2e, 0xf3, 0xb1, 0x95, 0x92, 0xbf, 0xee, 0xfd, 0x5d, 0xb5, 0xea, 0xc8, + 0xb4, 0xf7, 0xff, 0xd9, 0xf2, 0x65, 0xe8, 0x99, 0x5b, 0xff, 0xd3, 0xd2, + 0x7e, 0xee, 0x7c, 0x8a, 0xff, 0xf5, 0xed, 0xf5, 0xa6, 0xee, 0xe8, 0x59, + 0x4c, 0xaa, 0x54, 0xc6, 0x14, 0x46, 0x10, 0x29, 0x4c, 0x40, 0x89, 0x48, + 0x85, 0x39, 0x4e, 0xe3, 0xc3, 0x33, 0x01, 0x8c, 0x11, 0x43, 0x02, 0x4c, + 0x2e, 0x13, 0x0b, 0xd2, 0x82, 0x83, 0x8a, 0x10, 0xaa, 0x73, 0x06, 0xb8, + 0x25, 0xc3, 0x05, 0x9c, 0x29, 0x53, 0x1b, 0xcc, 0x28, 0x63, 0x05, 0xbc, + 0x19, 0x13, 0x07, 0x54, 0x3c, 0x21, 0xa0, 0x03, 0x8c, 0x03, 0x10, 0x08, + 0x0c, 0x09, 0x20, 0x25, 0xcc, 0x50, 0xd1, 0x7f, 0x4c, 0x15, 0xe0, 0x17, + 0x4c, 0x04, 0x10, 0x06, 0x81, 0xdd, 0x2e, 0xd3, 0x90, 0xf6, 0xce, 0x43, + 0x51, 0x07, 0x66, 0x86, 0xbb, 0x5f, 0x65, 0xe9, 0xd6, 0xa5, 0xad, 0x2d, + 0xff, 0x24, 0x02, 0xc3, 0xc2, 0x1b, 0xc7, 0x99, 0x96, 0x72, 0x5e, 0xeb, + 0xac, 0x34, 0x71, 0xab, 0x62, 0xce, 0x62, 0x10, 0x9b, 0x0b, 0xfb, 0xd8, + 0x6b, 0x19, 0x7a, 0x57, 0x5b, 0xfd, 0x06, 0x2f, 0xd8, 0x83, 0x92, 0xe2, + 0x37, 0x16, 0x5a, 0xdc, 0x5d, 0x94, 0x34, 0xb6, 0x92, 0x93, 0x38, 0x9a, + 0xa3, 0x53, 0xac, 0xac, 0x8e, 0x4a, 0x52, 0x08, 0x56, 0x28, 0x0f, 0x29, + 0x1b, 0x60, 0xaa, 0x96, 0x0d, 0x18, 0x4a, 0x13, 0xf0, 0xf8, 0x6f, 0xd2, + 0xc6, 0xa1, 0x30, 0xae, 0xa0, 0x42, 0x59, 0x56, 0xc5, 0x28, 0x55, 0x89, + 0xe8, 0x08, 0xe5, 0x33, 0x2b, 0x12, 0x9e, 0x19, 0xae, 0xc4, 0xfa, 0x31, + 0xfe, 0xed, 0xfd, 0xdf, 0x27, 0x55, 0xe7, 0xf3, 0x03, 0xda, 0x1f, 0xef, + 0x94, 0x2e, 0x23, 0xd4, 0xee, 0x0a, 0x99, 0x8d, 0xca, 0x32, 0x75, 0x2e, + 0x99, 0x6c, 0x5a, 0x72, 0x60, 0x55, 0xab, 0x13, 0xeb, 0x2a, 0x93, 0xf9, + 0xc4, 0xfe, 0xd4, 0xe7, 0xec, 0x66, 0xd6, 0xe6, 0xc8, 0xeb, 0x4a, 0x67, + 0x4a, 0xd8, 0x50, 0x1a, 0x8f, 0xa8, 0xf3, 0x24, 0x8d, 0x25, 0x23, 0x13, + 0x52, 0x9d, 0x9d, 0x70, 0xca, 0xc1, 0x94, 0x31, 0xfb, 0x7c, 0x66, 0xd6, + 0x36, 0xb6, 0xf6, 0x15, 0x73, 0xd7, 0xaf, 0x5c, 0x5e, 0xbd, 0x52, 0xdd, + 0x4d, 0x0a, 0x13, 0x29, 0x96, 0xba, 0x5a, 0x84, 0xad, 0x4f, 0x3b, 0x50, + 0xa1, 0x09, 0xd4, 0xb9, 0xf0, 0x6f, 0xd1, 0x42, 0x9f, 0x55, 0xb5, 0x21, + 0x47, 0xcb, 0xb2, 0x41, 0xa3, 0x74, 0x59, 0x48, 0x60, 0x71, 0xac, 0x86, + 0x58, 0x55, 0x09, 0x18, 0x91, 0x00, 0x00, 0x06, 0x5a, 0xa1, 0xca, 0x55, + 0xf3, 0x93, 0x29, 0x4c, 0xce, 0x8c, 0xc8, 0x97, 0x5a, 0x66, 0x95, 0xdb, + 0x72, 0xec, 0x63, 0x8e, 0x73, 0x02, 0x48, 0x3e, 0x49, 0xd4, 0xa4, 0x2b, + 0x1d, 0xa8, 0xae, 0x84, 0x44, 0x26, 0x6d, 0x3a, 0x3d, 0xdd, 0x7b, 0x5f, + 0xb2, 0x5d, 0x1b, 0xd3, 0xfb, 0xd1, 0x3b, 0x7b, 0x7a, 0xff, 0x6b, 0xf6, + 0x5f, 0x7d, 0x97, 0x4f, 0xf5, 0xbe, 0x94, 0xd5, 0xfe, 0xac, 0x8e, 0xca, + 0xcd, 0xba, 0x83, 0x2b, 0x31, 0x0c, 0x60, 0xe7, 0x64, 0x87, 0x2b, 0x01, + 0x9d, 0x43, 0x19, 0x0a, 0x3b, 0x87, 0xc2, 0x30, 0x3c, 0x41, 0x6e, 0x30, + 0x35, 0x83, 0x51, 0x30, 0x9f, 0xef, 0xc8, 0x32, 0x49, 0xcb, 0x4f, 0x30, + 0x62, 0x42, 0x76, 0x30, 0x51, 0x83, 0x5b, 0x31, 0xc3, 0x83, 0x8c, 0x30, + 0x5f, 0x81, 0xd9, 0x30, 0x5c, 0x81, 0xe7, 0x30, 0x1e, 0xc0, 0x0a, 0x07, + 0x00, 0xb0, 0x60, 0x1b, 0x80, 0xb4, 0x63, 0x7d, 0x01, 0xfa, 0x61, 0x1d, + 0x80, 0xaa, 0x0e, 0x02, 0x74, 0x16, 0x92, 0x14, 0x25, 0x7b, 0x70, 0x7d, + 0xa4, 0x13, 0xef, 0xe3, 0xb6, 0xc1, 0xdc, 0x37, 0xda, 0x46, 0xd2, 0x99, + 0xcc, 0x33, 0x8c, 0x3b, 0x40, 0xd7, 0x98, 0x14, 0x14, 0xd2, 0xa4, 0x0d, + 0xd7, 0x28, 0x2a, 0x06, 0x54, 0xed, 0x35, 0x31, 0xe4, 0xad, 0xa3, 0x22, + 0x8a, 0xbf, 0xeb, 0xf6, 0x61, 0x97, 0x44, 0x64, 0x50, 0x23, 0xf8, 0xfb, + 0x38, 0x8a, 0x6e, 0xce, 0xa1, 0x88, 0x2c, 0xe6, 0x2d, 0xe8, 0xc2, 0x68, + 0xea, 0xec, 0x89, 0x72, 0x5c, 0x70, 0xa8, 0x55, 0xa8, 0xa3, 0x99, 0x69, + 0x2c, 0xaa, 0x63, 0x53, 0x2a, 0xff, 0xfb, 0xd4, 0x60, 0x47, 0x0f, 0x99, + 0x64, 0x74, 0xbe, 0x03, 0xf9, 0x7b, 0x70, 0x55, 0xed, 0x98, 0x46, 0x20, + 0x62, 0x6e, 0x65, 0xb5, 0xce, 0xf8, 0x0f, 0xe1, 0xed, 0xc1, 0x5b, 0x37, + 0xa1, 0x08, 0x61, 0x89, 0xb9, 0x19, 0x89, 0xb2, 0xab, 0x26, 0x6b, 0xc2, + 0xd8, 0xc4, 0xa8, 0x91, 0x54, 0xe2, 0xa7, 0x37, 0xd7, 0x64, 0xe1, 0x84, + 0xdc, 0x59, 0x5d, 0xc8, 0xde, 0xbb, 0x88, 0x9e, 0xaa, 0xd3, 0x71, 0xe2, + 0x5e, 0x50, 0xd6, 0x73, 0xbd, 0x88, 0xfa, 0x7f, 0x1d, 0x69, 0x45, 0x13, + 0x2a, 0xe4, 0xef, 0x51, 0xa1, 0x6d, 0x69, 0x42, 0xe6, 0xda, 0x87, 0xa4, + 0x10, 0xa7, 0xaa, 0x26, 0xe5, 0x0d, 0x55, 0xcb, 0x2b, 0x95, 0xa6, 0x37, + 0x85, 0xe2, 0x90, 0xd3, 0x68, 0x24, 0xf9, 0xbd, 0x5c, 0x2a, 0x94, 0x07, + 0xea, 0xe1, 0xfb, 0x94, 0x48, 0x4d, 0x8f, 0x95, 0xce, 0x9f, 0x29, 0x95, + 0x4f, 0xde, 0x2e, 0xdf, 0x97, 0xc3, 0x65, 0xd3, 0x42, 0x2a, 0x22, 0x79, + 0x6c, 0xe8, 0x78, 0x9e, 0x8a, 0x8d, 0xc2, 0xb9, 0xc5, 0xb2, 0x1b, 0xd4, + 0x4c, 0x57, 0xac, 0x70, 0x15, 0xcd, 0xcb, 0x57, 0xa1, 0xbc, 0x2e, 0x16, + 0x4e, 0x2c, 0x34, 0x97, 0xb6, 0x06, 0x75, 0xe8, 0x27, 0xaa, 0x69, 0x76, + 0x5c, 0x0e, 0x82, 0xe4, 0x6a, 0x1d, 0xc1, 0x78, 0x36, 0xc6, 0x41, 0x8e, + 0x15, 0x60, 0xcd, 0x22, 0x41, 0x30, 0x0c, 0xd0, 0x03, 0xaa, 0xa0, 0x00, + 0xa5, 0x7b, 0x63, 0x57, 0x83, 0x29, 0xda, 0x29, 0x4f, 0x55, 0x8f, 0x54, + 0xbe, 0xd2, 0x26, 0x21, 0x8c, 0x19, 0xa2, 0xf0, 0xeb, 0x45, 0xd1, 0xff, + 0x27, 0x32, 0xb7, 0x33, 0xcb, 0x4d, 0xc8, 0x97, 0x44, 0x2c, 0xfa, 0x99, + 0x95, 0x73, 0x4e, 0xd4, 0x5a, 0x4d, 0xd3, 0xfb, 0x59, 0x34, 0xf5, 0xfe, + 0x4a, 0xf4, 0xd2, 0xbf, 0xe4, 0x57, 0xdb, 0xda, 0xca, 0x6d, 0x91, 0xdf, + 0xf7, 0x77, 0xfc, 0x86, 0xda, 0xdd, 0x64, 0xdc, 0xe5, 0x2b, 0xa8, 0x77, + 0x6b, 0x86, 0x10, 0x09, 0x05, 0xa0, 0x66, 0x96, 0xa8, 0x26, 0x07, 0x68, + 0x24, 0x46, 0x0b, 0xc0, 0x54, 0xa6, 0x2b, 0x6c, 0xf3, 0x87, 0x2a, 0x98, + 0xc1, 0x26, 0x19, 0xd8, 0x26, 0x46, 0x0b, 0x60, 0x51, 0x86, 0x28, 0x10, + 0x78, 0x66, 0x09, 0x60, 0x28, 0x46, 0x05, 0xf0, 0x34, 0x46, 0x06, 0x28, + 0x07, 0xec, 0x2c, 0x64, 0x0b, 0x83, 0x18, 0xfc, 0x65, 0x23, 0x03, 0xb8, + 0x0c, 0x23, 0x01, 0x14, 0x00, 0xb0, 0x52, 0x0b, 0x8e, 0xb4, 0x1d, 0x56, + 0xe6, 0xc1, 0x1e, 0xd9, 0x03, 0x49, 0x69, 0x4c, 0x45, 0x9c, 0x8c, 0x81, + 0x35, 0xfb, 0xa5, 0x94, 0xae, 0x95, 0x7a, 0xf5, 0xa3, 0x5c, 0x4d, 0x99, + 0xba, 0x41, 0x93, 0x8b, 0x95, 0x22, 0xe6, 0xa7, 0xa1, 0x95, 0x2c, 0x51, + 0x28, 0x29, 0xfe, 0x69, 0xf0, 0xfc, 0xa6, 0x58, 0xff, 0x53, 0xba, 0x0c, + 0x06, 0x9a, 0x92, 0x0d, 0x7a, 0x1b, 0xf7, 0x59, 0x0b, 0x36, 0xd4, 0xed, + 0x11, 0x25, 0x43, 0x17, 0x11, 0x54, 0xa5, 0xfd, 0x3e, 0x9c, 0x27, 0x0d, + 0x06, 0x9b, 0x19, 0xde, 0x8f, 0x63, 0x27, 0x24, 0xbd, 0xb2, 0xee, 0x47, + 0xd6, 0xd0, 0xd4, 0xab, 0x42, 0x35, 0x5e, 0xa9, 0x38, 0x54, 0x4f, 0x51, + 0xce, 0x6c, 0xed, 0xc6, 0x19, 0x08, 0x54, 0x48, 0xd4, 0xcc, 0x88, 0x57, + 0x2c, 0xd5, 0xcd, 0xc9, 0x41, 0x01, 0x4a, 0x3e, 0x18, 0x18, 0xdc, 0x98, + 0x8f, 0x77, 0x36, 0x47, 0x07, 0xb3, 0x21, 0x09, 0xf3, 0xb9, 0xc0, 0xe3, + 0x57, 0x23, 0x97, 0x48, 0x54, 0x86, 0x21, 0xa2, 0x8c, 0x2e, 0xa6, 0x82, + 0xd9, 0xda, 0xb7, 0x22, 0x69, 0xa5, 0x36, 0xc4, 0xd2, 0x88, 0x90, 0xb8, + 0x2d, 0x24, 0x1a, 0xcd, 0x14, 0x39, 0x7d, 0x86, 0x0c, 0x05, 0x41, 0x90, + 0xc9, 0x99, 0x8f, 0xd7, 0xf1, 0x59, 0xd0, 0xb4, 0xf2, 0xca, 0x71, 0x5c, + 0xd8, 0xab, 0xa1, 0xdc, 0x7f, 0x23, 0x54, 0x4a, 0xe6, 0xf4, 0xaa, 0x98, + 0xbf, 0xc7, 0x88, 0xdd, 0x0d, 0x89, 0x3c, 0xc2, 0x76, 0xb8, 0x34, 0xc6, + 0x71, 0x50, 0xa7, 0x17, 0x48, 0xf3, 0x7d, 0x0e, 0x16, 0x52, 0xc0, 0x68, + 0xa5, 0x04, 0xe6, 0x01, 0x3f, 0x51, 0x9d, 0x0e, 0x54, 0x21, 0xa4, 0x10, + 0xc9, 0x6e, 0x26, 0x06, 0x50, 0x8b, 0x04, 0x7c, 0x28, 0x20, 0xf6, 0x26, + 0x40, 0x5e, 0xf0, 0x99, 0xaf, 0x48, 0x31, 0xec, 0xdf, 0x82, 0xed, 0xaf, + 0x4a, 0x4f, 0x63, 0x3f, 0x2e, 0xc7, 0x31, 0xa2, 0x15, 0x29, 0xed, 0x14, + 0xf2, 0xb5, 0x2b, 0x58, 0xf6, 0xa5, 0x9f, 0x4d, 0x9b, 0x76, 0x3e, 0xc4, + 0xcf, 0x56, 0x9e, 0xe7, 0xdf, 0x6f, 0xed, 0xed, 0x77, 0xdd, 0x68, 0xb7, + 0xf5, 0x76, 0x75, 0xe7, 0xfb, 0x2f, 0xb5, 0x3b, 0xad, 0xab, 0xea, 0x97, + 0xcf, 0xd1, 0x97, 0x77, 0xb5, 0x10, 0xee, 0x8c, 0xac, 0x4c, 0x84, 0xca, + 0x85, 0x1d, 0x88, 0x40, 0x6e, 0xa7, 0x20, 0x20, 0xac, 0x04, 0x82, 0x30, + 0x4c, 0x4a, 0x58, 0x0c, 0x0a, 0xd0, 0x26, 0x0c, 0x15, 0xe0, 0x53, 0x4c, + 0x47, 0x75, 0x2f, 0x0e, 0x95, 0x10, 0x73, 0xcc, 0x2d, 0x90, 0x16, 0x0c, + 0x04, 0x00, 0x49, 0x8c, 0x75, 0xb0, 0x5b, 0xcc, 0x0e, 0xb0, 0x2b, 0x8c, + 0x24, 0x50, 0x90, 0x4c, 0x01, 0xa0, 0x02, 0x4c, 0x00, 0xd0, 0x04, 0x0c, + 0x02, 0x30, 0x22, 0x4c, 0x33, 0xe1, 0xc3, 0x4c, 0x02, 0xf0, 0x21, 0xcc, + 0x00, 0x00, 0x07, 0x04, 0x65, 0x53, 0x45, 0x6f, 0x6a, 0x54, 0x0d, 0x3d, + 0x78, 0xda, 0xa7, 0x95, 0x44, 0xa0, 0x48, 0x61, 0xac, 0xc6, 0x5d, 0xf6, + 0x40, 0xd9, 0xa2, 0xed, 0xdd, 0x97, 0xb9, 0x4f, 0xe6, 0xad, 0xb5, 0xe5, + 0xa0, 0xa0, 0x0e, 0x82, 0xd0, 0xff, 0xfb, 0xd4, 0x60, 0x31, 0x88, 0x89, + 0x38, 0x73, 0x3e, 0x8b, 0xf8, 0x7b, 0x70, 0x53, 0x8e, 0x08, 0x56, 0x14, + 0x65, 0x6e, 0x1f, 0x95, 0xd5, 0x0f, 0xaf, 0x61, 0xed, 0xc1, 0x67, 0xb7, + 0xa1, 0x18, 0x31, 0x95, 0xb9, 0x86, 0xd9, 0x83, 0x7c, 0xcc, 0x65, 0x94, + 0xd1, 0x46, 0x20, 0xed, 0x46, 0x97, 0x43, 0xaf, 0x0c, 0x32, 0xca, 0x8e, + 0x15, 0x47, 0xdd, 0xc4, 0x35, 0x14, 0x8f, 0x89, 0x63, 0xe3, 0x15, 0x74, + 0x77, 0x1d, 0x08, 0x5a, 0x44, 0xe2, 0x74, 0xe0, 0x87, 0x3f, 0x4b, 0x41, + 0x39, 0x19, 0x14, 0xcd, 0x52, 0x41, 0x6a, 0x50, 0x2f, 0x37, 0x2e, 0xd4, + 0xc6, 0xba, 0xa1, 0x51, 0x57, 0x87, 0xe3, 0x9a, 0x91, 0x85, 0xcd, 0x43, + 0x47, 0xab, 0xcb, 0x2d, 0x8c, 0xca, 0x03, 0xfd, 0x69, 0x42, 0x9d, 0x7f, + 0x94, 0x6b, 0x55, 0x91, 0x08, 0xd7, 0x27, 0x8b, 0xb7, 0xae, 0xce, 0x85, + 0x44, 0x46, 0xe5, 0x2a, 0x9a, 0x66, 0xa3, 0xfa, 0x74, 0x2e, 0xb5, 0xb2, + 0xb9, 0x61, 0xd3, 0x72, 0xb2, 0x55, 0x62, 0xad, 0x0c, 0xe7, 0x59, 0xd0, + 0xdc, 0xf5, 0xb5, 0x8e, 0xec, 0x2d, 0x27, 0xaa, 0xcc, 0x74, 0x93, 0x9b, + 0x16, 0x55, 0x8a, 0x34, 0xe3, 0x89, 0xbc, 0xd8, 0xd4, 0xf1, 0x4a, 0xc7, + 0x09, 0x4b, 0x09, 0x53, 0x66, 0x74, 0x25, 0xa9, 0x38, 0xb5, 0xa7, 0x93, + 0xb7, 0xc4, 0x84, 0xba, 0x5e, 0x6b, 0x6a, 0x72, 0x45, 0xbe, 0xed, 0xc8, + 0x72, 0x3d, 0x89, 0x4e, 0xe4, 0x66, 0x9f, 0xe6, 0xe8, 0xe9, 0x56, 0x25, + 0x52, 0xe2, 0xbe, 0xaf, 0x4f, 0x92, 0xb2, 0x62, 0x3f, 0x65, 0x39, 0x87, + 0xa4, 0xdc, 0x1c, 0xa1, 0x3e, 0x1d, 0x49, 0xb0, 0xed, 0x00, 0x74, 0x52, + 0x00, 0x07, 0xb1, 0x87, 0x91, 0x76, 0x21, 0xcb, 0x77, 0x9e, 0xa5, 0x5d, + 0xb8, 0x44, 0x48, 0x6e, 0x69, 0xe6, 0xa9, 0x58, 0xe9, 0xff, 0x3f, 0x2c, + 0x19, 0x1c, 0x29, 0x39, 0x77, 0x3b, 0xa5, 0x68, 0x8e, 0xf3, 0xfd, 0xdc, + 0xcf, 0xab, 0xed, 0x37, 0xfd, 0xd5, 0x1b, 0xfb, 0xff, 0x2f, 0xf4, 0x7f, + 0x46, 0xff, 0xd3, 0x5f, 0x42, 0xf5, 0xb7, 0xa1, 0xff, 0xf5, 0x6a, 0x5d, + 0xfb, 0x7c, 0xd2, 0x4c, 0x91, 0x01, 0x67, 0x23, 0x0f, 0x0f, 0x10, 0x5c, + 0x51, 0x90, 0x40, 0xa5, 0x1e, 0x38, 0x06, 0x51, 0x40, 0x26, 0xdf, 0xfd, + 0xf5, 0x88, 0x09, 0x00, 0x90, 0x18, 0x1e, 0x0c, 0x44, 0x41, 0x60, 0xec, + 0x64, 0x20, 0x08, 0x84, 0xa8, 0xc0, 0x38, 0x2b, 0xcc, 0x19, 0x43, 0xa0, + 0x44, 0x07, 0x26, 0x07, 0xa1, 0x88, 0x55, 0x00, 0xc4, 0x7d, 0x10, 0x81, + 0x51, 0x82, 0xa0, 0xe3, 0x18, 0x07, 0x80, 0x13, 0xa3, 0x0d, 0x55, 0xdc, + 0xba, 0x5e, 0xf4, 0x3e, 0x8a, 0xaa, 0xd7, 0x22, 0x6e, 0xd2, 0xa9, 0x27, + 0xda, 0xc2, 0x39, 0xa8, 0x54, 0xe8, 0xbf, 0xac, 0xe9, 0x16, 0x12, 0x51, + 0x78, 0x24, 0x20, 0x10, 0x45, 0xbb, 0x90, 0xab, 0x0a, 0x99, 0xbd, 0x2f, + 0xc3, 0x2b, 0x77, 0x5e, 0x66, 0x52, 0xd8, 0x13, 0x02, 0xd2, 0xbd, 0x50, + 0x04, 0xf3, 0x8f, 0x6e, 0x1a, 0x7e, 0x5e, 0x56, 0xb0, 0xd4, 0x5d, 0x64, + 0x2e, 0x2f, 0xe7, 0x49, 0x0f, 0x6c, 0x15, 0x47, 0x42, 0x8c, 0x8b, 0x09, + 0x31, 0x61, 0x28, 0x55, 0xc7, 0xc1, 0x2b, 0x5f, 0x3e, 0xcf, 0x75, 0x94, + 0x62, 0xb4, 0xe8, 0x7c, 0x60, 0x44, 0x53, 0x31, 0xc9, 0x14, 0xc0, 0x5e, + 0x6b, 0x50, 0x29, 0xce, 0x6a, 0x28, 0x4e, 0x04, 0x02, 0xfa, 0x06, 0x3b, + 0x99, 0xcc, 0xad, 0x7a, 0x74, 0x9d, 0xb1, 0x95, 0x89, 0xf6, 0xab, 0x33, + 0x39, 0x30, 0xb5, 0xc9, 0x25, 0x5f, 0xb9, 0x4d, 0x1d, 0xc5, 0x74, 0xe4, + 0xa5, 0x43, 0xd8, 0x66, 0x6e, 0x70, 0x8b, 0x4b, 0x3e, 0x72, 0xa5, 0xfe, + 0xf1, 0x97, 0xaf, 0x7c, 0x6b, 0xd7, 0x57, 0xd6, 0x26, 0x87, 0x26, 0x9b, + 0xad, 0x88, 0x18, 0xb6, 0xb1, 0x9f, 0x4b, 0xfc, 0xfc, 0xfb, 0xe3, 0x1a, + 0xc5, 0x6b, 0xf5, 0xaf, 0xf3, 0x8f, 0x5c, 0xef, 0x39, 0xce, 0x31, 0x3d, + 0x3f, 0xa6, 0x2d, 0x5d, 0xc1, 0x8f, 0x4f, 0x9f, 0xde, 0xcd, 0xe7, 0xd5, + 0xab, 0x02, 0x3e, 0x98, 0x6b, 0x0d, 0xbe, 0xaf, 0xdf, 0x84, 0x61, 0x00, + 0x00, 0xb6, 0x78, 0x09, 0x07, 0x0c, 0x09, 0x44, 0xb3, 0x2d, 0xf5, 0x2f, + 0xb3, 0x14, 0x4a, 0x7c, 0xbc, 0xf8, 0xaf, 0xd3, 0x34, 0x54, 0x11, 0x59, + 0xb5, 0x33, 0xfe, 0xfc, 0x7c, 0xaf, 0x47, 0x75, 0x9b, 0x57, 0xb7, 0xdb, + 0x6a, 0xe8, 0xfd, 0x7a, 0xd1, 0x3e, 0x9a, 0xea, 0x75, 0xd3, 0xd7, 0xb2, + 0x53, 0x54, 0x77, 0x5b, 0xd9, 0x1a, 0xdf, 0xca, 0xd9, 0xd9, 0x09, 0xea, + 0xf4, 0x2e, 0xf4, 0xfa, 0x24, 0xc9, 0x76, 0x39, 0xea, 0xca, 0x68, 0xca, + 0xc4, 0x18, 0x85, 0x69, 0x44, 0x02, 0x6e, 0x20, 0x2a, 0x82, 0x0a, 0x53, + 0x09, 0x88, 0xa0, 0x00, 0x46, 0x01, 0x80, 0x6a, 0x02, 0x29, 0x81, 0x94, + 0x09, 0xb1, 0x86, 0x72, 0x82, 0x99, 0xc2, 0x8a, 0x25, 0x91, 0x83, 0xb2, + 0x08, 0xb9, 0x83, 0x74, 0x12, 0x39, 0x88, 0xf4, 0x08, 0xc9, 0x82, 0x98, + 0x04, 0x31, 0x88, 0xc8, 0x14, 0xa9, 0x80, 0xa2, 0x04, 0xa8, 0x8c, 0x02, + 0x23, 0x00, 0xf8, 0x0a, 0x13, 0x0f, 0xdc, 0x45, 0xd3, 0x03, 0x18, 0x05, + 0x53, 0x01, 0x1c, 0x00, 0x20, 0x9c, 0xb1, 0x78, 0x43, 0x2d, 0x80, 0x64, + 0x8f, 0x0b, 0x1d, 0x6b, 0x88, 0x0d, 0x6a, 0x52, 0xe6, 0xb1, 0x4c, 0xed, + 0xb5, 0xc6, 0x76, 0xd2, 0x15, 0x81, 0x7f, 0xb9, 0x6c, 0x02, 0x8d, 0x3b, + 0xdd, 0x19, 0x05, 0xa6, 0xcb, 0x0a, 0x9f, 0x73, 0x17, 0x3b, 0x5e, 0x50, + 0x46, 0xe6, 0xe0, 0xba, 0x0f, 0xff, 0xfb, 0xd4, 0x60, 0x37, 0x09, 0x89, + 0x43, 0x74, 0xbe, 0xab, 0xf8, 0x7b, 0x70, 0x57, 0xae, 0x08, 0x56, 0x0c, + 0x62, 0x6e, 0x25, 0x45, 0xd6, 0xfc, 0xcf, 0xe1, 0xed, 0xc1, 0x5a, 0xb7, + 0xa1, 0x64, 0x51, 0x15, 0xb8, 0x43, 0xb0, 0xec, 0xbe, 0x52, 0xfa, 0x37, + 0x65, 0xdc, 0x95, 0xcb, 0x9d, 0x27, 0x2a, 0x63, 0x91, 0x22, 0x87, 0x27, + 0xd5, 0xa7, 0x32, 0x10, 0xdb, 0x05, 0xe3, 0xc7, 0x08, 0x79, 0x42, 0x1e, + 0xaa, 0xd7, 0xe2, 0x22, 0xd7, 0x33, 0xc4, 0x43, 0xbb, 0x6b, 0x14, 0x54, + 0xc3, 0x8a, 0x74, 0xd7, 0x7e, 0xdc, 0x86, 0xab, 0x9a, 0x28, 0xc3, 0x3a, + 0x9d, 0xe2, 0xd1, 0xd0, 0xe6, 0xad, 0x53, 0xbf, 0x6e, 0xae, 0x97, 0x6d, + 0xed, 0xcf, 0x19, 0x19, 0x23, 0x98, 0xcd, 0xb0, 0x12, 0x0b, 0x49, 0xc3, + 0xb9, 0xa4, 0xa1, 0x52, 0xdc, 0xd0, 0x45, 0x38, 0x2c, 0x47, 0xc3, 0x53, + 0x89, 0x7e, 0x4a, 0x21, 0x67, 0x3b, 0xe6, 0x25, 0x5a, 0x1a, 0xd2, 0xde, + 0xbb, 0x80, 0xca, 0xd9, 0x0c, 0xf0, 0x56, 0xa1, 0x08, 0x6c, 0x8e, 0x8b, + 0xc4, 0x36, 0x19, 0x28, 0xa5, 0x54, 0xaf, 0x43, 0x66, 0x39, 0xdf, 0xb1, + 0xca, 0xbb, 0x69, 0xcf, 0x6a, 0xba, 0x8f, 0x2d, 0x92, 0x24, 0xce, 0x78, + 0x11, 0xa1, 0x2c, 0xb9, 0xce, 0xa6, 0x85, 0x1a, 0x25, 0xb2, 0x89, 0xb2, + 0x8d, 0x3c, 0x70, 0xa9, 0xdb, 0x8d, 0x3d, 0x29, 0x55, 0x47, 0x98, 0xce, + 0x32, 0x4e, 0x73, 0x3d, 0x3b, 0x15, 0x70, 0x88, 0x1f, 0x47, 0xe2, 0x1c, + 0x4c, 0x59, 0xd0, 0xc2, 0x66, 0x3d, 0x44, 0xca, 0x39, 0x88, 0x27, 0xa0, + 0x0d, 0x5e, 0x80, 0x04, 0xf6, 0x82, 0x24, 0x7f, 0x5e, 0xf3, 0x3e, 0x39, + 0x4f, 0x35, 0xf6, 0x25, 0xea, 0x1c, 0xcc, 0xe7, 0x33, 0x42, 0x6e, 0xff, + 0xac, 0x47, 0x8a, 0xe1, 0x9d, 0x21, 0xd0, 0xc5, 0x52, 0x18, 0xac, 0x46, + 0x34, 0x13, 0x2a, 0xe4, 0x3c, 0xa4, 0x3a, 0x96, 0x77, 0x37, 0xfa, 0x7f, + 0xb7, 0xf7, 0xf5, 0xb9, 0xd1, 0x3a, 0xa6, 0x6a, 0x6d, 0xdf, 0xd3, 0xfe, + 0xdd, 0xea, 0xd3, 0xbf, 0xed, 0xef, 0x25, 0xa9, 0xad, 0x92, 0xcf, 0x4a, + 0xba, 0x91, 0x02, 0x00, 0x0a, 0x00, 0x61, 0x20, 0x42, 0x45, 0xa9, 0x04, + 0xa8, 0xb2, 0x88, 0x0a, 0x34, 0x16, 0x01, 0xa4, 0xc0, 0x4a, 0x05, 0x70, + 0xc1, 0xb9, 0x53, 0x8c, 0xd3, 0xab, 0x0e, 0xb8, 0xc0, 0xe3, 0x03, 0x8c, + 0xc0, 0x4e, 0x04, 0x40, 0xc0, 0xf8, 0x06, 0xfc, 0xc0, 0x23, 0x00, 0x7c, + 0xc5, 0x03, 0x01, 0xe4, 0xc0, 0x80, 0x01, 0x90, 0x2c, 0x00, 0x81, 0x80, + 0x40, 0x05, 0x99, 0x86, 0x1c, 0x05, 0xe9, 0x80, 0xe2, 0x01, 0xd0, 0x18, + 0x01, 0x21, 0x90, 0x93, 0x15, 0xc2, 0x7d, 0xde, 0x89, 0x2b, 0xca, 0xc3, + 0xdf, 0x8a, 0x45, 0xae, 0xa7, 0x2b, 0xee, 0x1b, 0x57, 0xaa, 0x03, 0x08, + 0x7e, 0x20, 0x18, 0x7a, 0x08, 0x81, 0x1e, 0x57, 0x1d, 0xba, 0xb9, 0x0e, + 0x84, 0x75, 0xd7, 0x55, 0x36, 0xbc, 0xd7, 0x99, 0x6c, 0x04, 0xee, 0x3e, + 0xf2, 0xe6, 0xe4, 0xe4, 0x26, 0x34, 0x1b, 0x4c, 0xb3, 0x14, 0xb5, 0xf9, + 0x62, 0xcf, 0x42, 0xdd, 0x6e, 0xa8, 0x84, 0x8a, 0xc8, 0x48, 0x15, 0x43, + 0xd0, 0x3f, 0x45, 0xcc, 0xb6, 0xaa, 0x9a, 0xd7, 0xdc, 0x9f, 0x35, 0x31, + 0x55, 0x38, 0xc7, 0x05, 0x61, 0xa9, 0x95, 0x0b, 0x8b, 0x26, 0x5c, 0xde, + 0xaf, 0x29, 0x11, 0x8f, 0x6c, 0xc2, 0xf1, 0x9d, 0xf4, 0xae, 0xd8, 0x98, + 0xe9, 0x94, 0x52, 0xee, 0x1b, 0x23, 0x72, 0xb2, 0xef, 0xd1, 0x4b, 0x4d, + 0xac, 0x0a, 0xe8, 0x4a, 0x94, 0xf2, 0xa1, 0xfa, 0x95, 0x1c, 0xac, 0x80, + 0x8d, 0x8c, 0xd7, 0x35, 0x9c, 0xdf, 0x30, 0xbf, 0x52, 0xab, 0xdc, 0xcf, + 0x58, 0x8a, 0x15, 0x64, 0x35, 0x02, 0xe1, 0xb5, 0x86, 0x2a, 0xc2, 0xba, + 0x59, 0x54, 0xea, 0xe3, 0xf9, 0x7d, 0x74, 0xde, 0x62, 0x6d, 0x0d, 0x75, + 0xbd, 0x2d, 0x39, 0x29, 0xe0, 0xab, 0xa1, 0x3d, 0x6e, 0xbf, 0x66, 0x6b, + 0x60, 0x68, 0x54, 0x55, 0x5e, 0xa2, 0x43, 0x0c, 0xb8, 0x4a, 0x67, 0x35, + 0x98, 0x6c, 0x0d, 0x6c, 0x8e, 0xa2, 0x31, 0x44, 0x82, 0xf5, 0xb9, 0xfa, + 0xa9, 0x5a, 0x64, 0xb9, 0xb3, 0x26, 0x8d, 0xf4, 0xb1, 0xc0, 0x96, 0x39, + 0x0f, 0xd3, 0xb5, 0x10, 0x8d, 0x7a, 0xe9, 0x0d, 0x70, 0x3b, 0x89, 0xd9, + 0x34, 0x1c, 0xc7, 0xb0, 0x9b, 0x87, 0x38, 0xb3, 0xa4, 0x94, 0xa2, 0x46, + 0x6d, 0x81, 0x09, 0x3a, 0x00, 0x0d, 0x75, 0x8e, 0x41, 0x43, 0x8e, 0xbb, + 0x51, 0x37, 0x4c, 0x01, 0xe8, 0x54, 0x46, 0x4d, 0x25, 0xad, 0xab, 0xdc, + 0x43, 0x39, 0xac, 0xeb, 0x75, 0x2b, 0x31, 0x79, 0x04, 0xc5, 0x0a, 0xe2, + 0xe7, 0x42, 0x88, 0x33, 0x0a, 0x2b, 0x7d, 0xd1, 0xe5, 0xd1, 0x19, 0x17, + 0xff, 0xb5, 0x95, 0xfe, 0xcd, 0x6d, 0xdb, 0x55, 0xd9, 0x96, 0xd7, 0xf5, + 0xff, 0xf6, 0xee, 0xbc, 0xdf, 0xa2, 0x22, 0x5a, 0xdb, 0x57, 0x7f, 0x97, + 0x77, 0xba, 0x13, 0x3b, 0x10, 0x62, 0x20, 0xd1, 0x19, 0xc8, 0x8e, 0xe3, + 0xdc, 0x81, 0x02, 0x22, 0x20, 0x0c, 0x03, 0x80, 0x27, 0x4c, 0x00, 0xf0, + 0x6e, 0x0c, 0x03, 0xb6, 0xaa, 0x4c, 0x79, 0x71, 0x40, 0x0c, 0x06, 0xd0, + 0x3f, 0x4c, 0x02, 0x90, 0x0e, 0x8c, 0x2c, 0x10, 0x1d, 0x8a, 0xa0, 0x49, + 0x98, 0x9d, 0xc1, 0xa3, 0x18, 0x12, 0xa0, 0x1c, 0x98, 0x06, 0x00, 0x22, + 0x88, 0x00, 0x10, 0x30, 0xa3, 0x42, 0x62, 0x30, 0x10, 0x00, 0x14, 0x12, + 0x00, 0x5c, 0x36, 0x09, 0xfe, 0xe5, 0x86, 0xba, 0xb9, 0x6e, 0x42, 0xd4, + 0xc2, 0x06, 0x42, 0x47, 0x69, 0xff, 0xfb, 0xd4, 0x60, 0x24, 0x8d, 0x89, + 0x2a, 0x74, 0xbe, 0x8b, 0xef, 0x7b, 0x70, 0x57, 0xee, 0x48, 0x56, 0x0c, + 0x65, 0x6e, 0x22, 0x99, 0xd6, 0xfc, 0x0f, 0xbd, 0xed, 0xc1, 0x50, 0xb8, + 0x21, 0xa4, 0x31, 0x89, 0xb8, 0x77, 0x24, 0xe6, 0x8c, 0x02, 0xc2, 0x58, + 0x93, 0x81, 0xdc, 0xf0, 0x5c, 0x44, 0x30, 0xb7, 0x13, 0x91, 0x2c, 0x6f, + 0x21, 0x61, 0x56, 0x2b, 0xa7, 0xfb, 0x72, 0x14, 0xb2, 0xb0, 0x64, 0x97, + 0x14, 0xc1, 0xdb, 0x39, 0x18, 0x27, 0xe7, 0x71, 0x71, 0x9d, 0x48, 0x74, + 0xaf, 0x27, 0xa1, 0x3d, 0x4a, 0xae, 0x54, 0x88, 0x69, 0x3a, 0x8e, 0x9e, + 0x3f, 0x54, 0x89, 0xb3, 0xa9, 0xe3, 0x22, 0xb1, 0x54, 0x4f, 0xd3, 0xf0, + 0x23, 0xe9, 0x08, 0x26, 0x91, 0x15, 0x0b, 0x83, 0xad, 0x0f, 0x56, 0x1e, + 0x0c, 0xc7, 0xfd, 0x1d, 0xf5, 0xc3, 0x53, 0x6b, 0x13, 0x03, 0xb6, 0xa4, + 0xeb, 0x9b, 0x6b, 0x22, 0xad, 0xc1, 0xaa, 0x55, 0x62, 0x1b, 0x1e, 0x55, + 0x88, 0xb0, 0xed, 0xdb, 0x8e, 0xa5, 0x24, 0xaa, 0xa4, 0x9a, 0xcb, 0x7a, + 0xc3, 0x0b, 0x94, 0xc9, 0xdb, 0x25, 0x13, 0xa7, 0x3b, 0xa5, 0x12, 0x85, + 0x30, 0xf0, 0xe5, 0x6a, 0x55, 0x2e, 0x1b, 0xcd, 0x73, 0x49, 0x8a, 0xb0, + 0x4f, 0xc7, 0xac, 0xca, 0xd4, 0x8a, 0xe1, 0x3a, 0xb9, 0x53, 0x9f, 0x68, + 0xa6, 0xb6, 0x45, 0xcb, 0x7b, 0xe9, 0xe7, 0x73, 0x86, 0xd2, 0x8c, 0x69, + 0x4e, 0xaa, 0xea, 0x5f, 0xd5, 0x71, 0xa9, 0x23, 0xbe, 0xa7, 0x84, 0xa5, + 0x64, 0x4e, 0x99, 0x76, 0xd3, 0x25, 0x94, 0x67, 0x94, 0x07, 0x4d, 0x2b, + 0xca, 0x62, 0x6c, 0xb8, 0x45, 0xb9, 0xa8, 0x4c, 0xb6, 0x74, 0xeb, 0x11, + 0x82, 0x83, 0x52, 0x19, 0x25, 0xd8, 0x7d, 0xa7, 0x4f, 0x52, 0xc4, 0xe6, + 0xca, 0x65, 0x0f, 0x01, 0x5e, 0x27, 0x81, 0x1a, 0x36, 0xc0, 0x1a, 0x4f, + 0x00, 0x09, 0xf4, 0x3b, 0x69, 0xe1, 0x0a, 0xe7, 0xf3, 0xb7, 0x88, 0xdf, + 0xb0, 0xc5, 0xab, 0xeb, 0xf3, 0xf9, 0x2a, 0x68, 0xeb, 0x99, 0xff, 0x0a, + 0xd7, 0xd3, 0x7a, 0x1d, 0x04, 0x58, 0x82, 0xa3, 0x28, 0x39, 0x2a, 0x43, + 0x21, 0x4b, 0x37, 0x1b, 0xbe, 0xcf, 0xfa, 0x6f, 0xb7, 0xaf, 0xff, 0xf2, + 0x9b, 0x49, 0x97, 0xf4, 0xae, 0xdd, 0xbc, 0xff, 0x6e, 0x99, 0xbb, 0x23, + 0xf4, 0x66, 0xab, 0xeb, 0x49, 0xb9, 0x29, 0x11, 0xa9, 0x44, 0xd0, 0xe2, + 0x22, 0xe2, 0x23, 0x08, 0x52, 0xbb, 0x8e, 0x30, 0xc4, 0x16, 0x2a, 0xbb, + 0x86, 0x98, 0x0b, 0x40, 0x47, 0x98, 0x0f, 0x60, 0xb8, 0x18, 0x32, 0x0a, + 0xfb, 0x99, 0xb5, 0xc2, 0x6b, 0x18, 0x18, 0xc0, 0x75, 0x98, 0x04, 0x20, + 0x21, 0x98, 0x41, 0x80, 0x75, 0x18, 0x05, 0x00, 0x98, 0x18, 0x25, 0xe1, + 0xe0, 0x98, 0x05, 0xe0, 0x16, 0x98, 0x0a, 0xa0, 0x09, 0x02, 0x80, 0x5d, + 0x30, 0x70, 0x03, 0x1b, 0x30, 0x07, 0x40, 0x33, 0x43, 0x22, 0x12, 0x94, + 0x43, 0x4e, 0xf7, 0x23, 0x29, 0x33, 0x3c, 0x3a, 0x21, 0xb0, 0x53, 0x8d, + 0xed, 0x09, 0x65, 0xe7, 0x8a, 0xd8, 0x87, 0x41, 0x80, 0x33, 0x9c, 0x1e, + 0x12, 0x23, 0xdd, 0xa4, 0xf9, 0x43, 0x50, 0xa5, 0x62, 0x59, 0xad, 0x00, + 0x9a, 0x36, 0x55, 0x65, 0xa2, 0x1c, 0x7b, 0x32, 0xcb, 0x2c, 0xb7, 0x8c, + 0xa1, 0x3f, 0x4f, 0x76, 0x55, 0x16, 0x17, 0xd0, 0x97, 0x8c, 0xe6, 0x96, + 0x11, 0xdb, 0x89, 0x22, 0x32, 0x0b, 0x43, 0xc5, 0x66, 0x2e, 0xda, 0x85, + 0x30, 0x20, 0x21, 0xb5, 0xa9, 0x5c, 0x14, 0x73, 0xbb, 0x7c, 0xbb, 0x88, + 0xac, 0x96, 0xf3, 0x44, 0x7e, 0xed, 0xce, 0x56, 0xe5, 0xa7, 0x35, 0x98, + 0x0d, 0x4f, 0x5c, 0xe3, 0xb3, 0x45, 0x86, 0xe5, 0x32, 0xf3, 0xf7, 0x86, + 0x91, 0xfc, 0xb8, 0x6e, 0x76, 0xcc, 0xb6, 0xca, 0xd8, 0xf1, 0xc9, 0x5a, + 0xd3, 0x05, 0xfb, 0x9e, 0x1b, 0x6a, 0xd4, 0x9f, 0x50, 0xb7, 0xa7, 0x97, + 0x99, 0xe5, 0x56, 0xb2, 0xbd, 0x9d, 0x44, 0xd8, 0xa6, 0x5b, 0x58, 0x5f, + 0x6f, 0x8e, 0xb1, 0x78, 0xac, 0x10, 0x97, 0xd4, 0xf2, 0xc1, 0x8d, 0x19, + 0xf4, 0x2e, 0x7f, 0xc0, 0xaa, 0xae, 0x0a, 0x7a, 0x2c, 0x59, 0xe1, 0xb0, + 0xf7, 0x25, 0x35, 0xdf, 0x4c, 0xf9, 0xe2, 0x7e, 0x2a, 0x59, 0xb9, 0xfa, + 0xb9, 0xb6, 0x76, 0xf4, 0xa1, 0xde, 0xb9, 0x7e, 0xa2, 0x54, 0x9f, 0x88, + 0x42, 0x5d, 0x61, 0xfa, 0x88, 0xc8, 0x57, 0x20, 0x5e, 0x12, 0xe2, 0xb9, + 0x42, 0x87, 0x3d, 0x5b, 0x38, 0x8d, 0x71, 0x98, 0x2d, 0xc1, 0x86, 0x0d, + 0x32, 0x46, 0x2b, 0xcf, 0xf2, 0x01, 0xfb, 0x85, 0xae, 0x12, 0x64, 0x6e, + 0xc4, 0xc5, 0x7e, 0x43, 0x98, 0x75, 0x07, 0x2e, 0x9a, 0x72, 0xf7, 0x66, + 0xf5, 0x23, 0x65, 0x67, 0xe5, 0x2f, 0x78, 0xbe, 0xce, 0x85, 0x32, 0xf2, + 0xa3, 0x51, 0xd7, 0x69, 0xe4, 0x6d, 0xd5, 0xea, 0x33, 0x53, 0x93, 0x45, + 0x77, 0x74, 0xbe, 0xe9, 0x5f, 0x4f, 0xfd, 0x6d, 0xfe, 0x6f, 0xed, 0x7d, + 0x7b, 0xfd, 0x9f, 0xe9, 0xad, 0x15, 0x3f, 0x46, 0xeb, 0x44, 0xe5, 0x2b, + 0x9d, 0xcc, 0xaa, 0x84, 0x08, 0x45, 0x67, 0x00, 0x64, 0x1c, 0xa5, 0x3a, + 0x05, 0x00, 0x20, 0x0c, 0x07, 0x20, 0x1e, 0xcc, 0x0c, 0x70, 0x43, 0x8c, + 0x2c, 0x04, 0x0a, 0xcd, 0x85, 0x80, 0xc9, 0x0c, 0x19, 0x20, 0x2f, 0x4c, + 0x05, 0xd0, 0x41, 0x0c, 0x1d, 0xe0, 0x55, 0x4c, 0x03, 0xd0, 0x3d, 0x4c, + 0x3b, 0x50, 0xd2, 0x0c, 0x05, 0x80, 0x1d, 0x04, 0x80, 0x95, 0x30, 0x12, + 0x40, 0x86, 0x30, 0x2d, 0x42, 0x6c, 0x30, 0x16, 0x40, 0x2e, 0x56, 0x50, + 0xae, 0x3b, 0x4d, 0x35, 0x62, 0xff, 0xfb, 0xd4, 0x60, 0x1f, 0x8d, 0x88, + 0xcd, 0x75, 0x3f, 0x0b, 0xef, 0x7b, 0x70, 0x55, 0x0e, 0x08, 0x59, 0x14, + 0x22, 0x6e, 0x23, 0x35, 0xd4, 0xfc, 0x2f, 0xbd, 0xed, 0xc1, 0x62, 0xb7, + 0x21, 0x64, 0x81, 0x89, 0xb9, 0xbd, 0x3e, 0x58, 0xce, 0x66, 0x25, 0x59, + 0x32, 0x44, 0x2e, 0x09, 0xe9, 0xba, 0x4e, 0xd2, 0x8f, 0x89, 0x4a, 0x51, + 0x0a, 0x3c, 0x15, 0xe8, 0xc2, 0xe6, 0x5a, 0x32, 0xcc, 0x89, 0x52, 0xc2, + 0x8c, 0x6d, 0x28, 0x93, 0xf4, 0x24, 0xc6, 0x71, 0xa0, 0x8a, 0x42, 0x53, + 0x15, 0x69, 0x51, 0xb3, 0xa8, 0xf5, 0x48, 0x91, 0xe1, 0xb4, 0xce, 0x9d, + 0xc3, 0x2a, 0x1e, 0xde, 0xe6, 0x8b, 0x46, 0x1b, 0x0a, 0xf5, 0x24, 0x34, + 0x31, 0x6e, 0x66, 0xb6, 0x94, 0x7b, 0xa3, 0x56, 0x2b, 0x1a, 0x95, 0x1a, + 0xe2, 0xba, 0x72, 0xba, 0x85, 0x73, 0x34, 0x54, 0xcc, 0x15, 0x5c, 0x43, + 0x9d, 0x0f, 0x3e, 0x97, 0x67, 0x32, 0x85, 0x21, 0x34, 0xac, 0xb3, 0x1e, + 0x35, 0x80, 0xc0, 0xc6, 0x61, 0xa9, 0xb2, 0xdb, 0x3a, 0x94, 0xfa, 0x7c, + 0xb7, 0x0e, 0x1b, 0x6b, 0x81, 0xc4, 0xb3, 0x8c, 0x5e, 0x25, 0x70, 0xc0, + 0xf2, 0x3a, 0xd3, 0x92, 0xa5, 0xb9, 0xea, 0xbb, 0x4c, 0xae, 0x6a, 0x65, + 0xb5, 0xc9, 0xba, 0xfd, 0x4a, 0xe2, 0xc2, 0x9f, 0x84, 0xda, 0xb7, 0x95, + 0x3a, 0xb5, 0xca, 0x36, 0xde, 0xb3, 0xa8, 0x5f, 0xad, 0xa7, 0xe3, 0xa6, + 0x28, 0xf9, 0xb1, 0xad, 0xec, 0x1d, 0x37, 0xb8, 0xb7, 0xa5, 0xe5, 0x65, + 0x7e, 0x68, 0xc0, 0x53, 0xbf, 0x5f, 0x37, 0xd9, 0xeb, 0x67, 0xca, 0xd4, + 0xcb, 0x23, 0x41, 0xa3, 0x22, 0xa9, 0x00, 0xfd, 0xd2, 0x91, 0x48, 0x79, + 0x9a, 0x0c, 0x0a, 0x86, 0x62, 0xd8, 0x45, 0xa0, 0xcc, 0x69, 0x08, 0x81, + 0x6f, 0x5c, 0xad, 0x3f, 0x1c, 0x0b, 0x46, 0xd0, 0x00, 0x00, 0xca, 0xd2, + 0x80, 0x04, 0xc6, 0x0c, 0x39, 0x07, 0x3e, 0x87, 0x8b, 0xd3, 0x2b, 0x02, + 0x03, 0x42, 0x14, 0x71, 0x1c, 0x04, 0x65, 0x0d, 0x09, 0x44, 0xac, 0xf4, + 0x93, 0xae, 0x24, 0xde, 0x7b, 0xc8, 0xf7, 0x53, 0x83, 0xb9, 0xda, 0xdd, + 0xc8, 0xdb, 0x22, 0x1e, 0x88, 0xb2, 0xae, 0xfb, 0xed, 0xb2, 0x33, 0x7b, + 0xbf, 0xa5, 0xfd, 0x1d, 0xdb, 0xfb, 0xe8, 0xda, 0x5f, 0xd6, 0xde, 0x9b, + 0x6b, 0x6b, 0xa3, 0xfe, 0x89, 0xdf, 0xb5, 0xe7, 0x99, 0x04, 0xbd, 0x08, + 0x0e, 0x62, 0x9d, 0xc1, 0x72, 0x4e, 0x72, 0x01, 0xb2, 0xcc, 0x06, 0x80, + 0x0f, 0x4c, 0x0d, 0xb0, 0x15, 0x8c, 0x34, 0x41, 0x59, 0xcd, 0xc8, 0xe0, + 0x3f, 0x8c, 0x1c, 0xc0, 0x08, 0xcc, 0x0c, 0x90, 0x14, 0x8c, 0x2f, 0x90, + 0x1e, 0xcc, 0x01, 0x50, 0x10, 0x0c, 0x58, 0x20, 0x58, 0x4c, 0x06, 0x70, + 0x1c, 0xc4, 0x40, 0x0a, 0x90, 0x00, 0x5e, 0x60, 0x74, 0x85, 0x42, 0x60, + 0x1c, 0x80, 0x4a, 0xcc, 0x94, 0xa8, 0xf6, 0x28, 0xed, 0x45, 0xdd, 0xbe, + 0xcb, 0x6f, 0xa2, 0x12, 0xd3, 0xa8, 0x7e, 0xa2, 0x0c, 0xa3, 0x99, 0x0d, + 0x2d, 0xaa, 0xc4, 0x24, 0xc9, 0x2d, 0xcb, 0xec, 0x0b, 0x62, 0x1b, 0x74, + 0xda, 0x3d, 0xf1, 0xc0, 0x87, 0xae, 0xd7, 0xce, 0xa3, 0xa1, 0xc8, 0x95, + 0x0f, 0x83, 0x7d, 0x6c, 0x8e, 0x3b, 0x9e, 0xa3, 0x4e, 0xf2, 0x99, 0x98, + 0xe5, 0x27, 0x47, 0x11, 0x66, 0xc8, 0xe6, 0xe0, 0x69, 0xb7, 0x2a, 0x9c, + 0x4f, 0xf6, 0xe7, 0x35, 0x3a, 0xea, 0x07, 0x61, 0x7b, 0x19, 0xc5, 0x76, + 0x7b, 0xa9, 0x23, 0x2c, 0x9e, 0x4b, 0x25, 0xe6, 0x0b, 0x5e, 0x5b, 0xd1, + 0xa5, 0xfd, 0x8e, 0x07, 0x83, 0x1d, 0x89, 0x55, 0x05, 0x69, 0xbd, 0x44, + 0xf1, 0x55, 0x0c, 0xd3, 0xcb, 0x8a, 0x3d, 0xb1, 0x0a, 0x59, 0x70, 0x3d, + 0x6c, 0xa7, 0x9a, 0x93, 0x28, 0x5e, 0x5c, 0xde, 0x76, 0xc8, 0x73, 0x2a, + 0x8e, 0x39, 0x66, 0x6c, 0x55, 0x4a, 0xa4, 0x6f, 0x77, 0x16, 0x33, 0x32, + 0x81, 0x55, 0x1d, 0x42, 0x9f, 0xce, 0xdc, 0x99, 0x21, 0x77, 0x35, 0x22, + 0xfc, 0x37, 0xec, 0xaf, 0xe3, 0x47, 0x60, 0x75, 0x01, 0xec, 0x17, 0x25, + 0x6b, 0x34, 0x04, 0xbb, 0x2d, 0x5f, 0x4c, 0xd6, 0xbf, 0x34, 0x04, 0xca, + 0x9d, 0x89, 0xad, 0xb1, 0xc6, 0x1b, 0xc8, 0x5a, 0xd3, 0xf3, 0xf5, 0x8d, + 0x7d, 0x8d, 0x14, 0xab, 0x6f, 0x4a, 0xc6, 0x78, 0xb9, 0x7a, 0xaf, 0x2c, + 0x4f, 0x19, 0x18, 0x0b, 0xfa, 0xe3, 0x2f, 0x09, 0x9a, 0x4d, 0xc8, 0xb9, + 0x0c, 0x53, 0x78, 0x6f, 0xbe, 0x25, 0xed, 0xaa, 0xf1, 0x1c, 0x32, 0x41, + 0xa4, 0x4f, 0x01, 0x82, 0x6e, 0x00, 0x04, 0x7e, 0x58, 0xa1, 0xda, 0x32, + 0xcd, 0x42, 0x7a, 0x02, 0xa4, 0x8e, 0x30, 0x9b, 0xe7, 0xec, 0xdb, 0x91, + 0xb1, 0xd3, 0x11, 0x61, 0xe4, 0x57, 0xd1, 0xc8, 0xc9, 0x0d, 0xe4, 0x42, + 0x60, 0xb7, 0x76, 0x30, 0xce, 0xd2, 0xc4, 0x9c, 0x86, 0x52, 0xbb, 0x9f, + 0x35, 0x6f, 0x44, 0xfe, 0xad, 0xbf, 0x6f, 0x5d, 0x2b, 0xda, 0xcb, 0xb6, + 0xa9, 0xae, 0xfd, 0xef, 0xb5, 0x7b, 0x6f, 0xad, 0x59, 0x3f, 0x99, 0x99, + 0xdf, 0xdb, 0xd7, 0xac, 0x8c, 0x93, 0x26, 0x80, 0x91, 0x99, 0x51, 0x58, + 0xec, 0xd1, 0xc5, 0x4c, 0x3b, 0x17, 0x4b, 0x58, 0x0c, 0x02, 0xc0, 0x02, + 0x0c, 0x09, 0xb0, 0x21, 0x4c, 0x29, 0x22, 0x50, 0x8d, 0x73, 0x80, 0x9d, + 0x4c, 0x17, 0x60, 0x22, 0x8c, 0x07, 0x30, 0x43, 0xcc, 0x0b, 0x00, 0x60, + 0x0c, 0x05, 0x10, 0x15, 0x0c, 0x43, 0xb0, 0x66, 0xcc, 0x06, 0x20, 0x11, + 0x8c, 0x02, 0xd0, 0x00, 0x8c, 0x02, 0x60, 0x15, 0x8c, 0x1f, 0x60, 0x7c, + 0x0c, 0x03, 0x30, 0x05, 0x12, 0xff, 0xfb, 0xd4, 0x60, 0x1d, 0x09, 0x88, + 0xa4, 0x76, 0x3f, 0x8b, 0xef, 0x7b, 0x70, 0x5c, 0x0e, 0x68, 0x59, 0x0c, + 0xa2, 0x6e, 0x20, 0x5d, 0xd2, 0xfe, 0xaf, 0x3d, 0xed, 0xc1, 0x61, 0x38, + 0xa1, 0x58, 0x31, 0x95, 0xb8, 0x01, 0x94, 0xc5, 0x6f, 0x63, 0x87, 0xb3, + 0xb1, 0x48, 0x5e, 0x9a, 0x5a, 0x4f, 0x53, 0x74, 0xfa, 0x5c, 0xab, 0xce, + 0x12, 0xc6, 0xb2, 0xd8, 0x65, 0x31, 0xa4, 0x9f, 0xaa, 0x6e, 0x26, 0x8a, + 0x75, 0x7a, 0x5c, 0xfe, 0x80, 0xaf, 0x60, 0x6d, 0x56, 0xa6, 0x0f, 0xd4, + 0x35, 0x51, 0x78, 0x28, 0x6a, 0x90, 0xb6, 0x1d, 0x6a, 0xc4, 0x13, 0x71, + 0xec, 0x97, 0x57, 0xbb, 0x60, 0x2e, 0x08, 0xc7, 0xa7, 0x83, 0xd4, 0xd5, + 0x67, 0x5d, 0x37, 0xb1, 0xaa, 0xdc, 0xd2, 0xa7, 0xfa, 0xa9, 0x48, 0xc9, + 0x15, 0xac, 0xfe, 0x70, 0x49, 0x49, 0x3b, 0x72, 0xe9, 0x69, 0x73, 0x0d, + 0x10, 0xd7, 0x01, 0x95, 0xb9, 0xdb, 0x4e, 0xd8, 0xe5, 0x7d, 0x19, 0xa9, + 0x30, 0xbe, 0x89, 0xdb, 0x3b, 0x92, 0x22, 0x7d, 0xb6, 0x4f, 0x02, 0x78, + 0x77, 0x63, 0x7d, 0x87, 0x07, 0x4f, 0x13, 0x8c, 0x6b, 0x76, 0x9a, 0xaa, + 0x47, 0xce, 0xe3, 0xc6, 0x8b, 0x19, 0x51, 0x1e, 0x5d, 0xc4, 0x6b, 0x57, + 0xbc, 0xef, 0x27, 0x52, 0xd9, 0x95, 0x97, 0x4f, 0x58, 0xe0, 0x29, 0x56, + 0xf2, 0xae, 0x6a, 0x8d, 0x34, 0xcc, 0x8f, 0x6b, 0x55, 0xe5, 0x34, 0x39, + 0x62, 0x44, 0xa3, 0xe7, 0x16, 0x2c, 0x47, 0x64, 0x6c, 0x74, 0xd5, 0xd9, + 0x5b, 0xd4, 0xed, 0xbe, 0x2d, 0xd6, 0x56, 0xa9, 0xb5, 0x43, 0x91, 0xb8, + 0xed, 0x49, 0x58, 0xea, 0xc6, 0xe3, 0x4c, 0xde, 0x4c, 0x23, 0x10, 0xe5, + 0x11, 0xfd, 0x18, 0xbf, 0x1d, 0x26, 0xea, 0x85, 0x06, 0x87, 0xae, 0x92, + 0x64, 0x27, 0x40, 0x1b, 0xaa, 0x1b, 0x0f, 0xb0, 0x00, 0x12, 0xf6, 0xb4, + 0x00, 0x69, 0xba, 0xc7, 0xa2, 0x98, 0xa9, 0x06, 0xae, 0x59, 0xd2, 0x51, + 0x26, 0x29, 0x82, 0x02, 0x85, 0x08, 0x14, 0x83, 0x5d, 0xee, 0x47, 0xbf, + 0xa8, 0xac, 0xb7, 0xce, 0x3e, 0xdb, 0x3b, 0xaa, 0x29, 0xd4, 0x25, 0x01, + 0x0d, 0x94, 0xee, 0x4f, 0x46, 0x2b, 0xaf, 0xb3, 0x4a, 0xfb, 0x3a, 0x76, + 0xff, 0xfa, 0xbf, 0x5f, 0xb7, 0xf7, 0x4d, 0xd6, 0xe8, 0xff, 0xe8, 0x75, + 0xff, 0x7f, 0xf6, 0xcd, 0xdd, 0x11, 0xf5, 0xeb, 0x72, 0xa4, 0xca, 0x25, + 0x11, 0x54, 0x8a, 0x42, 0x86, 0x3d, 0x94, 0x01, 0x67, 0x53, 0x91, 0x35, + 0x38, 0x55, 0x1c, 0x71, 0x6c, 0x12, 0x0a, 0x46, 0x07, 0xe2, 0x02, 0x63, + 0x01, 0xf9, 0x47, 0xdf, 0x07, 0xf6, 0x61, 0xac, 0x19, 0x03, 0xa0, 0x00, + 0x65, 0x5c, 0x12, 0x26, 0x08, 0xc1, 0x7e, 0x64, 0x88, 0x67, 0xc1, 0x00, + 0xe4, 0x10, 0x0b, 0xa6, 0x00, 0x60, 0x30, 0x0e, 0x45, 0xb0, 0x70, 0x70, + 0x2b, 0xe3, 0x55, 0x36, 0x7e, 0x9c, 0xdb, 0x94, 0x7f, 0x3e, 0x8c, 0xab, + 0x4e, 0x22, 0xd2, 0x8a, 0x74, 0x53, 0x68, 0x85, 0x35, 0x17, 0xf5, 0x44, + 0x13, 0xe4, 0xc8, 0x8a, 0xf0, 0x93, 0x84, 0x15, 0x3c, 0x3f, 0x1a, 0xd0, + 0xc4, 0x89, 0x7f, 0x5b, 0x67, 0x8a, 0xe0, 0xce, 0x77, 0x23, 0x49, 0x2c, + 0x06, 0x07, 0x33, 0xa8, 0xc4, 0x51, 0x29, 0xa2, 0x40, 0x4a, 0x6c, 0xfd, + 0x72, 0x54, 0x2b, 0x95, 0x66, 0x02, 0x1d, 0x08, 0x9e, 0x21, 0x07, 0x6b, + 0x26, 0x92, 0xd6, 0x5d, 0x3e, 0x99, 0xbd, 0x6d, 0x50, 0xe6, 0xe4, 0xf9, + 0xfe, 0x99, 0x55, 0x8f, 0x2e, 0xaf, 0x56, 0x3e, 0x6e, 0x56, 0x32, 0x65, + 0xee, 0x15, 0xd1, 0x91, 0xd0, 0x59, 0x9e, 0xce, 0x87, 0xc3, 0x85, 0x01, + 0x5c, 0xa8, 0x66, 0x56, 0x42, 0x72, 0x67, 0x7a, 0xad, 0x45, 0xa3, 0x1c, + 0x1b, 0x95, 0xef, 0x23, 0xc5, 0x5d, 0xea, 0x03, 0x84, 0xaa, 0xd7, 0x19, + 0xe0, 0x46, 0x4e, 0x2a, 0x1b, 0x59, 0xe3, 0xc5, 0x7e, 0xbe, 0xa8, 0xdc, + 0x75, 0xfc, 0x62, 0x15, 0xf5, 0x67, 0xd6, 0x96, 0xef, 0x99, 0xfc, 0x66, + 0x6f, 0xb8, 0xac, 0x73, 0x3c, 0x7a, 0xda, 0x9a, 0x89, 0xdc, 0xa5, 0x92, + 0x90, 0xed, 0xb8, 0x3b, 0xbb, 0xb6, 0xf8, 0x50, 0x5a, 0x9f, 0x38, 0xd9, + 0x77, 0x05, 0xbe, 0x34, 0x07, 0xf0, 0x64, 0xcb, 0x89, 0x3c, 0xb1, 0xd4, + 0xc7, 0x2e, 0x17, 0xce, 0xa8, 0xcc, 0x2a, 0x05, 0x02, 0x6c, 0xa8, 0x56, + 0xad, 0x0e, 0x42, 0x7a, 0x10, 0x06, 0x21, 0xd8, 0x73, 0x9b, 0x62, 0xa6, + 0xd4, 0x00, 0x33, 0xa6, 0x58, 0xfd, 0xa0, 0x7c, 0x8b, 0x5b, 0xb3, 0xe2, + 0x74, 0xb2, 0x38, 0x72, 0x2a, 0x93, 0x67, 0x96, 0x71, 0x08, 0xbc, 0xa9, + 0x9f, 0xd0, 0x4a, 0xdf, 0x4d, 0x45, 0x88, 0x47, 0xa1, 0x9c, 0xee, 0x76, + 0x23, 0xec, 0xac, 0x72, 0xef, 0xef, 0xd1, 0x52, 0x97, 0x49, 0x1a, 0xea, + 0xaa, 0x89, 0x7b, 0xb7, 0xa7, 0xaf, 0xae, 0xbf, 0xff, 0x75, 0xee, 0xcd, + 0x5d, 0xfa, 0x2e, 0x9e, 0xef, 0xff, 0x26, 0xef, 0x24, 0xa7, 0x9c, 0x84, + 0xb9, 0xc8, 0x3a, 0x2e, 0x8e, 0x24, 0x07, 0xdc, 0x3e, 0x27, 0x71, 0x7c, + 0xcc, 0x30, 0x72, 0x20, 0x0c, 0x04, 0xb0, 0x26, 0x0c, 0x03, 0xc0, 0x5d, + 0xcc, 0x09, 0x15, 0xab, 0x0c, 0x14, 0xd1, 0x48, 0x4c, 0x03, 0xf0, 0x3d, + 0x00, 0xa0, 0x54, 0x18, 0x53, 0x20, 0x9e, 0x80, 0x01, 0x32, 0x30, 0x8b, + 0x04, 0x75, 0x1c, 0x01, 0x0c, 0x78, 0x09, 0x61, 0x80, 0x0d, 0xcc, 0x25, + 0x80, 0x76, 0x4c, 0x04, 0x70, 0x0a, 0xd1, 0xd8, 0x02, 0xf3, 0x49, 0x0b, + 0x4a, 0xbe, 0x6b, 0x31, 0x4b, 0xf2, 0xa0, 0x81, 0x4c, 0x3c, 0x5e, 0x11, + 0xb4, 0xe9, 0xc7, 0x14, 0xe7, 0xff, 0xfb, 0xd4, 0x60, 0x25, 0x09, 0x99, + 0x17, 0x76, 0x3e, 0x8b, 0xef, 0xc3, 0x70, 0x5e, 0xce, 0x78, 0x56, 0x18, + 0x62, 0x6e, 0x21, 0x35, 0xd2, 0xfe, 0xaf, 0x3d, 0xed, 0xc1, 0x51, 0x3a, + 0x21, 0xa4, 0x81, 0x89, 0xb8, 0x2a, 0xd1, 0x63, 0xe5, 0xca, 0x06, 0x8c, + 0xb3, 0xa8, 0xe9, 0x61, 0x39, 0x09, 0xc2, 0x24, 0x60, 0x97, 0xb2, 0x76, + 0x55, 0x98, 0xcc, 0xca, 0xd3, 0xb1, 0x55, 0x6a, 0xb6, 0x2d, 0xac, 0xaf, + 0xa9, 0x12, 0xe7, 0xf6, 0x31, 0x5b, 0xb0, 0x35, 0x47, 0x21, 0xf7, 0xa5, + 0x80, 0xed, 0xfc, 0x92, 0x5f, 0x05, 0x3f, 0xd2, 0x5a, 0x69, 0xf8, 0xc4, + 0x39, 0xda, 0xaf, 0xf3, 0xe8, 0xee, 0x37, 0x19, 0x6c, 0x62, 0x62, 0xd4, + 0xdc, 0xfd, 0x4b, 0x1f, 0x22, 0x92, 0x3e, 0xf2, 0xaa, 0x28, 0x75, 0xd3, + 0xc3, 0xe9, 0xaf, 0x51, 0x5b, 0x7a, 0x64, 0x16, 0x61, 0x2f, 0x24, 0xf4, + 0x66, 0x59, 0x05, 0x37, 0x78, 0x5c, 0x72, 0x59, 0xd8, 0xfc, 0x92, 0x57, + 0x1c, 0x9d, 0xa6, 0x8f, 0x47, 0x9f, 0xe9, 0x45, 0x99, 0xd8, 0xdb, 0xc3, + 0x53, 0x18, 0x7a, 0x49, 0xcb, 0x2f, 0xd4, 0x4a, 0xe5, 0x2c, 0x8a, 0xe4, + 0xcf, 0x29, 0x58, 0x84, 0x3b, 0x7a, 0x27, 0x4b, 0x27, 0xa5, 0xc1, 0xf6, + 0x9a, 0xa4, 0x81, 0xa1, 0xca, 0x39, 0x14, 0x5b, 0xb2, 0x19, 0x8b, 0x31, + 0x1a, 0x7a, 0x2c, 0x79, 0x76, 0xed, 0x79, 0x05, 0xa8, 0x0e, 0xe4, 0x42, + 0x76, 0x7b, 0x91, 0x5b, 0xd0, 0xdc, 0xe4, 0x35, 0x7f, 0x0b, 0x72, 0x4f, + 0xb8, 0xef, 0x45, 0x65, 0xd0, 0x2b, 0xbd, 0x4d, 0x9d, 0xe9, 0x7e, 0xda, + 0x64, 0x3e, 0xda, 0x58, 0x88, 0xbe, 0x6c, 0x5a, 0xab, 0x01, 0x76, 0x70, + 0x8d, 0x3c, 0xac, 0x41, 0xe8, 0x5e, 0xb0, 0xd3, 0x14, 0x5f, 0xec, 0x24, + 0x18, 0x74, 0x03, 0xae, 0xf6, 0xae, 0x00, 0x57, 0x69, 0x00, 0x57, 0x6b, + 0x54, 0xa4, 0xe5, 0xd6, 0xc6, 0x46, 0xef, 0x38, 0xc7, 0xed, 0x1e, 0x43, + 0x99, 0x14, 0x32, 0x24, 0xf9, 0x94, 0x10, 0x39, 0x18, 0x4a, 0xfe, 0xb7, + 0xfa, 0xbd, 0x33, 0x34, 0xa8, 0x66, 0x29, 0x98, 0x85, 0x51, 0x89, 0x21, + 0x4a, 0xef, 0xa9, 0x95, 0x95, 0x9d, 0x1d, 0xa6, 0x5d, 0x95, 0x9d, 0xa7, + 0x63, 0xb7, 0x6e, 0x7f, 0x57, 0x2a, 0xaf, 0x75, 0xa9, 0xd6, 0x89, 0xae, + 0x9a, 0xfb, 0x7e, 0x95, 0x5e, 0xdf, 0xd3, 0xaf, 0xfd, 0x29, 0xde, 0x65, + 0x3a, 0x3a, 0x18, 0xfc, 0x39, 0x32, 0xb0, 0xb3, 0xa8, 0x75, 0x0e, 0x3a, + 0x8e, 0xea, 0xa3, 0xb4, 0x28, 0x44, 0x60, 0x96, 0x0c, 0xc6, 0x0f, 0x41, + 0xd2, 0x63, 0xa3, 0xd8, 0x87, 0xc4, 0xe6, 0x46, 0x62, 0x0a, 0x16, 0x86, + 0x06, 0x41, 0xca, 0x62, 0xda, 0x29, 0xc6, 0x08, 0xe0, 0xba, 0x67, 0x6e, + 0x4a, 0xc6, 0x0a, 0x80, 0x8c, 0xbe, 0x00, 0x00, 0x74, 0x61, 0x6a, 0x32, + 0x46, 0x04, 0x60, 0x54, 0xcc, 0xc6, 0x93, 0xe5, 0xc2, 0xd2, 0x99, 0x78, + 0xea, 0x57, 0x28, 0x8e, 0xe5, 0xc2, 0x90, 0x9d, 0x52, 0x42, 0xb1, 0x5a, + 0x7f, 0x22, 0xd3, 0x10, 0xd5, 0x31, 0xd4, 0x52, 0x0c, 0x24, 0xb9, 0x05, + 0x58, 0x4d, 0x98, 0x50, 0x0c, 0x54, 0x02, 0xfa, 0x9a, 0x22, 0x58, 0xb0, + 0x99, 0xea, 0x55, 0x02, 0x2a, 0x1b, 0xb6, 0x96, 0xf4, 0xea, 0x1c, 0x82, + 0x54, 0xc2, 0xda, 0xcc, 0x04, 0x43, 0x8a, 0x75, 0x8d, 0xcd, 0x0d, 0x61, + 0x66, 0x61, 0x80, 0x71, 0x2e, 0xd6, 0x54, 0xd1, 0x19, 0x5d, 0xb8, 0x2b, + 0xa2, 0xb3, 0x65, 0x37, 0x23, 0xcc, 0xc1, 0x8e, 0xea, 0x04, 0x05, 0xf7, + 0x09, 0xd5, 0x10, 0xd6, 0x95, 0x8a, 0xd4, 0xe2, 0xbe, 0xcc, 0x30, 0x5f, + 0xb9, 0xab, 0xa6, 0x85, 0x23, 0x07, 0x4b, 0x5a, 0x8a, 0xe7, 0x35, 0x32, + 0x65, 0xba, 0x33, 0x03, 0x36, 0x50, 0x86, 0x77, 0x89, 0x17, 0xd7, 0x54, + 0x43, 0x86, 0xae, 0x56, 0xd2, 0x16, 0x15, 0xef, 0x99, 0xd5, 0xab, 0xa8, + 0x0f, 0xa1, 0xe5, 0x87, 0x2d, 0x4a, 0xb6, 0xb8, 0xac, 0x2b, 0x4f, 0x4f, + 0xc6, 0x35, 0xd4, 0x8a, 0xf5, 0xf8, 0x72, 0xd1, 0x72, 0xf5, 0xea, 0xa5, + 0xcd, 0x30, 0xe9, 0xd2, 0xbb, 0x4f, 0x20, 0x38, 0xeb, 0x4d, 0x70, 0x21, + 0x36, 0x42, 0xd3, 0x6d, 0x1c, 0xd7, 0x74, 0xb4, 0x45, 0x2b, 0x73, 0x5b, + 0x33, 0xc9, 0x61, 0x25, 0x57, 0x70, 0xd1, 0x47, 0x71, 0x3d, 0x4a, 0x42, + 0xa2, 0x51, 0x3b, 0x11, 0xc8, 0xe2, 0x38, 0xd0, 0x83, 0x24, 0x9e, 0x0f, + 0x62, 0xe0, 0x5c, 0x85, 0xd0, 0x4c, 0xc0, 0xe9, 0xbc, 0x2b, 0xfd, 0x8f, + 0xbb, 0x95, 0x94, 0x5e, 0xff, 0xe6, 0x91, 0x87, 0xd8, 0xd8, 0x8a, 0x3d, + 0x48, 0x7e, 0x65, 0xb7, 0xcb, 0x32, 0x3a, 0x64, 0x64, 0x47, 0x21, 0x94, + 0x87, 0x31, 0x0c, 0x57, 0x75, 0x56, 0xab, 0x1b, 0x32, 0xb1, 0x5c, 0x8e, + 0x87, 0xf4, 0x4b, 0xe9, 0xd5, 0x3a, 0xaa, 0xb2, 0x7d, 0x7d, 0x93, 0xff, + 0x7f, 0x7f, 0xba, 0xeb, 0xa7, 0xf5, 0xd2, 0x9f, 0xba, 0x7f, 0xd3, 0xf5, + 0xed, 0x22, 0x38, 0xe6, 0x25, 0xd8, 0xca, 0x62, 0x5c, 0xaa, 0xeb, 0x99, + 0x8d, 0x47, 0x71, 0x40, 0xf2, 0x98, 0x6a, 0x00, 0x40, 0x01, 0x80, 0xaa, + 0x02, 0x31, 0x81, 0x64, 0x04, 0x09, 0x85, 0x7a, 0x4c, 0x81, 0xac, 0xa6, + 0x0c, 0xb9, 0x83, 0x12, 0x04, 0x11, 0x81, 0x9c, 0x03, 0x49, 0x84, 0xf4, + 0x04, 0x71, 0x80, 0xc0, 0x0a, 0xd9, 0x86, 0xb4, 0x08, 0xf9, 0x80, 0x6e, + 0x01, 0xd9, 0x30, 0x11, 0x22, 0x30, 0x0a, 0xcc, 0x06, 0x70, 0x5d, 0x4c, + 0x03, 0x00, 0x04, 0x51, 0xb8, 0xf7, 0x54, 0xab, 0x8a, 0xe3, 0x92, 0xe5, + 0xec, 0x95, 0x41, 0x47, 0x9e, 0xff, 0xfb, 0xd4, 0x60, 0x23, 0x08, 0x98, + 0xd6, 0x75, 0x3f, 0x2b, 0xef, 0x7b, 0x70, 0x62, 0x2e, 0x98, 0x5a, 0x09, + 0x02, 0x6e, 0x21, 0x8d, 0xd7, 0x01, 0x2f, 0xbd, 0xed, 0xc1, 0x5e, 0x39, + 0x21, 0xa8, 0x22, 0x95, 0xb8, 0x87, 0x82, 0x71, 0x5e, 0x5c, 0x13, 0x0a, + 0xa3, 0x10, 0x60, 0xaa, 0x54, 0xec, 0x05, 0x72, 0x14, 0xce, 0x64, 0xa3, + 0x8f, 0x42, 0xf4, 0x63, 0xaf, 0xaa, 0xcf, 0x23, 0x41, 0x9c, 0xbf, 0x2d, + 0x20, 0x55, 0x88, 0x23, 0x86, 0x8b, 0x89, 0x61, 0x38, 0x37, 0x16, 0xb9, + 0x6c, 0x45, 0x1f, 0x8e, 0x94, 0x19, 0x4b, 0x35, 0xa7, 0xd4, 0x66, 0x9b, + 0xf7, 0x89, 0x8a, 0xab, 0x1c, 0xde, 0x30, 0x3b, 0x6a, 0x7c, 0xd4, 0xad, + 0x6a, 0x6c, 0x43, 0xd5, 0x8c, 0x07, 0x1b, 0x0c, 0x13, 0xb9, 0x80, 0xef, + 0x7c, 0xe6, 0xe3, 0xa5, 0xca, 0x1c, 0xba, 0x88, 0xea, 0xf1, 0x63, 0xc0, + 0x89, 0x3b, 0x19, 0xec, 0xb1, 0xa8, 0xea, 0x35, 0xcb, 0x9e, 0x9e, 0xa8, + 0x25, 0x69, 0x88, 0xcf, 0x09, 0x9d, 0xaa, 0x09, 0xcc, 0x64, 0x40, 0x84, + 0xb8, 0xde, 0x9c, 0x1c, 0x60, 0x31, 0x32, 0x9c, 0x9a, 0x63, 0x45, 0xb8, + 0xb9, 0xb2, 0x29, 0xa0, 0x33, 0x3a, 0xf0, 0x16, 0x5e, 0xb1, 0x43, 0x5a, + 0x50, 0x1f, 0xf0, 0xd8, 0xdf, 0xc8, 0xf9, 0xa1, 0x50, 0xa3, 0xd3, 0x4c, + 0x39, 0xdd, 0xb5, 0xbd, 0x9f, 0x0c, 0x74, 0x82, 0xac, 0x7e, 0x9d, 0x62, + 0x5d, 0xa1, 0x5e, 0xae, 0x6c, 0x0f, 0x70, 0x7f, 0xb5, 0xb0, 0x2b, 0x5c, + 0xee, 0xc7, 0x18, 0xdf, 0x68, 0x8c, 0x62, 0x43, 0x39, 0x95, 0xac, 0xaa, + 0xf2, 0x77, 0x18, 0x58, 0xd5, 0x6b, 0x23, 0xe2, 0x3a, 0xbc, 0xfa, 0x27, + 0xc0, 0xaa, 0x26, 0x6b, 0xc9, 0x84, 0x90, 0x06, 0x43, 0xbc, 0x85, 0x8c, + 0xc3, 0xe8, 0x00, 0x02, 0xa5, 0x4a, 0x28, 0x80, 0x07, 0xd4, 0x23, 0x92, + 0xd3, 0x8f, 0xfa, 0xbc, 0xe3, 0x4c, 0xcc, 0x68, 0x19, 0x13, 0x0d, 0x69, + 0x32, 0xe0, 0xe8, 0x7e, 0x1d, 0x49, 0x82, 0x75, 0xbf, 0x57, 0x88, 0x5f, + 0x99, 0x45, 0x8f, 0x55, 0xad, 0x3b, 0x2d, 0x17, 0xd5, 0x4a, 0xda, 0x24, + 0xc8, 0x0d, 0x08, 0x64, 0x5a, 0x4a, 0xcc, 0xd2, 0x36, 0xae, 0xbf, 0x6d, + 0x7d, 0x2d, 0x6a, 0x7f, 0xb7, 0xed, 0xfd, 0x3e, 0xfb, 0x6e, 0xbf, 0xeb, + 0x97, 0x5a, 0x2a, 0x6a, 0xcf, 0x99, 0x95, 0xd1, 0x2f, 0x49, 0xc4, 0x0c, + 0x86, 0x70, 0xca, 0x16, 0x80, 0x8c, 0x08, 0x41, 0xee, 0x14, 0xa5, 0x39, + 0xa1, 0x44, 0xd6, 0x00, 0x01, 0x54, 0xca, 0x01, 0x10, 0x08, 0xc6, 0x03, + 0x70, 0x05, 0x06, 0x0f, 0xe8, 0x55, 0x66, 0x87, 0x28, 0x28, 0xc6, 0x08, + 0x58, 0x09, 0x26, 0x02, 0x90, 0x15, 0xc6, 0x07, 0x58, 0x21, 0x26, 0x01, + 0x00, 0x08, 0x46, 0x03, 0xd8, 0x13, 0x65, 0xe4, 0x97, 0x98, 0x00, 0x20, + 0x09, 0x18, 0x21, 0x40, 0x09, 0x18, 0x02, 0xe0, 0x04, 0x31, 0x52, 0x89, + 0x81, 0xaa, 0x19, 0xe6, 0xc8, 0x31, 0x5f, 0xc5, 0x6e, 0x35, 0xd9, 0x10, + 0x44, 0xa0, 0x7a, 0x51, 0x8e, 0x61, 0x54, 0x37, 0xcb, 0x82, 0x50, 0xe1, + 0x12, 0xe3, 0xd2, 0x4f, 0x87, 0x19, 0xe8, 0xc6, 0x73, 0x1a, 0x67, 0xf9, + 0x2f, 0x5f, 0x42, 0xda, 0x9f, 0x12, 0x64, 0xfa, 0x14, 0x8f, 0x4e, 0x36, + 0x27, 0xd0, 0xf6, 0xfb, 0x23, 0x4e, 0x17, 0xca, 0xa6, 0x56, 0x05, 0x0b, + 0x53, 0xc4, 0x39, 0x16, 0x94, 0x51, 0x8f, 0xfc, 0xbf, 0x67, 0x86, 0xd5, + 0x32, 0xda, 0x25, 0x2d, 0x77, 0x8a, 0xad, 0xb0, 0xa7, 0xda, 0xee, 0xe0, + 0xab, 0xb4, 0x05, 0xb5, 0x89, 0x98, 0x95, 0xb8, 0x6f, 0x42, 0x56, 0x25, + 0x64, 0x71, 0x61, 0x8f, 0x3d, 0x92, 0x6c, 0x4c, 0xb6, 0x89, 0x1a, 0xef, + 0x18, 0x5b, 0x34, 0xcc, 0xdc, 0xb4, 0xf6, 0x0a, 0xa3, 0x2c, 0x2e, 0x31, + 0x59, 0x2d, 0x2d, 0x19, 0x5d, 0xc0, 0x7d, 0x17, 0xd5, 0x72, 0xee, 0x14, + 0x58, 0x51, 0xe1, 0x47, 0xd3, 0x5e, 0x64, 0x96, 0x0d, 0x3b, 0x26, 0xde, + 0xa9, 0x2a, 0xf6, 0x2c, 0xe9, 0x56, 0x44, 0x75, 0xa1, 0x5a, 0x3e, 0x5a, + 0x9f, 0xc5, 0x79, 0x01, 0x70, 0xfe, 0x13, 0x2c, 0x95, 0x9d, 0xc5, 0xc5, + 0x45, 0x2c, 0x7d, 0x32, 0x4d, 0x33, 0xca, 0xd1, 0xb9, 0x3d, 0x15, 0xe3, + 0xab, 0x31, 0x45, 0x56, 0x29, 0x34, 0xcd, 0x68, 0x2d, 0xaf, 0xce, 0x56, + 0xb2, 0xd8, 0xbf, 0x3b, 0xf3, 0x28, 0xb6, 0x4c, 0x69, 0xa9, 0x4f, 0x52, + 0x95, 0x34, 0x5c, 0x47, 0x9a, 0x2c, 0xb0, 0x27, 0x01, 0xb2, 0x1d, 0x62, + 0xb5, 0x11, 0x44, 0x16, 0x2e, 0xee, 0xed, 0xa5, 0x50, 0xac, 0x83, 0x98, + 0xa2, 0x6a, 0x2e, 0x64, 0xbc, 0x9b, 0x7d, 0x48, 0xcb, 0x4b, 0xc1, 0x05, + 0x0c, 0x20, 0x75, 0x18, 0x2c, 0x16, 0x26, 0x1e, 0x42, 0xa4, 0xe5, 0x72, + 0x19, 0xc8, 0xac, 0x52, 0x6e, 0xc6, 0xca, 0x5a, 0x6c, 0x8a, 0xda, 0xd9, + 0x92, 0xde, 0x96, 0xa7, 0x3f, 0xa7, 0x6b, 0xe9, 0xbf, 0xff, 0xbf, 0xff, + 0xff, 0xff, 0xff, 0xf7, 0x5a, 0xc8, 0xe4, 0xad, 0x91, 0xd9, 0x08, 0x8b, + 0x68, 0xe4, 0x0d, 0xce, 0x8e, 0xa2, 0x06, 0x2a, 0x90, 0xcc, 0xe8, 0x32, + 0x0b, 0x80, 0x7e, 0x60, 0x2b, 0x01, 0x98, 0x60, 0xfd, 0x99, 0x62, 0x69, + 0x10, 0x87, 0xb4, 0x60, 0x7a, 0x81, 0x4e, 0x04, 0x01, 0x24, 0xc2, 0x73, + 0x03, 0xa8, 0xc0, 0x3b, 0x01, 0x10, 0x2a, 0x04, 0x30, 0x18, 0x01, 0x15, + 0x57, 0x06, 0x00, 0x04, 0x60, 0xd2, 0x82, 0xc0, 0x2c, 0x06, 0xa3, 0x37, + 0x4e, 0xa0, 0x89, 0xe2, 0x0c, 0x62, 0x95, 0x07, 0x72, 0x2c, 0xfc, 0x24, + 0xcb, 0x63, 0xac, 0xe8, 0x54, 0xff, 0xfb, 0xd4, 0x60, 0x20, 0x8f, 0x88, + 0xce, 0x75, 0xbe, 0x83, 0xef, 0x7b, 0x70, 0x49, 0x67, 0x08, 0xad, 0x04, + 0x43, 0x5c, 0x25, 0x19, 0xd2, 0xf8, 0x0f, 0xbd, 0xed, 0xc1, 0x56, 0x38, + 0x21, 0xe8, 0x11, 0x89, 0xb9, 0x32, 0x1b, 0x6a, 0xf2, 0x74, 0x4a, 0x50, + 0x04, 0xe5, 0x7c, 0x82, 0x39, 0x93, 0x21, 0x03, 0x61, 0x43, 0x49, 0x72, + 0x21, 0x2a, 0x5b, 0x86, 0x5e, 0x89, 0xfb, 0x93, 0x02, 0x25, 0x4e, 0x74, + 0xa4, 0x49, 0x6a, 0x08, 0xfd, 0x63, 0x66, 0x91, 0x4e, 0x86, 0xa1, 0x28, + 0x1c, 0x3d, 0x60, 0x91, 0xb1, 0x74, 0x6f, 0xe1, 0x89, 0x7d, 0x34, 0x87, + 0x21, 0x0a, 0x25, 0xf6, 0x65, 0x7b, 0x42, 0x9a, 0x03, 0xc4, 0xb3, 0xb4, + 0x5e, 0x8f, 0xf4, 0x32, 0x05, 0xdf, 0x34, 0xb2, 0x1e, 0x0a, 0x47, 0xac, + 0x8e, 0x30, 0x50, 0x88, 0x07, 0x4a, 0x12, 0xa7, 0x66, 0x63, 0x46, 0xb0, + 0x38, 0xa8, 0xdb, 0xd5, 0x1a, 0x95, 0x70, 0xd6, 0xb9, 0x39, 0x92, 0xc9, + 0x65, 0x7a, 0x95, 0x5e, 0xb2, 0xd4, 0x61, 0xc2, 0x4e, 0x45, 0x86, 0xdc, + 0xb9, 0x4f, 0xc2, 0x32, 0x53, 0xeb, 0xd1, 0x53, 0x2c, 0x48, 0xa8, 0x2a, + 0x74, 0x51, 0x38, 0x44, 0xb2, 0xae, 0x25, 0x72, 0x65, 0x52, 0xc7, 0x5d, + 0xd1, 0x92, 0x64, 0x42, 0xb1, 0xeb, 0xe7, 0xe8, 0xf8, 0xe9, 0x35, 0x73, + 0x13, 0x8d, 0x95, 0x35, 0x65, 0x3f, 0xea, 0x99, 0x85, 0xa7, 0xee, 0xda, + 0xa2, 0x29, 0xd6, 0xb7, 0x64, 0xeb, 0x2e, 0xd9, 0xe3, 0x47, 0x83, 0x15, + 0x53, 0x2a, 0x89, 0x61, 0x65, 0x1c, 0xde, 0xaa, 0x68, 0x46, 0x6e, 0x5a, + 0x30, 0x96, 0xca, 0x2e, 0x49, 0x42, 0x8c, 0x7d, 0xa7, 0xdb, 0x0b, 0x01, + 0x6d, 0x16, 0x25, 0x48, 0x7e, 0x97, 0x03, 0xa9, 0x52, 0x12, 0xa5, 0xd2, + 0x1a, 0x3f, 0x52, 0xe6, 0x22, 0x90, 0x00, 0x00, 0x0d, 0x4b, 0x14, 0xb6, + 0xc4, 0x82, 0xd3, 0xcb, 0xfd, 0x77, 0x61, 0x52, 0xdd, 0xd6, 0x04, 0x8c, + 0xe4, 0x77, 0xbe, 0xbb, 0x3e, 0x5f, 0x9f, 0xe2, 0x09, 0x23, 0x15, 0x63, + 0x19, 0xcf, 0x75, 0x22, 0xdf, 0x86, 0x09, 0xd1, 0x99, 0x13, 0xcb, 0x72, + 0x9b, 0xbe, 0xea, 0x68, 0x72, 0x53, 0x23, 0x2c, 0xd7, 0x07, 0xb7, 0xca, + 0xc0, 0x89, 0xd4, 0xcf, 0x4f, 0xff, 0xff, 0xfd, 0xf5, 0xbc, 0xa1, 0x92, + 0xa2, 0xe2, 0x02, 0xf0, 0xc1, 0xb1, 0x64, 0x98, 0x04, 0x80, 0x38, 0x81, + 0x41, 0x08, 0x30, 0x21, 0x51, 0xcb, 0x31, 0xd7, 0xc4, 0x4e, 0x24, 0x03, + 0x8c, 0xc0, 0x26, 0x02, 0x3c, 0xc2, 0xe8, 0x03, 0x68, 0x14, 0x03, 0xc1, + 0x81, 0x0a, 0x06, 0x18, 0x18, 0x00, 0x13, 0x00, 0x10, 0x02, 0x63, 0x00, + 0x40, 0x06, 0xd3, 0x03, 0xe0, 0x27, 0xb2, 0xa8, 0x03, 0xa0, 0xc0, 0x00, + 0x8c, 0xb2, 0x70, 0xaa, 0x35, 0xd6, 0x49, 0xa9, 0x0b, 0x45, 0x12, 0x35, + 0xca, 0x1c, 0x75, 0x92, 0xd8, 0x1c, 0xfa, 0x56, 0x8d, 0x94, 0x19, 0x2f, + 0x37, 0x43, 0xf4, 0x6a, 0x2d, 0x1a, 0x41, 0xec, 0xc1, 0x13, 0x62, 0xf2, + 0xb0, 0x73, 0x9a, 0xd1, 0xcd, 0xd6, 0x06, 0x75, 0x71, 0xdc, 0xa4, 0x1c, + 0x2c, 0x69, 0xc6, 0x24, 0xfb, 0xe1, 0xf0, 0xa6, 0x30, 0xdd, 0x24, 0x92, + 0x88, 0x59, 0xa0, 0x4c, 0x14, 0x87, 0x09, 0x7d, 0x6e, 0x2e, 0x48, 0x63, + 0x89, 0x3d, 0x15, 0xc7, 0xf0, 0x57, 0x2c, 0xc7, 0x32, 0x51, 0x08, 0x39, + 0x26, 0x32, 0x8c, 0x55, 0x62, 0x76, 0x2a, 0x6d, 0x81, 0x65, 0x0b, 0x52, + 0x33, 0xbb, 0x72, 0x66, 0x7a, 0x64, 0x30, 0x2a, 0x0a, 0xb2, 0xc2, 0xe7, + 0x1c, 0xfe, 0x3e, 0x0f, 0x38, 0xd3, 0xc5, 0x55, 0xac, 0x9e, 0x45, 0xc9, + 0xeb, 0xd4, 0xe9, 0xfc, 0xc2, 0x9a, 0x78, 0x85, 0x2e, 0xdf, 0x2e, 0xee, + 0xb8, 0x2e, 0xa8, 0x85, 0xd2, 0xc3, 0x23, 0x14, 0x16, 0xc4, 0x4c, 0x4e, + 0xe0, 0x8f, 0x67, 0x61, 0x38, 0xa4, 0x64, 0x49, 0x36, 0x1e, 0x47, 0xa1, + 0x7d, 0x95, 0x0e, 0x2d, 0x57, 0x05, 0xca, 0x15, 0x51, 0x4a, 0x87, 0x9d, + 0x5a, 0xa4, 0x44, 0x27, 0x54, 0x87, 0xc3, 0x8a, 0xbb, 0xc5, 0x82, 0x92, + 0xdc, 0xad, 0x04, 0x95, 0xc5, 0x4a, 0x9b, 0x2e, 0x4a, 0xc6, 0x54, 0x8a, + 0xc5, 0x23, 0x1c, 0x4f, 0xce, 0xf6, 0x25, 0x43, 0x1a, 0xbc, 0xe5, 0x61, + 0x43, 0x1f, 0xc2, 0x37, 0x4f, 0xe5, 0x42, 0x16, 0xf8, 0xf1, 0x3a, 0x18, + 0x9c, 0x61, 0xb9, 0x0d, 0x46, 0x30, 0x81, 0x23, 0x0f, 0x20, 0xe0, 0x20, + 0xab, 0x90, 0x52, 0x8b, 0x48, 0x6f, 0x8f, 0x40, 0x74, 0x89, 0xba, 0x38, + 0xe4, 0x21, 0x21, 0xc2, 0x35, 0xa6, 0xe4, 0x48, 0x10, 0xa4, 0xe1, 0x30, + 0x82, 0xb9, 0xbf, 0xf1, 0x88, 0x88, 0x84, 0x10, 0x71, 0x34, 0xa9, 0x11, + 0x68, 0x74, 0xe4, 0xf1, 0xbe, 0xc7, 0xd2, 0x66, 0xa8, 0x49, 0xbb, 0xa5, + 0x6c, 0x2a, 0x4c, 0x14, 0x63, 0x91, 0x95, 0x58, 0xe6, 0x49, 0x5a, 0x7d, + 0x91, 0x59, 0x5d, 0xfa, 0xb4, 0xef, 0x62, 0xa5, 0xd5, 0x59, 0x7f, 0xff, + 0xff, 0xf4, 0xab, 0x59, 0x5f, 0xb7, 0xef, 0xda, 0xdf, 0xff, 0xf7, 0xf6, + 0xf6, 0x7a, 0xf6, 0xa9, 0x11, 0x22, 0x56, 0x62, 0x4d, 0x29, 0x74, 0x69, + 0x5c, 0x2c, 0xdd, 0x1d, 0xd1, 0xb5, 0x30, 0x76, 0x06, 0xd3, 0x0d, 0x70, + 0x7e, 0x32, 0x88, 0xc5, 0x13, 0xc0, 0xc7, 0xb8, 0x34, 0xce, 0x05, 0x63, + 0x13, 0x70, 0xee, 0x31, 0x56, 0x14, 0x10, 0x80, 0x05, 0x15, 0x0b, 0xe3, + 0x00, 0x90, 0x14, 0x40, 0x09, 0x80, 0xe8, 0x13, 0x18, 0x93, 0x11, 0x51, + 0x82, 0xe8, 0x07, 0x17, 0x55, 0xc0, 0x70, 0x92, 0xd3, 0x89, 0xac, 0xf4, + 0x4d, 0x18, 0x6c, 0x6f, 0x0a, 0xff, 0xfb, 0xd4, 0x60, 0x1d, 0x8f, 0x88, + 0xbd, 0x76, 0x3e, 0x83, 0xcf, 0x7b, 0x70, 0x58, 0x8e, 0x88, 0x59, 0x14, + 0x42, 0x6e, 0x21, 0x5d, 0xd6, 0xfc, 0x0f, 0x3d, 0xed, 0xc1, 0x71, 0x39, + 0xe1, 0x64, 0x31, 0x95, 0xb8, 0x53, 0xaf, 0x45, 0x92, 0x40, 0x78, 0x90, + 0x51, 0x76, 0x27, 0x44, 0xa4, 0xbb, 0x8b, 0x98, 0xcc, 0x39, 0x87, 0x88, + 0x75, 0x91, 0xa4, 0xc0, 0xc8, 0x1b, 0xe9, 0x12, 0xf6, 0x4b, 0xd9, 0x0c, + 0x35, 0x7c, 0x28, 0xc6, 0x49, 0x0b, 0x3d, 0x97, 0x4a, 0x53, 0xe8, 0x8e, + 0x68, 0x39, 0xc9, 0xda, 0xdc, 0xa7, 0xf2, 0xbd, 0xa9, 0x0f, 0x5d, 0x2d, + 0x9f, 0xa8, 0x73, 0x8a, 0xc5, 0x4e, 0xa6, 0x13, 0xd1, 0x34, 0xe3, 0x12, + 0x0c, 0xc7, 0xb2, 0x86, 0x31, 0xe1, 0xa6, 0x07, 0x32, 0xde, 0x5b, 0x50, + 0xe5, 0x5a, 0xad, 0x16, 0xed, 0xbe, 0xca, 0x73, 0x4d, 0xdb, 0xb7, 0xec, + 0xfb, 0x57, 0x9d, 0x0c, 0x0b, 0x71, 0x99, 0x98, 0x96, 0x5f, 0xb4, 0xd9, + 0x51, 0x5d, 0xcd, 0x1a, 0x1a, 0x1f, 0x84, 0xc2, 0x89, 0x2c, 0x6f, 0xc8, + 0x93, 0x64, 0x5c, 0x30, 0x1d, 0x09, 0xe6, 0x19, 0x52, 0x93, 0xdd, 0xd1, + 0xbd, 0xad, 0xcd, 0x12, 0xc5, 0xdd, 0xc5, 0x00, 0x87, 0x47, 0x66, 0x55, + 0x59, 0x27, 0x05, 0x3c, 0xe6, 0xb0, 0xae, 0x79, 0xa4, 0xca, 0xd3, 0x43, + 0x32, 0x3d, 0x99, 0x3d, 0xa6, 0xe6, 0xcd, 0xc3, 0xcb, 0xf7, 0x8b, 0x73, + 0x32, 0xb0, 0xef, 0x2c, 0x96, 0x55, 0x3b, 0x43, 0x9c, 0xdb, 0xd5, 0xef, + 0xd8, 0xdf, 0x3b, 0x7b, 0x33, 0x1c, 0x67, 0xcc, 0x8c, 0x89, 0xdb, 0x1d, + 0xc9, 0xe3, 0x78, 0xff, 0x48, 0x8e, 0x35, 0xc9, 0xd4, 0xce, 0xca, 0xd8, + 0x91, 0x39, 0x92, 0x68, 0x59, 0x96, 0x80, 0x26, 0x9a, 0x10, 0xf3, 0x40, + 0xb3, 0x73, 0x3a, 0x18, 0x00, 0x82, 0x33, 0x8f, 0x54, 0xd8, 0x00, 0x03, + 0x00, 0xb4, 0x80, 0x19, 0x94, 0x74, 0x4c, 0x8e, 0xc4, 0x2c, 0x95, 0x39, + 0xf3, 0x82, 0x06, 0x6b, 0x74, 0xff, 0xfe, 0x88, 0xf6, 0x62, 0xa9, 0xe8, + 0x8e, 0x56, 0x65, 0xd1, 0x98, 0xef, 0x7b, 0x50, 0xc6, 0x73, 0x31, 0xe4, + 0xdc, 0x5c, 0xa8, 0x66, 0x5f, 0x6f, 0x99, 0x1f, 0xdb, 0x96, 0xff, 0xf5, + 0x64, 0x5e, 0x99, 0xff, 0xff, 0x54, 0xfb, 0x7b, 0x2f, 0xd7, 0xfd, 0xf7, + 0xae, 0xd3, 0x6c, 0xc4, 0x96, 0xac, 0x6a, 0x11, 0xe7, 0x8a, 0x30, 0x85, + 0x3b, 0xb0, 0x93, 0x0b, 0x40, 0x14, 0x50, 0xe7, 0x29, 0xce, 0x04, 0x28, + 0xe2, 0xc1, 0x98, 0x1f, 0x00, 0x21, 0x85, 0xc8, 0x63, 0x99, 0xb5, 0x23, + 0x11, 0xff, 0x94, 0x52, 0x83, 0x98, 0x24, 0x48, 0x65, 0x8c, 0x3f, 0x40, + 0x28, 0x58, 0x1f, 0xcc, 0x24, 0x81, 0x9c, 0xb2, 0xc5, 0x60, 0x0a, 0x18, + 0x08, 0x86, 0x2c, 0xe1, 0xa6, 0x60, 0xa4, 0x01, 0x0a, 0x72, 0xca, 0x4e, + 0xd5, 0xe4, 0xd1, 0x0e, 0x3c, 0x98, 0x26, 0x2b, 0xdd, 0x27, 0x62, 0x21, + 0xa4, 0xb5, 0x4a, 0x7a, 0xa1, 0x0f, 0x89, 0xb2, 0x74, 0xbf, 0x92, 0x65, + 0x51, 0x04, 0x38, 0x19, 0xd4, 0xa7, 0x9a, 0xe8, 0xd7, 0x99, 0xb0, 0xea, + 0x9d, 0x3e, 0xb2, 0x62, 0x17, 0xe3, 0xd7, 0x53, 0x21, 0x72, 0x9f, 0x4d, + 0xc6, 0x49, 0x6f, 0x91, 0x5a, 0x5f, 0x19, 0xdd, 0x23, 0x56, 0x1a, 0x54, + 0xf0, 0xa1, 0x3e, 0x58, 0x57, 0xa7, 0xdc, 0x5b, 0x9e, 0x75, 0x94, 0x21, + 0x53, 0x15, 0xf2, 0xd4, 0x53, 0x99, 0x6e, 0x65, 0x35, 0x61, 0xbc, 0x6b, + 0x76, 0x8f, 0x8a, 0xa8, 0x9f, 0xca, 0xa9, 0x88, 0xaa, 0x61, 0x53, 0xc6, + 0x53, 0xbb, 0x57, 0xab, 0xd4, 0x97, 0x62, 0x45, 0x2c, 0xa9, 0xd0, 0x51, + 0xd5, 0x76, 0x61, 0x9d, 0xcf, 0x74, 0x42, 0x4e, 0x96, 0xcb, 0xad, 0x1b, + 0x4a, 0xc6, 0xe6, 0xb7, 0x4d, 0x4b, 0x0b, 0x96, 0xf5, 0x3b, 0x3b, 0xad, + 0xae, 0xfa, 0xe9, 0x38, 0xc6, 0xc2, 0x89, 0x7b, 0x96, 0x65, 0x9a, 0x51, + 0xdb, 0x6e, 0x9f, 0xe5, 0xeb, 0x2b, 0x92, 0x75, 0xe3, 0x7b, 0x26, 0x22, + 0xaf, 0x28, 0xdf, 0x48, 0xdc, 0xde, 0xa5, 0x57, 0x42, 0x7a, 0xcf, 0x97, + 0xed, 0xb0, 0x94, 0xaf, 0x22, 0x23, 0xd5, 0xea, 0xf6, 0x75, 0x6a, 0x41, + 0xf4, 0x15, 0x52, 0x36, 0x02, 0x75, 0x1e, 0xa8, 0x9e, 0x12, 0xe8, 0xfc, + 0x53, 0xbc, 0x55, 0xa3, 0xce, 0x27, 0x34, 0x5a, 0xcb, 0x7b, 0x31, 0xb4, + 0xc4, 0xad, 0x55, 0xbe, 0x4a, 0x20, 0x8d, 0xc3, 0x5c, 0xf1, 0x2e, 0xca, + 0x11, 0x8b, 0x04, 0xe5, 0x69, 0x56, 0xd5, 0xa8, 0x00, 0x4e, 0x80, 0xcc, + 0x76, 0x6a, 0x85, 0x50, 0x65, 0x74, 0x30, 0x95, 0x2e, 0xee, 0xf5, 0x68, + 0x72, 0x6b, 0x67, 0xe7, 0x5e, 0xbf, 0xf3, 0xc8, 0xf5, 0x29, 0xd8, 0x85, + 0xec, 0x48, 0xa4, 0x32, 0x1b, 0x41, 0x88, 0xe2, 0xce, 0xa8, 0xa7, 0x54, + 0x63, 0x92, 0xd3, 0x2f, 0x6c, 0xff, 0xe4, 0xfe, 0x5d, 0x3d, 0x79, 0x9b, + 0x2f, 0x54, 0xd3, 0x7f, 0x7f, 0xa3, 0x59, 0x59, 0xff, 0x5f, 0xde, 0xbe, + 0xd6, 0xd1, 0x91, 0xfd, 0xa4, 0x79, 0x1d, 0x4b, 0xb1, 0x63, 0xa6, 0x1a, + 0xa7, 0x1e, 0xc8, 0x35, 0x10, 0x41, 0x10, 0x87, 0x1a, 0x16, 0x79, 0x85, + 0xc5, 0x55, 0xc0, 0x0c, 0x0d, 0xc1, 0xb0, 0xc0, 0xe0, 0x45, 0x4c, 0x15, + 0x6c, 0x88, 0xef, 0x45, 0x10, 0xcc, 0x51, 0x43, 0xb0, 0xc0, 0xf8, 0x27, + 0x4c, 0x0e, 0x82, 0x40, 0x2e, 0x07, 0xe6, 0x21, 0xa0, 0x54, 0x60, 0x08, + 0x00, 0x8b, 0xc8, 0x2e, 0x01, 0x46, 0x2b, 0x40, 0xb8, 0x10, 0x07, 0x12, + 0xc4, 0x73, 0x92, 0x99, 0x58, 0xcc, 0xa5, 0x34, 0x90, 0xc4, 0xf1, 0x08, + 0x42, 0xe5, 0x5d, 0x25, 0xc8, 0xff, 0xfb, 0xd4, 0x60, 0x1f, 0x88, 0x88, + 0x9e, 0x76, 0x3f, 0x0b, 0xcf, 0x7b, 0x70, 0x3e, 0xa5, 0xb8, 0xdd, 0x04, + 0x42, 0x4d, 0x24, 0x8d, 0xd8, 0xfc, 0xcf, 0xbd, 0xed, 0xc1, 0x0a, 0x13, + 0x23, 0xb4, 0x11, 0x09, 0x2c, 0x3a, 0x14, 0x46, 0x58, 0xcf, 0x03, 0x54, + 0x96, 0xbb, 0x53, 0x97, 0x45, 0x11, 0x7a, 0x60, 0x42, 0x94, 0x48, 0xb6, + 0xa5, 0x69, 0xd1, 0x04, 0xa5, 0x74, 0xb8, 0x2f, 0x0b, 0xa5, 0x72, 0x69, + 0xb5, 0x89, 0xb2, 0x32, 0xad, 0x3e, 0xac, 0x43, 0x92, 0x4e, 0x99, 0xda, + 0xe2, 0x1d, 0x88, 0x59, 0xf8, 0x91, 0x32, 0xcf, 0x28, 0xed, 0xaa, 0xc5, + 0x7a, 0xdc, 0x47, 0x09, 0x92, 0xcf, 0xcf, 0xb4, 0x5a, 0x9e, 0x12, 0xa1, + 0x42, 0xdc, 0x73, 0xdd, 0x38, 0xd8, 0xc9, 0x55, 0x5b, 0x55, 0xd8, 0x63, + 0xa1, 0xf0, 0x92, 0x51, 0x3b, 0x53, 0x93, 0xe6, 0x56, 0x76, 0x05, 0x3a, + 0xc3, 0xeb, 0xc1, 0x9d, 0x99, 0x91, 0x50, 0x8d, 0x63, 0x58, 0x95, 0x5e, + 0xf5, 0xf2, 0xe9, 0xf3, 0x53, 0x1c, 0x0a, 0x22, 0xcf, 0xf4, 0xe3, 0x82, + 0x8d, 0x3c, 0xcc, 0xc4, 0xd7, 0x22, 0x91, 0xc2, 0x2b, 0x4c, 0x16, 0x26, + 0x08, 0xcc, 0xd6, 0x58, 0x6d, 0x6c, 0x70, 0x50, 0x62, 0x65, 0x53, 0x7a, + 0xb6, 0x14, 0x07, 0x06, 0x48, 0xee, 0x2d, 0xd1, 0x18, 0x8f, 0xc5, 0x1b, + 0x1b, 0x33, 0x1b, 0xf7, 0xca, 0x6a, 0xbd, 0x87, 0x23, 0x83, 0x6c, 0x0c, + 0xb6, 0x31, 0x3c, 0x63, 0x6c, 0x95, 0xc5, 0xb6, 0x53, 0xf5, 0x5a, 0xa0, + 0x4d, 0x25, 0xd5, 0x8a, 0xe3, 0xd1, 0xb1, 0x1b, 0x46, 0x25, 0x3a, 0xe1, + 0x4e, 0x68, 0xaa, 0x8c, 0x8c, 0x99, 0xc4, 0x9c, 0xd9, 0x54, 0xec, 0xca, + 0x43, 0x89, 0xd0, 0xfd, 0x39, 0x8f, 0xb8, 0x65, 0xb0, 0x77, 0x0f, 0x33, + 0xbd, 0xa0, 0x00, 0x00, 0x17, 0x5d, 0x2c, 0xb2, 0x22, 0x07, 0x3e, 0xf6, + 0xf3, 0x23, 0x02, 0x1c, 0xc7, 0x74, 0x64, 0xce, 0xd2, 0xbd, 0x2f, 0x31, + 0x89, 0xba, 0x9d, 0x59, 0x4f, 0xa2, 0x1e, 0x66, 0x4c, 0x83, 0xa5, 0xdc, + 0xce, 0xcf, 0x74, 0x7b, 0x3d, 0x9d, 0x9f, 0x3f, 0x1a, 0x0c, 0xaa, 0x71, + 0x28, 0x90, 0x16, 0xf2, 0xab, 0xf7, 0xa7, 0xdd, 0xec, 0xd9, 0xff, 0xff, + 0xff, 0xed, 0xd1, 0x65, 0x21, 0x15, 0xa0, 0x03, 0x00, 0xec, 0x02, 0x23, + 0x02, 0x30, 0x03, 0xf3, 0x07, 0xb4, 0x59, 0x03, 0x45, 0x0c, 0x06, 0x23, + 0x05, 0xbc, 0x01, 0x81, 0xa0, 0x44, 0x4c, 0x07, 0x20, 0x09, 0x4c, 0x03, + 0xe0, 0x00, 0x4c, 0x11, 0x20, 0x0a, 0x00, 0x20, 0x03, 0x91, 0x00, 0x1a, + 0xac, 0x26, 0x0b, 0x68, 0x07, 0x86, 0x01, 0xf0, 0x00, 0xae, 0x39, 0xfe, + 0xde, 0xca, 0xc3, 0xf6, 0x6f, 0x22, 0x90, 0xf5, 0x91, 0x8a, 0xe4, 0x39, + 0x8f, 0x47, 0x48, 0x69, 0xc4, 0x5b, 0x4b, 0x80, 0xbc, 0xe0, 0xf2, 0x1b, + 0x84, 0xf8, 0xe1, 0x76, 0x60, 0x33, 0x9b, 0xe7, 0x61, 0x2b, 0x42, 0xc9, + 0x49, 0xa0, 0x37, 0x53, 0xa8, 0xc6, 0x91, 0x0c, 0x89, 0x74, 0x59, 0xa6, + 0x39, 0x8f, 0xd2, 0x74, 0x84, 0x26, 0xd8, 0xce, 0xa0, 0xe2, 0x6f, 0x34, + 0x4f, 0x00, 0xfc, 0x3d, 0x8b, 0x19, 0x21, 0x38, 0x13, 0xc8, 0x19, 0x50, + 0xc7, 0xc7, 0x58, 0xb7, 0x1a, 0x2b, 0x22, 0x64, 0x30, 0xe2, 0x98, 0x84, + 0xdf, 0x4c, 0x6c, 0xe2, 0xde, 0xb2, 0x5f, 0x17, 0x56, 0x56, 0x2e, 0x22, + 0xbe, 0x43, 0x9a, 0xd4, 0x8e, 0x2f, 0x1b, 0xd3, 0xaa, 0xd5, 0x64, 0x55, + 0xa8, 0x8c, 0x6e, 0x68, 0x54, 0x90, 0xa0, 0x55, 0xbc, 0xfe, 0x56, 0x25, + 0x53, 0xeb, 0x2a, 0x95, 0xc2, 0x33, 0x0c, 0xab, 0x97, 0x4e, 0x95, 0x70, + 0xb0, 0xe1, 0x1d, 0xf3, 0x84, 0x57, 0x4f, 0x93, 0xcf, 0xd7, 0x6a, 0xf8, + 0x2d, 0x2c, 0x8f, 0x6d, 0x0d, 0x0f, 0x8c, 0x7e, 0xb9, 0xba, 0x4f, 0x62, + 0x8f, 0xd3, 0x90, 0x54, 0x69, 0x77, 0xec, 0x2e, 0x30, 0x58, 0x15, 0x71, + 0xe6, 0x7a, 0x75, 0xb6, 0x20, 0x62, 0x31, 0xa1, 0xaa, 0x3a, 0xc8, 0xc6, + 0xe7, 0x05, 0x58, 0xf1, 0xc5, 0xcd, 0x14, 0x85, 0xe5, 0xf4, 0x45, 0x4c, + 0xf0, 0x30, 0xbc, 0xbc, 0xdc, 0xa7, 0x6b, 0x5f, 0x57, 0x1b, 0x2c, 0x69, + 0xe7, 0xca, 0x52, 0xfc, 0x76, 0x1c, 0xf4, 0x34, 0x8b, 0x72, 0x49, 0x61, + 0x0e, 0x27, 0xca, 0xe3, 0xd4, 0xbd, 0x93, 0x62, 0xde, 0x2f, 0xcd, 0x90, + 0x52, 0xa7, 0x48, 0x50, 0xfa, 0x12, 0x63, 0x25, 0xa0, 0x49, 0xbd, 0x96, + 0xda, 0xd1, 0x1f, 0x5f, 0xf6, 0x65, 0x6b, 0x56, 0x82, 0x4c, 0x51, 0x45, + 0x75, 0x76, 0x3b, 0x95, 0xde, 0x89, 0xa3, 0x2d, 0xb2, 0x3b, 0xd6, 0x6d, + 0xd9, 0xe4, 0x21, 0xac, 0xfe, 0x39, 0x4c, 0x82, 0xc0, 0x02, 0xa2, 0x12, + 0x87, 0x84, 0x81, 0xb3, 0xc5, 0x0e, 0x32, 0x78, 0xbc, 0x0e, 0x70, 0x59, + 0x22, 0xc9, 0x26, 0xee, 0xe5, 0x2f, 0xa9, 0xde, 0xad, 0x9f, 0xff, 0xff, + 0xe8, 0x7f, 0x62, 0x15, 0x00, 0xb2, 0xb4, 0x80, 0x60, 0x0e, 0x01, 0x26, + 0x0b, 0x00, 0xec, 0x62, 0xea, 0x90, 0x27, 0xc6, 0x64, 0x40, 0x61, 0x7e, + 0x0c, 0x66, 0x07, 0x80, 0x88, 0x60, 0xba, 0x09, 0xa2, 0x80, 0x48, 0x61, + 0x5a, 0x16, 0x60, 0x80, 0x01, 0x54, 0xc0, 0x10, 0x21, 0x31, 0x48, 0x13, + 0x11, 0x20, 0x57, 0x86, 0x22, 0x1f, 0xd1, 0x20, 0x89, 0xf9, 0x2c, 0x36, + 0x90, 0x93, 0x89, 0xac, 0xd0, 0x21, 0xf6, 0x26, 0xa7, 0xe1, 0x4a, 0x6f, + 0x83, 0x98, 0x47, 0x86, 0x18, 0x8d, 0x12, 0xb2, 0xc6, 0xc6, 0x50, 0x0e, + 0x42, 0x72, 0xa2, 0x1b, 0xa7, 0x51, 0x7c, 0x21, 0xe6, 0xc8, 0xc4, 0x2d, + 0x88, 0x48, 0xe5, 0x2f, 0x2a, 0xff, 0xfb, 0xd4, 0x60, 0x30, 0x88, 0x88, + 0xd7, 0x76, 0x3f, 0x33, 0xcf, 0x7b, 0x70, 0x56, 0x4d, 0xe8, 0x8a, 0x04, + 0x22, 0x6e, 0x64, 0x39, 0xd8, 0xfa, 0x2f, 0x3d, 0xed, 0xc1, 0x19, 0x00, + 0x22, 0xf4, 0x10, 0x8d, 0x34, 0x27, 0xe8, 0x70, 0xb6, 0xa5, 0x50, 0xf5, + 0x82, 0xda, 0x73, 0x33, 0x2b, 0x97, 0x64, 0xe8, 0xdb, 0x7e, 0xc8, 0xbe, + 0xf0, 0x5b, 0x5c, 0xd7, 0x68, 0xf5, 0xca, 0xf9, 0x28, 0x56, 0x39, 0xc0, + 0x57, 0x1a, 0xef, 0x63, 0x93, 0xd2, 0x78, 0x3d, 0x4d, 0x25, 0x85, 0xea, + 0x1a, 0x80, 0x3d, 0xd1, 0xa8, 0xb6, 0x17, 0x05, 0x63, 0x03, 0xb6, 0x57, + 0x33, 0x1c, 0xe8, 0x43, 0x0f, 0x75, 0x41, 0x94, 0xe2, 0x8c, 0x4f, 0x21, + 0x89, 0x2b, 0xd8, 0xfc, 0x7b, 0xd6, 0x90, 0xf8, 0xaf, 0x57, 0xb5, 0x06, + 0x8d, 0x89, 0xc9, 0x54, 0xd8, 0x50, 0x3c, 0x44, 0xb9, 0xae, 0x63, 0x23, + 0xe3, 0x3f, 0x99, 0xbd, 0x45, 0x1a, 0x74, 0x4e, 0x95, 0x51, 0x99, 0x1a, + 0xa0, 0xc1, 0x52, 0xa1, 0x8e, 0x0c, 0x4d, 0x0e, 0x98, 0xd3, 0xd4, 0x89, + 0x3a, 0x81, 0x1c, 0xc3, 0x1d, 0xfe, 0x12, 0x31, 0xaa, 0xe3, 0x3b, 0x36, + 0xe1, 0xcd, 0x1b, 0x10, 0xd0, 0xf9, 0x63, 0xbc, 0x59, 0x83, 0x74, 0x82, + 0x91, 0xcd, 0x8e, 0x04, 0x15, 0x33, 0x54, 0xf5, 0x67, 0x80, 0xc2, 0xc0, + 0x71, 0x2e, 0xe3, 0x75, 0x7b, 0xa3, 0xa6, 0x35, 0x55, 0xac, 0x6a, 0x2b, + 0xac, 0xb4, 0x37, 0x46, 0x42, 0xd0, 0xa2, 0xee, 0x76, 0x2a, 0x0c, 0x61, + 0xc2, 0x3d, 0xd5, 0x04, 0xc1, 0x06, 0x15, 0x26, 0xb2, 0xe5, 0x36, 0x00, + 0x03, 0x5b, 0x6a, 0x46, 0xd1, 0x0e, 0x4a, 0x40, 0x66, 0x39, 0x5e, 0x66, + 0xa0, 0x32, 0x22, 0x05, 0x4c, 0xa8, 0xc2, 0x44, 0x43, 0x91, 0x94, 0x8b, + 0xd2, 0xa6, 0x50, 0x21, 0xd0, 0xaa, 0xc1, 0x14, 0x67, 0x75, 0x04, 0x48, + 0x27, 0x39, 0x9d, 0x6c, 0x77, 0xb3, 0xd3, 0x9d, 0x16, 0x4a, 0x2e, 0x5b, + 0x23, 0x2a, 0x6a, 0xfd, 0x1d, 0xea, 0xdf, 0xaf, 0xf6, 0xb7, 0xfe, 0xb4, + 0xaf, 0x4b, 0x2f, 0xff, 0xff, 0x4f, 0xfd, 0x9b, 0x4d, 0xfb, 0x2b, 0x1d, + 0x11, 0x10, 0x62, 0x91, 0x98, 0x8c, 0xe6, 0x14, 0x60, 0x68, 0x35, 0x46, + 0xfd, 0xec, 0x06, 0x01, 0x00, 0x6e, 0x60, 0x0c, 0x19, 0x86, 0x12, 0x32, + 0xba, 0x71, 0x36, 0x5c, 0x01, 0x70, 0x91, 0x12, 0x00, 0x83, 0x0c, 0xf0, + 0x18, 0x02, 0x81, 0xe9, 0x83, 0x98, 0x7c, 0x18, 0x05, 0x80, 0x20, 0x90, + 0x02, 0x92, 0x80, 0x71, 0x87, 0x88, 0xdd, 0x16, 0xe9, 0x1a, 0xca, 0xe2, + 0xfa, 0xae, 0x41, 0xa3, 0xcd, 0x11, 0x69, 0x17, 0xaf, 0xd3, 0x07, 0xdc, + 0x41, 0x0c, 0x2e, 0xc3, 0x56, 0x21, 0x56, 0x3a, 0x8f, 0x12, 0xd8, 0x3a, + 0xcf, 0xf1, 0xf2, 0x84, 0xa1, 0x4a, 0xd4, 0x41, 0xd4, 0x29, 0xcc, 0xd7, + 0x1e, 0xa4, 0x7a, 0x1a, 0x97, 0x36, 0x4a, 0x82, 0x40, 0xc4, 0x6e, 0x22, + 0x09, 0x28, 0xeb, 0x2f, 0x48, 0x83, 0x74, 0xfc, 0x6e, 0x98, 0xe8, 0x25, + 0x46, 0x28, 0x67, 0xa8, 0x93, 0x82, 0xda, 0x3f, 0x5a, 0x4b, 0xc9, 0x12, + 0xce, 0x84, 0xbc, 0x72, 0x3a, 0xa1, 0x36, 0x9c, 0xb3, 0x21, 0xab, 0x28, + 0x63, 0x99, 0xfa, 0xf5, 0x48, 0xbe, 0x4b, 0x10, 0x69, 0x36, 0x65, 0xca, + 0x74, 0xd0, 0x4a, 0x1a, 0x6a, 0xd5, 0x94, 0xf3, 0x27, 0x6b, 0xd4, 0x17, + 0x8a, 0x87, 0xe7, 0x3b, 0x9a, 0xbd, 0xfa, 0x12, 0xa6, 0x98, 0xed, 0x46, + 0x39, 0x20, 0x9c, 0x51, 0x70, 0x99, 0x98, 0x4f, 0x25, 0xf8, 0x4d, 0x56, + 0x52, 0x45, 0x52, 0x29, 0x34, 0xb4, 0x97, 0x5a, 0x63, 0x51, 0xaa, 0x5e, + 0x27, 0xb1, 0x32, 0x8e, 0x8a, 0x26, 0x67, 0x8f, 0x15, 0xcc, 0xee, 0x2a, + 0x76, 0x46, 0xd7, 0xb0, 0xde, 0x25, 0xd8, 0xda, 0x1c, 0x51, 0xc8, 0x79, + 0xc4, 0xde, 0xf8, 0xa2, 0x6c, 0x6f, 0x4f, 0xd5, 0xc5, 0xd4, 0xc9, 0xe7, + 0xcf, 0x5f, 0xc7, 0x60, 0x2f, 0xd2, 0xd5, 0x9d, 0xd2, 0x3d, 0x4a, 0xce, + 0xce, 0x4b, 0xd9, 0x59, 0x21, 0xa3, 0xa3, 0x21, 0xdb, 0x2f, 0x90, 0x58, + 0x58, 0x97, 0x6c, 0x08, 0x69, 0xc4, 0xe2, 0xa2, 0x3f, 0x11, 0xea, 0x11, + 0xc0, 0xa5, 0x33, 0x53, 0x24, 0x08, 0x9f, 0x87, 0x59, 0x29, 0x0c, 0x01, + 0x72, 0x27, 0xce, 0x21, 0xca, 0x02, 0xb8, 0x01, 0xa2, 0x40, 0x2d, 0xa3, + 0x30, 0xf4, 0x76, 0x1c, 0x6d, 0xb7, 0x5b, 0x20, 0x0a, 0xd6, 0x8e, 0x85, + 0x9c, 0x13, 0xea, 0x7a, 0x4d, 0x31, 0xe1, 0xc6, 0x85, 0x9c, 0x83, 0x65, + 0x41, 0xb2, 0xe3, 0x41, 0x90, 0x50, 0xa8, 0xb9, 0xc0, 0x64, 0x48, 0xd4, + 0x93, 0x68, 0x19, 0x2e, 0x32, 0x0c, 0xae, 0x38, 0xfd, 0xa2, 0x62, 0x62, + 0x74, 0x6e, 0x62, 0xda, 0xd8, 0xae, 0xfc, 0xba, 0x3b, 0x11, 0x15, 0x09, + 0xff, 0xff, 0xfc, 0xff, 0x65, 0x05, 0x9e, 0x92, 0x46, 0x42, 0x82, 0x83, + 0x46, 0x2a, 0x00, 0x40, 0x54, 0x80, 0x60, 0x2c, 0x05, 0x66, 0x03, 0x21, + 0x34, 0x60, 0xe1, 0x0b, 0xe6, 0x2e, 0x03, 0x4c, 0x60, 0xe8, 0x08, 0x23, + 0x20, 0x0a, 0x61, 0x68, 0x05, 0x46, 0x02, 0x80, 0x30, 0x62, 0x44, 0x14, + 0xe0, 0x20, 0x0b, 0x8d, 0x12, 0x00, 0xf9, 0x81, 0x60, 0xe3, 0x81, 0x40, + 0x1e, 0x1c, 0x9d, 0x22, 0x9b, 0x57, 0x19, 0x3a, 0x0c, 0x44, 0x5a, 0x84, + 0xd1, 0x0d, 0x22, 0x6a, 0xf4, 0xb1, 0x40, 0x28, 0x92, 0x23, 0xc6, 0xef, + 0xd4, 0x42, 0x48, 0xa1, 0x3a, 0xd9, 0xd8, 0xdc, 0x20, 0xdd, 0xe1, 0x8c, + 0x59, 0xb3, 0xae, 0x5c, 0x48, 0x72, 0xe0, 0x9f, 0x80, 0xd8, 0xaf, 0x21, + 0x25, 0xb4, 0xca, 0x15, 0xc4, 0xff, 0xfb, 0xd4, 0x60, 0x31, 0x81, 0x88, + 0xd4, 0x76, 0xbf, 0x33, 0xcf, 0x7b, 0x70, 0x4c, 0xa5, 0x08, 0xad, 0x04, + 0x23, 0x4c, 0x23, 0xad, 0xd8, 0xfd, 0x2f, 0x3d, 0xed, 0xc1, 0x53, 0xba, + 0x61, 0xe4, 0x21, 0x89, 0xb9, 0x8a, 0x3d, 0x04, 0x33, 0x0e, 0x04, 0xea, + 0x9e, 0x00, 0x16, 0x5d, 0x8d, 0xd2, 0xf8, 0x87, 0x1a, 0x31, 0x21, 0xab, + 0xdc, 0x88, 0x11, 0x33, 0x24, 0x07, 0xeb, 0xd1, 0xf4, 0x9e, 0x3f, 0x0e, + 0x33, 0x55, 0x58, 0x4f, 0xc5, 0xd4, 0x4d, 0xc7, 0x42, 0x00, 0xe1, 0x43, + 0xd2, 0x69, 0x69, 0x5c, 0x8f, 0xc4, 0x62, 0x90, 0xff, 0x6d, 0x38, 0x16, + 0xcf, 0xf3, 0xc6, 0x88, 0xc3, 0x2d, 0x1c, 0x65, 0xc6, 0x78, 0xf5, 0xbb, + 0xa8, 0xa3, 0x21, 0x69, 0xe5, 0x5c, 0x8d, 0x0d, 0xc8, 0x4d, 0x9d, 0xb2, + 0x6a, 0x2c, 0x8d, 0xad, 0x6f, 0xd9, 0x52, 0x13, 0x4f, 0x16, 0xef, 0xa0, + 0x23, 0x5c, 0x9f, 0x48, 0xa9, 0x57, 0x41, 0x56, 0x28, 0xa0, 0x30, 0xb1, + 0x37, 0x40, 0x9a, 0xac, 0x2d, 0x3a, 0x4f, 0x2a, 0x1b, 0x1c, 0x12, 0x6e, + 0xdb, 0x22, 0xbf, 0x78, 0xc6, 0xa6, 0x53, 0xc1, 0x78, 0xc3, 0x16, 0x23, + 0x1b, 0xe6, 0x08, 0x0c, 0x4a, 0xcc, 0x2a, 0xf1, 0xb5, 0x7b, 0xd9, 0x18, + 0xa5, 0xc3, 0x52, 0xed, 0xeb, 0x63, 0x3c, 0x88, 0x7b, 0x3a, 0x41, 0x70, + 0xa0, 0x5e, 0x57, 0xb9, 0x37, 0xac, 0x92, 0x88, 0x07, 0x3b, 0x5b, 0xc4, + 0xa3, 0xbc, 0x9e, 0x48, 0xca, 0xa8, 0xd0, 0x28, 0x31, 0xbe, 0x2c, 0x87, + 0xe1, 0x3d, 0x00, 0x75, 0x04, 0xc9, 0x4f, 0x6e, 0x60, 0x00, 0x00, 0x46, + 0x14, 0x8e, 0x5b, 0x19, 0x1f, 0x43, 0x32, 0x29, 0x3c, 0x28, 0xa4, 0x67, + 0xfa, 0x8c, 0xe3, 0x26, 0x86, 0xb5, 0xf2, 0xdd, 0xb3, 0xf8, 0x44, 0x9e, + 0x8a, 0x7c, 0x73, 0x23, 0x64, 0xf8, 0xf4, 0x1b, 0x25, 0x36, 0xc5, 0x0a, + 0x31, 0xcf, 0x12, 0xa8, 0xf1, 0xc1, 0xa2, 0xcc, 0x22, 0x7d, 0xa4, 0xa4, + 0x86, 0x92, 0x6d, 0xf2, 0x59, 0x62, 0x03, 0x3f, 0xfd, 0x3f, 0xff, 0xeb, + 0xdb, 0x8d, 0x3c, 0xd1, 0x41, 0x57, 0x1e, 0x1a, 0x23, 0x1e, 0x08, 0x87, + 0x86, 0x80, 0x08, 0x10, 0x32, 0x98, 0x07, 0x00, 0x99, 0x81, 0x48, 0x30, + 0x18, 0x5d, 0x34, 0x99, 0xae, 0x30, 0x5b, 0x18, 0x40, 0x01, 0x39, 0x81, + 0x08, 0x18, 0x18, 0x27, 0x03, 0x3a, 0x15, 0x03, 0x88, 0x38, 0xc0, 0x28, + 0x02, 0x12, 0x94, 0x60, 0x05, 0x0c, 0x2e, 0x07, 0x30, 0xc0, 0x5c, 0x01, + 0x9f, 0x94, 0x35, 0x95, 0x70, 0x93, 0x7e, 0x70, 0x92, 0xc1, 0x1a, 0x52, + 0x12, 0x83, 0x98, 0x75, 0xac, 0x93, 0x83, 0xf5, 0x79, 0x26, 0x9e, 0x26, + 0x02, 0xda, 0x58, 0x42, 0x42, 0x99, 0x49, 0x0e, 0xa3, 0x34, 0xff, 0x1a, + 0x09, 0xa0, 0x5b, 0xa8, 0x8f, 0x14, 0x61, 0x33, 0x12, 0x51, 0x9a, 0xb2, + 0x26, 0x07, 0x4d, 0x89, 0xf1, 0x37, 0x6e, 0x28, 0x8b, 0x55, 0x96, 0xe4, + 0x01, 0xdc, 0x38, 0x90, 0xb3, 0xb5, 0xc8, 0xfe, 0x3a, 0x4d, 0xb3, 0xa5, + 0x26, 0xca, 0x75, 0xd4, 0xfc, 0x65, 0x2c, 0x93, 0xe8, 0x03, 0x94, 0xb1, + 0x24, 0xcf, 0xd6, 0x02, 0x89, 0x42, 0x8a, 0x4f, 0xaa, 0x32, 0x64, 0x0f, + 0x02, 0xdc, 0xa4, 0x51, 0x3a, 0x4d, 0xaa, 0x13, 0x28, 0x6a, 0x93, 0x5a, + 0x3c, 0x74, 0xbb, 0x8c, 0x6b, 0x1f, 0xc7, 0x72, 0xf9, 0xb8, 0x8c, 0x62, + 0xc9, 0xaf, 0x05, 0xc1, 0x50, 0xae, 0x71, 0x7a, 0xc4, 0xde, 0xa8, 0x5e, + 0x88, 0xbb, 0xac, 0x08, 0xd5, 0x6b, 0x67, 0x90, 0xdf, 0xba, 0xe6, 0xc6, + 0x4a, 0xf3, 0x9a, 0x7a, 0x06, 0x99, 0x1e, 0x46, 0x8f, 0x85, 0x8b, 0xad, + 0xab, 0xdf, 0xba, 0x88, 0xa6, 0x45, 0xc6, 0x63, 0xbb, 0xf7, 0x69, 0x68, + 0x92, 0xa9, 0x5e, 0x46, 0x54, 0x33, 0x2a, 0xb0, 0xf1, 0x5e, 0xd7, 0x05, + 0x57, 0x2d, 0xe3, 0x4f, 0x69, 0x96, 0x95, 0x51, 0x98, 0xa0, 0x55, 0x16, + 0xb3, 0x1e, 0x12, 0x91, 0xec, 0x1d, 0x2a, 0xb1, 0x21, 0xee, 0x73, 0xce, + 0xe2, 0xf0, 0xfd, 0x50, 0xb7, 0x23, 0x1b, 0x0b, 0xfa, 0xb5, 0x34, 0x6f, + 0x9f, 0xb4, 0x3e, 0xd1, 0xe7, 0x9a, 0x10, 0x0f, 0xb3, 0xb0, 0x9c, 0x0c, + 0x26, 0x50, 0xac, 0x46, 0x17, 0x60, 0x7b, 0x95, 0x89, 0x85, 0xf2, 0xfa, + 0xae, 0xe4, 0x07, 0xdd, 0xd9, 0x08, 0x56, 0xb2, 0x5b, 0x52, 0x40, 0x8e, + 0x6e, 0x65, 0x2c, 0x37, 0x72, 0xa8, 0x64, 0xff, 0x63, 0x4b, 0x4f, 0xea, + 0x17, 0x5f, 0xeb, 0xfd, 0x8b, 0x73, 0x32, 0xda, 0xa5, 0xb6, 0x61, 0x9c, + 0xad, 0xcb, 0x63, 0x32, 0xd1, 0x5f, 0xd9, 0x57, 0xdd, 0xd5, 0xd5, 0xc8, + 0x6e, 0xdf, 0xfb, 0xbf, 0xd2, 0xdf, 0xff, 0xfe, 0xff, 0x4f, 0xa5, 0xb7, + 0xff, 0xf5, 0x96, 0xd7, 0xe6, 0xea, 0x44, 0x45, 0x45, 0x3c, 0xce, 0x42, + 0x14, 0xa7, 0x2c, 0xc4, 0x20, 0x21, 0x44, 0x56, 0x19, 0x10, 0x72, 0x55, + 0x18, 0x0c, 0x02, 0x80, 0x04, 0xc0, 0x9c, 0x0f, 0x0c, 0x2b, 0x97, 0x24, + 0xdf, 0xb8, 0x23, 0xc0, 0xc1, 0x18, 0x06, 0x07, 0xb3, 0x11, 0x30, 0x16, + 0x02, 0x80, 0x69, 0x89, 0xf0, 0x49, 0x2c, 0xb7, 0x14, 0x08, 0x01, 0xa6, + 0x2e, 0xe3, 0x7a, 0x60, 0x94, 0x01, 0x69, 0x0c, 0xaa, 0x2d, 0x23, 0x8c, + 0x47, 0x08, 0x87, 0x31, 0x7d, 0x52, 0x93, 0xaa, 0xa2, 0xc4, 0xc8, 0x52, + 0x08, 0x28, 0x93, 0x0c, 0xd2, 0x0c, 0x4f, 0x0a, 0x57, 0x86, 0x38, 0x2a, + 0x8e, 0x35, 0x31, 0x62, 0x64, 0x1d, 0xc4, 0xd0, 0x90, 0x9d, 0x86, 0x94, + 0x12, 0xdd, 0x19, 0x0a, 0x88, 0x2c, 0xa5, 0xc0, 0x52, 0x1b, 0x46, 0x4a, + 0x28, 0x79, 0x37, 0x0f, 0x51, 0xff, 0xfb, 0xd4, 0x60, 0x32, 0x8d, 0x89, + 0x30, 0x75, 0xbe, 0x0b, 0xcf, 0x7b, 0x70, 0x59, 0xc4, 0xb8, 0x8d, 0x04, + 0x65, 0x4a, 0x24, 0xed, 0xd8, 0xf8, 0x0f, 0x3d, 0xed, 0xc1, 0x5b, 0x39, + 0xa1, 0x58, 0x31, 0x95, 0xb9, 0x8e, 0x7e, 0x38, 0x9b, 0xa8, 0x7b, 0x5a, + 0x4d, 0x51, 0x32, 0x2d, 0x3a, 0x34, 0x4b, 0xf0, 0x1a, 0xca, 0x22, 0xec, + 0x7f, 0xc7, 0x47, 0x36, 0x2d, 0x1f, 0xc7, 0x94, 0xb2, 0x33, 0xbf, 0x65, + 0x48, 0x36, 0x33, 0xc4, 0x5f, 0x42, 0x93, 0xc9, 0xe2, 0xc4, 0x73, 0xaf, + 0x2d, 0x9e, 0x08, 0x79, 0x72, 0x43, 0x8f, 0xc4, 0x24, 0xf8, 0x78, 0xa8, + 0x32, 0xcc, 0xd4, 0xab, 0xf3, 0x4c, 0xc6, 0x1e, 0x25, 0xf5, 0x97, 0x48, + 0x6b, 0xc6, 0x38, 0xb1, 0xd8, 0x9f, 0x97, 0x98, 0xe7, 0xf9, 0xec, 0xdc, + 0xae, 0x8a, 0xaf, 0x43, 0x50, 0x82, 0x5e, 0xcc, 0xe4, 0xd1, 0x09, 0xd9, + 0x90, 0x5f, 0x9c, 0x9e, 0x4e, 0x67, 0x3e, 0x5b, 0x32, 0x94, 0x4b, 0x87, + 0x35, 0xe7, 0xea, 0xa6, 0xd4, 0xca, 0xa1, 0x0b, 0x72, 0x38, 0x55, 0xab, + 0x87, 0x37, 0x17, 0x36, 0xa3, 0xad, 0x20, 0xc6, 0xd4, 0xe9, 0x61, 0x6c, + 0xe3, 0x96, 0x67, 0xaa, 0x5c, 0xb9, 0x21, 0xaf, 0xdb, 0x15, 0x45, 0x6a, + 0xda, 0x71, 0x4f, 0x54, 0x12, 0x55, 0x2c, 0x88, 0x3c, 0x22, 0xb1, 0x31, + 0xa1, 0x4b, 0xa4, 0xfb, 0x79, 0xe8, 0xe2, 0x42, 0x8f, 0x72, 0x56, 0x9b, + 0xd2, 0xed, 0x38, 0xab, 0xd2, 0x35, 0x0a, 0x38, 0xcb, 0x18, 0x86, 0xa9, + 0x45, 0x7d, 0x00, 0x4a, 0x11, 0x45, 0xcd, 0x5c, 0x26, 0x20, 0x27, 0x86, + 0x3a, 0x1e, 0x29, 0x63, 0xf4, 0xe6, 0x00, 0x00, 0x03, 0x71, 0x26, 0x9e, + 0x8d, 0x90, 0xf0, 0xec, 0xf3, 0xb2, 0xeb, 0x13, 0xc1, 0x02, 0xb0, 0xb5, + 0x3f, 0x3d, 0x9d, 0xb5, 0x56, 0xfa, 0x25, 0x2e, 0x88, 0x55, 0x33, 0x39, + 0xea, 0xf2, 0x98, 0xa2, 0x4e, 0x71, 0x62, 0x8b, 0x0b, 0x1c, 0x2c, 0x2a, + 0x07, 0x18, 0xb0, 0xf8, 0x14, 0x1d, 0x06, 0x0e, 0x11, 0x9e, 0x71, 0x72, + 0xa4, 0xc3, 0x45, 0x02, 0x10, 0x9a, 0x87, 0x88, 0x43, 0x6b, 0x0e, 0x04, + 0xc6, 0x08, 0xae, 0xfd, 0xd5, 0x7f, 0xff, 0xbf, 0xd5, 0xbd, 0x21, 0xa0, + 0xf2, 0xd4, 0x1e, 0x0f, 0x0a, 0x84, 0x00, 0x42, 0xa0, 0x60, 0x20, 0x60, + 0xb4, 0xa6, 0x02, 0xa0, 0x58, 0x60, 0xf0, 0x7a, 0x66, 0xea, 0x40, 0xf4, + 0x42, 0x00, 0x26, 0x00, 0xa0, 0x92, 0x61, 0x7c, 0x0d, 0x05, 0x50, 0x18, + 0x30, 0x91, 0x0b, 0xb5, 0x04, 0x2e, 0x11, 0x20, 0x0f, 0x98, 0xbe, 0x02, + 0x20, 0xb0, 0x55, 0xa8, 0x81, 0x6a, 0x1c, 0x05, 0xe4, 0x9c, 0x0c, 0x72, + 0x84, 0xf3, 0x14, 0x93, 0xd0, 0xe7, 0x71, 0x2d, 0x0f, 0x04, 0x31, 0x04, + 0x3b, 0xc6, 0x30, 0xa3, 0x43, 0x8c, 0x82, 0xda, 0x5e, 0xd3, 0xc6, 0x71, + 0xee, 0x64, 0xa2, 0x84, 0x65, 0x1a, 0xf8, 0x9b, 0xc7, 0x5c, 0x17, 0xa5, + 0xa5, 0x10, 0xa7, 0x18, 0xc8, 0x93, 0x45, 0x70, 0x7a, 0xc0, 0x44, 0xa1, + 0x43, 0x94, 0xbb, 0x26, 0x0f, 0xf2, 0xf2, 0xa4, 0x26, 0xa8, 0xa5, 0x12, + 0x80, 0xdc, 0x27, 0xa5, 0x32, 0x84, 0xe6, 0x5b, 0x34, 0x0f, 0x53, 0xa0, + 0xde, 0x5a, 0x6f, 0x41, 0x12, 0x13, 0xfd, 0x26, 0xc5, 0x76, 0x74, 0xc4, + 0x33, 0xb9, 0x5a, 0xa7, 0x4b, 0x39, 0x18, 0x64, 0x00, 0xd9, 0x76, 0x76, + 0xe9, 0x7a, 0x02, 0x49, 0x12, 0xdc, 0x98, 0x42, 0x0c, 0xc2, 0xe2, 0x84, + 0xaa, 0x54, 0x10, 0x89, 0xc1, 0xde, 0xe6, 0xa6, 0x38, 0x90, 0x71, 0x8c, + 0x95, 0x1c, 0xaa, 0xe4, 0x4b, 0x6e, 0x4b, 0x12, 0xbc, 0xdc, 0x8a, 0xd6, + 0x6e, 0x48, 0xbc, 0x86, 0x22, 0x4f, 0x36, 0x14, 0xfa, 0x26, 0x02, 0x5d, + 0xfd, 0x9b, 0xcb, 0x13, 0x22, 0x49, 0x4c, 0xac, 0x54, 0x23, 0xdb, 0xce, + 0xd4, 0xfa, 0x39, 0xb5, 0xe3, 0xbb, 0xa8, 0x12, 0x28, 0x49, 0xc8, 0xb7, + 0x11, 0x4c, 0x7c, 0xaf, 0x96, 0x03, 0x0d, 0x4c, 0xc4, 0x9f, 0x3c, 0x9c, + 0x96, 0xf2, 0x8b, 0x3c, 0x12, 0xea, 0x05, 0x62, 0xe5, 0x44, 0x9b, 0x2e, + 0x2d, 0xeb, 0x4a, 0xb5, 0x5a, 0x59, 0xb1, 0x10, 0xed, 0x95, 0x56, 0x99, + 0xcd, 0x94, 0x66, 0xd5, 0x0b, 0x89, 0xee, 0x58, 0x15, 0x06, 0x31, 0xe6, + 0x6e, 0x9e, 0x69, 0x93, 0xcd, 0x1c, 0xa0, 0x1e, 0xea, 0x35, 0xc1, 0x3c, + 0x2e, 0xca, 0x62, 0xee, 0x95, 0x2f, 0x10, 0x40, 0x72, 0x0f, 0x23, 0xfc, + 0x48, 0x80, 0xfa, 0x09, 0x11, 0xac, 0x87, 0x06, 0x19, 0x50, 0x3f, 0x42, + 0x1d, 0xa1, 0xa7, 0x2a, 0x58, 0x4b, 0x92, 0xcf, 0x90, 0xb2, 0x80, 0x06, + 0x41, 0x1c, 0x14, 0x32, 0xbf, 0xf2, 0x4f, 0xcb, 0xce, 0xce, 0x2b, 0x64, + 0xa4, 0xf6, 0x7f, 0x76, 0xd2, 0xc5, 0x64, 0xca, 0x73, 0x6e, 0xde, 0xd9, + 0x69, 0xcf, 0x25, 0xd1, 0xd1, 0xcc, 0xe9, 0xe4, 0xff, 0xfe, 0xda, 0x37, + 0xdf, 0x6b, 0x3d, 0x2a, 0xfa, 0xaf, 0xef, 0xfb, 0xd7, 0x65, 0xfd, 0x55, + 0xf5, 0x6b, 0x19, 0x50, 0xaa, 0xeb, 0x51, 0x67, 0x92, 0xa6, 0x31, 0x5e, + 0x1d, 0x8a, 0x9a, 0x3c, 0xcf, 0x40, 0x42, 0x88, 0x44, 0x12, 0x00, 0x2a, + 0x34, 0x80, 0x5a, 0x53, 0x01, 0x10, 0x16, 0x30, 0x6e, 0x0e, 0xd3, 0x63, + 0x80, 0x7e, 0x30, 0x10, 0x01, 0x50, 0x68, 0x11, 0x18, 0x2f, 0x02, 0x88, + 0xa8, 0x0b, 0x98, 0x19, 0x83, 0x43, 0x24, 0x7a, 0xd2, 0x98, 0xc2, 0x64, + 0x25, 0x03, 0x80, 0x21, 0xb2, 0x93, 0x44, 0x9b, 0x59, 0xb8, 0xd4, 0xa8, + 0x38, 0x1c, 0x15, 0x6a, 0x33, 0xb4, 0xbf, 0x23, 0xd8, 0x5f, 0xb9, 0x95, + 0xc6, 0x29, 0xfe, 0x50, 0x22, 0xff, 0xfb, 0xd4, 0x60, 0x21, 0x80, 0x08, + 0x78, 0x76, 0x3f, 0xb3, 0xcf, 0x7b, 0x70, 0x62, 0x6d, 0xb8, 0x8d, 0x05, + 0x05, 0x6e, 0x5b, 0x81, 0xd9, 0x15, 0xae, 0x3d, 0xed, 0xc1, 0x73, 0x39, + 0x61, 0xe4, 0x21, 0x09, 0xb9, 0x49, 0xc0, 0x8c, 0x14, 0xc1, 0x16, 0x3c, + 0x54, 0x26, 0x83, 0x29, 0x86, 0x5f, 0xa8, 0xb0, 0x97, 0x34, 0x0e, 0xe6, + 0x16, 0x85, 0x73, 0x3a, 0x5d, 0xc9, 0x5a, 0x9f, 0x78, 0x9a, 0x3c, 0x13, + 0x8d, 0xb1, 0xc7, 0xa4, 0xb8, 0x2a, 0x5b, 0x92, 0xac, 0x6b, 0x4a, 0xc4, + 0x42, 0x10, 0xad, 0x67, 0x50, 0xa1, 0x18, 0x34, 0x59, 0x52, 0x8b, 0xce, + 0x64, 0xed, 0x4a, 0xaa, 0x4f, 0xb9, 0xa6, 0xb9, 0xba, 0x75, 0xa1, 0xaa, + 0x64, 0xa3, 0x31, 0xcc, 0xc8, 0x86, 0x42, 0x71, 0x4c, 0x1a, 0x09, 0x55, + 0xd9, 0xa0, 0x9a, 0x3a, 0x5e, 0x2c, 0xbf, 0x50, 0x28, 0xe3, 0xc3, 0x42, + 0x9d, 0xc4, 0xdb, 0x2b, 0x3b, 0xda, 0x21, 0xd1, 0xea, 0xd6, 0x9e, 0x7d, + 0x3b, 0xe7, 0xd0, 0x1c, 0xd6, 0x60, 0x2b, 0xd5, 0xec, 0xaf, 0xa0, 0xab, + 0x59, 0x6b, 0x11, 0x66, 0x4b, 0xc2, 0x62, 0x69, 0xa6, 0x15, 0x8b, 0x70, + 0xd9, 0xe2, 0x2a, 0x58, 0xef, 0x5a, 0xbb, 0x73, 0x91, 0x95, 0x3e, 0xaa, + 0x61, 0x65, 0xcd, 0x5b, 0x5c, 0x59, 0x1b, 0x72, 0xe0, 0xaa, 0x7d, 0x1a, + 0x13, 0x74, 0x77, 0x8c, 0x4d, 0xfb, 0x81, 0x15, 0x79, 0x8b, 0xed, 0xf3, + 0x9b, 0x8a, 0x21, 0xea, 0x95, 0x9a, 0x1e, 0xa0, 0xb5, 0x37, 0x36, 0x52, + 0x14, 0x77, 0x07, 0x05, 0x0a, 0x35, 0x4c, 0xb2, 0x40, 0x51, 0x49, 0x35, + 0x63, 0x28, 0x9a, 0x17, 0x64, 0xc9, 0x74, 0x2e, 0xe2, 0x6a, 0xd2, 0x7d, + 0x17, 0xc2, 0x50, 0x84, 0x3a, 0x00, 0x00, 0x03, 0x73, 0x32, 0xf5, 0x8d, + 0x11, 0xc9, 0x19, 0x9b, 0x3a, 0x31, 0xc6, 0xab, 0xbc, 0xcd, 0x91, 0x0a, + 0x78, 0x72, 0xa1, 0x31, 0xa8, 0xd7, 0xae, 0xb3, 0xff, 0xf3, 0xfc, 0xb7, + 0xc1, 0xc4, 0x89, 0x44, 0xa2, 0xac, 0x1e, 0x1a, 0x45, 0x16, 0x30, 0xc2, + 0x60, 0xa3, 0xd9, 0x4c, 0xa2, 0x4c, 0x73, 0x1e, 0x82, 0x39, 0x19, 0x5f, + 0x59, 0x54, 0xc8, 0x43, 0xf5, 0xc5, 0x3a, 0x5d, 0x12, 0xcf, 0x77, 0xcf, + 0xd1, 0xbe, 0xc8, 0xb3, 0x23, 0x75, 0xef, 0xef, 0xff, 0x6f, 0xff, 0xff, + 0xef, 0xff, 0xbf, 0xec, 0x8e, 0xae, 0xee, 0xae, 0xa7, 0x31, 0x04, 0x4a, + 0x30, 0xe1, 0x70, 0x1a, 0x85, 0x1d, 0xc1, 0x60, 0x00, 0x10, 0xbb, 0x79, + 0xb7, 0xff, 0x58, 0x25, 0xae, 0x71, 0x83, 0x8e, 0x80, 0x7a, 0x22, 0xdc, + 0x71, 0x8a, 0x03, 0xf1, 0x34, 0x89, 0xb5, 0x19, 0x66, 0x22, 0x00, 0x6c, + 0xee, 0x0a, 0xd6, 0xe4, 0x59, 0xee, 0xc9, 0x72, 0x6e, 0xd3, 0x52, 0x89, + 0x0f, 0x24, 0x2a, 0xe4, 0x2d, 0x2a, 0x85, 0xbb, 0x7f, 0x1a, 0x44, 0xf9, + 0x7e, 0x27, 0xe3, 0x71, 0x0b, 0x46, 0x13, 0x46, 0x53, 0xe0, 0x79, 0x8f, + 0x51, 0xfe, 0x81, 0x7a, 0x72, 0x21, 0xca, 0xf2, 0x58, 0x5d, 0x99, 0x91, + 0x43, 0xf4, 0xa7, 0x13, 0x66, 0x63, 0x4f, 0x9c, 0x86, 0x0a, 0xb1, 0x99, + 0x42, 0xc6, 0xa1, 0x3d, 0xd0, 0x86, 0xd5, 0x29, 0x86, 0x3d, 0xd8, 0xdf, + 0x3a, 0x7c, 0x9f, 0x39, 0x4b, 0xec, 0x55, 0x2b, 0x13, 0x49, 0x6c, 0x4f, + 0x9c, 0x4a, 0x54, 0x2c, 0xf2, 0x4f, 0x87, 0x53, 0x4a, 0xa5, 0x66, 0x23, + 0x6a, 0x81, 0xc1, 0xeb, 0x63, 0xa6, 0x28, 0x2a, 0xe8, 0xcd, 0xf3, 0xce, + 0xe5, 0x43, 0x49, 0x3a, 0xb4, 0xdf, 0x12, 0xbb, 0x95, 0xc2, 0x0d, 0xd8, + 0x5f, 0x28, 0x9c, 0x5a, 0x9e, 0x3d, 0x85, 0x26, 0xd8, 0xe6, 0x65, 0x74, + 0xd7, 0x1b, 0xc0, 0x66, 0xae, 0x95, 0xb9, 0x88, 0xeb, 0xcb, 0x33, 0x5d, + 0x2d, 0x1b, 0xc0, 0xf6, 0x79, 0x5a, 0x3e, 0xbf, 0xff, 0x38, 0xfb, 0xff, + 0xeb, 0x1f, 0xee, 0xff, 0xeb, 0x5f, 0x78, 0xff, 0x3f, 0xdf, 0xeb, 0xfc, + 0xff, 0xbb, 0xef, 0xfa, 0xfd, 0xe3, 0x79, 0xf9, 0xce, 0x3d, 0x35, 0x7c, + 0xc2, 0x97, 0x79, 0xcd, 0x22, 0x46, 0xd3, 0xcd, 0x3d, 0x7b, 0x1b, 0x60, + 0x10, 0x4a, 0x2d, 0x7f, 0x27, 0x6a, 0x50, 0x83, 0x95, 0x9e, 0xe5, 0x16, + 0xc5, 0x23, 0x99, 0x2e, 0xfb, 0x7b, 0x64, 0x25, 0x9b, 0xd1, 0x8f, 0x66, + 0xd1, 0xba, 0x7a, 0xbb, 0xaa, 0x90, 0xa7, 0x45, 0x75, 0x76, 0x25, 0x90, + 0xca, 0x56, 0x64, 0x53, 0x3c, 0xb7, 0xd7, 0x60, 0xc7, 0x3a, 0x95, 0x51, + 0x4d, 0x06, 0xe8, 0xeb, 0xe8, 0x55, 0xbe, 0xcb, 0x7b, 0x6e, 0x44, 0x25, + 0xe9, 0xef, 0xed, 0xb1, 0x51, 0x19, 0x74, 0xfe, 0xff, 0x4f, 0xa7, 0xd2, + 0xff, 0xaa, 0xae, 0xcf, 0x56, 0x71, 0x27, 0xb1, 0x18, 0x75, 0x3a, 0xb9, + 0xa3, 0xb9, 0x0e, 0xe2, 0xd8, 0x41, 0xe0, 0x0c, 0x55, 0x30, 0x2c, 0x04, + 0x13, 0x03, 0x90, 0x5a, 0x30, 0xd2, 0x4f, 0xa3, 0x77, 0x81, 0x56, 0x12, + 0x5d, 0x53, 0x44, 0x74, 0xdd, 0x30, 0x18, 0x5c, 0x23, 0x62, 0x61, 0xfa, + 0x33, 0x89, 0x32, 0xf3, 0x18, 0x80, 0xea, 0x32, 0x32, 0x1d, 0x20, 0x40, + 0x78, 0x98, 0x2a, 0x84, 0xe0, 0x20, 0x09, 0xcc, 0x16, 0x41, 0xfc, 0xe9, + 0xea, 0x4d, 0xdc, 0x74, 0x38, 0x20, 0x38, 0x60, 0xc3, 0x46, 0x50, 0x14, + 0x5e, 0x16, 0x4c, 0x98, 0x8d, 0x7d, 0x81, 0x97, 0x0c, 0xc0, 0x82, 0x8c, + 0x30, 0x18, 0xc0, 0x82, 0x8c, 0x40, 0x39, 0x44, 0x18, 0x22, 0xf3, 0x03, + 0x05, 0x97, 0x1c, 0xb4, 0x0c, 0x41, 0xdd, 0x5b, 0x6c, 0x6d, 0x0c, 0xcb, + 0xfe, 0x5c, 0xf5, 0x77, 0x0c, 0x58, 0x75, 0xd5, 0x8d, 0xd3, 0x50, 0x76, + 0x56, 0xd3, 0xda, 0xfb, 0xc7, 0xff, 0xfb, 0xd4, 0x60, 0x3a, 0x0e, 0xe9, + 0x3c, 0x75, 0xbf, 0x03, 0xdb, 0x7b, 0x70, 0x58, 0x4e, 0x88, 0x62, 0x08, + 0x25, 0x6e, 0x27, 0x81, 0xd7, 0x00, 0x2f, 0xed, 0xed, 0xc0, 0xff, 0xa2, + 0xa2, 0x4c, 0x20, 0x89, 0x70, 0x4d, 0x79, 0xdb, 0x83, 0x9d, 0xf7, 0xbe, + 0x7d, 0xb7, 0x83, 0x10, 0x83, 0x15, 0x5a, 0x87, 0x9c, 0x67, 0x5a, 0x1c, + 0xb9, 0x4e, 0xa1, 0xec, 0x26, 0x79, 0xda, 0x79, 0xa3, 0xdb, 0x12, 0xe7, + 0x64, 0x2b, 0x50, 0xeb, 0x76, 0x88, 0x66, 0x4f, 0xb0, 0x46, 0x69, 0x42, + 0xd4, 0x2e, 0x94, 0xcc, 0x6a, 0xb5, 0xda, 0x99, 0x90, 0xf9, 0x9b, 0x1a, + 0x72, 0x8d, 0x2b, 0xf5, 0x73, 0x3b, 0x96, 0x28, 0xc9, 0xbd, 0x2c, 0x47, + 0x45, 0xcb, 0x0d, 0x16, 0x74, 0x27, 0xd9, 0x76, 0xe9, 0x45, 0x2b, 0xf5, + 0x33, 0xc4, 0xaa, 0x91, 0xba, 0x25, 0x9a, 0x15, 0xb1, 0x54, 0xb0, 0x64, + 0x74, 0xfa, 0x2a, 0xd1, 0xde, 0xa0, 0x4f, 0xae, 0x6c, 0xb3, 0x0d, 0x85, + 0x85, 0x96, 0x0c, 0x49, 0x97, 0x4a, 0x23, 0x38, 0xc3, 0x3f, 0xd5, 0x4e, + 0x2c, 0x31, 0x1c, 0x99, 0x67, 0x66, 0x87, 0xa7, 0xab, 0xa4, 0xa5, 0xd5, + 0x0b, 0x98, 0xd1, 0x22, 0xf4, 0xad, 0xe4, 0xa3, 0x67, 0x85, 0x78, 0xaf, + 0xf5, 0x15, 0xfb, 0x3b, 0xe7, 0x4c, 0x0b, 0xee, 0x95, 0xc9, 0x73, 0x96, + 0x06, 0xcd, 0x5a, 0xe8, 0xf4, 0x36, 0x95, 0xca, 0x83, 0xf4, 0xa3, 0x80, + 0xec, 0xbf, 0x1a, 0x29, 0x3a, 0x92, 0x61, 0x15, 0x17, 0xa8, 0xd2, 0x7a, + 0x3f, 0x9e, 0x9a, 0x89, 0x81, 0x7b, 0x94, 0x79, 0x03, 0x29, 0x35, 0xc9, + 0x4c, 0x5d, 0x3a, 0x67, 0xff, 0xab, 0x05, 0x1e, 0xc8, 0xc6, 0x44, 0x65, + 0x41, 0x12, 0x4a, 0x2b, 0x98, 0xce, 0xb4, 0x57, 0x94, 0x8a, 0x62, 0xda, + 0x34, 0xd2, 0xa4, 0xc7, 0x8d, 0x43, 0x1a, 0x9b, 0x14, 0x89, 0x65, 0xef, + 0x2d, 0x69, 0xbd, 0xab, 0x9a, 0x97, 0x3f, 0x9b, 0xbb, 0xc8, 0x9d, 0x96, + 0x97, 0x93, 0xef, 0x22, 0xbf, 0xbd, 0xa9, 0xff, 0xf5, 0xd5, 0x19, 0x18, + 0xf5, 0x7c, 0xe6, 0x76, 0xa9, 0x95, 0x08, 0xd7, 0x73, 0x22, 0xa2, 0x31, + 0x04, 0xd5, 0x46, 0x84, 0x4a, 0x81, 0xd1, 0x32, 0x25, 0x00, 0x60, 0x0b, + 0x00, 0x40, 0x3f, 0x18, 0x02, 0x42, 0x01, 0x18, 0x2b, 0x80, 0x50, 0x18, + 0x09, 0x61, 0x32, 0x18, 0x8f, 0x4d, 0x8c, 0x9d, 0x6f, 0x68, 0x56, 0x99, + 0x63, 0x03, 0x08, 0x98, 0x40, 0x41, 0x87, 0x18, 0x50, 0x00, 0x53, 0x98, + 0x03, 0x80, 0x64, 0x82, 0x00, 0xc9, 0x30, 0x1b, 0x00, 0x7f, 0x30, 0x0f, + 0x00, 0x57, 0x30, 0x2a, 0x00, 0x8d, 0x34, 0xe2, 0x43, 0xa7, 0xae, 0x34, + 0x53, 0x13, 0x2b, 0x47, 0x38, 0x61, 0xe3, 0x3b, 0x03, 0x34, 0x20, 0x90, + 0x51, 0x70, 0x20, 0x4c, 0xa0, 0x50, 0x90, 0x14, 0x04, 0x0a, 0x48, 0x24, + 0x01, 0x07, 0x04, 0x03, 0x18, 0x38, 0xd8, 0x19, 0x34, 0x0c, 0x16, 0x63, + 0xc2, 0xe5, 0xd6, 0x59, 0x23, 0x20, 0xe0, 0x61, 0x14, 0x26, 0x81, 0x85, + 0x54, 0x54, 0xa0, 0x04, 0x58, 0x18, 0x78, 0x40, 0xc3, 0xc0, 0x19, 0x30, + 0x20, 0x1d, 0x5a, 0x58, 0x3a, 0x66, 0xa7, 0xf4, 0x02, 0xd3, 0xa8, 0x95, + 0xcb, 0xec, 0x97, 0xad, 0xc9, 0x85, 0xb9, 0x8c, 0xe9, 0xac, 0xaa, 0xb2, + 0xf8, 0x14, 0xf5, 0x39, 0x6d, 0x52, 0x17, 0xd6, 0x46, 0xf5, 0x48, 0xae, + 0xb2, 0x11, 0xb3, 0xa0, 0xeb, 0x7a, 0xfa, 0x45, 0x7b, 0xf4, 0x4b, 0x72, + 0x74, 0xd0, 0x2c, 0x68, 0x16, 0x98, 0x8c, 0x2f, 0x1e, 0xd1, 0x26, 0xba, + 0x69, 0x23, 0x89, 0x52, 0xb8, 0xc1, 0x54, 0x6d, 0x40, 0x92, 0x53, 0xaa, + 0x17, 0x63, 0xe5, 0x44, 0x4f, 0x53, 0x0a, 0x7a, 0x29, 0xb4, 0xc4, 0xc2, + 0xf2, 0x2c, 0x26, 0xac, 0xc8, 0xaf, 0x71, 0xd2, 0x72, 0x57, 0x8c, 0x6a, + 0x68, 0x74, 0x6e, 0x67, 0x83, 0xb7, 0xf0, 0xae, 0xc6, 0xb6, 0xfd, 0xed, + 0xd9, 0x58, 0x9a, 0x1f, 0x3e, 0xda, 0xad, 0x99, 0x53, 0x01, 0xbd, 0x91, + 0x8d, 0xb2, 0x0e, 0xd2, 0x71, 0x59, 0xe9, 0xbb, 0xa1, 0xcc, 0x0f, 0x5a, + 0xe0, 0x51, 0xd6, 0xb6, 0xf6, 0x75, 0x6c, 0x36, 0x08, 0x71, 0x36, 0xab, + 0x5d, 0x2e, 0x23, 0xc0, 0x65, 0xd3, 0x1c, 0x67, 0xf0, 0x64, 0x8f, 0x84, + 0x3e, 0x2c, 0x67, 0x14, 0x83, 0x7d, 0x23, 0x41, 0x54, 0x3e, 0x83, 0x11, + 0xc9, 0x0a, 0x52, 0x2a, 0x9c, 0x1d, 0x29, 0x1a, 0xd8, 0x14, 0x07, 0xf1, + 0x3b, 0x67, 0x4c, 0x9d, 0x2c, 0x60, 0xf8, 0x34, 0x8f, 0xeb, 0x39, 0xc3, + 0x9d, 0xd8, 0xc0, 0xed, 0x5b, 0x4d, 0x4f, 0xd7, 0x5f, 0xff, 0xff, 0xff, + 0xff, 0xfd, 0xff, 0xdf, 0x9c, 0xd4, 0xd9, 0x68, 0xbe, 0xee, 0xa8, 0x3c, + 0x08, 0x88, 0x12, 0x78, 0xec, 0x17, 0x40, 0xa7, 0x52, 0xaa, 0x2a, 0xd6, + 0x88, 0xa8, 0xcf, 0xa1, 0x99, 0x99, 0x84, 0xd9, 0x52, 0x55, 0x04, 0x17, + 0xd0, 0x85, 0xff, 0xfa, 0x7b, 0xc7, 0xa2, 0x5c, 0x2b, 0xa8, 0x3e, 0x15, + 0x6c, 0xd2, 0x92, 0x30, 0x7a, 0x00, 0x2a, 0xd4, 0x00, 0x60, 0x3a, 0x81, + 0x44, 0x60, 0x23, 0x01, 0xd2, 0x60, 0x70, 0x8c, 0x34, 0x60, 0x9e, 0x85, + 0xda, 0x60, 0xc6, 0x8a, 0x20, 0x62, 0x95, 0x2d, 0x5e, 0x6f, 0x2d, 0x34, + 0x90, 0x62, 0x8c, 0x09, 0xa6, 0x60, 0x2d, 0x83, 0x58, 0x24, 0x0d, 0x61, + 0x83, 0x8a, 0x07, 0xc1, 0x86, 0xd8, 0x02, 0x31, 0x83, 0x58, 0x02, 0x39, + 0x80, 0xd6, 0x00, 0x40, 0xd0, 0x0c, 0x80, 0xa1, 0xcd, 0x05, 0x9b, 0x81, + 0x68, 0x89, 0x31, 0x8b, 0x41, 0xeb, 0xa9, 0x09, 0x31, 0xb6, 0xa6, 0xcc, + 0xdd, 0xc6, 0x0c, 0xc8, 0x2c, 0xff, 0xfb, 0xd4, 0x60, 0x2a, 0x09, 0x99, + 0x11, 0x75, 0xbf, 0xb3, 0xfa, 0x7b, 0x70, 0x56, 0x6e, 0x88, 0x69, 0x20, + 0x62, 0x6e, 0x62, 0xb1, 0xd7, 0x02, 0x2f, 0xe9, 0xed, 0xc1, 0x4e, 0xba, + 0x21, 0x44, 0x80, 0x89, 0xb8, 0xa7, 0xc3, 0x8c, 0xcf, 0xd3, 0x46, 0x3f, + 0x20, 0x72, 0x59, 0x43, 0xaa, 0xcd, 0x62, 0x2f, 0x9b, 0xb5, 0x45, 0xb7, + 0xf2, 0x04, 0x52, 0xd6, 0x36, 0xd3, 0x22, 0xcc, 0x8d, 0x9f, 0x41, 0x91, + 0x49, 0xc7, 0x89, 0xf0, 0x69, 0x6a, 0x59, 0x4c, 0xb0, 0x0c, 0xec, 0xbe, + 0x25, 0x07, 0xca, 0x84, 0xc9, 0x26, 0x46, 0xaa, 0x09, 0x95, 0x52, 0xd4, + 0x3c, 0xe1, 0x68, 0x60, 0xd8, 0xf8, 0x34, 0xcd, 0x77, 0x84, 0x34, 0xa5, + 0x25, 0x05, 0xf0, 0xbc, 0x0b, 0xa5, 0xf0, 0x73, 0x9d, 0x67, 0x13, 0x3e, + 0xea, 0xb0, 0xe9, 0x99, 0x95, 0x81, 0x86, 0x56, 0x18, 0x4a, 0xd9, 0xe2, + 0xd9, 0x5f, 0x1e, 0xee, 0xd3, 0xef, 0x5c, 0x18, 0x20, 0xd5, 0xa6, 0x6a, + 0x3e, 0x8a, 0xf5, 0x55, 0x9c, 0xce, 0xad, 0x80, 0xa6, 0x7c, 0x85, 0xb7, + 0x31, 0x38, 0xd1, 0xaf, 0x11, 0x55, 0xcc, 0xd3, 0x7e, 0xf9, 0xfd, 0x76, + 0xf6, 0x66, 0xc6, 0xc5, 0x23, 0x24, 0xac, 0x0a, 0xd7, 0xcc, 0x31, 0x2c, + 0xad, 0x6b, 0x43, 0x35, 0x74, 0x35, 0xc1, 0x8d, 0x86, 0x03, 0xd8, 0xec, + 0xd0, 0x59, 0x1f, 0x76, 0xea, 0xbb, 0x97, 0x68, 0x5b, 0x7d, 0x1c, 0x9c, + 0x59, 0x95, 0xf1, 0x1f, 0xe1, 0x77, 0x35, 0x1c, 0x65, 0x7a, 0x9f, 0x86, + 0xcc, 0xc8, 0xe7, 0x0d, 0xfa, 0xe2, 0x29, 0xde, 0x8f, 0x72, 0x6d, 0x72, + 0xdb, 0xc8, 0x03, 0xd9, 0x3e, 0x79, 0xb7, 0xd9, 0xc8, 0x9e, 0xb7, 0x17, + 0xe5, 0x5a, 0xa2, 0xcc, 0x22, 0xda, 0x75, 0x00, 0x00, 0x07, 0xdd, 0x48, + 0x01, 0xbf, 0x9b, 0xba, 0xbb, 0x7b, 0x71, 0x97, 0x50, 0xfc, 0x8e, 0x69, + 0x1e, 0x78, 0xdf, 0x93, 0x6d, 0xeb, 0x27, 0xfd, 0xe2, 0xf1, 0x5d, 0xdd, + 0xb3, 0x2a, 0xa9, 0xbb, 0xb1, 0x1d, 0xdc, 0x92, 0x21, 0xac, 0x55, 0xde, + 0x23, 0x55, 0xd8, 0xce, 0xcd, 0xff, 0xeb, 0x56, 0x5b, 0x7f, 0xfb, 0x7b, + 0xbb, 0xfd, 0xb7, 0x6f, 0xfe, 0xfd, 0xbe, 0xbf, 0xeb, 0xbf, 0xfe, 0xc8, + 0xbb, 0x50, 0xf9, 0x2b, 0x1a, 0x95, 0x85, 0x30, 0xa3, 0x54, 0x41, 0x48, + 0x18, 0x51, 0x8c, 0x72, 0xa1, 0x41, 0x85, 0x20, 0xa8, 0xd0, 0x98, 0x05, + 0x20, 0x22, 0x98, 0x08, 0x40, 0x09, 0x18, 0x22, 0x21, 0x93, 0x18, 0x72, + 0xe0, 0x65, 0x18, 0x45, 0x21, 0x19, 0x98, 0x9c, 0x87, 0xc2, 0x1e, 0x4a, + 0xc5, 0xaf, 0x98, 0xe2, 0x81, 0x5a, 0x18, 0x44, 0x60, 0xc5, 0x98, 0x18, + 0x20, 0x5c, 0x98, 0x28, 0x00, 0xc3, 0x18, 0x30, 0xa0, 0x1a, 0x00, 0x81, + 0xcb, 0x30, 0x0a, 0x00, 0x16, 0x30, 0x04, 0x40, 0x27, 0x22, 0x56, 0x5a, + 0x94, 0xf4, 0x2a, 0x6d, 0x38, 0xe4, 0xe7, 0xde, 0x40, 0x31, 0x76, 0xbc, + 0x95, 0x0b, 0x06, 0xdc, 0x92, 0x3d, 0x6f, 0xc3, 0x8d, 0x24, 0xba, 0x71, + 0x57, 0x76, 0x14, 0xcb, 0x2c, 0xba, 0x8c, 0x9e, 0x81, 0x4d, 0x22, 0x94, + 0x28, 0x4c, 0x59, 0x93, 0x51, 0x36, 0x6d, 0x11, 0x93, 0x33, 0x7b, 0xd2, + 0xe6, 0x9f, 0x7a, 0xf3, 0xe9, 0x39, 0x03, 0x34, 0x88, 0x16, 0xec, 0x05, + 0x3c, 0xb4, 0x5b, 0x4b, 0x1e, 0x13, 0xe7, 0x3a, 0x9e, 0x29, 0x60, 0x5f, + 0x63, 0x7a, 0x8f, 0x6f, 0x42, 0xd2, 0x6a, 0xd5, 0x31, 0xc6, 0x85, 0x90, + 0xa3, 0x2d, 0x81, 0x0a, 0x8c, 0xa8, 0x62, 0x42, 0xe2, 0x97, 0x05, 0x5a, + 0xae, 0x79, 0x9e, 0x42, 0x8e, 0xe6, 0xf5, 0x7a, 0x3c, 0x56, 0x6a, 0xb9, + 0x34, 0x37, 0x5e, 0x2c, 0x8b, 0x30, 0x69, 0x1d, 0x5a, 0xdd, 0x3c, 0x9a, + 0x9d, 0x96, 0x6b, 0x45, 0x65, 0x6a, 0x95, 0x99, 0x6a, 0xed, 0xb6, 0xc5, + 0xee, 0xcb, 0x3e, 0x33, 0x36, 0xed, 0x3b, 0x0e, 0x5e, 0x3d, 0x6a, 0x7f, + 0x68, 0x96, 0x6f, 0x77, 0x17, 0x0f, 0x21, 0xde, 0x57, 0xac, 0x50, 0x5e, + 0xb5, 0xd2, 0x7a, 0x51, 0x9a, 0xb0, 0xb1, 0xe2, 0x39, 0xd9, 0xb6, 0xd0, + 0x20, 0xc5, 0xd5, 0xb7, 0xa6, 0x78, 0x17, 0x7f, 0x3c, 0xd1, 0xe1, 0x3c, + 0xdc, 0x78, 0x0b, 0x70, 0xd9, 0x50, 0xf6, 0x48, 0xcc, 0x0d, 0x31, 0xcf, + 0xeb, 0x26, 0xd4, 0x97, 0xaa, 0x91, 0x82, 0x8d, 0x26, 0x0c, 0x15, 0x6b, + 0xfd, 0xb1, 0x94, 0x47, 0x3c, 0x32, 0x70, 0x87, 0xe4, 0xfa, 0x5e, 0x08, + 0x4d, 0xc6, 0xbb, 0x7b, 0x3c, 0xa4, 0xf3, 0xb4, 0x72, 0xf9, 0x9e, 0x53, + 0xcd, 0x71, 0x39, 0x17, 0x33, 0x33, 0xb8, 0x25, 0xfa, 0xdf, 0x64, 0xbd, + 0xd0, 0xcb, 0x53, 0xc8, 0xad, 0x76, 0xa3, 0x33, 0x6f, 0xba, 0xb5, 0xe4, + 0x66, 0xb3, 0x4b, 0xfd, 0x2b, 0xa5, 0x56, 0xaf, 0x6f, 0xdf, 0x5a, 0x68, + 0x7a, 0xaf, 0x54, 0x44, 0xde, 0xb4, 0x4e, 0x9a, 0x74, 0xb6, 0xcd, 0xd9, + 0xac, 0x65, 0x6e, 0xc6, 0x23, 0x24, 0xb4, 0x44, 0x50, 0xee, 0xce, 0x76, + 0x77, 0x03, 0x0e, 0x81, 0x54, 0xc8, 0x61, 0x86, 0x04, 0x08, 0x15, 0x30, + 0x0c, 0x00, 0x5f, 0x30, 0x21, 0xc0, 0xb2, 0x30, 0x26, 0x00, 0x88, 0x31, + 0xa7, 0xc1, 0x5a, 0x30, 0x93, 0x84, 0x13, 0x31, 0xf2, 0x56, 0x58, 0x3f, + 0xb8, 0x62, 0x77, 0x31, 0x98, 0xc3, 0xee, 0x30, 0x68, 0x80, 0xcd, 0x30, + 0x0a, 0x00, 0x26, 0x30, 0x63, 0x81, 0x8f, 0x30, 0xfb, 0x41, 0x07, 0x2b, + 0x04, 0x64, 0x0c, 0x02, 0xc9, 0x80, 0x96, 0x00, 0xd9, 0x98, 0x2b, 0x8c, + 0x09, 0xb9, 0x66, 0x20, 0x6a, 0x78, 0x22, 0x4c, 0x44, 0x64, 0x30, 0xc8, + 0x40, 0x10, 0x6e, 0x34, 0x1c, 0xff, 0xfb, 0xd4, 0x60, 0x27, 0x0c, 0xc9, + 0x3f, 0x75, 0x3f, 0x83, 0xfb, 0x7b, 0x70, 0x58, 0xce, 0x08, 0x41, 0x34, + 0x45, 0x6e, 0x21, 0xcd, 0xcf, 0x04, 0x4f, 0xed, 0xed, 0xc1, 0x2b, 0xb9, + 0xe1, 0xc8, 0xd0, 0x89, 0xb8, 0x1f, 0x17, 0x73, 0x03, 0x86, 0x64, 0x8c, + 0x34, 0x14, 0x58, 0xb3, 0x54, 0xcc, 0xc0, 0x00, 0xd6, 0xac, 0x6d, 0x5b, + 0x97, 0xe2, 0xb7, 0x12, 0x80, 0x69, 0xe0, 0x2a, 0x81, 0x32, 0x46, 0xb4, + 0x93, 0xef, 0x63, 0xc2, 0xc2, 0xd7, 0x23, 0x91, 0x3e, 0xcf, 0x1f, 0x9a, + 0x47, 0x0d, 0xd9, 0x8c, 0x35, 0x29, 0xe7, 0x76, 0x52, 0xd7, 0xe9, 0xb5, + 0x5f, 0xda, 0xb9, 0x5f, 0x0c, 0xe0, 0x82, 0xbc, 0xcb, 0xe1, 0x29, 0x52, + 0xaa, 0x73, 0x79, 0xb4, 0xfd, 0x53, 0x46, 0x4f, 0xe3, 0x2d, 0xcc, 0xc7, + 0x2c, 0xea, 0x54, 0x35, 0xc5, 0x56, 0xe3, 0x09, 0x12, 0xab, 0x88, 0xe3, + 0x1a, 0x55, 0x19, 0xce, 0xcc, 0xf9, 0x42, 0x9d, 0x5d, 0xaf, 0x2e, 0x59, + 0xd8, 0x9b, 0xbb, 0x01, 0xc1, 0x01, 0xb2, 0x3b, 0x93, 0x5b, 0x32, 0x4e, + 0x22, 0x91, 0x8d, 0x24, 0xf1, 0x1c, 0x9f, 0x83, 0x6d, 0xab, 0xa7, 0xda, + 0x49, 0x50, 0xcb, 0x56, 0x77, 0x2a, 0x49, 0xb8, 0x09, 0xc7, 0xc8, 0xb7, + 0x24, 0x36, 0x14, 0x14, 0xb3, 0x83, 0x1a, 0xbb, 0x67, 0x2a, 0xf4, 0x3d, + 0x35, 0xb3, 0x29, 0xf6, 0xdb, 0x7c, 0x29, 0x3c, 0x65, 0xdb, 0xf6, 0x5b, + 0x38, 0xb6, 0xc6, 0x73, 0x6c, 0x7f, 0x0e, 0x2b, 0x7b, 0x5c, 0x7a, 0x5e, + 0xab, 0xf0, 0xf3, 0x06, 0x22, 0xae, 0x22, 0xae, 0x1a, 0x36, 0x78, 0xea, + 0xc5, 0xd2, 0x41, 0x12, 0xdb, 0x16, 0xc9, 0x78, 0xad, 0xd4, 0xc2, 0xfa, + 0xb5, 0xfb, 0x8a, 0x1e, 0x2c, 0x69, 0x80, 0xe1, 0x38, 0x44, 0x01, 0x54, + 0x3c, 0x4b, 0x80, 0xb8, 0x0a, 0x51, 0xf4, 0x10, 0x01, 0x2c, 0x34, 0x77, + 0x41, 0x92, 0x41, 0x27, 0x53, 0xb3, 0x51, 0xa4, 0x3c, 0x4b, 0xbb, 0xb5, + 0x6c, 0x46, 0x53, 0x7b, 0x75, 0x4d, 0x0e, 0xe9, 0x36, 0x94, 0xe9, 0x65, + 0x52, 0x2a, 0xea, 0x88, 0x8a, 0xa6, 0x59, 0x6d, 0xb3, 0xfa, 0xdd, 0x93, + 0xe8, 0xfa, 0x65, 0x7e, 0xcb, 0xaf, 0xdd, 0x17, 0x54, 0x74, 0x6a, 0xd5, + 0x7e, 0xaf, 0x6f, 0x6b, 0xa6, 0xba, 0x49, 0x63, 0xed, 0xfc, 0x8e, 0x96, + 0xbb, 0x7e, 0x8c, 0x87, 0x6b, 0xb3, 0x97, 0xb0, 0xe6, 0x72, 0x96, 0x85, + 0x0b, 0x13, 0x0e, 0x07, 0x04, 0x03, 0x81, 0xe9, 0xc4, 0xc5, 0x54, 0x68, + 0x84, 0x80, 0x18, 0x05, 0x60, 0x19, 0x18, 0x04, 0xe0, 0x28, 0x98, 0x04, + 0xc0, 0x2e, 0x98, 0x82, 0xa0, 0x96, 0x98, 0x35, 0xc1, 0xb9, 0x18, 0x9d, + 0x6a, 0xf2, 0x9d, 0x35, 0xab, 0xc0, 0x18, 0xbe, 0x61, 0xd3, 0x98, 0x44, + 0x40, 0xf0, 0x18, 0x1f, 0x00, 0xbf, 0x18, 0x2d, 0xa0, 0xa7, 0x98, 0x57, + 0xc0, 0x2f, 0x98, 0x1b, 0x80, 0x50, 0x18, 0x05, 0x20, 0x0e, 0x81, 0x80, + 0x1a, 0x10, 0x13, 0x28, 0xc0, 0x04, 0x2c, 0xd2, 0xb4, 0x8c, 0xe4, 0x38, + 0xbe, 0x28, 0x34, 0x50, 0x1e, 0xa5, 0x58, 0xab, 0xe5, 0xa2, 0xfc, 0x26, + 0x6b, 0xb8, 0xd1, 0x92, 0xd6, 0x72, 0x50, 0xc0, 0xa0, 0x35, 0xbf, 0x44, + 0xfb, 0xc5, 0x19, 0x1c, 0x75, 0xc2, 0x24, 0x02, 0x5b, 0x90, 0x54, 0xa6, + 0x11, 0x0e, 0xdd, 0x5b, 0xb4, 0x76, 0x21, 0x33, 0xd2, 0x97, 0xd2, 0x4f, + 0x3d, 0x00, 0xc5, 0xb8, 0xc8, 0x63, 0x08, 0x71, 0x74, 0x6c, 0x4d, 0x2e, + 0x4b, 0xdc, 0x23, 0x65, 0xf9, 0x3e, 0xd2, 0x15, 0x01, 0xbd, 0x9e, 0x35, + 0x97, 0xe2, 0xba, 0x7d, 0x16, 0x1b, 0x26, 0x26, 0x4e, 0xd8, 0xfc, 0x39, + 0x8c, 0x48, 0xf1, 0xda, 0xe4, 0xb3, 0xcb, 0xd5, 0xc2, 0x76, 0xc3, 0xf5, + 0xcb, 0x7a, 0xc2, 0xb1, 0xb6, 0x16, 0xa1, 0xab, 0x98, 0x63, 0x3b, 0x66, + 0x92, 0x1c, 0x18, 0x78, 0x7d, 0x48, 0x6e, 0x57, 0x7d, 0x59, 0x6c, 0xad, + 0x8b, 0x26, 0x60, 0x44, 0x89, 0xac, 0x42, 0x78, 0xa6, 0x61, 0xf1, 0x61, + 0x62, 0x68, 0x0f, 0x62, 0xcb, 0x1e, 0xb0, 0x60, 0x52, 0x46, 0x4c, 0xc6, + 0xdb, 0xd8, 0xd5, 0xac, 0x58, 0x5a, 0x83, 0x03, 0x32, 0xc0, 0xa6, 0x37, + 0xbe, 0xfa, 0xd1, 0x73, 0x9d, 0xe5, 0xec, 0x1a, 0x35, 0xcf, 0x05, 0x8e, + 0x77, 0xd3, 0xee, 0xb0, 0x59, 0x71, 0x1f, 0x10, 0x9b, 0xe5, 0x73, 0x83, + 0xa8, 0xae, 0xd8, 0x25, 0x8e, 0xf1, 0x0e, 0x9d, 0x38, 0x8a, 0x56, 0xaf, + 0x4c, 0xa7, 0x32, 0x07, 0x91, 0x32, 0x66, 0xf9, 0x00, 0x31, 0x50, 0xb2, + 0xac, 0xda, 0x90, 0x7c, 0x39, 0xfa, 0xdd, 0x4a, 0x2b, 0x3b, 0x56, 0x11, + 0x99, 0x7a, 0x4c, 0xf0, 0xb3, 0x9e, 0x10, 0xc9, 0x79, 0x37, 0x75, 0x75, + 0x44, 0xce, 0x79, 0x4b, 0xbd, 0xcf, 0x3b, 0xf6, 0x42, 0x25, 0x9f, 0x4a, + 0xca, 0xae, 0xdd, 0x7b, 0x35, 0x7f, 0xd6, 0xdf, 0xff, 0xff, 0x4f, 0xaf, + 0xfa, 0x6b, 0xff, 0xfe, 0xd3, 0x5b, 0x43, 0x56, 0xe7, 0x36, 0xcb, 0x40, + 0xae, 0xe1, 0xea, 0x20, 0x86, 0x22, 0x21, 0x2f, 0x0c, 0x11, 0x90, 0x03, + 0x01, 0x04, 0x04, 0xa3, 0x01, 0xb0, 0x02, 0x53, 0x03, 0x54, 0x1b, 0x93, + 0x03, 0xdc, 0x07, 0x53, 0x08, 0x64, 0x1b, 0xc3, 0x18, 0x78, 0xce, 0x73, + 0xd0, 0xa9, 0x1c, 0x83, 0x1b, 0x80, 0x18, 0xf3, 0x07, 0x14, 0x03, 0xb3, + 0x00, 0x48, 0x11, 0xb3, 0x01, 0xbc, 0x18, 0x43, 0x07, 0x98, 0x0d, 0x03, + 0x03, 0x68, 0x0d, 0x90, 0xe0, 0x17, 0x91, 0x1c, 0xc4, 0xa0, 0x30, 0x80, + 0x40, 0x28, 0x06, 0x05, 0x9c, 0x19, 0xc8, 0x1c, 0xc4, 0x4a, 0xa0, 0x44, + 0xf2, 0x6c, 0x32, 0x58, 0x5b, 0xff, 0xfb, 0xd4, 0x60, 0x28, 0x0c, 0xd7, + 0x7f, 0x70, 0x41, 0x93, 0xfc, 0x4b, 0x70, 0x55, 0xae, 0x08, 0x42, 0x14, + 0xa5, 0x6e, 0x24, 0x45, 0xc0, 0xfc, 0x2f, 0xf1, 0xed, 0xd1, 0x3b, 0x38, + 0x21, 0x44, 0xd0, 0x89, 0xb8, 0x00, 0x80, 0x9c, 0xfc, 0xa3, 0xa5, 0x03, + 0x78, 0x3e, 0x00, 0x4d, 0x1a, 0xef, 0xd5, 0x33, 0xe8, 0xec, 0xb3, 0x97, + 0x6a, 0x5e, 0xcd, 0x93, 0x62, 0x3c, 0xf1, 0xce, 0xc4, 0x24, 0x91, 0x78, + 0x0f, 0x8e, 0x7e, 0xe8, 0x5d, 0xc9, 0x45, 0x23, 0x95, 0xa8, 0xd4, 0x31, + 0x44, 0x03, 0x01, 0xa1, 0x91, 0xe1, 0xc0, 0x98, 0x60, 0x36, 0x00, 0x9d, + 0x74, 0x80, 0x42, 0x35, 0x73, 0x0b, 0x23, 0xd2, 0x18, 0x89, 0x5e, 0x7c, + 0x83, 0x5a, 0x14, 0x06, 0x82, 0x0d, 0x87, 0x9f, 0xac, 0x2c, 0xe7, 0xda, + 0xaa, 0xac, 0x3d, 0x6d, 0x27, 0x06, 0x55, 0xc5, 0xda, 0x56, 0x23, 0xd9, + 0x36, 0xe2, 0xb4, 0xd1, 0xa5, 0x8b, 0x93, 0x23, 0x2f, 0x36, 0x11, 0x72, + 0x15, 0xb1, 0x28, 0x5c, 0x6d, 0xf7, 0x28, 0x16, 0x4e, 0x91, 0xaa, 0x93, + 0x0b, 0x1c, 0x82, 0x9e, 0x19, 0x6a, 0xdd, 0x66, 0x53, 0xe4, 0x59, 0x85, + 0x9d, 0xb0, 0xc5, 0x12, 0x4d, 0x68, 0xeb, 0x9d, 0x0c, 0x4a, 0x2e, 0x41, + 0x79, 0x39, 0xc9, 0x79, 0xfd, 0xf4, 0xd6, 0x22, 0x7a, 0x22, 0xa9, 0x1a, + 0x26, 0xbe, 0xdc, 0x82, 0xea, 0xbb, 0x03, 0x8c, 0xb0, 0x62, 0x00, 0x00, + 0x71, 0xea, 0xf3, 0xbb, 0xf4, 0xb1, 0x6c, 0xb5, 0x75, 0x27, 0x92, 0x8f, + 0x69, 0x50, 0x40, 0x95, 0x60, 0x80, 0x78, 0x84, 0x64, 0xd9, 0x77, 0x57, + 0x3b, 0xd2, 0x8e, 0xa6, 0x2f, 0x5f, 0xd6, 0xbf, 0xd3, 0x47, 0xa7, 0xfe, + 0x8d, 0x57, 0x4f, 0xaf, 0xb7, 0x2e, 0xdc, 0x95, 0x52, 0x6a, 0xbf, 0xe9, + 0xf4, 0x6f, 0xa7, 0x54, 0x79, 0xcd, 0xfb, 0x2a, 0x90, 0xac, 0xba, 0x6b, + 0xa9, 0x48, 0xea, 0xce, 0x2c, 0x86, 0x51, 0x8e, 0x07, 0x14, 0x17, 0x63, + 0xa0, 0x70, 0xc2, 0xb1, 0xc5, 0x65, 0x61, 0x41, 0x65, 0x41, 0x74, 0x00, + 0xc0, 0x58, 0x02, 0xa4, 0x46, 0x0a, 0x41, 0x80, 0x6e, 0x2a, 0x79, 0x84, + 0xec, 0x1f, 0x71, 0x83, 0xce, 0x39, 0x99, 0x8d, 0x1d, 0x49, 0x61, 0xdd, + 0x41, 0xc1, 0x39, 0x8d, 0xb4, 0x3b, 0xd1, 0x86, 0x2a, 0x1b, 0x49, 0x84, + 0x2e, 0x0e, 0x99, 0x85, 0xcc, 0x0c, 0xb1, 0x8c, 0x7e, 0x03, 0xc1, 0x85, + 0x1a, 0x0a, 0x61, 0x81, 0x08, 0x00, 0x88, 0xb0, 0x04, 0x41, 0xc8, 0x11, + 0xd1, 0xf1, 0x81, 0x40, 0x86, 0x9b, 0x88, 0x02, 0xf0, 0x23, 0xc1, 0xf5, + 0x00, 0x44, 0x71, 0x10, 0x11, 0xd1, 0x54, 0x2d, 0x79, 0x46, 0x51, 0x42, + 0x05, 0x5c, 0xe6, 0x44, 0x0c, 0x4c, 0xc3, 0xcb, 0xaa, 0x03, 0x28, 0x01, + 0xaa, 0xbc, 0x02, 0x86, 0xe2, 0xa0, 0x56, 0x18, 0xcf, 0x13, 0x74, 0x58, + 0x4b, 0x9b, 0x31, 0x77, 0x5e, 0x99, 0x7a, 0x31, 0xbe, 0xb8, 0xb4, 0x68, + 0xf5, 0x52, 0xf9, 0xbf, 0xce, 0x93, 0xe2, 0xf3, 0xc3, 0x0b, 0x6a, 0x1f, + 0x40, 0xe1, 0x99, 0x4c, 0xaa, 0x4e, 0x51, 0xcc, 0xe6, 0x5c, 0xb0, 0xbc, + 0xaa, 0x79, 0xb1, 0x3b, 0x1c, 0xb6, 0xa8, 0xd4, 0x6a, 0xb6, 0xa3, 0xad, + 0x0d, 0x8a, 0xdc, 0xbf, 0x2d, 0xf9, 0x2f, 0x7c, 0xd7, 0x09, 0x62, 0xcd, + 0xab, 0x82, 0x5a, 0xbc, 0x9f, 0x69, 0x53, 0x23, 0x5a, 0x22, 0x4b, 0x1d, + 0xc9, 0xc9, 0x5c, 0xf3, 0xa3, 0x93, 0x24, 0x91, 0x43, 0x2c, 0x1a, 0xb3, + 0xb5, 0x35, 0xd2, 0x1a, 0x35, 0x0f, 0x46, 0x41, 0x54, 0xbf, 0x9a, 0x56, + 0xcc, 0x63, 0x6b, 0xa7, 0xed, 0xed, 0xea, 0x96, 0xb5, 0x63, 0x1b, 0xf6, + 0x24, 0xf2, 0x1d, 0x00, 0xc2, 0x7b, 0xd5, 0x90, 0x94, 0x2f, 0x5d, 0x29, + 0x53, 0xe8, 0x52, 0x71, 0xdc, 0xb4, 0xba, 0xdb, 0x42, 0xfb, 0x03, 0x44, + 0x79, 0x62, 0xc5, 0x7c, 0xfa, 0x06, 0x19, 0x94, 0x49, 0xeb, 0xb3, 0x2b, + 0xb7, 0x1d, 0x6e, 0x76, 0x47, 0x07, 0xd0, 0x9c, 0x57, 0x06, 0xf9, 0xd2, + 0xe9, 0x4f, 0x0d, 0xeb, 0xc5, 0x52, 0xb6, 0x32, 0xbd, 0x0b, 0x3a, 0xa0, + 0xa7, 0x0f, 0xc7, 0x50, 0x13, 0xa4, 0x82, 0x3b, 0xa2, 0x4e, 0x70, 0x8b, + 0x13, 0xc1, 0xdc, 0x8a, 0x6a, 0xbb, 0x26, 0x92, 0xa9, 0x5f, 0x44, 0x23, + 0x86, 0xce, 0x5f, 0x25, 0x6e, 0x41, 0x48, 0x85, 0x38, 0xff, 0x41, 0xa2, + 0xf7, 0x7c, 0xf2, 0xa2, 0x1e, 0x47, 0xef, 0x4a, 0x51, 0xa9, 0xfd, 0x2a, + 0xfa, 0x2f, 0xfa, 0xf9, 0xbf, 0x4c, 0x9d, 0x7d, 0x3f, 0xb7, 0xfd, 0x69, + 0x65, 0x22, 0xbf, 0x6a, 0xa2, 0x48, 0xb4, 0xed, 0xf4, 0xbb, 0xdd, 0x2e, + 0x62, 0x23, 0x1d, 0xca, 0x83, 0xa2, 0x84, 0x04, 0x53, 0x88, 0x0c, 0x11, + 0x85, 0x90, 0x18, 0xe5, 0x71, 0x0e, 0x41, 0x15, 0x6d, 0x46, 0x80, 0x00, + 0xc0, 0x36, 0x00, 0x84, 0xc0, 0x4f, 0x00, 0x68, 0xc0, 0x92, 0x04, 0x1c, + 0xc1, 0x12, 0x00, 0xe8, 0xc1, 0xaa, 0x01, 0x0c, 0xc5, 0x13, 0x05, 0xd8, + 0xe8, 0x2b, 0x0c, 0xec, 0xc5, 0x43, 0x00, 0x78, 0xc1, 0x86, 0x02, 0x68, + 0xc0, 0x5e, 0x03, 0x50, 0x12, 0x09, 0x79, 0x80, 0x76, 0x04, 0x39, 0x80, + 0x4a, 0x01, 0x38, 0x10, 0x01, 0x50, 0x10, 0x01, 0x8a, 0x64, 0x4a, 0x00, + 0x87, 0x03, 0x31, 0x95, 0x01, 0x68, 0xac, 0x69, 0x4c, 0x8a, 0x03, 0xa6, + 0x96, 0xbe, 0x33, 0x58, 0xe6, 0xdd, 0x0c, 0x44, 0x6e, 0x1e, 0x8c, 0xc5, + 0xa3, 0x94, 0x95, 0x66, 0x54, 0x94, 0x1a, 0xff, 0x53, 0x4d, 0xaa, 0x19, + 0x8a, 0x7b, 0xd0, 0x4c, 0xe3, 0x2c, 0xb7, 0x69, 0xfb, 0x84, 0xca, 0x93, + 0xe1, 0xe6, 0xa6, 0xa2, 0xc5, 0xff, 0xfb, 0xd4, 0x60, 0x3a, 0x8c, 0xc6, + 0xb4, 0x70, 0x43, 0x1b, 0xfb, 0x43, 0x70, 0x58, 0xee, 0x08, 0x52, 0x34, + 0x62, 0x6e, 0x24, 0x49, 0xc0, 0xfc, 0x2f, 0xf5, 0xed, 0xc1, 0x60, 0x38, + 0x21, 0x05, 0x11, 0x15, 0xb8, 0xdc, 0x6e, 0x0c, 0xb8, 0x2e, 0x1e, 0x8e, + 0x1c, 0x30, 0x00, 0x84, 0x05, 0xcd, 0x15, 0xc6, 0x08, 0x40, 0x91, 0xc3, + 0x64, 0x44, 0xa3, 0x8f, 0x0f, 0xd0, 0xf1, 0xf2, 0x22, 0xc5, 0x84, 0x66, + 0x4e, 0x31, 0xb6, 0xa8, 0xcc, 0x9c, 0xc5, 0x14, 0x58, 0x5d, 0xd5, 0xd1, + 0x8b, 0x4b, 0x2e, 0xef, 0x79, 0xea, 0x5d, 0xc8, 0x19, 0x12, 0xa8, 0xe8, + 0xcc, 0xa7, 0x44, 0x7f, 0xc3, 0x54, 0xf1, 0x34, 0xec, 0x87, 0x8b, 0xc4, + 0x8f, 0xd2, 0x49, 0x9f, 0xab, 0x76, 0x47, 0x7b, 0xbe, 0xfb, 0x4f, 0x46, + 0xb9, 0xb6, 0x5e, 0x9e, 0x6e, 0xa4, 0xb6, 0x86, 0x67, 0x1c, 0x86, 0x74, + 0x51, 0x03, 0x94, 0x81, 0xb7, 0x02, 0x50, 0x3a, 0x00, 0x07, 0xc4, 0x52, + 0x6a, 0x8d, 0xb6, 0x41, 0x35, 0xd8, 0x8d, 0x3b, 0xcc, 0xbf, 0xd2, 0xfe, + 0xef, 0xd8, 0xd9, 0xff, 0x48, 0x8b, 0xbd, 0x50, 0xc4, 0x0e, 0x82, 0xb0, + 0x53, 0xb4, 0x3b, 0xca, 0x5d, 0x5c, 0x96, 0xab, 0x3a, 0x11, 0xd2, 0x44, + 0x72, 0xa2, 0x31, 0x98, 0xde, 0xde, 0xab, 0xda, 0xbd, 0x3a, 0xba, 0x7e, + 0x9f, 0xef, 0x44, 0xdd, 0x3d, 0x7b, 0xed, 0xee, 0x9f, 0xba, 0x7a, 0xd1, + 0x29, 0xd6, 0x88, 0xf5, 0x3b, 0xbb, 0xdd, 0x15, 0xd5, 0x8a, 0x50, 0xd7, + 0x1d, 0x02, 0x84, 0x38, 0x0a, 0x33, 0x2a, 0x1d, 0x84, 0x89, 0x04, 0xa8, + 0x01, 0x80, 0xfa, 0x06, 0xa1, 0x80, 0x8c, 0x0a, 0x19, 0x80, 0x90, 0x0d, + 0x11, 0x8a, 0xb4, 0x1b, 0x79, 0x80, 0xc2, 0x3a, 0xe1, 0x85, 0x11, 0x63, + 0x99, 0xa0, 0xb9, 0xc0, 0xb1, 0x85, 0x58, 0x3e, 0x39, 0x82, 0x18, 0x17, + 0xb1, 0x83, 0xe4, 0x06, 0xe1, 0x85, 0xee, 0x02, 0x71, 0x8d, 0x24, 0x03, + 0x01, 0x85, 0xa8, 0x09, 0xf1, 0x81, 0x02, 0x00, 0xe1, 0x80, 0xf0, 0x00, + 0x19, 0x82, 0x62, 0x59, 0x70, 0xcc, 0x18, 0x0a, 0x0c, 0x0e, 0xaf, 0xcc, + 0x51, 0x10, 0xcb, 0x00, 0x04, 0x06, 0xf7, 0x97, 0xe1, 0xa3, 0x3e, 0x8c, + 0x41, 0x84, 0x25, 0xfc, 0x8d, 0x5b, 0xcc, 0x13, 0x0a, 0x97, 0xec, 0x09, + 0x1b, 0x5c, 0x8c, 0x71, 0xd2, 0x6b, 0x2d, 0x72, 0x0f, 0x71, 0x65, 0xe8, + 0x32, 0x24, 0x00, 0x35, 0xc8, 0x2d, 0xe5, 0x7a, 0x9a, 0x52, 0x91, 0x56, + 0x47, 0x49, 0xca, 0x83, 0x66, 0x50, 0xde, 0x5b, 0x32, 0xf4, 0xba, 0x11, + 0x94, 0xdf, 0x86, 0xd4, 0xe9, 0x62, 0x74, 0x92, 0x47, 0x94, 0x8a, 0xb5, + 0x2a, 0x35, 0x70, 0xe0, 0x90, 0x80, 0xa1, 0x53, 0x1b, 0xcc, 0x97, 0xa3, + 0x04, 0xb5, 0x6e, 0x56, 0x34, 0xb7, 0xb3, 0x39, 0xd9, 0x61, 0x91, 0x85, + 0x5e, 0xab, 0xca, 0xb5, 0x5f, 0x01, 0xcd, 0xe4, 0x0a, 0xba, 0x7e, 0xda, + 0x77, 0x23, 0x4c, 0x33, 0xf6, 0x1a, 0x16, 0xd8, 0xac, 0x65, 0xa1, 0xa6, + 0xfe, 0x56, 0x16, 0x79, 0xdf, 0x37, 0xb9, 0x36, 0xbf, 0x59, 0x4e, 0xc6, + 0x6f, 0x84, 0x94, 0x6c, 0x5d, 0x39, 0xb8, 0x36, 0x22, 0xa1, 0x25, 0x10, + 0x19, 0x66, 0x73, 0x3c, 0xb1, 0x3d, 0x1b, 0x5e, 0xc1, 0x61, 0x73, 0x5b, + 0x56, 0x65, 0x95, 0xfe, 0x57, 0x2e, 0x75, 0xeb, 0xa8, 0xed, 0xeb, 0xb6, + 0x9b, 0xae, 0x56, 0xd0, 0xfb, 0x63, 0x6f, 0x6c, 0xfd, 0x09, 0xd6, 0x5a, + 0xa2, 0xe9, 0xb2, 0x3a, 0x96, 0x47, 0xae, 0x11, 0x60, 0x48, 0xba, 0x91, + 0xf2, 0xfb, 0x21, 0xb6, 0xc7, 0x23, 0x8c, 0x06, 0x14, 0xe3, 0x9c, 0x03, + 0xa5, 0x74, 0xd8, 0xa0, 0x9d, 0x18, 0xdd, 0x04, 0xe8, 0x34, 0x97, 0x26, + 0x6b, 0x98, 0x40, 0x0f, 0x06, 0xe9, 0xbb, 0xb2, 0x08, 0x32, 0xd3, 0x41, + 0x94, 0xb2, 0x39, 0x9c, 0x52, 0xdd, 0x59, 0x73, 0xaa, 0x35, 0x0b, 0xbf, + 0x7f, 0x6e, 0x7f, 0x66, 0x6d, 0x9a, 0xeb, 0x9c, 0xa8, 0xec, 0x4f, 0x4f, + 0x7d, 0x36, 0xfe, 0xfa, 0xeb, 0xa6, 0xd4, 0x7d, 0x25, 0x44, 0xf4, 0xdb, + 0x67, 0xde, 0xe9, 0x6d, 0x51, 0xae, 0x76, 0xb2, 0x9e, 0xdd, 0x93, 0x56, + 0x55, 0x97, 0xc9, 0xaa, 0xa6, 0x97, 0xbd, 0x11, 0x72, 0xb1, 0xa8, 0xb9, + 0x64, 0x3b, 0x24, 0xa1, 0xc7, 0x0f, 0xb9, 0x87, 0x83, 0x8e, 0x16, 0x28, + 0xc3, 0x10, 0x5d, 0x05, 0x47, 0x2a, 0x00, 0x26, 0x96, 0x88, 0x00, 0x02, + 0x80, 0x22, 0x08, 0x02, 0x20, 0xc0, 0x69, 0x02, 0x60, 0xc2, 0x22, 0x01, + 0x00, 0xc1, 0xbd, 0x04, 0x4c, 0xc5, 0x5a, 0x19, 0xc0, 0xec, 0xba, 0x26, + 0xc4, 0xc5, 0xc4, 0x06, 0x20, 0xc1, 0xd7, 0x04, 0x6c, 0xc0, 0xbb, 0x04, + 0x24, 0xc0, 0x84, 0x05, 0x40, 0xc0, 0xf9, 0x01, 0xe8, 0xc0, 0x8d, 0x02, + 0x84, 0xc0, 0x0c, 0x00, 0x70, 0x18, 0x00, 0x8a, 0x2f, 0x0c, 0x86, 0xbf, + 0x26, 0x31, 0x26, 0x46, 0x1e, 0xe6, 0xdd, 0x87, 0xe5, 0xd3, 0x6e, 0xf3, + 0xc5, 0x0f, 0xdc, 0x8a, 0xc5, 0xcc, 0x28, 0x1e, 0x1a, 0xa6, 0xd4, 0x70, + 0x68, 0x15, 0xa6, 0x4a, 0xd8, 0xac, 0x3b, 0x04, 0x2f, 0xd1, 0xd0, 0x74, + 0xb0, 0xbd, 0x9f, 0x3b, 0x4d, 0x0b, 0x9a, 0x94, 0x43, 0xb4, 0xd2, 0x55, + 0x61, 0xa0, 0xee, 0x50, 0xf5, 0xb4, 0xed, 0x80, 0xc2, 0xa2, 0x41, 0x63, + 0x87, 0x05, 0xc6, 0x86, 0x03, 0x90, 0xec, 0x42, 0x3c, 0x53, 0xee, 0x41, + 0xa9, 0xed, 0x6c, 0x6c, 0x39, 0x02, 0xe3, 0xf5, 0x57, 0xa2, 0xd2, 0xf4, + 0x72, 0x46, 0x0e, 0x1a, 0xc5, 0xf4, 0x8f, 0x4d, 0x14, 0xb9, 0xa6, 0x32, + 0xc3, 0x8d, 0xf8, 0xaa, 0x91, 0xff, 0xfb, 0xd4, 0x60, 0x53, 0x88, 0xc6, + 0xd6, 0x70, 0x42, 0xbb, 0xfb, 0x43, 0x70, 0x4a, 0x6d, 0x88, 0x52, 0x34, + 0x65, 0x6e, 0x6b, 0x5d, 0xc1, 0x04, 0x4f, 0xf3, 0x0d, 0xc1, 0xbc, 0xb8, + 0x20, 0x84, 0xd1, 0xa1, 0xb8, 0xea, 0xef, 0x55, 0x42, 0x35, 0x6f, 0x47, + 0x45, 0xc1, 0x25, 0x13, 0x31, 0x2d, 0x0e, 0xa8, 0x73, 0x5a, 0xd9, 0x09, + 0x02, 0xeb, 0x10, 0x8b, 0x7c, 0x32, 0x75, 0x43, 0x29, 0xa4, 0x72, 0xab, + 0x4a, 0x31, 0xd7, 0xae, 0x32, 0x1e, 0xde, 0xe5, 0x6a, 0xd9, 0x22, 0x86, + 0xc9, 0xec, 0xaf, 0x67, 0x89, 0xc5, 0xdc, 0x3a, 0x24, 0x95, 0x00, 0x00, + 0x98, 0xa4, 0xaa, 0xfe, 0xd7, 0x75, 0x21, 0xdb, 0xff, 0xc4, 0x9c, 0xdc, + 0xf2, 0x34, 0x35, 0x0f, 0x03, 0xb2, 0xcb, 0xe5, 0xc3, 0x2b, 0x99, 0x95, + 0xa9, 0x3f, 0xa3, 0xf4, 0xd6, 0xd7, 0xf4, 0xa5, 0xcb, 0x4e, 0x9b, 0xbe, + 0xdf, 0xd3, 0xff, 0xed, 0xae, 0xdf, 0x3d, 0x9b, 0x7f, 0xca, 0xef, 0xb7, + 0xda, 0xdf, 0xd7, 0xf7, 0xff, 0xbb, 0xe9, 0x64, 0xd6, 0xaa, 0xa8, 0x82, + 0x8e, 0xa5, 0x5c, 0x26, 0x44, 0x71, 0x12, 0x0a, 0x5f, 0x72, 0x07, 0x80, + 0xba, 0x00, 0x54, 0x0f, 0x13, 0x05, 0x3c, 0x0c, 0x33, 0x01, 0x90, 0x23, + 0xc3, 0x07, 0x60, 0x00, 0x13, 0x0c, 0xfc, 0x63, 0xf3, 0x0b, 0x5d, 0xa9, + 0xe3, 0x92, 0xad, 0xba, 0x73, 0x09, 0xa4, 0xba, 0xc3, 0x43, 0x09, 0x01, + 0xa3, 0x3c, 0x74, 0x40, 0xd3, 0x14, 0x80, 0x32, 0xc3, 0x10, 0xe4, 0x25, + 0xb3, 0x01, 0xf8, 0x19, 0x83, 0x04, 0x64, 0x10, 0x93, 0x04, 0x88, 0x14, + 0xe2, 0xb0, 0x69, 0x92, 0x9a, 0x67, 0x05, 0x0d, 0x19, 0xce, 0x5c, 0x63, + 0xe4, 0xd9, 0xcb, 0x4e, 0x07, 0x92, 0x79, 0x1a, 0xd6, 0x9e, 0x72, 0xf6, + 0x69, 0x86, 0x50, 0x06, 0xa0, 0x39, 0x18, 0x50, 0x2e, 0x16, 0x0e, 0x82, + 0x86, 0xc3, 0x41, 0x92, 0xef, 0x98, 0xac, 0x00, 0x62, 0x81, 0x70, 0x24, + 0x7e, 0x61, 0xf0, 0xc1, 0x8e, 0x04, 0x43, 0x21, 0x03, 0x0f, 0x05, 0x8a, + 0xa1, 0x13, 0x01, 0x81, 0x88, 0x03, 0x20, 0xd0, 0x90, 0x60, 0x65, 0x5d, + 0x83, 0x40, 0xe6, 0x05, 0x09, 0x98, 0x10, 0x40, 0x55, 0x08, 0xa0, 0x4d, + 0x3b, 0x81, 0xc2, 0x43, 0x07, 0x82, 0x50, 0x90, 0x8a, 0xe5, 0xdf, 0x6d, + 0x02, 0xa0, 0x42, 0xd2, 0x81, 0x84, 0xe0, 0x40, 0x23, 0x05, 0x2c, 0xd9, + 0x00, 0x19, 0x08, 0x90, 0xa1, 0xd5, 0x65, 0xef, 0xab, 0x0e, 0x2e, 0x22, + 0x87, 0xa3, 0x98, 0x8c, 0x28, 0xa4, 0x9b, 0x0a, 0x5f, 0x03, 0x29, 0x40, + 0xc0, 0xd3, 0xa8, 0x80, 0x63, 0x03, 0x4d, 0x64, 0xbc, 0x12, 0x61, 0xbd, + 0xe3, 0x0c, 0x5c, 0x2f, 0xba, 0xe3, 0x54, 0x45, 0xd0, 0x6f, 0xdc, 0xc4, + 0xcf, 0x90, 0x33, 0x85, 0xca, 0xb7, 0xd6, 0x9c, 0xfb, 0x28, 0x78, 0x68, + 0xe1, 0x88, 0x5c, 0x35, 0x76, 0x5a, 0xcd, 0xdb, 0x84, 0x1c, 0xcf, 0xda, + 0xd3, 0x24, 0x87, 0xe9, 0xe2, 0x31, 0x27, 0xae, 0xe5, 0x5c, 0x6c, 0xe0, + 0xd7, 0xe0, 0x9a, 0x78, 0xa5, 0x2e, 0x76, 0x2d, 0xe7, 0xfb, 0x8e, 0xea, + 0x2b, 0x13, 0x97, 0x4a, 0x21, 0xff, 0xa5, 0xdd, 0x4c, 0x2d, 0xcf, 0xc6, + 0x27, 0x25, 0x74, 0x33, 0xf4, 0x54, 0x91, 0xbb, 0x57, 0x63, 0x93, 0x79, + 0xca, 0xe9, 0xa2, 0x94, 0x33, 0xd4, 0x93, 0xb1, 0x79, 0xbb, 0xd2, 0xe9, + 0xdd, 0x76, 0x49, 0x66, 0x6e, 0x53, 0x7f, 0x0e, 0xd3, 0x4d, 0x59, 0xde, + 0x13, 0x97, 0xfb, 0x28, 0xa7, 0x97, 0x52, 0x6e, 0xee, 0x77, 0xeb, 0xdc, + 0x88, 0x53, 0xf2, 0x29, 0x2f, 0xc6, 0x4f, 0x1e, 0xbd, 0x43, 0x6f, 0x56, + 0x26, 0xa2, 0x14, 0xf4, 0xf4, 0x56, 0x1f, 0x59, 0x43, 0x65, 0x06, 0x01, + 0x80, 0xda, 0xee, 0xa7, 0x42, 0x68, 0xec, 0xa3, 0x53, 0x71, 0x35, 0x50, + 0x64, 0x43, 0xb9, 0x9a, 0x49, 0x3c, 0x8a, 0xb7, 0xea, 0xd6, 0x14, 0x2c, + 0xa6, 0xc6, 0x45, 0xfd, 0x27, 0x2d, 0x22, 0xa6, 0x6a, 0x93, 0xbe, 0x3e, + 0x61, 0xdf, 0xae, 0x8f, 0x68, 0x94, 0x19, 0x8e, 0xa8, 0x8e, 0xea, 0x25, + 0xda, 0x96, 0x55, 0xbd, 0xd6, 0x78, 0xff, 0x89, 0x8a, 0xfa, 0xde, 0xa6, + 0xdf, 0xba, 0xa8, 0x4a, 0x4f, 0xe2, 0xa7, 0x8a, 0xf4, 0xd2, 0xb9, 0xf9, + 0xf5, 0xe2, 0x75, 0xea, 0x6e, 0x06, 0xe3, 0x7b, 0x4e, 0xe3, 0x69, 0x88, + 0xaf, 0x71, 0x90, 0xdc, 0xa9, 0x44, 0x3b, 0xa0, 0x8c, 0x75, 0x3d, 0x88, + 0x86, 0x96, 0x94, 0xb4, 0x19, 0x3c, 0x40, 0x05, 0xe2, 0x45, 0x1a, 0xca, + 0x1c, 0xd5, 0x30, 0x21, 0x00, 0xd0, 0x30, 0x2b, 0xc0, 0x3a, 0x30, 0xeb, + 0x85, 0x04, 0x30, 0xf5, 0xc0, 0xca, 0x30, 0x7b, 0x02, 0x40, 0x31, 0x94, + 0x4b, 0x29, 0x3a, 0xea, 0x54, 0x42, 0x30, 0x49, 0xc7, 0x2a, 0x3c, 0xbd, + 0x29, 0xbf, 0x32, 0x87, 0xc0, 0xc6, 0x31, 0xa8, 0xc0, 0x19, 0x30, 0xdd, + 0x01, 0x51, 0x30, 0x22, 0x00, 0xe6, 0x30, 0x1c, 0x80, 0x20, 0x30, 0x5b, + 0xc0, 0x4b, 0x32, 0x50, 0x49, 0x32, 0xa9, 0xb3, 0x07, 0x20, 0xc3, 0x86, + 0x19, 0x80, 0x40, 0xb8, 0x21, 0x1d, 0x38, 0x40, 0x6b, 0x30, 0xb9, 0x19, + 0x37, 0x74, 0x72, 0x31, 0x3c, 0xd6, 0x30, 0x5c, 0x27, 0x04, 0x80, 0xc6, + 0x00, 0x00, 0x20, 0xe0, 0x08, 0xc1, 0x00, 0xb8, 0x54, 0x0f, 0x1a, 0x00, + 0x40, 0x80, 0x41, 0x86, 0xa0, 0x12, 0xb1, 0x88, 0x41, 0x10, 0x68, 0x0c, + 0x60, 0x98, 0x1c, 0x60, 0x40, 0x06, 0x60, 0x30, 0x02, 0x5c, 0xe2, 0xed, + 0x36, 0x67, 0x25, 0xbd, 0x0b, 0x00, 0x2f, 0x28, 0x54, 0x02, 0x71, 0x97, + 0xcb, 0x83, 0x0e, 0xc7, 0x59, 0xff, 0xfb, 0xd4, 0x60, 0x49, 0x8f, 0xe9, + 0xd5, 0x70, 0x40, 0x83, 0xfd, 0x7b, 0x70, 0x51, 0x0e, 0x08, 0x41, 0x34, + 0x22, 0x6e, 0x20, 0xe9, 0xc1, 0x04, 0x0f, 0xf1, 0x2d, 0xc1, 0x5f, 0x38, + 0x21, 0x01, 0x31, 0x95, 0xb8, 0xd4, 0xfb, 0x3a, 0x87, 0x9b, 0xc4, 0x04, + 0xad, 0x02, 0xeb, 0x25, 0xda, 0xbd, 0x6a, 0x46, 0x88, 0xf4, 0xa3, 0x09, + 0x11, 0x8c, 0x2d, 0xa7, 0x2a, 0xa0, 0x49, 0x45, 0x08, 0xaf, 0x12, 0x63, + 0x74, 0x84, 0xa4, 0x90, 0xe7, 0x37, 0xc8, 0xe2, 0x52, 0xd6, 0xa1, 0x46, + 0x1d, 0x48, 0xf2, 0x7a, 0x75, 0x9f, 0xa7, 0x2c, 0x04, 0x29, 0x5a, 0xa5, + 0x8b, 0x05, 0x85, 0x42, 0x6f, 0x28, 0x95, 0xaa, 0x16, 0x22, 0xdc, 0xab, + 0x53, 0x28, 0x95, 0x3a, 0x91, 0xd2, 0x99, 0xf9, 0x75, 0x6d, 0x44, 0xc9, + 0xb5, 0x72, 0x65, 0xa2, 0xed, 0x8c, 0x3a, 0x8c, 0xaa, 0x82, 0xf6, 0x0b, + 0xe6, 0xa5, 0xd4, 0xf1, 0x5c, 0x5b, 0xa2, 0x39, 0xbc, 0x39, 0x5a, 0xd3, + 0xac, 0x94, 0x7d, 0x78, 0xaf, 0x5c, 0xee, 0xf5, 0xc1, 0x99, 0x96, 0x56, + 0x78, 0x16, 0x69, 0x8c, 0xf7, 0x51, 0x69, 0x1f, 0x50, 0x63, 0x46, 0x5f, + 0xc4, 0x27, 0x3c, 0xac, 0xc9, 0xa9, 0x6b, 0x3d, 0x1f, 0xb8, 0x37, 0x3f, + 0xb4, 0xec, 0x0f, 0x7e, 0xfc, 0x46, 0x0e, 0xc7, 0x7f, 0x6c, 0x32, 0xd7, + 0x2e, 0xa7, 0x52, 0x2f, 0x55, 0x1a, 0xc7, 0x19, 0x6e, 0x13, 0xb9, 0x58, + 0x52, 0xac, 0x4c, 0x27, 0x98, 0x20, 0x06, 0x2a, 0x29, 0x2a, 0xca, 0xd9, + 0x16, 0xa9, 0xc3, 0x07, 0x33, 0x45, 0x22, 0x18, 0x0b, 0x2f, 0xf4, 0x9a, + 0x59, 0x9e, 0xfe, 0xcb, 0xea, 0x46, 0xe8, 0x9d, 0x0a, 0xbb, 0x10, 0x92, + 0xde, 0x85, 0xb5, 0x53, 0x4d, 0x7b, 0x5b, 0xb2, 0x93, 0x64, 0xd3, 0xaa, + 0x2d, 0xda, 0x8a, 0xf7, 0xfd, 0xe8, 0xcf, 0xaf, 0xa6, 0xdb, 0x68, 0xf5, + 0xbd, 0x5a, 0x97, 0x56, 0xf4, 0x3d, 0x99, 0xdd, 0x37, 0x79, 0x16, 0xcc, + 0x08, 0xce, 0x60, 0x99, 0xce, 0x83, 0x18, 0x33, 0x22, 0x20, 0xc6, 0x33, + 0x07, 0x29, 0x80, 0x5e, 0x01, 0x71, 0x80, 0xf8, 0x0f, 0x51, 0x83, 0xbc, + 0x00, 0x91, 0x81, 0x1e, 0x05, 0x79, 0x81, 0xba, 0x10, 0x61, 0x87, 0xbc, + 0x5a, 0x59, 0xce, 0x7c, 0x6e, 0x71, 0x83, 0x92, 0x53, 0x59, 0xf9, 0x0a, + 0x03, 0xb9, 0x90, 0x88, 0x2d, 0xa1, 0x81, 0xb4, 0x15, 0x91, 0x83, 0x64, + 0x05, 0x39, 0x81, 0x1c, 0x05, 0xc9, 0x28, 0x0c, 0x26, 0x03, 0x70, 0x26, + 0xe0, 0xe5, 0x19, 0xa3, 0xa4, 0xc6, 0x85, 0x0d, 0x19, 0x55, 0xce, 0x69, + 0x91, 0x99, 0x85, 0x5b, 0xa4, 0x6b, 0x13, 0x2a, 0xdd, 0x4e, 0xd2, 0x11, + 0x30, 0xf8, 0x20, 0xdf, 0x66, 0x31, 0xe0, 0x59, 0x40, 0xb8, 0xb4, 0x66, + 0x03, 0x10, 0xa5, 0xb0, 0x18, 0xaa, 0x9c, 0x80, 0xe0, 0xa3, 0x58, 0x1e, + 0x04, 0x33, 0xf0, 0x08, 0x75, 0xc1, 0x76, 0xd1, 0xaa, 0x30, 0xea, 0xb7, + 0x37, 0x99, 0xf7, 0x55, 0xf4, 0x91, 0x17, 0xa9, 0xd4, 0xa2, 0x71, 0xa5, + 0x75, 0xa0, 0xc8, 0xd4, 0xb6, 0x75, 0xff, 0x67, 0x93, 0xf4, 0x0c, 0x98, + 0x30, 0x61, 0x21, 0xc2, 0x06, 0xd8, 0xc9, 0xa6, 0x6a, 0x49, 0x10, 0x26, + 0xf7, 0x1e, 0xa5, 0x4d, 0xec, 0x5a, 0x38, 0x8c, 0x89, 0x5c, 0x59, 0xec, + 0x99, 0x2e, 0xd2, 0x26, 0xa6, 0x5f, 0x11, 0xa6, 0x38, 0x65, 0x32, 0xf3, + 0xa3, 0x89, 0x1c, 0x44, 0x82, 0x64, 0x4c, 0x0f, 0x94, 0xc9, 0xdd, 0xe9, + 0x12, 0xcc, 0x98, 0x6a, 0x21, 0xe6, 0xa6, 0xdb, 0x9b, 0x84, 0x1b, 0x06, + 0xc9, 0xcf, 0x19, 0x5d, 0xa4, 0xd1, 0xae, 0x9a, 0xd3, 0x4a, 0xe9, 0x9c, + 0x66, 0xa9, 0x1a, 0xee, 0x8a, 0x70, 0x55, 0x46, 0x5c, 0x49, 0x4b, 0xa8, + 0x96, 0xa9, 0x02, 0x18, 0x2d, 0x08, 0x2c, 0xb1, 0x66, 0xe0, 0xb2, 0xca, + 0x5c, 0x9d, 0x75, 0x53, 0x85, 0x23, 0x8a, 0xd1, 0x94, 0x58, 0x20, 0x0b, + 0x2e, 0x4c, 0x3c, 0x84, 0x80, 0x94, 0x42, 0xb9, 0x41, 0x10, 0x50, 0x78, + 0x40, 0x03, 0x2c, 0x73, 0x75, 0x57, 0x41, 0x49, 0xad, 0x15, 0xb2, 0x3d, + 0xc2, 0xc4, 0x96, 0x91, 0xcf, 0xa9, 0xfb, 0x65, 0xde, 0x15, 0x22, 0xce, + 0xbf, 0xa4, 0x8e, 0x5f, 0x9e, 0x93, 0xef, 0x6b, 0xba, 0x59, 0xf2, 0x4f, + 0xb1, 0x5e, 0xb6, 0xbc, 0xed, 0xed, 0x37, 0x44, 0xef, 0x3e, 0x9b, 0x36, + 0xf5, 0xdb, 0x2d, 0xa8, 0x74, 0x74, 0xfb, 0xf4, 0x77, 0xeb, 0xed, 0x9e, + 0xaf, 0xda, 0x8b, 0x95, 0x51, 0xb5, 0x9f, 0x6a, 0x3e, 0xe7, 0x64, 0x2b, + 0x15, 0xdc, 0xda, 0x20, 0xc2, 0x1c, 0xa3, 0x04, 0xc6, 0xa0, 0xc1, 0x68, + 0x30, 0xd1, 0xc7, 0x20, 0xb2, 0x0c, 0x06, 0x40, 0x0d, 0x30, 0x0a, 0x81, + 0xda, 0x30, 0x3b, 0x40, 0x9f, 0x30, 0x10, 0x41, 0x2c, 0x30, 0x1b, 0xc1, + 0xa9, 0x30, 0x72, 0x89, 0xba, 0x32, 0xff, 0x0d, 0xe3, 0x31, 0x3e, 0x02, + 0xcb, 0x3b, 0x14, 0x97, 0xc6, 0x31, 0x76, 0xc1, 0xa3, 0x30, 0x5f, 0x82, + 0x19, 0x30, 0x88, 0x41, 0x06, 0x30, 0x08, 0x40, 0xc5, 0x30, 0x1b, 0xc0, + 0x64, 0x30, 0x1d, 0x01, 0x06, 0x31, 0xb8, 0xf8, 0xc9, 0x2e, 0x03, 0x1f, + 0x03, 0x01, 0xca, 0x03, 0x4e, 0x81, 0x82, 0xcd, 0x32, 0x8c, 0x69, 0x82, + 0xef, 0x21, 0x94, 0x63, 0x17, 0xa9, 0x4e, 0xb6, 0x1f, 0x05, 0x05, 0xd1, + 0xe5, 0x4c, 0xc1, 0x21, 0x48, 0x68, 0x88, 0x6d, 0x01, 0x91, 0x04, 0xd9, + 0x49, 0x7a, 0xeb, 0x0f, 0x05, 0x59, 0x3a, 0xaa, 0x43, 0x76, 0x9e, 0x45, + 0x13, 0x55, 0xf0, 0x4c, 0x62, 0x0d, 0x7b, 0xae, 0xae, 0xbb, 0x31, 0xfc, + 0xa2, 0xd2, 0xd6, 0xee, 0xfb, 0xff, 0xfb, 0xd4, 0x60, 0x42, 0x0c, 0xc8, + 0x2a, 0x6f, 0x42, 0x8b, 0xfc, 0x7b, 0x74, 0x30, 0x44, 0xd8, 0xd3, 0x28, + 0x02, 0x4b, 0x24, 0xad, 0xc1, 0x04, 0x0f, 0xf5, 0xed, 0xc1, 0x53, 0x37, + 0xa1, 0x08, 0x71, 0x09, 0xb9, 0x3f, 0xf5, 0xe0, 0x2a, 0xd0, 0x5c, 0x69, + 0xe1, 0x7b, 0x52, 0x26, 0x52, 0x44, 0xbd, 0x5c, 0xf1, 0x8d, 0x0f, 0x44, + 0x29, 0xd7, 0x49, 0xa6, 0x64, 0x83, 0x0c, 0xce, 0xc5, 0xb1, 0x0e, 0x5c, + 0x17, 0x8b, 0xa7, 0x11, 0x29, 0xd6, 0x25, 0xd3, 0xb4, 0xe6, 0xf5, 0x16, + 0x1b, 0xc8, 0x90, 0x7c, 0xd7, 0xb2, 0x7e, 0x1e, 0x1e, 0x6f, 0x59, 0x73, + 0xf1, 0x6d, 0x7a, 0xe7, 0x19, 0x9f, 0x3e, 0xd1, 0xe5, 0xbd, 0x37, 0x69, + 0x2c, 0xd9, 0x6c, 0x4b, 0x17, 0x51, 0x3b, 0x86, 0xf1, 0x3c, 0x4d, 0xee, + 0x90, 0xa9, 0x7c, 0x47, 0xa4, 0x4a, 0x53, 0xc5, 0xbe, 0x2d, 0xa9, 0x6b, + 0x5c, 0x56, 0xd7, 0xf0, 0x73, 0x0f, 0x74, 0x83, 0x25, 0x2f, 0x1e, 0x5b, + 0xc9, 0x58, 0x95, 0xf5, 0xc5, 0xfd, 0xb7, 0x98, 0x39, 0xbe, 0x31, 0x03, + 0x1b, 0xc3, 0xda, 0xdb, 0x34, 0x81, 0x3d, 0xe0, 0x45, 0x60, 0xcc, 0x19, + 0xe4, 0xba, 0xc0, 0x6e, 0xc4, 0x40, 0x02, 0x1f, 0xff, 0xff, 0xfa, 0x6d, + 0xa7, 0x37, 0xbe, 0x21, 0x85, 0x29, 0x8c, 0xc0, 0xca, 0x77, 0x0e, 0x41, + 0x41, 0xa8, 0x4f, 0x1c, 0xa0, 0xa8, 0x84, 0xc8, 0xa0, 0xb2, 0x8c, 0x28, + 0xfc, 0xa5, 0xe9, 0xd6, 0x91, 0xb6, 0x7f, 0xb7, 0xbb, 0xff, 0xff, 0xd3, + 0xda, 0xbe, 0xa3, 0x02, 0x58, 0x05, 0x53, 0x01, 0xa4, 0x26, 0x83, 0x08, + 0xf4, 0x06, 0x53, 0x05, 0x0c, 0x10, 0x40, 0xa0, 0x05, 0x46, 0x04, 0xb1, + 0x7b, 0xc6, 0xfc, 0x99, 0x10, 0x06, 0x08, 0x8a, 0x78, 0x86, 0xd9, 0xbf, + 0x4e, 0x66, 0x22, 0x90, 0x9b, 0x66, 0x21, 0x48, 0x45, 0xc6, 0x0e, 0x90, + 0x2b, 0x66, 0x07, 0xc8, 0x38, 0x06, 0x02, 0x60, 0x02, 0x26, 0x08, 0x48, + 0x0c, 0xc6, 0x5d, 0x01, 0x06, 0x35, 0xae, 0x66, 0x2d, 0x03, 0xe6, 0x4a, + 0x4c, 0xc6, 0x3e, 0x8a, 0x06, 0x31, 0x28, 0xa6, 0x85, 0x04, 0x86, 0x2d, + 0x51, 0x26, 0x62, 0x1a, 0xc6, 0x02, 0xce, 0xe7, 0x0f, 0x8c, 0x46, 0x21, + 0x8a, 0xa6, 0x1b, 0x84, 0xe6, 0x08, 0x01, 0xc0, 0x22, 0xe5, 0x82, 0x18, + 0x4c, 0x06, 0x25, 0x68, 0x90, 0x98, 0x9e, 0x00, 0x60, 0xf0, 0x48, 0x0f, + 0x30, 0x4c, 0x22, 0x62, 0xc3, 0x01, 0x21, 0x77, 0x01, 0x00, 0x40, 0x40, + 0x68, 0xe2, 0xaa, 0xe4, 0xfd, 0x4b, 0x12, 0xa8, 0x02, 0xd3, 0x2c, 0x24, + 0x77, 0x19, 0x3b, 0xb4, 0xd3, 0x1c, 0x18, 0x61, 0xae, 0xbd, 0x0c, 0xdf, + 0x91, 0x06, 0x8f, 0x29, 0x1e, 0xc9, 0xa2, 0x60, 0x63, 0xa9, 0x93, 0xd3, + 0x1c, 0x49, 0xe7, 0xad, 0xc8, 0xae, 0xaa, 0xf1, 0xd3, 0xaf, 0x8f, 0xe2, + 0x65, 0x1e, 0x79, 0x51, 0x29, 0x59, 0x55, 0x6e, 0xd6, 0x61, 0xcc, 0xde, + 0xfa, 0xb6, 0x83, 0xa8, 0xe9, 0xd7, 0xef, 0x58, 0x56, 0x1d, 0xb0, 0xb2, + 0x45, 0x71, 0x58, 0x5b, 0x85, 0x3b, 0x13, 0x44, 0x66, 0x2d, 0xc9, 0x46, + 0x78, 0x10, 0x2b, 0x0a, 0x8e, 0x70, 0x9d, 0xc4, 0x86, 0xfb, 0x31, 0xd9, + 0x9c, 0xa3, 0xb6, 0x4e, 0xfa, 0x6b, 0x3e, 0xef, 0x24, 0xa3, 0xde, 0xf3, + 0x7b, 0x65, 0x83, 0x0d, 0xfb, 0xb8, 0x19, 0x83, 0x68, 0x71, 0x37, 0x98, + 0x92, 0x3e, 0x8d, 0xa8, 0x8c, 0x31, 0x2d, 0xba, 0x6e, 0x9a, 0x87, 0x4a, + 0xef, 0x31, 0xb7, 0x57, 0x27, 0xba, 0x93, 0x50, 0x77, 0xeb, 0x03, 0x6c, + 0xce, 0x6a, 0xf7, 0xac, 0xd9, 0x80, 0x8f, 0xbc, 0xef, 0x9b, 0x98, 0xa7, + 0x80, 0xf9, 0xc2, 0xf6, 0x73, 0x64, 0x7a, 0xdc, 0x00, 0xc0, 0x00, 0xb4, + 0x5c, 0x6d, 0x8e, 0xd5, 0x8d, 0x55, 0xd1, 0xcb, 0x44, 0x0d, 0x5e, 0xf5, + 0x6d, 0x7d, 0xe5, 0xc9, 0x54, 0x4a, 0xbf, 0xf7, 0xb5, 0xaa, 0xb2, 0x19, + 0xe7, 0x20, 0xb3, 0x3e, 0x3b, 0xb9, 0xdc, 0x43, 0x3e, 0xac, 0xd7, 0x16, + 0xda, 0xbf, 0x6f, 0xf5, 0x91, 0x17, 0xb2, 0x6d, 0xb3, 0xa3, 0x2f, 0x6a, + 0xec, 0xca, 0xcb, 0xcc, 0xdf, 0x9e, 0xee, 0xa6, 0xdc, 0xff, 0xdd, 0x4f, + 0xaf, 0xdf, 0xd2, 0x7e, 0xcb, 0x22, 0x10, 0xea, 0x57, 0x52, 0xac, 0x65, + 0x81, 0xac, 0x48, 0xb1, 0x08, 0x38, 0x26, 0x07, 0x3d, 0x0a, 0x80, 0x60, + 0x60, 0x28, 0x81, 0xf0, 0x61, 0x0a, 0x80, 0xf8, 0x60, 0x66, 0x82, 0xc6, + 0x60, 0x76, 0x04, 0xd8, 0x61, 0xa9, 0x88, 0x36, 0x62, 0x14, 0x8b, 0x08, + 0x61, 0x4e, 0xa3, 0x7e, 0x7a, 0x2e, 0xf8, 0x74, 0x63, 0x44, 0x10, 0x8c, + 0x62, 0x0f, 0x00, 0xd8, 0x60, 0xa8, 0x81, 0x32, 0x60, 0x47, 0x01, 0x5e, + 0x60, 0x40, 0x80, 0x5a, 0x60, 0x25, 0x03, 0x5e, 0x14, 0x07, 0xcc, 0xae, + 0x2c, 0x8c, 0x9b, 0x0c, 0x4c, 0x77, 0x95, 0x0c, 0xe2, 0x03, 0x02, 0xc1, + 0x49, 0x85, 0xc0, 0x71, 0x81, 0xc8, 0x29, 0x11, 0xe0, 0x62, 0xe4, 0x4a, + 0x74, 0x92, 0x64, 0x28, 0x07, 0x89, 0x07, 0x46, 0x17, 0x01, 0xc0, 0x60, + 0x3c, 0x20, 0x06, 0x30, 0xb4, 0x0d, 0x59, 0xa1, 0x50, 0x2e, 0x68, 0xc1, + 0x50, 0xdd, 0x55, 0x91, 0xd5, 0x7e, 0xa0, 0x29, 0x1a, 0x49, 0x41, 0xe1, + 0xa0, 0xf5, 0xd2, 0x86, 0x2e, 0x40, 0xd1, 0xd5, 0x79, 0x4a, 0xdb, 0xcd, + 0xb4, 0x8a, 0x49, 0x24, 0x99, 0xea, 0x5d, 0x6e, 0x84, 0x0c, 0xf0, 0x4a, + 0xed, 0x48, 0x97, 0x0f, 0xd2, 0x04, 0x3d, 0xc5, 0x72, 0xe2, 0xda, 0xfa, + 0xf2, 0x4f, 0xa6, 0xb8, 0x8c, 0x4c, 0x0f, 0xd3, 0xd2, 0x2b, 0x19, 0xdf, + 0xbe, 0x71, 0x52, 0xde, 0xcd, 0xff, 0xfb, 0xd4, 0x60, 0x58, 0x0c, 0xd8, + 0xd0, 0x70, 0x41, 0x03, 0xfd, 0x7b, 0x70, 0x53, 0x8e, 0x08, 0x40, 0x34, + 0x62, 0x6e, 0x19, 0x1d, 0x39, 0x16, 0x6f, 0xf1, 0xeb, 0xc1, 0x45, 0x38, + 0x21, 0x05, 0x00, 0x95, 0xb8, 0xce, 0x59, 0x66, 0x7f, 0x6c, 0xcb, 0x48, + 0x6a, 0xba, 0xc9, 0x0d, 0xb5, 0x9a, 0x0b, 0x0b, 0x1d, 0xaa, 0xdc, 0xe3, + 0x3e, 0x9e, 0xea, 0x3c, 0xdf, 0x71, 0xdd, 0x5e, 0x05, 0x2f, 0xe2, 0x38, + 0x4d, 0x5d, 0x69, 0xdb, 0x24, 0x67, 0x08, 0x0f, 0x54, 0x2f, 0xdf, 0xb8, + 0x3a, 0x8c, 0xe7, 0x02, 0x04, 0x29, 0x63, 0xe5, 0x54, 0xdd, 0x46, 0xc9, + 0x1c, 0x59, 0x62, 0x7a, 0x6b, 0x18, 0xce, 0x1f, 0x5a, 0xf3, 0x3f, 0xc4, + 0xed, 0xb1, 0x2f, 0x48, 0x93, 0xdd, 0xb6, 0x04, 0xf7, 0xcc, 0x0b, 0x3d, + 0xae, 0xa2, 0x35, 0xab, 0x74, 0xdb, 0x1d, 0xb3, 0x71, 0xa1, 0xf8, 0xf1, + 0xe9, 0x06, 0xb1, 0xdb, 0x63, 0xe6, 0xfb, 0xd2, 0x1c, 0xcb, 0x11, 0xe1, + 0xc6, 0xf9, 0x0c, 0x05, 0x38, 0x80, 0xb4, 0x5a, 0x9d, 0x6e, 0xba, 0x2b, + 0x7a, 0xe2, 0xd0, 0xe1, 0x99, 0x17, 0x74, 0xb6, 0x9b, 0x15, 0xfc, 0xaf, + 0x38, 0x85, 0xcc, 0x8a, 0x74, 0xf7, 0xbb, 0x3e, 0x7b, 0xdf, 0xef, 0xdf, + 0xfa, 0x55, 0x95, 0xd5, 0x3f, 0xdd, 0x5d, 0x3d, 0x7d, 0x19, 0xbd, 0x5f, + 0xd1, 0xea, 0xa8, 0x7d, 0xa9, 0xf9, 0x1f, 0x23, 0x2e, 0xf6, 0x57, 0xa1, + 0x7f, 0x99, 0xdb, 0x5d, 0x29, 0xab, 0x15, 0x6d, 0xd9, 0x3c, 0xaa, 0xe5, + 0x33, 0x0c, 0x60, 0xe2, 0x81, 0x20, 0x23, 0x1d, 0x9a, 0x44, 0x14, 0xa4, + 0x10, 0x28, 0x70, 0x6d, 0xb1, 0x12, 0x1a, 0xf8, 0xa0, 0x03, 0x86, 0x05, + 0x98, 0x03, 0x20, 0x00, 0x04, 0x8c, 0x04, 0x50, 0x0a, 0xcc, 0x0a, 0x40, + 0x11, 0x85, 0x85, 0x9d, 0x30, 0x8a, 0x03, 0x6e, 0x37, 0x03, 0x08, 0xc5, + 0x30, 0xf0, 0xc2, 0xe5, 0x30, 0x01, 0xc0, 0x97, 0x18, 0x01, 0x40, 0x98, + 0xca, 0x32, 0x06, 0x1e, 0x2c, 0x02, 0x82, 0xc1, 0x72, 0xf1, 0x66, 0x00, + 0xc4, 0x71, 0xe5, 0xca, 0xeb, 0x55, 0x83, 0x82, 0x50, 0x70, 0x80, 0xc0, + 0xc0, 0x73, 0xac, 0x03, 0x85, 0x83, 0x08, 0xf0, 0xbc, 0x1f, 0xeb, 0xa8, + 0x51, 0x3a, 0xcc, 0x2f, 0x25, 0x64, 0xcc, 0x76, 0xea, 0x33, 0xbc, 0xae, + 0x52, 0x58, 0x5f, 0x7f, 0x1a, 0xc4, 0xfb, 0xa0, 0xde, 0xc0, 0x29, 0xc7, + 0x38, 0xd0, 0x53, 0xa4, 0x15, 0x50, 0x2c, 0xa2, 0xb8, 0x18, 0xcd, 0x08, + 0xb7, 0x84, 0xc4, 0xfa, 0x3d, 0x15, 0x4c, 0x04, 0x53, 0x71, 0xae, 0xcd, + 0x23, 0x5a, 0xc3, 0x0a, 0x19, 0x46, 0x0f, 0x0e, 0xca, 0xcb, 0x27, 0xd9, + 0x5d, 0x39, 0xe2, 0xc9, 0xcd, 0x75, 0x46, 0xa0, 0x49, 0x3e, 0x37, 0x5d, + 0x66, 0xba, 0xd6, 0xad, 0x76, 0xaa, 0xef, 0xeb, 0x5f, 0x1f, 0xef, 0xe6, + 0xdf, 0x7a, 0xa7, 0xd5, 0xf7, 0xaf, 0xfe, 0xbd, 0x31, 0xac, 0xeb, 0x3b, + 0xb5, 0xb7, 0x8d, 0x7f, 0x9b, 0x5b, 0x74, 0x98, 0xd0, 0x91, 0xc2, 0xf7, + 0xf3, 0xdf, 0xdf, 0x4a, 0x37, 0x1e, 0x9d, 0xa0, 0xaa, 0xd0, 0x59, 0x01, + 0x00, 0x14, 0x99, 0x3c, 0xab, 0xbd, 0x99, 0x99, 0xd8, 0xf3, 0x36, 0x67, + 0xb2, 0x9b, 0x9c, 0xb9, 0x9f, 0x13, 0xa3, 0xff, 0x26, 0x53, 0x2f, 0x49, + 0x59, 0x91, 0xcd, 0x73, 0xfb, 0xe9, 0xba, 0xd2, 0xd6, 0xb9, 0x3d, 0x65, + 0xeb, 0xd7, 0x4b, 0xfa, 0xdc, 0x92, 0x7e, 0x89, 0x4b, 0xf6, 0xbc, 0x8f, + 0xe6, 0x57, 0x9b, 0xfc, 0x94, 0xb6, 0x97, 0x5b, 0xad, 0xbe, 0x9b, 0x79, + 0xa5, 0xc8, 0xc5, 0x67, 0xc9, 0x15, 0x64, 0x11, 0x53, 0xb8, 0xd2, 0x10, + 0x28, 0x38, 0x2c, 0x2e, 0x04, 0x30, 0x88, 0xd0, 0xfa, 0x62, 0x0a, 0x6a, + 0x29, 0x99, 0x71, 0xc9, 0xc1, 0x71, 0x92, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x04, 0x80, 0x02, 0x20, 0x0b, 0x4c, 0x01, 0x90, 0x08, 0x4c, 0x0f, + 0x50, 0x06, 0xcc, 0x05, 0xb0, 0x01, 0x8c, 0x06, 0x60, 0x0c, 0xcc, 0x0b, + 0xd0, 0x72, 0x0c, 0x1e, 0x10, 0xee, 0xcc, 0x36, 0xf0, 0xe3, 0x8f, 0x03, + 0x94, 0x4e, 0xcc, 0x4f, 0x40, 0xf4, 0x0c, 0x24, 0xd0, 0x6a, 0x8c, 0x0a, + 0x00, 0x36, 0x4c, 0x0d, 0xd0, 0x0b, 0x0c, 0x04, 0xe0, 0x0b, 0x4c, 0x04, + 0x50, 0x33, 0x0c, 0x4c, 0x05, 0x32, 0x98, 0x44, 0x0c, 0xb0, 0x30, 0xfc, + 0xbc, 0xcb, 0xc0, 0xb2, 0xff, 0x91, 0x04, 0x44, 0x43, 0x51, 0xaa, 0x09, + 0x8b, 0xa6, 0xc7, 0xce, 0x4f, 0x98, 0x48, 0x04, 0x24, 0x04, 0x03, 0x07, + 0x82, 0x00, 0xad, 0xa0, 0x38, 0x27, 0x20, 0x19, 0x04, 0xd0, 0x0b, 0x03, + 0x9f, 0xa7, 0x42, 0x07, 0x14, 0x01, 0xad, 0x66, 0xaa, 0x50, 0x14, 0xbb, + 0x0b, 0xea, 0x9f, 0x95, 0x3b, 0xf3, 0x6e, 0x47, 0xc0, 0xf8, 0xc6, 0xbb, + 0x10, 0x8e, 0xc1, 0x76, 0x69, 0x6f, 0xd0, 0xc2, 0x44, 0x10, 0x86, 0x1c, + 0xf0, 0x7e, 0x4c, 0x60, 0x8b, 0xe5, 0xa6, 0x83, 0x85, 0x63, 0x8d, 0x66, + 0xd3, 0x07, 0x49, 0x63, 0xf9, 0xe3, 0x44, 0xce, 0x22, 0x7c, 0xf2, 0x4c, + 0xcd, 0x74, 0x17, 0x3a, 0xe8, 0xa2, 0xb5, 0x1e, 0x56, 0xc9, 0x39, 0xa1, + 0xb1, 0x8a, 0x94, 0x9a, 0x08, 0x25, 0x9d, 0x49, 0x14, 0x14, 0x9a, 0xec, + 0xb6, 0xad, 0x68, 0x2d, 0x8d, 0xcc, 0x4d, 0x16, 0xaa, 0x54, 0xf6, 0x6a, + 0x74, 0x14, 0xb3, 0xca, 0x5b, 0x1f, 0x55, 0x94, 0x99, 0xbb, 0x59, 0xd9, + 0x74, 0x90, 0xbb, 0x33, 0xbb, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xc7, + 0x8d, 0x70, 0x43, 0x93, 0xfc, 0x6b, 0x70, 0x6a, 0x0d, 0xb8, 0x21, 0x64, + 0x68, 0x6e, 0x23, 0x59, 0xc1, 0x04, 0x0f, 0xf5, 0xed, 0xc1, 0x11, 0x97, + 0xa2, 0xcc, 0x20, 0x0d, 0x34, 0x29, 0x4a, 0xea, 0x45, 0xd5, 0x64, 0x34, + 0x2b, 0x49, 0xd1, 0x5a, 0x48, 0xb2, 0x4c, 0xe9, 0x4c, 0xcc, 0x1c, 0xc8, + 0xc1, 0x02, 0xe0, 0x40, 0x12, 0x93, 0xad, 0x8d, 0xab, 0x3f, 0xfa, 0xc3, + 0x98, 0xef, 0x1c, 0xf9, 0xe0, 0xc9, 0x11, 0x21, 0x17, 0xaa, 0x31, 0xab, + 0xc8, 0x7a, 0xdf, 0x33, 0x3f, 0x7d, 0xaf, 0xef, 0x9f, 0x14, 0xe2, 0xed, + 0x53, 0x51, 0x07, 0xa1, 0x8f, 0x33, 0x73, 0xfb, 0x4e, 0xdc, 0x34, 0xd5, + 0x47, 0x57, 0xf3, 0x37, 0x33, 0x50, 0xbf, 0xc4, 0xc5, 0x3c, 0xd1, 0x3c, + 0xff, 0x57, 0xc6, 0xd2, 0x8d, 0x77, 0x75, 0x5d, 0xf1, 0x3f, 0x5d, 0xc4, + 0xd7, 0x51, 0x75, 0x37, 0xb7, 0xf3, 0x7f, 0x11, 0x1c, 0x72, 0xf6, 0xe9, + 0x5a, 0xfd, 0x3a, 0x54, 0xde, 0x93, 0x1a, 0xf7, 0xff, 0x64, 0xb6, 0x7c, + 0xd1, 0xb7, 0x42, 0xc5, 0x49, 0x23, 0x54, 0x0d, 0x2c, 0xd2, 0xc4, 0x41, + 0x31, 0x80, 0x34, 0x00, 0x51, 0x80, 0x0e, 0x08, 0xd9, 0x83, 0x4a, 0x00, + 0x39, 0x80, 0x82, 0x04, 0x19, 0x80, 0x7c, 0x09, 0x61, 0x82, 0x06, 0x23, + 0x99, 0x99, 0x5a, 0x35, 0x81, 0x84, 0x70, 0x97, 0x99, 0xf2, 0x6d, 0xfc, + 0x41, 0x8e, 0xbe, 0x02, 0x69, 0x8d, 0x5c, 0x17, 0xa9, 0x84, 0x56, 0x0a, + 0xc1, 0x84, 0x08, 0x06, 0x39, 0x81, 0xae, 0x03, 0x81, 0x00, 0x19, 0xa6, + 0x08, 0x00, 0x06, 0x13, 0x36, 0xe2, 0x30, 0x2c, 0xc4, 0xc8, 0x74, 0xcd, + 0x90, 0xc4, 0x08, 0x12, 0x87, 0x05, 0xa6, 0x07, 0x03, 0xa6, 0xe3, 0x02, + 0x66, 0x0e, 0xde, 0x07, 0x24, 0xa8, 0xe6, 0x19, 0x84, 0x0d, 0x4c, 0x38, + 0x8b, 0x31, 0xbc, 0x09, 0x6d, 0x4c, 0x20, 0x00, 0x26, 0x42, 0x81, 0x04, + 0x5c, 0xc0, 0xe0, 0x95, 0x8e, 0x90, 0x01, 0xcf, 0xe0, 0x20, 0x08, 0x05, + 0x02, 0xe4, 0x21, 0x29, 0x40, 0x8a, 0xd9, 0x57, 0x1d, 0x0a, 0x5d, 0x43, + 0x6c, 0xda, 0x91, 0x74, 0xd0, 0xb5, 0xcd, 0x38, 0xb7, 0x5d, 0x96, 0x6c, + 0xa6, 0x30, 0xa6, 0xed, 0xba, 0x28, 0x14, 0xd8, 0x4b, 0xae, 0x4b, 0x56, + 0x78, 0xf9, 0x7d, 0x44, 0x17, 0x43, 0x1e, 0xb5, 0xd9, 0x4c, 0xa4, 0xdd, + 0xdf, 0x9e, 0x6b, 0x85, 0xd2, 0x2a, 0x19, 0xca, 0xea, 0x3a, 0x8e, 0xb0, + 0xbc, 0xb9, 0x52, 0x6a, 0x0c, 0xef, 0x9b, 0x1e, 0xb8, 0xda, 0x3a, 0x71, + 0xcd, 0x7e, 0xef, 0xa1, 0x37, 0x5f, 0x29, 0x4a, 0xbd, 0x7f, 0x02, 0xb9, + 0x88, 0xd6, 0xc2, 0xe6, 0xfe, 0x58, 0xd5, 0x8d, 0x03, 0x70, 0xe7, 0x88, + 0xdf, 0x02, 0xeb, 0xa3, 0xd3, 0x37, 0xaa, 0xee, 0xf3, 0x5a, 0x1e, 0xf3, + 0x7c, 0x40, 0xa4, 0x19, 0x55, 0x4e, 0xbe, 0x6b, 0x34, 0x7e, 0xdb, 0x46, + 0x5a, 0xb5, 0xb7, 0xb5, 0x76, 0xbf, 0x5d, 0xf8, 0x74, 0xa3, 0x7c, 0x78, + 0x35, 0x7f, 0x16, 0x8f, 0x6d, 0x78, 0x5b, 0x97, 0x1e, 0x14, 0x8f, 0x60, + 0x39, 0xee, 0x91, 0x9b, 0x58, 0x1b, 0xa0, 0xbf, 0x8b, 0x5c, 0xdd, 0xeb, + 0xd5, 0x6b, 0x83, 0xd5, 0x3b, 0x65, 0x55, 0xe0, 0x39, 0x6a, 0x20, 0x01, + 0x17, 0xff, 0xff, 0xfc, 0xf8, 0x59, 0xb3, 0x64, 0x65, 0x0c, 0xcb, 0x38, + 0x58, 0xcb, 0x60, 0xc4, 0x1d, 0x28, 0x14, 0x65, 0x18, 0x01, 0x84, 0x2a, + 0x38, 0xa2, 0x16, 0x0c, 0x48, 0xf8, 0xe4, 0x12, 0x1e, 0xf3, 0x02, 0x61, + 0x10, 0x34, 0xe0, 0xf8, 0x0d, 0xad, 0x70, 0xc2, 0xc6, 0x63, 0x14, 0x20, + 0x34, 0x39, 0xfb, 0x19, 0xa2, 0xaf, 0xff, 0xfc, 0x8f, 0x5a, 0xd8, 0xaa, + 0x47, 0x45, 0x56, 0x65, 0x31, 0x05, 0x35, 0x14, 0xcc, 0xb8, 0xe4, 0xe0, + 0xb8, 0xca, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x01, 0x00, 0x36, 0x60, 0x06, 0x01, 0xf6, 0x60, 0x9d, 0x81, 0x22, + 0x60, 0x5e, 0x00, 0xe4, 0x60, 0x7d, 0x80, 0xf2, 0x60, 0xea, 0x02, 0x76, + 0x65, 0xc8, 0x05, 0x0c, 0x61, 0xf5, 0x21, 0xf4, 0x6d, 0x63, 0x7d, 0x32, + 0x62, 0x1e, 0x8c, 0x26, 0x62, 0xa7, 0x81, 0x9c, 0x61, 0x0d, 0x00, 0x6a, + 0x60, 0xa5, 0x81, 0x30, 0x60, 0x3e, 0x00, 0x72, 0x60, 0x07, 0x81, 0xae, + 0x22, 0x00, 0x93, 0x06, 0xa0, 0x19, 0x03, 0x08, 0x19, 0x84, 0x20, 0x15, + 0x03, 0x88, 0xf8, 0x18, 0x06, 0x28, 0x52, 0x60, 0x18, 0x10, 0x00, 0x23, + 0x55, 0x30, 0x83, 0x0a, 0x43, 0x46, 0x70, 0x11, 0x05, 0x06, 0x58, 0xe0, + 0x08, 0x85, 0xc0, 0xbc, 0xc0, 0x9c, 0x06, 0x1f, 0x71, 0xa0, 0x33, 0x83, + 0x8b, 0x9e, 0xce, 0x04, 0x20, 0x4d, 0x25, 0x62, 0xc9, 0xf0, 0x3a, 0x03, + 0x4e, 0x01, 0x28, 0x12, 0x93, 0x01, 0x2b, 0x0b, 0x63, 0xf0, 0x0b, 0x6f, + 0x42, 0xd5, 0xa0, 0xa8, 0x6a, 0x51, 0x04, 0xfc, 0x0d, 0x71, 0xf6, 0x63, + 0x89, 0x39, 0x3d, 0x6b, 0x91, 0xea, 0x52, 0x50, 0xc8, 0x69, 0x2e, 0x21, + 0x9e, 0x21, 0x91, 0x16, 0x1a, 0xae, 0x2d, 0xa9, 0x82, 0x89, 0xdc, 0x71, + 0x68, 0xf1, 0x74, 0x27, 0x29, 0x27, 0x46, 0x54, 0xca, 0x9f, 0xc4, 0xf4, + 0xd2, 0xb7, 0xbc, 0x10, 0x56, 0xa7, 0x14, 0x32, 0xf9, 0x58, 0xd3, 0x6b, + 0x94, 0x75, 0xbd, 0xe5, 0xb6, 0x38, 0x7e, 0xae, 0xd2, 0x0b, 0xc7, 0xb3, + 0x13, 0x71, 0xbe, 0x5b, 0x8e, 0xf8, 0x5a, 0x68, 0xec, 0xb5, 0x3d, 0xce, + 0xb4, 0xe6, 0xac, 0xe8, 0x66, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xc8, + 0x55, 0x6f, 0xc1, 0x83, 0xfe, 0x63, 0x70, 0x61, 0xce, 0x08, 0x42, 0x34, + 0x65, 0x6e, 0x1c, 0xd5, 0xc1, 0x0c, 0x4f, 0xf1, 0x0d, 0xc1, 0x43, 0x17, + 0xa2, 0x0c, 0xd0, 0x99, 0x30, 0x5f, 0xf4, 0x35, 0x11, 0x6a, 0xef, 0x65, + 0xba, 0xd3, 0xfc, 0xfe, 0xd4, 0x75, 0xb7, 0x5a, 0x5b, 0xcf, 0x38, 0xc6, + 0x7c, 0xd6, 0xab, 0x2f, 0x59, 0xa4, 0x0c, 0x4f, 0x41, 0xff, 0x1b, 0x8c, + 0xf4, 0x6a, 0x5e, 0x86, 0x61, 0xa2, 0x3a, 0xc0, 0x7c, 0xfc, 0x77, 0x6d, + 0xc6, 0x5b, 0xa9, 0xd8, 0x37, 0x20, 0x01, 0x98, 0x30, 0x29, 0x54, 0x8b, + 0xab, 0x49, 0x27, 0x53, 0x36, 0x53, 0xd8, 0xa7, 0xf6, 0xc6, 0x97, 0x39, + 0x5c, 0xca, 0x67, 0x9f, 0x0b, 0xf9, 0xa8, 0xcd, 0xe9, 0x73, 0xc8, 0x40, + 0xea, 0x26, 0x1f, 0x17, 0x20, 0xac, 0x85, 0x52, 0x10, 0xe8, 0x3d, 0x11, + 0x92, 0x76, 0x94, 0x82, 0xac, 0x75, 0x76, 0x9d, 0x19, 0x48, 0xcb, 0x44, + 0x5f, 0xa7, 0x4d, 0x57, 0x5a, 0x52, 0xe9, 0x9e, 0xf2, 0xeb, 0x4e, 0xff, + 0xe9, 0x74, 0x27, 0xaa, 0xdf, 0xd8, 0x89, 0xeb, 0x7d, 0x16, 0xba, 0xc9, + 0x63, 0xca, 0xc2, 0xe6, 0x29, 0x21, 0xc4, 0x38, 0xe1, 0xbc, 0x40, 0xe5, + 0x0b, 0x3a, 0x8b, 0xc5, 0x00, 0xe1, 0xa9, 0x64, 0x0c, 0x00, 0xf0, 0x37, + 0x40, 0xc0, 0x27, 0x18, 0x01, 0xc0, 0x18, 0x98, 0x0d, 0xc0, 0x11, 0x18, + 0x11, 0x61, 0x76, 0x18, 0x93, 0x42, 0x05, 0x98, 0x78, 0xe4, 0x5e, 0x9e, + 0x2d, 0x6f, 0xa4, 0x18, 0xb5, 0xc3, 0x13, 0x18, 0x3e, 0x40, 0x9b, 0x18, + 0x1d, 0x60, 0x3e, 0x98, 0x09, 0x40, 0x06, 0x98, 0x00, 0x60, 0x07, 0x98, + 0x06, 0xc0, 0x23, 0x01, 0x8c, 0xc6, 0x0e, 0x74, 0x07, 0x06, 0xcc, 0x29, + 0x1a, 0x32, 0xc8, 0x58, 0x40, 0x1f, 0x7f, 0xc4, 0x4a, 0x01, 0x6d, 0xe1, + 0x87, 0xeb, 0x67, 0xe9, 0x5b, 0x18, 0x8c, 0x26, 0x05, 0x03, 0x98, 0x68, + 0x0e, 0x10, 0x4c, 0x8b, 0x93, 0x03, 0x69, 0x97, 0xa4, 0xd8, 0x84, 0x0f, + 0x28, 0x55, 0x38, 0x75, 0x45, 0xa8, 0x8b, 0x01, 0x35, 0x5b, 0x11, 0x8e, + 0x25, 0x2b, 0x0e, 0x8e, 0x2e, 0xda, 0x66, 0xab, 0x19, 0x60, 0x58, 0x59, + 0xf7, 0x85, 0xc7, 0x71, 0x9e, 0xcb, 0xd3, 0xb2, 0xab, 0x0c, 0x16, 0x06, + 0xe1, 0x08, 0xe0, 0x80, 0x87, 0x38, 0x47, 0x80, 0xf2, 0xc1, 0xa4, 0x4b, + 0x16, 0x58, 0x3c, 0x60, 0x79, 0x6d, 0xa8, 0xfc, 0xd6, 0x1c, 0xb0, 0xce, + 0x3d, 0x95, 0x52, 0xc7, 0x2a, 0xd0, 0xf9, 0x76, 0x82, 0xd9, 0xef, 0x1b, + 0x03, 0x77, 0x16, 0x72, 0xb4, 0x9b, 0x4d, 0x6b, 0x94, 0x19, 0x55, 0x42, + 0x82, 0x92, 0x39, 0x6e, 0x2c, 0x95, 0x84, 0xca, 0x21, 0x15, 0x0c, 0x8e, + 0x1a, 0x6e, 0xd7, 0x8b, 0xaa, 0x1e, 0xe3, 0xa9, 0x79, 0xb6, 0xe6, 0xde, + 0xc8, 0xef, 0x9b, 0xbb, 0x6e, 0x21, 0xd1, 0xea, 0xa4, 0x77, 0x9d, 0x25, + 0x41, 0x71, 0x4d, 0x08, 0x1c, 0x13, 0x03, 0x48, 0x05, 0xcb, 0x1a, 0x20, + 0x0a, 0x29, 0x71, 0x1a, 0xab, 0xe7, 0xac, 0xb2, 0x1f, 0xff, 0xfd, 0x7f, + 0xaf, 0xff, 0xfe, 0x6b, 0xfd, 0x65, 0xec, 0x34, 0xb9, 0x5b, 0xef, 0x18, + 0xc0, 0x3b, 0x66, 0x39, 0x51, 0x92, 0xec, 0x73, 0x9d, 0x25, 0xbd, 0xff, + 0x17, 0xfe, 0xbd, 0x41, 0x47, 0xc6, 0x8b, 0x0b, 0x2c, 0xf1, 0x71, 0x51, + 0xc9, 0x0a, 0x22, 0x7a, 0xb4, 0x9d, 0x65, 0xfb, 0x7c, 0xe3, 0x99, 0x5c, + 0x54, 0x96, 0xae, 0xb5, 0x75, 0x29, 0x4f, 0xf3, 0x6c, 0x10, 0x8a, 0x8c, + 0x12, 0x30, 0x5c, 0x24, 0x55, 0x31, 0x05, 0x35, 0x14, 0xcc, 0xb8, 0xe4, + 0xe0, 0xb8, 0xca, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x01, 0xb8, 0x88, 0x01, 0x9c, 0x88, 0x00, 0x6b, 0x7e, 0x8c, 0x04, + 0x40, 0x02, 0x01, 0x00, 0x0d, 0x94, 0x01, 0x04, 0x63, 0x50, 0x80, 0x10, + 0x61, 0x1f, 0x02, 0x64, 0x71, 0xfa, 0x05, 0xc2, 0x61, 0xec, 0x86, 0xe2, + 0x60, 0x6e, 0x02, 0x66, 0x60, 0x22, 0x80, 0xec, 0x61, 0x84, 0xe6, 0x32, + 0x48, 0x30, 0x70, 0x16, 0x04, 0x31, 0xb2, 0x21, 0xe4, 0x40, 0x2c, 0xd1, + 0x8f, 0x01, 0x0a, 0x00, 0xb6, 0xc3, 0x0d, 0x81, 0x84, 0x26, 0x09, 0x92, + 0x7f, 0x4c, 0x08, 0x01, 0x66, 0xc1, 0x00, 0x82, 0xc2, 0xb1, 0x65, 0x62, + 0xa9, 0x07, 0xfb, 0x24, 0xbb, 0x29, 0xec, 0x91, 0xd5, 0x2a, 0x80, 0xc8, + 0x71, 0x62, 0xad, 0xcd, 0xbc, 0xae, 0xeb, 0x5d, 0x56, 0x2b, 0x0d, 0x76, + 0x2f, 0x7c, 0x51, 0x27, 0x04, 0xed, 0xc5, 0x5f, 0x16, 0x16, 0x98, 0xcf, + 0x26, 0x42, 0x91, 0xe4, 0x56, 0xf6, 0x48, 0x69, 0xc8, 0x29, 0xb7, 0x28, + 0xd4, 0x92, 0x16, 0xe5, 0x8e, 0xb3, 0x0a, 0xb5, 0xb3, 0xc7, 0x90, 0x9f, + 0x5a, 0xbe, 0x95, 0x9b, 0xee, 0xf9, 0xde, 0xb2, 0xdd, 0x6f, 0x9f, 0xf1, + 0xf1, 0xff, 0xd6, 0xbe, 0xb3, 0xf3, 0xf5, 0x7d, 0xfd, 0xee, 0xd9, 0xc6, + 0xf5, 0xe1, 0xf8, 0x95, 0xca, 0x45, 0xe6, 0x1c, 0x59, 0xd6, 0x5a, 0x86, + 0x0c, 0xdd, 0x2c, 0xb8, 0xcb, 0x54, 0xb1, 0x57, 0xd6, 0xa7, 0x1d, 0x2c, + 0x17, 0x13, 0x8c, 0x34, 0x10, 0x00, 0x56, 0x32, 0xf2, 0x26, 0xc8, 0x29, + 0xe9, 0x25, 0x32, 0x45, 0x4b, 0x33, 0xbb, 0xcc, 0x2c, 0x5b, 0x77, 0xd1, + 0xda, 0x4b, 0xab, 0x4b, 0xd2, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xc6, + 0x17, 0x46, 0x45, 0x1b, 0xfb, 0x7a, 0xf0, 0x64, 0x6e, 0x08, 0x31, 0x50, + 0x45, 0x6e, 0x1c, 0x55, 0xc1, 0x0e, 0x4f, 0xf5, 0x6d, 0xc1, 0xf6, 0xb7, + 0xe0, 0xcd, 0x33, 0x19, 0xb8, 0x67, 0x46, 0x55, 0xd2, 0xed, 0xad, 0x0e, + 0xf2, 0x99, 0xa6, 0x62, 0x23, 0x32, 0x32, 0xdc, 0xcd, 0xb5, 0x2c, 0x88, + 0xa7, 0x9f, 0xd1, 0x4f, 0x2f, 0x45, 0xeb, 0x56, 0x23, 0xb2, 0x96, 0x8e, + 0x7b, 0xa6, 0x9b, 0x31, 0x95, 0x91, 0xfa, 0xb2, 0xa2, 0xd5, 0xf3, 0xbf, + 0x77, 0x7b, 0xda, 0xae, 0xb7, 0x64, 0x6a, 0x3a, 0xfd, 0xee, 0xac, 0xe4, + 0xd8, 0xae, 0x3d, 0x2c, 0x8a, 0x43, 0x99, 0x05, 0xc8, 0xe8, 0xa4, 0x17, + 0x11, 0x60, 0x11, 0xd4, 0x58, 0xec, 0x63, 0x07, 0x42, 0x60, 0x01, 0x82, + 0x0a, 0x81, 0x5a, 0x60, 0x2e, 0x00, 0x74, 0x60, 0x17, 0x00, 0x1a, 0x60, + 0x08, 0x00, 0x9c, 0x01, 0x0b, 0xac, 0xc4, 0x92, 0x0e, 0xd8, 0xc2, 0x97, + 0x1a, 0x18, 0xed, 0x1d, 0x65, 0xb4, 0xc5, 0x1e, 0x0d, 0x28, 0xc3, 0x15, + 0x06, 0xb8, 0xc1, 0x64, 0x03, 0x04, 0xc0, 0x57, 0x01, 0xa0, 0xc0, 0x46, + 0x00, 0xec, 0xc0, 0x51, 0x00, 0x4c, 0xc3, 0x60, 0x9c, 0xc1, 0xf2, 0x44, + 0x38, 0x49, 0x30, 0x94, 0x0c, 0x12, 0x46, 0x5a, 0xfa, 0x1b, 0x92, 0x93, + 0xc6, 0x30, 0x82, 0xa6, 0x1c, 0x03, 0xc7, 0x38, 0x03, 0x26, 0x12, 0x00, + 0x00, 0x80, 0x18, 0x12, 0x02, 0x03, 0x81, 0x3b, 0x85, 0x99, 0xb8, 0xe2, + 0xd3, 0x22, 0xb4, 0x1f, 0x73, 0x3b, 0x8b, 0xb0, 0x90, 0x0b, 0x97, 0xcc, + 0x28, 0x4b, 0xea, 0xbf, 0x60, 0x36, 0x18, 0xf0, 0xce, 0xd8, 0x71, 0xab, + 0xe3, 0x83, 0x5b, 0x70, 0x5b, 0xac, 0x2e, 0x0b, 0xc3, 0x96, 0x0a, 0xc9, + 0xe1, 0x80, 0x30, 0x4a, 0x1d, 0xe7, 0x87, 0xd3, 0xa5, 0x27, 0xc8, 0xd4, + 0x6b, 0xdd, 0xcc, 0x88, 0xa7, 0x22, 0xd1, 0xa3, 0xcd, 0xa8, 0x64, 0xb2, + 0xfb, 0x3e, 0xc9, 0x74, 0x5c, 0x96, 0xbd, 0x56, 0x3f, 0xbd, 0x1b, 0xa8, + 0xae, 0x2d, 0xda, 0x97, 0xbe, 0x67, 0xfb, 0x7b, 0x35, 0xce, 0x7d, 0x1d, + 0xb6, 0x5f, 0x6e, 0x86, 0x5b, 0x1b, 0xaf, 0xc4, 0xa9, 0x76, 0xd6, 0xd3, + 0x7d, 0x90, 0xc6, 0x43, 0x5a, 0xee, 0x1d, 0x11, 0x1d, 0xc7, 0xb3, 0x6d, + 0xd7, 0xcd, 0x77, 0x4f, 0x7e, 0x75, 0xd9, 0xeb, 0xb7, 0xb4, 0xd5, 0x7a, + 0xa3, 0xcf, 0x3d, 0xd9, 0xfe, 0x4d, 0xd8, 0x0b, 0x71, 0xa2, 0x00, 0x0c, + 0xf9, 0x26, 0x2e, 0xbc, 0xfa, 0x2b, 0xaa, 0x79, 0x25, 0x57, 0xce, 0xd5, + 0x2d, 0xdf, 0xf5, 0x3b, 0x6b, 0xeb, 0x5e, 0xbb, 0x66, 0xa5, 0xbd, 0x89, + 0xd0, 0x07, 0xec, 0x9d, 0xd8, 0x9c, 0xa0, 0xe4, 0x59, 0x14, 0xf6, 0xcb, + 0x62, 0x04, 0x8e, 0x24, 0x47, 0x00, 0xd3, 0xb4, 0xf0, 0x53, 0x93, 0x64, + 0x63, 0x2e, 0xaf, 0x3a, 0x24, 0xd9, 0x73, 0xd2, 0xf2, 0x73, 0xf5, 0x55, + 0x4d, 0x6e, 0xbd, 0x19, 0x34, 0xe9, 0x22, 0xd5, 0xed, 0x99, 0xff, 0xdd, + 0x69, 0xdf, 0x7f, 0xdf, 0x8d, 0x6f, 0xbd, 0xbf, 0xd6, 0x86, 0xcd, 0xc7, + 0x7a, 0xfb, 0xdf, 0xfc, 0xee, 0xfb, 0xad, 0xf3, 0xf7, 0xff, 0xee, 0x7f, + 0x97, 0xfb, 0xff, 0xe3, 0x1a, 0x19, 0x97, 0x1e, 0x99, 0xaa, 0xeb, 0x50, + 0xa2, 0x93, 0x03, 0x2f, 0x87, 0xd2, 0x76, 0x9d, 0x62, 0x74, 0xb3, 0x74, + 0xf4, 0xc4, 0x14, 0xd4, 0x53, 0x32, 0xe3, 0x93, 0x82, 0xe3, 0x2a, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x05, 0xc0, 0x10, 0x00, 0x02, 0x32, 0x60, 0x7d, 0x01, 0x48, + 0x04, 0x01, 0x64, 0xc0, 0x39, 0x01, 0xb8, 0xc1, 0x2c, 0x08, 0x48, 0xcb, + 0xca, 0x0d, 0x2c, 0xc1, 0x78, 0x4c, 0x04, 0xde, 0x44, 0xef, 0x10, 0xc1, + 0xe6, 0x04, 0x64, 0xc4, 0xba, 0x00, 0x94, 0xc1, 0xf9, 0x00, 0x40, 0xc0, + 0xcc, 0x01, 0x84, 0xc0, 0xb3, 0x01, 0x50, 0xc0, 0x9e, 0x04, 0x04, 0x04, + 0x56, 0x32, 0xb2, 0xcc, 0xc8, 0xe1, 0x93, 0x16, 0xd0, 0x4d, 0xb4, 0x2f, + 0x24, 0x0b, 0x04, 0x14, 0xc0, 0xab, 0x03, 0x89, 0x80, 0x4c, 0x6b, 0xb6, + 0x37, 0x45, 0xa4, 0xc3, 0x82, 0x61, 0xa2, 0xc9, 0x8d, 0xc3, 0x06, 0x2b, + 0x01, 0x07, 0x00, 0x4c, 0x1e, 0x18, 0x57, 0x4a, 0x1c, 0xe4, 0x10, 0x03, + 0x56, 0x32, 0xd3, 0x87, 0x56, 0x1d, 0x8c, 0x85, 0x84, 0xb2, 0x46, 0x54, + 0xbd, 0x5b, 0x1a, 0xe9, 0x7d, 0xa2, 0x31, 0x16, 0xa1, 0x07, 0xaf, 0x57, + 0x73, 0x38, 0xe4, 0x65, 0xc6, 0x61, 0x0c, 0x99, 0xfd, 0xb1, 0x4d, 0x78, + 0xcd, 0x40, 0xf4, 0xb1, 0x3d, 0x9a, 0x37, 0x5c, 0x74, 0xb4, 0xbc, 0xb5, + 0xbb, 0x2e, 0x5a, 0xa1, 0x78, 0x15, 0x2d, 0xac, 0x69, 0x7c, 0x25, 0x55, + 0xf6, 0x8e, 0xed, 0x3b, 0x5a, 0x67, 0x21, 0x3e, 0xa0, 0xa5, 0xd5, 0x2d, + 0x3f, 0x7e, 0xe5, 0xee, 0xc3, 0x8b, 0x79, 0x3a, 0x97, 0xea, 0x8a, 0x18, + 0x21, 0x95, 0x2c, 0x3e, 0xa3, 0x37, 0x72, 0xbe, 0xc7, 0x3d, 0xa7, 0x2d, + 0x2a, 0x69, 0x6a, 0xcb, 0x3f, 0xcc, 0x3c, 0x87, 0x09, 0xf4, 0x27, 0x8c, + 0xfd, 0x90, 0x2b, 0x6c, 0x6e, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xc8, + 0x33, 0x70, 0x41, 0x83, 0xfc, 0x63, 0x70, 0x61, 0xae, 0x08, 0x32, 0x44, + 0x22, 0x6e, 0x24, 0x21, 0xc1, 0x04, 0x0f, 0xf1, 0xed, 0xc1, 0x9d, 0xb7, + 0xe0, 0x81, 0x00, 0x95, 0xb8, 0xcb, 0x5c, 0xab, 0x90, 0x39, 0x6a, 0xee, + 0xb9, 0xd5, 0xca, 0xed, 0xce, 0x32, 0xf9, 0x7d, 0xeb, 0x52, 0x3a, 0x39, + 0xd9, 0x13, 0x5a, 0x7e, 0xfb, 0xab, 0xd7, 0x97, 0x1a, 0x3d, 0x50, 0xf5, + 0x71, 0x74, 0x4b, 0x19, 0x5d, 0x89, 0x2e, 0x4c, 0xe2, 0x53, 0xe7, 0x80, + 0x12, 0x00, 0x15, 0x64, 0x21, 0xe5, 0x3a, 0xdd, 0xd0, 0x52, 0xd3, 0xad, + 0x18, 0x50, 0x52, 0x22, 0x31, 0xed, 0x20, 0x05, 0x26, 0x11, 0xdc, 0x22, + 0x56, 0x72, 0x80, 0x44, 0xf5, 0x9d, 0xb5, 0x56, 0x44, 0x52, 0x0e, 0xe3, + 0x2a, 0x35, 0xdb, 0x29, 0x89, 0x72, 0x15, 0x32, 0x21, 0x59, 0xe9, 0xd6, + 0xd6, 0xa7, 0x22, 0xf5, 0x21, 0x32, 0xa7, 0xdd, 0xb2, 0xcf, 0xb3, 0x32, + 0x33, 0x22, 0x59, 0x5b, 0x79, 0xda, 0x94, 0x6a, 0xb6, 0x4d, 0x3c, 0xd3, + 0x69, 0x64, 0xe4, 0xea, 0xd8, 0x38, 0xe4, 0x57, 0x43, 0xbb, 0x10, 0xec, + 0xae, 0x41, 0x61, 0x45, 0x95, 0x00, 0x45, 0x18, 0xa3, 0x00, 0x9c, 0x2a, + 0x07, 0x7a, 0xcc, 0x02, 0x80, 0x2a, 0x4c, 0x16, 0xc0, 0x01, 0x0c, 0x01, + 0x90, 0x15, 0x8c, 0x06, 0x10, 0x30, 0xc0, 0x82, 0x12, 0x19, 0xc4, 0xe2, + 0x10, 0x99, 0x11, 0x08, 0x0d, 0x1c, 0xf8, 0xdd, 0xcd, 0x98, 0xd4, 0xc3, + 0x19, 0x02, 0x86, 0x39, 0x30, 0x7b, 0x02, 0x32, 0x30, 0x47, 0x00, 0x39, + 0x30, 0x13, 0xc0, 0x51, 0x30, 0x2a, 0x40, 0x93, 0x37, 0x49, 0xe4, 0xcb, + 0xa1, 0x43, 0x2b, 0x87, 0x05, 0x62, 0x66, 0x25, 0x30, 0x98, 0xb4, 0x1a, + 0x21, 0x19, 0x18, 0xb0, 0xe8, 0x68, 0xb3, 0x10, 0x82, 0x54, 0x7f, 0x90, + 0xf1, 0x9a, 0x47, 0xa4, 0x43, 0x40, 0x30, 0x74, 0xc2, 0xa2, 0x53, 0x11, + 0x89, 0xcc, 0x22, 0x15, 0x51, 0x63, 0x0a, 0x00, 0x0c, 0x3c, 0x1a, 0x1e, + 0x12, 0x20, 0xc1, 0x83, 0x81, 0xc6, 0x0c, 0x04, 0x18, 0x08, 0x06, 0x83, + 0x66, 0x05, 0x10, 0x82, 0x82, 0xed, 0x28, 0xc0, 0x80, 0x03, 0x04, 0x81, + 0x52, 0x6d, 0x60, 0x04, 0x00, 0x22, 0xd0, 0x42, 0x53, 0x9c, 0x0c, 0x07, + 0x52, 0x6b, 0x25, 0x2f, 0xd4, 0xbe, 0x5a, 0x9e, 0x89, 0x08, 0xcd, 0x23, + 0xeb, 0xad, 0x6a, 0x1b, 0xa7, 0xf9, 0xae, 0x53, 0xc6, 0x27, 0x07, 0x44, + 0x44, 0x42, 0x51, 0x50, 0x7c, 0xa9, 0xd8, 0xe1, 0x3c, 0x58, 0x77, 0x22, + 0xb5, 0x55, 0x89, 0xe3, 0xce, 0xc1, 0x3b, 0xf7, 0xd0, 0x28, 0xd0, 0xdf, + 0xea, 0xf7, 0x51, 0xf3, 0x48, 0x94, 0x75, 0x5f, 0x11, 0x59, 0xba, 0xb9, + 0x41, 0x8b, 0x48, 0xcd, 0xae, 0x0f, 0xf5, 0x7a, 0x6b, 0x10, 0xf5, 0x36, + 0x36, 0xc9, 0x15, 0xf3, 0xa8, 0xd1, 0x60, 0xab, 0x60, 0xc2, 0x9d, 0xeb, + 0x8d, 0xdf, 0x40, 0x89, 0xb9, 0xad, 0x1f, 0x79, 0xb6, 0x5f, 0xc3, 0x6a, + 0x62, 0xde, 0x63, 0x7b, 0xc4, 0x8b, 0x9b, 0x52, 0x6b, 0xcc, 0xf3, 0x5b, + 0xdd, 0x60, 0x62, 0x0c, 0x9b, 0x89, 0x16, 0x27, 0xc4, 0x08, 0xf7, 0xd5, + 0xb2, 0xf2, 0x14, 0xd1, 0x69, 0xab, 0xe6, 0x93, 0xb6, 0xe2, 0x4c, 0xbd, + 0x9b, 0x50, 0x9c, 0xe3, 0x2b, 0x20, 0x43, 0x53, 0xc2, 0x57, 0xd5, 0xea, + 0x81, 0x0c, 0x00, 0x30, 0x76, 0x95, 0x99, 0x48, 0xad, 0xdc, 0xd0, 0xd5, + 0x3a, 0x67, 0xe0, 0x10, 0x46, 0x44, 0x37, 0x19, 0xdc, 0xc9, 0x58, 0x07, + 0x24, 0x40, 0x14, 0x44, 0x64, 0x53, 0xcf, 0x19, 0x9d, 0xb0, 0x6c, 0x44, + 0x76, 0x7e, 0x9b, 0x3b, 0x59, 0xec, 0xb7, 0x67, 0x54, 0x67, 0xb9, 0x72, + 0x6a, 0xcc, 0xea, 0x64, 0xed, 0x96, 0x57, 0x79, 0x2a, 0xb2, 0xab, 0xa3, + 0x16, 0xcb, 0xb7, 0x59, 0x7a, 0x99, 0xdb, 0x5e, 0xf6, 0x54, 0xf5, 0x72, + 0x29, 0x1d, 0x29, 0x95, 0xac, 0xb7, 0xe8, 0xef, 0x64, 0x18, 0x53, 0x0f, + 0xb1, 0xc4, 0xcc, 0x26, 0x01, 0xb3, 0xb8, 0xb9, 0x04, 0xc4, 0x82, 0x28, + 0x39, 0xc6, 0x84, 0xc0, 0x31, 0xa1, 0x21, 0x21, 0x01, 0xd5, 0x44, 0xc3, + 0x00, 0x00, 0x0e, 0x53, 0x0d, 0x18, 0x0e, 0x43, 0x06, 0x2c, 0x0d, 0x93, + 0x01, 0x24, 0x31, 0x03, 0x0c, 0xf4, 0x88, 0xb3, 0x1a, 0x9d, 0x2c, 0x23, + 0x3e, 0x26, 0x11, 0x63, 0xfe, 0x5f, 0xa2, 0xe3, 0x5f, 0xe0, 0x7b, 0x93, + 0x1b, 0x74, 0x4a, 0xc3, 0x0b, 0x38, 0x08, 0x93, 0x0a, 0x94, 0x2e, 0x83, + 0x05, 0x94, 0x10, 0xa3, 0x06, 0x44, 0x11, 0xe3, 0x0c, 0x79, 0x34, 0xe5, + 0xd3, 0xc2, 0xcf, 0x37, 0xb4, 0x03, 0x02, 0x51, 0x36, 0x48, 0x13, 0x70, + 0x43, 0x30, 0x60, 0x13, 0x4f, 0x64, 0x3a, 0xbd, 0x23, 0xd3, 0x6c, 0x18, + 0x45, 0x33, 0x73, 0x23, 0x21, 0x24, 0x33, 0x92, 0xc0, 0x50, 0xd9, 0x8e, + 0x13, 0x99, 0xb1, 0x59, 0x8e, 0x03, 0x90, 0x88, 0x19, 0x29, 0x91, 0x93, + 0x0c, 0x8b, 0x04, 0x98, 0x28, 0xa1, 0x8b, 0x90, 0x19, 0x28, 0xc2, 0x4d, + 0x18, 0x20, 0xc9, 0x8f, 0x0b, 0x98, 0x90, 0x3b, 0x3d, 0x30, 0x20, 0x93, + 0x0c, 0x09, 0x12, 0x01, 0x4e, 0x63, 0x05, 0x0a, 0x07, 0x03, 0x2a, 0x99, + 0x80, 0x01, 0x97, 0x29, 0x49, 0xb2, 0x92, 0xee, 0xa3, 0xeb, 0xd4, 0x8d, + 0xc8, 0x02, 0x62, 0xd2, 0xa0, 0x34, 0x90, 0xe1, 0x7c, 0x3b, 0xc5, 0x25, + 0x00, 0x48, 0x01, 0xbc, 0xb8, 0x4c, 0x0c, 0x64, 0x79, 0x7a, 0x3c, 0x1c, + 0x50, 0xe4, 0xf3, 0x73, 0x59, 0xb8, 0x79, 0xbf, 0x45, 0xd5, 0x3c, 0x96, + 0x51, 0xb0, 0xd1, 0x22, 0xbc, 0xff, 0xfb, 0xd4, 0x60, 0x63, 0x8d, 0xda, + 0x61, 0x70, 0x3e, 0x83, 0xfb, 0x7b, 0x70, 0x61, 0xed, 0xf8, 0x30, 0x4c, + 0x67, 0x6e, 0x26, 0x99, 0xc0, 0xf6, 0x2f, 0xe9, 0xed, 0xc1, 0x3f, 0x38, + 0x21, 0x48, 0x81, 0x89, 0xb8, 0x69, 0x3a, 0x63, 0x70, 0x39, 0x1b, 0xcf, + 0xc7, 0xec, 0x8b, 0x36, 0x5b, 0x6c, 0x70, 0x2e, 0x8d, 0x2e, 0x6a, 0x9d, + 0x59, 0x3e, 0x5e, 0x4b, 0xfa, 0x30, 0x9e, 0x3d, 0x57, 0xb6, 0x43, 0x50, + 0x51, 0x4c, 0xa1, 0x65, 0x3b, 0x8c, 0x0c, 0xbe, 0x47, 0xb9, 0x46, 0x52, + 0x9d, 0x28, 0x83, 0xcd, 0xb9, 0x75, 0x68, 0xd7, 0x4b, 0xb9, 0xce, 0xe6, + 0xcc, 0x78, 0xad, 0x25, 0xde, 0xc6, 0x3e, 0x21, 0x20, 0xfb, 0x51, 0x7f, + 0x57, 0x6d, 0x91, 0x7d, 0xf1, 0xfc, 0x9e, 0xd5, 0x14, 0x49, 0x34, 0xeb, + 0x93, 0x12, 0x62, 0x02, 0x18, 0xda, 0x94, 0x84, 0xb4, 0xd2, 0x8d, 0x91, + 0x25, 0x44, 0x79, 0xa6, 0xf9, 0xeb, 0x2b, 0x72, 0x12, 0xee, 0x8d, 0x90, + 0x10, 0xb2, 0x78, 0xbe, 0xa9, 0x4b, 0x1f, 0x8a, 0x75, 0xd3, 0x2b, 0x89, + 0x3e, 0x5c, 0x3c, 0x64, 0x42, 0x0b, 0x12, 0x75, 0xcd, 0xc9, 0x42, 0x7f, + 0x1a, 0x4f, 0x02, 0x1e, 0x7d, 0x34, 0x81, 0x34, 0xa0, 0xe9, 0x24, 0x92, + 0x32, 0xe2, 0x6b, 0xa2, 0xa4, 0x1c, 0x57, 0x26, 0x8d, 0x9b, 0x6a, 0xae, + 0x5c, 0x9f, 0xb9, 0xe2, 0xa4, 0xcf, 0xec, 0x39, 0xf6, 0xe4, 0xcc, 0xfc, + 0xcc, 0xc3, 0xd1, 0x2f, 0x5b, 0x24, 0xd7, 0xd2, 0xd6, 0x54, 0x77, 0xe7, + 0xda, 0xbb, 0xdc, 0xc7, 0x5b, 0x9e, 0xb4, 0x57, 0x47, 0x3d, 0x79, 0x9b, + 0x5f, 0x7c, 0xea, 0xab, 0x51, 0xba, 0xbd, 0xdf, 0x6c, 0xfa, 0x7f, 0x30, + 0xf5, 0xa7, 0xf5, 0xaa, 0x2a, 0xae, 0xae, 0x8c, 0xa8, 0x7b, 0x2b, 0xcf, + 0xbc, 0x89, 0xc4, 0x8c, 0x63, 0x07, 0xd4, 0x8c, 0x70, 0x7d, 0x85, 0x68, + 0x18, 0x24, 0x28, 0x2b, 0x66, 0x11, 0x0e, 0x18, 0x41, 0x80, 0x9a, 0x00, + 0xb1, 0x81, 0x14, 0x06, 0x71, 0x88, 0x40, 0x03, 0x59, 0x82, 0xd6, 0x01, + 0xc1, 0x82, 0xc6, 0x06, 0x09, 0x88, 0x18, 0x1d, 0xc1, 0xcc, 0x08, 0x3c, + 0xb9, 0x8a, 0x84, 0x09, 0xb1, 0xa5, 0x5c, 0x07, 0xd9, 0x89, 0xa6, 0x1f, + 0x79, 0x84, 0x4c, 0x02, 0x51, 0x82, 0x82, 0x05, 0x61, 0x80, 0x9c, 0x04, + 0xd9, 0x80, 0x42, 0x01, 0x81, 0x80, 0x04, 0x02, 0x48, 0x04, 0x22, 0x73, + 0x13, 0x01, 0x25, 0x08, 0x84, 0x61, 0x70, 0x09, 0x54, 0x17, 0x83, 0x03, + 0x21, 0xea, 0x6a, 0x46, 0x90, 0xd6, 0x85, 0x92, 0xb3, 0xc9, 0x3b, 0x47, + 0x77, 0x51, 0xbd, 0x44, 0xe9, 0x1d, 0x95, 0x4c, 0xe8, 0xa4, 0x6a, 0x3a, + 0xa2, 0xdb, 0xa4, 0xec, 0x48, 0x69, 0x55, 0x51, 0xfb, 0x79, 0x96, 0x8a, + 0xc0, 0x36, 0xeb, 0xbd, 0xe7, 0x9d, 0x7d, 0xa6, 0xa4, 0x18, 0x43, 0x8e, + 0xf5, 0xc8, 0x94, 0x29, 0x4a, 0x32, 0xf6, 0x9f, 0x43, 0x90, 0x93, 0x89, + 0x52, 0x1f, 0xc5, 0xec, 0x73, 0xb9, 0x25, 0x61, 0xa4, 0xb6, 0xac, 0x46, + 0x87, 0x16, 0x0f, 0xb8, 0x90, 0x4d, 0x34, 0x52, 0xe1, 0xf2, 0x5c, 0xf9, + 0x98, 0xe3, 0x29, 0xc5, 0x21, 0x0a, 0x34, 0x12, 0x05, 0x85, 0x4e, 0x7e, + 0x1b, 0xa5, 0x32, 0x39, 0x48, 0x4e, 0x55, 0x8a, 0x33, 0x15, 0x34, 0xa8, + 0x56, 0x90, 0x54, 0x82, 0x99, 0xbd, 0xd5, 0xce, 0xd3, 0x9d, 0xb9, 0x0c, + 0x30, 0xa3, 0x1c, 0x0a, 0xa7, 0x02, 0x18, 0x4c, 0xf5, 0x04, 0x84, 0x26, + 0x98, 0x22, 0x12, 0x25, 0xd9, 0x41, 0x19, 0x5c, 0x85, 0x93, 0x36, 0xc3, + 0x4d, 0x16, 0x97, 0x35, 0x5b, 0x90, 0x0a, 0xb3, 0xc9, 0x70, 0xf5, 0xc9, + 0x19, 0x15, 0x40, 0x6f, 0x25, 0x59, 0x58, 0x14, 0x07, 0x59, 0x7d, 0x39, + 0x1b, 0x97, 0x2b, 0xa5, 0x03, 0x2a, 0x88, 0xe3, 0x4c, 0xa2, 0x8d, 0xeb, + 0x1c, 0xa6, 0x56, 0x4d, 0x63, 0xda, 0x03, 0x51, 0x7a, 0x1d, 0x91, 0xa2, + 0xb0, 0x27, 0x5c, 0xe1, 0x9f, 0xce, 0x46, 0x01, 0x79, 0x43, 0x4f, 0xf3, + 0xc5, 0x42, 0xac, 0x62, 0xa8, 0xa6, 0x9a, 0xe3, 0x65, 0x1b, 0x0b, 0x04, + 0xc8, 0xd2, 0x2b, 0x10, 0x83, 0x44, 0x2d, 0x26, 0x78, 0xa4, 0x28, 0x8c, + 0xa0, 0xc5, 0x3f, 0x45, 0x71, 0xa9, 0x0c, 0x9d, 0x8d, 0x9e, 0xda, 0xe7, + 0x2d, 0xe7, 0xff, 0x2f, 0xb9, 0x64, 0x73, 0x39, 0xa3, 0xd3, 0x35, 0xbb, + 0xd9, 0x9f, 0x2b, 0x10, 0x50, 0xdc, 0x63, 0xa7, 0x95, 0xf9, 0xef, 0x3d, + 0x08, 0xd6, 0x46, 0x6f, 0x7f, 0xae, 0xad, 0xaf, 0xaf, 0x6b, 0xfe, 0xda, + 0x6e, 0x5d, 0xff, 0xb7, 0xfd, 0x2b, 0xbd, 0xd6, 0xfe, 0x9d, 0x7a, 0x5a, + 0xb6, 0xa7, 0x76, 0xef, 0x4f, 0x65, 0xab, 0x91, 0x5c, 0xca, 0xed, 0x43, + 0x91, 0x55, 0x46, 0x90, 0x53, 0x18, 0xa0, 0x01, 0xc2, 0x02, 0xbb, 0x86, + 0x65, 0x30, 0x35, 0x00, 0x2a, 0x30, 0x04, 0x41, 0xfe, 0x31, 0x0b, 0x81, + 0xf3, 0x30, 0x68, 0x41, 0x04, 0x30, 0x58, 0x81, 0x10, 0x31, 0x26, 0x91, + 0x86, 0x36, 0xb1, 0xd6, 0xad, 0x32, 0x45, 0xc1, 0x2d, 0x34, 0xf7, 0x4f, + 0x47, 0x30, 0xc4, 0x81, 0xcc, 0x30, 0x63, 0xc1, 0x27, 0x30, 0x4e, 0xc0, + 0x9c, 0x30, 0x16, 0xc0, 0x4c, 0x60, 0xa6, 0x00, 0x58, 0x06, 0xe6, 0x00, + 0xc8, 0x05, 0xa0, 0xc0, 0x0c, 0xcb, 0x92, 0x64, 0x1f, 0x31, 0x05, 0x68, + 0x06, 0x87, 0x30, 0x52, 0x4c, 0xf0, 0xa2, 0xde, 0x09, 0x44, 0x12, 0x00, + 0xa6, 0x2f, 0x12, 0x61, 0xa1, 0xf3, 0xd6, 0xc6, 0x57, 0x0a, 0x82, 0x85, + 0x84, 0x37, 0x07, 0x89, 0xde, 0x70, 0x10, 0xe0, 0xba, 0x1f, 0x57, 0xd1, + 0x7c, 0x33, 0x58, 0xe5, 0x33, 0xff, 0xfb, 0xd4, 0x60, 0x38, 0x00, 0x09, + 0xfe, 0x6f, 0xbd, 0x05, 0x7f, 0x40, 0x00, 0x54, 0x2e, 0x08, 0x41, 0xa6, + 0x88, 0x00, 0x23, 0xe2, 0x0b, 0x0e, 0x19, 0xfd, 0x80, 0x01, 0x7f, 0x40, + 0xe1, 0x43, 0x1a, 0x20, 0x01, 0xd0, 0xfc, 0xa7, 0x4a, 0xb2, 0xb0, 0x26, + 0x06, 0xbf, 0x21, 0x6a, 0x04, 0x9e, 0xed, 0x29, 0x95, 0x30, 0xb9, 0x33, + 0x94, 0xc4, 0x57, 0x35, 0x2a, 0xec, 0x4a, 0xc6, 0x20, 0xdc, 0xdd, 0x56, + 0x33, 0x4a, 0xdf, 0x52, 0xc4, 0x5d, 0x86, 0xd6, 0x1d, 0x7f, 0x15, 0x23, + 0xe3, 0x0c, 0x3d, 0x4f, 0x54, 0x89, 0xc0, 0x69, 0xce, 0xb3, 0x6e, 0xe5, + 0x3c, 0xd1, 0xb8, 0x7b, 0xf3, 0x8f, 0xb2, 0x27, 0x36, 0x27, 0x02, 0xb3, + 0x98, 0x69, 0xbb, 0xbf, 0x12, 0xba, 0xf1, 0x07, 0x72, 0x53, 0x20, 0x8a, + 0xd7, 0x66, 0xf1, 0x87, 0xfe, 0x9b, 0x52, 0x17, 0xe2, 0x1b, 0x7b, 0xe0, + 0x86, 0x29, 0x44, 0xfa, 0x52, 0xcb, 0x1f, 0x5f, 0x86, 0x61, 0x73, 0x0e, + 0x23, 0x12, 0xb7, 0x01, 0x4a, 0xdd, 0xb8, 0x7d, 0xda, 0x7c, 0x71, 0x87, + 0x5c, 0x5d, 0x3a, 0x4f, 0x1b, 0x73, 0x97, 0x46, 0x2a, 0xc4, 0x21, 0xa9, + 0x0c, 0xcc, 0x49, 0xbb, 0x57, 0x66, 0xca, 0xe9, 0x38, 0xa8, 0xe3, 0xcf, + 0xfb, 0xbf, 0x15, 0x96, 0xd3, 0xbe, 0xf2, 0xb7, 0xd5, 0xae, 0x3b, 0x74, + 0x53, 0x76, 0x5f, 0xb9, 0x0c, 0xa5, 0xc1, 0xa9, 0x0d, 0x43, 0x52, 0x67, + 0x2e, 0xec, 0x1a, 0xc4, 0xa6, 0x6a, 0xd2, 0xbc, 0x54, 0xac, 0x26, 0x03, + 0x70, 0x1d, 0x49, 0xd7, 0xfa, 0x76, 0x54, 0xf6, 0x37, 0xec, 0xba, 0xa4, + 0x35, 0x9c, 0xa2, 0xeb, 0x3a, 0x5d, 0xf1, 0x3a, 0x07, 0xa5, 0x87, 0xab, + 0xa5, 0xaf, 0x4a, 0xb8, 0x1b, 0x00, 0xd0, 0x08, 0x3d, 0xc0, 0x08, 0x63, + 0x74, 0xdd, 0x68, 0x5d, 0x04, 0xae, 0xa7, 0x52, 0x49, 0x3c, 0xf9, 0xa4, + 0x2a, 0xab, 0x1d, 0xea, 0xf9, 0x0d, 0x47, 0xca, 0x9b, 0xba, 0xab, 0x29, + 0xe5, 0x75, 0xd8, 0xfa, 0xa5, 0xdb, 0x9d, 0xd3, 0x7b, 0x2f, 0xdd, 0xe5, + 0xf7, 0xd7, 0x7a, 0x27, 0xfd, 0xf4, 0x5f, 0x5d, 0xe8, 0x94, 0xa7, 0x77, + 0xca, 0xa9, 0x66, 0x76, 0xba, 0xec, 0x9f, 0xda, 0xfa, 0xf4, 0xf9, 0x7d, + 0x1f, 0x32, 0x5b, 0x6d, 0x55, 0x50, 0xa4, 0x39, 0x11, 0xcc, 0xc1, 0xc5, + 0xd1, 0xc5, 0x22, 0x9c, 0x88, 0x70, 0x4a, 0xc6, 0x08, 0x60, 0x2c, 0x80, + 0xd2, 0x60, 0x63, 0x84, 0x22, 0x60, 0x2b, 0x01, 0x9e, 0x60, 0x5b, 0x89, + 0x0a, 0x60, 0x1e, 0x01, 0xa6, 0x61, 0x8d, 0x8f, 0xc6, 0x63, 0x8f, 0x86, + 0x18, 0x60, 0xf6, 0x01, 0x16, 0x62, 0xa0, 0x8c, 0x68, 0x62, 0x62, 0x83, + 0x16, 0x62, 0x36, 0x87, 0xfc, 0x63, 0xe6, 0xa0, 0x66, 0x60, 0x01, 0x80, + 0x3c, 0xae, 0x4c, 0x15, 0x20, 0x87, 0x8c, 0x19, 0xe0, 0x26, 0x0d, 0xde, + 0xb5, 0x83, 0xcc, 0x30, 0x10, 0x73, 0x19, 0x0a, 0x65, 0x9f, 0xf5, 0xe1, + 0xb4, 0x16, 0x1b, 0x04, 0x29, 0xbd, 0x1f, 0xb9, 0x7c, 0xb8, 0x84, 0x06, + 0x2c, 0x54, 0x65, 0xc2, 0x06, 0x98, 0x76, 0x65, 0xf3, 0x86, 0x6d, 0x5b, + 0x15, 0x8f, 0x4f, 0xb3, 0xf3, 0x1c, 0x08, 0x5c, 0xa6, 0x68, 0x10, 0x64, + 0x2a, 0x21, 0x40, 0x7c, 0xb9, 0x73, 0xb8, 0xa9, 0x7c, 0x45, 0x61, 0xde, + 0x76, 0x76, 0x38, 0x0c, 0x5a, 0x96, 0xf1, 0x04, 0xce, 0x8d, 0xbd, 0xdf, + 0xc3, 0x19, 0x87, 0x1f, 0x8e, 0x5c, 0x6e, 0x65, 0xfb, 0x78, 0x95, 0xd4, + 0x91, 0x9d, 0x49, 0xdd, 0x2c, 0xaf, 0x52, 0x5a, 0xc2, 0xc5, 0x5a, 0x6b, + 0x97, 0xe5, 0x11, 0x8c, 0x6c, 0x39, 0x55, 0xe3, 0x52, 0x78, 0x26, 0x25, + 0xf7, 0x33, 0xd5, 0xfa, 0x0c, 0xf5, 0x63, 0x1c, 0x27, 0x3e, 0x31, 0x67, + 0x3a, 0x90, 0xce, 0x71, 0x99, 0x6d, 0x2d, 0x9c, 0x25, 0x3d, 0xee, 0xef, + 0x6a, 0x59, 0x86, 0x1d, 0xd5, 0x2e, 0x15, 0x35, 0x62, 0xad, 0x5c, 0xee, + 0x63, 0x0e, 0xea, 0x66, 0xbd, 0x37, 0x37, 0x2a, 0xce, 0x55, 0xcb, 0x39, + 0x65, 0x86, 0xe9, 0x2c, 0xe5, 0xff, 0x9d, 0xff, 0xd7, 0x6e, 0x67, 0x5a, + 0x93, 0x0d, 0x76, 0xa5, 0x8b, 0x37, 0xf2, 0xca, 0xdf, 0x2d, 0x5a, 0xd6, + 0x57, 0xb0, 0xdf, 0x2a, 0xeb, 0x1f, 0xcb, 0xbf, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x37, 0x85, + 0x5e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x69, 0x6a, 0x5d, 0xab, 0x44, 0x2b, 0xc4, 0x8c, 0x48, + 0xad, 0x19, 0xb1, 0x5c, 0xdd, 0x99, 0xd9, 0xdd, 0xc8, 0xcc, 0x43, 0x3b, + 0xa5, 0xab, 0x64, 0x04, 0x7e, 0x7a, 0x9e, 0x9d, 0xd5, 0xbb, 0x1e, 0x88, + 0x4e, 0xa4, 0x47, 0xd2, 0xa8, 0xad, 0xc8, 0xd4, 0x74, 0xab, 0xa2, 0x21, + 0x95, 0xef, 0xb4, 0xa8, 0xd7, 0x46, 0xb2, 0x3b, 0xd8, 0xe7, 0xb4, 0x8b, + 0x52, 0x4a, 0xe7, 0xab, 0xe5, 0x2b, 0x21, 0x2f, 0xef, 0x9d, 0x49, 0x7a, + 0x3a, 0xaa, 0x35, 0xd9, 0x4c, 0xc9, 0x44, 0xaa, 0x3b, 0x3a, 0xa5, 0x32, + 0x23, 0x1e, 0x85, 0x74, 0x56, 0x72, 0x10, 0x6f, 0xff, 0xff, 0xff, 0x4b, + 0x93, 0xff, 0xff, 0xff, 0xe5, 0x04, 0x08, 0x7a, 0x01, 0x38, 0x80, 0x00, + 0xc0, 0x2e, 0x00, 0x50, 0xc0, 0xb3, 0x00, 0x10, 0xc3, 0x4a, 0x24, 0xa0, + 0xcd, 0xac, 0x0f, 0x68, 0xc2, 0x25, 0x05, 0xc8, 0xc0, 0x89, 0x04, 0xf4, + 0xc3, 0xbe, 0x03, 0x7c, 0xc0, 0xea, 0x00, 0x78, 0xc0, 0x88, 0x11, 0x1c, + 0xc0, 0x74, 0x01, 0xe4, 0xc1, 0x2e, 0x12, 0xb4, 0xc6, 0xde, 0x2a, 0xe4, + 0xd3, 0xf0, 0xac, 0x48, 0xc8, 0xff, 0xfb, 0xd4, 0x60, 0x1c, 0x8c, 0xc8, + 0x04, 0x70, 0x44, 0x9f, 0x7e, 0xa0, 0x00, 0x51, 0xee, 0x08, 0x62, 0xe6, + 0x88, 0x00, 0x20, 0x05, 0xc1, 0x0a, 0x0f, 0xf5, 0x2d, 0xc1, 0x12, 0x14, + 0x22, 0x0c, 0xd0, 0x89, 0x30, 0xe3, 0x1e, 0x88, 0xc5, 0x47, 0x0b, 0x98, + 0xc1, 0xd7, 0x04, 0x88, 0xc0, 0x9b, 0x00, 0xfc, 0xc0, 0x70, 0x02, 0x9c, + 0x0d, 0x0a, 0xfc, 0x03, 0x7d, 0x0e, 0xc0, 0xc2, 0x42, 0xb0, 0x31, 0x13, + 0x58, 0x24, 0x35, 0x00, 0x23, 0x20, 0x18, 0x00, 0x2c, 0x02, 0xc0, 0x00, + 0x84, 0x3c, 0x06, 0x38, 0x31, 0x82, 0xe4, 0xe0, 0x30, 0x10, 0x4c, 0x5b, + 0x42, 0xde, 0x42, 0xc5, 0x83, 0xdf, 0x09, 0x80, 0x86, 0x44, 0x12, 0x04, + 0x80, 0x32, 0x04, 0x0c, 0x3a, 0x00, 0x16, 0xe2, 0x00, 0x60, 0x3b, 0x84, + 0x4c, 0x46, 0x02, 0x70, 0x23, 0x47, 0x38, 0x63, 0x0a, 0x24, 0x90, 0xca, + 0x13, 0x44, 0x78, 0xcb, 0x90, 0x61, 0x63, 0x20, 0xe4, 0xc8, 0xd9, 0x22, + 0x65, 0xe2, 0xf1, 0x38, 0x45, 0xca, 0xa4, 0xd9, 0x01, 0x22, 0x42, 0x75, + 0x1c, 0xf1, 0xf4, 0x60, 0x5c, 0x50, 0xca, 0x90, 0xc3, 0x44, 0xa9, 0x19, + 0x1f, 0x40, 0xf2, 0x47, 0x0b, 0xeb, 0x34, 0x33, 0x4c, 0xd5, 0x03, 0xca, + 0xa3, 0x73, 0x7b, 0x29, 0xd4, 0x8d, 0xd6, 0xa5, 0x26, 0x8d, 0x74, 0xd4, + 0x95, 0x1b, 0x54, 0x8d, 0x9a, 0xa5, 0x7d, 0x15, 0xb3, 0xd9, 0x94, 0xa6, + 0x5e, 0xca, 0x4d, 0x6b, 0xd9, 0x24, 0xb5, 0x3b, 0xa6, 0xb5, 0x6e, 0xdd, + 0x6b, 0x5d, 0x91, 0x5a, 0x36, 0xec, 0x85, 0x56, 0x77, 0x45, 0xdb, 0x53, + 0x3b, 0xa4, 0xb5, 0xbb, 0x33, 0xa0, 0xb4, 0x5d, 0x68, 0x2c, 0xce, 0x89, + 0xc0, 0x3f, 0x50, 0x00, 0xa0, 0x3e, 0x81, 0xe5, 0x2a, 0xab, 0x57, 0x45, + 0x6f, 0x6d, 0xee, 0xf5, 0xc8, 0xde, 0xbf, 0xef, 0xf6, 0xee, 0xcd, 0x6a, + 0xba, 0x2b, 0xdd, 0x27, 0x44, 0x30, 0x46, 0xa8, 0x33, 0x15, 0xd1, 0x9f, + 0x51, 0xd8, 0xee, 0x4b, 0x29, 0x12, 0x93, 0xfd, 0xd6, 0x8b, 0xa5, 0x6e, + 0x8c, 0xd9, 0xd1, 0x1b, 0x6a, 0x6c, 0xff, 0xaf, 0xfd, 0xfe, 0xd6, 0xea, + 0x9d, 0x69, 0x5e, 0xdd, 0x2c, 0xf5, 0xd7, 0xd1, 0x16, 0xba, 0x5c, 0x14, + 0xa1, 0x9c, 0x97, 0x0a, 0x93, 0x3a, 0x32, 0x31, 0xd4, 0x48, 0xe6, 0x01, + 0x58, 0x16, 0x46, 0x03, 0x88, 0x2e, 0xe6, 0x07, 0x03, 0x81, 0xc6, 0x86, + 0x09, 0x66, 0xa6, 0x03, 0x90, 0x42, 0x86, 0x03, 0x48, 0x45, 0xc6, 0x07, + 0x78, 0x41, 0x66, 0x05, 0xd8, 0x41, 0x26, 0x2d, 0xb8, 0x91, 0x06, 0x0c, + 0x78, 0x0a, 0xe6, 0x04, 0x08, 0x50, 0x06, 0x16, 0xc1, 0x32, 0xe7, 0x68, + 0xbf, 0x6c, 0xa6, 0x23, 0xb0, 0x95, 0xe6, 0x01, 0x10, 0x2d, 0x86, 0x6c, + 0x1e, 0x66, 0x4c, 0x88, 0x86, 0x29, 0x0c, 0x26, 0x71, 0xe0, 0x26, 0x89, + 0x14, 0x23, 0x43, 0x91, 0x84, 0x0c, 0x01, 0x8f, 0x60, 0x80, 0x08, 0xa4, + 0x30, 0xd8, 0x14, 0x30, 0x98, 0x14, 0x30, 0xe8, 0x17, 0x31, 0x78, 0xdf, + 0x32, 0xc8, 0xae, 0x05, 0x07, 0xee, 0x61, 0x86, 0xa0, 0x1a, 0x7a, 0x98, + 0x14, 0x03, 0x18, 0x0c, 0x0c, 0xa9, 0x71, 0x28, 0x14, 0x30, 0x44, 0x0c, + 0x80, 0x50, 0x7a, 0x1b, 0xba, 0xaf, 0xb0, 0x84, 0x0f, 0x54, 0x55, 0xd8, + 0xdd, 0x67, 0x6d, 0xe5, 0x6e, 0x36, 0xeb, 0x32, 0x87, 0xe6, 0x3b, 0x05, + 0x59, 0x90, 0xbf, 0x70, 0x2c, 0xa2, 0x7e, 0x0e, 0x13, 0x10, 0x1b, 0x3e, + 0xc0, 0x32, 0xf6, 0x1e, 0xa2, 0x63, 0x4a, 0x26, 0xba, 0x29, 0xcc, 0xbe, + 0x94, 0xba, 0x52, 0xe7, 0x34, 0x0a, 0xcf, 0x55, 0x63, 0x29, 0x40, 0x8a, + 0xea, 0x54, 0xde, 0x96, 0xac, 0x6d, 0x8f, 0xd1, 0x7b, 0xd8, 0xfa, 0x6e, + 0xd7, 0xfb, 0x1a, 0xf5, 0x86, 0x52, 0x84, 0x67, 0x7b, 0x25, 0x61, 0x2b, + 0xb4, 0xa9, 0x44, 0xf6, 0x10, 0x83, 0x37, 0x7f, 0x31, 0x99, 0xdd, 0xa4, + 0xdb, 0x49, 0xc6, 0xa2, 0xbb, 0xfc, 0x66, 0x9d, 0xde, 0x41, 0x29, 0x56, + 0x55, 0x4a, 0xb6, 0x1d, 0xbe, 0xbe, 0x29, 0x0c, 0x97, 0xba, 0xd8, 0xa1, + 0x8d, 0x6b, 0x68, 0x9b, 0x75, 0xb1, 0x36, 0xb6, 0x0e, 0x62, 0xe0, 0xa9, + 0x80, 0xb9, 0xf0, 0x0a, 0xb1, 0x22, 0x03, 0x75, 0x91, 0x64, 0x5d, 0xdb, + 0x05, 0x03, 0xff, 0x95, 0x9c, 0xdf, 0xff, 0xfd, 0xbb, 0x33, 0x6d, 0x76, + 0x6d, 0xc5, 0x5c, 0x48, 0xc0, 0x27, 0x1c, 0xb0, 0xc0, 0x87, 0x53, 0xa7, + 0xc2, 0x01, 0x51, 0xc1, 0x93, 0x67, 0x13, 0xc5, 0x93, 0x66, 0x91, 0x65, + 0x39, 0xa3, 0xe6, 0xed, 0xf6, 0xa3, 0xa6, 0x2e, 0xdf, 0xf4, 0x7e, 0xcb, + 0xc8, 0x2c, 0x60, 0x29, 0x0a, 0x18, 0x0c, 0x0f, 0x36, 0x76, 0x01, 0x00, + 0x38, 0x80, 0x00, 0xc0, 0x3b, 0x01, 0x48, 0xc0, 0x96, 0x01, 0x44, 0xc2, + 0x45, 0x2b, 0x40, 0xd2, 0xe7, 0x06, 0xc4, 0xc1, 0x59, 0x00, 0xd0, 0xc0, + 0x72, 0x03, 0xfc, 0xc2, 0x0f, 0x02, 0xd8, 0x0c, 0x05, 0x49, 0x89, 0x7c, + 0x07, 0xa9, 0x80, 0xd2, 0x04, 0xb1, 0x81, 0x94, 0x03, 0xd9, 0x82, 0x86, + 0x10, 0x51, 0xc6, 0x34, 0xde, 0x51, 0x86, 0x8a, 0x0c, 0x71, 0x81, 0xe4, + 0x08, 0x69, 0x8f, 0xdb, 0xc6, 0x32, 0x1a, 0x98, 0x51, 0x14, 0x6b, 0xa9, + 0x39, 0xad, 0x41, 0x60, 0xe0, 0xe8, 0x5e, 0x1c, 0x64, 0x10, 0x69, 0x83, + 0x81, 0x46, 0x2a, 0x02, 0xb0, 0x42, 0x40, 0xf9, 0x82, 0x81, 0xc7, 0x8c, + 0x27, 0x0b, 0x11, 0x07, 0x00, 0x2c, 0x13, 0x14, 0x93, 0x30, 0x38, 0x1a, + 0x1a, 0x87, 0x0c, 0x82, 0x5b, 0xa7, 0x76, 0x97, 0x2b, 0x7e, 0xfa, 0xb2, + 0x95, 0x63, 0x89, 0xc3, 0x36, 0xff, 0xfb, 0xd4, 0x60, 0x3f, 0x0c, 0xc6, + 0xf6, 0x6c, 0x45, 0x1b, 0xfc, 0x53, 0x72, 0x4c, 0x6d, 0xb8, 0x51, 0x4c, + 0x22, 0x6e, 0x5d, 0xd9, 0xc1, 0x10, 0x4f, 0xf5, 0x6d, 0xc1, 0x09, 0x13, + 0x22, 0x0c, 0xd0, 0x95, 0x28, 0x6a, 0x63, 0x31, 0x72, 0x95, 0x6a, 0xbb, + 0x50, 0xa5, 0xf9, 0x02, 0x4a, 0x60, 0x38, 0xed, 0x04, 0x15, 0xa0, 0xbc, + 0x00, 0x50, 0x5c, 0x0f, 0x84, 0x28, 0x08, 0x08, 0x11, 0x12, 0x36, 0x71, + 0x02, 0x0d, 0xe2, 0x48, 0xb5, 0x21, 0x61, 0xf2, 0x2a, 0xa9, 0xa8, 0xe7, + 0x0c, 0xc7, 0x50, 0x8c, 0xe5, 0x3d, 0xea, 0x5c, 0x86, 0xf5, 0x66, 0x4d, + 0xd5, 0x6f, 0x4b, 0xba, 0x73, 0x5a, 0xf4, 0x46, 0x6d, 0x1a, 0xf4, 0xa3, + 0xba, 0xbd, 0x59, 0x1d, 0x6e, 0x8b, 0x7a, 0xf3, 0xf7, 0xfc, 0xfe, 0xbe, + 0x8b, 0xa3, 0x32, 0x6a, 0xc8, 0xf3, 0x8d, 0xae, 0x85, 0x26, 0x97, 0x63, + 0x11, 0xc8, 0xd5, 0x08, 0xef, 0x5c, 0x70, 0x01, 0xb7, 0x8c, 0x9a, 0x29, + 0x2d, 0x34, 0x99, 0xaa, 0xd4, 0xd0, 0x51, 0x4a, 0x70, 0xc9, 0x7b, 0x19, + 0x77, 0x5f, 0x33, 0x7e, 0x89, 0x42, 0x7a, 0x5f, 0x5f, 0x75, 0xbf, 0xab, + 0x32, 0x11, 0xcc, 0x44, 0x43, 0x2f, 0xf6, 0xfd, 0xd6, 0xe5, 0xbe, 0x6d, + 0x2d, 0xf5, 0xf5, 0xed, 0xda, 0xb5, 0xfe, 0xdd, 0x34, 0xb2, 0x68, 0x7b, + 0x2a, 0xdf, 0x4e, 0x8f, 0xd3, 0xfb, 0xb3, 0xad, 0x50, 0xcd, 0x9c, 0xe5, + 0x20, 0x31, 0x07, 0x08, 0x61, 0x73, 0x90, 0x04, 0x65, 0x06, 0x80, 0x48, + 0x01, 0x80, 0x76, 0x00, 0x51, 0x81, 0x70, 0x03, 0x91, 0x86, 0x5e, 0x12, + 0x41, 0xb3, 0x2e, 0x0a, 0x61, 0x83, 0x82, 0x00, 0x81, 0x81, 0x68, 0x06, + 0x91, 0x81, 0x3e, 0x00, 0x59, 0x80, 0x2e, 0x02, 0x21, 0x8c, 0x6a, 0x0e, + 0x89, 0x83, 0xac, 0x03, 0x19, 0x83, 0x12, 0x0c, 0xb1, 0x87, 0x20, 0x25, + 0x09, 0xed, 0x46, 0x68, 0x49, 0x8b, 0xdc, 0x15, 0x19, 0x85, 0x26, 0x07, + 0xe1, 0x92, 0x47, 0xd9, 0x11, 0xb4, 0x60, 0x70, 0xb4, 0x63, 0xc4, 0x50, + 0x64, 0x58, 0x6c, 0x2c, 0x07, 0x00, 0x16, 0x43, 0x3b, 0x41, 0x83, 0x07, + 0x03, 0xa3, 0x10, 0x04, 0xf0, 0x30, 0x76, 0x34, 0x27, 0x18, 0x3e, 0x91, + 0x19, 0x78, 0x54, 0x98, 0x28, 0x05, 0x10, 0x81, 0xa9, 0x08, 0xc1, 0x00, + 0x41, 0x48, 0x08, 0x1d, 0x57, 0x0b, 0xe0, 0xc6, 0xe1, 0xd4, 0x88, 0x57, + 0x4e, 0x15, 0x52, 0x7a, 0x1b, 0xe6, 0xf0, 0x88, 0x0e, 0x87, 0x56, 0x52, + 0x40, 0x53, 0x3e, 0xad, 0x02, 0x48, 0xf4, 0xaf, 0x7b, 0x7c, 0x95, 0xcf, + 0x46, 0x60, 0x89, 0x0d, 0x89, 0xa9, 0xe1, 0x14, 0x31, 0x5a, 0x80, 0xa0, + 0x42, 0xc9, 0xe4, 0xf6, 0x94, 0x9b, 0x17, 0x9a, 0xbc, 0xf3, 0xce, 0xa6, + 0xf2, 0x7b, 0x35, 0x6a, 0x2a, 0xd6, 0xfd, 0xcf, 0x98, 0x6c, 0xbd, 0xcf, + 0xba, 0xfb, 0xb6, 0x6e, 0xa7, 0xb6, 0x21, 0x79, 0x98, 0xa9, 0x51, 0xcf, + 0x9e, 0x5f, 0x0d, 0x84, 0x5d, 0x3d, 0x57, 0x11, 0x5b, 0x2f, 0xbb, 0xaa, + 0x96, 0xd7, 0x3d, 0x7c, 0xd4, 0xc3, 0xaf, 0xb8, 0xe9, 0xd1, 0x7d, 0x73, + 0x55, 0xf3, 0x11, 0xdd, 0xcf, 0x73, 0x1f, 0xcd, 0xdf, 0x73, 0x75, 0xf7, + 0x2f, 0x89, 0x37, 0x75, 0xd2, 0xf5, 0x27, 0xdb, 0xae, 0x00, 0x56, 0x24, + 0x40, 0x0d, 0x21, 0x94, 0xa6, 0x4a, 0xeb, 0xb4, 0x93, 0xf9, 0x16, 0x5f, + 0xff, 0xff, 0xfa, 0xe5, 0x6f, 0xd3, 0x35, 0x58, 0xc7, 0x1c, 0x38, 0x10, + 0x68, 0xb0, 0xf0, 0xf1, 0x30, 0x54, 0x24, 0x29, 0x3d, 0x73, 0x54, 0x28, + 0xb6, 0x05, 0xe4, 0xe9, 0xb0, 0x54, 0x8f, 0x25, 0xbc, 0xa7, 0x6e, 0x5b, + 0xdb, 0xb7, 0xff, 0xd9, 0xc3, 0xcf, 0x78, 0x60, 0x71, 0x60, 0x64, 0x60, + 0xf3, 0xc2, 0x64, 0xa6, 0x20, 0xa6, 0xa2, 0x99, 0x97, 0x1c, 0x9c, 0x17, + 0x19, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x02, 0x90, 0x03, 0x00, 0x0c, 0x01, 0x93, 0x01, 0x98, 0x0c, 0x43, + 0x08, 0xec, 0x91, 0xf3, 0x49, 0x9c, 0x29, 0x03, 0x04, 0x64, 0x06, 0xd3, + 0x01, 0x90, 0x18, 0x13, 0x06, 0xf8, 0x0e, 0xe3, 0x01, 0x50, 0x10, 0x93, + 0x12, 0xd8, 0x3d, 0x00, 0x80, 0x44, 0x8c, 0x15, 0x20, 0x04, 0x8c, 0x2f, + 0xd0, 0x10, 0xcf, 0x02, 0x86, 0x51, 0xcc, 0xa6, 0xf0, 0x4a, 0x0c, 0x1d, + 0x80, 0x08, 0xcc, 0x75, 0x03, 0x0c, 0x5c, 0x07, 0x0c, 0x59, 0x16, 0xcc, + 0xe5, 0x36, 0x8c, 0xae, 0x0a, 0x8c, 0x05, 0x03, 0x47, 0x50, 0xa2, 0x2a, + 0x18, 0xc1, 0x20, 0xc0, 0xc2, 0x61, 0x4d, 0x5a, 0x0c, 0x07, 0x08, 0x0c, + 0x6b, 0x1d, 0x0e, 0x15, 0x1b, 0x4c, 0x19, 0x04, 0x0c, 0x00, 0x00, 0xd2, + 0x35, 0x3a, 0x4c, 0x27, 0x01, 0x09, 0x40, 0x74, 0xba, 0x11, 0x82, 0x46, + 0x1f, 0x26, 0x09, 0xc8, 0xb0, 0x6c, 0x0e, 0x5c, 0xfe, 0x15, 0x40, 0xa6, + 0x3d, 0x48, 0xe9, 0x2d, 0xd9, 0x65, 0x25, 0x2c, 0x46, 0x19, 0x5f, 0x12, + 0xf8, 0x6a, 0x45, 0x0d, 0x43, 0x2b, 0xe6, 0x29, 0x2e, 0xa5, 0x87, 0x8c, + 0x47, 0x68, 0x4c, 0xd8, 0x44, 0x21, 0x49, 0xab, 0xd1, 0x41, 0x24, 0xc9, + 0x3d, 0x24, 0x4d, 0x59, 0x4a, 0x92, 0xd4, 0xad, 0x65, 0xd2, 0x2f, 0x7d, + 0xb9, 0xd6, 0xc6, 0xc9, 0xb6, 0xbf, 0x33, 0x11, 0xcf, 0xec, 0xdb, 0xdf, + 0x17, 0x52, 0xea, 0x22, 0xa4, 0xd9, 0x66, 0xee, 0x98, 0xdf, 0x65, 0xc6, + 0xdb, 0xb9, 0xe3, 0xe7, 0xbe, 0xf7, 0x7f, 0x3c, 0xb1, 0xd3, 0xdd, 0xd5, + 0x4b, 0x3b, 0xfe, 0x6d, 0xb1, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xe7, + 0x7d, 0x70, 0x44, 0x93, 0xfd, 0x5b, 0x70, 0x66, 0x0d, 0xf8, 0x32, 0x48, + 0x25, 0x6e, 0x1f, 0x65, 0xc1, 0x10, 0x4f, 0xf1, 0xad, 0xc1, 0xa9, 0xb8, + 0x20, 0xc9, 0x40, 0x95, 0xb8, 0x7f, 0xf7, 0xff, 0x3b, 0x7e, 0xde, 0xf7, + 0xf3, 0x33, 0xd4, 0xca, 0xaa, 0xc5, 0xc4, 0x35, 0xd7, 0xba, 0x0e, 0x24, + 0xa8, 0x04, 0x80, 0x00, 0x7e, 0x87, 0x38, 0xd2, 0x8a, 0x68, 0x29, 0x4c, + 0xa4, 0x34, 0x00, 0x40, 0x11, 0x91, 0x99, 0x29, 0xae, 0x42, 0x9a, 0x82, + 0xac, 0x4b, 0x0a, 0x05, 0x1d, 0x1b, 0x9d, 0xa9, 0x48, 0x22, 0x20, 0x57, + 0x47, 0x59, 0x9c, 0x5a, 0x28, 0xe4, 0x2a, 0x2a, 0x0e, 0x44, 0x7b, 0x08, + 0x2a, 0xb2, 0x22, 0xed, 0x64, 0xb7, 0x56, 0x4e, 0x97, 0xaa, 0xb4, 0xf7, + 0xd5, 0xb5, 0x7e, 0x8d, 0xed, 0x46, 0xb5, 0xfa, 0xaf, 0x4c, 0xee, 0x92, + 0xd1, 0xeb, 0x95, 0x5e, 0x94, 0x5f, 0x2b, 0x4f, 0x9d, 0xd7, 0x32, 0x28, + 0xd7, 0x17, 0x18, 0x47, 0x38, 0x81, 0x54, 0xf0, 0x46, 0x0e, 0x0b, 0x09, + 0x89, 0x80, 0x41, 0xf7, 0x11, 0x28, 0x60, 0x04, 0x14, 0x01, 0x74, 0xc0, + 0x16, 0x04, 0x10, 0xc1, 0x89, 0x3d, 0x34, 0xcc, 0x4f, 0x0d, 0xc0, 0xc0, + 0x85, 0x02, 0x84, 0xc0, 0x32, 0x07, 0xd8, 0xc0, 0xa1, 0x07, 0x24, 0xc0, + 0x58, 0x06, 0x00, 0xc1, 0x87, 0x18, 0x8c, 0xc0, 0xa7, 0x01, 0x5c, 0xc1, + 0x5b, 0x02, 0xac, 0xc3, 0x28, 0x15, 0x58, 0xf1, 0x63, 0xdd, 0x60, 0xca, + 0x04, 0x06, 0x40, 0xc1, 0xf1, 0x02, 0xfc, 0xd2, 0xd0, 0xc3, 0x2c, 0x96, + 0x4c, 0xbc, 0x66, 0x32, 0x3f, 0x44, 0xc5, 0x02, 0x30, 0x20, 0x18, 0xc1, + 0x2f, 0x03, 0xe3, 0x82, 0x08, 0x06, 0xc6, 0x0e, 0x1d, 0x91, 0x29, 0x4c, + 0x74, 0x18, 0x02, 0x41, 0x4f, 0xb6, 0xac, 0x2a, 0x02, 0xd1, 0x60, 0x00, + 0x0a, 0x9b, 0x31, 0xe0, 0x3c, 0xc3, 0x62, 0xc4, 0x85, 0x49, 0x13, 0x71, + 0xa1, 0xc3, 0x9c, 0x28, 0x8c, 0x82, 0x92, 0x7a, 0xc4, 0xa1, 0x07, 0xb2, + 0xed, 0x94, 0xd7, 0x83, 0x29, 0xa5, 0x91, 0xbb, 0x29, 0x5b, 0x33, 0x29, + 0x65, 0x52, 0x88, 0xcb, 0xf9, 0x4b, 0xa9, 0xfc, 0x04, 0x71, 0x4c, 0x38, + 0x94, 0x06, 0x80, 0xe6, 0x97, 0xd3, 0x1e, 0xe4, 0xb0, 0xfa, 0x4a, 0x24, + 0x49, 0x0f, 0x13, 0x74, 0x49, 0x03, 0x43, 0x01, 0xd8, 0x50, 0x63, 0x13, + 0x44, 0xd2, 0x49, 0x23, 0x22, 0x69, 0x3c, 0xf2, 0x69, 0x28, 0x7a, 0xbb, + 0xa9, 0xd1, 0x5b, 0x99, 0x68, 0x33, 0xea, 0x74, 0x56, 0xa9, 0xf4, 0x54, + 0x61, 0x45, 0x66, 0xac, 0xc8, 0x3b, 0xad, 0xe9, 0x29, 0x5d, 0x76, 0x76, + 0x74, 0x91, 0x41, 0x07, 0x49, 0xd4, 0x9b, 0xdd, 0xcf, 0xea, 0xae, 0x9d, + 0x49, 0x1b, 0x4d, 0x94, 0xce, 0xce, 0xa5, 0xbb, 0x57, 0x75, 0xa9, 0x05, + 0xb5, 0x69, 0xf4, 0x13, 0x5a, 0xd1, 0xd9, 0x8d, 0x5d, 0xd1, 0x49, 0x4a, + 0x51, 0xbb, 0x22, 0x5c, 0x3e, 0x7a, 0x40, 0x00, 0x74, 0xc2, 0xb4, 0x3c, + 0x5c, 0x34, 0x3e, 0xeb, 0x75, 0xa3, 0x45, 0xec, 0x41, 0x73, 0x32, 0x01, + 0x46, 0x4d, 0x51, 0x17, 0x22, 0xb6, 0xf9, 0x46, 0x8e, 0x51, 0x15, 0x03, + 0x02, 0x48, 0x28, 0x22, 0x84, 0x8a, 0xa9, 0xca, 0x2f, 0x62, 0x33, 0x30, + 0x89, 0xde, 0x74, 0x61, 0x47, 0x21, 0xe3, 0x1d, 0xd1, 0xd5, 0xf7, 0xb8, + 0xa3, 0x59, 0x9b, 0x3d, 0xb5, 0x72, 0x75, 0xba, 0x3b, 0x49, 0x69, 0x8c, + 0xec, 0x4e, 0x9d, 0x9b, 0xdf, 0xaa, 0x50, 0x8c, 0x84, 0xfb, 0x6e, 0x92, + 0x31, 0x2d, 0xb2, 0x9a, 0x5d, 0x5c, 0x74, 0x69, 0xc4, 0xd1, 0x62, 0x07, + 0x3b, 0x90, 0xa3, 0x45, 0x85, 0x85, 0x5c, 0xc8, 0x1f, 0x94, 0x64, 0x5c, + 0x4c, 0x81, 0x6a, 0x03, 0xa6, 0x20, 0xa6, 0xa2, 0x99, 0x97, 0x1c, 0x9c, + 0x17, 0x19, 0x2a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x00, 0xf4, 0x03, 0x01, 0x00, 0x33, 0x30, 0x17, 0x08, 0xe0, 0x2d, + 0x75, 0x98, 0x92, 0x11, 0x41, 0x81, 0x90, 0x2d, 0x98, 0x29, 0x84, 0xf9, + 0x86, 0x78, 0x5d, 0x18, 0x43, 0x83, 0xc9, 0x92, 0x0a, 0x00, 0x18, 0x37, + 0x01, 0x21, 0x83, 0x30, 0xaa, 0x18, 0x84, 0xa5, 0xe9, 0xac, 0x05, 0x97, + 0x69, 0x8b, 0xe6, 0x1b, 0x49, 0x81, 0xa4, 0x07, 0x41, 0x81, 0x02, 0x08, + 0x09, 0x80, 0x84, 0x02, 0x71, 0x80, 0x5e, 0x00, 0xc9, 0x80, 0x9c, 0x02, + 0xb9, 0x10, 0x16, 0x4f, 0x88, 0x5c, 0x04, 0xc0, 0x10, 0x55, 0xc6, 0x00, + 0xb8, 0x00, 0xc6, 0x00, 0x18, 0x00, 0x81, 0xc0, 0x12, 0x83, 0x80, 0x3d, + 0x30, 0x15, 0x00, 0xb9, 0x30, 0x50, 0x80, 0x8c, 0x07, 0x00, 0x3a, 0xd6, + 0x8b, 0x92, 0xc6, 0x0c, 0x01, 0x50, 0x06, 0x82, 0x00, 0x21, 0x5e, 0xa5, + 0x40, 0x01, 0x4c, 0x04, 0x80, 0x4b, 0x4c, 0x05, 0x30, 0x03, 0xd6, 0x81, + 0x7f, 0xe4, 0x91, 0x07, 0x88, 0xc4, 0x71, 0x5c, 0x02, 0x2d, 0xda, 0x89, + 0x9d, 0xbd, 0x88, 0x22, 0xe8, 0xf5, 0x87, 0x5e, 0xba, 0xd3, 0x23, 0xe5, + 0xc1, 0x87, 0x45, 0xc1, 0x44, 0x94, 0xdb, 0xd2, 0xf4, 0xa5, 0x57, 0x4f, + 0xac, 0x17, 0xa7, 0xac, 0x8f, 0x62, 0xc1, 0xa3, 0xac, 0x2e, 0x5b, 0x65, + 0x67, 0x58, 0xcc, 0x27, 0x3d, 0xe7, 0x18, 0xc2, 0xaa, 0xde, 0xd5, 0x87, + 0x9c, 0xf8, 0x01, 0xa6, 0x0b, 0xbe, 0x40, 0x48, 0x5b, 0x3d, 0xa0, 0x6a, + 0x8a, 0x01, 0x47, 0xce, 0xa6, 0xf4, 0xd8, 0x61, 0x6d, 0xdb, 0x85, 0xd1, + 0xed, 0xa6, 0xde, 0x4c, 0x58, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xc7, + 0x0a, 0x37, 0x45, 0x93, 0xdf, 0x7a, 0xe0, 0x62, 0x6e, 0x08, 0x31, 0x4c, + 0x45, 0x6e, 0x1b, 0x40, 0xd9, 0x18, 0x6f, 0x7d, 0xeb, 0x81, 0xcb, 0xb8, + 0x20, 0x89, 0x81, 0xa1, 0xb8, 0x55, 0x21, 0xa1, 0x73, 0xe6, 0xc7, 0x00, + 0x2f, 0xb1, 0xf2, 0x3e, 0x11, 0x3e, 0xc5, 0x2a, 0x49, 0x1c, 0xb3, 0xb5, + 0xda, 0x66, 0x31, 0x44, 0xdd, 0x17, 0x57, 0x3f, 0xe5, 0xba, 0x9e, 0xf6, + 0x7a, 0x5d, 0x9c, 0x43, 0x95, 0x77, 0x47, 0xb9, 0x1a, 0xdb, 0xc5, 0x4c, + 0xa8, 0xcc, 0x64, 0xa5, 0x55, 0x6e, 0xc5, 0x8b, 0x75, 0x4d, 0x6a, 0x5b, + 0xf6, 0x74, 0xd1, 0x9d, 0x1a, 0x88, 0xe8, 0xc8, 0x62, 0x16, 0xee, 0xbb, + 0xa4, 0xd4, 0xee, 0x7f, 0xef, 0x95, 0x5a, 0xf6, 0xbe, 0xc8, 0xfd, 0xab, + 0x32, 0xd1, 0xdf, 0x4e, 0xa4, 0x39, 0x99, 0xf4, 0x63, 0x12, 0xc7, 0x30, + 0xa8, 0xe1, 0xe2, 0x6a, 0xe8, 0x90, 0x9b, 0x4e, 0x1d, 0x16, 0x09, 0x20, + 0x98, 0x00, 0xb8, 0x40, 0x06, 0x03, 0xc0, 0x4a, 0x60, 0x5a, 0x09, 0x86, + 0x13, 0x50, 0x82, 0x6e, 0x20, 0x2c, 0xc6, 0x0e, 0xc0, 0x92, 0x38, 0x04, + 0x06, 0x23, 0x00, 0x90, 0x60, 0xf8, 0x15, 0x86, 0x5c, 0xc4, 0xb6, 0x4c, + 0x1e, 0xc6, 0x02, 0xc2, 0x7a, 0x60, 0x8a, 0xa0, 0xc6, 0x12, 0x46, 0x2a, + 0x86, 0x08, 0xb0, 0x5a, 0x46, 0x02, 0x08, 0x21, 0xe6, 0x02, 0xf0, 0x14, + 0xc6, 0x01, 0x48, 0x0a, 0x26, 0x00, 0x30, 0x04, 0x26, 0x00, 0x20, 0x22, + 0xc0, 0xe0, 0x0c, 0x88, 0x80, 0x05, 0x30, 0x02, 0x40, 0x1b, 0x30, 0x47, + 0x40, 0x06, 0x07, 0x00, 0x5c, 0x60, 0x06, 0x80, 0x54, 0x18, 0x01, 0xf9, + 0x80, 0x02, 0x00, 0x09, 0x80, 0x3c, 0x02, 0x31, 0x82, 0xe0, 0x01, 0xd8, + 0x70, 0x02, 0x0b, 0xf8, 0x0c, 0x00, 0xa3, 0xf4, 0x00, 0x00, 0xbc, 0x02, + 0x00, 0x8a, 0x00, 0x81, 0xa0, 0x07, 0x18, 0x0e, 0x00, 0x7f, 0x01, 0x80, + 0x76, 0x50, 0x16, 0xd2, 0x1b, 0xb8, 0xbc, 0x4f, 0xa5, 0xc3, 0xb4, 0x39, + 0x8d, 0x5c, 0xab, 0xfc, 0x6e, 0x63, 0x07, 0x0b, 0x96, 0xde, 0x6e, 0x34, + 0x6b, 0xcc, 0xad, 0x68, 0x70, 0x28, 0x25, 0xc4, 0x12, 0xb2, 0x75, 0x63, + 0x1b, 0x7b, 0xe1, 0xe9, 0x7a, 0xd8, 0xc7, 0x24, 0x73, 0x95, 0x6b, 0x2c, + 0x70, 0x18, 0xda, 0x9a, 0xe1, 0xbf, 0x41, 0xff, 0xbc, 0xdd, 0xee, 0x33, + 0xbd, 0xe2, 0x1f, 0x7b, 0x02, 0x3d, 0x71, 0x7a, 0x1b, 0x76, 0xd5, 0xd5, + 0xb6, 0x79, 0x05, 0xdd, 0xff, 0xad, 0x69, 0x6d, 0x1e, 0xbd, 0xb5, 0x81, + 0x9c, 0x44, 0x70, 0x05, 0xa0, 0x07, 0x29, 0x67, 0x53, 0x61, 0x62, 0xcd, + 0xdb, 0x18, 0xdf, 0x98, 0xe6, 0xf3, 0xac, 0xd1, 0xc0, 0xa2, 0x94, 0xae, + 0x47, 0x6c, 0xe9, 0x93, 0x73, 0x22, 0x27, 0xf3, 0xe7, 0x18, 0x98, 0x94, + 0x8e, 0x52, 0xa6, 0xf9, 0x2e, 0xcb, 0x9e, 0x86, 0x49, 0xba, 0x54, 0x8c, + 0xb2, 0xe4, 0x52, 0x94, 0x50, 0xbc, 0x62, 0x8c, 0x83, 0x2c, 0xfa, 0x5e, + 0xe2, 0xee, 0xd6, 0x91, 0xe9, 0x6c, 0xa4, 0x97, 0x6b, 0xfe, 0xff, 0xe6, + 0x3f, 0x95, 0xab, 0x9b, 0xe1, 0x38, 0x8d, 0x1f, 0xbe, 0x3b, 0x9e, 0xba, + 0x7e, 0xfe, 0xa5, 0xe7, 0xff, 0xfa, 0xfa, 0xe2, 0xa6, 0x96, 0xa2, 0xbb, + 0xa4, 0x8d, 0xb6, 0xcc, 0x87, 0x33, 0xae, 0x92, 0x29, 0x8b, 0x84, 0x92, + 0x18, 0x57, 0xb9, 0x28, 0x22, 0x31, 0x0a, 0x52, 0xc4, 0x34, 0xc4, 0x14, + 0xd4, 0x53, 0x32, 0xe3, 0x93, 0x82, 0xe3, 0x2a, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x01, 0x6f, 0xec, 0x60, 0xb6, 0x21, 0x00, 0x34, 0x60, 0xc4, 0x4f, + 0x66, 0x8f, 0x00, 0x98, 0x60, 0x58, 0x01, 0x26, 0x01, 0xe0, 0xbc, 0x60, + 0x0e, 0x0d, 0x66, 0x02, 0x60, 0x38, 0x62, 0xe6, 0x0c, 0x86, 0x06, 0x80, + 0x12, 0x60, 0x9e, 0x0c, 0x06, 0x12, 0x43, 0xe2, 0x64, 0xc7, 0xa9, 0xae, + 0x60, 0xe5, 0x02, 0x8a, 0x60, 0x56, 0x80, 0x90, 0x87, 0x10, 0xa8, 0x00, + 0x02, 0x80, 0x05, 0x8d, 0x00, 0x6e, 0x3c, 0x01, 0xea, 0xf6, 0x19, 0x00, + 0xac, 0x30, 0x0b, 0x64, 0x5a, 0x2c, 0xf0, 0xd0, 0x04, 0x69, 0x46, 0x60, + 0x00, 0x80, 0x7c, 0x60, 0x13, 0x80, 0x5e, 0xaf, 0xad, 0x2e, 0x7a, 0x72, + 0x50, 0x01, 0x92, 0x5a, 0x96, 0x90, 0xc0, 0x2f, 0x01, 0x00, 0x30, 0x03, + 0xc9, 0x74, 0x4b, 0x58, 0xbc, 0x39, 0x8c, 0x99, 0x1e, 0x15, 0x88, 0xef, + 0x0b, 0xc0, 0x0e, 0x6a, 0x73, 0x12, 0x23, 0x49, 0xea, 0xe7, 0x7a, 0x4d, + 0xa5, 0x9c, 0x0f, 0x64, 0xaa, 0xe0, 0x20, 0x4a, 0xc8, 0x2d, 0xa8, 0xb8, + 0x4a, 0x76, 0xaa, 0xb9, 0x87, 0x54, 0x46, 0x05, 0x3e, 0x23, 0x37, 0x4f, + 0x2e, 0x60, 0xbd, 0xbc, 0xf1, 0x9b, 0x5c, 0xe4, 0x81, 0x9f, 0x23, 0x73, + 0xcb, 0x57, 0x76, 0xbe, 0x31, 0x0f, 0x5f, 0x7b, 0xf5, 0xdf, 0xfa, 0xf8, + 0xfe, 0xb0, 0x2c, 0x55, 0x95, 0x92, 0x30, 0xa5, 0xaa, 0xf1, 0x5d, 0xa7, + 0x50, 0x03, 0x68, 0x00, 0x68, 0x82, 0x0f, 0x04, 0xb9, 0x51, 0xd2, 0x2e, + 0x20, 0xf5, 0x56, 0xb9, 0xcd, 0xca, 0x4a, 0x63, 0x43, 0xfb, 0xfb, 0xe5, + 0x8d, 0x22, 0x6c, 0x88, 0x91, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xc5, + 0xff, 0x3f, 0xc9, 0x1b, 0xdf, 0x7a, 0xe0, 0x5f, 0x8e, 0x08, 0x42, 0x50, + 0x22, 0x6e, 0x1d, 0x2d, 0xc1, 0x12, 0x4f, 0xf1, 0x6d, 0xc2, 0x2f, 0xb8, + 0x1f, 0xc1, 0xb3, 0x21, 0xb8, 0x1c, 0x8b, 0x58, 0x26, 0x43, 0x98, 0x97, + 0x12, 0xac, 0x51, 0x25, 0x73, 0x9e, 0x73, 0xaa, 0xd6, 0x00, 0x8a, 0x1d, + 0x6c, 0x65, 0x73, 0xca, 0xcc, 0x73, 0x4c, 0x9b, 0x5a, 0xea, 0x8d, 0x6b, + 0xfa, 0xd9, 0xf7, 0xa7, 0xb3, 0x22, 0xd7, 0xef, 0xf2, 0xad, 0x1f, 0x65, + 0xfe, 0xf6, 0x42, 0x33, 0xe4, 0xbb, 0x5f, 0x57, 0x9c, 0xcd, 0x8e, 0x73, + 0xd8, 0x31, 0x4a, 0x35, 0x51, 0x91, 0x42, 0x80, 0x40, 0xd8, 0xe5, 0x40, + 0x60, 0x3e, 0x80, 0x60, 0x0a, 0x00, 0x16, 0x60, 0x33, 0x80, 0x6e, 0x60, + 0xd9, 0x03, 0xb2, 0x68, 0x3c, 0x00, 0xa4, 0x02, 0x06, 0x74, 0xc0, 0x2f, + 0x06, 0x24, 0xc2, 0x0b, 0x05, 0x10, 0xc0, 0x07, 0x02, 0x2c, 0xc4, 0x6a, + 0x04, 0xd0, 0xc1, 0x6d, 0x01, 0x10, 0xc1, 0x62, 0x03, 0x14, 0xc3, 0x71, + 0x06, 0x28, 0xe8, 0x6e, 0xa2, 0x18, 0xcc, 0x7f, 0x05, 0xf0, 0xc2, 0x7e, + 0x01, 0xec, 0xd9, 0x68, 0x53, 0x61, 0x01, 0x4c, 0x5a, 0x07, 0x30, 0x94, + 0xdc, 0xc3, 0x40, 0x07, 0xf8, 0xc0, 0x8c, 0x13, 0x47, 0x89, 0x81, 0xc1, + 0x23, 0x0e, 0x84, 0x04, 0x8c, 0x4d, 0x0c, 0xc8, 0xa6, 0x63, 0xd7, 0x9e, + 0x03, 0x09, 0xca, 0x34, 0x42, 0x00, 0xb2, 0x01, 0x0d, 0x98, 0x18, 0x02, + 0x95, 0xa0, 0x80, 0xc9, 0x89, 0x28, 0x66, 0x8a, 0x0d, 0xcb, 0x8b, 0x93, + 0x6d, 0xfd, 0x4a, 0x97, 0x9e, 0x03, 0x61, 0xaa, 0xc3, 0x20, 0xb3, 0x85, + 0x47, 0x08, 0xbf, 0x52, 0x9c, 0x9e, 0x69, 0x34, 0xd5, 0x8a, 0x6e, 0x3b, + 0x3b, 0x3a, 0x4e, 0x27, 0x1b, 0x81, 0x41, 0x06, 0xc3, 0x82, 0x31, 0xa9, + 0x14, 0x3d, 0x24, 0xa8, 0x02, 0x9d, 0xa3, 0xa5, 0xd2, 0x3a, 0x96, 0x27, + 0x26, 0x93, 0x0f, 0x22, 0x6a, 0xa8, 0xf9, 0x77, 0x67, 0x68, 0xa4, 0xf4, + 0x29, 0x6e, 0x73, 0xd1, 0x6d, 0xcb, 0xcf, 0xf6, 0xed, 0xcf, 0xaf, 0x9b, + 0x4e, 0x6b, 0xe2, 0xa6, 0x3d, 0xad, 0x7f, 0xd4, 0xc7, 0x3f, 0xec, 0xf9, + 0xea, 0xfd, 0xd7, 0x1d, 0xf7, 0x1c, 0xdf, 0x1c, 0x7c, 0xc7, 0x3f, 0xd7, + 0xdf, 0x3c, 0x75, 0xc5, 0xf1, 0xd7, 0xfc, 0xdd, 0x3e, 0x63, 0x98, 0xde, + 0xcb, 0x7b, 0xd9, 0x6c, 0x48, 0xd4, 0x5c, 0x55, 0x3d, 0x22, 0x78, 0xdb, + 0xca, 0x86, 0x9e, 0x37, 0x76, 0x77, 0x3b, 0xf9, 0x55, 0x37, 0x4f, 0xc5, + 0xb1, 0xd7, 0x68, 0xbd, 0x3a, 0xff, 0x36, 0xd1, 0x30, 0x0a, 0x76, 0x59, + 0x5b, 0x58, 0xf6, 0xf8, 0x83, 0xf8, 0xee, 0x42, 0xcf, 0x7c, 0xb8, 0xae, + 0x7f, 0x1b, 0xc4, 0xa4, 0xaf, 0x67, 0xf5, 0x30, 0x54, 0x63, 0xe5, 0xb9, + 0x4b, 0x56, 0x96, 0x6b, 0x61, 0x5a, 0x55, 0x86, 0xbb, 0x99, 0x76, 0x41, + 0x59, 0xb3, 0x22, 0x14, 0x7f, 0x66, 0xaf, 0x4a, 0x2d, 0xd3, 0xa0, 0xe4, + 0xef, 0x6a, 0x8b, 0x49, 0x2e, 0xfa, 0x3d, 0xdb, 0x77, 0x84, 0x83, 0x4b, + 0x75, 0xa4, 0x71, 0x41, 0xf7, 0x11, 0xac, 0xc2, 0xeb, 0x65, 0xc0, 0xcb, + 0x8d, 0x23, 0x74, 0xbb, 0x42, 0x60, 0x99, 0x29, 0x09, 0x17, 0x50, 0xb8, + 0xeb, 0x11, 0x01, 0xe1, 0xd4, 0xa5, 0x82, 0x91, 0xe2, 0x00, 0x7c, 0x48, + 0x86, 0x70, 0x37, 0xc2, 0x70, 0x52, 0x53, 0x80, 0x40, 0x80, 0x0b, 0x02, + 0x22, 0x02, 0x62, 0x0a, 0x6a, 0x29, 0x99, 0x71, 0xc9, 0xc1, 0x71, 0x95, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x21, 0xdb, 0x11, 0x21, 0x90, 0x18, 0x12, 0x82, 0x49, 0x87, 0x71, + 0xde, 0x1c, 0x72, 0x05, 0xb9, 0x83, 0x60, 0x10, 0x18, 0x0a, 0x83, 0x51, + 0x89, 0x50, 0x10, 0x16, 0x03, 0x80, 0xc1, 0xec, 0x1f, 0xcc, 0x18, 0x41, + 0x30, 0xc0, 0x8b, 0x01, 0x24, 0xc1, 0xb4, 0x01, 0xa8, 0xd7, 0xa9, 0x12, + 0x4c, 0xc4, 0x46, 0x03, 0x68, 0xc0, 0xff, 0x01, 0x34, 0xc0, 0x78, 0x00, + 0xc8, 0xc0, 0x45, 0x00, 0x6c, 0xc0, 0x1c, 0x00, 0x60, 0xc0, 0x32, 0x00, + 0x58, 0x04, 0x02, 0x7a, 0xc2, 0x15, 0x00, 0x4f, 0x7f, 0x19, 0x12, 0xb1, + 0x31, 0xd5, 0xba, 0x20, 0x00, 0xa4, 0x80, 0x01, 0xe5, 0xd2, 0xb4, 0x94, + 0x1e, 0x96, 0x01, 0x66, 0xf7, 0x1d, 0xe3, 0xa5, 0x4b, 0xf7, 0x14, 0xbf, + 0x7a, 0xdc, 0x45, 0x71, 0xcc, 0xb4, 0x88, 0x7e, 0x7a, 0x9a, 0x51, 0xa8, + 0xea, 0x70, 0x40, 0x14, 0x0c, 0xf6, 0x52, 0xff, 0x33, 0x7a, 0x4a, 0xb1, + 0x2a, 0x2d, 0x51, 0xcf, 0x4a, 0x1e, 0xa7, 0x9e, 0xd5, 0x1c, 0xb6, 0xfc, + 0xb6, 0x41, 0xab, 0xd1, 0x6d, 0x55, 0xc3, 0xea, 0xcc, 0xda, 0xd5, 0xf0, + 0x08, 0x40, 0xd3, 0x8f, 0x84, 0x02, 0xab, 0x76, 0xd3, 0xa2, 0xaa, 0x28, + 0x79, 0x65, 0x14, 0x20, 0x21, 0x7e, 0xfb, 0x16, 0x2a, 0x4e, 0xba, 0x92, + 0x6c, 0xe7, 0x7d, 0x6f, 0xdf, 0xf5, 0x77, 0x50, 0xaa, 0xdc, 0x2c, 0xe0, + 0x18, 0x38, 0xec, 0x92, 0x18, 0xa1, 0x90, 0xd6, 0xa3, 0xc2, 0xee, 0xab, + 0xd6, 0xb5, 0x85, 0x91, 0x5b, 0xb1, 0x1a, 0x1b, 0xc9, 0xc9, 0xff, 0x97, + 0x0c, 0xb6, 0xdd, 0x08, 0x56, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xd5, + 0xfd, 0x2c, 0x46, 0x9b, 0xdf, 0xc2, 0x60, 0x69, 0x8d, 0xf8, 0x20, 0x60, + 0x63, 0x6e, 0x1d, 0x21, 0xc1, 0x0a, 0x2f, 0xf1, 0x0d, 0xd2, 0x1c, 0xb7, + 0xdf, 0xc5, 0x93, 0x21, 0xb8, 0x7c, 0x7e, 0x9b, 0xfc, 0xa6, 0x76, 0x74, + 0x94, 0xa2, 0x52, 0x2f, 0x92, 0xd2, 0x9d, 0xd8, 0xcc, 0xb7, 0x33, 0x85, + 0x57, 0x3b, 0x27, 0xb7, 0xa4, 0x28, 0x45, 0x33, 0xd5, 0xe9, 0x91, 0xfe, + 0x67, 0x99, 0xcf, 0x2c, 0xdb, 0x53, 0xfd, 0x0b, 0xf3, 0xd0, 0xa1, 0x27, + 0x97, 0x1a, 0x1e, 0x47, 0xb7, 0x97, 0x0a, 0xd6, 0x8e, 0x9b, 0x91, 0x1f, + 0x08, 0xf8, 0x35, 0xc7, 0x8f, 0x30, 0xf8, 0x78, 0x66, 0x19, 0xc1, 0x4a, + 0x2c, 0x20, 0x55, 0x64, 0x08, 0x80, 0x41, 0x43, 0x81, 0x80, 0x08, 0x02, + 0x00, 0x13, 0x8c, 0x05, 0x90, 0x53, 0x4c, 0x23, 0x64, 0x73, 0x0d, 0x28, + 0x00, 0xe2, 0x4c, 0x0e, 0x40, 0x25, 0x8c, 0x01, 0x50, 0x45, 0x4c, 0x1d, + 0x00, 0x66, 0x4c, 0x07, 0x90, 0x2d, 0x0c, 0x23, 0x20, 0x65, 0xcc, 0x06, + 0xc0, 0x35, 0xcc, 0x0f, 0x80, 0x63, 0x0c, 0x37, 0x71, 0xa0, 0x4f, 0x78, + 0xa9, 0x28, 0xcc, 0x92, 0x90, 0xfa, 0xcc, 0x20, 0x60, 0x54, 0x0e, 0x3a, + 0x87, 0x35, 0x51, 0xc8, 0xce, 0x29, 0x93, 0x2f, 0xb3, 0x8c, 0x18, 0x24, + 0x03, 0x04, 0xcc, 0x28, 0xc3, 0x22, 0x6e, 0x23, 0x02, 0x6c, 0x14, 0x18, + 0x11, 0xf4, 0xc5, 0x44, 0x33, 0x99, 0x01, 0xc6, 0x83, 0xa8, 0x1c, 0xd4, + 0xa6, 0x86, 0x00, 0xca, 0x85, 0xc2, 0x25, 0x00, 0x00, 0x53, 0xc0, 0x22, + 0x53, 0x71, 0x8f, 0xc3, 0x93, 0x4c, 0xa9, 0x51, 0xc4, 0xde, 0x28, 0x5d, + 0x0c, 0xa2, 0xad, 0x0d, 0x6a, 0xb6, 0x25, 0xd1, 0x59, 0x1c, 0x07, 0x7a, + 0x19, 0x92, 0xbe, 0xd1, 0x11, 0xa2, 0x12, 0x14, 0xc2, 0x73, 0x52, 0x10, + 0xa1, 0x11, 0xe4, 0x54, 0xec, 0xab, 0x72, 0x86, 0x91, 0xd3, 0x90, 0xaf, + 0x08, 0x30, 0x5e, 0x77, 0x09, 0x6c, 0xd8, 0xba, 0xe5, 0x6e, 0xc4, 0x31, + 0xaa, 0x31, 0xa1, 0x5d, 0x22, 0x09, 0x1d, 0x62, 0xd6, 0xdc, 0xa9, 0x77, + 0x08, 0xd0, 0xa8, 0x95, 0x4d, 0x11, 0x2d, 0x06, 0x98, 0xcd, 0x92, 0x78, + 0xd5, 0x24, 0x7a, 0xcc, 0xd2, 0xcd, 0x12, 0x73, 0x90, 0xc2, 0x2b, 0x1b, + 0x09, 0xd9, 0xb2, 0xb4, 0x4b, 0x25, 0x2d, 0xcd, 0xc7, 0x8f, 0x1b, 0x65, + 0x5f, 0xeb, 0xb6, 0x36, 0xed, 0x87, 0x54, 0x9d, 0x50, 0x22, 0xaf, 0x68, + 0x2f, 0x28, 0x12, 0x88, 0xe5, 0x16, 0x9e, 0xc4, 0xae, 0x96, 0x0d, 0xb0, + 0xfc, 0x53, 0x61, 0x4b, 0xdc, 0x6d, 0x6d, 0x58, 0xf3, 0x44, 0x1f, 0x4d, + 0x56, 0x0b, 0x2e, 0xa5, 0x92, 0x2c, 0x83, 0x6e, 0xff, 0x9a, 0x56, 0x43, + 0x23, 0x17, 0xbf, 0xe7, 0x9e, 0x10, 0xe5, 0x1f, 0x2c, 0x61, 0xf8, 0xb3, + 0x71, 0xea, 0xef, 0x44, 0x9d, 0x43, 0xd0, 0xee, 0x1f, 0x32, 0x69, 0x59, + 0x45, 0x48, 0xe9, 0xb5, 0x56, 0xba, 0x8e, 0x26, 0xee, 0x79, 0x3d, 0x95, + 0xbc, 0x55, 0x86, 0xac, 0x43, 0xdf, 0x17, 0xc4, 0x75, 0x7d, 0x35, 0x0a, + 0x8e, 0xe2, 0x66, 0xa7, 0x6a, 0x55, 0xf1, 0xd4, 0x9d, 0xb2, 0xf0, 0x5d, + 0x3a, 0xfe, 0x34, 0x7c, 0x7c, 0x43, 0x2a, 0xd0, 0xfb, 0xb7, 0xd9, 0xe9, + 0xea, 0x5c, 0x79, 0xe6, 0xa2, 0x89, 0x04, 0x01, 0x00, 0x3c, 0xa9, 0xac, + 0x5c, 0x4f, 0x01, 0xb2, 0xc5, 0x68, 0x58, 0x1d, 0x50, 0xe8, 0x3b, 0x15, + 0x11, 0x04, 0x01, 0x73, 0x06, 0x89, 0x93, 0x10, 0x53, 0x51, 0x4c, 0xcb, + 0x8e, 0x4e, 0x0b, 0x8c, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x00, 0x00, 0x81, 0xb9, 0xa3, 0x24, 0x03, 0x00, 0x30, 0x24, 0x11, + 0x04, 0xb9, 0x83, 0x04, 0xc3, 0x19, 0x6b, 0x0f, 0x79, 0x80, 0x88, 0x09, + 0x18, 0x23, 0x84, 0xd1, 0x87, 0x08, 0x65, 0x18, 0x40, 0x00, 0x19, 0x91, + 0x88, 0x41, 0x01, 0x40, 0xe8, 0xc0, 0x15, 0x03, 0x44, 0xc0, 0xde, 0x0b, + 0x80, 0xd1, 0x1b, 0x64, 0xf0, 0xc2, 0x7e, 0x07, 0xd8, 0xc0, 0x97, 0x02, + 0x7c, 0xc0, 0x4a, 0x00, 0xb8, 0xc0, 0x1d, 0x00, 0x7c, 0xc0, 0x12, 0x00, + 0x42, 0x7c, 0x04, 0x00, 0x6a, 0x02, 0x07, 0x40, 0x1d, 0x26, 0x01, 0x95, + 0xb3, 0x2c, 0x42, 0x60, 0x00, 0x5b, 0x61, 0xd0, 0x03, 0x80, 0x00, 0x0b, + 0xc1, 0x52, 0x84, 0xb6, 0x72, 0x41, 0x20, 0x01, 0x97, 0xfb, 0x4e, 0x21, + 0xaf, 0x10, 0x95, 0x90, 0x3d, 0xb9, 0x44, 0x85, 0xd0, 0x4d, 0x9e, 0xd1, + 0xb4, 0xf8, 0x21, 0xda, 0xb3, 0x56, 0x62, 0x1a, 0x7f, 0x65, 0xed, 0xda, + 0xcc, 0xba, 0x5d, 0x01, 0xc3, 0x2f, 0x55, 0x7a, 0xff, 0x67, 0x1a, 0x1a, + 0x3b, 0xd9, 0x52, 0xeb, 0x52, 0x3a, 0xf8, 0xe5, 0xfd, 0xab, 0xcc, 0x2b, + 0x63, 0xda, 0x6b, 0x1a, 0xcb, 0x56, 0xb2, 0x61, 0x38, 0xa0, 0xc0, 0xc9, + 0x07, 0x02, 0xf0, 0x05, 0x40, 0x34, 0xac, 0x32, 0x6d, 0x4b, 0x32, 0x4e, + 0x91, 0xca, 0x7e, 0xc1, 0xc6, 0xe5, 0xd4, 0xf3, 0x25, 0xdf, 0xb1, 0xe9, + 0x43, 0x3e, 0xcd, 0xd7, 0x9f, 0x42, 0x45, 0x46, 0x03, 0x41, 0x04, 0x80, + 0xf4, 0x64, 0x80, 0x03, 0x68, 0xf9, 0xa2, 0x2a, 0x40, 0xcd, 0x6b, 0xee, + 0xd5, 0x46, 0xff, 0xff, 0xed, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x08, 0xc6, + 0x51, 0x2f, 0x45, 0xd3, 0xdf, 0xca, 0x60, 0x53, 0x8d, 0xe8, 0x73, 0x44, + 0xa2, 0x6e, 0x1c, 0x49, 0xc1, 0x0c, 0x2f, 0xed, 0x0d, 0xc2, 0x34, 0x37, + 0x9f, 0xc5, 0x33, 0x2d, 0xba, 0xf9, 0x8c, 0x93, 0x9d, 0xf1, 0x10, 0xf0, + 0x78, 0x3e, 0x40, 0x05, 0x81, 0xcc, 0x26, 0x03, 0x1c, 0x8c, 0xce, 0x72, + 0x14, 0x82, 0x95, 0x08, 0xca, 0x55, 0x67, 0x55, 0xbc, 0x1d, 0x9d, 0xd9, + 0xfd, 0xac, 0xa9, 0xce, 0xd4, 0xa5, 0x5d, 0x13, 0x5c, 0xd5, 0xed, 0xfb, + 0x37, 0xff, 0xaf, 0xfe, 0xdd, 0xbe, 0xbf, 0xff, 0xa7, 0xbf, 0x77, 0xeb, + 0x46, 0x31, 0xd9, 0x8a, 0xf0, 0x85, 0x06, 0xf6, 0x21, 0x2e, 0x31, 0xc0, + 0x60, 0x2a, 0x80, 0xe0, 0x60, 0x2f, 0x02, 0x36, 0x60, 0x65, 0xa3, 0x00, + 0x65, 0x7c, 0x86, 0xe6, 0x60, 0x2e, 0x81, 0x0c, 0x60, 0x2e, 0x85, 0x50, + 0x61, 0xd4, 0x86, 0x82, 0x60, 0x67, 0x01, 0x66, 0x62, 0x11, 0x01, 0x30, + 0x60, 0x2c, 0x82, 0x06, 0x60, 0x9f, 0x80, 0xce, 0x60, 0x6f, 0x8a, 0xea, + 0x66, 0x23, 0x69, 0x42, 0x60, 0x3d, 0x8a, 0xb6, 0x60, 0xfc, 0x82, 0xac, + 0x7b, 0xc4, 0x46, 0x99, 0x2c, 0x69, 0x42, 0x43, 0x2d, 0x21, 0x87, 0x00, + 0x81, 0xa0, 0x31, 0x88, 0x67, 0xa0, 0xd0, 0x42, 0xa4, 0x10, 0x83, 0x8f, + 0x01, 0x98, 0x08, 0x41, 0x1a, 0xb0, 0x18, 0x4d, 0x5d, 0x85, 0xc2, 0x59, + 0x9a, 0x74, 0x27, 0x42, 0x96, 0x23, 0xd8, 0x5c, 0xdc, 0x88, 0x26, 0x02, + 0x92, 0x34, 0xc8, 0x61, 0x85, 0x35, 0xf6, 0xb8, 0xea, 0x3b, 0x56, 0x69, + 0xa1, 0xf7, 0xfe, 0x5f, 0x9c, 0x96, 0x2f, 0x01, 0xc3, 0x77, 0x62, 0x79, + 0xee, 0x39, 0x3e, 0x1d, 0x9e, 0x71, 0x46, 0x41, 0x08, 0x3c, 0xc2, 0x0e, + 0x4d, 0xcf, 0x5a, 0x9a, 0x1b, 0xa9, 0xab, 0x4f, 0x2d, 0x38, 0xf6, 0x83, + 0xd8, 0x79, 0xa3, 0x69, 0x59, 0x12, 0x74, 0x6f, 0x1d, 0x23, 0x06, 0x53, + 0xb5, 0xfc, 0x21, 0x85, 0x25, 0x31, 0x23, 0x96, 0x39, 0x87, 0xe6, 0xd2, + 0x59, 0x23, 0x88, 0x49, 0xa4, 0x8d, 0x20, 0x60, 0xf6, 0xbe, 0xed, 0xaa, + 0xc6, 0x46, 0x35, 0x7c, 0xf9, 0x4d, 0x8c, 0xb6, 0x86, 0x5a, 0xea, 0x89, + 0x55, 0x21, 0xa9, 0xa8, 0xf5, 0x14, 0x89, 0x5d, 0x11, 0xc6, 0xb4, 0xa0, + 0xcb, 0xb5, 0x52, 0x04, 0x23, 0x52, 0x01, 0x58, 0x7a, 0x20, 0x05, 0x72, + 0x5d, 0x37, 0x31, 0x26, 0xdc, 0xdc, 0x8e, 0xdd, 0x04, 0x91, 0x40, 0x8f, + 0xa5, 0x96, 0x7d, 0x53, 0x54, 0x4c, 0x34, 0x51, 0xd8, 0x63, 0x53, 0x59, + 0x51, 0x59, 0xb1, 0xd2, 0x84, 0x6d, 0x25, 0x43, 0x02, 0x40, 0x2b, 0x5a, + 0x04, 0x90, 0xc4, 0x51, 0xec, 0xeb, 0x26, 0xed, 0xd3, 0x76, 0xfb, 0xb9, + 0xb7, 0xdb, 0xdf, 0x46, 0x8a, 0x52, 0xd4, 0xb3, 0xa2, 0xdb, 0x3d, 0x35, + 0xb6, 0x93, 0x59, 0x6c, 0x3a, 0xf9, 0x6a, 0x54, 0xc8, 0x93, 0x07, 0x4c, + 0x53, 0x1f, 0x5c, 0x41, 0xd4, 0xf6, 0xb0, 0xee, 0xe7, 0x36, 0x9d, 0x0f, + 0xe1, 0x97, 0x72, 0xa4, 0xc5, 0x3b, 0x96, 0xb2, 0x5b, 0x5f, 0x35, 0x79, + 0xde, 0x7a, 0x8e, 0x9b, 0x4e, 0xb6, 0xec, 0xb6, 0xb5, 0x8e, 0xa5, 0xf7, + 0x33, 0x3c, 0xf6, 0x53, 0xb6, 0x34, 0xdd, 0x86, 0xc6, 0xa3, 0xd1, 0x53, + 0x50, 0x25, 0xc1, 0xc1, 0xec, 0xe9, 0x0e, 0x4f, 0x27, 0x0b, 0x07, 0x79, + 0x35, 0xc2, 0x19, 0x5a, 0x60, 0x9c, 0x98, 0x82, 0x9a, 0x8a, 0x66, 0x5c, + 0x72, 0x70, 0x5c, 0x64, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x3e, 0x40, 0xfe, 0x30, 0x5c, 0x81, 0xc9, 0x31, 0x19, 0xdc, + 0x68, 0x3a, 0xf4, 0xc7, 0x0d, 0x30, 0x9f, 0xc1, 0x92, 0x30, 0x72, 0xc5, + 0x37, 0x33, 0x5b, 0x42, 0x38, 0x30, 0x32, 0xc0, 0xbe, 0x30, 0xf6, 0xc4, + 0xb7, 0x30, 0x52, 0x80, 0x97, 0x30, 0xf3, 0x84, 0x39, 0x31, 0x29, 0xca, + 0x66, 0x33, 0x71, 0x79, 0xfe, 0x37, 0x9b, 0x4b, 0xaa, 0x30, 0x8a, 0x42, + 0x8a, 0x3b, 0x54, 0xa4, 0x34, 0xc0, 0xb1, 0x31, 0x59, 0x1b, 0x32, 0xe4, + 0xb6, 0x33, 0x6c, 0xb6, 0x16, 0x1e, 0xcc, 0x32, 0x0c, 0x4c, 0x74, 0x1c, + 0xcc, 0x5a, 0x10, 0xcc, 0x42, 0x01, 0xd7, 0xd1, 0x82, 0x20, 0xa1, 0x84, + 0x01, 0x68, 0x70, 0x9a, 0x60, 0x30, 0x06, 0x84, 0xe3, 0x02, 0xc1, 0x43, + 0x04, 0x40, 0xe3, 0x07, 0xc0, 0x63, 0x05, 0x40, 0x67, 0x19, 0xd2, 0x18, + 0x01, 0x5a, 0x01, 0x66, 0x88, 0x80, 0x25, 0x05, 0x58, 0xab, 0x15, 0xd9, + 0x7d, 0xa9, 0x96, 0x2a, 0x72, 0xae, 0x57, 0x85, 0xdc, 0x82, 0x18, 0x73, + 0x11, 0x77, 0x66, 0x25, 0x0e, 0x53, 0x5a, 0x58, 0x68, 0x0a, 0x1b, 0x8d, + 0x06, 0x82, 0x50, 0x36, 0x3a, 0x64, 0x92, 0x5d, 0x34, 0x2f, 0x16, 0xae, + 0x62, 0x49, 0x4a, 0x49, 0x2c, 0xa6, 0x2e, 0x96, 0x4e, 0x4f, 0x4f, 0x4c, + 0x0a, 0xeb, 0x90, 0xa1, 0x75, 0x39, 0x31, 0x0d, 0xd5, 0xae, 0x95, 0x68, + 0x72, 0xa4, 0x9a, 0x7c, 0xe1, 0xd7, 0x9b, 0xa0, 0xc6, 0x7d, 0xdf, 0x0b, + 0xd5, 0x52, 0x61, 0x13, 0xe5, 0x35, 0xb5, 0x54, 0xc1, 0x00, 0xe5, 0xaf, + 0x46, 0x5d, 0x50, 0xc5, 0x0b, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xc9, + 0x27, 0x70, 0x40, 0x03, 0xfd, 0x63, 0x70, 0x45, 0xe5, 0x48, 0xa3, 0x1c, + 0x26, 0x4c, 0x20, 0xf1, 0xbe, 0xfe, 0x0f, 0xed, 0x8d, 0xc1, 0xb7, 0xb8, + 0x20, 0xc9, 0x33, 0x15, 0xb8, 0x47, 0x88, 0xda, 0xd3, 0x91, 0xde, 0x4a, + 0x76, 0x30, 0x3b, 0x5c, 0xa4, 0xd2, 0x23, 0xc6, 0x4c, 0x19, 0x66, 0x16, + 0x17, 0xcd, 0x62, 0x4c, 0xb8, 0xe7, 0x9e, 0x86, 0xcb, 0x7e, 0x17, 0xa0, + 0xaf, 0xc2, 0xb3, 0xd6, 0xea, 0xab, 0xa7, 0x56, 0xa3, 0x55, 0xc9, 0xe4, + 0x0e, 0xfc, 0x0a, 0xac, 0xbd, 0x09, 0x12, 0x46, 0x0c, 0xe2, 0x26, 0xba, + 0x7b, 0xed, 0x54, 0xb1, 0x12, 0x67, 0xde, 0x4c, 0xf1, 0x79, 0xb2, 0x79, + 0x18, 0x4e, 0x08, 0x92, 0x34, 0x82, 0x06, 0xfa, 0xa4, 0x80, 0x03, 0x9c, + 0xbe, 0xed, 0x9d, 0xf9, 0x7f, 0xb3, 0xff, 0xff, 0xff, 0xff, 0x51, 0x98, + 0x73, 0x9d, 0x09, 0x14, 0x51, 0x14, 0x4c, 0xd3, 0xc7, 0x3a, 0xb0, 0x69, + 0x98, 0xec, 0x4f, 0x0a, 0x3d, 0x56, 0x89, 0x2a, 0x42, 0x77, 0xba, 0x81, + 0x50, 0x59, 0x87, 0x88, 0x8b, 0x3f, 0x55, 0xbe, 0x8b, 0xb5, 0xac, 0x51, + 0x96, 0xa3, 0x73, 0x55, 0x77, 0x2a, 0xb6, 0x7f, 0xff, 0xf2, 0x15, 0xa8, + 0x0b, 0x86, 0x5e, 0x40, 0xc1, 0x19, 0x03, 0x08, 0xc2, 0x08, 0x00, 0xc4, + 0xc6, 0x8f, 0x26, 0x80, 0xfc, 0x93, 0x0a, 0x24, 0xc4, 0x5b, 0x04, 0xa8, + 0xc3, 0xf2, 0x0f, 0x8c, 0xd3, 0x2a, 0x2e, 0x88, 0xc2, 0x78, 0x09, 0x9c, + 0xc7, 0x39, 0x1b, 0x08, 0xc2, 0x1c, 0x00, 0xfc, 0xc0, 0xbb, 0x06, 0xb0, + 0xc3, 0x7a, 0x17, 0xac, 0xd7, 0x6b, 0x50, 0xe4, 0xc4, 0x7a, 0x04, 0x38, + 0xc1, 0x93, 0x01, 0xc4, 0xe5, 0x8a, 0x0d, 0xcc, 0x6c, 0xd0, 0x87, 0x0c, + 0x39, 0xe0, 0xc1, 0xc2, 0x48, 0x40, 0x8c, 0x1c, 0x81, 0xcd, 0x9e, 0x26, + 0x04, 0x6f, 0xd7, 0xea, 0x32, 0x04, 0x2a, 0xb9, 0xf2, 0x57, 0x19, 0xd3, + 0x6e, 0x6e, 0x36, 0x72, 0xd7, 0x75, 0xdb, 0x86, 0xdd, 0xab, 0x74, 0xb2, + 0x89, 0x5c, 0x91, 0xea, 0x7b, 0xe1, 0xaa, 0x93, 0x36, 0x5f, 0x5a, 0x29, + 0x64, 0x8a, 0x92, 0x56, 0xfd, 0xc8, 0x23, 0x30, 0x34, 0x7a, 0x0f, 0x24, + 0x11, 0x92, 0x51, 0x13, 0x6d, 0x92, 0x61, 0x85, 0x71, 0xe9, 0xcd, 0xae, + 0xfb, 0x05, 0x85, 0x89, 0x44, 0xb2, 0xb6, 0x16, 0xe8, 0x7e, 0x7a, 0x6b, + 0x1a, 0xc3, 0xa4, 0x89, 0x08, 0x87, 0xbf, 0x54, 0x8c, 0xc6, 0xfa, 0xda, + 0xca, 0x74, 0x5c, 0xd8, 0x96, 0xd4, 0x25, 0x93, 0xb3, 0x86, 0x56, 0xa6, + 0x4a, 0x7b, 0x1a, 0x1b, 0xc5, 0xe8, 0xd6, 0x43, 0x95, 0x4c, 0xeb, 0x75, + 0x84, 0x90, 0x85, 0x0b, 0xc8, 0xec, 0xa4, 0xf5, 0x7b, 0xaf, 0x7a, 0xba, + 0xd9, 0xf5, 0x8e, 0xb8, 0xd4, 0x47, 0xac, 0x17, 0x15, 0xc9, 0x4d, 0x10, + 0x94, 0x7e, 0x5d, 0xba, 0xc6, 0x16, 0x37, 0xef, 0x1c, 0x6a, 0x23, 0xe5, + 0x24, 0x86, 0xf1, 0xe7, 0x28, 0x76, 0xa1, 0x86, 0xda, 0x5a, 0x5b, 0x58, + 0x52, 0x3c, 0x8a, 0x2b, 0x46, 0xfb, 0xde, 0xa0, 0xe0, 0xa5, 0x01, 0x64, + 0x92, 0x15, 0x34, 0x3f, 0x2f, 0x3a, 0x3f, 0x22, 0x94, 0xc9, 0x0c, 0x29, + 0x28, 0xa6, 0x11, 0x8b, 0x80, 0x00, 0x0b, 0xa8, 0x97, 0xcf, 0x3b, 0xa2, + 0x70, 0xb2, 0x9a, 0x6e, 0x71, 0x0e, 0xf4, 0x41, 0xf7, 0xd5, 0x4f, 0xff, + 0xdf, 0xdd, 0xd6, 0xd7, 0x3b, 0x4a, 0x70, 0x4b, 0x79, 0x2c, 0x9f, 0x83, + 0x6e, 0xd5, 0x07, 0x7f, 0x0a, 0x8c, 0x4f, 0x18, 0xec, 0xf6, 0x72, 0xb3, + 0x2d, 0x2d, 0xe5, 0xb4, 0xce, 0xd4, 0xf4, 0x67, 0x21, 0xf6, 0x76, 0xd0, + 0xee, 0xcd, 0xe5, 0xdd, 0xd4, 0xe9, 0x97, 0xe8, 0x8a, 0xae, 0xae, 0xa6, + 0xbd, 0xae, 0x5e, 0xd7, 0x9a, 0x6a, 0x32, 0xa2, 0x3e, 0xa8, 0x65, 0x5d, + 0xad, 0x6b, 0x9c, 0x94, 0x5a, 0x3b, 0xa1, 0xa9, 0x74, 0x75, 0x21, 0x27, + 0x73, 0x20, 0x78, 0xa5, 0x28, 0xb9, 0x06, 0x87, 0x83, 0x07, 0x07, 0xd0, + 0x4c, 0x24, 0xce, 0x11, 0x0e, 0xd5, 0x30, 0x26, 0xc0, 0x4b, 0x30, 0x6d, + 0x82, 0x4a, 0x31, 0x8d, 0xd8, 0x49, 0x3e, 0x2c, 0xc6, 0x4a, 0x31, 0x03, + 0xc2, 0xad, 0x30, 0xc0, 0x0b, 0xc0, 0x34, 0x99, 0x0c, 0x67, 0x30, 0xf4, + 0x80, 0xc8, 0x32, 0x25, 0x01, 0xf5, 0x30, 0xb9, 0xc1, 0x1d, 0x30, 0x62, + 0x01, 0x12, 0x30, 0xc9, 0x40, 0x04, 0x37, 0x0d, 0x80, 0xd6, 0x31, 0x79, + 0x41, 0x46, 0x30, 0x64, 0x00, 0x04, 0x3c, 0x6d, 0x8e, 0x90, 0x81, 0x29, + 0xe0, 0x29, 0x60, 0xea, 0x09, 0x6a, 0x5c, 0x06, 0x64, 0xe4, 0x28, 0x4b, + 0xb0, 0xb9, 0x9a, 0x90, 0x08, 0x7b, 0x26, 0x5f, 0x8d, 0x4e, 0x0a, 0x62, + 0xe9, 0xd5, 0x1a, 0x9d, 0x8b, 0x5d, 0x68, 0xed, 0xd2, 0x8e, 0xa4, 0x46, + 0x4d, 0x38, 0xe2, 0xbf, 0xd2, 0x38, 0x95, 0x98, 0x6a, 0x0c, 0x8e, 0xc4, + 0xe4, 0xce, 0xdc, 0x4a, 0x5d, 0x23, 0x87, 0xe0, 0x3a, 0x08, 0xde, 0x5b, + 0x99, 0xdf, 0x43, 0x44, 0x2a, 0x10, 0xf6, 0x77, 0x34, 0x25, 0xbe, 0x2b, + 0x83, 0x22, 0x77, 0xe6, 0x06, 0x1a, 0x23, 0xae, 0xd4, 0xea, 0x58, 0xea, + 0xc5, 0x6e, 0x1a, 0x95, 0xa9, 0x28, 0x11, 0xa0, 0xbd, 0x67, 0x54, 0xf8, + 0xec, 0x53, 0xb6, 0xc5, 0xab, 0x0d, 0xd3, 0xec, 0xc8, 0x6d, 0x70, 0xbf, + 0xaa, 0xc0, 0x53, 0x40, 0x82, 0xdb, 0x15, 0x3a, 0xcc, 0xc5, 0x77, 0x05, + 0xd3, 0x04, 0x25, 0x02, 0x76, 0xaa, 0x86, 0x66, 0x56, 0xb8, 0xd4, 0x9d, + 0xa2, 0x2d, 0xd8, 0x26, 0x58, 0xae, 0x54, 0xd0, 0x5b, 0xd5, 0xf8, 0x84, + 0xe9, 0xbd, 0x3e, 0xea, 0x23, 0xff, 0xfb, 0xd4, 0x60, 0x6b, 0x8f, 0xf8, + 0x89, 0x70, 0x3f, 0x83, 0xfa, 0x7b, 0x70, 0x70, 0xce, 0x08, 0x10, 0x3c, + 0x68, 0x6e, 0x21, 0x55, 0xc0, 0xfe, 0x0f, 0xe9, 0x8d, 0xc1, 0x7d, 0x38, + 0x20, 0xc1, 0x81, 0x95, 0xb8, 0x7a, 0xaa, 0x2c, 0x46, 0x49, 0x18, 0xfc, + 0x29, 0xa3, 0xab, 0x9f, 0xc5, 0x7c, 0xb8, 0x51, 0xce, 0xd3, 0x58, 0xad, + 0xf1, 0xe0, 0x47, 0x71, 0x9d, 0x6d, 0x49, 0x23, 0x85, 0xa1, 0xbb, 0xdb, + 0x3c, 0xb9, 0xc2, 0xb6, 0x77, 0xab, 0x2b, 0xb5, 0x13, 0xc7, 0xef, 0x9b, + 0x4e, 0x17, 0x87, 0x32, 0xe9, 0x0d, 0x7a, 0x9f, 0x39, 0xd5, 0x89, 0xe3, + 0xf0, 0x53, 0x5d, 0x00, 0x9c, 0xe3, 0x1d, 0xbd, 0x9a, 0x23, 0x6d, 0x5e, + 0xde, 0x04, 0xf5, 0x8f, 0x24, 0x9f, 0x59, 0x09, 0xf1, 0x73, 0x2e, 0x06, + 0x23, 0x52, 0xca, 0x91, 0x57, 0xa7, 0x01, 0xbf, 0xba, 0xe7, 0xa6, 0xff, + 0x63, 0xfc, 0x69, 0x13, 0x30, 0x90, 0x36, 0x26, 0x22, 0x3e, 0xff, 0xdb, + 0x94, 0xf7, 0xfb, 0xfe, 0xda, 0x99, 0x52, 0x5b, 0xd2, 0xe2, 0xe6, 0x5d, + 0xb9, 0xa9, 0x45, 0xea, 0xe3, 0x19, 0x16, 0x91, 0x2b, 0x1b, 0x3f, 0xda, + 0x75, 0xaf, 0x0d, 0x13, 0x5d, 0xc7, 0xba, 0x47, 0x53, 0x2d, 0xf2, 0x55, + 0x4c, 0x75, 0xb5, 0x4c, 0x43, 0xcc, 0x5f, 0x73, 0x2f, 0x3a, 0xa1, 0x3d, + 0x24, 0x40, 0x7d, 0x38, 0xc4, 0x2c, 0xc1, 0x63, 0x0b, 0x73, 0x84, 0x1b, + 0x14, 0x5c, 0xc0, 0xe0, 0x48, 0x28, 0x50, 0x30, 0x60, 0x2d, 0x02, 0x3e, + 0x60, 0x4e, 0x06, 0xf0, 0x61, 0xe5, 0xd0, 0x46, 0x72, 0x80, 0x93, 0xd0, + 0x60, 0x72, 0x85, 0x66, 0x62, 0x17, 0x89, 0x08, 0x71, 0xa5, 0x97, 0x26, + 0x62, 0x5a, 0x84, 0xa0, 0x63, 0x1e, 0x8c, 0x0a, 0x60, 0x3e, 0x82, 0x68, + 0x60, 0x83, 0x81, 0x7a, 0x60, 0x76, 0x02, 0xb6, 0x6d, 0xa6, 0xb0, 0xb0, + 0x62, 0x9a, 0x01, 0xa4, 0x60, 0xa2, 0x80, 0x2e, 0x6d, 0x00, 0x9b, 0x53, + 0x26, 0xc1, 0x91, 0x52, 0x88, 0x10, 0x18, 0x84, 0x50, 0xa4, 0x25, 0x4e, + 0x97, 0x93, 0x62, 0x40, 0x1d, 0xc2, 0xc0, 0x70, 0x35, 0xe8, 0xab, 0x2b, + 0x56, 0x07, 0x62, 0x07, 0x4d, 0x77, 0x76, 0x1d, 0x5d, 0xee, 0x0b, 0x33, + 0xa5, 0x8f, 0x30, 0xda, 0xb4, 0xf5, 0xaf, 0xbe, 0x12, 0xad, 0xbf, 0x0e, + 0x23, 0xf3, 0x3b, 0x4c, 0xfa, 0xd8, 0xed, 0x04, 0xa3, 0x0a, 0x18, 0x06, + 0x4a, 0x66, 0x74, 0x3e, 0x58, 0x91, 0x2b, 0x5c, 0x56, 0xe3, 0xe9, 0x90, + 0xdb, 0x5d, 0x02, 0xf3, 0xab, 0x59, 0x0c, 0xaa, 0x88, 0xce, 0x05, 0x46, + 0x32, 0x73, 0x13, 0x0d, 0x9a, 0xd9, 0x31, 0xa5, 0x95, 0x29, 0x3e, 0x38, + 0x39, 0x74, 0xe4, 0xb7, 0x11, 0x83, 0xed, 0x27, 0x33, 0x1f, 0x50, 0x96, + 0x17, 0x4a, 0x4b, 0x14, 0x17, 0x8f, 0x8a, 0x66, 0x08, 0xdc, 0x3d, 0x71, + 0x71, 0x54, 0xbf, 0x02, 0x7c, 0x25, 0x40, 0x4a, 0x2b, 0xc0, 0xbd, 0x74, + 0x2b, 0x97, 0x9c, 0x31, 0xc7, 0x1e, 0x83, 0x77, 0xdd, 0x31, 0x75, 0xbe, + 0x52, 0x57, 0x84, 0xc5, 0xda, 0x39, 0x53, 0xb6, 0x32, 0x87, 0x24, 0xd3, + 0xd3, 0x92, 0x44, 0x08, 0x47, 0x95, 0x61, 0x19, 0xab, 0x49, 0x3d, 0x73, + 0xcf, 0x3b, 0x76, 0xcf, 0xcf, 0x8e, 0x1a, 0x3d, 0xaf, 0x34, 0x48, 0x39, + 0x31, 0x31, 0x54, 0x4e, 0x8c, 0xba, 0xa8, 0x6a, 0x48, 0x3b, 0x8f, 0x12, + 0x5c, 0x12, 0xc1, 0xb8, 0x84, 0x97, 0x9c, 0x05, 0xcc, 0x83, 0x80, 0xf6, + 0x48, 0x7b, 0x8d, 0xfa, 0xb4, 0xd4, 0x14, 0x9a, 0xc2, 0xd6, 0x75, 0x37, + 0xc5, 0x20, 0x5f, 0xd8, 0xa7, 0x1b, 0x26, 0xda, 0xb5, 0xaa, 0x6d, 0x6f, + 0x4e, 0xf7, 0xd7, 0xe4, 0xc8, 0xae, 0x9d, 0xb3, 0x1d, 0x2a, 0xee, 0x7d, + 0x51, 0x79, 0x16, 0xf6, 0x74, 0xa7, 0xfe, 0x8a, 0x5e, 0xdd, 0xa7, 0x55, + 0xa3, 0x3c, 0x8a, 0xde, 0xf6, 0xa6, 0xfb, 0x4d, 0xdf, 0xdc, 0xe8, 0x65, + 0x44, 0xe5, 0x32, 0x2f, 0xb5, 0x51, 0xb4, 0xb6, 0xcb, 0x5b, 0x5a, 0xf5, + 0x43, 0x25, 0x1d, 0x4a, 0x63, 0x38, 0xa3, 0x06, 0x90, 0x50, 0x8c, 0x2a, + 0xca, 0x41, 0xe3, 0x82, 0x86, 0x30, 0xa3, 0x89, 0x90, 0x41, 0x30, 0x34, + 0x01, 0x9b, 0x30, 0x35, 0xc4, 0x92, 0x30, 0x44, 0xb9, 0x79, 0x31, 0x9f, + 0x0d, 0x0a, 0x30, 0x4e, 0x80, 0xbc, 0x30, 0x3b, 0x55, 0xb1, 0x34, 0x96, + 0xda, 0xac, 0x30, 0xc0, 0xc4, 0xf5, 0x30, 0x60, 0x49, 0x8a, 0x30, 0x96, + 0x80, 0xc0, 0x30, 0x0a, 0xc0, 0x80, 0x30, 0x4c, 0x85, 0xbb, 0x36, 0x59, + 0xb3, 0x53, 0x31, 0xf9, 0x42, 0x75, 0x30, 0x71, 0x01, 0x36, 0x38, 0x59, + 0xb3, 0x6a, 0x3c, 0x34, 0x34, 0xb0, 0x23, 0x5a, 0x03, 0x91, 0x5c, 0x94, + 0xa9, 0x0b, 0x10, 0x98, 0xcf, 0x50, 0x85, 0x1b, 0x52, 0x5c, 0xc3, 0x85, + 0xa0, 0x16, 0xff, 0x28, 0x29, 0x7f, 0x23, 0x9d, 0x23, 0x29, 0x80, 0xdb, + 0xfa, 0x74, 0xbd, 0xbf, 0x59, 0xe6, 0x9f, 0x53, 0x7b, 0x30, 0x14, 0xec, + 0x01, 0x20, 0x81, 0xdb, 0x25, 0x23, 0xef, 0x0b, 0x6b, 0xb2, 0xb9, 0x99, + 0x65, 0x58, 0x79, 0x93, 0xd8, 0x49, 0xa1, 0xeb, 0x25, 0xc5, 0xcd, 0x74, + 0x71, 0xa3, 0x5a, 0xd0, 0x87, 0x13, 0x48, 0xd0, 0xc2, 0x75, 0x3a, 0xbc, + 0xc4, 0xfc, 0xf5, 0x3c, 0x67, 0x7e, 0xe6, 0x8b, 0x65, 0x6a, 0x8b, 0x29, + 0xba, 0x93, 0x4f, 0xab, 0xd2, 0x0b, 0x70, 0x5c, 0x9e, 0x1f, 0xb1, 0x15, + 0x08, 0xf7, 0x08, 0x0b, 0x0d, 0x0b, 0x99, 0x54, 0x96, 0x9a, 0x2a, 0x35, + 0xc9, 0xec, 0x65, 0x32, 0xa9, 0xc8, 0xeb, 0x4f, 0x3e, 0x6d, 0x5a, 0x4f, + 0x28, 0x19, 0x94, 0xa9, 0xf9, 0xff, 0xfb, 0xd4, 0x60, 0x63, 0x8f, 0xd8, + 0xf9, 0x70, 0x3e, 0x83, 0xfb, 0x7b, 0x70, 0x64, 0xee, 0x08, 0x42, 0x48, + 0x67, 0x6e, 0x21, 0x89, 0xc0, 0xfe, 0x0f, 0xe9, 0xed, 0xc1, 0x7d, 0x37, + 0xa0, 0xc5, 0x01, 0x95, 0xb8, 0xd2, 0xf3, 0x43, 0x8a, 0xdd, 0x1d, 0xa5, + 0x3f, 0x0a, 0x16, 0x18, 0xa3, 0x3e, 0xbb, 0x4a, 0x65, 0x58, 0xe7, 0x97, + 0xab, 0x09, 0x5b, 0xe9, 0xbd, 0xe2, 0x21, 0x5a, 0x9d, 0x59, 0x8c, 0xa6, + 0x47, 0x24, 0x13, 0x90, 0x7c, 0x05, 0xda, 0xa5, 0xe3, 0x1e, 0x54, 0x33, + 0xb6, 0x2f, 0xc9, 0x96, 0xf7, 0x33, 0xf5, 0x7d, 0xe2, 0xb5, 0xc1, 0x69, + 0x74, 0xdf, 0x12, 0x12, 0x1b, 0xac, 0x1c, 0x6c, 0x2a, 0xd5, 0x6a, 0x2b, + 0x0a, 0x57, 0x15, 0x4a, 0x47, 0x27, 0xd2, 0xb1, 0x7e, 0x21, 0xc4, 0x57, + 0x18, 0x08, 0x87, 0xa8, 0xc5, 0xa3, 0xe9, 0x2c, 0x7f, 0xb5, 0x20, 0x00, + 0x17, 0xd5, 0xd6, 0x9a, 0xd9, 0x16, 0x49, 0x34, 0xda, 0x9a, 0x9a, 0x7a, + 0x19, 0xab, 0x31, 0xa4, 0x39, 0xc7, 0xf0, 0x74, 0xee, 0xa6, 0xac, 0xd5, + 0xc8, 0xd0, 0xce, 0x03, 0x32, 0x20, 0x49, 0x92, 0x4b, 0x3a, 0x5b, 0x79, + 0xa6, 0x9a, 0xe7, 0xec, 0xc9, 0x6e, 0xae, 0x88, 0xd4, 0xf7, 0xea, 0xa9, + 0x6a, 0x59, 0x77, 0x66, 0xad, 0x95, 0x13, 0x5b, 0xed, 0xad, 0xfe, 0xfd, + 0x9c, 0xcb, 0x35, 0x11, 0xda, 0xb7, 0x55, 0x3f, 0x36, 0xcc, 0x7a, 0x6f, + 0xde, 0xe7, 0x7d, 0xf4, 0x66, 0x43, 0x5d, 0x4b, 0x2b, 0x98, 0x69, 0xb3, + 0xc7, 0xd4, 0xf1, 0xd1, 0xf2, 0x27, 0x90, 0x3c, 0xf2, 0x4a, 0x54, 0xc6, + 0x26, 0x17, 0x30, 0x33, 0x01, 0x25, 0x30, 0x53, 0xc2, 0xfc, 0x31, 0x08, + 0xa5, 0x27, 0x39, 0xde, 0x88, 0xd2, 0x30, 0x62, 0x01, 0xe7, 0x31, 0x22, + 0x81, 0xaa, 0x3b, 0x4b, 0x81, 0x30, 0x31, 0x90, 0x81, 0xba, 0x31, 0xd7, + 0x03, 0xdd, 0x30, 0x6e, 0x41, 0x89, 0x30, 0x17, 0xc0, 0x91, 0x00, 0x89, + 0x18, 0x61, 0x79, 0x61, 0x20, 0x61, 0x8b, 0x06, 0x54, 0x60, 0x15, 0x02, + 0x02, 0x7b, 0xb4, 0x1b, 0xbb, 0x20, 0x2b, 0x06, 0xba, 0xc0, 0x97, 0xb2, + 0x20, 0x00, 0xc6, 0x08, 0xfa, 0xca, 0x24, 0xe8, 0xe2, 0xfa, 0x0e, 0x00, + 0x03, 0x4d, 0x64, 0x10, 0x4a, 0xa4, 0x78, 0x9b, 0x92, 0x63, 0x3d, 0x10, + 0xcb, 0x08, 0x7a, 0x5a, 0xcb, 0xbb, 0x24, 0xce, 0xac, 0xb2, 0xdf, 0xd7, + 0xa0, 0x8a, 0xd7, 0x76, 0x24, 0xf4, 0x95, 0x1f, 0x58, 0xf4, 0x7a, 0x51, + 0x1a, 0xc2, 0x63, 0x0c, 0xd6, 0x1a, 0xa5, 0x9c, 0xe7, 0x6f, 0x57, 0x59, + 0x5d, 0x45, 0xdd, 0x4e, 0x45, 0x89, 0xd9, 0xdc, 0x23, 0x3c, 0x6c, 0x86, + 0x85, 0x33, 0x59, 0x3d, 0xb2, 0xad, 0xec, 0xaf, 0x95, 0xd9, 0xaa, 0x89, + 0x65, 0x89, 0x5a, 0xc0, 0xd5, 0x1a, 0x2a, 0x8e, 0x2c, 0x06, 0xb6, 0xbe, + 0xc2, 0xbb, 0xda, 0x71, 0x20, 0xd4, 0xa8, 0xbc, 0x24, 0xfb, 0x9a, 0xfa, + 0x7d, 0xeb, 0x94, 0x6e, 0xba, 0x60, 0x99, 0x61, 0xfb, 0xc5, 0x4b, 0x05, + 0xdc, 0x15, 0x49, 0xea, 0x2a, 0x7c, 0xd0, 0x55, 0x77, 0x78, 0xf5, 0x6d, + 0x6a, 0x66, 0xc9, 0x5b, 0x5b, 0x22, 0xb0, 0xb7, 0x38, 0xe1, 0xaa, 0xf7, + 0x87, 0x1e, 0x6a, 0x36, 0xc1, 0x96, 0x14, 0x1b, 0x2e, 0x16, 0xa5, 0x9e, + 0xcf, 0x26, 0xef, 0xe1, 0x59, 0xb2, 0x0b, 0x33, 0x13, 0x33, 0x44, 0x8a, + 0xb8, 0xac, 0x90, 0x60, 0x51, 0xb1, 0xcb, 0xab, 0xa3, 0xc0, 0x65, 0x62, + 0x86, 0xb3, 0x06, 0x24, 0xca, 0xb5, 0x2a, 0xb1, 0x7d, 0x36, 0x71, 0x23, + 0x9f, 0xc3, 0x67, 0x2a, 0x53, 0xce, 0xc8, 0x0b, 0x86, 0x09, 0x31, 0xb2, + 0x66, 0xe9, 0x32, 0x6e, 0xc8, 0x3a, 0x47, 0xc8, 0x66, 0x4f, 0xc2, 0x4c, + 0xbd, 0x3c, 0x93, 0x49, 0xbc, 0x47, 0xcc, 0x57, 0x23, 0xab, 0xe7, 0x3a, + 0x9f, 0x97, 0x49, 0x19, 0x6c, 0x8c, 0x89, 0x67, 0x6d, 0x6d, 0x3a, 0x2b, + 0x9f, 0xf2, 0xa7, 0x7b, 0x7b, 0x6e, 0x7f, 0xd1, 0x19, 0x64, 0x5a, 0x2f, + 0x47, 0xb2, 0x5d, 0x5e, 0xeb, 0x69, 0x0d, 0xdb, 0xbe, 0xae, 0xd9, 0x5b, + 0x4f, 0x66, 0x33, 0xbb, 0x9f, 0x44, 0x76, 0xb2, 0x91, 0x75, 0xda, 0x69, + 0x10, 0x44, 0xa2, 0xe1, 0xe2, 0x32, 0x0f, 0x20, 0xa8, 0xa8, 0xd1, 0x51, + 0xa0, 0xa2, 0x64, 0x1e, 0x26, 0x85, 0x20, 0x0c, 0x0e, 0xe0, 0x31, 0xcc, + 0x1a, 0xb0, 0x50, 0x8c, 0x4c, 0xe4, 0x68, 0x4e, 0xdc, 0xe0, 0xa4, 0x0c, + 0x34, 0x20, 0xc2, 0xcc, 0x17, 0xd4, 0x26, 0x0c, 0xa3, 0x54, 0xe5, 0xcc, + 0x17, 0xf0, 0xa3, 0x8c, 0x98, 0x30, 0x97, 0xcc, 0x05, 0x30, 0x0e, 0x8c, + 0x08, 0x60, 0x36, 0x8c, 0x07, 0x91, 0x35, 0xcd, 0x4a, 0x19, 0x5e, 0xcc, + 0x50, 0xc0, 0x9e, 0xcc, 0x0d, 0x70, 0x41, 0x0e, 0x52, 0xf3, 0x86, 0xf8, + 0x14, 0x34, 0x2a, 0xd0, 0xac, 0x82, 0xaf, 0x02, 0x86, 0x4d, 0x88, 0x68, + 0x54, 0x20, 0xb0, 0x06, 0x1c, 0x04, 0x0c, 0x90, 0xe9, 0x8e, 0xae, 0xdc, + 0xb6, 0x50, 0xec, 0x32, 0x15, 0xce, 0xcb, 0x14, 0x0d, 0xcb, 0x88, 0x69, + 0x5e, 0x47, 0x53, 0x1d, 0x9d, 0xa7, 0x4a, 0x8b, 0xe1, 0x10, 0x71, 0x1a, + 0x8d, 0x2c, 0x8a, 0x19, 0x78, 0xdc, 0x7b, 0x54, 0x0f, 0x25, 0x0b, 0xbf, + 0x7e, 0x59, 0x17, 0x61, 0x5b, 0x38, 0x2a, 0xce, 0xa7, 0x7a, 0xa8, 0x8c, + 0xc2, 0x5f, 0x11, 0x8c, 0xc9, 0xf5, 0xa6, 0x44, 0xe2, 0x58, 0xe4, 0x91, + 0xd2, 0xda, 0xfc, 0x2a, 0x2e, 0x95, 0xaf, 0x67, 0x6b, 0xbd, 0xa1, 0x46, + 0x61, 0x9a, 0x24, 0x05, 0xb6, 0x76, 0x45, 0xce, 0x2a, 0xc9, 0x19, 0xfd, + 0x1b, 0xde, 0x78, 0x4e, 0x72, 0xff, 0xfb, 0xd4, 0x60, 0x59, 0x8d, 0xf8, + 0x89, 0x70, 0x40, 0x0b, 0xfa, 0x7b, 0x70, 0x5b, 0xee, 0x08, 0x32, 0x2c, + 0x65, 0x6e, 0x21, 0xcd, 0xc0, 0xfe, 0x0f, 0xed, 0x8d, 0xc1, 0x59, 0x38, + 0x21, 0x00, 0xb1, 0x95, 0xb8, 0xc1, 0x53, 0x3d, 0x62, 0x65, 0x93, 0x3e, + 0xaa, 0xe5, 0x6b, 0x3b, 0x3e, 0x76, 0xb7, 0xb8, 0x0a, 0x07, 0x96, 0x7f, + 0x1a, 0xea, 0xcb, 0xc3, 0x6d, 0xed, 0xab, 0x86, 0xd6, 0x56, 0x05, 0x0c, + 0x0a, 0xc5, 0x5c, 0xa8, 0x63, 0x30, 0x3d, 0xb4, 0x07, 0x37, 0x73, 0x2e, + 0xe2, 0xe7, 0x73, 0x7b, 0xaa, 0xe7, 0xb3, 0x2c, 0x4b, 0xc1, 0x87, 0x09, + 0xb1, 0xe3, 0x93, 0x8c, 0xb0, 0x18, 0x28, 0xd7, 0x0a, 0xd7, 0xb2, 0xd3, + 0xad, 0x35, 0xbe, 0xb3, 0x8a, 0xe1, 0x5e, 0xbb, 0x92, 0x0c, 0x18, 0xf0, + 0xd4, 0x90, 0xce, 0x96, 0xf6, 0x96, 0x96, 0x07, 0x02, 0xcd, 0x46, 0xca, + 0xca, 0xca, 0x69, 0x04, 0x80, 0x00, 0x02, 0xdd, 0xac, 0xa3, 0x4f, 0xf5, + 0x6e, 0xdb, 0xb4, 0x9f, 0xe0, 0xea, 0x6a, 0x97, 0xe7, 0xe7, 0x99, 0x95, + 0xcc, 0xe4, 0xc9, 0x96, 0x48, 0x45, 0xdd, 0x5d, 0xce, 0xb7, 0x8d, 0xcf, + 0x7a, 0x77, 0x7f, 0xd3, 0xbd, 0x7e, 0xf2, 0xa3, 0x22, 0xe5, 0x7a, 0x4f, + 0xe9, 0x7b, 0xb2, 0xe8, 0x9a, 0xcd, 0x2d, 0x9a, 0xde, 0xeb, 0x6f, 0xdd, + 0xda, 0x67, 0xeb, 0xba, 0xfa, 0x24, 0xd4, 0x25, 0xcd, 0x7d, 0x24, 0xba, + 0xb5, 0x1b, 0x63, 0x2c, 0x42, 0x71, 0x45, 0x17, 0x28, 0xa9, 0x96, 0x51, + 0x21, 0xe1, 0x65, 0x15, 0x01, 0x44, 0x88, 0x28, 0x10, 0x53, 0x0f, 0x30, + 0x21, 0x00, 0x5c, 0x30, 0x74, 0x40, 0xe5, 0x31, 0x5a, 0x0a, 0xb4, 0x3c, + 0x25, 0x84, 0xd9, 0x31, 0x16, 0x81, 0xfa, 0x31, 0x86, 0xc8, 0x4b, 0x3b, + 0x32, 0xc9, 0x9a, 0x31, 0x64, 0xc1, 0xdf, 0x32, 0xe3, 0x06, 0x72, 0x30, + 0x58, 0x41, 0x72, 0x30, 0x37, 0x02, 0x5d, 0x30, 0x63, 0x40, 0x79, 0x37, + 0xcf, 0x95, 0xc4, 0x32, 0x1c, 0x41, 0x9c, 0x30, 0x75, 0x80, 0x95, 0x3a, + 0xd0, 0x20, 0x18, 0x61, 0xa7, 0x83, 0x98, 0xf9, 0xb9, 0x67, 0x16, 0x99, + 0x60, 0x18, 0x58, 0xc5, 0x94, 0xa9, 0x93, 0x5c, 0x60, 0xd7, 0x40, 0xc1, + 0xcd, 0xb6, 0x6d, 0xc6, 0x52, 0xb0, 0x0b, 0xa9, 0xf5, 0x80, 0xa2, 0x2e, + 0xb3, 0xa3, 0x28, 0x90, 0xb7, 0xcd, 0xce, 0x66, 0x7a, 0x1e, 0x79, 0x1c, + 0x5d, 0x43, 0x6e, 0xd3, 0xfc, 0xd1, 0x69, 0x61, 0xd8, 0x06, 0xcc, 0xa5, + 0xad, 0x40, 0xd2, 0xa8, 0x26, 0x3e, 0x55, 0x2c, 0xb2, 0xaa, 0xc7, 0x07, + 0x07, 0x2d, 0xac, 0xae, 0x1d, 0x2f, 0x1e, 0xc4, 0x54, 0x89, 0x4d, 0xcf, + 0x08, 0xe5, 0x91, 0xd0, 0xf6, 0xc5, 0x42, 0xaa, 0xe5, 0xe4, 0xe5, 0x4b, + 0x75, 0xa3, 0x63, 0x92, 0xf1, 0x59, 0x49, 0x65, 0xd5, 0x6f, 0xab, 0x3e, + 0x42, 0x70, 0xe1, 0x4a, 0xb5, 0x65, 0xf7, 0x68, 0xae, 0x4f, 0x8b, 0x73, + 0x01, 0xe2, 0x72, 0x41, 0x8e, 0x1f, 0x1c, 0x21, 0x98, 0x30, 0x7e, 0xb5, + 0xd2, 0x02, 0xb4, 0xac, 0x34, 0xa8, 0x98, 0xda, 0x64, 0x7e, 0x71, 0x63, + 0x48, 0x57, 0x19, 0x07, 0x04, 0xf2, 0xb1, 0xea, 0x8c, 0x58, 0x5e, 0x4d, + 0x77, 0x0e, 0x8f, 0xe1, 0x3f, 0x5f, 0x1a, 0xe6, 0x10, 0x54, 0x34, 0x93, + 0xd2, 0xd6, 0xeb, 0xd7, 0x29, 0x3d, 0x31, 0x69, 0xe7, 0x9b, 0x49, 0x58, + 0xb4, 0x7a, 0x85, 0xe6, 0x9f, 0x40, 0x3a, 0x2f, 0x34, 0xb4, 0xd1, 0x84, + 0x60, 0xe2, 0x7d, 0x31, 0x6d, 0x0c, 0x77, 0x56, 0xc0, 0x6e, 0xd0, 0x7c, + 0x14, 0x21, 0x0c, 0x13, 0x0f, 0xa2, 0x6b, 0x3b, 0x68, 0xba, 0x6d, 0x8c, + 0x7c, 0x4d, 0x7d, 0xa6, 0xf3, 0x3d, 0x2f, 0x35, 0x49, 0x9f, 0xcc, 0xdc, + 0xe7, 0x73, 0x72, 0xa0, 0x70, 0xc9, 0xfb, 0x91, 0x6b, 0xf5, 0xba, 0xa3, + 0xe5, 0x7b, 0xa5, 0x2d, 0x7b, 0xf4, 0xe7, 0xdb, 0xb3, 0xad, 0x5a, 0xbe, + 0xa7, 0x6a, 0x7c, 0xd6, 0xeb, 0xf6, 0xd5, 0x4d, 0x5b, 0x33, 0x6f, 0x6a, + 0xbb, 0x91, 0x5f, 0x6f, 0x2d, 0x57, 0x6b, 0xd7, 0x6d, 0x5b, 0xe7, 0x75, + 0xb2, 0x3c, 0xe8, 0x44, 0x2b, 0x22, 0x30, 0xaa, 0x15, 0x88, 0x1b, 0x16, + 0x2b, 0x46, 0x95, 0xc2, 0xc0, 0xaa, 0x40, 0x8a, 0x59, 0x00, 0x03, 0x00, + 0xfc, 0x0f, 0x63, 0x02, 0xd4, 0x2a, 0x93, 0x0e, 0x11, 0xe8, 0xa3, 0xa0, + 0x80, 0x8e, 0x93, 0x03, 0x60, 0x3d, 0xa3, 0x10, 0x29, 0x0d, 0xf3, 0x87, + 0x31, 0x75, 0x43, 0x0c, 0xa8, 0x26, 0x23, 0x10, 0x8c, 0x97, 0x33, 0x10, + 0xc0, 0x1e, 0xa3, 0x0c, 0x54, 0x08, 0xd3, 0x12, 0x40, 0x10, 0x03, 0x8d, + 0xa5, 0x0e, 0x03, 0x29, 0xc8, 0x19, 0xe3, 0x08, 0x04, 0x0a, 0x93, 0xc2, + 0xa4, 0x38, 0x75, 0xf3, 0x58, 0x2c, 0x33, 0x40, 0x73, 0x19, 0x11, 0x62, + 0x02, 0x32, 0x22, 0x84, 0x4b, 0x8d, 0xd9, 0x5f, 0xb3, 0x15, 0x2a, 0x5f, + 0xd2, 0x24, 0x05, 0xb9, 0x4d, 0xc6, 0x07, 0x80, 0x54, 0xb6, 0x90, 0x50, + 0x49, 0xa4, 0x3b, 0x33, 0x11, 0xe7, 0xf5, 0x4c, 0x27, 0x95, 0xdc, 0x52, + 0xea, 0x62, 0xc0, 0x8b, 0xa5, 0xa9, 0x3c, 0xcb, 0xda, 0x4c, 0xdc, 0x1a, + 0x5b, 0xe9, 0x17, 0x60, 0x93, 0xae, 0xcc, 0xc7, 0x6c, 0x50, 0x1f, 0x21, + 0x64, 0x48, 0x2d, 0x92, 0x50, 0x92, 0x9e, 0xa6, 0x1d, 0x57, 0xa4, 0x25, + 0x99, 0x47, 0x7a, 0x24, 0xc7, 0xcd, 0x04, 0x7a, 0x96, 0x9c, 0x2d, 0x18, + 0x2c, 0x07, 0x57, 0x40, 0x3c, 0x2d, 0x59, 0x19, 0x70, 0x42, 0x61, 0x7f, + 0x13, 0xd8, 0x3e, 0xe2, 0xe9, 0x74, 0x9c, 0x7a, 0x52, 0x1c, 0x96, 0x42, + 0x4d, 0x8f, 0x0b, 0xd6, 0xb2, 0xff, 0xfb, 0xd4, 0x60, 0x5e, 0x8f, 0xd8, + 0xc8, 0x70, 0x3f, 0x13, 0xfb, 0x63, 0x70, 0x5c, 0x0e, 0x08, 0x30, 0x2c, + 0x25, 0x6e, 0x22, 0x21, 0xbe, 0xfe, 0x0f, 0xed, 0x8d, 0xc1, 0x59, 0x37, + 0xe1, 0x08, 0x81, 0x15, 0xb8, 0x54, 0x3e, 0x2c, 0xb8, 0x6e, 0x5d, 0x74, + 0xac, 0x3c, 0x9c, 0x2b, 0x2c, 0x0f, 0x47, 0x65, 0xb2, 0x42, 0x71, 0xf0, + 0xe5, 0x87, 0xcf, 0x09, 0x11, 0x15, 0x1c, 0x41, 0x46, 0x4e, 0x4e, 0x62, + 0xfc, 0x0a, 0x0d, 0xee, 0x58, 0x38, 0x65, 0x50, 0xe6, 0xb8, 0xac, 0xe1, + 0x38, 0xe9, 0x29, 0xdb, 0x8e, 0x1e, 0x3f, 0x44, 0xc6, 0x54, 0x4c, 0x68, + 0xbf, 0x4e, 0xbd, 0x33, 0x85, 0x46, 0x84, 0xf2, 0xfa, 0xf7, 0x60, 0x8a, + 0x2b, 0x46, 0x5b, 0x38, 0x2b, 0x2d, 0xa1, 0xf0, 0xd4, 0x89, 0x72, 0x71, + 0xd5, 0x28, 0x8f, 0xa9, 0x18, 0x02, 0xe0, 0x31, 0x09, 0xe2, 0xa9, 0x7c, + 0x46, 0x0e, 0xa5, 0x6b, 0x98, 0xbd, 0x46, 0xc5, 0x39, 0xc9, 0xb1, 0xe5, + 0x12, 0x15, 0x01, 0x8d, 0x0a, 0x20, 0xa9, 0x08, 0xcd, 0x64, 0x86, 0xc5, + 0x46, 0xf0, 0xf9, 0x19, 0x24, 0x2f, 0x3d, 0x6e, 0x88, 0xf6, 0x5e, 0x9d, + 0xfc, 0x88, 0xad, 0x56, 0x67, 0xaa, 0x33, 0x69, 0x4b, 0xb3, 0xa2, 0x6f, + 0x95, 0x5b, 0x9f, 0xab, 0x76, 0xd2, 0xef, 0xa7, 0xf6, 0x95, 0x4a, 0xc9, + 0xb1, 0x2b, 0x6a, 0x17, 0x65, 0xba, 0x18, 0x97, 0x3b, 0xec, 0xc8, 0x77, + 0x6d, 0xe2, 0x38, 0xd2, 0x99, 0x1c, 0x60, 0xb4, 0x7a, 0xa2, 0xbc, 0x72, + 0xb9, 0x8c, 0xa1, 0x31, 0x11, 0x56, 0x40, 0x51, 0x76, 0x30, 0x18, 0x40, + 0xde, 0x06, 0x85, 0xb2, 0x60, 0xa5, 0xbf, 0x54, 0x65, 0x8a, 0x12, 0xd6, + 0x61, 0x64, 0x81, 0x9c, 0x61, 0xda, 0x19, 0x80, 0x72, 0x2c, 0x29, 0x06, + 0x63, 0xed, 0x1c, 0x88, 0x61, 0xba, 0x8f, 0xa6, 0x63, 0xf4, 0x0c, 0x3e, + 0x60, 0x73, 0x84, 0xcc, 0x61, 0x5b, 0x8c, 0x4a, 0x69, 0xdb, 0x4e, 0xf6, + 0x63, 0x24, 0x86, 0xd2, 0x60, 0x7d, 0x02, 0xd8, 0x6a, 0xb5, 0x66, 0xb8, + 0xa4, 0x66, 0xea, 0xa6, 0x3a, 0x52, 0x5b, 0xd4, 0x53, 0x1c, 0x0e, 0x26, + 0x51, 0x00, 0x00, 0x23, 0xea, 0xeb, 0x65, 0x69, 0xda, 0x56, 0x1b, 0x18, + 0x76, 0x95, 0x0c, 0x6c, 0x98, 0x0d, 0xfe, 0x87, 0x5f, 0xd5, 0xee, 0xb7, + 0x54, 0x0d, 0x55, 0x9f, 0x87, 0x29, 0xab, 0x2f, 0xa9, 0x0b, 0x58, 0x5a, + 0xf1, 0xf9, 0x12, 0xea, 0x80, 0x58, 0x44, 0x33, 0x08, 0x8b, 0xbd, 0x4f, + 0x1c, 0x37, 0x0c, 0xbf, 0x77, 0xe9, 0xe7, 0xd9, 0x30, 0x62, 0x13, 0xf3, + 0xe2, 0x1e, 0x16, 0xc9, 0xf1, 0x15, 0xcc, 0x61, 0x1d, 0x94, 0x96, 0x0f, + 0x28, 0x25, 0xad, 0x59, 0x19, 0xb7, 0x18, 0x21, 0x38, 0x86, 0xd5, 0x8b, + 0x27, 0xe5, 0x9a, 0x2b, 0x32, 0x89, 0x00, 0xbc, 0xb9, 0x83, 0xac, 0x4e, + 0x77, 0x48, 0x70, 0xa6, 0x8c, 0xb1, 0x48, 0xb0, 0xf4, 0xfd, 0x02, 0xc5, + 0x7f, 0xb8, 0x94, 0x4c, 0xb2, 0xf4, 0xe5, 0x68, 0xc8, 0xd0, 0x54, 0xec, + 0x88, 0xa9, 0xc6, 0xd3, 0xb7, 0xb1, 0x34, 0x4b, 0x2a, 0x94, 0x8f, 0x4e, + 0x61, 0x13, 0xcf, 0x04, 0x53, 0x95, 0x28, 0xe1, 0x3e, 0x2f, 0x9f, 0xc1, + 0x0a, 0xc5, 0x07, 0x2b, 0x0b, 0x2a, 0x5a, 0x59, 0x01, 0xec, 0x57, 0x3f, + 0x30, 0x71, 0x54, 0x45, 0xc7, 0x35, 0xe4, 0x67, 0x3c, 0xc2, 0x7a, 0xaf, + 0x6c, 0xf7, 0x1e, 0x75, 0x4b, 0x85, 0x52, 0x9f, 0x96, 0xbc, 0xec, 0xb2, + 0x78, 0x74, 0x51, 0x2d, 0x9c, 0x58, 0xa8, 0x4e, 0x29, 0x01, 0x97, 0x04, + 0x92, 0x51, 0xd9, 0x3c, 0x05, 0xad, 0x0a, 0x41, 0x2e, 0x6d, 0x96, 0xb5, + 0x9a, 0x4e, 0x1d, 0x64, 0x0d, 0x6b, 0x93, 0x65, 0xcf, 0xfe, 0xae, 0x99, + 0xa2, 0xcd, 0x31, 0xc5, 0x29, 0xdc, 0xce, 0x72, 0x83, 0x40, 0xf5, 0x37, + 0xb2, 0x12, 0xd9, 0x56, 0x6a, 0x5a, 0x7e, 0xdb, 0xfb, 0x9f, 0x5f, 0xeb, + 0xbf, 0x5a, 0xe8, 0xbe, 0x4e, 0xcc, 0xce, 0x9d, 0xec, 0xa9, 0x6a, 0x23, + 0xb9, 0x95, 0x1f, 0xb2, 0x5b, 0x7a, 0x6c, 0xda, 0x35, 0xb5, 0xa6, 0x8b, + 0xb9, 0xde, 0x46, 0xd6, 0xe4, 0x44, 0x88, 0x0a, 0x28, 0x88, 0xe1, 0x61, + 0x7b, 0x8b, 0xe0, 0x56, 0x15, 0x63, 0x28, 0x7d, 0xea, 0x30, 0x2a, 0x41, + 0x12, 0x30, 0x43, 0x03, 0x91, 0x30, 0x0d, 0x6a, 0xea, 0x36, 0x9c, 0x44, + 0xab, 0x30, 0x3e, 0x80, 0xf3, 0x31, 0x6b, 0x4d, 0x26, 0x3c, 0xe2, 0xd0, + 0x4f, 0x32, 0x33, 0xc1, 0x20, 0x38, 0xdc, 0x4d, 0x74, 0x31, 0xc1, 0x05, + 0xb0, 0x30, 0x6d, 0x82, 0x53, 0x30, 0xac, 0xc5, 0x06, 0x31, 0xd0, 0xb8, + 0x42, 0x31, 0x15, 0xc5, 0x1c, 0x30, 0x4d, 0x81, 0xa3, 0x34, 0x9b, 0xe3, + 0x57, 0x87, 0x30, 0x44, 0x13, 0x1e, 0x3c, 0x26, 0x53, 0x1d, 0x0c, 0x0b, + 0x07, 0x06, 0x0e, 0x18, 0x28, 0x73, 0xce, 0xb7, 0x9d, 0xb1, 0xa0, 0xba, + 0x44, 0xd4, 0xb6, 0x18, 0x04, 0xc3, 0xcb, 0xa8, 0xcb, 0x5c, 0x96, 0x18, + 0x42, 0x1e, 0xe0, 0xb3, 0xb9, 0x75, 0x3b, 0x4f, 0x96, 0x34, 0x39, 0x0b, + 0xd1, 0x31, 0x2d, 0x8b, 0xda, 0x8b, 0xc6, 0x9c, 0xa9, 0x34, 0xec, 0x00, + 0xde, 0x4e, 0x46, 0x68, 0xeb, 0xb8, 0x56, 0x11, 0x92, 0xb7, 0xa7, 0xd4, + 0x87, 0x11, 0xdb, 0x64, 0xe2, 0x78, 0xe0, 0x4b, 0xa8, 0x1f, 0xb8, 0x27, + 0xe1, 0x38, 0xb9, 0x28, 0x90, 0xf6, 0x25, 0x95, 0x64, 0x27, 0x27, 0x18, + 0x4b, 0x4b, 0x88, 0x0a, 0x84, 0x21, 0x3a, 0x79, 0x33, 0xa1, 0x84, 0xb1, + 0x40, 0xaa, 0x69, 0x84, 0x8d, 0x65, 0x52, 0x4c, 0xad, 0x25, 0x8e, 0x0c, + 0xe6, 0x4c, 0x65, 0xec, 0xa1, 0xff, 0xfb, 0xd4, 0x60, 0x5e, 0x0d, 0xd9, + 0x39, 0x70, 0x3e, 0x83, 0xfb, 0x7b, 0x70, 0x54, 0x6e, 0x08, 0x41, 0x20, + 0x22, 0x6e, 0x23, 0xd5, 0xc0, 0xfc, 0x2f, 0xed, 0x8d, 0xc1, 0x68, 0x38, + 0x20, 0xc0, 0x80, 0x95, 0xb8, 0x86, 0xf3, 0xf7, 0xad, 0xab, 0xec, 0x0d, + 0x0c, 0x2d, 0xe9, 0xe6, 0xdb, 0xae, 0xd9, 0x90, 0xe5, 0x14, 0x78, 0xf2, + 0x2b, 0x15, 0xec, 0xcd, 0x4a, 0x13, 0xa0, 0xd1, 0x7d, 0xbf, 0x01, 0xc9, + 0x76, 0x9f, 0x36, 0x57, 0x99, 0x1c, 0x60, 0xa4, 0x95, 0x88, 0xe6, 0x46, + 0xf7, 0xaa, 0xd4, 0x93, 0x62, 0x91, 0x44, 0xb0, 0xa9, 0x8c, 0xe3, 0x15, + 0x73, 0x11, 0xc6, 0x1a, 0x75, 0x55, 0x1d, 0x59, 0x9b, 0xbc, 0x52, 0x44, + 0x47, 0xc9, 0x67, 0x54, 0x70, 0x62, 0x62, 0x34, 0x94, 0xad, 0x8f, 0x61, + 0xa7, 0x9b, 0xd4, 0xb2, 0x46, 0x66, 0x3e, 0x98, 0xa3, 0x1d, 0xa4, 0x51, + 0xcb, 0x15, 0x44, 0x9e, 0x3f, 0x4e, 0x83, 0x54, 0xf7, 0x76, 0x7f, 0x96, + 0xa7, 0x1a, 0xb0, 0xb0, 0xb8, 0x01, 0x69, 0xe9, 0xec, 0x94, 0x64, 0x2f, + 0xb4, 0x98, 0x98, 0x4d, 0xc8, 0xc4, 0x03, 0x98, 0xb4, 0xf3, 0x41, 0x10, + 0x22, 0x29, 0xa0, 0x09, 0x5d, 0x93, 0x80, 0x4a, 0x88, 0x7d, 0x9e, 0xde, + 0x8f, 0x23, 0x6d, 0x97, 0x2b, 0x15, 0xb6, 0xa5, 0x7d, 0xb6, 0xfd, 0x0c, + 0x95, 0x69, 0xbd, 0xd9, 0xe9, 0xdb, 0xa3, 0x91, 0x2d, 0x46, 0x2f, 0x77, + 0xfa, 0x53, 0xfd, 0xff, 0xbf, 0x6f, 0x4b, 0x3b, 0x3e, 0xab, 0x56, 0x66, + 0x1d, 0x42, 0x18, 0xa6, 0x40, 0xa4, 0x64, 0x06, 0x1d, 0xce, 0xe2, 0xd0, + 0x41, 0x0c, 0x14, 0x58, 0x53, 0x18, 0x1f, 0x20, 0x62, 0x18, 0x37, 0x00, + 0x32, 0x18, 0x7f, 0x4c, 0x01, 0x1c, 0x25, 0xe1, 0x96, 0x98, 0x39, 0x21, + 0x99, 0x18, 0x35, 0x68, 0xda, 0x9a, 0x99, 0xeb, 0xea, 0x18, 0x23, 0x61, + 0xf5, 0x1d, 0x3b, 0x07, 0xe1, 0x18, 0x46, 0xa1, 0x70, 0x98, 0x1f, 0x20, + 0x73, 0x98, 0x80, 0x02, 0x4c, 0x9b, 0x3a, 0x34, 0x4e, 0x98, 0xf2, 0x41, + 0x8b, 0x98, 0x20, 0xa0, 0x57, 0x1d, 0xf1, 0x18, 0xd4, 0x71, 0x88, 0x1d, + 0x99, 0xb1, 0x10, 0xf0, 0x28, 0x90, 0xdc, 0x28, 0xc1, 0x80, 0x89, 0x05, + 0x92, 0x4d, 0x04, 0x6e, 0x38, 0x28, 0xd0, 0x48, 0x94, 0x2a, 0x02, 0xbd, + 0x81, 0x42, 0x0c, 0x28, 0x12, 0x16, 0xae, 0x54, 0xde, 0x2a, 0x34, 0x0a, + 0x93, 0x72, 0x38, 0x15, 0x31, 0x19, 0xf4, 0x4d, 0x67, 0xbf, 0xe8, 0xae, + 0xc4, 0xd4, 0xc1, 0x68, 0x4a, 0x17, 0x3b, 0xbe, 0xc8, 0xe6, 0x1d, 0x79, + 0xa9, 0x43, 0x7a, 0xee, 0xbd, 0x2d, 0x7d, 0xb8, 0xc0, 0x63, 0xba, 0xf3, + 0xe7, 0x46, 0xa3, 0x73, 0x01, 0x42, 0xc4, 0xf7, 0x38, 0x12, 0x13, 0x36, + 0x66, 0xb0, 0x82, 0x5e, 0x1f, 0x03, 0x65, 0x17, 0x11, 0xcb, 0xc8, 0x03, + 0xd8, 0xec, 0x17, 0x38, 0xbd, 0x5d, 0x8c, 0x29, 0x12, 0x96, 0x4a, 0xce, + 0x9f, 0x8e, 0x08, 0x65, 0x43, 0xd3, 0x92, 0xf9, 0x65, 0x84, 0x28, 0x87, + 0x52, 0xa2, 0x5f, 0x41, 0x74, 0xbc, 0xa4, 0xac, 0x48, 0x12, 0x0a, 0xa7, + 0xe5, 0x22, 0x5a, 0x12, 0xf5, 0xcb, 0x14, 0x27, 0x24, 0xda, 0x85, 0xfe, + 0x5e, 0x72, 0x72, 0x25, 0x4b, 0xe0, 0xdd, 0xd1, 0xeb, 0xcf, 0x8f, 0x4f, + 0x0b, 0xca, 0x36, 0xe6, 0x2e, 0x12, 0x87, 0x13, 0x73, 0x12, 0xca, 0xe3, + 0x59, 0xa1, 0x9a, 0xe5, 0x6f, 0x9a, 0xaf, 0x58, 0x71, 0x05, 0x9e, 0x62, + 0xeb, 0x10, 0x61, 0x2c, 0x08, 0xe8, 0x49, 0x47, 0x18, 0x13, 0x15, 0x16, + 0xaf, 0xf3, 0xb8, 0x0f, 0x9a, 0xa5, 0x1a, 0x40, 0x64, 0xec, 0x41, 0x3f, + 0x48, 0x5e, 0x40, 0x5e, 0x67, 0x45, 0xba, 0xf7, 0x90, 0xc0, 0xa9, 0x68, + 0x7d, 0x2b, 0x1c, 0x03, 0x12, 0xf0, 0x82, 0x41, 0x39, 0x99, 0xf8, 0xc5, + 0x74, 0x30, 0x8e, 0xa3, 0x66, 0x7a, 0x67, 0x26, 0xe2, 0x05, 0x4a, 0xcf, + 0x10, 0x8d, 0x3c, 0xf3, 0x08, 0xcb, 0x74, 0xbf, 0x4a, 0xf5, 0xd1, 0x9a, + 0xd6, 0x9d, 0xb7, 0x65, 0xa7, 0xce, 0xba, 0x7d, 0x7a, 0xae, 0xf3, 0x2a, + 0xa6, 0x88, 0xba, 0xb6, 0xfb, 0x59, 0xa9, 0x2b, 0x19, 0x59, 0x1d, 0x2d, + 0x4b, 0x6e, 0x4f, 0xbf, 0x74, 0x66, 0x2d, 0xea, 0x64, 0x3d, 0x2d, 0x7a, + 0x34, 0xe5, 0x7c, 0x4c, 0xee, 0x62, 0x06, 0x0d, 0x38, 0xb3, 0xab, 0x94, + 0x14, 0x3e, 0x0c, 0x1f, 0x43, 0x90, 0xc2, 0x85, 0x03, 0x55, 0x30, 0x1a, + 0xc0, 0xad, 0x30, 0x88, 0x04, 0x08, 0x30, 0x4a, 0x4b, 0xee, 0x3a, 0x2d, + 0x40, 0x7c, 0x31, 0x67, 0xc0, 0x01, 0x31, 0x95, 0x04, 0x7b, 0x3d, 0x2d, + 0x00, 0xcd, 0x31, 0x0a, 0x88, 0x00, 0x39, 0xe8, 0xe5, 0xa7, 0x31, 0x21, + 0x02, 0x75, 0x30, 0xfe, 0xc3, 0xae, 0x30, 0x63, 0x41, 0xbc, 0x39, 0x14, + 0x94, 0x48, 0x32, 0x6d, 0x40, 0x24, 0x30, 0xa2, 0x80, 0x75, 0x39, 0xf8, + 0x08, 0xcf, 0x49, 0x63, 0x0c, 0x8a, 0x8b, 0x9c, 0x60, 0x82, 0xb2, 0x6c, + 0x83, 0x41, 0xa1, 0x60, 0x11, 0x85, 0xc3, 0x43, 0xc6, 0x24, 0xc3, 0x03, + 0x02, 0xc1, 0xc2, 0xd4, 0x8f, 0x12, 0x0b, 0x25, 0x0a, 0x4b, 0xbb, 0x29, + 0x50, 0x97, 0x4c, 0x75, 0x19, 0x05, 0x02, 0x51, 0xb5, 0x67, 0x76, 0x64, + 0x89, 0x68, 0xef, 0x4b, 0xdf, 0xc7, 0xca, 0x55, 0x07, 0x28, 0x23, 0x08, + 0x77, 0xa9, 0x5e, 0x55, 0xdc, 0xd4, 0xdd, 0xc6, 0xe1, 0x0d, 0xc5, 0x1d, + 0x88, 0x39, 0xd3, 0x7d, 0x0d, 0x33, 0x9c, 0x9a, 0x28, 0x15, 0x88, 0x79, + 0xee, 0xa1, 0x58, 0x5b, 0x3c, 0x56, 0x0e, 0x78, 0x90, 0x10, 0x95, 0x6a, + 0xd1, 0xd6, 0xc5, 0x73, 0x48, 0xff, 0xfb, 0xd4, 0x60, 0x51, 0x8d, 0xd9, + 0x72, 0x70, 0x3e, 0x83, 0xfc, 0x7b, 0x70, 0x55, 0x4d, 0xe8, 0x42, 0x2c, + 0x62, 0x6e, 0x65, 0xb5, 0xc0, 0xfa, 0x4f, 0xed, 0xed, 0xc1, 0x61, 0x38, + 0x21, 0x04, 0xd1, 0x95, 0xb8, 0xfe, 0x7e, 0xbc, 0x7f, 0xb9, 0x23, 0xf0, + 0x5b, 0x14, 0x47, 0xfb, 0x9a, 0x59, 0x53, 0x34, 0xdb, 0x99, 0x48, 0x93, + 0x5e, 0x2f, 0xaf, 0xae, 0xde, 0x80, 0xc9, 0xf8, 0x91, 0x2c, 0x6a, 0x4b, + 0x22, 0x1b, 0x1c, 0xa8, 0xda, 0x9e, 0x4d, 0x3c, 0x39, 0x99, 0x5c, 0x55, + 0x85, 0x89, 0xc1, 0x50, 0x64, 0xa2, 0xd4, 0x96, 0x4c, 0xa7, 0x68, 0x9f, + 0x69, 0x4f, 0x34, 0xc1, 0x62, 0x72, 0x41, 0x3d, 0x67, 0x91, 0x89, 0x92, + 0x53, 0xba, 0x45, 0xea, 0x51, 0x54, 0x68, 0x3e, 0x63, 0x5c, 0xa6, 0x19, + 0x90, 0x4d, 0x47, 0x7d, 0x1c, 0x93, 0xad, 0x47, 0x5d, 0x63, 0xb6, 0x3a, + 0x73, 0x4a, 0x21, 0xac, 0x2a, 0xfb, 0x47, 0x65, 0x57, 0x3c, 0x6d, 0x78, + 0xed, 0x95, 0xce, 0x2c, 0x35, 0xd1, 0xf9, 0x95, 0x71, 0xf0, 0xa0, 0x99, + 0xc6, 0x54, 0x53, 0x0c, 0x06, 0xe7, 0xd1, 0xcb, 0x1c, 0x4e, 0x65, 0xa8, + 0x8e, 0x04, 0x31, 0xe1, 0x24, 0x51, 0x28, 0xcb, 0xa9, 0xe6, 0x5c, 0xda, + 0x02, 0x40, 0x00, 0x18, 0xae, 0x36, 0xc9, 0xd6, 0xde, 0xd8, 0xb7, 0xc5, + 0x24, 0x95, 0xd8, 0xce, 0x5c, 0xbf, 0x2f, 0xb9, 0x7e, 0x59, 0x45, 0x4c, + 0xf0, 0xbf, 0x4a, 0x12, 0xf0, 0xb8, 0x7f, 0xb9, 0x7a, 0x75, 0xa6, 0xcb, + 0x7d, 0xec, 0x9d, 0x2c, 0xaf, 0x4b, 0x22, 0x6f, 0xeb, 0xaa, 0xd9, 0xa8, + 0x6b, 0x11, 0x65, 0xb7, 0x5d, 0x6b, 0x64, 0xd3, 0xcd, 0x91, 0xab, 0x4a, + 0x95, 0x34, 0x56, 0xfd, 0xf5, 0x7c, 0xac, 0xcc, 0xf6, 0x2b, 0xa2, 0x36, + 0x8c, 0xb0, 0x14, 0x00, 0x20, 0x23, 0x39, 0xa2, 0xcc, 0xc6, 0x9d, 0xf0, + 0xd0, 0x21, 0x80, 0xc0, 0x3f, 0x03, 0x24, 0xc1, 0x20, 0x13, 0x98, 0xc3, + 0x61, 0x28, 0xb4, 0xe4, 0x8d, 0x11, 0x48, 0xc1, 0x47, 0x0a, 0xac, 0xc5, + 0x35, 0x4c, 0xc8, 0xc1, 0xdc, 0x31, 0x54, 0xc5, 0x8e, 0x3e, 0x04, 0xd4, + 0x3b, 0xbf, 0xe8, 0xc1, 0x5d, 0x15, 0x68, 0xc5, 0x48, 0x06, 0x84, 0xc1, + 0x7f, 0x12, 0xb0, 0xe4, 0x0f, 0x67, 0x08, 0xc7, 0xa4, 0x06, 0x50, 0xc2, + 0x1f, 0x03, 0xa4, 0xe0, 0x18, 0x8d, 0xbe, 0x34, 0xd1, 0x96, 0x8c, 0x90, + 0xf9, 0x2e, 0x8c, 0x60, 0x00, 0x1a, 0x02, 0xa5, 0x02, 0x45, 0x43, 0xcb, + 0x69, 0x14, 0x08, 0x01, 0x05, 0x11, 0x25, 0x18, 0xd1, 0xe2, 0x57, 0xa4, + 0x92, 0xe6, 0x01, 0x0b, 0xa4, 0x4b, 0x18, 0x6f, 0x15, 0x13, 0x25, 0x63, + 0x2e, 0x4a, 0xe8, 0x72, 0x1f, 0x68, 0xe3, 0x32, 0x15, 0x01, 0x4f, 0x1a, + 0x55, 0x36, 0x8a, 0x2f, 0x15, 0x01, 0x72, 0x23, 0x0f, 0x24, 0x9a, 0x35, + 0x06, 0x57, 0xbb, 0x40, 0xe3, 0x47, 0xcd, 0xf9, 0xd4, 0xe7, 0xd9, 0x0d, + 0x66, 0x61, 0x2f, 0x8a, 0x13, 0xcd, 0x95, 0x0e, 0x51, 0xb1, 0xa3, 0x10, + 0xb3, 0xf2, 0x39, 0x6e, 0x5d, 0x3a, 0x6b, 0x67, 0x8a, 0x5b, 0x5b, 0x9f, + 0xc1, 0x3d, 0x4b, 0x92, 0xe9, 0x28, 0xaf, 0x51, 0x28, 0x18, 0x2e, 0xe4, + 0x9d, 0x79, 0xa8, 0x4a, 0x05, 0x7a, 0xa1, 0x8d, 0x3c, 0xa7, 0x8a, 0x81, + 0x50, 0xd1, 0x1e, 0xe0, 0xac, 0x57, 0x9e, 0x68, 0x74, 0x35, 0x6a, 0xb9, + 0x72, 0xc1, 0x43, 0x29, 0x69, 0x16, 0xb6, 0xdf, 0x11, 0xe2, 0x93, 0x07, + 0xbc, 0x65, 0x45, 0xe8, 0xc4, 0xa3, 0x61, 0x73, 0x57, 0xc8, 0xfd, 0xea, + 0x75, 0x38, 0xfd, 0x48, 0xc6, 0xe6, 0x84, 0xc3, 0x7e, 0xa8, 0x64, 0xc2, + 0xe1, 0xc6, 0x1a, 0xae, 0xea, 0x13, 0x49, 0xf1, 0xd0, 0xd8, 0xdc, 0x72, + 0xb0, 0x26, 0x57, 0x4c, 0x4b, 0x0d, 0xd0, 0x95, 0x5b, 0x5e, 0x46, 0x1e, + 0x2c, 0x71, 0x15, 0xb2, 0x2b, 0x97, 0x6c, 0x1a, 0xdb, 0x84, 0x76, 0x05, + 0x0a, 0xda, 0x5d, 0x5a, 0x90, 0x61, 0x62, 0x86, 0xc6, 0xe9, 0x39, 0x6b, + 0x9b, 0xcf, 0x15, 0x64, 0x9d, 0xc4, 0xef, 0x34, 0x15, 0x26, 0xd4, 0x25, + 0x21, 0xc6, 0x77, 0x90, 0x50, 0x31, 0x59, 0x9a, 0x29, 0x9a, 0xa9, 0xee, + 0xce, 0xb5, 0x55, 0xa5, 0xd0, 0x54, 0xad, 0x29, 0xdb, 0x33, 0x33, 0xe9, + 0x12, 0xd2, 0xb9, 0x64, 0xde, 0x47, 0x9f, 0xc5, 0xfc, 0xcd, 0x6b, 0x35, + 0x27, 0x75, 0x65, 0x79, 0xff, 0xd5, 0x55, 0x98, 0xbd, 0x7f, 0xba, 0xae, + 0xe6, 0x2e, 0xbc, 0xe7, 0x56, 0xe8, 0xdd, 0xee, 0xd7, 0xfb, 0x99, 0xde, + 0xfa, 0xde, 0xad, 0xf9, 0x96, 0x9a, 0xad, 0x93, 0x4f, 0x5a, 0x6c, 0xd5, + 0x91, 0x9c, 0xad, 0x72, 0x31, 0x95, 0x56, 0xee, 0xc2, 0xaa, 0x1e, 0x1a, + 0x26, 0x60, 0xc1, 0x37, 0x4d, 0x10, 0xd1, 0xea, 0x25, 0x02, 0x1c, 0xc0, + 0x56, 0x14, 0x00, 0xc4, 0x25, 0x53, 0x3c, 0xdb, 0xc9, 0x0f, 0x78, 0xc0, + 0xf1, 0x08, 0x24, 0xc0, 0xf1, 0x15, 0x78, 0xd2, 0xa3, 0x12, 0xbc, 0xc4, + 0x3e, 0x36, 0x88, 0xff, 0xc2, 0x98, 0x64, 0xc7, 0xeb, 0x1f, 0x8c, 0xc3, + 0x11, 0x09, 0x4c, 0xc2, 0x3f, 0x11, 0xac, 0xd7, 0xd0, 0xa0, 0xf4, 0xc1, + 0xf4, 0x0b, 0x78, 0xc2, 0x22, 0x04, 0xa8, 0xec, 0x2b, 0x73, 0x76, 0x1c, + 0x8c, 0xfe, 0x89, 0x31, 0x49, 0xfc, 0xc9, 0xc1, 0x23, 0x01, 0x09, 0xcc, + 0x22, 0x16, 0x30, 0x00, 0x64, 0xc4, 0xa0, 0x22, 0x61, 0x1b, 0x06, 0x16, + 0x0c, 0x20, 0xa2, 0x49, 0x32, 0x36, 0x56, 0x90, 0x85, 0xd5, 0x41, 0xc7, + 0xe5, 0x57, 0xa1, 0x12, 0x26, 0xb3, 0x66, 0x60, 0xbf, 0x90, 0xec, 0xef, + 0xb2, 0x86, 0x76, 0xb0, 0x30, 0xff, 0xfb, 0xd4, 0x60, 0x3a, 0x8d, 0xd9, + 0x63, 0x70, 0x3e, 0x83, 0xfc, 0x7b, 0x70, 0x51, 0x6e, 0x08, 0x41, 0x40, + 0x25, 0x6e, 0x1f, 0xf9, 0xc1, 0x00, 0x2f, 0xe9, 0x8d, 0xc1, 0x32, 0xb7, + 0xe1, 0x44, 0xd0, 0x89, 0xb8, 0xb5, 0xca, 0xf3, 0x2e, 0x58, 0x7e, 0x02, + 0xa0, 0x69, 0x90, 0x13, 0x8f, 0x09, 0xaf, 0x31, 0x19, 0x82, 0x2b, 0xbf, + 0xac, 0xf9, 0xad, 0x00, 0xc0, 0xb4, 0xb0, 0xa7, 0x3b, 0x16, 0x8c, 0xf2, + 0xd8, 0x72, 0xb8, 0x41, 0x42, 0x9c, 0x91, 0x0a, 0x74, 0x09, 0xbc, 0xa2, + 0x45, 0xaa, 0x56, 0x61, 0x31, 0x44, 0x5c, 0x22, 0x5c, 0x5e, 0xc8, 0xa5, + 0x95, 0xf1, 0x41, 0x4c, 0x42, 0x56, 0x9c, 0xd2, 0xc7, 0x9d, 0xbd, 0xac, + 0xea, 0x4c, 0x25, 0x5d, 0xf5, 0x0e, 0x14, 0x08, 0xf6, 0x28, 0xcd, 0x8d, + 0xec, 0x6b, 0xb5, 0x29, 0x80, 0x84, 0x37, 0xa3, 0xb9, 0xbe, 0x87, 0xad, + 0x28, 0x9c, 0x5a, 0xd5, 0xa9, 0x64, 0xf4, 0x26, 0xf5, 0x2a, 0x14, 0x87, + 0x4e, 0xc4, 0xc4, 0x8a, 0x5c, 0x16, 0xf5, 0x4c, 0x04, 0x26, 0xca, 0x57, + 0x8c, 0x0a, 0x53, 0xa6, 0x06, 0xd5, 0x0a, 0x9a, 0xc2, 0x5e, 0x6d, 0x38, + 0x1b, 0xa2, 0xc9, 0x09, 0x70, 0xdc, 0x87, 0x3f, 0x3b, 0x76, 0xd9, 0x3a, + 0xb2, 0x2e, 0x65, 0x5e, 0x6d, 0x81, 0x3a, 0xe1, 0x4b, 0x3a, 0xd3, 0x22, + 0x63, 0x0e, 0x4d, 0x8c, 0xae, 0xdc, 0x52, 0x2a, 0x39, 0x55, 0x31, 0x15, + 0x05, 0xe5, 0x81, 0x87, 0x25, 0xcd, 0x1a, 0x8a, 0x98, 0xcb, 0x3a, 0x50, + 0x47, 0xb3, 0x1c, 0x64, 0x41, 0x39, 0x4b, 0x99, 0x62, 0x00, 0x5d, 0x99, + 0xd4, 0x52, 0x51, 0xe4, 0x59, 0x07, 0x4e, 0xc5, 0x9d, 0x51, 0xa8, 0x50, + 0x8e, 0x2f, 0xd6, 0xd9, 0x5f, 0x22, 0xd4, 0x8e, 0x12, 0x99, 0xeb, 0xea, + 0xd3, 0x5f, 0xd1, 0x77, 0xfd, 0xb6, 0xff, 0x6f, 0x63, 0xed, 0xad, 0xdd, + 0x17, 0xd5, 0xba, 0xb5, 0x2b, 0xe9, 0xf6, 0xb3, 0x57, 0xb6, 0xcf, 0x69, + 0xa9, 0x64, 0x4a, 0xd2, 0x9b, 0xda, 0xfb, 0xc9, 0x69, 0x1d, 0x94, 0xaa, + 0xca, 0x8c, 0x42, 0x12, 0x26, 0x66, 0x17, 0x64, 0x12, 0x15, 0x0c, 0x21, + 0x84, 0x07, 0xa8, 0x80, 0xa6, 0x39, 0x46, 0x01, 0xb0, 0x0b, 0x26, 0x00, + 0xc8, 0x5b, 0xc6, 0x16, 0x1a, 0x2f, 0xe6, 0x57, 0x58, 0x63, 0x00, 0x20, + 0x16, 0x8c, 0x05, 0xf0, 0xb9, 0x4c, 0x39, 0xc1, 0xdc, 0x0c, 0x45, 0x30, + 0x3c, 0xcf, 0x78, 0xf1, 0x8c, 0xcc, 0x6c, 0x61, 0x5a, 0x8c, 0x14, 0xb0, + 0x39, 0x8c, 0x16, 0xa0, 0xb6, 0x0c, 0x3a, 0x45, 0x04, 0x0c, 0x09, 0x10, + 0x24, 0x4c, 0x12, 0x20, 0x2b, 0x4e, 0x89, 0x00, 0x14, 0x43, 0x02, 0x38, + 0x65, 0xf9, 0x09, 0x36, 0x1a, 0xd4, 0xdd, 0x54, 0xe7, 0x65, 0xc8, 0xa2, + 0xe4, 0xca, 0x5d, 0x92, 0xff, 0x3c, 0x8f, 0x94, 0xd4, 0x1e, 0xc2, 0x9d, + 0x88, 0x4b, 0x83, 0x04, 0x4c, 0x42, 0x9f, 0x87, 0xd7, 0x27, 0xe7, 0x2b, + 0x19, 0x4a, 0xa1, 0xe9, 0x34, 0x31, 0x17, 0xad, 0x4e, 0xfc, 0x3d, 0x2e, + 0x2c, 0x1d, 0xd8, 0x72, 0x5a, 0xe9, 0x43, 0x5e, 0xd1, 0x83, 0xce, 0xaa, + 0x48, 0x5f, 0x44, 0x90, 0x1a, 0xbb, 0xeb, 0x98, 0x4a, 0x78, 0x84, 0xeb, + 0x86, 0x28, 0x2f, 0x6a, 0xca, 0xac, 0x5d, 0x46, 0xec, 0x76, 0x4a, 0x61, + 0x65, 0x19, 0x4a, 0x6e, 0xfa, 0x93, 0x94, 0x68, 0x4b, 0x53, 0xa2, 0x7c, + 0xab, 0x88, 0x4b, 0x18, 0xaa, 0x23, 0xf5, 0x87, 0xe1, 0x22, 0x13, 0x8d, + 0x7e, 0xb0, 0x98, 0xa9, 0x73, 0x83, 0xb8, 0x14, 0x2a, 0x61, 0xc3, 0xcf, + 0x56, 0xd4, 0x5e, 0xb0, 0xa8, 0xf9, 0x8a, 0x63, 0xd3, 0xc6, 0x1c, 0x82, + 0x0b, 0xc9, 0xe1, 0xeb, 0xf6, 0x2d, 0xb1, 0x1c, 0x15, 0x69, 0x41, 0xe2, + 0x7f, 0x38, 0x97, 0x10, 0xce, 0x94, 0x17, 0x15, 0xb6, 0xb5, 0x0a, 0xf7, + 0x39, 0xb3, 0xe7, 0x8b, 0xbd, 0xfa, 0xad, 0x85, 0x7d, 0xfd, 0x32, 0x4b, + 0x22, 0x55, 0x2b, 0x4b, 0x4d, 0xa1, 0x38, 0x7c, 0x66, 0x6a, 0x2e, 0x29, + 0x50, 0xa4, 0xa2, 0xf0, 0x26, 0x39, 0x0e, 0x49, 0xc3, 0x63, 0x03, 0xb4, + 0xd9, 0x47, 0x2b, 0x45, 0x8d, 0x5d, 0x57, 0x5a, 0x7a, 0x20, 0x1d, 0x11, + 0x09, 0xa2, 0x93, 0xcf, 0x97, 0xa6, 0x62, 0xd4, 0x48, 0xc4, 0x8e, 0xe2, + 0x0f, 0xbb, 0x76, 0xf5, 0xd1, 0x5f, 0xd2, 0xba, 0x7c, 0xe6, 0xd6, 0xbd, + 0xd9, 0x7a, 0xef, 0xfa, 0x7a, 0xf6, 0xa3, 0xd6, 0xfe, 0xc6, 0xb5, 0x9f, + 0x75, 0xf4, 0xd9, 0x3a, 0xfa, 0x7b, 0x3a, 0x7b, 0xf2, 0x7b, 0x95, 0x91, + 0xcd, 0x65, 0x06, 0xa4, 0x18, 0x8c, 0xce, 0x2c, 0xcd, 0xd0, 0xc0, 0x23, + 0x98, 0x53, 0xd5, 0x30, 0x16, 0x81, 0x01, 0x30, 0x3b, 0xc3, 0x2a, 0x30, + 0xac, 0x57, 0x2f, 0x31, 0x9e, 0x84, 0xce, 0x30, 0x1a, 0x40, 0xfd, 0x30, + 0x7b, 0x85, 0x26, 0x33, 0xaf, 0x04, 0x65, 0x31, 0x65, 0x0a, 0xa7, 0x3e, + 0x90, 0xa7, 0x98, 0x31, 0x0f, 0x43, 0xaf, 0x30, 0xfc, 0x01, 0xc1, 0x30, + 0x7b, 0x40, 0x24, 0x33, 0xc3, 0x56, 0xb5, 0x30, 0x4e, 0x00, 0x65, 0x2b, + 0x01, 0x44, 0xd2, 0xa0, 0x18, 0x29, 0xb1, 0xc2, 0x4f, 0x9a, 0xb3, 0x80, + 0xb6, 0x1d, 0x4c, 0x48, 0x23, 0x18, 0xd1, 0xe6, 0x89, 0x8d, 0x45, 0x75, + 0x83, 0x41, 0x40, 0x52, 0x2b, 0x08, 0x40, 0x0a, 0x76, 0x2a, 0xab, 0x12, + 0x86, 0xd6, 0xca, 0x92, 0x5d, 0x29, 0xd5, 0x0c, 0x35, 0xf4, 0xbc, 0xbe, + 0xdc, 0x19, 0x12, 0xf9, 0x6b, 0xcb, 0xf6, 0x1e, 0x84, 0xb1, 0x37, 0x51, + 0xef, 0x62, 0xcd, 0x82, 0x1f, 0x89, 0x3b, 0x2e, 0x95, 0x78, 0x09, 0xc9, + 0xc9, 0x56, 0xb2, 0x9f, 0x6a, 0xff, 0xfb, 0xd4, 0x60, 0x43, 0x0f, 0xd8, + 0xfe, 0x70, 0x3f, 0x03, 0xf9, 0x7b, 0x70, 0x51, 0xae, 0x08, 0x40, 0x2c, + 0x25, 0x6e, 0x24, 0x51, 0xc0, 0xfa, 0x0f, 0xe5, 0xed, 0xc1, 0x51, 0xb8, + 0x21, 0x04, 0x80, 0x89, 0xb8, 0x2e, 0xe9, 0x29, 0x8f, 0xa6, 0xa6, 0xd7, + 0x05, 0x6a, 0xa1, 0x18, 0xb9, 0x49, 0x2b, 0xca, 0x73, 0x90, 0xb9, 0xaa, + 0x11, 0x71, 0x91, 0x29, 0x06, 0xc3, 0x25, 0x75, 0x22, 0x8e, 0xca, 0x74, + 0xa4, 0x05, 0x84, 0xeb, 0x94, 0xac, 0x38, 0x99, 0x5e, 0x86, 0x35, 0xa9, + 0xdc, 0x25, 0xbd, 0x5b, 0x1a, 0xd7, 0xd5, 0xae, 0x2c, 0x6f, 0x95, 0x4a, + 0xc5, 0x55, 0x20, 0xb8, 0x2a, 0x9e, 0xb1, 0x2b, 0x59, 0x19, 0x0e, 0xa4, + 0x02, 0xd1, 0xf9, 0x74, 0xfc, 0x28, 0x30, 0x57, 0x2d, 0xf1, 0xab, 0x24, + 0x56, 0x65, 0x63, 0x82, 0xf4, 0x76, 0xb7, 0xeb, 0xf1, 0xa7, 0x8c, 0xe6, + 0x9e, 0x84, 0xb5, 0x3e, 0xae, 0xb8, 0x7b, 0x57, 0xb1, 0x1c, 0x95, 0x0f, + 0x5e, 0xb5, 0xbe, 0xbc, 0x55, 0x2b, 0xaa, 0x45, 0x62, 0x6b, 0x8a, 0xb2, + 0xbc, 0xfd, 0x70, 0xbe, 0x9c, 0x80, 0xf1, 0x8d, 0x9e, 0x56, 0x47, 0xec, + 0x8a, 0xa8, 0x91, 0x55, 0xab, 0xf1, 0x50, 0x4a, 0x06, 0x76, 0xab, 0xc2, + 0xe6, 0x49, 0x96, 0x5d, 0x07, 0xcb, 0x0a, 0x71, 0xb8, 0xfc, 0x64, 0x28, + 0xce, 0x53, 0xd4, 0x3b, 0x7d, 0xb0, 0xfa, 0x8e, 0xbb, 0xae, 0xae, 0x82, + 0x11, 0x51, 0x06, 0x87, 0x73, 0x2c, 0xbf, 0xd9, 0x66, 0x48, 0x3e, 0x95, + 0x12, 0xfa, 0x36, 0xfb, 0xbd, 0x26, 0x79, 0xfb, 0xa7, 0x6e, 0xdf, 0xfb, + 0xd9, 0x6d, 0xd6, 0xac, 0xd2, 0x7f, 0x2e, 0x92, 0xa5, 0x09, 0x44, 0xee, + 0xf5, 0x4c, 0xfa, 0xdd, 0xe8, 0x9d, 0xf2, 0xdd, 0x99, 0xaf, 0x6e, 0xd6, + 0xdb, 0xab, 0x56, 0x5b, 0x5d, 0x9d, 0x5c, 0x6b, 0x0a, 0x9c, 0xc2, 0x28, + 0xa4, 0x71, 0x41, 0x75, 0x18, 0x34, 0x5d, 0x40, 0xa5, 0x0e, 0x99, 0x43, + 0xc6, 0x06, 0xa0, 0x1b, 0xe6, 0x08, 0x98, 0x4a, 0x06, 0x10, 0x3a, 0xbf, + 0xe6, 0xb8, 0x90, 0x98, 0x46, 0x13, 0x80, 0x40, 0x66, 0x15, 0xa8, 0xac, + 0x06, 0x9a, 0x49, 0x57, 0xe6, 0x0e, 0xea, 0x4f, 0x06, 0x71, 0xaf, 0x89, + 0xe6, 0x11, 0x60, 0x82, 0xe6, 0x29, 0x98, 0x32, 0x46, 0x07, 0xc0, 0x4a, + 0xa6, 0x85, 0x31, 0xd3, 0x06, 0x28, 0x58, 0x16, 0x06, 0x04, 0x90, 0x0d, + 0x44, 0x34, 0x98, 0x76, 0x99, 0xc3, 0x98, 0x5c, 0x18, 0x29, 0x1a, 0xa8, + 0xab, 0xb4, 0x04, 0xa0, 0x25, 0x59, 0x16, 0xbc, 0x52, 0x4a, 0x9e, 0x81, + 0x15, 0xb0, 0x62, 0xf9, 0x41, 0xaa, 0x7e, 0x62, 0x92, 0x1d, 0x62, 0x4d, + 0xa5, 0x14, 0xd7, 0x24, 0xd1, 0x56, 0xd9, 0xf0, 0x6b, 0xae, 0x93, 0xe3, + 0x39, 0x27, 0x8d, 0xb6, 0x94, 0x96, 0xde, 0x36, 0x94, 0xe7, 0x50, 0x45, + 0xa2, 0x4c, 0x79, 0xad, 0x3d, 0x8a, 0x57, 0x12, 0xee, 0xc0, 0x4a, 0xd5, + 0xaf, 0x94, 0x69, 0xc5, 0x52, 0xc2, 0x15, 0x23, 0x54, 0x46, 0xa3, 0xb9, + 0x98, 0xed, 0xdc, 0xa4, 0x0e, 0xec, 0xe7, 0x63, 0x01, 0xe0, 0x5b, 0x1f, + 0x1e, 0x75, 0x32, 0x18, 0xac, 0xd8, 0x68, 0x40, 0x5a, 0x62, 0x54, 0x39, + 0x44, 0xba, 0x9d, 0x1e, 0xa4, 0x50, 0x38, 0x28, 0xcf, 0xe6, 0xb8, 0x4e, + 0x71, 0xde, 0x33, 0x1f, 0xca, 0xd7, 0x4b, 0x0a, 0x48, 0x45, 0xd5, 0x99, + 0x0a, 0x4f, 0x2c, 0x2e, 0xdf, 0x9c, 0xce, 0xd8, 0x98, 0x5f, 0x43, 0xad, + 0xdc, 0x19, 0xe0, 0xab, 0x15, 0xac, 0x86, 0xfb, 0xc4, 0x9a, 0x79, 0x58, + 0xe1, 0x1d, 0x7d, 0x4c, 0xa0, 0x45, 0xc3, 0x91, 0x69, 0xbd, 0x64, 0xfa, + 0x3b, 0xe0, 0x2e, 0x4e, 0x03, 0xac, 0xfb, 0xda, 0xb4, 0xf4, 0x60, 0x4e, + 0xa9, 0x13, 0x8c, 0xcb, 0x4c, 0x8d, 0x33, 0xc4, 0xbb, 0x53, 0x69, 0xfa, + 0x97, 0x53, 0xaf, 0xb6, 0xcc, 0xc1, 0x6d, 0xa8, 0xa1, 0x40, 0x52, 0x3e, + 0x51, 0x36, 0x28, 0x55, 0xc8, 0xd4, 0x74, 0xa8, 0xf3, 0xf9, 0xc5, 0x50, + 0x6b, 0x9a, 0x24, 0xa1, 0x54, 0xe2, 0x6f, 0x89, 0x2b, 0x4c, 0xca, 0xc4, + 0xd1, 0xc2, 0xc0, 0x20, 0x5f, 0x7b, 0x90, 0x70, 0xfe, 0x2f, 0x8e, 0x62, + 0x68, 0x25, 0x07, 0x1a, 0x48, 0xe6, 0x8d, 0x8d, 0xb3, 0x64, 0x9f, 0x94, + 0x88, 0xa3, 0x01, 0x16, 0x0c, 0x6d, 0x48, 0xdb, 0xb5, 0x28, 0xde, 0x9d, + 0x37, 0xa2, 0xd7, 0xb2, 0x6b, 0x5b, 0xd9, 0xff, 0xa9, 0x69, 0xfc, 0xcd, + 0x2e, 0xcc, 0xeb, 0xb2, 0xb5, 0xad, 0x53, 0xf4, 0xa3, 0x76, 0xd1, 0x92, + 0xd5, 0x5f, 0xfb, 0xac, 0x8f, 0x6b, 0xe7, 0xa5, 0x12, 0xb7, 0x0c, 0xe4, + 0x31, 0xc4, 0x39, 0x88, 0x50, 0x20, 0x82, 0x19, 0xd0, 0x58, 0x80, 0xe1, + 0x4a, 0x91, 0x21, 0x15, 0x30, 0x23, 0x00, 0x81, 0x30, 0x5a, 0x40, 0x9f, + 0x30, 0x39, 0xcc, 0x21, 0x37, 0xb1, 0x01, 0xdc, 0x30, 0xb7, 0x01, 0x1c, + 0x30, 0x94, 0x49, 0x55, 0x32, 0x1a, 0xcd, 0xfe, 0x31, 0x9c, 0x50, 0x07, + 0x3e, 0x14, 0xf6, 0x4c, 0x31, 0x92, 0x07, 0xba, 0x30, 0xb1, 0x00, 0xe6, + 0x30, 0x3e, 0x00, 0x99, 0x34, 0xb2, 0xc7, 0x87, 0x30, 0x92, 0x00, 0xc9, + 0x30, 0x2e, 0xc0, 0x95, 0x36, 0xc4, 0x4d, 0xbc, 0xb3, 0x0e, 0xac, 0x09, + 0x98, 0xc1, 0x46, 0x69, 0x63, 0x41, 0x99, 0x98, 0xe0, 0x96, 0x86, 0x0e, + 0x14, 0xd2, 0xdb, 0x39, 0x78, 0x45, 0x43, 0x2b, 0x48, 0xd1, 0x46, 0x49, + 0x1c, 0x6c, 0x08, 0x74, 0x91, 0xb2, 0xfc, 0xe2, 0x6f, 0xda, 0x83, 0x33, + 0x96, 0x7e, 0xad, 0xea, 0xc8, 0xc9, 0x1f, 0x58, 0x9c, 0x22, 0x5d, 0x07, + 0x3d, 0x8c, 0xe2, 0x43, 0x4f, 0xff, 0xfb, 0xd4, 0x60, 0x3c, 0x8d, 0xd9, + 0x04, 0x6f, 0xbe, 0x83, 0xfa, 0x7b, 0x70, 0x52, 0xce, 0x08, 0x52, 0x34, + 0x22, 0x6e, 0x20, 0x15, 0xbf, 0x00, 0x2f, 0xe9, 0x8d, 0xc1, 0x4b, 0xb8, + 0x21, 0x48, 0xf0, 0x89, 0xb8, 0x1b, 0xad, 0x1f, 0x7f, 0x1f, 0x87, 0xd7, + 0x18, 0xe9, 0xd6, 0xed, 0xb5, 0xf2, 0x6f, 0x2b, 0x69, 0x73, 0xca, 0x2a, + 0x56, 0x09, 0xf8, 0x83, 0x7c, 0xb8, 0x27, 0x0a, 0x57, 0xc7, 0x53, 0x42, + 0x89, 0x92, 0x1b, 0x69, 0xf6, 0xc2, 0x75, 0xa8, 0x53, 0xea, 0x38, 0x31, + 0x5b, 0xe7, 0x51, 0x9e, 0x27, 0x11, 0x3a, 0x46, 0xa7, 0x22, 0xb9, 0x42, + 0x50, 0x3a, 0x5d, 0x42, 0x64, 0x7e, 0x5b, 0x91, 0x33, 0xc3, 0x5d, 0x22, + 0xd9, 0xd9, 0x23, 0x9e, 0x35, 0x6f, 0x54, 0x21, 0xc7, 0xd4, 0x36, 0xc9, + 0xf7, 0x54, 0x7b, 0x1c, 0x8d, 0x4e, 0x6f, 0x22, 0x1e, 0xbb, 0x43, 0x5d, + 0xc8, 0xb6, 0xdc, 0x69, 0x27, 0x70, 0x72, 0x28, 0x15, 0xf6, 0x5c, 0xe9, + 0x9d, 0xae, 0x6a, 0x59, 0x2d, 0x46, 0x64, 0x29, 0x5a, 0xf6, 0x0a, 0xb5, + 0xc1, 0x48, 0x8a, 0x7e, 0x8a, 0x43, 0x19, 0x5a, 0xd9, 0x59, 0xac, 0xca, + 0xe9, 0xea, 0xed, 0x81, 0x58, 0xe2, 0x8f, 0x7e, 0xed, 0x55, 0x66, 0x27, + 0x5b, 0x95, 0x5b, 0x46, 0x18, 0x2c, 0x6c, 0xaf, 0x64, 0x76, 0x60, 0x1a, + 0x06, 0xfd, 0x74, 0xae, 0xb6, 0x0e, 0x66, 0x46, 0x33, 0x7c, 0xe6, 0x1e, + 0x82, 0x3d, 0x20, 0x10, 0xe0, 0x90, 0x00, 0x05, 0x53, 0x2c, 0xc0, 0xb8, + 0xc7, 0x98, 0xed, 0x69, 0xb2, 0x70, 0x84, 0xe4, 0xd9, 0xcd, 0xff, 0x93, + 0xef, 0x8c, 0xc6, 0x26, 0x3b, 0x01, 0x9c, 0x32, 0x28, 0xa5, 0xbe, 0x8d, + 0xa7, 0x57, 0x6a, 0x36, 0x7d, 0xff, 0xa7, 0xd9, 0x2a, 0x4f, 0x59, 0x53, + 0xd5, 0xf5, 0xac, 0xfd, 0x5a, 0xc9, 0x3f, 0xdd, 0xff, 0xa9, 0xa6, 0x5a, + 0xd9, 0xbb, 0xfe, 0x89, 0x7b, 0xdb, 0x54, 0xde, 0xc9, 0xfb, 0x26, 0x86, + 0x54, 0x62, 0x20, 0xee, 0x63, 0xc0, 0x54, 0x48, 0x80, 0x62, 0x86, 0x2b, + 0x80, 0x38, 0xe2, 0x78, 0x60, 0x13, 0x00, 0x7e, 0x60, 0x45, 0x82, 0x9e, + 0x60, 0x11, 0x87, 0xc0, 0x6a, 0xb7, 0x01, 0x62, 0x60, 0x1a, 0x81, 0x06, + 0x60, 0xfa, 0x02, 0x94, 0x68, 0x84, 0x02, 0xbe, 0x62, 0xcb, 0x09, 0xac, + 0x7c, 0x03, 0x23, 0x72, 0x63, 0x32, 0x8b, 0xfe, 0x60, 0x80, 0x03, 0x2a, + 0x60, 0x8b, 0x80, 0x5e, 0x65, 0xf0, 0x11, 0xee, 0x61, 0x99, 0x81, 0x44, + 0x60, 0x4f, 0x00, 0x46, 0x07, 0x96, 0x6e, 0x00, 0x1a, 0x11, 0x61, 0x52, + 0x06, 0x09, 0x21, 0x73, 0x50, 0x05, 0x16, 0x77, 0xd8, 0x3b, 0x2e, 0x7e, + 0x9b, 0xd6, 0x80, 0x10, 0x76, 0x65, 0x5d, 0xb8, 0x2e, 0x4b, 0x73, 0x46, + 0x56, 0x95, 0x16, 0x8d, 0xd5, 0xbe, 0xd2, 0xde, 0x27, 0xbe, 0x07, 0x7d, + 0x1a, 0xf4, 0x92, 0x31, 0x19, 0x77, 0xa1, 0xcc, 0x23, 0x71, 0x98, 0x8f, + 0x1f, 0x7a, 0x79, 0x5c, 0x66, 0x23, 0x29, 0xd9, 0x38, 0xea, 0xf2, 0xe2, + 0x75, 0x65, 0x07, 0x4e, 0x17, 0xaf, 0x93, 0xe3, 0xe5, 0x4f, 0x18, 0x11, + 0x23, 0x75, 0x77, 0x87, 0xa9, 0xb3, 0x4f, 0xcf, 0x5b, 0x3e, 0x75, 0x2d, + 0x49, 0x0b, 0x8b, 0x78, 0xa9, 0xd6, 0x56, 0x1e, 0xfe, 0xc2, 0x6a, 0x7a, + 0x7a, 0x8e, 0x55, 0x2d, 0x81, 0x7a, 0xc7, 0x88, 0x0a, 0xad, 0x0b, 0x49, + 0x55, 0x3b, 0x1a, 0x62, 0xb8, 0xfb, 0x27, 0x48, 0x78, 0xb6, 0x8d, 0x17, + 0x7c, 0xb0, 0xb6, 0xc7, 0x91, 0xe1, 0xf2, 0x84, 0x28, 0x8d, 0x8c, 0x18, + 0x56, 0x7d, 0x89, 0xc9, 0x98, 0x9f, 0x90, 0x18, 0x51, 0x56, 0xbf, 0x13, + 0x2b, 0x5a, 0xa1, 0x0d, 0x04, 0xc9, 0x7f, 0xd9, 0x22, 0xc4, 0x49, 0x5f, + 0x7e, 0xaa, 0xb4, 0xf5, 0x96, 0xbe, 0x0f, 0xaa, 0xef, 0x89, 0x3b, 0xfc, + 0x4a, 0x27, 0x50, 0xf5, 0xf4, 0x25, 0x6b, 0x4f, 0x8a, 0x67, 0x26, 0xa8, + 0xd3, 0x19, 0xb6, 0xa0, 0x3b, 0x20, 0x2b, 0x48, 0xac, 0x07, 0x44, 0x5f, + 0x6d, 0x62, 0x26, 0x6f, 0xa8, 0xfa, 0x9b, 0xe2, 0x4c, 0x90, 0xd1, 0x1a, + 0xf4, 0x68, 0x72, 0x29, 0xb1, 0x14, 0x9b, 0x68, 0xc8, 0x39, 0xa2, 0x8d, + 0x1a, 0x01, 0x26, 0xdd, 0x29, 0xbb, 0x32, 0x7e, 0x9c, 0xdd, 0x2b, 0xde, + 0xc9, 0xfb, 0xe9, 0x45, 0xf6, 0xdb, 0x2d, 0x5f, 0x2b, 0x6d, 0xa6, 0xfb, + 0xff, 0x7f, 0x46, 0x4e, 0xed, 0x45, 0xfc, 0xbb, 0xbe, 0xc6, 0xda, 0x5b, + 0xdb, 0x4b, 0x95, 0x5d, 0xd5, 0x68, 0x56, 0x39, 0xc8, 0x8b, 0x71, 0xcc, + 0x30, 0xa2, 0xa0, 0x90, 0x45, 0x08, 0x1d, 0xe0, 0x09, 0x40, 0x0c, 0x30, + 0x21, 0xc2, 0x11, 0x30, 0x06, 0x8b, 0xaa, 0x34, 0x12, 0x02, 0xd9, 0x30, + 0x3c, 0x00, 0x67, 0x30, 0x53, 0x45, 0xf8, 0x31, 0xec, 0x48, 0xdf, 0x30, + 0xf6, 0x44, 0xe2, 0x3d, 0xbb, 0x52, 0xcd, 0x31, 0x95, 0x84, 0xba, 0x30, + 0xa1, 0x41, 0xaa, 0x30, 0x40, 0x01, 0x1c, 0x32, 0x71, 0x50, 0xd0, 0x30, + 0x8c, 0x00, 0x52, 0x0e, 0x02, 0x18, 0xe0, 0x50, 0xe5, 0x58, 0xc8, 0x30, + 0x28, 0x08, 0x29, 0x00, 0x50, 0x31, 0x67, 0x45, 0x15, 0x5c, 0x84, 0x80, + 0xed, 0x23, 0x88, 0x1c, 0x9b, 0x48, 0x7f, 0x1a, 0x1c, 0x1f, 0xc6, 0xc2, + 0xdd, 0x61, 0x88, 0x94, 0x1d, 0x13, 0x87, 0xd4, 0xb2, 0x1c, 0x7b, 0xa3, + 0x0d, 0x69, 0xea, 0x92, 0xc0, 0xcf, 0xf4, 0x9f, 0x74, 0x75, 0x2b, 0x52, + 0x48, 0x66, 0xa7, 0x64, 0xf1, 0x3b, 0xdb, 0x12, 0xea, 0x71, 0x03, 0x0c, + 0x3f, 0x45, 0xa5, 0x7b, 0xf2, 0xc4, 0x07, 0xcf, 0x03, 0xab, 0x44, 0x72, + 0xd3, 0x4d, 0x9d, 0x2d, 0xcf, 0xff, 0xfb, 0xd4, 0x60, 0x47, 0x0d, 0xd7, + 0xf3, 0x70, 0x40, 0x0b, 0xf9, 0x63, 0x70, 0x57, 0x2d, 0xc8, 0x41, 0x3c, + 0x25, 0x6e, 0x66, 0x1d, 0xc0, 0xf8, 0x0f, 0xe9, 0xed, 0xc1, 0x29, 0x37, + 0xa1, 0x44, 0xd0, 0x89, 0xb9, 0x35, 0xbd, 0xcf, 0x30, 0xba, 0x71, 0x1b, + 0xd0, 0x9d, 0xa8, 0x3e, 0x5f, 0x4a, 0x24, 0x3a, 0x79, 0xa3, 0xd6, 0x16, + 0x92, 0x0c, 0x94, 0x3d, 0x1d, 0x5a, 0x42, 0xa1, 0xc5, 0xec, 0x3a, 0x1e, + 0x34, 0x88, 0xb4, 0xf9, 0xd1, 0xd1, 0xfe, 0xba, 0x82, 0xca, 0x92, 0x4f, + 0x24, 0xf2, 0x71, 0x89, 0xc9, 0x24, 0xed, 0x01, 0x6b, 0xb6, 0x44, 0x74, + 0xcd, 0x57, 0x12, 0x15, 0xb9, 0x4d, 0x31, 0x7d, 0x29, 0x89, 0x8b, 0xae, + 0x40, 0x5f, 0xbc, 0x10, 0x25, 0xba, 0x37, 0xd5, 0xa1, 0x1f, 0xd8, 0x71, + 0xaa, 0xd6, 0x8f, 0x66, 0x98, 0xc3, 0xb1, 0x5d, 0x73, 0xb1, 0xb0, 0xad, + 0x63, 0xaa, 0xd9, 0xe8, 0xd9, 0x80, 0xbd, 0x24, 0x03, 0xd1, 0xd8, 0xaa, + 0xb6, 0x03, 0xf5, 0x6a, 0x17, 0x96, 0xca, 0x83, 0x94, 0x66, 0x00, 0x44, + 0xeb, 0x2c, 0x10, 0xbf, 0xc5, 0xab, 0xad, 0x56, 0x25, 0x51, 0xb1, 0x9a, + 0x02, 0x25, 0xcc, 0xfa, 0x91, 0x1c, 0x23, 0xc5, 0x3e, 0x60, 0xa6, 0x6d, + 0x33, 0x1a, 0x32, 0xed, 0xa6, 0xdb, 0x3e, 0x7b, 0x22, 0xab, 0xfe, 0xd2, + 0xbd, 0xcd, 0xfa, 0xa5, 0x0b, 0x36, 0xff, 0x47, 0x67, 0x5d, 0xee, 0xfa, + 0x6d, 0x5f, 0xd1, 0x19, 0x56, 0xd6, 0x74, 0xd3, 0x5d, 0xaf, 0xd5, 0x9e, + 0xd7, 0xba, 0x67, 0xfe, 0x8d, 0xa3, 0x9d, 0x48, 0xa8, 0x83, 0xe7, 0x3b, + 0x0b, 0x10, 0x34, 0x58, 0x72, 0xa8, 0xb9, 0x44, 0x84, 0x05, 0x0f, 0xd0, + 0xa3, 0x02, 0x9c, 0x0c, 0x43, 0x00, 0xcc, 0x47, 0xb3, 0x05, 0x45, 0x95, + 0x83, 0x2b, 0xf0, 0x65, 0xb3, 0x07, 0xb0, 0x2a, 0xc3, 0x0a, 0xb4, 0x74, + 0x13, 0x5e, 0x5c, 0xcd, 0xe3, 0x04, 0x69, 0x16, 0x53, 0xeb, 0xdb, 0xf9, + 0x43, 0x1a, 0x4c, 0x33, 0x13, 0x17, 0x58, 0x31, 0x93, 0x04, 0xdc, 0x15, + 0x93, 0x0d, 0x79, 0xc5, 0x53, 0x09, 0x10, 0x1a, 0x53, 0x00, 0xe0, 0x04, + 0x03, 0x74, 0x6c, 0x02, 0x28, 0xc2, 0x09, 0x31, 0xb5, 0x41, 0x85, 0xcd, + 0x60, 0xb5, 0x98, 0x98, 0x26, 0x20, 0x19, 0x8a, 0x00, 0x81, 0xb2, 0x87, + 0x78, 0x2e, 0x24, 0x44, 0x39, 0x6c, 0x30, 0xa6, 0x9e, 0xa3, 0x8c, 0xb2, + 0x1f, 0x71, 0x63, 0xd0, 0xeb, 0xc4, 0xcd, 0x94, 0x82, 0xa5, 0x86, 0xe8, + 0x17, 0xeb, 0xbc, 0x97, 0xf0, 0xc4, 0xa9, 0xec, 0x67, 0x53, 0xef, 0x5c, + 0xbe, 0x32, 0xd6, 0xe5, 0x70, 0x34, 0x46, 0x5f, 0x4c, 0xcb, 0x5f, 0xc3, + 0x25, 0x68, 0xeb, 0x80, 0x4d, 0x0c, 0x37, 0x12, 0xec, 0x8a, 0xa3, 0x41, + 0x98, 0x69, 0x97, 0xd8, 0x07, 0xf1, 0xca, 0xc2, 0x93, 0x2d, 0xe5, 0xb5, + 0x56, 0x74, 0xbf, 0x67, 0x7c, 0xad, 0x6a, 0x4e, 0x34, 0x95, 0xaa, 0x03, + 0xf5, 0x08, 0x56, 0x2a, 0x8d, 0x55, 0x4a, 0x89, 0xf3, 0x83, 0xb4, 0xbb, + 0x12, 0x5a, 0x65, 0x62, 0xa9, 0xb8, 0xfc, 0x8a, 0x70, 0x41, 0x61, 0x44, + 0x22, 0x1a, 0x15, 0xc6, 0x8b, 0xd6, 0x84, 0x34, 0xb9, 0xc5, 0x3c, 0x32, + 0xa1, 0x71, 0x99, 0x4a, 0x6f, 0x3d, 0x7a, 0x77, 0x1c, 0x4e, 0x50, 0xd0, + 0xf4, 0x9a, 0x45, 0x07, 0x1d, 0x40, 0x98, 0x47, 0xe1, 0xb5, 0xe2, 0x7d, + 0x50, 0xa4, 0x2f, 0xaf, 0x54, 0xa7, 0x0d, 0x94, 0x89, 0xf7, 0x37, 0x1a, + 0x19, 0x4f, 0xd4, 0x05, 0xd5, 0x42, 0x7c, 0xa4, 0x47, 0xec, 0x22, 0x11, + 0x05, 0x1a, 0xe2, 0xc8, 0x95, 0x42, 0x0b, 0xdb, 0x19, 0xfe, 0xaf, 0x5e, + 0xb1, 0xc6, 0x90, 0xf0, 0x1f, 0x2d, 0xa7, 0x10, 0xd2, 0x43, 0x0a, 0x57, + 0x17, 0xdc, 0x98, 0xb3, 0xb1, 0x1a, 0x6a, 0xd4, 0x09, 0x0a, 0x49, 0x9a, + 0x36, 0x4c, 0xb9, 0x98, 0xa4, 0xb0, 0x9d, 0x9a, 0x68, 0xc5, 0x58, 0xb4, + 0xa1, 0x26, 0x51, 0x56, 0x1d, 0x8e, 0x08, 0x43, 0x46, 0x74, 0xdd, 0x69, + 0xad, 0x0d, 0x4a, 0x41, 0x64, 0x03, 0x0c, 0xab, 0xd4, 0x27, 0x4c, 0x26, + 0xa6, 0xb5, 0x80, 0xee, 0x3c, 0xa6, 0x9f, 0xf5, 0xaa, 0x57, 0xae, 0x95, + 0x6f, 0xd8, 0x8b, 0x5f, 0xf6, 0xfb, 0xe5, 0xa7, 0x7c, 0xb6, 0xf6, 0x7f, + 0xb5, 0x7e, 0x4a, 0xfa, 0xaf, 0xfa, 0x33, 0x36, 0xde, 0xd4, 0xff, 0xee, + 0xbe, 0x95, 0x3c, 0xd0, 0xc8, 0xca, 0x67, 0x13, 0x72, 0xb1, 0x9d, 0xc3, + 0x8b, 0x57, 0x06, 0x1c, 0x08, 0x87, 0x11, 0x52, 0x30, 0x2e, 0x40, 0xb2, + 0x30, 0x2a, 0x83, 0xf1, 0x30, 0x9a, 0x54, 0xfc, 0x33, 0x1d, 0xc4, 0x8f, + 0x30, 0x57, 0x40, 0x7e, 0x30, 0x98, 0x04, 0xd7, 0x34, 0xe1, 0x85, 0x80, + 0x31, 0x50, 0x0e, 0xbe, 0x35, 0x0e, 0xba, 0x45, 0x31, 0x4f, 0xc2, 0x03, + 0x31, 0x17, 0x40, 0xe4, 0x30, 0x3d, 0x81, 0xea, 0x31, 0x74, 0x8f, 0xee, + 0x31, 0x30, 0xc1, 0x0a, 0x30, 0x44, 0x80, 0x2b, 0x20, 0x90, 0xc2, 0xac, + 0xa8, 0x49, 0x80, 0x38, 0x8d, 0x73, 0x58, 0xf4, 0x06, 0xb1, 0xb4, 0x65, + 0x1a, 0x01, 0x11, 0x9c, 0xa6, 0xb0, 0xfd, 0x16, 0x55, 0x3e, 0x60, 0xf9, + 0xf7, 0x7d, 0xff, 0x92, 0xb2, 0xa8, 0x05, 0xc5, 0x7f, 0x15, 0x13, 0x92, + 0xcd, 0x64, 0x50, 0x4c, 0xb6, 0x67, 0x36, 0xd1, 0xfd, 0x86, 0xeb, 0x40, + 0xf0, 0xb9, 0xd7, 0xda, 0x35, 0x4f, 0x3f, 0x66, 0x1a, 0x81, 0x21, 0x9c, + 0x0d, 0xc5, 0x23, 0x09, 0x60, 0x6a, 0x47, 0xae, 0x14, 0xca, 0xc5, 0x1b, + 0xeb, 0x3b, 0x4b, 0x40, 0x34, 0x51, 0x29, 0x25, 0x73, 0x3a, 0x45, 0x43, + 0x1c, 0xee, 0x5a, 0x4b, 0x9f, 0xff, 0xfb, 0xd4, 0x60, 0x4c, 0x8f, 0xd8, + 0xef, 0x70, 0x3e, 0x83, 0xf9, 0x7b, 0x70, 0x51, 0x4d, 0xc8, 0x41, 0x3c, + 0x22, 0x6e, 0x64, 0x91, 0xc0, 0xf8, 0x0f, 0xed, 0xed, 0xc1, 0x58, 0xb7, + 0xe1, 0x04, 0x80, 0x95, 0xb8, 0xae, 0x2d, 0x06, 0xf2, 0xa1, 0xc8, 0xe9, + 0x55, 0x51, 0x53, 0x65, 0x73, 0x6b, 0x6b, 0xdb, 0xb6, 0x65, 0xde, 0x91, + 0xae, 0x0c, 0x29, 0xc9, 0x72, 0x89, 0x4b, 0xc1, 0x6f, 0x72, 0x2b, 0x15, + 0xca, 0x98, 0x3a, 0x70, 0x51, 0xa9, 0xd4, 0x0b, 0x5c, 0xeb, 0x7e, 0xa0, + 0x50, 0xc7, 0x73, 0x47, 0xa8, 0x94, 0x4d, 0xaf, 0x9e, 0x74, 0xf1, 0xfa, + 0xbc, 0xa4, 0xa9, 0xf5, 0x96, 0x47, 0xcf, 0xd5, 0x6c, 0x10, 0x1e, 0x37, + 0x26, 0xd8, 0xd9, 0xe0, 0xbf, 0x43, 0x9e, 0xb7, 0x2e, 0x14, 0x07, 0x72, + 0x35, 0x72, 0xba, 0x5b, 0x57, 0xb5, 0x3e, 0x4c, 0x46, 0x87, 0x32, 0xd3, + 0x62, 0xa2, 0x09, 0xe1, 0x09, 0x70, 0xe2, 0xd9, 0x2b, 0x8b, 0xc7, 0xab, + 0x98, 0x88, 0x4a, 0x53, 0x2f, 0x1d, 0xb0, 0xab, 0x37, 0x05, 0x8c, 0xb7, + 0x2d, 0x40, 0x55, 0x29, 0xdc, 0x70, 0x7c, 0xa2, 0x10, 0x27, 0x19, 0x3e, + 0x6c, 0x1c, 0x2c, 0x25, 0xf9, 0x37, 0x60, 0x08, 0x1d, 0x29, 0x48, 0x0d, + 0x99, 0xfa, 0xc4, 0xb9, 0xbe, 0xb8, 0xac, 0xa8, 0x6a, 0xac, 0x25, 0x46, + 0x07, 0x7b, 0xf9, 0x99, 0x5e, 0x4c, 0x06, 0x32, 0x6d, 0xca, 0xba, 0x2b, + 0x73, 0x77, 0x7f, 0x92, 0x92, 0x55, 0xff, 0x4d, 0x7a, 0xfd, 0x2f, 0xf7, + 0xe4, 0x90, 0x84, 0x37, 0x54, 0xd5, 0xd7, 0xce, 0xd7, 0x57, 0x4a, 0x69, + 0xe7, 0x7f, 0xfd, 0xa9, 0xd4, 0xfa, 0x77, 0xec, 0x8c, 0x33, 0xab, 0xe8, + 0x54, 0x94, 0x12, 0x9c, 0x7a, 0x0b, 0x03, 0x71, 0x99, 0xc5, 0x86, 0x08, + 0x38, 0x43, 0x13, 0x18, 0x0f, 0x60, 0x48, 0x18, 0x1b, 0x82, 0x08, 0x98, + 0x3e, 0xa8, 0x7b, 0x1b, 0x55, 0xe1, 0xe9, 0x98, 0x5a, 0xe1, 0x2b, 0x98, + 0x1a, 0xa4, 0x04, 0x19, 0x43, 0xc5, 0x24, 0x98, 0x6d, 0xa2, 0x3d, 0x9f, + 0x08, 0xb8, 0x48, 0x18, 0x40, 0x60, 0xcc, 0x18, 0x0d, 0x21, 0x5d, 0x18, + 0x03, 0xa0, 0x7f, 0x19, 0x51, 0x20, 0xf4, 0x94, 0x13, 0xd0, 0x06, 0x07, + 0x18, 0xe6, 0x07, 0xc9, 0xa8, 0xc4, 0x92, 0x0c, 0x40, 0x40, 0x1a, 0x42, + 0x5b, 0xc4, 0x8b, 0x5b, 0xab, 0xc5, 0x60, 0x17, 0x73, 0xa1, 0x7a, 0x2e, + 0xdc, 0x9c, 0x16, 0x94, 0xd7, 0x5d, 0xee, 0x3c, 0xf0, 0x7d, 0x87, 0xf9, + 0x6b, 0xa7, 0x53, 0x2f, 0x78, 0x5e, 0x97, 0x8d, 0xd1, 0x5a, 0xae, 0x13, + 0x6b, 0x1d, 0xce, 0x38, 0xd5, 0xa0, 0x16, 0x3e, 0xd2, 0x9c, 0x47, 0x06, + 0x4b, 0x1d, 0x79, 0x61, 0x53, 0x91, 0x8d, 0x22, 0xc7, 0xc5, 0x0b, 0x81, + 0xa8, 0x78, 0xa1, 0x4a, 0x93, 0x43, 0x04, 0xfd, 0x5a, 0xa6, 0x29, 0x51, + 0x8f, 0x8d, 0x36, 0xb4, 0x61, 0x74, 0x57, 0xa4, 0x52, 0x2e, 0x96, 0x0f, + 0xf5, 0x52, 0xa5, 0x1e, 0xa1, 0x70, 0xba, 0xda, 0x7c, 0xe8, 0x53, 0xb3, + 0xb4, 0x3f, 0x47, 0xb8, 0x14, 0x8a, 0x67, 0x90, 0x98, 0x53, 0xe5, 0x0a, + 0x1a, 0xf9, 0x49, 0x2b, 0xa3, 0x21, 0xad, 0x22, 0x73, 0x36, 0x26, 0x4e, + 0xc1, 0x76, 0x53, 0x3c, 0x54, 0x9a, 0x66, 0x8c, 0x35, 0x0c, 0x48, 0xb7, + 0x50, 0x34, 0x4c, 0x9a, 0x2e, 0xe8, 0x4f, 0x69, 0x3c, 0x5d, 0x18, 0x90, + 0x4b, 0xfa, 0xea, 0x52, 0xce, 0x1e, 0x4e, 0x04, 0xe1, 0xa6, 0x9e, 0x7d, + 0x00, 0x96, 0x2b, 0xdc, 0x4f, 0x77, 0x26, 0xd4, 0x73, 0x71, 0xf0, 0xaf, + 0x94, 0xe9, 0x8e, 0xa6, 0xdb, 0x8b, 0xab, 0xed, 0x4a, 0xc2, 0xc4, 0xb8, + 0x73, 0x60, 0x3a, 0x4c, 0xd3, 0xac, 0xea, 0x2f, 0xc9, 0x45, 0x2c, 0x8a, + 0x26, 0x66, 0x1d, 0x69, 0xc6, 0x02, 0xb1, 0x50, 0x87, 0x3c, 0x7e, 0xc6, + 0x50, 0xbc, 0xb2, 0x81, 0x5b, 0x10, 0x7e, 0x31, 0xa4, 0x0d, 0xf6, 0x09, + 0x0f, 0xf2, 0x62, 0x6e, 0x36, 0x9c, 0xe7, 0xd7, 0x80, 0x49, 0x6f, 0x74, + 0x57, 0x4e, 0xaa, 0xfb, 0x8c, 0x2e, 0x61, 0xd4, 0x27, 0x93, 0x30, 0x37, + 0xa6, 0x18, 0xc2, 0x80, 0x36, 0x92, 0x0b, 0x22, 0x38, 0x81, 0x13, 0x06, + 0xef, 0x45, 0x4a, 0x7f, 0x33, 0x69, 0xbd, 0x3d, 0x7f, 0x91, 0x3a, 0xad, + 0x57, 0xdd, 0xcd, 0x47, 0xd5, 0xd4, 0xfe, 0xee, 0xbf, 0x35, 0x9b, 0xb3, + 0xb7, 0x4d, 0x33, 0x6f, 0xce, 0xff, 0x6e, 0x9e, 0x55, 0x5e, 0xea, 0xe9, + 0x23, 0x19, 0x6c, 0x8c, 0xa7, 0x39, 0x23, 0x83, 0xe2, 0xc5, 0x08, 0x80, + 0xe3, 0x08, 0xc1, 0x14, 0x17, 0x20, 0x90, 0x60, 0xb8, 0x76, 0xa0, 0x0c, + 0x05, 0x70, 0x12, 0x8c, 0x0f, 0xe0, 0xcc, 0x4c, 0x14, 0xb1, 0x1e, 0x8d, + 0xdd, 0x10, 0x1a, 0x4c, 0x0a, 0x30, 0x2c, 0xcc, 0x10, 0x30, 0xf8, 0xcd, + 0x92, 0x11, 0x9b, 0x8c, 0x3a, 0xd2, 0x33, 0x4d, 0x50, 0xa3, 0x53, 0xcc, + 0x5d, 0xf0, 0xa2, 0xcc, 0x51, 0xa0, 0x7b, 0x4c, 0x2a, 0x10, 0x11, 0x4c, + 0x49, 0x84, 0x19, 0x4c, 0x27, 0xf0, 0x28, 0xcc, 0x0f, 0x40, 0x18, 0x8e, + 0x94, 0x2c, 0xd4, 0x01, 0x8c, 0x6c, 0x24, 0x44, 0x1e, 0xd2, 0x94, 0xe5, + 0xe1, 0x50, 0x64, 0x79, 0x5f, 0x15, 0x96, 0xe4, 0x55, 0xf7, 0xcd, 0xc5, + 0x4c, 0x65, 0x0f, 0x4a, 0x86, 0xd9, 0x90, 0xba, 0xed, 0xe6, 0x49, 0x86, + 0xd4, 0x1f, 0xb8, 0xab, 0x16, 0x7e, 0x97, 0x9a, 0xfb, 0x68, 0xae, 0xb4, + 0x37, 0x14, 0x6f, 0x9a, 0x7b, 0x6c, 0xec, 0x36, 0xed, 0xca, 0x9e, 0x01, + 0xdb, 0x2c, 0x81, 0x2b, 0x5d, 0xa2, 0x1c, 0x78, 0xa2, 0xd4, 0x0a, 0x95, + 0x42, 0x44, 0xae, 0x46, 0x2b, 0xff, 0xfb, 0xd4, 0x60, 0x45, 0x8d, 0xd9, + 0x48, 0x70, 0x3e, 0x0b, 0xfb, 0x7b, 0x70, 0x55, 0xed, 0xc8, 0x42, 0x18, + 0x22, 0x6e, 0x65, 0xa5, 0xc0, 0xf8, 0x2f, 0xe9, 0xed, 0xc1, 0x5b, 0x37, + 0xe1, 0x04, 0x31, 0x89, 0xba, 0x8f, 0xc3, 0xcc, 0xc5, 0x30, 0xce, 0xa3, + 0x39, 0x5c, 0xa2, 0x57, 0x15, 0x73, 0x1c, 0x27, 0x49, 0x74, 0x51, 0xab, + 0xcb, 0x1c, 0x6a, 0x1f, 0x31, 0x9b, 0x55, 0x6d, 0x6a, 0xc5, 0xfc, 0x29, + 0x8e, 0x47, 0x6f, 0x89, 0x2a, 0xe5, 0x1c, 0xc4, 0xa4, 0xec, 0x2c, 0x6a, + 0x85, 0x61, 0xbe, 0xa4, 0xb3, 0x22, 0xb5, 0x76, 0xad, 0x50, 0x29, 0xd0, + 0xf6, 0x65, 0x5a, 0x3d, 0x5f, 0xac, 0xae, 0xec, 0xf9, 0x43, 0x15, 0x42, + 0xe5, 0xdc, 0xe5, 0x2c, 0x29, 0xd5, 0x97, 0xd1, 0xcd, 0xe4, 0x41, 0x88, + 0xc8, 0x8e, 0x4f, 0xaa, 0x58, 0xcf, 0xc9, 0x55, 0x67, 0x74, 0x68, 0x10, + 0x55, 0xa9, 0x57, 0x86, 0xfc, 0xa8, 0xa6, 0xb5, 0x53, 0xd6, 0x66, 0xe6, + 0x45, 0xc2, 0x59, 0x3a, 0xce, 0x94, 0x84, 0xf9, 0x6d, 0x79, 0xfa, 0xc2, + 0xd5, 0xd6, 0x5f, 0x2e, 0x15, 0x49, 0x35, 0x1a, 0xf2, 0xa4, 0xed, 0x6b, + 0x9d, 0x65, 0xfb, 0x72, 0x3c, 0xf7, 0x42, 0x8f, 0x56, 0x28, 0xe7, 0xe1, + 0xfe, 0x75, 0xae, 0xe7, 0x34, 0xca, 0xcb, 0x2a, 0x47, 0xd3, 0x58, 0xf8, + 0x39, 0xc2, 0xb0, 0x43, 0xc8, 0x49, 0x7f, 0x49, 0x00, 0x03, 0xf1, 0xfd, + 0x28, 0x51, 0xd7, 0x4c, 0xaf, 0x88, 0x14, 0x60, 0x1c, 0xa0, 0xb9, 0x9d, + 0x90, 0xc2, 0x23, 0x2d, 0xf3, 0xa2, 0x93, 0x60, 0x09, 0xb9, 0xc9, 0x6b, + 0x79, 0xac, 0xee, 0x89, 0x4b, 0x6d, 0x3a, 0xf4, 0xef, 0x55, 0x26, 0xbd, + 0x69, 0x67, 0x97, 0xfa, 0xb7, 0xd7, 0x5f, 0x4b, 0xa7, 0x5a, 0xd1, 0xea, + 0x66, 0x4a, 0x2d, 0x6b, 0xb3, 0x69, 0xde, 0xfa, 0xbb, 0xb4, 0xa6, 0xad, + 0x91, 0x6a, 0xee, 0xd7, 0x64, 0x76, 0x46, 0xce, 0xce, 0x09, 0xcc, 0x49, + 0x67, 0x40, 0x25, 0x32, 0x38, 0x70, 0x03, 0x16, 0x20, 0x40, 0xe0, 0x22, + 0x8c, 0x0e, 0x80, 0x7d, 0x4c, 0x16, 0x02, 0xd1, 0xcd, 0x93, 0x90, 0xe9, + 0x8c, 0x19, 0xd0, 0x2d, 0x8c, 0x25, 0xa1, 0xcd, 0x4c, 0xec, 0x82, 0xb5, + 0x0c, 0x22, 0x40, 0x66, 0x4c, 0x5e, 0xb1, 0x09, 0xcc, 0x01, 0x50, 0x39, + 0x8c, 0x0c, 0x50, 0x05, 0x4c, 0x19, 0x60, 0x80, 0x8c, 0x45, 0xe5, 0x23, + 0x8c, 0x1f, 0x80, 0x35, 0x8c, 0x03, 0xa0, 0x19, 0x4c, 0x1c, 0x64, 0x13, + 0x97, 0x11, 0x33, 0x19, 0x3b, 0x00, 0x58, 0x66, 0x92, 0xc1, 0x22, 0x2a, + 0xc9, 0x05, 0x44, 0x62, 0x51, 0x65, 0x11, 0x86, 0x21, 0xa4, 0x56, 0x67, + 0x51, 0x26, 0x8b, 0x48, 0xe2, 0xaf, 0xc5, 0x1a, 0x70, 0xa0, 0x05, 0x8c, + 0xf3, 0xb4, 0x46, 0xaa, 0xd5, 0xa0, 0x44, 0xb4, 0x7b, 0x5a, 0xe2, 0x12, + 0x5a, 0x5b, 0x13, 0x8a, 0x3f, 0x0f, 0xd4, 0x62, 0x25, 0x49, 0x02, 0xd1, + 0xce, 0x9c, 0xe9, 0xd3, 0xb9, 0xbc, 0xe2, 0x2d, 0x8c, 0xd1, 0x0d, 0x52, + 0xda, 0x4a, 0x92, 0xad, 0xea, 0x53, 0x94, 0xf6, 0x8a, 0xaf, 0x1b, 0xe7, + 0x22, 0x91, 0xb1, 0x54, 0x82, 0x66, 0x56, 0xa4, 0x8e, 0x95, 0xf8, 0x6d, + 0x6a, 0x17, 0x35, 0xda, 0xd4, 0x22, 0x7a, 0x76, 0x2d, 0x1e, 0xb2, 0xc3, + 0x42, 0x53, 0x2a, 0x89, 0xd2, 0x2b, 0xa4, 0xe5, 0xca, 0xb7, 0x26, 0x65, + 0xe7, 0xcb, 0x29, 0x14, 0x64, 0x36, 0x95, 0x72, 0x80, 0xe9, 0x68, 0x8a, + 0xce, 0x86, 0x17, 0xf3, 0x2d, 0x52, 0xad, 0x62, 0x56, 0x8c, 0x3d, 0xb5, + 0x9a, 0x0a, 0x95, 0x5b, 0x0a, 0x29, 0xc1, 0xd1, 0x72, 0x62, 0x4c, 0x21, + 0xaa, 0xe5, 0xc9, 0xe8, 0x9c, 0x29, 0x90, 0xa7, 0x17, 0x05, 0xb3, 0xe4, + 0x9d, 0xae, 0x11, 0x26, 0x99, 0x9c, 0x8d, 0x5a, 0x52, 0x33, 0x9f, 0x8c, + 0x8c, 0xaa, 0x46, 0xb6, 0x08, 0x4f, 0x55, 0xd1, 0x53, 0xc7, 0xe1, 0xc2, + 0xd8, 0xda, 0xa6, 0x86, 0xba, 0x58, 0x43, 0xb4, 0xf1, 0x4a, 0x8d, 0x7c, + 0xa0, 0x80, 0xa4, 0x3c, 0xdc, 0x95, 0xaa, 0x04, 0xd1, 0x2e, 0x4b, 0x23, + 0xd4, 0x28, 0x59, 0x62, 0x68, 0x88, 0x6f, 0x1d, 0x88, 0x91, 0x15, 0x3b, + 0xdb, 0x87, 0x73, 0x50, 0x69, 0x25, 0xcc, 0x34, 0x19, 0x04, 0x30, 0x23, + 0xe2, 0x30, 0x5c, 0x13, 0xec, 0xf9, 0x57, 0x57, 0x2e, 0x7f, 0xfd, 0x23, + 0x99, 0x7d, 0x52, 0xcf, 0x9e, 0xaa, 0xa4, 0x0f, 0xbb, 0x9b, 0x2c, 0x18, + 0xc2, 0x26, 0x0f, 0xd1, 0xd1, 0x93, 0x67, 0xed, 0x95, 0x10, 0xd4, 0x3b, + 0x57, 0xab, 0x54, 0x9f, 0xad, 0xf7, 0x7d, 0x7d, 0xbd, 0xdf, 0xfd, 0x91, + 0x3f, 0x56, 0xb4, 0x88, 0x7e, 0x8c, 0x9f, 0x9e, 0xad, 0x65, 0x2b, 0x31, + 0xaa, 0xfd, 0xba, 0x1b, 0x6b, 0x55, 0xc8, 0xb3, 0x8b, 0x74, 0x14, 0x86, + 0x10, 0x40, 0x60, 0xc1, 0x98, 0x30, 0x71, 0x22, 0x90, 0x22, 0x0c, 0xa3, + 0x9a, 0x60, 0x0c, 0x00, 0x40, 0x20, 0xc0, 0x40, 0x94, 0x18, 0x79, 0x89, + 0xed, 0x99, 0xff, 0x62, 0xaf, 0x18, 0x1d, 0xa1, 0x01, 0x98, 0x41, 0x04, + 0x73, 0x1a, 0x6f, 0x86, 0x01, 0x98, 0x4f, 0x40, 0xa8, 0x18, 0xcc, 0xc3, + 0x43, 0x18, 0x34, 0xa0, 0x7f, 0x98, 0x0e, 0x00, 0x92, 0x18, 0x0a, 0xe0, + 0x07, 0x19, 0x77, 0x28, 0xe8, 0x98, 0x9c, 0x00, 0xa6, 0x98, 0x1a, 0x20, + 0x33, 0x19, 0x11, 0x82, 0x44, 0x03, 0x0e, 0x5b, 0xf4, 0x12, 0x30, 0xe5, + 0x19, 0x44, 0x46, 0xaa, 0xdc, 0x9e, 0x46, 0x30, 0x99, 0xea, 0x6c, 0xfe, + 0x24, 0x15, 0x69, 0x88, 0x2d, 0x1d, 0x97, 0x6a, 0x37, 0x17, 0xb1, 0xcd, + 0x83, 0x16, 0xaa, 0x70, 0x57, 0xff, 0xfb, 0xd4, 0x60, 0x32, 0x0d, 0xd9, + 0x69, 0x70, 0x3d, 0x8b, 0xf9, 0x7b, 0x70, 0x58, 0x2e, 0x08, 0x42, 0x0c, + 0x65, 0x6e, 0x25, 0x55, 0xc0, 0xfa, 0x2f, 0xed, 0xed, 0xc1, 0x5c, 0x38, + 0x21, 0x04, 0x80, 0x95, 0xb8, 0x7e, 0x94, 0xb9, 0x77, 0x3f, 0x6b, 0xe1, + 0xd8, 0x79, 0x67, 0xe0, 0x27, 0xdf, 0x78, 0xb2, 0xc9, 0x86, 0x7e, 0xcd, + 0x25, 0x0d, 0x6d, 0x5b, 0xde, 0x79, 0xe2, 0xa9, 0x02, 0x6f, 0xb1, 0x1b, + 0x37, 0x2f, 0xcc, 0x46, 0x63, 0x0a, 0x4d, 0xb0, 0x9f, 0x0e, 0x15, 0x6a, + 0x25, 0x40, 0xe9, 0x80, 0x9a, 0x96, 0x8a, 0xf5, 0xe4, 0x59, 0x72, 0x26, + 0xe8, 0xd5, 0xa8, 0x64, 0xa1, 0xd3, 0x93, 0x2a, 0xda, 0xa1, 0x7d, 0x08, + 0x3f, 0x10, 0xf2, 0xf4, 0x90, 0x4f, 0x9a, 0x86, 0x71, 0xfd, 0x65, 0xb6, + 0xf6, 0x96, 0x03, 0xce, 0x1b, 0x53, 0x0c, 0x35, 0x29, 0xee, 0x96, 0x3a, + 0x08, 0x31, 0x70, 0x1e, 0x95, 0x7b, 0xc2, 0x14, 0x73, 0x9f, 0xc7, 0x30, + 0xb7, 0x13, 0xd3, 0xbd, 0xda, 0x1c, 0x81, 0x4d, 0xca, 0x91, 0x16, 0x53, + 0x4a, 0x24, 0x47, 0xab, 0xa5, 0x7b, 0x22, 0xf3, 0x2d, 0x55, 0x0c, 0x65, + 0xfe, 0x10, 0xf6, 0x3a, 0x95, 0xed, 0x4c, 0xcc, 0xe9, 0xc4, 0xf1, 0x76, + 0x3c, 0xd3, 0x4a, 0xd6, 0xc2, 0x6e, 0xce, 0x87, 0xa3, 0xcc, 0xa5, 0x12, + 0x3e, 0xeb, 0xec, 0xee, 0x4b, 0x48, 0x82, 0x75, 0x05, 0x06, 0xa2, 0x6d, + 0x50, 0x33, 0x30, 0x3d, 0x75, 0xb5, 0x43, 0x3a, 0xd1, 0xff, 0xd3, 0x6b, + 0x54, 0x4b, 0xb0, 0x39, 0xac, 0x9f, 0x8f, 0x0e, 0xbc, 0xa8, 0x55, 0x66, + 0xfa, 0x1b, 0x76, 0xd3, 0xe0, 0xba, 0x4a, 0x3f, 0x59, 0x14, 0x68, 0xd1, + 0x60, 0x45, 0x2c, 0x80, 0x00, 0x9e, 0x32, 0x50, 0x74, 0xd0, 0x7a, 0xcd, + 0x99, 0x95, 0x26, 0x26, 0xba, 0x11, 0x21, 0xb1, 0x33, 0x21, 0x17, 0x84, + 0xef, 0xd6, 0xba, 0x91, 0x90, 0xdb, 0xb1, 0xf7, 0x76, 0xdc, 0xfa, 0xa7, + 0xa7, 0xdf, 0x6f, 0x46, 0x5a, 0xee, 0xca, 0x9d, 0x5b, 0xfe, 0xc5, 0x5a, + 0x7a, 0xfd, 0x1f, 0xd5, 0x7d, 0x1e, 0x4a, 0x3f, 0xaa, 0xd9, 0x7e, 0xfe, + 0xb4, 0xdd, 0x55, 0x2f, 0xbc, 0xac, 0xbb, 0x22, 0x59, 0xd5, 0x91, 0x62, + 0xef, 0x2b, 0x89, 0x28, 0x90, 0x74, 0x73, 0xcd, 0x1c, 0xb2, 0x8a, 0x94, + 0x34, 0x48, 0x4a, 0x3c, 0x24, 0x83, 0x88, 0x60, 0xeb, 0x03, 0x5a, 0x61, + 0x7a, 0x84, 0x44, 0x65, 0x0b, 0x0e, 0xbe, 0x65, 0x84, 0x07, 0x38, 0x62, + 0xf9, 0x88, 0xba, 0x61, 0x4b, 0x10, 0x88, 0x68, 0x66, 0x85, 0xc6, 0x60, + 0xb3, 0x84, 0x2c, 0x61, 0x69, 0x8c, 0xe6, 0x60, 0x1e, 0x83, 0x94, 0x60, + 0x66, 0x86, 0xae, 0x61, 0x7a, 0x16, 0xe4, 0x69, 0xc9, 0x0d, 0xdc, 0x63, + 0x15, 0x87, 0xaa, 0x60, 0x6a, 0x01, 0xe4, 0x72, 0x66, 0x66, 0xe8, 0x08, + 0x62, 0xe1, 0x06, 0x34, 0x24, 0x0e, 0x27, 0x30, 0x20, 0x80, 0x40, 0x50, + 0xd0, 0x02, 0x06, 0x23, 0xfc, 0x46, 0x9d, 0x68, 0x08, 0x81, 0x10, 0xc5, + 0xe6, 0x87, 0xdc, 0xb7, 0x58, 0xb7, 0x88, 0x64, 0x5f, 0xf8, 0x6a, 0x22, + 0xe0, 0x39, 0x0f, 0xc3, 0xe1, 0x0a, 0x6d, 0x9b, 0x9c, 0x99, 0xe3, 0x7d, + 0xb3, 0x7b, 0xe2, 0x10, 0x99, 0x0c, 0x31, 0x1a, 0x7f, 0xdf, 0x06, 0x81, + 0x00, 0x41, 0x8f, 0xcb, 0xfb, 0x04, 0x2e, 0x8f, 0xe4, 0x61, 0xfa, 0x7e, + 0x12, 0x88, 0x69, 0xf6, 0xb2, 0x7a, 0xb0, 0xac, 0x4e, 0xa1, 0xd2, 0xaa, + 0x13, 0x30, 0x55, 0x6b, 0xc7, 0x4b, 0xa5, 0x61, 0x50, 0xfd, 0x89, 0x33, + 0x15, 0x99, 0x5a, 0xe2, 0xc8, 0xa4, 0x42, 0x51, 0x0b, 0x0f, 0x59, 0x0b, + 0x62, 0x18, 0xa5, 0x66, 0x45, 0x6e, 0x0c, 0xac, 0xae, 0x0a, 0x77, 0x15, + 0x7a, 0xd2, 0x18, 0x9f, 0x6f, 0x72, 0x3d, 0x1b, 0xd4, 0xe8, 0x7a, 0xba, + 0x4d, 0xb8, 0xa8, 0x5b, 0x54, 0x0e, 0x0a, 0xf3, 0xb1, 0x0c, 0x62, 0x5c, + 0xdd, 0x5c, 0xd7, 0x85, 0x73, 0x47, 0xe8, 0x73, 0x12, 0x9c, 0xfd, 0x43, + 0xdf, 0xa1, 0xa6, 0x5a, 0x61, 0xb1, 0xf3, 0x54, 0x35, 0xad, 0xab, 0xdc, + 0x1e, 0x48, 0xc4, 0xcc, 0xdc, 0xab, 0x9b, 0x0c, 0x0a, 0xd6, 0xd5, 0xc2, + 0x1f, 0x07, 0xb0, 0x21, 0xaa, 0x46, 0xc9, 0x92, 0x8c, 0xe9, 0xfb, 0x2b, + 0x98, 0x97, 0x90, 0xb6, 0x85, 0x4a, 0x5d, 0x85, 0xfa, 0xa9, 0x7d, 0xb0, + 0xfe, 0x61, 0x4d, 0x26, 0xa0, 0x29, 0xde, 0xbe, 0x56, 0xa9, 0x8b, 0xf1, + 0xa6, 0x49, 0xe2, 0x25, 0x4c, 0x53, 0xd4, 0xef, 0x6a, 0x8e, 0x74, 0x8f, + 0x83, 0x41, 0x03, 0x52, 0xe8, 0xe0, 0x42, 0xd8, 0xba, 0x62, 0xac, 0xf1, + 0xb6, 0x83, 0x7c, 0xac, 0x83, 0x03, 0x24, 0x46, 0xc8, 0x2f, 0x3d, 0x42, + 0x42, 0x96, 0xa7, 0x83, 0x0a, 0x80, 0x02, 0x28, 0x4e, 0xb7, 0xe4, 0x5d, + 0x5d, 0x2d, 0xe9, 0xdf, 0x6a, 0xef, 0xed, 0xdf, 0xd3, 0x45, 0xd9, 0xf7, + 0xdd, 0x2e, 0x96, 0xae, 0xfd, 0x0a, 0x89, 0xa2, 0xa2, 0x4b, 0x4b, 0x12, + 0xed, 0x77, 0x67, 0xd3, 0xfb, 0x7e, 0x8f, 0xa1, 0x79, 0xa4, 0x44, 0x46, + 0x91, 0x86, 0x10, 0xf1, 0x75, 0x43, 0x0b, 0x88, 0x87, 0x0c, 0x20, 0x20, + 0x93, 0x18, 0x4c, 0x3f, 0x38, 0x44, 0x44, 0x3d, 0x02, 0x90, 0x03, 0x01, + 0xa0, 0x09, 0xf3, 0x06, 0x5c, 0x10, 0x33, 0x1a, 0x81, 0x6d, 0x83, 0x80, + 0x19, 0x06, 0x33, 0x11, 0x48, 0x02, 0xb3, 0x01, 0x8c, 0x09, 0x93, 0x02, + 0x70, 0x20, 0x43, 0x01, 0x9c, 0x09, 0xf3, 0x04, 0xa4, 0x34, 0x63, 0x00, + 0x38, 0x05, 0xa3, 0x00, 0xa8, 0x02, 0xd3, 0x00, 0x6c, 0x27, 0xc3, 0x34, + 0x44, 0xbb, 0x03, 0x06, 0x28, 0xff, 0xfb, 0xd4, 0x60, 0x1c, 0x8c, 0xc8, + 0x55, 0x70, 0x41, 0x93, 0xfa, 0x7b, 0x70, 0x5b, 0xcd, 0xe8, 0x30, 0x20, + 0x25, 0x6e, 0x62, 0xd5, 0xc1, 0x00, 0x0f, 0xed, 0x8d, 0xc1, 0x5b, 0xb6, + 0xa1, 0x08, 0x81, 0x15, 0xb9, 0x16, 0xc3, 0x01, 0x6c, 0x05, 0xb3, 0x29, + 0xd4, 0x26, 0x58, 0x1b, 0x60, 0x8d, 0xc9, 0xc2, 0x10, 0x62, 0xc2, 0x8f, + 0x09, 0x00, 0x20, 0x03, 0x35, 0x0c, 0x26, 0x44, 0x1c, 0x98, 0x69, 0x94, + 0x18, 0x94, 0x8b, 0x15, 0x17, 0x10, 0x00, 0x90, 0x28, 0xa4, 0x84, 0x09, + 0xa1, 0x03, 0xae, 0xf8, 0x0d, 0x3b, 0x14, 0x8b, 0xdf, 0x1c, 0x88, 0xbc, + 0xcf, 0x3a, 0xb7, 0xb9, 0xd2, 0xb6, 0x96, 0xe9, 0x45, 0x73, 0x41, 0xf8, + 0xaf, 0x50, 0x48, 0xec, 0xb6, 0xce, 0x33, 0x8b, 0x7a, 0x9d, 0x6b, 0xac, + 0x13, 0xc5, 0x41, 0xbc, 0x68, 0x0b, 0x01, 0x4e, 0x9a, 0x51, 0xab, 0x8b, + 0x1a, 0x2c, 0xea, 0x2e, 0x91, 0xa4, 0x50, 0x45, 0x4f, 0x24, 0x5d, 0xce, + 0x7a, 0x9f, 0x78, 0x75, 0x01, 0x80, 0xf7, 0x5c, 0x41, 0x8b, 0xde, 0xe6, + 0x24, 0x1d, 0xee, 0x2e, 0xf4, 0xf2, 0xb9, 0x67, 0x85, 0x57, 0xef, 0xde, + 0x45, 0x6d, 0x63, 0x9e, 0x36, 0xa1, 0x66, 0x23, 0xf8, 0xf0, 0xdd, 0xe2, + 0x0c, 0x77, 0x0a, 0x40, 0x71, 0x8e, 0xd9, 0x12, 0xcb, 0xa6, 0x4c, 0xcc, + 0xf3, 0x71, 0xe5, 0xcc, 0x39, 0x21, 0xd1, 0xe5, 0x22, 0xb9, 0x43, 0xcc, + 0x97, 0x8b, 0xf1, 0xf1, 0xba, 0xb9, 0x56, 0xf1, 0xa4, 0x9a, 0x6a, 0x56, + 0xd8, 0xc4, 0xb9, 0xd4, 0x2a, 0xc7, 0xa6, 0x37, 0x7a, 0xfd, 0xe7, 0x0f, + 0x35, 0x2c, 0xff, 0xeb, 0x5a, 0xcc, 0xb6, 0x9a, 0x12, 0xee, 0xd4, 0xd4, + 0x69, 0x5a, 0xa2, 0x66, 0x46, 0x78, 0x0c, 0x6a, 0x96, 0x24, 0x58, 0x2d, + 0x39, 0x4f, 0xcd, 0x66, 0x72, 0x66, 0x2a, 0x94, 0x86, 0x72, 0x18, 0xcc, + 0x18, 0xca, 0x35, 0x85, 0x1a, 0x36, 0x25, 0xc5, 0x36, 0x65, 0x79, 0x91, + 0x63, 0x24, 0x4d, 0x19, 0x4c, 0xb9, 0x69, 0x4d, 0x6c, 0x4d, 0x88, 0xa6, + 0xf2, 0x2d, 0x7f, 0xe9, 0xdd, 0x6b, 0x69, 0xef, 0xa9, 0x5e, 0xda, 0xb3, + 0x39, 0x7a, 0x93, 0x44, 0xce, 0xa5, 0xbf, 0x5b, 0x19, 0xaf, 0x5a, 0xf5, + 0xbb, 0x2b, 0x26, 0x74, 0xbb, 0x69, 0xcc, 0xd5, 0xaa, 0xcb, 0x75, 0x22, + 0x98, 0x5d, 0x48, 0x1c, 0x40, 0x33, 0x8a, 0x89, 0x14, 0x4c, 0x24, 0x41, + 0x76, 0x0e, 0xb1, 0xa1, 0xe0, 0x42, 0xa6, 0x0c, 0xe8, 0x5a, 0x46, 0x0b, + 0x50, 0x76, 0xa6, 0x07, 0x1e, 0x20, 0x87, 0x73, 0x79, 0xf1, 0xa6, 0x28, + 0x28, 0x7f, 0x46, 0x05, 0x40, 0x22, 0x26, 0x1d, 0x60, 0x19, 0x26, 0x02, + 0x40, 0x16, 0x06, 0x27, 0x70, 0x43, 0x66, 0x05, 0xf8, 0x22, 0x66, 0x04, + 0x50, 0x04, 0xa6, 0x02, 0x18, 0x50, 0x66, 0x63, 0xe2, 0x88, 0xa6, 0x02, + 0x60, 0x25, 0x66, 0x0a, 0x40, 0x00, 0xe6, 0x64, 0x2a, 0x61, 0x84, 0x23, + 0x44, 0x26, 0x61, 0xba, 0x01, 0x13, 0x19, 0x1b, 0x32, 0xa3, 0x13, 0x34, + 0x05, 0x1c, 0x0d, 0x00, 0x0a, 0x97, 0xb5, 0x17, 0x51, 0xc8, 0xc3, 0xc2, + 0x02, 0xe1, 0xd2, 0x75, 0x38, 0x52, 0xa2, 0xd2, 0x93, 0x04, 0x50, 0x16, + 0xba, 0x5e, 0xc4, 0x91, 0xa9, 0x4f, 0x97, 0x59, 0x3c, 0xe0, 0x16, 0x2d, + 0x00, 0x3b, 0xcb, 0x35, 0xdc, 0x7d, 0xd3, 0xc1, 0x89, 0x3f, 0x4c, 0xf9, + 0xc9, 0x80, 0xdf, 0x58, 0x65, 0xc3, 0x52, 0x97, 0x25, 0xe3, 0x50, 0x1a, + 0x53, 0x41, 0x29, 0xd5, 0x83, 0xd1, 0x69, 0xe0, 0x94, 0xc9, 0xf0, 0x48, + 0x7f, 0x38, 0x1c, 0x84, 0xab, 0x23, 0x39, 0x5a, 0x7a, 0x3d, 0x6a, 0xe4, + 0x23, 0xc3, 0xb5, 0xbc, 0x57, 0x31, 0x4b, 0x13, 0xb0, 0xaf, 0x68, 0x9e, + 0xfb, 0x6e, 0xa8, 0x3d, 0x79, 0x2d, 0x4a, 0xc9, 0x8a, 0x31, 0xc6, 0x74, + 0xba, 0x6e, 0x86, 0x3a, 0x94, 0xd4, 0x62, 0xac, 0x6c, 0xf2, 0x37, 0x16, + 0x2f, 0x26, 0xb0, 0x9c, 0xe0, 0xe8, 0xa4, 0x42, 0xa6, 0x23, 0x6d, 0x72, + 0x63, 0xb5, 0xeb, 0xa8, 0x42, 0x2f, 0x15, 0xce, 0x31, 0x4d, 0xd0, 0x96, + 0x72, 0x9b, 0xdd, 0x84, 0x29, 0x35, 0x79, 0x76, 0x93, 0x1d, 0x81, 0x42, + 0x34, 0xf0, 0x9f, 0xae, 0xc8, 0x2e, 0x91, 0x0c, 0xe0, 0xb4, 0xa3, 0xd5, + 0x1d, 0x40, 0xb1, 0x1b, 0x90, 0x9e, 0x9e, 0xa5, 0xac, 0xe2, 0x93, 0x88, + 0xd6, 0x18, 0xe1, 0xba, 0xdc, 0x78, 0xb0, 0x59, 0x2d, 0x95, 0x4a, 0xed, + 0x8f, 0xa6, 0xba, 0x3a, 0x5c, 0xd4, 0x7c, 0x78, 0x7e, 0x01, 0x90, 0x00, + 0x09, 0xd5, 0x2d, 0xa8, 0xa3, 0xb1, 0x73, 0x51, 0x0d, 0xec, 0xaf, 0x46, + 0x59, 0x91, 0x89, 0x55, 0x44, 0xe9, 0x6d, 0x4b, 0xea, 0xce, 0xf0, 0xeb, + 0xf1, 0xae, 0xaa, 0x4c, 0x68, 0xdb, 0xb3, 0x3c, 0xa8, 0x8a, 0xec, 0x88, + 0x87, 0x42, 0x6c, 0xd2, 0x6f, 0xd5, 0x16, 0xd3, 0x57, 0xbe, 0xe9, 0x6b, + 0xd7, 0xe9, 0xd3, 0xf4, 0xf6, 0xfb, 0x25, 0x6d, 0xfd, 0x2b, 0xfb, 0xa5, + 0x2a, 0x63, 0x52, 0xb6, 0xaa, 0xca, 0xea, 0xcc, 0xd7, 0x61, 0xee, 0x2a, + 0x83, 0x5d, 0xc7, 0x07, 0xc2, 0x6e, 0x88, 0xa0, 0xc4, 0x04, 0x08, 0x12, + 0x00, 0x2d, 0xc9, 0x18, 0x00, 0x18, 0x04, 0x20, 0x32, 0x18, 0x22, 0x00, + 0x2f, 0x98, 0x77, 0xe6, 0xd0, 0x1c, 0x18, 0x20, 0xc0, 0x98, 0x57, 0x60, + 0x3c, 0x18, 0x12, 0x80, 0x59, 0x18, 0x22, 0xa0, 0x10, 0x98, 0x02, 0xc0, + 0x0b, 0x18, 0x5f, 0xa0, 0x16, 0x18, 0x09, 0xc0, 0x28, 0x2f, 0x33, 0x00, + 0xe0, 0x13, 0xc3, 0x0b, 0xbc, 0xc7, 0x40, 0x70, 0x74, 0x82, 0x40, 0x49, + 0x8c, 0x20, 0x10, 0x3a, 0xbd, 0xff, 0xfb, 0xd4, 0x60, 0x20, 0x88, 0xd7, + 0x31, 0x70, 0x43, 0x3b, 0xf9, 0x63, 0x70, 0x51, 0x4d, 0xe8, 0x52, 0x34, + 0x45, 0x6e, 0x5d, 0x6d, 0xc1, 0x04, 0x2f, 0xe9, 0x2d, 0xd1, 0x22, 0xb7, + 0xa1, 0x88, 0xa0, 0x95, 0xb9, 0x35, 0x3a, 0x22, 0x5e, 0x89, 0x9f, 0x25, + 0x04, 0xf3, 0x5e, 0x79, 0xde, 0x85, 0xf2, 0xdc, 0x26, 0x5f, 0xa6, 0x65, + 0x15, 0x86, 0xd2, 0x26, 0x81, 0x87, 0x31, 0x6a, 0x6a, 0x90, 0x13, 0x58, + 0x77, 0x94, 0xc9, 0xb6, 0x68, 0xad, 0xec, 0x5d, 0x9a, 0xb2, 0x57, 0x75, + 0xf9, 0x7f, 0x5b, 0x58, 0xd4, 0x9e, 0x96, 0x24, 0xba, 0xa1, 0x87, 0xc1, + 0x95, 0x39, 0x51, 0x11, 0xc5, 0x11, 0x78, 0x25, 0x04, 0x04, 0x50, 0xf0, + 0x9a, 0x9c, 0x7f, 0x2b, 0x2a, 0x0f, 0xd8, 0x7c, 0xfc, 0xc8, 0xb2, 0x7a, + 0x24, 0x8f, 0x2c, 0x28, 0x4e, 0x27, 0xad, 0xc3, 0xa3, 0x65, 0xcb, 0x18, + 0x7e, 0x39, 0x9c, 0xeb, 0xcf, 0xeb, 0xd7, 0x72, 0xb9, 0x97, 0xc8, 0xe6, + 0xd9, 0x56, 0x5d, 0xd6, 0x2b, 0x4a, 0x5b, 0x27, 0xa7, 0xfa, 0xf2, 0xf4, + 0xdb, 0xfb, 0xf2, 0xad, 0xf3, 0xf0, 0x65, 0x7b, 0xad, 0x95, 0xad, 0x2b, + 0x4c, 0x77, 0xaf, 0x4d, 0xfe, 0xa4, 0xda, 0x39, 0xfe, 0xeb, 0x66, 0xf4, + 0x3f, 0xbf, 0x96, 0xb4, 0xd7, 0xe7, 0x32, 0xd4, 0x9d, 0xbf, 0x5e, 0xd9, + 0x6d, 0xf9, 0xc9, 0x69, 0x99, 0xdc, 0xad, 0xf9, 0xfd, 0xfe, 0xda, 0x35, + 0x4a, 0x1d, 0x83, 0x00, 0x00, 0xac, 0x71, 0x03, 0xce, 0xbb, 0x3a, 0x90, + 0x65, 0x2d, 0x59, 0xb3, 0xde, 0x97, 0xfd, 0x34, 0xaa, 0xdd, 0xa6, 0xe8, + 0xe5, 0x47, 0x3b, 0x0e, 0xa5, 0xd8, 0xa9, 0xbf, 0xbf, 0xf7, 0x6b, 0x2d, + 0x7d, 0xe5, 0xb2, 0xdf, 0xbe, 0x9d, 0x2b, 0x6d, 0x75, 0xaa, 0xaf, 0xfe, + 0xf7, 0x6b, 0x37, 0xd7, 0xb7, 0xd0, 0xc9, 0xcb, 0xb3, 0x7e, 0xe4, 0x4b, + 0x6f, 0x77, 0xed, 0x5c, 0xf7, 0x4e, 0xce, 0x34, 0x84, 0x1c, 0xcc, 0xa8, + 0x3a, 0x43, 0x11, 0x44, 0xc4, 0x41, 0x06, 0x38, 0xc2, 0xb8, 0x8d, 0x46, + 0x01, 0x81, 0x22, 0x00, 0x89, 0x83, 0x30, 0x0b, 0xe1, 0x8c, 0x5a, 0x4b, + 0x69, 0xea, 0xf6, 0x1f, 0xc1, 0x87, 0xba, 0x04, 0xe9, 0x81, 0xc8, 0x03, + 0xe1, 0x84, 0x3a, 0x02, 0x79, 0x80, 0xd0, 0x00, 0x21, 0x88, 0xfc, 0x11, + 0xe1, 0x80, 0xb2, 0x05, 0x99, 0x80, 0x10, 0x05, 0x81, 0x81, 0x4a, 0x0a, + 0xc9, 0x8a, 0xba, 0xc4, 0x99, 0x83, 0xae, 0x0b, 0x49, 0x80, 0x70, 0x02, + 0x11, 0x8a, 0x12, 0x58, 0x48, 0x17, 0x0a, 0x6c, 0x78, 0x03, 0xa6, 0x24, + 0xdb, 0x3c, 0x16, 0x50, 0xd6, 0x92, 0xd9, 0x3c, 0xb0, 0x81, 0x48, 0x8e, + 0x4c, 0xcc, 0x28, 0x3c, 0x29, 0xee, 0x60, 0xd0, 0x2b, 0x75, 0x6e, 0x38, + 0x5d, 0xb7, 0x45, 0x6d, 0xf8, 0x7f, 0xdf, 0x8c, 0x1f, 0x87, 0x7a, 0x20, + 0xea, 0x4a, 0x61, 0x89, 0xe7, 0x66, 0x1f, 0xa7, 0xa4, 0x7f, 0x5b, 0x9c, + 0x3c, 0xf4, 0x3b, 0x70, 0x12, 0xec, 0xc5, 0x32, 0x85, 0x67, 0x6f, 0x27, + 0x56, 0x4b, 0x63, 0x2c, 0x1d, 0x7b, 0x06, 0x6e, 0x1e, 0x6f, 0x22, 0x87, + 0x8a, 0x72, 0x59, 0x7c, 0xc4, 0x37, 0x29, 0xab, 0x25, 0x5d, 0x96, 0x9b, + 0xce, 0xc5, 0x99, 0x90, 0x2e, 0xb4, 0xa7, 0x24, 0x42, 0xa6, 0x67, 0x87, + 0x9f, 0x49, 0x51, 0xb4, 0x96, 0x91, 0xfc, 0x5f, 0xb1, 0x9a, 0xb3, 0x0a, + 0x63, 0x55, 0xcb, 0xb1, 0x71, 0x5e, 0x48, 0xe3, 0x6a, 0xaf, 0x3d, 0x45, + 0x6e, 0x96, 0x5e, 0x74, 0x2d, 0xa2, 0x6c, 0xac, 0x54, 0x5a, 0x04, 0x68, + 0x2a, 0x3a, 0xf8, 0xb7, 0x92, 0xbe, 0x8a, 0xd4, 0x40, 0xbb, 0x3d, 0xc9, + 0x2f, 0x2d, 0x62, 0x48, 0x59, 0x27, 0x71, 0xc8, 0x33, 0x02, 0x46, 0x94, + 0x9b, 0x53, 0x2a, 0xc9, 0x70, 0x0c, 0x8c, 0x29, 0x01, 0xb3, 0x8c, 0x43, + 0x2e, 0xf4, 0x67, 0x7d, 0x67, 0x7b, 0xd7, 0x59, 0x6f, 0xf2, 0xcc, 0x0c, + 0xc5, 0x0c, 0xc4, 0x78, 0x8c, 0x3a, 0x35, 0xd2, 0xa8, 0xd9, 0x7b, 0x27, + 0x4e, 0x96, 0xef, 0xee, 0xde, 0xdf, 0x9b, 0x7f, 0x6f, 0x97, 0xa5, 0x35, + 0xfd, 0xd5, 0xd2, 0xf4, 0xf2, 0x7e, 0xde, 0xdf, 0x2d, 0xdb, 0x25, 0x51, + 0x5f, 0xfc, 0xe8, 0x64, 0x57, 0x26, 0x53, 0xac, 0xc3, 0xcc, 0xe3, 0xa3, + 0x99, 0x06, 0x14, 0x74, 0x15, 0xa1, 0x11, 0x95, 0x30, 0x27, 0x40, 0xe3, + 0x30, 0x5c, 0x83, 0xb4, 0x31, 0xad, 0x69, 0x87, 0x3e, 0xe7, 0x4a, 0x9e, + 0x30, 0xed, 0x42, 0x4d, 0x30, 0x50, 0x00, 0xd3, 0x30, 0x34, 0xc1, 0x86, + 0x30, 0x06, 0x81, 0xe6, 0x31, 0x02, 0x46, 0x05, 0x30, 0x18, 0xc0, 0xb6, + 0x30, 0x02, 0x00, 0xe9, 0x30, 0x2d, 0xc3, 0xe6, 0x35, 0x3a, 0x22, 0xea, + 0x30, 0xd5, 0x42, 0x74, 0x30, 0x2a, 0x00, 0x93, 0x31, 0xbb, 0x83, 0x18, + 0x23, 0x15, 0x42, 0x33, 0x5c, 0x10, 0xe3, 0x96, 0x04, 0x28, 0x18, 0x4c, + 0x9a, 0xa4, 0x85, 0x40, 0x17, 0x43, 0xb6, 0x30, 0x14, 0x02, 0x25, 0x65, + 0x34, 0x29, 0xb4, 0xfe, 0xbf, 0xaa, 0xc0, 0xd6, 0x22, 0x41, 0x60, 0x2d, + 0x46, 0x1c, 0x47, 0x9e, 0xf4, 0x36, 0xe4, 0x48, 0x26, 0x66, 0x69, 0x6b, + 0x3f, 0x14, 0xcf, 0xfc, 0xaa, 0xdd, 0xc9, 0x54, 0xdd, 0x2b, 0x67, 0x9d, + 0xf8, 0x5d, 0x44, 0x52, 0x99, 0xb1, 0xb1, 0x27, 0x3d, 0x55, 0x36, 0xda, + 0xf3, 0x0b, 0x3a, 0x9b, 0x6a, 0xf7, 0x15, 0xd2, 0x1d, 0x05, 0x9a, 0x7c, + 0x1d, 0x2d, 0x50, 0x18, 0x1b, 0x98, 0x11, 0x4b, 0x2a, 0xc9, 0x93, 0xae, + 0x51, 0xe8, 0xad, 0x50, 0xbb, 0x51, 0x31, 0x32, 0xab, 0x54, 0x4a, 0x68, + 0xb3, 0x48, 0xa8, 0x95, 0xb3, 0xff, 0xfb, 0xd4, 0x60, 0x58, 0x8f, 0xd8, + 0xa9, 0x70, 0x3f, 0x83, 0xfb, 0x7b, 0x70, 0x50, 0x8e, 0x08, 0x52, 0x34, + 0x42, 0x6e, 0x23, 0x85, 0xc0, 0xfc, 0x0f, 0xe9, 0xed, 0xc1, 0x3d, 0xb7, + 0xa1, 0x05, 0x00, 0x89, 0xb8, 0x50, 0x55, 0x2d, 0x30, 0x35, 0x3c, 0x8a, + 0x68, 0xb0, 0xa0, 0x59, 0x5a, 0xf6, 0x1b, 0x03, 0xf6, 0x76, 0x76, 0x15, + 0x7a, 0xd3, 0x36, 0x20, 0xbe, 0x7c, 0xe3, 0x0d, 0xc9, 0x73, 0x1d, 0x76, + 0xd9, 0x0d, 0x41, 0x09, 0xf4, 0xc8, 0x6b, 0x14, 0x8a, 0x68, 0xf0, 0xae, + 0x72, 0xc2, 0xd4, 0x27, 0xd7, 0x75, 0x9c, 0xb2, 0xab, 0xa7, 0x91, 0xa7, + 0x6a, 0x65, 0x4b, 0x33, 0x1e, 0x1f, 0x77, 0x36, 0x55, 0x62, 0x72, 0x48, + 0x2c, 0x8e, 0x32, 0x4b, 0x2b, 0xbb, 0x39, 0x61, 0xda, 0xb2, 0x2a, 0xb9, + 0x99, 0x5c, 0x83, 0x89, 0x2c, 0x44, 0x20, 0x94, 0x32, 0x28, 0x16, 0x24, + 0x45, 0x33, 0x2e, 0x95, 0x88, 0x7a, 0xed, 0xc0, 0x66, 0x85, 0x20, 0x00, + 0x1e, 0x49, 0x29, 0x15, 0x5d, 0xd6, 0x8d, 0x14, 0x59, 0x73, 0xbe, 0x5d, + 0x53, 0xba, 0x2e, 0xbd, 0xed, 0xfa, 0xa4, 0xd3, 0x11, 0xd4, 0xd6, 0x56, + 0x32, 0x14, 0x64, 0x2a, 0x57, 0xb6, 0xee, 0x7f, 0x2f, 0xfd, 0x7d, 0x36, + 0xed, 0xfa, 0x93, 0xde, 0x9b, 0xdb, 0x6f, 0xdf, 0x49, 0xde, 0x6d, 0xb2, + 0xed, 0x6a, 0xda, 0xaf, 0xa4, 0xbf, 0xff, 0xd2, 0xa5, 0xd5, 0xb6, 0x97, + 0x47, 0x47, 0xdc, 0xb6, 0x20, 0xea, 0x1d, 0x87, 0x40, 0x81, 0x07, 0x0c, + 0x08, 0x10, 0x1b, 0x81, 0x0a, 0x31, 0x80, 0xf4, 0x0c, 0x99, 0x80, 0x24, + 0x25, 0x61, 0x87, 0x23, 0xe1, 0x09, 0xbe, 0x66, 0x66, 0x51, 0x82, 0x52, + 0x17, 0xd9, 0x81, 0x24, 0x11, 0xc1, 0x88, 0x40, 0x0d, 0xd9, 0x80, 0x78, + 0x0a, 0xd9, 0x88, 0x36, 0x3b, 0x81, 0x81, 0x5c, 0x06, 0xe9, 0x80, 0x4a, + 0x09, 0x71, 0x82, 0xec, 0x1b, 0x79, 0xc4, 0x5b, 0x04, 0x49, 0x89, 0xac, + 0x10, 0x49, 0x81, 0x92, 0x05, 0x31, 0x9a, 0x7e, 0x71, 0x03, 0x41, 0xc7, + 0x5b, 0xc9, 0x5b, 0xd4, 0x39, 0x15, 0x13, 0x0f, 0x74, 0x4e, 0xa2, 0xf3, + 0x04, 0x11, 0x56, 0x32, 0xe7, 0x04, 0x47, 0x63, 0xe9, 0x3a, 0x15, 0x02, + 0xe2, 0xb5, 0x81, 0xd0, 0xb5, 0x62, 0x65, 0xba, 0x64, 0xae, 0xdd, 0xf7, + 0xc1, 0x75, 0xbc, 0xab, 0xb6, 0x29, 0x3a, 0xea, 0xbb, 0xed, 0x8a, 0x01, + 0x7e, 0xe6, 0x5c, 0x49, 0xf7, 0xfe, 0x1f, 0xbd, 0x79, 0xa5, 0xcb, 0xe0, + 0x8a, 0x7e, 0x97, 0xe7, 0x6a, 0x35, 0x52, 0xf9, 0xfa, 0xa1, 0x47, 0x12, + 0xe8, 0x69, 0x06, 0x47, 0x8c, 0xb0, 0x37, 0x67, 0xef, 0x58, 0x15, 0xc6, + 0x55, 0x14, 0xd2, 0xae, 0x3a, 0xdb, 0xdb, 0xe9, 0x22, 0xb2, 0xab, 0x6e, + 0x76, 0xda, 0xfe, 0x91, 0x94, 0x53, 0x2b, 0xa4, 0x5d, 0xc5, 0x95, 0xd2, + 0x1c, 0xb6, 0xf9, 0x99, 0xe3, 0xd4, 0x82, 0xba, 0x04, 0x68, 0xc9, 0x24, + 0x7c, 0x66, 0xa6, 0xe7, 0xd5, 0x5f, 0x8e, 0xa2, 0x8c, 0xf9, 0x50, 0x84, + 0x4e, 0x86, 0xb7, 0xa8, 0x59, 0x34, 0xd8, 0xcc, 0x7f, 0xb4, 0xe3, 0x30, + 0x90, 0x85, 0x23, 0x42, 0x89, 0x22, 0xc5, 0x4b, 0x9f, 0xcd, 0xef, 0x19, + 0xb0, 0x96, 0x48, 0xbe, 0xdd, 0x35, 0x48, 0x6c, 0xba, 0x62, 0x53, 0x4d, + 0x0d, 0xb5, 0x74, 0xc1, 0x05, 0xe4, 0x06, 0x65, 0x98, 0xea, 0xf5, 0xdb, + 0x99, 0x95, 0x2a, 0xf3, 0x04, 0x27, 0x4d, 0xae, 0x2f, 0x90, 0xc5, 0x33, + 0x3b, 0x8b, 0xaa, 0xd1, 0x7d, 0xe3, 0xc2, 0xe4, 0xaf, 0x50, 0x12, 0xf4, + 0x30, 0x9c, 0xa4, 0xc9, 0x89, 0xcc, 0xa0, 0x3a, 0x17, 0xca, 0xe3, 0x55, + 0xea, 0xac, 0x60, 0x8b, 0x32, 0x55, 0x6b, 0x55, 0x3a, 0x6e, 0xb7, 0x51, + 0xa3, 0x1c, 0xda, 0x58, 0xb6, 0xe2, 0x20, 0x94, 0xe5, 0x11, 0x87, 0x30, + 0xb1, 0x68, 0x24, 0x7a, 0x6e, 0x6e, 0x4a, 0x3a, 0xae, 0x72, 0xed, 0x77, + 0x9b, 0xd2, 0xda, 0x6f, 0x4d, 0x93, 0x4f, 0xc9, 0xba, 0x95, 0x53, 0x4f, + 0xa2, 0x1e, 0xb6, 0x4e, 0xe9, 0xda, 0xfb, 0xb6, 0xd6, 0xfb, 0xf4, 0x75, + 0xbe, 0xde, 0xbf, 0xe9, 0x2d, 0xd4, 0xec, 0x9b, 0x28, 0x4d, 0x67, 0x59, + 0x94, 0xac, 0x70, 0x67, 0x7a, 0xd4, 0x1a, 0x20, 0x85, 0x2a, 0x30, 0x47, + 0x81, 0xab, 0x30, 0x53, 0xc4, 0x2e, 0x30, 0xa0, 0x3b, 0x11, 0x36, 0x55, + 0x8b, 0xac, 0x30, 0xc0, 0x82, 0xc1, 0x30, 0x20, 0x40, 0x36, 0x30, 0xfe, + 0x42, 0x13, 0x1d, 0x01, 0xd4, 0xc6, 0xf8, 0x18, 0x94, 0x14, 0x19, 0x19, + 0x81, 0xb0, 0x05, 0xc9, 0x85, 0x8e, 0x10, 0x51, 0xd1, 0x50, 0x76, 0xc1, + 0x90, 0x4a, 0x08, 0x31, 0x83, 0xb8, 0x03, 0x09, 0xc3, 0xac, 0x84, 0x90, + 0x18, 0xd9, 0x58, 0x83, 0x60, 0xc1, 0x46, 0x90, 0xea, 0x42, 0x6c, 0x34, + 0x9a, 0x8f, 0x4f, 0xaa, 0xd4, 0x80, 0x82, 0xe1, 0x20, 0xe7, 0xa8, 0xc3, + 0x4f, 0x01, 0x04, 0x4b, 0x9a, 0x19, 0x7e, 0x96, 0xaa, 0xe9, 0x2a, 0x03, + 0xb0, 0x4b, 0xcd, 0x45, 0x70, 0x38, 0x0c, 0x0e, 0x07, 0x7e, 0xd9, 0x73, + 0xc3, 0x2d, 0x9c, 0xaa, 0xee, 0x7b, 0xa6, 0xd7, 0x99, 0xcd, 0x0c, 0xdc, + 0x3b, 0x47, 0x66, 0x66, 0x33, 0x19, 0x58, 0x5d, 0xa6, 0xcb, 0x93, 0x6e, + 0xdf, 0xb9, 0xab, 0x53, 0xac, 0x48, 0x5b, 0x84, 0x66, 0x1d, 0x37, 0x44, + 0x50, 0x21, 0x38, 0x88, 0x8c, 0x7c, 0x9f, 0x95, 0x0e, 0x54, 0xc2, 0x63, + 0x7b, 0x05, 0x0b, 0x5e, 0x7c, 0xc9, 0x6b, 0xc6, 0x8e, 0xe4, 0xe3, 0x3a, + 0x81, 0x59, 0x19, 0x35, 0x09, 0x48, 0xc3, 0x78, 0x98, 0x71, 0x57, 0xb6, + 0x2c, 0x29, 0x36, 0x88, 0x4b, 0xff, 0xfb, 0xd4, 0x60, 0x5d, 0x8f, 0xd8, + 0xd8, 0x70, 0x3f, 0x03, 0xfb, 0x7b, 0x70, 0x57, 0x0e, 0x08, 0x42, 0x4c, + 0xa5, 0x6e, 0x24, 0xc9, 0xc0, 0xfa, 0x0f, 0xed, 0xed, 0xc1, 0x35, 0xb6, + 0xa1, 0x49, 0x31, 0x89, 0xb9, 0x33, 0x55, 0xea, 0xbd, 0x5e, 0x90, 0x56, + 0x44, 0x5f, 0x85, 0x32, 0xaa, 0x3b, 0x7d, 0x63, 0x24, 0xe8, 0xa2, 0x68, + 0x68, 0x91, 0x74, 0xd8, 0xed, 0x46, 0xa7, 0x7a, 0xe1, 0x53, 0xf9, 0x58, + 0xda, 0x7e, 0x31, 0x29, 0x9c, 0x12, 0x37, 0x81, 0x23, 0xf5, 0x03, 0x2d, + 0x20, 0xde, 0x1b, 0x3b, 0x04, 0xd0, 0xe8, 0xd8, 0xc4, 0xdd, 0x3b, 0x12, + 0xb7, 0xb5, 0xa2, 0xd9, 0xde, 0xed, 0xc5, 0x85, 0x48, 0x9c, 0xba, 0xe1, + 0x54, 0xc8, 0xce, 0x85, 0x2e, 0x5c, 0x2a, 0xe2, 0xa2, 0x78, 0xe6, 0xcc, + 0x9c, 0x4f, 0x23, 0x1c, 0xe3, 0x1c, 0x2a, 0x03, 0x65, 0x5d, 0x58, 0xec, + 0xc9, 0x02, 0x89, 0xc8, 0xdc, 0x06, 0x40, 0x00, 0x54, 0x7a, 0x29, 0xd3, + 0x49, 0x24, 0x0f, 0xa2, 0xc7, 0xd6, 0xd4, 0x95, 0x4c, 0xe5, 0x3a, 0xf4, + 0xb1, 0x96, 0x96, 0x57, 0xfa, 0xac, 0xd5, 0x9c, 0x15, 0x88, 0xe8, 0x44, + 0x42, 0x3f, 0x65, 0x4a, 0xce, 0xa6, 0xd7, 0x66, 0xfb, 0xb3, 0xf6, 0xdb, + 0x53, 0x3e, 0xfd, 0xcf, 0xda, 0x9b, 0x76, 0x7a, 0x7f, 0x5c, 0xde, 0x6d, + 0xbc, 0x9d, 0x34, 0xd7, 0x46, 0xf4, 0x77, 0xeb, 0xad, 0xbd, 0x8c, 0x8d, + 0x64, 0x9e, 0xdb, 0x21, 0x11, 0x4c, 0x41, 0x8e, 0x2c, 0xca, 0x64, 0x88, + 0xb1, 0xc5, 0x1c, 0x29, 0x1d, 0x04, 0x83, 0xa7, 0x30, 0x5b, 0x81, 0xa5, + 0x30, 0x8c, 0xc3, 0x62, 0x31, 0x7f, 0xb5, 0xd7, 0x3f, 0x4d, 0x89, 0x36, + 0x31, 0x2d, 0x82, 0x0f, 0x30, 0x47, 0xc0, 0x1f, 0x30, 0x47, 0x83, 0x94, + 0x30, 0x1c, 0x40, 0x57, 0x32, 0x6e, 0x43, 0x62, 0x30, 0x5e, 0x01, 0x0a, + 0x07, 0x04, 0x3e, 0x61, 0x89, 0x04, 0x04, 0x77, 0x84, 0xaa, 0xe4, 0x64, + 0x7b, 0x01, 0x08, 0x61, 0x03, 0x80, 0xaa, 0x79, 0x86, 0xe6, 0xf2, 0x9e, + 0x69, 0xc3, 0xc6, 0xf2, 0x74, 0x6c, 0x41, 0x29, 0x68, 0x17, 0x40, 0x0e, + 0x0d, 0x65, 0xe5, 0xdb, 0x1e, 0x30, 0x5b, 0x82, 0x81, 0xa6, 0x28, 0x14, + 0xac, 0xb7, 0x00, 0xa1, 0xb0, 0xf3, 0x48, 0x08, 0x09, 0x55, 0xd2, 0xf4, + 0x14, 0x44, 0xb6, 0x68, 0xfb, 0xb4, 0xd8, 0xdd, 0x0b, 0x13, 0x9e, 0xb5, + 0x03, 0x3c, 0xd6, 0xed, 0xc4, 0xd7, 0x3a, 0x81, 0x4e, 0xbf, 0x2f, 0xd5, + 0x3b, 0x5d, 0x86, 0xde, 0x98, 0xcb, 0x76, 0xbf, 0x2a, 0x35, 0xeb, 0x33, + 0x0b, 0x40, 0xe2, 0x4f, 0xab, 0x26, 0x99, 0xa8, 0xe4, 0x3d, 0x5b, 0x18, + 0xd7, 0x6b, 0xb4, 0xda, 0xbd, 0x08, 0x63, 0x76, 0xbb, 0x6b, 0x8c, 0x9c, + 0x73, 0x3f, 0x17, 0x71, 0xe1, 0xc7, 0x4e, 0xaa, 0x6c, 0x89, 0x80, 0x9b, + 0x57, 0x23, 0x64, 0x7d, 0x7b, 0x1d, 0x4a, 0x1c, 0xb7, 0x39, 0x4a, 0xa8, + 0x4c, 0xaf, 0x4a, 0x97, 0x80, 0x95, 0x6b, 0x7e, 0x6b, 0xa3, 0x58, 0xd1, + 0x50, 0xce, 0x69, 0xd9, 0x57, 0x2a, 0xec, 0xa4, 0xda, 0x62, 0x34, 0x22, + 0x36, 0x90, 0x5b, 0x55, 0x2b, 0x20, 0xab, 0xd9, 0x16, 0x2e, 0xa1, 0x88, + 0x79, 0xaa, 0x0f, 0x49, 0x57, 0x69, 0xd6, 0x88, 0xcf, 0xd7, 0x3b, 0x99, + 0x81, 0x5b, 0x1d, 0x52, 0xdc, 0x51, 0xaa, 0x63, 0xcc, 0x89, 0x60, 0x56, + 0xa5, 0x99, 0xa5, 0x4f, 0xa8, 0x8f, 0xc5, 0xe8, 0xb9, 0x48, 0xae, 0x54, + 0x12, 0x35, 0xcc, 0xe2, 0xae, 0x82, 0x74, 0xbb, 0x62, 0x59, 0x80, 0xca, + 0xda, 0xb9, 0x7a, 0xbe, 0x7e, 0x9d, 0xc9, 0xb5, 0xda, 0x1a, 0xba, 0x2e, + 0x34, 0x71, 0x31, 0x4e, 0x65, 0x3b, 0x34, 0xc8, 0x9c, 0x9c, 0xc7, 0x38, + 0xc2, 0x35, 0x83, 0x90, 0x5d, 0xce, 0xea, 0xa2, 0x95, 0x36, 0xad, 0xff, + 0x37, 0xe1, 0x4e, 0x1f, 0x93, 0x37, 0xc3, 0x2f, 0xee, 0x56, 0xc7, 0x4a, + 0xee, 0x4e, 0x0b, 0x3f, 0x84, 0xc6, 0x94, 0x1d, 0xee, 0xa7, 0xd0, 0xca, + 0x77, 0xeb, 0xde, 0x9a, 0x64, 0xfa, 0xb2, 0x69, 0x7f, 0xfd, 0x17, 0x7f, + 0xf5, 0xbb, 0x3e, 0xb5, 0xd1, 0x7f, 0x7d, 0x34, 0xb2, 0x6b, 0xd3, 0xfb, + 0xff, 0xe8, 0xd5, 0xda, 0x42, 0xb4, 0xdd, 0x8d, 0xb9, 0x85, 0x28, 0x0a, + 0x03, 0x1d, 0x09, 0x20, 0x73, 0x42, 0x12, 0xad, 0x02, 0x40, 0x03, 0x03, + 0x10, 0x0c, 0x93, 0x06, 0x74, 0x11, 0x23, 0x14, 0xb1, 0x50, 0xf3, 0xce, + 0x40, 0x37, 0x83, 0x0c, 0x40, 0x0f, 0x13, 0x03, 0x24, 0x0a, 0x63, 0x12, + 0x88, 0x1b, 0xf3, 0x00, 0x88, 0x0b, 0x33, 0x17, 0x98, 0x0c, 0x00, 0xa0, + 0x13, 0xe6, 0x01, 0xb0, 0x13, 0x86, 0x09, 0x88, 0x4b, 0x26, 0xd3, 0x93, + 0xb7, 0x26, 0x29, 0x28, 0x42, 0xe6, 0x08, 0x50, 0x1c, 0x86, 0x8f, 0x86, + 0x64, 0xc5, 0x06, 0x1a, 0x42, 0x60, 0x38, 0x64, 0x42, 0xa9, 0xc6, 0x28, + 0x3c, 0x18, 0x0e, 0xe5, 0xb6, 0xee, 0x3b, 0xc4, 0xd0, 0x01, 0x49, 0xb2, + 0x36, 0x96, 0x92, 0x11, 0x9a, 0x14, 0xfa, 0x88, 0xe8, 0x54, 0x0a, 0x71, + 0xfd, 0x5c, 0x30, 0xcd, 0xf5, 0xd8, 0xdb, 0xcb, 0x58, 0x0c, 0xdc, 0xbd, + 0xfe, 0xa6, 0x8c, 0xe4, 0xea, 0x48, 0xda, 0x4c, 0x4a, 0x1d, 0x77, 0x65, + 0x70, 0xec, 0x2a, 0x2c, 0xe7, 0x93, 0x4e, 0xc2, 0xe6, 0x6a, 0x5b, 0x11, + 0x17, 0x95, 0x53, 0x32, 0x5c, 0x42, 0x2b, 0x91, 0x96, 0xa1, 0x0f, 0x29, + 0xd1, 0x1b, 0xdc, 0xb0, 0xc2, 0x1a, 0xce, 0xeb, 0xfd, 0xa3, 0x52, 0x9e, + 0xe3, 0xc1, 0xce, 0x5d, 0xc3, 0x97, 0xdf, 0x2a, 0x23, 0x3f, 0x50, 0xbe, + 0xcd, 0xb4, 0x6a, 0xd1, 0xca, 0xff, 0xfb, 0xd4, 0x60, 0x58, 0x8d, 0xd8, + 0x44, 0x70, 0x40, 0x13, 0xfb, 0x63, 0x70, 0x4f, 0xad, 0x98, 0x52, 0x34, + 0x62, 0x6e, 0x61, 0x21, 0xc0, 0xfe, 0x0f, 0xe9, 0x8d, 0xc1, 0x85, 0xb8, + 0x20, 0xc0, 0xf1, 0x95, 0xb8, 0x6a, 0xa5, 0x49, 0xe6, 0x2d, 0x32, 0xb3, + 0x96, 0x58, 0xfd, 0x32, 0x19, 0x76, 0x94, 0x5a, 0x71, 0x4a, 0xc3, 0x03, + 0xf1, 0xf9, 0x74, 0xf5, 0x0d, 0x6e, 0x2e, 0x42, 0x66, 0x16, 0x6e, 0x68, + 0x60, 0xdf, 0xd0, 0xea, 0xc4, 0xbf, 0x38, 0x5c, 0xca, 0x59, 0x7d, 0x0c, + 0xfc, 0xfa, 0xc7, 0xab, 0x17, 0x2c, 0x82, 0x1b, 0xa0, 0x43, 0x2e, 0x98, + 0xb4, 0xb9, 0xfb, 0x9c, 0xa4, 0xe6, 0xe3, 0xc8, 0xd6, 0x2e, 0xad, 0x56, + 0x38, 0x14, 0x53, 0x4d, 0x1b, 0x5e, 0xbc, 0x3f, 0x8c, 0x5e, 0x90, 0xe0, + 0x29, 0x58, 0x3d, 0xbc, 0x24, 0x86, 0xc8, 0xc1, 0xf0, 0x64, 0x00, 0x00, + 0x56, 0x3c, 0xe9, 0x55, 0x65, 0xa0, 0x72, 0x8a, 0xb2, 0xaf, 0x4e, 0x43, + 0xb0, 0x88, 0x8d, 0xae, 0x57, 0xff, 0x3f, 0xd7, 0x89, 0xdb, 0x31, 0x6c, + 0xfc, 0x39, 0x9b, 0x55, 0xdf, 0x32, 0x15, 0xdd, 0x56, 0xad, 0xea, 0xf6, + 0xfa, 0xdd, 0x3f, 0xd7, 0x4a, 0x69, 0xf5, 0xeb, 0xfb, 0xea, 0xf7, 0xfa, + 0x7f, 0xdb, 0x7f, 0xd7, 0xaf, 0xdb, 0x76, 0xaf, 0xb5, 0x1d, 0x5d, 0x99, + 0x4e, 0x8c, 0xae, 0xa8, 0x8e, 0x45, 0xb2, 0xbb, 0xac, 0x13, 0x8b, 0x2b, + 0x20, 0x30, 0x08, 0x6a, 0x98, 0x1a, 0x80, 0x2c, 0x98, 0x3b, 0xe0, 0x62, + 0x98, 0xd0, 0x04, 0x55, 0x1f, 0xe5, 0xc0, 0x43, 0x15, 0x87, 0x94, 0x60, + 0xd9, 0x82, 0x58, 0x62, 0x39, 0x83, 0xfe, 0x60, 0x52, 0x82, 0xe0, 0x62, + 0x20, 0x86, 0x22, 0x60, 0x20, 0x01, 0x9c, 0x48, 0x0a, 0x89, 0x80, 0x62, + 0x26, 0x81, 0xa1, 0xc7, 0x23, 0xb1, 0x86, 0x02, 0x14, 0x11, 0x80, 0xd4, + 0x06, 0xe9, 0x8f, 0x9c, 0x67, 0xe1, 0x98, 0xc0, 0xc4, 0xe6, 0x02, 0x53, + 0x83, 0x8a, 0x82, 0x46, 0x11, 0x1f, 0x61, 0xeb, 0x1d, 0x3e, 0x9b, 0x75, + 0x28, 0x48, 0xd9, 0xb9, 0x65, 0x34, 0x51, 0xba, 0xa9, 0x83, 0x50, 0xa8, + 0xb6, 0xd7, 0x0b, 0x74, 0xa7, 0x5d, 0x0e, 0xdd, 0x78, 0xfc, 0x3e, 0xfe, + 0x6a, 0xcc, 0x56, 0xcb, 0x81, 0xc7, 0x4e, 0x37, 0xbc, 0xa5, 0x8d, 0xbb, + 0xf9, 0x3f, 0x15, 0x7b, 0xb0, 0x11, 0x19, 0x38, 0x0f, 0xdf, 0x41, 0x56, + 0x57, 0x39, 0x13, 0xcc, 0x0f, 0xd7, 0xa3, 0x3c, 0x58, 0xa8, 0xf9, 0x09, + 0x4b, 0x2b, 0x0e, 0x8e, 0x11, 0x20, 0x95, 0x8f, 0x04, 0xe2, 0x7a, 0x19, + 0x8d, 0x16, 0x1f, 0xbe, 0xec, 0x28, 0xd7, 0x44, 0x70, 0xa8, 0x4f, 0x56, + 0xe4, 0x08, 0xc9, 0x25, 0x13, 0xed, 0x84, 0x92, 0x38, 0xb2, 0xa7, 0x8a, + 0x86, 0x54, 0x5e, 0x4f, 0x3a, 0xa6, 0x42, 0xc2, 0x96, 0x49, 0x11, 0xa8, + 0x84, 0xe4, 0xba, 0xda, 0x96, 0xcd, 0xdb, 0x2f, 0x27, 0x4a, 0x65, 0xc8, + 0x4a, 0x6a, 0x76, 0x43, 0x8f, 0x1a, 0xb2, 0x65, 0x49, 0x0e, 0x54, 0x39, + 0xc5, 0xd4, 0x3a, 0x9c, 0x9e, 0x92, 0x4a, 0x47, 0xc5, 0x4d, 0xa5, 0x76, + 0xc8, 0x9f, 0xd2, 0x6e, 0x34, 0x76, 0xb5, 0x65, 0x2e, 0xdc, 0x71, 0xb5, + 0x77, 0x16, 0x1d, 0xc4, 0xb8, 0x8e, 0xb8, 0x52, 0x35, 0x87, 0x45, 0x86, + 0xd7, 0x20, 0xa8, 0x28, 0x2a, 0x1d, 0x04, 0x64, 0x81, 0x59, 0x98, 0x46, + 0x33, 0x3b, 0xc0, 0x22, 0x3b, 0x03, 0xfe, 0x6b, 0xea, 0xd3, 0xe7, 0xee, + 0x2f, 0x81, 0x5d, 0x69, 0x0d, 0xdc, 0x74, 0x44, 0x99, 0x7b, 0x16, 0xbd, + 0xb9, 0xc2, 0x23, 0xd7, 0x4c, 0xcb, 0x93, 0x2a, 0xba, 0x17, 0xde, 0x7f, + 0x69, 0x6e, 0x7b, 0xd6, 0xfa, 0x58, 0xee, 0xcd, 0xb5, 0x13, 0x5b, 0xa5, + 0x66, 0x77, 0x54, 0x42, 0x99, 0x64, 0x56, 0x56, 0x4d, 0x74, 0x4d, 0x93, + 0xda, 0x94, 0xad, 0x6a, 0x6a, 0xa2, 0x9e, 0xf5, 0x63, 0xd1, 0x93, 0x7e, + 0xf9, 0xa9, 0x46, 0x92, 0xd4, 0xce, 0x52, 0x93, 0xa2, 0x94, 0x87, 0x9c, + 0x5c, 0x3a, 0x28, 0xaa, 0x62, 0x5c, 0x04, 0x38, 0x98, 0xe9, 0x43, 0xc3, + 0x41, 0xc5, 0x85, 0xd8, 0x26, 0x1d, 0x65, 0x30, 0x2b, 0x00, 0x74, 0x30, + 0x70, 0xc2, 0xc9, 0x31, 0xa5, 0xa5, 0x06, 0x3f, 0xfd, 0x86, 0xb3, 0x30, + 0xeb, 0x81, 0x78, 0x30, 0x6c, 0xc2, 0xad, 0x30, 0x56, 0x43, 0x5a, 0x30, + 0x47, 0xc0, 0xdc, 0x30, 0x42, 0xc1, 0xbc, 0x30, 0x3e, 0x80, 0xd7, 0x30, + 0x25, 0xc0, 0xf0, 0x30, 0x54, 0x03, 0x7b, 0x30, 0x5d, 0xe0, 0xd1, 0x31, + 0x19, 0x01, 0xa9, 0x30, 0x39, 0xc0, 0x9c, 0x1a, 0xa5, 0x01, 0x4b, 0x12, + 0x8d, 0x88, 0x63, 0x97, 0x13, 0x4f, 0x7d, 0x46, 0x82, 0xa0, 0x37, 0x15, + 0x9c, 0xb5, 0xa8, 0x79, 0x49, 0x45, 0xde, 0xd5, 0x05, 0x97, 0xc5, 0xa1, + 0xb5, 0xd1, 0x09, 0x67, 0xed, 0x5d, 0xc1, 0x7f, 0xaf, 0xb2, 0x96, 0xb1, + 0x0b, 0x90, 0x37, 0x28, 0xd5, 0xdd, 0xd1, 0xc6, 0x5b, 0xa4, 0x7e, 0x2c, + 0xca, 0x26, 0xb5, 0x02, 0xbe, 0xf0, 0x87, 0x66, 0x1e, 0x82, 0x0c, 0xa5, + 0xdd, 0x91, 0x30, 0x17, 0x49, 0x03, 0x09, 0xad, 0x88, 0xfe, 0x80, 0xc8, + 0x9b, 0x7c, 0x87, 0x97, 0xba, 0xe5, 0x5e, 0xc2, 0xba, 0x53, 0x4f, 0x0d, + 0xfa, 0xc4, 0x38, 0xb1, 0x95, 0x18, 0x7c, 0xcc, 0xe9, 0xe2, 0x9d, 0xb9, + 0xaa, 0x45, 0xa4, 0x3d, 0x9d, 0x81, 0x5a, 0x8c, 0x92, 0x1a, 0xb5, 0x3f, + 0x35, 0x8d, 0x64, 0x7b, 0x7a, 0x99, 0x45, 0x11, 0xb2, 0x45, 0x73, 0xf8, + 0x29, 0x05, 0xdd, 0x98, 0x0f, 0xd6, 0x72, 0xfc, 0x9d, 0x4f, 0xb1, 0x43, + 0x47, 0xc0, 0x45, 0xb8, 0x32, 0xff, 0xfb, 0xd4, 0x60, 0x65, 0x0f, 0xd8, + 0xc5, 0x70, 0x3f, 0x03, 0xfb, 0x7b, 0x70, 0x62, 0x8e, 0x08, 0x31, 0x48, + 0x25, 0x6e, 0x24, 0x1d, 0xc0, 0xfa, 0x0f, 0xed, 0xed, 0xc1, 0x3b, 0x38, + 0x21, 0x48, 0xd0, 0x89, 0xb8, 0x27, 0x1f, 0xe9, 0x9d, 0xcd, 0x95, 0x69, + 0x9c, 0xfc, 0x57, 0x1f, 0x8e, 0x6c, 0xb2, 0xae, 0x23, 0xaf, 0x2d, 0x2e, + 0xe6, 0x6a, 0x8e, 0xad, 0xc3, 0x0c, 0x06, 0xa5, 0x0e, 0x70, 0xeb, 0xab, + 0x61, 0x2d, 0xa2, 0xdc, 0x1e, 0x3d, 0x80, 0xd0, 0xa9, 0x8a, 0xc5, 0xf7, + 0x3a, 0xb9, 0x95, 0x40, 0xf1, 0xd3, 0xe9, 0x17, 0x98, 0xd4, 0x50, 0x52, + 0x69, 0xf9, 0xa8, 0xc4, 0x76, 0x36, 0x41, 0x78, 0xc1, 0x19, 0x1a, 0xcc, + 0xa6, 0x80, 0xa2, 0x1d, 0x68, 0xd3, 0xdd, 0x76, 0x42, 0x0c, 0x05, 0x40, + 0xc0, 0x0b, 0x99, 0xf5, 0x24, 0xa3, 0xe6, 0x4a, 0x41, 0x6c, 0x92, 0x47, + 0x5c, 0xe6, 0x43, 0x85, 0x11, 0x1a, 0x6b, 0x88, 0x8c, 0xc9, 0xac, 0x72, + 0xa2, 0x5e, 0x32, 0x01, 0x48, 0x64, 0x68, 0x91, 0x91, 0x4f, 0x64, 0x74, + 0x9d, 0x8a, 0x6b, 0xec, 0xdd, 0x91, 0x6a, 0x8b, 0x63, 0x7d, 0x5d, 0x7b, + 0x77, 0x76, 0x76, 0x22, 0x25, 0x58, 0x95, 0xee, 0xd6, 0xb6, 0xd4, 0xd6, + 0x54, 0x34, 0xd6, 0xd1, 0x3a, 0x55, 0x5f, 0xb2, 0xb5, 0x2d, 0x57, 0x57, + 0xa7, 0xd9, 0x3a, 0x14, 0x44, 0xae, 0xc6, 0x20, 0x88, 0xc3, 0x8a, 0x0d, + 0x63, 0x1c, 0x8a, 0x38, 0xd5, 0x0a, 0x30, 0xa8, 0xd0, 0x66, 0x1f, 0x47, + 0x0f, 0x08, 0x98, 0x08, 0xa0, 0xa8, 0x18, 0x20, 0x62, 0x3f, 0x98, 0x9f, + 0x9d, 0xea, 0x1d, 0xee, 0x06, 0x07, 0x98, 0x4a, 0x41, 0x38, 0x18, 0x16, + 0x21, 0x0f, 0x98, 0xae, 0x00, 0x48, 0x98, 0x0b, 0x40, 0xad, 0x98, 0x56, + 0x20, 0x7e, 0x18, 0x0c, 0x80, 0x73, 0x18, 0x18, 0x00, 0x53, 0x98, 0x31, + 0x21, 0xaf, 0x19, 0xf7, 0x8c, 0xd3, 0x18, 0x9d, 0x20, 0x6b, 0x18, 0x23, + 0xc0, 0x3f, 0x9c, 0x78, 0x20, 0x09, 0x64, 0x69, 0x1c, 0x48, 0xd8, 0x1c, + 0xa0, 0xb6, 0xdd, 0xa6, 0x64, 0xce, 0xdb, 0x9b, 0x80, 0x97, 0x89, 0x1e, + 0x95, 0xca, 0x6c, 0xe0, 0xcf, 0x30, 0x06, 0x7e, 0xd1, 0x97, 0x33, 0xf8, + 0xdd, 0x94, 0xbe, 0x1f, 0x81, 0x9d, 0x28, 0xeb, 0x95, 0x4f, 0x28, 0x77, + 0x9e, 0x26, 0x93, 0x02, 0x4f, 0x4a, 0x1c, 0xac, 0x69, 0x98, 0x67, 0x19, + 0xd4, 0x3b, 0x4d, 0x5d, 0xfb, 0x9f, 0x9a, 0x2b, 0x5e, 0x22, 0xcb, 0xe9, + 0x86, 0xa3, 0x46, 0xbc, 0x56, 0x46, 0x3c, 0x22, 0x2e, 0x8c, 0x54, 0x4a, + 0xe0, 0xe2, 0x42, 0x66, 0x3f, 0x0b, 0xa1, 0x7d, 0x72, 0x62, 0x51, 0xae, + 0xd8, 0x6e, 0x88, 0x5c, 0x1f, 0xef, 0x95, 0xd3, 0x9f, 0x49, 0xb6, 0x46, + 0x67, 0x03, 0x0a, 0x76, 0x03, 0xd6, 0x8a, 0x84, 0x7b, 0x39, 0x86, 0x8f, + 0xf1, 0x96, 0xd4, 0xf1, 0x8e, 0x59, 0x39, 0xbc, 0xc9, 0x56, 0xd7, 0x04, + 0x31, 0xd4, 0x8c, 0xee, 0x68, 0x7c, 0x64, 0xd3, 0x43, 0x53, 0x25, 0x55, + 0xed, 0x0f, 0x99, 0x22, 0x29, 0x94, 0xea, 0xda, 0x21, 0x91, 0xa3, 0x69, + 0x8f, 0x33, 0x2c, 0xbf, 0x63, 0x79, 0xe5, 0x68, 0x72, 0x44, 0xae, 0xae, + 0xa9, 0x6f, 0x56, 0x9d, 0xea, 0xeb, 0x32, 0x36, 0x98, 0x67, 0xba, 0xdb, + 0x83, 0xb8, 0xed, 0xcd, 0xef, 0x66, 0x63, 0x43, 0x95, 0x4e, 0x3a, 0x85, + 0x09, 0xa5, 0x09, 0x58, 0x82, 0xaf, 0x56, 0xb9, 0x34, 0xa7, 0x1b, 0x4f, + 0xc6, 0x65, 0xf6, 0xb6, 0xd6, 0x45, 0x29, 0xbe, 0x70, 0x47, 0x32, 0x97, + 0x6d, 0x08, 0x6a, 0x8a, 0x19, 0x7c, 0x34, 0x4c, 0x74, 0x38, 0x9d, 0x89, + 0xd1, 0x5a, 0xa8, 0x46, 0x41, 0x65, 0x41, 0x37, 0x53, 0xae, 0x8a, 0xce, + 0xb2, 0xb8, 0xcd, 0xb3, 0x00, 0x11, 0x6f, 0x19, 0x21, 0x0b, 0xc9, 0x66, + 0xb7, 0x2e, 0x00, 0x80, 0xc2, 0x00, 0x95, 0xae, 0x94, 0xb3, 0x79, 0xa7, + 0x2e, 0xa8, 0xbf, 0xfa, 0x96, 0xbe, 0xf4, 0xdf, 0xe8, 0x9f, 0xfd, 0x5b, + 0xf5, 0xd0, 0xd3, 0xe5, 0xbd, 0x9a, 0xfb, 0xa5, 0x7a, 0xff, 0xd2, 0xaf, + 0xbf, 0xd2, 0xcc, 0x44, 0xbf, 0x74, 0x9d, 0x8a, 0xc4, 0x31, 0xd5, 0x82, + 0x4a, 0x57, 0x6b, 0x98, 0xa0, 0x25, 0x30, 0x09, 0x88, 0x1d, 0x30, 0x0c, + 0x0c, 0xf0, 0x54, 0x8c, 0x08, 0x80, 0xee, 0xcc, 0x02, 0x7c, 0x91, 0x0c, + 0x35, 0x52, 0xbc, 0xcc, 0x11, 0x90, 0x8e, 0x0c, 0x09, 0x60, 0x46, 0x8c, + 0x13, 0x10, 0x20, 0x49, 0x80, 0x9d, 0x30, 0xf5, 0x80, 0x38, 0x30, 0x27, + 0x00, 0x73, 0x30, 0x1a, 0x40, 0x06, 0x30, 0x48, 0x80, 0x65, 0x33, 0xf3, + 0x48, 0xa7, 0x30, 0xf6, 0x80, 0x17, 0x30, 0x31, 0xc0, 0x12, 0x38, 0xc5, + 0x07, 0xa9, 0x98, 0x00, 0x85, 0x46, 0xa5, 0x95, 0x77, 0x91, 0xbe, 0x05, + 0x95, 0xcd, 0xb6, 0x67, 0x66, 0x2a, 0xee, 0x45, 0x61, 0x89, 0xd6, 0xbc, + 0xed, 0x63, 0x0e, 0x43, 0x90, 0xe3, 0x8f, 0x0d, 0x61, 0x28, 0x75, 0x1c, + 0x78, 0x71, 0x99, 0x3d, 0xcd, 0xde, 0x41, 0x03, 0xbe, 0xd1, 0x29, 0x3b, + 0x59, 0x98, 0x78, 0xe8, 0xa3, 0xef, 0x07, 0x5f, 0x37, 0x63, 0x51, 0x63, + 0x92, 0xa1, 0x65, 0x61, 0xc2, 0x46, 0xc6, 0x27, 0xc4, 0xa6, 0x8a, 0x84, + 0x32, 0xaa, 0xe7, 0xf8, 0x4f, 0x2d, 0x58, 0xd9, 0x09, 0x86, 0x8f, 0x91, + 0x4f, 0x6a, 0xd2, 0xaa, 0xfb, 0x9a, 0x3f, 0x56, 0xb0, 0xa4, 0xd3, 0xf6, + 0x28, 0x3a, 0xa5, 0x21, 0xe4, 0x9a, 0xae, 0x6b, 0x95, 0x1d, 0x27, 0x5f, + 0x12, 0x2b, 0x54, 0xb4, 0xa0, 0xbd, 0x9a, 0xf3, 0xe6, 0x2e, 0xc6, 0x66, + 0x73, 0xe8, 0x90, 0xe1, 0x5c, 0xff, 0xfb, 0xd4, 0x60, 0x5d, 0x8d, 0x98, + 0x29, 0x70, 0x3f, 0x8b, 0xfa, 0x63, 0x70, 0x55, 0x4e, 0x08, 0x56, 0x20, + 0x62, 0x6e, 0x23, 0xb5, 0xc0, 0xfa, 0x0f, 0xe9, 0xed, 0xc1, 0x8d, 0xb8, + 0x20, 0xc4, 0xf0, 0x95, 0xb8, 0x69, 0xe7, 0xc3, 0x92, 0x19, 0x5f, 0x22, + 0x29, 0x8e, 0x12, 0xc3, 0xae, 0xa8, 0x2c, 0x91, 0x47, 0xff, 0x85, 0x29, + 0xda, 0x19, 0x56, 0xf0, 0xa1, 0x2f, 0x3d, 0x66, 0x13, 0x94, 0xeb, 0xc9, + 0xab, 0x4c, 0x1e, 0x5b, 0x77, 0xcf, 0xca, 0xcb, 0xbe, 0x89, 0xbe, 0xec, + 0x34, 0x70, 0x99, 0x5f, 0x21, 0xc3, 0xc9, 0xee, 0x25, 0x94, 0xa3, 0x48, + 0x42, 0x8c, 0xa8, 0x76, 0x6a, 0x95, 0x69, 0x45, 0x72, 0x83, 0xc2, 0x31, + 0x80, 0xfa, 0x3c, 0x2a, 0x16, 0xb2, 0x0b, 0x80, 0x18, 0xa4, 0x00, 0x0a, + 0x9b, 0x71, 0xe6, 0xc1, 0x97, 0xd9, 0x0c, 0xb9, 0x17, 0x6c, 0xcb, 0x23, + 0x85, 0x41, 0x9a, 0xa3, 0x83, 0xbf, 0x7f, 0xdf, 0xf2, 0xd7, 0x2b, 0xd8, + 0xda, 0x52, 0x32, 0x5f, 0x52, 0xeb, 0x45, 0x4a, 0x23, 0xbd, 0x3f, 0xba, + 0x7d, 0x7c, 0xd6, 0xbd, 0xbe, 0xf4, 0x97, 0xfa, 0xad, 0x52, 0x44, 0xa2, + 0x57, 0xdf, 0xed, 0xcb, 0xaa, 0xa5, 0xbf, 0xf6, 0x63, 0x7f, 0xbb, 0xdd, + 0xfa, 0xdc, 0xae, 0xd2, 0x3b, 0xc7, 0x0e, 0x81, 0x01, 0x30, 0x23, 0x10, + 0x50, 0x82, 0x05, 0x0c, 0x65, 0x39, 0x87, 0x61, 0x26, 0x0b, 0x68, 0x3a, + 0xc6, 0x0f, 0x40, 0x8c, 0x26, 0x2a, 0x2f, 0x3b, 0xc7, 0x90, 0x09, 0x78, + 0x66, 0x1d, 0xa8, 0x55, 0xc6, 0x08, 0xf0, 0x38, 0xe6, 0x06, 0x88, 0x2e, + 0x86, 0x01, 0x08, 0x0a, 0x86, 0x17, 0xf8, 0x42, 0xe6, 0x06, 0x28, 0x1d, + 0x66, 0x07, 0x08, 0x18, 0xc6, 0x06, 0xa0, 0x10, 0xc6, 0x9e, 0x01, 0x5b, + 0x26, 0x35, 0xb8, 0x6c, 0x26, 0x04, 0x58, 0x0b, 0x80, 0x51, 0xa7, 0x62, + 0x51, 0x91, 0x4a, 0x66, 0x0b, 0xc8, 0x43, 0x07, 0xaf, 0x15, 0x20, 0xea, + 0x34, 0xf8, 0x05, 0x39, 0x19, 0x12, 0x48, 0xb5, 0x35, 0xd4, 0xcb, 0xda, + 0x3a, 0x82, 0xbb, 0x8d, 0x8f, 0x18, 0x61, 0xfe, 0xa8, 0xc9, 0x74, 0xfd, + 0x3e, 0xcc, 0xed, 0xa5, 0xb4, 0xe6, 0x81, 0x04, 0x35, 0xd9, 0x43, 0xf4, + 0xbb, 0xae, 0xcd, 0x35, 0x58, 0x6e, 0x53, 0xd9, 0xd7, 0x16, 0x92, 0x13, + 0x40, 0x5b, 0xcd, 0x38, 0xe7, 0x93, 0x2e, 0xca, 0x3d, 0x38, 0x2b, 0xdd, + 0x41, 0x9d, 0x64, 0x98, 0xba, 0x65, 0x51, 0x31, 0xa8, 0xde, 0xc7, 0x45, + 0x39, 0xdd, 0xd1, 0x6e, 0x71, 0x49, 0xa5, 0x1a, 0x72, 0xa5, 0x69, 0x88, + 0xc4, 0xa9, 0x5e, 0xdc, 0x04, 0x11, 0xfe, 0xe4, 0xd6, 0xb8, 0x54, 0xa4, + 0x8e, 0x65, 0x45, 0x95, 0x89, 0x04, 0x35, 0xe1, 0xbf, 0xb5, 0x4e, 0x14, + 0x2a, 0x36, 0xe5, 0x4a, 0x75, 0x1c, 0x89, 0x57, 0xcc, 0xb9, 0x73, 0x82, + 0xaf, 0x4d, 0x1d, 0xaf, 0xd0, 0xe5, 0x75, 0xd1, 0xcf, 0xe0, 0xb7, 0x26, + 0xc9, 0x1a, 0xb2, 0x78, 0x8e, 0x27, 0xf6, 0x55, 0x88, 0xa8, 0x4e, 0xa1, + 0x3e, 0x52, 0x2c, 0xe1, 0x9d, 0x2a, 0xc3, 0xb5, 0xe7, 0x70, 0xa0, 0x21, + 0x08, 0x86, 0xf5, 0x7a, 0xb2, 0x12, 0x85, 0x5a, 0xa2, 0x67, 0x62, 0x89, + 0x12, 0xe8, 0x5d, 0x5b, 0xb3, 0x58, 0xca, 0x55, 0x95, 0x74, 0x34, 0xc3, + 0xc4, 0x5b, 0xc6, 0x28, 0x8b, 0xa5, 0x98, 0x0e, 0xdc, 0x6a, 0xf6, 0x93, + 0x27, 0x9b, 0x4f, 0x14, 0x20, 0xe6, 0x38, 0x1b, 0xcf, 0xc2, 0x52, 0x94, + 0x39, 0x0f, 0x15, 0x2a, 0x24, 0xe0, 0x50, 0x69, 0xef, 0xcf, 0x02, 0xf3, + 0xd3, 0x1e, 0x05, 0xaf, 0x6e, 0xdb, 0xd9, 0x99, 0x30, 0x29, 0xce, 0xc7, + 0x11, 0x46, 0x80, 0xd9, 0xf8, 0x99, 0x91, 0x85, 0x9a, 0x42, 0x4c, 0xc0, + 0xb4, 0x7a, 0x5a, 0xe6, 0xde, 0xf6, 0x4b, 0x3d, 0xc8, 0xf4, 0x2b, 0x1d, + 0xca, 0x47, 0x4f, 0xfb, 0xab, 0x3e, 0xed, 0x7a, 0xaa, 0x21, 0xe7, 0x54, + 0x47, 0xcb, 0x63, 0x29, 0xd1, 0x2d, 0x6f, 0xaa, 0xbb, 0x77, 0x55, 0xdb, + 0x77, 0x74, 0xa6, 0xc8, 0xaa, 0x8f, 0x42, 0xd6, 0x49, 0x5b, 0xb9, 0x55, + 0x08, 0x88, 0x3c, 0xd4, 0x1c, 0x1c, 0x41, 0x61, 0x61, 0xf1, 0x12, 0x01, + 0xc4, 0x9c, 0x38, 0xa6, 0x09, 0x31, 0x03, 0xc2, 0xe2, 0xaa, 0xd8, 0x0c, + 0x0f, 0x90, 0x3c, 0x0c, 0x1b, 0x40, 0x7b, 0x4c, 0x56, 0xb6, 0x54, 0x0f, + 0x33, 0x51, 0x82, 0x4c, 0x33, 0xd0, 0x55, 0x8c, 0x17, 0x80, 0x3b, 0xcc, + 0x0c, 0x50, 0x40, 0xcc, 0x08, 0xc0, 0x3d, 0xcc, 0x0e, 0xf0, 0x88, 0x0c, + 0x05, 0x90, 0x11, 0x8c, 0x09, 0x40, 0x3a, 0x4c, 0x04, 0x20, 0x87, 0x0c, + 0x4d, 0x31, 0xbd, 0x8c, 0x38, 0xd0, 0x6c, 0x80, 0x80, 0x3d, 0x99, 0xa0, + 0x28, 0x31, 0x18, 0x11, 0xd0, 0x69, 0x51, 0x97, 0x99, 0x92, 0xde, 0x86, + 0xa5, 0x0e, 0x4b, 0xfc, 0xfa, 0xc7, 0x20, 0xa6, 0xe7, 0x5d, 0xad, 0x40, + 0x75, 0x5c, 0xfa, 0x38, 0xd3, 0xb1, 0x5d, 0xe7, 0x87, 0xda, 0x5c, 0x69, + 0x8f, 0xda, 0x80, 0xa0, 0xec, 0xa1, 0xe8, 0xac, 0xfc, 0x0f, 0x1d, 0x71, + 0xf5, 0x2a, 0x9b, 0x96, 0x52, 0xce, 0xc8, 0xa1, 0xa3, 0x54, 0x8b, 0x04, + 0xa5, 0xab, 0x0e, 0x1f, 0x1e, 0xdb, 0x22, 0xbc, 0xc9, 0xfa, 0x19, 0x84, + 0x44, 0xc5, 0x0b, 0x14, 0x16, 0x0b, 0x8b, 0x0f, 0x1b, 0x66, 0x33, 0xd4, + 0x49, 0x1c, 0xbb, 0x6f, 0x1f, 0x4c, 0x6b, 0x96, 0x25, 0xa1, 0x5e, 0xd7, + 0x92, 0xb9, 0x49, 0x31, 0x35, 0x7e, 0x21, 0xa8, 0x44, 0xe9, 0x9f, 0x94, + 0x4a, 0x76, 0x72, 0x4f, 0x53, 0x32, 0x82, 0x46, 0x73, 0xd5, 0xca, 0xb5, + 0xeb, 0x69, 0x1e, 0x2c, 0x58, 0xff, 0xfb, 0xd4, 0x60, 0x5d, 0x89, 0x97, + 0xec, 0x70, 0x40, 0x0b, 0xf8, 0x63, 0x70, 0x57, 0x6e, 0x08, 0x41, 0x3c, + 0x25, 0x6e, 0x1c, 0x39, 0xc1, 0x05, 0x2f, 0xbd, 0x8d, 0xc1, 0x89, 0x38, + 0x21, 0x18, 0xf1, 0x95, 0xb8, 0xeb, 0xe6, 0xe6, 0xe8, 0xfc, 0xf4, 0xf5, + 0x33, 0x0e, 0x1c, 0xf9, 0xf3, 0x91, 0xab, 0x5e, 0x5a, 0x3d, 0x43, 0x59, + 0xef, 0x1b, 0xab, 0x8b, 0xbb, 0xcf, 0xd9, 0x30, 0xaf, 0xb2, 0xd2, 0x66, + 0x2d, 0x09, 0xd2, 0xe8, 0x9d, 0x7d, 0x74, 0x0a, 0xa3, 0x89, 0x0b, 0x94, + 0x49, 0x9b, 0x88, 0xce, 0xca, 0x47, 0x35, 0x32, 0x13, 0xa9, 0x14, 0x4e, + 0x9c, 0x16, 0x93, 0x43, 0x0a, 0xa2, 0x5d, 0x0f, 0x81, 0x89, 0x09, 0x8d, + 0x80, 0x93, 0x67, 0x34, 0xf8, 0xd4, 0x0c, 0x56, 0xfe, 0xb8, 0x84, 0x4e, + 0x65, 0x03, 0x11, 0xb9, 0xd2, 0xb2, 0x12, 0x10, 0xb4, 0xe5, 0x97, 0x29, + 0x1c, 0xd2, 0x76, 0x03, 0x45, 0x23, 0x1e, 0x45, 0xd5, 0xe6, 0x2e, 0x8e, + 0x9b, 0xdf, 0xec, 0x8d, 0xf7, 0xb3, 0xad, 0x92, 0x4c, 0xf6, 0x79, 0x6d, + 0xa7, 0xc9, 0x57, 0xbd, 0x2a, 0x9a, 0xfb, 0x6e, 0xe4, 0x3f, 0x4f, 0xf2, + 0xe4, 0xa2, 0x72, 0x59, 0xfa, 0x55, 0xdb, 0xd0, 0xc4, 0x47, 0x7d, 0xb5, + 0x12, 0x33, 0x09, 0x30, 0x82, 0x80, 0xc8, 0x47, 0x24, 0x28, 0x1d, 0x40, + 0xce, 0x1c, 0x1c, 0x03, 0x55, 0x46, 0x04, 0xf8, 0x08, 0x46, 0x0a, 0xc0, + 0x00, 0x46, 0x25, 0x38, 0x57, 0x27, 0x5c, 0x78, 0x10, 0x83, 0xc2, 0xc7, + 0x98, 0x1e, 0x80, 0x48, 0x98, 0x36, 0x60, 0x33, 0x18, 0x0b, 0x00, 0x27, + 0x18, 0x40, 0xc0, 0x89, 0x82, 0x00, 0x1b, 0x05, 0x00, 0x02, 0x55, 0x00, + 0xdc, 0xc0, 0xaf, 0x09, 0x1c, 0xc0, 0x27, 0x00, 0x84, 0x2c, 0x00, 0x20, + 0x70, 0x9c, 0x0e, 0xcc, 0xa6, 0xd5, 0x11, 0xee, 0x88, 0x95, 0x3a, 0xad, + 0x7a, 0x63, 0xb2, 0x41, 0x78, 0x7b, 0xe1, 0x14, 0x8e, 0x63, 0x6c, 0x47, + 0xa8, 0xaa, 0x72, 0xb3, 0x9a, 0x0a, 0xc4, 0xaa, 0x8d, 0x40, 0xd9, 0x11, + 0x40, 0xfd, 0x18, 0x85, 0xa5, 0x93, 0xc8, 0x87, 0x71, 0x5c, 0xd5, 0x29, + 0x65, 0x62, 0xe9, 0x4e, 0xa8, 0x9e, 0x57, 0x2e, 0x21, 0xbc, 0x11, 0x6a, + 0xb3, 0xd7, 0x45, 0x26, 0x00, 0xf4, 0x0b, 0x10, 0x98, 0x8b, 0x8f, 0x62, + 0x5b, 0xea, 0x61, 0x67, 0xe0, 0x7a, 0xb4, 0x81, 0x76, 0x55, 0x55, 0x16, + 0xc6, 0xb7, 0x36, 0xff, 0xb5, 0xbf, 0x2f, 0x5a, 0xfb, 0x14, 0x2e, 0x9d, + 0xfc, 0xce, 0xb7, 0xb0, 0xd2, 0xeb, 0x19, 0x87, 0x9a, 0x97, 0xb6, 0xfe, + 0xeb, 0xf7, 0xa2, 0x1a, 0xdb, 0xf3, 0x68, 0x5f, 0xac, 0x7c, 0x0e, 0x9d, + 0x33, 0xd0, 0xdb, 0xa0, 0xbb, 0x9a, 0xcc, 0xf6, 0x37, 0x27, 0x3b, 0x03, + 0xee, 0x7c, 0x50, 0x5d, 0xd6, 0xed, 0xb1, 0xc0, 0x72, 0xd4, 0xbb, 0x55, + 0x92, 0xfa, 0xe8, 0xab, 0x5a, 0xc0, 0xbe, 0x3b, 0xd1, 0xf8, 0x5f, 0x7e, + 0x35, 0xeb, 0xef, 0x45, 0xd5, 0xec, 0x44, 0x66, 0x60, 0x7c, 0x39, 0x19, + 0x78, 0x6e, 0x92, 0x22, 0x9a, 0xfe, 0x2c, 0x0a, 0xe7, 0xda, 0xb8, 0x8b, + 0x9b, 0xb5, 0x2e, 0x7c, 0x46, 0x20, 0xae, 0xb0, 0x1a, 0x59, 0xa9, 0xb8, + 0x81, 0x41, 0x59, 0xdd, 0xc9, 0xab, 0x1a, 0xc5, 0x10, 0x84, 0x6b, 0xcc, + 0x29, 0x55, 0x49, 0x6a, 0xa3, 0x0e, 0x7a, 0x2d, 0xf4, 0xe9, 0x33, 0x27, + 0xfc, 0xfa, 0xd2, 0xcd, 0xda, 0xbc, 0xd7, 0x7d, 0x15, 0xd6, 0xad, 0xb9, + 0xbb, 0xd6, 0xfb, 0xd6, 0xf4, 0x42, 0x33, 0xf5, 0xb7, 0xbf, 0xd6, 0x88, + 0xda, 0x56, 0xf3, 0xa2, 0x9e, 0x9b, 0x11, 0x4a, 0x55, 0x31, 0xa8, 0x51, + 0x71, 0xa2, 0x62, 0xca, 0x2e, 0x86, 0x0e, 0x88, 0x09, 0x0c, 0x34, 0x49, + 0x80, 0xa3, 0xce, 0x98, 0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x70, 0x5c, + 0x65, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x23, 0x40, 0xa5, 0x30, 0x71, 0x82, 0xb6, 0x31, 0x9f, 0xe3, + 0xa1, 0x3f, 0x87, 0xc9, 0x6c, 0x30, 0xf7, 0xc1, 0xb1, 0x30, 0x6a, 0x00, + 0x62, 0x30, 0xc9, 0x81, 0x1e, 0x30, 0x23, 0x80, 0xae, 0x30, 0xd4, 0x41, + 0x8b, 0x30, 0x22, 0x80, 0x31, 0x30, 0x01, 0x40, 0x18, 0x1d, 0x01, 0x58, + 0xc2, 0xbe, 0x16, 0x10, 0xc0, 0x7a, 0x00, 0x08, 0xc0, 0x1b, 0x00, 0x2c, + 0x24, 0xc2, 0xbe, 0x55, 0x0c, 0xb7, 0xe5, 0xa9, 0xf8, 0x5b, 0x0b, 0x6b, + 0x9c, 0xec, 0x4b, 0xf1, 0x94, 0x0f, 0x4b, 0xaa, 0x30, 0x95, 0x28, 0xcb, + 0x92, 0xfa, 0xca, 0x18, 0xc6, 0x5e, 0x56, 0x43, 0xa8, 0xcd, 0x7a, 0xd0, + 0x4b, 0x1d, 0x2b, 0x9d, 0x2a, 0x0c, 0x86, 0x25, 0x95, 0x41, 0xa6, 0xa3, + 0x2c, 0x6c, 0x99, 0x42, 0x5a, 0x61, 0xc7, 0x2f, 0x83, 0x62, 0xba, 0x72, + 0x52, 0x56, 0xde, 0x29, 0x8b, 0x97, 0xa6, 0x3b, 0x22, 0x08, 0xe7, 0xd7, + 0x5f, 0x11, 0xfa, 0x52, 0x52, 0x5c, 0xdf, 0x3c, 0x11, 0x49, 0xad, 0x07, + 0x58, 0x1e, 0x22, 0xdd, 0x25, 0x1c, 0xc2, 0x7e, 0x6a, 0xbd, 0x6b, 0x69, + 0x96, 0x96, 0xce, 0x4c, 0x87, 0x71, 0xf2, 0xeb, 0x12, 0x8f, 0x26, 0x41, + 0xb3, 0x00, 0x2d, 0x85, 0xc5, 0x86, 0xc8, 0x9d, 0x82, 0x01, 0xdd, 0x8f, + 0xd7, 0x91, 0x34, 0xe5, 0xd2, 0xc1, 0xd8, 0xe6, 0x74, 0x78, 0xfb, 0x91, + 0xc4, 0x7c, 0x7c, 0x60, 0x98, 0x96, 0x0d, 0x8c, 0xc6, 0x26, 0xf0, 0x8e, + 0x48, 0x05, 0xb7, 0x74, 0x78, 0x29, 0x9c, 0xd4, 0xaa, 0xd8, 0x80, 0x8e, + 0x85, 0xf4, 0x42, 0x7a, 0xf2, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd8, + 0x4d, 0x70, 0x3f, 0x03, 0xef, 0x63, 0x70, 0x68, 0x8e, 0x08, 0x36, 0x3c, + 0x65, 0x6e, 0x23, 0x51, 0xc0, 0xfa, 0x0f, 0xe1, 0xed, 0xc1, 0x8c, 0xb8, + 0x20, 0xc4, 0x91, 0x95, 0xb8, 0xe2, 0x37, 0xcd, 0x57, 0xd5, 0x69, 0xd3, + 0x65, 0x4a, 0x54, 0xfb, 0x0e, 0x57, 0x9c, 0x30, 0x76, 0xe3, 0x4b, 0x6a, + 0x6a, 0x25, 0x9c, 0x18, 0x96, 0xcc, 0xcf, 0x10, 0x8b, 0xe5, 0xd3, 0xf3, + 0xa3, 0x12, 0xb9, 0xf0, 0x26, 0x1e, 0x1f, 0x8e, 0x45, 0xe3, 0x84, 0xe0, + 0xf9, 0xd9, 0x88, 0x01, 0x85, 0x40, 0x02, 0x6b, 0x37, 0xc4, 0xf8, 0xc4, + 0x17, 0x77, 0x81, 0x2e, 0x75, 0x4a, 0x28, 0xe3, 0x79, 0x8b, 0xb4, 0x9a, + 0x89, 0x84, 0xa4, 0xb1, 0xc8, 0xee, 0x85, 0x32, 0x52, 0xfd, 0x72, 0x49, + 0x4b, 0x48, 0x95, 0x72, 0x3a, 0x99, 0x1d, 0xd9, 0xca, 0x89, 0x9e, 0xc9, + 0x47, 0x46, 0x46, 0xaa, 0x36, 0xaa, 0xfa, 0x26, 0xd6, 0x9f, 0x6b, 0x16, + 0x42, 0xdb, 0xde, 0x55, 0xc8, 0xf2, 0x16, 0xae, 0x92, 0xf4, 0x42, 0xec, + 0xea, 0x6c, 0xad, 0x75, 0xba, 0x37, 0x4b, 0xa3, 0xb6, 0xa8, 0xcb, 0x7a, + 0x22, 0x6e, 0x7a, 0x38, 0xa2, 0x92, 0xa2, 0x8a, 0xc9, 0x38, 0xc1, 0x68, + 0x71, 0x85, 0x84, 0x41, 0x00, 0xac, 0x1d, 0x19, 0x1c, 0x98, 0xb3, 0x98, + 0x11, 0x40, 0xc8, 0x98, 0x12, 0x82, 0x40, 0x18, 0x6b, 0x7c, 0x77, 0x9c, + 0x9e, 0x67, 0x21, 0x18, 0x38, 0x61, 0x9e, 0x98, 0x18, 0x01, 0x8c, 0x18, + 0x4b, 0x01, 0x89, 0x98, 0x0b, 0x00, 0x33, 0x98, 0x20, 0x01, 0x52, 0x18, + 0x15, 0x20, 0x19, 0x98, 0x09, 0x40, 0x17, 0x18, 0x02, 0xe0, 0x3a, 0x98, + 0xb1, 0xa2, 0xdc, 0x98, 0x07, 0xc0, 0x19, 0x98, 0x04, 0xa0, 0x0a, 0x00, + 0xb2, 0xcf, 0x1c, 0xc5, 0x93, 0x01, 0x38, 0xce, 0xdc, 0x99, 0xfa, 0x94, + 0x3f, 0x35, 0x18, 0xa3, 0xef, 0x39, 0x0e, 0xb0, 0xd6, 0x87, 0x15, 0x52, + 0xfb, 0x91, 0xc6, 0x97, 0x4f, 0x0a, 0x69, 0xac, 0x86, 0x49, 0x16, 0x92, + 0x3c, 0x4d, 0x61, 0xe4, 0x9a, 0xa2, 0x84, 0xbb, 0x4c, 0x06, 0xfc, 0x8e, + 0x61, 0xfc, 0x73, 0x9d, 0x66, 0x51, 0x34, 0xe1, 0xd2, 0x66, 0x63, 0x22, + 0x91, 0x87, 0xb3, 0x39, 0xe6, 0xf1, 0x5a, 0xfd, 0x95, 0x77, 0x15, 0xa1, + 0x6d, 0x59, 0x11, 0x4b, 0x2b, 0xb4, 0xf3, 0xe6, 0x57, 0x35, 0x42, 0xc9, + 0xce, 0x80, 0x46, 0x13, 0xe5, 0x02, 0x79, 0x3c, 0x8f, 0x67, 0x50, 0xb3, + 0x3d, 0x5a, 0x62, 0x80, 0xaa, 0x4b, 0xdd, 0x5e, 0xb0, 0xd6, 0xa0, 0x58, + 0x85, 0x11, 0x9d, 0xc2, 0x22, 0xa9, 0xca, 0x47, 0xe8, 0x27, 0xe8, 0x86, + 0x25, 0xf6, 0x03, 0xd9, 0x44, 0xaf, 0x7f, 0x66, 0x53, 0x29, 0x86, 0x02, + 0x18, 0x9c, 0x69, 0x48, 0x4a, 0xc1, 0x31, 0xd4, 0xe4, 0xe6, 0x8b, 0x50, + 0xbc, 0x57, 0x23, 0x94, 0x48, 0xf4, 0x99, 0xca, 0xd6, 0xe2, 0xde, 0xd6, + 0xfd, 0x12, 0xa6, 0x4a, 0xb2, 0xa7, 0x2f, 0x09, 0xe3, 0x81, 0xfd, 0xa7, + 0x35, 0x94, 0x6a, 0x4e, 0x03, 0x0b, 0xd3, 0xff, 0xa5, 0x57, 0x68, 0x62, + 0x15, 0x2b, 0x8a, 0xae, 0x23, 0xe9, 0x1c, 0x96, 0x15, 0x31, 0x15, 0x51, + 0x6c, 0xfd, 0xf3, 0x94, 0xf2, 0x25, 0x55, 0x0a, 0x18, 0xa7, 0xa3, 0x61, + 0xca, 0x80, 0x52, 0xa0, 0x10, 0xc5, 0xb2, 0x4e, 0x8a, 0x27, 0x90, 0xae, + 0x2e, 0x0a, 0x95, 0x43, 0x33, 0x08, 0xc0, 0x86, 0x6d, 0xf3, 0xd5, 0x57, + 0x6e, 0xd3, 0x3d, 0x8a, 0xf1, 0xee, 0x90, 0x8a, 0xea, 0xa2, 0x09, 0xff, + 0xec, 0xbf, 0xfd, 0xef, 0xf0, 0x88, 0xd1, 0x2b, 0xe8, 0x46, 0x59, 0x75, + 0x5c, 0xa7, 0x55, 0x8d, 0x33, 0xca, 0xdd, 0x8a, 0x89, 0xd9, 0x26, 0x4f, + 0xd1, 0xab, 0x45, 0xbe, 0xb5, 0xd7, 0xb3, 0xa3, 0xd9, 0xea, 0x8f, 0x77, + 0xbb, 0x3c, 0xcc, 0xac, 0x47, 0x4e, 0x95, 0xbb, 0x7c, 0xf5, 0x4b, 0xea, + 0xcd, 0x3a, 0x59, 0x32, 0xa1, 0xbd, 0xca, 0xee, 0xd9, 0x59, 0x95, 0x46, + 0xa8, 0xaa, 0x29, 0x48, 0x44, 0x0f, 0x91, 0x82, 0x0e, 0x2a, 0x2c, 0xc0, + 0xc1, 0xe1, 0x01, 0x02, 0x0b, 0x07, 0x5a, 0x30, 0x59, 0x30, 0x55, 0x81, + 0xd3, 0x30, 0x55, 0xc4, 0x9a, 0x30, 0xef, 0xb9, 0x7f, 0x36, 0x42, 0x0d, + 0xde, 0x30, 0x99, 0x83, 0x05, 0x30, 0x55, 0xc1, 0x86, 0x31, 0x9e, 0x41, + 0x59, 0x30, 0x26, 0xc1, 0x1c, 0x30, 0x9e, 0x82, 0x55, 0x03, 0x02, 0x06, + 0x60, 0x0e, 0x00, 0x92, 0x60, 0x2f, 0x80, 0xbc, 0x63, 0x81, 0x05, 0x90, + 0x60, 0xa8, 0x80, 0x50, 0x60, 0x27, 0x00, 0x1a, 0x12, 0x76, 0x6b, 0x01, + 0xb1, 0x04, 0xfa, 0x83, 0x97, 0xeb, 0x24, 0x47, 0x2a, 0x2a, 0x36, 0x66, + 0xca, 0xa5, 0xef, 0xf4, 0xb1, 0xfe, 0x78, 0x9c, 0xc7, 0xee, 0x2e, 0xce, + 0xa0, 0xc7, 0x59, 0x9d, 0x43, 0xd5, 0x9a, 0xc3, 0x85, 0x6d, 0xb0, 0x5b, + 0x8f, 0x58, 0x76, 0x6a, 0x3b, 0x2f, 0xd4, 0x2d, 0xdb, 0x93, 0xcb, 0x1e, + 0x78, 0x3a, 0x2b, 0x7d, 0xf8, 0x65, 0x53, 0x8b, 0x84, 0x61, 0x76, 0x39, + 0x68, 0xd1, 0x1e, 0x76, 0x48, 0x68, 0x42, 0xae, 0x01, 0x41, 0x48, 0xcf, + 0x11, 0xcd, 0x09, 0xe5, 0x32, 0x9d, 0x75, 0x84, 0xfa, 0x49, 0xc9, 0x40, + 0xc1, 0x85, 0x72, 0x12, 0xc5, 0x22, 0x30, 0xd1, 0x68, 0x62, 0x61, 0x39, + 0x0c, 0x2b, 0x30, 0xa7, 0xfb, 0xf6, 0x65, 0x6a, 0xa1, 0x26, 0xb9, 0x66, + 0x70, 0x54, 0x60, 0xc3, 0x5c, 0x1c, 0x8d, 0x67, 0x6b, 0x09, 0x74, 0x9c, + 0xb6, 0x9f, 0xd3, 0x28, 0x5a, 0x97, 0x95, 0x0a, 0x19, 0x98, 0x0b, 0x28, + 0x8a, 0x79, 0x57, 0x29, 0x86, 0xff, 0xfb, 0xd4, 0x60, 0x64, 0x0f, 0xf9, + 0x50, 0x74, 0xbe, 0x83, 0xf8, 0x7b, 0x70, 0x63, 0x8e, 0x08, 0x35, 0x3c, + 0x65, 0x6e, 0x25, 0x71, 0xd2, 0xfa, 0x0f, 0xe3, 0x0d, 0xc1, 0x4a, 0x38, + 0x21, 0x00, 0xa0, 0x95, 0xb8, 0x67, 0xcb, 0x6a, 0x77, 0xaf, 0xd5, 0x8a, + 0xe7, 0xab, 0x49, 0x54, 0x35, 0x0c, 0x5d, 0xa9, 0x20, 0xaa, 0xd9, 0x91, + 0x10, 0x1e, 0xaa, 0x58, 0xa2, 0xc2, 0x5d, 0xec, 0xef, 0x66, 0x6e, 0x65, + 0x2e, 0x48, 0xb6, 0x75, 0x4a, 0x99, 0x5c, 0xe4, 0x87, 0xb7, 0xba, 0x83, + 0x3b, 0xa8, 0xe9, 0x34, 0x2d, 0x48, 0xf6, 0xc9, 0x87, 0x37, 0xcc, 0x46, + 0xfb, 0x82, 0xed, 0x99, 0x5f, 0x11, 0x09, 0x82, 0xa9, 0x3f, 0x9c, 0xe1, + 0x9a, 0x4a, 0x91, 0xf4, 0x8c, 0x2e, 0xc7, 0x20, 0xf8, 0x99, 0x2a, 0x5b, + 0x9b, 0xcb, 0x81, 0x3a, 0x24, 0x47, 0xd9, 0xfe, 0x81, 0x20, 0xa1, 0xd0, + 0x89, 0x10, 0x80, 0xe5, 0x10, 0x90, 0xb6, 0x00, 0x35, 0x00, 0x6e, 0xc5, + 0xce, 0xe9, 0x4d, 0xe6, 0xb1, 0xb1, 0x9a, 0xe2, 0x86, 0x52, 0x1c, 0x7d, + 0x60, 0x7c, 0x8a, 0x62, 0xe0, 0x4b, 0xbf, 0x9c, 0xcf, 0xa6, 0x9f, 0xab, + 0x9d, 0x9f, 0xfa, 0x6c, 0xcc, 0xc6, 0x63, 0x5d, 0x9e, 0x86, 0x4c, 0x95, + 0xea, 0x9d, 0x76, 0x76, 0x5b, 0xb6, 0xae, 0x96, 0x7c, 0x84, 0xd5, 0xed, + 0xde, 0xb5, 0xa5, 0x5a, 0x93, 0x27, 0x4b, 0xd3, 0x7d, 0x53, 0xa5, 0x6e, + 0x57, 0x72, 0x23, 0xae, 0xe6, 0x7e, 0x96, 0xcc, 0x45, 0x46, 0x3b, 0xcf, + 0x75, 0x6b, 0x8e, 0x7c, 0x93, 0xab, 0x11, 0xc5, 0x05, 0x5c, 0x6b, 0x8a, + 0x87, 0x44, 0x4c, 0xe3, 0x40, 0x48, 0x91, 0x5c, 0x3e, 0x51, 0x63, 0x06, + 0x00, 0x18, 0x53, 0x08, 0xf4, 0x36, 0x43, 0x1c, 0xda, 0xb0, 0xf3, 0xee, + 0xc0, 0x94, 0x43, 0x11, 0xb8, 0x1d, 0x53, 0x06, 0x14, 0x1c, 0xf3, 0x06, + 0x48, 0x30, 0x43, 0x03, 0x14, 0x06, 0xd3, 0x10, 0x2c, 0x00, 0x43, 0x03, + 0x28, 0x07, 0x20, 0xc0, 0x1a, 0x8c, 0x09, 0xc0, 0x1d, 0x0c, 0x71, 0xf1, + 0x07, 0x8c, 0x1e, 0x00, 0x0c, 0x8c, 0x03, 0x90, 0x00, 0xce, 0xca, 0x46, + 0xb5, 0x9a, 0x38, 0x8c, 0x9e, 0x46, 0x8b, 0xa8, 0xd5, 0x85, 0xdb, 0x44, + 0xb2, 0xb0, 0x96, 0xc8, 0xad, 0xca, 0x5d, 0xd6, 0x9c, 0xbc, 0x1e, 0x46, + 0xbf, 0x10, 0x71, 0x98, 0x74, 0x30, 0xfa, 0x44, 0x21, 0x86, 0x47, 0x29, + 0xc2, 0xd4, 0xcb, 0x93, 0x1b, 0x78, 0xa8, 0x19, 0x7b, 0x4c, 0x81, 0xe1, + 0x2b, 0xfd, 0xb8, 0xca, 0xe0, 0x68, 0x93, 0x3b, 0x6c, 0xce, 0xf5, 0x04, + 0x6e, 0x82, 0xe4, 0x33, 0x29, 0x8a, 0x35, 0x17, 0x7a, 0xc4, 0x66, 0x18, + 0xe6, 0x78, 0xd8, 0x9b, 0x76, 0xa5, 0x51, 0x6c, 0x24, 0x71, 0xf9, 0xd9, + 0x75, 0x05, 0xbb, 0xd0, 0x44, 0x52, 0x51, 0x72, 0x11, 0x56, 0x1a, 0x98, + 0x7e, 0x5a, 0xcc, 0x6d, 0xbe, 0x9e, 0x98, 0xa1, 0xe4, 0xb6, 0x5f, 0x28, + 0x80, 0x1f, 0x7a, 0x59, 0x73, 0xc7, 0x17, 0xa1, 0x97, 0xc3, 0xd1, 0x18, + 0x6a, 0x9e, 0x41, 0x2c, 0x88, 0x46, 0xa1, 0xa7, 0xe2, 0x00, 0x87, 0x9e, + 0xba, 0x79, 0x1b, 0xfb, 0x45, 0x1b, 0x9a, 0x97, 0xcb, 0xaf, 0xc8, 0x64, + 0x2d, 0x36, 0x13, 0xda, 0xd8, 0x48, 0xa5, 0x99, 0xba, 0x91, 0xb9, 0x5d, + 0xaa, 0x92, 0x5c, 0x65, 0xed, 0xca, 0x65, 0xec, 0xb3, 0x13, 0x9a, 0x81, + 0x28, 0x79, 0x28, 0xb5, 0x15, 0xa4, 0xd4, 0x7a, 0xcc, 0x8a, 0x8b, 0x1c, + 0x68, 0x63, 0x50, 0xd6, 0xa6, 0x2a, 0x49, 0x6b, 0x76, 0x1f, 0x97, 0x4a, + 0xec, 0xea, 0x4f, 0x06, 0xf6, 0xf4, 0x92, 0x09, 0xa4, 0xce, 0xec, 0xb6, + 0x3b, 0x11, 0x84, 0x51, 0xc8, 0xdc, 0x9a, 0xf0, 0xbc, 0xe5, 0xad, 0xcd, + 0xe3, 0x7e, 0xe1, 0x2c, 0xae, 0x45, 0xc8, 0x1d, 0xfd, 0x6b, 0x72, 0xe4, + 0xbe, 0x5e, 0x6a, 0xda, 0x95, 0x48, 0x96, 0x83, 0xe5, 0x62, 0x0e, 0x32, + 0xa1, 0x57, 0x31, 0xb3, 0x1c, 0xdc, 0x7f, 0xc2, 0x40, 0x40, 0x62, 0x3b, + 0x8d, 0x98, 0xea, 0x79, 0xcc, 0x93, 0x3c, 0xc1, 0x84, 0xfe, 0xae, 0x88, + 0xb3, 0x51, 0xe8, 0x79, 0xeb, 0x4f, 0xec, 0x94, 0xab, 0x3f, 0x6d, 0xb4, + 0xd0, 0xaa, 0xe4, 0xdf, 0xdc, 0xbe, 0xfb, 0x22, 0x75, 0xbf, 0xef, 0x4e, + 0xe4, 0x59, 0xd3, 0x7a, 0xd9, 0xdd, 0x88, 0x97, 0xd7, 0x4d, 0x94, 0xbb, + 0xf3, 0x32, 0x1b, 0x4e, 0xf7, 0x57, 0x39, 0x5d, 0x08, 0x2e, 0xc0, 0x51, + 0xa2, 0xc6, 0x55, 0x60, 0x10, 0x5c, 0xa7, 0x61, 0x55, 0x30, 0x41, 0x00, + 0xa1, 0x30, 0x80, 0x40, 0xfe, 0x31, 0xc2, 0x8d, 0xd7, 0x3f, 0x3d, 0x00, + 0xe3, 0x31, 0x03, 0x00, 0x01, 0x30, 0x49, 0xc0, 0x96, 0x31, 0xab, 0x80, + 0x97, 0x30, 0x17, 0x00, 0x4d, 0x30, 0xe5, 0x81, 0x96, 0x30, 0x00, 0x40, + 0x45, 0x30, 0x0a, 0x80, 0x28, 0x30, 0x05, 0x40, 0x7f, 0x31, 0x27, 0x06, + 0x8f, 0x30, 0x2b, 0xc0, 0x65, 0x30, 0x06, 0x80, 0x06, 0x10, 0xc5, 0xae, + 0x17, 0x5d, 0xdf, 0x69, 0x11, 0xb6, 0x53, 0x62, 0xfb, 0x03, 0x9b, 0x76, + 0x56, 0x1a, 0xc3, 0xbd, 0x05, 0xb7, 0x76, 0x08, 0xfc, 0x40, 0xaf, 0x43, + 0xb0, 0xe2, 0xb9, 0x70, 0x2c, 0x42, 0x89, 0xf1, 0x71, 0xe8, 0x23, 0x2d, + 0xda, 0x91, 0xb3, 0xc9, 0xe1, 0xd7, 0xc2, 0x59, 0x28, 0xb4, 0xdc, 0x61, + 0x2e, 0xdc, 0x9d, 0xfd, 0x7f, 0x5f, 0x9a, 0x79, 0x7b, 0x44, 0x4a, 0x28, + 0xde, 0x9d, 0x69, 0xa5, 0xb4, 0x7a, 0x1c, 0xd0, 0xa8, 0x51, 0xb1, 0xab, + 0x70, 0xf5, 0x38, 0xd0, 0xcd, 0x58, 0x96, 0x4a, 0x2e, 0x17, 0x4a, 0x48, + 0xa9, 0xb2, 0xf2, 0xe2, 0x98, 0xff, 0xfb, 0xd4, 0x60, 0x4c, 0x09, 0x88, + 0x95, 0x70, 0x3f, 0x03, 0xf8, 0x7b, 0x70, 0x48, 0x64, 0xe8, 0x7a, 0x34, + 0x23, 0x4a, 0x25, 0x41, 0xd0, 0xfc, 0xaf, 0xe3, 0x0d, 0xc0, 0xfd, 0x8c, + 0xa2, 0xb4, 0xa0, 0x8c, 0xe0, 0x42, 0x98, 0x15, 0x91, 0x9a, 0xd7, 0xb4, + 0xca, 0xb2, 0xa4, 0x7f, 0x46, 0xd5, 0xcb, 0x9b, 0x33, 0xc7, 0xcb, 0xa4, + 0xab, 0x0e, 0x1a, 0x55, 0xed, 0x8b, 0xa4, 0x75, 0x1e, 0x23, 0x99, 0xde, + 0x37, 0x32, 0x27, 0xe3, 0x33, 0xaf, 0x36, 0x28, 0x58, 0x6f, 0x95, 0xdb, + 0xf5, 0x52, 0x2d, 0x44, 0xb9, 0x58, 0x74, 0xc6, 0xb1, 0x1e, 0x1a, 0xbe, + 0xb0, 0xdb, 0x20, 0xe1, 0x5f, 0xa8, 0xfa, 0x55, 0x3d, 0x69, 0xb3, 0x3f, + 0x48, 0xca, 0xdc, 0xf9, 0x35, 0xa7, 0xd1, 0x1e, 0xb4, 0x61, 0x3a, 0x74, + 0x69, 0x6d, 0x09, 0x63, 0xd3, 0xb9, 0x14, 0xcc, 0x0a, 0xc8, 0xae, 0x34, + 0x4f, 0x3d, 0x50, 0xb1, 0x26, 0x9d, 0x31, 0x31, 0xa7, 0x36, 0xca, 0xd2, + 0x78, 0xb8, 0xaa, 0x57, 0x33, 0xa9, 0xa4, 0x57, 0x37, 0xa2, 0x58, 0x04, + 0xdf, 0x48, 0xe5, 0x07, 0x73, 0x34, 0xcb, 0x08, 0x00, 0x03, 0x4d, 0x39, + 0x11, 0x00, 0x01, 0xc3, 0xeb, 0x52, 0xb3, 0x59, 0xe6, 0x66, 0x4c, 0xb0, + 0x5c, 0x94, 0xe2, 0x9a, 0x4b, 0x97, 0x39, 0xee, 0x56, 0x91, 0xf1, 0x72, + 0x35, 0x29, 0xb0, 0xc3, 0x80, 0x3a, 0x62, 0x2d, 0x40, 0xac, 0xa0, 0x98, + 0xa1, 0x6a, 0xc9, 0x84, 0x54, 0xd5, 0xb4, 0xa6, 0xbb, 0x17, 0xff, 0xeb, + 0xff, 0xd3, 0xa3, 0xff, 0x5e, 0x0e, 0x2c, 0x44, 0x25, 0x0e, 0x9c, 0x11, + 0x8f, 0x28, 0x0e, 0x04, 0x05, 0x4a, 0x83, 0x88, 0x0c, 0xcc, 0x07, 0x20, + 0x13, 0x0c, 0x18, 0x30, 0x59, 0x4c, 0x5a, 0x85, 0x00, 0x0f, 0x4c, 0x01, + 0xa7, 0xcc, 0x34, 0x80, 0x48, 0x8c, 0x15, 0x10, 0x7d, 0x8c, 0x2b, 0xb0, + 0xc4, 0x4c, 0x08, 0x10, 0x24, 0x8c, 0x27, 0x30, 0xa8, 0x4c, 0x01, 0x60, + 0x0c, 0x0c, 0x02, 0x70, 0x12, 0xcc, 0x03, 0x30, 0x44, 0x8c, 0x10, 0x91, + 0xc9, 0x0c, 0x03, 0x00, 0x20, 0x87, 0x40, 0x0d, 0x11, 0xb1, 0x9e, 0xb8, + 0x8d, 0x25, 0xf5, 0x88, 0xa4, 0x45, 0xf8, 0x2e, 0x40, 0xf7, 0xc6, 0x65, + 0x6b, 0x79, 0xc5, 0x54, 0xae, 0x1a, 0x87, 0xb4, 0xd7, 0xfe, 0x12, 0xfd, + 0x47, 0x24, 0x4f, 0x4a, 0xb3, 0x4a, 0x31, 0x77, 0x63, 0x91, 0x99, 0x43, + 0xfc, 0xe5, 0xee, 0xf4, 0xaa, 0xb3, 0x86, 0xd4, 0xe1, 0x36, 0x1f, 0x78, + 0x2d, 0xdd, 0x81, 0xa2, 0x6c, 0xf5, 0xc7, 0x75, 0x55, 0x2b, 0x27, 0x9b, + 0x7f, 0x5f, 0x88, 0xfc, 0x05, 0x19, 0x7d, 0x6e, 0xb5, 0x97, 0xea, 0xac, + 0x3e, 0xfe, 0x4a, 0x67, 0xea, 0xbe, 0xd0, 0xec, 0xb6, 0x3f, 0x5a, 0x0f, + 0xce, 0xac, 0x4e, 0x72, 0x86, 0x6a, 0x19, 0xa1, 0x9e, 0x95, 0xc7, 0x21, + 0xc8, 0x9b, 0xfd, 0x2d, 0x98, 0x97, 0x55, 0x95, 0xc5, 0x60, 0x38, 0xa4, + 0x43, 0xb5, 0xe0, 0xd9, 0x65, 0xb8, 0x43, 0xf1, 0x19, 0x97, 0xcb, 0xe9, + 0xe2, 0x70, 0x35, 0x98, 0xb5, 0xa8, 0xb5, 0x2c, 0xcc, 0x3b, 0x13, 0xb3, + 0x76, 0x33, 0x7e, 0x09, 0x8a, 0xc3, 0xd4, 0xb3, 0x95, 0xae, 0x42, 0x71, + 0xa4, 0x81, 0xa9, 0xb2, 0x9c, 0x94, 0x4b, 0xb7, 0x43, 0x28, 0xa7, 0x89, + 0xc0, 0xf2, 0x6b, 0x33, 0x74, 0xf4, 0x52, 0x9c, 0xf5, 0x6a, 0x51, 0x3d, + 0x1b, 0xb5, 0x2f, 0x80, 0x28, 0xa6, 0x2e, 0x43, 0x92, 0xac, 0x21, 0x9a, + 0x38, 0xd5, 0x5e, 0xc6, 0x25, 0xf4, 0xf7, 0xea, 0x5d, 0x90, 0xd8, 0xf9, + 0x55, 0x7b, 0x93, 0xd8, 0x4a, 0xa6, 0x69, 0xe6, 0x2c, 0xcb, 0x63, 0x50, + 0x43, 0x93, 0x2c, 0xa3, 0x88, 0x4f, 0x50, 0xe7, 0x13, 0x82, 0xea, 0x37, + 0x1b, 0xae, 0xf3, 0x0a, 0xb5, 0x82, 0x99, 0xa5, 0x5a, 0x5c, 0xca, 0x57, + 0xcb, 0xac, 0xdd, 0xa4, 0x63, 0xa3, 0x09, 0xa9, 0x2e, 0xb2, 0x32, 0x00, + 0x1d, 0xf3, 0x1e, 0x7f, 0xc5, 0x23, 0x32, 0xf3, 0x9a, 0x56, 0x73, 0x22, + 0x9d, 0x14, 0x83, 0x31, 0x2a, 0x84, 0x75, 0x09, 0x03, 0x95, 0x11, 0x9c, + 0x0c, 0x06, 0x0f, 0x09, 0x4b, 0xcf, 0x1d, 0x63, 0x09, 0x9f, 0x9a, 0x12, + 0x0f, 0x15, 0x0a, 0xb8, 0x6d, 0x83, 0xd2, 0x3d, 0x33, 0x17, 0xff, 0xed, + 0xff, 0xff, 0xff, 0xff, 0x5d, 0xb6, 0x38, 0xea, 0x71, 0xea, 0x30, 0x12, + 0xc1, 0x0e, 0x30, 0x2d, 0x42, 0xc9, 0x30, 0xd6, 0xa6, 0x92, 0x39, 0x5a, + 0x8a, 0x67, 0x30, 0x7b, 0x82, 0x52, 0x30, 0x5c, 0xc2, 0xa5, 0x31, 0xab, + 0x42, 0xbe, 0x30, 0x5a, 0xc1, 0x9b, 0x30, 0x58, 0xc3, 0xc0, 0x1a, 0x00, + 0x9c, 0xc0, 0x27, 0x00, 0xa0, 0xc0, 0x8e, 0x02, 0xcc, 0xc4, 0x0d, 0x1d, + 0x24, 0xc1, 0x00, 0x01, 0xd4, 0xc0, 0x2d, 0x00, 0x78, 0x20, 0xa5, 0xba, + 0xb7, 0x7e, 0x5f, 0x12, 0x83, 0x5e, 0x78, 0xa3, 0x39, 0x62, 0xb1, 0x35, + 0x31, 0x7a, 0x1b, 0x3b, 0xf3, 0x20, 0x8d, 0xc7, 0x21, 0x2b, 0xe1, 0xf7, + 0xbe, 0xca, 0xa1, 0x88, 0x06, 0x79, 0xb1, 0x4a, 0xe9, 0x23, 0xed, 0x8e, + 0x00, 0x7c, 0x63, 0x53, 0x6e, 0x8b, 0xb7, 0x24, 0x95, 0xca, 0xdd, 0xe6, + 0xb3, 0x3e, 0xde, 0x57, 0x62, 0x72, 0x87, 0xed, 0x90, 0xb0, 0xad, 0x1a, + 0x0d, 0xe7, 0x42, 0x91, 0x32, 0xb0, 0xa1, 0x45, 0xb5, 0x2e, 0x0c, 0xa4, + 0x3d, 0x89, 0x4a, 0xa9, 0x54, 0xa2, 0x99, 0xdd, 0x2d, 0x39, 0x9f, 0xab, + 0xa6, 0x22, 0xf6, 0xbe, 0xc6, 0x9f, 0x32, 0x68, 0xf1, 0xfa, 0x9d, 0x46, + 0xfd, 0x8a, 0x11, 0xbd, 0x0d, 0x32, 0xb9, 0x8e, 0xa0, 0x2f, 0x91, 0x8c, + 0xc5, 0x3b, 0x52, 0xbd, 0xc1, 0xff, 0xfb, 0xd4, 0x60, 0x57, 0x8c, 0x99, + 0x2c, 0x75, 0x3e, 0x83, 0xf8, 0x7b, 0x70, 0x52, 0x0e, 0x08, 0x52, 0x3c, + 0x42, 0x6e, 0x25, 0x6d, 0xd0, 0xfa, 0x4f, 0xe1, 0xed, 0xc1, 0x5b, 0xb8, + 0x21, 0x64, 0xf1, 0x95, 0xb8, 0xb6, 0x1b, 0xe6, 0x16, 0x02, 0xcb, 0x50, + 0xe3, 0x96, 0x89, 0x96, 0x13, 0xbe, 0x2a, 0xe9, 0xc9, 0xf3, 0x6a, 0xda, + 0x31, 0x8f, 0x28, 0x64, 0xaa, 0xa8, 0xab, 0x2b, 0x30, 0x5a, 0x14, 0x47, + 0x32, 0xa0, 0xe9, 0x32, 0x54, 0xcb, 0x6c, 0xb0, 0x50, 0xc6, 0x86, 0x39, + 0x0e, 0xa4, 0x82, 0x3e, 0xc9, 0xec, 0xb8, 0xd5, 0x70, 0x9d, 0x5b, 0x66, + 0x76, 0xcc, 0xb9, 0x72, 0x45, 0x43, 0x64, 0xde, 0x30, 0x89, 0x54, 0x3f, + 0x85, 0x95, 0x5b, 0x72, 0xea, 0x90, 0xaa, 0xf1, 0x76, 0xe4, 0x6e, 0x21, + 0xba, 0x8a, 0xa8, 0xd3, 0x2e, 0x62, 0x69, 0x44, 0x7a, 0xa9, 0xda, 0x91, + 0x8a, 0x19, 0xce, 0x63, 0xc2, 0xac, 0x2c, 0x49, 0x33, 0xb8, 0xf4, 0x86, + 0x5f, 0xde, 0x11, 0x46, 0xc1, 0x09, 0x23, 0x62, 0x6c, 0x3f, 0x88, 0x1a, + 0xa1, 0x38, 0x08, 0xea, 0xc5, 0x00, 0x14, 0x16, 0xf9, 0x8f, 0x2e, 0x33, + 0x26, 0x71, 0xaa, 0xc2, 0xd2, 0x36, 0xdd, 0xd9, 0x56, 0xcc, 0xc6, 0x94, + 0xee, 0xc5, 0x62, 0xba, 0x21, 0xd8, 0xc8, 0xa8, 0xd2, 0x03, 0xf4, 0xfd, + 0x93, 0x46, 0x6b, 0x6a, 0xd6, 0x46, 0x4b, 0x3d, 0xaa, 0x7d, 0xb7, 0xad, + 0xaf, 0xb7, 0xfb, 0xfd, 0x7f, 0xaa, 0xeb, 0x6f, 0xb9, 0x0b, 0xf7, 0x76, + 0x4b, 0xaf, 0x9b, 0xff, 0x4d, 0xbf, 0x66, 0xd3, 0xfe, 0xef, 0xa9, 0x01, + 0xca, 0x54, 0x7a, 0x07, 0x01, 0x77, 0x9d, 0x88, 0x40, 0x81, 0xac, 0x04, + 0x58, 0x61, 0x61, 0x00, 0x30, 0x32, 0x41, 0x32, 0x30, 0x26, 0x82, 0xe9, + 0x30, 0x6d, 0xe9, 0x9e, 0x30, 0x75, 0x4a, 0x01, 0x30, 0x45, 0x42, 0x26, + 0x30, 0x44, 0x02, 0xd5, 0x31, 0x9d, 0x02, 0xea, 0x30, 0x54, 0x01, 0x99, + 0x30, 0x4c, 0x81, 0xa1, 0x30, 0x1a, 0xc0, 0x1a, 0x12, 0x00, 0xf4, 0xc0, + 0x31, 0x02, 0x68, 0xc5, 0xfa, 0x0a, 0xd0, 0xc1, 0xe9, 0x00, 0x44, 0x14, + 0x03, 0xc8, 0x0f, 0xcb, 0x71, 0x89, 0xbc, 0x52, 0xb7, 0x0d, 0x84, 0xbc, + 0xd3, 0x90, 0x33, 0xae, 0xd9, 0xde, 0x78, 0x8b, 0xb2, 0xca, 0x94, 0x12, + 0x0e, 0x86, 0x9f, 0x95, 0x8a, 0xa1, 0x89, 0xbb, 0x18, 0x52, 0xf4, 0xde, + 0x96, 0xb6, 0xec, 0x32, 0x3c, 0xf0, 0xcb, 0x95, 0x33, 0xb3, 0x30, 0xa8, + 0x2c, 0xba, 0x4e, 0xa3, 0x05, 0x69, 0xec, 0x19, 0x55, 0x9e, 0x47, 0x36, + 0x10, 0xa1, 0xf2, 0xe7, 0xbd, 0x4e, 0xda, 0x78, 0xa1, 0x2f, 0x0b, 0xba, + 0x90, 0xfe, 0xc4, 0x59, 0xf2, 0xbb, 0x5f, 0x27, 0x27, 0xb3, 0x50, 0xff, + 0x84, 0x4c, 0x1b, 0x53, 0xea, 0x17, 0x23, 0x90, 0xb6, 0x97, 0x64, 0xeb, + 0x39, 0x88, 0x48, 0xd6, 0x16, 0x18, 0x93, 0xc7, 0x95, 0x1f, 0xb3, 0x42, + 0x70, 0x52, 0xc5, 0x82, 0xbe, 0xca, 0xed, 0x3c, 0xc6, 0x65, 0x21, 0xb8, + 0x86, 0xd2, 0xaf, 0x68, 0x51, 0x2a, 0xf4, 0xac, 0x5d, 0x28, 0x57, 0xe1, + 0x9e, 0x2f, 0x0e, 0x67, 0x8c, 0x09, 0xc6, 0x17, 0x15, 0x0a, 0x5f, 0x6c, + 0x2f, 0xce, 0xd8, 0xab, 0x4f, 0xb4, 0x88, 0x66, 0x3a, 0x93, 0xb0, 0xa3, + 0xa5, 0xe6, 0x2e, 0x2c, 0x0f, 0x4e, 0x35, 0x4c, 0x48, 0xc8, 0x4b, 0x02, + 0x93, 0x56, 0x2f, 0xca, 0x37, 0xca, 0x96, 0xa8, 0x26, 0x93, 0x2a, 0x9d, + 0x61, 0xbd, 0x6b, 0x4a, 0xa4, 0x44, 0xec, 0x2e, 0x6c, 0x0b, 0x31, 0xda, + 0xde, 0xb3, 0xb2, 0x4b, 0x09, 0x69, 0x85, 0xb1, 0xb4, 0xfe, 0x4c, 0x37, + 0x5e, 0x11, 0xfc, 0x8e, 0x9e, 0x1b, 0xf7, 0x4c, 0xa5, 0xed, 0x40, 0x5f, + 0x13, 0x65, 0xeb, 0xab, 0x05, 0xb1, 0x48, 0x7c, 0x1d, 0x48, 0x6a, 0x80, + 0x98, 0xb5, 0x27, 0x11, 0xa3, 0xc4, 0xbe, 0x08, 0x08, 0xec, 0x19, 0x21, + 0x6c, 0x09, 0x0b, 0xc1, 0x3b, 0xaf, 0x0e, 0x05, 0xef, 0x27, 0xdb, 0xdb, + 0x7c, 0x58, 0x8b, 0x77, 0x17, 0xdf, 0xd4, 0x99, 0x32, 0x99, 0x16, 0xb6, + 0xcb, 0xf6, 0x65, 0x3a, 0x59, 0x21, 0x19, 0x88, 0x3c, 0xa2, 0x55, 0x90, + 0x4d, 0xdc, 0xa4, 0x62, 0xcf, 0xf6, 0x75, 0x97, 0xa3, 0x22, 0xeb, 0xff, + 0xb2, 0xa3, 0x5b, 0xb7, 0xfa, 0x74, 0xba, 0x3f, 0xd7, 0xd7, 0xa7, 0x5f, + 0xaf, 0x9f, 0xdb, 0xf4, 0xd8, 0xaf, 0xa2, 0xa7, 0xb2, 0x6b, 0xd5, 0xb2, + 0xa9, 0x84, 0xdc, 0x10, 0x4d, 0xd8, 0xa2, 0xa2, 0x06, 0x0f, 0xb1, 0x07, + 0x32, 0x18, 0x48, 0x46, 0x30, 0x37, 0xc1, 0x00, 0x30, 0x4e, 0x02, 0x63, + 0x31, 0x1e, 0x63, 0x84, 0x37, 0x8e, 0xc5, 0x95, 0x30, 0xad, 0x41, 0x24, + 0x30, 0x4b, 0x82, 0x42, 0x30, 0xfd, 0x83, 0x5f, 0x30, 0x3b, 0x01, 0x0c, + 0x30, 0x2b, 0x81, 0x6c, 0x30, 0x26, 0xc0, 0x37, 0x75, 0x81, 0x00, 0x3a, + 0x18, 0xc2, 0x21, 0xe5, 0x18, 0x1d, 0x00, 0x49, 0x04, 0x01, 0x26, 0x19, + 0x45, 0x4e, 0xb0, 0x8b, 0x91, 0xff, 0x7f, 0x18, 0x74, 0x42, 0x59, 0x25, + 0x7b, 0x99, 0x03, 0x28, 0xd4, 0xb5, 0x3d, 0x20, 0x66, 0x95, 0x23, 0x7e, + 0x9d, 0x14, 0xe4, 0x4d, 0xb7, 0x3e, 0xba, 0xd7, 0x93, 0x45, 0xe2, 0x0f, + 0x83, 0x95, 0x22, 0x67, 0x9b, 0x9e, 0x80, 0xe3, 0x71, 0x86, 0xfe, 0x2e, + 0xf9, 0xc1, 0x10, 0x56, 0x51, 0xb5, 0xd9, 0xc7, 0xee, 0x88, 0xe7, 0x34, + 0x98, 0x10, 0xe4, 0xdb, 0x01, 0xf8, 0xd8, 0x83, 0x52, 0x9c, 0x6e, 0x8e, + 0xa4, 0x2e, 0x45, 0xf3, 0xa5, 0x4d, 0x73, 0xec, 0xf4, 0x4b, 0xb9, 0xe8, + 0xe9, 0x4a, 0x4c, 0x7f, 0xc0, 0xff, 0xfb, 0xd4, 0x60, 0x48, 0x89, 0x89, + 0x2e, 0x74, 0xbe, 0x83, 0xf8, 0x7b, 0x70, 0x54, 0x0d, 0xe8, 0x41, 0x30, + 0x25, 0x6e, 0x64, 0x05, 0xd2, 0xfc, 0xcf, 0xbd, 0xed, 0xc1, 0x00, 0x90, + 0xa2, 0xb4, 0x11, 0x0d, 0x28, 0x5c, 0x23, 0x1c, 0x62, 0x9c, 0x27, 0xeb, + 0x8b, 0x32, 0x41, 0x91, 0x52, 0x99, 0x87, 0x73, 0x8d, 0x0c, 0xa2, 0x14, + 0xb8, 0xa4, 0x15, 0x43, 0x0a, 0xbe, 0x02, 0xfa, 0x98, 0xe1, 0x55, 0xb1, + 0x29, 0x15, 0xa6, 0x54, 0x04, 0x36, 0xac, 0x6d, 0x79, 0x5d, 0xb2, 0x1f, + 0xcd, 0xd1, 0x9c, 0xcf, 0xe4, 0x35, 0x22, 0xf5, 0x99, 0x3e, 0xe9, 0x28, + 0x82, 0x54, 0xda, 0x77, 0x27, 0x15, 0xf7, 0xea, 0x56, 0x66, 0x68, 0x16, + 0x39, 0x0d, 0x75, 0xf5, 0x11, 0xde, 0xd6, 0x9f, 0x53, 0x35, 0x1d, 0x29, + 0x7d, 0xc8, 0xd8, 0xcd, 0x32, 0xb9, 0x9a, 0xac, 0x07, 0xba, 0xa9, 0x47, + 0x83, 0xf2, 0x1a, 0x75, 0x45, 0x15, 0x91, 0x3e, 0x87, 0xa5, 0xd5, 0x67, + 0x5b, 0xe8, 0x8a, 0x73, 0xa1, 0x96, 0xab, 0x89, 0x20, 0x4e, 0x9d, 0x52, + 0x9d, 0xeb, 0xea, 0xc5, 0x39, 0x4a, 0xa2, 0x2f, 0xc8, 0x52, 0x3d, 0x91, + 0x1e, 0x7e, 0x2e, 0x8e, 0x15, 0x62, 0x08, 0xb5, 0x27, 0xc2, 0x90, 0xaa, + 0x35, 0x03, 0x94, 0xeb, 0x08, 0x61, 0xde, 0x61, 0x82, 0x38, 0xb0, 0x0a, + 0x6f, 0x9a, 0xc6, 0x41, 0xae, 0x3d, 0xb7, 0xde, 0x96, 0xe5, 0x58, 0xca, + 0x2a, 0x78, 0x00, 0x90, 0x22, 0xea, 0x8f, 0xc4, 0xeb, 0xf5, 0x66, 0xfb, + 0x2b, 0xa5, 0xa4, 0x32, 0x2a, 0x51, 0x52, 0xcc, 0x6b, 0x65, 0x47, 0x7d, + 0x57, 0xe8, 0xf5, 0x25, 0x2c, 0xce, 0xbf, 0xfa, 0x6d, 0x6f, 0x6b, 0xfd, + 0xcd, 0x5b, 0x2d, 0xcf, 0x25, 0x7f, 0xd5, 0xfd, 0xee, 0x9d, 0x6a, 0x99, + 0xb7, 0x4a, 0xca, 0xea, 0xee, 0xc3, 0x54, 0xe7, 0x53, 0x22, 0x0a, 0x98, + 0x30, 0x8a, 0xc2, 0xa4, 0x51, 0x21, 0x4b, 0x18, 0x04, 0x68, 0x2b, 0x29, + 0x81, 0x56, 0x04, 0x41, 0x82, 0x58, 0x09, 0xe9, 0x87, 0x9a, 0x9d, 0x01, + 0xc6, 0x4e, 0x10, 0x29, 0x84, 0xde, 0x03, 0x31, 0x80, 0x64, 0x06, 0x01, + 0x8d, 0x06, 0x07, 0xc9, 0x81, 0xa6, 0x03, 0xf1, 0x84, 0x52, 0x0f, 0x18, + 0x38, 0x04, 0x51, 0x50, 0x02, 0x8c, 0x03, 0x10, 0x1c, 0x4c, 0x3d, 0x41, + 0x5d, 0x4c, 0x07, 0x90, 0x1b, 0xcc, 0x00, 0xa0, 0x05, 0x00, 0x53, 0x08, + 0x60, 0xe3, 0x27, 0xe3, 0x10, 0xbf, 0x97, 0x54, 0xfa, 0xb5, 0x94, 0xb6, + 0xb9, 0xa7, 0x8e, 0xb3, 0x41, 0x72, 0xcc, 0x87, 0x89, 0x09, 0x90, 0x3d, + 0xe4, 0x24, 0xaf, 0x93, 0x22, 0x32, 0x7e, 0xc7, 0x46, 0x2b, 0xe0, 0xae, + 0x83, 0xd0, 0xa4, 0xb4, 0x89, 0xa1, 0x70, 0x84, 0x66, 0xa3, 0x8b, 0x69, + 0xad, 0x05, 0x9d, 0x98, 0xc0, 0x55, 0x8e, 0x73, 0x9d, 0x38, 0x74, 0xa9, + 0x1b, 0xcf, 0xe1, 0xba, 0x6e, 0x40, 0x50, 0x29, 0xd0, 0xc2, 0xfa, 0x4f, + 0xbb, 0x84, 0xaf, 0x5d, 0x37, 0xd5, 0x48, 0x73, 0xab, 0xa1, 0xb8, 0x30, + 0xb4, 0x4e, 0xab, 0x5a, 0x67, 0x7b, 0x01, 0x22, 0xf6, 0x69, 0x8e, 0xb7, + 0x3b, 0xa3, 0x5f, 0xc1, 0xad, 0x9c, 0x5a, 0x1f, 0x42, 0x62, 0x78, 0x86, + 0x45, 0xa2, 0x85, 0x38, 0xfd, 0x3c, 0x86, 0x21, 0x4d, 0xab, 0x33, 0xa8, + 0x23, 0x31, 0x1f, 0xed, 0xaa, 0x87, 0x24, 0xeb, 0xc5, 0x53, 0x15, 0xa0, + 0x4c, 0x7e, 0x2c, 0x35, 0x37, 0xa8, 0x60, 0xb3, 0x44, 0x8a, 0xcb, 0x68, + 0xb1, 0x9f, 0xce, 0xa9, 0x64, 0x68, 0x64, 0xbb, 0xf5, 0x23, 0x73, 0x0b, + 0x6b, 0xd6, 0x05, 0xdb, 0x3b, 0x0b, 0x63, 0x3e, 0x52, 0xae, 0x50, 0x50, + 0xcb, 0x49, 0x1d, 0x6d, 0xbe, 0x58, 0x53, 0x5d, 0x57, 0xbd, 0x37, 0xae, + 0x7a, 0xb3, 0x4d, 0x8c, 0x10, 0x58, 0x95, 0xad, 0xaa, 0x97, 0x15, 0xc3, + 0x6a, 0xed, 0x0b, 0x48, 0x28, 0x60, 0x1c, 0xf1, 0x5b, 0xc9, 0x4b, 0x52, + 0xd2, 0xbc, 0xbc, 0xb2, 0xa2, 0x4d, 0x14, 0xd9, 0xd4, 0x39, 0x95, 0x84, + 0xed, 0x44, 0x41, 0xc6, 0x91, 0x29, 0x12, 0x45, 0x19, 0x1c, 0x12, 0x95, + 0xcb, 0x64, 0x60, 0x00, 0x7a, 0x8a, 0xd5, 0x7e, 0xfa, 0x87, 0xb0, 0xbb, + 0x14, 0xc1, 0x4b, 0xbd, 0xe9, 0x97, 0x4d, 0x2b, 0x60, 0x3e, 0x8d, 0x4d, + 0x11, 0x29, 0x1a, 0x07, 0xc4, 0x38, 0x4a, 0x89, 0xd4, 0x0a, 0xa8, 0x1e, + 0x59, 0xb5, 0x8e, 0x11, 0xbc, 0x1c, 0x01, 0x4d, 0x69, 0x1d, 0x8a, 0x7f, + 0xff, 0xff, 0xff, 0xb2, 0x8f, 0xe9, 0xad, 0xab, 0x71, 0xf9, 0xb6, 0xa0, + 0x0c, 0x06, 0x10, 0x0c, 0x09, 0x10, 0x0a, 0x8c, 0x12, 0xc0, 0x03, 0x0c, + 0x43, 0x91, 0x40, 0x0e, 0x8d, 0x30, 0x67, 0x0c, 0x26, 0xf0, 0x0e, 0x0c, + 0x09, 0x00, 0xb4, 0x4c, 0x11, 0x70, 0xe7, 0x0c, 0x03, 0x00, 0x42, 0xcc, + 0x0a, 0x90, 0xca, 0x0c, 0x00, 0x30, 0x1b, 0x8c, 0x02, 0xa0, 0x08, 0x4c, + 0x00, 0x30, 0x37, 0x0c, 0x05, 0x71, 0xbe, 0x81, 0xa0, 0x37, 0x15, 0x40, + 0x15, 0x18, 0x24, 0x16, 0xf2, 0x35, 0x68, 0x01, 0xe1, 0x60, 0x4c, 0xc1, + 0x55, 0xde, 0x34, 0x7a, 0x9d, 0x83, 0xe0, 0xd8, 0x16, 0x1c, 0x9e, 0x91, + 0x55, 0x84, 0x35, 0x6b, 0xec, 0x11, 0xcd, 0x6b, 0x50, 0xdc, 0xbe, 0x75, + 0xfa, 0x5b, 0xb8, 0xbf, 0x8f, 0x03, 0xb2, 0xf2, 0xd7, 0xa1, 0x8d, 0x3d, + 0xea, 0xc1, 0x2c, 0x86, 0x23, 0x30, 0x2b, 0xee, 0xc6, 0x28, 0xa3, 0x50, + 0x43, 0x11, 0xa4, 0x91, 0x6e, 0x51, 0x29, 0x1d, 0x10, 0x59, 0x60, 0xdd, + 0x46, 0xaa, 0x38, 0x8d, 0xe2, 0xda, 0x6a, 0xb1, 0x1d, 0x09, 0xb2, 0xa0, + 0xb8, 0xb1, 0x1c, 0xf1, 0x11, 0xff, 0xfb, 0xd4, 0x60, 0x49, 0x8d, 0x89, + 0x49, 0x75, 0x3e, 0x8b, 0xf8, 0x7b, 0x70, 0x4e, 0x8d, 0xe8, 0x7a, 0x18, + 0x62, 0x6e, 0x65, 0x21, 0xd6, 0xfa, 0x0f, 0xe1, 0xed, 0xc1, 0x44, 0x37, + 0xa1, 0x64, 0x30, 0x89, 0xb9, 0x91, 0x62, 0x96, 0x35, 0x3a, 0x2c, 0xc9, + 0x5a, 0x6c, 0x3f, 0x94, 0x6a, 0xa6, 0xd5, 0x4b, 0x23, 0x2a, 0xb9, 0x3a, + 0xe0, 0xfa, 0x0c, 0x77, 0x8c, 0xe9, 0x2d, 0xb0, 0x42, 0xd9, 0xa2, 0xd8, + 0xb9, 0x5a, 0x96, 0x6b, 0x50, 0xdc, 0x3d, 0x0f, 0xc6, 0x25, 0x63, 0xb6, + 0xe5, 0x72, 0x71, 0x2c, 0x67, 0xb8, 0x9e, 0xea, 0x94, 0x21, 0x88, 0xdf, + 0x9d, 0x60, 0xfa, 0x50, 0xc3, 0xb3, 0xd4, 0x79, 0xc9, 0x16, 0x2c, 0xac, + 0x87, 0x83, 0xd5, 0x5e, 0xa3, 0xb0, 0x30, 0x4f, 0x11, 0x40, 0xae, 0x4e, + 0x23, 0x8d, 0xe6, 0x98, 0x2e, 0xd1, 0x70, 0xd5, 0x67, 0xa6, 0x1b, 0x34, + 0xe9, 0x0c, 0x46, 0xb2, 0x32, 0x42, 0x39, 0x94, 0x52, 0xb1, 0x43, 0x88, + 0xd4, 0xf9, 0x5a, 0xf2, 0x63, 0xfd, 0xb9, 0x81, 0x99, 0x81, 0x93, 0x13, + 0x36, 0xd8, 0xc7, 0x7e, 0x37, 0xd0, 0x83, 0x43, 0x44, 0xc9, 0x38, 0x88, + 0x39, 0x44, 0xd0, 0xda, 0x32, 0x86, 0xe1, 0x3e, 0x98, 0x55, 0x0b, 0xb9, + 0x1b, 0x8e, 0x64, 0xb1, 0x84, 0x30, 0x21, 0xa3, 0xb5, 0x14, 0x47, 0x80, + 0x00, 0x4f, 0x1a, 0x6d, 0x90, 0x00, 0x6c, 0x66, 0xc8, 0xc2, 0xf3, 0x33, + 0x35, 0xfd, 0xf7, 0x65, 0xde, 0xa9, 0x57, 0xcc, 0xc6, 0x40, 0xcb, 0xe6, + 0x10, 0x8b, 0xe2, 0x75, 0xd2, 0xb3, 0xfc, 0x63, 0x13, 0x7e, 0x9f, 0x7a, + 0x11, 0x10, 0x8f, 0xcf, 0x74, 0x53, 0x5d, 0xda, 0x44, 0x9f, 0x46, 0x9b, + 0xff, 0x45, 0xe9, 0xa7, 0xfd, 0xff, 0xff, 0xfd, 0xbf, 0xd7, 0xd7, 0xff, + 0xff, 0xe4, 0x27, 0xfe, 0x9c, 0x94, 0x62, 0x32, 0x35, 0x10, 0xa8, 0xac, + 0xac, 0xa8, 0x78, 0x81, 0x8c, 0xd1, 0x80, 0x72, 0x01, 0x79, 0x81, 0xac, + 0x08, 0xf1, 0x86, 0xae, 0x74, 0x79, 0xc4, 0x22, 0x24, 0x31, 0x83, 0xde, + 0x08, 0x39, 0x83, 0x70, 0x11, 0xb9, 0x89, 0x0c, 0x09, 0x19, 0x82, 0x9c, + 0x04, 0xb1, 0x88, 0x48, 0x16, 0x79, 0x80, 0x8e, 0x04, 0x79, 0x80, 0x02, + 0x01, 0x11, 0x80, 0x5c, 0x05, 0xc9, 0x86, 0x56, 0x2b, 0x79, 0x81, 0x34, + 0x03, 0xb9, 0x80, 0x7e, 0x00, 0xd0, 0xfb, 0x56, 0x9c, 0xdc, 0x08, 0xe2, + 0xc2, 0x16, 0x0d, 0xd5, 0xa6, 0x81, 0x6f, 0x41, 0xee, 0x53, 0xd3, 0x7d, + 0x37, 0x9d, 0xa4, 0xcc, 0x96, 0xb2, 0x38, 0x61, 0x81, 0xc7, 0xdd, 0x86, + 0x55, 0x3c, 0xd7, 0xa5, 0xcc, 0x4a, 0x47, 0x01, 0xbf, 0x6f, 0x5c, 0x6d, + 0xf4, 0xa8, 0xe4, 0x34, 0x98, 0xdb, 0x95, 0x03, 0xca, 0xdf, 0xbb, 0xda, + 0x90, 0x38, 0xd2, 0x99, 0xc3, 0xc1, 0xf4, 0xea, 0x13, 0x74, 0xfa, 0x45, + 0xa8, 0x95, 0x6a, 0x68, 0x08, 0x69, 0xc0, 0xd8, 0x7f, 0x17, 0x47, 0x29, + 0x91, 0x0b, 0x67, 0x13, 0x85, 0x0d, 0xe8, 0xec, 0x9a, 0x88, 0x7b, 0x3d, + 0x80, 0x94, 0x7e, 0xe9, 0x3c, 0xfc, 0xf3, 0x6f, 0x4b, 0x41, 0x6c, 0x5a, + 0x70, 0x8a, 0xb1, 0x29, 0x61, 0x7e, 0x9d, 0x52, 0x30, 0x3c, 0x62, 0x4f, + 0x1c, 0xb0, 0xce, 0x89, 0x53, 0x87, 0x99, 0xa0, 0xf6, 0x62, 0xd8, 0xbb, + 0x4c, 0x31, 0x2b, 0xd2, 0xb5, 0x5c, 0x36, 0x4a, 0xa8, 0x30, 0x98, 0x13, + 0x93, 0x2b, 0x97, 0x0d, 0xd3, 0x2e, 0x9c, 0xa8, 0xb0, 0xf2, 0x13, 0xe4, + 0xf9, 0xf2, 0xfa, 0xb6, 0x84, 0x75, 0xb6, 0x2e, 0xdf, 0x3d, 0x53, 0x5a, + 0x1a, 0xa4, 0xea, 0x69, 0x63, 0x68, 0x5e, 0x5c, 0xa9, 0x5e, 0x30, 0x5d, + 0xa5, 0x19, 0xde, 0xbc, 0x6a, 0x43, 0xe1, 0x2e, 0x91, 0x48, 0x6b, 0x02, + 0xb9, 0x76, 0x7e, 0xa9, 0x10, 0xf5, 0x94, 0x63, 0x0b, 0x12, 0x91, 0x89, + 0x54, 0xc2, 0x88, 0xd2, 0xc4, 0x0d, 0x6d, 0x1a, 0x94, 0x45, 0x2f, 0x44, + 0x2f, 0xe7, 0x8a, 0xee, 0xaa, 0xa3, 0x61, 0x14, 0x23, 0x64, 0x95, 0x76, + 0x90, 0x4e, 0x97, 0x01, 0x18, 0x25, 0x86, 0x5b, 0xd2, 0xb4, 0x26, 0x40, + 0x06, 0x86, 0x10, 0x04, 0xad, 0x20, 0x00, 0x3c, 0x65, 0xa0, 0xe3, 0x75, + 0x0c, 0xf7, 0x36, 0x78, 0xe8, 0x01, 0x08, 0x88, 0x86, 0xea, 0xc3, 0x29, + 0xc2, 0xda, 0x34, 0xb8, 0x5e, 0x51, 0xa2, 0x69, 0x54, 0xed, 0x46, 0x3a, + 0xd4, 0xdd, 0xf4, 0x2a, 0xb3, 0x33, 0x5d, 0x51, 0x1f, 0xa7, 0xff, 0x6f, + 0xf7, 0xfb, 0x2a, 0xfd, 0x56, 0xec, 0xbe, 0x52, 0x7f, 0x5f, 0x4f, 0x5f, + 0x7a, 0x3e, 0xd6, 0xf7, 0xab, 0x3e, 0xae, 0xfa, 0xd8, 0xa6, 0x43, 0x7e, + 0xc3, 0x2b, 0xc2, 0x8a, 0x8b, 0x18, 0x58, 0x36, 0x53, 0x0c, 0x06, 0xd5, + 0x02, 0x01, 0x16, 0x60, 0x3e, 0x03, 0x74, 0x61, 0x3e, 0xb3, 0xe2, 0x6d, + 0x9d, 0x89, 0x54, 0x60, 0xa1, 0x82, 0x4a, 0x60, 0x40, 0x02, 0xe0, 0x60, + 0x7e, 0x04, 0x8e, 0x60, 0x20, 0x80, 0xae, 0x4c, 0x68, 0x79, 0x81, 0x50, + 0x04, 0xa0, 0xf0, 0x03, 0x86, 0x01, 0x70, 0x13, 0xa6, 0x1c, 0xa0, 0x2d, + 0x46, 0x08, 0x58, 0x11, 0xcd, 0xb0, 0xcb, 0x49, 0x9a, 0xc9, 0x9a, 0x6b, + 0x35, 0x7c, 0x5c, 0x68, 0xc3, 0xeb, 0x5d, 0xc0, 0x60, 0x70, 0xc5, 0x59, + 0xa5, 0x3d, 0xa6, 0x5c, 0xaa, 0x8e, 0x7b, 0x5e, 0x52, 0x50, 0x22, 0xb6, + 0x40, 0x48, 0xa4, 0xe3, 0xc3, 0xd0, 0xf3, 0x68, 0xc1, 0x24, 0xb9, 0xcb, + 0xdc, 0x35, 0x8a, 0xa0, 0x91, 0x19, 0x14, 0x32, 0xd6, 0x9b, 0xf8, 0x76, + 0x75, 0x5b, 0x5e, 0x07, 0xb6, 0x7d, 0xc7, 0x42, 0x91, 0xe8, 0x51, 0xd4, + 0x87, 0x0f, 0x86, 0xd6, 0x05, 0xff, 0xfb, 0xd4, 0x60, 0x3e, 0x89, 0x89, + 0x5a, 0x75, 0x3e, 0x03, 0xf8, 0x7b, 0x70, 0x42, 0xe5, 0x18, 0xad, 0x08, + 0x43, 0x4c, 0x24, 0x35, 0xd2, 0xfa, 0xaf, 0xbd, 0xed, 0xc1, 0x4b, 0x38, + 0x21, 0x64, 0x31, 0x95, 0xb8, 0x09, 0x18, 0x54, 0x4c, 0xb6, 0xeb, 0x51, + 0x91, 0x29, 0x35, 0x95, 0x5a, 0x74, 0xd2, 0x80, 0xb2, 0x64, 0xa2, 0x0e, + 0xf9, 0x97, 0x0a, 0x59, 0xd5, 0xef, 0xa3, 0xa1, 0xc6, 0xfb, 0x2c, 0x06, + 0x32, 0x7a, 0xa7, 0x42, 0x19, 0x5b, 0x2c, 0x89, 0x60, 0xaa, 0x4c, 0xa3, + 0x26, 0x4e, 0xd4, 0xee, 0x69, 0xc5, 0xf7, 0xca, 0x05, 0x62, 0xb5, 0xb1, + 0x1a, 0xa8, 0x80, 0x86, 0x9b, 0xa8, 0xb8, 0x67, 0x35, 0x13, 0xb2, 0xbc, + 0x20, 0xef, 0xd2, 0xad, 0xec, 0x66, 0x3a, 0x2c, 0xee, 0x55, 0xc3, 0xbc, + 0x48, 0x8a, 0x13, 0xf8, 0xd0, 0x43, 0xdb, 0x95, 0x67, 0x32, 0xb9, 0x0b, + 0x8d, 0x31, 0xf4, 0xf9, 0xc1, 0x0a, 0x62, 0x40, 0x61, 0x0b, 0x3e, 0x19, + 0x17, 0x4d, 0x48, 0x41, 0x33, 0xc2, 0xca, 0x9c, 0xfd, 0x44, 0x1d, 0xaa, + 0x64, 0x59, 0xb9, 0x0d, 0x89, 0x65, 0xe4, 0x56, 0x94, 0x74, 0xed, 0xef, + 0x53, 0xab, 0xe8, 0x5a, 0x14, 0x75, 0xf5, 0xca, 0xc3, 0x13, 0xf5, 0x49, + 0xb8, 0x63, 0x14, 0xcd, 0xaa, 0xa2, 0xf4, 0x9b, 0xaa, 0x95, 0xa1, 0x9d, + 0x52, 0x76, 0x9e, 0x28, 0xc3, 0x44, 0xb6, 0x9d, 0xf7, 0x06, 0x68, 0xa4, + 0xe4, 0xec, 0x08, 0xf0, 0x41, 0xca, 0xd0, 0x5f, 0x04, 0x9c, 0x3b, 0x40, + 0x00, 0x00, 0x04, 0xad, 0xcb, 0x63, 0x40, 0x0a, 0xd8, 0xaf, 0x5d, 0xa9, + 0xfe, 0x8c, 0x45, 0x20, 0xa1, 0x41, 0x91, 0xd3, 0x79, 0x4f, 0xcb, 0xbb, + 0xa9, 0xdc, 0x8f, 0xd8, 0xcd, 0xd8, 0xa1, 0x8a, 0x0e, 0x8f, 0x0a, 0xe9, + 0x61, 0x18, 0xea, 0xb6, 0x02, 0x44, 0xe0, 0x81, 0xd3, 0x95, 0xe1, 0xc8, + 0xb9, 0x3f, 0x7d, 0x0a, 0x5e, 0x29, 0x6f, 0xff, 0xff, 0xff, 0xd5, 0x7a, + 0xac, 0x23, 0x3a, 0xc4, 0x0e, 0x02, 0x0c, 0xe6, 0x01, 0x70, 0x12, 0xa2, + 0x30, 0x6c, 0x0c, 0x09, 0xb6, 0x92, 0x4c, 0xa2, 0xf1, 0x3c, 0x0c, 0x08, + 0xd0, 0x3f, 0xcc, 0x02, 0x50, 0x0d, 0x0c, 0x2b, 0xd0, 0x24, 0x81, 0x00, + 0x3d, 0x98, 0xa6, 0x41, 0x80, 0x18, 0x13, 0x20, 0x26, 0x98, 0x06, 0x40, + 0x1e, 0x8d, 0x00, 0x22, 0x61, 0x6b, 0x82, 0xf0, 0x1c, 0x04, 0xe1, 0x58, + 0x01, 0xe4, 0xb1, 0x37, 0x15, 0x9d, 0x22, 0x69, 0xb6, 0x86, 0xe8, 0xef, + 0x47, 0xc6, 0x2a, 0x8e, 0x14, 0xe8, 0xa7, 0x31, 0x2d, 0x9f, 0xb1, 0xc9, + 0x21, 0x6f, 0x37, 0x96, 0x47, 0xf1, 0x6f, 0x6b, 0x30, 0x52, 0x86, 0x94, + 0xc3, 0x9c, 0x47, 0x0e, 0xa4, 0x24, 0xcf, 0x43, 0x0f, 0x16, 0x73, 0xc8, + 0xbd, 0x07, 0x28, 0xf1, 0x4c, 0x3d, 0x37, 0xd9, 0x81, 0xf2, 0xed, 0x5d, + 0x64, 0xea, 0x14, 0x9c, 0x43, 0xa2, 0x23, 0xcb, 0xe3, 0x34, 0x24, 0x31, + 0x65, 0x40, 0xda, 0xae, 0xac, 0xb0, 0x54, 0xe9, 0x64, 0xfa, 0xed, 0x99, + 0x9d, 0xea, 0xe0, 0xf9, 0x99, 0x22, 0x8a, 0x6b, 0x57, 0x30, 0xb3, 0x32, + 0x32, 0xa3, 0xea, 0xae, 0x68, 0x3f, 0xde, 0x9f, 0xec, 0x69, 0x08, 0x11, + 0xd8, 0x91, 0x4c, 0xaa, 0xf7, 0x88, 0x45, 0x91, 0x44, 0xbd, 0x61, 0xb0, + 0xba, 0x23, 0xcf, 0xeb, 0xcd, 0x0d, 0x9f, 0x4c, 0xac, 0x70, 0x97, 0x2d, + 0x6c, 0x86, 0xfb, 0xb3, 0xf5, 0x09, 0x48, 0x25, 0xd2, 0xee, 0x0e, 0xd9, + 0xa1, 0xaa, 0x8e, 0x99, 0x11, 0xa5, 0x89, 0xfc, 0x26, 0xe5, 0x53, 0xd5, + 0xde, 0x55, 0x92, 0xe9, 0xc9, 0xf2, 0x29, 0xae, 0x2a, 0x36, 0x22, 0xad, + 0x74, 0xde, 0xe9, 0x37, 0x3b, 0xec, 0xae, 0x23, 0x65, 0x4d, 0x7b, 0x69, + 0x44, 0xe9, 0xde, 0x1e, 0x47, 0x50, 0x3c, 0x53, 0xbc, 0x73, 0x58, 0x5c, + 0xa9, 0x24, 0x68, 0x82, 0xa6, 0x43, 0x5e, 0xaa, 0x54, 0xaa, 0xc6, 0x27, + 0x34, 0x25, 0x68, 0x85, 0x39, 0x0e, 0xa2, 0xdf, 0x1c, 0xf8, 0x33, 0x10, + 0xe2, 0x44, 0x1e, 0x97, 0x42, 0x60, 0x7e, 0x0a, 0xe0, 0x68, 0x9b, 0xe4, + 0x31, 0x84, 0x3f, 0x40, 0xc4, 0x05, 0x22, 0xa4, 0x16, 0x16, 0x90, 0x0b, + 0xf1, 0xe8, 0xb4, 0x0a, 0x4c, 0x1e, 0xff, 0x73, 0x45, 0xcc, 0xf1, 0xc1, + 0x03, 0x4e, 0x96, 0xd3, 0xa4, 0x7e, 0x79, 0x43, 0xfa, 0xdb, 0x6d, 0x2a, + 0x18, 0xc6, 0xff, 0x50, 0xe9, 0xbd, 0x2b, 0x72, 0xaa, 0x93, 0x4b, 0x76, + 0x5f, 0x36, 0x9f, 0xab, 0xa5, 0x26, 0xd6, 0x4e, 0x9a, 0x7f, 0xe9, 0xaf, + 0xb3, 0xff, 0xb3, 0xff, 0xae, 0xba, 0xa7, 0xfd, 0xbb, 0xde, 0xd7, 0xa6, + 0x8a, 0xee, 0x65, 0x79, 0x50, 0xa8, 0xa6, 0x08, 0xb5, 0x5c, 0xa3, 0x50, + 0x70, 0xaa, 0x94, 0xee, 0x38, 0x3c, 0x45, 0x18, 0x0c, 0x05, 0xc0, 0x24, + 0x4c, 0x06, 0xf0, 0x5d, 0x0c, 0x15, 0x85, 0x8f, 0xcc, 0xbb, 0x41, 0x39, + 0x8c, 0x0b, 0x20, 0x3b, 0xcc, 0x01, 0x90, 0x0d, 0xcc, 0x22, 0x00, 0x36, + 0x8c, 0x02, 0x80, 0x49, 0x8c, 0x1c, 0x50, 0xec, 0x4c, 0x02, 0x10, 0x08, + 0x4c, 0x05, 0x90, 0x07, 0x83, 0x80, 0x4d, 0x30, 0x8f, 0x02, 0xab, 0x30, + 0x13, 0xc0, 0x29, 0x2f, 0x71, 0xba, 0x58, 0x12, 0xc9, 0x16, 0x35, 0xd1, + 0x24, 0x66, 0x3b, 0x4f, 0x43, 0x2c, 0xdf, 0x66, 0x63, 0x72, 0x39, 0x97, + 0x95, 0xc7, 0x7a, 0x0a, 0x8b, 0x4e, 0x66, 0x39, 0x0f, 0x38, 0xd2, 0x07, + 0xa2, 0xc2, 0x1f, 0x0d, 0x9e, 0x0a, 0x5e, 0x31, 0x2d, 0x3f, 0x8e, 0xa5, + 0xca, 0x8c, 0xed, 0x66, 0x5a, 0x2e, 0x06, 0x52, 0xe5, 0x24, 0x7a, 0x9c, + 0x66, 0x31, 0x78, 0x57, 0xce, 0xff, 0xfb, 0xd4, 0x60, 0x3b, 0x0c, 0x89, + 0x03, 0x76, 0x3f, 0x0b, 0xef, 0x7b, 0x70, 0x53, 0x8e, 0x08, 0x59, 0x04, + 0x65, 0x6e, 0x24, 0x39, 0xd2, 0xfa, 0x2f, 0xbd, 0xed, 0xc1, 0x63, 0xba, + 0x21, 0x58, 0x31, 0x95, 0xb8, 0xe2, 0xb0, 0xb2, 0x7c, 0x1d, 0x64, 0x10, + 0xee, 0x82, 0x9a, 0x72, 0x99, 0x2c, 0xe4, 0x88, 0x64, 0x3e, 0x50, 0xb9, + 0x10, 0xd6, 0x0b, 0xa9, 0x23, 0xc5, 0x5d, 0xa2, 0xa1, 0x35, 0x34, 0xbe, + 0x31, 0x0f, 0x06, 0xe6, 0x36, 0xf6, 0x95, 0xa6, 0x18, 0x87, 0x33, 0x1b, + 0x4b, 0x01, 0xf8, 0x87, 0xa9, 0x94, 0x0d, 0x11, 0x8f, 0xa3, 0xb5, 0xc5, + 0x0c, 0x5d, 0x30, 0xed, 0xa5, 0x9e, 0x2a, 0x82, 0x8a, 0x5c, 0x27, 0x58, + 0xac, 0xc5, 0x75, 0xa5, 0x13, 0x3c, 0x05, 0xa7, 0xee, 0x0a, 0xf7, 0x6a, + 0xb8, 0x29, 0x65, 0x42, 0xfe, 0x1f, 0xbc, 0xa4, 0x68, 0x6b, 0xb6, 0x05, + 0x16, 0xa3, 0x5e, 0x98, 0x8d, 0x1d, 0xb3, 0x4c, 0x70, 0xe3, 0xb8, 0x40, + 0x61, 0x72, 0x54, 0xbf, 0x74, 0x73, 0xde, 0x4d, 0xbe, 0x61, 0xab, 0xdb, + 0x28, 0xa0, 0x37, 0x3d, 0x7c, 0xde, 0x99, 0xaa, 0xb5, 0x93, 0x6c, 0xf1, + 0xea, 0x88, 0x43, 0x99, 0x19, 0xe2, 0x1f, 0xcf, 0x95, 0xa7, 0x6a, 0x21, + 0x95, 0x0b, 0x55, 0xa9, 0x4d, 0xf7, 0x89, 0x64, 0xd1, 0xac, 0xb9, 0x42, + 0xc5, 0xa0, 0x80, 0x24, 0x4f, 0xf4, 0x20, 0x94, 0x0b, 0x50, 0xaf, 0x8f, + 0x5a, 0xe0, 0x14, 0x22, 0xbe, 0x65, 0x9f, 0x60, 0x00, 0x03, 0x0d, 0x48, + 0x01, 0x64, 0xcc, 0x5a, 0x10, 0x00, 0x7f, 0xf2, 0xe9, 0xcd, 0x95, 0x29, + 0xcc, 0xd2, 0x7f, 0xcf, 0x99, 0x62, 0xcc, 0xad, 0x1f, 0x22, 0x2d, 0x77, + 0x47, 0xa8, 0x8c, 0x75, 0xb6, 0x8f, 0x76, 0xda, 0x63, 0xde, 0xb4, 0x4b, + 0x31, 0xcd, 0xfd, 0xbf, 0x7d, 0x1a, 0xbf, 0xf2, 0x50, 0xb7, 0xb7, 0xe9, + 0xf3, 0xeb, 0xaa, 0x5b, 0x5f, 0xb7, 0xff, 0xbf, 0x36, 0xf9, 0xbd, 0x29, + 0x52, 0xab, 0xc9, 0x12, 0xb0, 0xd1, 0x07, 0x79, 0x10, 0x44, 0x3a, 0x51, + 0x85, 0x1e, 0x30, 0x3a, 0x2a, 0x8e, 0x17, 0x58, 0x18, 0x11, 0x00, 0x4b, + 0x98, 0x1b, 0xa0, 0xa4, 0x18, 0x60, 0x89, 0xb8, 0x9b, 0x4e, 0x81, 0xed, + 0x18, 0x36, 0x00, 0x70, 0x98, 0x0e, 0x60, 0x9a, 0x18, 0x3f, 0x00, 0xcc, + 0x98, 0x08, 0xa0, 0x93, 0x98, 0x79, 0x21, 0xf8, 0x18, 0x0b, 0x80, 0x44, + 0x04, 0x01, 0x6a, 0x60, 0x2a, 0x81, 0x30, 0x60, 0xb1, 0x85, 0x50, 0x60, + 0x37, 0x80, 0x7c, 0xaa, 0x68, 0x52, 0xb5, 0xa9, 0x90, 0x96, 0x9a, 0x24, + 0x94, 0x34, 0x4d, 0x52, 0xf8, 0xe6, 0x4f, 0x89, 0x92, 0xf8, 0xe8, 0x0e, + 0xc2, 0x0a, 0x72, 0x0c, 0x93, 0xb0, 0x70, 0xb8, 0x28, 0x10, 0xd3, 0xf5, + 0xf1, 0x92, 0x75, 0x1c, 0x87, 0x08, 0xc6, 0x22, 0x0e, 0x54, 0x83, 0x8b, + 0x23, 0xd3, 0x4c, 0x96, 0x36, 0xc0, 0x7e, 0x86, 0x97, 0x63, 0x22, 0x64, + 0x9e, 0x4e, 0x23, 0xc4, 0x57, 0x91, 0x88, 0x72, 0x87, 0x9c, 0xc6, 0xab, + 0x1a, 0x35, 0x89, 0x84, 0x95, 0xab, 0x54, 0x05, 0x8d, 0xb9, 0x89, 0xea, + 0x1e, 0xe2, 0xda, 0xd4, 0x6a, 0x60, 0xbf, 0x31, 0x96, 0xd1, 0x60, 0x27, + 0x68, 0xab, 0xa8, 0x28, 0x86, 0x39, 0xbb, 0x42, 0xcf, 0xf4, 0xf3, 0x63, + 0x1b, 0x03, 0x9a, 0xe3, 0x72, 0x3d, 0x4b, 0xb1, 0x28, 0xde, 0x34, 0x2a, + 0xd8, 0x9a, 0xe8, 0x94, 0x73, 0xcc, 0x8e, 0x68, 0x42, 0x12, 0xde, 0xaf, + 0x8c, 0x71, 0x36, 0x25, 0xd4, 0x53, 0xb8, 0x2a, 0x96, 0xde, 0xa7, 0xd9, + 0x90, 0xa5, 0xf8, 0xe7, 0x62, 0xbd, 0xb5, 0x72, 0x57, 0x4e, 0xc5, 0x5b, + 0xb0, 0xae, 0x9b, 0xaf, 0x15, 0xf2, 0xad, 0x4c, 0x73, 0x44, 0xcf, 0x9a, + 0x03, 0x8b, 0xf6, 0xe7, 0xd3, 0xb3, 0x30, 0xa9, 0x5f, 0x2b, 0x54, 0x70, + 0x30, 0xc8, 0xa2, 0x84, 0x6e, 0x32, 0x1a, 0x2d, 0xce, 0x4c, 0xf0, 0x93, + 0x8c, 0xb1, 0xde, 0xc4, 0x76, 0xc2, 0xcf, 0x97, 0x38, 0x8d, 0x8c, 0x98, + 0x4e, 0xae, 0x95, 0x49, 0x35, 0xf7, 0x68, 0x83, 0xe4, 0xd1, 0x5c, 0x9e, + 0x49, 0xa5, 0x5c, 0xaa, 0x58, 0xe7, 0xfa, 0xc4, 0x02, 0xec, 0x2b, 0x91, + 0x8e, 0x91, 0x20, 0x3f, 0x0e, 0x20, 0xe1, 0x07, 0xb1, 0x35, 0xa8, 0x01, + 0xfe, 0x89, 0x71, 0x52, 0xa6, 0xff, 0xeb, 0xca, 0xfe, 0x4b, 0x94, 0xce, + 0x03, 0x09, 0x23, 0x79, 0x3b, 0x9f, 0x72, 0xd4, 0x8f, 0xe9, 0xa5, 0xe5, + 0x59, 0x2b, 0x33, 0x33, 0x90, 0xe9, 0x61, 0xb2, 0x6d, 0xf3, 0x91, 0x9c, + 0x92, 0x23, 0x95, 0xbe, 0xff, 0xeb, 0xad, 0x53, 0xd2, 0xdb, 0x77, 0xcb, + 0xf4, 0xed, 0xd7, 0xbf, 0xad, 0xff, 0x7a, 0xf7, 0xf5, 0x2f, 0x67, 0xfb, + 0xd6, 0x94, 0x72, 0x20, 0x8d, 0xd5, 0x10, 0x88, 0xd3, 0xaa, 0x9d, 0x08, + 0x22, 0x3d, 0x4c, 0xa5, 0x12, 0x3a, 0x82, 0x9e, 0x28, 0xe3, 0xc5, 0x46, + 0xb0, 0xd5, 0x14, 0x0c, 0x08, 0x00, 0x15, 0x4c, 0x0f, 0xd0, 0x22, 0x0c, + 0x3b, 0x42, 0x03, 0x4e, 0x02, 0x20, 0x65, 0x0c, 0x20, 0xe0, 0x13, 0xcc, + 0x0e, 0x70, 0x13, 0x0c, 0x36, 0xb0, 0x1d, 0xcc, 0x02, 0xb0, 0x1c, 0x8c, + 0x62, 0xa0, 0x7e, 0x4c, 0x07, 0x50, 0x21, 0xc6, 0x00, 0x15, 0x1d, 0x00, + 0xfc, 0xc0, 0x5f, 0x0c, 0x4c, 0xc0, 0x6d, 0x00, 0x8c, 0xbf, 0xc8, 0x41, + 0xfa, 0xd2, 0x87, 0x2f, 0x22, 0x86, 0xcb, 0x77, 0x2f, 0x03, 0xe9, 0x14, + 0x25, 0x85, 0xc5, 0x64, 0x9f, 0xba, 0x26, 0xc5, 0xfc, 0xb8, 0x2e, 0xca, + 0x64, 0x20, 0x96, 0xa5, 0xcf, 0xb5, 0x5a, 0x59, 0x00, 0x76, 0x9c, 0x19, + 0x39, 0x51, 0x84, 0x8e, 0x2b, 0xff, 0xfb, 0xd4, 0x60, 0x31, 0x8c, 0x89, + 0x66, 0x75, 0x3e, 0x8b, 0xef, 0xc3, 0x70, 0x53, 0x8e, 0x88, 0x79, 0x14, + 0x42, 0x6e, 0x24, 0x71, 0xd4, 0xfa, 0x0f, 0xbd, 0xed, 0xc1, 0x68, 0x38, + 0xa1, 0x64, 0x51, 0x95, 0xb8, 0x93, 0x29, 0x7b, 0x5d, 0x1b, 0xa4, 0x11, + 0x3e, 0x58, 0x9b, 0x11, 0xc8, 0x81, 0xd0, 0x6c, 0x50, 0x30, 0xf7, 0xc6, + 0x0c, 0x7f, 0xe6, 0xf3, 0xaa, 0xec, 0x3b, 0x0e, 0xd6, 0x10, 0x64, 0x95, + 0xac, 0xb7, 0x4a, 0xcb, 0xc5, 0xee, 0x86, 0xa3, 0x6d, 0xeb, 0x5e, 0x79, + 0x25, 0x32, 0xa8, 0xa4, 0x0b, 0x0f, 0xb5, 0xa6, 0xef, 0x29, 0xb2, 0xfa, + 0xcb, 0xe1, 0xd7, 0xe6, 0xcc, 0xec, 0xc3, 0xfd, 0x19, 0xb4, 0xd8, 0x63, + 0x58, 0xd2, 0xc2, 0xe0, 0xc8, 0x7e, 0x4a, 0xfb, 0x40, 0x8e, 0xce, 0x37, + 0x2a, 0xcc, 0xca, 0x6a, 0x6a, 0x35, 0x7a, 0x37, 0xb8, 0xac, 0x03, 0x6e, + 0x69, 0xe0, 0xa7, 0xe4, 0xb6, 0x4b, 0x35, 0x49, 0x22, 0xc6, 0x3d, 0x4f, + 0x72, 0x1f, 0x8f, 0x4c, 0x55, 0xb2, 0xdc, 0xe1, 0xc8, 0x7a, 0x66, 0x62, + 0x96, 0xfd, 0x35, 0x4c, 0x61, 0xc7, 0x92, 0x53, 0x02, 0x5d, 0x9f, 0x94, + 0x4c, 0xc1, 0xf6, 0xed, 0x4a, 0x65, 0xd1, 0xe9, 0x9a, 0x3a, 0x69, 0x54, + 0xa6, 0x55, 0x28, 0x9b, 0xa2, 0xa4, 0xab, 0x0e, 0x54, 0x7f, 0x37, 0x03, + 0xcd, 0x45, 0xa4, 0x75, 0xa4, 0x14, 0xdb, 0xb9, 0x13, 0xe5, 0x24, 0x66, + 0xe5, 0xd6, 0xde, 0xe4, 0x0a, 0xd7, 0xda, 0xc4, 0xad, 0x98, 0x3e, 0xcf, + 0x14, 0x81, 0xec, 0xa4, 0x96, 0x39, 0xd4, 0xb0, 0xdb, 0x92, 0xc9, 0xa7, + 0xaf, 0xb3, 0x91, 0x26, 0xe2, 0xf2, 0xb6, 0xcf, 0xb9, 0x75, 0x41, 0xa0, + 0x60, 0xac, 0xc4, 0x00, 0x00, 0xda, 0xbf, 0x80, 0x0d, 0xc8, 0x87, 0x49, + 0xa6, 0x37, 0xbf, 0x94, 0xc1, 0x42, 0x37, 0x62, 0xbb, 0x33, 0xdd, 0x08, + 0x8e, 0xfa, 0x3a, 0x95, 0xde, 0xcc, 0xe7, 0x66, 0x09, 0x55, 0xbb, 0x2d, + 0x2f, 0x4c, 0xae, 0xec, 0xce, 0xac, 0xc7, 0x67, 0xa8, 0x93, 0xb5, 0x59, + 0xd5, 0xf6, 0x55, 0xe6, 0x5e, 0x53, 0xa2, 0xdf, 0x6b, 0xef, 0xf4, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd7, 0xff, 0x55, 0x69, 0x58, 0xcf, + 0x39, 0x0c, 0x77, 0x55, 0x54, 0x62, 0xb3, 0x21, 0x15, 0x02, 0xa2, 0x31, + 0xca, 0x41, 0xc0, 0xc0, 0x50, 0x18, 0x1b, 0x60, 0x4b, 0x98, 0x6e, 0x05, + 0x41, 0x1b, 0xd6, 0x01, 0x6d, 0x98, 0x3f, 0xc0, 0x58, 0x18, 0x13, 0xa0, + 0xb0, 0x98, 0x27, 0x00, 0xfb, 0x18, 0x0d, 0x20, 0x2f, 0x18, 0xb6, 0x60, + 0xe0, 0x98, 0x12, 0x40, 0x38, 0x18, 0x08, 0x20, 0x07, 0x18, 0x07, 0x00, + 0x3d, 0x18, 0x47, 0x01, 0x91, 0x18, 0x03, 0x20, 0x1e, 0x2f, 0xd3, 0x7a, + 0x46, 0x52, 0x02, 0x63, 0x9f, 0xc1, 0x2c, 0x43, 0xd1, 0xa2, 0xba, 0xbe, + 0x5e, 0x4d, 0xf5, 0x61, 0xc0, 0x5f, 0x0d, 0xe4, 0xe1, 0x44, 0x63, 0x1b, + 0xef, 0x51, 0xa7, 0xda, 0x49, 0x5f, 0x86, 0xae, 0x62, 0x2f, 0x18, 0xca, + 0x36, 0x91, 0xf8, 0xb8, 0x52, 0x93, 0x76, 0x33, 0x45, 0x0e, 0x56, 0xa5, + 0x59, 0xe0, 0x17, 0xf3, 0xa8, 0xb8, 0x16, 0xf5, 0x42, 0x39, 0x00, 0xd4, + 0xc0, 0xd8, 0xa4, 0x65, 0x95, 0x28, 0xc6, 0xc4, 0x54, 0x9d, 0x6c, 0x8b, + 0xb6, 0x67, 0x8f, 0x54, 0x4e, 0x99, 0x15, 0xe7, 0x61, 0xc0, 0x8b, 0x6d, + 0x88, 0xc6, 0xce, 0x87, 0xbe, 0x46, 0xc7, 0x87, 0x45, 0xf5, 0x6c, 0x23, + 0x2d, 0xa9, 0x8d, 0x81, 0x46, 0xe6, 0xa6, 0x8b, 0xb6, 0xd6, 0x3a, 0x9f, + 0x4b, 0xd0, 0x5e, 0xa9, 0xdf, 0xa8, 0x91, 0xc7, 0xf3, 0x3a, 0xe9, 0x85, + 0xf2, 0xbd, 0xa1, 0x1a, 0xa5, 0xd3, 0xa7, 0xc5, 0xcd, 0x5e, 0x79, 0xb0, + 0x3b, 0x72, 0x7e, 0xe9, 0x7e, 0x11, 0xfb, 0x54, 0x3d, 0xb1, 0x79, 0xb4, + 0xb6, 0x9d, 0x8d, 0x4e, 0xdf, 0xa1, 0x2a, 0x07, 0x4a, 0xf5, 0xcb, 0xd5, + 0x02, 0x95, 0x2e, 0xa3, 0x60, 0x6e, 0x70, 0xb1, 0xd4, 0x8f, 0x44, 0xa8, + 0x4c, 0xf3, 0xca, 0x2a, 0x9d, 0xbe, 0x69, 0x5b, 0x56, 0x9e, 0xb6, 0x30, + 0xa5, 0xa6, 0xa3, 0xf5, 0xd9, 0xd1, 0x98, 0x07, 0xf2, 0xd9, 0xa5, 0x09, + 0x3d, 0x09, 0xee, 0x64, 0x52, 0x23, 0xda, 0x5e, 0x2b, 0x95, 0x46, 0x24, + 0x08, 0xf0, 0x4b, 0xb1, 0x6c, 0x39, 0x57, 0xd0, 0xb1, 0x28, 0x63, 0xae, + 0x86, 0xe9, 0x21, 0x46, 0x97, 0x82, 0xd8, 0x0a, 0x11, 0xca, 0x8b, 0x12, + 0x71, 0x69, 0x48, 0x0b, 0xf3, 0x68, 0x42, 0x55, 0xa0, 0x00, 0xdc, 0x61, + 0x88, 0xee, 0x41, 0x39, 0x23, 0x2f, 0xa6, 0xf9, 0x97, 0x09, 0x13, 0x72, + 0x5e, 0x6e, 0xbb, 0xd7, 0x28, 0xdb, 0x04, 0xcc, 0xac, 0xcf, 0x4d, 0x38, + 0x5f, 0x92, 0xec, 0x46, 0x66, 0xd3, 0xa1, 0x05, 0x9f, 0xac, 0xc5, 0xa9, + 0xde, 0xfa, 0xd1, 0xbf, 0x4d, 0xf6, 0xff, 0xef, 0xd7, 0x5f, 0xfb, 0x3b, + 0x76, 0xde, 0xff, 0xe6, 0xa6, 0x89, 0x5a, 0xa3, 0xda, 0xa9, 0xa5, 0xf9, + 0x1d, 0x0e, 0xae, 0x85, 0x44, 0x29, 0x91, 0x88, 0x20, 0xae, 0x8c, 0x52, + 0x07, 0xdc, 0x0e, 0xce, 0x41, 0x85, 0x61, 0x01, 0xb2, 0x10, 0x44, 0x35, + 0x25, 0x01, 0x70, 0xc0, 0x5b, 0x04, 0x6c, 0xc1, 0xe4, 0x45, 0x20, 0xd2, + 0x5a, 0x11, 0xac, 0xc1, 0x10, 0x03, 0x68, 0x0a, 0x01, 0x51, 0x86, 0x04, + 0x06, 0x99, 0x80, 0xac, 0x06, 0x99, 0x86, 0x0c, 0x1c, 0xa0, 0xd0, 0x13, + 0xe0, 0x60, 0x1c, 0x40, 0x40, 0x07, 0x18, 0x4b, 0x60, 0x9c, 0x86, 0x02, + 0x32, 0xb7, 0xc3, 0x50, 0xfc, 0xf1, 0x2b, 0x95, 0x6c, 0x8a, 0x32, 0x58, + 0xa2, 0x39, 0xc9, 0xeb, 0x69, 0xff, 0xfb, 0xd4, 0x60, 0x20, 0x89, 0x88, + 0xa8, 0x74, 0xbf, 0x03, 0xef, 0x7b, 0x70, 0x49, 0x05, 0xf8, 0x8a, 0x0c, + 0x23, 0x4c, 0x24, 0xf5, 0xd4, 0xfa, 0xaf, 0xbd, 0xed, 0xc0, 0xff, 0x8c, + 0xe2, 0xb4, 0x20, 0x94, 0xe0, 0xec, 0x87, 0x1b, 0x87, 0xa9, 0x90, 0x3f, + 0xcf, 0x55, 0x3a, 0x1c, 0x76, 0x2d, 0x92, 0x92, 0xe8, 0xa0, 0xc1, 0x82, + 0xac, 0x51, 0x29, 0xc9, 0x5a, 0x98, 0xe2, 0x63, 0x9d, 0xfa, 0xb5, 0x9d, + 0x4d, 0x64, 0x91, 0xe9, 0x3a, 0x30, 0x81, 0xb0, 0xae, 0x76, 0xe4, 0x65, + 0x2a, 0x0f, 0x07, 0x38, 0x68, 0xfb, 0x9c, 0xee, 0x9a, 0xd9, 0xd4, 0xcb, + 0xb4, 0x61, 0xf8, 0xdb, 0x22, 0x9e, 0x31, 0xd2, 0x72, 0x48, 0xe4, 0xe0, + 0xc4, 0xe6, 0xbe, 0xce, 0xe9, 0xf7, 0x82, 0xd4, 0xe2, 0x8d, 0x7e, 0xd5, + 0x2b, 0xda, 0xa9, 0x55, 0xb0, 0x5c, 0xd9, 0xdc, 0x75, 0x74, 0x2d, 0xa8, + 0xf0, 0x78, 0xe7, 0x22, 0x85, 0x95, 0x58, 0x9c, 0x49, 0x3d, 0x65, 0x67, + 0x89, 0x01, 0x54, 0xd0, 0x70, 0x37, 0x1f, 0x8e, 0x48, 0x64, 0x68, 0x29, + 0x97, 0x08, 0x4d, 0xcc, 0x93, 0x36, 0xab, 0x30, 0x95, 0x5d, 0x3d, 0x6d, + 0x86, 0xf6, 0x32, 0x85, 0x89, 0xa1, 0x52, 0xc6, 0xba, 0x63, 0x66, 0x48, + 0xb8, 0xbe, 0x5d, 0xb3, 0xb1, 0x30, 0x3f, 0x5c, 0xb5, 0x3c, 0xd6, 0x58, + 0x5a, 0x60, 0xa1, 0xb7, 0x7e, 0xe9, 0x74, 0xb2, 0xac, 0xcd, 0x5a, 0x96, + 0x64, 0x86, 0xc7, 0x2c, 0x23, 0xb2, 0x2a, 0xe5, 0xd3, 0x42, 0x91, 0x8a, + 0xe7, 0x74, 0x13, 0xa9, 0x91, 0x48, 0xe6, 0x9c, 0x5c, 0x48, 0xc2, 0xb9, + 0x72, 0x56, 0x32, 0xa9, 0x90, 0x94, 0x25, 0x6e, 0x39, 0x74, 0x8a, 0x2c, + 0x25, 0xf0, 0x92, 0x27, 0xd2, 0x63, 0xe0, 0x39, 0x41, 0x42, 0x0a, 0x21, + 0x3c, 0x00, 0x01, 0x89, 0xb9, 0x24, 0x64, 0x80, 0x0f, 0x93, 0x32, 0xb3, + 0xe1, 0xba, 0x7e, 0x69, 0xb2, 0x98, 0x98, 0x84, 0xdd, 0xae, 0x93, 0x5a, + 0x88, 0x5e, 0xe4, 0x21, 0xa6, 0xeb, 0xa6, 0x66, 0x47, 0xbb, 0xe5, 0xde, + 0xe9, 0xe9, 0x87, 0x43, 0xe4, 0xc8, 0x94, 0xc8, 0x35, 0x00, 0x82, 0xe3, + 0x02, 0xe4, 0xdc, 0x85, 0x16, 0x79, 0x4d, 0xfe, 0x99, 0x6e, 0xea, 0x2f, + 0xa6, 0xcf, 0xfe, 0x8e, 0xfe, 0xa1, 0xa4, 0x5c, 0x2a, 0x26, 0x00, 0x89, + 0x97, 0x9b, 0x12, 0x4c, 0x04, 0x50, 0x24, 0x8c, 0x02, 0x80, 0x5d, 0x4c, + 0x03, 0xb5, 0xa3, 0x0c, 0x31, 0x01, 0x48, 0xc0, 0x20, 0x7d, 0x18, 0x02, + 0xa0, 0x4e, 0x18, 0x57, 0xa0, 0x93, 0x8e, 0x02, 0x68, 0x60, 0xc8, 0x08, + 0xfa, 0x00, 0x00, 0xd4, 0xa0, 0x09, 0x21, 0x18, 0x07, 0x26, 0x13, 0x50, + 0x22, 0xe6, 0x02, 0xd8, 0x03, 0xa8, 0xa8, 0x12, 0x38, 0x4a, 0x63, 0xb5, + 0x78, 0x99, 0x89, 0x09, 0x6f, 0x4e, 0x97, 0x23, 0x25, 0x77, 0x28, 0x90, + 0x1b, 0xaa, 0xa1, 0xc4, 0x5b, 0x47, 0xa5, 0x0b, 0x43, 0x93, 0x86, 0x29, + 0x9e, 0x2e, 0xa7, 0xe3, 0xc5, 0x59, 0xd2, 0xe2, 0x75, 0xa1, 0x67, 0x29, + 0xca, 0x5e, 0x94, 0xc8, 0x41, 0xb4, 0x3e, 0x60, 0xc4, 0x2c, 0x27, 0x01, + 0x7c, 0x62, 0x2e, 0x2d, 0xce, 0x0b, 0x83, 0x95, 0x80, 0xe4, 0x3b, 0x87, + 0xca, 0xa9, 0x4c, 0x26, 0x04, 0xf8, 0x81, 0x8d, 0xc4, 0x1a, 0x12, 0xc8, + 0xed, 0xdb, 0x83, 0x61, 0xdc, 0x92, 0x50, 0xc6, 0x48, 0x9a, 0x6a, 0xa3, + 0xa2, 0x8e, 0x16, 0x1f, 0x71, 0x59, 0x6e, 0x5f, 0x15, 0x2b, 0x66, 0xcb, + 0x6b, 0x95, 0xd0, 0xd5, 0x6a, 0x18, 0x5e, 0x9c, 0x8f, 0xc7, 0x18, 0x29, + 0xc5, 0x5b, 0x13, 0x0b, 0x4a, 0x2d, 0x52, 0x69, 0x97, 0x56, 0xd4, 0x1a, + 0xad, 0xf3, 0x0b, 0x5b, 0x7d, 0x8b, 0x92, 0x62, 0x0c, 0x27, 0xf1, 0x8b, + 0x7a, 0x42, 0x1b, 0x73, 0x2c, 0x55, 0x73, 0x1a, 0x06, 0x67, 0x07, 0x27, + 0xaa, 0xb5, 0x33, 0x19, 0xd3, 0x23, 0x22, 0x26, 0x0a, 0xad, 0x43, 0x45, + 0x42, 0x71, 0x5b, 0x11, 0xcc, 0xb8, 0xae, 0xd5, 0x4c, 0x8b, 0x50, 0x94, + 0x28, 0x95, 0x73, 0x2c, 0x15, 0x22, 0xa2, 0x73, 0xb9, 0x2e, 0xf4, 0xd1, + 0x53, 0x23, 0x56, 0x10, 0x95, 0x63, 0x39, 0x3f, 0x8b, 0x3a, 0xbd, 0x48, + 0xb9, 0xb3, 0xd7, 0xf0, 0xb0, 0xaf, 0x5c, 0xc7, 0x37, 0x96, 0x0f, 0x84, + 0x63, 0x02, 0x00, 0xbe, 0x21, 0xe9, 0xd3, 0xba, 0x57, 0x07, 0xec, 0xa9, + 0xa4, 0x4b, 0xf2, 0x02, 0xb9, 0x34, 0x05, 0x7d, 0x07, 0x51, 0xd8, 0x18, + 0x24, 0x21, 0x8c, 0xbb, 0x10, 0x12, 0xf6, 0x26, 0x86, 0xd8, 0x51, 0xa9, + 0xac, 0x71, 0xa0, 0x04, 0xf3, 0xb9, 0x24, 0x57, 0xc4, 0x32, 0x34, 0x66, + 0xfe, 0xef, 0x5a, 0xc8, 0x1d, 0x12, 0x2d, 0x98, 0x24, 0x54, 0x22, 0x58, + 0x61, 0x12, 0x32, 0x40, 0xe1, 0x56, 0x4c, 0x68, 0x6b, 0x9a, 0x31, 0x45, + 0x05, 0x8a, 0x92, 0x01, 0x6c, 0x65, 0x42, 0x45, 0x8c, 0xdd, 0xd4, 0xbf, + 0xff, 0xff, 0xf4, 0x7f, 0xb7, 0xe7, 0x52, 0xe5, 0x15, 0x63, 0xd4, 0x1e, + 0x51, 0xa5, 0x00, 0x89, 0x81, 0x80, 0xe2, 0x04, 0x81, 0x81, 0x38, 0x0a, + 0x09, 0x84, 0x72, 0x9d, 0x81, 0xa1, 0xc6, 0x22, 0x59, 0x82, 0x8a, 0x07, + 0xb1, 0x80, 0x8c, 0x09, 0xa9, 0x83, 0x5e, 0x0d, 0xf1, 0x80, 0xc2, 0x04, + 0xe9, 0x89, 0x36, 0x1a, 0x41, 0x80, 0xd4, 0x02, 0xe3, 0x08, 0x30, 0x04, + 0x00, 0x44, 0x30, 0x4a, 0xc1, 0xd4, 0x30, 0x08, 0x40, 0x3a, 0x5f, 0x65, + 0xf0, 0xe1, 0x50, 0x9c, 0xe1, 0x7c, 0x38, 0x49, 0xc1, 0xd8, 0xf0, 0xbe, + 0xb0, 0xae, 0x8b, 0xf1, 0xbc, 0xc8, 0x52, 0xb0, 0x1f, 0xc5, 0xb4, 0xee, + 0x25, 0x87, 0x51, 0x08, 0x36, 0xff, 0xfb, 0xd4, 0x60, 0x2b, 0x88, 0x89, + 0x3f, 0x74, 0xbe, 0xab, 0xef, 0x7b, 0x70, 0x55, 0x2e, 0x48, 0x59, 0x0c, + 0x22, 0x6e, 0x23, 0xf9, 0xd0, 0xfa, 0x0f, 0xbd, 0xed, 0xc1, 0x56, 0xb8, + 0xa1, 0x9c, 0x31, 0x89, 0xb8, 0xc9, 0x68, 0xbb, 0x3a, 0x3a, 0x8b, 0xe1, + 0x5f, 0x18, 0xfc, 0x4e, 0x9e, 0x68, 0xb3, 0xca, 0x1a, 0xec, 0x7f, 0x94, + 0x75, 0x74, 0x69, 0x94, 0x23, 0xf9, 0x04, 0xa1, 0x7e, 0x5c, 0x89, 0x0a, + 0x4c, 0x94, 0x84, 0x99, 0x00, 0xa8, 0x5d, 0x29, 0x10, 0x86, 0xd3, 0xc8, + 0xb8, 0x40, 0x55, 0x1c, 0xce, 0xd2, 0xe6, 0x59, 0xd4, 0x5a, 0x33, 0x3f, + 0x37, 0x09, 0x42, 0x71, 0xb0, 0x94, 0x8f, 0x43, 0x5a, 0x16, 0x8e, 0x58, + 0x54, 0x2d, 0xb3, 0x27, 0x97, 0x4f, 0x15, 0x8a, 0x15, 0x03, 0x3a, 0xe9, + 0x5c, 0xe0, 0x6e, 0x21, 0xa7, 0x3b, 0xe8, 0x47, 0x93, 0x02, 0xad, 0x62, + 0xe9, 0xf4, 0xab, 0x1b, 0x0a, 0x95, 0xf2, 0xa9, 0xcd, 0xc9, 0x16, 0xdf, + 0x01, 0x5f, 0x05, 0x74, 0xac, 0x48, 0x1f, 0xa9, 0x03, 0xcd, 0xc5, 0x48, + 0xf1, 0x06, 0x89, 0x43, 0xd1, 0x2a, 0x2d, 0xdd, 0x3f, 0x05, 0xb5, 0x72, + 0xab, 0x47, 0x48, 0xd9, 0x2b, 0x6b, 0xe5, 0x6a, 0x79, 0xc9, 0xd2, 0xaa, + 0x0a, 0xe1, 0x44, 0xdc, 0xde, 0xf1, 0x91, 0x1e, 0xe0, 0xab, 0xb2, 0xda, + 0xae, 0x0b, 0x83, 0x8d, 0x96, 0xdf, 0x29, 0x95, 0xcf, 0xa6, 0x95, 0x93, + 0x4e, 0x51, 0xe2, 0xb0, 0x33, 0x34, 0xb9, 0xa9, 0xa5, 0x3f, 0x18, 0xae, + 0xd4, 0xab, 0x37, 0xe0, 0x26, 0x5b, 0xd4, 0x09, 0x04, 0x73, 0x79, 0xf3, + 0x0d, 0x80, 0xbe, 0x4f, 0x31, 0x63, 0x33, 0x97, 0x43, 0x51, 0xe0, 0xd9, + 0x96, 0x40, 0x86, 0x10, 0x84, 0xf0, 0x07, 0x29, 0xb1, 0xda, 0x00, 0x00, + 0x92, 0x05, 0x00, 0x0b, 0x6e, 0xba, 0xe6, 0xc3, 0xf0, 0x99, 0x40, 0x88, + 0x43, 0xc4, 0x2b, 0x4e, 0x03, 0x47, 0x01, 0xf5, 0xfc, 0x91, 0x17, 0xe8, + 0x27, 0xa0, 0x2b, 0x23, 0xaa, 0xba, 0xb1, 0xdc, 0xab, 0x2d, 0x4d, 0x62, + 0x3e, 0xc9, 0x63, 0x23, 0xe7, 0xff, 0xf4, 0x7e, 0x9f, 0x5f, 0x75, 0xdf, + 0x27, 0xfe, 0xda, 0x6d, 0xac, 0x97, 0xd1, 0x7f, 0x9d, 0xbf, 0x6e, 0xda, + 0xe9, 0xdd, 0x11, 0xe6, 0x49, 0x8a, 0x46, 0x3a, 0x05, 0x39, 0x1d, 0x03, + 0x9d, 0x85, 0x8b, 0x67, 0x30, 0xb4, 0x14, 0xec, 0xcc, 0xa3, 0x07, 0x30, + 0x1a, 0xc0, 0x5e, 0x30, 0x33, 0x00, 0xad, 0x30, 0xc4, 0xcb, 0xfc, 0x36, + 0x31, 0xc2, 0x25, 0x30, 0x70, 0xc0, 0xaa, 0x30, 0x38, 0x80, 0x79, 0x30, + 0xb6, 0x00, 0x86, 0x30, 0x1a, 0x01, 0x7f, 0x30, 0xf9, 0x01, 0x85, 0x30, + 0x16, 0x40, 0x3d, 0x22, 0x02, 0x44, 0x64, 0x04, 0xb3, 0x00, 0xe4, 0x1d, + 0xb0, 0x00, 0x02, 0x68, 0xf4, 0x70, 0xc8, 0xd6, 0x9f, 0x4b, 0x1e, 0x6e, + 0xe2, 0x15, 0xcb, 0x02, 0x5d, 0x5c, 0xae, 0x3d, 0x08, 0xc1, 0xdc, 0x76, + 0x17, 0x75, 0x23, 0x89, 0xbc, 0x98, 0x2e, 0x06, 0x19, 0x39, 0x61, 0x59, + 0x42, 0x50, 0xa4, 0xc1, 0xf8, 0x9c, 0x44, 0xa1, 0xe8, 0xf2, 0xf2, 0x9b, + 0x48, 0x27, 0x0b, 0xe2, 0x3e, 0x2c, 0xac, 0x66, 0x5a, 0xec, 0xd9, 0x38, + 0x15, 0xca, 0xb3, 0x29, 0x14, 0xe0, 0xb8, 0x48, 0xa8, 0xd5, 0xcb, 0x93, + 0x71, 0x28, 0x7e, 0x1e, 0x29, 0x22, 0xc4, 0x8b, 0x51, 0x33, 0x2e, 0x18, + 0x9b, 0x15, 0x33, 0x69, 0x5c, 0x9b, 0x84, 0x96, 0x3a, 0xd9, 0x27, 0x5c, + 0xa9, 0x97, 0x4f, 0x54, 0x6d, 0x4a, 0x35, 0x7a, 0x1c, 0xab, 0x6f, 0x99, + 0xae, 0x76, 0x55, 0x4b, 0x5b, 0x62, 0x99, 0x1e, 0x9d, 0x43, 0xdd, 0x21, + 0xcc, 0x0e, 0x4a, 0xe4, 0xd3, 0xc5, 0x3a, 0x08, 0xea, 0x47, 0xa2, 0xe8, + 0x7e, 0xb2, 0xa8, 0x51, 0xe9, 0xe4, 0x5a, 0xa9, 0xda, 0x31, 0x84, 0xe0, + 0x33, 0x22, 0xaa, 0xa1, 0x45, 0x43, 0x4d, 0xd6, 0x73, 0xb9, 0x3a, 0xca, + 0x86, 0x24, 0x59, 0x18, 0x9f, 0x9c, 0x08, 0x5a, 0x21, 0x6b, 0xa7, 0xd0, + 0x11, 0x5f, 0x2f, 0xd1, 0x54, 0xf5, 0xe2, 0x5e, 0x35, 0x90, 0x2b, 0x52, + 0x30, 0x51, 0xd2, 0x8d, 0x0d, 0x6b, 0x96, 0xaa, 0xbc, 0xc5, 0xb3, 0x23, + 0xe6, 0x58, 0x2e, 0x13, 0xb4, 0xb9, 0xac, 0x33, 0xa8, 0x24, 0x78, 0xbc, + 0xf9, 0xf1, 0x3d, 0x60, 0x63, 0x51, 0xb9, 0x2c, 0x9c, 0x8a, 0xf6, 0x53, + 0xa1, 0x84, 0xde, 0x50, 0x54, 0xfc, 0x45, 0xae, 0x89, 0xe9, 0xc4, 0x58, + 0xd0, 0xa2, 0x36, 0x16, 0x90, 0xd4, 0x98, 0x20, 0x13, 0x02, 0x39, 0xe8, + 0xa8, 0x91, 0x00, 0x0a, 0xe0, 0x35, 0xb5, 0x6e, 0xe5, 0xa9, 0x66, 0x79, + 0x64, 0xd9, 0xa4, 0x77, 0x99, 0xc4, 0x2a, 0x7e, 0x7e, 0x59, 0x2c, 0x2c, + 0xd5, 0x0d, 0xed, 0x00, 0xb6, 0x0c, 0xa3, 0xee, 0x94, 0x33, 0x6e, 0xe8, + 0x87, 0xca, 0x79, 0x95, 0x0a, 0xa6, 0x45, 0x44, 0x6b, 0x59, 0xc8, 0xd7, + 0xae, 0x6f, 0xec, 0xde, 0x5e, 0x94, 0xff, 0xfb, 0xf2, 0x22, 0xbf, 0xfd, + 0x6f, 0xdb, 0xff, 0x7f, 0x4d, 0x3f, 0x93, 0xd9, 0xdd, 0x54, 0x75, 0x73, + 0xc8, 0x28, 0x88, 0xe0, 0xa7, 0x53, 0x95, 0x19, 0x50, 0x8a, 0xa8, 0x30, + 0xca, 0x00, 0xf4, 0xd6, 0x80, 0x1c, 0x02, 0x31, 0x80, 0xe0, 0x00, 0x91, + 0x84, 0x06, 0x0b, 0xb9, 0xa1, 0xf6, 0x08, 0x81, 0x82, 0x32, 0x01, 0xc9, + 0x80, 0x98, 0x05, 0x31, 0x82, 0x16, 0x07, 0xe9, 0x80, 0x38, 0x01, 0xf1, + 0x81, 0x16, 0x04, 0x58, 0xc0, 0x00, 0x8e, 0xb9, 0x80, 0x02, 0x00, 0xc1, + 0x82, 0x18, 0x04, 0x41, 0x80, 0x36, 0x00, 0x72, 0xb0, 0xb7, 0x1f, 0xf1, + 0xd9, 0x13, 0xe7, 0x31, 0xfa, 0xff, 0xfb, 0xd4, 0x60, 0x20, 0x08, 0x88, + 0x9d, 0x75, 0x40, 0x33, 0xef, 0x7b, 0x70, 0x54, 0xce, 0x48, 0x79, 0x04, + 0x62, 0x6e, 0x63, 0x49, 0xd8, 0xfc, 0x2f, 0xbd, 0xed, 0xc1, 0x40, 0xb8, + 0x22, 0x30, 0x12, 0x89, 0xb9, 0x71, 0xa2, 0x4e, 0x62, 0xde, 0x9a, 0x2e, + 0xa7, 0x72, 0x84, 0x71, 0x17, 0x43, 0x60, 0x82, 0x90, 0x53, 0x7c, 0x98, + 0x2e, 0x89, 0xf8, 0x93, 0x01, 0x94, 0xd0, 0x90, 0xc3, 0x6b, 0x7e, 0x8f, + 0x2f, 0x85, 0x31, 0x7a, 0x84, 0xda, 0x63, 0xb8, 0xa7, 0xd9, 0xd9, 0xd5, + 0xa3, 0xd2, 0xfd, 0xc4, 0xb1, 0x90, 0x13, 0xd1, 0x32, 0x9d, 0xd2, 0x1c, + 0x4f, 0x15, 0x0a, 0x65, 0x21, 0xc6, 0x86, 0x2a, 0x88, 0x51, 0xbc, 0xdc, + 0xb4, 0x4d, 0x11, 0x09, 0xd1, 0xc0, 0x4e, 0xda, 0x5e, 0x2b, 0x07, 0x39, + 0xb0, 0x65, 0x17, 0xc4, 0x6a, 0x99, 0x84, 0x83, 0xbe, 0x4d, 0x33, 0x35, + 0xbe, 0x5d, 0xba, 0x42, 0xd5, 0xe9, 0x56, 0xe8, 0x0a, 0xf6, 0x36, 0xe4, + 0x8a, 0xa2, 0x02, 0x7f, 0x6c, 0x10, 0x15, 0xd6, 0x59, 0x87, 0x95, 0xf8, + 0xab, 0x71, 0x65, 0x70, 0x92, 0x32, 0xf2, 0xbe, 0x1b, 0x63, 0x1c, 0x47, + 0x05, 0x2b, 0xc6, 0xa7, 0xb5, 0x99, 0xf6, 0xdf, 0xb8, 0x5b, 0xc5, 0xf3, + 0xc0, 0x85, 0x7d, 0xb8, 0xde, 0x47, 0x07, 0x99, 0x57, 0x35, 0x42, 0x99, + 0xc6, 0xd1, 0xf1, 0x06, 0x0d, 0xa3, 0x33, 0xed, 0xdc, 0x4b, 0x42, 0x65, + 0xbb, 0x1c, 0x16, 0xe8, 0x31, 0x58, 0x24, 0xc3, 0xfc, 0xc0, 0xc5, 0x58, + 0x60, 0x3e, 0xbe, 0x23, 0xba, 0x7c, 0xf1, 0xeb, 0x14, 0x78, 0x99, 0x6e, + 0x43, 0x56, 0xe4, 0x61, 0x46, 0xc6, 0xd3, 0xc3, 0x80, 0xc1, 0x45, 0xae, + 0x6f, 0x44, 0x25, 0x81, 0x65, 0xda, 0x8c, 0x38, 0x90, 0x27, 0x72, 0x61, + 0xd8, 0x00, 0x07, 0x1b, 0x5f, 0x20, 0xa4, 0x46, 0x67, 0x00, 0x04, 0x3f, + 0x3e, 0x87, 0x0c, 0x55, 0x0f, 0xcb, 0xc1, 0xf0, 0x8d, 0xe6, 0x70, 0xfa, + 0xea, 0x7a, 0x9c, 0xb9, 0x3b, 0x7d, 0xbe, 0xd2, 0xb2, 0xa8, 0xb4, 0x3b, + 0x10, 0x8d, 0x63, 0xa2, 0xce, 0xee, 0x54, 0xb0, 0x2c, 0xc8, 0x57, 0xfa, + 0xfd, 0xdd, 0x1e, 0xb4, 0x64, 0xae, 0xdf, 0xba, 0x27, 0xd9, 0x9b, 0xff, + 0xfe, 0xff, 0xff, 0xed, 0xff, 0xe9, 0xff, 0xd5, 0x52, 0x45, 0x2b, 0xbb, + 0x2d, 0x15, 0x0a, 0x33, 0x1c, 0x8c, 0x5b, 0x98, 0xe3, 0x21, 0x84, 0x0a, + 0x51, 0x23, 0x01, 0x80, 0x02, 0x01, 0x79, 0x80, 0xa4, 0x05, 0x11, 0x83, + 0xa2, 0x53, 0x39, 0xa1, 0x42, 0x1a, 0x21, 0x81, 0xd6, 0x03, 0xe9, 0x80, + 0x20, 0x02, 0x69, 0x84, 0x12, 0x06, 0xe1, 0x80, 0x52, 0x01, 0x80, 0xe0, + 0x0d, 0x06, 0x00, 0x60, 0x00, 0x28, 0x4b, 0x1a, 0x00, 0x10, 0xc1, 0x93, + 0x02, 0x88, 0xac, 0x06, 0x07, 0x38, 0x5a, 0x22, 0x13, 0xd3, 0xcc, 0xfc, + 0x80, 0x79, 0xb7, 0x2b, 0x8e, 0xd2, 0x7a, 0x6a, 0x0c, 0x11, 0xeb, 0x55, + 0xac, 0x8b, 0x69, 0x90, 0xe0, 0xe6, 0x5b, 0xdf, 0x36, 0x16, 0xf5, 0xc8, + 0xae, 0xa7, 0x19, 0x94, 0x69, 0xc3, 0x22, 0x2e, 0xd2, 0xe8, 0x84, 0x34, + 0x94, 0x1e, 0x02, 0xbc, 0x42, 0x49, 0x7a, 0x12, 0xa5, 0x1d, 0xd0, 0x89, + 0xfa, 0x60, 0xd2, 0xa2, 0x85, 0x78, 0xf1, 0x3b, 0x58, 0xd5, 0x88, 0x05, + 0xf6, 0x14, 0x62, 0x24, 0x9b, 0xae, 0xb7, 0x0d, 0xc6, 0x1b, 0x5d, 0x25, + 0x44, 0xad, 0xae, 0x90, 0x98, 0x0f, 0x61, 0xa8, 0xd4, 0xcc, 0xae, 0x4b, + 0xd7, 0x63, 0x6b, 0xca, 0x17, 0x11, 0x10, 0x9f, 0x51, 0x40, 0x6a, 0x61, + 0x85, 0x3d, 0x21, 0xad, 0xba, 0x69, 0x49, 0xb2, 0x31, 0x38, 0xe5, 0x92, + 0x66, 0xc5, 0xf5, 0x7a, 0x7b, 0x06, 0x84, 0x8c, 0x0b, 0xa9, 0x59, 0xa3, + 0x35, 0x38, 0x2a, 0x99, 0x9f, 0x1e, 0x89, 0xc7, 0xaf, 0xce, 0xaa, 0x39, + 0xe2, 0x2c, 0x0b, 0xa9, 0x54, 0x68, 0xc6, 0xe8, 0xa8, 0x7b, 0xa6, 0xe5, + 0x0e, 0x23, 0xb7, 0xb2, 0xb9, 0x39, 0x36, 0x23, 0x9b, 0x67, 0x84, 0xde, + 0xca, 0x91, 0x5d, 0xc5, 0x55, 0xc7, 0xdc, 0xf9, 0x73, 0x49, 0x46, 0x53, + 0xd9, 0x76, 0xd8, 0xe6, 0xe9, 0x82, 0x27, 0x8f, 0x13, 0xb3, 0x39, 0x59, + 0x95, 0x1a, 0xb4, 0xda, 0x88, 0x7c, 0x78, 0x43, 0x78, 0xb9, 0x73, 0x61, + 0x48, 0x2e, 0xd6, 0x53, 0xe9, 0x97, 0x0c, 0x1d, 0x06, 0x59, 0x1b, 0x3a, + 0x4d, 0x26, 0x11, 0x77, 0x39, 0x0a, 0x03, 0xd8, 0xc5, 0x53, 0x18, 0x63, + 0xa4, 0x49, 0x81, 0x22, 0x5b, 0xd4, 0x66, 0xd8, 0x09, 0x4f, 0xbf, 0xd0, + 0x7b, 0x38, 0x44, 0xcb, 0x3d, 0x64, 0xab, 0x5d, 0x0a, 0x08, 0xc3, 0x87, + 0xf9, 0xe5, 0x23, 0x6c, 0x8e, 0x6f, 0x74, 0xa3, 0x2d, 0x6c, 0x4d, 0x5c, + 0x8f, 0xb6, 0x86, 0x42, 0xac, 0xea, 0x56, 0x2d, 0xcc, 0xe6, 0xb1, 0x48, + 0x88, 0x55, 0xa2, 0xab, 0x9d, 0xa5, 0x35, 0xed, 0x95, 0x5d, 0x17, 0xff, + 0xb7, 0xbf, 0x56, 0x6f, 0xbf, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xa7, 0xfd, + 0x68, 0xcd, 0x62, 0x4b, 0x33, 0x1f, 0x2d, 0x87, 0x7a, 0x31, 0x48, 0x83, + 0xfd, 0x93, 0x99, 0xc2, 0x00, 0x20, 0x81, 0x80, 0x80, 0x2c, 0x95, 0x03, + 0x80, 0xc2, 0x87, 0xd2, 0xcd, 0xfc, 0x4f, 0x08, 0xc0, 0x44, 0x32, 0x4c, + 0x06, 0x01, 0x9c, 0xca, 0x70, 0x29, 0x88, 0x81, 0x20, 0xc2, 0x1c, 0x28, + 0x51, 0xe4, 0xc0, 0x08, 0x08, 0x0c, 0x00, 0x81, 0x54, 0xc4, 0x88, 0x7a, + 0x4c, 0x04, 0xc0, 0x1c, 0xb7, 0x80, 0xd3, 0x8a, 0xa1, 0x53, 0x1d, 0x63, + 0x6c, 0x73, 0xa8, 0xd5, 0x47, 0x29, 0x63, 0x10, 0xf5, 0xc9, 0xea, 0xd6, + 0x5f, 0xd0, 0xc3, 0x4d, 0x1c, 0xff, 0xfb, 0xd4, 0x60, 0x24, 0x8a, 0x08, + 0xf7, 0x75, 0xbe, 0xab, 0xcf, 0x7b, 0x70, 0x53, 0xce, 0x88, 0x69, 0x0c, + 0x22, 0x6e, 0x62, 0xed, 0xd6, 0xfa, 0x0f, 0x3d, 0xed, 0xc0, 0xff, 0x06, + 0x62, 0xf4, 0x10, 0x8c, 0x9c, 0x2c, 0xe8, 0x82, 0x14, 0x7b, 0x9a, 0xc3, + 0x04, 0x23, 0xcc, 0xa7, 0x79, 0x18, 0x3f, 0xcc, 0x93, 0x4d, 0x06, 0x7e, + 0x24, 0x4f, 0xe6, 0x72, 0xe5, 0x3b, 0x51, 0xcc, 0x5f, 0xd5, 0xf6, 0x3a, + 0x50, 0xb3, 0xa0, 0xfb, 0x6d, 0x52, 0xbd, 0x3a, 0x49, 0x6a, 0x7d, 0x85, + 0x5e, 0x61, 0x27, 0x67, 0x32, 0x9f, 0xc5, 0x61, 0x3a, 0x0c, 0x04, 0x59, + 0xe6, 0xa8, 0x79, 0x2d, 0x8e, 0xf4, 0x35, 0x4a, 0xd4, 0x97, 0x2d, 0x88, + 0x32, 0x85, 0x81, 0x12, 0x5c, 0xe4, 0x80, 0x7a, 0x54, 0xe7, 0x69, 0x4c, + 0xc0, 0x6c, 0x56, 0x39, 0xab, 0x59, 0x3a, 0x41, 0xc2, 0x1c, 0x56, 0x27, + 0xaf, 0x2c, 0xa5, 0x3f, 0x11, 0xcf, 0x15, 0x5b, 0x30, 0xdc, 0xd7, 0x2d, + 0x10, 0xcd, 0xc4, 0x83, 0xf6, 0x52, 0x52, 0x7f, 0xaa, 0x1c, 0x11, 0x6d, + 0xae, 0xdf, 0xae, 0x9c, 0x98, 0x3b, 0x52, 0x1c, 0xd4, 0xc6, 0x8e, 0x63, + 0x4e, 0x1b, 0xf0, 0x20, 0x21, 0xeb, 0x98, 0xc7, 0xf4, 0xca, 0xb5, 0x7a, + 0xa6, 0x13, 0x1d, 0x93, 0xf1, 0xee, 0xfd, 0x58, 0xaf, 0xda, 0x7a, 0x64, + 0x5b, 0xe5, 0xf8, 0x75, 0x7e, 0xde, 0x7a, 0xb6, 0xa9, 0x6e, 0xaf, 0x56, + 0x3d, 0xdc, 0x05, 0x33, 0xd4, 0xba, 0x65, 0x13, 0x3b, 0xc5, 0xd4, 0x8e, + 0x2f, 0xa2, 0x23, 0x58, 0xe6, 0x57, 0x8e, 0x74, 0xe2, 0xb9, 0x76, 0xc4, + 0x74, 0x56, 0x36, 0xa8, 0x50, 0x9d, 0xa4, 0xfc, 0x9c, 0x0b, 0x98, 0xe2, + 0x29, 0x44, 0xfc, 0xbf, 0xa1, 0x61, 0xaa, 0x15, 0x69, 0x53, 0xdc, 0x70, + 0x88, 0x91, 0x9a, 0x00, 0x02, 0xc8, 0xd7, 0x40, 0x17, 0x08, 0x3a, 0x6a, + 0x80, 0xe2, 0x57, 0xd0, 0xc5, 0x1c, 0x88, 0xb1, 0x57, 0x6e, 0x2c, 0xe7, + 0xcf, 0x36, 0xc7, 0x18, 0x8b, 0xf0, 0xb2, 0x3a, 0x14, 0xca, 0xa1, 0x99, + 0x59, 0x23, 0xa6, 0xcb, 0xce, 0xfd, 0xd5, 0x0e, 0xcd, 0x9a, 0xd6, 0xa3, + 0x9c, 0xca, 0x8e, 0x84, 0xfd, 0x6b, 0xee, 0xff, 0xf7, 0xec, 0xdf, 0xfa, + 0xff, 0xff, 0xff, 0xe9, 0xfd, 0x97, 0x64, 0x75, 0x99, 0x37, 0x63, 0x11, + 0x9d, 0x0e, 0x79, 0x64, 0x56, 0x90, 0x45, 0x8e, 0xf1, 0x04, 0x02, 0x21, + 0xa6, 0x04, 0xb1, 0x83, 0x90, 0x3a, 0x98, 0x67, 0x84, 0xc1, 0x93, 0x66, + 0x50, 0x9d, 0x39, 0x38, 0x51, 0xa2, 0x30, 0x40, 0x18, 0x86, 0x87, 0x51, + 0x89, 0xc0, 0x9d, 0xad, 0xd0, 0x00, 0x5d, 0x18, 0x02, 0x80, 0xa1, 0x80, + 0x00, 0x00, 0x98, 0x08, 0x81, 0x11, 0x86, 0x51, 0x29, 0x00, 0x81, 0x18, + 0x38, 0x00, 0x55, 0xaa, 0x62, 0x8b, 0x42, 0x02, 0x4c, 0xd5, 0x27, 0xe5, + 0x9d, 0x29, 0xc9, 0xd1, 0x48, 0x9b, 0x52, 0x0c, 0xe7, 0x34, 0xb0, 0xef, + 0x72, 0x35, 0x9b, 0x5e, 0xaa, 0x51, 0x30, 0x94, 0x2a, 0xe2, 0x52, 0x9b, + 0x73, 0x33, 0xc3, 0xad, 0x0d, 0x3a, 0xcf, 0xd7, 0x8c, 0x0b, 0xb6, 0xf5, + 0x01, 0x01, 0x21, 0x4c, 0x44, 0xc9, 0x65, 0x5a, 0x87, 0x23, 0xdc, 0x4c, + 0x84, 0xf3, 0x41, 0xf6, 0xd4, 0xa4, 0x4f, 0xa3, 0x54, 0x28, 0x43, 0x62, + 0xb6, 0x02, 0x99, 0x58, 0xba, 0x78, 0xa4, 0x76, 0xc8, 0xae, 0x8a, 0xde, + 0x7e, 0x33, 0x36, 0xb9, 0x4b, 0x22, 0x92, 0x76, 0xf3, 0x2d, 0x1d, 0x6a, + 0x29, 0x62, 0x31, 0xad, 0xac, 0xa7, 0x64, 0x7e, 0x90, 0xbb, 0xe7, 0x24, + 0xd9, 0x92, 0xae, 0x71, 0x7e, 0xfd, 0xa5, 0xfa, 0x16, 0xe7, 0x59, 0xd7, + 0x6c, 0x0e, 0x92, 0x0e, 0x0a, 0xda, 0xb7, 0x26, 0x22, 0x3a, 0x51, 0xb0, + 0x9f, 0x6a, 0x16, 0x66, 0x56, 0xf6, 0x77, 0x1a, 0x3e, 0x3c, 0xd5, 0x0c, + 0x69, 0x25, 0x7a, 0x79, 0x0f, 0x7c, 0xa9, 0x53, 0xa4, 0x10, 0xb7, 0x16, + 0xe9, 0xd5, 0x8f, 0x95, 0xe8, 0x65, 0x99, 0x9d, 0xfa, 0xbb, 0x5c, 0xe1, + 0x49, 0x2a, 0xb9, 0xc6, 0x22, 0xed, 0xc1, 0x4d, 0x5a, 0x4c, 0xb0, 0xd6, + 0xd6, 0xba, 0x39, 0x95, 0xae, 0xa5, 0xdb, 0x14, 0x59, 0x95, 0xa7, 0x2c, + 0x64, 0x2d, 0x87, 0x44, 0xd5, 0x5c, 0xce, 0x8d, 0x6f, 0x55, 0x12, 0xb5, + 0x22, 0x12, 0x4c, 0x48, 0x21, 0x96, 0x82, 0x42, 0xcd, 0xa4, 0x0c, 0x05, + 0xc4, 0x23, 0xdc, 0xf3, 0x37, 0x60, 0xa5, 0x04, 0x30, 0x70, 0x28, 0x83, + 0xf5, 0x54, 0xf4, 0x06, 0x31, 0x5f, 0x00, 0x04, 0x01, 0x96, 0x37, 0x1b, + 0x64, 0x01, 0xd1, 0x13, 0xa3, 0xaf, 0xcd, 0xb6, 0x27, 0x40, 0x35, 0xbd, + 0x2b, 0xb9, 0x4e, 0x70, 0xdb, 0x9c, 0xc4, 0x9d, 0x2a, 0x04, 0x41, 0x64, + 0xb8, 0xe5, 0xad, 0x1a, 0x54, 0xc9, 0x17, 0x87, 0xc2, 0x85, 0xcb, 0xd8, + 0x08, 0x9a, 0xde, 0x35, 0x62, 0x8e, 0xee, 0xd1, 0xff, 0xff, 0xff, 0xff, + 0xe9, 0xde, 0x34, 0x5d, 0x47, 0x58, 0x94, 0x50, 0xf0, 0x4e, 0x08, 0x02, + 0x00, 0x84, 0x30, 0x37, 0x40, 0xcb, 0x30, 0xfe, 0x84, 0x74, 0x34, 0xc6, + 0x09, 0x33, 0x30, 0xd8, 0x80, 0x39, 0x28, 0x06, 0xf8, 0xc1, 0x2d, 0x00, + 0x88, 0x48, 0x09, 0x33, 0x02, 0x70, 0x08, 0x32, 0xe3, 0x15, 0x80, 0x1e, + 0x50, 0x02, 0xe1, 0x82, 0xb2, 0x0b, 0xa9, 0x80, 0xb8, 0x00, 0x43, 0xa4, + 0xbe, 0x43, 0x8c, 0x53, 0xb0, 0x5e, 0x8b, 0xd5, 0xcb, 0x02, 0xbc, 0xf8, + 0x31, 0xd3, 0xe4, 0xb8, 0xc8, 0x5d, 0x91, 0x6d, 0xe4, 0xfe, 0xa4, 0xac, + 0xe8, 0x2f, 0xc8, 0x72, 0xc1, 0x92, 0x4c, 0x1f, 0x0b, 0x20, 0xea, 0x26, + 0x6d, 0x88, 0xb4, 0x28, 0xe2, 0xff, 0xfb, 0xd4, 0x60, 0x2d, 0x8d, 0x89, + 0x22, 0x76, 0x3e, 0x8b, 0xef, 0x7b, 0x70, 0x52, 0x6e, 0x58, 0x7a, 0x08, + 0xa2, 0x6e, 0x64, 0xb9, 0xd6, 0xf8, 0x2f, 0x3d, 0xed, 0xc1, 0x3e, 0x13, + 0x22, 0xf4, 0x10, 0x8d, 0x2c, 0x51, 0x1a, 0xe9, 0x72, 0xd8, 0x5c, 0xa2, + 0x9c, 0xc6, 0x72, 0x01, 0x28, 0xc6, 0xbe, 0x9d, 0x50, 0x21, 0x2c, 0x88, + 0x4a, 0xc2, 0x70, 0x5b, 0xd7, 0x2c, 0x2a, 0x43, 0xf0, 0x95, 0x21, 0xd0, + 0x5f, 0x97, 0xa5, 0x29, 0xdc, 0x8c, 0x43, 0x54, 0xca, 0x51, 0xe0, 0xd3, + 0x11, 0x51, 0x0d, 0x91, 0x40, 0xca, 0x78, 0xc7, 0x2f, 0xec, 0x0a, 0xa5, + 0x5b, 0x72, 0xd1, 0x73, 0x8a, 0xc6, 0xd4, 0xc0, 0x97, 0x8a, 0xa9, 0x63, + 0x69, 0x5d, 0x97, 0x67, 0xec, 0x29, 0xe4, 0xca, 0x79, 0xa0, 0xf3, 0x56, + 0xc4, 0x5f, 0x61, 0x42, 0xf2, 0xcc, 0x58, 0x61, 0x98, 0x29, 0xf5, 0xd3, + 0xf6, 0x14, 0xbb, 0xa5, 0x5b, 0x02, 0xfa, 0x84, 0xe0, 0x56, 0xb1, 0x2d, + 0xb4, 0x25, 0xd9, 0x15, 0xca, 0x07, 0xcb, 0x28, 0x29, 0x5e, 0xb5, 0x2a, + 0x60, 0x42, 0x8a, 0xad, 0x67, 0x53, 0x2f, 0x37, 0x39, 0xe5, 0xa5, 0x5c, + 0x7e, 0xd5, 0xda, 0x05, 0x08, 0xbb, 0x8c, 0x8d, 0x2b, 0x84, 0xaa, 0x35, + 0x65, 0x38, 0xb0, 0x6f, 0x43, 0xf3, 0x56, 0x24, 0x5b, 0xa3, 0xd0, 0xc9, + 0x20, 0x23, 0x1f, 0x44, 0xc9, 0xfe, 0xe9, 0x36, 0x8c, 0x85, 0x3a, 0x3f, + 0x6a, 0x34, 0xf1, 0xfa, 0x7f, 0x1f, 0xea, 0x65, 0x1a, 0x79, 0x0a, 0x5d, + 0x35, 0x51, 0xf9, 0x3f, 0x3b, 0x4b, 0xa1, 0x05, 0x32, 0x44, 0xb0, 0x71, + 0x92, 0x80, 0x94, 0x92, 0xa2, 0xc2, 0x2b, 0xa1, 0x90, 0x0b, 0xb2, 0xd8, + 0xa0, 0x3e, 0xc0, 0x40, 0x28, 0x09, 0x66, 0x89, 0x01, 0xeb, 0x75, 0x38, + 0x55, 0xe4, 0xd1, 0xae, 0x53, 0x9a, 0xca, 0xf3, 0x7f, 0x4d, 0x67, 0x44, + 0x97, 0xf6, 0x42, 0x08, 0x00, 0x83, 0x04, 0x0e, 0x1e, 0x08, 0x46, 0x87, + 0xee, 0xcc, 0x62, 0x29, 0xea, 0x43, 0x31, 0x8c, 0x97, 0x67, 0x66, 0x35, + 0xb6, 0x6a, 0xff, 0xff, 0xed, 0xcc, 0xca, 0xff, 0x67, 0x7f, 0xdb, 0xd3, + 0xff, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xf4, 0xd9, 0xf5, 0x4b, 0x2d, 0x51, + 0x8a, 0xa8, 0x6a, 0xa1, 0x10, 0xb3, 0x32, 0x48, 0x53, 0x1c, 0x43, 0x69, + 0x10, 0x8c, 0x15, 0xc2, 0x58, 0xc0, 0xf8, 0x5c, 0xcc, 0x06, 0xfb, 0x48, + 0xf7, 0x95, 0x79, 0xcc, 0x62, 0xc5, 0x30, 0xc1, 0x68, 0x37, 0x4c, 0x1d, + 0x82, 0xf8, 0x1a, 0x0c, 0x66, 0x2b, 0x20, 0xbc, 0x60, 0x30, 0x01, 0xcf, + 0xa1, 0x80, 0x18, 0x10, 0x18, 0xd5, 0x08, 0x20, 0x08, 0x15, 0x1a, 0x08, + 0x15, 0x8e, 0xb5, 0x19, 0x2f, 0x65, 0x3f, 0xcd, 0x02, 0xbc, 0x35, 0x67, + 0x19, 0xb4, 0xaa, 0x70, 0x13, 0xc2, 0x0e, 0x3f, 0x19, 0x4b, 0x09, 0x3d, + 0x16, 0x03, 0xec, 0x92, 0x24, 0xcf, 0x15, 0xd0, 0xf8, 0x38, 0x4c, 0x02, + 0x62, 0xbd, 0x1c, 0xa0, 0x36, 0x07, 0xc3, 0x98, 0xc6, 0x2f, 0x4a, 0xd5, + 0x53, 0x29, 0x75, 0x42, 0xcf, 0x24, 0x61, 0x26, 0x0e, 0x73, 0xc5, 0x19, + 0x87, 0x22, 0x64, 0xdc, 0xbb, 0x7e, 0x9f, 0x76, 0x5f, 0x8d, 0x17, 0xd0, + 0x52, 0x51, 0x12, 0xa8, 0xc5, 0xf8, 0x44, 0x04, 0x9c, 0x28, 0x11, 0x84, + 0xb2, 0x11, 0xfb, 0x11, 0x0e, 0x69, 0x55, 0x23, 0x55, 0x4a, 0x33, 0xd8, + 0xd2, 0x3f, 0x14, 0xec, 0x6f, 0x5b, 0xd5, 0x6a, 0xd4, 0x2d, 0x01, 0x09, + 0x54, 0x5d, 0x97, 0x2a, 0xb2, 0xff, 0x05, 0x40, 0xa3, 0x7a, 0xd0, 0x99, + 0x42, 0xce, 0xe3, 0xc6, 0x43, 0x2f, 0x4a, 0x83, 0x2d, 0xc8, 0xfb, 0x3c, + 0x1c, 0xce, 0xd7, 0x13, 0x8d, 0x91, 0x42, 0xa1, 0x88, 0xd3, 0xa7, 0x06, + 0x07, 0xeb, 0x2d, 0x4e, 0x4b, 0xf7, 0x46, 0x2e, 0x9c, 0x4e, 0x78, 0xac, + 0x4d, 0xcb, 0x48, 0x82, 0x29, 0xbc, 0xca, 0xdb, 0x72, 0xd9, 0xd4, 0x82, + 0x91, 0x76, 0x8e, 0x4d, 0x4c, 0x93, 0x6f, 0x64, 0x6a, 0x9a, 0xb1, 0xcf, + 0xd6, 0x07, 0xdd, 0x50, 0x75, 0x65, 0x5e, 0xc0, 0xa1, 0xa2, 0x4d, 0x60, + 0xe0, 0x42, 0x51, 0x89, 0xe5, 0xf7, 0x71, 0x61, 0x2b, 0xd4, 0xec, 0xf0, + 0x91, 0x8b, 0x94, 0x0b, 0x7b, 0x51, 0xd8, 0x87, 0x68, 0x60, 0x97, 0xc3, + 0x8d, 0x0a, 0x36, 0xdc, 0x49, 0xcb, 0x61, 0x2a, 0x4f, 0x3c, 0x13, 0xd2, + 0x84, 0x85, 0x10, 0xd2, 0xfc, 0x8b, 0x03, 0x3a, 0x4c, 0x4d, 0x80, 0xc4, + 0x2e, 0x65, 0xb5, 0x12, 0x4b, 0x93, 0xa1, 0xc7, 0x23, 0xb2, 0x32, 0x00, + 0xf1, 0xff, 0xe3, 0x50, 0xa9, 0x9a, 0x24, 0xc4, 0xcc, 0xc7, 0x22, 0x4d, + 0x18, 0xcf, 0xec, 0x30, 0x4b, 0x05, 0x91, 0xb3, 0x7c, 0x38, 0x41, 0x1a, + 0x35, 0xd6, 0x21, 0xbb, 0x0c, 0x4b, 0x8a, 0x1a, 0x60, 0x68, 0x6d, 0x02, + 0x8e, 0x01, 0x11, 0x63, 0x83, 0xf8, 0x95, 0x68, 0x0d, 0x06, 0xd9, 0x25, + 0xa1, 0x57, 0x90, 0x50, 0xca, 0xe1, 0xb5, 0x22, 0x35, 0x85, 0x87, 0x33, + 0xff, 0xff, 0x4a, 0x90, 0xa1, 0x67, 0x3d, 0x5a, 0xc5, 0x02, 0xe0, 0x33, + 0xe7, 0x11, 0x04, 0x0c, 0x04, 0x70, 0x0d, 0x8c, 0x0a, 0x40, 0x18, 0x4c, + 0x22, 0xf1, 0xce, 0x09, 0xa6, 0xe3, 0x30, 0x69, 0x40, 0x1c, 0x08, 0x04, + 0xe4, 0xc0, 0x84, 0x00, 0xb4, 0x0c, 0x04, 0x49, 0x82, 0x8c, 0x00, 0xd0, + 0x24, 0x00, 0x92, 0x80, 0x01, 0x53, 0xd4, 0xc1, 0xa9, 0x01, 0xe4, 0xc0, + 0x4a, 0x00, 0x4d, 0x93, 0x17, 0xd5, 0xc2, 0xa4, 0xae, 0x5c, 0x99, 0x64, + 0x3c, 0xa7, 0x6f, 0x4a, 0x17, 0x22, 0x12, 0xda, 0x57, 0x88, 0xfa, 0x1e, + 0x71, 0x31, 0x9c, 0x05, 0xe4, 0xff, 0xfb, 0xd4, 0x60, 0x25, 0x8e, 0x88, + 0xfd, 0x75, 0xbe, 0x8b, 0xef, 0x7b, 0x70, 0x50, 0xad, 0xc8, 0x79, 0x08, + 0x42, 0x6e, 0x24, 0x05, 0xd8, 0xfa, 0x0f, 0xbd, 0xed, 0xc1, 0x46, 0x12, + 0x22, 0x34, 0x22, 0x8d, 0x28, 0x9a, 0x22, 0xcb, 0x09, 0xe8, 0xaf, 0x90, + 0x53, 0x09, 0xe1, 0x2d, 0x39, 0x8d, 0x46, 0x03, 0x08, 0xe3, 0x42, 0x0b, + 0x03, 0x39, 0xba, 0x88, 0x3c, 0x99, 0xd5, 0x39, 0x64, 0x3a, 0xce, 0x85, + 0x0b, 0xc3, 0x5e, 0x57, 0x34, 0xdb, 0xd9, 0x4f, 0xd5, 0xf2, 0xfb, 0x01, + 0x3a, 0x4c, 0x91, 0xd8, 0xbb, 0x31, 0xd4, 0x94, 0x74, 0x7d, 0x9d, 0xa7, + 0xb3, 0x4a, 0xb1, 0x42, 0x64, 0xaf, 0x1b, 0xc9, 0x92, 0x52, 0x61, 0xbc, + 0x8f, 0x11, 0x6d, 0xda, 0x75, 0x3e, 0x7a, 0xc4, 0x59, 0x64, 0x52, 0x2a, + 0x63, 0x33, 0xa8, 0x50, 0x86, 0x52, 0xe2, 0x87, 0xb6, 0x35, 0xae, 0xb9, + 0xfa, 0xca, 0xde, 0xd6, 0xe4, 0x93, 0x6c, 0x39, 0x74, 0x90, 0x71, 0x89, + 0xb7, 0x8e, 0x28, 0xa4, 0x93, 0x31, 0xb2, 0x64, 0x9f, 0xec, 0xeb, 0x6e, + 0x48, 0x63, 0xa5, 0x7b, 0x32, 0xb9, 0xc1, 0xb1, 0x1a, 0xda, 0xed, 0x4f, + 0x15, 0xe2, 0x67, 0x69, 0x88, 0xed, 0xac, 0x19, 0x43, 0xd4, 0x8a, 0x96, + 0x34, 0xbb, 0x3a, 0x3c, 0xff, 0x7e, 0xda, 0xce, 0x92, 0x8f, 0x0d, 0xa9, + 0xc5, 0x57, 0x23, 0x92, 0xb7, 0x31, 0x28, 0xc8, 0xf0, 0xb6, 0x39, 0x24, + 0x5b, 0x51, 0x51, 0x55, 0xda, 0x44, 0xb4, 0xbb, 0x66, 0x7d, 0x19, 0xbd, + 0x1f, 0x57, 0xed, 0xeb, 0x6a, 0x47, 0x6f, 0x97, 0x49, 0x25, 0x13, 0x7a, + 0xbc, 0xff, 0x35, 0xd4, 0xcc, 0xcf, 0x15, 0x69, 0x72, 0x0e, 0xf4, 0x77, + 0x16, 0x38, 0x81, 0xe4, 0x7e, 0x0a, 0x49, 0xb4, 0x43, 0x07, 0x80, 0x1e, + 0x48, 0x10, 0x00, 0x05, 0x50, 0xdf, 0x40, 0x6d, 0x62, 0xa5, 0xa5, 0x52, + 0xfd, 0xe8, 0xac, 0xac, 0x83, 0xb2, 0x2b, 0x2a, 0x9d, 0xff, 0xd6, 0xff, + 0x5b, 0xdf, 0x7b, 0xad, 0xd5, 0x11, 0x5c, 0x84, 0x92, 0x52, 0xd9, 0xe8, + 0xfc, 0x51, 0xd1, 0x50, 0x95, 0x46, 0xf4, 0x3a, 0x26, 0x56, 0xb3, 0xba, + 0x5e, 0xaa, 0xe9, 0xdc, 0xef, 0x2d, 0xae, 0x42, 0x94, 0xf7, 0x46, 0xff, + 0x4f, 0xfd, 0x3f, 0xff, 0xfe, 0xdd, 0x3e, 0xd4, 0xd9, 0x6d, 0x44, 0x4a, + 0xb2, 0xbe, 0x92, 0x33, 0xd0, 0xc1, 0x08, 0x22, 0x9e, 0x88, 0x8c, 0x00, + 0xb0, 0x02, 0x4c, 0x06, 0xe0, 0x1f, 0x0c, 0x1b, 0xb1, 0x12, 0x4d, 0x09, + 0x30, 0x91, 0x0c, 0x0f, 0x30, 0x1a, 0xcc, 0x05, 0x20, 0x10, 0x8c, 0x07, + 0x90, 0x16, 0x49, 0x40, 0x22, 0x30, 0x38, 0xc0, 0xc5, 0x08, 0x00, 0x45, + 0x3f, 0x0c, 0x00, 0x30, 0x08, 0xcc, 0x19, 0xe0, 0x37, 0xc4, 0x80, 0x7b, + 0x5b, 0x8a, 0xb3, 0x46, 0x1a, 0x20, 0xdd, 0x25, 0xe1, 0x8a, 0x48, 0x43, + 0x92, 0x0a, 0x14, 0x86, 0x36, 0x23, 0x61, 0xa2, 0x95, 0x30, 0x89, 0x11, + 0x29, 0x20, 0x86, 0x2a, 0x9d, 0x94, 0xa1, 0x3c, 0xcd, 0x82, 0x0e, 0x8f, + 0x25, 0xf9, 0x2f, 0x25, 0x8d, 0x85, 0x85, 0x1e, 0x3c, 0x97, 0x2d, 0xca, + 0x84, 0x34, 0xf3, 0x2f, 0x84, 0x2d, 0x5e, 0x83, 0x6c, 0x4a, 0x3d, 0x3c, + 0x36, 0x6e, 0x97, 0xc3, 0xf0, 0x98, 0x9d, 0x67, 0x42, 0x81, 0xf9, 0xa8, + 0xd4, 0xf1, 0x08, 0x54, 0xc2, 0x39, 0x97, 0x68, 0x86, 0x78, 0xcf, 0x99, + 0x8d, 0xb3, 0xc9, 0x74, 0x6b, 0x2e, 0xd3, 0x66, 0x11, 0xfb, 0x73, 0x89, + 0x0c, 0x4b, 0x9e, 0x08, 0xfb, 0xa1, 0xab, 0x6c, 0xf1, 0xf6, 0xf5, 0x16, + 0xb2, 0xa7, 0x7e, 0x8e, 0x54, 0xbe, 0x46, 0x30, 0x1d, 0xc8, 0x72, 0x46, + 0xd0, 0x5e, 0xb9, 0x46, 0x4a, 0xb1, 0xa8, 0x6e, 0xf1, 0x89, 0xf2, 0xa5, + 0x40, 0x9d, 0x80, 0x8c, 0x4e, 0x31, 0xbb, 0x64, 0x6e, 0x38, 0x17, 0x70, + 0xac, 0xc8, 0xac, 0xc4, 0xe5, 0xfd, 0xeb, 0xe4, 0xc3, 0x5c, 0x35, 0xbc, + 0x37, 0x9f, 0xf0, 0x60, 0xb8, 0xc7, 0x50, 0xe1, 0x40, 0xdc, 0x74, 0xb6, + 0xc5, 0x92, 0x23, 0xd7, 0x06, 0x86, 0x09, 0xd5, 0xcc, 0xaa, 0x05, 0x0b, + 0x0a, 0x45, 0xf1, 0x28, 0x4a, 0x24, 0xe3, 0xca, 0x7f, 0xbf, 0x61, 0x4a, + 0x3b, 0x5a, 0x80, 0xd8, 0xc0, 0x89, 0x73, 0x62, 0x72, 0x8a, 0xea, 0x24, + 0x63, 0x29, 0x65, 0x10, 0xb6, 0xc8, 0x8c, 0x3c, 0xdf, 0x25, 0x17, 0xd3, + 0xa5, 0xbc, 0xd2, 0x76, 0x69, 0x27, 0x12, 0xa9, 0x27, 0x12, 0xb8, 0x71, + 0x0e, 0x72, 0x18, 0x67, 0xa6, 0x41, 0x1a, 0x52, 0x38, 0x1f, 0x40, 0x85, + 0x92, 0x72, 0x36, 0x88, 0x7a, 0xb3, 0x86, 0xf7, 0x57, 0xdf, 0xf2, 0xb4, + 0x48, 0x07, 0x0e, 0x08, 0x04, 0xec, 0xbd, 0xf2, 0x9f, 0xaa, 0xef, 0x97, + 0x14, 0xd5, 0x18, 0x67, 0xa9, 0x5d, 0x33, 0x7c, 0x88, 0x75, 0x0e, 0x83, + 0x5e, 0x25, 0x24, 0xe0, 0xf9, 0x93, 0x44, 0x22, 0x13, 0x62, 0xcb, 0x15, + 0x53, 0xcf, 0x07, 0x69, 0x24, 0xb5, 0x9c, 0x22, 0xed, 0x6e, 0x16, 0x6f, + 0x4c, 0x6d, 0x1f, 0xfa, 0x7f, 0xf5, 0xae, 0x6d, 0x22, 0x40, 0x92, 0x4f, + 0x39, 0x86, 0x40, 0x22, 0x57, 0x9e, 0x11, 0x52, 0x00, 0x00, 0x64, 0x02, + 0x40, 0x01, 0x00, 0x5a, 0x60, 0x18, 0x15, 0x86, 0x12, 0xef, 0xc2, 0x70, + 0x6e, 0x4e, 0x86, 0x04, 0x20, 0xc6, 0x10, 0x00, 0x06, 0x15, 0x20, 0x2c, + 0x58, 0x02, 0x93, 0x03, 0x90, 0xd4, 0x05, 0x00, 0xf0, 0x90, 0x02, 0x82, + 0x00, 0x18, 0xc4, 0x54, 0x50, 0x95, 0x91, 0x4b, 0xce, 0x25, 0x39, 0x2d, + 0x63, 0x34, 0xce, 0xb0, 0x66, 0x0b, 0x12, 0x74, 0x82, 0x30, 0xbd, 0x51, + 0x18, 0xca, 0xf2, 0x39, 0x43, 0xff, 0xfb, 0xd4, 0x60, 0x22, 0x89, 0x88, + 0xc7, 0x75, 0xbf, 0x4b, 0xcf, 0x7b, 0x70, 0x43, 0x62, 0x58, 0xdd, 0x04, + 0x23, 0x39, 0x25, 0x3d, 0xd6, 0xf8, 0xaf, 0x3d, 0xed, 0xc1, 0x10, 0x97, + 0xa3, 0x7c, 0x12, 0x89, 0x34, 0x20, 0xb2, 0x3d, 0x20, 0xe7, 0xe2, 0x21, + 0x70, 0x7e, 0xc5, 0x38, 0x0b, 0x91, 0xa2, 0xa6, 0x27, 0x43, 0xc9, 0xf9, + 0xa4, 0x9b, 0x3c, 0xdb, 0x10, 0xe6, 0x24, 0xeb, 0x89, 0x22, 0x69, 0x2f, + 0xb4, 0x32, 0x1b, 0xdf, 0xb6, 0x93, 0x55, 0x00, 0x75, 0x60, 0xf2, 0x2e, + 0xe2, 0x7a, 0x6c, 0x8d, 0xb3, 0x54, 0xf8, 0x34, 0xd9, 0xd1, 0x34, 0x13, + 0xb4, 0x9d, 0x55, 0xa8, 0x63, 0xa3, 0xa1, 0x0f, 0x6f, 0x62, 0x98, 0xfc, + 0x30, 0x8e, 0x84, 0xf2, 0x91, 0x2a, 0xd7, 0xf6, 0x9b, 0x8c, 0xbc, 0xac, + 0x55, 0xb3, 0xd5, 0x74, 0x9d, 0xc3, 0x01, 0xf1, 0x1f, 0x6d, 0x47, 0xd2, + 0xe9, 0xb9, 0xc9, 0x89, 0x4d, 0x09, 0x4c, 0xf9, 0x76, 0x77, 0xad, 0x43, + 0x56, 0x45, 0x73, 0x73, 0x56, 0xc5, 0x7c, 0xf6, 0x8a, 0x58, 0xca, 0xb5, + 0x73, 0x6b, 0xe6, 0xab, 0x45, 0xc2, 0xad, 0x7e, 0x03, 0x1a, 0xb5, 0xc9, + 0x40, 0xa4, 0xb3, 0x87, 0x39, 0x94, 0x4e, 0xd4, 0xf3, 0x42, 0x65, 0x5e, + 0x7c, 0xed, 0x70, 0xd0, 0xd7, 0x2a, 0x95, 0xc6, 0x33, 0x03, 0xe5, 0x35, + 0x15, 0xf1, 0xd9, 0x14, 0x8f, 0x15, 0x0e, 0x50, 0x9c, 0x50, 0x86, 0x58, + 0xcc, 0xaa, 0xe8, 0x54, 0x65, 0xba, 0xb6, 0xea, 0xc7, 0x90, 0xd9, 0x51, + 0xac, 0xc7, 0x3b, 0x04, 0x68, 0x4b, 0x0a, 0xc7, 0xaa, 0xf3, 0x34, 0xea, + 0x2c, 0x4d, 0x53, 0xd5, 0x42, 0x6c, 0x2a, 0x4e, 0xa3, 0xd5, 0x72, 0xd8, + 0xa3, 0x38, 0x49, 0x92, 0x12, 0x2f, 0x01, 0x2c, 0x29, 0x07, 0x81, 0xb4, + 0xbc, 0x00, 0x00, 0x0b, 0x76, 0xd2, 0x57, 0x11, 0x21, 0xf2, 0xff, 0xdb, + 0x0b, 0x21, 0xe8, 0x0d, 0x50, 0xd0, 0x18, 0x90, 0xc6, 0x5a, 0x07, 0x33, + 0x8f, 0x08, 0x69, 0x3a, 0x1e, 0x32, 0x55, 0x85, 0xc0, 0xc1, 0xba, 0x86, + 0xa2, 0xc4, 0x92, 0x09, 0xa1, 0x49, 0x15, 0x3a, 0x74, 0x8b, 0xe5, 0x65, + 0x28, 0xae, 0x2d, 0xc6, 0x37, 0xb3, 0x7b, 0xd6, 0xf4, 0xde, 0xd6, 0x2b, + 0xff, 0xff, 0xf7, 0xb3, 0x2c, 0xc5, 0xdc, 0x9a, 0x85, 0x53, 0x01, 0xc0, + 0x3f, 0x30, 0x21, 0x0d, 0x43, 0x07, 0xaa, 0xd9, 0x30, 0x34, 0x23, 0x63, + 0x0a, 0x00, 0x65, 0x56, 0xb3, 0x0e, 0xe0, 0x2a, 0x30, 0x20, 0x02, 0xa3, + 0x16, 0xc0, 0xf3, 0x30, 0x17, 0x00, 0x34, 0x89, 0x11, 0x81, 0x79, 0x86, + 0x61, 0x19, 0x81, 0x80, 0xbd, 0x82, 0x39, 0x8b, 0xa4, 0x32, 0xf4, 0x7c, + 0x9f, 0x01, 0x0a, 0x25, 0xa9, 0x61, 0x3e, 0x44, 0x9c, 0x04, 0xb8, 0x94, + 0xa7, 0x06, 0x40, 0x21, 0x4e, 0xb2, 0xea, 0x12, 0x12, 0xfc, 0xbb, 0x19, + 0xa8, 0xf5, 0xca, 0x00, 0xd3, 0x24, 0x8a, 0xa2, 0xf6, 0x7f, 0x87, 0x11, + 0x29, 0x2e, 0x03, 0xd0, 0xa1, 0x2d, 0xc4, 0xad, 0x0c, 0x3d, 0x0f, 0x63, + 0x60, 0xd8, 0x56, 0x2e, 0x07, 0x09, 0x33, 0x42, 0x12, 0x25, 0x3f, 0x1d, + 0x62, 0xc0, 0x8d, 0x43, 0x90, 0xb1, 0x1f, 0x2e, 0x6b, 0x32, 0x54, 0xef, + 0xc9, 0xba, 0x4f, 0x54, 0xe6, 0xf9, 0x6e, 0x6f, 0x4e, 0x1b, 0x88, 0x6a, + 0xa1, 0x6c, 0xdc, 0x1c, 0x45, 0xe1, 0x0c, 0x35, 0x8e, 0x65, 0x59, 0xbc, + 0x9b, 0x6b, 0x3e, 0x5b, 0xdb, 0xb0, 0x98, 0x4d, 0x28, 0x0e, 0xb7, 0x90, + 0x8e, 0x7a, 0x93, 0x9d, 0x2f, 0x3c, 0x3c, 0x12, 0xb4, 0x3e, 0x8f, 0xc6, + 0x92, 0x7e, 0xa9, 0x6e, 0x52, 0x1e, 0xaa, 0x03, 0x55, 0x3e, 0xa5, 0x2e, + 0xd5, 0x49, 0x32, 0xc2, 0x44, 0xa3, 0x14, 0xba, 0x5b, 0x8a, 0x4b, 0x1c, + 0x1e, 0xb1, 0x97, 0x66, 0x16, 0x46, 0x74, 0xf4, 0x90, 0x52, 0x8c, 0xcf, + 0x52, 0x8b, 0x71, 0xda, 0x9a, 0xd8, 0x62, 0x2e, 0xd5, 0x08, 0xd7, 0x8a, + 0xf3, 0xfd, 0x42, 0x64, 0xb4, 0x40, 0x78, 0xb4, 0xb8, 0xb9, 0x88, 0x93, + 0x8c, 0xa7, 0x57, 0x25, 0xdb, 0x58, 0xd9, 0x19, 0x9f, 0xa8, 0x59, 0xd8, + 0x4e, 0x27, 0xca, 0x0c, 0x2b, 0x94, 0xa7, 0x79, 0xcc, 0xca, 0xab, 0x34, + 0xdb, 0x90, 0x8b, 0xb3, 0x28, 0x93, 0x6a, 0xdc, 0x21, 0xa4, 0x80, 0xda, + 0x27, 0x6d, 0x07, 0xf4, 0x73, 0x6c, 0x9c, 0xb9, 0x17, 0xb2, 0xb0, 0x18, + 0x66, 0x58, 0x9b, 0x84, 0x0c, 0x25, 0x07, 0xf8, 0xba, 0x99, 0x62, 0xa8, + 0x50, 0x8a, 0x52, 0x98, 0xbe, 0xb4, 0x82, 0xaa, 0xc3, 0x92, 0xba, 0x89, + 0x1c, 0xeb, 0x7f, 0xa1, 0x88, 0x43, 0x71, 0x8c, 0x07, 0x30, 0x68, 0xab, + 0xee, 0xf6, 0x7d, 0x93, 0x56, 0xae, 0xc9, 0x67, 0x67, 0x23, 0xa3, 0x48, + 0x4d, 0x74, 0x6b, 0x1d, 0x1d, 0x52, 0xae, 0x34, 0x20, 0x36, 0x75, 0x7d, + 0xd9, 0xc2, 0xbb, 0xb8, 0xab, 0x4f, 0x99, 0xde, 0x86, 0x0f, 0xdf, 0xa1, + 0x0b, 0x5b, 0xf1, 0xd3, 0xcf, 0x56, 0x28, 0xef, 0xff, 0xfd, 0x5f, 0xd0, + 0x95, 0xe6, 0x6a, 0x00, 0x10, 0x64, 0x9a, 0xd0, 0x0c, 0x02, 0x80, 0x3c, + 0xc0, 0x7c, 0x15, 0x8c, 0x26, 0x17, 0x9c, 0xd2, 0xb8, 0x2c, 0x8c, 0x1d, + 0x00, 0x84, 0xc0, 0x4c, 0x0b, 0x0c, 0x0c, 0x81, 0x65, 0x21, 0x8c, 0x39, + 0x40, 0x38, 0xc0, 0x18, 0x02, 0x9a, 0x58, 0xe0, 0x04, 0x18, 0x1e, 0x0d, + 0x21, 0x6a, 0x9d, 0x37, 0xa7, 0x92, 0xa8, 0xef, 0x62, 0x64, 0x2f, 0x24, + 0xb4, 0x94, 0x14, 0xc3, 0x39, 0x2e, 0x4e, 0x14, 0xa7, 0x5e, 0x98, 0x60, + 0x2a, 0x93, 0x07, 0x49, 0x54, 0x3b, 0x41, 0xe8, 0xac, 0x7a, 0x3a, 0xc7, + 0xab, 0x0a, 0x92, 0xf2, 0xb1, 0xff, 0xfb, 0xd4, 0x60, 0x2b, 0x08, 0x88, + 0x83, 0x76, 0x3f, 0xcb, 0xcf, 0x7b, 0x70, 0x57, 0x8e, 0x98, 0x79, 0x0c, + 0x62, 0x6e, 0x21, 0xb1, 0xd9, 0x03, 0x4e, 0xbd, 0xed, 0xc1, 0x55, 0x97, + 0x22, 0xfc, 0x14, 0x0d, 0x34, 0x04, 0x72, 0xa1, 0xdb, 0x6a, 0x23, 0x93, + 0x21, 0xc4, 0x79, 0xe9, 0x2a, 0x4a, 0x91, 0xc6, 0xf9, 0x61, 0x57, 0x0f, + 0x95, 0x71, 0x86, 0x18, 0x04, 0x89, 0x52, 0x4f, 0x11, 0xa6, 0xb1, 0x96, + 0x63, 0x9d, 0x93, 0x21, 0x94, 0x76, 0x38, 0x4f, 0x75, 0x61, 0x78, 0x59, + 0x2c, 0x65, 0xe0, 0x21, 0x66, 0x83, 0x90, 0xd7, 0x51, 0xe6, 0x19, 0xcc, + 0x32, 0x21, 0x55, 0x56, 0xab, 0x70, 0x8c, 0xf1, 0x25, 0x2b, 0xe7, 0x35, + 0x5b, 0x52, 0x41, 0xc5, 0x0f, 0x56, 0x3a, 0x50, 0xa7, 0x63, 0x4f, 0x2b, + 0x4d, 0x5c, 0xe5, 0x81, 0x22, 0xbf, 0x51, 0x20, 0x3f, 0x85, 0xa4, 0x32, + 0x3c, 0xab, 0x30, 0x19, 0x5b, 0xdd, 0xdd, 0x3b, 0x15, 0x2e, 0xda, 0xb6, + 0xf2, 0x57, 0x49, 0xc8, 0x17, 0x8d, 0x3e, 0x26, 0x79, 0x26, 0x97, 0x50, + 0x63, 0x33, 0xc8, 0xe6, 0xe0, 0xd3, 0x0d, 0xa9, 0xf3, 0xba, 0xe1, 0x45, + 0x0b, 0x12, 0xd9, 0x6e, 0x2c, 0xf1, 0x9c, 0xa6, 0xab, 0xe7, 0x71, 0xd4, + 0xd4, 0xa4, 0xd0, 0x99, 0x34, 0xce, 0x9f, 0x84, 0xe2, 0xbf, 0x08, 0xe2, + 0x81, 0x0d, 0x55, 0x1a, 0xcb, 0x2d, 0x6c, 0x5b, 0x78, 0xf9, 0x54, 0xa6, + 0xcb, 0x32, 0x78, 0xe7, 0x5b, 0x39, 0x51, 0x0b, 0x98, 0x47, 0x2a, 0x28, + 0xf8, 0x7e, 0x6d, 0x92, 0x23, 0x48, 0x3f, 0x0b, 0x89, 0x5d, 0xfc, 0xa0, + 0x08, 0x2f, 0xd7, 0x5c, 0xa0, 0xdd, 0x08, 0x6b, 0x62, 0x0a, 0x5d, 0xcb, + 0x97, 0xed, 0x0a, 0x83, 0x03, 0xcd, 0x59, 0xa2, 0x7b, 0x96, 0xf3, 0x5c, + 0xf6, 0x47, 0x54, 0x7f, 0xd1, 0x2e, 0xbf, 0xc5, 0x6a, 0x52, 0x7d, 0x51, + 0x16, 0xcc, 0xee, 0x8f, 0x65, 0xd1, 0x95, 0x1a, 0x77, 0xe8, 0xec, 0x76, + 0x54, 0x64, 0xeb, 0xbd, 0x59, 0xbf, 0xf4, 0x5f, 0x2f, 0x77, 0xba, 0xeb, + 0xa5, 0x7e, 0xd4, 0xf7, 0xff, 0xdd, 0x3f, 0xfe, 0x94, 0xa5, 0xaa, 0xd4, + 0x7b, 0xbd, 0x01, 0xb9, 0xd0, 0x64, 0x99, 0x33, 0xca, 0x90, 0xf1, 0x2e, + 0xcc, 0x43, 0x8c, 0x16, 0xb6, 0xd3, 0x89, 0x20, 0x98, 0x26, 0x03, 0x82, + 0x86, 0x25, 0x64, 0x67, 0xfd, 0x05, 0xa2, 0xc1, 0xa8, 0xd0, 0x2e, 0x63, + 0xe8, 0x04, 0x89, 0xe6, 0x4e, 0x06, 0x8c, 0xae, 0x32, 0x28, 0x02, 0x99, + 0x0a, 0x87, 0x83, 0x81, 0x98, 0x69, 0xa9, 0x8d, 0xc2, 0x0c, 0x04, 0xb9, + 0x2e, 0x1c, 0xea, 0xb5, 0x79, 0xce, 0xb0, 0x82, 0x8c, 0x91, 0x05, 0x01, + 0x5a, 0x42, 0xc9, 0x89, 0x16, 0x6f, 0x90, 0xc4, 0x24, 0x65, 0xaa, 0x1b, + 0xc1, 0x54, 0x81, 0x37, 0x53, 0xaa, 0xe3, 0xbc, 0x7f, 0x88, 0xd1, 0xe4, + 0xc0, 0x3b, 0x4b, 0xe2, 0xd1, 0x38, 0x27, 0xe7, 0xab, 0x02, 0x80, 0xd6, + 0x54, 0x68, 0x6a, 0x14, 0x8a, 0x91, 0xe6, 0xaa, 0x37, 0xd0, 0x23, 0x98, + 0xca, 0x3d, 0x5c, 0x57, 0x6a, 0x52, 0xc2, 0x5b, 0x07, 0xd9, 0x28, 0x21, + 0x65, 0xe4, 0x49, 0x50, 0xf3, 0x9c, 0x9e, 0x9d, 0x46, 0x49, 0x21, 0x27, + 0x8b, 0x46, 0x91, 0x73, 0x22, 0xb2, 0x22, 0xa8, 0x5a, 0x85, 0xae, 0x32, + 0x1a, 0xe4, 0x91, 0x73, 0x37, 0x54, 0xa7, 0x23, 0x79, 0xfa, 0xaf, 0x2f, + 0xc9, 0xe5, 0x69, 0x83, 0x19, 0x89, 0x1a, 0x8e, 0x4a, 0xb8, 0xe2, 0x13, + 0x7b, 0xf5, 0xd3, 0x3d, 0x5c, 0xd3, 0xc8, 0x63, 0x32, 0x26, 0x34, 0x32, + 0xdd, 0x6d, 0x21, 0xa9, 0x95, 0x43, 0x69, 0xb9, 0x09, 0x26, 0x65, 0xab, + 0xa1, 0x2d, 0x3e, 0x84, 0xa5, 0x54, 0xa1, 0xcb, 0x11, 0x90, 0xa6, 0x29, + 0x27, 0x7d, 0x1a, 0xed, 0xa8, 0x94, 0x31, 0x09, 0x83, 0x03, 0x3a, 0x60, + 0x6f, 0xbe, 0xd8, 0x1c, 0xe1, 0xc0, 0x7b, 0xb8, 0x4f, 0xb3, 0x78, 0x34, + 0xf9, 0x9a, 0x36, 0xe9, 0x03, 0xb6, 0x66, 0x26, 0x22, 0x49, 0xbc, 0x51, + 0x9b, 0x36, 0x52, 0xb4, 0xea, 0xee, 0x95, 0x8b, 0x4d, 0xb3, 0xb6, 0xbf, + 0x42, 0xee, 0xa5, 0xd2, 0x1e, 0x85, 0x2a, 0xa0, 0xc1, 0x5f, 0x3a, 0x50, + 0xa3, 0x90, 0xfe, 0x36, 0x8b, 0x0a, 0x19, 0xfc, 0xc0, 0x68, 0xd0, 0xdc, + 0x6a, 0x12, 0x02, 0xfb, 0xfc, 0xff, 0xcd, 0xf1, 0x09, 0x6c, 0x38, 0x3a, + 0x10, 0x05, 0x07, 0x06, 0x37, 0xb4, 0x96, 0xa6, 0x53, 0x88, 0x70, 0xbd, + 0x0f, 0x52, 0xcf, 0x2b, 0xe9, 0x15, 0xcc, 0xfa, 0xea, 0x79, 0x6c, 0x7b, + 0x0d, 0x4d, 0x0a, 0x51, 0x83, 0xbd, 0x6a, 0x04, 0x65, 0xa7, 0x0f, 0x93, + 0x43, 0xda, 0xd1, 0x56, 0x8a, 0x20, 0xf1, 0xe4, 0xad, 0x86, 0x9a, 0x91, + 0x84, 0xaa, 0x6a, 0x54, 0x22, 0x3e, 0xd9, 0xda, 0xd3, 0xff, 0xff, 0xd2, + 0x60, 0xa8, 0x05, 0x3d, 0xc0, 0xe9, 0x13, 0x85, 0xdc, 0x52, 0x01, 0x00, + 0x09, 0x80, 0xa8, 0x18, 0x18, 0x3a, 0x21, 0xb9, 0xb9, 0x20, 0x36, 0x01, + 0x80, 0x04, 0x64, 0x0e, 0x4c, 0x31, 0x01, 0x58, 0xaa, 0x04, 0x86, 0x15, + 0xe1, 0x66, 0x20, 0x00, 0x64, 0x8a, 0x15, 0x01, 0x13, 0x14, 0x60, 0xe0, + 0x05, 0x06, 0x92, 0x60, 0x84, 0x6c, 0xdc, 0x25, 0xe5, 0xed, 0xb4, 0x5a, + 0x54, 0x4a, 0xb3, 0x0c, 0x5d, 0xd1, 0x44, 0xbd, 0x2a, 0x60, 0xa5, 0x07, + 0xa8, 0xe1, 0x84, 0x46, 0xae, 0x35, 0x89, 0x49, 0x36, 0x37, 0x89, 0xf9, + 0x23, 0x55, 0x1f, 0xa7, 0x92, 0x48, 0x5f, 0x8b, 0x51, 0xd4, 0x28, 0x48, + 0x45, 0x8f, 0x35, 0x41, 0xbe, 0xce, 0x39, 0x24, 0x83, 0x29, 0xe8, 0xe0, + 0xad, 0x12, 0x06, 0xb2, 0x74, 0xff, 0xfb, 0xd4, 0x60, 0x33, 0x88, 0x09, + 0x15, 0x76, 0x3e, 0x03, 0xcf, 0x7b, 0x70, 0x49, 0x67, 0x38, 0xbc, 0x04, + 0x43, 0x5d, 0x23, 0xa5, 0xd8, 0xfc, 0xcf, 0x3d, 0xed, 0xc1, 0x4e, 0x94, + 0xe2, 0x74, 0x21, 0x19, 0x30, 0xad, 0x34, 0x4f, 0xc3, 0x05, 0x56, 0x97, + 0x27, 0xa7, 0x49, 0xd4, 0xc2, 0x48, 0xa8, 0xc4, 0xa0, 0x2d, 0xec, 0x66, + 0x7a, 0x75, 0xa0, 0x96, 0x1c, 0x84, 0xfc, 0xb8, 0x2e, 0x8b, 0x9a, 0x7d, + 0xb9, 0xa5, 0x59, 0x18, 0xb1, 0x6d, 0x4b, 0xd9, 0x89, 0x9a, 0x10, 0xd3, + 0xa3, 0xd8, 0xce, 0x40, 0x29, 0xd2, 0x89, 0x74, 0xd3, 0x12, 0x7d, 0xac, + 0x7d, 0x22, 0x4e, 0x78, 0x85, 0xba, 0x09, 0xfe, 0xc6, 0xe5, 0x3c, 0xca, + 0xd3, 0x50, 0xec, 0x79, 0x3a, 0xc2, 0xa1, 0xd2, 0xf1, 0xda, 0x91, 0xca, + 0xdc, 0x66, 0x75, 0x1b, 0xe2, 0xfc, 0xde, 0xe9, 0x2f, 0x1e, 0xa5, 0x5a, + 0x91, 0x30, 0xf9, 0x40, 0xc4, 0xa8, 0x32, 0x0d, 0x24, 0x29, 0x7a, 0x56, + 0xd8, 0xe7, 0xf2, 0x69, 0x8d, 0x99, 0x4a, 0xd8, 0xad, 0xea, 0x56, 0x23, + 0xfe, 0xeb, 0xa8, 0xeb, 0x86, 0x3a, 0xc4, 0x6d, 0x57, 0x98, 0xab, 0x66, + 0xd6, 0x22, 0xc8, 0xb4, 0x97, 0x8a, 0x93, 0x7e, 0xad, 0x66, 0x5b, 0x9d, + 0x68, 0x97, 0xc1, 0x76, 0xc0, 0xa4, 0x82, 0xb8, 0x20, 0xca, 0xd2, 0xe8, + 0xe6, 0x85, 0x3e, 0x50, 0xa7, 0x49, 0x39, 0x3b, 0x1c, 0x84, 0x18, 0xc5, + 0x39, 0x0c, 0xb5, 0x11, 0x72, 0x1c, 0x24, 0x39, 0x32, 0x21, 0xc7, 0x48, + 0xdd, 0x07, 0x31, 0x1e, 0x05, 0x60, 0x84, 0x03, 0x48, 0x52, 0x4d, 0xe5, + 0x28, 0x00, 0x00, 0x15, 0x73, 0xbe, 0xe4, 0x3f, 0xd5, 0x7a, 0x51, 0xd4, + 0x4f, 0x79, 0x9a, 0x55, 0x43, 0xb1, 0x57, 0xe9, 0xce, 0x13, 0xef, 0x9e, + 0x4f, 0x73, 0x28, 0xde, 0xdd, 0x32, 0xcb, 0xe7, 0x74, 0xed, 0xb5, 0xbc, + 0x88, 0x95, 0xf8, 0x70, 0xe5, 0xcb, 0x82, 0x61, 0xc7, 0x89, 0x18, 0xb2, + 0x0e, 0x11, 0x81, 0x5c, 0x34, 0x6a, 0x09, 0x2a, 0x83, 0xda, 0x63, 0x6c, + 0x2c, 0x9b, 0xff, 0xff, 0xab, 0x14, 0xed, 0x6f, 0x17, 0x5f, 0x26, 0xe1, + 0x45, 0x8f, 0x28, 0xb3, 0xa0, 0x18, 0x01, 0x00, 0x19, 0x80, 0xb8, 0x10, + 0x18, 0x3e, 0x0c, 0x69, 0xb8, 0x30, 0x4f, 0x18, 0x0c, 0x00, 0xe8, 0x24, + 0x0b, 0x8c, 0x1a, 0x81, 0x7c, 0xc0, 0x0c, 0x05, 0xcc, 0x0a, 0x42, 0x09, + 0x88, 0xae, 0x85, 0x64, 0x30, 0xb9, 0x06, 0xa2, 0xb0, 0x1c, 0x65, 0xe1, + 0x78, 0x71, 0xab, 0x5e, 0xa9, 0x48, 0x72, 0xb1, 0x74, 0x91, 0x2e, 0x61, + 0xcb, 0x18, 0xe3, 0x24, 0x02, 0x64, 0x69, 0x1e, 0x46, 0x81, 0x3a, 0x43, + 0x08, 0x6a, 0x9d, 0x98, 0xc1, 0x51, 0x9c, 0x2a, 0xd2, 0xf6, 0x49, 0x07, + 0x8c, 0xef, 0x12, 0xc4, 0x35, 0x78, 0xa1, 0x24, 0x28, 0x6b, 0x62, 0x4d, + 0x80, 0xc7, 0x5f, 0x02, 0x8b, 0x79, 0xec, 0x51, 0x9e, 0xa5, 0x8d, 0x65, + 0x5c, 0x79, 0x22, 0x36, 0x79, 0x1c, 0x6b, 0x69, 0x78, 0x4a, 0x93, 0xdd, + 0x2e, 0x95, 0x54, 0x86, 0x0a, 0xc9, 0x19, 0x3e, 0x85, 0x41, 0x73, 0x31, + 0xc2, 0x3c, 0x5f, 0x84, 0x94, 0x90, 0x98, 0xa7, 0x21, 0xd6, 0x2c, 0x0a, + 0x86, 0xb9, 0x19, 0x90, 0xcb, 0xa3, 0xd7, 0xd5, 0xaa, 0x75, 0x61, 0xc4, + 0xc4, 0xce, 0xb9, 0x3a, 0x91, 0xec, 0xea, 0xc6, 0xd6, 0x28, 0xcc, 0x2a, + 0xd6, 0xc9, 0xb5, 0x05, 0xeb, 0xc4, 0xf2, 0xf4, 0x35, 0xc4, 0x15, 0x96, + 0x64, 0x9b, 0x9b, 0x0b, 0xc4, 0x03, 0x4a, 0xef, 0x0e, 0x90, 0xf8, 0xf1, + 0x8f, 0x6d, 0x31, 0x43, 0x73, 0x4a, 0x25, 0xd4, 0xca, 0x97, 0xf0, 0x55, + 0xec, 0xad, 0x78, 0x50, 0xae, 0xde, 0xab, 0xce, 0x18, 0xaa, 0x88, 0x0f, + 0x5c, 0xd0, 0x33, 0x2b, 0x94, 0x4d, 0x0d, 0x2e, 0x54, 0x6b, 0x65, 0xbc, + 0x26, 0x18, 0x8a, 0xe6, 0xf8, 0x33, 0xd5, 0xc1, 0xcd, 0x95, 0x72, 0xc6, + 0xc2, 0xa5, 0x7a, 0xc3, 0x23, 0x83, 0x4b, 0xf6, 0x15, 0x32, 0x09, 0x3e, + 0xc2, 0xf6, 0x2b, 0xc7, 0x90, 0xa3, 0xb5, 0xc0, 0x4e, 0xb9, 0xcc, 0xfc, + 0xe6, 0x70, 0x3f, 0xd4, 0x45, 0x84, 0xaf, 0x50, 0x17, 0x63, 0x8a, 0x28, + 0x47, 0x54, 0x06, 0x4a, 0x12, 0x8c, 0x27, 0xc1, 0x86, 0x4e, 0xdd, 0x00, + 0x03, 0x01, 0x98, 0xdb, 0x7f, 0x46, 0xd0, 0x6d, 0x27, 0xa0, 0x20, 0x2d, + 0x76, 0x3d, 0x9b, 0x0c, 0xcb, 0x7b, 0xd7, 0xf5, 0xfb, 0xcb, 0x77, 0x7f, + 0x1f, 0xbe, 0x76, 0x86, 0x20, 0x13, 0x0a, 0x38, 0xbb, 0x83, 0x6b, 0x9b, + 0x85, 0x76, 0xd2, 0x8b, 0xd7, 0x21, 0x79, 0x38, 0xc5, 0xa4, 0x70, 0x1d, + 0x33, 0xd7, 0x96, 0x6d, 0x05, 0x9b, 0x8f, 0x61, 0x42, 0xfa, 0xfd, 0x92, + 0x96, 0x29, 0xdb, 0x16, 0x42, 0x9f, 0xfd, 0x1a, 0xb7, 0xa2, 0x30, 0x4e, + 0x5c, 0x85, 0x42, 0xe2, 0x40, 0xb4, 0xbb, 0xc0, 0xeb, 0x3e, 0x4e, 0x20, + 0x0c, 0x04, 0x00, 0x04, 0x20, 0x1d, 0x8c, 0x3b, 0x0b, 0x30, 0xeb, 0x08, + 0x2b, 0x06, 0x83, 0x20, 0xc0, 0xdc, 0x09, 0x85, 0x87, 0x9c, 0x1a, 0x03, + 0x66, 0x0b, 0x80, 0xae, 0x98, 0x70, 0x08, 0x5c, 0x06, 0x4c, 0x17, 0x83, + 0x5d, 0x38, 0x54, 0xb0, 0xf5, 0x3a, 0x89, 0xd9, 0x3a, 0x2e, 0xeb, 0x03, + 0x98, 0xb9, 0x8e, 0x73, 0x90, 0x98, 0x1f, 0x80, 0x37, 0x0f, 0xf3, 0xe8, + 0x48, 0xa4, 0x2f, 0x25, 0xc4, 0x40, 0x8e, 0x21, 0x0f, 0x17, 0x32, 0xdf, + 0x11, 0x60, 0x4c, 0x50, 0x2b, 0x04, 0xe0, 0x12, 0x06, 0x99, 0x71, 0x20, + 0x89, 0x71, 0x12, 0x64, 0x52, 0x2b, 0xcd, 0xd6, 0x36, 0xd6, 0xa2, 0x7c, + 0x4d, 0x8c, 0xd4, 0xc1, 0xc8, 0xff, 0xfb, 0xd4, 0x60, 0x33, 0x0d, 0x09, + 0x36, 0x76, 0x3e, 0x0b, 0xcf, 0x7b, 0x70, 0x5b, 0xae, 0x88, 0x7a, 0x04, + 0x62, 0x6e, 0x64, 0x91, 0xd8, 0xf8, 0x2f, 0x3f, 0x0d, 0xc1, 0x82, 0x38, + 0xa1, 0xe8, 0x23, 0x89, 0xb9, 0xb0, 0x8a, 0x2e, 0xe7, 0xb1, 0x48, 0x79, + 0x21, 0x88, 0x15, 0x44, 0x03, 0xf8, 0xdc, 0x50, 0x99, 0x48, 0xf6, 0xc5, + 0x23, 0x23, 0x63, 0xd5, 0x85, 0x5b, 0x71, 0xa2, 0xe6, 0x3a, 0xe0, 0xb5, + 0x4e, 0x5f, 0x57, 0x08, 0x16, 0x22, 0xdc, 0x5e, 0x19, 0x54, 0x0c, 0xcb, + 0x6b, 0xea, 0x65, 0x7a, 0x95, 0x85, 0xdb, 0x32, 0x99, 0x24, 0x74, 0x1d, + 0x8f, 0xe0, 0xaa, 0x51, 0x4a, 0xf2, 0xfc, 0x64, 0x6d, 0xd9, 0x2e, 0x88, + 0x9a, 0x3a, 0x5f, 0xb4, 0x4b, 0x09, 0x0b, 0xc2, 0x12, 0x6e, 0xb7, 0x9d, + 0x64, 0x42, 0xa9, 0x60, 0xbe, 0xe9, 0x47, 0x09, 0x10, 0x8d, 0x6c, 0x88, + 0xd6, 0x73, 0x2b, 0x98, 0xd6, 0xd9, 0x1d, 0xa2, 0x50, 0xc5, 0x19, 0x1d, + 0xa3, 0x2d, 0x17, 0x18, 0xcb, 0x3b, 0x6a, 0xa0, 0x7c, 0xa1, 0x3b, 0x8e, + 0xd7, 0x05, 0x2a, 0x91, 0x4a, 0x80, 0x62, 0x57, 0x30, 0x9f, 0xca, 0x29, + 0x30, 0xb5, 0x21, 0xc8, 0xaa, 0x53, 0x21, 0x26, 0xab, 0x3a, 0x29, 0xe6, + 0x95, 0xce, 0x6a, 0xb5, 0x24, 0x09, 0x1a, 0x9f, 0x14, 0xa7, 0x39, 0x60, + 0x6d, 0x78, 0x4f, 0x10, 0xd3, 0x74, 0xc4, 0x39, 0x15, 0x2c, 0xa5, 0xd1, + 0xa4, 0xe2, 0x39, 0x4b, 0xc2, 0x1a, 0x32, 0x8b, 0x78, 0x8c, 0x87, 0xd0, + 0xe1, 0x20, 0xa4, 0xc0, 0x9c, 0x0e, 0x30, 0x10, 0x85, 0x18, 0xb0, 0xb2, + 0x07, 0xc0, 0x3a, 0x08, 0xc2, 0x68, 0x00, 0x54, 0x82, 0xdb, 0x8d, 0x14, + 0x14, 0x8e, 0x17, 0x38, 0x54, 0x22, 0xb3, 0x2f, 0xc8, 0xe7, 0xe5, 0xe5, + 0xdf, 0x71, 0x54, 0xac, 0xaf, 0x4d, 0x8b, 0x68, 0x90, 0xe4, 0xa8, 0xd0, + 0xea, 0x9b, 0x00, 0x87, 0x29, 0x0e, 0x50, 0xc6, 0x16, 0x63, 0x8e, 0xf9, + 0xcb, 0x3b, 0x32, 0x5b, 0x75, 0x97, 0xb2, 0x6a, 0x6b, 0xab, 0xfe, 0xcd, + 0xd5, 0xeb, 0xff, 0x4f, 0xa5, 0x55, 0x2d, 0x4b, 0x59, 0x75, 0x9d, 0x51, + 0xca, 0xc4, 0x4d, 0x7f, 0xff, 0xe9, 0xff, 0xc8, 0xcc, 0x9b, 0x3e, 0x46, + 0x73, 0x1d, 0xa7, 0x98, 0x5a, 0xa4, 0xaa, 0xc6, 0x72, 0x90, 0x8b, 0x16, + 0x68, 0xa2, 0x12, 0x00, 0x83, 0x03, 0xb0, 0x47, 0x31, 0x08, 0x6b, 0xe3, + 0xa7, 0xe0, 0x9f, 0x30, 0xa4, 0x01, 0xe3, 0x02, 0x90, 0x45, 0x30, 0x54, + 0x06, 0x41, 0x18, 0x02, 0x18, 0x0f, 0x01, 0xe0, 0xb0, 0x07, 0x24, 0x5a, + 0x22, 0x18, 0x14, 0x06, 0xa4, 0x85, 0xe0, 0x2f, 0xf3, 0x46, 0x2b, 0xd4, + 0x23, 0x5d, 0x0c, 0x3f, 0x43, 0xa0, 0x2e, 0xce, 0x34, 0x42, 0x1c, 0x6c, + 0x1c, 0xa5, 0x62, 0x40, 0xed, 0x0d, 0x66, 0xb5, 0xd9, 0x32, 0x8a, 0x4a, + 0x94, 0x21, 0x7a, 0xa5, 0x38, 0x89, 0xf1, 0xc0, 0x20, 0x4c, 0x7a, 0x35, + 0x08, 0x22, 0x58, 0xb7, 0x0e, 0xd3, 0xfc, 0x99, 0xe5, 0x64, 0xd1, 0x55, + 0x88, 0x29, 0x88, 0x8e, 0x4e, 0x2a, 0xdf, 0x58, 0x4b, 0xf5, 0x03, 0xb4, + 0xc7, 0x0a, 0x63, 0x75, 0x5d, 0xba, 0xd3, 0x52, 0xdc, 0xdd, 0xb8, 0x43, + 0xec, 0xf7, 0xbf, 0xb3, 0x70, 0xb7, 0x22, 0x59, 0x3a, 0xff, 0x42, 0xa0, + 0x08, 0xb6, 0x2d, 0xee, 0xdf, 0xfb, 0x96, 0x21, 0xa5, 0xcd, 0x18, 0x86, + 0xec, 0x46, 0x6b, 0xc0, 0x6e, 0xdc, 0xbd, 0xe9, 0x86, 0x21, 0x86, 0x54, + 0xd6, 0x22, 0xef, 0x43, 0x72, 0xd4, 0x1f, 0x19, 0xa9, 0x01, 0x71, 0xe2, + 0x87, 0x62, 0x50, 0xe6, 0x54, 0xd3, 0xfa, 0x76, 0x65, 0xb0, 0xfb, 0xac, + 0xf7, 0x46, 0x20, 0x38, 0xbc, 0xad, 0xaf, 0x46, 0x63, 0x74, 0x95, 0xe6, + 0x25, 0xd4, 0xb3, 0x92, 0x0e, 0x45, 0xab, 0x3d, 0xb4, 0xd0, 0x0d, 0x59, + 0x4c, 0xd4, 0x51, 0xea, 0x9e, 0x97, 0xb6, 0x79, 0x04, 0x17, 0x3d, 0x14, + 0x9c, 0x7f, 0xe1, 0x14, 0x94, 0x95, 0xa2, 0x14, 0xd8, 0xce, 0x4a, 0x20, + 0x78, 0x66, 0x33, 0x2b, 0xbd, 0xdb, 0x10, 0x26, 0x0d, 0x6a, 0xc3, 0xbd, + 0x39, 0x6e, 0xf5, 0x3c, 0x49, 0x9b, 0x4d, 0xce, 0x4d, 0x51, 0x53, 0xd4, + 0xa6, 0x99, 0xbd, 0x18, 0xa6, 0x94, 0x43, 0xb2, 0xd7, 0x0a, 0x9d, 0xe4, + 0xc2, 0x0e, 0x62, 0x4d, 0xf3, 0x21, 0x7c, 0xdd, 0x99, 0x53, 0x10, 0x5d, + 0xce, 0xbc, 0x56, 0xda, 0xb7, 0xc2, 0x86, 0x0a, 0x67, 0x02, 0xec, 0x43, + 0x65, 0x92, 0x99, 0xad, 0xca, 0x4e, 0x00, 0x01, 0x27, 0x49, 0xb6, 0xd1, + 0x0d, 0x98, 0x43, 0xd9, 0x4e, 0xac, 0xef, 0xe7, 0xae, 0x7d, 0xe6, 0xf2, + 0xe1, 0x10, 0x84, 0x1a, 0x1b, 0x07, 0x46, 0x3a, 0x25, 0xbe, 0xd7, 0x3d, + 0x9d, 0x4e, 0x42, 0x88, 0xa6, 0x23, 0xab, 0x3a, 0x23, 0xbd, 0x0a, 0xab, + 0xba, 0x3a, 0x5c, 0xd7, 0x54, 0x66, 0x62, 0xab, 0x9b, 0x33, 0x23, 0x22, + 0xea, 0xee, 0x24, 0xf4, 0x2e, 0x5b, 0xd5, 0x25, 0xe9, 0xea, 0x56, 0x5b, + 0x3d, 0x3f, 0xbf, 0xf7, 0xaf, 0x6f, 0xfd, 0x3f, 0xa3, 0x7f, 0x6f, 0x4e, + 0x6d, 0xe8, 0x80, 0xd1, 0xd0, 0xac, 0x34, 0x29, 0x54, 0x31, 0x5c, 0xe5, + 0x09, 0xb8, 0xb1, 0x75, 0xe1, 0xb2, 0xb5, 0x00, 0x45, 0x80, 0xc8, 0x06, + 0x18, 0x06, 0x83, 0x49, 0x84, 0x33, 0xb4, 0x1a, 0xad, 0x0c, 0xa9, 0x83, + 0x60, 0x24, 0x18, 0x0e, 0x81, 0x49, 0x83, 0x70, 0x0c, 0xa8, 0xb1, 0x82, + 0x08, 0x05, 0xb5, 0x85, 0xec, 0xa1, 0xa6, 0x0b, 0x61, 0x1a, 0x5f, 0x97, + 0xd4, 0x4c, 0x33, 0xb6, 0x03, 0xa4, 0xfd, 0x5b, 0x2d, 0xe7, 0x51, 0xe6, + 0x42, 0x5a, 0x18, 0xc6, 0xe1, 0xff, 0xfb, 0xd4, 0x60, 0x1d, 0x09, 0x08, + 0x80, 0x76, 0x3f, 0x2b, 0xcf, 0x7b, 0x70, 0x5f, 0x2e, 0x28, 0x7d, 0x08, + 0xa2, 0x6e, 0x61, 0xfd, 0xd8, 0xfc, 0xaf, 0x3d, 0xed, 0xc1, 0x61, 0x0d, + 0x62, 0x74, 0x11, 0x18, 0xe0, 0xf4, 0x96, 0x57, 0xa7, 0xba, 0x30, 0x94, + 0x17, 0xc4, 0x94, 0xc4, 0x05, 0xb9, 0xc2, 0xc6, 0xf9, 0xfe, 0xc8, 0x6f, + 0x14, 0x44, 0x8c, 0xc9, 0x42, 0x47, 0xea, 0x1a, 0xbb, 0x46, 0x17, 0xd4, + 0x6a, 0xb9, 0xf2, 0x71, 0xb5, 0x0c, 0x35, 0x23, 0x9c, 0x24, 0xd8, 0xee, + 0x30, 0xdd, 0x32, 0xa1, 0x4a, 0x53, 0x81, 0x4a, 0x30, 0x4e, 0xe8, 0x27, + 0x39, 0x7f, 0xa2, 0x96, 0xae, 0x47, 0x38, 0xb0, 0xbb, 0x39, 0x51, 0xa7, + 0xeb, 0x6a, 0xbd, 0x1c, 0xa1, 0x6d, 0x72, 0x57, 0xbc, 0x7f, 0x56, 0x77, + 0xa8, 0x73, 0x06, 0x6e, 0xcc, 0xa0, 0x52, 0xb7, 0x42, 0x51, 0xc8, 0xc0, + 0xbe, 0xce, 0xe0, 0xed, 0x35, 0x01, 0x75, 0x3b, 0x73, 0x73, 0x43, 0x2b, + 0x23, 0x7d, 0xd4, 0xd0, 0x32, 0x86, 0xa1, 0x2c, 0x2e, 0x4a, 0x54, 0x6c, + 0xba, 0x72, 0x6f, 0x6d, 0xbc, 0x3c, 0xb8, 0x30, 0xaf, 0xa9, 0x99, 0xa1, + 0xb1, 0xc7, 0x65, 0x52, 0xc8, 0x7e, 0x59, 0xbe, 0x92, 0xb8, 0xc4, 0x61, + 0xbc, 0x06, 0xc7, 0xcc, 0x10, 0x58, 0x91, 0x2c, 0x92, 0x41, 0x62, 0x4f, + 0x2b, 0xd6, 0x5a, 0xd2, 0xb0, 0x56, 0x1c, 0xde, 0x2e, 0x13, 0xac, 0xc8, + 0x73, 0xa7, 0xab, 0xce, 0x2d, 0x9d, 0xe3, 0x03, 0xc8, 0xaa, 0x87, 0xe9, + 0xf7, 0x04, 0x6a, 0x7b, 0xb8, 0xa6, 0xd4, 0x72, 0x2c, 0xa7, 0xee, 0x7f, + 0x3a, 0x50, 0xd9, 0x0f, 0x54, 0xa8, 0xc5, 0xf8, 0xf5, 0x21, 0x02, 0xd4, + 0x71, 0x30, 0x1d, 0x24, 0xf5, 0xc8, 0x63, 0x36, 0x0e, 0xe0, 0xe1, 0x11, + 0xe2, 0xc2, 0xaa, 0x00, 0x00, 0x02, 0x32, 0xa2, 0xda, 0xa9, 0x11, 0xd9, + 0xc3, 0x29, 0x86, 0x75, 0x32, 0xee, 0x64, 0xd0, 0xa2, 0xc4, 0x0f, 0x04, + 0xc6, 0x14, 0x55, 0x9d, 0x3e, 0xbd, 0xad, 0xb1, 0xca, 0x76, 0x31, 0x68, + 0x61, 0x42, 0xa4, 0xca, 0x94, 0xc8, 0x64, 0xe5, 0xba, 0xd8, 0x35, 0xd8, + 0x87, 0x10, 0x09, 0x88, 0x71, 0x45, 0x08, 0x1c, 0x35, 0x66, 0x7b, 0x15, + 0x16, 0xa8, 0x87, 0xb2, 0xa5, 0xac, 0xf4, 0x6e, 0xd7, 0xf5, 0x5d, 0xb6, + 0xb7, 0x4f, 0xdf, 0x5f, 0xd7, 0xfd, 0xbf, 0xff, 0x5d, 0xba, 0xed, 0x53, + 0x59, 0xeb, 0x46, 0xa2, 0xa1, 0x50, 0xa8, 0x65, 0x63, 0x33, 0xce, 0x35, + 0x0d, 0x33, 0x85, 0x06, 0x01, 0xa0, 0x4c, 0x00, 0x08, 0xd3, 0x01, 0x58, + 0x38, 0x31, 0xb7, 0x1e, 0x70, 0xa0, 0x2d, 0x05, 0x80, 0x44, 0x48, 0x23, + 0x85, 0x40, 0x14, 0x42, 0x04, 0xc5, 0x00, 0x0a, 0xdd, 0x86, 0x40, 0x64, + 0x78, 0x12, 0x03, 0x02, 0x0d, 0x5e, 0x03, 0x9d, 0xfb, 0x2b, 0x62, 0x7d, + 0x91, 0x76, 0x7c, 0x92, 0xe7, 0x22, 0x72, 0x95, 0x50, 0x91, 0xc5, 0xf9, + 0x34, 0x47, 0x11, 0xcd, 0x48, 0x00, 0xe5, 0x48, 0xab, 0x50, 0x0a, 0x61, + 0xe2, 0x6a, 0x90, 0x53, 0x5d, 0xa9, 0xab, 0x49, 0xf6, 0xc3, 0xb0, 0xf5, + 0x41, 0x17, 0x34, 0xfb, 0x1a, 0x10, 0xc4, 0x70, 0xb0, 0xab, 0xcb, 0xe1, + 0xfd, 0x64, 0xfa, 0xa5, 0xda, 0xed, 0x0d, 0x50, 0xb2, 0x25, 0x4b, 0x81, + 0xce, 0x84, 0xa7, 0x11, 0x11, 0x90, 0xdb, 0x9d, 0xa7, 0xd5, 0x7a, 0xbc, + 0xe0, 0x6f, 0x72, 0x6a, 0x3a, 0x1d, 0x29, 0x53, 0xe8, 0x42, 0xa0, 0xb1, + 0xb2, 0x2f, 0xc5, 0x71, 0x64, 0x42, 0x95, 0x6f, 0x9b, 0x89, 0x7b, 0xd5, + 0x03, 0x0c, 0x87, 0xfb, 0x3a, 0xaa, 0x0b, 0x83, 0x9b, 0x12, 0x3d, 0x61, + 0xf3, 0xc7, 0xd3, 0xcc, 0xdc, 0xa8, 0x54, 0x2a, 0xdc, 0x8e, 0xa7, 0x35, + 0x7b, 0xc4, 0xfb, 0x32, 0xe5, 0x47, 0xdc, 0xa1, 0xaa, 0x58, 0x5a, 0x98, + 0x19, 0xdd, 0x42, 0x80, 0xc2, 0xe2, 0xaf, 0x60, 0x4f, 0x31, 0x4c, 0xf1, + 0xe6, 0x59, 0x67, 0x8e, 0xa8, 0x59, 0x5b, 0x57, 0xa1, 0x2d, 0x8a, 0xc8, + 0xea, 0x86, 0x17, 0x6c, 0xef, 0xe3, 0x38, 0x21, 0xda, 0x72, 0x51, 0x41, + 0x7f, 0x46, 0x86, 0x77, 0x16, 0x38, 0x6e, 0xe0, 0xbe, 0x49, 0xb5, 0x30, + 0x35, 0x22, 0x4e, 0x58, 0xf1, 0xa2, 0xdb, 0x6d, 0x4a, 0xe8, 0xcb, 0x2e, + 0x07, 0x5a, 0x79, 0xe3, 0x6a, 0x5d, 0x99, 0x12, 0x74, 0x39, 0x1d, 0xc6, + 0xb3, 0xb5, 0x2b, 0x83, 0xd5, 0x5a, 0xa5, 0xb0, 0xd2, 0x4e, 0xb3, 0x98, + 0x1c, 0x9b, 0x04, 0xb0, 0x8a, 0x2e, 0x42, 0xea, 0x63, 0x3d, 0x00, 0x00, + 0x44, 0x9a, 0xa9, 0x1c, 0x91, 0xa0, 0xf1, 0x29, 0x1f, 0x7a, 0xc1, 0xe3, + 0x0e, 0x51, 0x84, 0x4b, 0xbe, 0x89, 0x66, 0x54, 0x7f, 0xaf, 0xdb, 0x76, + 0xb2, 0xa9, 0xa0, 0xcc, 0xfb, 0x96, 0xbc, 0x69, 0x00, 0xc9, 0x55, 0xbd, + 0x60, 0xc8, 0x5d, 0x61, 0x12, 0x81, 0x21, 0xe0, 0x95, 0x30, 0x49, 0x44, + 0x47, 0x8e, 0x48, 0xa2, 0x90, 0x31, 0xa1, 0x71, 0x19, 0x75, 0xb8, 0x52, + 0x66, 0xb3, 0x61, 0x91, 0x69, 0xe9, 0x9e, 0xcb, 0xaa, 0xff, 0xff, 0x52, + 0x1b, 0x80, 0xad, 0x24, 0x07, 0x04, 0x1e, 0xe1, 0x54, 0x0a, 0x03, 0xc1, + 0x83, 0xa3, 0x15, 0x30, 0x2b, 0x03, 0x43, 0x04, 0x20, 0x97, 0x30, 0xfd, + 0x7e, 0x63, 0x9a, 0xf2, 0x31, 0x30, 0x6f, 0x06, 0x03, 0x01, 0x20, 0x01, + 0x30, 0x0b, 0x00, 0x81, 0x20, 0x05, 0x30, 0x50, 0x02, 0x52, 0xdd, 0xa7, + 0xd2, 0x36, 0x18, 0x0b, 0x04, 0x22, 0x2b, 0x43, 0x65, 0xf1, 0x81, 0xd9, + 0xec, 0x55, 0xa2, 0x8f, 0x82, 0x59, 0x08, 0xc1, 0x0d, 0xa1, 0x82, 0x49, + 0x4b, 0x7b, 0x9c, 0xf8, 0x8c, 0xff, 0xfb, 0xd4, 0x60, 0x1f, 0x08, 0x88, + 0xb9, 0x76, 0xbe, 0x83, 0xcf, 0x7b, 0x70, 0x57, 0xce, 0x98, 0x42, 0x0c, + 0x25, 0x6e, 0x61, 0x51, 0xd6, 0xff, 0x2f, 0x3d, 0xed, 0xc1, 0x71, 0x3a, + 0x61, 0xa4, 0x31, 0x09, 0xb9, 0x4a, 0x49, 0x43, 0x29, 0x3e, 0x3f, 0x14, + 0x62, 0x70, 0x69, 0xb4, 0x8b, 0x82, 0x24, 0xad, 0x58, 0x45, 0xa1, 0xa5, + 0xf0, 0x84, 0x2a, 0xce, 0xd4, 0xd1, 0x96, 0xe4, 0xa3, 0x43, 0x4f, 0xe7, + 0xa8, 0x5b, 0xe6, 0x26, 0x52, 0xe4, 0xa9, 0x3c, 0x90, 0x4e, 0x08, 0x5c, + 0x0d, 0xb8, 0x2e, 0x14, 0xea, 0x46, 0xb6, 0x03, 0xfc, 0xb8, 0x12, 0xdd, + 0x27, 0x59, 0x94, 0x8f, 0x10, 0x69, 0x63, 0xbc, 0xf0, 0x6d, 0x5f, 0x4f, + 0x43, 0x80, 0xc4, 0xf9, 0x5e, 0xf1, 0x0f, 0x3c, 0x55, 0x91, 0x9c, 0x9d, + 0x25, 0xd5, 0xd2, 0x28, 0x9d, 0xc2, 0xcb, 0x1a, 0x1c, 0x9b, 0x58, 0x8f, + 0xa4, 0x37, 0x07, 0xfe, 0xd8, 0x8b, 0x02, 0xea, 0x32, 0x95, 0x5c, 0xb6, + 0xd7, 0xb6, 0x27, 0x6f, 0x63, 0x23, 0x9d, 0xac, 0xb9, 0x36, 0xa2, 0xcf, + 0xc9, 0x99, 0x0c, 0x12, 0xb1, 0x49, 0x2f, 0x57, 0xa7, 0x26, 0x71, 0x43, + 0x14, 0xca, 0x23, 0xc2, 0x2a, 0x25, 0xbd, 0xd1, 0xc8, 0xa1, 0x3a, 0x10, + 0x89, 0xd9, 0x1e, 0xe9, 0xe2, 0xb9, 0x89, 0x8a, 0x33, 0xf6, 0xa4, 0x39, + 0x4d, 0xab, 0xc3, 0x9d, 0x42, 0xb8, 0x58, 0x83, 0x0d, 0x3e, 0x96, 0x64, + 0x86, 0xc8, 0xcc, 0x7f, 0x2a, 0xdb, 0x9b, 0x94, 0xcc, 0x73, 0xc7, 0x4f, + 0x36, 0xc7, 0x43, 0x8c, 0x73, 0xf5, 0x52, 0x7c, 0xd4, 0xee, 0x4c, 0xea, + 0x11, 0x2f, 0x91, 0xa4, 0x9e, 0x10, 0xf3, 0x89, 0xb5, 0x9c, 0x33, 0x4b, + 0x0a, 0x3c, 0x50, 0x9d, 0x0a, 0xb3, 0x18, 0x5f, 0x1e, 0xa7, 0x00, 0x01, + 0xd3, 0xf4, 0x9c, 0xa1, 0xd1, 0x9d, 0xa0, 0x92, 0x04, 0xc1, 0x94, 0x91, + 0x18, 0xa3, 0xa7, 0xb9, 0xbd, 0xc5, 0xf8, 0xf2, 0x33, 0xd9, 0x9f, 0xe7, + 0xcf, 0x20, 0xe8, 0xce, 0x57, 0xa3, 0x37, 0xfd, 0xa4, 0x33, 0x55, 0xd5, + 0x8d, 0x2a, 0x12, 0x9f, 0x96, 0x62, 0x76, 0x78, 0xc5, 0xa1, 0x7b, 0x55, + 0xdd, 0x74, 0xfe, 0xb7, 0xa7, 0x5f, 0xb1, 0x4a, 0x9d, 0x5c, 0x94, 0xba, + 0xd2, 0x9d, 0x77, 0xff, 0xbb, 0x51, 0xaa, 0xeb, 0x44, 0x21, 0x37, 0x23, + 0xaa, 0x8b, 0xce, 0x8e, 0xa2, 0xa8, 0x51, 0x12, 0x2a, 0x0f, 0x10, 0x60, + 0xa1, 0xe8, 0x2e, 0x61, 0x30, 0x93, 0x88, 0xa0, 0xf3, 0xce, 0x32, 0x8b, + 0x32, 0x81, 0x80, 0xd8, 0x06, 0x18, 0x22, 0x01, 0x39, 0x88, 0xf9, 0x3a, + 0x1d, 0x37, 0x85, 0xe8, 0x08, 0x57, 0x8c, 0x0b, 0x80, 0x0c, 0xc0, 0xf4, + 0x01, 0xd6, 0x20, 0x70, 0x4d, 0xfd, 0x3b, 0x22, 0x30, 0x19, 0x01, 0x14, + 0xf0, 0x7e, 0x49, 0xfa, 0x85, 0x20, 0x43, 0x4f, 0x33, 0x00, 0x8d, 0x1c, + 0x49, 0xd3, 0xad, 0x04, 0xe0, 0x21, 0x05, 0xbc, 0xbf, 0x96, 0x28, 0xee, + 0x0c, 0xac, 0x64, 0x51, 0x4e, 0x74, 0x18, 0x43, 0x1c, 0xd7, 0x21, 0xea, + 0x46, 0x04, 0x24, 0xd2, 0x2e, 0xca, 0x66, 0x57, 0x38, 0x6a, 0xc2, 0x5e, + 0x8d, 0x1e, 0x62, 0x54, 0xf0, 0x46, 0xbc, 0x65, 0x2b, 0x11, 0xa5, 0xb0, + 0xa2, 0x7b, 0x48, 0xa7, 0xe2, 0x80, 0xde, 0x7e, 0x55, 0xac, 0x37, 0x45, + 0x57, 0xb0, 0x1a, 0x08, 0x23, 0x95, 0x81, 0x95, 0x12, 0x91, 0x4a, 0x28, + 0xd0, 0x84, 0x34, 0xb9, 0x32, 0x17, 0xa2, 0xdd, 0x14, 0xd0, 0x6c, 0x54, + 0xb5, 0x47, 0x5d, 0xa8, 0x1d, 0x26, 0x54, 0x9d, 0xaf, 0x6a, 0x26, 0x63, + 0xdf, 0x11, 0xa3, 0x9e, 0x8f, 0x54, 0x31, 0x0c, 0x87, 0x16, 0x07, 0x52, + 0x9a, 0x47, 0x23, 0x8b, 0x2b, 0x83, 0x29, 0xe0, 0xfa, 0x54, 0xe4, 0x16, + 0x24, 0xf2, 0xe7, 0x31, 0x56, 0x6e, 0xd9, 0x05, 0x81, 0xfe, 0xdb, 0x61, + 0x39, 0xd9, 0xca, 0x23, 0x8b, 0x53, 0x74, 0x45, 0x99, 0xd9, 0x2b, 0xb7, + 0x18, 0x0e, 0x51, 0xa0, 0x4a, 0x87, 0xc6, 0x4f, 0x56, 0x0a, 0x8a, 0x35, + 0x17, 0x71, 0xac, 0xbe, 0xc7, 0x02, 0x04, 0x07, 0x3c, 0x3f, 0xae, 0xd8, + 0xdc, 0xe0, 0xc7, 0x62, 0x73, 0x88, 0xb8, 0x6d, 0x69, 0x50, 0xc5, 0xca, + 0xab, 0x32, 0x46, 0x97, 0x4b, 0x85, 0x85, 0x6c, 0x06, 0x26, 0x0d, 0x2e, + 0x1b, 0xdc, 0x18, 0x5f, 0xb2, 0xa1, 0x8c, 0xea, 0x24, 0x75, 0x55, 0x26, + 0x51, 0xd0, 0x3e, 0xc8, 0x53, 0xd3, 0x94, 0x2f, 0xd1, 0x6c, 0x8a, 0x57, + 0x61, 0x25, 0x3d, 0xea, 0x0d, 0xc4, 0x60, 0xea, 0xe4, 0x4c, 0x57, 0x22, + 0x6e, 0xbd, 0xd6, 0xab, 0xcc, 0x0c, 0x9b, 0xb2, 0x2f, 0x5d, 0xd3, 0xaa, + 0x18, 0x75, 0x44, 0x3e, 0x72, 0x2e, 0xaa, 0xd3, 0x99, 0x51, 0xa8, 0xca, + 0x79, 0x4e, 0x9b, 0x83, 0x43, 0x35, 0x8c, 0x73, 0xe6, 0x54, 0xb3, 0x8e, + 0x94, 0x9d, 0x1e, 0xc9, 0x95, 0xa9, 0xb2, 0x73, 0xb7, 0xfa, 0x27, 0x67, + 0xb6, 0xce, 0x95, 0xea, 0xb2, 0x75, 0xff, 0xed, 0xbd, 0xdf, 0xd2, 0x93, + 0xd3, 0xbb, 0x4e, 0xe9, 0x96, 0x0c, 0xc0, 0x63, 0x33, 0x94, 0x80, 0xc2, + 0x12, 0xe8, 0x8e, 0xe3, 0x64, 0x46, 0x40, 0xaf, 0x3a, 0x00, 0x20, 0x00, + 0x40, 0x15, 0x98, 0x28, 0x02, 0x11, 0x8b, 0x1a, 0x69, 0x9e, 0x65, 0x8c, + 0x21, 0x87, 0x18, 0x1b, 0x98, 0x23, 0x00, 0x59, 0x82, 0x48, 0x0c, 0x30, + 0x13, 0x01, 0x00, 0x34, 0x4f, 0x84, 0xe8, 0x81, 0x01, 0xc0, 0x18, 0x9e, + 0xad, 0xd8, 0x7e, 0x2d, 0xec, 0xb3, 0x42, 0x8c, 0x51, 0x0b, 0x33, 0x13, + 0xac, 0x64, 0x82, 0xa6, 0xc1, 0x79, 0x99, 0x0c, 0x46, 0x34, 0x1d, 0x01, + 0xd0, 0x72, 0xae, 0x12, 0x4d, 0xff, 0xfb, 0xd4, 0x60, 0x22, 0x0b, 0x08, + 0x97, 0x76, 0x3e, 0xab, 0xcf, 0x7b, 0x70, 0x5d, 0x04, 0xd8, 0x8d, 0x04, + 0x63, 0x4a, 0x22, 0xf5, 0xd8, 0xfa, 0x0f, 0x3d, 0xed, 0xc1, 0x97, 0x18, + 0x62, 0x34, 0x31, 0x99, 0x70, 0xe5, 0xbc, 0x57, 0x15, 0xa5, 0x11, 0xae, + 0x71, 0xa1, 0xf1, 0x8c, 0x77, 0x69, 0x27, 0x04, 0x73, 0x12, 0x91, 0x94, + 0xcb, 0x42, 0x56, 0x9e, 0xb0, 0x1f, 0x11, 0x99, 0x15, 0xce, 0x0d, 0x69, + 0xf5, 0x88, 0xa9, 0xf4, 0x25, 0xdb, 0x22, 0x89, 0xe2, 0x64, 0xe5, 0x50, + 0xb2, 0x1c, 0x89, 0xf3, 0xb5, 0x82, 0xb1, 0xe2, 0xaa, 0x4e, 0xd5, 0xf4, + 0xab, 0x53, 0x02, 0xb6, 0x01, 0x77, 0x54, 0xaa, 0x91, 0x13, 0xae, 0x97, + 0xdb, 0xb2, 0x92, 0x42, 0xe0, 0xa6, 0x98, 0x55, 0x87, 0x9b, 0x82, 0x91, + 0x48, 0xbb, 0x2f, 0x89, 0xe7, 0x4f, 0x54, 0x4b, 0xe7, 0xea, 0xaa, 0x0e, + 0x54, 0x8e, 0x4c, 0x69, 0x95, 0xcc, 0xf9, 0x3f, 0xe2, 0xab, 0x21, 0x3f, + 0x42, 0xda, 0x9a, 0x1f, 0x37, 0xa2, 0x52, 0xec, 0x31, 0x1e, 0x2e, 0x90, + 0xf9, 0x18, 0x5c, 0xce, 0x58, 0x6c, 0x8c, 0x53, 0xb8, 0xca, 0xcb, 0x0d, + 0x46, 0xe1, 0x2c, 0x76, 0x13, 0x69, 0x35, 0x05, 0xc1, 0xd4, 0x08, 0x0f, + 0xa1, 0x3a, 0x8d, 0x11, 0x5a, 0xe4, 0xd6, 0xed, 0x1d, 0xd3, 0x8e, 0x6e, + 0x8b, 0xa2, 0x36, 0x33, 0x46, 0x52, 0xcd, 0xec, 0xd9, 0x4b, 0xbd, 0x6c, + 0xb4, 0xeb, 0xb9, 0xe0, 0x12, 0xd3, 0xa9, 0x59, 0x09, 0xed, 0x8f, 0x15, + 0x82, 0xda, 0xc0, 0x73, 0x9d, 0xee, 0x90, 0x06, 0x21, 0x42, 0x6d, 0x9e, + 0x07, 0x41, 0xea, 0x5e, 0x04, 0x44, 0xfa, 0x7e, 0x18, 0x80, 0x82, 0x38, + 0x09, 0xe8, 0x2b, 0x4d, 0xf2, 0x62, 0x79, 0x4e, 0x00, 0x01, 0x47, 0x13, + 0xa9, 0xbb, 0x1b, 0x41, 0x68, 0x03, 0x36, 0x19, 0x38, 0x84, 0x3f, 0x45, + 0x18, 0x5c, 0xf2, 0x07, 0x7b, 0x14, 0x38, 0x84, 0x72, 0xf3, 0xa7, 0xe7, + 0xf3, 0x9c, 0xb5, 0xf6, 0xf8, 0x99, 0x2b, 0xc2, 0x70, 0x01, 0x68, 0xa3, + 0xba, 0x10, 0xad, 0x41, 0xa0, 0xe0, 0xb1, 0x85, 0x05, 0x83, 0x71, 0x15, + 0x49, 0x7b, 0xd8, 0x15, 0x7a, 0x4e, 0x24, 0xe3, 0x0d, 0x20, 0x42, 0x22, + 0x0d, 0xdc, 0xc1, 0xcd, 0x9a, 0xd7, 0x6a, 0x1e, 0xe5, 0xff, 0xfd, 0x67, + 0x69, 0x30, 0x38, 0x98, 0x22, 0xc1, 0x28, 0xc0, 0x98, 0x10, 0x58, 0x92, + 0xc8, 0x06, 0x04, 0xc7, 0x52, 0x40, 0x05, 0x26, 0x02, 0x41, 0x30, 0x61, + 0x77, 0x12, 0x66, 0xf1, 0xa4, 0xd0, 0x61, 0x02, 0x0d, 0xe6, 0x03, 0x80, + 0x54, 0x2c, 0x29, 0xa6, 0x00, 0x80, 0x0c, 0x60, 0x08, 0x09, 0xa5, 0xe7, + 0x62, 0x2a, 0xec, 0x1a, 0x03, 0x2c, 0xe9, 0x14, 0x0b, 0x1b, 0x1a, 0x95, + 0x56, 0xe6, 0x71, 0xa0, 0x45, 0xb9, 0x52, 0x70, 0xc4, 0x42, 0xd5, 0xc8, + 0x69, 0xf7, 0x15, 0x34, 0x3c, 0xce, 0xe2, 0x1c, 0x76, 0x96, 0xd1, 0xd2, + 0x16, 0xb4, 0x41, 0x86, 0x5c, 0xc4, 0xfd, 0x3c, 0xa6, 0x7e, 0x72, 0x9d, + 0x6e, 0x23, 0xd0, 0x70, 0xa2, 0xcc, 0xd5, 0xc3, 0x92, 0x26, 0xa6, 0xe1, + 0xe8, 0x65, 0xbe, 0x2f, 0xa7, 0x0c, 0x6b, 0x2a, 0x50, 0xb3, 0xa9, 0x22, + 0xf9, 0x43, 0x05, 0xc8, 0xea, 0x36, 0xe0, 0xc2, 0x71, 0x4b, 0xc9, 0x3a, + 0xad, 0x26, 0xa0, 0x2e, 0x06, 0xf1, 0xfc, 0x7e, 0xc4, 0x42, 0x50, 0xe8, + 0xc4, 0x15, 0x4c, 0x7b, 0x33, 0x1f, 0xec, 0x4f, 0xa3, 0x31, 0xc0, 0x60, + 0x9a, 0x0a, 0x94, 0x77, 0x30, 0xab, 0xa7, 0x43, 0x94, 0xaa, 0x43, 0xed, + 0x1c, 0xdd, 0x01, 0x74, 0xed, 0x43, 0x1e, 0x76, 0xd4, 0x2d, 0x42, 0x97, + 0x7e, 0x87, 0x46, 0x57, 0x2b, 0x22, 0x21, 0x89, 0x25, 0xeb, 0xaa, 0xde, + 0xaa, 0x1a, 0x90, 0x95, 0x74, 0x57, 0xca, 0x74, 0x12, 0x94, 0xbf, 0x2a, + 0x5a, 0x5f, 0x35, 0x31, 0x29, 0x15, 0x90, 0x52, 0x4c, 0xca, 0x74, 0x65, + 0x99, 0x90, 0x97, 0x15, 0x6c, 0x27, 0xc9, 0xa4, 0xe5, 0x95, 0x4a, 0x24, + 0x31, 0x55, 0x0d, 0x76, 0xcb, 0x24, 0x67, 0xca, 0x06, 0x27, 0x06, 0xc6, + 0x1d, 0x66, 0xef, 0x9c, 0x17, 0xd7, 0x6a, 0xa5, 0x54, 0x44, 0xea, 0x9d, + 0x58, 0xe6, 0xbe, 0xd4, 0xab, 0x43, 0x9b, 0x9c, 0xd7, 0x2b, 0x85, 0x23, + 0x32, 0xe9, 0x42, 0x7b, 0xaf, 0xc7, 0x4d, 0xb6, 0xb2, 0x19, 0x4c, 0x04, + 0xf5, 0x06, 0x66, 0x30, 0x3c, 0x7a, 0x7e, 0x00, 0x60, 0x66, 0x1a, 0x81, + 0x7a, 0x37, 0x90, 0xf0, 0x2d, 0x9f, 0x2d, 0x29, 0xf0, 0x03, 0x05, 0x34, + 0x23, 0x6f, 0xb9, 0x1a, 0x07, 0xe7, 0x60, 0x00, 0x18, 0x2a, 0xfe, 0x34, + 0x04, 0x69, 0x4e, 0xff, 0x93, 0x15, 0x3c, 0x8d, 0x63, 0xb8, 0xd6, 0x9a, + 0xc9, 0x77, 0xf3, 0xe4, 0x7e, 0x0e, 0x69, 0xc6, 0x84, 0x9a, 0x0d, 0x60, + 0x46, 0xa6, 0xdb, 0x9e, 0xaf, 0xed, 0x7e, 0xf5, 0xe7, 0xfb, 0xca, 0xdb, + 0x85, 0xc5, 0x66, 0x76, 0xa8, 0x48, 0x19, 0x18, 0xd2, 0x63, 0x41, 0x21, + 0x04, 0x0a, 0x78, 0x0a, 0xb6, 0x21, 0x4e, 0x3c, 0x7c, 0xc9, 0xe6, 0x9d, + 0x8b, 0x91, 0xdc, 0x26, 0x5a, 0xe3, 0x0d, 0x7e, 0xcf, 0xf6, 0x9e, 0x30, + 0xe4, 0x11, 0x22, 0xc1, 0x18, 0x26, 0xe6, 0xb8, 0x0c, 0x48, 0x50, 0xe8, + 0x19, 0x43, 0xea, 0x01, 0x0b, 0x41, 0x80, 0x50, 0x13, 0x98, 0x08, 0x83, + 0xc1, 0x82, 0x93, 0x7f, 0x99, 0x3e, 0x0f, 0xc1, 0x81, 0x50, 0x2c, 0x98, + 0x02, 0x82, 0x31, 0x50, 0x12, 0xd5, 0x58, 0x38, 0x18, 0x9d, 0x28, 0x6d, + 0xee, 0x11, 0x00, 0xe3, 0xac, 0xfd, 0x9c, 0x84, 0x39, 0x5c, 0xa2, 0x5d, + 0xb5, 0x28, 0x15, 0xaa, 0x15, 0xff, 0xfb, 0xd4, 0x60, 0x19, 0x08, 0x08, + 0x26, 0x76, 0x3f, 0xab, 0xcf, 0x7b, 0x70, 0x63, 0x66, 0x08, 0x8d, 0x0d, + 0x23, 0x5c, 0x21, 0x95, 0xd8, 0xfc, 0x8f, 0x3d, 0xed, 0xc1, 0x68, 0x20, + 0xa2, 0xb4, 0x22, 0x8d, 0x74, 0x74, 0x43, 0xc5, 0x24, 0x76, 0x9a, 0x64, + 0xed, 0x9d, 0x50, 0x83, 0x46, 0xb3, 0x15, 0x47, 0x59, 0xae, 0xaf, 0x53, + 0x19, 0x4d, 0xec, 0x06, 0xf2, 0x5d, 0x4e, 0x97, 0x55, 0x2e, 0xd1, 0xea, + 0xd5, 0x51, 0xdc, 0x75, 0x21, 0x44, 0xf5, 0x4e, 0x87, 0x36, 0xab, 0x59, + 0x4f, 0xb7, 0x51, 0x39, 0x64, 0x71, 0xb5, 0xa1, 0xd3, 0xb1, 0x21, 0x29, + 0x97, 0x75, 0x39, 0x14, 0x31, 0xd5, 0xb0, 0x99, 0xf4, 0x78, 0xe1, 0x41, + 0x2b, 0xc7, 0x35, 0x1b, 0x83, 0xe7, 0xae, 0xec, 0xfd, 0x7c, 0xf5, 0x57, + 0xb6, 0xa0, 0xfa, 0x36, 0x54, 0xbb, 0x06, 0x8d, 0x65, 0x7c, 0x74, 0xea, + 0xb5, 0xdb, 0xd4, 0xd4, 0x06, 0x16, 0x5f, 0x35, 0xda, 0xd8, 0x17, 0x9c, + 0x99, 0x10, 0xe5, 0x32, 0xa6, 0x6b, 0xc2, 0x57, 0x33, 0xf8, 0x8a, 0x28, + 0x0b, 0x39, 0x9d, 0x58, 0x93, 0x6d, 0x64, 0x56, 0xd5, 0x30, 0xf9, 0xc1, + 0x91, 0xe5, 0x15, 0xf1, 0x96, 0xfc, 0x55, 0xd3, 0xe8, 0x57, 0x57, 0x46, + 0x7d, 0xa6, 0x43, 0xbe, 0x1d, 0x1b, 0x63, 0x42, 0x76, 0xe0, 0xd9, 0x01, + 0xd2, 0xbd, 0xdc, 0x58, 0x4e, 0x32, 0x41, 0x6c, 0xd4, 0x8d, 0xd8, 0x95, + 0x5e, 0xc8, 0xca, 0xe7, 0xe5, 0x63, 0x80, 0xd8, 0xa9, 0x59, 0xbd, 0x14, + 0xce, 0x4b, 0x2c, 0xca, 0x25, 0xdb, 0x13, 0x52, 0xbe, 0x2a, 0xba, 0xf0, + 0xcf, 0xd1, 0xf0, 0xe6, 0x6f, 0x29, 0x52, 0xae, 0x6e, 0x04, 0xf0, 0xdb, + 0x38, 0x65, 0x13, 0xa0, 0xc1, 0x1a, 0x81, 0xc6, 0x3d, 0x07, 0x42, 0xac, + 0x00, 0x12, 0x0e, 0x5e, 0x92, 0x6e, 0xc6, 0x81, 0xff, 0x8e, 0x92, 0x8b, + 0x55, 0x9c, 0xfd, 0xd5, 0xc1, 0x09, 0xb7, 0x36, 0x81, 0x73, 0x89, 0x0c, + 0x05, 0xd1, 0x65, 0xfa, 0xff, 0xf9, 0x7f, 0x9f, 0x97, 0xa9, 0x5a, 0x7a, + 0x97, 0x35, 0x29, 0xf9, 0x1e, 0x5f, 0x09, 0x4e, 0xeb, 0xed, 0x70, 0x65, + 0x01, 0x84, 0x7c, 0x58, 0xf4, 0xd4, 0x71, 0xcc, 0x92, 0x1a, 0x22, 0x40, + 0x31, 0x10, 0x92, 0x00, 0x34, 0xd9, 0x34, 0x24, 0x50, 0x81, 0xa7, 0x4b, + 0x3d, 0xcf, 0x79, 0xc5, 0xa2, 0x2b, 0x43, 0x19, 0xff, 0xea, 0x54, 0x31, + 0x01, 0x45, 0x12, 0x28, 0xe6, 0x0d, 0x1e, 0xe4, 0xac, 0x02, 0x78, 0x24, + 0x04, 0x61, 0xd4, 0x80, 0x09, 0x30, 0x1a, 0x01, 0xf3, 0x03, 0xf0, 0x56, + 0x31, 0x00, 0x5c, 0xb3, 0x89, 0x61, 0x2c, 0x30, 0x96, 0x03, 0x91, 0x60, + 0x73, 0x1e, 0x13, 0x31, 0x60, 0x27, 0x30, 0x4a, 0x01, 0x25, 0x34, 0x7a, + 0x63, 0x06, 0x00, 0xe0, 0x12, 0x89, 0x2f, 0xd1, 0x4e, 0xf1, 0x16, 0x8a, + 0x11, 0xd6, 0x34, 0x42, 0xa0, 0x9e, 0xb0, 0x25, 0x19, 0x51, 0x46, 0x09, + 0x30, 0x68, 0x34, 0x14, 0x48, 0x5a, 0xb4, 0x93, 0xaa, 0x13, 0x53, 0x08, + 0xec, 0x14, 0xf9, 0x73, 0x4e, 0xa6, 0xe4, 0x38, 0x18, 0x4d, 0x72, 0xda, + 0xaf, 0x99, 0x21, 0x84, 0xe4, 0xc4, 0x11, 0x99, 0x70, 0x2e, 0x6c, 0xca, + 0x24, 0x74, 0x95, 0x43, 0x0e, 0x28, 0x05, 0xcd, 0x5a, 0xc8, 0xc6, 0xa3, + 0x37, 0x96, 0x55, 0x91, 0x16, 0xe0, 0x9a, 0x2a, 0xf9, 0xcb, 0xc9, 0xba, + 0x90, 0x3f, 0x19, 0x93, 0xb7, 0x7c, 0x74, 0x9f, 0xef, 0x60, 0xa2, 0x90, + 0xe3, 0x2d, 0x8a, 0x56, 0x58, 0x91, 0xd1, 0x0f, 0x67, 0x55, 0x45, 0x80, + 0xb4, 0xc0, 0x86, 0x4b, 0x3b, 0x83, 0x7a, 0xd3, 0x8a, 0x7d, 0xb2, 0xb7, + 0x3f, 0x55, 0x4c, 0xa7, 0x53, 0x3c, 0xc8, 0x4c, 0x25, 0x63, 0x1a, 0x1a, + 0xce, 0xc4, 0xe4, 0xf1, 0xb9, 0x9d, 0xc1, 0x0d, 0xa2, 0xab, 0x4b, 0xa5, + 0x2a, 0x85, 0xc2, 0x57, 0x6a, 0x87, 0x33, 0x95, 0x46, 0xdd, 0x1a, 0x1d, + 0x63, 0x36, 0x6b, 0xb6, 0xae, 0x95, 0xcb, 0x0c, 0xad, 0x4d, 0x8e, 0x4e, + 0x70, 0x5f, 0xa1, 0x55, 0x8c, 0xa0, 0x55, 0x36, 0xc6, 0x63, 0x4b, 0x43, + 0x61, 0x85, 0x12, 0xee, 0x70, 0xf2, 0xe0, 0xad, 0xa4, 0x58, 0xcf, 0x9d, + 0x2a, 0x26, 0x34, 0xdf, 0xa2, 0x70, 0xb4, 0x86, 0xb8, 0xc4, 0xe9, 0xc9, + 0x13, 0x2a, 0x06, 0x18, 0xa9, 0x06, 0x74, 0x99, 0x54, 0x82, 0x74, 0x82, + 0x4e, 0xc2, 0x51, 0x64, 0x95, 0x8b, 0x62, 0xe4, 0xbd, 0x8e, 0x50, 0x92, + 0x8e, 0xd7, 0x02, 0xc0, 0x10, 0x42, 0x50, 0xf0, 0x00, 0x03, 0x15, 0xb7, + 0x1b, 0x6d, 0x12, 0x47, 0xa2, 0x53, 0x28, 0x24, 0x78, 0x69, 0x8a, 0x74, + 0x44, 0xaf, 0x67, 0x24, 0xc3, 0xa5, 0x7d, 0xdf, 0x45, 0x7a, 0x71, 0xd0, + 0xff, 0x4f, 0x55, 0xce, 0xb7, 0x15, 0x9c, 0xc4, 0x77, 0xd7, 0xe7, 0xff, + 0xbd, 0xdf, 0x42, 0x45, 0xb9, 0x36, 0x57, 0x2c, 0x9a, 0xbb, 0x16, 0x56, + 0x92, 0x6e, 0x5b, 0xe5, 0x7d, 0x38, 0x26, 0x84, 0xd2, 0xa3, 0x44, 0x07, + 0x17, 0xac, 0x3e, 0x38, 0x98, 0xf0, 0xf3, 0x8b, 0x9d, 0x67, 0xff, 0xf2, + 0xca, 0x52, 0xe6, 0xcd, 0x19, 0x60, 0x02, 0x58, 0x40, 0x1f, 0x29, 0x41, + 0x00, 0x7a, 0x00, 0x02, 0x50, 0x10, 0x60, 0x01, 0xc0, 0x3a, 0x50, 0x0e, + 0x66, 0x22, 0x42, 0xfe, 0x72, 0xf4, 0x11, 0x66, 0x12, 0x80, 0x08, 0x60, + 0x2a, 0x06, 0x26, 0x09, 0xc0, 0x8c, 0xa9, 0xcc, 0x01, 0xc0, 0x65, 0xbc, + 0x6c, 0xee, 0xcb, 0x3f, 0x80, 0xab, 0x8c, 0xc2, 0x32, 0x1c, 0x4a, 0xf3, + 0x92, 0xc1, 0x8f, 0x56, 0x74, 0x24, 0xfe, 0x3e, 0x07, 0xd3, 0x00, 0x93, + 0x42, 0x2c, 0xd5, 0x45, 0xe4, 0xff, 0xfb, 0xd4, 0x60, 0x1f, 0x88, 0x08, + 0x9b, 0x76, 0x3f, 0x4b, 0xcf, 0x7b, 0x70, 0x54, 0x27, 0x08, 0xac, 0x08, + 0x43, 0x5d, 0x23, 0xb5, 0xd6, 0xf8, 0x0f, 0x3d, 0xed, 0xc1, 0x87, 0x9b, + 0xa2, 0x74, 0x52, 0xa1, 0x70, 0x62, 0x9e, 0xa2, 0x43, 0x0d, 0x0b, 0x3c, + 0xcd, 0x94, 0x3c, 0xc0, 0x56, 0xa8, 0x8b, 0x53, 0x78, 0xd5, 0x3f, 0x10, + 0x43, 0xec, 0x38, 0x8b, 0x84, 0x87, 0x5b, 0x40, 0x8c, 0xab, 0x0e, 0x84, + 0xb9, 0x26, 0x2d, 0xad, 0xcb, 0x07, 0xac, 0x3e, 0xa2, 0xb1, 0x7e, 0x94, + 0xf2, 0x64, 0x71, 0x71, 0x5b, 0x3a, 0x95, 0x25, 0xfe, 0x21, 0xc8, 0xb0, + 0xbe, 0xaa, 0x26, 0x2e, 0x0e, 0x47, 0xa2, 0x09, 0xa9, 0x0e, 0x3f, 0xd0, + 0x27, 0x6e, 0x50, 0x0a, 0x19, 0x47, 0x9a, 0xad, 0x26, 0x47, 0x1b, 0x26, + 0x82, 0x84, 0xb2, 0x21, 0x6f, 0xe5, 0x68, 0x3a, 0x0d, 0x74, 0xa1, 0xce, + 0xcc, 0xad, 0x51, 0xb1, 0xf7, 0x26, 0x17, 0x33, 0x39, 0xba, 0x1c, 0xaa, + 0x28, 0x6a, 0x68, 0x73, 0xa1, 0xef, 0x14, 0x4d, 0xcd, 0xb7, 0x43, 0xe0, + 0xc9, 0x01, 0x81, 0xea, 0x59, 0x1e, 0xff, 0x0f, 0x9c, 0xde, 0xc6, 0xa2, + 0x81, 0x54, 0xd8, 0xc6, 0xf2, 0x11, 0xd8, 0xaf, 0x8d, 0x01, 0xeb, 0x73, + 0xc7, 0x52, 0x32, 0xaf, 0xb9, 0x31, 0xd5, 0x81, 0xdb, 0x73, 0xd7, 0xee, + 0x4a, 0x05, 0xb7, 0x38, 0x91, 0xe7, 0x57, 0x2b, 0x68, 0xc6, 0xdb, 0x02, + 0x65, 0xb6, 0x26, 0x48, 0xd0, 0xa2, 0x42, 0x78, 0xe1, 0x82, 0xfd, 0x3b, + 0x0b, 0x93, 0x7d, 0x53, 0x8d, 0x4a, 0xf3, 0x8d, 0x55, 0x45, 0xf5, 0xa7, + 0xf1, 0x4e, 0x85, 0x41, 0x09, 0x47, 0x97, 0x35, 0x49, 0x28, 0x50, 0x3d, + 0x20, 0x85, 0xcd, 0xac, 0xf7, 0x02, 0x5c, 0xbf, 0x04, 0xb8, 0xde, 0x54, + 0x9f, 0x40, 0x06, 0x24, 0xb2, 0x87, 0xea, 0x90, 0xf6, 0x8b, 0x4c, 0x48, + 0x96, 0x02, 0x38, 0x94, 0x39, 0x19, 0xd9, 0x94, 0x57, 0xed, 0xdd, 0x18, + 0xcc, 0xce, 0x0a, 0xd9, 0x14, 0xd5, 0xaf, 0xce, 0x4d, 0x93, 0xf2, 0x85, + 0x78, 0xd3, 0x9c, 0x22, 0x91, 0x52, 0x77, 0x94, 0xcd, 0xbf, 0x93, 0xb2, + 0x42, 0x33, 0x33, 0x88, 0xc1, 0x48, 0xe0, 0x51, 0x8f, 0x63, 0x90, 0xc7, + 0x08, 0xd8, 0x23, 0x0b, 0x36, 0x2e, 0xa5, 0xee, 0x50, 0x82, 0xa7, 0x3f, + 0xff, 0xff, 0x4b, 0xc6, 0x8d, 0x60, 0xc5, 0xbc, 0x24, 0x03, 0x00, 0xef, + 0x34, 0xb0, 0xa0, 0x03, 0x18, 0x15, 0x82, 0xa9, 0x87, 0xe2, 0x3f, 0x1c, + 0xcc, 0x0c, 0xb9, 0x83, 0xf0, 0x1b, 0x18, 0x04, 0x80, 0xa1, 0x87, 0x30, + 0x15, 0x85, 0xc0, 0x3c, 0xc0, 0x0c, 0x10, 0x0b, 0xb5, 0x12, 0xac, 0x5a, + 0xa1, 0xe0, 0x05, 0x61, 0xe1, 0xd6, 0x5b, 0x62, 0xa8, 0x19, 0x89, 0x32, + 0xa8, 0x97, 0x9c, 0x69, 0xe5, 0xd0, 0xca, 0x54, 0xe1, 0x0b, 0x3e, 0x92, + 0x46, 0x6a, 0x8d, 0xc8, 0xca, 0x0e, 0x93, 0xb1, 0x20, 0x30, 0xcc, 0x23, + 0x70, 0xa4, 0x2b, 0x13, 0x83, 0x0c, 0x5b, 0x1c, 0x50, 0xa4, 0x6b, 0x0a, + 0xda, 0xf9, 0x7a, 0x33, 0x0b, 0x81, 0xe7, 0x32, 0x38, 0xe4, 0x74, 0x84, + 0x29, 0x8b, 0x04, 0x04, 0x89, 0x2f, 0x53, 0x45, 0x46, 0x97, 0xa4, 0xfb, + 0x21, 0xea, 0x45, 0xb5, 0x21, 0xea, 0x83, 0xb5, 0xcc, 0xe1, 0x2e, 0x67, + 0x99, 0xb8, 0xc0, 0xa0, 0x3f, 0x14, 0x4d, 0xe8, 0xd8, 0x30, 0x57, 0x2b, + 0xb2, 0xba, 0x1a, 0x1b, 0x44, 0xaa, 0xb1, 0xa1, 0x03, 0xb4, 0x52, 0x3a, + 0x02, 0xbd, 0xf1, 0x92, 0x4d, 0xfc, 0x08, 0x88, 0x72, 0x50, 0xcb, 0x2d, + 0xea, 0xc3, 0xac, 0xd0, 0x54, 0xb9, 0x99, 0xc9, 0xc5, 0x19, 0xaa, 0xd8, + 0xf8, 0xe4, 0x6f, 0x44, 0x21, 0x89, 0x54, 0xfa, 0xa5, 0xc9, 0x65, 0x36, + 0xa1, 0x34, 0xd6, 0x53, 0x28, 0xb3, 0xfd, 0x0b, 0x35, 0xd6, 0x5c, 0x63, + 0x3f, 0x4e, 0x3a, 0x50, 0x9f, 0xce, 0x30, 0x50, 0xf4, 0x35, 0xbd, 0xec, + 0x43, 0x2d, 0x34, 0x87, 0xb5, 0x2b, 0x19, 0x15, 0xec, 0x8a, 0x26, 0x28, + 0xea, 0xa6, 0x53, 0xa0, 0xf7, 0x42, 0xb2, 0xad, 0x39, 0xd2, 0x71, 0x8e, + 0x02, 0x54, 0xa0, 0x62, 0x3f, 0x21, 0x9d, 0x30, 0x1d, 0xa8, 0x99, 0x22, + 0x2d, 0xb9, 0x41, 0x6b, 0x50, 0x1d, 0x2a, 0xd5, 0xd1, 0x6e, 0x55, 0x2b, + 0xd3, 0x88, 0x64, 0x13, 0xa9, 0x8e, 0x12, 0x16, 0x4e, 0x8e, 0x25, 0xd2, + 0x28, 0xc1, 0x36, 0x4c, 0x89, 0x04, 0xc0, 0x4e, 0x52, 0xea, 0xd7, 0xe7, + 0x43, 0x51, 0xd8, 0x10, 0xd7, 0x16, 0x62, 0x11, 0xa2, 0x78, 0x84, 0x00, + 0x00, 0x91, 0x4b, 0x5a, 0x7d, 0xc8, 0xd8, 0xf4, 0x32, 0x34, 0x80, 0x29, + 0x08, 0x1f, 0x66, 0x67, 0x2c, 0x56, 0xaa, 0x50, 0x43, 0x87, 0xc4, 0x83, + 0xf3, 0xd5, 0xa9, 0xbe, 0xaf, 0xd5, 0x71, 0x5f, 0x8b, 0x8c, 0x09, 0x08, + 0x13, 0xd4, 0x8b, 0x0b, 0x87, 0xe1, 0xdc, 0xd5, 0x2f, 0xba, 0x5f, 0xf1, + 0xaf, 0x3c, 0x45, 0x7b, 0x5d, 0xd7, 0x73, 0x35, 0x76, 0xef, 0x15, 0x3f, + 0x14, 0xa5, 0x58, 0x2e, 0x58, 0xfb, 0x18, 0x1c, 0xad, 0x84, 0x6a, 0x73, + 0x2e, 0x32, 0x54, 0xe3, 0x21, 0x22, 0x36, 0x8f, 0x43, 0x3f, 0xe8, 0xbb, + 0xb4, 0x38, 0x05, 0x13, 0x63, 0x4d, 0x8d, 0x08, 0xe6, 0x57, 0x1a, 0x31, + 0x29, 0x00, 0x24, 0xcc, 0x20, 0x0d, 0x00, 0xa2, 0xa8, 0x21, 0x98, 0x11, + 0x22, 0xf1, 0x97, 0x50, 0xa0, 0x98, 0x08, 0x01, 0x72, 0x5f, 0x18, 0x3e, + 0x81, 0x4a, 0x35, 0x18, 0x1a, 0x00, 0xda, 0x60, 0x3c, 0x6f, 0x30, 0x80, + 0x07, 0x64, 0xad, 0xe0, 0xda, 0x71, 0x42, 0x61, 0x19, 0x4e, 0xcb, 0x82, + 0xa5, 0xd5, 0x91, 0xeb, 0x26, 0xff, 0xfb, 0xd4, 0x60, 0x1a, 0x08, 0x08, + 0x3f, 0x75, 0xbf, 0xb3, 0xcf, 0x7b, 0x72, 0x52, 0x28, 0x08, 0xef, 0x04, + 0xa3, 0x5d, 0x22, 0xe1, 0xda, 0xfa, 0xaf, 0x3d, 0xed, 0xc1, 0x5d, 0x9c, + 0x22, 0x74, 0x11, 0x8d, 0x70, 0x89, 0x60, 0x39, 0x93, 0x25, 0x5b, 0xa5, + 0xd2, 0x00, 0xe3, 0x4e, 0x93, 0x62, 0x4c, 0x10, 0x35, 0x93, 0xfd, 0x38, + 0x8d, 0x53, 0xbf, 0x2f, 0xe7, 0xe2, 0xb1, 0x8d, 0x38, 0xb4, 0x6c, 0x23, + 0x4d, 0x63, 0xfd, 0x74, 0x8c, 0x2d, 0xe2, 0xe0, 0xab, 0x37, 0xe2, 0xbf, + 0x46, 0x31, 0xde, 0x0d, 0xd0, 0xe4, 0x31, 0x90, 0xef, 0x82, 0xe1, 0x89, + 0xdd, 0x2e, 0x0a, 0x14, 0x59, 0xe6, 0xaf, 0x3e, 0x5c, 0x50, 0xa4, 0xa1, + 0xfc, 0x84, 0x27, 0x8d, 0xc4, 0x63, 0x74, 0x45, 0x44, 0x08, 0x91, 0x54, + 0xc8, 0x5a, 0x99, 0x40, 0xea, 0x8a, 0xc6, 0x98, 0x10, 0xa0, 0x44, 0x59, + 0x73, 0x57, 0x2a, 0x4f, 0x62, 0x64, 0xac, 0x70, 0x8c, 0xbc, 0xc2, 0x91, + 0x8a, 0x86, 0xce, 0xb3, 0x87, 0x8b, 0x82, 0x78, 0x85, 0xa9, 0x15, 0xe7, + 0x82, 0x51, 0xfc, 0x15, 0x13, 0x5a, 0x81, 0xe6, 0x5b, 0xa7, 0x77, 0x1d, + 0xcd, 0xea, 0xd6, 0x20, 0xa7, 0x14, 0xaf, 0xf2, 0xee, 0x90, 0x19, 0x66, + 0xbb, 0x8c, 0x6c, 0xb9, 0xb2, 0x6a, 0x0b, 0x64, 0x47, 0x8e, 0xa2, 0xab, + 0x65, 0x83, 0x15, 0x9a, 0x94, 0x66, 0x66, 0x70, 0xdb, 0xc9, 0x56, 0x6b, + 0x0d, 0xb2, 0x77, 0x4f, 0xd5, 0x90, 0x19, 0xb6, 0xd4, 0xf5, 0x43, 0x2d, + 0x70, 0x7e, 0xc5, 0x7f, 0x15, 0x1e, 0xf1, 0xaf, 0x38, 0x73, 0x51, 0x27, + 0x22, 0x38, 0xa7, 0xe2, 0xae, 0x25, 0x73, 0x2e, 0xc8, 0x60, 0xf4, 0x97, + 0xb1, 0x86, 0x5e, 0x4e, 0xf4, 0xea, 0x30, 0x43, 0xde, 0x88, 0x29, 0x5c, + 0x16, 0x00, 0x00, 0x01, 0x0c, 0xce, 0x92, 0xdb, 0x6c, 0x6c, 0x7b, 0xfe, + 0x07, 0x05, 0x13, 0x41, 0xa2, 0xa5, 0x77, 0x16, 0x74, 0x65, 0x67, 0xb3, + 0x35, 0x34, 0x65, 0xd0, 0x8a, 0xbf, 0xf3, 0x2f, 0x3c, 0xbf, 0x2e, 0xe4, + 0xe3, 0x34, 0x59, 0x16, 0x39, 0x68, 0xe5, 0xdc, 0x95, 0xce, 0xf3, 0x06, + 0xc4, 0x89, 0xda, 0xd5, 0x10, 0xe5, 0x34, 0x63, 0xcc, 0xdc, 0x9e, 0x39, + 0x43, 0x73, 0xf5, 0x08, 0x65, 0x9c, 0x61, 0xc5, 0x16, 0x15, 0x11, 0x9e, + 0xbc, 0x07, 0x0c, 0x82, 0x47, 0xe0, 0xc7, 0xff, 0xff, 0xbb, 0xea, 0x6b, + 0x18, 0x60, 0x1a, 0x02, 0x46, 0x02, 0x00, 0x8a, 0x60, 0xa2, 0xaa, 0x86, + 0x5b, 0x62, 0x66, 0x60, 0x76, 0x04, 0xc2, 0x00, 0x41, 0x30, 0x7d, 0x06, + 0x04, 0x5b, 0x12, 0x03, 0xa4, 0xf0, 0x77, 0xdf, 0x70, 0xa0, 0x19, 0x2e, + 0x7a, 0x10, 0xba, 0x5b, 0x5b, 0x32, 0x18, 0xd2, 0x01, 0x23, 0x62, 0x3e, + 0xd3, 0x61, 0xc0, 0xa4, 0x4e, 0x93, 0x46, 0x14, 0x52, 0x3d, 0x1e, 0x34, + 0x81, 0xbe, 0x38, 0xce, 0x62, 0x1e, 0x9a, 0x25, 0x74, 0x3b, 0x4d, 0x26, + 0x42, 0xf8, 0xd4, 0xad, 0x50, 0x85, 0xf3, 0xe2, 0x7e, 0x79, 0x99, 0xea, + 0xc3, 0x21, 0x22, 0x6e, 0x35, 0x30, 0x1f, 0xab, 0x49, 0xa4, 0x9a, 0x69, + 0x42, 0x70, 0x31, 0x1f, 0xe8, 0xd3, 0xc5, 0x52, 0xd2, 0x5f, 0xf6, 0x7f, + 0x32, 0x3c, 0x66, 0x47, 0xab, 0x9a, 0x15, 0xa9, 0xc6, 0xf5, 0x41, 0xf6, + 0x8f, 0x71, 0xaa, 0x70, 0xea, 0x51, 0xca, 0x73, 0x32, 0xb7, 0xad, 0x9b, + 0xa8, 0x53, 0xf2, 0x2c, 0xd6, 0x67, 0xbc, 0x05, 0x0a, 0x21, 0x04, 0x5b, + 0x98, 0x21, 0x1f, 0xaa, 0xb5, 0x59, 0x80, 0x73, 0x1b, 0xad, 0x71, 0xcf, + 0x84, 0xf1, 0xf2, 0x9f, 0x43, 0x8e, 0x72, 0xfe, 0x65, 0x13, 0xc5, 0x51, + 0x3d, 0x3f, 0x4a, 0x48, 0xa9, 0xc4, 0xdb, 0x7b, 0x6b, 0xf5, 0x71, 0xed, + 0x09, 0x75, 0x32, 0xca, 0x72, 0x48, 0x4a, 0xb6, 0x95, 0xcb, 0x56, 0x9c, + 0xbb, 0x9b, 0x1a, 0xa9, 0x70, 0xc5, 0x16, 0x06, 0xa0, 0xaf, 0x2c, 0x47, + 0x56, 0xc1, 0x79, 0x11, 0x84, 0xbf, 0x2c, 0xc1, 0x61, 0x50, 0x3f, 0xaa, + 0xa5, 0x1a, 0x95, 0x84, 0xa4, 0x9b, 0x6f, 0xac, 0x84, 0x27, 0x5e, 0xab, + 0xd4, 0xca, 0xa4, 0x74, 0xf4, 0x56, 0xb6, 0x40, 0x76, 0xd4, 0x9c, 0x51, + 0xc8, 0xa6, 0x96, 0x07, 0x5a, 0x41, 0x97, 0xd4, 0x3d, 0x2a, 0xbe, 0x9a, + 0x52, 0xe9, 0xf1, 0xa6, 0x62, 0xa1, 0x2b, 0x44, 0x2c, 0xb6, 0x98, 0xb3, + 0x0e, 0xb1, 0xfc, 0x49, 0x4b, 0x15, 0xc8, 0x18, 0xcc, 0x01, 0xf4, 0x1d, + 0x2d, 0x9b, 0x00, 0x00, 0xe3, 0x6e, 0x38, 0xe4, 0x72, 0x31, 0xe3, 0xa9, + 0x88, 0x48, 0x21, 0x86, 0x6e, 0x6b, 0x90, 0xdb, 0x8a, 0xed, 0x39, 0xff, + 0x49, 0xb4, 0x35, 0xbf, 0x54, 0xa6, 0xf9, 0xbc, 0xb4, 0xb3, 0xcb, 0x94, + 0x8d, 0x96, 0x79, 0xcc, 0xcd, 0x93, 0x78, 0x5f, 0x91, 0x1f, 0xe7, 0xf4, + 0xcd, 0xb6, 0xac, 0x44, 0xab, 0xf9, 0x88, 0x63, 0x1e, 0x1a, 0x09, 0x46, + 0x19, 0x5b, 0x58, 0x10, 0x1e, 0x65, 0xfb, 0x0b, 0x3c, 0x6a, 0x10, 0x38, + 0x91, 0x6f, 0x67, 0xff, 0x4c, 0xa8, 0x7a, 0xe2, 0x71, 0x18, 0x84, 0xb8, + 0x58, 0xaa, 0x08, 0xce, 0xbd, 0x75, 0x01, 0x02, 0x01, 0x80, 0x28, 0x00, + 0x18, 0x0b, 0x00, 0xb9, 0x85, 0x29, 0xe2, 0x1a, 0x5d, 0x80, 0x49, 0x82, + 0xf8, 0x01, 0x04, 0x02, 0xe9, 0x86, 0x50, 0x0f, 0x02, 0x80, 0x75, 0x8c, + 0x97, 0x7d, 0xf7, 0x79, 0xc0, 0x20, 0x3b, 0x06, 0xb4, 0xb3, 0x79, 0x3e, + 0x79, 0x17, 0x35, 0xd8, 0xfb, 0x23, 0x69, 0x35, 0x39, 0x79, 0x65, 0x37, + 0x47, 0xf9, 0x8c, 0xe4, 0x21, 0x6f, 0x82, 0x6c, 0x9e, 0x22, 0x5d, 0x92, + 0xf2, 0xfa, 0x41, 0xc6, 0x3a, 0xff, 0xfb, 0xd4, 0x60, 0x23, 0x89, 0x08, + 0xac, 0x76, 0xbe, 0xab, 0xcf, 0x7b, 0x70, 0x59, 0x46, 0x68, 0xad, 0x14, + 0x43, 0x5d, 0x24, 0x4d, 0xda, 0xf8, 0x0f, 0x3f, 0x0d, 0xc1, 0x79, 0x26, + 0xa2, 0x34, 0x21, 0x8d, 0x78, 0x8d, 0x2e, 0x2c, 0x80, 0xd8, 0xed, 0x47, + 0x1c, 0x32, 0xde, 0x3f, 0xce, 0xd3, 0x41, 0x46, 0x75, 0x24, 0x95, 0x4b, + 0x84, 0xbb, 0x41, 0xd8, 0x51, 0x29, 0xe8, 0x77, 0x16, 0x03, 0xa1, 0xc9, + 0xbe, 0x57, 0x78, 0x3a, 0x56, 0x53, 0x4c, 0xcf, 0x9c, 0xd8, 0x94, 0x88, + 0xf4, 0x74, 0x14, 0x29, 0x99, 0x91, 0x44, 0x8e, 0x44, 0x96, 0x35, 0xcb, + 0x52, 0xed, 0x0f, 0x6f, 0x67, 0x4a, 0xb6, 0x3d, 0x85, 0x01, 0x3f, 0xab, + 0x9c, 0x27, 0xba, 0x4a, 0x74, 0x64, 0x0e, 0x7c, 0xb2, 0xa3, 0xf0, 0x86, + 0x1f, 0xd1, 0x26, 0x57, 0x27, 0x54, 0x6d, 0xec, 0x0a, 0x86, 0x84, 0x9a, + 0xe9, 0x84, 0xbb, 0x52, 0xae, 0x2a, 0x35, 0x2c, 0xb1, 0x95, 0xc8, 0x83, + 0x98, 0xd3, 0x59, 0x86, 0xc8, 0x8b, 0xc3, 0x43, 0x75, 0x0b, 0xee, 0xcc, + 0xb5, 0x96, 0x45, 0x32, 0x05, 0x46, 0xb7, 0x09, 0xad, 0xbc, 0xf3, 0x6f, + 0xa3, 0x84, 0x58, 0x2f, 0x5b, 0x4f, 0x36, 0x04, 0xec, 0x33, 0xdd, 0xa3, + 0xb3, 0x9c, 0xec, 0xba, 0x7f, 0x19, 0x77, 0x55, 0x4b, 0x32, 0x8a, 0x24, + 0x05, 0x03, 0x6b, 0x8a, 0xf2, 0x2d, 0x0e, 0x88, 0xd4, 0x96, 0x73, 0x76, + 0xd2, 0xab, 0x88, 0x8a, 0x78, 0xa2, 0x80, 0xc6, 0xac, 0x95, 0xe1, 0x29, + 0x42, 0x19, 0x4c, 0xd1, 0x5f, 0x4c, 0xa2, 0x5b, 0x8d, 0x35, 0xb5, 0x29, + 0x6a, 0x61, 0x3b, 0x24, 0x01, 0x66, 0x51, 0x00, 0x86, 0x3d, 0x60, 0x80, + 0xa8, 0xa0, 0x06, 0x32, 0x1e, 0xfd, 0x43, 0x80, 0x00, 0x90, 0x39, 0xe9, + 0x6a, 0x46, 0x89, 0x1f, 0x6c, 0x22, 0x05, 0x13, 0x6e, 0xee, 0xe5, 0xb8, + 0x08, 0x18, 0xa0, 0xe8, 0x98, 0x9f, 0xb6, 0xe8, 0xa8, 0x6f, 0xcf, 0x85, + 0x9e, 0x47, 0x54, 0x0f, 0xf7, 0x93, 0x42, 0xb4, 0x98, 0x28, 0x23, 0x4d, + 0xc9, 0x19, 0x24, 0x3f, 0x32, 0xb5, 0xfd, 0xb6, 0x73, 0x61, 0x67, 0x78, + 0x3c, 0x0c, 0x00, 0x46, 0x84, 0x32, 0x04, 0x5c, 0xe8, 0x99, 0x02, 0x88, + 0x78, 0x32, 0xd2, 0xe8, 0x01, 0xc4, 0xcf, 0x40, 0x22, 0x48, 0xa7, 0xff, + 0xfd, 0x35, 0x36, 0xd7, 0x00, 0x04, 0xc7, 0x45, 0x0d, 0x12, 0x02, 0x4b, + 0xa9, 0x2e, 0x84, 0x80, 0x84, 0xc1, 0xbc, 0x81, 0x0d, 0x47, 0x41, 0xe8, + 0x30, 0x2d, 0x82, 0xc0, 0x90, 0x60, 0x08, 0x0e, 0xe3, 0xc0, 0x0a, 0x99, + 0x00, 0xa0, 0x1e, 0x78, 0x50, 0x06, 0x22, 0x01, 0x25, 0x9e, 0xdc, 0x09, + 0xb9, 0xc0, 0x1a, 0x91, 0x64, 0x16, 0x63, 0x8c, 0x1c, 0xe5, 0x69, 0x6c, + 0x51, 0xb4, 0x0f, 0x49, 0x06, 0x4e, 0x18, 0x67, 0xea, 0xb4, 0x90, 0x9b, + 0xe5, 0xb4, 0xc6, 0x46, 0x21, 0x26, 0x29, 0xba, 0x74, 0xa6, 0x87, 0x01, + 0xbc, 0x49, 0x4d, 0x21, 0xda, 0x30, 0x4e, 0xe8, 0xe5, 0x21, 0x2f, 0x55, + 0x1e, 0x4b, 0x23, 0x30, 0xed, 0x2f, 0x41, 0x96, 0x74, 0xb2, 0x94, 0x45, + 0xc1, 0x77, 0x29, 0x7a, 0xeb, 0xca, 0xaf, 0x46, 0x25, 0xee, 0xb3, 0x59, + 0x78, 0x25, 0x7d, 0x7e, 0xb2, 0x74, 0xeb, 0xd1, 0x52, 0x56, 0x73, 0x69, + 0xe8, 0x5e, 0x68, 0xe4, 0x65, 0xb8, 0xca, 0xa2, 0xae, 0xf3, 0xcb, 0xde, + 0x30, 0x59, 0xd6, 0x83, 0x41, 0x3e, 0xe9, 0x60, 0xc9, 0x2a, 0x52, 0xb7, + 0x49, 0x0c, 0x55, 0xf8, 0x91, 0x57, 0x87, 0x69, 0xdf, 0x38, 0x2e, 0xfb, + 0x59, 0x84, 0x30, 0x3b, 0xb4, 0xd2, 0xf8, 0x35, 0x9b, 0x46, 0x5c, 0x18, + 0x7b, 0x18, 0xec, 0xd4, 0x38, 0xe3, 0xc3, 0x12, 0xe8, 0x72, 0x41, 0x9b, + 0xb1, 0x43, 0x24, 0x82, 0xde, 0x08, 0xcc, 0x6e, 0xa6, 0xa7, 0x62, 0xb6, + 0x24, 0x91, 0x4f, 0xa9, 0x18, 0x96, 0xd9, 0xb1, 0x0d, 0xcb, 0x62, 0x72, + 0x58, 0xf5, 0xc7, 0xfe, 0x92, 0x5e, 0xd6, 0x20, 0x19, 0x7d, 0x67, 0xc2, + 0x2b, 0x05, 0xb5, 0xd6, 0x56, 0xeb, 0x48, 0x32, 0xa4, 0xa3, 0x84, 0xbb, + 0x72, 0xe7, 0x3a, 0x5b, 0x29, 0x96, 0x43, 0xf4, 0xaf, 0xfc, 0xaa, 0x5c, + 0xea, 0x54, 0x97, 0x50, 0xc9, 0xee, 0xc6, 0xe5, 0xf6, 0x5d, 0x97, 0x29, + 0xfd, 0x83, 0x6b, 0xe7, 0x1b, 0xc7, 0x51, 0x1b, 0x6f, 0xc4, 0xef, 0x27, + 0xde, 0x47, 0x41, 0x89, 0x43, 0xe9, 0xe8, 0xcb, 0x58, 0x33, 0x28, 0x65, + 0x82, 0x10, 0xbc, 0x50, 0x53, 0x3f, 0x42, 0x63, 0x4b, 0x1a, 0xb2, 0xbc, + 0x74, 0x1e, 0x1e, 0x80, 0x00, 0x71, 0xc5, 0x13, 0x6d, 0xc6, 0xd8, 0xd2, + 0x1d, 0xdd, 0x1e, 0x08, 0x61, 0x40, 0x66, 0x24, 0xca, 0xd4, 0xb0, 0xd1, + 0x66, 0x09, 0x69, 0x67, 0x4c, 0xbb, 0xce, 0x9d, 0xee, 0xae, 0x6f, 0xab, + 0x6f, 0x99, 0x21, 0x5f, 0x6f, 0x52, 0xe1, 0x5f, 0x20, 0x64, 0x71, 0x39, + 0x51, 0x8a, 0x26, 0x82, 0x78, 0x77, 0xbb, 0xf1, 0x8f, 0x62, 0xee, 0xcd, + 0x3e, 0x0a, 0x2b, 0x6a, 0x0e, 0x75, 0xfa, 0xda, 0x1f, 0xe5, 0x9a, 0xe4, + 0x85, 0x9e, 0xad, 0x15, 0xc5, 0x76, 0xca, 0xb3, 0x47, 0xff, 0xfb, 0x4d, + 0x16, 0x11, 0x02, 0x23, 0xd4, 0x60, 0x22, 0x64, 0x73, 0x9c, 0x21, 0x07, + 0x43, 0xea, 0x00, 0x91, 0x03, 0xfe, 0x5b, 0x83, 0x09, 0xc0, 0x33, 0xce, + 0x44, 0x24, 0xd3, 0x4a, 0x23, 0x28, 0xc0, 0xc2, 0x10, 0x20, 0xc1, 0x60, + 0x2e, 0x33, 0x27, 0x79, 0x14, 0xce, 0x0a, 0x82, 0x4c, 0x61, 0xde, 0x7e, + 0x94, 0x6b, 0xb3, 0xa8, 0xe8, 0x36, 0x57, 0x90, 0x6a, 0xd7, 0xe7, 0xba, + 0xd4, 0x07, 0x66, 0x92, 0x14, 0xff, 0xfb, 0xd4, 0x60, 0x19, 0x89, 0x08, + 0x0f, 0x76, 0xbf, 0x2b, 0xaf, 0x7b, 0x70, 0x57, 0xe2, 0x68, 0xaf, 0x04, + 0x69, 0x38, 0x22, 0xd9, 0xd8, 0xf8, 0x0e, 0xbd, 0xed, 0xc1, 0x8d, 0xb9, + 0x61, 0xe4, 0x61, 0x09, 0xb8, 0x3e, 0x4c, 0x78, 0xa7, 0xb5, 0xcb, 0xaa, + 0xbf, 0x26, 0x3b, 0x4a, 0x5d, 0x28, 0x5f, 0x0e, 0x33, 0xe9, 0x28, 0x76, + 0x28, 0xd1, 0x97, 0x41, 0x19, 0xd1, 0x11, 0x86, 0x82, 0xbd, 0xfb, 0x9a, + 0x28, 0xe3, 0x72, 0xda, 0xed, 0xd9, 0xce, 0x65, 0xae, 0xc9, 0xda, 0x12, + 0xe9, 0x3c, 0x77, 0x27, 0x9b, 0x5f, 0x39, 0xae, 0x51, 0x47, 0x92, 0x99, + 0xea, 0xae, 0x19, 0x88, 0xd2, 0xfe, 0x69, 0xcc, 0x57, 0x12, 0x5e, 0xa4, + 0x41, 0x44, 0xaa, 0xe6, 0x75, 0x09, 0xee, 0xd2, 0x88, 0x76, 0xc3, 0x01, + 0x20, 0xaa, 0x3c, 0x92, 0xaa, 0x53, 0x82, 0xab, 0x68, 0x4c, 0x58, 0x2e, + 0x6a, 0x96, 0x17, 0xcb, 0x98, 0xac, 0x4f, 0xe3, 0x31, 0x2b, 0x94, 0x69, + 0x1b, 0xa4, 0x77, 0xaa, 0xe5, 0x5b, 0x76, 0x08, 0x2c, 0xe9, 0xd8, 0xbb, + 0x61, 0x70, 0x8e, 0xd0, 0xf5, 0xe3, 0x1a, 0x36, 0x3e, 0xd8, 0x58, 0x62, + 0xc7, 0x91, 0xe1, 0xcc, 0xfe, 0x8f, 0x58, 0x58, 0x94, 0xbd, 0xc5, 0xb5, + 0xad, 0x53, 0xb7, 0x90, 0xe2, 0x6b, 0x37, 0x66, 0xec, 0x10, 0xa6, 0x86, + 0xac, 0x64, 0x4b, 0xa2, 0xe1, 0x3f, 0x7f, 0x06, 0x06, 0x9f, 0x30, 0xb6, + 0xab, 0x61, 0x2b, 0xd7, 0x49, 0x05, 0x93, 0xf2, 0x3b, 0xd6, 0x2b, 0x9a, + 0xec, 0xe9, 0x52, 0x64, 0xaa, 0xe5, 0x02, 0x95, 0x18, 0x88, 0x4a, 0x96, + 0x04, 0x90, 0xd7, 0x51, 0x8f, 0x51, 0x78, 0x2e, 0xa0, 0xcf, 0x1e, 0xe0, + 0x76, 0x06, 0xf9, 0x7b, 0x49, 0xb9, 0xc3, 0x8e, 0x00, 0x00, 0x06, 0x26, + 0x89, 0x1a, 0x3b, 0x5c, 0x90, 0x71, 0x2f, 0xf1, 0x67, 0xc2, 0x6d, 0x44, + 0xd6, 0xca, 0x9c, 0x5f, 0x64, 0x08, 0xda, 0x98, 0xd5, 0xb4, 0xbe, 0x87, + 0x82, 0x2a, 0x62, 0x04, 0x63, 0xcc, 0x1f, 0x12, 0x0b, 0x90, 0x34, 0x19, + 0x30, 0x0e, 0x03, 0x4a, 0xb8, 0x6b, 0x3e, 0xc5, 0x19, 0x48, 0xb3, 0xc0, + 0xaa, 0x55, 0x41, 0x90, 0x78, 0x5d, 0x81, 0xdb, 0x0e, 0xd0, 0x91, 0x47, + 0x87, 0x58, 0x3a, 0x83, 0x82, 0x88, 0x14, 0x78, 0xbb, 0x1b, 0xff, 0xd3, + 0xea, 0x69, 0xa5, 0x39, 0x64, 0x77, 0xa4, 0x50, 0x6a, 0xa5, 0x1a, 0x3e, + 0x3e, 0x22, 0x02, 0x0c, 0x13, 0x4c, 0x4e, 0xfd, 0x15, 0x92, 0xf8, 0x20, + 0x07, 0x30, 0x5c, 0x24, 0x7a, 0x4c, 0x51, 0x03, 0x10, 0xd1, 0x78, 0x2c, + 0x01, 0x78, 0x53, 0x09, 0xd9, 0x2f, 0x89, 0x32, 0x0e, 0x4c, 0x07, 0xf1, + 0xb8, 0x91, 0x30, 0x0e, 0x24, 0x4a, 0x5c, 0x7e, 0x9c, 0xc1, 0xfc, 0x50, + 0xa3, 0x06, 0x99, 0xd2, 0x0f, 0xf2, 0xb1, 0x3d, 0x18, 0xfa, 0x3a, 0x08, + 0x01, 0x8a, 0x2c, 0x24, 0x25, 0x44, 0x0c, 0xc3, 0xf8, 0xb8, 0x9b, 0x43, + 0xf0, 0x5d, 0x15, 0x85, 0xd2, 0x42, 0x7a, 0x92, 0x2e, 0xa6, 0x6c, 0xe3, + 0x90, 0xbe, 0x98, 0xcf, 0x14, 0xcc, 0x02, 0xba, 0x75, 0x31, 0x40, 0x2f, + 0xea, 0x76, 0x02, 0xc6, 0xa5, 0x39, 0x10, 0xe7, 0x4f, 0x90, 0x85, 0x1d, + 0xdb, 0xe1, 0xb4, 0x3b, 0x1f, 0x6a, 0xbd, 0x21, 0xf1, 0x17, 0x67, 0x9b, + 0xc6, 0x03, 0x45, 0x85, 0x44, 0xaa, 0x66, 0x3a, 0x9c, 0xd1, 0x67, 0x59, + 0x06, 0x42, 0x0f, 0x05, 0xcb, 0x51, 0xa6, 0x40, 0x97, 0xcf, 0x75, 0x0a, + 0x18, 0x83, 0x4b, 0xa7, 0x95, 0x8c, 0xcb, 0x99, 0x4f, 0xb3, 0x4d, 0x2c, + 0x9d, 0x6e, 0x3e, 0x17, 0xa0, 0x25, 0xa1, 0x22, 0xe2, 0x59, 0x81, 0xeb, + 0x12, 0x45, 0x0a, 0x53, 0xbe, 0x5c, 0x6a, 0x66, 0xe6, 0x05, 0x60, 0xfc, + 0x6c, 0x32, 0x1b, 0x34, 0xad, 0x8e, 0xbc, 0x86, 0x16, 0xfc, 0x2c, 0xb6, + 0x24, 0xee, 0xa0, 0x42, 0x1f, 0x94, 0x4c, 0x48, 0x7c, 0x56, 0x78, 0xee, + 0x95, 0x2c, 0xd0, 0x55, 0xe6, 0x0b, 0xd3, 0x79, 0xb5, 0x37, 0xb6, 0x57, + 0x46, 0x24, 0x45, 0x0b, 0xf4, 0xd2, 0xdd, 0x15, 0x0c, 0xcb, 0x84, 0xd6, + 0x8e, 0xd8, 0x49, 0x37, 0xce, 0x4b, 0x39, 0x7c, 0x93, 0x65, 0x88, 0x9e, + 0x46, 0xab, 0x4f, 0xf5, 0xd9, 0xc6, 0x8c, 0x3d, 0x17, 0x68, 0xa2, 0xf6, + 0xfc, 0xe3, 0x25, 0x06, 0x61, 0x33, 0x1b, 0xe0, 0x39, 0xa7, 0xc9, 0x88, + 0x0c, 0xe0, 0x0f, 0x8a, 0x30, 0x62, 0x18, 0xe6, 0xa0, 0x41, 0xc0, 0xc4, + 0x3d, 0x2a, 0xf0, 0x0f, 0xfb, 0x5b, 0xbf, 0xe3, 0xfe, 0xc7, 0x64, 0xea, + 0x26, 0xd1, 0x00, 0xf2, 0xce, 0x3b, 0x25, 0x8a, 0xea, 0xcd, 0xf6, 0x43, + 0xdc, 0xf7, 0x5b, 0x31, 0x9d, 0xdd, 0x96, 0x66, 0x6d, 0xef, 0xc9, 0x4a, + 0xdc, 0xaa, 0x88, 0xe8, 0x90, 0x68, 0xc9, 0x76, 0x35, 0x95, 0x0a, 0x31, + 0x99, 0x76, 0x46, 0x47, 0x55, 0x64, 0x18, 0x8c, 0xaa, 0xa4, 0x23, 0x10, + 0xcd, 0x62, 0x21, 0x59, 0xcb, 0x22, 0x4c, 0x8a, 0xc5, 0xd3, 0xdc, 0xfa, + 0x56, 0xed, 0x6a, 0x3b, 0xba, 0xda, 0xc9, 0x6f, 0xff, 0xfe, 0xdf, 0x46, + 0x67, 0xb3, 0xae, 0xa8, 0xa9, 0x95, 0x89, 0x15, 0x0c, 0x4e, 0x70, 0xd1, + 0xa8, 0xe7, 0x78, 0x38, 0x37, 0x1f, 0x04, 0x2a, 0x96, 0xaf, 0xfe, 0x2f, + 0xb4, 0x83, 0x03, 0xb1, 0xce, 0xaa, 0x09, 0x73, 0xdf, 0xd1, 0xe1, 0xcc, + 0x20, 0x14, 0x24, 0x7d, 0x59, 0x7b, 0x9c, 0x90, 0x4e, 0xe3, 0x8a, 0x29, + 0x0a, 0x93, 0xf0, 0xb1, 0xb8, 0x44, 0x32, 0xd5, 0x68, 0x5a, 0xe8, 0xf8, + 0x57, 0x2b, 0x1b, 0xd5, 0x4a, 0xc2, 0x74, 0x8f, 0x27, 0xa6, 0x04, 0x8a, + 0x82, 0x85, 0x12, 0xa4, 0x27, 0xff, 0xfb, 0xd4, 0x60, 0x1d, 0x80, 0x07, + 0xb4, 0x75, 0xc1, 0x4b, 0x8f, 0x7b, 0x72, 0x63, 0x08, 0x38, 0xad, 0x15, + 0x03, 0x5d, 0x22, 0xe5, 0xd8, 0xf8, 0xae, 0xbd, 0xed, 0xd1, 0x71, 0xa0, + 0x22, 0xfc, 0x55, 0x8d, 0x74, 0x27, 0xa1, 0xec, 0x91, 0x27, 0x03, 0x79, + 0xb0, 0xed, 0x49, 0x9d, 0x88, 0x4c, 0x08, 0x89, 0xe6, 0x6a, 0x25, 0x49, + 0xc9, 0x79, 0x2f, 0xaa, 0x24, 0x72, 0x21, 0xd9, 0x2b, 0x99, 0x8d, 0xf9, + 0xf4, 0x4f, 0x50, 0x92, 0xe2, 0x39, 0x5e, 0x43, 0x1c, 0xc9, 0x83, 0x39, + 0x12, 0x70, 0x1c, 0x2a, 0xf3, 0xc8, 0xf3, 0x35, 0xac, 0xce, 0xa0, 0x4f, + 0x34, 0xd9, 0xcd, 0xb8, 0xfe, 0x2d, 0xb4, 0x4b, 0xb8, 0xab, 0x0e, 0xfa, + 0x9d, 0x33, 0x47, 0x5c, 0x9e, 0xac, 0x44, 0xb9, 0x44, 0x4b, 0xdb, 0xd3, + 0x88, 0x46, 0xcf, 0xc8, 0x8a, 0xd4, 0x92, 0xb6, 0x3a, 0x78, 0x60, 0x18, + 0xca, 0x95, 0x9a, 0x2f, 0x3d, 0xcd, 0xcf, 0xc8, 0x89, 0x85, 0xea, 0xaa, + 0xd0, 0xd2, 0x5a, 0xa1, 0x84, 0xad, 0x8e, 0x84, 0xcb, 0x0d, 0x4b, 0xbd, + 0x2c, 0x41, 0x56, 0xa2, 0x22, 0x97, 0xd5, 0xca, 0xc2, 0x6a, 0xee, 0x56, + 0x6a, 0x8f, 0x01, 0x0e, 0x61, 0xae, 0x60, 0x40, 0xcd, 0xe3, 0x41, 0xdc, + 0x7b, 0xcb, 0xe4, 0xa4, 0x0a, 0x5f, 0x33, 0x43, 0x8d, 0xf3, 0x16, 0xf9, + 0xd6, 0x61, 0xdf, 0x56, 0x89, 0xbb, 0x6e, 0x59, 0x35, 0x3b, 0xfc, 0x6b, + 0x1b, 0x86, 0xf7, 0x2f, 0x64, 0x6e, 0xca, 0x76, 0x5d, 0x2a, 0x1e, 0x2f, + 0xbc, 0x2e, 0xac, 0x4d, 0xc9, 0x44, 0xf4, 0x87, 0xa4, 0x74, 0x21, 0x82, + 0x60, 0x00, 0x31, 0xc7, 0xe2, 0x4a, 0x36, 0x91, 0x1c, 0x9b, 0x31, 0x58, + 0x34, 0xce, 0xb0, 0xaa, 0xd6, 0xcc, 0x0f, 0x83, 0x71, 0xc1, 0xca, 0xc1, + 0xaf, 0x15, 0xbc, 0xcd, 0x73, 0xc4, 0xb5, 0x7d, 0x35, 0xdc, 0xfc, 0xe4, + 0xe4, 0x8a, 0xc4, 0x4c, 0x42, 0xc9, 0x34, 0x2f, 0x28, 0xe7, 0xc3, 0x16, + 0x64, 0xa6, 0xe8, 0xe0, 0xf8, 0xe8, 0x4a, 0x64, 0xa8, 0x73, 0xca, 0x29, + 0x9a, 0x43, 0xc9, 0x5b, 0xcc, 0x8c, 0xb8, 0x8a, 0x8d, 0x03, 0x03, 0x60, + 0xa0, 0x14, 0x83, 0xd6, 0xb6, 0x8a, 0xe3, 0x26, 0x90, 0x1d, 0x47, 0xff, + 0xf4, 0xed, 0x94, 0x2c, 0x80, 0x28, 0xb9, 0xe1, 0x44, 0x05, 0x47, 0xa0, + 0x04, 0x90, 0xf1, 0x00, 0x10, 0x00, 0x3a, 0x60, 0x80, 0x48, 0xc3, 0xda, + 0xec, 0xef, 0x50, 0xa0, 0xc2, 0x30, 0x04, 0x28, 0x02, 0x18, 0x52, 0x11, + 0xb0, 0xe3, 0x07, 0xc4, 0x36, 0xb2, 0xce, 0xdb, 0x60, 0x40, 0x03, 0x93, + 0xf8, 0x00, 0xbc, 0xe7, 0x1f, 0x85, 0xfc, 0x68, 0x93, 0x04, 0xd2, 0xb0, + 0xfb, 0x53, 0x9c, 0x24, 0xf0, 0x7f, 0x96, 0x15, 0x2e, 0x0c, 0xc1, 0x69, + 0x25, 0xca, 0xa6, 0x15, 0xb1, 0x49, 0x62, 0x4a, 0x15, 0x3a, 0x0a, 0xc3, + 0xf4, 0x61, 0x97, 0xc1, 0x4d, 0x8e, 0xac, 0x4f, 0xb1, 0xa4, 0x93, 0xc9, + 0x45, 0x2a, 0x24, 0xf5, 0x5f, 0x46, 0x92, 0x26, 0x32, 0x1e, 0x62, 0x94, + 0x0c, 0xb8, 0x39, 0xca, 0x22, 0x6c, 0xf8, 0xde, 0x43, 0x54, 0xa4, 0xc9, + 0xbc, 0x97, 0x5d, 0x14, 0x27, 0xc5, 0xc5, 0xc9, 0x24, 0x74, 0xa7, 0x8e, + 0x05, 0x42, 0x6d, 0x44, 0xa8, 0x66, 0x90, 0x76, 0x2a, 0x9b, 0x8e, 0x86, + 0x04, 0x92, 0xf1, 0xf9, 0x0e, 0x0a, 0x1d, 0xec, 0x5c, 0x0d, 0x23, 0xe9, + 0x9d, 0x94, 0xca, 0x42, 0x51, 0xec, 0x2d, 0xa5, 0x8c, 0xec, 0x43, 0x15, + 0xe8, 0x5b, 0x14, 0xaa, 0xf6, 0x58, 0x2a, 0xbe, 0xba, 0x4a, 0x39, 0xb3, + 0x40, 0x91, 0x44, 0x6c, 0x1d, 0x0e, 0x4e, 0x4f, 0x94, 0xc6, 0x82, 0xec, + 0xb7, 0x27, 0xaf, 0x22, 0x98, 0xfe, 0x84, 0x7b, 0xbd, 0x58, 0x4a, 0xaa, + 0xdb, 0x4f, 0xc4, 0x6b, 0x72, 0xb0, 0xbe, 0x95, 0x91, 0x4d, 0xe6, 0x56, + 0xf3, 0x95, 0x62, 0x03, 0x0c, 0x77, 0x25, 0xe6, 0xd7, 0x28, 0x32, 0x32, + 0x4c, 0x73, 0x31, 0x17, 0xb5, 0x0a, 0x93, 0x6b, 0x53, 0xb7, 0x34, 0x9f, + 0xed, 0x90, 0x1a, 0xae, 0x7c, 0xac, 0xa7, 0xf4, 0x86, 0x1e, 0xac, 0x0c, + 0xec, 0x25, 0xc4, 0xff, 0x48, 0x21, 0xb1, 0x50, 0xb3, 0x09, 0xe9, 0xca, + 0x4c, 0x90, 0x87, 0x12, 0x73, 0x11, 0x88, 0xeb, 0x86, 0x9c, 0x43, 0xca, + 0x74, 0x28, 0xb6, 0xbd, 0x4e, 0xce, 0x42, 0xc9, 0x3a, 0x30, 0x25, 0x25, + 0xe5, 0x80, 0xc8, 0x13, 0x03, 0x41, 0xe0, 0x00, 0x28, 0x9a, 0xab, 0x3c, + 0xa6, 0xdb, 0x89, 0x11, 0xf6, 0x03, 0x87, 0x11, 0x9a, 0xd7, 0xb5, 0x79, + 0x72, 0x27, 0x9b, 0x6a, 0xae, 0xa2, 0xe2, 0x92, 0x43, 0xc9, 0x4d, 0xff, + 0xbe, 0x39, 0x47, 0xf8, 0xff, 0x9f, 0x0c, 0xc8, 0xbb, 0x0c, 0xe1, 0xf5, + 0x2f, 0x4f, 0x8d, 0xbc, 0x2a, 0x4e, 0xc1, 0xb7, 0x32, 0xb9, 0xee, 0x4b, + 0x76, 0x3b, 0xb4, 0xb3, 0x93, 0xea, 0x13, 0x1d, 0x22, 0x54, 0x99, 0xa9, + 0x16, 0x54, 0x71, 0x73, 0x47, 0xc7, 0xae, 0x27, 0x73, 0x8f, 0x14, 0xe7, + 0x90, 0xd7, 0xff, 0xff, 0xc7, 0x54, 0x32, 0x82, 0x07, 0x1a, 0xe1, 0x76, + 0x22, 0xf3, 0xeb, 0x01, 0xa0, 0xb2, 0xa0, 0xb0, 0x24, 0x80, 0xb1, 0x81, + 0xf4, 0xc9, 0x97, 0x64, 0x91, 0x80, 0xe0, 0x3b, 0x8a, 0x60, 0xd8, 0x00, + 0xb6, 0x4c, 0x11, 0x08, 0x95, 0x1c, 0x19, 0x11, 0xa4, 0xc9, 0xcb, 0x3f, + 0x97, 0x11, 0xcb, 0xb9, 0x7b, 0x47, 0x34, 0xa2, 0x20, 0x92, 0xd4, 0xd9, + 0x33, 0x66, 0x18, 0xe7, 0xbd, 0x8f, 0xc4, 0xf0, 0xf2, 0x2f, 0x2c, 0xe6, + 0x49, 0xea, 0xa6, 0x53, 0xa7, 0xa8, 0xce, 0xfd, 0x94, 0x96, 0x1d, 0xc5, + 0xce, 0x39, 0xd8, 0x82, 0x37, 0xff, 0xfb, 0xd4, 0x60, 0x25, 0x00, 0x08, + 0x5c, 0x76, 0xbf, 0x33, 0xaf, 0x7b, 0x70, 0x60, 0xe8, 0x38, 0xcf, 0x15, + 0x03, 0x5d, 0x20, 0x09, 0xdb, 0x03, 0x2e, 0x3d, 0xed, 0xc1, 0x96, 0x1e, + 0xe2, 0xb4, 0x11, 0x99, 0x74, 0x8f, 0x18, 0x04, 0xa4, 0xc5, 0x7a, 0x84, + 0x1c, 0x06, 0x22, 0x40, 0xbe, 0x96, 0x05, 0x2b, 0x72, 0x12, 0x67, 0xb9, + 0x18, 0x4b, 0x29, 0x54, 0x20, 0xf7, 0x1c, 0xeb, 0xea, 0xe6, 0x53, 0x98, + 0xbe, 0xec, 0xbe, 0x9d, 0xc4, 0x9c, 0xe5, 0x39, 0x50, 0x0e, 0x4a, 0x23, + 0xde, 0x0a, 0xd9, 0xa2, 0xad, 0x78, 0x7f, 0x2b, 0xdb, 0x2f, 0x23, 0x02, + 0x14, 0x2c, 0xa3, 0xf7, 0x68, 0xe8, 0xc8, 0xa4, 0x38, 0xe4, 0x5c, 0xae, + 0xa7, 0x64, 0x57, 0x28, 0x18, 0xdf, 0xbd, 0x6c, 0x56, 0x25, 0x96, 0xcf, + 0xeb, 0xb6, 0x3f, 0x56, 0x45, 0x62, 0x59, 0xa2, 0xb5, 0x8c, 0xd1, 0x5d, + 0xca, 0x8b, 0x72, 0xf4, 0x54, 0x40, 0x6b, 0x3e, 0xd2, 0x51, 0x1a, 0x1b, + 0xdc, 0x1e, 0x44, 0x64, 0x85, 0x09, 0x17, 0xb4, 0x4a, 0xb6, 0x15, 0x19, + 0x54, 0xd0, 0x51, 0x67, 0x24, 0x07, 0x3b, 0x29, 0x59, 0xf3, 0x01, 0xd4, + 0xec, 0xbb, 0x72, 0x95, 0x8a, 0x0b, 0x6b, 0xdc, 0x2b, 0xf6, 0xb2, 0xaf, + 0x66, 0x78, 0xf6, 0x90, 0x58, 0xd6, 0xd3, 0xb1, 0x14, 0xda, 0x95, 0x42, + 0xb0, 0xfa, 0x54, 0xf1, 0xc0, 0xa5, 0x47, 0x37, 0xb9, 0x21, 0x6e, 0x1a, + 0x3d, 0x94, 0xcb, 0xb5, 0x2a, 0x00, 0xae, 0x4f, 0x35, 0x06, 0xa5, 0x32, + 0x4b, 0x11, 0xec, 0x65, 0x62, 0x21, 0x40, 0x87, 0x93, 0x72, 0xe6, 0x2b, + 0xa6, 0xa0, 0x01, 0xe0, 0xe5, 0x92, 0x70, 0x00, 0x10, 0x66, 0x68, 0x55, + 0x76, 0x69, 0x1b, 0x43, 0xed, 0x3b, 0xc0, 0x82, 0x23, 0xe0, 0xe6, 0x26, + 0x40, 0x78, 0x84, 0x2d, 0x24, 0x1a, 0xab, 0xa4, 0x3c, 0xf4, 0xb7, 0xf3, + 0x72, 0xca, 0xde, 0x4f, 0xd2, 0x86, 0xa8, 0xe9, 0x48, 0x21, 0x68, 0x75, + 0xa5, 0xb1, 0x8c, 0x97, 0xb9, 0x75, 0x36, 0xa6, 0x7e, 0xbd, 0x1a, 0xa2, + 0x3d, 0x8e, 0x56, 0x13, 0xd3, 0x43, 0x4c, 0x85, 0x69, 0x2d, 0x09, 0x90, + 0x5d, 0x54, 0xe8, 0xb7, 0x64, 0x1f, 0x3e, 0x2e, 0x1f, 0x26, 0x2c, 0xf1, + 0x29, 0x27, 0x31, 0xa4, 0xe3, 0x88, 0xbd, 0xdf, 0xff, 0xfa, 0x2a, 0x3e, + 0x8b, 0x9e, 0x01, 0x3a, 0x86, 0x24, 0xdd, 0x20, 0x03, 0x5b, 0xd5, 0x55, + 0x42, 0xe5, 0x11, 0x81, 0x0c, 0x09, 0xad, 0x39, 0xb1, 0x41, 0x22, 0x7a, + 0x4c, 0x48, 0x5b, 0x00, 0x61, 0xab, 0x7c, 0xec, 0x40, 0x8a, 0x6a, 0xdf, + 0xb4, 0x31, 0x6d, 0x34, 0x4b, 0x83, 0x29, 0xdc, 0x90, 0x39, 0x4e, 0xd5, + 0x12, 0x1a, 0x69, 0x1c, 0x43, 0x14, 0x93, 0xa1, 0xea, 0x23, 0xd8, 0xfe, + 0x2d, 0xe5, 0x81, 0x49, 0xa5, 0x51, 0x3d, 0x3f, 0x83, 0x85, 0xe2, 0x69, + 0x44, 0x8f, 0x33, 0xe4, 0x57, 0x9b, 0x89, 0x16, 0xf7, 0x17, 0x12, 0x7c, + 0xc6, 0x85, 0x1f, 0x4c, 0x04, 0xdc, 0xc4, 0x3b, 0x0e, 0x66, 0x74, 0x12, + 0x38, 0xbf, 0x5d, 0xb8, 0xd3, 0x56, 0xa9, 0x17, 0x10, 0x5d, 0x19, 0x6a, + 0x45, 0x3a, 0x3d, 0x4d, 0xb4, 0xe9, 0xc2, 0x8f, 0xd2, 0x9c, 0x96, 0xb2, + 0xa7, 0x1d, 0x32, 0x2a, 0x53, 0x4d, 0xa4, 0xb6, 0x22, 0x75, 0xb4, 0xc1, + 0x7c, 0x75, 0xb2, 0xa8, 0xa3, 0x2b, 0x9f, 0x32, 0xb0, 0x39, 0xb3, 0xad, + 0xaa, 0x98, 0xd2, 0xa8, 0x41, 0x84, 0x8c, 0x3c, 0x10, 0xf8, 0x0d, 0x6e, + 0x0f, 0x11, 0x6b, 0xa2, 0x6d, 0x09, 0xac, 0xea, 0x4e, 0xaa, 0x54, 0x29, + 0x68, 0x2d, 0xe9, 0xf7, 0xd4, 0x4d, 0x3a, 0x51, 0x97, 0xa4, 0x2d, 0x85, + 0x0a, 0x52, 0x27, 0x27, 0x72, 0x27, 0x87, 0xe9, 0xda, 0x75, 0xca, 0xae, + 0x92, 0x02, 0xb7, 0x53, 0x5d, 0x48, 0xb2, 0xe2, 0x9d, 0x6a, 0x97, 0x70, + 0x9e, 0xb6, 0xcf, 0x16, 0x92, 0xdd, 0x9d, 0xb6, 0xef, 0xfe, 0xab, 0x24, + 0xb5, 0xd4, 0xf6, 0xdb, 0xea, 0xea, 0x1d, 0xdf, 0x6e, 0xd1, 0xf7, 0x09, + 0x5e, 0xe3, 0x88, 0x10, 0x9b, 0x9b, 0xe3, 0x43, 0x81, 0x77, 0x28, 0x8a, + 0xbd, 0xa8, 0x53, 0xea, 0x89, 0x68, 0xfe, 0x0b, 0x63, 0xa4, 0x39, 0xb1, + 0xcd, 0x77, 0x08, 0x99, 0x17, 0xd6, 0xf2, 0x5e, 0x7d, 0x2f, 0x3f, 0xd8, + 0x00, 0xb7, 0x2c, 0x6e, 0x38, 0xd5, 0x48, 0x8f, 0x09, 0xc4, 0x36, 0x33, + 0xa1, 0xc0, 0xe2, 0x82, 0x44, 0xc5, 0x5d, 0xea, 0x1c, 0xf7, 0x4d, 0x54, + 0xe1, 0x97, 0x14, 0xfd, 0x49, 0x78, 0xcf, 0x3e, 0x2b, 0xfe, 0xcf, 0xde, + 0x5b, 0xff, 0x92, 0xcd, 0x91, 0xf6, 0xbc, 0x01, 0x9c, 0xc1, 0x9e, 0x11, + 0xb3, 0x9a, 0x2b, 0x4f, 0x22, 0x48, 0x0d, 0xfa, 0x5a, 0x8e, 0x33, 0x98, + 0xed, 0x3f, 0x4a, 0x7c, 0x6f, 0x57, 0xfe, 0xa0, 0x6e, 0x94, 0x48, 0x0e, + 0x23, 0x89, 0x01, 0xa4, 0x06, 0x05, 0x4d, 0x9a, 0x51, 0x84, 0xcd, 0x9d, + 0x20, 0x84, 0x7f, 0xff, 0xfa, 0x25, 0xc0, 0xce, 0x34, 0x61, 0x44, 0x44, + 0x81, 0xa1, 0xcd, 0x2c, 0x0a, 0x2a, 0x00, 0x80, 0x01, 0x77, 0x4c, 0x09, + 0x02, 0x8c, 0x5c, 0x77, 0x4f, 0xe0, 0x1e, 0x0c, 0x2c, 0x01, 0x4c, 0x01, + 0x06, 0x04, 0x21, 0x5a, 0x2b, 0x01, 0x89, 0xf4, 0xac, 0x74, 0x17, 0xd2, + 0x99, 0x36, 0xcd, 0x24, 0xf8, 0x6e, 0x25, 0xa5, 0xfd, 0xb8, 0xbe, 0x97, + 0x44, 0x41, 0x2a, 0x44, 0x16, 0x11, 0x99, 0x66, 0x53, 0xa4, 0xb1, 0x97, + 0xe5, 0x78, 0xc0, 0x38, 0xc9, 0x12, 0x78, 0x94, 0xc2, 0x6f, 0x26, 0x2c, + 0x26, 0x93, 0x09, 0xe1, 0xa3, 0xd8, 0xdd, 0x78, 0xce, 0xa5, 0x45, 0xa2, + 0x9f, 0x1f, 0xa8, 0x04, 0x3d, 0xff, 0xfb, 0xd4, 0x60, 0x29, 0x8b, 0x88, + 0x6f, 0x76, 0x3e, 0xab, 0xaf, 0x7b, 0x70, 0x6b, 0xce, 0xa8, 0x7d, 0x0d, + 0x03, 0x6e, 0x63, 0x39, 0xda, 0xf8, 0x0f, 0x3d, 0xed, 0xc1, 0x95, 0xb9, + 0x62, 0x34, 0x24, 0x09, 0xb9, 0xb9, 0xb0, 0xe5, 0xb2, 0xb1, 0x48, 0x5c, + 0x93, 0xa4, 0xf5, 0x08, 0x39, 0x93, 0xa6, 0xba, 0xb5, 0x94, 0x85, 0x30, + 0xbd, 0x37, 0x93, 0xee, 0x06, 0x1a, 0x39, 0x5e, 0x8a, 0x25, 0x29, 0x34, + 0x37, 0x2b, 0x6a, 0xa3, 0x92, 0x3b, 0x84, 0xc7, 0xb3, 0xb8, 0x2c, 0x39, + 0x6d, 0x5c, 0x2b, 0xcc, 0x66, 0xd4, 0xeb, 0x71, 0x9e, 0x79, 0xb3, 0xc2, + 0x3d, 0xda, 0x1f, 0x23, 0x2c, 0xa7, 0x53, 0x9c, 0x68, 0x5a, 0xdc, 0xee, + 0x0e, 0x07, 0xf3, 0x2b, 0x75, 0x94, 0x26, 0xba, 0x61, 0xfa, 0x81, 0xd2, + 0xc4, 0x8d, 0x4c, 0xb3, 0x3d, 0x6c, 0x56, 0xa7, 0x1b, 0xd7, 0x2d, 0x0d, + 0xcc, 0xa9, 0xa4, 0x4b, 0x9a, 0x21, 0x2e, 0xb2, 0x75, 0xed, 0xa9, 0xc1, + 0x5f, 0x2a, 0x9d, 0x48, 0x6e, 0xc1, 0x5d, 0xbd, 0x76, 0xe6, 0xac, 0x6b, + 0x80, 0xcb, 0x56, 0x06, 0xed, 0xc4, 0x4e, 0x35, 0xaa, 0x1a, 0xe3, 0x59, + 0xb1, 0x81, 0x11, 0x25, 0xdd, 0xa7, 0x9d, 0xb0, 0xa4, 0xd5, 0x28, 0x64, + 0x3b, 0x3b, 0x55, 0x2c, 0x36, 0x28, 0x93, 0x51, 0x56, 0x18, 0x1a, 0x1c, + 0x66, 0x86, 0x80, 0x55, 0x9f, 0x95, 0xeb, 0x4a, 0xa5, 0x96, 0x02, 0x7a, + 0xd0, 0x58, 0x0b, 0xea, 0x58, 0xcf, 0x0c, 0x14, 0x20, 0xbd, 0x0b, 0x29, + 0x7a, 0x67, 0x5d, 0x93, 0x54, 0x29, 0x46, 0x28, 0x49, 0x91, 0xe2, 0xdc, + 0x00, 0x02, 0x12, 0xd2, 0x1d, 0xa4, 0xdb, 0x63, 0xec, 0x13, 0x6c, 0x3c, + 0x33, 0x26, 0x4b, 0x10, 0x8d, 0xcc, 0xdb, 0x7d, 0x45, 0xff, 0xf2, 0x32, + 0x18, 0x50, 0x1a, 0x84, 0x20, 0x30, 0x56, 0xb5, 0x68, 0x47, 0xaa, 0xe3, + 0xbf, 0x89, 0xee, 0x7e, 0x37, 0x0b, 0xe7, 0x72, 0x77, 0x2d, 0xce, 0x52, + 0xcd, 0x78, 0xc8, 0xb3, 0x9e, 0xf3, 0x87, 0x34, 0xe4, 0xb9, 0xd7, 0xd4, + 0x88, 0xa4, 0x34, 0x42, 0xb9, 0x19, 0x7c, 0x2b, 0x0b, 0xd9, 0xbf, 0xe4, + 0x63, 0x0c, 0xa1, 0xa9, 0x2f, 0x78, 0xd4, 0xaf, 0xff, 0xcf, 0xcf, 0xfe, + 0xf3, 0xff, 0x79, 0x95, 0x53, 0xe7, 0x2c, 0x3f, 0x25, 0xfa, 0x66, 0x62, + 0x62, 0x07, 0xaa, 0xfb, 0xb3, 0xd3, 0x4b, 0x30, 0x82, 0x70, 0x65, 0x2a, + 0x7c, 0x89, 0x01, 0x19, 0x84, 0x10, 0x4b, 0x1a, 0x88, 0x00, 0xc8, 0xb0, + 0x48, 0x98, 0x08, 0x80, 0x19, 0x83, 0x08, 0x03, 0x31, 0x33, 0x03, 0x40, + 0x1e, 0x53, 0x75, 0xce, 0xfa, 0x98, 0x01, 0x80, 0x32, 0xdd, 0x95, 0x06, + 0x49, 0xe0, 0x59, 0x05, 0x89, 0xc6, 0x93, 0x50, 0x18, 0xb3, 0x85, 0xfa, + 0x39, 0x18, 0x68, 0x0b, 0x5b, 0x3a, 0x58, 0xc1, 0x2c, 0x0e, 0x4e, 0x03, + 0x68, 0xe3, 0x70, 0x35, 0xcc, 0x97, 0x85, 0x80, 0xf6, 0x1d, 0x84, 0x10, + 0x85, 0x86, 0x69, 0x7d, 0x53, 0x21, 0x64, 0x19, 0x09, 0x56, 0x37, 0x94, + 0x44, 0xdd, 0x3a, 0xbc, 0x5f, 0x45, 0x21, 0x44, 0xe4, 0xd6, 0x77, 0xc5, + 0x57, 0x3d, 0x55, 0x93, 0xf3, 0x34, 0xec, 0x4d, 0xb3, 0x9c, 0x65, 0xb0, + 0x98, 0x0d, 0xd5, 0x2a, 0x98, 0xfa, 0x49, 0x1b, 0xeb, 0x47, 0x7b, 0x01, + 0xd0, 0x85, 0xa8, 0xde, 0xa9, 0x0b, 0xa3, 0x63, 0xc5, 0xd2, 0x73, 0x27, + 0x5c, 0x65, 0x79, 0x3e, 0x3c, 0x94, 0xfd, 0x97, 0xc5, 0x72, 0x82, 0x69, + 0x28, 0x49, 0xda, 0x88, 0xe5, 0x73, 0x57, 0x22, 0x14, 0x47, 0x19, 0xe4, + 0x5c, 0x0b, 0xca, 0x75, 0x18, 0x62, 0x45, 0x54, 0xb5, 0x10, 0xb8, 0x68, + 0x63, 0x32, 0xdb, 0x01, 0x3b, 0x71, 0x7b, 0x39, 0xdc, 0x8d, 0x5a, 0x2d, + 0xf0, 0x15, 0xd1, 0x95, 0x4a, 0x98, 0x07, 0x4b, 0xfb, 0x3b, 0x56, 0xec, + 0xbd, 0x45, 0x5a, 0x3a, 0x23, 0x28, 0x26, 0x38, 0x28, 0xfd, 0xdb, 0x6a, + 0xd2, 0x3d, 0x7d, 0xc1, 0xbe, 0x12, 0xca, 0x49, 0x74, 0x94, 0x66, 0x5f, + 0x34, 0xd8, 0x95, 0x6c, 0x2a, 0xe8, 0x54, 0x6f, 0x99, 0x85, 0x0c, 0x33, + 0x57, 0x31, 0x20, 0xb1, 0x44, 0x57, 0xb1, 0x9d, 0x0a, 0x27, 0x52, 0x33, + 0x47, 0x6f, 0x7e, 0x7d, 0xa5, 0xe5, 0x1e, 0x84, 0xaa, 0xa8, 0xca, 0x48, + 0x1e, 0x26, 0xfb, 0x5b, 0xa5, 0xd3, 0x09, 0x3d, 0x39, 0x02, 0xa5, 0xc1, + 0x4a, 0x1c, 0x62, 0xc8, 0x6c, 0x1d, 0xa2, 0xe6, 0x6f, 0x9c, 0x21, 0x0a, + 0x0b, 0xa3, 0x6a, 0xf7, 0x92, 0xa5, 0x39, 0xd2, 0x6d, 0xb8, 0xd8, 0xee, + 0x88, 0xad, 0x51, 0xc1, 0xbd, 0xb9, 0x98, 0xb5, 0x41, 0x61, 0x84, 0x84, + 0x43, 0xc9, 0x11, 0xc5, 0x22, 0x7b, 0xff, 0xa5, 0xa9, 0xff, 0xfb, 0x4e, + 0xa7, 0x7e, 0x96, 0x22, 0x26, 0x29, 0xac, 0xd6, 0x55, 0x66, 0x66, 0x56, + 0x7c, 0x84, 0xbd, 0x0b, 0x63, 0xac, 0x7d, 0x8c, 0xe5, 0x3b, 0x29, 0x99, + 0x56, 0x64, 0x79, 0x68, 0x4f, 0x66, 0x91, 0x9d, 0xa8, 0x9a, 0x1d, 0x10, + 0x2b, 0xb1, 0x9d, 0xce, 0xd3, 0x3b, 0xba, 0x15, 0x1c, 0x89, 0x63, 0x25, + 0xda, 0x9f, 0xe9, 0xff, 0xff, 0xeb, 0x7f, 0x49, 0x95, 0x63, 0xac, 0x96, + 0xa9, 0xc4, 0x45, 0x30, 0xb2, 0xe3, 0xa5, 0x43, 0xc6, 0xce, 0x5e, 0x01, + 0xc0, 0x83, 0x70, 0x04, 0x81, 0xe6, 0x20, 0x40, 0xc7, 0x78, 0x10, 0x66, + 0x0f, 0x00, 0x00, 0x50, 0x1c, 0xc3, 0x40, 0x42, 0x04, 0x06, 0x04, 0xed, + 0x7b, 0x18, 0x11, 0x01, 0x36, 0x1c, 0x51, 0x66, 0x50, 0xa3, 0x0e, 0x74, + 0x5a, 0xe4, 0xb9, 0x9f, 0xa8, 0xca, 0x12, 0x63, 0xa0, 0xfc, 0x20, 0xa9, + 0x66, 0x32, 0x72, 0xa9, 0x33, 0xff, 0xfb, 0xd4, 0x60, 0x1b, 0x0a, 0x08, + 0x0d, 0x76, 0x3f, 0x2b, 0xaf, 0x7b, 0x70, 0x64, 0x6e, 0x78, 0x8d, 0x18, + 0x62, 0x6e, 0x60, 0xfd, 0xda, 0xfa, 0x2e, 0xbd, 0xed, 0xc1, 0x90, 0xb9, + 0xa1, 0xe8, 0x31, 0x8d, 0xb9, 0x8f, 0x33, 0x41, 0xea, 0x95, 0x51, 0x73, + 0xcc, 0xe2, 0xa2, 0x9d, 0x47, 0x19, 0xb5, 0x0a, 0x73, 0x5e, 0x4f, 0x3c, + 0x34, 0x4f, 0xe5, 0x62, 0x16, 0xe7, 0x85, 0x3b, 0x53, 0x73, 0x19, 0xcc, + 0x4a, 0x1c, 0x2d, 0x32, 0xb5, 0x32, 0xad, 0x61, 0x6e, 0x64, 0x42, 0x21, + 0xb4, 0x4e, 0x8b, 0x38, 0x93, 0xca, 0x12, 0xe1, 0x0d, 0x62, 0x76, 0xd6, + 0x25, 0x7a, 0x90, 0xeb, 0x5d, 0xb3, 0xad, 0x24, 0x79, 0xd0, 0x92, 0xaa, + 0x80, 0xd1, 0x72, 0x6f, 0x5c, 0x1e, 0x69, 0x34, 0xd2, 0x79, 0x2c, 0xcb, + 0x1d, 0xb5, 0x7d, 0x4e, 0xf9, 0x48, 0xe2, 0xac, 0x45, 0x5d, 0xcd, 0x76, + 0xd4, 0xdc, 0xa0, 0x57, 0xbd, 0xad, 0x59, 0x19, 0xd4, 0x50, 0x52, 0x6a, + 0x44, 0xe1, 0x74, 0x84, 0x66, 0xb3, 0x2b, 0xdd, 0x61, 0xc1, 0x43, 0x0d, + 0xb9, 0x22, 0xcd, 0x16, 0x66, 0xeb, 0x27, 0x20, 0x24, 0x93, 0xef, 0x63, + 0x4e, 0xb0, 0x71, 0x2e, 0x9c, 0x98, 0xa4, 0x50, 0x35, 0x3d, 0x52, 0x47, + 0x7d, 0x67, 0xf2, 0x4e, 0xa5, 0x4e, 0xb5, 0xe1, 0xd4, 0x98, 0x88, 0xc9, + 0x98, 0xf1, 0xe4, 0xb3, 0x3a, 0xed, 0x7e, 0x2c, 0xb0, 0x5b, 0x18, 0xdc, + 0x6f, 0x05, 0xd5, 0x95, 0xf0, 0xa0, 0xb8, 0x4a, 0xb6, 0x86, 0x59, 0xc0, + 0xb1, 0xc1, 0xcc, 0xd6, 0x51, 0xa8, 0x8b, 0x99, 0xf6, 0xdc, 0x86, 0xab, + 0x53, 0x45, 0x80, 0x59, 0xc9, 0x91, 0xde, 0x72, 0x33, 0x12, 0x94, 0x69, + 0x7f, 0x11, 0x93, 0x0a, 0x38, 0x01, 0xc6, 0xdc, 0x8d, 0xc8, 0xdb, 0x6d, + 0x8f, 0xfd, 0x1f, 0x62, 0x60, 0x7d, 0x39, 0x45, 0xc6, 0xc3, 0x26, 0x11, + 0xe1, 0x83, 0x88, 0x2a, 0x52, 0x29, 0x36, 0x85, 0x1e, 0x5e, 0xa9, 0x9b, + 0x94, 0x76, 0x09, 0xbc, 0xd3, 0x25, 0xf2, 0xf6, 0x53, 0x15, 0xb7, 0xba, + 0x51, 0x18, 0xb2, 0x14, 0xe9, 0xd9, 0x6c, 0xee, 0xbb, 0x3c, 0xd7, 0xab, + 0xdd, 0x5a, 0x42, 0xaa, 0xe4, 0x5a, 0x9e, 0xcc, 0x66, 0x5d, 0xf9, 0x07, + 0x42, 0x5d, 0xeb, 0xbe, 0x45, 0x63, 0x86, 0x5d, 0x53, 0x54, 0xcf, 0xff, + 0xff, 0xfb, 0x4b, 0xfd, 0x8e, 0xe8, 0xf7, 0x52, 0x91, 0xde, 0xd6, 0xb9, + 0x0a, 0x63, 0x1a, 0x46, 0x78, 0x83, 0xd5, 0xc3, 0xc4, 0x42, 0x13, 0x89, + 0x02, 0x30, 0x06, 0x04, 0x68, 0x51, 0x66, 0x48, 0x06, 0x23, 0xa1, 0x85, + 0x40, 0x4a, 0x62, 0x98, 0x6a, 0x12, 0x26, 0xe5, 0xa6, 0xc0, 0xa9, 0x99, + 0x7b, 0x8e, 0x60, 0x99, 0x0e, 0x45, 0xf9, 0x22, 0xb6, 0x59, 0x14, 0x6b, + 0xc6, 0x39, 0xcc, 0x78, 0x28, 0xcb, 0xfb, 0x74, 0x72, 0x75, 0x15, 0x4e, + 0x6b, 0xd9, 0x14, 0x68, 0x2e, 0xce, 0x82, 0x70, 0x70, 0x1a, 0x8a, 0x45, + 0x69, 0xdc, 0x48, 0xd6, 0x9f, 0x13, 0xc2, 0x66, 0xa9, 0x3e, 0x14, 0x6a, + 0x95, 0xc3, 0x11, 0xda, 0x84, 0x2c, 0xb4, 0xa2, 0x8e, 0x15, 0x62, 0x22, + 0x31, 0x63, 0x6d, 0x39, 0x0d, 0xe4, 0x99, 0xf0, 0x99, 0x7d, 0x1d, 0x02, + 0x9e, 0x29, 0x8d, 0xe4, 0xd3, 0xa4, 0xb2, 0xd5, 0xb4, 0xd6, 0x96, 0x78, + 0xc5, 0x3c, 0xa8, 0x53, 0x82, 0xa7, 0x07, 0x29, 0xd2, 0x5a, 0x27, 0xce, + 0x06, 0x14, 0x34, 0xeb, 0x61, 0x41, 0x97, 0x66, 0x52, 0x54, 0x7f, 0xa4, + 0xd8, 0x96, 0x19, 0x11, 0x2e, 0xcd, 0xa8, 0x8c, 0xee, 0xd8, 0x5b, 0x91, + 0x10, 0x14, 0x6b, 0x76, 0x71, 0x63, 0x70, 0x3f, 0x1c, 0x60, 0xae, 0xf4, + 0x76, 0xf4, 0xe3, 0x7b, 0x9a, 0x46, 0x75, 0x2e, 0x1b, 0x20, 0xca, 0xbd, + 0x33, 0x22, 0x0a, 0x0c, 0x25, 0x73, 0x8b, 0x9b, 0xf4, 0xc3, 0xa7, 0x4e, + 0x98, 0x16, 0x9c, 0xef, 0x05, 0x0c, 0x6b, 0x7a, 0xe9, 0x8d, 0xea, 0xad, + 0xe4, 0x77, 0xca, 0xca, 0xbd, 0x79, 0xb8, 0x30, 0x14, 0xeb, 0x88, 0xac, + 0xd9, 0x60, 0x99, 0xc5, 0xb9, 0xc1, 0x3a, 0xed, 0x02, 0xca, 0xce, 0xad, + 0xf5, 0x70, 0x57, 0x65, 0xea, 0x71, 0x04, 0x5c, 0x15, 0x08, 0x62, 0xb8, + 0xb8, 0x28, 0x8d, 0x23, 0x91, 0x30, 0x65, 0xc4, 0x49, 0x99, 0x47, 0x31, + 0xf6, 0x48, 0xde, 0xb9, 0x99, 0x22, 0xd2, 0x8b, 0x03, 0x5d, 0x10, 0x9c, + 0x0a, 0xd2, 0xc4, 0x02, 0xb9, 0x2e, 0x4e, 0xa7, 0xea, 0x00, 0x77, 0x53, + 0x45, 0xb8, 0xdb, 0x05, 0xe6, 0x64, 0xa0, 0xf2, 0x50, 0x61, 0x11, 0x30, + 0xf6, 0xa1, 0xfe, 0x6d, 0xd3, 0x32, 0x8c, 0xc4, 0xcd, 0xc3, 0xb2, 0x7d, + 0xfc, 0x8a, 0x67, 0xb4, 0x3c, 0x9e, 0x12, 0x35, 0x3b, 0x9d, 0x55, 0xce, + 0x72, 0x25, 0xc6, 0x23, 0x06, 0x6a, 0x44, 0xd1, 0xa9, 0xc3, 0x5a, 0x8c, + 0x67, 0xfb, 0x96, 0xf5, 0x55, 0x57, 0x8a, 0x7d, 0xe7, 0x54, 0x8e, 0xbd, + 0xe5, 0xf7, 0x21, 0xb4, 0xd0, 0xb3, 0xfe, 0xca, 0x5a, 0x5f, 0x73, 0x7c, + 0xa1, 0xff, 0xff, 0xff, 0xfe, 0x57, 0xe7, 0xff, 0xfe, 0x47, 0xf7, 0x94, + 0xaa, 0x69, 0x91, 0xb6, 0x51, 0x42, 0xff, 0x32, 0x5b, 0xbb, 0x6a, 0x3d, + 0x7b, 0x02, 0x80, 0x41, 0x75, 0x80, 0x00, 0xc9, 0x85, 0x75, 0xd1, 0xc3, + 0xa4, 0x99, 0x82, 0xe0, 0x52, 0x91, 0x08, 0x22, 0x9b, 0x80, 0x41, 0x0a, + 0xa2, 0xec, 0x6d, 0xa9, 0x33, 0xd9, 0x12, 0xab, 0x99, 0x46, 0x35, 0xdb, + 0x06, 0x1a, 0x70, 0xb6, 0x1d, 0x69, 0xba, 0xa2, 0x84, 0xcd, 0x4c, 0x66, + 0x2a, 0x87, 0x79, 0x39, 0x70, 0x1b, 0xa4, 0xbc, 0xff, 0x38, 0x05, 0xc9, + 0xf1, 0x39, 0x73, 0x1c, 0x69, 0xff, 0xfb, 0xd4, 0x60, 0x20, 0x08, 0x08, + 0x6c, 0x76, 0xbe, 0xab, 0xaf, 0x7b, 0x70, 0x6b, 0xc7, 0x68, 0x9d, 0x09, + 0x28, 0x5c, 0x1f, 0xf5, 0xda, 0xfc, 0xae, 0xbd, 0xed, 0xc1, 0x9d, 0xb7, + 0x21, 0xf0, 0x61, 0x89, 0xb9, 0x13, 0xc5, 0x2e, 0x76, 0x1e, 0x84, 0x85, + 0x98, 0xa2, 0x3c, 0x4b, 0x69, 0xc6, 0x5f, 0xa8, 0xd8, 0xfd, 0x2a, 0xbb, + 0x41, 0x1f, 0xdb, 0x82, 0xd8, 0xf9, 0x0a, 0x82, 0x87, 0xa8, 0xdb, 0x0b, + 0xf3, 0x25, 0x94, 0xb3, 0x17, 0x64, 0xa1, 0xe4, 0xa1, 0x67, 0x3a, 0x6e, + 0xf1, 0x20, 0xfd, 0xb5, 0x36, 0x79, 0xc1, 0x56, 0x13, 0x76, 0x2c, 0xb0, + 0xb1, 0x99, 0x89, 0xd7, 0x26, 0xf5, 0x1a, 0xe0, 0x4f, 0x59, 0xd2, 0x69, + 0xf2, 0xe3, 0xd3, 0x87, 0xf2, 0xad, 0x5c, 0xca, 0xbe, 0x72, 0x45, 0x43, + 0x98, 0x13, 0xd1, 0xce, 0xb5, 0x7d, 0x50, 0xa5, 0x42, 0xdc, 0x47, 0x89, + 0x67, 0x33, 0xd9, 0x3e, 0x98, 0x82, 0x91, 0x37, 0x50, 0x0f, 0x12, 0xb8, + 0x47, 0x1b, 0xe8, 0x72, 0xa9, 0x19, 0x12, 0x3b, 0x12, 0xaf, 0xc2, 0x41, + 0x38, 0x49, 0x4b, 0xc2, 0x43, 0x14, 0x4c, 0xaf, 0x11, 0x45, 0xf5, 0xa5, + 0xad, 0x45, 0xce, 0x45, 0x88, 0x0a, 0xd4, 0x29, 0xf2, 0xb1, 0xeb, 0x8b, + 0x92, 0xc2, 0x68, 0xe4, 0x5d, 0x41, 0x46, 0xb4, 0xb8, 0xa1, 0xcd, 0x6d, + 0xab, 0xe9, 0xb8, 0xc7, 0x03, 0x9b, 0x62, 0x39, 0xba, 0x14, 0x56, 0x49, + 0x55, 0x6e, 0x6f, 0x24, 0x86, 0xa1, 0x56, 0x35, 0x59, 0x75, 0x2a, 0x81, + 0x34, 0xa8, 0x27, 0x0b, 0xb5, 0x0b, 0x3a, 0xcc, 0xcf, 0x8e, 0xd7, 0x27, + 0xa1, 0x82, 0x2f, 0xcb, 0xb1, 0x58, 0x0c, 0xf5, 0xd9, 0x35, 0x24, 0xc7, + 0xb0, 0x84, 0x90, 0x43, 0xa1, 0x55, 0xa0, 0x00, 0x91, 0x5b, 0xdf, 0x6f, + 0xcb, 0x24, 0x1e, 0x6a, 0x0e, 0x30, 0xb0, 0xc2, 0xf7, 0x64, 0xb2, 0x50, + 0x6d, 0xee, 0x60, 0x0c, 0x2c, 0x6b, 0xd5, 0x7a, 0xd1, 0x44, 0xd0, 0xe3, + 0x79, 0xb1, 0xff, 0x6e, 0xe7, 0xa6, 0x9f, 0x9f, 0x0f, 0x04, 0xc5, 0x04, + 0xce, 0x78, 0xf1, 0x55, 0xa5, 0xb3, 0x7e, 0x78, 0xab, 0xe2, 0x3a, 0x77, + 0x89, 0xb4, 0x91, 0xb6, 0x63, 0xd3, 0x23, 0x1e, 0xbc, 0xaf, 0x73, 0x7c, + 0x72, 0xfa, 0x4b, 0x3c, 0xdd, 0x13, 0x9e, 0x15, 0x68, 0x95, 0xa1, 0x42, + 0x51, 0xa3, 0x61, 0x93, 0xae, 0x51, 0xf1, 0x00, 0x5c, 0xb8, 0x0d, 0x22, + 0xa1, 0xc6, 0xf5, 0xff, 0xbe, 0xac, 0xd3, 0x8a, 0x4f, 0x32, 0x6e, 0x18, + 0x70, 0x49, 0x45, 0x44, 0x23, 0x45, 0x0a, 0x10, 0x28, 0x30, 0x28, 0x05, + 0x31, 0x1d, 0x64, 0x3c, 0x14, 0x31, 0x01, 0x08, 0x48, 0xe2, 0x28, 0x0c, + 0x28, 0xe0, 0xd0, 0x26, 0x92, 0x72, 0x08, 0xcb, 0xaa, 0xc4, 0xe0, 0xb1, + 0x71, 0xb9, 0xbe, 0x68, 0x8f, 0x51, 0xce, 0x3e, 0xd7, 0xdb, 0xd4, 0x6f, + 0x50, 0xe2, 0xde, 0xc4, 0xae, 0x52, 0x29, 0x91, 0xe3, 0xd5, 0x1c, 0x92, + 0x2b, 0xcd, 0x43, 0xcd, 0x0b, 0x61, 0x2b, 0xce, 0x23, 0x11, 0x3e, 0x3e, + 0x18, 0x90, 0x26, 0xc9, 0xca, 0x97, 0x91, 0x50, 0xaa, 0x70, 0x48, 0x24, + 0xa0, 0xb2, 0xaa, 0xd0, 0xc5, 0x72, 0x1c, 0x76, 0x8f, 0xb4, 0xaa, 0x7c, + 0x94, 0x23, 0xae, 0x5f, 0x61, 0x28, 0x8d, 0x82, 0x7e, 0x87, 0x9f, 0xcb, + 0x94, 0xc3, 0x52, 0xbe, 0x21, 0xfe, 0xc3, 0x19, 0x1f, 0x76, 0x36, 0x47, + 0x37, 0xed, 0x33, 0x2a, 0x94, 0xcc, 0x70, 0x3d, 0x17, 0x0d, 0x74, 0x50, + 0x2b, 0x58, 0x14, 0x16, 0x44, 0xa9, 0xf4, 0xac, 0x86, 0x65, 0x39, 0xc5, + 0xda, 0xad, 0xc9, 0x3e, 0xbf, 0x2e, 0x7a, 0x1b, 0x57, 0x2b, 0x38, 0xaa, + 0x94, 0xaa, 0x69, 0x62, 0x35, 0x7a, 0x43, 0x74, 0x92, 0xb2, 0x95, 0x9d, + 0x4a, 0xa0, 0x84, 0xd6, 0xde, 0xf5, 0x5d, 0x0d, 0xdb, 0x1a, 0xdc, 0x09, + 0xa2, 0x3c, 0x6b, 0x7f, 0xb8, 0x10, 0x30, 0x8d, 0x94, 0xfd, 0x83, 0x15, + 0x4a, 0xfd, 0x9e, 0xcb, 0xb5, 0xda, 0x91, 0x9e, 0x3d, 0x18, 0x1f, 0x32, + 0x38, 0x37, 0x3d, 0x4d, 0x39, 0xbd, 0x4e, 0xc4, 0xf7, 0x7e, 0xba, 0x86, + 0xa9, 0x87, 0x0f, 0x6b, 0x7b, 0x70, 0x72, 0xc2, 0xb9, 0x12, 0xb0, 0xba, + 0x3f, 0xef, 0x24, 0x05, 0x53, 0x24, 0x54, 0x41, 0xa9, 0x1d, 0x10, 0x74, + 0xae, 0x23, 0x1c, 0x42, 0xc6, 0x48, 0x4b, 0x8a, 0x1c, 0x4c, 0x8f, 0x34, + 0xf9, 0x7f, 0x47, 0x1c, 0xe1, 0xc0, 0x85, 0xb1, 0xaa, 0x36, 0x00, 0x2d, + 0xb4, 0xa3, 0xdb, 0xef, 0xcf, 0xdb, 0xfd, 0x51, 0x63, 0x87, 0x4a, 0x34, + 0x66, 0x65, 0xf5, 0x40, 0x1d, 0xd9, 0xc8, 0x10, 0x16, 0xea, 0x5b, 0x88, + 0xcc, 0xf3, 0xbf, 0x95, 0xeb, 0x4b, 0x15, 0x62, 0xfc, 0xe5, 0x36, 0x63, + 0xb3, 0x6f, 0x22, 0xb3, 0xaa, 0x21, 0x9f, 0x4a, 0x3a, 0x2b, 0xf7, 0xf5, + 0x14, 0x42, 0x39, 0x4c, 0x46, 0xa9, 0x0e, 0x9d, 0x27, 0x2d, 0x8b, 0x2b, + 0x91, 0x51, 0x18, 0xce, 0xee, 0xea, 0xab, 0x46, 0x77, 0x9d, 0x1c, 0x8c, + 0xac, 0xcc, 0xa7, 0x59, 0x0c, 0x31, 0x95, 0x9b, 0xfd, 0x6d, 0xff, 0xfa, + 0x57, 0x55, 0xc8, 0xdb, 0x35, 0x6e, 0xd6, 0x10, 0xcc, 0xee, 0xe2, 0x0c, + 0x83, 0xc5, 0x0a, 0xa1, 0xa6, 0x6a, 0x6c, 0xe0, 0xa0, 0x00, 0xc5, 0x31, + 0x74, 0xf6, 0xf0, 0xa8, 0x20, 0x67, 0x4c, 0xc3, 0x0a, 0x00, 0x95, 0x48, + 0xa5, 0x4c, 0xe1, 0x7c, 0x51, 0xa6, 0x92, 0xd5, 0x83, 0x44, 0xe1, 0x13, + 0x32, 0x1e, 0x5f, 0x17, 0x07, 0x08, 0xf9, 0x42, 0x13, 0xa8, 0xc3, 0x19, + 0x80, 0x50, 0x9c, 0x44, 0x90, 0x9b, 0xbd, 0xf5, 0x3b, 0x08, 0x48, 0xe3, + 0x34, 0x57, 0x66, 0xe9, 0x76, 0xff, 0xfb, 0xd4, 0x60, 0x1d, 0x8f, 0x08, + 0x27, 0x76, 0xbe, 0x83, 0xaf, 0x7b, 0x70, 0x69, 0x2e, 0x78, 0x7d, 0x18, + 0x63, 0x6e, 0x60, 0xe1, 0xda, 0xfa, 0x0e, 0xbd, 0xed, 0xc1, 0x9e, 0x3a, + 0x21, 0x70, 0x63, 0x8d, 0xb8, 0x21, 0x2d, 0x44, 0xcd, 0x42, 0xc4, 0x6f, + 0x10, 0x73, 0xdd, 0x59, 0x11, 0x47, 0x29, 0xb2, 0x64, 0x23, 0x9d, 0xad, + 0x20, 0x94, 0x50, 0x98, 0xd8, 0x1f, 0x36, 0x25, 0x53, 0xcc, 0x47, 0xeb, + 0x8a, 0x75, 0x90, 0xfc, 0x48, 0xcc, 0x8c, 0x54, 0x32, 0x28, 0xae, 0x8e, + 0x78, 0x78, 0x21, 0x6d, 0xaf, 0x11, 0xab, 0xa7, 0x17, 0xcc, 0x6e, 0xee, + 0xd0, 0x77, 0xb2, 0x1f, 0xec, 0x0c, 0x08, 0xf3, 0x44, 0xfc, 0x51, 0xd5, + 0x4a, 0x8e, 0x52, 0x28, 0xdd, 0x2a, 0x57, 0x0d, 0xaa, 0x38, 0x19, 0x6a, + 0x83, 0x64, 0x7e, 0x5b, 0x95, 0xea, 0x44, 0xfc, 0x3d, 0x45, 0xbb, 0x4a, + 0x1c, 0xb2, 0xcc, 0x86, 0x2a, 0x94, 0x2e, 0x71, 0x22, 0xa1, 0x48, 0xe7, + 0xda, 0x2f, 0xc8, 0x43, 0x52, 0xb6, 0x73, 0xfc, 0xdc, 0x8c, 0xe4, 0x7e, + 0x9e, 0xf6, 0x68, 0x63, 0xb3, 0x75, 0x9c, 0xd3, 0xcc, 0xd3, 0xbc, 0x52, + 0xcc, 0x5b, 0x64, 0x64, 0x8e, 0xa8, 0x52, 0x61, 0x5e, 0xca, 0xe9, 0xea, + 0x10, 0x9c, 0xbb, 0x0b, 0x64, 0x39, 0x5b, 0x12, 0xcd, 0x2e, 0x50, 0x61, + 0x27, 0x5a, 0xe2, 0x29, 0x5b, 0x24, 0xcc, 0x17, 0x04, 0x52, 0xbe, 0x2a, + 0x95, 0x9d, 0xe2, 0xfe, 0x54, 0x45, 0xf1, 0x69, 0x89, 0x70, 0x8b, 0x56, + 0x1f, 0xca, 0xc4, 0x39, 0xd2, 0x9d, 0x98, 0x2f, 0x57, 0x04, 0xcd, 0x0d, + 0x66, 0x1c, 0x87, 0x21, 0xee, 0x51, 0x00, 0xec, 0x00, 0x18, 0xcb, 0x53, + 0x45, 0x7e, 0xe2, 0x00, 0x4d, 0x89, 0x0a, 0x49, 0xc8, 0xd3, 0x63, 0xff, + 0xa9, 0x34, 0x6a, 0x4c, 0x29, 0x19, 0x77, 0x09, 0x82, 0x76, 0xfc, 0xaf, + 0xf5, 0x9f, 0x28, 0x7c, 0xb9, 0x65, 0x4c, 0x9e, 0x2c, 0x6d, 0xcf, 0x1a, + 0xc1, 0xe2, 0xa5, 0x52, 0xc6, 0x16, 0xc0, 0x90, 0x1d, 0x34, 0x2b, 0x29, + 0xf1, 0xe9, 0xc5, 0xe3, 0x12, 0xac, 0x63, 0xf7, 0xce, 0xf3, 0x94, 0x97, + 0xf7, 0xbf, 0xcd, 0xd6, 0xb4, 0x2f, 0x2c, 0xdf, 0x25, 0xd4, 0x96, 0x49, + 0x62, 0x29, 0x49, 0x7d, 0xcc, 0xfb, 0x66, 0xb6, 0xfa, 0x97, 0xff, 0xff, + 0xff, 0xff, 0xfc, 0xcf, 0xff, 0x87, 0xe7, 0x7d, 0xee, 0x0d, 0xae, 0x44, + 0x8e, 0x59, 0x6c, 0x31, 0x99, 0xbb, 0x90, 0x82, 0xea, 0xd1, 0x93, 0x08, + 0x68, 0xa2, 0x20, 0x30, 0xc2, 0xd6, 0x74, 0xe3, 0xf2, 0x18, 0x20, 0x03, + 0x19, 0x02, 0x00, 0x43, 0x3c, 0x06, 0x96, 0xea, 0x96, 0x3e, 0xdb, 0xa6, + 0x5d, 0xb8, 0x14, 0x47, 0x4e, 0xf4, 0x35, 0xb4, 0xf0, 0x53, 0x90, 0x44, + 0x93, 0x29, 0xc2, 0x5d, 0x62, 0x06, 0x19, 0xc8, 0x69, 0x17, 0xe5, 0x61, + 0x6d, 0x36, 0xd1, 0xe2, 0xe0, 0xe8, 0x4c, 0x53, 0xc4, 0xf4, 0xee, 0x69, + 0x4c, 0x8b, 0x89, 0xfc, 0x44, 0x39, 0xa9, 0x4b, 0x7a, 0xf4, 0xe6, 0x8a, + 0x3c, 0xb7, 0x2e, 0x07, 0x32, 0x95, 0x26, 0xad, 0x42, 0xcb, 0x72, 0x4d, + 0xe3, 0x03, 0xe2, 0x32, 0xa3, 0x49, 0x20, 0x10, 0xc3, 0xfc, 0x76, 0x4c, + 0xa7, 0x57, 0x22, 0xd1, 0x88, 0x79, 0xf4, 0xbb, 0x39, 0x8e, 0x78, 0x6a, + 0x44, 0x21, 0x38, 0xcb, 0x8d, 0x97, 0x43, 0x98, 0xf0, 0x6d, 0x42, 0x22, + 0xab, 0xe0, 0x1a, 0x49, 0x63, 0x2d, 0x46, 0x77, 0xcc, 0xb6, 0x8e, 0x3a, + 0x98, 0x5c, 0x1b, 0x5a, 0xbb, 0x84, 0x44, 0x71, 0x71, 0x54, 0x4a, 0xa6, + 0x39, 0xb7, 0x3c, 0x5c, 0xc9, 0x58, 0x12, 0x3e, 0xea, 0x04, 0xdb, 0x45, + 0x1b, 0x20, 0xc7, 0x7a, 0xed, 0x11, 0xb4, 0xf4, 0xae, 0x2a, 0xf5, 0x5d, + 0xaf, 0xa3, 0x23, 0x0f, 0x93, 0x8f, 0x8b, 0x8a, 0xe1, 0x54, 0x73, 0x31, + 0x97, 0xb9, 0xd6, 0x95, 0xac, 0x90, 0x5a, 0x55, 0x71, 0x57, 0x51, 0xd4, + 0xad, 0x1a, 0x57, 0xa2, 0xaa, 0xce, 0xe9, 0xf4, 0x06, 0x25, 0x23, 0x03, + 0x0a, 0x7a, 0x54, 0xf1, 0xfc, 0xa5, 0x91, 0x17, 0x3c, 0x65, 0x2c, 0xba, + 0x79, 0x16, 0x55, 0x84, 0xe4, 0x56, 0x44, 0x2d, 0xeb, 0x2a, 0xef, 0x6e, + 0x8f, 0xe5, 0x3b, 0xc3, 0x19, 0x87, 0x26, 0x2c, 0x15, 0xf6, 0x27, 0x05, + 0x61, 0x58, 0xa3, 0x26, 0x63, 0xcd, 0x4a, 0x39, 0x90, 0xc3, 0x4c, 0xcb, + 0x09, 0x01, 0x30, 0x13, 0xf0, 0x37, 0x06, 0x99, 0x3f, 0x35, 0x67, 0x00, + 0x24, 0xdc, 0x48, 0x00, 0xb5, 0xc7, 0xec, 0xe4, 0xec, 0xa3, 0xb2, 0x82, + 0x49, 0x69, 0xea, 0x0a, 0x9e, 0x34, 0x44, 0x44, 0x34, 0xea, 0xd5, 0xd5, + 0x2f, 0xf4, 0xef, 0xfb, 0xe8, 0xce, 0x7a, 0x1a, 0xfb, 0x5b, 0xe6, 0x59, + 0x1f, 0xed, 0xc3, 0x52, 0xab, 0x37, 0x81, 0xdf, 0x6e, 0xdd, 0x39, 0x32, + 0x39, 0x9c, 0x38, 0xfe, 0x8d, 0x1f, 0x21, 0x8a, 0xcd, 0x9f, 0x39, 0x7a, + 0x49, 0x86, 0x9b, 0xbb, 0xd2, 0xc9, 0x0a, 0x1e, 0xa7, 0x66, 0x9f, 0x7a, + 0x7f, 0x66, 0x5f, 0xff, 0x9d, 0x97, 0xfb, 0xe7, 0xf4, 0xbd, 0xf2, 0xa5, + 0x91, 0x71, 0x32, 0x6b, 0x18, 0xc4, 0x0a, 0x47, 0x6d, 0x81, 0x4b, 0xf8, + 0xdb, 0xc0, 0xae, 0x29, 0x18, 0x36, 0xba, 0x01, 0x08, 0xc2, 0x94, 0x8c, + 0x83, 0x0b, 0x1e, 0x93, 0x27, 0x9d, 0x14, 0x01, 0x32, 0x4c, 0x0e, 0x06, + 0x86, 0x96, 0xd1, 0x40, 0x1d, 0x5c, 0x43, 0xa3, 0x80, 0x05, 0x0e, 0x79, + 0x4b, 0x71, 0x34, 0x17, 0x88, 0x53, 0x7a, 0x08, 0x52, 0xcc, 0xf5, 0x7b, + 0x29, 0xe4, 0xae, 0x2d, 0xac, 0x23, 0x95, 0x9d, 0x0a, 0x25, 0x0a, 0x16, + 0x53, 0xf4, 0xb9, 0x04, 0xa5, 0xff, 0xfb, 0xd4, 0x60, 0x1d, 0x08, 0x08, + 0x3c, 0x76, 0xbe, 0xab, 0x8f, 0x7b, 0x70, 0x64, 0xa8, 0xc8, 0x9d, 0x09, + 0x03, 0x5f, 0x20, 0x11, 0xd6, 0xfc, 0xae, 0xbd, 0xed, 0xc9, 0x9f, 0xba, + 0xa1, 0xb0, 0x31, 0x0d, 0xb9, 0x0b, 0x2f, 0x06, 0x93, 0x02, 0xa9, 0x3c, + 0xdb, 0x09, 0x48, 0xcc, 0xbc, 0x4c, 0x53, 0x89, 0x24, 0xba, 0x91, 0x49, + 0x0c, 0xe6, 0x43, 0x8e, 0x75, 0x5b, 0x92, 0x01, 0x76, 0x72, 0x1f, 0x8c, + 0x06, 0x4c, 0x24, 0x3d, 0x09, 0x7c, 0xe4, 0xd7, 0x1e, 0x3a, 0x49, 0xe3, + 0xf6, 0x78, 0x4c, 0xea, 0xb2, 0x14, 0x6a, 0xbd, 0x5c, 0x2b, 0x09, 0xe9, + 0xa6, 0xd2, 0xac, 0x31, 0xd4, 0x67, 0xa3, 0x22, 0x10, 0x75, 0x2e, 0x15, + 0x6a, 0xa3, 0x29, 0x89, 0xbc, 0x45, 0x55, 0xeb, 0xe7, 0xf4, 0x46, 0x68, + 0xc6, 0x9c, 0x72, 0x89, 0x12, 0xf9, 0x91, 0x10, 0x75, 0x34, 0xbe, 0x84, + 0x86, 0xcd, 0x15, 0xe4, 0x55, 0x6c, 0xcc, 0x08, 0x4c, 0xc8, 0x64, 0xce, + 0x4d, 0xfe, 0x03, 0x67, 0x63, 0x70, 0x63, 0x40, 0x43, 0x5d, 0x2c, 0xc8, + 0xe2, 0x82, 0x65, 0x80, 0x9f, 0xab, 0x04, 0x35, 0xca, 0xd3, 0xc9, 0x54, + 0xb6, 0x55, 0x36, 0x46, 0x85, 0x33, 0x9c, 0x89, 0xf9, 0x19, 0x5c, 0x8f, + 0xea, 0xb8, 0xa9, 0x15, 0x11, 0xd8, 0xa4, 0xd5, 0x14, 0xe8, 0x95, 0xbb, + 0xcb, 0x66, 0xd2, 0xfc, 0xc7, 0x22, 0xcd, 0x55, 0x73, 0x45, 0x61, 0x52, + 0x33, 0x9a, 0x11, 0x13, 0xcb, 0xca, 0x3b, 0x3f, 0x72, 0x95, 0xe3, 0x4a, + 0xb6, 0x2a, 0xe9, 0xb9, 0x2e, 0x89, 0x51, 0x2e, 0x13, 0xe3, 0x6c, 0x93, + 0x8c, 0x46, 0x59, 0x4a, 0xb0, 0xb6, 0x3f, 0x07, 0x90, 0xb0, 0x09, 0xe0, + 0x4b, 0x49, 0xa2, 0x10, 0xc1, 0x02, 0x70, 0x01, 0x4d, 0x68, 0xe3, 0x71, + 0xb6, 0x51, 0x1d, 0xb4, 0x10, 0xc4, 0x01, 0x54, 0xdc, 0x60, 0x44, 0x20, + 0xda, 0x24, 0x23, 0x4a, 0x9e, 0xeb, 0x4f, 0x69, 0x57, 0xd4, 0x4d, 0xdb, + 0xf0, 0xf7, 0xea, 0xd3, 0x3a, 0xb9, 0xc3, 0x84, 0xe4, 0x42, 0x72, 0xfa, + 0x5f, 0x55, 0xef, 0x2d, 0x2c, 0x15, 0x05, 0x0c, 0x14, 0xb4, 0x3a, 0x22, + 0x91, 0x79, 0x4f, 0xf8, 0x99, 0xfc, 0x72, 0x6c, 0xad, 0x62, 0x84, 0xa4, + 0x83, 0x3c, 0x68, 0x86, 0xf5, 0x05, 0x64, 0x0c, 0x90, 0x68, 0x2e, 0x1d, + 0x48, 0xa9, 0x64, 0xb0, 0xe8, 0x78, 0x55, 0xdf, 0xff, 0xc7, 0xd4, 0x85, + 0xa0, 0xbb, 0x02, 0xe0, 0x6b, 0x8a, 0x88, 0x86, 0x16, 0x8d, 0x12, 0x90, + 0x10, 0x4e, 0x92, 0x20, 0x4c, 0xc4, 0xe3, 0x14, 0xe0, 0xe5, 0x60, 0xc9, + 0x40, 0x2c, 0xbd, 0xe2, 0x42, 0x2c, 0xcc, 0x46, 0x52, 0xae, 0xe3, 0x10, + 0x1b, 0x78, 0xc9, 0x51, 0x63, 0x85, 0x9d, 0x5c, 0x64, 0x96, 0x13, 0x24, + 0xd1, 0x25, 0x51, 0x92, 0x65, 0xf5, 0x99, 0x49, 0x40, 0xe1, 0x2f, 0x29, + 0xd5, 0xca, 0x8d, 0x30, 0xca, 0x60, 0x9d, 0xa9, 0x85, 0xcb, 0x1a, 0x3d, + 0x28, 0x32, 0xce, 0xe1, 0xe6, 0x7c, 0x29, 0x23, 0x9d, 0xca, 0x04, 0xfb, + 0x6a, 0x8d, 0x70, 0x7a, 0x96, 0xc5, 0x0a, 0xad, 0x5e, 0x4f, 0x19, 0x8f, + 0xe5, 0x3a, 0x7a, 0x34, 0x8a, 0xa3, 0x4d, 0x9d, 0x99, 0x96, 0x23, 0x3e, + 0x1b, 0xe2, 0x21, 0xe7, 0x51, 0xcb, 0x9a, 0x33, 0x9d, 0x0a, 0x8d, 0xae, + 0xcf, 0x68, 0x86, 0x89, 0xf2, 0x73, 0x1d, 0xae, 0x91, 0x58, 0xba, 0x8c, + 0xa9, 0x78, 0xf5, 0xad, 0xc1, 0x09, 0x56, 0xcc, 0xe6, 0xd0, 0xf9, 0x73, + 0x84, 0x0e, 0xdf, 0xbe, 0x51, 0x5a, 0xcc, 0x4e, 0xea, 0x8f, 0x57, 0xa1, + 0x6b, 0xb4, 0xaa, 0x99, 0xb1, 0xa9, 0xe6, 0x13, 0x50, 0x0f, 0xec, 0xaa, + 0x17, 0x71, 0x62, 0x33, 0x21, 0xf5, 0x87, 0x24, 0x16, 0xd6, 0x45, 0x0a, + 0xe2, 0x03, 0x54, 0x16, 0xab, 0x3d, 0x65, 0x63, 0x7c, 0xb3, 0x11, 0xcd, + 0x62, 0x0a, 0x3d, 0x80, 0xfc, 0x6e, 0x82, 0xb8, 0x6f, 0xc2, 0x79, 0x99, + 0xca, 0x2e, 0xa6, 0xa3, 0xc5, 0xa8, 0xf1, 0x15, 0x70, 0x62, 0x40, 0x7b, + 0x05, 0x9d, 0xf4, 0x26, 0x26, 0x45, 0x0e, 0xd7, 0x0c, 0x4a, 0x14, 0x74, + 0x38, 0xb3, 0xb1, 0x2b, 0xdf, 0x72, 0x52, 0xa3, 0x55, 0x28, 0x16, 0x54, + 0x6e, 0x0c, 0x06, 0x43, 0x19, 0xd2, 0x7f, 0xa1, 0x0c, 0xc4, 0xfd, 0x95, + 0x1c, 0x8e, 0x55, 0x13, 0xf8, 0x22, 0x88, 0x90, 0x89, 0xc0, 0x9a, 0xbe, + 0x1e, 0xa3, 0x45, 0x10, 0x01, 0xa0, 0x4c, 0x72, 0xa5, 0xbf, 0x3f, 0x27, + 0xa1, 0x04, 0x9b, 0xc2, 0x45, 0x25, 0xa1, 0xc3, 0x88, 0x95, 0x8e, 0x10, + 0x38, 0x97, 0x42, 0xa9, 0x1d, 0x13, 0x3b, 0x11, 0xda, 0x6c, 0xa6, 0x6b, + 0x7f, 0x9f, 0x69, 0xdf, 0x4e, 0x7f, 0xd3, 0xe9, 0x9f, 0x9f, 0xa2, 0x9f, + 0xdc, 0xe8, 0x47, 0xce, 0x33, 0x21, 0x42, 0x6d, 0xc9, 0x2e, 0xea, 0xbd, + 0xd5, 0x3a, 0x76, 0xee, 0x84, 0x1f, 0xa5, 0x94, 0x42, 0xcd, 0x4a, 0xe9, + 0x69, 0xb6, 0xf9, 0x13, 0x9e, 0x4b, 0x0d, 0x2f, 0xff, 0xe7, 0xff, 0xff, + 0x3b, 0xff, 0xf7, 0xf3, 0xf2, 0xf6, 0xb1, 0x6c, 0x8c, 0x8b, 0xa1, 0x9c, + 0xc5, 0x20, 0xc9, 0x81, 0x2e, 0x95, 0x35, 0x10, 0x1c, 0xc0, 0xd5, 0x7a, + 0x51, 0x43, 0x00, 0x89, 0x4c, 0xd9, 0xc2, 0x3b, 0x17, 0xf4, 0xcb, 0xc1, + 0x60, 0xc0, 0x9b, 0xea, 0x98, 0x6d, 0x09, 0xf8, 0x9f, 0x64, 0x2a, 0x86, + 0x31, 0x1f, 0x4e, 0xa2, 0x57, 0x49, 0x72, 0xfa, 0xa7, 0x11, 0xf1, 0x64, + 0x45, 0x8e, 0xa3, 0xb0, 0xee, 0x9c, 0x6e, 0x0f, 0xa5, 0xf2, 0xe2, 0x4b, + 0x9b, 0x59, 0x0f, 0x34, 0x11, 0xde, 0x85, 0x9f, 0xa1, 0x21, 0x41, 0x36, + 0x4e, 0x87, 0x24, 0x8b, 0x02, 0xff, 0xfb, 0xd4, 0x60, 0x20, 0x80, 0x08, + 0x40, 0x76, 0xbe, 0x83, 0x8f, 0x7b, 0x70, 0x61, 0x08, 0xa8, 0x9d, 0x15, + 0x03, 0x5d, 0x1f, 0xe5, 0xda, 0xfe, 0xae, 0xbd, 0xed, 0xc1, 0xaa, 0x3a, + 0xa1, 0xb0, 0x63, 0x09, 0xb9, 0x59, 0x8e, 0x74, 0xda, 0xa8, 0xdc, 0x1b, + 0xcc, 0x37, 0x9a, 0x1a, 0x16, 0x8a, 0x37, 0xd2, 0xa7, 0xf3, 0x29, 0xf0, + 0x85, 0x97, 0xb5, 0x62, 0x4d, 0xb5, 0xb9, 0x0c, 0x54, 0x9e, 0xcc, 0x4d, + 0xce, 0x8c, 0x97, 0x27, 0x04, 0x3a, 0x32, 0x75, 0x42, 0x9c, 0x82, 0x5c, + 0x12, 0x47, 0x5a, 0x64, 0xd0, 0x63, 0x6e, 0x6f, 0x54, 0xcc, 0x93, 0x44, + 0x9e, 0x56, 0x3e, 0x4f, 0x57, 0xcb, 0x0a, 0xa5, 0x6b, 0x73, 0x2a, 0xb9, + 0x61, 0xa0, 0xdf, 0x2d, 0xf3, 0x31, 0xc2, 0x57, 0xa8, 0xd3, 0x2d, 0xa8, + 0xf6, 0x07, 0xeb, 0x56, 0x52, 0xab, 0xca, 0x79, 0x22, 0xca, 0xd6, 0x90, + 0x48, 0x9c, 0x50, 0xa8, 0x82, 0x41, 0x24, 0xcf, 0x58, 0x2a, 0x16, 0x34, + 0xe4, 0x06, 0xb8, 0x2d, 0xae, 0x54, 0x82, 0xae, 0x38, 0x1d, 0x2c, 0x28, + 0x75, 0xa6, 0xd8, 0x8b, 0x06, 0x95, 0x50, 0xf9, 0x0e, 0x96, 0x35, 0x32, + 0x35, 0x99, 0x79, 0x45, 0x3a, 0x29, 0x75, 0x57, 0x16, 0xad, 0xb5, 0xb3, + 0x45, 0xed, 0x2f, 0xf0, 0xf1, 0xfb, 0xc8, 0xeb, 0xc7, 0xb3, 0xfa, 0x36, + 0x2e, 0x75, 0x09, 0x81, 0x30, 0x8a, 0x51, 0xb3, 0xa5, 0xcb, 0x01, 0xa6, + 0x8b, 0x46, 0xac, 0xae, 0x59, 0x11, 0xa6, 0xa9, 0x3e, 0x2f, 0x66, 0xa4, + 0xe6, 0x30, 0xe0, 0x53, 0x21, 0x08, 0x04, 0x30, 0x96, 0x97, 0x13, 0xc0, + 0x79, 0x16, 0x31, 0x4c, 0x54, 0x90, 0x42, 0x76, 0x46, 0xd0, 0x6c, 0xfa, + 0x00, 0x3a, 0xa7, 0x89, 0xa2, 0xe2, 0x45, 0x11, 0xcb, 0x88, 0x8e, 0x13, + 0x04, 0x4a, 0xa4, 0x02, 0xd1, 0xa1, 0x67, 0xa1, 0xd2, 0xfd, 0x52, 0x44, + 0x2f, 0xc7, 0xd7, 0xdd, 0x2f, 0x1f, 0x4f, 0x8a, 0x29, 0xd5, 0x5a, 0xec, + 0xa2, 0x21, 0x96, 0x8e, 0x5b, 0x94, 0x9c, 0x85, 0x3e, 0xb9, 0xcc, 0xf8, + 0x46, 0x66, 0xa7, 0xe4, 0x4e, 0xdb, 0x78, 0x22, 0xf6, 0x27, 0xd0, 0xae, + 0xd7, 0x35, 0x88, 0xd6, 0x11, 0xa3, 0xa8, 0xba, 0xd1, 0xe3, 0x02, 0x3e, + 0xe2, 0x84, 0x8f, 0x9d, 0x0f, 0x09, 0x9c, 0x48, 0x45, 0x18, 0xcf, 0xff, + 0xc7, 0x7a, 0x85, 0x5c, 0x46, 0x64, 0x42, 0x79, 0x31, 0x31, 0x11, 0x8f, + 0x16, 0x05, 0x4e, 0xc2, 0x01, 0x8c, 0x00, 0x04, 0x4c, 0x35, 0x5f, 0x8f, + 0x1f, 0x1b, 0x4c, 0x2f, 0x00, 0x0b, 0xd2, 0x8d, 0x4b, 0xd5, 0x56, 0xb5, + 0x36, 0xb0, 0xcf, 0x5a, 0x23, 0x74, 0x85, 0x2f, 0x97, 0xf5, 0x39, 0x62, + 0x75, 0x00, 0xe5, 0x56, 0x90, 0x53, 0xe0, 0xe1, 0x37, 0x16, 0x9f, 0xa9, + 0x11, 0x04, 0xf5, 0x22, 0xa5, 0x6e, 0x49, 0x31, 0x21, 0xc3, 0xa1, 0x8d, + 0xe9, 0x7e, 0x4c, 0x16, 0x03, 0x98, 0xf0, 0x3a, 0x1c, 0x97, 0x9b, 0x4d, + 0xec, 0x97, 0x18, 0x67, 0xca, 0x01, 0x0d, 0x44, 0x93, 0xb3, 0xf9, 0x12, + 0xbe, 0x69, 0x36, 0xd5, 0x20, 0x8c, 0x5a, 0x3a, 0x15, 0xa7, 0xa9, 0xfa, + 0xae, 0x89, 0x11, 0xa1, 0x3e, 0xdc, 0xb7, 0x1e, 0xcc, 0x2b, 0x96, 0x66, + 0x15, 0x35, 0xe5, 0x34, 0x61, 0xac, 0xaa, 0x49, 0x93, 0xe5, 0x02, 0x91, + 0x12, 0x88, 0x42, 0x0e, 0xbe, 0xa0, 0x2e, 0xec, 0x68, 0x7a, 0x3c, 0xe2, + 0x4e, 0xa5, 0xd3, 0x8f, 0x8f, 0xd5, 0x7a, 0xda, 0x02, 0x3b, 0x25, 0xe1, + 0xb7, 0xb0, 0x37, 0x59, 0xc5, 0xca, 0x76, 0x76, 0xb6, 0x87, 0x8a, 0x78, + 0x0b, 0x83, 0x96, 0x45, 0x24, 0x8f, 0x92, 0xe9, 0xa4, 0x32, 0xcb, 0xcb, + 0x4b, 0x95, 0xe6, 0x19, 0x14, 0x8f, 0xe3, 0x40, 0x55, 0xaa, 0x59, 0x9b, + 0xab, 0x3c, 0x07, 0x08, 0x68, 0x6a, 0x91, 0x9b, 0x4f, 0x77, 0x03, 0x3d, + 0x61, 0xbd, 0xa6, 0x12, 0xf7, 0x6c, 0x88, 0xac, 0x8c, 0xf9, 0xa6, 0xf0, + 0x94, 0xce, 0x0f, 0x6b, 0x1b, 0x59, 0x91, 0x82, 0x79, 0x9e, 0xd9, 0x73, + 0x49, 0x72, 0xee, 0x58, 0x0e, 0x2c, 0x70, 0x51, 0x95, 0x4e, 0x2a, 0x21, + 0xa7, 0xdb, 0x18, 0xdb, 0xa4, 0x4e, 0xb0, 0x1e, 0x89, 0xf6, 0x63, 0x91, + 0x9d, 0xca, 0xa5, 0xf0, 0x8d, 0x18, 0x84, 0xec, 0x5b, 0x0e, 0xe0, 0xdd, + 0x26, 0xa8, 0xa6, 0xed, 0x00, 0x12, 0x70, 0xd3, 0xab, 0xaa, 0xa3, 0xf6, + 0xd7, 0x63, 0xb3, 0x15, 0x04, 0xc3, 0x98, 0x6d, 0x5b, 0xd9, 0x88, 0x56, + 0xe7, 0x10, 0x20, 0x76, 0x84, 0x44, 0x56, 0x57, 0xbe, 0xf9, 0x5d, 0xb3, + 0xc6, 0x76, 0x87, 0x5a, 0xbf, 0xcf, 0xfd, 0xe4, 0x36, 0xf5, 0x44, 0x9f, + 0x3e, 0xfc, 0xe8, 0xe8, 0xae, 0x6b, 0xd0, 0xf9, 0xad, 0x57, 0x74, 0xa3, + 0x2b, 0xf7, 0x45, 0x9a, 0x95, 0x3b, 0x2b, 0x11, 0x5a, 0x6b, 0x74, 0xd1, + 0x15, 0x34, 0x25, 0xd7, 0x65, 0x4b, 0x55, 0xb6, 0x2a, 0x13, 0x7b, 0xf5, + 0xfb, 0x6b, 0x7b, 0x7b, 0x5b, 0x72, 0x3e, 0xca, 0xd5, 0x33, 0x4c, 0x3d, + 0x91, 0xd1, 0x82, 0xb9, 0x19, 0x11, 0xc2, 0xb0, 0x42, 0x07, 0x33, 0x08, + 0x40, 0xcd, 0x25, 0x00, 0x00, 0x80, 0x10, 0x68, 0x41, 0xc0, 0x61, 0x8b, + 0x22, 0xf9, 0xf8, 0x62, 0xd0, 0x90, 0xbe, 0xee, 0x2e, 0xa5, 0xf0, 0x98, + 0x6e, 0x63, 0x73, 0x7e, 0xd9, 0xcc, 0x86, 0x78, 0x73, 0x21, 0x68, 0x5a, + 0xd2, 0xe8, 0xe5, 0x40, 0x31, 0x3c, 0x5c, 0x17, 0x34, 0xf3, 0xe3, 0xf0, + 0xe5, 0x49, 0x22, 0x93, 0x0d, 0x85, 0x84, 0xeb, 0x6e, 0x20, 0x6d, 0x85, + 0xf9, 0x61, 0x48, 0x79, 0x97, 0xd2, 0xee, 0x76, 0x31, 0x24, 0xa3, 0x21, + 0xae, 0x6d, 0xc6, 0x92, 0x24, 0xff, 0xfb, 0xd4, 0x60, 0x25, 0x00, 0x08, + 0x29, 0x76, 0x3f, 0x43, 0xaf, 0x7b, 0x70, 0x68, 0xae, 0x38, 0x6c, 0x18, + 0xc2, 0x6e, 0x1f, 0xc5, 0xda, 0xff, 0x2e, 0x3d, 0xed, 0xc1, 0xcb, 0x3a, + 0x61, 0x30, 0x92, 0x95, 0xb9, 0xf0, 0x72, 0x58, 0x7e, 0xdb, 0x1d, 0x30, + 0xb9, 0x41, 0xa9, 0x8e, 0x65, 0x09, 0xfc, 0x9f, 0x84, 0x83, 0x27, 0x0d, + 0xab, 0x86, 0x14, 0x8b, 0x24, 0x29, 0x8b, 0x69, 0xb8, 0x5f, 0x51, 0x87, + 0x1c, 0x15, 0x02, 0x44, 0xbc, 0x88, 0x62, 0x72, 0x29, 0xa2, 0xd6, 0xa3, + 0x43, 0x96, 0x98, 0x4e, 0xc6, 0x34, 0x93, 0xe6, 0x28, 0x30, 0x54, 0x8a, + 0x58, 0x2e, 0x6b, 0x86, 0x85, 0x0b, 0x52, 0x32, 0x0a, 0xc5, 0x90, 0xb6, + 0xd4, 0xeb, 0x73, 0x8a, 0xca, 0x51, 0x0e, 0x63, 0x56, 0xe9, 0x99, 0x91, + 0xf2, 0xbe, 0x33, 0x0c, 0xdb, 0x99, 0x14, 0xe2, 0xd0, 0x64, 0x42, 0x6d, + 0x8e, 0x8b, 0x6a, 0xda, 0x75, 0xd3, 0x54, 0x24, 0xb3, 0xc6, 0x48, 0xd0, + 0x2e, 0x8a, 0xbc, 0x75, 0xcc, 0x8c, 0x6f, 0xe0, 0x25, 0xde, 0x31, 0x2f, + 0xb3, 0x9f, 0x93, 0x46, 0x7d, 0x05, 0xc5, 0xe2, 0x82, 0xf1, 0xdb, 0xa7, + 0x8a, 0x74, 0x2e, 0x53, 0xe9, 0xc6, 0xe9, 0x5b, 0xed, 0x33, 0xe7, 0x4d, + 0xf3, 0xab, 0x6a, 0xfe, 0x8c, 0xd8, 0x74, 0xa9, 0x5d, 0xaa, 0x97, 0x30, + 0x91, 0x6c, 0x87, 0xa9, 0xe2, 0xca, 0xbb, 0x43, 0x1c, 0x4e, 0xf5, 0x7d, + 0x50, 0x95, 0xd1, 0x19, 0x3e, 0x54, 0xa8, 0x93, 0xff, 0x24, 0x3c, 0xea, + 0x01, 0x65, 0x26, 0x37, 0x49, 0x7c, 0x20, 0x73, 0x08, 0x71, 0x6d, 0x50, + 0x80, 0x1a, 0x72, 0xc6, 0xad, 0xea, 0xa3, 0xf6, 0xbc, 0xc4, 0x88, 0x8c, + 0x92, 0x45, 0xc0, 0x42, 0x40, 0x98, 0x0a, 0x91, 0xb2, 0x95, 0x3b, 0xc7, + 0xbc, 0xf9, 0x7d, 0xea, 0x8e, 0xc2, 0xde, 0xdb, 0x5b, 0x5f, 0xbf, 0xda, + 0xd7, 0xf5, 0x78, 0xf0, 0x5f, 0x7e, 0xc4, 0x52, 0x3a, 0xec, 0xf3, 0x59, + 0x16, 0x85, 0x47, 0x32, 0xb3, 0x35, 0xa8, 0x8e, 0xd6, 0x6e, 0x88, 0xac, + 0xc8, 0x9f, 0x7e, 0xc9, 0xf2, 0x56, 0xcb, 0x7d, 0x94, 0x88, 0x96, 0xe6, + 0x44, 0x24, 0x93, 0x5b, 0xa6, 0xbf, 0xf7, 0xfb, 0xff, 0xda, 0xad, 0x99, + 0xea, 0xcc, 0xa8, 0xc4, 0x2b, 0x2d, 0x0a, 0x70, 0xe2, 0xc3, 0x95, 0xd4, + 0x7b, 0x08, 0x14, 0xeb, 0x70, 0x63, 0x3e, 0x80, 0x7c, 0x02, 0x4a, 0x00, + 0x1a, 0x40, 0x67, 0xa2, 0x20, 0x61, 0x86, 0xf1, 0xe7, 0xf9, 0x3f, 0x00, + 0x41, 0x2d, 0x29, 0x9a, 0xaa, 0x15, 0xc8, 0xe5, 0xbd, 0xad, 0x6d, 0x59, + 0x1f, 0xcb, 0x08, 0x95, 0x19, 0x87, 0x54, 0xfa, 0x21, 0x22, 0x7f, 0xb6, + 0x29, 0x50, 0x86, 0x12, 0xfa, 0x49, 0x16, 0x15, 0xc9, 0xf4, 0x34, 0x82, + 0x1c, 0xac, 0x27, 0xe3, 0x7a, 0x1c, 0xa8, 0x56, 0x21, 0x31, 0x14, 0xea, + 0x36, 0x46, 0x16, 0xa4, 0x21, 0x3c, 0xb0, 0xbc, 0x60, 0x36, 0xc6, 0x74, + 0xc6, 0xc0, 0x93, 0x26, 0x89, 0x73, 0xc4, 0x74, 0x34, 0xb9, 0x9f, 0xc5, + 0xbf, 0x69, 0x93, 0x18, 0xa3, 0x48, 0xd8, 0xf6, 0x8a, 0xa8, 0x54, 0xa7, + 0x46, 0xf2, 0x7c, 0xca, 0x5e, 0x69, 0x43, 0xab, 0x09, 0x88, 0xfc, 0x2d, + 0xa5, 0x39, 0xd6, 0xca, 0x64, 0xa8, 0xda, 0xd5, 0xb4, 0xbb, 0x12, 0xb4, + 0xff, 0x2f, 0x4b, 0x92, 0xc2, 0xe6, 0xd0, 0xb8, 0x74, 0xad, 0xb2, 0x95, + 0x89, 0x06, 0xaf, 0x8e, 0xb7, 0x2d, 0xe2, 0x35, 0xba, 0x65, 0xa3, 0xe5, + 0x7b, 0x6c, 0x46, 0xa9, 0x2b, 0x06, 0xae, 0xd2, 0x91, 0x54, 0x6d, 0xed, + 0xef, 0x59, 0x5f, 0x47, 0x5e, 0x63, 0x66, 0x6c, 0x6b, 0x70, 0x52, 0x38, + 0xd1, 0x30, 0xac, 0x85, 0x1a, 0x0c, 0x35, 0x6d, 0xe7, 0x63, 0x5a, 0x42, + 0x16, 0xde, 0xe5, 0x81, 0xb1, 0x91, 0x6f, 0x4d, 0x52, 0x31, 0x42, 0x80, + 0xaf, 0x65, 0x86, 0xdc, 0xb1, 0xf3, 0x3f, 0x87, 0xbb, 0xbf, 0x7a, 0xc5, + 0x15, 0x53, 0x33, 0xd6, 0x45, 0x32, 0x56, 0xaf, 0x96, 0xa3, 0x2e, 0x9f, + 0x33, 0xd0, 0xfc, 0x58, 0x56, 0x36, 0x39, 0x2c, 0x44, 0x62, 0xba, 0x7a, + 0x0b, 0xbd, 0xa4, 0xe6, 0x2e, 0x27, 0xcc, 0x04, 0x35, 0xa4, 0xfd, 0x34, + 0x05, 0xbc, 0x0b, 0x64, 0x04, 0xbc, 0x1d, 0x09, 0x37, 0x71, 0x30, 0x00, + 0x2d, 0x48, 0x00, 0x25, 0xa9, 0x4c, 0xfe, 0xb5, 0x81, 0x59, 0xb0, 0x55, + 0xa3, 0x8d, 0x9c, 0x82, 0x10, 0x18, 0x26, 0x02, 0x91, 0x93, 0xf4, 0x4a, + 0xca, 0x88, 0x69, 0xd8, 0xe2, 0x45, 0x22, 0xbe, 0x54, 0x21, 0x67, 0xca, + 0x8b, 0x99, 0x97, 0x4a, 0x3b, 0x8c, 0x67, 0x15, 0x65, 0x3a, 0xa1, 0xf1, + 0x79, 0x08, 0xe4, 0x24, 0x7c, 0xe4, 0xaa, 0x23, 0x3b, 0x1d, 0x19, 0x5a, + 0xd5, 0xbc, 0x83, 0x88, 0xd3, 0xdf, 0xd6, 0xeb, 0x42, 0x2a, 0x66, 0xad, + 0x98, 0x99, 0xa9, 0x45, 0x39, 0xc8, 0xf9, 0xf4, 0xfb, 0xb3, 0xcd, 0x6d, + 0x7b, 0xcf, 0x2a, 0x5e, 0x77, 0x47, 0x76, 0xe7, 0x52, 0xa5, 0x58, 0x22, + 0x45, 0x47, 0x3a, 0xae, 0x82, 0x47, 0x2c, 0x8c, 0x22, 0x30, 0x7c, 0x54, + 0xa7, 0x47, 0x0e, 0x0e, 0x1e, 0xda, 0x43, 0x11, 0x18, 0x30, 0x60, 0x24, + 0xa6, 0x61, 0xf1, 0x28, 0x00, 0x03, 0x56, 0x30, 0x40, 0x06, 0xb1, 0x0b, + 0xaa, 0x44, 0x03, 0xb4, 0xd5, 0x3e, 0xf7, 0x32, 0x96, 0x70, 0x42, 0x1e, + 0xa3, 0xd3, 0xce, 0x9e, 0x21, 0x03, 0x19, 0xdb, 0x0b, 0x33, 0xfa, 0x07, + 0x42, 0xbc, 0xe9, 0x4f, 0x88, 0xf1, 0x7c, 0x1c, 0x6c, 0x07, 0x01, 0xc8, + 0x82, 0x27, 0x89, 0x63, 0x74, 0xc0, 0x7c, 0x2b, 0xc7, 0xfa, 0xc9, 0x6e, + 0x80, 0xcc, 0x3f, 0x2e, 0x86, 0xff, 0xfb, 0xd4, 0x60, 0x23, 0x84, 0x08, + 0x13, 0x76, 0x3e, 0x83, 0xaf, 0x7b, 0x72, 0x64, 0xc9, 0x18, 0x9d, 0x14, + 0xe3, 0x5e, 0x20, 0x21, 0xda, 0xfc, 0xae, 0x3d, 0xed, 0xc1, 0xc2, 0xb9, + 0xa1, 0x30, 0x91, 0x95, 0xb9, 0x17, 0xba, 0x21, 0xca, 0x71, 0xf4, 0xa3, + 0x2f, 0x8a, 0x65, 0xa8, 0x0d, 0x51, 0x10, 0xc3, 0x61, 0x4c, 0x86, 0x13, + 0xe3, 0xf6, 0x32, 0x7e, 0xf5, 0x84, 0xfe, 0xca, 0x19, 0x5b, 0xe0, 0x32, + 0x29, 0x4d, 0x18, 0x8a, 0xa5, 0x43, 0x2a, 0x7c, 0xf3, 0x7e, 0x9d, 0x44, + 0x2d, 0xe9, 0x42, 0xaf, 0x78, 0x74, 0x51, 0x58, 0x9b, 0x64, 0x56, 0xb2, + 0x30, 0x31, 0x36, 0x4f, 0x5d, 0xa3, 0xd9, 0xd1, 0x69, 0xbd, 0x51, 0x48, + 0x9d, 0x47, 0xba, 0x91, 0x34, 0xea, 0x58, 0xea, 0x28, 0x8f, 0xdc, 0x1f, + 0xbd, 0x5d, 0xba, 0x3d, 0x9c, 0x4f, 0xd6, 0x33, 0xb7, 0x4f, 0x50, 0x4d, + 0xb7, 0x63, 0x5b, 0x51, 0x19, 0x3a, 0x8e, 0xde, 0xb4, 0x95, 0x39, 0x52, + 0x12, 0x32, 0xbe, 0x5c, 0x47, 0x67, 0x50, 0x21, 0x13, 0xad, 0x35, 0xa5, + 0xd9, 0x5f, 0xb2, 0xaa, 0x5f, 0x3d, 0x39, 0x62, 0x29, 0x24, 0x56, 0x4c, + 0xac, 0xa4, 0x39, 0x99, 0x55, 0x2a, 0xd6, 0xc6, 0x94, 0x44, 0x39, 0xd9, + 0x32, 0xae, 0xc3, 0x2b, 0x26, 0x9f, 0xb1, 0x52, 0x32, 0x5d, 0x4e, 0xac, + 0x57, 0xc0, 0x3d, 0x13, 0xb1, 0x54, 0x09, 0x77, 0x24, 0xba, 0x81, 0x81, + 0x34, 0x6e, 0xa5, 0x48, 0x5d, 0x47, 0x1c, 0x53, 0xd1, 0xc4, 0x9f, 0x06, + 0x79, 0x7a, 0x1f, 0x80, 0x1e, 0x07, 0x91, 0x65, 0x1d, 0xa7, 0x92, 0xd4, + 0x80, 0x07, 0x16, 0xf6, 0xb4, 0x9c, 0x92, 0x48, 0x3b, 0x12, 0x34, 0xa0, + 0xe8, 0x28, 0xc2, 0xe1, 0x1c, 0x6e, 0x0f, 0x43, 0x02, 0xc3, 0x4b, 0x94, + 0x35, 0x95, 0x1a, 0xcc, 0x75, 0x5d, 0xd9, 0x50, 0xee, 0x97, 0x31, 0x3d, + 0x51, 0x2e, 0x36, 0x5b, 0xc9, 0xbd, 0xdc, 0xc8, 0x4e, 0xa8, 0x77, 0x72, + 0x92, 0x1e, 0x5a, 0x59, 0x9a, 0xdb, 0xab, 0xa9, 0xd5, 0x06, 0x72, 0x46, + 0xcc, 0x11, 0xa2, 0xaf, 0xff, 0xbc, 0x33, 0x99, 0xf7, 0x3e, 0x0b, 0x26, + 0x25, 0x45, 0x2a, 0x64, 0x43, 0xad, 0x97, 0x38, 0xa2, 0x56, 0x1d, 0xff, + 0x77, 0xeb, 0xe3, 0x12, 0xe5, 0x12, 0x34, 0x71, 0x22, 0xa7, 0x85, 0x88, + 0x01, 0xda, 0x11, 0x2e, 0x0f, 0x82, 0x18, 0x2e, 0xd0, 0x68, 0x00, 0xc5, + 0x97, 0xd3, 0xdc, 0x0b, 0x03, 0x05, 0x2c, 0x09, 0xd0, 0xa5, 0x53, 0x64, + 0x12, 0x45, 0x1c, 0x36, 0xa2, 0xe8, 0x43, 0xa5, 0xfe, 0x44, 0xd4, 0xad, + 0x28, 0xc5, 0xda, 0x00, 0xe7, 0x3c, 0x5e, 0x34, 0x34, 0x97, 0x42, 0x64, + 0xb2, 0x54, 0x24, 0x4f, 0xd2, 0xc6, 0x5e, 0xd0, 0x95, 0x1a, 0x1a, 0x69, + 0xec, 0x89, 0x44, 0x18, 0x2c, 0x45, 0xcc, 0xaa, 0x37, 0xcd, 0xd3, 0xa9, + 0x5a, 0x7f, 0xae, 0x28, 0xae, 0x27, 0xaf, 0xcf, 0xe8, 0x6e, 0x2e, 0x08, + 0x6b, 0xe4, 0xf1, 0x04, 0x55, 0xa8, 0x12, 0xa5, 0xd1, 0x88, 0xc8, 0x56, + 0x32, 0xa4, 0x60, 0x1f, 0xca, 0xc4, 0x81, 0xee, 0xc2, 0xdf, 0x32, 0x8d, + 0xc8, 0xda, 0x49, 0x9d, 0xd1, 0x15, 0xca, 0x26, 0x15, 0x1a, 0xda, 0x0d, + 0xce, 0x1b, 0x33, 0xa7, 0xcd, 0xaa, 0x73, 0x4b, 0x53, 0x39, 0x30, 0xb1, + 0x32, 0x24, 0x95, 0x4a, 0x76, 0x04, 0xa2, 0x7a, 0x36, 0x62, 0x28, 0xe2, + 0x2d, 0x2b, 0xd0, 0xf5, 0x85, 0x0a, 0x85, 0x3e, 0x8e, 0x5d, 0xc2, 0x55, + 0xbd, 0x6f, 0x8a, 0x8e, 0x5a, 0x62, 0x55, 0xb1, 0xad, 0xbd, 0x86, 0x77, + 0xb0, 0xb6, 0xbc, 0x60, 0x4f, 0xad, 0xa8, 0x9c, 0xe5, 0x4e, 0x21, 0xec, + 0xcf, 0x1e, 0xb3, 0xb7, 0x40, 0x39, 0xd0, 0xb5, 0x7e, 0x52, 0xec, 0x6d, + 0x75, 0x47, 0xe1, 0x3c, 0xaf, 0x39, 0xd2, 0x09, 0x75, 0xf9, 0x32, 0xd9, + 0x54, 0x21, 0x81, 0x62, 0x14, 0x94, 0x89, 0x15, 0xb2, 0x2c, 0xb1, 0x99, + 0xfb, 0xd6, 0xc8, 0x32, 0x29, 0xec, 0xb0, 0xd4, 0xcb, 0x09, 0xc4, 0xfd, + 0x56, 0x39, 0xa5, 0x58, 0x5e, 0xeb, 0xb4, 0xbd, 0x47, 0xba, 0x34, 0x0b, + 0xd9, 0xaa, 0x4b, 0x58, 0xa2, 0x29, 0x5b, 0x8f, 0x1c, 0x43, 0x74, 0x70, + 0x92, 0x42, 0xe2, 0x09, 0xc4, 0xb8, 0x2f, 0xc7, 0x7e, 0x62, 0x00, 0x19, + 0x8d, 0x14, 0x00, 0x1d, 0x53, 0xfe, 0xa9, 0xd5, 0xc4, 0x62, 0x45, 0x34, + 0x84, 0x13, 0x54, 0x92, 0x2c, 0xf5, 0xdd, 0xab, 0x41, 0x1f, 0xd7, 0x32, + 0xfa, 0xff, 0x09, 0xf2, 0x5e, 0x67, 0x1b, 0xf8, 0xf7, 0xcb, 0xff, 0x99, + 0x2a, 0xad, 0x9e, 0xa4, 0x4a, 0x88, 0x3a, 0x10, 0x94, 0x61, 0x13, 0xa5, + 0x64, 0xaa, 0xfd, 0x1d, 0x1a, 0xe6, 0x7b, 0xd5, 0xde, 0x94, 0x57, 0xa3, + 0x6e, 0x94, 0xa5, 0x9d, 0x5f, 0x9d, 0xd1, 0x0b, 0xdd, 0xd3, 0xe4, 0x5b, + 0x3d, 0x1a, 0xf4, 0xb3, 0x49, 0xa2, 0x26, 0xdd, 0x8c, 0x9e, 0xe7, 0x66, + 0x20, 0x92, 0x2a, 0xa8, 0x9b, 0x10, 0x5a, 0x3d, 0x04, 0x48, 0x70, 0x80, + 0x74, 0x68, 0x79, 0x4e, 0x34, 0x8e, 0x38, 0x54, 0x82, 0x00, 0x87, 0x1a, + 0x02, 0x4e, 0x26, 0x02, 0x02, 0x04, 0x0a, 0xa8, 0x8c, 0x2e, 0x29, 0xce, + 0x2e, 0x04, 0x43, 0x82, 0xc5, 0x86, 0x22, 0x00, 0x58, 0x6d, 0xd4, 0xc5, + 0x83, 0x26, 0x5c, 0x66, 0xf2, 0x88, 0xb8, 0x1a, 0x44, 0xd4, 0xfc, 0x3b, + 0x8e, 0x92, 0x7a, 0x5c, 0xd0, 0xd3, 0x4c, 0x9e, 0x1d, 0x97, 0x46, 0x1a, + 0x04, 0xbd, 0x4a, 0x74, 0x1c, 0x24, 0xe5, 0xc9, 0x0c, 0x24, 0x0a, 0xd2, + 0xec, 0xa1, 0x34, 0x94, 0xe7, 0x7d, 0x0c, 0x16, 0x72, 0xf3, 0x55, 0xc0, + 0x8e, 0xa8, 0xce, 0x66, 0x61, 0xff, 0xfb, 0xd4, 0x60, 0x25, 0x08, 0x08, + 0x45, 0x76, 0xbe, 0xab, 0xaf, 0x7b, 0x70, 0x74, 0x6e, 0x88, 0x6d, 0x18, + 0x65, 0x6e, 0x60, 0x09, 0xda, 0xfc, 0x2e, 0x3d, 0xed, 0xc1, 0xa1, 0x38, + 0xe1, 0xb4, 0x81, 0x0d, 0xb9, 0xca, 0xb9, 0x50, 0xa3, 0x97, 0x97, 0x48, + 0x63, 0x32, 0x4c, 0xea, 0x61, 0x3d, 0xe1, 0xa5, 0xce, 0x63, 0x1d, 0x54, + 0xf0, 0xfd, 0x4f, 0xb0, 0xb1, 0xa8, 0x5c, 0x1c, 0xd6, 0x4e, 0x53, 0xf5, + 0x77, 0xa6, 0x15, 0x6b, 0xf7, 0x8d, 0xab, 0x95, 0x31, 0xd5, 0x52, 0x76, + 0xb4, 0x93, 0x48, 0x44, 0x94, 0xce, 0x41, 0x9d, 0x2c, 0xac, 0xea, 0x38, + 0x2d, 0xcc, 0x4a, 0xa7, 0xb8, 0x64, 0xb2, 0xbd, 0x51, 0x11, 0x81, 0xfb, + 0x6b, 0x52, 0x45, 0x58, 0xe9, 0x9a, 0x8e, 0x71, 0x50, 0xe5, 0x6a, 0x79, + 0x09, 0xef, 0x18, 0xe3, 0xa8, 0x54, 0x6f, 0x9d, 0x2b, 0x8e, 0xaa, 0xa7, + 0x22, 0x6a, 0x64, 0x8b, 0x8b, 0x82, 0x1a, 0xb2, 0x7f, 0xaa, 0x11, 0x08, + 0x7e, 0x56, 0xdb, 0x59, 0x13, 0x70, 0x57, 0x4d, 0x8e, 0x28, 0xc4, 0x52, + 0xb9, 0xfa, 0x1c, 0xb8, 0x7a, 0x75, 0x39, 0xb1, 0xb3, 0xb0, 0x32, 0x30, + 0x2c, 0xb2, 0xa4, 0xb0, 0xd6, 0xc1, 0x46, 0x68, 0x90, 0x92, 0xd0, 0xd0, + 0x85, 0x5c, 0x78, 0x2c, 0xd0, 0x90, 0xd5, 0xf7, 0x91, 0x1e, 0x22, 0x16, + 0xd5, 0x8c, 0xec, 0x27, 0x4d, 0x0d, 0xf5, 0x72, 0x1e, 0x75, 0xad, 0x35, + 0x17, 0x72, 0x66, 0xa6, 0x4e, 0xa7, 0x50, 0x82, 0xd8, 0x21, 0xc4, 0xe0, + 0xf6, 0x21, 0xea, 0xa3, 0xa5, 0x80, 0x97, 0xcc, 0x56, 0x13, 0xd3, 0x40, + 0xa3, 0x41, 0xbc, 0xd8, 0x01, 0x39, 0x42, 0x09, 0xa2, 0xdb, 0xad, 0x0f, + 0xfe, 0xab, 0x0f, 0x24, 0x69, 0xe1, 0x0b, 0x0a, 0xc1, 0xcf, 0x69, 0x39, + 0xff, 0xf3, 0xb1, 0x83, 0x2c, 0x24, 0xef, 0xa2, 0xff, 0xfd, 0xe5, 0xe2, + 0xb8, 0xed, 0xaf, 0x98, 0x9b, 0x1c, 0x86, 0x32, 0x28, 0xfc, 0xe4, 0x57, + 0xb4, 0xe5, 0xc8, 0x5a, 0x12, 0x8c, 0x3c, 0x6c, 0x38, 0x22, 0x34, 0x5d, + 0x08, 0x28, 0xc1, 0xe5, 0x50, 0x50, 0xe0, 0xaa, 0x00, 0xb0, 0xad, 0xed, + 0x54, 0x5c, 0x8e, 0xcc, 0xe7, 0xb5, 0xd0, 0xc9, 0x44, 0x3b, 0xad, 0xdc, + 0xc6, 0x46, 0x4d, 0xab, 0x4a, 0x32, 0xab, 0x7f, 0xfd, 0xbb, 0xed, 0xd9, + 0x52, 0xa5, 0xab, 0x2a, 0x66, 0x39, 0x0c, 0xa6, 0x33, 0x54, 0x20, 0x55, + 0x7b, 0x95, 0x46, 0x31, 0x4a, 0xa2, 0x42, 0x08, 0x82, 0xc1, 0xa3, 0x66, + 0x1e, 0x24, 0x8c, 0x8c, 0xc0, 0x43, 0xc3, 0x93, 0x11, 0xd4, 0x0a, 0x0a, + 0x6a, 0xee, 0x59, 0x6c, 0xd6, 0xfc, 0x3e, 0xc4, 0x97, 0xcb, 0x87, 0x3a, + 0xba, 0x6c, 0x4d, 0x37, 0x16, 0xc3, 0x9c, 0x79, 0x2a, 0x10, 0x4f, 0xa6, + 0x45, 0x48, 0x4f, 0x8d, 0x25, 0x6a, 0xc9, 0xff, 0x28, 0xeb, 0x68, 0x3d, + 0x93, 0xe8, 0x59, 0xa2, 0xe2, 0x85, 0xa5, 0xd1, 0x46, 0x61, 0xd2, 0x68, + 0x12, 0xf6, 0x45, 0x73, 0x01, 0xa6, 0xd9, 0x16, 0x01, 0xd6, 0xdc, 0x6b, + 0x19, 0x0b, 0xe6, 0xfa, 0x41, 0x51, 0x31, 0xdc, 0xaf, 0x34, 0x14, 0x66, + 0xec, 0x12, 0xf8, 0x80, 0x52, 0x97, 0x1d, 0xbc, 0x3e, 0x1d, 0x20, 0x92, + 0x6d, 0x68, 0x43, 0x3a, 0xb9, 0xfa, 0x8c, 0xb3, 0x3e, 0x5a, 0x53, 0xab, + 0x4d, 0xca, 0x85, 0x53, 0x4a, 0xed, 0x3f, 0x1c, 0x9c, 0x9d, 0x8a, 0x37, + 0xea, 0x51, 0xff, 0x0d, 0x0d, 0xaa, 0x9d, 0xf3, 0x6b, 0x7a, 0xfb, 0x2c, + 0x55, 0xdb, 0x3b, 0x9b, 0x93, 0x3a, 0x14, 0x9f, 0x57, 0xb3, 0x2a, 0xa0, + 0x74, 0x3d, 0x89, 0x76, 0x84, 0x2f, 0xa9, 0xa8, 0xde, 0xd8, 0xd8, 0x9f, + 0xbb, 0x8c, 0x0e, 0xa6, 0x53, 0xb2, 0x21, 0x2a, 0x28, 0x10, 0xa2, 0x43, + 0x85, 0x62, 0xe7, 0x2b, 0x82, 0x7d, 0x99, 0x99, 0x76, 0xd2, 0xb4, 0xe1, + 0x01, 0xb1, 0x91, 0x8e, 0x1c, 0x93, 0x33, 0x2e, 0x59, 0x20, 0x33, 0x41, + 0x72, 0x5c, 0xc7, 0x54, 0xc4, 0xd7, 0x82, 0xbb, 0x8d, 0x57, 0xf6, 0x6b, + 0x56, 0xa6, 0xf2, 0xf9, 0xe5, 0x6e, 0xfe, 0x23, 0x1b, 0x43, 0x4a, 0x91, + 0xbd, 0xa9, 0x2d, 0x10, 0xd1, 0x52, 0x3d, 0x42, 0x94, 0x08, 0xe3, 0x04, + 0xd2, 0x73, 0xba, 0xec, 0xb6, 0x9c, 0x24, 0x29, 0x6c, 0xb9, 0x9a, 0xad, + 0xa7, 0xe2, 0xec, 0xe8, 0x66, 0x1b, 0x82, 0xf0, 0x81, 0x0e, 0x54, 0xf0, + 0x21, 0x06, 0xa4, 0x59, 0xc0, 0x0d, 0x3b, 0x42, 0x20, 0x94, 0x94, 0x48, + 0x7c, 0xa5, 0xb1, 0xe0, 0xf8, 0xa1, 0xf2, 0x11, 0x12, 0x10, 0x92, 0x38, + 0x52, 0xee, 0x93, 0xa2, 0x31, 0xdd, 0x7f, 0xdf, 0xb4, 0x87, 0xa6, 0x97, + 0xdb, 0xc4, 0xc9, 0x8f, 0xde, 0x17, 0xf6, 0xfc, 0xa6, 0xe7, 0x99, 0xfa, + 0x7d, 0xf6, 0x23, 0x54, 0x13, 0x04, 0x59, 0x61, 0x6b, 0x0b, 0x30, 0xc3, + 0xcc, 0xdb, 0xe5, 0x2f, 0xca, 0x69, 0xb4, 0x2c, 0xce, 0x16, 0x65, 0x72, + 0xe4, 0xca, 0x15, 0x3c, 0x8a, 0x7d, 0x4c, 0xff, 0x3f, 0xe9, 0xff, 0xc2, + 0xf3, 0xff, 0xcb, 0xfe, 0xae, 0x75, 0x39, 0x6a, 0xd2, 0xa7, 0x58, 0x2e, + 0x60, 0x62, 0x28, 0xce, 0x90, 0x32, 0x03, 0xa6, 0x41, 0x04, 0xc2, 0x5d, + 0xba, 0x00, 0x02, 0xdb, 0x89, 0x44, 0xda, 0x4d, 0xb1, 0x4d, 0x29, 0x19, + 0x90, 0x32, 0xd6, 0x24, 0xd6, 0x5c, 0xa8, 0xeb, 0x91, 0x1d, 0x6b, 0x90, + 0xc4, 0x11, 0x22, 0x86, 0xb9, 0x70, 0x2e, 0x28, 0xe4, 0x71, 0xcc, 0x86, + 0xc3, 0x2e, 0x0a, 0xc3, 0xa8, 0xb8, 0x2e, 0x8c, 0x48, 0x0d, 0xa2, 0x72, + 0x87, 0x1d, 0x20, 0x5f, 0x59, 0x4b, 0xd1, 0x70, 0xa7, 0x2e, 0x88, 0x37, + 0xad, 0x4d, 0x8a, 0xd7, 0xc6, 0xff, 0xfb, 0xd4, 0x60, 0x20, 0x00, 0x07, + 0x71, 0x76, 0x41, 0x6b, 0x2f, 0x63, 0x70, 0x6e, 0xae, 0xa8, 0x4c, 0x18, + 0xa5, 0x6e, 0x5f, 0x09, 0xd7, 0x01, 0x2c, 0xbd, 0xed, 0xc9, 0xbb, 0xba, + 0x61, 0x30, 0x91, 0x8d, 0xb9, 0x60, 0xe1, 0x4a, 0x27, 0x91, 0x4f, 0x8b, + 0x91, 0x78, 0x6e, 0x43, 0x8d, 0x15, 0x00, 0x7f, 0x21, 0x24, 0x09, 0xb9, + 0x38, 0x4e, 0x11, 0x87, 0xe7, 0x6f, 0x40, 0x28, 0x38, 0x1b, 0xaf, 0x34, + 0x27, 0x90, 0xd1, 0x0b, 0x95, 0x14, 0x52, 0x8f, 0x03, 0xc2, 0xb3, 0xf8, + 0xc8, 0x64, 0x91, 0xf4, 0xb4, 0x86, 0xa8, 0xec, 0xa0, 0xa4, 0x8a, 0x90, + 0xc0, 0x1a, 0x88, 0x04, 0x88, 0x8f, 0xd1, 0x1c, 0x1b, 0x1e, 0x19, 0x1c, + 0xaf, 0x5a, 0x70, 0x21, 0x96, 0xd6, 0x81, 0x13, 0xca, 0x98, 0x07, 0x02, + 0xa3, 0x8a, 0x0e, 0x0d, 0x0d, 0x01, 0xe3, 0x03, 0xf2, 0xe2, 0xfb, 0x3a, + 0x78, 0x7c, 0x29, 0x26, 0x16, 0x9c, 0x68, 0xa8, 0x59, 0x4c, 0x88, 0xae, + 0x5c, 0x18, 0x95, 0x4b, 0x83, 0xd9, 0xfa, 0xfd, 0x3e, 0x11, 0x4c, 0x51, + 0x1e, 0x32, 0x90, 0xef, 0xd0, 0x89, 0x2e, 0x4f, 0xb3, 0x7e, 0x86, 0x75, + 0xa8, 0xbf, 0x73, 0x69, 0x15, 0x21, 0xfc, 0xb5, 0xb2, 0x8c, 0xd7, 0xd7, + 0xfd, 0x22, 0xa7, 0x7c, 0x77, 0x72, 0xa9, 0xb7, 0xae, 0xad, 0x32, 0x43, + 0xf6, 0xcc, 0x76, 0x47, 0x49, 0x4a, 0x7a, 0x77, 0x55, 0x87, 0x21, 0x21, + 0xb0, 0xf2, 0x49, 0x18, 0x08, 0xd8, 0x1e, 0x05, 0xc6, 0x2b, 0x91, 0x00, + 0x12, 0x31, 0x44, 0x12, 0x5a, 0xa3, 0xff, 0xeb, 0x8b, 0x49, 0x00, 0x9b, + 0xe1, 0xcf, 0x0c, 0x42, 0x94, 0x1d, 0x87, 0xa0, 0x7f, 0x66, 0x9a, 0xd6, + 0x4b, 0xfd, 0x76, 0x55, 0xcc, 0xe8, 0xba, 0x21, 0x55, 0xd6, 0xcf, 0xda, + 0xad, 0x2d, 0x5b, 0xb2, 0xde, 0x69, 0x5c, 0x8a, 0xa8, 0x53, 0x1d, 0x91, + 0x5d, 0xab, 0xc8, 0x63, 0x1d, 0x11, 0xd6, 0xac, 0x5e, 0xcf, 0x42, 0x5d, + 0x19, 0xfa, 0xd9, 0x52, 0xe7, 0x77, 0x7d, 0xd8, 0x8e, 0x62, 0x2a, 0x2d, + 0xcc, 0xc8, 0xe9, 0x93, 0xfe, 0xdf, 0x6d, 0x2c, 0xc7, 0xda, 0xbd, 0xe2, + 0x4a, 0x8c, 0x83, 0x14, 0xc6, 0x10, 0x29, 0x47, 0xa0, 0x0e, 0x2c, 0xe2, + 0xa8, 0x3c, 0x68, 0xb3, 0x0a, 0x54, 0x62, 0x98, 0x4a, 0x71, 0x01, 0xa2, + 0x26, 0x54, 0x14, 0x2a, 0xa9, 0x6b, 0xe4, 0xdc, 0xc1, 0x0a, 0x84, 0x64, + 0x3f, 0xf4, 0xce, 0x6d, 0x2b, 0x3d, 0x87, 0x5e, 0x59, 0xa8, 0xec, 0x04, + 0xde, 0xa9, 0x50, 0xc2, 0xda, 0x78, 0x1c, 0x88, 0x62, 0xa1, 0x58, 0x3f, + 0x93, 0xe9, 0xe3, 0xa0, 0xbf, 0x24, 0xcd, 0x33, 0x48, 0x84, 0x9b, 0xe5, + 0xd9, 0xe3, 0x19, 0xfc, 0x3c, 0x22, 0x98, 0x8e, 0x2a, 0xb8, 0x8b, 0xb4, + 0x4a, 0x6d, 0xf3, 0x7a, 0x8c, 0xbf, 0x2d, 0x39, 0x2f, 0xa1, 0x0a, 0x47, + 0x36, 0x22, 0xfa, 0x8b, 0x55, 0x14, 0xa7, 0x19, 0x6f, 0x30, 0x24, 0x3d, + 0xd4, 0xac, 0xea, 0x05, 0xf5, 0xd9, 0xee, 0xd8, 0xc4, 0x91, 0x76, 0xcf, + 0x1b, 0x0e, 0x66, 0x81, 0xc2, 0x98, 0x57, 0x27, 0xa6, 0x3b, 0xce, 0x61, + 0x26, 0x3c, 0x1d, 0x1d, 0x4d, 0xcf, 0xce, 0xb2, 0xdc, 0xb1, 0x94, 0x9c, + 0xc6, 0x62, 0x12, 0xca, 0x4b, 0x8b, 0x7a, 0x29, 0x3a, 0x79, 0x69, 0x82, + 0x2a, 0x95, 0x52, 0xa9, 0x3a, 0x93, 0x56, 0x5a, 0x4a, 0x28, 0x9a, 0x62, + 0x1c, 0x0f, 0xd0, 0x46, 0x52, 0xca, 0xe9, 0x77, 0x01, 0xe5, 0xd4, 0x53, + 0x3f, 0x42, 0x57, 0x09, 0xe7, 0x33, 0xa2, 0x58, 0x54, 0x88, 0x98, 0x8b, + 0x00, 0xec, 0x92, 0xa8, 0x66, 0xe0, 0x39, 0x45, 0x64, 0x4e, 0x2b, 0x32, + 0x9e, 0xf1, 0xaf, 0x64, 0x43, 0x1b, 0xb8, 0x15, 0xd6, 0xb2, 0xf3, 0x6d, + 0xf8, 0x78, 0xd9, 0x15, 0x8e, 0x25, 0xe9, 0x15, 0xc3, 0x0e, 0x70, 0xe3, + 0xc4, 0x9a, 0x16, 0xae, 0xd5, 0x02, 0x76, 0x78, 0x6f, 0x25, 0x80, 0xf9, + 0xe3, 0xf7, 0x18, 0x6a, 0xcc, 0x76, 0x3c, 0x34, 0x3d, 0x3f, 0x4e, 0x3c, + 0xb2, 0xa4, 0x8f, 0xb5, 0xcb, 0x7a, 0xa1, 0x61, 0x12, 0x5f, 0xd9, 0x8b, + 0xa2, 0x70, 0xf1, 0x2d, 0xe5, 0xe9, 0x58, 0x7e, 0xb3, 0x11, 0x01, 0x36, + 0xeb, 0x48, 0xca, 0xd5, 0xa7, 0xff, 0x4d, 0xd0, 0xc8, 0x50, 0xe9, 0x91, + 0x01, 0x00, 0x2c, 0x03, 0x09, 0x02, 0x82, 0x05, 0x5a, 0x75, 0x34, 0x24, + 0x52, 0x72, 0x30, 0x45, 0x73, 0x9a, 0xdf, 0xcf, 0xcc, 0xed, 0xf4, 0xd7, + 0xec, 0xb6, 0x12, 0x9c, 0x23, 0x3c, 0xb7, 0x7b, 0x9b, 0xe7, 0x72, 0x4b, + 0x32, 0x3a, 0x54, 0xa4, 0xfe, 0x53, 0x89, 0x6b, 0x9d, 0xff, 0xbc, 0x36, + 0xe3, 0x98, 0x45, 0x7a, 0xb3, 0xa6, 0x25, 0xd4, 0xef, 0xdf, 0xfd, 0x10, + 0xb8, 0x7e, 0x7e, 0x7c, 0xcf, 0x3b, 0xff, 0xf9, 0xf9, 0x7e, 0x5f, 0xf7, + 0xfb, 0x9c, 0x2f, 0xe4, 0xe7, 0x34, 0x70, 0x1d, 0x54, 0x5b, 0x95, 0x90, + 0x28, 0xcd, 0x60, 0x1d, 0x60, 0x81, 0x81, 0x47, 0x1c, 0x4f, 0x05, 0x09, + 0x17, 0x13, 0xc1, 0x04, 0xa5, 0xd2, 0x11, 0x1c, 0x1e, 0xf0, 0xe3, 0xcc, + 0xdf, 0x3c, 0x0e, 0x06, 0xda, 0x5b, 0x42, 0x76, 0x5c, 0x56, 0xc4, 0xd4, + 0x89, 0xe1, 0x6e, 0x39, 0xec, 0x2f, 0x84, 0x94, 0xcd, 0x17, 0x06, 0x62, + 0x2c, 0xc8, 0x3e, 0x92, 0xce, 0x62, 0x38, 0x57, 0x90, 0xe2, 0xf0, 0x46, + 0x87, 0x10, 0x4a, 0x4f, 0x63, 0xc9, 0xc0, 0x93, 0x0f, 0x41, 0x7e, 0x62, + 0x56, 0x8c, 0x67, 0xc6, 0x13, 0xa5, 0x1c, 0xa7, 0xa1, 0x6d, 0x27, 0xaa, + 0xd5, 0x63, 0x19, 0x7c, 0x59, 0x39, 0xe1, 0xa2, 0xd5, 0xe8, 0x63, 0x72, + 0xb4, 0xb1, 0x33, 0x95, 0xe8, 0xff, 0xfb, 0xd4, 0x60, 0x2c, 0x00, 0x08, + 0x44, 0x76, 0xbe, 0xab, 0x6f, 0x7b, 0x70, 0x69, 0x4e, 0x48, 0x6c, 0x24, + 0x63, 0x6e, 0x61, 0x5d, 0xda, 0xf9, 0x0e, 0x3d, 0xed, 0xc1, 0x75, 0xa8, + 0xe3, 0x7c, 0x72, 0x8d, 0x7c, 0x42, 0x98, 0xc3, 0x59, 0x3e, 0x8b, 0x9b, + 0x22, 0xb9, 0x0d, 0x94, 0xdf, 0x7d, 0x06, 0x2c, 0x07, 0xa9, 0x77, 0x68, + 0x87, 0x4f, 0x0e, 0x35, 0xc3, 0x6a, 0x61, 0x1d, 0x09, 0x78, 0xe8, 0x3d, + 0xda, 0x99, 0xa2, 0x30, 0x46, 0x70, 0x76, 0xba, 0x42, 0xda, 0x97, 0x2b, + 0x87, 0x69, 0x93, 0xf4, 0xea, 0x58, 0x7e, 0xab, 0x5c, 0xad, 0x69, 0x38, + 0xb4, 0xa2, 0xc9, 0xfc, 0xde, 0xcc, 0xc6, 0xac, 0x42, 0xdc, 0xa3, 0x46, + 0x6f, 0x59, 0x4c, 0xb7, 0xc2, 0x69, 0xb2, 0x10, 0x87, 0x28, 0xea, 0xda, + 0xb0, 0x7a, 0x29, 0x62, 0x2f, 0x42, 0x62, 0x71, 0x48, 0xbc, 0xb2, 0xc2, + 0x09, 0x3e, 0xdc, 0x95, 0x8e, 0xa9, 0x39, 0x50, 0xd7, 0xee, 0x0c, 0xec, + 0x8e, 0xe1, 0xb0, 0xc9, 0xe0, 0x2a, 0x9f, 0xc2, 0x78, 0xa0, 0x62, 0x6a, + 0x95, 0x4b, 0x15, 0x8d, 0x42, 0xcf, 0x6d, 0xa7, 0xf7, 0x16, 0x1b, 0xe8, + 0x0a, 0xf5, 0x3a, 0x95, 0x32, 0xb4, 0x72, 0xbc, 0x90, 0xe7, 0x63, 0x2e, + 0xc9, 0x54, 0x02, 0x90, 0xf2, 0x71, 0x3f, 0xca, 0x64, 0x4a, 0xac, 0x62, + 0x2b, 0x10, 0xc3, 0xc5, 0x61, 0x00, 0x5b, 0x8e, 0x20, 0xb9, 0x2b, 0x94, + 0xe3, 0x08, 0x24, 0x42, 0x42, 0x10, 0xc2, 0x70, 0x23, 0x44, 0xcd, 0x1e, + 0xc3, 0xa0, 0x04, 0x6e, 0xd6, 0xd0, 0xb5, 0xd6, 0x7f, 0x71, 0x66, 0x24, + 0x80, 0x11, 0x8e, 0x8e, 0x90, 0x11, 0x8e, 0x01, 0x8a, 0x63, 0x74, 0x77, + 0x08, 0xae, 0x51, 0xdf, 0xcb, 0xe4, 0xe7, 0x7f, 0xb4, 0xcc, 0xf9, 0x97, + 0xdf, 0x83, 0xfd, 0xd5, 0xf9, 0xf2, 0x36, 0x5c, 0xa5, 0x0a, 0xf5, 0xe6, + 0x2c, 0xbb, 0x23, 0xcf, 0x29, 0x93, 0x7e, 0xe6, 0x54, 0xcb, 0x3f, 0x4b, + 0x9a, 0xa6, 0x59, 0xcc, 0xff, 0x73, 0xd7, 0xbc, 0xcf, 0x96, 0x53, 0x33, + 0x70, 0x69, 0x26, 0xea, 0x86, 0x7c, 0x83, 0x19, 0xff, 0x4b, 0xff, 0xff, + 0xff, 0xcf, 0xff, 0xbe, 0xef, 0x99, 0xd2, 0x7e, 0x70, 0x2c, 0xbd, 0x29, + 0x5e, 0x83, 0x47, 0xd4, 0xc8, 0x11, 0x09, 0x00, 0x6c, 0x68, 0xa8, 0x00, + 0x06, 0x00, 0x42, 0x5a, 0xe7, 0x98, 0x39, 0x78, 0x76, 0x40, 0x33, 0x2d, + 0x5a, 0x69, 0xb2, 0x85, 0x6a, 0x76, 0xdd, 0x9c, 0x96, 0xc7, 0x3e, 0xae, + 0x98, 0x10, 0x25, 0x91, 0xc9, 0xc1, 0x49, 0x54, 0x38, 0x27, 0x8f, 0x94, + 0x38, 0x62, 0x1d, 0xa3, 0xfc, 0x66, 0x13, 0x33, 0x65, 0x4a, 0x7c, 0xbc, + 0x1d, 0x82, 0xc6, 0x20, 0x07, 0xa9, 0x71, 0x17, 0x43, 0x9c, 0xce, 0x64, + 0x1f, 0xe4, 0xa5, 0x0f, 0x8e, 0x6c, 0x8a, 0x51, 0xde, 0x54, 0x99, 0x05, + 0xbd, 0xc4, 0xcf, 0x89, 0x18, 0xf5, 0x38, 0x12, 0x2a, 0xf5, 0x11, 0xce, + 0x67, 0x97, 0x04, 0x4a, 0xb1, 0xae, 0x77, 0x13, 0x12, 0x74, 0x35, 0x36, + 0x7e, 0xc7, 0x66, 0x56, 0x20, 0x4b, 0x34, 0xb9, 0xc2, 0x7f, 0x1f, 0xca, + 0xb4, 0x13, 0x2b, 0x62, 0x12, 0xa1, 0x1d, 0x88, 0x89, 0x58, 0x76, 0xa8, + 0x43, 0x09, 0x54, 0x17, 0x6e, 0x51, 0xd0, 0x07, 0x8b, 0x3a, 0xfa, 0x9d, + 0x92, 0x32, 0xc3, 0x23, 0x73, 0x22, 0x86, 0x55, 0x79, 0xfd, 0x0d, 0x15, + 0xd3, 0xcf, 0x8e, 0x48, 0x66, 0xfc, 0xef, 0x50, 0xf5, 0x39, 0x78, 0xf4, + 0x51, 0xae, 0xd9, 0x53, 0xaa, 0x24, 0xa4, 0x55, 0x72, 0xe1, 0xe2, 0xf2, + 0x46, 0x57, 0x4c, 0x05, 0x01, 0xe8, 0x94, 0x3a, 0x55, 0xc3, 0x9e, 0x2d, + 0x57, 0x4b, 0x84, 0x4b, 0x24, 0x36, 0x45, 0xa3, 0x49, 0x0c, 0x8b, 0x0a, + 0x2a, 0xc4, 0x28, 0x0f, 0x12, 0xaa, 0x44, 0x26, 0xb5, 0x66, 0x56, 0x48, + 0xed, 0xe2, 0x99, 0x62, 0x03, 0x7a, 0x71, 0xf4, 0x90, 0xec, 0x7e, 0xaa, + 0x14, 0x8d, 0x70, 0x9f, 0x36, 0xb6, 0x77, 0xcf, 0x1c, 0x56, 0xa3, 0xda, + 0x0a, 0x7a, 0xcc, 0x2a, 0x74, 0x21, 0x00, 0x78, 0x46, 0x34, 0x8e, 0x65, + 0x93, 0xa8, 0x4d, 0x8c, 0x87, 0xa7, 0x01, 0x0b, 0x7e, 0x7e, 0x11, 0x38, + 0x0b, 0xc2, 0x95, 0x79, 0x4c, 0x39, 0x4b, 0x10, 0x53, 0x8b, 0x79, 0xd6, + 0x9b, 0xd0, 0x01, 0xbc, 0x34, 0x3c, 0x2b, 0xb1, 0x2d, 0xb2, 0x41, 0xe9, + 0x11, 0x01, 0xa0, 0x70, 0x3b, 0x2a, 0x68, 0xf6, 0x12, 0x42, 0x09, 0x84, + 0xdc, 0x69, 0x90, 0xac, 0x41, 0x04, 0x3e, 0xfd, 0x3f, 0xfd, 0x35, 0xf0, + 0xb6, 0x9a, 0x83, 0x38, 0x86, 0x66, 0x66, 0x9d, 0x37, 0x23, 0x8c, 0x5e, + 0x0d, 0x94, 0xa1, 0xd3, 0x87, 0x64, 0xc8, 0x32, 0x16, 0xd0, 0xd6, 0x04, + 0x36, 0x3d, 0x12, 0x4a, 0xe1, 0xf3, 0x16, 0x2d, 0xad, 0x9b, 0x3a, 0xfa, + 0x11, 0x94, 0x25, 0xa3, 0xc1, 0x9e, 0x67, 0x1b, 0x08, 0xb5, 0xd8, 0x9d, + 0x2d, 0x64, 0x18, 0x7f, 0xff, 0xff, 0xa9, 0xbf, 0x31, 0x62, 0x2b, 0x03, + 0xa6, 0x16, 0x99, 0x81, 0x7e, 0x1e, 0xd0, 0xc9, 0x40, 0x6b, 0xae, 0xd7, + 0x1c, 0xb7, 0x21, 0x86, 0x34, 0x85, 0x9e, 0xc9, 0x1f, 0xe7, 0x79, 0xbc, + 0xc9, 0x32, 0x8e, 0x82, 0x7b, 0x21, 0x6e, 0x4e, 0x96, 0x08, 0x8c, 0xe3, + 0xf0, 0xb9, 0xa2, 0x8d, 0xc5, 0x13, 0x83, 0xc1, 0xd0, 0xaf, 0x10, 0xa1, + 0xc6, 0x76, 0x99, 0x2a, 0xc5, 0x1b, 0xe3, 0x48, 0x76, 0xa1, 0xc7, 0x99, + 0x0c, 0x25, 0x05, 0xf9, 0x32, 0xc8, 0x7e, 0x17, 0xd8, 0x6a, 0x05, 0x54, + 0x43, 0xa5, 0x46, 0xe0, 0xc8, 0x9f, 0x3b, 0xca, 0xc4, 0x63, 0xf5, 0xc2, + 0x49, 0x0c, 0x57, 0x3f, 0x30, 0xff, 0xfb, 0xd4, 0x60, 0x2d, 0x0e, 0x08, + 0x28, 0x76, 0xbf, 0x0b, 0x6f, 0x7b, 0x70, 0x6c, 0x4e, 0x18, 0x7c, 0x20, + 0xe3, 0x6f, 0x60, 0x81, 0xda, 0xfa, 0x0e, 0x3d, 0xed, 0xc1, 0x99, 0x24, + 0x62, 0x34, 0x74, 0x0d, 0x78, 0xab, 0x0d, 0x5a, 0xdc, 0xd2, 0xa8, 0x43, + 0x17, 0x08, 0x52, 0x95, 0xa9, 0x58, 0xa5, 0x4f, 0x30, 0xb3, 0xac, 0x1f, + 0x4c, 0x6d, 0x8a, 0x07, 0x38, 0xb0, 0xd7, 0xce, 0xa2, 0xf0, 0x68, 0x27, + 0x15, 0xcc, 0x2a, 0x44, 0x0b, 0xf6, 0x14, 0x29, 0xe9, 0xd1, 0x55, 0x01, + 0x6f, 0x53, 0xa9, 0x62, 0x3d, 0x8c, 0x9d, 0x8c, 0x5f, 0x4f, 0x47, 0xcf, + 0x0c, 0x06, 0xf9, 0xd7, 0x67, 0x75, 0x53, 0xe8, 0x41, 0xdc, 0x75, 0x27, + 0xd7, 0x47, 0x42, 0xb5, 0x74, 0x79, 0xab, 0x0d, 0x95, 0x42, 0xe9, 0xad, + 0x0d, 0x41, 0x16, 0xd6, 0x55, 0xe7, 0x93, 0xb8, 0xa6, 0xda, 0xe7, 0x6f, + 0x42, 0x9b, 0xdc, 0xd8, 0x9f, 0xc7, 0x3c, 0x58, 0x9c, 0xe3, 0xc2, 0xa4, + 0x38, 0x28, 0x73, 0x7d, 0x5e, 0x35, 0xd3, 0x7a, 0x63, 0x89, 0x0a, 0x34, + 0x4a, 0x3a, 0xda, 0xfe, 0xe4, 0x70, 0x65, 0x83, 0x9e, 0xd6, 0xcb, 0x1d, + 0x0a, 0x61, 0x9e, 0x5d, 0x9c, 0xec, 0xe7, 0xdb, 0x32, 0xae, 0x1b, 0x21, + 0xb4, 0x86, 0xae, 0xae, 0xc2, 0xb2, 0xfd, 0x50, 0xd4, 0x8a, 0x66, 0x76, + 0x6d, 0x10, 0x74, 0x25, 0x44, 0x6e, 0x81, 0xf8, 0x13, 0xa4, 0xd1, 0x0a, + 0x3a, 0x40, 0x5c, 0x01, 0x84, 0x6f, 0x1c, 0x1b, 0x00, 0x52, 0x9d, 0xc4, + 0x83, 0x28, 0x27, 0xfd, 0x28, 0x04, 0x1a, 0xa8, 0x84, 0x8d, 0x28, 0x91, + 0x10, 0x5a, 0x20, 0x03, 0x09, 0x8e, 0x5e, 0x8e, 0x7d, 0xcd, 0xe6, 0x69, + 0x4a, 0x25, 0xda, 0xa6, 0xab, 0x52, 0xe8, 0x6b, 0x22, 0x29, 0xe9, 0xb1, + 0x36, 0x7e, 0x4f, 0x86, 0x26, 0xc9, 0xd6, 0x91, 0x79, 0x5d, 0x48, 0xf3, + 0x32, 0x28, 0x7c, 0x29, 0xb4, 0xb2, 0xc8, 0xe7, 0x6b, 0xed, 0x9f, 0x3c, + 0x95, 0xb5, 0xc9, 0x55, 0x22, 0xeb, 0x54, 0x6b, 0xa1, 0x97, 0xa8, 0x45, + 0x35, 0x61, 0xd0, 0x13, 0x31, 0x7e, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xf9, 0x1f, 0xc2, 0xa5, 0xae, 0xb1, 0xbc, 0xed, 0xe1, 0xc1, 0x94, + 0x91, 0x8a, 0xa0, 0x52, 0xca, 0x00, 0xf6, 0xc3, 0xdc, 0x22, 0x40, 0x19, + 0x25, 0xa0, 0xc1, 0xa5, 0x31, 0x80, 0x13, 0x5f, 0x61, 0x8f, 0xe3, 0xec, + 0x80, 0xd4, 0xc7, 0x98, 0x67, 0xd6, 0xa5, 0x62, 0x66, 0x75, 0xa7, 0x9e, + 0xb9, 0x96, 0x65, 0xf1, 0x10, 0xfc, 0x90, 0x1c, 0x67, 0x2a, 0xf4, 0x55, + 0xc1, 0x07, 0x4e, 0x92, 0x24, 0x51, 0x0c, 0x2c, 0x6a, 0xf4, 0xe8, 0xcc, + 0x13, 0xe2, 0x99, 0x40, 0xb8, 0x3d, 0x52, 0xa7, 0xf8, 0xd1, 0x48, 0x41, + 0x42, 0x4f, 0x76, 0x76, 0x01, 0x49, 0x5b, 0x26, 0x4c, 0x6c, 0x68, 0x9c, + 0xa1, 0x07, 0x42, 0xb1, 0x0f, 0x21, 0x6a, 0xa3, 0xe6, 0x25, 0x95, 0x67, + 0x2b, 0x09, 0xd4, 0xfd, 0x3c, 0xb1, 0x2d, 0x9a, 0x57, 0x08, 0xd3, 0xd5, + 0x44, 0x9c, 0x46, 0xa8, 0xdb, 0xd0, 0xa6, 0x97, 0x8c, 0xe9, 0x55, 0x5b, + 0x89, 0x30, 0x42, 0xb6, 0xe0, 0xa1, 0x82, 0x72, 0x28, 0x6e, 0xdb, 0x19, + 0x0a, 0x53, 0x4a, 0xed, 0x28, 0x70, 0xa3, 0x98, 0xd1, 0x4b, 0x0b, 0xcb, + 0x4f, 0x74, 0x9f, 0x71, 0x4e, 0xb1, 0xd4, 0xd3, 0x56, 0xa7, 0x17, 0xed, + 0x83, 0xf0, 0xff, 0x53, 0xd1, 0x1f, 0x12, 0x02, 0xba, 0x1b, 0x5c, 0x75, + 0xa6, 0x84, 0x22, 0x12, 0xe1, 0x72, 0x92, 0x67, 0x6d, 0xf3, 0xb7, 0xae, + 0x0d, 0xe8, 0x6f, 0x1f, 0x4e, 0xba, 0x8a, 0xf5, 0xa5, 0x5f, 0x95, 0xcb, + 0x7a, 0xb9, 0x7d, 0x70, 0x8f, 0x6c, 0x54, 0xa9, 0xad, 0x3d, 0x97, 0x4c, + 0xac, 0x0f, 0x53, 0xb1, 0x9b, 0xea, 0xce, 0xd5, 0x95, 0x98, 0x70, 0x5b, + 0x15, 0xf9, 0x8f, 0x1d, 0xaa, 0x23, 0x9a, 0x35, 0x8d, 0x9d, 0x76, 0xab, + 0x1b, 0xb9, 0x55, 0x46, 0x41, 0x16, 0xe1, 0xfc, 0x85, 0x2e, 0xd1, 0xb2, + 0x17, 0xf1, 0xde, 0x8b, 0x17, 0x37, 0x14, 0x25, 0x2e, 0xca, 0x29, 0xe4, + 0x78, 0xf7, 0x0c, 0x21, 0xe6, 0x4d, 0x14, 0x07, 0x59, 0x4e, 0x04, 0xa0, + 0x70, 0x96, 0x24, 0xe6, 0x40, 0x15, 0xed, 0x9a, 0x85, 0x37, 0x1c, 0x90, + 0x7a, 0x9c, 0x0a, 0x8c, 0x1e, 0x78, 0xa4, 0x20, 0x28, 0x04, 0x83, 0x22, + 0x54, 0x22, 0xc7, 0x4e, 0xd7, 0xa4, 0xd7, 0xfc, 0x7f, 0x31, 0xa7, 0xdf, + 0xa5, 0xda, 0xb4, 0xaf, 0x94, 0x24, 0xb9, 0xbf, 0x9b, 0x9a, 0x4d, 0xb1, + 0x65, 0xb9, 0x57, 0x3a, 0xaf, 0xe9, 0x91, 0xf6, 0xe5, 0xda, 0x66, 0x33, + 0x47, 0x54, 0xde, 0xd7, 0x33, 0x2c, 0x8a, 0xae, 0x66, 0xc5, 0xbb, 0x54, + 0xfb, 0x61, 0x59, 0xd7, 0x17, 0x35, 0x1c, 0xdc, 0x30, 0x71, 0xa2, 0x14, + 0x13, 0x0a, 0xaf, 0xd3, 0xfa, 0x54, 0xfd, 0x32, 0x08, 0x58, 0x99, 0x63, + 0x54, 0x1c, 0x0e, 0x81, 0x42, 0xa6, 0xe1, 0x05, 0x82, 0xa1, 0xf5, 0x00, + 0xa0, 0x02, 0xc3, 0x05, 0x80, 0x66, 0x17, 0x96, 0x1e, 0xac, 0x9e, 0x2c, + 0x22, 0x60, 0x2a, 0xd6, 0xbf, 0x13, 0x4c, 0x38, 0x0e, 0xc6, 0x9a, 0xcc, + 0xa2, 0x1b, 0x6c, 0x53, 0x25, 0x87, 0x01, 0xb4, 0x68, 0x1f, 0x86, 0xc9, + 0xa6, 0xa6, 0xaa, 0xbd, 0x05, 0x01, 0x7c, 0x84, 0x6c, 0xbb, 0x21, 0xc3, + 0x28, 0x39, 0xcc, 0x96, 0x64, 0x4c, 0x88, 0x51, 0xb2, 0x8a, 0x3f, 0x0e, + 0xf5, 0xb3, 0x09, 0x74, 0x5d, 0x4f, 0xc4, 0x3d, 0x48, 0x63, 0xa4, 0x8c, + 0x94, 0xc1, 0xfc, 0x7c, 0x1d, 0xf1, 0x58, 0x57, 0x94, 0xa9, 0x87, 0x32, + 0x8d, 0x4e, 0x60, 0x9b, 0x87, 0xff, 0xfb, 0xd4, 0x60, 0x2d, 0x00, 0x08, + 0x4a, 0x76, 0xbe, 0xab, 0x8f, 0x7b, 0x70, 0x6e, 0x07, 0x78, 0x8d, 0x1d, + 0x23, 0x5c, 0x60, 0x5d, 0xda, 0xff, 0x0e, 0x3d, 0xed, 0xc1, 0xc8, 0xb8, + 0xe1, 0xf4, 0x94, 0x0d, 0xb9, 0x3b, 0x04, 0x33, 0x9d, 0x26, 0x6e, 0xc2, + 0x64, 0xa4, 0x35, 0x1a, 0x16, 0xac, 0x68, 0x43, 0xcd, 0x34, 0x5b, 0x12, + 0x80, 0x9a, 0x9f, 0xee, 0x67, 0xfa, 0x73, 0x2a, 0xc7, 0xac, 0xb1, 0x9d, + 0xd5, 0x42, 0xcc, 0xce, 0xaf, 0x57, 0xab, 0xa2, 0x1c, 0xaa, 0x06, 0x14, + 0xb1, 0xea, 0x9b, 0x88, 0x86, 0xb9, 0xa3, 0x9b, 0x97, 0x71, 0xd0, 0xe4, + 0x30, 0xde, 0x45, 0x46, 0x79, 0xa9, 0x55, 0xa9, 0xbb, 0x44, 0x9d, 0xc7, + 0x7b, 0x64, 0x62, 0x3d, 0x12, 0x2d, 0x79, 0x86, 0x79, 0x4e, 0xdb, 0x05, + 0x3c, 0xae, 0x82, 0xb9, 0x52, 0x2e, 0xd1, 0x52, 0x1c, 0x48, 0x4d, 0x51, + 0x91, 0x55, 0x96, 0x6c, 0x3c, 0xd0, 0x88, 0x8a, 0xbb, 0x3b, 0x7c, 0x8d, + 0x76, 0xa7, 0x76, 0x7d, 0xa2, 0xd1, 0xcc, 0xda, 0x9d, 0x2e, 0x84, 0x21, + 0x2c, 0x98, 0x7f, 0x53, 0xf2, 0x39, 0xec, 0xd0, 0xce, 0xc6, 0xce, 0xb0, + 0xdc, 0xca, 0xce, 0x74, 0xab, 0xa0, 0xc6, 0x43, 0x5f, 0xae, 0x95, 0x32, + 0x35, 0x23, 0x18, 0xd5, 0x29, 0xd8, 0x50, 0x93, 0x8b, 0x42, 0xa5, 0x50, + 0x7d, 0x9d, 0x48, 0x7c, 0x75, 0x86, 0x23, 0x49, 0x64, 0x40, 0x45, 0x98, + 0xb0, 0xa1, 0x87, 0x50, 0x39, 0x8e, 0xe0, 0x7e, 0x18, 0xcb, 0x95, 0x26, + 0x80, 0x18, 0x49, 0xdf, 0xa9, 0x26, 0xe4, 0x8c, 0x74, 0x73, 0x01, 0x20, + 0x1c, 0x75, 0x04, 0x72, 0xc9, 0x1b, 0x01, 0x68, 0xbc, 0x23, 0x87, 0x02, + 0xe5, 0x91, 0xa3, 0x83, 0x2d, 0xab, 0x9e, 0xbd, 0x64, 0xf7, 0xd6, 0xfd, + 0xcd, 0x72, 0x27, 0xf2, 0xe6, 0x67, 0xb4, 0x6f, 0xcb, 0x43, 0xf5, 0xad, + 0xf0, 0xb3, 0x10, 0x0d, 0x2b, 0xc2, 0x2e, 0xc4, 0x32, 0x73, 0x07, 0x5d, + 0xeb, 0x14, 0x2a, 0x33, 0xa1, 0xd2, 0x49, 0xec, 0x0a, 0x06, 0x36, 0x62, + 0x70, 0x03, 0x5c, 0x47, 0x2b, 0x18, 0x3f, 0x96, 0xe1, 0xa2, 0x7d, 0x4d, + 0x2c, 0x95, 0x37, 0xff, 0xff, 0xfd, 0xbf, 0xff, 0x5f, 0xff, 0xbb, 0x6e, + 0xd8, 0x17, 0xcd, 0x01, 0xf2, 0x3e, 0x10, 0x7e, 0x5d, 0x02, 0x90, 0x1e, + 0x54, 0xe2, 0xc0, 0x09, 0x42, 0x5f, 0x9d, 0xe5, 0xea, 0x61, 0xb1, 0x41, + 0xf5, 0x40, 0xa3, 0x41, 0xa7, 0x21, 0x9e, 0xc5, 0xe5, 0x2f, 0xd3, 0x4e, + 0x82, 0xa1, 0xb6, 0x33, 0x1a, 0x4b, 0x9d, 0x08, 0xb4, 0x69, 0xf8, 0x87, + 0x99, 0x89, 0xe4, 0x42, 0xd0, 0xaf, 0x90, 0x63, 0x8c, 0xe4, 0x4b, 0xa3, + 0x0c, 0x86, 0x46, 0x52, 0xa4, 0xdf, 0x40, 0x13, 0x23, 0xc0, 0x94, 0xab, + 0x94, 0x69, 0x52, 0xda, 0x71, 0x34, 0x23, 0x4d, 0xd6, 0xe5, 0xe4, 0x91, + 0xe4, 0x86, 0x9e, 0x45, 0xc4, 0xef, 0x21, 0x07, 0xea, 0xbd, 0x49, 0x0d, + 0x8c, 0xbf, 0xa2, 0x0b, 0xd2, 0x2d, 0x48, 0xd9, 0x19, 0x36, 0x2c, 0xc8, + 0xc6, 0x33, 0x70, 0xe6, 0x66, 0x73, 0x4e, 0x38, 0xe9, 0x5d, 0x01, 0xf3, + 0xf7, 0x4b, 0x64, 0xf6, 0xab, 0x4d, 0xa7, 0x12, 0x65, 0x5c, 0x82, 0x65, + 0x9a, 0x23, 0x31, 0xfe, 0x9e, 0x54, 0x28, 0x5d, 0x65, 0xfb, 0xe4, 0x20, + 0xb1, 0xc1, 0x6a, 0x32, 0xdf, 0x45, 0x4d, 0xb1, 0x34, 0x30, 0x3c, 0x7b, + 0x47, 0x36, 0x05, 0x43, 0x6a, 0x51, 0x4f, 0xb5, 0x53, 0x63, 0xc3, 0x9c, + 0xd2, 0x67, 0x43, 0x9e, 0xaf, 0xb5, 0x42, 0x48, 0x3d, 0xab, 0xb6, 0xf8, + 0x6f, 0x98, 0x0f, 0xd5, 0x52, 0x25, 0x81, 0xb2, 0x11, 0xf6, 0x73, 0xbf, + 0x88, 0xbb, 0x5c, 0x39, 0x1b, 0x11, 0xd4, 0xaa, 0x4a, 0xc1, 0x89, 0x16, + 0xed, 0xae, 0x0c, 0x8e, 0x4d, 0x6b, 0xa8, 0xd3, 0xaa, 0xa8, 0xc6, 0xc6, + 0xf9, 0xb9, 0x81, 0x62, 0x3b, 0x5c, 0xd4, 0x63, 0x8b, 0x15, 0x8a, 0x69, + 0x63, 0x35, 0xba, 0x8d, 0x79, 0x95, 0x8a, 0xab, 0xaf, 0x31, 0xab, 0x58, + 0xdb, 0x59, 0x20, 0x44, 0x4e, 0xa5, 0xd4, 0xd6, 0x48, 0xa7, 0x0d, 0x2c, + 0x21, 0x4b, 0x6a, 0x62, 0xfa, 0xb4, 0xa5, 0x2e, 0x06, 0x1a, 0x85, 0x4e, + 0x4e, 0x11, 0x64, 0x90, 0x78, 0x97, 0xd5, 0x54, 0x2a, 0x00, 0x26, 0x67, + 0x34, 0xda, 0x49, 0xc6, 0xe0, 0xfe, 0xba, 0x29, 0xa0, 0x2e, 0x17, 0x27, + 0xb8, 0xe7, 0xd1, 0x18, 0x24, 0x09, 0xea, 0x39, 0xbb, 0x2d, 0x74, 0xb7, + 0x94, 0xb5, 0x45, 0xbe, 0xb9, 0x98, 0x89, 0x59, 0x9e, 0x23, 0x9b, 0xbb, + 0xb9, 0xb6, 0xbb, 0x4c, 0xb7, 0xf5, 0xf8, 0xc5, 0x8a, 0x0a, 0x0d, 0x0f, + 0x08, 0x3a, 0xa3, 0x98, 0x92, 0x93, 0x6b, 0xfd, 0x43, 0xa5, 0x2d, 0x53, + 0x7c, 0xbc, 0xe5, 0x52, 0xb9, 0xc2, 0xb9, 0x18, 0xd7, 0xe1, 0x3b, 0x23, + 0x9a, 0xb4, 0xc3, 0x02, 0x24, 0x38, 0x2d, 0x59, 0x30, 0x65, 0x51, 0x69, + 0xb4, 0x19, 0x87, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xf9, 0xff, 0x7c, + 0x8b, 0x72, 0xc8, 0xb2, 0x6e, 0xdb, 0xe8, 0x34, 0xf7, 0xf5, 0x11, 0x48, + 0x78, 0xe1, 0x65, 0x95, 0x00, 0x18, 0x18, 0x7e, 0x8d, 0xa3, 0xc1, 0x88, + 0xdb, 0xa7, 0xd9, 0x15, 0x0b, 0x08, 0xe2, 0xa8, 0x13, 0x6b, 0x92, 0xa1, + 0x60, 0x0d, 0x2b, 0xe6, 0xfa, 0x22, 0x5c, 0x97, 0x6c, 0x64, 0x60, 0xa8, + 0x37, 0x98, 0x09, 0x50, 0xb4, 0x22, 0x88, 0x5a, 0x18, 0x40, 0x49, 0x81, + 0x90, 0x4d, 0x91, 0x84, 0xa0, 0xc9, 0x42, 0x1e, 0x0c, 0x93, 0x2e, 0x09, + 0xd4, 0x82, 0x34, 0x1e, 0x27, 0x8e, 0x62, 0xf0, 0x5d, 0x08, 0x29, 0xa2, + 0xbf, 0x94, 0xea, 0x85, 0x0f, 0xff, 0xfb, 0xd4, 0x60, 0x24, 0x80, 0x08, + 0x4b, 0x76, 0x3f, 0x43, 0x8f, 0x7b, 0x70, 0x74, 0xae, 0xa8, 0x4c, 0x30, + 0x25, 0x6e, 0x5f, 0x4d, 0xda, 0xff, 0x0e, 0x3d, 0xed, 0xc1, 0x80, 0x96, + 0xe2, 0xfc, 0x53, 0x19, 0x34, 0x2e, 0x68, 0x41, 0x2e, 0x32, 0x9b, 0x0a, + 0xc2, 0xdc, 0x40, 0xce, 0xb5, 0x6b, 0xa6, 0xb2, 0xbd, 0x99, 0x1c, 0xb4, + 0x5b, 0x97, 0x07, 0x12, 0xd1, 0xa4, 0xe2, 0x86, 0x1b, 0xc9, 0x15, 0xa3, + 0xf2, 0x43, 0x78, 0xe7, 0x3c, 0x94, 0x2a, 0xf4, 0xfd, 0x55, 0xaa, 0x9e, + 0x79, 0x97, 0x08, 0x4a, 0x64, 0xb4, 0x8c, 0x9e, 0x13, 0x72, 0x55, 0x53, + 0x0d, 0x0d, 0x76, 0x9f, 0x64, 0x4a, 0x24, 0x5c, 0xd9, 0x91, 0x10, 0x57, + 0x97, 0x6d, 0x6a, 0xd5, 0xa7, 0x19, 0xcf, 0xd5, 0x53, 0x5a, 0x26, 0x54, + 0x79, 0xac, 0x8d, 0x56, 0x25, 0xf4, 0x87, 0x3a, 0xd9, 0xd5, 0x34, 0x73, + 0xd9, 0xc1, 0x1c, 0x7e, 0xae, 0xc9, 0x93, 0xe8, 0xcc, 0x29, 0xe7, 0xef, + 0xe7, 0x5c, 0xba, 0xcb, 0x51, 0xf9, 0x13, 0x27, 0x4b, 0x14, 0x54, 0xe6, + 0x50, 0xf3, 0x01, 0x5e, 0xdb, 0x85, 0x3b, 0x32, 0xbd, 0x73, 0x01, 0x3e, + 0xb5, 0x01, 0xeb, 0xe8, 0xee, 0xa0, 0xb5, 0xcc, 0xa5, 0x88, 0xb7, 0x2c, + 0x06, 0xe6, 0x75, 0x4b, 0x5a, 0xfc, 0xea, 0xd7, 0xcc, 0xee, 0x4d, 0xa8, + 0x8e, 0x97, 0x42, 0xd4, 0xae, 0xd5, 0x10, 0x99, 0x15, 0x8d, 0xf6, 0x55, + 0xb6, 0x17, 0xd4, 0x1c, 0x27, 0xa6, 0x99, 0xf8, 0xa4, 0x69, 0x1b, 0x09, + 0x33, 0xac, 0x76, 0x98, 0x47, 0xf2, 0x10, 0x4b, 0x87, 0xf8, 0xbd, 0x55, + 0x8b, 0x01, 0x07, 0x3a, 0xd5, 0x80, 0x09, 0x25, 0x00, 0x20, 0x96, 0x64, + 0x99, 0xb7, 0xae, 0x64, 0x88, 0x74, 0x3b, 0x82, 0x40, 0xd5, 0x52, 0x41, + 0x48, 0x78, 0x22, 0x63, 0x90, 0xcb, 0x41, 0x21, 0x7f, 0x53, 0x4b, 0x60, + 0x14, 0x64, 0x68, 0xe3, 0x6d, 0xbc, 0x5c, 0xc4, 0x17, 0x47, 0x7c, 0xf5, + 0x57, 0x61, 0xcb, 0x5b, 0x47, 0x98, 0xf2, 0x9a, 0x2f, 0x67, 0xa5, 0xee, + 0xba, 0x3e, 0x3a, 0xe9, 0x7b, 0x99, 0x28, 0xac, 0xc9, 0x4d, 0x04, 0xcb, + 0x49, 0xdd, 0x9a, 0x8c, 0xb5, 0x32, 0x95, 0x4b, 0x44, 0x95, 0xa5, 0x76, + 0x3b, 0xd9, 0xdf, 0x6b, 0x53, 0x6e, 0x72, 0x3f, 0x66, 0xad, 0x92, 0xac, + 0x6b, 0x32, 0x1f, 0x3b, 0x15, 0x85, 0x8c, 0xe2, 0xa3, 0xa2, 0x22, 0x82, + 0x45, 0x74, 0x11, 0x33, 0x0b, 0x0d, 0x39, 0x86, 0x11, 0x80, 0x36, 0x80, + 0xa3, 0x15, 0x01, 0x61, 0x84, 0xdc, 0x78, 0x49, 0x00, 0x01, 0x79, 0x79, + 0xa9, 0xc7, 0x45, 0xff, 0x7b, 0x5f, 0x08, 0x72, 0xa3, 0x6e, 0xe8, 0xc9, + 0x69, 0xa4, 0xf0, 0x71, 0x8e, 0xf5, 0x44, 0xae, 0x3d, 0x09, 0xbb, 0x6a, + 0xcc, 0x86, 0x70, 0xe2, 0x3b, 0x4e, 0x13, 0xdd, 0x52, 0x76, 0x47, 0x53, + 0x4d, 0x7a, 0x24, 0xd1, 0xe5, 0xd1, 0x10, 0x58, 0xb0, 0xb9, 0x3b, 0x4b, + 0x79, 0x42, 0x5f, 0x9a, 0x8f, 0xc6, 0xb5, 0x69, 0xc6, 0x59, 0xb5, 0x29, + 0x54, 0x2f, 0x52, 0x65, 0xe9, 0x46, 0x9e, 0x46, 0x29, 0xd4, 0xca, 0x24, + 0x2d, 0xbd, 0x8d, 0x22, 0xe2, 0xb4, 0xb5, 0x45, 0x67, 0x6f, 0x84, 0x87, + 0xb2, 0x29, 0xa3, 0x3c, 0x55, 0xb8, 0x29, 0x0e, 0x66, 0x06, 0x45, 0x4b, + 0x9b, 0x92, 0xcc, 0x46, 0x05, 0x3b, 0x62, 0x18, 0xcb, 0x64, 0xd2, 0x47, + 0x2a, 0xf4, 0x4a, 0xf2, 0x71, 0x42, 0x86, 0x2b, 0xd8, 0x22, 0x31, 0x44, + 0x41, 0xd9, 0xb0, 0xdf, 0x9d, 0x56, 0xa4, 0x2e, 0x8d, 0xcf, 0x95, 0x6c, + 0xaf, 0x14, 0x4d, 0xaa, 0xf4, 0xe4, 0x18, 0x4d, 0xaf, 0x9c, 0x94, 0x0a, + 0xd4, 0x31, 0xaa, 0x77, 0x51, 0xa3, 0xc5, 0x8c, 0xca, 0xaf, 0x53, 0xa7, + 0xa2, 0xc1, 0x56, 0x27, 0x66, 0x60, 0x68, 0x66, 0x61, 0x96, 0x04, 0xaf, + 0xa2, 0xb8, 0xc1, 0xc5, 0xb3, 0x68, 0x51, 0xd4, 0xac, 0xf1, 0x66, 0x82, + 0xc3, 0x57, 0x04, 0xe3, 0x5a, 0xb9, 0xbe, 0x05, 0x59, 0xe2, 0xc7, 0x56, + 0x63, 0x50, 0xa4, 0x7e, 0xf5, 0xad, 0xa1, 0xe3, 0xc5, 0x36, 0x5f, 0x41, + 0xda, 0xb6, 0x22, 0xe1, 0x0f, 0x72, 0x54, 0x30, 0x30, 0x46, 0x86, 0xce, + 0x8e, 0x64, 0x33, 0x15, 0xa9, 0xa3, 0x7d, 0x91, 0x17, 0xb5, 0x45, 0xca, + 0x64, 0x39, 0x81, 0xc0, 0x5a, 0x03, 0x4c, 0x1d, 0xc9, 0xf6, 0x73, 0xea, + 0xe0, 0x00, 0xce, 0xf0, 0x88, 0xa9, 0x1c, 0x96, 0x24, 0x87, 0xa2, 0x28, + 0x40, 0x18, 0x07, 0xd2, 0x43, 0x0b, 0x08, 0x87, 0xee, 0xef, 0x34, 0x85, + 0x67, 0x6d, 0x9d, 0x67, 0xb9, 0xff, 0xc7, 0xf0, 0xdb, 0x9d, 0xaa, 0xf1, + 0xa2, 0x67, 0xb3, 0xc5, 0x63, 0x66, 0xce, 0x9a, 0x52, 0x78, 0x7a, 0x56, + 0xab, 0x38, 0xdc, 0x14, 0xd7, 0xff, 0x9b, 0xf7, 0x36, 0x56, 0xa0, 0x99, + 0x39, 0xb4, 0x14, 0x2a, 0xb4, 0x39, 0x01, 0x97, 0x37, 0x12, 0xc6, 0x34, + 0xd0, 0xba, 0xa8, 0x0a, 0x96, 0x04, 0x08, 0x13, 0x61, 0xd0, 0xf8, 0x55, + 0xdf, 0xff, 0x53, 0x3f, 0xea, 0x30, 0x60, 0x38, 0xb4, 0xb8, 0x5d, 0x61, + 0x05, 0x04, 0x00, 0x92, 0xc8, 0xca, 0x44, 0x60, 0x23, 0x04, 0x52, 0x4d, + 0xec, 0x5c, 0x2d, 0x8b, 0x84, 0x2c, 0x05, 0x7f, 0x5e, 0xd8, 0x79, 0xa2, + 0xb6, 0xce, 0x9b, 0xf4, 0xda, 0x13, 0x16, 0x72, 0xf2, 0xab, 0x40, 0x97, + 0xb2, 0xda, 0x4f, 0x9f, 0x17, 0x15, 0x92, 0x00, 0xf1, 0x5a, 0x7b, 0x23, + 0x4b, 0x56, 0x33, 0x74, 0xd4, 0x88, 0x68, 0x25, 0x4b, 0x95, 0x90, 0xe5, + 0x31, 0xba, 0x5f, 0x95, 0xe8, 0x48, 0x47, 0x9a, 0x83, 0xd9, 0xa4, 0xd2, + 0x72, 0x99, 0x68, 0xf8, 0x8a, 0xff, 0xfb, 0xd4, 0x60, 0x26, 0x04, 0x08, + 0x58, 0x76, 0xbf, 0x33, 0x8f, 0x7b, 0x70, 0x61, 0x4a, 0x48, 0xff, 0x1d, + 0x63, 0x5f, 0x21, 0x35, 0xd6, 0xfa, 0xae, 0xbd, 0xed, 0xc9, 0xa2, 0xba, + 0xa1, 0xb4, 0x64, 0x09, 0xb8, 0x98, 0x65, 0xd5, 0x5a, 0x92, 0x4b, 0x13, + 0x94, 0xf1, 0xde, 0x90, 0x6c, 0x24, 0xb6, 0x28, 0xd0, 0xb2, 0x5f, 0x0e, + 0x1a, 0x28, 0xe7, 0x38, 0x94, 0x26, 0x13, 0x4b, 0x7b, 0x81, 0x84, 0x73, + 0xd1, 0x90, 0xd8, 0x3f, 0x54, 0x07, 0xfb, 0x32, 0x7f, 0x4a, 0x56, 0xf2, + 0xc5, 0x05, 0x52, 0xa1, 0x6f, 0x62, 0x6b, 0x55, 0xab, 0xd2, 0x2a, 0x17, + 0x8a, 0xe2, 0xec, 0xdb, 0x09, 0xc6, 0x55, 0x52, 0x1e, 0xaf, 0x2f, 0x87, + 0x5b, 0x3a, 0x7d, 0x0a, 0x6d, 0x4a, 0x97, 0x72, 0xec, 0x32, 0xd2, 0x2f, + 0x1b, 0xd2, 0xb1, 0xd4, 0xf9, 0x7e, 0x75, 0x94, 0xc8, 0xd8, 0x27, 0x1c, + 0x03, 0xa5, 0xfb, 0x49, 0xfb, 0x01, 0x49, 0x0d, 0x91, 0x30, 0xb8, 0x5f, + 0x36, 0xa1, 0xa1, 0x8a, 0xd4, 0x21, 0x1a, 0x87, 0x34, 0x21, 0xcd, 0x5a, + 0x69, 0x3f, 0x13, 0x39, 0x62, 0x60, 0x74, 0xf5, 0xfa, 0x87, 0x2f, 0xb4, + 0xd4, 0xc3, 0x86, 0x6e, 0xb2, 0xf6, 0x03, 0x2a, 0xba, 0x03, 0x8c, 0x3d, + 0xab, 0xa0, 0xa9, 0xe3, 0xc3, 0x55, 0xb8, 0xbe, 0x7e, 0xab, 0x73, 0x88, + 0xa2, 0x50, 0xc6, 0x80, 0xc1, 0x5d, 0xb3, 0x35, 0xa1, 0x0c, 0xb6, 0x3c, + 0x67, 0x90, 0xd1, 0x4d, 0x9a, 0x47, 0x74, 0x16, 0x22, 0x16, 0x5d, 0x5d, + 0xa4, 0x0d, 0xe2, 0x02, 0x49, 0x1e, 0x13, 0x82, 0xc2, 0x3f, 0x09, 0x80, + 0xaf, 0x99, 0x6e, 0x14, 0x00, 0x19, 0x99, 0x78, 0xc7, 0x6b, 0x6d, 0xda, + 0xc8, 0xfd, 0x21, 0x70, 0x7a, 0x13, 0x86, 0xc0, 0x78, 0x8c, 0xf9, 0x3c, + 0x9d, 0xa6, 0x25, 0x07, 0x42, 0x4f, 0xa8, 0x96, 0xd3, 0x2e, 0x2d, 0xd0, + 0xf8, 0xf9, 0x87, 0x77, 0xbb, 0xda, 0xc7, 0xdf, 0x5d, 0xf9, 0xce, 0xe7, + 0xe4, 0x14, 0x89, 0x8d, 0xa4, 0x12, 0xe6, 0x81, 0x5d, 0x0d, 0x81, 0x54, + 0x1c, 0x5c, 0x3d, 0x94, 0xcb, 0x31, 0x8e, 0x94, 0x8d, 0x88, 0x68, 0x52, + 0x6a, 0xc6, 0xaa, 0xba, 0xe6, 0xf2, 0xf4, 0xb6, 0x3c, 0xab, 0xaf, 0x3e, + 0xa9, 0x58, 0x67, 0x4f, 0x6a, 0xf0, 0xad, 0xcd, 0x20, 0x97, 0xe4, 0x22, + 0xa2, 0xd7, 0xb0, 0xe9, 0x8a, 0x44, 0x20, 0x18, 0x8a, 0x29, 0x18, 0x4c, + 0x64, 0x9c, 0x1c, 0x04, 0x06, 0x02, 0xa0, 0xd0, 0x01, 0xcb, 0x58, 0xef, + 0xfc, 0x00, 0xe7, 0xcb, 0x28, 0xe0, 0x27, 0x74, 0x1c, 0x15, 0x2d, 0x8d, + 0xa8, 0xb2, 0xfc, 0x35, 0x4c, 0xc2, 0x78, 0xad, 0x47, 0x34, 0x3b, 0x41, + 0x99, 0xa4, 0x88, 0x97, 0x96, 0xf5, 0x60, 0xb7, 0x1e, 0xec, 0xcf, 0x56, + 0x19, 0xd9, 0x0c, 0xa2, 0x58, 0x29, 0x48, 0x62, 0x88, 0x63, 0x97, 0x31, + 0xf2, 0x85, 0xaf, 0x92, 0xf7, 0x47, 0x21, 0x7b, 0xa2, 0x25, 0x45, 0x01, + 0x3e, 0xa8, 0x37, 0xc9, 0x8e, 0x0f, 0x53, 0x25, 0x53, 0x39, 0xd4, 0xb0, + 0x74, 0xa8, 0xd3, 0xf0, 0x14, 0xe7, 0x8a, 0x90, 0xfc, 0x37, 0x56, 0xdc, + 0xd1, 0x0a, 0x74, 0xca, 0xd1, 0xfe, 0xe7, 0x92, 0xc0, 0xda, 0xc2, 0x9c, + 0x73, 0x45, 0x64, 0xd1, 0x3f, 0xe1, 0x2f, 0xaa, 0x56, 0x5c, 0xa6, 0x28, + 0x55, 0xe9, 0xb5, 0x13, 0x5a, 0x3a, 0x03, 0xc4, 0x12, 0x1a, 0xda, 0x90, + 0x6f, 0xa2, 0x28, 0xbd, 0x2b, 0x52, 0xc9, 0x27, 0x8e, 0xcb, 0xe2, 0xdc, + 0x09, 0xdc, 0x8d, 0xf5, 0x0b, 0x8b, 0xf5, 0xa3, 0xd9, 0x4c, 0xa9, 0x8e, + 0x4c, 0x5c, 0xd8, 0xce, 0xf3, 0xcd, 0x39, 0xb7, 0x13, 0x8d, 0xce, 0x3d, + 0xcf, 0xe6, 0x58, 0x7b, 0x5d, 0xa3, 0x55, 0xc6, 0x0a, 0xbd, 0x4c, 0xda, + 0xca, 0x7a, 0xe5, 0x6d, 0xca, 0x02, 0x69, 0xfb, 0x7a, 0xe2, 0x0a, 0x93, + 0x66, 0xf4, 0x44, 0x3d, 0xe2, 0x2a, 0x13, 0xe8, 0xec, 0xaa, 0xf5, 0x03, + 0x75, 0x97, 0x27, 0xb2, 0xe9, 0xad, 0xf2, 0x2d, 0x8a, 0x24, 0x4b, 0x2d, + 0x37, 0xa1, 0xd0, 0x13, 0xb0, 0x99, 0x52, 0xe8, 0xf1, 0xd4, 0xbc, 0xa9, + 0x55, 0x25, 0xda, 0x1c, 0x5e, 0xb9, 0x36, 0x46, 0x8a, 0xa0, 0x6d, 0xb9, + 0x73, 0x26, 0xc6, 0x4b, 0xc2, 0xe8, 0xbb, 0x20, 0x05, 0xcc, 0x47, 0x89, + 0x60, 0x4a, 0x56, 0x87, 0xa0, 0xe8, 0x8c, 0x00, 0x32, 0x32, 0x6a, 0xe5, + 0x36, 0xd2, 0x43, 0xff, 0xbf, 0x24, 0xd2, 0xc6, 0x18, 0x04, 0xba, 0x31, + 0xe7, 0xd9, 0x83, 0x02, 0x62, 0x6e, 0xd3, 0x89, 0x66, 0x30, 0x30, 0x04, + 0x85, 0xfe, 0x3b, 0xe2, 0xdf, 0x89, 0x98, 0x6e, 0x69, 0x6e, 0x5d, 0x6a, + 0xe6, 0x5d, 0xac, 0x47, 0x6f, 0x32, 0xd2, 0x85, 0x64, 0x67, 0x29, 0xde, + 0xf3, 0xe7, 0x4b, 0x91, 0xda, 0xfa, 0x7d, 0x1b, 0xf5, 0x74, 0x35, 0xac, + 0xa4, 0xe7, 0x7b, 0xd1, 0x1b, 0xaf, 0x52, 0xd9, 0xee, 0xd5, 0xea, 0xbf, + 0xfe, 0xdf, 0xf4, 0xeb, 0x47, 0xfb, 0xa4, 0xa5, 0xb2, 0xa3, 0xa2, 0x96, + 0x46, 0x0f, 0x04, 0x64, 0x62, 0x90, 0x28, 0x31, 0x47, 0x10, 0x11, 0x50, + 0xe1, 0x88, 0x0e, 0x95, 0x04, 0x85, 0x04, 0xe2, 0xc7, 0x30, 0xc1, 0x28, + 0xf4, 0xc2, 0x50, 0x80, 0x63, 0x2e, 0x48, 0xa9, 0x52, 0x9e, 0x45, 0xba, + 0xed, 0xe4, 0x12, 0xcb, 0x9d, 0x92, 0xac, 0xad, 0x51, 0x1c, 0x6c, 0x67, + 0x50, 0x40, 0x0a, 0x46, 0x32, 0xfa, 0x94, 0x5e, 0x71, 0x16, 0xc3, 0x25, + 0x38, 0x7e, 0x30, 0x17, 0x45, 0x59, 0x7a, 0x60, 0x61, 0x56, 0x25, 0x8b, + 0x12, 0x95, 0x84, 0x98, 0xa1, 0x4a, 0xf5, 0x42, 0x9d, 0x5c, 0x4d, 0x8f, + 0x65, 0x01, 0xd0, 0x8d, 0x45, 0xff, 0xfb, 0xd4, 0x60, 0x24, 0x84, 0x08, + 0x13, 0x76, 0xbf, 0x2b, 0x8f, 0x7b, 0x70, 0x6b, 0x0e, 0xa8, 0x6c, 0x2c, + 0x43, 0x6e, 0x61, 0xe5, 0xda, 0xf8, 0x2e, 0x3d, 0xed, 0xc1, 0xb9, 0xb9, + 0xa1, 0xf4, 0x54, 0x0d, 0xb9, 0x2e, 0x1e, 0x24, 0x8b, 0x7b, 0xe7, 0x4d, + 0xf0, 0x93, 0x67, 0x29, 0x90, 0xab, 0x4f, 0x45, 0x42, 0x90, 0xd8, 0x49, + 0x83, 0x31, 0x74, 0xda, 0xfd, 0x4a, 0xf5, 0x36, 0xc3, 0x05, 0x12, 0xe6, + 0xb6, 0xba, 0x55, 0x27, 0xd7, 0x6c, 0x6f, 0xd5, 0xf9, 0x57, 0x2e, 0xd3, + 0xca, 0x93, 0x91, 0xe2, 0xd3, 0x6c, 0x65, 0x0a, 0xb6, 0x57, 0xa8, 0xc4, + 0xa1, 0x6f, 0x57, 0xbf, 0x5f, 0x9d, 0xf4, 0x14, 0x35, 0x54, 0xae, 0x8a, + 0x9e, 0x8b, 0x15, 0x5a, 0xd6, 0xb5, 0x33, 0x52, 0x7d, 0x81, 0x4b, 0xb4, + 0xdb, 0x16, 0xd1, 0x90, 0xa2, 0x65, 0x72, 0xda, 0xfd, 0x20, 0xe5, 0x3a, + 0xb1, 0xfb, 0xe4, 0x93, 0x96, 0x18, 0x5b, 0x0e, 0x55, 0x0c, 0x57, 0x6b, + 0x3a, 0x72, 0x7b, 0x15, 0x61, 0x99, 0x5b, 0x3b, 0x32, 0x91, 0x75, 0x01, + 0xd3, 0x3a, 0xb6, 0x7d, 0x2e, 0x62, 0xb5, 0x36, 0x32, 0x40, 0x9f, 0x0b, + 0x0e, 0x28, 0x52, 0xd4, 0xae, 0x2f, 0x15, 0x8c, 0x11, 0xdb, 0xe0, 0xbf, + 0x7f, 0x15, 0xf3, 0x06, 0xe8, 0xa0, 0x99, 0x0b, 0x45, 0x29, 0x15, 0xfa, + 0x5b, 0x4c, 0xc2, 0x54, 0x21, 0x2b, 0x4d, 0xe8, 0xa5, 0x0d, 0x0f, 0xc3, + 0x18, 0x95, 0x21, 0xd4, 0x64, 0x3a, 0x4d, 0x23, 0xd4, 0x47, 0x4b, 0x71, + 0x12, 0x0c, 0xd3, 0xf8, 0x04, 0x80, 0x5f, 0x0e, 0xd3, 0x83, 0x40, 0x06, + 0xee, 0x10, 0x92, 0x9a, 0xfc, 0xf8, 0x6c, 0xeb, 0x99, 0x52, 0x04, 0x1a, + 0xc0, 0x90, 0x4a, 0x07, 0x57, 0x70, 0x42, 0x4c, 0xa9, 0x39, 0x4c, 0xac, + 0x4d, 0x36, 0xb0, 0x2f, 0x75, 0x79, 0xd5, 0x5e, 0xd4, 0xf6, 0xba, 0xda, + 0x4b, 0x4c, 0xe1, 0x70, 0xfd, 0xa1, 0xe8, 0x7f, 0x4f, 0xff, 0xf6, 0xfe, + 0xab, 0x60, 0xfd, 0x8e, 0x3b, 0x3c, 0xe1, 0x3e, 0x47, 0xff, 0x56, 0x13, + 0x11, 0x9a, 0x6d, 0xed, 0xab, 0xa1, 0x26, 0x20, 0xd6, 0x43, 0x22, 0x07, + 0x0e, 0xcc, 0x13, 0x91, 0x67, 0xcf, 0x32, 0xf3, 0xbf, 0xe5, 0xfe, 0x7f, + 0xf6, 0x9f, 0xb6, 0x72, 0x1d, 0x95, 0xd9, 0x73, 0x6a, 0x0f, 0x06, 0xd0, + 0xaa, 0xcc, 0xd9, 0x5f, 0xc4, 0x39, 0x59, 0x03, 0x14, 0x88, 0x93, 0xc4, + 0x3a, 0x01, 0x30, 0x44, 0x88, 0xe7, 0x04, 0x70, 0x20, 0x01, 0x23, 0xc3, + 0x03, 0xae, 0xd3, 0xa5, 0x12, 0x95, 0xb6, 0x15, 0xe7, 0x61, 0x96, 0x96, + 0x06, 0xa1, 0x20, 0x2d, 0x84, 0xdc, 0xb9, 0x93, 0x32, 0x34, 0x4a, 0x63, + 0x9e, 0xe2, 0xc4, 0x86, 0x1e, 0xcc, 0xad, 0x6a, 0xd4, 0x51, 0x06, 0x06, + 0xb9, 0x0c, 0x20, 0xa9, 0x75, 0x7a, 0xd4, 0x72, 0xf2, 0x89, 0x57, 0x92, + 0xf4, 0xf9, 0x80, 0xaf, 0x8a, 0x6d, 0x1c, 0xe6, 0x32, 0xc4, 0x47, 0x47, + 0x92, 0x90, 0xa9, 0x66, 0x3c, 0xd0, 0xf7, 0x15, 0x7b, 0xf3, 0x9c, 0xbe, + 0xab, 0x4f, 0xe6, 0x79, 0x1e, 0xa6, 0x15, 0x8b, 0x25, 0x81, 0x31, 0x1d, + 0x5e, 0x70, 0x1a, 0x26, 0x40, 0xbc, 0x38, 0x53, 0x08, 0xa8, 0x8a, 0x35, + 0x69, 0xa0, 0x72, 0x99, 0x2c, 0x84, 0xc9, 0x50, 0x73, 0x17, 0x94, 0xa1, + 0xd4, 0xab, 0x64, 0x3b, 0xa0, 0x9b, 0x06, 0xc4, 0x16, 0xe8, 0x69, 0x78, + 0xf0, 0x18, 0xee, 0xad, 0x7c, 0xd5, 0x09, 0x38, 0xae, 0x6c, 0x63, 0x51, + 0x9c, 0xc7, 0xdb, 0xe5, 0x39, 0x3e, 0x8e, 0xca, 0xcc, 0xda, 0x9c, 0x32, + 0xae, 0x7a, 0x28, 0x1f, 0xb1, 0x1f, 0x52, 0xca, 0xc4, 0x87, 0xa8, 0xcc, + 0xe3, 0x39, 0xb9, 0x88, 0xe6, 0x42, 0x4f, 0xd1, 0xeb, 0x58, 0x3a, 0x5e, + 0xc4, 0x61, 0x56, 0x3d, 0x40, 0x17, 0xf2, 0xe0, 0x73, 0xa9, 0xce, 0x03, + 0xfd, 0x8d, 0x59, 0x15, 0x41, 0x3b, 0xb7, 0xcf, 0x1c, 0x19, 0x50, 0xa9, + 0xbb, 0x94, 0x07, 0x16, 0x76, 0x03, 0xbd, 0xf2, 0xbd, 0x81, 0xf6, 0xa1, + 0xd9, 0xdf, 0x72, 0x79, 0x2a, 0xbe, 0x1b, 0x0b, 0x94, 0x44, 0x72, 0xb9, + 0x50, 0xc6, 0x4d, 0x8f, 0x56, 0x05, 0xaa, 0xa3, 0x50, 0xe4, 0x79, 0xfa, + 0x3a, 0x1d, 0xab, 0x8d, 0x04, 0x59, 0x4e, 0x7e, 0x0a, 0x49, 0x98, 0x49, + 0x4f, 0xc2, 0xc2, 0xdc, 0x1b, 0x89, 0x27, 0xa5, 0xc0, 0x1f, 0xa0, 0xa7, + 0x20, 0xc7, 0x4a, 0x17, 0x60, 0x03, 0x6f, 0x64, 0x11, 0x6d, 0xc7, 0x1c, + 0x1f, 0x87, 0xe0, 0xb1, 0xb8, 0x0a, 0x40, 0x52, 0x28, 0x90, 0x9f, 0xc7, + 0x14, 0xf7, 0x2b, 0x5c, 0xd7, 0x5c, 0x23, 0xda, 0x7e, 0x91, 0x4f, 0x11, + 0x75, 0xbc, 0x43, 0x4d, 0xba, 0xa0, 0x67, 0x84, 0x86, 0xa4, 0xa6, 0x26, + 0xc8, 0x9b, 0x67, 0xd7, 0x49, 0xdc, 0xad, 0x55, 0x19, 0xa1, 0x45, 0x0e, + 0x8e, 0x04, 0x69, 0x94, 0x74, 0x12, 0x08, 0xce, 0x71, 0x32, 0x9d, 0x4f, + 0x34, 0x89, 0xe5, 0x99, 0x28, 0xa8, 0x46, 0xce, 0xd5, 0x87, 0x54, 0x36, + 0x77, 0x6e, 0xe2, 0x0f, 0x23, 0xff, 0xff, 0x3f, 0xfc, 0xcb, 0x6f, 0xff, + 0xff, 0x3e, 0xfa, 0xec, 0x7f, 0xe7, 0xc2, 0xe3, 0xa2, 0x4e, 0x97, 0x08, + 0x46, 0x0b, 0x28, 0x21, 0x60, 0x86, 0x2a, 0x00, 0xe6, 0x55, 0x06, 0xa9, + 0x21, 0xa5, 0xf2, 0x23, 0xac, 0x31, 0x51, 0xf5, 0xa5, 0x02, 0xb6, 0xae, + 0xca, 0xe6, 0x57, 0xb4, 0xed, 0xc1, 0xf6, 0x57, 0x6e, 0xa0, 0x61, 0xa0, + 0x0c, 0xe4, 0x35, 0x4e, 0x70, 0xa1, 0x28, 0x4a, 0x3d, 0x2e, 0xd0, 0x71, + 0xa1, 0xa3, 0xc5, 0x0d, 0x4f, 0x9d, 0x6b, 0xb6, 0x03, 0x9d, 0xc1, 0xc2, + 0x76, 0x0b, 0x21, 0xaa, 0xb5, 0xff, 0xfb, 0xd4, 0x60, 0x1d, 0x00, 0x07, + 0xb8, 0x76, 0xc0, 0x4b, 0x6f, 0x7b, 0x70, 0x6f, 0xce, 0xa8, 0x4c, 0x24, + 0x65, 0x6e, 0x1f, 0xa9, 0xd8, 0xfc, 0xad, 0xbd, 0xed, 0xc1, 0xc5, 0x39, + 0x61, 0xf4, 0x93, 0x8d, 0xb9, 0xa4, 0x43, 0x12, 0xe9, 0xab, 0x4b, 0x67, + 0x3a, 0x35, 0xe2, 0x7e, 0xd1, 0x9a, 0x1c, 0xdb, 0x12, 0xe9, 0x74, 0x9a, + 0xf2, 0xe1, 0x18, 0xa2, 0x39, 0x1b, 0x18, 0x15, 0x78, 0x3a, 0x16, 0xdf, + 0x3b, 0x65, 0x42, 0x8f, 0x35, 0x61, 0xb8, 0xa1, 0x9d, 0x53, 0x1e, 0x1a, + 0x76, 0x8b, 0x4d, 0x0b, 0xa3, 0xe9, 0x65, 0x9d, 0x6c, 0xe8, 0x63, 0x52, + 0xa5, 0x88, 0x51, 0x9f, 0x67, 0x8d, 0x0f, 0xcd, 0xe5, 0x22, 0x2a, 0x3c, + 0x64, 0x31, 0x54, 0xd8, 0xfc, 0xe4, 0x66, 0x70, 0x5a, 0x55, 0xb5, 0xb9, + 0xab, 0x94, 0x89, 0xa5, 0xc6, 0x98, 0x58, 0xd5, 0x6a, 0x94, 0x42, 0x64, + 0xdd, 0x49, 0x3c, 0x9d, 0x9c, 0xfc, 0x88, 0xb2, 0x61, 0x9e, 0x6e, 0x73, + 0xb1, 0xba, 0x96, 0x59, 0xd9, 0x37, 0x19, 0xb9, 0x82, 0x32, 0x3e, 0x65, + 0x2a, 0x99, 0x4b, 0x55, 0x99, 0x20, 0xba, 0x5d, 0x31, 0x5d, 0x95, 0x8f, + 0x38, 0xdb, 0xc9, 0x5c, 0x1f, 0x5a, 0x3b, 0x3c, 0x27, 0x3d, 0x47, 0x9e, + 0xd1, 0x5e, 0xed, 0xb2, 0x33, 0xca, 0x47, 0xad, 0x71, 0x07, 0x31, 0xfc, + 0xd0, 0x75, 0x15, 0x3e, 0xa5, 0x8f, 0x24, 0x67, 0xea, 0xe8, 0x75, 0x5d, + 0xab, 0xda, 0x99, 0xcf, 0xd6, 0x23, 0xd1, 0xd1, 0xa7, 0x11, 0x3a, 0x87, + 0x28, 0xae, 0xab, 0x10, 0xd1, 0xd0, 0x31, 0x8f, 0x51, 0xaa, 0x80, 0x77, + 0x2c, 0x98, 0x00, 0x26, 0xd0, 0xa8, 0xa8, 0xd3, 0x27, 0xf7, 0x35, 0x16, + 0x64, 0x9c, 0x09, 0x22, 0x28, 0x56, 0x9d, 0xee, 0xae, 0xa1, 0x9c, 0x16, + 0x64, 0xab, 0x9b, 0xef, 0x72, 0x99, 0x99, 0x52, 0x3e, 0x9d, 0xff, 0xcf, + 0x5b, 0xf9, 0xce, 0x54, 0xf3, 0xa2, 0x0a, 0x13, 0x33, 0xd8, 0x7d, 0xdc, + 0xf2, 0xa6, 0x75, 0x69, 0xdf, 0xeb, 0xea, 0x77, 0x6a, 0x94, 0xfd, 0x4f, + 0x62, 0xb2, 0xa9, 0xdb, 0x7a, 0x8e, 0x28, 0x8b, 0xb9, 0x19, 0xaf, 0xd1, + 0x11, 0xd5, 0xd3, 0x57, 0xaa, 0x3e, 0xf3, 0xc9, 0xfa, 0xd6, 0xa6, 0x4a, + 0x7e, 0xee, 0x8f, 0x6a, 0x1d, 0xa7, 0xcc, 0xc2, 0x4e, 0x38, 0x48, 0x45, + 0xcc, 0x63, 0x2e, 0x30, 0x68, 0x29, 0x45, 0x85, 0x87, 0x1c, 0x90, 0xf9, + 0x95, 0xc3, 0x87, 0x50, 0xb3, 0x24, 0x04, 0x0d, 0x11, 0xa6, 0x72, 0x60, + 0x33, 0x47, 0xc2, 0x06, 0x4c, 0x1d, 0x04, 0x25, 0x93, 0x5c, 0x6c, 0x65, + 0xfb, 0xb4, 0xd7, 0xe5, 0x2e, 0xbc, 0x32, 0x52, 0x9c, 0x0e, 0x97, 0x27, + 0x24, 0x76, 0x17, 0xc8, 0x5b, 0x09, 0x8d, 0x10, 0xd2, 0x34, 0x9e, 0x88, + 0x79, 0x16, 0x9f, 0x3f, 0xdc, 0x91, 0xad, 0x8a, 0x24, 0x92, 0xb1, 0x6a, + 0x43, 0x48, 0x8e, 0x49, 0x14, 0x44, 0xd2, 0x54, 0x7a, 0xa9, 0x8d, 0x9c, + 0xfe, 0x65, 0x35, 0xca, 0x75, 0x63, 0x39, 0x20, 0x4e, 0xb7, 0x9f, 0x8a, + 0xf4, 0xf1, 0x1c, 0xc0, 0x38, 0x95, 0x8d, 0x4d, 0xcb, 0x82, 0x5a, 0xa8, + 0x4a, 0xaa, 0x50, 0x85, 0x62, 0xa1, 0x71, 0x3e, 0x19, 0x51, 0xac, 0x37, + 0x64, 0x7c, 0xc4, 0xc8, 0x99, 0x43, 0xf0, 0xd4, 0xb7, 0x18, 0xd2, 0x11, + 0x7d, 0x37, 0x23, 0x4b, 0x82, 0x5c, 0xff, 0x56, 0xa2, 0x54, 0x8e, 0x6a, + 0xf6, 0xc4, 0xc2, 0xe1, 0xc1, 0x48, 0x9e, 0x30, 0xcf, 0xd5, 0x3b, 0x9a, + 0x1a, 0xad, 0x71, 0x70, 0x8c, 0xde, 0xfd, 0x58, 0xe6, 0x9f, 0x5b, 0x70, + 0xcb, 0x0a, 0x75, 0x91, 0xc1, 0x53, 0xdc, 0xd3, 0xaa, 0xd7, 0x33, 0x5d, + 0x44, 0xde, 0x9e, 0xd4, 0x8e, 0x6c, 0x6d, 0xcb, 0xb6, 0xa8, 0xad, 0xb9, + 0xbb, 0xd8, 0xc9, 0x46, 0xb7, 0xce, 0xb7, 0x0e, 0x96, 0x65, 0x7b, 0x66, + 0x26, 0xb6, 0xe4, 0x1a, 0x82, 0xe7, 0xe4, 0x16, 0x4a, 0xab, 0xd4, 0x2d, + 0xeb, 0xd0, 0x55, 0xd0, 0x3b, 0x5c, 0x4d, 0x42, 0x60, 0xb3, 0xcc, 0xb3, + 0x37, 0xe6, 0xb0, 0x8c, 0xb4, 0xae, 0xd2, 0x69, 0xe3, 0xa2, 0x48, 0xf6, + 0x64, 0x39, 0xd5, 0x85, 0xe1, 0x3a, 0x30, 0x9c, 0x2f, 0x11, 0x0b, 0x38, + 0x18, 0x51, 0xc5, 0x11, 0xca, 0x5b, 0x06, 0x23, 0xd5, 0x4b, 0xa2, 0x54, + 0x17, 0x69, 0xb1, 0x5a, 0x94, 0x6a, 0x6b, 0x00, 0x39, 0x1e, 0xe8, 0xa4, + 0xd3, 0x71, 0xb3, 0xff, 0x62, 0x38, 0x72, 0x2d, 0x17, 0x01, 0x8d, 0x55, + 0x44, 0x88, 0x54, 0x70, 0x4e, 0x24, 0x04, 0xe7, 0xb5, 0x55, 0xef, 0x42, + 0xab, 0x33, 0x7f, 0x59, 0xa6, 0x22, 0x9e, 0x61, 0xfa, 0xf6, 0x3a, 0xac, + 0x9b, 0xee, 0xa6, 0x41, 0xe9, 0xcf, 0xdc, 0xeb, 0xbd, 0xf2, 0xbd, 0x7b, + 0x09, 0x8e, 0xb1, 0x1d, 0x76, 0x32, 0x20, 0xd2, 0xff, 0x99, 0x66, 0x8d, + 0xae, 0xab, 0x4a, 0x14, 0x28, 0xd9, 0x19, 0x8b, 0xe1, 0x1b, 0xab, 0xd6, + 0x2a, 0x10, 0x8c, 0x9c, 0xcc, 0xa7, 0x91, 0x3d, 0x2f, 0x9f, 0xfc, 0xcf, + 0x88, 0x5f, 0xf7, 0x6f, 0xf2, 0x29, 0xff, 0xf1, 0x7a, 0x64, 0x87, 0xc0, + 0xc4, 0x99, 0x1b, 0x48, 0xd5, 0xc7, 0x02, 0x23, 0xbc, 0x04, 0xb8, 0x99, + 0x2a, 0x00, 0x76, 0x40, 0x16, 0x55, 0x3b, 0x0e, 0x00, 0x47, 0x8e, 0xec, + 0x00, 0xb8, 0xef, 0xfa, 0x7b, 0x3b, 0x94, 0x69, 0x1c, 0xde, 0x2b, 0x6d, + 0x33, 0x77, 0xc8, 0xfb, 0x2f, 0xb0, 0xd0, 0x86, 0x05, 0x69, 0xca, 0xe4, + 0x7a, 0xb5, 0x8f, 0x04, 0xf9, 0xd4, 0x7f, 0x92, 0x23, 0xad, 0x5d, 0x3a, + 0x88, 0xd6, 0x37, 0x20, 0x2e, 0x91, 0x4c, 0x07, 0x98, 0xec, 0x56, 0x26, + 0x52, 0x32, 0xbf, 0x59, 0x9c, 0xff, 0xfb, 0xd4, 0x60, 0x20, 0x00, 0x07, + 0xe7, 0x76, 0x3f, 0xcb, 0x6f, 0x7b, 0x70, 0x6b, 0x0e, 0x78, 0x6c, 0x25, + 0x42, 0x6e, 0x21, 0xb1, 0xda, 0xf6, 0x0d, 0xbd, 0xed, 0xc1, 0xa8, 0xba, + 0xe1, 0x70, 0xc0, 0x8d, 0xb8, 0x89, 0x57, 0x1d, 0xa5, 0xe1, 0x0d, 0x6a, + 0x64, 0x48, 0xce, 0xd8, 0xae, 0x44, 0xb9, 0x8c, 0x6b, 0xa5, 0x53, 0xc7, + 0x0a, 0xbc, 0xc9, 0x84, 0xdc, 0xab, 0x3b, 0x8b, 0xdc, 0x03, 0x75, 0xfa, + 0x39, 0x9d, 0xb5, 0x14, 0x5f, 0xd1, 0xcc, 0xcb, 0x10, 0x55, 0x2b, 0x67, + 0x72, 0x63, 0x2d, 0x2d, 0x8e, 0x6a, 0x75, 0x97, 0x87, 0x82, 0x4d, 0x52, + 0xc0, 0xb4, 0xf9, 0x50, 0x73, 0x34, 0x37, 0xec, 0xb7, 0x4c, 0xc0, 0xba, + 0x51, 0x97, 0x34, 0xe9, 0xc8, 0xa7, 0x88, 0xd6, 0xac, 0x51, 0xa9, 0x9a, + 0x56, 0xaa, 0x4b, 0x9d, 0x2a, 0x1f, 0xb6, 0x30, 0x37, 0xe1, 0xfa, 0x45, + 0xba, 0x12, 0xfc, 0x75, 0x69, 0xd2, 0xe1, 0x99, 0x22, 0xb6, 0xb6, 0x33, + 0xc2, 0x6b, 0x39, 0xae, 0xb2, 0xaa, 0x60, 0x73, 0x54, 0xaa, 0xde, 0xbc, + 0x67, 0x55, 0x31, 0x41, 0x72, 0x6a, 0xd1, 0xfc, 0xef, 0xc4, 0x5d, 0xc5, + 0x7a, 0xc0, 0xd4, 0xe4, 0xf9, 0xff, 0x65, 0x7a, 0xa1, 0x66, 0x70, 0x66, + 0x9e, 0xce, 0xac, 0xac, 0x6e, 0x7b, 0x2b, 0x0c, 0x9b, 0x99, 0x8d, 0x76, + 0xda, 0xd4, 0xb7, 0x97, 0x47, 0x52, 0x97, 0x7d, 0x14, 0xc7, 0x2a, 0x7e, + 0x3a, 0xa9, 0xb9, 0xc6, 0x33, 0x89, 0xba, 0x88, 0x44, 0x27, 0x50, 0x67, + 0x2b, 0x8c, 0xaa, 0x01, 0x78, 0xa6, 0x49, 0x35, 0x05, 0xac, 0x10, 0x43, + 0x95, 0x2e, 0x02, 0x5a, 0x2c, 0x7a, 0x4b, 0xba, 0xcf, 0xef, 0x9d, 0x15, + 0x2e, 0xb8, 0x54, 0x49, 0xa7, 0xa3, 0x7a, 0x17, 0xa1, 0x78, 0x2c, 0xce, + 0x71, 0x14, 0x4c, 0x06, 0x84, 0x21, 0xef, 0x57, 0x6e, 0x72, 0xfe, 0xca, + 0xb6, 0x67, 0xb9, 0xcc, 0xf6, 0xb2, 0x1d, 0x73, 0x5f, 0xb7, 0x53, 0x51, + 0xbb, 0x0c, 0xac, 0xad, 0xa8, 0xd3, 0x23, 0x17, 0xdc, 0xbd, 0x99, 0x2c, + 0x4b, 0xfe, 0x8a, 0xc9, 0xa1, 0xae, 0x9a, 0xb4, 0x94, 0x22, 0x3d, 0x4e, + 0x47, 0x53, 0xf2, 0xb2, 0x2e, 0xc6, 0x31, 0x17, 0x57, 0x5e, 0x94, 0xff, + 0xfe, 0xef, 0xa7, 0x32, 0x2a, 0x32, 0xaa, 0x18, 0xcc, 0x72, 0xba, 0x4c, + 0x94, 0x52, 0x9c, 0xa5, 0x12, 0x88, 0xc4, 0x08, 0x70, 0xc0, 0x94, 0x11, + 0x57, 0x32, 0xdd, 0x02, 0xa4, 0xe7, 0x3e, 0x40, 0x94, 0xab, 0x88, 0x88, + 0x20, 0x44, 0x00, 0xc8, 0x1d, 0xb8, 0xd6, 0x71, 0x56, 0x91, 0x3a, 0x66, + 0xae, 0x0b, 0xba, 0x74, 0xf3, 0x47, 0x92, 0x9c, 0x8f, 0x73, 0xac, 0x39, + 0x81, 0x54, 0x9e, 0x72, 0x65, 0x18, 0x27, 0x71, 0xc0, 0xbe, 0x84, 0x21, + 0x89, 0xf2, 0xa4, 0xff, 0x17, 0x85, 0xb5, 0x44, 0x85, 0x82, 0xac, 0xf7, + 0x27, 0x85, 0xb4, 0x6e, 0x8f, 0xa3, 0x91, 0x24, 0x51, 0x97, 0xe2, 0xfe, + 0x58, 0x63, 0x13, 0xcb, 0x1e, 0x68, 0x7b, 0x9b, 0x17, 0x51, 0x29, 0xd4, + 0x31, 0x10, 0x55, 0x5d, 0x9d, 0xab, 0x6a, 0xec, 0x96, 0xd2, 0x50, 0x8f, + 0x60, 0x4d, 0x2c, 0x2a, 0xcc, 0x39, 0x5b, 0xe1, 0x27, 0x5f, 0xb3, 0x13, + 0xe2, 0xe4, 0xb0, 0x85, 0xcc, 0x4e, 0xd9, 0x16, 0x98, 0x4f, 0x25, 0x11, + 0x6e, 0x85, 0x66, 0xc8, 0xf1, 0x0e, 0xe5, 0xc9, 0xa0, 0x9c, 0x57, 0x55, + 0x7d, 0x14, 0xc4, 0x88, 0x46, 0xaa, 0x8b, 0x94, 0x73, 0x9d, 0x58, 0xb9, + 0x64, 0xb2, 0x21, 0x7e, 0x32, 0x1a, 0xdd, 0x04, 0xfe, 0x56, 0xf8, 0x89, + 0xe3, 0xdc, 0xf2, 0x45, 0x12, 0xf2, 0xb5, 0x42, 0xe6, 0x89, 0x79, 0x19, + 0x26, 0xc6, 0xb8, 0x37, 0x1a, 0xe0, 0xaa, 0x19, 0x5f, 0xc4, 0x37, 0x92, + 0xa9, 0xf3, 0xb5, 0xcf, 0x66, 0x41, 0xd5, 0x11, 0x91, 0x31, 0x09, 0x89, + 0x83, 0x6e, 0x29, 0xf3, 0xf9, 0x31, 0x2c, 0xc8, 0x6a, 0x69, 0x0c, 0x54, + 0xb2, 0x59, 0x0b, 0x42, 0xde, 0x21, 0x91, 0x1c, 0x18, 0xd0, 0x84, 0xfa, + 0xf1, 0xd7, 0x0a, 0x2b, 0xc3, 0x11, 0xea, 0x91, 0x75, 0x63, 0xe0, 0x83, + 0x9e, 0x47, 0xe1, 0xd6, 0xc4, 0xfd, 0x4a, 0xbc, 0x7c, 0xb2, 0x96, 0xd4, + 0xda, 0x39, 0x1e, 0x5d, 0x03, 0x54, 0x3c, 0x92, 0x8b, 0x06, 0x99, 0x50, + 0x86, 0x12, 0x42, 0x58, 0x1a, 0x47, 0xea, 0xec, 0x1b, 0x47, 0xe0, 0x1b, + 0x41, 0x7a, 0x4e, 0x94, 0x2a, 0x67, 0x60, 0x25, 0x6d, 0x2d, 0x2a, 0x3f, + 0xf8, 0x99, 0x9d, 0x32, 0xe6, 0x19, 0x03, 0x06, 0x66, 0x61, 0x49, 0x66, + 0xae, 0x05, 0x42, 0x80, 0x8d, 0x8a, 0x6e, 0x38, 0x48, 0x5f, 0xdd, 0x91, + 0x9f, 0xe2, 0x38, 0x87, 0x11, 0x0d, 0x12, 0xa1, 0x2a, 0x92, 0xe7, 0x91, + 0xe4, 0x8f, 0xd3, 0x2a, 0xcc, 0x61, 0x4f, 0x32, 0x78, 0x5f, 0xe4, 0x77, + 0x38, 0xcb, 0x5e, 0xf1, 0xcf, 0x8d, 0x36, 0x29, 0xf9, 0x69, 0xcb, 0x78, + 0xb9, 0x11, 0x7f, 0xa7, 0xfe, 0x65, 0x12, 0x35, 0x84, 0x67, 0x9a, 0xdf, + 0xbf, 0xff, 0xff, 0xff, 0x9f, 0xfc, 0xb9, 0x96, 0xbb, 0x7f, 0xdf, 0x05, + 0x47, 0x1e, 0x58, 0xfa, 0x03, 0xaf, 0x10, 0xd1, 0x02, 0x90, 0xa5, 0xa2, + 0xa0, 0xd5, 0x14, 0x30, 0x9a, 0x03, 0x00, 0x05, 0x2c, 0x04, 0x22, 0xa4, + 0xd9, 0x01, 0x50, 0x08, 0x04, 0x70, 0x54, 0xc5, 0xae, 0xb4, 0xf5, 0x37, + 0x8d, 0x35, 0x27, 0x36, 0x1e, 0x51, 0x1b, 0x2f, 0x50, 0xd3, 0xa0, 0xbb, + 0x1e, 0xe7, 0x61, 0x35, 0x76, 0x5c, 0xd8, 0xcd, 0xd6, 0x62, 0x12, 0xc6, + 0xf1, 0xcc, 0xca, 0x37, 0x0b, 0xb0, 0xdf, 0x1d, 0xae, 0xce, 0xa6, 0x3e, + 0x7c, 0x12, 0xac, 0x93, 0x76, 0xff, 0xfb, 0xd4, 0x60, 0x1e, 0x02, 0x08, + 0x30, 0x76, 0xbe, 0x2b, 0x2f, 0x7b, 0x70, 0x65, 0xce, 0x58, 0x5c, 0x2c, + 0xa2, 0x6e, 0x5f, 0x15, 0xda, 0xfa, 0xa7, 0xbd, 0xed, 0xc1, 0xcb, 0xba, + 0x61, 0xbc, 0xc6, 0x89, 0xb9, 0x33, 0xd9, 0x4e, 0x98, 0x39, 0x0b, 0x60, + 0x85, 0xa3, 0x0a, 0xe7, 0x6a, 0x67, 0x6c, 0x8a, 0x84, 0xf2, 0x79, 0xcc, + 0xf5, 0x2f, 0x47, 0x4a, 0x25, 0x69, 0xcd, 0x81, 0x89, 0x5a, 0xf6, 0x9d, + 0x1c, 0xdc, 0xa1, 0x69, 0x2f, 0x8c, 0x29, 0x85, 0x0a, 0xbd, 0x50, 0xa0, + 0x39, 0xd4, 0x27, 0x72, 0x7d, 0xc8, 0x9d, 0x36, 0x29, 0x54, 0x13, 0x2e, + 0x5f, 0xab, 0x91, 0x76, 0x34, 0x11, 0x8d, 0xdc, 0xba, 0x1e, 0x69, 0xc7, + 0x24, 0xba, 0x81, 0x72, 0x9f, 0x45, 0x47, 0x53, 0x2e, 0x15, 0x67, 0x2a, + 0x12, 0xce, 0xba, 0x50, 0x1b, 0xdb, 0x3f, 0xdc, 0xe6, 0x9d, 0x8d, 0x3c, + 0xa7, 0x64, 0x71, 0x74, 0x64, 0x1f, 0x98, 0xe9, 0xf4, 0xaa, 0xa1, 0x34, + 0xe2, 0xa9, 0xa2, 0x55, 0xa1, 0x32, 0x75, 0x32, 0x54, 0xef, 0x54, 0xa9, + 0x93, 0x4c, 0x4f, 0xa3, 0xb4, 0x2f, 0x35, 0x46, 0x6d, 0x54, 0xbf, 0x4e, + 0x2b, 0x51, 0x2f, 0x9b, 0xd4, 0x30, 0x9a, 0x19, 0xd1, 0x2a, 0xa5, 0x84, + 0xaa, 0x92, 0x75, 0x13, 0x02, 0x05, 0xdb, 0x63, 0x12, 0xa5, 0xad, 0x65, + 0x59, 0x31, 0xf5, 0x87, 0xcc, 0x1b, 0x84, 0xb0, 0xe3, 0x19, 0x1d, 0x05, + 0x3f, 0x0a, 0x3b, 0x93, 0x54, 0x6e, 0xb2, 0x7f, 0x46, 0x30, 0x59, 0x13, + 0x47, 0x93, 0x3a, 0x20, 0xa5, 0x20, 0xc7, 0xf8, 0xb7, 0x8c, 0x55, 0x29, + 0x20, 0x20, 0x45, 0x20, 0x92, 0xb8, 0x92, 0xc3, 0xb4, 0x0c, 0x22, 0x7e, + 0x5e, 0xd4, 0x5b, 0x01, 0xcb, 0x0d, 0x44, 0xb3, 0xd5, 0xc7, 0xec, 0x1d, + 0x47, 0xe4, 0x30, 0x11, 0x8f, 0x22, 0x72, 0xdf, 0x00, 0x28, 0x44, 0x50, + 0x8a, 0xa8, 0xdd, 0x79, 0x59, 0x1d, 0x16, 0xcc, 0x7d, 0x74, 0x75, 0xea, + 0xe8, 0x94, 0xd5, 0x0e, 0xf2, 0xcd, 0xc8, 0x97, 0x32, 0x6c, 0xd6, 0x7d, + 0x3d, 0x50, 0x94, 0x4b, 0xdf, 0x1d, 0x7a, 0xad, 0x6e, 0x6a, 0x5c, 0x89, + 0x45, 0xa2, 0xce, 0x8a, 0xef, 0x3a, 0x33, 0xd4, 0x8a, 0xc7, 0x62, 0xee, + 0xfc, 0xd5, 0x6a, 0xea, 0xda, 0xfd, 0x7d, 0x7f, 0x6e, 0x44, 0x5d, 0x51, + 0x99, 0xe5, 0x22, 0xa9, 0x1e, 0x8e, 0x15, 0x41, 0x02, 0x52, 0xa9, 0x95, + 0xcc, 0xaf, 0x39, 0x9a, 0x87, 0x42, 0x89, 0x2c, 0x48, 0xc0, 0x43, 0x51, + 0x82, 0x4a, 0x2d, 0x28, 0xc1, 0xea, 0x14, 0xa3, 0xad, 0x5c, 0xf0, 0xe6, + 0x2e, 0x69, 0x14, 0x38, 0xf2, 0xb2, 0xa1, 0x42, 0xb2, 0x76, 0x21, 0xab, + 0x0b, 0x06, 0xea, 0xe0, 0x81, 0xbb, 0x2f, 0xa7, 0x58, 0xe7, 0x3d, 0x8b, + 0x99, 0x3d, 0x43, 0xcb, 0xca, 0x16, 0x5d, 0x56, 0x1d, 0x90, 0x93, 0x52, + 0x3b, 0x83, 0x62, 0x1e, 0x93, 0x43, 0xcb, 0xd1, 0xfe, 0xa8, 0x51, 0x9d, + 0x10, 0xcf, 0xc2, 0xf6, 0xa9, 0x49, 0x25, 0x12, 0xaf, 0x92, 0xea, 0xd5, + 0x85, 0x42, 0x41, 0xe2, 0x8e, 0x02, 0xad, 0x74, 0xd8, 0xa2, 0x56, 0x2e, + 0x60, 0xb1, 0x22, 0x55, 0x68, 0x4b, 0x20, 0xfb, 0x84, 0x95, 0x8a, 0xe4, + 0xa2, 0x4a, 0xc5, 0x80, 0x2c, 0x10, 0x5e, 0x2d, 0xad, 0xa2, 0x5c, 0xdc, + 0xd9, 0x15, 0xd0, 0x31, 0xa4, 0x25, 0xbd, 0x4c, 0xe2, 0x7e, 0x32, 0x22, + 0xd7, 0x73, 0xa1, 0xf9, 0xc4, 0x8e, 0x2a, 0xe7, 0x8a, 0xe7, 0xc7, 0x5b, + 0x65, 0xdd, 0x3a, 0x54, 0x1f, 0x8d, 0x0e, 0xd5, 0x0a, 0x7b, 0x4f, 0x67, + 0x18, 0xa7, 0x9a, 0xb6, 0x13, 0x93, 0x2b, 0x82, 0x18, 0x9d, 0x78, 0xdf, + 0x15, 0xf6, 0x0e, 0xf7, 0xf7, 0x88, 0xcb, 0x23, 0x8b, 0x44, 0x35, 0x88, + 0x59, 0x37, 0x18, 0xf2, 0x72, 0xbf, 0x54, 0xa9, 0xd5, 0xac, 0x4f, 0x21, + 0x49, 0x24, 0x06, 0xa5, 0x7b, 0x74, 0x74, 0xe3, 0x1c, 0xcf, 0x1e, 0x32, + 0xb2, 0xef, 0xb7, 0xb0, 0xe9, 0x69, 0xcd, 0x25, 0x19, 0x68, 0xe6, 0x7e, + 0xef, 0x71, 0x9a, 0x10, 0xf5, 0x2d, 0x68, 0xe5, 0x3b, 0x6b, 0x02, 0x85, + 0xf3, 0xa4, 0x35, 0x16, 0xaf, 0xaa, 0x56, 0x21, 0x2d, 0x3a, 0xc4, 0x99, + 0xa8, 0xbd, 0xa8, 0xc9, 0xa8, 0xb8, 0xd2, 0x20, 0xf1, 0x00, 0xa0, 0x74, + 0x23, 0x47, 0x71, 0xe3, 0x0a, 0x80, 0x4a, 0x68, 0xae, 0xf1, 0x02, 0x92, + 0x4e, 0x36, 0xc4, 0xcc, 0xb6, 0x3d, 0x95, 0x65, 0x81, 0xf9, 0x84, 0x71, + 0x01, 0xf2, 0x41, 0x90, 0xe2, 0x30, 0x1c, 0x61, 0xbc, 0x27, 0xa3, 0xe9, + 0xf2, 0x44, 0x73, 0x12, 0x3b, 0xaa, 0x82, 0xdd, 0x14, 0x96, 0xa6, 0x52, + 0xaa, 0xb6, 0xca, 0xaf, 0x7d, 0x4a, 0xbd, 0x75, 0x3a, 0x4a, 0x7d, 0x15, + 0xc8, 0xdd, 0x8c, 0x50, 0x6e, 0xa6, 0x3d, 0xac, 0x8e, 0x7d, 0x55, 0xd9, + 0xd1, 0x4a, 0x7d, 0x8e, 0xe5, 0xb2, 0xce, 0xd5, 0x77, 0xd3, 0x73, 0x56, + 0x44, 0x9e, 0xb9, 0x48, 0xaa, 0x8f, 0xe7, 0x42, 0xdd, 0x9d, 0xed, 0x92, + 0xc8, 0x6f, 0xff, 0xff, 0xfb, 0x7f, 0x79, 0x8a, 0xee, 0xf2, 0x15, 0x08, + 0xf5, 0x77, 0x33, 0xc1, 0x9d, 0x4c, 0x96, 0x48, 0x81, 0x9d, 0xd4, 0x76, + 0xea, 0x00, 0x22, 0x96, 0x53, 0x2d, 0x7c, 0xf3, 0x25, 0xd3, 0x6b, 0xa4, + 0xc1, 0x42, 0x19, 0xec, 0x61, 0xcd, 0xa4, 0x86, 0x29, 0x5e, 0x84, 0x3c, + 0xda, 0x50, 0xa1, 0xd1, 0x98, 0x4d, 0x7d, 0xa1, 0x69, 0xf6, 0x63, 0xe5, + 0x0f, 0x52, 0xa5, 0xcb, 0x9a, 0x8c, 0xb7, 0xae, 0x46, 0x03, 0x31, 0xd8, + 0x6e, 0xa1, 0x69, 0x38, 0x27, 0x3a, 0x5a, 0x39, 0x75, 0x44, 0x08, 0x62, + 0x78, 0xe0, 0x62, 0x43, 0x1c, 0xff, 0xfb, 0xd4, 0x60, 0x20, 0x00, 0x07, + 0xf1, 0x76, 0x3e, 0xab, 0x2f, 0x7b, 0x70, 0x6c, 0x4e, 0x58, 0x4c, 0x24, + 0xe3, 0x6e, 0x60, 0x99, 0xd6, 0xf8, 0xad, 0xbd, 0xed, 0xc9, 0xb2, 0x39, + 0xa1, 0xb4, 0xc1, 0x89, 0xb9, 0xc7, 0x89, 0xfa, 0x58, 0x4b, 0xf1, 0xfa, + 0xb2, 0x5c, 0x13, 0xca, 0x16, 0x13, 0x98, 0xc4, 0x4a, 0x1b, 0xaf, 0xd2, + 0x0e, 0x2a, 0xe5, 0x04, 0x6c, 0x38, 0xa7, 0x91, 0x2c, 0x2b, 0x09, 0xb4, + 0x38, 0x7a, 0x4b, 0xc2, 0x64, 0xe2, 0x2d, 0x87, 0x52, 0xe1, 0x3f, 0x45, + 0x52, 0x09, 0xf9, 0x9a, 0x88, 0x62, 0x44, 0x1b, 0xd6, 0xb2, 0x76, 0x47, + 0x8a, 0x73, 0xe5, 0x64, 0xd3, 0xca, 0xd2, 0x49, 0x0f, 0x74, 0x72, 0x59, + 0xe2, 0x45, 0x75, 0x19, 0xb8, 0xde, 0x72, 0x60, 0x5d, 0xb9, 0xd1, 0xdb, + 0x92, 0xb0, 0xad, 0xc2, 0x39, 0x0f, 0x42, 0x15, 0x99, 0x91, 0x52, 0xa0, + 0x8e, 0x6e, 0xb3, 0x4c, 0xc4, 0xe9, 0x4e, 0x96, 0x51, 0x5d, 0x25, 0x1d, + 0x48, 0x58, 0xba, 0xa1, 0xa5, 0x84, 0xe7, 0x34, 0x16, 0x62, 0xa3, 0x48, + 0xd5, 0xde, 0xa5, 0x70, 0xac, 0xee, 0x55, 0x6c, 0xa3, 0x6a, 0xc5, 0x5c, + 0x9e, 0xbb, 0x89, 0x2b, 0xba, 0x43, 0x67, 0xdb, 0x52, 0xfb, 0xd7, 0x2d, + 0xc8, 0xa1, 0x8e, 0xa7, 0xcc, 0x06, 0xd8, 0x0f, 0xda, 0x98, 0xa3, 0xb7, + 0xb2, 0xa9, 0x98, 0x1c, 0xea, 0x92, 0x3f, 0xd9, 0xaa, 0xfd, 0x99, 0x4f, + 0x29, 0xb8, 0x53, 0xb1, 0x9d, 0x89, 0x63, 0x25, 0x3a, 0xa5, 0x29, 0x43, + 0x56, 0xa0, 0x12, 0x31, 0x30, 0x40, 0x07, 0xe8, 0xa2, 0x57, 0x01, 0xbd, + 0x56, 0xde, 0x6b, 0x80, 0x93, 0x50, 0xe4, 0x95, 0x5a, 0xb3, 0xfb, 0x9c, + 0x8c, 0x9b, 0x27, 0x25, 0xb8, 0x44, 0x2a, 0x2e, 0x88, 0xb2, 0x28, 0xdc, + 0x4a, 0x06, 0x94, 0x69, 0x42, 0xcc, 0x63, 0x99, 0x6e, 0x72, 0x73, 0xe7, + 0x5a, 0xce, 0x8f, 0x66, 0x3f, 0xb7, 0xae, 0xe7, 0xf2, 0x97, 0x9a, 0x70, + 0xaf, 0x93, 0xf4, 0xd3, 0x32, 0x52, 0x2e, 0x64, 0xcf, 0x32, 0xb5, 0xa7, + 0x9d, 0x29, 0xff, 0xc8, 0x5d, 0xe6, 0xd3, 0xad, 0x9d, 0x9b, 0xc4, 0x8d, + 0x48, 0xbd, 0xc6, 0x54, 0x25, 0xb4, 0xdf, 0x59, 0x0f, 0x31, 0x1f, 0xff, + 0x9f, 0xe5, 0xce, 0x17, 0xf7, 0xa7, 0xa9, 0x9f, 0xaf, 0x2e, 0xda, 0xd2, + 0x6d, 0x01, 0x12, 0x05, 0xa4, 0xf8, 0xe3, 0x87, 0xbb, 0x94, 0x50, 0x51, + 0xcc, 0x38, 0x3e, 0x22, 0x40, 0x20, 0xca, 0x88, 0x2e, 0x5e, 0x46, 0x07, + 0x15, 0x61, 0xaf, 0x02, 0xd4, 0x72, 0xaa, 0x3b, 0xb4, 0xad, 0x5e, 0x2b, + 0x3e, 0x72, 0x9a, 0x09, 0x95, 0x22, 0x1a, 0x77, 0xae, 0x8b, 0x01, 0x08, + 0x37, 0x4c, 0xe4, 0xa9, 0x61, 0x51, 0x32, 0x1a, 0x36, 0x30, 0x0e, 0x83, + 0x78, 0xea, 0x38, 0x50, 0xa3, 0xcd, 0x2c, 0x5a, 0x13, 0xb7, 0x03, 0x98, + 0xa9, 0x2f, 0x24, 0xa1, 0xcd, 0xd2, 0xb1, 0xc6, 0x3a, 0x48, 0xe1, 0x5c, + 0xa6, 0xcb, 0xf3, 0x01, 0x86, 0xa9, 0x7c, 0xa6, 0x5e, 0x26, 0x8d, 0x88, + 0x49, 0xfe, 0xd4, 0xfd, 0x42, 0x74, 0x1d, 0x15, 0x42, 0xce, 0x83, 0xc2, + 0x29, 0x6e, 0x45, 0x28, 0xa9, 0x32, 0x0a, 0x0b, 0x61, 0xc8, 0x60, 0xeb, + 0x6a, 0xd6, 0xb1, 0x15, 0x73, 0xa4, 0x4e, 0x4b, 0xa4, 0x6f, 0x4a, 0xb0, + 0x28, 0x90, 0x94, 0xdb, 0xc4, 0x3d, 0x46, 0xed, 0x81, 0xe9, 0xfb, 0x05, + 0x48, 0xc2, 0xa6, 0x60, 0x3e, 0x28, 0xce, 0x75, 0x2b, 0x5f, 0x1f, 0x90, + 0x59, 0x10, 0xe7, 0xa5, 0xf1, 0xe3, 0x32, 0x1a, 0x94, 0x6e, 0x4e, 0x47, + 0x8c, 0xe2, 0xa6, 0x53, 0xe5, 0x58, 0xa8, 0x99, 0xd1, 0x9c, 0x6e, 0x21, + 0x6e, 0xa0, 0x30, 0xc7, 0x4f, 0x2b, 0x9c, 0xd6, 0x15, 0x09, 0x98, 0x6c, + 0xaa, 0xb6, 0x96, 0xa8, 0x47, 0x72, 0xac, 0xeb, 0x66, 0x5b, 0x45, 0xb6, + 0x24, 0x58, 0xd7, 0x29, 0xe6, 0x17, 0x07, 0x15, 0x44, 0x56, 0xf4, 0xea, + 0xa2, 0x12, 0xb2, 0x75, 0x22, 0xdc, 0x2d, 0x2b, 0x91, 0xb9, 0x4f, 0x4e, + 0xa7, 0x5c, 0xe0, 0xdd, 0x4a, 0xf7, 0x6a, 0x36, 0x44, 0x3c, 0xfe, 0x76, + 0xb4, 0x5e, 0x15, 0x2e, 0x27, 0xeb, 0x1a, 0x91, 0xbd, 0x1c, 0xec, 0x85, + 0xb6, 0x96, 0xf5, 0x11, 0x44, 0x37, 0x54, 0x60, 0xd9, 0x54, 0x12, 0x02, + 0x42, 0x23, 0x45, 0x88, 0xb8, 0x07, 0x11, 0x36, 0x70, 0x3f, 0x15, 0x14, + 0x81, 0x2e, 0xb1, 0x42, 0x92, 0x6e, 0xb7, 0x19, 0x99, 0x9a, 0xa6, 0xab, + 0xa3, 0x30, 0x24, 0x94, 0x88, 0x74, 0xf5, 0xd7, 0x97, 0x14, 0x02, 0xa2, + 0x65, 0x91, 0x59, 0xde, 0x7f, 0xe9, 0x37, 0x5e, 0xbb, 0xe7, 0x97, 0x24, + 0x55, 0x33, 0x73, 0xf4, 0x08, 0xc5, 0x28, 0xd2, 0x00, 0x98, 0xe4, 0x0a, + 0xf6, 0x53, 0xd9, 0xae, 0xee, 0x45, 0x47, 0x4a, 0x5d, 0x88, 0xee, 0x88, + 0x92, 0xe9, 0xee, 0xe8, 0x76, 0x14, 0x52, 0x39, 0x59, 0xd9, 0x29, 0x72, + 0xb2, 0xdd, 0x76, 0x67, 0xaa, 0x7d, 0x35, 0x74, 0x6b, 0xa5, 0x29, 0xeb, + 0xe9, 0xb2, 0x7f, 0x96, 0x87, 0x74, 0xf7, 0x46, 0xea, 0xcd, 0x35, 0x0a, + 0x45, 0x8b, 0x25, 0x07, 0x63, 0xb1, 0x88, 0x52, 0x38, 0x97, 0x12, 0x48, + 0xb5, 0x02, 0x19, 0x42, 0xfe, 0xdc, 0x40, 0x66, 0x39, 0xa3, 0x04, 0xb4, + 0xd5, 0x6b, 0x27, 0x86, 0x5a, 0xe2, 0xf5, 0x83, 0x9f, 0x46, 0x57, 0x13, + 0xa6, 0x78, 0xa8, 0x32, 0xd4, 0x2a, 0x64, 0xd2, 0x91, 0x4c, 0xc4, 0x8f, + 0x6c, 0x3e, 0xdc, 0xc7, 0xa8, 0xfc, 0x10, 0x83, 0xed, 0x2a, 0x38, 0x55, + 0x8a, 0x67, 0x26, 0x6b, 0xa1, 0x48, 0x52, 0x1e, 0xdc, 0xaf, 0x64, 0x26, + 0x50, 0xcb, 0x69, 0x8a, 0x89, 0xff, 0xfb, 0xd4, 0x60, 0x20, 0x00, 0x07, + 0xe6, 0x76, 0x3f, 0x43, 0x4f, 0x7b, 0x70, 0x67, 0x62, 0x18, 0x7f, 0x35, + 0x23, 0x38, 0x60, 0x99, 0xda, 0xfb, 0x2d, 0x3d, 0xed, 0xc1, 0x89, 0x36, + 0xe1, 0xb4, 0xc2, 0x89, 0xb9, 0x3c, 0xcd, 0xe2, 0xc4, 0x79, 0x1d, 0xc7, + 0x42, 0xb4, 0xfd, 0x42, 0xaa, 0xab, 0x51, 0xa6, 0xcd, 0xa3, 0xad, 0xf2, + 0x61, 0x14, 0xbe, 0x7f, 0x2e, 0x34, 0x91, 0x66, 0x54, 0x21, 0x46, 0xfb, + 0x13, 0x34, 0x75, 0x0c, 0x58, 0x11, 0x51, 0xd9, 0x5c, 0xba, 0x50, 0x3d, + 0x38, 0x51, 0xa7, 0x02, 0xb9, 0xd4, 0x22, 0xef, 0x23, 0x1e, 0x2c, 0xe7, + 0x0d, 0x89, 0x90, 0xc8, 0x47, 0x4c, 0x86, 0xde, 0x59, 0xd5, 0x6a, 0x93, + 0x1d, 0x51, 0x06, 0x65, 0x0b, 0x22, 0xb1, 0x88, 0xde, 0x65, 0x8a, 0x86, + 0xb5, 0x39, 0x23, 0xd9, 0x93, 0xa8, 0x86, 0xc2, 0xc7, 0x19, 0x77, 0x0c, + 0xd8, 0x95, 0x79, 0x51, 0xd4, 0x33, 0xb0, 0xbd, 0x4b, 0x32, 0xa8, 0x94, + 0x2b, 0xa5, 0xf5, 0x02, 0x39, 0xf2, 0x85, 0x46, 0x99, 0x50, 0xb0, 0x37, + 0xc0, 0x54, 0xaa, 0x5e, 0xbc, 0xab, 0x13, 0x72, 0xef, 0x52, 0x45, 0x60, + 0x43, 0x2d, 0x56, 0x38, 0x4e, 0x6f, 0x28, 0xdd, 0x1a, 0x35, 0x61, 0x2a, + 0xe1, 0x49, 0x49, 0x99, 0x9e, 0x6d, 0xb2, 0x22, 0x21, 0xed, 0x22, 0x45, + 0x57, 0x2b, 0xe8, 0x83, 0xa2, 0xbc, 0xf9, 0x63, 0x9a, 0x3a, 0xca, 0x57, + 0x07, 0x32, 0x24, 0xa3, 0xb3, 0x29, 0xe8, 0x85, 0x13, 0xa0, 0x6d, 0x27, + 0xd3, 0x04, 0x00, 0xea, 0x34, 0x45, 0x88, 0x08, 0xcc, 0x03, 0x1d, 0x18, + 0xd8, 0xfc, 0x00, 0x5d, 0x15, 0xde, 0x0c, 0xe3, 0x71, 0xc6, 0xe1, 0xec, + 0x68, 0x90, 0x2c, 0xc7, 0x7c, 0x09, 0xc3, 0x26, 0x5b, 0x06, 0x55, 0x6c, + 0x34, 0x2a, 0x1c, 0x25, 0x15, 0xf1, 0xf3, 0x17, 0x7b, 0x02, 0x9f, 0x50, + 0xa7, 0x34, 0x14, 0x9b, 0x0b, 0xcc, 0x44, 0x98, 0x62, 0x34, 0xd4, 0xc4, + 0x55, 0xbb, 0x2f, 0xab, 0xa5, 0xae, 0xb9, 0x29, 0x7a, 0x9b, 0x2b, 0x7d, + 0x7c, 0x21, 0x5f, 0xa8, 0x9f, 0xa7, 0xe7, 0x17, 0x35, 0x30, 0xfb, 0x5b, + 0x4c, 0x42, 0x06, 0x95, 0xb2, 0xde, 0x02, 0xfe, 0xea, 0x8a, 0xb6, 0x67, + 0xfd, 0xbf, 0xff, 0xff, 0xff, 0xdf, 0xef, 0xff, 0xdf, 0xe1, 0xca, 0xb3, + 0x84, 0xb4, 0x8c, 0x65, 0x92, 0x56, 0xed, 0x68, 0xad, 0x80, 0x08, 0xb2, + 0x04, 0xaa, 0x14, 0xaf, 0x11, 0x53, 0x19, 0xa2, 0x0c, 0xb4, 0x54, 0x31, + 0x15, 0xe7, 0x9c, 0x79, 0x2b, 0xde, 0xd5, 0xa6, 0x1b, 0xe8, 0x7d, 0x4e, + 0xc0, 0x2c, 0x08, 0xd2, 0xe8, 0x78, 0x9c, 0x43, 0xe9, 0x61, 0xa4, 0xa6, + 0x4e, 0x06, 0x71, 0x72, 0x62, 0x6f, 0x59, 0x44, 0x8a, 0x04, 0x42, 0xa8, + 0xc9, 0x9c, 0xa6, 0x54, 0x2b, 0xc8, 0x53, 0xa4, 0xdb, 0x7a, 0x90, 0xde, + 0x5c, 0x1a, 0x2a, 0x27, 0xa8, 0x33, 0x29, 0xa9, 0x1c, 0x51, 0xa5, 0x87, + 0x0a, 0x70, 0xdc, 0x75, 0x1c, 0xbc, 0xae, 0xc7, 0xa9, 0x30, 0xce, 0x87, + 0x92, 0xc1, 0xa0, 0xa2, 0x54, 0x24, 0x5c, 0x63, 0x16, 0xed, 0x2a, 0xd9, + 0xc7, 0x1a, 0x49, 0xc5, 0x95, 0x44, 0x75, 0xc0, 0x49, 0xaa, 0xd3, 0x65, + 0xed, 0x91, 0xc5, 0x6d, 0xce, 0x43, 0x98, 0xe2, 0xb2, 0xf9, 0xae, 0xae, + 0x5c, 0x41, 0x48, 0x32, 0xa3, 0x93, 0x89, 0xc4, 0x52, 0xda, 0x56, 0x1b, + 0x0b, 0x92, 0x17, 0xb6, 0x9a, 0xc2, 0x3d, 0x94, 0xa5, 0x92, 0xbe, 0x66, + 0x44, 0xc2, 0x60, 0xff, 0x72, 0x98, 0xbf, 0xc6, 0x66, 0x48, 0xce, 0xa4, + 0x63, 0xa3, 0x2a, 0xcb, 0xb5, 0x44, 0x75, 0xca, 0x31, 0x74, 0xc8, 0xe2, + 0xfc, 0xe7, 0x54, 0x2e, 0xe3, 0x40, 0xa2, 0xaa, 0xd5, 0x71, 0x62, 0xcd, + 0x14, 0xaa, 0x76, 0x97, 0x8b, 0xed, 0xc7, 0xf3, 0x03, 0x24, 0x69, 0x5c, + 0x91, 0xea, 0xc6, 0x29, 0x61, 0x45, 0x95, 0x85, 0xa5, 0xc6, 0x0a, 0xb3, + 0x0b, 0xb7, 0x9d, 0x92, 0xec, 0xa8, 0xe5, 0xcb, 0x8b, 0xfa, 0xc1, 0x47, + 0x4a, 0xf9, 0x3d, 0x01, 0x56, 0xde, 0xc0, 0x5b, 0x54, 0x48, 0x86, 0xca, + 0x39, 0xaa, 0x51, 0x85, 0xcc, 0xe2, 0xb1, 0x40, 0x94, 0x56, 0x97, 0x23, + 0x4c, 0xf5, 0x4f, 0x1b, 0x42, 0xce, 0x31, 0x0f, 0x30, 0xaf, 0x34, 0x8b, + 0x98, 0xf9, 0x3f, 0x19, 0x16, 0xb6, 0x02, 0xd2, 0xfc, 0x68, 0x01, 0xb7, + 0x23, 0x66, 0x66, 0x79, 0x17, 0x93, 0xc0, 0xc2, 0xed, 0x35, 0x4c, 0xb4, + 0x40, 0x3f, 0x0f, 0x0f, 0x33, 0xa4, 0x68, 0x44, 0xaa, 0xee, 0xdf, 0xe9, + 0xfe, 0xaf, 0xb3, 0xa2, 0x36, 0xe7, 0x73, 0xe4, 0xfb, 0x5b, 0x94, 0xef, + 0x71, 0x5a, 0x19, 0x0d, 0xb1, 0x66, 0x54, 0x56, 0x26, 0x52, 0x32, 0xaa, + 0x13, 0x64, 0x72, 0x5c, 0x8d, 0x64, 0x42, 0x3d, 0xef, 0x65, 0xba, 0x72, + 0x16, 0xdd, 0x15, 0xa9, 0x4b, 0x33, 0xb5, 0xfd, 0x15, 0x53, 0xbf, 0xfe, + 0x5e, 0xb4, 0x7b, 0x67, 0xfb, 0xd5, 0xaa, 0x8e, 0x5b, 0x2a, 0x91, 0xce, + 0xea, 0x19, 0xda, 0x38, 0xf9, 0x32, 0x7d, 0x74, 0x2a, 0x04, 0x25, 0xaf, + 0xf0, 0x21, 0x1c, 0xe9, 0x81, 0x91, 0xa5, 0x38, 0x16, 0xea, 0xc3, 0xbc, + 0x2e, 0xaa, 0xff, 0x68, 0xf6, 0xdb, 0x1b, 0x12, 0x25, 0xc5, 0xcc, 0xe9, + 0x47, 0xbd, 0x20, 0xa8, 0x79, 0xa5, 0x23, 0x1a, 0x8d, 0x9c, 0x93, 0xa4, + 0xdd, 0x18, 0xe4, 0x18, 0xad, 0x35, 0xd4, 0x42, 0x08, 0x48, 0x0c, 0x74, + 0x60, 0xaa, 0x47, 0x39, 0xa5, 0x0f, 0xd0, 0x9c, 0x8e, 0xc5, 0x82, 0x44, + 0x86, 0xa8, 0xc9, 0xc2, 0xa4, 0xf5, 0x56, 0xc0, 0x51, 0x3e, 0x55, 0xa7, + 0x50, 0x71, 0x54, 0x8a, 0x72, 0xff, 0xfb, 0xd4, 0x60, 0x28, 0x0b, 0x08, + 0x3b, 0x76, 0xbe, 0x0b, 0x6f, 0x7b, 0x70, 0x71, 0x8e, 0x78, 0x3c, 0x24, + 0x45, 0x6e, 0x60, 0xed, 0xda, 0xf8, 0xad, 0xbd, 0xed, 0xc1, 0x48, 0x06, + 0x64, 0x3c, 0x26, 0x24, 0x9c, 0xf1, 0x19, 0x1e, 0xb9, 0x4d, 0x99, 0x05, + 0xc0, 0xeb, 0x6d, 0x2f, 0xb0, 0xdf, 0x20, 0xd3, 0x8a, 0xa1, 0xd9, 0x55, + 0x1b, 0x79, 0x4c, 0xa7, 0x7e, 0x9d, 0x41, 0x1b, 0xab, 0x1a, 0x50, 0xa2, + 0x24, 0x58, 0x75, 0x09, 0x72, 0x87, 0x29, 0x1b, 0xa1, 0xbf, 0x5b, 0x53, + 0x1d, 0x2a, 0xc3, 0xc5, 0x8d, 0xb6, 0x0a, 0x60, 0xb7, 0x17, 0x15, 0xc2, + 0x1d, 0x09, 0x27, 0x36, 0x1b, 0xcd, 0x35, 0x39, 0x98, 0x78, 0xb7, 0x3c, + 0x7d, 0x10, 0xcf, 0x3b, 0x2a, 0x7b, 0x1e, 0x71, 0xcb, 0x8b, 0xc4, 0x8a, + 0x2d, 0x3e, 0x85, 0xb0, 0x22, 0x54, 0x6a, 0xf5, 0x45, 0xd3, 0x8b, 0x49, + 0xc5, 0xd6, 0xce, 0xb5, 0x22, 0xb6, 0x04, 0x4d, 0xb2, 0x3b, 0x43, 0xd0, + 0xf5, 0xd5, 0xd8, 0xac, 0x82, 0x85, 0x56, 0xba, 0xb2, 0x9d, 0x4a, 0xb4, + 0x4a, 0x79, 0x85, 0x74, 0x87, 0xb6, 0x61, 0xf5, 0x51, 0x0f, 0x8f, 0xc6, + 0x67, 0xeb, 0xa7, 0x34, 0xeb, 0xa5, 0xcb, 0xd4, 0xe3, 0x54, 0x35, 0x56, + 0x11, 0x05, 0xcd, 0x8d, 0xa2, 0x47, 0x27, 0x34, 0x42, 0x14, 0xdf, 0x53, + 0x74, 0x9d, 0x91, 0xa4, 0xa3, 0x42, 0x85, 0x84, 0x86, 0x9c, 0x8c, 0xc8, + 0x12, 0x67, 0x10, 0xed, 0x39, 0x89, 0x99, 0x2e, 0x5e, 0x03, 0x71, 0xfa, + 0x4d, 0x85, 0x8c, 0x45, 0x8d, 0xf5, 0x5a, 0x56, 0xe0, 0x17, 0x0d, 0x60, + 0x80, 0x2b, 0x58, 0xfe, 0x14, 0xf3, 0x00, 0x0d, 0x30, 0x38, 0xe2, 0x68, + 0xca, 0x28, 0x29, 0x0c, 0x1d, 0x66, 0xc8, 0x52, 0x55, 0xe4, 0x6b, 0x6e, + 0xf7, 0x5d, 0x37, 0x57, 0xf7, 0xf5, 0xbd, 0x4b, 0x51, 0x04, 0x7b, 0x1f, + 0x6b, 0x55, 0x9c, 0x8c, 0x83, 0x59, 0xdc, 0xc3, 0x07, 0x0d, 0x29, 0x05, + 0x99, 0x7b, 0x21, 0x10, 0xbb, 0x72, 0x50, 0xfb, 0xa1, 0xeb, 0x57, 0xf7, + 0xbb, 0x5a, 0xb5, 0x6b, 0x5e, 0x64, 0x65, 0x6c, 0x84, 0x7f, 0x9d, 0xe2, + 0xa6, 0x73, 0xaa, 0x5f, 0x90, 0xdd, 0x1b, 0x6d, 0x9b, 0x46, 0xe9, 0xa2, + 0x89, 0x44, 0x85, 0x55, 0x99, 0x5c, 0x48, 0x26, 0x2a, 0x28, 0x28, 0x78, + 0x7e, 0x18, 0x26, 0x26, 0x61, 0x03, 0x8a, 0x0a, 0x98, 0x4c, 0x38, 0x61, + 0xc7, 0x86, 0x4b, 0x30, 0xf8, 0x20, 0x10, 0xee, 0x80, 0x4b, 0xd0, 0xfa, + 0xc7, 0x5f, 0x85, 0x02, 0x7b, 0x66, 0x1b, 0xfa, 0x58, 0xf3, 0x12, 0x56, + 0x0e, 0x26, 0xb5, 0x49, 0x40, 0x86, 0x68, 0xb0, 0x96, 0xd3, 0xf9, 0x52, + 0x3f, 0x41, 0x34, 0x4b, 0x0b, 0xfa, 0xb1, 0xb8, 0x5d, 0xc2, 0x1c, 0x84, + 0xa5, 0x17, 0x6a, 0x57, 0x88, 0x49, 0xfb, 0x24, 0x52, 0x10, 0x7c, 0x23, + 0x09, 0x42, 0x76, 0x2b, 0x70, 0xc0, 0x59, 0x4e, 0x9c, 0xcd, 0x16, 0x57, + 0x29, 0xa1, 0x45, 0x2f, 0x2a, 0x33, 0xa9, 0x3e, 0x5d, 0x0b, 0xa9, 0xc4, + 0x7f, 0x30, 0x1c, 0xb0, 0x16, 0x13, 0x2f, 0xce, 0x03, 0x19, 0x74, 0x64, + 0x9a, 0x24, 0x90, 0x9b, 0x75, 0x31, 0xfc, 0x8e, 0x27, 0xed, 0x6c, 0xd1, + 0x93, 0x92, 0x13, 0xe5, 0x2a, 0x85, 0x6a, 0x4e, 0xac, 0xa3, 0x23, 0x34, + 0xd0, 0x58, 0x52, 0x08, 0x7a, 0xca, 0x48, 0x9b, 0x21, 0xad, 0x6d, 0xac, + 0x09, 0xe7, 0x24, 0xca, 0xa8, 0xeb, 0x67, 0x39, 0x98, 0x8f, 0xd8, 0xec, + 0x4c, 0x8c, 0x0a, 0xb7, 0x13, 0x84, 0xe7, 0x78, 0xe9, 0xc0, 0xfe, 0x57, + 0x17, 0xd5, 0x65, 0x1a, 0x20, 0x39, 0x1e, 0xaa, 0xa7, 0x06, 0x38, 0x6c, + 0x0e, 0x6c, 0x8a, 0x57, 0x8e, 0x2b, 0x07, 0xf9, 0x7f, 0x99, 0x41, 0x2b, + 0x8a, 0x27, 0xb9, 0xaa, 0xa2, 0x21, 0x28, 0xa4, 0xd3, 0x9a, 0xe1, 0x1f, + 0x85, 0x3c, 0x8f, 0xd4, 0x5b, 0x62, 0xc9, 0xd6, 0xb3, 0x67, 0x07, 0x8c, + 0x29, 0x54, 0xf6, 0xda, 0x9c, 0x5c, 0x57, 0xe6, 0x5c, 0x9c, 0x8c, 0x4d, + 0x2e, 0x6c, 0x8d, 0xc7, 0xfe, 0x5b, 0x15, 0xc5, 0xb8, 0xd4, 0x50, 0xaf, + 0x1a, 0x0c, 0x47, 0xca, 0x7d, 0x91, 0x4b, 0x55, 0x73, 0x59, 0x3d, 0x37, + 0xc7, 0x52, 0x85, 0x06, 0x7f, 0xa9, 0xce, 0x90, 0x1a, 0xd8, 0x81, 0xc0, + 0x3e, 0xc5, 0x20, 0x29, 0xcd, 0xd2, 0x1a, 0x06, 0x51, 0x3d, 0x2f, 0x48, + 0x56, 0x00, 0x16, 0x66, 0xb3, 0x36, 0xa1, 0xff, 0xee, 0xb6, 0xbf, 0x0c, + 0x19, 0x0d, 0xe8, 0xc3, 0xdc, 0x3c, 0x04, 0x4a, 0x43, 0x91, 0xa0, 0xb4, + 0x47, 0x00, 0x61, 0x24, 0x35, 0x66, 0xc6, 0x83, 0xe6, 0xb4, 0xb4, 0x5a, + 0x54, 0xb8, 0x74, 0xa3, 0x4d, 0x14, 0x17, 0x42, 0xae, 0x22, 0x1c, 0x30, + 0x75, 0x16, 0x8a, 0xa9, 0x24, 0xc1, 0xb7, 0x00, 0x29, 0x60, 0x6b, 0x3e, + 0x8a, 0x9c, 0xc3, 0xad, 0x17, 0x13, 0x89, 0x9c, 0x3c, 0xba, 0x4f, 0x8a, + 0x8a, 0x80, 0xe4, 0x81, 0xb5, 0xea, 0x17, 0x85, 0xff, 0x15, 0xfa, 0x6a, + 0x04, 0x60, 0x0a, 0xc9, 0x72, 0x03, 0x06, 0x4e, 0x3e, 0x01, 0xe1, 0x09, + 0x17, 0x18, 0x61, 0x6a, 0x9a, 0x91, 0xcc, 0xac, 0xcd, 0x2a, 0xbe, 0x2f, + 0xc9, 0x42, 0x1a, 0x63, 0x28, 0xd0, 0x86, 0x64, 0x35, 0xa8, 0x7a, 0x4d, + 0xe6, 0x84, 0x35, 0x38, 0x24, 0xab, 0xe8, 0x11, 0xf6, 0x97, 0x29, 0x19, + 0x59, 0x0b, 0xb2, 0xa8, 0xeb, 0x1e, 0x82, 0x21, 0x0c, 0x57, 0x25, 0x60, + 0x51, 0xcc, 0xb9, 0x11, 0xb8, 0x52, 0xc7, 0x51, 0x47, 0x37, 0x94, 0xaa, + 0x76, 0x43, 0x9f, 0x27, 0x80, 0xf5, 0xa3, 0x96, 0x51, 0x90, 0x1d, 0xc5, + 0x59, 0x31, 0x4f, 0x75, 0x63, 0xff, 0xfb, 0xd4, 0x60, 0x2c, 0x80, 0x08, + 0x2d, 0x76, 0x3e, 0xb3, 0x4f, 0x7b, 0x70, 0x59, 0x2a, 0x48, 0xdf, 0x24, + 0x63, 0x5f, 0x20, 0x89, 0xda, 0xf8, 0xad, 0x3d, 0xed, 0xc1, 0xba, 0x3a, + 0x21, 0x74, 0x91, 0x8d, 0xb8, 0x42, 0x1a, 0x8e, 0x4b, 0x23, 0x56, 0xd0, + 0x81, 0xd2, 0xc3, 0x83, 0xe5, 0xb1, 0x55, 0x23, 0x41, 0x71, 0x68, 0x3c, + 0xd4, 0x09, 0xf4, 0x82, 0x81, 0x22, 0xa9, 0x4a, 0x2e, 0xb0, 0x8f, 0x4b, + 0x2a, 0x22, 0x1e, 0xaa, 0xf3, 0xf5, 0x52, 0xaa, 0x49, 0xa8, 0xd0, 0x28, + 0x51, 0x96, 0xbe, 0x9e, 0x5e, 0x8d, 0x56, 0xc4, 0xb9, 0x01, 0x3f, 0x89, + 0xca, 0xc1, 0xcc, 0xbb, 0x43, 0x8b, 0xf1, 0xc2, 0x7a, 0x22, 0xc9, 0x62, + 0x65, 0x0c, 0x43, 0x09, 0x42, 0x99, 0x5b, 0x00, 0xea, 0x4d, 0x21, 0xb3, + 0x19, 0x88, 0xa4, 0x3d, 0x36, 0xc2, 0xce, 0x89, 0xdc, 0x3a, 0xa9, 0x14, + 0xef, 0x95, 0x96, 0x63, 0x5b, 0x78, 0xdb, 0x01, 0x12, 0xb0, 0xe9, 0xcd, + 0x9d, 0xc9, 0xc2, 0x03, 0x63, 0x8b, 0x22, 0xaa, 0xcd, 0x0a, 0xf5, 0x6b, + 0x3d, 0xa1, 0xb6, 0x7a, 0xcc, 0xf9, 0xaa, 0x2c, 0x58, 0x8d, 0x11, 0xa0, + 0xbf, 0x67, 0xd4, 0x15, 0x22, 0xe1, 0x38, 0xd8, 0x96, 0xc4, 0x24, 0x34, + 0xe2, 0x5d, 0x3a, 0x45, 0x54, 0xfc, 0x34, 0x1c, 0x0e, 0x83, 0xd1, 0xbd, + 0x42, 0x7e, 0x8e, 0xe6, 0x44, 0xa4, 0x04, 0xf1, 0x9c, 0x6c, 0x89, 0x28, + 0xc3, 0x28, 0x06, 0x5a, 0xd9, 0x2a, 0x27, 0x88, 0x43, 0x28, 0x03, 0xcb, + 0xcc, 0x32, 0xb3, 0x5b, 0x2c, 0xb2, 0x43, 0xff, 0xa4, 0xc4, 0xc0, 0xca, + 0x82, 0xae, 0x27, 0x90, 0x73, 0x1b, 0xa5, 0x5a, 0x02, 0x96, 0x11, 0x6d, + 0x9d, 0x65, 0xe3, 0xa9, 0xa4, 0x94, 0xbc, 0xb3, 0x23, 0xe6, 0x57, 0x63, + 0x2f, 0xbf, 0xbd, 0x2d, 0x38, 0x47, 0x3d, 0x5f, 0x35, 0xd3, 0x8b, 0x91, + 0x67, 0x09, 0xec, 0xcc, 0xdc, 0x12, 0x92, 0xad, 0xbb, 0x19, 0x12, 0x11, + 0xa9, 0x5c, 0xf5, 0xe5, 0x6c, 0xd2, 0x9a, 0x6a, 0x95, 0xd6, 0x6b, 0xa9, + 0xa7, 0x46, 0x74, 0xb7, 0x9d, 0x28, 0x98, 0x75, 0xff, 0xbb, 0xff, 0xd6, + 0x87, 0xff, 0xac, 0x01, 0x40, 0x12, 0xa6, 0xc2, 0x3b, 0xe0, 0x70, 0x9a, + 0xc4, 0x5b, 0x6e, 0x6b, 0x3a, 0x79, 0x55, 0x63, 0x25, 0x67, 0xfb, 0x82, + 0x5d, 0x32, 0x6e, 0x68, 0x9e, 0x28, 0xa6, 0x22, 0x5e, 0x5c, 0x4e, 0x62, + 0x40, 0xd4, 0xd0, 0x5d, 0x1c, 0xdf, 0xa7, 0x8b, 0xf2, 0x79, 0xf1, 0xdc, + 0xc4, 0xa0, 0x3f, 0xcd, 0x33, 0x99, 0x8c, 0xdb, 0x3e, 0x54, 0x13, 0x10, + 0xd2, 0x8d, 0x0a, 0x47, 0x8b, 0x79, 0x44, 0xa1, 0x79, 0x45, 0x59, 0x74, + 0x7e, 0xb8, 0x21, 0x4d, 0xe7, 0xfa, 0x16, 0xa9, 0x45, 0x43, 0x43, 0x8c, + 0xac, 0xa3, 0x1c, 0x1f, 0xa6, 0x61, 0x38, 0xab, 0x94, 0xb3, 0x56, 0x39, + 0xe3, 0x23, 0x52, 0xa0, 0xeb, 0x43, 0x50, 0x87, 0x6a, 0xc8, 0xed, 0x6f, + 0x91, 0xa8, 0xf4, 0x21, 0x99, 0xa4, 0xcb, 0xc9, 0x79, 0x8c, 0xe4, 0xc2, + 0xed, 0x2a, 0xa9, 0x8f, 0x46, 0xb7, 0x66, 0x3a, 0xb5, 0x5c, 0x99, 0x60, + 0x5b, 0x72, 0x50, 0x32, 0x2b, 0xe6, 0x5d, 0x18, 0x26, 0xfa, 0x7d, 0x52, + 0x4c, 0x95, 0xcd, 0x8e, 0x95, 0xa9, 0xe8, 0x53, 0x4e, 0xfa, 0x76, 0x07, + 0x49, 0xd3, 0x6c, 0xc1, 0x7a, 0xd6, 0xad, 0x3d, 0x5b, 0x97, 0xd0, 0xd3, + 0x99, 0xc4, 0x9e, 0x43, 0x4b, 0x21, 0x77, 0x80, 0xda, 0x8e, 0x43, 0xa2, + 0x4c, 0xec, 0xc8, 0x45, 0xa7, 0xd0, 0xd9, 0xd1, 0xeb, 0xa2, 0xdf, 0x57, + 0x06, 0xb8, 0x0d, 0x2c, 0xaa, 0xeb, 0x33, 0x46, 0xbb, 0x3b, 0x51, 0xd4, + 0x9f, 0xbb, 0x3c, 0x15, 0x25, 0x95, 0xef, 0x60, 0x3d, 0x84, 0xfc, 0xe9, + 0x80, 0xab, 0x70, 0x56, 0xe1, 0xbe, 0x06, 0x49, 0xea, 0x64, 0x9f, 0x26, + 0x55, 0x11, 0xd7, 0x53, 0xa8, 0x14, 0x07, 0x01, 0xf0, 0xe2, 0x83, 0x20, + 0xa8, 0x69, 0x19, 0x3a, 0x8c, 0x47, 0x49, 0x01, 0x0c, 0x2e, 0xe0, 0xbb, + 0x13, 0x12, 0xdc, 0x36, 0x0c, 0xa1, 0xe9, 0x3c, 0x94, 0xac, 0xda, 0x00, + 0xb4, 0xa2, 0x6e, 0x42, 0x13, 0x69, 0xa3, 0xfd, 0xd5, 0x24, 0x15, 0xd8, + 0x9b, 0xd9, 0xa0, 0x50, 0x88, 0xab, 0x4d, 0xd8, 0xd9, 0x60, 0x82, 0x08, + 0x2a, 0xa0, 0x47, 0xd6, 0x11, 0xe5, 0xff, 0xf4, 0xbe, 0xfc, 0x94, 0xef, + 0x4b, 0xd1, 0xf6, 0x17, 0x32, 0x34, 0x26, 0x74, 0x2a, 0xd4, 0x1c, 0x72, + 0x7b, 0x1d, 0x8a, 0xeb, 0xff, 0xe4, 0x51, 0x21, 0x65, 0xd3, 0xd2, 0x31, + 0x98, 0x99, 0x99, 0xca, 0xdb, 0x15, 0x5d, 0x06, 0xe1, 0x2f, 0x32, 0x91, + 0x0e, 0x4d, 0x37, 0x38, 0x45, 0x9a, 0xff, 0xc2, 0xbf, 0xff, 0xf3, 0xcf, + 0xfc, 0xb3, 0xa7, 0x0b, 0xab, 0xe4, 0xdc, 0x9f, 0x91, 0x91, 0x64, 0x69, + 0x68, 0xcf, 0x3a, 0x0f, 0xde, 0x0a, 0x26, 0x00, 0x02, 0x62, 0x0e, 0x29, + 0x58, 0x8a, 0x00, 0x3a, 0x91, 0x65, 0x69, 0x2b, 0x44, 0x46, 0x76, 0x01, + 0xf6, 0xd5, 0xdc, 0xa6, 0xeb, 0x06, 0x48, 0xdb, 0xe6, 0xbc, 0xe5, 0xc3, + 0xf2, 0xd8, 0x38, 0x43, 0x0f, 0x82, 0xc2, 0xa6, 0x39, 0x03, 0xad, 0x1e, + 0x6f, 0x17, 0xe5, 0x02, 0x12, 0xb1, 0xa5, 0x42, 0x12, 0xa9, 0x2e, 0xa7, + 0xe1, 0xc6, 0xac, 0x20, 0x27, 0x83, 0xf2, 0xd8, 0xaf, 0x3a, 0xd7, 0xcf, + 0x03, 0x98, 0xe2, 0x32, 0x8a, 0xb6, 0x32, 0x90, 0xa1, 0x95, 0x3a, 0x75, + 0xb0, 0xa8, 0xdb, 0x5f, 0xa3, 0x95, 0xa6, 0x22, 0x71, 0xd2, 0x85, 0x0b, + 0x42, 0xb2, 0xae, 0x52, 0x2c, 0x9a, 0x0e, 0x96, 0x5c, 0x62, 0xa1, 0x25, + 0xb2, 0xeb, 0xb4, 0xc4, 0x57, 0xff, 0xfb, 0xd4, 0x60, 0x31, 0x80, 0x07, + 0xcb, 0x75, 0xbf, 0xcb, 0x2f, 0x7b, 0x72, 0x6d, 0xae, 0x58, 0x3c, 0x30, + 0x45, 0x6e, 0x61, 0x9d, 0xda, 0xf6, 0x0d, 0xbd, 0xed, 0xc1, 0xd2, 0xba, + 0x61, 0x74, 0xc3, 0x89, 0xb9, 0x48, 0x97, 0xe7, 0xe2, 0x6d, 0x44, 0xb0, + 0xc4, 0xc3, 0x29, 0xc4, 0xb1, 0x1d, 0xe2, 0x30, 0xfe, 0x23, 0x0d, 0x17, + 0x62, 0xda, 0x2a, 0x1b, 0x0a, 0xe9, 0x14, 0x8d, 0x3a, 0x8e, 0x67, 0xec, + 0xcd, 0xef, 0x54, 0xc9, 0xf4, 0x5a, 0xb8, 0xe0, 0xd3, 0xe4, 0xec, 0x45, + 0x59, 0xfa, 0xc0, 0x7e, 0x1c, 0x0c, 0x24, 0xf5, 0x0f, 0x63, 0x72, 0x5e, + 0x35, 0x18, 0xd1, 0xa8, 0x42, 0x95, 0x22, 0xe6, 0xfd, 0x4c, 0xe9, 0x8e, + 0x14, 0x1a, 0xc8, 0xcc, 0xde, 0xf9, 0x65, 0x16, 0xe4, 0xbd, 0x02, 0x46, + 0x56, 0x45, 0xdc, 0x57, 0x27, 0x16, 0xd7, 0xcb, 0x8d, 0xdd, 0x75, 0x16, + 0x8e, 0x10, 0x97, 0x9c, 0x9c, 0xbe, 0x6f, 0x01, 0xd3, 0xf8, 0xed, 0xd4, + 0x81, 0x6b, 0x79, 0x1e, 0x53, 0x51, 0xe0, 0x66, 0x92, 0x2a, 0x23, 0xc0, + 0x5c, 0x44, 0x78, 0xd6, 0xe0, 0xd2, 0xee, 0x0f, 0x7e, 0xc9, 0x24, 0xce, + 0x70, 0x66, 0x62, 0x48, 0x2e, 0x5f, 0xb0, 0x25, 0x4e, 0x93, 0xd0, 0xf6, + 0x8e, 0x5c, 0x97, 0x49, 0xa2, 0x0e, 0x6c, 0x31, 0x97, 0x64, 0x6a, 0xc0, + 0x09, 0x6e, 0x00, 0x06, 0x49, 0xa4, 0x99, 0xd6, 0x5b, 0xc5, 0x04, 0x73, + 0x31, 0xe9, 0x51, 0x48, 0x58, 0x5e, 0x32, 0x25, 0xad, 0x6b, 0x37, 0x74, + 0xa9, 0xd1, 0x8a, 0x47, 0x0e, 0x33, 0x53, 0x52, 0x67, 0x6b, 0x29, 0x29, + 0x9e, 0xea, 0xb2, 0x31, 0x2c, 0x8b, 0x5e, 0xce, 0xb6, 0x7a, 0xea, 0x57, + 0xcd, 0xeb, 0x76, 0xb7, 0xa5, 0x90, 0x51, 0x6c, 0xab, 0x44, 0xcc, 0xaf, + 0x1c, 0xcc, 0x2c, 0x46, 0x54, 0x5a, 0xa1, 0x7a, 0x21, 0x3b, 0xbb, 0xba, + 0xf5, 0x52, 0xfd, 0x7b, 0xaa, 0x57, 0xdf, 0xdb, 0xea, 0xce, 0x89, 0x7a, + 0x91, 0x1c, 0xa8, 0x82, 0xa2, 0x03, 0x0c, 0xae, 0x71, 0x21, 0x21, 0xa5, + 0x28, 0x7c, 0x80, 0x65, 0x74, 0x88, 0x8e, 0xa0, 0x59, 0x47, 0x04, 0x05, + 0x15, 0xa6, 0x8a, 0x83, 0x49, 0x89, 0xda, 0x95, 0x5a, 0x1c, 0x63, 0xf1, + 0xf8, 0xdd, 0x45, 0x21, 0x0e, 0x3b, 0xaa, 0xe1, 0xf6, 0x52, 0x99, 0x87, + 0xf9, 0x73, 0x51, 0x1d, 0xea, 0x52, 0xc1, 0x32, 0x78, 0x9f, 0xa9, 0x12, + 0x65, 0x21, 0xbd, 0x31, 0x70, 0x32, 0x5c, 0x8b, 0x62, 0xbc, 0x7c, 0x89, + 0x21, 0x8a, 0x9d, 0x56, 0x0b, 0x1a, 0x38, 0x4e, 0x1a, 0x4c, 0x13, 0x39, + 0x98, 0xe9, 0x67, 0x6e, 0x49, 0x9e, 0x44, 0x3c, 0xbd, 0x3b, 0x1a, 0xc4, + 0xea, 0x52, 0x88, 0x84, 0x9f, 0xa4, 0x18, 0xc1, 0x25, 0x84, 0x19, 0x08, + 0x84, 0x84, 0xa2, 0xd4, 0x5b, 0x46, 0x9b, 0x8a, 0x54, 0x21, 0x56, 0xc8, + 0x70, 0x9b, 0x4a, 0x15, 0x3c, 0x65, 0x50, 0xb4, 0x1e, 0xe7, 0x49, 0x7f, + 0x58, 0x3a, 0x4d, 0x27, 0x48, 0x74, 0x63, 0x90, 0xd2, 0x72, 0x28, 0x95, + 0x59, 0x3a, 0x18, 0xcf, 0xd5, 0x85, 0x23, 0x21, 0xcc, 0xed, 0xd3, 0x0a, + 0xb5, 0x85, 0xa9, 0xb4, 0xe1, 0x2f, 0xb1, 0x95, 0x6f, 0x10, 0xd5, 0x46, + 0x97, 0x23, 0x31, 0x82, 0x02, 0x3d, 0x33, 0x97, 0xc7, 0x0a, 0x15, 0x10, + 0xe3, 0x76, 0x69, 0x21, 0x68, 0x6a, 0x84, 0xc0, 0x33, 0x99, 0xe5, 0x28, + 0x55, 0x91, 0x62, 0x90, 0x53, 0xb9, 0xe2, 0x10, 0x9e, 0x62, 0x7c, 0xcc, + 0xe4, 0xa2, 0x51, 0x9d, 0x58, 0xa2, 0x1c, 0x9e, 0xc9, 0x6a, 0xab, 0x43, + 0xda, 0x9c, 0xcb, 0xa3, 0x81, 0xd8, 0xa3, 0xed, 0xa8, 0x53, 0xe6, 0xda, + 0x99, 0x28, 0xf7, 0xc7, 0x9a, 0x78, 0xff, 0x83, 0x3a, 0x5e, 0x75, 0xa5, + 0x02, 0x65, 0x3a, 0x91, 0x6b, 0x80, 0xad, 0x53, 0xbe, 0x67, 0x64, 0x39, + 0x11, 0xeb, 0x9b, 0xb2, 0x17, 0xe3, 0xe0, 0x9d, 0x55, 0x23, 0x1d, 0x38, + 0x69, 0xba, 0x2e, 0x87, 0x83, 0x79, 0xda, 0x74, 0x33, 0x93, 0xe2, 0x3a, + 0x22, 0x94, 0x81, 0xa1, 0xc2, 0x26, 0x1d, 0x63, 0x9c, 0x4f, 0x80, 0xe4, + 0x39, 0x42, 0x14, 0x43, 0x56, 0xaa, 0x02, 0xaf, 0x69, 0x9a, 0x3c, 0x96, + 0x9b, 0x46, 0x66, 0x6c, 0x71, 0x11, 0x38, 0x3a, 0x30, 0xb8, 0x01, 0x04, + 0xa4, 0x93, 0x01, 0xc8, 0xb8, 0xd4, 0xc1, 0x30, 0xf9, 0x42, 0xb1, 0xd5, + 0x53, 0x5a, 0xd7, 0xad, 0x40, 0x28, 0x56, 0x2a, 0x07, 0x24, 0x02, 0x21, + 0x24, 0x7f, 0x4f, 0xbd, 0xa6, 0x58, 0xcf, 0xdd, 0x96, 0x8e, 0xd7, 0x7b, + 0xfd, 0x6c, 0x44, 0xd7, 0xa6, 0x8c, 0x79, 0x4e, 0xeb, 0x90, 0xd4, 0x22, + 0x39, 0xf2, 0x12, 0xf3, 0xa3, 0x16, 0x85, 0x7d, 0x94, 0xcc, 0x7d, 0x11, + 0xe5, 0xa3, 0x3d, 0xaa, 0xb4, 0x2d, 0x9e, 0x9b, 0x6a, 0x77, 0xd5, 0xbf, + 0xd9, 0xfd, 0xdb, 0xfa, 0xb3, 0xdd, 0x89, 0x99, 0x94, 0x40, 0x52, 0xb5, + 0x01, 0x8e, 0x2e, 0x67, 0x60, 0x68, 0x30, 0x31, 0xc2, 0x94, 0xa0, 0x03, + 0x8b, 0x20, 0xca, 0x0a, 0x03, 0x06, 0x70, 0xc0, 0x34, 0x7c, 0x6c, 0x59, + 0x6f, 0x43, 0x2a, 0x95, 0x35, 0x5e, 0xb4, 0xeb, 0x5d, 0x4e, 0xe4, 0x1c, + 0xcc, 0x5d, 0x62, 0x66, 0x7e, 0x2b, 0x5c, 0x98, 0x4b, 0x69, 0x73, 0x34, + 0x14, 0x81, 0x80, 0x80, 0x2e, 0x68, 0xb5, 0x61, 0x30, 0x36, 0x10, 0xea, + 0x0a, 0x15, 0x2b, 0x81, 0x7b, 0x5c, 0x0e, 0x54, 0xeb, 0xe4, 0x24, 0x80, + 0x97, 0x32, 0xee, 0x85, 0x23, 0x56, 0x93, 0x48, 0x71, 0xa4, 0xd8, 0x61, + 0xab, 0xcc, 0x83, 0x40, 0x48, 0x47, 0x02, 0xe4, 0xb9, 0x9f, 0xa5, 0xe9, + 0x20, 0xab, 0x8a, 0x41, 0xce, 0xff, 0xfb, 0xd4, 0x60, 0x2b, 0x00, 0x08, + 0x64, 0x76, 0xbe, 0x2b, 0x6f, 0xc3, 0x70, 0x5d, 0x29, 0xe8, 0xff, 0x2d, + 0x43, 0x5f, 0x22, 0x55, 0xda, 0xf9, 0x0d, 0x3f, 0x0d, 0xc1, 0xb8, 0xba, + 0x61, 0x30, 0xc2, 0x95, 0xb9, 0xf3, 0xda, 0xe0, 0xd3, 0xd5, 0x94, 0xb7, + 0xb0, 0x64, 0x8e, 0x09, 0x67, 0xf3, 0x53, 0xd7, 0xad, 0x5e, 0xd4, 0x14, + 0xf2, 0xcb, 0xac, 0xb9, 0x71, 0xc7, 0x66, 0x76, 0xe5, 0x2e, 0x72, 0xfa, + 0x09, 0x6a, 0xc9, 0xdc, 0xfc, 0x42, 0xc3, 0xad, 0x35, 0x35, 0x56, 0x51, + 0x36, 0xe9, 0xca, 0x63, 0x92, 0x88, 0xd6, 0xe1, 0xe8, 0x35, 0xf9, 0xb1, + 0x07, 0xc2, 0xae, 0x54, 0x89, 0xca, 0xe9, 0xbe, 0x5f, 0x3b, 0x56, 0x19, + 0x8e, 0xbe, 0xf4, 0x51, 0x8b, 0x14, 0x14, 0xb2, 0xa9, 0x65, 0xab, 0xf2, + 0x9d, 0x44, 0x70, 0x96, 0x52, 0x48, 0x2e, 0xbf, 0x73, 0xb0, 0xd6, 0x12, + 0x4a, 0x92, 0x86, 0xcf, 0x00, 0x5e, 0xed, 0x0c, 0x11, 0x6a, 0x42, 0xfc, + 0xc8, 0xa3, 0xb0, 0xef, 0x62, 0x3d, 0x94, 0x43, 0x34, 0x96, 0x69, 0xa9, + 0xe2, 0xf8, 0xee, 0x57, 0x7e, 0x6e, 0x8a, 0x4b, 0x3d, 0x07, 0x4d, 0xe7, + 0x07, 0xc7, 0xe2, 0xd1, 0xaa, 0xf4, 0x33, 0x11, 0x6a, 0x78, 0xad, 0x15, + 0xd7, 0x7a, 0x55, 0x46, 0xf3, 0x4f, 0x6e, 0x3f, 0x9d, 0x77, 0x05, 0xba, + 0x3c, 0xad, 0x29, 0xff, 0xa7, 0x6e, 0x0e, 0xbd, 0x2b, 0x91, 0x51, 0xaf, + 0xc7, 0xd2, 0xb9, 0xa5, 0xb8, 0x69, 0x7a, 0xae, 0x21, 0x29, 0x8c, 0x50, + 0xa1, 0xc0, 0x4a, 0x19, 0xcb, 0xfd, 0xca, 0x20, 0x08, 0x9b, 0xac, 0x67, + 0x78, 0xd7, 0x7d, 0xa5, 0xb3, 0xfc, 0xf8, 0x79, 0x1d, 0xc8, 0x87, 0x44, + 0x19, 0xd3, 0xa3, 0x50, 0x0b, 0x07, 0xd3, 0x4d, 0x44, 0x54, 0x3c, 0xd3, + 0xee, 0x40, 0xce, 0xc4, 0x73, 0xe6, 0xb7, 0x7d, 0xf5, 0xba, 0x7f, 0xcd, + 0xf8, 0x79, 0x50, 0x95, 0x5a, 0x68, 0x69, 0xd4, 0xcb, 0x4a, 0xef, 0x4c, + 0x84, 0x65, 0x69, 0xc2, 0x3c, 0xe9, 0xe4, 0x66, 0x5d, 0xba, 0xe5, 0xfd, + 0xd8, 0xf3, 0x4c, 0xe4, 0xcd, 0x61, 0x19, 0xa3, 0x69, 0x5f, 0xea, 0xe4, + 0xe2, 0xa2, 0x9d, 0xae, 0xa5, 0x50, 0x56, 0x12, 0x0e, 0xb4, 0xee, 0x8d, + 0xb6, 0x0c, 0x8b, 0x3c, 0xd8, 0x08, 0x24, 0x04, 0x45, 0x58, 0x30, 0x66, + 0x79, 0xad, 0x20, 0x5e, 0x36, 0xba, 0xae, 0x5d, 0x29, 0xc5, 0xf1, 0x04, + 0x3e, 0xec, 0xe5, 0xa1, 0xc3, 0x07, 0x0c, 0x22, 0x40, 0x38, 0x03, 0x54, + 0x69, 0x97, 0x73, 0xde, 0x21, 0x6f, 0x3b, 0xdf, 0x0b, 0x60, 0xcd, 0x5c, + 0xae, 0x51, 0x98, 0x1d, 0x03, 0x70, 0x2e, 0xd9, 0x11, 0x68, 0x60, 0x92, + 0x0a, 0x48, 0xfa, 0x13, 0xf0, 0x83, 0x0f, 0xe2, 0xc2, 0xe1, 0x65, 0x29, + 0x08, 0x84, 0x41, 0x9d, 0xb0, 0x1c, 0x2b, 0xc5, 0xc9, 0x38, 0x81, 0x78, + 0xbd, 0x39, 0xa7, 0x1e, 0x99, 0x72, 0xd1, 0x53, 0xd2, 0x39, 0xcf, 0x4c, + 0x19, 0x43, 0x08, 0x80, 0x1d, 0xea, 0x28, 0x15, 0xec, 0x84, 0x43, 0x11, + 0x59, 0x55, 0x34, 0xd5, 0x3c, 0x3d, 0x15, 0x6c, 0x97, 0xbb, 0x1a, 0xba, + 0xde, 0xc3, 0x0f, 0xfb, 0x06, 0x78, 0xde, 0xaa, 0x38, 0x0e, 0x3b, 0x35, + 0x20, 0xa1, 0x89, 0x43, 0x30, 0x7b, 0xba, 0xce, 0xaf, 0x30, 0x79, 0xac, + 0x28, 0x69, 0xe7, 0x60, 0xc7, 0xb2, 0x0d, 0xce, 0x53, 0x28, 0xcb, 0x1a, + 0x29, 0x8a, 0x59, 0x34, 0x0d, 0x75, 0xa4, 0xdb, 0xe3, 0xbd, 0x07, 0x3f, + 0xb0, 0xa8, 0x94, 0x86, 0x23, 0x52, 0x5f, 0x18, 0x8b, 0xde, 0x98, 0xa1, + 0x94, 0xc8, 0xa2, 0xb0, 0xe3, 0xf9, 0x0e, 0x4a, 0x6f, 0x4f, 0xcb, 0x26, + 0x66, 0x30, 0xb3, 0x12, 0x99, 0x81, 0xe9, 0x25, 0x74, 0xee, 0xcc, 0x0d, + 0x27, 0x92, 0x40, 0xf3, 0x72, 0x7b, 0x70, 0x88, 0xac, 0x8d, 0xdb, 0xa6, + 0x88, 0xd7, 0xce, 0x9b, 0x71, 0xe7, 0xfb, 0x3a, 0xd0, 0xc4, 0xf7, 0x3e, + 0x76, 0xdd, 0x89, 0x7c, 0x5e, 0x5b, 0x2f, 0x95, 0x45, 0xdd, 0x08, 0x76, + 0x2d, 0x27, 0xa1, 0x86, 0x9f, 0x99, 0xb9, 0x04, 0xb9, 0xac, 0xb9, 0x91, + 0xa8, 0x0a, 0xcc, 0x5a, 0xec, 0x69, 0xf4, 0x67, 0x8a, 0x0c, 0xde, 0xab, + 0x0c, 0xdb, 0x66, 0x4b, 0x56, 0x7e, 0xa0, 0xa8, 0xe4, 0xcb, 0x44, 0x43, + 0x4f, 0xaa, 0x6c, 0x40, 0x71, 0xbd, 0x1a, 0x20, 0xb6, 0xd1, 0x33, 0x7e, + 0x2b, 0x2f, 0x2d, 0x90, 0x56, 0xd5, 0xe6, 0x84, 0x70, 0x41, 0x41, 0xc1, + 0x05, 0xca, 0x2c, 0x8e, 0x87, 0x1c, 0xe6, 0xfe, 0xcc, 0xcd, 0x37, 0xb9, + 0xcb, 0x66, 0x2f, 0xb5, 0x34, 0x43, 0xa9, 0x9c, 0xa9, 0x4b, 0xf2, 0x38, + 0xc1, 0x25, 0x5b, 0x19, 0x5e, 0x6b, 0xce, 0xe5, 0xa2, 0x13, 0xfd, 0xfd, + 0x7a, 0xab, 0x25, 0xc9, 0x6a, 0x24, 0x96, 0xa6, 0xee, 0xa8, 0xb5, 0x7a, + 0x5c, 0xdb, 0x4a, 0x88, 0xcd, 0xbb, 0x9d, 0x99, 0x3d, 0x3d, 0x5f, 0xda, + 0x6f, 0xb5, 0xa9, 0xab, 0x2a, 0x1d, 0x06, 0x20, 0xe1, 0x88, 0x11, 0x66, + 0x56, 0x20, 0xf6, 0x18, 0x61, 0xae, 0x62, 0xa8, 0xa1, 0x8e, 0xea, 0x20, + 0x67, 0x0f, 0x03, 0x09, 0x3c, 0xf5, 0x00, 0x94, 0x80, 0x10, 0xa5, 0x95, + 0x0a, 0x6a, 0x36, 0x23, 0xcc, 0xa5, 0xee, 0x92, 0xfb, 0x87, 0x5a, 0xf4, + 0x6d, 0x95, 0x35, 0x87, 0xa9, 0xf9, 0x63, 0x16, 0xd3, 0x90, 0xc1, 0x2f, + 0x51, 0xcf, 0xb7, 0xc5, 0x42, 0x90, 0xbb, 0xaa, 0x89, 0xfa, 0xd1, 0x0d, + 0x82, 0xa6, 0x41, 0x3d, 0x55, 0x21, 0x43, 0xcc, 0x82, 0x21, 0x31, 0x8a, + 0x17, 0x89, 0xf8, 0xc5, 0x8d, 0x58, 0xa4, 0x34, 0x0b, 0xe1, 0xce, 0x87, + 0xca, 0xb2, 0xac, 0x39, 0x90, 0xff, 0xfb, 0xd4, 0x60, 0x23, 0x82, 0x08, + 0x09, 0x76, 0xbe, 0xc3, 0x2f, 0x7b, 0x70, 0x62, 0x4a, 0x48, 0xcf, 0x3d, + 0xa3, 0x5f, 0x20, 0xd9, 0xda, 0xf8, 0x0d, 0xbd, 0xed, 0xc1, 0x64, 0x16, + 0x23, 0xbc, 0xc5, 0x0d, 0x34, 0x6c, 0xed, 0x85, 0x85, 0xbd, 0x80, 0xb8, + 0xa7, 0xd4, 0xc9, 0x05, 0x1a, 0x95, 0x10, 0x8a, 0x6f, 0x53, 0xb1, 0x46, + 0x69, 0x73, 0x5a, 0x44, 0xb9, 0x22, 0x1b, 0x65, 0x38, 0x5c, 0xcd, 0x23, + 0xc1, 0x3d, 0x22, 0x38, 0xb6, 0x1b, 0xd3, 0x9e, 0x0c, 0x87, 0xab, 0x1a, + 0x64, 0xe1, 0x56, 0x35, 0x9f, 0xf0, 0x52, 0x0e, 0x0a, 0x17, 0x90, 0xd4, + 0x0c, 0x69, 0x92, 0x2e, 0xb9, 0x44, 0xb8, 0x3a, 0x4f, 0x24, 0x6a, 0x65, + 0x2b, 0x1b, 0x63, 0x26, 0xa1, 0xb5, 0xab, 0x90, 0x48, 0x5a, 0xd1, 0xc1, + 0x11, 0x9e, 0x0c, 0x69, 0x1b, 0xcc, 0xa8, 0x10, 0x1a, 0xa8, 0x86, 0xc3, + 0x76, 0x81, 0x77, 0x1a, 0xea, 0x07, 0xcf, 0x5b, 0x14, 0x89, 0xa6, 0x24, + 0x22, 0x23, 0x14, 0x06, 0xf7, 0x13, 0xf5, 0x8d, 0x29, 0x3c, 0x25, 0xda, + 0x89, 0xdb, 0x64, 0x66, 0x35, 0xd7, 0x4f, 0x46, 0xd2, 0xa5, 0x72, 0xdb, + 0x3c, 0x24, 0xc3, 0x55, 0x18, 0x1c, 0xa9, 0x98, 0x6c, 0xac, 0x32, 0xbb, + 0x63, 0x81, 0xb6, 0x26, 0x54, 0xd4, 0x36, 0x5d, 0xd2, 0x0b, 0x19, 0xd7, + 0x11, 0xe2, 0xa1, 0xa9, 0xac, 0xfc, 0x54, 0xb4, 0x41, 0x6c, 0x37, 0x8e, + 0xc5, 0xc0, 0x91, 0xa4, 0x0f, 0x03, 0x71, 0x0a, 0x43, 0x89, 0xe8, 0x27, + 0xce, 0x51, 0xca, 0x8b, 0x13, 0x52, 0xdc, 0x4a, 0x10, 0x86, 0x5b, 0x00, + 0x34, 0xdd, 0x5a, 0xda, 0x2b, 0x96, 0xc8, 0xdb, 0x5f, 0xfd, 0x38, 0x3c, + 0x82, 0x6e, 0x17, 0xa0, 0x52, 0x9b, 0xa3, 0x94, 0x2f, 0xe3, 0xd0, 0x26, + 0xe7, 0x6c, 0x20, 0xe7, 0xc8, 0x16, 0xa7, 0x4a, 0x9a, 0xaf, 0x56, 0xb6, + 0xd7, 0x65, 0x77, 0x41, 0x6b, 0xbe, 0x6c, 0xf9, 0xe7, 0x4b, 0x3e, 0x12, + 0xd9, 0xdf, 0x86, 0xeb, 0xc7, 0xef, 0x2a, 0xc3, 0x8d, 0xa1, 0x2c, 0x91, + 0x3d, 0x8c, 0xe4, 0xce, 0x27, 0x9c, 0x57, 0x37, 0x5c, 0xc9, 0x0f, 0x37, + 0xdd, 0x8a, 0xc2, 0xff, 0xee, 0xf3, 0x87, 0x9c, 0xaf, 0x65, 0x33, 0x87, + 0xf4, 0x2e, 0xdf, 0x33, 0x8b, 0xde, 0x4c, 0x40, 0xff, 0xf6, 0xfa, 0x2f, + 0x7d, 0x37, 0x9f, 0xf2, 0xcc, 0x1c, 0x31, 0x62, 0x10, 0xc0, 0x73, 0x2b, + 0xc1, 0xde, 0x77, 0x21, 0xb7, 0x85, 0xb6, 0x6b, 0x6f, 0x3b, 0xb2, 0xf0, + 0xde, 0x9e, 0x31, 0x2e, 0x7b, 0xb1, 0x42, 0x32, 0xc7, 0xc8, 0xee, 0x26, + 0x47, 0x01, 0x58, 0x3b, 0x9c, 0xcd, 0xe6, 0x26, 0x15, 0x03, 0xa1, 0x86, + 0x5f, 0x8c, 0x40, 0x8c, 0x17, 0x51, 0xbf, 0x55, 0x37, 0xaa, 0x1c, 0x87, + 0xa3, 0x4b, 0xab, 0xe6, 0x43, 0xbd, 0x0d, 0x2f, 0xcb, 0x92, 0xf0, 0xe6, + 0x79, 0x9d, 0x2c, 0xd0, 0x5a, 0x1f, 0x3b, 0x6c, 0x84, 0x85, 0x41, 0x73, + 0x5f, 0x49, 0x27, 0x1a, 0x0f, 0x65, 0x85, 0x84, 0xe2, 0xe1, 0x69, 0x86, + 0x32, 0xbc, 0xe6, 0x72, 0x8a, 0xde, 0x93, 0x33, 0x61, 0x9f, 0x67, 0x42, + 0xc2, 0xa5, 0x9d, 0x5a, 0x7e, 0xb6, 0x3d, 0x4f, 0xc4, 0x96, 0xab, 0xa5, + 0x1a, 0xad, 0x09, 0x26, 0x6e, 0x0d, 0x8d, 0xec, 0x4d, 0xef, 0x0f, 0x45, + 0xce, 0xe2, 0xc6, 0x79, 0x0d, 0x54, 0xb8, 0x43, 0x54, 0x0a, 0xf5, 0xcb, + 0x55, 0x19, 0x5b, 0x4b, 0xf9, 0x6f, 0x56, 0xbf, 0x5a, 0x7a, 0xc8, 0xc0, + 0xb4, 0x5b, 0xd4, 0xea, 0xe5, 0x0a, 0x2d, 0xb9, 0x8d, 0x7d, 0x0d, 0x54, + 0x2b, 0x12, 0xb7, 0x56, 0x75, 0xd2, 0x88, 0xd2, 0x53, 0x3e, 0x3f, 0x18, + 0x93, 0xf3, 0x99, 0x0a, 0xa4, 0x31, 0xb5, 0x58, 0x91, 0x65, 0x57, 0x9b, + 0xea, 0xf7, 0xca, 0xb5, 0x7a, 0xca, 0x10, 0xd6, 0xde, 0xfd, 0x9d, 0x3c, + 0xab, 0x74, 0xd0, 0xb9, 0x43, 0xd4, 0x6e, 0x2e, 0x07, 0x0b, 0x93, 0x99, + 0xcd, 0x23, 0xe8, 0x35, 0x4a, 0xcb, 0x22, 0x75, 0x10, 0x7f, 0xb1, 0x9c, + 0xa3, 0x71, 0x0d, 0x64, 0x4c, 0x8f, 0xf2, 0x7b, 0x82, 0x08, 0x78, 0x17, + 0x01, 0x78, 0x25, 0x8f, 0x35, 0xa2, 0x16, 0x3e, 0x07, 0x38, 0xa4, 0x83, + 0xc4, 0x32, 0x51, 0x04, 0xf4, 0x45, 0x46, 0xd0, 0xb9, 0x1a, 0x2d, 0x53, + 0x81, 0xcd, 0x4c, 0xc6, 0x60, 0x26, 0x96, 0xed, 0x23, 0x73, 0x33, 0x60, + 0x94, 0x98, 0x47, 0x1e, 0x47, 0x44, 0xc3, 0x12, 0x35, 0x68, 0x0d, 0x08, + 0x81, 0x12, 0x3f, 0x0b, 0x22, 0x7f, 0xa5, 0xf5, 0x3d, 0x29, 0xe7, 0xdf, + 0xd1, 0x7c, 0xb2, 0xfe, 0x9c, 0x3c, 0xfe, 0xbc, 0x85, 0x82, 0xd5, 0xc6, + 0x8f, 0x0d, 0x5a, 0x55, 0x65, 0x09, 0x06, 0x84, 0x8a, 0xb0, 0x0a, 0x6c, + 0x50, 0xc8, 0x10, 0x0f, 0x0f, 0x44, 0x46, 0x41, 0x22, 0xe8, 0x60, 0x14, + 0x92, 0x82, 0x25, 0x1c, 0xc2, 0x76, 0xb2, 0xf1, 0x89, 0x58, 0xc2, 0xaf, + 0x15, 0x6c, 0x6f, 0x5f, 0xcd, 0x2a, 0x02, 0x84, 0x04, 0xd3, 0x65, 0x11, + 0x4e, 0x33, 0x33, 0xdb, 0x46, 0x3e, 0xd8, 0xdc, 0xa6, 0xe3, 0x0e, 0xbf, + 0x73, 0x11, 0xb6, 0x50, 0xe9, 0x2b, 0x48, 0xcb, 0x13, 0x91, 0x33, 0x55, + 0x2a, 0x0f, 0x94, 0xe2, 0xec, 0xdf, 0x52, 0x1b, 0x25, 0xc9, 0x3f, 0x0d, + 0x18, 0xb4, 0x5f, 0x9d, 0x3a, 0x86, 0x15, 0xa9, 0x32, 0xe2, 0xdc, 0x73, + 0xa8, 0x55, 0x25, 0xfd, 0x9c, 0x79, 0x16, 0x16, 0x72, 0xde, 0x75, 0x98, + 0x29, 0xe7, 0xd5, 0x45, 0x93, 0x85, 0x3a, 0x9d, 0x1e, 0x42, 0x10, 0xb4, + 0xea, 0xd2, 0x95, 0x50, 0x4a, 0x53, 0xd0, 0x11, 0xf2, 0xaf, 0x4a, 0x89, + 0x60, 0x7e, 0xab, 0x56, 0x32, 0xff, 0xfb, 0xd4, 0x60, 0x2f, 0x88, 0x07, + 0xf4, 0x76, 0xbe, 0xab, 0x4f, 0x7b, 0x70, 0x6d, 0xa8, 0xa8, 0xdf, 0x1d, + 0x65, 0x5d, 0x22, 0x15, 0xda, 0xf8, 0x2d, 0xbd, 0xed, 0xc1, 0xb3, 0x39, + 0xe1, 0xb0, 0xc1, 0x8d, 0xb9, 0x35, 0x41, 0x63, 0x81, 0x32, 0x29, 0x70, + 0xd2, 0xa0, 0x3b, 0x9c, 0xd9, 0xa6, 0x75, 0x44, 0x2d, 0xbd, 0x8d, 0xbd, + 0x41, 0x12, 0x73, 0x1d, 0x18, 0xcc, 0xe6, 0xd5, 0x19, 0x28, 0xf2, 0x32, + 0x7b, 0x4b, 0xf0, 0x93, 0x2c, 0xa9, 0xb4, 0x92, 0xe1, 0x73, 0x1e, 0x0b, + 0x2b, 0xe8, 0x2c, 0x2c, 0x4c, 0xdb, 0x53, 0x3f, 0xab, 0x22, 0xfa, 0x36, + 0x1b, 0x32, 0x5d, 0x2e, 0xd8, 0xd8, 0xa1, 0x50, 0xb0, 0xa7, 0xa0, 0xb0, + 0x29, 0x0f, 0x46, 0x28, 0xcd, 0x70, 0x27, 0xab, 0x2d, 0x92, 0x4c, 0x68, + 0x26, 0x08, 0x4d, 0x8a, 0x27, 0x13, 0xad, 0x6a, 0x77, 0xd0, 0x99, 0xa4, + 0x57, 0x3c, 0x57, 0xe6, 0xaa, 0x36, 0x26, 0x76, 0x96, 0xc4, 0x36, 0x04, + 0xb0, 0x2c, 0xa6, 0x66, 0x5c, 0xc0, 0x53, 0xb9, 0x33, 0xbc, 0x53, 0xb4, + 0xb8, 0xba, 0x55, 0x5d, 0xf2, 0xa6, 0x3a, 0xe9, 0xf4, 0x25, 0x3b, 0x99, + 0xc3, 0x31, 0x2c, 0xb1, 0xef, 0x94, 0xe2, 0x0d, 0xa7, 0x90, 0x44, 0x25, + 0x68, 0xb6, 0x9b, 0x4c, 0xa7, 0x70, 0x8a, 0x8f, 0xa0, 0x0a, 0x08, 0x70, + 0xaf, 0x97, 0xe0, 0x62, 0x0a, 0x83, 0x31, 0x59, 0xa0, 0x01, 0x89, 0x79, + 0x59, 0xa8, 0x8d, 0xb9, 0x1e, 0x6f, 0xe7, 0x80, 0x50, 0x09, 0x11, 0x84, + 0x40, 0x98, 0x88, 0xa0, 0x4b, 0x4d, 0xe9, 0xc0, 0xf2, 0x54, 0x3f, 0x26, + 0x4f, 0x29, 0x8c, 0xf9, 0x51, 0xd9, 0x75, 0x32, 0x26, 0xff, 0xea, 0xbf, + 0x3b, 0xd2, 0xee, 0xae, 0x94, 0x6d, 0xc9, 0x72, 0x94, 0x87, 0x5b, 0x30, + 0xd9, 0x95, 0x5a, 0xeb, 0x2e, 0xca, 0x8a, 0xdb, 0xab, 0xdd, 0x88, 0xb7, + 0x26, 0xca, 0x8e, 0x88, 0xeb, 0x1e, 0x24, 0xe2, 0xa0, 0xe3, 0x84, 0xc6, + 0x0c, 0x09, 0x8b, 0x09, 0x18, 0x16, 0xc3, 0x85, 0xd4, 0x71, 0x0c, 0x3c, + 0x0c, 0x46, 0x2a, 0x50, 0xd2, 0xec, 0x53, 0x52, 0x01, 0x66, 0xc1, 0xeb, + 0x5b, 0xd0, 0xa0, 0xcd, 0xa8, 0xfe, 0xdf, 0xb7, 0xaa, 0x85, 0x00, 0x51, + 0xa7, 0x24, 0xc1, 0xca, 0x84, 0xfa, 0xd4, 0x0e, 0x2e, 0xdd, 0x5e, 0x56, + 0xbe, 0xc7, 0xe5, 0xcf, 0x9b, 0x75, 0x86, 0x26, 0x85, 0x70, 0xeb, 0x2b, + 0x14, 0x24, 0xac, 0x79, 0x2a, 0x89, 0x51, 0xbc, 0xaf, 0x35, 0x0c, 0x82, + 0xac, 0xe2, 0x2f, 0xc4, 0xe8, 0xa7, 0x13, 0x42, 0xea, 0x7e, 0x99, 0xa9, + 0x75, 0x64, 0x12, 0x8c, 0xe5, 0x66, 0x6c, 0x68, 0x4c, 0x95, 0xca, 0x42, + 0x85, 0x54, 0x5c, 0x92, 0xa7, 0x82, 0x25, 0x18, 0x44, 0x2d, 0x47, 0x67, + 0x73, 0x0e, 0xa4, 0x31, 0x3a, 0xcf, 0x39, 0xc4, 0x9a, 0x7c, 0xa1, 0x73, + 0x45, 0x2a, 0x4c, 0xa3, 0x49, 0x5c, 0x8f, 0x39, 0x8f, 0xa4, 0xe2, 0xa9, + 0xbd, 0xa5, 0x90, 0x70, 0x25, 0x0b, 0x62, 0x19, 0xb3, 0xb5, 0x91, 0x3e, + 0xa7, 0x91, 0x8d, 0x9d, 0x38, 0x77, 0x9d, 0xb0, 0x21, 0xb2, 0x22, 0x59, + 0x93, 0xd0, 0x97, 0xcd, 0xd2, 0x66, 0xd6, 0xf1, 0x32, 0xa8, 0x59, 0x61, + 0x3a, 0x8b, 0x1c, 0xaa, 0x55, 0x0a, 0x99, 0x8d, 0xc1, 0x56, 0xde, 0xbb, + 0x74, 0x6b, 0x41, 0x64, 0x42, 0x8f, 0x04, 0x39, 0x50, 0xa4, 0x5c, 0x28, + 0x94, 0x2c, 0x06, 0x42, 0xe8, 0xe7, 0x2e, 0x84, 0x18, 0xfd, 0x7e, 0x7c, + 0x9d, 0x51, 0x94, 0xc8, 0xb5, 0x1b, 0x91, 0x7f, 0x37, 0xd4, 0xe7, 0x41, + 0x2f, 0x60, 0x55, 0xb2, 0x90, 0xb3, 0xb4, 0xbe, 0x97, 0xa4, 0x28, 0x4d, + 0x53, 0x28, 0xf8, 0xb7, 0x48, 0xa7, 0x5c, 0xe3, 0x32, 0xc5, 0x48, 0xaa, + 0xdb, 0x5c, 0x50, 0xc4, 0x3e, 0x3a, 0xef, 0x9d, 0x6a, 0x1a, 0x69, 0x39, + 0x96, 0x37, 0x6a, 0x96, 0xdc, 0xb7, 0x2b, 0x0d, 0x45, 0xb7, 0x73, 0xab, + 0x57, 0x0b, 0x14, 0x61, 0x6f, 0x3e, 0x95, 0x4c, 0x88, 0x32, 0x72, 0xa9, + 0x26, 0x25, 0xb0, 0xb7, 0x9b, 0xe7, 0xd3, 0xc3, 0x1d, 0x90, 0x5e, 0x16, + 0xd1, 0x35, 0x55, 0x05, 0x41, 0x3f, 0x25, 0xe3, 0x58, 0xd3, 0x0a, 0x90, + 0xa6, 0x1f, 0x43, 0xe0, 0xe0, 0x59, 0x98, 0x01, 0xf3, 0xe5, 0x37, 0x77, + 0x55, 0xd3, 0x39, 0x6d, 0x6c, 0x13, 0x25, 0x93, 0x45, 0x4c, 0x3a, 0x5f, + 0x3d, 0x3a, 0x63, 0x32, 0xae, 0x00, 0xb1, 0x10, 0x94, 0xac, 0x23, 0x6b, + 0xad, 0x4a, 0xe5, 0xeb, 0xd4, 0xcc, 0x88, 0x95, 0x8d, 0x3a, 0xac, 0x65, + 0x3c, 0xc8, 0xbb, 0xa7, 0xf9, 0x2d, 0xca, 0x77, 0xcb, 0xff, 0xea, 0xda, + 0xb9, 0x44, 0x9f, 0xa7, 0x6f, 0xcf, 0xf3, 0x88, 0x7c, 0x39, 0xe5, 0x22, + 0xa9, 0x1c, 0xe5, 0x7c, 0xf2, 0x28, 0x95, 0x19, 0x18, 0xb6, 0x3c, 0xe2, + 0x67, 0x9d, 0x84, 0x5f, 0xfe, 0x59, 0x7f, 0x0a, 0xec, 0x6b, 0xca, 0x25, + 0xe7, 0xe5, 0x5a, 0xe5, 0x4a, 0xf1, 0xa0, 0xf4, 0x94, 0x8c, 0xb0, 0xca, + 0x91, 0x86, 0x8e, 0xd1, 0x78, 0x1c, 0x40, 0xba, 0x06, 0x00, 0x06, 0x70, + 0xc0, 0x54, 0xdc, 0xeb, 0xc4, 0x18, 0xf3, 0x43, 0x80, 0xe5, 0x92, 0x86, + 0x9e, 0x83, 0x4e, 0xf2, 0x96, 0xb4, 0xd9, 0x7a, 0x8d, 0x46, 0x3d, 0x26, + 0x1b, 0x0a, 0x1a, 0xa4, 0x49, 0xa2, 0x57, 0x97, 0x65, 0xb1, 0x76, 0x8b, + 0x33, 0xcd, 0xe6, 0xe3, 0xc4, 0xa2, 0x52, 0x2a, 0x0f, 0x63, 0x99, 0x88, + 0xf0, 0x26, 0x6c, 0x06, 0x22, 0x16, 0x5d, 0x5c, 0xc9, 0x09, 0xc6, 0xa8, + 0x36, 0x8e, 0x52, 0xf0, 0x3c, 0x55, 0x47, 0x81, 0xf4, 0xbb, 0x21, 0x68, + 0xdc, 0xa1, 0xad, 0x15, 0x69, 0xff, 0xfb, 0xd4, 0x60, 0x28, 0x80, 0x08, + 0x2a, 0x76, 0xbe, 0xab, 0x6f, 0xc3, 0x74, 0x72, 0xae, 0x48, 0x8d, 0x24, + 0xa2, 0x6f, 0x61, 0x11, 0xd8, 0xf9, 0x0d, 0x3d, 0xed, 0xc9, 0xc3, 0x3a, + 0x21, 0xb0, 0x94, 0x0d, 0xbd, 0x82, 0xdf, 0x7a, 0x29, 0xa8, 0xa4, 0x8a, + 0x49, 0x1a, 0x7f, 0x21, 0x87, 0x6d, 0xd3, 0x9a, 0x98, 0xbd, 0x3d, 0x30, + 0xd6, 0xe4, 0x53, 0xf3, 0xf7, 0x62, 0x57, 0xe5, 0xfa, 0x95, 0xbd, 0x17, + 0xe5, 0x71, 0x8e, 0x40, 0xf1, 0x4a, 0x79, 0xba, 0x79, 0x54, 0xd5, 0xf8, + 0xbd, 0x99, 0xa9, 0xb8, 0x32, 0x62, 0x5d, 0x01, 0x67, 0x52, 0x27, 0x9e, + 0xa7, 0x29, 0x1e, 0xc8, 0x66, 0x5d, 0x3d, 0x66, 0xb5, 0x34, 0x42, 0x9a, + 0x6a, 0xb4, 0x3f, 0x2a, 0xaf, 0x00, 0xc6, 0xb5, 0xb9, 0x44, 0x66, 0xac, + 0xae, 0x8f, 0x74, 0xb2, 0x29, 0x7b, 0x91, 0x8c, 0xcb, 0xff, 0xf6, 0x7e, + 0x86, 0xdd, 0x35, 0x34, 0x92, 0xdd, 0x04, 0xae, 0x01, 0xd4, 0x72, 0x2d, + 0x3d, 0x85, 0xe8, 0x9c, 0x22, 0x6a, 0x6e, 0x21, 0x47, 0x37, 0x2d, 0xc3, + 0xe3, 0xf5, 0xb2, 0x90, 0xcd, 0xc6, 0xfb, 0x8c, 0xec, 0xb2, 0xdc, 0x66, + 0xbc, 0x31, 0x7a, 0x1f, 0xa6, 0x9e, 0x80, 0x32, 0x7a, 0xe8, 0x62, 0x74, + 0xd7, 0xf3, 0x9d, 0x8b, 0x5a, 0x99, 0x80, 0xe6, 0x1a, 0xed, 0x2b, 0xb7, + 0x8c, 0x72, 0x47, 0x20, 0x6f, 0x5b, 0x9c, 0xba, 0x45, 0x10, 0x89, 0xc3, + 0x54, 0xad, 0x42, 0x40, 0xbd, 0x58, 0xda, 0xf8, 0x57, 0x81, 0x73, 0xae, + 0x15, 0x0c, 0x6f, 0x28, 0x27, 0xc0, 0x97, 0x7f, 0x17, 0x7d, 0x26, 0x51, + 0x24, 0xff, 0x58, 0xdb, 0x42, 0xb9, 0xa0, 0x0c, 0x0f, 0x82, 0x88, 0x82, + 0xe2, 0x57, 0x66, 0x7b, 0x06, 0x8a, 0x83, 0x00, 0x2f, 0x2b, 0x20, 0x50, + 0x14, 0x04, 0x0e, 0x80, 0x40, 0xc8, 0x66, 0x7a, 0xcc, 0x94, 0x2d, 0xfa, + 0x15, 0x04, 0x99, 0x28, 0x55, 0x5b, 0xd1, 0x29, 0xde, 0xca, 0x8c, 0xc8, + 0x75, 0x4b, 0xf6, 0xb2, 0xd5, 0xcc, 0x84, 0x2d, 0xf4, 0xcd, 0xbb, 0x92, + 0xe9, 0x3f, 0x65, 0xa9, 0x18, 0x67, 0x63, 0x39, 0xa4, 0x43, 0xde, 0xa5, + 0x7d, 0xac, 0x32, 0x26, 0x32, 0xa3, 0xf5, 0x22, 0xd1, 0x0d, 0x56, 0xbe, + 0x7d, 0x1e, 0xee, 0x92, 0x47, 0x70, 0xb3, 0x7f, 0x49, 0x2b, 0xdc, 0xe5, + 0x53, 0x8b, 0x46, 0x72, 0xd9, 0x9c, 0xc3, 0xbd, 0x45, 0x39, 0xee, 0x14, + 0x04, 0x80, 0x00, 0xb1, 0x29, 0x6c, 0x84, 0x3d, 0x4d, 0x79, 0x26, 0x76, + 0xde, 0xc9, 0x5b, 0xb3, 0xce, 0xbd, 0x9d, 0xd7, 0xb9, 0x45, 0xe0, 0x1b, + 0x48, 0x3a, 0x92, 0xa2, 0x70, 0x86, 0x22, 0x9a, 0x4e, 0xe6, 0x64, 0x52, + 0x24, 0xd1, 0x2e, 0xe3, 0x8c, 0xc5, 0x62, 0x29, 0x8c, 0x66, 0x13, 0xf5, + 0x18, 0x8d, 0x65, 0x3d, 0x48, 0x09, 0x33, 0x3c, 0x98, 0x5c, 0xcc, 0xa5, + 0x08, 0xb9, 0xb7, 0x9c, 0xe8, 0x23, 0xa5, 0x69, 0xbf, 0x48, 0x59, 0xf2, + 0x8d, 0x27, 0x28, 0x7a, 0x84, 0xe3, 0x42, 0x94, 0xe8, 0x94, 0x84, 0x85, + 0xb2, 0x14, 0x46, 0x65, 0x72, 0x91, 0x2e, 0xa1, 0x32, 0x53, 0x66, 0x8e, + 0x8f, 0x01, 0x98, 0x7d, 0xa9, 0xd5, 0x29, 0x45, 0xd0, 0xe3, 0x70, 0x58, + 0x3b, 0x8d, 0xd3, 0x90, 0xe0, 0x43, 0x57, 0x2a, 0x75, 0x63, 0xa5, 0x31, + 0x35, 0x50, 0x98, 0xee, 0xc9, 0x46, 0x91, 0x2e, 0x95, 0xc4, 0x98, 0xe4, + 0x8e, 0x85, 0x1f, 0x37, 0x3f, 0xd7, 0xe1, 0xc3, 0x5c, 0xa2, 0x99, 0xa6, + 0x5e, 0x93, 0x0d, 0xec, 0xe9, 0x58, 0xe7, 0x34, 0x45, 0xb4, 0x31, 0xe3, + 0x7a, 0x79, 0x5e, 0xf2, 0xc7, 0x0b, 0x02, 0x65, 0xaf, 0x67, 0x2c, 0x45, + 0xda, 0x9d, 0x8d, 0x5a, 0xec, 0xb8, 0xa2, 0x36, 0xf9, 0x5c, 0x64, 0x98, + 0x2d, 0xe7, 0x4b, 0xab, 0x6e, 0x22, 0x29, 0x49, 0x00, 0xbf, 0x69, 0xd3, + 0x1a, 0x71, 0x92, 0x75, 0x3c, 0x06, 0x16, 0x74, 0x4a, 0xc2, 0xba, 0x1c, + 0xeb, 0x11, 0x13, 0xca, 0xcb, 0xbb, 0x53, 0x9f, 0xf6, 0xc5, 0xd3, 0x68, + 0x87, 0x39, 0x19, 0x12, 0x2c, 0x6b, 0x98, 0x4c, 0x70, 0xe3, 0xaa, 0x9b, + 0x9e, 0x42, 0x55, 0xa8, 0x17, 0x4f, 0x8f, 0x44, 0x25, 0x45, 0x1c, 0xef, + 0x64, 0x80, 0x76, 0x0e, 0xe5, 0x79, 0xbe, 0x40, 0xca, 0xb1, 0x3e, 0x1e, + 0x82, 0xfe, 0x02, 0x60, 0x24, 0x12, 0x00, 0x91, 0x3c, 0x94, 0xa7, 0xda, + 0x80, 0x19, 0x26, 0xea, 0xa9, 0xa6, 0x40, 0xfd, 0x29, 0x2c, 0xac, 0x89, + 0xc8, 0x28, 0xda, 0x80, 0x28, 0x08, 0x1c, 0x01, 0x70, 0x60, 0x39, 0x66, + 0xa2, 0x88, 0x3c, 0xcf, 0x8e, 0xa0, 0x7b, 0x34, 0xdf, 0xad, 0xfa, 0x7f, + 0x15, 0x71, 0x3c, 0xdf, 0x7c, 0xad, 0x4f, 0xd1, 0xf0, 0xd5, 0x32, 0xcb, + 0xd2, 0x91, 0x95, 0x4b, 0xd8, 0x46, 0xb5, 0x2b, 0x26, 0x62, 0x94, 0xf3, + 0x72, 0xb8, 0x77, 0xb4, 0xb3, 0xba, 0x99, 0x16, 0x59, 0xe8, 0xbe, 0x17, + 0xbd, 0x2f, 0x74, 0xe7, 0x56, 0x53, 0xe9, 0x11, 0x79, 0xfe, 0xab, 0x96, + 0x3c, 0x85, 0xff, 0xfe, 0x6d, 0xfa, 0xe6, 0x49, 0xff, 0x9c, 0x9c, 0xbf, + 0xbb, 0x91, 0x76, 0x1a, 0x16, 0xce, 0x44, 0x8e, 0x64, 0xea, 0x4c, 0x4e, + 0x84, 0x9a, 0x9a, 0x8e, 0xcd, 0xd5, 0x02, 0x00, 0x25, 0x2b, 0xec, 0x22, + 0xc6, 0x74, 0x00, 0x37, 0xab, 0xe2, 0x05, 0x56, 0x97, 0x6d, 0x77, 0xb7, + 0x78, 0x83, 0x3e, 0x41, 0xf7, 0x19, 0x69, 0x84, 0x74, 0x23, 0x52, 0x45, + 0xe0, 0xb1, 0x20, 0x9b, 0x15, 0xc5, 0xc5, 0x54, 0x3b, 0xdc, 0xce, 0xb2, + 0xc4, 0x58, 0x48, 0x23, 0x7a, 0xb5, 0xb0, 0x6c, 0x25, 0x5e, 0x1c, 0x69, + 0xd3, 0xf1, 0x80, 0xb6, 0xb3, 0xff, 0xfb, 0xd4, 0x60, 0x1d, 0x80, 0x08, + 0x34, 0x76, 0xbe, 0x2b, 0x4f, 0x7b, 0x70, 0x74, 0xce, 0xb8, 0x3c, 0x30, + 0xa5, 0x6e, 0x1d, 0xad, 0xdb, 0x01, 0x2c, 0xbd, 0x8d, 0xc1, 0xab, 0x39, + 0xe1, 0x70, 0xc1, 0x0d, 0xb9, 0x97, 0x15, 0x31, 0x27, 0x53, 0xa7, 0x95, + 0x49, 0x75, 0x63, 0x7a, 0xe4, 0xee, 0x30, 0x90, 0xf7, 0x86, 0x7a, 0xd4, + 0xb1, 0xd0, 0x92, 0xfa, 0x70, 0x45, 0x43, 0x94, 0xb1, 0x58, 0x9d, 0xa3, + 0x9a, 0x4d, 0xf6, 0xd4, 0x2d, 0x12, 0x68, 0x4e, 0x9f, 0x56, 0x33, 0x3c, + 0x4e, 0xb8, 0x2b, 0x56, 0x50, 0xf4, 0x3e, 0x39, 0x71, 0x38, 0xe8, 0xaf, + 0x73, 0x2d, 0xc7, 0xe1, 0xc8, 0xde, 0x9c, 0x64, 0x49, 0x4a, 0xce, 0xe6, + 0xc4, 0x9d, 0x50, 0xc8, 0xbb, 0x7e, 0xc0, 0xad, 0x6e, 0x62, 0x55, 0xb7, + 0x97, 0x23, 0x10, 0xbe, 0xd9, 0x4c, 0x74, 0xa7, 0x8e, 0x05, 0x82, 0xe5, + 0x11, 0x10, 0x7f, 0xa9, 0x94, 0x25, 0xed, 0x8d, 0xc9, 0xf1, 0x28, 0x43, + 0x1d, 0x55, 0x09, 0x3f, 0x66, 0x86, 0xc8, 0xeb, 0xe2, 0x2e, 0x12, 0xc6, + 0x46, 0x9d, 0x2b, 0x22, 0x29, 0x4c, 0xe6, 0x1d, 0x61, 0xb6, 0x56, 0x25, + 0x43, 0x32, 0x16, 0xa6, 0x5e, 0x70, 0x78, 0x70, 0xb9, 0x36, 0x25, 0x5d, + 0x6e, 0x3b, 0x42, 0x64, 0xe6, 0x3f, 0x17, 0xda, 0xdb, 0x98, 0x57, 0x2f, + 0x64, 0x7b, 0x19, 0x47, 0x19, 0x50, 0x9f, 0x4f, 0xb2, 0x1f, 0xba, 0x57, + 0xa9, 0x94, 0xcc, 0x2a, 0xb8, 0x46, 0x8b, 0x8b, 0xb8, 0xaf, 0x63, 0x13, + 0xe7, 0x85, 0xe0, 0xe5, 0x3f, 0x97, 0x05, 0xd9, 0x92, 0x63, 0x90, 0xb9, + 0xaa, 0x49, 0x8d, 0x95, 0x29, 0xf3, 0x50, 0xfd, 0x50, 0x8c, 0xf3, 0xc8, + 0x03, 0x71, 0x33, 0x83, 0x90, 0x0a, 0x8a, 0xc0, 0x48, 0xc4, 0xd2, 0x4c, + 0xca, 0xe6, 0xd6, 0x9c, 0xad, 0x3c, 0xb2, 0x35, 0xcb, 0xc1, 0xc3, 0x85, + 0x00, 0x82, 0x77, 0x43, 0x23, 0x9e, 0xc7, 0xab, 0xad, 0x9d, 0xd0, 0xf3, + 0x34, 0xd3, 0x18, 0x84, 0xa9, 0x48, 0x4f, 0x5d, 0x68, 0x56, 0x77, 0x62, + 0xcc, 0xab, 0x75, 0xbf, 0xd3, 0x5e, 0x49, 0x6c, 0xac, 0xb5, 0x56, 0x4d, + 0xb7, 0xb3, 0x29, 0x54, 0x7c, 0x41, 0xcf, 0x6d, 0x5e, 0xc8, 0x67, 0x25, + 0x52, 0x99, 0xce, 0xe9, 0x47, 0xb1, 0x56, 0x6e, 0xac, 0xc9, 0x75, 0xf5, + 0xd7, 0xf5, 0xab, 0x5b, 0x63, 0xff, 0x52, 0x29, 0x50, 0x88, 0x45, 0xa8, + 0xa9, 0x08, 0x8c, 0x2e, 0x1e, 0x1a, 0x1f, 0x32, 0xa2, 0x0a, 0x14, 0x60, + 0xc1, 0xa2, 0xc4, 0x13, 0x0e, 0x0a, 0x80, 0xe7, 0x0e, 0x9c, 0x4c, 0x50, + 0x55, 0x00, 0x1b, 0xda, 0x49, 0xaa, 0x8c, 0x6d, 0x08, 0x09, 0x1b, 0xf6, + 0x19, 0x6b, 0x50, 0xdc, 0x49, 0xd5, 0x7e, 0xe3, 0xd2, 0xd7, 0x29, 0xf4, + 0x91, 0x1d, 0x67, 0xa4, 0x09, 0x0e, 0xc8, 0xe4, 0xa8, 0xec, 0x7a, 0x9f, + 0xa2, 0x6d, 0x8c, 0x94, 0x1a, 0x70, 0x61, 0x93, 0xa4, 0x2c, 0xfa, 0x3a, + 0x3a, 0x10, 0xcc, 0x96, 0x5d, 0x4d, 0xb5, 0x4b, 0x2a, 0xe1, 0x5a, 0x4c, + 0x89, 0xfa, 0x94, 0xeb, 0x5c, 0xa9, 0x57, 0xe8, 0xdb, 0x1c, 0xbb, 0xa8, + 0x0f, 0xd5, 0x1d, 0x4c, 0x24, 0x19, 0x7d, 0x3a, 0x62, 0x40, 0x88, 0x86, + 0xbe, 0x13, 0xa4, 0x45, 0xc0, 0x3c, 0xd8, 0xe0, 0x80, 0x24, 0x46, 0x7e, + 0x3a, 0x2e, 0xb9, 0x88, 0x0c, 0x11, 0x68, 0x44, 0x27, 0x13, 0x41, 0x80, + 0xfd, 0x41, 0x9d, 0xc9, 0x06, 0xa7, 0xc2, 0x79, 0x2c, 0x4e, 0x30, 0x12, + 0x3d, 0x0c, 0x3a, 0x2b, 0x22, 0x58, 0xf2, 0x0a, 0xf6, 0x89, 0xca, 0x83, + 0x93, 0xc1, 0x15, 0x72, 0xe7, 0x91, 0x8e, 0xef, 0x20, 0x94, 0x07, 0xe2, + 0x61, 0x48, 0x47, 0x3b, 0x23, 0xbe, 0x62, 0x58, 0x3c, 0x32, 0x88, 0x98, + 0xb5, 0xa1, 0xa9, 0x61, 0x40, 0x98, 0x80, 0xa2, 0x35, 0x83, 0xa1, 0x70, + 0x3b, 0x54, 0x66, 0x78, 0x5d, 0xc5, 0xce, 0xa5, 0x33, 0x2c, 0x12, 0xde, + 0x70, 0xd2, 0x9e, 0xd3, 0x7e, 0xc7, 0x5a, 0x6e, 0xc1, 0xee, 0xa2, 0x3a, + 0x65, 0x5e, 0x56, 0x07, 0xab, 0xca, 0x2f, 0x8e, 0xbd, 0xb0, 0x21, 0x38, + 0x86, 0xa6, 0xc6, 0x6c, 0xc4, 0xdb, 0x6d, 0x28, 0x2a, 0xc0, 0x58, 0x5c, + 0x5b, 0x4e, 0x6a, 0x95, 0x23, 0x8e, 0x9a, 0x68, 0x2e, 0x82, 0xea, 0xc0, + 0x3a, 0x70, 0x0e, 0x15, 0x04, 0xf0, 0x4c, 0x10, 0x26, 0x1f, 0xf8, 0x0d, + 0xdd, 0x93, 0x45, 0xb7, 0xfa, 0x66, 0x79, 0xa7, 0xee, 0x8b, 0x46, 0xa1, + 0xa1, 0x09, 0x78, 0xa8, 0xce, 0x85, 0x3a, 0xb0, 0x25, 0xaa, 0x3d, 0x9d, + 0xfa, 0x76, 0xab, 0xfb, 0x3a, 0x1d, 0x18, 0xca, 0x77, 0xa7, 0x46, 0xf0, + 0xe9, 0xc5, 0x3f, 0x37, 0x53, 0x2c, 0xb3, 0x27, 0xde, 0xb7, 0xdf, 0xac, + 0x8d, 0x17, 0xd0, 0xaf, 0x0a, 0x3f, 0xb5, 0x73, 0xc8, 0xf3, 0xcb, 0xbd, + 0xcb, 0xe6, 0x90, 0xf2, 0xf8, 0x5b, 0x1f, 0x91, 0x21, 0x5a, 0xf2, 0x24, + 0xce, 0x17, 0xf3, 0xff, 0xff, 0xca, 0x95, 0xe6, 0xad, 0xf4, 0xb9, 0x7c, + 0xcf, 0xf3, 0xf6, 0x82, 0x20, 0x42, 0xbe, 0xea, 0x4e, 0x86, 0x44, 0x06, + 0x20, 0x00, 0x14, 0x1d, 0xd8, 0x7e, 0x84, 0xa1, 0x60, 0xca, 0x04, 0x00, + 0x06, 0x12, 0xf1, 0x01, 0x03, 0xe8, 0x1d, 0x02, 0x6c, 0xca, 0xc9, 0x7f, + 0x9f, 0x44, 0x4e, 0x59, 0xaf, 0x52, 0xba, 0x99, 0x79, 0x95, 0xab, 0x22, + 0xa5, 0x5c, 0x0c, 0xc3, 0x64, 0xd3, 0x78, 0x5f, 0xc5, 0x5b, 0x83, 0x88, + 0xfb, 0x17, 0x21, 0x63, 0x0e, 0x05, 0x30, 0x5d, 0x97, 0x35, 0x19, 0xbe, + 0x66, 0x16, 0x25, 0xd1, 0x8c, 0x86, 0x9d, 0xe2, 0xd8, 0x9b, 0x7a, 0xf4, + 0xbb, 0x3d, 0x3f, 0x0a, 0x51, 0xff, 0xfb, 0xd4, 0x60, 0x21, 0x80, 0x08, + 0x66, 0x76, 0xbd, 0xab, 0x4f, 0x7b, 0x70, 0x6e, 0x2e, 0x78, 0x5c, 0x2c, + 0xa3, 0x6e, 0x5d, 0x51, 0xd9, 0x01, 0x2c, 0x3d, 0xed, 0xc1, 0xb9, 0xba, + 0xa1, 0x74, 0x90, 0x9d, 0xb9, 0x3f, 0x65, 0x53, 0x5a, 0x39, 0xa6, 0xa7, + 0x39, 0xd1, 0xc4, 0x38, 0x93, 0xd1, 0x09, 0x54, 0x24, 0xcd, 0xe4, 0x52, + 0x89, 0x5e, 0xb8, 0x3c, 0x5b, 0x0c, 0x62, 0x39, 0x14, 0x4e, 0xa7, 0x30, + 0x11, 0xe4, 0xe5, 0xf2, 0x71, 0xad, 0xb1, 0x44, 0x42, 0x60, 0xa2, 0x51, + 0x6e, 0xa7, 0x3c, 0x19, 0x95, 0xda, 0x42, 0xcc, 0x14, 0x39, 0x12, 0x78, + 0x21, 0x45, 0xb5, 0x81, 0x85, 0x4c, 0x86, 0xa8, 0x20, 0x9d, 0xc9, 0x0a, + 0xab, 0xcf, 0xf7, 0x15, 0x87, 0x17, 0x24, 0x6a, 0x9d, 0x36, 0xae, 0x5c, + 0x4a, 0x9c, 0x38, 0xd2, 0xf1, 0x54, 0x4a, 0xc6, 0x63, 0x8d, 0x30, 0xaf, + 0xba, 0x94, 0xdd, 0x34, 0xe1, 0x3c, 0x42, 0x5a, 0xd3, 0xe7, 0x6a, 0xb1, + 0xe1, 0xd4, 0x92, 0x60, 0x88, 0x98, 0x5c, 0xb9, 0x38, 0xb0, 0xe1, 0x92, + 0x03, 0x3c, 0x15, 0x32, 0x95, 0x99, 0x3d, 0x79, 0x51, 0xc9, 0x33, 0x47, + 0x11, 0xa3, 0x9f, 0x09, 0xc8, 0xc9, 0xc5, 0x49, 0xe0, 0xf1, 0x3a, 0xc6, + 0xb0, 0x84, 0x43, 0x83, 0x15, 0x0c, 0x45, 0x4a, 0xaa, 0x53, 0x3f, 0x5b, + 0x66, 0x9e, 0xc7, 0xf2, 0xc3, 0x0b, 0x9c, 0xb1, 0x11, 0xc9, 0xdd, 0x1c, + 0x86, 0x52, 0xc3, 0x81, 0x94, 0x85, 0x98, 0xc5, 0xb1, 0xd2, 0x3c, 0xf6, + 0x4b, 0xa4, 0xd1, 0x27, 0x1b, 0x52, 0x94, 0x9e, 0x87, 0x39, 0x6c, 0x0e, + 0x77, 0x40, 0x9c, 0x21, 0xc6, 0x48, 0xb8, 0x13, 0xb1, 0x0c, 0x12, 0x77, + 0x94, 0x55, 0xd0, 0x07, 0x5b, 0xcd, 0x71, 0x2f, 0x7d, 0xbf, 0xe3, 0xc8, + 0xd6, 0x00, 0xa4, 0xc1, 0xe2, 0x47, 0x83, 0x42, 0x69, 0x30, 0x62, 0xa3, + 0x4c, 0x67, 0x30, 0xc1, 0xc0, 0xc1, 0x4b, 0xe8, 0xd4, 0x79, 0x55, 0x7e, + 0xbb, 0xfd, 0xd1, 0x4a, 0x8c, 0x84, 0x74, 0x36, 0x5c, 0x6c, 0xac, 0xd6, + 0xd4, 0x37, 0x84, 0xe4, 0xa4, 0x7a, 0x8d, 0xe1, 0x2f, 0x72, 0xb2, 0x43, + 0xe6, 0x68, 0x5d, 0xb0, 0x7c, 0xfe, 0xa3, 0x7f, 0xfd, 0x2e, 0x76, 0xfa, + 0xb2, 0x62, 0xbf, 0x86, 0xa6, 0x64, 0x85, 0x13, 0x2c, 0xb2, 0x75, 0x6a, + 0xf7, 0xff, 0xcf, 0xff, 0xe1, 0xfc, 0xf3, 0xca, 0x9f, 0xb9, 0xfd, 0xf3, + 0xc8, 0xa2, 0xd3, 0x41, 0x22, 0x18, 0xfa, 0xac, 0x10, 0x13, 0x3d, 0x5d, + 0x91, 0xb7, 0x1d, 0x4f, 0x18, 0x10, 0x24, 0x12, 0xcc, 0xd4, 0x65, 0x54, + 0xaa, 0xc4, 0x79, 0x82, 0x19, 0x5d, 0xf7, 0xbe, 0x09, 0xa3, 0x81, 0x21, + 0x96, 0x71, 0x05, 0xd8, 0x3d, 0xa2, 0x37, 0x97, 0x37, 0x74, 0x8e, 0xe4, + 0x5e, 0x53, 0x6a, 0x35, 0x3a, 0xc9, 0x8a, 0x9c, 0x56, 0xa7, 0x8f, 0xc3, + 0x1d, 0x0b, 0x54, 0x33, 0x88, 0x63, 0x58, 0xb9, 0xb1, 0xb2, 0x3e, 0x71, + 0x52, 0x20, 0x16, 0x53, 0x88, 0x16, 0xc5, 0xb3, 0xe6, 0x0c, 0x74, 0x9d, + 0xa4, 0x6e, 0x5b, 0x4d, 0x24, 0xd3, 0xaa, 0xbc, 0x1c, 0xe9, 0xb5, 0x19, + 0xa4, 0x9f, 0x4c, 0xb7, 0x3e, 0x70, 0xae, 0xde, 0x1f, 0x2d, 0xe9, 0x1d, + 0xad, 0x4a, 0xd3, 0x1e, 0xef, 0x5b, 0xe6, 0x53, 0xdd, 0x59, 0x45, 0x64, + 0x48, 0xca, 0x32, 0x5e, 0x93, 0x7c, 0x95, 0x72, 0x3f, 0xd4, 0xce, 0x4e, + 0x0e, 0x4d, 0x6d, 0xda, 0x39, 0x51, 0xce, 0x49, 0xd6, 0x37, 0x13, 0x32, + 0x03, 0x1b, 0x23, 0x51, 0x2a, 0x65, 0x72, 0x92, 0xb7, 0x5a, 0x31, 0xdb, + 0x4e, 0x66, 0x55, 0xab, 0xce, 0xba, 0x60, 0x7d, 0xb4, 0xfc, 0x25, 0x7a, + 0x05, 0xbd, 0x46, 0xaa, 0x73, 0x8e, 0xee, 0xec, 0x69, 0x26, 0x7b, 0xbe, + 0x71, 0x5a, 0x67, 0x80, 0xda, 0x9c, 0x85, 0x0a, 0x56, 0x95, 0xa9, 0x20, + 0xe2, 0x8f, 0x60, 0x35, 0xca, 0xda, 0xd9, 0x1e, 0xb4, 0x96, 0xd7, 0xc4, + 0x6b, 0xef, 0x3b, 0x9e, 0x33, 0xc7, 0xdb, 0x60, 0xb5, 0x9e, 0x36, 0x4d, + 0xb8, 0x58, 0x89, 0x15, 0xfd, 0xdc, 0xe5, 0x43, 0x70, 0xde, 0xf1, 0xa9, + 0x49, 0xd8, 0x9e, 0xa4, 0x68, 0xe6, 0xf5, 0x76, 0xac, 0x46, 0xae, 0xa6, + 0x72, 0x42, 0x1d, 0x99, 0xa7, 0xc0, 0xe4, 0xe8, 0x63, 0x2b, 0xe8, 0x80, + 0x45, 0x59, 0x04, 0xa2, 0x52, 0x7c, 0x94, 0x7f, 0xf0, 0x05, 0xca, 0x92, + 0x91, 0xac, 0x46, 0x75, 0x5c, 0xbe, 0x58, 0x4d, 0x08, 0x99, 0x80, 0x05, + 0xd6, 0x71, 0xe3, 0x9e, 0x7a, 0x48, 0xe3, 0xed, 0x7c, 0xd5, 0x0d, 0x67, + 0x63, 0x53, 0x35, 0xf1, 0xd0, 0x74, 0x37, 0x1a, 0x0e, 0x98, 0xee, 0x38, + 0x2b, 0x1d, 0x22, 0x13, 0x04, 0x05, 0x46, 0xc4, 0xfe, 0x89, 0xac, 0xef, + 0x63, 0x3f, 0xf5, 0xd2, 0xfa, 0x74, 0xad, 0xee, 0x94, 0x57, 0x4c, 0xc7, + 0x64, 0x5b, 0x2d, 0xfd, 0x7d, 0xff, 0x35, 0x52, 0x9d, 0x59, 0x68, 0xc8, + 0x8d, 0xde, 0x6a, 0x9e, 0x6b, 0x1a, 0x73, 0x9a, 0x6d, 0x8a, 0x0e, 0x97, + 0x64, 0x38, 0xe1, 0xf4, 0x39, 0xd4, 0xf9, 0xf4, 0x62, 0xd3, 0xcb, 0x8d, + 0x4d, 0x96, 0x07, 0x01, 0x10, 0x40, 0xca, 0x94, 0x46, 0x21, 0x3b, 0x70, + 0x03, 0xa4, 0xb4, 0x94, 0xdf, 0x26, 0x24, 0xdf, 0x3c, 0xb0, 0x62, 0xd0, + 0x7f, 0xe5, 0x3d, 0xd5, 0xca, 0x61, 0x49, 0x2d, 0xb2, 0x9a, 0xd5, 0x7e, + 0x72, 0x8d, 0x13, 0x94, 0xe2, 0x3a, 0x8f, 0xc3, 0xed, 0xb0, 0x99, 0xbf, + 0x35, 0x90, 0xd4, 0x25, 0x80, 0xa1, 0x47, 0x13, 0x76, 0x05, 0xc9, 0x62, + 0x3d, 0x0c, 0x07, 0xac, 0x2e, 0x2a, 0x71, 0xca, 0x3d, 0x46, 0x41, 0xee, + 0x78, 0x20, 0xc9, 0x19, 0x94, 0xff, 0xfb, 0xd4, 0x60, 0x25, 0x80, 0x08, + 0x24, 0x76, 0xbe, 0x43, 0x2f, 0x7b, 0x70, 0x79, 0x6e, 0xa8, 0x6e, 0x2d, + 0x63, 0x6f, 0x1f, 0x41, 0xd8, 0xfb, 0x0c, 0x3d, 0xed, 0xc1, 0xab, 0xb9, + 0x21, 0x30, 0x91, 0x0d, 0xb9, 0xce, 0x90, 0x3a, 0x0d, 0x03, 0xbd, 0x2c, + 0xc4, 0xc8, 0x5d, 0xb0, 0x86, 0x22, 0x91, 0x47, 0xe2, 0xca, 0x55, 0x4e, + 0xb2, 0x92, 0x5d, 0x1d, 0x67, 0x23, 0x92, 0x5f, 0x2d, 0xcf, 0x90, 0x6a, + 0x35, 0x32, 0x12, 0xf9, 0x99, 0xfa, 0xb5, 0x44, 0x87, 0x97, 0xd5, 0xd4, + 0x55, 0xb5, 0xca, 0x2d, 0x42, 0xb2, 0x8e, 0x4b, 0xb2, 0xb3, 0xa0, 0x15, + 0x2e, 0x0e, 0x27, 0x6c, 0x16, 0x35, 0x5b, 0x82, 0x81, 0xa9, 0x3e, 0xaf, + 0xa4, 0x37, 0xb1, 0x10, 0x06, 0xfa, 0x82, 0x03, 0x9a, 0x25, 0xe9, 0xf8, + 0xd2, 0xf9, 0x40, 0x7a, 0xc0, 0x3c, 0x4d, 0x85, 0x1c, 0xf1, 0xb6, 0xd5, + 0x05, 0xc1, 0x4e, 0xf1, 0xad, 0x91, 0x5e, 0x91, 0x62, 0x62, 0x65, 0xce, + 0xd1, 0xef, 0x2a, 0xf6, 0x56, 0x24, 0x93, 0x94, 0xec, 0x58, 0x55, 0xbc, + 0xbc, 0x8b, 0xd2, 0x21, 0x33, 0xa8, 0x68, 0x7e, 0xab, 0x1f, 0x30, 0x31, + 0x2d, 0x2a, 0xd4, 0x30, 0xad, 0x05, 0xcd, 0x10, 0x90, 0x4a, 0xc0, 0x78, + 0xe0, 0xf2, 0xee, 0x4e, 0xb2, 0x87, 0x43, 0x41, 0x23, 0x0f, 0xc5, 0x0a, + 0x39, 0x91, 0x5a, 0x64, 0x1c, 0xa9, 0x54, 0x8c, 0x76, 0xa1, 0xe4, 0x2e, + 0x04, 0x9d, 0x3e, 0x85, 0x07, 0xb4, 0xfa, 0x1d, 0x91, 0x34, 0x10, 0x33, + 0x98, 0xdf, 0x1c, 0x60, 0x13, 0x23, 0x07, 0x09, 0xcd, 0x47, 0x10, 0x03, + 0x65, 0x43, 0x42, 0x38, 0x56, 0x55, 0x0f, 0xf3, 0xe6, 0x82, 0x29, 0x20, + 0x9e, 0x1b, 0x94, 0xa7, 0x49, 0xb9, 0x76, 0x1c, 0xe1, 0x2b, 0xea, 0x87, + 0x60, 0xea, 0x16, 0x9e, 0x1d, 0xb5, 0xdb, 0xaf, 0x89, 0x97, 0xd5, 0x55, + 0xd7, 0xb2, 0xab, 0xae, 0xa2, 0x62, 0x7e, 0x2a, 0x9a, 0x5b, 0xc3, 0xe9, + 0xec, 0xe7, 0xb7, 0xaf, 0x35, 0xcf, 0x6a, 0x63, 0x66, 0xa5, 0x01, 0x8e, + 0x83, 0x34, 0xdf, 0xd1, 0x77, 0x24, 0xa2, 0x90, 0x8c, 0xc9, 0x8c, 0xf3, + 0x48, 0x86, 0x83, 0x31, 0x75, 0xcb, 0x13, 0xd2, 0xff, 0x7a, 0x67, 0xf6, + 0x72, 0x1b, 0x47, 0xcc, 0xfe, 0xff, 0x79, 0xff, 0x9d, 0x3a, 0xaa, 0x54, + 0xed, 0x90, 0xf3, 0xe7, 0xe7, 0xd5, 0x26, 0x96, 0xa2, 0xad, 0xc1, 0x8a, + 0xac, 0x31, 0x03, 0x63, 0x61, 0xe8, 0x8e, 0x10, 0x1d, 0x03, 0x03, 0xd2, + 0x00, 0x40, 0x88, 0x19, 0xf5, 0x1b, 0x98, 0xf7, 0x9b, 0xac, 0xc4, 0x0e, + 0xed, 0xb8, 0xce, 0x8b, 0xa5, 0x06, 0xb4, 0xd8, 0x16, 0x07, 0x4e, 0xae, + 0xf0, 0x7a, 0x30, 0x2f, 0x1a, 0x47, 0x43, 0x21, 0x6a, 0x84, 0x1a, 0x47, + 0xdb, 0xa4, 0xd2, 0x1c, 0xac, 0x36, 0x74, 0x2b, 0x85, 0xd0, 0xeb, 0x6e, + 0x21, 0x69, 0xf3, 0xfc, 0x86, 0xad, 0x2b, 0xde, 0xc7, 0x72, 0x44, 0x97, + 0xf3, 0x10, 0xc6, 0x4f, 0x43, 0x3f, 0xab, 0x07, 0x67, 0x3b, 0x3a, 0x5a, + 0x01, 0xd0, 0x84, 0x24, 0x99, 0x53, 0x0a, 0xa3, 0x85, 0x32, 0x57, 0xca, + 0x8c, 0x58, 0x65, 0x7c, 0x99, 0x79, 0x05, 0x17, 0x79, 0x18, 0xe7, 0x72, + 0x56, 0xc9, 0x24, 0x3a, 0x1d, 0x49, 0xc5, 0xdb, 0x04, 0xcb, 0x4a, 0xc8, + 0x2c, 0x0c, 0x26, 0x2b, 0x23, 0x9b, 0x2a, 0x55, 0xd3, 0x03, 0x0a, 0x75, + 0xf7, 0x80, 0xad, 0x71, 0x71, 0x51, 0xb1, 0x40, 0x58, 0x47, 0x24, 0xd2, + 0x05, 0xbd, 0xb9, 0x3a, 0xe4, 0xa8, 0x30, 0xdc, 0x9f, 0x51, 0x70, 0xab, + 0x6e, 0x64, 0x86, 0xe8, 0xdf, 0x2a, 0xf6, 0xf1, 0xd2, 0x15, 0x09, 0xcd, + 0x81, 0xec, 0xa7, 0x4a, 0x83, 0x0d, 0xcf, 0x1a, 0xd3, 0xcd, 0xef, 0x14, + 0x1a, 0x64, 0x3f, 0xd4, 0x2d, 0x0a, 0xd6, 0x66, 0x07, 0x17, 0x36, 0x16, + 0x26, 0x56, 0x76, 0x55, 0xda, 0x43, 0x6d, 0xea, 0x75, 0x0b, 0x74, 0x76, + 0xa8, 0xee, 0x6e, 0x4b, 0xb7, 0x97, 0x5a, 0x86, 0xe7, 0x2b, 0x6b, 0x13, + 0xc5, 0xb5, 0xd2, 0xd5, 0x17, 0x36, 0x57, 0x33, 0xac, 0xa9, 0x14, 0x4a, + 0x0c, 0xbc, 0x62, 0xba, 0x75, 0x44, 0xc6, 0x9a, 0x65, 0x54, 0x3e, 0x5c, + 0xb7, 0x1f, 0x0a, 0x66, 0x13, 0x48, 0xd4, 0x2d, 0x49, 0xe8, 0xf4, 0x94, + 0x63, 0x44, 0xe3, 0x26, 0x90, 0xc9, 0xd2, 0x05, 0x74, 0xca, 0x1c, 0x95, + 0xa4, 0x8b, 0x66, 0xaa, 0x9f, 0xe2, 0x4e, 0x38, 0x25, 0x04, 0x0c, 0x97, + 0x08, 0x26, 0xd5, 0xa8, 0xa3, 0x2b, 0xc8, 0xc5, 0x6a, 0x8b, 0x60, 0x03, + 0x35, 0xa6, 0xab, 0x69, 0x1c, 0xf4, 0x6e, 0xbd, 0xe8, 0x6b, 0xaa, 0x21, + 0x5f, 0xcc, 0xf2, 0x6e, 0xcb, 0x9d, 0x5c, 0xbc, 0xbb, 0xca, 0x7c, 0x9a, + 0xdb, 0xd8, 0xd6, 0xc4, 0x8d, 0x76, 0x28, 0x9c, 0xee, 0x65, 0x9e, 0x9a, + 0x6d, 0x6c, 0x26, 0x6c, 0xdb, 0xca, 0xea, 0xf3, 0x65, 0xdd, 0xbd, 0x37, + 0xf5, 0x44, 0x90, 0xa6, 0x69, 0xc3, 0x3c, 0xe7, 0xeb, 0xce, 0xdf, 0xfc, + 0xbb, 0x3c, 0xbf, 0x43, 0x62, 0x24, 0xa5, 0xd4, 0xac, 0x40, 0x59, 0x40, + 0xee, 0x8e, 0x40, 0xcc, 0x11, 0x28, 0x24, 0x39, 0x72, 0x01, 0xc0, 0x86, + 0x32, 0x42, 0x47, 0xa1, 0x6a, 0x3f, 0x32, 0x19, 0x4a, 0x3d, 0x33, 0x98, + 0x9b, 0x28, 0xaa, 0xd7, 0x98, 0x3d, 0x64, 0xe8, 0x66, 0x97, 0xf6, 0x04, + 0xea, 0x0d, 0xc1, 0x78, 0xb0, 0x64, 0xd5, 0x4f, 0x44, 0x52, 0x1f, 0x62, + 0xdc, 0x84, 0xb4, 0xca, 0x5c, 0x88, 0x25, 0x10, 0xc6, 0xf2, 0x1f, 0x82, + 0xfc, 0xa1, 0x3a, 0xd5, 0xc9, 0x41, 0xea, 0x3c, 0x85, 0xcd, 0x98, 0xdf, + 0x34, 0x09, 0x3b, 0x3b, 0x69, 0xff, 0xfb, 0xd4, 0x60, 0x22, 0x0a, 0x07, + 0xed, 0x76, 0xbe, 0x2b, 0x0f, 0x7b, 0x70, 0x6e, 0x4e, 0x18, 0x7e, 0x31, + 0x02, 0x6f, 0x5f, 0x91, 0xda, 0xf9, 0x0c, 0xbd, 0xed, 0xc1, 0xc3, 0x9a, + 0x62, 0xbc, 0xf4, 0x0d, 0x75, 0xab, 0x23, 0x1d, 0x09, 0xab, 0x31, 0xf6, + 0xc0, 0xb6, 0x8a, 0x70, 0x59, 0x4c, 0x3b, 0x55, 0x51, 0x54, 0xc6, 0x76, + 0xd5, 0x4f, 0x98, 0x28, 0x41, 0xce, 0x77, 0x1c, 0x6f, 0x11, 0xc8, 0xc8, + 0xcd, 0xd0, 0xdc, 0x90, 0xf4, 0x0a, 0x70, 0xe7, 0x32, 0x08, 0x5a, 0x41, + 0xce, 0x90, 0x95, 0x8b, 0xa7, 0x14, 0x31, 0x8d, 0x18, 0xce, 0xb0, 0xa9, + 0x8f, 0x05, 0x72, 0xe7, 0x1e, 0x12, 0xad, 0xa8, 0xbe, 0x9b, 0x88, 0x74, + 0x03, 0xf2, 0x8a, 0xd6, 0x96, 0xf5, 0x62, 0xc9, 0xd6, 0xfe, 0x47, 0x24, + 0xc2, 0x29, 0x0a, 0x79, 0x05, 0x5b, 0x73, 0x95, 0xca, 0x79, 0x1d, 0x37, + 0x31, 0x32, 0xbf, 0x40, 0xb3, 0xb5, 0x2a, 0x11, 0xed, 0xcd, 0x8d, 0xd0, + 0x52, 0x0a, 0x35, 0x03, 0x52, 0x9d, 0x59, 0x1f, 0xee, 0x48, 0x9d, 0x0d, + 0xa2, 0xa2, 0x77, 0x1a, 0x43, 0x75, 0x65, 0x33, 0x7a, 0xe1, 0x74, 0xb9, + 0x57, 0x41, 0xac, 0x16, 0xa7, 0x56, 0x2d, 0x94, 0x58, 0x5d, 0xc1, 0xa4, + 0x74, 0xe2, 0xae, 0x23, 0x29, 0xd4, 0xe2, 0xe2, 0x88, 0x78, 0xa1, 0x42, + 0xd5, 0xcd, 0x06, 0x93, 0x04, 0xf3, 0x21, 0xb1, 0x4a, 0x2b, 0x31, 0x28, + 0xc7, 0x59, 0xdc, 0x49, 0xca, 0x12, 0x38, 0x8b, 0x13, 0x0d, 0x92, 0xa0, + 0xa1, 0x83, 0x68, 0xc0, 0x00, 0x81, 0x09, 0x52, 0x38, 0x5a, 0x20, 0x1a, + 0x33, 0x1c, 0xba, 0xa1, 0xb1, 0xf2, 0x0c, 0xcd, 0x6a, 0xb1, 0x30, 0xbd, + 0x58, 0xf2, 0x65, 0x1c, 0x20, 0xf2, 0xb0, 0xf0, 0x50, 0x15, 0xe5, 0x21, + 0x96, 0x2b, 0xc7, 0x10, 0x8b, 0x1d, 0x71, 0xc7, 0x51, 0x7f, 0xdf, 0xcf, + 0xff, 0x1c, 0xca, 0x25, 0x55, 0xb3, 0x82, 0x16, 0x62, 0x99, 0xd2, 0x24, + 0xea, 0xc2, 0x2c, 0x72, 0x66, 0x23, 0x0a, 0x9a, 0x8a, 0x46, 0xab, 0xaf, + 0x06, 0xd5, 0x64, 0x67, 0x7a, 0xfa, 0xe5, 0xa6, 0x94, 0xbe, 0xe8, 0xda, + 0xaa, 0xb9, 0x1d, 0x55, 0xda, 0x42, 0x96, 0x8e, 0x7f, 0x64, 0xa7, 0x4d, + 0xd2, 0x84, 0xeb, 0x90, 0xd7, 0xd9, 0xe8, 0x64, 0xfd, 0x7f, 0x42, 0x24, + 0x8d, 0x31, 0x1f, 0x42, 0x14, 0x87, 0x39, 0x00, 0x94, 0xbc, 0x55, 0x08, + 0xb6, 0x60, 0x63, 0x19, 0x53, 0x92, 0x2f, 0x42, 0xbd, 0x6e, 0x57, 0x19, + 0x62, 0xfe, 0x84, 0x3e, 0xce, 0xf3, 0x4f, 0x80, 0x99, 0xd0, 0xfb, 0x45, + 0x99, 0x69, 0x43, 0x71, 0x68, 0x90, 0xa9, 0xcf, 0x14, 0xf1, 0xe8, 0x3c, + 0x8f, 0xd8, 0xe3, 0xd2, 0x5b, 0x14, 0x34, 0x7e, 0x88, 0x20, 0xa9, 0x33, + 0x44, 0x9b, 0x21, 0xca, 0x77, 0x36, 0x46, 0x03, 0xa9, 0xf9, 0x7c, 0x54, + 0xc6, 0x1e, 0x6a, 0x36, 0xf5, 0x61, 0xc4, 0x86, 0x37, 0x2e, 0x93, 0x68, + 0xa4, 0x31, 0x34, 0xb0, 0x8b, 0x64, 0x42, 0x50, 0xa3, 0xa9, 0x9d, 0x58, + 0x5e, 0xe1, 0xb6, 0x3d, 0x41, 0x42, 0x82, 0xce, 0xf1, 0x6d, 0x95, 0x50, + 0x6f, 0x42, 0x24, 0xef, 0x15, 0x6d, 0x0a, 0x05, 0x34, 0xa7, 0x53, 0x36, + 0x59, 0x95, 0xa7, 0x8b, 0x4b, 0x1b, 0x8c, 0x8c, 0x2c, 0xaf, 0x8e, 0x4b, + 0xa3, 0xe1, 0x20, 0x34, 0x5f, 0xf9, 0x6e, 0x43, 0x12, 0xa5, 0x8a, 0xec, + 0xb4, 0x75, 0x96, 0xd6, 0xfd, 0xa4, 0xd4, 0xaf, 0x76, 0xa4, 0x61, 0x2f, + 0xac, 0xc5, 0xe0, 0xca, 0x67, 0xa9, 0x7c, 0x57, 0xb2, 0x9f, 0x6c, 0x71, + 0x2c, 0xf9, 0x8e, 0x02, 0x3d, 0x0d, 0x6a, 0xa4, 0x25, 0xd9, 0x95, 0x09, + 0x51, 0x33, 0xc6, 0xf6, 0x3e, 0xba, 0x76, 0xf6, 0x2b, 0x3c, 0x75, 0xa5, + 0xd4, 0x76, 0x14, 0x29, 0xf4, 0x35, 0x12, 0x35, 0x92, 0x6a, 0xc1, 0x9d, + 0xc1, 0x81, 0x9d, 0xae, 0x02, 0xe3, 0x72, 0xab, 0x1c, 0x14, 0xac, 0xea, + 0xe7, 0x4f, 0x9b, 0x1e, 0x4f, 0x2b, 0x2c, 0x48, 0x4c, 0xf1, 0xd4, 0xb2, + 0xc5, 0x72, 0x76, 0x96, 0x47, 0xa1, 0xaa, 0x12, 0xde, 0x78, 0xae, 0x13, + 0xf0, 0x10, 0xe7, 0x85, 0x4a, 0x34, 0xff, 0x99, 0x0c, 0x18, 0x90, 0x48, + 0xc8, 0x6e, 0x8f, 0x49, 0x36, 0x15, 0xf1, 0xcc, 0x35, 0xcb, 0x62, 0x81, + 0xaf, 0x40, 0x71, 0x2f, 0x4b, 0x54, 0x88, 0xe5, 0x92, 0xb4, 0x9f, 0xfe, + 0x0a, 0x32, 0x0a, 0x1e, 0xc4, 0xac, 0x8e, 0x1c, 0x07, 0x2b, 0xb0, 0xa0, + 0x9c, 0x4c, 0x17, 0x03, 0xc0, 0xc0, 0xda, 0xf5, 0xbd, 0xfd, 0x35, 0x53, + 0x75, 0x2c, 0xf3, 0xdd, 0xd5, 0x85, 0xcd, 0x5a, 0x33, 0xd2, 0xf8, 0x7a, + 0xa1, 0xad, 0x72, 0x8c, 0x84, 0xdc, 0xee, 0x0a, 0x83, 0xb4, 0x66, 0x08, + 0x4e, 0x66, 0xa0, 0x58, 0x66, 0x45, 0xbd, 0xcc, 0x5a, 0xbb, 0x05, 0xa7, + 0x08, 0xe7, 0xab, 0xd6, 0x17, 0xd0, 0xcc, 0xdd, 0xef, 0xdc, 0x04, 0x75, + 0xec, 0x0e, 0xeb, 0x45, 0x6b, 0x57, 0x3d, 0x21, 0x18, 0x5a, 0xa1, 0xa9, + 0xe6, 0x48, 0xe8, 0x86, 0x25, 0x33, 0xff, 0xfd, 0xdf, 0x6f, 0x73, 0x59, + 0xda, 0x4b, 0x1f, 0xcf, 0xa3, 0x25, 0xea, 0x00, 0x01, 0x80, 0x00, 0xe5, + 0x39, 0x03, 0xc5, 0x3a, 0xbd, 0xce, 0x9b, 0x4b, 0x52, 0xe7, 0xce, 0xdb, + 0xa0, 0xc2, 0x9a, 0x54, 0x11, 0x30, 0x4e, 0xd3, 0xc8, 0x79, 0xc0, 0x8a, + 0x2f, 0x73, 0xb4, 0x39, 0x0f, 0xb7, 0x32, 0xc2, 0x4d, 0x54, 0xe3, 0x19, + 0xd1, 0x26, 0x8e, 0x56, 0x9f, 0xaf, 0x95, 0x64, 0x70, 0xfd, 0x30, 0x4b, + 0x19, 0x3e, 0x95, 0x84, 0xc8, 0x42, 0xcb, 0xd9, 0x25, 0x3f, 0x48, 0x41, + 0xa4, 0x59, 0xa1, 0x0a, 0x84, 0xff, 0xfb, 0xd4, 0x60, 0x23, 0x00, 0x08, + 0x36, 0x76, 0x3d, 0xc3, 0x2f, 0x7b, 0x70, 0x73, 0x2e, 0xb8, 0x6d, 0x3c, + 0xe3, 0x6e, 0x1e, 0x25, 0xda, 0xff, 0x2c, 0x3d, 0x8d, 0xc1, 0xc1, 0x22, + 0xa2, 0x7c, 0xf4, 0x0d, 0x75, 0x2c, 0x91, 0x2d, 0xb7, 0x17, 0xfb, 0x3a, + 0x4a, 0xdd, 0x72, 0xd6, 0xa5, 0x90, 0x95, 0x2a, 0x49, 0x4b, 0x1a, 0xad, + 0x09, 0x27, 0x2d, 0xd4, 0x43, 0x50, 0xf5, 0xca, 0x58, 0x9e, 0xc4, 0xa9, + 0xe6, 0x78, 0x64, 0xdd, 0xcc, 0x06, 0x13, 0xe8, 0xb0, 0xa7, 0xd4, 0xb3, + 0xb7, 0x33, 0xa9, 0x61, 0x1c, 0xf0, 0x97, 0x94, 0xa5, 0xbc, 0xdc, 0x44, + 0xb5, 0x1f, 0x8f, 0x24, 0x66, 0x75, 0x75, 0x1a, 0x41, 0xfa, 0x9e, 0x08, + 0xde, 0x3e, 0x91, 0xcc, 0x49, 0xd7, 0xc8, 0xd4, 0x25, 0xb5, 0x43, 0x93, + 0x7e, 0x34, 0x44, 0x2a, 0xaa, 0xb7, 0x24, 0xf4, 0x55, 0x6e, 0x11, 0x2a, + 0xc5, 0x43, 0x03, 0x22, 0x0d, 0x40, 0x8b, 0x42, 0xdb, 0xde, 0x2b, 0xd8, + 0x59, 0xae, 0xf1, 0xb9, 0x8d, 0x70, 0xda, 0xda, 0xf5, 0x73, 0x85, 0x2a, + 0x1f, 0x44, 0xfe, 0xd3, 0xeb, 0x10, 0x62, 0x35, 0x31, 0x23, 0x15, 0xf5, + 0x55, 0x21, 0xc9, 0x33, 0xd2, 0x65, 0xe8, 0x2f, 0xd0, 0x2d, 0xd0, 0xde, + 0x48, 0xc2, 0x9d, 0x74, 0xc2, 0xbb, 0x62, 0x4f, 0xa5, 0x90, 0xe7, 0x12, + 0xe0, 0x71, 0x21, 0xb3, 0x28, 0xe5, 0x3f, 0x13, 0xe9, 0xc4, 0x41, 0xa6, + 0x74, 0x94, 0x67, 0x64, 0x03, 0xf5, 0x4a, 0xdc, 0x1c, 0x6a, 0xc3, 0x94, + 0xf5, 0x2d, 0xa5, 0x8c, 0xc7, 0x49, 0x88, 0x10, 0x79, 0x01, 0xcd, 0x2d, + 0x0c, 0x6e, 0x0f, 0x73, 0xed, 0x90, 0x0b, 0xf7, 0xbb, 0xa2, 0xd2, 0x92, + 0x28, 0xdf, 0xff, 0x0f, 0xcf, 0xa4, 0x24, 0x75, 0x42, 0x65, 0x43, 0xce, + 0x0e, 0x9e, 0x64, 0x08, 0x8b, 0x11, 0x09, 0xca, 0x04, 0xef, 0x6b, 0xf5, + 0x26, 0xd4, 0x36, 0x8d, 0xbb, 0xfa, 0x57, 0x69, 0x59, 0xb5, 0x98, 0x7b, + 0x5a, 0x48, 0x6e, 0x91, 0xcf, 0xbe, 0x65, 0x9e, 0x4e, 0x88, 0xf9, 0x86, + 0x42, 0x88, 0xfd, 0x3f, 0xb7, 0xff, 0xfb, 0xcf, 0xec, 0x77, 0x89, 0x4f, + 0xcc, 0x68, 0x4c, 0x62, 0xab, 0x70, 0x74, 0xf9, 0x9d, 0x42, 0x86, 0xed, + 0xf5, 0x73, 0x9a, 0xfb, 0x67, 0x99, 0xc4, 0x99, 0x9a, 0x27, 0xcc, 0xe9, + 0x94, 0x79, 0x63, 0x6b, 0x3f, 0xcb, 0x6e, 0x1e, 0x99, 0xa4, 0xa5, 0x44, + 0x86, 0x62, 0x27, 0x57, 0x0a, 0xef, 0x44, 0x0b, 0x45, 0x6a, 0xb5, 0x60, + 0xaa, 0x10, 0x2f, 0x0a, 0x95, 0x54, 0x6a, 0x84, 0x92, 0x08, 0x25, 0x82, + 0xdd, 0x27, 0x09, 0x93, 0x3c, 0x7b, 0x6e, 0x2f, 0x2b, 0xee, 0xe8, 0xbe, + 0x2a, 0x71, 0xbf, 0x0c, 0xf1, 0x70, 0x64, 0x57, 0xb7, 0x9f, 0x87, 0x2a, + 0x70, 0xb7, 0x1a, 0x4b, 0x96, 0x03, 0x29, 0x81, 0x20, 0x5e, 0x55, 0xc6, + 0xf4, 0x6d, 0x25, 0xcf, 0x0a, 0xa7, 0x54, 0xcc, 0x8b, 0x71, 0x9c, 0xe7, + 0x5d, 0xa1, 0x2a, 0x85, 0x0a, 0xa9, 0xc8, 0xb6, 0x1c, 0xa4, 0x8d, 0x53, + 0x11, 0x74, 0xaf, 0x79, 0x95, 0x59, 0x09, 0x49, 0xc9, 0x39, 0x78, 0x92, + 0x07, 0xb8, 0x48, 0x17, 0x2b, 0x2d, 0x87, 0x4b, 0xcb, 0x4a, 0x02, 0x61, + 0x24, 0x7f, 0x18, 0x21, 0x88, 0x24, 0xa2, 0x6d, 0x8e, 0xc9, 0x11, 0x8a, + 0x07, 0x75, 0xc4, 0xc8, 0x4a, 0xe3, 0xb9, 0x80, 0x11, 0x15, 0x2e, 0x1a, + 0x09, 0xc3, 0xbb, 0x56, 0x29, 0x17, 0xcc, 0xb0, 0x94, 0x3e, 0x19, 0x88, + 0xab, 0x03, 0xb7, 0x06, 0xa1, 0xbf, 0x12, 0x58, 0x2d, 0xe0, 0x9c, 0x91, + 0x79, 0x6c, 0x9e, 0xa5, 0x01, 0x71, 0x5a, 0x05, 0xc7, 0x0f, 0x97, 0x4a, + 0xa7, 0x40, 0x5d, 0xc5, 0x44, 0xb5, 0xa7, 0xd4, 0x52, 0x5e, 0x4a, 0x76, + 0x71, 0xc6, 0xb1, 0x9f, 0x95, 0x53, 0x90, 0x89, 0x06, 0x29, 0x44, 0x7b, + 0x2e, 0x87, 0x1b, 0x42, 0xbb, 0x0f, 0x2b, 0x6a, 0x9a, 0xc7, 0xc2, 0x7f, + 0x3a, 0xed, 0x16, 0xfe, 0x2a, 0x3e, 0x7e, 0x25, 0xae, 0x24, 0xbb, 0xf0, + 0x45, 0x17, 0xaf, 0x64, 0xf9, 0xa8, 0x09, 0xe4, 0xc1, 0xcc, 0xb6, 0xd2, + 0x93, 0xd8, 0xca, 0xa9, 0x87, 0x08, 0x8b, 0xc2, 0x03, 0x48, 0x07, 0xa1, + 0xb1, 0x2c, 0x78, 0x30, 0x25, 0x89, 0x61, 0x48, 0x19, 0x2e, 0x01, 0x11, + 0x2a, 0x2f, 0x03, 0x59, 0x79, 0x57, 0x54, 0x46, 0xe3, 0x6d, 0x34, 0xbf, + 0x91, 0xeb, 0x5a, 0x1c, 0x0e, 0xe5, 0x42, 0xe8, 0xd3, 0x36, 0x10, 0x98, + 0x91, 0xe0, 0xb8, 0x1a, 0x98, 0xb3, 0x94, 0xf3, 0xbd, 0xdd, 0x2a, 0x7d, + 0x47, 0xad, 0xf5, 0xd2, 0xa1, 0x7e, 0x0d, 0x61, 0x9f, 0x7e, 0x9f, 0x9e, + 0x6f, 0x8f, 0xc8, 0x52, 0xae, 0x46, 0x77, 0x32, 0xd7, 0xb7, 0x3f, 0x6c, + 0x62, 0x34, 0x33, 0x57, 0x65, 0x33, 0xcc, 0xe9, 0xbe, 0xfa, 0x50, 0xca, + 0x0c, 0xd2, 0x4c, 0x77, 0xb4, 0x60, 0x34, 0x84, 0x74, 0x1c, 0xde, 0x1b, + 0x57, 0x47, 0x33, 0x35, 0x6c, 0x9b, 0x99, 0xbb, 0xd5, 0xea, 0xfd, 0xdd, + 0x56, 0xdd, 0xd8, 0x4c, 0x08, 0xff, 0xfe, 0xfb, 0xfb, 0xb7, 0xba, 0x07, + 0x34, 0xde, 0x0a, 0x92, 0x17, 0x26, 0xea, 0x03, 0x10, 0x05, 0x68, 0x88, + 0xea, 0xa3, 0x8a, 0x0d, 0x0f, 0x9c, 0x85, 0xe8, 0xdb, 0x4a, 0x98, 0x33, + 0x2e, 0x6e, 0x14, 0x6f, 0xb2, 0xe8, 0x31, 0xc9, 0x79, 0x6e, 0x1b, 0x28, + 0xb2, 0x16, 0xc2, 0x3c, 0xe6, 0x46, 0x19, 0x87, 0x92, 0x9d, 0x18, 0x8c, + 0x4e, 0x22, 0x4d, 0xac, 0x9b, 0xa8, 0xf3, 0x84, 0xba, 0x90, 0x93, 0xc9, + 0x85, 0x0b, 0x80, 0x42, 0x12, 0x94, 0x27, 0x09, 0xf5, 0x22, 0xb9, 0x95, + 0x1a, 0x5b, 0xcf, 0x9d, 0x76, 0xff, 0xfb, 0xd4, 0x60, 0x23, 0x00, 0x08, + 0x10, 0x75, 0xbd, 0xab, 0x4f, 0x7b, 0x72, 0x78, 0x28, 0x68, 0x9f, 0x25, + 0xe3, 0x5d, 0x5f, 0x11, 0xda, 0xf8, 0xad, 0x3d, 0xed, 0xc1, 0xf7, 0x3a, + 0xe1, 0x78, 0xc5, 0x8d, 0xbc, 0x35, 0xb4, 0x20, 0xe8, 0x46, 0x4a, 0x97, + 0x3e, 0x98, 0x92, 0xd0, 0x11, 0x6d, 0xc6, 0xe1, 0xd7, 0x32, 0xed, 0x22, + 0x8f, 0x4e, 0x22, 0x15, 0xd0, 0x95, 0x29, 0x33, 0x91, 0x73, 0x33, 0x3b, + 0x8a, 0x74, 0xf6, 0x57, 0xa5, 0x9b, 0x1b, 0x95, 0x30, 0x0d, 0x87, 0x18, + 0x4b, 0x83, 0x2d, 0xb0, 0xd4, 0x95, 0x61, 0x52, 0xa3, 0x55, 0xb8, 0x99, + 0x12, 0xe3, 0x2a, 0x75, 0x2b, 0x31, 0xfc, 0x72, 0x1e, 0x47, 0x5c, 0x56, + 0xd6, 0x58, 0x7d, 0x96, 0x0a, 0x81, 0xf4, 0xd4, 0x8c, 0xd6, 0xba, 0x8d, + 0xa5, 0x64, 0xe9, 0x53, 0xfd, 0x0f, 0x45, 0x42, 0x49, 0x6e, 0x01, 0x28, + 0xbb, 0xf5, 0x0b, 0xa6, 0xa4, 0xba, 0x1a, 0x7f, 0xa9, 0x72, 0xd7, 0xb4, + 0x8c, 0x69, 0x14, 0xe9, 0xf8, 0x70, 0x34, 0xc0, 0xce, 0xe0, 0xed, 0xc6, + 0x02, 0xa1, 0x0e, 0x67, 0x96, 0x1b, 0x84, 0x67, 0xe9, 0xd3, 0x9d, 0x8d, + 0x5e, 0xc2, 0xaf, 0x2d, 0x89, 0x65, 0x7b, 0x6a, 0x85, 0x74, 0xca, 0xfe, + 0x3a, 0x3d, 0xbb, 0x27, 0xe5, 0xe2, 0x33, 0xa7, 0x5d, 0x39, 0xa9, 0xd5, + 0x8a, 0x62, 0x4a, 0xd4, 0x81, 0x1f, 0xa2, 0xc0, 0xa7, 0x54, 0xbf, 0x2e, + 0xc3, 0x08, 0xba, 0xaa, 0x8d, 0x77, 0xa6, 0xfa, 0x35, 0x08, 0x20, 0x63, + 0xa4, 0x7e, 0x9b, 0xc0, 0xcd, 0x49, 0x89, 0x45, 0x1b, 0x51, 0x24, 0x3f, + 0x15, 0x02, 0x46, 0x56, 0xab, 0x42, 0x5b, 0x25, 0x91, 0x34, 0xbf, 0xea, + 0x0f, 0x4c, 0x17, 0xc0, 0x36, 0xa8, 0xa8, 0x85, 0x44, 0x2b, 0xa8, 0x50, + 0xc3, 0x3b, 0x0c, 0x8d, 0x5f, 0x3f, 0xdf, 0xd2, 0xf5, 0xd4, 0x7a, 0xfd, + 0xe3, 0x51, 0x1f, 0x67, 0xe3, 0x11, 0xa9, 0x66, 0x73, 0x89, 0xd8, 0xce, + 0xab, 0xc0, 0x8c, 0x82, 0x87, 0x30, 0xc4, 0x32, 0x04, 0x28, 0xf9, 0x31, + 0x2e, 0x13, 0xdd, 0x5b, 0x77, 0x76, 0x94, 0xd1, 0x98, 0x90, 0xf3, 0xb1, + 0x33, 0xef, 0x4c, 0xd8, 0xbd, 0x8c, 0xc7, 0x5a, 0xf1, 0x25, 0xca, 0x25, + 0xa6, 0x0e, 0x03, 0x69, 0x53, 0x76, 0xa9, 0xbf, 0x86, 0x0f, 0x24, 0x07, + 0x24, 0x17, 0x7a, 0x9f, 0xcf, 0xee, 0xc4, 0x77, 0x0b, 0x8e, 0x85, 0xff, + 0xde, 0xa9, 0xfb, 0x6c, 0x7a, 0xfe, 0xa3, 0xbb, 0xcf, 0x60, 0x6a, 0xc9, + 0x47, 0x05, 0x40, 0x23, 0x2b, 0x29, 0x6c, 0x57, 0x6d, 0xa1, 0x3a, 0x0d, + 0xf4, 0x79, 0xf8, 0x96, 0x41, 0xce, 0x9a, 0xe5, 0x8a, 0xd4, 0x1e, 0x4d, + 0xed, 0xe9, 0x53, 0x88, 0xbe, 0x97, 0x84, 0x41, 0x7d, 0x3f, 0x64, 0x54, + 0x1a, 0x68, 0x4e, 0x14, 0x49, 0xe8, 0xa6, 0x43, 0x61, 0x33, 0x35, 0x51, + 0x67, 0xd9, 0x75, 0x70, 0x17, 0x65, 0x61, 0x07, 0x62, 0x62, 0x34, 0x18, + 0x4e, 0x65, 0x53, 0x4a, 0x75, 0x58, 0x90, 0x2f, 0x8a, 0x03, 0x2e, 0x7a, + 0x93, 0xe4, 0x29, 0x4e, 0xdd, 0x05, 0xa5, 0x0c, 0x60, 0x49, 0x96, 0xc2, + 0x91, 0xbd, 0x5c, 0x8d, 0x51, 0x24, 0x99, 0x99, 0x9f, 0x21, 0x8a, 0xc7, + 0xc7, 0x22, 0x69, 0x5c, 0xdf, 0x15, 0x99, 0x65, 0xa9, 0x40, 0x75, 0x23, + 0x9b, 0x4e, 0x56, 0x35, 0x42, 0x58, 0xfd, 0xaa, 0x2a, 0x57, 0x25, 0x42, + 0x3d, 0x38, 0xb6, 0xda, 0x7e, 0x38, 0x20, 0xe0, 0xaa, 0xe7, 0xd2, 0xbf, + 0x5b, 0x6e, 0x7a, 0xb5, 0x56, 0xe8, 0x3a, 0x61, 0x40, 0xb7, 0x52, 0x6d, + 0xb1, 0xab, 0x58, 0x11, 0xd7, 0x78, 0xcc, 0xcc, 0xfa, 0x66, 0xd7, 0xd0, + 0x1d, 0x9f, 0xae, 0x6b, 0x0c, 0x70, 0x25, 0xc3, 0x0b, 0x23, 0x2e, 0xe7, + 0x54, 0xb0, 0xb7, 0x43, 0x6e, 0x8a, 0xa6, 0x4b, 0xb2, 0x33, 0x41, 0x7f, + 0x11, 0x52, 0xde, 0xcc, 0xea, 0x3d, 0x13, 0x4b, 0xb6, 0xdc, 0x55, 0xbd, + 0xdb, 0xa8, 0x0b, 0xad, 0x42, 0x84, 0xc7, 0xb7, 0x99, 0x4c, 0xbc, 0x7a, + 0x9c, 0x7a, 0xaf, 0x4e, 0x2d, 0xe5, 0x6e, 0xe8, 0x97, 0xf5, 0x2e, 0xb2, + 0x9f, 0xb2, 0xae, 0x9d, 0x1f, 0xa9, 0xc4, 0x03, 0x41, 0xc8, 0x84, 0x51, + 0x10, 0xa3, 0x8c, 0xa5, 0x90, 0xf2, 0x27, 0x01, 0x78, 0x39, 0x4b, 0x19, + 0x09, 0x30, 0x8a, 0xd0, 0x4e, 0x0b, 0x99, 0xa6, 0xa0, 0xc0, 0x02, 0x31, + 0xaa, 0x21, 0x43, 0xcc, 0xa8, 0x84, 0xcc, 0xd8, 0xa4, 0x68, 0x25, 0xaf, + 0x12, 0x63, 0x05, 0x96, 0x22, 0x3b, 0x69, 0x35, 0x09, 0xcb, 0x4d, 0x10, + 0x00, 0x12, 0x49, 0x15, 0x11, 0x0b, 0x47, 0xf2, 0xce, 0xd6, 0x6d, 0xb1, + 0xdc, 0xde, 0xce, 0xeb, 0xbe, 0x5a, 0xff, 0xae, 0xba, 0xee, 0x61, 0xb1, + 0xf6, 0x1c, 0x6b, 0x4d, 0x42, 0xac, 0xfc, 0x89, 0xdc, 0xa9, 0xba, 0xb1, + 0x14, 0xa3, 0x16, 0xab, 0xfd, 0x44, 0x3f, 0x6c, 0xc9, 0x61, 0x1d, 0xfc, + 0x58, 0x58, 0xef, 0xd0, 0xce, 0x44, 0xc5, 0x51, 0x9c, 0xb8, 0xe9, 0x0c, + 0xa2, 0x83, 0xcb, 0xab, 0x5c, 0xee, 0xb0, 0xf2, 0xb7, 0x29, 0xec, 0x73, + 0x3a, 0xd7, 0xff, 0xfc, 0x8f, 0x73, 0x4f, 0x8f, 0xfd, 0xe3, 0xb4, 0x58, + 0x84, 0x99, 0x0c, 0x60, 0x00, 0xcd, 0x48, 0x30, 0x67, 0x19, 0x09, 0xae, + 0x78, 0xf3, 0x14, 0xb5, 0x05, 0xc2, 0xd6, 0xea, 0x08, 0xcd, 0x23, 0xc9, + 0x85, 0xd2, 0x26, 0xcd, 0x0b, 0x29, 0x74, 0x1b, 0x8c, 0xb5, 0xf6, 0xc6, + 0x1b, 0xb1, 0xd2, 0xd0, 0xc8, 0x9c, 0x38, 0x12, 0xc4, 0x86, 0x24, 0x06, + 0x77, 0x8a, 0x65, 0x09, 0x7b, 0x34, 0xd2, 0xc9, 0x83, 0x9d, 0x2e, 0xd8, + 0xc2, 0x6a, 0xb0, 0xb7, 0x1f, 0xff, 0xfb, 0xd4, 0x60, 0x18, 0x80, 0x07, + 0x7b, 0x76, 0x3e, 0xab, 0x2f, 0x7b, 0x70, 0x70, 0xce, 0xa8, 0x6c, 0x2c, + 0x63, 0x6f, 0x1f, 0x4d, 0xda, 0xfb, 0x8c, 0x3d, 0xed, 0xc1, 0xee, 0xa7, + 0xa2, 0x34, 0xb4, 0x19, 0x7d, 0x8a, 0x16, 0xab, 0x21, 0xcf, 0x09, 0xea, + 0x35, 0x3a, 0xf0, 0xd3, 0x66, 0x88, 0x26, 0x67, 0xf3, 0x82, 0x1e, 0x89, + 0x47, 0x2e, 0xec, 0xc0, 0x6e, 0x28, 0x5d, 0x9e, 0x99, 0x7c, 0xd8, 0xf9, + 0x52, 0xb4, 0xbb, 0x50, 0x3b, 0x53, 0xb2, 0xc2, 0x7c, 0x81, 0x65, 0x53, + 0x16, 0x35, 0x21, 0xfe, 0x8a, 0x54, 0xb7, 0x22, 0x5e, 0x3e, 0x51, 0xb3, + 0x41, 0x73, 0x7e, 0xfd, 0x7d, 0x80, 0xef, 0x71, 0x57, 0xa7, 0x18, 0xdc, + 0xe2, 0xae, 0x57, 0x6a, 0x26, 0x76, 0x88, 0xa8, 0x7a, 0xdb, 0xc7, 0x3d, + 0xca, 0xcb, 0xac, 0xab, 0x9b, 0xde, 0xe9, 0x29, 0x32, 0x96, 0x0c, 0x15, + 0x74, 0x91, 0x63, 0xae, 0xde, 0xb4, 0x32, 0xa5, 0xee, 0x72, 0x52, 0x0c, + 0xb1, 0x54, 0xd7, 0xf1, 0x62, 0x32, 0xc7, 0x80, 0x8f, 0x5b, 0x54, 0xc6, + 0x60, 0x57, 0x77, 0xa9, 0xd8, 0x13, 0x39, 0xb5, 0xbf, 0x59, 0x62, 0xc4, + 0x57, 0x90, 0x20, 0xcd, 0x0e, 0x0e, 0xd0, 0xcf, 0x22, 0xe6, 0x7b, 0xb5, + 0x38, 0xcf, 0x0d, 0xb9, 0x8e, 0x3c, 0x48, 0x7d, 0x85, 0xc5, 0xba, 0x15, + 0x17, 0x51, 0x1d, 0x32, 0xc5, 0x5a, 0x5d, 0x23, 0xd0, 0xc4, 0xd5, 0x4d, + 0xe7, 0xeb, 0xca, 0xa2, 0xdc, 0x56, 0x33, 0x42, 0x4f, 0x25, 0x0b, 0x27, + 0xf3, 0x21, 0xac, 0xa8, 0xb2, 0x30, 0x98, 0x4d, 0x5d, 0x79, 0xb1, 0x38, + 0x3a, 0x0f, 0xc8, 0x80, 0x79, 0xac, 0x6a, 0x3f, 0x65, 0x94, 0xfc, 0xe0, + 0xa8, 0x04, 0x87, 0xb1, 0xac, 0x98, 0x29, 0xca, 0xb2, 0xb9, 0x73, 0xd6, + 0xb4, 0x94, 0x2a, 0x62, 0x59, 0x09, 0x03, 0xab, 0x8b, 0xdc, 0x96, 0xba, + 0x3c, 0xef, 0xf3, 0xc8, 0xa1, 0xc4, 0x2d, 0x65, 0xfa, 0xb0, 0xa6, 0x93, + 0x32, 0xe1, 0x9c, 0x5f, 0x33, 0x4f, 0x8f, 0x1b, 0x94, 0x35, 0x66, 0x75, + 0x69, 0x11, 0xcc, 0x91, 0xd9, 0x44, 0xaa, 0x94, 0x98, 0x58, 0x59, 0x9f, + 0x55, 0xa3, 0xeb, 0x4e, 0xe6, 0xb4, 0xb5, 0x61, 0x14, 0xfd, 0x61, 0x27, + 0xba, 0x82, 0x6d, 0xcf, 0xac, 0x93, 0xca, 0x7f, 0xcf, 0x25, 0x3e, 0xff, + 0xdf, 0x8f, 0xd4, 0xfe, 0x9f, 0x99, 0xff, 0x4f, 0x59, 0x1a, 0x12, 0xa0, + 0x32, 0x88, 0xc1, 0x0b, 0x88, 0xac, 0x8a, 0x31, 0x80, 0x00, 0x50, 0x80, + 0x08, 0x55, 0x53, 0x1a, 0x02, 0x0f, 0xa2, 0x34, 0xad, 0xc9, 0x6c, 0x0f, + 0x95, 0x1c, 0x0d, 0x2d, 0x67, 0x2f, 0xb3, 0xf8, 0xeb, 0x34, 0x13, 0xd5, + 0x49, 0x90, 0xa3, 0x3f, 0x99, 0xd8, 0x09, 0x9c, 0x74, 0xb2, 0xea, 0x65, + 0x2a, 0xc1, 0x7f, 0x55, 0xbd, 0x76, 0x5d, 0x14, 0x67, 0xa2, 0x89, 0x38, + 0x85, 0x9c, 0xb1, 0x0a, 0x33, 0xb4, 0xbf, 0x27, 0x9d, 0x9b, 0xe7, 0x83, + 0x3c, 0x57, 0x50, 0x25, 0x65, 0x3d, 0x8e, 0x57, 0x03, 0x84, 0xe2, 0x73, + 0x7e, 0xb8, 0x43, 0x54, 0x45, 0xe4, 0xef, 0x5d, 0xb4, 0x23, 0x5d, 0xa1, + 0xed, 0x2d, 0x88, 0xe4, 0x25, 0x41, 0xb5, 0x96, 0x54, 0x25, 0x40, 0x8c, + 0x5f, 0x36, 0xd6, 0x55, 0xe9, 0xd5, 0x5b, 0x2a, 0x81, 0x91, 0x69, 0x9d, + 0x4d, 0x67, 0x06, 0x19, 0x9c, 0xd5, 0x2a, 0x25, 0x6a, 0xe4, 0xed, 0xe3, + 0xe6, 0xa8, 0x98, 0xee, 0x0d, 0xab, 0x4c, 0x2a, 0xf3, 0x42, 0x0b, 0x53, + 0x32, 0x75, 0x93, 0x4a, 0x6e, 0xc2, 0x69, 0x27, 0x53, 0x8e, 0x9a, 0x9f, + 0x20, 0x17, 0x95, 0x69, 0xf3, 0xb6, 0x74, 0xe4, 0x56, 0x44, 0x3e, 0x02, + 0xa1, 0xda, 0x92, 0x22, 0xaf, 0xbe, 0xaa, 0x8a, 0x02, 0x81, 0xf3, 0x82, + 0x89, 0x75, 0x3b, 0x56, 0x12, 0x31, 0x99, 0x1c, 0x92, 0xac, 0xab, 0x2f, + 0xf4, 0xad, 0x61, 0x8c, 0xb9, 0xd4, 0x07, 0xcd, 0x8d, 0x2c, 0xb2, 0xb3, + 0xb8, 0xb0, 0xb9, 0xda, 0xce, 0x2c, 0x90, 0xe3, 0x56, 0xf3, 0x3f, 0x5d, + 0x61, 0x82, 0x77, 0xd1, 0x65, 0x66, 0x83, 0x56, 0x43, 0x9f, 0x6c, 0x68, + 0xfb, 0xa7, 0x56, 0xd0, 0x54, 0x6e, 0x5c, 0x92, 0x18, 0x6b, 0x4d, 0xa7, + 0xf3, 0x0b, 0xb1, 0xf6, 0xe6, 0x92, 0x1c, 0x03, 0xd0, 0x7b, 0x60, 0x95, + 0x1f, 0x07, 0x81, 0xcc, 0xa9, 0x81, 0xa0, 0x2d, 0xd2, 0xcf, 0x1b, 0x69, + 0xcc, 0x52, 0x5f, 0xc1, 0x40, 0xfe, 0x78, 0x98, 0x18, 0x1b, 0xc3, 0x96, + 0x47, 0xac, 0x10, 0x58, 0x2c, 0x00, 0xe5, 0x0e, 0x9d, 0x61, 0x6a, 0x26, + 0xc7, 0xd5, 0xb5, 0xc7, 0x2b, 0x55, 0x15, 0x1d, 0x5f, 0xfb, 0x63, 0xb6, + 0x6e, 0xc1, 0x6d, 0xa6, 0xc2, 0xf9, 0x12, 0x4e, 0x71, 0xd1, 0xd3, 0x8d, + 0x70, 0x55, 0x81, 0x91, 0xd9, 0xb1, 0x05, 0x82, 0x8a, 0x3c, 0x61, 0x01, + 0x05, 0x35, 0x67, 0x6f, 0xfe, 0x67, 0xfb, 0xfe, 0x67, 0x66, 0x77, 0x8d, + 0xec, 0xf1, 0x3a, 0xed, 0xbb, 0xf2, 0x7e, 0xe7, 0x37, 0xbd, 0xbf, 0xdf, + 0xaa, 0xef, 0x2c, 0xc7, 0x4d, 0xcb, 0x6a, 0x0a, 0xaa, 0x3c, 0xaf, 0xf7, + 0x0f, 0x07, 0x8a, 0x8c, 0x0b, 0x77, 0x79, 0xd6, 0xff, 0xdb, 0x99, 0xf7, + 0x77, 0xe0, 0x5a, 0x99, 0x30, 0x57, 0xeb, 0x4e, 0x76, 0x75, 0x2a, 0x27, + 0xa1, 0xf6, 0x33, 0x43, 0x17, 0x0f, 0xe4, 0x29, 0x9f, 0x2e, 0x4a, 0x07, + 0xf1, 0xe5, 0x90, 0x4d, 0xba, 0x2f, 0x24, 0x5c, 0x7e, 0x2d, 0x15, 0x03, + 0x81, 0x38, 0xf5, 0x51, 0xe8, 0x02, 0x54, 0x1a, 0x26, 0x48, 0x01, 0xc9, + 0x00, 0xc4, 0x7d, 0x3f, 0x5a, 0x50, 0x1c, 0x87, 0x22, 0x49, 0x14, 0x47, + 0x1f, 0xc7, 0xf4, 0xed, 0x0f, 0xff, 0xfb, 0xd4, 0x60, 0x1b, 0x00, 0x07, + 0xa6, 0x76, 0xbe, 0xab, 0x0c, 0x7b, 0x70, 0x75, 0xca, 0x28, 0x9f, 0x31, + 0x43, 0x5f, 0x1c, 0x11, 0xd6, 0xff, 0x2c, 0xb1, 0x8d, 0xc9, 0xfc, 0x28, + 0xe1, 0xfc, 0xf5, 0x8d, 0x7d, 0xc8, 0xcc, 0x81, 0xc1, 0xac, 0xca, 0xd1, + 0xb8, 0x7a, 0x78, 0x3f, 0xb6, 0xb0, 0xa8, 0x3b, 0x09, 0x09, 0x47, 0xf5, + 0xa9, 0x97, 0x25, 0x7b, 0x8a, 0xb5, 0x5c, 0x93, 0x72, 0x5d, 0xab, 0x24, + 0x5a, 0x38, 0xd8, 0x11, 0xcb, 0x2a, 0x44, 0x42, 0x3f, 0x4a, 0x9d, 0x31, + 0x32, 0xbf, 0x53, 0x27, 0x1d, 0xb5, 0xad, 0x22, 0x31, 0x19, 0x40, 0xe6, + 0xe0, 0xcc, 0xa1, 0x6c, 0x47, 0x2a, 0x9b, 0x66, 0x6b, 0xab, 0x33, 0x8c, + 0xcd, 0x90, 0x54, 0xe9, 0xf4, 0xfd, 0x99, 0x92, 0x4e, 0x6a, 0xb5, 0x4c, + 0x37, 0xda, 0x6f, 0x4f, 0x27, 0x54, 0x8a, 0x49, 0x11, 0x10, 0x51, 0x0f, + 0xe1, 0x2b, 0xd8, 0x23, 0xa1, 0x2f, 0x9a, 0xce, 0xb6, 0x26, 0xa9, 0x13, + 0xac, 0xe8, 0x24, 0xeb, 0xa4, 0x62, 0xb1, 0xb1, 0x38, 0xd9, 0x69, 0x23, + 0xb9, 0x4a, 0xa5, 0x54, 0x34, 0xc4, 0x8d, 0x1a, 0x04, 0x6b, 0xe6, 0x1b, + 0x3d, 0x29, 0x2d, 0xf3, 0xa8, 0xee, 0xe3, 0xae, 0x69, 0x0e, 0x58, 0x50, + 0xe9, 0x1a, 0x23, 0x2d, 0x64, 0x79, 0x19, 0xeb, 0xa6, 0xb7, 0x35, 0x2b, + 0x7a, 0xe9, 0xb9, 0x12, 0xa5, 0x5d, 0xae, 0x93, 0xe8, 0x72, 0x39, 0x38, + 0xf0, 0xc2, 0x6c, 0xb9, 0xd0, 0x7f, 0x45, 0x52, 0xcc, 0x7d, 0x12, 0x04, + 0xd2, 0x9c, 0x52, 0xd9, 0x88, 0x21, 0x14, 0x6a, 0x82, 0xc8, 0x5a, 0x86, + 0x41, 0xa8, 0xc3, 0x14, 0x09, 0x62, 0x19, 0xa9, 0x69, 0x12, 0x8d, 0xb8, + 0xda, 0x99, 0xdb, 0x2a, 0xb1, 0x98, 0xa9, 0x00, 0xe9, 0x09, 0x74, 0x98, + 0xa0, 0x2f, 0x08, 0x70, 0x61, 0x5c, 0xd0, 0x2a, 0x80, 0x54, 0x08, 0x14, + 0xe5, 0x73, 0xdd, 0xd7, 0xfd, 0xe6, 0x32, 0xb5, 0x4c, 0x98, 0xf7, 0x23, + 0x99, 0xde, 0x4b, 0xd5, 0xd1, 0x39, 0x8b, 0xac, 0x79, 0x57, 0x96, 0x5c, + 0x8d, 0x54, 0xaa, 0x92, 0x84, 0x5c, 0x81, 0x83, 0x04, 0x02, 0x06, 0x25, + 0xa8, 0x01, 0x18, 0xcf, 0xb1, 0x14, 0x5a, 0x37, 0x57, 0x1e, 0x26, 0x6f, + 0xd9, 0x41, 0x33, 0x2e, 0xd4, 0xf4, 0x37, 0x20, 0x44, 0x85, 0x47, 0xea, + 0x0e, 0x6a, 0x19, 0x45, 0x82, 0xa7, 0xcf, 0x6e, 0x60, 0x98, 0xce, 0x2c, + 0x07, 0x51, 0xcf, 0xc6, 0x8a, 0x01, 0x95, 0x69, 0x3c, 0x44, 0x90, 0x14, + 0x81, 0x80, 0x03, 0x69, 0x69, 0xaa, 0xa3, 0x99, 0x34, 0x92, 0x70, 0x5d, + 0x18, 0xbb, 0xe9, 0x13, 0x8a, 0xc3, 0x8c, 0xad, 0xfc, 0xca, 0x6e, 0x64, + 0x6a, 0x30, 0x11, 0x87, 0x61, 0x28, 0x48, 0x48, 0x7d, 0x82, 0x58, 0xa5, + 0x12, 0xaa, 0x0b, 0xea, 0x25, 0x89, 0x60, 0xb0, 0xd4, 0x3d, 0x8b, 0x04, + 0x03, 0x14, 0x70, 0x20, 0x2a, 0x8c, 0x35, 0x54, 0x47, 0x32, 0x48, 0xc8, + 0xd2, 0x78, 0x78, 0xf8, 0x76, 0x59, 0x8c, 0xc8, 0x62, 0xf0, 0x96, 0x4d, + 0x1c, 0x92, 0x1e, 0x1e, 0x0d, 0x23, 0xe2, 0xa2, 0x53, 0x94, 0x48, 0xaa, + 0xa3, 0xb9, 0x10, 0xa8, 0x13, 0x92, 0xcb, 0x55, 0x4c, 0x5b, 0x6c, 0xe4, + 0x7f, 0x49, 0x27, 0x28, 0xa8, 0x78, 0x68, 0x99, 0x3b, 0xa4, 0xe3, 0xcf, + 0x84, 0xec, 0xa8, 0x94, 0xb2, 0x78, 0x8e, 0xef, 0xb0, 0xae, 0xad, 0xa2, + 0x24, 0x38, 0x58, 0x5b, 0x42, 0xb1, 0x58, 0x13, 0x1e, 0xac, 0xdd, 0x5b, + 0x2c, 0x90, 0x4f, 0x22, 0x37, 0x3a, 0x64, 0xc4, 0x9e, 0x4f, 0xe5, 0xee, + 0xad, 0x26, 0x2a, 0x43, 0x3c, 0x2d, 0xa1, 0x90, 0x0f, 0x14, 0xaf, 0x58, + 0x75, 0x41, 0x24, 0xc0, 0xed, 0x94, 0x47, 0x4e, 0xa4, 0xa2, 0x36, 0x5b, + 0xbb, 0xf6, 0xbe, 0x3b, 0x48, 0xda, 0x7e, 0x0b, 0xdd, 0x4b, 0x0e, 0xfa, + 0x86, 0x20, 0x8f, 0x92, 0x55, 0xb8, 0xab, 0x2e, 0xe2, 0x6e, 0x85, 0x7d, + 0xa1, 0x62, 0x15, 0xaf, 0x2c, 0xbc, 0x30, 0x18, 0x97, 0x4e, 0x9d, 0xb9, + 0x74, 0x4b, 0x8c, 0x95, 0x25, 0xc6, 0xcc, 0x87, 0x22, 0x88, 0xe8, 0x3a, + 0x89, 0x00, 0x0c, 0x5d, 0x26, 0x10, 0x0c, 0x8c, 0xd7, 0x8a, 0x01, 0x57, + 0x78, 0x47, 0x85, 0x48, 0x9b, 0x4c, 0x94, 0xbf, 0xce, 0x5c, 0x35, 0x01, + 0xbc, 0xfe, 0x42, 0xc9, 0x19, 0xa9, 0x4a, 0x34, 0x09, 0xc1, 0x34, 0x82, + 0x0d, 0x87, 0x4c, 0xa6, 0xfa, 0x7d, 0xf0, 0xe6, 0x2a, 0xe9, 0x4d, 0xaa, + 0xf5, 0xff, 0x53, 0x7b, 0xee, 0x59, 0xc2, 0x2a, 0x4d, 0x12, 0x59, 0xc8, + 0x0c, 0xb6, 0xc5, 0xda, 0xd9, 0x4b, 0x10, 0x4c, 0x1a, 0x3a, 0xb1, 0x10, + 0xd6, 0x41, 0x70, 0x1e, 0x55, 0x2b, 0x9e, 0x6c, 0xdb, 0x86, 0xaa, 0x44, + 0x79, 0x99, 0x3b, 0x9c, 0x3b, 0x6c, 0x7a, 0x59, 0xc0, 0x85, 0xd4, 0x6d, + 0x8a, 0x33, 0x3a, 0x1b, 0x86, 0x0f, 0xa0, 0x3c, 0x0b, 0x74, 0x0a, 0x00, + 0x43, 0x17, 0x18, 0x34, 0x89, 0x6e, 0x13, 0x79, 0xe7, 0x2a, 0x48, 0x28, + 0x7d, 0xbd, 0xef, 0xfe, 0x8c, 0x1e, 0xae, 0xab, 0x69, 0x34, 0x44, 0x44, + 0x54, 0x14, 0x8b, 0x88, 0x67, 0x01, 0x34, 0xa9, 0x6f, 0xaa, 0x3f, 0x34, + 0x9c, 0x1b, 0x4c, 0x7d, 0xa7, 0xb9, 0x6c, 0xd2, 0x8a, 0x2c, 0xc9, 0xde, + 0x5a, 0x27, 0xe1, 0xff, 0x50, 0xae, 0x15, 0xe3, 0xf8, 0x80, 0x4e, 0x70, + 0x62, 0x22, 0x35, 0x58, 0x7f, 0xa0, 0x5f, 0x1f, 0x45, 0xd1, 0x5a, 0x8d, + 0x32, 0x4f, 0xf3, 0xf9, 0xa1, 0xe4, 0x41, 0xf2, 0xda, 0xb3, 0x00, 0xc7, + 0x3b, 0xd4, 0x84, 0x1d, 0x09, 0x3b, 0xe7, 0x51, 0x3d, 0x2d, 0xa8, 0xf5, + 0x39, 0x56, 0x70, 0xb9, 0x96, 0xff, 0xfb, 0xd4, 0x60, 0x24, 0x00, 0x07, + 0x6c, 0x76, 0x3f, 0x4b, 0x0f, 0x7b, 0x70, 0x86, 0x2a, 0x28, 0x8f, 0x25, + 0xe6, 0x5f, 0x5e, 0xf1, 0xda, 0xf9, 0x8c, 0x3d, 0xed, 0xc1, 0xec, 0x28, + 0x63, 0x3c, 0x95, 0x8d, 0x7c, 0xe4, 0x3d, 0x0b, 0x3b, 0x72, 0x70, 0x2d, + 0x87, 0x48, 0xf1, 0xb2, 0x08, 0xbe, 0xc5, 0xa9, 0xd5, 0xb3, 0x21, 0x14, + 0xa8, 0x99, 0x4a, 0x99, 0xc4, 0x55, 0x2a, 0x65, 0x65, 0x12, 0xcd, 0xa5, + 0xd1, 0xd9, 0x86, 0x25, 0x32, 0xb5, 0x58, 0xb7, 0x55, 0x5b, 0xf7, 0xb2, + 0xb5, 0xbd, 0x66, 0x49, 0x2a, 0xad, 0x16, 0xee, 0xdb, 0xb0, 0xb6, 0xbc, + 0xb8, 0x51, 0x2a, 0xb7, 0x1a, 0x47, 0x38, 0x29, 0xe6, 0xac, 0xa7, 0xe0, + 0xa1, 0x8a, 0x06, 0xaa, 0xdb, 0x09, 0xc8, 0x28, 0x74, 0x27, 0x75, 0x4e, + 0x21, 0x8e, 0x11, 0x97, 0x6e, 0x51, 0xe3, 0x22, 0x16, 0x15, 0xb0, 0x9f, + 0x1f, 0x8c, 0xf5, 0xdb, 0x19, 0x75, 0x57, 0xc4, 0x78, 0xce, 0xa8, 0x43, + 0x30, 0xed, 0xce, 0xb3, 0xb8, 0xde, 0x06, 0x62, 0x2f, 0xc9, 0xa7, 0x28, + 0x3a, 0x9f, 0x79, 0x92, 0xbb, 0xd3, 0x63, 0x84, 0x57, 0x94, 0xf1, 0x61, + 0x61, 0x59, 0x13, 0x14, 0x72, 0xd2, 0xbd, 0x87, 0x6a, 0x78, 0x99, 0xb3, + 0xd8, 0x8e, 0x4d, 0xac, 0xfb, 0x8c, 0x84, 0xde, 0x0a, 0x40, 0xd0, 0x5b, + 0x46, 0x25, 0xd5, 0xf7, 0x74, 0x6f, 0x99, 0x28, 0x32, 0x7a, 0xfc, 0xbe, + 0x4f, 0x97, 0x00, 0x55, 0x65, 0x74, 0xa5, 0x74, 0x92, 0x59, 0x5b, 0x4b, + 0xf4, 0xda, 0x54, 0xd8, 0x08, 0x40, 0x40, 0x5c, 0x46, 0x43, 0x0f, 0x15, + 0x2a, 0x0f, 0x72, 0xe5, 0x34, 0x18, 0xd7, 0x79, 0x06, 0xb8, 0xad, 0x31, + 0x8d, 0xfa, 0x46, 0x83, 0x0b, 0xee, 0x95, 0xce, 0x7e, 0xf5, 0x7c, 0x5e, + 0x99, 0xb5, 0x71, 0xbc, 0xb2, 0x97, 0x99, 0x79, 0x25, 0x66, 0xc4, 0xe7, + 0x6b, 0x4e, 0xe3, 0x7d, 0xaa, 0x60, 0xc2, 0x23, 0xd1, 0xec, 0x48, 0xc7, + 0x4d, 0x8f, 0xec, 0x76, 0x37, 0x68, 0x6a, 0x3b, 0x51, 0x79, 0x0c, 0x99, + 0xbb, 0x31, 0x99, 0xe1, 0x05, 0x27, 0x5b, 0xba, 0xcf, 0xbc, 0xab, 0xb5, + 0x59, 0xa6, 0xc9, 0x9b, 0xf5, 0xe3, 0x2b, 0xe4, 0x65, 0xe6, 0x73, 0x3f, + 0xf1, 0x1e, 0x4f, 0x8f, 0x53, 0xf4, 0xfb, 0x63, 0x8e, 0x73, 0xd5, 0x88, + 0xd3, 0xd5, 0xff, 0xff, 0x89, 0x67, 0xa4, 0x49, 0xe0, 0xc9, 0x96, 0xa3, + 0x05, 0x6f, 0xac, 0x78, 0xd8, 0x00, 0x20, 0x84, 0x04, 0x14, 0x98, 0x35, + 0x74, 0xab, 0x04, 0x2c, 0x85, 0x4c, 0x30, 0xf7, 0x06, 0x05, 0x7c, 0xe3, + 0x6d, 0x2a, 0x8d, 0xdf, 0x96, 0x31, 0x33, 0x21, 0xa7, 0xfd, 0x91, 0x29, + 0x96, 0x74, 0xf2, 0xbc, 0xb2, 0x3b, 0xcd, 0xb6, 0x67, 0x6a, 0x16, 0xf4, + 0xbb, 0x12, 0x8c, 0xd2, 0x7c, 0xdc, 0x72, 0xad, 0xad, 0xa8, 0xe2, 0xa3, + 0x4e, 0xf5, 0x4a, 0x92, 0x13, 0xa3, 0x79, 0x5e, 0xae, 0x55, 0xa7, 0xe9, + 0x0d, 0x0d, 0x56, 0xab, 0xe6, 0x50, 0x1c, 0xcb, 0x87, 0x51, 0x15, 0x27, + 0xfd, 0x63, 0x33, 0xab, 0x5c, 0x17, 0x2d, 0xca, 0x62, 0xfc, 0xda, 0xc8, + 0x37, 0xd2, 0x31, 0x98, 0xdb, 0x10, 0xd6, 0xd5, 0x23, 0x4b, 0x8a, 0x5c, + 0xe8, 0xa3, 0xf6, 0x26, 0xc4, 0x74, 0x7a, 0x52, 0xb5, 0x5b, 0x5d, 0xab, + 0xd7, 0x07, 0x0a, 0xb9, 0xf3, 0x7b, 0x1a, 0x49, 0xf2, 0x65, 0x2c, 0x88, + 0x6f, 0x72, 0x7a, 0xee, 0xaa, 0xc5, 0xca, 0x5d, 0x91, 0x38, 0x5d, 0xc5, + 0x71, 0x21, 0x00, 0xf8, 0xc9, 0xd0, 0xd4, 0xb2, 0xaf, 0x5c, 0xa9, 0xd1, + 0x66, 0xfb, 0xd8, 0x0f, 0xae, 0xf6, 0xcf, 0x5c, 0xe2, 0x39, 0x2e, 0x95, + 0x68, 0x95, 0x85, 0xf8, 0x1a, 0xab, 0x34, 0x53, 0xa5, 0xbe, 0x1b, 0x75, + 0x77, 0x88, 0x35, 0x58, 0x8e, 0xc9, 0x4d, 0xde, 0xea, 0x35, 0x53, 0x74, + 0x6f, 0xbd, 0xcf, 0xa8, 0xec, 0x11, 0x72, 0xc5, 0x0a, 0x77, 0xf0, 0xe7, + 0x8f, 0x1a, 0x91, 0xd5, 0xa7, 0x33, 0x12, 0xb9, 0xad, 0x53, 0x08, 0xe7, + 0x56, 0xb4, 0xa7, 0xce, 0x14, 0xa2, 0x31, 0x53, 0x83, 0x76, 0x32, 0xd3, + 0x1b, 0x53, 0x2a, 0x38, 0xef, 0x3c, 0xde, 0x9c, 0xed, 0x47, 0x11, 0x09, + 0x2c, 0x42, 0xbc, 0x7b, 0xb2, 0x9b, 0xa5, 0xc4, 0x4c, 0x0b, 0x63, 0xed, + 0x82, 0xbb, 0x44, 0xc4, 0xdc, 0x2e, 0xdf, 0xef, 0x6c, 0x9f, 0xa7, 0x10, + 0xaa, 0x01, 0x29, 0xe1, 0xe0, 0x39, 0x75, 0xc9, 0x12, 0x4c, 0x1f, 0x1e, + 0x09, 0x84, 0xb0, 0x89, 0xd7, 0x23, 0x47, 0x6d, 0xec, 0xea, 0xba, 0x53, + 0xaa, 0x3d, 0x16, 0xc6, 0xa6, 0xe6, 0xbe, 0x66, 0x9e, 0xb7, 0x0a, 0xcf, + 0x18, 0xed, 0xa3, 0x13, 0x86, 0x14, 0x1c, 0xd1, 0x54, 0x15, 0xcf, 0x19, + 0xab, 0x08, 0xa0, 0x32, 0x84, 0x0a, 0xcc, 0x42, 0xc4, 0x3d, 0x58, 0x14, + 0x32, 0xe9, 0x40, 0xc8, 0xe9, 0x62, 0x7b, 0x50, 0x2f, 0x6a, 0x89, 0xff, + 0xad, 0x2c, 0x22, 0xe0, 0x47, 0x77, 0xa6, 0xd0, 0x8c, 0x9c, 0xca, 0x74, + 0x49, 0x19, 0xf3, 0x50, 0xa1, 0xdc, 0x61, 0x83, 0xef, 0x02, 0x16, 0x36, + 0x49, 0xe4, 0x86, 0x07, 0x0c, 0x04, 0xc5, 0x1f, 0xf5, 0x77, 0xb6, 0x53, + 0x34, 0x5d, 0x75, 0x55, 0x09, 0x12, 0x51, 0x5a, 0x65, 0x35, 0x54, 0xaa, + 0x21, 0xe3, 0x49, 0x9e, 0xf7, 0x22, 0x1c, 0x6e, 0x73, 0x3f, 0x03, 0xc1, + 0x31, 0x3a, 0xa3, 0x89, 0xa1, 0x40, 0x7d, 0xa7, 0x90, 0xe2, 0xf8, 0xc4, + 0xd6, 0xaf, 0x56, 0xb2, 0x22, 0x1d, 0x6c, 0xb8, 0x25, 0x18, 0x5e, 0x17, + 0x27, 0x08, 0x70, 0x65, 0x34, 0x4e, 0x33, 0xed, 0x38, 0xda, 0x78, 0x1f, + 0x8a, 0x93, 0xfd, 0x3d, 0x08, 0xff, 0xfb, 0xd4, 0x60, 0x1e, 0x80, 0x07, + 0x69, 0x76, 0xbe, 0xcb, 0x0f, 0x63, 0x70, 0x80, 0xcb, 0xe8, 0xaf, 0x2d, + 0x63, 0x6f, 0x1b, 0x45, 0xd5, 0x05, 0xa7, 0xbd, 0x8d, 0xca, 0x22, 0x29, + 0x62, 0xbc, 0xc7, 0x99, 0x7d, 0xeb, 0x4f, 0xa4, 0xce, 0x63, 0x7d, 0x81, + 0x99, 0x50, 0xb6, 0x73, 0x18, 0x8c, 0xaa, 0x04, 0x38, 0x46, 0x16, 0x86, + 0x50, 0x1c, 0x21, 0x08, 0x47, 0xa5, 0x67, 0x41, 0x90, 0x90, 0x3f, 0x28, + 0x43, 0x02, 0xa5, 0x93, 0xc8, 0x56, 0xa9, 0x5e, 0xe5, 0x84, 0xb8, 0x22, + 0x4c, 0x6c, 0xf3, 0x68, 0x7c, 0x48, 0x14, 0x18, 0x1e, 0x9a, 0xd9, 0x5f, + 0x20, 0x2a, 0x43, 0x4e, 0x38, 0xa2, 0x20, 0x1c, 0x9d, 0x8f, 0xd1, 0xa7, + 0x1e, 0x4f, 0x57, 0xaf, 0x29, 0x30, 0x5b, 0x12, 0x57, 0x40, 0x49, 0x30, + 0x50, 0x62, 0x85, 0x11, 0x56, 0x87, 0x06, 0x0f, 0x27, 0x29, 0xb9, 0x1b, + 0xe5, 0xe7, 0x0b, 0x45, 0xc8, 0xdf, 0x25, 0xab, 0x70, 0xb4, 0x98, 0x49, + 0x8d, 0x60, 0x96, 0x84, 0x94, 0xcd, 0xb5, 0x6d, 0x9a, 0xb7, 0xbf, 0x48, + 0x20, 0xa2, 0x13, 0xcd, 0x2c, 0x42, 0xce, 0xc3, 0xb7, 0x58, 0x7b, 0xea, + 0xfb, 0xcb, 0x92, 0x39, 0x31, 0x3c, 0x89, 0xa8, 0x1d, 0x5a, 0x47, 0xe2, + 0xa9, 0x4d, 0x1a, 0x32, 0xea, 0x13, 0x8b, 0x11, 0x2f, 0x03, 0xe8, 0x0c, + 0x14, 0x06, 0x82, 0x38, 0xf0, 0x9c, 0x77, 0x4e, 0x9c, 0x9e, 0x32, 0x0a, + 0x87, 0xf2, 0xb9, 0x34, 0x9d, 0x60, 0x3e, 0x04, 0xc1, 0x88, 0xea, 0x74, + 0xd7, 0x82, 0x44, 0x2b, 0xbb, 0x5b, 0xb5, 0xb7, 0x5b, 0x24, 0x7f, 0x32, + 0x19, 0x01, 0x80, 0xc8, 0x31, 0x4c, 0xd8, 0x9c, 0x80, 0xd2, 0x66, 0xa6, + 0x8b, 0x49, 0x60, 0x96, 0x0c, 0xc4, 0xe7, 0x6a, 0x1a, 0xc4, 0x65, 0xbd, + 0x39, 0x04, 0x4e, 0x4b, 0xdd, 0x6f, 0x86, 0x55, 0x2c, 0xf8, 0x75, 0xc2, + 0x08, 0x79, 0xd5, 0x9a, 0x5f, 0x09, 0xc2, 0xa7, 0x57, 0x21, 0x58, 0xb6, + 0x34, 0x75, 0x60, 0x9e, 0x56, 0x88, 0x16, 0x09, 0x94, 0x3c, 0x05, 0xd6, + 0x73, 0x51, 0x60, 0x83, 0xb1, 0xbd, 0x2c, 0xc7, 0x0e, 0x10, 0xeb, 0x75, + 0x98, 0x8a, 0x03, 0x9b, 0x1e, 0x1d, 0xcc, 0x2e, 0x14, 0xf1, 0xad, 0x6c, + 0x75, 0x38, 0x50, 0x1b, 0x12, 0x5a, 0xc6, 0xc1, 0xf8, 0x50, 0x94, 0x58, + 0xd0, 0xa5, 0x45, 0x22, 0xf2, 0xee, 0x9d, 0xfd, 0xa4, 0x04, 0x73, 0xd6, + 0xc5, 0x54, 0xf2, 0x83, 0xde, 0x5b, 0x22, 0xb3, 0x29, 0x1e, 0x00, 0x9b, + 0x39, 0xab, 0x72, 0xdb, 0x24, 0x87, 0xf6, 0x21, 0x9c, 0x85, 0x34, 0x17, + 0x32, 0x7e, 0x6d, 0x24, 0x23, 0xa0, 0x16, 0xe3, 0x9f, 0x6c, 0x87, 0x52, + 0x79, 0x08, 0x33, 0x4b, 0xb3, 0xf5, 0x1b, 0x92, 0xa9, 0x6d, 0xfa, 0xda, + 0x4c, 0xff, 0xde, 0xd7, 0x2a, 0xc5, 0xf5, 0x48, 0xa3, 0x56, 0xa3, 0x8e, + 0x74, 0x21, 0x0b, 0x54, 0x23, 0x50, 0xc9, 0x50, 0xc2, 0x42, 0x87, 0x9a, + 0x31, 0x55, 0x50, 0xe2, 0xbd, 0x68, 0x3f, 0x4d, 0x92, 0x58, 0xec, 0xbe, + 0x9e, 0x68, 0xd4, 0xe8, 0xf2, 0x23, 0x81, 0x15, 0xe7, 0xa3, 0xa8, 0xed, + 0xc1, 0xf8, 0xb0, 0xa2, 0x0b, 0xac, 0x2b, 0x09, 0x5f, 0xc5, 0x24, 0xfa, + 0x68, 0x86, 0x7e, 0xcb, 0x0d, 0x13, 0x68, 0xce, 0x1d, 0x32, 0x7a, 0x9c, + 0xe0, 0xec, 0x50, 0xac, 0x4a, 0x26, 0x12, 0xce, 0xd4, 0x42, 0x39, 0x15, + 0xd0, 0x88, 0x65, 0x9a, 0x97, 0x17, 0x45, 0x00, 0x89, 0x0b, 0xc6, 0x65, + 0x94, 0x22, 0x04, 0x07, 0x28, 0x03, 0xe4, 0x46, 0x62, 0x4b, 0xea, 0x16, + 0x1e, 0x12, 0x4d, 0x59, 0x39, 0x73, 0x16, 0x55, 0xd8, 0xe0, 0x12, 0xd6, + 0x92, 0x0c, 0xe0, 0x96, 0xa3, 0x76, 0xaf, 0x12, 0x90, 0x8c, 0x0b, 0x51, + 0x56, 0x17, 0xde, 0xe8, 0x6f, 0xd7, 0xd8, 0x6b, 0x34, 0x5f, 0x6a, 0xfb, + 0x71, 0xb9, 0x07, 0xfd, 0xa1, 0xaf, 0xff, 0x7c, 0xb7, 0xf6, 0x9d, 0xdc, + 0x8f, 0x5c, 0x95, 0xcb, 0x29, 0x44, 0x9f, 0x4e, 0x75, 0xb9, 0x83, 0xfe, + 0x37, 0x35, 0x62, 0x86, 0xa1, 0x02, 0xea, 0x63, 0xaf, 0x1d, 0x2c, 0x01, + 0x06, 0x57, 0x77, 0x76, 0xa7, 0x8e, 0xfe, 0xb5, 0xc8, 0xe6, 0x6f, 0x65, + 0x49, 0xd1, 0x8a, 0x4f, 0x5c, 0x0e, 0x0f, 0x63, 0xa8, 0x18, 0xed, 0x69, + 0x8c, 0x94, 0xd9, 0x67, 0x33, 0x5c, 0x65, 0x73, 0x0a, 0xbe, 0x49, 0xa1, + 0x42, 0x76, 0xc4, 0xd8, 0xff, 0x3a, 0xd7, 0xfa, 0xfa, 0xc6, 0x98, 0x25, + 0xb5, 0xe1, 0x6b, 0x77, 0x6e, 0xce, 0x53, 0xbf, 0xa8, 0x95, 0x8f, 0x2d, + 0x0c, 0x7b, 0x8e, 0xe6, 0x3b, 0x32, 0xe8, 0xb9, 0xf8, 0x87, 0x26, 0xb2, + 0xa0, 0xe8, 0x2d, 0x13, 0xf1, 0xfd, 0x5d, 0xb5, 0xd5, 0xde, 0x3f, 0xda, + 0xed, 0xff, 0x37, 0x7d, 0x7c, 0xbc, 0xef, 0x32, 0xdb, 0x93, 0xe6, 0xa2, + 0x50, 0x26, 0x5a, 0xcd, 0xc4, 0xf6, 0x59, 0xca, 0x83, 0x0d, 0x75, 0xdf, + 0xc5, 0xcd, 0xd1, 0x8b, 0xa2, 0xaa, 0xc3, 0x1e, 0x2d, 0x49, 0x00, 0x3c, + 0x35, 0x1b, 0xaa, 0x5b, 0xff, 0xea, 0xfe, 0xff, 0xb9, 0xce, 0x6f, 0x0b, + 0xfe, 0xac, 0x68, 0x39, 0x75, 0x00, 0x29, 0x9a, 0x6a, 0xe9, 0x3e, 0x1a, + 0xc2, 0xe8, 0x80, 0xce, 0x5e, 0x8f, 0xe4, 0x42, 0x22, 0x24, 0x76, 0x33, + 0x09, 0xf3, 0x12, 0xa4, 0xe0, 0x27, 0xa8, 0x79, 0x3a, 0x67, 0x4e, 0xae, + 0x0d, 0x86, 0x04, 0x42, 0x10, 0x72, 0x23, 0x4b, 0x7b, 0xf3, 0x45, 0x99, + 0x26, 0x60, 0x97, 0xe7, 0x69, 0x74, 0xfc, 0x16, 0x76, 0xe4, 0xfa, 0x84, + 0xb5, 0x57, 0x9f, 0xe7, 0xf2, 0xa4, 0xe3, 0x9d, 0x18, 0xde, 0xcf, 0x0a, + 0xad, 0xa8, 0xe6, 0xc3, 0x4f, 0xff, 0xfb, 0xd4, 0x60, 0x24, 0x00, 0x07, + 0x30, 0x75, 0xbe, 0xc9, 0xef, 0x63, 0x72, 0x8a, 0xab, 0xc8, 0x8f, 0x30, + 0xc6, 0x6f, 0x5d, 0x35, 0xd8, 0xf9, 0x27, 0xbd, 0xed, 0xc2, 0x6b, 0x3a, + 0xa2, 0x3c, 0xc4, 0xa1, 0xbc, 0xb3, 0xa2, 0x0e, 0xa8, 0x9c, 0xe9, 0x18, + 0xe4, 0x91, 0xa1, 0x08, 0x4a, 0x58, 0x2e, 0x27, 0x36, 0x1f, 0x1c, 0x10, + 0x41, 0xe0, 0xc8, 0x18, 0x16, 0x84, 0x93, 0x22, 0xf1, 0x35, 0x22, 0x72, + 0x12, 0x62, 0xd9, 0x24, 0xac, 0xe4, 0x65, 0x87, 0x5c, 0x34, 0x64, 0xf0, + 0xbc, 0x4f, 0x22, 0x0f, 0xc5, 0x93, 0x62, 0xc9, 0xc9, 0x19, 0xe1, 0xf1, + 0x1a, 0xdb, 0x19, 0x16, 0xae, 0x5b, 0x33, 0x75, 0x21, 0xcb, 0xee, 0x40, + 0xbe, 0xa7, 0x26, 0x2a, 0xc8, 0x06, 0x25, 0x91, 0x51, 0xd9, 0xb7, 0xa2, + 0x58, 0x8a, 0x35, 0xaa, 0x1d, 0x5a, 0xb7, 0xcb, 0xc9, 0x1e, 0xa9, 0xda, + 0xa5, 0xb5, 0x83, 0xd4, 0x1f, 0x34, 0x74, 0xff, 0xd9, 0x4a, 0xf8, 0x0e, + 0x36, 0x28, 0xef, 0x15, 0x9a, 0xff, 0x76, 0x2d, 0x63, 0x5f, 0xcf, 0x5e, + 0xe3, 0xcd, 0x55, 0x54, 0x25, 0xeb, 0x3b, 0x73, 0x71, 0x6d, 0xd7, 0xe9, + 0x9b, 0xcc, 0xb8, 0xf8, 0x13, 0x2f, 0x15, 0x52, 0x06, 0x25, 0x72, 0xda, + 0xeb, 0x9a, 0x88, 0xb0, 0x8f, 0xc5, 0x72, 0xb1, 0x6b, 0x01, 0xa8, 0x1d, + 0x2a, 0x00, 0x00, 0x1b, 0x4c, 0xf6, 0xa3, 0x05, 0x76, 0x67, 0x85, 0x55, + 0x6b, 0x2d, 0x95, 0xc6, 0xa6, 0x6e, 0xb0, 0x2f, 0x11, 0x9b, 0x44, 0x99, + 0x49, 0x9b, 0x22, 0x01, 0x24, 0x8c, 0x53, 0x28, 0x0a, 0x0e, 0xc4, 0x14, + 0xa3, 0x12, 0x30, 0xd2, 0x6d, 0x82, 0xd0, 0x6c, 0xd6, 0xe6, 0xf6, 0xaf, + 0x6f, 0x6e, 0x8f, 0x36, 0xe7, 0x25, 0x3b, 0xca, 0x5a, 0xe4, 0xcc, 0x40, + 0x82, 0xcb, 0x56, 0xc5, 0x73, 0xea, 0xa3, 0x2d, 0x38, 0xcd, 0x92, 0xee, + 0xf1, 0xb7, 0x27, 0x95, 0x65, 0x32, 0xbe, 0x15, 0x4f, 0xa6, 0xb5, 0xed, + 0xc2, 0xd8, 0xc5, 0x9e, 0x16, 0x8a, 0x28, 0x8a, 0x2a, 0xd7, 0xcf, 0x46, + 0x4c, 0x44, 0x7b, 0x3a, 0x60, 0x8f, 0x6e, 0x25, 0x1c, 0xa7, 0xb2, 0x9b, + 0x4b, 0x2a, 0x12, 0xe9, 0xd1, 0x94, 0xf8, 0x9c, 0x67, 0x93, 0x19, 0x9a, + 0xff, 0xc6, 0x9f, 0xbb, 0xdb, 0xb4, 0xe6, 0xef, 0xff, 0x12, 0x0c, 0x9f, + 0xff, 0xff, 0xfe, 0x35, 0x16, 0x8a, 0xca, 0x64, 0xcf, 0x05, 0x2a, 0xb5, + 0xf0, 0xd8, 0x47, 0x59, 0x4a, 0xca, 0xc1, 0xf0, 0x7a, 0x93, 0x23, 0xd5, + 0x1c, 0x4c, 0x52, 0xd4, 0x2f, 0x27, 0xbb, 0xb3, 0x78, 0x6f, 0x28, 0x17, + 0x89, 0x02, 0xb1, 0x0e, 0x7e, 0x94, 0x54, 0x9d, 0xce, 0x8c, 0x36, 0xc7, + 0xca, 0x42, 0xdd, 0x1a, 0x47, 0x33, 0xfc, 0xfd, 0x65, 0x53, 0x68, 0xbb, + 0xa4, 0x30, 0xb6, 0x8a, 0x84, 0x78, 0x98, 0x6b, 0x3a, 0x3a, 0x17, 0xd9, + 0x5d, 0x76, 0x46, 0x45, 0xca, 0x43, 0x0a, 0x86, 0xd5, 0x52, 0x1c, 0xc6, + 0x75, 0x46, 0x42, 0x72, 0x89, 0x55, 0xbc, 0xbb, 0x24, 0x18, 0xf2, 0xb6, + 0x9a, 0x50, 0x94, 0xaa, 0x58, 0xaa, 0x3d, 0x29, 0x54, 0x8d, 0xd7, 0x58, + 0x69, 0x80, 0xd2, 0xd4, 0xdb, 0x09, 0xdd, 0xef, 0x58, 0xb1, 0xbd, 0x9c, + 0x94, 0x93, 0xb5, 0xb4, 0x37, 0xcd, 0x01, 0xb9, 0x95, 0xb7, 0x2d, 0xd1, + 0x5c, 0x8e, 0x7b, 0x28, 0xa0, 0xb9, 0x39, 0xab, 0x15, 0xeb, 0x6d, 0x69, + 0xe6, 0x15, 0x7a, 0x85, 0x89, 0x73, 0x05, 0xe2, 0xa5, 0x3a, 0x94, 0x69, + 0x87, 0x4b, 0xeb, 0xbf, 0xab, 0x2c, 0x48, 0x92, 0xbf, 0x79, 0x36, 0x6d, + 0x35, 0xdb, 0xd8, 0x5c, 0x6b, 0x06, 0x6a, 0xac, 0x39, 0xb0, 0x4b, 0x03, + 0x32, 0xcd, 0x03, 0xbf, 0xbb, 0xfb, 0x49, 0x8a, 0x29, 0xaf, 0x1a, 0xce, + 0x17, 0x82, 0xf7, 0x4c, 0x51, 0x63, 0x3c, 0x5d, 0xba, 0x82, 0xe2, 0xc3, + 0x37, 0x49, 0x3f, 0x66, 0x6f, 0x78, 0xb9, 0x34, 0x11, 0x44, 0xc0, 0xb9, + 0x2b, 0x74, 0x73, 0x9e, 0xfb, 0x26, 0x09, 0x75, 0x79, 0x38, 0x3e, 0xcf, + 0x37, 0x12, 0x0a, 0xad, 0x42, 0x04, 0xe8, 0xe6, 0x12, 0x74, 0x41, 0x27, + 0x54, 0xa3, 0x8c, 0x31, 0x6d, 0x32, 0x9c, 0xc1, 0x99, 0x9d, 0xa2, 0x59, + 0x9e, 0xdd, 0x27, 0x91, 0x29, 0x9e, 0x5e, 0x46, 0x01, 0xc3, 0xe8, 0x48, + 0x3c, 0xae, 0x30, 0x43, 0x3c, 0x22, 0xc8, 0xe8, 0x1e, 0x34, 0x55, 0x22, + 0x19, 0x1d, 0x61, 0xa5, 0xa8, 0xa5, 0x34, 0xf8, 0xd5, 0xc1, 0xf5, 0x08, + 0x46, 0x55, 0x35, 0x5f, 0x6c, 0xa6, 0xb7, 0x9b, 0xe0, 0x96, 0x27, 0x92, + 0xdf, 0x93, 0xdf, 0x35, 0x75, 0x4c, 0xec, 0xf1, 0xc8, 0xd7, 0x15, 0x17, + 0x10, 0x8c, 0x71, 0x61, 0x63, 0x58, 0x39, 0x10, 0x01, 0xa8, 0x4a, 0x23, + 0x8a, 0x87, 0x01, 0x73, 0xa0, 0x72, 0x19, 0x12, 0xc5, 0x88, 0x41, 0xf0, + 0xa0, 0xa5, 0x2c, 0x2c, 0xa9, 0xa3, 0xec, 0x62, 0x0f, 0x1b, 0x25, 0x0d, + 0x83, 0x8a, 0x11, 0x48, 0xa1, 0x49, 0x12, 0x31, 0x6e, 0x78, 0x71, 0x32, + 0x44, 0xb7, 0x3f, 0xc4, 0x5d, 0xfd, 0x68, 0x8c, 0xef, 0xca, 0x47, 0xdd, + 0xcf, 0x5f, 0x37, 0x35, 0x51, 0xc4, 0xea, 0x3e, 0xaa, 0x1f, 0xbb, 0xaf, + 0x9a, 0x6e, 0xe1, 0xdd, 0xa3, 0x65, 0x86, 0x65, 0xed, 0x29, 0x61, 0x1a, + 0xd6, 0x3a, 0xd6, 0x1a, 0x9c, 0xca, 0x0c, 0xb6, 0xa4, 0x51, 0xc8, 0xdc, + 0x6d, 0xb1, 0x32, 0x62, 0x2d, 0x2a, 0xad, 0x13, 0x93, 0x0f, 0xf8, 0x33, + 0x70, 0x13, 0x2c, 0x9f, 0x13, 0x10, 0xab, 0x75, 0x11, 0x1c, 0xac, 0x54, + 0x55, 0x27, 0xb4, 0xa8, 0x70, 0x78, 0xe8, 0xed, 0x73, 0xe4, 0xf6, 0x97, + 0x0e, 0xec, 0x9c, 0x8e, 0x42, 0xff, 0xfb, 0xd4, 0x40, 0x17, 0x80, 0x05, + 0xd8, 0x76, 0x40, 0xe9, 0x8c, 0x4b, 0x70, 0xb3, 0xce, 0xc8, 0x1a, 0x25, + 0x89, 0x6e, 0x14, 0xf1, 0x7b, 0x11, 0xe6, 0x25, 0x2d, 0xe2, 0xd7, 0x3a, + 0xa0, 0xf4, 0x96, 0x25, 0xb9, 0x93, 0x94, 0x5b, 0x1c, 0x05, 0xe6, 0x5a, + 0xf3, 0xfb, 0xae, 0x53, 0x8c, 0x2c, 0x7b, 0xe0, 0x7c, 0xc2, 0xa8, 0x43, + 0x05, 0xc0, 0x84, 0x4d, 0xa1, 0x36, 0x31, 0xa3, 0x0b, 0x95, 0x52, 0x68, + 0xf1, 0xf3, 0x5d, 0x39, 0xaa, 0x89, 0xd2, 0x5f, 0x95, 0x25, 0x4e, 0xd7, + 0x15, 0x20, 0x1f, 0x8e, 0x93, 0xb6, 0x81, 0x42, 0x25, 0x24, 0xb9, 0x15, + 0xcc, 0xa9, 0x34, 0xca, 0xc6, 0x33, 0x65, 0x5f, 0x22, 0x77, 0x34, 0xc8, + 0x7b, 0xb3, 0x6b, 0x11, 0x12, 0xa3, 0xc6, 0x57, 0x86, 0x34, 0xd5, 0xac, + 0x1e, 0x5d, 0xa6, 0xd4, 0x6e, 0xe2, 0xa1, 0x19, 0x82, 0x04, 0xdc, 0xd4, + 0x3a, 0xeb, 0xb7, 0x27, 0x6c, 0x73, 0x2b, 0x33, 0x67, 0x79, 0x6d, 0x4f, + 0xc2, 0x15, 0x7e, 0xae, 0x75, 0x52, 0xfe, 0x5e, 0xad, 0x37, 0xb5, 0x57, + 0x85, 0x97, 0x91, 0xe7, 0x14, 0x50, 0x88, 0xfb, 0x6c, 0xa8, 0x5d, 0x1b, + 0x2a, 0x3f, 0xa1, 0x60, 0xda, 0x90, 0x70, 0x68, 0x89, 0x80, 0x14, 0xe3, + 0x9a, 0x06, 0xaa, 0xb9, 0xc6, 0xe3, 0x4d, 0x8f, 0xce, 0x8b, 0x60, 0xa8, + 0x40, 0x05, 0x82, 0xe5, 0x83, 0xcc, 0x09, 0x57, 0x23, 0x33, 0xb2, 0x1b, + 0xb4, 0xf5, 0x2b, 0x1f, 0x31, 0x56, 0xc9, 0xd5, 0x11, 0x9b, 0x37, 0x4a, + 0xa7, 0x7d, 0x49, 0x1d, 0x0d, 0xd0, 0xe8, 0x93, 0x43, 0x56, 0x84, 0xa5, + 0x10, 0x25, 0x3e, 0xe4, 0x7e, 0x75, 0x1b, 0x30, 0x52, 0x1c, 0x2b, 0x32, + 0x70, 0xb1, 0x84, 0x07, 0x41, 0x82, 0x86, 0xcc, 0xa3, 0xa2, 0x01, 0xc2, + 0x7c, 0x20, 0x9a, 0x65, 0x66, 0xdc, 0xdc, 0xcd, 0x93, 0x63, 0x45, 0x71, + 0x09, 0xe6, 0x7c, 0xd6, 0x40, 0x6f, 0x74, 0xda, 0x6c, 0x53, 0xdd, 0x28, + 0xad, 0x28, 0x9e, 0x6a, 0x47, 0x71, 0x44, 0x78, 0x4e, 0xd9, 0x62, 0xe8, + 0x56, 0x42, 0xa5, 0x8a, 0x50, 0x24, 0x59, 0x0a, 0x63, 0x90, 0x58, 0xce, + 0xc9, 0xe8, 0x79, 0xca, 0x51, 0x3a, 0x45, 0x35, 0x5d, 0xbd, 0x01, 0x1d, + 0x42, 0x1a, 0x7e, 0x32, 0xdc, 0xdc, 0xbf, 0xef, 0xee, 0xe4, 0xf3, 0x67, + 0xe1, 0xe4, 0xfa, 0xdf, 0x29, 0xfb, 0xcd, 0xbf, 0x38, 0x26, 0x86, 0xe3, + 0xb2, 0x5b, 0xc2, 0x71, 0xfc, 0x82, 0x06, 0x18, 0x72, 0x91, 0x2e, 0xd9, + 0x3a, 0x39, 0x1d, 0x09, 0x68, 0xac, 0x94, 0x54, 0x5a, 0x08, 0x45, 0x08, + 0x34, 0x1d, 0x59, 0x5a, 0x25, 0xdd, 0xad, 0xda, 0xd9, 0x1a, 0x99, 0x46, + 0x7a, 0x38, 0x2f, 0x3f, 0x32, 0x26, 0x34, 0x66, 0x70, 0x34, 0x15, 0x94, + 0x0e, 0xe1, 0x13, 0x64, 0x01, 0x72, 0xc4, 0xed, 0xb6, 0x83, 0xa1, 0x2c, + 0x1f, 0x1e, 0x22, 0x68, 0x56, 0xc4, 0xa3, 0x7a, 0x4e, 0xb3, 0x11, 0x28, + 0x20, 0x06, 0x4c, 0x3b, 0x88, 0x65, 0x11, 0x82, 0x74, 0x64, 0x0a, 0x0c, + 0x83, 0x6d, 0x40, 0xb2, 0x3c, 0x2c, 0xf2, 0xa6, 0x91, 0x95, 0x48, 0x91, + 0x0b, 0x49, 0x32, 0x84, 0x54, 0x49, 0x34, 0xd4, 0x35, 0x1b, 0x91, 0xe4, + 0x94, 0xd4, 0x23, 0x49, 0x21, 0x21, 0x52, 0x4f, 0xc6, 0xf1, 0xc6, 0x92, + 0x24, 0x35, 0x24, 0x44, 0x30, 0x61, 0x65, 0x32, 0xe7, 0x25, 0x62, 0xf6, + 0x0c, 0xd1, 0x2b, 0xcd, 0x1e, 0x91, 0xc5, 0xed, 0x92, 0x13, 0x0f, 0x6d, + 0x68, 0xa7, 0x48, 0x0d, 0xb1, 0x14, 0x78, 0xa3, 0x35, 0x25, 0xe4, 0xdf, + 0x8b, 0x31, 0x2a, 0xc4, 0xac, 0x97, 0x52, 0x8e, 0x65, 0xee, 0x43, 0xc3, + 0x7c, 0x32, 0xae, 0xf3, 0x16, 0x6e, 0xab, 0x17, 0xc0, 0x9b, 0x3c, 0xb0, + 0xa4, 0x70, 0x55, 0xf0, 0x80, 0x15, 0x0a, 0x32, 0x14, 0x36, 0x65, 0xa4, + 0x03, 0x6a, 0x28, 0xe5, 0x92, 0xdb, 0x2d, 0x8c, 0xfe, 0x40, 0x04, 0x0a, + 0x83, 0x62, 0x56, 0x42, 0x98, 0x28, 0x80, 0x64, 0xa4, 0xda, 0x5e, 0x5c, + 0x3c, 0x2e, 0x1d, 0x9d, 0x97, 0x0e, 0x8a, 0x2d, 0x34, 0xc9, 0xf2, 0x55, + 0x43, 0xb6, 0x1f, 0x92, 0x0b, 0x07, 0x07, 0x8a, 0x93, 0xb4, 0xea, 0xf4, + 0x87, 0x45, 0x80, 0xf5, 0x42, 0x26, 0x5b, 0xd3, 0x02, 0x5a, 0x73, 0x85, + 0x85, 0x58, 0x51, 0xe2, 0x6d, 0x44, 0xb3, 0x64, 0x28, 0xc5, 0x6a, 0x8a, + 0x93, 0x8c, 0x8a, 0x21, 0xb5, 0x84, 0x89, 0x0e, 0xe1, 0x54, 0x70, 0x18, + 0x60, 0x8b, 0x14, 0x25, 0x46, 0xdb, 0x22, 0x42, 0x29, 0x8e, 0xb0, 0x6c, + 0xc2, 0x03, 0x44, 0x08, 0x88, 0xc2, 0x44, 0x8e, 0x72, 0x7c, 0x2a, 0xb4, + 0xb6, 0x76, 0x56, 0x94, 0x76, 0x49, 0x67, 0xe4, 0x18, 0x7f, 0xd3, 0xc8, + 0x1a, 0x65, 0x48, 0x15, 0x6a, 0xb6, 0xe3, 0x38, 0x31, 0xda, 0xe9, 0xa5, + 0xb7, 0xe3, 0x53, 0xb5, 0xbc, 0x66, 0x82, 0x7e, 0x35, 0x75, 0x08, 0xc3, + 0xc7, 0x3d, 0x5e, 0xff, 0x09, 0xd6, 0x53, 0xe2, 0xad, 0x5e, 0x4b, 0xed, + 0x5b, 0x53, 0x7f, 0x73, 0xd9, 0xd9, 0x2b, 0xb3, 0x99, 0x59, 0xd9, 0x99, + 0x3e, 0xa0, 0x7d, 0x8a, 0x9c, 0x08, 0x96, 0x49, 0xb3, 0x58, 0x99, 0x94, + 0x6d, 0x8f, 0x08, 0xa8, 0xe4, 0x4d, 0x28, 0xdc, 0x89, 0xb1, 0x32, 0x60, + 0x54, 0x15, 0x93, 0x41, 0xa1, 0x80, 0x15, 0x1a, 0x8e, 0x4b, 0x60, 0xd5, + 0xf3, 0xd3, 0xf3, 0xb3, 0x16, 0xe3, 0x57, 0x43, 0x72, 0xa1, 0xf9, 0xf6, + 0x3c, 0x6e, 0xb8, 0xae, 0x74, 0xa2, 0xea, 0xd9, 0x15, 0x13, 0x44, 0x24, + 0x45, 0x42, 0xc9, 0x55, 0xb4, 0x8e, 0xa7, 0x64, 0xf5, 0xf3, 0x0d, 0x7a, + 0xc5, 0x8e, 0x84, 0xc8, 0xf3, 0xff, 0xfb, 0xd4, 0x40, 0x1f, 0x80, 0x06, + 0x0d, 0x75, 0x40, 0x69, 0x8c, 0x63, 0x72, 0xbd, 0x0e, 0xb7, 0xfd, 0x31, + 0x89, 0x6e, 0x17, 0x01, 0xd5, 0x07, 0xa4, 0xb1, 0x2d, 0xea, 0xdd, 0x3a, + 0xe1, 0x34, 0xc6, 0x25, 0xbc, 0x51, 0x1c, 0x26, 0x56, 0xd0, 0x68, 0x72, + 0xd3, 0x4f, 0x30, 0x1d, 0x44, 0xe2, 0xe1, 0x21, 0x12, 0x57, 0xce, 0x9a, + 0x48, 0x99, 0x7a, 0x26, 0xe1, 0xe5, 0xb0, 0x18, 0xa8, 0x65, 0x6b, 0x2c, + 0xf4, 0xb5, 0x44, 0x3f, 0x87, 0xe3, 0x86, 0x27, 0xdb, 0x5f, 0x99, 0x27, + 0x18, 0xfd, 0xa1, 0xa2, 0xf5, 0x87, 0x11, 0xb3, 0x94, 0x96, 0x96, 0x28, + 0x88, 0xfd, 0x72, 0xb6, 0x35, 0x9d, 0x39, 0x47, 0x57, 0x96, 0xca, 0x1c, + 0xde, 0x8c, 0xbe, 0xa5, 0x6d, 0x0b, 0xce, 0xc6, 0xaf, 0xd9, 0x51, 0x1a, + 0xbb, 0xa1, 0x99, 0x4f, 0x6e, 0xd2, 0x7e, 0x67, 0xe9, 0x36, 0xea, 0xcc, + 0xcd, 0x37, 0xe9, 0xef, 0x6d, 0x5e, 0xfa, 0x73, 0x7f, 0xcf, 0x47, 0xd7, + 0x6e, 0xad, 0x33, 0x0b, 0x65, 0xf8, 0xd9, 0x5e, 0x84, 0x7d, 0x07, 0xc2, + 0x63, 0x44, 0x34, 0xc8, 0xde, 0x39, 0xa0, 0xf5, 0x11, 0x6a, 0x16, 0xcf, + 0x11, 0x29, 0x78, 0x90, 0x11, 0x42, 0xe3, 0x49, 0x26, 0x54, 0x68, 0x89, + 0x92, 0x91, 0x6c, 0x6a, 0x1e, 0x0f, 0x88, 0x05, 0x61, 0x72, 0x74, 0xc2, + 0x0d, 0x4c, 0xe5, 0xd1, 0xc2, 0x12, 0xf1, 0x5a, 0x0b, 0xb8, 0xb9, 0x7c, + 0x07, 0xc3, 0xba, 0x11, 0x76, 0x88, 0x0d, 0xb6, 0x7a, 0x34, 0x1e, 0x1f, + 0x18, 0x62, 0xc6, 0xe1, 0x2a, 0x35, 0x5b, 0xd4, 0xcc, 0x70, 0x2d, 0xae, + 0xf8, 0xa7, 0xe3, 0x82, 0x97, 0x42, 0x68, 0xfc, 0xe1, 0xc9, 0xa0, 0x7a, + 0x2a, 0x4a, 0x49, 0xc0, 0x14, 0x9c, 0x66, 0xc0, 0xd0, 0x1c, 0x20, 0x30, + 0x50, 0xd9, 0x29, 0x21, 0x92, 0x6b, 0x1e, 0x15, 0xa0, 0x55, 0x32, 0x6d, + 0xb6, 0x09, 0x51, 0x07, 0xe4, 0x5d, 0x81, 0x42, 0x68, 0xcd, 0x9b, 0x61, + 0x08, 0xa0, 0xbc, 0xee, 0x10, 0x7a, 0x84, 0x0f, 0xc9, 0xa0, 0x9b, 0xc9, + 0x0f, 0x53, 0x68, 0xed, 0x06, 0x28, 0xba, 0x19, 0x2e, 0xdf, 0xf9, 0x69, + 0xdc, 0x3d, 0x7e, 0xfa, 0x51, 0xf4, 0x76, 0x34, 0xbd, 0xa3, 0x4b, 0xfb, + 0xf3, 0xcf, 0xfe, 0xd4, 0x7c, 0x6e, 0x10, 0xfe, 0x73, 0xcf, 0x8a, 0xe5, + 0xac, 0xe8, 0x24, 0xca, 0x74, 0x4e, 0x82, 0x73, 0xed, 0x90, 0x62, 0x12, + 0x42, 0x33, 0xa6, 0x0b, 0x80, 0x62, 0x00, 0x48, 0x1d, 0x2a, 0x64, 0x44, + 0x70, 0xc3, 0x63, 0xc1, 0x93, 0x6e, 0x0d, 0x36, 0xd3, 0x87, 0x64, 0x3e, + 0xb8, 0x6a, 0xc9, 0x2c, 0x8e, 0xc7, 0x5b, 0x48, 0x0f, 0xc8, 0xc4, 0xea, + 0x0e, 0x36, 0x6c, 0xf8, 0xac, 0x9c, 0xf8, 0x90, 0x48, 0x69, 0x08, 0xb4, + 0x65, 0x02, 0x8a, 0xa1, 0xae, 0x40, 0x94, 0xcb, 0x39, 0x5a, 0x23, 0xd2, + 0xd9, 0x5c, 0x69, 0x32, 0x69, 0x22, 0x11, 0x35, 0x39, 0xed, 0x6a, 0xbb, + 0x8a, 0xac, 0xab, 0xaa, 0x82, 0x92, 0x39, 0x44, 0xb9, 0x0e, 0xa6, 0x08, + 0xdd, 0x5b, 0xab, 0x89, 0x09, 0x9c, 0x38, 0x44, 0x40, 0x0c, 0xa0, 0x2e, + 0xda, 0x24, 0xd1, 0x97, 0x4d, 0x50, 0xfa, 0x4c, 0xe8, 0xb9, 0xf2, 0xa5, + 0x02, 0xee, 0x1d, 0xc4, 0x12, 0x40, 0x82, 0x6b, 0x8a, 0xd0, 0x92, 0x26, + 0x5c, 0xcc, 0x7a, 0x1c, 0x84, 0x14, 0x64, 0x44, 0xda, 0xa4, 0x60, 0xb1, + 0x54, 0xc8, 0x54, 0x58, 0x28, 0xcc, 0x91, 0x9a, 0x43, 0x00, 0xba, 0x10, + 0x21, 0xb0, 0x48, 0x9d, 0xb2, 0xd6, 0x8a, 0xb6, 0x25, 0x9f, 0x18, 0x27, + 0x79, 0x8c, 0x4a, 0xf6, 0x54, 0x85, 0x36, 0x6a, 0x32, 0xc7, 0x54, 0xa1, + 0x2d, 0x8a, 0x54, 0xce, 0x79, 0x33, 0x7e, 0x19, 0x79, 0x3f, 0xfc, 0xa9, + 0xac, 0xcf, 0xb7, 0x95, 0x97, 0x05, 0xfd, 0xc2, 0x32, 0x52, 0x3b, 0x84, + 0xce, 0x6f, 0xf2, 0x7c, 0x4e, 0x95, 0xd9, 0x59, 0xa6, 0xcd, 0xb0, 0xc5, + 0xce, 0x10, 0xe9, 0xb3, 0x28, 0x6d, 0xc7, 0x7d, 0xba, 0x4b, 0x5d, 0x64, + 0x89, 0x97, 0x8f, 0xc6, 0x81, 0xc4, 0x90, 0xc0, 0xca, 0xca, 0x95, 0xf0, + 0x8e, 0x60, 0x70, 0x47, 0xa9, 0x80, 0xc6, 0x27, 0xd3, 0x58, 0xe5, 0x31, + 0x8a, 0x52, 0x51, 0xd3, 0x85, 0xd5, 0xa5, 0x78, 0xa8, 0x74, 0x91, 0x6d, + 0x4c, 0x6a, 0xe9, 0xf3, 0xc3, 0xd9, 0x10, 0x97, 0x0a, 0x62, 0xf1, 0x97, + 0x44, 0xb8, 0xfe, 0x52, 0x1f, 0xbd, 0x19, 0xcb, 0x65, 0x8e, 0x83, 0x96, + 0x64, 0xac, 0xa0, 0xb1, 0xb4, 0xdb, 0x4c, 0xa9, 0x82, 0x30, 0x10, 0x10, + 0x06, 0xcb, 0x13, 0x45, 0x92, 0xa4, 0x47, 0x8c, 0x41, 0x81, 0x23, 0x03, + 0xf1, 0x11, 0xb6, 0x44, 0x82, 0x04, 0x2c, 0x1c, 0x25, 0x30, 0x52, 0x6c, + 0x28, 0x34, 0x66, 0x60, 0xca, 0xd2, 0xf8, 0xe9, 0x24, 0xca, 0xd3, 0x9b, + 0x39, 0x35, 0x4c, 0x2c, 0x16, 0x7b, 0xf2, 0x04, 0xc4, 0x50, 0xd1, 0x87, + 0xc5, 0x01, 0x19, 0x49, 0x45, 0x97, 0x4e, 0xd2, 0x94, 0x5a, 0x42, 0xbb, + 0x9a, 0x84, 0x5c, 0xa6, 0xcb, 0xce, 0x4d, 0x64, 0x23, 0x59, 0x97, 0x96, + 0x9d, 0xee, 0xee, 0xca, 0x53, 0xbc, 0x85, 0x5d, 0xfd, 0xf8, 0xac, 0xea, + 0x19, 0xb6, 0xf7, 0xeb, 0x51, 0x83, 0x92, 0x8e, 0x62, 0x70, 0xde, 0xfa, + 0x66, 0x6e, 0x47, 0xb6, 0xc1, 0xfb, 0x6d, 0xd4, 0x0d, 0xa4, 0xda, 0xae, + 0x59, 0x24, 0x91, 0xa3, 0x33, 0x53, 0x64, 0x21, 0x83, 0x44, 0xf2, 0xf0, + 0xb0, 0xae, 0x3a, 0x9d, 0x15, 0x09, 0x0f, 0xb3, 0x42, 0x72, 0x10, 0x8b, + 0x03, 0xb2, 0x38, 0x80, 0x0b, 0x51, 0x72, 0x21, 0x63, 0x62, 0x81, 0x59, + 0x30, 0xa1, 0xa3, 0x85, 0x90, 0xff, 0xfb, 0xd4, 0x40, 0x16, 0x80, 0x05, + 0xbd, 0x75, 0x40, 0xe9, 0x89, 0x4b, 0x72, 0xad, 0xee, 0x18, 0x7f, 0x31, + 0x89, 0x6f, 0x57, 0x69, 0xd7, 0x01, 0xa6, 0x31, 0x2d, 0xc2, 0xce, 0x3a, + 0xa2, 0x3c, 0xf6, 0x25, 0xbc, 0xc4, 0xaf, 0x2e, 0x27, 0x80, 0x51, 0x09, + 0x96, 0x22, 0x54, 0xd0, 0x86, 0x26, 0xf4, 0x80, 0xec, 0x1c, 0x65, 0xa0, + 0xf9, 0x02, 0x82, 0xb2, 0x72, 0x20, 0x89, 0xe2, 0x53, 0x44, 0x0f, 0x2e, + 0xc0, 0xa9, 0x02, 0x88, 0x5e, 0xd9, 0x95, 0x5a, 0x22, 0x21, 0xd7, 0x38, + 0x44, 0x88, 0x91, 0x1a, 0x14, 0x11, 0x27, 0x2a, 0xc9, 0xdc, 0x43, 0x8f, + 0x60, 0x54, 0xe7, 0x0a, 0xd2, 0x60, 0x82, 0xc8, 0x52, 0x9c, 0x8f, 0x53, + 0x5b, 0x6a, 0xb1, 0xa6, 0xd1, 0xe4, 0xa9, 0x43, 0xaf, 0x59, 0xb4, 0x37, + 0x18, 0xad, 0x8a, 0xf5, 0x7a, 0x51, 0xc9, 0x57, 0xd5, 0x9b, 0x9b, 0x94, + 0x49, 0xb8, 0x12, 0x2b, 0x5e, 0x7f, 0x19, 0xd8, 0x78, 0x4a, 0x19, 0xb0, + 0xf9, 0xb3, 0xdf, 0xf6, 0xa5, 0x54, 0xff, 0x9b, 0x05, 0xb2, 0xf2, 0x11, + 0x36, 0x9b, 0x28, 0x22, 0xbc, 0x24, 0x93, 0x9b, 0x4d, 0x29, 0xaf, 0x14, + 0x90, 0xdc, 0x9b, 0xc7, 0xb9, 0x83, 0xd6, 0x6d, 0xbd, 0x24, 0x88, 0x40, + 0x2a, 0xb3, 0x2b, 0x3b, 0x34, 0x6d, 0xb4, 0x8e, 0x25, 0x32, 0xbc, 0x54, + 0x72, 0x25, 0x88, 0x07, 0x84, 0xd3, 0x25, 0x16, 0x03, 0xcc, 0x44, 0xb0, + 0xa4, 0x87, 0x1b, 0xe5, 0xe5, 0xc7, 0x0b, 0x13, 0x82, 0x01, 0xf1, 0x31, + 0x2a, 0xe5, 0xac, 0xb9, 0xc7, 0x51, 0xca, 0xe2, 0xa2, 0x95, 0xe7, 0x26, + 0xc5, 0x72, 0x7a, 0x14, 0x4e, 0xa9, 0xeb, 0x6c, 0x04, 0x97, 0x4b, 0x54, + 0x52, 0xfd, 0x58, 0x3d, 0x39, 0x65, 0x49, 0x17, 0x54, 0xb1, 0x74, 0x18, + 0x69, 0x8b, 0x74, 0x70, 0xe5, 0x18, 0xd8, 0x2a, 0x6d, 0xc8, 0xf4, 0x50, + 0xc2, 0x35, 0x22, 0x51, 0x84, 0x37, 0x55, 0x71, 0x46, 0x66, 0x50, 0xb5, + 0x54, 0x4a, 0x91, 0xbc, 0xec, 0xa6, 0x29, 0x50, 0x9d, 0xe0, 0x4c, 0xed, + 0x01, 0x9c, 0x61, 0x1c, 0x17, 0xc0, 0xd2, 0xc8, 0x1b, 0x26, 0x45, 0x68, + 0xe7, 0xa5, 0x5a, 0xea, 0x54, 0xe3, 0x29, 0xea, 0xb9, 0x0d, 0x8c, 0xf1, + 0x94, 0x12, 0x97, 0x89, 0xf8, 0x3e, 0x2d, 0x46, 0x3e, 0xaa, 0x99, 0x86, + 0xfc, 0x8c, 0x6f, 0x37, 0x33, 0x61, 0xa9, 0x46, 0xeb, 0xff, 0x0f, 0x5f, + 0xff, 0xe1, 0x9e, 0x39, 0x8b, 0x77, 0x67, 0x66, 0x49, 0x54, 0xd8, 0x9d, + 0xf5, 0x11, 0xce, 0xd1, 0x60, 0x00, 0x94, 0x89, 0xd8, 0xe2, 0x8e, 0x37, + 0x1a, 0x33, 0x28, 0x67, 0xe6, 0xc5, 0xc1, 0xc4, 0x52, 0x62, 0x44, 0x0b, + 0x8b, 0x02, 0x4f, 0xa0, 0x06, 0x25, 0xd1, 0x8a, 0xe1, 0xe0, 0xf5, 0x61, + 0xd9, 0x29, 0x69, 0x30, 0x9c, 0x5d, 0x27, 0x09, 0x68, 0x99, 0x85, 0xb4, + 0x8b, 0x92, 0xb2, 0x87, 0x0e, 0x3a, 0x4f, 0x27, 0x36, 0xd9, 0xda, 0x95, + 0x47, 0x9a, 0xf3, 0x4e, 0x15, 0x99, 0x2d, 0x5d, 0x39, 0xf2, 0xd3, 0xe3, + 0x58, 0x7c, 0x95, 0x35, 0x52, 0x6d, 0x99, 0x97, 0xd6, 0x75, 0xc5, 0xbb, + 0x4c, 0x91, 0xc0, 0x9f, 0x16, 0x25, 0x65, 0x5c, 0x22, 0x66, 0x9b, 0x03, + 0x53, 0x89, 0xc3, 0x9c, 0xc1, 0xc3, 0x0d, 0x2d, 0x82, 0xa2, 0x52, 0x89, + 0xc0, 0xaa, 0x61, 0x4d, 0x73, 0x51, 0x36, 0x7f, 0x97, 0x2a, 0xe3, 0xd3, + 0x65, 0x12, 0xfb, 0x34, 0xd8, 0x45, 0x05, 0x6f, 0xcd, 0x1a, 0x33, 0x6b, + 0xa4, 0xdc, 0x54, 0xda, 0x9d, 0x34, 0x81, 0x5f, 0xea, 0xd6, 0x94, 0x92, + 0x9e, 0xc2, 0xab, 0x7c, 0x77, 0xee, 0xfd, 0xa9, 0xce, 0x75, 0x08, 0x45, + 0xb9, 0x43, 0x1a, 0x9d, 0xc2, 0xb2, 0xb6, 0x6b, 0xcd, 0x48, 0xe2, 0xb9, + 0x68, 0x56, 0x1f, 0x9a, 0x8a, 0x6b, 0x2b, 0x30, 0x70, 0xb8, 0xa9, 0x31, + 0x10, 0x1e, 0x1f, 0x0b, 0x95, 0x42, 0x69, 0x76, 0x1a, 0xd3, 0xd6, 0x4a, + 0x88, 0x19, 0x19, 0xda, 0x26, 0x1d, 0xf7, 0xff, 0x7b, 0x22, 0xfd, 0x85, + 0x24, 0x93, 0xda, 0x1a, 0xb9, 0x26, 0xa8, 0xe8, 0xcb, 0xa6, 0x72, 0xc4, + 0xe6, 0x33, 0x38, 0x61, 0xc3, 0x33, 0x92, 0xa9, 0xee, 0x1e, 0x3c, 0x8d, + 0x71, 0x74, 0xfe, 0x26, 0xea, 0xb4, 0xbd, 0x72, 0xaa, 0x61, 0xc4, 0x9d, + 0x45, 0x51, 0x12, 0x9d, 0x89, 0x79, 0xe1, 0x7c, 0xc1, 0x49, 0x60, 0xc5, + 0x72, 0xe1, 0x25, 0x62, 0x85, 0x0f, 0xa4, 0x6d, 0xff, 0x3d, 0x48, 0xca, + 0x90, 0x1a, 0xbf, 0x9a, 0xc1, 0xc1, 0xa9, 0x82, 0x4c, 0x13, 0x28, 0x17, + 0x15, 0x34, 0x51, 0xbb, 0x61, 0x33, 0x8d, 0x0a, 0x59, 0x58, 0xeb, 0xd5, + 0x59, 0xb3, 0x6c, 0xa3, 0x2c, 0xbb, 0x44, 0x6d, 0x05, 0x64, 0x42, 0x84, + 0x95, 0x93, 0x88, 0x90, 0xb4, 0x6c, 0xfa, 0x14, 0xd3, 0x8c, 0x59, 0x2e, + 0x7e, 0x91, 0xdb, 0x8b, 0x2d, 0x98, 0x86, 0x2d, 0x2c, 0xd2, 0x01, 0x76, + 0xe3, 0x82, 0xc9, 0x28, 0xc5, 0xa5, 0x91, 0x34, 0x8d, 0xc8, 0xa6, 0xf2, + 0xd7, 0xb9, 0xea, 0xb3, 0x2f, 0xfc, 0xdb, 0xf7, 0xf7, 0x6e, 0xa5, 0x38, + 0xff, 0xbb, 0xbb, 0xff, 0xff, 0xdf, 0xfe, 0x55, 0xfd, 0x67, 0xf9, 0x75, + 0x51, 0xcf, 0x5d, 0x3f, 0xe3, 0x57, 0x08, 0x79, 0x66, 0x6c, 0x1b, 0x8a, + 0x6a, 0x18, 0xa6, 0xec, 0xae, 0x59, 0x23, 0x89, 0x03, 0xfa, 0xec, 0x9a, + 0x77, 0x17, 0x6c, 0x4c, 0x2f, 0x51, 0x6f, 0x10, 0x85, 0x6e, 0x4e, 0x85, + 0xce, 0x26, 0x05, 0xa8, 0xb1, 0xb5, 0x91, 0x87, 0xc8, 0x86, 0xce, 0x70, + 0xd1, 0x0c, 0xc3, 0x27, 0x4a, 0x0a, 0x05, 0x42, 0xb0, 0x1b, 0x44, 0x84, + 0x4a, 0x9b, 0x45, 0x37, 0x07, 0xff, 0xfb, 0xd4, 0x40, 0x1a, 0x00, 0x05, + 0xbd, 0x73, 0xc1, 0xe9, 0xe9, 0x4b, 0x7a, 0xb8, 0x2e, 0xc8, 0x1d, 0x25, + 0x29, 0x6e, 0x15, 0x9d, 0xa7, 0x13, 0xe6, 0x25, 0x2d, 0xe2, 0xc6, 0xb9, + 0xe1, 0xbc, 0xc6, 0x25, 0xbd, 0x96, 0xb3, 0x24, 0x64, 0x42, 0x83, 0xc6, + 0xcb, 0x4a, 0x3a, 0x5c, 0x94, 0xa1, 0xc3, 0x48, 0x66, 0x2a, 0x43, 0x47, + 0x50, 0x3c, 0xa0, 0x80, 0xa6, 0xb2, 0xb8, 0xe0, 0x90, 0x5c, 0xd6, 0xb2, + 0x84, 0x4e, 0x6c, 0x81, 0x01, 0x42, 0x23, 0x8b, 0x95, 0x65, 0x86, 0x96, + 0x6e, 0x76, 0x65, 0x72, 0x4e, 0xbb, 0x28, 0x26, 0x48, 0x5b, 0x31, 0x95, + 0x83, 0x28, 0xe4, 0xf6, 0xed, 0xeb, 0xe2, 0x50, 0x9a, 0x36, 0xd4, 0x5c, + 0xf4, 0x71, 0x86, 0x1e, 0x9b, 0xe5, 0xae, 0x49, 0x8b, 0x9d, 0xb6, 0x9f, + 0x49, 0x24, 0xdb, 0xda, 0x6d, 0xbd, 0xa8, 0x4d, 0xac, 0x67, 0x23, 0xab, + 0xa0, 0x94, 0x5a, 0xda, 0xdd, 0x8a, 0x57, 0x04, 0xe9, 0x85, 0x9a, 0x94, + 0x5e, 0xde, 0x6f, 0x9d, 0xcb, 0x77, 0x65, 0x24, 0x33, 0x82, 0xb2, 0x9a, + 0x84, 0xf8, 0x89, 0x95, 0x9b, 0xf9, 0x51, 0x33, 0x52, 0x6d, 0x15, 0x99, + 0x81, 0xc4, 0x4f, 0x23, 0x38, 0x4c, 0xa4, 0xdb, 0x92, 0x49, 0x1c, 0xb5, + 0x2f, 0xca, 0x86, 0x4e, 0x89, 0x06, 0x45, 0x23, 0x2b, 0x03, 0x13, 0x06, + 0xe9, 0x1a, 0xa4, 0xe4, 0xc8, 0x48, 0x4b, 0x19, 0x68, 0x02, 0x36, 0x42, + 0xca, 0xeb, 0x22, 0x40, 0x36, 0x64, 0xa2, 0xa4, 0xc8, 0x05, 0x41, 0x78, + 0xb4, 0x18, 0x15, 0x23, 0x36, 0xb1, 0x0d, 0x49, 0x25, 0x50, 0x8f, 0x0b, + 0xd0, 0x5c, 0xa9, 0xb5, 0xea, 0x15, 0x88, 0x56, 0xb6, 0x17, 0x51, 0x62, + 0xa5, 0xd4, 0x9a, 0x86, 0x18, 0x34, 0xa4, 0x5a, 0x50, 0x61, 0x1a, 0xf0, + 0x52, 0x7a, 0x64, 0xa7, 0x73, 0xd6, 0x01, 0x52, 0x89, 0x20, 0x94, 0x07, + 0x10, 0xb2, 0xb4, 0x10, 0x09, 0xd7, 0x19, 0x2a, 0xf7, 0x9a, 0x58, 0xa1, + 0x8a, 0x30, 0x8d, 0x0b, 0x3d, 0xd0, 0x20, 0x42, 0xca, 0x7a, 0xc2, 0xc5, + 0x8e, 0x8a, 0x50, 0xbf, 0x21, 0xed, 0x03, 0x12, 0x9c, 0x67, 0x88, 0x67, + 0xbb, 0xfb, 0x10, 0x6f, 0x6a, 0x0b, 0xad, 0x2a, 0x86, 0xeb, 0x36, 0xc2, + 0xd8, 0xea, 0xd7, 0x2d, 0x14, 0x50, 0xc5, 0xd5, 0x8c, 0x5b, 0x82, 0x9e, + 0x28, 0x2b, 0xfa, 0x7d, 0x4b, 0xc6, 0x3a, 0xf6, 0xa7, 0x94, 0xd2, 0x4a, + 0x13, 0x2a, 0xb3, 0xa6, 0xca, 0xf4, 0x9c, 0xbb, 0x1c, 0x9d, 0xe2, 0xea, + 0x22, 0x1c, 0x48, 0xc1, 0x37, 0x0d, 0x86, 0x51, 0x4c, 0x19, 0xda, 0x1a, + 0x6e, 0x22, 0x3f, 0xff, 0xed, 0x23, 0x99, 0xd2, 0xc3, 0xa3, 0x88, 0x92, + 0xa9, 0x49, 0x5c, 0xb7, 0x86, 0x62, 0x69, 0x64, 0x07, 0x46, 0x80, 0xfa, + 0x01, 0xb1, 0x0c, 0x04, 0x8d, 0xce, 0x22, 0xa3, 0x68, 0x93, 0x12, 0x23, + 0x10, 0xa2, 0x6d, 0x1b, 0x42, 0x93, 0x01, 0x78, 0x48, 0x91, 0x09, 0x3a, + 0x24, 0x6b, 0x26, 0xe4, 0xd3, 0x4f, 0xb6, 0x5d, 0x1a, 0x62, 0x59, 0x33, + 0x64, 0x6d, 0xc4, 0x88, 0x36, 0x4e, 0xb0, 0xf1, 0x32, 0x16, 0xe6, 0xc0, + 0xd0, 0x8c, 0x46, 0x75, 0x89, 0x12, 0xb0, 0x9c, 0x09, 0x27, 0x35, 0x84, + 0x6b, 0xa1, 0x5a, 0x02, 0x28, 0x11, 0x11, 0xa2, 0x01, 0x89, 0x4c, 0x09, + 0x00, 0x32, 0x16, 0xc1, 0x75, 0xd6, 0x21, 0x89, 0xf2, 0xca, 0xa3, 0xf4, + 0xf4, 0x50, 0x66, 0x64, 0x6d, 0x90, 0xa4, 0x81, 0x78, 0xb7, 0x36, 0xfe, + 0xa1, 0x4e, 0x48, 0xe0, 0x69, 0xa8, 0xd6, 0xd3, 0xee, 0x98, 0x6f, 0xf8, + 0x37, 0x29, 0x2f, 0x35, 0x62, 0x9c, 0x21, 0x0c, 0x8b, 0x59, 0x7b, 0xb1, + 0xcf, 0xf6, 0x93, 0xdc, 0xaa, 0x82, 0xb2, 0x5d, 0x4b, 0xb9, 0xbb, 0xff, + 0xff, 0xfb, 0xfe, 0x7f, 0x5f, 0xcf, 0x53, 0x9b, 0x3a, 0x39, 0x74, 0xc0, + 0x69, 0x40, 0x1b, 0x2a, 0xc4, 0x33, 0xc4, 0x5d, 0xb5, 0xcd, 0xa3, 0x33, + 0x45, 0x22, 0x39, 0x6c, 0xe8, 0xa6, 0x24, 0x15, 0x5a, 0x1f, 0x40, 0x98, + 0x7a, 0x4d, 0x44, 0xa4, 0xe5, 0x18, 0x91, 0x62, 0xe8, 0xf0, 0x7a, 0x7e, + 0x5b, 0x2d, 0x03, 0xe0, 0x79, 0x0d, 0x5b, 0xe7, 0x71, 0xb8, 0xa8, 0xe0, + 0xff, 0x4f, 0x56, 0xa1, 0xa3, 0x59, 0x11, 0x6d, 0x6a, 0x1c, 0x0b, 0x5e, + 0x4a, 0xa7, 0x8a, 0xb8, 0xd0, 0xf2, 0xad, 0x77, 0x3d, 0xef, 0xa2, 0x3e, + 0x99, 0xb4, 0xd2, 0x55, 0xec, 0x90, 0xe0, 0x60, 0x80, 0x2a, 0x0e, 0x8a, + 0x10, 0xc8, 0x2a, 0x2c, 0x2c, 0x96, 0x32, 0x18, 0x68, 0x4c, 0xd1, 0x70, + 0x94, 0x5f, 0x6c, 0x53, 0x48, 0xa3, 0x91, 0x44, 0xdb, 0x8b, 0xa7, 0x0b, + 0xa5, 0x91, 0x39, 0xb4, 0x68, 0x56, 0x3e, 0x8a, 0x05, 0x56, 0x46, 0x83, + 0x7b, 0x04, 0xd2, 0xc9, 0xe2, 0xcc, 0x75, 0x7c, 0x1d, 0xac, 0x76, 0xa5, + 0xb0, 0x4f, 0x11, 0xc5, 0xa9, 0x35, 0xb3, 0xa6, 0xbb, 0xaa, 0xa9, 0x0f, + 0xab, 0xcc, 0x94, 0xbe, 0x78, 0x5e, 0xde, 0xdc, 0x32, 0x15, 0x2f, 0x0c, + 0xcf, 0xff, 0x85, 0xfb, 0xfe, 0xea, 0x5e, 0x59, 0x7e, 0x30, 0x87, 0x61, + 0x38, 0xc3, 0xf8, 0xab, 0xf7, 0xd4, 0xea, 0x77, 0x88, 0x61, 0xd9, 0xea, + 0x04, 0x38, 0xac, 0x6d, 0xb6, 0xe4, 0x72, 0x23, 0x33, 0x42, 0x51, 0x64, + 0xdc, 0x9b, 0x7a, 0x0e, 0xc3, 0xbb, 0xe2, 0xb5, 0x21, 0xe9, 0x30, 0xb8, + 0x75, 0xb6, 0x04, 0xc4, 0x60, 0xb4, 0x74, 0xfe, 0xae, 0x46, 0x80, 0x95, + 0x0c, 0xdb, 0x22, 0x64, 0x70, 0x4a, 0x8c, 0x68, 0x6a, 0x77, 0x78, 0xca, + 0x70, 0x75, 0x30, 0x4a, 0xf2, 0x45, 0x0f, 0x02, 0x0d, 0xd3, 0xc9, 0x44, + 0xc2, 0xc6, 0x48, 0x48, 0x49, 0xff, 0xfb, 0xd4, 0x40, 0x20, 0x80, 0x05, + 0xcd, 0x76, 0x40, 0x69, 0x89, 0x4b, 0x70, 0xb9, 0x8e, 0x98, 0x5d, 0x31, + 0x2c, 0x6f, 0x56, 0xad, 0xd7, 0x03, 0xa6, 0x31, 0x2d, 0xc2, 0xed, 0xba, + 0xa0, 0x34, 0x96, 0x31, 0xb9, 0x5b, 0x44, 0x8e, 0x64, 0x6a, 0x9f, 0x5e, + 0x47, 0x0d, 0xa8, 0xa4, 0x7e, 0x9c, 0x62, 0x68, 0x4a, 0xc2, 0x28, 0xed, + 0x86, 0x0a, 0x8a, 0xd6, 0x0a, 0x1e, 0x23, 0x32, 0xb1, 0xe2, 0xe8, 0x57, + 0x38, 0xba, 0x47, 0x5e, 0x58, 0xc3, 0x28, 0x22, 0x92, 0xb0, 0x54, 0xbe, + 0x42, 0xda, 0x2a, 0xc1, 0x45, 0x48, 0x51, 0x20, 0x5c, 0x91, 0xc6, 0x10, + 0xc2, 0x9d, 0x72, 0xbb, 0x92, 0xad, 0x33, 0xdd, 0x97, 0x39, 0x55, 0xaf, + 0x6b, 0xe6, 0x52, 0x18, 0xec, 0x55, 0x9e, 0x3a, 0x9f, 0x16, 0x25, 0x79, + 0x79, 0x08, 0xdc, 0xfc, 0xff, 0xbb, 0x65, 0x3c, 0xcc, 0x9b, 0x1b, 0x7c, + 0xfc, 0x29, 0x11, 0x03, 0xe9, 0xa8, 0xa0, 0x65, 0xa6, 0xdb, 0x40, 0x36, + 0x9c, 0x66, 0x03, 0x20, 0x70, 0xe0, 0xb8, 0x69, 0xb6, 0x62, 0x20, 0x54, + 0xa2, 0x64, 0x40, 0x72, 0x4e, 0x70, 0xb3, 0x77, 0x6e, 0xfa, 0xdd, 0xa5, + 0x8d, 0x29, 0x91, 0xe8, 0xb0, 0x22, 0x15, 0x92, 0x06, 0x22, 0x40, 0x35, + 0xa9, 0x30, 0x79, 0xa9, 0xa0, 0xa2, 0x23, 0xa4, 0x24, 0x84, 0x44, 0x8d, + 0x9c, 0x26, 0x22, 0x3e, 0xf1, 0xb1, 0xb8, 0x90, 0x36, 0x40, 0x22, 0x18, + 0x1d, 0x51, 0xa9, 0x8c, 0x49, 0x45, 0x86, 0x55, 0x59, 0x56, 0x06, 0x04, + 0x8b, 0x91, 0x00, 0x91, 0x14, 0x08, 0x9d, 0x22, 0x52, 0xd2, 0x42, 0x25, + 0x95, 0xfc, 0xe9, 0xda, 0xb6, 0xae, 0x68, 0xd3, 0xc5, 0x6c, 0x50, 0x78, + 0x66, 0x7a, 0xad, 0x30, 0xb1, 0x98, 0x5f, 0x4e, 0x4a, 0x2b, 0x99, 0xa3, + 0x47, 0x5b, 0x1d, 0xea, 0xf6, 0xb1, 0x62, 0xb2, 0x45, 0xd1, 0xa6, 0xc3, + 0xf4, 0x85, 0x25, 0x09, 0x99, 0xa3, 0x8f, 0x5c, 0xaa, 0xfd, 0xd2, 0xbb, + 0x75, 0xae, 0x2f, 0x6d, 0xd3, 0xd8, 0xb5, 0xea, 0xc5, 0xcc, 0x23, 0x59, + 0xf9, 0xef, 0x65, 0xb5, 0xd4, 0xde, 0xd7, 0xcd, 0x9c, 0xeb, 0x46, 0xcf, + 0x7a, 0xdd, 0x6d, 0x6c, 0x55, 0xa4, 0xc3, 0x2c, 0xd3, 0xd8, 0xe8, 0xef, + 0xce, 0x53, 0xed, 0x1e, 0x5d, 0xdb, 0xe5, 0xd6, 0x2d, 0x75, 0xef, 0xfe, + 0x9d, 0x99, 0xb4, 0xd2, 0x66, 0xff, 0xb1, 0xc7, 0x0d, 0xe7, 0xff, 0x7e, + 0xf5, 0x86, 0x0d, 0xac, 0xf7, 0x56, 0x6a, 0xf5, 0x9a, 0xe7, 0x06, 0x06, + 0xd4, 0x91, 0xbb, 0x74, 0x9a, 0xda, 0xd9, 0x99, 0xd2, 0xb0, 0x22, 0xb4, + 0x1b, 0x34, 0xb1, 0x59, 0x64, 0x5e, 0x60, 0x25, 0x26, 0x2b, 0x71, 0xf9, + 0xda, 0x56, 0x59, 0x92, 0xd1, 0x81, 0xe9, 0x5c, 0xb6, 0xe1, 0x60, 0x9f, + 0x0e, 0x12, 0xa0, 0x5e, 0xe9, 0xd4, 0x05, 0xe3, 0x65, 0xcf, 0xd0, 0xab, + 0x72, 0x98, 0xaa, 0x53, 0xa2, 0x7d, 0xc2, 0x50, 0xe2, 0x56, 0x78, 0x85, + 0x67, 0x7d, 0x72, 0x75, 0x88, 0xec, 0x60, 0xf2, 0x88, 0x69, 0x5b, 0x46, + 0xa1, 0x18, 0xf2, 0x12, 0x05, 0xa6, 0x51, 0x5d, 0x13, 0x16, 0xa7, 0x20, + 0x72, 0xcb, 0x9e, 0xe8, 0x0a, 0xd1, 0xe5, 0xc8, 0x19, 0x26, 0x46, 0xe1, + 0x9c, 0x1c, 0x2c, 0x92, 0xe9, 0x3c, 0x61, 0x06, 0xcd, 0x28, 0x3d, 0x4a, + 0xea, 0xb3, 0x8f, 0x6e, 0x68, 0x66, 0x4c, 0xa4, 0xa0, 0x7b, 0x72, 0x3b, + 0x34, 0x1a, 0xce, 0x2e, 0xb2, 0x19, 0xbb, 0x58, 0xd6, 0x6f, 0x65, 0x6b, + 0x47, 0x62, 0xea, 0x55, 0xf2, 0xcf, 0x91, 0xdd, 0xba, 0x8b, 0xfd, 0x5f, + 0xcf, 0x2f, 0x3c, 0xdb, 0x9f, 0x5a, 0xb7, 0x27, 0xf2, 0x13, 0x93, 0x74, + 0xf5, 0x18, 0x9c, 0x1b, 0x8b, 0x5a, 0x89, 0xa6, 0xa3, 0x25, 0x95, 0x78, + 0x95, 0x37, 0xb7, 0xd0, 0x12, 0x28, 0x70, 0xab, 0x68, 0x8b, 0xb4, 0x61, + 0x40, 0x82, 0x6d, 0x45, 0x24, 0x72, 0x59, 0x62, 0x3f, 0xa4, 0xf1, 0x93, + 0x22, 0xa0, 0x18, 0x17, 0x1c, 0x18, 0x10, 0x4c, 0x94, 0x9c, 0x92, 0x71, + 0x75, 0x89, 0x53, 0x2a, 0x0f, 0x17, 0xf2, 0x65, 0x8b, 0x8a, 0xa4, 0xd7, + 0xdb, 0x3e, 0x69, 0x93, 0xa8, 0xcb, 0x92, 0xab, 0x0a, 0x6e, 0x98, 0x13, + 0x5d, 0xaa, 0x23, 0xf2, 0xcb, 0x48, 0x2e, 0x2e, 0x5b, 0x65, 0x6f, 0x18, + 0x50, 0x8e, 0x5e, 0x6d, 0xa4, 0xb5, 0xe3, 0xd2, 0x54, 0x51, 0x9f, 0x0c, + 0x8a, 0x9f, 0x74, 0x26, 0xe9, 0xde, 0xbc, 0xe4, 0x80, 0x74, 0xc2, 0x73, + 0x9b, 0x6a, 0x33, 0xd5, 0x92, 0xe2, 0xcc, 0x44, 0x2c, 0x34, 0x30, 0x79, + 0x11, 0x65, 0xf3, 0xd6, 0x91, 0xad, 0x75, 0xa8, 0x21, 0x3e, 0x21, 0xc0, + 0xc5, 0xd5, 0xb1, 0x7e, 0xe8, 0x5b, 0x61, 0x1c, 0x05, 0xcb, 0x9d, 0x21, + 0x1f, 0x2c, 0x31, 0x7b, 0x76, 0x1f, 0xde, 0xbe, 0xfd, 0xa2, 0x9a, 0xe4, + 0xcc, 0x55, 0x9f, 0xaf, 0x52, 0xef, 0xb1, 0x48, 0x3a, 0x97, 0xb6, 0xc4, + 0xdd, 0x2f, 0x7e, 0xb4, 0xde, 0x6d, 0xfd, 0x2d, 0x4d, 0xf7, 0xbe, 0xbf, + 0x4b, 0x63, 0x32, 0xfe, 0x4c, 0x59, 0x36, 0x63, 0x0f, 0xb5, 0xd6, 0x13, + 0xa9, 0xb4, 0x67, 0xa9, 0x19, 0xf6, 0xdf, 0x5e, 0x81, 0x2a, 0xf9, 0xe3, + 0xd6, 0xe2, 0xf2, 0x51, 0x61, 0xf5, 0xb7, 0x4d, 0x0e, 0xb9, 0xae, 0xff, + 0xcb, 0xf4, 0xad, 0xa3, 0x33, 0xc4, 0xe3, 0xa0, 0x4d, 0x92, 0xca, 0xb1, + 0xf0, 0x80, 0x59, 0x34, 0x81, 0x08, 0x32, 0x27, 0x18, 0x5c, 0x85, 0x0a, + 0x80, 0x41, 0x7c, 0x88, 0x36, 0x3c, 0x03, 0x8a, 0xa1, 0x65, 0xd4, 0x96, + 0x8e, 0x13, 0x8c, 0xea, 0x0d, 0x2c, 0x5d, 0x1a, 0xe2, 0x11, 0x01, 0xab, + 0x23, 0x25, 0x51, 0x00, 0xa4, 0xff, 0xfb, 0xd4, 0x40, 0x1c, 0x80, 0x05, + 0x82, 0x75, 0xc2, 0xe9, 0x89, 0x4b, 0x78, 0xab, 0x8e, 0xa8, 0x5d, 0x25, + 0x29, 0x6f, 0x55, 0xc5, 0xc7, 0x0f, 0xe6, 0x25, 0x2d, 0xea, 0xc3, 0x3a, + 0xa1, 0xbc, 0x96, 0x25, 0xbc, 0xd0, 0x6d, 0x64, 0x78, 0x44, 0x28, 0x26, + 0x21, 0x9a, 0x96, 0x28, 0x9a, 0x75, 0xb6, 0x3b, 0x02, 0xa4, 0x41, 0xa2, + 0xe6, 0x54, 0xc2, 0x78, 0x41, 0xb6, 0xb0, 0x12, 0x23, 0x48, 0xb2, 0x48, + 0x44, 0xf6, 0xb1, 0xa7, 0xf8, 0x97, 0x6e, 0x9f, 0x4f, 0xd5, 0x6f, 0x44, + 0x29, 0x94, 0x71, 0x86, 0x95, 0x83, 0x2d, 0x32, 0x46, 0xde, 0x36, 0xf9, + 0xa0, 0x4b, 0x0d, 0xad, 0xe3, 0x48, 0x84, 0x4a, 0xa5, 0x8a, 0x4a, 0x72, + 0x4a, 0x0e, 0x44, 0xba, 0xaa, 0xbe, 0x6c, 0xb4, 0x47, 0x88, 0xa7, 0x72, + 0x5a, 0xcb, 0x5f, 0xfe, 0x5d, 0x2a, 0xbc, 0xfb, 0xee, 0x51, 0xfd, 0xae, + 0x9e, 0xcf, 0x53, 0xed, 0xff, 0x55, 0xfd, 0xdf, 0x8e, 0x5f, 0x66, 0x6c, + 0xe2, 0x70, 0xea, 0x25, 0xba, 0xcc, 0xed, 0x26, 0xbc, 0x17, 0xfd, 0xea, + 0xb5, 0x7b, 0xac, 0xbe, 0xc3, 0xb1, 0xeb, 0x6e, 0xdb, 0x4b, 0x64, 0x65, + 0x7f, 0x63, 0x62, 0x47, 0xcc, 0x9c, 0x40, 0x42, 0xba, 0x08, 0x0a, 0x49, + 0x53, 0x6e, 0x54, 0xf4, 0x64, 0x4a, 0x36, 0xb0, 0x16, 0x62, 0x01, 0x78, + 0x32, 0x16, 0x25, 0x6c, 0x11, 0x40, 0x64, 0xba, 0x37, 0x69, 0x65, 0x1c, + 0x9b, 0x2a, 0xb2, 0x99, 0x55, 0x22, 0x70, 0x50, 0x46, 0x4d, 0xa2, 0xa4, + 0xb2, 0xe9, 0x0a, 0xd0, 0x53, 0x6c, 0xfc, 0x4e, 0x1b, 0x1b, 0x60, 0x55, + 0x14, 0x85, 0xcf, 0x91, 0xc0, 0xba, 0x77, 0x34, 0xca, 0x0a, 0x9e, 0xef, + 0x48, 0x64, 0x88, 0xf1, 0xbd, 0x42, 0xd3, 0xb0, 0x9c, 0xea, 0x21, 0x4c, + 0x64, 0x42, 0x4f, 0x66, 0x4c, 0x1f, 0x1b, 0x8a, 0x0b, 0x59, 0xb5, 0x75, + 0x59, 0xc9, 0x2d, 0xee, 0x6c, 0x92, 0xcc, 0xb6, 0xcc, 0x91, 0x1f, 0xca, + 0x93, 0xe1, 0x74, 0x96, 0x55, 0x2b, 0x18, 0xb5, 0x16, 0x53, 0x2a, 0xbd, + 0x4a, 0x59, 0x08, 0x5e, 0x4f, 0xce, 0x0b, 0x65, 0xc2, 0x3b, 0xb0, 0x9a, + 0x55, 0x05, 0xb5, 0xcb, 0x46, 0x3f, 0x50, 0x46, 0xbf, 0xfb, 0x7f, 0xc2, + 0x57, 0x6e, 0x4a, 0x7e, 0x1f, 0x71, 0x13, 0xa5, 0x29, 0x2f, 0xf6, 0x15, + 0xe6, 0x9e, 0x27, 0xf3, 0x2a, 0x47, 0x9a, 0xa8, 0x1d, 0xd1, 0x99, 0x5d, + 0xde, 0x3e, 0xfb, 0x69, 0x1a, 0x99, 0x3a, 0x18, 0x46, 0x3f, 0xab, 0x5a, + 0x89, 0x00, 0x92, 0x59, 0x43, 0x5b, 0x60, 0x8b, 0x43, 0x81, 0x44, 0x0b, + 0x93, 0x32, 0x84, 0xa1, 0x33, 0x6d, 0x1b, 0x18, 0x13, 0x90, 0x2c, 0x34, + 0x5c, 0x68, 0xb8, 0x7d, 0x81, 0xb3, 0x33, 0x41, 0x30, 0x1c, 0x19, 0x22, + 0x13, 0x28, 0x0a, 0x40, 0x2c, 0xfd, 0xb8, 0x36, 0x82, 0x61, 0xf5, 0x4c, + 0x69, 0xc3, 0x50, 0x41, 0x66, 0xc2, 0xa4, 0xa5, 0x06, 0x39, 0x3a, 0x8c, + 0x49, 0x19, 0xb2, 0x48, 0x38, 0x23, 0x34, 0x26, 0x9b, 0xb5, 0x9c, 0xb2, + 0x68, 0x60, 0x65, 0x31, 0x8a, 0x59, 0xb6, 0x8d, 0x10, 0x9d, 0x82, 0x90, + 0x89, 0x4d, 0x7b, 0x68, 0x14, 0x5b, 0x57, 0x99, 0x72, 0xac, 0xb7, 0x12, + 0x64, 0xb2, 0xd1, 0x49, 0x12, 0x44, 0x28, 0xa0, 0x91, 0xe4, 0xe4, 0x51, + 0x88, 0x4a, 0xea, 0xd4, 0x76, 0xbb, 0x52, 0x66, 0x09, 0x49, 0x0e, 0x36, + 0x9c, 0x21, 0x89, 0xd6, 0x67, 0xf2, 0x84, 0x7d, 0xc3, 0x32, 0xb7, 0xf8, + 0xc9, 0x2a, 0xbb, 0xcb, 0xf7, 0xeb, 0xff, 0xf7, 0xfc, 0xf0, 0xf3, 0xaf, + 0x7b, 0x1f, 0xbf, 0x2a, 0xaf, 0xc2, 0x3b, 0xb0, 0xd8, 0x2a, 0xd0, 0x13, + 0xe3, 0x30, 0x0a, 0xa7, 0x0c, 0xb1, 0x2c, 0xdb, 0xef, 0x6c, 0x6d, 0x7e, + 0x2a, 0x25, 0x40, 0x01, 0x85, 0x05, 0x40, 0x90, 0x36, 0x4c, 0x0c, 0xbc, + 0x19, 0x7b, 0xcd, 0x8f, 0x97, 0x2b, 0x44, 0x24, 0x7a, 0xb3, 0xc6, 0x1c, + 0xa6, 0xab, 0x1d, 0x04, 0xa6, 0x47, 0x05, 0xce, 0x09, 0x07, 0x30, 0xc9, + 0x62, 0xb5, 0x5f, 0x11, 0x99, 0xf5, 0xa2, 0x80, 0xc0, 0xe1, 0xb4, 0xd4, + 0xab, 0xab, 0x7c, 0x5b, 0x19, 0xc3, 0x8b, 0x53, 0x30, 0x6a, 0x11, 0x11, + 0xb6, 0xb4, 0x66, 0xd8, 0x33, 0x0b, 0x50, 0x8d, 0x46, 0xda, 0x64, 0x98, + 0x8b, 0x4d, 0x60, 0xab, 0x0c, 0xc8, 0xbc, 0xe5, 0x50, 0x44, 0x94, 0x56, + 0x34, 0x0c, 0x8a, 0xd0, 0xa4, 0xd9, 0x2c, 0xc4, 0xca, 0xef, 0x22, 0x1a, + 0x49, 0x26, 0xe7, 0x1a, 0xb9, 0x91, 0xc1, 0x5b, 0x44, 0xda, 0xb0, 0x24, + 0x49, 0x3d, 0x0f, 0xc5, 0xbc, 0xfd, 0x02, 0xcd, 0x52, 0xad, 0xb0, 0xe9, + 0x69, 0x58, 0xd6, 0x28, 0x47, 0xa8, 0x50, 0xa8, 0xaf, 0xcc, 0x85, 0xd2, + 0x75, 0x73, 0x9d, 0xdc, 0x72, 0x32, 0x84, 0x33, 0x3e, 0x56, 0xfd, 0x46, + 0xac, 0x3f, 0xf2, 0xdb, 0xf5, 0x95, 0x3c, 0xba, 0x9f, 0xf7, 0xef, 0x7b, + 0x11, 0xc6, 0x21, 0x75, 0x07, 0x56, 0xde, 0x6d, 0xb4, 0xf7, 0xea, 0x0a, + 0x4b, 0x77, 0x9f, 0xed, 0xad, 0xad, 0xa3, 0x33, 0xea, 0xc9, 0x87, 0xa5, + 0x43, 0xf2, 0x48, 0x48, 0x70, 0x50, 0x1f, 0xce, 0xbd, 0xd8, 0xd7, 0x19, + 0xa6, 0x6c, 0x3d, 0x1c, 0xd4, 0xa2, 0x2c, 0x38, 0x55, 0x95, 0xd0, 0x12, + 0x4a, 0xa7, 0x56, 0x47, 0xad, 0xa5, 0x5b, 0x52, 0x99, 0xca, 0xc2, 0xc6, + 0x19, 0x92, 0x17, 0x34, 0x6a, 0x58, 0x76, 0x88, 0x0c, 0x3e, 0x99, 0xff, + 0x71, 0x09, 0x75, 0x90, 0x34, 0x2e, 0x38, 0x44, 0x7d, 0x66, 0x22, 0x88, + 0x83, 0x78, 0x14, 0x29, 0x12, 0x71, 0xe1, 0xe4, 0x44, 0x4b, 0xb6, 0xdb, + 0xc6, 0x10, 0x90, 0x09, 0x17, 0xff, 0xfb, 0xd4, 0x40, 0x2d, 0x00, 0x05, + 0x64, 0x73, 0x42, 0xe9, 0x8c, 0x4b, 0x7a, 0xb2, 0x0e, 0xb8, 0x6d, 0x25, + 0x29, 0x6f, 0x15, 0xd5, 0xd5, 0x0b, 0xe6, 0x31, 0x2d, 0xea, 0xbf, 0x3a, + 0xe1, 0x34, 0x94, 0xa5, 0xbc, 0xef, 0x3b, 0x7a, 0xcb, 0x8c, 0x20, 0x82, + 0xd3, 0x50, 0xb2, 0x8a, 0x9d, 0x5e, 0xe0, 0xc2, 0xcb, 0xd2, 0x3e, 0x67, + 0x69, 0x2a, 0xe6, 0xdd, 0xa8, 0x7e, 0x4a, 0x66, 0x11, 0x92, 0x2f, 0x39, + 0x63, 0x37, 0xaa, 0x28, 0xb6, 0x2e, 0xc5, 0xc5, 0xeb, 0xca, 0x6c, 0x42, + 0x6e, 0xae, 0x9c, 0x6a, 0xf2, 0xe1, 0x3d, 0xff, 0xc6, 0xbc, 0x72, 0x0d, + 0xff, 0x5e, 0xf6, 0x1e, 0xdb, 0x6a, 0xb2, 0xeb, 0xe7, 0xdf, 0xe3, 0xb5, + 0x89, 0x66, 0x2b, 0xb2, 0x4b, 0x65, 0x6a, 0xf8, 0xe5, 0x42, 0xfe, 0xcf, + 0x37, 0xb4, 0x60, 0x91, 0x23, 0x9e, 0xdf, 0xfd, 0xff, 0x5b, 0x23, 0x5f, + 0xc4, 0x44, 0x19, 0x27, 0x4c, 0xd8, 0xa9, 0x92, 0x29, 0x09, 0x8c, 0x48, + 0xad, 0x8c, 0x30, 0x08, 0x93, 0x3c, 0x5c, 0x88, 0x8a, 0x4d, 0x0a, 0x1a, + 0x83, 0x44, 0x12, 0x60, 0xb1, 0xb0, 0xbc, 0xc5, 0x04, 0x24, 0x80, 0xa2, + 0xe8, 0x01, 0x00, 0xa9, 0xa1, 0x44, 0x06, 0x46, 0xcf, 0x32, 0xcb, 0x26, + 0x12, 0x18, 0x23, 0x36, 0xb0, 0x89, 0x74, 0xc4, 0x28, 0x95, 0x06, 0x1f, + 0x06, 0x53, 0x18, 0x2d, 0x02, 0x83, 0x88, 0x13, 0x56, 0x96, 0x45, 0x19, + 0x72, 0xc6, 0x02, 0xcc, 0x9a, 0x3e, 0x7d, 0x62, 0x51, 0xd5, 0xf2, 0xa2, + 0x3e, 0xd8, 0x51, 0xca, 0x1d, 0x8c, 0xd7, 0x6e, 0x70, 0x6c, 0x91, 0x35, + 0x17, 0x14, 0x31, 0xef, 0xa1, 0x7a, 0x24, 0x4c, 0x69, 0x3a, 0x25, 0xe0, + 0xca, 0xc9, 0x59, 0x11, 0xd4, 0x2d, 0xb3, 0x72, 0x14, 0x4d, 0x26, 0x5b, + 0x86, 0x3d, 0x98, 0x36, 0xba, 0x90, 0xc5, 0x30, 0xa3, 0x2c, 0xc4, 0xa4, + 0xe3, 0x0b, 0x8a, 0x9e, 0x73, 0xdf, 0xbd, 0x96, 0xa4, 0xb4, 0xaa, 0x68, + 0xb3, 0x16, 0xde, 0xff, 0xff, 0xcc, 0xaf, 0xb3, 0xaa, 0xff, 0xec, 0xaa, + 0x10, 0x85, 0xfa, 0x7c, 0xf2, 0xae, 0x15, 0xe7, 0x29, 0xdf, 0xb9, 0x4a, + 0xd3, 0xd0, 0x52, 0x35, 0x56, 0x68, 0x66, 0xfb, 0x6b, 0x23, 0x46, 0x65, + 0xd3, 0xa1, 0xea, 0xa6, 0x30, 0x85, 0x28, 0xd3, 0x38, 0x2d, 0x3c, 0x12, + 0xdf, 0x5e, 0x4e, 0x4c, 0x67, 0x53, 0xd3, 0xd6, 0xd6, 0x38, 0x51, 0x2b, + 0x2d, 0xb0, 0xa1, 0xb3, 0x0a, 0xdc, 0x9a, 0xb8, 0xa7, 0x12, 0xd4, 0x33, + 0xcb, 0x9d, 0xb5, 0x34, 0x58, 0x3c, 0xfb, 0xeb, 0xd3, 0xb8, 0xb9, 0xa4, + 0xcc, 0x95, 0xe9, 0x02, 0x83, 0xe4, 0x4a, 0xb9, 0x18, 0xc8, 0xd8, 0x69, + 0x40, 0xf3, 0x09, 0x9e, 0x93, 0x5a, 0x72, 0x7f, 0x1b, 0x56, 0xf5, 0x44, + 0x2c, 0x15, 0xca, 0x51, 0x12, 0xa8, 0x99, 0x2d, 0xab, 0x39, 0x90, 0x15, + 0x46, 0x85, 0x30, 0x74, 0x26, 0x69, 0x0a, 0x44, 0x23, 0xd2, 0xb9, 0xc6, + 0x76, 0x66, 0x09, 0x23, 0x2e, 0xa6, 0xcd, 0x28, 0x3c, 0x93, 0xa3, 0x89, + 0xd4, 0x3f, 0x39, 0x59, 0x56, 0xbe, 0xe6, 0x9e, 0xab, 0x35, 0xb5, 0xa8, + 0x4b, 0x17, 0xf2, 0xd4, 0x4a, 0x2f, 0x8d, 0x4e, 0xb3, 0xd7, 0xf9, 0x75, + 0xeb, 0x32, 0xbe, 0x66, 0xc2, 0x32, 0x85, 0x57, 0x8e, 0xce, 0xb2, 0xbd, + 0xdf, 0x52, 0x7e, 0x70, 0xdb, 0x9e, 0x35, 0xe6, 0xb6, 0x4a, 0xd6, 0x74, + 0x92, 0xa8, 0x55, 0x33, 0x09, 0xfa, 0x5a, 0x2b, 0x06, 0xa7, 0xbb, 0x5b, + 0xb5, 0xba, 0x46, 0xc9, 0xfe, 0x63, 0xe2, 0x63, 0xd8, 0x19, 0x2a, 0x2b, + 0x16, 0x61, 0x08, 0xa4, 0xf0, 0x64, 0xb2, 0xcc, 0x28, 0x26, 0x79, 0x08, + 0x8d, 0x19, 0xe1, 0xa3, 0x43, 0x83, 0x46, 0x1b, 0x21, 0x36, 0x98, 0x38, + 0x74, 0x4b, 0x15, 0x11, 0x3e, 0x27, 0xd3, 0x79, 0xcb, 0xc9, 0x95, 0x91, + 0x28, 0x6d, 0xa1, 0x00, 0x9c, 0x54, 0x64, 0x8c, 0x54, 0xe4, 0xcf, 0xfc, + 0x24, 0x1c, 0x49, 0x83, 0x2a, 0x0a, 0x03, 0x46, 0x44, 0x68, 0xb5, 0x46, + 0x97, 0x3b, 0x34, 0x0b, 0x96, 0x33, 0x4d, 0xaa, 0xb0, 0xf1, 0x64, 0xca, + 0x54, 0xa3, 0x2a, 0x30, 0x6d, 0x92, 0x04, 0x4b, 0xd1, 0x31, 0xd9, 0x1b, + 0x40, 0x86, 0xcf, 0x97, 0x12, 0xa1, 0xa8, 0x93, 0xa1, 0x15, 0x22, 0xc4, + 0x37, 0x4e, 0x6d, 0x94, 0x03, 0x51, 0x56, 0xe0, 0xa6, 0x4e, 0x0f, 0xfb, + 0x72, 0x8b, 0x13, 0xb6, 0x95, 0x75, 0x63, 0x13, 0x52, 0x78, 0xfd, 0x4a, + 0xbe, 0x6e, 0xf9, 0xc3, 0x63, 0x75, 0xe3, 0x74, 0xa7, 0xf1, 0xd9, 0x53, + 0xd8, 0x9e, 0x25, 0xff, 0xff, 0xef, 0x77, 0xab, 0xee, 0x8d, 0x6f, 0x82, + 0x94, 0xd3, 0x7d, 0xf2, 0xd4, 0xed, 0x59, 0xa4, 0xd2, 0x8b, 0x45, 0x27, + 0xce, 0xd8, 0x9a, 0x7b, 0x16, 0xdb, 0x76, 0xbb, 0x6b, 0xf5, 0xb2, 0x23, + 0xfc, 0x80, 0xd1, 0xc0, 0xc9, 0xa5, 0x89, 0xc5, 0x89, 0xd1, 0xb8, 0x37, + 0x32, 0x63, 0x0a, 0x90, 0x90, 0xd2, 0x4c, 0xe3, 0x06, 0xd0, 0x20, 0x3f, + 0x04, 0x2c, 0x0a, 0xa2, 0xdb, 0xa7, 0x23, 0x04, 0xe8, 0x9b, 0x6b, 0x44, + 0xc0, 0x18, 0x1d, 0x14, 0xb4, 0x48, 0xc9, 0xa3, 0x04, 0x26, 0x17, 0x25, + 0x38, 0x65, 0xe7, 0xf0, 0x85, 0xc2, 0xea, 0x98, 0x60, 0xfc, 0x0f, 0xb6, + 0x91, 0xbd, 0x30, 0x80, 0x99, 0x3b, 0x44, 0xaa, 0x33, 0xc8, 0xa0, 0xc5, + 0xbd, 0x0d, 0x4c, 0x85, 0x21, 0x43, 0x2a, 0x9f, 0x54, 0xa6, 0x79, 0x33, + 0xa6, 0x49, 0x11, 0x26, 0x4f, 0x73, 0x90, 0xb2, 0x09, 0xa2, 0x45, 0x44, + 0xe7, 0xf1, 0x1d, 0xaa, 0x10, 0x9c, 0x58, 0x2a, 0x4c, 0xdc, 0x8d, 0x91, + 0x48, 0xf4, 0x6e, 0x9a, 0x85, 0xff, 0xfb, 0xd4, 0x40, 0x3c, 0x80, 0x05, + 0x44, 0x71, 0x43, 0x69, 0x29, 0x4b, 0x7a, 0xaf, 0x8e, 0x38, 0x7f, 0x31, + 0x89, 0x6f, 0x55, 0x9d, 0xd3, 0x0d, 0xe6, 0x25, 0x2d, 0xea, 0xa6, 0x3a, + 0xe1, 0x3c, 0x94, 0x99, 0xbc, 0x2d, 0xec, 0x8d, 0x56, 0x19, 0xb4, 0x10, + 0xfa, 0xc5, 0xa5, 0xf3, 0x3b, 0x72, 0xdf, 0xbe, 0xb2, 0x57, 0xe1, 0xb5, + 0x1a, 0xdf, 0xf7, 0x21, 0xbb, 0x0b, 0x9c, 0xe7, 0x1f, 0xef, 0xdf, 0xfe, + 0xfd, 0x5c, 0xea, 0x33, 0x94, 0x2f, 0xca, 0x3e, 0x19, 0x53, 0xf9, 0x0f, + 0xcb, 0xe6, 0xcf, 0x8d, 0xd0, 0x65, 0x44, 0x78, 0x97, 0x87, 0xfb, 0x6d, + 0x6c, 0x6a, 0x64, 0x86, 0x25, 0xac, 0x27, 0x28, 0x4e, 0x57, 0x92, 0x50, + 0xe0, 0x5d, 0x0f, 0x0d, 0x14, 0x82, 0x02, 0x83, 0xb7, 0xca, 0xe2, 0xd4, + 0x54, 0x3e, 0x49, 0x1a, 0xc7, 0x20, 0x4f, 0x01, 0xab, 0x2c, 0x89, 0x4d, + 0x59, 0x5a, 0x73, 0xdb, 0x39, 0x66, 0xd3, 0x1e, 0x0e, 0xa7, 0x04, 0xe7, + 0x5b, 0x6c, 0xff, 0x99, 0x5e, 0x58, 0x4a, 0xb4, 0xe6, 0xe6, 0x68, 0xf0, + 0x80, 0x89, 0xb2, 0x29, 0x94, 0x28, 0xa2, 0xc2, 0xa5, 0x64, 0xc4, 0xd9, + 0xc4, 0x95, 0x82, 0x27, 0xdb, 0x65, 0x4f, 0x42, 0x22, 0x52, 0xf2, 0x46, + 0x47, 0x04, 0x30, 0x3a, 0x68, 0x0b, 0x6c, 0x99, 0xc7, 0x22, 0x85, 0x01, + 0x09, 0xf6, 0x0d, 0x92, 0xa3, 0x5d, 0x99, 0x1d, 0x4d, 0xf2, 0x95, 0x46, + 0xd8, 0xb8, 0xac, 0x8d, 0x84, 0xd8, 0x89, 0x20, 0xab, 0xf9, 0x2f, 0xd4, + 0xaa, 0x3b, 0x4a, 0xce, 0x28, 0x23, 0x5f, 0xa8, 0xaf, 0x67, 0x59, 0x6e, + 0x2c, 0xe7, 0xcd, 0xfb, 0x38, 0xfd, 0xf7, 0xe1, 0x5f, 0x6d, 0xf2, 0xba, + 0x5e, 0xa2, 0xda, 0x7f, 0xff, 0x9f, 0xd7, 0xf5, 0x97, 0x7e, 0x3e, 0x39, + 0x5b, 0x39, 0xec, 0x7f, 0x6b, 0xc2, 0x1b, 0x70, 0x4c, 0x8c, 0x2d, 0x08, + 0x07, 0x25, 0x76, 0x86, 0x97, 0x7f, 0x76, 0xda, 0x44, 0x66, 0x4a, 0x62, + 0x03, 0x2b, 0x4f, 0x13, 0x87, 0x78, 0x64, 0xb8, 0x5c, 0xbc, 0xa6, 0xb9, + 0x92, 0x30, 0xc2, 0x88, 0x4b, 0x3c, 0x62, 0x98, 0x49, 0x12, 0xe6, 0x42, + 0x21, 0xb8, 0x06, 0xd1, 0x8a, 0xd1, 0xa6, 0xda, 0x4c, 0xe3, 0x93, 0x51, + 0x00, 0x96, 0xcd, 0x20, 0x24, 0x2c, 0x4b, 0x88, 0x87, 0x79, 0x13, 0x97, + 0x1c, 0x91, 0x68, 0x92, 0x16, 0x49, 0x1c, 0x57, 0x25, 0x66, 0xc9, 0x46, + 0x50, 0xa4, 0x85, 0x41, 0x21, 0x21, 0x0a, 0x03, 0x62, 0xe4, 0xa1, 0x50, + 0xf1, 0xf6, 0x86, 0x05, 0x85, 0x98, 0xbc, 0x25, 0x43, 0x28, 0x79, 0x1b, + 0xed, 0xdb, 0xdc, 0xbb, 0x29, 0x90, 0x18, 0x4f, 0x0e, 0xef, 0x33, 0x13, + 0xdd, 0x59, 0xd4, 0x94, 0x64, 0x11, 0x67, 0x09, 0x1a, 0x6e, 0xcd, 0x0a, + 0xf6, 0xa5, 0x97, 0x5e, 0x13, 0xc4, 0x8f, 0x5f, 0x56, 0xd4, 0xf0, 0xa5, + 0x19, 0x6a, 0x77, 0x2b, 0x52, 0xa1, 0x2d, 0x75, 0xe6, 0xc3, 0x2e, 0x77, + 0x91, 0xcf, 0xb1, 0xae, 0xef, 0x15, 0x3a, 0x7e, 0xbf, 0xa8, 0x7f, 0xe3, + 0x56, 0xfd, 0xbf, 0x59, 0x3f, 0x55, 0x7f, 0xb7, 0x3d, 0xb9, 0xde, 0xe5, + 0xff, 0x49, 0xbd, 0xd2, 0x18, 0x0c, 0xc6, 0x68, 0xca, 0xa9, 0x15, 0xed, + 0x1a, 0x64, 0xfe, 0x4e, 0x26, 0x15, 0x38, 0x54, 0x2b, 0x05, 0x51, 0x97, + 0x34, 0x68, 0x4a, 0xc8, 0xa5, 0x13, 0x8b, 0x92, 0xb4, 0xca, 0x8d, 0x2c, + 0x25, 0x30, 0x40, 0x74, 0xfa, 0x21, 0xa6, 0xc8, 0x86, 0xd6, 0xb4, 0x96, + 0xf1, 0x7b, 0xe6, 0xb4, 0xc5, 0xd8, 0x46, 0x42, 0xb1, 0xf4, 0x24, 0x2c, + 0x2e, 0x32, 0x4a, 0x08, 0x1f, 0x61, 0x19, 0x21, 0x38, 0x44, 0x13, 0x84, + 0x56, 0x48, 0x60, 0xf3, 0xe9, 0x48, 0x07, 0x3d, 0x11, 0xe4, 0x76, 0xe8, + 0x8a, 0x88, 0x15, 0x67, 0xc0, 0x90, 0x92, 0x40, 0x7a, 0x10, 0xa4, 0x60, + 0x95, 0x51, 0xe1, 0xcf, 0x25, 0x04, 0x23, 0x1e, 0x50, 0x1a, 0x7a, 0x44, + 0xf7, 0xc2, 0x27, 0x04, 0x0c, 0x59, 0x41, 0x89, 0x10, 0x22, 0xa9, 0x40, + 0x8e, 0x8b, 0xca, 0x4d, 0xe3, 0x61, 0x75, 0x98, 0x8b, 0x91, 0xfd, 0xf3, + 0xe6, 0x36, 0x1c, 0xcb, 0xd7, 0xf5, 0x8d, 0x2f, 0xab, 0x9c, 0xc6, 0xce, + 0xb4, 0xae, 0x10, 0x93, 0xdc, 0xd9, 0xdf, 0xbe, 0x3e, 0xee, 0x5e, 0x6f, + 0xb4, 0x62, 0x37, 0xba, 0x6c, 0x8c, 0xe9, 0xd5, 0xac, 0x59, 0xaf, 0x0e, + 0xcc, 0xb7, 0x9b, 0x26, 0x47, 0xa7, 0x6a, 0x12, 0xe9, 0x6d, 0xfb, 0xef, + 0x74, 0x91, 0x93, 0x32, 0x84, 0x5a, 0x18, 0x5c, 0xb4, 0x49, 0xa1, 0x51, + 0x0c, 0x46, 0x26, 0x17, 0x17, 0x49, 0x6d, 0xc0, 0xfd, 0x0c, 0x58, 0xea, + 0xc4, 0xda, 0xbc, 0xb1, 0x04, 0x90, 0x4a, 0xfc, 0xeb, 0xa7, 0xa7, 0xce, + 0x0f, 0x32, 0x95, 0x92, 0x0a, 0xc1, 0xdd, 0x66, 0xc0, 0x91, 0x4a, 0x87, + 0xba, 0xa8, 0x4d, 0xb9, 0xa6, 0x27, 0xbc, 0x7d, 0x03, 0x51, 0x36, 0x7d, + 0x62, 0x2b, 0x33, 0x22, 0xcb, 0xdf, 0x52, 0x08, 0x60, 0x3c, 0x27, 0x8c, + 0x69, 0x88, 0xb9, 0x56, 0x51, 0x95, 0x7a, 0xfa, 0xfa, 0x78, 0xad, 0x42, + 0x14, 0x15, 0x22, 0x02, 0x34, 0x64, 0x90, 0x5c, 0x99, 0x35, 0x8a, 0xb4, + 0xbc, 0x94, 0x3b, 0x14, 0xd6, 0x39, 0xe4, 0x24, 0x8b, 0x2d, 0x2e, 0x99, + 0x73, 0x48, 0xe6, 0xc4, 0x76, 0x0d, 0x46, 0xb2, 0x14, 0xb6, 0x6d, 0x7a, + 0xd7, 0xfd, 0x82, 0xd7, 0x2d, 0x62, 0x19, 0xb7, 0x1b, 0xf7, 0xbb, 0x5b, + 0x9f, 0xee, 0xda, 0x79, 0x5e, 0x55, 0x73, 0xfe, 0x30, 0xbf, 0xf7, 0x3e, + 0x4a, 0xe3, 0x5b, 0x55, 0xaf, 0xad, 0xad, 0xc6, 0x75, 0x8d, 0x6e, 0x7b, + 0x8c, 0x4a, 0x30, 0x9d, 0x52, 0xff, 0xfb, 0xd4, 0x40, 0x53, 0x00, 0x05, + 0x4e, 0x74, 0x42, 0xe9, 0x8c, 0x4b, 0x78, 0xa6, 0x0e, 0x88, 0x8f, 0x31, + 0x29, 0x6f, 0x15, 0x3d, 0xcf, 0x0f, 0xe4, 0xa5, 0x2d, 0xea, 0xbe, 0x38, + 0xe1, 0xbc, 0x96, 0x25, 0xbd, 0xb6, 0xee, 0xcd, 0xa0, 0x19, 0x15, 0xe1, + 0x9e, 0x61, 0xf7, 0xdf, 0x6b, 0x1b, 0x99, 0x70, 0x77, 0xb9, 0x21, 0x19, + 0x3c, 0x3d, 0x78, 0x98, 0xda, 0xf2, 0x52, 0xf2, 0x63, 0xa2, 0x97, 0x90, + 0x2a, 0x4c, 0x4c, 0x4a, 0x91, 0xc2, 0xd3, 0x79, 0xf2, 0x39, 0x1c, 0x43, + 0x11, 0x48, 0x6b, 0x51, 0x37, 0x33, 0x01, 0x72, 0xcd, 0x23, 0x3e, 0xc3, + 0xd9, 0x25, 0xb3, 0xa1, 0x16, 0x1e, 0x64, 0xcb, 0xd3, 0x2f, 0x48, 0x17, + 0x62, 0x4c, 0xb9, 0xae, 0xab, 0x68, 0x8d, 0xa3, 0xec, 0xa7, 0x45, 0x10, + 0xae, 0x82, 0xb3, 0x38, 0xf2, 0xd5, 0x82, 0xa6, 0x51, 0xa3, 0x23, 0x96, + 0x6c, 0x24, 0x65, 0x65, 0xde, 0xcc, 0x56, 0x45, 0xa9, 0x17, 0x47, 0x33, + 0xfd, 0x94, 0x9e, 0x8d, 0x54, 0xfd, 0x9e, 0x4e, 0x3e, 0x2d, 0xb9, 0x1b, + 0x33, 0x7b, 0x46, 0x22, 0xf8, 0xa4, 0xa3, 0x35, 0x48, 0xe7, 0x6c, 0xc5, + 0xd0, 0xb3, 0x5b, 0x26, 0x1a, 0x7d, 0xce, 0xa6, 0xa6, 0x5c, 0xfc, 0x2e, + 0xe7, 0x50, 0xbf, 0x5f, 0x25, 0xb5, 0xe7, 0xf3, 0x54, 0x9c, 0x25, 0x3f, + 0x7f, 0xff, 0xeb, 0xef, 0xf9, 0xeb, 0xce, 0xee, 0xeb, 0xef, 0xdd, 0x9c, + 0xe1, 0xee, 0xab, 0x32, 0x52, 0xc4, 0xf4, 0x15, 0x59, 0xa1, 0x99, 0x9e, + 0x7e, 0xdb, 0x69, 0x12, 0xfd, 0x5e, 0x11, 0x0d, 0x9a, 0x34, 0x05, 0x0e, + 0x94, 0x1d, 0x1c, 0xc4, 0x8a, 0x30, 0x65, 0x12, 0x36, 0x0c, 0xa6, 0x91, + 0x39, 0x20, 0xa8, 0x3c, 0x46, 0x1f, 0x2b, 0x65, 0x97, 0x55, 0x23, 0x68, + 0x91, 0xb4, 0xbb, 0x2e, 0xb1, 0xd4, 0x08, 0x1a, 0x28, 0xc1, 0x99, 0x36, + 0x4a, 0x46, 0xb2, 0x08, 0xa3, 0x0d, 0xc9, 0x23, 0x0a, 0x4c, 0xaa, 0x8d, + 0x0d, 0x18, 0x72, 0x88, 0xd7, 0x20, 0x0b, 0x45, 0x13, 0x07, 0x8e, 0xa9, + 0x03, 0x86, 0xd2, 0xe8, 0x15, 0x82, 0x96, 0xb0, 0xa4, 0x13, 0x2e, 0x49, + 0x02, 0x02, 0x32, 0xac, 0x2e, 0x1a, 0x4c, 0xc2, 0x72, 0x7c, 0xa1, 0x0c, + 0xf6, 0x48, 0xc5, 0xa1, 0x61, 0x58, 0x36, 0x54, 0xfb, 0x0d, 0xc8, 0xcb, + 0xb1, 0x52, 0x16, 0xcf, 0x3b, 0x17, 0x94, 0x73, 0xed, 0xca, 0x13, 0xf2, + 0x40, 0xa6, 0xf9, 0x42, 0x7b, 0xf2, 0x57, 0x9b, 0x9b, 0xbf, 0x76, 0x70, + 0xa8, 0x66, 0xd5, 0xf8, 0x65, 0x78, 0x54, 0x24, 0xe9, 0xdc, 0x5c, 0xfa, + 0xff, 0xff, 0xf3, 0x2a, 0xab, 0x36, 0x57, 0x51, 0xf2, 0xbf, 0x5f, 0xf9, + 0xa7, 0xbf, 0xdc, 0x2f, 0x52, 0x8a, 0x5b, 0x04, 0x40, 0x3b, 0x43, 0x3b, + 0x3b, 0xbb, 0x7d, 0xf5, 0xb2, 0x35, 0xf9, 0x18, 0x5c, 0x4c, 0x0c, 0x02, + 0x21, 0x90, 0x65, 0x44, 0x02, 0x50, 0x68, 0xf9, 0x4d, 0x25, 0x96, 0x23, + 0x5e, 0x58, 0x1f, 0x97, 0x6c, 0x47, 0x45, 0x4e, 0x58, 0x49, 0x2b, 0x78, + 0xdd, 0xe3, 0x27, 0x90, 0xde, 0x65, 0xa5, 0x71, 0x1e, 0x23, 0x78, 0xf8, + 0xf9, 0xec, 0x50, 0x65, 0x11, 0x69, 0x6f, 0x7a, 0x64, 0xab, 0x6e, 0xb1, + 0x35, 0x56, 0xb0, 0xe2, 0x12, 0x3d, 0x8b, 0x08, 0xd4, 0x25, 0xd2, 0x16, + 0x5f, 0xd3, 0xcb, 0x1d, 0x24, 0x7a, 0xc2, 0x66, 0x55, 0x0e, 0x34, 0x88, + 0x44, 0x9b, 0x27, 0x95, 0xb4, 0x38, 0x8d, 0xb6, 0x8f, 0x2f, 0x6a, 0x63, + 0x6c, 0x91, 0x2a, 0x72, 0x45, 0x11, 0x91, 0x20, 0x1b, 0x36, 0x4a, 0x81, + 0x48, 0xa0, 0x3e, 0x36, 0xce, 0x4c, 0x9a, 0x5d, 0x79, 0x36, 0x4b, 0x24, + 0xb2, 0xb2, 0x4e, 0x5d, 0xd0, 0x59, 0xa8, 0xf9, 0xa2, 0xf9, 0x8c, 0xd2, + 0x34, 0x6f, 0xb3, 0x28, 0x9b, 0xf3, 0xb8, 0xf9, 0x27, 0xb2, 0x6e, 0x17, + 0x0f, 0x3b, 0xda, 0x33, 0x1a, 0xcf, 0x05, 0x61, 0x9f, 0xff, 0xff, 0xfe, + 0xf7, 0xed, 0x6f, 0xdd, 0xda, 0xba, 0xbf, 0x3f, 0x0d, 0xdd, 0xbb, 0x55, + 0x46, 0x9e, 0x6d, 0x53, 0xd5, 0x0c, 0x22, 0xb4, 0x72, 0xbb, 0x2c, 0x71, + 0xa3, 0xfb, 0xc5, 0x0b, 0x72, 0xb5, 0x0d, 0x5f, 0x3f, 0x63, 0xc8, 0x69, + 0x38, 0x94, 0x89, 0x21, 0x89, 0x4c, 0xca, 0xaf, 0x08, 0xd1, 0xb1, 0x08, + 0xf4, 0x49, 0x34, 0x38, 0x29, 0x8e, 0xa7, 0x07, 0x4d, 0x2e, 0x4e, 0x7e, + 0x5b, 0x2e, 0xf1, 0xde, 0xb4, 0x3c, 0xa1, 0x92, 0x26, 0xde, 0xf6, 0x1c, + 0x16, 0x52, 0x09, 0xeb, 0x87, 0x37, 0x8a, 0x84, 0x3a, 0x2e, 0x10, 0x4a, + 0xa6, 0xc8, 0x4b, 0xa3, 0x55, 0x08, 0x54, 0xe2, 0xcb, 0x1b, 0x42, 0x11, + 0x0f, 0x56, 0xc2, 0x9c, 0xba, 0x95, 0xbc, 0x94, 0xaa, 0x09, 0x92, 0xa0, + 0x83, 0x6a, 0x09, 0xed, 0x1a, 0xab, 0x2c, 0x5a, 0x88, 0xc8, 0xcb, 0x1e, + 0x24, 0x94, 0x89, 0x11, 0x4c, 0xdb, 0x28, 0x88, 0x95, 0x48, 0xca, 0x0d, + 0xec, 0x3d, 0xe8, 0xde, 0x7d, 0x04, 0x54, 0x65, 0x11, 0x0a, 0x33, 0x89, + 0xce, 0x3b, 0x70, 0x75, 0xf8, 0x12, 0xa4, 0x69, 0xcd, 0x2f, 0x4f, 0x99, + 0xcf, 0x34, 0x06, 0x57, 0xf3, 0xda, 0x94, 0x7c, 0x6b, 0x32, 0x37, 0xbf, + 0x16, 0xad, 0xf3, 0x4a, 0x68, 0x3a, 0x09, 0xdb, 0x92, 0xbb, 0x8b, 0xe5, + 0xd6, 0x68, 0x99, 0x0a, 0x20, 0x6b, 0x9a, 0x27, 0x21, 0x2a, 0x54, 0x45, + 0xa1, 0xd5, 0xde, 0x28, 0x24, 0x0b, 0x20, 0x1a, 0x27, 0x65, 0x00, 0xa0, + 0x52, 0xda, 0xe9, 0x8a, 0x53, 0x9a, 0x44, 0xab, 0x61, 0xad, 0x77, 0xed, + 0xb6, 0xe3, 0x68, 0x4e, 0x0f, 0xa0, 0x6d, 0x20, 0xd2, 0x1c, 0x96, 0xac, + 0x80, 0x64, 0x3f, 0x92, 0x4b, 0xff, 0xfb, 0xd4, 0x40, 0x6c, 0x00, 0x06, + 0x1d, 0x76, 0x3f, 0xe9, 0xec, 0x4b, 0x70, 0xbb, 0x8e, 0xc7, 0xea, 0x31, + 0x29, 0x6e, 0x17, 0x25, 0xd2, 0xff, 0xa6, 0x31, 0x2d, 0xca, 0xd2, 0x33, + 0xe1, 0xfc, 0xf4, 0xa5, 0xbd, 0x7c, 0xd1, 0xb2, 0x32, 0x16, 0x81, 0xb7, + 0x0b, 0x1a, 0xd4, 0x0a, 0x87, 0xf9, 0xd3, 0xa4, 0xe4, 0xc8, 0x8e, 0x60, + 0xbb, 0x46, 0x54, 0x26, 0x32, 0x80, 0xb8, 0x9f, 0x60, 0x4f, 0x47, 0xdb, + 0x21, 0x9c, 0xe6, 0xb0, 0x94, 0xc9, 0x94, 0xc6, 0x8b, 0x1c, 0x9c, 0x11, + 0x17, 0x4d, 0x1a, 0x13, 0x72, 0x44, 0xcb, 0x1f, 0x93, 0x34, 0xd9, 0x60, + 0xb2, 0x21, 0x4e, 0xa0, 0x6d, 0x58, 0x08, 0x05, 0xcd, 0x21, 0x49, 0xb9, + 0xb0, 0x3b, 0x13, 0x8a, 0x4f, 0x21, 0x35, 0x8e, 0xca, 0x4c, 0x89, 0x8d, + 0xcd, 0x96, 0x9a, 0x18, 0x73, 0x69, 0x21, 0x23, 0x27, 0xd7, 0xbc, 0xc3, + 0x42, 0xf5, 0xcf, 0x2d, 0x42, 0x96, 0xcc, 0x24, 0xf5, 0x11, 0x54, 0x16, + 0xd4, 0x12, 0x63, 0x62, 0xa1, 0x56, 0xba, 0xee, 0x9b, 0x0b, 0xa8, 0xa4, + 0x49, 0xa2, 0xac, 0x65, 0x1f, 0x97, 0x0c, 0xf9, 0xfd, 0x77, 0xcf, 0xfc, + 0xb5, 0xb3, 0x7d, 0xc9, 0x88, 0xf5, 0xe9, 0x5b, 0xe9, 0xc8, 0xe4, 0xdb, + 0x32, 0x02, 0x03, 0x44, 0x8b, 0x83, 0xbc, 0x99, 0x60, 0x08, 0x8d, 0x41, + 0xc7, 0x79, 0x8a, 0x5b, 0x42, 0xda, 0x62, 0x59, 0xa6, 0x4c, 0x20, 0x15, + 0x95, 0x3e, 0x2c, 0x95, 0x86, 0xcb, 0x2a, 0xb7, 0x25, 0x96, 0x48, 0xc8, + 0x99, 0x7c, 0xf0, 0x15, 0x25, 0x9c, 0x20, 0x62, 0x63, 0x88, 0xaa, 0xf0, + 0xfa, 0x38, 0xbe, 0x3b, 0xf1, 0x39, 0x0d, 0xd2, 0xd1, 0x14, 0xc9, 0x61, + 0x4d, 0x9b, 0x96, 0x4b, 0x82, 0x87, 0x4e, 0x0f, 0x7a, 0x4d, 0xbc, 0xf0, + 0xc5, 0x20, 0x57, 0x43, 0xd3, 0x6f, 0x64, 0x75, 0x7c, 0xb6, 0xe9, 0x79, + 0xb3, 0xc5, 0x75, 0xa9, 0x82, 0x92, 0x4a, 0xc8, 0xd1, 0x13, 0x95, 0x24, + 0x11, 0x32, 0x88, 0xce, 0x8b, 0xba, 0x62, 0x99, 0x08, 0x11, 0xf7, 0x4d, + 0x12, 0x64, 0x23, 0x8d, 0x93, 0xb2, 0x4a, 0xd2, 0x25, 0xd4, 0x4d, 0x62, + 0x29, 0x89, 0x8a, 0x11, 0x6c, 0x49, 0x06, 0x57, 0x40, 0xd1, 0x59, 0x19, + 0x54, 0xb3, 0x4a, 0xbf, 0x59, 0x66, 0xc9, 0x71, 0x62, 0x7b, 0x61, 0x54, + 0xe6, 0x9a, 0xa4, 0xca, 0x4a, 0x53, 0x5b, 0x64, 0xcf, 0x9c, 0x67, 0x25, + 0x7f, 0xe9, 0xa9, 0x7a, 0x9f, 0x87, 0xa9, 0xc2, 0x12, 0x66, 0x09, 0x5f, + 0xf9, 0x70, 0xa9, 0x64, 0x2e, 0x3b, 0xf3, 0x25, 0xf2, 0xe3, 0x9d, 0x54, + 0xf6, 0x9d, 0xe5, 0x27, 0xa5, 0xba, 0xda, 0x1a, 0x13, 0xa2, 0x6c, 0xe2, + 0xd2, 0x54, 0xb1, 0x56, 0x08, 0x8e, 0x99, 0x59, 0x13, 0x47, 0xcc, 0x4d, + 0x30, 0x5d, 0x13, 0x72, 0x50, 0xd4, 0xd3, 0x53, 0x43, 0xc2, 0x15, 0xd9, + 0x62, 0x5e, 0x27, 0xff, 0xee, 0xb1, 0xbf, 0xc9, 0xd2, 0xb4, 0xe6, 0x62, + 0x44, 0x9c, 0xc5, 0xc1, 0x18, 0x9e, 0x5a, 0x79, 0x18, 0x99, 0x01, 0x23, + 0x40, 0x60, 0x80, 0xb0, 0x30, 0x54, 0x38, 0xd9, 0x39, 0x10, 0xd9, 0x28, + 0x8c, 0xaa, 0x21, 0xa0, 0x40, 0xc3, 0x50, 0x1d, 0x21, 0x0a, 0x94, 0x26, + 0x1f, 0x02, 0x88, 0x99, 0x71, 0x82, 0x04, 0x62, 0x39, 0x26, 0x17, 0x55, + 0xb2, 0xe5, 0x11, 0x1b, 0x40, 0x20, 0x0f, 0x9c, 0x25, 0x3c, 0x56, 0x46, + 0x05, 0xc8, 0xc1, 0x98, 0x61, 0x54, 0xdc, 0xe2, 0x12, 0xc8, 0xc8, 0x20, + 0x2a, 0xd5, 0x45, 0x28, 0x4d, 0x61, 0xac, 0xc6, 0x10, 0xce, 0x9b, 0x58, + 0x9d, 0x19, 0x47, 0xb9, 0xf9, 0x66, 0xc5, 0x65, 0x91, 0x0c, 0x8b, 0xc0, + 0x64, 0x4a, 0x51, 0xfc, 0x9a, 0xcc, 0xbe, 0x30, 0x25, 0x4a, 0xe9, 0x82, + 0x44, 0xac, 0xad, 0x20, 0x59, 0x09, 0x56, 0x3a, 0x92, 0xb8, 0x4e, 0x95, + 0x9b, 0x7a, 0xce, 0xd4, 0x57, 0x6d, 0x59, 0xb1, 0xbf, 0xd3, 0xf2, 0x51, + 0x6e, 0x49, 0xec, 0xab, 0x6a, 0x52, 0x8b, 0x2c, 0xd4, 0x7b, 0x0a, 0x2a, + 0xc5, 0x4a, 0x1d, 0x0f, 0xff, 0xff, 0x5f, 0xca, 0x57, 0x0e, 0xa4, 0xe7, + 0x49, 0xa2, 0x61, 0xc9, 0x86, 0x3c, 0x43, 0x13, 0xa2, 0x9d, 0x35, 0x4f, + 0xb9, 0xc7, 0x5b, 0x8c, 0x99, 0x92, 0xea, 0xe0, 0xe0, 0xf7, 0x89, 0xa3, + 0x9a, 0xc3, 0x83, 0xa8, 0xc9, 0x78, 0x02, 0x13, 0xa0, 0x8a, 0x13, 0x0e, + 0x02, 0x84, 0x55, 0x68, 0xdc, 0x86, 0x2d, 0xf6, 0xd3, 0x2e, 0x42, 0x4f, + 0x10, 0xb5, 0x91, 0xac, 0x2a, 0x6d, 0x24, 0x08, 0x9c, 0x42, 0x83, 0xac, + 0xa4, 0xd6, 0xa1, 0x32, 0xe2, 0xb1, 0xd1, 0x52, 0xa1, 0xf2, 0x48, 0x2b, + 0x34, 0xb5, 0xe2, 0x5b, 0x43, 0x35, 0xa8, 0xc2, 0x33, 0x28, 0x57, 0x71, + 0x33, 0x2f, 0xb2, 0x77, 0x16, 0x6a, 0xa5, 0x16, 0x9a, 0x0b, 0x1f, 0x32, + 0x4e, 0x91, 0xd2, 0x12, 0x33, 0xaa, 0x6a, 0xa2, 0x6c, 0x40, 0x18, 0x14, + 0xb0, 0x40, 0x2a, 0x43, 0x71, 0x59, 0xd2, 0xa4, 0x78, 0x79, 0x32, 0x1b, + 0x7d, 0x43, 0x64, 0x73, 0x74, 0xa3, 0x7b, 0xe2, 0x97, 0xdf, 0x37, 0x79, + 0x63, 0xab, 0xd6, 0x67, 0xa9, 0x7b, 0xbc, 0x84, 0x22, 0x94, 0xbe, 0x43, + 0x27, 0x52, 0xdb, 0xab, 0xc4, 0xda, 0xcf, 0x39, 0xec, 0x29, 0x7e, 0xad, + 0x5c, 0x0e, 0xa9, 0x08, 0x2c, 0x9a, 0x5d, 0xe7, 0xe3, 0x22, 0xe0, 0x7c, + 0xc3, 0xe3, 0x23, 0x6b, 0x88, 0xc8, 0x4c, 0xd1, 0x67, 0x52, 0x19, 0x97, + 0x58, 0x79, 0x15, 0xaa, 0x22, 0x28, 0x99, 0xde, 0x90, 0x64, 0x55, 0x57, + 0x78, 0x67, 0xdb, 0xeb, 0x5c, 0x4b, 0xf5, 0x22, 0x22, 0x11, 0xaa, 0xb2, + 0xb9, 0x63, 0x57, 0x92, 0x57, 0xff, 0xfb, 0xd4, 0x40, 0x63, 0x80, 0x05, + 0x94, 0x75, 0x3f, 0xd1, 0x89, 0x4b, 0x70, 0xb1, 0xae, 0x78, 0x5f, 0x3d, + 0x89, 0x6f, 0x58, 0x19, 0xd5, 0x01, 0xa7, 0xa5, 0x2d, 0xca, 0xe1, 0x3a, + 0xa0, 0xb4, 0xc6, 0x25, 0xb9, 0xac, 0x44, 0x9c, 0xb8, 0x28, 0x25, 0x15, + 0x8d, 0x05, 0x47, 0xae, 0x9a, 0xbc, 0xb9, 0xb2, 0xc8, 0x31, 0x65, 0xc2, + 0xa1, 0xc9, 0xd9, 0x7d, 0x43, 0x62, 0x70, 0xed, 0x44, 0x70, 0x3d, 0x6a, + 0xa1, 0x6d, 0x4f, 0x0c, 0x2d, 0xce, 0x1f, 0x36, 0xe2, 0x9e, 0xa4, 0x2c, + 0x7b, 0x07, 0xa9, 0x18, 0x5d, 0x1c, 0x04, 0x88, 0x8f, 0xa0, 0x93, 0xf1, + 0x11, 0x24, 0x99, 0x35, 0x70, 0x7c, 0x8d, 0x4c, 0xd1, 0x92, 0x11, 0x51, + 0x2c, 0x5b, 0xa2, 0xe5, 0x2d, 0xb9, 0xaf, 0x91, 0x43, 0x26, 0xad, 0x42, + 0xc8, 0x6b, 0x11, 0x30, 0x69, 0x63, 0xad, 0x22, 0x15, 0xa3, 0x71, 0x00, + 0x69, 0x11, 0x16, 0xc8, 0xf1, 0x11, 0xf6, 0xe3, 0x0a, 0x5d, 0xb4, 0x4c, + 0x28, 0xeb, 0x4f, 0x72, 0xbf, 0xdc, 0x55, 0x99, 0x10, 0xda, 0x54, 0x94, + 0xa5, 0x52, 0xa9, 0x49, 0x38, 0x25, 0x1b, 0xd5, 0xa0, 0xcd, 0x47, 0x5b, + 0xcb, 0xb8, 0xcd, 0x3d, 0xba, 0xcd, 0x85, 0x76, 0x7f, 0xfb, 0x7b, 0xbe, + 0xb3, 0x3d, 0xc3, 0x6f, 0x36, 0xb2, 0x2b, 0xcd, 0x95, 0xea, 0x1e, 0xf6, + 0xb6, 0x77, 0xe3, 0x4d, 0xde, 0xc4, 0x0a, 0xe3, 0xad, 0xcb, 0x23, 0xb6, + 0xe9, 0x59, 0xfd, 0x16, 0x5f, 0x5e, 0x8c, 0x75, 0x3a, 0x18, 0x72, 0x2a, + 0x0b, 0x61, 0xff, 0x24, 0x47, 0xeb, 0x84, 0xd6, 0x0d, 0x94, 0x07, 0x40, + 0x25, 0x03, 0x02, 0x20, 0xa9, 0x12, 0x68, 0x46, 0xc5, 0xc5, 0x11, 0x34, + 0xb2, 0x20, 0xbc, 0x26, 0xa2, 0x2a, 0x36, 0x91, 0x08, 0x84, 0xe4, 0xd6, + 0x26, 0x21, 0x08, 0x23, 0x22, 0x28, 0x8a, 0x02, 0x14, 0x86, 0x41, 0xc0, + 0xe9, 0x42, 0x29, 0x38, 0x84, 0x3c, 0xba, 0x62, 0xba, 0x27, 0x15, 0xa1, + 0x7a, 0xa4, 0x87, 0xcc, 0x9b, 0x51, 0x0a, 0x21, 0x19, 0xd2, 0x52, 0xab, + 0x18, 0x1b, 0x54, 0xea, 0x03, 0x70, 0x59, 0xa5, 0xe9, 0xda, 0x89, 0x32, + 0x90, 0x22, 0x5e, 0x04, 0x44, 0xb4, 0x32, 0xf7, 0x93, 0x21, 0x0a, 0x26, + 0x42, 0x59, 0x33, 0x3a, 0x48, 0x34, 0x30, 0x73, 0xc8, 0x52, 0x40, 0xe9, + 0x34, 0x4e, 0x9b, 0xbc, 0x19, 0xd5, 0xd8, 0x5f, 0x1c, 0x8d, 0xcd, 0xaf, + 0x4b, 0xb9, 0x35, 0xc8, 0x4e, 0x52, 0xb4, 0xdc, 0xd7, 0x77, 0x8d, 0x5c, + 0x21, 0xbe, 0x19, 0xbe, 0xbe, 0x47, 0xca, 0xa1, 0xd2, 0x6f, 0x76, 0x3b, + 0x72, 0xcd, 0x6f, 0xe2, 0x4b, 0xad, 0x69, 0x3e, 0x4b, 0x4f, 0xa3, 0x30, + 0x7d, 0xbb, 0xa1, 0x32, 0x02, 0x96, 0x22, 0x45, 0x6e, 0x3a, 0xa0, 0x36, + 0x70, 0xa4, 0xa2, 0x87, 0x04, 0xaf, 0x8c, 0x23, 0x8d, 0x39, 0x35, 0xbf, + 0xed, 0xb5, 0x66, 0x65, 0xa2, 0x11, 0x04, 0xec, 0x38, 0x33, 0x13, 0x93, + 0x94, 0xa3, 0x2d, 0xb2, 0x6a, 0xb0, 0x98, 0x7e, 0xaa, 0x13, 0xc5, 0xe1, + 0x8b, 0x8d, 0x72, 0x14, 0x10, 0x16, 0xea, 0x9c, 0xe8, 0xaa, 0x58, 0x5e, + 0x4f, 0x46, 0x78, 0x7a, 0x49, 0x3b, 0x24, 0x32, 0xe1, 0x70, 0xed, 0x2a, + 0x2a, 0xac, 0xa2, 0xd3, 0x9a, 0xe1, 0x76, 0xca, 0xd6, 0x1b, 0xa9, 0x4e, + 0xb4, 0x54, 0x98, 0xa8, 0xd1, 0x54, 0x64, 0xa4, 0x84, 0x69, 0x9a, 0x58, + 0x2a, 0xb0, 0xbb, 0x65, 0xcc, 0x96, 0x1b, 0x8c, 0x89, 0xd3, 0x40, 0x50, + 0x46, 0x46, 0x38, 0x96, 0xca, 0x47, 0x19, 0x3e, 0xb9, 0xe5, 0xcc, 0x23, + 0xd3, 0x74, 0xa1, 0x0a, 0xc7, 0x12, 0x46, 0x87, 0x20, 0xbb, 0x65, 0x7c, + 0xe8, 0x98, 0xd6, 0x14, 0xa2, 0x06, 0x93, 0x2e, 0xaa, 0x07, 0xb3, 0x8b, + 0xbf, 0xe5, 0xea, 0x7e, 0x17, 0x90, 0xbc, 0x4d, 0x1e, 0x49, 0x59, 0x37, + 0x89, 0xd7, 0x9c, 0x1f, 0xbf, 0x3d, 0xf9, 0x43, 0x3e, 0x78, 0x27, 0xb9, + 0x1c, 0xca, 0xd9, 0x7c, 0x9d, 0x27, 0xf6, 0xb3, 0xcf, 0xd4, 0xf1, 0xbb, + 0xcd, 0xb8, 0x2e, 0xd4, 0x58, 0x32, 0xba, 0xe4, 0xcc, 0x10, 0x9a, 0x3c, + 0xb3, 0x78, 0xd1, 0x1b, 0xd5, 0x55, 0x04, 0x1b, 0x41, 0x25, 0xc7, 0x2a, + 0x08, 0x75, 0x79, 0x68, 0x77, 0x8f, 0xff, 0xfe, 0xd6, 0xbc, 0x43, 0x54, + 0x83, 0x7a, 0x43, 0xe8, 0x59, 0x30, 0x0c, 0x17, 0x08, 0xce, 0x28, 0x92, + 0x01, 0xa7, 0x16, 0x23, 0x44, 0xb7, 0x05, 0x4a, 0x37, 0xa2, 0xf4, 0xf2, + 0xe5, 0x85, 0x08, 0xdb, 0x48, 0x3c, 0x76, 0x8b, 0x93, 0x94, 0x89, 0x97, + 0x91, 0x5a, 0xab, 0xb0, 0x48, 0x5c, 0xb1, 0xc5, 0x09, 0x66, 0xb3, 0x6d, + 0x66, 0x88, 0xc4, 0x27, 0xc3, 0x2b, 0x03, 0x49, 0x48, 0xa8, 0xe8, 0xe2, + 0x35, 0x98, 0x5c, 0x16, 0x10, 0x97, 0x17, 0x50, 0xf0, 0xc2, 0xf2, 0x25, + 0x51, 0xa4, 0xde, 0x64, 0x50, 0x2e, 0xda, 0x65, 0x8a, 0x28, 0x69, 0x0d, + 0xc6, 0x88, 0x08, 0x5b, 0x46, 0xcf, 0x69, 0x92, 0xa4, 0x8a, 0x51, 0xa9, + 0x22, 0x2e, 0x9d, 0x31, 0xe5, 0x38, 0x33, 0x82, 0x84, 0x7a, 0x5e, 0x33, + 0x49, 0x94, 0xf6, 0x55, 0xbe, 0x0d, 0xe6, 0xdb, 0x6b, 0x27, 0x18, 0xa4, + 0x94, 0xe1, 0xa7, 0xfc, 0x2a, 0x1f, 0x7f, 0xdd, 0xcd, 0xff, 0x27, 0x72, + 0xf8, 0xf2, 0x1d, 0x03, 0x80, 0x0e, 0x2b, 0xff, 0xff, 0xec, 0x3e, 0x07, + 0x59, 0x55, 0x26, 0x71, 0x90, 0x74, 0xe3, 0x5d, 0xe2, 0xc5, 0x8e, 0x59, + 0x7e, 0xf7, 0xdb, 0x6c, 0x69, 0x7f, 0x28, 0xa4, 0xa1, 0xc0, 0xc0, 0x61, + 0x23, 0x43, 0x01, 0x84, 0x90, 0x69, 0x08, 0xad, 0xc8, 0x50, 0x89, 0x20, + 0x88, 0x8d, 0x62, 0x12, 0x88, 0xff, 0xfb, 0xd4, 0x40, 0x62, 0x80, 0x05, + 0x2a, 0x5a, 0xc4, 0x79, 0x69, 0x4b, 0x7a, 0xac, 0x6e, 0x38, 0x5d, 0x19, + 0x29, 0x6f, 0x56, 0x45, 0xd1, 0x11, 0xe7, 0xa5, 0x2d, 0xea, 0xfb, 0xba, + 0xdf, 0xa8, 0xc4, 0xa5, 0xb8, 0xa2, 0x88, 0x82, 0x1a, 0x29, 0x22, 0x3a, + 0x65, 0x08, 0xa2, 0x22, 0x74, 0xc9, 0xd0, 0xa9, 0x47, 0x2d, 0x10, 0xad, + 0x23, 0xf1, 0x40, 0x45, 0x14, 0x26, 0x14, 0x40, 0x6d, 0x35, 0x0a, 0x89, + 0xb5, 0x94, 0x43, 0x3d, 0x1a, 0x27, 0x1b, 0x9a, 0xcf, 0x60, 0x97, 0xb6, + 0x29, 0x26, 0x83, 0x6a, 0x03, 0xbd, 0x19, 0x96, 0x1d, 0xa4, 0x68, 0xd0, + 0x2c, 0x19, 0x84, 0xe0, 0x38, 0x4e, 0x88, 0x85, 0x8a, 0x14, 0xaa, 0x8c, + 0x60, 0x95, 0x1c, 0x52, 0x56, 0x49, 0xeb, 0xd8, 0x9c, 0x8c, 0x53, 0x4c, + 0xc9, 0x18, 0xa3, 0x08, 0x0c, 0x64, 0x6c, 0xdc, 0x25, 0x0e, 0xf6, 0x31, + 0x02, 0x55, 0x7d, 0xab, 0x5e, 0x2a, 0xcd, 0x35, 0x17, 0x5d, 0x3c, 0x83, + 0x33, 0x9f, 0x97, 0xa9, 0x7f, 0xe3, 0x7d, 0xa4, 0xb1, 0x35, 0x7a, 0xd5, + 0x1c, 0xd5, 0x9c, 0x9c, 0x7f, 0xbb, 0xf9, 0x1f, 0x5b, 0xf3, 0xfd, 0xbf, + 0x29, 0x3b, 0x25, 0x8f, 0x9c, 0xbc, 0xa1, 0x77, 0x29, 0xb1, 0x68, 0x90, + 0x37, 0x20, 0x3b, 0xac, 0x3b, 0x43, 0xbb, 0xef, 0xfe, 0xda, 0xc7, 0xfe, + 0x50, 0x24, 0xd5, 0x46, 0xa2, 0x76, 0x6d, 0x20, 0x59, 0x18, 0x55, 0xd3, + 0xaa, 0x03, 0x62, 0xa3, 0x44, 0x62, 0x63, 0x23, 0x68, 0x8e, 0x2a, 0x26, + 0x39, 0x32, 0x32, 0xda, 0x69, 0x19, 0xa6, 0xc9, 0x49, 0x04, 0x48, 0x51, + 0x0c, 0x8a, 0x1d, 0xa2, 0xb4, 0x03, 0xbe, 0x05, 0x52, 0x4d, 0x2d, 0x5d, + 0x02, 0x11, 0x5a, 0x02, 0x22, 0xba, 0x65, 0x01, 0xa2, 0x4e, 0x85, 0x32, + 0x44, 0x02, 0x76, 0x17, 0x74, 0xd5, 0x2f, 0x11, 0xfc, 0x23, 0x5e, 0x58, + 0x78, 0x47, 0x93, 0x6d, 0x26, 0xc8, 0xa5, 0x86, 0xc3, 0xc4, 0x6d, 0x8a, + 0x50, 0x31, 0x34, 0x22, 0x24, 0x23, 0x4b, 0x06, 0x96, 0x2a, 0x8d, 0x72, + 0x72, 0x4f, 0x36, 0x8f, 0x36, 0x47, 0x05, 0xda, 0x61, 0x34, 0x6b, 0x12, + 0x87, 0x8c, 0x14, 0x1a, 0x65, 0x09, 0xc9, 0x31, 0x12, 0xf7, 0x3f, 0x3b, + 0xc4, 0x79, 0x94, 0x46, 0xb2, 0x3b, 0xd6, 0x55, 0x61, 0xc8, 0xd9, 0x8a, + 0x4b, 0x2f, 0x29, 0xdd, 0xf8, 0x66, 0xe6, 0xef, 0xdd, 0x85, 0xe3, 0xe4, + 0xdf, 0xcc, 0xf1, 0x63, 0x7f, 0xff, 0xfd, 0xfb, 0xeb, 0xdf, 0xff, 0xc2, + 0xab, 0xcb, 0xd4, 0x25, 0x7b, 0x7e, 0xa1, 0xff, 0x8e, 0xe4, 0x1c, 0x40, + 0xb6, 0xde, 0xe9, 0x23, 0x6d, 0xb2, 0x26, 0x4a, 0xc9, 0xd7, 0x96, 0x53, + 0x28, 0x1f, 0x87, 0x30, 0x3c, 0x35, 0x17, 0x28, 0x70, 0x50, 0xa9, 0x50, + 0x58, 0xb9, 0xd0, 0x5c, 0x1e, 0x24, 0x99, 0xe3, 0x9d, 0x0b, 0x10, 0xa1, + 0xb5, 0x89, 0x96, 0x12, 0x09, 0x87, 0x84, 0x73, 0x2e, 0xb1, 0x30, 0xfd, + 0x90, 0xcc, 0x52, 0x60, 0x5c, 0x84, 0x11, 0x43, 0x13, 0x88, 0x0c, 0x8a, + 0xc0, 0xda, 0x15, 0xa2, 0x65, 0x1b, 0x95, 0x61, 0xe4, 0x0d, 0x1b, 0x16, + 0x3e, 0x5c, 0x7d, 0x72, 0x23, 0x02, 0x88, 0x33, 0x48, 0xe2, 0x91, 0x03, + 0x4e, 0x36, 0xe5, 0x94, 0xb8, 0x1a, 0x23, 0xa2, 0x17, 0x28, 0xa2, 0xad, + 0x10, 0x78, 0x16, 0x46, 0x4f, 0xaf, 0x2e, 0x44, 0xe4, 0x44, 0x44, 0x4c, + 0x13, 0xf8, 0x15, 0x8f, 0x4d, 0x8e, 0x49, 0x5a, 0xb1, 0x72, 0x06, 0xf5, + 0x25, 0xa0, 0x8d, 0x2b, 0xc9, 0x5e, 0xc8, 0xc2, 0x90, 0x8d, 0x49, 0x2d, + 0x66, 0x74, 0xc3, 0x69, 0x1e, 0x8d, 0xb3, 0x18, 0xfc, 0xd8, 0xff, 0x1d, + 0x9c, 0xfc, 0x67, 0x5e, 0x7d, 0x54, 0xef, 0x3b, 0x1b, 0x39, 0xb7, 0x36, + 0x18, 0x2a, 0x48, 0x93, 0x04, 0x41, 0xf5, 0x89, 0x03, 0xe3, 0xa8, 0x85, + 0xd7, 0x14, 0x1c, 0x24, 0x1a, 0x10, 0x71, 0xa0, 0x02, 0xc3, 0x90, 0x0f, + 0xa8, 0x72, 0x6b, 0x19, 0x24, 0x2e, 0xb1, 0x4b, 0x90, 0xa9, 0x0a, 0x62, + 0x0d, 0x30, 0x35, 0xfd, 0xa6, 0x9c, 0x69, 0x09, 0x97, 0x06, 0x95, 0x83, + 0x90, 0xfc, 0xcc, 0x65, 0x54, 0x4b, 0xd6, 0x3c, 0x78, 0x66, 0xda, 0xc1, + 0xd4, 0x1a, 0xaf, 0x0e, 0x9a, 0xa3, 0xf5, 0x6c, 0xca, 0x52, 0x9f, 0x2e, + 0x36, 0x31, 0x3c, 0xe9, 0x75, 0xe5, 0x47, 0x2c, 0x36, 0xad, 0x2a, 0xd2, + 0xc3, 0xeb, 0x68, 0x5a, 0x4e, 0x46, 0xcd, 0x5c, 0xec, 0x2a, 0xd3, 0xb8, + 0xf4, 0x09, 0x9f, 0x55, 0x58, 0x9c, 0x3a, 0xbb, 0xac, 0x98, 0x32, 0x71, + 0xe7, 0x8e, 0xb0, 0x95, 0x30, 0x83, 0x54, 0xf6, 0xe3, 0xdb, 0x91, 0x49, + 0xd4, 0x21, 0x34, 0x74, 0xe5, 0xca, 0x15, 0x7b, 0x55, 0x1c, 0x19, 0xc0, + 0x87, 0x68, 0x99, 0x81, 0xa6, 0x59, 0xba, 0x0c, 0x5a, 0xad, 0xea, 0xff, + 0x43, 0x56, 0x1e, 0xd8, 0xa3, 0x65, 0x96, 0x9d, 0xbc, 0x95, 0xab, 0x73, + 0xc8, 0xb1, 0x0d, 0x35, 0x91, 0x5d, 0xa6, 0x5f, 0x72, 0xaa, 0x19, 0x9f, + 0x5a, 0xba, 0xef, 0xa1, 0x5e, 0x2a, 0xbe, 0x79, 0xdd, 0xd7, 0xf6, 0x2d, + 0xf9, 0x33, 0x3f, 0x94, 0xdb, 0xf5, 0x37, 0x32, 0xb6, 0x73, 0x9a, 0xb4, + 0x50, 0xd6, 0x8c, 0xb2, 0x74, 0x8a, 0x36, 0xe3, 0x3b, 0x5e, 0xa4, 0x91, + 0x5a, 0x1f, 0xd8, 0xd5, 0x00, 0x1f, 0x5a, 0xac, 0x4e, 0x1e, 0x04, 0xf5, + 0x63, 0xb6, 0x20, 0x39, 0xc4, 0x6a, 0x3e, 0x88, 0xed, 0x1c, 0x9f, 0xaf, + 0x1a, 0x2b, 0xad, 0xb6, 0xec, 0x8d, 0x0f, 0x44, 0x10, 0x45, 0xef, 0x0f, + 0xca, 0xd1, 0x89, 0x00, 0x2b, 0x48, 0x8a, 0x09, 0x20, 0x58, 0xa4, 0x4a, + 0x51, 0x50, 0xea, 0xe9, 0x14, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x00, 0x05, + 0xf8, 0x75, 0xbe, 0xd1, 0x8c, 0x63, 0x70, 0xc3, 0xae, 0xd7, 0xea, 0x2d, + 0x2c, 0x6e, 0x16, 0x45, 0xd4, 0xf9, 0xa4, 0xa5, 0x2d, 0xca, 0xc2, 0xba, + 0xdf, 0xb4, 0x94, 0xa5, 0xb8, 0x1b, 0x23, 0xb4, 0x8d, 0x19, 0x54, 0xf2, + 0x33, 0xad, 0x93, 0x05, 0x4e, 0xa1, 0x4c, 0xa1, 0xd9, 0x13, 0xda, 0xd0, + 0x27, 0x25, 0x22, 0x5c, 0x85, 0x3a, 0xb2, 0xc4, 0x0b, 0x14, 0x7c, 0xf8, + 0x80, 0x4b, 0xc6, 0x07, 0x24, 0xea, 0x3c, 0xad, 0x22, 0xb3, 0x65, 0x64, + 0xf5, 0x8b, 0x06, 0xb5, 0x28, 0xdf, 0x7d, 0xc2, 0xeb, 0xc9, 0x8f, 0x93, + 0x1e, 0xb5, 0x57, 0x5d, 0x94, 0xc7, 0x98, 0xfb, 0xd5, 0x3a, 0x11, 0x23, + 0x84, 0x54, 0x7e, 0xb0, 0xe0, 0xc8, 0xf4, 0xca, 0x05, 0x23, 0x84, 0x4f, + 0xd0, 0xe2, 0x60, 0xaa, 0x27, 0x96, 0xad, 0x53, 0x63, 0xdb, 0xd8, 0xaf, + 0xc8, 0x90, 0xde, 0x7e, 0xae, 0xf2, 0xf4, 0xda, 0xb9, 0x6a, 0x6e, 0xca, + 0xbc, 0xf2, 0xd6, 0x6b, 0x16, 0x3b, 0xfa, 0xeb, 0xd3, 0x04, 0x55, 0xfc, + 0xc9, 0xaf, 0xe7, 0xf4, 0xde, 0xb6, 0xbf, 0x5e, 0xee, 0xd2, 0x77, 0x71, + 0xbd, 0xfa, 0xb9, 0xd6, 0xb2, 0xe6, 0xf9, 0x71, 0xf6, 0x9e, 0x73, 0xb0, + 0x1f, 0x9e, 0x38, 0x6b, 0x23, 0xd9, 0xd2, 0xf5, 0x88, 0x25, 0xf3, 0x8f, + 0x2a, 0x32, 0x99, 0x72, 0xa3, 0xa3, 0xe5, 0x29, 0x1a, 0x7e, 0x12, 0x40, + 0xe4, 0xcc, 0x6e, 0xf0, 0x24, 0x95, 0x64, 0x71, 0xcb, 0x2d, 0xb1, 0x0f, + 0xe0, 0x88, 0x42, 0x29, 0x1a, 0x36, 0x50, 0x53, 0x92, 0x14, 0x11, 0x8d, + 0x23, 0x32, 0x88, 0x2a, 0x15, 0x42, 0x87, 0x80, 0xc8, 0xc6, 0x07, 0xca, + 0xc2, 0x53, 0x22, 0x69, 0x5f, 0x84, 0x27, 0x1b, 0x61, 0x5d, 0x21, 0x14, + 0xb9, 0x0a, 0xc1, 0x6b, 0x88, 0xc9, 0x28, 0xa5, 0xe7, 0x58, 0x22, 0xd1, + 0x91, 0x2e, 0x6c, 0x74, 0x89, 0xa4, 0x4d, 0x2a, 0x25, 0x98, 0x3c, 0x30, + 0x5d, 0x9b, 0x44, 0x88, 0x84, 0x11, 0x14, 0x9d, 0x08, 0xae, 0x4b, 0xa4, + 0x45, 0x58, 0x7a, 0x23, 0x24, 0xd1, 0x2a, 0x89, 0x0d, 0x34, 0x5c, 0xcc, + 0xa5, 0x25, 0x45, 0x22, 0x94, 0x28, 0x86, 0xd9, 0x64, 0x9a, 0x2a, 0xb3, + 0x50, 0x92, 0xe8, 0x60, 0x8b, 0x69, 0x12, 0x1c, 0x22, 0x36, 0x45, 0xd3, + 0xa4, 0x48, 0x52, 0x9c, 0x3c, 0xaf, 0xa5, 0x96, 0xb6, 0xd2, 0xcf, 0x59, + 0xa8, 0xd3, 0xeb, 0xdc, 0x2e, 0x36, 0xcf, 0xff, 0xdc, 0x6a, 0x39, 0xff, + 0xfe, 0x31, 0x96, 0xef, 0xbc, 0xcf, 0x2f, 0x29, 0x78, 0xc9, 0xa9, 0x78, + 0xe5, 0x22, 0x5d, 0x9b, 0x84, 0xbd, 0x27, 0x10, 0x54, 0x50, 0xf8, 0xf7, + 0x82, 0x2c, 0x22, 0x9e, 0xb3, 0xef, 0xb4, 0x34, 0x1a, 0x69, 0xe4, 0xae, + 0x44, 0x48, 0x12, 0xe4, 0x96, 0xdd, 0xf6, 0xd6, 0xea, 0xc7, 0xf2, 0x92, + 0xa2, 0x90, 0x02, 0xca, 0xab, 0x8b, 0x06, 0x86, 0x84, 0xc2, 0x24, 0xc4, + 0x26, 0x46, 0x87, 0xc1, 0x10, 0x44, 0x94, 0x88, 0x9a, 0xd5, 0x8e, 0x5a, + 0xc4, 0xa6, 0xc4, 0xa4, 0x20, 0x64, 0x44, 0x26, 0x8a, 0xae, 0x56, 0x93, + 0x25, 0x26, 0x59, 0xb6, 0x1a, 0x42, 0x98, 0x94, 0x64, 0x34, 0x56, 0x13, + 0x42, 0x64, 0x54, 0x2a, 0x01, 0x9d, 0xa2, 0x95, 0x91, 0x2c, 0x89, 0xa6, + 0xd3, 0x50, 0x2d, 0x34, 0xa7, 0x14, 0x31, 0x58, 0x89, 0xe8, 0x59, 0x58, + 0x9a, 0xdc, 0xe4, 0x4d, 0x26, 0xec, 0x42, 0xcd, 0x05, 0x52, 0x22, 0x26, + 0x22, 0xa1, 0x70, 0x45, 0x03, 0x0b, 0x13, 0x23, 0x63, 0x88, 0x9f, 0x68, + 0x9a, 0x8c, 0x56, 0x44, 0x8d, 0x95, 0xa9, 0x13, 0x4b, 0x13, 0x1d, 0x66, + 0x34, 0xca, 0x12, 0x16, 0x65, 0x1b, 0xcb, 0x9a, 0x18, 0xac, 0x8a, 0x4d, + 0x56, 0x96, 0x45, 0x4f, 0xad, 0xab, 0xa5, 0x59, 0x45, 0xff, 0xcf, 0x19, + 0x7f, 0xff, 0xcf, 0xef, 0xc7, 0xfd, 0xf9, 0x59, 0xb1, 0xc8, 0xf8, 0xab, + 0x9e, 0x5b, 0x1e, 0x87, 0x23, 0xff, 0xf6, 0x84, 0x85, 0x0f, 0x95, 0xa1, + 0x67, 0x16, 0x7c, 0x27, 0x9e, 0x5a, 0x93, 0x57, 0x6c, 0xa5, 0x8a, 0xee, + 0x00, 0x00, 0x67, 0x22, 0xa1, 0x30, 0x84, 0x94, 0x85, 0xdc, 0xa9, 0x91, + 0x10, 0x9b, 0x64, 0x8b, 0x56, 0x7b, 0x2b, 0x26, 0xcf, 0x8a, 0x14, 0x5b, + 0x21, 0xb0, 0x32, 0x93, 0x62, 0x92, 0x5f, 0xd5, 0x50, 0x55, 0x69, 0x34, + 0x8a, 0x22, 0x11, 0x29, 0x10, 0xa9, 0x19, 0x2e, 0x80, 0xa7, 0xd9, 0xa2, + 0x26, 0xd9, 0x95, 0xa1, 0xb9, 0x9d, 0x65, 0xdb, 0x33, 0x98, 0xba, 0xdf, + 0x5a, 0xe2, 0xef, 0xab, 0x4f, 0x5b, 0x5d, 0x9b, 0x4c, 0xb5, 0xed, 0x46, + 0xb7, 0xb5, 0x6d, 0xeb, 0x59, 0x9b, 0x2e, 0xf6, 0x57, 0x5e, 0xb6, 0xde, + 0xfc, 0xb6, 0x5b, 0x6b, 0xbd, 0x96, 0xf6, 0xac, 0xd5, 0xd6, 0xc1, 0x7a, + 0xd7, 0xe6, 0xbd, 0x6b, 0x3d, 0x27, 0x54, 0xf6, 0x56, 0xbb, 0x97, 0xad, + 0xb1, 0xe6, 0x5d, 0x6b, 0xfb, 0xd6, 0xfc, 0xda, 0x67, 0x6b, 0x69, 0xdc, + 0xfa, 0xcc, 0xdb, 0xeb, 0x33, 0xb8, 0x86, 0x4d, 0x69, 0xea, 0xdb, 0xf7, + 0x9a, 0xb9, 0xcc, 0x4d, 0x3b, 0x9e, 0xd1, 0x94, 0x64, 0x93, 0xde, 0x5a, + 0x56, 0x12, 0x8f, 0x85, 0x21, 0xea, 0xe2, 0xe8, 0xea, 0x73, 0x16, 0x97, + 0x87, 0xe2, 0x4a, 0x8b, 0x95, 0x49, 0xc7, 0x25, 0xc1, 0x19, 0xb1, 0x04, + 0x90, 0x00, 0x46, 0xc8, 0x67, 0xbd, 0xf9, 0x08, 0x05, 0x02, 0x4b, 0x13, + 0x58, 0xa4, 0x88, 0x12, 0x5c, 0xe2, 0x33, 0xc0, 0x92, 0x36, 0x56, 0x4d, + 0xc8, 0xb6, 0x30, 0x44, 0x8a, 0x91, 0x3e, 0x0d, 0x2b, 0x92, 0x95, 0x6c, + 0xb6, 0x4d, 0x5c, 0x63, 0x75, 0xff, 0xfb, 0xd4, 0x40, 0x69, 0x0d, 0xd5, + 0x77, 0x76, 0xb5, 0x11, 0x29, 0x63, 0x70, 0xb7, 0xae, 0xd6, 0x80, 0x25, + 0x2f, 0x6e, 0x17, 0xa9, 0xc0, 0x92, 0x0d, 0xbc, 0xcd, 0xc2, 0xd4, 0x30, + 0x07, 0x44, 0x67, 0xb1, 0xb8, 0x71, 0xcf, 0x12, 0x22, 0x68, 0xd4, 0xd0, + 0xc1, 0x13, 0xe3, 0x02, 0x18, 0xb6, 0x83, 0x33, 0xe7, 0xd1, 0xa0, 0xee, + 0xba, 0xff, 0xe1, 0xf6, 0xe0, 0xd2, 0xdf, 0x16, 0xce, 0x98, 0xa9, 0x1a, + 0xd7, 0x8b, 0x87, 0xd1, 0xb3, 0x6f, 0x89, 0x68, 0xfa, 0xf4, 0x7d, 0xa8, + 0x4f, 0xb3, 0xaf, 0xed, 0x9c, 0xea, 0x14, 0x6c, 0x3e, 0xbb, 0xda, 0xff, + 0xf0, 0xfa, 0x77, 0xb4, 0x7d, 0x46, 0x26, 0x69, 0xd8, 0x69, 0xf1, 0xbc, + 0xe2, 0xfa, 0x85, 0x19, 0x86, 0x67, 0xd1, 0x68, 0xfa, 0xef, 0x5e, 0xc5, + 0xb7, 0x83, 0x4b, 0xc5, 0xc5, 0xae, 0xf7, 0x58, 0xdf, 0xcb, 0xd8, 0xb0, + 0xae, 0xad, 0xbb, 0xda, 0xe1, 0xf5, 0xeb, 0x5c, 0x62, 0x55, 0x6b, 0x2d, + 0xaa, 0xdc, 0x87, 0x1d, 0x51, 0x1f, 0x46, 0x6d, 0x56, 0xe3, 0x07, 0xf2, + 0xa9, 0x86, 0x24, 0xae, 0x27, 0xf2, 0x15, 0x29, 0xba, 0x3d, 0x27, 0xc8, + 0xb8, 0xac, 0x9f, 0xc7, 0x11, 0x7d, 0x42, 0x5e, 0xd5, 0x3c, 0xb6, 0x86, + 0xb0, 0x21, 0xcb, 0xb2, 0x0a, 0x64, 0xb2, 0xc2, 0x7d, 0xb3, 0x55, 0xb8, + 0x3b, 0x37, 0x23, 0x39, 0x2a, 0x32, 0xd2, 0x43, 0x17, 0x12, 0x31, 0x31, + 0x03, 0x0b, 0x08, 0x30, 0x70, 0x23, 0x03, 0x04, 0x2d, 0x89, 0x65, 0x4b, + 0x6a, 0x5c, 0x92, 0xf0, 0xa2, 0xa8, 0x2a, 0x44, 0x34, 0x23, 0xa3, 0xd4, + 0x24, 0xc2, 0x6c, 0x2d, 0xc2, 0xe4, 0x3d, 0x42, 0xe4, 0x5c, 0x86, 0xf1, + 0xd2, 0x5b, 0x4b, 0x89, 0x6d, 0x27, 0x26, 0x89, 0x39, 0x43, 0x4b, 0x6a, + 0x88, 0xe6, 0x3a, 0x8e, 0x63, 0xa9, 0x0e, 0x34, 0x99, 0x8e, 0x66, 0x54, + 0xea, 0x85, 0x3a, 0xa1, 0x56, 0xa1, 0xaf, 0x53, 0xb1, 0x94, 0xca, 0xa6, + 0x25, 0x13, 0x12, 0x8a, 0x32, 0x7a, 0x60, 0x50, 0x90, 0x50, 0x92, 0x20, + 0x1c, 0x05, 0xd1, 0x43, 0x8e, 0x0a, 0x38, 0x2b, 0x41, 0xa0, 0xd4, 0x4d, + 0x44, 0xd2, 0x3c, 0x16, 0xce, 0x48, 0xe4, 0x98, 0x93, 0x9c, 0xc5, 0xa8, + 0xb4, 0x5d, 0x1a, 0x35, 0xca, 0xd6, 0x5b, 0x25, 0x27, 0x33, 0xe3, 0xe5, + 0xa3, 0x46, 0xbb, 0x5b, 0x6e, 0x54, 0xb3, 0x5b, 0x3e, 0x6e, 0x53, 0x9b, + 0x0f, 0x17, 0x9b, 0x2c, 0x76, 0xb6, 0xb6, 0xe5, 0x73, 0x71, 0xf1, 0xf3, + 0xcf, 0x3b, 0x6b, 0x5b, 0x5a, 0xb4, 0xdc, 0x9c, 0x79, 0x73, 0x70, 0xea, + 0xad, 0xaa, 0x62, 0x54, 0x6c, 0xcc, 0xcc, 0xc9, 0x19, 0x3a, 0xaa, 0xaa, + 0xa8, 0x95, 0x1b, 0x33, 0x33, 0x32, 0x47, 0x80, 0xc0, 0x64, 0x07, 0x8d, + 0x01, 0x02, 0x8a, 0x16, 0x7c, 0x3c, 0x5e, 0x59, 0xeb, 0x12, 0x78, 0xe5, + 0x2f, 0xc6, 0xe9, 0x84, 0x66, 0x98, 0x05, 0xdc, 0xdc, 0x3b, 0x0f, 0xf4, + 0xe2, 0x3c, 0xf1, 0x2e, 0x45, 0xf4, 0xee, 0x3e, 0x4f, 0x53, 0xd0, 0xff, + 0x50, 0x25, 0xd0, 0x94, 0x38, 0xfd, 0x2f, 0xc3, 0xe8, 0x90, 0x90, 0x22, + 0x8c, 0x9e, 0x1a, 0x67, 0x42, 0x3d, 0xc1, 0xd3, 0xe6, 0x16, 0x26, 0xd6, + 0xa6, 0xf6, 0x07, 0xf1, 0xe2, 0x79, 0x6a, 0xe4, 0xa8, 0x48, 0x68, 0x49, + 0x92, 0xa1, 0x21, 0xa4, 0x6d, 0x86, 0xe0, 0x4c, 0x95, 0x32, 0x54, 0xc8, + 0x69, 0x13, 0xa4, 0x42, 0x6d, 0x87, 0xe2, 0x79, 0x96, 0x99, 0x4a, 0x99, + 0x2a, 0x13, 0x6c, 0x36, 0xe3, 0xf1, 0xba, 0xb9, 0x6a, 0x64, 0xa8, 0x48, + 0x68, 0x49, 0x92, 0x97, 0x8b, 0xa5, 0x24, 0xe7, 0x07, 0x67, 0x0c, 0x37, + 0x4b, 0xf7, 0xcc, 0xe5, 0xab, 0x9b, 0x4f, 0xeb, 0x55, 0x69, 0xf1, 0x89, + 0x28, 0x71, 0x15, 0x09, 0xa3, 0x40, 0xd6, 0x34, 0x8d, 0x42, 0x79, 0x00, + 0xae, 0x60, 0x7e, 0x78, 0xbe, 0xfd, 0xf5, 0xb5, 0x60, 0x86, 0x06, 0x96, + 0x99, 0x12, 0x47, 0x21, 0x48, 0x98, 0x2b, 0x1e, 0x0b, 0x85, 0x73, 0x85, + 0xea, 0x11, 0xba, 0xb9, 0x69, 0xc9, 0x48, 0xee, 0x4c, 0x41, 0x4d, 0x45, + 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xfb, 0xd4, 0x60, 0x6a, 0x8f, 0xf0, + 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0d, 0x20, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x01, 0xa4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x34, 0x80, 0x00, 0x00, 0x04, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x54, 0x41, 0x47, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff +}; +unsigned int med_system_alerts_melodic_01__TTH__mp3_len = 194473; +// clang-format on + +#endif // ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_SYSTEM_ALERTS_MELODIC_01__TTH__MP3_H_ + +} // namespace data +} // namespace audio +} // namespace resources +} // namespace applicationUtilities +} // namespace alexaClientSDK diff --git a/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_system_alerts_melodic_01_short._TTH_.wav.h b/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_system_alerts_melodic_01_short._TTH_.wav.h new file mode 100644 index 0000000000..5c14802922 --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_system_alerts_melodic_01_short._TTH_.wav.h @@ -0,0 +1,32061 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/* + * ****************** + * ALEXA AUDIO ASSETS + * ****************** + * + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates ("Amazon"). + * All Rights Reserved. + * + * These materials are licensed to you as "Alexa Materials" under the Alexa Voice + * Service Agreement, which is currently available at + * https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/support/terms-and-agreements. + */ + +#ifndef ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_SYSTEM_ALERTS_MELODIC_01_SHORT__TTH__WAV_H_ +#define ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_SYSTEM_ALERTS_MELODIC_01_SHORT__TTH__WAV_H_ + +namespace alexaClientSDK { +namespace applicationUtilities { +namespace resources { +namespace audio { +namespace data { + +// clang-format off +unsigned char med_system_alerts_melodic_01_short__TTH__wav[] = { + 0x52, 0x49, 0x46, 0x46, 0x7c, 0xdc, 0x05, 0x00, 0x57, 0x41, 0x56, 0x45, + 0x66, 0x6d, 0x74, 0x20, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x80, 0xbb, 0x00, 0x00, 0x00, 0xee, 0x02, 0x00, 0x04, 0x00, 0x10, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x58, 0xdc, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xfd, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x09, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x09, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xec, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe7, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe9, 0xff, + 0xed, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xf1, 0xff, 0xf0, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xfa, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x04, 0x00, 0x02, 0x00, 0x08, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x11, 0x00, 0x12, 0x00, 0x17, 0x00, 0x15, 0x00, + 0x19, 0x00, 0x1a, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x22, 0x00, 0x22, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x34, 0x00, 0x36, 0x00, 0x39, 0x00, 0x38, 0x00, + 0x3e, 0x00, 0x3f, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x45, 0x00, 0x43, 0x00, + 0x42, 0x00, 0x46, 0x00, 0x49, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4b, 0x00, + 0x4d, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4e, 0x00, + 0x4d, 0x00, 0x4c, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4d, 0x00, 0x4c, 0x00, + 0x4b, 0x00, 0x4b, 0x00, 0x49, 0x00, 0x49, 0x00, 0x46, 0x00, 0x45, 0x00, + 0x41, 0x00, 0x43, 0x00, 0x3e, 0x00, 0x3d, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x32, 0x00, 0x32, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x24, 0x00, 0x23, 0x00, + 0x1c, 0x00, 0x1d, 0x00, 0x12, 0x00, 0x10, 0x00, 0x08, 0x00, 0x09, 0x00, + 0xfd, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xe7, 0xff, 0xe8, 0xff, + 0xdc, 0xff, 0xdc, 0xff, 0xd1, 0xff, 0xd2, 0xff, 0xc4, 0xff, 0xc4, 0xff, + 0xb8, 0xff, 0xb8, 0xff, 0xac, 0xff, 0xac, 0xff, 0x9f, 0xff, 0x9e, 0xff, + 0x95, 0xff, 0x94, 0xff, 0x86, 0xff, 0x86, 0xff, 0x7d, 0xff, 0x7d, 0xff, + 0x71, 0xff, 0x71, 0xff, 0x67, 0xff, 0x66, 0xff, 0x5d, 0xff, 0x5d, 0xff, + 0x55, 0xff, 0x53, 0xff, 0x4c, 0xff, 0x4d, 0xff, 0x47, 0xff, 0x45, 0xff, + 0x3f, 0xff, 0x40, 0xff, 0x3b, 0xff, 0x3a, 0xff, 0x38, 0xff, 0x37, 0xff, + 0x34, 0xff, 0x35, 0xff, 0x35, 0xff, 0x32, 0xff, 0x32, 0xff, 0x34, 0xff, + 0x36, 0xff, 0x34, 0xff, 0x38, 0xff, 0x36, 0xff, 0x3a, 0xff, 0x3c, 0xff, + 0x42, 0xff, 0x3f, 0xff, 0x45, 0xff, 0x47, 0xff, 0x4f, 0xff, 0x4e, 0xff, + 0x57, 0xff, 0x56, 0xff, 0x60, 0xff, 0x62, 0xff, 0x6d, 0xff, 0x6a, 0xff, + 0x78, 0xff, 0x79, 0xff, 0x86, 0xff, 0x85, 0xff, 0x94, 0xff, 0x95, 0xff, + 0xa4, 0xff, 0xa4, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0xc6, 0xff, 0xc5, 0xff, + 0xd7, 0xff, 0xd8, 0xff, 0xec, 0xff, 0xea, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0x14, 0x00, 0x12, 0x00, 0x26, 0x00, 0x27, 0x00, 0x3f, 0x00, 0x3e, 0x00, + 0x53, 0x00, 0x52, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x7f, 0x00, 0x7f, 0x00, + 0x96, 0x00, 0x97, 0x00, 0xac, 0x00, 0xad, 0x00, 0xc3, 0x00, 0xc3, 0x00, + 0xda, 0x00, 0xda, 0x00, 0xef, 0x00, 0xef, 0x00, 0x05, 0x01, 0x05, 0x01, + 0x1b, 0x01, 0x1b, 0x01, 0x2c, 0x01, 0x2c, 0x01, 0x40, 0x01, 0x41, 0x01, + 0x53, 0x01, 0x52, 0x01, 0x62, 0x01, 0x63, 0x01, 0x74, 0x01, 0x72, 0x01, + 0x7e, 0x01, 0x80, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x96, 0x01, 0x94, 0x01, + 0x9d, 0x01, 0x9f, 0x01, 0xa4, 0x01, 0xa3, 0x01, 0xa8, 0x01, 0xa7, 0x01, + 0xa8, 0x01, 0xa9, 0x01, 0xa8, 0x01, 0xa7, 0x01, 0xa4, 0x01, 0xa4, 0x01, + 0x9e, 0x01, 0xa0, 0x01, 0x96, 0x01, 0x94, 0x01, 0x8b, 0x01, 0x8b, 0x01, + 0x7b, 0x01, 0x7b, 0x01, 0x6d, 0x01, 0x6b, 0x01, 0x57, 0x01, 0x59, 0x01, + 0x45, 0x01, 0x43, 0x01, 0x2b, 0x01, 0x2c, 0x01, 0x12, 0x01, 0x12, 0x01, + 0xf8, 0x00, 0xf7, 0x00, 0xda, 0x00, 0xd8, 0x00, 0xb7, 0x00, 0xb9, 0x00, + 0x9a, 0x00, 0x99, 0x00, 0x74, 0x00, 0x75, 0x00, 0x53, 0x00, 0x52, 0x00, + 0x2c, 0x00, 0x2b, 0x00, 0x05, 0x00, 0x06, 0x00, 0xe0, 0xff, 0xde, 0xff, + 0xb6, 0xff, 0xb6, 0xff, 0x8f, 0xff, 0x90, 0xff, 0x68, 0xff, 0x66, 0xff, + 0x3e, 0xff, 0x3e, 0xff, 0x17, 0xff, 0x16, 0xff, 0xee, 0xfe, 0xee, 0xfe, + 0xc8, 0xfe, 0xc8, 0xfe, 0xa2, 0xfe, 0xa1, 0xfe, 0x7d, 0xfe, 0x7d, 0xfe, + 0x59, 0xfe, 0x59, 0xfe, 0x36, 0xfe, 0x36, 0xfe, 0x15, 0xfe, 0x17, 0xfe, + 0xf6, 0xfd, 0xf6, 0xfd, 0xda, 0xfd, 0xda, 0xfd, 0xbe, 0xfd, 0xbe, 0xfd, + 0xa5, 0xfd, 0xa6, 0xfd, 0x90, 0xfd, 0x90, 0xfd, 0x7d, 0xfd, 0x7c, 0xfd, + 0x6c, 0xfd, 0x6d, 0xfd, 0x60, 0xfd, 0x5e, 0xfd, 0x54, 0xfd, 0x57, 0xfd, + 0x4b, 0xfd, 0x4b, 0xfd, 0x4a, 0xfd, 0x49, 0xfd, 0x46, 0xfd, 0x47, 0xfd, + 0x49, 0xfd, 0x49, 0xfd, 0x4f, 0xfd, 0x50, 0xfd, 0x58, 0xfd, 0x57, 0xfd, + 0x67, 0xfd, 0x67, 0xfd, 0x76, 0xfd, 0x76, 0xfd, 0x8a, 0xfd, 0x8b, 0xfd, + 0xa0, 0xfd, 0xa1, 0xfd, 0xbd, 0xfd, 0xbe, 0xfd, 0xdb, 0xfd, 0xda, 0xfd, + 0xfd, 0xfd, 0xfe, 0xfd, 0x21, 0xfe, 0x20, 0xfe, 0x49, 0xfe, 0x4b, 0xfe, + 0x72, 0xfe, 0x73, 0xfe, 0xa0, 0xfe, 0xa0, 0xfe, 0xcf, 0xfe, 0xd1, 0xfe, + 0x01, 0xff, 0x01, 0xff, 0x37, 0xff, 0x37, 0xff, 0x6c, 0xff, 0x6d, 0xff, + 0xa3, 0xff, 0xa3, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0x17, 0x00, 0x18, 0x00, + 0x53, 0x00, 0x53, 0x00, 0x8d, 0x00, 0x8f, 0x00, 0xc7, 0x00, 0xc7, 0x00, + 0x01, 0x01, 0x02, 0x01, 0x39, 0x01, 0x3a, 0x01, 0x71, 0x01, 0x70, 0x01, + 0xa8, 0x01, 0xaa, 0x01, 0xdf, 0x01, 0xdd, 0x01, 0x14, 0x02, 0x14, 0x02, + 0x46, 0x02, 0x47, 0x02, 0x7a, 0x02, 0x78, 0x02, 0xa5, 0x02, 0xa6, 0x02, + 0xd2, 0x02, 0xd4, 0x02, 0xfc, 0x02, 0xfb, 0x02, 0x21, 0x03, 0x23, 0x03, + 0x46, 0x03, 0x45, 0x03, 0x62, 0x03, 0x63, 0x03, 0x80, 0x03, 0x81, 0x03, + 0x95, 0x03, 0x95, 0x03, 0xa9, 0x03, 0xa9, 0x03, 0xb7, 0x03, 0xb8, 0x03, + 0xc2, 0x03, 0xc0, 0x03, 0xc9, 0x03, 0xc9, 0x03, 0xc7, 0x03, 0xc6, 0x03, + 0xc5, 0x03, 0xc5, 0x03, 0xba, 0x03, 0xba, 0x03, 0xae, 0x03, 0xae, 0x03, + 0x9f, 0x03, 0x9c, 0x03, 0x84, 0x03, 0x86, 0x03, 0x6e, 0x03, 0x6b, 0x03, + 0x4a, 0x03, 0x4b, 0x03, 0x28, 0x03, 0x28, 0x03, 0xff, 0x02, 0xfd, 0x02, + 0xd2, 0x02, 0xd2, 0x02, 0xa2, 0x02, 0xa2, 0x02, 0x6f, 0x02, 0x6d, 0x02, + 0x38, 0x02, 0x38, 0x02, 0xfc, 0x01, 0xfb, 0x01, 0xc0, 0x01, 0xbf, 0x01, + 0x7d, 0x01, 0x7d, 0x01, 0x3c, 0x01, 0x3a, 0x01, 0xf5, 0x00, 0xf5, 0x00, + 0xaf, 0x00, 0xae, 0x00, 0x68, 0x00, 0x67, 0x00, 0x1d, 0x00, 0x1d, 0x00, + 0xd3, 0xff, 0xd2, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x41, 0xff, 0x40, 0xff, + 0xfd, 0xfe, 0xfe, 0xfe, 0xb7, 0xfe, 0xb7, 0xfe, 0x75, 0xfe, 0x73, 0xfe, + 0x2f, 0xfe, 0x31, 0xfe, 0xf1, 0xfd, 0xed, 0xfd, 0xad, 0xfd, 0xae, 0xfd, + 0x70, 0xfd, 0x6f, 0xfd, 0x35, 0xfd, 0x34, 0xfd, 0xfa, 0xfc, 0xfb, 0xfc, + 0xc8, 0xfc, 0xc7, 0xfc, 0x94, 0xfc, 0x93, 0xfc, 0x65, 0xfc, 0x64, 0xfc, + 0x3a, 0xfc, 0x38, 0xfc, 0x13, 0xfc, 0x13, 0xfc, 0xf0, 0xfb, 0xef, 0xfb, + 0xd3, 0xfb, 0xd0, 0xfb, 0xb8, 0xfb, 0xb9, 0xfb, 0xa4, 0xfb, 0xa4, 0xfb, + 0x95, 0xfb, 0x93, 0xfb, 0x8a, 0xfb, 0x8c, 0xfb, 0x87, 0xfb, 0x85, 0xfb, + 0x87, 0xfb, 0x88, 0xfb, 0x8d, 0xfb, 0x8e, 0xfb, 0x9b, 0xfb, 0x98, 0xfb, + 0xab, 0xfb, 0xab, 0xfb, 0xc1, 0xfb, 0xc1, 0xfb, 0xe0, 0xfb, 0xde, 0xfb, + 0xff, 0xfb, 0x02, 0xfc, 0x28, 0xfc, 0x25, 0xfc, 0x53, 0xfc, 0x54, 0xfc, + 0x82, 0xfc, 0x7f, 0xfc, 0xb7, 0xfc, 0xb8, 0xfc, 0xf0, 0xfc, 0xee, 0xfc, + 0x2c, 0xfd, 0x2b, 0xfd, 0x6d, 0xfd, 0x6e, 0xfd, 0xb0, 0xfd, 0xb0, 0xfd, + 0xf9, 0xfd, 0xf8, 0xfd, 0x42, 0xfe, 0x43, 0xfe, 0x8f, 0xfe, 0x8f, 0xfe, + 0xdc, 0xfe, 0xdd, 0xfe, 0x2c, 0xff, 0x2c, 0xff, 0x80, 0xff, 0x81, 0xff, + 0xd1, 0xff, 0xd0, 0xff, 0x25, 0x00, 0x26, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0xcc, 0x00, 0xcc, 0x00, 0x1d, 0x01, 0x1e, 0x01, 0x6d, 0x01, 0x6b, 0x01, + 0xb9, 0x01, 0xba, 0x01, 0x05, 0x02, 0x07, 0x02, 0x52, 0x02, 0x50, 0x02, + 0x9a, 0x02, 0x9c, 0x02, 0xe0, 0x02, 0xdf, 0x02, 0x23, 0x03, 0x25, 0x03, + 0x65, 0x03, 0x62, 0x03, 0x9f, 0x03, 0xa1, 0x03, 0xd8, 0x03, 0xd8, 0x03, + 0x0d, 0x04, 0x0d, 0x04, 0x3b, 0x04, 0x3c, 0x04, 0x67, 0x04, 0x66, 0x04, + 0x8b, 0x04, 0x8c, 0x04, 0xac, 0x04, 0xac, 0x04, 0xc6, 0x04, 0xc7, 0x04, + 0xdd, 0x04, 0xdd, 0x04, 0xee, 0x04, 0xef, 0x04, 0xf7, 0x04, 0xf8, 0x04, + 0xfe, 0x04, 0xfd, 0x04, 0xf7, 0x04, 0xfa, 0x04, 0xf4, 0x04, 0xf2, 0x04, + 0xe3, 0x04, 0xe4, 0x04, 0xd0, 0x04, 0xd1, 0x04, 0xb8, 0x04, 0xb7, 0x04, + 0x96, 0x04, 0x97, 0x04, 0x74, 0x04, 0x74, 0x04, 0x47, 0x04, 0x47, 0x04, + 0x19, 0x04, 0x19, 0x04, 0xe4, 0x03, 0xe4, 0x03, 0xa9, 0x03, 0xa8, 0x03, + 0x6c, 0x03, 0x6c, 0x03, 0x2a, 0x03, 0x29, 0x03, 0xe3, 0x02, 0xe3, 0x02, + 0x9a, 0x02, 0x99, 0x02, 0x4b, 0x02, 0x4b, 0x02, 0xfc, 0x01, 0xfb, 0x01, + 0xa9, 0x01, 0xa8, 0x01, 0x53, 0x01, 0x53, 0x01, 0xfc, 0x00, 0xfd, 0x00, + 0xa4, 0x00, 0xa4, 0x00, 0x4a, 0x00, 0x49, 0x00, 0xf0, 0xff, 0xf1, 0xff, + 0x95, 0xff, 0x95, 0xff, 0x3b, 0xff, 0x3b, 0xff, 0xe3, 0xfe, 0xe1, 0xfe, + 0x87, 0xfe, 0x89, 0xfe, 0x36, 0xfe, 0x33, 0xfe, 0xdd, 0xfd, 0xdd, 0xfd, + 0x8e, 0xfd, 0x8e, 0xfd, 0x3f, 0xfd, 0x3e, 0xfd, 0xf1, 0xfc, 0xf2, 0xfc, + 0xaa, 0xfc, 0xa8, 0xfc, 0x63, 0xfc, 0x64, 0xfc, 0x25, 0xfc, 0x24, 0xfc, + 0xe6, 0xfb, 0xe6, 0xfb, 0xaf, 0xfb, 0xaf, 0xfb, 0x7d, 0xfb, 0x7c, 0xfb, + 0x50, 0xfb, 0x51, 0xfb, 0x29, 0xfb, 0x27, 0xfb, 0x06, 0xfb, 0x06, 0xfb, + 0xea, 0xfa, 0xe9, 0xfa, 0xd3, 0xfa, 0xd4, 0xfa, 0xc3, 0xfa, 0xc2, 0xfa, + 0xb8, 0xfa, 0xb8, 0xfa, 0xb7, 0xfa, 0xb4, 0xfa, 0xb9, 0xfa, 0xba, 0xfa, + 0xc2, 0xfa, 0xc0, 0xfa, 0xd1, 0xfa, 0xd0, 0xfa, 0xe7, 0xfa, 0xe7, 0xfa, + 0x03, 0xfb, 0x01, 0xfb, 0x25, 0xfb, 0x26, 0xfb, 0x4c, 0xfb, 0x4b, 0xfb, + 0x7a, 0xfb, 0x7a, 0xfb, 0xad, 0xfb, 0xac, 0xfb, 0xe5, 0xfb, 0xe6, 0xfb, + 0x23, 0xfc, 0x21, 0xfc, 0x66, 0xfc, 0x66, 0xfc, 0xac, 0xfc, 0xab, 0xfc, + 0xf6, 0xfc, 0xf6, 0xfc, 0x44, 0xfd, 0x44, 0xfd, 0x94, 0xfd, 0x92, 0xfd, + 0xe9, 0xfd, 0xea, 0xfd, 0x40, 0xfe, 0x3c, 0xfe, 0x97, 0xfe, 0x98, 0xfe, + 0xf2, 0xfe, 0xf0, 0xfe, 0x4c, 0xff, 0x4d, 0xff, 0xaa, 0xff, 0xa9, 0xff, + 0x06, 0x00, 0x06, 0x00, 0x63, 0x00, 0x62, 0x00, 0xbf, 0x00, 0xbf, 0x00, + 0x1b, 0x01, 0x1a, 0x01, 0x75, 0x01, 0x75, 0x01, 0xcf, 0x01, 0xce, 0x01, + 0x26, 0x02, 0x25, 0x02, 0x77, 0x02, 0x7a, 0x02, 0xca, 0x02, 0xc6, 0x02, + 0x17, 0x03, 0x18, 0x03, 0x61, 0x03, 0x5f, 0x03, 0xa6, 0x03, 0xa7, 0x03, + 0xea, 0x03, 0xeb, 0x03, 0x24, 0x04, 0x24, 0x04, 0x5f, 0x04, 0x5f, 0x04, + 0x8f, 0x04, 0x90, 0x04, 0xc0, 0x04, 0xbf, 0x04, 0xe6, 0x04, 0xe6, 0x04, + 0x08, 0x05, 0x09, 0x05, 0x25, 0x05, 0x24, 0x05, 0x39, 0x05, 0x3a, 0x05, + 0x4a, 0x05, 0x49, 0x05, 0x53, 0x05, 0x53, 0x05, 0x56, 0x05, 0x57, 0x05, + 0x50, 0x05, 0x50, 0x05, 0x48, 0x05, 0x49, 0x05, 0x35, 0x05, 0x36, 0x05, + 0x21, 0x05, 0x1f, 0x05, 0x02, 0x05, 0x03, 0x05, 0xde, 0x04, 0xde, 0x04, + 0xb6, 0x04, 0xb4, 0x04, 0x84, 0x04, 0x86, 0x04, 0x53, 0x04, 0x50, 0x04, + 0x18, 0x04, 0x19, 0x04, 0xd9, 0x03, 0xd9, 0x03, 0x99, 0x03, 0x97, 0x03, + 0x4e, 0x03, 0x50, 0x03, 0x06, 0x03, 0x05, 0x03, 0xb6, 0x02, 0xb6, 0x02, + 0x64, 0x02, 0x64, 0x02, 0x10, 0x02, 0x10, 0x02, 0xb8, 0x01, 0xb6, 0x01, + 0x61, 0x01, 0x61, 0x01, 0x03, 0x01, 0x03, 0x01, 0xa9, 0x00, 0xa9, 0x00, + 0x4b, 0x00, 0x4b, 0x00, 0xee, 0xff, 0xee, 0xff, 0x94, 0xff, 0x92, 0xff, + 0x32, 0xff, 0x32, 0xff, 0xd9, 0xfe, 0xda, 0xfe, 0x7e, 0xfe, 0x7b, 0xfe, + 0x26, 0xfe, 0x26, 0xfe, 0xd0, 0xfd, 0xd0, 0xfd, 0x78, 0xfd, 0x79, 0xfd, + 0x29, 0xfd, 0x29, 0xfd, 0xdb, 0xfc, 0xd9, 0xfc, 0x91, 0xfc, 0x93, 0xfc, + 0x4b, 0xfc, 0x4a, 0xfc, 0x0b, 0xfc, 0x0a, 0xfc, 0xcc, 0xfb, 0xcd, 0xfb, + 0x95, 0xfb, 0x93, 0xfb, 0x62, 0xfb, 0x63, 0xfb, 0x33, 0xfb, 0x30, 0xfb, + 0x0b, 0xfb, 0x0c, 0xfb, 0xea, 0xfa, 0xe9, 0xfa, 0xcf, 0xfa, 0xce, 0xfa, + 0xbb, 0xfa, 0xbb, 0xfa, 0xab, 0xfa, 0xaa, 0xfa, 0xa4, 0xfa, 0xa3, 0xfa, + 0xa1, 0xfa, 0xa2, 0xfa, 0xa7, 0xfa, 0xa6, 0xfa, 0xb3, 0xfa, 0xb3, 0xfa, + 0xc3, 0xfa, 0xc2, 0xfa, 0xde, 0xfa, 0xdc, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, + 0x1e, 0xfb, 0x1d, 0xfb, 0x4a, 0xfb, 0x49, 0xfb, 0x78, 0xfb, 0x77, 0xfb, + 0xad, 0xfb, 0xaf, 0xfb, 0xe9, 0xfb, 0xe8, 0xfb, 0x28, 0xfc, 0x28, 0xfc, + 0x6b, 0xfc, 0x6b, 0xfc, 0xb4, 0xfc, 0xb3, 0xfc, 0x00, 0xfd, 0x00, 0xfd, + 0x4e, 0xfd, 0x4e, 0xfd, 0x9f, 0xfd, 0x9f, 0xfd, 0xf4, 0xfd, 0xf4, 0xfd, + 0x4d, 0xfe, 0x4c, 0xfe, 0xa3, 0xfe, 0xa4, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0x59, 0xff, 0x59, 0xff, 0xb7, 0xff, 0xb5, 0xff, 0x12, 0x00, 0x14, 0x00, + 0x6f, 0x00, 0x6e, 0x00, 0xc9, 0x00, 0xca, 0x00, 0x25, 0x01, 0x26, 0x01, + 0x7f, 0x01, 0x7f, 0x01, 0xd4, 0x01, 0xd6, 0x01, 0x2b, 0x02, 0x2a, 0x02, + 0x7a, 0x02, 0x7b, 0x02, 0xca, 0x02, 0xcc, 0x02, 0x16, 0x03, 0x16, 0x03, + 0x5f, 0x03, 0x5e, 0x03, 0xa3, 0x03, 0xa4, 0x03, 0xe2, 0x03, 0xe0, 0x03, + 0x1b, 0x04, 0x1c, 0x04, 0x54, 0x04, 0x54, 0x04, 0x83, 0x04, 0x82, 0x04, + 0xb0, 0x04, 0xb1, 0x04, 0xd6, 0x04, 0xd6, 0x04, 0xf5, 0x04, 0xf6, 0x04, + 0x12, 0x05, 0x12, 0x05, 0x23, 0x05, 0x24, 0x05, 0x31, 0x05, 0x32, 0x05, + 0x39, 0x05, 0x39, 0x05, 0x3b, 0x05, 0x3c, 0x05, 0x36, 0x05, 0x36, 0x05, + 0x2b, 0x05, 0x2b, 0x05, 0x19, 0x05, 0x19, 0x05, 0x02, 0x05, 0x03, 0x05, + 0xe6, 0x04, 0xe5, 0x04, 0xc2, 0x04, 0xc2, 0x04, 0x9b, 0x04, 0x9a, 0x04, + 0x6a, 0x04, 0x6b, 0x04, 0x39, 0x04, 0x38, 0x04, 0xff, 0x03, 0x02, 0x04, + 0xc2, 0x03, 0xc2, 0x03, 0x82, 0x03, 0x83, 0x03, 0x3c, 0x03, 0x3a, 0x03, + 0xf1, 0x02, 0xf3, 0x02, 0xa8, 0x02, 0xa7, 0x02, 0x58, 0x02, 0x5a, 0x02, + 0x08, 0x02, 0x07, 0x02, 0xb3, 0x01, 0xb3, 0x01, 0x5d, 0x01, 0x5d, 0x01, + 0x04, 0x01, 0x03, 0x01, 0xad, 0x00, 0xaf, 0x00, 0x54, 0x00, 0x53, 0x00, + 0xfc, 0xff, 0xfd, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0x49, 0xff, 0x4a, 0xff, + 0xf5, 0xfe, 0xf4, 0xfe, 0x9b, 0xfe, 0x9d, 0xfe, 0x49, 0xfe, 0x49, 0xfe, + 0xf8, 0xfd, 0xf7, 0xfd, 0xa6, 0xfd, 0xa8, 0xfd, 0x5c, 0xfd, 0x5b, 0xfd, + 0x0f, 0xfd, 0x11, 0xfd, 0xce, 0xfc, 0xce, 0xfc, 0x89, 0xfc, 0x8b, 0xfc, + 0x4d, 0xfc, 0x4c, 0xfc, 0x13, 0xfc, 0x15, 0xfc, 0xe0, 0xfb, 0xe1, 0xfb, + 0xb0, 0xfb, 0xb1, 0xfb, 0x86, 0xfb, 0x87, 0xfb, 0x5f, 0xfb, 0x60, 0xfb, + 0x43, 0xfb, 0x43, 0xfb, 0x26, 0xfb, 0x27, 0xfb, 0x14, 0xfb, 0x15, 0xfb, + 0x05, 0xfb, 0x05, 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xfd, 0xfa, 0xfe, 0xfa, + 0x02, 0xfb, 0x01, 0xfb, 0x0d, 0xfb, 0x0f, 0xfb, 0x1d, 0xfb, 0x1d, 0xfb, + 0x35, 0xfb, 0x35, 0xfb, 0x50, 0xfb, 0x51, 0xfb, 0x73, 0xfb, 0x72, 0xfb, + 0x9a, 0xfb, 0x9b, 0xfb, 0xc4, 0xfb, 0xc4, 0xfb, 0xf6, 0xfb, 0xf6, 0xfb, + 0x2c, 0xfc, 0x2c, 0xfc, 0x67, 0xfc, 0x67, 0xfc, 0xa6, 0xfc, 0xa6, 0xfc, + 0xe8, 0xfc, 0xe9, 0xfc, 0x2f, 0xfd, 0x2e, 0xfd, 0x77, 0xfd, 0x78, 0xfd, + 0xc4, 0xfd, 0xc4, 0xfd, 0x13, 0xfe, 0x13, 0xfe, 0x64, 0xfe, 0x64, 0xfe, + 0xb7, 0xfe, 0xb7, 0xfe, 0x09, 0xff, 0x09, 0xff, 0x61, 0xff, 0x62, 0xff, + 0xb5, 0xff, 0xb5, 0xff, 0x0b, 0x00, 0x0b, 0x00, 0x63, 0x00, 0x62, 0x00, + 0xb6, 0x00, 0xb5, 0x00, 0x0a, 0x01, 0x0b, 0x01, 0x5c, 0x01, 0x5d, 0x01, + 0xad, 0x01, 0xad, 0x01, 0xfc, 0x01, 0xfd, 0x01, 0x46, 0x02, 0x46, 0x02, + 0x92, 0x02, 0x92, 0x02, 0xd7, 0x02, 0xd8, 0x02, 0x19, 0x03, 0x1a, 0x03, + 0x5b, 0x03, 0x5c, 0x03, 0x95, 0x03, 0x96, 0x03, 0xcd, 0x03, 0xce, 0x03, + 0xff, 0x03, 0xff, 0x03, 0x2b, 0x04, 0x2c, 0x04, 0x56, 0x04, 0x56, 0x04, + 0x78, 0x04, 0x77, 0x04, 0x95, 0x04, 0x98, 0x04, 0xb0, 0x04, 0xae, 0x04, + 0xbe, 0x04, 0xc2, 0x04, 0xcf, 0x04, 0xce, 0x04, 0xd5, 0x04, 0xd7, 0x04, + 0xd6, 0x04, 0xd5, 0x04, 0xd4, 0x04, 0xd3, 0x04, 0xc5, 0x04, 0xc6, 0x04, + 0xb9, 0x04, 0xb8, 0x04, 0xa1, 0x04, 0xa2, 0x04, 0x86, 0x04, 0x85, 0x04, + 0x66, 0x04, 0x67, 0x04, 0x3d, 0x04, 0x3e, 0x04, 0x15, 0x04, 0x14, 0x04, + 0xe4, 0x03, 0xe4, 0x03, 0xaf, 0x03, 0xb0, 0x03, 0x78, 0x03, 0x76, 0x03, + 0x38, 0x03, 0x39, 0x03, 0xf9, 0x02, 0xfa, 0x02, 0xb5, 0x02, 0xb3, 0x02, + 0x6d, 0x02, 0x70, 0x02, 0x25, 0x02, 0x23, 0x02, 0xd7, 0x01, 0xd8, 0x01, + 0x8b, 0x01, 0x8b, 0x01, 0x39, 0x01, 0x3a, 0x01, 0xe8, 0x00, 0xe8, 0x00, + 0x96, 0x00, 0x96, 0x00, 0x44, 0x00, 0x43, 0x00, 0xee, 0xff, 0xf0, 0xff, + 0x9e, 0xff, 0x9e, 0xff, 0x4a, 0xff, 0x4b, 0xff, 0xfb, 0xfe, 0xfb, 0xfe, + 0xa9, 0xfe, 0xaa, 0xfe, 0x5d, 0xfe, 0x5c, 0xfe, 0x0d, 0xfe, 0x0f, 0xfe, + 0xc6, 0xfd, 0xc4, 0xfd, 0x7d, 0xfd, 0x7e, 0xfd, 0x39, 0xfd, 0x39, 0xfd, + 0xf9, 0xfc, 0xf9, 0xfc, 0xbb, 0xfc, 0xbb, 0xfc, 0x80, 0xfc, 0x81, 0xfc, + 0x4d, 0xfc, 0x4c, 0xfc, 0x1a, 0xfc, 0x1b, 0xfc, 0xef, 0xfb, 0xef, 0xfb, + 0xc7, 0xfb, 0xc7, 0xfb, 0xa4, 0xfb, 0xa4, 0xfb, 0x86, 0xfb, 0x87, 0xfb, + 0x70, 0xfb, 0x6e, 0xfb, 0x5c, 0xfb, 0x5c, 0xfb, 0x51, 0xfb, 0x51, 0xfb, + 0x48, 0xfb, 0x49, 0xfb, 0x48, 0xfb, 0x48, 0xfb, 0x4a, 0xfb, 0x4d, 0xfb, + 0x56, 0xfb, 0x54, 0xfb, 0x61, 0xfb, 0x66, 0xfb, 0x7a, 0xfb, 0x78, 0xfb, + 0x92, 0xfb, 0x95, 0xfb, 0xb3, 0xfb, 0xb3, 0xfb, 0xd7, 0xfb, 0xd7, 0xfb, + 0x01, 0xfc, 0x01, 0xfc, 0x30, 0xfc, 0x2f, 0xfc, 0x61, 0xfc, 0x62, 0xfc, + 0x9a, 0xfc, 0x9a, 0xfc, 0xd4, 0xfc, 0xd3, 0xfc, 0x15, 0xfd, 0x14, 0xfd, + 0x55, 0xfd, 0x56, 0xfd, 0x9b, 0xfd, 0x9a, 0xfd, 0xe1, 0xfd, 0xe1, 0xfd, + 0x2d, 0xfe, 0x2e, 0xfe, 0x77, 0xfe, 0x78, 0xfe, 0xc8, 0xfe, 0xc8, 0xfe, + 0x16, 0xff, 0x15, 0xff, 0x66, 0xff, 0x67, 0xff, 0xb7, 0xff, 0xb7, 0xff, + 0x08, 0x00, 0x08, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0xa9, 0x00, 0xa9, 0x00, + 0xf9, 0x00, 0xfa, 0x00, 0x49, 0x01, 0x47, 0x01, 0x93, 0x01, 0x95, 0x01, + 0xde, 0x01, 0xdf, 0x01, 0x27, 0x02, 0x26, 0x02, 0x6c, 0x02, 0x6e, 0x02, + 0xb1, 0x02, 0xaf, 0x02, 0xf1, 0x02, 0xf1, 0x02, 0x2b, 0x03, 0x2e, 0x03, + 0x65, 0x03, 0x64, 0x03, 0x98, 0x03, 0x9a, 0x03, 0xc9, 0x03, 0xc8, 0x03, + 0xf4, 0x03, 0xf5, 0x03, 0x19, 0x04, 0x19, 0x04, 0x3a, 0x04, 0x3c, 0x04, + 0x5a, 0x04, 0x58, 0x04, 0x6f, 0x04, 0x71, 0x04, 0x81, 0x04, 0x82, 0x04, + 0x8d, 0x04, 0x8e, 0x04, 0x94, 0x04, 0x96, 0x04, 0x97, 0x04, 0x98, 0x04, + 0x91, 0x04, 0x91, 0x04, 0x87, 0x04, 0x89, 0x04, 0x7b, 0x04, 0x7c, 0x04, + 0x65, 0x04, 0x65, 0x04, 0x4e, 0x04, 0x4e, 0x04, 0x2d, 0x04, 0x2d, 0x04, + 0x09, 0x04, 0x09, 0x04, 0xe0, 0x03, 0xe2, 0x03, 0xb5, 0x03, 0xb3, 0x03, + 0x82, 0x03, 0x84, 0x03, 0x4d, 0x03, 0x4d, 0x03, 0x14, 0x03, 0x13, 0x03, + 0xd7, 0x02, 0xdb, 0x02, 0x96, 0x02, 0x96, 0x02, 0x56, 0x02, 0x56, 0x02, + 0x0c, 0x02, 0x0f, 0x02, 0xc8, 0x01, 0xc7, 0x01, 0x7b, 0x01, 0x7d, 0x01, + 0x30, 0x01, 0x31, 0x01, 0xe7, 0x00, 0xe4, 0x00, 0x93, 0x00, 0x97, 0x00, + 0x4a, 0x00, 0x47, 0x00, 0xf7, 0xff, 0xf8, 0xff, 0xaa, 0xff, 0xaa, 0xff, + 0x5e, 0xff, 0x5d, 0xff, 0x0e, 0xff, 0x10, 0xff, 0xc4, 0xfe, 0xc2, 0xfe, + 0x7a, 0xfe, 0x7a, 0xfe, 0x2f, 0xfe, 0x2e, 0xfe, 0xe7, 0xfd, 0xe8, 0xfd, + 0xa5, 0xfd, 0xa4, 0xfd, 0x62, 0xfd, 0x62, 0xfd, 0x26, 0xfd, 0x26, 0xfd, + 0xe9, 0xfc, 0xea, 0xfc, 0xb3, 0xfc, 0xb3, 0xfc, 0x80, 0xfc, 0x81, 0xfc, + 0x52, 0xfc, 0x52, 0xfc, 0x28, 0xfc, 0x28, 0xfc, 0x01, 0xfc, 0x01, 0xfc, + 0xe0, 0xfb, 0xe1, 0xfb, 0xc4, 0xfb, 0xc4, 0xfb, 0xab, 0xfb, 0xac, 0xfb, + 0x9c, 0xfb, 0x9c, 0xfb, 0x8c, 0xfb, 0x8d, 0xfb, 0x86, 0xfb, 0x87, 0xfb, + 0x85, 0xfb, 0x85, 0xfb, 0x87, 0xfb, 0x89, 0xfb, 0x91, 0xfb, 0x91, 0xfb, + 0x9f, 0xfb, 0xa0, 0xfb, 0xb2, 0xfb, 0xb1, 0xfb, 0xcc, 0xfb, 0xcd, 0xfb, + 0xe8, 0xfb, 0xe8, 0xfb, 0x0b, 0xfc, 0x0b, 0xfc, 0x34, 0xfc, 0x34, 0xfc, + 0x5e, 0xfc, 0x5d, 0xfc, 0x8f, 0xfc, 0x91, 0xfc, 0xc3, 0xfc, 0xc4, 0xfc, + 0xfb, 0xfc, 0xfd, 0xfc, 0x38, 0xfd, 0x38, 0xfd, 0x76, 0xfd, 0x76, 0xfd, + 0xba, 0xfd, 0xb9, 0xfd, 0xfe, 0xfd, 0xfe, 0xfd, 0x46, 0xfe, 0x47, 0xfe, + 0x8f, 0xfe, 0x8d, 0xfe, 0xd9, 0xfe, 0xda, 0xfe, 0x26, 0xff, 0x25, 0xff, + 0x72, 0xff, 0x72, 0xff, 0xc0, 0xff, 0xbf, 0xff, 0x0e, 0x00, 0x0d, 0x00, + 0x5b, 0x00, 0x5c, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xf6, 0x00, 0xf4, 0x00, + 0x41, 0x01, 0x40, 0x01, 0x8b, 0x01, 0x8a, 0x01, 0xd1, 0x01, 0xcf, 0x01, + 0x18, 0x02, 0x17, 0x02, 0x5a, 0x02, 0x5a, 0x02, 0x9b, 0x02, 0x9a, 0x02, + 0xd9, 0x02, 0xd8, 0x02, 0x12, 0x03, 0x12, 0x03, 0x4b, 0x03, 0x49, 0x03, + 0x7d, 0x03, 0x7b, 0x03, 0xaa, 0x03, 0xaa, 0x03, 0xd2, 0x03, 0xd2, 0x03, + 0xf9, 0x03, 0xf8, 0x03, 0x19, 0x04, 0x18, 0x04, 0x35, 0x04, 0x33, 0x04, + 0x4a, 0x04, 0x4c, 0x04, 0x5c, 0x04, 0x5b, 0x04, 0x6a, 0x04, 0x69, 0x04, + 0x70, 0x04, 0x6f, 0x04, 0x71, 0x04, 0x72, 0x04, 0x6f, 0x04, 0x6e, 0x04, + 0x64, 0x04, 0x64, 0x04, 0x57, 0x04, 0x56, 0x04, 0x41, 0x04, 0x42, 0x04, + 0x2b, 0x04, 0x29, 0x04, 0x0c, 0x04, 0x0c, 0x04, 0xec, 0x03, 0xeb, 0x03, + 0xc0, 0x03, 0xc0, 0x03, 0x98, 0x03, 0x99, 0x03, 0x65, 0x03, 0x65, 0x03, + 0x33, 0x03, 0x33, 0x03, 0xfd, 0x02, 0xfd, 0x02, 0xbf, 0x02, 0xbf, 0x02, + 0x84, 0x02, 0x85, 0x02, 0x41, 0x02, 0x40, 0x02, 0xfd, 0x01, 0xfd, 0x01, + 0xb7, 0x01, 0xb8, 0x01, 0x6e, 0x01, 0x6e, 0x01, 0x26, 0x01, 0x27, 0x01, + 0xda, 0x00, 0xdb, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x40, 0x00, 0x41, 0x00, + 0xf3, 0xff, 0xf4, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0x5c, 0xff, 0x5a, 0xff, + 0x0e, 0xff, 0x10, 0xff, 0xc5, 0xfe, 0xc4, 0xfe, 0x7b, 0xfe, 0x7b, 0xfe, + 0x35, 0xfe, 0x34, 0xfe, 0xee, 0xfd, 0xf0, 0xfd, 0xad, 0xfd, 0xad, 0xfd, + 0x6b, 0xfd, 0x6c, 0xfd, 0x2f, 0xfd, 0x2f, 0xfd, 0xf5, 0xfc, 0xf7, 0xfc, + 0xbe, 0xfc, 0xbf, 0xfc, 0x8f, 0xfc, 0x90, 0xfc, 0x60, 0xfc, 0x5f, 0xfc, + 0x36, 0xfc, 0x37, 0xfc, 0x11, 0xfc, 0x10, 0xfc, 0xf0, 0xfb, 0xf0, 0xfb, + 0xd4, 0xfb, 0xd3, 0xfb, 0xbe, 0xfb, 0xbf, 0xfb, 0xac, 0xfb, 0xac, 0xfb, + 0x9f, 0xfb, 0x9f, 0xfb, 0x98, 0xfb, 0x99, 0xfb, 0x95, 0xfb, 0x96, 0xfb, + 0x9b, 0xfb, 0x9a, 0xfb, 0xa2, 0xfb, 0xa3, 0xfb, 0xb2, 0xfb, 0xb1, 0xfb, + 0xc5, 0xfb, 0xc6, 0xfb, 0xdd, 0xfb, 0xdd, 0xfb, 0xfb, 0xfb, 0xfa, 0xfb, + 0x20, 0xfc, 0x20, 0xfc, 0x42, 0xfc, 0x43, 0xfc, 0x73, 0xfc, 0x71, 0xfc, + 0x9e, 0xfc, 0xa1, 0xfc, 0xd6, 0xfc, 0xd4, 0xfc, 0x0d, 0xfd, 0x0d, 0xfd, + 0x47, 0xfd, 0x46, 0xfd, 0x86, 0xfd, 0x86, 0xfd, 0xc8, 0xfd, 0xc6, 0xfd, + 0x09, 0xfe, 0x0b, 0xfe, 0x51, 0xfe, 0x4f, 0xfe, 0x97, 0xfe, 0x99, 0xfe, + 0xe4, 0xfe, 0xe1, 0xfe, 0x2d, 0xff, 0x2d, 0xff, 0x79, 0xff, 0x7a, 0xff, + 0xc8, 0xff, 0xc7, 0xff, 0x13, 0x00, 0x14, 0x00, 0x62, 0x00, 0x61, 0x00, + 0xae, 0x00, 0xad, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0x44, 0x01, 0x44, 0x01, + 0x8d, 0x01, 0x8c, 0x01, 0xd3, 0x01, 0xd4, 0x01, 0x19, 0x02, 0x17, 0x02, + 0x5b, 0x02, 0x5c, 0x02, 0x9b, 0x02, 0x9a, 0x02, 0xd6, 0x02, 0xd7, 0x02, + 0x13, 0x03, 0x12, 0x03, 0x46, 0x03, 0x45, 0x03, 0x79, 0x03, 0x79, 0x03, + 0xa5, 0x03, 0xa3, 0x03, 0xce, 0x03, 0xce, 0x03, 0xf3, 0x03, 0xf4, 0x03, + 0x13, 0x04, 0x12, 0x04, 0x2f, 0x04, 0x2f, 0x04, 0x44, 0x04, 0x43, 0x04, + 0x55, 0x04, 0x55, 0x04, 0x61, 0x04, 0x60, 0x04, 0x68, 0x04, 0x67, 0x04, + 0x68, 0x04, 0x68, 0x04, 0x65, 0x04, 0x64, 0x04, 0x5b, 0x04, 0x5b, 0x04, + 0x4d, 0x04, 0x4c, 0x04, 0x38, 0x04, 0x38, 0x04, 0x1f, 0x04, 0x1e, 0x04, + 0x01, 0x04, 0x04, 0x04, 0xdf, 0x03, 0xdd, 0x03, 0xb7, 0x03, 0xb9, 0x03, + 0x8c, 0x03, 0x89, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x25, 0x03, 0x23, 0x03, + 0xee, 0x02, 0xed, 0x02, 0xb1, 0x02, 0xb1, 0x02, 0x75, 0x02, 0x74, 0x02, + 0x32, 0x02, 0x32, 0x02, 0xed, 0x01, 0xed, 0x01, 0xa7, 0x01, 0xa6, 0x01, + 0x5d, 0x01, 0x5b, 0x01, 0x13, 0x01, 0x15, 0x01, 0xc8, 0x00, 0xc6, 0x00, + 0x7c, 0x00, 0x7c, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0xe2, 0xff, 0xe0, 0xff, + 0x94, 0xff, 0x96, 0xff, 0x48, 0xff, 0x45, 0xff, 0xfd, 0xfe, 0xfd, 0xfe, + 0xb0, 0xfe, 0xb0, 0xfe, 0x68, 0xfe, 0x67, 0xfe, 0x20, 0xfe, 0x20, 0xfe, + 0xd8, 0xfd, 0xd8, 0xfd, 0x9a, 0xfd, 0x98, 0xfd, 0x56, 0xfd, 0x55, 0xfd, + 0x1b, 0xfd, 0x1a, 0xfd, 0xdf, 0xfc, 0xdf, 0xfc, 0xaa, 0xfc, 0xab, 0xfc, + 0x7a, 0xfc, 0x78, 0xfc, 0x4a, 0xfc, 0x4a, 0xfc, 0x23, 0xfc, 0x23, 0xfc, + 0xfc, 0xfb, 0xfa, 0xfb, 0xdd, 0xfb, 0xde, 0xfb, 0xc1, 0xfb, 0xc0, 0xfb, + 0xac, 0xfb, 0xae, 0xfb, 0x9c, 0xfb, 0x9a, 0xfb, 0x90, 0xfb, 0x93, 0xfb, + 0x88, 0xfb, 0x88, 0xfb, 0x8b, 0xfb, 0x89, 0xfb, 0x8d, 0xfb, 0x8f, 0xfb, + 0x99, 0xfb, 0x98, 0xfb, 0xa7, 0xfb, 0xa8, 0xfb, 0xbd, 0xfb, 0xbc, 0xfb, + 0xd6, 0xfb, 0xd7, 0xfb, 0xf4, 0xfb, 0xf4, 0xfb, 0x18, 0xfc, 0x1a, 0xfc, + 0x42, 0xfc, 0x41, 0xfc, 0x6e, 0xfc, 0x6f, 0xfc, 0xa0, 0xfc, 0x9f, 0xfc, + 0xd4, 0xfc, 0xd6, 0xfc, 0x10, 0xfd, 0x11, 0xfd, 0x4c, 0xfd, 0x4c, 0xfd, + 0x8b, 0xfd, 0x8d, 0xfd, 0xcf, 0xfd, 0xcd, 0xfd, 0x12, 0xfe, 0x14, 0xfe, + 0x5d, 0xfe, 0x5c, 0xfe, 0xa4, 0xfe, 0xa4, 0xfe, 0xf0, 0xfe, 0xf2, 0xfe, + 0x3c, 0xff, 0x3b, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0xd8, 0xff, 0xd9, 0xff, + 0x29, 0x00, 0x28, 0x00, 0x76, 0x00, 0x77, 0x00, 0xc3, 0x00, 0xc3, 0x00, + 0x13, 0x01, 0x12, 0x01, 0x5b, 0x01, 0x5e, 0x01, 0xa8, 0x01, 0xa8, 0x01, + 0xf0, 0x01, 0xef, 0x01, 0x34, 0x02, 0x36, 0x02, 0x7a, 0x02, 0x7a, 0x02, + 0xb8, 0x02, 0xba, 0x02, 0xf7, 0x02, 0xf8, 0x02, 0x30, 0x03, 0x31, 0x03, + 0x66, 0x03, 0x66, 0x03, 0x9a, 0x03, 0x99, 0x03, 0xc6, 0x03, 0xc9, 0x03, + 0xf4, 0x03, 0xf0, 0x03, 0x12, 0x04, 0x17, 0x04, 0x37, 0x04, 0x34, 0x04, + 0x50, 0x04, 0x51, 0x04, 0x66, 0x04, 0x64, 0x04, 0x77, 0x04, 0x78, 0x04, + 0x7e, 0x04, 0x80, 0x04, 0x8b, 0x04, 0x88, 0x04, 0x83, 0x04, 0x88, 0x04, + 0x81, 0x04, 0x80, 0x04, 0x76, 0x04, 0x77, 0x04, 0x65, 0x04, 0x67, 0x04, + 0x53, 0x04, 0x51, 0x04, 0x34, 0x04, 0x34, 0x04, 0x17, 0x04, 0x18, 0x04, + 0xf1, 0x03, 0xf0, 0x03, 0xc9, 0x03, 0xc8, 0x03, 0x9a, 0x03, 0x9b, 0x03, + 0x66, 0x03, 0x66, 0x03, 0x31, 0x03, 0x31, 0x03, 0xf3, 0x02, 0xf4, 0x02, + 0xb8, 0x02, 0xb8, 0x02, 0x76, 0x02, 0x76, 0x02, 0x31, 0x02, 0x32, 0x02, + 0xea, 0x01, 0xe9, 0x01, 0xa1, 0x01, 0xa3, 0x01, 0x56, 0x01, 0x55, 0x01, + 0x08, 0x01, 0x09, 0x01, 0xba, 0x00, 0xbb, 0x00, 0x6c, 0x00, 0x6a, 0x00, + 0x1c, 0x00, 0x1e, 0x00, 0xcd, 0xff, 0xcc, 0xff, 0x7e, 0xff, 0x7d, 0xff, + 0x2e, 0xff, 0x2e, 0xff, 0xdf, 0xfe, 0xde, 0xfe, 0x91, 0xfe, 0x93, 0xfe, + 0x48, 0xfe, 0x46, 0xfe, 0xfc, 0xfd, 0xfe, 0xfd, 0xb8, 0xfd, 0xb6, 0xfd, + 0x70, 0xfd, 0x72, 0xfd, 0x30, 0xfd, 0x30, 0xfd, 0xf3, 0xfc, 0xf2, 0xfc, + 0xb8, 0xfc, 0xb9, 0xfc, 0x81, 0xfc, 0x81, 0xfc, 0x4f, 0xfc, 0x4d, 0xfc, + 0x1f, 0xfc, 0x1f, 0xfc, 0xf6, 0xfb, 0xf6, 0xfb, 0xd1, 0xfb, 0xd2, 0xfb, + 0xb1, 0xfb, 0xb1, 0xfb, 0x96, 0xfb, 0x96, 0xfb, 0x80, 0xfb, 0x80, 0xfb, + 0x71, 0xfb, 0x70, 0xfb, 0x66, 0xfb, 0x65, 0xfb, 0x5f, 0xfb, 0x60, 0xfb, + 0x62, 0xfb, 0x60, 0xfb, 0x63, 0xfb, 0x65, 0xfb, 0x72, 0xfb, 0x71, 0xfb, + 0x82, 0xfb, 0x80, 0xfb, 0x99, 0xfb, 0x99, 0xfb, 0xb3, 0xfb, 0xb2, 0xfb, + 0xd5, 0xfb, 0xd4, 0xfb, 0xf9, 0xfb, 0xfb, 0xfb, 0x26, 0xfc, 0x24, 0xfc, + 0x55, 0xfc, 0x57, 0xfc, 0x8b, 0xfc, 0x89, 0xfc, 0xc2, 0xfc, 0xc2, 0xfc, + 0x00, 0xfd, 0x00, 0xfd, 0x3d, 0xfd, 0x3e, 0xfd, 0x84, 0xfd, 0x83, 0xfd, + 0xc6, 0xfd, 0xc9, 0xfd, 0x12, 0xfe, 0x10, 0xfe, 0x5f, 0xfe, 0x5e, 0xfe, + 0xa8, 0xfe, 0xab, 0xfe, 0xfb, 0xfe, 0xfa, 0xfe, 0x4a, 0xff, 0x4a, 0xff, + 0x9b, 0xff, 0x9a, 0xff, 0xee, 0xff, 0xee, 0xff, 0x3d, 0x00, 0x3e, 0x00, + 0x90, 0x00, 0x91, 0x00, 0xe2, 0x00, 0xe1, 0x00, 0x31, 0x01, 0x32, 0x01, + 0x81, 0x01, 0x81, 0x01, 0xce, 0x01, 0xce, 0x01, 0x19, 0x02, 0x19, 0x02, + 0x62, 0x02, 0x62, 0x02, 0xa7, 0x02, 0xa8, 0x02, 0xeb, 0x02, 0xec, 0x02, + 0x2a, 0x03, 0x2a, 0x03, 0x67, 0x03, 0x68, 0x03, 0x9e, 0x03, 0x9e, 0x03, + 0xd4, 0x03, 0xd3, 0x03, 0x00, 0x04, 0x01, 0x04, 0x2d, 0x04, 0x2d, 0x04, + 0x51, 0x04, 0x50, 0x04, 0x70, 0x04, 0x71, 0x04, 0x8e, 0x04, 0x8c, 0x04, + 0xa0, 0x04, 0xa0, 0x04, 0xb2, 0x04, 0xb1, 0x04, 0xbc, 0x04, 0xbd, 0x04, + 0xc1, 0x04, 0xc0, 0x04, 0xc0, 0x04, 0xbf, 0x04, 0xb7, 0x04, 0xb7, 0x04, + 0xad, 0x04, 0xaa, 0x04, 0x9a, 0x04, 0x9b, 0x04, 0x81, 0x04, 0x80, 0x04, + 0x66, 0x04, 0x65, 0x04, 0x41, 0x04, 0x41, 0x04, 0x1b, 0x04, 0x1b, 0x04, + 0xee, 0x03, 0xec, 0x03, 0xbd, 0x03, 0xbd, 0x03, 0x85, 0x03, 0x86, 0x03, + 0x4b, 0x03, 0x4c, 0x03, 0x0e, 0x03, 0x0e, 0x03, 0xcb, 0x02, 0xca, 0x02, + 0x87, 0x02, 0x86, 0x02, 0x3c, 0x02, 0x3e, 0x02, 0xf3, 0x01, 0xf3, 0x01, + 0xa5, 0x01, 0xa6, 0x01, 0x55, 0x01, 0x56, 0x01, 0x06, 0x01, 0x06, 0x01, + 0xb2, 0x00, 0xb2, 0x00, 0x61, 0x00, 0x61, 0x00, 0x0b, 0x00, 0x0e, 0x00, + 0xbb, 0xff, 0xbb, 0xff, 0x65, 0xff, 0x66, 0xff, 0x13, 0xff, 0x14, 0xff, + 0xc1, 0xfe, 0xc2, 0xfe, 0x70, 0xfe, 0x71, 0xfe, 0x23, 0xfe, 0x22, 0xfe, + 0xd2, 0xfd, 0xd5, 0xfd, 0x8b, 0xfd, 0x8b, 0xfd, 0x42, 0xfd, 0x43, 0xfd, + 0x00, 0xfd, 0x02, 0xfd, 0xbe, 0xfc, 0xbe, 0xfc, 0x80, 0xfc, 0x84, 0xfc, + 0x4b, 0xfc, 0x49, 0xfc, 0x10, 0xfc, 0x14, 0xfc, 0xe6, 0xfb, 0xe4, 0xfb, + 0xb6, 0xfb, 0xb8, 0xfb, 0x92, 0xfb, 0x91, 0xfb, 0x70, 0xfb, 0x70, 0xfb, + 0x52, 0xfb, 0x54, 0xfb, 0x41, 0xfb, 0x41, 0xfb, 0x2c, 0xfb, 0x2d, 0xfb, + 0x25, 0xfb, 0x26, 0xfb, 0x1f, 0xfb, 0x1f, 0xfb, 0x20, 0xfb, 0x1f, 0xfb, + 0x29, 0xfb, 0x28, 0xfb, 0x33, 0xfb, 0x34, 0xfb, 0x47, 0xfb, 0x48, 0xfb, + 0x5f, 0xfb, 0x5d, 0xfb, 0x7d, 0xfb, 0x7e, 0xfb, 0xa0, 0xfb, 0xa0, 0xfb, + 0xc9, 0xfb, 0xca, 0xfb, 0xfa, 0xfb, 0xf9, 0xfb, 0x2a, 0xfc, 0x29, 0xfc, + 0x63, 0xfc, 0x65, 0xfc, 0x9f, 0xfc, 0x9e, 0xfc, 0xdf, 0xfc, 0xe1, 0xfc, + 0x24, 0xfd, 0x25, 0xfd, 0x6a, 0xfd, 0x6a, 0xfd, 0xb7, 0xfd, 0xb7, 0xfd, + 0x03, 0xfe, 0x02, 0xfe, 0x54, 0xfe, 0x54, 0xfe, 0xa5, 0xfe, 0xa6, 0xfe, + 0xf9, 0xfe, 0xf7, 0xfe, 0x4d, 0xff, 0x4f, 0xff, 0xa5, 0xff, 0xa3, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0x51, 0x00, 0x50, 0x00, 0xa7, 0x00, 0xa7, 0x00, + 0xfb, 0x00, 0xfb, 0x00, 0x50, 0x01, 0x4f, 0x01, 0xa2, 0x01, 0xa2, 0x01, + 0xf4, 0x01, 0xf3, 0x01, 0x40, 0x02, 0x41, 0x02, 0x90, 0x02, 0x90, 0x02, + 0xd9, 0x02, 0xd7, 0x02, 0x1f, 0x03, 0x1d, 0x03, 0x60, 0x03, 0x60, 0x03, + 0x9d, 0x03, 0x9c, 0x03, 0xda, 0x03, 0xdb, 0x03, 0x0e, 0x04, 0x0d, 0x04, + 0x3f, 0x04, 0x3f, 0x04, 0x6c, 0x04, 0x6b, 0x04, 0x91, 0x04, 0x92, 0x04, + 0xb5, 0x04, 0xb5, 0x04, 0xcf, 0x04, 0xce, 0x04, 0xe7, 0x04, 0xe5, 0x04, + 0xf6, 0x04, 0xf7, 0x04, 0xff, 0x04, 0xff, 0x04, 0x04, 0x05, 0x02, 0x05, + 0x02, 0x05, 0x03, 0x05, 0xf8, 0x04, 0xf7, 0x04, 0xeb, 0x04, 0xeb, 0x04, + 0xd8, 0x04, 0xd7, 0x04, 0xbd, 0x04, 0xbd, 0x04, 0x9f, 0x04, 0x9e, 0x04, + 0x77, 0x04, 0x78, 0x04, 0x4d, 0x04, 0x4c, 0x04, 0x1e, 0x04, 0x1f, 0x04, + 0xe8, 0x03, 0xe7, 0x03, 0xb1, 0x03, 0xb2, 0x03, 0x72, 0x03, 0x72, 0x03, + 0x30, 0x03, 0x30, 0x03, 0xea, 0x02, 0xeb, 0x02, 0xa1, 0x02, 0xa1, 0x02, + 0x56, 0x02, 0x57, 0x02, 0x06, 0x02, 0x05, 0x02, 0xb5, 0x01, 0xb5, 0x01, + 0x62, 0x01, 0x62, 0x01, 0x0a, 0x01, 0x0b, 0x01, 0xb5, 0x00, 0xb6, 0x00, + 0x5d, 0x00, 0x5c, 0x00, 0x05, 0x00, 0x06, 0x00, 0xae, 0xff, 0xad, 0xff, + 0x52, 0xff, 0x54, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xa4, 0xfe, 0xa5, 0xfe, + 0x52, 0xfe, 0x54, 0xfe, 0xff, 0xfd, 0xfd, 0xfd, 0xad, 0xfd, 0xb1, 0xfd, + 0x62, 0xfd, 0x60, 0xfd, 0x13, 0xfd, 0x15, 0xfd, 0xcd, 0xfc, 0xce, 0xfc, + 0x8a, 0xfc, 0x88, 0xfc, 0x48, 0xfc, 0x4b, 0xfc, 0x0f, 0xfc, 0x0e, 0xfc, + 0xd5, 0xfb, 0xd6, 0xfb, 0xa3, 0xfb, 0xa4, 0xfb, 0x76, 0xfb, 0x76, 0xfb, + 0x4e, 0xfb, 0x4f, 0xfb, 0x2b, 0xfb, 0x2b, 0xfb, 0x0f, 0xfb, 0x10, 0xfb, + 0xf8, 0xfa, 0xf9, 0xfa, 0xe5, 0xfa, 0xe8, 0xfa, 0xde, 0xfa, 0xde, 0xfa, + 0xd6, 0xfa, 0xd7, 0xfa, 0xdc, 0xfa, 0xdb, 0xfa, 0xe1, 0xfa, 0xe3, 0xfa, + 0xee, 0xfa, 0xef, 0xfa, 0x06, 0xfb, 0x05, 0xfb, 0x1f, 0xfb, 0x21, 0xfb, + 0x40, 0xfb, 0x40, 0xfb, 0x66, 0xfb, 0x67, 0xfb, 0x91, 0xfb, 0x93, 0xfb, + 0xc5, 0xfb, 0xc5, 0xfb, 0xf9, 0xfb, 0xfa, 0xfb, 0x35, 0xfc, 0x35, 0xfc, + 0x74, 0xfc, 0x75, 0xfc, 0xba, 0xfc, 0xba, 0xfc, 0x01, 0xfd, 0x00, 0xfd, + 0x4c, 0xfd, 0x4c, 0xfd, 0x9c, 0xfd, 0x9b, 0xfd, 0xec, 0xfd, 0xeb, 0xfd, + 0x42, 0xfe, 0x43, 0xfe, 0x98, 0xfe, 0x96, 0xfe, 0xef, 0xfe, 0xf0, 0xfe, + 0x4a, 0xff, 0x48, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0x58, 0x00, 0x58, 0x00, 0xb2, 0x00, 0xb1, 0x00, 0x0b, 0x01, 0x0c, 0x01, + 0x66, 0x01, 0x64, 0x01, 0xbb, 0x01, 0xba, 0x01, 0x11, 0x02, 0x12, 0x02, + 0x65, 0x02, 0x62, 0x02, 0xb2, 0x02, 0xb3, 0x02, 0x02, 0x03, 0x01, 0x03, + 0x49, 0x03, 0x47, 0x03, 0x8e, 0x03, 0x8f, 0x03, 0xd1, 0x03, 0xd0, 0x03, + 0x0c, 0x04, 0x0c, 0x04, 0x45, 0x04, 0x46, 0x04, 0x78, 0x04, 0x79, 0x04, + 0xa8, 0x04, 0xa7, 0x04, 0xcf, 0x04, 0xd1, 0x04, 0xf3, 0x04, 0xf2, 0x04, + 0x0d, 0x05, 0x11, 0x05, 0x28, 0x05, 0x26, 0x05, 0x35, 0x05, 0x37, 0x05, + 0x41, 0x05, 0x41, 0x05, 0x44, 0x05, 0x46, 0x05, 0x42, 0x05, 0x42, 0x05, + 0x3b, 0x05, 0x3b, 0x05, 0x2b, 0x05, 0x2c, 0x05, 0x17, 0x05, 0x17, 0x05, + 0xfc, 0x04, 0xfd, 0x04, 0xdc, 0x04, 0xdb, 0x04, 0xb2, 0x04, 0xb3, 0x04, + 0x87, 0x04, 0x87, 0x04, 0x54, 0x04, 0x55, 0x04, 0x1c, 0x04, 0x1d, 0x04, + 0xe0, 0x03, 0xdf, 0x03, 0x9f, 0x03, 0xa1, 0x03, 0x59, 0x03, 0x57, 0x03, + 0x0d, 0x03, 0x10, 0x03, 0xc3, 0x02, 0xc3, 0x02, 0x70, 0x02, 0x70, 0x02, + 0x1e, 0x02, 0x1f, 0x02, 0xc7, 0x01, 0xc8, 0x01, 0x6e, 0x01, 0x70, 0x01, + 0x17, 0x01, 0x17, 0x01, 0xb7, 0x00, 0xb8, 0x00, 0x61, 0x00, 0x61, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xa7, 0xff, 0xa7, 0xff, 0x46, 0xff, 0x49, 0xff, + 0xee, 0xfe, 0xec, 0xfe, 0x92, 0xfe, 0x94, 0xfe, 0x3b, 0xfe, 0x39, 0xfe, + 0xe3, 0xfd, 0xe4, 0xfd, 0x8b, 0xfd, 0x8d, 0xfd, 0x3d, 0xfd, 0x3d, 0xfd, + 0xec, 0xfc, 0xed, 0xfc, 0xa2, 0xfc, 0xa2, 0xfc, 0x5c, 0xfc, 0x5b, 0xfc, + 0x17, 0xfc, 0x1a, 0xfc, 0xdc, 0xfb, 0xda, 0xfb, 0x9f, 0xfb, 0xa0, 0xfb, + 0x6c, 0xfb, 0x6d, 0xfb, 0x3c, 0xfb, 0x3c, 0xfb, 0x13, 0xfb, 0x13, 0xfb, + 0xee, 0xfa, 0xef, 0xfa, 0xd2, 0xfa, 0xd1, 0xfa, 0xb9, 0xfa, 0xba, 0xfa, + 0xa8, 0xfa, 0xa9, 0xfa, 0x9d, 0xfa, 0x9e, 0xfa, 0x99, 0xfa, 0x98, 0xfa, + 0x9a, 0xfa, 0x9a, 0xfa, 0xa4, 0xfa, 0xa4, 0xfa, 0xb2, 0xfa, 0xb1, 0xfa, + 0xcb, 0xfa, 0xca, 0xfa, 0xe3, 0xfa, 0xe3, 0xfa, 0x06, 0xfb, 0x06, 0xfb, + 0x2f, 0xfb, 0x2f, 0xfb, 0x5c, 0xfb, 0x5c, 0xfb, 0x91, 0xfb, 0x91, 0xfb, + 0xca, 0xfb, 0xca, 0xfb, 0x09, 0xfc, 0x08, 0xfc, 0x4b, 0xfc, 0x4c, 0xfc, + 0x91, 0xfc, 0x91, 0xfc, 0xdf, 0xfc, 0xdd, 0xfc, 0x2b, 0xfd, 0x2d, 0xfd, + 0x80, 0xfd, 0x7d, 0xfd, 0xd3, 0xfd, 0xd5, 0xfd, 0x2d, 0xfe, 0x2c, 0xfe, + 0x87, 0xfe, 0x87, 0xfe, 0xe3, 0xfe, 0xe2, 0xfe, 0x41, 0xff, 0x42, 0xff, + 0x9f, 0xff, 0x9e, 0xff, 0xff, 0xff, 0x00, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0xbd, 0x00, 0xbe, 0x00, 0x1a, 0x01, 0x1c, 0x01, 0x78, 0x01, 0x77, 0x01, + 0xcf, 0x01, 0xd0, 0x01, 0x29, 0x02, 0x29, 0x02, 0x7f, 0x02, 0x7e, 0x02, + 0xd0, 0x02, 0xd4, 0x02, 0x23, 0x03, 0x22, 0x03, 0x6d, 0x03, 0x6e, 0x03, + 0xb7, 0x03, 0xb7, 0x03, 0xfc, 0x03, 0xfa, 0x03, 0x3a, 0x04, 0x3b, 0x04, + 0x75, 0x04, 0x74, 0x04, 0xaa, 0x04, 0xaa, 0x04, 0xdb, 0x04, 0xdb, 0x04, + 0x05, 0x05, 0x05, 0x05, 0x28, 0x05, 0x28, 0x05, 0x46, 0x05, 0x47, 0x05, + 0x5d, 0x05, 0x5e, 0x05, 0x71, 0x05, 0x6f, 0x05, 0x7b, 0x05, 0x7c, 0x05, + 0x7d, 0x05, 0x7d, 0x05, 0x7d, 0x05, 0x7c, 0x05, 0x72, 0x05, 0x73, 0x05, + 0x64, 0x05, 0x62, 0x05, 0x4d, 0x05, 0x4c, 0x05, 0x2d, 0x05, 0x2e, 0x05, + 0x0f, 0x05, 0x0c, 0x05, 0xe0, 0x04, 0xe3, 0x04, 0xb5, 0x04, 0xb4, 0x04, + 0x7e, 0x04, 0x7f, 0x04, 0x44, 0x04, 0x45, 0x04, 0x05, 0x04, 0x03, 0x04, + 0xbf, 0x03, 0xc1, 0x03, 0x79, 0x03, 0x77, 0x03, 0x29, 0x03, 0x2c, 0x03, + 0xda, 0x02, 0xda, 0x02, 0x86, 0x02, 0x86, 0x02, 0x2d, 0x02, 0x2f, 0x02, + 0xd7, 0x01, 0xd6, 0x01, 0x78, 0x01, 0x79, 0x01, 0x1c, 0x01, 0x1c, 0x01, + 0xbd, 0x00, 0xbd, 0x00, 0x5d, 0x00, 0x5b, 0x00, 0xfc, 0xff, 0x00, 0x00, + 0x9c, 0xff, 0x99, 0xff, 0x3c, 0xff, 0x3e, 0xff, 0xdd, 0xfe, 0xdd, 0xfe, + 0x82, 0xfe, 0x7f, 0xfe, 0x27, 0xfe, 0x28, 0xfe, 0xce, 0xfd, 0xce, 0xfd, + 0x79, 0xfd, 0x77, 0xfd, 0x23, 0xfd, 0x24, 0xfd, 0xd5, 0xfc, 0xd3, 0xfc, + 0x84, 0xfc, 0x87, 0xfc, 0x3f, 0xfc, 0x3c, 0xfc, 0xf9, 0xfb, 0xfa, 0xfb, + 0xba, 0xfb, 0xb9, 0xfb, 0x7e, 0xfb, 0x7f, 0xfb, 0x47, 0xfb, 0x46, 0xfb, + 0x18, 0xfb, 0x18, 0xfb, 0xec, 0xfa, 0xed, 0xfa, 0xc8, 0xfa, 0xc9, 0xfa, + 0xa9, 0xfa, 0xaa, 0xfa, 0x91, 0xfa, 0x92, 0xfa, 0x82, 0xfa, 0x80, 0xfa, + 0x75, 0xfa, 0x77, 0xfa, 0x73, 0xfa, 0x72, 0xfa, 0x73, 0xfa, 0x74, 0xfa, + 0x7c, 0xfa, 0x7e, 0xfa, 0x8f, 0xfa, 0x8e, 0xfa, 0xa4, 0xfa, 0xa5, 0xfa, + 0xc3, 0xfa, 0xc2, 0xfa, 0xe4, 0xfa, 0xe5, 0xfa, 0x10, 0xfb, 0x10, 0xfb, + 0x3f, 0xfb, 0x3f, 0xfb, 0x74, 0xfb, 0x75, 0xfb, 0xb1, 0xfb, 0xae, 0xfb, + 0xf0, 0xfb, 0xf2, 0xfb, 0x37, 0xfc, 0x36, 0xfc, 0x7f, 0xfc, 0x82, 0xfc, + 0xcf, 0xfc, 0xcd, 0xfc, 0x1f, 0xfd, 0x22, 0xfd, 0x76, 0xfd, 0x77, 0xfd, + 0xce, 0xfd, 0xcf, 0xfd, 0x2a, 0xfe, 0x2a, 0xfe, 0x87, 0xfe, 0x87, 0xfe, + 0xe7, 0xfe, 0xe7, 0xfe, 0x48, 0xff, 0x48, 0xff, 0xa8, 0xff, 0xaa, 0xff, + 0x0d, 0x00, 0x0d, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0xd1, 0x00, 0xd1, 0x00, + 0x31, 0x01, 0x31, 0x01, 0x8f, 0x01, 0x8e, 0x01, 0xec, 0x01, 0xec, 0x01, + 0x43, 0x02, 0x44, 0x02, 0x9e, 0x02, 0x9d, 0x02, 0xf0, 0x02, 0xf2, 0x02, + 0x44, 0x03, 0x45, 0x03, 0x91, 0x03, 0x8f, 0x03, 0xda, 0x03, 0xdd, 0x03, + 0x20, 0x04, 0x1f, 0x04, 0x60, 0x04, 0x61, 0x04, 0x9b, 0x04, 0x9c, 0x04, + 0xd1, 0x04, 0xd0, 0x04, 0x01, 0x05, 0x01, 0x05, 0x2a, 0x05, 0x2c, 0x05, + 0x50, 0x05, 0x4e, 0x05, 0x6c, 0x05, 0x70, 0x05, 0x83, 0x05, 0x83, 0x05, + 0x95, 0x05, 0x97, 0x05, 0x9d, 0x05, 0x9d, 0x05, 0xa2, 0x05, 0xa1, 0x05, + 0x9c, 0x05, 0x9d, 0x05, 0x90, 0x05, 0x92, 0x05, 0x81, 0x05, 0x80, 0x05, + 0x66, 0x05, 0x68, 0x05, 0x49, 0x05, 0x48, 0x05, 0x22, 0x05, 0x25, 0x05, + 0xf9, 0x04, 0xf6, 0x04, 0xc5, 0x04, 0xc7, 0x04, 0x8e, 0x04, 0x8e, 0x04, + 0x52, 0x04, 0x51, 0x04, 0x10, 0x04, 0x0e, 0x04, 0xc7, 0x03, 0xc9, 0x03, + 0x7e, 0x03, 0x7c, 0x03, 0x2d, 0x03, 0x30, 0x03, 0xdd, 0x02, 0xda, 0x02, + 0x84, 0x02, 0x86, 0x02, 0x2a, 0x02, 0x29, 0x02, 0xce, 0x01, 0xcf, 0x01, + 0x6e, 0x01, 0x6e, 0x01, 0x10, 0x01, 0x0f, 0x01, 0xac, 0x00, 0xae, 0x00, + 0x4a, 0x00, 0x4a, 0x00, 0xe8, 0xff, 0xe6, 0xff, 0x83, 0xff, 0x83, 0xff, + 0x20, 0xff, 0x20, 0xff, 0xc0, 0xfe, 0xc0, 0xfe, 0x63, 0xfe, 0x62, 0xfe, + 0x03, 0xfe, 0x05, 0xfe, 0xab, 0xfd, 0xaa, 0xfd, 0x51, 0xfd, 0x52, 0xfd, + 0xfc, 0xfc, 0xfc, 0xfc, 0xab, 0xfc, 0xa9, 0xfc, 0x59, 0xfc, 0x5c, 0xfc, + 0x13, 0xfc, 0x0f, 0xfc, 0xcc, 0xfb, 0xce, 0xfb, 0x8a, 0xfb, 0x8a, 0xfb, + 0x50, 0xfb, 0x4f, 0xfb, 0x19, 0xfb, 0x19, 0xfb, 0xe9, 0xfa, 0xe9, 0xfa, + 0xbe, 0xfa, 0xbe, 0xfa, 0x99, 0xfa, 0x9a, 0xfa, 0x7c, 0xfa, 0x7b, 0xfa, + 0x67, 0xfa, 0x66, 0xfa, 0x56, 0xfa, 0x56, 0xfa, 0x4c, 0xfa, 0x4c, 0xfa, + 0x49, 0xfa, 0x4a, 0xfa, 0x4f, 0xfa, 0x4d, 0xfa, 0x59, 0xfa, 0x5b, 0xfa, + 0x6e, 0xfa, 0x6b, 0xfa, 0x85, 0xfa, 0x87, 0xfa, 0xa8, 0xfa, 0xa6, 0xfa, + 0xcc, 0xfa, 0xce, 0xfa, 0xfb, 0xfa, 0xfa, 0xfa, 0x2e, 0xfb, 0x2e, 0xfb, + 0x65, 0xfb, 0x66, 0xfb, 0xa6, 0xfb, 0xa6, 0xfb, 0xea, 0xfb, 0xeb, 0xfb, + 0x34, 0xfc, 0x35, 0xfc, 0x81, 0xfc, 0x82, 0xfc, 0xd4, 0xfc, 0xd5, 0xfc, + 0x2a, 0xfd, 0x29, 0xfd, 0x84, 0xfd, 0x83, 0xfd, 0xdf, 0xfd, 0xe1, 0xfd, + 0x3d, 0xfe, 0x3d, 0xfe, 0xa1, 0xfe, 0xa4, 0xfe, 0x03, 0xff, 0x01, 0xff, + 0x68, 0xff, 0x69, 0xff, 0xcb, 0xff, 0xcd, 0xff, 0x34, 0x00, 0x33, 0x00, + 0x98, 0x00, 0x98, 0x00, 0xfb, 0x00, 0xfd, 0x00, 0x60, 0x01, 0x60, 0x01, + 0xbe, 0x01, 0xbf, 0x01, 0x1b, 0x02, 0x1b, 0x02, 0x78, 0x02, 0x78, 0x02, + 0xcf, 0x02, 0xd0, 0x02, 0x28, 0x03, 0x29, 0x03, 0x79, 0x03, 0x79, 0x03, + 0xc9, 0x03, 0xc9, 0x03, 0x12, 0x04, 0x12, 0x04, 0x58, 0x04, 0x58, 0x04, + 0x99, 0x04, 0x99, 0x04, 0xd4, 0x04, 0xd4, 0x04, 0x09, 0x05, 0x0b, 0x05, + 0x39, 0x05, 0x37, 0x05, 0x62, 0x05, 0x63, 0x05, 0x86, 0x05, 0x85, 0x05, + 0xa2, 0x05, 0xa1, 0x05, 0xba, 0x05, 0xba, 0x05, 0xc5, 0x05, 0xc4, 0x05, + 0xce, 0x05, 0xcf, 0x05, 0xce, 0x05, 0xcc, 0x05, 0xc6, 0x05, 0xc7, 0x05, + 0xb9, 0x05, 0xb8, 0x05, 0xa2, 0x05, 0xa4, 0x05, 0x89, 0x05, 0x87, 0x05, + 0x63, 0x05, 0x65, 0x05, 0x3b, 0x05, 0x3a, 0x05, 0x0d, 0x05, 0x0d, 0x05, + 0xd6, 0x04, 0xd5, 0x04, 0x9b, 0x04, 0x9c, 0x04, 0x5a, 0x04, 0x58, 0x04, + 0x12, 0x04, 0x13, 0x04, 0xc8, 0x03, 0xc7, 0x03, 0x76, 0x03, 0x76, 0x03, + 0x24, 0x03, 0x23, 0x03, 0xca, 0x02, 0xc9, 0x02, 0x6f, 0x02, 0x6f, 0x02, + 0x0f, 0x02, 0x11, 0x02, 0xaf, 0x01, 0xad, 0x01, 0x4c, 0x01, 0x4d, 0x01, + 0xe4, 0x00, 0xe4, 0x00, 0x81, 0x00, 0x81, 0x00, 0x18, 0x00, 0x1a, 0x00, + 0xb4, 0xff, 0xb2, 0xff, 0x4d, 0xff, 0x4c, 0xff, 0xe3, 0xfe, 0xe4, 0xfe, + 0x86, 0xfe, 0x84, 0xfe, 0x20, 0xfe, 0x21, 0xfe, 0xc5, 0xfd, 0xc2, 0xfd, + 0x64, 0xfd, 0x66, 0xfd, 0x0b, 0xfd, 0x09, 0xfd, 0xb6, 0xfc, 0xb6, 0xfc, + 0x61, 0xfc, 0x5f, 0xfc, 0x13, 0xfc, 0x13, 0xfc, 0xc7, 0xfb, 0xc7, 0xfb, + 0x83, 0xfb, 0x82, 0xfb, 0x41, 0xfb, 0x40, 0xfb, 0x05, 0xfb, 0x06, 0xfb, + 0xd1, 0xfa, 0xcf, 0xfa, 0xa1, 0xfa, 0xa2, 0xfa, 0x78, 0xfa, 0x78, 0xfa, + 0x57, 0xfa, 0x55, 0xfa, 0x39, 0xfa, 0x3a, 0xfa, 0x27, 0xfa, 0x25, 0xfa, + 0x19, 0xfa, 0x1a, 0xfa, 0x14, 0xfa, 0x12, 0xfa, 0x15, 0xfa, 0x14, 0xfa, + 0x1e, 0xfa, 0x1d, 0xfa, 0x2f, 0xfa, 0x2c, 0xfa, 0x46, 0xfa, 0x46, 0xfa, + 0x64, 0xfa, 0x64, 0xfa, 0x8b, 0xfa, 0x89, 0xfa, 0xb6, 0xfa, 0xb6, 0xfa, + 0xe8, 0xfa, 0xe7, 0xfa, 0x21, 0xfb, 0x22, 0xfb, 0x60, 0xfb, 0x5f, 0xfb, + 0xa4, 0xfb, 0xa4, 0xfb, 0xf0, 0xfb, 0xf0, 0xfb, 0x3d, 0xfc, 0x3d, 0xfc, + 0x91, 0xfc, 0x92, 0xfc, 0xea, 0xfc, 0xe9, 0xfc, 0x44, 0xfd, 0x44, 0xfd, + 0xa2, 0xfd, 0xa2, 0xfd, 0x06, 0xfe, 0x05, 0xfe, 0x67, 0xfe, 0x69, 0xfe, + 0xd1, 0xfe, 0xcf, 0xfe, 0x37, 0xff, 0x39, 0xff, 0x9e, 0xff, 0x9e, 0xff, + 0x0b, 0x00, 0x0a, 0x00, 0x71, 0x00, 0x72, 0x00, 0xde, 0x00, 0xdc, 0x00, + 0x42, 0x01, 0x44, 0x01, 0xa7, 0x01, 0xa6, 0x01, 0x09, 0x02, 0x0a, 0x02, + 0x69, 0x02, 0x67, 0x02, 0xc8, 0x02, 0xc9, 0x02, 0x21, 0x03, 0x22, 0x03, + 0x7b, 0x03, 0x7b, 0x03, 0xce, 0x03, 0xcd, 0x03, 0x1e, 0x04, 0x1f, 0x04, + 0x6a, 0x04, 0x69, 0x04, 0xad, 0x04, 0xad, 0x04, 0xef, 0x04, 0xf0, 0x04, + 0x27, 0x05, 0x28, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x88, 0x05, 0x88, 0x05, + 0xb2, 0x05, 0xb0, 0x05, 0xce, 0x05, 0xd1, 0x05, 0xe9, 0x05, 0xe7, 0x05, + 0xfb, 0x05, 0xfd, 0x05, 0x04, 0x06, 0x04, 0x06, 0x0a, 0x06, 0x09, 0x06, + 0x04, 0x06, 0x05, 0x06, 0xfb, 0x05, 0xf9, 0x05, 0xe6, 0x05, 0xe7, 0x05, + 0xce, 0x05, 0xcd, 0x05, 0xab, 0x05, 0xac, 0x05, 0x83, 0x05, 0x83, 0x05, + 0x53, 0x05, 0x53, 0x05, 0x1e, 0x05, 0x1c, 0x05, 0xe1, 0x04, 0xe1, 0x04, + 0x9f, 0x04, 0x9e, 0x04, 0x57, 0x04, 0x56, 0x04, 0x09, 0x04, 0x09, 0x04, + 0xb6, 0x03, 0xb7, 0x03, 0x63, 0x03, 0x60, 0x03, 0x05, 0x03, 0x05, 0x03, + 0xaa, 0x02, 0xa9, 0x02, 0x45, 0x02, 0x46, 0x02, 0xe2, 0x01, 0xe2, 0x01, + 0x7a, 0x01, 0x79, 0x01, 0x13, 0x01, 0x12, 0x01, 0xa9, 0x00, 0xa8, 0x00, + 0x3e, 0x00, 0x3d, 0x00, 0xd2, 0xff, 0xd3, 0xff, 0x66, 0xff, 0x66, 0xff, + 0xfb, 0xfe, 0xfc, 0xfe, 0x95, 0xfe, 0x94, 0xfe, 0x2f, 0xfe, 0x30, 0xfe, + 0xcd, 0xfd, 0xcc, 0xfd, 0x69, 0xfd, 0x6b, 0xfd, 0x0d, 0xfd, 0x0b, 0xfd, + 0xb0, 0xfc, 0xb1, 0xfc, 0x5a, 0xfc, 0x59, 0xfc, 0x03, 0xfc, 0x04, 0xfc, + 0xb6, 0xfb, 0xb5, 0xfb, 0x6a, 0xfb, 0x6b, 0xfb, 0x27, 0xfb, 0x26, 0xfb, + 0xe5, 0xfa, 0xe5, 0xfa, 0xac, 0xfa, 0xac, 0xfa, 0x79, 0xfa, 0x79, 0xfa, + 0x4b, 0xfa, 0x4c, 0xfa, 0x26, 0xfa, 0x26, 0xfa, 0x07, 0xfa, 0x08, 0xfa, + 0xef, 0xf9, 0xef, 0xf9, 0xe1, 0xf9, 0xe0, 0xf9, 0xd7, 0xf9, 0xd8, 0xf9, + 0xd6, 0xf9, 0xd6, 0xf9, 0xde, 0xf9, 0xde, 0xf9, 0xea, 0xf9, 0xeb, 0xf9, + 0x02, 0xfa, 0x01, 0xfa, 0x1e, 0xfa, 0x1f, 0xfa, 0x44, 0xfa, 0x41, 0xfa, + 0x6f, 0xfa, 0x70, 0xfa, 0xa1, 0xfa, 0xa0, 0xfa, 0xdb, 0xfa, 0xdc, 0xfa, + 0x1b, 0xfb, 0x1b, 0xfb, 0x5e, 0xfb, 0x5f, 0xfb, 0xad, 0xfb, 0xac, 0xfb, + 0xf9, 0xfb, 0xf8, 0xfb, 0x51, 0xfc, 0x51, 0xfc, 0xaa, 0xfc, 0xa9, 0xfc, + 0x08, 0xfd, 0x09, 0xfd, 0x6a, 0xfd, 0x66, 0xfd, 0xce, 0xfd, 0xce, 0xfd, + 0x36, 0xfe, 0x34, 0xfe, 0x9f, 0xfe, 0xa0, 0xfe, 0x0b, 0xff, 0x0a, 0xff, + 0x79, 0xff, 0x79, 0xff, 0xe7, 0xff, 0xe4, 0xff, 0x54, 0x00, 0x55, 0x00, + 0xc3, 0x00, 0xc1, 0x00, 0x2f, 0x01, 0x30, 0x01, 0x97, 0x01, 0x96, 0x01, + 0x00, 0x02, 0xfe, 0x01, 0x62, 0x02, 0x63, 0x02, 0xc8, 0x02, 0xc6, 0x02, + 0x25, 0x03, 0x25, 0x03, 0x81, 0x03, 0x81, 0x03, 0xdb, 0x03, 0xdc, 0x03, + 0x2d, 0x04, 0x2d, 0x04, 0x7e, 0x04, 0x7e, 0x04, 0xc8, 0x04, 0xc7, 0x04, + 0x0e, 0x05, 0x0d, 0x05, 0x4c, 0x05, 0x4c, 0x05, 0x83, 0x05, 0x82, 0x05, + 0xb6, 0x05, 0xb6, 0x05, 0xe0, 0x05, 0xdf, 0x05, 0x05, 0x06, 0x04, 0x06, + 0x20, 0x06, 0x1f, 0x06, 0x35, 0x06, 0x34, 0x06, 0x42, 0x06, 0x41, 0x06, + 0x4a, 0x06, 0x49, 0x06, 0x47, 0x06, 0x47, 0x06, 0x3c, 0x06, 0x3c, 0x06, + 0x2c, 0x06, 0x2e, 0x06, 0x14, 0x06, 0x12, 0x06, 0xf3, 0x05, 0xf3, 0x05, + 0xcb, 0x05, 0xca, 0x05, 0x9a, 0x05, 0x9a, 0x05, 0x66, 0x05, 0x66, 0x05, + 0x28, 0x05, 0x27, 0x05, 0xe6, 0x04, 0xe5, 0x04, 0x9c, 0x04, 0x9c, 0x04, + 0x4e, 0x04, 0x4c, 0x04, 0xfc, 0x03, 0xfa, 0x03, 0xa1, 0x03, 0xa2, 0x03, + 0x45, 0x03, 0x43, 0x03, 0xe3, 0x02, 0xe5, 0x02, 0x81, 0x02, 0x7c, 0x02, + 0x17, 0x02, 0x18, 0x02, 0xaf, 0x01, 0xaf, 0x01, 0x44, 0x01, 0x41, 0x01, + 0xd3, 0x00, 0xd6, 0x00, 0x66, 0x00, 0x65, 0x00, 0xf7, 0xff, 0xf7, 0xff, + 0x89, 0xff, 0x88, 0xff, 0x1a, 0xff, 0x19, 0xff, 0xad, 0xfe, 0xad, 0xfe, + 0x42, 0xfe, 0x41, 0xfe, 0xd9, 0xfd, 0xda, 0xfd, 0x75, 0xfd, 0x74, 0xfd, + 0x10, 0xfd, 0x12, 0xfd, 0xb1, 0xfc, 0xb0, 0xfc, 0x54, 0xfc, 0x53, 0xfc, + 0xfc, 0xfb, 0xfc, 0xfb, 0xa9, 0xfb, 0xa9, 0xfb, 0x5a, 0xfb, 0x59, 0xfb, + 0x10, 0xfb, 0x10, 0xfb, 0xcc, 0xfa, 0xca, 0xfa, 0x8d, 0xfa, 0x8e, 0xfa, + 0x55, 0xfa, 0x53, 0xfa, 0x25, 0xfa, 0x26, 0xfa, 0xf9, 0xf9, 0xfa, 0xf9, + 0xd9, 0xf9, 0xd7, 0xf9, 0xbb, 0xf9, 0xbd, 0xf9, 0xaa, 0xf9, 0xa8, 0xf9, + 0x9d, 0xf9, 0x9d, 0xf9, 0x99, 0xf9, 0x99, 0xf9, 0x9d, 0xf9, 0x9d, 0xf9, + 0xa7, 0xf9, 0xa9, 0xf9, 0xbf, 0xf9, 0xbb, 0xf9, 0xd7, 0xf9, 0xda, 0xf9, + 0xfb, 0xf9, 0xf8, 0xf9, 0x27, 0xfa, 0x28, 0xfa, 0x56, 0xfa, 0x58, 0xfa, + 0x90, 0xfa, 0x90, 0xfa, 0xd0, 0xfa, 0xd2, 0xfa, 0x16, 0xfb, 0x15, 0xfb, + 0x64, 0xfb, 0x65, 0xfb, 0xb2, 0xfb, 0xb3, 0xfb, 0x0e, 0xfc, 0x0e, 0xfc, + 0x64, 0xfc, 0x67, 0xfc, 0xc7, 0xfc, 0xc6, 0xfc, 0x2b, 0xfd, 0x2e, 0xfd, + 0x92, 0xfd, 0x91, 0xfd, 0xfe, 0xfd, 0xff, 0xfd, 0x6a, 0xfe, 0x69, 0xfe, + 0xd6, 0xfe, 0xda, 0xfe, 0x4a, 0xff, 0x4b, 0xff, 0xba, 0xff, 0xba, 0xff, + 0x2c, 0x00, 0x2b, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x0e, 0x01, 0x0f, 0x01, + 0x7e, 0x01, 0x7f, 0x01, 0xe8, 0x01, 0xe8, 0x01, 0x53, 0x02, 0x53, 0x02, + 0xb7, 0x02, 0xb8, 0x02, 0x1e, 0x03, 0x1e, 0x03, 0x7e, 0x03, 0x7f, 0x03, + 0xdb, 0x03, 0xdc, 0x03, 0x36, 0x04, 0x36, 0x04, 0x87, 0x04, 0x88, 0x04, + 0xd9, 0x04, 0xda, 0x04, 0x20, 0x05, 0x1f, 0x05, 0x64, 0x05, 0x64, 0x05, + 0xa0, 0x05, 0xa1, 0x05, 0xd4, 0x05, 0xd5, 0x05, 0x02, 0x06, 0x02, 0x06, + 0x2a, 0x06, 0x2b, 0x06, 0x4c, 0x06, 0x4c, 0x06, 0x65, 0x06, 0x65, 0x06, + 0x74, 0x06, 0x75, 0x06, 0x7f, 0x06, 0x7f, 0x06, 0x7e, 0x06, 0x7e, 0x06, + 0x7a, 0x06, 0x7a, 0x06, 0x66, 0x06, 0x67, 0x06, 0x52, 0x06, 0x51, 0x06, + 0x32, 0x06, 0x32, 0x06, 0x0b, 0x06, 0x0c, 0x06, 0xdf, 0x05, 0xde, 0x05, + 0xa7, 0x05, 0xa8, 0x05, 0x6d, 0x05, 0x6e, 0x05, 0x2b, 0x05, 0x29, 0x05, + 0xe0, 0x04, 0xe2, 0x04, 0x93, 0x04, 0x92, 0x04, 0x3d, 0x04, 0x3e, 0x04, + 0xe5, 0x03, 0xe4, 0x03, 0x88, 0x03, 0x87, 0x03, 0x26, 0x03, 0x25, 0x03, + 0xc2, 0x02, 0xc1, 0x02, 0x56, 0x02, 0x57, 0x02, 0xec, 0x01, 0xec, 0x01, + 0x7e, 0x01, 0x7e, 0x01, 0x0f, 0x01, 0x0f, 0x01, 0xa0, 0x00, 0x9e, 0x00, + 0x2b, 0x00, 0x2b, 0x00, 0xbb, 0xff, 0xb9, 0xff, 0x47, 0xff, 0x47, 0xff, + 0xd6, 0xfe, 0xd6, 0xfe, 0x68, 0xfe, 0x67, 0xfe, 0xf9, 0xfd, 0xfa, 0xfd, + 0x94, 0xfd, 0x91, 0xfd, 0x27, 0xfd, 0x2a, 0xfd, 0xc5, 0xfc, 0xc3, 0xfc, + 0x64, 0xfc, 0x64, 0xfc, 0x05, 0xfc, 0x04, 0xfc, 0xb0, 0xfb, 0xaf, 0xfb, + 0x59, 0xfb, 0x59, 0xfb, 0x0e, 0xfb, 0x0d, 0xfb, 0xc6, 0xfa, 0xc4, 0xfa, + 0x81, 0xfa, 0x82, 0xfa, 0x47, 0xfa, 0x45, 0xfa, 0x10, 0xfa, 0x10, 0xfa, + 0xe1, 0xf9, 0xe0, 0xf9, 0xba, 0xf9, 0xba, 0xf9, 0x9b, 0xf9, 0x9b, 0xf9, + 0x84, 0xf9, 0x84, 0xf9, 0x74, 0xf9, 0x75, 0xf9, 0x6c, 0xf9, 0x6b, 0xf9, + 0x6a, 0xf9, 0x6c, 0xf9, 0x75, 0xf9, 0x74, 0xf9, 0x84, 0xf9, 0x85, 0xf9, + 0x9d, 0xf9, 0x9e, 0xf9, 0xbf, 0xf9, 0xbf, 0xf9, 0xe6, 0xf9, 0xe8, 0xf9, + 0x18, 0xfa, 0x17, 0xfa, 0x4e, 0xfa, 0x4e, 0xfa, 0x8b, 0xfa, 0x8c, 0xfa, + 0xd1, 0xfa, 0xd0, 0xfa, 0x1d, 0xfb, 0x1f, 0xfb, 0x6e, 0xfb, 0x6e, 0xfb, + 0xc6, 0xfb, 0xc5, 0xfb, 0x21, 0xfc, 0x21, 0xfc, 0x82, 0xfc, 0x80, 0xfc, + 0xe8, 0xfc, 0xe8, 0xfc, 0x4f, 0xfd, 0x4d, 0xfd, 0xbb, 0xfd, 0xbc, 0xfd, + 0x29, 0xfe, 0x28, 0xfe, 0x99, 0xfe, 0x9a, 0xfe, 0x0b, 0xff, 0x0c, 0xff, + 0x81, 0xff, 0x7f, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0x68, 0x00, 0x68, 0x00, + 0xdb, 0x00, 0xdb, 0x00, 0x4c, 0x01, 0x4e, 0x01, 0xbf, 0x01, 0xbe, 0x01, + 0x29, 0x02, 0x2a, 0x02, 0x96, 0x02, 0x96, 0x02, 0xfd, 0x02, 0xfd, 0x02, + 0x63, 0x03, 0x63, 0x03, 0xc4, 0x03, 0xc5, 0x03, 0x20, 0x04, 0x20, 0x04, + 0x79, 0x04, 0x7a, 0x04, 0xcc, 0x04, 0xcd, 0x04, 0x19, 0x05, 0x19, 0x05, + 0x62, 0x05, 0x62, 0x05, 0xa3, 0x05, 0xa2, 0x05, 0xdd, 0x05, 0xde, 0x05, + 0x10, 0x06, 0x10, 0x06, 0x3b, 0x06, 0x3b, 0x06, 0x62, 0x06, 0x63, 0x06, + 0x7c, 0x06, 0x7d, 0x06, 0x94, 0x06, 0x92, 0x06, 0xa0, 0x06, 0xa2, 0x06, + 0xa4, 0x06, 0xa5, 0x06, 0xa2, 0x06, 0xa1, 0x06, 0x94, 0x06, 0x95, 0x06, + 0x84, 0x06, 0x81, 0x06, 0x66, 0x06, 0x68, 0x06, 0x42, 0x06, 0x41, 0x06, + 0x19, 0x06, 0x17, 0x06, 0xe2, 0x05, 0xe5, 0x05, 0xad, 0x05, 0xab, 0x05, + 0x6a, 0x05, 0x6a, 0x05, 0x23, 0x05, 0x24, 0x05, 0xd5, 0x04, 0xd5, 0x04, + 0x83, 0x04, 0x83, 0x04, 0x2a, 0x04, 0x2b, 0x04, 0xcf, 0x03, 0xce, 0x03, + 0x6b, 0x03, 0x6b, 0x03, 0x06, 0x03, 0x06, 0x03, 0x9e, 0x02, 0x9d, 0x02, + 0x2f, 0x02, 0x30, 0x02, 0xc2, 0x01, 0xc2, 0x01, 0x52, 0x01, 0x50, 0x01, + 0xdc, 0x00, 0xdf, 0x00, 0x6b, 0x00, 0x6a, 0x00, 0xf6, 0xff, 0xf8, 0xff, + 0x84, 0xff, 0x84, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x9e, 0xfe, 0x9e, 0xfe, + 0x2b, 0xfe, 0x2d, 0xfe, 0xc0, 0xfd, 0xc0, 0xfd, 0x55, 0xfd, 0x57, 0xfd, + 0xed, 0xfc, 0xed, 0xfc, 0x88, 0xfc, 0x88, 0xfc, 0x27, 0xfc, 0x28, 0xfc, + 0xc9, 0xfb, 0xc9, 0xfb, 0x72, 0xfb, 0x72, 0xfb, 0x1f, 0xfb, 0x20, 0xfb, + 0xd3, 0xfa, 0xd2, 0xfa, 0x8b, 0xfa, 0x8c, 0xfa, 0x4b, 0xfa, 0x4b, 0xfa, + 0x11, 0xfa, 0x10, 0xfa, 0xdd, 0xf9, 0xdf, 0xf9, 0xb3, 0xf9, 0xb2, 0xf9, + 0x8e, 0xf9, 0x8f, 0xf9, 0x73, 0xf9, 0x71, 0xf9, 0x5f, 0xf9, 0x5f, 0xf9, + 0x52, 0xf9, 0x50, 0xf9, 0x4d, 0xf9, 0x50, 0xf9, 0x54, 0xf9, 0x51, 0xf9, + 0x5f, 0xf9, 0x5e, 0xf9, 0x75, 0xf9, 0x74, 0xf9, 0x90, 0xf9, 0x8f, 0xf9, + 0xb7, 0xf9, 0xb6, 0xf9, 0xe4, 0xf9, 0xe3, 0xf9, 0x18, 0xfa, 0x17, 0xfa, + 0x54, 0xfa, 0x54, 0xfa, 0x97, 0xfa, 0x97, 0xfa, 0xdf, 0xfa, 0xdf, 0xfa, + 0x2e, 0xfb, 0x2e, 0xfb, 0x85, 0xfb, 0x84, 0xfb, 0xdc, 0xfb, 0xdd, 0xfb, + 0x3f, 0xfc, 0x3d, 0xfc, 0xa1, 0xfc, 0xa2, 0xfc, 0x09, 0xfd, 0x08, 0xfd, + 0x74, 0xfd, 0x74, 0xfd, 0xe1, 0xfd, 0xe0, 0xfd, 0x51, 0xfe, 0x52, 0xfe, + 0xc4, 0xfe, 0xc2, 0xfe, 0x37, 0xff, 0x39, 0xff, 0xab, 0xff, 0xac, 0xff, + 0x21, 0x00, 0x21, 0x00, 0x96, 0x00, 0x95, 0x00, 0x09, 0x01, 0x09, 0x01, + 0x7d, 0x01, 0x7e, 0x01, 0xee, 0x01, 0xef, 0x01, 0x5c, 0x02, 0x5b, 0x02, + 0xc5, 0x02, 0xc7, 0x02, 0x2e, 0x03, 0x2f, 0x03, 0x94, 0x03, 0x93, 0x03, + 0xf5, 0x03, 0xf6, 0x03, 0x4e, 0x04, 0x4f, 0x04, 0xa9, 0x04, 0xa8, 0x04, + 0xf6, 0x04, 0xf8, 0x04, 0x46, 0x05, 0x46, 0x05, 0x8a, 0x05, 0x8b, 0x05, + 0xca, 0x05, 0xca, 0x05, 0x02, 0x06, 0x02, 0x06, 0x32, 0x06, 0x33, 0x06, + 0x5c, 0x06, 0x5c, 0x06, 0x7e, 0x06, 0x7f, 0x06, 0x9a, 0x06, 0x9a, 0x06, + 0xab, 0x06, 0xab, 0x06, 0xb5, 0x06, 0xb6, 0x06, 0xb8, 0x06, 0xb6, 0x06, + 0xb2, 0x06, 0xb2, 0x06, 0xa4, 0x06, 0xa2, 0x06, 0x8b, 0x06, 0x8c, 0x06, + 0x6f, 0x06, 0x6d, 0x06, 0x47, 0x06, 0x47, 0x06, 0x19, 0x06, 0x18, 0x06, + 0xe3, 0x05, 0xe3, 0x05, 0xa4, 0x05, 0xa4, 0x05, 0x63, 0x05, 0x62, 0x05, + 0x16, 0x05, 0x17, 0x05, 0xc7, 0x04, 0xc5, 0x04, 0x70, 0x04, 0x70, 0x04, + 0x16, 0x04, 0x15, 0x04, 0xb5, 0x03, 0xb4, 0x03, 0x51, 0x03, 0x50, 0x03, + 0xea, 0x02, 0xe7, 0x02, 0x7c, 0x02, 0x7e, 0x02, 0x0f, 0x02, 0x0d, 0x02, + 0x9e, 0x01, 0x9e, 0x01, 0x2b, 0x01, 0x2a, 0x01, 0xb8, 0x00, 0xb8, 0x00, + 0x44, 0x00, 0x44, 0x00, 0xcf, 0xff, 0xcd, 0xff, 0x5a, 0xff, 0x5a, 0xff, + 0xe5, 0xfe, 0xe5, 0xfe, 0x71, 0xfe, 0x71, 0xfe, 0x02, 0xfe, 0x02, 0xfe, + 0x94, 0xfd, 0x93, 0xfd, 0x29, 0xfd, 0x29, 0xfd, 0xc0, 0xfc, 0xc0, 0xfc, + 0x5b, 0xfc, 0x5b, 0xfc, 0xfc, 0xfb, 0xfc, 0xfb, 0xa0, 0xfb, 0x9d, 0xfb, + 0x49, 0xfb, 0x4c, 0xfb, 0xf8, 0xfa, 0xf6, 0xfa, 0xac, 0xfa, 0xad, 0xfa, + 0x68, 0xfa, 0x67, 0xfa, 0x28, 0xfa, 0x26, 0xfa, 0xf1, 0xf9, 0xf1, 0xf9, + 0xbf, 0xf9, 0xbf, 0xf9, 0x97, 0xf9, 0x96, 0xf9, 0x76, 0xf9, 0x76, 0xf9, + 0x5c, 0xf9, 0x5b, 0xf9, 0x4b, 0xf9, 0x4b, 0xf9, 0x40, 0xf9, 0x40, 0xf9, + 0x3f, 0xf9, 0x3f, 0xf9, 0x48, 0xf9, 0x48, 0xf9, 0x55, 0xf9, 0x55, 0xf9, + 0x70, 0xf9, 0x70, 0xf9, 0x8d, 0xf9, 0x8e, 0xf9, 0xb8, 0xf9, 0xb7, 0xf9, + 0xe8, 0xf9, 0xe9, 0xf9, 0x1f, 0xfa, 0x1e, 0xfa, 0x5e, 0xfa, 0x5d, 0xfa, + 0xa2, 0xfa, 0xa2, 0xfa, 0xed, 0xfa, 0xed, 0xfa, 0x41, 0xfb, 0x40, 0xfb, + 0x96, 0xfb, 0x97, 0xfb, 0xf5, 0xfb, 0xf3, 0xfb, 0x54, 0xfc, 0x53, 0xfc, + 0xba, 0xfc, 0xba, 0xfc, 0x23, 0xfd, 0x22, 0xfd, 0x90, 0xfd, 0x90, 0xfd, + 0xfd, 0xfd, 0xfe, 0xfd, 0x73, 0xfe, 0x72, 0xfe, 0xe5, 0xfe, 0xe6, 0xfe, + 0x5a, 0xff, 0x5b, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0x45, 0x00, 0x46, 0x00, + 0xbc, 0x00, 0xbc, 0x00, 0x31, 0x01, 0x30, 0x01, 0xa3, 0x01, 0xa4, 0x01, + 0x17, 0x02, 0x16, 0x02, 0x82, 0x02, 0x83, 0x02, 0xf0, 0x02, 0xee, 0x02, + 0x58, 0x03, 0x59, 0x03, 0xbb, 0x03, 0xbb, 0x03, 0x1c, 0x04, 0x1d, 0x04, + 0x79, 0x04, 0x77, 0x04, 0xcd, 0x04, 0xcc, 0x04, 0x1f, 0x05, 0x1f, 0x05, + 0x69, 0x05, 0x68, 0x05, 0xad, 0x05, 0xae, 0x05, 0xec, 0x05, 0xeb, 0x05, + 0x22, 0x06, 0x20, 0x06, 0x51, 0x06, 0x52, 0x06, 0x7a, 0x06, 0x78, 0x06, + 0x99, 0x06, 0x9c, 0x06, 0xb2, 0x06, 0xb2, 0x06, 0xc2, 0x06, 0xc1, 0x06, + 0xc9, 0x06, 0xca, 0x06, 0xc8, 0x06, 0xc8, 0x06, 0xbe, 0x06, 0xbe, 0x06, + 0xae, 0x06, 0xae, 0x06, 0x94, 0x06, 0x93, 0x06, 0x72, 0x06, 0x72, 0x06, + 0x48, 0x06, 0x47, 0x06, 0x17, 0x06, 0x17, 0x06, 0xdd, 0x05, 0xdd, 0x05, + 0x9d, 0x05, 0x9e, 0x05, 0x58, 0x05, 0x55, 0x05, 0x09, 0x05, 0x0a, 0x05, + 0xb8, 0x04, 0xb6, 0x04, 0x5d, 0x04, 0x5c, 0x04, 0x02, 0x04, 0x01, 0x04, + 0x9d, 0x03, 0x9d, 0x03, 0x38, 0x03, 0x38, 0x03, 0xce, 0x02, 0xce, 0x02, + 0x61, 0x02, 0x5f, 0x02, 0xf1, 0x01, 0xf1, 0x01, 0x7c, 0x01, 0x7c, 0x01, + 0x0a, 0x01, 0x0b, 0x01, 0x96, 0x00, 0x93, 0x00, 0x1f, 0x00, 0x20, 0x00, + 0xac, 0xff, 0xa9, 0xff, 0x35, 0xff, 0x36, 0xff, 0xc1, 0xfe, 0xc1, 0xfe, + 0x4d, 0xfe, 0x4b, 0xfe, 0xdd, 0xfd, 0xdf, 0xfd, 0x6f, 0xfd, 0x6f, 0xfd, + 0x06, 0xfd, 0x06, 0xfd, 0x9e, 0xfc, 0x9f, 0xfc, 0x39, 0xfc, 0x38, 0xfc, + 0xda, 0xfb, 0xda, 0xfb, 0x7f, 0xfb, 0x7e, 0xfb, 0x2a, 0xfb, 0x29, 0xfb, + 0xd7, 0xfa, 0xd8, 0xfa, 0x8e, 0xfa, 0x8d, 0xfa, 0x49, 0xfa, 0x4a, 0xfa, + 0x0b, 0xfa, 0x0a, 0xfa, 0xd5, 0xf9, 0xd6, 0xf9, 0xa4, 0xf9, 0xa2, 0xf9, + 0x7d, 0xf9, 0x7e, 0xf9, 0x5d, 0xf9, 0x5c, 0xf9, 0x46, 0xf9, 0x48, 0xf9, + 0x36, 0xf9, 0x36, 0xf9, 0x2f, 0xf9, 0x2f, 0xf9, 0x30, 0xf9, 0x2f, 0xf9, + 0x38, 0xf9, 0x39, 0xf9, 0x4a, 0xf9, 0x49, 0xf9, 0x62, 0xf9, 0x63, 0xf9, + 0x86, 0xf9, 0x84, 0xf9, 0xb2, 0xf9, 0xb1, 0xf9, 0xe0, 0xf9, 0xe1, 0xf9, + 0x1d, 0xfa, 0x1d, 0xfa, 0x5e, 0xfa, 0x5d, 0xfa, 0xa3, 0xfa, 0xa5, 0xfa, + 0xf4, 0xfa, 0xf3, 0xfa, 0x47, 0xfb, 0x47, 0xfb, 0xa1, 0xfb, 0xa2, 0xfb, + 0x01, 0xfc, 0xff, 0xfb, 0x62, 0xfc, 0x62, 0xfc, 0xcc, 0xfc, 0xcc, 0xfc, + 0x37, 0xfd, 0x35, 0xfd, 0xa5, 0xfd, 0xa6, 0xfd, 0x17, 0xfe, 0x16, 0xfe, + 0x8a, 0xfe, 0x8b, 0xfe, 0x02, 0xff, 0x02, 0xff, 0x75, 0xff, 0x75, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0x64, 0x00, 0x65, 0x00, 0xe0, 0x00, 0xdd, 0x00, + 0x52, 0x01, 0x54, 0x01, 0xc9, 0x01, 0xc7, 0x01, 0x3a, 0x02, 0x39, 0x02, + 0xa5, 0x02, 0xa5, 0x02, 0x12, 0x03, 0x11, 0x03, 0x7b, 0x03, 0x7b, 0x03, + 0xde, 0x03, 0xde, 0x03, 0x40, 0x04, 0x40, 0x04, 0x98, 0x04, 0x99, 0x04, + 0xf1, 0x04, 0xef, 0x04, 0x40, 0x05, 0x41, 0x05, 0x8b, 0x05, 0x8a, 0x05, + 0xcd, 0x05, 0xce, 0x05, 0x0b, 0x06, 0x09, 0x06, 0x40, 0x06, 0x42, 0x06, + 0x6d, 0x06, 0x6c, 0x06, 0x95, 0x06, 0x95, 0x06, 0xb3, 0x06, 0xb2, 0x06, + 0xca, 0x06, 0xca, 0x06, 0xd8, 0x06, 0xd7, 0x06, 0xdd, 0x06, 0xdd, 0x06, + 0xdb, 0x06, 0xdc, 0x06, 0xcf, 0x06, 0xcf, 0x06, 0xbc, 0x06, 0xbc, 0x06, + 0xa2, 0x06, 0xa1, 0x06, 0x7c, 0x06, 0x7b, 0x06, 0x50, 0x06, 0x51, 0x06, + 0x1c, 0x06, 0x1b, 0x06, 0xe2, 0x05, 0xe2, 0x05, 0xa0, 0x05, 0xa0, 0x05, + 0x57, 0x05, 0x56, 0x05, 0x08, 0x05, 0x09, 0x05, 0xb4, 0x04, 0xb3, 0x04, + 0x5b, 0x04, 0x5a, 0x04, 0xf9, 0x03, 0xf9, 0x03, 0x97, 0x03, 0x96, 0x03, + 0x2e, 0x03, 0x2f, 0x03, 0xc2, 0x02, 0xc2, 0x02, 0x53, 0x02, 0x53, 0x02, + 0xe0, 0x01, 0xe1, 0x01, 0x6e, 0x01, 0x6c, 0x01, 0xf6, 0x00, 0xf9, 0x00, + 0x82, 0x00, 0x80, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x93, 0xff, 0x93, 0xff, + 0x1b, 0xff, 0x1a, 0xff, 0xa7, 0xfe, 0xa7, 0xfe, 0x32, 0xfe, 0x31, 0xfe, + 0xc3, 0xfd, 0xc3, 0xfd, 0x53, 0xfd, 0x53, 0xfd, 0xe9, 0xfc, 0xe9, 0xfc, + 0x81, 0xfc, 0x7f, 0xfc, 0x1a, 0xfc, 0x1b, 0xfc, 0xbd, 0xfb, 0xbd, 0xfb, + 0x5e, 0xfb, 0x5d, 0xfb, 0x0c, 0xfb, 0x0b, 0xfb, 0xb9, 0xfa, 0xb8, 0xfa, + 0x6e, 0xfa, 0x6e, 0xfa, 0x2a, 0xfa, 0x2a, 0xfa, 0xed, 0xf9, 0xeb, 0xf9, + 0xb6, 0xf9, 0xb6, 0xf9, 0x88, 0xf9, 0x87, 0xf9, 0x5e, 0xf9, 0x5f, 0xf9, + 0x41, 0xf9, 0x40, 0xf9, 0x29, 0xf9, 0x28, 0xf9, 0x1c, 0xf9, 0x1a, 0xf9, + 0x15, 0xf9, 0x13, 0xf9, 0x16, 0xf9, 0x15, 0xf9, 0x21, 0xf9, 0x1f, 0xf9, + 0x32, 0xf9, 0x33, 0xf9, 0x51, 0xf9, 0x4f, 0xf9, 0x73, 0xf9, 0x71, 0xf9, + 0xa0, 0xf9, 0x9f, 0xf9, 0xd4, 0xf9, 0xd2, 0xf9, 0x0e, 0xfa, 0x0d, 0xfa, + 0x51, 0xfa, 0x50, 0xfa, 0x9b, 0xfa, 0x99, 0xfa, 0xed, 0xfa, 0xed, 0xfa, + 0x44, 0xfb, 0x43, 0xfb, 0x9d, 0xfb, 0x9d, 0xfb, 0x02, 0xfc, 0x00, 0xfc, + 0x64, 0xfc, 0x63, 0xfc, 0xd0, 0xfc, 0xd0, 0xfc, 0x3e, 0xfd, 0x3b, 0xfd, + 0xac, 0xfd, 0xae, 0xfd, 0x22, 0xfe, 0x21, 0xfe, 0x98, 0xfe, 0x97, 0xfe, + 0x11, 0xff, 0x0e, 0xff, 0x8b, 0xff, 0x89, 0xff, 0x02, 0x00, 0x01, 0x00, + 0x7d, 0x00, 0x7c, 0x00, 0xf5, 0x00, 0xf3, 0x00, 0x6c, 0x01, 0x6c, 0x01, + 0xe3, 0x01, 0xe1, 0x01, 0x53, 0x02, 0x53, 0x02, 0xc3, 0x02, 0xc0, 0x02, + 0x30, 0x03, 0x2f, 0x03, 0x98, 0x03, 0x98, 0x03, 0xff, 0x03, 0xfd, 0x03, + 0x5f, 0x04, 0x5e, 0x04, 0xbb, 0x04, 0xba, 0x04, 0x12, 0x05, 0x11, 0x05, + 0x61, 0x05, 0x60, 0x05, 0xab, 0x05, 0xac, 0x05, 0xf0, 0x05, 0xee, 0x05, + 0x2d, 0x06, 0x2d, 0x06, 0x62, 0x06, 0x64, 0x06, 0x93, 0x06, 0x8f, 0x06, + 0xb5, 0x06, 0xb9, 0x06, 0xd7, 0x06, 0xd2, 0x06, 0xea, 0x06, 0xeb, 0x06, + 0xf8, 0x06, 0xf6, 0x06, 0xfe, 0x06, 0xfc, 0x06, 0xf8, 0x06, 0xfa, 0x06, + 0xee, 0x06, 0xeb, 0x06, 0xd6, 0x06, 0xd7, 0x06, 0xba, 0x06, 0xb9, 0x06, + 0x95, 0x06, 0x94, 0x06, 0x66, 0x06, 0x66, 0x06, 0x31, 0x06, 0x32, 0x06, + 0xf3, 0x05, 0xf4, 0x05, 0xb0, 0x05, 0xaf, 0x05, 0x65, 0x05, 0x64, 0x05, + 0x10, 0x05, 0x10, 0x05, 0xbc, 0x04, 0xbb, 0x04, 0x5c, 0x04, 0x5e, 0x04, + 0xfd, 0x03, 0xfd, 0x03, 0x96, 0x03, 0x96, 0x03, 0x2c, 0x03, 0x2c, 0x03, + 0xbe, 0x02, 0xbc, 0x02, 0x4c, 0x02, 0x4b, 0x02, 0xd7, 0x01, 0xd8, 0x01, + 0x62, 0x01, 0x60, 0x01, 0xea, 0x00, 0xe9, 0x00, 0x70, 0x00, 0x70, 0x00, + 0xf8, 0xff, 0xf6, 0xff, 0x7f, 0xff, 0x7e, 0xff, 0x04, 0xff, 0x03, 0xff, + 0x8e, 0xfe, 0x8c, 0xfe, 0x16, 0xfe, 0x16, 0xfe, 0xa7, 0xfd, 0xa5, 0xfd, + 0x35, 0xfd, 0x35, 0xfd, 0xc8, 0xfc, 0xc7, 0xfc, 0x5d, 0xfc, 0x5e, 0xfc, + 0xf9, 0xfb, 0xf6, 0xfb, 0x96, 0xfb, 0x96, 0xfb, 0x3a, 0xfb, 0x3a, 0xfb, + 0xe4, 0xfa, 0xe2, 0xfa, 0x90, 0xfa, 0x90, 0xfa, 0x48, 0xfa, 0x45, 0xfa, + 0x01, 0xfa, 0x00, 0xfa, 0xc5, 0xf9, 0xc3, 0xf9, 0x8d, 0xf9, 0x8e, 0xf9, + 0x5d, 0xf9, 0x5c, 0xf9, 0x38, 0xf9, 0x39, 0xf9, 0x1a, 0xf9, 0x17, 0xf9, + 0x04, 0xf9, 0x04, 0xf9, 0xf7, 0xf8, 0xf6, 0xf8, 0xf0, 0xf8, 0xf0, 0xf8, + 0xf4, 0xf8, 0xf4, 0xf8, 0x00, 0xf9, 0x00, 0xf9, 0x15, 0xf9, 0x15, 0xf9, + 0x35, 0xf9, 0x34, 0xf9, 0x58, 0xf9, 0x59, 0xf9, 0x8a, 0xf9, 0x88, 0xf9, + 0xbe, 0xf9, 0xbf, 0xf9, 0xfd, 0xf9, 0xfc, 0xf9, 0x45, 0xfa, 0x42, 0xfa, + 0x90, 0xfa, 0x90, 0xfa, 0xe5, 0xfa, 0xe4, 0xfa, 0x3d, 0xfb, 0x3b, 0xfb, + 0x9a, 0xfb, 0x9d, 0xfb, 0x00, 0xfc, 0xfc, 0xfb, 0x66, 0xfc, 0x67, 0xfc, + 0xd4, 0xfc, 0xd3, 0xfc, 0x44, 0xfd, 0x42, 0xfd, 0xb8, 0xfd, 0xb7, 0xfd, + 0x2f, 0xfe, 0x2e, 0xfe, 0xa6, 0xfe, 0xa5, 0xfe, 0x20, 0xff, 0x21, 0xff, + 0x9b, 0xff, 0x9a, 0xff, 0x18, 0x00, 0x17, 0x00, 0x92, 0x00, 0x92, 0x00, + 0x0f, 0x01, 0x0c, 0x01, 0x86, 0x01, 0x87, 0x01, 0xfe, 0x01, 0xfc, 0x01, + 0x6f, 0x02, 0x6e, 0x02, 0xe4, 0x02, 0xe3, 0x02, 0x4e, 0x03, 0x4d, 0x03, + 0xbc, 0x03, 0xbd, 0x03, 0x20, 0x04, 0x1e, 0x04, 0x81, 0x04, 0x83, 0x04, + 0xe2, 0x04, 0xdf, 0x04, 0x33, 0x05, 0x33, 0x05, 0x88, 0x05, 0x87, 0x05, + 0xd0, 0x05, 0xd0, 0x05, 0x14, 0x06, 0x14, 0x06, 0x52, 0x06, 0x52, 0x06, + 0x87, 0x06, 0x86, 0x06, 0xb7, 0x06, 0xb6, 0x06, 0xd8, 0x06, 0xd9, 0x06, + 0xf9, 0x06, 0xf7, 0x06, 0x0e, 0x07, 0x0e, 0x07, 0x1b, 0x07, 0x18, 0x07, + 0x1d, 0x07, 0x1d, 0x07, 0x18, 0x07, 0x1a, 0x07, 0x0b, 0x07, 0x0a, 0x07, + 0xf3, 0x06, 0xf4, 0x06, 0xd6, 0x06, 0xd5, 0x06, 0xad, 0x06, 0xae, 0x06, + 0x7e, 0x06, 0x7d, 0x06, 0x47, 0x06, 0x47, 0x06, 0x06, 0x06, 0x06, 0x06, + 0xc1, 0x05, 0xc0, 0x05, 0x72, 0x05, 0x72, 0x05, 0x1d, 0x05, 0x1c, 0x05, + 0xc3, 0x04, 0xc4, 0x04, 0x65, 0x04, 0x64, 0x04, 0xfe, 0x03, 0xfe, 0x03, + 0x97, 0x03, 0x95, 0x03, 0x27, 0x03, 0x28, 0x03, 0xb8, 0x02, 0xb6, 0x02, + 0x44, 0x02, 0x44, 0x02, 0xcb, 0x01, 0xc9, 0x01, 0x53, 0x01, 0x52, 0x01, + 0xda, 0x00, 0xd9, 0x00, 0x5d, 0x00, 0x5c, 0x00, 0xe2, 0xff, 0xe2, 0xff, + 0x65, 0xff, 0x63, 0xff, 0xeb, 0xfe, 0xeb, 0xfe, 0x70, 0xfe, 0x6f, 0xfe, + 0xf8, 0xfd, 0xf9, 0xfd, 0x86, 0xfd, 0x85, 0xfd, 0x12, 0xfd, 0x13, 0xfd, + 0xa6, 0xfc, 0xa5, 0xfc, 0x3a, 0xfc, 0x3a, 0xfc, 0xd3, 0xfb, 0xd2, 0xfb, + 0x6e, 0xfb, 0x71, 0xfb, 0x15, 0xfb, 0x13, 0xfb, 0xba, 0xfa, 0xbc, 0xfa, + 0x69, 0xfa, 0x69, 0xfa, 0x1d, 0xfa, 0x1d, 0xfa, 0xd8, 0xf9, 0xd8, 0xf9, + 0x9c, 0xf9, 0x9c, 0xf9, 0x65, 0xf9, 0x64, 0xf9, 0x38, 0xf9, 0x38, 0xf9, + 0x11, 0xf9, 0x11, 0xf9, 0xf4, 0xf8, 0xf5, 0xf8, 0xe1, 0xf8, 0xe0, 0xf8, + 0xd2, 0xf8, 0xd2, 0xf8, 0xd0, 0xf8, 0xd0, 0xf8, 0xd3, 0xf8, 0xd3, 0xf8, + 0xe2, 0xf8, 0xe3, 0xf8, 0xfa, 0xf8, 0xfa, 0xf8, 0x19, 0xf9, 0x1a, 0xf9, + 0x44, 0xf9, 0x43, 0xf9, 0x72, 0xf9, 0x74, 0xf9, 0xb0, 0xf9, 0xae, 0xf9, + 0xec, 0xf9, 0xee, 0xf9, 0x38, 0xfa, 0x36, 0xfa, 0x85, 0xfa, 0x85, 0xfa, + 0xdc, 0xfa, 0xdb, 0xfa, 0x38, 0xfb, 0x36, 0xfb, 0x96, 0xfb, 0x97, 0xfb, + 0x00, 0xfc, 0xfe, 0xfb, 0x69, 0xfc, 0x6b, 0xfc, 0xd9, 0xfc, 0xd8, 0xfc, + 0x4d, 0xfd, 0x4c, 0xfd, 0xc1, 0xfd, 0xc2, 0xfd, 0x3b, 0xfe, 0x3b, 0xfe, + 0xb7, 0xfe, 0xb7, 0xfe, 0x33, 0xff, 0x32, 0xff, 0xb1, 0xff, 0xb2, 0xff, + 0x2d, 0x00, 0x2e, 0x00, 0xac, 0x00, 0xaa, 0x00, 0x27, 0x01, 0x29, 0x01, + 0xa5, 0x01, 0xa4, 0x01, 0x1a, 0x02, 0x1c, 0x02, 0x91, 0x02, 0x91, 0x02, + 0x04, 0x03, 0x02, 0x03, 0x73, 0x03, 0x74, 0x03, 0xdf, 0x03, 0xde, 0x03, + 0x49, 0x04, 0x49, 0x04, 0xa9, 0x04, 0xaa, 0x04, 0x0a, 0x05, 0x06, 0x05, + 0x5f, 0x05, 0x5f, 0x05, 0xb1, 0x05, 0xb0, 0x05, 0xfa, 0x05, 0xfb, 0x05, + 0x3f, 0x06, 0x3e, 0x06, 0x7d, 0x06, 0x7c, 0x06, 0xb2, 0x06, 0xaf, 0x06, + 0xde, 0x06, 0xdd, 0x06, 0x03, 0x07, 0x01, 0x07, 0x1f, 0x07, 0x1e, 0x07, + 0x32, 0x07, 0x31, 0x07, 0x3d, 0x07, 0x3c, 0x07, 0x3c, 0x07, 0x3d, 0x07, + 0x39, 0x07, 0x38, 0x07, 0x25, 0x07, 0x25, 0x07, 0x0f, 0x07, 0x0e, 0x07, + 0xea, 0x06, 0xeb, 0x06, 0xc3, 0x06, 0xc1, 0x06, 0x8e, 0x06, 0x8f, 0x06, + 0x55, 0x06, 0x54, 0x06, 0x10, 0x06, 0x11, 0x06, 0xc8, 0x05, 0xc6, 0x05, + 0x77, 0x05, 0x77, 0x05, 0x1f, 0x05, 0x1f, 0x05, 0xc3, 0x04, 0xc2, 0x04, + 0x5e, 0x04, 0x60, 0x04, 0xfa, 0x03, 0xf8, 0x03, 0x8c, 0x03, 0x8b, 0x03, + 0x1c, 0x03, 0x1c, 0x03, 0xa9, 0x02, 0xa7, 0x02, 0x32, 0x02, 0x31, 0x02, + 0xb7, 0x01, 0xb9, 0x01, 0x3f, 0x01, 0x3d, 0x01, 0xc1, 0x00, 0xc2, 0x00, + 0x45, 0x00, 0x45, 0x00, 0xc9, 0xff, 0xc7, 0xff, 0x49, 0xff, 0x49, 0xff, + 0xcf, 0xfe, 0xcd, 0xfe, 0x51, 0xfe, 0x51, 0xfe, 0xd9, 0xfd, 0xda, 0xfd, + 0x64, 0xfd, 0x63, 0xfd, 0xf1, 0xfc, 0xf2, 0xfc, 0x82, 0xfc, 0x81, 0xfc, + 0x15, 0xfc, 0x16, 0xfc, 0xaf, 0xfb, 0xad, 0xfb, 0x4b, 0xfb, 0x4c, 0xfb, + 0xef, 0xfa, 0xee, 0xfa, 0x97, 0xfa, 0x98, 0xfa, 0x46, 0xfa, 0x46, 0xfa, + 0xf8, 0xf9, 0xf8, 0xf9, 0xb6, 0xf9, 0xb6, 0xf9, 0x78, 0xf9, 0x78, 0xf9, + 0x43, 0xf9, 0x43, 0xf9, 0x15, 0xf9, 0x15, 0xf9, 0xf1, 0xf8, 0xf2, 0xf8, + 0xd4, 0xf8, 0xd5, 0xf8, 0xc1, 0xf8, 0xbf, 0xf8, 0xb5, 0xf8, 0xb6, 0xf8, + 0xb4, 0xf8, 0xb1, 0xf8, 0xb9, 0xf8, 0xbb, 0xf8, 0xca, 0xf8, 0xc9, 0xf8, + 0xe3, 0xf8, 0xe3, 0xf8, 0x05, 0xf9, 0x05, 0xf9, 0x30, 0xf9, 0x31, 0xf9, + 0x63, 0xf9, 0x61, 0xf9, 0xa0, 0xf9, 0x9f, 0xf9, 0xe1, 0xf9, 0xe1, 0xf9, + 0x2c, 0xfa, 0x2c, 0xfa, 0x7e, 0xfa, 0x7e, 0xfa, 0xd8, 0xfa, 0xd6, 0xfa, + 0x34, 0xfb, 0x37, 0xfb, 0x9b, 0xfb, 0x99, 0xfb, 0x00, 0xfc, 0x02, 0xfc, + 0x70, 0xfc, 0x70, 0xfc, 0xe1, 0xfc, 0xdf, 0xfc, 0x56, 0xfd, 0x57, 0xfd, + 0xcf, 0xfd, 0xcf, 0xfd, 0x4c, 0xfe, 0x4b, 0xfe, 0xc6, 0xfe, 0xca, 0xfe, + 0x48, 0xff, 0x46, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0x46, 0x00, 0x47, 0x00, + 0xc5, 0x00, 0xc5, 0x00, 0x43, 0x01, 0x44, 0x01, 0xc1, 0x01, 0xc1, 0x01, + 0x39, 0x02, 0x39, 0x02, 0xb1, 0x02, 0xb2, 0x02, 0x23, 0x03, 0x23, 0x03, + 0x97, 0x03, 0x95, 0x03, 0x03, 0x04, 0x03, 0x04, 0x69, 0x04, 0x69, 0x04, + 0xcf, 0x04, 0xce, 0x04, 0x2a, 0x05, 0x2a, 0x05, 0x86, 0x05, 0x85, 0x05, + 0xd4, 0x05, 0xd5, 0x05, 0x20, 0x06, 0x1f, 0x06, 0x65, 0x06, 0x66, 0x06, + 0x9e, 0x06, 0x9b, 0x06, 0xd4, 0x06, 0xd5, 0x06, 0xff, 0x06, 0xfe, 0x06, + 0x24, 0x07, 0x23, 0x07, 0x3e, 0x07, 0x3e, 0x07, 0x51, 0x07, 0x4f, 0x07, + 0x5a, 0x07, 0x5b, 0x07, 0x5b, 0x07, 0x59, 0x07, 0x4f, 0x07, 0x51, 0x07, + 0x3d, 0x07, 0x3d, 0x07, 0x24, 0x07, 0x23, 0x07, 0xfe, 0x06, 0xfe, 0x06, + 0xd1, 0x06, 0xd2, 0x06, 0x9b, 0x06, 0x9a, 0x06, 0x5e, 0x06, 0x5f, 0x06, + 0x18, 0x06, 0x17, 0x06, 0xcf, 0x05, 0xce, 0x05, 0x79, 0x05, 0x7b, 0x05, + 0x22, 0x05, 0x21, 0x05, 0xc0, 0x04, 0xc2, 0x04, 0x60, 0x04, 0x5e, 0x04, + 0xf4, 0x03, 0xf6, 0x03, 0x87, 0x03, 0x86, 0x03, 0x14, 0x03, 0x14, 0x03, + 0xa0, 0x02, 0x9f, 0x02, 0x26, 0x02, 0x28, 0x02, 0xab, 0x01, 0xab, 0x01, + 0x2e, 0x01, 0x2f, 0x01, 0xb0, 0x00, 0xb0, 0x00, 0x33, 0x00, 0x32, 0x00, + 0xb1, 0xff, 0xb3, 0xff, 0x35, 0xff, 0x33, 0xff, 0xb6, 0xfe, 0xb7, 0xfe, + 0x39, 0xfe, 0x38, 0xfe, 0xc2, 0xfd, 0xc2, 0xfd, 0x48, 0xfd, 0x47, 0xfd, + 0xd6, 0xfc, 0xd6, 0xfc, 0x65, 0xfc, 0x65, 0xfc, 0xf8, 0xfb, 0xf7, 0xfb, + 0x91, 0xfb, 0x90, 0xfb, 0x2d, 0xfb, 0x2e, 0xfb, 0xd0, 0xfa, 0xce, 0xfa, + 0x78, 0xfa, 0x78, 0xfa, 0x24, 0xfa, 0x23, 0xfa, 0xd8, 0xf9, 0xd9, 0xf9, + 0x96, 0xf9, 0x94, 0xf9, 0x57, 0xf9, 0x58, 0xf9, 0x24, 0xf9, 0x23, 0xf9, + 0xf5, 0xf8, 0xf5, 0xf8, 0xd3, 0xf8, 0xd2, 0xf8, 0xb6, 0xf8, 0xb6, 0xf8, + 0xa3, 0xf8, 0xa3, 0xf8, 0x99, 0xf8, 0x99, 0xf8, 0x98, 0xf8, 0x99, 0xf8, + 0xa2, 0xf8, 0xa2, 0xf8, 0xb1, 0xf8, 0xaf, 0xf8, 0xcc, 0xf8, 0xcd, 0xf8, + 0xef, 0xf8, 0xf0, 0xf8, 0x1d, 0xf9, 0x1c, 0xf9, 0x52, 0xf9, 0x54, 0xf9, + 0x90, 0xf9, 0x8e, 0xf9, 0xd7, 0xf9, 0xd7, 0xf9, 0x22, 0xfa, 0x22, 0xfa, + 0x76, 0xfa, 0x76, 0xfa, 0xd3, 0xfa, 0xd2, 0xfa, 0x33, 0xfb, 0x33, 0xfb, + 0x9a, 0xfb, 0x99, 0xfb, 0x07, 0xfc, 0x07, 0xfc, 0x75, 0xfc, 0x75, 0xfc, + 0xeb, 0xfc, 0xea, 0xfc, 0x61, 0xfd, 0x61, 0xfd, 0xdd, 0xfd, 0xdd, 0xfd, + 0x5d, 0xfe, 0x5b, 0xfe, 0xd7, 0xfe, 0xd6, 0xfe, 0x5b, 0xff, 0x5a, 0xff, + 0xdc, 0xff, 0xdb, 0xff, 0x5b, 0x00, 0x5c, 0x00, 0xdf, 0x00, 0xdd, 0x00, + 0x5b, 0x01, 0x5c, 0x01, 0xdc, 0x01, 0xdd, 0x01, 0x55, 0x02, 0x54, 0x02, + 0xce, 0x02, 0xcf, 0x02, 0x41, 0x03, 0x43, 0x03, 0xb4, 0x03, 0xb3, 0x03, + 0x21, 0x04, 0x22, 0x04, 0x8b, 0x04, 0x89, 0x04, 0xf0, 0x04, 0xee, 0x04, + 0x4a, 0x05, 0x4c, 0x05, 0xa5, 0x05, 0xa4, 0x05, 0xf6, 0x05, 0xf6, 0x05, + 0x40, 0x06, 0x42, 0x06, 0x83, 0x06, 0x81, 0x06, 0xbf, 0x06, 0xc0, 0x06, + 0xf4, 0x06, 0xf3, 0x06, 0x1f, 0x07, 0x1e, 0x07, 0x41, 0x07, 0x42, 0x07, + 0x5c, 0x07, 0x5b, 0x07, 0x6c, 0x07, 0x6d, 0x07, 0x76, 0x07, 0x74, 0x07, + 0x72, 0x07, 0x73, 0x07, 0x69, 0x07, 0x69, 0x07, 0x55, 0x07, 0x55, 0x07, + 0x36, 0x07, 0x37, 0x07, 0x11, 0x07, 0x11, 0x07, 0xe1, 0x06, 0xe2, 0x06, + 0xad, 0x06, 0xac, 0x06, 0x6a, 0x06, 0x69, 0x06, 0x26, 0x06, 0x25, 0x06, + 0xd5, 0x05, 0xd6, 0x05, 0x81, 0x05, 0x80, 0x05, 0x26, 0x05, 0x27, 0x05, + 0xc3, 0x04, 0xc3, 0x04, 0x5e, 0x04, 0x5d, 0x04, 0xf1, 0x03, 0xf1, 0x03, + 0x81, 0x03, 0x82, 0x03, 0x0d, 0x03, 0x0d, 0x03, 0x94, 0x02, 0x95, 0x02, + 0x1a, 0x02, 0x1a, 0x02, 0x9e, 0x01, 0x9e, 0x01, 0x1e, 0x01, 0x1d, 0x01, + 0x9d, 0x00, 0x9f, 0x00, 0x1e, 0x00, 0x1b, 0x00, 0x9a, 0xff, 0x9c, 0xff, + 0x1d, 0xff, 0x1c, 0xff, 0x99, 0xfe, 0x9a, 0xfe, 0x1e, 0xfe, 0x1f, 0xfe, + 0xa2, 0xfd, 0xa2, 0xfd, 0x2c, 0xfd, 0x2c, 0xfd, 0xb6, 0xfc, 0xb6, 0xfc, + 0x41, 0xfc, 0x41, 0xfc, 0xd7, 0xfb, 0xd8, 0xfb, 0x6c, 0xfb, 0x6b, 0xfb, + 0x0a, 0xfb, 0x0b, 0xfb, 0xab, 0xfa, 0xac, 0xfa, 0x50, 0xfa, 0x50, 0xfa, + 0x01, 0xfa, 0x02, 0xfa, 0xb2, 0xf9, 0xb3, 0xf9, 0x70, 0xf9, 0x6f, 0xf9, + 0x32, 0xf9, 0x32, 0xf9, 0xfc, 0xf8, 0xfe, 0xf8, 0xd3, 0xf8, 0xd0, 0xf8, + 0xac, 0xf8, 0xae, 0xf8, 0x94, 0xf8, 0x94, 0xf8, 0x81, 0xf8, 0x82, 0xf8, + 0x7a, 0xf8, 0x7a, 0xf8, 0x79, 0xf8, 0x7a, 0xf8, 0x86, 0xf8, 0x86, 0xf8, + 0x98, 0xf8, 0x9a, 0xf8, 0xb5, 0xf8, 0xb6, 0xf8, 0xdc, 0xf8, 0xdd, 0xf8, + 0x0a, 0xf9, 0x0b, 0xf9, 0x45, 0xf9, 0x44, 0xf9, 0x83, 0xf9, 0x85, 0xf9, + 0xcc, 0xf9, 0xcd, 0xf9, 0x1c, 0xfa, 0x1c, 0xfa, 0x72, 0xfa, 0x74, 0xfa, + 0xd2, 0xfa, 0xd1, 0xfa, 0x35, 0xfb, 0x33, 0xfb, 0x9b, 0xfb, 0x9e, 0xfb, + 0x0c, 0xfc, 0x0b, 0xfc, 0x7c, 0xfc, 0x7d, 0xfc, 0xf4, 0xfc, 0xf5, 0xfc, + 0x6d, 0xfd, 0x6d, 0xfd, 0xea, 0xfd, 0xed, 0xfd, 0x6b, 0xfe, 0x6a, 0xfe, + 0xea, 0xfe, 0xeb, 0xfe, 0x6e, 0xff, 0x6f, 0xff, 0xef, 0xff, 0xf0, 0xff, + 0x73, 0x00, 0x72, 0x00, 0xf6, 0x00, 0xf8, 0x00, 0x76, 0x01, 0x78, 0x01, + 0xf7, 0x01, 0xf8, 0x01, 0x70, 0x02, 0x71, 0x02, 0xeb, 0x02, 0xec, 0x02, + 0x5f, 0x03, 0x60, 0x03, 0xd3, 0x03, 0xd3, 0x03, 0x41, 0x04, 0x42, 0x04, + 0xaa, 0x04, 0xaa, 0x04, 0x0f, 0x05, 0x11, 0x05, 0x6e, 0x05, 0x6e, 0x05, + 0xc5, 0x05, 0xc5, 0x05, 0x19, 0x06, 0x19, 0x06, 0x61, 0x06, 0x62, 0x06, + 0xa5, 0x06, 0xa6, 0x06, 0xdf, 0x06, 0xe2, 0x06, 0x14, 0x07, 0x14, 0x07, + 0x40, 0x07, 0x40, 0x07, 0x60, 0x07, 0x61, 0x07, 0x7b, 0x07, 0x7c, 0x07, + 0x89, 0x07, 0x89, 0x07, 0x91, 0x07, 0x92, 0x07, 0x8f, 0x07, 0x8e, 0x07, + 0x82, 0x07, 0x83, 0x07, 0x70, 0x07, 0x70, 0x07, 0x4f, 0x07, 0x4f, 0x07, + 0x29, 0x07, 0x2a, 0x07, 0xf7, 0x06, 0xf9, 0x06, 0xbe, 0x06, 0xbc, 0x06, + 0x7f, 0x06, 0x81, 0x06, 0x32, 0x06, 0x31, 0x06, 0xe5, 0x05, 0xe7, 0x05, + 0x89, 0x05, 0x89, 0x05, 0x2b, 0x05, 0x2c, 0x05, 0xc9, 0x04, 0xc8, 0x04, + 0x5f, 0x04, 0x5f, 0x04, 0xf0, 0x03, 0xf0, 0x03, 0x7d, 0x03, 0x7d, 0x03, + 0x06, 0x03, 0x06, 0x03, 0x8b, 0x02, 0x8c, 0x02, 0x0e, 0x02, 0x0e, 0x02, + 0x8e, 0x01, 0x8f, 0x01, 0x0e, 0x01, 0x0e, 0x01, 0x8a, 0x00, 0x8b, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x84, 0xff, 0x85, 0xff, 0x03, 0xff, 0x03, 0xff, + 0x7f, 0xfe, 0x80, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x85, 0xfd, 0x85, 0xfd, + 0x0d, 0xfd, 0x0d, 0xfd, 0x95, 0xfc, 0x96, 0xfc, 0x22, 0xfc, 0x21, 0xfc, + 0xb3, 0xfb, 0xb4, 0xfb, 0x4b, 0xfb, 0x4a, 0xfb, 0xe3, 0xfa, 0xe4, 0xfa, + 0x86, 0xfa, 0x87, 0xfa, 0x2c, 0xfa, 0x2b, 0xfa, 0xda, 0xf9, 0xdc, 0xf9, + 0x8d, 0xf9, 0x8d, 0xf9, 0x4a, 0xf9, 0x4b, 0xf9, 0x0e, 0xf9, 0x0d, 0xf9, + 0xd9, 0xf8, 0xda, 0xf8, 0xad, 0xf8, 0xad, 0xf8, 0x8b, 0xf8, 0x8c, 0xf8, + 0x70, 0xf8, 0x6f, 0xf8, 0x61, 0xf8, 0x62, 0xf8, 0x58, 0xf8, 0x59, 0xf8, + 0x5c, 0xf8, 0x5c, 0xf8, 0x66, 0xf8, 0x68, 0xf8, 0x7f, 0xf8, 0x7c, 0xf8, + 0x9b, 0xf8, 0x9c, 0xf8, 0xc6, 0xf8, 0xc4, 0xf8, 0xf6, 0xf8, 0xf7, 0xf8, + 0x30, 0xf9, 0x31, 0xf9, 0x73, 0xf9, 0x71, 0xf9, 0xbe, 0xf9, 0xbf, 0xf9, + 0x10, 0xfa, 0x0f, 0xfa, 0x6a, 0xfa, 0x6a, 0xfa, 0xc8, 0xfa, 0xc8, 0xfa, + 0x2e, 0xfb, 0x2f, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x0b, 0xfc, 0x0a, 0xfc, + 0x7f, 0xfc, 0x7f, 0xfc, 0xf8, 0xfc, 0xf7, 0xfc, 0x74, 0xfd, 0x75, 0xfd, + 0xf4, 0xfd, 0xf4, 0xfd, 0x75, 0xfe, 0x75, 0xfe, 0xf9, 0xfe, 0xf8, 0xfe, + 0x7e, 0xff, 0x7e, 0xff, 0x01, 0x00, 0x02, 0x00, 0x89, 0x00, 0x88, 0x00, + 0x0c, 0x01, 0x0b, 0x01, 0x91, 0x01, 0x90, 0x01, 0x10, 0x02, 0x10, 0x02, + 0x8e, 0x02, 0x8e, 0x02, 0x08, 0x03, 0x08, 0x03, 0x7f, 0x03, 0x7f, 0x03, + 0xf2, 0x03, 0xf3, 0x03, 0x64, 0x04, 0x63, 0x04, 0xcc, 0x04, 0xcf, 0x04, + 0x33, 0x05, 0x32, 0x05, 0x92, 0x05, 0x93, 0x05, 0xe9, 0x05, 0xea, 0x05, + 0x40, 0x06, 0x40, 0x06, 0x87, 0x06, 0x89, 0x06, 0xce, 0x06, 0xcd, 0x06, + 0x08, 0x07, 0x09, 0x07, 0x3c, 0x07, 0x3c, 0x07, 0x67, 0x07, 0x67, 0x07, + 0x88, 0x07, 0x8a, 0x07, 0xa0, 0x07, 0xa1, 0x07, 0xb0, 0x07, 0xb1, 0x07, + 0xb5, 0x07, 0xb6, 0x07, 0xb1, 0x07, 0xb4, 0x07, 0xa5, 0x07, 0xa5, 0x07, + 0x8e, 0x07, 0x8f, 0x07, 0x6e, 0x07, 0x6d, 0x07, 0x43, 0x07, 0x46, 0x07, + 0x11, 0x07, 0x10, 0x07, 0xd2, 0x06, 0xd6, 0x06, 0x91, 0x06, 0x91, 0x06, + 0x44, 0x06, 0x45, 0x06, 0xf1, 0x05, 0xf2, 0x05, 0x95, 0x05, 0x96, 0x05, + 0x32, 0x05, 0x35, 0x05, 0xcf, 0x04, 0xcf, 0x04, 0x62, 0x04, 0x63, 0x04, + 0xf1, 0x03, 0xf1, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x01, 0x03, 0x02, 0x03, + 0x85, 0x02, 0x88, 0x02, 0x07, 0x02, 0x04, 0x02, 0x82, 0x01, 0x86, 0x01, + 0x01, 0x01, 0x00, 0x01, 0x7b, 0x00, 0x7d, 0x00, 0xf8, 0xff, 0xf9, 0xff, + 0x72, 0xff, 0x71, 0xff, 0xee, 0xfe, 0xf0, 0xfe, 0x6a, 0xfe, 0x69, 0xfe, + 0xe9, 0xfd, 0xec, 0xfd, 0x6d, 0xfd, 0x6d, 0xfd, 0xf2, 0xfc, 0xf3, 0xfc, + 0x78, 0xfc, 0x7b, 0xfc, 0x06, 0xfc, 0x06, 0xfc, 0x95, 0xfb, 0x95, 0xfb, + 0x2b, 0xfb, 0x2b, 0xfb, 0xc4, 0xfa, 0xc5, 0xfa, 0x63, 0xfa, 0x65, 0xfa, + 0x0c, 0xfa, 0x0c, 0xfa, 0xb6, 0xf9, 0xb8, 0xf9, 0x6c, 0xf9, 0x6b, 0xf9, + 0x25, 0xf9, 0x26, 0xf9, 0xe8, 0xf8, 0xe9, 0xf8, 0xb5, 0xf8, 0xb6, 0xf8, + 0x88, 0xf8, 0x89, 0xf8, 0x67, 0xf8, 0x68, 0xf8, 0x4c, 0xf8, 0x4c, 0xf8, + 0x3c, 0xf8, 0x3c, 0xf8, 0x35, 0xf8, 0x37, 0xf8, 0x38, 0xf8, 0x39, 0xf8, + 0x46, 0xf8, 0x46, 0xf8, 0x5b, 0xf8, 0x5b, 0xf8, 0x7a, 0xf8, 0x7b, 0xf8, + 0xa5, 0xf8, 0xa4, 0xf8, 0xd8, 0xf8, 0xda, 0xf8, 0x14, 0xf9, 0x13, 0xf9, + 0x57, 0xf9, 0x5a, 0xf9, 0xa4, 0xf9, 0xa4, 0xf9, 0xf7, 0xf9, 0xfa, 0xf9, + 0x54, 0xfa, 0x54, 0xfa, 0xb9, 0xfa, 0xb9, 0xfa, 0x1e, 0xfb, 0x1f, 0xfb, + 0x90, 0xfb, 0x91, 0xfb, 0xff, 0xfb, 0x01, 0xfc, 0x79, 0xfc, 0x79, 0xfc, + 0xf4, 0xfc, 0xf5, 0xfc, 0x72, 0xfd, 0x73, 0xfd, 0xf6, 0xfd, 0xf6, 0xfd, + 0x7a, 0xfe, 0x7b, 0xfe, 0xfe, 0xfe, 0xff, 0xfe, 0x89, 0xff, 0x8a, 0xff, + 0x0e, 0x00, 0x10, 0x00, 0x97, 0x00, 0x97, 0x00, 0x1d, 0x01, 0x20, 0x01, + 0xa3, 0x01, 0xa3, 0x01, 0x27, 0x02, 0x29, 0x02, 0xa3, 0x02, 0xa6, 0x02, + 0x22, 0x03, 0x23, 0x03, 0x9c, 0x03, 0x9e, 0x03, 0x10, 0x04, 0x12, 0x04, + 0x86, 0x04, 0x85, 0x04, 0xee, 0x04, 0xf2, 0x04, 0x58, 0x05, 0x57, 0x05, + 0xb7, 0x05, 0xb9, 0x05, 0x13, 0x06, 0x13, 0x06, 0x67, 0x06, 0x67, 0x06, + 0xb0, 0x06, 0xb4, 0x06, 0xf7, 0x06, 0xf7, 0x06, 0x2f, 0x07, 0x30, 0x07, + 0x65, 0x07, 0x67, 0x07, 0x8f, 0x07, 0x90, 0x07, 0xb0, 0x07, 0xb1, 0x07, + 0xc9, 0x07, 0xca, 0x07, 0xd8, 0x07, 0xd8, 0x07, 0xdc, 0x07, 0xdc, 0x07, + 0xd7, 0x07, 0xd9, 0x07, 0xc7, 0x07, 0xc8, 0x07, 0xb0, 0x07, 0xb2, 0x07, + 0x8c, 0x07, 0x8c, 0x07, 0x61, 0x07, 0x62, 0x07, 0x2b, 0x07, 0x2b, 0x07, + 0xed, 0x06, 0xef, 0x06, 0xa7, 0x06, 0xa7, 0x06, 0x58, 0x06, 0x5b, 0x06, + 0x07, 0x06, 0x05, 0x06, 0xa5, 0x05, 0xa8, 0x05, 0x45, 0x05, 0x45, 0x05, + 0xd9, 0x04, 0xdb, 0x04, 0x6e, 0x04, 0x6e, 0x04, 0xfb, 0x03, 0xfb, 0x03, + 0x82, 0x03, 0x84, 0x03, 0x08, 0x03, 0x07, 0x03, 0x86, 0x02, 0x88, 0x02, + 0x06, 0x02, 0x07, 0x02, 0x82, 0x01, 0x82, 0x01, 0xfc, 0x00, 0xfd, 0x00, + 0x74, 0x00, 0x75, 0x00, 0xf0, 0xff, 0xf0, 0xff, 0x65, 0xff, 0x67, 0xff, + 0xe2, 0xfe, 0xe1, 0xfe, 0x59, 0xfe, 0x5b, 0xfe, 0xda, 0xfd, 0xd9, 0xfd, + 0x5a, 0xfd, 0x5b, 0xfd, 0xdd, 0xfc, 0xdd, 0xfc, 0x64, 0xfc, 0x64, 0xfc, + 0xec, 0xfb, 0xec, 0xfb, 0x7c, 0xfb, 0x7e, 0xfb, 0x0f, 0xfb, 0x0f, 0xfb, + 0xa7, 0xfa, 0xa8, 0xfa, 0x44, 0xfa, 0x46, 0xfa, 0xe8, 0xf9, 0xe9, 0xf9, + 0x93, 0xf9, 0x95, 0xf9, 0x47, 0xf9, 0x47, 0xf9, 0x01, 0xf9, 0x01, 0xf9, + 0xc3, 0xf8, 0xc5, 0xf8, 0x8d, 0xf8, 0x8e, 0xf8, 0x61, 0xf8, 0x62, 0xf8, + 0x3f, 0xf8, 0x40, 0xf8, 0x25, 0xf8, 0x24, 0xf8, 0x14, 0xf8, 0x16, 0xf8, + 0x0e, 0xf8, 0x0d, 0xf8, 0x11, 0xf8, 0x13, 0xf8, 0x1e, 0xf8, 0x1f, 0xf8, + 0x36, 0xf8, 0x36, 0xf8, 0x56, 0xf8, 0x58, 0xf8, 0x81, 0xf8, 0x81, 0xf8, + 0xb6, 0xf8, 0xb7, 0xf8, 0xf5, 0xf8, 0xf4, 0xf8, 0x3c, 0xf9, 0x3d, 0xf9, + 0x8a, 0xf9, 0x8b, 0xf9, 0xe1, 0xf9, 0xe2, 0xf9, 0x41, 0xfa, 0x40, 0xfa, + 0xa4, 0xfa, 0xa6, 0xfa, 0x10, 0xfb, 0x11, 0xfb, 0x81, 0xfb, 0x81, 0xfb, + 0xf5, 0xfb, 0xf7, 0xfb, 0x74, 0xfc, 0x73, 0xfc, 0xf0, 0xfc, 0xf2, 0xfc, + 0x72, 0xfd, 0x72, 0xfd, 0xf6, 0xfd, 0xf8, 0xfd, 0x7e, 0xfe, 0x7e, 0xfe, + 0x07, 0xff, 0x09, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x1c, 0x00, 0x1d, 0x00, + 0xa2, 0x00, 0xa5, 0x00, 0x2f, 0x01, 0x2f, 0x01, 0xb4, 0x01, 0xb6, 0x01, + 0x3b, 0x02, 0x3c, 0x02, 0xbb, 0x02, 0xbc, 0x02, 0x38, 0x03, 0x3b, 0x03, + 0xb4, 0x03, 0xb6, 0x03, 0x2e, 0x04, 0x2e, 0x04, 0xa0, 0x04, 0xa2, 0x04, + 0x0c, 0x05, 0x0e, 0x05, 0x75, 0x05, 0x77, 0x05, 0xd8, 0x05, 0xd8, 0x05, + 0x33, 0x06, 0x35, 0x06, 0x89, 0x06, 0x8a, 0x06, 0xd4, 0x06, 0xd6, 0x06, + 0x19, 0x07, 0x1a, 0x07, 0x58, 0x07, 0x58, 0x07, 0x89, 0x07, 0x8b, 0x07, + 0xb5, 0x07, 0xb6, 0x07, 0xd7, 0x07, 0xd7, 0x07, 0xef, 0x07, 0xf0, 0x07, + 0xfc, 0x07, 0xfd, 0x07, 0x00, 0x08, 0x02, 0x08, 0xfc, 0x07, 0xfd, 0x07, + 0xeb, 0x07, 0xee, 0x07, 0xd5, 0x07, 0xd5, 0x07, 0xaf, 0x07, 0xb0, 0x07, + 0x83, 0x07, 0x83, 0x07, 0x4b, 0x07, 0x4b, 0x07, 0x0b, 0x07, 0x0c, 0x07, + 0xc5, 0x06, 0xc5, 0x06, 0x72, 0x06, 0x75, 0x06, 0x1c, 0x06, 0x1d, 0x06, + 0xbc, 0x05, 0xbe, 0x05, 0x56, 0x05, 0x57, 0x05, 0xed, 0x04, 0xee, 0x04, + 0x7a, 0x04, 0x7a, 0x04, 0x04, 0x04, 0x06, 0x04, 0x8a, 0x03, 0x8d, 0x03, + 0x0b, 0x03, 0x0c, 0x03, 0x8b, 0x02, 0x8c, 0x02, 0x06, 0x02, 0x08, 0x02, + 0x80, 0x01, 0x81, 0x01, 0xf7, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x6f, 0x00, + 0xe6, 0xff, 0xe6, 0xff, 0x59, 0xff, 0x5c, 0xff, 0xd3, 0xfe, 0xd1, 0xfe, + 0x48, 0xfe, 0x4a, 0xfe, 0xc4, 0xfd, 0xc5, 0xfd, 0x43, 0xfd, 0x43, 0xfd, + 0xc3, 0xfc, 0xc4, 0xfc, 0x48, 0xfc, 0x49, 0xfc, 0xcf, 0xfb, 0xcf, 0xfb, + 0x5e, 0xfb, 0x5f, 0xfb, 0xef, 0xfa, 0xef, 0xfa, 0x85, 0xfa, 0x87, 0xfa, + 0x22, 0xfa, 0x23, 0xfa, 0xc5, 0xf9, 0xc6, 0xf9, 0x6e, 0xf9, 0x70, 0xf9, + 0x1f, 0xf9, 0x21, 0xf9, 0xd8, 0xf8, 0xda, 0xf8, 0x9b, 0xf8, 0x9c, 0xf8, + 0x66, 0xf8, 0x66, 0xf8, 0x38, 0xf8, 0x39, 0xf8, 0x17, 0xf8, 0x17, 0xf8, + 0xfd, 0xf7, 0xff, 0xf7, 0xee, 0xf7, 0xee, 0xf7, 0xe9, 0xf7, 0xea, 0xf7, + 0xec, 0xf7, 0xed, 0xf7, 0x00, 0xf8, 0xff, 0xf7, 0x14, 0xf8, 0x15, 0xf8, + 0x3b, 0xf8, 0x3c, 0xf8, 0x66, 0xf8, 0x67, 0xf8, 0x9f, 0xf8, 0x9e, 0xf8, + 0xe0, 0xf8, 0xe1, 0xf8, 0x28, 0xf9, 0x26, 0xf9, 0x7a, 0xf9, 0x7c, 0xf9, + 0xd2, 0xf9, 0xd2, 0xf9, 0x34, 0xfa, 0x35, 0xfa, 0x9a, 0xfa, 0x9b, 0xfa, + 0x07, 0xfb, 0x08, 0xfb, 0x7c, 0xfb, 0x7b, 0xfb, 0xf3, 0xfb, 0xf4, 0xfb, + 0x6f, 0xfc, 0x6f, 0xfc, 0xf1, 0xfc, 0xf2, 0xfc, 0x73, 0xfd, 0x73, 0xfd, + 0xfb, 0xfd, 0xfd, 0xfd, 0x84, 0xfe, 0x84, 0xfe, 0x0e, 0xff, 0x0f, 0xff, + 0x9c, 0xff, 0x9d, 0xff, 0x25, 0x00, 0x25, 0x00, 0xb3, 0x00, 0xb4, 0x00, + 0x3d, 0x01, 0x3d, 0x01, 0xc8, 0x01, 0xc8, 0x01, 0x4d, 0x02, 0x4f, 0x02, + 0xcf, 0x02, 0xcf, 0x02, 0x50, 0x03, 0x52, 0x03, 0xcd, 0x03, 0xcc, 0x03, + 0x46, 0x04, 0x48, 0x04, 0xba, 0x04, 0xbc, 0x04, 0x28, 0x05, 0x2a, 0x05, + 0x94, 0x05, 0x95, 0x05, 0xf4, 0x05, 0xf6, 0x05, 0x53, 0x06, 0x54, 0x06, + 0xa6, 0x06, 0xa8, 0x06, 0xf5, 0x06, 0xf6, 0x06, 0x3a, 0x07, 0x3b, 0x07, + 0x76, 0x07, 0x77, 0x07, 0xac, 0x07, 0xac, 0x07, 0xd5, 0x07, 0xd7, 0x07, + 0xf7, 0x07, 0xf9, 0x07, 0x0d, 0x08, 0x0f, 0x08, 0x1b, 0x08, 0x1b, 0x08, + 0x20, 0x08, 0x21, 0x08, 0x17, 0x08, 0x1a, 0x08, 0x07, 0x08, 0x09, 0x08, + 0xed, 0x07, 0xee, 0x07, 0xc8, 0x07, 0xc9, 0x07, 0x9b, 0x07, 0x9c, 0x07, + 0x62, 0x07, 0x63, 0x07, 0x1e, 0x07, 0x21, 0x07, 0xd6, 0x06, 0xd7, 0x06, + 0x83, 0x06, 0x84, 0x06, 0x27, 0x06, 0x28, 0x06, 0xc7, 0x05, 0xc8, 0x05, + 0x5d, 0x05, 0x5f, 0x05, 0xf0, 0x04, 0xf1, 0x04, 0x7e, 0x04, 0x7f, 0x04, + 0x05, 0x04, 0x05, 0x04, 0x89, 0x03, 0x8c, 0x03, 0x07, 0x03, 0x07, 0x03, + 0x86, 0x02, 0x86, 0x02, 0xfe, 0x01, 0x00, 0x02, 0x75, 0x01, 0x75, 0x01, + 0xec, 0x00, 0xf0, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0xd6, 0xff, 0xd7, 0xff, + 0x49, 0xff, 0x49, 0xff, 0xc0, 0xfe, 0xc1, 0xfe, 0x34, 0xfe, 0x36, 0xfe, + 0xb0, 0xfd, 0xb0, 0xfd, 0x2a, 0xfd, 0x2d, 0xfd, 0xad, 0xfc, 0xab, 0xfc, + 0x2f, 0xfc, 0x31, 0xfc, 0xb6, 0xfb, 0xb4, 0xfb, 0x42, 0xfb, 0x46, 0xfb, + 0xd5, 0xfa, 0xd3, 0xfa, 0x6b, 0xfa, 0x6c, 0xfa, 0x05, 0xfa, 0x06, 0xfa, + 0xa9, 0xf9, 0xaa, 0xf9, 0x54, 0xf9, 0x53, 0xf9, 0x04, 0xf9, 0x05, 0xf9, + 0xc0, 0xf8, 0xc0, 0xf8, 0x7e, 0xf8, 0x7f, 0xf8, 0x4d, 0xf8, 0x4e, 0xf8, + 0x1e, 0xf8, 0x1e, 0xf8, 0xfd, 0xf7, 0xfe, 0xf7, 0xe3, 0xf7, 0xe6, 0xf7, + 0xd5, 0xf7, 0xd6, 0xf7, 0xd3, 0xf7, 0xd2, 0xf7, 0xd4, 0xf7, 0xd7, 0xf7, + 0xea, 0xf7, 0xe9, 0xf7, 0x01, 0xf8, 0x04, 0xf8, 0x28, 0xf8, 0x28, 0xf8, + 0x58, 0xf8, 0x58, 0xf8, 0x90, 0xf8, 0x91, 0xf8, 0xd3, 0xf8, 0xd5, 0xf8, + 0x1f, 0xf9, 0x1c, 0xf9, 0x6e, 0xf9, 0x73, 0xf9, 0xcd, 0xf9, 0xcc, 0xf9, + 0x2d, 0xfa, 0x2f, 0xfa, 0x97, 0xfa, 0x99, 0xfa, 0x06, 0xfb, 0x06, 0xfb, + 0x79, 0xfb, 0x7c, 0xfb, 0xf5, 0xfb, 0xf5, 0xfb, 0x70, 0xfc, 0x75, 0xfc, + 0xf5, 0xfc, 0xf5, 0xfc, 0x7a, 0xfd, 0x7c, 0xfd, 0x02, 0xfe, 0x04, 0xfe, + 0x8e, 0xfe, 0x8e, 0xfe, 0x1a, 0xff, 0x1c, 0xff, 0xa8, 0xff, 0xa8, 0xff, + 0x34, 0x00, 0x37, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0x4f, 0x01, 0x50, 0x01, + 0xd9, 0x01, 0xda, 0x01, 0x60, 0x02, 0x62, 0x02, 0xe5, 0x02, 0xe8, 0x02, + 0x68, 0x03, 0x68, 0x03, 0xe6, 0x03, 0xe8, 0x03, 0x5f, 0x04, 0x5e, 0x04, + 0xd4, 0x04, 0xd7, 0x04, 0x44, 0x05, 0x44, 0x05, 0xad, 0x05, 0xae, 0x05, + 0x12, 0x06, 0x13, 0x06, 0x6c, 0x06, 0x6d, 0x06, 0xc4, 0x06, 0xc5, 0x06, + 0x0f, 0x07, 0x10, 0x07, 0x55, 0x07, 0x57, 0x07, 0x92, 0x07, 0x93, 0x07, + 0xc5, 0x07, 0xc7, 0x07, 0xef, 0x07, 0xf2, 0x07, 0x12, 0x08, 0x10, 0x08, + 0x25, 0x08, 0x29, 0x08, 0x34, 0x08, 0x32, 0x08, 0x32, 0x08, 0x36, 0x08, + 0x2d, 0x08, 0x2e, 0x08, 0x1a, 0x08, 0x1a, 0x08, 0xfd, 0x07, 0x01, 0x08, + 0xd8, 0x07, 0xd8, 0x07, 0xa5, 0x07, 0xa7, 0x07, 0x6c, 0x07, 0x6d, 0x07, + 0x29, 0x07, 0x2a, 0x07, 0xdb, 0x06, 0xdc, 0x06, 0x87, 0x06, 0x88, 0x06, + 0x29, 0x06, 0x29, 0x06, 0xc7, 0x05, 0xc9, 0x05, 0x5e, 0x05, 0x5e, 0x05, + 0xee, 0x04, 0xef, 0x04, 0x7a, 0x04, 0x7c, 0x04, 0xff, 0x03, 0xfe, 0x03, + 0x80, 0x03, 0x84, 0x03, 0xfe, 0x02, 0xff, 0x02, 0x7b, 0x02, 0x7c, 0x02, + 0xf2, 0x01, 0xf2, 0x01, 0x67, 0x01, 0x69, 0x01, 0xde, 0x00, 0xe0, 0x00, + 0x50, 0x00, 0x52, 0x00, 0xc6, 0xff, 0xc6, 0xff, 0x37, 0xff, 0x3a, 0xff, + 0xad, 0xfe, 0xad, 0xfe, 0x23, 0xfe, 0x26, 0xfe, 0x9a, 0xfd, 0x9c, 0xfd, + 0x19, 0xfd, 0x19, 0xfd, 0x96, 0xfc, 0x99, 0xfc, 0x19, 0xfc, 0x19, 0xfc, + 0xa0, 0xfb, 0xa1, 0xfb, 0x2c, 0xfb, 0x2d, 0xfb, 0xbc, 0xfa, 0xbd, 0xfa, + 0x53, 0xfa, 0x55, 0xfa, 0xee, 0xf9, 0xef, 0xf9, 0x91, 0xf9, 0x92, 0xf9, + 0x3c, 0xf9, 0x3d, 0xf9, 0xed, 0xf8, 0xee, 0xf8, 0xa7, 0xf8, 0xaa, 0xf8, + 0x6a, 0xf8, 0x6b, 0xf8, 0x35, 0xf8, 0x36, 0xf8, 0x0b, 0xf8, 0x0d, 0xf8, + 0xe8, 0xf7, 0xe9, 0xf7, 0xd3, 0xf7, 0xd3, 0xf7, 0xc5, 0xf7, 0xc5, 0xf7, + 0xc1, 0xf7, 0xc3, 0xf7, 0xc8, 0xf7, 0xc9, 0xf7, 0xd9, 0xf7, 0xda, 0xf7, + 0xf6, 0xf7, 0xf8, 0xf7, 0x1a, 0xf8, 0x1a, 0xf8, 0x4c, 0xf8, 0x4e, 0xf8, + 0x86, 0xf8, 0x87, 0xf8, 0xcb, 0xf8, 0xca, 0xf8, 0x16, 0xf9, 0x19, 0xf9, + 0x6d, 0xf9, 0x6b, 0xf9, 0xc7, 0xf9, 0xcb, 0xf9, 0x2f, 0xfa, 0x2f, 0xfa, + 0x99, 0xfa, 0x98, 0xfa, 0x0a, 0xfb, 0x0e, 0xfb, 0x7f, 0xfb, 0x80, 0xfb, + 0xfd, 0xfb, 0xfd, 0xfb, 0x7c, 0xfc, 0x7e, 0xfc, 0x02, 0xfd, 0x02, 0xfd, + 0x89, 0xfd, 0x8a, 0xfd, 0x11, 0xfe, 0x11, 0xfe, 0xa1, 0xfe, 0xa3, 0xfe, + 0x2b, 0xff, 0x2d, 0xff, 0xbb, 0xff, 0xbd, 0xff, 0x4b, 0x00, 0x4a, 0x00, + 0xd7, 0x00, 0xdc, 0x00, 0x67, 0x01, 0x67, 0x01, 0xef, 0x01, 0xf2, 0x01, + 0x7c, 0x02, 0x7d, 0x02, 0xff, 0x02, 0x00, 0x03, 0x82, 0x03, 0x85, 0x03, + 0x02, 0x04, 0x01, 0x04, 0x7a, 0x04, 0x7c, 0x04, 0xf2, 0x04, 0xf2, 0x04, + 0x60, 0x05, 0x61, 0x05, 0xc9, 0x05, 0xcd, 0x05, 0x2f, 0x06, 0x2f, 0x06, + 0x89, 0x06, 0x89, 0x06, 0xe0, 0x06, 0xe2, 0x06, 0x2d, 0x07, 0x2c, 0x07, + 0x70, 0x07, 0x73, 0x07, 0xae, 0x07, 0xae, 0x07, 0xde, 0x07, 0xde, 0x07, + 0x07, 0x08, 0x09, 0x08, 0x26, 0x08, 0x25, 0x08, 0x3b, 0x08, 0x3e, 0x08, + 0x45, 0x08, 0x45, 0x08, 0x45, 0x08, 0x46, 0x08, 0x39, 0x08, 0x3c, 0x08, + 0x26, 0x08, 0x26, 0x08, 0x05, 0x08, 0x07, 0x08, 0xdc, 0x07, 0xdd, 0x07, + 0xa8, 0x07, 0xa9, 0x07, 0x6b, 0x07, 0x6d, 0x07, 0x26, 0x07, 0x25, 0x07, + 0xd8, 0x06, 0xd9, 0x06, 0x80, 0x06, 0x80, 0x06, 0x22, 0x06, 0x23, 0x06, + 0xbe, 0x05, 0xc0, 0x05, 0x52, 0x05, 0x53, 0x05, 0xe3, 0x04, 0xe2, 0x04, + 0x69, 0x04, 0x6b, 0x04, 0xf0, 0x03, 0xef, 0x03, 0x70, 0x03, 0x70, 0x03, + 0xe9, 0x02, 0xeb, 0x02, 0x67, 0x02, 0x66, 0x02, 0xda, 0x01, 0xdc, 0x01, + 0x51, 0x01, 0x50, 0x01, 0xc4, 0x00, 0xc5, 0x00, 0x37, 0x00, 0x38, 0x00, + 0xac, 0xff, 0xaa, 0xff, 0x1c, 0xff, 0x1e, 0xff, 0x91, 0xfe, 0x91, 0xfe, + 0x05, 0xfe, 0x06, 0xfe, 0x7e, 0xfd, 0x7f, 0xfd, 0xfa, 0xfc, 0xfa, 0xfc, + 0x78, 0xfc, 0x79, 0xfc, 0xfc, 0xfb, 0xfa, 0xfb, 0x82, 0xfb, 0x84, 0xfb, + 0x0e, 0xfb, 0x0d, 0xfb, 0x9d, 0xfa, 0x9f, 0xfa, 0x35, 0xfa, 0x35, 0xfa, + 0xd2, 0xf9, 0xd2, 0xf9, 0x74, 0xf9, 0x75, 0xf9, 0x1f, 0xf9, 0x21, 0xf9, + 0xd0, 0xf8, 0xcf, 0xf8, 0x8d, 0xf8, 0x8f, 0xf8, 0x50, 0xf8, 0x50, 0xf8, + 0x1f, 0xf8, 0x1f, 0xf8, 0xf3, 0xf7, 0xf4, 0xf7, 0xd6, 0xf7, 0xd6, 0xf7, + 0xc0, 0xf7, 0xc0, 0xf7, 0xb3, 0xf7, 0xb4, 0xf7, 0xb4, 0xf7, 0xb4, 0xf7, + 0xbd, 0xf7, 0xbd, 0xf7, 0xcf, 0xf7, 0xd1, 0xf7, 0xee, 0xf7, 0xee, 0xf7, + 0x19, 0xf8, 0x1a, 0xf8, 0x4a, 0xf8, 0x4a, 0xf8, 0x89, 0xf8, 0x8a, 0xf8, + 0xd0, 0xf8, 0xce, 0xf8, 0x1d, 0xf9, 0x1e, 0xf9, 0x78, 0xf9, 0x79, 0xf9, + 0xd4, 0xf9, 0xd4, 0xf9, 0x40, 0xfa, 0x3f, 0xfa, 0xaa, 0xfa, 0xab, 0xfa, + 0x20, 0xfb, 0x1f, 0xfb, 0x98, 0xfb, 0x9c, 0xfb, 0x16, 0xfc, 0x13, 0xfc, + 0x99, 0xfc, 0x9c, 0xfc, 0x1f, 0xfd, 0x1f, 0xfd, 0xa8, 0xfd, 0xa9, 0xfd, + 0x35, 0xfe, 0x37, 0xfe, 0xc1, 0xfe, 0xc2, 0xfe, 0x53, 0xff, 0x53, 0xff, + 0xe0, 0xff, 0xe1, 0xff, 0x73, 0x00, 0x72, 0x00, 0xfe, 0x00, 0x00, 0x01, + 0x8e, 0x01, 0x8d, 0x01, 0x19, 0x02, 0x1b, 0x02, 0xa2, 0x02, 0xa2, 0x02, + 0x2a, 0x03, 0x2b, 0x03, 0xaa, 0x03, 0xaa, 0x03, 0x2a, 0x04, 0x2b, 0x04, + 0xa4, 0x04, 0xa5, 0x04, 0x18, 0x05, 0x18, 0x05, 0x88, 0x05, 0x89, 0x05, + 0xef, 0x05, 0xf0, 0x05, 0x53, 0x06, 0x52, 0x06, 0xac, 0x06, 0xad, 0x06, + 0xfd, 0x06, 0xfe, 0x06, 0x4b, 0x07, 0x4b, 0x07, 0x8b, 0x07, 0x8c, 0x07, + 0xc6, 0x07, 0xc5, 0x07, 0xf4, 0x07, 0xf6, 0x07, 0x19, 0x08, 0x1a, 0x08, + 0x37, 0x08, 0x39, 0x08, 0x49, 0x08, 0x48, 0x08, 0x4f, 0x08, 0x52, 0x08, + 0x4e, 0x08, 0x4e, 0x08, 0x40, 0x08, 0x40, 0x08, 0x2a, 0x08, 0x2a, 0x08, + 0x05, 0x08, 0x05, 0x08, 0xda, 0x07, 0xdb, 0x07, 0xa2, 0x07, 0xa3, 0x07, + 0x62, 0x07, 0x63, 0x07, 0x1a, 0x07, 0x1a, 0x07, 0xc6, 0x06, 0xc8, 0x06, + 0x70, 0x06, 0x70, 0x06, 0x0c, 0x06, 0x0d, 0x06, 0xa5, 0x05, 0xa7, 0x05, + 0x38, 0x05, 0x38, 0x05, 0xc4, 0x04, 0xc6, 0x04, 0x4b, 0x04, 0x4b, 0x04, + 0xcc, 0x03, 0xcd, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0xc7, 0x02, 0xc7, 0x02, + 0x3f, 0x02, 0x40, 0x02, 0xb4, 0x01, 0xb5, 0x01, 0x28, 0x01, 0x28, 0x01, + 0x9a, 0x00, 0x9b, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x7d, 0xff, 0x7e, 0xff, + 0xf0, 0xfe, 0xf1, 0xfe, 0x64, 0xfe, 0x65, 0xfe, 0xda, 0xfd, 0xda, 0xfd, + 0x4f, 0xfd, 0x52, 0xfd, 0xcd, 0xfc, 0xcd, 0xfc, 0x4a, 0xfc, 0x4c, 0xfc, + 0xcd, 0xfb, 0xce, 0xfb, 0x55, 0xfb, 0x56, 0xfb, 0xe1, 0xfa, 0xe2, 0xfa, + 0x73, 0xfa, 0x73, 0xfa, 0x09, 0xfa, 0x0c, 0xfa, 0xa7, 0xf9, 0xa8, 0xf9, + 0x4d, 0xf9, 0x4d, 0xf9, 0xfa, 0xf8, 0xfb, 0xf8, 0xae, 0xf8, 0xaf, 0xf8, + 0x6c, 0xf8, 0x6d, 0xf8, 0x32, 0xf8, 0x33, 0xf8, 0x04, 0xf8, 0x04, 0xf8, + 0xdd, 0xf7, 0xde, 0xf7, 0xc0, 0xf7, 0xc0, 0xf7, 0xaf, 0xf7, 0xb1, 0xf7, + 0xa8, 0xf7, 0xa7, 0xf7, 0xaa, 0xf7, 0xac, 0xf7, 0xba, 0xf7, 0xb9, 0xf7, + 0xd1, 0xf7, 0xd1, 0xf7, 0xf6, 0xf7, 0xf7, 0xf7, 0x21, 0xf8, 0x21, 0xf8, + 0x5b, 0xf8, 0x5d, 0xf8, 0x9d, 0xf8, 0x9c, 0xf8, 0xe8, 0xf8, 0xe9, 0xf8, + 0x3a, 0xf9, 0x3b, 0xf9, 0x95, 0xf9, 0x95, 0xf9, 0xf9, 0xf9, 0xfb, 0xf9, + 0x61, 0xfa, 0x62, 0xfa, 0xd4, 0xfa, 0xd3, 0xfa, 0x49, 0xfb, 0x49, 0xfb, + 0xc3, 0xfb, 0xc5, 0xfb, 0x44, 0xfc, 0x45, 0xfc, 0xc7, 0xfc, 0xc6, 0xfc, + 0x51, 0xfd, 0x52, 0xfd, 0xda, 0xfd, 0xda, 0xfd, 0x69, 0xfe, 0x67, 0xfe, + 0xf4, 0xfe, 0xf6, 0xfe, 0x88, 0xff, 0x85, 0xff, 0x14, 0x00, 0x16, 0x00, + 0xa6, 0x00, 0xa4, 0x00, 0x34, 0x01, 0x37, 0x01, 0xc2, 0x01, 0xc1, 0x01, + 0x4e, 0x02, 0x4e, 0x02, 0xd5, 0x02, 0xd4, 0x02, 0x5a, 0x03, 0x5a, 0x03, + 0xdb, 0x03, 0xda, 0x03, 0x58, 0x04, 0x58, 0x04, 0xd1, 0x04, 0xd1, 0x04, + 0x41, 0x05, 0x42, 0x05, 0xb2, 0x05, 0xb2, 0x05, 0x17, 0x06, 0x16, 0x06, + 0x78, 0x06, 0x77, 0x06, 0xd0, 0x06, 0xd1, 0x06, 0x20, 0x07, 0x20, 0x07, + 0x69, 0x07, 0x69, 0x07, 0xa7, 0x07, 0xa7, 0x07, 0xdf, 0x07, 0xdf, 0x07, + 0x0a, 0x08, 0x0a, 0x08, 0x2e, 0x08, 0x2d, 0x08, 0x45, 0x08, 0x45, 0x08, + 0x55, 0x08, 0x54, 0x08, 0x59, 0x08, 0x58, 0x08, 0x51, 0x08, 0x53, 0x08, + 0x41, 0x08, 0x3e, 0x08, 0x26, 0x08, 0x27, 0x08, 0xff, 0x07, 0xfe, 0x07, + 0xcf, 0x07, 0xcf, 0x07, 0x95, 0x07, 0x95, 0x07, 0x50, 0x07, 0x4f, 0x07, + 0x06, 0x07, 0x06, 0x07, 0xae, 0x06, 0xad, 0x06, 0x54, 0x06, 0x53, 0x06, + 0xec, 0x05, 0xed, 0x05, 0x84, 0x05, 0x82, 0x05, 0x0f, 0x05, 0x12, 0x05, + 0x9c, 0x04, 0x99, 0x04, 0x1e, 0x04, 0x1f, 0x04, 0xa0, 0x03, 0x9e, 0x03, + 0x1b, 0x03, 0x1c, 0x03, 0x93, 0x02, 0x93, 0x02, 0x0a, 0x02, 0x09, 0x02, + 0x7d, 0x01, 0x7d, 0x01, 0xee, 0x00, 0xef, 0x00, 0x61, 0x00, 0x61, 0x00, + 0xd0, 0xff, 0xd0, 0xff, 0x42, 0xff, 0x42, 0xff, 0xb4, 0xfe, 0xb3, 0xfe, + 0x27, 0xfe, 0x27, 0xfe, 0x9c, 0xfd, 0x9d, 0xfd, 0x18, 0xfd, 0x15, 0xfd, + 0x8f, 0xfc, 0x92, 0xfc, 0x12, 0xfc, 0x11, 0xfc, 0x95, 0xfb, 0x95, 0xfb, + 0x1e, 0xfb, 0x1e, 0xfb, 0xad, 0xfa, 0xab, 0xfa, 0x3d, 0xfa, 0x3f, 0xfa, + 0xd9, 0xf9, 0xda, 0xf9, 0x7b, 0xf9, 0x7a, 0xf9, 0x21, 0xf9, 0x21, 0xf9, + 0xd4, 0xf8, 0xd4, 0xf8, 0x89, 0xf8, 0x88, 0xf8, 0x4b, 0xf8, 0x4e, 0xf8, + 0x17, 0xf8, 0x15, 0xf8, 0xea, 0xf7, 0xeb, 0xf7, 0xca, 0xf7, 0xc9, 0xf7, + 0xb0, 0xf7, 0xb0, 0xf7, 0xa5, 0xf7, 0xa4, 0xf7, 0xa3, 0xf7, 0xa0, 0xf7, + 0xa8, 0xf7, 0xa9, 0xf7, 0xbd, 0xf7, 0xbc, 0xf7, 0xd8, 0xf7, 0xd8, 0xf7, + 0x02, 0xf8, 0x00, 0xf8, 0x32, 0xf8, 0x33, 0xf8, 0x6f, 0xf8, 0x6e, 0xf8, + 0xb6, 0xf8, 0xb5, 0xf8, 0x04, 0xf9, 0x02, 0xf9, 0x5c, 0xf9, 0x5c, 0xf9, + 0xbb, 0xf9, 0xb9, 0xf9, 0x20, 0xfa, 0x21, 0xfa, 0x8e, 0xfa, 0x8c, 0xfa, + 0x02, 0xfb, 0x00, 0xfb, 0x7a, 0xfb, 0x7b, 0xfb, 0xf9, 0xfb, 0xf7, 0xfb, + 0x7b, 0xfc, 0x7a, 0xfc, 0x01, 0xfd, 0xfe, 0xfc, 0x88, 0xfd, 0x8a, 0xfd, + 0x17, 0xfe, 0x14, 0xfe, 0xa5, 0xfe, 0xa5, 0xfe, 0x34, 0xff, 0x32, 0xff, + 0xc5, 0xff, 0xc3, 0xff, 0x55, 0x00, 0x55, 0x00, 0xe7, 0x00, 0xe4, 0x00, + 0x75, 0x01, 0x76, 0x01, 0x01, 0x02, 0x01, 0x02, 0x90, 0x02, 0x8d, 0x02, + 0x14, 0x03, 0x15, 0x03, 0x9a, 0x03, 0x99, 0x03, 0x1b, 0x04, 0x1b, 0x04, + 0x96, 0x04, 0x95, 0x04, 0x0d, 0x05, 0x0d, 0x05, 0x7f, 0x05, 0x7d, 0x05, + 0xe8, 0x05, 0xe8, 0x05, 0x50, 0x06, 0x4e, 0x06, 0xa8, 0x06, 0xa9, 0x06, + 0x01, 0x07, 0xff, 0x06, 0x4c, 0x07, 0x4e, 0x07, 0x91, 0x07, 0x90, 0x07, + 0xcf, 0x07, 0xcd, 0x07, 0xfe, 0x07, 0x00, 0x08, 0x28, 0x08, 0x26, 0x08, + 0x44, 0x08, 0x45, 0x08, 0x59, 0x08, 0x59, 0x08, 0x63, 0x08, 0x60, 0x08, + 0x60, 0x08, 0x60, 0x08, 0x54, 0x08, 0x54, 0x08, 0x3f, 0x08, 0x3c, 0x08, + 0x1d, 0x08, 0x1d, 0x08, 0xf1, 0x07, 0xf0, 0x07, 0xbb, 0x07, 0xbb, 0x07, + 0x7a, 0x07, 0x7b, 0x07, 0x33, 0x07, 0x33, 0x07, 0xe1, 0x06, 0xe0, 0x06, + 0x88, 0x06, 0x88, 0x06, 0x27, 0x06, 0x25, 0x06, 0xbe, 0x05, 0xbd, 0x05, + 0x51, 0x05, 0x51, 0x05, 0xdb, 0x04, 0xda, 0x04, 0x62, 0x04, 0x62, 0x04, + 0xe3, 0x03, 0xe2, 0x03, 0x61, 0x03, 0x60, 0x03, 0xda, 0x02, 0xd9, 0x02, + 0x51, 0x02, 0x4f, 0x02, 0xc6, 0x01, 0xc6, 0x01, 0x38, 0x01, 0x38, 0x01, + 0xaa, 0x00, 0xa8, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x8b, 0xff, 0x8a, 0xff, + 0xfe, 0xfe, 0xfc, 0xfe, 0x6e, 0xfe, 0x6d, 0xfe, 0xe4, 0xfd, 0xe2, 0xfd, + 0x5a, 0xfd, 0x5a, 0xfd, 0xd4, 0xfc, 0xd2, 0xfc, 0x51, 0xfc, 0x50, 0xfc, + 0xd3, 0xfb, 0xd1, 0xfb, 0x56, 0xfb, 0x56, 0xfb, 0xe6, 0xfa, 0xe5, 0xfa, + 0x73, 0xfa, 0x71, 0xfa, 0x0d, 0xfa, 0x0a, 0xfa, 0xa5, 0xf9, 0xa4, 0xf9, + 0x4b, 0xf9, 0x49, 0xf9, 0xf7, 0xf8, 0xf6, 0xf8, 0xa9, 0xf8, 0xa6, 0xf8, + 0x67, 0xf8, 0x67, 0xf8, 0x2c, 0xf8, 0x28, 0xf8, 0xfa, 0xf7, 0xfa, 0xf7, + 0xd5, 0xf7, 0xd3, 0xf7, 0xb5, 0xf7, 0xb3, 0xf7, 0xa3, 0xf7, 0xa3, 0xf7, + 0x9a, 0xf7, 0x99, 0xf7, 0x9d, 0xf7, 0x9c, 0xf7, 0xa8, 0xf7, 0xa6, 0xf7, + 0xc0, 0xf7, 0xc0, 0xf7, 0xe4, 0xf7, 0xe1, 0xf7, 0x0e, 0xf8, 0x0e, 0xf8, + 0x48, 0xf8, 0x45, 0xf8, 0x87, 0xf8, 0x87, 0xf8, 0xd3, 0xf8, 0xd1, 0xf8, + 0x24, 0xf9, 0x22, 0xf9, 0x80, 0xf9, 0x7f, 0xf9, 0xe5, 0xf9, 0xe3, 0xf9, + 0x4f, 0xfa, 0x4d, 0xfa, 0xbf, 0xfa, 0xbf, 0xfa, 0x37, 0xfb, 0x35, 0xfb, + 0xb3, 0xfb, 0xaf, 0xfb, 0x34, 0xfc, 0x34, 0xfc, 0xba, 0xfc, 0xb7, 0xfc, + 0x41, 0xfd, 0x40, 0xfd, 0xcd, 0xfd, 0xcc, 0xfd, 0x5b, 0xfe, 0x59, 0xfe, + 0xec, 0xfe, 0xeb, 0xfe, 0x7d, 0xff, 0x7c, 0xff, 0x10, 0x00, 0x0d, 0x00, + 0xa0, 0x00, 0xa2, 0x00, 0x31, 0x01, 0x2e, 0x01, 0xc1, 0x01, 0xc0, 0x01, + 0x4c, 0x02, 0x4b, 0x02, 0xd7, 0x02, 0xd6, 0x02, 0x5e, 0x03, 0x5c, 0x03, + 0xde, 0x03, 0xdd, 0x03, 0x61, 0x04, 0x5f, 0x04, 0xd7, 0x04, 0xd6, 0x04, + 0x4e, 0x05, 0x4d, 0x05, 0xbc, 0x05, 0xb9, 0x05, 0x24, 0x06, 0x23, 0x06, + 0x87, 0x06, 0x84, 0x06, 0xde, 0x06, 0xdf, 0x06, 0x32, 0x07, 0x2e, 0x07, + 0x78, 0x07, 0x78, 0x07, 0xbb, 0x07, 0xb7, 0x07, 0xee, 0x07, 0xef, 0x07, + 0x1e, 0x08, 0x1a, 0x08, 0x3f, 0x08, 0x3f, 0x08, 0x57, 0x08, 0x56, 0x08, + 0x66, 0x08, 0x65, 0x08, 0x69, 0x08, 0x69, 0x08, 0x64, 0x08, 0x62, 0x08, + 0x53, 0x08, 0x51, 0x08, 0x34, 0x08, 0x34, 0x08, 0x0f, 0x08, 0x0d, 0x08, + 0xdb, 0x07, 0xda, 0x07, 0xa2, 0x07, 0xa1, 0x07, 0x5b, 0x07, 0x59, 0x07, + 0x0f, 0x07, 0x0e, 0x07, 0xb8, 0x06, 0xb6, 0x06, 0x5a, 0x06, 0x59, 0x06, + 0xf8, 0x05, 0xf4, 0x05, 0x89, 0x05, 0x88, 0x05, 0x1b, 0x05, 0x18, 0x05, + 0xa2, 0x04, 0xa1, 0x04, 0x28, 0x04, 0x24, 0x04, 0xa3, 0x03, 0xa4, 0x03, + 0x21, 0x03, 0x1f, 0x03, 0x99, 0x02, 0x98, 0x02, 0x0d, 0x02, 0x0c, 0x02, + 0x81, 0x01, 0x7f, 0x01, 0xf2, 0x00, 0xf1, 0x00, 0x63, 0x00, 0x60, 0x00, + 0xd2, 0xff, 0xd1, 0xff, 0x45, 0xff, 0x44, 0xff, 0xb4, 0xfe, 0xb2, 0xfe, + 0x28, 0xfe, 0x27, 0xfe, 0x9a, 0xfd, 0x99, 0xfd, 0x14, 0xfd, 0x12, 0xfd, + 0x90, 0xfc, 0x8c, 0xfc, 0x0e, 0xfc, 0x0d, 0xfc, 0x91, 0xfb, 0x8e, 0xfb, + 0x1a, 0xfb, 0x18, 0xfb, 0xa7, 0xfa, 0xa4, 0xfa, 0x39, 0xfa, 0x35, 0xfa, + 0xd4, 0xf9, 0xd3, 0xf9, 0x71, 0xf9, 0x6c, 0xf9, 0x19, 0xf9, 0x1b, 0xf9, + 0xc7, 0xf8, 0xc3, 0xf8, 0x80, 0xf8, 0x7f, 0xf8, 0x3f, 0xf8, 0x3d, 0xf8, + 0x0a, 0xf8, 0x07, 0xf8, 0xde, 0xf7, 0xdc, 0xf7, 0xbb, 0xf7, 0xb9, 0xf7, + 0xa4, 0xf7, 0xa2, 0xf7, 0x94, 0xf7, 0x92, 0xf7, 0x93, 0xf7, 0x91, 0xf7, + 0x98, 0xf7, 0x96, 0xf7, 0xac, 0xf7, 0xab, 0xf7, 0xc8, 0xf7, 0xc5, 0xf7, + 0xf0, 0xf7, 0xee, 0xf7, 0x21, 0xf8, 0x20, 0xf8, 0x5e, 0xf8, 0x5c, 0xf8, + 0xa3, 0xf8, 0xa2, 0xf8, 0xf5, 0xf8, 0xf3, 0xf8, 0x4c, 0xf9, 0x4a, 0xf9, + 0xad, 0xf9, 0xab, 0xf9, 0x13, 0xfa, 0x12, 0xfa, 0x82, 0xfa, 0x81, 0xfa, + 0xf5, 0xfa, 0xf4, 0xfa, 0x70, 0xfb, 0x6e, 0xfb, 0xef, 0xfb, 0xee, 0xfb, + 0x73, 0xfc, 0x73, 0xfc, 0xfd, 0xfc, 0xf9, 0xfc, 0x85, 0xfd, 0x86, 0xfd, + 0x14, 0xfe, 0x11, 0xfe, 0xa2, 0xfe, 0xa2, 0xfe, 0x34, 0xff, 0x32, 0xff, + 0xc6, 0xff, 0xc4, 0xff, 0x57, 0x00, 0x57, 0x00, 0xea, 0x00, 0xe8, 0x00, + 0x79, 0x01, 0x7a, 0x01, 0x09, 0x02, 0x06, 0x02, 0x94, 0x02, 0x92, 0x02, + 0x1e, 0x03, 0x1c, 0x03, 0xa1, 0x03, 0xa1, 0x03, 0x24, 0x04, 0x21, 0x04, + 0x9f, 0x04, 0x9d, 0x04, 0x16, 0x05, 0x14, 0x05, 0x89, 0x05, 0x89, 0x05, + 0xf3, 0x05, 0xf2, 0x05, 0x5a, 0x06, 0x57, 0x06, 0xb6, 0x06, 0xb6, 0x06, + 0x0c, 0x07, 0x0a, 0x07, 0x5a, 0x07, 0x58, 0x07, 0x9e, 0x07, 0x9b, 0x07, + 0xd8, 0x07, 0xd8, 0x07, 0x0b, 0x08, 0x0a, 0x08, 0x33, 0x08, 0x30, 0x08, + 0x51, 0x08, 0x51, 0x08, 0x67, 0x08, 0x63, 0x08, 0x6e, 0x08, 0x6e, 0x08, + 0x70, 0x08, 0x6b, 0x08, 0x61, 0x08, 0x62, 0x08, 0x4d, 0x08, 0x49, 0x08, + 0x28, 0x08, 0x28, 0x08, 0xfb, 0x07, 0xf9, 0x07, 0xc8, 0x07, 0xc6, 0x07, + 0x88, 0x07, 0x85, 0x07, 0x3e, 0x07, 0x3d, 0x07, 0xea, 0x06, 0xea, 0x06, + 0x92, 0x06, 0x90, 0x06, 0x31, 0x06, 0x30, 0x06, 0xc7, 0x05, 0xc5, 0x05, + 0x5a, 0x05, 0x5a, 0x05, 0xe3, 0x04, 0xe3, 0x04, 0x6d, 0x04, 0x6a, 0x04, + 0xec, 0x03, 0xea, 0x03, 0x68, 0x03, 0x67, 0x03, 0xe2, 0x02, 0xe0, 0x02, + 0x57, 0x02, 0x57, 0x02, 0xcd, 0x01, 0xca, 0x01, 0x3c, 0x01, 0x3d, 0x01, + 0xaf, 0x00, 0xac, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x8e, 0xff, 0x8b, 0xff, + 0xfe, 0xfe, 0xfd, 0xfe, 0x71, 0xfe, 0x6e, 0xfe, 0xe5, 0xfd, 0xe0, 0xfd, + 0x59, 0xfd, 0x58, 0xfd, 0xd3, 0xfc, 0xd0, 0xfc, 0x4e, 0xfc, 0x4b, 0xfc, + 0xcf, 0xfb, 0xcc, 0xfb, 0x53, 0xfb, 0x50, 0xfb, 0xdd, 0xfa, 0xdc, 0xfa, + 0x6e, 0xfa, 0x6b, 0xfa, 0x03, 0xfa, 0x00, 0xfa, 0x9f, 0xf9, 0x9b, 0xf9, + 0x41, 0xf9, 0x41, 0xf9, 0xed, 0xf8, 0xe8, 0xf8, 0xa1, 0xf8, 0x9f, 0xf8, + 0x5b, 0xf8, 0x58, 0xf8, 0x1f, 0xf8, 0x1f, 0xf8, 0xef, 0xf7, 0xec, 0xf7, + 0xc7, 0xf7, 0xc3, 0xf7, 0xa7, 0xf7, 0xa6, 0xf7, 0x97, 0xf7, 0x93, 0xf7, + 0x8c, 0xf7, 0x8b, 0xf7, 0x90, 0xf7, 0x8c, 0xf7, 0x9b, 0xf7, 0x98, 0xf7, + 0xb3, 0xf7, 0xb0, 0xf7, 0xd6, 0xf7, 0xd2, 0xf7, 0x03, 0xf8, 0x01, 0xf8, + 0x3a, 0xf8, 0x37, 0xf8, 0x7c, 0xf8, 0x7a, 0xf8, 0xc4, 0xf8, 0xc3, 0xf8, + 0x1a, 0xf9, 0x18, 0xf9, 0x75, 0xf9, 0x73, 0xf9, 0xd9, 0xf9, 0xd7, 0xf9, + 0x45, 0xfa, 0x42, 0xfa, 0xb3, 0xfa, 0xb3, 0xfa, 0x2b, 0xfb, 0x29, 0xfb, + 0xa8, 0xfb, 0xa5, 0xfb, 0x28, 0xfc, 0x27, 0xfc, 0xb0, 0xfc, 0xac, 0xfc, + 0x37, 0xfd, 0x35, 0xfd, 0xc2, 0xfd, 0xc2, 0xfd, 0x53, 0xfe, 0x4f, 0xfe, + 0xe0, 0xfe, 0xe0, 0xfe, 0x75, 0xff, 0x71, 0xff, 0x04, 0x00, 0x04, 0x00, + 0x96, 0x00, 0x95, 0x00, 0x28, 0x01, 0x26, 0x01, 0xb6, 0x01, 0xb4, 0x01, + 0x43, 0x02, 0x42, 0x02, 0xce, 0x02, 0xcb, 0x02, 0x53, 0x03, 0x51, 0x03, + 0xd9, 0x03, 0xd7, 0x03, 0x56, 0x04, 0x54, 0x04, 0xd3, 0x04, 0xd1, 0x04, + 0x46, 0x05, 0x43, 0x05, 0xb5, 0x05, 0xb3, 0x05, 0x20, 0x06, 0x1d, 0x06, + 0x7d, 0x06, 0x7e, 0x06, 0xdb, 0x06, 0xd5, 0x06, 0x2b, 0x07, 0x2d, 0x07, + 0x76, 0x07, 0x72, 0x07, 0xb5, 0x07, 0xb4, 0x07, 0xed, 0x07, 0xeb, 0x07, + 0x1b, 0x08, 0x18, 0x08, 0x3f, 0x08, 0x3d, 0x08, 0x59, 0x08, 0x57, 0x08, + 0x69, 0x08, 0x67, 0x08, 0x70, 0x08, 0x6c, 0x08, 0x67, 0x08, 0x66, 0x08, + 0x5a, 0x08, 0x56, 0x08, 0x3c, 0x08, 0x3c, 0x08, 0x1a, 0x08, 0x16, 0x08, + 0xe9, 0x07, 0xe6, 0x07, 0xaf, 0x07, 0xac, 0x07, 0x6d, 0x07, 0x6a, 0x07, + 0x1f, 0x07, 0x1d, 0x07, 0xcb, 0x06, 0xc9, 0x06, 0x6e, 0x06, 0x6c, 0x06, + 0x09, 0x06, 0x07, 0x06, 0x9e, 0x05, 0x9c, 0x05, 0x2c, 0x05, 0x2a, 0x05, + 0xb8, 0x04, 0xb4, 0x04, 0x39, 0x04, 0x38, 0x04, 0xb9, 0x03, 0xb7, 0x03, + 0x36, 0x03, 0x33, 0x03, 0xab, 0x02, 0xab, 0x02, 0x23, 0x02, 0x20, 0x02, + 0x95, 0x01, 0x93, 0x01, 0x08, 0x01, 0x04, 0x01, 0x76, 0x00, 0x75, 0x00, + 0xe9, 0xff, 0xe5, 0xff, 0x57, 0xff, 0x55, 0xff, 0xcb, 0xfe, 0xc8, 0xfe, + 0x39, 0xfe, 0x37, 0xfe, 0xb1, 0xfd, 0xad, 0xfd, 0x27, 0xfd, 0x26, 0xfd, + 0xa0, 0xfc, 0x9e, 0xfc, 0x20, 0xfc, 0x20, 0xfc, 0xa3, 0xfb, 0x9e, 0xfb, + 0x29, 0xfb, 0x28, 0xfb, 0xb6, 0xfa, 0xb4, 0xfa, 0x48, 0xfa, 0x44, 0xfa, + 0xdf, 0xf9, 0xdf, 0xf9, 0x81, 0xf9, 0x7c, 0xf9, 0x24, 0xf9, 0x25, 0xf9, + 0xd5, 0xf8, 0xd1, 0xf8, 0x8b, 0xf8, 0x89, 0xf8, 0x49, 0xf8, 0x47, 0xf8, + 0x14, 0xf8, 0x12, 0xf8, 0xe3, 0xf7, 0xe2, 0xf7, 0xc2, 0xf7, 0xc0, 0xf7, + 0xa9, 0xf7, 0xa6, 0xf7, 0x98, 0xf7, 0x96, 0xf7, 0x95, 0xf7, 0x93, 0xf7, + 0x99, 0xf7, 0x98, 0xf7, 0xab, 0xf7, 0xa8, 0xf7, 0xc8, 0xf7, 0xc6, 0xf7, + 0xec, 0xf7, 0xea, 0xf7, 0x1f, 0xf8, 0x1c, 0xf8, 0x59, 0xf8, 0x56, 0xf8, + 0x9c, 0xf8, 0x9b, 0xf8, 0xea, 0xf8, 0xe8, 0xf8, 0x41, 0xf9, 0x40, 0xf9, + 0x9e, 0xf9, 0x9c, 0xf9, 0x03, 0xfa, 0x02, 0xfa, 0x70, 0xfa, 0x6f, 0xfa, + 0xe1, 0xfa, 0xe0, 0xfa, 0x5b, 0xfb, 0x59, 0xfb, 0xd9, 0xfb, 0xd8, 0xfb, + 0x5b, 0xfc, 0x58, 0xfc, 0xdf, 0xfc, 0xe0, 0xfc, 0x6a, 0xfd, 0x66, 0xfd, + 0xf6, 0xfd, 0xf4, 0xfd, 0x83, 0xfe, 0x81, 0xfe, 0x13, 0xff, 0x11, 0xff, + 0xa4, 0xff, 0xa2, 0xff, 0x35, 0x00, 0x31, 0x00, 0xc3, 0x00, 0xc3, 0x00, + 0x55, 0x01, 0x53, 0x01, 0xe2, 0x01, 0xe0, 0x01, 0x70, 0x02, 0x6c, 0x02, + 0xf5, 0x02, 0xf7, 0x02, 0x7d, 0x03, 0x78, 0x03, 0xfd, 0x03, 0xfc, 0x03, + 0x7a, 0x04, 0x77, 0x04, 0xf3, 0x04, 0xf2, 0x04, 0x64, 0x05, 0x63, 0x05, + 0xd2, 0x05, 0xcf, 0x05, 0x36, 0x06, 0x35, 0x06, 0x97, 0x06, 0x94, 0x06, + 0xed, 0x06, 0xea, 0x06, 0x3b, 0x07, 0x39, 0x07, 0x84, 0x07, 0x81, 0x07, + 0xbe, 0x07, 0xba, 0x07, 0xf5, 0x07, 0xf2, 0x07, 0x1d, 0x08, 0x1b, 0x08, + 0x40, 0x08, 0x3c, 0x08, 0x56, 0x08, 0x53, 0x08, 0x60, 0x08, 0x60, 0x08, + 0x63, 0x08, 0x5e, 0x08, 0x59, 0x08, 0x58, 0x08, 0x45, 0x08, 0x42, 0x08, + 0x27, 0x08, 0x24, 0x08, 0xfe, 0x07, 0xfb, 0x07, 0xca, 0x07, 0xc9, 0x07, + 0x8e, 0x07, 0x8c, 0x07, 0x48, 0x07, 0x45, 0x07, 0xf8, 0x06, 0xf7, 0x06, + 0xa3, 0x06, 0x9e, 0x06, 0x42, 0x06, 0x42, 0x06, 0xdf, 0x05, 0xda, 0x05, + 0x70, 0x05, 0x6d, 0x05, 0xfe, 0x04, 0xfc, 0x04, 0x86, 0x04, 0x83, 0x04, + 0x0a, 0x04, 0x09, 0x04, 0x88, 0x03, 0x85, 0x03, 0x03, 0x03, 0x00, 0x03, + 0x7a, 0x02, 0x78, 0x02, 0xf1, 0x01, 0xed, 0x01, 0x65, 0x01, 0x62, 0x01, + 0xd6, 0x00, 0xd3, 0x00, 0x48, 0x00, 0x45, 0x00, 0xb8, 0xff, 0xb4, 0xff, + 0x2b, 0xff, 0x29, 0xff, 0x9d, 0xfe, 0x9a, 0xfe, 0x10, 0xfe, 0x10, 0xfe, + 0x89, 0xfd, 0x84, 0xfd, 0xff, 0xfc, 0xfe, 0xfc, 0x7d, 0xfc, 0x7b, 0xfc, + 0xfe, 0xfb, 0xfb, 0xfb, 0x81, 0xfb, 0x80, 0xfb, 0x0d, 0xfb, 0x09, 0xfb, + 0x9c, 0xfa, 0x9a, 0xfa, 0x32, 0xfa, 0x31, 0xfa, 0xcf, 0xf9, 0xcb, 0xf9, + 0x6e, 0xf9, 0x6d, 0xf9, 0x1a, 0xf9, 0x17, 0xf9, 0xc9, 0xf8, 0xc6, 0xf8, + 0x86, 0xf8, 0x83, 0xf8, 0x47, 0xf8, 0x43, 0xf8, 0x14, 0xf8, 0x12, 0xf8, + 0xea, 0xf7, 0xe6, 0xf7, 0xca, 0xf7, 0xc7, 0xf7, 0xb4, 0xf7, 0xb2, 0xf7, + 0xa8, 0xf7, 0xa4, 0xf7, 0xa7, 0xf7, 0xa3, 0xf7, 0xae, 0xf7, 0xab, 0xf7, + 0xc4, 0xf7, 0xc1, 0xf7, 0xe0, 0xf7, 0xdd, 0xf7, 0x0b, 0xf8, 0x07, 0xf8, + 0x3e, 0xf8, 0x3a, 0xf8, 0x78, 0xf8, 0x76, 0xf8, 0xc2, 0xf8, 0xbe, 0xf8, + 0x0d, 0xf9, 0x0b, 0xf9, 0x68, 0xf9, 0x64, 0xf9, 0xc7, 0xf9, 0xc5, 0xf9, + 0x2d, 0xfa, 0x2b, 0xfa, 0x9e, 0xfa, 0x9b, 0xfa, 0x0f, 0xfb, 0x0a, 0xfb, + 0x8a, 0xfb, 0x89, 0xfb, 0x07, 0xfc, 0x04, 0xfc, 0x89, 0xfc, 0x87, 0xfc, + 0x12, 0xfd, 0x0f, 0xfd, 0x97, 0xfd, 0x96, 0xfd, 0x27, 0xfe, 0x24, 0xfe, + 0xb4, 0xfe, 0xb2, 0xfe, 0x43, 0xff, 0x41, 0xff, 0xd5, 0xff, 0xd3, 0xff, + 0x65, 0x00, 0x61, 0x00, 0xf5, 0x00, 0xf2, 0x00, 0x83, 0x01, 0x80, 0x01, + 0x0e, 0x02, 0x0c, 0x02, 0x98, 0x02, 0x95, 0x02, 0x1f, 0x03, 0x1d, 0x03, + 0xa1, 0x03, 0x9e, 0x03, 0x22, 0x04, 0x1f, 0x04, 0x9a, 0x04, 0x98, 0x04, + 0x14, 0x05, 0x0f, 0x05, 0x80, 0x05, 0x7f, 0x05, 0xec, 0x05, 0xe5, 0x05, + 0x4b, 0x06, 0x4b, 0x06, 0xa8, 0x06, 0xa5, 0x06, 0xff, 0x06, 0xfa, 0x06, + 0x46, 0x07, 0x43, 0x07, 0x8c, 0x07, 0x88, 0x07, 0xc3, 0x07, 0xc1, 0x07, + 0xf5, 0x07, 0xf0, 0x07, 0x1b, 0x08, 0x19, 0x08, 0x36, 0x08, 0x33, 0x08, + 0x4a, 0x08, 0x46, 0x08, 0x52, 0x08, 0x4e, 0x08, 0x4e, 0x08, 0x4a, 0x08, + 0x42, 0x08, 0x40, 0x08, 0x2a, 0x08, 0x27, 0x08, 0x08, 0x08, 0x05, 0x08, + 0xdd, 0x07, 0xd9, 0x07, 0xa4, 0x07, 0xa2, 0x07, 0x68, 0x07, 0x63, 0x07, + 0x1c, 0x07, 0x18, 0x07, 0xcf, 0x06, 0xcb, 0x06, 0x73, 0x06, 0x71, 0x06, + 0x17, 0x06, 0x12, 0x06, 0xad, 0x05, 0xab, 0x05, 0x40, 0x05, 0x3c, 0x05, + 0xce, 0x04, 0xcc, 0x04, 0x54, 0x04, 0x51, 0x04, 0xda, 0x03, 0xd8, 0x03, + 0x59, 0x03, 0x55, 0x03, 0xd2, 0x02, 0xd0, 0x02, 0x4d, 0x02, 0x4a, 0x02, + 0xc1, 0x01, 0xbd, 0x01, 0x36, 0x01, 0x35, 0x01, 0xa8, 0x00, 0xa4, 0x00, + 0x1a, 0x00, 0x18, 0x00, 0x8e, 0xff, 0x8c, 0xff, 0x01, 0xff, 0xfc, 0xfe, + 0x74, 0xfe, 0x73, 0xfe, 0xec, 0xfd, 0xe7, 0xfd, 0x63, 0xfd, 0x61, 0xfd, + 0xdd, 0xfc, 0xdd, 0xfc, 0x5c, 0xfc, 0x59, 0xfc, 0xdf, 0xfb, 0xdd, 0xfb, + 0x67, 0xfb, 0x64, 0xfb, 0xf2, 0xfa, 0xef, 0xfa, 0x87, 0xfa, 0x85, 0xfa, + 0x1b, 0xfa, 0x19, 0xfa, 0xbe, 0xf9, 0xbb, 0xf9, 0x60, 0xf9, 0x5d, 0xf9, + 0x0d, 0xf9, 0x0b, 0xf9, 0xc1, 0xf8, 0xbe, 0xf8, 0x7f, 0xf8, 0x7d, 0xf8, + 0x45, 0xf8, 0x42, 0xf8, 0x14, 0xf8, 0x12, 0xf8, 0xee, 0xf7, 0xeb, 0xf7, + 0xd0, 0xf7, 0xcf, 0xf7, 0xbe, 0xf7, 0xbb, 0xf7, 0xb5, 0xf7, 0xb2, 0xf7, + 0xb7, 0xf7, 0xb5, 0xf7, 0xc3, 0xf7, 0xbf, 0xf7, 0xda, 0xf7, 0xd7, 0xf7, + 0xfb, 0xf7, 0xf9, 0xf7, 0x27, 0xf8, 0x23, 0xf8, 0x5e, 0xf8, 0x5c, 0xf8, + 0x9c, 0xf8, 0x99, 0xf8, 0xe5, 0xf8, 0xe3, 0xf8, 0x38, 0xf9, 0x32, 0xf9, + 0x8f, 0xf9, 0x8f, 0xf9, 0xf4, 0xf9, 0xee, 0xf9, 0x5a, 0xfa, 0x59, 0xfa, + 0xc9, 0xfa, 0xc4, 0xfa, 0x3c, 0xfb, 0x3c, 0xfb, 0xb8, 0xfb, 0xb4, 0xfb, + 0x37, 0xfc, 0x34, 0xfc, 0xba, 0xfc, 0xb9, 0xfc, 0x41, 0xfd, 0x3e, 0xfd, + 0xc8, 0xfd, 0xc7, 0xfd, 0x56, 0xfe, 0x55, 0xfe, 0xe3, 0xfe, 0xe0, 0xfe, + 0x72, 0xff, 0x72, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x90, 0x00, 0x8f, 0x00, + 0x20, 0x01, 0x1d, 0x01, 0xa9, 0x01, 0xa8, 0x01, 0x39, 0x02, 0x36, 0x02, + 0xbd, 0x02, 0xbc, 0x02, 0x44, 0x03, 0x40, 0x03, 0xc4, 0x03, 0xc3, 0x03, + 0x43, 0x04, 0x3e, 0x04, 0xba, 0x04, 0xba, 0x04, 0x2d, 0x05, 0x29, 0x05, + 0x99, 0x05, 0x99, 0x05, 0x01, 0x06, 0xfe, 0x05, 0x5f, 0x06, 0x5e, 0x06, + 0xb9, 0x06, 0xb7, 0x06, 0x08, 0x07, 0x07, 0x07, 0x52, 0x07, 0x50, 0x07, + 0x91, 0x07, 0x90, 0x07, 0xc8, 0x07, 0xc5, 0x07, 0xf4, 0x07, 0xf3, 0x07, + 0x18, 0x08, 0x18, 0x08, 0x31, 0x08, 0x2e, 0x08, 0x40, 0x08, 0x40, 0x08, + 0x45, 0x08, 0x42, 0x08, 0x40, 0x08, 0x3f, 0x08, 0x2e, 0x08, 0x2b, 0x08, + 0x16, 0x08, 0x13, 0x08, 0xee, 0x07, 0xee, 0x07, 0xc3, 0x07, 0xbf, 0x07, + 0x87, 0x07, 0x87, 0x07, 0x49, 0x07, 0x45, 0x07, 0xfd, 0x06, 0xfb, 0x06, + 0xaa, 0x06, 0xa7, 0x06, 0x51, 0x06, 0x4d, 0x06, 0xec, 0x05, 0xec, 0x05, + 0x85, 0x05, 0x83, 0x05, 0x18, 0x05, 0x14, 0x05, 0xa2, 0x04, 0xa2, 0x04, + 0x29, 0x04, 0x26, 0x04, 0xac, 0x03, 0xa9, 0x03, 0x2a, 0x03, 0x28, 0x03, + 0xa5, 0x02, 0xa3, 0x02, 0x1f, 0x02, 0x1d, 0x02, 0x92, 0x01, 0x8f, 0x01, + 0x07, 0x01, 0x05, 0x01, 0x79, 0x00, 0x77, 0x00, 0xed, 0xff, 0xeb, 0xff, + 0x61, 0xff, 0x5c, 0xff, 0xd3, 0xfe, 0xd3, 0xfe, 0x48, 0xfe, 0x44, 0xfe, + 0xc0, 0xfd, 0xbf, 0xfd, 0x38, 0xfd, 0x35, 0xfd, 0xb7, 0xfc, 0xb4, 0xfc, + 0x36, 0xfc, 0x34, 0xfc, 0xba, 0xfb, 0xb9, 0xfb, 0x46, 0xfb, 0x44, 0xfb, + 0xd4, 0xfa, 0xd1, 0xfa, 0x68, 0xfa, 0x65, 0xfa, 0x01, 0xfa, 0xfe, 0xf9, + 0xa1, 0xf9, 0x9e, 0xf9, 0x49, 0xf9, 0x47, 0xf9, 0xf9, 0xf8, 0xf5, 0xf8, + 0xaf, 0xf8, 0xae, 0xf8, 0x6f, 0xf8, 0x6d, 0xf8, 0x39, 0xf8, 0x37, 0xf8, + 0x0c, 0xf8, 0x09, 0xf8, 0xe8, 0xf7, 0xe5, 0xf7, 0xcf, 0xf7, 0xcd, 0xf7, + 0xc0, 0xf7, 0xbd, 0xf7, 0xba, 0xf7, 0xb6, 0xf7, 0xc1, 0xf7, 0xbe, 0xf7, + 0xcf, 0xf7, 0xcc, 0xf7, 0xec, 0xf7, 0xe7, 0xf7, 0x10, 0xf8, 0x0f, 0xf8, + 0x3e, 0xf8, 0x3a, 0xf8, 0x78, 0xf8, 0x76, 0xf8, 0xba, 0xf8, 0xb7, 0xf8, + 0x08, 0xf9, 0x03, 0xf9, 0x59, 0xf9, 0x57, 0xf9, 0xb8, 0xf9, 0xb4, 0xf9, + 0x19, 0xfa, 0x17, 0xfa, 0x83, 0xfa, 0x80, 0xfa, 0xf3, 0xfa, 0xf0, 0xfa, + 0x6c, 0xfb, 0x67, 0xfb, 0xe5, 0xfb, 0xe4, 0xfb, 0x67, 0xfc, 0x61, 0xfc, + 0xe8, 0xfc, 0xe6, 0xfc, 0x70, 0xfd, 0x6d, 0xfd, 0xfb, 0xfd, 0xf7, 0xfd, + 0x87, 0xfe, 0x83, 0xfe, 0x14, 0xff, 0x11, 0xff, 0xa2, 0xff, 0x9e, 0xff, + 0x30, 0x00, 0x2e, 0x00, 0xc2, 0x00, 0xbc, 0x00, 0x4d, 0x01, 0x4a, 0x01, + 0xd8, 0x01, 0xd6, 0x01, 0x63, 0x02, 0x5f, 0x02, 0xe9, 0x02, 0xe7, 0x02, + 0x6e, 0x03, 0x6a, 0x03, 0xec, 0x03, 0xe9, 0x03, 0x68, 0x04, 0x65, 0x04, + 0xdd, 0x04, 0xda, 0x04, 0x4f, 0x05, 0x4c, 0x05, 0xb9, 0x05, 0xb7, 0x05, + 0x1d, 0x06, 0x1a, 0x06, 0x7d, 0x06, 0x79, 0x06, 0xcf, 0x06, 0xcf, 0x06, + 0x21, 0x07, 0x1c, 0x07, 0x62, 0x07, 0x61, 0x07, 0xa1, 0x07, 0x9d, 0x07, + 0xd7, 0x07, 0xd2, 0x07, 0xfc, 0x07, 0xfb, 0x07, 0x21, 0x08, 0x1d, 0x08, + 0x36, 0x08, 0x33, 0x08, 0x42, 0x08, 0x41, 0x08, 0x45, 0x08, 0x42, 0x08, + 0x3b, 0x08, 0x38, 0x08, 0x2b, 0x08, 0x29, 0x08, 0x0b, 0x08, 0x08, 0x08, + 0xe6, 0x07, 0xe3, 0x07, 0xb3, 0x07, 0xb1, 0x07, 0x7a, 0x07, 0x76, 0x07, + 0x34, 0x07, 0x34, 0x07, 0xe7, 0x06, 0xe3, 0x06, 0x92, 0x06, 0x91, 0x06, + 0x34, 0x06, 0x30, 0x06, 0xd0, 0x05, 0xcd, 0x05, 0x63, 0x05, 0x60, 0x05, + 0xf5, 0x04, 0xf1, 0x04, 0x7c, 0x04, 0x7b, 0x04, 0x03, 0x04, 0xff, 0x03, + 0x83, 0x03, 0x80, 0x03, 0xff, 0x02, 0xfa, 0x02, 0x78, 0x02, 0x77, 0x02, + 0xee, 0x01, 0xeb, 0x01, 0x66, 0x01, 0x63, 0x01, 0xd7, 0x00, 0xd4, 0x00, + 0x4a, 0x00, 0x47, 0x00, 0xbe, 0xff, 0xbb, 0xff, 0x2e, 0xff, 0x2a, 0xff, + 0xa3, 0xfe, 0xa2, 0xfe, 0x18, 0xfe, 0x14, 0xfe, 0x8f, 0xfd, 0x8d, 0xfd, + 0x07, 0xfd, 0x04, 0xfd, 0x86, 0xfc, 0x82, 0xfc, 0x06, 0xfc, 0x05, 0xfc, + 0x8c, 0xfb, 0x89, 0xfb, 0x17, 0xfb, 0x16, 0xfb, 0xa7, 0xfa, 0xa4, 0xfa, + 0x3c, 0xfa, 0x3a, 0xfa, 0xd8, 0xf9, 0xd6, 0xf9, 0x7b, 0xf9, 0x77, 0xf9, + 0x24, 0xf9, 0x22, 0xf9, 0xd6, 0xf8, 0xd3, 0xf8, 0x91, 0xf8, 0x8f, 0xf8, + 0x55, 0xf8, 0x51, 0xf8, 0x21, 0xf8, 0x1e, 0xf8, 0xf6, 0xf7, 0xf5, 0xf7, + 0xd7, 0xf7, 0xd5, 0xf7, 0xc0, 0xf7, 0xbd, 0xf7, 0xb4, 0xf7, 0xb1, 0xf7, + 0xb3, 0xf7, 0xb1, 0xf7, 0xbb, 0xf7, 0xb8, 0xf7, 0xd0, 0xf7, 0xce, 0xf7, + 0xed, 0xf7, 0xea, 0xf7, 0x17, 0xf8, 0x14, 0xf8, 0x4a, 0xf8, 0x47, 0xf8, + 0x86, 0xf8, 0x84, 0xf8, 0xce, 0xf8, 0xca, 0xf8, 0x1b, 0xf9, 0x19, 0xf9, + 0x73, 0xf9, 0x6f, 0xf9, 0xd2, 0xf9, 0xd0, 0xf9, 0x38, 0xfa, 0x35, 0xfa, + 0xa5, 0xfa, 0xa4, 0xfa, 0x17, 0xfb, 0x14, 0xfb, 0x90, 0xfb, 0x8f, 0xfb, + 0x0d, 0xfc, 0x08, 0xfc, 0x8f, 0xfc, 0x8c, 0xfc, 0x14, 0xfd, 0x11, 0xfd, + 0x9c, 0xfd, 0x9a, 0xfd, 0x29, 0xfe, 0x26, 0xfe, 0xb6, 0xfe, 0xb2, 0xfe, + 0x46, 0xff, 0x43, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0x66, 0x00, 0x63, 0x00, + 0xf3, 0x00, 0xf1, 0x00, 0x82, 0x01, 0x80, 0x01, 0x0d, 0x02, 0x0a, 0x02, + 0x99, 0x02, 0x96, 0x02, 0x1d, 0x03, 0x1a, 0x03, 0xa1, 0x03, 0x9e, 0x03, + 0x20, 0x04, 0x20, 0x04, 0x9b, 0x04, 0x97, 0x04, 0x11, 0x05, 0x0f, 0x05, + 0x81, 0x05, 0x7d, 0x05, 0xea, 0x05, 0xe9, 0x05, 0x4f, 0x06, 0x4b, 0x06, + 0xa7, 0x06, 0xa5, 0x06, 0xfe, 0x06, 0xfb, 0x06, 0x49, 0x07, 0x46, 0x07, + 0x8e, 0x07, 0x8b, 0x07, 0xc6, 0x07, 0xc5, 0x07, 0xf9, 0x07, 0xf5, 0x07, + 0x1e, 0x08, 0x1d, 0x08, 0x3c, 0x08, 0x37, 0x08, 0x4e, 0x08, 0x4c, 0x08, + 0x57, 0x08, 0x54, 0x08, 0x56, 0x08, 0x53, 0x08, 0x49, 0x08, 0x47, 0x08, + 0x32, 0x08, 0x30, 0x08, 0x12, 0x08, 0x0f, 0x08, 0xe7, 0x07, 0xe3, 0x07, + 0xaf, 0x07, 0xac, 0x07, 0x70, 0x07, 0x6e, 0x07, 0x27, 0x07, 0x23, 0x07, + 0xd6, 0x06, 0xd5, 0x06, 0x7e, 0x06, 0x78, 0x06, 0x1a, 0x06, 0x1b, 0x06, + 0xb5, 0x05, 0xb1, 0x05, 0x45, 0x05, 0x43, 0x05, 0xd4, 0x04, 0xd2, 0x04, + 0x59, 0x04, 0x53, 0x04, 0xdc, 0x03, 0xdc, 0x03, 0x59, 0x03, 0x54, 0x03, + 0xd4, 0x02, 0xd2, 0x02, 0x4a, 0x02, 0x48, 0x02, 0xc1, 0x01, 0xbd, 0x01, + 0x32, 0x01, 0x31, 0x01, 0xa5, 0x00, 0xa1, 0x00, 0x17, 0x00, 0x15, 0x00, + 0x86, 0xff, 0x84, 0xff, 0xfa, 0xfe, 0xf9, 0xfe, 0x6e, 0xfe, 0x6a, 0xfe, + 0xe1, 0xfd, 0xdf, 0xfd, 0x58, 0xfd, 0x56, 0xfd, 0xd2, 0xfc, 0xd0, 0xfc, + 0x50, 0xfc, 0x4e, 0xfc, 0xd3, 0xfb, 0xd0, 0xfb, 0x57, 0xfb, 0x56, 0xfb, + 0xe4, 0xfa, 0xe2, 0xfa, 0x74, 0xfa, 0x71, 0xfa, 0x0b, 0xfa, 0x0a, 0xfa, + 0xa9, 0xf9, 0xa7, 0xf9, 0x4d, 0xf9, 0x4a, 0xf9, 0xf9, 0xf8, 0xf8, 0xf8, + 0xac, 0xf8, 0xaa, 0xf8, 0x69, 0xf8, 0x67, 0xf8, 0x2d, 0xf8, 0x2c, 0xf8, + 0xfd, 0xf7, 0xf9, 0xf7, 0xd5, 0xf7, 0xd4, 0xf7, 0xba, 0xf7, 0xb6, 0xf7, + 0xa4, 0xf7, 0xa3, 0xf7, 0x9c, 0xf7, 0x9b, 0xf7, 0x9e, 0xf7, 0x9b, 0xf7, + 0xa9, 0xf7, 0xa7, 0xf7, 0xc1, 0xf7, 0xbe, 0xf7, 0xe1, 0xf7, 0xe1, 0xf7, + 0x0e, 0xf8, 0x0b, 0xf8, 0x45, 0xf8, 0x42, 0xf8, 0x83, 0xf8, 0x81, 0xf8, + 0xcf, 0xf8, 0xce, 0xf8, 0x1f, 0xf9, 0x1e, 0xf9, 0x7d, 0xf9, 0x78, 0xf9, + 0xdc, 0xf9, 0xdd, 0xf9, 0x4a, 0xfa, 0x44, 0xfa, 0xb5, 0xfa, 0xb5, 0xfa, + 0x2f, 0xfb, 0x2c, 0xfb, 0xa9, 0xfb, 0xa7, 0xfb, 0x28, 0xfc, 0x27, 0xfc, + 0xaf, 0xfc, 0xac, 0xfc, 0x36, 0xfd, 0x35, 0xfd, 0xc2, 0xfd, 0xc1, 0xfd, + 0x52, 0xfe, 0x50, 0xfe, 0xe1, 0xfe, 0xe0, 0xfe, 0x72, 0xff, 0x70, 0xff, + 0x05, 0x00, 0x02, 0x00, 0x95, 0x00, 0x94, 0x00, 0x27, 0x01, 0x24, 0x01, + 0xb5, 0x01, 0xb3, 0x01, 0x43, 0x02, 0x41, 0x02, 0xcb, 0x02, 0xca, 0x02, + 0x54, 0x03, 0x51, 0x03, 0xd6, 0x03, 0xd5, 0x03, 0x57, 0x04, 0x55, 0x04, + 0xd1, 0x04, 0xcf, 0x04, 0x45, 0x05, 0x45, 0x05, 0xb8, 0x05, 0xb4, 0x05, + 0x1c, 0x06, 0x1b, 0x06, 0x83, 0x06, 0x7f, 0x06, 0xda, 0x06, 0xd7, 0x06, + 0x2c, 0x07, 0x2c, 0x07, 0x78, 0x07, 0x74, 0x07, 0xb8, 0x07, 0xb5, 0x07, + 0xf0, 0x07, 0xef, 0x07, 0x1f, 0x08, 0x1b, 0x08, 0x41, 0x08, 0x41, 0x08, + 0x5d, 0x08, 0x5a, 0x08, 0x6c, 0x08, 0x6b, 0x08, 0x71, 0x08, 0x71, 0x08, + 0x6d, 0x08, 0x69, 0x08, 0x5c, 0x08, 0x5b, 0x08, 0x41, 0x08, 0x3f, 0x08, + 0x1d, 0x08, 0x1b, 0x08, 0xec, 0x07, 0xe9, 0x07, 0xb2, 0x07, 0xb0, 0x07, + 0x70, 0x07, 0x6e, 0x07, 0x22, 0x07, 0x22, 0x07, 0xd1, 0x06, 0xce, 0x06, + 0x74, 0x06, 0x72, 0x06, 0x10, 0x06, 0x0e, 0x06, 0xa5, 0x05, 0xa5, 0x05, + 0x34, 0x05, 0x31, 0x05, 0xbe, 0x04, 0xbe, 0x04, 0x43, 0x04, 0x3f, 0x04, + 0xc3, 0x03, 0xc1, 0x03, 0x3e, 0x03, 0x3d, 0x03, 0xb5, 0x02, 0xb2, 0x02, + 0x2c, 0x02, 0x2b, 0x02, 0x9c, 0x01, 0x9b, 0x01, 0x10, 0x01, 0x0d, 0x01, + 0x7f, 0x00, 0x7f, 0x00, 0xf2, 0xff, 0xed, 0xff, 0x5f, 0xff, 0x60, 0xff, + 0xd2, 0xfe, 0xd0, 0xfe, 0x42, 0xfe, 0x41, 0xfe, 0xb6, 0xfd, 0xb6, 0xfd, + 0x2e, 0xfd, 0x2c, 0xfd, 0xa8, 0xfc, 0xa6, 0xfc, 0x27, 0xfc, 0x26, 0xfc, + 0xa5, 0xfb, 0xa3, 0xfb, 0x30, 0xfb, 0x2e, 0xfb, 0xba, 0xfa, 0xb8, 0xfa, + 0x4c, 0xfa, 0x4a, 0xfa, 0xe4, 0xf9, 0xe2, 0xf9, 0x80, 0xf9, 0x80, 0xf9, + 0x29, 0xf9, 0x25, 0xf9, 0xd2, 0xf8, 0xd3, 0xf8, 0x89, 0xf8, 0x86, 0xf8, + 0x47, 0xf8, 0x46, 0xf8, 0x0f, 0xf8, 0x0c, 0xf8, 0xe0, 0xf7, 0xde, 0xf7, + 0xbb, 0xf7, 0xb9, 0xf7, 0xa2, 0xf7, 0x9e, 0xf7, 0x8d, 0xf7, 0x8c, 0xf7, + 0x8b, 0xf7, 0x88, 0xf7, 0x8e, 0xf7, 0x8c, 0xf7, 0x9c, 0xf7, 0x99, 0xf7, + 0xb7, 0xf7, 0xb5, 0xf7, 0xda, 0xf7, 0xd8, 0xf7, 0x0b, 0xf8, 0x08, 0xf8, + 0x42, 0xf8, 0x40, 0xf8, 0x87, 0xf8, 0x84, 0xf8, 0xd2, 0xf8, 0xcf, 0xf8, + 0x29, 0xf9, 0x25, 0xf9, 0x85, 0xf9, 0x83, 0xf9, 0xec, 0xf9, 0xe9, 0xf9, + 0x58, 0xfa, 0x53, 0xfa, 0xc9, 0xfa, 0xc7, 0xfa, 0x44, 0xfb, 0x40, 0xfb, + 0xc0, 0xfb, 0xbe, 0xfb, 0x43, 0xfc, 0x40, 0xfc, 0xc9, 0xfc, 0xc6, 0xfc, + 0x53, 0xfd, 0x50, 0xfd, 0xe1, 0xfd, 0xde, 0xfd, 0x70, 0xfe, 0x6c, 0xfe, + 0x00, 0xff, 0xfe, 0xfe, 0x92, 0xff, 0x8f, 0xff, 0x24, 0x00, 0x22, 0x00, + 0xb4, 0x00, 0xb1, 0x00, 0x47, 0x01, 0x45, 0x01, 0xd4, 0x01, 0xd3, 0x01, + 0x63, 0x02, 0x60, 0x02, 0xed, 0x02, 0xea, 0x02, 0x73, 0x03, 0x71, 0x03, + 0xf7, 0x03, 0xf4, 0x03, 0x74, 0x04, 0x72, 0x04, 0xf0, 0x04, 0xee, 0x04, + 0x62, 0x05, 0x61, 0x05, 0xd0, 0x05, 0xcd, 0x05, 0x39, 0x06, 0x37, 0x06, + 0x98, 0x06, 0x95, 0x06, 0xf1, 0x06, 0xf0, 0x06, 0x40, 0x07, 0x3c, 0x07, + 0x8a, 0x07, 0x89, 0x07, 0xc9, 0x07, 0xc7, 0x07, 0xff, 0x07, 0xfd, 0x07, + 0x2b, 0x08, 0x29, 0x08, 0x4d, 0x08, 0x4c, 0x08, 0x67, 0x08, 0x63, 0x08, + 0x75, 0x08, 0x73, 0x08, 0x76, 0x08, 0x76, 0x08, 0x72, 0x08, 0x6e, 0x08, + 0x5d, 0x08, 0x5d, 0x08, 0x43, 0x08, 0x3e, 0x08, 0x19, 0x08, 0x1a, 0x08, + 0xea, 0x07, 0xe6, 0x07, 0xae, 0x07, 0xad, 0x07, 0x68, 0x07, 0x66, 0x07, + 0x1d, 0x07, 0x1b, 0x07, 0xc7, 0x06, 0xc4, 0x06, 0x68, 0x06, 0x68, 0x06, + 0x04, 0x06, 0x01, 0x06, 0x96, 0x05, 0x97, 0x05, 0x27, 0x05, 0x23, 0x05, + 0xae, 0x04, 0xae, 0x04, 0x30, 0x04, 0x2e, 0x04, 0xb0, 0x03, 0xac, 0x03, + 0x29, 0x03, 0x29, 0x03, 0xa2, 0x02, 0x9f, 0x02, 0x15, 0x02, 0x13, 0x02, + 0x88, 0x01, 0x87, 0x01, 0xfa, 0x00, 0xf7, 0x00, 0x6a, 0x00, 0x69, 0x00, + 0xd9, 0xff, 0xd5, 0xff, 0x4c, 0xff, 0x4a, 0xff, 0xba, 0xfe, 0xb8, 0xfe, + 0x2d, 0xfe, 0x2b, 0xfe, 0xa2, 0xfd, 0x9f, 0xfd, 0x1a, 0xfd, 0x19, 0xfd, + 0x93, 0xfc, 0x8f, 0xfc, 0x10, 0xfc, 0x0f, 0xfc, 0x95, 0xfb, 0x91, 0xfb, + 0x19, 0xfb, 0x19, 0xfb, 0xaa, 0xfa, 0xa7, 0xfa, 0x3a, 0xfa, 0x38, 0xfa, + 0xd1, 0xf9, 0xcf, 0xf9, 0x72, 0xf9, 0x70, 0xf9, 0x16, 0xf9, 0x14, 0xf9, + 0xc8, 0xf8, 0xc5, 0xf8, 0x7b, 0xf8, 0x79, 0xf8, 0x3d, 0xf8, 0x3a, 0xf8, + 0x03, 0xf8, 0x03, 0xf8, 0xd7, 0xf7, 0xd4, 0xf7, 0xb4, 0xf7, 0xb4, 0xf7, + 0x9a, 0xf7, 0x99, 0xf7, 0x8c, 0xf7, 0x8a, 0xf7, 0x86, 0xf7, 0x86, 0xf7, + 0x8e, 0xf7, 0x8c, 0xf7, 0x9e, 0xf7, 0x9e, 0xf7, 0xb9, 0xf7, 0xb9, 0xf7, + 0xe3, 0xf7, 0xe0, 0xf7, 0x12, 0xf8, 0x11, 0xf8, 0x4d, 0xf8, 0x4b, 0xf8, + 0x92, 0xf8, 0x91, 0xf8, 0xe1, 0xf8, 0xdf, 0xf8, 0x35, 0xf9, 0x33, 0xf9, + 0x95, 0xf9, 0x92, 0xf9, 0xf9, 0xf9, 0xf8, 0xf9, 0x69, 0xfa, 0x67, 0xfa, + 0xda, 0xfa, 0xd8, 0xfa, 0x53, 0xfb, 0x51, 0xfb, 0xd1, 0xfb, 0xd0, 0xfb, + 0x53, 0xfc, 0x50, 0xfc, 0xda, 0xfc, 0xd9, 0xfc, 0x64, 0xfd, 0x62, 0xfd, + 0xf1, 0xfd, 0xee, 0xfd, 0x7f, 0xfe, 0x7e, 0xfe, 0x11, 0xff, 0x0f, 0xff, + 0xa1, 0xff, 0x9f, 0xff, 0x34, 0x00, 0x32, 0x00, 0xc4, 0x00, 0xc3, 0x00, + 0x57, 0x01, 0x53, 0x01, 0xe3, 0x01, 0xe3, 0x01, 0x70, 0x02, 0x6d, 0x02, + 0xfa, 0x02, 0xf9, 0x02, 0x7e, 0x03, 0x7b, 0x03, 0x03, 0x04, 0x00, 0x04, + 0x7f, 0x04, 0x7d, 0x04, 0xf7, 0x04, 0xf5, 0x04, 0x6b, 0x05, 0x68, 0x05, + 0xd5, 0x05, 0xd4, 0x05, 0x3e, 0x06, 0x3a, 0x06, 0x9d, 0x06, 0x9b, 0x06, + 0xf4, 0x06, 0xf2, 0x06, 0x44, 0x07, 0x41, 0x07, 0x8b, 0x07, 0x8a, 0x07, + 0xc9, 0x07, 0xc8, 0x07, 0xfe, 0x07, 0xfc, 0x07, 0x2b, 0x08, 0x28, 0x08, + 0x4c, 0x08, 0x4a, 0x08, 0x63, 0x08, 0x60, 0x08, 0x70, 0x08, 0x6e, 0x08, + 0x72, 0x08, 0x70, 0x08, 0x67, 0x08, 0x66, 0x08, 0x59, 0x08, 0x57, 0x08, + 0x3a, 0x08, 0x39, 0x08, 0x13, 0x08, 0x13, 0x08, 0xe0, 0x07, 0xdf, 0x07, + 0xa7, 0x07, 0xa5, 0x07, 0x5f, 0x07, 0x5f, 0x07, 0x12, 0x07, 0x10, 0x07, + 0xba, 0x06, 0xba, 0x06, 0x5f, 0x06, 0x5e, 0x06, 0xf6, 0x05, 0xf5, 0x05, + 0x8a, 0x05, 0x89, 0x05, 0x17, 0x05, 0x17, 0x05, 0x9f, 0x04, 0x9d, 0x04, + 0x21, 0x04, 0x20, 0x04, 0xa0, 0x03, 0x9f, 0x03, 0x1b, 0x03, 0x19, 0x03, + 0x92, 0x02, 0x93, 0x02, 0x09, 0x02, 0x07, 0x02, 0x7a, 0x01, 0x78, 0x01, + 0xeb, 0x00, 0xed, 0x00, 0x5c, 0x00, 0x5a, 0x00, 0xcc, 0xff, 0xcd, 0xff, + 0x3c, 0xff, 0x3a, 0xff, 0xad, 0xfe, 0xac, 0xfe, 0x20, 0xfe, 0x20, 0xfe, + 0x95, 0xfd, 0x94, 0xfd, 0x0e, 0xfd, 0x0c, 0xfd, 0x86, 0xfc, 0x87, 0xfc, + 0x07, 0xfc, 0x05, 0xfc, 0x8a, 0xfb, 0x89, 0xfb, 0x12, 0xfb, 0x12, 0xfb, + 0xa2, 0xfa, 0xa0, 0xfa, 0x33, 0xfa, 0x31, 0xfa, 0xcc, 0xf9, 0xcd, 0xf9, + 0x6f, 0xf9, 0x6b, 0xf9, 0x14, 0xf9, 0x16, 0xf9, 0xc5, 0xf8, 0xc4, 0xf8, + 0x7d, 0xf8, 0x7c, 0xf8, 0x3d, 0xf8, 0x3d, 0xf8, 0x06, 0xf8, 0x07, 0xf8, + 0xdd, 0xf7, 0xdb, 0xf7, 0xb9, 0xf7, 0xb9, 0xf7, 0xa2, 0xf7, 0xa1, 0xf7, + 0x92, 0xf7, 0x93, 0xf7, 0x90, 0xf7, 0x90, 0xf7, 0x98, 0xf7, 0x98, 0xf7, + 0xa9, 0xf7, 0xa9, 0xf7, 0xc9, 0xf7, 0xc6, 0xf7, 0xed, 0xf7, 0xef, 0xf7, + 0x1f, 0xf8, 0x1e, 0xf8, 0x5b, 0xf8, 0x5a, 0xf8, 0x9f, 0xf8, 0xa1, 0xf8, + 0xef, 0xf8, 0xed, 0xf8, 0x44, 0xf9, 0x45, 0xf9, 0xa2, 0xf9, 0xa4, 0xf9, + 0x0b, 0xfa, 0x09, 0xfa, 0x76, 0xfa, 0x78, 0xfa, 0xea, 0xfa, 0xe8, 0xfa, + 0x64, 0xfb, 0x63, 0xfb, 0xe1, 0xfb, 0xe1, 0xfb, 0x63, 0xfc, 0x61, 0xfc, + 0xeb, 0xfc, 0xeb, 0xfc, 0x73, 0xfd, 0x72, 0xfd, 0x01, 0xfe, 0x01, 0xfe, + 0x8f, 0xfe, 0x8d, 0xfe, 0x1f, 0xff, 0x1e, 0xff, 0xaf, 0xff, 0xad, 0xff, + 0x40, 0x00, 0x40, 0x00, 0xd2, 0x00, 0xcf, 0x00, 0x5d, 0x01, 0x5f, 0x01, + 0xf1, 0x01, 0xee, 0x01, 0x76, 0x02, 0x79, 0x02, 0x04, 0x03, 0x02, 0x03, + 0x86, 0x03, 0x88, 0x03, 0x09, 0x04, 0x08, 0x04, 0x87, 0x04, 0x86, 0x04, + 0xfe, 0x04, 0xfd, 0x04, 0x70, 0x05, 0x71, 0x05, 0xdc, 0x05, 0xda, 0x05, + 0x41, 0x06, 0x41, 0x06, 0xa0, 0x06, 0x9d, 0x06, 0xf7, 0x06, 0xf7, 0x06, + 0x45, 0x07, 0x44, 0x07, 0x8c, 0x07, 0x8a, 0x07, 0xc9, 0x07, 0xc8, 0x07, + 0xfe, 0x07, 0xfc, 0x07, 0x27, 0x08, 0x25, 0x08, 0x46, 0x08, 0x46, 0x08, + 0x5d, 0x08, 0x5b, 0x08, 0x66, 0x08, 0x66, 0x08, 0x69, 0x08, 0x69, 0x08, + 0x5f, 0x08, 0x5c, 0x08, 0x4e, 0x08, 0x4e, 0x08, 0x2b, 0x08, 0x2b, 0x08, + 0x05, 0x08, 0x03, 0x08, 0xd1, 0x07, 0xd1, 0x07, 0x92, 0x07, 0x92, 0x07, + 0x4f, 0x07, 0x4f, 0x07, 0xfb, 0x06, 0xfd, 0x06, 0xa9, 0x06, 0xa6, 0x06, + 0x46, 0x06, 0x47, 0x06, 0xe0, 0x05, 0xe0, 0x05, 0x75, 0x05, 0x74, 0x05, + 0x01, 0x05, 0x00, 0x05, 0x89, 0x04, 0x8a, 0x04, 0x0c, 0x04, 0x0c, 0x04, + 0x8a, 0x03, 0x8b, 0x03, 0x05, 0x03, 0x04, 0x03, 0x7f, 0x02, 0x7e, 0x02, + 0xf1, 0x01, 0xf1, 0x01, 0x66, 0x01, 0x66, 0x01, 0xd9, 0x00, 0xd7, 0x00, + 0x48, 0x00, 0x4a, 0x00, 0xbb, 0xff, 0xb9, 0xff, 0x2b, 0xff, 0x2b, 0xff, + 0x9f, 0xfe, 0x9f, 0xfe, 0x11, 0xfe, 0x12, 0xfe, 0x8a, 0xfd, 0x8a, 0xfd, + 0x02, 0xfd, 0x02, 0xfd, 0x7d, 0xfc, 0x7c, 0xfc, 0xff, 0xfb, 0xfe, 0xfb, + 0x81, 0xfb, 0x82, 0xfb, 0x0e, 0xfb, 0x0e, 0xfb, 0x9c, 0xfa, 0x9b, 0xfa, + 0x31, 0xfa, 0x30, 0xfa, 0xce, 0xf9, 0xcd, 0xf9, 0x6e, 0xf9, 0x6e, 0xf9, + 0x18, 0xf9, 0x17, 0xf9, 0xc7, 0xf8, 0xc7, 0xf8, 0x81, 0xf8, 0x80, 0xf8, + 0x44, 0xf8, 0x44, 0xf8, 0x10, 0xf8, 0x0f, 0xf8, 0xe8, 0xf7, 0xe7, 0xf7, + 0xc4, 0xf7, 0xc4, 0xf7, 0xb0, 0xf7, 0xae, 0xf7, 0xa1, 0xf7, 0xa2, 0xf7, + 0x9f, 0xf7, 0x9d, 0xf7, 0xa8, 0xf7, 0xa7, 0xf7, 0xb9, 0xf7, 0xb9, 0xf7, + 0xd8, 0xf7, 0xd7, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0x31, 0xf8, 0x30, 0xf8, + 0x6e, 0xf8, 0x6f, 0xf8, 0xb2, 0xf8, 0xb2, 0xf8, 0x03, 0xf9, 0x03, 0xf9, + 0x5a, 0xf9, 0x59, 0xf9, 0xb9, 0xf9, 0xb9, 0xf9, 0x21, 0xfa, 0x1f, 0xfa, + 0x8c, 0xfa, 0x8c, 0xfa, 0x00, 0xfb, 0x01, 0xfb, 0x79, 0xfb, 0x79, 0xfb, + 0xf9, 0xfb, 0xf6, 0xfb, 0x7a, 0xfc, 0x7c, 0xfc, 0xff, 0xfc, 0xfd, 0xfc, + 0x8c, 0xfd, 0x8c, 0xfd, 0x16, 0xfe, 0x16, 0xfe, 0xa6, 0xfe, 0xa4, 0xfe, + 0x35, 0xff, 0x35, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0x56, 0x00, 0x55, 0x00, + 0xe5, 0x00, 0xe4, 0x00, 0x73, 0x01, 0x73, 0x01, 0x02, 0x02, 0x01, 0x02, + 0x8a, 0x02, 0x8a, 0x02, 0x13, 0x03, 0x12, 0x03, 0x97, 0x03, 0x95, 0x03, + 0x16, 0x04, 0x17, 0x04, 0x93, 0x04, 0x90, 0x04, 0x08, 0x05, 0x08, 0x05, + 0x79, 0x05, 0x7a, 0x05, 0xe4, 0x05, 0xe3, 0x05, 0x46, 0x06, 0x47, 0x06, + 0xa4, 0x06, 0xa4, 0x06, 0xfa, 0x06, 0xf8, 0x06, 0x45, 0x07, 0x45, 0x07, + 0x8a, 0x07, 0x8a, 0x07, 0xc5, 0x07, 0xc4, 0x07, 0xf7, 0x07, 0xf7, 0x07, + 0x1f, 0x08, 0x1e, 0x08, 0x3d, 0x08, 0x3d, 0x08, 0x52, 0x08, 0x52, 0x08, + 0x5b, 0x08, 0x5a, 0x08, 0x5a, 0x08, 0x5a, 0x08, 0x4f, 0x08, 0x4f, 0x08, + 0x39, 0x08, 0x37, 0x08, 0x19, 0x08, 0x1a, 0x08, 0xef, 0x07, 0xed, 0x07, + 0xba, 0x07, 0xb9, 0x07, 0x7d, 0x07, 0x7c, 0x07, 0x32, 0x07, 0x31, 0x07, + 0xe4, 0x06, 0xe4, 0x06, 0x8c, 0x06, 0x8c, 0x06, 0x2e, 0x06, 0x2d, 0x06, + 0xc7, 0x05, 0xc6, 0x05, 0x58, 0x05, 0x59, 0x05, 0xe9, 0x04, 0xe9, 0x04, + 0x70, 0x04, 0x70, 0x04, 0xf5, 0x03, 0xf5, 0x03, 0x72, 0x03, 0x73, 0x03, + 0xed, 0x02, 0xee, 0x02, 0x67, 0x02, 0x68, 0x02, 0xda, 0x01, 0xdb, 0x01, + 0x53, 0x01, 0x52, 0x01, 0xc1, 0x00, 0xc2, 0x00, 0x35, 0x00, 0x33, 0x00, + 0xa6, 0xff, 0xa7, 0xff, 0x16, 0xff, 0x16, 0xff, 0x8e, 0xfe, 0x8d, 0xfe, + 0xfe, 0xfd, 0x00, 0xfe, 0x7a, 0xfd, 0x78, 0xfd, 0xf1, 0xfc, 0xf2, 0xfc, + 0x6e, 0xfc, 0x6e, 0xfc, 0xf1, 0xfb, 0xf1, 0xfb, 0x75, 0xfb, 0x76, 0xfb, + 0x02, 0xfb, 0x02, 0xfb, 0x92, 0xfa, 0x93, 0xfa, 0x27, 0xfa, 0x28, 0xfa, + 0xc4, 0xf9, 0xc5, 0xf9, 0x65, 0xf9, 0x66, 0xf9, 0x11, 0xf9, 0x12, 0xf9, + 0xc4, 0xf8, 0xc6, 0xf8, 0x7e, 0xf8, 0x80, 0xf8, 0x43, 0xf8, 0x44, 0xf8, + 0x10, 0xf8, 0x11, 0xf8, 0xe7, 0xf7, 0xea, 0xf7, 0xca, 0xf7, 0xc9, 0xf7, + 0xb3, 0xf7, 0xb5, 0xf7, 0xa8, 0xf7, 0xaa, 0xf7, 0xa8, 0xf7, 0xa9, 0xf7, + 0xb3, 0xf7, 0xb5, 0xf7, 0xc6, 0xf7, 0xc6, 0xf7, 0xe7, 0xf7, 0xe8, 0xf7, + 0x0e, 0xf8, 0x10, 0xf8, 0x43, 0xf8, 0x45, 0xf8, 0x83, 0xf8, 0x83, 0xf8, + 0xc6, 0xf8, 0xc8, 0xf8, 0x19, 0xf9, 0x1a, 0xf9, 0x70, 0xf9, 0x73, 0xf9, + 0xd2, 0xf9, 0xd1, 0xf9, 0x38, 0xfa, 0x3a, 0xfa, 0xa8, 0xfa, 0xa9, 0xfa, + 0x1a, 0xfb, 0x1b, 0xfb, 0x95, 0xfb, 0x96, 0xfb, 0x12, 0xfc, 0x14, 0xfc, + 0x96, 0xfc, 0x96, 0xfc, 0x1d, 0xfd, 0x1f, 0xfd, 0xa6, 0xfd, 0xa7, 0xfd, + 0x34, 0xfe, 0x34, 0xfe, 0xbf, 0xfe, 0xc4, 0xfe, 0x51, 0xff, 0x50, 0xff, + 0xdf, 0xff, 0xe3, 0xff, 0x70, 0x00, 0x6f, 0x00, 0xff, 0x00, 0x02, 0x01, + 0x8e, 0x01, 0x8e, 0x01, 0x19, 0x02, 0x1a, 0x02, 0xa3, 0x02, 0xa3, 0x02, + 0x29, 0x03, 0x2a, 0x03, 0xad, 0x03, 0xae, 0x03, 0x2a, 0x04, 0x2b, 0x04, + 0xa6, 0x04, 0xa6, 0x04, 0x1b, 0x05, 0x1c, 0x05, 0x8b, 0x05, 0x8a, 0x05, + 0xf2, 0x05, 0xf3, 0x05, 0x56, 0x06, 0x56, 0x06, 0xae, 0x06, 0xb1, 0x06, + 0x02, 0x07, 0x03, 0x07, 0x51, 0x07, 0x50, 0x07, 0x8d, 0x07, 0x8f, 0x07, + 0xcb, 0x07, 0xcb, 0x07, 0xf9, 0x07, 0xfb, 0x07, 0x1f, 0x08, 0x20, 0x08, + 0x3e, 0x08, 0x3e, 0x08, 0x4c, 0x08, 0x4f, 0x08, 0x57, 0x08, 0x57, 0x08, + 0x52, 0x08, 0x53, 0x08, 0x46, 0x08, 0x47, 0x08, 0x2f, 0x08, 0x2f, 0x08, + 0x0c, 0x08, 0x0d, 0x08, 0xe2, 0x07, 0xe1, 0x07, 0xa6, 0x07, 0xa9, 0x07, + 0x6a, 0x07, 0x6a, 0x07, 0x1f, 0x07, 0x1f, 0x07, 0xce, 0x06, 0xd0, 0x06, + 0x77, 0x06, 0x76, 0x06, 0x13, 0x06, 0x15, 0x06, 0xac, 0x05, 0xad, 0x05, + 0x3e, 0x05, 0x3f, 0x05, 0xcb, 0x04, 0xcc, 0x04, 0x52, 0x04, 0x52, 0x04, + 0xd4, 0x03, 0xd4, 0x03, 0x52, 0x03, 0x54, 0x03, 0xcd, 0x02, 0xcc, 0x02, + 0x44, 0x02, 0x45, 0x02, 0xba, 0x01, 0xbd, 0x01, 0x2d, 0x01, 0x2d, 0x01, + 0xa0, 0x00, 0xa1, 0x00, 0x10, 0x00, 0x12, 0x00, 0x84, 0xff, 0x84, 0xff, + 0xf6, 0xfe, 0xf7, 0xfe, 0x69, 0xfe, 0x68, 0xfe, 0xdf, 0xfd, 0xe1, 0xfd, + 0x56, 0xfd, 0x56, 0xfd, 0xd1, 0xfc, 0xd2, 0xfc, 0x50, 0xfc, 0x52, 0xfc, + 0xd2, 0xfb, 0xd2, 0xfb, 0x59, 0xfb, 0x5c, 0xfb, 0xe5, 0xfa, 0xe6, 0xfa, + 0x77, 0xfa, 0x79, 0xfa, 0x0f, 0xfa, 0x10, 0xfa, 0xab, 0xf9, 0xae, 0xf9, + 0x51, 0xf9, 0x51, 0xf9, 0xfa, 0xf8, 0xfe, 0xf8, 0xb1, 0xf8, 0xb2, 0xf8, + 0x6f, 0xf8, 0x6f, 0xf8, 0x31, 0xf8, 0x34, 0xf8, 0x05, 0xf8, 0x05, 0xf8, + 0xdc, 0xf7, 0xde, 0xf7, 0xc0, 0xf7, 0xc1, 0xf7, 0xb0, 0xf7, 0xb0, 0xf7, + 0xa4, 0xf7, 0xa7, 0xf7, 0xa9, 0xf7, 0xaa, 0xf7, 0xb5, 0xf7, 0xb5, 0xf7, + 0xce, 0xf7, 0xcf, 0xf7, 0xef, 0xf7, 0xf2, 0xf7, 0x1e, 0xf8, 0x1e, 0xf8, + 0x53, 0xf8, 0x56, 0xf8, 0x93, 0xf8, 0x95, 0xf8, 0xde, 0xf8, 0xdf, 0xf8, + 0x2f, 0xf9, 0x33, 0xf9, 0x8d, 0xf9, 0x8c, 0xf9, 0xed, 0xf9, 0xf0, 0xf9, + 0x5a, 0xfa, 0x59, 0xfa, 0xc6, 0xfa, 0xca, 0xfa, 0x3d, 0xfb, 0x3c, 0xfb, + 0xb7, 0xfb, 0xba, 0xfb, 0x38, 0xfc, 0x38, 0xfc, 0xbb, 0xfc, 0xbd, 0xfc, + 0x44, 0xfd, 0x46, 0xfd, 0xce, 0xfd, 0xcf, 0xfd, 0x5b, 0xfe, 0x5e, 0xfe, + 0xea, 0xfe, 0xeb, 0xfe, 0x7a, 0xff, 0x7a, 0xff, 0x0a, 0x00, 0x0c, 0x00, + 0x99, 0x00, 0x9b, 0x00, 0x2a, 0x01, 0x2a, 0x01, 0xb6, 0x01, 0xb8, 0x01, + 0x43, 0x02, 0x43, 0x02, 0xcb, 0x02, 0xcc, 0x02, 0x51, 0x03, 0x52, 0x03, + 0xd2, 0x03, 0xd2, 0x03, 0x51, 0x04, 0x52, 0x04, 0xc9, 0x04, 0xca, 0x04, + 0x3c, 0x05, 0x3c, 0x05, 0xa9, 0x05, 0xaa, 0x05, 0x12, 0x06, 0x12, 0x06, + 0x72, 0x06, 0x73, 0x06, 0xca, 0x06, 0xcc, 0x06, 0x1b, 0x07, 0x1c, 0x07, + 0x64, 0x07, 0x65, 0x07, 0xa3, 0x07, 0xa5, 0x07, 0xdc, 0x07, 0xdc, 0x07, + 0x07, 0x08, 0x09, 0x08, 0x2a, 0x08, 0x2c, 0x08, 0x47, 0x08, 0x47, 0x08, + 0x52, 0x08, 0x55, 0x08, 0x5b, 0x08, 0x5a, 0x08, 0x53, 0x08, 0x55, 0x08, + 0x44, 0x08, 0x44, 0x08, 0x29, 0x08, 0x2b, 0x08, 0x03, 0x08, 0x04, 0x08, + 0xd5, 0x07, 0xd6, 0x07, 0x9b, 0x07, 0x9c, 0x07, 0x59, 0x07, 0x5a, 0x07, + 0x0d, 0x07, 0x10, 0x07, 0xb9, 0x06, 0xba, 0x06, 0x60, 0x06, 0x60, 0x06, + 0xf7, 0x05, 0xfa, 0x05, 0x90, 0x05, 0x90, 0x05, 0x1d, 0x05, 0x1f, 0x05, + 0xa9, 0x04, 0xa9, 0x04, 0x2d, 0x04, 0x2f, 0x04, 0xae, 0x03, 0xb0, 0x03, + 0x2b, 0x03, 0x2b, 0x03, 0xa3, 0x02, 0xa4, 0x02, 0x18, 0x02, 0x19, 0x02, + 0x8d, 0x01, 0x90, 0x01, 0xfe, 0x00, 0x00, 0x01, 0x71, 0x00, 0x72, 0x00, + 0xe1, 0xff, 0xe3, 0xff, 0x52, 0xff, 0x54, 0xff, 0xc7, 0xfe, 0xc8, 0xfe, + 0x35, 0xfe, 0x39, 0xfe, 0xaf, 0xfd, 0xad, 0xfd, 0x26, 0xfd, 0x29, 0xfd, + 0xa0, 0xfc, 0xa0, 0xfc, 0x1f, 0xfc, 0x24, 0xfc, 0xa2, 0xfb, 0xa3, 0xfb, + 0x2c, 0xfb, 0x2e, 0xfb, 0xb8, 0xfa, 0xba, 0xfa, 0x4d, 0xfa, 0x4b, 0xfa, + 0xe5, 0xf9, 0xe7, 0xf9, 0x84, 0xf9, 0x86, 0xf9, 0x2a, 0xf9, 0x2b, 0xf9, + 0xdb, 0xf8, 0xdd, 0xf8, 0x90, 0xf8, 0x91, 0xf8, 0x53, 0xf8, 0x54, 0xf8, + 0x1b, 0xf8, 0x1e, 0xf8, 0xee, 0xf7, 0xf0, 0xf7, 0xcd, 0xf7, 0xcf, 0xf7, + 0xb2, 0xf7, 0xb3, 0xf7, 0xa4, 0xf7, 0xa7, 0xf7, 0x9f, 0xf7, 0xa1, 0xf7, + 0xa4, 0xf7, 0xa6, 0xf7, 0xb7, 0xf7, 0xba, 0xf7, 0xd1, 0xf7, 0xd1, 0xf7, + 0xf8, 0xf7, 0xfc, 0xf7, 0x29, 0xf8, 0x2a, 0xf8, 0x64, 0xf8, 0x66, 0xf8, + 0xa9, 0xf8, 0xac, 0xf8, 0xf5, 0xf8, 0xf6, 0xf8, 0x4c, 0xf9, 0x4f, 0xf9, + 0xa8, 0xf9, 0xa9, 0xf9, 0x0e, 0xfa, 0x0f, 0xfa, 0x7a, 0xfa, 0x7b, 0xfa, + 0xea, 0xfa, 0xec, 0xfa, 0x63, 0xfb, 0x63, 0xfb, 0xe0, 0xfb, 0xe1, 0xfb, + 0x62, 0xfc, 0x63, 0xfc, 0xe8, 0xfc, 0xe9, 0xfc, 0x70, 0xfd, 0x72, 0xfd, + 0xfd, 0xfd, 0xff, 0xfd, 0x8c, 0xfe, 0x8b, 0xfe, 0x19, 0xff, 0x1d, 0xff, + 0xab, 0xff, 0xaa, 0xff, 0x3a, 0x00, 0x3c, 0x00, 0xcc, 0x00, 0xcd, 0x00, + 0x5a, 0x01, 0x5b, 0x01, 0xe8, 0x01, 0xea, 0x01, 0x71, 0x02, 0x74, 0x02, + 0xfd, 0x02, 0xfd, 0x02, 0x80, 0x03, 0x82, 0x03, 0x02, 0x04, 0x04, 0x04, + 0x7e, 0x04, 0x7f, 0x04, 0xf5, 0x04, 0xf6, 0x04, 0x69, 0x05, 0x69, 0x05, + 0xd2, 0x05, 0xd4, 0x05, 0x3a, 0x06, 0x3b, 0x06, 0x98, 0x06, 0x99, 0x06, + 0xed, 0x06, 0xef, 0x06, 0x3e, 0x07, 0x3d, 0x07, 0x83, 0x07, 0x85, 0x07, + 0xc0, 0x07, 0xc1, 0x07, 0xf3, 0x07, 0xf5, 0x07, 0x1d, 0x08, 0x1d, 0x08, + 0x3d, 0x08, 0x3f, 0x08, 0x53, 0x08, 0x54, 0x08, 0x5f, 0x08, 0x60, 0x08, + 0x5e, 0x08, 0x61, 0x08, 0x56, 0x08, 0x57, 0x08, 0x41, 0x08, 0x43, 0x08, + 0x23, 0x08, 0x24, 0x08, 0xfb, 0x07, 0xfa, 0x07, 0xc5, 0x07, 0xc8, 0x07, + 0x8b, 0x07, 0x8b, 0x07, 0x41, 0x07, 0x44, 0x07, 0xf6, 0x06, 0xf5, 0x06, + 0x9b, 0x06, 0x9d, 0x06, 0x3d, 0x06, 0x3e, 0x06, 0xd7, 0x05, 0xd7, 0x05, + 0x68, 0x05, 0x6a, 0x05, 0xf6, 0x04, 0xf7, 0x04, 0x7d, 0x04, 0x80, 0x04, + 0x01, 0x04, 0x02, 0x04, 0x7e, 0x03, 0x7f, 0x03, 0xfa, 0x02, 0xfc, 0x02, + 0x72, 0x02, 0x73, 0x02, 0xe7, 0x01, 0xe9, 0x01, 0x5b, 0x01, 0x5c, 0x01, + 0xcc, 0x00, 0xce, 0x00, 0x3d, 0x00, 0x3f, 0x00, 0xae, 0xff, 0xb0, 0xff, + 0x1e, 0xff, 0x20, 0xff, 0x94, 0xfe, 0x96, 0xfe, 0x05, 0xfe, 0x05, 0xfe, + 0x7b, 0xfd, 0x7e, 0xfd, 0xf7, 0xfc, 0xf9, 0xfc, 0x6f, 0xfc, 0x70, 0xfc, + 0xf2, 0xfb, 0xf5, 0xfb, 0x76, 0xfb, 0x77, 0xfb, 0x00, 0xfb, 0x04, 0xfb, + 0x92, 0xfa, 0x94, 0xfa, 0x24, 0xfa, 0x26, 0xfa, 0xc1, 0xf9, 0xc4, 0xf9, + 0x63, 0xf9, 0x64, 0xf9, 0x0d, 0xf9, 0x10, 0xf9, 0xbd, 0xf8, 0xbe, 0xf8, + 0x77, 0xf8, 0x7b, 0xf8, 0x3c, 0xf8, 0x3d, 0xf8, 0x07, 0xf8, 0x09, 0xf8, + 0xe0, 0xf7, 0xe2, 0xf7, 0xbe, 0xf7, 0xbf, 0xf7, 0xa9, 0xf7, 0xab, 0xf7, + 0x9e, 0xf7, 0x9f, 0xf7, 0x9d, 0xf7, 0x9e, 0xf7, 0xa7, 0xf7, 0xa9, 0xf7, + 0xbb, 0xf7, 0xbc, 0xf7, 0xd9, 0xf7, 0xda, 0xf7, 0x04, 0xf8, 0x06, 0xf8, + 0x38, 0xf8, 0x39, 0xf8, 0x74, 0xf8, 0x77, 0xf8, 0xbd, 0xf8, 0xbd, 0xf8, + 0x0d, 0xf9, 0x0e, 0xf9, 0x64, 0xf9, 0x64, 0xf9, 0xc6, 0xf9, 0xc7, 0xf9, + 0x2f, 0xfa, 0x30, 0xfa, 0x9d, 0xfa, 0x9f, 0xfa, 0x13, 0xfb, 0x13, 0xfb, + 0x8b, 0xfb, 0x8c, 0xfb, 0x0c, 0xfc, 0x0e, 0xfc, 0x8f, 0xfc, 0x8f, 0xfc, + 0x16, 0xfd, 0x19, 0xfd, 0xa2, 0xfd, 0xa2, 0xfd, 0x2e, 0xfe, 0x2f, 0xfe, + 0xbd, 0xfe, 0xbf, 0xfe, 0x4d, 0xff, 0x4e, 0xff, 0xdf, 0xff, 0xe1, 0xff, + 0x70, 0x00, 0x71, 0x00, 0x01, 0x01, 0x02, 0x01, 0x8f, 0x01, 0x91, 0x01, + 0x1b, 0x02, 0x1c, 0x02, 0xa7, 0x02, 0xa7, 0x02, 0x2d, 0x03, 0x30, 0x03, + 0xb4, 0x03, 0xb3, 0x03, 0x31, 0x04, 0x33, 0x04, 0xad, 0x04, 0xae, 0x04, + 0x22, 0x05, 0x22, 0x05, 0x91, 0x05, 0x93, 0x05, 0xff, 0x05, 0xfe, 0x05, + 0x5e, 0x06, 0x61, 0x06, 0xbb, 0x06, 0xbc, 0x06, 0x11, 0x07, 0x11, 0x07, + 0x58, 0x07, 0x5c, 0x07, 0x9f, 0x07, 0x9f, 0x07, 0xd5, 0x07, 0xd9, 0x07, + 0x07, 0x08, 0x08, 0x08, 0x2d, 0x08, 0x2e, 0x08, 0x49, 0x08, 0x4c, 0x08, + 0x5c, 0x08, 0x5d, 0x08, 0x62, 0x08, 0x65, 0x08, 0x61, 0x08, 0x62, 0x08, + 0x51, 0x08, 0x54, 0x08, 0x3b, 0x08, 0x3c, 0x08, 0x17, 0x08, 0x19, 0x08, + 0xe9, 0x07, 0xeb, 0x07, 0xb2, 0x07, 0xb5, 0x07, 0x71, 0x07, 0x73, 0x07, + 0x29, 0x07, 0x2b, 0x07, 0xd4, 0x06, 0xd6, 0x06, 0x7b, 0x06, 0x7e, 0x06, + 0x1b, 0x06, 0x1d, 0x06, 0xb0, 0x05, 0xb3, 0x05, 0x45, 0x05, 0x47, 0x05, + 0xcd, 0x04, 0xcf, 0x04, 0x55, 0x04, 0x58, 0x04, 0xd6, 0x03, 0xd7, 0x03, + 0x51, 0x03, 0x54, 0x03, 0xcc, 0x02, 0xd0, 0x02, 0x41, 0x02, 0x44, 0x02, + 0xb8, 0x01, 0xb9, 0x01, 0x28, 0x01, 0x2c, 0x01, 0x9d, 0x00, 0x9c, 0x00, + 0x0b, 0x00, 0x0f, 0x00, 0x7d, 0xff, 0x7f, 0xff, 0xee, 0xfe, 0xf1, 0xfe, + 0x60, 0xfe, 0x62, 0xfe, 0xd4, 0xfd, 0xd7, 0xfd, 0x4b, 0xfd, 0x4d, 0xfd, + 0xc5, 0xfc, 0xc6, 0xfc, 0x45, 0xfc, 0x48, 0xfc, 0xc2, 0xfb, 0xc4, 0xfb, + 0x4b, 0xfb, 0x4d, 0xfb, 0xd8, 0xfa, 0xda, 0xfa, 0x68, 0xfa, 0x6b, 0xfa, + 0x00, 0xfa, 0x02, 0xfa, 0x9c, 0xf9, 0x9d, 0xf9, 0x40, 0xf9, 0x44, 0xf9, + 0xed, 0xf8, 0xed, 0xf8, 0xa0, 0xf8, 0xa4, 0xf8, 0x5e, 0xf8, 0x61, 0xf8, + 0x26, 0xf8, 0x25, 0xf8, 0xf3, 0xf7, 0xf7, 0xf7, 0xcf, 0xf7, 0xcf, 0xf7, + 0xb1, 0xf7, 0xb4, 0xf7, 0xa0, 0xf7, 0xa1, 0xf7, 0x97, 0xf7, 0x99, 0xf7, + 0x99, 0xf7, 0x9b, 0xf7, 0xa7, 0xf7, 0xa9, 0xf7, 0xbd, 0xf7, 0xc0, 0xf7, + 0xe2, 0xf7, 0xe4, 0xf7, 0x0e, 0xf8, 0x10, 0xf8, 0x46, 0xf8, 0x48, 0xf8, + 0x88, 0xf8, 0x8a, 0xf8, 0xd2, 0xf8, 0xd4, 0xf8, 0x28, 0xf9, 0x28, 0xf9, + 0x81, 0xf9, 0x83, 0xf9, 0xe7, 0xf9, 0xe8, 0xf9, 0x4f, 0xfa, 0x51, 0xfa, + 0xc2, 0xfa, 0xc4, 0xfa, 0x37, 0xfb, 0x37, 0xfb, 0xb5, 0xfb, 0xb7, 0xfb, + 0x36, 0xfc, 0x38, 0xfc, 0xbd, 0xfc, 0xbd, 0xfc, 0x46, 0xfd, 0x47, 0xfd, + 0xd2, 0xfd, 0xd2, 0xfd, 0x61, 0xfe, 0x62, 0xfe, 0xf0, 0xfe, 0xf2, 0xfe, + 0x82, 0xff, 0x81, 0xff, 0x12, 0x00, 0x15, 0x00, 0xa4, 0x00, 0xa5, 0x00, + 0x35, 0x01, 0x36, 0x01, 0xc3, 0x01, 0xc5, 0x01, 0x51, 0x02, 0x51, 0x02, + 0xd9, 0x02, 0xda, 0x02, 0x61, 0x03, 0x61, 0x03, 0xe2, 0x03, 0xe4, 0x03, + 0x62, 0x04, 0x61, 0x04, 0xdb, 0x04, 0xdd, 0x04, 0x4e, 0x05, 0x50, 0x05, + 0xbe, 0x05, 0xbe, 0x05, 0x25, 0x06, 0x26, 0x06, 0x83, 0x06, 0x85, 0x06, + 0xdf, 0x06, 0xe0, 0x06, 0x2f, 0x07, 0x30, 0x07, 0x77, 0x07, 0x78, 0x07, + 0xb8, 0x07, 0xba, 0x07, 0xee, 0x07, 0xee, 0x07, 0x1a, 0x08, 0x1c, 0x08, + 0x3f, 0x08, 0x3f, 0x08, 0x55, 0x08, 0x57, 0x08, 0x63, 0x08, 0x67, 0x08, + 0x68, 0x08, 0x68, 0x08, 0x60, 0x08, 0x62, 0x08, 0x4f, 0x08, 0x50, 0x08, + 0x34, 0x08, 0x33, 0x08, 0x0c, 0x08, 0x0e, 0x08, 0xdc, 0x07, 0xdd, 0x07, + 0x9e, 0x07, 0xa1, 0x07, 0x5e, 0x07, 0x5e, 0x07, 0x0c, 0x07, 0x0d, 0x07, + 0xba, 0x06, 0xbd, 0x06, 0x5b, 0x06, 0x5b, 0x06, 0xf6, 0x05, 0xf7, 0x05, + 0x8c, 0x05, 0x8e, 0x05, 0x1a, 0x05, 0x1b, 0x05, 0xa5, 0x04, 0xa7, 0x04, + 0x26, 0x04, 0x28, 0x04, 0xa8, 0x03, 0xa9, 0x03, 0x22, 0x03, 0x24, 0x03, + 0x9b, 0x02, 0x9c, 0x02, 0x10, 0x02, 0x12, 0x02, 0x84, 0x01, 0x84, 0x01, + 0xf7, 0x00, 0xf8, 0x00, 0x64, 0x00, 0x67, 0x00, 0xd7, 0xff, 0xd8, 0xff, + 0x47, 0xff, 0x49, 0xff, 0xb8, 0xfe, 0xb9, 0xfe, 0x2b, 0xfe, 0x2c, 0xfe, + 0xa0, 0xfd, 0xa2, 0xfd, 0x19, 0xfd, 0x18, 0xfd, 0x92, 0xfc, 0x95, 0xfc, + 0x11, 0xfc, 0x11, 0xfc, 0x94, 0xfb, 0x96, 0xfb, 0x1d, 0xfb, 0x1e, 0xfb, + 0xa9, 0xfa, 0xa9, 0xfa, 0x3c, 0xfa, 0x3e, 0xfa, 0xd4, 0xf9, 0xd5, 0xf9, + 0x74, 0xf9, 0x75, 0xf9, 0x1c, 0xf9, 0x1d, 0xf9, 0xca, 0xf8, 0xcb, 0xf8, + 0x83, 0xf8, 0x84, 0xf8, 0x42, 0xf8, 0x43, 0xf8, 0x0e, 0xf8, 0x0f, 0xf8, + 0xe0, 0xf7, 0xe1, 0xf7, 0xbe, 0xf7, 0xbf, 0xf7, 0xa7, 0xf7, 0xa7, 0xf7, + 0x96, 0xf7, 0x98, 0xf7, 0x93, 0xf7, 0x95, 0xf7, 0x9b, 0xf7, 0x9b, 0xf7, + 0xab, 0xf7, 0xae, 0xf7, 0xcb, 0xf7, 0xca, 0xf7, 0xf0, 0xf7, 0xf3, 0xf7, + 0x24, 0xf8, 0x23, 0xf8, 0x60, 0xf8, 0x61, 0xf8, 0xa6, 0xf8, 0xa6, 0xf8, + 0xf2, 0xf8, 0xf4, 0xf8, 0x4a, 0xf9, 0x4c, 0xf9, 0xa9, 0xf9, 0xab, 0xf9, + 0x0f, 0xfa, 0x0e, 0xfa, 0x7d, 0xfa, 0x7f, 0xfa, 0xf1, 0xfa, 0xef, 0xfa, + 0x68, 0xfb, 0x6b, 0xfb, 0xeb, 0xfb, 0xe8, 0xfb, 0x6a, 0xfc, 0x6c, 0xfc, + 0xf4, 0xfc, 0xf4, 0xfc, 0x7e, 0xfd, 0x7e, 0xfd, 0x0b, 0xfe, 0x0c, 0xfe, + 0x9a, 0xfe, 0x9b, 0xfe, 0x2a, 0xff, 0x2a, 0xff, 0xbb, 0xff, 0xbc, 0xff, + 0x4e, 0x00, 0x4d, 0x00, 0xde, 0x00, 0xdf, 0x00, 0x6e, 0x01, 0x6f, 0x01, + 0xfc, 0x01, 0xfd, 0x01, 0x87, 0x02, 0x88, 0x02, 0x10, 0x03, 0x11, 0x03, + 0x95, 0x03, 0x96, 0x03, 0x16, 0x04, 0x15, 0x04, 0x92, 0x04, 0x94, 0x04, + 0x0a, 0x05, 0x0b, 0x05, 0x7a, 0x05, 0x7c, 0x05, 0xe6, 0x05, 0xe5, 0x05, + 0x4c, 0x06, 0x4e, 0x06, 0xa9, 0x06, 0xa9, 0x06, 0xfe, 0x06, 0x00, 0x07, + 0x4c, 0x07, 0x4c, 0x07, 0x90, 0x07, 0x93, 0x07, 0xcf, 0x07, 0xce, 0x07, + 0xff, 0x07, 0x03, 0x08, 0x29, 0x08, 0x2a, 0x08, 0x4a, 0x08, 0x4b, 0x08, + 0x5b, 0x08, 0x5d, 0x08, 0x67, 0x08, 0x68, 0x08, 0x66, 0x08, 0x68, 0x08, + 0x5a, 0x08, 0x5c, 0x08, 0x47, 0x08, 0x49, 0x08, 0x25, 0x08, 0x28, 0x08, + 0xfb, 0x07, 0xfc, 0x07, 0xc8, 0x07, 0xc9, 0x07, 0x86, 0x07, 0x89, 0x07, + 0x43, 0x07, 0x44, 0x07, 0xf0, 0x06, 0xf3, 0x06, 0x97, 0x06, 0x99, 0x06, + 0x38, 0x06, 0x3c, 0x06, 0xce, 0x05, 0xce, 0x05, 0x63, 0x05, 0x64, 0x05, + 0xed, 0x04, 0xef, 0x04, 0x73, 0x04, 0x73, 0x04, 0xf5, 0x03, 0xf8, 0x03, + 0x72, 0x03, 0x72, 0x03, 0xeb, 0x02, 0xef, 0x02, 0x62, 0x02, 0x63, 0x02, + 0xd7, 0x01, 0xd6, 0x01, 0x47, 0x01, 0x48, 0x01, 0xb9, 0x00, 0xb9, 0x00, + 0x29, 0x00, 0x2a, 0x00, 0x9a, 0xff, 0x9a, 0xff, 0x0a, 0xff, 0x0a, 0xff, + 0x7b, 0xfe, 0x7c, 0xfe, 0xee, 0xfd, 0xf0, 0xfd, 0x63, 0xfd, 0x63, 0xfd, + 0xde, 0xfc, 0xde, 0xfc, 0x57, 0xfc, 0x58, 0xfc, 0xdb, 0xfb, 0xdb, 0xfb, + 0x5c, 0xfb, 0x5d, 0xfb, 0xe6, 0xfa, 0xe8, 0xfa, 0x78, 0xfa, 0x78, 0xfa, + 0x0b, 0xfa, 0x0d, 0xfa, 0xa6, 0xf9, 0xa8, 0xf9, 0x4c, 0xf9, 0x4b, 0xf9, + 0xf4, 0xf8, 0xf6, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, 0x62, 0xf8, 0x63, 0xf8, + 0x29, 0xf8, 0x2a, 0xf8, 0xf6, 0xf7, 0xf6, 0xf7, 0xcf, 0xf7, 0xd1, 0xf7, + 0xb2, 0xf7, 0xb1, 0xf7, 0x9b, 0xf7, 0x9c, 0xf7, 0x93, 0xf7, 0x93, 0xf7, + 0x95, 0xf7, 0x95, 0xf7, 0xa0, 0xf7, 0xa1, 0xf7, 0xb8, 0xf7, 0xb7, 0xf7, + 0xda, 0xf7, 0xd9, 0xf7, 0x06, 0xf8, 0x06, 0xf8, 0x3b, 0xf8, 0x3e, 0xf8, + 0x7d, 0xf8, 0x7c, 0xf8, 0xc6, 0xf8, 0xc7, 0xf8, 0x18, 0xf9, 0x17, 0xf9, + 0x72, 0xf9, 0x74, 0xf9, 0xd4, 0xf9, 0xd5, 0xf9, 0x3e, 0xfa, 0x3d, 0xfa, + 0xae, 0xfa, 0xaf, 0xfa, 0x23, 0xfb, 0x24, 0xfb, 0xa0, 0xfb, 0x9f, 0xfb, + 0x21, 0xfc, 0x22, 0xfc, 0xa5, 0xfc, 0xa5, 0xfc, 0x2d, 0xfd, 0x2d, 0xfd, + 0xba, 0xfd, 0xba, 0xfd, 0x46, 0xfe, 0x47, 0xfe, 0xd7, 0xfe, 0xd6, 0xfe, + 0x68, 0xff, 0x68, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0x8c, 0x00, 0x8e, 0x00, + 0x1c, 0x01, 0x1a, 0x01, 0xab, 0x01, 0xae, 0x01, 0x39, 0x02, 0x38, 0x02, + 0xc5, 0x02, 0xc4, 0x02, 0x4a, 0x03, 0x4a, 0x03, 0xd1, 0x03, 0xd0, 0x03, + 0x4e, 0x04, 0x4e, 0x04, 0xca, 0x04, 0xc9, 0x04, 0x40, 0x05, 0x3f, 0x05, + 0xad, 0x05, 0xae, 0x05, 0x18, 0x06, 0x17, 0x06, 0x79, 0x06, 0x7a, 0x06, + 0xd3, 0x06, 0xd1, 0x06, 0x26, 0x07, 0x27, 0x07, 0x6f, 0x07, 0x6e, 0x07, + 0xb1, 0x07, 0xb2, 0x07, 0xe8, 0x07, 0xe8, 0x07, 0x18, 0x08, 0x18, 0x08, + 0x3d, 0x08, 0x3c, 0x08, 0x54, 0x08, 0x55, 0x08, 0x66, 0x08, 0x66, 0x08, + 0x6b, 0x08, 0x6c, 0x08, 0x66, 0x08, 0x66, 0x08, 0x55, 0x08, 0x57, 0x08, + 0x3d, 0x08, 0x3c, 0x08, 0x16, 0x08, 0x16, 0x08, 0xe8, 0x07, 0xe9, 0x07, + 0xad, 0x07, 0xad, 0x07, 0x6a, 0x07, 0x6a, 0x07, 0x20, 0x07, 0x20, 0x07, + 0xc8, 0x06, 0xc8, 0x06, 0x6d, 0x06, 0x6d, 0x06, 0x07, 0x06, 0x07, 0x06, + 0x9d, 0x05, 0x9d, 0x05, 0x2d, 0x05, 0x2c, 0x05, 0xb4, 0x04, 0xb5, 0x04, + 0x3b, 0x04, 0x39, 0x04, 0xb8, 0x03, 0xb8, 0x03, 0x35, 0x03, 0x37, 0x03, + 0xae, 0x02, 0xac, 0x02, 0x20, 0x02, 0x20, 0x02, 0x95, 0x01, 0x95, 0x01, + 0x07, 0x01, 0x07, 0x01, 0x76, 0x00, 0x78, 0x00, 0xe7, 0xff, 0xe7, 0xff, + 0x56, 0xff, 0x57, 0xff, 0xc7, 0xfe, 0xc6, 0xfe, 0x3a, 0xfe, 0x3a, 0xfe, + 0xae, 0xfd, 0xad, 0xfd, 0x23, 0xfd, 0x26, 0xfd, 0x9f, 0xfc, 0x9e, 0xfc, + 0x1c, 0xfc, 0x1e, 0xfc, 0xa0, 0xfb, 0xa0, 0xfb, 0x28, 0xfb, 0x29, 0xfb, + 0xb4, 0xfa, 0xb5, 0xfa, 0x47, 0xfa, 0x48, 0xfa, 0xde, 0xf9, 0xde, 0xf9, + 0x7d, 0xf9, 0x7f, 0xf9, 0x25, 0xf9, 0x25, 0xf9, 0xd3, 0xf8, 0xd5, 0xf8, + 0x89, 0xf8, 0x88, 0xf8, 0x4a, 0xf8, 0x4b, 0xf8, 0x12, 0xf8, 0x13, 0xf8, + 0xe5, 0xf7, 0xe6, 0xf7, 0xc4, 0xf7, 0xc2, 0xf7, 0xa8, 0xf7, 0xaa, 0xf7, + 0x9b, 0xf7, 0x9a, 0xf7, 0x95, 0xf7, 0x95, 0xf7, 0x9b, 0xf7, 0x9e, 0xf7, + 0xac, 0xf7, 0xab, 0xf7, 0xc8, 0xf7, 0xc9, 0xf7, 0xec, 0xf7, 0xed, 0xf7, + 0x1f, 0xf8, 0x1e, 0xf8, 0x5a, 0xf8, 0x59, 0xf8, 0x9d, 0xf8, 0x9e, 0xf8, + 0xeb, 0xf8, 0xea, 0xf8, 0x40, 0xf9, 0x42, 0xf9, 0xa0, 0xf9, 0x9f, 0xf9, + 0x06, 0xfa, 0x06, 0xfa, 0x71, 0xfa, 0x73, 0xfa, 0xe7, 0xfa, 0xe5, 0xfa, + 0x5d, 0xfb, 0x5f, 0xfb, 0xdb, 0xfb, 0xdc, 0xfb, 0x5f, 0xfc, 0x60, 0xfc, + 0xe6, 0xfc, 0xe6, 0xfc, 0x71, 0xfd, 0x71, 0xfd, 0xfe, 0xfd, 0xfc, 0xfd, + 0x8a, 0xfe, 0x8e, 0xfe, 0x1d, 0xff, 0x1b, 0xff, 0xae, 0xff, 0xb0, 0xff, + 0x3f, 0x00, 0x3f, 0x00, 0xd2, 0x00, 0xd0, 0x00, 0x61, 0x01, 0x62, 0x01, + 0xef, 0x01, 0xef, 0x01, 0x7d, 0x02, 0x7d, 0x02, 0x03, 0x03, 0x04, 0x03, + 0x8b, 0x03, 0x8b, 0x03, 0x0d, 0x04, 0x0d, 0x04, 0x88, 0x04, 0x8a, 0x04, + 0x02, 0x05, 0x00, 0x05, 0x71, 0x05, 0x73, 0x05, 0xe0, 0x05, 0xdf, 0x05, + 0x44, 0x06, 0x43, 0x06, 0xa3, 0x06, 0xa4, 0x06, 0xf9, 0x06, 0xf7, 0x06, + 0x47, 0x07, 0x48, 0x07, 0x8c, 0x07, 0x8b, 0x07, 0xca, 0x07, 0xca, 0x07, + 0xfb, 0x07, 0xfb, 0x07, 0x25, 0x08, 0x25, 0x08, 0x44, 0x08, 0x43, 0x08, + 0x58, 0x08, 0x5a, 0x08, 0x61, 0x08, 0x61, 0x08, 0x63, 0x08, 0x64, 0x08, + 0x57, 0x08, 0x58, 0x08, 0x41, 0x08, 0x42, 0x08, 0x23, 0x08, 0x22, 0x08, + 0xf6, 0x07, 0xf6, 0x07, 0xc5, 0x07, 0xc3, 0x07, 0x84, 0x07, 0x86, 0x07, + 0x3f, 0x07, 0x3c, 0x07, 0xed, 0x06, 0xf0, 0x06, 0x97, 0x06, 0x96, 0x06, + 0x36, 0x06, 0x37, 0x06, 0xd0, 0x05, 0xd0, 0x05, 0x61, 0x05, 0x61, 0x05, + 0xee, 0x04, 0xee, 0x04, 0x76, 0x04, 0x77, 0x04, 0xf8, 0x03, 0xf8, 0x03, + 0x78, 0x03, 0x76, 0x03, 0xef, 0x02, 0xf2, 0x02, 0x6a, 0x02, 0x69, 0x02, + 0xdc, 0x01, 0xdd, 0x01, 0x4f, 0x01, 0x51, 0x01, 0xc3, 0x00, 0xc2, 0x00, + 0x30, 0x00, 0x34, 0x00, 0xa6, 0xff, 0xa4, 0xff, 0x12, 0xff, 0x15, 0xff, + 0x87, 0xfe, 0x87, 0xfe, 0xfa, 0xfd, 0xfa, 0xfd, 0x70, 0xfd, 0x6f, 0xfd, + 0xea, 0xfc, 0xea, 0xfc, 0x64, 0xfc, 0x66, 0xfc, 0xe8, 0xfb, 0xe8, 0xfb, + 0x6c, 0xfb, 0x6c, 0xfb, 0xf7, 0xfa, 0xf7, 0xfa, 0x85, 0xfa, 0x87, 0xfa, + 0x1a, 0xfa, 0x1b, 0xfa, 0xb8, 0xf9, 0xb7, 0xf9, 0x58, 0xf9, 0x59, 0xf9, + 0x06, 0xf9, 0x06, 0xf9, 0xb6, 0xf8, 0xb6, 0xf8, 0x72, 0xf8, 0x74, 0xf8, + 0x38, 0xf8, 0x38, 0xf8, 0x03, 0xf8, 0x05, 0xf8, 0xde, 0xf7, 0xde, 0xf7, + 0xbd, 0xf7, 0xbe, 0xf7, 0xaa, 0xf7, 0xab, 0xf7, 0xa0, 0xf7, 0xa0, 0xf7, + 0x9f, 0xf7, 0xa1, 0xf7, 0xac, 0xf7, 0xad, 0xf7, 0xc0, 0xf7, 0xc1, 0xf7, + 0xe3, 0xf7, 0xe4, 0xf7, 0x0d, 0xf8, 0x0c, 0xf8, 0x40, 0xf8, 0x43, 0xf8, + 0x81, 0xf8, 0x81, 0xf8, 0xc8, 0xf8, 0xc7, 0xf8, 0x19, 0xf9, 0x1a, 0xf9, + 0x73, 0xf9, 0x72, 0xf9, 0xd5, 0xf9, 0xd6, 0xf9, 0x3e, 0xfa, 0x3e, 0xfa, + 0xac, 0xfa, 0xae, 0xfa, 0x23, 0xfb, 0x23, 0xfb, 0x9e, 0xfb, 0x9f, 0xfb, + 0x1e, 0xfc, 0x1e, 0xfc, 0xa3, 0xfc, 0xa3, 0xfc, 0x2b, 0xfd, 0x2b, 0xfd, + 0xb5, 0xfd, 0xb5, 0xfd, 0x45, 0xfe, 0x45, 0xfe, 0xd0, 0xfe, 0xd1, 0xfe, + 0x64, 0xff, 0x64, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0x86, 0x00, 0x84, 0x00, + 0x14, 0x01, 0x16, 0x01, 0xa1, 0x01, 0xa4, 0x01, 0x2f, 0x02, 0x30, 0x02, + 0xb8, 0x02, 0xba, 0x02, 0x40, 0x03, 0x40, 0x03, 0xc3, 0x03, 0xc4, 0x03, + 0x43, 0x04, 0x43, 0x04, 0xbd, 0x04, 0xbd, 0x04, 0x30, 0x05, 0x30, 0x05, + 0x9f, 0x05, 0xa1, 0x05, 0x09, 0x06, 0x07, 0x06, 0x68, 0x06, 0x6b, 0x06, + 0xc5, 0x06, 0xc3, 0x06, 0x13, 0x07, 0x17, 0x07, 0x5f, 0x07, 0x5e, 0x07, + 0xa1, 0x07, 0xa1, 0x07, 0xd5, 0x07, 0xd8, 0x07, 0x06, 0x08, 0x05, 0x08, + 0x29, 0x08, 0x2b, 0x08, 0x42, 0x08, 0x43, 0x08, 0x53, 0x08, 0x53, 0x08, + 0x57, 0x08, 0x5a, 0x08, 0x53, 0x08, 0x53, 0x08, 0x44, 0x08, 0x45, 0x08, + 0x29, 0x08, 0x2a, 0x08, 0x06, 0x08, 0x05, 0x08, 0xd4, 0x07, 0xd7, 0x07, + 0x9e, 0x07, 0x9c, 0x07, 0x5c, 0x07, 0x5e, 0x07, 0x11, 0x07, 0x11, 0x07, + 0xc0, 0x06, 0xc0, 0x06, 0x63, 0x06, 0x64, 0x06, 0x02, 0x06, 0x02, 0x06, + 0x97, 0x05, 0x98, 0x05, 0x29, 0x05, 0x29, 0x05, 0xb4, 0x04, 0xb5, 0x04, + 0x37, 0x04, 0x39, 0x04, 0xba, 0x03, 0xbb, 0x03, 0x36, 0x03, 0x37, 0x03, + 0xb1, 0x02, 0xb1, 0x02, 0x27, 0x02, 0x28, 0x02, 0x9b, 0x01, 0x9c, 0x01, + 0x0f, 0x01, 0x0e, 0x01, 0x7e, 0x00, 0x7f, 0x00, 0xf1, 0xff, 0xf2, 0xff, + 0x62, 0xff, 0x62, 0xff, 0xd3, 0xfe, 0xd3, 0xfe, 0x48, 0xfe, 0x49, 0xfe, + 0xbb, 0xfd, 0xbc, 0xfd, 0x36, 0xfd, 0x35, 0xfd, 0xb0, 0xfc, 0xb1, 0xfc, + 0x2e, 0xfc, 0x2c, 0xfc, 0xb3, 0xfb, 0xb3, 0xfb, 0x39, 0xfb, 0x3a, 0xfb, + 0xc8, 0xfa, 0xc8, 0xfa, 0x5b, 0xfa, 0x5a, 0xfa, 0xf2, 0xf9, 0xf3, 0xf9, + 0x95, 0xf9, 0x92, 0xf9, 0x36, 0xf9, 0x38, 0xf9, 0xe9, 0xf8, 0xe9, 0xf8, + 0x9d, 0xf8, 0x9c, 0xf8, 0x5e, 0xf8, 0x5f, 0xf8, 0x28, 0xf8, 0x27, 0xf8, + 0xf9, 0xf7, 0xfa, 0xf7, 0xd8, 0xf7, 0xd7, 0xf7, 0xbc, 0xf7, 0xbd, 0xf7, + 0xaf, 0xf7, 0xaf, 0xf7, 0xa7, 0xf7, 0xa7, 0xf7, 0xaf, 0xf7, 0xaf, 0xf7, + 0xbe, 0xf7, 0xbd, 0xf7, 0xd8, 0xf7, 0xd9, 0xf7, 0xfe, 0xf7, 0xfd, 0xf7, + 0x2e, 0xf8, 0x2e, 0xf8, 0x66, 0xf8, 0x67, 0xf8, 0xad, 0xf8, 0xab, 0xf8, + 0xf5, 0xf8, 0xf7, 0xf8, 0x4e, 0xf9, 0x4c, 0xf9, 0xa8, 0xf9, 0xa9, 0xf9, + 0x0d, 0xfa, 0x0d, 0xfa, 0x7b, 0xfa, 0x7a, 0xfa, 0xe8, 0xfa, 0xe9, 0xfa, + 0x63, 0xfb, 0x62, 0xfb, 0xde, 0xfb, 0xde, 0xfb, 0x5e, 0xfc, 0x5d, 0xfc, + 0xe3, 0xfc, 0xe4, 0xfc, 0x6b, 0xfd, 0x6b, 0xfd, 0xf6, 0xfd, 0xf5, 0xfd, + 0x85, 0xfe, 0x84, 0xfe, 0x13, 0xff, 0x13, 0xff, 0xa4, 0xff, 0xa4, 0xff, + 0x33, 0x00, 0x32, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0x52, 0x01, 0x51, 0x01, + 0xdd, 0x01, 0xde, 0x01, 0x69, 0x02, 0x69, 0x02, 0xf1, 0x02, 0xef, 0x02, + 0x73, 0x03, 0x74, 0x03, 0xf6, 0x03, 0xf5, 0x03, 0x70, 0x04, 0x70, 0x04, + 0xe8, 0x04, 0xe8, 0x04, 0x5a, 0x05, 0x59, 0x05, 0xc2, 0x05, 0xc5, 0x05, + 0x2b, 0x06, 0x2a, 0x06, 0x86, 0x06, 0x87, 0x06, 0xdf, 0x06, 0xdf, 0x06, + 0x2c, 0x07, 0x2c, 0x07, 0x71, 0x07, 0x72, 0x07, 0xb0, 0x07, 0xb0, 0x07, + 0xe0, 0x07, 0xe1, 0x07, 0x0f, 0x08, 0x0f, 0x08, 0x2c, 0x08, 0x2c, 0x08, + 0x42, 0x08, 0x43, 0x08, 0x50, 0x08, 0x4f, 0x08, 0x4f, 0x08, 0x50, 0x08, + 0x4a, 0x08, 0x49, 0x08, 0x33, 0x08, 0x33, 0x08, 0x17, 0x08, 0x17, 0x08, + 0xef, 0x07, 0xef, 0x07, 0xbb, 0x07, 0xbb, 0x07, 0x81, 0x07, 0x81, 0x07, + 0x3b, 0x07, 0x3c, 0x07, 0xed, 0x06, 0xee, 0x06, 0x97, 0x06, 0x98, 0x06, + 0x39, 0x06, 0x38, 0x06, 0xd4, 0x05, 0xd4, 0x05, 0x67, 0x05, 0x68, 0x05, + 0xf6, 0x04, 0xf6, 0x04, 0x7f, 0x04, 0x7e, 0x04, 0x00, 0x04, 0x03, 0x04, + 0x82, 0x03, 0x82, 0x03, 0xfd, 0x02, 0xfd, 0x02, 0x75, 0x02, 0x77, 0x02, + 0xea, 0x01, 0xea, 0x01, 0x5e, 0x01, 0x5f, 0x01, 0xd1, 0x00, 0xd2, 0x00, + 0x44, 0x00, 0x43, 0x00, 0xb2, 0xff, 0xb4, 0xff, 0x27, 0xff, 0x26, 0xff, + 0x98, 0xfe, 0x9b, 0xfe, 0x0e, 0xfe, 0x0e, 0xfe, 0x86, 0xfd, 0x85, 0xfd, + 0xfe, 0xfc, 0xff, 0xfc, 0x7b, 0xfc, 0x79, 0xfc, 0xfc, 0xfb, 0xfc, 0xfb, + 0x80, 0xfb, 0x81, 0xfb, 0x0c, 0xfb, 0x0c, 0xfb, 0x9b, 0xfa, 0x9d, 0xfa, + 0x32, 0xfa, 0x32, 0xfa, 0xcc, 0xf9, 0xce, 0xf9, 0x71, 0xf9, 0x70, 0xf9, + 0x19, 0xf9, 0x1b, 0xf9, 0xce, 0xf8, 0xce, 0xf8, 0x86, 0xf8, 0x87, 0xf8, + 0x4c, 0xf8, 0x4c, 0xf8, 0x19, 0xf8, 0x1a, 0xf8, 0xef, 0xf7, 0xef, 0xf7, + 0xd4, 0xf7, 0xd3, 0xf7, 0xbc, 0xf7, 0xbd, 0xf7, 0xb2, 0xf7, 0xb2, 0xf7, + 0xb0, 0xf7, 0xb0, 0xf7, 0xb9, 0xf7, 0xb9, 0xf7, 0xce, 0xf7, 0xcf, 0xf7, + 0xee, 0xf7, 0xed, 0xf7, 0x14, 0xf8, 0x17, 0xf8, 0x4b, 0xf8, 0x49, 0xf8, + 0x84, 0xf8, 0x86, 0xf8, 0xce, 0xf8, 0xcf, 0xf8, 0x1d, 0xf9, 0x1c, 0xf9, + 0x73, 0xf9, 0x75, 0xf9, 0xd4, 0xf9, 0xd3, 0xf9, 0x37, 0xfa, 0x37, 0xfa, + 0xa8, 0xfa, 0xa8, 0xfa, 0x19, 0xfb, 0x19, 0xfb, 0x91, 0xfb, 0x93, 0xfb, + 0x12, 0xfc, 0x10, 0xfc, 0x91, 0xfc, 0x93, 0xfc, 0x18, 0xfd, 0x18, 0xfd, + 0xa1, 0xfd, 0xa2, 0xfd, 0x2d, 0xfe, 0x2e, 0xfe, 0xbb, 0xfe, 0xba, 0xfe, + 0x4a, 0xff, 0x4b, 0xff, 0xda, 0xff, 0xd8, 0xff, 0x69, 0x00, 0x6b, 0x00, + 0xf8, 0x00, 0xf7, 0x00, 0x86, 0x01, 0x86, 0x01, 0x13, 0x02, 0x11, 0x02, + 0x9b, 0x02, 0x9b, 0x02, 0x23, 0x03, 0x23, 0x03, 0xa3, 0x03, 0xa4, 0x03, + 0x26, 0x04, 0x24, 0x04, 0x9e, 0x04, 0x9d, 0x04, 0x11, 0x05, 0x13, 0x05, + 0x84, 0x05, 0x81, 0x05, 0xe9, 0x05, 0xec, 0x05, 0x4f, 0x06, 0x4e, 0x06, + 0xa6, 0x06, 0xa8, 0x06, 0xfb, 0x06, 0xfc, 0x06, 0x46, 0x07, 0x47, 0x07, + 0x88, 0x07, 0x88, 0x07, 0xc1, 0x07, 0xc2, 0x07, 0xf1, 0x07, 0xef, 0x07, + 0x14, 0x08, 0x17, 0x08, 0x35, 0x08, 0x33, 0x08, 0x43, 0x08, 0x45, 0x08, + 0x4d, 0x08, 0x4f, 0x08, 0x4a, 0x08, 0x4b, 0x08, 0x3f, 0x08, 0x3d, 0x08, + 0x23, 0x08, 0x27, 0x08, 0x03, 0x08, 0x02, 0x08, 0xd7, 0x07, 0xda, 0x07, + 0xa0, 0x07, 0xa0, 0x07, 0x63, 0x07, 0x63, 0x07, 0x1a, 0x07, 0x1c, 0x07, + 0xc9, 0x06, 0xc9, 0x06, 0x6f, 0x06, 0x70, 0x06, 0x0f, 0x06, 0x11, 0x06, + 0xa8, 0x05, 0xa7, 0x05, 0x3c, 0x05, 0x3e, 0x05, 0xc6, 0x04, 0xc7, 0x04, + 0x4d, 0x04, 0x4e, 0x04, 0xd1, 0x03, 0xd3, 0x03, 0x50, 0x03, 0x4e, 0x03, + 0xca, 0x02, 0xcc, 0x02, 0x42, 0x02, 0x41, 0x02, 0xb6, 0x01, 0xba, 0x01, + 0x2c, 0x01, 0x2d, 0x01, 0x9f, 0x00, 0x9f, 0x00, 0x0f, 0x00, 0x12, 0x00, + 0x84, 0xff, 0x81, 0xff, 0xf4, 0xfe, 0xf7, 0xfe, 0x69, 0xfe, 0x68, 0xfe, + 0xe0, 0xfd, 0xe1, 0xfd, 0x55, 0xfd, 0x56, 0xfd, 0xd4, 0xfc, 0xd2, 0xfc, + 0x50, 0xfc, 0x51, 0xfc, 0xd3, 0xfb, 0xd4, 0xfb, 0x5b, 0xfb, 0x5c, 0xfb, + 0xe9, 0xfa, 0xe8, 0xfa, 0x7b, 0xfa, 0x7c, 0xfa, 0x12, 0xfa, 0x11, 0xfa, + 0xb0, 0xf9, 0xb2, 0xf9, 0x56, 0xf9, 0x54, 0xf9, 0x03, 0xf9, 0x04, 0xf9, + 0xb9, 0xf8, 0xb9, 0xf8, 0x77, 0xf8, 0x76, 0xf8, 0x3f, 0xf8, 0x3f, 0xf8, + 0x0e, 0xf8, 0x0e, 0xf8, 0xe9, 0xf7, 0xe8, 0xf7, 0xcc, 0xf7, 0xce, 0xf7, + 0xbc, 0xf7, 0xba, 0xf7, 0xb2, 0xf7, 0xb4, 0xf7, 0xb6, 0xf7, 0xb6, 0xf7, + 0xc2, 0xf7, 0xc4, 0xf7, 0xda, 0xf7, 0xd8, 0xf7, 0xfb, 0xf7, 0xfd, 0xf7, + 0x2a, 0xf8, 0x27, 0xf8, 0x5e, 0xf8, 0x60, 0xf8, 0xa0, 0xf8, 0x9e, 0xf8, + 0xe8, 0xf8, 0xea, 0xf8, 0x3b, 0xf9, 0x39, 0xf9, 0x94, 0xf9, 0x96, 0xf9, + 0xf7, 0xf9, 0xf5, 0xf9, 0x5f, 0xfa, 0x60, 0xfa, 0xd0, 0xfa, 0xcf, 0xfa, + 0x43, 0xfb, 0x44, 0xfb, 0xbf, 0xfb, 0xbc, 0xfb, 0x3c, 0xfc, 0x3d, 0xfc, + 0xbf, 0xfc, 0xc0, 0xfc, 0x4a, 0xfd, 0x48, 0xfd, 0xcf, 0xfd, 0xd2, 0xfd, + 0x5d, 0xfe, 0x5d, 0xfe, 0xec, 0xfe, 0xeb, 0xfe, 0x7a, 0xff, 0x7c, 0xff, + 0x0d, 0x00, 0x0b, 0x00, 0x9a, 0x00, 0x99, 0x00, 0x27, 0x01, 0x2b, 0x01, + 0xb5, 0x01, 0xb2, 0x01, 0x41, 0x02, 0x42, 0x02, 0xc7, 0x02, 0xc8, 0x02, + 0x50, 0x03, 0x4d, 0x03, 0xcc, 0x03, 0xd0, 0x03, 0x4d, 0x04, 0x4a, 0x04, + 0xc4, 0x04, 0xc5, 0x04, 0x38, 0x05, 0x37, 0x05, 0xa4, 0x05, 0xa4, 0x05, + 0x0b, 0x06, 0x0b, 0x06, 0x6a, 0x06, 0x6c, 0x06, 0xc2, 0x06, 0xc1, 0x06, + 0x14, 0x07, 0x15, 0x07, 0x5a, 0x07, 0x58, 0x07, 0x99, 0x07, 0x9a, 0x07, + 0xce, 0x07, 0xcf, 0x07, 0xfa, 0x07, 0xfd, 0x07, 0x1e, 0x08, 0x1f, 0x08, + 0x35, 0x08, 0x37, 0x08, 0x46, 0x08, 0x44, 0x08, 0x48, 0x08, 0x4b, 0x08, + 0x43, 0x08, 0x42, 0x08, 0x33, 0x08, 0x34, 0x08, 0x16, 0x08, 0x17, 0x08, + 0xf1, 0x07, 0xf1, 0x07, 0xc0, 0x07, 0xc3, 0x07, 0x8a, 0x07, 0x88, 0x07, + 0x45, 0x07, 0x46, 0x07, 0xfb, 0x06, 0xfb, 0x06, 0xa6, 0x06, 0xa6, 0x06, + 0x49, 0x06, 0x4c, 0x06, 0xea, 0x05, 0xea, 0x05, 0x7f, 0x05, 0x7f, 0x05, + 0x13, 0x05, 0x13, 0x05, 0x9d, 0x04, 0x9c, 0x04, 0x23, 0x04, 0x25, 0x04, + 0xa6, 0x03, 0xa6, 0x03, 0x22, 0x03, 0x22, 0x03, 0x9d, 0x02, 0x9d, 0x02, + 0x14, 0x02, 0x15, 0x02, 0x89, 0x01, 0x89, 0x01, 0xfd, 0x00, 0xfe, 0x00, + 0x6e, 0x00, 0x6e, 0x00, 0xe1, 0xff, 0xe2, 0xff, 0x54, 0xff, 0x55, 0xff, + 0xc7, 0xfe, 0xc7, 0xfe, 0x3a, 0xfe, 0x3a, 0xfe, 0xb2, 0xfd, 0xb3, 0xfd, + 0x29, 0xfd, 0x2a, 0xfd, 0xa9, 0xfc, 0xa8, 0xfc, 0x25, 0xfc, 0x27, 0xfc, + 0xad, 0xfb, 0xac, 0xfb, 0x34, 0xfb, 0x36, 0xfb, 0xc4, 0xfa, 0xc3, 0xfa, + 0x58, 0xfa, 0x59, 0xfa, 0xf2, 0xf9, 0xf2, 0xf9, 0x93, 0xf9, 0x95, 0xf9, + 0x3b, 0xf9, 0x3a, 0xf9, 0xea, 0xf8, 0xec, 0xf8, 0xa4, 0xf8, 0xa4, 0xf8, + 0x63, 0xf8, 0x65, 0xf8, 0x30, 0xf8, 0x32, 0xf8, 0x02, 0xf8, 0x03, 0xf8, + 0xe1, 0xf7, 0xe3, 0xf7, 0xcb, 0xf7, 0xcb, 0xf7, 0xbc, 0xf7, 0xbd, 0xf7, + 0xb7, 0xf7, 0xb9, 0xf7, 0xbf, 0xf7, 0xbf, 0xf7, 0xd0, 0xf7, 0xd1, 0xf7, + 0xeb, 0xf7, 0xeb, 0xf7, 0x10, 0xf8, 0x12, 0xf8, 0x42, 0xf8, 0x40, 0xf8, + 0x7a, 0xf8, 0x7d, 0xf8, 0xc1, 0xf8, 0xc1, 0xf8, 0x0b, 0xf9, 0x0e, 0xf9, + 0x63, 0xf9, 0x64, 0xf9, 0xbf, 0xf9, 0xbf, 0xf9, 0x24, 0xfa, 0x26, 0xfa, + 0x8f, 0xfa, 0x90, 0xfa, 0x01, 0xfb, 0x01, 0xfb, 0x79, 0xfb, 0x7b, 0xfb, + 0xf4, 0xfb, 0xf4, 0xfb, 0x77, 0xfc, 0x78, 0xfc, 0xfa, 0xfc, 0xfb, 0xfc, + 0x82, 0xfd, 0x84, 0xfd, 0x0f, 0xfe, 0x0f, 0xfe, 0x9a, 0xfe, 0x9c, 0xfe, + 0x2b, 0xff, 0x2b, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0x47, 0x00, 0x48, 0x00, + 0xd6, 0x00, 0xd6, 0x00, 0x63, 0x01, 0x65, 0x01, 0xf1, 0x01, 0xee, 0x01, + 0x77, 0x02, 0x78, 0x02, 0xfd, 0x02, 0xfd, 0x02, 0x7f, 0x03, 0x7f, 0x03, + 0xfe, 0x03, 0xfe, 0x03, 0x77, 0x04, 0x78, 0x04, 0xec, 0x04, 0xeb, 0x04, + 0x5a, 0x05, 0x5a, 0x05, 0xc5, 0x05, 0xc5, 0x05, 0x25, 0x06, 0x24, 0x06, + 0x82, 0x06, 0x83, 0x06, 0xd4, 0x06, 0xd3, 0x06, 0x1e, 0x07, 0x21, 0x07, + 0x61, 0x07, 0x61, 0x07, 0x9a, 0x07, 0x9b, 0x07, 0xcd, 0x07, 0xcd, 0x07, + 0xf1, 0x07, 0xf2, 0x07, 0x10, 0x08, 0x10, 0x08, 0x24, 0x08, 0x24, 0x08, + 0x2c, 0x08, 0x2c, 0x08, 0x2e, 0x08, 0x2e, 0x08, 0x23, 0x08, 0x22, 0x08, + 0x0b, 0x08, 0x0e, 0x08, 0xf0, 0x07, 0xee, 0x07, 0xc3, 0x07, 0xc4, 0x07, + 0x91, 0x07, 0x92, 0x07, 0x55, 0x07, 0x56, 0x07, 0x11, 0x07, 0x11, 0x07, + 0xc3, 0x06, 0xc3, 0x06, 0x6d, 0x06, 0x70, 0x06, 0x13, 0x06, 0x13, 0x06, + 0xae, 0x05, 0xaf, 0x05, 0x47, 0x05, 0x46, 0x05, 0xd4, 0x04, 0xd6, 0x04, + 0x63, 0x04, 0x62, 0x04, 0xe6, 0x03, 0xe8, 0x03, 0x6c, 0x03, 0x6a, 0x03, + 0xe9, 0x02, 0xea, 0x02, 0x66, 0x02, 0x64, 0x02, 0xdf, 0x01, 0xe0, 0x01, + 0x59, 0x01, 0x57, 0x01, 0xcc, 0x00, 0xcc, 0x00, 0x46, 0x00, 0x45, 0x00, + 0xb9, 0xff, 0xb9, 0xff, 0x30, 0xff, 0x2e, 0xff, 0xa6, 0xfe, 0xa9, 0xfe, + 0x1d, 0xfe, 0x1b, 0xfe, 0x9b, 0xfd, 0x9c, 0xfd, 0x14, 0xfd, 0x15, 0xfd, + 0x96, 0xfc, 0x96, 0xfc, 0x1b, 0xfc, 0x1a, 0xfc, 0xa1, 0xfb, 0xa2, 0xfb, + 0x34, 0xfb, 0x32, 0xfb, 0xc5, 0xfa, 0xc5, 0xfa, 0x60, 0xfa, 0x60, 0xfa, + 0x01, 0xfa, 0xff, 0xf9, 0xa7, 0xf9, 0xa8, 0xf9, 0x57, 0xf9, 0x56, 0xf9, + 0x0a, 0xf9, 0x0b, 0xf9, 0xc7, 0xf8, 0xc7, 0xf8, 0x89, 0xf8, 0x88, 0xf8, + 0x53, 0xf8, 0x55, 0xf8, 0x25, 0xf8, 0x23, 0xf8, 0xff, 0xf7, 0xfe, 0xf7, + 0xe0, 0xf7, 0xe1, 0xf7, 0xca, 0xf7, 0xc8, 0xf7, 0xbc, 0xf7, 0xbe, 0xf7, + 0xbd, 0xf7, 0xba, 0xf7, 0xc2, 0xf7, 0xc3, 0xf7, 0xd6, 0xf7, 0xd6, 0xf7, + 0xf3, 0xf7, 0xf3, 0xf7, 0x1d, 0xf8, 0x1d, 0xf8, 0x4f, 0xf8, 0x4d, 0xf8, + 0x8b, 0xf8, 0x8c, 0xf8, 0xd2, 0xf8, 0xd1, 0xf8, 0x22, 0xf9, 0x22, 0xf9, + 0x7b, 0xf9, 0x7b, 0xf9, 0xdd, 0xf9, 0xdd, 0xf9, 0x4b, 0xfa, 0x4a, 0xfa, + 0xc1, 0xfa, 0xc0, 0xfa, 0x46, 0xfb, 0x45, 0xfb, 0xda, 0xfb, 0xdc, 0xfb, + 0x76, 0xfc, 0x74, 0xfc, 0x11, 0xfd, 0x14, 0xfd, 0xb3, 0xfd, 0xb2, 0xfd, + 0x55, 0xfe, 0x55, 0xfe, 0xf9, 0xfe, 0xfa, 0xfe, 0x9b, 0xff, 0x9b, 0xff, + 0x3f, 0x00, 0x3f, 0x00, 0xe1, 0x00, 0xe1, 0x00, 0x80, 0x01, 0x82, 0x01, + 0x25, 0x02, 0x24, 0x02, 0xbe, 0x02, 0xbe, 0x02, 0x57, 0x03, 0x58, 0x03, + 0xea, 0x03, 0xeb, 0x03, 0x76, 0x04, 0x76, 0x04, 0xfa, 0x04, 0xfb, 0x04, + 0x6c, 0x05, 0x6b, 0x05, 0xd2, 0x05, 0xd4, 0x05, 0x2e, 0x06, 0x2c, 0x06, + 0x7b, 0x06, 0x7c, 0x06, 0xc0, 0x06, 0xbf, 0x06, 0xf6, 0x06, 0xf7, 0x06, + 0x26, 0x07, 0x25, 0x07, 0x4a, 0x07, 0x4a, 0x07, 0x63, 0x07, 0x64, 0x07, + 0x78, 0x07, 0x77, 0x07, 0x7e, 0x07, 0x7e, 0x07, 0x83, 0x07, 0x83, 0x07, + 0x7a, 0x07, 0x7b, 0x07, 0x6e, 0x07, 0x70, 0x07, 0x59, 0x07, 0x58, 0x07, + 0x3c, 0x07, 0x3c, 0x07, 0x1a, 0x07, 0x1b, 0x07, 0xf0, 0x06, 0xf0, 0x06, + 0xc0, 0x06, 0xc1, 0x06, 0x89, 0x06, 0x89, 0x06, 0x4f, 0x06, 0x50, 0x06, + 0x0f, 0x06, 0x0d, 0x06, 0xc4, 0x05, 0xc7, 0x05, 0x7a, 0x05, 0x78, 0x05, + 0x26, 0x05, 0x27, 0x05, 0xcf, 0x04, 0xcf, 0x04, 0x74, 0x04, 0x75, 0x04, + 0x16, 0x04, 0x15, 0x04, 0xb3, 0x03, 0xb6, 0x03, 0x50, 0x03, 0x4f, 0x03, + 0xe9, 0x02, 0xe9, 0x02, 0x81, 0x02, 0x82, 0x02, 0x1d, 0x02, 0x1c, 0x02, + 0xb3, 0x01, 0xb4, 0x01, 0x50, 0x01, 0x4f, 0x01, 0xe7, 0x00, 0xea, 0x00, + 0x89, 0x00, 0x87, 0x00, 0x28, 0x00, 0x2a, 0x00, 0xcc, 0xff, 0xcc, 0xff, + 0x76, 0xff, 0x77, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0xd1, 0xfe, 0xcf, 0xfe, + 0x81, 0xfe, 0x81, 0xfe, 0x39, 0xfe, 0x39, 0xfe, 0xf5, 0xfd, 0xf4, 0xfd, + 0xb1, 0xfd, 0xb0, 0xfd, 0x72, 0xfd, 0x71, 0xfd, 0x32, 0xfd, 0x32, 0xfd, + 0xf6, 0xfc, 0xf5, 0xfc, 0xb9, 0xfc, 0xb9, 0xfc, 0x82, 0xfc, 0x81, 0xfc, + 0x47, 0xfc, 0x47, 0xfc, 0x0b, 0xfc, 0x0b, 0xfc, 0xcf, 0xfb, 0xcd, 0xfb, + 0x90, 0xfb, 0x91, 0xfb, 0x4f, 0xfb, 0x4f, 0xfb, 0x0e, 0xfb, 0x0d, 0xfb, + 0xcb, 0xfa, 0xcc, 0xfa, 0x87, 0xfa, 0x87, 0xfa, 0x45, 0xfa, 0x44, 0xfa, + 0x01, 0xfa, 0x01, 0xfa, 0xbf, 0xf9, 0xc1, 0xf9, 0x82, 0xf9, 0x82, 0xf9, + 0x49, 0xf9, 0x4a, 0xf9, 0x11, 0xf9, 0x12, 0xf9, 0xe4, 0xf8, 0xe4, 0xf8, + 0xba, 0xf8, 0xba, 0xf8, 0x9b, 0xf8, 0x9c, 0xf8, 0x83, 0xf8, 0x83, 0xf8, + 0x74, 0xf8, 0x75, 0xf8, 0x71, 0xf8, 0x71, 0xf8, 0x76, 0xf8, 0x75, 0xf8, + 0x87, 0xf8, 0x87, 0xf8, 0xa0, 0xf8, 0xa1, 0xf8, 0xc4, 0xf8, 0xc4, 0xf8, + 0xf1, 0xf8, 0xf2, 0xf8, 0x27, 0xf9, 0x26, 0xf9, 0x68, 0xf9, 0x66, 0xf9, + 0xae, 0xf9, 0xaf, 0xf9, 0x01, 0xfa, 0x01, 0xfa, 0x5a, 0xfa, 0x5a, 0xfa, + 0xbc, 0xfa, 0xbd, 0xfa, 0x26, 0xfb, 0x25, 0xfb, 0x99, 0xfb, 0x99, 0xfb, + 0x24, 0xfc, 0x24, 0xfc, 0xc1, 0xfc, 0xc0, 0xfc, 0x52, 0xfd, 0x52, 0xfd, + 0xe1, 0xfd, 0xdf, 0xfd, 0x69, 0xfe, 0x6c, 0xfe, 0xf5, 0xfe, 0xf4, 0xfe, + 0x7c, 0xff, 0x7e, 0xff, 0x0d, 0x00, 0x0a, 0x00, 0x96, 0x00, 0x99, 0x00, + 0x2e, 0x01, 0x2d, 0x01, 0xc6, 0x01, 0xc6, 0x01, 0x66, 0x02, 0x67, 0x02, + 0x0c, 0x03, 0x0a, 0x03, 0xb4, 0x03, 0xb4, 0x03, 0x60, 0x04, 0x60, 0x04, + 0x0b, 0x05, 0x0c, 0x05, 0xba, 0x05, 0xb7, 0x05, 0x62, 0x06, 0x63, 0x06, + 0x07, 0x07, 0x06, 0x07, 0xa6, 0x07, 0xa5, 0x07, 0x3b, 0x08, 0x3b, 0x08, + 0xc7, 0x08, 0xc7, 0x08, 0x45, 0x09, 0x46, 0x09, 0xb6, 0x09, 0xb5, 0x09, + 0x16, 0x0a, 0x17, 0x0a, 0x68, 0x0a, 0x67, 0x0a, 0xa2, 0x0a, 0xa3, 0x0a, + 0xce, 0x0a, 0xcd, 0x0a, 0xe4, 0x0a, 0xe6, 0x0a, 0xea, 0x0a, 0xe7, 0x0a, + 0xdd, 0x0a, 0xde, 0x0a, 0xbd, 0x0a, 0xbc, 0x0a, 0x8c, 0x0a, 0x8d, 0x0a, + 0x4e, 0x0a, 0x4c, 0x0a, 0xfb, 0x09, 0xfa, 0x09, 0x9d, 0x09, 0x9d, 0x09, + 0x2d, 0x09, 0x2d, 0x09, 0xb3, 0x08, 0xb5, 0x08, 0x2a, 0x08, 0x28, 0x08, + 0x94, 0x07, 0x96, 0x07, 0xf5, 0x06, 0xf4, 0x06, 0x47, 0x06, 0x47, 0x06, + 0x92, 0x05, 0x92, 0x05, 0xce, 0x04, 0xd2, 0x04, 0x00, 0x04, 0xff, 0x03, + 0x1e, 0x03, 0x1f, 0x03, 0x43, 0x02, 0x43, 0x02, 0x66, 0x01, 0x65, 0x01, + 0x86, 0x00, 0x87, 0x00, 0xa8, 0xff, 0xa7, 0xff, 0xc1, 0xfe, 0xc1, 0xfe, + 0xd9, 0xfd, 0xd9, 0xfd, 0xec, 0xfc, 0xeb, 0xfc, 0xfe, 0xfb, 0xff, 0xfb, + 0x16, 0xfb, 0x16, 0xfb, 0x2c, 0xfa, 0x2d, 0xfa, 0x4e, 0xf9, 0x4e, 0xf9, + 0x76, 0xf8, 0x76, 0xf8, 0xa9, 0xf7, 0xaa, 0xf7, 0xeb, 0xf6, 0xeb, 0xf6, + 0x39, 0xf6, 0x3a, 0xf6, 0x9d, 0xf5, 0x9e, 0xf5, 0x10, 0xf5, 0x10, 0xf5, + 0x9c, 0xf4, 0x9c, 0xf4, 0x3a, 0xf4, 0x3a, 0xf4, 0xf2, 0xf3, 0xf2, 0xf3, + 0xc0, 0xf3, 0xc0, 0xf3, 0xa6, 0xf3, 0xa6, 0xf3, 0xa4, 0xf3, 0xa5, 0xf3, + 0xba, 0xf3, 0xbb, 0xf3, 0xe6, 0xf3, 0xe4, 0xf3, 0x25, 0xf4, 0x29, 0xf4, + 0x7b, 0xf4, 0x7b, 0xf4, 0xe3, 0xf4, 0xe3, 0xf4, 0x5b, 0xf5, 0x5c, 0xf5, + 0xe6, 0xf5, 0xe5, 0xf5, 0x7e, 0xf6, 0x80, 0xf6, 0x27, 0xf7, 0x28, 0xf7, + 0xdc, 0xf7, 0xda, 0xf7, 0x9f, 0xf8, 0xa1, 0xf8, 0x6c, 0xf9, 0x6c, 0xf9, + 0x45, 0xfa, 0x45, 0xfa, 0x24, 0xfb, 0x25, 0xfb, 0x0c, 0xfc, 0x0d, 0xfc, + 0xfc, 0xfc, 0xfa, 0xfc, 0xf0, 0xfd, 0xf1, 0xfd, 0xe8, 0xfe, 0xe8, 0xfe, + 0xe2, 0xff, 0xe3, 0xff, 0xe0, 0x00, 0xdf, 0x00, 0xda, 0x01, 0xda, 0x01, + 0xd2, 0x02, 0xd4, 0x02, 0xcb, 0x03, 0xc8, 0x03, 0xb9, 0x04, 0xbb, 0x04, + 0xa6, 0x05, 0xa5, 0x05, 0x86, 0x06, 0x86, 0x06, 0x5d, 0x07, 0x5f, 0x07, + 0x28, 0x08, 0x28, 0x08, 0xe4, 0x08, 0xe3, 0x08, 0x8f, 0x09, 0x90, 0x09, + 0x29, 0x0a, 0x2b, 0x0a, 0xb0, 0x0a, 0xb0, 0x0a, 0x22, 0x0b, 0x22, 0x0b, + 0x7f, 0x0b, 0x7f, 0x0b, 0xc5, 0x0b, 0xc6, 0x0b, 0xf8, 0x0b, 0xf7, 0x0b, + 0x10, 0x0c, 0x11, 0x0c, 0x13, 0x0c, 0x14, 0x0c, 0x04, 0x0c, 0x03, 0x0c, + 0xd9, 0x0b, 0xda, 0x0b, 0x9e, 0x0b, 0x9d, 0x0b, 0x4c, 0x0b, 0x4c, 0x0b, + 0xe7, 0x0a, 0xe6, 0x0a, 0x6d, 0x0a, 0x6e, 0x0a, 0xe4, 0x09, 0xe4, 0x09, + 0x49, 0x09, 0x4a, 0x09, 0xa0, 0x08, 0xa0, 0x08, 0xe8, 0x07, 0xea, 0x07, + 0x26, 0x07, 0x25, 0x07, 0x56, 0x06, 0x58, 0x06, 0x80, 0x05, 0x7f, 0x05, + 0xa1, 0x04, 0xa1, 0x04, 0xbd, 0x03, 0xbe, 0x03, 0xd2, 0x02, 0xd2, 0x02, + 0xea, 0x01, 0xeb, 0x01, 0xfc, 0x00, 0xfc, 0x00, 0x14, 0x00, 0x15, 0x00, + 0x29, 0xff, 0x2b, 0xff, 0x47, 0xfe, 0x48, 0xfe, 0x67, 0xfd, 0x68, 0xfd, + 0x90, 0xfc, 0x92, 0xfc, 0xc4, 0xfb, 0xc4, 0xfb, 0xfe, 0xfa, 0x00, 0xfb, + 0x4a, 0xfa, 0x49, 0xfa, 0xa0, 0xf9, 0xa1, 0xf9, 0x01, 0xf9, 0x02, 0xf9, + 0x78, 0xf8, 0x79, 0xf8, 0xf9, 0xf7, 0xfb, 0xf7, 0x91, 0xf7, 0x91, 0xf7, + 0x3a, 0xf7, 0x3a, 0xf7, 0xef, 0xf6, 0xf3, 0xf6, 0xc1, 0xf6, 0xc0, 0xf6, + 0x9b, 0xf6, 0x9e, 0xf6, 0x8e, 0xf6, 0x8d, 0xf6, 0x90, 0xf6, 0x93, 0xf6, + 0xa4, 0xf6, 0xa3, 0xf6, 0xcd, 0xf6, 0xcf, 0xf6, 0x02, 0xf7, 0x02, 0xf7, + 0x4b, 0xf7, 0x4c, 0xf7, 0xa2, 0xf7, 0xa2, 0xf7, 0x07, 0xf8, 0x09, 0xf8, + 0x7c, 0xf8, 0x7a, 0xf8, 0xf9, 0xf8, 0xfa, 0xf8, 0x84, 0xf9, 0x84, 0xf9, + 0x16, 0xfa, 0x17, 0xfa, 0xb3, 0xfa, 0xb4, 0xfa, 0x5a, 0xfb, 0x59, 0xfb, + 0xff, 0xfb, 0x01, 0xfc, 0xb1, 0xfc, 0xaf, 0xfc, 0x5e, 0xfd, 0x60, 0xfd, + 0x12, 0xfe, 0x12, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0x6e, 0xff, 0x6f, 0xff, + 0x17, 0x00, 0x16, 0x00, 0xba, 0x00, 0xbc, 0x00, 0x57, 0x01, 0x56, 0x01, + 0xeb, 0x01, 0xec, 0x01, 0x77, 0x02, 0x76, 0x02, 0xf8, 0x02, 0xf9, 0x02, + 0x6d, 0x03, 0x6e, 0x03, 0xd8, 0x03, 0xd9, 0x03, 0x37, 0x04, 0x37, 0x04, + 0x88, 0x04, 0x89, 0x04, 0xcc, 0x04, 0xcd, 0x04, 0x05, 0x05, 0x04, 0x05, + 0x2a, 0x05, 0x2c, 0x05, 0x4c, 0x05, 0x4b, 0x05, 0x57, 0x05, 0x56, 0x05, + 0x56, 0x05, 0x5a, 0x05, 0x4f, 0x05, 0x4c, 0x05, 0x2e, 0x05, 0x33, 0x05, + 0x12, 0x05, 0x10, 0x05, 0xdc, 0x04, 0xdc, 0x04, 0xa2, 0x04, 0xa3, 0x04, + 0x5b, 0x04, 0x5c, 0x04, 0x0b, 0x04, 0x0d, 0x04, 0xb6, 0x03, 0xb7, 0x03, + 0x54, 0x03, 0x53, 0x03, 0xf2, 0x02, 0xf4, 0x02, 0x86, 0x02, 0x87, 0x02, + 0x18, 0x02, 0x18, 0x02, 0xaa, 0x01, 0xab, 0x01, 0x3a, 0x01, 0x38, 0x01, + 0xc7, 0x00, 0xcc, 0x00, 0x5c, 0x00, 0x5a, 0x00, 0xee, 0xff, 0xf2, 0xff, + 0x8b, 0xff, 0x8a, 0xff, 0x27, 0xff, 0x29, 0xff, 0xca, 0xfe, 0xcb, 0xfe, + 0x78, 0xfe, 0x78, 0xfe, 0x2c, 0xfe, 0x2d, 0xfe, 0xeb, 0xfd, 0xe9, 0xfd, + 0xb4, 0xfd, 0xb3, 0xfd, 0x83, 0xfd, 0x84, 0xfd, 0x62, 0xfd, 0x61, 0xfd, + 0x49, 0xfd, 0x4a, 0xfd, 0x3e, 0xfd, 0x3d, 0xfd, 0x3d, 0xfd, 0x3d, 0xfd, + 0x48, 0xfd, 0x49, 0xfd, 0x5e, 0xfd, 0x5f, 0xfd, 0x83, 0xfd, 0x84, 0xfd, + 0xb1, 0xfd, 0xb2, 0xfd, 0xec, 0xfd, 0xed, 0xfd, 0x32, 0xfe, 0x32, 0xfe, + 0x7d, 0xfe, 0x7f, 0xfe, 0xd6, 0xfe, 0xd5, 0xfe, 0x33, 0xff, 0x35, 0xff, + 0x98, 0xff, 0x98, 0xff, 0x03, 0x00, 0x04, 0x00, 0x73, 0x00, 0x73, 0x00, + 0xe6, 0x00, 0xe6, 0x00, 0x56, 0x01, 0x58, 0x01, 0xcc, 0x01, 0xcd, 0x01, + 0x3e, 0x02, 0x3d, 0x02, 0xae, 0x02, 0xb0, 0x02, 0x1a, 0x03, 0x19, 0x03, + 0x7f, 0x03, 0x81, 0x03, 0xe0, 0x03, 0xe1, 0x03, 0x38, 0x04, 0x38, 0x04, + 0x88, 0x04, 0x89, 0x04, 0xcd, 0x04, 0xce, 0x04, 0x0a, 0x05, 0x0b, 0x05, + 0x3a, 0x05, 0x3b, 0x05, 0x61, 0x05, 0x61, 0x05, 0x7a, 0x05, 0x7b, 0x05, + 0x87, 0x05, 0x86, 0x05, 0x89, 0x05, 0x89, 0x05, 0x7c, 0x05, 0x7c, 0x05, + 0x65, 0x05, 0x66, 0x05, 0x3f, 0x05, 0x42, 0x05, 0x0e, 0x05, 0x0e, 0x05, + 0xd2, 0x04, 0xd2, 0x04, 0x84, 0x04, 0x86, 0x04, 0x2f, 0x04, 0x30, 0x04, + 0xcb, 0x03, 0xcc, 0x03, 0x5b, 0x03, 0x5c, 0x03, 0xde, 0x02, 0xde, 0x02, + 0x55, 0x02, 0x57, 0x02, 0xc3, 0x01, 0xc2, 0x01, 0x24, 0x01, 0x24, 0x01, + 0x7e, 0x00, 0x80, 0x00, 0xcc, 0xff, 0xcd, 0xff, 0x14, 0xff, 0x15, 0xff, + 0x56, 0xfe, 0x57, 0xfe, 0x93, 0xfd, 0x95, 0xfd, 0xd3, 0xfc, 0xd2, 0xfc, + 0x10, 0xfc, 0x12, 0xfc, 0x54, 0xfb, 0x52, 0xfb, 0x9a, 0xfa, 0x9c, 0xfa, + 0xeb, 0xf9, 0xeb, 0xf9, 0x46, 0xf9, 0x48, 0xf9, 0xae, 0xf8, 0xaf, 0xf8, + 0x24, 0xf8, 0x25, 0xf8, 0xac, 0xf7, 0xac, 0xf7, 0x44, 0xf7, 0x45, 0xf7, + 0xef, 0xf6, 0xef, 0xf6, 0xad, 0xf6, 0xaf, 0xf6, 0x81, 0xf6, 0x81, 0xf6, + 0x66, 0xf6, 0x68, 0xf6, 0x61, 0xf6, 0x60, 0xf6, 0x6c, 0xf6, 0x6f, 0xf6, + 0x8b, 0xf6, 0x8b, 0xf6, 0xba, 0xf6, 0xbb, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, + 0x48, 0xf7, 0x4a, 0xf7, 0xa4, 0xf7, 0xa4, 0xf7, 0x12, 0xf8, 0x13, 0xf8, + 0x8e, 0xf8, 0x8f, 0xf8, 0x14, 0xf9, 0x15, 0xf9, 0xac, 0xf9, 0xad, 0xf9, + 0x49, 0xfa, 0x4a, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xac, 0xfb, 0xae, 0xfb, + 0x6e, 0xfc, 0x6e, 0xfc, 0x37, 0xfd, 0x3a, 0xfd, 0x08, 0xfe, 0x09, 0xfe, + 0xe6, 0xfe, 0xe6, 0xfe, 0xc3, 0xff, 0xc5, 0xff, 0xad, 0x00, 0xae, 0x00, + 0x98, 0x01, 0x96, 0x01, 0x83, 0x02, 0x86, 0x02, 0x76, 0x03, 0x74, 0x03, + 0x64, 0x04, 0x66, 0x04, 0x55, 0x05, 0x55, 0x05, 0x3c, 0x06, 0x3c, 0x06, + 0x1e, 0x07, 0x20, 0x07, 0xf7, 0x07, 0xf7, 0x07, 0xc1, 0x08, 0xc2, 0x08, + 0x7e, 0x09, 0x7d, 0x09, 0x29, 0x0a, 0x29, 0x0a, 0xbf, 0x0a, 0xbf, 0x0a, + 0x40, 0x0b, 0x42, 0x0b, 0xaa, 0x0b, 0xa9, 0x0b, 0xfd, 0x0b, 0xff, 0x0b, + 0x37, 0x0c, 0x35, 0x0c, 0x59, 0x0c, 0x5a, 0x0c, 0x64, 0x0c, 0x65, 0x0c, + 0x56, 0x0c, 0x56, 0x0c, 0x35, 0x0c, 0x37, 0x0c, 0xfb, 0x0b, 0xfa, 0x0b, + 0xad, 0x0b, 0xae, 0x0b, 0x49, 0x0b, 0x4a, 0x0b, 0xd3, 0x0a, 0xd5, 0x0a, + 0x4d, 0x0a, 0x4e, 0x0a, 0xb4, 0x09, 0xb4, 0x09, 0x0b, 0x09, 0x0b, 0x09, + 0x51, 0x08, 0x54, 0x08, 0x8c, 0x07, 0x8c, 0x07, 0xb6, 0x06, 0xb8, 0x06, + 0xd4, 0x05, 0xd4, 0x05, 0xe8, 0x04, 0xea, 0x04, 0xef, 0x03, 0xf0, 0x03, + 0xdf, 0x02, 0xe1, 0x02, 0xd0, 0x01, 0xd2, 0x01, 0xc6, 0x00, 0xc4, 0x00, + 0xb6, 0xff, 0xb8, 0xff, 0xa7, 0xfe, 0xa7, 0xfe, 0x98, 0xfd, 0x97, 0xfd, + 0x84, 0xfc, 0x84, 0xfc, 0x79, 0xfb, 0x7a, 0xfb, 0x6e, 0xfa, 0x6d, 0xfa, + 0x6e, 0xf9, 0x70, 0xf9, 0x79, 0xf8, 0x77, 0xf8, 0x8f, 0xf7, 0x91, 0xf7, + 0xb6, 0xf6, 0xb5, 0xf6, 0xef, 0xf5, 0xef, 0xf5, 0x3b, 0xf5, 0x3b, 0xf5, + 0x9c, 0xf4, 0x9c, 0xf4, 0x14, 0xf4, 0x15, 0xf4, 0xa4, 0xf3, 0xa4, 0xf3, + 0x4f, 0xf3, 0x51, 0xf3, 0x14, 0xf3, 0x13, 0xf3, 0xf1, 0xf2, 0xf2, 0xf2, + 0xe6, 0xf2, 0xe8, 0xf2, 0xf4, 0xf2, 0xf5, 0xf2, 0x17, 0xf3, 0x18, 0xf3, + 0x51, 0xf3, 0x53, 0xf3, 0x9f, 0xf3, 0x9f, 0xf3, 0xfe, 0xf3, 0xff, 0xf3, + 0x72, 0xf4, 0x73, 0xf4, 0xf7, 0xf4, 0xf7, 0xf4, 0x89, 0xf5, 0x8c, 0xf5, + 0x2f, 0xf6, 0x2d, 0xf6, 0xdc, 0xf6, 0xdf, 0xf6, 0x9b, 0xf7, 0x9c, 0xf7, + 0x67, 0xf8, 0x67, 0xf8, 0x39, 0xf9, 0x3b, 0xf9, 0x19, 0xfa, 0x19, 0xfa, + 0xff, 0xfa, 0x01, 0xfb, 0xf0, 0xfb, 0xf0, 0xfb, 0xe4, 0xfc, 0xe5, 0xfc, + 0xdd, 0xfd, 0xdf, 0xfd, 0xde, 0xfe, 0xde, 0xfe, 0xdd, 0xff, 0xdd, 0xff, + 0xdc, 0x00, 0xdf, 0x00, 0xdf, 0x01, 0xdf, 0x01, 0xdb, 0x02, 0xdc, 0x02, + 0xd6, 0x03, 0xd7, 0x03, 0xc8, 0x04, 0xca, 0x04, 0xb6, 0x05, 0xb7, 0x05, + 0x96, 0x06, 0x97, 0x06, 0x6b, 0x07, 0x6c, 0x07, 0x31, 0x08, 0x32, 0x08, + 0xe7, 0x08, 0xe8, 0x08, 0x8d, 0x09, 0x8e, 0x09, 0x1e, 0x0a, 0x1e, 0x0a, + 0x9a, 0x0a, 0x9d, 0x0a, 0x04, 0x0b, 0x04, 0x0b, 0x55, 0x0b, 0x57, 0x0b, + 0x93, 0x0b, 0x93, 0x0b, 0xbb, 0x0b, 0xbc, 0x0b, 0xcb, 0x0b, 0xcd, 0x0b, + 0xc9, 0x0b, 0xc8, 0x0b, 0xae, 0x0b, 0xb0, 0x0b, 0x82, 0x0b, 0x81, 0x0b, + 0x3e, 0x0b, 0x40, 0x0b, 0xec, 0x0a, 0xea, 0x0a, 0x83, 0x0a, 0x86, 0x0a, + 0x12, 0x0a, 0x10, 0x0a, 0x89, 0x09, 0x8b, 0x09, 0xf6, 0x08, 0xf6, 0x08, + 0x55, 0x08, 0x54, 0x08, 0xa5, 0x07, 0xa6, 0x07, 0xef, 0x06, 0xef, 0x06, + 0x2d, 0x06, 0x2f, 0x06, 0x67, 0x05, 0x67, 0x05, 0x9a, 0x04, 0x9a, 0x04, + 0xc4, 0x03, 0xc6, 0x03, 0xf0, 0x02, 0xef, 0x02, 0x19, 0x02, 0x1b, 0x02, + 0x44, 0x01, 0x43, 0x01, 0x6d, 0x00, 0x6e, 0x00, 0x99, 0xff, 0x99, 0xff, + 0xcb, 0xfe, 0xcc, 0xfe, 0x01, 0xfe, 0x02, 0xfe, 0x40, 0xfd, 0x40, 0xfd, + 0x87, 0xfc, 0x87, 0xfc, 0xd6, 0xfb, 0xd6, 0xfb, 0x32, 0xfb, 0x33, 0xfb, + 0x99, 0xfa, 0x99, 0xfa, 0x0b, 0xfa, 0x0d, 0xfa, 0x91, 0xf9, 0x8f, 0xf9, + 0x20, 0xf9, 0x23, 0xf9, 0xbf, 0xf8, 0xbf, 0xf8, 0x72, 0xf8, 0x71, 0xf8, + 0x2e, 0xf8, 0x31, 0xf8, 0x02, 0xf8, 0x01, 0xf8, 0xe2, 0xf7, 0xe2, 0xf7, + 0xd4, 0xf7, 0xd5, 0xf7, 0xd7, 0xf7, 0xd7, 0xf7, 0xe8, 0xf7, 0xe9, 0xf7, + 0x0a, 0xf8, 0x0a, 0xf8, 0x38, 0xf8, 0x3a, 0xf8, 0x79, 0xf8, 0x79, 0xf8, + 0xc3, 0xf8, 0xc3, 0xf8, 0x1a, 0xf9, 0x1c, 0xf9, 0x7e, 0xf9, 0x7e, 0xf9, + 0xeb, 0xf9, 0xef, 0xf9, 0x63, 0xfa, 0x63, 0xfa, 0xe3, 0xfa, 0xe4, 0xfa, + 0x69, 0xfb, 0x68, 0xfb, 0xf4, 0xfb, 0xf6, 0xfb, 0x86, 0xfc, 0x86, 0xfc, + 0x18, 0xfd, 0x1a, 0xfd, 0xae, 0xfd, 0xad, 0xfd, 0x41, 0xfe, 0x41, 0xfe, + 0xd6, 0xfe, 0xd7, 0xfe, 0x67, 0xff, 0x68, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0x80, 0x00, 0x80, 0x00, 0x04, 0x01, 0x04, 0x01, 0x81, 0x01, 0x82, 0x01, + 0xfa, 0x01, 0xfa, 0x01, 0x69, 0x02, 0x6b, 0x02, 0xd0, 0x02, 0xcf, 0x02, + 0x2b, 0x03, 0x2d, 0x03, 0x7d, 0x03, 0x7d, 0x03, 0xc4, 0x03, 0xc4, 0x03, + 0x01, 0x04, 0x03, 0x04, 0x32, 0x04, 0x33, 0x04, 0x5a, 0x04, 0x5b, 0x04, + 0x73, 0x04, 0x74, 0x04, 0x85, 0x04, 0x84, 0x04, 0x88, 0x04, 0x89, 0x04, + 0x7f, 0x04, 0x82, 0x04, 0x72, 0x04, 0x70, 0x04, 0x52, 0x04, 0x55, 0x04, + 0x30, 0x04, 0x2f, 0x04, 0xff, 0x03, 0x01, 0x04, 0xca, 0x03, 0xca, 0x03, + 0x8d, 0x03, 0x8d, 0x03, 0x44, 0x03, 0x45, 0x03, 0xfa, 0x02, 0xfc, 0x02, + 0xa8, 0x02, 0xa5, 0x02, 0x51, 0x02, 0x53, 0x02, 0xf8, 0x01, 0xf9, 0x01, + 0x9c, 0x01, 0x9e, 0x01, 0x41, 0x01, 0x42, 0x01, 0xe3, 0x00, 0xe4, 0x00, + 0x8a, 0x00, 0x89, 0x00, 0x2d, 0x00, 0x2f, 0x00, 0xda, 0xff, 0xdb, 0xff, + 0x85, 0xff, 0x86, 0xff, 0x39, 0xff, 0x3a, 0xff, 0xed, 0xfe, 0xef, 0xfe, + 0xab, 0xfe, 0xac, 0xfe, 0x70, 0xfe, 0x72, 0xfe, 0x3b, 0xfe, 0x3d, 0xfe, + 0x13, 0xfe, 0x14, 0xfe, 0xeb, 0xfd, 0xee, 0xfd, 0xd4, 0xfd, 0xd4, 0xfd, + 0xc1, 0xfd, 0xc3, 0xfd, 0xb8, 0xfd, 0xba, 0xfd, 0xbc, 0xfd, 0xbc, 0xfd, + 0xc2, 0xfd, 0xc3, 0xfd, 0xd8, 0xfd, 0xd9, 0xfd, 0xf3, 0xfd, 0xf2, 0xfd, + 0x16, 0xfe, 0x19, 0xfe, 0x44, 0xfe, 0x44, 0xfe, 0x76, 0xfe, 0x76, 0xfe, + 0xb2, 0xfe, 0xb3, 0xfe, 0xf2, 0xfe, 0xf1, 0xfe, 0x38, 0xff, 0x3a, 0xff, + 0x84, 0xff, 0x83, 0xff, 0xcf, 0xff, 0xd0, 0xff, 0x22, 0x00, 0x22, 0x00, + 0x73, 0x00, 0x73, 0x00, 0xc7, 0x00, 0xc7, 0x00, 0x19, 0x01, 0x1a, 0x01, + 0x6b, 0x01, 0x6b, 0x01, 0xb9, 0x01, 0xbb, 0x01, 0x04, 0x02, 0x05, 0x02, + 0x4b, 0x02, 0x4b, 0x02, 0x8b, 0x02, 0x8d, 0x02, 0xc6, 0x02, 0xc7, 0x02, + 0xfb, 0x02, 0xfb, 0x02, 0x28, 0x03, 0x28, 0x03, 0x4c, 0x03, 0x4d, 0x03, + 0x68, 0x03, 0x69, 0x03, 0x7c, 0x03, 0x7b, 0x03, 0x84, 0x03, 0x87, 0x03, + 0x86, 0x03, 0x86, 0x03, 0x7e, 0x03, 0x7e, 0x03, 0x69, 0x03, 0x6a, 0x03, + 0x4d, 0x03, 0x4d, 0x03, 0x26, 0x03, 0x28, 0x03, 0xf5, 0x02, 0xf4, 0x02, + 0xbb, 0x02, 0xbc, 0x02, 0x75, 0x02, 0x75, 0x02, 0x29, 0x02, 0x29, 0x02, + 0xd1, 0x01, 0xd2, 0x01, 0x71, 0x01, 0x71, 0x01, 0x07, 0x01, 0x0a, 0x01, + 0x97, 0x00, 0x96, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x9c, 0xff, 0x9d, 0xff, + 0x15, 0xff, 0x15, 0xff, 0x87, 0xfe, 0x89, 0xfe, 0xf9, 0xfd, 0xfa, 0xfd, + 0x68, 0xfd, 0x69, 0xfd, 0xd9, 0xfc, 0xd9, 0xfc, 0x49, 0xfc, 0x49, 0xfc, + 0xbb, 0xfb, 0xbb, 0xfb, 0x36, 0xfb, 0x36, 0xfb, 0xb5, 0xfa, 0xb6, 0xfa, + 0x3f, 0xfa, 0x40, 0xfa, 0xd1, 0xf9, 0xd1, 0xf9, 0x70, 0xf9, 0x71, 0xf9, + 0x1d, 0xf9, 0x1d, 0xf9, 0xd5, 0xf8, 0xd5, 0xf8, 0x9d, 0xf8, 0x9f, 0xf8, + 0x73, 0xf8, 0x73, 0xf8, 0x59, 0xf8, 0x5a, 0xf8, 0x4c, 0xf8, 0x4e, 0xf8, + 0x50, 0xf8, 0x50, 0xf8, 0x5f, 0xf8, 0x5f, 0xf8, 0x7d, 0xf8, 0x7d, 0xf8, + 0xa9, 0xf8, 0xaa, 0xf8, 0xe0, 0xf8, 0xe1, 0xf8, 0x29, 0xf9, 0x27, 0xf9, + 0x78, 0xf9, 0x7b, 0xf9, 0xd6, 0xf9, 0xd6, 0xf9, 0x40, 0xfa, 0x41, 0xfa, + 0xb2, 0xfa, 0xb2, 0xfa, 0x2f, 0xfb, 0x2f, 0xfb, 0xb7, 0xfb, 0xb6, 0xfb, + 0x43, 0xfc, 0x45, 0xfc, 0xde, 0xfc, 0xdb, 0xfc, 0x7a, 0xfd, 0x7e, 0xfd, + 0x21, 0xfe, 0x21, 0xfe, 0xce, 0xfe, 0xce, 0xfe, 0x7e, 0xff, 0x81, 0xff, + 0x38, 0x00, 0x38, 0x00, 0xef, 0x00, 0xf1, 0x00, 0xad, 0x01, 0xae, 0x01, + 0x6b, 0x02, 0x6b, 0x02, 0x29, 0x03, 0x2b, 0x03, 0xe8, 0x03, 0xe8, 0x03, + 0xa4, 0x04, 0xa5, 0x04, 0x5b, 0x05, 0x5e, 0x05, 0x10, 0x06, 0x11, 0x06, + 0xb7, 0x06, 0xb9, 0x06, 0x5e, 0x07, 0x5d, 0x07, 0xf0, 0x07, 0xf1, 0x07, + 0x7a, 0x08, 0x7a, 0x08, 0xf4, 0x08, 0xf4, 0x08, 0x5b, 0x09, 0x5c, 0x09, + 0xb5, 0x09, 0xb6, 0x09, 0xfb, 0x09, 0xfb, 0x09, 0x2f, 0x0a, 0x30, 0x0a, + 0x4f, 0x0a, 0x4e, 0x0a, 0x5b, 0x0a, 0x5a, 0x0a, 0x56, 0x0a, 0x55, 0x0a, + 0x3a, 0x0a, 0x3b, 0x0a, 0x10, 0x0a, 0x0f, 0x0a, 0xd1, 0x09, 0xd2, 0x09, + 0x84, 0x09, 0x85, 0x09, 0x25, 0x09, 0x25, 0x09, 0xb8, 0x08, 0xb8, 0x08, + 0x3d, 0x08, 0x3d, 0x08, 0xb3, 0x07, 0xb2, 0x07, 0x1b, 0x07, 0x1d, 0x07, + 0x79, 0x06, 0x78, 0x06, 0xc8, 0x05, 0xc8, 0x05, 0x10, 0x05, 0x11, 0x05, + 0x4f, 0x04, 0x4e, 0x04, 0x80, 0x03, 0x82, 0x03, 0xae, 0x02, 0xae, 0x02, + 0xd3, 0x01, 0xd3, 0x01, 0xf4, 0x00, 0xf1, 0x00, 0x0e, 0x00, 0x11, 0x00, + 0x26, 0xff, 0x24, 0xff, 0x3c, 0xfe, 0x3d, 0xfe, 0x53, 0xfd, 0x51, 0xfd, + 0x69, 0xfc, 0x6a, 0xfc, 0x88, 0xfb, 0x88, 0xfb, 0xaa, 0xfa, 0xaa, 0xfa, + 0xdc, 0xf9, 0xdb, 0xf9, 0x10, 0xf9, 0x10, 0xf9, 0x56, 0xf8, 0x54, 0xf8, + 0xa8, 0xf7, 0xaa, 0xf7, 0x09, 0xf7, 0x0a, 0xf7, 0x81, 0xf6, 0x80, 0xf6, + 0x05, 0xf6, 0x06, 0xf6, 0xa2, 0xf5, 0xa3, 0xf5, 0x52, 0xf5, 0x53, 0xf5, + 0x18, 0xf5, 0x17, 0xf5, 0xf5, 0xf4, 0xf5, 0xf4, 0xe1, 0xf4, 0xe5, 0xf4, + 0xe7, 0xf4, 0xe7, 0xf4, 0xfe, 0xf4, 0xfe, 0xf4, 0x28, 0xf5, 0x28, 0xf5, + 0x67, 0xf5, 0x67, 0xf5, 0xb0, 0xf5, 0xb1, 0xf5, 0x10, 0xf6, 0x10, 0xf6, + 0x7c, 0xf6, 0x7e, 0xf6, 0xfb, 0xf6, 0xf9, 0xf6, 0x81, 0xf7, 0x84, 0xf7, + 0x1c, 0xf8, 0x1d, 0xf8, 0xbd, 0xf8, 0xbe, 0xf8, 0x6c, 0xf9, 0x6e, 0xf9, + 0x23, 0xfa, 0x24, 0xfa, 0xe4, 0xfa, 0xe5, 0xfa, 0xb1, 0xfb, 0xaf, 0xfb, + 0x7b, 0xfc, 0x7d, 0xfc, 0x57, 0xfd, 0x57, 0xfd, 0x2c, 0xfe, 0x2d, 0xfe, + 0x0c, 0xff, 0x0e, 0xff, 0xec, 0xff, 0xec, 0xff, 0xca, 0x00, 0xca, 0x00, + 0xac, 0x01, 0xae, 0x01, 0x86, 0x02, 0x88, 0x02, 0x64, 0x03, 0x64, 0x03, + 0x37, 0x04, 0x39, 0x04, 0x08, 0x05, 0x06, 0x05, 0xcd, 0x05, 0xcf, 0x05, + 0x85, 0x06, 0x87, 0x06, 0x39, 0x07, 0x39, 0x07, 0xd7, 0x07, 0xd8, 0x07, + 0x6d, 0x08, 0x6d, 0x08, 0xef, 0x08, 0xef, 0x08, 0x5f, 0x09, 0x60, 0x09, + 0xc1, 0x09, 0xc1, 0x09, 0x0c, 0x0a, 0x0d, 0x0a, 0x47, 0x0a, 0x48, 0x0a, + 0x71, 0x0a, 0x6f, 0x0a, 0x83, 0x0a, 0x84, 0x0a, 0x84, 0x0a, 0x84, 0x0a, + 0x72, 0x0a, 0x74, 0x0a, 0x4c, 0x0a, 0x4d, 0x0a, 0x1a, 0x0a, 0x1b, 0x0a, + 0xd1, 0x09, 0xd1, 0x09, 0x7d, 0x09, 0x7e, 0x09, 0x17, 0x09, 0x19, 0x09, + 0xa4, 0x08, 0xa4, 0x08, 0x22, 0x08, 0x24, 0x08, 0x95, 0x07, 0x97, 0x07, + 0xff, 0x06, 0xfd, 0x06, 0x5a, 0x06, 0x5d, 0x06, 0xb1, 0x05, 0xb2, 0x05, + 0x00, 0x05, 0x02, 0x05, 0x49, 0x04, 0x49, 0x04, 0x8d, 0x03, 0x90, 0x03, + 0xd1, 0x02, 0xcf, 0x02, 0x0d, 0x02, 0x11, 0x02, 0x50, 0x01, 0x4e, 0x01, + 0x8b, 0x00, 0x8d, 0x00, 0xd0, 0xff, 0xd0, 0xff, 0x13, 0xff, 0x13, 0xff, + 0x5e, 0xfe, 0x60, 0xfe, 0xae, 0xfd, 0xad, 0xfd, 0x03, 0xfd, 0x03, 0xfd, + 0x64, 0xfc, 0x64, 0xfc, 0xc9, 0xfb, 0xcb, 0xfb, 0x3d, 0xfb, 0x3c, 0xfb, + 0xb7, 0xfa, 0xba, 0xfa, 0x41, 0xfa, 0x40, 0xfa, 0xd8, 0xf9, 0xd8, 0xf9, + 0x76, 0xf9, 0x77, 0xf9, 0x2a, 0xf9, 0x2b, 0xf9, 0xe6, 0xf8, 0xe6, 0xf8, + 0xb5, 0xf8, 0xb5, 0xf8, 0x91, 0xf8, 0x90, 0xf8, 0x79, 0xf8, 0x79, 0xf8, + 0x72, 0xf8, 0x73, 0xf8, 0x7b, 0xf8, 0x7b, 0xf8, 0x8b, 0xf8, 0x8c, 0xf8, + 0xb1, 0xf8, 0xb1, 0xf8, 0xdd, 0xf8, 0xdd, 0xf8, 0x19, 0xf9, 0x1b, 0xf9, + 0x63, 0xf9, 0x60, 0xf9, 0xaf, 0xf9, 0xb1, 0xf9, 0x0e, 0xfa, 0x0d, 0xfa, + 0x6d, 0xfa, 0x6f, 0xfa, 0xdd, 0xfa, 0xdd, 0xfa, 0x4e, 0xfb, 0x4e, 0xfb, + 0xc4, 0xfb, 0xc6, 0xfb, 0x45, 0xfc, 0x42, 0xfc, 0xc0, 0xfc, 0xc4, 0xfc, + 0x47, 0xfd, 0x44, 0xfd, 0xc7, 0xfd, 0xca, 0xfd, 0x4b, 0xfe, 0x4c, 0xfe, + 0xce, 0xfe, 0xcf, 0xfe, 0x4c, 0xff, 0x4d, 0xff, 0xcc, 0xff, 0xcb, 0xff, + 0x42, 0x00, 0x43, 0x00, 0xb6, 0x00, 0xb5, 0x00, 0x22, 0x01, 0x25, 0x01, + 0x8b, 0x01, 0x8b, 0x01, 0xee, 0x01, 0xed, 0x01, 0x45, 0x02, 0x48, 0x02, + 0x95, 0x02, 0x94, 0x02, 0xdb, 0x02, 0xdd, 0x02, 0x18, 0x03, 0x19, 0x03, + 0x4c, 0x03, 0x4b, 0x03, 0x76, 0x03, 0x78, 0x03, 0x94, 0x03, 0x95, 0x03, + 0xad, 0x03, 0xad, 0x03, 0xb8, 0x03, 0xb9, 0x03, 0xbc, 0x03, 0xbc, 0x03, + 0xb4, 0x03, 0xb6, 0x03, 0xa3, 0x03, 0xa3, 0x03, 0x8b, 0x03, 0x8b, 0x03, + 0x69, 0x03, 0x6b, 0x03, 0x43, 0x03, 0x42, 0x03, 0x10, 0x03, 0x12, 0x03, + 0xdb, 0x02, 0xda, 0x02, 0x9e, 0x02, 0xa0, 0x02, 0x5d, 0x02, 0x5d, 0x02, + 0x16, 0x02, 0x19, 0x02, 0xd0, 0x01, 0xcf, 0x01, 0x84, 0x01, 0x86, 0x01, + 0x39, 0x01, 0x38, 0x01, 0xe8, 0x00, 0xe9, 0x00, 0x9d, 0x00, 0x9e, 0x00, + 0x4f, 0x00, 0x50, 0x00, 0x06, 0x00, 0x07, 0x00, 0xbf, 0xff, 0xc0, 0xff, + 0x79, 0xff, 0x7a, 0xff, 0x3c, 0xff, 0x3e, 0xff, 0x01, 0xff, 0x01, 0xff, + 0xcd, 0xfe, 0xce, 0xfe, 0xa0, 0xfe, 0xa3, 0xfe, 0x79, 0xfe, 0x79, 0xfe, + 0x5b, 0xfe, 0x5b, 0xfe, 0x40, 0xfe, 0x41, 0xfe, 0x31, 0xfe, 0x31, 0xfe, + 0x26, 0xfe, 0x28, 0xfe, 0x27, 0xfe, 0x27, 0xfe, 0x2f, 0xfe, 0x2f, 0xfe, + 0x3a, 0xfe, 0x3c, 0xfe, 0x53, 0xfe, 0x53, 0xfe, 0x6e, 0xfe, 0x71, 0xfe, + 0x96, 0xfe, 0x96, 0xfe, 0xc0, 0xfe, 0xc1, 0xfe, 0xf2, 0xfe, 0xf2, 0xfe, + 0x28, 0xff, 0x2a, 0xff, 0x64, 0xff, 0x65, 0xff, 0xa4, 0xff, 0xa5, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0x2d, 0x00, 0x2f, 0x00, 0x72, 0x00, 0x75, 0x00, + 0xbd, 0x00, 0xbd, 0x00, 0x02, 0x01, 0x05, 0x01, 0x4a, 0x01, 0x4a, 0x01, + 0x8d, 0x01, 0x8f, 0x01, 0xcf, 0x01, 0xd0, 0x01, 0x0e, 0x02, 0x0f, 0x02, + 0x45, 0x02, 0x47, 0x02, 0x7d, 0x02, 0x7f, 0x02, 0xaa, 0x02, 0xab, 0x02, + 0xd3, 0x02, 0xd4, 0x02, 0xf4, 0x02, 0xf4, 0x02, 0x0b, 0x03, 0x0c, 0x03, + 0x1f, 0x03, 0x1f, 0x03, 0x28, 0x03, 0x28, 0x03, 0x25, 0x03, 0x27, 0x03, + 0x20, 0x03, 0x21, 0x03, 0x0e, 0x03, 0x0f, 0x03, 0xf4, 0x02, 0xf6, 0x02, + 0xd1, 0x02, 0xd3, 0x02, 0xa6, 0x02, 0xa7, 0x02, 0x73, 0x02, 0x73, 0x02, + 0x35, 0x02, 0x36, 0x02, 0xed, 0x01, 0xee, 0x01, 0xa0, 0x01, 0xa3, 0x01, + 0x49, 0x01, 0x4a, 0x01, 0xec, 0x00, 0xec, 0x00, 0x86, 0x00, 0x88, 0x00, + 0x17, 0x00, 0x17, 0x00, 0xa6, 0xff, 0xa8, 0xff, 0x2b, 0xff, 0x2b, 0xff, + 0xaf, 0xfe, 0xae, 0xfe, 0x2e, 0xfe, 0x30, 0xfe, 0xaa, 0xfd, 0xa9, 0xfd, + 0x2a, 0xfd, 0x2c, 0xfd, 0xa6, 0xfc, 0xa6, 0xfc, 0x2b, 0xfc, 0x2b, 0xfc, + 0xaf, 0xfb, 0xb2, 0xfb, 0x3f, 0xfb, 0x3e, 0xfb, 0xd5, 0xfa, 0xd5, 0xfa, + 0x70, 0xfa, 0x72, 0xfa, 0x1d, 0xfa, 0x1c, 0xfa, 0xcb, 0xf9, 0xcc, 0xf9, + 0x8e, 0xf9, 0x8f, 0xf9, 0x59, 0xf9, 0x5a, 0xf9, 0x31, 0xf9, 0x33, 0xf9, + 0x1a, 0xf9, 0x1b, 0xf9, 0x0b, 0xf9, 0x0c, 0xf9, 0x0d, 0xf9, 0x0f, 0xf9, + 0x1b, 0xf9, 0x19, 0xf9, 0x34, 0xf9, 0x38, 0xf9, 0x5c, 0xf9, 0x5b, 0xf9, + 0x90, 0xf9, 0x8f, 0xf9, 0xce, 0xf9, 0xcf, 0xf9, 0x1a, 0xfa, 0x19, 0xfa, + 0x6e, 0xfa, 0x6f, 0xfa, 0xd0, 0xfa, 0xd1, 0xfa, 0x3b, 0xfb, 0x3a, 0xfb, + 0xb0, 0xfb, 0xb1, 0xfb, 0x2f, 0xfc, 0x2e, 0xfc, 0xb2, 0xfc, 0xb2, 0xfc, + 0x41, 0xfd, 0x42, 0xfd, 0xd5, 0xfd, 0xd4, 0xfd, 0x72, 0xfe, 0x73, 0xfe, + 0x13, 0xff, 0x12, 0xff, 0xb9, 0xff, 0xbb, 0xff, 0x66, 0x00, 0x65, 0x00, + 0x12, 0x01, 0x12, 0x01, 0xc7, 0x01, 0xc7, 0x01, 0x77, 0x02, 0x77, 0x02, + 0x2b, 0x03, 0x2a, 0x03, 0xdc, 0x03, 0xdd, 0x03, 0x8b, 0x04, 0x8d, 0x04, + 0x3b, 0x05, 0x3d, 0x05, 0xe2, 0x05, 0xe1, 0x05, 0x83, 0x06, 0x85, 0x06, + 0x1a, 0x07, 0x1b, 0x07, 0xa8, 0x07, 0xa8, 0x07, 0x2a, 0x08, 0x2a, 0x08, + 0x9b, 0x08, 0x9b, 0x08, 0x00, 0x09, 0x02, 0x09, 0x53, 0x09, 0x54, 0x09, + 0x97, 0x09, 0x97, 0x09, 0xc9, 0x09, 0xca, 0x09, 0xe7, 0x09, 0xe6, 0x09, + 0xf5, 0x09, 0xf7, 0x09, 0xef, 0x09, 0xee, 0x09, 0xd7, 0x09, 0xd9, 0x09, + 0xb0, 0x09, 0xae, 0x09, 0x76, 0x09, 0x79, 0x09, 0x2e, 0x09, 0x2d, 0x09, + 0xd5, 0x08, 0xd6, 0x08, 0x6f, 0x08, 0x70, 0x08, 0xf6, 0x07, 0xf8, 0x07, + 0x77, 0x07, 0x77, 0x07, 0xe7, 0x06, 0xe5, 0x06, 0x49, 0x06, 0x4c, 0x06, + 0xa6, 0x05, 0xa5, 0x05, 0xf2, 0x04, 0xf2, 0x04, 0x38, 0x04, 0x39, 0x04, + 0x74, 0x03, 0x76, 0x03, 0xaa, 0x02, 0xab, 0x02, 0xd8, 0x01, 0xd8, 0x01, + 0x02, 0x01, 0x02, 0x01, 0x23, 0x00, 0x24, 0x00, 0x44, 0xff, 0x44, 0xff, + 0x61, 0xfe, 0x62, 0xfe, 0x7f, 0xfd, 0x7f, 0xfd, 0x9e, 0xfc, 0xa0, 0xfc, + 0xc2, 0xfb, 0xc2, 0xfb, 0xee, 0xfa, 0xef, 0xfa, 0x1f, 0xfa, 0x20, 0xfa, + 0x5b, 0xf9, 0x5c, 0xf9, 0xa5, 0xf8, 0xa6, 0xf8, 0xf9, 0xf7, 0xf9, 0xf7, + 0x61, 0xf7, 0x62, 0xf7, 0xd4, 0xf6, 0xd5, 0xf6, 0x5f, 0xf6, 0x5f, 0xf6, + 0xf7, 0xf5, 0xf9, 0xf5, 0xa9, 0xf5, 0xab, 0xf5, 0x6b, 0xf5, 0x6d, 0xf5, + 0x44, 0xf5, 0x45, 0xf5, 0x32, 0xf5, 0x33, 0xf5, 0x30, 0xf5, 0x30, 0xf5, + 0x46, 0xf5, 0x45, 0xf5, 0x69, 0xf5, 0x6d, 0xf5, 0xa0, 0xf5, 0x9f, 0xf5, + 0xe8, 0xf5, 0xea, 0xf5, 0x3f, 0xf6, 0x40, 0xf6, 0xa7, 0xf6, 0xa7, 0xf6, + 0x1f, 0xf7, 0x20, 0xf7, 0x9e, 0xf7, 0xa1, 0xf7, 0x35, 0xf8, 0x36, 0xf8, + 0xcf, 0xf8, 0xd0, 0xf8, 0x77, 0xf9, 0x7a, 0xf9, 0x2d, 0xfa, 0x2d, 0xfa, + 0xe4, 0xfa, 0xe7, 0xfa, 0xab, 0xfb, 0xad, 0xfb, 0x74, 0xfc, 0x75, 0xfc, + 0x44, 0xfd, 0x48, 0xfd, 0x1e, 0xfe, 0x1d, 0xfe, 0xf5, 0xfe, 0xf9, 0xfe, + 0xd5, 0xff, 0xd5, 0xff, 0xb0, 0x00, 0xb2, 0x00, 0x8e, 0x01, 0x8d, 0x01, + 0x67, 0x02, 0x69, 0x02, 0x40, 0x03, 0x42, 0x03, 0x15, 0x04, 0x15, 0x04, + 0xe2, 0x04, 0xe5, 0x04, 0xa8, 0x05, 0xa8, 0x05, 0x63, 0x06, 0x66, 0x06, + 0x13, 0x07, 0x14, 0x07, 0xb5, 0x07, 0xb7, 0x07, 0x48, 0x08, 0x4a, 0x08, + 0xcd, 0x08, 0xce, 0x08, 0x40, 0x09, 0x40, 0x09, 0x9d, 0x09, 0x9f, 0x09, + 0xef, 0x09, 0xef, 0x09, 0x27, 0x0a, 0x29, 0x0a, 0x50, 0x0a, 0x52, 0x0a, + 0x67, 0x0a, 0x68, 0x0a, 0x66, 0x0a, 0x68, 0x0a, 0x58, 0x0a, 0x59, 0x0a, + 0x34, 0x0a, 0x34, 0x0a, 0xff, 0x09, 0x02, 0x0a, 0xba, 0x09, 0xb9, 0x09, + 0x63, 0x09, 0x66, 0x09, 0xfe, 0x08, 0x00, 0x09, 0x8a, 0x08, 0x8b, 0x08, + 0x09, 0x08, 0x0b, 0x08, 0x7b, 0x07, 0x7b, 0x07, 0xe1, 0x06, 0xe3, 0x06, + 0x3f, 0x06, 0x40, 0x06, 0x90, 0x05, 0x92, 0x05, 0xe1, 0x04, 0xe2, 0x04, + 0x26, 0x04, 0x28, 0x04, 0x6a, 0x03, 0x6c, 0x03, 0xa9, 0x02, 0xa9, 0x02, + 0xe5, 0x01, 0xe8, 0x01, 0x23, 0x01, 0x23, 0x01, 0x5b, 0x00, 0x5e, 0x00, + 0x9c, 0xff, 0x9e, 0xff, 0xdc, 0xfe, 0xdc, 0xfe, 0x21, 0xfe, 0x23, 0xfe, + 0x6b, 0xfd, 0x6c, 0xfd, 0xbf, 0xfc, 0xbf, 0xfc, 0x15, 0xfc, 0x1a, 0xfc, + 0x7e, 0xfb, 0x7d, 0xfb, 0xe7, 0xfa, 0xea, 0xfa, 0x63, 0xfa, 0x64, 0xfa, + 0xe7, 0xf9, 0xe9, 0xf9, 0x7b, 0xf9, 0x7a, 0xf9, 0x1a, 0xf9, 0x1e, 0xf9, + 0xca, 0xf8, 0xcb, 0xf8, 0x88, 0xf8, 0x8a, 0xf8, 0x54, 0xf8, 0x56, 0xf8, + 0x32, 0xf8, 0x31, 0xf8, 0x1b, 0xf8, 0x1e, 0xf8, 0x16, 0xf8, 0x16, 0xf8, + 0x1d, 0xf8, 0x1d, 0xf8, 0x36, 0xf8, 0x39, 0xf8, 0x5b, 0xf8, 0x5c, 0xf8, + 0x8f, 0xf8, 0x92, 0xf8, 0xd2, 0xf8, 0xd2, 0xf8, 0x1b, 0xf9, 0x1e, 0xf9, + 0x78, 0xf9, 0x78, 0xf9, 0xd6, 0xf9, 0xd9, 0xf9, 0x46, 0xfa, 0x47, 0xfa, + 0xb6, 0xfa, 0xb9, 0xfa, 0x34, 0xfb, 0x38, 0xfb, 0xb7, 0xfb, 0xb7, 0xfb, + 0x3d, 0xfc, 0x40, 0xfc, 0xc9, 0xfc, 0xcb, 0xfc, 0x55, 0xfd, 0x56, 0xfd, + 0xe4, 0xfd, 0xe6, 0xfd, 0x70, 0xfe, 0x72, 0xfe, 0xfc, 0xfe, 0xff, 0xfe, + 0x88, 0xff, 0x89, 0xff, 0x0e, 0x00, 0x10, 0x00, 0x91, 0x00, 0x92, 0x00, + 0x0f, 0x01, 0x10, 0x01, 0x84, 0x01, 0x85, 0x01, 0xf6, 0x01, 0xf7, 0x01, + 0x5d, 0x02, 0x5f, 0x02, 0xbd, 0x02, 0xbe, 0x02, 0x12, 0x03, 0x14, 0x03, + 0x5e, 0x03, 0x61, 0x03, 0xa0, 0x03, 0xa1, 0x03, 0xd6, 0x03, 0xd8, 0x03, + 0x00, 0x04, 0x02, 0x04, 0x23, 0x04, 0x24, 0x04, 0x37, 0x04, 0x39, 0x04, + 0x45, 0x04, 0x46, 0x04, 0x42, 0x04, 0x43, 0x04, 0x39, 0x04, 0x3b, 0x04, + 0x25, 0x04, 0x27, 0x04, 0x06, 0x04, 0x06, 0x04, 0xdd, 0x03, 0xde, 0x03, + 0xae, 0x03, 0xae, 0x03, 0x73, 0x03, 0x76, 0x03, 0x32, 0x03, 0x33, 0x03, + 0xec, 0x02, 0xed, 0x02, 0x9c, 0x02, 0x9e, 0x02, 0x4d, 0x02, 0x4e, 0x02, + 0xf4, 0x01, 0xf6, 0x01, 0x9d, 0x01, 0x9e, 0x01, 0x40, 0x01, 0x42, 0x01, + 0xe3, 0x00, 0xe5, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x2b, 0x00, 0x2e, 0x00, + 0xd5, 0xff, 0xd5, 0xff, 0x7e, 0xff, 0x7f, 0xff, 0x2f, 0xff, 0x31, 0xff, + 0xe0, 0xfe, 0xe1, 0xfe, 0x99, 0xfe, 0x9b, 0xfe, 0x59, 0xfe, 0x59, 0xfe, + 0x21, 0xfe, 0x22, 0xfe, 0xee, 0xfd, 0xf0, 0xfd, 0xc6, 0xfd, 0xc9, 0xfd, + 0xa6, 0xfd, 0xa7, 0xfd, 0x8f, 0xfd, 0x91, 0xfd, 0x80, 0xfd, 0x81, 0xfd, + 0x7d, 0xfd, 0x7e, 0xfd, 0x7f, 0xfd, 0x82, 0xfd, 0x90, 0xfd, 0x90, 0xfd, + 0xa5, 0xfd, 0xa9, 0xfd, 0xc7, 0xfd, 0xc7, 0xfd, 0xf0, 0xfd, 0xf2, 0xfd, + 0x20, 0xfe, 0x21, 0xfe, 0x5a, 0xfe, 0x5c, 0xfe, 0x9b, 0xfe, 0x9c, 0xfe, + 0xe0, 0xfe, 0xe3, 0xfe, 0x2d, 0xff, 0x2e, 0xff, 0x7c, 0xff, 0x80, 0xff, + 0xd3, 0xff, 0xd1, 0xff, 0x24, 0x00, 0x2a, 0x00, 0x81, 0x00, 0x80, 0x00, + 0xd6, 0x00, 0xd8, 0x00, 0x30, 0x01, 0x31, 0x01, 0x86, 0x01, 0x88, 0x01, + 0xda, 0x01, 0xdb, 0x01, 0x2c, 0x02, 0x2d, 0x02, 0x76, 0x02, 0x77, 0x02, + 0xbd, 0x02, 0xbe, 0x02, 0xfe, 0x02, 0x00, 0x03, 0x36, 0x03, 0x37, 0x03, + 0x67, 0x03, 0x69, 0x03, 0x8e, 0x03, 0x91, 0x03, 0xae, 0x03, 0xb0, 0x03, + 0xc6, 0x03, 0xc8, 0x03, 0xd2, 0x03, 0xd3, 0x03, 0xd6, 0x03, 0xd7, 0x03, + 0xcd, 0x03, 0xd1, 0x03, 0xbc, 0x03, 0xbe, 0x03, 0xa2, 0x03, 0xa4, 0x03, + 0x7b, 0x03, 0x7c, 0x03, 0x4a, 0x03, 0x4c, 0x03, 0x0f, 0x03, 0x11, 0x03, + 0xc9, 0x02, 0xca, 0x02, 0x79, 0x02, 0x7c, 0x02, 0x20, 0x02, 0x21, 0x02, + 0xbb, 0x01, 0xbf, 0x01, 0x51, 0x01, 0x52, 0x01, 0xdc, 0x00, 0xdd, 0x00, + 0x5b, 0x00, 0x5f, 0x00, 0xd7, 0xff, 0xd8, 0xff, 0x4c, 0xff, 0x4e, 0xff, + 0xb9, 0xfe, 0xbd, 0xfe, 0x27, 0xfe, 0x28, 0xfe, 0x8e, 0xfd, 0x93, 0xfd, + 0xfd, 0xfc, 0xfd, 0xfc, 0x68, 0xfc, 0x6b, 0xfc, 0xd9, 0xfb, 0xd9, 0xfb, + 0x4f, 0xfb, 0x51, 0xfb, 0xce, 0xfa, 0xd0, 0xfa, 0x55, 0xfa, 0x59, 0xfa, + 0xea, 0xf9, 0xea, 0xf9, 0x86, 0xf9, 0x89, 0xf9, 0x33, 0xf9, 0x35, 0xf9, + 0xec, 0xf8, 0xee, 0xf8, 0xb3, 0xf8, 0xb6, 0xf8, 0x8b, 0xf8, 0x8d, 0xf8, + 0x70, 0xf8, 0x70, 0xf8, 0x62, 0xf8, 0x66, 0xf8, 0x66, 0xf8, 0x67, 0xf8, + 0x74, 0xf8, 0x77, 0xf8, 0x94, 0xf8, 0x97, 0xf8, 0xc2, 0xf8, 0xc4, 0xf8, + 0xfe, 0xf8, 0x01, 0xf9, 0x46, 0xf9, 0x48, 0xf9, 0x9d, 0xf9, 0x9f, 0xf9, + 0xff, 0xf9, 0x03, 0xfa, 0x70, 0xfa, 0x70, 0xfa, 0xea, 0xfa, 0xed, 0xfa, + 0x6e, 0xfb, 0x6f, 0xfb, 0xfe, 0xfb, 0x01, 0xfc, 0x92, 0xfc, 0x95, 0xfc, + 0x35, 0xfd, 0x38, 0xfd, 0xdd, 0xfd, 0xdf, 0xfd, 0x8e, 0xfe, 0x92, 0xfe, + 0x4a, 0xff, 0x4b, 0xff, 0x03, 0x00, 0x07, 0x00, 0xcb, 0x00, 0xcd, 0x00, + 0x8e, 0x01, 0x90, 0x01, 0x59, 0x02, 0x5c, 0x02, 0x24, 0x03, 0x25, 0x03, + 0xee, 0x03, 0xf3, 0x03, 0xb9, 0x04, 0xbb, 0x04, 0x7e, 0x05, 0x83, 0x05, + 0x41, 0x06, 0x42, 0x06, 0xf9, 0x06, 0xfd, 0x06, 0xa8, 0x07, 0xaa, 0x07, + 0x4c, 0x08, 0x4f, 0x08, 0xe1, 0x08, 0xe4, 0x08, 0x68, 0x09, 0x69, 0x09, + 0xdc, 0x09, 0xde, 0x09, 0x3d, 0x0a, 0x40, 0x0a, 0x8b, 0x0a, 0x8d, 0x0a, + 0xc5, 0x0a, 0xc7, 0x0a, 0xec, 0x0a, 0xed, 0x0a, 0xfc, 0x0a, 0x00, 0x0b, + 0xfa, 0x0a, 0xf9, 0x0a, 0xe1, 0x0a, 0xe5, 0x0a, 0xb7, 0x0a, 0xb7, 0x0a, + 0x78, 0x0a, 0x7b, 0x0a, 0x27, 0x0a, 0x2b, 0x0a, 0xc4, 0x09, 0xc5, 0x09, + 0x52, 0x09, 0x56, 0x09, 0xce, 0x08, 0xd0, 0x08, 0x3d, 0x08, 0x3e, 0x08, + 0x9c, 0x07, 0x9f, 0x07, 0xed, 0x06, 0xec, 0x06, 0x31, 0x06, 0x35, 0x06, + 0x6b, 0x05, 0x6b, 0x05, 0x97, 0x04, 0x9a, 0x04, 0xbb, 0x03, 0xbd, 0x03, + 0xd3, 0x02, 0xd6, 0x02, 0xe8, 0x01, 0xe9, 0x01, 0xee, 0x00, 0xf1, 0x00, + 0xf5, 0xff, 0xf7, 0xff, 0xf3, 0xfe, 0xf5, 0xfe, 0xf4, 0xfd, 0xf5, 0xfd, + 0xf2, 0xfc, 0xf4, 0xfc, 0xf4, 0xfb, 0xf6, 0xfb, 0xfd, 0xfa, 0xff, 0xfa, + 0x0a, 0xfa, 0x0c, 0xfa, 0x26, 0xf9, 0x29, 0xf9, 0x4b, 0xf8, 0x4c, 0xf8, + 0x84, 0xf7, 0x86, 0xf7, 0xc5, 0xf6, 0xc8, 0xf6, 0x22, 0xf6, 0x23, 0xf6, + 0x8b, 0xf5, 0x8f, 0xf5, 0x10, 0xf5, 0x12, 0xf5, 0xab, 0xf4, 0xac, 0xf4, + 0x5b, 0xf4, 0x5f, 0xf4, 0x26, 0xf4, 0x26, 0xf4, 0x01, 0xf4, 0x04, 0xf4, + 0xfa, 0xf3, 0xfa, 0xf3, 0x01, 0xf4, 0x05, 0xf4, 0x25, 0xf4, 0x26, 0xf4, + 0x57, 0xf4, 0x5a, 0xf4, 0xa1, 0xf4, 0xa2, 0xf4, 0xfc, 0xf4, 0xfd, 0xf4, + 0x68, 0xf5, 0x6b, 0xf5, 0xe7, 0xf5, 0xe9, 0xf5, 0x74, 0xf6, 0x77, 0xf6, + 0x13, 0xf7, 0x15, 0xf7, 0xbe, 0xf7, 0xc1, 0xf7, 0x77, 0xf8, 0x7a, 0xf8, + 0x3c, 0xf9, 0x3e, 0xf9, 0x0a, 0xfa, 0x0e, 0xfa, 0xe8, 0xfa, 0xea, 0xfa, + 0xc8, 0xfb, 0xcc, 0xfb, 0xb5, 0xfc, 0xb8, 0xfc, 0xa7, 0xfd, 0xab, 0xfd, + 0x9c, 0xfe, 0xa0, 0xfe, 0x99, 0xff, 0x9d, 0xff, 0x93, 0x00, 0x96, 0x00, + 0x92, 0x01, 0x95, 0x01, 0x8e, 0x02, 0x91, 0x02, 0x85, 0x03, 0x88, 0x03, + 0x7b, 0x04, 0x7e, 0x04, 0x66, 0x05, 0x67, 0x05, 0x49, 0x06, 0x4d, 0x06, + 0x20, 0x07, 0x23, 0x07, 0xe9, 0x07, 0xec, 0x07, 0xa2, 0x08, 0xa5, 0x08, + 0x49, 0x09, 0x4e, 0x09, 0xe0, 0x09, 0xe1, 0x09, 0x5f, 0x0a, 0x63, 0x0a, + 0xcb, 0x0a, 0xce, 0x0a, 0x20, 0x0b, 0x22, 0x0b, 0x61, 0x0b, 0x64, 0x0b, + 0x89, 0x0b, 0x8d, 0x0b, 0x9f, 0x0b, 0xa0, 0x0b, 0x9b, 0x0b, 0x9f, 0x0b, + 0x85, 0x0b, 0x87, 0x0b, 0x58, 0x0b, 0x59, 0x0b, 0x13, 0x0b, 0x17, 0x0b, + 0xc0, 0x0a, 0xc1, 0x0a, 0x58, 0x0a, 0x59, 0x0a, 0xdc, 0x09, 0xe1, 0x09, + 0x57, 0x09, 0x57, 0x09, 0xb9, 0x08, 0xbd, 0x08, 0x14, 0x08, 0x15, 0x08, + 0x60, 0x07, 0x63, 0x07, 0x9e, 0x06, 0xa2, 0x06, 0xda, 0x05, 0xdb, 0x05, + 0x06, 0x05, 0x09, 0x05, 0x31, 0x04, 0x32, 0x04, 0x53, 0x03, 0x56, 0x03, + 0x73, 0x02, 0x75, 0x02, 0x92, 0x01, 0x93, 0x01, 0xae, 0x00, 0xb2, 0x00, + 0xcc, 0xff, 0xcd, 0xff, 0xec, 0xfe, 0xef, 0xfe, 0x12, 0xfe, 0x14, 0xfe, + 0x3e, 0xfd, 0x3e, 0xfd, 0x71, 0xfc, 0x73, 0xfc, 0xab, 0xfb, 0xab, 0xfb, + 0xf2, 0xfa, 0xf3, 0xfa, 0x42, 0xfa, 0x45, 0xfa, 0xa4, 0xf9, 0xa5, 0xf9, + 0x12, 0xf9, 0x14, 0xf9, 0x90, 0xf8, 0x92, 0xf8, 0x1f, 0xf8, 0x22, 0xf8, + 0xbd, 0xf7, 0xc0, 0xf7, 0x71, 0xf7, 0x73, 0xf7, 0x33, 0xf7, 0x35, 0xf7, + 0x09, 0xf7, 0x0b, 0xf7, 0xf4, 0xf6, 0xf5, 0xf6, 0xea, 0xf6, 0xed, 0xf6, + 0xfc, 0xf6, 0xfc, 0xf6, 0x18, 0xf7, 0x1b, 0xf7, 0x47, 0xf7, 0x4a, 0xf7, + 0x8b, 0xf7, 0x8b, 0xf7, 0xd6, 0xf7, 0xd9, 0xf7, 0x3a, 0xf8, 0x3b, 0xf8, + 0xa4, 0xf8, 0xa6, 0xf8, 0x1e, 0xf9, 0x1f, 0xf9, 0xa0, 0xf9, 0xa4, 0xf9, + 0x33, 0xfa, 0x33, 0xfa, 0xc9, 0xfa, 0xcc, 0xfa, 0x6c, 0xfb, 0x6c, 0xfb, + 0x12, 0xfc, 0x13, 0xfc, 0xbe, 0xfc, 0xbf, 0xfc, 0x6a, 0xfd, 0x6c, 0xfd, + 0x1c, 0xfe, 0x1d, 0xfe, 0xca, 0xfe, 0xcd, 0xfe, 0x78, 0xff, 0x79, 0xff, + 0x21, 0x00, 0x22, 0x00, 0xc4, 0x00, 0xc7, 0x00, 0x61, 0x01, 0x64, 0x01, + 0xf8, 0x01, 0xf8, 0x01, 0x85, 0x02, 0x87, 0x02, 0x09, 0x03, 0x09, 0x03, + 0x83, 0x03, 0x85, 0x03, 0xef, 0x03, 0xf1, 0x03, 0x52, 0x04, 0x54, 0x04, + 0xa7, 0x04, 0xa9, 0x04, 0xed, 0x04, 0xed, 0x04, 0x2a, 0x05, 0x2c, 0x05, + 0x55, 0x05, 0x56, 0x05, 0x73, 0x05, 0x77, 0x05, 0x85, 0x05, 0x86, 0x05, + 0x87, 0x05, 0x88, 0x05, 0x7c, 0x05, 0x7f, 0x05, 0x63, 0x05, 0x64, 0x05, + 0x3e, 0x05, 0x41, 0x05, 0x0c, 0x05, 0x0f, 0x05, 0xcf, 0x04, 0xd0, 0x04, + 0x85, 0x04, 0x88, 0x04, 0x2f, 0x04, 0x31, 0x04, 0xd5, 0x03, 0xd7, 0x03, + 0x6d, 0x03, 0x70, 0x03, 0xff, 0x02, 0x00, 0x03, 0x8d, 0x02, 0x90, 0x02, + 0x10, 0x02, 0x11, 0x02, 0x96, 0x01, 0x99, 0x01, 0x13, 0x01, 0x14, 0x01, + 0x94, 0x00, 0x95, 0x00, 0x11, 0x00, 0x10, 0x00, 0x91, 0xff, 0x95, 0xff, + 0x16, 0xff, 0x15, 0xff, 0x9b, 0xfe, 0x9d, 0xfe, 0x29, 0xfe, 0x2b, 0xfe, + 0xbf, 0xfd, 0xbe, 0xfd, 0x59, 0xfd, 0x5d, 0xfd, 0xfe, 0xfc, 0x00, 0xfd, + 0xac, 0xfc, 0xaf, 0xfc, 0x69, 0xfc, 0x6b, 0xfc, 0x2e, 0xfc, 0x2e, 0xfc, + 0x01, 0xfc, 0x03, 0xfc, 0xdd, 0xfb, 0xdd, 0xfb, 0xc9, 0xfb, 0xcb, 0xfb, + 0xc0, 0xfb, 0xc1, 0xfb, 0xc5, 0xfb, 0xc4, 0xfb, 0xd5, 0xfb, 0xd8, 0xfb, + 0xf4, 0xfb, 0xf4, 0xfb, 0x1f, 0xfc, 0x21, 0xfc, 0x54, 0xfc, 0x55, 0xfc, + 0x97, 0xfc, 0x98, 0xfc, 0xe3, 0xfc, 0xe6, 0xfc, 0x3c, 0xfd, 0x3c, 0xfd, + 0x9e, 0xfd, 0xa0, 0xfd, 0x09, 0xfe, 0x09, 0xfe, 0x7c, 0xfe, 0x7d, 0xfe, + 0xf3, 0xfe, 0xf5, 0xfe, 0x72, 0xff, 0x72, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0x73, 0x00, 0x75, 0x00, 0xf9, 0x00, 0xf9, 0x00, 0x7b, 0x01, 0x7c, 0x01, + 0xfa, 0x01, 0xfc, 0x01, 0x79, 0x02, 0x78, 0x02, 0xef, 0x02, 0xf3, 0x02, + 0x61, 0x03, 0x61, 0x03, 0xcb, 0x03, 0xce, 0x03, 0x2b, 0x04, 0x2d, 0x04, + 0x85, 0x04, 0x86, 0x04, 0xcf, 0x04, 0xd3, 0x04, 0x13, 0x05, 0x13, 0x05, + 0x49, 0x05, 0x4b, 0x05, 0x72, 0x05, 0x72, 0x05, 0x8e, 0x05, 0x90, 0x05, + 0x9e, 0x05, 0x9d, 0x05, 0x9f, 0x05, 0xa1, 0x05, 0x93, 0x05, 0x93, 0x05, + 0x79, 0x05, 0x7b, 0x05, 0x52, 0x05, 0x53, 0x05, 0x1d, 0x05, 0x1e, 0x05, + 0xdb, 0x04, 0xde, 0x04, 0x8c, 0x04, 0x8d, 0x04, 0x32, 0x04, 0x34, 0x04, + 0xca, 0x03, 0xca, 0x03, 0x52, 0x03, 0x56, 0x03, 0xd4, 0x02, 0xd5, 0x02, + 0x47, 0x02, 0x47, 0x02, 0xae, 0x01, 0xb2, 0x01, 0x0e, 0x01, 0x0f, 0x01, + 0x61, 0x00, 0x65, 0x00, 0xaf, 0xff, 0xb0, 0xff, 0xf4, 0xfe, 0xf7, 0xfe, + 0x38, 0xfe, 0x3a, 0xfe, 0x77, 0xfd, 0x78, 0xfd, 0xbb, 0xfc, 0xba, 0xfc, + 0xfc, 0xfb, 0xff, 0xfb, 0x47, 0xfb, 0x47, 0xfb, 0x98, 0xfa, 0x98, 0xfa, + 0xee, 0xf9, 0xf2, 0xf9, 0x5a, 0xf9, 0x5a, 0xf9, 0xcb, 0xf8, 0xcc, 0xf8, + 0x51, 0xf8, 0x53, 0xf8, 0xe5, 0xf7, 0xe6, 0xf7, 0x8b, 0xf7, 0x8e, 0xf7, + 0x46, 0xf7, 0x47, 0xf7, 0x0e, 0xf7, 0x10, 0xf7, 0xee, 0xf6, 0xef, 0xf6, + 0xdc, 0xf6, 0xdd, 0xf6, 0xdf, 0xf6, 0xdf, 0xf6, 0xf0, 0xf6, 0xf2, 0xf6, + 0x15, 0xf7, 0x15, 0xf7, 0x4a, 0xf7, 0x4c, 0xf7, 0x8f, 0xf7, 0x91, 0xf7, + 0xe6, 0xf7, 0xe8, 0xf7, 0x4c, 0xf8, 0x4c, 0xf8, 0xc1, 0xf8, 0xc3, 0xf8, + 0x43, 0xf9, 0x44, 0xf9, 0xd3, 0xf9, 0xd5, 0xf9, 0x6d, 0xfa, 0x6f, 0xfa, + 0x15, 0xfb, 0x15, 0xfb, 0xc7, 0xfb, 0xc9, 0xfb, 0x83, 0xfc, 0x82, 0xfc, + 0x48, 0xfd, 0x4b, 0xfd, 0x17, 0xfe, 0x18, 0xfe, 0xee, 0xfe, 0xee, 0xfe, + 0xc9, 0xff, 0xcb, 0xff, 0xac, 0x00, 0xae, 0x00, 0x94, 0x01, 0x95, 0x01, + 0x7b, 0x02, 0x7b, 0x02, 0x68, 0x03, 0x69, 0x03, 0x51, 0x04, 0x53, 0x04, + 0x3a, 0x05, 0x3e, 0x05, 0x22, 0x06, 0x22, 0x06, 0xfc, 0x06, 0x00, 0x07, + 0xd3, 0x07, 0xd0, 0x07, 0x97, 0x08, 0x9b, 0x08, 0x4f, 0x09, 0x51, 0x09, + 0xf8, 0x09, 0xf8, 0x09, 0x8b, 0x0a, 0x8e, 0x0a, 0x0d, 0x0b, 0x0d, 0x0b, + 0x77, 0x0b, 0x7a, 0x0b, 0xcd, 0x0b, 0xcd, 0x0b, 0x0a, 0x0c, 0x0b, 0x0c, + 0x30, 0x0c, 0x32, 0x0c, 0x3d, 0x0c, 0x40, 0x0c, 0x35, 0x0c, 0x35, 0x0c, + 0x14, 0x0c, 0x16, 0x0c, 0xdf, 0x0b, 0xe0, 0x0b, 0x93, 0x0b, 0x95, 0x0b, + 0x34, 0x0b, 0x36, 0x0b, 0xc2, 0x0a, 0xc4, 0x0a, 0x3e, 0x0a, 0x3f, 0x0a, + 0xa8, 0x09, 0xaa, 0x09, 0x01, 0x09, 0x02, 0x09, 0x4a, 0x08, 0x4c, 0x08, + 0x86, 0x07, 0x86, 0x07, 0xb0, 0x06, 0xb1, 0x06, 0xd1, 0x05, 0xd2, 0x05, + 0xe4, 0x04, 0xe5, 0x04, 0xed, 0x03, 0xee, 0x03, 0xec, 0x02, 0xed, 0x02, + 0xe1, 0x01, 0xe1, 0x01, 0xcf, 0x00, 0xd0, 0x00, 0xb7, 0xff, 0xb7, 0xff, + 0x9e, 0xfe, 0x9f, 0xfe, 0x83, 0xfd, 0x84, 0xfd, 0x6a, 0xfc, 0x6a, 0xfc, + 0x53, 0xfb, 0x55, 0xfb, 0x49, 0xfa, 0x49, 0xfa, 0x42, 0xf9, 0x43, 0xf9, + 0x4e, 0xf8, 0x4f, 0xf8, 0x67, 0xf7, 0x67, 0xf7, 0x8f, 0xf6, 0x91, 0xf6, + 0xd1, 0xf5, 0xd0, 0xf5, 0x1f, 0xf5, 0x1f, 0xf5, 0x8c, 0xf4, 0x8e, 0xf4, + 0x0e, 0xf4, 0x0e, 0xf4, 0xab, 0xf3, 0xad, 0xf3, 0x63, 0xf3, 0x65, 0xf3, + 0x33, 0xf3, 0x33, 0xf3, 0x1d, 0xf3, 0x1f, 0xf3, 0x1c, 0xf3, 0x1d, 0xf3, + 0x36, 0xf3, 0x37, 0xf3, 0x63, 0xf3, 0x64, 0xf3, 0xa7, 0xf3, 0xa8, 0xf3, + 0x00, 0xf4, 0xff, 0xf3, 0x68, 0xf4, 0x6a, 0xf4, 0xe7, 0xf4, 0xe8, 0xf4, + 0x76, 0xf5, 0x77, 0xf5, 0x16, 0xf6, 0x18, 0xf6, 0xc5, 0xf6, 0xc7, 0xf6, + 0x83, 0xf7, 0x84, 0xf7, 0x4e, 0xf8, 0x50, 0xf8, 0x25, 0xf9, 0x27, 0xf9, + 0x08, 0xfa, 0x08, 0xfa, 0xf5, 0xfa, 0xf8, 0xfa, 0xeb, 0xfb, 0xea, 0xfb, + 0xe7, 0xfc, 0xe9, 0xfc, 0xeb, 0xfd, 0xeb, 0xfd, 0xf2, 0xfe, 0xf3, 0xfe, + 0xfe, 0xff, 0x00, 0x00, 0x0c, 0x01, 0x0d, 0x01, 0x16, 0x02, 0x18, 0x02, + 0x23, 0x03, 0x23, 0x03, 0x28, 0x04, 0x2b, 0x04, 0x28, 0x05, 0x29, 0x05, + 0x1f, 0x06, 0x22, 0x06, 0x0b, 0x07, 0x0b, 0x07, 0xea, 0x07, 0xeb, 0x07, + 0xb7, 0x08, 0xb8, 0x08, 0x73, 0x09, 0x74, 0x09, 0x1e, 0x0a, 0x1f, 0x0a, + 0xb0, 0x0a, 0xb2, 0x0a, 0x31, 0x0b, 0x32, 0x0b, 0x96, 0x0b, 0x97, 0x0b, + 0xe5, 0x0b, 0xe6, 0x0b, 0x1f, 0x0c, 0x20, 0x0c, 0x3d, 0x0c, 0x3d, 0x0c, + 0x47, 0x0c, 0x49, 0x0c, 0x34, 0x0c, 0x37, 0x0c, 0x13, 0x0c, 0x11, 0x0c, + 0xd5, 0x0b, 0xd8, 0x0b, 0x84, 0x0b, 0x84, 0x0b, 0x1f, 0x0b, 0x24, 0x0b, + 0xa6, 0x0a, 0xa6, 0x0a, 0x1d, 0x0a, 0x21, 0x0a, 0x83, 0x09, 0x84, 0x09, + 0xda, 0x08, 0xdd, 0x08, 0x23, 0x08, 0x24, 0x08, 0x5d, 0x07, 0x5d, 0x07, + 0x8d, 0x06, 0x8f, 0x06, 0xb5, 0x05, 0xb6, 0x05, 0xd2, 0x04, 0xd4, 0x04, + 0xeb, 0x03, 0xed, 0x03, 0x00, 0x03, 0x00, 0x03, 0x0e, 0x02, 0x0e, 0x02, + 0x1d, 0x01, 0x21, 0x01, 0x2c, 0x00, 0x2c, 0x00, 0x3c, 0xff, 0x3f, 0xff, + 0x53, 0xfe, 0x54, 0xfe, 0x6a, 0xfd, 0x6b, 0xfd, 0x8b, 0xfc, 0x90, 0xfc, + 0xb4, 0xfb, 0xb5, 0xfb, 0xe9, 0xfa, 0xeb, 0xfa, 0x2a, 0xfa, 0x2b, 0xfa, + 0x77, 0xf9, 0x78, 0xf9, 0xd5, 0xf8, 0xd8, 0xf8, 0x43, 0xf8, 0x43, 0xf8, + 0xc0, 0xf7, 0xc2, 0xf7, 0x52, 0xf7, 0x52, 0xf7, 0xf4, 0xf6, 0xf6, 0xf6, + 0xad, 0xf6, 0xac, 0xf6, 0x76, 0xf6, 0x79, 0xf6, 0x58, 0xf6, 0x57, 0xf6, + 0x4a, 0xf6, 0x4b, 0xf6, 0x4f, 0xf6, 0x52, 0xf6, 0x6a, 0xf6, 0x6a, 0xf6, + 0x94, 0xf6, 0x97, 0xf6, 0xd2, 0xf6, 0xd4, 0xf6, 0x21, 0xf7, 0x21, 0xf7, + 0x81, 0xf7, 0x82, 0xf7, 0xf0, 0xf7, 0xf2, 0xf7, 0x6f, 0xf8, 0x70, 0xf8, + 0xf9, 0xf8, 0xfa, 0xf8, 0x91, 0xf9, 0x92, 0xf9, 0x31, 0xfa, 0x30, 0xfa, + 0xdd, 0xfa, 0xdf, 0xfa, 0x8d, 0xfb, 0x8f, 0xfb, 0x49, 0xfc, 0x4a, 0xfc, + 0x05, 0xfd, 0x07, 0xfd, 0xc5, 0xfd, 0xc6, 0xfd, 0x89, 0xfe, 0x88, 0xfe, + 0x45, 0xff, 0x49, 0xff, 0x05, 0x00, 0x05, 0x00, 0xbe, 0x00, 0xbf, 0x00, + 0x6a, 0x01, 0x6d, 0x01, 0x1a, 0x02, 0x19, 0x02, 0xb5, 0x02, 0xb7, 0x02, + 0x4e, 0x03, 0x4f, 0x03, 0xd8, 0x03, 0xda, 0x03, 0x57, 0x04, 0x58, 0x04, + 0xca, 0x04, 0xcc, 0x04, 0x2e, 0x05, 0x2f, 0x05, 0x84, 0x05, 0x86, 0x05, + 0xcd, 0x05, 0xcd, 0x05, 0x05, 0x06, 0x07, 0x06, 0x2e, 0x06, 0x2e, 0x06, + 0x48, 0x06, 0x4a, 0x06, 0x53, 0x06, 0x54, 0x06, 0x4d, 0x06, 0x4f, 0x06, + 0x3c, 0x06, 0x3b, 0x06, 0x18, 0x06, 0x1a, 0x06, 0xe9, 0x05, 0xe8, 0x05, + 0xa9, 0x05, 0xac, 0x05, 0x5f, 0x05, 0x5f, 0x05, 0x07, 0x05, 0x09, 0x05, + 0xa7, 0x04, 0xa8, 0x04, 0x3a, 0x04, 0x39, 0x04, 0xc2, 0x03, 0xc2, 0x03, + 0x45, 0x03, 0x46, 0x03, 0xbe, 0x02, 0xbf, 0x02, 0x35, 0x02, 0x36, 0x02, + 0xa4, 0x01, 0xa5, 0x01, 0x11, 0x01, 0x12, 0x01, 0x7e, 0x00, 0x7f, 0x00, + 0xe8, 0xff, 0xe9, 0xff, 0x57, 0xff, 0x59, 0xff, 0xc7, 0xfe, 0xc8, 0xfe, + 0x3d, 0xfe, 0x3f, 0xfe, 0xb9, 0xfd, 0xb9, 0xfd, 0x3c, 0xfd, 0x3f, 0xfd, + 0xca, 0xfc, 0xcb, 0xfc, 0x5f, 0xfc, 0x62, 0xfc, 0x02, 0xfc, 0x04, 0xfc, + 0xb1, 0xfb, 0xb2, 0xfb, 0x6b, 0xfb, 0x6e, 0xfb, 0x34, 0xfb, 0x35, 0xfb, + 0x08, 0xfb, 0x0b, 0xfb, 0xee, 0xfa, 0xef, 0xfa, 0xdf, 0xfa, 0xe0, 0xfa, + 0xe0, 0xfa, 0xe2, 0xfa, 0xef, 0xfa, 0xf1, 0xfa, 0x0e, 0xfb, 0x0e, 0xfb, + 0x39, 0xfb, 0x3b, 0xfb, 0x73, 0xfb, 0x76, 0xfb, 0xbb, 0xfb, 0xba, 0xfb, + 0x0c, 0xfc, 0x0f, 0xfc, 0x6e, 0xfc, 0x6e, 0xfc, 0xd7, 0xfc, 0xd9, 0xfc, + 0x4f, 0xfd, 0x50, 0xfd, 0xcb, 0xfd, 0xcc, 0xfd, 0x52, 0xfe, 0x54, 0xfe, + 0xdc, 0xfe, 0xde, 0xfe, 0x6e, 0xff, 0x6f, 0xff, 0x02, 0x00, 0x05, 0x00, + 0x96, 0x00, 0x97, 0x00, 0x2e, 0x01, 0x30, 0x01, 0xc1, 0x01, 0xc2, 0x01, + 0x52, 0x02, 0x53, 0x02, 0xde, 0x02, 0xe0, 0x02, 0x67, 0x03, 0x66, 0x03, + 0xe0, 0x03, 0xe3, 0x03, 0x59, 0x04, 0x59, 0x04, 0xc4, 0x04, 0xc3, 0x04, + 0x20, 0x05, 0x22, 0x05, 0x74, 0x05, 0x74, 0x05, 0xb9, 0x05, 0xba, 0x05, + 0xf2, 0x05, 0xf4, 0x05, 0x1d, 0x06, 0x1d, 0x06, 0x39, 0x06, 0x3b, 0x06, + 0x45, 0x06, 0x46, 0x06, 0x47, 0x06, 0x47, 0x06, 0x36, 0x06, 0x37, 0x06, + 0x18, 0x06, 0x18, 0x06, 0xeb, 0x05, 0xec, 0x05, 0xaf, 0x05, 0xb1, 0x05, + 0x67, 0x05, 0x68, 0x05, 0x0f, 0x05, 0x10, 0x05, 0xa9, 0x04, 0xaa, 0x04, + 0x37, 0x04, 0x38, 0x04, 0xb6, 0x03, 0xb6, 0x03, 0x29, 0x03, 0x2c, 0x03, + 0x8f, 0x02, 0x8f, 0x02, 0xea, 0x01, 0xeb, 0x01, 0x3b, 0x01, 0x3b, 0x01, + 0x7c, 0x00, 0x7e, 0x00, 0xbd, 0xff, 0xbd, 0xff, 0xee, 0xfe, 0xf1, 0xfe, + 0x24, 0xfe, 0x24, 0xfe, 0x51, 0xfd, 0x53, 0xfd, 0x84, 0xfc, 0x86, 0xfc, + 0xbc, 0xfb, 0xbc, 0xfb, 0xf3, 0xfa, 0xf4, 0xfa, 0x38, 0xfa, 0x3a, 0xfa, + 0x87, 0xf9, 0x88, 0xf9, 0xe3, 0xf8, 0xe7, 0xf8, 0x51, 0xf8, 0x53, 0xf8, + 0xcd, 0xf7, 0xd0, 0xf7, 0x5d, 0xf7, 0x5e, 0xf7, 0x01, 0xf7, 0x05, 0xf7, + 0xb8, 0xf6, 0xb9, 0xf6, 0x86, 0xf6, 0x87, 0xf6, 0x63, 0xf6, 0x64, 0xf6, + 0x55, 0xf6, 0x56, 0xf6, 0x5c, 0xf6, 0x5d, 0xf6, 0x72, 0xf6, 0x74, 0xf6, + 0x9e, 0xf6, 0x9d, 0xf6, 0xd8, 0xf6, 0xdc, 0xf6, 0x28, 0xf7, 0x27, 0xf7, + 0x87, 0xf7, 0x8a, 0xf7, 0xf5, 0xf7, 0xf7, 0xf7, 0x77, 0xf8, 0x77, 0xf8, + 0x02, 0xf9, 0x04, 0xf9, 0x9e, 0xf9, 0x9f, 0xf9, 0x46, 0xfa, 0x45, 0xfa, + 0xf9, 0xfa, 0xfa, 0xfa, 0xb9, 0xfb, 0xba, 0xfb, 0x84, 0xfc, 0x83, 0xfc, + 0x58, 0xfd, 0x5b, 0xfd, 0x38, 0xfe, 0x38, 0xfe, 0x1e, 0xff, 0x1e, 0xff, + 0x0c, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0xfd, 0x00, 0xf8, 0x01, 0xf9, 0x01, + 0xf0, 0x02, 0xf1, 0x02, 0xef, 0x03, 0xef, 0x03, 0xe9, 0x04, 0xeb, 0x04, + 0xe1, 0x05, 0xe1, 0x05, 0xd4, 0x06, 0xd4, 0x06, 0xb8, 0x07, 0xb8, 0x07, + 0x95, 0x08, 0x97, 0x08, 0x5f, 0x09, 0x60, 0x09, 0x1c, 0x0a, 0x1d, 0x0a, + 0xc2, 0x0a, 0xc3, 0x0a, 0x51, 0x0b, 0x52, 0x0b, 0xce, 0x0b, 0xcd, 0x0b, + 0x2e, 0x0c, 0x2e, 0x0c, 0x77, 0x0c, 0x79, 0x0c, 0xa8, 0x0c, 0xa7, 0x0c, + 0xbe, 0x0c, 0xbf, 0x0c, 0xbe, 0x0c, 0xbe, 0x0c, 0xa5, 0x0c, 0xa6, 0x0c, + 0x77, 0x0c, 0x76, 0x0c, 0x2e, 0x0c, 0x30, 0x0c, 0xd5, 0x0b, 0xd5, 0x0b, + 0x65, 0x0b, 0x65, 0x0b, 0xe1, 0x0a, 0xe2, 0x0a, 0x4c, 0x0a, 0x4b, 0x0a, + 0xa1, 0x09, 0xa3, 0x09, 0xec, 0x08, 0xec, 0x08, 0x21, 0x08, 0x21, 0x08, + 0x4a, 0x07, 0x4a, 0x07, 0x62, 0x06, 0x63, 0x06, 0x6e, 0x05, 0x6f, 0x05, + 0x6d, 0x04, 0x6f, 0x04, 0x60, 0x03, 0x5f, 0x03, 0x46, 0x02, 0x47, 0x02, + 0x20, 0x01, 0x21, 0x01, 0xfc, 0xff, 0xfd, 0xff, 0xd5, 0xfe, 0xd5, 0xfe, + 0xa9, 0xfd, 0xaa, 0xfd, 0x84, 0xfc, 0x85, 0xfc, 0x5b, 0xfb, 0x5d, 0xfb, + 0x42, 0xfa, 0x42, 0xfa, 0x2d, 0xf9, 0x2f, 0xf9, 0x27, 0xf8, 0x28, 0xf8, + 0x33, 0xf7, 0x34, 0xf7, 0x4b, 0xf6, 0x4d, 0xf6, 0x80, 0xf5, 0x80, 0xf5, + 0xc7, 0xf4, 0xc8, 0xf4, 0x28, 0xf4, 0x29, 0xf4, 0xa5, 0xf3, 0xa6, 0xf3, + 0x39, 0xf3, 0x3b, 0xf3, 0xf1, 0xf2, 0xf0, 0xf2, 0xbc, 0xf2, 0xbe, 0xf2, + 0xa6, 0xf2, 0xa7, 0xf2, 0xa8, 0xf2, 0xa8, 0xf2, 0xbe, 0xf2, 0xc0, 0xf2, + 0xf2, 0xf2, 0xf1, 0xf2, 0x34, 0xf3, 0x37, 0xf3, 0x91, 0xf3, 0x92, 0xf3, + 0x00, 0xf4, 0x00, 0xf4, 0x82, 0xf4, 0x84, 0xf4, 0x16, 0xf5, 0x17, 0xf5, + 0xbb, 0xf5, 0xbe, 0xf5, 0x72, 0xf6, 0x72, 0xf6, 0x35, 0xf7, 0x37, 0xf7, + 0x09, 0xf8, 0x0c, 0xf8, 0xe8, 0xf8, 0xe8, 0xf8, 0xd4, 0xf9, 0xd6, 0xf9, + 0xcb, 0xfa, 0xcc, 0xfa, 0xc9, 0xfb, 0xc9, 0xfb, 0xd5, 0xfc, 0xd6, 0xfc, + 0xe3, 0xfd, 0xe2, 0xfd, 0xf9, 0xfe, 0xfb, 0xfe, 0x11, 0x00, 0x12, 0x00, + 0x2d, 0x01, 0x2e, 0x01, 0x49, 0x02, 0x4a, 0x02, 0x61, 0x03, 0x63, 0x03, + 0x7a, 0x04, 0x78, 0x04, 0x87, 0x05, 0x89, 0x05, 0x8d, 0x06, 0x8d, 0x06, + 0x87, 0x07, 0x88, 0x07, 0x6e, 0x08, 0x70, 0x08, 0x4b, 0x09, 0x4a, 0x09, + 0x0f, 0x0a, 0x10, 0x0a, 0xc0, 0x0a, 0xc0, 0x0a, 0x56, 0x0b, 0x58, 0x0b, + 0xda, 0x0b, 0xd9, 0x0b, 0x40, 0x0c, 0x3f, 0x0c, 0x8f, 0x0c, 0x91, 0x0c, + 0xc4, 0x0c, 0xc5, 0x0c, 0xdf, 0x0c, 0xe0, 0x0c, 0xe3, 0x0c, 0xe5, 0x0c, + 0xcc, 0x0c, 0xcc, 0x0c, 0x9f, 0x0c, 0x9f, 0x0c, 0x57, 0x0c, 0x59, 0x0c, + 0xfb, 0x0b, 0xfb, 0x0b, 0x88, 0x0b, 0x8b, 0x0b, 0x05, 0x0b, 0x05, 0x0b, + 0x6b, 0x0a, 0x6e, 0x0a, 0xc4, 0x09, 0xc5, 0x09, 0x0c, 0x09, 0x0d, 0x09, + 0x43, 0x08, 0x45, 0x08, 0x70, 0x07, 0x71, 0x07, 0x8c, 0x06, 0x8e, 0x06, + 0xa2, 0x05, 0xa5, 0x05, 0xb0, 0x04, 0xb1, 0x04, 0xb6, 0x03, 0xb8, 0x03, + 0xb8, 0x02, 0xb9, 0x02, 0xb6, 0x01, 0xb8, 0x01, 0xb2, 0x00, 0xb5, 0x00, + 0xb1, 0xff, 0xb1, 0xff, 0xae, 0xfe, 0xb2, 0xfe, 0xb2, 0xfd, 0xb2, 0xfd, + 0xb9, 0xfc, 0xbe, 0xfc, 0xcd, 0xfb, 0xce, 0xfb, 0xe6, 0xfa, 0xe9, 0xfa, + 0x11, 0xfa, 0x11, 0xfa, 0x44, 0xf9, 0x47, 0xf9, 0x8c, 0xf8, 0x8e, 0xf8, + 0xe4, 0xf7, 0xe5, 0xf7, 0x4e, 0xf7, 0x4e, 0xf7, 0xcc, 0xf6, 0xcf, 0xf6, + 0x5e, 0xf6, 0x5e, 0xf6, 0x05, 0xf6, 0x08, 0xf6, 0xc4, 0xf5, 0xc3, 0xf5, + 0x94, 0xf5, 0x96, 0xf5, 0x80, 0xf5, 0x81, 0xf5, 0x7b, 0xf5, 0x7d, 0xf5, + 0x90, 0xf5, 0x93, 0xf5, 0xb5, 0xf5, 0xb7, 0xf5, 0xf1, 0xf5, 0xf3, 0xf5, + 0x42, 0xf6, 0x43, 0xf6, 0xa2, 0xf6, 0xa4, 0xf6, 0x18, 0xf7, 0x19, 0xf7, + 0x98, 0xf7, 0x9a, 0xf7, 0x30, 0xf8, 0x30, 0xf8, 0xcd, 0xf8, 0xce, 0xf8, + 0x7b, 0xf9, 0x7e, 0xf9, 0x36, 0xfa, 0x36, 0xfa, 0xf7, 0xfa, 0xf8, 0xfa, + 0xc2, 0xfb, 0xc4, 0xfb, 0x94, 0xfc, 0x95, 0xfc, 0x6a, 0xfd, 0x6c, 0xfd, + 0x41, 0xfe, 0x42, 0xfe, 0x19, 0xff, 0x1b, 0xff, 0xf0, 0xff, 0xf1, 0xff, + 0xc1, 0x00, 0xc2, 0x00, 0x90, 0x01, 0x92, 0x01, 0x51, 0x02, 0x51, 0x02, + 0x0d, 0x03, 0x0f, 0x03, 0xbb, 0x03, 0xbb, 0x03, 0x5c, 0x04, 0x60, 0x04, + 0xf3, 0x04, 0xf1, 0x04, 0x76, 0x05, 0x78, 0x05, 0xee, 0x05, 0xef, 0x05, + 0x54, 0x06, 0x55, 0x06, 0xab, 0x06, 0xab, 0x06, 0xed, 0x06, 0xee, 0x06, + 0x22, 0x07, 0x24, 0x07, 0x43, 0x07, 0x44, 0x07, 0x54, 0x07, 0x55, 0x07, + 0x57, 0x07, 0x58, 0x07, 0x44, 0x07, 0x45, 0x07, 0x25, 0x07, 0x27, 0x07, + 0xf1, 0x06, 0xf1, 0x06, 0xb1, 0x06, 0xb3, 0x06, 0x61, 0x06, 0x61, 0x06, + 0x03, 0x06, 0x04, 0x06, 0x97, 0x05, 0x97, 0x05, 0x1e, 0x05, 0x1f, 0x05, + 0x9a, 0x04, 0x99, 0x04, 0x0c, 0x04, 0x0e, 0x04, 0x74, 0x03, 0x75, 0x03, + 0xd5, 0x02, 0xd4, 0x02, 0x30, 0x02, 0x32, 0x02, 0x86, 0x01, 0x86, 0x01, + 0xd9, 0x00, 0xdc, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x7e, 0xff, 0x7e, 0xff, + 0xd4, 0xfe, 0xd5, 0xfe, 0x2c, 0xfe, 0x2d, 0xfe, 0x8d, 0xfd, 0x8f, 0xfd, + 0xf4, 0xfc, 0xf5, 0xfc, 0x67, 0xfc, 0x67, 0xfc, 0xe0, 0xfb, 0xe4, 0xfb, + 0x6a, 0xfb, 0x69, 0xfb, 0xff, 0xfa, 0x00, 0xfb, 0xa1, 0xfa, 0xa1, 0xfa, + 0x54, 0xfa, 0x53, 0xfa, 0x15, 0xfa, 0x18, 0xfa, 0xe9, 0xf9, 0xe7, 0xf9, + 0xca, 0xf9, 0xcb, 0xf9, 0xba, 0xf9, 0xbb, 0xf9, 0xc2, 0xf9, 0xc2, 0xf9, + 0xd3, 0xf9, 0xd4, 0xf9, 0xfb, 0xf9, 0xfa, 0xf9, 0x2d, 0xfa, 0x2d, 0xfa, + 0x71, 0xfa, 0x71, 0xfa, 0xc5, 0xfa, 0xc7, 0xfa, 0x24, 0xfb, 0x25, 0xfb, + 0x96, 0xfb, 0x98, 0xfb, 0x11, 0xfc, 0x12, 0xfc, 0x9b, 0xfc, 0x9a, 0xfc, + 0x2e, 0xfd, 0x2f, 0xfd, 0xc9, 0xfd, 0xca, 0xfd, 0x6d, 0xfe, 0x6e, 0xfe, + 0x16, 0xff, 0x16, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0x71, 0x00, 0x72, 0x00, + 0x21, 0x01, 0x21, 0x01, 0xcd, 0x01, 0xcf, 0x01, 0x77, 0x02, 0x77, 0x02, + 0x1c, 0x03, 0x1c, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0x4d, 0x04, 0x4c, 0x04, + 0xd3, 0x04, 0xd6, 0x04, 0x51, 0x05, 0x51, 0x05, 0xc0, 0x05, 0xc1, 0x05, + 0x23, 0x06, 0x24, 0x06, 0x78, 0x06, 0x77, 0x06, 0xbb, 0x06, 0xbb, 0x06, + 0xf1, 0x06, 0xf3, 0x06, 0x16, 0x07, 0x16, 0x07, 0x2a, 0x07, 0x2b, 0x07, + 0x2c, 0x07, 0x2d, 0x07, 0x20, 0x07, 0x21, 0x07, 0x05, 0x07, 0x06, 0x07, + 0xd7, 0x06, 0xd6, 0x06, 0x9b, 0x06, 0x9d, 0x06, 0x50, 0x06, 0x50, 0x06, + 0xf3, 0x05, 0xf5, 0x05, 0x8c, 0x05, 0x8c, 0x05, 0x10, 0x05, 0x11, 0x05, + 0x8a, 0x04, 0x8c, 0x04, 0xf2, 0x03, 0xf2, 0x03, 0x4c, 0x03, 0x4e, 0x03, + 0x9e, 0x02, 0x9d, 0x02, 0xdd, 0x01, 0xdf, 0x01, 0x15, 0x01, 0x16, 0x01, + 0x3f, 0x00, 0x40, 0x00, 0x61, 0xff, 0x62, 0xff, 0x80, 0xfe, 0x81, 0xfe, + 0x99, 0xfd, 0x99, 0xfd, 0xb4, 0xfc, 0xb6, 0xfc, 0xd1, 0xfb, 0xd0, 0xfb, + 0xf5, 0xfa, 0xf6, 0xfa, 0x21, 0xfa, 0x21, 0xfa, 0x5a, 0xf9, 0x5d, 0xf9, + 0xa1, 0xf8, 0x9f, 0xf8, 0xf8, 0xf7, 0xfb, 0xf7, 0x63, 0xf7, 0x61, 0xf7, + 0xe0, 0xf6, 0xe1, 0xf6, 0x75, 0xf6, 0x76, 0xf6, 0x1d, 0xf6, 0x1e, 0xf6, + 0xde, 0xf5, 0xde, 0xf5, 0xb0, 0xf5, 0xb3, 0xf5, 0x9a, 0xf5, 0x9b, 0xf5, + 0x9a, 0xf5, 0x9b, 0xf5, 0xab, 0xf5, 0xad, 0xf5, 0xd5, 0xf5, 0xd4, 0xf5, + 0x0e, 0xf6, 0x10, 0xf6, 0x5b, 0xf6, 0x5e, 0xf6, 0xbf, 0xf6, 0xbc, 0xf6, + 0x2c, 0xf7, 0x31, 0xf7, 0xb4, 0xf7, 0xb3, 0xf7, 0x44, 0xf8, 0x44, 0xf8, + 0xe4, 0xf8, 0xe7, 0xf8, 0x93, 0xf9, 0x94, 0xf9, 0x4e, 0xfa, 0x4e, 0xfa, + 0x17, 0xfb, 0x18, 0xfb, 0xec, 0xfb, 0xec, 0xfb, 0xcd, 0xfc, 0xce, 0xfc, + 0xb8, 0xfd, 0xb8, 0xfd, 0xac, 0xfe, 0xae, 0xfe, 0xab, 0xff, 0xaa, 0xff, + 0xaf, 0x00, 0xb0, 0x00, 0xb9, 0x01, 0xba, 0x01, 0xca, 0x02, 0xca, 0x02, + 0xdc, 0x03, 0xdc, 0x03, 0xec, 0x04, 0xed, 0x04, 0xfb, 0x05, 0xfc, 0x05, + 0xfe, 0x06, 0xfe, 0x06, 0xfb, 0x07, 0xfc, 0x07, 0xe6, 0x08, 0xe8, 0x08, + 0xc5, 0x09, 0xc5, 0x09, 0x8d, 0x0a, 0x8f, 0x0a, 0x41, 0x0b, 0x3f, 0x0b, + 0xdb, 0x0b, 0xdd, 0x0b, 0x5d, 0x0c, 0x5d, 0x0c, 0xc4, 0x0c, 0xc4, 0x0c, + 0x11, 0x0d, 0x15, 0x0d, 0x44, 0x0d, 0x42, 0x0d, 0x5e, 0x0d, 0x60, 0x0d, + 0x5b, 0x0d, 0x5b, 0x0d, 0x43, 0x0d, 0x41, 0x0d, 0x10, 0x0d, 0x11, 0x0d, + 0xc6, 0x0c, 0xc5, 0x0c, 0x66, 0x0c, 0x67, 0x0c, 0xf3, 0x0b, 0xf3, 0x0b, + 0x69, 0x0b, 0x6b, 0x0b, 0xd0, 0x0a, 0xd0, 0x0a, 0x22, 0x0a, 0x21, 0x0a, + 0x63, 0x09, 0x65, 0x09, 0x94, 0x08, 0x92, 0x08, 0xb2, 0x07, 0xb4, 0x07, + 0xc3, 0x06, 0xc3, 0x06, 0xc5, 0x05, 0xc7, 0x05, 0xb5, 0x04, 0xb5, 0x04, + 0x98, 0x03, 0x98, 0x03, 0x69, 0x02, 0x69, 0x02, 0x37, 0x01, 0x39, 0x01, + 0x04, 0x00, 0x05, 0x00, 0xca, 0xfe, 0xcb, 0xfe, 0x90, 0xfd, 0x90, 0xfd, + 0x55, 0xfc, 0x56, 0xfc, 0x20, 0xfb, 0x20, 0xfb, 0xf2, 0xf9, 0xf3, 0xf9, + 0xcd, 0xf8, 0xce, 0xf8, 0xbc, 0xf7, 0xba, 0xf7, 0xb5, 0xf6, 0xb6, 0xf6, + 0xc8, 0xf5, 0xc8, 0xf5, 0xee, 0xf4, 0xef, 0xf4, 0x31, 0xf4, 0x30, 0xf4, + 0x8d, 0xf3, 0x8e, 0xf3, 0x07, 0xf3, 0x06, 0xf3, 0x9c, 0xf2, 0x9f, 0xf2, + 0x54, 0xf2, 0x51, 0xf2, 0x23, 0xf2, 0x24, 0xf2, 0x11, 0xf2, 0x12, 0xf2, + 0x16, 0xf2, 0x17, 0xf2, 0x38, 0xf2, 0x37, 0xf2, 0x6e, 0xf2, 0x70, 0xf2, + 0xbc, 0xf2, 0xbb, 0xf2, 0x23, 0xf3, 0x24, 0xf3, 0x9a, 0xf3, 0x9a, 0xf3, + 0x25, 0xf4, 0x26, 0xf4, 0xc1, 0xf4, 0xc2, 0xf4, 0x6e, 0xf5, 0x6f, 0xf5, + 0x2e, 0xf6, 0x2d, 0xf6, 0xfa, 0xf6, 0xfd, 0xf6, 0xd7, 0xf7, 0xd7, 0xf7, + 0xbe, 0xf8, 0xc0, 0xf8, 0xb6, 0xf9, 0xb7, 0xf9, 0xb7, 0xfa, 0xb8, 0xfa, + 0xc2, 0xfb, 0xc4, 0xfb, 0xda, 0xfc, 0xdb, 0xfc, 0xf3, 0xfd, 0xf6, 0xfd, + 0x1b, 0xff, 0x1b, 0xff, 0x41, 0x00, 0x42, 0x00, 0x6d, 0x01, 0x6f, 0x01, + 0x9b, 0x02, 0x9c, 0x02, 0xc7, 0x03, 0xc7, 0x03, 0xed, 0x04, 0xef, 0x04, + 0x0d, 0x06, 0x0d, 0x06, 0x22, 0x07, 0x24, 0x07, 0x29, 0x08, 0x29, 0x08, + 0x1f, 0x09, 0x22, 0x09, 0x02, 0x0a, 0x01, 0x0a, 0xcc, 0x0a, 0xcf, 0x0a, + 0x85, 0x0b, 0x83, 0x0b, 0x1d, 0x0c, 0x20, 0x0c, 0xa4, 0x0c, 0xa3, 0x0c, + 0x05, 0x0d, 0x07, 0x0d, 0x54, 0x0d, 0x54, 0x0d, 0x80, 0x0d, 0x82, 0x0d, + 0x97, 0x0d, 0x97, 0x0d, 0x90, 0x0d, 0x90, 0x0d, 0x6f, 0x0d, 0x72, 0x0d, + 0x37, 0x0d, 0x36, 0x0d, 0xe1, 0x0c, 0xe3, 0x0c, 0x7a, 0x0c, 0x7a, 0x0c, + 0xf9, 0x0b, 0xf9, 0x0b, 0x66, 0x0b, 0x69, 0x0b, 0xc1, 0x0a, 0xc1, 0x0a, + 0x09, 0x0a, 0x09, 0x0a, 0x43, 0x09, 0x44, 0x09, 0x6b, 0x08, 0x6b, 0x08, + 0x86, 0x07, 0x88, 0x07, 0x96, 0x06, 0x96, 0x06, 0x99, 0x05, 0x9a, 0x05, + 0x96, 0x04, 0x96, 0x04, 0x87, 0x03, 0x8b, 0x03, 0x7a, 0x02, 0x77, 0x02, + 0x63, 0x01, 0x65, 0x01, 0x4b, 0x00, 0x4b, 0x00, 0x35, 0xff, 0x36, 0xff, + 0x1d, 0xfe, 0x1f, 0xfe, 0x0d, 0xfd, 0x0d, 0xfd, 0x03, 0xfc, 0x04, 0xfc, + 0x01, 0xfb, 0x02, 0xfb, 0x0f, 0xfa, 0x0e, 0xfa, 0x25, 0xf9, 0x26, 0xf9, + 0x52, 0xf8, 0x52, 0xf8, 0x8d, 0xf7, 0x8e, 0xf7, 0xdc, 0xf6, 0xdd, 0xf6, + 0x44, 0xf6, 0x43, 0xf6, 0xbc, 0xf5, 0xbd, 0xf5, 0x4f, 0xf5, 0x50, 0xf5, + 0xf7, 0xf4, 0xf7, 0xf4, 0xb8, 0xf4, 0xb9, 0xf4, 0x91, 0xf4, 0x92, 0xf4, + 0x81, 0xf4, 0x81, 0xf4, 0x89, 0xf4, 0x8a, 0xf4, 0xa7, 0xf4, 0xa6, 0xf4, + 0xdc, 0xf4, 0xdf, 0xf4, 0x26, 0xf5, 0x24, 0xf5, 0x83, 0xf5, 0x84, 0xf5, + 0xf9, 0xf5, 0xf7, 0xf5, 0x7b, 0xf6, 0x7c, 0xf6, 0x15, 0xf7, 0x16, 0xf7, + 0xbe, 0xf7, 0xbb, 0xf7, 0x73, 0xf8, 0x76, 0xf8, 0x3a, 0xf9, 0x39, 0xf9, + 0x09, 0xfa, 0x0a, 0xfa, 0xe7, 0xfa, 0xe6, 0xfa, 0xca, 0xfb, 0xcb, 0xfb, + 0xb6, 0xfc, 0xb6, 0xfc, 0xa7, 0xfd, 0xa7, 0xfd, 0x9c, 0xfe, 0x9c, 0xfe, + 0x8f, 0xff, 0x91, 0xff, 0x84, 0x00, 0x82, 0x00, 0x6f, 0x01, 0x71, 0x01, + 0x56, 0x02, 0x57, 0x02, 0x34, 0x03, 0x33, 0x03, 0x03, 0x04, 0x05, 0x04, + 0xc8, 0x04, 0xc7, 0x04, 0x7b, 0x05, 0x7c, 0x05, 0x1e, 0x06, 0x20, 0x06, + 0xb3, 0x06, 0xb1, 0x06, 0x30, 0x07, 0x34, 0x07, 0x9f, 0x07, 0x9e, 0x07, + 0xf9, 0x07, 0xfc, 0x07, 0x41, 0x08, 0x41, 0x08, 0x74, 0x08, 0x76, 0x08, + 0x94, 0x08, 0x95, 0x08, 0xa1, 0x08, 0xa3, 0x08, 0x9c, 0x08, 0x9c, 0x08, + 0x82, 0x08, 0x83, 0x08, 0x57, 0x08, 0x59, 0x08, 0x18, 0x08, 0x19, 0x08, + 0xc9, 0x07, 0xcb, 0x07, 0x68, 0x07, 0x69, 0x07, 0xfa, 0x06, 0xfa, 0x06, + 0x79, 0x06, 0x7a, 0x06, 0xee, 0x05, 0xf0, 0x05, 0x52, 0x05, 0x54, 0x05, + 0xad, 0x04, 0xae, 0x04, 0xfc, 0x03, 0xfc, 0x03, 0x3f, 0x03, 0x40, 0x03, + 0x80, 0x02, 0x81, 0x02, 0xb6, 0x01, 0xb7, 0x01, 0xeb, 0x00, 0xed, 0x00, + 0x1d, 0x00, 0x1f, 0x00, 0x4f, 0xff, 0x50, 0xff, 0x84, 0xfe, 0x87, 0xfe, + 0xbf, 0xfd, 0xbf, 0xfd, 0xfe, 0xfc, 0x00, 0xfd, 0x48, 0xfc, 0x49, 0xfc, + 0x9c, 0xfb, 0x9c, 0xfb, 0xfb, 0xfa, 0xfc, 0xfa, 0x6b, 0xfa, 0x6c, 0xfa, + 0xe6, 0xf9, 0xe7, 0xf9, 0x77, 0xf9, 0x78, 0xf9, 0x17, 0xf9, 0x17, 0xf9, + 0xca, 0xf8, 0xcb, 0xf8, 0x8f, 0xf8, 0x8e, 0xf8, 0x65, 0xf8, 0x67, 0xf8, + 0x51, 0xf8, 0x51, 0xf8, 0x4d, 0xf8, 0x4e, 0xf8, 0x5f, 0xf8, 0x60, 0xf8, + 0x81, 0xf8, 0x82, 0xf8, 0xb8, 0xf8, 0xb9, 0xf8, 0x00, 0xf9, 0x00, 0xf9, + 0x59, 0xf9, 0x59, 0xf9, 0xc5, 0xf9, 0xc7, 0xf9, 0x40, 0xfa, 0x3f, 0xfa, + 0xc9, 0xfa, 0xcb, 0xfa, 0x64, 0xfb, 0x63, 0xfb, 0x07, 0xfc, 0x0a, 0xfc, + 0xbd, 0xfc, 0xbd, 0xfc, 0x76, 0xfd, 0x78, 0xfd, 0x3d, 0xfe, 0x3e, 0xfe, + 0x08, 0xff, 0x07, 0xff, 0xd3, 0xff, 0xd5, 0xff, 0xa4, 0x00, 0xa5, 0x00, + 0x74, 0x01, 0x73, 0x01, 0x3f, 0x02, 0x40, 0x02, 0x04, 0x03, 0x05, 0x03, + 0xc2, 0x03, 0xc2, 0x03, 0x7a, 0x04, 0x7b, 0x04, 0x22, 0x05, 0x21, 0x05, + 0xc0, 0x05, 0xc2, 0x05, 0x4e, 0x06, 0x4e, 0x06, 0xcc, 0x06, 0xce, 0x06, + 0x3c, 0x07, 0x3c, 0x07, 0x97, 0x07, 0x98, 0x07, 0xe3, 0x07, 0xe5, 0x07, + 0x1b, 0x08, 0x1d, 0x08, 0x42, 0x08, 0x43, 0x08, 0x54, 0x08, 0x56, 0x08, + 0x56, 0x08, 0x59, 0x08, 0x46, 0x08, 0x46, 0x08, 0x24, 0x08, 0x25, 0x08, + 0xf3, 0x07, 0xf2, 0x07, 0xa9, 0x07, 0xab, 0x07, 0x58, 0x07, 0x59, 0x07, + 0xed, 0x06, 0xee, 0x06, 0x74, 0x06, 0x76, 0x06, 0xef, 0x05, 0xef, 0x05, + 0x51, 0x05, 0x54, 0x05, 0xac, 0x04, 0xab, 0x04, 0xf1, 0x03, 0xf1, 0x03, + 0x28, 0x03, 0x2a, 0x03, 0x55, 0x02, 0x54, 0x02, 0x6b, 0x01, 0x6d, 0x01, + 0x7f, 0x00, 0x7e, 0x00, 0x83, 0xff, 0x83, 0xff, 0x81, 0xfe, 0x83, 0xfe, + 0x80, 0xfd, 0x7e, 0xfd, 0x7b, 0xfc, 0x7e, 0xfc, 0x7b, 0xfb, 0x7c, 0xfb, + 0x86, 0xfa, 0x85, 0xfa, 0x98, 0xf9, 0x99, 0xf9, 0xb9, 0xf8, 0xb8, 0xf8, + 0xe7, 0xf7, 0xe8, 0xf7, 0x2b, 0xf7, 0x2c, 0xf7, 0x82, 0xf6, 0x83, 0xf6, + 0xf4, 0xf5, 0xf3, 0xf5, 0x7c, 0xf5, 0x7d, 0xf5, 0x21, 0xf5, 0x21, 0xf5, + 0xdd, 0xf4, 0xdd, 0xf4, 0xb2, 0xf4, 0xb1, 0xf4, 0x9e, 0xf4, 0x9e, 0xf4, + 0xa4, 0xf4, 0xa4, 0xf4, 0xbf, 0xf4, 0xc0, 0xf4, 0xf3, 0xf4, 0xf3, 0xf4, + 0x39, 0xf5, 0x38, 0xf5, 0x97, 0xf5, 0x96, 0xf5, 0x03, 0xf6, 0x06, 0xf6, + 0x87, 0xf6, 0x85, 0xf6, 0x1a, 0xf7, 0x1b, 0xf7, 0xbb, 0xf7, 0xbb, 0xf7, + 0x71, 0xf8, 0x70, 0xf8, 0x2f, 0xf9, 0x2f, 0xf9, 0x01, 0xfa, 0x01, 0xfa, + 0xde, 0xfa, 0xde, 0xfa, 0xc8, 0xfb, 0xc8, 0xfb, 0xc1, 0xfc, 0xc0, 0xfc, + 0xbf, 0xfd, 0xc1, 0xfd, 0xd1, 0xfe, 0xcf, 0xfe, 0xe4, 0xff, 0xe5, 0xff, + 0x03, 0x01, 0x02, 0x01, 0x28, 0x02, 0x29, 0x02, 0x4f, 0x03, 0x4e, 0x03, + 0x78, 0x04, 0x79, 0x04, 0x9c, 0x05, 0x9c, 0x05, 0xbb, 0x06, 0xbb, 0x06, + 0xcf, 0x07, 0xd0, 0x07, 0xd3, 0x08, 0xd3, 0x08, 0xc8, 0x09, 0xc8, 0x09, + 0xa9, 0x0a, 0xa8, 0x0a, 0x6e, 0x0b, 0x6e, 0x0b, 0x1f, 0x0c, 0x1d, 0x0c, + 0xae, 0x0c, 0xb0, 0x0c, 0x2a, 0x0d, 0x28, 0x0d, 0x82, 0x0d, 0x84, 0x0d, + 0xc2, 0x0d, 0xc0, 0x0d, 0xe3, 0x0d, 0xe3, 0x0d, 0xe8, 0x0d, 0xe9, 0x0d, + 0xd6, 0x0d, 0xd5, 0x0d, 0xa6, 0x0d, 0xa7, 0x0d, 0x64, 0x0d, 0x62, 0x0d, + 0x06, 0x0d, 0x06, 0x0d, 0x96, 0x0c, 0x96, 0x0c, 0x0e, 0x0c, 0x0f, 0x0c, + 0x73, 0x0b, 0x72, 0x0b, 0xc7, 0x0a, 0xc9, 0x0a, 0x06, 0x0a, 0x05, 0x0a, + 0x34, 0x09, 0x36, 0x09, 0x52, 0x08, 0x50, 0x08, 0x5b, 0x07, 0x5c, 0x07, + 0x58, 0x06, 0x59, 0x06, 0x43, 0x05, 0x42, 0x05, 0x1f, 0x04, 0x21, 0x04, + 0xed, 0x02, 0xef, 0x02, 0xae, 0x01, 0xad, 0x01, 0x66, 0x00, 0x67, 0x00, + 0x1e, 0xff, 0x1e, 0xff, 0xd0, 0xfd, 0xcf, 0xfd, 0x81, 0xfc, 0x83, 0xfc, + 0x39, 0xfb, 0x37, 0xfb, 0xf6, 0xf9, 0xf6, 0xf9, 0xc2, 0xf8, 0xc1, 0xf8, + 0x9a, 0xf7, 0x9a, 0xf7, 0x87, 0xf6, 0x86, 0xf6, 0x8a, 0xf5, 0x8a, 0xf5, + 0xa3, 0xf4, 0xa3, 0xf4, 0xda, 0xf3, 0xdb, 0xf3, 0x30, 0xf3, 0x2d, 0xf3, + 0xa0, 0xf2, 0xa1, 0xf2, 0x34, 0xf2, 0x33, 0xf2, 0xe4, 0xf1, 0xe5, 0xf1, + 0xb3, 0xf1, 0xb3, 0xf1, 0x9c, 0xf1, 0x9e, 0xf1, 0xa3, 0xf1, 0xa3, 0xf1, + 0xc5, 0xf1, 0xc5, 0xf1, 0xfd, 0xf1, 0xfd, 0xf1, 0x4c, 0xf2, 0x4c, 0xf2, + 0xb4, 0xf2, 0xb3, 0xf2, 0x2e, 0xf3, 0x2d, 0xf3, 0xbc, 0xf3, 0xbd, 0xf3, + 0x5e, 0xf4, 0x5d, 0xf4, 0x10, 0xf5, 0x11, 0xf5, 0xd5, 0xf5, 0xd5, 0xf5, + 0xaa, 0xf6, 0xab, 0xf6, 0x8f, 0xf7, 0x8f, 0xf7, 0x81, 0xf8, 0x80, 0xf8, + 0x83, 0xf9, 0x82, 0xf9, 0x8e, 0xfa, 0x8e, 0xfa, 0xa7, 0xfb, 0xa6, 0xfb, + 0xcb, 0xfc, 0xcb, 0xfc, 0xf7, 0xfd, 0xf5, 0xfd, 0x29, 0xff, 0x2b, 0xff, + 0x61, 0x00, 0x61, 0x00, 0x9d, 0x01, 0x9d, 0x01, 0xd9, 0x02, 0xdb, 0x02, + 0x16, 0x04, 0x15, 0x04, 0x4b, 0x05, 0x4b, 0x05, 0x76, 0x06, 0x76, 0x06, + 0x95, 0x07, 0x97, 0x07, 0xa7, 0x08, 0xa5, 0x08, 0xa1, 0x09, 0xa3, 0x09, + 0x89, 0x0a, 0x87, 0x0a, 0x56, 0x0b, 0x56, 0x0b, 0x0a, 0x0c, 0x0b, 0x0c, + 0xa3, 0x0c, 0xa3, 0x0c, 0x21, 0x0d, 0x1f, 0x0d, 0x7f, 0x0d, 0x80, 0x0d, + 0xc4, 0x0d, 0xc2, 0x0d, 0xe8, 0x0d, 0xe6, 0x0d, 0xf1, 0x0d, 0xf0, 0x0d, + 0xdf, 0x0d, 0xde, 0x0d, 0xb2, 0x0d, 0xb2, 0x0d, 0x6b, 0x0d, 0x69, 0x0d, + 0x0b, 0x0d, 0x0d, 0x0d, 0x97, 0x0c, 0x95, 0x0c, 0x0a, 0x0c, 0x0a, 0x0c, + 0x6b, 0x0b, 0x6a, 0x0b, 0xb9, 0x0a, 0xb9, 0x0a, 0xf4, 0x09, 0xf3, 0x09, + 0x1f, 0x09, 0x1e, 0x09, 0x39, 0x08, 0x38, 0x08, 0x44, 0x07, 0x45, 0x07, + 0x45, 0x06, 0x43, 0x06, 0x39, 0x05, 0x3b, 0x05, 0x23, 0x04, 0x21, 0x04, + 0x05, 0x03, 0x05, 0x03, 0xe2, 0x01, 0xe1, 0x01, 0xba, 0x00, 0xb9, 0x00, + 0x8f, 0xff, 0x8d, 0xff, 0x64, 0xfe, 0x64, 0xfe, 0x3f, 0xfd, 0x3f, 0xfd, + 0x20, 0xfc, 0x1e, 0xfc, 0x0d, 0xfb, 0x0b, 0xfb, 0xff, 0xf9, 0xff, 0xf9, + 0x09, 0xf9, 0x08, 0xf9, 0x1d, 0xf8, 0x1c, 0xf8, 0x4b, 0xf7, 0x4b, 0xf7, + 0x8c, 0xf6, 0x8b, 0xf6, 0xe2, 0xf5, 0xe3, 0xf5, 0x54, 0xf5, 0x52, 0xf5, + 0xd7, 0xf4, 0xd8, 0xf4, 0x7e, 0xf4, 0x7c, 0xf4, 0x35, 0xf4, 0x34, 0xf4, + 0x0c, 0xf4, 0x0c, 0xf4, 0xf9, 0xf3, 0xf9, 0xf3, 0xff, 0xf3, 0x00, 0xf4, + 0x21, 0xf4, 0x1f, 0xf4, 0x54, 0xf4, 0x54, 0xf4, 0xa4, 0xf4, 0xa3, 0xf4, + 0x04, 0xf5, 0x02, 0xf5, 0x7e, 0xf5, 0x7f, 0xf5, 0x0b, 0xf6, 0x09, 0xf6, + 0xaa, 0xf6, 0xab, 0xf6, 0x5f, 0xf7, 0x5d, 0xf7, 0x1e, 0xf8, 0x1f, 0xf8, + 0xf4, 0xf8, 0xf3, 0xf8, 0xd3, 0xf9, 0xd2, 0xf9, 0xc2, 0xfa, 0xc1, 0xfa, + 0xbc, 0xfb, 0xbb, 0xfb, 0xbd, 0xfc, 0xbe, 0xfc, 0xc9, 0xfd, 0xc8, 0xfd, + 0xd4, 0xfe, 0xd4, 0xfe, 0xe7, 0xff, 0xe6, 0xff, 0xf3, 0x00, 0xf2, 0x00, + 0xff, 0x01, 0xfe, 0x01, 0xfe, 0x02, 0xff, 0x02, 0xfb, 0x03, 0xf7, 0x03, + 0xe4, 0x04, 0xe6, 0x04, 0xc2, 0x05, 0xc0, 0x05, 0x8f, 0x06, 0x8f, 0x06, + 0x47, 0x07, 0x47, 0x07, 0xed, 0x07, 0xea, 0x07, 0x7b, 0x08, 0x79, 0x08, + 0xf0, 0x08, 0xf2, 0x08, 0x55, 0x09, 0x52, 0x09, 0x9e, 0x09, 0x9e, 0x09, + 0xd6, 0x09, 0xd4, 0x09, 0xf2, 0x09, 0xf1, 0x09, 0xfb, 0x09, 0xfd, 0x09, + 0xf0, 0x09, 0xee, 0x09, 0xcf, 0x09, 0xcd, 0x09, 0x99, 0x09, 0x99, 0x09, + 0x52, 0x09, 0x51, 0x09, 0xf8, 0x08, 0xf7, 0x08, 0x88, 0x08, 0x88, 0x08, + 0x0d, 0x08, 0x0d, 0x08, 0x7d, 0x07, 0x7c, 0x07, 0xdd, 0x06, 0xdc, 0x06, + 0x2f, 0x06, 0x2d, 0x06, 0x71, 0x05, 0x6e, 0x05, 0xa8, 0x04, 0xa7, 0x04, + 0xd0, 0x03, 0xce, 0x03, 0xf1, 0x02, 0xf0, 0x02, 0x09, 0x02, 0x05, 0x02, + 0x18, 0x01, 0x18, 0x01, 0x23, 0x00, 0x20, 0x00, 0x2d, 0xff, 0x2c, 0xff, + 0x32, 0xfe, 0x32, 0xfe, 0x40, 0xfd, 0x3f, 0xfd, 0x4f, 0xfc, 0x4d, 0xfc, + 0x69, 0xfb, 0x69, 0xfb, 0x8f, 0xfa, 0x8e, 0xfa, 0xc2, 0xf9, 0xc1, 0xf9, + 0x07, 0xf9, 0x07, 0xf9, 0x5b, 0xf8, 0x5a, 0xf8, 0xc4, 0xf7, 0xc2, 0xf7, + 0x43, 0xf7, 0x41, 0xf7, 0xd3, 0xf6, 0xd2, 0xf6, 0x7f, 0xf6, 0x7f, 0xf6, + 0x3f, 0xf6, 0x3b, 0xf6, 0x15, 0xf6, 0x15, 0xf6, 0x05, 0xf6, 0x02, 0xf6, + 0x07, 0xf6, 0x07, 0xf6, 0x27, 0xf6, 0x24, 0xf6, 0x53, 0xf6, 0x52, 0xf6, + 0x9c, 0xf6, 0x9c, 0xf6, 0xf7, 0xf6, 0xf2, 0xf6, 0x62, 0xf7, 0x63, 0xf7, + 0xe5, 0xf7, 0xe1, 0xf7, 0x76, 0xf8, 0x76, 0xf8, 0x1d, 0xf9, 0x1a, 0xf9, + 0xcf, 0xf9, 0xce, 0xf9, 0x94, 0xfa, 0x93, 0xfa, 0x67, 0xfb, 0x64, 0xfb, + 0x46, 0xfc, 0x44, 0xfc, 0x2f, 0xfd, 0x2d, 0xfd, 0x23, 0xfe, 0x21, 0xfe, + 0x1f, 0xff, 0x1d, 0xff, 0x20, 0x00, 0x1d, 0x00, 0x20, 0x01, 0x1e, 0x01, + 0x23, 0x02, 0x1f, 0x02, 0x1a, 0x03, 0x19, 0x03, 0x10, 0x04, 0x0d, 0x04, + 0xf8, 0x04, 0xf7, 0x04, 0xd5, 0x05, 0xd4, 0x05, 0xa5, 0x06, 0xa2, 0x06, + 0x61, 0x07, 0x61, 0x07, 0x0c, 0x08, 0x0a, 0x08, 0xa2, 0x08, 0x9f, 0x08, + 0x27, 0x09, 0x28, 0x09, 0x95, 0x09, 0x90, 0x09, 0xeb, 0x09, 0xed, 0x09, + 0x30, 0x0a, 0x2d, 0x0a, 0x5b, 0x0a, 0x5b, 0x0a, 0x73, 0x0a, 0x70, 0x0a, + 0x73, 0x0a, 0x72, 0x0a, 0x5c, 0x0a, 0x5b, 0x0a, 0x37, 0x0a, 0x34, 0x0a, + 0xf6, 0x09, 0xf6, 0x09, 0xa7, 0x09, 0xa5, 0x09, 0x40, 0x09, 0x41, 0x09, + 0xcc, 0x08, 0xc7, 0x08, 0x42, 0x08, 0x43, 0x08, 0xa8, 0x07, 0xa4, 0x07, + 0xfc, 0x06, 0xfc, 0x06, 0x42, 0x06, 0x40, 0x06, 0x76, 0x05, 0x74, 0x05, + 0x9c, 0x04, 0x9a, 0x04, 0xaf, 0x03, 0xad, 0x03, 0xb9, 0x02, 0xb8, 0x02, + 0xb4, 0x01, 0xb1, 0x01, 0xa7, 0x00, 0xa7, 0x00, 0x91, 0xff, 0x8e, 0xff, + 0x76, 0xfe, 0x74, 0xfe, 0x5a, 0xfd, 0x58, 0xfd, 0x3d, 0xfc, 0x3c, 0xfc, + 0x2c, 0xfb, 0x2a, 0xfb, 0x1e, 0xfa, 0x1c, 0xfa, 0x22, 0xf9, 0x1e, 0xf9, + 0x35, 0xf8, 0x33, 0xf8, 0x59, 0xf7, 0x55, 0xf7, 0x96, 0xf6, 0x97, 0xf6, + 0xea, 0xf5, 0xe7, 0xf5, 0x58, 0xf5, 0x56, 0xf5, 0xdd, 0xf4, 0xdb, 0xf4, + 0x7c, 0xf4, 0x7a, 0xf4, 0x36, 0xf4, 0x34, 0xf4, 0x09, 0xf4, 0x06, 0xf4, + 0xf5, 0xf3, 0xf4, 0xf3, 0xfb, 0xf3, 0xf8, 0xf3, 0x1b, 0xf4, 0x18, 0xf4, + 0x50, 0xf4, 0x4f, 0xf4, 0x9d, 0xf4, 0x9b, 0xf4, 0x00, 0xf5, 0xfe, 0xf4, + 0x74, 0xf5, 0x72, 0xf5, 0xff, 0xf5, 0xfe, 0xf5, 0x9d, 0xf6, 0x98, 0xf6, + 0x46, 0xf7, 0x45, 0xf7, 0x07, 0xf8, 0x04, 0xf8, 0xd1, 0xf8, 0xd1, 0xf8, + 0xaf, 0xf9, 0xac, 0xf9, 0x99, 0xfa, 0x98, 0xfa, 0x92, 0xfb, 0x8e, 0xfb, + 0x92, 0xfc, 0x92, 0xfc, 0xa1, 0xfd, 0x9d, 0xfd, 0xb8, 0xfe, 0xb4, 0xfe, + 0xd6, 0xff, 0xd3, 0xff, 0xfa, 0x00, 0xf7, 0x00, 0x20, 0x02, 0x1d, 0x02, + 0x49, 0x03, 0x46, 0x03, 0x6c, 0x04, 0x69, 0x04, 0x89, 0x05, 0x87, 0x05, + 0x9e, 0x06, 0x9b, 0x06, 0xa3, 0x07, 0xa0, 0x07, 0x99, 0x08, 0x97, 0x08, + 0x7a, 0x09, 0x78, 0x09, 0x48, 0x0a, 0x45, 0x0a, 0xfb, 0x0a, 0xfa, 0x0a, + 0x96, 0x0b, 0x93, 0x0b, 0x15, 0x0c, 0x14, 0x0c, 0x7c, 0x0c, 0x79, 0x0c, + 0xc4, 0x0c, 0xc5, 0x0c, 0xf8, 0x0c, 0xf4, 0x0c, 0x0b, 0x0d, 0x0a, 0x0d, + 0x08, 0x0d, 0x05, 0x0d, 0xe8, 0x0c, 0xe9, 0x0c, 0xb3, 0x0c, 0xaf, 0x0c, + 0x68, 0x0c, 0x65, 0x0c, 0x00, 0x0c, 0xfd, 0x0b, 0x89, 0x0b, 0x87, 0x0b, + 0xf7, 0x0a, 0xf6, 0x0a, 0x56, 0x0a, 0x53, 0x0a, 0xa0, 0x09, 0x9e, 0x09, + 0xd5, 0x08, 0xd2, 0x08, 0xfb, 0x07, 0xfb, 0x07, 0x0d, 0x07, 0x0a, 0x07, + 0x0c, 0x06, 0x0c, 0x06, 0x00, 0x05, 0xff, 0x04, 0xe4, 0x03, 0xe0, 0x03, + 0xbb, 0x02, 0xba, 0x02, 0x89, 0x01, 0x84, 0x01, 0x4d, 0x00, 0x4c, 0x00, + 0x10, 0xff, 0x0e, 0xff, 0xcf, 0xfd, 0xcd, 0xfd, 0x97, 0xfc, 0x93, 0xfc, + 0x60, 0xfb, 0x60, 0xfb, 0x3a, 0xfa, 0x36, 0xfa, 0x20, 0xf9, 0x1e, 0xf9, + 0x19, 0xf8, 0x16, 0xf8, 0x27, 0xf7, 0x22, 0xf7, 0x4b, 0xf6, 0x4a, 0xf6, + 0x8b, 0xf5, 0x89, 0xf5, 0xe4, 0xf4, 0xe2, 0xf4, 0x5c, 0xf4, 0x58, 0xf4, + 0xea, 0xf3, 0xe8, 0xf3, 0x92, 0xf3, 0x91, 0xf3, 0x5a, 0xf3, 0x56, 0xf3, + 0x36, 0xf3, 0x35, 0xf3, 0x30, 0xf3, 0x2c, 0xf3, 0x3d, 0xf3, 0x3d, 0xf3, + 0x6a, 0xf3, 0x64, 0xf3, 0xa8, 0xf3, 0xa7, 0xf3, 0xfe, 0xf3, 0xfc, 0xf3, + 0x6a, 0xf4, 0x66, 0xf4, 0xe4, 0xf4, 0xe3, 0xf4, 0x79, 0xf5, 0x75, 0xf5, + 0x1b, 0xf6, 0x1a, 0xf6, 0xd3, 0xf6, 0xd0, 0xf6, 0x98, 0xf7, 0x96, 0xf7, + 0x70, 0xf8, 0x6e, 0xf8, 0x55, 0xf9, 0x54, 0xf9, 0x4a, 0xfa, 0x4a, 0xfa, + 0x4d, 0xfb, 0x4b, 0xfb, 0x58, 0xfc, 0x56, 0xfc, 0x70, 0xfd, 0x71, 0xfd, + 0x91, 0xfe, 0x8d, 0xfe, 0xb7, 0xff, 0xb7, 0xff, 0xe3, 0x00, 0xe0, 0x00, + 0x12, 0x02, 0x0f, 0x02, 0x3c, 0x03, 0x3c, 0x03, 0x67, 0x04, 0x62, 0x04, + 0x83, 0x05, 0x84, 0x05, 0x98, 0x06, 0x95, 0x06, 0x9b, 0x07, 0x9a, 0x07, + 0x8d, 0x08, 0x8a, 0x08, 0x6a, 0x09, 0x69, 0x09, 0x2f, 0x0a, 0x2d, 0x0a, + 0xdf, 0x0a, 0xdb, 0x0a, 0x6f, 0x0b, 0x6d, 0x0b, 0xe7, 0x0b, 0xe5, 0x0b, + 0x45, 0x0c, 0x43, 0x0c, 0x85, 0x0c, 0x82, 0x0c, 0xab, 0x0c, 0xa9, 0x0c, + 0xb6, 0x0c, 0xb3, 0x0c, 0xa6, 0x0c, 0xa5, 0x0c, 0x7e, 0x0c, 0x7b, 0x0c, + 0x3d, 0x0c, 0x3c, 0x0c, 0xe6, 0x0b, 0xe2, 0x0b, 0x75, 0x0b, 0x74, 0x0b, + 0xf3, 0x0a, 0xf1, 0x0a, 0x5a, 0x0a, 0x57, 0x0a, 0xaf, 0x09, 0xab, 0x09, + 0xf1, 0x08, 0xf2, 0x08, 0x23, 0x08, 0x20, 0x08, 0x46, 0x07, 0x46, 0x07, + 0x59, 0x06, 0x55, 0x06, 0x5d, 0x05, 0x5d, 0x05, 0x56, 0x04, 0x53, 0x04, + 0x42, 0x03, 0x42, 0x03, 0x2a, 0x02, 0x29, 0x02, 0x0a, 0x01, 0x07, 0x01, + 0xe4, 0xff, 0xe3, 0xff, 0xbe, 0xfe, 0xbc, 0xfe, 0x9a, 0xfd, 0x99, 0xfd, + 0x7b, 0xfc, 0x79, 0xfc, 0x63, 0xfb, 0x60, 0xfb, 0x57, 0xfa, 0x56, 0xfa, + 0x59, 0xf9, 0x58, 0xf9, 0x6e, 0xf8, 0x6c, 0xf8, 0x92, 0xf7, 0x90, 0xf7, + 0xce, 0xf6, 0xcc, 0xf6, 0x21, 0xf6, 0x20, 0xf6, 0x89, 0xf5, 0x86, 0xf5, + 0x0f, 0xf5, 0x0e, 0xf5, 0xac, 0xf4, 0xa9, 0xf4, 0x63, 0xf4, 0x62, 0xf4, + 0x35, 0xf4, 0x32, 0xf4, 0x1c, 0xf4, 0x1b, 0xf4, 0x1f, 0xf4, 0x1f, 0xf4, + 0x3c, 0xf4, 0x39, 0xf4, 0x6f, 0xf4, 0x6c, 0xf4, 0xb7, 0xf4, 0xb5, 0xf4, + 0x19, 0xf5, 0x15, 0xf5, 0x8d, 0xf5, 0x8c, 0xf5, 0x17, 0xf6, 0x14, 0xf6, + 0xb6, 0xf6, 0xb3, 0xf6, 0x64, 0xf7, 0x63, 0xf7, 0x29, 0xf8, 0x27, 0xf8, + 0xfc, 0xf8, 0xfb, 0xf8, 0xe0, 0xf9, 0xdc, 0xf9, 0xd2, 0xfa, 0xd2, 0xfa, + 0xd4, 0xfb, 0xcf, 0xfb, 0xde, 0xfc, 0xdd, 0xfc, 0xf3, 0xfd, 0xef, 0xfd, + 0x12, 0xff, 0x10, 0xff, 0x33, 0x00, 0x2f, 0x00, 0x52, 0x01, 0x50, 0x01, + 0x73, 0x02, 0x6f, 0x02, 0x87, 0x03, 0x86, 0x03, 0x98, 0x04, 0x95, 0x04, + 0x9a, 0x05, 0x98, 0x05, 0x8e, 0x06, 0x8b, 0x06, 0x6e, 0x07, 0x6b, 0x07, + 0x3b, 0x08, 0x3a, 0x08, 0xf2, 0x08, 0xee, 0x08, 0x8e, 0x09, 0x8d, 0x09, + 0x15, 0x0a, 0x11, 0x0a, 0x81, 0x0a, 0x7e, 0x0a, 0xd3, 0x0a, 0xd2, 0x0a, + 0x0e, 0x0b, 0x0a, 0x0b, 0x2e, 0x0b, 0x2d, 0x0b, 0x39, 0x0b, 0x36, 0x0b, + 0x2e, 0x0b, 0x2a, 0x0b, 0x0b, 0x0b, 0x0a, 0x0b, 0xd4, 0x0a, 0xd0, 0x0a, + 0x87, 0x0a, 0x87, 0x0a, 0x27, 0x0a, 0x24, 0x0a, 0xb5, 0x09, 0xb2, 0x09, + 0x2d, 0x09, 0x2c, 0x09, 0x96, 0x08, 0x92, 0x08, 0xec, 0x07, 0xea, 0x07, + 0x33, 0x07, 0x30, 0x07, 0x6a, 0x06, 0x68, 0x06, 0x94, 0x05, 0x90, 0x05, + 0xae, 0x04, 0xac, 0x04, 0xb9, 0x03, 0xb7, 0x03, 0xbf, 0x02, 0xbc, 0x02, + 0xb7, 0x01, 0xb5, 0x01, 0xac, 0x00, 0xa7, 0x00, 0x95, 0xff, 0x96, 0xff, + 0x82, 0xfe, 0x7c, 0xfe, 0x6a, 0xfd, 0x6a, 0xfd, 0x56, 0xfc, 0x53, 0xfc, + 0x4c, 0xfb, 0x48, 0xfb, 0x45, 0xfa, 0x47, 0xfa, 0x51, 0xf9, 0x4a, 0xf9, + 0x6a, 0xf8, 0x69, 0xf8, 0x96, 0xf7, 0x92, 0xf7, 0xd5, 0xf6, 0xd2, 0xf6, + 0x2e, 0xf6, 0x2d, 0xf6, 0x9c, 0xf5, 0x9a, 0xf5, 0x26, 0xf5, 0x24, 0xf5, + 0xc8, 0xf4, 0xc5, 0xf4, 0x84, 0xf4, 0x82, 0xf4, 0x5b, 0xf4, 0x5a, 0xf4, + 0x4c, 0xf4, 0x48, 0xf4, 0x54, 0xf4, 0x52, 0xf4, 0x77, 0xf4, 0x74, 0xf4, + 0xb1, 0xf4, 0xb0, 0xf4, 0x01, 0xf5, 0xfe, 0xf4, 0x68, 0xf5, 0x65, 0xf5, + 0xe6, 0xf5, 0xe3, 0xf5, 0x74, 0xf6, 0x71, 0xf6, 0x1a, 0xf7, 0x18, 0xf7, + 0xd1, 0xf7, 0xcc, 0xf7, 0x9a, 0xf8, 0x98, 0xf8, 0x74, 0xf9, 0x71, 0xf9, + 0x5c, 0xfa, 0x58, 0xfa, 0x55, 0xfb, 0x52, 0xfb, 0x59, 0xfc, 0x56, 0xfc, + 0x69, 0xfd, 0x66, 0xfd, 0x83, 0xfe, 0x80, 0xfe, 0xa1, 0xff, 0x9d, 0xff, + 0xc7, 0x00, 0xc4, 0x00, 0xe7, 0x01, 0xe3, 0x01, 0x08, 0x03, 0x04, 0x03, + 0x20, 0x04, 0x1b, 0x04, 0x2a, 0x05, 0x2a, 0x05, 0x2e, 0x06, 0x2a, 0x06, + 0x1c, 0x07, 0x17, 0x07, 0xfa, 0x07, 0xf8, 0x07, 0xc5, 0x08, 0xc1, 0x08, + 0x78, 0x09, 0x74, 0x09, 0x16, 0x0a, 0x14, 0x0a, 0x9c, 0x0a, 0x97, 0x0a, + 0x08, 0x0b, 0x07, 0x0b, 0x5e, 0x0b, 0x59, 0x0b, 0x9b, 0x0b, 0x96, 0x0b, + 0xbb, 0x0b, 0xbb, 0x0b, 0xc8, 0x0b, 0xc3, 0x0b, 0xbb, 0x0b, 0xb9, 0x0b, + 0x9a, 0x0b, 0x96, 0x0b, 0x60, 0x0b, 0x5c, 0x0b, 0x13, 0x0b, 0x11, 0x0b, + 0xb2, 0x0a, 0xac, 0x0a, 0x38, 0x0a, 0x37, 0x0a, 0xb0, 0x09, 0xac, 0x09, + 0x12, 0x09, 0x0f, 0x09, 0x63, 0x08, 0x60, 0x08, 0xa3, 0x07, 0x9e, 0x07, + 0xd0, 0x06, 0xce, 0x06, 0xf0, 0x05, 0xed, 0x05, 0xfb, 0x04, 0xf9, 0x04, + 0xfc, 0x03, 0xf9, 0x03, 0xef, 0x02, 0xeb, 0x02, 0xd4, 0x01, 0xd2, 0x01, + 0xb3, 0x00, 0xaf, 0x00, 0x85, 0xff, 0x82, 0xff, 0x57, 0xfe, 0x55, 0xfe, + 0x27, 0xfd, 0x22, 0xfd, 0xfa, 0xfb, 0xf9, 0xfb, 0xd5, 0xfa, 0xd2, 0xfa, + 0xbc, 0xf9, 0xba, 0xf9, 0xaf, 0xf8, 0xad, 0xf8, 0xb6, 0xf7, 0xb0, 0xf7, + 0xce, 0xf6, 0xce, 0xf6, 0x04, 0xf6, 0x00, 0xf6, 0x4f, 0xf5, 0x4c, 0xf5, + 0xb3, 0xf4, 0xb0, 0xf4, 0x34, 0xf4, 0x31, 0xf4, 0xd1, 0xf3, 0xcf, 0xf3, + 0x8b, 0xf3, 0x88, 0xf3, 0x5f, 0xf3, 0x5d, 0xf3, 0x50, 0xf3, 0x4c, 0xf3, + 0x58, 0xf3, 0x57, 0xf3, 0x7e, 0xf3, 0x7b, 0xf3, 0xbc, 0xf3, 0xb9, 0xf3, + 0x11, 0xf4, 0x0f, 0xf4, 0x7a, 0xf4, 0x78, 0xf4, 0xfb, 0xf4, 0xf7, 0xf4, + 0x8e, 0xf5, 0x8c, 0xf5, 0x34, 0xf6, 0x31, 0xf6, 0xee, 0xf6, 0xec, 0xf6, + 0xb8, 0xf7, 0xb5, 0xf7, 0x92, 0xf8, 0x90, 0xf8, 0x7e, 0xf9, 0x7a, 0xf9, + 0x75, 0xfa, 0x74, 0xfa, 0x7c, 0xfb, 0x78, 0xfb, 0x8c, 0xfc, 0x8c, 0xfc, + 0xa7, 0xfd, 0xa3, 0xfd, 0xcc, 0xfe, 0xc8, 0xfe, 0xf4, 0xff, 0xf2, 0xff, + 0x23, 0x01, 0x21, 0x01, 0x54, 0x02, 0x53, 0x02, 0x83, 0x03, 0x7f, 0x03, + 0xae, 0x04, 0xac, 0x04, 0xcd, 0x05, 0xcb, 0x05, 0xe4, 0x06, 0xe0, 0x06, + 0xe8, 0x07, 0xe6, 0x07, 0xdc, 0x08, 0xd7, 0x08, 0xb8, 0x09, 0xb5, 0x09, + 0x7f, 0x0a, 0x7c, 0x0a, 0x2c, 0x0b, 0x2b, 0x0b, 0xc2, 0x0b, 0xbe, 0x0b, + 0x3b, 0x0c, 0x39, 0x0c, 0x9a, 0x0c, 0x96, 0x0c, 0xda, 0x0c, 0xda, 0x0c, + 0x06, 0x0d, 0x02, 0x0d, 0x0f, 0x0d, 0x0d, 0x0d, 0x04, 0x0d, 0x01, 0x0d, + 0xdd, 0x0c, 0xda, 0x0c, 0x9f, 0x0c, 0x9c, 0x0c, 0x4a, 0x0c, 0x46, 0x0c, + 0xde, 0x0b, 0xdb, 0x0b, 0x5a, 0x0b, 0x58, 0x0b, 0xc5, 0x0a, 0xc0, 0x0a, + 0x15, 0x0a, 0x15, 0x0a, 0x5c, 0x09, 0x57, 0x09, 0x86, 0x08, 0x83, 0x08, + 0xa4, 0x07, 0xa2, 0x07, 0xad, 0x06, 0xaa, 0x06, 0xa9, 0x05, 0xa6, 0x05, + 0x90, 0x04, 0x8f, 0x04, 0x72, 0x03, 0x6e, 0x03, 0x40, 0x02, 0x40, 0x02, + 0x0c, 0x01, 0x08, 0x01, 0xce, 0xff, 0xcf, 0xff, 0x90, 0xfe, 0x8f, 0xfe, + 0x58, 0xfd, 0x54, 0xfd, 0x1e, 0xfc, 0x1c, 0xfc, 0xf3, 0xfa, 0xf0, 0xfa, + 0xd4, 0xf9, 0xd1, 0xf9, 0xc4, 0xf8, 0xc2, 0xf8, 0xcd, 0xf7, 0xc9, 0xf7, + 0xe5, 0xf6, 0xe3, 0xf6, 0x1d, 0xf6, 0x1c, 0xf6, 0x6a, 0xf5, 0x69, 0xf5, + 0xd4, 0xf4, 0xd2, 0xf4, 0x5a, 0xf4, 0x57, 0xf4, 0xf6, 0xf3, 0xf4, 0xf3, + 0xb2, 0xf3, 0xb1, 0xf3, 0x84, 0xf3, 0x81, 0xf3, 0x71, 0xf3, 0x6f, 0xf3, + 0x76, 0xf3, 0x74, 0xf3, 0x93, 0xf3, 0x91, 0xf3, 0xcd, 0xf3, 0xca, 0xf3, + 0x13, 0xf4, 0x13, 0xf4, 0x7a, 0xf4, 0x77, 0xf4, 0xeb, 0xf4, 0xec, 0xf4, + 0x77, 0xf5, 0x73, 0xf5, 0x12, 0xf6, 0x10, 0xf6, 0xbe, 0xf6, 0xbc, 0xf6, + 0x80, 0xf7, 0x7e, 0xf7, 0x4f, 0xf8, 0x4c, 0xf8, 0x30, 0xf9, 0x2e, 0xf9, + 0x1d, 0xfa, 0x1a, 0xfa, 0x18, 0xfb, 0x15, 0xfb, 0x1f, 0xfc, 0x1f, 0xfc, + 0x32, 0xfd, 0x2b, 0xfd, 0x4a, 0xfe, 0x4a, 0xfe, 0x6d, 0xff, 0x69, 0xff, + 0x93, 0x00, 0x91, 0x00, 0xbd, 0x01, 0xbb, 0x01, 0xe6, 0x02, 0xe1, 0x02, + 0x0a, 0x04, 0x08, 0x04, 0x27, 0x05, 0x23, 0x05, 0x37, 0x06, 0x35, 0x06, + 0x3c, 0x07, 0x38, 0x07, 0x2e, 0x08, 0x2b, 0x08, 0x0b, 0x09, 0x09, 0x09, + 0xd4, 0x09, 0xd0, 0x09, 0x84, 0x0a, 0x83, 0x0a, 0x1b, 0x0b, 0x17, 0x0b, + 0x99, 0x0b, 0x96, 0x0b, 0xf8, 0x0b, 0xf7, 0x0b, 0x41, 0x0c, 0x3d, 0x0c, + 0x6a, 0x0c, 0x68, 0x0c, 0x7a, 0x0c, 0x77, 0x0c, 0x71, 0x0c, 0x6f, 0x0c, + 0x4e, 0x0c, 0x4c, 0x0c, 0x14, 0x0c, 0x12, 0x0c, 0xc2, 0x0b, 0xc0, 0x0b, + 0x57, 0x0b, 0x55, 0x0b, 0xdb, 0x0a, 0xd9, 0x0a, 0x48, 0x0a, 0x45, 0x0a, + 0xa0, 0x09, 0x9e, 0x09, 0xea, 0x08, 0xe7, 0x08, 0x1e, 0x08, 0x1c, 0x08, + 0x46, 0x07, 0x45, 0x07, 0x60, 0x06, 0x5b, 0x06, 0x65, 0x05, 0x64, 0x05, + 0x65, 0x04, 0x62, 0x04, 0x55, 0x03, 0x51, 0x03, 0x3e, 0x02, 0x3c, 0x02, + 0x1f, 0x01, 0x1d, 0x01, 0xfc, 0xff, 0xf9, 0xff, 0xd9, 0xfe, 0xd9, 0xfe, + 0xb7, 0xfd, 0xb1, 0xfd, 0x98, 0xfc, 0x99, 0xfc, 0x83, 0xfb, 0x80, 0xfb, + 0x78, 0xfa, 0x76, 0xfa, 0x7c, 0xf9, 0x7b, 0xf9, 0x8f, 0xf8, 0x8b, 0xf8, + 0xb6, 0xf7, 0xb7, 0xf7, 0xf1, 0xf6, 0xed, 0xf6, 0x42, 0xf6, 0x42, 0xf6, + 0xae, 0xf5, 0xaa, 0xf5, 0x2e, 0xf5, 0x2e, 0xf5, 0xcc, 0xf4, 0xca, 0xf4, + 0x7f, 0xf4, 0x7d, 0xf4, 0x50, 0xf4, 0x4e, 0xf4, 0x37, 0xf4, 0x34, 0xf4, + 0x36, 0xf4, 0x35, 0xf4, 0x51, 0xf4, 0x4f, 0xf4, 0x82, 0xf4, 0x7f, 0xf4, + 0xc9, 0xf4, 0xc7, 0xf4, 0x26, 0xf5, 0x26, 0xf5, 0x9a, 0xf5, 0x97, 0xf5, + 0x20, 0xf6, 0x1e, 0xf6, 0xbb, 0xf6, 0xb8, 0xf6, 0x69, 0xf7, 0x66, 0xf7, + 0x26, 0xf8, 0x26, 0xf8, 0xf8, 0xf8, 0xf6, 0xf8, 0xda, 0xf9, 0xd6, 0xf9, + 0xc6, 0xfa, 0xc6, 0xfa, 0xc5, 0xfb, 0xc1, 0xfb, 0xca, 0xfc, 0xc9, 0xfc, + 0xde, 0xfd, 0xdd, 0xfd, 0xf8, 0xfe, 0xf6, 0xfe, 0x18, 0x00, 0x15, 0x00, + 0x37, 0x01, 0x35, 0x01, 0x56, 0x02, 0x56, 0x02, 0x71, 0x03, 0x6c, 0x03, + 0x81, 0x04, 0x80, 0x04, 0x86, 0x05, 0x83, 0x05, 0x7d, 0x06, 0x7c, 0x06, + 0x64, 0x07, 0x62, 0x07, 0x33, 0x08, 0x32, 0x08, 0xf3, 0x08, 0xf0, 0x08, + 0x93, 0x09, 0x91, 0x09, 0x22, 0x0a, 0x20, 0x0a, 0x93, 0x0a, 0x91, 0x0a, + 0xed, 0x0a, 0xeb, 0x0a, 0x2f, 0x0b, 0x2b, 0x0b, 0x54, 0x0b, 0x53, 0x0b, + 0x65, 0x0b, 0x63, 0x0b, 0x5a, 0x0b, 0x58, 0x0b, 0x3a, 0x0b, 0x3b, 0x0b, + 0x05, 0x0b, 0x04, 0x0b, 0xbd, 0x0a, 0xbb, 0x0a, 0x5e, 0x0a, 0x5e, 0x0a, + 0xec, 0x09, 0xeb, 0x09, 0x69, 0x09, 0x67, 0x09, 0xd0, 0x08, 0xd0, 0x08, + 0x2a, 0x08, 0x28, 0x08, 0x71, 0x07, 0x71, 0x07, 0xaa, 0x06, 0xa8, 0x06, + 0xd3, 0x05, 0xd2, 0x05, 0xee, 0x04, 0xec, 0x04, 0xfb, 0x03, 0xfa, 0x03, + 0xff, 0x02, 0xfe, 0x02, 0xf6, 0x01, 0xf6, 0x01, 0xea, 0x00, 0xe6, 0x00, + 0xd2, 0xff, 0xd3, 0xff, 0xbf, 0xfe, 0xbb, 0xfe, 0xa2, 0xfd, 0xa1, 0xfd, + 0x8c, 0xfc, 0x8b, 0xfc, 0x7a, 0xfb, 0x78, 0xfb, 0x73, 0xfa, 0x71, 0xfa, + 0x75, 0xf9, 0x74, 0xf9, 0x89, 0xf8, 0x89, 0xf8, 0xb0, 0xf7, 0xae, 0xf7, + 0xe8, 0xf6, 0xe6, 0xf6, 0x39, 0xf6, 0x37, 0xf6, 0x9f, 0xf5, 0x9f, 0xf5, + 0x22, 0xf5, 0x21, 0xf5, 0xbd, 0xf4, 0xbb, 0xf4, 0x71, 0xf4, 0x70, 0xf4, + 0x40, 0xf4, 0x3c, 0xf4, 0x27, 0xf4, 0x26, 0xf4, 0x2a, 0xf4, 0x28, 0xf4, + 0x45, 0xf4, 0x43, 0xf4, 0x77, 0xf4, 0x77, 0xf4, 0xc2, 0xf4, 0xc0, 0xf4, + 0x22, 0xf5, 0x20, 0xf5, 0x97, 0xf5, 0x97, 0xf5, 0x23, 0xf6, 0x22, 0xf6, + 0xc3, 0xf6, 0xc1, 0xf6, 0x73, 0xf7, 0x71, 0xf7, 0x39, 0xf8, 0x36, 0xf8, + 0x0b, 0xf9, 0x09, 0xf9, 0xf2, 0xf9, 0xf1, 0xf9, 0xe7, 0xfa, 0xe4, 0xfa, + 0xe7, 0xfb, 0xe6, 0xfb, 0xf6, 0xfc, 0xf5, 0xfc, 0x0c, 0xfe, 0x09, 0xfe, + 0x2c, 0xff, 0x2b, 0xff, 0x51, 0x00, 0x4d, 0x00, 0x75, 0x01, 0x74, 0x01, + 0x98, 0x02, 0x96, 0x02, 0xb6, 0x03, 0xb6, 0x03, 0xca, 0x04, 0xc7, 0x04, + 0xd3, 0x05, 0xd2, 0x05, 0xcf, 0x06, 0xcc, 0x06, 0xb7, 0x07, 0xb5, 0x07, + 0x8a, 0x08, 0x8a, 0x08, 0x4a, 0x09, 0x48, 0x09, 0xf3, 0x09, 0xf1, 0x09, + 0x83, 0x0a, 0x82, 0x0a, 0xfc, 0x0a, 0xf9, 0x0a, 0x5b, 0x0b, 0x5c, 0x0b, + 0xa2, 0x0b, 0x9f, 0x0b, 0xcf, 0x0b, 0xcc, 0x0b, 0xe5, 0x0b, 0xe4, 0x0b, + 0xe2, 0x0b, 0xe3, 0x0b, 0xcb, 0x0b, 0xc8, 0x0b, 0x9a, 0x0b, 0x9a, 0x0b, + 0x56, 0x0b, 0x53, 0x0b, 0xfb, 0x0a, 0xfb, 0x0a, 0x8e, 0x0a, 0x8b, 0x0a, + 0x08, 0x0a, 0x08, 0x0a, 0x75, 0x09, 0x73, 0x09, 0xca, 0x08, 0xca, 0x08, + 0x14, 0x08, 0x10, 0x08, 0x45, 0x07, 0x46, 0x07, 0x6e, 0x06, 0x6b, 0x06, + 0x81, 0x05, 0x80, 0x05, 0x87, 0x04, 0x86, 0x04, 0x7f, 0x03, 0x7e, 0x03, + 0x6c, 0x02, 0x6c, 0x02, 0x4e, 0x01, 0x4c, 0x01, 0x27, 0x00, 0x27, 0x00, + 0xfa, 0xfe, 0xfa, 0xfe, 0xca, 0xfd, 0xca, 0xfd, 0x9e, 0xfc, 0x9b, 0xfc, + 0x71, 0xfb, 0x71, 0xfb, 0x52, 0xfa, 0x52, 0xfa, 0x3c, 0xf9, 0x3b, 0xf9, + 0x37, 0xf8, 0x36, 0xf8, 0x45, 0xf7, 0x44, 0xf7, 0x67, 0xf6, 0x65, 0xf6, + 0xa5, 0xf5, 0xa5, 0xf5, 0xf9, 0xf4, 0xf8, 0xf4, 0x6a, 0xf4, 0x6a, 0xf4, + 0xf5, 0xf3, 0xf2, 0xf3, 0x9d, 0xf3, 0x9c, 0xf3, 0x62, 0xf3, 0x63, 0xf3, + 0x40, 0xf3, 0x3e, 0xf3, 0x3c, 0xf3, 0x3b, 0xf3, 0x4f, 0xf3, 0x4e, 0xf3, + 0x7d, 0xf3, 0x7e, 0xf3, 0xc4, 0xf3, 0xc4, 0xf3, 0x24, 0xf4, 0x21, 0xf4, + 0x97, 0xf4, 0x96, 0xf4, 0x21, 0xf5, 0x1e, 0xf5, 0xbd, 0xf5, 0xbe, 0xf5, + 0x6e, 0xf6, 0x6d, 0xf6, 0x30, 0xf7, 0x30, 0xf7, 0x02, 0xf8, 0x01, 0xf8, + 0xe8, 0xf8, 0xe7, 0xf8, 0xd8, 0xf9, 0xd7, 0xf9, 0xda, 0xfa, 0xd8, 0xfa, + 0xe5, 0xfb, 0xe5, 0xfb, 0xfc, 0xfc, 0xfa, 0xfc, 0x1d, 0xfe, 0x1c, 0xfe, + 0x44, 0xff, 0x44, 0xff, 0x74, 0x00, 0x73, 0x00, 0xa6, 0x01, 0xa5, 0x01, + 0xd5, 0x02, 0xd4, 0x02, 0x06, 0x04, 0x05, 0x04, 0x27, 0x05, 0x28, 0x05, + 0x48, 0x06, 0x46, 0x06, 0x54, 0x07, 0x54, 0x07, 0x50, 0x08, 0x51, 0x08, + 0x3c, 0x09, 0x39, 0x09, 0x0e, 0x0a, 0x10, 0x0a, 0xcc, 0x0a, 0xcb, 0x0a, + 0x6c, 0x0b, 0x6c, 0x0b, 0xf6, 0x0b, 0xf5, 0x0b, 0x62, 0x0c, 0x61, 0x0c, + 0xb5, 0x0c, 0xb5, 0x0c, 0xea, 0x0c, 0xe9, 0x0c, 0x07, 0x0d, 0x07, 0x0d, + 0x08, 0x0d, 0x07, 0x0d, 0xf0, 0x0c, 0xf1, 0x0c, 0xc2, 0x0c, 0xc0, 0x0c, + 0x79, 0x0c, 0x7a, 0x0c, 0x1a, 0x0c, 0x18, 0x0c, 0xa5, 0x0b, 0xa6, 0x0b, + 0x19, 0x0b, 0x17, 0x0b, 0x79, 0x0a, 0x7a, 0x0a, 0xc6, 0x09, 0xc3, 0x09, + 0xfc, 0x08, 0xfd, 0x08, 0x27, 0x08, 0x25, 0x08, 0x38, 0x07, 0x38, 0x07, + 0x41, 0x06, 0x41, 0x06, 0x32, 0x05, 0x33, 0x05, 0x1b, 0x04, 0x1a, 0x04, + 0xf2, 0x02, 0xf3, 0x02, 0xc3, 0x01, 0xc3, 0x01, 0x8a, 0x00, 0x8a, 0x00, + 0x4e, 0xff, 0x4f, 0xff, 0x0f, 0xfe, 0x0f, 0xfe, 0xd5, 0xfc, 0xd6, 0xfc, + 0xa4, 0xfb, 0xa4, 0xfb, 0x7a, 0xfa, 0x79, 0xfa, 0x60, 0xf9, 0x61, 0xf9, + 0x56, 0xf8, 0x56, 0xf8, 0x65, 0xf7, 0x66, 0xf7, 0x86, 0xf6, 0x86, 0xf6, + 0xc7, 0xf5, 0xc7, 0xf5, 0x1d, 0xf5, 0x1d, 0xf5, 0x93, 0xf4, 0x92, 0xf4, + 0x21, 0xf4, 0x20, 0xf4, 0xc9, 0xf3, 0xc9, 0xf3, 0x8f, 0xf3, 0x8e, 0xf3, + 0x69, 0xf3, 0x6a, 0xf3, 0x66, 0xf3, 0x65, 0xf3, 0x71, 0xf3, 0x72, 0xf3, + 0x9c, 0xf3, 0x9a, 0xf3, 0xd9, 0xf3, 0xda, 0xf3, 0x2e, 0xf4, 0x2e, 0xf4, + 0x99, 0xf4, 0x99, 0xf4, 0x16, 0xf5, 0x17, 0xf5, 0xa8, 0xf5, 0xa8, 0xf5, + 0x4e, 0xf6, 0x4f, 0xf6, 0x04, 0xf7, 0x02, 0xf7, 0xcf, 0xf7, 0xce, 0xf7, + 0xa2, 0xf8, 0xa4, 0xf8, 0x8d, 0xf9, 0x8b, 0xf9, 0x80, 0xfa, 0x80, 0xfa, + 0x81, 0xfb, 0x81, 0xfb, 0x8f, 0xfc, 0x8f, 0xfc, 0xa4, 0xfd, 0xa4, 0xfd, + 0xc4, 0xfe, 0xc3, 0xfe, 0xeb, 0xff, 0xea, 0xff, 0x12, 0x01, 0x12, 0x01, + 0x3f, 0x02, 0x3e, 0x02, 0x65, 0x03, 0x65, 0x03, 0x8a, 0x04, 0x88, 0x04, + 0xa2, 0x05, 0xa1, 0x05, 0xae, 0x06, 0xad, 0x06, 0xae, 0x07, 0xac, 0x07, + 0x98, 0x08, 0x98, 0x08, 0x71, 0x09, 0x70, 0x09, 0x31, 0x0a, 0x30, 0x0a, + 0xd9, 0x0a, 0xd7, 0x0a, 0x65, 0x0b, 0x66, 0x0b, 0xd7, 0x0b, 0xd6, 0x0b, + 0x30, 0x0c, 0x30, 0x0c, 0x6a, 0x0c, 0x68, 0x0c, 0x8c, 0x0c, 0x8b, 0x0c, + 0x92, 0x0c, 0x90, 0x0c, 0x7f, 0x0c, 0x7c, 0x0c, 0x51, 0x0c, 0x52, 0x0c, + 0x0d, 0x0c, 0x0c, 0x0c, 0xb3, 0x0b, 0xb1, 0x0b, 0x40, 0x0b, 0x40, 0x0b, + 0xbb, 0x0a, 0xba, 0x0a, 0x1e, 0x0a, 0x1d, 0x0a, 0x72, 0x09, 0x71, 0x09, + 0xb0, 0x08, 0xae, 0x08, 0xde, 0x07, 0xde, 0x07, 0xfe, 0x06, 0xfd, 0x06, + 0x0b, 0x06, 0x0b, 0x06, 0x10, 0x05, 0x0e, 0x05, 0x01, 0x04, 0x03, 0x04, + 0xf0, 0x02, 0xef, 0x02, 0xd2, 0x01, 0xd1, 0x01, 0xad, 0x00, 0xaf, 0x00, + 0x8a, 0xff, 0x87, 0xff, 0x5e, 0xfe, 0x5f, 0xfe, 0x3e, 0xfd, 0x3c, 0xfd, + 0x1c, 0xfc, 0x1d, 0xfc, 0x09, 0xfb, 0x09, 0xfb, 0x00, 0xfa, 0xff, 0xf9, + 0x06, 0xf9, 0x07, 0xf9, 0x1d, 0xf8, 0x1c, 0xf8, 0x49, 0xf7, 0x48, 0xf7, + 0x89, 0xf6, 0x88, 0xf6, 0xe0, 0xf5, 0xe0, 0xf5, 0x52, 0xf5, 0x52, 0xf5, + 0xda, 0xf4, 0xdb, 0xf4, 0x80, 0xf4, 0x7e, 0xf4, 0x3d, 0xf4, 0x3e, 0xf4, + 0x13, 0xf4, 0x13, 0xf4, 0x04, 0xf4, 0x03, 0xf4, 0x0e, 0xf4, 0x0e, 0xf4, + 0x2f, 0xf4, 0x2e, 0xf4, 0x69, 0xf4, 0x6b, 0xf4, 0xb8, 0xf4, 0xb9, 0xf4, + 0x1e, 0xf5, 0x1e, 0xf5, 0x99, 0xf5, 0x99, 0xf5, 0x27, 0xf6, 0x27, 0xf6, + 0xca, 0xf6, 0xca, 0xf6, 0x80, 0xf7, 0x81, 0xf7, 0x46, 0xf8, 0x46, 0xf8, + 0x21, 0xf9, 0x20, 0xf9, 0x06, 0xfa, 0x08, 0xfa, 0xfc, 0xfa, 0xfb, 0xfa, + 0xff, 0xfb, 0x01, 0xfc, 0x0d, 0xfd, 0x0c, 0xfd, 0x28, 0xfe, 0x28, 0xfe, + 0x47, 0xff, 0x45, 0xff, 0x6a, 0x00, 0x6b, 0x00, 0x8f, 0x01, 0x8e, 0x01, + 0xb2, 0x02, 0xb1, 0x02, 0xce, 0x03, 0xd0, 0x03, 0xe1, 0x04, 0xe1, 0x04, + 0xe7, 0x05, 0xe8, 0x05, 0xe0, 0x06, 0xe0, 0x06, 0xc5, 0x07, 0xc5, 0x07, + 0x96, 0x08, 0x95, 0x08, 0x52, 0x09, 0x54, 0x09, 0xf7, 0x09, 0xf4, 0x09, + 0x82, 0x0a, 0x83, 0x0a, 0xf2, 0x0a, 0xf2, 0x0a, 0x47, 0x0b, 0x48, 0x0b, + 0x87, 0x0b, 0x86, 0x0b, 0xa5, 0x0b, 0xa6, 0x0b, 0xb2, 0x0b, 0xb0, 0x0b, + 0xa2, 0x0b, 0xa3, 0x0b, 0x7c, 0x0b, 0x7d, 0x0b, 0x45, 0x0b, 0x44, 0x0b, + 0xf3, 0x0a, 0xf4, 0x0a, 0x8d, 0x0a, 0x8c, 0x0a, 0x16, 0x0a, 0x18, 0x0a, + 0x8a, 0x09, 0x8b, 0x09, 0xed, 0x08, 0xed, 0x08, 0x3e, 0x08, 0x41, 0x08, + 0x7f, 0x07, 0x7d, 0x07, 0xb0, 0x06, 0xb1, 0x06, 0xcf, 0x05, 0xd0, 0x05, + 0xe6, 0x04, 0xe5, 0x04, 0xec, 0x03, 0xea, 0x03, 0xe7, 0x02, 0xe8, 0x02, + 0xda, 0x01, 0xda, 0x01, 0xc3, 0x00, 0xc3, 0x00, 0xa8, 0xff, 0xa8, 0xff, + 0x89, 0xfe, 0x89, 0xfe, 0x69, 0xfd, 0x69, 0xfd, 0x4c, 0xfc, 0x4c, 0xfc, + 0x36, 0xfb, 0x37, 0xfb, 0x28, 0xfa, 0x2a, 0xfa, 0x2a, 0xf9, 0x28, 0xf9, + 0x39, 0xf8, 0x39, 0xf8, 0x5e, 0xf7, 0x5f, 0xf7, 0x94, 0xf6, 0x92, 0xf6, + 0xe4, 0xf5, 0xe6, 0xf5, 0x4a, 0xf5, 0x49, 0xf5, 0xcb, 0xf4, 0xcd, 0xf4, + 0x68, 0xf4, 0x68, 0xf4, 0x1c, 0xf4, 0x1c, 0xf4, 0xef, 0xf3, 0xf0, 0xf3, + 0xd7, 0xf3, 0xd6, 0xf3, 0xdf, 0xf3, 0xdf, 0xf3, 0xfd, 0xf3, 0xfc, 0xf3, + 0x31, 0xf4, 0x33, 0xf4, 0x82, 0xf4, 0x81, 0xf4, 0xe4, 0xf4, 0xe4, 0xf4, + 0x5e, 0xf5, 0x5d, 0xf5, 0xec, 0xf5, 0xec, 0xf5, 0x8d, 0xf6, 0x8d, 0xf6, + 0x46, 0xf7, 0x45, 0xf7, 0x0c, 0xf8, 0x0e, 0xf8, 0xe9, 0xf8, 0xe7, 0xf8, + 0xd2, 0xf9, 0xd3, 0xf9, 0xcc, 0xfa, 0xca, 0xfa, 0xd3, 0xfb, 0xd5, 0xfb, + 0xe5, 0xfc, 0xe3, 0xfc, 0x06, 0xfe, 0x08, 0xfe, 0x2b, 0xff, 0x2a, 0xff, + 0x56, 0x00, 0x56, 0x00, 0x86, 0x01, 0x86, 0x01, 0xad, 0x02, 0xad, 0x02, + 0xd5, 0x03, 0xd4, 0x03, 0xee, 0x04, 0xed, 0x04, 0xfe, 0x05, 0xfd, 0x05, + 0xfd, 0x06, 0xfe, 0x06, 0xed, 0x07, 0xeb, 0x07, 0xc5, 0x08, 0xc5, 0x08, + 0x88, 0x09, 0x87, 0x09, 0x34, 0x0a, 0x34, 0x0a, 0xc6, 0x0a, 0xc5, 0x0a, + 0x43, 0x0b, 0x43, 0x0b, 0xa3, 0x0b, 0xa2, 0x0b, 0xed, 0x0b, 0xed, 0x0b, + 0x19, 0x0c, 0x1a, 0x0c, 0x31, 0x0c, 0x2f, 0x0c, 0x30, 0x0c, 0x2f, 0x0c, + 0x13, 0x0c, 0x13, 0x0c, 0xe4, 0x0b, 0xe4, 0x0b, 0x9a, 0x0b, 0x9b, 0x0b, + 0x3f, 0x0b, 0x3f, 0x0b, 0xd0, 0x0a, 0xce, 0x0a, 0x48, 0x0a, 0x4a, 0x0a, + 0xb2, 0x09, 0xb1, 0x09, 0x07, 0x09, 0x08, 0x09, 0x4a, 0x08, 0x4a, 0x08, + 0x7b, 0x07, 0x7c, 0x07, 0x9d, 0x06, 0x9e, 0x06, 0xb1, 0x05, 0xb0, 0x05, + 0xb0, 0x04, 0xb1, 0x04, 0xa5, 0x03, 0xa5, 0x03, 0x8c, 0x02, 0x8c, 0x02, + 0x69, 0x01, 0x6a, 0x01, 0x3e, 0x00, 0x3e, 0x00, 0x09, 0xff, 0x0b, 0xff, + 0xd7, 0xfd, 0xd5, 0xfd, 0x9e, 0xfc, 0xa1, 0xfc, 0x6f, 0xfb, 0x6e, 0xfb, + 0x46, 0xfa, 0x46, 0xfa, 0x29, 0xf9, 0x29, 0xf9, 0x1b, 0xf8, 0x1b, 0xf8, + 0x20, 0xf7, 0x22, 0xf7, 0x40, 0xf6, 0x3e, 0xf6, 0x72, 0xf5, 0x75, 0xf5, + 0xc4, 0xf4, 0xc3, 0xf4, 0x2a, 0xf4, 0x2b, 0xf4, 0xaf, 0xf3, 0xb3, 0xf3, + 0x54, 0xf3, 0x53, 0xf3, 0x10, 0xf3, 0x13, 0xf3, 0xed, 0xf2, 0xef, 0xf2, + 0xe2, 0xf2, 0xe3, 0xf2, 0xf4, 0xf2, 0xf9, 0xf2, 0x24, 0xf3, 0x23, 0xf3, + 0x65, 0xf3, 0x69, 0xf3, 0xc7, 0xf3, 0xc9, 0xf3, 0x38, 0xf4, 0x3a, 0xf4, + 0xc3, 0xf4, 0xc5, 0xf4, 0x5f, 0xf5, 0x62, 0xf5, 0x12, 0xf6, 0x13, 0xf6, + 0xd4, 0xf6, 0xd8, 0xf6, 0xac, 0xf7, 0xac, 0xf7, 0x92, 0xf8, 0x95, 0xf8, + 0x87, 0xf9, 0x88, 0xf9, 0x8b, 0xfa, 0x8c, 0xfa, 0x9c, 0xfb, 0x9e, 0xfb, + 0xb7, 0xfc, 0xb7, 0xfc, 0xde, 0xfd, 0xe0, 0xfd, 0x0b, 0xff, 0x0c, 0xff, + 0x42, 0x00, 0x44, 0x00, 0x7c, 0x01, 0x7d, 0x01, 0xb4, 0x02, 0xb6, 0x02, + 0xed, 0x03, 0xee, 0x03, 0x1b, 0x05, 0x1d, 0x05, 0x42, 0x06, 0x42, 0x06, + 0x58, 0x07, 0x5c, 0x07, 0x60, 0x08, 0x60, 0x08, 0x53, 0x09, 0x54, 0x09, + 0x30, 0x0a, 0x31, 0x0a, 0xf3, 0x0a, 0xf3, 0x0a, 0x9f, 0x0b, 0xa0, 0x0b, + 0x2d, 0x0c, 0x2f, 0x0c, 0xa5, 0x0c, 0xa5, 0x0c, 0xfc, 0x0c, 0xfd, 0x0c, + 0x39, 0x0d, 0x39, 0x0d, 0x5a, 0x0d, 0x5c, 0x0d, 0x5f, 0x0d, 0x5f, 0x0d, + 0x4b, 0x0d, 0x4d, 0x0d, 0x1d, 0x0d, 0x1f, 0x0d, 0xd9, 0x0c, 0xd7, 0x0c, + 0x7a, 0x0c, 0x7c, 0x0c, 0x05, 0x0c, 0x05, 0x0c, 0x7a, 0x0b, 0x7c, 0x0b, + 0xda, 0x0a, 0xdc, 0x0a, 0x29, 0x0a, 0x28, 0x0a, 0x60, 0x09, 0x61, 0x09, + 0x88, 0x08, 0x88, 0x08, 0x9b, 0x07, 0x9a, 0x07, 0x9e, 0x06, 0x9e, 0x06, + 0x8e, 0x05, 0x90, 0x05, 0x74, 0x04, 0x73, 0x04, 0x47, 0x03, 0x49, 0x03, + 0x12, 0x02, 0x12, 0x02, 0xd2, 0x00, 0xd4, 0x00, 0x8f, 0xff, 0x90, 0xff, + 0x46, 0xfe, 0x47, 0xfe, 0x04, 0xfd, 0x04, 0xfd, 0xc3, 0xfb, 0xc4, 0xfb, + 0x8c, 0xfa, 0x8e, 0xfa, 0x65, 0xf9, 0x67, 0xf9, 0x4d, 0xf8, 0x4d, 0xf8, + 0x4e, 0xf7, 0x4f, 0xf7, 0x62, 0xf6, 0x62, 0xf6, 0x93, 0xf5, 0x94, 0xf5, + 0xe1, 0xf4, 0xe2, 0xf4, 0x47, 0xf4, 0x4b, 0xf4, 0xcf, 0xf3, 0xcf, 0xf3, + 0x6c, 0xf3, 0x6f, 0xf3, 0x2a, 0xf3, 0x2b, 0xf3, 0xff, 0xf2, 0x00, 0xf3, + 0xef, 0xf2, 0xf2, 0xf2, 0xfc, 0xf2, 0xfb, 0xf2, 0x1e, 0xf3, 0x21, 0xf3, + 0x5c, 0xf3, 0x5c, 0xf3, 0xae, 0xf3, 0xb0, 0xf3, 0x14, 0xf4, 0x16, 0xf4, + 0x94, 0xf4, 0x95, 0xf4, 0x25, 0xf5, 0x26, 0xf5, 0xc8, 0xf5, 0xcb, 0xf5, + 0x82, 0xf6, 0x81, 0xf6, 0x45, 0xf7, 0x4a, 0xf7, 0x27, 0xf8, 0x25, 0xf8, + 0x0a, 0xf9, 0x0d, 0xf9, 0x04, 0xfa, 0x06, 0xfa, 0x0a, 0xfb, 0x0b, 0xfb, + 0x1a, 0xfc, 0x1c, 0xfc, 0x37, 0xfd, 0x38, 0xfd, 0x5d, 0xfe, 0x5d, 0xfe, + 0x86, 0xff, 0x8a, 0xff, 0xbc, 0x00, 0xbb, 0x00, 0xee, 0x01, 0xef, 0x01, + 0x22, 0x03, 0x23, 0x03, 0x4f, 0x04, 0x4f, 0x04, 0x76, 0x05, 0x77, 0x05, + 0x90, 0x06, 0x91, 0x06, 0x9d, 0x07, 0x9e, 0x07, 0x97, 0x08, 0x98, 0x08, + 0x7b, 0x09, 0x7d, 0x09, 0x4d, 0x0a, 0x4d, 0x0a, 0xfe, 0x0a, 0x01, 0x0b, + 0x9d, 0x0b, 0x9d, 0x0b, 0x19, 0x0c, 0x1d, 0x0c, 0x81, 0x0c, 0x81, 0x0c, + 0xc5, 0x0c, 0xca, 0x0c, 0xf1, 0x0c, 0xf1, 0x0c, 0x02, 0x0d, 0x04, 0x0d, + 0xf4, 0x0c, 0xf5, 0x0c, 0xd2, 0x0c, 0xd5, 0x0c, 0x91, 0x0c, 0x92, 0x0c, + 0x3f, 0x0c, 0x40, 0x0c, 0xd0, 0x0b, 0xd3, 0x0b, 0x4b, 0x0b, 0x4c, 0x0b, + 0xb3, 0x0a, 0xb7, 0x0a, 0x05, 0x0a, 0x07, 0x0a, 0x49, 0x09, 0x4a, 0x09, + 0x75, 0x08, 0x79, 0x08, 0x95, 0x07, 0x97, 0x07, 0xa2, 0x06, 0xa6, 0x06, + 0xa2, 0x05, 0xa4, 0x05, 0x97, 0x04, 0x98, 0x04, 0x7b, 0x03, 0x7e, 0x03, + 0x5a, 0x02, 0x5c, 0x02, 0x31, 0x01, 0x32, 0x01, 0x02, 0x00, 0x06, 0x00, + 0xd3, 0xfe, 0xd3, 0xfe, 0xa1, 0xfd, 0xa4, 0xfd, 0x78, 0xfc, 0x7b, 0xfc, + 0x54, 0xfb, 0x56, 0xfb, 0x3f, 0xfa, 0x40, 0xfa, 0x33, 0xf9, 0x36, 0xf9, + 0x3d, 0xf8, 0x3f, 0xf8, 0x57, 0xf7, 0x59, 0xf7, 0x8a, 0xf6, 0x8c, 0xf6, + 0xd1, 0xf5, 0xd4, 0xf5, 0x32, 0xf5, 0x34, 0xf5, 0xb0, 0xf4, 0xb3, 0xf4, + 0x42, 0xf4, 0x43, 0xf4, 0xf6, 0xf3, 0xf8, 0xf3, 0xbe, 0xf3, 0xc1, 0xf3, + 0xa4, 0xf3, 0xa5, 0xf3, 0xa2, 0xf3, 0xa6, 0xf3, 0xbb, 0xf3, 0xbc, 0xf3, + 0xed, 0xf3, 0xf0, 0xf3, 0x35, 0xf4, 0x36, 0xf4, 0x95, 0xf4, 0x97, 0xf4, + 0x08, 0xf5, 0x0a, 0xf5, 0x94, 0xf5, 0x95, 0xf5, 0x31, 0xf6, 0x35, 0xf6, + 0xe3, 0xf6, 0xe5, 0xf6, 0xaa, 0xf7, 0xab, 0xf7, 0x7f, 0xf8, 0x82, 0xf8, + 0x68, 0xf9, 0x68, 0xf9, 0x5b, 0xfa, 0x60, 0xfa, 0x61, 0xfb, 0x61, 0xfb, + 0x70, 0xfc, 0x74, 0xfc, 0x8b, 0xfd, 0x8d, 0xfd, 0xb1, 0xfe, 0xb4, 0xfe, + 0xdb, 0xff, 0xdc, 0xff, 0x08, 0x01, 0x0d, 0x01, 0x30, 0x02, 0x34, 0x02, + 0x5b, 0x03, 0x5c, 0x03, 0x79, 0x04, 0x7d, 0x04, 0x8d, 0x05, 0x8f, 0x05, + 0x96, 0x06, 0x97, 0x06, 0x87, 0x07, 0x8c, 0x07, 0x6f, 0x08, 0x6f, 0x08, + 0x37, 0x09, 0x39, 0x09, 0xed, 0x09, 0xef, 0x09, 0x87, 0x0a, 0x89, 0x0a, + 0x09, 0x0b, 0x0a, 0x0b, 0x6e, 0x0b, 0x6f, 0x0b, 0xb9, 0x0b, 0xba, 0x0b, + 0xe8, 0x0b, 0xec, 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0xfb, 0x0b, 0xfe, 0x0b, + 0xe2, 0x0b, 0xe5, 0x0b, 0xae, 0x0b, 0xb1, 0x0b, 0x69, 0x0b, 0x6b, 0x0b, + 0x09, 0x0b, 0x0b, 0x0b, 0x96, 0x0a, 0x99, 0x0a, 0x12, 0x0a, 0x15, 0x0a, + 0x76, 0x09, 0x78, 0x09, 0xcb, 0x08, 0xcf, 0x08, 0x0d, 0x08, 0x0e, 0x08, + 0x3f, 0x07, 0x43, 0x07, 0x62, 0x06, 0x64, 0x06, 0x76, 0x05, 0x77, 0x05, + 0x79, 0x04, 0x7c, 0x04, 0x75, 0x03, 0x76, 0x03, 0x61, 0x02, 0x66, 0x02, + 0x49, 0x01, 0x4a, 0x01, 0x29, 0x00, 0x2a, 0x00, 0x02, 0xff, 0x05, 0xff, + 0xdd, 0xfd, 0xde, 0xfd, 0xb7, 0xfc, 0xb8, 0xfc, 0x97, 0xfb, 0x9a, 0xfb, + 0x7f, 0xfa, 0x82, 0xfa, 0x75, 0xf9, 0x78, 0xf9, 0x77, 0xf8, 0x79, 0xf8, + 0x8f, 0xf7, 0x92, 0xf7, 0xb8, 0xf6, 0xba, 0xf6, 0xfa, 0xf5, 0xfe, 0xf5, + 0x55, 0xf5, 0x56, 0xf5, 0xc9, 0xf4, 0xcd, 0xf4, 0x5a, 0xf4, 0x5b, 0xf4, + 0x03, 0xf4, 0x08, 0xf4, 0xcb, 0xf3, 0xcc, 0xf3, 0xaa, 0xf3, 0xae, 0xf3, + 0xa6, 0xf3, 0xa7, 0xf3, 0xbb, 0xf3, 0xbd, 0xf3, 0xe8, 0xf3, 0xeb, 0xf3, + 0x2e, 0xf4, 0x2f, 0xf4, 0x8b, 0xf4, 0x8e, 0xf4, 0xfe, 0xf4, 0x01, 0xf5, + 0x88, 0xf5, 0x8b, 0xf5, 0x25, 0xf6, 0x29, 0xf6, 0xdb, 0xf6, 0xdc, 0xf6, + 0xa1, 0xf7, 0xa3, 0xf7, 0x78, 0xf8, 0x7b, 0xf8, 0x63, 0xf9, 0x64, 0xf9, + 0x5b, 0xfa, 0x5f, 0xfa, 0x67, 0xfb, 0x67, 0xfb, 0x79, 0xfc, 0x7b, 0xfc, + 0x9d, 0xfd, 0xa1, 0xfd, 0xc7, 0xfe, 0xc7, 0xfe, 0xf6, 0xff, 0xfa, 0xff, + 0x2b, 0x01, 0x2d, 0x01, 0x5e, 0x02, 0x60, 0x02, 0x89, 0x03, 0x8d, 0x03, + 0xad, 0x04, 0xae, 0x04, 0xc6, 0x05, 0xc8, 0x05, 0xce, 0x06, 0xd1, 0x06, + 0xc8, 0x07, 0xca, 0x07, 0xaa, 0x08, 0xad, 0x08, 0x76, 0x09, 0x79, 0x09, + 0x2c, 0x0a, 0x2d, 0x0a, 0xc6, 0x0a, 0xc8, 0x0a, 0x4a, 0x0b, 0x4d, 0x0b, + 0xb4, 0x0b, 0xb5, 0x0b, 0x01, 0x0c, 0x05, 0x0c, 0x3b, 0x0c, 0x3b, 0x0c, + 0x52, 0x0c, 0x56, 0x0c, 0x59, 0x0c, 0x58, 0x0c, 0x43, 0x0c, 0x47, 0x0c, + 0x18, 0x0c, 0x19, 0x0c, 0xd5, 0x0b, 0xd8, 0x0b, 0x7d, 0x0b, 0x7e, 0x0b, + 0x0d, 0x0b, 0x11, 0x0b, 0x8b, 0x0a, 0x8d, 0x0a, 0xf5, 0x09, 0xf8, 0x09, + 0x4a, 0x09, 0x4c, 0x09, 0x8e, 0x08, 0x91, 0x08, 0xc0, 0x07, 0xc1, 0x07, + 0xe0, 0x06, 0xe2, 0x06, 0xef, 0x05, 0xf2, 0x05, 0xee, 0x04, 0xf0, 0x04, + 0xdf, 0x03, 0xe1, 0x03, 0xc4, 0x02, 0xc6, 0x02, 0x9b, 0x01, 0x9d, 0x01, + 0x69, 0x00, 0x6d, 0x00, 0x30, 0xff, 0x31, 0xff, 0xf4, 0xfd, 0xf5, 0xfd, + 0xb6, 0xfc, 0xb8, 0xfc, 0x7e, 0xfb, 0x80, 0xfb, 0x4e, 0xfa, 0x50, 0xfa, + 0x27, 0xf9, 0x2a, 0xf9, 0x14, 0xf8, 0x16, 0xf8, 0x0f, 0xf7, 0x11, 0xf7, + 0x27, 0xf6, 0x28, 0xf6, 0x52, 0xf5, 0x53, 0xf5, 0x9a, 0xf4, 0x9c, 0xf4, + 0x00, 0xf4, 0x01, 0xf4, 0x7d, 0xf3, 0x80, 0xf3, 0x1d, 0xf3, 0x1f, 0xf3, + 0xd8, 0xf2, 0xd9, 0xf2, 0xae, 0xf2, 0xb1, 0xf2, 0xa6, 0xf2, 0xa6, 0xf2, + 0xb2, 0xf2, 0xb6, 0xf2, 0xe0, 0xf2, 0xe1, 0xf2, 0x22, 0xf3, 0x26, 0xf3, + 0x7f, 0xf3, 0x80, 0xf3, 0xf7, 0xf3, 0xf9, 0xf3, 0x7f, 0xf4, 0x80, 0xf4, + 0x21, 0xf5, 0x22, 0xf5, 0xd3, 0xf5, 0xd5, 0xf5, 0x9c, 0xf6, 0x9f, 0xf6, + 0x75, 0xf7, 0x76, 0xf7, 0x60, 0xf8, 0x61, 0xf8, 0x5b, 0xf9, 0x5b, 0xf9, + 0x65, 0xfa, 0x68, 0xfa, 0x7d, 0xfb, 0x7e, 0xfb, 0x9f, 0xfc, 0xa2, 0xfc, + 0xd1, 0xfd, 0xcf, 0xfd, 0x05, 0xff, 0x09, 0xff, 0x47, 0x00, 0x47, 0x00, + 0x86, 0x01, 0x89, 0x01, 0xce, 0x02, 0xcf, 0x02, 0x0c, 0x04, 0x0d, 0x04, + 0x43, 0x05, 0x47, 0x05, 0x75, 0x06, 0x74, 0x06, 0x91, 0x07, 0x93, 0x07, + 0xa1, 0x08, 0xa3, 0x08, 0x98, 0x09, 0x98, 0x09, 0x7d, 0x0a, 0x7f, 0x0a, + 0x46, 0x0b, 0x48, 0x0b, 0xf7, 0x0b, 0xf7, 0x0b, 0x87, 0x0c, 0x8b, 0x0c, + 0xff, 0x0c, 0xff, 0x0c, 0x57, 0x0d, 0x5b, 0x0d, 0x94, 0x0d, 0x94, 0x0d, + 0xb3, 0x0d, 0xb7, 0x0d, 0xb7, 0x0d, 0xb9, 0x0d, 0xa1, 0x0d, 0xa2, 0x0d, + 0x6f, 0x0d, 0x73, 0x0d, 0x27, 0x0d, 0x29, 0x0d, 0xc6, 0x0c, 0xc7, 0x0c, + 0x4d, 0x0c, 0x4f, 0x0c, 0xbc, 0x0b, 0xbf, 0x0b, 0x18, 0x0b, 0x19, 0x0b, + 0x5d, 0x0a, 0x5f, 0x0a, 0x90, 0x09, 0x91, 0x09, 0xad, 0x08, 0xb1, 0x08, + 0xbb, 0x07, 0xbc, 0x07, 0xb3, 0x06, 0xb7, 0x06, 0x9d, 0x05, 0x9f, 0x05, + 0x74, 0x04, 0x76, 0x04, 0x41, 0x03, 0x43, 0x03, 0xfe, 0x01, 0xff, 0x01, + 0xb3, 0x00, 0xb7, 0x00, 0x62, 0xff, 0x65, 0xff, 0x10, 0xfe, 0x13, 0xfe, + 0xc0, 0xfc, 0xc2, 0xfc, 0x75, 0xfb, 0x78, 0xfb, 0x34, 0xfa, 0x37, 0xfa, + 0x02, 0xf9, 0x04, 0xf9, 0xe2, 0xf7, 0xe5, 0xf7, 0xd8, 0xf6, 0xd9, 0xf6, + 0xe6, 0xf5, 0xe9, 0xf5, 0x14, 0xf5, 0x15, 0xf5, 0x5a, 0xf4, 0x5c, 0xf4, + 0xc1, 0xf3, 0xc4, 0xf3, 0x45, 0xf3, 0x47, 0xf3, 0xe3, 0xf2, 0xe6, 0xf2, + 0xa4, 0xf2, 0xa6, 0xf2, 0x7e, 0xf2, 0x80, 0xf2, 0x72, 0xf2, 0x74, 0xf2, + 0x84, 0xf2, 0x84, 0xf2, 0xab, 0xf2, 0xb0, 0xf2, 0xf1, 0xf2, 0xf1, 0xf2, + 0x47, 0xf3, 0x4a, 0xf3, 0xb9, 0xf3, 0xbb, 0xf3, 0x3c, 0xf4, 0x3e, 0xf4, + 0xd6, 0xf4, 0xd9, 0xf4, 0x84, 0xf5, 0x84, 0xf5, 0x43, 0xf6, 0x46, 0xf6, + 0x18, 0xf7, 0x19, 0xf7, 0xf9, 0xf7, 0xfc, 0xf7, 0xf0, 0xf8, 0xf1, 0xf8, + 0xf0, 0xf9, 0xf3, 0xf9, 0x02, 0xfb, 0x04, 0xfb, 0x1f, 0xfc, 0x20, 0xfc, + 0x47, 0xfd, 0x4a, 0xfd, 0x78, 0xfe, 0x79, 0xfe, 0xb2, 0xff, 0xb4, 0xff, + 0xef, 0x00, 0xf0, 0x00, 0x2f, 0x02, 0x33, 0x02, 0x70, 0x03, 0x70, 0x03, + 0xa7, 0x04, 0xac, 0x04, 0xda, 0x05, 0xda, 0x05, 0xfd, 0x06, 0x00, 0x07, + 0x13, 0x08, 0x14, 0x08, 0x14, 0x09, 0x16, 0x09, 0xfe, 0x09, 0x02, 0x0a, + 0xd5, 0x0a, 0xd6, 0x0a, 0x8c, 0x0b, 0x8e, 0x0b, 0x2c, 0x0c, 0x2d, 0x0c, + 0xab, 0x0c, 0xae, 0x0c, 0x0e, 0x0d, 0x0f, 0x0d, 0x54, 0x0d, 0x57, 0x0d, + 0x7b, 0x0d, 0x7e, 0x0d, 0x88, 0x0d, 0x8a, 0x0d, 0x78, 0x0d, 0x7a, 0x0d, + 0x4c, 0x0d, 0x4e, 0x0d, 0x08, 0x0d, 0x0a, 0x0d, 0xaa, 0x0c, 0xac, 0x0c, + 0x33, 0x0c, 0x36, 0x0c, 0xa7, 0x0b, 0xaa, 0x0b, 0x06, 0x0b, 0x08, 0x0b, + 0x4f, 0x0a, 0x52, 0x0a, 0x86, 0x09, 0x87, 0x09, 0xaa, 0x08, 0xab, 0x08, + 0xbe, 0x07, 0xc1, 0x07, 0xbe, 0x06, 0xbd, 0x06, 0xb1, 0x05, 0xb5, 0x05, + 0x96, 0x04, 0x98, 0x04, 0x71, 0x03, 0x73, 0x03, 0x40, 0x02, 0x41, 0x02, + 0x09, 0x01, 0x0c, 0x01, 0xd0, 0xff, 0xd1, 0xff, 0x8e, 0xfe, 0x92, 0xfe, + 0x58, 0xfd, 0x58, 0xfd, 0x1f, 0xfc, 0x22, 0xfc, 0xf5, 0xfa, 0xf5, 0xfa, + 0xd4, 0xf9, 0xd7, 0xf9, 0xc3, 0xf8, 0xc5, 0xf8, 0xc7, 0xf7, 0xca, 0xf7, + 0xdb, 0xf6, 0xdd, 0xf6, 0x0c, 0xf6, 0x0f, 0xf6, 0x50, 0xf5, 0x52, 0xf5, + 0xb2, 0xf4, 0xb6, 0xf4, 0x2e, 0xf4, 0x2f, 0xf4, 0xc4, 0xf3, 0xc6, 0xf3, + 0x7a, 0xf3, 0x7d, 0xf3, 0x46, 0xf3, 0x46, 0xf3, 0x32, 0xf3, 0x36, 0xf3, + 0x34, 0xf3, 0x35, 0xf3, 0x56, 0xf3, 0x58, 0xf3, 0x8c, 0xf3, 0x90, 0xf3, + 0xdd, 0xf3, 0xdf, 0xf3, 0x44, 0xf4, 0x47, 0xf4, 0xc1, 0xf4, 0xc3, 0xf4, + 0x56, 0xf5, 0x57, 0xf5, 0xfd, 0xf5, 0xff, 0xf5, 0xba, 0xf6, 0xba, 0xf6, + 0x88, 0xf7, 0x8c, 0xf7, 0x6a, 0xf8, 0x6c, 0xf8, 0x5c, 0xf9, 0x5e, 0xf9, + 0x5d, 0xfa, 0x5f, 0xfa, 0x6b, 0xfb, 0x6d, 0xfb, 0x87, 0xfc, 0x8a, 0xfc, + 0xae, 0xfd, 0xb0, 0xfd, 0xde, 0xfe, 0xdf, 0xfe, 0x12, 0x00, 0x14, 0x00, + 0x4a, 0x01, 0x4b, 0x01, 0x7f, 0x02, 0x80, 0x02, 0xac, 0x03, 0xae, 0x03, + 0xd7, 0x04, 0xd6, 0x04, 0xee, 0x05, 0xf1, 0x05, 0xfc, 0x06, 0xfd, 0x06, + 0xf7, 0x07, 0xf7, 0x07, 0xd9, 0x08, 0xda, 0x08, 0xa9, 0x09, 0xaa, 0x09, + 0x5b, 0x0a, 0x5c, 0x0a, 0xf7, 0x0a, 0xfa, 0x0a, 0x78, 0x0b, 0x76, 0x0b, + 0xd9, 0x0b, 0xdb, 0x0b, 0x25, 0x0c, 0x24, 0x0c, 0x4c, 0x0c, 0x4e, 0x0c, + 0x63, 0x0c, 0x64, 0x0c, 0x59, 0x0c, 0x59, 0x0c, 0x38, 0x0c, 0x38, 0x0c, + 0xfe, 0x0b, 0xfe, 0x0b, 0xad, 0x0b, 0xae, 0x0b, 0x47, 0x0b, 0x48, 0x0b, + 0xca, 0x0a, 0xcb, 0x0a, 0x3a, 0x0a, 0x3b, 0x0a, 0x97, 0x09, 0x97, 0x09, + 0xdf, 0x08, 0xe3, 0x08, 0x19, 0x08, 0x19, 0x08, 0x3f, 0x07, 0x41, 0x07, + 0x57, 0x06, 0x58, 0x06, 0x5d, 0x05, 0x5d, 0x05, 0x58, 0x04, 0x59, 0x04, + 0x45, 0x03, 0x45, 0x03, 0x28, 0x02, 0x29, 0x02, 0x02, 0x01, 0x02, 0x01, + 0xd8, 0xff, 0xd9, 0xff, 0xa7, 0xfe, 0xa7, 0xfe, 0x77, 0xfd, 0x79, 0xfd, + 0x4b, 0xfc, 0x4b, 0xfc, 0x25, 0xfb, 0x26, 0xfb, 0x07, 0xfa, 0x09, 0xfa, + 0xfc, 0xf8, 0xfb, 0xf8, 0xfd, 0xf7, 0x01, 0xf8, 0x15, 0xf7, 0x16, 0xf7, + 0x43, 0xf6, 0x44, 0xf6, 0x89, 0xf5, 0x8b, 0xf5, 0xe9, 0xf4, 0xea, 0xf4, + 0x65, 0xf4, 0x66, 0xf4, 0xfc, 0xf3, 0xfd, 0xf3, 0xaf, 0xf3, 0xb1, 0xf3, + 0x7d, 0xf3, 0x80, 0xf3, 0x67, 0xf3, 0x68, 0xf3, 0x6b, 0xf3, 0x6e, 0xf3, + 0x8b, 0xf3, 0x8b, 0xf3, 0xc1, 0xf3, 0xc3, 0xf3, 0x11, 0xf4, 0x14, 0xf4, + 0x7a, 0xf4, 0x7b, 0xf4, 0xf8, 0xf4, 0xfa, 0xf4, 0x8c, 0xf5, 0x8c, 0xf5, + 0x35, 0xf6, 0x38, 0xf6, 0xf4, 0xf6, 0xf6, 0xf6, 0xc6, 0xf7, 0xc8, 0xf7, + 0xab, 0xf8, 0xad, 0xf8, 0xa0, 0xf9, 0xa1, 0xf9, 0xa8, 0xfa, 0xaa, 0xfa, + 0xba, 0xfb, 0xbd, 0xfb, 0xdd, 0xfc, 0xe0, 0xfc, 0x0c, 0xfe, 0x0d, 0xfe, + 0x41, 0xff, 0x43, 0xff, 0x7e, 0x00, 0x7e, 0x00, 0xb5, 0x01, 0xb8, 0x01, + 0xf1, 0x02, 0xf3, 0x02, 0x20, 0x04, 0x23, 0x04, 0x49, 0x05, 0x4b, 0x05, + 0x62, 0x06, 0x64, 0x06, 0x68, 0x07, 0x6c, 0x07, 0x5f, 0x08, 0x60, 0x08, + 0x38, 0x09, 0x3b, 0x09, 0x00, 0x0a, 0x02, 0x0a, 0xac, 0x0a, 0xad, 0x0a, + 0x3d, 0x0b, 0x40, 0x0b, 0xb8, 0x0b, 0xb8, 0x0b, 0x13, 0x0c, 0x17, 0x0c, + 0x5b, 0x0c, 0x5c, 0x0c, 0x84, 0x0c, 0x86, 0x0c, 0x94, 0x0c, 0x96, 0x0c, + 0x8f, 0x0c, 0x90, 0x0c, 0x6a, 0x0c, 0x6c, 0x0c, 0x34, 0x0c, 0x35, 0x0c, + 0xe4, 0x0b, 0xe8, 0x0b, 0x7e, 0x0b, 0x80, 0x0b, 0x04, 0x0b, 0x08, 0x0b, + 0x74, 0x0a, 0x74, 0x0a, 0xd0, 0x09, 0xd3, 0x09, 0x1a, 0x09, 0x1c, 0x09, + 0x4f, 0x08, 0x52, 0x08, 0x78, 0x07, 0x79, 0x07, 0x87, 0x06, 0x8a, 0x06, + 0x8d, 0x05, 0x8e, 0x05, 0x7d, 0x04, 0x7f, 0x04, 0x61, 0x03, 0x63, 0x03, + 0x38, 0x02, 0x3a, 0x02, 0x04, 0x01, 0x05, 0x01, 0xc7, 0xff, 0xc9, 0xff, + 0x84, 0xfe, 0x87, 0xfe, 0x41, 0xfd, 0x43, 0xfd, 0xfa, 0xfb, 0xfc, 0xfb, + 0xbd, 0xfa, 0xc1, 0xfa, 0x8a, 0xf9, 0x8c, 0xf9, 0x62, 0xf8, 0x64, 0xf8, + 0x54, 0xf7, 0x56, 0xf7, 0x52, 0xf6, 0x55, 0xf6, 0x6f, 0xf5, 0x72, 0xf5, + 0xa3, 0xf4, 0xa6, 0xf4, 0xf5, 0xf3, 0xf6, 0xf3, 0x65, 0xf3, 0x68, 0xf3, + 0xf1, 0xf2, 0xf3, 0xf2, 0x9c, 0xf2, 0x9f, 0xf2, 0x66, 0xf2, 0x67, 0xf2, + 0x4b, 0xf2, 0x4e, 0xf2, 0x4d, 0xf2, 0x50, 0xf2, 0x6f, 0xf2, 0x71, 0xf2, + 0xa7, 0xf2, 0xaa, 0xf2, 0xfc, 0xf2, 0xfd, 0xf2, 0x68, 0xf3, 0x6a, 0xf3, + 0xed, 0xf3, 0xef, 0xf3, 0x87, 0xf4, 0x88, 0xf4, 0x37, 0xf5, 0x38, 0xf5, + 0xfa, 0xf5, 0xfc, 0xf5, 0xd1, 0xf6, 0xd3, 0xf6, 0xbd, 0xf7, 0xbd, 0xf7, + 0xb5, 0xf8, 0xba, 0xf8, 0xc4, 0xf9, 0xc4, 0xf9, 0xdd, 0xfa, 0xe0, 0xfa, + 0x03, 0xfc, 0x04, 0xfc, 0x39, 0xfd, 0x3a, 0xfd, 0x75, 0xfe, 0x78, 0xfe, + 0xbe, 0xff, 0xbd, 0xff, 0x0b, 0x01, 0x0f, 0x01, 0x58, 0x02, 0x5a, 0x02, + 0xa9, 0x03, 0xa9, 0x03, 0xec, 0x04, 0xef, 0x04, 0x2b, 0x06, 0x2d, 0x06, + 0x5b, 0x07, 0x5d, 0x07, 0x7b, 0x08, 0x7b, 0x08, 0x85, 0x09, 0x88, 0x09, + 0x78, 0x0a, 0x79, 0x0a, 0x52, 0x0b, 0x56, 0x0b, 0x12, 0x0c, 0x12, 0x0c, + 0xb2, 0x0c, 0xb5, 0x0c, 0x39, 0x0d, 0x3c, 0x0d, 0x9f, 0x0d, 0x9e, 0x0d, + 0xe7, 0x0d, 0xea, 0x0d, 0x14, 0x0e, 0x14, 0x0e, 0x23, 0x0e, 0x23, 0x0e, + 0x14, 0x0e, 0x17, 0x0e, 0xef, 0x0d, 0xef, 0x0d, 0xac, 0x0d, 0xb0, 0x0d, + 0x53, 0x0d, 0x54, 0x0d, 0xe2, 0x0c, 0xe3, 0x0c, 0x55, 0x0c, 0x57, 0x0c, + 0xb5, 0x0b, 0xb9, 0x0b, 0x01, 0x0b, 0xff, 0x0a, 0x34, 0x0a, 0x39, 0x0a, + 0x57, 0x09, 0x58, 0x09, 0x63, 0x08, 0x64, 0x08, 0x5e, 0x07, 0x61, 0x07, + 0x46, 0x06, 0x47, 0x06, 0x1c, 0x05, 0x20, 0x05, 0xe5, 0x03, 0xe6, 0x03, + 0x9d, 0x02, 0x9f, 0x02, 0x4d, 0x01, 0x4f, 0x01, 0xf1, 0xff, 0xf2, 0xff, + 0x96, 0xfe, 0x98, 0xfe, 0x36, 0xfd, 0x37, 0xfd, 0xdc, 0xfb, 0xde, 0xfb, + 0x8a, 0xfa, 0x8a, 0xfa, 0x41, 0xf9, 0x46, 0xf9, 0x0f, 0xf8, 0x0f, 0xf8, + 0xec, 0xf6, 0xef, 0xf6, 0xe5, 0xf5, 0xe6, 0xf5, 0xf9, 0xf4, 0xfa, 0xf4, + 0x2b, 0xf4, 0x2e, 0xf4, 0x7f, 0xf3, 0x7f, 0xf3, 0xef, 0xf2, 0xf1, 0xf2, + 0x81, 0xf2, 0x83, 0xf2, 0x2f, 0xf2, 0x30, 0xf2, 0xfd, 0xf1, 0xff, 0xf1, + 0xe6, 0xf1, 0xe9, 0xf1, 0xed, 0xf1, 0xed, 0xf1, 0x0c, 0xf2, 0x10, 0xf2, + 0x47, 0xf2, 0x49, 0xf2, 0x9c, 0xf2, 0x9f, 0xf2, 0x07, 0xf3, 0x09, 0xf3, + 0x8a, 0xf3, 0x8c, 0xf3, 0x1e, 0xf4, 0x1f, 0xf4, 0xcc, 0xf4, 0xcd, 0xf4, + 0x8a, 0xf5, 0x8c, 0xf5, 0x5d, 0xf6, 0x60, 0xf6, 0x41, 0xf7, 0x42, 0xf7, + 0x37, 0xf8, 0x39, 0xf8, 0x3d, 0xf9, 0x3e, 0xf9, 0x52, 0xfa, 0x53, 0xfa, + 0x73, 0xfb, 0x74, 0xfb, 0xa4, 0xfc, 0xa4, 0xfc, 0xd9, 0xfd, 0xdb, 0xfd, + 0x1c, 0xff, 0x1d, 0xff, 0x63, 0x00, 0x64, 0x00, 0xae, 0x01, 0xb0, 0x01, + 0xfb, 0x02, 0xfb, 0x02, 0x41, 0x04, 0x43, 0x04, 0x82, 0x05, 0x85, 0x05, + 0xbc, 0x06, 0xbc, 0x06, 0xe0, 0x07, 0xe2, 0x07, 0xf7, 0x08, 0xf9, 0x08, + 0xf8, 0x09, 0xf7, 0x09, 0xdf, 0x0a, 0xe0, 0x0a, 0xac, 0x0b, 0xae, 0x0b, + 0x5d, 0x0c, 0x5d, 0x0c, 0xf1, 0x0c, 0xf5, 0x0c, 0x64, 0x0d, 0x65, 0x0d, + 0xbb, 0x0d, 0xbe, 0x0d, 0xf3, 0x0d, 0xf4, 0x0d, 0x0d, 0x0e, 0x0e, 0x0e, + 0x07, 0x0e, 0x0c, 0x0e, 0xe9, 0x0d, 0xe8, 0x0d, 0xac, 0x0d, 0xb0, 0x0d, + 0x58, 0x0d, 0x58, 0x0d, 0xe9, 0x0c, 0xec, 0x0c, 0x62, 0x0c, 0x63, 0x0c, + 0xc5, 0x0b, 0xc7, 0x0b, 0x13, 0x0b, 0x14, 0x0b, 0x49, 0x0a, 0x4b, 0x0a, + 0x70, 0x09, 0x72, 0x09, 0x82, 0x08, 0x84, 0x08, 0x82, 0x07, 0x83, 0x07, + 0x72, 0x06, 0x76, 0x06, 0x52, 0x05, 0x54, 0x05, 0x27, 0x04, 0x2b, 0x04, + 0xf2, 0x02, 0xf2, 0x02, 0xb0, 0x01, 0xb2, 0x01, 0x6b, 0x00, 0x6d, 0x00, + 0x21, 0xff, 0x23, 0xff, 0xd8, 0xfd, 0xda, 0xfd, 0x95, 0xfc, 0x97, 0xfc, + 0x57, 0xfb, 0x59, 0xfb, 0x28, 0xfa, 0x29, 0xfa, 0x02, 0xf9, 0x04, 0xf9, + 0xf3, 0xf7, 0xf6, 0xf7, 0xf7, 0xf6, 0xf6, 0xf6, 0x12, 0xf6, 0x15, 0xf6, + 0x45, 0xf5, 0x46, 0xf5, 0x94, 0xf4, 0x95, 0xf4, 0xfd, 0xf3, 0x00, 0xf4, + 0x83, 0xf3, 0x85, 0xf3, 0x29, 0xf3, 0x2a, 0xf3, 0xe6, 0xf2, 0xeb, 0xf2, + 0xc7, 0xf2, 0xc7, 0xf2, 0xbc, 0xf2, 0xbf, 0xf2, 0xd2, 0xf2, 0xd4, 0xf2, + 0xff, 0xf2, 0xff, 0xf2, 0x46, 0xf3, 0x4b, 0xf3, 0xa6, 0xf3, 0xa5, 0xf3, + 0x1a, 0xf4, 0x20, 0xf4, 0xa9, 0xf4, 0xab, 0xf4, 0x4c, 0xf5, 0x4f, 0xf5, + 0x04, 0xf6, 0x06, 0xf6, 0xd0, 0xf6, 0xd3, 0xf6, 0xb1, 0xf7, 0xb4, 0xf7, + 0xa0, 0xf8, 0xa3, 0xf8, 0xa1, 0xf9, 0xa5, 0xf9, 0xb3, 0xfa, 0xb5, 0xfa, + 0xcf, 0xfb, 0xd3, 0xfb, 0xf9, 0xfc, 0xfc, 0xfc, 0x2f, 0xfe, 0x32, 0xfe, + 0x66, 0xff, 0x68, 0xff, 0xaa, 0x00, 0xad, 0x00, 0xe5, 0x01, 0xe9, 0x01, + 0x25, 0x03, 0x26, 0x03, 0x59, 0x04, 0x5c, 0x04, 0x81, 0x05, 0x83, 0x05, + 0xa0, 0x06, 0xa4, 0x06, 0xac, 0x07, 0xad, 0x07, 0xa3, 0x08, 0xa6, 0x08, + 0x86, 0x09, 0x88, 0x09, 0x4e, 0x0a, 0x50, 0x0a, 0xfc, 0x0a, 0xff, 0x0a, + 0x92, 0x0b, 0x93, 0x0b, 0x05, 0x0c, 0x09, 0x0c, 0x62, 0x0c, 0x63, 0x0c, + 0x9b, 0x0c, 0x9f, 0x0c, 0xbd, 0x0c, 0xbf, 0x0c, 0xc1, 0x0c, 0xc3, 0x0c, + 0xaa, 0x0c, 0xac, 0x0c, 0x7d, 0x0c, 0x7e, 0x0c, 0x35, 0x0c, 0x38, 0x0c, + 0xd9, 0x0b, 0xd9, 0x0b, 0x63, 0x0b, 0x65, 0x0b, 0xd7, 0x0a, 0xd9, 0x0a, + 0x3b, 0x0a, 0x3b, 0x0a, 0x85, 0x09, 0x88, 0x09, 0xc2, 0x08, 0xc1, 0x08, + 0xe8, 0x07, 0xed, 0x07, 0x00, 0x07, 0xff, 0x06, 0x06, 0x06, 0x0a, 0x06, + 0xfe, 0x04, 0xfd, 0x04, 0xe9, 0x03, 0xed, 0x03, 0xc7, 0x02, 0xc9, 0x02, + 0x9d, 0x01, 0x9e, 0x01, 0x6b, 0x00, 0x6e, 0x00, 0x35, 0xff, 0x37, 0xff, + 0xfc, 0xfd, 0xfe, 0xfd, 0xc4, 0xfc, 0xc7, 0xfc, 0x93, 0xfb, 0x98, 0xfb, + 0x6c, 0xfa, 0x6d, 0xfa, 0x50, 0xf9, 0x54, 0xf9, 0x46, 0xf8, 0x47, 0xf8, + 0x4e, 0xf7, 0x52, 0xf7, 0x6c, 0xf6, 0x6f, 0xf6, 0xa5, 0xf5, 0xa5, 0xf5, + 0xf4, 0xf4, 0xf9, 0xf4, 0x63, 0xf4, 0x63, 0xf4, 0xeb, 0xf3, 0xee, 0xf3, + 0x8e, 0xf3, 0x91, 0xf3, 0x51, 0xf3, 0x53, 0xf3, 0x2c, 0xf3, 0x2f, 0xf3, + 0x25, 0xf3, 0x28, 0xf3, 0x39, 0xf3, 0x3a, 0xf3, 0x65, 0xf3, 0x6a, 0xf3, + 0xaf, 0xf3, 0xb0, 0xf3, 0x08, 0xf4, 0x0d, 0xf4, 0x82, 0xf4, 0x84, 0xf4, + 0x0e, 0xf5, 0x11, 0xf5, 0xb1, 0xf5, 0xb4, 0xf5, 0x6b, 0xf6, 0x6c, 0xf6, + 0x3a, 0xf7, 0x3b, 0xf7, 0x19, 0xf8, 0x1c, 0xf8, 0x0f, 0xf9, 0x10, 0xf9, + 0x13, 0xfa, 0x15, 0xfa, 0x26, 0xfb, 0x27, 0xfb, 0x4b, 0xfc, 0x4d, 0xfc, + 0x7a, 0xfd, 0x7c, 0xfd, 0xb4, 0xfe, 0xb6, 0xfe, 0xf4, 0xff, 0xf8, 0xff, + 0x37, 0x01, 0x38, 0x01, 0x79, 0x02, 0x7d, 0x02, 0xb5, 0x03, 0xb7, 0x03, + 0xe7, 0x04, 0xea, 0x04, 0x0e, 0x06, 0x10, 0x06, 0x22, 0x07, 0x25, 0x07, + 0x25, 0x08, 0x26, 0x08, 0x0f, 0x09, 0x12, 0x09, 0xe3, 0x09, 0xe6, 0x09, + 0x9c, 0x0a, 0x9e, 0x0a, 0x3e, 0x0b, 0x41, 0x0b, 0xc2, 0x0b, 0xc4, 0x0b, + 0x2e, 0x0c, 0x31, 0x0c, 0x7c, 0x0c, 0x7f, 0x0c, 0xb1, 0x0c, 0xb4, 0x0c, + 0xcb, 0x0c, 0xcd, 0x0c, 0xc9, 0x0c, 0xcc, 0x0c, 0xb2, 0x0c, 0xb4, 0x0c, + 0x7f, 0x0c, 0x82, 0x0c, 0x37, 0x0c, 0x3a, 0x0c, 0xd9, 0x0b, 0xdb, 0x0b, + 0x63, 0x0b, 0x66, 0x0b, 0xda, 0x0a, 0xdd, 0x0a, 0x3b, 0x0a, 0x3d, 0x0a, + 0x88, 0x09, 0x8d, 0x09, 0xc3, 0x08, 0xc4, 0x08, 0xea, 0x07, 0xef, 0x07, + 0x00, 0x07, 0x02, 0x07, 0x04, 0x06, 0x06, 0x06, 0xf7, 0x04, 0xf9, 0x04, + 0xdb, 0x03, 0xdd, 0x03, 0xb4, 0x02, 0xb5, 0x02, 0x7b, 0x01, 0x80, 0x01, + 0x3e, 0x00, 0x3f, 0x00, 0xf8, 0xfe, 0xfa, 0xfe, 0xac, 0xfd, 0xad, 0xfd, + 0x61, 0xfc, 0x65, 0xfc, 0x1b, 0xfb, 0x1d, 0xfb, 0xdf, 0xf9, 0xe2, 0xf9, + 0xab, 0xf8, 0xae, 0xf8, 0x8d, 0xf7, 0x8e, 0xf7, 0x81, 0xf6, 0x86, 0xf6, + 0x8e, 0xf5, 0x90, 0xf5, 0xb5, 0xf4, 0xb9, 0xf4, 0xf7, 0xf3, 0xf9, 0xf3, + 0x5a, 0xf3, 0x5c, 0xf3, 0xd5, 0xf2, 0xd9, 0xf2, 0x75, 0xf2, 0x77, 0xf2, + 0x30, 0xf2, 0x33, 0xf2, 0x0b, 0xf2, 0x0c, 0xf2, 0x03, 0xf2, 0x08, 0xf2, + 0x18, 0xf2, 0x1a, 0xf2, 0x4b, 0xf2, 0x4e, 0xf2, 0x95, 0xf2, 0x99, 0xf2, + 0xff, 0xf2, 0x00, 0xf3, 0x79, 0xf3, 0x7f, 0xf3, 0x12, 0xf4, 0x12, 0xf4, + 0xbc, 0xf4, 0xc0, 0xf4, 0x7c, 0xf5, 0x7d, 0xf5, 0x52, 0xf6, 0x57, 0xf6, + 0x3a, 0xf7, 0x3b, 0xf7, 0x35, 0xf8, 0x38, 0xf8, 0x40, 0xf9, 0x43, 0xf9, + 0x5b, 0xfa, 0x5d, 0xfa, 0x83, 0xfb, 0x87, 0xfb, 0xbb, 0xfc, 0xbd, 0xfc, + 0xfa, 0xfd, 0xfe, 0xfd, 0x48, 0xff, 0x48, 0xff, 0x9a, 0x00, 0x9d, 0x00, + 0xf0, 0x01, 0xf3, 0x01, 0x47, 0x03, 0x49, 0x03, 0x96, 0x04, 0x9a, 0x04, + 0xdf, 0x05, 0xe0, 0x05, 0x19, 0x07, 0x1d, 0x07, 0x46, 0x08, 0x47, 0x08, + 0x5d, 0x09, 0x5f, 0x09, 0x5c, 0x0a, 0x5f, 0x0a, 0x43, 0x0b, 0x46, 0x0b, + 0x0f, 0x0c, 0x11, 0x0c, 0xbe, 0x0c, 0xbf, 0x0c, 0x4e, 0x0d, 0x51, 0x0d, + 0xc0, 0x0d, 0xc3, 0x0d, 0x15, 0x0e, 0x18, 0x0e, 0x4b, 0x0e, 0x4d, 0x0e, + 0x65, 0x0e, 0x68, 0x0e, 0x5f, 0x0e, 0x60, 0x0e, 0x3f, 0x0e, 0x42, 0x0e, + 0x05, 0x0e, 0x08, 0x0e, 0xb0, 0x0d, 0xb1, 0x0d, 0x46, 0x0d, 0x49, 0x0d, + 0xc0, 0x0c, 0xc1, 0x0c, 0x26, 0x0c, 0x28, 0x0c, 0x73, 0x0b, 0x76, 0x0b, + 0xae, 0x0a, 0xb0, 0x0a, 0xd2, 0x09, 0xd6, 0x09, 0xe4, 0x08, 0xe7, 0x08, + 0xe2, 0x07, 0xe3, 0x07, 0xcf, 0x06, 0xd2, 0x06, 0xa7, 0x05, 0xab, 0x05, + 0x72, 0x04, 0x76, 0x04, 0x2d, 0x03, 0x31, 0x03, 0xdc, 0x01, 0xdd, 0x01, + 0x7f, 0x00, 0x84, 0x00, 0x1d, 0xff, 0x20, 0xff, 0xb9, 0xfd, 0xbc, 0xfd, + 0x57, 0xfc, 0x5a, 0xfc, 0xfa, 0xfa, 0xfd, 0xfa, 0xa9, 0xf9, 0xac, 0xf9, + 0x65, 0xf8, 0x68, 0xf8, 0x36, 0xf7, 0x39, 0xf7, 0x1c, 0xf6, 0x1e, 0xf6, + 0x1d, 0xf5, 0x20, 0xf5, 0x3c, 0xf4, 0x3f, 0xf4, 0x7d, 0xf3, 0x7f, 0xf3, + 0xda, 0xf2, 0xdf, 0xf2, 0x5d, 0xf2, 0x5c, 0xf2, 0xf9, 0xf1, 0xfe, 0xf1, + 0xb9, 0xf1, 0xbb, 0xf1, 0x96, 0xf1, 0x98, 0xf1, 0x8f, 0xf1, 0x94, 0xf1, + 0xa8, 0xf1, 0xa8, 0xf1, 0xd8, 0xf1, 0xdd, 0xf1, 0x25, 0xf2, 0x27, 0xf2, + 0x87, 0xf2, 0x8c, 0xf2, 0x06, 0xf3, 0x08, 0xf3, 0x95, 0xf3, 0x99, 0xf3, + 0x3d, 0xf4, 0x40, 0xf4, 0xf7, 0xf4, 0xfa, 0xf4, 0xc5, 0xf5, 0xc9, 0xf5, + 0xa9, 0xf6, 0xab, 0xf6, 0x9a, 0xf7, 0x9d, 0xf7, 0xa0, 0xf8, 0xa2, 0xf8, + 0xb1, 0xf9, 0xb5, 0xf9, 0xd3, 0xfa, 0xd5, 0xfa, 0x02, 0xfc, 0x05, 0xfc, + 0x3a, 0xfd, 0x3d, 0xfd, 0x7c, 0xfe, 0x7f, 0xfe, 0xc8, 0xff, 0xcb, 0xff, + 0x16, 0x01, 0x17, 0x01, 0x67, 0x02, 0x6b, 0x02, 0xb6, 0x03, 0xb9, 0x03, + 0xff, 0x04, 0x02, 0x05, 0x40, 0x06, 0x42, 0x06, 0x6f, 0x07, 0x74, 0x07, + 0x94, 0x08, 0x95, 0x08, 0x9f, 0x09, 0xa5, 0x09, 0x98, 0x0a, 0x98, 0x0a, + 0x73, 0x0b, 0x77, 0x0b, 0x35, 0x0c, 0x37, 0x0c, 0xd6, 0x0c, 0xd9, 0x0c, + 0x5e, 0x0d, 0x61, 0x0d, 0xc3, 0x0d, 0xc5, 0x0d, 0x0a, 0x0e, 0x0e, 0x0e, + 0x34, 0x0e, 0x35, 0x0e, 0x3d, 0x0e, 0x40, 0x0e, 0x2b, 0x0e, 0x2e, 0x0e, + 0xfb, 0x0d, 0xfd, 0x0d, 0xb2, 0x0d, 0xb5, 0x0d, 0x4d, 0x0d, 0x4e, 0x0d, + 0xd3, 0x0c, 0xd6, 0x0c, 0x3e, 0x0c, 0x40, 0x0c, 0x95, 0x0b, 0x96, 0x0b, + 0xd4, 0x0a, 0xd8, 0x0a, 0x01, 0x0a, 0x03, 0x0a, 0x1c, 0x09, 0x1c, 0x09, + 0x22, 0x08, 0x26, 0x08, 0x17, 0x07, 0x19, 0x07, 0x00, 0x06, 0x03, 0x06, + 0xd4, 0x04, 0xd6, 0x04, 0xa2, 0x03, 0xa4, 0x03, 0x64, 0x02, 0x66, 0x02, + 0x1e, 0x01, 0x20, 0x01, 0xd4, 0xff, 0xd7, 0xff, 0x8a, 0xfe, 0x8c, 0xfe, + 0x3f, 0xfd, 0x42, 0xfd, 0xff, 0xfb, 0x00, 0xfc, 0xc2, 0xfa, 0xc5, 0xfa, + 0x97, 0xf9, 0x99, 0xf9, 0x7b, 0xf8, 0x7e, 0xf8, 0x72, 0xf7, 0x75, 0xf7, + 0x83, 0xf6, 0x84, 0xf6, 0xa4, 0xf5, 0xa9, 0xf5, 0xe8, 0xf4, 0xe9, 0xf4, + 0x40, 0xf4, 0x45, 0xf4, 0xba, 0xf3, 0xbc, 0xf3, 0x4c, 0xf3, 0x50, 0xf3, + 0xfd, 0xf2, 0x00, 0xf3, 0xca, 0xf2, 0xcd, 0xf2, 0xb3, 0xf2, 0xb7, 0xf2, + 0xb9, 0xf2, 0xbc, 0xf2, 0xd9, 0xf2, 0xdc, 0xf2, 0x15, 0xf3, 0x18, 0xf3, + 0x65, 0xf3, 0x68, 0xf3, 0xd1, 0xf3, 0xd6, 0xf3, 0x53, 0xf4, 0x56, 0xf4, + 0xed, 0xf4, 0xee, 0xf4, 0x98, 0xf5, 0x9b, 0xf5, 0x5a, 0xf6, 0x5c, 0xf6, + 0x30, 0xf7, 0x34, 0xf7, 0x16, 0xf8, 0x19, 0xf8, 0x0f, 0xf9, 0x11, 0xf9, + 0x18, 0xfa, 0x1c, 0xfa, 0x2c, 0xfb, 0x2f, 0xfb, 0x50, 0xfc, 0x54, 0xfc, + 0x7d, 0xfd, 0x80, 0xfd, 0xb3, 0xfe, 0xb6, 0xfe, 0xed, 0xff, 0xf2, 0xff, + 0x2c, 0x01, 0x2f, 0x01, 0x68, 0x02, 0x6c, 0x02, 0xa3, 0x03, 0xa5, 0x03, + 0xd2, 0x04, 0xd6, 0x04, 0xf5, 0x05, 0xf8, 0x05, 0x0c, 0x07, 0x0d, 0x07, + 0x0c, 0x08, 0x11, 0x08, 0xfa, 0x08, 0xfc, 0x08, 0xcf, 0x09, 0xd4, 0x09, + 0x8d, 0x0a, 0x8e, 0x0a, 0x2e, 0x0b, 0x34, 0x0b, 0xb7, 0x0b, 0xb7, 0x0b, + 0x21, 0x0c, 0x24, 0x0c, 0x6f, 0x0c, 0x72, 0x0c, 0xa1, 0x0c, 0xa4, 0x0c, + 0xb6, 0x0c, 0xba, 0x0c, 0xb0, 0x0c, 0xb2, 0x0c, 0x92, 0x0c, 0x94, 0x0c, + 0x57, 0x0c, 0x5a, 0x0c, 0x09, 0x0c, 0x0c, 0x0c, 0x9f, 0x0b, 0xa2, 0x0b, + 0x21, 0x0b, 0x23, 0x0b, 0x8e, 0x0a, 0x91, 0x0a, 0xe4, 0x09, 0xe6, 0x09, + 0x2b, 0x09, 0x2d, 0x09, 0x5b, 0x08, 0x60, 0x08, 0x7d, 0x07, 0x7e, 0x07, + 0x8d, 0x06, 0x91, 0x06, 0x8c, 0x05, 0x90, 0x05, 0x82, 0x04, 0x83, 0x04, + 0x65, 0x03, 0x6a, 0x03, 0x42, 0x02, 0x42, 0x02, 0x13, 0x01, 0x18, 0x01, + 0xe1, 0xff, 0xe3, 0xff, 0xab, 0xfe, 0xae, 0xfe, 0x77, 0xfd, 0x79, 0xfd, + 0x43, 0xfc, 0x47, 0xfc, 0x1a, 0xfb, 0x1a, 0xfb, 0xf8, 0xf9, 0xfc, 0xf9, + 0xe7, 0xf8, 0xe9, 0xf8, 0xe6, 0xf7, 0xea, 0xf7, 0xfe, 0xf6, 0xfe, 0xf6, + 0x27, 0xf6, 0x2a, 0xf6, 0x6d, 0xf5, 0x6f, 0xf5, 0xce, 0xf4, 0xd3, 0xf4, + 0x48, 0xf4, 0x49, 0xf4, 0xe0, 0xf3, 0xe4, 0xf3, 0x93, 0xf3, 0x96, 0xf3, + 0x61, 0xf3, 0x63, 0xf3, 0x4b, 0xf3, 0x4e, 0xf3, 0x4e, 0xf3, 0x4f, 0xf3, + 0x6c, 0xf3, 0x6f, 0xf3, 0xa3, 0xf3, 0xa6, 0xf3, 0xf4, 0xf3, 0xf5, 0xf3, + 0x5a, 0xf4, 0x5d, 0xf4, 0xdc, 0xf4, 0xdf, 0xf4, 0x70, 0xf5, 0x73, 0xf5, + 0x1b, 0xf6, 0x1e, 0xf6, 0xdd, 0xf6, 0xdf, 0xf6, 0xaf, 0xf7, 0xb2, 0xf7, + 0x98, 0xf8, 0x9c, 0xf8, 0x90, 0xf9, 0x92, 0xf9, 0x99, 0xfa, 0x9d, 0xfa, + 0xb1, 0xfb, 0xb2, 0xfb, 0xd6, 0xfc, 0xda, 0xfc, 0x07, 0xfe, 0x0a, 0xfe, + 0x42, 0xff, 0x44, 0xff, 0x80, 0x00, 0x83, 0x00, 0xc0, 0x01, 0xc3, 0x01, + 0xff, 0x02, 0x00, 0x03, 0x34, 0x04, 0x37, 0x04, 0x60, 0x05, 0x62, 0x05, + 0x7e, 0x06, 0x81, 0x06, 0x8c, 0x07, 0x8c, 0x07, 0x82, 0x08, 0x83, 0x08, + 0x61, 0x09, 0x65, 0x09, 0x2b, 0x0a, 0x2d, 0x0a, 0xd9, 0x0a, 0xdb, 0x0a, + 0x6e, 0x0b, 0x71, 0x0b, 0xe7, 0x0b, 0xe7, 0x0b, 0x46, 0x0c, 0x49, 0x0c, + 0x87, 0x0c, 0x89, 0x0c, 0xb0, 0x0c, 0xb3, 0x0c, 0xbf, 0x0c, 0xc1, 0x0c, + 0xb4, 0x0c, 0xb7, 0x0c, 0x93, 0x0c, 0x95, 0x0c, 0x55, 0x0c, 0x58, 0x0c, + 0x05, 0x0c, 0x07, 0x0c, 0x9d, 0x0b, 0xa0, 0x0b, 0x20, 0x0b, 0x23, 0x0b, + 0x8e, 0x0a, 0x92, 0x0a, 0xe9, 0x09, 0xeb, 0x09, 0x2e, 0x09, 0x31, 0x09, + 0x60, 0x08, 0x62, 0x08, 0x84, 0x07, 0x86, 0x07, 0x91, 0x06, 0x94, 0x06, + 0x91, 0x05, 0x96, 0x05, 0x81, 0x04, 0x81, 0x04, 0x61, 0x03, 0x65, 0x03, + 0x36, 0x02, 0x37, 0x02, 0xfd, 0x00, 0x01, 0x01, 0xbf, 0xff, 0xc1, 0xff, + 0x77, 0xfe, 0x7a, 0xfe, 0x31, 0xfd, 0x34, 0xfd, 0xe7, 0xfb, 0xea, 0xfb, + 0xaa, 0xfa, 0xab, 0xfa, 0x71, 0xf9, 0x71, 0xf9, 0x46, 0xf8, 0x49, 0xf8, + 0x2e, 0xf7, 0x2f, 0xf7, 0x2c, 0xf6, 0x2e, 0xf6, 0x40, 0xf5, 0x42, 0xf5, + 0x72, 0xf4, 0x74, 0xf4, 0xc0, 0xf3, 0xc1, 0xf3, 0x28, 0xf3, 0x2b, 0xf3, + 0xb2, 0xf2, 0xb3, 0xf2, 0x58, 0xf2, 0x5b, 0xf2, 0x21, 0xf2, 0x20, 0xf2, + 0x04, 0xf2, 0x06, 0xf2, 0x04, 0xf2, 0x05, 0xf2, 0x23, 0xf2, 0x25, 0xf2, + 0x5a, 0xf2, 0x5d, 0xf2, 0xb1, 0xf2, 0xb2, 0xf2, 0x1e, 0xf3, 0x1e, 0xf3, + 0xa1, 0xf3, 0xa3, 0xf3, 0x3f, 0xf4, 0x3f, 0xf4, 0xee, 0xf4, 0xf3, 0xf4, + 0xb7, 0xf5, 0xb8, 0xf5, 0x92, 0xf6, 0x93, 0xf6, 0x7e, 0xf7, 0x80, 0xf7, + 0x80, 0xf8, 0x7f, 0xf8, 0x8d, 0xf9, 0x92, 0xf9, 0xae, 0xfa, 0xaf, 0xfa, + 0xdb, 0xfb, 0xde, 0xfb, 0x14, 0xfd, 0x17, 0xfd, 0x5a, 0xfe, 0x5a, 0xfe, + 0xa5, 0xff, 0xaa, 0xff, 0xfd, 0x00, 0xfc, 0x00, 0x52, 0x02, 0x55, 0x02, + 0xa7, 0x03, 0xa8, 0x03, 0xf6, 0x04, 0xf9, 0x04, 0x3a, 0x06, 0x3c, 0x06, + 0x71, 0x07, 0x72, 0x07, 0x97, 0x08, 0x99, 0x08, 0xa9, 0x09, 0xaa, 0x09, + 0xa5, 0x0a, 0xa5, 0x0a, 0x83, 0x0b, 0x87, 0x0b, 0x49, 0x0c, 0x4b, 0x0c, + 0xf1, 0x0c, 0xf3, 0x0c, 0x7a, 0x0d, 0x7d, 0x0d, 0xe6, 0x0d, 0xe7, 0x0d, + 0x32, 0x0e, 0x34, 0x0e, 0x61, 0x0e, 0x63, 0x0e, 0x72, 0x0e, 0x73, 0x0e, + 0x64, 0x0e, 0x69, 0x0e, 0x42, 0x0e, 0x42, 0x0e, 0xfd, 0x0d, 0x01, 0x0e, + 0xa8, 0x0d, 0xa9, 0x0d, 0x35, 0x0d, 0x37, 0x0d, 0xaa, 0x0c, 0xad, 0x0c, + 0x0c, 0x0c, 0x0d, 0x0c, 0x54, 0x0b, 0x56, 0x0b, 0x8a, 0x0a, 0x8b, 0x0a, + 0xaa, 0x09, 0xab, 0x09, 0xb7, 0x08, 0xb9, 0x08, 0xb1, 0x07, 0xb3, 0x07, + 0x9a, 0x06, 0x9b, 0x06, 0x72, 0x05, 0x73, 0x05, 0x38, 0x04, 0x3a, 0x04, + 0xf3, 0x02, 0xf4, 0x02, 0x9d, 0x01, 0xa0, 0x01, 0x42, 0x00, 0x43, 0x00, + 0xe0, 0xfe, 0xe2, 0xfe, 0x79, 0xfd, 0x7c, 0xfd, 0x1c, 0xfc, 0x1d, 0xfc, + 0xbc, 0xfa, 0xc1, 0xfa, 0x70, 0xf9, 0x70, 0xf9, 0x2d, 0xf8, 0x30, 0xf8, + 0xfe, 0xf6, 0x00, 0xf7, 0xe8, 0xf5, 0xe9, 0xf5, 0xe9, 0xf4, 0xec, 0xf4, + 0x0c, 0xf4, 0x0f, 0xf4, 0x4c, 0xf3, 0x4c, 0xf3, 0xae, 0xf2, 0xb2, 0xf2, + 0x31, 0xf2, 0x30, 0xf2, 0xcf, 0xf1, 0xd3, 0xf1, 0x93, 0xf1, 0x94, 0xf1, + 0x72, 0xf1, 0x74, 0xf1, 0x72, 0xf1, 0x74, 0xf1, 0x8a, 0xf1, 0x8b, 0xf1, + 0xc1, 0xf1, 0xc4, 0xf1, 0x0e, 0xf2, 0x10, 0xf2, 0x75, 0xf2, 0x78, 0xf2, + 0xf8, 0xf2, 0xf9, 0xf2, 0x89, 0xf3, 0x8b, 0xf3, 0x35, 0xf4, 0x38, 0xf4, + 0xf3, 0xf4, 0xf5, 0xf4, 0xc6, 0xf5, 0xc9, 0xf5, 0xad, 0xf6, 0xaf, 0xf6, + 0xa2, 0xf7, 0xa2, 0xf7, 0xac, 0xf8, 0xaf, 0xf8, 0xc1, 0xf9, 0xc4, 0xf9, + 0xe7, 0xfa, 0xe9, 0xfa, 0x1a, 0xfc, 0x1c, 0xfc, 0x53, 0xfd, 0x56, 0xfd, + 0x9b, 0xfe, 0x9e, 0xfe, 0xe6, 0xff, 0xe8, 0xff, 0x39, 0x01, 0x3b, 0x01, + 0x8b, 0x02, 0x8d, 0x02, 0xd8, 0x03, 0xdb, 0x03, 0x26, 0x05, 0x28, 0x05, + 0x64, 0x06, 0x66, 0x06, 0x97, 0x07, 0x99, 0x07, 0xb9, 0x08, 0xbb, 0x08, + 0xc5, 0x09, 0xc7, 0x09, 0xbc, 0x0a, 0xbe, 0x0a, 0x97, 0x0b, 0x99, 0x0b, + 0x58, 0x0c, 0x5a, 0x0c, 0xfa, 0x0c, 0xfa, 0x0c, 0x7e, 0x0d, 0x81, 0x0d, + 0xe4, 0x0d, 0xe3, 0x0d, 0x27, 0x0e, 0x28, 0x0e, 0x4f, 0x0e, 0x50, 0x0e, + 0x55, 0x0e, 0x55, 0x0e, 0x41, 0x0e, 0x42, 0x0e, 0x0e, 0x0e, 0x0f, 0x0e, + 0xc4, 0x0d, 0xc7, 0x0d, 0x61, 0x0d, 0x61, 0x0d, 0xe2, 0x0c, 0xe4, 0x0c, + 0x4d, 0x0c, 0x4e, 0x0c, 0xa2, 0x0b, 0xa3, 0x0b, 0xe1, 0x0a, 0xe3, 0x0a, + 0x0d, 0x0a, 0x0d, 0x0a, 0x23, 0x09, 0x24, 0x09, 0x29, 0x08, 0x2b, 0x08, + 0x1e, 0x07, 0x1d, 0x07, 0xfe, 0x05, 0x01, 0x06, 0xd6, 0x04, 0xd6, 0x04, + 0x9f, 0x03, 0x9e, 0x03, 0x5d, 0x02, 0x5e, 0x02, 0x13, 0x01, 0x15, 0x01, + 0xca, 0xff, 0xca, 0xff, 0x79, 0xfe, 0x7c, 0xfe, 0x30, 0xfd, 0x2f, 0xfd, + 0xec, 0xfb, 0xec, 0xfb, 0xaf, 0xfa, 0xb1, 0xfa, 0x84, 0xf9, 0x85, 0xf9, + 0x65, 0xf8, 0x68, 0xf8, 0x5d, 0xf7, 0x5f, 0xf7, 0x6b, 0xf6, 0x6c, 0xf6, + 0x8f, 0xf5, 0x91, 0xf5, 0xd0, 0xf4, 0xd1, 0xf4, 0x28, 0xf4, 0x29, 0xf4, + 0xa0, 0xf3, 0xa2, 0xf3, 0x34, 0xf3, 0x36, 0xf3, 0xe6, 0xf2, 0xe5, 0xf2, + 0xb3, 0xf2, 0xb6, 0xf2, 0x9e, 0xf2, 0x9d, 0xf2, 0xa3, 0xf2, 0xa5, 0xf2, + 0xc6, 0xf2, 0xc8, 0xf2, 0xff, 0xf2, 0x00, 0xf3, 0x54, 0xf3, 0x57, 0xf3, + 0xc0, 0xf3, 0xc0, 0xf3, 0x42, 0xf4, 0x43, 0xf4, 0xdc, 0xf4, 0xdd, 0xf4, + 0x89, 0xf5, 0x8a, 0xf5, 0x50, 0xf6, 0x50, 0xf6, 0x22, 0xf7, 0x26, 0xf7, + 0x11, 0xf8, 0x11, 0xf8, 0x07, 0xf9, 0x0a, 0xf9, 0x13, 0xfa, 0x13, 0xfa, + 0x2e, 0xfb, 0x2f, 0xfb, 0x4e, 0xfc, 0x50, 0xfc, 0x84, 0xfd, 0x84, 0xfd, + 0xba, 0xfe, 0xbb, 0xfe, 0xf9, 0xff, 0xfa, 0xff, 0x3b, 0x01, 0x3c, 0x01, + 0x7b, 0x02, 0x7c, 0x02, 0xb4, 0x03, 0xb5, 0x03, 0xe9, 0x04, 0xea, 0x04, + 0x0a, 0x06, 0x0c, 0x06, 0x25, 0x07, 0x24, 0x07, 0x25, 0x08, 0x29, 0x08, + 0x15, 0x09, 0x15, 0x09, 0xee, 0x09, 0xef, 0x09, 0xaa, 0x0a, 0xac, 0x0a, + 0x50, 0x0b, 0x50, 0x0b, 0xd6, 0x0b, 0xd6, 0x0b, 0x41, 0x0c, 0x45, 0x0c, + 0x92, 0x0c, 0x91, 0x0c, 0xc3, 0x0c, 0xc6, 0x0c, 0xda, 0x0c, 0xda, 0x0c, + 0xd3, 0x0c, 0xd4, 0x0c, 0xb3, 0x0c, 0xb6, 0x0c, 0x79, 0x0c, 0x78, 0x0c, + 0x26, 0x0c, 0x28, 0x0c, 0xbe, 0x0b, 0xbf, 0x0b, 0x3f, 0x0b, 0x3e, 0x0b, + 0xa8, 0x0a, 0xaa, 0x0a, 0xfe, 0x09, 0x00, 0x0a, 0x40, 0x09, 0x40, 0x09, + 0x6f, 0x08, 0x71, 0x08, 0x8d, 0x07, 0x8d, 0x07, 0x9a, 0x06, 0x9b, 0x06, + 0x95, 0x05, 0x96, 0x05, 0x85, 0x04, 0x85, 0x04, 0x66, 0x03, 0x67, 0x03, + 0x3d, 0x02, 0x3e, 0x02, 0x0c, 0x01, 0x0d, 0x01, 0xd6, 0xff, 0xd5, 0xff, + 0x9a, 0xfe, 0x9c, 0xfe, 0x62, 0xfd, 0x62, 0xfd, 0x29, 0xfc, 0x2a, 0xfc, + 0xfd, 0xfa, 0xfd, 0xfa, 0xd8, 0xf9, 0xd8, 0xf9, 0xc6, 0xf8, 0xc7, 0xf8, + 0xc6, 0xf7, 0xc7, 0xf7, 0xda, 0xf6, 0xdb, 0xf6, 0x08, 0xf6, 0x08, 0xf6, + 0x4b, 0xf5, 0x4d, 0xf5, 0xac, 0xf4, 0xad, 0xf4, 0x26, 0xf4, 0x28, 0xf4, + 0xbd, 0xf3, 0xbe, 0xf3, 0x71, 0xf3, 0x72, 0xf3, 0x40, 0xf3, 0x41, 0xf3, + 0x29, 0xf3, 0x2b, 0xf3, 0x30, 0xf3, 0x30, 0xf3, 0x4e, 0xf3, 0x51, 0xf3, + 0x87, 0xf3, 0x87, 0xf3, 0xda, 0xf3, 0xdc, 0xf3, 0x45, 0xf4, 0x46, 0xf4, + 0xc8, 0xf4, 0xc8, 0xf4, 0x5e, 0xf5, 0x61, 0xf5, 0x0e, 0xf6, 0x0e, 0xf6, + 0xd0, 0xf6, 0xd2, 0xf6, 0xab, 0xf7, 0xac, 0xf7, 0x93, 0xf8, 0x95, 0xf8, + 0x92, 0xf9, 0x94, 0xf9, 0x9f, 0xfa, 0xa0, 0xfa, 0xbc, 0xfb, 0xbd, 0xfb, + 0xe7, 0xfc, 0xe8, 0xfc, 0x1b, 0xfe, 0x1d, 0xfe, 0x5c, 0xff, 0x5c, 0xff, + 0x9e, 0x00, 0x9f, 0x00, 0xe4, 0x01, 0xe5, 0x01, 0x26, 0x03, 0x27, 0x03, + 0x61, 0x04, 0x63, 0x04, 0x91, 0x05, 0x92, 0x05, 0xb2, 0x06, 0xb1, 0x06, + 0xc2, 0x07, 0xc3, 0x07, 0xbb, 0x08, 0xbc, 0x08, 0x9d, 0x09, 0x9e, 0x09, + 0x66, 0x0a, 0x67, 0x0a, 0x13, 0x0b, 0x13, 0x0b, 0xa7, 0x0b, 0xa9, 0x0b, + 0x1e, 0x0c, 0x1e, 0x0c, 0x7d, 0x0c, 0x7f, 0x0c, 0xbe, 0x0c, 0xc0, 0x0c, + 0xe3, 0x0c, 0xe5, 0x0c, 0xf2, 0x0c, 0xf3, 0x0c, 0xe2, 0x0c, 0xe5, 0x0c, + 0xbd, 0x0c, 0xbd, 0x0c, 0x7f, 0x0c, 0x7f, 0x0c, 0x2a, 0x0c, 0x2b, 0x0c, + 0xbf, 0x0b, 0xbf, 0x0b, 0x3b, 0x0b, 0x3e, 0x0b, 0xa5, 0x0a, 0xa6, 0x0a, + 0xf9, 0x09, 0xfa, 0x09, 0x3b, 0x09, 0x3b, 0x09, 0x69, 0x08, 0x6b, 0x08, + 0x84, 0x07, 0x84, 0x07, 0x8d, 0x06, 0x90, 0x06, 0x85, 0x05, 0x86, 0x05, + 0x6e, 0x04, 0x6f, 0x04, 0x48, 0x03, 0x49, 0x03, 0x15, 0x02, 0x16, 0x02, + 0xd7, 0x00, 0xd8, 0x00, 0x93, 0xff, 0x92, 0xff, 0x44, 0xfe, 0x45, 0xfe, + 0xf6, 0xfc, 0xf7, 0xfc, 0xa8, 0xfb, 0xaa, 0xfb, 0x64, 0xfa, 0x64, 0xfa, + 0x28, 0xf9, 0x2a, 0xf9, 0xf7, 0xf7, 0xf8, 0xf7, 0xe1, 0xf6, 0xe3, 0xf6, + 0xdc, 0xf5, 0xdc, 0xf5, 0xf0, 0xf4, 0xf1, 0xf4, 0x24, 0xf4, 0x24, 0xf4, + 0x6f, 0xf3, 0x6f, 0xf3, 0xde, 0xf2, 0xde, 0xf2, 0x65, 0xf2, 0x66, 0xf2, + 0x13, 0xf2, 0x13, 0xf2, 0xdb, 0xf1, 0xd9, 0xf1, 0xc0, 0xf1, 0xc3, 0xf1, + 0xc9, 0xf1, 0xc9, 0xf1, 0xea, 0xf1, 0xec, 0xf1, 0x2b, 0xf2, 0x2b, 0xf2, + 0x83, 0xf2, 0x83, 0xf2, 0xf6, 0xf2, 0xf8, 0xf2, 0x82, 0xf3, 0x82, 0xf3, + 0x25, 0xf4, 0x25, 0xf4, 0xdd, 0xf4, 0xdd, 0xf4, 0xaa, 0xf5, 0xab, 0xf5, + 0x8e, 0xf6, 0x8e, 0xf6, 0x81, 0xf7, 0x82, 0xf7, 0x88, 0xf8, 0x88, 0xf8, + 0xa3, 0xf9, 0xa4, 0xf9, 0xc8, 0xfa, 0xc8, 0xfa, 0x00, 0xfc, 0x00, 0xfc, + 0x41, 0xfd, 0x44, 0xfd, 0x91, 0xfe, 0x8f, 0xfe, 0xea, 0xff, 0xeb, 0xff, + 0x43, 0x01, 0x44, 0x01, 0xa3, 0x02, 0xa5, 0x02, 0xff, 0x03, 0xfe, 0x03, + 0x52, 0x05, 0x54, 0x05, 0x9c, 0x06, 0x9c, 0x06, 0xd4, 0x07, 0xd7, 0x07, + 0xfe, 0x08, 0x00, 0x09, 0x11, 0x0a, 0x13, 0x0a, 0x09, 0x0b, 0x0a, 0x0b, + 0xeb, 0x0b, 0xed, 0x0b, 0xac, 0x0c, 0xac, 0x0c, 0x4f, 0x0d, 0x51, 0x0d, + 0xd3, 0x0d, 0xd6, 0x0d, 0x3a, 0x0e, 0x3a, 0x0e, 0x84, 0x0e, 0x85, 0x0e, + 0xaa, 0x0e, 0xab, 0x0e, 0xb8, 0x0e, 0xb8, 0x0e, 0xa4, 0x0e, 0xa6, 0x0e, + 0x78, 0x0e, 0x77, 0x0e, 0x30, 0x0e, 0x31, 0x0e, 0xce, 0x0d, 0xcf, 0x0d, + 0x59, 0x0d, 0x57, 0x0d, 0xc1, 0x0c, 0xc4, 0x0c, 0x1d, 0x0c, 0x1c, 0x0c, + 0x5d, 0x0b, 0x5e, 0x0b, 0x89, 0x0a, 0x89, 0x0a, 0xa3, 0x09, 0xa4, 0x09, + 0xa5, 0x08, 0xa5, 0x08, 0x99, 0x07, 0x99, 0x07, 0x77, 0x06, 0x76, 0x06, + 0x44, 0x05, 0x46, 0x05, 0x05, 0x04, 0x04, 0x04, 0xaf, 0x02, 0xb1, 0x02, + 0x57, 0x01, 0x57, 0x01, 0xee, 0xff, 0xf0, 0xff, 0x84, 0xfe, 0x83, 0xfe, + 0x19, 0xfd, 0x18, 0xfd, 0xae, 0xfb, 0xae, 0xfb, 0x4f, 0xfa, 0x4e, 0xfa, + 0xf9, 0xf8, 0xf9, 0xf8, 0xb3, 0xf7, 0xb2, 0xf7, 0x84, 0xf6, 0x84, 0xf6, + 0x69, 0xf5, 0x6b, 0xf5, 0x6f, 0xf4, 0x6e, 0xf4, 0x93, 0xf3, 0x93, 0xf3, + 0xd5, 0xf2, 0xd6, 0xf2, 0x3c, 0xf2, 0x3d, 0xf2, 0xc4, 0xf1, 0xc4, 0xf1, + 0x69, 0xf1, 0x69, 0xf1, 0x34, 0xf1, 0x36, 0xf1, 0x1a, 0xf1, 0x18, 0xf1, + 0x1f, 0xf1, 0x21, 0xf1, 0x40, 0xf1, 0x41, 0xf1, 0x7f, 0xf1, 0x80, 0xf1, + 0xd6, 0xf1, 0xd7, 0xf1, 0x45, 0xf2, 0x44, 0xf2, 0xcf, 0xf2, 0xd3, 0xf2, + 0x6c, 0xf3, 0x6c, 0xf3, 0x20, 0xf4, 0x23, 0xf4, 0xeb, 0xf4, 0xeb, 0xf4, + 0xc6, 0xf5, 0xc7, 0xf5, 0xb9, 0xf6, 0xba, 0xf6, 0xb9, 0xf7, 0xb8, 0xf7, + 0xca, 0xf8, 0xce, 0xf8, 0xef, 0xf9, 0xee, 0xf9, 0x1b, 0xfb, 0x1b, 0xfb, + 0x5a, 0xfc, 0x5b, 0xfc, 0x9e, 0xfd, 0x9f, 0xfd, 0xf2, 0xfe, 0xf3, 0xfe, + 0x44, 0x00, 0x46, 0x00, 0xa2, 0x01, 0xa1, 0x01, 0xfb, 0x02, 0xfe, 0x02, + 0x53, 0x04, 0x52, 0x04, 0xa4, 0x05, 0xa7, 0x05, 0xe8, 0x06, 0xe7, 0x06, + 0x1e, 0x08, 0x20, 0x08, 0x42, 0x09, 0x42, 0x09, 0x4f, 0x0a, 0x4f, 0x0a, + 0x43, 0x0b, 0x45, 0x0b, 0x1b, 0x0c, 0x1c, 0x0c, 0xd9, 0x0c, 0xd9, 0x0c, + 0x73, 0x0d, 0x75, 0x0d, 0xf1, 0x0d, 0xf1, 0x0d, 0x4d, 0x0e, 0x4e, 0x0e, + 0x8a, 0x0e, 0x8a, 0x0e, 0xaa, 0x0e, 0xaa, 0x0e, 0xa7, 0x0e, 0xa9, 0x0e, + 0x8c, 0x0e, 0x8b, 0x0e, 0x4f, 0x0e, 0x52, 0x0e, 0xfc, 0x0d, 0xfc, 0x0d, + 0x8f, 0x0d, 0x91, 0x0d, 0x04, 0x0d, 0x04, 0x0d, 0x68, 0x0c, 0x69, 0x0c, + 0xb0, 0x0b, 0xb0, 0x0b, 0xe4, 0x0a, 0xe5, 0x0a, 0x05, 0x0a, 0x06, 0x0a, + 0x11, 0x09, 0x11, 0x09, 0x0a, 0x08, 0x0d, 0x08, 0xf3, 0x06, 0xf3, 0x06, + 0xc8, 0x05, 0xca, 0x05, 0x95, 0x04, 0x96, 0x04, 0x52, 0x03, 0x53, 0x03, + 0x07, 0x02, 0x06, 0x02, 0xb4, 0x00, 0xb6, 0x00, 0x5f, 0xff, 0x5d, 0xff, + 0x07, 0xfe, 0x0b, 0xfe, 0xb7, 0xfc, 0xb7, 0xfc, 0x6c, 0xfb, 0x6d, 0xfb, + 0x30, 0xfa, 0x31, 0xfa, 0xfe, 0xf8, 0xfe, 0xf8, 0xe3, 0xf7, 0xe3, 0xf7, + 0xda, 0xf6, 0xda, 0xf6, 0xe9, 0xf5, 0xea, 0xf5, 0x14, 0xf5, 0x13, 0xf5, + 0x56, 0xf4, 0x56, 0xf4, 0xb8, 0xf3, 0xb7, 0xf3, 0x35, 0xf3, 0x38, 0xf3, + 0xd1, 0xf2, 0xd0, 0xf2, 0x89, 0xf2, 0x8c, 0xf2, 0x61, 0xf2, 0x61, 0xf2, + 0x54, 0xf2, 0x55, 0xf2, 0x66, 0xf2, 0x65, 0xf2, 0x8e, 0xf2, 0x8f, 0xf2, + 0xd4, 0xf2, 0xd5, 0xf2, 0x32, 0xf3, 0x32, 0xf3, 0xa8, 0xf3, 0xa7, 0xf3, + 0x35, 0xf4, 0x36, 0xf4, 0xd8, 0xf4, 0xd9, 0xf4, 0x94, 0xf5, 0x92, 0xf5, + 0x60, 0xf6, 0x62, 0xf6, 0x43, 0xf7, 0x43, 0xf7, 0x37, 0xf8, 0x36, 0xf8, + 0x39, 0xf9, 0x3b, 0xf9, 0x51, 0xfa, 0x4f, 0xfa, 0x6f, 0xfb, 0x71, 0xfb, + 0xa1, 0xfc, 0xa1, 0xfc, 0xd7, 0xfd, 0xd7, 0xfd, 0x18, 0xff, 0x1a, 0xff, + 0x5f, 0x00, 0x5f, 0x00, 0xa5, 0x01, 0xa6, 0x01, 0xeb, 0x02, 0xeb, 0x02, + 0x27, 0x04, 0x27, 0x04, 0x5a, 0x05, 0x5c, 0x05, 0x82, 0x06, 0x82, 0x06, + 0x99, 0x07, 0x99, 0x07, 0x99, 0x08, 0x9b, 0x08, 0x88, 0x09, 0x88, 0x09, + 0x5a, 0x0a, 0x5b, 0x0a, 0x13, 0x0b, 0x16, 0x0b, 0xb3, 0x0b, 0xb1, 0x0b, + 0x31, 0x0c, 0x35, 0x0c, 0x9a, 0x0c, 0x98, 0x0c, 0xdc, 0x0c, 0xdf, 0x0c, + 0x07, 0x0d, 0x07, 0x0d, 0x14, 0x0d, 0x15, 0x0d, 0x05, 0x0d, 0x05, 0x0d, + 0xdd, 0x0c, 0xde, 0x0c, 0x9a, 0x0c, 0x9a, 0x0c, 0x3e, 0x0c, 0x40, 0x0c, + 0xcd, 0x0b, 0xcb, 0x0b, 0x3f, 0x0b, 0x43, 0x0b, 0xa5, 0x0a, 0xa4, 0x0a, + 0xea, 0x09, 0xee, 0x09, 0x25, 0x09, 0x24, 0x09, 0x4b, 0x08, 0x4d, 0x08, + 0x5a, 0x07, 0x5d, 0x07, 0x62, 0x06, 0x5f, 0x06, 0x51, 0x05, 0x55, 0x05, + 0x36, 0x04, 0x37, 0x04, 0x12, 0x03, 0x12, 0x03, 0xde, 0x01, 0xdf, 0x01, + 0xa8, 0x00, 0xa8, 0x00, 0x69, 0xff, 0x6a, 0xff, 0x2d, 0xfe, 0x2c, 0xfe, + 0xef, 0xfc, 0xf1, 0xfc, 0xb8, 0xfb, 0xb8, 0xfb, 0x8b, 0xfa, 0x8c, 0xfa, + 0x6c, 0xf9, 0x6e, 0xf9, 0x5c, 0xf8, 0x5d, 0xf8, 0x62, 0xf7, 0x62, 0xf7, + 0x7d, 0xf6, 0x7e, 0xf6, 0xb0, 0xf5, 0xb0, 0xf5, 0xfe, 0xf4, 0x00, 0xf5, + 0x67, 0xf4, 0x68, 0xf4, 0xec, 0xf3, 0xec, 0xf3, 0x8c, 0xf3, 0x8e, 0xf3, + 0x49, 0xf3, 0x48, 0xf3, 0x21, 0xf3, 0x23, 0xf3, 0x16, 0xf3, 0x17, 0xf3, + 0x25, 0xf3, 0x24, 0xf3, 0x4e, 0xf3, 0x50, 0xf3, 0x90, 0xf3, 0x93, 0xf3, + 0xee, 0xf3, 0xed, 0xf3, 0x61, 0xf4, 0x62, 0xf4, 0xee, 0xf4, 0xee, 0xf4, + 0x90, 0xf5, 0x8f, 0xf5, 0x49, 0xf6, 0x49, 0xf6, 0x15, 0xf7, 0x15, 0xf7, + 0xf6, 0xf7, 0xf6, 0xf7, 0xea, 0xf8, 0xeb, 0xf8, 0xef, 0xf9, 0xf0, 0xf9, + 0x08, 0xfb, 0x05, 0xfb, 0x28, 0xfc, 0x2c, 0xfc, 0x5d, 0xfd, 0x5b, 0xfd, + 0x96, 0xfe, 0x97, 0xfe, 0xd9, 0xff, 0xda, 0xff, 0x20, 0x01, 0x1e, 0x01, + 0x63, 0x02, 0x67, 0x02, 0xa7, 0x03, 0xa7, 0x03, 0xdd, 0x04, 0xdc, 0x04, + 0x09, 0x06, 0x0b, 0x06, 0x25, 0x07, 0x24, 0x07, 0x2b, 0x08, 0x2b, 0x08, + 0x1d, 0x09, 0x1f, 0x09, 0xf9, 0x09, 0xf6, 0x09, 0xb3, 0x0a, 0xb6, 0x0a, + 0x5a, 0x0b, 0x59, 0x0b, 0xe1, 0x0b, 0xe1, 0x0b, 0x4d, 0x0c, 0x50, 0x0c, + 0x9f, 0x0c, 0x9e, 0x0c, 0xd6, 0x0c, 0xd6, 0x0c, 0xf0, 0x0c, 0xf0, 0x0c, + 0xf0, 0x0c, 0xf0, 0x0c, 0xd7, 0x0c, 0xd9, 0x0c, 0xa5, 0x0c, 0xa6, 0x0c, + 0x5f, 0x0c, 0x5f, 0x0c, 0xfd, 0x0b, 0xfe, 0x0b, 0x8a, 0x0b, 0x8a, 0x0b, + 0xfc, 0x0a, 0xfd, 0x0a, 0x5d, 0x0a, 0x5d, 0x0a, 0xa5, 0x09, 0xa8, 0x09, + 0xde, 0x08, 0xde, 0x08, 0x04, 0x08, 0x05, 0x08, 0x15, 0x07, 0x15, 0x07, + 0x16, 0x06, 0x17, 0x06, 0x08, 0x05, 0x05, 0x05, 0xe6, 0x03, 0xea, 0x03, + 0xbe, 0x02, 0xbb, 0x02, 0x81, 0x01, 0x84, 0x01, 0x41, 0x00, 0x41, 0x00, + 0xf6, 0xfe, 0xf8, 0xfe, 0xa9, 0xfd, 0xaa, 0xfd, 0x5b, 0xfc, 0x5c, 0xfc, + 0x13, 0xfb, 0x13, 0xfb, 0xd1, 0xf9, 0xd2, 0xf9, 0x9c, 0xf8, 0x9c, 0xf8, + 0x79, 0xf7, 0x7a, 0xf7, 0x69, 0xf6, 0x6a, 0xf6, 0x72, 0xf5, 0x73, 0xf5, + 0x95, 0xf4, 0x95, 0xf4, 0xd2, 0xf3, 0xd3, 0xf3, 0x2f, 0xf3, 0x2f, 0xf3, + 0xa9, 0xf2, 0xaa, 0xf2, 0x43, 0xf2, 0x43, 0xf2, 0xfe, 0xf1, 0xfd, 0xf1, + 0xd1, 0xf1, 0xd3, 0xf1, 0xcc, 0xf1, 0xcb, 0xf1, 0xdc, 0xf1, 0xde, 0xf1, + 0x12, 0xf2, 0x11, 0xf2, 0x5a, 0xf2, 0x5d, 0xf2, 0xc4, 0xf2, 0xc2, 0xf2, + 0x40, 0xf3, 0x42, 0xf3, 0xd7, 0xf3, 0xd8, 0xf3, 0x87, 0xf4, 0x86, 0xf4, + 0x48, 0xf5, 0x4a, 0xf5, 0x23, 0xf6, 0x22, 0xf6, 0x0a, 0xf7, 0x0b, 0xf7, + 0x0d, 0xf8, 0x0d, 0xf8, 0x1e, 0xf9, 0x1d, 0xf9, 0x3c, 0xfa, 0x3e, 0xfa, + 0x6f, 0xfb, 0x6e, 0xfb, 0xaa, 0xfc, 0xab, 0xfc, 0xf4, 0xfd, 0xf3, 0xfd, + 0x45, 0xff, 0x45, 0xff, 0xa1, 0x00, 0xa2, 0x00, 0xfe, 0x01, 0xff, 0x01, + 0x5b, 0x03, 0x5b, 0x03, 0xb2, 0x04, 0xb2, 0x04, 0xff, 0x05, 0x00, 0x06, + 0x40, 0x07, 0x3f, 0x07, 0x6f, 0x08, 0x70, 0x08, 0x8c, 0x09, 0x8c, 0x09, + 0x8e, 0x0a, 0x90, 0x0a, 0x7b, 0x0b, 0x79, 0x0b, 0x49, 0x0c, 0x4b, 0x0c, + 0xfb, 0x0c, 0xfa, 0x0c, 0x8e, 0x0d, 0x8f, 0x0d, 0x02, 0x0e, 0x02, 0x0e, + 0x58, 0x0e, 0x58, 0x0e, 0x8e, 0x0e, 0x8e, 0x0e, 0xa7, 0x0e, 0xa8, 0x0e, + 0xa3, 0x0e, 0xa3, 0x0e, 0x85, 0x0e, 0x85, 0x0e, 0x47, 0x0e, 0x46, 0x0e, + 0xf2, 0x0d, 0xf3, 0x0d, 0x84, 0x0d, 0x83, 0x0d, 0xff, 0x0c, 0x02, 0x0d, + 0x64, 0x0c, 0x61, 0x0c, 0xaf, 0x0b, 0xb1, 0x0b, 0xe7, 0x0a, 0xe8, 0x0a, + 0x07, 0x0a, 0x07, 0x0a, 0x19, 0x09, 0x18, 0x09, 0x12, 0x08, 0x12, 0x08, + 0xfb, 0x06, 0xfb, 0x06, 0xd2, 0x05, 0xd4, 0x05, 0x99, 0x04, 0x98, 0x04, + 0x53, 0x03, 0x54, 0x03, 0xfb, 0x01, 0xfd, 0x01, 0x9f, 0x00, 0x9e, 0x00, + 0x34, 0xff, 0x36, 0xff, 0xce, 0xfd, 0xcc, 0xfd, 0x64, 0xfc, 0x64, 0xfc, + 0xff, 0xfa, 0x00, 0xfb, 0xa6, 0xf9, 0xa6, 0xf9, 0x58, 0xf8, 0x58, 0xf8, + 0x1f, 0xf7, 0x1f, 0xf7, 0xfb, 0xf5, 0xfb, 0xf5, 0xf1, 0xf4, 0xf1, 0xf4, + 0x02, 0xf4, 0x02, 0xf4, 0x34, 0xf3, 0x35, 0xf3, 0x85, 0xf2, 0x86, 0xf2, + 0xf9, 0xf1, 0xfa, 0xf1, 0x8f, 0xf1, 0x8f, 0xf1, 0x44, 0xf1, 0x45, 0xf1, + 0x1a, 0xf1, 0x1b, 0xf1, 0x10, 0xf1, 0x10, 0xf1, 0x24, 0xf1, 0x24, 0xf1, + 0x52, 0xf1, 0x55, 0xf1, 0xa0, 0xf1, 0xa0, 0xf1, 0x03, 0xf2, 0x02, 0xf2, + 0x80, 0xf2, 0x80, 0xf2, 0x13, 0xf3, 0x13, 0xf3, 0xbe, 0xf3, 0xbf, 0xf3, + 0x7c, 0xf4, 0x7c, 0xf4, 0x50, 0xf5, 0x4f, 0xf5, 0x36, 0xf6, 0x37, 0xf6, + 0x30, 0xf7, 0x30, 0xf7, 0x3b, 0xf8, 0x3c, 0xf8, 0x55, 0xf9, 0x55, 0xf9, + 0x7f, 0xfa, 0x80, 0xfa, 0xb5, 0xfb, 0xb4, 0xfb, 0xf3, 0xfc, 0xf5, 0xfc, + 0x40, 0xfe, 0x3e, 0xfe, 0x90, 0xff, 0x92, 0xff, 0xe9, 0x00, 0xe9, 0x00, + 0x43, 0x02, 0x43, 0x02, 0x9c, 0x03, 0x9e, 0x03, 0xec, 0x04, 0xeb, 0x04, + 0x37, 0x06, 0x39, 0x06, 0x71, 0x07, 0x71, 0x07, 0x9d, 0x08, 0x9c, 0x08, + 0xb6, 0x09, 0xb7, 0x09, 0xb1, 0x0a, 0xb2, 0x0a, 0x9c, 0x0b, 0x9c, 0x0b, + 0x62, 0x0c, 0x64, 0x0c, 0x14, 0x0d, 0x12, 0x0d, 0x9f, 0x0d, 0xa1, 0x0d, + 0x0e, 0x0e, 0x0e, 0x0e, 0x5d, 0x0e, 0x5e, 0x0e, 0x8b, 0x0e, 0x8b, 0x0e, + 0x9b, 0x0e, 0x9d, 0x0e, 0x8f, 0x0e, 0x8f, 0x0e, 0x64, 0x0e, 0x65, 0x0e, + 0x1f, 0x0e, 0x20, 0x0e, 0xc0, 0x0d, 0xbe, 0x0d, 0x48, 0x0d, 0x47, 0x0d, + 0xb4, 0x0c, 0xb6, 0x0c, 0x0e, 0x0c, 0x0c, 0x0c, 0x4d, 0x0b, 0x50, 0x0b, + 0x7a, 0x0a, 0x7a, 0x0a, 0x92, 0x09, 0x92, 0x09, 0x99, 0x08, 0x97, 0x08, + 0x8b, 0x07, 0x8b, 0x07, 0x6e, 0x06, 0x6d, 0x06, 0x40, 0x05, 0x41, 0x05, + 0x09, 0x04, 0x08, 0x04, 0xc4, 0x02, 0xc6, 0x02, 0x78, 0x01, 0x78, 0x01, + 0x27, 0x00, 0x26, 0x00, 0xd2, 0xfe, 0xd3, 0xfe, 0x83, 0xfd, 0x84, 0xfd, + 0x35, 0xfc, 0x35, 0xfc, 0xf4, 0xfa, 0xf6, 0xfa, 0xc1, 0xf9, 0xc0, 0xf9, + 0x99, 0xf8, 0x9b, 0xf8, 0x8c, 0xf7, 0x8b, 0xf7, 0x8f, 0xf6, 0x8f, 0xf6, + 0xae, 0xf5, 0xad, 0xf5, 0xe5, 0xf4, 0xe6, 0xf4, 0x37, 0xf4, 0x36, 0xf4, + 0xa4, 0xf3, 0xa5, 0xf3, 0x30, 0xf3, 0x32, 0xf3, 0xdb, 0xf2, 0xd9, 0xf2, + 0x9e, 0xf2, 0x9f, 0xf2, 0x82, 0xf2, 0x83, 0xf2, 0x80, 0xf2, 0x80, 0xf2, + 0x9b, 0xf2, 0x9c, 0xf2, 0xcf, 0xf2, 0xcf, 0xf2, 0x1f, 0xf3, 0x1f, 0xf3, + 0x85, 0xf3, 0x86, 0xf3, 0x04, 0xf4, 0x03, 0xf4, 0x9a, 0xf4, 0x9c, 0xf4, + 0x43, 0xf5, 0x43, 0xf5, 0x05, 0xf6, 0x05, 0xf6, 0xd6, 0xf6, 0xd8, 0xf6, + 0xbf, 0xf7, 0xbc, 0xf7, 0xb4, 0xf8, 0xb7, 0xf8, 0xbe, 0xf9, 0xbe, 0xf9, + 0xd3, 0xfa, 0xd4, 0xfa, 0xf5, 0xfb, 0xf5, 0xfb, 0x23, 0xfd, 0x23, 0xfd, + 0x59, 0xfe, 0x58, 0xfe, 0x95, 0xff, 0x95, 0xff, 0xd7, 0x00, 0xd6, 0x00, + 0x15, 0x02, 0x15, 0x02, 0x54, 0x03, 0x53, 0x03, 0x86, 0x04, 0x85, 0x04, + 0xb0, 0x05, 0xb2, 0x05, 0xca, 0x06, 0xc8, 0x06, 0xd4, 0x07, 0xd6, 0x07, + 0xca, 0x08, 0xc9, 0x08, 0xaa, 0x09, 0xa8, 0x09, 0x6d, 0x0a, 0x6f, 0x0a, + 0x1a, 0x0b, 0x19, 0x0b, 0xac, 0x0b, 0xab, 0x0b, 0x1f, 0x0c, 0x1f, 0x0c, + 0x79, 0x0c, 0x77, 0x0c, 0xb3, 0x0c, 0xb5, 0x0c, 0xd4, 0x0c, 0xd3, 0x0c, + 0xd6, 0x0c, 0xd5, 0x0c, 0xbf, 0x0c, 0xc0, 0x0c, 0x8c, 0x0c, 0x8b, 0x0c, + 0x43, 0x0c, 0x42, 0x0c, 0xde, 0x0b, 0xdf, 0x0b, 0x65, 0x0b, 0x64, 0x0b, + 0xd2, 0x0a, 0xd2, 0x0a, 0x2f, 0x0a, 0x2f, 0x0a, 0x74, 0x09, 0x72, 0x09, + 0xa6, 0x08, 0xa7, 0x08, 0xc9, 0x07, 0xc7, 0x07, 0xd7, 0x06, 0xd9, 0x06, + 0xd9, 0x05, 0xd7, 0x05, 0xc9, 0x04, 0xca, 0x04, 0xad, 0x03, 0xad, 0x03, + 0x89, 0x02, 0x88, 0x02, 0x58, 0x01, 0x58, 0x01, 0x25, 0x00, 0x24, 0x00, + 0xeb, 0xfe, 0xec, 0xfe, 0xb6, 0xfd, 0xb5, 0xfd, 0x82, 0xfc, 0x83, 0xfc, + 0x56, 0xfb, 0x55, 0xfb, 0x35, 0xfa, 0x36, 0xfa, 0x23, 0xf9, 0x22, 0xf9, + 0x23, 0xf8, 0x23, 0xf8, 0x38, 0xf7, 0x39, 0xf7, 0x64, 0xf6, 0x62, 0xf6, + 0xa7, 0xf5, 0xa7, 0xf5, 0x04, 0xf5, 0x04, 0xf5, 0x7d, 0xf4, 0x7d, 0xf4, + 0x0e, 0xf4, 0x0e, 0xf4, 0xbe, 0xf3, 0xbd, 0xf3, 0x86, 0xf3, 0x87, 0xf3, + 0x69, 0xf3, 0x6a, 0xf3, 0x6a, 0xf3, 0x67, 0xf3, 0x83, 0xf3, 0x84, 0xf3, + 0xb7, 0xf3, 0xb5, 0xf3, 0x02, 0xf4, 0x03, 0xf4, 0x68, 0xf4, 0x69, 0xf4, + 0xe5, 0xf4, 0xe2, 0xf4, 0x75, 0xf5, 0x77, 0xf5, 0x1f, 0xf6, 0x1f, 0xf6, + 0xdd, 0xf6, 0xdb, 0xf6, 0xad, 0xf7, 0xb0, 0xf7, 0x94, 0xf8, 0x93, 0xf8, + 0x8a, 0xf9, 0x88, 0xf9, 0x92, 0xfa, 0x95, 0xfa, 0xa9, 0xfb, 0xa6, 0xfb, + 0xce, 0xfc, 0xcf, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0x33, 0xff, 0x31, 0xff, + 0x71, 0x00, 0x73, 0x00, 0xaf, 0x01, 0xad, 0x01, 0xeb, 0x02, 0xed, 0x02, + 0x21, 0x04, 0x1f, 0x04, 0x4e, 0x05, 0x4f, 0x05, 0x6d, 0x06, 0x6e, 0x06, + 0x7b, 0x07, 0x79, 0x07, 0x73, 0x08, 0x75, 0x08, 0x57, 0x09, 0x56, 0x09, + 0x20, 0x0a, 0x20, 0x0a, 0xd0, 0x0a, 0xd1, 0x0a, 0x66, 0x0b, 0x64, 0x0b, + 0xde, 0x0b, 0xde, 0x0b, 0x3b, 0x0c, 0x3d, 0x0c, 0x7f, 0x0c, 0x7d, 0x0c, + 0xa6, 0x0c, 0xa8, 0x0c, 0xb6, 0x0c, 0xb5, 0x0c, 0xaa, 0x0c, 0xab, 0x0c, + 0x88, 0x0c, 0x87, 0x0c, 0x4b, 0x0c, 0x4c, 0x0c, 0xf9, 0x0b, 0xf8, 0x0b, + 0x91, 0x0b, 0x92, 0x0b, 0x0f, 0x0b, 0x10, 0x0b, 0x80, 0x0a, 0x7f, 0x0a, + 0xd2, 0x09, 0xd3, 0x09, 0x19, 0x09, 0x19, 0x09, 0x49, 0x08, 0x48, 0x08, + 0x63, 0x07, 0x66, 0x07, 0x77, 0x06, 0x75, 0x06, 0x6d, 0x05, 0x6f, 0x05, + 0x5f, 0x04, 0x5f, 0x04, 0x39, 0x03, 0x39, 0x03, 0x0d, 0x02, 0x0e, 0x02, + 0xd6, 0x00, 0xd5, 0x00, 0x92, 0xff, 0x92, 0xff, 0x4e, 0xfe, 0x4f, 0xfe, + 0x04, 0xfd, 0x04, 0xfd, 0xc1, 0xfb, 0xc1, 0xfb, 0x7f, 0xfa, 0x80, 0xfa, + 0x4a, 0xf9, 0x4a, 0xf9, 0x20, 0xf8, 0x23, 0xf8, 0x0b, 0xf7, 0x0b, 0xf7, + 0x0b, 0xf6, 0x0a, 0xf6, 0x23, 0xf5, 0x24, 0xf5, 0x56, 0xf4, 0x55, 0xf4, + 0xa8, 0xf3, 0xa7, 0xf3, 0x12, 0xf3, 0x13, 0xf3, 0x9d, 0xf2, 0x9c, 0xf2, + 0x49, 0xf2, 0x4a, 0xf2, 0x0e, 0xf2, 0x0f, 0xf2, 0xfa, 0xf1, 0xf9, 0xf1, + 0xfb, 0xf1, 0xfc, 0xf1, 0x1b, 0xf2, 0x1b, 0xf2, 0x59, 0xf2, 0x5a, 0xf2, + 0xaf, 0xf2, 0xaf, 0xf2, 0x20, 0xf3, 0x21, 0xf3, 0xab, 0xf3, 0xaa, 0xf3, + 0x4a, 0xf4, 0x49, 0xf4, 0x01, 0xf5, 0x02, 0xf5, 0xcd, 0xf5, 0xcd, 0xf5, + 0xad, 0xf6, 0xac, 0xf6, 0x9f, 0xf7, 0xa0, 0xf7, 0xa7, 0xf8, 0xa7, 0xf8, + 0xbb, 0xf9, 0xbb, 0xf9, 0xe3, 0xfa, 0xe3, 0xfa, 0x15, 0xfc, 0x16, 0xfc, + 0x59, 0xfd, 0x58, 0xfd, 0xa2, 0xfe, 0xa3, 0xfe, 0xf8, 0xff, 0xf8, 0xff, + 0x51, 0x01, 0x52, 0x01, 0xad, 0x02, 0xad, 0x02, 0x05, 0x04, 0x04, 0x04, + 0x53, 0x05, 0x55, 0x05, 0x9a, 0x06, 0x99, 0x06, 0xce, 0x07, 0xcf, 0x07, + 0xf3, 0x08, 0xf2, 0x08, 0x01, 0x0a, 0x01, 0x0a, 0xf8, 0x0a, 0xf6, 0x0a, + 0xd3, 0x0b, 0xd4, 0x0b, 0x92, 0x0c, 0x90, 0x0c, 0x34, 0x0d, 0x34, 0x0d, + 0xb6, 0x0d, 0xb5, 0x0d, 0x1a, 0x0e, 0x1b, 0x0e, 0x5e, 0x0e, 0x5e, 0x0e, + 0x85, 0x0e, 0x86, 0x0e, 0x91, 0x0e, 0x90, 0x0e, 0x7e, 0x0e, 0x7f, 0x0e, + 0x51, 0x0e, 0x51, 0x0e, 0x09, 0x0e, 0x09, 0x0e, 0xa8, 0x0d, 0xaa, 0x0d, + 0x31, 0x0d, 0x30, 0x0d, 0x9f, 0x0c, 0xa1, 0x0c, 0xf9, 0x0b, 0xfa, 0x0b, + 0x3c, 0x0b, 0x3c, 0x0b, 0x6b, 0x0a, 0x6d, 0x0a, 0x84, 0x09, 0x84, 0x09, + 0x8b, 0x08, 0x8b, 0x08, 0x80, 0x07, 0x82, 0x07, 0x64, 0x06, 0x63, 0x06, + 0x35, 0x05, 0x35, 0x05, 0xf8, 0x03, 0xf8, 0x03, 0xac, 0x02, 0xad, 0x02, + 0x55, 0x01, 0x54, 0x01, 0xf4, 0xff, 0xf5, 0xff, 0x8f, 0xfe, 0x8e, 0xfe, + 0x28, 0xfd, 0x29, 0xfd, 0xc3, 0xfb, 0xc3, 0xfb, 0x64, 0xfa, 0x64, 0xfa, + 0x14, 0xf9, 0x13, 0xf9, 0xce, 0xf7, 0xcf, 0xf7, 0xa0, 0xf6, 0x9e, 0xf6, + 0x84, 0xf5, 0x85, 0xf5, 0x86, 0xf4, 0x85, 0xf4, 0xa7, 0xf3, 0xa7, 0xf3, + 0xe2, 0xf2, 0xe2, 0xf2, 0x43, 0xf2, 0x42, 0xf2, 0xc3, 0xf1, 0xc1, 0xf1, + 0x66, 0xf1, 0x67, 0xf1, 0x29, 0xf1, 0x28, 0xf1, 0x0c, 0xf1, 0x0d, 0xf1, + 0x11, 0xf1, 0x0e, 0xf1, 0x2c, 0xf1, 0x2e, 0xf1, 0x6e, 0xf1, 0x6b, 0xf1, + 0xbf, 0xf1, 0xc3, 0xf1, 0x31, 0xf2, 0x2f, 0xf2, 0xb7, 0xf2, 0xb7, 0xf2, + 0x58, 0xf3, 0x57, 0xf3, 0x0b, 0xf4, 0x0a, 0xf4, 0xd4, 0xf4, 0xd2, 0xf4, + 0xb2, 0xf5, 0xb2, 0xf5, 0xa0, 0xf6, 0x9f, 0xf6, 0xa3, 0xf7, 0xa3, 0xf7, + 0xb4, 0xf8, 0xb4, 0xf8, 0xd5, 0xf9, 0xd4, 0xf9, 0x05, 0xfb, 0x07, 0xfb, + 0x41, 0xfc, 0x3f, 0xfc, 0x85, 0xfd, 0x84, 0xfd, 0xd4, 0xfe, 0xd5, 0xfe, + 0x2a, 0x00, 0x2a, 0x00, 0x82, 0x01, 0x81, 0x01, 0xdc, 0x02, 0xdc, 0x02, + 0x32, 0x04, 0x33, 0x04, 0x81, 0x05, 0x7f, 0x05, 0xc2, 0x06, 0xc4, 0x06, + 0xfc, 0x07, 0xf8, 0x07, 0x1c, 0x09, 0x1f, 0x09, 0x2c, 0x0a, 0x2a, 0x0a, + 0x21, 0x0b, 0x23, 0x0b, 0xfc, 0x0b, 0xfa, 0x0b, 0xbc, 0x0c, 0xbc, 0x0c, + 0x59, 0x0d, 0x5a, 0x0d, 0xdb, 0x0d, 0xda, 0x0d, 0x3a, 0x0e, 0x3a, 0x0e, + 0x79, 0x0e, 0x7a, 0x0e, 0x9f, 0x0e, 0x9b, 0x0e, 0x9e, 0x0e, 0xa1, 0x0e, + 0x89, 0x0e, 0x86, 0x0e, 0x50, 0x0e, 0x52, 0x0e, 0x03, 0x0e, 0x01, 0x0e, + 0x9a, 0x0d, 0x99, 0x0d, 0x14, 0x0d, 0x17, 0x0d, 0x7b, 0x0c, 0x79, 0x0c, + 0xc8, 0x0b, 0xcb, 0x0b, 0x00, 0x0b, 0xff, 0x0a, 0x24, 0x0a, 0x25, 0x0a, + 0x33, 0x09, 0x33, 0x09, 0x31, 0x08, 0x31, 0x08, 0x1e, 0x07, 0x1d, 0x07, + 0xf8, 0x05, 0xfa, 0x05, 0xc6, 0x04, 0xc6, 0x04, 0x88, 0x03, 0x86, 0x03, + 0x3d, 0x02, 0x3e, 0x02, 0xef, 0x00, 0xed, 0x00, 0x9b, 0xff, 0x9b, 0xff, + 0x46, 0xfe, 0x47, 0xfe, 0xf5, 0xfc, 0xf3, 0xfc, 0xab, 0xfb, 0xad, 0xfb, + 0x6d, 0xfa, 0x6c, 0xfa, 0x3d, 0xf9, 0x3f, 0xf9, 0x1f, 0xf8, 0x21, 0xf8, + 0x17, 0xf7, 0x16, 0xf7, 0x24, 0xf6, 0x24, 0xf6, 0x49, 0xf5, 0x4a, 0xf5, + 0x8b, 0xf4, 0x8b, 0xf4, 0xe7, 0xf3, 0xe7, 0xf3, 0x60, 0xf3, 0x60, 0xf3, + 0xf8, 0xf2, 0xf6, 0xf2, 0xaa, 0xf2, 0xac, 0xf2, 0x7d, 0xf2, 0x7c, 0xf2, + 0x6b, 0xf2, 0x6b, 0xf2, 0x74, 0xf2, 0x75, 0xf2, 0x9a, 0xf2, 0x9c, 0xf2, + 0xdb, 0xf2, 0xda, 0xf2, 0x34, 0xf3, 0x36, 0xf3, 0xa7, 0xf3, 0xa5, 0xf3, + 0x2e, 0xf4, 0x2f, 0xf4, 0xcc, 0xf4, 0xcd, 0xf4, 0x82, 0xf5, 0x80, 0xf5, + 0x48, 0xf6, 0x4a, 0xf6, 0x26, 0xf7, 0x26, 0xf7, 0x14, 0xf8, 0x14, 0xf8, + 0x15, 0xf9, 0x15, 0xf9, 0x22, 0xfa, 0x22, 0xfa, 0x3e, 0xfb, 0x3f, 0xfb, + 0x66, 0xfc, 0x65, 0xfc, 0x98, 0xfd, 0x98, 0xfd, 0xd5, 0xfe, 0xd4, 0xfe, + 0x13, 0x00, 0x13, 0x00, 0x57, 0x01, 0x55, 0x01, 0x94, 0x02, 0x95, 0x02, + 0xd2, 0x03, 0xd2, 0x03, 0x03, 0x05, 0x01, 0x05, 0x26, 0x06, 0x26, 0x06, + 0x3b, 0x07, 0x3a, 0x07, 0x3f, 0x08, 0x3f, 0x08, 0x2d, 0x09, 0x2d, 0x09, + 0x05, 0x0a, 0x04, 0x0a, 0xc1, 0x0a, 0xc1, 0x0a, 0x65, 0x0b, 0x64, 0x0b, + 0xea, 0x0b, 0xea, 0x0b, 0x56, 0x0c, 0x56, 0x0c, 0xa4, 0x0c, 0xa2, 0x0c, + 0xd4, 0x0c, 0xd4, 0x0c, 0xeb, 0x0c, 0xe9, 0x0c, 0xe0, 0x0c, 0xe1, 0x0c, + 0xbf, 0x0c, 0xbe, 0x0c, 0x82, 0x0c, 0x81, 0x0c, 0x2f, 0x0c, 0x2e, 0x0c, + 0xc2, 0x0b, 0xc1, 0x0b, 0x3e, 0x0b, 0x3f, 0x0b, 0xa5, 0x0a, 0xa3, 0x0a, + 0xf3, 0x09, 0xf3, 0x09, 0x32, 0x09, 0x31, 0x09, 0x5c, 0x08, 0x5b, 0x08, + 0x71, 0x07, 0x71, 0x07, 0x7d, 0x06, 0x7b, 0x06, 0x70, 0x05, 0x70, 0x05, + 0x5f, 0x04, 0x5d, 0x04, 0x38, 0x03, 0x39, 0x03, 0x0f, 0x02, 0x0d, 0x02, + 0xd9, 0x00, 0xda, 0x00, 0xa2, 0xff, 0xa0, 0xff, 0x69, 0xfe, 0x68, 0xfe, + 0x2f, 0xfd, 0x30, 0xfd, 0xff, 0xfb, 0xfb, 0xfb, 0xd5, 0xfa, 0xd5, 0xfa, + 0xba, 0xf9, 0xb8, 0xf9, 0xaf, 0xf8, 0xaf, 0xf8, 0xb8, 0xf7, 0xb6, 0xf7, + 0xd7, 0xf6, 0xd4, 0xf6, 0x0c, 0xf6, 0x0b, 0xf6, 0x5a, 0xf5, 0x59, 0xf5, + 0xc2, 0xf4, 0xc2, 0xf4, 0x45, 0xf4, 0x44, 0xf4, 0xe4, 0xf3, 0xe1, 0xf3, + 0x9e, 0xf3, 0x9d, 0xf3, 0x74, 0xf3, 0x73, 0xf3, 0x64, 0xf3, 0x63, 0xf3, + 0x6e, 0xf3, 0x6d, 0xf3, 0x95, 0xf3, 0x93, 0xf3, 0xd3, 0xf3, 0xd3, 0xf3, + 0x28, 0xf4, 0x27, 0xf4, 0x9a, 0xf4, 0x99, 0xf4, 0x1d, 0xf5, 0x1c, 0xf5, + 0xbb, 0xf5, 0xbb, 0xf5, 0x6c, 0xf6, 0x6a, 0xf6, 0x32, 0xf7, 0x32, 0xf7, + 0x0e, 0xf8, 0x0c, 0xf8, 0xfa, 0xf8, 0xfa, 0xf8, 0xf9, 0xf9, 0xfa, 0xf9, + 0x09, 0xfb, 0x07, 0xfb, 0x24, 0xfc, 0x24, 0xfc, 0x4e, 0xfd, 0x4d, 0xfd, + 0x82, 0xfe, 0x80, 0xfe, 0xbf, 0xff, 0xbf, 0xff, 0xfc, 0x00, 0xfc, 0x00, + 0x3d, 0x02, 0x3c, 0x02, 0x76, 0x03, 0x79, 0x03, 0xac, 0x04, 0xab, 0x04, + 0xd3, 0x05, 0xd5, 0x05, 0xef, 0x06, 0xec, 0x06, 0xf3, 0x07, 0xf6, 0x07, + 0xe6, 0x08, 0xe6, 0x08, 0xc0, 0x09, 0xc0, 0x09, 0x7e, 0x0a, 0x80, 0x0a, + 0x25, 0x0b, 0x22, 0x0b, 0xad, 0x0b, 0xae, 0x0b, 0x1b, 0x0c, 0x1a, 0x0c, + 0x6d, 0x0c, 0x6f, 0x0c, 0xa2, 0x0c, 0xa1, 0x0c, 0xc3, 0x0c, 0xc2, 0x0c, + 0xc1, 0x0c, 0xc1, 0x0c, 0xab, 0x0c, 0xaa, 0x0c, 0x7d, 0x0c, 0x7a, 0x0c, + 0x31, 0x0c, 0x32, 0x0c, 0xd7, 0x0b, 0xd5, 0x0b, 0x60, 0x0b, 0x5f, 0x0b, + 0xd6, 0x0a, 0xd6, 0x0a, 0x36, 0x0a, 0x37, 0x0a, 0x86, 0x09, 0x86, 0x09, + 0xbf, 0x08, 0xbe, 0x08, 0xe4, 0x07, 0xe4, 0x07, 0xf9, 0x06, 0xfc, 0x06, + 0xfe, 0x05, 0xfb, 0x05, 0xf2, 0x04, 0xf4, 0x04, 0xd4, 0x03, 0xd4, 0x03, + 0xae, 0x02, 0xad, 0x02, 0x79, 0x01, 0x79, 0x01, 0x3b, 0x00, 0x39, 0x00, + 0xf5, 0xfe, 0xf5, 0xfe, 0xab, 0xfd, 0xaa, 0xfd, 0x63, 0xfc, 0x62, 0xfc, + 0x1c, 0xfb, 0x1b, 0xfb, 0xde, 0xf9, 0xdf, 0xf9, 0xb0, 0xf8, 0xad, 0xf8, + 0x8e, 0xf7, 0x8e, 0xf7, 0x80, 0xf6, 0x7e, 0xf6, 0x8b, 0xf5, 0x8a, 0xf5, + 0xaf, 0xf4, 0xb0, 0xf4, 0xf0, 0xf3, 0xee, 0xf3, 0x4c, 0xf3, 0x4d, 0xf3, + 0xc6, 0xf2, 0xc6, 0xf2, 0x60, 0xf2, 0x5f, 0xf2, 0x18, 0xf2, 0x18, 0xf2, + 0xef, 0xf1, 0xee, 0xf1, 0xe3, 0xf1, 0xe3, 0xf1, 0xf6, 0xf1, 0xf5, 0xf1, + 0x24, 0xf2, 0x24, 0xf2, 0x71, 0xf2, 0x70, 0xf2, 0xd3, 0xf2, 0xd2, 0xf2, + 0x52, 0xf3, 0x51, 0xf3, 0xe6, 0xf3, 0xe5, 0xf3, 0x92, 0xf4, 0x91, 0xf4, + 0x54, 0xf5, 0x55, 0xf5, 0x29, 0xf6, 0x26, 0xf6, 0x12, 0xf7, 0x13, 0xf7, + 0x10, 0xf8, 0x0e, 0xf8, 0x1e, 0xf9, 0x1c, 0xf9, 0x3f, 0xfa, 0x40, 0xfa, + 0x6c, 0xfb, 0x69, 0xfb, 0xaa, 0xfc, 0xab, 0xfc, 0xf2, 0xfd, 0xf1, 0xfd, + 0x44, 0xff, 0x43, 0xff, 0x9f, 0x00, 0x9f, 0x00, 0xfc, 0x01, 0xfb, 0x01, + 0x59, 0x03, 0x58, 0x03, 0xaf, 0x04, 0xaf, 0x04, 0xfe, 0x05, 0xfc, 0x05, + 0x3d, 0x07, 0x3d, 0x07, 0x6d, 0x08, 0x6d, 0x08, 0x89, 0x09, 0x87, 0x09, + 0x8d, 0x0a, 0x8e, 0x0a, 0x7a, 0x0b, 0x78, 0x0b, 0x45, 0x0c, 0x46, 0x0c, + 0xf6, 0x0c, 0xf7, 0x0c, 0x8a, 0x0d, 0x89, 0x0d, 0xfc, 0x0d, 0xfe, 0x0d, + 0x53, 0x0e, 0x53, 0x0e, 0x89, 0x0e, 0x88, 0x0e, 0xa1, 0x0e, 0xa3, 0x0e, + 0x9d, 0x0e, 0x9b, 0x0e, 0x7c, 0x0e, 0x7c, 0x0e, 0x43, 0x0e, 0x42, 0x0e, + 0xec, 0x0d, 0xeb, 0x0d, 0x81, 0x0d, 0x83, 0x0d, 0xf9, 0x0c, 0xf6, 0x0c, + 0x5f, 0x0c, 0x5e, 0x0c, 0xab, 0x0b, 0xac, 0x0b, 0xe7, 0x0a, 0xe3, 0x0a, + 0x07, 0x0a, 0x09, 0x0a, 0x1b, 0x09, 0x19, 0x09, 0x18, 0x08, 0x18, 0x08, + 0x05, 0x07, 0x05, 0x07, 0xde, 0x05, 0xdc, 0x05, 0xa9, 0x04, 0xa9, 0x04, + 0x63, 0x03, 0x63, 0x03, 0x15, 0x02, 0x12, 0x02, 0xb5, 0x00, 0xb6, 0x00, + 0x53, 0xff, 0x51, 0xff, 0xec, 0xfd, 0xeb, 0xfd, 0x82, 0xfc, 0x81, 0xfc, + 0x1d, 0xfb, 0x1d, 0xfb, 0xc2, 0xf9, 0xc1, 0xf9, 0x71, 0xf8, 0x71, 0xf8, + 0x35, 0xf7, 0x34, 0xf7, 0x0c, 0xf6, 0x0c, 0xf6, 0xfa, 0xf4, 0xf9, 0xf4, + 0x09, 0xf4, 0x08, 0xf4, 0x32, 0xf3, 0x31, 0xf3, 0x7d, 0xf2, 0x7d, 0xf2, + 0xe7, 0xf1, 0xe8, 0xf1, 0x76, 0xf1, 0x74, 0xf1, 0x23, 0xf1, 0x24, 0xf1, + 0xf4, 0xf0, 0xf3, 0xf0, 0xe5, 0xf0, 0xe2, 0xf0, 0xf1, 0xf0, 0xf2, 0xf0, + 0x21, 0xf1, 0x1e, 0xf1, 0x66, 0xf1, 0x67, 0xf1, 0xcb, 0xf1, 0xca, 0xf1, + 0x44, 0xf2, 0x44, 0xf2, 0xdb, 0xf2, 0xd9, 0xf2, 0x84, 0xf3, 0x82, 0xf3, + 0x43, 0xf4, 0x41, 0xf4, 0x16, 0xf5, 0x15, 0xf5, 0xfd, 0xf5, 0xfc, 0xf5, + 0xf7, 0xf6, 0xf6, 0xf6, 0x02, 0xf8, 0x03, 0xf8, 0x1d, 0xf9, 0x1b, 0xf9, + 0x49, 0xfa, 0x49, 0xfa, 0x7f, 0xfb, 0x7d, 0xfb, 0xc1, 0xfc, 0xc1, 0xfc, + 0x0e, 0xfe, 0x0e, 0xfe, 0x62, 0xff, 0x61, 0xff, 0xbe, 0x00, 0xbb, 0x00, + 0x17, 0x02, 0x16, 0x02, 0x74, 0x03, 0x73, 0x03, 0xca, 0x04, 0xcb, 0x04, + 0x18, 0x06, 0x13, 0x06, 0x57, 0x07, 0x57, 0x07, 0x86, 0x08, 0x85, 0x08, + 0xa4, 0x09, 0xa2, 0x09, 0xa9, 0x0a, 0xa8, 0x0a, 0x92, 0x0b, 0x92, 0x0b, + 0x63, 0x0c, 0x60, 0x0c, 0x11, 0x0d, 0x13, 0x0d, 0xa5, 0x0d, 0xa1, 0x0d, + 0x17, 0x0e, 0x15, 0x0e, 0x69, 0x0e, 0x69, 0x0e, 0x9f, 0x0e, 0x9d, 0x0e, + 0xb2, 0x0e, 0xb2, 0x0e, 0xad, 0x0e, 0xaa, 0x0e, 0x86, 0x0e, 0x87, 0x0e, + 0x47, 0x0e, 0x45, 0x0e, 0xea, 0x0d, 0xe9, 0x0d, 0x75, 0x0d, 0x75, 0x0d, + 0xe8, 0x0c, 0xe7, 0x0c, 0x43, 0x0c, 0x41, 0x0c, 0x87, 0x0b, 0x87, 0x0b, + 0xb7, 0x0a, 0xb4, 0x0a, 0xce, 0x09, 0xd1, 0x09, 0xda, 0x08, 0xd6, 0x08, + 0xcb, 0x07, 0xcc, 0x07, 0xb2, 0x06, 0xb0, 0x06, 0x86, 0x05, 0x84, 0x05, + 0x4d, 0x04, 0x4d, 0x04, 0x07, 0x03, 0x06, 0x03, 0xbb, 0x01, 0xbb, 0x01, + 0x67, 0x00, 0x65, 0x00, 0x12, 0xff, 0x12, 0xff, 0xbc, 0xfd, 0xbb, 0xfd, + 0x6c, 0xfc, 0x6b, 0xfc, 0x26, 0xfb, 0x25, 0xfb, 0xec, 0xf9, 0xeb, 0xf9, + 0xc1, 0xf8, 0xc2, 0xf8, 0xac, 0xf7, 0xa8, 0xf7, 0xaa, 0xf6, 0xad, 0xf6, + 0xc1, 0xf5, 0xbe, 0xf5, 0xf4, 0xf4, 0xf4, 0xf4, 0x3f, 0xf4, 0x3d, 0xf4, + 0xa7, 0xf3, 0xa6, 0xf3, 0x2d, 0xf3, 0x2e, 0xf3, 0xcf, 0xf2, 0xcd, 0xf2, + 0x91, 0xf2, 0x90, 0xf2, 0x6d, 0xf2, 0x6c, 0xf2, 0x67, 0xf2, 0x65, 0xf2, + 0x7d, 0xf2, 0x7c, 0xf2, 0xad, 0xf2, 0xac, 0xf2, 0xf9, 0xf2, 0xf8, 0xf2, + 0x5c, 0xf3, 0x5b, 0xf3, 0xd5, 0xf3, 0xd5, 0xf3, 0x6a, 0xf4, 0x67, 0xf4, + 0x0f, 0xf5, 0x0f, 0xf5, 0xcc, 0xf5, 0xca, 0xf5, 0x9e, 0xf6, 0x9f, 0xf6, + 0x83, 0xf7, 0x7f, 0xf7, 0x77, 0xf8, 0x79, 0xf8, 0x7c, 0xf9, 0x7b, 0xf9, + 0x93, 0xfa, 0x92, 0xfa, 0xb1, 0xfb, 0xb0, 0xfb, 0xde, 0xfc, 0xdd, 0xfc, + 0x14, 0xfe, 0x13, 0xfe, 0x50, 0xff, 0x4d, 0xff, 0x92, 0x00, 0x90, 0x00, + 0xce, 0x01, 0xcf, 0x01, 0x0f, 0x03, 0x0e, 0x03, 0x46, 0x04, 0x44, 0x04, + 0x71, 0x05, 0x71, 0x05, 0x91, 0x06, 0x8f, 0x06, 0x9f, 0x07, 0x9e, 0x07, + 0x9a, 0x08, 0x99, 0x08, 0x7f, 0x09, 0x7e, 0x09, 0x4b, 0x0a, 0x4b, 0x0a, + 0xfd, 0x0a, 0xfe, 0x0a, 0x96, 0x0b, 0x94, 0x0b, 0x11, 0x0c, 0x11, 0x0c, + 0x6f, 0x0c, 0x6e, 0x0c, 0xb3, 0x0c, 0xb3, 0x0c, 0xd9, 0x0c, 0xdb, 0x0c, + 0xe5, 0x0c, 0xe2, 0x0c, 0xd1, 0x0c, 0xd2, 0x0c, 0xa5, 0x0c, 0xa6, 0x0c, + 0x61, 0x0c, 0x60, 0x0c, 0x03, 0x0c, 0x03, 0x0c, 0x8d, 0x0b, 0x8b, 0x0b, + 0xff, 0x0a, 0x00, 0x0b, 0x5d, 0x0a, 0x5c, 0x0a, 0xa5, 0x09, 0xa5, 0x09, + 0xdb, 0x08, 0xda, 0x08, 0xfd, 0x07, 0xfd, 0x07, 0x10, 0x07, 0x0f, 0x07, + 0x0f, 0x06, 0x0f, 0x06, 0x04, 0x05, 0x04, 0x05, 0xe7, 0x03, 0xe6, 0x03, + 0xc2, 0x02, 0xc0, 0x02, 0x91, 0x01, 0x91, 0x01, 0x5c, 0x00, 0x5b, 0x00, + 0x22, 0xff, 0x21, 0xff, 0xeb, 0xfd, 0xeb, 0xfd, 0xb7, 0xfc, 0xb6, 0xfc, + 0x89, 0xfb, 0x89, 0xfb, 0x69, 0xfa, 0x69, 0xfa, 0x56, 0xf9, 0x55, 0xf9, + 0x54, 0xf8, 0x53, 0xf8, 0x68, 0xf7, 0x67, 0xf7, 0x8f, 0xf6, 0x8e, 0xf6, + 0xd2, 0xf5, 0xd3, 0xf5, 0x2c, 0xf5, 0x2b, 0xf5, 0xa0, 0xf4, 0x9f, 0xf4, + 0x30, 0xf4, 0x30, 0xf4, 0xdb, 0xf3, 0xd8, 0xf3, 0xa2, 0xf3, 0xa2, 0xf3, + 0x81, 0xf3, 0x81, 0xf3, 0x7e, 0xf3, 0x7e, 0xf3, 0x95, 0xf3, 0x93, 0xf3, + 0xc2, 0xf3, 0xc1, 0xf3, 0x0d, 0xf4, 0x0d, 0xf4, 0x6c, 0xf4, 0x69, 0xf4, + 0xe4, 0xf4, 0xe5, 0xf4, 0x74, 0xf5, 0x73, 0xf5, 0x16, 0xf6, 0x16, 0xf6, + 0xd4, 0xf6, 0xd1, 0xf6, 0x9e, 0xf7, 0x9e, 0xf7, 0x83, 0xf8, 0x81, 0xf8, + 0x74, 0xf9, 0x74, 0xf9, 0x78, 0xfa, 0x76, 0xfa, 0x8d, 0xfb, 0x8c, 0xfb, + 0xab, 0xfc, 0xac, 0xfc, 0xdc, 0xfd, 0xda, 0xfd, 0x0f, 0xff, 0x0f, 0xff, + 0x4d, 0x00, 0x4c, 0x00, 0x8a, 0x01, 0x89, 0x01, 0xc5, 0x02, 0xc5, 0x02, + 0xfe, 0x03, 0xfe, 0x03, 0x29, 0x05, 0x28, 0x05, 0x4b, 0x06, 0x4a, 0x06, + 0x57, 0x07, 0x58, 0x07, 0x56, 0x08, 0x54, 0x08, 0x3d, 0x09, 0x3e, 0x09, + 0x09, 0x0a, 0x08, 0x0a, 0xc0, 0x0a, 0xc0, 0x0a, 0x58, 0x0b, 0x55, 0x0b, + 0xd4, 0x0b, 0xd4, 0x0b, 0x33, 0x0c, 0x34, 0x0c, 0x7a, 0x0c, 0x77, 0x0c, + 0xa2, 0x0c, 0xa4, 0x0c, 0xb3, 0x0c, 0xb1, 0x0c, 0xa8, 0x0c, 0xa8, 0x0c, + 0x85, 0x0c, 0x85, 0x0c, 0x4a, 0x0c, 0x4a, 0x0c, 0xfa, 0x0b, 0xf9, 0x0b, + 0x8f, 0x0b, 0x90, 0x0b, 0x13, 0x0b, 0x12, 0x0b, 0x7f, 0x0a, 0x7f, 0x0a, + 0xd7, 0x09, 0xd8, 0x09, 0x1f, 0x09, 0x1c, 0x09, 0x4c, 0x08, 0x4e, 0x08, + 0x6f, 0x07, 0x6d, 0x07, 0x79, 0x06, 0x79, 0x06, 0x79, 0x05, 0x79, 0x05, + 0x65, 0x04, 0x65, 0x04, 0x44, 0x03, 0x42, 0x03, 0x17, 0x02, 0x18, 0x02, + 0xdd, 0x00, 0xdb, 0x00, 0x9d, 0xff, 0x9c, 0xff, 0x53, 0xfe, 0x54, 0xfe, + 0x0c, 0xfd, 0x09, 0xfd, 0xc5, 0xfb, 0xc5, 0xfb, 0x83, 0xfa, 0x82, 0xfa, + 0x4e, 0xf9, 0x4e, 0xf9, 0x25, 0xf8, 0x24, 0xf8, 0x0e, 0xf7, 0x0e, 0xf7, + 0x0e, 0xf6, 0x0e, 0xf6, 0x25, 0xf5, 0x25, 0xf5, 0x57, 0xf4, 0x58, 0xf4, + 0xa8, 0xf3, 0xa6, 0xf3, 0x12, 0xf3, 0x13, 0xf3, 0x9e, 0xf2, 0x9d, 0xf2, + 0x48, 0xf2, 0x46, 0xf2, 0x0c, 0xf2, 0x0d, 0xf2, 0xf8, 0xf1, 0xf4, 0xf1, + 0xf8, 0xf1, 0xfa, 0xf1, 0x1c, 0xf2, 0x1b, 0xf2, 0x58, 0xf2, 0x56, 0xf2, + 0xad, 0xf2, 0xad, 0xf2, 0x1e, 0xf3, 0x1d, 0xf3, 0xa8, 0xf3, 0xa6, 0xf3, + 0x45, 0xf4, 0x44, 0xf4, 0xfb, 0xf4, 0xfc, 0xf4, 0xc7, 0xf5, 0xc4, 0xf5, + 0xa6, 0xf6, 0xa7, 0xf6, 0x99, 0xf7, 0x98, 0xf7, 0x9d, 0xf8, 0x9d, 0xf8, + 0xb5, 0xf9, 0xb3, 0xf9, 0xda, 0xfa, 0xdb, 0xfa, 0x12, 0xfc, 0x12, 0xfc, + 0x54, 0xfd, 0x54, 0xfd, 0xa2, 0xfe, 0xa1, 0xfe, 0xf9, 0xff, 0xf8, 0xff, + 0x53, 0x01, 0x52, 0x01, 0xb0, 0x02, 0xb1, 0x02, 0x0e, 0x04, 0x0a, 0x04, + 0x5c, 0x05, 0x5d, 0x05, 0xa4, 0x06, 0xa3, 0x06, 0xdc, 0x07, 0xdb, 0x07, + 0x00, 0x09, 0x01, 0x09, 0x11, 0x0a, 0x0f, 0x0a, 0x05, 0x0b, 0x05, 0x0b, + 0xe4, 0x0b, 0xe3, 0x0b, 0xa3, 0x0c, 0xa1, 0x0c, 0x46, 0x0d, 0x46, 0x0d, + 0xc9, 0x0d, 0xc7, 0x0d, 0x2c, 0x0e, 0x2b, 0x0e, 0x70, 0x0e, 0x71, 0x0e, + 0x98, 0x0e, 0x96, 0x0e, 0xa0, 0x0e, 0xa0, 0x0e, 0x8f, 0x0e, 0x8d, 0x0e, + 0x5d, 0x0e, 0x5e, 0x0e, 0x18, 0x0e, 0x15, 0x0e, 0xb3, 0x0d, 0xb5, 0x0d, + 0x3a, 0x0d, 0x3a, 0x0d, 0xac, 0x0c, 0xaa, 0x0c, 0x03, 0x0c, 0x04, 0x0c, + 0x49, 0x0b, 0x46, 0x0b, 0x74, 0x0a, 0x74, 0x0a, 0x8f, 0x09, 0x8f, 0x09, + 0x97, 0x08, 0x94, 0x08, 0x8a, 0x07, 0x8a, 0x07, 0x6e, 0x06, 0x6e, 0x06, + 0x40, 0x05, 0x3f, 0x05, 0x01, 0x04, 0x01, 0x04, 0xb8, 0x02, 0xb6, 0x02, + 0x5d, 0x01, 0x5e, 0x01, 0xfe, 0xff, 0xfe, 0xff, 0x96, 0xfe, 0x96, 0xfe, + 0x2e, 0xfd, 0x2b, 0xfd, 0xc6, 0xfb, 0xc7, 0xfb, 0x64, 0xfa, 0x63, 0xfa, + 0x0c, 0xf9, 0x0c, 0xf9, 0xc2, 0xf7, 0xc3, 0xf7, 0x91, 0xf6, 0x90, 0xf6, + 0x6f, 0xf5, 0x70, 0xf5, 0x6f, 0xf4, 0x6d, 0xf4, 0x86, 0xf3, 0x86, 0xf3, + 0xbf, 0xf2, 0xbd, 0xf2, 0x18, 0xf2, 0x18, 0xf2, 0x92, 0xf1, 0x90, 0xf1, + 0x2f, 0xf1, 0x2e, 0xf1, 0xee, 0xf0, 0xeb, 0xf0, 0xcd, 0xf0, 0xcb, 0xf0, + 0xcc, 0xf0, 0xca, 0xf0, 0xe9, 0xf0, 0xe8, 0xf0, 0x26, 0xf1, 0x25, 0xf1, + 0x7b, 0xf1, 0x7a, 0xf1, 0xec, 0xf1, 0xea, 0xf1, 0x74, 0xf2, 0x72, 0xf2, + 0x13, 0xf3, 0x15, 0xf3, 0xcb, 0xf3, 0xc6, 0xf3, 0x93, 0xf4, 0x94, 0xf4, + 0x74, 0xf5, 0x71, 0xf5, 0x65, 0xf6, 0x65, 0xf6, 0x6b, 0xf7, 0x69, 0xf7, + 0x80, 0xf8, 0x7f, 0xf8, 0xa5, 0xf9, 0xa4, 0xf9, 0xd9, 0xfa, 0xd8, 0xfa, + 0x1b, 0xfc, 0x18, 0xfc, 0x63, 0xfd, 0x63, 0xfd, 0xb6, 0xfe, 0xb4, 0xfe, + 0x13, 0x00, 0x11, 0x00, 0x6f, 0x01, 0x6e, 0x01, 0xd0, 0x02, 0xcf, 0x02, + 0x2c, 0x04, 0x29, 0x04, 0x7e, 0x05, 0x7e, 0x05, 0xcc, 0x06, 0xca, 0x06, + 0x02, 0x08, 0x02, 0x08, 0x2e, 0x09, 0x2a, 0x09, 0x3d, 0x0a, 0x3c, 0x0a, + 0x37, 0x0b, 0x36, 0x0b, 0x17, 0x0c, 0x14, 0x0c, 0xd4, 0x0c, 0xd4, 0x0c, + 0x7a, 0x0d, 0x77, 0x0d, 0xfc, 0x0d, 0xfd, 0x0d, 0x60, 0x0e, 0x5e, 0x0e, + 0xa5, 0x0e, 0xa3, 0x0e, 0xc7, 0x0e, 0xc7, 0x0e, 0xd0, 0x0e, 0xce, 0x0e, + 0xb9, 0x0e, 0xb8, 0x0e, 0x86, 0x0e, 0x84, 0x0e, 0x37, 0x0e, 0x36, 0x0e, + 0xce, 0x0d, 0xcd, 0x0d, 0x4c, 0x0d, 0x4b, 0x0d, 0xb5, 0x0c, 0xb1, 0x0c, + 0xff, 0x0b, 0x00, 0x0c, 0x3b, 0x0b, 0x39, 0x0b, 0x5c, 0x0a, 0x5a, 0x0a, + 0x6b, 0x09, 0x6b, 0x09, 0x67, 0x08, 0x66, 0x08, 0x53, 0x07, 0x51, 0x07, + 0x2e, 0x06, 0x2b, 0x06, 0xf8, 0x04, 0xf8, 0x04, 0xb6, 0x03, 0xb4, 0x03, + 0x6a, 0x02, 0x6b, 0x02, 0x17, 0x01, 0x14, 0x01, 0xbf, 0xff, 0xbe, 0xff, + 0x66, 0xfe, 0x64, 0xfe, 0x0e, 0xfd, 0x0d, 0xfd, 0xc2, 0xfb, 0xc0, 0xfb, + 0x7b, 0xfa, 0x7a, 0xfa, 0x49, 0xf9, 0x47, 0xf9, 0x24, 0xf8, 0x23, 0xf8, + 0x14, 0xf7, 0x12, 0xf7, 0x20, 0xf6, 0x20, 0xf6, 0x41, 0xf5, 0x3f, 0xf5, + 0x7f, 0xf4, 0x7d, 0xf4, 0xd6, 0xf3, 0xd4, 0xf3, 0x4d, 0xf3, 0x4c, 0xf3, + 0xe1, 0xf2, 0xdd, 0xf2, 0x90, 0xf2, 0x8f, 0xf2, 0x5e, 0xf2, 0x5d, 0xf2, + 0x4b, 0xf2, 0x48, 0xf2, 0x51, 0xf2, 0x51, 0xf2, 0x75, 0xf2, 0x73, 0xf2, + 0xb4, 0xf2, 0xb5, 0xf2, 0x0b, 0xf3, 0x09, 0xf3, 0x7d, 0xf3, 0x7b, 0xf3, + 0x04, 0xf4, 0x04, 0xf4, 0xa3, 0xf4, 0xa1, 0xf4, 0x58, 0xf5, 0x57, 0xf5, + 0x1d, 0xf6, 0x1e, 0xf6, 0xfb, 0xf6, 0xfa, 0xf6, 0xea, 0xf7, 0xe8, 0xf7, + 0xe8, 0xf8, 0xe9, 0xf8, 0xf8, 0xf9, 0xf6, 0xf9, 0x15, 0xfb, 0x16, 0xfb, + 0x3e, 0xfc, 0x3c, 0xfc, 0x6e, 0xfd, 0x6e, 0xfd, 0xad, 0xfe, 0xaa, 0xfe, + 0xec, 0xff, 0xec, 0xff, 0x31, 0x01, 0x2e, 0x01, 0x73, 0x02, 0x72, 0x02, + 0xaf, 0x03, 0xac, 0x03, 0xe6, 0x04, 0xe4, 0x04, 0x0d, 0x06, 0x0b, 0x06, + 0x25, 0x07, 0x24, 0x07, 0x2c, 0x08, 0x2a, 0x08, 0x1e, 0x09, 0x1c, 0x09, + 0xf9, 0x09, 0xf8, 0x09, 0xb9, 0x0a, 0xb9, 0x0a, 0x62, 0x0b, 0x5f, 0x0b, + 0xeb, 0x0b, 0xed, 0x0b, 0x5c, 0x0c, 0x58, 0x0c, 0xae, 0x0c, 0xae, 0x0c, + 0xe2, 0x0c, 0xe1, 0x0c, 0xfd, 0x0c, 0xfb, 0x0c, 0xf8, 0x0c, 0xf7, 0x0c, + 0xd8, 0x0c, 0xd7, 0x0c, 0xa2, 0x0c, 0x9f, 0x0c, 0x4c, 0x0c, 0x4c, 0x0c, + 0xe5, 0x0b, 0xe1, 0x0b, 0x61, 0x0b, 0x61, 0x0b, 0xc8, 0x0a, 0xc6, 0x0a, + 0x1c, 0x0a, 0x1b, 0x0a, 0x57, 0x09, 0x53, 0x09, 0x81, 0x08, 0x80, 0x08, + 0x9a, 0x07, 0x99, 0x07, 0xa0, 0x06, 0x9c, 0x06, 0x99, 0x05, 0x98, 0x05, + 0x80, 0x04, 0x7e, 0x04, 0x60, 0x03, 0x5c, 0x03, 0x2d, 0x02, 0x2d, 0x02, + 0xfb, 0x00, 0xf8, 0x00, 0xbf, 0xff, 0xbe, 0xff, 0x84, 0xfe, 0x83, 0xfe, + 0x4e, 0xfd, 0x4a, 0xfd, 0x19, 0xfc, 0x18, 0xfc, 0xf3, 0xfa, 0xee, 0xfa, + 0xd3, 0xf9, 0xd2, 0xf9, 0xca, 0xf8, 0xc7, 0xf8, 0xd0, 0xf7, 0xcf, 0xf7, + 0xec, 0xf6, 0xec, 0xf6, 0x23, 0xf6, 0x20, 0xf6, 0x6f, 0xf5, 0x6f, 0xf5, + 0xd9, 0xf4, 0xd4, 0xf4, 0x5a, 0xf4, 0x58, 0xf4, 0xf8, 0xf3, 0xf6, 0xf3, + 0xb1, 0xf3, 0xaf, 0xf3, 0x84, 0xf3, 0x82, 0xf3, 0x73, 0xf3, 0x71, 0xf3, + 0x7c, 0xf3, 0x7b, 0xf3, 0xa0, 0xf3, 0x9f, 0xf3, 0xe0, 0xf3, 0xdc, 0xf3, + 0x31, 0xf4, 0x31, 0xf4, 0xa2, 0xf4, 0xa0, 0xf4, 0x26, 0xf5, 0x24, 0xf5, + 0xc2, 0xf5, 0xc1, 0xf5, 0x74, 0xf6, 0x70, 0xf6, 0x36, 0xf7, 0x38, 0xf7, + 0x11, 0xf8, 0x0e, 0xf8, 0xfc, 0xf8, 0xfc, 0xf8, 0xfb, 0xf9, 0xf8, 0xf9, + 0x07, 0xfb, 0x06, 0xfb, 0x24, 0xfc, 0x24, 0xfc, 0x4e, 0xfd, 0x4b, 0xfd, + 0x80, 0xfe, 0x7e, 0xfe, 0xbb, 0xff, 0xba, 0xff, 0xf8, 0x00, 0xf7, 0x00, + 0x37, 0x02, 0x36, 0x02, 0x72, 0x03, 0x70, 0x03, 0xa5, 0x04, 0xa4, 0x04, + 0xce, 0x05, 0xcc, 0x05, 0xe7, 0x06, 0xe4, 0x06, 0xee, 0x07, 0xec, 0x07, + 0xe0, 0x08, 0xdf, 0x08, 0xbb, 0x09, 0xb9, 0x09, 0x7c, 0x0a, 0x7a, 0x0a, + 0x23, 0x0b, 0x20, 0x0b, 0xac, 0x0b, 0xab, 0x0b, 0x1b, 0x0c, 0x18, 0x0c, + 0x6a, 0x0c, 0x69, 0x0c, 0xa2, 0x0c, 0xa0, 0x0c, 0xbe, 0x0c, 0xbc, 0x0c, + 0xbf, 0x0c, 0xbb, 0x0c, 0xa6, 0x0c, 0xa4, 0x0c, 0x75, 0x0c, 0x73, 0x0c, + 0x2d, 0x0c, 0x2b, 0x0c, 0xcf, 0x0b, 0xcd, 0x0b, 0x58, 0x0b, 0x57, 0x0b, + 0xd0, 0x0a, 0xcd, 0x0a, 0x2f, 0x0a, 0x2c, 0x0a, 0x7a, 0x09, 0x79, 0x09, + 0xb4, 0x08, 0xb2, 0x08, 0xd8, 0x07, 0xd6, 0x07, 0xed, 0x06, 0xeb, 0x06, + 0xef, 0x05, 0xeb, 0x05, 0xe1, 0x04, 0xe0, 0x04, 0xc4, 0x03, 0xc2, 0x03, + 0x9b, 0x02, 0x99, 0x02, 0x66, 0x01, 0x62, 0x01, 0x27, 0x00, 0x25, 0x00, + 0xdf, 0xfe, 0xdc, 0xfe, 0x96, 0xfd, 0x95, 0xfd, 0x4d, 0xfc, 0x4b, 0xfc, + 0x08, 0xfb, 0x08, 0xfb, 0xcd, 0xf9, 0xca, 0xf9, 0x9c, 0xf8, 0x9c, 0xf8, + 0x7e, 0xf7, 0x7d, 0xf7, 0x73, 0xf6, 0x71, 0xf6, 0x7d, 0xf5, 0x7d, 0xf5, + 0xa7, 0xf4, 0xa5, 0xf4, 0xe7, 0xf3, 0xe6, 0xf3, 0x48, 0xf3, 0x45, 0xf3, + 0xc6, 0xf2, 0xc3, 0xf2, 0x61, 0xf2, 0x62, 0xf2, 0x1f, 0xf2, 0x1b, 0xf2, + 0xf6, 0xf1, 0xf5, 0xf1, 0xee, 0xf1, 0xee, 0xf1, 0x03, 0xf2, 0x01, 0xf2, + 0x35, 0xf2, 0x33, 0xf2, 0x82, 0xf2, 0x81, 0xf2, 0xe8, 0xf2, 0xe5, 0xf2, + 0x65, 0xf3, 0x64, 0xf3, 0xfe, 0xf3, 0xfb, 0xf3, 0xa9, 0xf4, 0xa9, 0xf4, + 0x6d, 0xf5, 0x6a, 0xf5, 0x45, 0xf6, 0x44, 0xf6, 0x32, 0xf7, 0x2f, 0xf7, + 0x31, 0xf8, 0x30, 0xf8, 0x42, 0xf9, 0x3f, 0xf9, 0x62, 0xfa, 0x60, 0xfa, + 0x95, 0xfb, 0x93, 0xfb, 0xd5, 0xfc, 0xd1, 0xfc, 0x1e, 0xfe, 0x1d, 0xfe, + 0x74, 0xff, 0x72, 0xff, 0xd0, 0x00, 0xcd, 0x00, 0x2f, 0x02, 0x2d, 0x02, + 0x8c, 0x03, 0x88, 0x03, 0xe3, 0x04, 0xe0, 0x04, 0x31, 0x06, 0x2d, 0x06, + 0x6e, 0x07, 0x6a, 0x07, 0x9c, 0x08, 0x99, 0x08, 0xb5, 0x09, 0xb3, 0x09, + 0xb5, 0x0a, 0xb1, 0x0a, 0x9d, 0x0b, 0x9b, 0x0b, 0x64, 0x0c, 0x62, 0x0c, + 0x14, 0x0d, 0x11, 0x0d, 0x9d, 0x0d, 0x9d, 0x0d, 0x0f, 0x0e, 0x0b, 0x0e, + 0x5d, 0x0e, 0x5b, 0x0e, 0x8c, 0x0e, 0x8a, 0x0e, 0xa2, 0x0e, 0xa0, 0x0e, + 0x98, 0x0e, 0x94, 0x0e, 0x74, 0x0e, 0x72, 0x0e, 0x34, 0x0e, 0x30, 0x0e, + 0xdb, 0x0d, 0xda, 0x0d, 0x6a, 0x0d, 0x68, 0x0d, 0xe2, 0x0c, 0xe0, 0x0c, + 0x42, 0x0c, 0x41, 0x0c, 0x8e, 0x0b, 0x8b, 0x0b, 0xc3, 0x0a, 0xc2, 0x0a, + 0xe6, 0x09, 0xe3, 0x09, 0xf3, 0x08, 0xf2, 0x08, 0xee, 0x07, 0xec, 0x07, + 0xda, 0x06, 0xd8, 0x06, 0xb0, 0x05, 0xaf, 0x05, 0x7d, 0x04, 0x79, 0x04, + 0x33, 0x03, 0x32, 0x03, 0xe3, 0x01, 0xe0, 0x01, 0x86, 0x00, 0x83, 0x00, + 0x20, 0xff, 0x1e, 0xff, 0xb8, 0xfd, 0xb6, 0xfd, 0x4f, 0xfc, 0x4e, 0xfc, + 0xeb, 0xfa, 0xea, 0xfa, 0x90, 0xf9, 0x8d, 0xf9, 0x3f, 0xf8, 0x3e, 0xf8, + 0x01, 0xf7, 0x00, 0xf7, 0xd9, 0xf5, 0xd7, 0xf5, 0xc9, 0xf4, 0xc7, 0xf4, + 0xd7, 0xf3, 0xd5, 0xf3, 0x02, 0xf3, 0xff, 0xf2, 0x4e, 0xf2, 0x4c, 0xf2, + 0xba, 0xf1, 0xb7, 0xf1, 0x48, 0xf1, 0x43, 0xf1, 0xf9, 0xf0, 0xf8, 0xf0, + 0xcc, 0xf0, 0xc8, 0xf0, 0xbf, 0xf0, 0xbc, 0xf0, 0xd0, 0xf0, 0xcd, 0xf0, + 0x00, 0xf1, 0xfd, 0xf0, 0x4c, 0xf1, 0x4a, 0xf1, 0xb2, 0xf1, 0xaf, 0xf1, + 0x33, 0xf2, 0x32, 0xf2, 0xca, 0xf2, 0xc7, 0xf2, 0x7a, 0xf3, 0x78, 0xf3, + 0x3e, 0xf4, 0x3b, 0xf4, 0x17, 0xf5, 0x15, 0xf5, 0x04, 0xf6, 0x02, 0xf6, + 0x03, 0xf7, 0x00, 0xf7, 0x13, 0xf8, 0x11, 0xf8, 0x34, 0xf9, 0x33, 0xf9, + 0x65, 0xfa, 0x60, 0xfa, 0xa0, 0xfb, 0x9f, 0xfb, 0xe7, 0xfc, 0xe4, 0xfc, + 0x38, 0xfe, 0x36, 0xfe, 0x92, 0xff, 0x8f, 0xff, 0xf0, 0x00, 0xee, 0x00, + 0x50, 0x02, 0x4b, 0x02, 0xad, 0x03, 0xab, 0x03, 0x06, 0x05, 0x03, 0x05, + 0x53, 0x06, 0x51, 0x06, 0x93, 0x07, 0x8e, 0x07, 0xc3, 0x08, 0xc1, 0x08, + 0xdd, 0x09, 0xdb, 0x09, 0xe2, 0x0a, 0xde, 0x0a, 0xc9, 0x0b, 0xc8, 0x0b, + 0x96, 0x0c, 0x91, 0x0c, 0x44, 0x0d, 0x42, 0x0d, 0xd2, 0x0d, 0xd1, 0x0d, + 0x44, 0x0e, 0x40, 0x0e, 0x93, 0x0e, 0x91, 0x0e, 0xc3, 0x0e, 0xc1, 0x0e, + 0xd8, 0x0e, 0xd5, 0x0e, 0xca, 0x0e, 0xc7, 0x0e, 0xa6, 0x0e, 0xa3, 0x0e, + 0x5d, 0x0e, 0x59, 0x0e, 0x00, 0x0e, 0xff, 0x0d, 0x88, 0x0d, 0x85, 0x0d, + 0xf7, 0x0c, 0xf4, 0x0c, 0x4f, 0x0c, 0x4d, 0x0c, 0x8e, 0x0b, 0x8b, 0x0b, + 0xbd, 0x0a, 0xb8, 0x0a, 0xcd, 0x09, 0xcc, 0x09, 0xd3, 0x08, 0xce, 0x08, + 0xc2, 0x07, 0xc2, 0x07, 0xa3, 0x06, 0x9d, 0x06, 0x73, 0x05, 0x71, 0x05, + 0x35, 0x04, 0x32, 0x04, 0xed, 0x02, 0xe8, 0x02, 0x9b, 0x01, 0x99, 0x01, + 0x43, 0x00, 0x3f, 0x00, 0xeb, 0xfe, 0xe8, 0xfe, 0x91, 0xfd, 0x8e, 0xfd, + 0x40, 0xfc, 0x3d, 0xfc, 0xf6, 0xfa, 0xf2, 0xfa, 0xba, 0xf9, 0xb8, 0xf9, + 0x90, 0xf8, 0x8d, 0xf8, 0x75, 0xf7, 0x74, 0xf7, 0x77, 0xf6, 0x74, 0xf6, + 0x8e, 0xf5, 0x8b, 0xf5, 0xc1, 0xf4, 0xbe, 0xf4, 0x11, 0xf4, 0x0c, 0xf4, + 0x77, 0xf3, 0x76, 0xf3, 0x05, 0xf3, 0x01, 0xf3, 0xa8, 0xf2, 0xa6, 0xf2, + 0x6d, 0xf2, 0x69, 0xf2, 0x4c, 0xf2, 0x4a, 0xf2, 0x4b, 0xf2, 0x48, 0xf2, + 0x64, 0xf2, 0x61, 0xf2, 0x98, 0xf2, 0x96, 0xf2, 0xe7, 0xf2, 0xe4, 0xf2, + 0x4c, 0xf3, 0x49, 0xf3, 0xcd, 0xf3, 0xc9, 0xf3, 0x61, 0xf4, 0x5e, 0xf4, + 0x0f, 0xf5, 0x0c, 0xf5, 0xcd, 0xf5, 0xca, 0xf5, 0xa2, 0xf6, 0xa0, 0xf6, + 0x8b, 0xf7, 0x88, 0xf7, 0x83, 0xf8, 0x7f, 0xf8, 0x8e, 0xf9, 0x8c, 0xf9, + 0xa3, 0xfa, 0x9e, 0xfa, 0xc8, 0xfb, 0xc7, 0xfb, 0xf6, 0xfc, 0xf2, 0xfc, + 0x2b, 0xfe, 0x29, 0xfe, 0x6b, 0xff, 0x67, 0xff, 0xac, 0x00, 0xaa, 0x00, + 0xf0, 0x01, 0xeb, 0x01, 0x2d, 0x03, 0x2b, 0x03, 0x67, 0x04, 0x63, 0x04, + 0x92, 0x05, 0x90, 0x05, 0xb1, 0x06, 0xae, 0x06, 0xc0, 0x07, 0xbd, 0x07, + 0xb9, 0x08, 0xb8, 0x08, 0xa1, 0x09, 0x9e, 0x09, 0x6a, 0x0a, 0x68, 0x0a, + 0x1c, 0x0b, 0x1c, 0x0b, 0xb4, 0x0b, 0xb0, 0x0b, 0x2c, 0x0c, 0x2c, 0x0c, + 0x8d, 0x0c, 0x8a, 0x0c, 0xcd, 0x0c, 0xcb, 0x0c, 0xf4, 0x0c, 0xf1, 0x0c, + 0xfb, 0x0c, 0xf8, 0x0c, 0xe8, 0x0c, 0xe4, 0x0c, 0xba, 0x0c, 0xb9, 0x0c, + 0x73, 0x0c, 0x6f, 0x0c, 0x14, 0x0c, 0x12, 0x0c, 0x9c, 0x0b, 0x98, 0x0b, + 0x0c, 0x0b, 0x09, 0x0b, 0x67, 0x0a, 0x65, 0x0a, 0xac, 0x09, 0xa9, 0x09, + 0xe0, 0x08, 0xde, 0x08, 0xfd, 0x07, 0xfc, 0x07, 0x0d, 0x07, 0x09, 0x07, + 0x0a, 0x06, 0x08, 0x06, 0xf8, 0x04, 0xf7, 0x04, 0xdc, 0x03, 0xd8, 0x03, + 0xb1, 0x02, 0xb0, 0x02, 0x81, 0x01, 0x7e, 0x01, 0x48, 0x00, 0x45, 0x00, + 0x0d, 0xff, 0x0c, 0xff, 0xd7, 0xfd, 0xd4, 0xfd, 0xa1, 0xfc, 0x9e, 0xfc, + 0x77, 0xfb, 0x75, 0xfb, 0x57, 0xfa, 0x54, 0xfa, 0x45, 0xf9, 0x43, 0xf9, + 0x49, 0xf8, 0x46, 0xf8, 0x5c, 0xf7, 0x59, 0xf7, 0x88, 0xf6, 0x87, 0xf6, + 0xce, 0xf5, 0xcb, 0xf5, 0x28, 0xf5, 0x25, 0xf5, 0xa2, 0xf4, 0xa1, 0xf4, + 0x34, 0xf4, 0x2f, 0xf4, 0xe1, 0xf3, 0xdf, 0xf3, 0xaa, 0xf3, 0xa8, 0xf3, + 0x8e, 0xf3, 0x8a, 0xf3, 0x8c, 0xf3, 0x8b, 0xf3, 0xa6, 0xf3, 0xa2, 0xf3, + 0xd9, 0xf3, 0xd6, 0xf3, 0x22, 0xf4, 0x1f, 0xf4, 0x85, 0xf4, 0x82, 0xf4, + 0xfe, 0xf4, 0xfd, 0xf4, 0x90, 0xf5, 0x8d, 0xf5, 0x36, 0xf6, 0x34, 0xf6, + 0xf1, 0xf6, 0xee, 0xf6, 0xc0, 0xf7, 0xc0, 0xf7, 0xa4, 0xf8, 0xa1, 0xf8, + 0x97, 0xf9, 0x96, 0xf9, 0x9d, 0xfa, 0x9a, 0xfa, 0xb0, 0xfb, 0xaf, 0xfb, + 0xd2, 0xfc, 0xcf, 0xfc, 0x00, 0xfe, 0xfd, 0xfd, 0x34, 0xff, 0x31, 0xff, + 0x6f, 0x00, 0x6b, 0x00, 0xad, 0x01, 0xab, 0x01, 0xe6, 0x02, 0xe4, 0x02, + 0x1b, 0x04, 0x1a, 0x04, 0x47, 0x05, 0x44, 0x05, 0x64, 0x06, 0x62, 0x06, + 0x74, 0x07, 0x70, 0x07, 0x6b, 0x08, 0x69, 0x08, 0x4f, 0x09, 0x4e, 0x09, + 0x1b, 0x0a, 0x19, 0x0a, 0xcc, 0x0a, 0xca, 0x0a, 0x63, 0x0b, 0x60, 0x0b, + 0xdb, 0x0b, 0xda, 0x0b, 0x3a, 0x0c, 0x37, 0x0c, 0x7b, 0x0c, 0x7a, 0x0c, + 0xa1, 0x0c, 0xa0, 0x0c, 0xae, 0x0c, 0xac, 0x0c, 0xa0, 0x0c, 0x9f, 0x0c, + 0x7b, 0x0c, 0x78, 0x0c, 0x3c, 0x0c, 0x3a, 0x0c, 0xe4, 0x0b, 0xe3, 0x0b, + 0x7b, 0x0b, 0x77, 0x0b, 0xf7, 0x0a, 0xf7, 0x0a, 0x62, 0x0a, 0x5e, 0x0a, + 0xb6, 0x09, 0xb4, 0x09, 0xf8, 0x08, 0xf6, 0x08, 0x26, 0x08, 0x22, 0x08, + 0x41, 0x07, 0x40, 0x07, 0x4c, 0x06, 0x49, 0x06, 0x45, 0x05, 0x43, 0x05, + 0x30, 0x04, 0x2e, 0x04, 0x0e, 0x03, 0x0d, 0x03, 0xdf, 0x01, 0xda, 0x01, + 0xa5, 0x00, 0xa4, 0x00, 0x63, 0xff, 0x60, 0xff, 0x1d, 0xfe, 0x1a, 0xfe, + 0xd7, 0xfc, 0xd5, 0xfc, 0x93, 0xfb, 0x8f, 0xfb, 0x55, 0xfa, 0x54, 0xfa, + 0x24, 0xf9, 0x20, 0xf9, 0x00, 0xf8, 0xfe, 0xf7, 0xf0, 0xf6, 0xec, 0xf6, + 0xf4, 0xf5, 0xf4, 0xf5, 0x14, 0xf5, 0x0f, 0xf5, 0x4c, 0xf4, 0x4b, 0xf4, + 0xa4, 0xf3, 0xa0, 0xf3, 0x13, 0xf3, 0x10, 0xf3, 0xa7, 0xf2, 0xa5, 0xf2, + 0x53, 0xf2, 0x50, 0xf2, 0x22, 0xf2, 0x20, 0xf2, 0x0e, 0xf2, 0x0c, 0xf2, + 0x17, 0xf2, 0x15, 0xf2, 0x3f, 0xf2, 0x3a, 0xf2, 0x7c, 0xf2, 0x7c, 0xf2, + 0xdb, 0xf2, 0xd6, 0xf2, 0x4c, 0xf3, 0x4c, 0xf3, 0xdb, 0xf3, 0xd7, 0xf3, + 0x7c, 0xf4, 0x79, 0xf4, 0x36, 0xf5, 0x33, 0xf5, 0x03, 0xf6, 0x00, 0xf6, + 0xe6, 0xf6, 0xe4, 0xf6, 0xdc, 0xf7, 0xd9, 0xf7, 0xe5, 0xf8, 0xe2, 0xf8, + 0xfe, 0xf9, 0xfb, 0xf9, 0x28, 0xfb, 0x26, 0xfb, 0x5f, 0xfc, 0x5b, 0xfc, + 0xa3, 0xfd, 0xa1, 0xfd, 0xf4, 0xfe, 0xf1, 0xfe, 0x4b, 0x00, 0x46, 0x00, + 0xa8, 0x01, 0xa6, 0x01, 0x02, 0x03, 0x01, 0x03, 0x5c, 0x04, 0x59, 0x04, + 0xaa, 0x05, 0xa9, 0x05, 0xed, 0x06, 0xea, 0x06, 0x21, 0x08, 0x1e, 0x08, + 0x3d, 0x09, 0x3b, 0x09, 0x48, 0x0a, 0x45, 0x0a, 0x36, 0x0b, 0x33, 0x0b, + 0x09, 0x0c, 0x06, 0x0c, 0xbf, 0x0c, 0xbb, 0x0c, 0x55, 0x0d, 0x54, 0x0d, + 0xcf, 0x0d, 0xcc, 0x0d, 0x2a, 0x0e, 0x27, 0x0e, 0x65, 0x0e, 0x63, 0x0e, + 0x86, 0x0e, 0x81, 0x0e, 0x85, 0x0e, 0x85, 0x0e, 0x6e, 0x0e, 0x6b, 0x0e, + 0x38, 0x0e, 0x35, 0x0e, 0xeb, 0x0d, 0xe8, 0x0d, 0x82, 0x0d, 0x7d, 0x0d, + 0x04, 0x0d, 0x01, 0x0d, 0x6d, 0x0c, 0x6b, 0x0c, 0xc3, 0x0b, 0xbe, 0x0b, + 0x01, 0x0b, 0x00, 0x0b, 0x2d, 0x0a, 0x29, 0x0a, 0x43, 0x09, 0x41, 0x09, + 0x47, 0x08, 0x43, 0x08, 0x39, 0x07, 0x36, 0x07, 0x1b, 0x06, 0x17, 0x06, + 0xeb, 0x04, 0xea, 0x04, 0xaf, 0x03, 0xaa, 0x03, 0x62, 0x02, 0x61, 0x02, + 0x0c, 0x01, 0x08, 0x01, 0xad, 0xff, 0xac, 0xff, 0x47, 0xfe, 0x45, 0xfe, + 0xe1, 0xfc, 0xdf, 0xfc, 0x80, 0xfb, 0x7c, 0xfb, 0x20, 0xfa, 0x1d, 0xfa, + 0xcd, 0xf8, 0xcc, 0xf8, 0x8a, 0xf7, 0x87, 0xf7, 0x58, 0xf6, 0x56, 0xf6, + 0x40, 0xf5, 0x3e, 0xf5, 0x41, 0xf4, 0x3f, 0xf4, 0x60, 0xf3, 0x5e, 0xf3, + 0x9e, 0xf2, 0x9c, 0xf2, 0xfa, 0xf1, 0xf9, 0xf1, 0x7b, 0xf1, 0x78, 0xf1, + 0x1b, 0xf1, 0x1a, 0xf1, 0xdd, 0xf0, 0xd9, 0xf0, 0xc2, 0xf0, 0xc1, 0xf0, + 0xc5, 0xf0, 0xc2, 0xf0, 0xe9, 0xf0, 0xe7, 0xf0, 0x28, 0xf1, 0x25, 0xf1, + 0x83, 0xf1, 0x84, 0xf1, 0xfb, 0xf1, 0xf8, 0xf1, 0x8a, 0xf2, 0x86, 0xf2, + 0x2e, 0xf3, 0x2d, 0xf3, 0xea, 0xf3, 0xe6, 0xf3, 0xba, 0xf4, 0xb9, 0xf4, + 0x9f, 0xf5, 0x9e, 0xf5, 0x99, 0xf6, 0x96, 0xf6, 0xa3, 0xf7, 0xa0, 0xf7, + 0xbe, 0xf8, 0xbd, 0xf8, 0xe9, 0xf9, 0xe4, 0xf9, 0x20, 0xfb, 0x20, 0xfb, + 0x67, 0xfc, 0x61, 0xfc, 0xb2, 0xfd, 0xb1, 0xfd, 0x08, 0xff, 0x06, 0xff, + 0x66, 0x00, 0x63, 0x00, 0xc4, 0x01, 0xc4, 0x01, 0x27, 0x03, 0x24, 0x03, + 0x81, 0x04, 0x7e, 0x04, 0xd5, 0x05, 0xd2, 0x05, 0x18, 0x07, 0x16, 0x07, + 0x50, 0x08, 0x4d, 0x08, 0x72, 0x09, 0x6f, 0x09, 0x7d, 0x0a, 0x7b, 0x0a, + 0x71, 0x0b, 0x6e, 0x0b, 0x47, 0x0c, 0x44, 0x0c, 0x00, 0x0d, 0xff, 0x0c, + 0x9a, 0x0d, 0x97, 0x0d, 0x17, 0x0e, 0x14, 0x0e, 0x73, 0x0e, 0x71, 0x0e, + 0xb1, 0x0e, 0xaf, 0x0e, 0xd0, 0x0e, 0xcc, 0x0e, 0xd1, 0x0e, 0xcf, 0x0e, + 0xb6, 0x0e, 0xb4, 0x0e, 0x7e, 0x0e, 0x7c, 0x0e, 0x2a, 0x0e, 0x28, 0x0e, + 0xbd, 0x0d, 0xbb, 0x0d, 0x37, 0x0d, 0x33, 0x0d, 0x98, 0x0c, 0x94, 0x0c, + 0xdf, 0x0b, 0xdf, 0x0b, 0x14, 0x0b, 0x10, 0x0b, 0x32, 0x0a, 0x32, 0x0a, + 0x3e, 0x09, 0x3c, 0x09, 0x37, 0x08, 0x34, 0x08, 0x1b, 0x07, 0x1b, 0x07, + 0xf5, 0x05, 0xf2, 0x05, 0xbc, 0x04, 0xba, 0x04, 0x77, 0x03, 0x77, 0x03, + 0x2c, 0x02, 0x27, 0x02, 0xd3, 0x00, 0xd5, 0x00, 0x7e, 0xff, 0x7a, 0xff, + 0x22, 0xfe, 0x1f, 0xfe, 0xcd, 0xfc, 0xcb, 0xfc, 0x7f, 0xfb, 0x7b, 0xfb, + 0x3a, 0xfa, 0x39, 0xfa, 0x07, 0xf9, 0x05, 0xf9, 0xe5, 0xf7, 0xe2, 0xf7, + 0xdb, 0xf6, 0xd9, 0xf6, 0xe6, 0xf5, 0xe3, 0xf5, 0x10, 0xf5, 0x0d, 0xf5, + 0x4f, 0xf4, 0x4d, 0xf4, 0xae, 0xf3, 0xad, 0xf3, 0x2d, 0xf3, 0x29, 0xf3, + 0xc1, 0xf2, 0xc2, 0xf2, 0x7c, 0xf2, 0x78, 0xf2, 0x4d, 0xf2, 0x4c, 0xf2, + 0x3f, 0xf2, 0x3d, 0xf2, 0x4e, 0xf2, 0x4b, 0xf2, 0x73, 0xf2, 0x72, 0xf2, + 0xb9, 0xf2, 0xb8, 0xf2, 0x14, 0xf3, 0x13, 0xf3, 0x8c, 0xf3, 0x88, 0xf3, + 0x14, 0xf4, 0x16, 0xf4, 0xba, 0xf4, 0xb6, 0xf4, 0x6f, 0xf5, 0x6f, 0xf5, + 0x3e, 0xf6, 0x39, 0xf6, 0x1c, 0xf7, 0x19, 0xf7, 0x0e, 0xf8, 0x0d, 0xf8, + 0x12, 0xf9, 0x0f, 0xf9, 0x21, 0xfa, 0x1f, 0xfa, 0x43, 0xfb, 0x41, 0xfb, + 0x6b, 0xfc, 0x67, 0xfc, 0x9f, 0xfd, 0x9f, 0xfd, 0xd9, 0xfe, 0xd7, 0xfe, + 0x1b, 0x00, 0x19, 0x00, 0x5c, 0x01, 0x5b, 0x01, 0x9e, 0x02, 0x9b, 0x02, + 0xd9, 0x03, 0xd8, 0x03, 0x0c, 0x05, 0x09, 0x05, 0x31, 0x06, 0x31, 0x06, + 0x49, 0x07, 0x46, 0x07, 0x4e, 0x08, 0x4c, 0x08, 0x3d, 0x09, 0x3a, 0x09, + 0x15, 0x0a, 0x13, 0x0a, 0xd5, 0x0a, 0xd2, 0x0a, 0x76, 0x0b, 0x73, 0x0b, + 0xff, 0x0b, 0xfe, 0x0b, 0x6a, 0x0c, 0x67, 0x0c, 0xb8, 0x0c, 0xb8, 0x0c, + 0xef, 0x0c, 0xeb, 0x0c, 0x04, 0x0d, 0x02, 0x0d, 0xff, 0x0c, 0xfc, 0x0c, + 0xdf, 0x0c, 0xdd, 0x0c, 0xa3, 0x0c, 0xa0, 0x0c, 0x51, 0x0c, 0x4e, 0x0c, + 0xe2, 0x0b, 0xe1, 0x0b, 0x5f, 0x0b, 0x5c, 0x0b, 0xc3, 0x0a, 0xc2, 0x0a, + 0x13, 0x0a, 0x0f, 0x0a, 0x4e, 0x09, 0x4b, 0x09, 0x75, 0x08, 0x73, 0x08, + 0x8b, 0x07, 0x88, 0x07, 0x91, 0x06, 0x8d, 0x06, 0x83, 0x05, 0x83, 0x05, + 0x6e, 0x04, 0x6a, 0x04, 0x46, 0x03, 0x45, 0x03, 0x18, 0x02, 0x14, 0x02, + 0xe2, 0x00, 0xe0, 0x00, 0xa9, 0xff, 0xa5, 0xff, 0x6f, 0xfe, 0x6d, 0xfe, + 0x38, 0xfd, 0x35, 0xfd, 0x0a, 0xfc, 0x06, 0xfc, 0xe2, 0xfa, 0xe1, 0xfa, + 0xca, 0xf9, 0xc6, 0xf9, 0xc1, 0xf8, 0xbf, 0xf8, 0xcc, 0xf7, 0xc8, 0xf7, + 0xef, 0xf6, 0xea, 0xf6, 0x23, 0xf6, 0x22, 0xf6, 0x76, 0xf5, 0x72, 0xf5, + 0xe1, 0xf4, 0xdf, 0xf4, 0x65, 0xf4, 0x63, 0xf4, 0x06, 0xf4, 0x04, 0xf4, + 0xc2, 0xf3, 0xbf, 0xf3, 0x97, 0xf3, 0x95, 0xf3, 0x89, 0xf3, 0x87, 0xf3, + 0x93, 0xf3, 0x90, 0xf3, 0xba, 0xf3, 0xb9, 0xf3, 0xf7, 0xf3, 0xf4, 0xf3, + 0x4d, 0xf4, 0x4c, 0xf4, 0xbc, 0xf4, 0xb8, 0xf4, 0x40, 0xf5, 0x3f, 0xf5, + 0xdc, 0xf5, 0xd9, 0xf5, 0x8b, 0xf6, 0x89, 0xf6, 0x52, 0xf7, 0x50, 0xf7, + 0x29, 0xf8, 0x26, 0xf8, 0x14, 0xf9, 0x13, 0xf9, 0x11, 0xfa, 0x0d, 0xfa, + 0x1b, 0xfb, 0x1b, 0xfb, 0x35, 0xfc, 0x30, 0xfc, 0x5c, 0xfd, 0x59, 0xfd, + 0x8a, 0xfe, 0x8a, 0xfe, 0xc3, 0xff, 0xbf, 0xff, 0xfe, 0x00, 0xfc, 0x00, + 0x37, 0x02, 0x36, 0x02, 0x72, 0x03, 0x6f, 0x03, 0x9f, 0x04, 0x9d, 0x04, + 0xc7, 0x05, 0xc6, 0x05, 0xdd, 0x06, 0xda, 0x06, 0xe4, 0x07, 0xe2, 0x07, + 0xd4, 0x08, 0xd0, 0x08, 0xad, 0x09, 0xab, 0x09, 0x70, 0x0a, 0x6e, 0x0a, + 0x17, 0x0b, 0x14, 0x0b, 0xa1, 0x0b, 0xa0, 0x0b, 0x11, 0x0c, 0x0c, 0x0c, + 0x61, 0x0c, 0x60, 0x0c, 0x96, 0x0c, 0x95, 0x0c, 0xb3, 0x0c, 0xb0, 0x0c, + 0xb2, 0x0c, 0xb0, 0x0c, 0x9a, 0x0c, 0x96, 0x0c, 0x67, 0x0c, 0x66, 0x0c, + 0x20, 0x0c, 0x1d, 0x0c, 0xbe, 0x0b, 0xbe, 0x0b, 0x4a, 0x0b, 0x46, 0x0b, + 0xbc, 0x0a, 0xbc, 0x0a, 0x20, 0x0a, 0x1b, 0x0a, 0x66, 0x09, 0x67, 0x09, + 0xa1, 0x08, 0x9e, 0x08, 0xc7, 0x07, 0xc7, 0x07, 0xd9, 0x06, 0xd6, 0x06, + 0xdd, 0x05, 0xda, 0x05, 0xce, 0x04, 0xcc, 0x04, 0xb5, 0x03, 0xb3, 0x03, + 0x8c, 0x02, 0x8a, 0x02, 0x57, 0x01, 0x57, 0x01, 0x1c, 0x00, 0x1c, 0x00, + 0xd9, 0xfe, 0xd5, 0xfe, 0x94, 0xfd, 0x93, 0xfd, 0x4e, 0xfc, 0x4b, 0xfc, + 0x0e, 0xfb, 0x0e, 0xfb, 0xda, 0xf9, 0xd7, 0xf9, 0xaf, 0xf8, 0xac, 0xf8, + 0x94, 0xf7, 0x94, 0xf7, 0x90, 0xf6, 0x8b, 0xf6, 0x9f, 0xf5, 0x9e, 0xf5, + 0xca, 0xf4, 0xc7, 0xf4, 0x0f, 0xf4, 0x0d, 0xf4, 0x72, 0xf3, 0x70, 0xf3, + 0xf1, 0xf2, 0xf0, 0xf2, 0x91, 0xf2, 0x8e, 0xf2, 0x4d, 0xf2, 0x4a, 0xf2, + 0x28, 0xf2, 0x25, 0xf2, 0x20, 0xf2, 0x1d, 0xf2, 0x36, 0xf2, 0x33, 0xf2, + 0x65, 0xf2, 0x63, 0xf2, 0xb0, 0xf2, 0xae, 0xf2, 0x14, 0xf3, 0x12, 0xf3, + 0x90, 0xf3, 0x8e, 0xf3, 0x24, 0xf4, 0x24, 0xf4, 0xd1, 0xf4, 0xce, 0xf4, + 0x90, 0xf5, 0x8f, 0xf5, 0x68, 0xf6, 0x64, 0xf6, 0x50, 0xf7, 0x4e, 0xf7, + 0x4b, 0xf8, 0x49, 0xf8, 0x5c, 0xf9, 0x59, 0xf9, 0x7a, 0xfa, 0x77, 0xfa, + 0xa6, 0xfb, 0xa5, 0xfb, 0xe5, 0xfc, 0xe1, 0xfc, 0x2a, 0xfe, 0x2a, 0xfe, + 0x7f, 0xff, 0x7c, 0xff, 0xd4, 0x00, 0xd0, 0x00, 0x2d, 0x02, 0x2b, 0x02, + 0x86, 0x03, 0x83, 0x03, 0xd7, 0x04, 0xd3, 0x04, 0x1f, 0x06, 0x1d, 0x06, + 0x58, 0x07, 0x57, 0x07, 0x82, 0x08, 0x7e, 0x08, 0x94, 0x09, 0x93, 0x09, + 0x91, 0x0a, 0x8f, 0x0a, 0x74, 0x0b, 0x71, 0x0b, 0x39, 0x0c, 0x39, 0x0c, + 0xe3, 0x0c, 0xe1, 0x0c, 0x70, 0x0d, 0x6e, 0x0d, 0xdb, 0x0d, 0xda, 0x0d, + 0x2c, 0x0e, 0x29, 0x0e, 0x5a, 0x0e, 0x59, 0x0e, 0x6e, 0x0e, 0x6c, 0x0e, + 0x64, 0x0e, 0x61, 0x0e, 0x3f, 0x0e, 0x3e, 0x0e, 0x01, 0x0e, 0xff, 0x0d, + 0xa8, 0x0d, 0xa6, 0x0d, 0x39, 0x0d, 0x38, 0x0d, 0xb1, 0x0c, 0xae, 0x0c, + 0x13, 0x0c, 0x13, 0x0c, 0x61, 0x0b, 0x5f, 0x0b, 0x98, 0x0a, 0x95, 0x0a, + 0xbd, 0x09, 0xbb, 0x09, 0xcc, 0x08, 0xca, 0x08, 0xcb, 0x07, 0xc9, 0x07, + 0xb6, 0x06, 0xb5, 0x06, 0x93, 0x05, 0x91, 0x05, 0x60, 0x04, 0x5f, 0x04, + 0x1f, 0x03, 0x1c, 0x03, 0xd3, 0x01, 0xd1, 0x01, 0x7b, 0x00, 0x7a, 0x00, + 0x1d, 0xff, 0x1b, 0xff, 0xbb, 0xfd, 0xb9, 0xfd, 0x57, 0xfc, 0x56, 0xfc, + 0xfc, 0xfa, 0xfa, 0xfa, 0xa3, 0xf9, 0xa3, 0xf9, 0x5d, 0xf8, 0x5a, 0xf8, + 0x22, 0xf7, 0x20, 0xf7, 0x00, 0xf6, 0xfd, 0xf5, 0xf2, 0xf4, 0xef, 0xf4, + 0xfe, 0xf3, 0xfc, 0xf3, 0x2c, 0xf3, 0x29, 0xf3, 0x75, 0xf2, 0x73, 0xf2, + 0xe2, 0xf1, 0xe0, 0xf1, 0x6d, 0xf1, 0x68, 0xf1, 0x1c, 0xf1, 0x1a, 0xf1, + 0xe9, 0xf0, 0xe6, 0xf0, 0xd8, 0xf0, 0xd6, 0xf0, 0xe9, 0xf0, 0xe8, 0xf0, + 0x15, 0xf1, 0x13, 0xf1, 0x62, 0xf1, 0x5f, 0xf1, 0xc3, 0xf1, 0xc2, 0xf1, + 0x44, 0xf2, 0x40, 0xf2, 0xdb, 0xf2, 0xd9, 0xf2, 0x89, 0xf3, 0x85, 0xf3, + 0x4c, 0xf4, 0x4b, 0xf4, 0x25, 0xf5, 0x21, 0xf5, 0x14, 0xf6, 0x11, 0xf6, + 0x11, 0xf7, 0x0f, 0xf7, 0x24, 0xf8, 0x21, 0xf8, 0x43, 0xf9, 0x43, 0xf9, + 0x75, 0xfa, 0x72, 0xfa, 0xb2, 0xfb, 0xb1, 0xfb, 0xfb, 0xfc, 0xf8, 0xfc, + 0x4c, 0xfe, 0x49, 0xfe, 0xa4, 0xff, 0xa2, 0xff, 0x03, 0x01, 0xff, 0x00, + 0x62, 0x02, 0x60, 0x02, 0xbc, 0x03, 0xb9, 0x03, 0x14, 0x05, 0x13, 0x05, + 0x5d, 0x06, 0x5b, 0x06, 0x9c, 0x07, 0x99, 0x07, 0xc3, 0x08, 0xc4, 0x08, + 0xdc, 0x09, 0xd8, 0x09, 0xd8, 0x0a, 0xd8, 0x0a, 0xbe, 0x0b, 0xbb, 0x0b, + 0x86, 0x0c, 0x84, 0x0c, 0x31, 0x0d, 0x2f, 0x0d, 0xbc, 0x0d, 0xba, 0x0d, + 0x2b, 0x0e, 0x2a, 0x0e, 0x7a, 0x0e, 0x76, 0x0e, 0xaa, 0x0e, 0xa8, 0x0e, + 0xbb, 0x0e, 0xb8, 0x0e, 0xad, 0x0e, 0xac, 0x0e, 0x87, 0x0e, 0x84, 0x0e, + 0x40, 0x0e, 0x3f, 0x0e, 0xe3, 0x0d, 0xe0, 0x0d, 0x6a, 0x0d, 0x6a, 0x0d, + 0xda, 0x0c, 0xd5, 0x0c, 0x32, 0x0c, 0x2f, 0x0c, 0x72, 0x0b, 0x70, 0x0b, + 0x9d, 0x0a, 0x9a, 0x0a, 0xb4, 0x09, 0xb1, 0x09, 0xb6, 0x08, 0xb4, 0x08, + 0xa8, 0x07, 0xa5, 0x07, 0x88, 0x06, 0x84, 0x06, 0x5a, 0x05, 0x59, 0x05, + 0x1d, 0x04, 0x19, 0x04, 0xd4, 0x02, 0xd2, 0x02, 0x82, 0x01, 0x80, 0x01, + 0x2c, 0x00, 0x29, 0x00, 0xd2, 0xfe, 0xd0, 0xfe, 0x7c, 0xfd, 0x79, 0xfd, + 0x2a, 0xfc, 0x28, 0xfc, 0xdf, 0xfa, 0xdd, 0xfa, 0xa4, 0xf9, 0xa1, 0xf9, + 0x78, 0xf8, 0x77, 0xf8, 0x62, 0xf7, 0x60, 0xf7, 0x62, 0xf6, 0x60, 0xf6, + 0x7c, 0xf5, 0x79, 0xf5, 0xae, 0xf4, 0xae, 0xf4, 0xfe, 0xf3, 0xfb, 0xf3, + 0x6b, 0xf3, 0x69, 0xf3, 0xf4, 0xf2, 0xf4, 0xf2, 0x9e, 0xf2, 0x99, 0xf2, + 0x62, 0xf2, 0x61, 0xf2, 0x44, 0xf2, 0x42, 0xf2, 0x45, 0xf2, 0x42, 0xf2, + 0x5d, 0xf2, 0x5d, 0xf2, 0x98, 0xf2, 0x93, 0xf2, 0xe3, 0xf2, 0xe3, 0xf2, + 0x4f, 0xf3, 0x4c, 0xf3, 0xce, 0xf3, 0xcd, 0xf3, 0x67, 0xf4, 0x64, 0xf4, + 0x13, 0xf5, 0x13, 0xf5, 0xd4, 0xf5, 0xd3, 0xf5, 0xac, 0xf6, 0xab, 0xf6, + 0x94, 0xf7, 0x94, 0xf7, 0x91, 0xf8, 0x8e, 0xf8, 0x9c, 0xf9, 0x9a, 0xf9, + 0xb2, 0xfa, 0xb3, 0xfa, 0xdb, 0xfb, 0xd6, 0xfb, 0x06, 0xfd, 0x06, 0xfd, + 0x41, 0xfe, 0x3f, 0xfe, 0x7e, 0xff, 0x7c, 0xff, 0xc3, 0x00, 0xc0, 0x00, + 0x02, 0x02, 0x01, 0x02, 0x42, 0x03, 0x41, 0x03, 0x7a, 0x04, 0x78, 0x04, + 0xa6, 0x05, 0xa5, 0x05, 0xc7, 0x06, 0xc4, 0x06, 0xd4, 0x07, 0xd3, 0x07, + 0xce, 0x08, 0xce, 0x08, 0xb3, 0x09, 0xb0, 0x09, 0x7f, 0x0a, 0x7f, 0x0a, + 0x30, 0x0b, 0x2d, 0x0b, 0xc6, 0x0b, 0xc6, 0x0b, 0x42, 0x0c, 0x41, 0x0c, + 0xa0, 0x0c, 0x9f, 0x0c, 0xe2, 0x0c, 0xe1, 0x0c, 0x07, 0x0d, 0x06, 0x0d, + 0x11, 0x0d, 0x0e, 0x0d, 0xfd, 0x0c, 0xfb, 0x0c, 0xce, 0x0c, 0xce, 0x0c, + 0x89, 0x0c, 0x86, 0x0c, 0x24, 0x0c, 0x26, 0x0c, 0xb0, 0x0b, 0xad, 0x0b, + 0x1e, 0x0b, 0x1e, 0x0b, 0x78, 0x0a, 0x77, 0x0a, 0xbd, 0x09, 0xbb, 0x09, + 0xec, 0x08, 0xeb, 0x08, 0x0a, 0x08, 0x08, 0x08, 0x14, 0x07, 0x12, 0x07, + 0x11, 0x06, 0x10, 0x06, 0xfd, 0x04, 0xfb, 0x04, 0xdc, 0x03, 0xda, 0x03, + 0xb0, 0x02, 0xaf, 0x02, 0x7c, 0x01, 0x7b, 0x01, 0x42, 0x00, 0x42, 0x00, + 0x06, 0xff, 0x05, 0xff, 0xcb, 0xfd, 0xc9, 0xfd, 0x96, 0xfc, 0x96, 0xfc, + 0x69, 0xfb, 0x67, 0xfb, 0x48, 0xfa, 0x48, 0xfa, 0x38, 0xf9, 0x34, 0xf9, + 0x34, 0xf8, 0x35, 0xf8, 0x4a, 0xf7, 0x47, 0xf7, 0x74, 0xf6, 0x73, 0xf6, + 0xb9, 0xf5, 0xb7, 0xf5, 0x17, 0xf5, 0x15, 0xf5, 0x8e, 0xf4, 0x8c, 0xf4, + 0x1e, 0xf4, 0x1d, 0xf4, 0xce, 0xf3, 0xcc, 0xf3, 0x95, 0xf3, 0x92, 0xf3, + 0x79, 0xf3, 0x78, 0xf3, 0x75, 0xf3, 0x74, 0xf3, 0x90, 0xf3, 0x8f, 0xf3, + 0xc2, 0xf3, 0xc0, 0xf3, 0x0c, 0xf4, 0x0a, 0xf4, 0x71, 0xf4, 0x6e, 0xf4, + 0xe8, 0xf4, 0xe7, 0xf4, 0x7b, 0xf5, 0x7b, 0xf5, 0x22, 0xf6, 0x1f, 0xf6, + 0xdd, 0xf6, 0xdd, 0xf6, 0xb0, 0xf7, 0xac, 0xf7, 0x90, 0xf8, 0x8f, 0xf8, + 0x89, 0xf9, 0x87, 0xf9, 0x8a, 0xfa, 0x89, 0xfa, 0xa2, 0xfb, 0xa0, 0xfb, + 0xc1, 0xfc, 0xbe, 0xfc, 0xee, 0xfd, 0xed, 0xfd, 0x26, 0xff, 0x23, 0xff, + 0x5d, 0x00, 0x5b, 0x00, 0xa0, 0x01, 0x9d, 0x01, 0xd7, 0x02, 0xd6, 0x02, + 0x12, 0x04, 0x10, 0x04, 0x3d, 0x05, 0x3c, 0x05, 0x5f, 0x06, 0x5e, 0x06, + 0x71, 0x07, 0x6f, 0x07, 0x6b, 0x08, 0x6a, 0x08, 0x57, 0x09, 0x53, 0x09, + 0x24, 0x0a, 0x24, 0x0a, 0xdd, 0x0a, 0xda, 0x0a, 0x76, 0x0b, 0x75, 0x0b, + 0xf6, 0x0b, 0xf4, 0x0b, 0x58, 0x0c, 0x56, 0x0c, 0x9c, 0x0c, 0x9b, 0x0c, + 0xc7, 0x0c, 0xc7, 0x0c, 0xd6, 0x0c, 0xd3, 0x0c, 0xc9, 0x0c, 0xc9, 0x0c, + 0xa4, 0x0c, 0xa2, 0x0c, 0x65, 0x0c, 0x64, 0x0c, 0x11, 0x0c, 0x11, 0x0c, + 0xa2, 0x0b, 0xa2, 0x0b, 0x22, 0x0b, 0x21, 0x0b, 0x89, 0x0a, 0x88, 0x0a, + 0xdd, 0x09, 0xdb, 0x09, 0x1b, 0x09, 0x1c, 0x09, 0x49, 0x08, 0x48, 0x08, + 0x62, 0x07, 0x62, 0x07, 0x6b, 0x06, 0x6b, 0x06, 0x63, 0x05, 0x61, 0x05, + 0x4c, 0x04, 0x4c, 0x04, 0x2a, 0x03, 0x29, 0x03, 0xf8, 0x01, 0xf6, 0x01, + 0xbd, 0x00, 0xbf, 0x00, 0x7b, 0xff, 0x79, 0xff, 0x33, 0xfe, 0x35, 0xfe, + 0xee, 0xfc, 0xeb, 0xfc, 0xa9, 0xfb, 0xa8, 0xfb, 0x6a, 0xfa, 0x6b, 0xfa, + 0x37, 0xf9, 0x36, 0xf9, 0x13, 0xf8, 0x11, 0xf8, 0x00, 0xf7, 0x00, 0xf7, + 0x04, 0xf6, 0x03, 0xf6, 0x21, 0xf5, 0x1f, 0xf5, 0x55, 0xf4, 0x57, 0xf4, + 0xab, 0xf3, 0xa9, 0xf3, 0x1c, 0xf3, 0x1d, 0xf3, 0xac, 0xf2, 0xaa, 0xf2, + 0x59, 0xf2, 0x5a, 0xf2, 0x23, 0xf2, 0x21, 0xf2, 0x0e, 0xf2, 0x0f, 0xf2, + 0x12, 0xf2, 0x12, 0xf2, 0x36, 0xf2, 0x35, 0xf2, 0x75, 0xf2, 0x75, 0xf2, + 0xcb, 0xf2, 0xca, 0xf2, 0x3e, 0xf3, 0x3e, 0xf3, 0xc4, 0xf3, 0xc5, 0xf3, + 0x69, 0xf4, 0x66, 0xf4, 0x20, 0xf5, 0x20, 0xf5, 0xea, 0xf5, 0xe9, 0xf5, + 0xcf, 0xf6, 0xce, 0xf6, 0xc0, 0xf7, 0xbf, 0xf7, 0xcb, 0xf8, 0xc9, 0xf8, + 0xe2, 0xf9, 0xe2, 0xf9, 0x0a, 0xfb, 0x08, 0xfb, 0x40, 0xfc, 0x42, 0xfc, + 0x86, 0xfd, 0x83, 0xfd, 0xd4, 0xfe, 0xd5, 0xfe, 0x2b, 0x00, 0x2a, 0x00, + 0x86, 0x01, 0x84, 0x01, 0xe0, 0x02, 0xe0, 0x02, 0x36, 0x04, 0x35, 0x04, + 0x85, 0x05, 0x84, 0x05, 0xc7, 0x06, 0xc7, 0x06, 0xf9, 0x07, 0xf9, 0x07, + 0x19, 0x09, 0x18, 0x09, 0x22, 0x0a, 0x22, 0x0a, 0x14, 0x0b, 0x10, 0x0b, + 0xe6, 0x0b, 0xe9, 0x0b, 0xa2, 0x0c, 0xa0, 0x0c, 0x39, 0x0d, 0x3a, 0x0d, + 0xb6, 0x0d, 0xb6, 0x0d, 0x12, 0x0e, 0x11, 0x0e, 0x4f, 0x0e, 0x4f, 0x0e, + 0x72, 0x0e, 0x72, 0x0e, 0x76, 0x0e, 0x74, 0x0e, 0x5d, 0x0e, 0x5e, 0x0e, + 0x2c, 0x0e, 0x2b, 0x0e, 0xdf, 0x0d, 0xde, 0x0d, 0x78, 0x0d, 0x7a, 0x0d, + 0xfc, 0x0c, 0xfa, 0x0c, 0x68, 0x0c, 0x67, 0x0c, 0xbd, 0x0b, 0xbd, 0x0b, + 0xfd, 0x0a, 0xfb, 0x0a, 0x27, 0x0a, 0x29, 0x0a, 0x41, 0x09, 0x40, 0x09, + 0x45, 0x08, 0x45, 0x08, 0x37, 0x07, 0x37, 0x07, 0x1b, 0x06, 0x1b, 0x06, + 0xeb, 0x04, 0xeb, 0x04, 0xb2, 0x03, 0xb0, 0x03, 0x67, 0x02, 0x67, 0x02, + 0x14, 0x01, 0x13, 0x01, 0xb8, 0xff, 0xb8, 0xff, 0x55, 0xfe, 0x55, 0xfe, + 0xf4, 0xfc, 0xf3, 0xfc, 0x94, 0xfb, 0x92, 0xfb, 0x38, 0xfa, 0x38, 0xfa, + 0xea, 0xf8, 0xea, 0xf8, 0xa8, 0xf7, 0xa4, 0xf7, 0x79, 0xf6, 0x7a, 0xf6, + 0x61, 0xf5, 0x5e, 0xf5, 0x61, 0xf4, 0x64, 0xf4, 0x81, 0xf3, 0x7e, 0xf3, + 0xbd, 0xf2, 0xbd, 0xf2, 0x1a, 0xf2, 0x18, 0xf2, 0x97, 0xf1, 0x96, 0xf1, + 0x35, 0xf1, 0x34, 0xf1, 0xf5, 0xf0, 0xf5, 0xf0, 0xd4, 0xf0, 0xd3, 0xf0, + 0xd5, 0xf0, 0xd5, 0xf0, 0xf6, 0xf0, 0xf3, 0xf0, 0x2f, 0xf1, 0x30, 0xf1, + 0x8b, 0xf1, 0x88, 0xf1, 0xfb, 0xf1, 0xfc, 0xf1, 0x8b, 0xf2, 0x8a, 0xf2, + 0x2e, 0xf3, 0x2d, 0xf3, 0xe9, 0xf3, 0xe9, 0xf3, 0xbb, 0xf4, 0xbb, 0xf4, + 0x9f, 0xf5, 0x9e, 0xf5, 0x9a, 0xf6, 0x9a, 0xf6, 0xa5, 0xf7, 0xa4, 0xf7, + 0xc0, 0xf8, 0xbf, 0xf8, 0xed, 0xf9, 0xec, 0xf9, 0x25, 0xfb, 0x25, 0xfb, + 0x6d, 0xfc, 0x6d, 0xfc, 0xba, 0xfd, 0xb9, 0xfd, 0x13, 0xff, 0x13, 0xff, + 0x6f, 0x00, 0x6e, 0x00, 0xcf, 0x01, 0xd0, 0x01, 0x2f, 0x03, 0x2c, 0x03, + 0x86, 0x04, 0x86, 0x04, 0xd7, 0x05, 0xd8, 0x05, 0x1c, 0x07, 0x1a, 0x07, + 0x4c, 0x08, 0x4d, 0x08, 0x6c, 0x09, 0x6a, 0x09, 0x73, 0x0a, 0x73, 0x0a, + 0x62, 0x0b, 0x60, 0x0b, 0x36, 0x0c, 0x35, 0x0c, 0xee, 0x0c, 0xee, 0x0c, + 0x85, 0x0d, 0x83, 0x0d, 0x00, 0x0e, 0x00, 0x0e, 0x57, 0x0e, 0x58, 0x0e, + 0x96, 0x0e, 0x94, 0x0e, 0xb2, 0x0e, 0xb3, 0x0e, 0xb2, 0x0e, 0xb0, 0x0e, + 0x96, 0x0e, 0x97, 0x0e, 0x5b, 0x0e, 0x5a, 0x0e, 0x0b, 0x0e, 0x09, 0x0e, + 0x98, 0x0d, 0x99, 0x0d, 0x14, 0x0d, 0x12, 0x0d, 0x72, 0x0c, 0x73, 0x0c, + 0xbc, 0x0b, 0xba, 0x0b, 0xee, 0x0a, 0xee, 0x0a, 0x0b, 0x0a, 0x09, 0x0a, + 0x17, 0x09, 0x16, 0x09, 0x0a, 0x08, 0x0a, 0x08, 0xf3, 0x06, 0xf3, 0x06, + 0xc8, 0x05, 0xc8, 0x05, 0x8f, 0x04, 0x8d, 0x04, 0x4c, 0x03, 0x4b, 0x03, + 0xfb, 0x01, 0xfc, 0x01, 0xa9, 0x00, 0xa6, 0x00, 0x4c, 0xff, 0x4d, 0xff, + 0xf4, 0xfd, 0xf4, 0xfd, 0xa1, 0xfc, 0xa0, 0xfc, 0x51, 0xfb, 0x51, 0xfb, + 0x11, 0xfa, 0x10, 0xfa, 0xde, 0xf8, 0xdd, 0xf8, 0xbe, 0xf7, 0xbd, 0xf7, + 0xb6, 0xf6, 0xb4, 0xf6, 0xc4, 0xf5, 0xc2, 0xf5, 0xec, 0xf4, 0xee, 0xf4, + 0x36, 0xf4, 0x32, 0xf4, 0x96, 0xf3, 0x96, 0xf3, 0x15, 0xf3, 0x15, 0xf3, + 0xb3, 0xf2, 0xb2, 0xf2, 0x6f, 0xf2, 0x6f, 0xf2, 0x49, 0xf2, 0x47, 0xf2, + 0x3e, 0xf2, 0x3e, 0xf2, 0x51, 0xf2, 0x4f, 0xf2, 0x7e, 0xf2, 0x7b, 0xf2, + 0xc4, 0xf2, 0xc4, 0xf2, 0x25, 0xf3, 0x24, 0xf3, 0x9e, 0xf3, 0xa0, 0xf3, + 0x2f, 0xf4, 0x2e, 0xf4, 0xd7, 0xf4, 0xd7, 0xf4, 0x91, 0xf5, 0x8f, 0xf5, + 0x62, 0xf6, 0x62, 0xf6, 0x46, 0xf7, 0x46, 0xf7, 0x3c, 0xf8, 0x3b, 0xf8, + 0x41, 0xf9, 0x42, 0xf9, 0x56, 0xfa, 0x57, 0xfa, 0x7a, 0xfb, 0x78, 0xfb, + 0xa6, 0xfc, 0xa8, 0xfc, 0xdc, 0xfd, 0xd9, 0xfd, 0x1b, 0xff, 0x1a, 0xff, + 0x5a, 0x00, 0x5a, 0x00, 0x9e, 0x01, 0x9e, 0x01, 0xdf, 0x02, 0xdf, 0x02, + 0x17, 0x04, 0x17, 0x04, 0x4b, 0x05, 0x4b, 0x05, 0x6b, 0x06, 0x6d, 0x06, + 0x82, 0x07, 0x81, 0x07, 0x82, 0x08, 0x81, 0x08, 0x6e, 0x09, 0x6e, 0x09, + 0x43, 0x0a, 0x41, 0x0a, 0xfc, 0x0a, 0xfd, 0x0a, 0x9b, 0x0b, 0x9a, 0x0b, + 0x1e, 0x0c, 0x20, 0x0c, 0x88, 0x0c, 0x86, 0x0c, 0xd1, 0x0c, 0xd2, 0x0c, + 0xff, 0x0c, 0xff, 0x0c, 0x11, 0x0d, 0x11, 0x0d, 0x05, 0x0d, 0x04, 0x0d, + 0xe1, 0x0c, 0xe0, 0x0c, 0xa0, 0x0c, 0x9f, 0x0c, 0x46, 0x0c, 0x48, 0x0c, + 0xd9, 0x0b, 0xd7, 0x0b, 0x4c, 0x0b, 0x4c, 0x0b, 0xac, 0x0a, 0xae, 0x0a, + 0xf9, 0x09, 0xf7, 0x09, 0x2c, 0x09, 0x2d, 0x09, 0x53, 0x08, 0x51, 0x08, + 0x5f, 0x07, 0x60, 0x07, 0x60, 0x06, 0x60, 0x06, 0x51, 0x05, 0x52, 0x05, + 0x34, 0x04, 0x33, 0x04, 0x09, 0x03, 0x0b, 0x03, 0xd6, 0x01, 0xd6, 0x01, + 0x9e, 0x00, 0x9d, 0x00, 0x60, 0xff, 0x62, 0xff, 0x27, 0xfe, 0x26, 0xfe, + 0xed, 0xfc, 0xef, 0xfc, 0xc2, 0xfb, 0xc0, 0xfb, 0x9b, 0xfa, 0x9c, 0xfa, + 0x85, 0xf9, 0x85, 0xf9, 0x80, 0xf8, 0x81, 0xf8, 0x8d, 0xf7, 0x90, 0xf7, + 0xb3, 0xf6, 0xb0, 0xf6, 0xed, 0xf5, 0xef, 0xf5, 0x44, 0xf5, 0x43, 0xf5, + 0xb3, 0xf4, 0xb4, 0xf4, 0x3c, 0xf4, 0x3d, 0xf4, 0xe4, 0xf3, 0xe3, 0xf3, + 0xa3, 0xf3, 0xa3, 0xf3, 0x7f, 0xf3, 0x7f, 0xf3, 0x73, 0xf3, 0x77, 0xf3, + 0x87, 0xf3, 0x86, 0xf3, 0xb2, 0xf3, 0xb3, 0xf3, 0xf6, 0xf3, 0xf6, 0xf3, + 0x50, 0xf4, 0x52, 0xf4, 0xc5, 0xf4, 0xc6, 0xf4, 0x51, 0xf5, 0x4f, 0xf5, + 0xf0, 0xf5, 0xf3, 0xf5, 0xa8, 0xf6, 0xa5, 0xf6, 0x6f, 0xf7, 0x73, 0xf7, + 0x51, 0xf8, 0x4f, 0xf8, 0x3c, 0xf9, 0x3e, 0xf9, 0x40, 0xfa, 0x40, 0xfa, + 0x4d, 0xfb, 0x4d, 0xfb, 0x6c, 0xfc, 0x6e, 0xfc, 0x95, 0xfd, 0x94, 0xfd, + 0xc6, 0xfe, 0xc8, 0xfe, 0x01, 0x00, 0x02, 0x00, 0x3e, 0x01, 0x3d, 0x01, + 0x7a, 0x02, 0x7b, 0x02, 0xb2, 0x03, 0xb1, 0x03, 0xe3, 0x04, 0xe3, 0x04, + 0x07, 0x06, 0x07, 0x06, 0x1c, 0x07, 0x1d, 0x07, 0x1f, 0x08, 0x20, 0x08, + 0x0c, 0x09, 0x0c, 0x09, 0xe6, 0x09, 0xe7, 0x09, 0xa4, 0x0a, 0xa3, 0x0a, + 0x4a, 0x0b, 0x4b, 0x0b, 0xd2, 0x0b, 0xd3, 0x0b, 0x40, 0x0c, 0x3f, 0x0c, + 0x8f, 0x0c, 0x91, 0x0c, 0xc1, 0x0c, 0xc1, 0x0c, 0xd9, 0x0c, 0xda, 0x0c, + 0xd6, 0x0c, 0xd7, 0x0c, 0xb6, 0x0c, 0xb7, 0x0c, 0x81, 0x0c, 0x83, 0x0c, + 0x31, 0x0c, 0x32, 0x0c, 0xcc, 0x0b, 0xcb, 0x0b, 0x4e, 0x0b, 0x51, 0x0b, + 0xbe, 0x0a, 0xbe, 0x0a, 0x19, 0x0a, 0x19, 0x0a, 0x5b, 0x09, 0x5d, 0x09, + 0x8f, 0x08, 0x8e, 0x08, 0xab, 0x07, 0xad, 0x07, 0xba, 0x06, 0xbb, 0x06, + 0xb7, 0x05, 0xb4, 0x05, 0xa2, 0x04, 0xa4, 0x04, 0x83, 0x03, 0x82, 0x03, + 0x54, 0x02, 0x54, 0x02, 0x1e, 0x01, 0x1e, 0x01, 0xda, 0xff, 0xda, 0xff, + 0x97, 0xfe, 0x97, 0xfe, 0x4e, 0xfd, 0x4f, 0xfd, 0x09, 0xfc, 0x0a, 0xfc, + 0xca, 0xfa, 0xcb, 0xfa, 0x95, 0xf9, 0x96, 0xf9, 0x6f, 0xf8, 0x6e, 0xf8, + 0x55, 0xf7, 0x54, 0xf7, 0x54, 0xf6, 0x55, 0xf6, 0x6b, 0xf5, 0x69, 0xf5, + 0x99, 0xf4, 0x9c, 0xf4, 0xe7, 0xf3, 0xe6, 0xf3, 0x4c, 0xf3, 0x4d, 0xf3, + 0xd4, 0xf2, 0xd4, 0xf2, 0x75, 0xf2, 0x76, 0xf2, 0x3b, 0xf2, 0x3b, 0xf2, + 0x1a, 0xf2, 0x1a, 0xf2, 0x18, 0xf2, 0x18, 0xf2, 0x32, 0xf2, 0x32, 0xf2, + 0x66, 0xf2, 0x68, 0xf2, 0xb6, 0xf2, 0xb7, 0xf2, 0x20, 0xf3, 0x21, 0xf3, + 0xa0, 0xf3, 0xa1, 0xf3, 0x39, 0xf4, 0x39, 0xf4, 0xeb, 0xf4, 0xea, 0xf4, + 0xac, 0xf5, 0xaf, 0xf5, 0x89, 0xf6, 0x8a, 0xf6, 0x77, 0xf7, 0x77, 0xf7, + 0x79, 0xf8, 0x78, 0xf8, 0x8e, 0xf9, 0x8d, 0xf9, 0xb0, 0xfa, 0xb1, 0xfa, + 0xe2, 0xfb, 0xe2, 0xfb, 0x22, 0xfd, 0x23, 0xfd, 0x6c, 0xfe, 0x6d, 0xfe, + 0xc1, 0xff, 0xc0, 0xff, 0x18, 0x01, 0x18, 0x01, 0x73, 0x02, 0x73, 0x02, + 0xcb, 0x03, 0xcc, 0x03, 0x1b, 0x05, 0x1a, 0x05, 0x5f, 0x06, 0x61, 0x06, + 0x96, 0x07, 0x96, 0x07, 0xba, 0x08, 0xba, 0x08, 0xc8, 0x09, 0xc9, 0x09, + 0xbf, 0x0a, 0xbf, 0x0a, 0x9a, 0x0b, 0x9c, 0x0b, 0x5b, 0x0c, 0x5c, 0x0c, + 0xff, 0x0c, 0xfe, 0x0c, 0x81, 0x0d, 0x82, 0x0d, 0xea, 0x0d, 0xea, 0x0d, + 0x32, 0x0e, 0x32, 0x0e, 0x5a, 0x0e, 0x5d, 0x0e, 0x6a, 0x0e, 0x69, 0x0e, + 0x57, 0x0e, 0x5a, 0x0e, 0x31, 0x0e, 0x30, 0x0e, 0xe9, 0x0d, 0xea, 0x0d, + 0x8d, 0x0d, 0x8c, 0x0d, 0x17, 0x0d, 0x17, 0x0d, 0x88, 0x0c, 0x87, 0x0c, + 0xe8, 0x0b, 0xe8, 0x0b, 0x2b, 0x0b, 0x2c, 0x0b, 0x60, 0x0a, 0x5e, 0x0a, + 0x7c, 0x09, 0x7d, 0x09, 0x88, 0x08, 0x88, 0x08, 0x80, 0x07, 0x81, 0x07, + 0x6a, 0x06, 0x68, 0x06, 0x42, 0x05, 0x41, 0x05, 0x0a, 0x04, 0x09, 0x04, + 0xc8, 0x02, 0xc7, 0x02, 0x77, 0x01, 0x78, 0x01, 0x21, 0x00, 0x20, 0x00, + 0xc4, 0xfe, 0xc3, 0xfe, 0x61, 0xfd, 0x61, 0xfd, 0x04, 0xfc, 0x04, 0xfc, + 0xa8, 0xfa, 0xa8, 0xfa, 0x56, 0xf9, 0x57, 0xf9, 0x12, 0xf8, 0x11, 0xf8, + 0xdf, 0xf6, 0xe0, 0xf6, 0xc1, 0xf5, 0xc3, 0xf5, 0xbc, 0xf4, 0xbc, 0xf4, + 0xd2, 0xf3, 0xd4, 0xf3, 0x08, 0xf3, 0x07, 0xf3, 0x5a, 0xf2, 0x5b, 0xf2, + 0xcd, 0xf1, 0xcd, 0xf1, 0x60, 0xf1, 0x60, 0xf1, 0x13, 0xf1, 0x14, 0xf1, + 0xe9, 0xf0, 0xea, 0xf0, 0xde, 0xf0, 0xde, 0xf0, 0xf4, 0xf0, 0xf6, 0xf0, + 0x26, 0xf1, 0x26, 0xf1, 0x76, 0xf1, 0x76, 0xf1, 0xe2, 0xf1, 0xe2, 0xf1, + 0x64, 0xf2, 0x64, 0xf2, 0x04, 0xf3, 0x05, 0xf3, 0xb5, 0xf3, 0xb6, 0xf3, + 0x83, 0xf4, 0x82, 0xf4, 0x5f, 0xf5, 0x60, 0xf5, 0x54, 0xf6, 0x53, 0xf6, + 0x58, 0xf7, 0x5a, 0xf7, 0x70, 0xf8, 0x70, 0xf8, 0x98, 0xf9, 0x99, 0xf9, + 0xcc, 0xfa, 0xcd, 0xfa, 0x0f, 0xfc, 0x0f, 0xfc, 0x5b, 0xfd, 0x5b, 0xfd, + 0xae, 0xfe, 0xb0, 0xfe, 0x0a, 0x00, 0x09, 0x00, 0x67, 0x01, 0x6a, 0x01, + 0xc7, 0x02, 0xc5, 0x02, 0x21, 0x04, 0x22, 0x04, 0x72, 0x05, 0x71, 0x05, + 0xb7, 0x06, 0xb8, 0x06, 0xef, 0x07, 0xed, 0x07, 0x0d, 0x09, 0x0e, 0x09, + 0x1e, 0x0a, 0x1e, 0x0a, 0x10, 0x0b, 0x10, 0x0b, 0xec, 0x0b, 0xef, 0x0b, + 0xab, 0x0c, 0xaa, 0x0c, 0x4a, 0x0d, 0x4a, 0x0d, 0xd0, 0x0d, 0xd0, 0x0d, + 0x33, 0x0e, 0x31, 0x0e, 0x7a, 0x0e, 0x7a, 0x0e, 0x9f, 0x0e, 0x9d, 0x0e, + 0xa9, 0x0e, 0xa9, 0x0e, 0x95, 0x0e, 0x95, 0x0e, 0x66, 0x0e, 0x64, 0x0e, + 0x18, 0x0e, 0x19, 0x0e, 0xb3, 0x0d, 0xb2, 0x0d, 0x33, 0x0d, 0x34, 0x0d, + 0x9b, 0x0c, 0x9d, 0x0c, 0xef, 0x0b, 0xed, 0x0b, 0x25, 0x0b, 0x27, 0x0b, + 0x4d, 0x0a, 0x4b, 0x0a, 0x5a, 0x09, 0x5c, 0x09, 0x5a, 0x08, 0x58, 0x08, + 0x45, 0x07, 0x45, 0x07, 0x21, 0x06, 0x21, 0x06, 0xef, 0x04, 0xee, 0x04, + 0xad, 0x03, 0xae, 0x03, 0x62, 0x02, 0x63, 0x02, 0x10, 0x01, 0x0e, 0x01, + 0xb7, 0xff, 0xb7, 0xff, 0x5e, 0xfe, 0x5d, 0xfe, 0x09, 0xfd, 0x08, 0xfd, + 0xb7, 0xfb, 0xb9, 0xfb, 0x72, 0xfa, 0x71, 0xfa, 0x39, 0xf9, 0x3a, 0xf9, + 0x12, 0xf8, 0x10, 0xf8, 0x00, 0xf7, 0x00, 0xf7, 0x06, 0xf6, 0x07, 0xf6, + 0x28, 0xf5, 0x27, 0xf5, 0x65, 0xf4, 0x63, 0xf4, 0xbe, 0xf3, 0xbe, 0xf3, + 0x34, 0xf3, 0x34, 0xf3, 0xca, 0xf2, 0xc8, 0xf2, 0x79, 0xf2, 0x78, 0xf2, + 0x48, 0xf2, 0x47, 0xf2, 0x35, 0xf2, 0x36, 0xf2, 0x3c, 0xf2, 0x3b, 0xf2, + 0x62, 0xf2, 0x62, 0xf2, 0xa1, 0xf2, 0x9f, 0xf2, 0xf6, 0xf2, 0xf7, 0xf2, + 0x6a, 0xf3, 0x69, 0xf3, 0xf1, 0xf3, 0xf3, 0xf3, 0x93, 0xf4, 0x91, 0xf4, + 0x48, 0xf5, 0x48, 0xf5, 0x14, 0xf6, 0x13, 0xf6, 0xef, 0xf6, 0xef, 0xf6, + 0xe1, 0xf7, 0xe0, 0xf7, 0xde, 0xf8, 0xdf, 0xf8, 0xee, 0xf9, 0xec, 0xf9, + 0x09, 0xfb, 0x0a, 0xfb, 0x32, 0xfc, 0x31, 0xfc, 0x69, 0xfd, 0x69, 0xfd, + 0xa6, 0xfe, 0xa6, 0xfe, 0xec, 0xff, 0xeb, 0xff, 0x32, 0x01, 0x32, 0x01, + 0x7a, 0x02, 0x78, 0x02, 0xbc, 0x03, 0xbc, 0x03, 0xf8, 0x04, 0xf8, 0x04, + 0x25, 0x06, 0x24, 0x06, 0x46, 0x07, 0x46, 0x07, 0x51, 0x08, 0x50, 0x08, + 0x45, 0x09, 0x45, 0x09, 0x24, 0x0a, 0x23, 0x0a, 0xe8, 0x0a, 0xe8, 0x0a, + 0x91, 0x0b, 0x91, 0x0b, 0x22, 0x0c, 0x20, 0x0c, 0x8d, 0x0c, 0x8f, 0x0c, + 0xe4, 0x0c, 0xe3, 0x0c, 0x18, 0x0d, 0x18, 0x0d, 0x31, 0x0d, 0x31, 0x0d, + 0x2e, 0x0d, 0x2e, 0x0d, 0x0f, 0x0d, 0x0e, 0x0d, 0xd5, 0x0c, 0xd4, 0x0c, + 0x81, 0x0c, 0x81, 0x0c, 0x14, 0x0c, 0x13, 0x0c, 0x8d, 0x0b, 0x8d, 0x0b, + 0xf1, 0x0a, 0xf1, 0x0a, 0x3f, 0x0a, 0x3e, 0x0a, 0x75, 0x09, 0x75, 0x09, + 0x99, 0x08, 0x99, 0x08, 0xac, 0x07, 0xab, 0x07, 0xaa, 0x06, 0xab, 0x06, + 0x9e, 0x05, 0x9d, 0x05, 0x7e, 0x04, 0x80, 0x04, 0x59, 0x03, 0x57, 0x03, + 0x26, 0x02, 0x27, 0x02, 0xeb, 0x00, 0xea, 0x00, 0xb0, 0xff, 0xb0, 0xff, + 0x73, 0xfe, 0x73, 0xfe, 0x3d, 0xfd, 0x3c, 0xfd, 0x09, 0xfc, 0x0a, 0xfc, + 0xe5, 0xfa, 0xe4, 0xfa, 0xca, 0xf9, 0xcb, 0xf9, 0xc2, 0xf8, 0xc2, 0xf8, + 0xcc, 0xf7, 0xcc, 0xf7, 0xec, 0xf6, 0xeb, 0xf6, 0x22, 0xf6, 0x22, 0xf6, + 0x73, 0xf5, 0x73, 0xf5, 0xde, 0xf4, 0xdd, 0xf4, 0x63, 0xf4, 0x65, 0xf4, + 0x05, 0xf4, 0x03, 0xf4, 0xbe, 0xf3, 0xc0, 0xf3, 0x97, 0xf3, 0x95, 0xf3, + 0x87, 0xf3, 0x88, 0xf3, 0x95, 0xf3, 0x93, 0xf3, 0xb8, 0xf3, 0xb8, 0xf3, + 0xf5, 0xf3, 0xf5, 0xf3, 0x4e, 0xf4, 0x50, 0xf4, 0xbd, 0xf4, 0xbc, 0xf4, + 0x44, 0xf5, 0x42, 0xf5, 0xdd, 0xf5, 0xdf, 0xf5, 0x8f, 0xf6, 0x8e, 0xf6, + 0x56, 0xf7, 0x56, 0xf7, 0x2b, 0xf8, 0x2b, 0xf8, 0x17, 0xf9, 0x17, 0xf9, + 0x11, 0xfa, 0x10, 0xfa, 0x17, 0xfb, 0x18, 0xfb, 0x30, 0xfc, 0x30, 0xfc, + 0x50, 0xfd, 0x4f, 0xfd, 0x7c, 0xfe, 0x7d, 0xfe, 0xae, 0xff, 0xac, 0xff, + 0xe1, 0x00, 0xe2, 0x00, 0x18, 0x02, 0x18, 0x02, 0x4a, 0x03, 0x48, 0x03, + 0x76, 0x04, 0x7a, 0x04, 0x96, 0x05, 0x93, 0x05, 0xab, 0x06, 0xac, 0x06, + 0xad, 0x07, 0xaa, 0x07, 0x9a, 0x08, 0x99, 0x08, 0x74, 0x09, 0x74, 0x09, + 0x34, 0x0a, 0x32, 0x0a, 0xdd, 0x0a, 0xde, 0x0a, 0x6b, 0x0b, 0x68, 0x0b, + 0xdc, 0x0b, 0xde, 0x0b, 0x35, 0x0c, 0x32, 0x0c, 0x6c, 0x0c, 0x6e, 0x0c, + 0x8d, 0x0c, 0x8a, 0x0c, 0x8c, 0x0c, 0x8f, 0x0c, 0x7b, 0x0c, 0x78, 0x0c, + 0x46, 0x0c, 0x48, 0x0c, 0x04, 0x0c, 0x05, 0x0c, 0xa4, 0x0b, 0xa1, 0x0b, + 0x2d, 0x0b, 0x30, 0x0b, 0xa4, 0x0a, 0xa2, 0x0a, 0x02, 0x0a, 0x03, 0x0a, + 0x51, 0x09, 0x52, 0x09, 0x8a, 0x08, 0x89, 0x08, 0xaf, 0x07, 0xb0, 0x07, + 0xc9, 0x06, 0xc7, 0x06, 0xca, 0x05, 0xca, 0x05, 0xc5, 0x04, 0xc5, 0x04, + 0xaf, 0x03, 0xae, 0x03, 0x8e, 0x02, 0x8d, 0x02, 0x67, 0x01, 0x67, 0x01, + 0x31, 0x00, 0x2f, 0x00, 0xfb, 0xfe, 0xfb, 0xfe, 0xc3, 0xfd, 0xc3, 0xfd, + 0x8a, 0xfc, 0x89, 0xfc, 0x5a, 0xfb, 0x5b, 0xfb, 0x2e, 0xfa, 0x2e, 0xfa, + 0x16, 0xf9, 0x16, 0xf9, 0x07, 0xf8, 0x07, 0xf8, 0x0e, 0xf7, 0x0d, 0xf7, + 0x29, 0xf6, 0x28, 0xf6, 0x5b, 0xf5, 0x5b, 0xf5, 0xaa, 0xf4, 0xa9, 0xf4, + 0x10, 0xf4, 0x11, 0xf4, 0x97, 0xf3, 0x96, 0xf3, 0x37, 0xf3, 0x37, 0xf3, + 0xf6, 0xf2, 0xf5, 0xf2, 0xcf, 0xf2, 0xce, 0xf2, 0xc6, 0xf2, 0xc5, 0xf2, + 0xd5, 0xf2, 0xd6, 0xf2, 0x05, 0xf3, 0x01, 0xf3, 0x44, 0xf3, 0x48, 0xf3, + 0xa6, 0xf3, 0xa3, 0xf3, 0x1a, 0xf4, 0x1a, 0xf4, 0xa6, 0xf4, 0xa5, 0xf4, + 0x48, 0xf5, 0x49, 0xf5, 0x02, 0xf6, 0x01, 0xf6, 0xcf, 0xf6, 0xce, 0xf6, + 0xae, 0xf7, 0xad, 0xf7, 0xa1, 0xf8, 0x9f, 0xf8, 0x9f, 0xf9, 0xa1, 0xf9, + 0xb5, 0xfa, 0xb1, 0xfa, 0xd3, 0xfb, 0xd3, 0xfb, 0xfe, 0xfc, 0xfd, 0xfc, + 0x35, 0xfe, 0x34, 0xfe, 0x6f, 0xff, 0x70, 0xff, 0xb5, 0x00, 0xb3, 0x00, + 0xf5, 0x01, 0xf5, 0x01, 0x39, 0x03, 0x39, 0x03, 0x72, 0x04, 0x70, 0x04, + 0xa4, 0x05, 0xa4, 0x05, 0xca, 0x06, 0xc8, 0x06, 0xda, 0x07, 0xdb, 0x07, + 0xde, 0x08, 0xdd, 0x08, 0xc9, 0x09, 0xc8, 0x09, 0x9e, 0x0a, 0x9d, 0x0a, + 0x58, 0x0b, 0x59, 0x0b, 0xf7, 0x0b, 0xf7, 0x0b, 0x7f, 0x0c, 0x7d, 0x0c, + 0xe2, 0x0c, 0xe1, 0x0c, 0x32, 0x0d, 0x32, 0x0d, 0x5f, 0x0d, 0x5d, 0x0d, + 0x75, 0x0d, 0x75, 0x0d, 0x6c, 0x0d, 0x6d, 0x0d, 0x4b, 0x0d, 0x4a, 0x0d, + 0x12, 0x0d, 0x11, 0x0d, 0xbe, 0x0c, 0xbe, 0x0c, 0x56, 0x0c, 0x55, 0x0c, + 0xd6, 0x0b, 0xd6, 0x0b, 0x41, 0x0b, 0x3f, 0x0b, 0x98, 0x0a, 0x98, 0x0a, + 0xd9, 0x09, 0xd8, 0x09, 0x08, 0x09, 0x09, 0x09, 0x26, 0x08, 0x24, 0x08, + 0x30, 0x07, 0x30, 0x07, 0x2e, 0x06, 0x2f, 0x06, 0x1d, 0x05, 0x1a, 0x05, + 0xfb, 0x03, 0xfc, 0x03, 0xd4, 0x02, 0xd2, 0x02, 0x9f, 0x01, 0x9f, 0x01, + 0x64, 0x00, 0x64, 0x00, 0x24, 0xff, 0x21, 0xff, 0xdf, 0xfd, 0xe0, 0xfd, + 0x9d, 0xfc, 0x9d, 0xfc, 0x5f, 0xfb, 0x5e, 0xfb, 0x2c, 0xfa, 0x2b, 0xfa, + 0x01, 0xf9, 0x00, 0xf9, 0xe8, 0xf7, 0xe6, 0xf7, 0xdd, 0xf6, 0xdc, 0xf6, + 0xe7, 0xf5, 0xe7, 0xf5, 0x0e, 0xf5, 0x0d, 0xf5, 0x48, 0xf4, 0x49, 0xf4, + 0xa6, 0xf3, 0xa5, 0xf3, 0x1b, 0xf3, 0x1c, 0xf3, 0xb1, 0xf2, 0xb0, 0xf2, + 0x62, 0xf2, 0x62, 0xf2, 0x2f, 0xf2, 0x2f, 0xf2, 0x21, 0xf2, 0x20, 0xf2, + 0x26, 0xf2, 0x27, 0xf2, 0x51, 0xf2, 0x50, 0xf2, 0x8e, 0xf2, 0x8e, 0xf2, + 0xea, 0xf2, 0xea, 0xf2, 0x5f, 0xf3, 0x5e, 0xf3, 0xe7, 0xf3, 0xe8, 0xf3, + 0x8c, 0xf4, 0x8b, 0xf4, 0x3f, 0xf5, 0x3e, 0xf5, 0x0b, 0xf6, 0x0b, 0xf6, + 0xe9, 0xf6, 0xe7, 0xf6, 0xd7, 0xf7, 0xd6, 0xf7, 0xd4, 0xf8, 0xd3, 0xf8, + 0xe3, 0xf9, 0xe4, 0xf9, 0xfd, 0xfa, 0xfb, 0xfa, 0x22, 0xfc, 0x1f, 0xfc, + 0x4e, 0xfd, 0x4e, 0xfd, 0x85, 0xfe, 0x83, 0xfe, 0xbf, 0xff, 0xbf, 0xff, + 0xfc, 0x00, 0xfa, 0x00, 0x36, 0x02, 0x37, 0x02, 0x70, 0x03, 0x6e, 0x03, + 0xa2, 0x04, 0xa1, 0x04, 0xc7, 0x05, 0xc6, 0x05, 0xe3, 0x06, 0xe1, 0x06, + 0xe9, 0x07, 0xe9, 0x07, 0xe0, 0x08, 0xdf, 0x08, 0xc1, 0x09, 0xc0, 0x09, + 0x8a, 0x0a, 0x8b, 0x0a, 0x40, 0x0b, 0x3e, 0x0b, 0xd6, 0x0b, 0xd5, 0x0b, + 0x55, 0x0c, 0x54, 0x0c, 0xb5, 0x0c, 0xb5, 0x0c, 0xfc, 0x0c, 0xfa, 0x0c, + 0x28, 0x0d, 0x27, 0x0d, 0x34, 0x0d, 0x34, 0x0d, 0x2c, 0x0d, 0x2c, 0x0d, + 0x03, 0x0d, 0x02, 0x0d, 0xc5, 0x0c, 0xc6, 0x0c, 0x70, 0x0c, 0x6f, 0x0c, + 0x00, 0x0c, 0x00, 0x0c, 0x7f, 0x0b, 0x7d, 0x0b, 0xe1, 0x0a, 0xe1, 0x0a, + 0x36, 0x0a, 0x34, 0x0a, 0x6f, 0x09, 0x6f, 0x09, 0x9c, 0x08, 0x9b, 0x08, + 0xb6, 0x07, 0xb4, 0x07, 0xbe, 0x06, 0xbd, 0x06, 0xbb, 0x05, 0xb9, 0x05, + 0xa9, 0x04, 0xaa, 0x04, 0x8f, 0x03, 0x8c, 0x03, 0x6b, 0x02, 0x6a, 0x02, + 0x3d, 0x01, 0x3d, 0x01, 0x10, 0x00, 0x0d, 0x00, 0xde, 0xfe, 0xdf, 0xfe, + 0xb0, 0xfd, 0xb0, 0xfd, 0x87, 0xfc, 0x86, 0xfc, 0x6a, 0xfb, 0x68, 0xfb, + 0x54, 0xfa, 0x53, 0xfa, 0x4d, 0xf9, 0x4d, 0xf9, 0x58, 0xf8, 0x57, 0xf8, + 0x77, 0xf7, 0x76, 0xf7, 0xae, 0xf6, 0xad, 0xf6, 0xf8, 0xf5, 0xf8, 0xf5, + 0x60, 0xf5, 0x5e, 0xf5, 0xdc, 0xf4, 0xdc, 0xf4, 0x77, 0xf4, 0x74, 0xf4, + 0x29, 0xf4, 0x28, 0xf4, 0xf5, 0xf3, 0xf4, 0xf3, 0xdb, 0xf3, 0xda, 0xf3, + 0xda, 0xf3, 0xd8, 0xf3, 0xf3, 0xf3, 0xf2, 0xf3, 0x25, 0xf4, 0x24, 0xf4, + 0x6c, 0xf4, 0x6a, 0xf4, 0xca, 0xf4, 0xca, 0xf4, 0x3f, 0xf5, 0x3d, 0xf5, + 0xc9, 0xf5, 0xc6, 0xf5, 0x64, 0xf6, 0x65, 0xf6, 0x15, 0xf7, 0x13, 0xf7, + 0xd6, 0xf7, 0xd4, 0xf7, 0xa7, 0xf8, 0xa6, 0xf8, 0x87, 0xf9, 0x84, 0xf9, + 0x76, 0xfa, 0x74, 0xfa, 0x6e, 0xfb, 0x6d, 0xfb, 0x72, 0xfc, 0x70, 0xfc, + 0x7b, 0xfd, 0x7b, 0xfd, 0x8d, 0xfe, 0x8b, 0xfe, 0xa1, 0xff, 0xa1, 0xff, + 0xb7, 0x00, 0xb5, 0x00, 0xce, 0x01, 0xcd, 0x01, 0xdf, 0x02, 0xde, 0x02, + 0xec, 0x03, 0xea, 0x03, 0xec, 0x04, 0xeb, 0x04, 0xe1, 0x05, 0xdf, 0x05, + 0xc9, 0x06, 0xc7, 0x06, 0x9c, 0x07, 0x9a, 0x07, 0x5f, 0x08, 0x5d, 0x08, + 0x0c, 0x09, 0x0b, 0x09, 0xa4, 0x09, 0xa2, 0x09, 0x24, 0x0a, 0x25, 0x0a, + 0x90, 0x0a, 0x8d, 0x0a, 0xe0, 0x0a, 0xdf, 0x0a, 0x19, 0x0b, 0x17, 0x0b, + 0x3a, 0x0b, 0x39, 0x0b, 0x42, 0x0b, 0x40, 0x0b, 0x33, 0x0b, 0x31, 0x0b, + 0x0a, 0x0b, 0x09, 0x0b, 0xce, 0x0a, 0xca, 0x0a, 0x78, 0x0a, 0x78, 0x0a, + 0x0e, 0x0a, 0x0b, 0x0a, 0x91, 0x09, 0x8f, 0x09, 0xff, 0x08, 0xfc, 0x08, + 0x58, 0x08, 0x56, 0x08, 0xa4, 0x07, 0xa3, 0x07, 0xdd, 0x06, 0xdb, 0x06, + 0x08, 0x06, 0x05, 0x06, 0x27, 0x05, 0x25, 0x05, 0x37, 0x04, 0x36, 0x04, + 0x41, 0x03, 0x3f, 0x03, 0x40, 0x02, 0x3d, 0x02, 0x3a, 0x01, 0x37, 0x01, + 0x31, 0x00, 0x30, 0x00, 0x25, 0xff, 0x23, 0xff, 0x21, 0xfe, 0x20, 0xfe, + 0x1c, 0xfd, 0x19, 0xfd, 0x23, 0xfc, 0x21, 0xfc, 0x32, 0xfb, 0x2f, 0xfb, + 0x4d, 0xfa, 0x4d, 0xfa, 0x7b, 0xf9, 0x76, 0xf9, 0xb3, 0xf8, 0xb3, 0xf8, + 0x04, 0xf8, 0x02, 0xf8, 0x67, 0xf7, 0x64, 0xf7, 0xdf, 0xf6, 0xdd, 0xf6, + 0x6d, 0xf6, 0x6b, 0xf6, 0x10, 0xf6, 0x0f, 0xf6, 0xcc, 0xf5, 0xca, 0xf5, + 0x9d, 0xf5, 0x9b, 0xf5, 0x86, 0xf5, 0x84, 0xf5, 0x85, 0xf5, 0x84, 0xf5, + 0x99, 0xf5, 0x97, 0xf5, 0xc8, 0xf5, 0xc7, 0xf5, 0x0a, 0xf6, 0x06, 0xf6, + 0x60, 0xf6, 0x60, 0xf6, 0xc8, 0xf6, 0xc6, 0xf6, 0x49, 0xf7, 0x47, 0xf7, + 0xd9, 0xf7, 0xd8, 0xf7, 0x78, 0xf8, 0x76, 0xf8, 0x30, 0xf9, 0x2f, 0xf9, + 0xed, 0xf9, 0xea, 0xf9, 0xbf, 0xfa, 0xbe, 0xfa, 0x9b, 0xfb, 0x9a, 0xfb, + 0x84, 0xfc, 0x7f, 0xfc, 0x76, 0xfd, 0x76, 0xfd, 0x6f, 0xfe, 0x6c, 0xfe, + 0x6f, 0xff, 0x6e, 0xff, 0x73, 0x00, 0x70, 0x00, 0x74, 0x01, 0x73, 0x01, + 0x78, 0x02, 0x77, 0x02, 0x74, 0x03, 0x72, 0x03, 0x68, 0x04, 0x67, 0x04, + 0x54, 0x05, 0x51, 0x05, 0x2f, 0x06, 0x2e, 0x06, 0xff, 0x06, 0xfd, 0x06, + 0xba, 0x07, 0xb7, 0x07, 0x62, 0x08, 0x61, 0x08, 0xf8, 0x08, 0xf5, 0x08, + 0x77, 0x09, 0x77, 0x09, 0xe2, 0x09, 0xdf, 0x09, 0x34, 0x0a, 0x33, 0x0a, + 0x71, 0x0a, 0x70, 0x0a, 0x95, 0x0a, 0x94, 0x0a, 0xa5, 0x0a, 0xa1, 0x0a, + 0x99, 0x0a, 0x98, 0x0a, 0x7b, 0x0a, 0x78, 0x0a, 0x46, 0x0a, 0x45, 0x0a, + 0xfc, 0x09, 0xfa, 0x09, 0x9e, 0x09, 0x9c, 0x09, 0x2e, 0x09, 0x2c, 0x09, + 0xa8, 0x08, 0xa5, 0x08, 0x14, 0x08, 0x11, 0x08, 0x6b, 0x07, 0x66, 0x07, + 0xb4, 0x06, 0xb2, 0x06, 0xee, 0x05, 0xec, 0x05, 0x1a, 0x05, 0x15, 0x05, + 0x3a, 0x04, 0x3a, 0x04, 0x4f, 0x03, 0x4b, 0x03, 0x5a, 0x02, 0x58, 0x02, + 0x60, 0x01, 0x5c, 0x01, 0x59, 0x00, 0x57, 0x00, 0x55, 0xff, 0x51, 0xff, + 0x4b, 0xfe, 0x49, 0xfe, 0x43, 0xfd, 0x41, 0xfd, 0x40, 0xfc, 0x3d, 0xfc, + 0x43, 0xfb, 0x41, 0xfb, 0x53, 0xfa, 0x4f, 0xfa, 0x6b, 0xf9, 0x68, 0xf9, + 0x95, 0xf8, 0x92, 0xf8, 0xcf, 0xf7, 0xcc, 0xf7, 0x1c, 0xf7, 0x1a, 0xf7, + 0x82, 0xf6, 0x7c, 0xf6, 0xf8, 0xf5, 0xf7, 0xf5, 0x8c, 0xf5, 0x88, 0xf5, + 0x32, 0xf5, 0x30, 0xf5, 0xf3, 0xf4, 0xf0, 0xf4, 0xc9, 0xf4, 0xc7, 0xf4, + 0xb8, 0xf4, 0xb6, 0xf4, 0xbd, 0xf4, 0xbb, 0xf4, 0xdb, 0xf4, 0xd8, 0xf4, + 0x0f, 0xf5, 0x0d, 0xf5, 0x5a, 0xf5, 0x57, 0xf5, 0xb8, 0xf5, 0xb5, 0xf5, + 0x2c, 0xf6, 0x29, 0xf6, 0xb3, 0xf6, 0xb1, 0xf6, 0x4e, 0xf7, 0x4a, 0xf7, + 0xfa, 0xf7, 0xf8, 0xf7, 0xb6, 0xf8, 0xb4, 0xf8, 0x84, 0xf9, 0x81, 0xf9, + 0x62, 0xfa, 0x5f, 0xfa, 0x48, 0xfb, 0x45, 0xfb, 0x3e, 0xfc, 0x3b, 0xfc, + 0x3b, 0xfd, 0x39, 0xfd, 0x44, 0xfe, 0x41, 0xfe, 0x51, 0xff, 0x50, 0xff, + 0x64, 0x00, 0x61, 0x00, 0x76, 0x01, 0x74, 0x01, 0x87, 0x02, 0x86, 0x02, + 0x96, 0x03, 0x93, 0x03, 0x9a, 0x04, 0x98, 0x04, 0x96, 0x05, 0x94, 0x05, + 0x86, 0x06, 0x83, 0x06, 0x65, 0x07, 0x65, 0x07, 0x38, 0x08, 0x32, 0x08, + 0xef, 0x08, 0xf0, 0x08, 0x98, 0x09, 0x94, 0x09, 0x2b, 0x0a, 0x27, 0x0a, + 0xa3, 0x0a, 0xa2, 0x0a, 0x06, 0x0b, 0x02, 0x0b, 0x4f, 0x0b, 0x4e, 0x0b, + 0x81, 0x0b, 0x7e, 0x0b, 0x9c, 0x0b, 0x98, 0x0b, 0x9e, 0x0b, 0x9e, 0x0b, + 0x8a, 0x0b, 0x87, 0x0b, 0x60, 0x0b, 0x5e, 0x0b, 0x1e, 0x0b, 0x1c, 0x0b, + 0xcb, 0x0a, 0xc7, 0x0a, 0x5e, 0x0a, 0x5d, 0x0a, 0xe3, 0x09, 0xdf, 0x09, + 0x51, 0x09, 0x50, 0x09, 0xb0, 0x08, 0xae, 0x08, 0xfd, 0x07, 0xfa, 0x07, + 0x39, 0x07, 0x38, 0x07, 0x68, 0x06, 0x65, 0x06, 0x88, 0x05, 0x86, 0x05, + 0x9c, 0x04, 0x99, 0x04, 0xa5, 0x03, 0xa3, 0x03, 0xa5, 0x02, 0xa2, 0x02, + 0x9c, 0x01, 0x99, 0x01, 0x8d, 0x00, 0x8a, 0x00, 0x7b, 0xff, 0x77, 0xff, + 0x66, 0xfe, 0x63, 0xfe, 0x50, 0xfd, 0x4e, 0xfd, 0x40, 0xfc, 0x3d, 0xfc, + 0x35, 0xfb, 0x34, 0xfb, 0x35, 0xfa, 0x31, 0xfa, 0x3f, 0xf9, 0x3d, 0xf9, + 0x56, 0xf8, 0x52, 0xf8, 0x82, 0xf7, 0x7f, 0xf7, 0xbd, 0xf6, 0xba, 0xf6, + 0x11, 0xf6, 0x0e, 0xf6, 0x79, 0xf5, 0x76, 0xf5, 0xfa, 0xf4, 0xf8, 0xf4, + 0x95, 0xf4, 0x92, 0xf4, 0x48, 0xf4, 0x46, 0xf4, 0x14, 0xf4, 0x12, 0xf4, + 0xf9, 0xf3, 0xf7, 0xf3, 0xf6, 0xf3, 0xf3, 0xf3, 0x0d, 0xf4, 0x0c, 0xf4, + 0x3a, 0xf4, 0x36, 0xf4, 0x7e, 0xf4, 0x7c, 0xf4, 0xd9, 0xf4, 0xd7, 0xf4, + 0x4c, 0xf5, 0x49, 0xf5, 0xce, 0xf5, 0xcc, 0xf5, 0x69, 0xf6, 0x66, 0xf6, + 0x11, 0xf7, 0x10, 0xf7, 0xce, 0xf7, 0xcc, 0xf7, 0x99, 0xf8, 0x97, 0xf8, + 0x73, 0xf9, 0x71, 0xf9, 0x5b, 0xfa, 0x57, 0xfa, 0x4e, 0xfb, 0x4d, 0xfb, + 0x4b, 0xfc, 0x47, 0xfc, 0x50, 0xfd, 0x4d, 0xfd, 0x5a, 0xfe, 0x58, 0xfe, + 0x6a, 0xff, 0x65, 0xff, 0x7a, 0x00, 0x79, 0x00, 0x8d, 0x01, 0x88, 0x01, + 0x9b, 0x02, 0x99, 0x02, 0xa5, 0x03, 0xa2, 0x03, 0xa8, 0x04, 0xa3, 0x04, + 0x9d, 0x05, 0x9b, 0x05, 0x88, 0x06, 0x85, 0x06, 0x63, 0x07, 0x60, 0x07, + 0x2d, 0x08, 0x29, 0x08, 0xe4, 0x08, 0xe3, 0x08, 0x89, 0x09, 0x83, 0x09, + 0x12, 0x0a, 0x13, 0x0a, 0x8d, 0x0a, 0x87, 0x0a, 0xea, 0x0a, 0xe8, 0x0a, + 0x33, 0x0b, 0x2f, 0x0b, 0x60, 0x0b, 0x5d, 0x0b, 0x79, 0x0b, 0x78, 0x0b, + 0x7b, 0x0b, 0x77, 0x0b, 0x65, 0x0b, 0x63, 0x0b, 0x3a, 0x0b, 0x36, 0x0b, + 0xf5, 0x0a, 0xf3, 0x0a, 0xa0, 0x0a, 0x9e, 0x0a, 0x34, 0x0a, 0x30, 0x0a, + 0xb5, 0x09, 0xb2, 0x09, 0x23, 0x09, 0x21, 0x09, 0x81, 0x08, 0x7e, 0x08, + 0xce, 0x07, 0xc9, 0x07, 0x07, 0x07, 0x07, 0x07, 0x39, 0x06, 0x35, 0x06, + 0x5b, 0x05, 0x57, 0x05, 0x72, 0x04, 0x70, 0x04, 0x7f, 0x03, 0x7b, 0x03, + 0x83, 0x02, 0x81, 0x02, 0x83, 0x01, 0x80, 0x01, 0x7e, 0x00, 0x7b, 0x00, + 0x79, 0xff, 0x75, 0xff, 0x74, 0xfe, 0x71, 0xfe, 0x73, 0xfd, 0x6e, 0xfd, + 0x77, 0xfc, 0x75, 0xfc, 0x87, 0xfb, 0x82, 0xfb, 0x9d, 0xfa, 0x9a, 0xfa, + 0xc4, 0xf9, 0xc0, 0xf9, 0xf8, 0xf8, 0xf5, 0xf8, 0x40, 0xf8, 0x3b, 0xf8, + 0x9a, 0xf7, 0x97, 0xf7, 0x0a, 0xf7, 0x05, 0xf7, 0x8d, 0xf6, 0x8b, 0xf6, + 0x29, 0xf6, 0x25, 0xf6, 0xd8, 0xf5, 0xd4, 0xf5, 0xa0, 0xf5, 0x9e, 0xf5, + 0x7e, 0xf5, 0x7b, 0xf5, 0x73, 0xf5, 0x6f, 0xf5, 0x7d, 0xf5, 0x7b, 0xf5, + 0x9c, 0xf5, 0x99, 0xf5, 0xd2, 0xf5, 0xcf, 0xf5, 0x1b, 0xf6, 0x17, 0xf6, + 0x75, 0xf6, 0x74, 0xf6, 0xe7, 0xf6, 0xe3, 0xf6, 0x68, 0xf7, 0x67, 0xf7, + 0xfb, 0xf7, 0xf7, 0xf7, 0x9d, 0xf8, 0x9b, 0xf8, 0x4d, 0xf9, 0x49, 0xf9, + 0x0c, 0xfa, 0x09, 0xfa, 0xd5, 0xfa, 0xd3, 0xfa, 0xab, 0xfb, 0xa7, 0xfb, + 0x89, 0xfc, 0x87, 0xfc, 0x70, 0xfd, 0x6c, 0xfd, 0x5b, 0xfe, 0x56, 0xfe, + 0x48, 0xff, 0x46, 0xff, 0x3a, 0x00, 0x33, 0x00, 0x28, 0x01, 0x27, 0x01, + 0x18, 0x02, 0x12, 0x02, 0xff, 0x02, 0xfd, 0x02, 0xe3, 0x03, 0xdf, 0x03, + 0xba, 0x04, 0xb7, 0x04, 0x85, 0x05, 0x82, 0x05, 0x44, 0x06, 0x40, 0x06, + 0xf4, 0x06, 0xf2, 0x06, 0x93, 0x07, 0x8e, 0x07, 0x1e, 0x08, 0x1b, 0x08, + 0x97, 0x08, 0x94, 0x08, 0xfc, 0x08, 0xf8, 0x08, 0x4e, 0x09, 0x49, 0x09, + 0x88, 0x09, 0x86, 0x09, 0xb2, 0x09, 0xac, 0x09, 0xc1, 0x09, 0xbe, 0x09, + 0xc0, 0x09, 0xb9, 0x09, 0xa7, 0x09, 0xa3, 0x09, 0x7c, 0x09, 0x77, 0x09, + 0x3c, 0x09, 0x39, 0x09, 0xea, 0x08, 0xe5, 0x08, 0x84, 0x08, 0x80, 0x08, + 0x0e, 0x08, 0x0a, 0x08, 0x85, 0x07, 0x80, 0x07, 0xec, 0x06, 0xe9, 0x06, + 0x47, 0x06, 0x43, 0x06, 0x94, 0x05, 0x8f, 0x05, 0xd1, 0x04, 0xcf, 0x04, + 0x0a, 0x04, 0x05, 0x04, 0x35, 0x03, 0x32, 0x03, 0x5b, 0x02, 0x57, 0x02, + 0x7c, 0x01, 0x77, 0x01, 0x94, 0x00, 0x92, 0x00, 0xb1, 0xff, 0xac, 0xff, + 0xcb, 0xfe, 0xc8, 0xfe, 0xeb, 0xfd, 0xe8, 0xfd, 0x11, 0xfd, 0x0b, 0xfd, + 0x3b, 0xfc, 0x3a, 0xfc, 0x74, 0xfb, 0x6f, 0xfb, 0xb4, 0xfa, 0xb2, 0xfa, + 0x05, 0xfa, 0x01, 0xfa, 0x63, 0xf9, 0x61, 0xf9, 0xd3, 0xf8, 0xcf, 0xf8, + 0x53, 0xf8, 0x4f, 0xf8, 0xe8, 0xf7, 0xe4, 0xf7, 0x8e, 0xf7, 0x8c, 0xf7, + 0x48, 0xf7, 0x45, 0xf7, 0x17, 0xf7, 0x13, 0xf7, 0xf8, 0xf6, 0xf5, 0xf6, + 0xee, 0xf6, 0xeb, 0xf6, 0xf9, 0xf6, 0xf6, 0xf6, 0x17, 0xf7, 0x14, 0xf7, + 0x46, 0xf7, 0x43, 0xf7, 0x89, 0xf7, 0x86, 0xf7, 0xdd, 0xf7, 0xdb, 0xf7, + 0x44, 0xf8, 0x41, 0xf8, 0xbc, 0xf8, 0xb9, 0xf8, 0x45, 0xf9, 0x40, 0xf9, + 0xd8, 0xf9, 0xd7, 0xf9, 0x7d, 0xfa, 0x79, 0xfa, 0x2d, 0xfb, 0x29, 0xfb, + 0xe6, 0xfb, 0xe6, 0xfb, 0xae, 0xfc, 0xaa, 0xfc, 0x7c, 0xfd, 0x7a, 0xfd, + 0x52, 0xfe, 0x4f, 0xfe, 0x2f, 0xff, 0x29, 0xff, 0x0d, 0x00, 0x0b, 0x00, + 0xed, 0x00, 0xe7, 0x00, 0xcb, 0x01, 0xc9, 0x01, 0xa4, 0x02, 0xa1, 0x02, + 0x7f, 0x03, 0x79, 0x03, 0x49, 0x04, 0x46, 0x04, 0x0d, 0x05, 0x09, 0x05, + 0xc4, 0x05, 0xbf, 0x05, 0x69, 0x06, 0x68, 0x06, 0x06, 0x07, 0x00, 0x07, + 0x8d, 0x07, 0x89, 0x07, 0x05, 0x08, 0x02, 0x08, 0x6a, 0x08, 0x65, 0x08, + 0xbb, 0x08, 0xb8, 0x08, 0xfb, 0x08, 0xf6, 0x08, 0x22, 0x09, 0x1f, 0x09, + 0x3a, 0x09, 0x37, 0x09, 0x3a, 0x09, 0x37, 0x09, 0x29, 0x09, 0x25, 0x09, + 0x04, 0x09, 0x00, 0x09, 0xcb, 0x08, 0xc7, 0x08, 0x80, 0x08, 0x7d, 0x08, + 0x23, 0x08, 0x21, 0x08, 0xb6, 0x07, 0xb3, 0x07, 0x39, 0x07, 0x36, 0x07, + 0xad, 0x06, 0xa9, 0x06, 0x0f, 0x06, 0x0c, 0x06, 0x65, 0x05, 0x63, 0x05, + 0xaf, 0x04, 0xac, 0x04, 0xee, 0x03, 0xea, 0x03, 0x21, 0x03, 0x1e, 0x03, + 0x4e, 0x02, 0x4c, 0x02, 0x74, 0x01, 0x72, 0x01, 0x95, 0x00, 0x90, 0x00, + 0xaf, 0xff, 0xad, 0xff, 0xcb, 0xfe, 0xc7, 0xfe, 0xe4, 0xfd, 0xe1, 0xfd, + 0x04, 0xfd, 0x00, 0xfd, 0x25, 0xfc, 0x25, 0xfc, 0x54, 0xfb, 0x4e, 0xfb, + 0x85, 0xfa, 0x84, 0xfa, 0xca, 0xf9, 0xc6, 0xf9, 0x19, 0xf9, 0x16, 0xf9, + 0x79, 0xf8, 0x76, 0xf8, 0xed, 0xf7, 0xe9, 0xf7, 0x6f, 0xf7, 0x6b, 0xf7, + 0x08, 0xf7, 0x04, 0xf7, 0xb4, 0xf6, 0xb0, 0xf6, 0x75, 0xf6, 0x70, 0xf6, + 0x47, 0xf6, 0x44, 0xf6, 0x32, 0xf6, 0x2d, 0xf6, 0x2c, 0xf6, 0x2b, 0xf6, + 0x43, 0xf6, 0x3d, 0xf6, 0x68, 0xf6, 0x64, 0xf6, 0xa1, 0xf6, 0x9e, 0xf6, + 0xf0, 0xf6, 0xeb, 0xf6, 0x4d, 0xf7, 0x4a, 0xf7, 0xbf, 0xf7, 0xba, 0xf7, + 0x40, 0xf8, 0x3d, 0xf8, 0xd3, 0xf8, 0xcf, 0xf8, 0x76, 0xf9, 0x71, 0xf9, + 0x25, 0xfa, 0x22, 0xfa, 0xe2, 0xfa, 0xdf, 0xfa, 0xac, 0xfb, 0xa7, 0xfb, + 0x80, 0xfc, 0x7c, 0xfc, 0x5b, 0xfd, 0x57, 0xfd, 0x40, 0xfe, 0x3c, 0xfe, + 0x2c, 0xff, 0x27, 0xff, 0x19, 0x00, 0x14, 0x00, 0x08, 0x01, 0x05, 0x01, + 0xf7, 0x01, 0xf3, 0x01, 0xe4, 0x02, 0xe0, 0x02, 0xc9, 0x03, 0xc6, 0x03, + 0xa6, 0x04, 0xa2, 0x04, 0x7d, 0x05, 0x76, 0x05, 0x43, 0x06, 0x3f, 0x06, + 0xfb, 0x06, 0xf7, 0x06, 0xa5, 0x07, 0xa3, 0x07, 0x3d, 0x08, 0x39, 0x08, + 0xc3, 0x08, 0xbf, 0x08, 0x34, 0x09, 0x30, 0x09, 0x92, 0x09, 0x90, 0x09, + 0xdc, 0x09, 0xd7, 0x09, 0x0c, 0x0a, 0x0a, 0x0a, 0x2f, 0x0a, 0x2c, 0x0a, + 0x35, 0x0a, 0x30, 0x0a, 0x2e, 0x0a, 0x2b, 0x0a, 0x0f, 0x0a, 0x0b, 0x0a, + 0xdc, 0x09, 0xd8, 0x09, 0x95, 0x09, 0x93, 0x09, 0x3d, 0x09, 0x38, 0x09, + 0xd4, 0x08, 0xd1, 0x08, 0x5a, 0x08, 0x57, 0x08, 0xce, 0x07, 0xca, 0x07, + 0x36, 0x07, 0x32, 0x07, 0x8a, 0x06, 0x86, 0x06, 0xd5, 0x05, 0xd3, 0x05, + 0x12, 0x05, 0x0e, 0x05, 0x41, 0x04, 0x3e, 0x04, 0x6a, 0x03, 0x67, 0x03, + 0x89, 0x02, 0x84, 0x02, 0xa4, 0x01, 0xa1, 0x01, 0xb5, 0x00, 0xb2, 0x00, + 0xc7, 0xff, 0xc2, 0xff, 0xd1, 0xfe, 0xce, 0xfe, 0xdf, 0xfd, 0xdb, 0xfd, + 0xef, 0xfc, 0xec, 0xfc, 0x03, 0xfc, 0x00, 0xfc, 0x21, 0xfb, 0x1d, 0xfb, + 0x46, 0xfa, 0x43, 0xfa, 0x77, 0xf9, 0x74, 0xf9, 0xb9, 0xf8, 0xb5, 0xf8, + 0x07, 0xf8, 0x06, 0xf8, 0x6a, 0xf7, 0x67, 0xf7, 0xe2, 0xf6, 0xde, 0xf6, + 0x6b, 0xf6, 0x67, 0xf6, 0x0c, 0xf6, 0x08, 0xf6, 0xbe, 0xf5, 0xb9, 0xf5, + 0x89, 0xf5, 0x86, 0xf5, 0x6a, 0xf5, 0x65, 0xf5, 0x5e, 0xf5, 0x5a, 0xf5, + 0x6b, 0xf5, 0x67, 0xf5, 0x8d, 0xf5, 0x88, 0xf5, 0xc1, 0xf5, 0xbe, 0xf5, + 0x0b, 0xf6, 0x07, 0xf6, 0x67, 0xf6, 0x64, 0xf6, 0xd8, 0xf6, 0xd3, 0xf6, + 0x58, 0xf7, 0x54, 0xf7, 0xe9, 0xf7, 0xe6, 0xf7, 0x8b, 0xf8, 0x88, 0xf8, + 0x3b, 0xf9, 0x39, 0xf9, 0xf9, 0xf9, 0xf3, 0xf9, 0xc3, 0xfa, 0xc1, 0xfa, + 0x97, 0xfb, 0x91, 0xfb, 0x74, 0xfc, 0x71, 0xfc, 0x57, 0xfd, 0x53, 0xfd, + 0x43, 0xfe, 0x3f, 0xfe, 0x31, 0xff, 0x2d, 0xff, 0x21, 0x00, 0x1e, 0x00, + 0x13, 0x01, 0x10, 0x01, 0x03, 0x02, 0xfe, 0x01, 0xed, 0x02, 0xec, 0x02, + 0xd5, 0x03, 0xd0, 0x03, 0xaf, 0x04, 0xae, 0x04, 0x84, 0x05, 0x7f, 0x05, + 0x48, 0x06, 0x45, 0x06, 0x00, 0x07, 0xfc, 0x06, 0xa8, 0x07, 0xa4, 0x07, + 0x3a, 0x08, 0x3a, 0x08, 0xc1, 0x08, 0xbd, 0x08, 0x30, 0x09, 0x2d, 0x09, + 0x8c, 0x09, 0x8a, 0x09, 0xd3, 0x09, 0xd0, 0x09, 0x07, 0x0a, 0x03, 0x0a, + 0x23, 0x0a, 0x21, 0x0a, 0x2d, 0x0a, 0x2b, 0x0a, 0x20, 0x0a, 0x1e, 0x0a, + 0x03, 0x0a, 0x00, 0x0a, 0xcd, 0x09, 0xcb, 0x09, 0x88, 0x09, 0x85, 0x09, + 0x2e, 0x09, 0x2a, 0x09, 0xc4, 0x08, 0xc0, 0x08, 0x47, 0x08, 0x46, 0x08, + 0xbc, 0x07, 0xb9, 0x07, 0x23, 0x07, 0x20, 0x07, 0x79, 0x06, 0x76, 0x06, + 0xc3, 0x05, 0xc0, 0x05, 0x01, 0x05, 0x00, 0x05, 0x39, 0x04, 0x33, 0x04, + 0x64, 0x03, 0x63, 0x03, 0x88, 0x02, 0x84, 0x02, 0xab, 0x01, 0xa7, 0x01, + 0xc2, 0x00, 0xbf, 0x00, 0xdd, 0xff, 0xda, 0xff, 0xf8, 0xfe, 0xf3, 0xfe, + 0x12, 0xfe, 0x12, 0xfe, 0x37, 0xfd, 0x31, 0xfd, 0x5d, 0xfc, 0x5b, 0xfc, + 0x8e, 0xfb, 0x8a, 0xfb, 0xcc, 0xfa, 0xca, 0xfa, 0x13, 0xfa, 0x0f, 0xfa, + 0x69, 0xf9, 0x66, 0xf9, 0xd2, 0xf8, 0xcd, 0xf8, 0x48, 0xf8, 0x47, 0xf8, + 0xd8, 0xf7, 0xd3, 0xf7, 0x72, 0xf7, 0x6f, 0xf7, 0x24, 0xf7, 0x22, 0xf7, + 0xea, 0xf6, 0xe6, 0xf6, 0xc1, 0xf6, 0xbf, 0xf6, 0xb1, 0xf6, 0xac, 0xf6, + 0xae, 0xf6, 0xac, 0xf6, 0xc5, 0xf6, 0xc1, 0xf6, 0xec, 0xf6, 0xe9, 0xf6, + 0x21, 0xf7, 0x1e, 0xf7, 0x70, 0xf7, 0x6e, 0xf7, 0xcb, 0xf7, 0xc7, 0xf7, + 0x37, 0xf8, 0x34, 0xf8, 0xb4, 0xf8, 0xb1, 0xf8, 0x3c, 0xf9, 0x3a, 0xf9, + 0xd5, 0xf9, 0xcf, 0xf9, 0x78, 0xfa, 0x75, 0xfa, 0x26, 0xfb, 0x22, 0xfb, + 0xe0, 0xfb, 0xdd, 0xfb, 0xa1, 0xfc, 0x9d, 0xfc, 0x68, 0xfd, 0x65, 0xfd, + 0x38, 0xfe, 0x33, 0xfe, 0x07, 0xff, 0x05, 0xff, 0xda, 0xff, 0xd6, 0xff, + 0xae, 0x00, 0xaa, 0x00, 0x7e, 0x01, 0x7b, 0x01, 0x4d, 0x02, 0x4a, 0x02, + 0x16, 0x03, 0x13, 0x03, 0xd5, 0x03, 0xd4, 0x03, 0x8e, 0x04, 0x89, 0x04, + 0x38, 0x05, 0x37, 0x05, 0xd9, 0x05, 0xd4, 0x05, 0x69, 0x06, 0x67, 0x06, + 0xeb, 0x06, 0xe5, 0x06, 0x5d, 0x07, 0x59, 0x07, 0xbb, 0x07, 0xb9, 0x07, + 0x0b, 0x08, 0x07, 0x08, 0x47, 0x08, 0x43, 0x08, 0x71, 0x08, 0x6f, 0x08, + 0x8c, 0x08, 0x87, 0x08, 0x90, 0x08, 0x8d, 0x08, 0x83, 0x08, 0x80, 0x08, + 0x65, 0x08, 0x61, 0x08, 0x34, 0x08, 0x32, 0x08, 0xf4, 0x07, 0xf0, 0x07, + 0xa0, 0x07, 0x9e, 0x07, 0x40, 0x07, 0x3d, 0x07, 0xcf, 0x06, 0xc9, 0x06, + 0x4d, 0x06, 0x4c, 0x06, 0xc2, 0x05, 0xbe, 0x05, 0x28, 0x05, 0x26, 0x05, + 0x84, 0x04, 0x81, 0x04, 0xd5, 0x03, 0xd3, 0x03, 0x1e, 0x03, 0x1c, 0x03, + 0x61, 0x02, 0x60, 0x02, 0x9f, 0x01, 0x9b, 0x01, 0xd7, 0x00, 0xd5, 0x00, + 0x0f, 0x00, 0x0d, 0x00, 0x46, 0xff, 0x44, 0xff, 0x80, 0xfe, 0x7d, 0xfe, + 0xbf, 0xfd, 0xbc, 0xfd, 0x02, 0xfd, 0x00, 0xfd, 0x4e, 0xfc, 0x4a, 0xfc, + 0xa2, 0xfb, 0xa1, 0xfb, 0x04, 0xfb, 0x00, 0xfb, 0x71, 0xfa, 0x6d, 0xfa, + 0xea, 0xf9, 0xe9, 0xf9, 0x75, 0xf9, 0x6f, 0xf9, 0x0b, 0xf9, 0x0b, 0xf9, + 0xba, 0xf8, 0xb4, 0xf8, 0x71, 0xf8, 0x70, 0xf8, 0x41, 0xf8, 0x3c, 0xf8, + 0x1b, 0xf8, 0x19, 0xf8, 0x0d, 0xf8, 0x09, 0xf8, 0x0c, 0xf8, 0x0a, 0xf8, + 0x1e, 0xf8, 0x1b, 0xf8, 0x43, 0xf8, 0x40, 0xf8, 0x75, 0xf8, 0x72, 0xf8, + 0xbc, 0xf8, 0xb6, 0xf8, 0x0c, 0xf9, 0x0a, 0xf9, 0x72, 0xf9, 0x6e, 0xf9, + 0xe5, 0xf9, 0xe2, 0xf9, 0x68, 0xfa, 0x65, 0xfa, 0xf7, 0xfa, 0xf3, 0xfa, + 0x91, 0xfb, 0x8d, 0xfb, 0x2e, 0xfc, 0x2b, 0xfc, 0xd6, 0xfc, 0xd0, 0xfc, + 0x7b, 0xfd, 0x7b, 0xfd, 0x2f, 0xfe, 0x29, 0xfe, 0xe6, 0xfe, 0xe3, 0xfe, + 0xa9, 0xff, 0xa5, 0xff, 0x76, 0x00, 0x72, 0x00, 0x48, 0x01, 0x45, 0x01, + 0x20, 0x02, 0x1c, 0x02, 0xf4, 0x02, 0xf0, 0x02, 0xc1, 0x03, 0xbe, 0x03, + 0x86, 0x04, 0x83, 0x04, 0x3e, 0x05, 0x3a, 0x05, 0xe5, 0x05, 0xe2, 0x05, + 0x7b, 0x06, 0x78, 0x06, 0x00, 0x07, 0xfd, 0x06, 0x72, 0x07, 0x6f, 0x07, + 0xce, 0x07, 0xcb, 0x07, 0x1a, 0x08, 0x17, 0x08, 0x4e, 0x08, 0x4a, 0x08, + 0x6f, 0x08, 0x6c, 0x08, 0x7d, 0x08, 0x7a, 0x08, 0x76, 0x08, 0x72, 0x08, + 0x5c, 0x08, 0x5a, 0x08, 0x30, 0x08, 0x2c, 0x08, 0xf1, 0x07, 0xef, 0x07, + 0xa0, 0x07, 0x9e, 0x07, 0x3e, 0x07, 0x3b, 0x07, 0xce, 0x06, 0xca, 0x06, + 0x4b, 0x06, 0x49, 0x06, 0xbc, 0x05, 0xb9, 0x05, 0x21, 0x05, 0x1d, 0x05, + 0x79, 0x04, 0x75, 0x04, 0xc7, 0x03, 0xc5, 0x03, 0x0d, 0x03, 0x07, 0x03, + 0x4a, 0x02, 0x48, 0x02, 0x85, 0x01, 0x81, 0x01, 0xb9, 0x00, 0xb6, 0x00, + 0xf0, 0xff, 0xed, 0xff, 0x1e, 0xff, 0x1c, 0xff, 0x59, 0xfe, 0x56, 0xfe, + 0x8d, 0xfd, 0x89, 0xfd, 0xcf, 0xfc, 0xcb, 0xfc, 0x12, 0xfc, 0x11, 0xfc, + 0x63, 0xfb, 0x5e, 0xfb, 0xc0, 0xfa, 0xc0, 0xfa, 0x28, 0xfa, 0x22, 0xfa, + 0x9f, 0xf9, 0x9d, 0xf9, 0x27, 0xf9, 0x22, 0xf9, 0xba, 0xf8, 0xb7, 0xf8, + 0x64, 0xf8, 0x61, 0xf8, 0x1b, 0xf8, 0x18, 0xf8, 0xe9, 0xf7, 0xe6, 0xf7, + 0xc4, 0xf7, 0xc1, 0xf7, 0xb5, 0xf7, 0xb2, 0xf7, 0xb6, 0xf7, 0xb2, 0xf7, + 0xc9, 0xf7, 0xc6, 0xf7, 0xed, 0xf7, 0xea, 0xf7, 0x21, 0xf8, 0x1d, 0xf8, + 0x67, 0xf8, 0x65, 0xf8, 0xbc, 0xf8, 0xb7, 0xf8, 0x1e, 0xf9, 0x1c, 0xf9, + 0x90, 0xf9, 0x8d, 0xf9, 0x0d, 0xfa, 0x0a, 0xfa, 0x97, 0xfa, 0x95, 0xfa, + 0x2c, 0xfb, 0x28, 0xfb, 0xcb, 0xfb, 0xc7, 0xfb, 0x70, 0xfc, 0x6e, 0xfc, + 0x1e, 0xfd, 0x1b, 0xfd, 0xd2, 0xfd, 0xce, 0xfd, 0x87, 0xfe, 0x86, 0xfe, + 0x45, 0xff, 0x41, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xbb, 0x00, 0xb9, 0x00, + 0x76, 0x01, 0x72, 0x01, 0x29, 0x02, 0x28, 0x02, 0xdc, 0x02, 0xd9, 0x02, + 0x84, 0x03, 0x83, 0x03, 0x26, 0x04, 0x24, 0x04, 0xbe, 0x04, 0xbb, 0x04, + 0x49, 0x05, 0x48, 0x05, 0xca, 0x05, 0xc6, 0x05, 0x3d, 0x06, 0x3b, 0x06, + 0xa3, 0x06, 0x9f, 0x06, 0xf8, 0x06, 0xf6, 0x06, 0x3f, 0x07, 0x3d, 0x07, + 0x76, 0x07, 0x74, 0x07, 0x9d, 0x07, 0x9b, 0x07, 0xb4, 0x07, 0xb2, 0x07, + 0xbb, 0x07, 0xb8, 0x07, 0xb2, 0x07, 0xb0, 0x07, 0x98, 0x07, 0x95, 0x07, + 0x70, 0x07, 0x6f, 0x07, 0x3d, 0x07, 0x38, 0x07, 0xf7, 0x06, 0xf6, 0x06, + 0xa8, 0x06, 0xa5, 0x06, 0x4b, 0x06, 0x48, 0x06, 0xe3, 0x05, 0xe1, 0x05, + 0x6f, 0x05, 0x6d, 0x05, 0xf2, 0x04, 0xf1, 0x04, 0x6d, 0x04, 0x68, 0x04, + 0xde, 0x03, 0xdc, 0x03, 0x49, 0x03, 0x46, 0x03, 0xad, 0x02, 0xaa, 0x02, + 0x0d, 0x02, 0x0c, 0x02, 0x6b, 0x01, 0x67, 0x01, 0xc5, 0x00, 0xc3, 0x00, + 0x20, 0x00, 0x1d, 0x00, 0x7a, 0xff, 0x76, 0xff, 0xd6, 0xfe, 0xd3, 0xfe, + 0x34, 0xfe, 0x2f, 0xfe, 0x94, 0xfd, 0x96, 0xfd, 0xff, 0xfc, 0xfb, 0xfc, + 0x6e, 0xfc, 0x6d, 0xfc, 0xe6, 0xfb, 0xe1, 0xfb, 0x64, 0xfb, 0x64, 0xfb, + 0xf2, 0xfa, 0xed, 0xfa, 0x84, 0xfa, 0x83, 0xfa, 0x29, 0xfa, 0x25, 0xfa, + 0xd4, 0xf9, 0xd3, 0xf9, 0x94, 0xf9, 0x90, 0xf9, 0x5b, 0xf9, 0x59, 0xf9, + 0x34, 0xf9, 0x32, 0xf9, 0x18, 0xf9, 0x15, 0xf9, 0x0a, 0xf9, 0x0a, 0xf9, + 0x0d, 0xf9, 0x0a, 0xf9, 0x1c, 0xf9, 0x1a, 0xf9, 0x37, 0xf9, 0x35, 0xf9, + 0x62, 0xf9, 0x5f, 0xf9, 0x96, 0xf9, 0x95, 0xf9, 0xd8, 0xf9, 0xd5, 0xf9, + 0x24, 0xfa, 0x23, 0xfa, 0x7b, 0xfa, 0x78, 0xfa, 0xdc, 0xfa, 0xd8, 0xfa, + 0x45, 0xfb, 0x45, 0xfb, 0xb8, 0xfb, 0xb5, 0xfb, 0x30, 0xfc, 0x2e, 0xfc, + 0xae, 0xfc, 0xae, 0xfc, 0x33, 0xfd, 0x2e, 0xfd, 0xba, 0xfd, 0xb9, 0xfd, + 0x45, 0xfe, 0x42, 0xfe, 0xd2, 0xfe, 0xd0, 0xfe, 0x62, 0xff, 0x5f, 0xff, + 0xed, 0xff, 0xeb, 0xff, 0x7a, 0x00, 0x79, 0x00, 0x02, 0x01, 0x00, 0x01, + 0x8b, 0x01, 0x89, 0x01, 0x0b, 0x02, 0x08, 0x02, 0x87, 0x02, 0x86, 0x02, + 0xfc, 0x02, 0xf9, 0x02, 0x69, 0x03, 0x68, 0x03, 0xcf, 0x03, 0xcd, 0x03, + 0x2c, 0x04, 0x29, 0x04, 0x7e, 0x04, 0x7c, 0x04, 0xc7, 0x04, 0xc5, 0x04, + 0x06, 0x05, 0x05, 0x05, 0x38, 0x05, 0x36, 0x05, 0x60, 0x05, 0x60, 0x05, + 0x7d, 0x05, 0x7a, 0x05, 0x8f, 0x05, 0x8f, 0x05, 0x96, 0x05, 0x93, 0x05, + 0x90, 0x05, 0x8d, 0x05, 0x80, 0x05, 0x7e, 0x05, 0x65, 0x05, 0x63, 0x05, + 0x42, 0x05, 0x41, 0x05, 0x12, 0x05, 0x0f, 0x05, 0xdb, 0x04, 0xda, 0x04, + 0x9a, 0x04, 0x98, 0x04, 0x52, 0x04, 0x4f, 0x04, 0x02, 0x04, 0x02, 0x04, + 0xad, 0x03, 0xaa, 0x03, 0x4d, 0x03, 0x4c, 0x03, 0xee, 0x02, 0xec, 0x02, + 0x87, 0x02, 0x85, 0x02, 0x1f, 0x02, 0x1d, 0x02, 0xb3, 0x01, 0xaf, 0x01, + 0x43, 0x01, 0x42, 0x01, 0xd6, 0x00, 0xd2, 0x00, 0x64, 0x00, 0x64, 0x00, + 0xf7, 0xff, 0xf4, 0xff, 0x89, 0xff, 0x86, 0xff, 0x20, 0xff, 0x1f, 0xff, + 0xbb, 0xfe, 0xb7, 0xfe, 0x56, 0xfe, 0x57, 0xfe, 0xfb, 0xfd, 0xf7, 0xfd, + 0xa4, 0xfd, 0xa2, 0xfd, 0x52, 0xfd, 0x51, 0xfd, 0x09, 0xfd, 0x07, 0xfd, + 0xc5, 0xfc, 0xc5, 0xfc, 0x8c, 0xfc, 0x89, 0xfc, 0x59, 0xfc, 0x58, 0xfc, + 0x30, 0xfc, 0x2d, 0xfc, 0x0f, 0xfc, 0x0d, 0xfc, 0xf7, 0xfb, 0xf6, 0xfb, + 0xe7, 0xfb, 0xe6, 0xfb, 0xe2, 0xfb, 0xe0, 0xfb, 0xe4, 0xfb, 0xe1, 0xfb, + 0xf0, 0xfb, 0xee, 0xfb, 0x02, 0xfc, 0xff, 0xfb, 0x1d, 0xfc, 0x1d, 0xfc, + 0x3e, 0xfc, 0x3d, 0xfc, 0x69, 0xfc, 0x68, 0xfc, 0x97, 0xfc, 0x96, 0xfc, + 0xcf, 0xfc, 0xcb, 0xfc, 0x08, 0xfd, 0x09, 0xfd, 0x4b, 0xfd, 0x48, 0xfd, + 0x90, 0xfd, 0x8f, 0xfd, 0xd7, 0xfd, 0xd3, 0xfd, 0x24, 0xfe, 0x23, 0xfe, + 0x73, 0xfe, 0x70, 0xfe, 0xc1, 0xfe, 0xc0, 0xfe, 0x15, 0xff, 0x12, 0xff, + 0x64, 0xff, 0x63, 0xff, 0xb7, 0xff, 0xb5, 0xff, 0x06, 0x00, 0x05, 0x00, + 0x57, 0x00, 0x54, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xee, 0x00, 0xea, 0x00, + 0x31, 0x01, 0x31, 0x01, 0x75, 0x01, 0x73, 0x01, 0xb3, 0x01, 0xb1, 0x01, + 0xec, 0x01, 0xeb, 0x01, 0x20, 0x02, 0x1d, 0x02, 0x4d, 0x02, 0x4d, 0x02, + 0x76, 0x02, 0x72, 0x02, 0x97, 0x02, 0x96, 0x02, 0xb3, 0x02, 0xb1, 0x02, + 0xc6, 0x02, 0xc5, 0x02, 0xd7, 0x02, 0xd4, 0x02, 0xdf, 0x02, 0xdb, 0x02, + 0xde, 0x02, 0xdf, 0x02, 0xdc, 0x02, 0xda, 0x02, 0xd1, 0x02, 0xce, 0x02, + 0xc0, 0x02, 0xc0, 0x02, 0xaa, 0x02, 0xa6, 0x02, 0x8f, 0x02, 0x8d, 0x02, + 0x6c, 0x02, 0x6c, 0x02, 0x4a, 0x02, 0x45, 0x02, 0x1e, 0x02, 0x1e, 0x02, + 0xf5, 0x01, 0xef, 0x01, 0xc1, 0x01, 0xc0, 0x01, 0x8e, 0x01, 0x8c, 0x01, + 0x59, 0x01, 0x55, 0x01, 0x21, 0x01, 0x20, 0x01, 0xe8, 0x00, 0xe5, 0x00, + 0xae, 0x00, 0xaa, 0x00, 0x74, 0x00, 0x72, 0x00, 0x3a, 0x00, 0x37, 0x00, + 0x03, 0x00, 0x01, 0x00, 0xca, 0xff, 0xc9, 0xff, 0x96, 0xff, 0x93, 0xff, + 0x64, 0xff, 0x61, 0xff, 0x34, 0xff, 0x32, 0xff, 0x08, 0xff, 0x04, 0xff, + 0xde, 0xfe, 0xde, 0xfe, 0xbb, 0xfe, 0xb8, 0xfe, 0x98, 0xfe, 0x96, 0xfe, + 0x7d, 0xfe, 0x7a, 0xfe, 0x65, 0xfe, 0x63, 0xfe, 0x52, 0xfe, 0x50, 0xfe, + 0x46, 0xfe, 0x45, 0xfe, 0x39, 0xfe, 0x37, 0xfe, 0x38, 0xfe, 0x35, 0xfe, + 0x37, 0xfe, 0x33, 0xfe, 0x3c, 0xfe, 0x3b, 0xfe, 0x47, 0xfe, 0x44, 0xfe, + 0x54, 0xfe, 0x53, 0xfe, 0x68, 0xfe, 0x65, 0xfe, 0x7e, 0xfe, 0x7c, 0xfe, + 0x99, 0xfe, 0x96, 0xfe, 0xb7, 0xfe, 0xb5, 0xfe, 0xd8, 0xfe, 0xd6, 0xfe, + 0xfc, 0xfe, 0xfa, 0xfe, 0x20, 0xff, 0x20, 0xff, 0x4d, 0xff, 0x48, 0xff, + 0x74, 0xff, 0x74, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0xcc, 0xff, 0xca, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0x27, 0x00, 0x23, 0x00, 0x51, 0x00, 0x51, 0x00, + 0x7e, 0x00, 0x7d, 0x00, 0xa6, 0x00, 0xa4, 0x00, 0xcd, 0x00, 0xcc, 0x00, + 0xf5, 0x00, 0xf3, 0x00, 0x16, 0x01, 0x15, 0x01, 0x37, 0x01, 0x36, 0x01, + 0x53, 0x01, 0x51, 0x01, 0x6c, 0x01, 0x6b, 0x01, 0x83, 0x01, 0x81, 0x01, + 0x91, 0x01, 0x91, 0x01, 0xa3, 0x01, 0xa0, 0x01, 0xa8, 0x01, 0xa7, 0x01, + 0xae, 0x01, 0xae, 0x01, 0xb1, 0x01, 0xaf, 0x01, 0xae, 0x01, 0xab, 0x01, + 0xa4, 0x01, 0xa1, 0x01, 0x98, 0x01, 0x97, 0x01, 0x87, 0x01, 0x86, 0x01, + 0x79, 0x01, 0x74, 0x01, 0x5c, 0x01, 0x5b, 0x01, 0x44, 0x01, 0x42, 0x01, + 0x23, 0x01, 0x22, 0x01, 0x04, 0x01, 0x03, 0x01, 0xdf, 0x00, 0xdc, 0x00, + 0xba, 0x00, 0xb8, 0x00, 0x91, 0x00, 0x91, 0x00, 0x64, 0x00, 0x61, 0x00, + 0x3c, 0x00, 0x3b, 0x00, 0x0c, 0x00, 0x09, 0x00, 0xe1, 0xff, 0xdf, 0xff, + 0xb0, 0xff, 0xae, 0xff, 0x85, 0xff, 0x82, 0xff, 0x57, 0xff, 0x56, 0xff, + 0x2b, 0xff, 0x29, 0xff, 0x02, 0xff, 0x00, 0xff, 0xd6, 0xfe, 0xd4, 0xfe, + 0xb1, 0xfe, 0xb0, 0xfe, 0x8c, 0xfe, 0x8a, 0xfe, 0x6c, 0xfe, 0x6c, 0xfe, + 0x4c, 0xfe, 0x4b, 0xfe, 0x33, 0xfe, 0x31, 0xfe, 0x1c, 0xfe, 0x1c, 0xfe, + 0x0a, 0xfe, 0x06, 0xfe, 0xfc, 0xfd, 0xfd, 0xfd, 0xf1, 0xfd, 0xef, 0xfd, + 0xec, 0xfd, 0xea, 0xfd, 0xe9, 0xfd, 0xe8, 0xfd, 0xed, 0xfd, 0xea, 0xfd, + 0xf4, 0xfd, 0xf3, 0xfd, 0x01, 0xfe, 0xff, 0xfd, 0x11, 0xfe, 0x0f, 0xfe, + 0x24, 0xfe, 0x25, 0xfe, 0x3f, 0xfe, 0x3b, 0xfe, 0x58, 0xfe, 0x58, 0xfe, + 0x79, 0xfe, 0x77, 0xfe, 0x9b, 0xfe, 0x9a, 0xfe, 0xc3, 0xfe, 0xc1, 0xfe, + 0xec, 0xfe, 0xeb, 0xfe, 0x18, 0xff, 0x16, 0xff, 0x46, 0xff, 0x46, 0xff, + 0x75, 0xff, 0x74, 0xff, 0xa7, 0xff, 0xa6, 0xff, 0xd9, 0xff, 0xd8, 0xff, + 0x0c, 0x00, 0x0b, 0x00, 0x41, 0x00, 0x40, 0x00, 0x73, 0x00, 0x72, 0x00, + 0xaa, 0x00, 0xa8, 0x00, 0xd7, 0x00, 0xd5, 0x00, 0x08, 0x01, 0x08, 0x01, + 0x39, 0x01, 0x37, 0x01, 0x63, 0x01, 0x62, 0x01, 0x91, 0x01, 0x90, 0x01, + 0xb5, 0x01, 0xb1, 0x01, 0xdc, 0x01, 0xdc, 0x01, 0xfd, 0x01, 0xf9, 0x01, + 0x18, 0x02, 0x18, 0x02, 0x33, 0x02, 0x31, 0x02, 0x45, 0x02, 0x43, 0x02, + 0x59, 0x02, 0x57, 0x02, 0x61, 0x02, 0x63, 0x02, 0x6c, 0x02, 0x69, 0x02, + 0x6d, 0x02, 0x6d, 0x02, 0x6c, 0x02, 0x68, 0x02, 0x65, 0x02, 0x64, 0x02, + 0x5b, 0x02, 0x58, 0x02, 0x4a, 0x02, 0x4b, 0x02, 0x39, 0x02, 0x36, 0x02, + 0x21, 0x02, 0x21, 0x02, 0x05, 0x02, 0x03, 0x02, 0xe6, 0x01, 0xe4, 0x01, + 0xc3, 0x01, 0xc1, 0x01, 0x9d, 0x01, 0x9b, 0x01, 0x74, 0x01, 0x73, 0x01, + 0x47, 0x01, 0x46, 0x01, 0x1a, 0x01, 0x18, 0x01, 0xe9, 0x00, 0xe6, 0x00, + 0xb7, 0x00, 0xb6, 0x00, 0x83, 0x00, 0x82, 0x00, 0x4e, 0x00, 0x4c, 0x00, + 0x18, 0x00, 0x17, 0x00, 0xe3, 0xff, 0xe1, 0xff, 0xac, 0xff, 0xab, 0xff, + 0x78, 0xff, 0x77, 0xff, 0x42, 0xff, 0x40, 0xff, 0x0f, 0xff, 0x0e, 0xff, + 0xdc, 0xfe, 0xdb, 0xfe, 0xac, 0xfe, 0xab, 0xfe, 0x7f, 0xfe, 0x7e, 0xfe, + 0x52, 0xfe, 0x51, 0xfe, 0x2d, 0xfe, 0x2a, 0xfe, 0x04, 0xfe, 0x04, 0xfe, + 0xe3, 0xfd, 0xe1, 0xfd, 0xc5, 0xfd, 0xc4, 0xfd, 0xab, 0xfd, 0xaa, 0xfd, + 0x96, 0xfd, 0x94, 0xfd, 0x84, 0xfd, 0x83, 0xfd, 0x76, 0xfd, 0x75, 0xfd, + 0x6f, 0xfd, 0x6c, 0xfd, 0x6a, 0xfd, 0x69, 0xfd, 0x6a, 0xfd, 0x68, 0xfd, + 0x6f, 0xfd, 0x6e, 0xfd, 0x76, 0xfd, 0x75, 0xfd, 0x86, 0xfd, 0x83, 0xfd, + 0x94, 0xfd, 0x94, 0xfd, 0xab, 0xfd, 0xa9, 0xfd, 0xc2, 0xfd, 0xc2, 0xfd, + 0xe0, 0xfd, 0xdd, 0xfd, 0x00, 0xfe, 0xff, 0xfd, 0x22, 0xfe, 0x20, 0xfe, + 0x48, 0xfe, 0x48, 0xfe, 0x71, 0xfe, 0x6f, 0xfe, 0x9b, 0xfe, 0x9b, 0xfe, + 0xca, 0xfe, 0xc7, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, 0x28, 0xff, 0x26, 0xff, + 0x59, 0xff, 0x57, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0xbe, 0xff, 0xbc, 0xff, + 0xee, 0xff, 0xec, 0xff, 0x22, 0x00, 0x21, 0x00, 0x52, 0x00, 0x50, 0x00, + 0x82, 0x00, 0x82, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xdf, 0x00, 0xdd, 0x00, + 0x0b, 0x01, 0x09, 0x01, 0x34, 0x01, 0x33, 0x01, 0x59, 0x01, 0x59, 0x01, + 0x7f, 0x01, 0x7e, 0x01, 0x9e, 0x01, 0x9e, 0x01, 0xbe, 0x01, 0xbd, 0x01, + 0xd8, 0x01, 0xd6, 0x01, 0xef, 0x01, 0xef, 0x01, 0x02, 0x02, 0x00, 0x02, + 0x12, 0x02, 0x11, 0x02, 0x1f, 0x02, 0x1e, 0x02, 0x28, 0x02, 0x26, 0x02, + 0x2a, 0x02, 0x2a, 0x02, 0x2d, 0x02, 0x2b, 0x02, 0x29, 0x02, 0x28, 0x02, + 0x23, 0x02, 0x23, 0x02, 0x1a, 0x02, 0x19, 0x02, 0x0b, 0x02, 0x0b, 0x02, + 0xfd, 0x01, 0xfc, 0x01, 0xe6, 0x01, 0xe6, 0x01, 0xd2, 0x01, 0xd4, 0x01, + 0xba, 0x01, 0xb8, 0x01, 0x9e, 0x01, 0x9c, 0x01, 0x80, 0x01, 0x7f, 0x01, + 0x60, 0x01, 0x60, 0x01, 0x3e, 0x01, 0x3d, 0x01, 0x1c, 0x01, 0x1b, 0x01, + 0xf6, 0x00, 0xf5, 0x00, 0xd3, 0x00, 0xd1, 0x00, 0xaa, 0x00, 0xab, 0x00, + 0x86, 0x00, 0x84, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x37, 0x00, 0x37, 0x00, + 0x10, 0x00, 0x0e, 0x00, 0xe9, 0xff, 0xe9, 0xff, 0xc5, 0xff, 0xc4, 0xff, + 0x9f, 0xff, 0x9f, 0xff, 0x7f, 0xff, 0x7d, 0xff, 0x5b, 0xff, 0x5d, 0xff, + 0x40, 0xff, 0x3e, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0x02, 0xff, 0x03, 0xff, + 0xec, 0xfe, 0xea, 0xfe, 0xd6, 0xfe, 0xd5, 0xfe, 0xc1, 0xfe, 0xc0, 0xfe, + 0xad, 0xfe, 0xad, 0xfe, 0x9e, 0xfe, 0x9e, 0xfe, 0x92, 0xfe, 0x92, 0xfe, + 0x88, 0xfe, 0x86, 0xfe, 0x80, 0xfe, 0x80, 0xfe, 0x7b, 0xfe, 0x7a, 0xfe, + 0x78, 0xfe, 0x78, 0xfe, 0x78, 0xfe, 0x77, 0xfe, 0x7c, 0xfe, 0x7d, 0xfe, + 0x80, 0xfe, 0x7e, 0xfe, 0x89, 0xfe, 0x89, 0xfe, 0x91, 0xfe, 0x91, 0xfe, + 0x9e, 0xfe, 0x9c, 0xfe, 0xab, 0xfe, 0xac, 0xfe, 0xbd, 0xfe, 0xb9, 0xfe, + 0xcb, 0xfe, 0xcc, 0xfe, 0xdd, 0xfe, 0xda, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe, + 0x05, 0xff, 0x04, 0xff, 0x1b, 0xff, 0x1a, 0xff, 0x32, 0xff, 0x31, 0xff, + 0x4b, 0xff, 0x4a, 0xff, 0x61, 0xff, 0x60, 0xff, 0x7b, 0xff, 0x79, 0xff, + 0x91, 0xff, 0x92, 0xff, 0xab, 0xff, 0xa9, 0xff, 0xc2, 0xff, 0xc2, 0xff, + 0xdb, 0xff, 0xd9, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0x08, 0x00, 0x07, 0x00, + 0x1f, 0x00, 0x1e, 0x00, 0x33, 0x00, 0x32, 0x00, 0x48, 0x00, 0x47, 0x00, + 0x5a, 0x00, 0x59, 0x00, 0x6e, 0x00, 0x6b, 0x00, 0x7c, 0x00, 0x7c, 0x00, + 0x8e, 0x00, 0x8b, 0x00, 0x9a, 0x00, 0x98, 0x00, 0xa6, 0x00, 0xa6, 0x00, + 0xb2, 0x00, 0xb0, 0x00, 0xba, 0x00, 0xba, 0x00, 0xc4, 0x00, 0xc2, 0x00, + 0xc9, 0x00, 0xc8, 0x00, 0xcf, 0x00, 0xce, 0x00, 0xd3, 0x00, 0xd2, 0x00, + 0xd7, 0x00, 0xd5, 0x00, 0xd7, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0xd7, 0x00, + 0xd7, 0x00, 0xd4, 0x00, 0xd4, 0x00, 0xd6, 0x00, 0xd2, 0x00, 0xcf, 0x00, + 0xcd, 0x00, 0xce, 0x00, 0xc9, 0x00, 0xc8, 0x00, 0xc3, 0x00, 0xc2, 0x00, + 0xbe, 0x00, 0xbe, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0xb1, 0x00, 0xb1, 0x00, + 0xa8, 0x00, 0xa7, 0x00, 0xa2, 0x00, 0xa0, 0x00, 0x9a, 0x00, 0x99, 0x00, + 0x8f, 0x00, 0x8f, 0x00, 0x8b, 0x00, 0x8a, 0x00, 0x7d, 0x00, 0x7d, 0x00, + 0x7a, 0x00, 0x7a, 0x00, 0x71, 0x00, 0x70, 0x00, 0x68, 0x00, 0x68, 0x00, + 0x65, 0x00, 0x64, 0x00, 0x58, 0x00, 0x5a, 0x00, 0x59, 0x00, 0x56, 0x00, + 0x4e, 0x00, 0x4f, 0x00, 0x49, 0x00, 0x47, 0x00, 0x44, 0x00, 0x46, 0x00, + 0x3e, 0x00, 0x3d, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x36, 0x00, 0x35, 0x00, + 0x33, 0x00, 0x34, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x2b, 0x00, 0x2c, 0x00, + 0x2c, 0x00, 0x2a, 0x00, 0x26, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, + 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0x22, 0x00, + 0x1e, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x17, 0x00, 0x18, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0a, 0x00, + 0x03, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xfd, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xe9, 0xff, 0xea, 0xff, + 0xe6, 0xff, 0xe4, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xd3, 0xff, 0xd4, 0xff, + 0xd0, 0xff, 0xce, 0xff, 0xc5, 0xff, 0xc3, 0xff, 0xbe, 0xff, 0xbe, 0xff, + 0xb5, 0xff, 0xb3, 0xff, 0xac, 0xff, 0xab, 0xff, 0xa4, 0xff, 0xa4, 0xff, + 0x99, 0xff, 0x96, 0xff, 0x91, 0xff, 0x92, 0xff, 0x87, 0xff, 0x86, 0xff, + 0x7e, 0xff, 0x7d, 0xff, 0x77, 0xff, 0x77, 0xff, 0x6d, 0xff, 0x6b, 0xff, + 0x65, 0xff, 0x65, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x55, 0xff, 0x53, 0xff, + 0x4e, 0xff, 0x4e, 0xff, 0x47, 0xff, 0x46, 0xff, 0x43, 0xff, 0x42, 0xff, + 0x3d, 0xff, 0x3c, 0xff, 0x3a, 0xff, 0x39, 0xff, 0x38, 0xff, 0x36, 0xff, + 0x38, 0xff, 0x36, 0xff, 0x37, 0xff, 0x37, 0xff, 0x39, 0xff, 0x37, 0xff, + 0x3b, 0xff, 0x3b, 0xff, 0x3f, 0xff, 0x3d, 0xff, 0x44, 0xff, 0x43, 0xff, + 0x4a, 0xff, 0x4a, 0xff, 0x4f, 0xff, 0x51, 0xff, 0x5d, 0xff, 0x5a, 0xff, + 0x63, 0xff, 0x65, 0xff, 0x72, 0xff, 0x70, 0xff, 0x7d, 0xff, 0x7e, 0xff, + 0x8c, 0xff, 0x8a, 0xff, 0x9a, 0xff, 0x9b, 0xff, 0xa9, 0xff, 0xaa, 0xff, + 0xbb, 0xff, 0xbb, 0xff, 0xce, 0xff, 0xcf, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xf3, 0xff, 0xf2, 0xff, 0x05, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x2f, 0x00, 0x30, 0x00, 0x42, 0x00, 0x44, 0x00, 0x5a, 0x00, 0x5a, 0x00, + 0x6e, 0x00, 0x6e, 0x00, 0x83, 0x00, 0x83, 0x00, 0x99, 0x00, 0x99, 0x00, + 0xa9, 0x00, 0xaa, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xd0, 0x00, 0xd1, 0x00, + 0xe3, 0x00, 0xe3, 0x00, 0xf2, 0x00, 0xf4, 0x00, 0x05, 0x01, 0x03, 0x01, + 0x10, 0x01, 0x13, 0x01, 0x20, 0x01, 0x1e, 0x01, 0x2a, 0x01, 0x2b, 0x01, + 0x32, 0x01, 0x33, 0x01, 0x3c, 0x01, 0x3d, 0x01, 0x40, 0x01, 0x41, 0x01, + 0x46, 0x01, 0x48, 0x01, 0x48, 0x01, 0x47, 0x01, 0x48, 0x01, 0x49, 0x01, + 0x47, 0x01, 0x46, 0x01, 0x41, 0x01, 0x42, 0x01, 0x3c, 0x01, 0x3d, 0x01, + 0x33, 0x01, 0x33, 0x01, 0x29, 0x01, 0x29, 0x01, 0x1d, 0x01, 0x1d, 0x01, + 0x0f, 0x01, 0x0f, 0x01, 0xff, 0x00, 0xff, 0x00, 0xed, 0x00, 0xee, 0x00, + 0xda, 0x00, 0xd9, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xae, 0x00, 0xae, 0x00, + 0x98, 0x00, 0x98, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x67, 0x00, 0x66, 0x00, + 0x4a, 0x00, 0x4b, 0x00, 0x30, 0x00, 0x30, 0x00, 0x13, 0x00, 0x13, 0x00, + 0xf6, 0xff, 0xf7, 0xff, 0xd7, 0xff, 0xd9, 0xff, 0xbb, 0xff, 0xba, 0xff, + 0x9c, 0xff, 0x9e, 0xff, 0x82, 0xff, 0x81, 0xff, 0x63, 0xff, 0x64, 0xff, + 0x49, 0xff, 0x49, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x12, 0xff, 0x12, 0xff, + 0xf9, 0xfe, 0xf9, 0xfe, 0xe0, 0xfe, 0xe1, 0xfe, 0xcb, 0xfe, 0xc8, 0xfe, + 0xb3, 0xfe, 0xb4, 0xfe, 0xa3, 0xfe, 0xa1, 0xfe, 0x8f, 0xfe, 0x90, 0xfe, + 0x82, 0xfe, 0x81, 0xfe, 0x73, 0xfe, 0x73, 0xfe, 0x68, 0xfe, 0x68, 0xfe, + 0x60, 0xfe, 0x60, 0xfe, 0x58, 0xfe, 0x58, 0xfe, 0x56, 0xfe, 0x56, 0xfe, + 0x54, 0xfe, 0x53, 0xfe, 0x56, 0xfe, 0x55, 0xfe, 0x59, 0xfe, 0x5b, 0xfe, + 0x5f, 0xfe, 0x5c, 0xfe, 0x68, 0xfe, 0x69, 0xfe, 0x73, 0xfe, 0x73, 0xfe, + 0x80, 0xfe, 0x80, 0xfe, 0x8d, 0xfe, 0x8e, 0xfe, 0xa3, 0xfe, 0xa0, 0xfe, + 0xb2, 0xfe, 0xb3, 0xfe, 0xcb, 0xfe, 0xc9, 0xfe, 0xde, 0xfe, 0xe1, 0xfe, + 0xf9, 0xfe, 0xf9, 0xfe, 0x15, 0xff, 0x14, 0xff, 0x2b, 0xff, 0x2d, 0xff, + 0x4e, 0xff, 0x4d, 0xff, 0x67, 0xff, 0x68, 0xff, 0x88, 0xff, 0x88, 0xff, + 0xa7, 0xff, 0xa7, 0xff, 0xc3, 0xff, 0xc6, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0x04, 0x00, 0x06, 0x00, 0x27, 0x00, 0x26, 0x00, 0x45, 0x00, 0x47, 0x00, + 0x64, 0x00, 0x63, 0x00, 0x82, 0x00, 0x83, 0x00, 0x9f, 0x00, 0x9f, 0x00, + 0xbd, 0x00, 0xbc, 0x00, 0xd5, 0x00, 0xd5, 0x00, 0xf1, 0x00, 0xf0, 0x00, + 0x06, 0x01, 0x07, 0x01, 0x20, 0x01, 0x1e, 0x01, 0x32, 0x01, 0x34, 0x01, + 0x44, 0x01, 0x44, 0x01, 0x56, 0x01, 0x55, 0x01, 0x63, 0x01, 0x63, 0x01, + 0x6e, 0x01, 0x6f, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7f, 0x01, 0x81, 0x01, + 0x88, 0x01, 0x88, 0x01, 0x87, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x8a, 0x01, + 0x87, 0x01, 0x87, 0x01, 0x82, 0x01, 0x82, 0x01, 0x7c, 0x01, 0x7d, 0x01, + 0x74, 0x01, 0x73, 0x01, 0x6a, 0x01, 0x6a, 0x01, 0x5c, 0x01, 0x5d, 0x01, + 0x4f, 0x01, 0x4e, 0x01, 0x3e, 0x01, 0x3f, 0x01, 0x2a, 0x01, 0x29, 0x01, + 0x1a, 0x01, 0x1b, 0x01, 0x03, 0x01, 0x02, 0x01, 0xed, 0x00, 0xed, 0x00, + 0xd4, 0x00, 0xd5, 0x00, 0xbb, 0x00, 0xba, 0x00, 0xa3, 0x00, 0xa2, 0x00, + 0x84, 0x00, 0x84, 0x00, 0x6e, 0x00, 0x6d, 0x00, 0x4f, 0x00, 0x4f, 0x00, + 0x32, 0x00, 0x32, 0x00, 0x1a, 0x00, 0x19, 0x00, 0xfd, 0xff, 0xfc, 0xff, + 0xe4, 0xff, 0xe3, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xb0, 0xff, 0xaf, 0xff, + 0x97, 0xff, 0x99, 0xff, 0x7e, 0xff, 0x7d, 0xff, 0x68, 0xff, 0x68, 0xff, + 0x51, 0xff, 0x50, 0xff, 0x3e, 0xff, 0x3d, 0xff, 0x2a, 0xff, 0x2b, 0xff, + 0x18, 0xff, 0x18, 0xff, 0x08, 0xff, 0x09, 0xff, 0xf9, 0xfe, 0xfa, 0xfe, + 0xed, 0xfe, 0xed, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, + 0xd3, 0xfe, 0xd2, 0xfe, 0xcb, 0xfe, 0xcc, 0xfe, 0xc9, 0xfe, 0xc9, 0xfe, + 0xc6, 0xfe, 0xc5, 0xfe, 0xc6, 0xfe, 0xc7, 0xfe, 0xc6, 0xfe, 0xc5, 0xfe, + 0xca, 0xfe, 0xca, 0xfe, 0xce, 0xfe, 0xce, 0xfe, 0xd4, 0xfe, 0xd4, 0xfe, + 0xdc, 0xfe, 0xdb, 0xfe, 0xe5, 0xfe, 0xe6, 0xfe, 0xf2, 0xfe, 0xf0, 0xfe, + 0xfa, 0xfe, 0xfb, 0xfe, 0x0a, 0xff, 0x09, 0xff, 0x16, 0xff, 0x16, 0xff, + 0x27, 0xff, 0x27, 0xff, 0x36, 0xff, 0x37, 0xff, 0x47, 0xff, 0x46, 0xff, + 0x59, 0xff, 0x58, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x7d, 0xff, 0x7e, 0xff, + 0x91, 0xff, 0x91, 0xff, 0xa3, 0xff, 0xa2, 0xff, 0xb8, 0xff, 0xb9, 0xff, + 0xc9, 0xff, 0xc9, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xf0, 0xff, 0xf2, 0xff, + 0x04, 0x00, 0x03, 0x00, 0x16, 0x00, 0x16, 0x00, 0x29, 0x00, 0x28, 0x00, + 0x3a, 0x00, 0x3b, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x5a, 0x00, 0x5c, 0x00, + 0x6b, 0x00, 0x69, 0x00, 0x79, 0x00, 0x7b, 0x00, 0x86, 0x00, 0x85, 0x00, + 0x93, 0x00, 0x93, 0x00, 0x9e, 0x00, 0x9d, 0x00, 0xab, 0x00, 0xaa, 0x00, + 0xb2, 0x00, 0xb3, 0x00, 0xbd, 0x00, 0xbd, 0x00, 0xc3, 0x00, 0xc3, 0x00, + 0xcc, 0x00, 0xcf, 0x00, 0xd3, 0x00, 0xd1, 0x00, 0xd7, 0x00, 0xd7, 0x00, + 0xdc, 0x00, 0xdc, 0x00, 0xdf, 0x00, 0xde, 0x00, 0xe2, 0x00, 0xe4, 0x00, + 0xe5, 0x00, 0xe3, 0x00, 0xe4, 0x00, 0xe4, 0x00, 0xe4, 0x00, 0xe5, 0x00, + 0xe3, 0x00, 0xe3, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0xdd, 0x00, 0xdd, 0x00, + 0xdc, 0x00, 0xdb, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0xd3, 0x00, 0xd2, 0x00, + 0xcf, 0x00, 0xcf, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xc4, 0x00, 0xc4, 0x00, + 0xb9, 0x00, 0xb9, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xad, 0x00, 0xac, 0x00, + 0xa3, 0x00, 0xa3, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x94, 0x00, 0x94, 0x00, + 0x8b, 0x00, 0x8a, 0x00, 0x81, 0x00, 0x82, 0x00, 0x79, 0x00, 0x78, 0x00, + 0x6f, 0x00, 0x70, 0x00, 0x65, 0x00, 0x64, 0x00, 0x5c, 0x00, 0x5e, 0x00, + 0x53, 0x00, 0x52, 0x00, 0x47, 0x00, 0x47, 0x00, 0x3f, 0x00, 0x3f, 0x00, + 0x34, 0x00, 0x34, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x16, 0x00, 0x16, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xf6, 0xff, 0xf8, 0xff, 0xee, 0xff, 0xed, 0xff, 0xe0, 0xff, 0xe2, 0xff, + 0xda, 0xff, 0xd9, 0xff, 0xce, 0xff, 0xce, 0xff, 0xc3, 0xff, 0xc6, 0xff, + 0xbb, 0xff, 0xbb, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xa8, 0xff, 0xa8, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0x94, 0xff, 0x96, 0xff, 0x8f, 0xff, 0x8e, 0xff, + 0x83, 0xff, 0x84, 0xff, 0x7f, 0xff, 0x7e, 0xff, 0x75, 0xff, 0x76, 0xff, + 0x6f, 0xff, 0x6e, 0xff, 0x68, 0xff, 0x68, 0xff, 0x5f, 0xff, 0x60, 0xff, + 0x5e, 0xff, 0x5e, 0xff, 0x53, 0xff, 0x55, 0xff, 0x53, 0xff, 0x52, 0xff, + 0x4d, 0xff, 0x4c, 0xff, 0x47, 0xff, 0x49, 0xff, 0x45, 0xff, 0x45, 0xff, + 0x40, 0xff, 0x41, 0xff, 0x40, 0xff, 0x40, 0xff, 0x3d, 0xff, 0x3e, 0xff, + 0x3d, 0xff, 0x3c, 0xff, 0x3c, 0xff, 0x3d, 0xff, 0x3b, 0xff, 0x3c, 0xff, + 0x3e, 0xff, 0x3e, 0xff, 0x40, 0xff, 0x41, 0xff, 0x45, 0xff, 0x44, 0xff, + 0x45, 0xff, 0x46, 0xff, 0x4c, 0xff, 0x4d, 0xff, 0x52, 0xff, 0x51, 0xff, + 0x58, 0xff, 0x5a, 0xff, 0x62, 0xff, 0x60, 0xff, 0x69, 0xff, 0x69, 0xff, + 0x74, 0xff, 0x74, 0xff, 0x7c, 0xff, 0x7d, 0xff, 0x8a, 0xff, 0x89, 0xff, + 0x95, 0xff, 0x96, 0xff, 0xa2, 0xff, 0xa1, 0xff, 0xaf, 0xff, 0xb1, 0xff, + 0xbd, 0xff, 0xbe, 0xff, 0xce, 0xff, 0xcf, 0xff, 0xdc, 0xff, 0xdc, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0x0c, 0x00, 0x0c, 0x00, + 0x20, 0x00, 0x1f, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x43, 0x00, 0x41, 0x00, + 0x51, 0x00, 0x52, 0x00, 0x65, 0x00, 0x63, 0x00, 0x75, 0x00, 0x76, 0x00, + 0x87, 0x00, 0x85, 0x00, 0x95, 0x00, 0x97, 0x00, 0xa7, 0x00, 0xa5, 0x00, + 0xb5, 0x00, 0xb7, 0x00, 0xc6, 0x00, 0xc4, 0x00, 0xd3, 0x00, 0xd4, 0x00, + 0xe2, 0x00, 0xe1, 0x00, 0xee, 0x00, 0xec, 0x00, 0xf8, 0x00, 0xf8, 0x00, + 0x03, 0x01, 0x03, 0x01, 0x0c, 0x01, 0x0d, 0x01, 0x14, 0x01, 0x13, 0x01, + 0x1b, 0x01, 0x1b, 0x01, 0x1e, 0x01, 0x1d, 0x01, 0x23, 0x01, 0x25, 0x01, + 0x25, 0x01, 0x21, 0x01, 0x24, 0x01, 0x25, 0x01, 0x22, 0x01, 0x22, 0x01, + 0x21, 0x01, 0x1f, 0x01, 0x1a, 0x01, 0x1d, 0x01, 0x15, 0x01, 0x12, 0x01, + 0x0c, 0x01, 0x0d, 0x01, 0x02, 0x01, 0x01, 0x01, 0xf7, 0x00, 0xf7, 0x00, + 0xea, 0x00, 0xea, 0x00, 0xdc, 0x00, 0xdb, 0x00, 0xcd, 0x00, 0xcd, 0x00, + 0xbb, 0x00, 0xb9, 0x00, 0xaa, 0x00, 0xa9, 0x00, 0x96, 0x00, 0x97, 0x00, + 0x82, 0x00, 0x81, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x55, 0x00, 0x57, 0x00, + 0x3e, 0x00, 0x3e, 0x00, 0x26, 0x00, 0x27, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0xf4, 0xff, 0xf6, 0xff, 0xdb, 0xff, 0xda, 0xff, 0xc0, 0xff, 0xc2, 0xff, + 0xa9, 0xff, 0xa9, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x77, 0xff, 0x76, 0xff, + 0x5c, 0xff, 0x5d, 0xff, 0x45, 0xff, 0x45, 0xff, 0x2d, 0xff, 0x2f, 0xff, + 0x18, 0xff, 0x17, 0xff, 0x01, 0xff, 0x02, 0xff, 0xef, 0xfe, 0xef, 0xfe, + 0xda, 0xfe, 0xdb, 0xfe, 0xc9, 0xfe, 0xcb, 0xfe, 0xb9, 0xfe, 0xb9, 0xfe, + 0xaa, 0xfe, 0xab, 0xfe, 0x9e, 0xfe, 0xa0, 0xfe, 0x93, 0xfe, 0x93, 0xfe, + 0x8c, 0xfe, 0x8e, 0xfe, 0x83, 0xfe, 0x85, 0xfe, 0x81, 0xfe, 0x82, 0xfe, + 0x7d, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x80, 0xfe, 0x80, 0xfe, 0x80, 0xfe, + 0x85, 0xfe, 0x86, 0xfe, 0x8b, 0xfe, 0x8c, 0xfe, 0x93, 0xfe, 0x93, 0xfe, + 0x9d, 0xfe, 0xa0, 0xfe, 0xaa, 0xfe, 0xa9, 0xfe, 0xb7, 0xfe, 0xb9, 0xfe, + 0xc9, 0xfe, 0xca, 0xfe, 0xd7, 0xfe, 0xd9, 0xfe, 0xed, 0xfe, 0xef, 0xfe, + 0x02, 0xff, 0x03, 0xff, 0x18, 0xff, 0x19, 0xff, 0x30, 0xff, 0x2f, 0xff, + 0x46, 0xff, 0x48, 0xff, 0x61, 0xff, 0x61, 0xff, 0x7a, 0xff, 0x7b, 0xff, + 0x97, 0xff, 0x96, 0xff, 0xb1, 0xff, 0xb3, 0xff, 0xce, 0xff, 0xcd, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0x06, 0x00, 0x06, 0x00, 0x24, 0x00, 0x23, 0x00, + 0x3e, 0x00, 0x3f, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x73, 0x00, 0x74, 0x00, + 0x8d, 0x00, 0x8d, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0xbe, 0x00, 0xbf, 0x00, + 0xd4, 0x00, 0xd4, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0xfe, 0x00, 0xff, 0x00, + 0x0e, 0x01, 0x0f, 0x01, 0x20, 0x01, 0x20, 0x01, 0x2e, 0x01, 0x2e, 0x01, + 0x3a, 0x01, 0x39, 0x01, 0x44, 0x01, 0x45, 0x01, 0x4d, 0x01, 0x4d, 0x01, + 0x55, 0x01, 0x56, 0x01, 0x57, 0x01, 0x56, 0x01, 0x5c, 0x01, 0x5d, 0x01, + 0x5b, 0x01, 0x5b, 0x01, 0x5c, 0x01, 0x5c, 0x01, 0x56, 0x01, 0x57, 0x01, + 0x52, 0x01, 0x50, 0x01, 0x4b, 0x01, 0x4b, 0x01, 0x41, 0x01, 0x42, 0x01, + 0x37, 0x01, 0x38, 0x01, 0x2c, 0x01, 0x2d, 0x01, 0x1d, 0x01, 0x1d, 0x01, + 0x0e, 0x01, 0x0f, 0x01, 0xfc, 0x00, 0xfc, 0x00, 0xe9, 0x00, 0xeb, 0x00, + 0xd8, 0x00, 0xd7, 0x00, 0xc1, 0x00, 0xc4, 0x00, 0xad, 0x00, 0xac, 0x00, + 0x96, 0x00, 0x97, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x66, 0x00, 0x66, 0x00, + 0x50, 0x00, 0x4f, 0x00, 0x34, 0x00, 0x35, 0x00, 0x1d, 0x00, 0x1e, 0x00, + 0x04, 0x00, 0x05, 0x00, 0xed, 0xff, 0xee, 0xff, 0xd5, 0xff, 0xd6, 0xff, + 0xbe, 0xff, 0xbf, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0x91, 0xff, 0x91, 0xff, + 0x7c, 0xff, 0x7f, 0xff, 0x68, 0xff, 0x69, 0xff, 0x58, 0xff, 0x56, 0xff, + 0x44, 0xff, 0x46, 0xff, 0x34, 0xff, 0x34, 0xff, 0x26, 0xff, 0x27, 0xff, + 0x17, 0xff, 0x18, 0xff, 0x0b, 0xff, 0x0c, 0xff, 0xfe, 0xfe, 0xff, 0xfe, + 0xf8, 0xfe, 0xf8, 0xfe, 0xef, 0xfe, 0xf1, 0xfe, 0xe8, 0xfe, 0xe9, 0xfe, + 0xe6, 0xfe, 0xe6, 0xfe, 0xe1, 0xfe, 0xe3, 0xfe, 0xe1, 0xfe, 0xe0, 0xfe, + 0xe0, 0xfe, 0xe3, 0xfe, 0xe2, 0xfe, 0xe2, 0xfe, 0xe6, 0xfe, 0xe7, 0xfe, + 0xeb, 0xfe, 0xeb, 0xfe, 0xef, 0xfe, 0xf0, 0xfe, 0xfa, 0xfe, 0xfa, 0xfe, + 0x01, 0xff, 0x02, 0xff, 0x0c, 0xff, 0x0b, 0xff, 0x16, 0xff, 0x18, 0xff, + 0x22, 0xff, 0x22, 0xff, 0x30, 0xff, 0x30, 0xff, 0x3c, 0xff, 0x3f, 0xff, + 0x4e, 0xff, 0x4e, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x6b, 0xff, 0x6d, 0xff, + 0x7d, 0xff, 0x7d, 0xff, 0x8c, 0xff, 0x8e, 0xff, 0xa0, 0xff, 0xa0, 0xff, + 0xb0, 0xff, 0xb2, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xd7, 0xff, 0xd6, 0xff, + 0xe6, 0xff, 0xe7, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0x09, 0x00, 0x09, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x3d, 0x00, 0x3c, 0x00, + 0x4b, 0x00, 0x4b, 0x00, 0x58, 0x00, 0x58, 0x00, 0x67, 0x00, 0x68, 0x00, + 0x73, 0x00, 0x74, 0x00, 0x81, 0x00, 0x82, 0x00, 0x8b, 0x00, 0x8c, 0x00, + 0x97, 0x00, 0x97, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa9, 0x00, 0xa9, 0x00, + 0xb3, 0x00, 0xb3, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xbf, 0x00, 0xbf, 0x00, + 0xc6, 0x00, 0xc6, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcd, 0x00, 0xce, 0x00, + 0xcf, 0x00, 0xce, 0x00, 0xd2, 0x00, 0xd4, 0x00, 0xd1, 0x00, 0xd2, 0x00, + 0xd5, 0x00, 0xd4, 0x00, 0xd3, 0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd3, 0x00, + 0xd0, 0x00, 0xd0, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xca, 0x00, 0xcb, 0x00, + 0xc8, 0x00, 0xc7, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xbd, 0x00, 0xbc, 0x00, + 0xb9, 0x00, 0xb9, 0x00, 0xb1, 0x00, 0xaf, 0x00, 0xab, 0x00, 0xac, 0x00, + 0xa4, 0x00, 0xa3, 0x00, 0x9e, 0x00, 0x9d, 0x00, 0x98, 0x00, 0x97, 0x00, + 0x8f, 0x00, 0x90, 0x00, 0x88, 0x00, 0x87, 0x00, 0x7f, 0x00, 0x80, 0x00, + 0x78, 0x00, 0x78, 0x00, 0x6e, 0x00, 0x70, 0x00, 0x66, 0x00, 0x65, 0x00, + 0x5e, 0x00, 0x5e, 0x00, 0x54, 0x00, 0x53, 0x00, 0x4b, 0x00, 0x4c, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x39, 0x00, 0x39, 0x00, 0x31, 0x00, 0x32, 0x00, + 0x27, 0x00, 0x28, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x15, 0x00, 0x16, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x03, 0x00, 0xfc, 0xff, 0xfc, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xde, 0xff, 0xdf, 0xff, + 0xd6, 0xff, 0xd6, 0xff, 0xcb, 0xff, 0xcf, 0xff, 0xc5, 0xff, 0xc4, 0xff, + 0xbc, 0xff, 0xbd, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xac, 0xff, 0xaa, 0xff, + 0xa2, 0xff, 0xa2, 0xff, 0x9b, 0xff, 0x9a, 0xff, 0x92, 0xff, 0x93, 0xff, + 0x8b, 0xff, 0x8b, 0xff, 0x84, 0xff, 0x84, 0xff, 0x7d, 0xff, 0x7d, 0xff, + 0x76, 0xff, 0x76, 0xff, 0x6f, 0xff, 0x71, 0xff, 0x6b, 0xff, 0x6a, 0xff, + 0x64, 0xff, 0x65, 0xff, 0x5f, 0xff, 0x5e, 0xff, 0x5b, 0xff, 0x59, 0xff, + 0x55, 0xff, 0x56, 0xff, 0x53, 0xff, 0x51, 0xff, 0x4d, 0xff, 0x50, 0xff, + 0x4b, 0xff, 0x49, 0xff, 0x48, 0xff, 0x49, 0xff, 0x45, 0xff, 0x46, 0xff, + 0x45, 0xff, 0x45, 0xff, 0x46, 0xff, 0x46, 0xff, 0x43, 0xff, 0x44, 0xff, + 0x47, 0xff, 0x46, 0xff, 0x47, 0xff, 0x47, 0xff, 0x4b, 0xff, 0x4d, 0xff, + 0x50, 0xff, 0x50, 0xff, 0x53, 0xff, 0x53, 0xff, 0x5b, 0xff, 0x5c, 0xff, + 0x61, 0xff, 0x61, 0xff, 0x68, 0xff, 0x68, 0xff, 0x72, 0xff, 0x71, 0xff, + 0x7a, 0xff, 0x7c, 0xff, 0x87, 0xff, 0x86, 0xff, 0x90, 0xff, 0x92, 0xff, + 0x9e, 0xff, 0x9e, 0xff, 0xad, 0xff, 0xac, 0xff, 0xb8, 0xff, 0xbb, 0xff, + 0xca, 0xff, 0xc8, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xe9, 0xff, 0xe9, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0x09, 0x00, 0x0b, 0x00, 0x1a, 0x00, 0x1c, 0x00, + 0x2d, 0x00, 0x2d, 0x00, 0x3f, 0x00, 0x41, 0x00, 0x4f, 0x00, 0x4e, 0x00, + 0x62, 0x00, 0x64, 0x00, 0x75, 0x00, 0x75, 0x00, 0x84, 0x00, 0x86, 0x00, + 0x99, 0x00, 0x98, 0x00, 0xa6, 0x00, 0xa8, 0x00, 0xb9, 0x00, 0xba, 0x00, + 0xc6, 0x00, 0xc7, 0x00, 0xd7, 0x00, 0xd7, 0x00, 0xe4, 0x00, 0xe4, 0x00, + 0xf2, 0x00, 0xf3, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0a, 0x01, 0x0a, 0x01, + 0x12, 0x01, 0x15, 0x01, 0x1b, 0x01, 0x1a, 0x01, 0x22, 0x01, 0x22, 0x01, + 0x26, 0x01, 0x28, 0x01, 0x2c, 0x01, 0x2b, 0x01, 0x2b, 0x01, 0x2c, 0x01, + 0x2c, 0x01, 0x2d, 0x01, 0x2b, 0x01, 0x2c, 0x01, 0x26, 0x01, 0x27, 0x01, + 0x22, 0x01, 0x23, 0x01, 0x19, 0x01, 0x19, 0x01, 0x11, 0x01, 0x13, 0x01, + 0x08, 0x01, 0x08, 0x01, 0xf9, 0x00, 0xfa, 0x00, 0xef, 0x00, 0xef, 0x00, + 0xdc, 0x00, 0xdc, 0x00, 0xcd, 0x00, 0xcd, 0x00, 0xbd, 0x00, 0xbb, 0x00, + 0xa5, 0x00, 0xa7, 0x00, 0x95, 0x00, 0x95, 0x00, 0x7d, 0x00, 0x7b, 0x00, + 0x65, 0x00, 0x66, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x34, 0x00, 0x35, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x02, 0x00, 0x02, 0x00, 0xe8, 0xff, 0xe7, 0xff, + 0xcd, 0xff, 0xce, 0xff, 0xb3, 0xff, 0xb2, 0xff, 0x9a, 0xff, 0x9a, 0xff, + 0x7f, 0xff, 0x7e, 0xff, 0x63, 0xff, 0x63, 0xff, 0x4c, 0xff, 0x4b, 0xff, + 0x31, 0xff, 0x31, 0xff, 0x1b, 0xff, 0x1b, 0xff, 0x02, 0xff, 0x03, 0xff, + 0xee, 0xfe, 0xed, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, 0xc5, 0xfe, 0xc5, 0xfe, + 0xb3, 0xfe, 0xb3, 0xfe, 0xa3, 0xfe, 0xa5, 0xfe, 0x97, 0xfe, 0x97, 0xfe, + 0x8a, 0xfe, 0x89, 0xfe, 0x83, 0xfe, 0x82, 0xfe, 0x79, 0xfe, 0x7a, 0xfe, + 0x76, 0xfe, 0x76, 0xfe, 0x72, 0xfe, 0x72, 0xfe, 0x70, 0xfe, 0x72, 0xfe, + 0x74, 0xfe, 0x73, 0xfe, 0x76, 0xfe, 0x79, 0xfe, 0x7e, 0xfe, 0x7e, 0xfe, + 0x85, 0xfe, 0x87, 0xfe, 0x8f, 0xfe, 0x91, 0xfe, 0x9e, 0xfe, 0x9f, 0xfe, + 0xab, 0xfe, 0xac, 0xfe, 0xbd, 0xfe, 0xbd, 0xfe, 0xcc, 0xfe, 0xce, 0xfe, + 0xe3, 0xfe, 0xe3, 0xfe, 0xf7, 0xfe, 0xf9, 0xfe, 0x0f, 0xff, 0x0f, 0xff, + 0x27, 0xff, 0x2a, 0xff, 0x42, 0xff, 0x41, 0xff, 0x5b, 0xff, 0x5d, 0xff, + 0x79, 0xff, 0x76, 0xff, 0x95, 0xff, 0x96, 0xff, 0xb1, 0xff, 0xb3, 0xff, + 0xd0, 0xff, 0xcf, 0xff, 0xed, 0xff, 0xed, 0xff, 0x0c, 0x00, 0x0c, 0x00, + 0x29, 0x00, 0x28, 0x00, 0x45, 0x00, 0x47, 0x00, 0x63, 0x00, 0x63, 0x00, + 0x7c, 0x00, 0x7f, 0x00, 0x99, 0x00, 0x9a, 0x00, 0xb2, 0x00, 0xb2, 0x00, + 0xcc, 0x00, 0xcd, 0x00, 0xe1, 0x00, 0xe3, 0x00, 0xf7, 0x00, 0xf8, 0x00, + 0x0c, 0x01, 0x0d, 0x01, 0x1d, 0x01, 0x1f, 0x01, 0x30, 0x01, 0x30, 0x01, + 0x3d, 0x01, 0x3d, 0x01, 0x4a, 0x01, 0x4a, 0x01, 0x54, 0x01, 0x55, 0x01, + 0x5c, 0x01, 0x5d, 0x01, 0x62, 0x01, 0x63, 0x01, 0x67, 0x01, 0x65, 0x01, + 0x66, 0x01, 0x68, 0x01, 0x68, 0x01, 0x67, 0x01, 0x64, 0x01, 0x64, 0x01, + 0x60, 0x01, 0x61, 0x01, 0x5c, 0x01, 0x5b, 0x01, 0x50, 0x01, 0x51, 0x01, + 0x48, 0x01, 0x48, 0x01, 0x3a, 0x01, 0x3a, 0x01, 0x2c, 0x01, 0x2c, 0x01, + 0x1d, 0x01, 0x1e, 0x01, 0x0b, 0x01, 0x08, 0x01, 0xf7, 0x00, 0xf8, 0x00, + 0xe3, 0x00, 0xe3, 0x00, 0xcd, 0x00, 0xcd, 0x00, 0xb6, 0x00, 0xb6, 0x00, + 0x9f, 0x00, 0x9f, 0x00, 0x86, 0x00, 0x86, 0x00, 0x6f, 0x00, 0x6f, 0x00, + 0x54, 0x00, 0x53, 0x00, 0x3b, 0x00, 0x3a, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x05, 0x00, 0x06, 0x00, 0xec, 0xff, 0xec, 0xff, 0xd2, 0xff, 0xd4, 0xff, + 0xba, 0xff, 0xb8, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0x8a, 0xff, 0x89, 0xff, + 0x76, 0xff, 0x75, 0xff, 0x5f, 0xff, 0x60, 0xff, 0x4d, 0xff, 0x4b, 0xff, + 0x39, 0xff, 0x3c, 0xff, 0x29, 0xff, 0x28, 0xff, 0x1b, 0xff, 0x1c, 0xff, + 0x0a, 0xff, 0x0c, 0xff, 0x01, 0xff, 0x00, 0xff, 0xf4, 0xfe, 0xf4, 0xfe, + 0xec, 0xfe, 0xec, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, 0xdf, 0xfe, 0xe1, 0xfe, + 0xdc, 0xfe, 0xdb, 0xfe, 0xd6, 0xfe, 0xd9, 0xfe, 0xdb, 0xfe, 0xd9, 0xfe, + 0xd8, 0xfe, 0xd9, 0xfe, 0xde, 0xfe, 0xdd, 0xfe, 0xde, 0xfe, 0xdf, 0xfe, + 0xe6, 0xfe, 0xe7, 0xfe, 0xee, 0xfe, 0xed, 0xfe, 0xf4, 0xfe, 0xf6, 0xfe, + 0x01, 0xff, 0x01, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x18, 0xff, 0x1a, 0xff, + 0x24, 0xff, 0x23, 0xff, 0x31, 0xff, 0x33, 0xff, 0x42, 0xff, 0x40, 0xff, + 0x4f, 0xff, 0x52, 0xff, 0x63, 0xff, 0x63, 0xff, 0x72, 0xff, 0x72, 0xff, + 0x84, 0xff, 0x84, 0xff, 0x96, 0xff, 0x97, 0xff, 0xa7, 0xff, 0xa8, 0xff, + 0xbc, 0xff, 0xbb, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xde, 0xff, 0xe0, 0xff, + 0xf0, 0xff, 0xef, 0xff, 0x00, 0x00, 0x01, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x23, 0x00, 0x22, 0x00, 0x32, 0x00, 0x33, 0x00, 0x44, 0x00, 0x42, 0x00, + 0x4e, 0x00, 0x51, 0x00, 0x5f, 0x00, 0x5d, 0x00, 0x68, 0x00, 0x6b, 0x00, + 0x76, 0x00, 0x75, 0x00, 0x81, 0x00, 0x82, 0x00, 0x8b, 0x00, 0x8a, 0x00, + 0x96, 0x00, 0x97, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0xa6, 0x00, 0xa5, 0x00, + 0xac, 0x00, 0xac, 0x00, 0xb2, 0x00, 0xb2, 0x00, 0xb7, 0x00, 0xb6, 0x00, + 0xb9, 0x00, 0xb9, 0x00, 0xbd, 0x00, 0xbc, 0x00, 0xbe, 0x00, 0xc0, 0x00, + 0xbf, 0x00, 0xbf, 0x00, 0xc3, 0x00, 0xc2, 0x00, 0xbc, 0x00, 0xbf, 0x00, + 0xc2, 0x00, 0xbf, 0x00, 0xbc, 0x00, 0xbf, 0x00, 0xbd, 0x00, 0xbb, 0x00, + 0xba, 0x00, 0xbb, 0x00, 0xb5, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb5, 0x00, + 0xae, 0x00, 0xaf, 0x00, 0xaa, 0x00, 0xa9, 0x00, 0xa6, 0x00, 0xa7, 0x00, + 0xa0, 0x00, 0xa0, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x95, 0x00, 0x96, 0x00, + 0x92, 0x00, 0x92, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x84, 0x00, 0x85, 0x00, + 0x81, 0x00, 0x80, 0x00, 0x77, 0x00, 0x79, 0x00, 0x74, 0x00, 0x74, 0x00, + 0x6b, 0x00, 0x6c, 0x00, 0x64, 0x00, 0x68, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x56, 0x00, 0x58, 0x00, 0x54, 0x00, 0x54, 0x00, 0x4d, 0x00, 0x4d, 0x00, + 0x47, 0x00, 0x47, 0x00, 0x40, 0x00, 0x43, 0x00, 0x3a, 0x00, 0x39, 0x00, + 0x34, 0x00, 0x37, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x29, 0x00, 0x2a, 0x00, + 0x21, 0x00, 0x22, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x13, 0x00, 0x16, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xf6, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xe8, 0xff, 0xe7, 0xff, + 0xdf, 0xff, 0xe0, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xcd, 0xff, 0xce, 0xff, + 0xc6, 0xff, 0xc5, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0xac, 0xff, 0xac, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0x99, 0xff, 0x98, 0xff, + 0x90, 0xff, 0x92, 0xff, 0x89, 0xff, 0x88, 0xff, 0x7f, 0xff, 0x80, 0xff, + 0x78, 0xff, 0x77, 0xff, 0x6f, 0xff, 0x70, 0xff, 0x68, 0xff, 0x67, 0xff, + 0x62, 0xff, 0x63, 0xff, 0x58, 0xff, 0x58, 0xff, 0x56, 0xff, 0x55, 0xff, + 0x4c, 0xff, 0x4d, 0xff, 0x48, 0xff, 0x48, 0xff, 0x44, 0xff, 0x45, 0xff, + 0x3f, 0xff, 0x3e, 0xff, 0x3c, 0xff, 0x3d, 0xff, 0x3c, 0xff, 0x39, 0xff, + 0x35, 0xff, 0x38, 0xff, 0x38, 0xff, 0x35, 0xff, 0x37, 0xff, 0x38, 0xff, + 0x38, 0xff, 0x39, 0xff, 0x3d, 0xff, 0x3b, 0xff, 0x3f, 0xff, 0x41, 0xff, + 0x44, 0xff, 0x43, 0xff, 0x4c, 0xff, 0x4d, 0xff, 0x51, 0xff, 0x53, 0xff, + 0x5d, 0xff, 0x5b, 0xff, 0x65, 0xff, 0x65, 0xff, 0x6f, 0xff, 0x70, 0xff, + 0x7d, 0xff, 0x7c, 0xff, 0x87, 0xff, 0x88, 0xff, 0x9a, 0xff, 0x9a, 0xff, + 0xa5, 0xff, 0xa4, 0xff, 0xba, 0xff, 0xbb, 0xff, 0xc7, 0xff, 0xc6, 0xff, + 0xdb, 0xff, 0xda, 0xff, 0xed, 0xff, 0xee, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0x14, 0x00, 0x14, 0x00, 0x24, 0x00, 0x24, 0x00, 0x3a, 0x00, 0x3b, 0x00, + 0x4e, 0x00, 0x4e, 0x00, 0x60, 0x00, 0x61, 0x00, 0x77, 0x00, 0x77, 0x00, + 0x89, 0x00, 0x89, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0xae, 0x00, 0xaf, 0x00, + 0xc4, 0x00, 0xc4, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xe6, 0x00, 0xe5, 0x00, + 0xf5, 0x00, 0xf5, 0x00, 0x04, 0x01, 0x04, 0x01, 0x14, 0x01, 0x13, 0x01, + 0x1d, 0x01, 0x1e, 0x01, 0x2b, 0x01, 0x2b, 0x01, 0x35, 0x01, 0x34, 0x01, + 0x3b, 0x01, 0x3b, 0x01, 0x44, 0x01, 0x43, 0x01, 0x47, 0x01, 0x45, 0x01, + 0x4a, 0x01, 0x4b, 0x01, 0x4a, 0x01, 0x49, 0x01, 0x49, 0x01, 0x48, 0x01, + 0x45, 0x01, 0x45, 0x01, 0x3f, 0x01, 0x3d, 0x01, 0x37, 0x01, 0x37, 0x01, + 0x2e, 0x01, 0x2e, 0x01, 0x25, 0x01, 0x23, 0x01, 0x15, 0x01, 0x15, 0x01, + 0x07, 0x01, 0x07, 0x01, 0xf5, 0x00, 0xf4, 0x00, 0xe5, 0x00, 0xe5, 0x00, + 0xce, 0x00, 0xce, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xa3, 0x00, 0xa4, 0x00, + 0x8d, 0x00, 0x8b, 0x00, 0x72, 0x00, 0x73, 0x00, 0x59, 0x00, 0x57, 0x00, + 0x3c, 0x00, 0x3e, 0x00, 0x24, 0x00, 0x22, 0x00, 0x05, 0x00, 0x06, 0x00, + 0xeb, 0xff, 0xea, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xb2, 0xff, 0xb3, 0xff, + 0x94, 0xff, 0x92, 0xff, 0x78, 0xff, 0x78, 0xff, 0x5b, 0xff, 0x5b, 0xff, + 0x40, 0xff, 0x41, 0xff, 0x28, 0xff, 0x26, 0xff, 0x0b, 0xff, 0x0a, 0xff, + 0xf3, 0xfe, 0xf5, 0xfe, 0xdc, 0xfe, 0xda, 0xfe, 0xc6, 0xfe, 0xc7, 0xfe, + 0xb3, 0xfe, 0xb4, 0xfe, 0xa0, 0xfe, 0x9f, 0xfe, 0x8e, 0xfe, 0x8f, 0xfe, + 0x80, 0xfe, 0x80, 0xfe, 0x73, 0xfe, 0x72, 0xfe, 0x6a, 0xfe, 0x69, 0xfe, + 0x60, 0xfe, 0x62, 0xfe, 0x5c, 0xfe, 0x5c, 0xfe, 0x58, 0xfe, 0x58, 0xfe, + 0x57, 0xfe, 0x58, 0xfe, 0x59, 0xfe, 0x59, 0xfe, 0x5d, 0xfe, 0x5c, 0xfe, + 0x64, 0xfe, 0x65, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, + 0x85, 0xfe, 0x85, 0xfe, 0x95, 0xfe, 0x95, 0xfe, 0xab, 0xfe, 0xa9, 0xfe, + 0xba, 0xfe, 0xba, 0xfe, 0xd4, 0xfe, 0xd4, 0xfe, 0xe6, 0xfe, 0xe6, 0xfe, + 0x03, 0xff, 0x03, 0xff, 0x1a, 0xff, 0x1a, 0xff, 0x38, 0xff, 0x38, 0xff, + 0x55, 0xff, 0x55, 0xff, 0x71, 0xff, 0x72, 0xff, 0x91, 0xff, 0x90, 0xff, + 0xaf, 0xff, 0xaf, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xee, 0xff, 0xef, 0xff, + 0x10, 0x00, 0x0e, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x4c, 0x00, 0x4b, 0x00, + 0x6c, 0x00, 0x6b, 0x00, 0x88, 0x00, 0x8a, 0x00, 0xa5, 0x00, 0xa3, 0x00, + 0xc2, 0x00, 0xc2, 0x00, 0xdb, 0x00, 0xdb, 0x00, 0xf4, 0x00, 0xf3, 0x00, + 0x09, 0x01, 0x0b, 0x01, 0x21, 0x01, 0x20, 0x01, 0x33, 0x01, 0x35, 0x01, + 0x46, 0x01, 0x44, 0x01, 0x57, 0x01, 0x56, 0x01, 0x62, 0x01, 0x62, 0x01, + 0x6d, 0x01, 0x6e, 0x01, 0x76, 0x01, 0x76, 0x01, 0x7c, 0x01, 0x7c, 0x01, + 0x80, 0x01, 0x82, 0x01, 0x82, 0x01, 0x82, 0x01, 0x80, 0x01, 0x81, 0x01, + 0x7f, 0x01, 0x7f, 0x01, 0x79, 0x01, 0x79, 0x01, 0x70, 0x01, 0x72, 0x01, + 0x68, 0x01, 0x67, 0x01, 0x5b, 0x01, 0x5a, 0x01, 0x4d, 0x01, 0x4e, 0x01, + 0x3f, 0x01, 0x3d, 0x01, 0x2c, 0x01, 0x2f, 0x01, 0x1a, 0x01, 0x1a, 0x01, + 0x04, 0x01, 0x04, 0x01, 0xef, 0x00, 0xf0, 0x00, 0xd6, 0x00, 0xd6, 0x00, + 0xc0, 0x00, 0xc1, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0x8b, 0x00, 0x88, 0x00, + 0x6d, 0x00, 0x6f, 0x00, 0x52, 0x00, 0x51, 0x00, 0x37, 0x00, 0x36, 0x00, + 0x1b, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xe3, 0xff, 0xe5, 0xff, + 0xc8, 0xff, 0xc7, 0xff, 0xaf, 0xff, 0xae, 0xff, 0x93, 0xff, 0x93, 0xff, + 0x7b, 0xff, 0x7a, 0xff, 0x63, 0xff, 0x63, 0xff, 0x4b, 0xff, 0x4c, 0xff, + 0x37, 0xff, 0x37, 0xff, 0x23, 0xff, 0x23, 0xff, 0x11, 0xff, 0x11, 0xff, + 0x00, 0xff, 0x02, 0xff, 0xf1, 0xfe, 0xf1, 0xfe, 0xe5, 0xfe, 0xe5, 0xfe, + 0xda, 0xfe, 0xda, 0xfe, 0xcf, 0xfe, 0xcf, 0xfe, 0xca, 0xfe, 0xc8, 0xfe, + 0xc2, 0xfe, 0xc3, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xbc, 0xfe, 0xbc, 0xfe, + 0xbe, 0xfe, 0xbd, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, + 0xc7, 0xfe, 0xc7, 0xfe, 0xcf, 0xfe, 0xcf, 0xfe, 0xd6, 0xfe, 0xd5, 0xfe, + 0xe0, 0xfe, 0xe0, 0xfe, 0xec, 0xfe, 0xeb, 0xfe, 0xf8, 0xfe, 0xf8, 0xfe, + 0x07, 0xff, 0x07, 0xff, 0x15, 0xff, 0x14, 0xff, 0x25, 0xff, 0x25, 0xff, + 0x35, 0xff, 0x35, 0xff, 0x48, 0xff, 0x46, 0xff, 0x59, 0xff, 0x5a, 0xff, + 0x6b, 0xff, 0x6a, 0xff, 0x7f, 0xff, 0x81, 0xff, 0x93, 0xff, 0x92, 0xff, + 0xa4, 0xff, 0xa5, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xcb, 0xff, 0xcb, 0xff, + 0xe2, 0xff, 0xe1, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0x04, 0x00, 0x07, 0x00, + 0x1a, 0x00, 0x18, 0x00, 0x29, 0x00, 0x27, 0x00, 0x3a, 0x00, 0x3c, 0x00, + 0x4a, 0x00, 0x47, 0x00, 0x57, 0x00, 0x58, 0x00, 0x67, 0x00, 0x66, 0x00, + 0x73, 0x00, 0x73, 0x00, 0x7e, 0x00, 0x80, 0x00, 0x8b, 0x00, 0x8a, 0x00, + 0x94, 0x00, 0x96, 0x00, 0x9e, 0x00, 0x9d, 0x00, 0xa6, 0x00, 0xa7, 0x00, + 0xab, 0x00, 0xab, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb8, 0x00, 0xb8, 0x00, + 0xbb, 0x00, 0xbb, 0x00, 0xbe, 0x00, 0xc0, 0x00, 0xbf, 0x00, 0xbf, 0x00, + 0xc2, 0x00, 0xc3, 0x00, 0xc0, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xc2, 0x00, + 0xc1, 0x00, 0xc2, 0x00, 0xbf, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbe, 0x00, + 0xba, 0x00, 0xba, 0x00, 0xb7, 0x00, 0xb9, 0x00, 0xb4, 0x00, 0xb5, 0x00, + 0xaf, 0x00, 0xaf, 0x00, 0xad, 0x00, 0xad, 0x00, 0xa6, 0x00, 0xa5, 0x00, + 0xa5, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0x9b, 0x00, 0x99, 0x00, + 0x94, 0x00, 0x95, 0x00, 0x8f, 0x00, 0x8e, 0x00, 0x8b, 0x00, 0x8b, 0x00, + 0x85, 0x00, 0x84, 0x00, 0x80, 0x00, 0x7f, 0x00, 0x7a, 0x00, 0x7b, 0x00, + 0x76, 0x00, 0x75, 0x00, 0x71, 0x00, 0x71, 0x00, 0x6b, 0x00, 0x6c, 0x00, + 0x67, 0x00, 0x66, 0x00, 0x63, 0x00, 0x62, 0x00, 0x5d, 0x00, 0x5d, 0x00, + 0x58, 0x00, 0x58, 0x00, 0x53, 0x00, 0x51, 0x00, 0x4e, 0x00, 0x4e, 0x00, + 0x4a, 0x00, 0x4a, 0x00, 0x43, 0x00, 0x43, 0x00, 0x42, 0x00, 0x40, 0x00, + 0x39, 0x00, 0x37, 0x00, 0x34, 0x00, 0x35, 0x00, 0x30, 0x00, 0x2e, 0x00, + 0x27, 0x00, 0x28, 0x00, 0x25, 0x00, 0x24, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x14, 0x00, 0x16, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x07, 0x00, + 0xfe, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xed, 0xff, 0xed, 0xff, + 0xe6, 0xff, 0xe5, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xd1, 0xff, 0xd2, 0xff, + 0xc8, 0xff, 0xc8, 0xff, 0xbd, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xb3, 0xff, + 0xa7, 0xff, 0xa8, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x91, 0xff, 0x93, 0xff, + 0x8a, 0xff, 0x89, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x73, 0xff, 0x74, 0xff, + 0x6a, 0xff, 0x69, 0xff, 0x60, 0xff, 0x61, 0xff, 0x56, 0xff, 0x57, 0xff, + 0x4d, 0xff, 0x4c, 0xff, 0x46, 0xff, 0x46, 0xff, 0x3c, 0xff, 0x3c, 0xff, + 0x34, 0xff, 0x35, 0xff, 0x2e, 0xff, 0x2f, 0xff, 0x27, 0xff, 0x28, 0xff, + 0x23, 0xff, 0x22, 0xff, 0x1f, 0xff, 0x21, 0xff, 0x1c, 0xff, 0x1a, 0xff, + 0x1a, 0xff, 0x1c, 0xff, 0x19, 0xff, 0x18, 0xff, 0x1a, 0xff, 0x1b, 0xff, + 0x1e, 0xff, 0x1d, 0xff, 0x20, 0xff, 0x20, 0xff, 0x25, 0xff, 0x26, 0xff, + 0x2e, 0xff, 0x2c, 0xff, 0x34, 0xff, 0x36, 0xff, 0x3e, 0xff, 0x3e, 0xff, + 0x4a, 0xff, 0x4a, 0xff, 0x55, 0xff, 0x57, 0xff, 0x65, 0xff, 0x64, 0xff, + 0x71, 0xff, 0x74, 0xff, 0x86, 0xff, 0x84, 0xff, 0x95, 0xff, 0x96, 0xff, + 0xaa, 0xff, 0xa8, 0xff, 0xbb, 0xff, 0xbd, 0xff, 0xd2, 0xff, 0xd1, 0xff, + 0xe7, 0xff, 0xe6, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0x13, 0x00, 0x13, 0x00, + 0x2b, 0x00, 0x2c, 0x00, 0x42, 0x00, 0x43, 0x00, 0x5b, 0x00, 0x58, 0x00, + 0x71, 0x00, 0x73, 0x00, 0x89, 0x00, 0x88, 0x00, 0xa1, 0x00, 0xa1, 0x00, + 0xb6, 0x00, 0xb7, 0x00, 0xcf, 0x00, 0xce, 0x00, 0xe3, 0x00, 0xe4, 0x00, + 0xf9, 0x00, 0xf9, 0x00, 0x0c, 0x01, 0x0d, 0x01, 0x1f, 0x01, 0x1e, 0x01, + 0x31, 0x01, 0x32, 0x01, 0x41, 0x01, 0x3f, 0x01, 0x51, 0x01, 0x51, 0x01, + 0x5b, 0x01, 0x5c, 0x01, 0x65, 0x01, 0x65, 0x01, 0x6e, 0x01, 0x70, 0x01, + 0x76, 0x01, 0x74, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7a, 0x01, 0x7b, 0x01, + 0x7c, 0x01, 0x79, 0x01, 0x77, 0x01, 0x79, 0x01, 0x73, 0x01, 0x72, 0x01, + 0x6a, 0x01, 0x6c, 0x01, 0x61, 0x01, 0x5f, 0x01, 0x55, 0x01, 0x56, 0x01, + 0x46, 0x01, 0x46, 0x01, 0x38, 0x01, 0x37, 0x01, 0x22, 0x01, 0x23, 0x01, + 0x0f, 0x01, 0x0f, 0x01, 0xf9, 0x00, 0xf9, 0x00, 0xe1, 0x00, 0xe0, 0x00, + 0xca, 0x00, 0xca, 0x00, 0xad, 0x00, 0xad, 0x00, 0x91, 0x00, 0x91, 0x00, + 0x73, 0x00, 0x72, 0x00, 0x56, 0x00, 0x57, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x18, 0x00, 0x18, 0x00, 0xf6, 0xff, 0xf6, 0xff, 0xd7, 0xff, 0xd6, 0xff, + 0xb6, 0xff, 0xb7, 0xff, 0x95, 0xff, 0x93, 0xff, 0x75, 0xff, 0x75, 0xff, + 0x54, 0xff, 0x55, 0xff, 0x35, 0xff, 0x35, 0xff, 0x17, 0xff, 0x18, 0xff, + 0xfc, 0xfe, 0xfb, 0xfe, 0xde, 0xfe, 0xde, 0xfe, 0xc5, 0xfe, 0xc4, 0xfe, + 0xaa, 0xfe, 0xab, 0xfe, 0x94, 0xfe, 0x94, 0xfe, 0x7e, 0xfe, 0x7f, 0xfe, + 0x6b, 0xfe, 0x6b, 0xfe, 0x5b, 0xfe, 0x5a, 0xfe, 0x4d, 0xfe, 0x4e, 0xfe, + 0x41, 0xfe, 0x42, 0xfe, 0x38, 0xfe, 0x36, 0xfe, 0x33, 0xfe, 0x33, 0xfe, + 0x2d, 0xfe, 0x2c, 0xfe, 0x2b, 0xfe, 0x2d, 0xfe, 0x2e, 0xfe, 0x2b, 0xfe, + 0x31, 0xfe, 0x34, 0xfe, 0x3a, 0xfe, 0x37, 0xfe, 0x42, 0xfe, 0x44, 0xfe, + 0x52, 0xfe, 0x4e, 0xfe, 0x5d, 0xfe, 0x61, 0xfe, 0x73, 0xfe, 0x6f, 0xfe, + 0x83, 0xfe, 0x85, 0xfe, 0x9a, 0xfe, 0x99, 0xfe, 0xb1, 0xfe, 0xb2, 0xfe, + 0xcc, 0xfe, 0xca, 0xfe, 0xe6, 0xfe, 0xe7, 0xfe, 0x04, 0xff, 0x04, 0xff, + 0x21, 0xff, 0x21, 0xff, 0x42, 0xff, 0x41, 0xff, 0x61, 0xff, 0x63, 0xff, + 0x86, 0xff, 0x85, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xc9, 0xff, 0xc7, 0xff, + 0xea, 0xff, 0xea, 0xff, 0x0e, 0x00, 0x0d, 0x00, 0x2f, 0x00, 0x30, 0x00, + 0x52, 0x00, 0x52, 0x00, 0x73, 0x00, 0x71, 0x00, 0x94, 0x00, 0x94, 0x00, + 0xb1, 0x00, 0xb0, 0x00, 0xd0, 0x00, 0xd2, 0x00, 0xed, 0x00, 0xea, 0x00, + 0x08, 0x01, 0x09, 0x01, 0x1e, 0x01, 0x1d, 0x01, 0x36, 0x01, 0x37, 0x01, + 0x4b, 0x01, 0x4c, 0x01, 0x5d, 0x01, 0x5c, 0x01, 0x6e, 0x01, 0x6f, 0x01, + 0x7b, 0x01, 0x7a, 0x01, 0x86, 0x01, 0x85, 0x01, 0x8f, 0x01, 0x91, 0x01, + 0x93, 0x01, 0x94, 0x01, 0x9a, 0x01, 0x99, 0x01, 0x98, 0x01, 0x99, 0x01, + 0x99, 0x01, 0x98, 0x01, 0x93, 0x01, 0x95, 0x01, 0x8d, 0x01, 0x8d, 0x01, + 0x85, 0x01, 0x86, 0x01, 0x79, 0x01, 0x79, 0x01, 0x6d, 0x01, 0x6d, 0x01, + 0x5d, 0x01, 0x5c, 0x01, 0x4d, 0x01, 0x4e, 0x01, 0x37, 0x01, 0x37, 0x01, + 0x24, 0x01, 0x24, 0x01, 0x0c, 0x01, 0x0c, 0x01, 0xf6, 0x00, 0xf7, 0x00, + 0xda, 0x00, 0xda, 0x00, 0xc2, 0x00, 0xc1, 0x00, 0xa5, 0x00, 0xa6, 0x00, + 0x89, 0x00, 0x87, 0x00, 0x6e, 0x00, 0x6d, 0x00, 0x4f, 0x00, 0x4e, 0x00, + 0x34, 0x00, 0x33, 0x00, 0x14, 0x00, 0x14, 0x00, 0xfa, 0xff, 0xf8, 0xff, + 0xdb, 0xff, 0xdc, 0xff, 0xbf, 0xff, 0xbe, 0xff, 0xa4, 0xff, 0xa5, 0xff, + 0x8a, 0xff, 0x8b, 0xff, 0x70, 0xff, 0x6f, 0xff, 0x5a, 0xff, 0x58, 0xff, + 0x40, 0xff, 0x41, 0xff, 0x2d, 0xff, 0x2c, 0xff, 0x17, 0xff, 0x17, 0xff, + 0x05, 0xff, 0x06, 0xff, 0xf6, 0xfe, 0xf5, 0xfe, 0xe9, 0xfe, 0xe8, 0xfe, + 0xdb, 0xfe, 0xdc, 0xfe, 0xd1, 0xfe, 0xd1, 0xfe, 0xc7, 0xfe, 0xc9, 0xfe, + 0xc5, 0xfe, 0xc2, 0xfe, 0xbd, 0xfe, 0xbf, 0xfe, 0xbc, 0xfe, 0xbb, 0xfe, + 0xbc, 0xfe, 0xbc, 0xfe, 0xba, 0xfe, 0xbb, 0xfe, 0xc1, 0xfe, 0xc0, 0xfe, + 0xc4, 0xfe, 0xc4, 0xfe, 0xc8, 0xfe, 0xcc, 0xfe, 0xd5, 0xfe, 0xd1, 0xfe, + 0xdb, 0xfe, 0xde, 0xfe, 0xe7, 0xfe, 0xe5, 0xfe, 0xf1, 0xfe, 0xf2, 0xfe, + 0xfe, 0xfe, 0xff, 0xfe, 0x0f, 0xff, 0x0f, 0xff, 0x1e, 0xff, 0x1c, 0xff, + 0x2c, 0xff, 0x2f, 0xff, 0x3f, 0xff, 0x3e, 0xff, 0x50, 0xff, 0x51, 0xff, + 0x63, 0xff, 0x63, 0xff, 0x76, 0xff, 0x75, 0xff, 0x87, 0xff, 0x89, 0xff, + 0x9c, 0xff, 0x9b, 0xff, 0xac, 0xff, 0xae, 0xff, 0xc0, 0xff, 0xbf, 0xff, + 0xd1, 0xff, 0xd3, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0x07, 0x00, 0x07, 0x00, 0x15, 0x00, 0x16, 0x00, 0x28, 0x00, 0x26, 0x00, + 0x34, 0x00, 0x37, 0x00, 0x44, 0x00, 0x43, 0x00, 0x52, 0x00, 0x52, 0x00, + 0x5e, 0x00, 0x5f, 0x00, 0x69, 0x00, 0x69, 0x00, 0x76, 0x00, 0x76, 0x00, + 0x7d, 0x00, 0x7e, 0x00, 0x86, 0x00, 0x85, 0x00, 0x8e, 0x00, 0x8f, 0x00, + 0x93, 0x00, 0x94, 0x00, 0x9b, 0x00, 0x9a, 0x00, 0x9d, 0x00, 0x9f, 0x00, + 0xa3, 0x00, 0xa2, 0x00, 0xa4, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, 0x00, + 0xa9, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xab, 0x00, 0xaa, 0x00, 0xab, 0x00, + 0xaa, 0x00, 0xa9, 0x00, 0xa8, 0x00, 0xaa, 0x00, 0xa8, 0x00, 0xa7, 0x00, + 0xa4, 0x00, 0xa6, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa0, 0x00, 0xa0, 0x00, + 0x9d, 0x00, 0x9f, 0x00, 0x9b, 0x00, 0x9b, 0x00, 0x97, 0x00, 0x98, 0x00, + 0x95, 0x00, 0x96, 0x00, 0x91, 0x00, 0x94, 0x00, 0x8f, 0x00, 0x8f, 0x00, + 0x8b, 0x00, 0x8d, 0x00, 0x89, 0x00, 0x8b, 0x00, 0x85, 0x00, 0x87, 0x00, + 0x83, 0x00, 0x84, 0x00, 0x82, 0x00, 0x82, 0x00, 0x7d, 0x00, 0x7f, 0x00, + 0x7b, 0x00, 0x7c, 0x00, 0x79, 0x00, 0x7b, 0x00, 0x76, 0x00, 0x79, 0x00, + 0x75, 0x00, 0x74, 0x00, 0x71, 0x00, 0x73, 0x00, 0x71, 0x00, 0x6f, 0x00, + 0x6c, 0x00, 0x6e, 0x00, 0x6a, 0x00, 0x69, 0x00, 0x67, 0x00, 0x68, 0x00, + 0x64, 0x00, 0x64, 0x00, 0x64, 0x00, 0x62, 0x00, 0x5c, 0x00, 0x5d, 0x00, + 0x5b, 0x00, 0x5a, 0x00, 0x56, 0x00, 0x56, 0x00, 0x50, 0x00, 0x51, 0x00, + 0x4c, 0x00, 0x4b, 0x00, 0x44, 0x00, 0x46, 0x00, 0x43, 0x00, 0x41, 0x00, + 0x3a, 0x00, 0x3a, 0x00, 0x33, 0x00, 0x33, 0x00, 0x2e, 0x00, 0x2d, 0x00, + 0x22, 0x00, 0x22, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x12, 0x00, 0x10, 0x00, + 0x07, 0x00, 0x08, 0x00, 0xfd, 0xff, 0xfb, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0xe7, 0xff, 0xe6, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xd0, 0xff, 0xcf, 0xff, + 0xc3, 0xff, 0xc3, 0xff, 0xb8, 0xff, 0xb9, 0xff, 0xaa, 0xff, 0xa9, 0xff, + 0x9d, 0xff, 0x9f, 0xff, 0x92, 0xff, 0x93, 0xff, 0x84, 0xff, 0x83, 0xff, + 0x78, 0xff, 0x79, 0xff, 0x6c, 0xff, 0x6b, 0xff, 0x5e, 0xff, 0x5f, 0xff, + 0x55, 0xff, 0x54, 0xff, 0x47, 0xff, 0x46, 0xff, 0x3e, 0xff, 0x3f, 0xff, + 0x32, 0xff, 0x32, 0xff, 0x2c, 0xff, 0x29, 0xff, 0x21, 0xff, 0x23, 0xff, + 0x1c, 0xff, 0x1a, 0xff, 0x13, 0xff, 0x15, 0xff, 0x10, 0xff, 0x0e, 0xff, + 0x0a, 0xff, 0x0c, 0xff, 0x09, 0xff, 0x07, 0xff, 0x06, 0xff, 0x08, 0xff, + 0x09, 0xff, 0x05, 0xff, 0x06, 0xff, 0x0a, 0xff, 0x0d, 0xff, 0x0b, 0xff, + 0x10, 0xff, 0x0f, 0xff, 0x17, 0xff, 0x18, 0xff, 0x20, 0xff, 0x20, 0xff, + 0x2b, 0xff, 0x2b, 0xff, 0x37, 0xff, 0x38, 0xff, 0x45, 0xff, 0x44, 0xff, + 0x52, 0xff, 0x54, 0xff, 0x64, 0xff, 0x62, 0xff, 0x75, 0xff, 0x76, 0xff, + 0x87, 0xff, 0x87, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0xb0, 0xff, 0xb0, 0xff, + 0xc3, 0xff, 0xc3, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xf3, 0xff, 0xf4, 0xff, + 0x0c, 0x00, 0x0b, 0x00, 0x24, 0x00, 0x26, 0x00, 0x3d, 0x00, 0x3c, 0x00, + 0x58, 0x00, 0x59, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x89, 0x00, 0x8a, 0x00, + 0xa1, 0x00, 0xa0, 0x00, 0xbd, 0x00, 0xba, 0x00, 0xd0, 0x00, 0xd3, 0x00, + 0xeb, 0x00, 0xe9, 0x00, 0xff, 0x00, 0xff, 0x00, 0x13, 0x01, 0x15, 0x01, + 0x2a, 0x01, 0x28, 0x01, 0x3b, 0x01, 0x3a, 0x01, 0x4c, 0x01, 0x4d, 0x01, + 0x5b, 0x01, 0x5b, 0x01, 0x67, 0x01, 0x68, 0x01, 0x75, 0x01, 0x75, 0x01, + 0x7e, 0x01, 0x7d, 0x01, 0x85, 0x01, 0x85, 0x01, 0x89, 0x01, 0x89, 0x01, + 0x8c, 0x01, 0x8b, 0x01, 0x8a, 0x01, 0x8a, 0x01, 0x88, 0x01, 0x88, 0x01, + 0x81, 0x01, 0x81, 0x01, 0x79, 0x01, 0x7b, 0x01, 0x71, 0x01, 0x6f, 0x01, + 0x62, 0x01, 0x65, 0x01, 0x55, 0x01, 0x54, 0x01, 0x44, 0x01, 0x45, 0x01, + 0x30, 0x01, 0x30, 0x01, 0x1b, 0x01, 0x1d, 0x01, 0x04, 0x01, 0x04, 0x01, + 0xea, 0x00, 0xeb, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xb3, 0x00, 0xb2, 0x00, + 0x95, 0x00, 0x96, 0x00, 0x77, 0x00, 0x77, 0x00, 0x58, 0x00, 0x57, 0x00, + 0x36, 0x00, 0x38, 0x00, 0x14, 0x00, 0x14, 0x00, 0xf2, 0xff, 0xf5, 0xff, + 0xd2, 0xff, 0xd0, 0xff, 0xae, 0xff, 0xb0, 0xff, 0x8f, 0xff, 0x8e, 0xff, + 0x6b, 0xff, 0x6b, 0xff, 0x4a, 0xff, 0x4c, 0xff, 0x2b, 0xff, 0x2b, 0xff, + 0x0c, 0xff, 0x0d, 0xff, 0xef, 0xfe, 0xee, 0xfe, 0xd2, 0xfe, 0xd2, 0xfe, + 0xb5, 0xfe, 0xb6, 0xfe, 0x9f, 0xfe, 0xa0, 0xfe, 0x87, 0xfe, 0x86, 0xfe, + 0x72, 0xfe, 0x73, 0xfe, 0x60, 0xfe, 0x5f, 0xfe, 0x4d, 0xfe, 0x4f, 0xfe, + 0x44, 0xfe, 0x44, 0xfe, 0x35, 0xfe, 0x36, 0xfe, 0x2f, 0xfe, 0x31, 0xfe, + 0x2d, 0xfe, 0x2c, 0xfe, 0x28, 0xfe, 0x29, 0xfe, 0x2b, 0xfe, 0x2b, 0xfe, + 0x2d, 0xfe, 0x2c, 0xfe, 0x33, 0xfe, 0x33, 0xfe, 0x3d, 0xfe, 0x3c, 0xfe, + 0x46, 0xfe, 0x47, 0xfe, 0x57, 0xfe, 0x56, 0xfe, 0x64, 0xfe, 0x65, 0xfe, + 0x7b, 0xfe, 0x7a, 0xfe, 0x8d, 0xfe, 0x8e, 0xfe, 0xa8, 0xfe, 0xa8, 0xfe, + 0xbf, 0xfe, 0xbd, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xf9, 0xfe, 0xfb, 0xfe, + 0x18, 0xff, 0x15, 0xff, 0x36, 0xff, 0x3a, 0xff, 0x59, 0xff, 0x55, 0xff, + 0x76, 0xff, 0x7a, 0xff, 0x9c, 0xff, 0x99, 0xff, 0xbd, 0xff, 0xbe, 0xff, + 0xe0, 0xff, 0xe1, 0xff, 0x03, 0x00, 0x01, 0x00, 0x25, 0x00, 0x27, 0x00, + 0x48, 0x00, 0x47, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x89, 0x00, 0x89, 0x00, + 0xa7, 0x00, 0xa7, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xe2, 0x00, 0xe1, 0x00, + 0xfe, 0x00, 0xfc, 0x00, 0x16, 0x01, 0x17, 0x01, 0x2c, 0x01, 0x2b, 0x01, + 0x42, 0x01, 0x42, 0x01, 0x53, 0x01, 0x53, 0x01, 0x63, 0x01, 0x62, 0x01, + 0x71, 0x01, 0x72, 0x01, 0x7c, 0x01, 0x7b, 0x01, 0x82, 0x01, 0x85, 0x01, + 0x8b, 0x01, 0x89, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8e, 0x01, 0x8e, 0x01, + 0x8b, 0x01, 0x8b, 0x01, 0x87, 0x01, 0x87, 0x01, 0x81, 0x01, 0x82, 0x01, + 0x77, 0x01, 0x76, 0x01, 0x6b, 0x01, 0x6d, 0x01, 0x60, 0x01, 0x60, 0x01, + 0x50, 0x01, 0x4f, 0x01, 0x3e, 0x01, 0x40, 0x01, 0x2c, 0x01, 0x2a, 0x01, + 0x16, 0x01, 0x18, 0x01, 0x00, 0x01, 0x00, 0x01, 0xe9, 0x00, 0xe9, 0x00, + 0xcf, 0x00, 0xcf, 0x00, 0xb4, 0x00, 0xb6, 0x00, 0x9b, 0x00, 0x9a, 0x00, + 0x7d, 0x00, 0x7e, 0x00, 0x63, 0x00, 0x63, 0x00, 0x46, 0x00, 0x47, 0x00, + 0x2a, 0x00, 0x29, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0xf2, 0xff, 0xf2, 0xff, + 0xd7, 0xff, 0xd7, 0xff, 0xbb, 0xff, 0xbc, 0xff, 0xa3, 0xff, 0xa2, 0xff, + 0x87, 0xff, 0x88, 0xff, 0x73, 0xff, 0x71, 0xff, 0x5a, 0xff, 0x5a, 0xff, + 0x45, 0xff, 0x46, 0xff, 0x33, 0xff, 0x31, 0xff, 0x20, 0xff, 0x21, 0xff, + 0x11, 0xff, 0x10, 0xff, 0x03, 0xff, 0x02, 0xff, 0xf5, 0xfe, 0xf8, 0xfe, + 0xec, 0xfe, 0xeb, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, 0xdc, 0xfe, 0xdd, 0xfe, + 0xd8, 0xfe, 0xd7, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, 0xd2, 0xfe, 0xd1, 0xfe, + 0xd7, 0xfe, 0xd6, 0xfe, 0xd5, 0xfe, 0xd5, 0xfe, 0xdd, 0xfe, 0xdc, 0xfe, + 0xe1, 0xfe, 0xe0, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0xf1, 0xfe, 0xf2, 0xfe, + 0xf8, 0xfe, 0xf7, 0xfe, 0x03, 0xff, 0x04, 0xff, 0x10, 0xff, 0x0e, 0xff, + 0x1b, 0xff, 0x1d, 0xff, 0x2b, 0xff, 0x29, 0xff, 0x36, 0xff, 0x37, 0xff, + 0x49, 0xff, 0x48, 0xff, 0x55, 0xff, 0x55, 0xff, 0x68, 0xff, 0x68, 0xff, + 0x76, 0xff, 0x77, 0xff, 0x88, 0xff, 0x89, 0xff, 0x98, 0xff, 0x98, 0xff, + 0xa8, 0xff, 0xa9, 0xff, 0xba, 0xff, 0xba, 0xff, 0xc8, 0xff, 0xc9, 0xff, + 0xdb, 0xff, 0xda, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xfa, 0xff, 0xf8, 0xff, + 0x07, 0x00, 0x08, 0x00, 0x15, 0x00, 0x15, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x31, 0x00, 0x31, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x48, 0x00, 0x47, 0x00, + 0x51, 0x00, 0x51, 0x00, 0x5c, 0x00, 0x5a, 0x00, 0x63, 0x00, 0x64, 0x00, + 0x6c, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x73, 0x00, 0x79, 0x00, 0x78, 0x00, + 0x7e, 0x00, 0x7e, 0x00, 0x82, 0x00, 0x81, 0x00, 0x86, 0x00, 0x86, 0x00, + 0x89, 0x00, 0x88, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, + 0x8e, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x8d, 0x00, + 0x8c, 0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x89, 0x00, 0x88, 0x00, + 0x88, 0x00, 0x89, 0x00, 0x84, 0x00, 0x83, 0x00, 0x84, 0x00, 0x83, 0x00, + 0x80, 0x00, 0x80, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x7c, 0x00, 0x7c, 0x00, + 0x7b, 0x00, 0x7a, 0x00, 0x78, 0x00, 0x77, 0x00, 0x75, 0x00, 0x74, 0x00, + 0x74, 0x00, 0x73, 0x00, 0x71, 0x00, 0x71, 0x00, 0x6f, 0x00, 0x6f, 0x00, + 0x6b, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x66, 0x00, 0x67, 0x00, + 0x66, 0x00, 0x65, 0x00, 0x62, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0x61, 0x00, 0x60, 0x00, 0x5f, 0x00, 0x61, 0x00, + 0x64, 0x00, 0x62, 0x00, 0x62, 0x00, 0x63, 0x00, 0x66, 0x00, 0x65, 0x00, + 0x67, 0x00, 0x67, 0x00, 0x66, 0x00, 0x67, 0x00, 0x67, 0x00, 0x66, 0x00, + 0x61, 0x00, 0x63, 0x00, 0x60, 0x00, 0x5f, 0x00, 0x58, 0x00, 0x58, 0x00, + 0x50, 0x00, 0x52, 0x00, 0x45, 0x00, 0x46, 0x00, 0x3c, 0x00, 0x3a, 0x00, + 0x2f, 0x00, 0x31, 0x00, 0x21, 0x00, 0x20, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x08, 0x00, 0x09, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xee, 0xff, 0xf0, 0xff, + 0xe4, 0xff, 0xe3, 0xff, 0xd6, 0xff, 0xd9, 0xff, 0xcd, 0xff, 0xcd, 0xff, + 0xc3, 0xff, 0xc4, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xb4, 0xff, 0xb5, 0xff, + 0xb3, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xaf, 0xff, 0xb7, 0xff, 0xb7, 0xff, + 0xbe, 0xff, 0xbe, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xe2, 0xff, 0xe3, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0x18, 0x00, 0x19, 0x00, 0x39, 0x00, 0x39, 0x00, + 0x59, 0x00, 0x59, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x95, 0x00, 0x96, 0x00, + 0xb0, 0x00, 0xae, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xc1, 0x00, 0xc1, 0x00, + 0xba, 0x00, 0xba, 0x00, 0xa5, 0x00, 0xa5, 0x00, 0x82, 0x00, 0x82, 0x00, + 0x4a, 0x00, 0x4a, 0x00, 0xf2, 0xff, 0xf4, 0xff, 0x92, 0xff, 0x91, 0xff, + 0x2c, 0xff, 0x2c, 0xff, 0xc2, 0xfe, 0xc3, 0xfe, 0x60, 0xfe, 0x60, 0xfe, + 0xfd, 0xfd, 0xfc, 0xfd, 0xa9, 0xfd, 0xaa, 0xfd, 0x59, 0xfd, 0x58, 0xfd, + 0x16, 0xfd, 0x15, 0xfd, 0xde, 0xfc, 0xdf, 0xfc, 0xb0, 0xfc, 0xaf, 0xfc, + 0x8d, 0xfc, 0x8d, 0xfc, 0x75, 0xfc, 0x76, 0xfc, 0x6a, 0xfc, 0x6a, 0xfc, + 0x69, 0xfc, 0x69, 0xfc, 0x7a, 0xfc, 0x7b, 0xfc, 0x99, 0xfc, 0x96, 0xfc, + 0xc5, 0xfc, 0xc6, 0xfc, 0x06, 0xfd, 0x06, 0xfd, 0x58, 0xfd, 0x57, 0xfd, + 0xc0, 0xfd, 0xc0, 0xfd, 0x3c, 0xfe, 0x3b, 0xfe, 0xcb, 0xfe, 0xca, 0xfe, + 0x6a, 0xff, 0x6b, 0xff, 0x1d, 0x00, 0x1d, 0x00, 0xd9, 0x00, 0xda, 0x00, + 0x9f, 0x01, 0x9f, 0x01, 0x6c, 0x02, 0x6d, 0x02, 0x32, 0x03, 0x33, 0x03, + 0xf9, 0x03, 0xf8, 0x03, 0xb1, 0x04, 0xb1, 0x04, 0x57, 0x05, 0x59, 0x05, + 0xee, 0x05, 0xed, 0x05, 0x67, 0x06, 0x67, 0x06, 0xc8, 0x06, 0xc9, 0x06, + 0x0b, 0x07, 0x0c, 0x07, 0x30, 0x07, 0x31, 0x07, 0x38, 0x07, 0x38, 0x07, + 0x20, 0x07, 0x1f, 0x07, 0xe9, 0x06, 0xe9, 0x06, 0x94, 0x06, 0x96, 0x06, + 0x27, 0x06, 0x25, 0x06, 0x9d, 0x05, 0x9d, 0x05, 0xfb, 0x04, 0xfb, 0x04, + 0x45, 0x04, 0x43, 0x04, 0x78, 0x03, 0x7a, 0x03, 0x9f, 0x02, 0x9d, 0x02, + 0xb3, 0x01, 0xb4, 0x01, 0xbf, 0x00, 0xbe, 0x00, 0xc1, 0xff, 0xbf, 0xff, + 0xbf, 0xfe, 0xc0, 0xfe, 0xbf, 0xfd, 0xbc, 0xfd, 0xc4, 0xfc, 0xc4, 0xfc, + 0xd0, 0xfb, 0xd0, 0xfb, 0xef, 0xfa, 0xed, 0xfa, 0x20, 0xfa, 0x21, 0xfa, + 0x6b, 0xf9, 0x68, 0xf9, 0xd5, 0xf8, 0xd5, 0xf8, 0x60, 0xf8, 0x60, 0xf8, + 0x11, 0xf8, 0x10, 0xf8, 0xeb, 0xf7, 0xea, 0xf7, 0xeb, 0xf7, 0xeb, 0xf7, + 0x19, 0xf8, 0x18, 0xf8, 0x6e, 0xf8, 0x6e, 0xf8, 0xec, 0xf8, 0xeb, 0xf8, + 0x8f, 0xf9, 0x8e, 0xf9, 0x50, 0xfa, 0x51, 0xfa, 0x30, 0xfb, 0x2f, 0xfb, + 0x27, 0xfc, 0x28, 0xfc, 0x2f, 0xfd, 0x2f, 0xfd, 0x44, 0xfe, 0x45, 0xfe, + 0x60, 0xff, 0x5e, 0xff, 0x7a, 0x00, 0x7c, 0x00, 0x94, 0x01, 0x92, 0x01, + 0x9f, 0x02, 0xa0, 0x02, 0x9e, 0x03, 0x9d, 0x03, 0x8b, 0x04, 0x8b, 0x04, + 0x5e, 0x05, 0x5e, 0x05, 0x16, 0x06, 0x17, 0x06, 0xae, 0x06, 0xae, 0x06, + 0x23, 0x07, 0x22, 0x07, 0x72, 0x07, 0x72, 0x07, 0x98, 0x07, 0x97, 0x07, + 0x93, 0x07, 0x93, 0x07, 0x64, 0x07, 0x64, 0x07, 0x04, 0x07, 0x05, 0x07, + 0x7b, 0x06, 0x7b, 0x06, 0xc7, 0x05, 0xc7, 0x05, 0xe9, 0x04, 0xe9, 0x04, + 0xe7, 0x03, 0xe6, 0x03, 0xc2, 0x02, 0xc3, 0x02, 0x84, 0x01, 0x84, 0x01, + 0x35, 0x00, 0x34, 0x00, 0xd6, 0xfe, 0xd8, 0xfe, 0x78, 0xfd, 0x75, 0xfd, + 0x17, 0xfc, 0x1a, 0xfc, 0xc8, 0xfa, 0xc6, 0xfa, 0x89, 0xf9, 0x88, 0xf9, + 0x63, 0xf8, 0x63, 0xf8, 0x60, 0xf7, 0x5f, 0xf7, 0x82, 0xf6, 0x81, 0xf6, + 0xcd, 0xf5, 0xce, 0xf5, 0x47, 0xf5, 0x45, 0xf5, 0xf2, 0xf4, 0xf3, 0xf4, + 0xd3, 0xf4, 0xd3, 0xf4, 0xe6, 0xf4, 0xe5, 0xf4, 0x31, 0xf5, 0x32, 0xf5, + 0xaf, 0xf5, 0xae, 0xf5, 0x64, 0xf6, 0x64, 0xf6, 0x4b, 0xf7, 0x4b, 0xf7, + 0x61, 0xf8, 0x61, 0xf8, 0xa4, 0xf9, 0xa4, 0xf9, 0x0f, 0xfb, 0x0f, 0xfb, + 0x9d, 0xfc, 0x9b, 0xfc, 0x43, 0xfe, 0x46, 0xfe, 0x01, 0x00, 0xff, 0xff, + 0xc7, 0x01, 0xca, 0x01, 0x94, 0x03, 0x93, 0x03, 0x5d, 0x05, 0x5d, 0x05, + 0x11, 0x07, 0x13, 0x07, 0xb8, 0x08, 0xb8, 0x08, 0x3a, 0x0a, 0x3b, 0x0a, + 0x9a, 0x0b, 0x9a, 0x0b, 0xca, 0x0c, 0xcc, 0x0c, 0xcc, 0x0d, 0xcc, 0x0d, + 0x93, 0x0e, 0x94, 0x0e, 0x1e, 0x0f, 0x1e, 0x0f, 0x69, 0x0f, 0x6a, 0x0f, + 0x73, 0x0f, 0x72, 0x0f, 0x3b, 0x0f, 0x3d, 0x0f, 0xbf, 0x0e, 0xbe, 0x0e, + 0x03, 0x0e, 0x04, 0x0e, 0x07, 0x0d, 0x07, 0x0d, 0xd0, 0x0b, 0xd1, 0x0b, + 0x64, 0x0a, 0x63, 0x0a, 0xc7, 0x08, 0xc9, 0x08, 0x04, 0x07, 0x04, 0x07, + 0x21, 0x05, 0x22, 0x05, 0x28, 0x03, 0x29, 0x03, 0x20, 0x01, 0x20, 0x01, + 0x16, 0xff, 0x16, 0xff, 0x0f, 0xfd, 0x10, 0xfd, 0x1a, 0xfb, 0x1a, 0xfb, + 0x3b, 0xf9, 0x3c, 0xf9, 0x7d, 0xf7, 0x7d, 0xf7, 0xe5, 0xf5, 0xe7, 0xf5, + 0x7e, 0xf4, 0x7f, 0xf4, 0x4c, 0xf3, 0x4c, 0xf3, 0x53, 0xf2, 0x53, 0xf2, + 0x99, 0xf1, 0x9a, 0xf1, 0x24, 0xf1, 0x24, 0xf1, 0xf0, 0xf0, 0xf1, 0xf0, + 0x08, 0xf1, 0x07, 0xf1, 0x63, 0xf1, 0x64, 0xf1, 0x0b, 0xf2, 0x08, 0xf2, + 0xef, 0xf2, 0xf2, 0xf2, 0x1a, 0xf4, 0x19, 0xf4, 0x7b, 0xf5, 0x7c, 0xf5, + 0x11, 0xf7, 0x11, 0xf7, 0xd3, 0xf8, 0xd3, 0xf8, 0xb7, 0xfa, 0xb9, 0xfa, + 0xb3, 0xfc, 0xb2, 0xfc, 0xbd, 0xfe, 0xbe, 0xfe, 0xc7, 0x00, 0xc9, 0x00, + 0xce, 0x02, 0xcd, 0x02, 0xbe, 0x04, 0xbf, 0x04, 0x98, 0x06, 0x98, 0x06, + 0x4e, 0x08, 0x4c, 0x08, 0xd7, 0x09, 0xd8, 0x09, 0x2f, 0x0b, 0x2f, 0x0b, + 0x4e, 0x0c, 0x4d, 0x0c, 0x31, 0x0d, 0x31, 0x0d, 0xd3, 0x0d, 0xd2, 0x0d, + 0x2f, 0x0e, 0x30, 0x0e, 0x46, 0x0e, 0x45, 0x0e, 0x15, 0x0e, 0x15, 0x0e, + 0x9b, 0x0d, 0x9b, 0x0d, 0xdb, 0x0c, 0xdb, 0x0c, 0xd5, 0x0b, 0xd6, 0x0b, + 0x91, 0x0a, 0x90, 0x0a, 0x11, 0x09, 0x11, 0x09, 0x58, 0x07, 0x59, 0x07, + 0x76, 0x05, 0x76, 0x05, 0x6d, 0x03, 0x6e, 0x03, 0x4f, 0x01, 0x4e, 0x01, + 0x1d, 0xff, 0x1f, 0xff, 0xee, 0xfc, 0xec, 0xfc, 0xc1, 0xfa, 0xc1, 0xfa, + 0xa8, 0xf8, 0xa7, 0xf8, 0xaf, 0xf6, 0xae, 0xf6, 0xd7, 0xf4, 0xd8, 0xf4, + 0x34, 0xf3, 0x34, 0xf3, 0xc4, 0xf1, 0xc5, 0xf1, 0x95, 0xf0, 0x94, 0xf0, + 0xa8, 0xef, 0xa8, 0xef, 0x04, 0xef, 0x04, 0xef, 0xac, 0xee, 0xab, 0xee, + 0xa0, 0xee, 0xa0, 0xee, 0xe4, 0xee, 0xe4, 0xee, 0x77, 0xef, 0x78, 0xef, + 0x58, 0xf0, 0x59, 0xf0, 0x82, 0xf1, 0x81, 0xf1, 0xf0, 0xf2, 0xf2, 0xf2, + 0x9c, 0xf4, 0x9b, 0xf4, 0x7d, 0xf6, 0x7d, 0xf6, 0x88, 0xf8, 0x8a, 0xf8, + 0xb9, 0xfa, 0xb7, 0xfa, 0xfc, 0xfc, 0xfe, 0xfc, 0x4c, 0xff, 0x4d, 0xff, + 0x9f, 0x01, 0x9d, 0x01, 0xe0, 0x03, 0xe3, 0x03, 0x13, 0x06, 0x11, 0x06, + 0x22, 0x08, 0x23, 0x08, 0x0a, 0x0a, 0x0a, 0x0a, 0xc2, 0x0b, 0xc1, 0x0b, + 0x40, 0x0d, 0x41, 0x0d, 0x82, 0x0e, 0x81, 0x0e, 0x7d, 0x0f, 0x7d, 0x0f, + 0x33, 0x10, 0x34, 0x10, 0xa1, 0x10, 0x9d, 0x10, 0xb9, 0x10, 0xbc, 0x10, + 0x8a, 0x10, 0x88, 0x10, 0x06, 0x10, 0x05, 0x10, 0x35, 0x0f, 0x36, 0x0f, + 0x1a, 0x0e, 0x19, 0x0e, 0xb6, 0x0c, 0xb6, 0x0c, 0x12, 0x0b, 0x10, 0x0b, + 0x34, 0x09, 0x35, 0x09, 0x25, 0x07, 0x25, 0x07, 0xf2, 0x04, 0xf2, 0x04, + 0xa6, 0x02, 0xa6, 0x02, 0x50, 0x00, 0x4e, 0x00, 0xf7, 0xfd, 0xf9, 0xfd, + 0xae, 0xfb, 0xac, 0xfb, 0x7b, 0xf9, 0x7b, 0xf9, 0x70, 0xf7, 0x70, 0xf7, + 0x91, 0xf5, 0x90, 0xf5, 0xe9, 0xf3, 0xe9, 0xf3, 0x7f, 0xf2, 0x7f, 0xf2, + 0x58, 0xf1, 0x57, 0xf1, 0x7c, 0xf0, 0x7d, 0xf0, 0xf0, 0xef, 0xee, 0xef, + 0xaf, 0xef, 0xb0, 0xef, 0xc4, 0xef, 0xc1, 0xef, 0x27, 0xf0, 0x29, 0xf0, + 0xdc, 0xf0, 0xd9, 0xf0, 0xdd, 0xf1, 0xde, 0xf1, 0x28, 0xf3, 0x27, 0xf3, + 0xb7, 0xf4, 0xb6, 0xf4, 0x86, 0xf6, 0x84, 0xf6, 0x89, 0xf8, 0x88, 0xf8, + 0xba, 0xfa, 0xb9, 0xfa, 0x0f, 0xfd, 0x0c, 0xfd, 0x77, 0xff, 0x78, 0xff, + 0xf1, 0x01, 0xef, 0x01, 0x67, 0x04, 0x68, 0x04, 0xd0, 0x06, 0xcf, 0x06, + 0x22, 0x09, 0x20, 0x09, 0x51, 0x0b, 0x50, 0x0b, 0x51, 0x0d, 0x50, 0x0d, + 0x1a, 0x0f, 0x18, 0x0f, 0xa1, 0x10, 0xa1, 0x10, 0xe1, 0x11, 0xdf, 0x11, + 0xd2, 0x12, 0xd1, 0x12, 0x6f, 0x13, 0x6f, 0x13, 0xb7, 0x13, 0xb5, 0x13, + 0xa2, 0x13, 0xa3, 0x13, 0x36, 0x13, 0x34, 0x13, 0x70, 0x12, 0x70, 0x12, + 0x59, 0x11, 0x58, 0x11, 0xf2, 0x0f, 0xf1, 0x0f, 0x41, 0x0e, 0x42, 0x0e, + 0x55, 0x0c, 0x54, 0x0c, 0x30, 0x0a, 0x30, 0x0a, 0xe6, 0x07, 0xe6, 0x07, + 0x7e, 0x05, 0x7c, 0x05, 0x05, 0x03, 0x06, 0x03, 0x8b, 0x00, 0x8b, 0x00, + 0x12, 0xfe, 0x11, 0xfe, 0xb2, 0xfb, 0xb3, 0xfb, 0x6a, 0xf9, 0x6b, 0xf9, + 0x4e, 0xf7, 0x4d, 0xf7, 0x5d, 0xf5, 0x5e, 0xf5, 0xa4, 0xf3, 0xa3, 0xf3, + 0x28, 0xf2, 0x28, 0xf2, 0xed, 0xf0, 0xed, 0xf0, 0xfa, 0xef, 0xf8, 0xef, + 0x50, 0xef, 0x4f, 0xef, 0xf2, 0xee, 0xf2, 0xee, 0xe6, 0xee, 0xe5, 0xee, + 0x29, 0xef, 0x29, 0xef, 0xbb, 0xef, 0xbb, 0xef, 0xa2, 0xf0, 0xa1, 0xf0, + 0xd1, 0xf1, 0xd1, 0xf1, 0x4c, 0xf3, 0x4b, 0xf3, 0x0b, 0xf5, 0x0b, 0xf5, + 0x04, 0xf7, 0x03, 0xf7, 0x33, 0xf9, 0x32, 0xf9, 0x8a, 0xfb, 0x88, 0xfb, + 0xfd, 0xfd, 0xfc, 0xfd, 0x83, 0x00, 0x81, 0x00, 0x05, 0x03, 0x06, 0x03, + 0x83, 0x05, 0x81, 0x05, 0xe2, 0x07, 0xe2, 0x07, 0x1e, 0x0a, 0x1d, 0x0a, + 0x2b, 0x0c, 0x2a, 0x0c, 0xfb, 0x0d, 0xf9, 0x0d, 0x89, 0x0f, 0x88, 0x0f, + 0xcb, 0x10, 0xca, 0x10, 0xbe, 0x11, 0xbe, 0x11, 0x5d, 0x12, 0x5b, 0x12, + 0xa2, 0x12, 0xa3, 0x12, 0x92, 0x12, 0x90, 0x12, 0x28, 0x12, 0x27, 0x12, + 0x66, 0x11, 0x66, 0x11, 0x52, 0x10, 0x50, 0x10, 0xed, 0x0e, 0xed, 0x0e, + 0x40, 0x0d, 0x3e, 0x0d, 0x4c, 0x0b, 0x4b, 0x0b, 0x21, 0x09, 0x20, 0x09, + 0xc4, 0x06, 0xc4, 0x06, 0x44, 0x04, 0x44, 0x04, 0xae, 0x01, 0xac, 0x01, + 0x07, 0xff, 0x09, 0xff, 0x68, 0xfc, 0x66, 0xfc, 0xcb, 0xf9, 0xcd, 0xf9, + 0x50, 0xf7, 0x50, 0xf7, 0xf6, 0xf4, 0xf5, 0xf4, 0xc8, 0xf2, 0xc6, 0xf2, + 0xd3, 0xf0, 0xd4, 0xf0, 0x1d, 0xef, 0x1c, 0xef, 0xb2, 0xed, 0xb2, 0xed, + 0x93, 0xec, 0x94, 0xec, 0xc9, 0xeb, 0xc9, 0xeb, 0x56, 0xeb, 0x57, 0xeb, + 0x3a, 0xeb, 0x39, 0xeb, 0x7c, 0xeb, 0x7c, 0xeb, 0x17, 0xec, 0x16, 0xec, + 0x08, 0xed, 0x07, 0xed, 0x4b, 0xee, 0x4c, 0xee, 0xd9, 0xef, 0xd5, 0xef, + 0xa9, 0xf1, 0xaa, 0xf1, 0xb2, 0xf3, 0xaf, 0xf3, 0xe6, 0xf5, 0xe5, 0xf5, + 0x37, 0xf8, 0x37, 0xf8, 0x9d, 0xfa, 0x9a, 0xfa, 0x05, 0xfd, 0x06, 0xfd, + 0x66, 0xff, 0x63, 0xff, 0xb3, 0x01, 0xb2, 0x01, 0xe0, 0x03, 0xe0, 0x03, + 0xe9, 0x05, 0xe7, 0x05, 0xbf, 0x07, 0xc0, 0x07, 0x65, 0x09, 0x63, 0x09, + 0xca, 0x0a, 0xc9, 0x0a, 0xf4, 0x0b, 0xf2, 0x0b, 0xd7, 0x0c, 0xd6, 0x0c, + 0x74, 0x0d, 0x73, 0x0d, 0xca, 0x0d, 0xc9, 0x0d, 0xd4, 0x0d, 0xd0, 0x0d, + 0x93, 0x0d, 0x93, 0x0d, 0x06, 0x0d, 0x05, 0x0d, 0x33, 0x0c, 0x30, 0x0c, + 0x1a, 0x0b, 0x1b, 0x0b, 0xbd, 0x09, 0xb9, 0x09, 0x25, 0x08, 0x26, 0x08, + 0x55, 0x06, 0x52, 0x06, 0x5a, 0x04, 0x59, 0x04, 0x3d, 0x02, 0x3a, 0x02, + 0x04, 0x00, 0x04, 0x00, 0xc4, 0xfd, 0xc1, 0xfd, 0x7d, 0xfb, 0x7c, 0xfb, + 0x46, 0xf9, 0x44, 0xf9, 0x26, 0xf7, 0x26, 0xf7, 0x2c, 0xf5, 0x2a, 0xf5, + 0x61, 0xf3, 0x5f, 0xf3, 0xcb, 0xf1, 0xca, 0xf1, 0x7b, 0xf0, 0x77, 0xf0, + 0x72, 0xef, 0x6f, 0xef, 0xb5, 0xee, 0xb5, 0xee, 0x52, 0xee, 0x50, 0xee, + 0x3e, 0xee, 0x3d, 0xee, 0x87, 0xee, 0x85, 0xee, 0x20, 0xef, 0x1e, 0xef, + 0x14, 0xf0, 0x11, 0xf0, 0x53, 0xf1, 0x50, 0xf1, 0xdd, 0xf2, 0xdb, 0xf2, + 0xab, 0xf4, 0xa9, 0xf4, 0xb2, 0xf6, 0xb0, 0xf6, 0xec, 0xf8, 0xea, 0xf8, + 0x49, 0xfb, 0x48, 0xfb, 0xc3, 0xfd, 0xc0, 0xfd, 0x4c, 0x00, 0x4a, 0x00, + 0xd6, 0x02, 0xd6, 0x02, 0x5c, 0x05, 0x59, 0x05, 0xc9, 0x07, 0xc8, 0x07, + 0x1d, 0x0a, 0x19, 0x0a, 0x48, 0x0c, 0x49, 0x0c, 0x43, 0x0e, 0x40, 0x0e, + 0x09, 0x10, 0x07, 0x10, 0x8f, 0x11, 0x8d, 0x11, 0xd1, 0x12, 0xce, 0x12, + 0xcb, 0x13, 0xc9, 0x13, 0x75, 0x14, 0x74, 0x14, 0xd0, 0x14, 0xce, 0x14, + 0xd5, 0x14, 0xd3, 0x14, 0x88, 0x14, 0x85, 0x14, 0xe2, 0x13, 0xe1, 0x13, + 0xeb, 0x12, 0xe9, 0x12, 0xa2, 0x11, 0xa1, 0x11, 0x0d, 0x10, 0x0c, 0x10, + 0x34, 0x0e, 0x31, 0x0e, 0x1c, 0x0c, 0x1a, 0x0c, 0xd5, 0x09, 0xd2, 0x09, + 0x68, 0x07, 0x66, 0x07, 0xe5, 0x04, 0xe3, 0x04, 0x59, 0x02, 0x56, 0x02, + 0xd4, 0xff, 0xd1, 0xff, 0x5f, 0xfd, 0x5e, 0xfd, 0x0d, 0xfb, 0x0b, 0xfb, + 0xe3, 0xf8, 0xe0, 0xf8, 0xf2, 0xf6, 0xf0, 0xf6, 0x3b, 0xf5, 0x38, 0xf5, + 0xca, 0xf3, 0xc9, 0xf3, 0xa4, 0xf2, 0xa2, 0xf2, 0xca, 0xf1, 0xc9, 0xf1, + 0x41, 0xf1, 0x3e, 0xf1, 0x0c, 0xf1, 0x0b, 0xf1, 0x26, 0xf1, 0x24, 0xf1, + 0x97, 0xf1, 0x94, 0xf1, 0x50, 0xf2, 0x51, 0xf2, 0x5f, 0xf3, 0x5a, 0xf3, + 0xad, 0xf4, 0xad, 0xf4, 0x44, 0xf6, 0x42, 0xf6, 0x13, 0xf8, 0x11, 0xf8, + 0x16, 0xfa, 0x15, 0xfa, 0x44, 0xfc, 0x41, 0xfc, 0x8f, 0xfe, 0x8e, 0xfe, + 0xf1, 0x00, 0xf0, 0x00, 0x59, 0x03, 0x56, 0x03, 0xbd, 0x05, 0xbd, 0x05, + 0x14, 0x08, 0x12, 0x08, 0x4b, 0x0a, 0x49, 0x0a, 0x61, 0x0c, 0x5f, 0x0c, + 0x3f, 0x0e, 0x3d, 0x0e, 0xe6, 0x0f, 0xe4, 0x0f, 0x48, 0x11, 0x47, 0x11, + 0x5e, 0x12, 0x5d, 0x12, 0x28, 0x13, 0x24, 0x13, 0x97, 0x13, 0x96, 0x13, + 0xb2, 0x13, 0xad, 0x13, 0x73, 0x13, 0x73, 0x13, 0xe0, 0x12, 0xdd, 0x12, + 0xf9, 0x11, 0xf7, 0x11, 0xc2, 0x10, 0xc0, 0x10, 0x46, 0x0f, 0x42, 0x0f, + 0x86, 0x0d, 0x84, 0x0d, 0x91, 0x0b, 0x90, 0x0b, 0x6f, 0x09, 0x6c, 0x09, + 0x2b, 0x07, 0x2a, 0x07, 0xd5, 0x04, 0xd2, 0x04, 0x6e, 0x02, 0x6d, 0x02, + 0x0d, 0x00, 0x0a, 0x00, 0xb0, 0xfd, 0xae, 0xfd, 0x69, 0xfb, 0x68, 0xfb, + 0x41, 0xf9, 0x3e, 0xf9, 0x3b, 0xf7, 0x3b, 0xf7, 0x64, 0xf5, 0x62, 0xf5, + 0xbf, 0xf3, 0xbd, 0xf3, 0x50, 0xf2, 0x50, 0xf2, 0x23, 0xf1, 0x1f, 0xf1, + 0x33, 0xf0, 0x31, 0xf0, 0x89, 0xef, 0x87, 0xef, 0x23, 0xef, 0x21, 0xef, + 0x08, 0xef, 0x06, 0xef, 0x36, 0xef, 0x32, 0xef, 0xa9, 0xef, 0xa8, 0xef, + 0x69, 0xf0, 0x66, 0xf0, 0x6a, 0xf1, 0x68, 0xf1, 0xae, 0xf2, 0xac, 0xf2, + 0x2e, 0xf4, 0x2b, 0xf4, 0xdf, 0xf5, 0xdd, 0xf5, 0xbe, 0xf7, 0xba, 0xf7, + 0xbc, 0xf9, 0xbb, 0xf9, 0xd2, 0xfb, 0xcf, 0xfb, 0xf6, 0xfd, 0xf5, 0xfd, + 0x18, 0x00, 0x14, 0x00, 0x2c, 0x02, 0x2a, 0x02, 0x29, 0x04, 0x26, 0x04, + 0xff, 0x05, 0xfc, 0x05, 0xad, 0x07, 0xaa, 0x07, 0x1d, 0x09, 0x1b, 0x09, + 0x56, 0x0a, 0x54, 0x0a, 0x47, 0x0b, 0x44, 0x0b, 0xef, 0x0b, 0xed, 0x0b, + 0x4f, 0x0c, 0x4b, 0x0c, 0x5c, 0x0c, 0x5c, 0x0c, 0x22, 0x0c, 0x1d, 0x0c, + 0x96, 0x0b, 0x96, 0x0b, 0xc3, 0x0a, 0xbf, 0x0a, 0xa9, 0x09, 0xa7, 0x09, + 0x4b, 0x08, 0x48, 0x08, 0xb6, 0x06, 0xb3, 0x06, 0xe9, 0x04, 0xe7, 0x04, + 0xf4, 0x02, 0xf1, 0x02, 0xdb, 0x00, 0xd9, 0x00, 0xaa, 0xfe, 0xa9, 0xfe, + 0x71, 0xfc, 0x6e, 0xfc, 0x32, 0xfa, 0x31, 0xfa, 0xfe, 0xf7, 0xfa, 0xf7, + 0xdd, 0xf5, 0xda, 0xf5, 0xda, 0xf3, 0xd7, 0xf3, 0xff, 0xf1, 0xfc, 0xf1, + 0x51, 0xf0, 0x51, 0xf0, 0xdf, 0xee, 0xdc, 0xee, 0xac, 0xed, 0xaa, 0xed, + 0xbe, 0xec, 0xbd, 0xec, 0x1a, 0xec, 0x17, 0xec, 0xc6, 0xeb, 0xc4, 0xeb, + 0xbd, 0xeb, 0xbb, 0xeb, 0x0e, 0xec, 0x0b, 0xec, 0xa9, 0xec, 0xa6, 0xec, + 0x93, 0xed, 0x92, 0xed, 0xca, 0xee, 0xc6, 0xee, 0x40, 0xf0, 0x40, 0xf0, + 0xf5, 0xf1, 0xf1, 0xf1, 0xde, 0xf3, 0xdc, 0xf3, 0xee, 0xf5, 0xeb, 0xf5, + 0x1d, 0xf8, 0x1b, 0xf8, 0x5c, 0xfa, 0x59, 0xfa, 0xa2, 0xfc, 0xa3, 0xfc, + 0xe8, 0xfe, 0xe3, 0xfe, 0x1e, 0x01, 0x1d, 0x01, 0x3a, 0x03, 0x38, 0x03, + 0x39, 0x05, 0x36, 0x05, 0x0c, 0x07, 0x0b, 0x07, 0xb1, 0x08, 0xad, 0x08, + 0x1c, 0x0a, 0x1c, 0x0a, 0x4f, 0x0b, 0x4a, 0x0b, 0x40, 0x0c, 0x41, 0x0c, + 0xf3, 0x0c, 0xf0, 0x0c, 0x61, 0x0d, 0x60, 0x0d, 0x8c, 0x0d, 0x8a, 0x0d, + 0x73, 0x0d, 0x72, 0x0d, 0x17, 0x0d, 0x15, 0x0d, 0x76, 0x0c, 0x76, 0x0c, + 0x99, 0x0b, 0x96, 0x0b, 0x7d, 0x0a, 0x7c, 0x0a, 0x2a, 0x09, 0x28, 0x09, + 0xa3, 0x07, 0xa2, 0x07, 0xf3, 0x05, 0xf1, 0x05, 0x1f, 0x04, 0x1d, 0x04, + 0x32, 0x02, 0x31, 0x02, 0x37, 0x00, 0x35, 0x00, 0x36, 0xfe, 0x36, 0xfe, + 0x3a, 0xfc, 0x38, 0xfc, 0x51, 0xfa, 0x51, 0xfa, 0x85, 0xf8, 0x82, 0xf8, + 0xdb, 0xf6, 0xd9, 0xf6, 0x61, 0xf5, 0x60, 0xf5, 0x20, 0xf4, 0x1c, 0xf4, + 0x1a, 0xf3, 0x1a, 0xf3, 0x5a, 0xf2, 0x58, 0xf2, 0xe2, 0xf1, 0xe2, 0xf1, + 0xb5, 0xf1, 0xb5, 0xf1, 0xd8, 0xf1, 0xd5, 0xf1, 0x44, 0xf2, 0x44, 0xf2, + 0x00, 0xf3, 0xfd, 0xf2, 0x05, 0xf4, 0x03, 0xf4, 0x4b, 0xf5, 0x4a, 0xf5, + 0xd6, 0xf6, 0xd4, 0xf6, 0x93, 0xf8, 0x92, 0xf8, 0x86, 0xfa, 0x83, 0xfa, + 0x9c, 0xfc, 0x9c, 0xfc, 0xd2, 0xfe, 0xcf, 0xfe, 0x1c, 0x01, 0x1a, 0x01, + 0x6c, 0x03, 0x6b, 0x03, 0xbd, 0x05, 0xbb, 0x05, 0x04, 0x08, 0xff, 0x07, + 0x30, 0x0a, 0x30, 0x0a, 0x4a, 0x0c, 0x45, 0x0c, 0x32, 0x0e, 0x32, 0x0e, + 0xf6, 0x0f, 0xf3, 0x0f, 0x81, 0x11, 0x7f, 0x11, 0xd4, 0x12, 0xd3, 0x12, + 0xea, 0x13, 0xe6, 0x13, 0xb9, 0x14, 0xb7, 0x14, 0x45, 0x15, 0x41, 0x15, + 0x82, 0x15, 0x82, 0x15, 0x79, 0x15, 0x79, 0x15, 0x25, 0x15, 0x21, 0x15, + 0x80, 0x14, 0x80, 0x14, 0x9b, 0x13, 0x97, 0x13, 0x67, 0x12, 0x67, 0x12, + 0xfb, 0x10, 0xf9, 0x10, 0x4e, 0x0f, 0x4e, 0x0f, 0x74, 0x0d, 0x72, 0x0d, + 0x72, 0x0b, 0x70, 0x0b, 0x50, 0x09, 0x4e, 0x09, 0x20, 0x07, 0x1e, 0x07, + 0xe7, 0x04, 0xe4, 0x04, 0xb5, 0x02, 0xb3, 0x02, 0x95, 0x00, 0x92, 0x00, + 0x90, 0xfe, 0x8e, 0xfe, 0xaf, 0xfc, 0xae, 0xfc, 0xfd, 0xfa, 0xfa, 0xfa, + 0x7c, 0xf9, 0x7b, 0xf9, 0x38, 0xf8, 0x36, 0xf8, 0x30, 0xf7, 0x2d, 0xf7, + 0x6a, 0xf6, 0x6b, 0xf6, 0xe8, 0xf5, 0xe3, 0xf5, 0xa9, 0xf5, 0xa8, 0xf5, + 0xb1, 0xf5, 0xaf, 0xf5, 0xfc, 0xf5, 0xf8, 0xf5, 0x88, 0xf6, 0x88, 0xf6, + 0x53, 0xf7, 0x50, 0xf7, 0x59, 0xf8, 0x57, 0xf8, 0x94, 0xf9, 0x92, 0xf9, + 0x00, 0xfb, 0xfc, 0xfa, 0x8f, 0xfc, 0x8d, 0xfc, 0x42, 0xfe, 0x3f, 0xfe, + 0x09, 0x00, 0x08, 0x00, 0xe1, 0x01, 0xde, 0x01, 0xb8, 0x03, 0xb6, 0x03, + 0x8b, 0x05, 0x8a, 0x05, 0x4c, 0x07, 0x4b, 0x07, 0xf8, 0x08, 0xf5, 0x08, + 0x7b, 0x0a, 0x7a, 0x0a, 0xd5, 0x0b, 0xd2, 0x0b, 0xfe, 0x0c, 0xfc, 0x0c, + 0xe9, 0x0d, 0xe6, 0x0d, 0x9a, 0x0e, 0x9a, 0x0e, 0x07, 0x0f, 0x04, 0x0f, + 0x2d, 0x0f, 0x2c, 0x0f, 0x10, 0x0f, 0x0d, 0x0f, 0xa9, 0x0e, 0xa9, 0x0e, + 0x04, 0x0e, 0x00, 0x0e, 0x15, 0x0d, 0x13, 0x0d, 0xec, 0x0b, 0xea, 0x0b, + 0x8d, 0x0a, 0x8a, 0x0a, 0xf8, 0x08, 0xf7, 0x08, 0x3c, 0x07, 0x3b, 0x07, + 0x5e, 0x05, 0x5d, 0x05, 0x68, 0x03, 0x66, 0x03, 0x65, 0x01, 0x62, 0x01, + 0x56, 0xff, 0x53, 0xff, 0x4e, 0xfd, 0x4d, 0xfd, 0x4f, 0xfb, 0x4b, 0xfb, + 0x64, 0xf9, 0x62, 0xf9, 0x97, 0xf7, 0x96, 0xf7, 0xe6, 0xf5, 0xe3, 0xf5, + 0x66, 0xf4, 0x63, 0xf4, 0x0c, 0xf3, 0x07, 0xf3, 0xe8, 0xf1, 0xe8, 0xf1, + 0xfc, 0xf0, 0xf9, 0xf0, 0x4a, 0xf0, 0x44, 0xf0, 0xd2, 0xef, 0xd1, 0xef, + 0x98, 0xef, 0x96, 0xef, 0xa2, 0xef, 0xa0, 0xef, 0xe7, 0xef, 0xe4, 0xef, + 0x6d, 0xf0, 0x69, 0xf0, 0x2f, 0xf1, 0x2d, 0xf1, 0x29, 0xf2, 0x26, 0xf2, + 0x5a, 0xf3, 0x58, 0xf3, 0xb8, 0xf4, 0xb6, 0xf4, 0x41, 0xf6, 0x3e, 0xf6, + 0xea, 0xf7, 0xe6, 0xf7, 0xa8, 0xf9, 0xa6, 0xf9, 0x7a, 0xfb, 0x76, 0xfb, + 0x49, 0xfd, 0x47, 0xfd, 0x19, 0xff, 0x15, 0xff, 0xd5, 0x00, 0xd3, 0x00, + 0x7a, 0x02, 0x77, 0x02, 0xf9, 0x03, 0xf9, 0x03, 0x51, 0x05, 0x4d, 0x05, + 0x72, 0x06, 0x70, 0x06, 0x61, 0x07, 0x5d, 0x07, 0x0c, 0x08, 0x0b, 0x08, + 0x7e, 0x08, 0x7c, 0x08, 0xa7, 0x08, 0xa5, 0x08, 0x90, 0x08, 0x8e, 0x08, + 0x34, 0x08, 0x30, 0x08, 0x94, 0x07, 0x94, 0x07, 0xb9, 0x06, 0xb6, 0x06, + 0x9e, 0x05, 0x9c, 0x05, 0x4d, 0x04, 0x4a, 0x04, 0xcd, 0x02, 0xca, 0x02, + 0x1f, 0x01, 0x1e, 0x01, 0x53, 0xff, 0x50, 0xff, 0x6a, 0xfd, 0x68, 0xfd, + 0x74, 0xfb, 0x71, 0xfb, 0x74, 0xf9, 0x71, 0xf9, 0x77, 0xf7, 0x75, 0xf7, + 0x88, 0xf5, 0x86, 0xf5, 0xae, 0xf3, 0xad, 0xf3, 0xf3, 0xf1, 0xf1, 0xf1, + 0x5e, 0xf0, 0x5d, 0xf0, 0xf9, 0xee, 0xf5, 0xee, 0xc6, 0xed, 0xc4, 0xed, + 0xd0, 0xec, 0xcf, 0xec, 0x1d, 0xec, 0x19, 0xec, 0xad, 0xeb, 0xac, 0xeb, + 0x89, 0xeb, 0x85, 0xeb, 0xac, 0xeb, 0xaa, 0xeb, 0x1a, 0xec, 0x16, 0xec, + 0xd0, 0xec, 0xce, 0xec, 0xcc, 0xed, 0xca, 0xed, 0x0a, 0xef, 0x09, 0xef, + 0x84, 0xf0, 0x7f, 0xf0, 0x31, 0xf2, 0x2f, 0xf2, 0x0c, 0xf4, 0x0b, 0xf4, + 0x08, 0xf6, 0x05, 0xf6, 0x21, 0xf8, 0x1e, 0xf8, 0x46, 0xfa, 0x44, 0xfa, + 0x72, 0xfc, 0x6f, 0xfc, 0x97, 0xfe, 0x96, 0xfe, 0xaa, 0x00, 0xa7, 0x00, + 0xa7, 0x02, 0xa4, 0x02, 0x83, 0x04, 0x80, 0x04, 0x39, 0x06, 0x36, 0x06, + 0xc5, 0x07, 0xc2, 0x07, 0x1d, 0x09, 0x1a, 0x09, 0x42, 0x0a, 0x42, 0x0a, + 0x33, 0x0b, 0x2f, 0x0b, 0xe6, 0x0b, 0xe4, 0x0b, 0x5f, 0x0c, 0x5e, 0x0c, + 0x9d, 0x0c, 0x9b, 0x0c, 0x9d, 0x0c, 0x9d, 0x0c, 0x62, 0x0c, 0x5f, 0x0c, + 0xea, 0x0b, 0xe9, 0x0b, 0x3a, 0x0b, 0x38, 0x0b, 0x55, 0x0a, 0x52, 0x0a, + 0x3b, 0x09, 0x39, 0x09, 0xf9, 0x07, 0xf6, 0x07, 0x8d, 0x06, 0x8c, 0x06, + 0x06, 0x05, 0x04, 0x05, 0x68, 0x03, 0x66, 0x03, 0xbd, 0x01, 0xbd, 0x01, + 0x0e, 0x00, 0x0b, 0x00, 0x64, 0xfe, 0x63, 0xfe, 0xca, 0xfc, 0xc8, 0xfc, + 0x4a, 0xfb, 0x47, 0xfb, 0xe9, 0xf9, 0xe7, 0xf9, 0xb2, 0xf8, 0xaf, 0xf8, + 0xab, 0xf7, 0xa9, 0xf7, 0xdb, 0xf6, 0xd9, 0xf6, 0x45, 0xf6, 0x43, 0xf6, + 0xf3, 0xf5, 0xef, 0xf5, 0xdc, 0xf5, 0xdb, 0xf5, 0x10, 0xf6, 0x0c, 0xf6, + 0x82, 0xf6, 0x7f, 0xf6, 0x38, 0xf7, 0x36, 0xf7, 0x2d, 0xf8, 0x29, 0xf8, + 0x5a, 0xf9, 0x58, 0xf9, 0xbe, 0xfa, 0xbd, 0xfa, 0x51, 0xfc, 0x4f, 0xfc, + 0x0e, 0xfe, 0x0c, 0xfe, 0xe6, 0xff, 0xe4, 0xff, 0xd8, 0x01, 0xd6, 0x01, + 0xd8, 0x03, 0xd4, 0x03, 0xda, 0x05, 0xda, 0x05, 0xdb, 0x07, 0xd8, 0x07, + 0xcc, 0x09, 0xcb, 0x09, 0xab, 0x0b, 0xa8, 0x0b, 0x69, 0x0d, 0x68, 0x0d, + 0x04, 0x0f, 0x03, 0x0f, 0x74, 0x10, 0x72, 0x10, 0xb3, 0x11, 0xb1, 0x11, + 0xba, 0x12, 0xb8, 0x12, 0x89, 0x13, 0x87, 0x13, 0x16, 0x14, 0x14, 0x14, + 0x64, 0x14, 0x60, 0x14, 0x6b, 0x14, 0x6a, 0x14, 0x30, 0x14, 0x2e, 0x14, + 0xae, 0x13, 0xad, 0x13, 0xeb, 0x12, 0xea, 0x12, 0xe9, 0x11, 0xe5, 0x11, + 0xa7, 0x10, 0xa6, 0x10, 0x31, 0x0f, 0x30, 0x0f, 0x8b, 0x0d, 0x87, 0x0d, + 0xbd, 0x0b, 0xbc, 0x0b, 0xd5, 0x09, 0xd2, 0x09, 0xd7, 0x07, 0xd6, 0x07, + 0xd5, 0x05, 0xd3, 0x05, 0xd3, 0x03, 0xd0, 0x03, 0xe2, 0x01, 0xe0, 0x01, + 0x08, 0x00, 0x05, 0x00, 0x4d, 0xfe, 0x4b, 0xfe, 0xbc, 0xfc, 0xba, 0xfc, + 0x59, 0xfb, 0x56, 0xfb, 0x2d, 0xfa, 0x2c, 0xfa, 0x3b, 0xf9, 0x37, 0xf9, + 0x83, 0xf8, 0x82, 0xf8, 0x10, 0xf8, 0x0d, 0xf8, 0xd7, 0xf7, 0xd6, 0xf7, + 0xe6, 0xf7, 0xe2, 0xf7, 0x2e, 0xf8, 0x2b, 0xf8, 0xb9, 0xf8, 0xb7, 0xf8, + 0x7f, 0xf9, 0x7c, 0xf9, 0x77, 0xfa, 0x75, 0xfa, 0xa9, 0xfb, 0xa6, 0xfb, + 0xff, 0xfc, 0xfd, 0xfc, 0x83, 0xfe, 0x7e, 0xfe, 0x1c, 0x00, 0x1c, 0x00, + 0xcf, 0x01, 0xcb, 0x01, 0x8f, 0x03, 0x8c, 0x03, 0x4b, 0x05, 0x48, 0x05, + 0x06, 0x07, 0x04, 0x07, 0xab, 0x08, 0xa7, 0x08, 0x3a, 0x0a, 0x36, 0x0a, + 0xa0, 0x0b, 0x9f, 0x0b, 0xdd, 0x0c, 0xdb, 0x0c, 0xe9, 0x0d, 0xe6, 0x0d, + 0xb6, 0x0e, 0xb5, 0x0e, 0x49, 0x0f, 0x46, 0x0f, 0x95, 0x0f, 0x94, 0x0f, + 0x9e, 0x0f, 0x9d, 0x0f, 0x63, 0x0f, 0x5e, 0x0f, 0xda, 0x0e, 0xdc, 0x0e, + 0x15, 0x0e, 0x10, 0x0e, 0x05, 0x0d, 0x04, 0x0d, 0xbd, 0x0b, 0xbb, 0x0b, + 0x3a, 0x0a, 0x38, 0x0a, 0x86, 0x08, 0x85, 0x08, 0xaa, 0x06, 0xa8, 0x06, + 0xae, 0x04, 0xab, 0x04, 0x9b, 0x02, 0x9b, 0x02, 0x7d, 0x00, 0x7b, 0x00, + 0x5c, 0xfe, 0x5a, 0xfe, 0x42, 0xfc, 0x40, 0xfc, 0x34, 0xfa, 0x32, 0xfa, + 0x3b, 0xf8, 0x39, 0xf8, 0x5f, 0xf6, 0x5e, 0xf6, 0xa4, 0xf4, 0xa2, 0xf4, + 0x15, 0xf3, 0x13, 0xf3, 0xb0, 0xf1, 0xb0, 0xf1, 0x7f, 0xf0, 0x7c, 0xf0, + 0x87, 0xef, 0x86, 0xef, 0xc2, 0xee, 0xc2, 0xee, 0x41, 0xee, 0x3e, 0xee, + 0xfa, 0xed, 0xf8, 0xed, 0xf2, 0xed, 0xf0, 0xed, 0x2e, 0xee, 0x2b, 0xee, + 0xa4, 0xee, 0xa3, 0xee, 0x60, 0xef, 0x5c, 0xef, 0x4f, 0xf0, 0x4e, 0xf0, + 0x7c, 0xf1, 0x7a, 0xf1, 0xda, 0xf2, 0xd8, 0xf2, 0x64, 0xf4, 0x62, 0xf4, + 0x12, 0xf6, 0x10, 0xf6, 0xdc, 0xf7, 0xda, 0xf7, 0xb8, 0xf9, 0xb8, 0xf9, + 0x9e, 0xfb, 0x9c, 0xfb, 0x7f, 0xfd, 0x7f, 0xfd, 0x57, 0xff, 0x55, 0xff, + 0x15, 0x01, 0x15, 0x01, 0xb6, 0x02, 0xb4, 0x02, 0x2a, 0x04, 0x29, 0x04, + 0x70, 0x05, 0x6f, 0x05, 0x80, 0x06, 0x7e, 0x06, 0x4e, 0x07, 0x4c, 0x07, + 0xe3, 0x07, 0xe0, 0x07, 0x2a, 0x08, 0x27, 0x08, 0x31, 0x08, 0x30, 0x08, + 0xf1, 0x07, 0xee, 0x07, 0x6b, 0x07, 0x6a, 0x07, 0xa6, 0x06, 0xa4, 0x06, + 0x9f, 0x05, 0x9f, 0x05, 0x62, 0x04, 0x61, 0x04, 0xf2, 0x02, 0xed, 0x02, + 0x50, 0x01, 0x50, 0x01, 0x90, 0xff, 0x8e, 0xff, 0xb1, 0xfd, 0xae, 0xfd, + 0xbf, 0xfb, 0xbe, 0xfb, 0xc6, 0xf9, 0xc4, 0xf9, 0xcb, 0xf7, 0xca, 0xf7, + 0xdd, 0xf5, 0xda, 0xf5, 0xff, 0xf3, 0x00, 0xf4, 0x3e, 0xf2, 0x3b, 0xf2, + 0xa4, 0xf0, 0xa3, 0xf0, 0x33, 0xef, 0x32, 0xef, 0xfc, 0xed, 0xf8, 0xed, + 0xf6, 0xec, 0xf8, 0xec, 0x39, 0xec, 0x36, 0xec, 0xba, 0xeb, 0xb8, 0xeb, + 0x84, 0xeb, 0x82, 0xeb, 0x97, 0xeb, 0x96, 0xeb, 0xf6, 0xeb, 0xf4, 0xeb, + 0x9b, 0xec, 0x99, 0xec, 0x86, 0xed, 0x85, 0xed, 0xb3, 0xee, 0xb2, 0xee, + 0x1e, 0xf0, 0x1d, 0xf0, 0xbb, 0xf1, 0xb9, 0xf1, 0x86, 0xf3, 0x83, 0xf3, + 0x73, 0xf5, 0x73, 0xf5, 0x79, 0xf7, 0x76, 0xf7, 0x90, 0xf9, 0x90, 0xf9, + 0xa9, 0xfb, 0xa5, 0xfb, 0xbf, 0xfd, 0xbd, 0xfd, 0xc3, 0xff, 0xc3, 0xff, + 0xb5, 0x01, 0xb0, 0x01, 0x87, 0x03, 0x86, 0x03, 0x33, 0x05, 0x32, 0x05, + 0xb6, 0x06, 0xb3, 0x06, 0x05, 0x08, 0x03, 0x08, 0x23, 0x09, 0x20, 0x09, + 0x05, 0x0a, 0x03, 0x0a, 0xb0, 0x0a, 0xae, 0x0a, 0x1e, 0x0b, 0x1c, 0x0b, + 0x52, 0x0b, 0x51, 0x0b, 0x4a, 0x0b, 0x47, 0x0b, 0x08, 0x0b, 0x06, 0x0b, + 0x8b, 0x0a, 0x8a, 0x0a, 0xdc, 0x09, 0xdb, 0x09, 0xf8, 0x08, 0xf7, 0x08, + 0xea, 0x07, 0xe7, 0x07, 0xaf, 0x06, 0xb0, 0x06, 0x57, 0x05, 0x53, 0x05, + 0xe0, 0x03, 0xe0, 0x03, 0x58, 0x02, 0x55, 0x02, 0xc8, 0x00, 0xc7, 0x00, + 0x35, 0xff, 0x33, 0xff, 0xad, 0xfd, 0xaa, 0xfd, 0x35, 0xfc, 0x34, 0xfc, + 0xda, 0xfa, 0xd6, 0xfa, 0xa0, 0xf9, 0xa0, 0xf9, 0x94, 0xf8, 0x90, 0xf8, + 0xb7, 0xf7, 0xb4, 0xf7, 0x12, 0xf7, 0x10, 0xf7, 0xa9, 0xf6, 0xa6, 0xf6, + 0x81, 0xf6, 0x80, 0xf6, 0x98, 0xf6, 0x95, 0xf6, 0xf2, 0xf6, 0xf0, 0xf6, + 0x8e, 0xf7, 0x8d, 0xf7, 0x6b, 0xf8, 0x69, 0xf8, 0x82, 0xf9, 0x80, 0xf9, + 0xd1, 0xfa, 0xce, 0xfa, 0x52, 0xfc, 0x52, 0xfc, 0xfa, 0xfd, 0xf8, 0xfd, + 0xcb, 0xff, 0xcb, 0xff, 0xb3, 0x01, 0xb0, 0x01, 0xae, 0x03, 0xad, 0x03, + 0xb2, 0x05, 0xb1, 0x05, 0xb7, 0x07, 0xb5, 0x07, 0xb4, 0x09, 0xb2, 0x09, + 0x9e, 0x0b, 0x9e, 0x0b, 0x74, 0x0d, 0x72, 0x0d, 0x26, 0x0f, 0x26, 0x0f, + 0xb4, 0x10, 0xb4, 0x10, 0x17, 0x12, 0x15, 0x12, 0x42, 0x13, 0x42, 0x13, + 0x3e, 0x14, 0x3c, 0x14, 0xf6, 0x14, 0xf7, 0x14, 0x78, 0x15, 0x75, 0x15, + 0xb2, 0x15, 0xb1, 0x15, 0xaa, 0x15, 0xa8, 0x15, 0x5e, 0x15, 0x5c, 0x15, + 0xcc, 0x14, 0xcb, 0x14, 0xfa, 0x13, 0xf7, 0x13, 0xe0, 0x12, 0xe1, 0x12, + 0x91, 0x11, 0x8d, 0x11, 0x07, 0x10, 0x07, 0x10, 0x4c, 0x0e, 0x48, 0x0e, + 0x67, 0x0c, 0x66, 0x0c, 0x65, 0x0a, 0x61, 0x0a, 0x4a, 0x08, 0x4a, 0x08, + 0x2c, 0x06, 0x29, 0x06, 0x0a, 0x04, 0x07, 0x04, 0xf8, 0x01, 0xf7, 0x01, + 0xfc, 0xff, 0xfa, 0xff, 0x22, 0xfe, 0x20, 0xfe, 0x70, 0xfc, 0x70, 0xfc, + 0xef, 0xfa, 0xec, 0xfa, 0xa5, 0xf9, 0xa6, 0xf9, 0x96, 0xf8, 0x93, 0xf8, + 0xca, 0xf7, 0xc8, 0xf7, 0x39, 0xf7, 0x38, 0xf7, 0xf2, 0xf6, 0xef, 0xf6, + 0xe8, 0xf6, 0xe8, 0xf6, 0x27, 0xf7, 0x24, 0xf7, 0xa2, 0xf7, 0xa1, 0xf7, + 0x5c, 0xf8, 0x5a, 0xf8, 0x52, 0xf9, 0x4e, 0xf9, 0x78, 0xfa, 0x76, 0xfa, + 0xd4, 0xfb, 0xd0, 0xfb, 0x51, 0xfd, 0x4f, 0xfd, 0xf5, 0xfe, 0xf3, 0xfe, + 0xad, 0x00, 0xaa, 0x00, 0x75, 0x02, 0x74, 0x02, 0x47, 0x04, 0x44, 0x04, + 0x0f, 0x06, 0x0e, 0x06, 0xce, 0x07, 0xcd, 0x07, 0x79, 0x09, 0x74, 0x09, + 0xfc, 0x0a, 0xfe, 0x0a, 0x61, 0x0c, 0x5d, 0x0c, 0x8c, 0x0d, 0x8c, 0x0d, + 0x89, 0x0e, 0x86, 0x0e, 0x45, 0x0f, 0x44, 0x0f, 0xc3, 0x0f, 0xc1, 0x0f, + 0xfb, 0x0f, 0xf8, 0x0f, 0xea, 0x0f, 0xea, 0x0f, 0x96, 0x0f, 0x95, 0x0f, + 0xf8, 0x0e, 0xf6, 0x0e, 0x18, 0x0e, 0x16, 0x0e, 0xf8, 0x0c, 0xf8, 0x0c, + 0x9f, 0x0b, 0x9b, 0x0b, 0x0d, 0x0a, 0x0d, 0x0a, 0x57, 0x08, 0x55, 0x08, + 0x7a, 0x06, 0x7a, 0x06, 0x88, 0x04, 0x87, 0x04, 0x81, 0x02, 0x7e, 0x02, + 0x73, 0x00, 0x74, 0x00, 0x66, 0xfe, 0x62, 0xfe, 0x5d, 0xfc, 0x5d, 0xfc, + 0x67, 0xfa, 0x64, 0xfa, 0x84, 0xf8, 0x82, 0xf8, 0xbf, 0xf6, 0xbf, 0xf6, + 0x21, 0xf5, 0x1d, 0xf5, 0xa7, 0xf3, 0xa6, 0xf3, 0x60, 0xf2, 0x5e, 0xf2, + 0x47, 0xf1, 0x44, 0xf1, 0x65, 0xf0, 0x66, 0xf0, 0xbe, 0xef, 0xba, 0xef, + 0x4c, 0xef, 0x4d, 0xef, 0x1b, 0xef, 0x19, 0xef, 0x23, 0xef, 0x22, 0xef, + 0x68, 0xef, 0x66, 0xef, 0xe6, 0xef, 0xe5, 0xef, 0x9e, 0xf0, 0x9b, 0xf0, + 0x8a, 0xf1, 0x8a, 0xf1, 0xa9, 0xf2, 0xa6, 0xf2, 0xf2, 0xf3, 0xf1, 0xf3, + 0x5d, 0xf5, 0x5e, 0xf5, 0xe9, 0xf6, 0xe7, 0xf6, 0x84, 0xf8, 0x83, 0xf8, + 0x31, 0xfa, 0x2f, 0xfa, 0xdb, 0xfb, 0xdb, 0xfb, 0x82, 0xfd, 0x7f, 0xfd, + 0x13, 0xff, 0x13, 0xff, 0x90, 0x00, 0x8d, 0x00, 0xe9, 0x01, 0xe8, 0x01, + 0x1a, 0x03, 0x17, 0x03, 0x1a, 0x04, 0x19, 0x04, 0xe5, 0x04, 0xe3, 0x04, + 0x78, 0x05, 0x77, 0x05, 0xce, 0x05, 0xcc, 0x05, 0xe6, 0x05, 0xe4, 0x05, + 0xbe, 0x05, 0xbc, 0x05, 0x58, 0x05, 0x55, 0x05, 0xb4, 0x04, 0xb3, 0x04, + 0xd7, 0x03, 0xd4, 0x03, 0xc4, 0x02, 0xc2, 0x02, 0x7f, 0x01, 0x7e, 0x01, + 0x13, 0x00, 0x10, 0x00, 0x81, 0xfe, 0x80, 0xfe, 0xd6, 0xfc, 0xd4, 0xfc, + 0x19, 0xfb, 0x16, 0xfb, 0x4e, 0xf9, 0x4d, 0xf9, 0x83, 0xf7, 0x82, 0xf7, + 0xc1, 0xf5, 0xbc, 0xf5, 0x0c, 0xf4, 0x0d, 0xf4, 0x72, 0xf2, 0x6f, 0xf2, + 0xfa, 0xf0, 0xf8, 0xf0, 0xa3, 0xef, 0xa2, 0xef, 0x83, 0xee, 0x7f, 0xee, + 0x8f, 0xed, 0x8e, 0xed, 0xd9, 0xec, 0xd6, 0xec, 0x63, 0xec, 0x63, 0xec, + 0x2a, 0xec, 0x26, 0xec, 0x39, 0xec, 0x38, 0xec, 0x89, 0xec, 0x87, 0xec, + 0x21, 0xed, 0x20, 0xed, 0xfe, 0xed, 0xfb, 0xed, 0x15, 0xef, 0x14, 0xef, + 0x6e, 0xf0, 0x6c, 0xf0, 0xf6, 0xf1, 0xf3, 0xf1, 0xae, 0xf3, 0xad, 0xf3, + 0x8b, 0xf5, 0x89, 0xf5, 0x83, 0xf7, 0x82, 0xf7, 0x91, 0xf9, 0x8f, 0xf9, + 0xa5, 0xfb, 0xa3, 0xfb, 0xbb, 0xfd, 0xb8, 0xfd, 0xc1, 0xff, 0xc1, 0xff, + 0xba, 0x01, 0xb7, 0x01, 0x93, 0x03, 0x94, 0x03, 0x4d, 0x05, 0x4a, 0x05, + 0xdc, 0x06, 0xdb, 0x06, 0x3c, 0x08, 0x3a, 0x08, 0x67, 0x09, 0x67, 0x09, + 0x5d, 0x0a, 0x5a, 0x0a, 0x18, 0x0b, 0x17, 0x0b, 0x97, 0x0b, 0x96, 0x0b, + 0xda, 0x0b, 0xd7, 0x0b, 0xdc, 0x0b, 0xda, 0x0b, 0xa2, 0x0b, 0xa2, 0x0b, + 0x2c, 0x0b, 0x2a, 0x0b, 0x7b, 0x0a, 0x79, 0x0a, 0x94, 0x09, 0x94, 0x09, + 0x7c, 0x08, 0x7b, 0x08, 0x35, 0x07, 0x35, 0x07, 0xcb, 0x05, 0xc9, 0x05, + 0x3e, 0x04, 0x3d, 0x04, 0x9e, 0x02, 0x9d, 0x02, 0xef, 0x00, 0xee, 0x00, + 0x3a, 0xff, 0x38, 0xff, 0x8b, 0xfd, 0x8b, 0xfd, 0xea, 0xfb, 0xea, 0xfb, + 0x61, 0xfa, 0x5f, 0xfa, 0xf7, 0xf8, 0xf8, 0xf8, 0xb9, 0xf7, 0xb5, 0xf7, + 0xa6, 0xf6, 0xa8, 0xf6, 0xcc, 0xf5, 0xcb, 0xf5, 0x30, 0xf5, 0x2f, 0xf5, + 0xd2, 0xf4, 0xd0, 0xf4, 0xb8, 0xf4, 0xb8, 0xf4, 0xe2, 0xf4, 0xe1, 0xf4, + 0x55, 0xf5, 0x55, 0xf5, 0x0a, 0xf6, 0x09, 0xf6, 0x02, 0xf7, 0x00, 0xf7, + 0x3a, 0xf8, 0x3a, 0xf8, 0xa8, 0xf9, 0xa7, 0xf9, 0x4d, 0xfb, 0x4e, 0xfb, + 0x1c, 0xfd, 0x1a, 0xfd, 0x10, 0xff, 0x0f, 0xff, 0x21, 0x01, 0x1f, 0x01, + 0x40, 0x03, 0x3e, 0x03, 0x6b, 0x05, 0x6a, 0x05, 0x95, 0x07, 0x94, 0x07, + 0xb3, 0x09, 0xb1, 0x09, 0xc2, 0x0b, 0xc2, 0x0b, 0xb5, 0x0d, 0xb2, 0x0d, + 0x85, 0x0f, 0x84, 0x0f, 0x2c, 0x11, 0x2c, 0x11, 0xa6, 0x12, 0xa3, 0x12, + 0xe8, 0x13, 0xe7, 0x13, 0xf6, 0x14, 0xf4, 0x14, 0xbe, 0x15, 0xbe, 0x15, + 0x4f, 0x16, 0x4c, 0x16, 0x93, 0x16, 0x91, 0x16, 0x96, 0x16, 0x96, 0x16, + 0x55, 0x16, 0x51, 0x16, 0xc9, 0x15, 0xc9, 0x15, 0xfe, 0x14, 0xfa, 0x14, + 0xec, 0x13, 0xec, 0x13, 0xa2, 0x12, 0xa1, 0x12, 0x21, 0x11, 0x1d, 0x11, + 0x68, 0x0f, 0x68, 0x0f, 0x8e, 0x0d, 0x8a, 0x0d, 0x8d, 0x0b, 0x8c, 0x0b, + 0x7d, 0x09, 0x7b, 0x09, 0x5e, 0x07, 0x5c, 0x07, 0x40, 0x05, 0x40, 0x05, + 0x32, 0x03, 0x2f, 0x03, 0x33, 0x01, 0x32, 0x01, 0x5a, 0xff, 0x59, 0xff, + 0xa4, 0xfd, 0xa2, 0xfd, 0x21, 0xfc, 0x20, 0xfc, 0xd2, 0xfa, 0xd1, 0xfa, + 0xbe, 0xf9, 0xbc, 0xf9, 0xec, 0xf8, 0xea, 0xf8, 0x53, 0xf8, 0x52, 0xf8, + 0x06, 0xf8, 0x06, 0xf8, 0xf3, 0xf7, 0xf2, 0xf7, 0x2a, 0xf8, 0x29, 0xf8, + 0x9c, 0xf8, 0x9b, 0xf8, 0x4e, 0xf9, 0x4d, 0xf9, 0x3a, 0xfa, 0x3a, 0xfa, + 0x59, 0xfb, 0x58, 0xfb, 0xa9, 0xfc, 0xa9, 0xfc, 0x1e, 0xfe, 0x1c, 0xfe, + 0xb2, 0xff, 0xb2, 0xff, 0x62, 0x01, 0x5f, 0x01, 0x18, 0x03, 0x17, 0x03, + 0xd7, 0x04, 0xd7, 0x04, 0x8f, 0x06, 0x8e, 0x06, 0x39, 0x08, 0x38, 0x08, + 0xcb, 0x09, 0xca, 0x09, 0x39, 0x0b, 0x38, 0x0b, 0x80, 0x0c, 0x7e, 0x0c, + 0x92, 0x0d, 0x91, 0x0d, 0x71, 0x0e, 0x70, 0x0e, 0x0f, 0x0f, 0x0e, 0x0f, + 0x6d, 0x0f, 0x6c, 0x0f, 0x87, 0x0f, 0x87, 0x0f, 0x59, 0x0f, 0x57, 0x0f, + 0xe8, 0x0e, 0xe8, 0x0e, 0x2b, 0x0e, 0x2b, 0x0e, 0x34, 0x0d, 0x31, 0x0d, + 0xf7, 0x0b, 0xf9, 0x0b, 0x87, 0x0a, 0x83, 0x0a, 0xe1, 0x08, 0xe2, 0x08, + 0x18, 0x07, 0x16, 0x07, 0x2b, 0x05, 0x2a, 0x05, 0x2c, 0x03, 0x2c, 0x03, + 0x1f, 0x01, 0x1d, 0x01, 0x0f, 0xff, 0x0e, 0xff, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfa, 0xfd, 0xfa, 0x12, 0xf9, 0x10, 0xf9, 0x3f, 0xf7, 0x3e, 0xf7, + 0x92, 0xf5, 0x93, 0xf5, 0x0b, 0xf4, 0x09, 0xf4, 0xb3, 0xf2, 0xb3, 0xf2, + 0x8c, 0xf1, 0x8b, 0xf1, 0x9d, 0xf0, 0x9b, 0xf0, 0xea, 0xef, 0xeb, 0xef, + 0x70, 0xef, 0x6d, 0xef, 0x35, 0xef, 0x34, 0xef, 0x39, 0xef, 0x3a, 0xef, + 0x7e, 0xef, 0x7d, 0xef, 0x00, 0xf0, 0x01, 0xf0, 0xc1, 0xf0, 0xbf, 0xf0, + 0xba, 0xf1, 0xba, 0xf1, 0xe7, 0xf2, 0xe6, 0xf2, 0x46, 0xf4, 0x46, 0xf4, + 0xca, 0xf5, 0xc8, 0xf5, 0x72, 0xf7, 0x73, 0xf7, 0x33, 0xf9, 0x30, 0xf9, + 0xfd, 0xfa, 0xfc, 0xfa, 0xd3, 0xfc, 0xd2, 0xfc, 0x9a, 0xfe, 0x99, 0xfe, + 0x59, 0x00, 0x58, 0x00, 0xfa, 0x01, 0xf7, 0x01, 0x77, 0x03, 0x77, 0x03, + 0xce, 0x04, 0xcc, 0x04, 0xe9, 0x05, 0xe9, 0x05, 0xd4, 0x06, 0xd1, 0x06, + 0x7a, 0x07, 0x77, 0x07, 0xe0, 0x07, 0xdf, 0x07, 0x01, 0x08, 0xff, 0x07, + 0xdf, 0x07, 0xde, 0x07, 0x77, 0x07, 0x73, 0x07, 0xc5, 0x06, 0xc2, 0x06, + 0xd2, 0x05, 0xd1, 0x05, 0x9e, 0x04, 0x9c, 0x04, 0x35, 0x03, 0x33, 0x03, + 0x96, 0x01, 0x94, 0x01, 0xcf, 0xff, 0xcc, 0xff, 0xe4, 0xfd, 0xe1, 0xfd, + 0xdf, 0xfb, 0xdd, 0xfb, 0xce, 0xf9, 0xcb, 0xf9, 0xb2, 0xf7, 0xb1, 0xf7, + 0x9f, 0xf5, 0x9b, 0xf5, 0x96, 0xf3, 0x95, 0xf3, 0xa6, 0xf1, 0xa4, 0xf1, + 0xd8, 0xef, 0xd4, 0xef, 0x2f, 0xee, 0x2f, 0xee, 0xb8, 0xec, 0xb5, 0xec, + 0x79, 0xeb, 0x78, 0xeb, 0x78, 0xea, 0x76, 0xea, 0xb6, 0xe9, 0xb5, 0xe9, + 0x40, 0xe9, 0x3f, 0xe9, 0x12, 0xe9, 0x0e, 0xe9, 0x2f, 0xe9, 0x2d, 0xe9, + 0x9c, 0xe9, 0x99, 0xe9, 0x55, 0xea, 0x54, 0xea, 0x5f, 0xeb, 0x5b, 0xeb, + 0xab, 0xec, 0xa9, 0xec, 0x3c, 0xee, 0x39, 0xee, 0x07, 0xf0, 0x06, 0xf0, + 0x05, 0xf2, 0x01, 0xf2, 0x28, 0xf4, 0x27, 0xf4, 0x6e, 0xf6, 0x6b, 0xf6, + 0xc3, 0xf8, 0xc0, 0xf8, 0x1f, 0xfb, 0x1d, 0xfb, 0x78, 0xfd, 0x76, 0xfd, + 0xc2, 0xff, 0xc0, 0xff, 0xf5, 0x01, 0xf4, 0x01, 0x05, 0x04, 0x01, 0x04, + 0xeb, 0x05, 0xeb, 0x05, 0xa3, 0x07, 0xa0, 0x07, 0x23, 0x09, 0x22, 0x09, + 0x6c, 0x0a, 0x69, 0x0a, 0x76, 0x0b, 0x72, 0x0b, 0x3a, 0x0c, 0x3a, 0x0c, + 0xc3, 0x0c, 0xbf, 0x0c, 0x00, 0x0d, 0xfe, 0x0c, 0xff, 0x0c, 0xfd, 0x0c, + 0xbb, 0x0c, 0xb8, 0x0c, 0x35, 0x0c, 0x34, 0x0c, 0x74, 0x0b, 0x6f, 0x0b, + 0x72, 0x0a, 0x73, 0x0a, 0x44, 0x09, 0x41, 0x09, 0xe1, 0x07, 0xdf, 0x07, + 0x57, 0x06, 0x57, 0x06, 0xaf, 0x04, 0xab, 0x04, 0xed, 0x02, 0xeb, 0x02, + 0x1c, 0x01, 0x1b, 0x01, 0x49, 0xff, 0x47, 0xff, 0x7d, 0xfd, 0x7c, 0xfd, + 0xc1, 0xfb, 0xbd, 0xfb, 0x1d, 0xfa, 0x1c, 0xfa, 0x9e, 0xf8, 0x9b, 0xf8, + 0x4b, 0xf7, 0x49, 0xf7, 0x2c, 0xf6, 0x2b, 0xf6, 0x49, 0xf5, 0x45, 0xf5, + 0xa4, 0xf4, 0xa4, 0xf4, 0x46, 0xf4, 0x43, 0xf4, 0x2d, 0xf4, 0x2c, 0xf4, + 0x5e, 0xf4, 0x5c, 0xf4, 0xd7, 0xf4, 0xd5, 0xf4, 0x98, 0xf5, 0x97, 0xf5, + 0x9f, 0xf6, 0x9d, 0xf6, 0xe4, 0xf7, 0xe4, 0xf7, 0x66, 0xf9, 0x64, 0xf9, + 0x19, 0xfb, 0x16, 0xfb, 0xf9, 0xfc, 0xf8, 0xfc, 0xf9, 0xfe, 0xf7, 0xfe, + 0x15, 0x01, 0x15, 0x01, 0x41, 0x03, 0x3e, 0x03, 0x70, 0x05, 0x70, 0x05, + 0x9f, 0x07, 0x9e, 0x07, 0xbd, 0x09, 0xba, 0x09, 0xc8, 0x0b, 0xc8, 0x0b, + 0xb3, 0x0d, 0xb0, 0x0d, 0x7a, 0x0f, 0x79, 0x0f, 0x12, 0x11, 0x0f, 0x11, + 0x76, 0x12, 0x76, 0x12, 0xa6, 0x13, 0xa2, 0x13, 0x93, 0x14, 0x91, 0x14, + 0x43, 0x15, 0x42, 0x15, 0xae, 0x15, 0xad, 0x15, 0xd3, 0x15, 0xd1, 0x15, + 0xaf, 0x15, 0xad, 0x15, 0x40, 0x15, 0x3f, 0x15, 0x90, 0x14, 0x8d, 0x14, + 0x94, 0x13, 0x93, 0x13, 0x5d, 0x12, 0x5b, 0x12, 0xe4, 0x10, 0xe1, 0x10, + 0x3a, 0x0f, 0x3a, 0x0f, 0x5f, 0x0d, 0x5c, 0x0d, 0x5f, 0x0b, 0x5e, 0x0b, + 0x49, 0x09, 0x47, 0x09, 0x24, 0x07, 0x21, 0x07, 0xfd, 0x04, 0xfc, 0x04, + 0xe1, 0x02, 0xde, 0x02, 0xd9, 0x00, 0xd9, 0x00, 0xf2, 0xfe, 0xf0, 0xfe, + 0x32, 0xfd, 0x31, 0xfd, 0xa7, 0xfb, 0xa3, 0xfb, 0x4f, 0xfa, 0x4f, 0xfa, + 0x3b, 0xf9, 0x37, 0xf9, 0x65, 0xf8, 0x65, 0xf8, 0xd7, 0xf7, 0xd3, 0xf7, + 0x8e, 0xf7, 0x8d, 0xf7, 0x8d, 0xf7, 0x8c, 0xf7, 0xd6, 0xf7, 0xd4, 0xf7, + 0x61, 0xf8, 0x61, 0xf8, 0x34, 0xf9, 0x32, 0xf9, 0x3f, 0xfa, 0x3e, 0xfa, + 0x89, 0xfb, 0x86, 0xfb, 0x08, 0xfd, 0x05, 0xfd, 0xad, 0xfe, 0xab, 0xfe, + 0x7b, 0x00, 0x78, 0x00, 0x5f, 0x02, 0x5e, 0x02, 0x58, 0x04, 0x55, 0x04, + 0x54, 0x06, 0x53, 0x06, 0x4e, 0x08, 0x4d, 0x08, 0x37, 0x0a, 0x34, 0x0a, + 0x09, 0x0c, 0x08, 0x0c, 0xb2, 0x0d, 0xb2, 0x0d, 0x33, 0x0f, 0x31, 0x0f, + 0x7d, 0x10, 0x7b, 0x10, 0x84, 0x11, 0x85, 0x11, 0x4c, 0x12, 0x4a, 0x12, + 0xc6, 0x12, 0xc7, 0x12, 0xf5, 0x12, 0xf2, 0x12, 0xd0, 0x12, 0xcf, 0x12, + 0x5a, 0x12, 0x59, 0x12, 0x93, 0x11, 0x92, 0x11, 0x7f, 0x10, 0x7d, 0x10, + 0x20, 0x0f, 0x1d, 0x0f, 0x7b, 0x0d, 0x7a, 0x0d, 0x9d, 0x0b, 0x9c, 0x0b, + 0x8f, 0x09, 0x8d, 0x09, 0x57, 0x07, 0x57, 0x07, 0x08, 0x05, 0x07, 0x05, + 0xa2, 0x02, 0xa0, 0x02, 0x3d, 0x00, 0x3c, 0x00, 0xd6, 0xfd, 0xd4, 0xfd, + 0x7e, 0xfb, 0x7d, 0xfb, 0x3e, 0xf9, 0x3b, 0xf9, 0x16, 0xf7, 0x16, 0xf7, + 0x1b, 0xf5, 0x19, 0xf5, 0x44, 0xf3, 0x45, 0xf3, 0xa5, 0xf1, 0xa1, 0xf1, + 0x38, 0xf0, 0x39, 0xf0, 0x0a, 0xef, 0x07, 0xef, 0x17, 0xee, 0x16, 0xee, + 0x67, 0xed, 0x64, 0xed, 0xfa, 0xec, 0xfc, 0xec, 0xd7, 0xec, 0xd2, 0xec, + 0xf4, 0xec, 0xf5, 0xec, 0x5e, 0xed, 0x5a, 0xed, 0x09, 0xee, 0x09, 0xee, + 0xfc, 0xee, 0xfb, 0xee, 0x30, 0xf0, 0x2e, 0xf0, 0x9d, 0xf1, 0x9d, 0xf1, + 0x44, 0xf3, 0x42, 0xf3, 0x17, 0xf5, 0x15, 0xf5, 0x0f, 0xf7, 0x0e, 0xf7, + 0x23, 0xf9, 0x21, 0xf9, 0x47, 0xfb, 0x45, 0xfb, 0x6e, 0xfd, 0x6e, 0xfd, + 0x90, 0xff, 0x8e, 0xff, 0x9d, 0x01, 0x9d, 0x01, 0x8e, 0x03, 0x8b, 0x03, + 0x53, 0x05, 0x52, 0x05, 0xe7, 0x06, 0xe6, 0x06, 0x40, 0x08, 0x3e, 0x08, + 0x54, 0x09, 0x55, 0x09, 0x26, 0x0a, 0x22, 0x0a, 0xa6, 0x0a, 0xa5, 0x0a, + 0xd8, 0x0a, 0xd8, 0x0a, 0xb9, 0x0a, 0xb9, 0x0a, 0x4a, 0x0a, 0x48, 0x0a, + 0x8c, 0x09, 0x8b, 0x09, 0x82, 0x08, 0x7f, 0x08, 0x30, 0x07, 0x31, 0x07, + 0xa0, 0x05, 0x9d, 0x05, 0xd5, 0x03, 0xd3, 0x03, 0xd7, 0x01, 0xd6, 0x01, + 0xb6, 0xff, 0xb5, 0xff, 0x76, 0xfd, 0x74, 0xfd, 0x24, 0xfb, 0x24, 0xfb, + 0xcb, 0xf8, 0xc9, 0xf8, 0x76, 0xf6, 0x76, 0xf6, 0x32, 0xf4, 0x30, 0xf4, + 0x07, 0xf2, 0x05, 0xf2, 0xfe, 0xef, 0xfd, 0xef, 0x21, 0xee, 0x1f, 0xee, + 0x77, 0xec, 0x77, 0xec, 0x0d, 0xeb, 0x0a, 0xeb, 0xe4, 0xe9, 0xe2, 0xe9, + 0x03, 0xe9, 0x02, 0xe9, 0x6e, 0xe8, 0x6c, 0xe8, 0x2b, 0xe8, 0x2c, 0xe8, + 0x3b, 0xe8, 0x39, 0xe8, 0x9f, 0xe8, 0x9d, 0xe8, 0x5b, 0xe9, 0x5b, 0xe9, + 0x67, 0xea, 0x65, 0xea, 0xc4, 0xeb, 0xc5, 0xeb, 0x68, 0xed, 0x65, 0xed, + 0x4a, 0xef, 0x4a, 0xef, 0x62, 0xf1, 0x62, 0xf1, 0xa7, 0xf3, 0xa7, 0xf3, + 0x0c, 0xf6, 0x0a, 0xf6, 0x80, 0xf8, 0x80, 0xf8, 0xfb, 0xfa, 0xfa, 0xfa, + 0x70, 0xfd, 0x6f, 0xfd, 0xd2, 0xff, 0xd1, 0xff, 0x1a, 0x02, 0x18, 0x02, + 0x3a, 0x04, 0x39, 0x04, 0x2c, 0x06, 0x2d, 0x06, 0xeb, 0x07, 0xea, 0x07, + 0x6d, 0x09, 0x6b, 0x09, 0xae, 0x0a, 0xaf, 0x0a, 0xae, 0x0b, 0xab, 0x0b, + 0x65, 0x0c, 0x66, 0x0c, 0xd5, 0x0c, 0xd3, 0x0c, 0xfb, 0x0c, 0xfb, 0x0c, + 0xd9, 0x0c, 0xd8, 0x0c, 0x6f, 0x0c, 0x6e, 0x0c, 0xc0, 0x0b, 0xbe, 0x0b, + 0xc9, 0x0a, 0xc9, 0x0a, 0x99, 0x09, 0x98, 0x09, 0x30, 0x08, 0x2f, 0x08, + 0x93, 0x06, 0x91, 0x06, 0xd0, 0x04, 0xcf, 0x04, 0xeb, 0x02, 0xea, 0x02, + 0xf4, 0x00, 0xf1, 0x00, 0xf1, 0xfe, 0xef, 0xfe, 0xef, 0xfc, 0xed, 0xfc, + 0xf9, 0xfa, 0xf8, 0xfa, 0x1e, 0xf9, 0x1d, 0xf9, 0x65, 0xf7, 0x62, 0xf7, + 0xda, 0xf5, 0xd9, 0xf5, 0x82, 0xf4, 0x81, 0xf4, 0x6e, 0xf3, 0x6c, 0xf3, + 0x9d, 0xf2, 0x9d, 0xf2, 0x18, 0xf2, 0x16, 0xf2, 0xe4, 0xf1, 0xe2, 0xf1, + 0xff, 0xf1, 0xfd, 0xf1, 0x70, 0xf2, 0x6f, 0xf2, 0x33, 0xf3, 0x31, 0xf3, + 0x45, 0xf4, 0x43, 0xf4, 0xa1, 0xf5, 0x9f, 0xf5, 0x44, 0xf7, 0x41, 0xf7, + 0x22, 0xf9, 0x22, 0xf9, 0x39, 0xfb, 0x35, 0xfb, 0x75, 0xfd, 0x75, 0xfd, + 0xd4, 0xff, 0xd1, 0xff, 0x45, 0x02, 0x45, 0x02, 0xc3, 0x04, 0xc1, 0x04, + 0x3c, 0x07, 0x3b, 0x07, 0xae, 0x09, 0xab, 0x09, 0x05, 0x0c, 0x04, 0x0c, + 0x3f, 0x0e, 0x3e, 0x0e, 0x53, 0x10, 0x50, 0x10, 0x34, 0x12, 0x34, 0x12, + 0xe3, 0x13, 0xde, 0x13, 0x51, 0x15, 0x52, 0x15, 0x81, 0x16, 0x7e, 0x16, + 0x6c, 0x17, 0x6a, 0x17, 0x08, 0x18, 0x07, 0x18, 0x5b, 0x18, 0x58, 0x18, + 0x5c, 0x18, 0x59, 0x18, 0x09, 0x18, 0x08, 0x18, 0x65, 0x17, 0x62, 0x17, + 0x6e, 0x16, 0x6e, 0x16, 0x28, 0x15, 0x25, 0x15, 0x94, 0x13, 0x93, 0x13, + 0xbd, 0x11, 0xbc, 0x11, 0xa8, 0x0f, 0xa6, 0x0f, 0x5f, 0x0d, 0x5f, 0x0d, + 0xee, 0x0a, 0xeb, 0x0a, 0x60, 0x08, 0x60, 0x08, 0xc6, 0x05, 0xc4, 0x05, + 0x2b, 0x03, 0x2a, 0x03, 0xa0, 0x00, 0x9f, 0x00, 0x34, 0xfe, 0x32, 0xfe, + 0xf0, 0xfb, 0xee, 0xfb, 0xdf, 0xf9, 0xdf, 0xf9, 0x0c, 0xf8, 0x0a, 0xf8, + 0x80, 0xf6, 0x7e, 0xf6, 0x3f, 0xf5, 0x3d, 0xf5, 0x4e, 0xf4, 0x4f, 0xf4, + 0xb3, 0xf3, 0xb0, 0xf3, 0x6a, 0xf3, 0x6a, 0xf3, 0x7b, 0xf3, 0x79, 0xf3, + 0xde, 0xf3, 0xdd, 0xf3, 0x99, 0xf4, 0x96, 0xf4, 0xa1, 0xf5, 0xa0, 0xf5, + 0xf5, 0xf6, 0xf2, 0xf6, 0x90, 0xf8, 0x91, 0xf8, 0x68, 0xfa, 0x65, 0xfa, + 0x75, 0xfc, 0x76, 0xfc, 0xae, 0xfe, 0xab, 0xfe, 0x09, 0x01, 0x07, 0x01, + 0x74, 0x03, 0x73, 0x03, 0xea, 0x05, 0xe8, 0x05, 0x58, 0x08, 0x57, 0x08, + 0xb8, 0x0a, 0xb5, 0x0a, 0xf9, 0x0c, 0xf7, 0x0c, 0x0e, 0x0f, 0x0d, 0x0f, + 0xf2, 0x10, 0xf1, 0x10, 0x94, 0x12, 0x93, 0x12, 0xf3, 0x13, 0xf1, 0x13, + 0x05, 0x15, 0x02, 0x15, 0xbc, 0x15, 0xbd, 0x15, 0x1e, 0x16, 0x1b, 0x16, + 0x20, 0x16, 0x20, 0x16, 0xc5, 0x15, 0xc2, 0x15, 0x0b, 0x15, 0x0a, 0x15, + 0xf2, 0x13, 0xef, 0x13, 0x86, 0x12, 0x84, 0x12, 0xc6, 0x10, 0xc4, 0x10, + 0xbf, 0x0e, 0xbd, 0x0e, 0x79, 0x0c, 0x77, 0x0c, 0x00, 0x0a, 0xfd, 0x09, + 0x62, 0x07, 0x61, 0x07, 0xae, 0x04, 0xab, 0x04, 0xed, 0x01, 0xed, 0x01, + 0x36, 0xff, 0x32, 0xff, 0x86, 0xfc, 0x86, 0xfc, 0xfa, 0xf9, 0xf6, 0xf9, + 0x8c, 0xf7, 0x8a, 0xf7, 0x4c, 0xf5, 0x48, 0xf5, 0x3d, 0xf3, 0x3e, 0xf3, + 0x6e, 0xf1, 0x69, 0xf1, 0xd7, 0xef, 0xd5, 0xef, 0x87, 0xee, 0x83, 0xee, + 0x78, 0xed, 0x79, 0xed, 0xb8, 0xec, 0xb5, 0xec, 0x3f, 0xec, 0x3c, 0xec, + 0x14, 0xec, 0x12, 0xec, 0x37, 0xec, 0x35, 0xec, 0xa7, 0xec, 0xa4, 0xec, + 0x64, 0xed, 0x62, 0xed, 0x6b, 0xee, 0x6a, 0xee, 0xb8, 0xef, 0xb5, 0xef, + 0x47, 0xf1, 0x45, 0xf1, 0x0c, 0xf3, 0x0a, 0xf3, 0x06, 0xf5, 0x03, 0xf5, + 0x23, 0xf7, 0x22, 0xf7, 0x5c, 0xf9, 0x5a, 0xf9, 0xa5, 0xfb, 0xa2, 0xfb, + 0xeb, 0xfd, 0xeb, 0xfd, 0x2d, 0x00, 0x2a, 0x00, 0x53, 0x02, 0x50, 0x02, + 0x56, 0x04, 0x55, 0x04, 0x2b, 0x06, 0x27, 0x06, 0xc4, 0x07, 0xc4, 0x07, + 0x1f, 0x09, 0x1d, 0x09, 0x2f, 0x0a, 0x2c, 0x0a, 0xf0, 0x0a, 0xef, 0x0a, + 0x61, 0x0b, 0x5e, 0x0b, 0x77, 0x0b, 0x76, 0x0b, 0x3c, 0x0b, 0x39, 0x0b, + 0xa6, 0x0a, 0xa6, 0x0a, 0xc0, 0x09, 0xbe, 0x09, 0x8a, 0x08, 0x89, 0x08, + 0x08, 0x07, 0x04, 0x07, 0x49, 0x05, 0x48, 0x05, 0x4b, 0x03, 0x48, 0x03, + 0x22, 0x01, 0x21, 0x01, 0xd1, 0xfe, 0xcf, 0xfe, 0x6a, 0xfc, 0x68, 0xfc, + 0xf5, 0xf9, 0xf2, 0xf9, 0x7c, 0xf7, 0x79, 0xf7, 0x13, 0xf5, 0x10, 0xf5, + 0xbb, 0xf2, 0xb9, 0xf2, 0x89, 0xf0, 0x85, 0xf0, 0x7c, 0xee, 0x79, 0xee, + 0xa8, 0xec, 0xa5, 0xec, 0x0d, 0xeb, 0x0b, 0xeb, 0xb8, 0xe9, 0xb6, 0xe9, + 0xac, 0xe8, 0xa9, 0xe8, 0xef, 0xe7, 0xec, 0xe7, 0x86, 0xe7, 0x85, 0xe7, + 0x74, 0xe7, 0x71, 0xe7, 0xbd, 0xe7, 0xbb, 0xe7, 0x5e, 0xe8, 0x5c, 0xe8, + 0x5a, 0xe9, 0x55, 0xe9, 0xac, 0xea, 0xab, 0xea, 0x4f, 0xec, 0x4d, 0xec, + 0x3f, 0xee, 0x3d, 0xee, 0x6e, 0xf0, 0x6c, 0xf0, 0xd2, 0xf2, 0xcf, 0xf2, + 0x62, 0xf5, 0x5f, 0xf5, 0x07, 0xf8, 0x06, 0xf8, 0xbe, 0xfa, 0xbb, 0xfa, + 0x74, 0xfd, 0x72, 0xfd, 0x18, 0x00, 0x15, 0x00, 0xa5, 0x02, 0xa3, 0x02, + 0x09, 0x05, 0x05, 0x05, 0x3d, 0x07, 0x3b, 0x07, 0x39, 0x09, 0x34, 0x09, + 0xf1, 0x0a, 0xf2, 0x0a, 0x69, 0x0c, 0x65, 0x0c, 0x90, 0x0d, 0x8f, 0x0d, + 0x6e, 0x0e, 0x6b, 0x0e, 0xf5, 0x0e, 0xf2, 0x0e, 0x2b, 0x0f, 0x2a, 0x0f, + 0x0f, 0x0f, 0x0b, 0x0f, 0x9c, 0x0e, 0x9c, 0x0e, 0xdf, 0x0d, 0xdd, 0x0d, + 0xce, 0x0c, 0xcb, 0x0c, 0x75, 0x0b, 0x73, 0x0b, 0xd8, 0x09, 0xd7, 0x09, + 0xfd, 0x07, 0xfa, 0x07, 0xf1, 0x05, 0xef, 0x05, 0xb9, 0x03, 0xb5, 0x03, + 0x64, 0x01, 0x62, 0x01, 0xff, 0xfe, 0xfc, 0xfe, 0x93, 0xfc, 0x92, 0xfc, + 0x34, 0xfa, 0x30, 0xfa, 0xe8, 0xf7, 0xe5, 0xf7, 0xc1, 0xf5, 0xbf, 0xf5, + 0xc8, 0xf3, 0xc6, 0xf3, 0x0a, 0xf2, 0x08, 0xf2, 0x91, 0xf0, 0x8e, 0xf0, + 0x64, 0xef, 0x5f, 0xef, 0x8a, 0xee, 0x89, 0xee, 0x0b, 0xee, 0x07, 0xee, + 0xe7, 0xed, 0xe5, 0xed, 0x23, 0xee, 0x1f, 0xee, 0xbc, 0xee, 0xba, 0xee, + 0xb4, 0xef, 0xb2, 0xef, 0x05, 0xf1, 0x02, 0xf1, 0xae, 0xf2, 0xad, 0xf2, + 0xa0, 0xf4, 0x9d, 0xf4, 0xda, 0xf6, 0xd5, 0xf6, 0x48, 0xf9, 0x47, 0xf9, + 0xe7, 0xfb, 0xe2, 0xfb, 0xa8, 0xfe, 0xa7, 0xfe, 0x7a, 0x01, 0x77, 0x01, + 0x5b, 0x04, 0x57, 0x04, 0x2c, 0x07, 0x2b, 0x07, 0xf3, 0x09, 0xef, 0x09, + 0x99, 0x0c, 0x98, 0x0c, 0x1a, 0x0f, 0x17, 0x0f, 0x6c, 0x11, 0x67, 0x11, + 0x7f, 0x13, 0x7d, 0x13, 0x59, 0x15, 0x56, 0x15, 0xe9, 0x16, 0xe8, 0x16, + 0x31, 0x18, 0x2e, 0x18, 0x2a, 0x19, 0x27, 0x19, 0xcd, 0x19, 0xcb, 0x19, + 0x1e, 0x1a, 0x1c, 0x1a, 0x13, 0x1a, 0x11, 0x1a, 0xb0, 0x19, 0xaf, 0x19, + 0xf4, 0x18, 0xf1, 0x18, 0xdd, 0x17, 0xdc, 0x17, 0x74, 0x16, 0x71, 0x16, + 0xb9, 0x14, 0xb7, 0x14, 0xb6, 0x12, 0xb4, 0x12, 0x72, 0x10, 0x71, 0x10, + 0xfb, 0x0d, 0xfa, 0x0d, 0x5c, 0x0b, 0x5a, 0x0b, 0xa5, 0x08, 0xa4, 0x08, + 0xe0, 0x05, 0xdf, 0x05, 0x25, 0x03, 0x23, 0x03, 0x78, 0x00, 0x78, 0x00, + 0xf5, 0xfd, 0xf1, 0xfd, 0x97, 0xfb, 0x98, 0xfb, 0x7b, 0xf9, 0x78, 0xf9, + 0xa1, 0xf7, 0xa0, 0xf7, 0x0d, 0xf6, 0x0c, 0xf6, 0xd3, 0xf4, 0xcf, 0xf4, + 0xe6, 0xf3, 0xe6, 0xf3, 0x5a, 0xf3, 0x57, 0xf3, 0x24, 0xf3, 0x22, 0xf3, + 0x4b, 0xf3, 0x4a, 0xf3, 0xce, 0xf3, 0xc9, 0xf3, 0xa1, 0xf4, 0xa1, 0xf4, + 0xcf, 0xf5, 0xcb, 0xf5, 0x44, 0xf7, 0x43, 0xf7, 0x05, 0xf9, 0x02, 0xf9, + 0x00, 0xfb, 0xfd, 0xfa, 0x31, 0xfd, 0x30, 0xfd, 0x87, 0xff, 0x85, 0xff, + 0xfa, 0x01, 0xf8, 0x01, 0x7c, 0x04, 0x7b, 0x04, 0xfd, 0x06, 0xf9, 0x06, + 0x73, 0x09, 0x72, 0x09, 0xcf, 0x0b, 0xca, 0x0b, 0x06, 0x0e, 0x04, 0x0e, + 0x0a, 0x10, 0x08, 0x10, 0xd6, 0x11, 0xd2, 0x11, 0x59, 0x13, 0x58, 0x13, + 0x92, 0x14, 0x8e, 0x14, 0x75, 0x15, 0x72, 0x15, 0xfe, 0x15, 0xfc, 0x15, + 0x2b, 0x16, 0x26, 0x16, 0xf2, 0x15, 0xf1, 0x15, 0x5e, 0x15, 0x5a, 0x15, + 0x63, 0x14, 0x63, 0x14, 0x12, 0x13, 0x10, 0x13, 0x68, 0x11, 0x66, 0x11, + 0x70, 0x0f, 0x6f, 0x0f, 0x37, 0x0d, 0x33, 0x0d, 0xbe, 0x0a, 0xbd, 0x0a, + 0x24, 0x08, 0x21, 0x08, 0x66, 0x05, 0x64, 0x05, 0x9b, 0x02, 0x9a, 0x02, + 0xd3, 0xff, 0xcf, 0xff, 0x11, 0xfd, 0x10, 0xfd, 0x71, 0xfa, 0x6d, 0xfa, + 0xeb, 0xf7, 0xec, 0xf7, 0x9e, 0xf5, 0x9a, 0xf5, 0x82, 0xf3, 0x81, 0xf3, + 0xa0, 0xf1, 0xa0, 0xf1, 0x07, 0xf0, 0x04, 0xf0, 0xae, 0xee, 0xad, 0xee, + 0xa4, 0xed, 0xa1, 0xed, 0xe4, 0xec, 0xe4, 0xec, 0x76, 0xec, 0x74, 0xec, + 0x5c, 0xec, 0x59, 0xec, 0x8f, 0xec, 0x8f, 0xec, 0x1c, 0xed, 0x19, 0xed, + 0xf8, 0xed, 0xf6, 0xed, 0x24, 0xef, 0x22, 0xef, 0x9c, 0xf0, 0x99, 0xf0, + 0x55, 0xf2, 0x53, 0xf2, 0x50, 0xf4, 0x4d, 0xf4, 0x78, 0xf6, 0x77, 0xf6, + 0xcb, 0xf8, 0xc8, 0xf8, 0x39, 0xfb, 0x38, 0xfb, 0xb1, 0xfd, 0xaf, 0xfd, + 0x2e, 0x00, 0x2c, 0x00, 0x95, 0x02, 0x93, 0x02, 0xe6, 0x04, 0xe7, 0x04, + 0x09, 0x07, 0x07, 0x07, 0xfa, 0x08, 0xf8, 0x08, 0xa5, 0x0a, 0xa5, 0x0a, + 0x0a, 0x0c, 0x06, 0x0c, 0x1c, 0x0d, 0x1c, 0x0d, 0xd6, 0x0d, 0xd5, 0x0d, + 0x37, 0x0e, 0x34, 0x0e, 0x36, 0x0e, 0x37, 0x0e, 0xd5, 0x0d, 0xd1, 0x0d, + 0x17, 0x0d, 0x18, 0x0d, 0xfa, 0x0b, 0xf8, 0x0b, 0x89, 0x0a, 0x85, 0x0a, + 0xc2, 0x08, 0xc3, 0x08, 0xb5, 0x06, 0xb0, 0x06, 0x66, 0x04, 0x66, 0x04, + 0xe4, 0x01, 0xe3, 0x01, 0x3c, 0xff, 0x39, 0xff, 0x78, 0xfc, 0x77, 0xfc, + 0xa9, 0xf9, 0xa6, 0xf9, 0xd8, 0xf6, 0xd7, 0xf6, 0x14, 0xf4, 0x14, 0xf4, + 0x6c, 0xf1, 0x6a, 0xf1, 0xe9, 0xee, 0xe9, 0xee, 0x98, 0xec, 0x96, 0xec, + 0x80, 0xea, 0x7f, 0xea, 0xaa, 0xe8, 0xa8, 0xe8, 0x1e, 0xe7, 0x1e, 0xe7, + 0xe6, 0xe5, 0xe6, 0xe5, 0x02, 0xe5, 0x00, 0xe5, 0x7c, 0xe4, 0x7b, 0xe4, + 0x56, 0xe4, 0x54, 0xe4, 0x91, 0xe4, 0x90, 0xe4, 0x34, 0xe5, 0x32, 0xe5, + 0x35, 0xe6, 0x33, 0xe6, 0x9b, 0xe7, 0x9b, 0xe7, 0x60, 0xe9, 0x5f, 0xe9, + 0x79, 0xeb, 0x77, 0xeb, 0xdd, 0xed, 0xde, 0xed, 0x82, 0xf0, 0x7e, 0xf0, + 0x55, 0xf3, 0x55, 0xf3, 0x4a, 0xf6, 0x48, 0xf6, 0x50, 0xf9, 0x51, 0xf9, + 0x59, 0xfc, 0x58, 0xfc, 0x52, 0xff, 0x50, 0xff, 0x30, 0x02, 0x2f, 0x02, + 0xe3, 0x04, 0xe2, 0x04, 0x66, 0x07, 0x64, 0x07, 0xa8, 0x09, 0xa5, 0x09, + 0xa0, 0x0b, 0xa0, 0x0b, 0x53, 0x0d, 0x50, 0x0d, 0xac, 0x0e, 0xad, 0x0e, + 0xba, 0x0f, 0xb5, 0x0f, 0x66, 0x10, 0x67, 0x10, 0xc0, 0x10, 0xbc, 0x10, + 0xb9, 0x10, 0xb8, 0x10, 0x5e, 0x10, 0x5d, 0x10, 0xa6, 0x0f, 0xa4, 0x0f, + 0x9d, 0x0e, 0x9c, 0x0e, 0x3d, 0x0d, 0x3b, 0x0d, 0x95, 0x0b, 0x96, 0x0b, + 0xa9, 0x09, 0xa9, 0x09, 0x82, 0x07, 0x81, 0x07, 0x2b, 0x05, 0x2b, 0x05, + 0xb0, 0x02, 0xaf, 0x02, 0x1f, 0x00, 0x1e, 0x00, 0x83, 0xfd, 0x84, 0xfd, + 0xf1, 0xfa, 0xef, 0xfa, 0x6d, 0xf8, 0x6d, 0xf8, 0x0f, 0xf6, 0x10, 0xf6, + 0xe0, 0xf3, 0xde, 0xf3, 0xe9, 0xf1, 0xea, 0xf1, 0x39, 0xf0, 0x37, 0xf0, + 0xd4, 0xee, 0xd5, 0xee, 0xc8, 0xed, 0xc6, 0xed, 0x17, 0xed, 0x16, 0xed, + 0xc5, 0xec, 0xc5, 0xec, 0xda, 0xec, 0xd9, 0xec, 0x51, 0xed, 0x51, 0xed, + 0x29, 0xee, 0x28, 0xee, 0x62, 0xef, 0x61, 0xef, 0xf3, 0xf0, 0xf3, 0xf0, + 0xd9, 0xf2, 0xd8, 0xf2, 0x04, 0xf5, 0x04, 0xf5, 0x71, 0xf7, 0x6e, 0xf7, + 0x08, 0xfa, 0x0a, 0xfa, 0xcb, 0xfc, 0xc8, 0xfc, 0xa1, 0xff, 0xa0, 0xff, + 0x83, 0x02, 0x82, 0x02, 0x62, 0x05, 0x60, 0x05, 0x2f, 0x08, 0x2e, 0x08, + 0xe1, 0x0a, 0xe0, 0x0a, 0x6d, 0x0d, 0x6c, 0x0d, 0xc6, 0x0f, 0xc8, 0x0f, + 0xec, 0x11, 0xeb, 0x11, 0xcd, 0x13, 0xcc, 0x13, 0x6a, 0x15, 0x69, 0x15, + 0xbc, 0x16, 0xba, 0x16, 0xbb, 0x17, 0xba, 0x17, 0x6c, 0x18, 0x6c, 0x18, + 0xc0, 0x18, 0xbd, 0x18, 0xbd, 0x18, 0xbc, 0x18, 0x5e, 0x18, 0x5b, 0x18, + 0xa2, 0x17, 0xa2, 0x17, 0x91, 0x16, 0x90, 0x16, 0x23, 0x15, 0x21, 0x15, + 0x6d, 0x13, 0x6c, 0x13, 0x67, 0x11, 0x67, 0x11, 0x28, 0x0f, 0x26, 0x0f, + 0xb1, 0x0c, 0xb2, 0x0c, 0x16, 0x0a, 0x15, 0x0a, 0x62, 0x07, 0x62, 0x07, + 0xa7, 0x04, 0xa6, 0x04, 0xf5, 0x01, 0xf4, 0x01, 0x5a, 0xff, 0x5b, 0xff, + 0xe6, 0xfc, 0xe4, 0xfc, 0xa4, 0xfa, 0xa2, 0xfa, 0x9f, 0xf8, 0x9f, 0xf8, + 0xe2, 0xf6, 0xdf, 0xf6, 0x72, 0xf5, 0x71, 0xf5, 0x59, 0xf4, 0x58, 0xf4, + 0x99, 0xf3, 0x97, 0xf3, 0x36, 0xf3, 0x34, 0xf3, 0x2c, 0xf3, 0x2c, 0xf3, + 0x83, 0xf3, 0x81, 0xf3, 0x35, 0xf4, 0x37, 0xf4, 0x40, 0xf5, 0x40, 0xf5, + 0xa0, 0xf6, 0x9e, 0xf6, 0x4a, 0xf8, 0x4c, 0xf8, 0x3e, 0xfa, 0x3d, 0xfa, + 0x6e, 0xfc, 0x6d, 0xfc, 0xcd, 0xfe, 0xcf, 0xfe, 0x54, 0x01, 0x51, 0x01, + 0xf0, 0x03, 0xf2, 0x03, 0x96, 0x06, 0x95, 0x06, 0x38, 0x09, 0x38, 0x09, + 0xc9, 0x0b, 0xc9, 0x0b, 0x3c, 0x0e, 0x3b, 0x0e, 0x84, 0x10, 0x83, 0x10, + 0x94, 0x12, 0x94, 0x12, 0x66, 0x14, 0x64, 0x14, 0xe7, 0x15, 0xe7, 0x15, + 0x1a, 0x17, 0x1a, 0x17, 0xf1, 0x17, 0xf0, 0x17, 0x65, 0x18, 0x66, 0x18, + 0x79, 0x18, 0x77, 0x18, 0x1e, 0x18, 0x20, 0x18, 0x5f, 0x17, 0x5f, 0x17, + 0x39, 0x16, 0x3a, 0x16, 0xb3, 0x14, 0xb0, 0x14, 0xcd, 0x12, 0xd1, 0x12, + 0x9b, 0x10, 0x98, 0x10, 0x1c, 0x0e, 0x1d, 0x0e, 0x6b, 0x0b, 0x6a, 0x0b, + 0x87, 0x08, 0x87, 0x08, 0x8b, 0x05, 0x8d, 0x05, 0x86, 0x02, 0x85, 0x02, + 0x80, 0xff, 0x83, 0xff, 0x93, 0xfc, 0x92, 0xfc, 0xbf, 0xf9, 0xc0, 0xf9, + 0x1c, 0xf7, 0x1c, 0xf7, 0xab, 0xf4, 0xab, 0xf4, 0x74, 0xf2, 0x76, 0xf2, + 0x84, 0xf0, 0x83, 0xf0, 0xd4, 0xee, 0xd5, 0xee, 0x75, 0xed, 0x74, 0xed, + 0x5f, 0xec, 0x5f, 0xec, 0x9d, 0xeb, 0x9e, 0xeb, 0x30, 0xeb, 0x2d, 0xeb, + 0x11, 0xeb, 0x13, 0xeb, 0x4f, 0xeb, 0x4e, 0xeb, 0xe0, 0xeb, 0xe0, 0xeb, + 0xc8, 0xec, 0xc8, 0xec, 0x03, 0xee, 0x01, 0xee, 0x8a, 0xef, 0x8b, 0xef, + 0x61, 0xf1, 0x5e, 0xf1, 0x73, 0xf3, 0x74, 0xf3, 0xc0, 0xf5, 0xc1, 0xf5, + 0x3a, 0xf8, 0x39, 0xf8, 0xd1, 0xfa, 0xd3, 0xfa, 0x7c, 0xfd, 0x7a, 0xfd, + 0x27, 0x00, 0x26, 0x00, 0xc8, 0x02, 0xc7, 0x02, 0x4e, 0x05, 0x4d, 0x05, + 0xaa, 0x07, 0xaa, 0x07, 0xd3, 0x09, 0xd1, 0x09, 0xb8, 0x0b, 0xb6, 0x0b, + 0x51, 0x0d, 0x52, 0x0d, 0x9b, 0x0e, 0x9b, 0x0e, 0x8a, 0x0f, 0x8a, 0x0f, + 0x18, 0x10, 0x16, 0x10, 0x44, 0x10, 0x44, 0x10, 0x0a, 0x10, 0x08, 0x10, + 0x6d, 0x0f, 0x70, 0x0f, 0x6e, 0x0e, 0x6d, 0x0e, 0x15, 0x0d, 0x15, 0x0d, + 0x62, 0x0b, 0x64, 0x0b, 0x63, 0x09, 0x62, 0x09, 0x1d, 0x07, 0x1e, 0x07, + 0x9f, 0x04, 0x9d, 0x04, 0xf0, 0x01, 0xf2, 0x01, 0x29, 0xff, 0x28, 0xff, + 0x47, 0xfc, 0x48, 0xfc, 0x66, 0xf9, 0x66, 0xf9, 0x8e, 0xf6, 0x8d, 0xf6, + 0xc9, 0xf3, 0xc9, 0xf3, 0x2b, 0xf1, 0x2a, 0xf1, 0xb4, 0xee, 0xb5, 0xee, + 0x78, 0xec, 0x79, 0xec, 0x7a, 0xea, 0x7a, 0xea, 0xc2, 0xe8, 0xc4, 0xe8, + 0x5e, 0xe7, 0x5c, 0xe7, 0x47, 0xe6, 0x49, 0xe6, 0x8f, 0xe5, 0x8f, 0xe5, + 0x32, 0xe5, 0x31, 0xe5, 0x35, 0xe5, 0x38, 0xe5, 0x9d, 0xe5, 0x9c, 0xe5, + 0x63, 0xe6, 0x63, 0xe6, 0x8b, 0xe7, 0x8b, 0xe7, 0x10, 0xe9, 0x10, 0xe9, + 0xeb, 0xea, 0xec, 0xea, 0x17, 0xed, 0x17, 0xed, 0x84, 0xef, 0x85, 0xef, + 0x28, 0xf2, 0x27, 0xf2, 0xf3, 0xf4, 0xf3, 0xf4, 0xd3, 0xf7, 0xd3, 0xf7, + 0xbe, 0xfa, 0xbc, 0xfa, 0x9b, 0xfd, 0x9d, 0xfd, 0x68, 0x00, 0x67, 0x00, + 0x0d, 0x03, 0x0e, 0x03, 0x83, 0x05, 0x82, 0x05, 0xc0, 0x07, 0xc0, 0x07, + 0xb6, 0x09, 0xb6, 0x09, 0x67, 0x0b, 0x66, 0x0b, 0xc7, 0x0c, 0xc8, 0x0c, + 0xd3, 0x0d, 0xd2, 0x0d, 0x8d, 0x0e, 0x8d, 0x0e, 0xe8, 0x0e, 0xe8, 0x0e, + 0xf1, 0x0e, 0xf0, 0x0e, 0x9b, 0x0e, 0x9a, 0x0e, 0xf1, 0x0d, 0xf3, 0x0d, + 0xf5, 0x0c, 0xf3, 0x0c, 0xa5, 0x0b, 0xa5, 0x0b, 0x0e, 0x0a, 0x0d, 0x0a, + 0x34, 0x08, 0x35, 0x08, 0x22, 0x06, 0x22, 0x06, 0xe1, 0x03, 0xe1, 0x03, + 0x7f, 0x01, 0x7e, 0x01, 0x05, 0xff, 0x04, 0xff, 0x84, 0xfc, 0x84, 0xfc, + 0x0a, 0xfa, 0x0a, 0xfa, 0xa1, 0xf7, 0xa0, 0xf7, 0x5d, 0xf5, 0x5d, 0xf5, + 0x46, 0xf3, 0x47, 0xf3, 0x6b, 0xf1, 0x69, 0xf1, 0xd1, 0xef, 0xd2, 0xef, + 0x87, 0xee, 0x86, 0xee, 0x95, 0xed, 0x95, 0xed, 0xfd, 0xec, 0xfc, 0xec, + 0xc7, 0xec, 0xc6, 0xec, 0xf0, 0xec, 0xef, 0xec, 0x7d, 0xed, 0x7c, 0xed, + 0x68, 0xee, 0x69, 0xee, 0xb2, 0xef, 0xb2, 0xef, 0x53, 0xf1, 0x51, 0xf1, + 0x40, 0xf3, 0x40, 0xf3, 0x78, 0xf5, 0x77, 0xf5, 0xe6, 0xf7, 0xe6, 0xf7, + 0x84, 0xfa, 0x85, 0xfa, 0x46, 0xfd, 0x45, 0xfd, 0x19, 0x00, 0x1a, 0x00, + 0xf7, 0x02, 0xf7, 0x02, 0xcd, 0x05, 0xcc, 0x05, 0x90, 0x08, 0x92, 0x08, + 0x39, 0x0b, 0x37, 0x0b, 0xb5, 0x0d, 0xb5, 0x0d, 0x06, 0x10, 0x06, 0x10, + 0x17, 0x12, 0x15, 0x12, 0xec, 0x13, 0xec, 0x13, 0x7b, 0x15, 0x7a, 0x15, + 0xbd, 0x16, 0xbc, 0x16, 0xaf, 0x17, 0xb0, 0x17, 0x53, 0x18, 0x51, 0x18, + 0x9b, 0x18, 0x9a, 0x18, 0x8b, 0x18, 0x8d, 0x18, 0x1f, 0x18, 0x1e, 0x18, + 0x5b, 0x17, 0x5a, 0x17, 0x39, 0x16, 0x3a, 0x16, 0xc1, 0x14, 0xbf, 0x14, + 0xf8, 0x12, 0xfa, 0x12, 0xe4, 0x10, 0xe2, 0x10, 0x8f, 0x0e, 0x90, 0x0e, + 0x05, 0x0c, 0x04, 0x0c, 0x51, 0x09, 0x51, 0x09, 0x86, 0x06, 0x85, 0x06, + 0xaa, 0x03, 0xab, 0x03, 0xdb, 0x00, 0xdc, 0x00, 0x1e, 0xfe, 0x1d, 0xfe, + 0x89, 0xfb, 0x89, 0xfb, 0x25, 0xf9, 0x25, 0xf9, 0x00, 0xf7, 0xff, 0xf6, + 0x26, 0xf5, 0x26, 0xf5, 0x98, 0xf3, 0x9a, 0xf3, 0x69, 0xf2, 0x67, 0xf2, + 0x90, 0xf1, 0x92, 0xf1, 0x1e, 0xf1, 0x1e, 0xf1, 0x09, 0xf1, 0x09, 0xf1, + 0x59, 0xf1, 0x5a, 0xf1, 0x0b, 0xf2, 0x08, 0xf2, 0x1a, 0xf3, 0x1b, 0xf3, + 0x86, 0xf4, 0x86, 0xf4, 0x46, 0xf6, 0x45, 0xf6, 0x52, 0xf8, 0x52, 0xf8, + 0xa1, 0xfa, 0xa1, 0xfa, 0x27, 0xfd, 0x26, 0xfd, 0xd3, 0xff, 0xd5, 0xff, + 0x9f, 0x02, 0x9e, 0x02, 0x77, 0x05, 0x78, 0x05, 0x4e, 0x08, 0x4d, 0x08, + 0x18, 0x0b, 0x18, 0x0b, 0xc3, 0x0d, 0xc2, 0x0d, 0x48, 0x10, 0x49, 0x10, + 0x95, 0x12, 0x94, 0x12, 0xa7, 0x14, 0xa6, 0x14, 0x6c, 0x16, 0x6c, 0x16, + 0xe0, 0x17, 0xe2, 0x17, 0xfc, 0x18, 0xfb, 0x18, 0xb7, 0x19, 0xb8, 0x19, + 0x0f, 0x1a, 0x0f, 0x1a, 0xfd, 0x19, 0xfc, 0x19, 0x82, 0x19, 0x83, 0x19, + 0x9b, 0x18, 0x9a, 0x18, 0x4b, 0x17, 0x4a, 0x17, 0x98, 0x15, 0x97, 0x15, + 0x85, 0x13, 0x87, 0x13, 0x25, 0x11, 0x24, 0x11, 0x7d, 0x0e, 0x7e, 0x0e, + 0xa1, 0x0b, 0x9e, 0x0b, 0x9e, 0x08, 0x9f, 0x08, 0x80, 0x05, 0x7f, 0x05, + 0x5e, 0x02, 0x5d, 0x02, 0x40, 0xff, 0x40, 0xff, 0x3c, 0xfc, 0x39, 0xfc, + 0x56, 0xf9, 0x57, 0xf9, 0xa7, 0xf6, 0xa4, 0xf6, 0x2c, 0xf4, 0x2c, 0xf4, + 0xf6, 0xf1, 0xf5, 0xf1, 0x0c, 0xf0, 0x0a, 0xf0, 0x6b, 0xee, 0x6c, 0xee, + 0x23, 0xed, 0x21, 0xed, 0x30, 0xec, 0x31, 0xec, 0x91, 0xeb, 0x90, 0xeb, + 0x4c, 0xeb, 0x4d, 0xeb, 0x5e, 0xeb, 0x5d, 0xeb, 0xcb, 0xeb, 0xcd, 0xeb, + 0x92, 0xec, 0x90, 0xec, 0xa9, 0xed, 0xa9, 0xed, 0x12, 0xef, 0x12, 0xef, + 0xcb, 0xf0, 0xca, 0xf0, 0xc3, 0xf2, 0xc4, 0xf2, 0xfc, 0xf4, 0xfb, 0xf4, + 0x60, 0xf7, 0x60, 0xf7, 0xec, 0xf9, 0xea, 0xf9, 0x8a, 0xfc, 0x8a, 0xfc, + 0x34, 0xff, 0x34, 0xff, 0xd3, 0x01, 0xd3, 0x01, 0x5f, 0x04, 0x5d, 0x04, + 0xc7, 0x06, 0xc8, 0x06, 0xfc, 0x08, 0xfb, 0x08, 0xf6, 0x0a, 0xf7, 0x0a, + 0xa8, 0x0c, 0xa8, 0x0c, 0x09, 0x0e, 0x08, 0x0e, 0x14, 0x0f, 0x16, 0x0f, + 0xbf, 0x0f, 0xbe, 0x0f, 0x0a, 0x10, 0x0a, 0x10, 0xf0, 0x0f, 0xf1, 0x0f, + 0x76, 0x0f, 0x73, 0x0f, 0x96, 0x0e, 0x98, 0x0e, 0x5a, 0x0d, 0x5a, 0x0d, + 0xc6, 0x0b, 0xc6, 0x0b, 0xde, 0x09, 0xe0, 0x09, 0xb1, 0x07, 0xb1, 0x07, + 0x49, 0x05, 0x47, 0x05, 0xab, 0x02, 0xad, 0x02, 0xf1, 0xff, 0xee, 0xff, + 0x1b, 0xfd, 0x1d, 0xfd, 0x44, 0xfa, 0x41, 0xfa, 0x6c, 0xf7, 0x6e, 0xf7, + 0xae, 0xf4, 0xab, 0xf4, 0x0b, 0xf2, 0x0b, 0xf2, 0x96, 0xef, 0x96, 0xef, + 0x55, 0xed, 0x55, 0xed, 0x51, 0xeb, 0x4f, 0xeb, 0x93, 0xe9, 0x93, 0xe9, + 0x21, 0xe8, 0x20, 0xe8, 0x02, 0xe7, 0x03, 0xe7, 0x3c, 0xe6, 0x3d, 0xe6, + 0xd1, 0xe5, 0xd0, 0xe5, 0xc8, 0xe5, 0xc7, 0xe5, 0x1c, 0xe6, 0x1c, 0xe6, + 0xd6, 0xe6, 0xd7, 0xe6, 0xef, 0xe7, 0xef, 0xe7, 0x65, 0xe9, 0x66, 0xe9, + 0x38, 0xeb, 0x37, 0xeb, 0x58, 0xed, 0x59, 0xed, 0xc4, 0xef, 0xc4, 0xef, + 0x67, 0xf2, 0x65, 0xf2, 0x37, 0xf5, 0x36, 0xf5, 0x21, 0xf8, 0x21, 0xf8, + 0x1a, 0xfb, 0x18, 0xfb, 0x0d, 0xfe, 0x0e, 0xfe, 0xef, 0x00, 0xed, 0x00, + 0xae, 0x03, 0xaf, 0x03, 0x3f, 0x06, 0x3e, 0x06, 0x98, 0x08, 0x97, 0x08, + 0xa9, 0x0a, 0xa9, 0x0a, 0x71, 0x0c, 0x72, 0x0c, 0xe9, 0x0d, 0xe6, 0x0d, + 0x07, 0x0f, 0x07, 0x0f, 0xcc, 0x0f, 0xcd, 0x0f, 0x32, 0x10, 0x32, 0x10, + 0x3d, 0x10, 0x3d, 0x10, 0xe5, 0x0f, 0xe5, 0x0f, 0x32, 0x0f, 0x33, 0x0f, + 0x23, 0x0e, 0x22, 0x0e, 0xbb, 0x0c, 0xbd, 0x0c, 0x03, 0x0b, 0x02, 0x0b, + 0x01, 0x09, 0x04, 0x09, 0xc1, 0x06, 0xc0, 0x06, 0x48, 0x04, 0x47, 0x04, + 0xa7, 0x01, 0xa8, 0x01, 0xeb, 0xfe, 0xea, 0xfe, 0x22, 0xfc, 0x22, 0xfc, + 0x5a, 0xf9, 0x5a, 0xf9, 0xa6, 0xf6, 0xa4, 0xf6, 0x12, 0xf4, 0x12, 0xf4, + 0xab, 0xf1, 0xaa, 0xf1, 0x7e, 0xef, 0x7e, 0xef, 0x98, 0xed, 0x98, 0xed, + 0x00, 0xec, 0xff, 0xeb, 0xc3, 0xea, 0xc1, 0xea, 0xe3, 0xe9, 0xe4, 0xe9, + 0x69, 0xe9, 0x67, 0xe9, 0x57, 0xe9, 0x57, 0xe9, 0xb1, 0xe9, 0xb2, 0xe9, + 0x7b, 0xea, 0x79, 0xea, 0xa9, 0xeb, 0xaa, 0xeb, 0x42, 0xed, 0x3f, 0xed, + 0x34, 0xef, 0x35, 0xef, 0x7c, 0xf1, 0x7c, 0xf1, 0x0c, 0xf4, 0x0b, 0xf4, + 0xd6, 0xf6, 0xd5, 0xf6, 0xcd, 0xf9, 0xcb, 0xf9, 0xe1, 0xfc, 0xe1, 0xfc, + 0x08, 0x00, 0x06, 0x00, 0x30, 0x03, 0x2f, 0x03, 0x4d, 0x06, 0x4e, 0x06, + 0x51, 0x09, 0x4d, 0x09, 0x2e, 0x0c, 0x30, 0x0c, 0xdf, 0x0e, 0xdf, 0x0e, + 0x56, 0x11, 0x54, 0x11, 0x8a, 0x13, 0x8a, 0x13, 0x7a, 0x15, 0x77, 0x15, + 0x18, 0x17, 0x19, 0x17, 0x69, 0x18, 0x68, 0x18, 0x63, 0x19, 0x61, 0x19, + 0x02, 0x1a, 0x02, 0x1a, 0x45, 0x1a, 0x43, 0x1a, 0x28, 0x1a, 0x29, 0x1a, + 0xad, 0x19, 0xab, 0x19, 0xd1, 0x18, 0xcf, 0x18, 0x97, 0x17, 0x97, 0x17, + 0x02, 0x16, 0x00, 0x16, 0x17, 0x14, 0x19, 0x14, 0xe3, 0x11, 0xe0, 0x11, + 0x68, 0x0f, 0x69, 0x0f, 0xba, 0x0c, 0xb8, 0x0c, 0xdf, 0x09, 0xdf, 0x09, + 0xec, 0x06, 0xec, 0x06, 0xf3, 0x03, 0xf2, 0x03, 0xfe, 0x00, 0xfe, 0x00, + 0x25, 0xfe, 0x26, 0xfe, 0x73, 0xfb, 0x72, 0xfb, 0xf5, 0xf8, 0xf5, 0xf8, + 0xba, 0xf6, 0xba, 0xf6, 0xca, 0xf4, 0xc9, 0xf4, 0x2d, 0xf3, 0x2d, 0xf3, + 0xed, 0xf1, 0xec, 0xf1, 0x0a, 0xf1, 0x0a, 0xf1, 0x8c, 0xf0, 0x8c, 0xf0, + 0x72, 0xf0, 0x71, 0xf0, 0xbe, 0xf0, 0xbd, 0xf0, 0x6c, 0xf1, 0x6c, 0xf1, + 0x80, 0xf2, 0x7e, 0xf2, 0xea, 0xf3, 0xeb, 0xf3, 0xb2, 0xf5, 0xb1, 0xf5, + 0xc3, 0xf7, 0xc2, 0xf7, 0x16, 0xfa, 0x18, 0xfa, 0xa7, 0xfc, 0xa5, 0xfc, + 0x5a, 0xff, 0x5a, 0xff, 0x2e, 0x02, 0x2e, 0x02, 0x0d, 0x05, 0x0c, 0x05, + 0xe9, 0x07, 0xea, 0x07, 0xb7, 0x0a, 0xb7, 0x0a, 0x67, 0x0d, 0x67, 0x0d, + 0xed, 0x0f, 0xee, 0x0f, 0x3c, 0x12, 0x3c, 0x12, 0x4b, 0x14, 0x4a, 0x14, + 0x0f, 0x16, 0x0d, 0x16, 0x83, 0x17, 0x82, 0x17, 0x9a, 0x18, 0x99, 0x18, + 0x54, 0x19, 0x54, 0x19, 0xa6, 0x19, 0xa7, 0x19, 0x96, 0x19, 0x95, 0x19, + 0x17, 0x19, 0x17, 0x19, 0x2f, 0x18, 0x2e, 0x18, 0xe1, 0x16, 0xe0, 0x16, + 0x2a, 0x15, 0x2b, 0x15, 0x22, 0x13, 0x1f, 0x13, 0xbd, 0x10, 0xbf, 0x10, + 0x20, 0x0e, 0x1f, 0x0e, 0x48, 0x0b, 0x47, 0x0b, 0x48, 0x08, 0x49, 0x08, + 0x37, 0x05, 0x35, 0x05, 0x18, 0x02, 0x17, 0x02, 0x08, 0xff, 0x08, 0xff, + 0x0b, 0xfc, 0x0b, 0xfc, 0x38, 0xf9, 0x38, 0xf9, 0x95, 0xf6, 0x94, 0xf6, + 0x30, 0xf4, 0x30, 0xf4, 0x0c, 0xf2, 0x0a, 0xf2, 0x36, 0xf0, 0x36, 0xf0, + 0xb1, 0xee, 0xb0, 0xee, 0x81, 0xed, 0x81, 0xed, 0xab, 0xec, 0xac, 0xec, + 0x2d, 0xec, 0x2c, 0xec, 0x0b, 0xec, 0x0c, 0xec, 0x43, 0xec, 0x42, 0xec, + 0xd9, 0xec, 0xd9, 0xec, 0xc6, 0xed, 0xc5, 0xed, 0x0a, 0xef, 0x0b, 0xef, + 0xa2, 0xf0, 0xa1, 0xf0, 0x84, 0xf2, 0x85, 0xf2, 0xa9, 0xf4, 0xa8, 0xf4, + 0x07, 0xf7, 0x07, 0xf7, 0x8f, 0xf9, 0x90, 0xf9, 0x3d, 0xfc, 0x3d, 0xfc, + 0xf6, 0xfe, 0xf6, 0xfe, 0xb4, 0x01, 0xb4, 0x01, 0x64, 0x04, 0x65, 0x04, + 0xf4, 0x06, 0xf2, 0x06, 0x5d, 0x09, 0x5e, 0x09, 0x8c, 0x0b, 0x8a, 0x0b, + 0x75, 0x0d, 0x75, 0x0d, 0x12, 0x0f, 0x12, 0x0f, 0x54, 0x10, 0x54, 0x10, + 0x3d, 0x11, 0x3e, 0x11, 0xc0, 0x11, 0xc1, 0x11, 0xde, 0x11, 0xdd, 0x11, + 0x92, 0x11, 0x94, 0x11, 0xda, 0x10, 0xd8, 0x10, 0xc3, 0x0f, 0xc2, 0x0f, + 0x42, 0x0e, 0x44, 0x0e, 0x6c, 0x0c, 0x6a, 0x0c, 0x3e, 0x0a, 0x40, 0x0a, + 0xc9, 0x07, 0xc9, 0x07, 0x18, 0x05, 0x18, 0x05, 0x35, 0x02, 0x37, 0x02, + 0x36, 0xff, 0x35, 0xff, 0x22, 0xfc, 0x22, 0xfc, 0x0b, 0xf9, 0x0a, 0xf9, + 0xff, 0xf5, 0xff, 0xf5, 0x0c, 0xf3, 0x0c, 0xf3, 0x40, 0xf0, 0x40, 0xf0, + 0xa3, 0xed, 0xa4, 0xed, 0x47, 0xeb, 0x46, 0xeb, 0x26, 0xe9, 0x27, 0xe9, + 0x59, 0xe7, 0x59, 0xe7, 0xd9, 0xe5, 0xd8, 0xe5, 0xb5, 0xe4, 0xb6, 0xe4, + 0xee, 0xe3, 0xee, 0xe3, 0x8a, 0xe3, 0x8b, 0xe3, 0x8a, 0xe3, 0x8a, 0xe3, + 0xf4, 0xe3, 0xf2, 0xe3, 0xc6, 0xe4, 0xc6, 0xe4, 0xfe, 0xe5, 0xfe, 0xe5, + 0x9d, 0xe7, 0x9d, 0xe7, 0x9a, 0xe9, 0x9a, 0xe9, 0xf1, 0xeb, 0xf3, 0xeb, + 0x96, 0xee, 0x95, 0xee, 0x76, 0xf1, 0x78, 0xf1, 0x89, 0xf4, 0x89, 0xf4, + 0xb8, 0xf7, 0xb6, 0xf7, 0xf2, 0xfa, 0xf3, 0xfa, 0x25, 0xfe, 0x26, 0xfe, + 0x45, 0x01, 0x44, 0x01, 0x3c, 0x04, 0x3f, 0x04, 0x04, 0x07, 0x02, 0x07, + 0x87, 0x09, 0x8a, 0x09, 0xc7, 0x0b, 0xc5, 0x0b, 0xb1, 0x0d, 0xb2, 0x0d, + 0x44, 0x0f, 0x45, 0x0f, 0x80, 0x10, 0x80, 0x10, 0x58, 0x11, 0x57, 0x11, + 0xcd, 0x11, 0xd0, 0x11, 0xe1, 0x11, 0xdf, 0x11, 0x90, 0x11, 0x8f, 0x11, + 0xdb, 0x10, 0xdc, 0x10, 0xc8, 0x0f, 0xc8, 0x0f, 0x54, 0x0e, 0x54, 0x0e, + 0x92, 0x0c, 0x8f, 0x0c, 0x77, 0x0a, 0x79, 0x0a, 0x1c, 0x08, 0x1c, 0x08, + 0x86, 0x05, 0x85, 0x05, 0xc0, 0x02, 0xc1, 0x02, 0xe0, 0xff, 0xde, 0xff, + 0xec, 0xfc, 0xed, 0xfc, 0xfc, 0xf9, 0xf9, 0xf9, 0x19, 0xf7, 0x1c, 0xf7, + 0x59, 0xf4, 0x59, 0xf4, 0xc6, 0xf1, 0xc4, 0xf1, 0x6e, 0xef, 0x6e, 0xef, + 0x5c, 0xed, 0x5b, 0xed, 0x9d, 0xeb, 0x9d, 0xeb, 0x3b, 0xea, 0x38, 0xea, + 0x37, 0xe9, 0x38, 0xe9, 0x9f, 0xe8, 0x9e, 0xe8, 0x70, 0xe8, 0x70, 0xe8, + 0xb3, 0xe8, 0xb3, 0xe8, 0x63, 0xe9, 0x63, 0xe9, 0x84, 0xea, 0x82, 0xea, + 0x08, 0xec, 0x08, 0xec, 0xf0, 0xed, 0xee, 0xed, 0x29, 0xf0, 0x2a, 0xf0, + 0xb2, 0xf2, 0xb2, 0xf2, 0x75, 0xf5, 0x74, 0xf5, 0x69, 0xf8, 0x69, 0xf8, + 0x7e, 0xfb, 0x7f, 0xfb, 0xa9, 0xfe, 0xa8, 0xfe, 0xd1, 0x01, 0xd1, 0x01, + 0xf5, 0x04, 0xf5, 0x04, 0xfc, 0x07, 0xfb, 0x07, 0xe0, 0x0a, 0xe0, 0x0a, + 0x95, 0x0d, 0x93, 0x0d, 0x0e, 0x10, 0x0f, 0x10, 0x47, 0x12, 0x46, 0x12, + 0x35, 0x14, 0x35, 0x14, 0xd6, 0x15, 0xd5, 0x15, 0x25, 0x17, 0x24, 0x17, + 0x16, 0x18, 0x18, 0x18, 0xb2, 0x18, 0xb0, 0x18, 0xec, 0x18, 0xee, 0x18, + 0xc8, 0x18, 0xc7, 0x18, 0x41, 0x18, 0x42, 0x18, 0x5a, 0x17, 0x5a, 0x17, + 0x13, 0x16, 0x13, 0x16, 0x72, 0x14, 0x74, 0x14, 0x7f, 0x12, 0x7d, 0x12, + 0x3d, 0x10, 0x3f, 0x10, 0xbe, 0x0d, 0xbe, 0x0d, 0x0c, 0x0b, 0x0a, 0x0b, + 0x33, 0x08, 0x35, 0x08, 0x48, 0x05, 0x46, 0x05, 0x57, 0x02, 0x58, 0x02, + 0x78, 0xff, 0x77, 0xff, 0xb4, 0xfc, 0xb5, 0xfc, 0x22, 0xfa, 0x20, 0xfa, + 0xc8, 0xf7, 0xca, 0xf7, 0xb7, 0xf5, 0xb7, 0xf5, 0xf8, 0xf3, 0xf9, 0xf3, + 0x8f, 0xf2, 0x91, 0xf2, 0x88, 0xf1, 0x86, 0xf1, 0xe2, 0xf0, 0xe4, 0xf0, + 0xa6, 0xf0, 0xa4, 0xf0, 0xcf, 0xf0, 0xd2, 0xf0, 0x61, 0xf1, 0x61, 0xf1, + 0x57, 0xf2, 0x57, 0xf2, 0xb0, 0xf3, 0xb1, 0xf3, 0x63, 0xf5, 0x62, 0xf5, + 0x6a, 0xf7, 0x6c, 0xf7, 0xbb, 0xf9, 0xbb, 0xf9, 0x4a, 0xfc, 0x4b, 0xfc, + 0x0a, 0xff, 0x0c, 0xff, 0xec, 0x01, 0xec, 0x01, 0xe4, 0x04, 0xe5, 0x04, + 0xdd, 0x07, 0xdd, 0x07, 0xcb, 0x0a, 0xcb, 0x0a, 0xa1, 0x0d, 0xa2, 0x0d, + 0x4e, 0x10, 0x50, 0x10, 0xc9, 0x12, 0xca, 0x12, 0x06, 0x15, 0x06, 0x15, + 0xf7, 0x16, 0xf9, 0x16, 0x96, 0x18, 0x97, 0x18, 0xda, 0x19, 0xdb, 0x19, + 0xba, 0x1a, 0xba, 0x1a, 0x33, 0x1b, 0x34, 0x1b, 0x3e, 0x1b, 0x3f, 0x1b, + 0xd9, 0x1a, 0xd9, 0x1a, 0x00, 0x1a, 0x03, 0x1a, 0xbb, 0x18, 0xba, 0x18, + 0x01, 0x17, 0x04, 0x17, 0xea, 0x14, 0xea, 0x14, 0x74, 0x12, 0x73, 0x12, + 0xb0, 0x0f, 0xb2, 0x0f, 0xb0, 0x0c, 0xaf, 0x0c, 0x80, 0x09, 0x80, 0x09, + 0x32, 0x06, 0x32, 0x06, 0xdb, 0x02, 0xdc, 0x02, 0x8a, 0xff, 0x89, 0xff, + 0x4c, 0xfc, 0x4d, 0xfc, 0x38, 0xf9, 0x38, 0xf9, 0x54, 0xf6, 0x54, 0xf6, + 0xae, 0xf3, 0xb0, 0xf3, 0x54, 0xf1, 0x52, 0xf1, 0x46, 0xef, 0x47, 0xef, + 0x91, 0xed, 0x90, 0xed, 0x31, 0xec, 0x33, 0xec, 0x33, 0xeb, 0x31, 0xeb, + 0x8c, 0xea, 0x8f, 0xea, 0x4b, 0xea, 0x4b, 0xea, 0x69, 0xea, 0x69, 0xea, + 0xe7, 0xea, 0xe9, 0xea, 0xc9, 0xeb, 0xc8, 0xeb, 0x05, 0xed, 0x06, 0xed, + 0xa0, 0xee, 0xa2, 0xee, 0x93, 0xf0, 0x92, 0xf0, 0xcf, 0xf2, 0xd1, 0xf2, + 0x54, 0xf5, 0x55, 0xf5, 0x11, 0xf8, 0x10, 0xf8, 0xf6, 0xfa, 0xfb, 0xfa, + 0xfd, 0xfd, 0xf9, 0xfd, 0x04, 0x01, 0x08, 0x01, 0x0f, 0x04, 0x0f, 0x04, + 0xff, 0x06, 0x00, 0x07, 0xc9, 0x09, 0xca, 0x09, 0x5f, 0x0c, 0x5d, 0x0c, + 0xae, 0x0e, 0xb0, 0x0e, 0xb0, 0x10, 0xaf, 0x10, 0x56, 0x12, 0x58, 0x12, + 0x9b, 0x13, 0x9c, 0x13, 0x78, 0x14, 0x7a, 0x14, 0xe4, 0x14, 0xe6, 0x14, + 0xe4, 0x14, 0xe3, 0x14, 0x69, 0x14, 0x6a, 0x14, 0x84, 0x13, 0x84, 0x13, + 0x2d, 0x12, 0x2f, 0x12, 0x70, 0x10, 0x70, 0x10, 0x52, 0x0e, 0x54, 0x0e, + 0xde, 0x0b, 0xde, 0x0b, 0x24, 0x09, 0x24, 0x09, 0x2a, 0x06, 0x2a, 0x06, + 0x05, 0x03, 0x06, 0x03, 0xc5, 0xff, 0xc5, 0xff, 0x77, 0xfc, 0x78, 0xfc, + 0x2e, 0xf9, 0x2e, 0xf9, 0xf5, 0xf5, 0xf5, 0xf5, 0xde, 0xf2, 0xe0, 0xf2, + 0xf7, 0xef, 0xf6, 0xef, 0x45, 0xed, 0x48, 0xed, 0xdb, 0xea, 0xd9, 0xea, + 0xb3, 0xe8, 0xb5, 0xe8, 0xe5, 0xe6, 0xe5, 0xe6, 0x69, 0xe5, 0x6b, 0xe5, + 0x51, 0xe4, 0x52, 0xe4, 0x95, 0xe3, 0x95, 0xe3, 0x43, 0xe3, 0x45, 0xe3, + 0x5d, 0xe3, 0x5d, 0xe3, 0xdc, 0xe3, 0xde, 0xe3, 0xcd, 0xe4, 0xcf, 0xe4, + 0x25, 0xe6, 0x26, 0xe6, 0xe3, 0xe7, 0xe3, 0xe7, 0xff, 0xe9, 0x02, 0xea, + 0x75, 0xec, 0x74, 0xec, 0x30, 0xef, 0x35, 0xef, 0x2c, 0xf2, 0x29, 0xf2, + 0x4b, 0xf5, 0x4e, 0xf5, 0x88, 0xf8, 0x89, 0xf8, 0xc3, 0xfb, 0xc6, 0xfb, + 0xf7, 0xfe, 0xf8, 0xfe, 0x09, 0x02, 0x0b, 0x02, 0xee, 0x04, 0xee, 0x04, + 0x9b, 0x07, 0x9b, 0x07, 0xfe, 0x09, 0x00, 0x0a, 0x16, 0x0c, 0x17, 0x0c, + 0xd1, 0x0d, 0xd3, 0x0d, 0x37, 0x0f, 0x37, 0x0f, 0x34, 0x10, 0x36, 0x10, + 0xd2, 0x10, 0xd1, 0x10, 0x07, 0x11, 0x09, 0x11, 0xd5, 0x10, 0xd5, 0x10, + 0x41, 0x10, 0x42, 0x10, 0x43, 0x0f, 0x45, 0x0f, 0xea, 0x0d, 0xea, 0x0d, + 0x34, 0x0c, 0x36, 0x0c, 0x2e, 0x0a, 0x2e, 0x0a, 0xe0, 0x07, 0xe2, 0x07, + 0x4f, 0x05, 0x51, 0x05, 0x96, 0x02, 0x96, 0x02, 0xb4, 0xff, 0xb5, 0xff, + 0xc4, 0xfc, 0xc5, 0xfc, 0xd3, 0xf9, 0xd3, 0xf9, 0xf0, 0xf6, 0xf2, 0xf6, + 0x2d, 0xf4, 0x2d, 0xf4, 0x97, 0xf1, 0x98, 0xf1, 0x3d, 0xef, 0x3e, 0xef, + 0x2c, 0xed, 0x2c, 0xed, 0x68, 0xeb, 0x6b, 0xeb, 0x07, 0xea, 0x05, 0xea, + 0x05, 0xe9, 0x07, 0xe9, 0x72, 0xe8, 0x70, 0xe8, 0x48, 0xe8, 0x48, 0xe8, + 0x93, 0xe8, 0x93, 0xe8, 0x50, 0xe9, 0x51, 0xe9, 0x7a, 0xea, 0x7d, 0xea, + 0x13, 0xec, 0x12, 0xec, 0x0c, 0xee, 0x0e, 0xee, 0x62, 0xf0, 0x62, 0xf0, + 0x05, 0xf3, 0x05, 0xf3, 0xe3, 0xf5, 0xe3, 0xf5, 0xef, 0xf8, 0xf1, 0xf8, + 0x19, 0xfc, 0x18, 0xfc, 0x4e, 0xff, 0x51, 0xff, 0x86, 0x02, 0x87, 0x02, + 0xad, 0x05, 0xad, 0x05, 0xb8, 0x08, 0xba, 0x08, 0x99, 0x0b, 0x9b, 0x0b, + 0x46, 0x0e, 0x48, 0x0e, 0xbb, 0x10, 0xba, 0x10, 0xe4, 0x12, 0xe4, 0x12, + 0xc5, 0x14, 0xc7, 0x14, 0x54, 0x16, 0x53, 0x16, 0x8e, 0x17, 0x90, 0x17, + 0x6d, 0x18, 0x6d, 0x18, 0xf0, 0x18, 0xf0, 0x18, 0x0d, 0x19, 0x0f, 0x19, + 0xcc, 0x18, 0xcc, 0x18, 0x25, 0x18, 0x26, 0x18, 0x16, 0x17, 0x18, 0x17, + 0xa8, 0x15, 0xaa, 0x15, 0xd9, 0x13, 0xda, 0x13, 0xb5, 0x11, 0xb8, 0x11, + 0x40, 0x0f, 0x42, 0x0f, 0x8a, 0x0c, 0x8c, 0x0c, 0xa0, 0x09, 0xa1, 0x09, + 0x8d, 0x06, 0x90, 0x06, 0x6b, 0x03, 0x6a, 0x03, 0x40, 0x00, 0x44, 0x00, + 0x2f, 0xfd, 0x2e, 0xfd, 0x39, 0xfa, 0x3c, 0xfa, 0x7b, 0xf7, 0x7b, 0xf7, + 0xfc, 0xf4, 0xfd, 0xf4, 0xcc, 0xf2, 0xcd, 0xf2, 0xf2, 0xf0, 0xf3, 0xf0, + 0x7a, 0xef, 0x7a, 0xef, 0x68, 0xee, 0x6a, 0xee, 0xc3, 0xed, 0xc3, 0xed, + 0x8d, 0xed, 0x8d, 0xed, 0xc7, 0xed, 0xc9, 0xed, 0x73, 0xee, 0x74, 0xee, + 0x8f, 0xef, 0x90, 0xef, 0x16, 0xf1, 0x15, 0xf1, 0x03, 0xf3, 0x04, 0xf3, + 0x4a, 0xf5, 0x4b, 0xf5, 0xe0, 0xf7, 0xe2, 0xf7, 0xc0, 0xfa, 0xbe, 0xfa, + 0xcd, 0xfd, 0xcf, 0xfd, 0x02, 0x01, 0x02, 0x01, 0x4b, 0x04, 0x4b, 0x04, + 0x95, 0x07, 0x96, 0x07, 0xd6, 0x0a, 0xd6, 0x0a, 0xf6, 0x0d, 0xf6, 0x0d, + 0xef, 0x10, 0xf2, 0x10, 0xb2, 0x13, 0xb1, 0x13, 0x2f, 0x16, 0x30, 0x16, + 0x62, 0x18, 0x63, 0x18, 0x3c, 0x1a, 0x3c, 0x1a, 0xb8, 0x1b, 0xbb, 0x1b, + 0xd3, 0x1c, 0xd3, 0x1c, 0x7f, 0x1d, 0x81, 0x1d, 0xbb, 0x1d, 0xbb, 0x1d, + 0x83, 0x1d, 0x83, 0x1d, 0xd6, 0x1c, 0xd7, 0x1c, 0xb3, 0x1b, 0xb1, 0x1b, + 0x16, 0x1a, 0x17, 0x1a, 0x0b, 0x18, 0x0b, 0x18, 0x97, 0x15, 0x9a, 0x15, + 0xcb, 0x12, 0xca, 0x12, 0xb1, 0x0f, 0xb4, 0x0f, 0x5e, 0x0c, 0x5d, 0x0c, + 0xe0, 0x08, 0xe3, 0x08, 0x52, 0x05, 0x51, 0x05, 0xbb, 0x01, 0xbe, 0x01, + 0x3e, 0xfe, 0x3d, 0xfe, 0xd9, 0xfa, 0xdb, 0xfa, 0xaf, 0xf7, 0xaf, 0xf7, + 0xbf, 0xf4, 0xc0, 0xf4, 0x19, 0xf2, 0x1c, 0xf2, 0xc9, 0xef, 0xc9, 0xef, + 0xcd, 0xed, 0xcf, 0xed, 0x34, 0xec, 0x34, 0xec, 0xfb, 0xea, 0xfc, 0xea, + 0x29, 0xea, 0x2a, 0xea, 0xba, 0xe9, 0xbb, 0xe9, 0xb6, 0xe9, 0xb7, 0xe9, + 0x19, 0xea, 0x1b, 0xea, 0xe5, 0xea, 0xe6, 0xea, 0x14, 0xec, 0x14, 0xec, + 0xa6, 0xed, 0xa7, 0xed, 0x91, 0xef, 0x91, 0xef, 0xce, 0xf1, 0xd1, 0xf1, + 0x53, 0xf4, 0x53, 0xf4, 0x15, 0xf7, 0x16, 0xf7, 0x03, 0xfa, 0x04, 0xfa, + 0x11, 0xfd, 0x12, 0xfd, 0x2b, 0x00, 0x2c, 0x00, 0x40, 0x03, 0x40, 0x03, + 0x40, 0x06, 0x41, 0x06, 0x18, 0x09, 0x1b, 0x09, 0xc0, 0x0b, 0xbe, 0x0b, + 0x20, 0x0e, 0x22, 0x0e, 0x31, 0x10, 0x31, 0x10, 0xeb, 0x11, 0xeb, 0x11, + 0x3f, 0x13, 0x3f, 0x13, 0x2d, 0x14, 0x2d, 0x14, 0xac, 0x14, 0xad, 0x14, + 0xb6, 0x14, 0xb6, 0x14, 0x51, 0x14, 0x52, 0x14, 0x75, 0x13, 0x76, 0x13, + 0x30, 0x12, 0x2f, 0x12, 0x7d, 0x10, 0x7f, 0x10, 0x6b, 0x0e, 0x6a, 0x0e, + 0x04, 0x0c, 0x04, 0x0c, 0x4f, 0x09, 0x50, 0x09, 0x65, 0x06, 0x64, 0x06, + 0x49, 0x03, 0x4a, 0x03, 0x13, 0x00, 0x15, 0x00, 0xd4, 0xfc, 0xd3, 0xfc, + 0x94, 0xf9, 0x96, 0xf9, 0x6c, 0xf6, 0x6d, 0xf6, 0x65, 0xf3, 0x65, 0xf3, + 0x8e, 0xf0, 0x8e, 0xf0, 0xf0, 0xed, 0xf0, 0xed, 0x94, 0xeb, 0x96, 0xeb, + 0x86, 0xe9, 0x85, 0xe9, 0xc9, 0xe7, 0xca, 0xe7, 0x66, 0xe6, 0x69, 0xe6, + 0x62, 0xe5, 0x60, 0xe5, 0xbf, 0xe4, 0xc3, 0xe4, 0x85, 0xe4, 0x84, 0xe4, + 0xb2, 0xe4, 0xb5, 0xe4, 0x50, 0xe5, 0x4f, 0xe5, 0x51, 0xe6, 0x53, 0xe6, + 0xc2, 0xe7, 0xc2, 0xe7, 0x91, 0xe9, 0x93, 0xe9, 0xc1, 0xeb, 0xc2, 0xeb, + 0x46, 0xee, 0x46, 0xee, 0x10, 0xf1, 0x11, 0xf1, 0x14, 0xf4, 0x15, 0xf4, + 0x3f, 0xf7, 0x3f, 0xf7, 0x7c, 0xfa, 0x7e, 0xfa, 0xbc, 0xfd, 0xbd, 0xfd, + 0xeb, 0x00, 0xed, 0x00, 0xfb, 0x03, 0xfb, 0x03, 0xd9, 0x06, 0xd8, 0x06, + 0x77, 0x09, 0x78, 0x09, 0xcb, 0x0b, 0xca, 0x0b, 0xcb, 0x0d, 0xcc, 0x0d, + 0x6e, 0x0f, 0x6d, 0x0f, 0xae, 0x10, 0xb0, 0x10, 0x8a, 0x11, 0x89, 0x11, + 0xf6, 0x11, 0xf7, 0x11, 0xfc, 0x11, 0xfb, 0x11, 0x8f, 0x11, 0x91, 0x11, + 0xba, 0x10, 0xba, 0x10, 0x7c, 0x0f, 0x7d, 0x0f, 0xd5, 0x0d, 0xd8, 0x0d, + 0xd9, 0x0b, 0xd7, 0x0b, 0x7b, 0x09, 0x7d, 0x09, 0xdc, 0x06, 0xdd, 0x06, + 0xfa, 0x03, 0xfa, 0x03, 0xef, 0x00, 0xf1, 0x00, 0xc5, 0xfd, 0xc5, 0xfd, + 0x8d, 0xfa, 0x8f, 0xfa, 0x5f, 0xf7, 0x60, 0xf7, 0x42, 0xf4, 0x45, 0xf4, + 0x52, 0xf1, 0x51, 0xf1, 0x91, 0xee, 0x94, 0xee, 0x16, 0xec, 0x16, 0xec, + 0xe7, 0xe9, 0xe8, 0xe9, 0x11, 0xe8, 0x14, 0xe8, 0xa0, 0xe6, 0x9f, 0xe6, + 0x93, 0xe5, 0x95, 0xe5, 0xfa, 0xe4, 0xfb, 0xe4, 0xd4, 0xe4, 0xd4, 0xe4, + 0x26, 0xe5, 0x28, 0xe5, 0xf3, 0xe5, 0xf5, 0xe5, 0x3c, 0xe7, 0x3a, 0xe7, + 0xf5, 0xe8, 0xf9, 0xe8, 0x21, 0xeb, 0x1f, 0xeb, 0xae, 0xed, 0xb0, 0xed, + 0x93, 0xf0, 0x95, 0xf0, 0xc1, 0xf3, 0xc1, 0xf3, 0x25, 0xf7, 0x28, 0xf7, + 0xae, 0xfa, 0xae, 0xfa, 0x49, 0xfe, 0x4a, 0xfe, 0xe1, 0x01, 0xe2, 0x01, + 0x67, 0x05, 0x67, 0x05, 0xc8, 0x08, 0xcb, 0x08, 0xfa, 0x0b, 0xfb, 0x0b, + 0xf2, 0x0e, 0xf3, 0x0e, 0xa1, 0x11, 0xa2, 0x11, 0x07, 0x14, 0x09, 0x14, + 0x18, 0x16, 0x17, 0x16, 0xd2, 0x17, 0xd5, 0x17, 0x32, 0x19, 0x31, 0x19, + 0x2e, 0x1a, 0x2f, 0x1a, 0xcb, 0x1a, 0xcc, 0x1a, 0xfd, 0x1a, 0xfe, 0x1a, + 0xcb, 0x1a, 0xcb, 0x1a, 0x2c, 0x1a, 0x2d, 0x1a, 0x23, 0x19, 0x22, 0x19, + 0xb6, 0x17, 0xb8, 0x17, 0xdf, 0x15, 0xe0, 0x15, 0xb1, 0x13, 0xb1, 0x13, + 0x2a, 0x11, 0x2c, 0x11, 0x5b, 0x0e, 0x5d, 0x0e, 0x56, 0x0b, 0x55, 0x0b, + 0x1f, 0x08, 0x21, 0x08, 0xd7, 0x04, 0xd7, 0x04, 0x84, 0x01, 0x86, 0x01, + 0x3e, 0xfe, 0x40, 0xfe, 0x1c, 0xfb, 0x1d, 0xfb, 0x27, 0xf8, 0x28, 0xf8, + 0x72, 0xf5, 0x75, 0xf5, 0x0c, 0xf3, 0x0d, 0xf3, 0xf9, 0xf0, 0xfc, 0xf0, + 0x4d, 0xef, 0x4f, 0xef, 0x06, 0xee, 0x07, 0xee, 0x2e, 0xed, 0x30, 0xed, + 0xc6, 0xec, 0xc7, 0xec, 0xd2, 0xec, 0xd3, 0xec, 0x50, 0xed, 0x53, 0xed, + 0x43, 0xee, 0x45, 0xee, 0xa4, 0xef, 0xa5, 0xef, 0x6e, 0xf1, 0x70, 0xf1, + 0x97, 0xf3, 0x9a, 0xf3, 0x18, 0xf6, 0x19, 0xf6, 0xe1, 0xf8, 0xe2, 0xf8, + 0xe1, 0xfb, 0xe3, 0xfb, 0x0d, 0xff, 0x0e, 0xff, 0x52, 0x02, 0x54, 0x02, + 0x9e, 0x05, 0x9f, 0x05, 0xe3, 0x08, 0xe4, 0x08, 0x0e, 0x0c, 0x11, 0x0c, + 0x13, 0x0f, 0x14, 0x0f, 0xe5, 0x11, 0xe7, 0x11, 0x74, 0x14, 0x76, 0x14, + 0xbb, 0x16, 0xbd, 0x16, 0xab, 0x18, 0xac, 0x18, 0x41, 0x1a, 0x42, 0x1a, + 0x73, 0x1b, 0x76, 0x1b, 0x3d, 0x1c, 0x3e, 0x1c, 0x99, 0x1c, 0x9b, 0x1c, + 0x84, 0x1c, 0x84, 0x1c, 0xfa, 0x1b, 0xfb, 0x1b, 0xff, 0x1a, 0xff, 0x1a, + 0x8d, 0x19, 0x90, 0x19, 0xb0, 0x17, 0xb1, 0x17, 0x69, 0x15, 0x6b, 0x15, + 0xca, 0x12, 0xcb, 0x12, 0xdd, 0x0f, 0xe0, 0x0f, 0xb2, 0x0c, 0xb3, 0x0c, + 0x60, 0x09, 0x61, 0x09, 0xf1, 0x05, 0xf3, 0x05, 0x81, 0x02, 0x82, 0x02, + 0x1d, 0xff, 0x1e, 0xff, 0xd9, 0xfb, 0xdc, 0xfb, 0xc4, 0xf8, 0xc4, 0xf8, + 0xe8, 0xf5, 0xe9, 0xf5, 0x56, 0xf3, 0x58, 0xf3, 0x15, 0xf1, 0x15, 0xf1, + 0x2b, 0xef, 0x2d, 0xef, 0xa0, 0xed, 0xa0, 0xed, 0x77, 0xec, 0x79, 0xec, + 0xb3, 0xeb, 0xb4, 0xeb, 0x59, 0xeb, 0x58, 0xeb, 0x63, 0xeb, 0x66, 0xeb, + 0xdc, 0xeb, 0xdc, 0xeb, 0xb8, 0xec, 0xba, 0xec, 0xff, 0xed, 0xff, 0xed, + 0xa0, 0xef, 0xa1, 0xef, 0x9d, 0xf1, 0x9e, 0xf1, 0xec, 0xf3, 0xed, 0xf3, + 0x7e, 0xf6, 0x7f, 0xf6, 0x4e, 0xf9, 0x4e, 0xf9, 0x42, 0xfc, 0x44, 0xfc, + 0x58, 0xff, 0x58, 0xff, 0x72, 0x02, 0x73, 0x02, 0x86, 0x05, 0x86, 0x05, + 0x7e, 0x08, 0x7f, 0x08, 0x4e, 0x0b, 0x50, 0x0b, 0xe3, 0x0d, 0xe4, 0x0d, + 0x35, 0x10, 0x37, 0x10, 0x32, 0x12, 0x32, 0x12, 0xcf, 0x13, 0xd2, 0x13, + 0x0e, 0x15, 0x0e, 0x15, 0xd8, 0x15, 0xd9, 0x15, 0x38, 0x16, 0x39, 0x16, + 0x21, 0x16, 0x20, 0x16, 0x90, 0x15, 0x92, 0x15, 0x8e, 0x14, 0x90, 0x14, + 0x18, 0x13, 0x18, 0x13, 0x3b, 0x11, 0x3d, 0x11, 0xf5, 0x0e, 0xf6, 0x0e, + 0x5a, 0x0c, 0x5b, 0x0c, 0x72, 0x09, 0x74, 0x09, 0x51, 0x06, 0x51, 0x06, + 0xff, 0x02, 0x01, 0x03, 0x94, 0xff, 0x96, 0xff, 0x20, 0xfc, 0x20, 0xfc, + 0xb2, 0xf8, 0xb5, 0xf8, 0x5b, 0xf5, 0x5c, 0xf5, 0x2a, 0xf2, 0x2b, 0xf2, + 0x29, 0xef, 0x2a, 0xef, 0x6a, 0xec, 0x6c, 0xec, 0xf1, 0xe9, 0xf1, 0xe9, + 0xc7, 0xe7, 0xca, 0xe7, 0xf3, 0xe5, 0xf4, 0xe5, 0x7e, 0xe4, 0x7f, 0xe4, + 0x68, 0xe3, 0x69, 0xe3, 0xbb, 0xe2, 0xbd, 0xe2, 0x79, 0xe2, 0x79, 0xe2, + 0xa3, 0xe2, 0xa4, 0xe2, 0x3f, 0xe3, 0x3f, 0xe3, 0x49, 0xe4, 0x4a, 0xe4, + 0xc4, 0xe5, 0xc5, 0xe5, 0xa8, 0xe7, 0xa8, 0xe7, 0xf0, 0xe9, 0xf1, 0xe9, + 0x93, 0xec, 0x94, 0xec, 0x89, 0xef, 0x8a, 0xef, 0xbc, 0xf2, 0xbc, 0xf2, + 0x1c, 0xf6, 0x1e, 0xf6, 0x97, 0xf9, 0x96, 0xf9, 0x12, 0xfd, 0x14, 0xfd, + 0x83, 0x00, 0x83, 0x00, 0xd1, 0x03, 0xd3, 0x03, 0xf1, 0x06, 0xf0, 0x06, + 0xce, 0x09, 0xcf, 0x09, 0x61, 0x0c, 0x63, 0x0c, 0x9d, 0x0e, 0x9e, 0x0e, + 0x7b, 0x10, 0x7c, 0x10, 0xf5, 0x11, 0xf4, 0x11, 0x01, 0x13, 0x04, 0x13, + 0xa6, 0x13, 0xa8, 0x13, 0xd7, 0x13, 0xd8, 0x13, 0x9b, 0x13, 0x99, 0x13, + 0xeb, 0x12, 0xee, 0x12, 0xd2, 0x11, 0xd0, 0x11, 0x4b, 0x10, 0x4e, 0x10, + 0x60, 0x0e, 0x5f, 0x0e, 0x1b, 0x0c, 0x1d, 0x0c, 0x7f, 0x09, 0x80, 0x09, + 0xa0, 0x06, 0xa0, 0x06, 0x86, 0x03, 0x88, 0x03, 0x49, 0x00, 0x48, 0x00, + 0xf2, 0xfc, 0xf5, 0xfc, 0x9b, 0xf9, 0x9a, 0xf9, 0x50, 0xf6, 0x50, 0xf6, + 0x23, 0xf3, 0x24, 0xf3, 0x27, 0xf0, 0x26, 0xf0, 0x65, 0xed, 0x66, 0xed, + 0xef, 0xea, 0xf0, 0xea, 0xcd, 0xe8, 0xcd, 0xe8, 0x0c, 0xe7, 0x0c, 0xe7, + 0xb1, 0xe5, 0xb0, 0xe5, 0xc4, 0xe4, 0xc5, 0xe4, 0x4c, 0xe4, 0x4c, 0xe4, + 0x4b, 0xe4, 0x4b, 0xe4, 0xc1, 0xe4, 0xc3, 0xe4, 0xb8, 0xe5, 0xb5, 0xe5, + 0x20, 0xe7, 0x21, 0xe7, 0xfd, 0xe8, 0xfd, 0xe8, 0x43, 0xeb, 0x43, 0xeb, + 0xe4, 0xed, 0xe7, 0xed, 0xdb, 0xf0, 0xd9, 0xf0, 0x0b, 0xf4, 0x0e, 0xf4, + 0x71, 0xf7, 0x6e, 0xf7, 0xe7, 0xfa, 0xeb, 0xfa, 0x6f, 0xfe, 0x6c, 0xfe, + 0xe8, 0x01, 0xe8, 0x01, 0x4b, 0x05, 0x4c, 0x05, 0x87, 0x08, 0x87, 0x08, + 0x8e, 0x0b, 0x90, 0x0b, 0x5d, 0x0e, 0x5c, 0x0e, 0xde, 0x10, 0xde, 0x10, + 0x17, 0x13, 0x17, 0x13, 0xf6, 0x14, 0xf6, 0x14, 0x80, 0x16, 0x80, 0x16, + 0xab, 0x17, 0xab, 0x17, 0x73, 0x18, 0x74, 0x18, 0xdb, 0x18, 0xdb, 0x18, + 0xd7, 0x18, 0xd9, 0x18, 0x71, 0x18, 0x70, 0x18, 0x9f, 0x17, 0x9f, 0x17, + 0x67, 0x16, 0x67, 0x16, 0xca, 0x14, 0xcc, 0x14, 0xd3, 0x12, 0xd3, 0x12, + 0x86, 0x10, 0x87, 0x10, 0xef, 0x0d, 0xef, 0x0d, 0x1b, 0x0b, 0x1d, 0x0b, + 0x1a, 0x08, 0x1b, 0x08, 0xfd, 0x04, 0xfa, 0x04, 0xd2, 0x01, 0xd4, 0x01, + 0xb0, 0xfe, 0xb2, 0xfe, 0xaa, 0xfb, 0xaa, 0xfb, 0xcd, 0xf8, 0xcf, 0xf8, + 0x2d, 0xf6, 0x2b, 0xf6, 0xd1, 0xf3, 0xd3, 0xf3, 0xce, 0xf1, 0xce, 0xf1, + 0x24, 0xf0, 0x26, 0xf0, 0xe2, 0xee, 0xe0, 0xee, 0x08, 0xee, 0x0b, 0xee, + 0xa0, 0xed, 0xa0, 0xed, 0xab, 0xed, 0xac, 0xed, 0x21, 0xee, 0x21, 0xee, + 0x0e, 0xef, 0x0f, 0xef, 0x64, 0xf0, 0x65, 0xf0, 0x26, 0xf2, 0x27, 0xf2, + 0x43, 0xf4, 0x45, 0xf4, 0xba, 0xf6, 0xbb, 0xf6, 0x7a, 0xf9, 0x7b, 0xf9, + 0x71, 0xfc, 0x71, 0xfc, 0x96, 0xff, 0x97, 0xff, 0xd4, 0x02, 0xd5, 0x02, + 0x20, 0x06, 0x20, 0x06, 0x5f, 0x09, 0x61, 0x09, 0x8f, 0x0c, 0x8f, 0x0c, + 0x94, 0x0f, 0x96, 0x0f, 0x6c, 0x12, 0x6d, 0x12, 0x03, 0x15, 0x03, 0x15, + 0x50, 0x17, 0x51, 0x17, 0x47, 0x19, 0x4a, 0x19, 0xe8, 0x1a, 0xe9, 0x1a, + 0x24, 0x1c, 0x26, 0x1c, 0xf7, 0x1c, 0xf9, 0x1c, 0x5e, 0x1d, 0x5e, 0x1d, + 0x4f, 0x1d, 0x51, 0x1d, 0xca, 0x1c, 0xca, 0x1c, 0xcf, 0x1b, 0xd0, 0x1b, + 0x5b, 0x1a, 0x5c, 0x1a, 0x77, 0x18, 0x77, 0x18, 0x24, 0x16, 0x24, 0x16, + 0x70, 0x13, 0x71, 0x13, 0x6d, 0x10, 0x6c, 0x10, 0x23, 0x0d, 0x24, 0x0d, + 0xac, 0x09, 0xae, 0x09, 0x1a, 0x06, 0x1a, 0x06, 0x7d, 0x02, 0x7f, 0x02, + 0xf0, 0xfe, 0xef, 0xfe, 0x7b, 0xfb, 0x7e, 0xfb, 0x3a, 0xf8, 0x3b, 0xf8, + 0x33, 0xf5, 0x34, 0xf5, 0x76, 0xf2, 0x78, 0xf2, 0x0b, 0xf0, 0x0b, 0xf0, + 0xfa, 0xed, 0xfb, 0xed, 0x4b, 0xec, 0x4a, 0xec, 0xfb, 0xea, 0xfe, 0xea, + 0x1a, 0xea, 0x1b, 0xea, 0x9f, 0xe9, 0xa0, 0xe9, 0x8f, 0xe9, 0x91, 0xe9, + 0xef, 0xe9, 0xef, 0xe9, 0xb6, 0xea, 0xb9, 0xea, 0xef, 0xeb, 0xef, 0xeb, + 0x8c, 0xed, 0x8b, 0xed, 0x88, 0xef, 0x8b, 0xef, 0xe3, 0xf1, 0xe3, 0xf1, + 0x8b, 0xf4, 0x8d, 0xf4, 0x7b, 0xf7, 0x7b, 0xf7, 0x9d, 0xfa, 0x9e, 0xfa, + 0xea, 0xfd, 0xea, 0xfd, 0x47, 0x01, 0x49, 0x01, 0xaa, 0x04, 0xaa, 0x04, + 0xf8, 0x07, 0xf9, 0x07, 0x26, 0x0b, 0x27, 0x0b, 0x1f, 0x0e, 0x20, 0x0e, + 0xd8, 0x10, 0xd9, 0x10, 0x3d, 0x13, 0x3e, 0x13, 0x49, 0x15, 0x49, 0x15, + 0xed, 0x16, 0xee, 0x16, 0x25, 0x18, 0x25, 0x18, 0xea, 0x18, 0xeb, 0x18, + 0x34, 0x19, 0x35, 0x19, 0x05, 0x19, 0x05, 0x19, 0x56, 0x18, 0x56, 0x18, + 0x2f, 0x17, 0x31, 0x17, 0x90, 0x15, 0x91, 0x15, 0x83, 0x13, 0x83, 0x13, + 0x0c, 0x11, 0x10, 0x11, 0x40, 0x0e, 0x40, 0x0e, 0x24, 0x0b, 0x27, 0x0b, + 0xd0, 0x07, 0xd1, 0x07, 0x51, 0x04, 0x52, 0x04, 0xb8, 0x00, 0xb7, 0x00, + 0x1b, 0xfd, 0x1e, 0xfd, 0x88, 0xf9, 0x88, 0xf9, 0x0e, 0xf6, 0x10, 0xf6, + 0xc0, 0xf2, 0xc4, 0xf2, 0xa8, 0xef, 0xa7, 0xef, 0xd3, 0xec, 0xd7, 0xec, + 0x4a, 0xea, 0x4b, 0xea, 0x13, 0xe8, 0x14, 0xe8, 0x34, 0xe6, 0x38, 0xe6, + 0xb8, 0xe4, 0xb7, 0xe4, 0x9e, 0xe3, 0xa0, 0xe3, 0xec, 0xe2, 0xee, 0xe2, + 0xa6, 0xe2, 0xa6, 0xe2, 0xcc, 0xe2, 0xd0, 0xe2, 0x65, 0xe3, 0x64, 0xe3, + 0x6d, 0xe4, 0x6f, 0xe4, 0xe3, 0xe5, 0xe5, 0xe5, 0xc4, 0xe7, 0xc4, 0xe7, + 0x05, 0xea, 0x07, 0xea, 0xa1, 0xec, 0xa3, 0xec, 0x8a, 0xef, 0x8b, 0xef, + 0xae, 0xf2, 0xb0, 0xf2, 0x00, 0xf6, 0x03, 0xf6, 0x6b, 0xf9, 0x6d, 0xf9, + 0xd8, 0xfc, 0xd9, 0xfc, 0x36, 0x00, 0x38, 0x00, 0x73, 0x03, 0x75, 0x03, + 0x7f, 0x06, 0x80, 0x06, 0x47, 0x09, 0x4a, 0x09, 0xc6, 0x0b, 0xc6, 0x0b, + 0xea, 0x0d, 0xeb, 0x0d, 0xb0, 0x0f, 0xb2, 0x0f, 0x10, 0x11, 0x0f, 0x11, + 0x03, 0x12, 0x06, 0x12, 0x89, 0x12, 0x8b, 0x12, 0x9f, 0x12, 0x9f, 0x12, + 0x43, 0x12, 0x45, 0x12, 0x79, 0x11, 0x79, 0x11, 0x42, 0x10, 0x44, 0x10, + 0xa2, 0x0e, 0xa3, 0x0e, 0xa2, 0x0c, 0xa2, 0x0c, 0x49, 0x0a, 0x4a, 0x0a, + 0xa2, 0x07, 0xa4, 0x07, 0xbf, 0x04, 0xbd, 0x04, 0xa7, 0x01, 0xaa, 0x01, + 0x77, 0xfe, 0x76, 0xfe, 0x34, 0xfb, 0x36, 0xfb, 0xfa, 0xf7, 0xfa, 0xf7, + 0xd2, 0xf4, 0xd3, 0xf4, 0xd2, 0xf1, 0xd1, 0xf1, 0x06, 0xef, 0x09, 0xef, + 0x7a, 0xec, 0x7b, 0xec, 0x40, 0xea, 0x41, 0xea, 0x59, 0xe8, 0x59, 0xe8, + 0xda, 0xe6, 0xda, 0xe6, 0xc2, 0xe5, 0xc2, 0xe5, 0x1c, 0xe5, 0x1e, 0xe5, + 0xec, 0xe4, 0xed, 0xe4, 0x31, 0xe5, 0x33, 0xe5, 0xf5, 0xe5, 0xf5, 0xe5, + 0x2d, 0xe7, 0x2f, 0xe7, 0xdf, 0xe8, 0xe0, 0xe8, 0xfc, 0xea, 0xfd, 0xea, + 0x7b, 0xed, 0x7d, 0xed, 0x57, 0xf0, 0x56, 0xf0, 0x71, 0xf3, 0x74, 0xf3, + 0xcd, 0xf6, 0xcc, 0xf6, 0x3c, 0xfa, 0x41, 0xfa, 0xca, 0xfd, 0xca, 0xfd, + 0x50, 0x01, 0x51, 0x01, 0xbe, 0x04, 0xc0, 0x04, 0x0f, 0x08, 0x0f, 0x08, + 0x24, 0x0b, 0x27, 0x0b, 0x03, 0x0e, 0x03, 0x0e, 0x97, 0x10, 0x99, 0x10, + 0xdc, 0x12, 0xdd, 0x12, 0xd0, 0x14, 0xd2, 0x14, 0x67, 0x16, 0x68, 0x16, + 0xa4, 0x17, 0xa5, 0x17, 0x7e, 0x18, 0x80, 0x18, 0xf5, 0x18, 0xf6, 0x18, + 0x03, 0x19, 0x06, 0x19, 0xa7, 0x18, 0xa9, 0x18, 0xe4, 0x17, 0xe6, 0x17, + 0xb4, 0x16, 0xb5, 0x16, 0x1a, 0x15, 0x1c, 0x15, 0x1d, 0x13, 0x1f, 0x13, + 0xc6, 0x10, 0xc7, 0x10, 0x1a, 0x0e, 0x1d, 0x0e, 0x2c, 0x0b, 0x2b, 0x0b, + 0x03, 0x08, 0x08, 0x08, 0xb7, 0x04, 0xb6, 0x04, 0x56, 0x01, 0x59, 0x01, + 0xf7, 0xfd, 0xf8, 0xfd, 0xac, 0xfa, 0xae, 0xfa, 0x87, 0xf7, 0x8a, 0xf7, + 0x9c, 0xf4, 0x9d, 0xf4, 0xf5, 0xf1, 0xf7, 0xf1, 0xa5, 0xef, 0xa6, 0xef, + 0xb0, 0xed, 0xb3, 0xed, 0x29, 0xec, 0x28, 0xec, 0x0b, 0xeb, 0x0d, 0xeb, + 0x66, 0xea, 0x66, 0xea, 0x38, 0xea, 0x3a, 0xea, 0x85, 0xea, 0x87, 0xea, + 0x4e, 0xeb, 0x4f, 0xeb, 0x92, 0xec, 0x94, 0xec, 0x4b, 0xee, 0x4b, 0xee, + 0x71, 0xf0, 0x72, 0xf0, 0xfa, 0xf2, 0xfb, 0xf2, 0xdd, 0xf5, 0xdb, 0xf5, + 0x05, 0xf9, 0x06, 0xf9, 0x67, 0xfc, 0x66, 0xfc, 0xee, 0xff, 0xf1, 0xff, + 0x89, 0x03, 0x89, 0x03, 0x28, 0x07, 0x29, 0x07, 0xb4, 0x0a, 0xb5, 0x0a, + 0x21, 0x0e, 0x21, 0x0e, 0x5e, 0x11, 0x5f, 0x11, 0x60, 0x14, 0x60, 0x14, + 0x19, 0x17, 0x1b, 0x17, 0x81, 0x19, 0x7f, 0x19, 0x8e, 0x1b, 0x8f, 0x1b, + 0x3a, 0x1d, 0x3b, 0x1d, 0x7f, 0x1e, 0x7f, 0x1e, 0x57, 0x1f, 0x58, 0x1f, + 0xb7, 0x1f, 0xb7, 0x1f, 0xa4, 0x1f, 0xa6, 0x1f, 0x13, 0x1f, 0x13, 0x1f, + 0x0a, 0x1e, 0x0c, 0x1e, 0x85, 0x1c, 0x84, 0x1c, 0x83, 0x1a, 0x85, 0x1a, + 0x13, 0x18, 0x14, 0x18, 0x36, 0x15, 0x35, 0x15, 0x01, 0x12, 0x03, 0x12, + 0x86, 0x0e, 0x86, 0x0e, 0xd3, 0x0a, 0xd4, 0x0a, 0x06, 0x07, 0x07, 0x07, + 0x2b, 0x03, 0x2c, 0x03, 0x5e, 0xff, 0x5f, 0xff, 0xb3, 0xfb, 0xb3, 0xfb, + 0x37, 0xf8, 0x38, 0xf8, 0x01, 0xf5, 0x00, 0xf5, 0x15, 0xf2, 0x17, 0xf2, + 0x84, 0xef, 0x83, 0xef, 0x56, 0xed, 0x57, 0xed, 0x8e, 0xeb, 0x8e, 0xeb, + 0x33, 0xea, 0x32, 0xea, 0x46, 0xe9, 0x48, 0xe9, 0xcc, 0xe8, 0xcc, 0xe8, + 0xc3, 0xe8, 0xc3, 0xe8, 0x2e, 0xe9, 0x2f, 0xe9, 0x0b, 0xea, 0x0c, 0xea, + 0x5a, 0xeb, 0x59, 0xeb, 0x0f, 0xed, 0x10, 0xed, 0x2c, 0xef, 0x2c, 0xef, + 0xa3, 0xf1, 0xa3, 0xf1, 0x6a, 0xf4, 0x6a, 0xf4, 0x76, 0xf7, 0x76, 0xf7, + 0xb4, 0xfa, 0xb3, 0xfa, 0x14, 0xfe, 0x18, 0xfe, 0x88, 0x01, 0x85, 0x01, + 0xf2, 0x04, 0xf5, 0x04, 0x47, 0x08, 0x4a, 0x08, 0x79, 0x0b, 0x78, 0x0b, + 0x6b, 0x0e, 0x6e, 0x0e, 0x1c, 0x11, 0x1b, 0x11, 0x71, 0x13, 0x72, 0x13, + 0x68, 0x15, 0x69, 0x15, 0xf6, 0x16, 0xf8, 0x16, 0x13, 0x18, 0x12, 0x18, + 0xb4, 0x18, 0xb6, 0x18, 0xdf, 0x18, 0xdd, 0x18, 0x83, 0x18, 0x86, 0x18, + 0xb2, 0x17, 0xb2, 0x17, 0x5e, 0x16, 0x5e, 0x16, 0x99, 0x14, 0x9c, 0x14, + 0x66, 0x12, 0x66, 0x12, 0xd3, 0x0f, 0xd5, 0x0f, 0xee, 0x0c, 0xef, 0x0c, + 0xc2, 0x09, 0xc4, 0x09, 0x66, 0x06, 0x66, 0x06, 0xe5, 0x02, 0xe6, 0x02, + 0x56, 0xff, 0x56, 0xff, 0xc8, 0xfb, 0xca, 0xfb, 0x51, 0xf8, 0x50, 0xf8, + 0xfa, 0xf4, 0xfb, 0xf4, 0xd5, 0xf1, 0xd6, 0xf1, 0xef, 0xee, 0xf0, 0xee, + 0x4f, 0xec, 0x50, 0xec, 0x00, 0xea, 0x00, 0xea, 0x09, 0xe8, 0x0a, 0xe8, + 0x6e, 0xe6, 0x6f, 0xe6, 0x38, 0xe5, 0x38, 0xe5, 0x69, 0xe4, 0x6a, 0xe4, + 0x05, 0xe4, 0x06, 0xe4, 0x10, 0xe4, 0x0f, 0xe4, 0x8a, 0xe4, 0x8c, 0xe4, + 0x75, 0xe5, 0x75, 0xe5, 0xd4, 0xe6, 0xd5, 0xe6, 0x98, 0xe8, 0x98, 0xe8, + 0xc5, 0xea, 0xc6, 0xea, 0x50, 0xed, 0x4f, 0xed, 0x27, 0xf0, 0x29, 0xf0, + 0x47, 0xf3, 0x46, 0xf3, 0x92, 0xf6, 0x92, 0xf6, 0xfd, 0xf9, 0xff, 0xf9, + 0x73, 0xfd, 0x72, 0xfd, 0xdb, 0x00, 0xdc, 0x00, 0x27, 0x04, 0x28, 0x04, + 0x44, 0x07, 0x44, 0x07, 0x22, 0x0a, 0x24, 0x0a, 0xb4, 0x0c, 0xb3, 0x0c, + 0xec, 0x0e, 0xec, 0x0e, 0xc4, 0x10, 0xc4, 0x10, 0x32, 0x12, 0x32, 0x12, + 0x32, 0x13, 0x32, 0x13, 0xbc, 0x13, 0xbb, 0x13, 0xd3, 0x13, 0xd3, 0x13, + 0x6f, 0x13, 0x70, 0x13, 0x97, 0x12, 0x97, 0x12, 0x4c, 0x11, 0x4a, 0x11, + 0x8a, 0x0f, 0x8c, 0x0f, 0x68, 0x0d, 0x66, 0x0d, 0xdd, 0x0a, 0xdf, 0x0a, + 0x03, 0x08, 0x02, 0x08, 0xe5, 0x04, 0xe5, 0x04, 0x94, 0x01, 0x94, 0x01, + 0x20, 0xfe, 0x22, 0xfe, 0xa0, 0xfa, 0x9f, 0xfa, 0x22, 0xf7, 0x22, 0xf7, + 0xb6, 0xf3, 0xb9, 0xf3, 0x79, 0xf0, 0x77, 0xf0, 0x6c, 0xed, 0x6e, 0xed, + 0xa6, 0xea, 0xa6, 0xea, 0x30, 0xe8, 0x2e, 0xe8, 0x10, 0xe6, 0x13, 0xe6, + 0x5c, 0xe4, 0x59, 0xe4, 0x0d, 0xe3, 0x0b, 0xe3, 0x32, 0xe2, 0x34, 0xe2, + 0xd5, 0xe1, 0xd4, 0xe1, 0xed, 0xe1, 0xef, 0xe1, 0x8e, 0xe2, 0x8b, 0xe2, + 0xaa, 0xe3, 0xaa, 0xe3, 0x4c, 0xe5, 0x4c, 0xe5, 0x67, 0xe7, 0x67, 0xe7, + 0xf8, 0xe9, 0xf9, 0xe9, 0xee, 0xec, 0xee, 0xec, 0x3d, 0xf0, 0x3c, 0xf0, + 0xcf, 0xf3, 0xcf, 0xf3, 0x94, 0xf7, 0x93, 0xf7, 0x74, 0xfb, 0x74, 0xfb, + 0x5d, 0xff, 0x5d, 0xff, 0x3b, 0x03, 0x38, 0x03, 0xf7, 0x06, 0xf9, 0x06, + 0x85, 0x0a, 0x83, 0x0a, 0xd2, 0x0d, 0xd1, 0x0d, 0xd0, 0x10, 0xd0, 0x10, + 0x79, 0x13, 0x79, 0x13, 0xc6, 0x15, 0xc6, 0x15, 0xb2, 0x17, 0xb1, 0x17, + 0x36, 0x19, 0x37, 0x19, 0x59, 0x1a, 0x56, 0x1a, 0x0a, 0x1b, 0x0a, 0x1b, + 0x51, 0x1b, 0x50, 0x1b, 0x26, 0x1b, 0x25, 0x1b, 0x8d, 0x1a, 0x8d, 0x1a, + 0x81, 0x19, 0x81, 0x19, 0x08, 0x18, 0x06, 0x18, 0x20, 0x16, 0x1f, 0x16, + 0xd2, 0x13, 0xd1, 0x13, 0x28, 0x11, 0x27, 0x11, 0x2c, 0x0e, 0x2c, 0x0e, + 0xec, 0x0a, 0xec, 0x0a, 0x7c, 0x07, 0x7b, 0x07, 0xea, 0x03, 0xeb, 0x03, + 0x52, 0x00, 0x50, 0x00, 0xbe, 0xfc, 0xbf, 0xfc, 0x4e, 0xf9, 0x4e, 0xf9, + 0x0d, 0xf6, 0x0c, 0xf6, 0x0d, 0xf3, 0x0d, 0xf3, 0x61, 0xf0, 0x60, 0xf0, + 0x0c, 0xee, 0x0b, 0xee, 0x22, 0xec, 0x21, 0xec, 0xa8, 0xea, 0xa6, 0xea, + 0xa1, 0xe9, 0xa1, 0xe9, 0x16, 0xe9, 0x17, 0xe9, 0x08, 0xe9, 0x05, 0xe9, + 0x75, 0xe9, 0x78, 0xe9, 0x65, 0xea, 0x63, 0xea, 0xcd, 0xeb, 0xce, 0xeb, + 0xae, 0xed, 0xac, 0xed, 0xf8, 0xef, 0xf7, 0xef, 0xa6, 0xf2, 0xa5, 0xf2, + 0xa4, 0xf5, 0xa4, 0xf5, 0xed, 0xf8, 0xeb, 0xf8, 0x63, 0xfc, 0x62, 0xfc, + 0xfb, 0xff, 0xfa, 0xff, 0xa1, 0x03, 0xa1, 0x03, 0x41, 0x07, 0x3f, 0x07, + 0xcb, 0x0a, 0xcd, 0x0a, 0x2e, 0x0e, 0x2c, 0x0e, 0x5c, 0x11, 0x5b, 0x11, + 0x49, 0x14, 0x48, 0x14, 0xe6, 0x16, 0xe5, 0x16, 0x2f, 0x19, 0x2e, 0x19, + 0x16, 0x1b, 0x17, 0x1b, 0x9d, 0x1c, 0x9b, 0x1c, 0xb2, 0x1d, 0xb2, 0x1d, + 0x5b, 0x1e, 0x5b, 0x1e, 0x8d, 0x1e, 0x8a, 0x1e, 0x43, 0x1e, 0x45, 0x1e, + 0x86, 0x1d, 0x83, 0x1d, 0x47, 0x1c, 0x46, 0x1c, 0x98, 0x1a, 0x98, 0x1a, + 0x70, 0x18, 0x6e, 0x18, 0xe0, 0x15, 0xe1, 0x15, 0xf4, 0x12, 0xf3, 0x12, + 0xb7, 0x0f, 0xb8, 0x0f, 0x44, 0x0c, 0x42, 0x0c, 0xa6, 0x08, 0xa7, 0x08, + 0xf9, 0x04, 0xf7, 0x04, 0x4e, 0x01, 0x4e, 0x01, 0xba, 0xfd, 0xba, 0xfd, + 0x53, 0xfa, 0x53, 0xfa, 0x23, 0xf7, 0x22, 0xf7, 0x3c, 0xf4, 0x3c, 0xf4, + 0xa9, 0xf1, 0xa9, 0xf1, 0x72, 0xef, 0x71, 0xef, 0xa0, 0xed, 0xa1, 0xed, + 0x38, 0xec, 0x37, 0xec, 0x3d, 0xeb, 0x3e, 0xeb, 0xb6, 0xea, 0xb6, 0xea, + 0x9f, 0xea, 0x9f, 0xea, 0xfc, 0xea, 0xfc, 0xea, 0xcc, 0xeb, 0xcb, 0xeb, + 0x0a, 0xed, 0x0c, 0xed, 0xb8, 0xee, 0xb7, 0xee, 0xc7, 0xf0, 0xc7, 0xf0, + 0x35, 0xf3, 0x33, 0xf3, 0xf1, 0xf5, 0xf2, 0xf5, 0xf4, 0xf8, 0xf2, 0xf8, + 0x2a, 0xfc, 0x29, 0xfc, 0x80, 0xff, 0x81, 0xff, 0xe9, 0x02, 0xe6, 0x02, + 0x48, 0x06, 0x48, 0x06, 0x97, 0x09, 0x97, 0x09, 0xb7, 0x0c, 0xb8, 0x0c, + 0xa2, 0x0f, 0xa2, 0x0f, 0x47, 0x12, 0x46, 0x12, 0x91, 0x14, 0x92, 0x14, + 0x83, 0x16, 0x84, 0x16, 0x07, 0x18, 0x06, 0x18, 0x1b, 0x19, 0x1d, 0x19, + 0xb8, 0x19, 0xb8, 0x19, 0xd6, 0x19, 0xd6, 0x19, 0x74, 0x19, 0x76, 0x19, + 0x91, 0x18, 0x91, 0x18, 0x2f, 0x17, 0x32, 0x17, 0x52, 0x15, 0x52, 0x15, + 0x06, 0x13, 0x07, 0x13, 0x51, 0x10, 0x52, 0x10, 0x49, 0x0d, 0x49, 0x0d, + 0xf9, 0x09, 0xfb, 0x09, 0x71, 0x06, 0x71, 0x06, 0xca, 0x02, 0xcb, 0x02, + 0x10, 0xff, 0x11, 0xff, 0x5b, 0xfb, 0x5b, 0xfb, 0xb9, 0xf7, 0xb9, 0xf7, + 0x3c, 0xf4, 0x3d, 0xf4, 0xf3, 0xf0, 0xf2, 0xf0, 0xe8, 0xed, 0xeb, 0xed, + 0x2b, 0xeb, 0x2a, 0xeb, 0xbe, 0xe8, 0xbf, 0xe8, 0xab, 0xe6, 0xac, 0xe6, + 0xf9, 0xe4, 0xf9, 0xe4, 0xab, 0xe3, 0xac, 0xe3, 0xc8, 0xe2, 0xc7, 0xe2, + 0x52, 0xe2, 0x53, 0xe2, 0x4f, 0xe2, 0x4f, 0xe2, 0xc0, 0xe2, 0xbf, 0xe2, + 0xa7, 0xe3, 0xa8, 0xe3, 0x07, 0xe5, 0x06, 0xe5, 0xd4, 0xe6, 0xd5, 0xe6, + 0x15, 0xe9, 0x13, 0xe9, 0xb2, 0xeb, 0xb4, 0xeb, 0xb4, 0xee, 0xb2, 0xee, + 0xfb, 0xf1, 0xfb, 0xf1, 0x7b, 0xf5, 0x7c, 0xf5, 0x23, 0xf9, 0x23, 0xf9, + 0xd3, 0xfc, 0xd4, 0xfc, 0x81, 0x00, 0x81, 0x00, 0x15, 0x04, 0x13, 0x04, + 0x75, 0x07, 0x77, 0x07, 0xa0, 0x0a, 0x9f, 0x0a, 0x74, 0x0d, 0x74, 0x0d, + 0xf6, 0x0f, 0xf8, 0x0f, 0x11, 0x12, 0x0e, 0x12, 0xc2, 0x13, 0xc2, 0x13, + 0x03, 0x15, 0x03, 0x15, 0xcb, 0x15, 0xcb, 0x15, 0x1c, 0x16, 0x1e, 0x16, + 0xf2, 0x15, 0xf1, 0x15, 0x4c, 0x15, 0x4d, 0x15, 0x2d, 0x14, 0x2c, 0x14, + 0x98, 0x12, 0x99, 0x12, 0x8e, 0x10, 0x8e, 0x10, 0x1a, 0x0e, 0x1c, 0x0e, + 0x4a, 0x0b, 0x4a, 0x0b, 0x26, 0x08, 0x26, 0x08, 0xc6, 0x04, 0xc6, 0x04, + 0x31, 0x01, 0x33, 0x01, 0x88, 0xfd, 0x88, 0xfd, 0xd4, 0xf9, 0xd3, 0xf9, + 0x2c, 0xf6, 0x2c, 0xf6, 0xa7, 0xf2, 0xa5, 0xf2, 0x4a, 0xef, 0x4c, 0xef, + 0x32, 0xec, 0x31, 0xec, 0x63, 0xe9, 0x64, 0xe9, 0xed, 0xe6, 0xec, 0xe6, + 0xd7, 0xe4, 0xd8, 0xe4, 0x2b, 0xe3, 0x2a, 0xe3, 0xf6, 0xe1, 0xf5, 0xe1, + 0x31, 0xe1, 0x32, 0xe1, 0xf1, 0xe0, 0xef, 0xe0, 0x2c, 0xe1, 0x2c, 0xe1, + 0xea, 0xe1, 0xe9, 0xe1, 0x2c, 0xe3, 0x2b, 0xe3, 0xec, 0xe4, 0xed, 0xe4, + 0x2b, 0xe7, 0x29, 0xe7, 0xd3, 0xe9, 0xd4, 0xe9, 0xdf, 0xec, 0xde, 0xec, + 0x3d, 0xf0, 0x3c, 0xf0, 0xd5, 0xf3, 0xd5, 0xf3, 0x9a, 0xf7, 0x9a, 0xf7, + 0x74, 0xfb, 0x73, 0xfb, 0x4b, 0xff, 0x4e, 0xff, 0x17, 0x03, 0x15, 0x03, + 0xb4, 0x06, 0xb6, 0x06, 0x21, 0x0a, 0x1f, 0x0a, 0x44, 0x0d, 0x45, 0x0d, + 0x1c, 0x10, 0x1d, 0x10, 0x9a, 0x12, 0x9a, 0x12, 0xbe, 0x14, 0xbe, 0x14, + 0x7d, 0x16, 0x7d, 0x16, 0xd8, 0x17, 0xd7, 0x17, 0xc9, 0x18, 0xcb, 0x18, + 0x4c, 0x19, 0x4c, 0x19, 0x64, 0x19, 0x64, 0x19, 0x06, 0x19, 0x08, 0x19, + 0x41, 0x18, 0x40, 0x18, 0x05, 0x17, 0x04, 0x17, 0x5c, 0x15, 0x5f, 0x15, + 0x54, 0x13, 0x51, 0x13, 0xe4, 0x10, 0xe5, 0x10, 0x26, 0x0e, 0x26, 0x0e, + 0x20, 0x0b, 0x20, 0x0b, 0xe2, 0x07, 0xe3, 0x07, 0x7f, 0x04, 0x81, 0x04, + 0x0e, 0x01, 0x0d, 0x01, 0x9f, 0xfd, 0xa0, 0xfd, 0x48, 0xfa, 0x48, 0xfa, + 0x1a, 0xf7, 0x1a, 0xf7, 0x28, 0xf4, 0x2a, 0xf4, 0x84, 0xf1, 0x84, 0xf1, + 0x33, 0xef, 0x34, 0xef, 0x46, 0xed, 0x46, 0xed, 0xc4, 0xeb, 0xc4, 0xeb, + 0xb5, 0xea, 0xb6, 0xea, 0x20, 0xea, 0x1f, 0xea, 0x00, 0xea, 0x02, 0xea, + 0x64, 0xea, 0x63, 0xea, 0x41, 0xeb, 0x40, 0xeb, 0x98, 0xec, 0x98, 0xec, + 0x65, 0xee, 0x67, 0xee, 0x9e, 0xf0, 0x9b, 0xf0, 0x39, 0xf3, 0x3b, 0xf3, + 0x28, 0xf6, 0x26, 0xf6, 0x5c, 0xf9, 0x5f, 0xf9, 0xc7, 0xfc, 0xc4, 0xfc, + 0x4e, 0x00, 0x4f, 0x00, 0xe9, 0x03, 0xe9, 0x03, 0x7e, 0x07, 0x7f, 0x07, + 0x02, 0x0b, 0xff, 0x0a, 0x5c, 0x0e, 0x5e, 0x0e, 0x87, 0x11, 0x85, 0x11, + 0x70, 0x14, 0x71, 0x14, 0x0d, 0x17, 0x0d, 0x17, 0x54, 0x19, 0x53, 0x19, + 0x40, 0x1b, 0x41, 0x1b, 0xc3, 0x1c, 0xc4, 0x1c, 0xe1, 0x1d, 0xe1, 0x1d, + 0x86, 0x1e, 0x86, 0x1e, 0xbb, 0x1e, 0xba, 0x1e, 0x6e, 0x1e, 0x6f, 0x1e, + 0xaa, 0x1d, 0xa8, 0x1d, 0x64, 0x1c, 0x66, 0x1c, 0xa4, 0x1a, 0xa3, 0x1a, + 0x6a, 0x18, 0x6a, 0x18, 0xc3, 0x15, 0xc2, 0x15, 0xb9, 0x12, 0xb9, 0x12, + 0x60, 0x0f, 0x60, 0x0f, 0xc5, 0x0b, 0xc3, 0x0b, 0x03, 0x08, 0x06, 0x08, + 0x2f, 0x04, 0x2e, 0x04, 0x5e, 0x00, 0x5f, 0x00, 0xa4, 0xfc, 0xa3, 0xfc, + 0x13, 0xf9, 0x14, 0xf9, 0xc5, 0xf5, 0xc6, 0xf5, 0xb9, 0xf2, 0xba, 0xf2, + 0x0d, 0xf0, 0x0d, 0xf0, 0xba, 0xed, 0xba, 0xed, 0xd3, 0xeb, 0xd2, 0xeb, + 0x58, 0xea, 0x59, 0xea, 0x4d, 0xe9, 0x4d, 0xe9, 0xba, 0xe8, 0xbc, 0xe8, + 0x9b, 0xe8, 0x9b, 0xe8, 0xf8, 0xe8, 0xf9, 0xe8, 0xcb, 0xe9, 0xc9, 0xe9, + 0x15, 0xeb, 0x16, 0xeb, 0xd4, 0xec, 0xd4, 0xec, 0xff, 0xee, 0xfe, 0xee, + 0x8f, 0xf1, 0x91, 0xf1, 0x7d, 0xf4, 0x7b, 0xf4, 0xb6, 0xf7, 0xb8, 0xf7, + 0x30, 0xfb, 0x2f, 0xfb, 0xd3, 0xfe, 0xd4, 0xfe, 0x8e, 0x02, 0x8e, 0x02, + 0x4b, 0x06, 0x4a, 0x06, 0xf6, 0x09, 0xf6, 0x09, 0x79, 0x0d, 0x7a, 0x0d, + 0xc9, 0x10, 0xc9, 0x10, 0xce, 0x13, 0xce, 0x13, 0x7e, 0x16, 0x7e, 0x16, + 0xcb, 0x18, 0xcb, 0x18, 0xab, 0x1a, 0xac, 0x1a, 0x17, 0x1c, 0x17, 0x1c, + 0x05, 0x1d, 0x04, 0x1d, 0x70, 0x1d, 0x71, 0x1d, 0x55, 0x1d, 0x54, 0x1d, + 0xaf, 0x1c, 0xb1, 0x1c, 0x82, 0x1b, 0x80, 0x1b, 0xca, 0x19, 0xca, 0x19, + 0x96, 0x17, 0x95, 0x17, 0xed, 0x14, 0xee, 0x14, 0xdf, 0x11, 0xde, 0x11, + 0x7a, 0x0e, 0x7a, 0x0e, 0xd3, 0x0a, 0xd3, 0x0a, 0xfb, 0x06, 0xf9, 0x06, + 0x04, 0x03, 0x08, 0x03, 0x0a, 0xff, 0x08, 0xff, 0x19, 0xfb, 0x1b, 0xfb, + 0x47, 0xf7, 0x45, 0xf7, 0xa3, 0xf3, 0xa3, 0xf3, 0x3d, 0xf0, 0x3e, 0xf0, + 0x21, 0xed, 0x20, 0xed, 0x58, 0xea, 0x59, 0xea, 0xe8, 0xe7, 0xe6, 0xe7, + 0xd7, 0xe5, 0xd7, 0xe5, 0x32, 0xe4, 0x30, 0xe4, 0xf2, 0xe2, 0xf3, 0xe2, + 0x23, 0xe2, 0x22, 0xe2, 0xc7, 0xe1, 0xc5, 0xe1, 0xdc, 0xe1, 0xdc, 0xe1, + 0x6e, 0xe2, 0x6c, 0xe2, 0x73, 0xe3, 0x73, 0xe3, 0xf3, 0xe4, 0xf2, 0xe4, + 0xe0, 0xe6, 0xe0, 0xe6, 0x3f, 0xe9, 0x3f, 0xe9, 0xfd, 0xeb, 0xfc, 0xeb, + 0x15, 0xef, 0x14, 0xef, 0x71, 0xf2, 0x72, 0xf2, 0x04, 0xf6, 0x03, 0xf6, + 0xb5, 0xf9, 0xb6, 0xf9, 0x6d, 0xfd, 0x6c, 0xfd, 0x1b, 0x01, 0x1b, 0x01, + 0xa5, 0x04, 0xa5, 0x04, 0xfd, 0x07, 0xfe, 0x07, 0x11, 0x0b, 0x0f, 0x0b, + 0xd0, 0x0d, 0xd1, 0x0d, 0x32, 0x10, 0x33, 0x10, 0x29, 0x12, 0x2a, 0x12, + 0xb6, 0x13, 0xb5, 0x13, 0xc8, 0x14, 0xc9, 0x14, 0x63, 0x15, 0x60, 0x15, + 0x7f, 0x15, 0x7e, 0x15, 0x1e, 0x15, 0x1d, 0x15, 0x41, 0x14, 0x42, 0x14, + 0xeb, 0x12, 0xeb, 0x12, 0x1d, 0x11, 0x1c, 0x11, 0xe3, 0x0e, 0xe3, 0x0e, + 0x44, 0x0c, 0x42, 0x0c, 0x4f, 0x09, 0x4f, 0x09, 0x15, 0x06, 0x13, 0x06, + 0xa5, 0x02, 0xa5, 0x02, 0x16, 0xff, 0x15, 0xff, 0x76, 0xfb, 0x76, 0xfb, + 0xdc, 0xf7, 0xdb, 0xf7, 0x57, 0xf4, 0x58, 0xf4, 0x00, 0xf1, 0xfe, 0xf0, + 0xdf, 0xed, 0xdf, 0xed, 0x04, 0xeb, 0x02, 0xeb, 0x7e, 0xe8, 0x7c, 0xe8, + 0x51, 0xe6, 0x52, 0xe6, 0x8e, 0xe4, 0x8c, 0xe4, 0x3b, 0xe3, 0x3a, 0xe3, + 0x5a, 0xe2, 0x59, 0xe2, 0xf5, 0xe1, 0xf3, 0xe1, 0x0f, 0xe2, 0x0e, 0xe2, + 0xac, 0xe2, 0xaa, 0xe2, 0xcb, 0xe3, 0xcb, 0xe3, 0x6d, 0xe5, 0x6c, 0xe5, + 0x89, 0xe7, 0x88, 0xe7, 0x17, 0xea, 0x16, 0xea, 0x09, 0xed, 0x07, 0xed, + 0x53, 0xf0, 0x52, 0xf0, 0xdc, 0xf3, 0xdb, 0xf3, 0x92, 0xf7, 0x92, 0xf7, + 0x63, 0xfb, 0x61, 0xfb, 0x36, 0xff, 0x36, 0xff, 0xfc, 0x02, 0xfa, 0x02, + 0x9b, 0x06, 0x9a, 0x06, 0x08, 0x0a, 0x07, 0x0a, 0x33, 0x0d, 0x32, 0x0d, + 0x0d, 0x10, 0x0d, 0x10, 0x91, 0x12, 0x8f, 0x12, 0xb0, 0x14, 0xaf, 0x14, + 0x6e, 0x16, 0x6d, 0x16, 0xc2, 0x17, 0xc2, 0x17, 0xab, 0x18, 0xaa, 0x18, + 0x27, 0x19, 0x24, 0x19, 0x2d, 0x19, 0x2d, 0x19, 0xc6, 0x18, 0xc4, 0x18, + 0xe8, 0x17, 0xe6, 0x17, 0x9a, 0x16, 0x9a, 0x16, 0xdb, 0x14, 0xda, 0x14, + 0xb3, 0x12, 0xb1, 0x12, 0x27, 0x10, 0x25, 0x10, 0x44, 0x0d, 0x41, 0x0d, + 0x15, 0x0a, 0x14, 0x0a, 0xad, 0x06, 0xaa, 0x06, 0x1c, 0x03, 0x1c, 0x03, + 0x7c, 0xff, 0x79, 0xff, 0xd9, 0xfb, 0xd9, 0xfb, 0x55, 0xf8, 0x52, 0xf8, + 0xf5, 0xf4, 0xf2, 0xf4, 0xd5, 0xf1, 0xd4, 0xf1, 0x03, 0xef, 0x02, 0xef, + 0x88, 0xec, 0x85, 0xec, 0x76, 0xea, 0x76, 0xea, 0xd3, 0xe8, 0xd0, 0xe8, + 0xa9, 0xe7, 0xa7, 0xe7, 0xf9, 0xe6, 0xf7, 0xe6, 0xd1, 0xe6, 0xd0, 0xe6, + 0x29, 0xe7, 0x25, 0xe7, 0x07, 0xe8, 0x07, 0xe8, 0x6d, 0xe9, 0x69, 0xe9, + 0x4d, 0xeb, 0x4d, 0xeb, 0xab, 0xed, 0xa7, 0xed, 0x6e, 0xf0, 0x6c, 0xf0, + 0x92, 0xf3, 0x8f, 0xf3, 0x04, 0xf7, 0x03, 0xf7, 0xaf, 0xfa, 0xae, 0xfa, + 0x87, 0xfe, 0x84, 0xfe, 0x6c, 0x02, 0x69, 0x02, 0x56, 0x06, 0x55, 0x06, + 0x2a, 0x0a, 0x26, 0x0a, 0xd8, 0x0d, 0xd6, 0x0d, 0x54, 0x11, 0x51, 0x11, + 0x88, 0x14, 0x86, 0x14, 0x75, 0x17, 0x71, 0x17, 0x08, 0x1a, 0x08, 0x1a, + 0x3b, 0x1c, 0x37, 0x1c, 0x0d, 0x1e, 0x0d, 0x1e, 0x72, 0x1f, 0x6e, 0x1f, + 0x65, 0x20, 0x64, 0x20, 0xe4, 0x20, 0xe1, 0x20, 0xe6, 0x20, 0xe4, 0x20, + 0x6a, 0x20, 0x67, 0x20, 0x6f, 0x1f, 0x6c, 0x1f, 0xef, 0x1d, 0xee, 0x1d, + 0xf5, 0x1b, 0xf1, 0x1b, 0x7e, 0x19, 0x7e, 0x19, 0x96, 0x16, 0x93, 0x16, + 0x4c, 0x13, 0x4a, 0x13, 0xab, 0x0f, 0xaa, 0x0f, 0xd3, 0x0b, 0xd0, 0x0b, + 0xd1, 0x07, 0xd0, 0x07, 0xc2, 0x03, 0xc0, 0x03, 0xbe, 0xff, 0xba, 0xff, + 0xd2, 0xfb, 0xd1, 0xfb, 0x20, 0xf8, 0x1d, 0xf8, 0xaf, 0xf4, 0xad, 0xf4, + 0x93, 0xf1, 0x90, 0xf1, 0xd3, 0xee, 0xd2, 0xee, 0x7d, 0xec, 0x7a, 0xec, + 0x99, 0xea, 0x97, 0xea, 0x29, 0xe9, 0x24, 0xe9, 0x2f, 0xe8, 0x2d, 0xe8, + 0xb3, 0xe7, 0xb0, 0xe7, 0xb1, 0xe7, 0xaf, 0xe7, 0x33, 0xe8, 0x30, 0xe8, + 0x2b, 0xe9, 0x29, 0xe9, 0x9f, 0xea, 0x9c, 0xea, 0x88, 0xec, 0x85, 0xec, + 0xdc, 0xee, 0xda, 0xee, 0x96, 0xf1, 0x95, 0xf1, 0xaa, 0xf4, 0xa5, 0xf4, + 0x02, 0xf8, 0x00, 0xf8, 0x92, 0xfb, 0x91, 0xfb, 0x47, 0xff, 0x43, 0xff, + 0x06, 0x03, 0x05, 0x03, 0xc5, 0x06, 0xc1, 0x06, 0x63, 0x0a, 0x61, 0x0a, + 0xd9, 0x0d, 0xd7, 0x0d, 0x0f, 0x11, 0x0b, 0x11, 0xf9, 0x13, 0xf7, 0x13, + 0x88, 0x16, 0x86, 0x16, 0xb2, 0x18, 0xae, 0x18, 0x6c, 0x1a, 0x6a, 0x1a, + 0xb0, 0x1b, 0xae, 0x1b, 0x73, 0x1c, 0x6e, 0x1c, 0xb3, 0x1c, 0xb4, 0x1c, + 0x6e, 0x1c, 0x69, 0x1c, 0x9f, 0x1b, 0x9e, 0x1b, 0x48, 0x1a, 0x46, 0x1a, + 0x72, 0x18, 0x6d, 0x18, 0x1b, 0x16, 0x19, 0x16, 0x59, 0x13, 0x55, 0x13, + 0x34, 0x10, 0x31, 0x10, 0xc4, 0x0c, 0xc2, 0x0c, 0x1a, 0x09, 0x18, 0x09, + 0x53, 0x05, 0x4f, 0x05, 0x76, 0x01, 0x72, 0x01, 0xa0, 0xfd, 0x9d, 0xfd, + 0xe1, 0xf9, 0xdd, 0xf9, 0x48, 0xf6, 0x45, 0xf6, 0xe8, 0xf2, 0xe6, 0xf2, + 0xca, 0xef, 0xc5, 0xef, 0xfb, 0xec, 0xf7, 0xec, 0x82, 0xea, 0x7e, 0xea, + 0x63, 0xe8, 0x5e, 0xe8, 0xaa, 0xe6, 0xa6, 0xe6, 0x56, 0xe5, 0x52, 0xe5, + 0x6f, 0xe4, 0x6b, 0xe4, 0xf7, 0xe3, 0xf4, 0xe3, 0xf1, 0xe3, 0xec, 0xe3, + 0x62, 0xe4, 0x61, 0xe4, 0x46, 0xe5, 0x41, 0xe5, 0xa1, 0xe6, 0x9f, 0xe6, + 0x6d, 0xe8, 0x68, 0xe8, 0xa2, 0xea, 0xa0, 0xea, 0x3b, 0xed, 0x38, 0xed, + 0x2b, 0xf0, 0x28, 0xf0, 0x65, 0xf3, 0x60, 0xf3, 0xd2, 0xf6, 0xce, 0xf6, + 0x64, 0xfa, 0x60, 0xfa, 0x00, 0xfe, 0xfc, 0xfd, 0x95, 0x01, 0x92, 0x01, + 0x12, 0x05, 0x0c, 0x05, 0x58, 0x08, 0x55, 0x08, 0x65, 0x0b, 0x5f, 0x0b, + 0x1c, 0x0e, 0x17, 0x0e, 0x7b, 0x10, 0x77, 0x10, 0x71, 0x12, 0x6c, 0x12, + 0xfa, 0x13, 0xf7, 0x13, 0x0c, 0x15, 0x07, 0x15, 0xa6, 0x15, 0xa4, 0x15, + 0xbf, 0x15, 0xba, 0x15, 0x59, 0x15, 0x54, 0x15, 0x73, 0x14, 0x6f, 0x14, + 0x10, 0x13, 0x0a, 0x13, 0x34, 0x11, 0x2f, 0x11, 0xe2, 0x0e, 0xe0, 0x0e, + 0x31, 0x0c, 0x29, 0x0c, 0x20, 0x09, 0x1f, 0x09, 0xcf, 0x05, 0xc8, 0x05, + 0x40, 0x02, 0x3d, 0x02, 0x94, 0xfe, 0x90, 0xfe, 0xd8, 0xfa, 0xd2, 0xfa, + 0x1f, 0xf7, 0x1b, 0xf7, 0x80, 0xf3, 0x7b, 0xf3, 0x09, 0xf0, 0x05, 0xf0, + 0xca, 0xec, 0xc7, 0xec, 0xd6, 0xe9, 0xd2, 0xe9, 0x32, 0xe7, 0x2c, 0xe7, + 0xe9, 0xe4, 0xe5, 0xe4, 0x08, 0xe3, 0x03, 0xe3, 0x91, 0xe1, 0x8e, 0xe1, + 0x94, 0xe0, 0x8f, 0xe0, 0x0b, 0xe0, 0x08, 0xe0, 0x08, 0xe0, 0x02, 0xe0, + 0x81, 0xe0, 0x7e, 0xe0, 0x85, 0xe1, 0x80, 0xe1, 0x0e, 0xe3, 0x0b, 0xe3, + 0x19, 0xe5, 0x15, 0xe5, 0xa5, 0xe7, 0xa0, 0xe7, 0x9e, 0xea, 0x9a, 0xea, + 0xfe, 0xed, 0xf8, 0xed, 0xaa, 0xf1, 0xa6, 0xf1, 0x93, 0xf5, 0x8d, 0xf5, + 0xa0, 0xf9, 0x9b, 0xf9, 0xbc, 0xfd, 0xb9, 0xfd, 0xce, 0x01, 0xc8, 0x01, + 0xc3, 0x05, 0xbf, 0x05, 0x88, 0x09, 0x84, 0x09, 0x08, 0x0d, 0x05, 0x0d, + 0x3f, 0x10, 0x39, 0x10, 0x16, 0x13, 0x12, 0x13, 0x8c, 0x15, 0x87, 0x15, + 0x99, 0x17, 0x95, 0x17, 0x36, 0x19, 0x31, 0x19, 0x66, 0x1a, 0x61, 0x1a, + 0x1d, 0x1b, 0x19, 0x1b, 0x5f, 0x1b, 0x59, 0x1b, 0x26, 0x1b, 0x22, 0x1b, + 0x74, 0x1a, 0x6f, 0x1a, 0x4b, 0x19, 0x46, 0x19, 0xa7, 0x17, 0xa1, 0x17, + 0x92, 0x15, 0x8e, 0x15, 0x0f, 0x13, 0x08, 0x13, 0x2b, 0x10, 0x28, 0x10, + 0xf2, 0x0c, 0xeb, 0x0c, 0x6d, 0x09, 0x69, 0x09, 0xb8, 0x05, 0xb4, 0x05, + 0xe4, 0x01, 0xde, 0x01, 0x07, 0xfe, 0x03, 0xfe, 0x36, 0xfa, 0x32, 0xfa, + 0x8b, 0xf6, 0x86, 0xf6, 0x16, 0xf3, 0x0f, 0xf3, 0xe4, 0xef, 0xe1, 0xef, + 0x0f, 0xed, 0x07, 0xed, 0x96, 0xea, 0x93, 0xea, 0x91, 0xe8, 0x8b, 0xe8, + 0xff, 0xe6, 0xf9, 0xe6, 0xed, 0xe5, 0xe7, 0xe5, 0x5b, 0xe5, 0x57, 0xe5, + 0x4f, 0xe5, 0x48, 0xe5, 0xcd, 0xe5, 0xc8, 0xe5, 0xd0, 0xe6, 0xca, 0xe6, + 0x5d, 0xe8, 0x56, 0xe8, 0x66, 0xea, 0x61, 0xea, 0xe6, 0xec, 0xe0, 0xec, + 0xd4, 0xef, 0xcf, 0xef, 0x18, 0xf3, 0x13, 0xf3, 0xad, 0xf6, 0xa5, 0xf6, + 0x74, 0xfa, 0x70, 0xfa, 0x61, 0xfe, 0x5a, 0xfe, 0x5a, 0x02, 0x57, 0x02, + 0x4f, 0x06, 0x49, 0x06, 0x29, 0x0a, 0x22, 0x0a, 0xd9, 0x0d, 0xd4, 0x0d, + 0x4d, 0x11, 0x47, 0x11, 0x7b, 0x14, 0x75, 0x14, 0x55, 0x17, 0x52, 0x17, + 0xd4, 0x19, 0xcd, 0x19, 0xef, 0x1b, 0xeb, 0x1b, 0xa1, 0x1d, 0x9b, 0x1d, + 0xe3, 0x1e, 0xde, 0x1e, 0xb4, 0x1f, 0xad, 0x1f, 0x03, 0x20, 0xff, 0x1f, + 0xde, 0x1f, 0xd8, 0x1f, 0x30, 0x1f, 0x2b, 0x1f, 0x0a, 0x1e, 0x06, 0x1e, + 0x62, 0x1c, 0x5a, 0x1c, 0x3b, 0x1a, 0x37, 0x1a, 0xa5, 0x17, 0x9f, 0x17, + 0xa2, 0x14, 0x9d, 0x14, 0x47, 0x11, 0x42, 0x11, 0xa8, 0x0d, 0xa2, 0x0d, + 0xd4, 0x09, 0xcd, 0x09, 0xeb, 0x05, 0xe5, 0x05, 0xfb, 0x01, 0xf5, 0x01, + 0x21, 0xfe, 0x1b, 0xfe, 0x6e, 0xfa, 0x69, 0xfa, 0xf8, 0xf6, 0xf0, 0xf6, + 0xcc, 0xf3, 0xc8, 0xf3, 0xf9, 0xf0, 0xf3, 0xf0, 0x88, 0xee, 0x84, 0xee, + 0x88, 0xec, 0x80, 0xec, 0xf8, 0xea, 0xf0, 0xea, 0xdf, 0xe9, 0xd9, 0xe9, + 0x43, 0xe9, 0x3c, 0xe9, 0x24, 0xe9, 0x1d, 0xe9, 0x83, 0xe9, 0x7d, 0xe9, + 0x61, 0xea, 0x5c, 0xea, 0xba, 0xeb, 0xb3, 0xeb, 0x8b, 0xed, 0x86, 0xed, + 0xcc, 0xef, 0xc6, 0xef, 0x75, 0xf2, 0x6e, 0xf2, 0x76, 0xf5, 0x72, 0xf5, + 0xc8, 0xf8, 0xc1, 0xf8, 0x4f, 0xfc, 0x48, 0xfc, 0xfc, 0xff, 0xf7, 0xff, + 0xb9, 0x03, 0xb3, 0x03, 0x72, 0x07, 0x6e, 0x07, 0x13, 0x0b, 0x0d, 0x0b, + 0x8b, 0x0e, 0x82, 0x0e, 0xc1, 0x11, 0xbe, 0x11, 0xb1, 0x14, 0xaa, 0x14, + 0x46, 0x17, 0x40, 0x17, 0x74, 0x19, 0x70, 0x19, 0x37, 0x1b, 0x2f, 0x1b, + 0x80, 0x1c, 0x7d, 0x1c, 0x4c, 0x1d, 0x44, 0x1d, 0x94, 0x1d, 0x8f, 0x1d, + 0x51, 0x1d, 0x4b, 0x1d, 0x84, 0x1c, 0x7d, 0x1c, 0x29, 0x1b, 0x23, 0x1b, + 0x4a, 0x19, 0x43, 0x19, 0xe7, 0x16, 0xe0, 0x16, 0x0d, 0x14, 0x09, 0x14, + 0xce, 0x10, 0xc7, 0x10, 0x3b, 0x0d, 0x35, 0x0d, 0x65, 0x09, 0x5f, 0x09, + 0x68, 0x05, 0x62, 0x05, 0x58, 0x01, 0x53, 0x01, 0x4b, 0xfd, 0x45, 0xfd, + 0x58, 0xf9, 0x51, 0xf9, 0x8c, 0xf5, 0x86, 0xf5, 0xfc, 0xf1, 0xf5, 0xf1, + 0xb1, 0xee, 0xaa, 0xee, 0xba, 0xeb, 0xb5, 0xeb, 0x1b, 0xe9, 0x14, 0xe9, + 0xde, 0xe6, 0xd8, 0xe6, 0x0a, 0xe5, 0x02, 0xe5, 0x9e, 0xe3, 0x98, 0xe3, + 0xa5, 0xe2, 0x9f, 0xe2, 0x20, 0xe2, 0x1b, 0xe2, 0x13, 0xe2, 0x0d, 0xe2, + 0x84, 0xe2, 0x7d, 0xe2, 0x6e, 0xe3, 0x6b, 0xe3, 0xdb, 0xe4, 0xd3, 0xe4, + 0xbe, 0xe6, 0xba, 0xe6, 0x19, 0xe9, 0x10, 0xe9, 0xe0, 0xeb, 0xda, 0xeb, + 0x07, 0xef, 0xff, 0xee, 0x83, 0xf2, 0x7e, 0xf2, 0x3e, 0xf6, 0x36, 0xf6, + 0x1f, 0xfa, 0x1a, 0xfa, 0x13, 0xfe, 0x0b, 0xfe, 0xfe, 0x01, 0xfa, 0x01, + 0xd1, 0x05, 0xca, 0x05, 0x70, 0x09, 0x6c, 0x09, 0xcf, 0x0c, 0xca, 0x0c, + 0xdc, 0x0f, 0xd6, 0x0f, 0x84, 0x12, 0x80, 0x12, 0xc8, 0x14, 0xc0, 0x14, + 0x8f, 0x16, 0x8c, 0x16, 0xe4, 0x17, 0xdc, 0x17, 0xb4, 0x18, 0xaf, 0x18, + 0xff, 0x18, 0xf9, 0x18, 0xc6, 0x18, 0xc0, 0x18, 0x02, 0x18, 0xfd, 0x17, + 0xbb, 0x16, 0xb4, 0x16, 0xea, 0x14, 0xe5, 0x14, 0x9f, 0x12, 0x98, 0x12, + 0xda, 0x0f, 0xd5, 0x0f, 0xb2, 0x0c, 0xac, 0x0c, 0x31, 0x09, 0x2c, 0x09, + 0x6e, 0x05, 0x66, 0x05, 0x77, 0x01, 0x73, 0x01, 0x6a, 0xfd, 0x62, 0xfd, + 0x57, 0xf9, 0x51, 0xf9, 0x53, 0xf5, 0x4e, 0xf5, 0x77, 0xf1, 0x72, 0xf1, + 0xd4, 0xed, 0xcc, 0xed, 0x73, 0xea, 0x6e, 0xea, 0x6a, 0xe7, 0x63, 0xe7, + 0xbc, 0xe4, 0xb6, 0xe4, 0x76, 0xe2, 0x71, 0xe2, 0xa6, 0xe0, 0x9f, 0xe0, + 0x48, 0xdf, 0x43, 0xdf, 0x6b, 0xde, 0x65, 0xde, 0x11, 0xde, 0x0a, 0xde, + 0x3e, 0xde, 0x39, 0xde, 0xf4, 0xde, 0xed, 0xde, 0x37, 0xe0, 0x31, 0xe0, + 0x03, 0xe2, 0xfe, 0xe1, 0x56, 0xe4, 0x4f, 0xe4, 0x28, 0xe7, 0x22, 0xe7, + 0x65, 0xea, 0x5e, 0xea, 0x02, 0xee, 0xfb, 0xed, 0xe8, 0xf1, 0xe2, 0xf1, + 0xfe, 0xf5, 0xf7, 0xf5, 0x33, 0xfa, 0x2b, 0xfa, 0x65, 0xfe, 0x5f, 0xfe, + 0x89, 0x02, 0x82, 0x02, 0x81, 0x06, 0x7a, 0x06, 0x3f, 0x0a, 0x38, 0x0a, + 0xb2, 0x0d, 0xab, 0x0d, 0xcb, 0x10, 0xc6, 0x10, 0x86, 0x13, 0x7e, 0x13, + 0xd0, 0x15, 0xc9, 0x15, 0xb1, 0x17, 0xab, 0x17, 0x1a, 0x19, 0x13, 0x19, + 0x0e, 0x1a, 0x09, 0x1a, 0x8b, 0x1a, 0x83, 0x1a, 0x88, 0x1a, 0x82, 0x1a, + 0x0f, 0x1a, 0x07, 0x1a, 0x14, 0x19, 0x0e, 0x19, 0xa4, 0x17, 0x9e, 0x17, + 0xba, 0x15, 0xb5, 0x15, 0x61, 0x13, 0x5c, 0x13, 0xa2, 0x10, 0x9c, 0x10, + 0x89, 0x0d, 0x81, 0x0d, 0x21, 0x0a, 0x1b, 0x0a, 0x82, 0x06, 0x7a, 0x06, + 0xbd, 0x02, 0xb7, 0x02, 0xeb, 0xfe, 0xe3, 0xfe, 0x1e, 0xfb, 0x19, 0xfb, + 0x70, 0xf7, 0x6a, 0xf7, 0xf5, 0xf3, 0xee, 0xf3, 0xbe, 0xf0, 0xb6, 0xf0, + 0xd9, 0xed, 0xd3, 0xed, 0x56, 0xeb, 0x4f, 0xeb, 0x3f, 0xe9, 0x36, 0xe9, + 0x9e, 0xe7, 0x99, 0xe7, 0x7c, 0xe6, 0x74, 0xe6, 0xd8, 0xe5, 0xd1, 0xe5, + 0xc3, 0xe5, 0xbc, 0xe5, 0x2d, 0xe6, 0x27, 0xe6, 0x27, 0xe7, 0x20, 0xe7, + 0xa4, 0xe8, 0x9d, 0xe8, 0xa0, 0xea, 0x9a, 0xea, 0x18, 0xed, 0x11, 0xed, + 0xf6, 0xef, 0xf0, 0xef, 0x35, 0xf3, 0x2e, 0xf3, 0xbc, 0xf6, 0xb3, 0xf6, + 0x7c, 0xfa, 0x76, 0xfa, 0x62, 0xfe, 0x59, 0xfe, 0x53, 0x02, 0x4d, 0x02, + 0x43, 0x06, 0x3b, 0x06, 0x17, 0x0a, 0x11, 0x0a, 0xc1, 0x0d, 0xba, 0x0d, + 0x32, 0x11, 0x2a, 0x11, 0x59, 0x14, 0x53, 0x14, 0x30, 0x17, 0x26, 0x17, + 0xa8, 0x19, 0xa2, 0x19, 0xbe, 0x1b, 0xb6, 0x1b, 0x6b, 0x1d, 0x63, 0x1d, + 0xa2, 0x1e, 0x9d, 0x1e, 0x69, 0x1f, 0x60, 0x1f, 0xae, 0x1f, 0xaa, 0x1f, + 0x79, 0x1f, 0x70, 0x1f, 0xbd, 0x1e, 0xb9, 0x1e, 0x81, 0x1d, 0x78, 0x1d, + 0xc2, 0x1b, 0xbc, 0x1b, 0x82, 0x19, 0x7d, 0x19, 0xd0, 0x16, 0xc9, 0x16, + 0xb3, 0x13, 0xac, 0x13, 0x3b, 0x10, 0x35, 0x10, 0x7d, 0x0c, 0x76, 0x0c, + 0x91, 0x08, 0x8b, 0x08, 0x8e, 0x04, 0x86, 0x04, 0x89, 0x00, 0x84, 0x00, + 0x9c, 0xfc, 0x94, 0xfc, 0xdb, 0xf8, 0xd3, 0xf8, 0x59, 0xf5, 0x53, 0xf5, + 0x27, 0xf2, 0x20, 0xf2, 0x4f, 0xef, 0x49, 0xef, 0xe3, 0xec, 0xdb, 0xec, + 0xe2, 0xea, 0xdc, 0xea, 0x5c, 0xe9, 0x55, 0xe9, 0x4e, 0xe8, 0x47, 0xe8, + 0xc0, 0xe7, 0xbb, 0xe7, 0xb6, 0xe7, 0xae, 0xe7, 0x2b, 0xe8, 0x25, 0xe8, + 0x27, 0xe9, 0x20, 0xe9, 0xa0, 0xea, 0x98, 0xea, 0x97, 0xec, 0x92, 0xec, + 0x03, 0xef, 0xfa, 0xee, 0xdb, 0xf1, 0xd4, 0xf1, 0x16, 0xf5, 0x0f, 0xf5, + 0x9e, 0xf8, 0x96, 0xf8, 0x62, 0xfc, 0x5c, 0xfc, 0x4f, 0x00, 0x47, 0x00, + 0x4e, 0x04, 0x45, 0x04, 0x45, 0x08, 0x3f, 0x08, 0x26, 0x0c, 0x1f, 0x0c, + 0xd7, 0x0f, 0xcf, 0x0f, 0x4a, 0x13, 0x44, 0x13, 0x70, 0x16, 0x68, 0x16, + 0x35, 0x19, 0x30, 0x19, 0x98, 0x1b, 0x90, 0x1b, 0x84, 0x1d, 0x7d, 0x1d, + 0xf5, 0x1e, 0xf0, 0x1e, 0xe7, 0x1f, 0xe0, 0x1f, 0x4b, 0x20, 0x45, 0x20, + 0x28, 0x20, 0x22, 0x20, 0x73, 0x1f, 0x6d, 0x1f, 0x2a, 0x1e, 0x24, 0x1e, + 0x57, 0x1c, 0x50, 0x1c, 0xf4, 0x19, 0xed, 0x19, 0x18, 0x17, 0x10, 0x17, + 0xc6, 0x13, 0xc2, 0x13, 0x1d, 0x10, 0x15, 0x10, 0x26, 0x0c, 0x21, 0x0c, + 0x03, 0x08, 0xfc, 0x07, 0xc8, 0x03, 0xc1, 0x03, 0x8a, 0xff, 0x83, 0xff, + 0x62, 0xfb, 0x5b, 0xfb, 0x62, 0xf7, 0x5c, 0xf7, 0x99, 0xf3, 0x93, 0xf3, + 0x1d, 0xf0, 0x15, 0xf0, 0xeb, 0xec, 0xe6, 0xec, 0x1f, 0xea, 0x18, 0xea, + 0xae, 0xe7, 0xaa, 0xe7, 0xaa, 0xe5, 0xa3, 0xe5, 0x11, 0xe4, 0x0c, 0xe4, + 0xe9, 0xe2, 0xe3, 0xe2, 0x34, 0xe2, 0x2f, 0xe2, 0xf6, 0xe1, 0xf0, 0xe1, + 0x30, 0xe2, 0x2a, 0xe2, 0xea, 0xe2, 0xe6, 0xe2, 0x1c, 0xe4, 0x16, 0xe4, + 0xcb, 0xe5, 0xc6, 0xe5, 0xf0, 0xe7, 0xeb, 0xe7, 0x83, 0xea, 0x7d, 0xea, + 0x7c, 0xed, 0x76, 0xed, 0xcb, 0xf0, 0xc5, 0xf0, 0x61, 0xf4, 0x5b, 0xf4, + 0x2a, 0xf8, 0x25, 0xf8, 0x0f, 0xfc, 0x08, 0xfc, 0xf7, 0xff, 0xf0, 0xff, + 0xcc, 0x03, 0xc6, 0x03, 0x7b, 0x07, 0x74, 0x07, 0xee, 0x0a, 0xe7, 0x0a, + 0x17, 0x0e, 0x10, 0x0e, 0xe3, 0x10, 0xde, 0x10, 0x49, 0x13, 0x42, 0x13, + 0x3f, 0x15, 0x39, 0x15, 0xbb, 0x16, 0xb3, 0x16, 0xbb, 0x17, 0xb5, 0x17, + 0x37, 0x18, 0x30, 0x18, 0x2d, 0x18, 0x27, 0x18, 0xa1, 0x17, 0x9a, 0x17, + 0x8a, 0x16, 0x84, 0x16, 0xf6, 0x14, 0xf1, 0x14, 0xe4, 0x12, 0xdc, 0x12, + 0x5d, 0x10, 0x58, 0x10, 0x72, 0x0d, 0x6b, 0x0d, 0x2d, 0x0a, 0x27, 0x0a, + 0xa5, 0x06, 0x9f, 0x06, 0xe9, 0x02, 0xe2, 0x02, 0x10, 0xff, 0x09, 0xff, + 0x2b, 0xfb, 0x26, 0xfb, 0x57, 0xf7, 0x4f, 0xf7, 0x9c, 0xf3, 0x97, 0xf3, + 0x14, 0xf0, 0x0c, 0xf0, 0xc9, 0xec, 0xc5, 0xec, 0xcd, 0xe9, 0xc5, 0xe9, + 0x29, 0xe7, 0x24, 0xe7, 0xe5, 0xe4, 0xdd, 0xe4, 0x0e, 0xe3, 0x09, 0xe3, + 0xa8, 0xe1, 0xa1, 0xe1, 0xb7, 0xe0, 0xb0, 0xe0, 0x47, 0xe0, 0x42, 0xe0, + 0x55, 0xe0, 0x4e, 0xe0, 0xe9, 0xe0, 0xe3, 0xe0, 0x00, 0xe2, 0xfa, 0xe1, + 0x9d, 0xe3, 0x96, 0xe3, 0xb9, 0xe5, 0xb3, 0xe5, 0x4d, 0xe8, 0x45, 0xe8, + 0x4d, 0xeb, 0x46, 0xeb, 0xa9, 0xee, 0xa3, 0xee, 0x4e, 0xf2, 0x46, 0xf2, + 0x25, 0xf6, 0x1f, 0xf6, 0x1a, 0xfa, 0x13, 0xfa, 0x16, 0xfe, 0x0f, 0xfe, + 0x01, 0x02, 0xfa, 0x01, 0xc8, 0x05, 0xc2, 0x05, 0x59, 0x09, 0x50, 0x09, + 0xa4, 0x0c, 0x9f, 0x0c, 0x9e, 0x0f, 0x94, 0x0f, 0x37, 0x12, 0x32, 0x12, + 0x6b, 0x14, 0x63, 0x14, 0x33, 0x16, 0x2c, 0x16, 0x8d, 0x17, 0x86, 0x17, + 0x6e, 0x18, 0x67, 0x18, 0xda, 0x18, 0xd4, 0x18, 0xcd, 0x18, 0xc6, 0x18, + 0x44, 0x18, 0x3d, 0x18, 0x44, 0x17, 0x3c, 0x17, 0xc9, 0x15, 0xc2, 0x15, + 0xdb, 0x13, 0xd4, 0x13, 0x81, 0x11, 0x7a, 0x11, 0xc4, 0x0e, 0xbc, 0x0e, + 0xb1, 0x0b, 0xaa, 0x0b, 0x52, 0x08, 0x4b, 0x08, 0xc0, 0x04, 0xb9, 0x04, + 0x0b, 0x01, 0x06, 0x01, 0x49, 0xfd, 0x42, 0xfd, 0x93, 0xf9, 0x8b, 0xf9, + 0xf8, 0xf5, 0xf2, 0xf5, 0x90, 0xf2, 0x88, 0xf2, 0x6a, 0xef, 0x66, 0xef, + 0x95, 0xec, 0x8d, 0xec, 0x22, 0xea, 0x1b, 0xea, 0x15, 0xe8, 0x0f, 0xe8, + 0x81, 0xe6, 0x79, 0xe6, 0x63, 0xe5, 0x5d, 0xe5, 0xcd, 0xe4, 0xc5, 0xe4, + 0xba, 0xe4, 0xb3, 0xe4, 0x30, 0xe5, 0x29, 0xe5, 0x2f, 0xe6, 0x28, 0xe6, + 0xb6, 0xe7, 0xae, 0xe7, 0xbf, 0xe9, 0xb9, 0xe9, 0x40, 0xec, 0x37, 0xec, + 0x2b, 0xef, 0x27, 0xef, 0x76, 0xf2, 0x71, 0xf2, 0x0e, 0xf6, 0x06, 0xf6, + 0xda, 0xf9, 0xd5, 0xf9, 0xcc, 0xfd, 0xc4, 0xfd, 0xcd, 0x01, 0xc7, 0x01, + 0xc9, 0x05, 0xc2, 0x05, 0xac, 0x09, 0xa5, 0x09, 0x64, 0x0d, 0x5c, 0x0d, + 0xe0, 0x10, 0xdd, 0x10, 0x18, 0x14, 0x12, 0x14, 0xfd, 0x16, 0xf5, 0x16, + 0x88, 0x19, 0x83, 0x19, 0xb2, 0x1b, 0xaa, 0x1b, 0x75, 0x1d, 0x70, 0x1d, + 0xca, 0x1e, 0xc6, 0x1e, 0xb3, 0x1f, 0xa9, 0x1f, 0x1d, 0x20, 0x1b, 0x20, + 0x15, 0x20, 0x0c, 0x20, 0x87, 0x1f, 0x82, 0x1f, 0x7c, 0x1e, 0x75, 0x1e, + 0xef, 0x1c, 0xeb, 0x1c, 0xe5, 0x1a, 0xdd, 0x1a, 0x64, 0x18, 0x5f, 0x18, + 0x6f, 0x15, 0x69, 0x15, 0x1c, 0x12, 0x15, 0x12, 0x74, 0x0e, 0x70, 0x0e, + 0x95, 0x0a, 0x8e, 0x0a, 0x8e, 0x06, 0x88, 0x06, 0x78, 0x02, 0x74, 0x02, + 0x74, 0xfe, 0x6c, 0xfe, 0x89, 0xfa, 0x86, 0xfa, 0xda, 0xf6, 0xd3, 0xf6, + 0x71, 0xf3, 0x6b, 0xf3, 0x5e, 0xf0, 0x5b, 0xf0, 0xb1, 0xed, 0xac, 0xed, + 0x6e, 0xeb, 0x69, 0xeb, 0xa0, 0xe9, 0x9b, 0xe9, 0x52, 0xe8, 0x4c, 0xe8, + 0x7a, 0xe7, 0x75, 0xe7, 0x2b, 0xe7, 0x27, 0xe7, 0x5b, 0xe7, 0x53, 0xe7, + 0x0f, 0xe8, 0x0a, 0xe8, 0x45, 0xe9, 0x40, 0xe9, 0xf7, 0xea, 0xf2, 0xea, + 0x25, 0xed, 0x1f, 0xed, 0xc2, 0xef, 0xbc, 0xef, 0xc5, 0xf2, 0xbf, 0xf2, + 0x1e, 0xf6, 0x18, 0xf6, 0xba, 0xf9, 0xb4, 0xf9, 0x89, 0xfd, 0x85, 0xfd, + 0x72, 0x01, 0x6b, 0x01, 0x62, 0x05, 0x5c, 0x05, 0x44, 0x09, 0x3f, 0x09, + 0x04, 0x0d, 0xfc, 0x0c, 0x8f, 0x10, 0x8b, 0x10, 0xd5, 0x13, 0xcc, 0x13, + 0xc7, 0x16, 0xc2, 0x16, 0x5b, 0x19, 0x54, 0x19, 0x82, 0x1b, 0x7c, 0x1b, + 0x3a, 0x1d, 0x34, 0x1d, 0x76, 0x1e, 0x71, 0x1e, 0x33, 0x1f, 0x2d, 0x1f, + 0x67, 0x1f, 0x63, 0x1f, 0x15, 0x1f, 0x0f, 0x1f, 0x39, 0x1e, 0x32, 0x1e, + 0xcd, 0x1c, 0xc7, 0x1c, 0xdf, 0x1a, 0xd8, 0x1a, 0x6a, 0x18, 0x63, 0x18, + 0x84, 0x15, 0x7f, 0x15, 0x38, 0x12, 0x30, 0x12, 0x96, 0x0e, 0x90, 0x0e, + 0xb9, 0x0a, 0xb3, 0x0a, 0xaf, 0x06, 0xab, 0x06, 0x97, 0x02, 0x91, 0x02, + 0x85, 0xfe, 0x7f, 0xfe, 0x8d, 0xfa, 0x88, 0xfa, 0xc9, 0xf6, 0xc2, 0xf6, + 0x3f, 0xf3, 0x3b, 0xf3, 0x06, 0xf0, 0xff, 0xef, 0x24, 0xed, 0x1e, 0xed, + 0x9e, 0xea, 0x98, 0xea, 0x7f, 0xe8, 0x7a, 0xe8, 0xc7, 0xe6, 0xc3, 0xe6, + 0x81, 0xe5, 0x7a, 0xe5, 0xaa, 0xe4, 0xa5, 0xe4, 0x48, 0xe4, 0x42, 0xe4, + 0x5a, 0xe4, 0x55, 0xe4, 0xe6, 0xe4, 0xe1, 0xe4, 0xe8, 0xe5, 0xe3, 0xe5, + 0x63, 0xe7, 0x5d, 0xe7, 0x50, 0xe9, 0x4a, 0xe9, 0xa8, 0xeb, 0xa3, 0xeb, + 0x64, 0xee, 0x5f, 0xee, 0x74, 0xf1, 0x6e, 0xf1, 0xcd, 0xf4, 0xc8, 0xf4, + 0x57, 0xf8, 0x53, 0xf8, 0x05, 0xfc, 0xfe, 0xfb, 0xbb, 0xff, 0xb5, 0xff, + 0x65, 0x03, 0x60, 0x03, 0xf3, 0x06, 0xec, 0x06, 0x49, 0x0a, 0x46, 0x0a, + 0x60, 0x0d, 0x58, 0x0d, 0x20, 0x10, 0x1b, 0x10, 0x81, 0x12, 0x7a, 0x12, + 0x76, 0x14, 0x70, 0x14, 0xf7, 0x15, 0xf1, 0x15, 0xff, 0x16, 0xf8, 0x16, + 0x87, 0x17, 0x82, 0x17, 0x89, 0x17, 0x81, 0x17, 0x07, 0x17, 0x01, 0x17, + 0xfd, 0x15, 0xf8, 0x15, 0x76, 0x14, 0x6f, 0x14, 0x6e, 0x12, 0x68, 0x12, + 0xf4, 0x0f, 0xee, 0x0f, 0x13, 0x0d, 0x0d, 0x0d, 0xd9, 0x09, 0xd2, 0x09, + 0x5a, 0x06, 0x54, 0x06, 0xa5, 0x02, 0x9f, 0x02, 0xd4, 0xfe, 0xcf, 0xfe, + 0xf8, 0xfa, 0xf1, 0xfa, 0x25, 0xf7, 0x20, 0xf7, 0x72, 0xf3, 0x6b, 0xf3, + 0xea, 0xef, 0xe4, 0xef, 0xa0, 0xec, 0x9c, 0xec, 0xa1, 0xe9, 0x9b, 0xe9, + 0xf6, 0xe6, 0xf3, 0xe6, 0xac, 0xe4, 0xa7, 0xe4, 0xc8, 0xe2, 0xc0, 0xe2, + 0x4f, 0xe1, 0x4c, 0xe1, 0x4d, 0xe0, 0x47, 0xe0, 0xc4, 0xdf, 0xbe, 0xdf, + 0xbb, 0xdf, 0xb6, 0xdf, 0x31, 0xe0, 0x2c, 0xe0, 0x2d, 0xe1, 0x29, 0xe1, + 0xb2, 0xe2, 0xae, 0xe2, 0xb8, 0xe4, 0xb2, 0xe4, 0x3f, 0xe7, 0x3b, 0xe7, + 0x33, 0xea, 0x30, 0xea, 0x95, 0xed, 0x90, 0xed, 0x42, 0xf1, 0x3f, 0xf1, + 0x31, 0xf5, 0x2c, 0xf5, 0x45, 0xf9, 0x42, 0xf9, 0x69, 0xfd, 0x63, 0xfd, + 0x83, 0x01, 0x7f, 0x01, 0x7d, 0x05, 0x7a, 0x05, 0x4a, 0x09, 0x44, 0x09, + 0xcc, 0x0c, 0xcb, 0x0c, 0x01, 0x10, 0xfd, 0x0f, 0xd6, 0x12, 0xd3, 0x12, + 0x45, 0x15, 0x42, 0x15, 0x45, 0x17, 0x41, 0x17, 0xd1, 0x18, 0xce, 0x18, + 0xe7, 0x19, 0xe3, 0x19, 0x80, 0x1a, 0x7c, 0x1a, 0x9c, 0x1a, 0x9a, 0x1a, + 0x3c, 0x1a, 0x37, 0x1a, 0x58, 0x19, 0x55, 0x19, 0xf9, 0x17, 0xf7, 0x17, + 0x1e, 0x16, 0x18, 0x16, 0xcd, 0x13, 0xcb, 0x13, 0x10, 0x11, 0x0b, 0x11, + 0xf0, 0x0d, 0xec, 0x0d, 0x7a, 0x0a, 0x78, 0x0a, 0xc6, 0x06, 0xc1, 0x06, + 0xe6, 0x02, 0xe2, 0x02, 0xeb, 0xfe, 0xe6, 0xfe, 0xf4, 0xfa, 0xf0, 0xfa, + 0x10, 0xf7, 0x0d, 0xf7, 0x5a, 0xf3, 0x54, 0xf3, 0xdf, 0xef, 0xdc, 0xef, + 0xb4, 0xec, 0xb0, 0xec, 0xe3, 0xe9, 0xe1, 0xe9, 0x7f, 0xe7, 0x78, 0xe7, + 0x87, 0xe5, 0x85, 0xe5, 0x10, 0xe4, 0x0a, 0xe4, 0x17, 0xe3, 0x14, 0xe3, + 0xa8, 0xe2, 0xa4, 0xe2, 0xc3, 0xe2, 0xbf, 0xe2, 0x68, 0xe3, 0x64, 0xe3, + 0x9e, 0xe4, 0x99, 0xe4, 0x5b, 0xe6, 0x58, 0xe6, 0x9e, 0xe8, 0x9a, 0xe8, + 0x55, 0xeb, 0x52, 0xeb, 0x79, 0xee, 0x76, 0xee, 0xf6, 0xf1, 0xf1, 0xf1, + 0xba, 0xf5, 0xb8, 0xf5, 0xb4, 0xf9, 0xad, 0xf9, 0xc9, 0xfd, 0xc8, 0xfd, + 0xe8, 0x01, 0xe3, 0x01, 0xfb, 0x05, 0xf8, 0x05, 0xf0, 0x09, 0xed, 0x09, + 0xb2, 0x0d, 0xae, 0x0d, 0x33, 0x11, 0x30, 0x11, 0x68, 0x14, 0x62, 0x14, + 0x43, 0x17, 0x40, 0x17, 0xc2, 0x19, 0xbc, 0x19, 0xd5, 0x1b, 0xd1, 0x1b, + 0x7f, 0x1d, 0x7b, 0x1d, 0xb6, 0x1e, 0xb1, 0x1e, 0x78, 0x1f, 0x74, 0x1f, + 0xbf, 0x1f, 0xba, 0x1f, 0x87, 0x1f, 0x83, 0x1f, 0xd0, 0x1e, 0xcb, 0x1e, + 0x99, 0x1d, 0x95, 0x1d, 0xe2, 0x1b, 0xde, 0x1b, 0xb1, 0x19, 0xab, 0x19, + 0x0a, 0x17, 0x09, 0x17, 0x00, 0x14, 0xfb, 0x13, 0x99, 0x10, 0x95, 0x10, + 0xeb, 0x0c, 0xe7, 0x0c, 0x0f, 0x09, 0x0a, 0x09, 0x15, 0x05, 0x12, 0x05, + 0x1d, 0x01, 0x19, 0x01, 0x37, 0xfd, 0x34, 0xfd, 0x7e, 0xf9, 0x7b, 0xf9, + 0x00, 0xf6, 0xfd, 0xf5, 0xd1, 0xf2, 0xcc, 0xf2, 0xfe, 0xef, 0xfd, 0xef, + 0x93, 0xed, 0x8d, 0xed, 0x96, 0xeb, 0x96, 0xeb, 0x16, 0xea, 0x12, 0xea, + 0x10, 0xe9, 0x0c, 0xe9, 0x8b, 0xe8, 0x88, 0xe8, 0x8a, 0xe8, 0x86, 0xe8, + 0x09, 0xe9, 0x06, 0xe9, 0x0e, 0xea, 0x0b, 0xea, 0x92, 0xeb, 0x8d, 0xeb, + 0x91, 0xed, 0x8f, 0xed, 0x03, 0xf0, 0x00, 0xf0, 0xde, 0xf2, 0xdc, 0xf2, + 0x11, 0xf6, 0x0e, 0xf6, 0x8e, 0xf9, 0x8b, 0xf9, 0x3e, 0xfd, 0x3b, 0xfd, + 0x0f, 0x01, 0x0d, 0x01, 0xed, 0x04, 0xe9, 0x04, 0xbd, 0x08, 0xbc, 0x08, + 0x77, 0x0c, 0x71, 0x0c, 0xfa, 0x0f, 0xf9, 0x0f, 0x41, 0x13, 0x3e, 0x13, + 0x38, 0x16, 0x36, 0x16, 0xd5, 0x18, 0xd3, 0x18, 0x0b, 0x1b, 0x07, 0x1b, + 0xd1, 0x1c, 0xce, 0x1c, 0x20, 0x1e, 0x1d, 0x1e, 0xf1, 0x1e, 0xef, 0x1e, + 0x3e, 0x1f, 0x3c, 0x1f, 0x01, 0x1f, 0xfc, 0x1e, 0x38, 0x1e, 0x36, 0x1e, + 0xe4, 0x1c, 0xe0, 0x1c, 0x05, 0x1b, 0x02, 0x1b, 0xa3, 0x18, 0xa1, 0x18, + 0xc6, 0x15, 0xc2, 0x15, 0x7f, 0x12, 0x7d, 0x12, 0xe0, 0x0e, 0xdc, 0x0e, + 0xfe, 0x0a, 0xfb, 0x0a, 0xec, 0x06, 0xea, 0x06, 0xc7, 0x02, 0xc3, 0x02, + 0x9f, 0xfe, 0x9d, 0xfe, 0x92, 0xfa, 0x8f, 0xfa, 0xb2, 0xf6, 0xad, 0xf6, + 0x11, 0xf3, 0x10, 0xf3, 0xbe, 0xef, 0xba, 0xef, 0xc1, 0xec, 0xbe, 0xec, + 0x27, 0xea, 0x24, 0xea, 0xf2, 0xe7, 0xf0, 0xe7, 0x2b, 0xe6, 0x27, 0xe6, + 0xd2, 0xe4, 0xd1, 0xe4, 0xf2, 0xe3, 0xed, 0xe3, 0x84, 0xe3, 0x82, 0xe3, + 0x94, 0xe3, 0x90, 0xe3, 0x1e, 0xe4, 0x1c, 0xe4, 0x27, 0xe5, 0x25, 0xe5, + 0xaf, 0xe6, 0xae, 0xe6, 0xad, 0xe8, 0xaa, 0xe8, 0x20, 0xeb, 0x1e, 0xeb, + 0xfc, 0xed, 0xf8, 0xed, 0x38, 0xf1, 0x35, 0xf1, 0xc1, 0xf4, 0xbd, 0xf4, + 0x82, 0xf8, 0x80, 0xf8, 0x67, 0xfc, 0x64, 0xfc, 0x59, 0x00, 0x55, 0x00, + 0x40, 0x04, 0x3f, 0x04, 0x08, 0x08, 0x04, 0x08, 0x9b, 0x0b, 0x9a, 0x0b, + 0xeb, 0x0e, 0xe6, 0x0e, 0xe2, 0x11, 0xe1, 0x11, 0x78, 0x14, 0x77, 0x14, + 0xa2, 0x16, 0x9e, 0x16, 0x53, 0x18, 0x52, 0x18, 0x87, 0x19, 0x85, 0x19, + 0x39, 0x1a, 0x38, 0x1a, 0x63, 0x1a, 0x5f, 0x1a, 0x02, 0x1a, 0x00, 0x1a, + 0x16, 0x19, 0x12, 0x19, 0x9f, 0x17, 0x9c, 0x17, 0xa2, 0x15, 0xa1, 0x15, + 0x25, 0x13, 0x20, 0x13, 0x34, 0x10, 0x32, 0x10, 0xde, 0x0c, 0xda, 0x0c, + 0x34, 0x09, 0x33, 0x09, 0x4a, 0x05, 0x47, 0x05, 0x37, 0x01, 0x35, 0x01, + 0x12, 0xfd, 0x0e, 0xfd, 0xec, 0xf8, 0xeb, 0xf8, 0xe3, 0xf4, 0xde, 0xf4, + 0xfc, 0xf0, 0xfd, 0xf0, 0x5e, 0xed, 0x58, 0xed, 0xfe, 0xe9, 0xfe, 0xe9, + 0xfe, 0xe6, 0xfb, 0xe6, 0x5b, 0xe4, 0x5a, 0xe4, 0x22, 0xe2, 0x1e, 0xe2, + 0x5c, 0xe0, 0x5b, 0xe0, 0x08, 0xdf, 0x04, 0xdf, 0x32, 0xde, 0x31, 0xde, + 0xdc, 0xdd, 0xd8, 0xdd, 0x0a, 0xde, 0x07, 0xde, 0xc1, 0xde, 0xc0, 0xde, + 0x00, 0xe0, 0xfd, 0xdf, 0xc7, 0xe1, 0xc5, 0xe1, 0x13, 0xe4, 0x11, 0xe4, + 0xdc, 0xe6, 0xd9, 0xe6, 0x18, 0xea, 0x16, 0xea, 0xb3, 0xed, 0xb0, 0xed, + 0x98, 0xf1, 0x98, 0xf1, 0xb5, 0xf5, 0xb3, 0xf5, 0xee, 0xf9, 0xeb, 0xf9, + 0x29, 0xfe, 0x28, 0xfe, 0x54, 0x02, 0x52, 0x02, 0x55, 0x06, 0x54, 0x06, + 0x1a, 0x0a, 0x16, 0x0a, 0x91, 0x0d, 0x90, 0x0d, 0xaf, 0x10, 0xad, 0x10, + 0x66, 0x13, 0x64, 0x13, 0xb0, 0x15, 0xae, 0x15, 0x87, 0x17, 0x83, 0x17, + 0xe2, 0x18, 0xe1, 0x18, 0xc7, 0x19, 0xc4, 0x19, 0x26, 0x1a, 0x23, 0x1a, + 0x0a, 0x1a, 0x08, 0x1a, 0x6c, 0x19, 0x6a, 0x19, 0x4c, 0x18, 0x49, 0x18, + 0xb2, 0x16, 0xb1, 0x16, 0x9c, 0x14, 0x98, 0x14, 0x19, 0x12, 0x17, 0x12, + 0x2e, 0x0f, 0x2c, 0x0f, 0xe9, 0x0b, 0xe6, 0x0b, 0x5c, 0x08, 0x5a, 0x08, + 0x99, 0x04, 0x95, 0x04, 0xb5, 0x00, 0xb4, 0x00, 0xcb, 0xfc, 0xc8, 0xfc, + 0xeb, 0xf8, 0xe9, 0xf8, 0x2d, 0xf5, 0x2a, 0xf5, 0xa7, 0xf1, 0xa5, 0xf1, + 0x67, 0xee, 0x65, 0xee, 0x7e, 0xeb, 0x7b, 0xeb, 0xf9, 0xe8, 0xf8, 0xe8, + 0xe0, 0xe6, 0xdd, 0xe6, 0x40, 0xe5, 0x3f, 0xe5, 0x20, 0xe4, 0x1d, 0xe4, + 0x86, 0xe3, 0x84, 0xe3, 0x77, 0xe3, 0x74, 0xe3, 0xed, 0xe3, 0xed, 0xe3, + 0xf7, 0xe4, 0xf3, 0xe4, 0x84, 0xe6, 0x82, 0xe6, 0x98, 0xe8, 0x95, 0xe8, + 0x23, 0xeb, 0x1f, 0xeb, 0x18, 0xee, 0x15, 0xee, 0x69, 0xf1, 0x65, 0xf1, + 0x07, 0xf5, 0x05, 0xf5, 0xda, 0xf8, 0xd8, 0xf8, 0xd3, 0xfc, 0xcf, 0xfc, + 0xd4, 0x00, 0xd2, 0x00, 0xd3, 0x04, 0xce, 0x04, 0xb3, 0x08, 0xb2, 0x08, + 0x69, 0x0c, 0x66, 0x0c, 0xe2, 0x0f, 0xde, 0x0f, 0x10, 0x13, 0x0e, 0x13, + 0xea, 0x15, 0xe8, 0x15, 0x6a, 0x18, 0x66, 0x18, 0x80, 0x1a, 0x80, 0x1a, + 0x30, 0x1c, 0x2c, 0x1c, 0x6e, 0x1d, 0x6d, 0x1d, 0x36, 0x1e, 0x32, 0x1e, + 0x82, 0x1e, 0x80, 0x1e, 0x53, 0x1e, 0x4f, 0x1e, 0x9f, 0x1d, 0x9c, 0x1d, + 0x6d, 0x1c, 0x6b, 0x1c, 0xb8, 0x1a, 0xb5, 0x1a, 0x89, 0x18, 0x87, 0x18, + 0xe6, 0x15, 0xe3, 0x15, 0xd8, 0x12, 0xd6, 0x12, 0x71, 0x0f, 0x6e, 0x0f, + 0xc4, 0x0b, 0xc0, 0x0b, 0xe3, 0x07, 0xe1, 0x07, 0xec, 0x03, 0xea, 0x03, + 0xf2, 0xff, 0xed, 0xff, 0x0b, 0xfc, 0x0a, 0xfc, 0x51, 0xf8, 0x4d, 0xf8, + 0xd3, 0xf4, 0xd2, 0xf4, 0xa7, 0xf1, 0xa5, 0xf1, 0xd4, 0xee, 0xd1, 0xee, + 0x6d, 0xec, 0x6b, 0xec, 0x74, 0xea, 0x71, 0xea, 0xf5, 0xe8, 0xf3, 0xe8, + 0xf8, 0xe7, 0xf5, 0xe7, 0x77, 0xe7, 0x76, 0xe7, 0x82, 0xe7, 0x7d, 0xe7, + 0x0d, 0xe8, 0x0b, 0xe8, 0x22, 0xe9, 0x1f, 0xe9, 0xbc, 0xea, 0xb9, 0xea, + 0xd2, 0xec, 0xd0, 0xec, 0x65, 0xef, 0x61, 0xef, 0x64, 0xf2, 0x61, 0xf2, + 0xbf, 0xf5, 0xbd, 0xf5, 0x6b, 0xf9, 0x67, 0xf9, 0x4b, 0xfd, 0x48, 0xfd, + 0x51, 0x01, 0x4e, 0x01, 0x62, 0x05, 0x5f, 0x05, 0x6c, 0x09, 0x69, 0x09, + 0x59, 0x0d, 0x54, 0x0d, 0x13, 0x11, 0x12, 0x11, 0x8b, 0x14, 0x88, 0x14, + 0xb5, 0x17, 0xb3, 0x17, 0x81, 0x1a, 0x7e, 0x1a, 0xe6, 0x1c, 0xe3, 0x1c, + 0xda, 0x1e, 0xd7, 0x1e, 0x52, 0x20, 0x4f, 0x20, 0x4c, 0x21, 0x4a, 0x21, + 0xbf, 0x21, 0xbc, 0x21, 0xa6, 0x21, 0xa3, 0x21, 0xff, 0x20, 0xfd, 0x20, + 0xc8, 0x1f, 0xc3, 0x1f, 0xfd, 0x1d, 0xfc, 0x1d, 0xa8, 0x1b, 0xa4, 0x1b, + 0xcd, 0x18, 0xcc, 0x18, 0x7d, 0x15, 0x7b, 0x15, 0xcc, 0x11, 0xc7, 0x11, + 0xc6, 0x0d, 0xc7, 0x0d, 0x91, 0x09, 0x8b, 0x09, 0x36, 0x05, 0x35, 0x05, + 0xd8, 0x00, 0xd5, 0x00, 0x8c, 0xfc, 0x89, 0xfc, 0x66, 0xf8, 0x64, 0xf8, + 0x82, 0xf4, 0x80, 0xf4, 0xe8, 0xf0, 0xe6, 0xf0, 0xaa, 0xed, 0xa8, 0xed, + 0xcd, 0xea, 0xcd, 0xea, 0x5b, 0xe8, 0x58, 0xe8, 0x56, 0xe6, 0x54, 0xe6, + 0xc1, 0xe4, 0xbd, 0xe4, 0xa2, 0xe3, 0xa0, 0xe3, 0xfc, 0xe2, 0xf9, 0xe2, + 0xcd, 0xe2, 0xcc, 0xe2, 0x1f, 0xe3, 0x1b, 0xe3, 0xe9, 0xe3, 0xe9, 0xe3, + 0x38, 0xe5, 0x33, 0xe5, 0xfc, 0xe6, 0xfb, 0xe6, 0x3b, 0xe9, 0x37, 0xe9, + 0xe7, 0xeb, 0xe5, 0xeb, 0xfa, 0xee, 0xf6, 0xee, 0x61, 0xf2, 0x5e, 0xf2, + 0x10, 0xf6, 0x0d, 0xf6, 0xef, 0xf9, 0xeb, 0xf9, 0xe8, 0xfd, 0xe6, 0xfd, + 0xe2, 0x01, 0xdf, 0x01, 0xc9, 0x05, 0xc6, 0x05, 0x85, 0x09, 0x84, 0x09, + 0x09, 0x0d, 0x03, 0x0d, 0x38, 0x10, 0x36, 0x10, 0x0d, 0x13, 0x09, 0x13, + 0x78, 0x15, 0x76, 0x15, 0x70, 0x17, 0x6d, 0x17, 0xeb, 0x18, 0xe8, 0x18, + 0xe6, 0x19, 0xe3, 0x19, 0x5b, 0x1a, 0x58, 0x1a, 0x45, 0x1a, 0x40, 0x1a, + 0xa5, 0x19, 0xa2, 0x19, 0x79, 0x18, 0x77, 0x18, 0xc7, 0x16, 0xc5, 0x16, + 0x95, 0x14, 0x94, 0x14, 0xea, 0x11, 0xe7, 0x11, 0xd8, 0x0e, 0xd5, 0x0e, + 0x6c, 0x0b, 0x6a, 0x0b, 0xb9, 0x07, 0xb6, 0x07, 0xd6, 0x03, 0xd4, 0x03, + 0xd4, 0xff, 0xd0, 0xff, 0xcb, 0xfb, 0xca, 0xfb, 0xd3, 0xf7, 0xd1, 0xf7, + 0xfb, 0xf3, 0xf5, 0xf3, 0x57, 0xf0, 0x56, 0xf0, 0xf4, 0xec, 0xf1, 0xec, + 0xe5, 0xe9, 0xe1, 0xe9, 0x2a, 0xe7, 0x29, 0xe7, 0xd5, 0xe4, 0xd4, 0xe4, + 0xeb, 0xe2, 0xe8, 0xe2, 0x70, 0xe1, 0x6f, 0xe1, 0x70, 0xe0, 0x6c, 0xe0, + 0xe8, 0xdf, 0xe7, 0xdf, 0xe2, 0xdf, 0xe0, 0xdf, 0x5e, 0xe0, 0x5c, 0xe0, + 0x60, 0xe1, 0x5e, 0xe1, 0xe7, 0xe2, 0xe5, 0xe2, 0xec, 0xe4, 0xe9, 0xe4, + 0x6f, 0xe7, 0x6f, 0xe7, 0x62, 0xea, 0x5f, 0xea, 0xb6, 0xed, 0xb6, 0xed, + 0x5c, 0xf1, 0x58, 0xf1, 0x37, 0xf5, 0x36, 0xf5, 0x3a, 0xf9, 0x38, 0xf9, + 0x45, 0xfd, 0x43, 0xfd, 0x43, 0x01, 0x42, 0x01, 0x24, 0x05, 0x23, 0x05, + 0xcc, 0x08, 0xc9, 0x08, 0x31, 0x0c, 0x30, 0x0c, 0x3e, 0x0f, 0x3c, 0x0f, + 0xef, 0x11, 0xec, 0x11, 0x34, 0x14, 0x31, 0x14, 0x07, 0x16, 0x04, 0x16, + 0x67, 0x17, 0x66, 0x17, 0x4b, 0x18, 0x47, 0x18, 0xb3, 0x18, 0xb2, 0x18, + 0x9a, 0x18, 0x98, 0x18, 0x03, 0x18, 0xff, 0x17, 0xe9, 0x16, 0xe8, 0x16, + 0x57, 0x15, 0x54, 0x15, 0x49, 0x13, 0x47, 0x13, 0xcd, 0x10, 0xcb, 0x10, + 0xea, 0x0d, 0xe7, 0x0d, 0xad, 0x0a, 0xab, 0x0a, 0x28, 0x07, 0x26, 0x07, + 0x71, 0x03, 0x6e, 0x03, 0x94, 0xff, 0x92, 0xff, 0xb2, 0xfb, 0xb1, 0xfb, + 0xdb, 0xf7, 0xd6, 0xf7, 0x24, 0xf4, 0x22, 0xf4, 0x9f, 0xf0, 0x9e, 0xf0, + 0x63, 0xed, 0x61, 0xed, 0x79, 0xea, 0x79, 0xea, 0xf1, 0xe7, 0xed, 0xe7, + 0xd2, 0xe5, 0xd2, 0xe5, 0x2d, 0xe4, 0x2b, 0xe4, 0x05, 0xe3, 0x03, 0xe3, + 0x62, 0xe2, 0x61, 0xe2, 0x49, 0xe2, 0x44, 0xe2, 0xb9, 0xe2, 0xba, 0xe2, + 0xbe, 0xe3, 0xba, 0xe3, 0x4c, 0xe5, 0x4a, 0xe5, 0x65, 0xe7, 0x62, 0xe7, + 0xfd, 0xe9, 0xfc, 0xe9, 0x00, 0xed, 0xfe, 0xec, 0x66, 0xf0, 0x64, 0xf0, + 0x17, 0xf4, 0x15, 0xf4, 0x04, 0xf8, 0xff, 0xf7, 0x11, 0xfc, 0x11, 0xfc, + 0x2e, 0x00, 0x29, 0x00, 0x43, 0x04, 0x43, 0x04, 0x3e, 0x08, 0x39, 0x08, + 0x0a, 0x0c, 0x09, 0x0c, 0x9f, 0x0f, 0x9a, 0x0f, 0xe6, 0x12, 0xe4, 0x12, + 0xdd, 0x15, 0xd9, 0x15, 0x72, 0x18, 0x6e, 0x18, 0xa6, 0x1a, 0xa5, 0x1a, + 0x72, 0x1c, 0x6f, 0x1c, 0xd0, 0x1d, 0xcd, 0x1d, 0xbb, 0x1e, 0xb7, 0x1e, + 0x2d, 0x1f, 0x2a, 0x1f, 0x27, 0x1f, 0x24, 0x1f, 0x9e, 0x1e, 0x9b, 0x1e, + 0x96, 0x1d, 0x94, 0x1d, 0x0d, 0x1c, 0x0a, 0x1c, 0x05, 0x1a, 0x01, 0x1a, + 0x85, 0x17, 0x83, 0x17, 0x95, 0x14, 0x92, 0x14, 0x41, 0x11, 0x3d, 0x11, + 0x9a, 0x0d, 0x98, 0x0d, 0xb5, 0x09, 0xb2, 0x09, 0xad, 0x05, 0xaa, 0x05, + 0x91, 0x01, 0x8f, 0x01, 0x87, 0xfd, 0x84, 0xfd, 0x98, 0xf9, 0x95, 0xf9, + 0xe0, 0xf5, 0xdf, 0xf5, 0x74, 0xf2, 0x70, 0xf2, 0x5b, 0xef, 0x58, 0xef, + 0xab, 0xec, 0xa9, 0xec, 0x69, 0xea, 0x67, 0xea, 0xa0, 0xe8, 0x9d, 0xe8, + 0x56, 0xe7, 0x56, 0xe7, 0x90, 0xe6, 0x8b, 0xe6, 0x4f, 0xe6, 0x50, 0xe6, + 0x97, 0xe6, 0x94, 0xe6, 0x68, 0xe7, 0x66, 0xe7, 0xc0, 0xe8, 0xbe, 0xe8, + 0x9a, 0xea, 0x98, 0xea, 0xf7, 0xec, 0xf5, 0xec, 0xc0, 0xef, 0xc0, 0xef, + 0xfb, 0xf2, 0xf7, 0xf2, 0x80, 0xf6, 0x7f, 0xf6, 0x4f, 0xfa, 0x4c, 0xfa, + 0x49, 0xfe, 0x46, 0xfe, 0x5b, 0x02, 0x59, 0x02, 0x71, 0x06, 0x6f, 0x06, + 0x70, 0x0a, 0x6e, 0x0a, 0x4a, 0x0e, 0x48, 0x0e, 0xed, 0x11, 0xe9, 0x11, + 0x41, 0x15, 0x40, 0x15, 0x46, 0x18, 0x44, 0x18, 0xe2, 0x1a, 0xe1, 0x1a, + 0x1a, 0x1d, 0x17, 0x1d, 0xdb, 0x1e, 0xd8, 0x1e, 0x22, 0x20, 0x21, 0x20, + 0xec, 0x20, 0xe8, 0x20, 0x29, 0x21, 0x28, 0x21, 0xe4, 0x20, 0xe2, 0x20, + 0x0f, 0x20, 0x0e, 0x20, 0xb0, 0x1e, 0xae, 0x1e, 0xc4, 0x1c, 0xc2, 0x1c, + 0x53, 0x1a, 0x50, 0x1a, 0x66, 0x17, 0x64, 0x17, 0x0d, 0x14, 0x0c, 0x14, + 0x5a, 0x10, 0x57, 0x10, 0x65, 0x0c, 0x63, 0x0c, 0x3c, 0x08, 0x39, 0x08, + 0x01, 0x04, 0xff, 0x03, 0xc8, 0xff, 0xc5, 0xff, 0xa8, 0xfb, 0xa5, 0xfb, + 0xb6, 0xf7, 0xb5, 0xf7, 0x06, 0xf4, 0x03, 0xf4, 0xa8, 0xf0, 0xa4, 0xf0, + 0xa2, 0xed, 0xa1, 0xed, 0x09, 0xeb, 0x06, 0xeb, 0xdc, 0xe8, 0xd8, 0xe8, + 0x20, 0xe7, 0x1e, 0xe7, 0xdb, 0xe5, 0xd8, 0xe5, 0x0d, 0xe5, 0x0b, 0xe5, + 0xbb, 0xe4, 0xb8, 0xe4, 0xe3, 0xe4, 0xe0, 0xe4, 0x87, 0xe5, 0x85, 0xe5, + 0xa8, 0xe6, 0xa5, 0xe6, 0x42, 0xe8, 0x40, 0xe8, 0x4e, 0xea, 0x4c, 0xea, + 0xca, 0xec, 0xc8, 0xec, 0xa8, 0xef, 0xa2, 0xef, 0xdb, 0xf2, 0xdb, 0xf2, + 0x55, 0xf6, 0x51, 0xf6, 0x00, 0xfa, 0xff, 0xf9, 0xcc, 0xfd, 0xc8, 0xfd, + 0x9b, 0x01, 0x98, 0x01, 0x5e, 0x05, 0x5d, 0x05, 0xff, 0x08, 0xfa, 0x08, + 0x66, 0x0c, 0x65, 0x0c, 0x87, 0x0f, 0x84, 0x0f, 0x51, 0x12, 0x4e, 0x12, + 0xb7, 0x14, 0xb5, 0x14, 0xae, 0x16, 0xad, 0x16, 0x2d, 0x18, 0x2a, 0x18, + 0x2e, 0x19, 0x2b, 0x19, 0xaa, 0x19, 0xa7, 0x19, 0x9e, 0x19, 0x9b, 0x19, + 0x06, 0x19, 0x06, 0x19, 0xe6, 0x17, 0xe3, 0x17, 0x3f, 0x16, 0x3d, 0x16, + 0x18, 0x14, 0x16, 0x14, 0x7c, 0x11, 0x79, 0x11, 0x74, 0x0e, 0x74, 0x0e, + 0x17, 0x0b, 0x14, 0x0b, 0x73, 0x07, 0x72, 0x07, 0x9a, 0x03, 0x98, 0x03, + 0xa8, 0xff, 0xa5, 0xff, 0xad, 0xfb, 0xac, 0xfb, 0xc0, 0xf7, 0xbd, 0xf7, + 0xf6, 0xf3, 0xf4, 0xf3, 0x5d, 0xf0, 0x5a, 0xf0, 0x05, 0xed, 0x02, 0xed, + 0xfc, 0xe9, 0xf9, 0xe9, 0x47, 0xe7, 0x46, 0xe7, 0xf8, 0xe4, 0xf6, 0xe4, + 0x0e, 0xe3, 0x0b, 0xe3, 0x8f, 0xe1, 0x8e, 0xe1, 0x8a, 0xe0, 0x87, 0xe0, + 0xf9, 0xdf, 0xf7, 0xdf, 0xe9, 0xdf, 0xe6, 0xdf, 0x58, 0xe0, 0x57, 0xe0, + 0x4f, 0xe1, 0x4b, 0xe1, 0xc7, 0xe2, 0xc6, 0xe2, 0xc3, 0xe4, 0xbf, 0xe4, + 0x39, 0xe7, 0x38, 0xe7, 0x28, 0xea, 0x25, 0xea, 0x79, 0xed, 0x77, 0xed, + 0x25, 0xf1, 0x22, 0xf1, 0x0c, 0xf5, 0x0b, 0xf5, 0x1d, 0xf9, 0x1b, 0xf9, + 0x41, 0xfd, 0x3f, 0xfd, 0x5c, 0x01, 0x58, 0x01, 0x58, 0x05, 0x58, 0x05, + 0x26, 0x09, 0x21, 0x09, 0xa9, 0x0c, 0xa8, 0x0c, 0xde, 0x0f, 0xdb, 0x0f, + 0xaf, 0x12, 0xac, 0x12, 0x17, 0x15, 0x15, 0x15, 0x0c, 0x17, 0x0b, 0x17, + 0x87, 0x18, 0x84, 0x18, 0x88, 0x19, 0x86, 0x19, 0x08, 0x1a, 0x04, 0x1a, + 0x05, 0x1a, 0x03, 0x1a, 0x7f, 0x19, 0x7a, 0x19, 0x71, 0x18, 0x6f, 0x18, + 0xe9, 0x16, 0xe5, 0x16, 0xdd, 0x14, 0xdc, 0x14, 0x5e, 0x12, 0x5b, 0x12, + 0x6e, 0x0f, 0x6c, 0x0f, 0x1d, 0x0c, 0x1d, 0x0c, 0x82, 0x08, 0x7e, 0x08, + 0xa5, 0x04, 0xa3, 0x04, 0xa7, 0x00, 0xa4, 0x00, 0x96, 0xfc, 0x93, 0xfc, + 0x8d, 0xf8, 0x8a, 0xf8, 0xa2, 0xf4, 0xa2, 0xf4, 0xe7, 0xf0, 0xe3, 0xf0, + 0x72, 0xed, 0x6e, 0xed, 0x4a, 0xea, 0x48, 0xea, 0x85, 0xe7, 0x84, 0xe7, + 0x2a, 0xe5, 0x27, 0xe5, 0x46, 0xe3, 0x43, 0xe3, 0xdb, 0xe1, 0xd7, 0xe1, + 0xf6, 0xe0, 0xf5, 0xe0, 0x96, 0xe0, 0x93, 0xe0, 0xc6, 0xe0, 0xc3, 0xe0, + 0x80, 0xe1, 0x7d, 0xe1, 0xcc, 0xe2, 0xca, 0xe2, 0xa6, 0xe4, 0xa4, 0xe4, + 0x07, 0xe7, 0x05, 0xe7, 0xe3, 0xe9, 0xde, 0xe9, 0x29, 0xed, 0x27, 0xed, + 0xce, 0xf0, 0xcb, 0xf0, 0xb6, 0xf4, 0xb5, 0xf4, 0xce, 0xf8, 0xc9, 0xf8, + 0xfe, 0xfc, 0xfb, 0xfc, 0x2f, 0x01, 0x2d, 0x01, 0x50, 0x05, 0x4c, 0x05, + 0x49, 0x09, 0x47, 0x09, 0x0c, 0x0d, 0x08, 0x0d, 0x8c, 0x10, 0x87, 0x10, + 0xb4, 0x13, 0xb2, 0x13, 0x86, 0x16, 0x82, 0x16, 0xf2, 0x18, 0xef, 0x18, + 0xf6, 0x1a, 0xf3, 0x1a, 0x8c, 0x1c, 0x88, 0x1c, 0xac, 0x1d, 0xab, 0x1d, + 0x59, 0x1e, 0x55, 0x1e, 0x88, 0x1e, 0x86, 0x1e, 0x3a, 0x1e, 0x39, 0x1e, + 0x6f, 0x1d, 0x6a, 0x1d, 0x21, 0x1c, 0x1f, 0x1c, 0x58, 0x1a, 0x56, 0x1a, + 0x17, 0x18, 0x13, 0x18, 0x64, 0x15, 0x64, 0x15, 0x4d, 0x12, 0x48, 0x12, + 0xe2, 0x0e, 0xdf, 0x0e, 0x31, 0x0b, 0x2f, 0x0b, 0x55, 0x07, 0x50, 0x07, + 0x60, 0x03, 0x60, 0x03, 0x70, 0xff, 0x6a, 0xff, 0x94, 0xfb, 0x95, 0xfb, + 0xe4, 0xf7, 0xe2, 0xf7, 0x7b, 0xf4, 0x77, 0xf4, 0x5c, 0xf1, 0x5b, 0xf1, + 0xa0, 0xee, 0x9b, 0xee, 0x4d, 0xec, 0x4d, 0xec, 0x6b, 0xea, 0x67, 0xea, + 0x08, 0xe9, 0x07, 0xe9, 0x22, 0xe8, 0x20, 0xe8, 0xc3, 0xe7, 0xbe, 0xe7, + 0xe6, 0xe7, 0xe5, 0xe7, 0x93, 0xe8, 0x90, 0xe8, 0xc3, 0xe9, 0xc1, 0xe9, + 0x7a, 0xeb, 0x77, 0xeb, 0xa8, 0xed, 0xa5, 0xed, 0x4c, 0xf0, 0x4b, 0xf0, + 0x53, 0xf3, 0x4f, 0xf3, 0xb1, 0xf6, 0xaf, 0xf6, 0x53, 0xfa, 0x4e, 0xfa, + 0x21, 0xfe, 0x20, 0xfe, 0x0c, 0x02, 0x09, 0x02, 0xfb, 0x05, 0xf8, 0x05, + 0xda, 0x09, 0xd7, 0x09, 0x96, 0x0d, 0x95, 0x0d, 0x1f, 0x11, 0x1c, 0x11, + 0x61, 0x14, 0x5e, 0x14, 0x53, 0x17, 0x51, 0x17, 0xe8, 0x19, 0xe4, 0x19, + 0x15, 0x1c, 0x14, 0x1c, 0xd3, 0x1d, 0xd0, 0x1d, 0x1d, 0x1f, 0x19, 0x1f, + 0xe7, 0x1f, 0xe7, 0x1f, 0x33, 0x20, 0x2f, 0x20, 0xf6, 0x1f, 0xf6, 0x1f, + 0x32, 0x1f, 0x2e, 0x1f, 0xe3, 0x1d, 0xe1, 0x1d, 0x0d, 0x1c, 0x0a, 0x1c, + 0xb1, 0x19, 0xae, 0x19, 0xdd, 0x16, 0xdb, 0x16, 0x99, 0x13, 0x97, 0x13, + 0xff, 0x0f, 0xfc, 0x0f, 0x1c, 0x0c, 0x19, 0x0c, 0x0b, 0x08, 0x08, 0x08, + 0xe3, 0x03, 0xe1, 0x03, 0xb8, 0xff, 0xb6, 0xff, 0xa9, 0xfb, 0xa6, 0xfb, + 0xbf, 0xf7, 0xbd, 0xf7, 0x1b, 0xf4, 0x18, 0xf4, 0xbf, 0xf0, 0xbd, 0xf0, + 0xc2, 0xed, 0xbe, 0xed, 0x28, 0xeb, 0x26, 0xeb, 0xfc, 0xe8, 0xfa, 0xe8, + 0x43, 0xe7, 0x40, 0xe7, 0xfd, 0xe5, 0xfc, 0xe5, 0x36, 0xe5, 0x31, 0xe5, + 0xe4, 0xe4, 0xe4, 0xe4, 0x17, 0xe5, 0x11, 0xe5, 0xc1, 0xe5, 0xc0, 0xe5, + 0xee, 0xe6, 0xe9, 0xe6, 0x94, 0xe8, 0x91, 0xe8, 0xb2, 0xea, 0xb0, 0xea, + 0x3d, 0xed, 0x3a, 0xed, 0x33, 0xf0, 0x31, 0xf0, 0x7d, 0xf3, 0x7a, 0xf3, + 0x0f, 0xf7, 0x0e, 0xf7, 0xd5, 0xfa, 0xd3, 0xfa, 0xb8, 0xfe, 0xb5, 0xfe, + 0xa1, 0x02, 0x9f, 0x02, 0x7b, 0x06, 0x79, 0x06, 0x33, 0x0a, 0x30, 0x0a, + 0xb0, 0x0d, 0xae, 0x0d, 0xe9, 0x10, 0xe5, 0x10, 0xc7, 0x13, 0xc6, 0x13, + 0x44, 0x16, 0x42, 0x16, 0x51, 0x18, 0x4e, 0x18, 0xe7, 0x19, 0xe4, 0x19, + 0xfd, 0x1a, 0xfc, 0x1a, 0x92, 0x1b, 0x8f, 0x1b, 0x9a, 0x1b, 0x98, 0x1b, + 0x1a, 0x1b, 0x18, 0x1b, 0x0d, 0x1a, 0x09, 0x1a, 0x72, 0x18, 0x71, 0x18, + 0x58, 0x16, 0x54, 0x16, 0xb8, 0x13, 0xb7, 0x13, 0xb0, 0x10, 0xac, 0x10, + 0x3f, 0x0d, 0x3e, 0x0d, 0x87, 0x09, 0x82, 0x09, 0x92, 0x05, 0x8f, 0x05, + 0x77, 0x01, 0x76, 0x01, 0x53, 0xfd, 0x4e, 0xfd, 0x32, 0xf9, 0x32, 0xf9, + 0x34, 0xf5, 0x2f, 0xf5, 0x60, 0xf1, 0x5e, 0xf1, 0xce, 0xed, 0xcc, 0xed, + 0x8b, 0xea, 0x89, 0xea, 0x9f, 0xe7, 0x9c, 0xe7, 0x15, 0xe5, 0x14, 0xe5, + 0xf2, 0xe2, 0xf0, 0xe2, 0x3f, 0xe1, 0x3d, 0xe1, 0xff, 0xdf, 0xfd, 0xdf, + 0x39, 0xdf, 0x36, 0xdf, 0xef, 0xde, 0xee, 0xde, 0x26, 0xdf, 0x23, 0xdf, + 0xe2, 0xdf, 0xe0, 0xdf, 0x21, 0xe1, 0x21, 0xe1, 0xe6, 0xe2, 0xe2, 0xe2, + 0x29, 0xe5, 0x29, 0xe5, 0xe3, 0xe7, 0xe0, 0xe7, 0x0f, 0xeb, 0x0c, 0xeb, + 0x94, 0xee, 0x95, 0xee, 0x69, 0xf2, 0x64, 0xf2, 0x6c, 0xf6, 0x6c, 0xf6, + 0x8e, 0xfa, 0x89, 0xfa, 0xb3, 0xfe, 0xb1, 0xfe, 0xc0, 0x02, 0xbd, 0x02, + 0xab, 0x06, 0xa8, 0x06, 0x53, 0x0a, 0x51, 0x0a, 0xb3, 0x0d, 0xb0, 0x0d, + 0xb4, 0x10, 0xb2, 0x10, 0x4e, 0x13, 0x4d, 0x13, 0x7b, 0x15, 0x78, 0x15, + 0x2f, 0x17, 0x2d, 0x17, 0x6c, 0x18, 0x6a, 0x18, 0x27, 0x19, 0x26, 0x19, + 0x64, 0x19, 0x63, 0x19, 0x1d, 0x19, 0x1a, 0x19, 0x52, 0x18, 0x50, 0x18, + 0x09, 0x17, 0x08, 0x17, 0x40, 0x15, 0x3f, 0x15, 0x02, 0x13, 0x01, 0x13, + 0x53, 0x10, 0x51, 0x10, 0x40, 0x0d, 0x3e, 0x0d, 0xda, 0x09, 0xd8, 0x09, + 0x2f, 0x06, 0x2d, 0x06, 0x58, 0x02, 0x58, 0x02, 0x69, 0xfe, 0x68, 0xfe, + 0x78, 0xfa, 0x77, 0xfa, 0x99, 0xf6, 0x98, 0xf6, 0xe4, 0xf2, 0xe1, 0xf2, + 0x66, 0xef, 0x66, 0xef, 0x36, 0xec, 0x32, 0xec, 0x5b, 0xe9, 0x5b, 0xe9, + 0xe8, 0xe6, 0xe6, 0xe6, 0xe0, 0xe4, 0xde, 0xe4, 0x52, 0xe3, 0x51, 0xe3, + 0x42, 0xe2, 0x40, 0xe2, 0xb7, 0xe1, 0xb4, 0xe1, 0xb1, 0xe1, 0xb0, 0xe1, + 0x37, 0xe2, 0x36, 0xe2, 0x4b, 0xe3, 0x49, 0xe3, 0xe5, 0xe4, 0xe3, 0xe4, + 0x09, 0xe7, 0x08, 0xe7, 0xa1, 0xe9, 0x9f, 0xe9, 0xac, 0xec, 0xab, 0xec, + 0x10, 0xf0, 0x0e, 0xf0, 0xbd, 0xf3, 0xbb, 0xf3, 0xa0, 0xf7, 0x9c, 0xf7, + 0x9d, 0xfb, 0x9b, 0xfb, 0xa3, 0xff, 0xa2, 0xff, 0xa1, 0x03, 0x9f, 0x03, + 0x7b, 0x07, 0x79, 0x07, 0x29, 0x0b, 0x27, 0x0b, 0x97, 0x0e, 0x93, 0x0e, + 0xb9, 0x11, 0xb7, 0x11, 0x86, 0x14, 0x83, 0x14, 0xf3, 0x16, 0xf0, 0x16, + 0xf9, 0x18, 0xf8, 0x18, 0x9a, 0x1a, 0x95, 0x1a, 0xc4, 0x1b, 0xc3, 0x1b, + 0x7f, 0x1c, 0x7a, 0x1c, 0xbc, 0x1c, 0xba, 0x1c, 0x7f, 0x1c, 0x7d, 0x1c, + 0xc5, 0x1b, 0xc1, 0x1b, 0x89, 0x1a, 0x87, 0x1a, 0xd8, 0x18, 0xd3, 0x18, + 0xaa, 0x16, 0xa7, 0x16, 0x10, 0x14, 0x0e, 0x14, 0x10, 0x11, 0x0d, 0x11, + 0xbd, 0x0d, 0xb8, 0x0d, 0x24, 0x0a, 0x23, 0x0a, 0x5f, 0x06, 0x5c, 0x06, + 0x82, 0x02, 0x81, 0x02, 0xa3, 0xfe, 0xa0, 0xfe, 0xdd, 0xfa, 0xdc, 0xfa, + 0x40, 0xf7, 0x3c, 0xf7, 0xe0, 0xf3, 0xdf, 0xf3, 0xd2, 0xf0, 0xce, 0xf0, + 0x1b, 0xee, 0x19, 0xee, 0xd1, 0xeb, 0xcf, 0xeb, 0xf5, 0xe9, 0xf3, 0xe9, + 0x96, 0xe8, 0x92, 0xe8, 0xb3, 0xe7, 0xb3, 0xe7, 0x58, 0xe7, 0x53, 0xe7, + 0x7e, 0xe7, 0x7d, 0xe7, 0x2f, 0xe8, 0x2d, 0xe8, 0x66, 0xe9, 0x63, 0xe9, + 0x24, 0xeb, 0x21, 0xeb, 0x5c, 0xed, 0x59, 0xed, 0x0d, 0xf0, 0x0b, 0xf0, + 0x22, 0xf3, 0x20, 0xf3, 0x93, 0xf6, 0x90, 0xf6, 0x4a, 0xfa, 0x48, 0xfa, + 0x31, 0xfe, 0x2e, 0xfe, 0x36, 0x02, 0x34, 0x02, 0x3d, 0x06, 0x3c, 0x06, + 0x39, 0x0a, 0x37, 0x0a, 0x13, 0x0e, 0x10, 0x0e, 0xb5, 0x11, 0xb5, 0x11, + 0x18, 0x15, 0x15, 0x15, 0x26, 0x18, 0x22, 0x18, 0xd9, 0x1a, 0xd8, 0x1a, + 0x24, 0x1d, 0x1f, 0x1d, 0x01, 0x1f, 0xff, 0x1e, 0x69, 0x20, 0x67, 0x20, + 0x53, 0x21, 0x52, 0x21, 0xc0, 0x21, 0xbd, 0x21, 0x9e, 0x21, 0x9c, 0x21, + 0xf8, 0x20, 0xf7, 0x20, 0xc3, 0x1f, 0xc0, 0x1f, 0x02, 0x1e, 0x00, 0x1e, + 0xb7, 0x1b, 0xb4, 0x1b, 0xeb, 0x18, 0xe8, 0x18, 0xa7, 0x15, 0xa5, 0x15, + 0x05, 0x12, 0x01, 0x12, 0x11, 0x0e, 0x10, 0x0e, 0xe7, 0x09, 0xe2, 0x09, + 0x9d, 0x05, 0x9b, 0x05, 0x4b, 0x01, 0x49, 0x01, 0x10, 0xfd, 0x0e, 0xfd, + 0xf9, 0xf8, 0xf7, 0xf8, 0x20, 0xf5, 0x1c, 0xf5, 0x92, 0xf1, 0x90, 0xf1, + 0x60, 0xee, 0x5d, 0xee, 0x94, 0xeb, 0x92, 0xeb, 0x35, 0xe9, 0x33, 0xe9, + 0x4a, 0xe7, 0x47, 0xe7, 0xd6, 0xe5, 0xd5, 0xe5, 0xdf, 0xe4, 0xdb, 0xe4, + 0x60, 0xe4, 0x5e, 0xe4, 0x63, 0xe4, 0x5f, 0xe4, 0xe3, 0xe4, 0xe1, 0xe4, + 0xe2, 0xe5, 0xdf, 0xe5, 0x61, 0xe7, 0x5f, 0xe7, 0x57, 0xe9, 0x54, 0xe9, + 0xc4, 0xeb, 0xc1, 0xeb, 0x99, 0xee, 0x97, 0xee, 0xcc, 0xf1, 0xca, 0xf1, + 0x56, 0xf5, 0x52, 0xf5, 0x15, 0xf9, 0x14, 0xf9, 0x02, 0xfd, 0xff, 0xfc, + 0xfd, 0x00, 0xfb, 0x00, 0xf2, 0x04, 0xf0, 0x04, 0xcd, 0x08, 0xca, 0x08, + 0x77, 0x0c, 0x72, 0x0c, 0xdd, 0x0f, 0xdd, 0x0f, 0xf5, 0x12, 0xf1, 0x12, + 0xa7, 0x15, 0xa5, 0x15, 0xf1, 0x17, 0xed, 0x17, 0xc2, 0x19, 0xc0, 0x19, + 0x17, 0x1b, 0x13, 0x1b, 0xe8, 0x1b, 0xe6, 0x1b, 0x2e, 0x1c, 0x2a, 0x1c, + 0xea, 0x1b, 0xe8, 0x1b, 0x19, 0x1b, 0x15, 0x1b, 0xba, 0x19, 0xb8, 0x19, + 0xd7, 0x17, 0xd4, 0x17, 0x6f, 0x15, 0x6c, 0x15, 0x96, 0x12, 0x94, 0x12, + 0x55, 0x0f, 0x51, 0x0f, 0xc2, 0x0b, 0xc1, 0x0b, 0xed, 0x07, 0xea, 0x07, + 0xed, 0x03, 0xeb, 0x03, 0xd9, 0xff, 0xd6, 0xff, 0xc3, 0xfb, 0xc1, 0xfb, + 0xc5, 0xf7, 0xc3, 0xf7, 0xef, 0xf3, 0xed, 0xf3, 0x52, 0xf0, 0x4e, 0xf0, + 0xff, 0xec, 0xfd, 0xec, 0xfc, 0xe9, 0xfb, 0xe9, 0x59, 0xe7, 0x57, 0xe7, + 0x19, 0xe5, 0x16, 0xe5, 0x41, 0xe3, 0x3d, 0xe3, 0xdc, 0xe1, 0xda, 0xe1, + 0xed, 0xe0, 0xeb, 0xe0, 0x7c, 0xe0, 0x79, 0xe0, 0x88, 0xe0, 0x86, 0xe0, + 0x19, 0xe1, 0x16, 0xe1, 0x2f, 0xe2, 0x2b, 0xe2, 0xc2, 0xe3, 0xc2, 0xe3, + 0xda, 0xe5, 0xd7, 0xe5, 0x64, 0xe8, 0x63, 0xe8, 0x60, 0xeb, 0x5d, 0xeb, + 0xba, 0xee, 0xb7, 0xee, 0x5e, 0xf2, 0x5c, 0xf2, 0x3b, 0xf6, 0x38, 0xf6, + 0x35, 0xfa, 0x34, 0xfa, 0x36, 0xfe, 0x34, 0xfe, 0x2b, 0x02, 0x25, 0x02, + 0xf4, 0x05, 0xf4, 0x05, 0x8a, 0x09, 0x85, 0x09, 0xd1, 0x0c, 0xd1, 0x0c, + 0xc3, 0x0f, 0xc0, 0x0f, 0x4f, 0x12, 0x4d, 0x12, 0x6d, 0x14, 0x6a, 0x14, + 0x15, 0x16, 0x14, 0x16, 0x44, 0x17, 0x43, 0x17, 0xf7, 0x17, 0xf4, 0x17, + 0x24, 0x18, 0x23, 0x18, 0xd4, 0x17, 0xd1, 0x17, 0xfe, 0x16, 0xfb, 0x16, + 0xaa, 0x15, 0xa6, 0x15, 0xd8, 0x13, 0xd4, 0x13, 0x91, 0x11, 0x92, 0x11, + 0xdf, 0x0e, 0xda, 0x0e, 0xca, 0x0b, 0xca, 0x0b, 0x66, 0x08, 0x62, 0x08, + 0xc4, 0x04, 0xc1, 0x04, 0xfa, 0x00, 0xf7, 0x00, 0x19, 0xfd, 0x14, 0xfd, + 0x3b, 0xf9, 0x37, 0xf9, 0x70, 0xf5, 0x6d, 0xf5, 0xd1, 0xf1, 0xce, 0xf1, + 0x6c, 0xee, 0x69, 0xee, 0x4f, 0xeb, 0x4c, 0xeb, 0x8b, 0xe8, 0x8a, 0xe8, + 0x2e, 0xe6, 0x29, 0xe6, 0x3a, 0xe4, 0x39, 0xe4, 0xc0, 0xe2, 0xbc, 0xe2, + 0xc2, 0xe1, 0xc1, 0xe1, 0x47, 0xe1, 0x44, 0xe1, 0x55, 0xe1, 0x50, 0xe1, + 0xe9, 0xe1, 0xe9, 0xe1, 0x0e, 0xe3, 0x09, 0xe3, 0xb9, 0xe4, 0xb7, 0xe4, + 0xe9, 0xe6, 0xe7, 0xe6, 0x94, 0xe9, 0x91, 0xe9, 0xa9, 0xec, 0xa8, 0xec, + 0x1d, 0xf0, 0x19, 0xf0, 0xd7, 0xf3, 0xd6, 0xf3, 0xc4, 0xf7, 0xc0, 0xf7, + 0xcb, 0xfb, 0xc9, 0xfb, 0xd6, 0xff, 0xd3, 0xff, 0xcf, 0x03, 0xcd, 0x03, + 0xa9, 0x07, 0xa4, 0x07, 0x49, 0x0b, 0x48, 0x0b, 0xac, 0x0e, 0xa9, 0x0e, + 0xc1, 0x11, 0xbe, 0x11, 0x7d, 0x14, 0x7a, 0x14, 0xde, 0x16, 0xd9, 0x16, + 0xd6, 0x18, 0xd4, 0x18, 0x67, 0x1a, 0x63, 0x1a, 0x88, 0x1b, 0x84, 0x1b, + 0x38, 0x1c, 0x37, 0x1c, 0x75, 0x1c, 0x6f, 0x1c, 0x33, 0x1c, 0x31, 0x1c, + 0x7a, 0x1b, 0x76, 0x1b, 0x45, 0x1a, 0x41, 0x1a, 0x97, 0x18, 0x94, 0x18, + 0x74, 0x16, 0x70, 0x16, 0xe7, 0x13, 0xe2, 0x13, 0xf2, 0x10, 0xef, 0x10, + 0xad, 0x0d, 0xaa, 0x0d, 0x20, 0x0a, 0x1d, 0x0a, 0x68, 0x06, 0x64, 0x06, + 0x93, 0x02, 0x90, 0x02, 0xbc, 0xfe, 0xb9, 0xfe, 0xfa, 0xfa, 0xf5, 0xfa, + 0x5c, 0xf7, 0x59, 0xf7, 0xfc, 0xf3, 0xf7, 0xf3, 0xe5, 0xf0, 0xe2, 0xf0, + 0x29, 0xee, 0x25, 0xee, 0xd3, 0xeb, 0xd0, 0xeb, 0xeb, 0xe9, 0xe8, 0xe9, + 0x7c, 0xe8, 0x78, 0xe8, 0x87, 0xe7, 0x85, 0xe7, 0x17, 0xe7, 0x14, 0xe7, + 0x29, 0xe7, 0x27, 0xe7, 0xc1, 0xe7, 0xbb, 0xe7, 0xdc, 0xe8, 0xd9, 0xe8, + 0x79, 0xea, 0x75, 0xea, 0x95, 0xec, 0x91, 0xec, 0x21, 0xef, 0x1e, 0xef, + 0x14, 0xf2, 0x10, 0xf2, 0x5e, 0xf5, 0x5a, 0xf5, 0xed, 0xf8, 0xeb, 0xf8, + 0xb4, 0xfc, 0xad, 0xfc, 0x92, 0x00, 0x91, 0x00, 0x7e, 0x04, 0x79, 0x04, + 0x5d, 0x08, 0x5a, 0x08, 0x1d, 0x0c, 0x19, 0x0c, 0xb0, 0x0f, 0xae, 0x0f, + 0x03, 0x13, 0xfd, 0x12, 0x0a, 0x16, 0x07, 0x16, 0xbc, 0x18, 0xb6, 0x18, + 0x0a, 0x1b, 0x09, 0x1b, 0xf6, 0x1c, 0xef, 0x1c, 0x6c, 0x1e, 0x69, 0x1e, + 0x73, 0x1f, 0x6c, 0x1f, 0xfd, 0x1f, 0xf9, 0x1f, 0x0a, 0x20, 0x07, 0x20, + 0x97, 0x1f, 0x93, 0x1f, 0xa1, 0x1e, 0x9e, 0x1e, 0x2a, 0x1d, 0x27, 0x1d, + 0x36, 0x1b, 0x32, 0x1b, 0xc7, 0x18, 0xc4, 0x18, 0xeb, 0x15, 0xe5, 0x15, + 0xaa, 0x12, 0xa6, 0x12, 0x1d, 0x0f, 0x1a, 0x0f, 0x56, 0x0b, 0x53, 0x0b, + 0x6a, 0x07, 0x66, 0x07, 0x71, 0x03, 0x6e, 0x03, 0x7f, 0xff, 0x7e, 0xff, + 0xad, 0xfb, 0xa9, 0xfb, 0x0b, 0xf8, 0x08, 0xf8, 0xab, 0xf4, 0xa8, 0xf4, + 0x9b, 0xf1, 0x98, 0xf1, 0xe6, 0xee, 0xe3, 0xee, 0x97, 0xec, 0x94, 0xec, + 0xb1, 0xea, 0xae, 0xea, 0x3e, 0xe9, 0x3a, 0xe9, 0x3b, 0xe8, 0x39, 0xe8, + 0xb5, 0xe7, 0xaf, 0xe7, 0xa2, 0xe7, 0x9f, 0xe7, 0x09, 0xe8, 0x04, 0xe8, + 0xe5, 0xe8, 0xe4, 0xe8, 0x39, 0xea, 0x33, 0xea, 0xfb, 0xeb, 0xf9, 0xeb, + 0x27, 0xee, 0x22, 0xee, 0xb1, 0xf0, 0xae, 0xf0, 0x91, 0xf3, 0x8d, 0xf3, + 0xb4, 0xf6, 0xb1, 0xf6, 0x11, 0xfa, 0x0e, 0xfa, 0x8e, 0xfd, 0x8a, 0xfd, + 0x1c, 0x01, 0x18, 0x01, 0xa6, 0x04, 0xa1, 0x04, 0x15, 0x08, 0x11, 0x08, + 0x5c, 0x0b, 0x59, 0x0b, 0x68, 0x0e, 0x64, 0x0e, 0x2b, 0x11, 0x27, 0x11, + 0x97, 0x13, 0x92, 0x13, 0xa2, 0x15, 0x9f, 0x15, 0x41, 0x17, 0x3b, 0x17, + 0x6b, 0x18, 0x69, 0x18, 0x1f, 0x19, 0x19, 0x19, 0x53, 0x19, 0x50, 0x19, + 0x0a, 0x19, 0x05, 0x19, 0x3d, 0x18, 0x39, 0x18, 0xf7, 0x16, 0xf3, 0x16, + 0x31, 0x15, 0x2d, 0x15, 0x00, 0x13, 0xfd, 0x12, 0x63, 0x10, 0x5e, 0x10, + 0x70, 0x0d, 0x6b, 0x0d, 0x33, 0x0a, 0x2f, 0x0a, 0xb9, 0x06, 0xb5, 0x06, + 0x22, 0x03, 0x1f, 0x03, 0x74, 0xff, 0x70, 0xff, 0xc9, 0xfb, 0xc5, 0xfb, + 0x35, 0xf8, 0x30, 0xf8, 0xc0, 0xf4, 0xbe, 0xf4, 0x86, 0xf1, 0x82, 0xf1, + 0x89, 0xee, 0x84, 0xee, 0xda, 0xeb, 0xd6, 0xeb, 0x7c, 0xe9, 0x79, 0xe9, + 0x7e, 0xe7, 0x78, 0xe7, 0xde, 0xe5, 0xdb, 0xe5, 0xa9, 0xe4, 0xa4, 0xe4, + 0xde, 0xe3, 0xdb, 0xe3, 0x85, 0xe3, 0x81, 0xe3, 0x9e, 0xe3, 0x9a, 0xe3, + 0x2a, 0xe4, 0x29, 0xe4, 0x31, 0xe5, 0x2c, 0xe5, 0xa7, 0xe6, 0xa5, 0xe6, + 0x90, 0xe8, 0x8e, 0xe8, 0xe0, 0xea, 0xdd, 0xea, 0x92, 0xed, 0x8e, 0xed, + 0x96, 0xf0, 0x94, 0xf0, 0xe1, 0xf3, 0xdd, 0xf3, 0x58, 0xf7, 0x57, 0xf7, + 0xf3, 0xfa, 0xed, 0xfa, 0x90, 0xfe, 0x8f, 0xfe, 0x26, 0x02, 0x20, 0x02, + 0x99, 0x05, 0x95, 0x05, 0xdc, 0x08, 0xda, 0x08, 0xdf, 0x0b, 0xda, 0x0b, + 0x92, 0x0e, 0x8f, 0x0e, 0xec, 0x10, 0xe8, 0x10, 0xe1, 0x12, 0xdf, 0x12, + 0x6e, 0x14, 0x68, 0x14, 0x85, 0x15, 0x84, 0x15, 0x2c, 0x16, 0x28, 0x16, + 0x5a, 0x16, 0x56, 0x16, 0x0d, 0x16, 0x0a, 0x16, 0x49, 0x15, 0x46, 0x15, + 0x0c, 0x14, 0x09, 0x14, 0x62, 0x12, 0x5d, 0x12, 0x42, 0x10, 0x3f, 0x10, + 0xc4, 0x0d, 0xc1, 0x0d, 0xe6, 0x0a, 0xe3, 0x0a, 0xc4, 0x07, 0xc1, 0x07, + 0x65, 0x04, 0x64, 0x04, 0xe2, 0x00, 0xde, 0x00, 0x46, 0xfd, 0x45, 0xfd, + 0xad, 0xf9, 0xaa, 0xf9, 0x23, 0xf6, 0x21, 0xf6, 0xc2, 0xf2, 0xbf, 0xf2, + 0x91, 0xef, 0x8d, 0xef, 0xa2, 0xec, 0xa0, 0xec, 0x04, 0xea, 0x02, 0xea, + 0xbf, 0xe7, 0xba, 0xe7, 0xda, 0xe5, 0xd9, 0xe5, 0x62, 0xe4, 0x5f, 0xe4, + 0x5a, 0xe3, 0x56, 0xe3, 0xca, 0xe2, 0xc8, 0xe2, 0xb2, 0xe2, 0xac, 0xe2, + 0x16, 0xe3, 0x15, 0xe3, 0xf7, 0xe3, 0xf3, 0xe3, 0x56, 0xe5, 0x53, 0xe5, + 0x2f, 0xe7, 0x2c, 0xe7, 0x79, 0xe9, 0x75, 0xe9, 0x2d, 0xec, 0x2a, 0xec, + 0x37, 0xef, 0x33, 0xef, 0x8d, 0xf2, 0x88, 0xf2, 0x19, 0xf6, 0x16, 0xf6, + 0xc9, 0xf9, 0xc5, 0xf9, 0x8a, 0xfd, 0x87, 0xfd, 0x43, 0x01, 0x41, 0x01, + 0xe6, 0x04, 0xe1, 0x04, 0x5c, 0x08, 0x5a, 0x08, 0x9c, 0x0b, 0x95, 0x0b, + 0x94, 0x0e, 0x93, 0x0e, 0x40, 0x11, 0x3b, 0x11, 0x95, 0x13, 0x92, 0x13, + 0x8b, 0x15, 0x89, 0x15, 0x24, 0x17, 0x20, 0x17, 0x52, 0x18, 0x4f, 0x18, + 0x17, 0x19, 0x14, 0x19, 0x74, 0x19, 0x6f, 0x19, 0x5b, 0x19, 0x58, 0x19, + 0xda, 0x18, 0xd6, 0x18, 0xe3, 0x17, 0xe1, 0x17, 0x85, 0x16, 0x80, 0x16, + 0xbb, 0x14, 0xb9, 0x14, 0x93, 0x12, 0x8e, 0x12, 0x10, 0x10, 0x0d, 0x10, + 0x42, 0x0d, 0x3e, 0x0d, 0x34, 0x0a, 0x32, 0x0a, 0xf9, 0x06, 0xf6, 0x06, + 0xa5, 0x03, 0xa2, 0x03, 0x46, 0x00, 0x40, 0x00, 0xf2, 0xfc, 0xf0, 0xfc, + 0xbf, 0xf9, 0xbb, 0xf9, 0xb6, 0xf6, 0xb2, 0xf6, 0xef, 0xf3, 0xed, 0xf3, + 0x72, 0xf1, 0x6d, 0xf1, 0x4a, 0xef, 0x47, 0xef, 0x86, 0xed, 0x82, 0xed, + 0x26, 0xec, 0x21, 0xec, 0x36, 0xeb, 0x33, 0xeb, 0xbc, 0xea, 0xba, 0xea, + 0xb4, 0xea, 0xb0, 0xea, 0x25, 0xeb, 0x21, 0xeb, 0x07, 0xec, 0x05, 0xec, + 0x60, 0xed, 0x5c, 0xed, 0x26, 0xef, 0x25, 0xef, 0x4f, 0xf1, 0x4b, 0xf1, + 0xd8, 0xf3, 0xd6, 0xf3, 0xa9, 0xf6, 0xa4, 0xf6, 0xbd, 0xf9, 0xbb, 0xf9, + 0xfe, 0xfc, 0xf9, 0xfc, 0x5b, 0x00, 0x59, 0x00, 0xca, 0x03, 0xc5, 0x03, + 0x2b, 0x07, 0x27, 0x07, 0x7c, 0x0a, 0x78, 0x0a, 0xa2, 0x0d, 0x9f, 0x0d, + 0x97, 0x10, 0x93, 0x10, 0x4d, 0x13, 0x48, 0x13, 0xb3, 0x15, 0xb0, 0x15, + 0xc9, 0x17, 0xc4, 0x17, 0x80, 0x19, 0x7e, 0x19, 0xd6, 0x1a, 0xd2, 0x1a, + 0xc5, 0x1b, 0xc1, 0x1b, 0x43, 0x1c, 0x3f, 0x1c, 0x56, 0x1c, 0x52, 0x1c, + 0xf1, 0x1b, 0xed, 0x1b, 0x1b, 0x1b, 0x17, 0x1b, 0xd3, 0x19, 0xd0, 0x19, + 0x1e, 0x18, 0x18, 0x18, 0xfd, 0x15, 0xfb, 0x15, 0x7d, 0x13, 0x79, 0x13, + 0xa9, 0x10, 0xa4, 0x10, 0x8f, 0x0d, 0x8c, 0x0d, 0x44, 0x0a, 0x41, 0x0a, + 0xd6, 0x06, 0xd3, 0x06, 0x5b, 0x03, 0x5a, 0x03, 0xe7, 0xff, 0xe2, 0xff, + 0x88, 0xfc, 0x86, 0xfc, 0x53, 0xf9, 0x4f, 0xf9, 0x55, 0xf6, 0x53, 0xf6, + 0x9c, 0xf3, 0x99, 0xf3, 0x35, 0xf1, 0x2f, 0xf1, 0x20, 0xef, 0x1f, 0xef, + 0x73, 0xed, 0x6e, 0xed, 0x27, 0xec, 0x23, 0xec, 0x42, 0xeb, 0x40, 0xeb, + 0xcf, 0xea, 0xcc, 0xea, 0xc7, 0xea, 0xc4, 0xea, 0x2e, 0xeb, 0x2b, 0xeb, + 0x04, 0xec, 0x01, 0xec, 0x41, 0xed, 0x3e, 0xed, 0xe8, 0xee, 0xe5, 0xee, + 0xe9, 0xf0, 0xe6, 0xf0, 0x46, 0xf3, 0x42, 0xf3, 0xeb, 0xf5, 0xe7, 0xf5, + 0xcc, 0xf8, 0xc9, 0xf8, 0xdd, 0xfb, 0xd8, 0xfb, 0x0a, 0xff, 0x08, 0xff, + 0x46, 0x02, 0x42, 0x02, 0x7a, 0x05, 0x77, 0x05, 0x98, 0x08, 0x94, 0x08, + 0x91, 0x0b, 0x8c, 0x0b, 0x52, 0x0e, 0x50, 0x0e, 0xd4, 0x10, 0xcf, 0x10, + 0x05, 0x13, 0x02, 0x13, 0xdf, 0x14, 0xda, 0x14, 0x57, 0x16, 0x52, 0x16, + 0x65, 0x17, 0x67, 0x17, 0x0b, 0x18, 0x04, 0x18, 0x3a, 0x18, 0x38, 0x18, + 0xf6, 0x17, 0xf2, 0x17, 0x3c, 0x17, 0x39, 0x17, 0x0c, 0x16, 0x09, 0x16, + 0x6e, 0x14, 0x6b, 0x14, 0x66, 0x12, 0x62, 0x12, 0xfe, 0x0f, 0xfa, 0x0f, + 0x41, 0x0d, 0x3f, 0x0d, 0x40, 0x0a, 0x3b, 0x0a, 0x07, 0x07, 0x04, 0x07, + 0xaa, 0x03, 0xa7, 0x03, 0x39, 0x00, 0x36, 0x00, 0xc6, 0xfc, 0xc4, 0xfc, + 0x62, 0xf9, 0x5e, 0xf9, 0x1d, 0xf6, 0x1b, 0xf6, 0x05, 0xf3, 0x01, 0xf3, + 0x28, 0xf0, 0x26, 0xf0, 0x8f, 0xed, 0x8a, 0xed, 0x42, 0xeb, 0x3f, 0xeb, + 0x4d, 0xe9, 0x49, 0xe9, 0xaf, 0xe7, 0xaa, 0xe7, 0x73, 0xe6, 0x70, 0xe6, + 0x9c, 0xe5, 0x99, 0xe5, 0x2c, 0xe5, 0x29, 0xe5, 0x28, 0xe5, 0x25, 0xe5, + 0x8c, 0xe5, 0x89, 0xe5, 0x61, 0xe6, 0x5d, 0xe6, 0x9d, 0xe7, 0x9a, 0xe7, + 0x3f, 0xe9, 0x3b, 0xe9, 0x44, 0xeb, 0x42, 0xeb, 0x9f, 0xed, 0x9a, 0xed, + 0x49, 0xf0, 0x47, 0xf0, 0x35, 0xf3, 0x34, 0xf3, 0x52, 0xf6, 0x4d, 0xf6, + 0x8d, 0xf9, 0x8c, 0xf9, 0xd7, 0xfc, 0xd4, 0xfc, 0x1c, 0x00, 0x19, 0x00, + 0x4d, 0x03, 0x4b, 0x03, 0x52, 0x06, 0x4f, 0x06, 0x28, 0x09, 0x25, 0x09, + 0xb4, 0x0b, 0xb3, 0x0b, 0xfc, 0x0d, 0xf7, 0x0d, 0xe4, 0x0f, 0xe3, 0x0f, + 0x71, 0x11, 0x6c, 0x11, 0x9b, 0x12, 0x99, 0x12, 0x55, 0x13, 0x54, 0x13, + 0xad, 0x13, 0xa8, 0x13, 0x90, 0x13, 0x8f, 0x13, 0x08, 0x13, 0x04, 0x13, + 0x19, 0x12, 0x16, 0x12, 0xba, 0x10, 0xb8, 0x10, 0xff, 0x0e, 0xfd, 0x0e, + 0xe6, 0x0c, 0xe3, 0x0c, 0x78, 0x0a, 0x75, 0x0a, 0xc8, 0x07, 0xc5, 0x07, + 0xdf, 0x04, 0xdb, 0x04, 0xce, 0x01, 0xcc, 0x01, 0xa5, 0xfe, 0xa2, 0xfe, + 0x76, 0xfb, 0x72, 0xfb, 0x4e, 0xf8, 0x4d, 0xf8, 0x42, 0xf5, 0x3e, 0xf5, + 0x5e, 0xf2, 0x5c, 0xf2, 0xb0, 0xef, 0xac, 0xef, 0x45, 0xed, 0x43, 0xed, + 0x24, 0xeb, 0x21, 0xeb, 0x5b, 0xe9, 0x59, 0xe9, 0xf1, 0xe7, 0xeb, 0xe7, + 0xe4, 0xe6, 0xe3, 0xe6, 0x45, 0xe6, 0x42, 0xe6, 0x0d, 0xe6, 0x0b, 0xe6, + 0x48, 0xe6, 0x46, 0xe6, 0xef, 0xe6, 0xec, 0xe6, 0x01, 0xe8, 0xff, 0xe7, + 0x83, 0xe9, 0x7f, 0xe9, 0x62, 0xeb, 0x61, 0xeb, 0xa5, 0xed, 0xa1, 0xed, + 0x2e, 0xf0, 0x2d, 0xf0, 0x02, 0xf3, 0xff, 0xf2, 0x05, 0xf6, 0x02, 0xf6, + 0x2b, 0xf9, 0x27, 0xf9, 0x64, 0xfc, 0x65, 0xfc, 0x9e, 0xff, 0x99, 0xff, + 0xc5, 0x02, 0xc6, 0x02, 0xd3, 0x05, 0xd0, 0x05, 0xaf, 0x08, 0xac, 0x08, + 0x56, 0x0b, 0x53, 0x0b, 0xb7, 0x0d, 0xb5, 0x0d, 0xd3, 0x0f, 0xd0, 0x0f, + 0x9b, 0x11, 0x98, 0x11, 0x11, 0x13, 0x0e, 0x13, 0x26, 0x14, 0x23, 0x14, + 0xe0, 0x14, 0xdf, 0x14, 0x3c, 0x15, 0x36, 0x15, 0x2e, 0x15, 0x2e, 0x15, + 0xc0, 0x14, 0xbd, 0x14, 0xf0, 0x13, 0xee, 0x13, 0xbf, 0x12, 0xbe, 0x12, + 0x35, 0x11, 0x32, 0x11, 0x56, 0x0f, 0x53, 0x0f, 0x2a, 0x0d, 0x27, 0x0d, + 0xbb, 0x0a, 0xb8, 0x0a, 0x1b, 0x08, 0x19, 0x08, 0x4f, 0x05, 0x4c, 0x05, + 0x70, 0x02, 0x6d, 0x02, 0x86, 0xff, 0x85, 0xff, 0xa7, 0xfc, 0xa6, 0xfc, + 0xe3, 0xf9, 0xe0, 0xf9, 0x42, 0xf7, 0x40, 0xf7, 0xde, 0xf4, 0xdb, 0xf4, + 0xb3, 0xf2, 0xb2, 0xf2, 0xda, 0xf0, 0xd7, 0xf0, 0x54, 0xef, 0x52, 0xef, + 0x29, 0xee, 0x27, 0xee, 0x63, 0xed, 0x5f, 0xed, 0x02, 0xed, 0x00, 0xed, + 0x0b, 0xed, 0x07, 0xed, 0x7c, 0xed, 0x7a, 0xed, 0x59, 0xee, 0x55, 0xee, + 0x9c, 0xef, 0x9b, 0xef, 0x43, 0xf1, 0x40, 0xf1, 0x41, 0xf3, 0x3d, 0xf3, + 0x92, 0xf5, 0x91, 0xf5, 0x28, 0xf8, 0x23, 0xf8, 0xf5, 0xfa, 0xf3, 0xfa, + 0xeb, 0xfd, 0xe9, 0xfd, 0xff, 0x00, 0xfb, 0x00, 0x1c, 0x04, 0x19, 0x04, + 0x34, 0x07, 0x31, 0x07, 0x39, 0x0a, 0x37, 0x0a, 0x1c, 0x0d, 0x18, 0x0d, + 0xd2, 0x0f, 0xcf, 0x0f, 0x4d, 0x12, 0x48, 0x12, 0x86, 0x14, 0x84, 0x14, + 0x71, 0x16, 0x6c, 0x16, 0x0c, 0x18, 0x08, 0x18, 0x4b, 0x19, 0x49, 0x19, + 0x2f, 0x1a, 0x28, 0x1a, 0xaa, 0x1a, 0xa7, 0x1a, 0xc5, 0x1a, 0xc1, 0x1a, + 0x72, 0x1a, 0x6d, 0x1a, 0xba, 0x19, 0xb6, 0x19, 0x95, 0x18, 0x93, 0x18, + 0x12, 0x17, 0x0d, 0x17, 0x2a, 0x15, 0x28, 0x15, 0xe9, 0x12, 0xe4, 0x12, + 0x59, 0x10, 0x58, 0x10, 0x8a, 0x0d, 0x85, 0x0d, 0x86, 0x0a, 0x83, 0x0a, + 0x66, 0x07, 0x61, 0x07, 0x30, 0x04, 0x2d, 0x04, 0xfe, 0x00, 0xfb, 0x00, + 0xdd, 0xfd, 0xda, 0xfd, 0xdc, 0xfa, 0xda, 0xfa, 0x0d, 0xf8, 0x09, 0xf8, + 0x75, 0xf5, 0x73, 0xf5, 0x26, 0xf3, 0x21, 0xf3, 0x25, 0xf1, 0x20, 0xf1, + 0x77, 0xef, 0x74, 0xef, 0x2b, 0xee, 0x27, 0xee, 0x3b, 0xed, 0x38, 0xed, + 0xae, 0xec, 0xaa, 0xec, 0x87, 0xec, 0x82, 0xec, 0xc3, 0xec, 0xc0, 0xec, + 0x65, 0xed, 0x60, 0xed, 0x67, 0xee, 0x65, 0xee, 0xc9, 0xef, 0xc4, 0xef, + 0x81, 0xf1, 0x7f, 0xf1, 0x8a, 0xf3, 0x85, 0xf3, 0xd8, 0xf5, 0xd6, 0xf5, + 0x64, 0xf8, 0x61, 0xf8, 0x21, 0xfb, 0x1f, 0xfb, 0xfe, 0xfd, 0xfb, 0xfd, + 0xe9, 0x00, 0xe7, 0x00, 0xdc, 0x03, 0xd8, 0x03, 0xbc, 0x06, 0xb8, 0x06, + 0x7e, 0x09, 0x7b, 0x09, 0x1c, 0x0c, 0x18, 0x0c, 0x7b, 0x0e, 0x78, 0x0e, + 0x9d, 0x10, 0x99, 0x10, 0x71, 0x12, 0x6e, 0x12, 0xed, 0x13, 0xec, 0x13, + 0x14, 0x15, 0x0f, 0x15, 0xd2, 0x15, 0xd1, 0x15, 0x31, 0x16, 0x2c, 0x16, + 0x23, 0x16, 0x22, 0x16, 0xb1, 0x15, 0xaa, 0x15, 0xd1, 0x14, 0xd1, 0x14, + 0x92, 0x13, 0x8d, 0x13, 0xf0, 0x11, 0xed, 0x11, 0xf6, 0x0f, 0xf2, 0x0f, + 0xaf, 0x0d, 0xab, 0x0d, 0x22, 0x0b, 0x21, 0x0b, 0x63, 0x08, 0x5f, 0x08, + 0x7b, 0x05, 0x78, 0x05, 0x79, 0x02, 0x77, 0x02, 0x72, 0xff, 0x6f, 0xff, + 0x6b, 0xfc, 0x69, 0xfc, 0x7c, 0xf9, 0x7a, 0xf9, 0xaf, 0xf6, 0xab, 0xf6, + 0x0b, 0xf4, 0x09, 0xf4, 0xa4, 0xf1, 0xa2, 0xf1, 0x7a, 0xef, 0x76, 0xef, + 0x9c, 0xed, 0x99, 0xed, 0x08, 0xec, 0x05, 0xec, 0xcb, 0xea, 0xc9, 0xea, + 0xe6, 0xe9, 0xe2, 0xe9, 0x5a, 0xe9, 0x58, 0xe9, 0x30, 0xe9, 0x2c, 0xe9, + 0x63, 0xe9, 0x5e, 0xe9, 0xf1, 0xe9, 0xef, 0xe9, 0xe3, 0xea, 0xdf, 0xea, + 0x29, 0xec, 0x26, 0xec, 0xc7, 0xed, 0xc4, 0xed, 0xb1, 0xef, 0xac, 0xef, + 0xde, 0xf1, 0xdb, 0xf1, 0x4a, 0xf4, 0x47, 0xf4, 0xe0, 0xf6, 0xdc, 0xf6, + 0x99, 0xf9, 0x96, 0xf9, 0x5f, 0xfc, 0x5c, 0xfc, 0x25, 0xff, 0x23, 0xff, + 0xe0, 0x01, 0xdc, 0x01, 0x7d, 0x04, 0x79, 0x04, 0xef, 0x06, 0xed, 0x06, + 0x2a, 0x09, 0x28, 0x09, 0x25, 0x0b, 0x21, 0x0b, 0xd6, 0x0c, 0xd4, 0x0c, + 0x34, 0x0e, 0x31, 0x0e, 0x3b, 0x0f, 0x36, 0x0f, 0xe4, 0x0f, 0xe3, 0x0f, + 0x31, 0x10, 0x2b, 0x10, 0x1b, 0x10, 0x1a, 0x10, 0xa4, 0x0f, 0xa1, 0x0f, + 0xce, 0x0e, 0xcc, 0x0e, 0x9e, 0x0d, 0x99, 0x0d, 0x13, 0x0c, 0x10, 0x0c, + 0x3c, 0x0a, 0x39, 0x0a, 0x1b, 0x08, 0x18, 0x08, 0xbd, 0x05, 0xba, 0x05, + 0x33, 0x03, 0x2f, 0x03, 0x80, 0x00, 0x7e, 0x00, 0xbe, 0xfd, 0xbb, 0xfd, + 0xf4, 0xfa, 0xf1, 0xfa, 0x30, 0xf8, 0x2c, 0xf8, 0x86, 0xf5, 0x82, 0xf5, + 0xf7, 0xf2, 0xf6, 0xf2, 0xa0, 0xf0, 0x9e, 0xf0, 0x7d, 0xee, 0x7a, 0xee, + 0x9f, 0xec, 0x9d, 0xec, 0x0c, 0xeb, 0x0a, 0xeb, 0xcc, 0xe9, 0xc9, 0xe9, + 0xe4, 0xe8, 0xe2, 0xe8, 0x5a, 0xe8, 0x57, 0xe8, 0x2f, 0xe8, 0x2c, 0xe8, + 0x68, 0xe8, 0x66, 0xe8, 0x05, 0xe9, 0x01, 0xe9, 0x05, 0xea, 0x01, 0xea, + 0x63, 0xeb, 0x62, 0xeb, 0x1d, 0xed, 0x1a, 0xed, 0x2d, 0xef, 0x29, 0xef, + 0x7c, 0xf1, 0x7a, 0xf1, 0x0f, 0xf4, 0x0b, 0xf4, 0xcd, 0xf6, 0xcb, 0xf6, + 0xad, 0xf9, 0xaa, 0xf9, 0x9d, 0xfc, 0x9a, 0xfc, 0x8f, 0xff, 0x8c, 0xff, + 0x75, 0x02, 0x72, 0x02, 0x41, 0x05, 0x3d, 0x05, 0xe6, 0x07, 0xe2, 0x07, + 0x56, 0x0a, 0x54, 0x0a, 0x8d, 0x0c, 0x89, 0x0c, 0x7c, 0x0e, 0x7a, 0x0e, + 0x25, 0x10, 0x21, 0x10, 0x7a, 0x11, 0x77, 0x11, 0x7c, 0x12, 0x77, 0x12, + 0x29, 0x13, 0x25, 0x13, 0x79, 0x13, 0x75, 0x13, 0x70, 0x13, 0x6e, 0x13, + 0x0d, 0x13, 0x09, 0x13, 0x4d, 0x12, 0x4a, 0x12, 0x39, 0x11, 0x36, 0x11, + 0xce, 0x0f, 0xca, 0x0f, 0x18, 0x0e, 0x16, 0x0e, 0x1a, 0x0c, 0x15, 0x0c, + 0xe2, 0x09, 0xde, 0x09, 0x74, 0x07, 0x70, 0x07, 0xe4, 0x04, 0xdf, 0x04, + 0x3b, 0x02, 0x38, 0x02, 0x89, 0xff, 0x87, 0xff, 0xde, 0xfc, 0xda, 0xfc, + 0x43, 0xfa, 0x40, 0xfa, 0xcf, 0xf7, 0xcb, 0xf7, 0x86, 0xf5, 0x81, 0xf5, + 0x76, 0xf3, 0x74, 0xf3, 0xac, 0xf1, 0xa7, 0xf1, 0x2b, 0xf0, 0x2a, 0xf0, + 0x02, 0xef, 0xff, 0xee, 0x31, 0xee, 0x2d, 0xee, 0xba, 0xed, 0xb7, 0xed, + 0xab, 0xed, 0xa7, 0xed, 0xf8, 0xed, 0xf5, 0xed, 0xaa, 0xee, 0xa7, 0xee, + 0xba, 0xef, 0xb8, 0xef, 0x26, 0xf1, 0x23, 0xf1, 0xe9, 0xf2, 0xe6, 0xf2, + 0xf5, 0xf4, 0xf2, 0xf4, 0x48, 0xf7, 0x45, 0xf7, 0xce, 0xf9, 0xcb, 0xf9, + 0x80, 0xfc, 0x7d, 0xfc, 0x4e, 0xff, 0x4c, 0xff, 0x2a, 0x02, 0x28, 0x02, + 0x09, 0x05, 0x06, 0x05, 0xda, 0x07, 0xd7, 0x07, 0x91, 0x0a, 0x8d, 0x0a, + 0x22, 0x0d, 0x1f, 0x0d, 0x7f, 0x0f, 0x7e, 0x0f, 0xaa, 0x11, 0xa6, 0x11, + 0x8a, 0x13, 0x89, 0x13, 0x28, 0x15, 0x24, 0x15, 0x70, 0x16, 0x6d, 0x16, + 0x68, 0x17, 0x66, 0x17, 0x06, 0x18, 0x02, 0x18, 0x48, 0x18, 0x46, 0x18, + 0x2f, 0x18, 0x2b, 0x18, 0xb5, 0x17, 0xb3, 0x17, 0xe2, 0x16, 0xde, 0x16, + 0xb0, 0x15, 0xad, 0x15, 0x2a, 0x14, 0x27, 0x14, 0x55, 0x12, 0x52, 0x12, + 0x35, 0x10, 0x33, 0x10, 0xd7, 0x0d, 0xd2, 0x0d, 0x47, 0x0b, 0x45, 0x0b, + 0x92, 0x08, 0x8e, 0x08, 0xca, 0x05, 0xc8, 0x05, 0xfa, 0x02, 0xf6, 0x02, + 0x33, 0x00, 0x31, 0x00, 0x82, 0xfd, 0x7f, 0xfd, 0xf4, 0xfa, 0xf0, 0xfa, + 0x97, 0xf8, 0x96, 0xf8, 0x75, 0xf6, 0x71, 0xf6, 0x93, 0xf4, 0x91, 0xf4, + 0xfe, 0xf2, 0xf8, 0xf2, 0xb9, 0xf1, 0xb8, 0xf1, 0xc9, 0xf0, 0xc4, 0xf0, + 0x32, 0xf0, 0x2f, 0xf0, 0xf3, 0xef, 0xf0, 0xef, 0x12, 0xf0, 0x0e, 0xf0, + 0x86, 0xf0, 0x84, 0xf0, 0x56, 0xf1, 0x4f, 0xf1, 0x74, 0xf2, 0x74, 0xf2, + 0xe6, 0xf3, 0xe2, 0xf3, 0x9c, 0xf5, 0x9a, 0xf5, 0x94, 0xf7, 0x90, 0xf7, + 0xbe, 0xf9, 0xbc, 0xf9, 0x14, 0xfc, 0x11, 0xfc, 0x89, 0xfe, 0x86, 0xfe, + 0x0c, 0x01, 0x08, 0x01, 0x94, 0x03, 0x90, 0x03, 0x11, 0x06, 0x0e, 0x06, + 0x76, 0x08, 0x73, 0x08, 0xbb, 0x0a, 0xb6, 0x0a, 0xca, 0x0c, 0xc9, 0x0c, + 0xa6, 0x0e, 0xa1, 0x0e, 0x3e, 0x10, 0x3c, 0x10, 0x89, 0x11, 0x87, 0x11, + 0x88, 0x12, 0x84, 0x12, 0x2e, 0x13, 0x2c, 0x13, 0x7a, 0x13, 0x75, 0x13, + 0x6a, 0x13, 0x69, 0x13, 0xfa, 0x12, 0xf8, 0x12, 0x32, 0x12, 0x2e, 0x12, + 0x0c, 0x11, 0x09, 0x11, 0x92, 0x0f, 0x8f, 0x0f, 0xce, 0x0d, 0xcc, 0x0d, + 0xc4, 0x0b, 0xc0, 0x0b, 0x82, 0x09, 0x81, 0x09, 0x10, 0x07, 0x0b, 0x07, + 0x80, 0x04, 0x7d, 0x04, 0xd5, 0x01, 0xd3, 0x01, 0x28, 0xff, 0x25, 0xff, + 0x80, 0xfc, 0x7c, 0xfc, 0xe5, 0xf9, 0xe3, 0xf9, 0x71, 0xf7, 0x6c, 0xf7, + 0x1c, 0xf5, 0x1a, 0xf5, 0x01, 0xf3, 0xfd, 0xf2, 0x1b, 0xf1, 0x16, 0xf1, + 0x74, 0xef, 0x72, 0xef, 0x1c, 0xee, 0x17, 0xee, 0x06, 0xed, 0x03, 0xed, + 0x45, 0xec, 0x42, 0xec, 0xd9, 0xeb, 0xd4, 0xeb, 0xbc, 0xeb, 0xb9, 0xeb, + 0xfc, 0xeb, 0xf6, 0xeb, 0x8b, 0xec, 0x8a, 0xec, 0x71, 0xed, 0x6c, 0xed, + 0xa8, 0xee, 0xa5, 0xee, 0x27, 0xf0, 0x22, 0xf0, 0xef, 0xf1, 0xeb, 0xf1, + 0xf0, 0xf3, 0xec, 0xf3, 0x26, 0xf6, 0x24, 0xf6, 0x84, 0xf8, 0x80, 0xf8, + 0xfd, 0xfa, 0xf9, 0xfa, 0x86, 0xfd, 0x84, 0xfd, 0x0c, 0x00, 0x07, 0x00, + 0x88, 0x02, 0x86, 0x02, 0xe9, 0x04, 0xe3, 0x04, 0x21, 0x07, 0x1e, 0x07, + 0x2f, 0x09, 0x29, 0x09, 0xf3, 0x0a, 0xf1, 0x0a, 0x83, 0x0c, 0x7d, 0x0c, + 0xbc, 0x0d, 0xba, 0x0d, 0xaa, 0x0e, 0xa8, 0x0e, 0x44, 0x0f, 0x3f, 0x0f, + 0x80, 0x0f, 0x7d, 0x0f, 0x67, 0x0f, 0x64, 0x0f, 0xf2, 0x0e, 0xee, 0x0e, + 0x25, 0x0e, 0x21, 0x0e, 0xff, 0x0c, 0xfd, 0x0c, 0x88, 0x0b, 0x85, 0x0b, + 0xc7, 0x09, 0xc3, 0x09, 0xc0, 0x07, 0xbc, 0x07, 0x84, 0x05, 0x7f, 0x05, + 0x16, 0x03, 0x12, 0x03, 0x8c, 0x00, 0x88, 0x00, 0xec, 0xfd, 0xe8, 0xfd, + 0x45, 0xfb, 0x40, 0xfb, 0xa6, 0xf8, 0xa2, 0xf8, 0x17, 0xf6, 0x13, 0xf6, + 0xac, 0xf3, 0xa9, 0xf3, 0x68, 0xf1, 0x65, 0xf1, 0x5c, 0xef, 0x58, 0xef, + 0x8a, 0xed, 0x87, 0xed, 0xff, 0xeb, 0xfb, 0xeb, 0xc1, 0xea, 0xbc, 0xea, + 0xcf, 0xe9, 0xcd, 0xe9, 0x37, 0xe9, 0x33, 0xe9, 0xf4, 0xe8, 0xf1, 0xe8, + 0x0d, 0xe9, 0x09, 0xe9, 0x82, 0xe9, 0x7e, 0xe9, 0x4f, 0xea, 0x4a, 0xea, + 0x76, 0xeb, 0x71, 0xeb, 0xf0, 0xec, 0xed, 0xec, 0xbd, 0xee, 0xb7, 0xee, + 0xca, 0xf0, 0xc7, 0xf0, 0x19, 0xf3, 0x12, 0xf3, 0x92, 0xf5, 0x90, 0xf5, + 0x33, 0xf8, 0x2c, 0xf8, 0xe7, 0xfa, 0xe5, 0xfa, 0xa2, 0xfd, 0x9d, 0xfd, + 0x59, 0x00, 0x55, 0x00, 0xfb, 0x02, 0xf8, 0x02, 0x82, 0x05, 0x7c, 0x05, + 0xdc, 0x07, 0xd9, 0x07, 0x05, 0x0a, 0xff, 0x09, 0xee, 0x0b, 0xeb, 0x0b, + 0x99, 0x0d, 0x95, 0x0d, 0xf7, 0x0e, 0xf3, 0x0e, 0x0c, 0x10, 0x07, 0x10, + 0xcb, 0x10, 0xc8, 0x10, 0x3a, 0x11, 0x35, 0x11, 0x54, 0x11, 0x4f, 0x11, + 0x17, 0x11, 0x13, 0x11, 0x8a, 0x10, 0x87, 0x10, 0xa9, 0x0f, 0xa5, 0x0f, + 0x7f, 0x0e, 0x7b, 0x0e, 0x0c, 0x0d, 0x0a, 0x0d, 0x59, 0x0b, 0x54, 0x0b, + 0x6f, 0x09, 0x6c, 0x09, 0x53, 0x07, 0x51, 0x07, 0x19, 0x05, 0x12, 0x05, + 0xc0, 0x02, 0xbf, 0x02, 0x60, 0x00, 0x5a, 0x00, 0x02, 0xfe, 0xff, 0xfd, + 0xaf, 0xfb, 0xab, 0xfb, 0x7a, 0xf9, 0x74, 0xf9, 0x69, 0xf7, 0x68, 0xf7, + 0x89, 0xf5, 0x85, 0xf5, 0xe8, 0xf3, 0xe4, 0xf3, 0x80, 0xf2, 0x7c, 0xf2, + 0x69, 0xf1, 0x66, 0xf1, 0x9d, 0xf0, 0x98, 0xf0, 0x24, 0xf0, 0x22, 0xf0, + 0x04, 0xf0, 0x00, 0xf0, 0x38, 0xf0, 0x34, 0xf0, 0xc4, 0xf0, 0xc0, 0xf0, + 0xa5, 0xf1, 0xa2, 0xf1, 0xd7, 0xf2, 0xd3, 0xf2, 0x56, 0xf4, 0x53, 0xf4, + 0x19, 0xf6, 0x15, 0xf6, 0x1b, 0xf8, 0x18, 0xf8, 0x4e, 0xfa, 0x4b, 0xfa, + 0xa9, 0xfc, 0xa3, 0xfc, 0x20, 0xff, 0x1d, 0xff, 0xa5, 0x01, 0xa2, 0x01, + 0x31, 0x04, 0x2c, 0x04, 0xaf, 0x06, 0xac, 0x06, 0x1c, 0x09, 0x17, 0x09, + 0x67, 0x0b, 0x63, 0x0b, 0x87, 0x0d, 0x85, 0x0d, 0x7a, 0x0f, 0x74, 0x0f, + 0x2e, 0x11, 0x2b, 0x11, 0xa4, 0x12, 0xa0, 0x12, 0xd1, 0x13, 0xcd, 0x13, + 0xb6, 0x14, 0xb1, 0x14, 0x48, 0x15, 0x45, 0x15, 0x8b, 0x15, 0x86, 0x15, + 0x79, 0x15, 0x75, 0x15, 0x13, 0x15, 0x0f, 0x15, 0x5a, 0x14, 0x56, 0x14, + 0x4e, 0x13, 0x4c, 0x13, 0xfb, 0x11, 0xf8, 0x11, 0x5c, 0x10, 0x58, 0x10, + 0x7e, 0x0e, 0x7a, 0x0e, 0x67, 0x0c, 0x63, 0x0c, 0x24, 0x0a, 0x1f, 0x0a, + 0xbf, 0x07, 0xbc, 0x07, 0x48, 0x05, 0x44, 0x05, 0xc9, 0x02, 0xc4, 0x02, + 0x4d, 0x00, 0x4a, 0x00, 0xe9, 0xfd, 0xe4, 0xfd, 0x9e, 0xfb, 0x9a, 0xfb, + 0x80, 0xf9, 0x7d, 0xf9, 0x94, 0xf7, 0x8f, 0xf7, 0xe3, 0xf5, 0xe1, 0xf5, + 0x78, 0xf4, 0x75, 0xf4, 0x54, 0xf3, 0x50, 0xf3, 0x7f, 0xf2, 0x7d, 0xf2, + 0xfa, 0xf1, 0xf5, 0xf1, 0xc6, 0xf1, 0xc4, 0xf1, 0xe7, 0xf1, 0xe2, 0xf1, + 0x59, 0xf2, 0x57, 0xf2, 0x1d, 0xf3, 0x18, 0xf3, 0x2d, 0xf4, 0x2a, 0xf4, + 0x86, 0xf5, 0x83, 0xf5, 0x22, 0xf7, 0x1d, 0xf7, 0xf5, 0xf8, 0xf3, 0xf8, + 0xfb, 0xfa, 0xf6, 0xfa, 0x26, 0xfd, 0x24, 0xfd, 0x6f, 0xff, 0x69, 0xff, + 0xc5, 0x01, 0xc1, 0x01, 0x1e, 0x04, 0x1b, 0x04, 0x71, 0x06, 0x6c, 0x06, + 0xaa, 0x08, 0xa8, 0x08, 0xc8, 0x0a, 0xc2, 0x0a, 0xb8, 0x0c, 0xb6, 0x0c, + 0x76, 0x0e, 0x70, 0x0e, 0xf7, 0x0f, 0xf4, 0x0f, 0x35, 0x11, 0x2f, 0x11, + 0x27, 0x12, 0x23, 0x12, 0xcf, 0x12, 0xc8, 0x12, 0x1c, 0x13, 0x19, 0x13, + 0x1d, 0x13, 0x17, 0x13, 0xbf, 0x12, 0xbb, 0x12, 0x10, 0x12, 0x0b, 0x12, + 0x09, 0x11, 0x06, 0x11, 0xb3, 0x0f, 0xaf, 0x0f, 0x15, 0x0e, 0x10, 0x0e, + 0x33, 0x0c, 0x2e, 0x0c, 0x18, 0x0a, 0x14, 0x0a, 0xd3, 0x07, 0xcd, 0x07, + 0x65, 0x05, 0x63, 0x05, 0xe8, 0x02, 0xe3, 0x02, 0x5a, 0x00, 0x57, 0x00, + 0xd4, 0xfd, 0xcf, 0xfd, 0x57, 0xfb, 0x53, 0xfb, 0xf6, 0xf8, 0xf1, 0xf8, + 0xb5, 0xf6, 0xb1, 0xf6, 0xa3, 0xf4, 0x9e, 0xf4, 0xc2, 0xf2, 0xc0, 0xf2, + 0x20, 0xf1, 0x1c, 0xf1, 0xbe, 0xef, 0xb9, 0xef, 0xa1, 0xee, 0x9f, 0xee, + 0xd2, 0xed, 0xca, 0xed, 0x49, 0xed, 0x4a, 0xed, 0x18, 0xed, 0x11, 0xed, + 0x32, 0xed, 0x2e, 0xed, 0x9d, 0xed, 0x99, 0xed, 0x58, 0xee, 0x54, 0xee, + 0x5d, 0xef, 0x59, 0xef, 0xab, 0xf0, 0xa7, 0xf0, 0x38, 0xf2, 0x33, 0xf2, + 0x02, 0xf4, 0xfe, 0xf3, 0xfb, 0xf5, 0xf8, 0xf5, 0x1d, 0xf8, 0x1a, 0xf8, + 0x5c, 0xfa, 0x58, 0xfa, 0xac, 0xfc, 0xaa, 0xfc, 0x02, 0xff, 0xfe, 0xfe, + 0x4f, 0x01, 0x4b, 0x01, 0x86, 0x03, 0x83, 0x03, 0x9f, 0x05, 0x9a, 0x05, + 0x8d, 0x07, 0x8b, 0x07, 0x48, 0x09, 0x44, 0x09, 0xc7, 0x0a, 0xc4, 0x0a, + 0x04, 0x0c, 0x00, 0x0c, 0xf7, 0x0c, 0xf3, 0x0c, 0x9b, 0x0d, 0x98, 0x0d, + 0xf1, 0x0d, 0xed, 0x0d, 0xf3, 0x0d, 0xee, 0x0d, 0xa3, 0x0d, 0xa2, 0x0d, + 0x01, 0x0d, 0xfb, 0x0c, 0x0e, 0x0c, 0x0a, 0x0c, 0xce, 0x0a, 0xcb, 0x0a, + 0x48, 0x09, 0x44, 0x09, 0x84, 0x07, 0x81, 0x07, 0x86, 0x05, 0x82, 0x05, + 0x5d, 0x03, 0x5a, 0x03, 0x13, 0x01, 0x11, 0x01, 0xb2, 0xfe, 0xae, 0xfe, + 0x48, 0xfc, 0x43, 0xfc, 0xdb, 0xf9, 0xd8, 0xf9, 0x80, 0xf7, 0x7b, 0xf7, + 0x3c, 0xf5, 0x38, 0xf5, 0x1a, 0xf3, 0x16, 0xf3, 0x28, 0xf1, 0x24, 0xf1, + 0x6a, 0xef, 0x67, 0xef, 0xe9, 0xed, 0xe3, 0xed, 0xad, 0xec, 0xaa, 0xec, + 0xb6, 0xeb, 0xb1, 0xeb, 0x11, 0xeb, 0x0e, 0xeb, 0xb9, 0xea, 0xb5, 0xea, + 0xb5, 0xea, 0xb1, 0xea, 0x04, 0xeb, 0x01, 0xeb, 0xa5, 0xeb, 0xa1, 0xeb, + 0x9b, 0xec, 0x96, 0xec, 0xda, 0xed, 0xd7, 0xed, 0x65, 0xef, 0x61, 0xef, + 0x31, 0xf1, 0x2e, 0xf1, 0x36, 0xf3, 0x33, 0xf3, 0x6d, 0xf5, 0x67, 0xf5, + 0xc1, 0xf7, 0xbe, 0xf7, 0x31, 0xfa, 0x2d, 0xfa, 0xab, 0xfc, 0xa7, 0xfc, + 0x22, 0xff, 0x1d, 0xff, 0x8e, 0x01, 0x8a, 0x01, 0xdf, 0x03, 0xdc, 0x03, + 0x10, 0x06, 0x0b, 0x06, 0x10, 0x08, 0x0d, 0x08, 0xdf, 0x09, 0xdb, 0x09, + 0x71, 0x0b, 0x6d, 0x0b, 0xc1, 0x0c, 0xbe, 0x0c, 0xcb, 0x0d, 0xc7, 0x0d, + 0x8a, 0x0e, 0x87, 0x0e, 0xfe, 0x0e, 0xfa, 0x0e, 0x23, 0x0f, 0x20, 0x0f, + 0xf8, 0x0e, 0xf5, 0x0e, 0x83, 0x0e, 0x7f, 0x0e, 0xbf, 0x0d, 0xbe, 0x0d, + 0xb8, 0x0c, 0xb3, 0x0c, 0x6d, 0x0b, 0x6b, 0x0b, 0xe5, 0x09, 0xe2, 0x09, + 0x2b, 0x08, 0x27, 0x08, 0x43, 0x06, 0x3f, 0x06, 0x39, 0x04, 0x36, 0x04, + 0x15, 0x02, 0x10, 0x02, 0xe8, 0xff, 0xe5, 0xff, 0xb9, 0xfd, 0xb5, 0xfd, + 0x94, 0xfb, 0x8f, 0xfb, 0x88, 0xf9, 0x85, 0xf9, 0x99, 0xf7, 0x96, 0xf7, + 0xdc, 0xf5, 0xd9, 0xf5, 0x4f, 0xf4, 0x4c, 0xf4, 0x00, 0xf3, 0xfc, 0xf2, + 0xf6, 0xf1, 0xf2, 0xf1, 0x2f, 0xf1, 0x2d, 0xf1, 0xbc, 0xf0, 0xb7, 0xf0, + 0x93, 0xf0, 0x91, 0xf0, 0xbf, 0xf0, 0xbc, 0xf0, 0x3f, 0xf1, 0x38, 0xf1, + 0x07, 0xf2, 0x06, 0xf2, 0x23, 0xf3, 0x1e, 0xf3, 0x83, 0xf4, 0x7f, 0xf4, + 0x28, 0xf6, 0x26, 0xf6, 0x07, 0xf8, 0x01, 0xf8, 0x14, 0xfa, 0x11, 0xfa, + 0x4c, 0xfc, 0x49, 0xfc, 0x9e, 0xfe, 0x99, 0xfe, 0x03, 0x01, 0xff, 0x00, + 0x6c, 0x03, 0x69, 0x03, 0xcf, 0x05, 0xcb, 0x05, 0x22, 0x08, 0x1e, 0x08, + 0x56, 0x0a, 0x53, 0x0a, 0x6a, 0x0c, 0x65, 0x0c, 0x4c, 0x0e, 0x4a, 0x0e, + 0xfb, 0x0f, 0xf7, 0x0f, 0x71, 0x11, 0x6c, 0x11, 0xa0, 0x12, 0x9c, 0x12, + 0x8d, 0x13, 0x88, 0x13, 0x2c, 0x14, 0x27, 0x14, 0x82, 0x14, 0x7e, 0x14, + 0x87, 0x14, 0x80, 0x14, 0x3d, 0x14, 0x38, 0x14, 0xa2, 0x13, 0xa0, 0x13, + 0xbd, 0x12, 0xb6, 0x12, 0x8d, 0x11, 0x8a, 0x11, 0x1b, 0x10, 0x16, 0x10, + 0x67, 0x0e, 0x63, 0x0e, 0x7f, 0x0c, 0x7a, 0x0c, 0x69, 0x0a, 0x64, 0x0a, + 0x30, 0x08, 0x2d, 0x08, 0xe3, 0x05, 0xdf, 0x05, 0x8b, 0x03, 0x87, 0x03, + 0x34, 0x01, 0x30, 0x01, 0xee, 0xfe, 0xeb, 0xfe, 0xbf, 0xfc, 0xbb, 0xfc, + 0xb6, 0xfa, 0xb2, 0xfa, 0xda, 0xf8, 0xd6, 0xf8, 0x31, 0xf7, 0x2f, 0xf7, + 0xcc, 0xf5, 0xc9, 0xf5, 0xa4, 0xf4, 0x9f, 0xf4, 0xc8, 0xf3, 0xc4, 0xf3, + 0x34, 0xf3, 0x30, 0xf3, 0xef, 0xf2, 0xeb, 0xf2, 0xfa, 0xf2, 0xf6, 0xf2, + 0x50, 0xf3, 0x4d, 0xf3, 0xf6, 0xf3, 0xf3, 0xf3, 0xe3, 0xf4, 0xe0, 0xf4, + 0x19, 0xf6, 0x13, 0xf6, 0x8a, 0xf7, 0x89, 0xf7, 0x38, 0xf9, 0x33, 0xf9, + 0x14, 0xfb, 0x12, 0xfb, 0x18, 0xfd, 0x13, 0xfd, 0x3b, 0xff, 0x38, 0xff, + 0x6d, 0x01, 0x6b, 0x01, 0xa8, 0x03, 0xa3, 0x03, 0xdc, 0x05, 0xd7, 0x05, + 0xfc, 0x07, 0xfa, 0x07, 0x05, 0x0a, 0xff, 0x09, 0xe7, 0x0b, 0xe5, 0x0b, + 0x9b, 0x0d, 0x96, 0x0d, 0x1a, 0x0f, 0x16, 0x0f, 0x58, 0x10, 0x55, 0x10, + 0x56, 0x11, 0x4f, 0x11, 0x06, 0x12, 0x04, 0x12, 0x6c, 0x12, 0x68, 0x12, + 0x81, 0x12, 0x7c, 0x12, 0x46, 0x12, 0x43, 0x12, 0xb6, 0x11, 0xb2, 0x11, + 0xda, 0x10, 0xd6, 0x10, 0xab, 0x0f, 0xa7, 0x0f, 0x3c, 0x0e, 0x37, 0x0e, + 0x88, 0x0c, 0x84, 0x0c, 0x9e, 0x0a, 0x9a, 0x0a, 0x8a, 0x08, 0x85, 0x08, + 0x4b, 0x06, 0x47, 0x06, 0xf9, 0x03, 0xf4, 0x03, 0x98, 0x01, 0x94, 0x01, + 0x36, 0xff, 0x31, 0xff, 0xdd, 0xfc, 0xda, 0xfc, 0x98, 0xfa, 0x93, 0xfa, + 0x72, 0xf8, 0x6d, 0xf8, 0x72, 0xf6, 0x6f, 0xf6, 0xa4, 0xf4, 0xa0, 0xf4, + 0x07, 0xf3, 0x02, 0xf3, 0xaa, 0xf1, 0xa6, 0xf1, 0x8b, 0xf0, 0x86, 0xf0, + 0xb2, 0xef, 0xae, 0xef, 0x21, 0xef, 0x1a, 0xef, 0xd9, 0xee, 0xd5, 0xee, + 0xdc, 0xee, 0xd7, 0xee, 0x29, 0xef, 0x26, 0xef, 0xc4, 0xef, 0xbf, 0xef, + 0xa1, 0xf0, 0x9b, 0xf0, 0xc5, 0xf1, 0xc2, 0xf1, 0x27, 0xf3, 0x20, 0xf3, + 0xbd, 0xf4, 0xbb, 0xf4, 0x89, 0xf6, 0x83, 0xf6, 0x78, 0xf8, 0x73, 0xf8, + 0x88, 0xfa, 0x84, 0xfa, 0xa9, 0xfc, 0xa3, 0xfc, 0xd2, 0xfe, 0xcd, 0xfe, + 0xf7, 0x00, 0xf3, 0x00, 0x0b, 0x03, 0x04, 0x03, 0x04, 0x05, 0x01, 0x05, + 0xda, 0x06, 0xd4, 0x06, 0x82, 0x08, 0x7c, 0x08, 0xf0, 0x09, 0xed, 0x09, + 0x25, 0x0b, 0x1f, 0x0b, 0x14, 0x0c, 0x10, 0x0c, 0xbc, 0x0c, 0xb6, 0x0c, + 0x18, 0x0d, 0x12, 0x0d, 0x27, 0x0d, 0x23, 0x0d, 0xe8, 0x0c, 0xe2, 0x0c, + 0x5a, 0x0c, 0x57, 0x0c, 0x81, 0x0b, 0x7c, 0x0b, 0x61, 0x0a, 0x5c, 0x0a, + 0xfd, 0x08, 0xfa, 0x08, 0x5f, 0x07, 0x59, 0x07, 0x89, 0x05, 0x85, 0x05, + 0x87, 0x03, 0x81, 0x03, 0x64, 0x01, 0x5e, 0x01, 0x2a, 0xff, 0x26, 0xff, + 0xe4, 0xfc, 0xde, 0xfc, 0x9a, 0xfa, 0x97, 0xfa, 0x5f, 0xf8, 0x59, 0xf8, + 0x34, 0xf6, 0x2f, 0xf6, 0x2a, 0xf4, 0x26, 0xf4, 0x48, 0xf2, 0x42, 0xf2, + 0x94, 0xf0, 0x93, 0xf0, 0x1d, 0xef, 0x16, 0xef, 0xdc, 0xed, 0xda, 0xed, + 0xe7, 0xec, 0xe2, 0xec, 0x35, 0xec, 0x2e, 0xec, 0xcc, 0xeb, 0xca, 0xeb, + 0xb5, 0xeb, 0xaf, 0xeb, 0xe7, 0xeb, 0xe4, 0xeb, 0x6c, 0xec, 0x67, 0xec, + 0x3a, 0xed, 0x35, 0xed, 0x52, 0xee, 0x4d, 0xee, 0xb1, 0xef, 0xae, 0xef, + 0x4d, 0xf1, 0x48, 0xf1, 0x21, 0xf3, 0x1d, 0xf3, 0x23, 0xf5, 0x1e, 0xf5, + 0x49, 0xf7, 0x41, 0xf7, 0x86, 0xf9, 0x83, 0xf9, 0xd0, 0xfb, 0xcb, 0xfb, + 0x20, 0xfe, 0x1a, 0xfe, 0x5e, 0x00, 0x5b, 0x00, 0x8f, 0x02, 0x8a, 0x02, + 0x9e, 0x04, 0x9a, 0x04, 0x89, 0x06, 0x84, 0x06, 0x44, 0x08, 0x3f, 0x08, + 0xc4, 0x09, 0xc0, 0x09, 0x0e, 0x0b, 0x07, 0x0b, 0x13, 0x0c, 0x0f, 0x0c, + 0xd7, 0x0c, 0xd0, 0x0c, 0x50, 0x0d, 0x4b, 0x0d, 0x80, 0x0d, 0x7c, 0x0d, + 0x67, 0x0d, 0x62, 0x0d, 0x07, 0x0d, 0x03, 0x0d, 0x5f, 0x0c, 0x5b, 0x0c, + 0x72, 0x0b, 0x6c, 0x0b, 0x48, 0x0a, 0x44, 0x0a, 0xe4, 0x08, 0xde, 0x08, + 0x4c, 0x07, 0x48, 0x07, 0x8c, 0x05, 0x87, 0x05, 0xa9, 0x03, 0xa6, 0x03, + 0xb1, 0x01, 0xad, 0x01, 0xae, 0xff, 0xa8, 0xff, 0xa6, 0xfd, 0xa1, 0xfd, + 0xa8, 0xfb, 0xa3, 0xfb, 0xbe, 0xf9, 0xb9, 0xf9, 0xef, 0xf7, 0xeb, 0xf7, + 0x4c, 0xf6, 0x46, 0xf6, 0xd6, 0xf4, 0xd1, 0xf4, 0x96, 0xf3, 0x92, 0xf3, + 0x98, 0xf2, 0x92, 0xf2, 0xd7, 0xf1, 0xd2, 0xf1, 0x62, 0xf1, 0x5e, 0xf1, + 0x37, 0xf1, 0x31, 0xf1, 0x58, 0xf1, 0x54, 0xf1, 0xc5, 0xf1, 0xc0, 0xf1, + 0x80, 0xf2, 0x7c, 0xf2, 0x82, 0xf3, 0x7c, 0xf3, 0xc6, 0xf4, 0xc2, 0xf4, + 0x4c, 0xf6, 0x46, 0xf6, 0x06, 0xf8, 0x02, 0xf8, 0xf1, 0xf9, 0xeb, 0xf9, + 0x01, 0xfc, 0xfc, 0xfb, 0x2b, 0xfe, 0x27, 0xfe, 0x6a, 0x00, 0x64, 0x00, + 0xaa, 0x02, 0xa7, 0x02, 0xea, 0x04, 0xe5, 0x04, 0x18, 0x07, 0x13, 0x07, + 0x30, 0x09, 0x2b, 0x09, 0x24, 0x0b, 0x1e, 0x0b, 0xf1, 0x0c, 0xec, 0x0c, + 0x8c, 0x0e, 0x87, 0x0e, 0xef, 0x0f, 0xea, 0x0f, 0x18, 0x11, 0x14, 0x11, + 0xff, 0x11, 0xfa, 0x11, 0xa1, 0x12, 0x9c, 0x12, 0xff, 0x12, 0xf9, 0x12, + 0x0f, 0x13, 0x0b, 0x13, 0xda, 0x12, 0xd4, 0x12, 0x57, 0x12, 0x53, 0x12, + 0x8f, 0x11, 0x8a, 0x11, 0x83, 0x10, 0x7d, 0x10, 0x32, 0x0f, 0x30, 0x0f, + 0xae, 0x0d, 0xa7, 0x0d, 0xf0, 0x0b, 0xec, 0x0b, 0x09, 0x0a, 0x04, 0x0a, + 0x00, 0x08, 0xfb, 0x07, 0xdf, 0x05, 0xda, 0x05, 0xb3, 0x03, 0xae, 0x03, + 0x88, 0x01, 0x83, 0x01, 0x64, 0xff, 0x5f, 0xff, 0x5b, 0xfd, 0x56, 0xfd, + 0x6d, 0xfb, 0x66, 0xfb, 0xab, 0xf9, 0xa7, 0xf9, 0x1b, 0xf8, 0x14, 0xf8, + 0xbe, 0xf6, 0xbb, 0xf6, 0xa8, 0xf5, 0xa1, 0xf5, 0xcb, 0xf4, 0xc6, 0xf4, + 0x3f, 0xf4, 0x39, 0xf4, 0xf4, 0xf3, 0xef, 0xf3, 0xf5, 0xf3, 0xf0, 0xf3, + 0x42, 0xf4, 0x3d, 0xf4, 0xd4, 0xf4, 0xcd, 0xf4, 0xae, 0xf5, 0xaa, 0xf5, + 0xc8, 0xf6, 0xc1, 0xf6, 0x20, 0xf8, 0x1b, 0xf8, 0xae, 0xf9, 0xa7, 0xf9, + 0x69, 0xfb, 0x63, 0xfb, 0x4a, 0xfd, 0x45, 0xfd, 0x48, 0xff, 0x42, 0xff, + 0x58, 0x01, 0x52, 0x01, 0x6f, 0x03, 0x6a, 0x03, 0x81, 0x05, 0x7a, 0x05, + 0x89, 0x07, 0x83, 0x07, 0x74, 0x09, 0x6e, 0x09, 0x43, 0x0b, 0x3e, 0x0b, + 0xe4, 0x0c, 0xdd, 0x0c, 0x55, 0x0e, 0x50, 0x0e, 0x8e, 0x0f, 0x89, 0x0f, + 0x87, 0x10, 0x82, 0x10, 0x41, 0x11, 0x3a, 0x11, 0xab, 0x11, 0xa7, 0x11, + 0xd3, 0x11, 0xcd, 0x11, 0xaa, 0x11, 0xa7, 0x11, 0x3a, 0x11, 0x33, 0x11, + 0x7c, 0x10, 0x76, 0x10, 0x75, 0x0f, 0x6f, 0x0f, 0x2f, 0x0e, 0x2a, 0x0e, + 0xa6, 0x0c, 0xa1, 0x0c, 0xec, 0x0a, 0xe6, 0x0a, 0xfe, 0x08, 0xf9, 0x08, + 0xf0, 0x06, 0xeb, 0x06, 0xc8, 0x04, 0xc2, 0x04, 0x90, 0x02, 0x8a, 0x02, + 0x57, 0x00, 0x51, 0x00, 0x24, 0xfe, 0x1d, 0xfe, 0x00, 0xfc, 0xfa, 0xfb, + 0xf9, 0xf9, 0xf5, 0xf9, 0x14, 0xf8, 0x0d, 0xf8, 0x5c, 0xf6, 0x57, 0xf6, + 0xd0, 0xf4, 0xcb, 0xf4, 0x80, 0xf3, 0x7a, 0xf3, 0x68, 0xf2, 0x65, 0xf2, + 0x93, 0xf1, 0x8c, 0xf1, 0xfe, 0xf0, 0xf9, 0xf0, 0xac, 0xf0, 0xa7, 0xf0, + 0xa5, 0xf0, 0x9e, 0xf0, 0xdc, 0xf0, 0xd7, 0xf0, 0x5b, 0xf1, 0x57, 0xf1, + 0x1c, 0xf2, 0x14, 0xf2, 0x19, 0xf3, 0x15, 0xf3, 0x53, 0xf4, 0x4c, 0xf4, + 0xbc, 0xf5, 0xb6, 0xf5, 0x55, 0xf7, 0x52, 0xf7, 0x11, 0xf9, 0x0a, 0xf9, + 0xeb, 0xfa, 0xe6, 0xfa, 0xd6, 0xfc, 0xd0, 0xfc, 0xc6, 0xfe, 0xc1, 0xfe, + 0xb9, 0x00, 0xb4, 0x00, 0x9b, 0x02, 0x93, 0x02, 0x69, 0x04, 0x66, 0x04, + 0x16, 0x06, 0x0f, 0x06, 0x9a, 0x07, 0x95, 0x07, 0xee, 0x08, 0xe9, 0x08, + 0x09, 0x0a, 0x04, 0x0a, 0xeb, 0x0a, 0xe7, 0x0a, 0x86, 0x0b, 0x81, 0x0b, + 0xe0, 0x0b, 0xda, 0x0b, 0xee, 0x0b, 0xea, 0x0b, 0xb8, 0x0b, 0xb2, 0x0b, + 0x38, 0x0b, 0x34, 0x0b, 0x73, 0x0a, 0x6c, 0x0a, 0x6b, 0x09, 0x67, 0x09, + 0x23, 0x08, 0x1e, 0x08, 0xa9, 0x06, 0xa3, 0x06, 0xf8, 0x04, 0xf5, 0x04, + 0x25, 0x03, 0x1e, 0x03, 0x2c, 0x01, 0x29, 0x01, 0x24, 0xff, 0x1d, 0xff, + 0x0c, 0xfd, 0x06, 0xfd, 0xf3, 0xfa, 0xf0, 0xfa, 0xe6, 0xf8, 0xe1, 0xf8, + 0xe8, 0xf6, 0xe4, 0xf6, 0x09, 0xf5, 0x02, 0xf5, 0x4a, 0xf3, 0x46, 0xf3, + 0xba, 0xf1, 0xb3, 0xf1, 0x5b, 0xf0, 0x57, 0xf0, 0x34, 0xef, 0x2f, 0xef, + 0x4a, 0xee, 0x47, 0xee, 0xa3, 0xed, 0x9c, 0xed, 0x3c, 0xed, 0x38, 0xed, + 0x22, 0xed, 0x1d, 0xed, 0x4b, 0xed, 0x43, 0xed, 0xbc, 0xed, 0xb7, 0xed, + 0x74, 0xee, 0x6e, 0xee, 0x6c, 0xef, 0x67, 0xef, 0xa9, 0xf0, 0xa2, 0xf0, + 0x1c, 0xf2, 0x17, 0xf2, 0xc7, 0xf3, 0xc1, 0xf3, 0x9b, 0xf5, 0x96, 0xf5, + 0x8f, 0xf7, 0x87, 0xf7, 0x9e, 0xf9, 0x99, 0xf9, 0xb8, 0xfb, 0xb1, 0xfb, + 0xd6, 0xfd, 0xcf, 0xfd, 0xec, 0xff, 0xe7, 0xff, 0xef, 0x01, 0xe8, 0x01, + 0xd9, 0x03, 0xd5, 0x03, 0x9e, 0x05, 0x96, 0x05, 0x38, 0x07, 0x35, 0x07, + 0xa1, 0x08, 0x9b, 0x08, 0xd1, 0x09, 0xcc, 0x09, 0xc7, 0x0a, 0xc0, 0x0a, + 0x7a, 0x0b, 0x74, 0x0b, 0xed, 0x0b, 0xe7, 0x0b, 0x1a, 0x0c, 0x14, 0x0c, + 0x04, 0x0c, 0xff, 0x0b, 0xaa, 0x0b, 0xa4, 0x0b, 0x0a, 0x0b, 0x06, 0x0b, + 0x30, 0x0a, 0x2a, 0x0a, 0x17, 0x09, 0x12, 0x09, 0xce, 0x07, 0xc7, 0x07, + 0x52, 0x06, 0x4d, 0x06, 0xae, 0x04, 0xaa, 0x04, 0xed, 0x02, 0xe7, 0x02, + 0x15, 0x01, 0x10, 0x01, 0x33, 0xff, 0x2d, 0xff, 0x4d, 0xfd, 0x49, 0xfd, + 0x70, 0xfb, 0x69, 0xfb, 0xa5, 0xf9, 0xa1, 0xf9, 0xf5, 0xf7, 0xee, 0xf7, + 0x69, 0xf6, 0x65, 0xf6, 0x0a, 0xf5, 0x05, 0xf5, 0xdc, 0xf3, 0xd7, 0xf3, + 0xeb, 0xf2, 0xe5, 0xf2, 0x33, 0xf2, 0x2f, 0xf2, 0xc2, 0xf1, 0xbb, 0xf1, + 0x95, 0xf1, 0x91, 0xf1, 0xae, 0xf1, 0xa6, 0xf1, 0x0f, 0xf2, 0x0e, 0xf2, + 0xb7, 0xf2, 0xae, 0xf2, 0xa4, 0xf3, 0x9e, 0xf3, 0xcd, 0xf4, 0xc9, 0xf4, + 0x36, 0xf6, 0x2f, 0xf6, 0xd1, 0xf7, 0xcc, 0xf7, 0x98, 0xf9, 0x94, 0xf9, + 0x88, 0xfb, 0x80, 0xfb, 0x8e, 0xfd, 0x8a, 0xfd, 0xaa, 0xff, 0xa4, 0xff, + 0xce, 0x01, 0xc8, 0x01, 0xeb, 0x03, 0xe6, 0x03, 0x03, 0x06, 0xfe, 0x05, + 0xff, 0x07, 0xfa, 0x07, 0xe3, 0x09, 0xdd, 0x09, 0x9c, 0x0b, 0x97, 0x0b, + 0x2d, 0x0d, 0x26, 0x0d, 0x8a, 0x0e, 0x85, 0x0e, 0xad, 0x0f, 0xa8, 0x0f, + 0x98, 0x10, 0x92, 0x10, 0x3d, 0x11, 0x38, 0x11, 0xa7, 0x11, 0xa1, 0x11, + 0xc8, 0x11, 0xc3, 0x11, 0xa8, 0x11, 0xa1, 0x11, 0x41, 0x11, 0x3d, 0x11, + 0x9a, 0x10, 0x95, 0x10, 0xb2, 0x0f, 0xac, 0x0f, 0x8f, 0x0e, 0x8a, 0x0e, + 0x35, 0x0d, 0x30, 0x0d, 0xaa, 0x0b, 0xa4, 0x0b, 0xf8, 0x09, 0xf4, 0x09, + 0x23, 0x08, 0x1d, 0x08, 0x38, 0x06, 0x33, 0x06, 0x3e, 0x04, 0x39, 0x04, + 0x44, 0x02, 0x3e, 0x02, 0x4e, 0x00, 0x4a, 0x00, 0x6b, 0xfe, 0x67, 0xfe, + 0xa2, 0xfc, 0x9d, 0xfc, 0xff, 0xfa, 0xf9, 0xfa, 0x82, 0xf9, 0x7e, 0xf9, + 0x3b, 0xf8, 0x37, 0xf8, 0x2e, 0xf7, 0x28, 0xf7, 0x5b, 0xf6, 0x58, 0xf6, + 0xc8, 0xf5, 0xc2, 0xf5, 0x78, 0xf5, 0x74, 0xf5, 0x70, 0xf5, 0x6b, 0xf5, + 0xa4, 0xf5, 0x9f, 0xf5, 0x22, 0xf6, 0x1c, 0xf6, 0xdf, 0xf6, 0xd9, 0xf6, + 0xd5, 0xf7, 0xcf, 0xf7, 0x07, 0xf9, 0x03, 0xf9, 0x6b, 0xfa, 0x64, 0xfa, + 0xf9, 0xfb, 0xf5, 0xfb, 0xab, 0xfd, 0xa5, 0xfd, 0x77, 0xff, 0x71, 0xff, + 0x56, 0x01, 0x51, 0x01, 0x3c, 0x03, 0x36, 0x03, 0x20, 0x05, 0x1d, 0x05, + 0xfa, 0x06, 0xf5, 0x06, 0xc1, 0x08, 0xbc, 0x08, 0x68, 0x0a, 0x62, 0x0a, + 0xec, 0x0b, 0xe8, 0x0b, 0x44, 0x0d, 0x3f, 0x0d, 0x68, 0x0e, 0x63, 0x0e, + 0x59, 0x0f, 0x54, 0x0f, 0x06, 0x10, 0x01, 0x10, 0x74, 0x10, 0x70, 0x10, + 0xa2, 0x10, 0x9d, 0x10, 0x87, 0x10, 0x82, 0x10, 0x2a, 0x10, 0x25, 0x10, + 0x86, 0x0f, 0x82, 0x0f, 0xa2, 0x0e, 0x9c, 0x0e, 0x7c, 0x0d, 0x78, 0x0d, + 0x1f, 0x0c, 0x1b, 0x0c, 0x93, 0x0a, 0x8e, 0x0a, 0xd4, 0x08, 0xd2, 0x08, + 0xfd, 0x06, 0xf6, 0x06, 0x04, 0x05, 0x01, 0x05, 0x00, 0x03, 0xfb, 0x02, + 0xf8, 0x00, 0xf3, 0x00, 0xf0, 0xfe, 0xeb, 0xfe, 0xfc, 0xfc, 0xf6, 0xfc, + 0x19, 0xfb, 0x16, 0xfb, 0x5d, 0xf9, 0x58, 0xf9, 0xc0, 0xf7, 0xbd, 0xf7, + 0x55, 0xf6, 0x4f, 0xf6, 0x19, 0xf5, 0x15, 0xf5, 0x14, 0xf4, 0x10, 0xf4, + 0x4b, 0xf3, 0x46, 0xf3, 0xbc, 0xf2, 0xb9, 0xf2, 0x73, 0xf2, 0x6c, 0xf2, + 0x63, 0xf2, 0x5f, 0xf2, 0x97, 0xf2, 0x92, 0xf2, 0x09, 0xf3, 0x04, 0xf3, + 0xb9, 0xf3, 0xb3, 0xf3, 0xa1, 0xf4, 0x9c, 0xf4, 0xbf, 0xf5, 0xba, 0xf5, + 0x0c, 0xf7, 0x09, 0xf7, 0x84, 0xf8, 0x7e, 0xf8, 0x1a, 0xfa, 0x17, 0xfa, + 0xce, 0xfb, 0xc7, 0xfb, 0x8f, 0xfd, 0x8b, 0xfd, 0x5a, 0xff, 0x55, 0xff, + 0x1f, 0x01, 0x1b, 0x01, 0xdf, 0x02, 0xd9, 0x02, 0x82, 0x04, 0x7f, 0x04, + 0x0e, 0x06, 0x09, 0x06, 0x71, 0x07, 0x6c, 0x07, 0xa6, 0x08, 0xa3, 0x08, + 0xac, 0x09, 0xa6, 0x09, 0x75, 0x0a, 0x72, 0x0a, 0x04, 0x0b, 0xfe, 0x0a, + 0x50, 0x0b, 0x4b, 0x0b, 0x5a, 0x0b, 0x57, 0x0b, 0x21, 0x0b, 0x1c, 0x0b, + 0xa5, 0x0a, 0xa0, 0x0a, 0xe7, 0x09, 0xe2, 0x09, 0xeb, 0x08, 0xe6, 0x08, + 0xb3, 0x07, 0xaf, 0x07, 0x48, 0x06, 0x43, 0x06, 0xad, 0x04, 0xaa, 0x04, + 0xea, 0x02, 0xe8, 0x02, 0x10, 0x01, 0x09, 0x01, 0x19, 0xff, 0x16, 0xff, + 0x1b, 0xfd, 0x15, 0xfd, 0x19, 0xfb, 0x16, 0xfb, 0x20, 0xf9, 0x1d, 0xf9, + 0x36, 0xf7, 0x32, 0xf7, 0x68, 0xf5, 0x62, 0xf5, 0xba, 0xf3, 0xb6, 0xf3, + 0x33, 0xf2, 0x30, 0xf2, 0xe0, 0xf0, 0xda, 0xf0, 0xbb, 0xef, 0xba, 0xef, + 0xd7, 0xee, 0xd2, 0xee, 0x2d, 0xee, 0x2a, 0xee, 0xc3, 0xed, 0xbf, 0xed, + 0x9d, 0xed, 0x9b, 0xed, 0xb9, 0xed, 0xb6, 0xed, 0x19, 0xee, 0x16, 0xee, + 0xbc, 0xee, 0xba, 0xee, 0x9f, 0xef, 0x9a, 0xef, 0xbb, 0xf0, 0xb9, 0xf0, + 0x14, 0xf2, 0x10, 0xf2, 0x9b, 0xf3, 0x98, 0xf3, 0x4f, 0xf5, 0x4d, 0xf5, + 0x23, 0xf7, 0x20, 0xf7, 0x11, 0xf9, 0x0d, 0xf9, 0x0d, 0xfb, 0x0b, 0xfb, + 0x0e, 0xfd, 0x09, 0xfd, 0x0b, 0xff, 0x09, 0xff, 0xf8, 0x00, 0xf3, 0x00, + 0xce, 0x02, 0xcb, 0x02, 0x83, 0x04, 0x7f, 0x04, 0x12, 0x06, 0x0f, 0x06, + 0x72, 0x07, 0x6e, 0x07, 0xa0, 0x08, 0x9d, 0x08, 0x95, 0x09, 0x90, 0x09, + 0x4e, 0x0a, 0x4a, 0x0a, 0xc8, 0x0a, 0xc5, 0x0a, 0x06, 0x0b, 0xff, 0x0a, + 0xfa, 0x0a, 0xf9, 0x0a, 0xb9, 0x0a, 0xb2, 0x0a, 0x2f, 0x0a, 0x2c, 0x0a, + 0x6f, 0x09, 0x6b, 0x09, 0x76, 0x08, 0x70, 0x08, 0x49, 0x07, 0x46, 0x07, + 0xf0, 0x05, 0xec, 0x05, 0x71, 0x04, 0x6c, 0x04, 0xd0, 0x02, 0xce, 0x02, + 0x1c, 0x01, 0x16, 0x01, 0x57, 0xff, 0x55, 0xff, 0x93, 0xfd, 0x8d, 0xfd, + 0xd0, 0xfb, 0xcd, 0xfb, 0x1d, 0xfa, 0x1b, 0xfa, 0x84, 0xf8, 0x7e, 0xf8, + 0x06, 0xf7, 0x05, 0xf7, 0xb6, 0xf5, 0xaf, 0xf5, 0x8f, 0xf4, 0x8d, 0xf4, + 0xa0, 0xf3, 0x9b, 0xf3, 0xe6, 0xf2, 0xe4, 0xf2, 0x6e, 0xf2, 0x69, 0xf2, + 0x35, 0xf2, 0x31, 0xf2, 0x3b, 0xf2, 0x38, 0xf2, 0x8a, 0xf2, 0x86, 0xf2, + 0x16, 0xf3, 0x12, 0xf3, 0xe4, 0xf3, 0xe1, 0xf3, 0xee, 0xf4, 0xe8, 0xf4, + 0x2f, 0xf6, 0x2c, 0xf6, 0xa4, 0xf7, 0xa0, 0xf7, 0x43, 0xf9, 0x40, 0xf9, + 0x07, 0xfb, 0x04, 0xfb, 0xe5, 0xfc, 0xe1, 0xfc, 0xd7, 0xfe, 0xd4, 0xfe, + 0xd3, 0x00, 0xcd, 0x00, 0xcc, 0x02, 0xc9, 0x02, 0xbe, 0x04, 0xba, 0x04, + 0x9d, 0x06, 0x99, 0x06, 0x60, 0x08, 0x5d, 0x08, 0x07, 0x0a, 0x03, 0x0a, + 0x80, 0x0b, 0x7d, 0x0b, 0xd2, 0x0c, 0xcf, 0x0c, 0xea, 0x0d, 0xe7, 0x0d, + 0xcf, 0x0e, 0xca, 0x0e, 0x76, 0x0f, 0x74, 0x0f, 0xe2, 0x0f, 0xdd, 0x0f, + 0x0d, 0x10, 0x0a, 0x10, 0xfa, 0x0f, 0xf6, 0x0f, 0xa5, 0x0f, 0xa2, 0x0f, + 0x15, 0x0f, 0x11, 0x0f, 0x47, 0x0e, 0x42, 0x0e, 0x41, 0x0d, 0x3e, 0x0d, + 0x0b, 0x0c, 0x08, 0x0c, 0xa5, 0x0a, 0xa1, 0x0a, 0x1a, 0x09, 0x17, 0x09, + 0x73, 0x07, 0x70, 0x07, 0xb4, 0x05, 0xb1, 0x05, 0xe9, 0x03, 0xe6, 0x03, + 0x1a, 0x02, 0x17, 0x02, 0x53, 0x00, 0x51, 0x00, 0x9b, 0xfe, 0x98, 0xfe, + 0xfb, 0xfc, 0xf7, 0xfc, 0x7c, 0xfb, 0x79, 0xfb, 0x25, 0xfa, 0x23, 0xfa, + 0xfd, 0xf8, 0xf9, 0xf8, 0x08, 0xf8, 0x05, 0xf8, 0x4e, 0xf7, 0x4a, 0xf7, + 0xcd, 0xf6, 0xcb, 0xf6, 0x8d, 0xf6, 0x8a, 0xf6, 0x8b, 0xf6, 0x89, 0xf6, + 0xcc, 0xf6, 0xc7, 0xf6, 0x46, 0xf7, 0x45, 0xf7, 0x00, 0xf8, 0xfc, 0xf7, + 0xf2, 0xf8, 0xf2, 0xf8, 0x1b, 0xfa, 0x16, 0xfa, 0x72, 0xfb, 0x6f, 0xfb, + 0xef, 0xfc, 0xef, 0xfc, 0x93, 0xfe, 0x8e, 0xfe, 0x47, 0x00, 0x46, 0x00, + 0x13, 0x02, 0x0e, 0x02, 0xde, 0x03, 0xde, 0x03, 0xad, 0x05, 0xaa, 0x05, + 0x6e, 0x07, 0x6a, 0x07, 0x1b, 0x09, 0x18, 0x09, 0xab, 0x0a, 0xa9, 0x0a, + 0x1c, 0x0c, 0x18, 0x0c, 0x5e, 0x0d, 0x5d, 0x0d, 0x73, 0x0e, 0x6f, 0x0e, + 0x51, 0x0f, 0x50, 0x0f, 0xf4, 0x0f, 0xf1, 0x0f, 0x5b, 0x10, 0x58, 0x10, + 0x81, 0x10, 0x7e, 0x10, 0x66, 0x10, 0x62, 0x10, 0x07, 0x10, 0x04, 0x10, + 0x68, 0x0f, 0x65, 0x0f, 0x88, 0x0e, 0x85, 0x0e, 0x6d, 0x0d, 0x69, 0x0d, + 0x1b, 0x0c, 0x19, 0x0c, 0x9a, 0x0a, 0x96, 0x0a, 0xeb, 0x08, 0xe9, 0x08, + 0x21, 0x07, 0x1e, 0x07, 0x39, 0x05, 0x34, 0x05, 0x48, 0x03, 0x45, 0x03, + 0x4e, 0x01, 0x4b, 0x01, 0x59, 0xff, 0x57, 0xff, 0x75, 0xfd, 0x70, 0xfd, + 0xa2, 0xfb, 0x9f, 0xfb, 0xf1, 0xf9, 0xef, 0xf9, 0x66, 0xf8, 0x62, 0xf8, + 0x02, 0xf7, 0x00, 0xf7, 0xd1, 0xf5, 0xce, 0xf5, 0xd5, 0xf4, 0xd2, 0xf4, + 0x11, 0xf4, 0x0d, 0xf4, 0x86, 0xf3, 0x84, 0xf3, 0x3b, 0xf3, 0x37, 0xf3, + 0x2b, 0xf3, 0x29, 0xf3, 0x5a, 0xf3, 0x57, 0xf3, 0xc6, 0xf3, 0xc3, 0xf3, + 0x6c, 0xf4, 0x68, 0xf4, 0x49, 0xf5, 0x48, 0xf5, 0x5b, 0xf6, 0x57, 0xf6, + 0x99, 0xf7, 0x97, 0xf7, 0x02, 0xf9, 0xfe, 0xf8, 0x89, 0xfa, 0x86, 0xfa, + 0x2a, 0xfc, 0x27, 0xfc, 0xde, 0xfd, 0xda, 0xfd, 0x95, 0xff, 0x93, 0xff, + 0x4e, 0x01, 0x4c, 0x01, 0xfe, 0x02, 0xf8, 0x02, 0x96, 0x04, 0x96, 0x04, + 0x18, 0x06, 0x13, 0x06, 0x72, 0x07, 0x70, 0x07, 0xa4, 0x08, 0xa3, 0x08, + 0xa5, 0x09, 0xa0, 0x09, 0x6f, 0x0a, 0x6e, 0x0a, 0x01, 0x0b, 0xfd, 0x0a, + 0x50, 0x0b, 0x4d, 0x0b, 0x64, 0x0b, 0x61, 0x0b, 0x35, 0x0b, 0x33, 0x0b, + 0xc7, 0x0a, 0xc3, 0x0a, 0x18, 0x0a, 0x16, 0x0a, 0x2e, 0x09, 0x2b, 0x09, + 0x0b, 0x08, 0x07, 0x08, 0xb5, 0x06, 0xb2, 0x06, 0x33, 0x05, 0x30, 0x05, + 0x8a, 0x03, 0x87, 0x03, 0xc3, 0x01, 0xc1, 0x01, 0xe7, 0xff, 0xe3, 0xff, + 0xfd, 0xfd, 0xfb, 0xfd, 0x11, 0xfc, 0x0d, 0xfc, 0x29, 0xfa, 0x28, 0xfa, + 0x51, 0xf8, 0x4f, 0xf8, 0x8f, 0xf6, 0x8d, 0xf6, 0xea, 0xf4, 0xe9, 0xf4, + 0x6c, 0xf3, 0x6a, 0xf3, 0x1b, 0xf2, 0x18, 0xf2, 0xf8, 0xf0, 0xf7, 0xf0, + 0x0d, 0xf0, 0x0b, 0xf0, 0x5b, 0xef, 0x58, 0xef, 0xe6, 0xee, 0xe4, 0xee, + 0xb0, 0xee, 0xad, 0xee, 0xb8, 0xee, 0xb7, 0xee, 0x01, 0xef, 0xff, 0xee, + 0x87, 0xef, 0x84, 0xef, 0x4a, 0xf0, 0x4a, 0xf0, 0x49, 0xf1, 0x46, 0xf1, + 0x77, 0xf2, 0x75, 0xf2, 0xdb, 0xf3, 0xd9, 0xf3, 0x61, 0xf5, 0x60, 0xf5, + 0x0c, 0xf7, 0x0a, 0xf7, 0xce, 0xf8, 0xcc, 0xf8, 0x9e, 0xfa, 0x9b, 0xfa, + 0x77, 0xfc, 0x76, 0xfc, 0x4a, 0xfe, 0x47, 0xfe, 0x12, 0x00, 0x10, 0x00, + 0xc5, 0x01, 0xc4, 0x01, 0x5c, 0x03, 0x5a, 0x03, 0xce, 0x04, 0xcc, 0x04, + 0x16, 0x06, 0x16, 0x06, 0x31, 0x07, 0x2f, 0x07, 0x13, 0x08, 0x12, 0x08, + 0xc2, 0x08, 0xc0, 0x08, 0x34, 0x09, 0x32, 0x09, 0x6a, 0x09, 0x68, 0x09, + 0x65, 0x09, 0x63, 0x09, 0x22, 0x09, 0x21, 0x09, 0xa6, 0x08, 0xa3, 0x08, + 0xf2, 0x07, 0xf0, 0x07, 0x08, 0x07, 0x07, 0x07, 0xf2, 0x05, 0xef, 0x05, + 0xaf, 0x04, 0xae, 0x04, 0x49, 0x03, 0x46, 0x03, 0xca, 0x01, 0xc8, 0x01, + 0x32, 0x00, 0x32, 0x00, 0x94, 0xfe, 0x91, 0xfe, 0xee, 0xfc, 0xee, 0xfc, + 0x52, 0xfb, 0x50, 0xfb, 0xc4, 0xf9, 0xc0, 0xf9, 0x4a, 0xf8, 0x4a, 0xf8, + 0xf1, 0xf6, 0xed, 0xf6, 0xbc, 0xf5, 0xbc, 0xf5, 0xb3, 0xf4, 0xb0, 0xf4, + 0xdd, 0xf3, 0xdc, 0xf3, 0x3d, 0xf3, 0x3b, 0xf3, 0xd6, 0xf2, 0xd5, 0xf2, + 0xac, 0xf2, 0xa8, 0xf2, 0xbf, 0xf2, 0xbe, 0xf2, 0x12, 0xf3, 0x10, 0xf3, + 0xa3, 0xf3, 0xa3, 0xf3, 0x70, 0xf4, 0x6f, 0xf4, 0x74, 0xf5, 0x72, 0xf5, + 0xae, 0xf6, 0xac, 0xf6, 0x14, 0xf8, 0x13, 0xf8, 0xa5, 0xf9, 0xa3, 0xf9, + 0x55, 0xfb, 0x55, 0xfb, 0x1d, 0xfd, 0x1a, 0xfd, 0xf7, 0xfe, 0xf7, 0xfe, + 0xd7, 0x00, 0xd5, 0x00, 0xb6, 0x02, 0xb5, 0x02, 0x8b, 0x04, 0x89, 0x04, + 0x4e, 0x06, 0x4c, 0x06, 0xf7, 0x07, 0xf6, 0x07, 0x80, 0x09, 0x7e, 0x09, + 0xe1, 0x0a, 0xe0, 0x0a, 0x19, 0x0c, 0x17, 0x0c, 0x1d, 0x0d, 0x1b, 0x0d, + 0xec, 0x0d, 0xec, 0x0d, 0x85, 0x0e, 0x82, 0x0e, 0xe1, 0x0e, 0xe1, 0x0e, + 0x02, 0x0f, 0x00, 0x0f, 0xe6, 0x0e, 0xe8, 0x0e, 0x91, 0x0e, 0x8e, 0x0e, + 0xfe, 0x0d, 0xfc, 0x0d, 0x35, 0x0d, 0x32, 0x0d, 0x34, 0x0c, 0x33, 0x0c, + 0x07, 0x0b, 0x04, 0x0b, 0xad, 0x09, 0xac, 0x09, 0x2f, 0x08, 0x2c, 0x08, + 0x98, 0x06, 0x96, 0x06, 0xe7, 0x04, 0xe7, 0x04, 0x33, 0x03, 0x2f, 0x03, + 0x73, 0x01, 0x74, 0x01, 0xc3, 0xff, 0xbe, 0xff, 0x1b, 0xfe, 0x1b, 0xfe, + 0x8f, 0xfc, 0x8d, 0xfc, 0x23, 0xfb, 0x21, 0xfb, 0xdb, 0xf9, 0xd9, 0xf9, + 0xc3, 0xf8, 0xc1, 0xf8, 0xda, 0xf7, 0xd9, 0xf7, 0x2c, 0xf7, 0x2b, 0xf7, + 0xb7, 0xf6, 0xb4, 0xf6, 0x7c, 0xf6, 0x7d, 0xf6, 0x83, 0xf6, 0x80, 0xf6, + 0xc5, 0xf6, 0xc3, 0xf6, 0x45, 0xf7, 0x45, 0xf7, 0xfe, 0xf7, 0xfc, 0xf7, + 0xf1, 0xf8, 0xf1, 0xf8, 0x13, 0xfa, 0x14, 0xfa, 0x6b, 0xfb, 0x68, 0xfb, + 0xe0, 0xfc, 0xe2, 0xfc, 0x7d, 0xfe, 0x7b, 0xfe, 0x2e, 0x00, 0x2d, 0x00, + 0xef, 0x01, 0xec, 0x01, 0xb7, 0x03, 0xb9, 0x03, 0x7c, 0x05, 0x7a, 0x05, + 0x39, 0x07, 0x3a, 0x07, 0xe3, 0x08, 0xe1, 0x08, 0x71, 0x0a, 0x70, 0x0a, + 0xde, 0x0b, 0xde, 0x0b, 0x23, 0x0d, 0x21, 0x0d, 0x39, 0x0e, 0x3b, 0x0e, + 0x1e, 0x0f, 0x1b, 0x0f, 0xca, 0x0f, 0xca, 0x0f, 0x3a, 0x10, 0x3a, 0x10, + 0x6e, 0x10, 0x6e, 0x10, 0x63, 0x10, 0x62, 0x10, 0x1b, 0x10, 0x19, 0x10, + 0x8f, 0x0f, 0x90, 0x0f, 0xcb, 0x0e, 0xca, 0x0e, 0xc9, 0x0d, 0xc8, 0x0d, + 0x93, 0x0c, 0x94, 0x0c, 0x2d, 0x0b, 0x2b, 0x0b, 0x9c, 0x09, 0x9e, 0x09, + 0xee, 0x07, 0xec, 0x07, 0x20, 0x06, 0x20, 0x06, 0x48, 0x04, 0x47, 0x04, + 0x64, 0x02, 0x66, 0x02, 0x86, 0x00, 0x84, 0x00, 0xaf, 0xfe, 0xb1, 0xfe, + 0xed, 0xfc, 0xea, 0xfc, 0x44, 0xfb, 0x46, 0xfb, 0xbf, 0xf9, 0xbc, 0xf9, + 0x5f, 0xf8, 0x60, 0xf8, 0x2f, 0xf7, 0x2f, 0xf7, 0x2d, 0xf6, 0x2d, 0xf6, + 0x66, 0xf5, 0x66, 0xf5, 0xd5, 0xf4, 0xd4, 0xf4, 0x7e, 0xf4, 0x80, 0xf4, + 0x65, 0xf4, 0x63, 0xf4, 0x82, 0xf4, 0x84, 0xf4, 0xe0, 0xf4, 0xdd, 0xf4, + 0x6d, 0xf5, 0x6f, 0xf5, 0x36, 0xf6, 0x34, 0xf6, 0x29, 0xf7, 0x29, 0xf7, + 0x4b, 0xf8, 0x4b, 0xf8, 0x94, 0xf9, 0x94, 0xf9, 0xfb, 0xfa, 0xfb, 0xfa, + 0x7a, 0xfc, 0x7b, 0xfc, 0x0a, 0xfe, 0x0a, 0xfe, 0xa0, 0xff, 0x9f, 0xff, + 0x3a, 0x01, 0x3a, 0x01, 0xc6, 0x02, 0xc5, 0x02, 0x45, 0x04, 0x44, 0x04, + 0xa9, 0x05, 0xa8, 0x05, 0xec, 0x06, 0xec, 0x06, 0x0c, 0x08, 0x0a, 0x08, + 0xf7, 0x08, 0xfa, 0x08, 0xba, 0x09, 0xb7, 0x09, 0x3e, 0x0a, 0x3e, 0x0a, + 0x8d, 0x0a, 0x8c, 0x0a, 0xa1, 0x0a, 0x9f, 0x0a, 0x72, 0x0a, 0x72, 0x0a, + 0x0d, 0x0a, 0x0b, 0x0a, 0x67, 0x09, 0x67, 0x09, 0x8f, 0x08, 0x8f, 0x08, + 0x7d, 0x07, 0x7b, 0x07, 0x40, 0x06, 0x3f, 0x06, 0xd5, 0x04, 0xd5, 0x04, + 0x4a, 0x03, 0x48, 0x03, 0xa0, 0x01, 0xa1, 0x01, 0xe4, 0xff, 0xe2, 0xff, + 0x1b, 0xfe, 0x1c, 0xfe, 0x50, 0xfc, 0x4f, 0xfc, 0x8b, 0xfa, 0x89, 0xfa, + 0xd0, 0xf8, 0xd2, 0xf8, 0x2f, 0xf7, 0x2d, 0xf7, 0xa8, 0xf5, 0xa8, 0xf5, + 0x45, 0xf4, 0x44, 0xf4, 0x09, 0xf3, 0x07, 0xf3, 0xfc, 0xf1, 0xfd, 0xf1, + 0x1f, 0xf1, 0x1f, 0xf1, 0x7c, 0xf0, 0x7c, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, + 0xdd, 0xef, 0xdd, 0xef, 0xe6, 0xef, 0xe7, 0xef, 0x2e, 0xf0, 0x2e, 0xf0, + 0xad, 0xf0, 0xae, 0xf0, 0x67, 0xf1, 0x66, 0xf1, 0x53, 0xf2, 0x53, 0xf2, + 0x74, 0xf3, 0x74, 0xf3, 0xc1, 0xf4, 0xbf, 0xf4, 0x32, 0xf6, 0x33, 0xf6, + 0xc5, 0xf7, 0xc6, 0xf7, 0x6d, 0xf9, 0x6b, 0xf9, 0x20, 0xfb, 0x24, 0xfb, + 0xde, 0xfc, 0xdd, 0xfc, 0x97, 0xfe, 0x96, 0xfe, 0x41, 0x00, 0x42, 0x00, + 0xdc, 0x01, 0xdc, 0x01, 0x58, 0x03, 0x58, 0x03, 0xb4, 0x04, 0xb2, 0x04, + 0xe6, 0x05, 0xe7, 0x05, 0xe9, 0x06, 0xe8, 0x06, 0xbc, 0x07, 0xbb, 0x07, + 0x55, 0x08, 0x55, 0x08, 0xba, 0x08, 0xba, 0x08, 0xe3, 0x08, 0xe3, 0x08, + 0xd3, 0x08, 0xd2, 0x08, 0x87, 0x08, 0x88, 0x08, 0x03, 0x08, 0x01, 0x08, + 0x4a, 0x07, 0x49, 0x07, 0x5c, 0x06, 0x5b, 0x06, 0x42, 0x05, 0x41, 0x05, + 0xfe, 0x03, 0xff, 0x03, 0x9b, 0x02, 0x9a, 0x02, 0x1b, 0x01, 0x1b, 0x01, + 0x88, 0xff, 0x88, 0xff, 0xeb, 0xfd, 0xea, 0xfd, 0x4b, 0xfc, 0x4c, 0xfc, + 0xb1, 0xfa, 0xb2, 0xfa, 0x28, 0xf9, 0x27, 0xf9, 0xb3, 0xf7, 0xb3, 0xf7, + 0x5a, 0xf6, 0x59, 0xf6, 0x29, 0xf5, 0x29, 0xf5, 0x20, 0xf4, 0x20, 0xf4, + 0x47, 0xf3, 0x48, 0xf3, 0xa5, 0xf2, 0xa6, 0xf2, 0x3a, 0xf2, 0x3a, 0xf2, + 0x0c, 0xf2, 0x0b, 0xf2, 0x19, 0xf2, 0x1c, 0xf2, 0x65, 0xf2, 0x64, 0xf2, + 0xee, 0xf2, 0xf0, 0xf2, 0xb1, 0xf3, 0xb1, 0xf3, 0xad, 0xf4, 0xae, 0xf4, + 0xdd, 0xf5, 0xde, 0xf5, 0x3b, 0xf7, 0x3a, 0xf7, 0xc0, 0xf8, 0xc2, 0xf8, + 0x6a, 0xfa, 0x6a, 0xfa, 0x2b, 0xfc, 0x2d, 0xfc, 0xff, 0xfd, 0x00, 0xfe, + 0xdc, 0xff, 0xdd, 0xff, 0xba, 0x01, 0xbd, 0x01, 0x92, 0x03, 0x91, 0x03, + 0x56, 0x05, 0x59, 0x05, 0x06, 0x07, 0x05, 0x07, 0x96, 0x08, 0x97, 0x08, + 0x02, 0x0a, 0x03, 0x0a, 0x43, 0x0b, 0x43, 0x0b, 0x56, 0x0c, 0x56, 0x0c, + 0x36, 0x0d, 0x36, 0x0d, 0xde, 0x0d, 0xe1, 0x0d, 0x51, 0x0e, 0x50, 0x0e, + 0x88, 0x0e, 0x89, 0x0e, 0x83, 0x0e, 0x85, 0x0e, 0x46, 0x0e, 0x46, 0x0e, + 0xcd, 0x0d, 0xcf, 0x0d, 0x20, 0x0d, 0x20, 0x0d, 0x3e, 0x0c, 0x40, 0x0c, + 0x2b, 0x0b, 0x2b, 0x0b, 0xf0, 0x09, 0xf0, 0x09, 0x8e, 0x08, 0x8f, 0x08, + 0x11, 0x07, 0x11, 0x07, 0x7d, 0x05, 0x7e, 0x05, 0xda, 0x03, 0xda, 0x03, + 0x34, 0x02, 0x35, 0x02, 0x90, 0x00, 0x91, 0x00, 0xf7, 0xfe, 0xf8, 0xfe, + 0x73, 0xfd, 0x75, 0xfd, 0x0b, 0xfc, 0x0c, 0xfc, 0xc7, 0xfa, 0xc7, 0xfa, + 0xaa, 0xf9, 0xac, 0xf9, 0xbc, 0xf8, 0xbe, 0xf8, 0x01, 0xf8, 0x01, 0xf8, + 0x7d, 0xf7, 0x7f, 0xf7, 0x34, 0xf7, 0x35, 0xf7, 0x23, 0xf7, 0x26, 0xf7, + 0x51, 0xf7, 0x51, 0xf7, 0xb4, 0xf7, 0xb6, 0xf7, 0x53, 0xf8, 0x53, 0xf8, + 0x28, 0xf9, 0x2a, 0xf9, 0x2c, 0xfa, 0x2d, 0xfa, 0x5e, 0xfb, 0x5f, 0xfb, + 0xb8, 0xfc, 0xba, 0xfc, 0x2f, 0xfe, 0x33, 0xfe, 0xc3, 0xff, 0xc2, 0xff, + 0x64, 0x01, 0x67, 0x01, 0x11, 0x03, 0x11, 0x03, 0xbe, 0x04, 0xc0, 0x04, + 0x61, 0x06, 0x64, 0x06, 0xf9, 0x07, 0xfa, 0x07, 0x78, 0x09, 0x7b, 0x09, + 0xd9, 0x0a, 0xda, 0x0a, 0x18, 0x0c, 0x19, 0x0c, 0x2a, 0x0d, 0x2c, 0x0d, + 0x0c, 0x0e, 0x0f, 0x0e, 0xc1, 0x0e, 0xc2, 0x0e, 0x37, 0x0f, 0x3a, 0x0f, + 0x7d, 0x0f, 0x7d, 0x0f, 0x7e, 0x0f, 0x82, 0x0f, 0x4c, 0x0f, 0x4d, 0x0f, + 0xda, 0x0e, 0xdb, 0x0e, 0x2d, 0x0e, 0x30, 0x0e, 0x4e, 0x0d, 0x50, 0x0d, + 0x37, 0x0c, 0x37, 0x0c, 0xf3, 0x0a, 0xf7, 0x0a, 0x88, 0x09, 0x89, 0x09, + 0xfb, 0x07, 0xfd, 0x07, 0x58, 0x06, 0x58, 0x06, 0x9e, 0x04, 0xa1, 0x04, + 0xe2, 0x02, 0xe3, 0x02, 0x20, 0x01, 0x24, 0x01, 0x6d, 0xff, 0x6f, 0xff, + 0xc8, 0xfd, 0xc9, 0xfd, 0x38, 0xfc, 0x3c, 0xfc, 0xcc, 0xfa, 0xcd, 0xfa, + 0x82, 0xf9, 0x84, 0xf9, 0x62, 0xf8, 0x64, 0xf8, 0x71, 0xf7, 0x73, 0xf7, + 0xb3, 0xf6, 0xb6, 0xf6, 0x29, 0xf6, 0x2a, 0xf6, 0xd8, 0xf5, 0xda, 0xf5, + 0xbb, 0xf5, 0xbf, 0xf5, 0xdd, 0xf5, 0xdd, 0xf5, 0x31, 0xf6, 0x34, 0xf6, + 0xbe, 0xf6, 0xc1, 0xf6, 0x7d, 0xf7, 0x7e, 0xf7, 0x68, 0xf8, 0x6b, 0xf8, + 0x80, 0xf9, 0x83, 0xf9, 0xbf, 0xfa, 0xc0, 0xfa, 0x14, 0xfc, 0x18, 0xfc, + 0x87, 0xfd, 0x86, 0xfd, 0x01, 0xff, 0x07, 0xff, 0x8b, 0x00, 0x8a, 0x00, + 0x0e, 0x02, 0x12, 0x02, 0x8b, 0x03, 0x8c, 0x03, 0xf6, 0x04, 0xf8, 0x04, + 0x48, 0x06, 0x49, 0x06, 0x7c, 0x07, 0x7d, 0x07, 0x89, 0x08, 0x8b, 0x08, + 0x6a, 0x09, 0x6c, 0x09, 0x1c, 0x0a, 0x1c, 0x0a, 0x97, 0x0a, 0x9a, 0x0a, + 0xda, 0x0a, 0xdc, 0x0a, 0xe4, 0x0a, 0xe4, 0x0a, 0xb1, 0x0a, 0xb4, 0x0a, + 0x44, 0x0a, 0x44, 0x0a, 0x9b, 0x09, 0x9c, 0x09, 0xbc, 0x08, 0xbe, 0x08, + 0xa9, 0x07, 0xa9, 0x07, 0x65, 0x06, 0x67, 0x06, 0xfa, 0x04, 0xfc, 0x04, + 0x6a, 0x03, 0x6b, 0x03, 0xbd, 0x01, 0xc0, 0x01, 0xfe, 0xff, 0xfe, 0xff, + 0x33, 0xfe, 0x34, 0xfe, 0x60, 0xfc, 0x64, 0xfc, 0x99, 0xfa, 0x9a, 0xfa, + 0xdc, 0xf8, 0xdc, 0xf8, 0x31, 0xf7, 0x34, 0xf7, 0xa6, 0xf5, 0xa9, 0xf5, + 0x3d, 0xf4, 0x3d, 0xf4, 0xfb, 0xf2, 0x00, 0xf3, 0xe7, 0xf1, 0xe6, 0xf1, + 0x03, 0xf1, 0x06, 0xf1, 0x57, 0xf0, 0x58, 0xf0, 0xe0, 0xef, 0xe3, 0xef, + 0xa6, 0xef, 0xa8, 0xef, 0xa5, 0xef, 0xa9, 0xef, 0xe1, 0xef, 0xe2, 0xef, + 0x54, 0xf0, 0x57, 0xf0, 0x03, 0xf1, 0x07, 0xf1, 0xe7, 0xf1, 0xe7, 0xf1, + 0xfa, 0xf2, 0x00, 0xf3, 0x3f, 0xf4, 0x3f, 0xf4, 0xa6, 0xf5, 0xaa, 0xf5, + 0x31, 0xf7, 0x33, 0xf7, 0xd1, 0xf8, 0xd5, 0xf8, 0x84, 0xfa, 0x86, 0xfa, + 0x3f, 0xfc, 0x41, 0xfc, 0xf6, 0xfd, 0xf8, 0xfd, 0xa5, 0xff, 0xa8, 0xff, + 0x42, 0x01, 0x45, 0x01, 0xc6, 0x02, 0xc8, 0x02, 0x2a, 0x04, 0x2d, 0x04, + 0x66, 0x05, 0x68, 0x05, 0x78, 0x06, 0x7b, 0x06, 0x55, 0x07, 0x5a, 0x07, + 0x02, 0x08, 0x05, 0x08, 0x76, 0x08, 0x79, 0x08, 0xb0, 0x08, 0xb4, 0x08, + 0xb5, 0x08, 0xb6, 0x08, 0x7a, 0x08, 0x7e, 0x08, 0x0c, 0x08, 0x0f, 0x08, + 0x64, 0x07, 0x66, 0x07, 0x8b, 0x06, 0x8f, 0x06, 0x84, 0x05, 0x85, 0x05, + 0x53, 0x04, 0x58, 0x04, 0x00, 0x03, 0x01, 0x03, 0x8d, 0x01, 0x91, 0x01, + 0x08, 0x00, 0x0c, 0x00, 0x76, 0xfe, 0x7a, 0xfe, 0xde, 0xfc, 0xe1, 0xfc, + 0x48, 0xfb, 0x4b, 0xfb, 0xbe, 0xf9, 0xc2, 0xf9, 0x49, 0xf8, 0x4d, 0xf8, + 0xec, 0xf6, 0xf1, 0xf6, 0xb6, 0xf5, 0xb9, 0xf5, 0xa0, 0xf4, 0xa4, 0xf4, + 0xbc, 0xf3, 0xc0, 0xf3, 0x0a, 0xf3, 0x0d, 0xf3, 0x8b, 0xf2, 0x8f, 0xf2, + 0x49, 0xf2, 0x4a, 0xf2, 0x3c, 0xf2, 0x40, 0xf2, 0x71, 0xf2, 0x75, 0xf2, + 0xdb, 0xf2, 0xdd, 0xf2, 0x81, 0xf3, 0x84, 0xf3, 0x5d, 0xf4, 0x62, 0xf4, + 0x6d, 0xf5, 0x6f, 0xf5, 0xaa, 0xf6, 0xad, 0xf6, 0x0e, 0xf8, 0x13, 0xf8, + 0x97, 0xf9, 0x9a, 0xf9, 0x39, 0xfb, 0x3d, 0xfb, 0xef, 0xfc, 0xf2, 0xfc, + 0xb0, 0xfe, 0xb3, 0xfe, 0x74, 0x00, 0x77, 0x00, 0x34, 0x02, 0x38, 0x02, + 0xe6, 0x03, 0xe9, 0x03, 0x85, 0x05, 0x87, 0x05, 0x07, 0x07, 0x0a, 0x07, + 0x6b, 0x08, 0x6c, 0x08, 0xa1, 0x09, 0xa7, 0x09, 0xb5, 0x0a, 0xb5, 0x0a, + 0x92, 0x0b, 0x97, 0x0b, 0x3e, 0x0c, 0x41, 0x0c, 0xb6, 0x0c, 0xb9, 0x0c, + 0xf5, 0x0c, 0xf8, 0x0c, 0xfe, 0x0c, 0xff, 0x0c, 0xce, 0x0c, 0xd2, 0x0c, + 0x68, 0x0c, 0x6a, 0x0c, 0xcb, 0x0b, 0xce, 0x0b, 0xfe, 0x0a, 0x03, 0x0b, + 0x08, 0x0a, 0x08, 0x0a, 0xe3, 0x08, 0xe7, 0x08, 0xa1, 0x07, 0xa4, 0x07, + 0x3f, 0x06, 0x43, 0x06, 0xcd, 0x04, 0xd0, 0x04, 0x4c, 0x03, 0x4f, 0x03, + 0xc6, 0x01, 0xc9, 0x01, 0x43, 0x00, 0x47, 0x00, 0xcc, 0xfe, 0xce, 0xfe, + 0x66, 0xfd, 0x6b, 0xfd, 0x1e, 0xfc, 0x21, 0xfc, 0xf4, 0xfa, 0xf7, 0xfa, + 0xf4, 0xf9, 0xf8, 0xf9, 0x1f, 0xf9, 0x21, 0xf9, 0x79, 0xf8, 0x7e, 0xf8, + 0x0b, 0xf8, 0x0d, 0xf8, 0xcf, 0xf7, 0xd3, 0xf7, 0xce, 0xf7, 0xd2, 0xf7, + 0x07, 0xf8, 0x08, 0xf8, 0x75, 0xf8, 0x7a, 0xf8, 0x1a, 0xf9, 0x1d, 0xf9, + 0xf3, 0xf9, 0xf5, 0xf9, 0xf9, 0xfa, 0xfd, 0xfa, 0x2c, 0xfc, 0x2e, 0xfc, + 0x82, 0xfd, 0x87, 0xfd, 0xf7, 0xfe, 0xfa, 0xfe, 0x83, 0x00, 0x86, 0x00, + 0x1c, 0x02, 0x20, 0x02, 0xbe, 0x03, 0xc3, 0x03, 0x60, 0x05, 0x63, 0x05, + 0xf8, 0x06, 0xfa, 0x06, 0x81, 0x08, 0x85, 0x08, 0xf4, 0x09, 0xf6, 0x09, + 0x46, 0x0b, 0x4c, 0x0b, 0x77, 0x0c, 0x7a, 0x0c, 0x7e, 0x0d, 0x82, 0x0d, + 0x56, 0x0e, 0x59, 0x0e, 0xfa, 0x0e, 0xff, 0x0e, 0x6b, 0x0f, 0x70, 0x0f, + 0xa2, 0x0f, 0xa4, 0x0f, 0xa1, 0x0f, 0xa6, 0x0f, 0x64, 0x0f, 0x67, 0x0f, + 0xef, 0x0e, 0xf3, 0x0e, 0x3f, 0x0e, 0x42, 0x0e, 0x59, 0x0d, 0x5c, 0x0d, + 0x40, 0x0c, 0x44, 0x0c, 0xfb, 0x0a, 0xff, 0x0a, 0x8f, 0x09, 0x92, 0x09, + 0x01, 0x08, 0x06, 0x08, 0x5c, 0x06, 0x60, 0x06, 0xa7, 0x04, 0xab, 0x04, + 0xea, 0x02, 0xed, 0x02, 0x2e, 0x01, 0x33, 0x01, 0x7a, 0xff, 0x7d, 0xff, + 0xd9, 0xfd, 0xdc, 0xfd, 0x4d, 0xfc, 0x50, 0xfc, 0xe2, 0xfa, 0xe4, 0xfa, + 0x9a, 0xf9, 0x9e, 0xf9, 0x7c, 0xf8, 0x81, 0xf8, 0x90, 0xf7, 0x93, 0xf7, + 0xd2, 0xf6, 0xd6, 0xf6, 0x48, 0xf6, 0x4c, 0xf6, 0xf9, 0xf5, 0xfd, 0xf5, + 0xdc, 0xf5, 0xe0, 0xf5, 0xff, 0xf5, 0x01, 0xf6, 0x50, 0xf6, 0x55, 0xf6, + 0xde, 0xf6, 0xe0, 0xf6, 0x9c, 0xf7, 0x9f, 0xf7, 0x85, 0xf8, 0x88, 0xf8, + 0x9f, 0xf9, 0xa2, 0xf9, 0xd6, 0xfa, 0xda, 0xfa, 0x32, 0xfc, 0x34, 0xfc, + 0xa0, 0xfd, 0xa3, 0xfd, 0x1f, 0xff, 0x23, 0xff, 0xa9, 0x00, 0xad, 0x00, + 0x2f, 0x02, 0x31, 0x02, 0xb1, 0x03, 0xb6, 0x03, 0x21, 0x05, 0x23, 0x05, + 0x79, 0x06, 0x7e, 0x06, 0xb8, 0x07, 0xba, 0x07, 0xcd, 0x08, 0xd1, 0x08, + 0xbb, 0x09, 0xbe, 0x09, 0x75, 0x0a, 0x78, 0x0a, 0x00, 0x0b, 0x03, 0x0b, + 0x51, 0x0b, 0x53, 0x0b, 0x6a, 0x0b, 0x6e, 0x0b, 0x47, 0x0b, 0x4c, 0x0b, + 0xed, 0x0a, 0xef, 0x0a, 0x56, 0x0a, 0x5a, 0x0a, 0x89, 0x09, 0x8d, 0x09, + 0x8c, 0x08, 0x8f, 0x08, 0x58, 0x07, 0x5e, 0x07, 0x01, 0x06, 0x04, 0x06, + 0x84, 0x04, 0x88, 0x04, 0xe8, 0x02, 0xef, 0x02, 0x39, 0x01, 0x3c, 0x01, + 0x7a, 0xff, 0x7e, 0xff, 0xb5, 0xfd, 0xb9, 0xfd, 0xf6, 0xfb, 0xfa, 0xfb, + 0x3e, 0xfa, 0x42, 0xfa, 0x99, 0xf8, 0x9e, 0xf8, 0x0e, 0xf7, 0x11, 0xf7, + 0xa1, 0xf5, 0xa4, 0xf5, 0x5a, 0xf4, 0x5c, 0xf4, 0x3e, 0xf3, 0x41, 0xf3, + 0x4e, 0xf2, 0x53, 0xf2, 0x95, 0xf1, 0x97, 0xf1, 0x0b, 0xf1, 0x11, 0xf1, + 0xbf, 0xf0, 0xc0, 0xf0, 0xa7, 0xf0, 0xad, 0xf0, 0xcb, 0xf0, 0xcc, 0xf0, + 0x23, 0xf1, 0x27, 0xf1, 0xb4, 0xf1, 0xb7, 0xf1, 0x78, 0xf2, 0x7b, 0xf2, + 0x6c, 0xf3, 0x70, 0xf3, 0x89, 0xf4, 0x8c, 0xf4, 0xd0, 0xf5, 0xd3, 0xf5, + 0x31, 0xf7, 0x36, 0xf7, 0xaf, 0xf8, 0xb2, 0xf8, 0x3c, 0xfa, 0x3f, 0xfa, + 0xd2, 0xfb, 0xd4, 0xfb, 0x67, 0xfd, 0x6b, 0xfd, 0xf6, 0xfe, 0xf9, 0xfe, + 0x76, 0x00, 0x7a, 0x00, 0xdd, 0x01, 0xe0, 0x01, 0x29, 0x03, 0x2e, 0x03, + 0x51, 0x04, 0x55, 0x04, 0x50, 0x05, 0x54, 0x05, 0x23, 0x06, 0x24, 0x06, + 0xc2, 0x06, 0xc7, 0x06, 0x2d, 0x07, 0x31, 0x07, 0x66, 0x07, 0x69, 0x07, + 0x63, 0x07, 0x67, 0x07, 0x31, 0x07, 0x35, 0x07, 0xc5, 0x06, 0xc9, 0x06, + 0x28, 0x06, 0x2b, 0x06, 0x5b, 0x05, 0x5e, 0x05, 0x60, 0x04, 0x65, 0x04, + 0x43, 0x03, 0x45, 0x03, 0x00, 0x02, 0x05, 0x02, 0xa6, 0x00, 0xaa, 0x00, + 0x38, 0xff, 0x3c, 0xff, 0xbf, 0xfd, 0xc3, 0xfd, 0x41, 0xfc, 0x45, 0xfc, + 0xc7, 0xfa, 0xcb, 0xfa, 0x59, 0xf9, 0x5d, 0xf9, 0xfd, 0xf7, 0x00, 0xf8, + 0xbb, 0xf6, 0xbe, 0xf6, 0x98, 0xf5, 0x9c, 0xf5, 0x9b, 0xf4, 0x9e, 0xf4, + 0xcb, 0xf3, 0xcf, 0xf3, 0x28, 0xf3, 0x2d, 0xf3, 0xbb, 0xf2, 0xbe, 0xf2, + 0x81, 0xf2, 0x84, 0xf2, 0x82, 0xf2, 0x88, 0xf2, 0xb9, 0xf2, 0xbe, 0xf2, + 0x2a, 0xf3, 0x2d, 0xf3, 0xd1, 0xf3, 0xd6, 0xf3, 0xaf, 0xf4, 0xb2, 0xf4, + 0xb9, 0xf5, 0xbb, 0xf5, 0xf2, 0xf6, 0xf7, 0xf6, 0x51, 0xf8, 0x52, 0xf8, + 0xcc, 0xf9, 0xd0, 0xf9, 0x63, 0xfb, 0x66, 0xfb, 0x07, 0xfd, 0x0b, 0xfd, + 0xb9, 0xfe, 0xbd, 0xfe, 0x6c, 0x00, 0x6e, 0x00, 0x18, 0x02, 0x1c, 0x02, + 0xb5, 0x03, 0xb9, 0x03, 0x40, 0x05, 0x44, 0x05, 0xb0, 0x06, 0xb4, 0x06, + 0x00, 0x08, 0x02, 0x08, 0x28, 0x09, 0x2d, 0x09, 0x27, 0x0a, 0x2b, 0x0a, + 0xf8, 0x0a, 0xfb, 0x0a, 0x99, 0x0b, 0x9d, 0x0b, 0x03, 0x0c, 0x06, 0x0c, + 0x3a, 0x0c, 0x3f, 0x0c, 0x3a, 0x0c, 0x3e, 0x0c, 0x05, 0x0c, 0x0b, 0x0c, + 0x9d, 0x0b, 0x9f, 0x0b, 0x01, 0x0b, 0x05, 0x0b, 0x35, 0x0a, 0x37, 0x0a, + 0x40, 0x09, 0x44, 0x09, 0x22, 0x08, 0x26, 0x08, 0xe7, 0x06, 0xea, 0x06, + 0x8e, 0x05, 0x92, 0x05, 0x24, 0x04, 0x27, 0x04, 0xaf, 0x02, 0xb3, 0x02, + 0x34, 0x01, 0x37, 0x01, 0xbf, 0xff, 0xc3, 0xff, 0x54, 0xfe, 0x58, 0xfe, + 0xfa, 0xfc, 0xfd, 0xfc, 0xbe, 0xfb, 0xc3, 0xfb, 0x9f, 0xfa, 0xa3, 0xfa, + 0xaa, 0xf9, 0xb0, 0xf9, 0xe0, 0xf8, 0xe1, 0xf8, 0x41, 0xf8, 0x47, 0xf8, + 0xdb, 0xf7, 0xdd, 0xf7, 0xa5, 0xf7, 0xac, 0xf7, 0xab, 0xf7, 0xae, 0xf7, + 0xe5, 0xf7, 0xea, 0xf7, 0x5a, 0xf8, 0x5c, 0xf8, 0xfe, 0xf8, 0x02, 0xf9, + 0xd7, 0xf9, 0xdb, 0xf9, 0xe0, 0xfa, 0xe1, 0xfa, 0x0f, 0xfc, 0x14, 0xfc, + 0x63, 0xfd, 0x66, 0xfd, 0xd4, 0xfe, 0xd8, 0xfe, 0x5c, 0x00, 0x61, 0x00, + 0xf2, 0x01, 0xf5, 0x01, 0x90, 0x03, 0x96, 0x03, 0x2d, 0x05, 0x2f, 0x05, + 0xc4, 0x06, 0xc7, 0x06, 0x48, 0x08, 0x4c, 0x08, 0xba, 0x09, 0xbe, 0x09, + 0x0c, 0x0b, 0x0e, 0x0b, 0x3a, 0x0c, 0x40, 0x0c, 0x45, 0x0d, 0x46, 0x0d, + 0x1d, 0x0e, 0x24, 0x0e, 0xcb, 0x0e, 0xce, 0x0e, 0x40, 0x0f, 0x45, 0x0f, + 0x83, 0x0f, 0x86, 0x0f, 0x8c, 0x0f, 0x91, 0x0f, 0x5c, 0x0f, 0x60, 0x0f, + 0xf5, 0x0e, 0xfa, 0x0e, 0x56, 0x0e, 0x5a, 0x0e, 0x85, 0x0d, 0x8a, 0x0d, + 0x7e, 0x0c, 0x83, 0x0c, 0x4e, 0x0b, 0x50, 0x0b, 0xf4, 0x09, 0xf9, 0x09, + 0x78, 0x08, 0x7e, 0x08, 0xe5, 0x06, 0xe9, 0x06, 0x3f, 0x05, 0x45, 0x05, + 0x8c, 0x03, 0x91, 0x03, 0xdf, 0x01, 0xe3, 0x01, 0x2e, 0x00, 0x37, 0x00, + 0x97, 0xfe, 0x99, 0xfe, 0x0c, 0xfd, 0x11, 0xfd, 0xa0, 0xfb, 0xa6, 0xfb, + 0x5b, 0xfa, 0x5d, 0xfa, 0x37, 0xf9, 0x3c, 0xf9, 0x43, 0xf8, 0x48, 0xf8, + 0x7d, 0xf7, 0x81, 0xf7, 0xea, 0xf6, 0xf0, 0xf6, 0x8c, 0xf6, 0x8f, 0xf6, + 0x63, 0xf6, 0x69, 0xf6, 0x6f, 0xf6, 0x74, 0xf6, 0xb3, 0xf6, 0xb8, 0xf6, + 0x28, 0xf7, 0x2d, 0xf7, 0xcd, 0xf7, 0xd2, 0xf7, 0xa2, 0xf8, 0xa7, 0xf8, + 0x9d, 0xf9, 0xa2, 0xf9, 0xbd, 0xfa, 0xc3, 0xfa, 0xfd, 0xfb, 0x00, 0xfc, + 0x51, 0xfd, 0x55, 0xfd, 0xb8, 0xfe, 0xbd, 0xfe, 0x28, 0x00, 0x2c, 0x00, + 0x9a, 0x01, 0x9f, 0x01, 0x07, 0x03, 0x0a, 0x03, 0x66, 0x04, 0x6c, 0x04, + 0xb1, 0x05, 0xb4, 0x05, 0xe1, 0x06, 0xe6, 0x06, 0xf1, 0x07, 0xf4, 0x07, + 0xd8, 0x08, 0xdc, 0x08, 0x95, 0x09, 0x9a, 0x09, 0x23, 0x0a, 0x24, 0x0a, + 0x7b, 0x0a, 0x7f, 0x0a, 0x9e, 0x0a, 0xa1, 0x0a, 0x8d, 0x0a, 0x90, 0x0a, + 0x41, 0x0a, 0x47, 0x0a, 0xc5, 0x09, 0xc7, 0x09, 0x11, 0x09, 0x17, 0x09, + 0x2f, 0x08, 0x32, 0x08, 0x21, 0x07, 0x25, 0x07, 0xe8, 0x05, 0xed, 0x05, + 0x94, 0x04, 0x97, 0x04, 0x20, 0x03, 0x25, 0x03, 0x9b, 0x01, 0x9d, 0x01, + 0x05, 0x00, 0x09, 0x00, 0x6d, 0xfe, 0x70, 0xfe, 0xd7, 0xfc, 0xd8, 0xfc, + 0x48, 0xfb, 0x4d, 0xfb, 0xcc, 0xf9, 0xcc, 0xf9, 0x62, 0xf8, 0x68, 0xf8, + 0x1a, 0xf7, 0x1c, 0xf7, 0xf3, 0xf5, 0xf7, 0xf5, 0xf2, 0xf4, 0xf4, 0xf4, + 0x1d, 0xf4, 0x22, 0xf4, 0x75, 0xf3, 0x78, 0xf3, 0x00, 0xf3, 0x03, 0xf3, + 0xbd, 0xf2, 0xc1, 0xf2, 0xb2, 0xf2, 0xb3, 0xf2, 0xd5, 0xf2, 0xda, 0xf2, + 0x31, 0xf3, 0x32, 0xf3, 0xbc, 0xf3, 0xc1, 0xf3, 0x78, 0xf4, 0x7a, 0xf4, + 0x5e, 0xf5, 0x64, 0xf5, 0x6f, 0xf6, 0x70, 0xf6, 0x9d, 0xf7, 0xa1, 0xf7, + 0xec, 0xf8, 0xf0, 0xf8, 0x4c, 0xfa, 0x4f, 0xfa, 0xbe, 0xfb, 0xc1, 0xfb, + 0x35, 0xfd, 0x39, 0xfd, 0xaa, 0xfe, 0xad, 0xfe, 0x15, 0x00, 0x1a, 0x00, + 0x73, 0x01, 0x76, 0x01, 0xb7, 0x02, 0xbb, 0x02, 0xe0, 0x03, 0xe2, 0x03, + 0xe3, 0x04, 0xe8, 0x04, 0xbe, 0x05, 0xc2, 0x05, 0x6f, 0x06, 0x73, 0x06, + 0xea, 0x06, 0xed, 0x06, 0x39, 0x07, 0x3c, 0x07, 0x4f, 0x07, 0x55, 0x07, + 0x34, 0x07, 0x36, 0x07, 0xe1, 0x06, 0xe5, 0x06, 0x5a, 0x06, 0x5d, 0x06, + 0xa8, 0x05, 0xab, 0x05, 0xbf, 0x04, 0xc2, 0x04, 0xb2, 0x03, 0xb6, 0x03, + 0x7e, 0x02, 0x82, 0x02, 0x2c, 0x01, 0x30, 0x01, 0xc2, 0xff, 0xc5, 0xff, + 0x43, 0xfe, 0x48, 0xfe, 0xc1, 0xfc, 0xc3, 0xfc, 0x36, 0xfb, 0x3a, 0xfb, + 0xb4, 0xf9, 0xb6, 0xf9, 0x3e, 0xf8, 0x42, 0xf8, 0xdb, 0xf6, 0xdd, 0xf6, + 0x93, 0xf5, 0x96, 0xf5, 0x6b, 0xf4, 0x6e, 0xf4, 0x6a, 0xf3, 0x6e, 0xf3, + 0x96, 0xf2, 0x98, 0xf2, 0xef, 0xf1, 0xf4, 0xf1, 0x7f, 0xf1, 0x7f, 0xf1, + 0x3f, 0xf1, 0x44, 0xf1, 0x3e, 0xf1, 0x3e, 0xf1, 0x6f, 0xf1, 0x73, 0xf1, + 0xda, 0xf1, 0xdb, 0xf1, 0x7d, 0xf2, 0x82, 0xf2, 0x54, 0xf3, 0x56, 0xf3, + 0x5c, 0xf4, 0x60, 0xf4, 0x93, 0xf5, 0x95, 0xf5, 0xed, 0xf6, 0xf0, 0xf6, + 0x6f, 0xf8, 0x71, 0xf8, 0x04, 0xfa, 0x09, 0xfa, 0xb2, 0xfb, 0xb5, 0xfb, + 0x68, 0xfd, 0x6b, 0xfd, 0x23, 0xff, 0x26, 0xff, 0xd6, 0x00, 0xdb, 0x00, + 0x81, 0x02, 0x84, 0x02, 0x17, 0x04, 0x19, 0x04, 0x92, 0x05, 0x95, 0x05, + 0xee, 0x06, 0xf2, 0x06, 0x28, 0x08, 0x2b, 0x08, 0x35, 0x09, 0x3a, 0x09, + 0x19, 0x0a, 0x1a, 0x0a, 0xc9, 0x0a, 0xce, 0x0a, 0x49, 0x0b, 0x4d, 0x0b, + 0x95, 0x0b, 0x99, 0x0b, 0xab, 0x0b, 0xae, 0x0b, 0x90, 0x0b, 0x93, 0x0b, + 0x3e, 0x0b, 0x42, 0x0b, 0xba, 0x0a, 0xbe, 0x0a, 0x0c, 0x0a, 0x10, 0x0a, + 0x2e, 0x09, 0x31, 0x09, 0x31, 0x08, 0x33, 0x08, 0x0d, 0x07, 0x0f, 0x07, + 0xcf, 0x05, 0xd3, 0x05, 0x80, 0x04, 0x82, 0x04, 0x1f, 0x03, 0x22, 0x03, + 0xbf, 0x01, 0xc3, 0x01, 0x5b, 0x00, 0x5e, 0x00, 0x06, 0xff, 0x08, 0xff, + 0xbb, 0xfd, 0xc0, 0xfd, 0x8d, 0xfc, 0x8e, 0xfc, 0x7a, 0xfb, 0x7d, 0xfb, + 0x8a, 0xfa, 0x8e, 0xfa, 0xc5, 0xf9, 0xc8, 0xf9, 0x2b, 0xf9, 0x2e, 0xf9, + 0xc3, 0xf8, 0xc5, 0xf8, 0x8a, 0xf8, 0x8f, 0xf8, 0x8a, 0xf8, 0x8a, 0xf8, + 0xb8, 0xf8, 0xbc, 0xf8, 0x1f, 0xf9, 0x21, 0xf9, 0xb8, 0xf9, 0xba, 0xf9, + 0x7c, 0xfa, 0x81, 0xfa, 0x71, 0xfb, 0x72, 0xfb, 0x8b, 0xfc, 0x8d, 0xfc, + 0xc7, 0xfd, 0xca, 0xfd, 0x20, 0xff, 0x22, 0xff, 0x8e, 0x00, 0x8f, 0x00, + 0x0a, 0x02, 0x0d, 0x02, 0x8f, 0x03, 0x91, 0x03, 0x13, 0x05, 0x15, 0x05, + 0x8e, 0x06, 0x93, 0x06, 0x02, 0x08, 0x02, 0x08, 0x5a, 0x09, 0x5e, 0x09, + 0x9b, 0x0a, 0x9d, 0x0a, 0xb8, 0x0b, 0xbc, 0x0b, 0xb5, 0x0c, 0xb5, 0x0c, + 0x81, 0x0d, 0x85, 0x0d, 0x26, 0x0e, 0x27, 0x0e, 0x94, 0x0e, 0x98, 0x0e, + 0xd3, 0x0e, 0xd4, 0x0e, 0xda, 0x0e, 0xdc, 0x0e, 0xab, 0x0e, 0xae, 0x0e, + 0x4a, 0x0e, 0x4b, 0x0e, 0xb1, 0x0d, 0xb4, 0x0d, 0xe9, 0x0c, 0xed, 0x0c, + 0xf1, 0x0b, 0xf4, 0x0b, 0xd1, 0x0a, 0xd4, 0x0a, 0x8b, 0x09, 0x8e, 0x09, + 0x24, 0x08, 0x27, 0x08, 0xa8, 0x06, 0xaa, 0x06, 0x16, 0x05, 0x18, 0x05, + 0x7f, 0x03, 0x84, 0x03, 0xe7, 0x01, 0xe9, 0x01, 0x54, 0x00, 0x58, 0x00, + 0xd1, 0xfe, 0xd2, 0xfe, 0x5f, 0xfd, 0x61, 0xfd, 0x0c, 0xfc, 0x0f, 0xfc, + 0xd7, 0xfa, 0xda, 0xfa, 0xcc, 0xf9, 0xce, 0xf9, 0xe8, 0xf8, 0xe9, 0xf8, + 0x31, 0xf8, 0x35, 0xf8, 0xaf, 0xf7, 0xaf, 0xf7, 0x5a, 0xf7, 0x5f, 0xf7, + 0x40, 0xf7, 0x3f, 0xf7, 0x52, 0xf7, 0x57, 0xf7, 0x9d, 0xf7, 0x9d, 0xf7, + 0x14, 0xf8, 0x16, 0xf8, 0xbe, 0xf8, 0xc1, 0xf8, 0x8f, 0xf9, 0x90, 0xf9, + 0x8c, 0xfa, 0x90, 0xfa, 0xa6, 0xfb, 0xa8, 0xfb, 0xdf, 0xfc, 0xe1, 0xfc, + 0x2b, 0xfe, 0x2f, 0xfe, 0x89, 0xff, 0x8a, 0xff, 0xec, 0x00, 0xee, 0x00, + 0x4e, 0x02, 0x52, 0x02, 0xaf, 0x03, 0xb1, 0x03, 0xfe, 0x04, 0x01, 0x05, + 0x3a, 0x06, 0x3d, 0x06, 0x5c, 0x07, 0x5e, 0x07, 0x5a, 0x08, 0x5d, 0x08, + 0x36, 0x09, 0x37, 0x09, 0xe1, 0x09, 0xe5, 0x09, 0x61, 0x0a, 0x65, 0x0a, + 0xb0, 0x0a, 0xb0, 0x0a, 0xc6, 0x0a, 0xc9, 0x0a, 0xab, 0x0a, 0xae, 0x0a, + 0x57, 0x0a, 0x59, 0x0a, 0xd0, 0x09, 0xd4, 0x09, 0x17, 0x09, 0x19, 0x09, + 0x30, 0x08, 0x32, 0x08, 0x1b, 0x07, 0x1d, 0x07, 0xe0, 0x05, 0xe4, 0x05, + 0x88, 0x04, 0x8a, 0x04, 0x11, 0x03, 0x15, 0x03, 0x8a, 0x01, 0x8d, 0x01, + 0xf7, 0xff, 0xf9, 0xff, 0x5c, 0xfe, 0x5f, 0xfe, 0xc8, 0xfc, 0xca, 0xfc, + 0x38, 0xfb, 0x3c, 0xfb, 0xc1, 0xf9, 0xc2, 0xf9, 0x5a, 0xf8, 0x5d, 0xf8, + 0x14, 0xf7, 0x17, 0xf7, 0xf0, 0xf5, 0xf3, 0xf5, 0xf0, 0xf4, 0xf3, 0xf4, + 0x22, 0xf4, 0x24, 0xf4, 0x7b, 0xf3, 0x7e, 0xf3, 0x09, 0xf3, 0x0b, 0xf3, + 0xc9, 0xf2, 0xca, 0xf2, 0xba, 0xf2, 0xbd, 0xf2, 0xe4, 0xf2, 0xe4, 0xf2, + 0x3b, 0xf3, 0x40, 0xf3, 0xc9, 0xf3, 0xca, 0xf3, 0x82, 0xf4, 0x85, 0xf4, + 0x69, 0xf5, 0x6c, 0xf5, 0x77, 0xf6, 0x78, 0xf6, 0xa4, 0xf7, 0xa7, 0xf7, + 0xf1, 0xf8, 0xf3, 0xf8, 0x4e, 0xfa, 0x51, 0xfa, 0xc1, 0xfb, 0xc2, 0xfb, + 0x34, 0xfd, 0x37, 0xfd, 0xaa, 0xfe, 0xae, 0xfe, 0x19, 0x00, 0x1a, 0x00, + 0x75, 0x01, 0x77, 0x01, 0xbf, 0x02, 0xc0, 0x02, 0xe8, 0x03, 0xeb, 0x03, + 0xf3, 0x04, 0xf2, 0x04, 0xd2, 0x05, 0xd5, 0x05, 0x8a, 0x06, 0x8b, 0x06, + 0x0e, 0x07, 0x11, 0x07, 0x63, 0x07, 0x64, 0x07, 0x84, 0x07, 0x86, 0x07, + 0x70, 0x07, 0x71, 0x07, 0x29, 0x07, 0x2a, 0x07, 0xb0, 0x06, 0xb3, 0x06, + 0x04, 0x06, 0x04, 0x06, 0x2a, 0x05, 0x2d, 0x05, 0x29, 0x04, 0x29, 0x04, + 0xff, 0x02, 0x02, 0x03, 0xb9, 0x01, 0xba, 0x01, 0x57, 0x00, 0x57, 0x00, + 0xe2, 0xfe, 0xe6, 0xfe, 0x65, 0xfd, 0x66, 0xfd, 0xe1, 0xfb, 0xe2, 0xfb, + 0x5f, 0xfa, 0x62, 0xfa, 0xeb, 0xf8, 0xeb, 0xf8, 0x85, 0xf7, 0x86, 0xf7, + 0x39, 0xf6, 0x3d, 0xf6, 0x0d, 0xf5, 0x0e, 0xf5, 0x02, 0xf4, 0x05, 0xf4, + 0x24, 0xf3, 0x26, 0xf3, 0x6f, 0xf2, 0x72, 0xf2, 0xed, 0xf1, 0xef, 0xf1, + 0x9e, 0xf1, 0xa0, 0xf1, 0x85, 0xf1, 0x86, 0xf1, 0xa2, 0xf1, 0xa4, 0xf1, + 0xf4, 0xf1, 0xf6, 0xf1, 0x7a, 0xf2, 0x7d, 0xf2, 0x37, 0xf3, 0x38, 0xf3, + 0x21, 0xf4, 0x23, 0xf4, 0x37, 0xf5, 0x39, 0xf5, 0x76, 0xf6, 0x77, 0xf6, + 0xd1, 0xf7, 0xd5, 0xf7, 0x4c, 0xf9, 0x4d, 0xf9, 0xd5, 0xfa, 0xd9, 0xfa, + 0x6f, 0xfc, 0x71, 0xfc, 0x0d, 0xfe, 0x0f, 0xfe, 0xa7, 0xff, 0xa8, 0xff, + 0x38, 0x01, 0x3b, 0x01, 0xb8, 0x02, 0xb9, 0x02, 0x21, 0x04, 0x23, 0x04, + 0x6d, 0x05, 0x70, 0x05, 0x99, 0x06, 0x9a, 0x06, 0x9d, 0x07, 0x9f, 0x07, + 0x78, 0x08, 0x78, 0x08, 0x25, 0x09, 0x29, 0x09, 0xa1, 0x09, 0xa2, 0x09, + 0xf0, 0x09, 0xf2, 0x09, 0x0b, 0x0a, 0x0a, 0x0a, 0xf4, 0x09, 0xf7, 0x09, + 0xae, 0x09, 0xae, 0x09, 0x37, 0x09, 0x39, 0x09, 0x97, 0x08, 0x98, 0x08, + 0xcd, 0x07, 0xce, 0x07, 0xe0, 0x06, 0xe0, 0x06, 0xd3, 0x05, 0xd6, 0x05, + 0xaf, 0x04, 0xad, 0x04, 0x78, 0x03, 0x7b, 0x03, 0x34, 0x02, 0x35, 0x02, + 0xec, 0x00, 0xef, 0x00, 0xa8, 0xff, 0xa9, 0xff, 0x6b, 0xfe, 0x6d, 0xfe, + 0x42, 0xfd, 0x44, 0xfd, 0x2b, 0xfc, 0x2b, 0xfc, 0x35, 0xfb, 0x38, 0xfb, + 0x5d, 0xfa, 0x5d, 0xfa, 0xad, 0xf9, 0xb1, 0xf9, 0x2c, 0xf9, 0x2d, 0xf9, + 0xd5, 0xf8, 0xd6, 0xf8, 0xb3, 0xf8, 0xb2, 0xf8, 0xbe, 0xf8, 0xbf, 0xf8, + 0xfc, 0xf8, 0xff, 0xf8, 0x6f, 0xf9, 0x70, 0xf9, 0x0e, 0xfa, 0x10, 0xfa, + 0xde, 0xfa, 0xdf, 0xfa, 0xd6, 0xfb, 0xd8, 0xfb, 0xf2, 0xfc, 0xf4, 0xfc, + 0x33, 0xfe, 0x35, 0xfe, 0x89, 0xff, 0x8a, 0xff, 0xf6, 0x00, 0xf9, 0x00, + 0x6e, 0x02, 0x6f, 0x02, 0xed, 0x03, 0xf1, 0x03, 0x6c, 0x05, 0x6d, 0x05, + 0xe4, 0x06, 0xe7, 0x06, 0x49, 0x08, 0x4b, 0x08, 0x9f, 0x09, 0xa0, 0x09, + 0xd4, 0x0a, 0xd6, 0x0a, 0xee, 0x0b, 0xef, 0x0b, 0xde, 0x0c, 0xdf, 0x0c, + 0xa7, 0x0d, 0xa7, 0x0d, 0x41, 0x0e, 0x44, 0x0e, 0xae, 0x0e, 0xb0, 0x0e, + 0xe5, 0x0e, 0xe6, 0x0e, 0xec, 0x0e, 0xed, 0x0e, 0xba, 0x0e, 0xba, 0x0e, + 0x57, 0x0e, 0x5a, 0x0e, 0xbf, 0x0d, 0xc0, 0x0d, 0xf7, 0x0c, 0xf9, 0x0c, + 0x04, 0x0c, 0x04, 0x0c, 0xe1, 0x0a, 0xe3, 0x0a, 0xa0, 0x09, 0xa2, 0x09, + 0x39, 0x08, 0x3b, 0x08, 0xc0, 0x06, 0xc2, 0x06, 0x34, 0x05, 0x34, 0x05, + 0x9e, 0x03, 0xa0, 0x03, 0x09, 0x02, 0x0a, 0x02, 0x78, 0x00, 0x7b, 0x00, + 0xf8, 0xfe, 0xf9, 0xfe, 0x8a, 0xfd, 0x8b, 0xfd, 0x37, 0xfc, 0x39, 0xfc, + 0x08, 0xfb, 0x0a, 0xfb, 0xfa, 0xf9, 0xfc, 0xf9, 0x1a, 0xf9, 0x1c, 0xf9, + 0x66, 0xf8, 0x66, 0xf8, 0xe1, 0xf7, 0xe4, 0xf7, 0x93, 0xf7, 0x93, 0xf7, + 0x71, 0xf7, 0x73, 0xf7, 0x88, 0xf7, 0x8a, 0xf7, 0xd0, 0xf7, 0xd1, 0xf7, + 0x47, 0xf8, 0x49, 0xf8, 0xf0, 0xf8, 0xf4, 0xf8, 0xc3, 0xf9, 0xc2, 0xf9, + 0xbd, 0xfa, 0xc0, 0xfa, 0xd8, 0xfb, 0xd8, 0xfb, 0x11, 0xfd, 0x12, 0xfd, + 0x5e, 0xfe, 0x61, 0xfe, 0xbf, 0xff, 0xbe, 0xff, 0x23, 0x01, 0x25, 0x01, + 0x8b, 0x02, 0x8c, 0x02, 0xee, 0x03, 0xef, 0x03, 0x42, 0x05, 0x45, 0x05, + 0x86, 0x06, 0x86, 0x06, 0xac, 0x07, 0xaf, 0x07, 0xb4, 0x08, 0xb4, 0x08, + 0x99, 0x09, 0x9b, 0x09, 0x4f, 0x0a, 0x4f, 0x0a, 0xdb, 0x0a, 0xdc, 0x0a, + 0x33, 0x0b, 0x34, 0x0b, 0x58, 0x0b, 0x59, 0x0b, 0x4b, 0x0b, 0x4c, 0x0b, + 0x05, 0x0b, 0x06, 0x0b, 0x8e, 0x0a, 0x8e, 0x0a, 0xe1, 0x09, 0xe3, 0x09, + 0x08, 0x09, 0x0a, 0x09, 0x03, 0x08, 0x04, 0x08, 0xd6, 0x06, 0xd7, 0x06, + 0x89, 0x05, 0x89, 0x05, 0x1e, 0x04, 0x1f, 0x04, 0xa0, 0x02, 0xa0, 0x02, + 0x15, 0x01, 0x16, 0x01, 0x82, 0xff, 0x84, 0xff, 0xf0, 0xfd, 0xf1, 0xfd, + 0x69, 0xfc, 0x69, 0xfc, 0xea, 0xfa, 0xed, 0xfa, 0x8a, 0xf9, 0x87, 0xf9, + 0x3b, 0xf8, 0x3e, 0xf8, 0x13, 0xf7, 0x12, 0xf7, 0x0c, 0xf6, 0x0d, 0xf6, + 0x2f, 0xf5, 0x30, 0xf5, 0x80, 0xf4, 0x82, 0xf4, 0xff, 0xf3, 0xff, 0xf3, + 0xaf, 0xf3, 0xb0, 0xf3, 0x90, 0xf3, 0x90, 0xf3, 0xa4, 0xf3, 0xa5, 0xf3, + 0xe9, 0xf3, 0xe9, 0xf3, 0x5d, 0xf4, 0x5f, 0xf4, 0x02, 0xf5, 0x01, 0xf5, + 0xce, 0xf5, 0xd0, 0xf5, 0xc4, 0xf6, 0xc5, 0xf6, 0xd9, 0xf7, 0xda, 0xf7, + 0x08, 0xf9, 0x0a, 0xf9, 0x52, 0xfa, 0x51, 0xfa, 0xa2, 0xfb, 0xa5, 0xfb, + 0x05, 0xfd, 0x05, 0xfd, 0x5f, 0xfe, 0x60, 0xfe, 0xb9, 0xff, 0xb9, 0xff, + 0x03, 0x01, 0x03, 0x01, 0x37, 0x02, 0x39, 0x02, 0x53, 0x03, 0x53, 0x03, + 0x4c, 0x04, 0x4e, 0x04, 0x25, 0x05, 0x26, 0x05, 0xce, 0x05, 0xcf, 0x05, + 0x51, 0x06, 0x52, 0x06, 0x9d, 0x06, 0x9f, 0x06, 0xbc, 0x06, 0xbe, 0x06, + 0xaa, 0x06, 0xaa, 0x06, 0x61, 0x06, 0x62, 0x06, 0xeb, 0x05, 0xed, 0x05, + 0x44, 0x05, 0x46, 0x05, 0x73, 0x04, 0x73, 0x04, 0x78, 0x03, 0x7a, 0x03, + 0x5b, 0x02, 0x5d, 0x02, 0x20, 0x01, 0x21, 0x01, 0xce, 0xff, 0xce, 0xff, + 0x68, 0xfe, 0x6a, 0xfe, 0xfa, 0xfc, 0xfb, 0xfc, 0x88, 0xfb, 0x89, 0xfb, + 0x19, 0xfa, 0x1a, 0xfa, 0xb4, 0xf8, 0xb6, 0xf8, 0x62, 0xf7, 0x64, 0xf7, + 0x26, 0xf6, 0x28, 0xf6, 0x09, 0xf5, 0x09, 0xf5, 0x11, 0xf4, 0x12, 0xf4, + 0x3a, 0xf3, 0x3b, 0xf3, 0x96, 0xf2, 0x97, 0xf2, 0x1f, 0xf2, 0x1f, 0xf2, + 0xd7, 0xf1, 0xd9, 0xf1, 0xc9, 0xf1, 0xc9, 0xf1, 0xe6, 0xf1, 0xeb, 0xf1, + 0x44, 0xf2, 0x42, 0xf2, 0xcc, 0xf2, 0xcd, 0xf2, 0x89, 0xf3, 0x8b, 0xf3, + 0x77, 0xf4, 0x76, 0xf4, 0x8b, 0xf5, 0x8b, 0xf5, 0xc6, 0xf6, 0xc7, 0xf6, + 0x20, 0xf8, 0x20, 0xf8, 0x93, 0xf9, 0x94, 0xf9, 0x17, 0xfb, 0x18, 0xfb, + 0xa7, 0xfc, 0xa7, 0xfc, 0x3b, 0xfe, 0x3d, 0xfe, 0xca, 0xff, 0xc9, 0xff, + 0x4f, 0x01, 0x51, 0x01, 0xc3, 0x02, 0xc3, 0x02, 0x1d, 0x04, 0x1f, 0x04, + 0x5d, 0x05, 0x5e, 0x05, 0x76, 0x06, 0x77, 0x06, 0x6e, 0x07, 0x6f, 0x07, + 0x36, 0x08, 0x38, 0x08, 0xd5, 0x08, 0xd5, 0x08, 0x43, 0x09, 0x46, 0x09, + 0x7f, 0x09, 0x80, 0x09, 0x8e, 0x09, 0x8f, 0x09, 0x68, 0x09, 0x6a, 0x09, + 0x14, 0x09, 0x13, 0x09, 0x91, 0x08, 0x94, 0x08, 0xe3, 0x07, 0xe3, 0x07, + 0x0d, 0x07, 0x0e, 0x07, 0x15, 0x06, 0x15, 0x06, 0xfc, 0x04, 0xfd, 0x04, + 0xd0, 0x03, 0xd2, 0x03, 0x8e, 0x02, 0x8f, 0x02, 0x43, 0x01, 0x45, 0x01, + 0xf7, 0xff, 0xf6, 0xff, 0xaa, 0xfe, 0xad, 0xfe, 0x6a, 0xfd, 0x6a, 0xfd, + 0x3a, 0xfc, 0x3b, 0xfc, 0x20, 0xfb, 0x22, 0xfb, 0x27, 0xfa, 0x27, 0xfa, + 0x4f, 0xf9, 0x51, 0xf9, 0x9f, 0xf8, 0xa0, 0xf8, 0x1b, 0xf8, 0x1b, 0xf8, + 0xc6, 0xf7, 0xc8, 0xf7, 0xa4, 0xf7, 0xa4, 0xf7, 0xb1, 0xf7, 0xb2, 0xf7, + 0xf7, 0xf7, 0xf7, 0xf7, 0x6c, 0xf8, 0x6d, 0xf8, 0x10, 0xf9, 0x13, 0xf9, + 0xe7, 0xf9, 0xe7, 0xf9, 0xe5, 0xfa, 0xe8, 0xfa, 0x0e, 0xfc, 0x0c, 0xfc, + 0x51, 0xfd, 0x54, 0xfd, 0xb4, 0xfe, 0xb5, 0xfe, 0x2e, 0x00, 0x2e, 0x00, + 0xaf, 0x01, 0xb1, 0x01, 0x3f, 0x03, 0x40, 0x03, 0xc9, 0x04, 0xca, 0x04, + 0x4e, 0x06, 0x4f, 0x06, 0xc6, 0x07, 0xc5, 0x07, 0x25, 0x09, 0x27, 0x09, + 0x70, 0x0a, 0x70, 0x0a, 0x97, 0x0b, 0x98, 0x0b, 0x9b, 0x0c, 0x9d, 0x0c, + 0x75, 0x0d, 0x77, 0x0d, 0x23, 0x0e, 0x23, 0x0e, 0xa1, 0x0e, 0xa3, 0x0e, + 0xed, 0x0e, 0xee, 0x0e, 0x06, 0x0f, 0x08, 0x0f, 0xe9, 0x0e, 0xeb, 0x0e, + 0x9b, 0x0e, 0x9b, 0x0e, 0x16, 0x0e, 0x16, 0x0e, 0x65, 0x0d, 0x65, 0x0d, + 0x81, 0x0c, 0x84, 0x0c, 0x77, 0x0b, 0x77, 0x0b, 0x44, 0x0a, 0x46, 0x0a, + 0xf3, 0x08, 0xf3, 0x08, 0x88, 0x07, 0x8a, 0x07, 0x0a, 0x06, 0x09, 0x06, + 0x82, 0x04, 0x82, 0x04, 0xf4, 0x02, 0xf3, 0x02, 0x6d, 0x01, 0x6e, 0x01, + 0xf1, 0xff, 0xf0, 0xff, 0x85, 0xfe, 0x85, 0xfe, 0x35, 0xfd, 0x36, 0xfd, + 0x00, 0xfc, 0x01, 0xfc, 0xf4, 0xfa, 0xf2, 0xfa, 0x0c, 0xfa, 0x0c, 0xfa, + 0x51, 0xf9, 0x52, 0xf9, 0xc4, 0xf8, 0xc3, 0xf8, 0x69, 0xf8, 0x6a, 0xf8, + 0x3f, 0xf8, 0x40, 0xf8, 0x4a, 0xf8, 0x4a, 0xf8, 0x84, 0xf8, 0x83, 0xf8, + 0xf0, 0xf8, 0xf1, 0xf8, 0x88, 0xf9, 0x87, 0xf9, 0x49, 0xfa, 0x49, 0xfa, + 0x2e, 0xfb, 0x2f, 0xfb, 0x39, 0xfc, 0x37, 0xfc, 0x5e, 0xfd, 0x5e, 0xfd, + 0x9f, 0xfe, 0x9f, 0xfe, 0xf2, 0xff, 0xf2, 0xff, 0x4e, 0x01, 0x4e, 0x01, + 0xae, 0x02, 0xac, 0x02, 0x07, 0x04, 0x08, 0x04, 0x52, 0x05, 0x51, 0x05, + 0x87, 0x06, 0x89, 0x06, 0xa2, 0x07, 0xa1, 0x07, 0x9c, 0x08, 0x9d, 0x08, + 0x6d, 0x09, 0x6d, 0x09, 0x13, 0x0a, 0x11, 0x0a, 0x89, 0x0a, 0x8b, 0x0a, + 0xcf, 0x0a, 0xcf, 0x0a, 0xe2, 0x0a, 0xe3, 0x0a, 0xc3, 0x0a, 0xc5, 0x0a, + 0x74, 0x0a, 0x73, 0x0a, 0xef, 0x09, 0xf0, 0x09, 0x3f, 0x09, 0x40, 0x09, + 0x64, 0x08, 0x65, 0x08, 0x63, 0x07, 0x65, 0x07, 0x40, 0x06, 0x40, 0x06, + 0x02, 0x05, 0x00, 0x05, 0xad, 0x03, 0xad, 0x03, 0x48, 0x02, 0x47, 0x02, + 0xd9, 0x00, 0xda, 0x00, 0x6d, 0xff, 0x6d, 0xff, 0xff, 0xfd, 0xff, 0xfd, + 0xa0, 0xfc, 0xa0, 0xfc, 0x50, 0xfb, 0x50, 0xfb, 0x17, 0xfa, 0x19, 0xfa, + 0xfd, 0xf8, 0xfe, 0xf8, 0xfe, 0xf7, 0xff, 0xf7, 0x26, 0xf7, 0x26, 0xf7, + 0x74, 0xf6, 0x73, 0xf6, 0xeb, 0xf5, 0xed, 0xf5, 0x8f, 0xf5, 0x8f, 0xf5, + 0x5d, 0xf5, 0x5e, 0xf5, 0x5a, 0xf5, 0x5a, 0xf5, 0x7f, 0xf5, 0x7e, 0xf5, + 0xd3, 0xf5, 0xd4, 0xf5, 0x4b, 0xf6, 0x4b, 0xf6, 0xed, 0xf6, 0xec, 0xf6, + 0xac, 0xf7, 0xae, 0xf7, 0x90, 0xf8, 0x8f, 0xf8, 0x88, 0xf9, 0x89, 0xf9, + 0x96, 0xfa, 0x97, 0xfa, 0xb1, 0xfb, 0xb1, 0xfb, 0xd7, 0xfc, 0xd6, 0xfc, + 0xfb, 0xfd, 0xfd, 0xfd, 0x1f, 0xff, 0x1e, 0xff, 0x36, 0x00, 0x36, 0x00, + 0x3f, 0x01, 0x40, 0x01, 0x34, 0x02, 0x32, 0x02, 0x0c, 0x03, 0x10, 0x03, + 0xcb, 0x03, 0xc7, 0x03, 0x61, 0x04, 0x65, 0x04, 0xd6, 0x04, 0xd4, 0x04, + 0x23, 0x05, 0x23, 0x05, 0x46, 0x05, 0x47, 0x05, 0x40, 0x05, 0x3f, 0x05, + 0x11, 0x05, 0x12, 0x05, 0xb4, 0x04, 0xb7, 0x04, 0x37, 0x04, 0x37, 0x04, + 0x91, 0x03, 0x92, 0x03, 0xcc, 0x02, 0xcb, 0x02, 0xe8, 0x01, 0xe9, 0x01, + 0xe9, 0x00, 0xe9, 0x00, 0xd9, 0xff, 0xd9, 0xff, 0xb7, 0xfe, 0xb8, 0xfe, + 0x8b, 0xfd, 0x8c, 0xfd, 0x5c, 0xfc, 0x5d, 0xfc, 0x2f, 0xfb, 0x2f, 0xfb, + 0x09, 0xfa, 0x08, 0xfa, 0xec, 0xf8, 0xec, 0xf8, 0xe3, 0xf7, 0xe3, 0xf7, + 0xef, 0xf6, 0xef, 0xf6, 0x16, 0xf6, 0x16, 0xf6, 0x5a, 0xf5, 0x5a, 0xf5, + 0xc2, 0xf4, 0xc1, 0xf4, 0x4b, 0xf4, 0x4b, 0xf4, 0xfa, 0xf3, 0xfc, 0xf3, + 0xd4, 0xf3, 0xd1, 0xf3, 0xd3, 0xf3, 0xd5, 0xf3, 0xfb, 0xf3, 0xfc, 0xf3, + 0x4b, 0xf4, 0x4b, 0xf4, 0xc2, 0xf4, 0xc3, 0xf4, 0x5c, 0xf5, 0x5c, 0xf5, + 0x1a, 0xf6, 0x1b, 0xf6, 0xf3, 0xf6, 0xf4, 0xf6, 0xe8, 0xf7, 0xe9, 0xf7, + 0xf3, 0xf8, 0xf3, 0xf8, 0x0b, 0xfa, 0x0d, 0xfa, 0x34, 0xfb, 0x31, 0xfb, + 0x5d, 0xfc, 0x5f, 0xfc, 0x89, 0xfd, 0x8b, 0xfd, 0xb4, 0xfe, 0xb2, 0xfe, + 0xd0, 0xff, 0xd2, 0xff, 0xe5, 0x00, 0xe4, 0x00, 0xe1, 0x01, 0xdf, 0x01, + 0xcb, 0x02, 0xcc, 0x02, 0x99, 0x03, 0x98, 0x03, 0x4d, 0x04, 0x4c, 0x04, + 0xe0, 0x04, 0xe1, 0x04, 0x54, 0x05, 0x54, 0x05, 0xa7, 0x05, 0xa7, 0x05, + 0xd8, 0x05, 0xd8, 0x05, 0xe7, 0x05, 0xe6, 0x05, 0xd5, 0x05, 0xd6, 0x05, + 0xa0, 0x05, 0xa0, 0x05, 0x53, 0x05, 0x52, 0x05, 0xe6, 0x04, 0xe5, 0x04, + 0x60, 0x04, 0x60, 0x04, 0xc7, 0x03, 0xc7, 0x03, 0x1b, 0x03, 0x1b, 0x03, + 0x65, 0x02, 0x64, 0x02, 0xa1, 0x01, 0xa1, 0x01, 0xda, 0x00, 0xdc, 0x00, + 0x17, 0x00, 0x15, 0x00, 0x54, 0xff, 0x54, 0xff, 0x9b, 0xfe, 0x9b, 0xfe, + 0xed, 0xfd, 0xee, 0xfd, 0x54, 0xfd, 0x52, 0xfd, 0xca, 0xfc, 0xc9, 0xfc, + 0x5a, 0xfc, 0x59, 0xfc, 0x03, 0xfc, 0x02, 0xfc, 0xc6, 0xfb, 0xc5, 0xfb, + 0xa9, 0xfb, 0xa9, 0xfb, 0xa6, 0xfb, 0xa5, 0xfb, 0xc7, 0xfb, 0xc7, 0xfb, + 0x02, 0xfc, 0x02, 0xfc, 0x5c, 0xfc, 0x5b, 0xfc, 0xd2, 0xfc, 0xd4, 0xfc, + 0x5f, 0xfd, 0x5e, 0xfd, 0x08, 0xfe, 0x09, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, + 0x8f, 0xff, 0x8f, 0xff, 0x67, 0x00, 0x66, 0x00, 0x49, 0x01, 0x49, 0x01, + 0x32, 0x02, 0x32, 0x02, 0x1c, 0x03, 0x1b, 0x03, 0x03, 0x04, 0x04, 0x04, + 0xe5, 0x04, 0xe4, 0x04, 0xba, 0x05, 0xbb, 0x05, 0x86, 0x06, 0x84, 0x06, + 0x3b, 0x07, 0x3e, 0x07, 0xe2, 0x07, 0xe0, 0x07, 0x6d, 0x08, 0x6e, 0x08, + 0xe2, 0x08, 0xe2, 0x08, 0x3d, 0x09, 0x3b, 0x09, 0x79, 0x09, 0x7a, 0x09, + 0x9b, 0x09, 0x9a, 0x09, 0x9e, 0x09, 0x9f, 0x09, 0x85, 0x09, 0x85, 0x09, + 0x52, 0x09, 0x51, 0x09, 0xff, 0x08, 0xfe, 0x08, 0x97, 0x08, 0x97, 0x08, + 0x18, 0x08, 0x18, 0x08, 0x83, 0x07, 0x83, 0x07, 0xdf, 0x06, 0xdf, 0x06, + 0x28, 0x06, 0x28, 0x06, 0x6b, 0x05, 0x69, 0x05, 0xa3, 0x04, 0xa3, 0x04, + 0xdc, 0x03, 0xdb, 0x03, 0x11, 0x03, 0x11, 0x03, 0x4e, 0x02, 0x4d, 0x02, + 0x92, 0x01, 0x91, 0x01, 0xe0, 0x00, 0xe1, 0x00, 0x3f, 0x00, 0x3f, 0x00, + 0xae, 0xff, 0xae, 0xff, 0x31, 0xff, 0x30, 0xff, 0xc9, 0xfe, 0xca, 0xfe, + 0x7a, 0xfe, 0x79, 0xfe, 0x42, 0xfe, 0x43, 0xfe, 0x23, 0xfe, 0x23, 0xfe, + 0x1d, 0xfe, 0x1c, 0xfe, 0x30, 0xfe, 0x31, 0xfe, 0x5b, 0xfe, 0x59, 0xfe, + 0x9b, 0xfe, 0x9b, 0xfe, 0xf0, 0xfe, 0xef, 0xfe, 0x59, 0xff, 0x57, 0xff, + 0xcf, 0xff, 0xcf, 0xff, 0x53, 0x00, 0x53, 0x00, 0xe3, 0x00, 0xe2, 0x00, + 0x7a, 0x01, 0x7b, 0x01, 0x14, 0x02, 0x13, 0x02, 0xaf, 0x02, 0xaf, 0x02, + 0x47, 0x03, 0x48, 0x03, 0xda, 0x03, 0xd8, 0x03, 0x62, 0x04, 0x63, 0x04, + 0xdd, 0x04, 0xdb, 0x04, 0x4c, 0x05, 0x4a, 0x05, 0xa6, 0x05, 0xa6, 0x05, + 0xef, 0x05, 0xed, 0x05, 0x23, 0x06, 0x23, 0x06, 0x3e, 0x06, 0x3b, 0x06, + 0x41, 0x06, 0x40, 0x06, 0x2d, 0x06, 0x2d, 0x06, 0x02, 0x06, 0xff, 0x05, + 0xbb, 0x05, 0xbe, 0x05, 0x65, 0x05, 0x60, 0x05, 0xf2, 0x04, 0xf4, 0x04, + 0x70, 0x04, 0x6f, 0x04, 0xda, 0x03, 0xda, 0x03, 0x38, 0x03, 0x38, 0x03, + 0x86, 0x02, 0x85, 0x02, 0xcf, 0x01, 0xcd, 0x01, 0x0e, 0x01, 0x0e, 0x01, + 0x4d, 0x00, 0x4b, 0x00, 0x89, 0xff, 0x89, 0xff, 0xca, 0xfe, 0xc8, 0xfe, + 0x10, 0xfe, 0x11, 0xfe, 0x60, 0xfd, 0x5f, 0xfd, 0xbb, 0xfc, 0xba, 0xfc, + 0x25, 0xfc, 0x25, 0xfc, 0x9f, 0xfb, 0x9f, 0xfb, 0x2b, 0xfb, 0x2a, 0xfb, + 0xce, 0xfa, 0xcb, 0xfa, 0x7e, 0xfa, 0x80, 0xfa, 0x4d, 0xfa, 0x4a, 0xfa, + 0x2c, 0xfa, 0x2c, 0xfa, 0x23, 0xfa, 0x23, 0xfa, 0x2f, 0xfa, 0x30, 0xfa, + 0x50, 0xfa, 0x4f, 0xfa, 0x86, 0xfa, 0x85, 0xfa, 0xcc, 0xfa, 0xcc, 0xfa, + 0x24, 0xfb, 0x24, 0xfb, 0x89, 0xfb, 0x88, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, + 0x76, 0xfc, 0x75, 0xfc, 0xf6, 0xfc, 0xf5, 0xfc, 0x7d, 0xfd, 0x7b, 0xfd, + 0x00, 0xfe, 0xff, 0xfd, 0x84, 0xfe, 0x84, 0xfe, 0x02, 0xff, 0x00, 0xff, + 0x7a, 0xff, 0x7b, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0x45, 0x00, 0x45, 0x00, + 0x95, 0x00, 0x95, 0x00, 0xd7, 0x00, 0xd4, 0x00, 0x06, 0x01, 0x06, 0x01, + 0x20, 0x01, 0x1e, 0x01, 0x29, 0x01, 0x28, 0x01, 0x1b, 0x01, 0x1a, 0x01, + 0xfa, 0x00, 0xf7, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0x7d, 0x00, 0x7c, 0x00, + 0x28, 0x00, 0x27, 0x00, 0xbb, 0xff, 0xbb, 0xff, 0x48, 0xff, 0x46, 0xff, + 0xc2, 0xfe, 0xc1, 0xfe, 0x33, 0xfe, 0x33, 0xfe, 0xa1, 0xfd, 0xa0, 0xfd, + 0x04, 0xfd, 0x04, 0xfd, 0x6b, 0xfc, 0x69, 0xfc, 0xcd, 0xfb, 0xcd, 0xfb, + 0x38, 0xfb, 0x35, 0xfb, 0xa3, 0xfa, 0xa4, 0xfa, 0x1b, 0xfa, 0x18, 0xfa, + 0x9b, 0xf9, 0x9b, 0xf9, 0x27, 0xf9, 0x27, 0xf9, 0xc6, 0xf8, 0xc5, 0xf8, + 0x72, 0xf8, 0x71, 0xf8, 0x32, 0xf8, 0x30, 0xf8, 0x04, 0xf8, 0x02, 0xf8, + 0xe9, 0xf7, 0xe8, 0xf7, 0xe3, 0xf7, 0xe3, 0xf7, 0xf1, 0xf7, 0xf0, 0xf7, + 0x14, 0xf8, 0x11, 0xf8, 0x47, 0xf8, 0x48, 0xf8, 0x8f, 0xf8, 0x8e, 0xf8, + 0xe8, 0xf8, 0xe7, 0xf8, 0x4f, 0xf9, 0x4c, 0xf9, 0xc4, 0xf9, 0xc2, 0xf9, + 0x42, 0xfa, 0x42, 0xfa, 0xcc, 0xfa, 0xca, 0xfa, 0x5b, 0xfb, 0x5b, 0xfb, + 0xed, 0xfb, 0xed, 0xfb, 0x85, 0xfc, 0x84, 0xfc, 0x18, 0xfd, 0x18, 0xfd, + 0xac, 0xfd, 0xac, 0xfd, 0x39, 0xfe, 0x36, 0xfe, 0xbf, 0xfe, 0xbe, 0xfe, + 0x3c, 0xff, 0x3b, 0xff, 0xad, 0xff, 0xac, 0xff, 0x11, 0x00, 0x11, 0x00, + 0x6a, 0x00, 0x6a, 0x00, 0xb6, 0x00, 0xb5, 0x00, 0xed, 0x00, 0xed, 0x00, + 0x1b, 0x01, 0x19, 0x01, 0x35, 0x01, 0x35, 0x01, 0x43, 0x01, 0x41, 0x01, + 0x40, 0x01, 0x40, 0x01, 0x32, 0x01, 0x31, 0x01, 0x15, 0x01, 0x15, 0x01, + 0xf0, 0x00, 0xef, 0x00, 0xc0, 0x00, 0xbe, 0x00, 0x89, 0x00, 0x89, 0x00, + 0x4d, 0x00, 0x4b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0xcb, 0xff, 0xca, 0xff, + 0x89, 0xff, 0x88, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x11, 0xff, 0x10, 0xff, + 0xe0, 0xfe, 0xdf, 0xfe, 0xb5, 0xfe, 0xb5, 0xfe, 0x96, 0xfe, 0x93, 0xfe, + 0x82, 0xfe, 0x81, 0xfe, 0x78, 0xfe, 0x76, 0xfe, 0x7f, 0xfe, 0x7e, 0xfe, + 0x91, 0xfe, 0x90, 0xfe, 0xb3, 0xfe, 0xb1, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, + 0x21, 0xff, 0x20, 0xff, 0x70, 0xff, 0x6e, 0xff, 0xc7, 0xff, 0xc6, 0xff, + 0x2d, 0x00, 0x2c, 0x00, 0x9d, 0x00, 0x9c, 0x00, 0x13, 0x01, 0x13, 0x01, + 0x93, 0x01, 0x92, 0x01, 0x16, 0x02, 0x17, 0x02, 0x9e, 0x02, 0x9d, 0x02, + 0x28, 0x03, 0x28, 0x03, 0xab, 0x03, 0xaa, 0x03, 0x33, 0x04, 0x30, 0x04, + 0xaf, 0x04, 0xb0, 0x04, 0x28, 0x05, 0x26, 0x05, 0x96, 0x05, 0x96, 0x05, + 0xfa, 0x05, 0xf8, 0x05, 0x55, 0x06, 0x54, 0x06, 0x9d, 0x06, 0x9b, 0x06, + 0xda, 0x06, 0xdb, 0x06, 0x08, 0x07, 0x05, 0x07, 0x24, 0x07, 0x23, 0x07, + 0x32, 0x07, 0x30, 0x07, 0x2b, 0x07, 0x2b, 0x07, 0x19, 0x07, 0x17, 0x07, + 0xf3, 0x06, 0xf3, 0x06, 0xc1, 0x06, 0xbf, 0x06, 0x7d, 0x06, 0x7d, 0x06, + 0x2e, 0x06, 0x2d, 0x06, 0xd4, 0x05, 0xd3, 0x05, 0x6f, 0x05, 0x6e, 0x05, + 0x03, 0x05, 0x01, 0x05, 0x8f, 0x04, 0x8f, 0x04, 0x17, 0x04, 0x17, 0x04, + 0x9e, 0x03, 0x9d, 0x03, 0x25, 0x03, 0x24, 0x03, 0xae, 0x02, 0xad, 0x02, + 0x39, 0x02, 0x39, 0x02, 0xce, 0x01, 0xcc, 0x01, 0x69, 0x01, 0x69, 0x01, + 0x0d, 0x01, 0x0b, 0x01, 0xbb, 0x00, 0xbc, 0x00, 0x79, 0x00, 0x77, 0x00, + 0x40, 0x00, 0x40, 0x00, 0x18, 0x00, 0x17, 0x00, 0xfb, 0xff, 0xfb, 0xff, + 0xf0, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0x03, 0x00, 0x01, 0x00, + 0x1f, 0x00, 0x21, 0x00, 0x48, 0x00, 0x46, 0x00, 0x80, 0x00, 0x7e, 0x00, + 0xbb, 0x00, 0xbc, 0x00, 0x08, 0x01, 0x06, 0x01, 0x51, 0x01, 0x53, 0x01, + 0xa9, 0x01, 0xa7, 0x01, 0x01, 0x02, 0xff, 0x01, 0x56, 0x02, 0x58, 0x02, + 0xb6, 0x02, 0xb2, 0x02, 0x08, 0x03, 0x08, 0x03, 0x5c, 0x03, 0x5b, 0x03, + 0xa7, 0x03, 0xa8, 0x03, 0xee, 0x03, 0xec, 0x03, 0x28, 0x04, 0x28, 0x04, + 0x5c, 0x04, 0x59, 0x04, 0x7e, 0x04, 0x7e, 0x04, 0x9a, 0x04, 0x99, 0x04, + 0xa4, 0x04, 0xa3, 0x04, 0xa2, 0x04, 0xa1, 0x04, 0x93, 0x04, 0x92, 0x04, + 0x76, 0x04, 0x73, 0x04, 0x4a, 0x04, 0x4a, 0x04, 0x14, 0x04, 0x13, 0x04, + 0xce, 0x03, 0xce, 0x03, 0x81, 0x03, 0x80, 0x03, 0x29, 0x03, 0x27, 0x03, + 0xc8, 0x02, 0xc6, 0x02, 0x5e, 0x02, 0x5e, 0x02, 0xf1, 0x01, 0xee, 0x01, + 0x7e, 0x01, 0x7e, 0x01, 0x09, 0x01, 0x08, 0x01, 0x95, 0x00, 0x94, 0x00, + 0x21, 0x00, 0x20, 0x00, 0xb0, 0xff, 0xae, 0xff, 0x44, 0xff, 0x45, 0xff, + 0xdd, 0xfe, 0xdb, 0xfe, 0x7f, 0xfe, 0x7e, 0xfe, 0x28, 0xfe, 0x26, 0xfe, + 0xd9, 0xfd, 0xd9, 0xfd, 0x9a, 0xfd, 0x98, 0xfd, 0x5f, 0xfd, 0x5e, 0xfd, + 0x34, 0xfd, 0x33, 0xfd, 0x12, 0xfd, 0x11, 0xfd, 0xfd, 0xfc, 0xfb, 0xfc, + 0xf2, 0xfc, 0xf3, 0xfc, 0xf4, 0xfc, 0xf3, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0x14, 0xfd, 0x11, 0xfd, 0x30, 0xfd, 0x2f, 0xfd, 0x54, 0xfd, 0x55, 0xfd, + 0x7e, 0xfd, 0x7c, 0xfd, 0xad, 0xfd, 0xae, 0xfd, 0xdd, 0xfd, 0xd9, 0xfd, + 0x10, 0xfe, 0x10, 0xfe, 0x42, 0xfe, 0x41, 0xfe, 0x73, 0xfe, 0x71, 0xfe, + 0xa0, 0xfe, 0x9f, 0xfe, 0xc7, 0xfe, 0xc6, 0xfe, 0xeb, 0xfe, 0xea, 0xfe, + 0x06, 0xff, 0x04, 0xff, 0x17, 0xff, 0x16, 0xff, 0x24, 0xff, 0x22, 0xff, + 0x22, 0xff, 0x20, 0xff, 0x19, 0xff, 0x19, 0xff, 0x05, 0xff, 0x02, 0xff, + 0xe5, 0xfe, 0xe5, 0xfe, 0xbc, 0xfe, 0xba, 0xfe, 0x89, 0xfe, 0x86, 0xfe, + 0x4b, 0xfe, 0x4b, 0xfe, 0x06, 0xfe, 0x05, 0xfe, 0xba, 0xfd, 0xb5, 0xfd, + 0x65, 0xfd, 0x66, 0xfd, 0x0e, 0xfd, 0x0c, 0xfd, 0xb1, 0xfc, 0xb0, 0xfc, + 0x53, 0xfc, 0x52, 0xfc, 0xf5, 0xfb, 0xf2, 0xfb, 0x94, 0xfb, 0x95, 0xfb, + 0x3a, 0xfb, 0x37, 0xfb, 0xe1, 0xfa, 0xe2, 0xfa, 0x8d, 0xfa, 0x8b, 0xfa, + 0x44, 0xfa, 0x43, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xc6, 0xf9, 0xc4, 0xf9, + 0x97, 0xf9, 0x96, 0xf9, 0x71, 0xf9, 0x70, 0xf9, 0x59, 0xf9, 0x58, 0xf9, + 0x4c, 0xf9, 0x4d, 0xf9, 0x4e, 0xf9, 0x4c, 0xf9, 0x5c, 0xf9, 0x5c, 0xf9, + 0x74, 0xf9, 0x72, 0xf9, 0x9e, 0xf9, 0x9c, 0xf9, 0xcd, 0xf9, 0xcc, 0xf9, + 0x0c, 0xfa, 0x0a, 0xfa, 0x50, 0xfa, 0x4f, 0xfa, 0xa3, 0xfa, 0xa1, 0xfa, + 0xf7, 0xfa, 0xf7, 0xfa, 0x56, 0xfb, 0x55, 0xfb, 0xb7, 0xfb, 0xb5, 0xfb, + 0x1b, 0xfc, 0x1a, 0xfc, 0x80, 0xfc, 0x7e, 0xfc, 0xe9, 0xfc, 0xe7, 0xfc, + 0x4a, 0xfd, 0x4a, 0xfd, 0xad, 0xfd, 0xac, 0xfd, 0x0b, 0xfe, 0x0a, 0xfe, + 0x5f, 0xfe, 0x5e, 0xfe, 0xb2, 0xfe, 0xb2, 0xfe, 0xf9, 0xfe, 0xf6, 0xfe, + 0x3a, 0xff, 0x3a, 0xff, 0x6f, 0xff, 0x6d, 0xff, 0x9d, 0xff, 0x9e, 0xff, + 0xbf, 0xff, 0xbc, 0xff, 0xd9, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xe5, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xdd, 0xff, 0xdd, 0xff, + 0xcc, 0xff, 0xca, 0xff, 0xb1, 0xff, 0xaf, 0xff, 0x94, 0xff, 0x92, 0xff, + 0x70, 0xff, 0x6f, 0xff, 0x4b, 0xff, 0x4a, 0xff, 0x28, 0xff, 0x26, 0xff, + 0xff, 0xfe, 0xff, 0xfe, 0xe1, 0xfe, 0xdf, 0xfe, 0xbc, 0xfe, 0xbc, 0xfe, + 0xa5, 0xfe, 0xa3, 0xfe, 0x8e, 0xfe, 0x8d, 0xfe, 0x7f, 0xfe, 0x80, 0xfe, + 0x7a, 0xfe, 0x79, 0xfe, 0x7d, 0xfe, 0x7c, 0xfe, 0x8a, 0xfe, 0x8a, 0xfe, + 0xa2, 0xfe, 0xa2, 0xfe, 0xc3, 0xfe, 0xc0, 0xfe, 0xef, 0xfe, 0xee, 0xfe, + 0x26, 0xff, 0x25, 0xff, 0x68, 0xff, 0x64, 0xff, 0xaf, 0xff, 0xb0, 0xff, + 0x05, 0x00, 0x01, 0x00, 0x5f, 0x00, 0x5e, 0x00, 0xc2, 0x00, 0xc1, 0x00, + 0x2a, 0x01, 0x29, 0x01, 0x97, 0x01, 0x94, 0x01, 0x05, 0x02, 0x05, 0x02, + 0x76, 0x02, 0x76, 0x02, 0xe7, 0x02, 0xe6, 0x02, 0x59, 0x03, 0x57, 0x03, + 0xc2, 0x03, 0xc2, 0x03, 0x2c, 0x04, 0x2c, 0x04, 0x90, 0x04, 0x8e, 0x04, + 0xe9, 0x04, 0xe9, 0x04, 0x3d, 0x05, 0x3d, 0x05, 0x87, 0x05, 0x83, 0x05, + 0xc4, 0x05, 0xc4, 0x05, 0xfa, 0x05, 0xf9, 0x05, 0x20, 0x06, 0x20, 0x06, + 0x3d, 0x06, 0x3d, 0x06, 0x4e, 0x06, 0x4c, 0x06, 0x50, 0x06, 0x4e, 0x06, + 0x48, 0x06, 0x47, 0x06, 0x31, 0x06, 0x2f, 0x06, 0x0f, 0x06, 0x0e, 0x06, + 0xe4, 0x05, 0xe4, 0x05, 0xb1, 0x05, 0xad, 0x05, 0x71, 0x05, 0x71, 0x05, + 0x2c, 0x05, 0x2b, 0x05, 0xe1, 0x04, 0xde, 0x04, 0x90, 0x04, 0x91, 0x04, + 0x3b, 0x04, 0x38, 0x04, 0xe8, 0x03, 0xe7, 0x03, 0x8f, 0x03, 0x8e, 0x03, + 0x3c, 0x03, 0x3a, 0x03, 0xe9, 0x02, 0xe8, 0x02, 0x99, 0x02, 0x96, 0x02, + 0x52, 0x02, 0x50, 0x02, 0x0b, 0x02, 0x0a, 0x02, 0xd1, 0x01, 0xd0, 0x01, + 0x9d, 0x01, 0x9b, 0x01, 0x6e, 0x01, 0x6d, 0x01, 0x51, 0x01, 0x51, 0x01, + 0x35, 0x01, 0x32, 0x01, 0x27, 0x01, 0x26, 0x01, 0x23, 0x01, 0x20, 0x01, + 0x23, 0x01, 0x22, 0x01, 0x34, 0x01, 0x32, 0x01, 0x45, 0x01, 0x43, 0x01, + 0x64, 0x01, 0x63, 0x01, 0x86, 0x01, 0x84, 0x01, 0xad, 0x01, 0xab, 0x01, + 0xdc, 0x01, 0xd9, 0x01, 0x07, 0x02, 0x06, 0x02, 0x3c, 0x02, 0x3a, 0x02, + 0x6b, 0x02, 0x6a, 0x02, 0x9e, 0x02, 0x9a, 0x02, 0xcc, 0x02, 0xca, 0x02, + 0xf6, 0x02, 0xf5, 0x02, 0x1e, 0x03, 0x1d, 0x03, 0x3e, 0x03, 0x3c, 0x03, + 0x58, 0x03, 0x58, 0x03, 0x6e, 0x03, 0x6c, 0x03, 0x76, 0x03, 0x76, 0x03, + 0x7a, 0x03, 0x7b, 0x03, 0x76, 0x03, 0x71, 0x03, 0x63, 0x03, 0x66, 0x03, + 0x4e, 0x03, 0x4b, 0x03, 0x2d, 0x03, 0x2c, 0x03, 0x04, 0x03, 0x04, 0x03, + 0xd1, 0x02, 0xce, 0x02, 0x99, 0x02, 0x9b, 0x02, 0x5a, 0x02, 0x57, 0x02, + 0x15, 0x02, 0x16, 0x02, 0xcd, 0x01, 0xcc, 0x01, 0x82, 0x01, 0x80, 0x01, + 0x36, 0x01, 0x36, 0x01, 0xe7, 0x00, 0xe5, 0x00, 0x9b, 0x00, 0x9b, 0x00, + 0x4e, 0x00, 0x4f, 0x00, 0x06, 0x00, 0x05, 0x00, 0xc0, 0xff, 0xc2, 0xff, + 0x80, 0xff, 0x7f, 0xff, 0x46, 0xff, 0x44, 0xff, 0x11, 0xff, 0x11, 0xff, + 0xe5, 0xfe, 0xe3, 0xfe, 0xbd, 0xfe, 0xbc, 0xfe, 0x9f, 0xfe, 0x9f, 0xfe, + 0x8b, 0xfe, 0x88, 0xfe, 0x79, 0xfe, 0x7a, 0xfe, 0x77, 0xfe, 0x74, 0xfe, + 0x74, 0xfe, 0x73, 0xfe, 0x7e, 0xfe, 0x7d, 0xfe, 0x8d, 0xfe, 0x8b, 0xfe, + 0xa1, 0xfe, 0xa0, 0xfe, 0xbc, 0xfe, 0xbb, 0xfe, 0xda, 0xfe, 0xd7, 0xfe, + 0xfb, 0xfe, 0xfa, 0xfe, 0x1f, 0xff, 0x1d, 0xff, 0x3f, 0xff, 0x40, 0xff, + 0x65, 0xff, 0x62, 0xff, 0x82, 0xff, 0x81, 0xff, 0xa1, 0xff, 0x9f, 0xff, + 0xb8, 0xff, 0xb7, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xd9, 0xff, 0xd8, 0xff, + 0xde, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xce, 0xff, 0xcb, 0xff, + 0xb8, 0xff, 0xb8, 0xff, 0x9b, 0xff, 0x98, 0xff, 0x70, 0xff, 0x71, 0xff, + 0x42, 0xff, 0x3f, 0xff, 0x04, 0xff, 0x04, 0xff, 0xc4, 0xfe, 0xc0, 0xfe, + 0x75, 0xfe, 0x76, 0xfe, 0x24, 0xfe, 0x21, 0xfe, 0xca, 0xfd, 0xc9, 0xfd, + 0x6b, 0xfd, 0x6b, 0xfd, 0x0b, 0xfd, 0x09, 0xfd, 0xa4, 0xfc, 0xa3, 0xfc, + 0x40, 0xfc, 0x3d, 0xfc, 0xd9, 0xfb, 0xd7, 0xfb, 0x74, 0xfb, 0x73, 0xfb, + 0x13, 0xfb, 0x13, 0xfb, 0xb4, 0xfa, 0xb2, 0xfa, 0x5d, 0xfa, 0x5e, 0xfa, + 0x0b, 0xfa, 0x09, 0xfa, 0xc3, 0xf9, 0xc3, 0xf9, 0x85, 0xf9, 0x84, 0xf9, + 0x4f, 0xf9, 0x4d, 0xf9, 0x24, 0xf9, 0x25, 0xf9, 0x07, 0xf9, 0x03, 0xf9, + 0xf0, 0xf8, 0xf3, 0xf8, 0xee, 0xf8, 0xea, 0xf8, 0xf0, 0xf8, 0xef, 0xf8, + 0x01, 0xf9, 0x00, 0xf9, 0x1f, 0xf9, 0x1e, 0xf9, 0x48, 0xf9, 0x46, 0xf9, + 0x7c, 0xf9, 0x7a, 0xf9, 0xb7, 0xf9, 0xb6, 0xf9, 0xff, 0xf9, 0xfd, 0xf9, + 0x4b, 0xfa, 0x4b, 0xfa, 0xa2, 0xfa, 0xa1, 0xfa, 0xfb, 0xfa, 0xfa, 0xfa, + 0x5a, 0xfb, 0x58, 0xfb, 0xbc, 0xfb, 0xba, 0xfb, 0x1c, 0xfc, 0x1c, 0xfc, + 0x7f, 0xfc, 0x7d, 0xfc, 0xde, 0xfc, 0xdb, 0xfc, 0x3d, 0xfd, 0x3d, 0xfd, + 0x95, 0xfd, 0x94, 0xfd, 0xea, 0xfd, 0xe9, 0xfd, 0x38, 0xfe, 0x38, 0xfe, + 0x7f, 0xfe, 0x7e, 0xfe, 0xbd, 0xfe, 0xc0, 0xfe, 0xf8, 0xfe, 0xf5, 0xfe, + 0x25, 0xff, 0x26, 0xff, 0x4d, 0xff, 0x4a, 0xff, 0x6a, 0xff, 0x6a, 0xff, + 0x80, 0xff, 0x7f, 0xff, 0x90, 0xff, 0x8f, 0xff, 0x96, 0xff, 0x94, 0xff, + 0x96, 0xff, 0x94, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x86, 0xff, 0x84, 0xff, + 0x75, 0xff, 0x74, 0xff, 0x65, 0xff, 0x63, 0xff, 0x50, 0xff, 0x50, 0xff, + 0x3c, 0xff, 0x3a, 0xff, 0x27, 0xff, 0x27, 0xff, 0x15, 0xff, 0x14, 0xff, + 0x05, 0xff, 0x04, 0xff, 0xf8, 0xfe, 0xf6, 0xfe, 0xf3, 0xfe, 0xf2, 0xfe, + 0xf1, 0xfe, 0xef, 0xfe, 0xf6, 0xfe, 0xf5, 0xfe, 0x04, 0xff, 0x04, 0xff, + 0x17, 0xff, 0x16, 0xff, 0x37, 0xff, 0x35, 0xff, 0x58, 0xff, 0x57, 0xff, + 0x86, 0xff, 0x86, 0xff, 0xba, 0xff, 0xb9, 0xff, 0xf8, 0xff, 0xf6, 0xff, + 0x3b, 0x00, 0x3a, 0x00, 0x83, 0x00, 0x82, 0x00, 0xd3, 0x00, 0xd1, 0x00, + 0x25, 0x01, 0x24, 0x01, 0x7d, 0x01, 0x7a, 0x01, 0xd3, 0x01, 0xd3, 0x01, + 0x30, 0x02, 0x2e, 0x02, 0x88, 0x02, 0x87, 0x02, 0xe1, 0x02, 0xdf, 0x02, + 0x37, 0x03, 0x36, 0x03, 0x87, 0x03, 0x86, 0x03, 0xd8, 0x03, 0xd6, 0x03, + 0x1c, 0x04, 0x1c, 0x04, 0x60, 0x04, 0x5d, 0x04, 0x96, 0x04, 0x96, 0x04, + 0xc9, 0x04, 0xc8, 0x04, 0xf1, 0x04, 0xf0, 0x04, 0x0e, 0x05, 0x0d, 0x05, + 0x24, 0x05, 0x22, 0x05, 0x2d, 0x05, 0x2d, 0x05, 0x2e, 0x05, 0x2e, 0x05, + 0x27, 0x05, 0x25, 0x05, 0x12, 0x05, 0x12, 0x05, 0xf8, 0x04, 0xf7, 0x04, + 0xd6, 0x04, 0xd2, 0x04, 0xa8, 0x04, 0xaa, 0x04, 0x79, 0x04, 0x77, 0x04, + 0x44, 0x04, 0x42, 0x04, 0x08, 0x04, 0x07, 0x04, 0xcc, 0x03, 0xc9, 0x03, + 0x8b, 0x03, 0x8c, 0x03, 0x4d, 0x03, 0x4a, 0x03, 0x0c, 0x03, 0x0d, 0x03, + 0xd4, 0x02, 0xcf, 0x02, 0x94, 0x02, 0x95, 0x02, 0x63, 0x02, 0x61, 0x02, + 0x31, 0x02, 0x2f, 0x02, 0x07, 0x02, 0x06, 0x02, 0xe6, 0x01, 0xe3, 0x01, + 0xc7, 0x01, 0xc7, 0x01, 0xb6, 0x01, 0xb4, 0x01, 0xa9, 0x01, 0xa8, 0x01, + 0xa5, 0x01, 0xa4, 0x01, 0xab, 0x01, 0xaa, 0x01, 0xb8, 0x01, 0xb6, 0x01, + 0xcc, 0x01, 0xcc, 0x01, 0xea, 0x01, 0xe7, 0x01, 0x0a, 0x02, 0x09, 0x02, + 0x31, 0x02, 0x31, 0x02, 0x61, 0x02, 0x5f, 0x02, 0x8d, 0x02, 0x8d, 0x02, + 0xc2, 0x02, 0xc0, 0x02, 0xf4, 0x02, 0xf3, 0x02, 0x27, 0x03, 0x28, 0x03, + 0x5b, 0x03, 0x59, 0x03, 0x86, 0x03, 0x87, 0x03, 0xb7, 0x03, 0xb5, 0x03, + 0xdb, 0x03, 0xda, 0x03, 0xfd, 0x03, 0xfd, 0x03, 0x19, 0x04, 0x16, 0x04, + 0x2a, 0x04, 0x2a, 0x04, 0x39, 0x04, 0x35, 0x04, 0x37, 0x04, 0x38, 0x04, + 0x33, 0x04, 0x31, 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x05, 0x04, 0x04, 0x04, + 0xe3, 0x03, 0xe3, 0x03, 0xb3, 0x03, 0xb4, 0x03, 0x83, 0x03, 0x81, 0x03, + 0x43, 0x03, 0x42, 0x03, 0x00, 0x03, 0xff, 0x02, 0xb5, 0x02, 0xb4, 0x02, + 0x68, 0x02, 0x68, 0x02, 0x15, 0x02, 0x13, 0x02, 0xbf, 0x01, 0xbe, 0x01, + 0x67, 0x01, 0x66, 0x01, 0x0f, 0x01, 0x0e, 0x01, 0xba, 0x00, 0xb8, 0x00, + 0x62, 0x00, 0x62, 0x00, 0x15, 0x00, 0x14, 0x00, 0xc9, 0xff, 0xc6, 0xff, + 0x82, 0xff, 0x80, 0xff, 0x41, 0xff, 0x41, 0xff, 0x09, 0xff, 0x07, 0xff, + 0xd9, 0xfe, 0xd7, 0xfe, 0xaf, 0xfe, 0xae, 0xfe, 0x91, 0xfe, 0x91, 0xfe, + 0x78, 0xfe, 0x77, 0xfe, 0x6b, 0xfe, 0x68, 0xfe, 0x65, 0xfe, 0x64, 0xfe, + 0x67, 0xfe, 0x65, 0xfe, 0x72, 0xfe, 0x70, 0xfe, 0x82, 0xfe, 0x80, 0xfe, + 0x9a, 0xfe, 0x99, 0xfe, 0xb6, 0xfe, 0xb5, 0xfe, 0xda, 0xfe, 0xd8, 0xfe, + 0xff, 0xfe, 0xfe, 0xfe, 0x27, 0xff, 0x25, 0xff, 0x4e, 0xff, 0x4e, 0xff, + 0x75, 0xff, 0x76, 0xff, 0xa0, 0xff, 0x9d, 0xff, 0xc0, 0xff, 0xbf, 0xff, + 0xe3, 0xff, 0xe1, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0x0f, 0x00, 0x0f, 0x00, + 0x1e, 0x00, 0x1c, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x12, 0x00, 0x11, 0x00, 0xfc, 0xff, 0xfb, 0xff, 0xdd, 0xff, 0xdd, 0xff, + 0xb5, 0xff, 0xb4, 0xff, 0x80, 0xff, 0x80, 0xff, 0x47, 0xff, 0x44, 0xff, + 0x01, 0xff, 0x01, 0xff, 0xb5, 0xfe, 0xb4, 0xfe, 0x64, 0xfe, 0x63, 0xfe, + 0x0b, 0xfe, 0x09, 0xfe, 0xae, 0xfd, 0xab, 0xfd, 0x4e, 0xfd, 0x4c, 0xfd, + 0xea, 0xfc, 0xe9, 0xfc, 0x87, 0xfc, 0x85, 0xfc, 0x23, 0xfc, 0x22, 0xfc, + 0xc2, 0xfb, 0xc0, 0xfb, 0x63, 0xfb, 0x63, 0xfb, 0x09, 0xfb, 0x07, 0xfb, + 0xb6, 0xfa, 0xb4, 0xfa, 0x66, 0xfa, 0x67, 0xfa, 0x21, 0xfa, 0x1f, 0xfa, + 0xe4, 0xf9, 0xe4, 0xf9, 0xb1, 0xf9, 0xae, 0xf9, 0x87, 0xf9, 0x87, 0xf9, + 0x66, 0xf9, 0x65, 0xf9, 0x54, 0xf9, 0x53, 0xf9, 0x4a, 0xf9, 0x49, 0xf9, + 0x4d, 0xf9, 0x4b, 0xf9, 0x58, 0xf9, 0x56, 0xf9, 0x70, 0xf9, 0x6f, 0xf9, + 0x90, 0xf9, 0x8f, 0xf9, 0xbc, 0xf9, 0xb9, 0xf9, 0xea, 0xf9, 0xea, 0xf9, + 0x29, 0xfa, 0x26, 0xfa, 0x64, 0xfa, 0x64, 0xfa, 0xac, 0xfa, 0xaa, 0xfa, + 0xf3, 0xfa, 0xef, 0xfa, 0x3d, 0xfb, 0x3c, 0xfb, 0x8b, 0xfb, 0x87, 0xfb, + 0xd6, 0xfb, 0xd6, 0xfb, 0x23, 0xfc, 0x1f, 0xfc, 0x6b, 0xfc, 0x6c, 0xfc, + 0xb3, 0xfc, 0xb1, 0xfc, 0xf6, 0xfc, 0xf7, 0xfc, 0x35, 0xfd, 0x33, 0xfd, + 0x6f, 0xfd, 0x6e, 0xfd, 0xa0, 0xfd, 0x9f, 0xfd, 0xce, 0xfd, 0xcc, 0xfd, + 0xf3, 0xfd, 0xf3, 0xfd, 0x12, 0xfe, 0x11, 0xfe, 0x2c, 0xfe, 0x29, 0xfe, + 0x3f, 0xfe, 0x40, 0xfe, 0x4b, 0xfe, 0x49, 0xfe, 0x54, 0xfe, 0x54, 0xfe, + 0x57, 0xfe, 0x54, 0xfe, 0x56, 0xfe, 0x57, 0xfe, 0x54, 0xfe, 0x51, 0xfe, + 0x4e, 0xfe, 0x4e, 0xfe, 0x48, 0xfe, 0x46, 0xfe, 0x40, 0xfe, 0x3e, 0xfe, + 0x3a, 0xfe, 0x3a, 0xfe, 0x37, 0xfe, 0x35, 0xfe, 0x34, 0xfe, 0x34, 0xfe, + 0x38, 0xfe, 0x37, 0xfe, 0x3f, 0xfe, 0x3d, 0xfe, 0x4c, 0xfe, 0x4e, 0xfe, + 0x60, 0xfe, 0x5f, 0xfe, 0x7d, 0xfe, 0x7b, 0xfe, 0x9d, 0xfe, 0x9b, 0xfe, + 0xc9, 0xfe, 0xc8, 0xfe, 0xfb, 0xfe, 0xfa, 0xfe, 0x35, 0xff, 0x32, 0xff, + 0x77, 0xff, 0x76, 0xff, 0xbf, 0xff, 0xbd, 0xff, 0x0e, 0x00, 0x0e, 0x00, + 0x63, 0x00, 0x60, 0x00, 0xbb, 0x00, 0xba, 0x00, 0x19, 0x01, 0x18, 0x01, + 0x79, 0x01, 0x78, 0x01, 0xda, 0x01, 0xda, 0x01, 0x3f, 0x02, 0x3d, 0x02, + 0xa0, 0x02, 0x9e, 0x02, 0x00, 0x03, 0xff, 0x02, 0x59, 0x03, 0x59, 0x03, + 0xb5, 0x03, 0xb3, 0x03, 0x03, 0x04, 0x02, 0x04, 0x50, 0x04, 0x51, 0x04, + 0x96, 0x04, 0x93, 0x04, 0xd0, 0x04, 0xd0, 0x04, 0x02, 0x05, 0x01, 0x05, + 0x2a, 0x05, 0x2a, 0x05, 0x4a, 0x05, 0x48, 0x05, 0x5b, 0x05, 0x58, 0x05, + 0x63, 0x05, 0x62, 0x05, 0x63, 0x05, 0x60, 0x05, 0x52, 0x05, 0x52, 0x05, + 0x3d, 0x05, 0x3a, 0x05, 0x19, 0x05, 0x18, 0x05, 0xef, 0x04, 0xee, 0x04, + 0xbe, 0x04, 0xbb, 0x04, 0x80, 0x04, 0x80, 0x04, 0x43, 0x04, 0x3f, 0x04, + 0xf9, 0x03, 0xfa, 0x03, 0xb1, 0x03, 0xaf, 0x03, 0x66, 0x03, 0x65, 0x03, + 0x17, 0x03, 0x16, 0x03, 0xcc, 0x02, 0xcc, 0x02, 0x82, 0x02, 0x7f, 0x02, + 0x38, 0x02, 0x38, 0x02, 0xf7, 0x01, 0xf4, 0x01, 0xb6, 0x01, 0xb7, 0x01, + 0x80, 0x01, 0x7f, 0x01, 0x4e, 0x01, 0x4f, 0x01, 0x28, 0x01, 0x27, 0x01, + 0x09, 0x01, 0x08, 0x01, 0xf4, 0x00, 0xf3, 0x00, 0xe7, 0x00, 0xe7, 0x00, + 0xe5, 0x00, 0xe5, 0x00, 0xee, 0x00, 0xed, 0x00, 0xfe, 0x00, 0xfe, 0x00, + 0x1b, 0x01, 0x1a, 0x01, 0x3a, 0x01, 0x3a, 0x01, 0x65, 0x01, 0x66, 0x01, + 0x99, 0x01, 0x98, 0x01, 0xcc, 0x01, 0xcb, 0x01, 0x0b, 0x02, 0x0b, 0x02, + 0x48, 0x02, 0x46, 0x02, 0x88, 0x02, 0x8b, 0x02, 0xcd, 0x02, 0xcc, 0x02, + 0x0d, 0x03, 0x0d, 0x03, 0x4f, 0x03, 0x50, 0x03, 0x8a, 0x03, 0x8a, 0x03, + 0xc4, 0x03, 0xc2, 0x03, 0xf7, 0x03, 0xf6, 0x03, 0x23, 0x04, 0x23, 0x04, + 0x49, 0x04, 0x49, 0x04, 0x67, 0x04, 0x66, 0x04, 0x7b, 0x04, 0x7b, 0x04, + 0x89, 0x04, 0x88, 0x04, 0x89, 0x04, 0x89, 0x04, 0x83, 0x04, 0x82, 0x04, + 0x71, 0x04, 0x70, 0x04, 0x58, 0x04, 0x57, 0x04, 0x33, 0x04, 0x32, 0x04, + 0x09, 0x04, 0x07, 0x04, 0xd3, 0x03, 0xd3, 0x03, 0x9a, 0x03, 0x98, 0x03, + 0x57, 0x03, 0x57, 0x03, 0x13, 0x03, 0x11, 0x03, 0xca, 0x02, 0xc8, 0x02, + 0x7b, 0x02, 0x7c, 0x02, 0x2e, 0x02, 0x2d, 0x02, 0xe0, 0x01, 0xdf, 0x01, + 0x94, 0x01, 0x93, 0x01, 0x4a, 0x01, 0x48, 0x01, 0x01, 0x01, 0x00, 0x01, + 0xbe, 0x00, 0xbc, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x46, 0x00, 0x42, 0x00, + 0x13, 0x00, 0x14, 0x00, 0xe7, 0xff, 0xe3, 0xff, 0xc3, 0xff, 0xc2, 0xff, + 0xa3, 0xff, 0xa2, 0xff, 0x8e, 0xff, 0x8d, 0xff, 0x7f, 0xff, 0x7c, 0xff, + 0x76, 0xff, 0x76, 0xff, 0x78, 0xff, 0x74, 0xff, 0x79, 0xff, 0x79, 0xff, + 0x86, 0xff, 0x83, 0xff, 0x93, 0xff, 0x92, 0xff, 0xa6, 0xff, 0xa6, 0xff, + 0xbd, 0xff, 0xbb, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xeb, 0xff, 0xea, 0xff, + 0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x17, 0x00, 0x2c, 0x00, 0x2b, 0x00, + 0x3b, 0x00, 0x38, 0x00, 0x47, 0x00, 0x46, 0x00, 0x48, 0x00, 0x48, 0x00, + 0x48, 0x00, 0x47, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x15, 0x00, 0x14, 0x00, 0xf1, 0xff, 0xef, 0xff, 0xc7, 0xff, 0xc5, 0xff, + 0x92, 0xff, 0x91, 0xff, 0x58, 0xff, 0x57, 0xff, 0x14, 0xff, 0x13, 0xff, + 0xc9, 0xfe, 0xc8, 0xfe, 0x78, 0xfe, 0x77, 0xfe, 0x20, 0xfe, 0x1e, 0xfe, + 0xc5, 0xfd, 0xc4, 0xfd, 0x64, 0xfd, 0x64, 0xfd, 0x03, 0xfd, 0x02, 0xfd, + 0xa1, 0xfc, 0xa1, 0xfc, 0x3f, 0xfc, 0x3c, 0xfc, 0xdd, 0xfb, 0xde, 0xfb, + 0x7e, 0xfb, 0x7c, 0xfb, 0x24, 0xfb, 0x24, 0xfb, 0xce, 0xfa, 0xcc, 0xfa, + 0x7d, 0xfa, 0x7c, 0xfa, 0x37, 0xfa, 0x34, 0xfa, 0xf3, 0xf9, 0xf3, 0xf9, + 0xbf, 0xf9, 0xbd, 0xf9, 0x8e, 0xf9, 0x8f, 0xf9, 0x6d, 0xf9, 0x6b, 0xf9, + 0x54, 0xf9, 0x55, 0xf9, 0x46, 0xf9, 0x44, 0xf9, 0x44, 0xf9, 0x44, 0xf9, + 0x4c, 0xf9, 0x4a, 0xf9, 0x61, 0xf9, 0x60, 0xf9, 0x7c, 0xf9, 0x7c, 0xf9, + 0xa4, 0xf9, 0xa1, 0xf9, 0xd3, 0xf9, 0xd2, 0xf9, 0x09, 0xfa, 0x07, 0xfa, + 0x47, 0xfa, 0x47, 0xfa, 0x8c, 0xfa, 0x8a, 0xfa, 0xd3, 0xfa, 0xd1, 0xfa, + 0x20, 0xfb, 0x1f, 0xfb, 0x6c, 0xfb, 0x6b, 0xfb, 0xbe, 0xfb, 0xbb, 0xfb, + 0x08, 0xfc, 0x08, 0xfc, 0x57, 0xfc, 0x55, 0xfc, 0xa1, 0xfc, 0x9e, 0xfc, + 0xe4, 0xfc, 0xe3, 0xfc, 0x28, 0xfd, 0x26, 0xfd, 0x61, 0xfd, 0x5f, 0xfd, + 0x98, 0xfd, 0x97, 0xfd, 0xc6, 0xfd, 0xc3, 0xfd, 0xec, 0xfd, 0xec, 0xfd, + 0x0d, 0xfe, 0x0b, 0xfe, 0x24, 0xfe, 0x23, 0xfe, 0x36, 0xfe, 0x35, 0xfe, + 0x41, 0xfe, 0x3e, 0xfe, 0x42, 0xfe, 0x42, 0xfe, 0x40, 0xfe, 0x3e, 0xfe, + 0x37, 0xfe, 0x37, 0xfe, 0x2d, 0xfe, 0x2b, 0xfe, 0x1b, 0xfe, 0x1b, 0xfe, + 0x08, 0xfe, 0x07, 0xfe, 0xf3, 0xfd, 0xf3, 0xfd, 0xe2, 0xfd, 0xe0, 0xfd, + 0xcb, 0xfd, 0xca, 0xfd, 0xba, 0xfd, 0xb9, 0xfd, 0xac, 0xfd, 0xab, 0xfd, + 0xa1, 0xfd, 0xa0, 0xfd, 0x9b, 0xfd, 0x99, 0xfd, 0x9b, 0xfd, 0x9b, 0xfd, + 0x9f, 0xfd, 0x9e, 0xfd, 0xaf, 0xfd, 0xb0, 0xfd, 0xc4, 0xfd, 0xc3, 0xfd, + 0xe4, 0xfd, 0xe3, 0xfd, 0x0c, 0xfe, 0x0c, 0xfe, 0x3a, 0xfe, 0x38, 0xfe, + 0x75, 0xfe, 0x75, 0xfe, 0xb7, 0xfe, 0xb7, 0xfe, 0x01, 0xff, 0xfe, 0xfe, + 0x52, 0xff, 0x52, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0x05, 0x00, 0x05, 0x00, + 0x6a, 0x00, 0x68, 0x00, 0xcd, 0x00, 0xcd, 0x00, 0x38, 0x01, 0x37, 0x01, + 0x9f, 0x01, 0x9e, 0x01, 0x09, 0x02, 0x08, 0x02, 0x70, 0x02, 0x6f, 0x02, + 0xd3, 0x02, 0xd1, 0x02, 0x34, 0x03, 0x33, 0x03, 0x8b, 0x03, 0x8c, 0x03, + 0xe2, 0x03, 0xe0, 0x03, 0x2d, 0x04, 0x2e, 0x04, 0x71, 0x04, 0x6f, 0x04, + 0xae, 0x04, 0xae, 0x04, 0xde, 0x04, 0xdd, 0x04, 0x04, 0x05, 0x05, 0x05, + 0x23, 0x05, 0x22, 0x05, 0x30, 0x05, 0x2e, 0x05, 0x39, 0x05, 0x39, 0x05, + 0x34, 0x05, 0x33, 0x05, 0x24, 0x05, 0x24, 0x05, 0x0c, 0x05, 0x0c, 0x05, + 0xeb, 0x04, 0xe9, 0x04, 0xbf, 0x04, 0xbf, 0x04, 0x8d, 0x04, 0x8d, 0x04, + 0x54, 0x04, 0x53, 0x04, 0x14, 0x04, 0x16, 0x04, 0xd4, 0x03, 0xd1, 0x03, + 0x8c, 0x03, 0x8d, 0x03, 0x47, 0x03, 0x42, 0x03, 0xff, 0x02, 0xff, 0x02, + 0xb6, 0x02, 0xb6, 0x02, 0x76, 0x02, 0x74, 0x02, 0x33, 0x02, 0x33, 0x02, + 0xf8, 0x01, 0xf8, 0x01, 0xc3, 0x01, 0xc2, 0x01, 0x91, 0x01, 0x91, 0x01, + 0x6c, 0x01, 0x69, 0x01, 0x4a, 0x01, 0x4b, 0x01, 0x34, 0x01, 0x32, 0x01, + 0x25, 0x01, 0x24, 0x01, 0x1e, 0x01, 0x1c, 0x01, 0x22, 0x01, 0x21, 0x01, + 0x2a, 0x01, 0x2a, 0x01, 0x41, 0x01, 0x3e, 0x01, 0x59, 0x01, 0x58, 0x01, + 0x7b, 0x01, 0x7b, 0x01, 0xa2, 0x01, 0xa1, 0x01, 0xcf, 0x01, 0xce, 0x01, + 0x02, 0x02, 0x01, 0x02, 0x36, 0x02, 0x34, 0x02, 0x6c, 0x02, 0x6c, 0x02, + 0xa5, 0x02, 0xa3, 0x02, 0xdc, 0x02, 0xdb, 0x02, 0x12, 0x03, 0x11, 0x03, + 0x45, 0x03, 0x44, 0x03, 0x75, 0x03, 0x72, 0x03, 0x9f, 0x03, 0x9f, 0x03, + 0xc5, 0x03, 0xc3, 0x03, 0xe3, 0x03, 0xe2, 0x03, 0xfa, 0x03, 0xf9, 0x03, + 0x0a, 0x04, 0x08, 0x04, 0x10, 0x04, 0x11, 0x04, 0x11, 0x04, 0x0f, 0x04, + 0x08, 0x04, 0x07, 0x04, 0xf6, 0x03, 0xf4, 0x03, 0xdd, 0x03, 0xdc, 0x03, + 0xbb, 0x03, 0xbb, 0x03, 0x95, 0x03, 0x94, 0x03, 0x66, 0x03, 0x66, 0x03, + 0x33, 0x03, 0x32, 0x03, 0xfc, 0x02, 0xfa, 0x02, 0xbe, 0x02, 0xbf, 0x02, + 0x84, 0x02, 0x80, 0x02, 0x42, 0x02, 0x44, 0x02, 0x06, 0x02, 0x03, 0x02, + 0xc4, 0x01, 0xc5, 0x01, 0x8a, 0x01, 0x89, 0x01, 0x4f, 0x01, 0x4f, 0x01, + 0x19, 0x01, 0x19, 0x01, 0xe9, 0x00, 0xe8, 0x00, 0xbb, 0x00, 0xbb, 0x00, + 0x97, 0x00, 0x95, 0x00, 0x75, 0x00, 0x76, 0x00, 0x5f, 0x00, 0x5c, 0x00, + 0x4c, 0x00, 0x4c, 0x00, 0x41, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3f, 0x00, + 0x41, 0x00, 0x42, 0x00, 0x4b, 0x00, 0x4a, 0x00, 0x5a, 0x00, 0x59, 0x00, + 0x6b, 0x00, 0x6b, 0x00, 0x83, 0x00, 0x83, 0x00, 0x9e, 0x00, 0x9d, 0x00, + 0xb7, 0x00, 0xb8, 0x00, 0xdb, 0x00, 0xd8, 0x00, 0xf2, 0x00, 0xf3, 0x00, + 0x13, 0x01, 0x0f, 0x01, 0x29, 0x01, 0x29, 0x01, 0x3f, 0x01, 0x3e, 0x01, + 0x52, 0x01, 0x51, 0x01, 0x5a, 0x01, 0x5a, 0x01, 0x60, 0x01, 0x5f, 0x01, + 0x5b, 0x01, 0x5a, 0x01, 0x50, 0x01, 0x4e, 0x01, 0x3a, 0x01, 0x3a, 0x01, + 0x1d, 0x01, 0x1b, 0x01, 0xf3, 0x00, 0xf4, 0x00, 0xc2, 0x00, 0xc0, 0x00, + 0x86, 0x00, 0x86, 0x00, 0x41, 0x00, 0x41, 0x00, 0xf2, 0xff, 0xf2, 0xff, + 0x9b, 0xff, 0x9a, 0xff, 0x3c, 0xff, 0x3c, 0xff, 0xd5, 0xfe, 0xd5, 0xfe, + 0x6c, 0xfe, 0x69, 0xfe, 0xfa, 0xfd, 0xfa, 0xfd, 0x88, 0xfd, 0x86, 0xfd, + 0x10, 0xfd, 0x0f, 0xfd, 0x9a, 0xfc, 0x9a, 0xfc, 0x25, 0xfc, 0x24, 0xfc, + 0xb2, 0xfb, 0xb2, 0xfb, 0x42, 0xfb, 0x40, 0xfb, 0xd7, 0xfa, 0xd7, 0xfa, + 0x73, 0xfa, 0x72, 0xfa, 0x16, 0xfa, 0x16, 0xfa, 0xc2, 0xf9, 0xc1, 0xf9, + 0x76, 0xf9, 0x76, 0xf9, 0x37, 0xf9, 0x35, 0xf9, 0x01, 0xf9, 0x00, 0xf9, + 0xd8, 0xf8, 0xd6, 0xf8, 0xbb, 0xf8, 0xbb, 0xf8, 0xaa, 0xf8, 0xa8, 0xf8, + 0xa7, 0xf8, 0xa6, 0xf8, 0xae, 0xf8, 0xad, 0xf8, 0xc0, 0xf8, 0xc1, 0xf8, + 0xe2, 0xf8, 0xdf, 0xf8, 0x09, 0xf9, 0x08, 0xf9, 0x3c, 0xf9, 0x3b, 0xf9, + 0x78, 0xf9, 0x78, 0xf9, 0xbb, 0xf9, 0xbb, 0xf9, 0x05, 0xfa, 0x03, 0xfa, + 0x54, 0xfa, 0x54, 0xfa, 0xa6, 0xfa, 0xa6, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, + 0x53, 0xfb, 0x52, 0xfb, 0xa8, 0xfb, 0xa8, 0xfb, 0xfd, 0xfb, 0xfd, 0xfb, + 0x50, 0xfc, 0x4d, 0xfc, 0x9c, 0xfc, 0x9d, 0xfc, 0xe8, 0xfc, 0xe6, 0xfc, + 0x2a, 0xfd, 0x2b, 0xfd, 0x68, 0xfd, 0x66, 0xfd, 0x9d, 0xfd, 0x9d, 0xfd, + 0xcd, 0xfd, 0xce, 0xfd, 0xf5, 0xfd, 0xf3, 0xfd, 0x14, 0xfe, 0x15, 0xfe, + 0x2e, 0xfe, 0x2c, 0xfe, 0x3e, 0xfe, 0x3d, 0xfe, 0x4a, 0xfe, 0x49, 0xfe, + 0x49, 0xfe, 0x4a, 0xfe, 0x4b, 0xfe, 0x4a, 0xfe, 0x41, 0xfe, 0x42, 0xfe, + 0x38, 0xfe, 0x37, 0xfe, 0x2a, 0xfe, 0x2b, 0xfe, 0x1b, 0xfe, 0x1b, 0xfe, + 0x09, 0xfe, 0x0b, 0xfe, 0xfd, 0xfd, 0xfb, 0xfd, 0xec, 0xfd, 0xed, 0xfd, + 0xe3, 0xfd, 0xe3, 0xfd, 0xda, 0xfd, 0xdc, 0xfd, 0xda, 0xfd, 0xd9, 0xfd, + 0xdc, 0xfd, 0xdd, 0xfd, 0xe5, 0xfd, 0xe5, 0xfd, 0xf7, 0xfd, 0xf7, 0xfd, + 0x0f, 0xfe, 0x0e, 0xfe, 0x2e, 0xfe, 0x30, 0xfe, 0x56, 0xfe, 0x53, 0xfe, + 0x84, 0xfe, 0x85, 0xfe, 0xbc, 0xfe, 0xbb, 0xfe, 0xfa, 0xfe, 0xf8, 0xfe, + 0x42, 0xff, 0x40, 0xff, 0x8b, 0xff, 0x8a, 0xff, 0xde, 0xff, 0xdd, 0xff, + 0x32, 0x00, 0x33, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0xe9, 0x00, 0xe8, 0x00, + 0x47, 0x01, 0x46, 0x01, 0xa3, 0x01, 0xa1, 0x01, 0x01, 0x02, 0x00, 0x02, + 0x59, 0x02, 0x58, 0x02, 0xaf, 0x02, 0xaf, 0x02, 0x00, 0x03, 0x01, 0x03, + 0x4c, 0x03, 0x4a, 0x03, 0x91, 0x03, 0x91, 0x03, 0xcd, 0x03, 0xcc, 0x03, + 0x03, 0x04, 0x01, 0x04, 0x2f, 0x04, 0x2f, 0x04, 0x50, 0x04, 0x4e, 0x04, + 0x69, 0x04, 0x68, 0x04, 0x77, 0x04, 0x76, 0x04, 0x7b, 0x04, 0x79, 0x04, + 0x74, 0x04, 0x73, 0x04, 0x63, 0x04, 0x62, 0x04, 0x4b, 0x04, 0x49, 0x04, + 0x27, 0x04, 0x29, 0x04, 0x01, 0x04, 0xfe, 0x03, 0xcf, 0x03, 0xcf, 0x03, + 0x98, 0x03, 0x99, 0x03, 0x60, 0x03, 0x5e, 0x03, 0x21, 0x03, 0x21, 0x03, + 0xe1, 0x02, 0xe1, 0x02, 0xa0, 0x02, 0xa0, 0x02, 0x61, 0x02, 0x60, 0x02, + 0x22, 0x02, 0x22, 0x02, 0xe8, 0x01, 0xe5, 0x01, 0xb0, 0x01, 0xb0, 0x01, + 0x80, 0x01, 0x7d, 0x01, 0x53, 0x01, 0x52, 0x01, 0x31, 0x01, 0x30, 0x01, + 0x15, 0x01, 0x15, 0x01, 0x03, 0x01, 0x02, 0x01, 0xf8, 0x00, 0xf7, 0x00, + 0xfa, 0x00, 0xf9, 0x00, 0x01, 0x01, 0x00, 0x01, 0x14, 0x01, 0x13, 0x01, + 0x2f, 0x01, 0x2c, 0x01, 0x51, 0x01, 0x52, 0x01, 0x7e, 0x01, 0x7c, 0x01, + 0xad, 0x01, 0xac, 0x01, 0xe7, 0x01, 0xe5, 0x01, 0x20, 0x02, 0x21, 0x02, + 0x64, 0x02, 0x62, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xe9, 0x02, 0xe7, 0x02, + 0x2f, 0x03, 0x2d, 0x03, 0x72, 0x03, 0x70, 0x03, 0xb2, 0x03, 0xb1, 0x03, + 0xee, 0x03, 0xec, 0x03, 0x25, 0x04, 0x25, 0x04, 0x57, 0x04, 0x55, 0x04, + 0x7f, 0x04, 0x80, 0x04, 0xa5, 0x04, 0xa2, 0x04, 0xbd, 0x04, 0xbd, 0x04, + 0xcf, 0x04, 0xcd, 0x04, 0xd4, 0x04, 0xd6, 0x04, 0xd4, 0x04, 0xd3, 0x04, + 0xc6, 0x04, 0xc7, 0x04, 0xb0, 0x04, 0xaf, 0x04, 0x92, 0x04, 0x93, 0x04, + 0x69, 0x04, 0x68, 0x04, 0x38, 0x04, 0x38, 0x04, 0xff, 0x03, 0xfd, 0x03, + 0xc1, 0x03, 0xc2, 0x03, 0x7d, 0x03, 0x7d, 0x03, 0x35, 0x03, 0x34, 0x03, + 0xeb, 0x02, 0xea, 0x02, 0x9e, 0x02, 0x9c, 0x02, 0x51, 0x02, 0x50, 0x02, + 0x04, 0x02, 0x05, 0x02, 0xb9, 0x01, 0xb7, 0x01, 0x73, 0x01, 0x73, 0x01, + 0x2e, 0x01, 0x2e, 0x01, 0xf1, 0x00, 0xf1, 0x00, 0xbb, 0x00, 0xbb, 0x00, + 0x8a, 0x00, 0x89, 0x00, 0x62, 0x00, 0x5f, 0x00, 0x3e, 0x00, 0x41, 0x00, + 0x27, 0x00, 0x25, 0x00, 0x15, 0x00, 0x15, 0x00, 0x0d, 0x00, 0x0f, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0x15, 0x00, 0x16, 0x00, 0x25, 0x00, 0x26, 0x00, + 0x3b, 0x00, 0x3a, 0x00, 0x55, 0x00, 0x56, 0x00, 0x75, 0x00, 0x74, 0x00, + 0x98, 0x00, 0x98, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xe2, 0x00, 0xe1, 0x00, + 0x09, 0x01, 0x07, 0x01, 0x2a, 0x01, 0x2d, 0x01, 0x4e, 0x01, 0x4b, 0x01, + 0x6a, 0x01, 0x6c, 0x01, 0x81, 0x01, 0x7f, 0x01, 0x93, 0x01, 0x94, 0x01, + 0x9c, 0x01, 0x9b, 0x01, 0x9d, 0x01, 0x9d, 0x01, 0x97, 0x01, 0x96, 0x01, + 0x83, 0x01, 0x82, 0x01, 0x69, 0x01, 0x69, 0x01, 0x42, 0x01, 0x3f, 0x01, + 0x11, 0x01, 0x12, 0x01, 0xd6, 0x00, 0xd6, 0x00, 0x91, 0x00, 0x91, 0x00, + 0x43, 0x00, 0x42, 0x00, 0xeb, 0xff, 0xec, 0xff, 0x8c, 0xff, 0x8a, 0xff, + 0x25, 0xff, 0x26, 0xff, 0xb9, 0xfe, 0xb7, 0xfe, 0x49, 0xfe, 0x48, 0xfe, + 0xd4, 0xfd, 0xd3, 0xfd, 0x5d, 0xfd, 0x5d, 0xfd, 0xe7, 0xfc, 0xe5, 0xfc, + 0x72, 0xfc, 0x71, 0xfc, 0xfe, 0xfb, 0xfe, 0xfb, 0x8f, 0xfb, 0x8e, 0xfb, + 0x24, 0xfb, 0x25, 0xfb, 0xc1, 0xfa, 0xbf, 0xfa, 0x64, 0xfa, 0x64, 0xfa, + 0x12, 0xfa, 0x11, 0xfa, 0xc8, 0xf9, 0xc7, 0xf9, 0x8a, 0xf9, 0x89, 0xf9, + 0x54, 0xf9, 0x56, 0xf9, 0x2b, 0xf9, 0x2a, 0xf9, 0x12, 0xf9, 0x12, 0xf9, + 0xff, 0xf8, 0xfd, 0xf8, 0xf8, 0xf8, 0xf9, 0xf8, 0x03, 0xf9, 0x02, 0xf9, + 0x11, 0xf9, 0x11, 0xf9, 0x30, 0xf9, 0x30, 0xf9, 0x53, 0xf9, 0x52, 0xf9, + 0x84, 0xf9, 0x84, 0xf9, 0xb7, 0xf9, 0xb7, 0xf9, 0xf4, 0xf9, 0xf4, 0xf9, + 0x37, 0xfa, 0x37, 0xfa, 0x7a, 0xfa, 0x7b, 0xfa, 0xc5, 0xfa, 0xc4, 0xfa, + 0x0c, 0xfb, 0x0d, 0xfb, 0x58, 0xfb, 0x56, 0xfb, 0x9f, 0xfb, 0x9f, 0xfb, + 0xe6, 0xfb, 0xe5, 0xfb, 0x28, 0xfc, 0x28, 0xfc, 0x66, 0xfc, 0x67, 0xfc, + 0x9f, 0xfc, 0x9c, 0xfc, 0xd3, 0xfc, 0xd3, 0xfc, 0xfd, 0xfc, 0xfc, 0xfc, + 0x23, 0xfd, 0x22, 0xfd, 0x43, 0xfd, 0x42, 0xfd, 0x58, 0xfd, 0x57, 0xfd, + 0x6b, 0xfd, 0x6b, 0xfd, 0x75, 0xfd, 0x73, 0xfd, 0x78, 0xfd, 0x77, 0xfd, + 0x79, 0xfd, 0x78, 0xfd, 0x71, 0xfd, 0x70, 0xfd, 0x68, 0xfd, 0x66, 0xfd, + 0x5c, 0xfd, 0x5b, 0xfd, 0x4e, 0xfd, 0x4b, 0xfd, 0x3f, 0xfd, 0x3e, 0xfd, + 0x2e, 0xfd, 0x2f, 0xfd, 0x22, 0xfd, 0x21, 0xfd, 0x19, 0xfd, 0x17, 0xfd, + 0x10, 0xfd, 0x10, 0xfd, 0x12, 0xfd, 0x10, 0xfd, 0x13, 0xfd, 0x13, 0xfd, + 0x1f, 0xfd, 0x1f, 0xfd, 0x32, 0xfd, 0x31, 0xfd, 0x4a, 0xfd, 0x4b, 0xfd, + 0x6d, 0xfd, 0x6b, 0xfd, 0x98, 0xfd, 0x99, 0xfd, 0xcc, 0xfd, 0xcb, 0xfd, + 0x08, 0xfe, 0x07, 0xfe, 0x4c, 0xfe, 0x4d, 0xfe, 0x98, 0xfe, 0x96, 0xfe, + 0xeb, 0xfe, 0xeb, 0xfe, 0x44, 0xff, 0x42, 0xff, 0xa3, 0xff, 0xa3, 0xff, + 0x06, 0x00, 0x07, 0x00, 0x6e, 0x00, 0x6d, 0x00, 0xd8, 0x00, 0xd7, 0x00, + 0x40, 0x01, 0x40, 0x01, 0xaa, 0x01, 0xaa, 0x01, 0x12, 0x02, 0x12, 0x02, + 0x75, 0x02, 0x74, 0x02, 0xd6, 0x02, 0xd4, 0x02, 0x30, 0x03, 0x2f, 0x03, + 0x80, 0x03, 0x80, 0x03, 0xcd, 0x03, 0xcd, 0x03, 0x0d, 0x04, 0x0d, 0x04, + 0x46, 0x04, 0x44, 0x04, 0x72, 0x04, 0x71, 0x04, 0x92, 0x04, 0x91, 0x04, + 0xaa, 0x04, 0xa9, 0x04, 0xb2, 0x04, 0xb3, 0x04, 0xb5, 0x04, 0xb4, 0x04, + 0xa8, 0x04, 0xa6, 0x04, 0x90, 0x04, 0x92, 0x04, 0x71, 0x04, 0x6f, 0x04, + 0x46, 0x04, 0x45, 0x04, 0x14, 0x04, 0x14, 0x04, 0xda, 0x03, 0xd8, 0x03, + 0x98, 0x03, 0x98, 0x03, 0x53, 0x03, 0x52, 0x03, 0x08, 0x03, 0x06, 0x03, + 0xbc, 0x02, 0xbc, 0x02, 0x6f, 0x02, 0x6e, 0x02, 0x21, 0x02, 0x20, 0x02, + 0xd5, 0x01, 0xd5, 0x01, 0x8e, 0x01, 0x8c, 0x01, 0x4b, 0x01, 0x4a, 0x01, + 0x0d, 0x01, 0x0d, 0x01, 0xd7, 0x00, 0xd5, 0x00, 0xaa, 0x00, 0xab, 0x00, + 0x85, 0x00, 0x83, 0x00, 0x6b, 0x00, 0x6a, 0x00, 0x59, 0x00, 0x56, 0x00, + 0x51, 0x00, 0x52, 0x00, 0x57, 0x00, 0x55, 0x00, 0x65, 0x00, 0x64, 0x00, + 0x7c, 0x00, 0x7c, 0x00, 0x9e, 0x00, 0x9d, 0x00, 0xca, 0x00, 0xc9, 0x00, + 0xfc, 0x00, 0xfd, 0x00, 0x39, 0x01, 0x38, 0x01, 0x79, 0x01, 0x79, 0x01, + 0xc0, 0x01, 0xbf, 0x01, 0x0a, 0x02, 0x0a, 0x02, 0x55, 0x02, 0x54, 0x02, + 0xa4, 0x02, 0xa4, 0x02, 0xf2, 0x02, 0xf3, 0x02, 0x3e, 0x03, 0x3b, 0x03, + 0x86, 0x03, 0x88, 0x03, 0xcd, 0x03, 0xcb, 0x03, 0x0c, 0x04, 0x0c, 0x04, + 0x45, 0x04, 0x43, 0x04, 0x77, 0x04, 0x76, 0x04, 0xa1, 0x04, 0xa0, 0x04, + 0xc1, 0x04, 0xc0, 0x04, 0xd9, 0x04, 0xd7, 0x04, 0xe6, 0x04, 0xe6, 0x04, + 0xe8, 0x04, 0xe9, 0x04, 0xe6, 0x04, 0xe3, 0x04, 0xd3, 0x04, 0xd4, 0x04, + 0xbc, 0x04, 0xba, 0x04, 0x9c, 0x04, 0x9b, 0x04, 0x6f, 0x04, 0x70, 0x04, + 0x44, 0x04, 0x42, 0x04, 0x08, 0x04, 0x09, 0x04, 0xd2, 0x03, 0xcf, 0x03, + 0x90, 0x03, 0x8f, 0x03, 0x4d, 0x03, 0x4f, 0x03, 0x0d, 0x03, 0x0a, 0x03, + 0xc5, 0x02, 0xc7, 0x02, 0x89, 0x02, 0x87, 0x02, 0x43, 0x02, 0x43, 0x02, + 0x0b, 0x02, 0x0c, 0x02, 0xd1, 0x01, 0xce, 0x01, 0x9e, 0x01, 0xa0, 0x01, + 0x72, 0x01, 0x72, 0x01, 0x4b, 0x01, 0x49, 0x01, 0x2d, 0x01, 0x2e, 0x01, + 0x12, 0x01, 0x11, 0x01, 0x04, 0x01, 0x04, 0x01, 0xf7, 0x00, 0xfa, 0x00, + 0xf9, 0x00, 0xf6, 0x00, 0xfb, 0x00, 0xfd, 0x00, 0x07, 0x01, 0x06, 0x01, + 0x17, 0x01, 0x18, 0x01, 0x2e, 0x01, 0x2c, 0x01, 0x44, 0x01, 0x46, 0x01, + 0x63, 0x01, 0x63, 0x01, 0x7f, 0x01, 0x81, 0x01, 0x9e, 0x01, 0x9d, 0x01, + 0xba, 0x01, 0xbb, 0x01, 0xd6, 0x01, 0xd7, 0x01, 0xed, 0x01, 0xee, 0x01, + 0xff, 0x01, 0xff, 0x01, 0x0d, 0x02, 0x0d, 0x02, 0x15, 0x02, 0x16, 0x02, + 0x14, 0x02, 0x15, 0x02, 0x0b, 0x02, 0x0b, 0x02, 0xf8, 0x01, 0xf9, 0x01, + 0xde, 0x01, 0xde, 0x01, 0xb7, 0x01, 0xb7, 0x01, 0x87, 0x01, 0x86, 0x01, + 0x4f, 0x01, 0x4d, 0x01, 0x06, 0x01, 0x07, 0x01, 0xbd, 0x00, 0xbb, 0x00, + 0x61, 0x00, 0x63, 0x00, 0x05, 0x00, 0x04, 0x00, 0x9b, 0xff, 0x9c, 0xff, + 0x2f, 0xff, 0x30, 0xff, 0xbc, 0xfe, 0xbc, 0xfe, 0x46, 0xfe, 0x46, 0xfe, + 0xcd, 0xfd, 0xcc, 0xfd, 0x52, 0xfd, 0x53, 0xfd, 0xdb, 0xfc, 0xd8, 0xfc, + 0x62, 0xfc, 0x63, 0xfc, 0xed, 0xfb, 0xeb, 0xfb, 0x7c, 0xfb, 0x7d, 0xfb, + 0x15, 0xfb, 0x13, 0xfb, 0xaf, 0xfa, 0xaf, 0xfa, 0x56, 0xfa, 0x54, 0xfa, + 0x04, 0xfa, 0x04, 0xfa, 0xbe, 0xf9, 0xbc, 0xf9, 0x83, 0xf9, 0x84, 0xf9, + 0x51, 0xf9, 0x50, 0xf9, 0x2f, 0xf9, 0x31, 0xf9, 0x16, 0xf9, 0x14, 0xf9, + 0x0a, 0xf9, 0x0b, 0xf9, 0x0d, 0xf9, 0x0b, 0xf9, 0x16, 0xf9, 0x17, 0xf9, + 0x32, 0xf9, 0x30, 0xf9, 0x50, 0xf9, 0x50, 0xf9, 0x7e, 0xf9, 0x7f, 0xf9, + 0xb1, 0xf9, 0xb1, 0xf9, 0xec, 0xf9, 0xee, 0xf9, 0x2e, 0xfa, 0x2e, 0xfa, + 0x75, 0xfa, 0x76, 0xfa, 0xc1, 0xfa, 0xc1, 0xfa, 0x0b, 0xfb, 0x0a, 0xfb, + 0x5c, 0xfb, 0x5c, 0xfb, 0xa4, 0xfb, 0xa4, 0xfb, 0xf2, 0xfb, 0xf0, 0xfb, + 0x37, 0xfc, 0x37, 0xfc, 0x79, 0xfc, 0x7a, 0xfc, 0xb9, 0xfc, 0xb8, 0xfc, + 0xed, 0xfc, 0xed, 0xfc, 0x1f, 0xfd, 0x1f, 0xfd, 0x47, 0xfd, 0x46, 0xfd, + 0x65, 0xfd, 0x68, 0xfd, 0x82, 0xfd, 0x80, 0xfd, 0x8e, 0xfd, 0x8f, 0xfd, + 0x98, 0xfd, 0x97, 0xfd, 0x98, 0xfd, 0x98, 0xfd, 0x92, 0xfd, 0x91, 0xfd, + 0x86, 0xfd, 0x85, 0xfd, 0x73, 0xfd, 0x72, 0xfd, 0x60, 0xfd, 0x5e, 0xfd, + 0x43, 0xfd, 0x43, 0xfd, 0x29, 0xfd, 0x29, 0xfd, 0x0d, 0xfd, 0x0c, 0xfd, + 0xed, 0xfc, 0xed, 0xfc, 0xd4, 0xfc, 0xd4, 0xfc, 0xba, 0xfc, 0xb9, 0xfc, + 0xa6, 0xfc, 0xa7, 0xfc, 0x98, 0xfc, 0x96, 0xfc, 0x8c, 0xfc, 0x8d, 0xfc, + 0x8c, 0xfc, 0x8b, 0xfc, 0x93, 0xfc, 0x91, 0xfc, 0xa1, 0xfc, 0xa1, 0xfc, + 0xb9, 0xfc, 0xb8, 0xfc, 0xda, 0xfc, 0xda, 0xfc, 0x06, 0xfd, 0x07, 0xfd, + 0x3c, 0xfd, 0x39, 0xfd, 0x7a, 0xfd, 0x7b, 0xfd, 0xc3, 0xfd, 0xc0, 0xfd, + 0x14, 0xfe, 0x13, 0xfe, 0x69, 0xfe, 0x68, 0xfe, 0xca, 0xfe, 0xc9, 0xfe, + 0x2d, 0xff, 0x2c, 0xff, 0x95, 0xff, 0x96, 0xff, 0x04, 0x00, 0x02, 0x00, + 0x6f, 0x00, 0x6e, 0x00, 0xe0, 0x00, 0xdf, 0x00, 0x4a, 0x01, 0x49, 0x01, + 0xb7, 0x01, 0xb8, 0x01, 0x1f, 0x02, 0x1e, 0x02, 0x80, 0x02, 0x7f, 0x02, + 0xde, 0x02, 0xdf, 0x02, 0x31, 0x03, 0x2d, 0x03, 0x7e, 0x03, 0x80, 0x03, + 0xbd, 0x03, 0xbc, 0x03, 0xf7, 0x03, 0xf6, 0x03, 0x23, 0x04, 0x23, 0x04, + 0x43, 0x04, 0x42, 0x04, 0x5b, 0x04, 0x5b, 0x04, 0x63, 0x04, 0x63, 0x04, + 0x62, 0x04, 0x60, 0x04, 0x56, 0x04, 0x58, 0x04, 0x3d, 0x04, 0x3b, 0x04, + 0x1d, 0x04, 0x1f, 0x04, 0xf1, 0x03, 0xef, 0x03, 0xbe, 0x03, 0xbe, 0x03, + 0x85, 0x03, 0x85, 0x03, 0x41, 0x03, 0x42, 0x03, 0x01, 0x03, 0x00, 0x03, + 0xb4, 0x02, 0xb5, 0x02, 0x6f, 0x02, 0x6e, 0x02, 0x24, 0x02, 0x26, 0x02, + 0xdb, 0x01, 0xda, 0x01, 0x97, 0x01, 0x97, 0x01, 0x53, 0x01, 0x54, 0x01, + 0x18, 0x01, 0x19, 0x01, 0xe2, 0x00, 0xe1, 0x00, 0xb4, 0x00, 0xb6, 0x00, + 0x91, 0x00, 0x8f, 0x00, 0x72, 0x00, 0x73, 0x00, 0x61, 0x00, 0x61, 0x00, + 0x58, 0x00, 0x56, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x66, 0x00, 0x65, 0x00, + 0x7d, 0x00, 0x7d, 0x00, 0x9d, 0x00, 0x9c, 0x00, 0xc5, 0x00, 0xc5, 0x00, + 0xf7, 0x00, 0xf5, 0x00, 0x2d, 0x01, 0x2d, 0x01, 0x6d, 0x01, 0x6b, 0x01, + 0xad, 0x01, 0xae, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0x3e, 0x02, 0x3d, 0x02, + 0x88, 0x02, 0x89, 0x02, 0xd4, 0x02, 0xd3, 0x02, 0x1c, 0x03, 0x1c, 0x03, + 0x62, 0x03, 0x62, 0x03, 0xa3, 0x03, 0xa2, 0x03, 0xde, 0x03, 0xdf, 0x03, + 0x14, 0x04, 0x13, 0x04, 0x42, 0x04, 0x41, 0x04, 0x68, 0x04, 0x68, 0x04, + 0x84, 0x04, 0x83, 0x04, 0x96, 0x04, 0x98, 0x04, 0xa1, 0x04, 0x9f, 0x04, + 0x9f, 0x04, 0xa1, 0x04, 0x97, 0x04, 0x96, 0x04, 0x82, 0x04, 0x83, 0x04, + 0x67, 0x04, 0x67, 0x04, 0x44, 0x04, 0x43, 0x04, 0x18, 0x04, 0x18, 0x04, + 0xe6, 0x03, 0xe5, 0x03, 0xb0, 0x03, 0xaf, 0x03, 0x76, 0x03, 0x75, 0x03, + 0x37, 0x03, 0x37, 0x03, 0xf8, 0x02, 0xf6, 0x02, 0xb7, 0x02, 0xb8, 0x02, + 0x78, 0x02, 0x78, 0x02, 0x3e, 0x02, 0x3e, 0x02, 0x02, 0x02, 0x03, 0x02, + 0xd0, 0x01, 0xd0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0x78, 0x01, 0x79, 0x01, + 0x58, 0x01, 0x56, 0x01, 0x40, 0x01, 0x3f, 0x01, 0x30, 0x01, 0x2f, 0x01, + 0x24, 0x01, 0x24, 0x01, 0x25, 0x01, 0x26, 0x01, 0x2d, 0x01, 0x2c, 0x01, + 0x3d, 0x01, 0x3d, 0x01, 0x53, 0x01, 0x52, 0x01, 0x70, 0x01, 0x71, 0x01, + 0x96, 0x01, 0x93, 0x01, 0xbb, 0x01, 0xbc, 0x01, 0xe7, 0x01, 0xe6, 0x01, + 0x17, 0x02, 0x17, 0x02, 0x44, 0x02, 0x44, 0x02, 0x77, 0x02, 0x75, 0x02, + 0xa2, 0x02, 0xa4, 0x02, 0xcf, 0x02, 0xcc, 0x02, 0xf3, 0x02, 0xf4, 0x02, + 0x13, 0x03, 0x12, 0x03, 0x2c, 0x03, 0x2d, 0x03, 0x3c, 0x03, 0x3b, 0x03, + 0x42, 0x03, 0x43, 0x03, 0x3e, 0x03, 0x3d, 0x03, 0x31, 0x03, 0x31, 0x03, + 0x15, 0x03, 0x15, 0x03, 0xec, 0x02, 0xee, 0x02, 0xbc, 0x02, 0xba, 0x02, + 0x7a, 0x02, 0x7b, 0x02, 0x2f, 0x02, 0x2f, 0x02, 0xd6, 0x01, 0xd7, 0x01, + 0x75, 0x01, 0x74, 0x01, 0x08, 0x01, 0x09, 0x01, 0x94, 0x00, 0x92, 0x00, + 0x15, 0x00, 0x17, 0x00, 0x93, 0xff, 0x92, 0xff, 0x09, 0xff, 0x0b, 0xff, + 0x7e, 0xfe, 0x7d, 0xfe, 0xf0, 0xfd, 0xf1, 0xfd, 0x63, 0xfd, 0x62, 0xfd, + 0xd6, 0xfc, 0xd7, 0xfc, 0x4f, 0xfc, 0x4f, 0xfc, 0xc9, 0xfb, 0xca, 0xfb, + 0x4e, 0xfb, 0x4f, 0xfb, 0xd8, 0xfa, 0xd8, 0xfa, 0x6b, 0xfa, 0x6c, 0xfa, + 0x09, 0xfa, 0x09, 0xfa, 0xb1, 0xf9, 0xb2, 0xf9, 0x69, 0xf9, 0x69, 0xf9, + 0x29, 0xf9, 0x2b, 0xf9, 0xfa, 0xf8, 0xf8, 0xf8, 0xd5, 0xf8, 0xd7, 0xf8, + 0xbf, 0xf8, 0xbf, 0xf8, 0xb8, 0xf8, 0xb6, 0xf8, 0xbb, 0xf8, 0xbc, 0xf8, + 0xce, 0xf8, 0xcc, 0xf8, 0xea, 0xf8, 0xea, 0xf8, 0x11, 0xf9, 0x12, 0xf9, + 0x43, 0xf9, 0x42, 0xf9, 0x7e, 0xf9, 0x7e, 0xf9, 0xbe, 0xf9, 0xbf, 0xf9, + 0x08, 0xfa, 0x06, 0xfa, 0x51, 0xfa, 0x52, 0xfa, 0xa0, 0xfa, 0x9e, 0xfa, + 0xf0, 0xfa, 0xf1, 0xfa, 0x42, 0xfb, 0x40, 0xfb, 0x8e, 0xfb, 0x8d, 0xfb, + 0xdb, 0xfb, 0xda, 0xfb, 0x21, 0xfc, 0x20, 0xfc, 0x65, 0xfc, 0x62, 0xfc, + 0x9f, 0xfc, 0x9f, 0xfc, 0xd6, 0xfc, 0xd5, 0xfc, 0x05, 0xfd, 0x05, 0xfd, + 0x2b, 0xfd, 0x2a, 0xfd, 0x48, 0xfd, 0x48, 0xfd, 0x5f, 0xfd, 0x5f, 0xfd, + 0x6c, 0xfd, 0x6b, 0xfd, 0x73, 0xfd, 0x74, 0xfd, 0x75, 0xfd, 0x73, 0xfd, + 0x6c, 0xfd, 0x6c, 0xfd, 0x61, 0xfd, 0x60, 0xfd, 0x4f, 0xfd, 0x4e, 0xfd, + 0x3a, 0xfd, 0x3a, 0xfd, 0x25, 0xfd, 0x25, 0xfd, 0x0a, 0xfd, 0x09, 0xfd, + 0xf4, 0xfc, 0xf4, 0xfc, 0xdd, 0xfc, 0xdd, 0xfc, 0xca, 0xfc, 0xc8, 0xfc, + 0xb9, 0xfc, 0xba, 0xfc, 0xad, 0xfc, 0xad, 0xfc, 0xa9, 0xfc, 0xa8, 0xfc, + 0xa9, 0xfc, 0xaa, 0xfc, 0xb3, 0xfc, 0xb2, 0xfc, 0xc6, 0xfc, 0xc5, 0xfc, + 0xde, 0xfc, 0xde, 0xfc, 0x04, 0xfd, 0x03, 0xfd, 0x30, 0xfd, 0x30, 0xfd, + 0x66, 0xfd, 0x65, 0xfd, 0xa6, 0xfd, 0xa4, 0xfd, 0xeb, 0xfd, 0xeb, 0xfd, + 0x3a, 0xfe, 0x3a, 0xfe, 0x91, 0xfe, 0x90, 0xfe, 0xed, 0xfe, 0xec, 0xfe, + 0x4e, 0xff, 0x4c, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0x18, 0x00, 0x16, 0x00, + 0x7d, 0x00, 0x7e, 0x00, 0xe6, 0x00, 0xe4, 0x00, 0x47, 0x01, 0x47, 0x01, + 0xa9, 0x01, 0xa8, 0x01, 0x04, 0x02, 0x03, 0x02, 0x5a, 0x02, 0x5a, 0x02, + 0xa9, 0x02, 0xa7, 0x02, 0xed, 0x02, 0xee, 0x02, 0x2c, 0x03, 0x2a, 0x03, + 0x5e, 0x03, 0x5e, 0x03, 0x86, 0x03, 0x86, 0x03, 0xa5, 0x03, 0xa5, 0x03, + 0xb7, 0x03, 0xb7, 0x03, 0xbf, 0x03, 0xc0, 0x03, 0xbb, 0x03, 0xbb, 0x03, + 0xae, 0x03, 0xad, 0x03, 0x94, 0x03, 0x96, 0x03, 0x72, 0x03, 0x72, 0x03, + 0x48, 0x03, 0x48, 0x03, 0x12, 0x03, 0x12, 0x03, 0xda, 0x02, 0xd9, 0x02, + 0x99, 0x02, 0x9a, 0x02, 0x55, 0x02, 0x56, 0x02, 0x0e, 0x02, 0x0d, 0x02, + 0xc6, 0x01, 0xc6, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x37, 0x01, 0x36, 0x01, + 0xf3, 0x00, 0xf4, 0x00, 0xb4, 0x00, 0xb3, 0x00, 0x7b, 0x00, 0x7c, 0x00, + 0x4c, 0x00, 0x4b, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xe6, 0xff, 0xe6, 0xff, 0xdb, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xd9, 0xff, + 0xe0, 0xff, 0xdf, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0x11, 0x00, 0x11, 0x00, + 0x3b, 0x00, 0x3a, 0x00, 0x6b, 0x00, 0x6a, 0x00, 0xa6, 0x00, 0xa6, 0x00, + 0xea, 0x00, 0xea, 0x00, 0x33, 0x01, 0x33, 0x01, 0x83, 0x01, 0x81, 0x01, + 0xd4, 0x01, 0xd3, 0x01, 0x2a, 0x02, 0x2b, 0x02, 0x7f, 0x02, 0x80, 0x02, + 0xd8, 0x02, 0xd7, 0x02, 0x2b, 0x03, 0x2c, 0x03, 0x80, 0x03, 0x7c, 0x03, + 0xcc, 0x03, 0xcc, 0x03, 0x13, 0x04, 0x12, 0x04, 0x56, 0x04, 0x54, 0x04, + 0x8f, 0x04, 0x8e, 0x04, 0xbe, 0x04, 0xbd, 0x04, 0xe6, 0x04, 0xe6, 0x04, + 0x00, 0x05, 0xff, 0x04, 0x15, 0x05, 0x16, 0x05, 0x19, 0x05, 0x18, 0x05, + 0x18, 0x05, 0x17, 0x05, 0x0a, 0x05, 0x0a, 0x05, 0xf0, 0x04, 0xee, 0x04, + 0xd2, 0x04, 0xd2, 0x04, 0xa3, 0x04, 0xa2, 0x04, 0x73, 0x04, 0x71, 0x04, + 0x38, 0x04, 0x39, 0x04, 0xf8, 0x03, 0xf7, 0x03, 0xb6, 0x03, 0xb4, 0x03, + 0x6e, 0x03, 0x6f, 0x03, 0x27, 0x03, 0x26, 0x03, 0xe0, 0x02, 0xdf, 0x02, + 0x98, 0x02, 0x98, 0x02, 0x57, 0x02, 0x56, 0x02, 0x15, 0x02, 0x15, 0x02, + 0xdc, 0x01, 0xdc, 0x01, 0xa8, 0x01, 0xa6, 0x01, 0x7b, 0x01, 0x7c, 0x01, + 0x55, 0x01, 0x53, 0x01, 0x39, 0x01, 0x39, 0x01, 0x26, 0x01, 0x26, 0x01, + 0x1b, 0x01, 0x1a, 0x01, 0x1c, 0x01, 0x1b, 0x01, 0x21, 0x01, 0x21, 0x01, + 0x33, 0x01, 0x32, 0x01, 0x4c, 0x01, 0x4b, 0x01, 0x6a, 0x01, 0x69, 0x01, + 0x91, 0x01, 0x91, 0x01, 0xbb, 0x01, 0xbc, 0x01, 0xec, 0x01, 0xeb, 0x01, + 0x20, 0x02, 0x20, 0x02, 0x54, 0x02, 0x54, 0x02, 0x89, 0x02, 0x88, 0x02, + 0xbd, 0x02, 0xbd, 0x02, 0xee, 0x02, 0xed, 0x02, 0x1c, 0x03, 0x1b, 0x03, + 0x42, 0x03, 0x42, 0x03, 0x65, 0x03, 0x65, 0x03, 0x7c, 0x03, 0x7b, 0x03, + 0x8a, 0x03, 0x8b, 0x03, 0x92, 0x03, 0x8f, 0x03, 0x87, 0x03, 0x89, 0x03, + 0x78, 0x03, 0x76, 0x03, 0x59, 0x03, 0x58, 0x03, 0x2e, 0x03, 0x2e, 0x03, + 0xf3, 0x02, 0xf5, 0x02, 0xb1, 0x02, 0xb0, 0x02, 0x64, 0x02, 0x63, 0x02, + 0x06, 0x02, 0x05, 0x02, 0xa3, 0x01, 0xa3, 0x01, 0x32, 0x01, 0x33, 0x01, + 0xbe, 0x00, 0xbd, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0xbc, 0xff, 0xbd, 0xff, + 0x33, 0xff, 0x34, 0xff, 0xac, 0xfe, 0xac, 0xfe, 0x22, 0xfe, 0x21, 0xfe, + 0x98, 0xfd, 0x98, 0xfd, 0x11, 0xfd, 0x11, 0xfd, 0x8f, 0xfc, 0x8f, 0xfc, + 0x12, 0xfc, 0x11, 0xfc, 0x9d, 0xfb, 0x9d, 0xfb, 0x2f, 0xfb, 0x2d, 0xfb, + 0xca, 0xfa, 0xca, 0xfa, 0x71, 0xfa, 0x71, 0xfa, 0x22, 0xfa, 0x20, 0xfa, + 0xe0, 0xf9, 0xe1, 0xf9, 0xa9, 0xf9, 0xa7, 0xf9, 0x7f, 0xf9, 0x82, 0xf9, + 0x64, 0xf9, 0x61, 0xf9, 0x50, 0xf9, 0x52, 0xf9, 0x50, 0xf9, 0x4e, 0xf9, + 0x52, 0xf9, 0x52, 0xf9, 0x67, 0xf9, 0x67, 0xf9, 0x82, 0xf9, 0x82, 0xf9, + 0xa5, 0xf9, 0xa5, 0xf9, 0xd2, 0xf9, 0xd4, 0xf9, 0x05, 0xfa, 0x05, 0xfa, + 0x3d, 0xfa, 0x3c, 0xfa, 0x7b, 0xfa, 0x7c, 0xfa, 0xb9, 0xfa, 0xb7, 0xfa, + 0xf8, 0xfa, 0xf9, 0xfa, 0x38, 0xfb, 0x37, 0xfb, 0x75, 0xfb, 0x74, 0xfb, + 0xb0, 0xfb, 0xb0, 0xfb, 0xe6, 0xfb, 0xe6, 0xfb, 0x19, 0xfc, 0x18, 0xfc, + 0x44, 0xfc, 0x44, 0xfc, 0x6a, 0xfc, 0x6b, 0xfc, 0x8b, 0xfc, 0x89, 0xfc, + 0xa2, 0xfc, 0xa2, 0xfc, 0xb1, 0xfc, 0xb2, 0xfc, 0xbb, 0xfc, 0xbb, 0xfc, + 0xbd, 0xfc, 0xbe, 0xfc, 0xba, 0xfc, 0xb6, 0xfc, 0xae, 0xfc, 0xaf, 0xfc, + 0x9f, 0xfc, 0x9d, 0xfc, 0x88, 0xfc, 0x89, 0xfc, 0x74, 0xfc, 0x73, 0xfc, + 0x57, 0xfc, 0x57, 0xfc, 0x3e, 0xfc, 0x3d, 0xfc, 0x24, 0xfc, 0x23, 0xfc, + 0x0a, 0xfc, 0x0a, 0xfc, 0xf5, 0xfb, 0xf6, 0xfb, 0xe1, 0xfb, 0xe2, 0xfb, + 0xd4, 0xfb, 0xd4, 0xfb, 0xce, 0xfb, 0xcf, 0xfb, 0xd1, 0xfb, 0xcf, 0xfb, + 0xd9, 0xfb, 0xda, 0xfb, 0xec, 0xfb, 0xec, 0xfb, 0x04, 0xfc, 0x05, 0xfc, + 0x2d, 0xfc, 0x2d, 0xfc, 0x5b, 0xfc, 0x5b, 0xfc, 0x95, 0xfc, 0x96, 0xfc, + 0xd8, 0xfc, 0xd8, 0xfc, 0x27, 0xfd, 0x26, 0xfd, 0x7b, 0xfd, 0x7b, 0xfd, + 0xdb, 0xfd, 0xdb, 0xfd, 0x3f, 0xfe, 0x3d, 0xfe, 0xab, 0xfe, 0xac, 0xfe, + 0x1b, 0xff, 0x1a, 0xff, 0x90, 0xff, 0x8f, 0xff, 0x05, 0x00, 0x05, 0x00, + 0x7c, 0x00, 0x7b, 0x00, 0xf1, 0x00, 0xf0, 0x00, 0x64, 0x01, 0x63, 0x01, + 0xd1, 0x01, 0xd1, 0x01, 0x39, 0x02, 0x38, 0x02, 0x9b, 0x02, 0x9a, 0x02, + 0xf2, 0x02, 0xf2, 0x02, 0x41, 0x03, 0x40, 0x03, 0x86, 0x03, 0x86, 0x03, + 0xbf, 0x03, 0xbd, 0x03, 0xeb, 0x03, 0xee, 0x03, 0x0c, 0x04, 0x0a, 0x04, + 0x21, 0x04, 0x20, 0x04, 0x27, 0x04, 0x24, 0x04, 0x21, 0x04, 0x22, 0x04, + 0x0d, 0x04, 0x0d, 0x04, 0xf2, 0x03, 0xf0, 0x03, 0xc6, 0x03, 0xc5, 0x03, + 0x90, 0x03, 0x90, 0x03, 0x54, 0x03, 0x54, 0x03, 0x0d, 0x03, 0x0b, 0x03, + 0xc0, 0x02, 0xc0, 0x02, 0x6d, 0x02, 0x6c, 0x02, 0x17, 0x02, 0x16, 0x02, + 0xbf, 0x01, 0xbf, 0x01, 0x63, 0x01, 0x63, 0x01, 0x0b, 0x01, 0x0b, 0x01, + 0xb3, 0x00, 0xb3, 0x00, 0x61, 0x00, 0x61, 0x00, 0x16, 0x00, 0x16, 0x00, + 0xce, 0xff, 0xcd, 0xff, 0x95, 0xff, 0x94, 0xff, 0x5f, 0xff, 0x5e, 0xff, + 0x38, 0xff, 0x38, 0xff, 0x1b, 0xff, 0x1b, 0xff, 0x09, 0xff, 0x09, 0xff, + 0x06, 0xff, 0x05, 0xff, 0x0b, 0xff, 0x0c, 0xff, 0x20, 0xff, 0x1f, 0xff, + 0x40, 0xff, 0x40, 0xff, 0x6c, 0xff, 0x6b, 0xff, 0xa2, 0xff, 0xa2, 0xff, + 0xe2, 0xff, 0xe0, 0xff, 0x2c, 0x00, 0x2b, 0x00, 0x79, 0x00, 0x78, 0x00, + 0xd1, 0x00, 0xd1, 0x00, 0x2e, 0x01, 0x2b, 0x01, 0x89, 0x01, 0x8a, 0x01, + 0xee, 0x01, 0xec, 0x01, 0x4b, 0x02, 0x4b, 0x02, 0xae, 0x02, 0xab, 0x02, + 0x09, 0x03, 0x09, 0x03, 0x62, 0x03, 0x61, 0x03, 0xb6, 0x03, 0xb3, 0x03, + 0x00, 0x04, 0x01, 0x04, 0x47, 0x04, 0x44, 0x04, 0x83, 0x04, 0x82, 0x04, + 0xb3, 0x04, 0xb3, 0x04, 0xde, 0x04, 0xdb, 0x04, 0xf9, 0x04, 0xfa, 0x04, + 0x0d, 0x05, 0x0c, 0x05, 0x16, 0x05, 0x15, 0x05, 0x12, 0x05, 0x11, 0x05, + 0x07, 0x05, 0x06, 0x05, 0xef, 0x04, 0xee, 0x04, 0xd2, 0x04, 0xd0, 0x04, + 0xa8, 0x04, 0xa9, 0x04, 0x7b, 0x04, 0x79, 0x04, 0x47, 0x04, 0x49, 0x04, + 0x0f, 0x04, 0x0c, 0x04, 0xd5, 0x03, 0xd5, 0x03, 0x98, 0x03, 0x98, 0x03, + 0x5c, 0x03, 0x5b, 0x03, 0x21, 0x03, 0x20, 0x03, 0xe6, 0x02, 0xe7, 0x02, + 0xb4, 0x02, 0xb0, 0x02, 0x81, 0x02, 0x83, 0x02, 0x55, 0x02, 0x54, 0x02, + 0x34, 0x02, 0x32, 0x02, 0x15, 0x02, 0x15, 0x02, 0x02, 0x02, 0x00, 0x02, + 0xf5, 0x01, 0xf4, 0x01, 0xee, 0x01, 0xf0, 0x01, 0xf5, 0x01, 0xf4, 0x01, + 0x00, 0x02, 0xff, 0x01, 0x12, 0x02, 0x13, 0x02, 0x2d, 0x02, 0x2c, 0x02, + 0x4c, 0x02, 0x4c, 0x02, 0x71, 0x02, 0x72, 0x02, 0x9a, 0x02, 0x99, 0x02, + 0xc7, 0x02, 0xc7, 0x02, 0xf5, 0x02, 0xf4, 0x02, 0x24, 0x03, 0x24, 0x03, + 0x51, 0x03, 0x51, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0xa4, 0x03, 0xa2, 0x03, + 0xc5, 0x03, 0xc5, 0x03, 0xe1, 0x03, 0xe1, 0x03, 0xf4, 0x03, 0xf3, 0x03, + 0xfd, 0x03, 0xfc, 0x03, 0xff, 0x03, 0xfd, 0x03, 0xf2, 0x03, 0xf3, 0x03, + 0xdb, 0x03, 0xda, 0x03, 0xb9, 0x03, 0xb7, 0x03, 0x87, 0x03, 0x87, 0x03, + 0x4c, 0x03, 0x4a, 0x03, 0x04, 0x03, 0x03, 0x03, 0xad, 0x02, 0xae, 0x02, + 0x50, 0x02, 0x4f, 0x02, 0xe4, 0x01, 0xe3, 0x01, 0x71, 0x01, 0x71, 0x01, + 0xf2, 0x00, 0xf3, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe8, 0xff, 0xe8, 0xff, + 0x5c, 0xff, 0x5a, 0xff, 0xcd, 0xfe, 0xce, 0xfe, 0x3e, 0xfe, 0x3d, 0xfe, + 0xaf, 0xfd, 0xae, 0xfd, 0x22, 0xfd, 0x24, 0xfd, 0x9c, 0xfc, 0x99, 0xfc, + 0x19, 0xfc, 0x1a, 0xfc, 0xa1, 0xfb, 0xa0, 0xfb, 0x2f, 0xfb, 0x2f, 0xfb, + 0xc7, 0xfa, 0xc8, 0xfa, 0x6c, 0xfa, 0x6a, 0xfa, 0x1b, 0xfa, 0x1c, 0xfa, + 0xd9, 0xf9, 0xd8, 0xf9, 0xa1, 0xf9, 0xa4, 0xf9, 0x79, 0xf9, 0x78, 0xf9, + 0x60, 0xf9, 0x5f, 0xf9, 0x50, 0xf9, 0x51, 0xf9, 0x51, 0xf9, 0x50, 0xf9, + 0x5c, 0xf9, 0x5d, 0xf9, 0x74, 0xf9, 0x73, 0xf9, 0x97, 0xf9, 0x96, 0xf9, + 0xc3, 0xf9, 0xc3, 0xf9, 0xfa, 0xf9, 0xf8, 0xf9, 0x35, 0xfa, 0x36, 0xfa, + 0x77, 0xfa, 0x76, 0xfa, 0xbe, 0xfa, 0xbc, 0xfa, 0x04, 0xfb, 0x06, 0xfb, + 0x52, 0xfb, 0x50, 0xfb, 0x98, 0xfb, 0x98, 0xfb, 0xe2, 0xfb, 0xe3, 0xfb, + 0x26, 0xfc, 0x26, 0xfc, 0x66, 0xfc, 0x65, 0xfc, 0x9e, 0xfc, 0x9f, 0xfc, + 0xd4, 0xfc, 0xd1, 0xfc, 0xfc, 0xfc, 0xfd, 0xfc, 0x22, 0xfd, 0x1f, 0xfd, + 0x38, 0xfd, 0x39, 0xfd, 0x4b, 0xfd, 0x49, 0xfd, 0x51, 0xfd, 0x51, 0xfd, + 0x50, 0xfd, 0x51, 0xfd, 0x47, 0xfd, 0x45, 0xfd, 0x33, 0xfd, 0x34, 0xfd, + 0x1a, 0xfd, 0x1b, 0xfd, 0xfe, 0xfc, 0xfc, 0xfc, 0xd5, 0xfc, 0xd6, 0xfc, + 0xaf, 0xfc, 0xae, 0xfc, 0x81, 0xfc, 0x82, 0xfc, 0x57, 0xfc, 0x57, 0xfc, + 0x2a, 0xfc, 0x29, 0xfc, 0xfe, 0xfb, 0xff, 0xfb, 0xd9, 0xfb, 0xd8, 0xfb, + 0xb5, 0xfb, 0xb5, 0xfb, 0x98, 0xfb, 0x97, 0xfb, 0x84, 0xfb, 0x82, 0xfb, + 0x73, 0xfb, 0x73, 0xfb, 0x71, 0xfb, 0x70, 0xfb, 0x76, 0xfb, 0x76, 0xfb, + 0x86, 0xfb, 0x86, 0xfb, 0xa3, 0xfb, 0xa0, 0xfb, 0xc8, 0xfb, 0xca, 0xfb, + 0xfd, 0xfb, 0xfb, 0xfb, 0x3b, 0xfc, 0x3a, 0xfc, 0x84, 0xfc, 0x84, 0xfc, + 0xd8, 0xfc, 0xd5, 0xfc, 0x33, 0xfd, 0x34, 0xfd, 0x98, 0xfd, 0x97, 0xfd, + 0x06, 0xfe, 0x05, 0xfe, 0x78, 0xfe, 0x76, 0xfe, 0xec, 0xfe, 0xed, 0xfe, + 0x68, 0xff, 0x65, 0xff, 0xe0, 0xff, 0xe3, 0xff, 0x5f, 0x00, 0x5b, 0x00, + 0xd3, 0x00, 0xd4, 0x00, 0x4b, 0x01, 0x4c, 0x01, 0xb7, 0x01, 0xb5, 0x01, + 0x22, 0x02, 0x24, 0x02, 0x7f, 0x02, 0x7d, 0x02, 0xd6, 0x02, 0xd7, 0x02, + 0x20, 0x03, 0x1f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x95, 0x03, 0x94, 0x03, + 0xbb, 0x03, 0xbc, 0x03, 0xd5, 0x03, 0xd6, 0x03, 0xe3, 0x03, 0xe1, 0x03, + 0xe2, 0x03, 0xe3, 0x03, 0xd6, 0x03, 0xd5, 0x03, 0xba, 0x03, 0xbd, 0x03, + 0x96, 0x03, 0x97, 0x03, 0x66, 0x03, 0x66, 0x03, 0x2c, 0x03, 0x2d, 0x03, + 0xea, 0x02, 0xe9, 0x02, 0xa2, 0x02, 0xa5, 0x02, 0x54, 0x02, 0x50, 0x02, + 0xff, 0x01, 0x01, 0x02, 0xab, 0x01, 0xa8, 0x01, 0x53, 0x01, 0x55, 0x01, + 0x00, 0x01, 0x00, 0x01, 0xab, 0x00, 0xab, 0x00, 0x60, 0x00, 0x5f, 0x00, + 0x16, 0x00, 0x15, 0x00, 0xd4, 0xff, 0xd4, 0xff, 0x9c, 0xff, 0x9c, 0xff, + 0x6a, 0xff, 0x6a, 0xff, 0x48, 0xff, 0x46, 0xff, 0x2a, 0xff, 0x2a, 0xff, + 0x1b, 0xff, 0x1b, 0xff, 0x19, 0xff, 0x17, 0xff, 0x21, 0xff, 0x22, 0xff, + 0x35, 0xff, 0x34, 0xff, 0x56, 0xff, 0x57, 0xff, 0x7d, 0xff, 0x7e, 0xff, + 0xb5, 0xff, 0xb4, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0x37, 0x00, 0x37, 0x00, + 0x83, 0x00, 0x82, 0x00, 0xd4, 0x00, 0xd3, 0x00, 0x2b, 0x01, 0x2c, 0x01, + 0x83, 0x01, 0x82, 0x01, 0xdd, 0x01, 0xdd, 0x01, 0x35, 0x02, 0x34, 0x02, + 0x8c, 0x02, 0x8b, 0x02, 0xdd, 0x02, 0xde, 0x02, 0x2d, 0x03, 0x2b, 0x03, + 0x76, 0x03, 0x76, 0x03, 0xb6, 0x03, 0xb4, 0x03, 0xee, 0x03, 0xf0, 0x03, + 0x20, 0x04, 0x1e, 0x04, 0x43, 0x04, 0x45, 0x04, 0x63, 0x04, 0x62, 0x04, + 0x75, 0x04, 0x75, 0x04, 0x7b, 0x04, 0x7c, 0x04, 0x7b, 0x04, 0x79, 0x04, + 0x6e, 0x04, 0x6e, 0x04, 0x5a, 0x04, 0x59, 0x04, 0x3c, 0x04, 0x3c, 0x04, + 0x16, 0x04, 0x16, 0x04, 0xed, 0x03, 0xeb, 0x03, 0xbc, 0x03, 0xbc, 0x03, + 0x89, 0x03, 0x88, 0x03, 0x53, 0x03, 0x52, 0x03, 0x1c, 0x03, 0x1c, 0x03, + 0xe7, 0x02, 0xe7, 0x02, 0xb3, 0x02, 0xb3, 0x02, 0x83, 0x02, 0x81, 0x02, + 0x56, 0x02, 0x56, 0x02, 0x30, 0x02, 0x30, 0x02, 0x10, 0x02, 0x10, 0x02, + 0xf8, 0x01, 0xf7, 0x01, 0xe7, 0x01, 0xe6, 0x01, 0xe1, 0x01, 0xe1, 0x01, + 0xe1, 0x01, 0xe0, 0x01, 0xec, 0x01, 0xec, 0x01, 0x01, 0x02, 0x00, 0x02, + 0x1d, 0x02, 0x1d, 0x02, 0x42, 0x02, 0x41, 0x02, 0x6e, 0x02, 0x6d, 0x02, + 0xa1, 0x02, 0x9f, 0x02, 0xdb, 0x02, 0xda, 0x02, 0x17, 0x03, 0x15, 0x03, + 0x57, 0x03, 0x56, 0x03, 0x98, 0x03, 0x97, 0x03, 0xdb, 0x03, 0xda, 0x03, + 0x19, 0x04, 0x18, 0x04, 0x59, 0x04, 0x56, 0x04, 0x8e, 0x04, 0x8f, 0x04, + 0xc4, 0x04, 0xc1, 0x04, 0xeb, 0x04, 0xec, 0x04, 0x0c, 0x05, 0x0b, 0x05, + 0x24, 0x05, 0x23, 0x05, 0x2e, 0x05, 0x2e, 0x05, 0x2d, 0x05, 0x2c, 0x05, + 0x1f, 0x05, 0x1e, 0x05, 0x01, 0x05, 0x01, 0x05, 0xd8, 0x04, 0xd7, 0x04, + 0x9f, 0x04, 0x9d, 0x04, 0x56, 0x04, 0x56, 0x04, 0xff, 0x03, 0xfe, 0x03, + 0x9c, 0x03, 0x9a, 0x03, 0x2c, 0x03, 0x2a, 0x03, 0xad, 0x02, 0xad, 0x02, + 0x27, 0x02, 0x26, 0x02, 0x96, 0x01, 0x95, 0x01, 0xff, 0x00, 0xfe, 0x00, + 0x60, 0x00, 0x60, 0x00, 0xbf, 0xff, 0xbe, 0xff, 0x1b, 0xff, 0x1a, 0xff, + 0x76, 0xfe, 0x76, 0xfe, 0xd7, 0xfd, 0xd5, 0xfd, 0x38, 0xfd, 0x35, 0xfd, + 0x9d, 0xfc, 0x9d, 0xfc, 0x0b, 0xfc, 0x0a, 0xfc, 0x81, 0xfb, 0x7f, 0xfb, + 0x01, 0xfb, 0x02, 0xfb, 0x8d, 0xfa, 0x8b, 0xfa, 0x24, 0xfa, 0x26, 0xfa, + 0xca, 0xf9, 0xc7, 0xf9, 0x7e, 0xf9, 0x7f, 0xf9, 0x42, 0xf9, 0x40, 0xf9, + 0x12, 0xf9, 0x13, 0xf9, 0xf3, 0xf8, 0xf2, 0xf8, 0xe1, 0xf8, 0xe1, 0xf8, + 0xde, 0xf8, 0xde, 0xf8, 0xeb, 0xf8, 0xeb, 0xf8, 0x00, 0xf9, 0x01, 0xf9, + 0x26, 0xf9, 0x25, 0xf9, 0x53, 0xf9, 0x53, 0xf9, 0x8b, 0xf9, 0x8c, 0xf9, + 0xcc, 0xf9, 0xca, 0xf9, 0x10, 0xfa, 0x12, 0xfa, 0x5d, 0xfa, 0x5b, 0xfa, + 0xa7, 0xfa, 0xaa, 0xfa, 0xf8, 0xfa, 0xf9, 0xfa, 0x48, 0xfb, 0x47, 0xfb, + 0x92, 0xfb, 0x94, 0xfb, 0xdf, 0xfb, 0xde, 0xfb, 0x21, 0xfc, 0x22, 0xfc, + 0x61, 0xfc, 0x63, 0xfc, 0x9b, 0xfc, 0x9b, 0xfc, 0xca, 0xfc, 0xcc, 0xfc, + 0xf5, 0xfc, 0xf3, 0xfc, 0x11, 0xfd, 0x13, 0xfd, 0x2c, 0xfd, 0x2b, 0xfd, + 0x37, 0xfd, 0x38, 0xfd, 0x3e, 0xfd, 0x3f, 0xfd, 0x3b, 0xfd, 0x3a, 0xfd, + 0x2f, 0xfd, 0x2e, 0xfd, 0x1e, 0xfd, 0x1f, 0xfd, 0x05, 0xfd, 0x04, 0xfd, + 0xe9, 0xfc, 0xea, 0xfc, 0xc9, 0xfc, 0xc8, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, + 0x84, 0xfc, 0x83, 0xfc, 0x5e, 0xfc, 0x5c, 0xfc, 0x3e, 0xfc, 0x3d, 0xfc, + 0x1c, 0xfc, 0x1d, 0xfc, 0x06, 0xfc, 0x04, 0xfc, 0xf1, 0xfb, 0xf1, 0xfb, + 0xe3, 0xfb, 0xe3, 0xfb, 0xe0, 0xfb, 0xdf, 0xfb, 0xe4, 0xfb, 0xe6, 0xfb, + 0xf3, 0xfb, 0xf2, 0xfb, 0x09, 0xfc, 0x0a, 0xfc, 0x2d, 0xfc, 0x2b, 0xfc, + 0x59, 0xfc, 0x58, 0xfc, 0x90, 0xfc, 0x90, 0xfc, 0xd3, 0xfc, 0xd2, 0xfc, + 0x1d, 0xfd, 0x1e, 0xfd, 0x73, 0xfd, 0x72, 0xfd, 0xce, 0xfd, 0xcd, 0xfd, + 0x30, 0xfe, 0x30, 0xfe, 0x9b, 0xfe, 0x99, 0xfe, 0x04, 0xff, 0x06, 0xff, + 0x76, 0xff, 0x75, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0x53, 0x00, 0x54, 0x00, + 0xc3, 0x00, 0xc3, 0x00, 0x2b, 0x01, 0x2a, 0x01, 0x8f, 0x01, 0x90, 0x01, + 0xed, 0x01, 0xea, 0x01, 0x41, 0x02, 0x42, 0x02, 0x8c, 0x02, 0x8a, 0x02, + 0xcc, 0x02, 0xcc, 0x02, 0x02, 0x03, 0x03, 0x03, 0x2e, 0x03, 0x2a, 0x03, + 0x49, 0x03, 0x49, 0x03, 0x58, 0x03, 0x56, 0x03, 0x5c, 0x03, 0x5c, 0x03, + 0x51, 0x03, 0x4f, 0x03, 0x39, 0x03, 0x39, 0x03, 0x18, 0x03, 0x17, 0x03, + 0xe7, 0x02, 0xe7, 0x02, 0xb2, 0x02, 0xb2, 0x02, 0x6f, 0x02, 0x6f, 0x02, + 0x26, 0x02, 0x25, 0x02, 0xda, 0x01, 0xd9, 0x01, 0x82, 0x01, 0x82, 0x01, + 0x2e, 0x01, 0x2e, 0x01, 0xd3, 0x00, 0xd3, 0x00, 0x7b, 0x00, 0x7b, 0x00, + 0x26, 0x00, 0x26, 0x00, 0xd3, 0xff, 0xd2, 0xff, 0x87, 0xff, 0x86, 0xff, + 0x3f, 0xff, 0x3f, 0xff, 0x01, 0xff, 0x01, 0xff, 0xcf, 0xfe, 0xce, 0xfe, + 0xa1, 0xfe, 0xa3, 0xfe, 0x87, 0xfe, 0x85, 0xfe, 0x70, 0xfe, 0x73, 0xfe, + 0x6e, 0xfe, 0x6e, 0xfe, 0x75, 0xfe, 0x74, 0xfe, 0x89, 0xfe, 0x8a, 0xfe, + 0xac, 0xfe, 0xac, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, 0x11, 0xff, 0x12, 0xff, + 0x54, 0xff, 0x53, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0x55, 0x00, 0x53, 0x00, 0xb5, 0x00, 0xb7, 0x00, 0x1d, 0x01, 0x1a, 0x01, + 0x84, 0x01, 0x83, 0x01, 0xeb, 0x01, 0xea, 0x01, 0x54, 0x02, 0x54, 0x02, + 0xb6, 0x02, 0xb7, 0x02, 0x19, 0x03, 0x17, 0x03, 0x72, 0x03, 0x72, 0x03, + 0xc5, 0x03, 0xc5, 0x03, 0x10, 0x04, 0x0e, 0x04, 0x50, 0x04, 0x51, 0x04, + 0x88, 0x04, 0x86, 0x04, 0xb4, 0x04, 0xb6, 0x04, 0xd4, 0x04, 0xd3, 0x04, + 0xeb, 0x04, 0xeb, 0x04, 0xf1, 0x04, 0xf2, 0x04, 0xf2, 0x04, 0xf2, 0x04, + 0xe3, 0x04, 0xe3, 0x04, 0xc9, 0x04, 0xca, 0x04, 0xaa, 0x04, 0xaa, 0x04, + 0x7f, 0x04, 0x7e, 0x04, 0x4a, 0x04, 0x4c, 0x04, 0x14, 0x04, 0x14, 0x04, + 0xd6, 0x03, 0xd7, 0x03, 0x97, 0x03, 0x98, 0x03, 0x54, 0x03, 0x55, 0x03, + 0x15, 0x03, 0x14, 0x03, 0xd2, 0x02, 0xd4, 0x02, 0x96, 0x02, 0x96, 0x02, + 0x5e, 0x02, 0x5f, 0x02, 0x2c, 0x02, 0x2c, 0x02, 0x01, 0x02, 0x01, 0x02, + 0xde, 0x01, 0xde, 0x01, 0xc4, 0x01, 0xc3, 0x01, 0xb1, 0x01, 0xb2, 0x01, + 0xac, 0x01, 0xac, 0x01, 0xae, 0x01, 0xae, 0x01, 0xbe, 0x01, 0xbd, 0x01, + 0xd3, 0x01, 0xd5, 0x01, 0xf8, 0x01, 0xf6, 0x01, 0x20, 0x02, 0x21, 0x02, + 0x54, 0x02, 0x53, 0x02, 0x8e, 0x02, 0x8e, 0x02, 0xcd, 0x02, 0xcd, 0x02, + 0x12, 0x03, 0x11, 0x03, 0x58, 0x03, 0x58, 0x03, 0xa1, 0x03, 0xa0, 0x03, + 0xea, 0x03, 0xea, 0x03, 0x30, 0x04, 0x30, 0x04, 0x75, 0x04, 0x75, 0x04, + 0xb2, 0x04, 0xb2, 0x04, 0xec, 0x04, 0xe8, 0x04, 0x18, 0x05, 0x19, 0x05, + 0x3e, 0x05, 0x3b, 0x05, 0x55, 0x05, 0x57, 0x05, 0x65, 0x05, 0x62, 0x05, + 0x63, 0x05, 0x63, 0x05, 0x55, 0x05, 0x53, 0x05, 0x39, 0x05, 0x38, 0x05, + 0x0c, 0x05, 0x0e, 0x05, 0xd4, 0x04, 0xd3, 0x04, 0x8b, 0x04, 0x8b, 0x04, + 0x34, 0x04, 0x32, 0x04, 0xd1, 0x03, 0xd0, 0x03, 0x61, 0x03, 0x60, 0x03, + 0xe5, 0x02, 0xe4, 0x02, 0x60, 0x02, 0x5e, 0x02, 0xd0, 0x01, 0xd0, 0x01, + 0x3c, 0x01, 0x39, 0x01, 0xa1, 0x00, 0xa1, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x65, 0xff, 0x63, 0xff, 0xc4, 0xfe, 0xc4, 0xfe, 0x29, 0xfe, 0x29, 0xfe, + 0x90, 0xfd, 0x8e, 0xfd, 0xfe, 0xfc, 0xfe, 0xfc, 0x73, 0xfc, 0x70, 0xfc, + 0xf0, 0xfb, 0xf0, 0xfb, 0x7a, 0xfb, 0x79, 0xfb, 0x0c, 0xfb, 0x0b, 0xfb, + 0xae, 0xfa, 0xad, 0xfa, 0x5a, 0xfa, 0x5a, 0xfa, 0x15, 0xfa, 0x15, 0xfa, + 0xe1, 0xf9, 0xdf, 0xf9, 0xb6, 0xf9, 0xb6, 0xf9, 0x9e, 0xf9, 0x9d, 0xf9, + 0x8f, 0xf9, 0x8e, 0xf9, 0x90, 0xf9, 0x8f, 0xf9, 0x9b, 0xf9, 0x9b, 0xf9, + 0xb4, 0xf9, 0xb1, 0xf9, 0xd3, 0xf9, 0xd4, 0xf9, 0xfe, 0xf9, 0xfc, 0xf9, + 0x31, 0xfa, 0x2f, 0xfa, 0x67, 0xfa, 0x68, 0xfa, 0xa1, 0xfa, 0xa1, 0xfa, + 0xe2, 0xfa, 0xe3, 0xfa, 0x20, 0xfb, 0x1f, 0xfb, 0x60, 0xfb, 0x61, 0xfb, + 0x9d, 0xfb, 0x9b, 0xfb, 0xd6, 0xfb, 0xd7, 0xfb, 0x0c, 0xfc, 0x0c, 0xfc, + 0x3a, 0xfc, 0x3b, 0xfc, 0x64, 0xfc, 0x65, 0xfc, 0x86, 0xfc, 0x85, 0xfc, + 0x9f, 0xfc, 0x9f, 0xfc, 0xb0, 0xfc, 0xb0, 0xfc, 0xb8, 0xfc, 0xb8, 0xfc, + 0xba, 0xfc, 0xbb, 0xfc, 0xb2, 0xfc, 0xb1, 0xfc, 0xa3, 0xfc, 0xa3, 0xfc, + 0x8e, 0xfc, 0x8d, 0xfc, 0x70, 0xfc, 0x70, 0xfc, 0x51, 0xfc, 0x51, 0xfc, + 0x2b, 0xfc, 0x2c, 0xfc, 0x05, 0xfc, 0x05, 0xfc, 0xdb, 0xfb, 0xdc, 0xfb, + 0xb4, 0xfb, 0xb3, 0xfb, 0x8f, 0xfb, 0x8f, 0xfb, 0x6a, 0xfb, 0x6a, 0xfb, + 0x4e, 0xfb, 0x4e, 0xfb, 0x34, 0xfb, 0x34, 0xfb, 0x23, 0xfb, 0x23, 0xfb, + 0x1b, 0xfb, 0x1c, 0xfb, 0x1c, 0xfb, 0x1c, 0xfb, 0x27, 0xfb, 0x28, 0xfb, + 0x3f, 0xfb, 0x3f, 0xfb, 0x5f, 0xfb, 0x60, 0xfb, 0x8d, 0xfb, 0x8d, 0xfb, + 0xc6, 0xfb, 0xc7, 0xfb, 0x0a, 0xfc, 0x0a, 0xfc, 0x5b, 0xfc, 0x5b, 0xfc, + 0xb3, 0xfc, 0xb5, 0xfc, 0x18, 0xfd, 0x18, 0xfd, 0x85, 0xfd, 0x84, 0xfd, + 0xf7, 0xfd, 0xf7, 0xfd, 0x72, 0xfe, 0x71, 0xfe, 0xed, 0xfe, 0xec, 0xfe, + 0x6d, 0xff, 0x6e, 0xff, 0xed, 0xff, 0xec, 0xff, 0x6b, 0x00, 0x6b, 0x00, + 0xe7, 0x00, 0xe9, 0x00, 0x5d, 0x01, 0x5e, 0x01, 0xcf, 0x01, 0xce, 0x01, + 0x36, 0x02, 0x38, 0x02, 0x95, 0x02, 0x92, 0x02, 0xea, 0x02, 0xec, 0x02, + 0x2f, 0x03, 0x2e, 0x03, 0x6d, 0x03, 0x6c, 0x03, 0x97, 0x03, 0x98, 0x03, + 0xb4, 0x03, 0xb4, 0x03, 0xc5, 0x03, 0xc6, 0x03, 0xc4, 0x03, 0xc4, 0x03, + 0xb5, 0x03, 0xb7, 0x03, 0x9a, 0x03, 0x99, 0x03, 0x6f, 0x03, 0x70, 0x03, + 0x39, 0x03, 0x37, 0x03, 0xf5, 0x02, 0xf4, 0x02, 0xa8, 0x02, 0xa7, 0x02, + 0x51, 0x02, 0x50, 0x02, 0xf5, 0x01, 0xf3, 0x01, 0x8e, 0x01, 0x8e, 0x01, + 0x29, 0x01, 0x27, 0x01, 0xbd, 0x00, 0xbd, 0x00, 0x52, 0x00, 0x52, 0x00, + 0xec, 0xff, 0xea, 0xff, 0x84, 0xff, 0x84, 0xff, 0x28, 0xff, 0x24, 0xff, + 0xcc, 0xfe, 0xcc, 0xfe, 0x7d, 0xfe, 0x7c, 0xfe, 0x39, 0xfe, 0x38, 0xfe, + 0xfc, 0xfd, 0xfc, 0xfd, 0xd0, 0xfd, 0xcf, 0xfd, 0xaf, 0xfd, 0xb1, 0xfd, + 0x9e, 0xfd, 0x9c, 0xfd, 0x9a, 0xfd, 0x9a, 0xfd, 0xa4, 0xfd, 0xa3, 0xfd, + 0xbe, 0xfd, 0xbe, 0xfd, 0xe5, 0xfd, 0xe5, 0xfd, 0x17, 0xfe, 0x17, 0xfe, + 0x5a, 0xfe, 0x58, 0xfe, 0xa4, 0xfe, 0xa4, 0xfe, 0xfa, 0xfe, 0xf9, 0xfe, + 0x5b, 0xff, 0x5b, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0x2b, 0x00, 0x2c, 0x00, + 0x98, 0x00, 0x97, 0x00, 0x09, 0x01, 0x0a, 0x01, 0x7b, 0x01, 0x7b, 0x01, + 0xeb, 0x01, 0xea, 0x01, 0x57, 0x02, 0x57, 0x02, 0xbf, 0x02, 0xc0, 0x02, + 0x22, 0x03, 0x22, 0x03, 0x7c, 0x03, 0x7c, 0x03, 0xcc, 0x03, 0xcd, 0x03, + 0x15, 0x04, 0x15, 0x04, 0x50, 0x04, 0x50, 0x04, 0x82, 0x04, 0x82, 0x04, + 0xa6, 0x04, 0xa7, 0x04, 0xc1, 0x04, 0xc1, 0x04, 0xce, 0x04, 0xd0, 0x04, + 0xd2, 0x04, 0xd2, 0x04, 0xcb, 0x04, 0xcb, 0x04, 0xb8, 0x04, 0xb8, 0x04, + 0x9c, 0x04, 0x9e, 0x04, 0x7b, 0x04, 0x7a, 0x04, 0x51, 0x04, 0x53, 0x04, + 0x21, 0x04, 0x20, 0x04, 0xee, 0x03, 0xed, 0x03, 0xb6, 0x03, 0xb6, 0x03, + 0x82, 0x03, 0x80, 0x03, 0x48, 0x03, 0x49, 0x03, 0x16, 0x03, 0x15, 0x03, + 0xe4, 0x02, 0xe4, 0x02, 0xba, 0x02, 0xb8, 0x02, 0x94, 0x02, 0x95, 0x02, + 0x76, 0x02, 0x74, 0x02, 0x60, 0x02, 0x60, 0x02, 0x53, 0x02, 0x51, 0x02, + 0x4f, 0x02, 0x4e, 0x02, 0x54, 0x02, 0x54, 0x02, 0x63, 0x02, 0x64, 0x02, + 0x7e, 0x02, 0x7d, 0x02, 0x9f, 0x02, 0x9d, 0x02, 0xc9, 0x02, 0xca, 0x02, + 0xfc, 0x02, 0xfb, 0x02, 0x33, 0x03, 0x33, 0x03, 0x72, 0x03, 0x71, 0x03, + 0xb2, 0x03, 0xb1, 0x03, 0xf5, 0x03, 0xf5, 0x03, 0x3c, 0x04, 0x3c, 0x04, + 0x7f, 0x04, 0x7e, 0x04, 0xc2, 0x04, 0xc2, 0x04, 0xff, 0x04, 0xff, 0x04, + 0x38, 0x05, 0x37, 0x05, 0x68, 0x05, 0x69, 0x05, 0x94, 0x05, 0x91, 0x05, + 0xaf, 0x05, 0xb0, 0x05, 0xc2, 0x05, 0xc1, 0x05, 0xc7, 0x05, 0xc8, 0x05, + 0xc1, 0x05, 0xc0, 0x05, 0xab, 0x05, 0xab, 0x05, 0x88, 0x05, 0x86, 0x05, + 0x54, 0x05, 0x55, 0x05, 0x12, 0x05, 0x11, 0x05, 0xc3, 0x04, 0xc3, 0x04, + 0x64, 0x04, 0x63, 0x04, 0xfa, 0x03, 0xfa, 0x03, 0x80, 0x03, 0x81, 0x03, + 0x01, 0x03, 0x00, 0x03, 0x73, 0x02, 0x73, 0x02, 0xdf, 0x01, 0xdf, 0x01, + 0x45, 0x01, 0x43, 0x01, 0xa7, 0x00, 0xa7, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x64, 0xff, 0x65, 0xff, 0xc3, 0xfe, 0xc2, 0xfe, 0x26, 0xfe, 0x26, 0xfe, + 0x90, 0xfd, 0x8f, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0x74, 0xfc, 0x73, 0xfc, + 0xf7, 0xfb, 0xf8, 0xfb, 0x81, 0xfb, 0x80, 0xfb, 0x1e, 0xfb, 0x1d, 0xfb, + 0xc2, 0xfa, 0xc2, 0xfa, 0x78, 0xfa, 0x77, 0xfa, 0x3c, 0xfa, 0x3c, 0xfa, + 0x0d, 0xfa, 0x0c, 0xfa, 0xee, 0xf9, 0xed, 0xf9, 0xdd, 0xf9, 0xdc, 0xf9, + 0xd9, 0xf9, 0xd9, 0xf9, 0xe5, 0xf9, 0xe4, 0xf9, 0xfb, 0xf9, 0xfa, 0xf9, + 0x1f, 0xfa, 0x1d, 0xfa, 0x4a, 0xfa, 0x4b, 0xfa, 0x81, 0xfa, 0x7e, 0xfa, + 0xba, 0xfa, 0xbb, 0xfa, 0xfd, 0xfa, 0xfb, 0xfa, 0x42, 0xfb, 0x43, 0xfb, + 0x89, 0xfb, 0x88, 0xfb, 0xd1, 0xfb, 0xd0, 0xfb, 0x16, 0xfc, 0x16, 0xfc, + 0x58, 0xfc, 0x57, 0xfc, 0x99, 0xfc, 0x97, 0xfc, 0xcd, 0xfc, 0xcf, 0xfc, + 0x02, 0xfd, 0xff, 0xfc, 0x28, 0xfd, 0x29, 0xfd, 0x48, 0xfd, 0x47, 0xfd, + 0x5f, 0xfd, 0x5f, 0xfd, 0x6a, 0xfd, 0x68, 0xfd, 0x6d, 0xfd, 0x6c, 0xfd, + 0x65, 0xfd, 0x65, 0xfd, 0x55, 0xfd, 0x52, 0xfd, 0x39, 0xfd, 0x3b, 0xfd, + 0x17, 0xfd, 0x15, 0xfd, 0xec, 0xfc, 0xec, 0xfc, 0xbd, 0xfc, 0xbd, 0xfc, + 0x88, 0xfc, 0x87, 0xfc, 0x50, 0xfc, 0x51, 0xfc, 0x17, 0xfc, 0x14, 0xfc, + 0xda, 0xfb, 0xdc, 0xfb, 0xa2, 0xfb, 0xa0, 0xfb, 0x6c, 0xfb, 0x6c, 0xfb, + 0x3b, 0xfb, 0x3a, 0xfb, 0x0f, 0xfb, 0x0f, 0xfb, 0xea, 0xfa, 0xea, 0xfa, + 0xd0, 0xfa, 0xd0, 0xfa, 0xbf, 0xfa, 0xbd, 0xfa, 0xb8, 0xfa, 0xb9, 0xfa, + 0xbf, 0xfa, 0xbe, 0xfa, 0xcf, 0xfa, 0xcf, 0xfa, 0xf0, 0xfa, 0xef, 0xfa, + 0x1c, 0xfb, 0x1b, 0xfb, 0x54, 0xfb, 0x53, 0xfb, 0x99, 0xfb, 0x98, 0xfb, + 0xe9, 0xfb, 0xeb, 0xfb, 0x48, 0xfc, 0x46, 0xfc, 0xac, 0xfc, 0xad, 0xfc, + 0x1b, 0xfd, 0x1a, 0xfd, 0x92, 0xfd, 0x92, 0xfd, 0x0c, 0xfe, 0x0d, 0xfe, + 0x8e, 0xfe, 0x8d, 0xfe, 0x0f, 0xff, 0x10, 0xff, 0x93, 0xff, 0x92, 0xff, + 0x13, 0x00, 0x12, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x07, 0x01, 0x08, 0x01, + 0x77, 0x01, 0x77, 0x01, 0xdd, 0x01, 0xdd, 0x01, 0x3b, 0x02, 0x3c, 0x02, + 0x8b, 0x02, 0x8b, 0x02, 0xd1, 0x02, 0xd1, 0x02, 0x0a, 0x03, 0x08, 0x03, + 0x31, 0x03, 0x31, 0x03, 0x4d, 0x03, 0x4c, 0x03, 0x58, 0x03, 0x57, 0x03, + 0x56, 0x03, 0x56, 0x03, 0x44, 0x03, 0x43, 0x03, 0x25, 0x03, 0x23, 0x03, + 0xf9, 0x02, 0xf9, 0x02, 0xc0, 0x02, 0xbf, 0x02, 0x7d, 0x02, 0x7e, 0x02, + 0x2f, 0x02, 0x2d, 0x02, 0xda, 0x01, 0xd9, 0x01, 0x7e, 0x01, 0x7e, 0x01, + 0x1c, 0x01, 0x1c, 0x01, 0xb9, 0x00, 0xb8, 0x00, 0x57, 0x00, 0x55, 0x00, + 0xf2, 0xff, 0xf2, 0xff, 0x93, 0xff, 0x92, 0xff, 0x35, 0xff, 0x35, 0xff, + 0xe1, 0xfe, 0xe1, 0xfe, 0x93, 0xfe, 0x94, 0xfe, 0x52, 0xfe, 0x4f, 0xfe, + 0x17, 0xfe, 0x17, 0xfe, 0xeb, 0xfd, 0xe8, 0xfd, 0xc8, 0xfd, 0xc9, 0xfd, + 0xb6, 0xfd, 0xb3, 0xfd, 0xae, 0xfd, 0xae, 0xfd, 0xb8, 0xfd, 0xb7, 0xfd, + 0xcb, 0xfd, 0xc8, 0xfd, 0xed, 0xfd, 0xef, 0xfd, 0x1f, 0xfe, 0x1b, 0xfe, + 0x56, 0xfe, 0x57, 0xfe, 0xa1, 0xfe, 0x9d, 0xfe, 0xea, 0xfe, 0xea, 0xfe, + 0x46, 0xff, 0x45, 0xff, 0xa2, 0xff, 0xa1, 0xff, 0x06, 0x00, 0x05, 0x00, + 0x6c, 0x00, 0x6b, 0x00, 0xd4, 0x00, 0xd3, 0x00, 0x3f, 0x01, 0x3d, 0x01, + 0xa4, 0x01, 0xa3, 0x01, 0x08, 0x02, 0x06, 0x02, 0x69, 0x02, 0x69, 0x02, + 0xbf, 0x02, 0xbe, 0x02, 0x12, 0x03, 0x0f, 0x03, 0x5a, 0x03, 0x5c, 0x03, + 0x9b, 0x03, 0x98, 0x03, 0xce, 0x03, 0xd0, 0x03, 0xfa, 0x03, 0xf8, 0x03, + 0x17, 0x04, 0x1a, 0x04, 0x2e, 0x04, 0x2d, 0x04, 0x35, 0x04, 0x34, 0x04, + 0x33, 0x04, 0x34, 0x04, 0x29, 0x04, 0x28, 0x04, 0x14, 0x04, 0x15, 0x04, + 0xf7, 0x03, 0xf6, 0x03, 0xd3, 0x03, 0xd4, 0x03, 0xa9, 0x03, 0xa8, 0x03, + 0x7b, 0x03, 0x7d, 0x03, 0x4c, 0x03, 0x4a, 0x03, 0x16, 0x03, 0x17, 0x03, + 0xe5, 0x02, 0xe6, 0x02, 0xb8, 0x02, 0xb6, 0x02, 0x88, 0x02, 0x8a, 0x02, + 0x63, 0x02, 0x62, 0x02, 0x40, 0x02, 0x43, 0x02, 0x27, 0x02, 0x27, 0x02, + 0x15, 0x02, 0x17, 0x02, 0x0d, 0x02, 0x0d, 0x02, 0x0d, 0x02, 0x0e, 0x02, + 0x1a, 0x02, 0x1b, 0x02, 0x32, 0x02, 0x31, 0x02, 0x50, 0x02, 0x51, 0x02, + 0x7a, 0x02, 0x7b, 0x02, 0xae, 0x02, 0xaf, 0x02, 0xeb, 0x02, 0xeb, 0x02, + 0x2f, 0x03, 0x30, 0x03, 0x79, 0x03, 0x79, 0x03, 0xca, 0x03, 0xcc, 0x03, + 0x1d, 0x04, 0x1c, 0x04, 0x75, 0x04, 0x75, 0x04, 0xc8, 0x04, 0xca, 0x04, + 0x20, 0x05, 0x20, 0x05, 0x70, 0x05, 0x6f, 0x05, 0xbd, 0x05, 0xbe, 0x05, + 0x02, 0x06, 0x03, 0x06, 0x3f, 0x06, 0x3e, 0x06, 0x74, 0x06, 0x74, 0x06, + 0x9a, 0x06, 0x9c, 0x06, 0xb6, 0x06, 0xb6, 0x06, 0xc3, 0x06, 0xc2, 0x06, + 0xc2, 0x06, 0xbf, 0x06, 0xae, 0x06, 0xad, 0x06, 0x8d, 0x06, 0x8b, 0x06, + 0x58, 0x06, 0x58, 0x06, 0x15, 0x06, 0x15, 0x06, 0xc2, 0x05, 0xc1, 0x05, + 0x5e, 0x05, 0x5e, 0x05, 0xee, 0x04, 0xee, 0x04, 0x6d, 0x04, 0x6c, 0x04, + 0xe1, 0x03, 0xe2, 0x03, 0x4d, 0x03, 0x4b, 0x03, 0xaa, 0x02, 0xab, 0x02, + 0x05, 0x02, 0x04, 0x02, 0x59, 0x01, 0x58, 0x01, 0xa9, 0x00, 0xa9, 0x00, + 0xfa, 0xff, 0xf9, 0xff, 0x48, 0xff, 0x47, 0xff, 0x9e, 0xfe, 0x9d, 0xfe, + 0xf5, 0xfd, 0xf4, 0xfd, 0x54, 0xfd, 0x53, 0xfd, 0xbb, 0xfc, 0xba, 0xfc, + 0x2c, 0xfc, 0x2c, 0xfc, 0xac, 0xfb, 0xab, 0xfb, 0x34, 0xfb, 0x33, 0xfb, + 0xcd, 0xfa, 0xcc, 0xfa, 0x73, 0xfa, 0x73, 0xfa, 0x29, 0xfa, 0x29, 0xfa, + 0xef, 0xf9, 0xee, 0xf9, 0xc6, 0xf9, 0xc6, 0xf9, 0xac, 0xf9, 0xab, 0xf9, + 0xa2, 0xf9, 0xa1, 0xf9, 0xa5, 0xf9, 0xa5, 0xf9, 0xb7, 0xf9, 0xb6, 0xf9, + 0xd3, 0xf9, 0xd3, 0xf9, 0xff, 0xf9, 0xfd, 0xf9, 0x2e, 0xfa, 0x2f, 0xfa, + 0x6c, 0xfa, 0x6c, 0xfa, 0xae, 0xfa, 0xad, 0xfa, 0xf4, 0xfa, 0xf5, 0xfa, + 0x3e, 0xfb, 0x3e, 0xfb, 0x8a, 0xfb, 0x89, 0xfb, 0xd4, 0xfb, 0xd5, 0xfb, + 0x1f, 0xfc, 0x1d, 0xfc, 0x62, 0xfc, 0x63, 0xfc, 0xa3, 0xfc, 0xa2, 0xfc, + 0xdc, 0xfc, 0xdd, 0xfc, 0x0f, 0xfd, 0x0d, 0xfd, 0x3b, 0xfd, 0x39, 0xfd, + 0x59, 0xfd, 0x59, 0xfd, 0x72, 0xfd, 0x71, 0xfd, 0x7d, 0xfd, 0x7d, 0xfd, + 0x81, 0xfd, 0x80, 0xfd, 0x7a, 0xfd, 0x7a, 0xfd, 0x6a, 0xfd, 0x68, 0xfd, + 0x52, 0xfd, 0x53, 0xfd, 0x30, 0xfd, 0x2e, 0xfd, 0x0a, 0xfd, 0x0a, 0xfd, + 0xdb, 0xfc, 0xda, 0xfc, 0xab, 0xfc, 0xaa, 0xfc, 0x77, 0xfc, 0x76, 0xfc, + 0x41, 0xfc, 0x40, 0xfc, 0x0e, 0xfc, 0x0e, 0xfc, 0xdb, 0xfb, 0xda, 0xfb, + 0xab, 0xfb, 0xac, 0xfb, 0x84, 0xfb, 0x82, 0xfb, 0x5c, 0xfb, 0x5d, 0xfb, + 0x46, 0xfb, 0x44, 0xfb, 0x2e, 0xfb, 0x2f, 0xfb, 0x29, 0xfb, 0x28, 0xfb, + 0x29, 0xfb, 0x2a, 0xfb, 0x39, 0xfb, 0x38, 0xfb, 0x52, 0xfb, 0x53, 0xfb, + 0x79, 0xfb, 0x78, 0xfb, 0xac, 0xfb, 0xab, 0xfb, 0xea, 0xfb, 0xea, 0xfb, + 0x34, 0xfc, 0x32, 0xfc, 0x86, 0xfc, 0x89, 0xfc, 0xe7, 0xfc, 0xe4, 0xfc, + 0x4a, 0xfd, 0x4b, 0xfd, 0xb7, 0xfd, 0xb7, 0xfd, 0x2c, 0xfe, 0x2a, 0xfe, + 0x9f, 0xfe, 0xa0, 0xfe, 0x18, 0xff, 0x18, 0xff, 0x92, 0xff, 0x8f, 0xff, + 0x04, 0x00, 0x07, 0x00, 0x7a, 0x00, 0x78, 0x00, 0xe6, 0x00, 0xe6, 0x00, + 0x4a, 0x01, 0x4b, 0x01, 0xa9, 0x01, 0xa7, 0x01, 0xfa, 0x01, 0xfa, 0x01, + 0x42, 0x02, 0x42, 0x02, 0x7d, 0x02, 0x7a, 0x02, 0xa8, 0x02, 0xab, 0x02, + 0xca, 0x02, 0xc6, 0x02, 0xd7, 0x02, 0xda, 0x02, 0xdc, 0x02, 0xda, 0x02, + 0xcf, 0x02, 0xce, 0x02, 0xb2, 0x02, 0xb1, 0x02, 0x89, 0x02, 0x89, 0x02, + 0x53, 0x02, 0x53, 0x02, 0x13, 0x02, 0x13, 0x02, 0xc7, 0x01, 0xc7, 0x01, + 0x72, 0x01, 0x70, 0x01, 0x15, 0x01, 0x16, 0x01, 0xb4, 0x00, 0xb1, 0x00, + 0x4c, 0x00, 0x4d, 0x00, 0xe5, 0xff, 0xe4, 0xff, 0x7e, 0xff, 0x7d, 0xff, + 0x16, 0xff, 0x15, 0xff, 0xb5, 0xfe, 0xb6, 0xfe, 0x5a, 0xfe, 0x57, 0xfe, + 0x04, 0xfe, 0x04, 0xfe, 0xba, 0xfd, 0xb9, 0xfd, 0x76, 0xfd, 0x76, 0xfd, + 0x44, 0xfd, 0x44, 0xfd, 0x1c, 0xfd, 0x1a, 0xfd, 0x01, 0xfd, 0x02, 0xfd, + 0xf8, 0xfc, 0xf7, 0xfc, 0xf8, 0xfc, 0xf8, 0xfc, 0x0e, 0xfd, 0x0e, 0xfd, + 0x2f, 0xfd, 0x2d, 0xfd, 0x5f, 0xfd, 0x5f, 0xfd, 0x9d, 0xfd, 0x9d, 0xfd, + 0xe5, 0xfd, 0xe4, 0xfd, 0x3c, 0xfe, 0x3c, 0xfe, 0x9a, 0xfe, 0x9a, 0xfe, + 0x02, 0xff, 0x02, 0xff, 0x74, 0xff, 0x73, 0xff, 0xe6, 0xff, 0xe5, 0xff, + 0x62, 0x00, 0x61, 0x00, 0xd8, 0x00, 0xd8, 0x00, 0x52, 0x01, 0x51, 0x01, + 0xca, 0x01, 0xca, 0x01, 0x3b, 0x02, 0x3b, 0x02, 0xab, 0x02, 0xa9, 0x02, + 0x0e, 0x03, 0x0e, 0x03, 0x6c, 0x03, 0x6a, 0x03, 0xbf, 0x03, 0xc0, 0x03, + 0x07, 0x04, 0x06, 0x04, 0x45, 0x04, 0x43, 0x04, 0x73, 0x04, 0x73, 0x04, + 0x97, 0x04, 0x96, 0x04, 0xac, 0x04, 0xad, 0x04, 0xb7, 0x04, 0xb7, 0x04, + 0xb5, 0x04, 0xb6, 0x04, 0xa4, 0x04, 0xa4, 0x04, 0x8e, 0x04, 0x8d, 0x04, + 0x69, 0x04, 0x6b, 0x04, 0x3e, 0x04, 0x3d, 0x04, 0x0c, 0x04, 0x0e, 0x04, + 0xd4, 0x03, 0xd3, 0x03, 0x98, 0x03, 0x99, 0x03, 0x58, 0x03, 0x59, 0x03, + 0x1b, 0x03, 0x1b, 0x03, 0xdd, 0x02, 0xdd, 0x02, 0xa3, 0x02, 0xa4, 0x02, + 0x6c, 0x02, 0x6b, 0x02, 0x3f, 0x02, 0x3f, 0x02, 0x13, 0x02, 0x15, 0x02, + 0xf9, 0x01, 0xf7, 0x01, 0xe3, 0x01, 0xe3, 0x01, 0xd3, 0x01, 0xd5, 0x01, + 0xd8, 0x01, 0xd6, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xf8, 0x01, 0xfa, 0x01, + 0x1b, 0x02, 0x1b, 0x02, 0x47, 0x02, 0x47, 0x02, 0x7f, 0x02, 0x80, 0x02, + 0xc1, 0x02, 0xc1, 0x02, 0x0b, 0x03, 0x0b, 0x03, 0x5a, 0x03, 0x5c, 0x03, + 0xb1, 0x03, 0xaf, 0x03, 0x07, 0x04, 0x09, 0x04, 0x65, 0x04, 0x62, 0x04, + 0xbf, 0x04, 0xc1, 0x04, 0x1a, 0x05, 0x19, 0x05, 0x71, 0x05, 0x6f, 0x05, + 0xbf, 0x05, 0xc0, 0x05, 0x0b, 0x06, 0x0a, 0x06, 0x48, 0x06, 0x47, 0x06, + 0x80, 0x06, 0x80, 0x06, 0xa6, 0x06, 0xa7, 0x06, 0xc3, 0x06, 0xc2, 0x06, + 0xce, 0x06, 0xcf, 0x06, 0xcc, 0x06, 0xc9, 0x06, 0xb7, 0x06, 0xb8, 0x06, + 0x94, 0x06, 0x93, 0x06, 0x61, 0x06, 0x60, 0x06, 0x18, 0x06, 0x1a, 0x06, + 0xc7, 0x05, 0xc5, 0x05, 0x60, 0x05, 0x60, 0x05, 0xee, 0x04, 0xed, 0x04, + 0x6e, 0x04, 0x6e, 0x04, 0xe0, 0x03, 0xe0, 0x03, 0x4c, 0x03, 0x4c, 0x03, + 0xab, 0x02, 0xa9, 0x02, 0x08, 0x02, 0x09, 0x02, 0x5f, 0x01, 0x5e, 0x01, + 0xb4, 0x00, 0xb3, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x5e, 0xff, 0x5e, 0xff, + 0xba, 0xfe, 0xba, 0xfe, 0x19, 0xfe, 0x1a, 0xfe, 0x81, 0xfd, 0x83, 0xfd, + 0xf3, 0xfc, 0xf4, 0xfc, 0x70, 0xfc, 0x70, 0xfc, 0xf8, 0xfb, 0xf7, 0xfb, + 0x8e, 0xfb, 0x8f, 0xfb, 0x32, 0xfb, 0x33, 0xfb, 0xe5, 0xfa, 0xe5, 0xfa, + 0xab, 0xfa, 0xa9, 0xfa, 0x77, 0xfa, 0x78, 0xfa, 0x5d, 0xfa, 0x5c, 0xfa, + 0x48, 0xfa, 0x4a, 0xfa, 0x49, 0xfa, 0x4a, 0xfa, 0x54, 0xfa, 0x54, 0xfa, + 0x6b, 0xfa, 0x6a, 0xfa, 0x8b, 0xfa, 0x8d, 0xfa, 0xb9, 0xfa, 0xb7, 0xfa, + 0xeb, 0xfa, 0xeb, 0xfa, 0x24, 0xfb, 0x24, 0xfb, 0x65, 0xfb, 0x63, 0xfb, + 0xa2, 0xfb, 0xa3, 0xfb, 0xe9, 0xfb, 0xe7, 0xfb, 0x26, 0xfc, 0x26, 0xfc, + 0x67, 0xfc, 0x65, 0xfc, 0xa1, 0xfc, 0xa3, 0xfc, 0xd6, 0xfc, 0xd4, 0xfc, + 0x05, 0xfd, 0x06, 0xfd, 0x2c, 0xfd, 0x2a, 0xfd, 0x49, 0xfd, 0x4a, 0xfd, + 0x5f, 0xfd, 0x5d, 0xfd, 0x69, 0xfd, 0x68, 0xfd, 0x69, 0xfd, 0x68, 0xfd, + 0x60, 0xfd, 0x5f, 0xfd, 0x4c, 0xfd, 0x4e, 0xfd, 0x31, 0xfd, 0x2f, 0xfd, + 0x0c, 0xfd, 0x0d, 0xfd, 0xe0, 0xfc, 0xdf, 0xfc, 0xae, 0xfc, 0xae, 0xfc, + 0x77, 0xfc, 0x77, 0xfc, 0x3c, 0xfc, 0x39, 0xfc, 0xfd, 0xfb, 0xff, 0xfb, + 0xc2, 0xfb, 0xc0, 0xfb, 0x86, 0xfb, 0x85, 0xfb, 0x4d, 0xfb, 0x4e, 0xfb, + 0x1a, 0xfb, 0x18, 0xfb, 0xeb, 0xfa, 0xeb, 0xfa, 0xc6, 0xfa, 0xc6, 0xfa, + 0xaa, 0xfa, 0xa7, 0xfa, 0x97, 0xfa, 0x98, 0xfa, 0x91, 0xfa, 0x8f, 0xfa, + 0x97, 0xfa, 0x95, 0xfa, 0xaa, 0xfa, 0xaa, 0xfa, 0xca, 0xfa, 0xc7, 0xfa, + 0xf6, 0xfa, 0xf5, 0xfa, 0x32, 0xfb, 0x31, 0xfb, 0x79, 0xfb, 0x77, 0xfb, + 0xce, 0xfb, 0xce, 0xfb, 0x2e, 0xfc, 0x2c, 0xfc, 0x97, 0xfc, 0x97, 0xfc, + 0x0d, 0xfd, 0x0b, 0xfd, 0x86, 0xfd, 0x85, 0xfd, 0x08, 0xfe, 0x07, 0xfe, + 0x8c, 0xfe, 0x8b, 0xfe, 0x12, 0xff, 0x11, 0xff, 0x99, 0xff, 0x99, 0xff, + 0x1e, 0x00, 0x1e, 0x00, 0x9d, 0x00, 0x9b, 0x00, 0x19, 0x01, 0x18, 0x01, + 0x89, 0x01, 0x88, 0x01, 0xf1, 0x01, 0xf1, 0x01, 0x4d, 0x02, 0x4c, 0x02, + 0x9d, 0x02, 0x9b, 0x02, 0xde, 0x02, 0xe0, 0x02, 0x13, 0x03, 0x0f, 0x03, + 0x34, 0x03, 0x36, 0x03, 0x48, 0x03, 0x45, 0x03, 0x4a, 0x03, 0x49, 0x03, + 0x3b, 0x03, 0x3a, 0x03, 0x1e, 0x03, 0x1c, 0x03, 0xf0, 0x02, 0xf0, 0x02, + 0xb5, 0x02, 0xb3, 0x02, 0x6b, 0x02, 0x6b, 0x02, 0x13, 0x02, 0x12, 0x02, + 0xb6, 0x01, 0xb5, 0x01, 0x4c, 0x01, 0x4c, 0x01, 0xdc, 0x00, 0xda, 0x00, + 0x68, 0x00, 0x66, 0x00, 0xec, 0xff, 0xec, 0xff, 0x74, 0xff, 0x74, 0xff, + 0xfb, 0xfe, 0xfa, 0xfe, 0x86, 0xfe, 0x84, 0xfe, 0x17, 0xfe, 0x16, 0xfe, + 0xad, 0xfd, 0xaa, 0xfd, 0x51, 0xfd, 0x4f, 0xfd, 0xfb, 0xfc, 0xfa, 0xfc, + 0xb4, 0xfc, 0xb3, 0xfc, 0x7c, 0xfc, 0x7b, 0xfc, 0x51, 0xfc, 0x50, 0xfc, + 0x38, 0xfc, 0x36, 0xfc, 0x2d, 0xfc, 0x2d, 0xfc, 0x34, 0xfc, 0x33, 0xfc, + 0x49, 0xfc, 0x49, 0xfc, 0x70, 0xfc, 0x70, 0xfc, 0xa4, 0xfc, 0xa5, 0xfc, + 0xeb, 0xfc, 0xe9, 0xfc, 0x3a, 0xfd, 0x3a, 0xfd, 0x9b, 0xfd, 0x97, 0xfd, + 0xfe, 0xfd, 0x00, 0xfe, 0x71, 0xfe, 0x6e, 0xfe, 0xe9, 0xfe, 0xe9, 0xfe, + 0x64, 0xff, 0x62, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0x63, 0x00, 0x64, 0x00, + 0xe8, 0x00, 0xe5, 0x00, 0x64, 0x01, 0x64, 0x01, 0xde, 0x01, 0xdb, 0x01, + 0x4e, 0x02, 0x50, 0x02, 0xba, 0x02, 0xb8, 0x02, 0x1b, 0x03, 0x1a, 0x03, + 0x74, 0x03, 0x73, 0x03, 0xbc, 0x03, 0xbb, 0x03, 0xfe, 0x03, 0xfd, 0x03, + 0x2d, 0x04, 0x2e, 0x04, 0x55, 0x04, 0x54, 0x04, 0x6d, 0x04, 0x6d, 0x04, + 0x79, 0x04, 0x78, 0x04, 0x7a, 0x04, 0x7a, 0x04, 0x70, 0x04, 0x6e, 0x04, + 0x5a, 0x04, 0x5a, 0x04, 0x3e, 0x04, 0x3c, 0x04, 0x16, 0x04, 0x16, 0x04, + 0xeb, 0x03, 0xe9, 0x03, 0xb9, 0x03, 0xb9, 0x03, 0x86, 0x03, 0x85, 0x03, + 0x4f, 0x03, 0x50, 0x03, 0x1e, 0x03, 0x1d, 0x03, 0xec, 0x02, 0xeb, 0x02, + 0xbe, 0x02, 0xbe, 0x02, 0x96, 0x02, 0x94, 0x02, 0x74, 0x02, 0x74, 0x02, + 0x5d, 0x02, 0x5b, 0x02, 0x4d, 0x02, 0x4b, 0x02, 0x47, 0x02, 0x48, 0x02, + 0x4c, 0x02, 0x4b, 0x02, 0x5c, 0x02, 0x59, 0x02, 0x77, 0x02, 0x76, 0x02, + 0x9a, 0x02, 0x98, 0x02, 0xca, 0x02, 0xca, 0x02, 0x05, 0x03, 0x03, 0x03, + 0x45, 0x03, 0x46, 0x03, 0x91, 0x03, 0x90, 0x03, 0xe1, 0x03, 0xe1, 0x03, + 0x35, 0x04, 0x33, 0x04, 0x8f, 0x04, 0x90, 0x04, 0xe7, 0x04, 0xe7, 0x04, + 0x42, 0x05, 0x40, 0x05, 0x99, 0x05, 0x9a, 0x05, 0xea, 0x05, 0xe9, 0x05, + 0x38, 0x06, 0x39, 0x06, 0x7b, 0x06, 0x7a, 0x06, 0xb7, 0x06, 0xb6, 0x06, + 0xe7, 0x06, 0xe8, 0x06, 0x09, 0x07, 0x08, 0x07, 0x21, 0x07, 0x1e, 0x07, + 0x22, 0x07, 0x22, 0x07, 0x1b, 0x07, 0x18, 0x07, 0xfe, 0x06, 0xfd, 0x06, + 0xd2, 0x06, 0xd1, 0x06, 0x97, 0x06, 0x93, 0x06, 0x46, 0x06, 0x45, 0x06, + 0xea, 0x05, 0xe7, 0x05, 0x7c, 0x05, 0x7a, 0x05, 0x00, 0x05, 0x00, 0x05, + 0x79, 0x04, 0x75, 0x04, 0xe4, 0x03, 0xe3, 0x03, 0x48, 0x03, 0x46, 0x03, + 0xa0, 0x02, 0x9f, 0x02, 0xfb, 0x01, 0xf9, 0x01, 0x48, 0x01, 0x47, 0x01, + 0x9c, 0x00, 0x9a, 0x00, 0xec, 0xff, 0xeb, 0xff, 0x41, 0xff, 0x40, 0xff, + 0x9c, 0xfe, 0x9b, 0xfe, 0xfc, 0xfd, 0xfb, 0xfd, 0x67, 0xfd, 0x65, 0xfd, + 0xda, 0xfc, 0xda, 0xfc, 0x5b, 0xfc, 0x59, 0xfc, 0xea, 0xfb, 0xea, 0xfb, + 0x87, 0xfb, 0x86, 0xfb, 0x34, 0xfb, 0x33, 0xfb, 0xef, 0xfa, 0xef, 0xfa, + 0xbb, 0xfa, 0xbb, 0xfa, 0x99, 0xfa, 0x98, 0xfa, 0x84, 0xfa, 0x83, 0xfa, + 0x82, 0xfa, 0x81, 0xfa, 0x8c, 0xfa, 0x8c, 0xfa, 0xa5, 0xfa, 0xa4, 0xfa, + 0xc8, 0xfa, 0xc9, 0xfa, 0xfa, 0xfa, 0xf8, 0xfa, 0x32, 0xfb, 0x33, 0xfb, + 0x74, 0xfb, 0x72, 0xfb, 0xba, 0xfb, 0xb9, 0xfb, 0x06, 0xfc, 0x08, 0xfc, + 0x55, 0xfc, 0x52, 0xfc, 0x9f, 0xfc, 0xa1, 0xfc, 0xec, 0xfc, 0xea, 0xfc, + 0x33, 0xfd, 0x34, 0xfd, 0x78, 0xfd, 0x76, 0xfd, 0xb2, 0xfd, 0xb3, 0xfd, + 0xe8, 0xfd, 0xe6, 0xfd, 0x0f, 0xfe, 0x0d, 0xfe, 0x31, 0xfe, 0x30, 0xfe, + 0x44, 0xfe, 0x44, 0xfe, 0x4f, 0xfe, 0x4d, 0xfe, 0x4c, 0xfe, 0x4c, 0xfe, + 0x3d, 0xfe, 0x3b, 0xfe, 0x25, 0xfe, 0x24, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, + 0xd1, 0xfd, 0xd1, 0xfd, 0x9a, 0xfd, 0x9a, 0xfd, 0x5b, 0xfd, 0x5b, 0xfd, + 0x17, 0xfd, 0x15, 0xfd, 0xcb, 0xfc, 0xcb, 0xfc, 0x7f, 0xfc, 0x7d, 0xfc, + 0x31, 0xfc, 0x31, 0xfc, 0xe4, 0xfb, 0xe3, 0xfb, 0x98, 0xfb, 0x97, 0xfb, + 0x53, 0xfb, 0x51, 0xfb, 0x13, 0xfb, 0x13, 0xfb, 0xda, 0xfa, 0xd8, 0xfa, + 0xaa, 0xfa, 0xaa, 0xfa, 0x87, 0xfa, 0x85, 0xfa, 0x6e, 0xfa, 0x6c, 0xfa, + 0x63, 0xfa, 0x5f, 0xfa, 0x63, 0xfa, 0x63, 0xfa, 0x73, 0xfa, 0x71, 0xfa, + 0x92, 0xfa, 0x93, 0xfa, 0xbe, 0xfa, 0xbc, 0xfa, 0xfa, 0xfa, 0xf9, 0xfa, + 0x41, 0xfb, 0x40, 0xfb, 0x96, 0xfb, 0x96, 0xfb, 0xf6, 0xfb, 0xf5, 0xfb, + 0x62, 0xfc, 0x62, 0xfc, 0xd6, 0xfc, 0xd5, 0xfc, 0x53, 0xfd, 0x52, 0xfd, + 0xd1, 0xfd, 0xd2, 0xfd, 0x59, 0xfe, 0x57, 0xfe, 0xdc, 0xfe, 0xdb, 0xfe, + 0x62, 0xff, 0x61, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0x5f, 0x00, 0x5d, 0x00, + 0xd7, 0x00, 0xd6, 0x00, 0x40, 0x01, 0x3f, 0x01, 0xa5, 0x01, 0xa4, 0x01, + 0xfa, 0x01, 0xfa, 0x01, 0x42, 0x02, 0x3f, 0x02, 0x7d, 0x02, 0x7e, 0x02, + 0xa7, 0x02, 0xa5, 0x02, 0xc4, 0x02, 0xc4, 0x02, 0xcf, 0x02, 0xcd, 0x02, + 0xc7, 0x02, 0xc9, 0x02, 0xb7, 0x02, 0xb5, 0x02, 0x8f, 0x02, 0x90, 0x02, + 0x60, 0x02, 0x61, 0x02, 0x1e, 0x02, 0x1d, 0x02, 0xd3, 0x01, 0xd4, 0x01, + 0x7d, 0x01, 0x7b, 0x01, 0x1d, 0x01, 0x1d, 0x01, 0xb6, 0x00, 0xb6, 0x00, + 0x4c, 0x00, 0x4a, 0x00, 0xda, 0xff, 0xdb, 0xff, 0x6b, 0xff, 0x6a, 0xff, + 0xfa, 0xfe, 0xfa, 0xfe, 0x8e, 0xfe, 0x8d, 0xfe, 0x26, 0xfe, 0x24, 0xfe, + 0xc2, 0xfd, 0xc2, 0xfd, 0x6b, 0xfd, 0x69, 0xfd, 0x1a, 0xfd, 0x1b, 0xfd, + 0xd9, 0xfc, 0xd6, 0xfc, 0xa1, 0xfc, 0xa2, 0xfc, 0x79, 0xfc, 0x78, 0xfc, + 0x62, 0xfc, 0x61, 0xfc, 0x57, 0xfc, 0x55, 0xfc, 0x5e, 0xfc, 0x5c, 0xfc, + 0x74, 0xfc, 0x71, 0xfc, 0x95, 0xfc, 0x94, 0xfc, 0xca, 0xfc, 0xc8, 0xfc, + 0x09, 0xfd, 0x08, 0xfd, 0x55, 0xfd, 0x53, 0xfd, 0xad, 0xfd, 0xad, 0xfd, + 0x10, 0xfe, 0x0d, 0xfe, 0x79, 0xfe, 0x79, 0xfe, 0xe8, 0xfe, 0xe6, 0xfe, + 0x5c, 0xff, 0x5a, 0xff, 0xd1, 0xff, 0xd2, 0xff, 0x4a, 0x00, 0x48, 0x00, + 0xc1, 0x00, 0xbe, 0x00, 0x2f, 0x01, 0x30, 0x01, 0xa1, 0x01, 0x9e, 0x01, + 0x05, 0x02, 0x06, 0x02, 0x65, 0x02, 0x63, 0x02, 0xbb, 0x02, 0xba, 0x02, + 0x05, 0x03, 0x04, 0x03, 0x47, 0x03, 0x46, 0x03, 0x78, 0x03, 0x77, 0x03, + 0xa1, 0x03, 0xa0, 0x03, 0xbb, 0x03, 0xba, 0x03, 0xcb, 0x03, 0xc9, 0x03, + 0xce, 0x03, 0xcd, 0x03, 0xc5, 0x03, 0xc4, 0x03, 0xb4, 0x03, 0xb3, 0x03, + 0x98, 0x03, 0x97, 0x03, 0x75, 0x03, 0x73, 0x03, 0x4a, 0x03, 0x49, 0x03, + 0x1a, 0x03, 0x19, 0x03, 0xe9, 0x02, 0xe7, 0x02, 0xb2, 0x02, 0xb2, 0x02, + 0x81, 0x02, 0x7f, 0x02, 0x4c, 0x02, 0x49, 0x02, 0x1d, 0x02, 0x1d, 0x02, + 0xf4, 0x01, 0xf2, 0x01, 0xd2, 0x01, 0xd1, 0x01, 0xb9, 0x01, 0xb8, 0x01, + 0xa8, 0x01, 0xa7, 0x01, 0xa3, 0x01, 0xa3, 0x01, 0xa8, 0x01, 0xa7, 0x01, + 0xba, 0x01, 0xb9, 0x01, 0xd8, 0x01, 0xd6, 0x01, 0x00, 0x02, 0x01, 0x02, + 0x38, 0x02, 0x36, 0x02, 0x75, 0x02, 0x78, 0x02, 0xc4, 0x02, 0xc1, 0x02, + 0x18, 0x03, 0x17, 0x03, 0x75, 0x03, 0x73, 0x03, 0xd8, 0x03, 0xd8, 0x03, + 0x40, 0x04, 0x3f, 0x04, 0xaa, 0x04, 0xab, 0x04, 0x19, 0x05, 0x17, 0x05, + 0x83, 0x05, 0x84, 0x05, 0xee, 0x05, 0xeb, 0x05, 0x52, 0x06, 0x53, 0x06, + 0xb0, 0x06, 0xb0, 0x06, 0x05, 0x07, 0x04, 0x07, 0x4f, 0x07, 0x4e, 0x07, + 0x8d, 0x07, 0x8c, 0x07, 0xbc, 0x07, 0xbc, 0x07, 0xde, 0x07, 0xdd, 0x07, + 0xec, 0x07, 0xeb, 0x07, 0xec, 0x07, 0xeb, 0x07, 0xd8, 0x07, 0xd7, 0x07, + 0xb2, 0x07, 0xb2, 0x07, 0x7a, 0x07, 0x7a, 0x07, 0x2f, 0x07, 0x2f, 0x07, + 0xd2, 0x06, 0xd3, 0x06, 0x68, 0x06, 0x65, 0x06, 0xe7, 0x05, 0xea, 0x05, + 0x60, 0x05, 0x5c, 0x05, 0xc5, 0x04, 0xc6, 0x04, 0x23, 0x04, 0x22, 0x04, + 0x77, 0x03, 0x76, 0x03, 0xc4, 0x02, 0xc3, 0x02, 0x0c, 0x02, 0x0d, 0x02, + 0x54, 0x01, 0x52, 0x01, 0x97, 0x00, 0x97, 0x00, 0xe3, 0xff, 0xe4, 0xff, + 0x2f, 0xff, 0x2d, 0xff, 0x82, 0xfe, 0x83, 0xfe, 0xdf, 0xfd, 0xdd, 0xfd, + 0x42, 0xfd, 0x45, 0xfd, 0xba, 0xfc, 0xb8, 0xfc, 0x39, 0xfc, 0x38, 0xfc, + 0xc9, 0xfb, 0xc8, 0xfb, 0x6a, 0xfb, 0x69, 0xfb, 0x17, 0xfb, 0x17, 0xfb, + 0xdc, 0xfa, 0xd9, 0xfa, 0xa9, 0xfa, 0xa9, 0xfa, 0x8d, 0xfa, 0x8c, 0xfa, + 0x7e, 0xfa, 0x7d, 0xfa, 0x7f, 0xfa, 0x7f, 0xfa, 0x8d, 0xfa, 0x8e, 0xfa, + 0xad, 0xfa, 0xab, 0xfa, 0xd4, 0xfa, 0xd4, 0xfa, 0x07, 0xfb, 0x06, 0xfb, + 0x42, 0xfb, 0x40, 0xfb, 0x83, 0xfb, 0x84, 0xfb, 0xcc, 0xfb, 0xcb, 0xfb, + 0x17, 0xfc, 0x17, 0xfc, 0x63, 0xfc, 0x61, 0xfc, 0xaf, 0xfc, 0xae, 0xfc, + 0xf6, 0xfc, 0xf5, 0xfc, 0x3d, 0xfd, 0x3b, 0xfd, 0x7b, 0xfd, 0x7a, 0xfd, + 0xb1, 0xfd, 0xb1, 0xfd, 0xe4, 0xfd, 0xe2, 0xfd, 0x06, 0xfe, 0x06, 0xfe, + 0x24, 0xfe, 0x23, 0xfe, 0x36, 0xfe, 0x34, 0xfe, 0x3a, 0xfe, 0x3a, 0xfe, + 0x37, 0xfe, 0x36, 0xfe, 0x25, 0xfe, 0x25, 0xfe, 0x0e, 0xfe, 0x0d, 0xfe, + 0xea, 0xfd, 0xe7, 0xfd, 0xbe, 0xfd, 0xbf, 0xfd, 0x8d, 0xfd, 0x8a, 0xfd, + 0x52, 0xfd, 0x52, 0xfd, 0x16, 0xfd, 0x15, 0xfd, 0xd4, 0xfc, 0xd4, 0xfc, + 0x93, 0xfc, 0x90, 0xfc, 0x4f, 0xfc, 0x4f, 0xfc, 0x12, 0xfc, 0x10, 0xfc, + 0xd4, 0xfb, 0xd5, 0xfb, 0x9f, 0xfb, 0x9e, 0xfb, 0x70, 0xfb, 0x6f, 0xfb, + 0x49, 0xfb, 0x49, 0xfb, 0x2b, 0xfb, 0x2a, 0xfb, 0x19, 0xfb, 0x18, 0xfb, + 0x12, 0xfb, 0x11, 0xfb, 0x16, 0xfb, 0x16, 0xfb, 0x2a, 0xfb, 0x29, 0xfb, + 0x46, 0xfb, 0x46, 0xfb, 0x75, 0xfb, 0x73, 0xfb, 0xaa, 0xfb, 0xa9, 0xfb, + 0xef, 0xfb, 0xee, 0xfb, 0x3e, 0xfc, 0x3e, 0xfc, 0x98, 0xfc, 0x97, 0xfc, + 0xf9, 0xfc, 0xf7, 0xfc, 0x64, 0xfd, 0x61, 0xfd, 0xd1, 0xfd, 0xd1, 0xfd, + 0x46, 0xfe, 0x44, 0xfe, 0xbb, 0xfe, 0xbb, 0xfe, 0x31, 0xff, 0x2e, 0xff, + 0xa4, 0xff, 0xa3, 0xff, 0x15, 0x00, 0x13, 0x00, 0x7f, 0x00, 0x7e, 0x00, + 0xe2, 0x00, 0xdf, 0x00, 0x3b, 0x01, 0x3a, 0x01, 0x89, 0x01, 0x88, 0x01, + 0xcb, 0x01, 0xcb, 0x01, 0x01, 0x02, 0xff, 0x01, 0x27, 0x02, 0x27, 0x02, + 0x42, 0x02, 0x41, 0x02, 0x4a, 0x02, 0x4a, 0x02, 0x47, 0x02, 0x45, 0x02, + 0x30, 0x02, 0x30, 0x02, 0x0f, 0x02, 0x0e, 0x02, 0xdd, 0x01, 0xda, 0x01, + 0x9e, 0x01, 0x9f, 0x01, 0x55, 0x01, 0x51, 0x01, 0x00, 0x01, 0xff, 0x00, + 0x9f, 0x00, 0x9e, 0x00, 0x3c, 0x00, 0x3b, 0x00, 0xcd, 0xff, 0xcc, 0xff, + 0x61, 0xff, 0x60, 0xff, 0xef, 0xfe, 0xee, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, + 0x12, 0xfe, 0x11, 0xfe, 0xa5, 0xfd, 0xa5, 0xfd, 0x46, 0xfd, 0x44, 0xfd, + 0xe8, 0xfc, 0xe9, 0xfc, 0x9a, 0xfc, 0x98, 0xfc, 0x54, 0xfc, 0x54, 0xfc, + 0x1c, 0xfc, 0x1a, 0xfc, 0xf2, 0xfb, 0xf1, 0xfb, 0xd4, 0xfb, 0xd3, 0xfb, + 0xc8, 0xfb, 0xc6, 0xfb, 0xcb, 0xfb, 0xc8, 0xfb, 0xdd, 0xfb, 0xde, 0xfb, + 0x01, 0xfc, 0xfc, 0xfb, 0x32, 0xfc, 0x32, 0xfc, 0x70, 0xfc, 0x6f, 0xfc, + 0xbc, 0xfc, 0xbc, 0xfc, 0x17, 0xfd, 0x15, 0xfd, 0x7a, 0xfd, 0x78, 0xfd, + 0xe6, 0xfd, 0xe5, 0xfd, 0x5c, 0xfe, 0x5b, 0xfe, 0xd4, 0xfe, 0xd2, 0xfe, + 0x51, 0xff, 0x50, 0xff, 0xd1, 0xff, 0xcf, 0xff, 0x4e, 0x00, 0x4d, 0x00, + 0xcc, 0x00, 0xcb, 0x00, 0x44, 0x01, 0x43, 0x01, 0xb6, 0x01, 0xb5, 0x01, + 0x22, 0x02, 0x23, 0x02, 0x84, 0x02, 0x83, 0x02, 0xdd, 0x02, 0xdc, 0x02, + 0x2b, 0x03, 0x2b, 0x03, 0x6c, 0x03, 0x6a, 0x03, 0xa1, 0x03, 0xa2, 0x03, + 0xc7, 0x03, 0xc4, 0x03, 0xe2, 0x03, 0xe3, 0x03, 0xf2, 0x03, 0xee, 0x03, + 0xf1, 0x03, 0xf1, 0x03, 0xea, 0x03, 0xe8, 0x03, 0xd2, 0x03, 0xd1, 0x03, + 0xb6, 0x03, 0xb5, 0x03, 0x8d, 0x03, 0x8c, 0x03, 0x62, 0x03, 0x61, 0x03, + 0x2d, 0x03, 0x2e, 0x03, 0xf7, 0x02, 0xf5, 0x02, 0xbf, 0x02, 0xbf, 0x02, + 0x84, 0x02, 0x83, 0x02, 0x50, 0x02, 0x4f, 0x02, 0x19, 0x02, 0x19, 0x02, + 0xee, 0x01, 0xeb, 0x01, 0xc4, 0x01, 0xc4, 0x01, 0xa4, 0x01, 0xa4, 0x01, + 0x90, 0x01, 0x8f, 0x01, 0x80, 0x01, 0x81, 0x01, 0x85, 0x01, 0x82, 0x01, + 0x8d, 0x01, 0x8c, 0x01, 0xa4, 0x01, 0xa4, 0x01, 0xcb, 0x01, 0xc7, 0x01, + 0xf4, 0x01, 0xf5, 0x01, 0x32, 0x02, 0x30, 0x02, 0x75, 0x02, 0x72, 0x02, + 0xc2, 0x02, 0xc1, 0x02, 0x1b, 0x03, 0x19, 0x03, 0x77, 0x03, 0x74, 0x03, + 0xdb, 0x03, 0xda, 0x03, 0x42, 0x04, 0x3f, 0x04, 0xac, 0x04, 0xab, 0x04, + 0x13, 0x05, 0x13, 0x05, 0x7e, 0x05, 0x7b, 0x05, 0xde, 0x05, 0xdd, 0x05, + 0x3d, 0x06, 0x3b, 0x06, 0x94, 0x06, 0x93, 0x06, 0xde, 0x06, 0xde, 0x06, + 0x22, 0x07, 0x20, 0x07, 0x54, 0x07, 0x54, 0x07, 0x7c, 0x07, 0x7c, 0x07, + 0x93, 0x07, 0x91, 0x07, 0x99, 0x07, 0x9a, 0x07, 0x93, 0x07, 0x8f, 0x07, + 0x76, 0x07, 0x77, 0x07, 0x4d, 0x07, 0x4b, 0x07, 0x11, 0x07, 0x10, 0x07, + 0xc4, 0x06, 0xc3, 0x06, 0x67, 0x06, 0x67, 0x06, 0xfc, 0x05, 0xfc, 0x05, + 0x85, 0x05, 0x84, 0x05, 0x00, 0x05, 0xff, 0x04, 0x71, 0x04, 0x70, 0x04, + 0xd8, 0x03, 0xd9, 0x03, 0x3a, 0x03, 0x3a, 0x03, 0x94, 0x02, 0x93, 0x02, + 0xf0, 0x01, 0xf0, 0x01, 0x47, 0x01, 0x45, 0x01, 0xa2, 0x00, 0xa3, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x64, 0xff, 0x64, 0xff, 0xcf, 0xfe, 0xce, 0xfe, + 0x41, 0xfe, 0x42, 0xfe, 0xc1, 0xfd, 0xc0, 0xfd, 0x4b, 0xfd, 0x4b, 0xfd, + 0xe3, 0xfc, 0xe1, 0xfc, 0x86, 0xfc, 0x87, 0xfc, 0x3d, 0xfc, 0x3b, 0xfc, + 0xfc, 0xfb, 0xfd, 0xfb, 0xcf, 0xfb, 0xce, 0xfb, 0xad, 0xfb, 0xac, 0xfb, + 0x9b, 0xfb, 0x9b, 0xfb, 0x96, 0xfb, 0x93, 0xfb, 0x9c, 0xfb, 0x9b, 0xfb, + 0xb0, 0xfb, 0xaf, 0xfb, 0xcb, 0xfb, 0xc8, 0xfb, 0xf2, 0xfb, 0xf2, 0xfb, + 0x1d, 0xfc, 0x1a, 0xfc, 0x4e, 0xfc, 0x4d, 0xfc, 0x85, 0xfc, 0x84, 0xfc, + 0xba, 0xfc, 0xba, 0xfc, 0xf4, 0xfc, 0xf3, 0xfc, 0x29, 0xfd, 0x28, 0xfd, + 0x5d, 0xfd, 0x5d, 0xfd, 0x8c, 0xfd, 0x8b, 0xfd, 0xb5, 0xfd, 0xb4, 0xfd, + 0xd7, 0xfd, 0xd5, 0xfd, 0xf0, 0xfd, 0xf0, 0xfd, 0xff, 0xfd, 0x00, 0xfe, + 0x0a, 0xfe, 0x09, 0xfe, 0x06, 0xfe, 0x07, 0xfe, 0xfd, 0xfd, 0xfa, 0xfd, + 0xe6, 0xfd, 0xe6, 0xfd, 0xc8, 0xfd, 0xc8, 0xfd, 0xa1, 0xfd, 0x9d, 0xfd, + 0x6f, 0xfd, 0x70, 0xfd, 0x3c, 0xfd, 0x39, 0xfd, 0xfd, 0xfc, 0xfd, 0xfc, + 0xbf, 0xfc, 0xbe, 0xfc, 0x7c, 0xfc, 0x79, 0xfc, 0x36, 0xfc, 0x36, 0xfc, + 0xf2, 0xfb, 0xf3, 0xfb, 0xb1, 0xfb, 0xb0, 0xfb, 0x74, 0xfb, 0x74, 0xfb, + 0x3b, 0xfb, 0x3b, 0xfb, 0x0b, 0xfb, 0x0a, 0xfb, 0xe0, 0xfa, 0xdf, 0xfa, + 0xc3, 0xfa, 0xc1, 0xfa, 0xad, 0xfa, 0xac, 0xfa, 0xa3, 0xfa, 0xa3, 0xfa, + 0xa7, 0xfa, 0xa7, 0xfa, 0xb8, 0xfa, 0xb7, 0xfa, 0xd8, 0xfa, 0xd7, 0xfa, + 0x05, 0xfb, 0x02, 0xfb, 0x3b, 0xfb, 0x3c, 0xfb, 0x85, 0xfb, 0x83, 0xfb, + 0xd5, 0xfb, 0xd5, 0xfb, 0x33, 0xfc, 0x34, 0xfc, 0x9b, 0xfc, 0x98, 0xfc, + 0x0b, 0xfd, 0x0a, 0xfd, 0x83, 0xfd, 0x82, 0xfd, 0x01, 0xfe, 0xff, 0xfd, + 0x7e, 0xfe, 0x7e, 0xfe, 0x02, 0xff, 0x02, 0xff, 0x82, 0xff, 0x80, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x79, 0x00, 0xee, 0x00, 0xee, 0x00, + 0x58, 0x01, 0x58, 0x01, 0xba, 0x01, 0xb9, 0x01, 0x11, 0x02, 0x0e, 0x02, + 0x55, 0x02, 0x54, 0x02, 0x8e, 0x02, 0x8d, 0x02, 0xb6, 0x02, 0xb5, 0x02, + 0xd0, 0x02, 0xce, 0x02, 0xd9, 0x02, 0xd9, 0x02, 0xd0, 0x02, 0xce, 0x02, + 0xb9, 0x02, 0xba, 0x02, 0x91, 0x02, 0x8f, 0x02, 0x5a, 0x02, 0x59, 0x02, + 0x13, 0x02, 0x13, 0x02, 0xc1, 0x01, 0xbf, 0x01, 0x61, 0x01, 0x61, 0x01, + 0xf8, 0x00, 0xf6, 0x00, 0x86, 0x00, 0x86, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x90, 0xff, 0x8f, 0xff, 0x11, 0xff, 0x10, 0xff, 0x8f, 0xfe, 0x90, 0xfe, + 0x12, 0xfe, 0x11, 0xfe, 0x96, 0xfd, 0x95, 0xfd, 0x22, 0xfd, 0x22, 0xfd, + 0xb6, 0xfc, 0xb3, 0xfc, 0x52, 0xfc, 0x54, 0xfc, 0xfa, 0xfb, 0xfa, 0xfb, + 0xb0, 0xfb, 0xaf, 0xfb, 0x73, 0xfb, 0x72, 0xfb, 0x45, 0xfb, 0x44, 0xfb, + 0x25, 0xfb, 0x25, 0xfb, 0x19, 0xfb, 0x19, 0xfb, 0x1c, 0xfb, 0x18, 0xfb, + 0x2c, 0xfb, 0x2e, 0xfb, 0x52, 0xfb, 0x51, 0xfb, 0x80, 0xfb, 0x80, 0xfb, + 0xc4, 0xfb, 0xc4, 0xfb, 0x0f, 0xfc, 0x0e, 0xfc, 0x6b, 0xfc, 0x6b, 0xfc, + 0xce, 0xfc, 0xcd, 0xfc, 0x3c, 0xfd, 0x3c, 0xfd, 0xb1, 0xfd, 0xb0, 0xfd, + 0x29, 0xfe, 0x2a, 0xfe, 0xa7, 0xfe, 0xa5, 0xfe, 0x25, 0xff, 0x25, 0xff, + 0xa4, 0xff, 0xa2, 0xff, 0x20, 0x00, 0x1e, 0x00, 0x96, 0x00, 0x97, 0x00, + 0x09, 0x01, 0x06, 0x01, 0x73, 0x01, 0x73, 0x01, 0xd5, 0x01, 0xd4, 0x01, + 0x2c, 0x02, 0x2d, 0x02, 0x7b, 0x02, 0x7a, 0x02, 0xbf, 0x02, 0xbd, 0x02, + 0xf5, 0x02, 0xf4, 0x02, 0x1f, 0x03, 0x20, 0x03, 0x3f, 0x03, 0x3d, 0x03, + 0x51, 0x03, 0x53, 0x03, 0x5c, 0x03, 0x5a, 0x03, 0x59, 0x03, 0x59, 0x03, + 0x50, 0x03, 0x4f, 0x03, 0x3c, 0x03, 0x3b, 0x03, 0x21, 0x03, 0x20, 0x03, + 0x04, 0x03, 0x03, 0x03, 0xe0, 0x02, 0xdd, 0x02, 0xbb, 0x02, 0xba, 0x02, + 0x95, 0x02, 0x92, 0x02, 0x6e, 0x02, 0x6e, 0x02, 0x4d, 0x02, 0x4b, 0x02, + 0x2d, 0x02, 0x2e, 0x02, 0x16, 0x02, 0x13, 0x02, 0x02, 0x02, 0x02, 0x02, + 0xfb, 0x01, 0xf8, 0x01, 0xf8, 0x01, 0xf9, 0x01, 0x04, 0x02, 0xff, 0x01, + 0x15, 0x02, 0x15, 0x02, 0x34, 0x02, 0x32, 0x02, 0x5c, 0x02, 0x5a, 0x02, + 0x8f, 0x02, 0x8e, 0x02, 0xcb, 0x02, 0xca, 0x02, 0x12, 0x03, 0x11, 0x03, + 0x61, 0x03, 0x5f, 0x03, 0xb5, 0x03, 0xb3, 0x03, 0x11, 0x04, 0x10, 0x04, + 0x6f, 0x04, 0x6f, 0x04, 0xd3, 0x04, 0xce, 0x04, 0x35, 0x05, 0x36, 0x05, + 0x97, 0x05, 0x93, 0x05, 0xf6, 0x05, 0xf7, 0x05, 0x51, 0x06, 0x50, 0x06, + 0xa6, 0x06, 0xa4, 0x06, 0xf1, 0x06, 0xf0, 0x06, 0x33, 0x07, 0x33, 0x07, + 0x6b, 0x07, 0x69, 0x07, 0x93, 0x07, 0x94, 0x07, 0xaf, 0x07, 0xae, 0x07, + 0xbc, 0x07, 0xbb, 0x07, 0xb9, 0x07, 0xb9, 0x07, 0xa6, 0x07, 0xa3, 0x07, + 0x80, 0x07, 0x82, 0x07, 0x4e, 0x07, 0x4c, 0x07, 0x07, 0x07, 0x07, 0x07, + 0xb5, 0x06, 0xb3, 0x06, 0x4d, 0x06, 0x4e, 0x06, 0xdc, 0x05, 0xdc, 0x05, + 0x5d, 0x05, 0x5d, 0x05, 0xd2, 0x04, 0xd2, 0x04, 0x40, 0x04, 0x3f, 0x04, + 0xa2, 0x03, 0xa3, 0x03, 0x02, 0x03, 0x02, 0x03, 0x5d, 0x02, 0x5b, 0x02, + 0xb5, 0x01, 0xb8, 0x01, 0x0f, 0x01, 0x0d, 0x01, 0x6c, 0x00, 0x6d, 0x00, + 0xcf, 0xff, 0xce, 0xff, 0x34, 0xff, 0x35, 0xff, 0xa8, 0xfe, 0xa7, 0xfe, + 0x21, 0xfe, 0x22, 0xfe, 0xa8, 0xfd, 0xa5, 0xfd, 0x3a, 0xfd, 0x3b, 0xfd, + 0xdb, 0xfc, 0xd9, 0xfc, 0x8b, 0xfc, 0x8b, 0xfc, 0x4b, 0xfc, 0x49, 0xfc, + 0x16, 0xfc, 0x18, 0xfc, 0xf7, 0xfb, 0xf5, 0xfb, 0xe2, 0xfb, 0xe1, 0xfb, + 0xde, 0xfb, 0xde, 0xfb, 0xe7, 0xfb, 0xe6, 0xfb, 0xfe, 0xfb, 0xfd, 0xfb, + 0x1f, 0xfc, 0x20, 0xfc, 0x4d, 0xfc, 0x4b, 0xfc, 0x7f, 0xfc, 0x7f, 0xfc, + 0xba, 0xfc, 0xba, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0x3f, 0xfd, 0x3e, 0xfd, + 0x83, 0xfd, 0x83, 0xfd, 0xc7, 0xfd, 0xc6, 0xfd, 0x0a, 0xfe, 0x09, 0xfe, + 0x45, 0xfe, 0x46, 0xfe, 0x7e, 0xfe, 0x7d, 0xfe, 0xaf, 0xfe, 0xb0, 0xfe, + 0xd5, 0xfe, 0xd5, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, 0x08, 0xff, 0x07, 0xff, + 0x10, 0xff, 0x0f, 0xff, 0x0d, 0xff, 0x0d, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xe4, 0xfe, 0xe5, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0x8f, 0xfe, 0x8f, 0xfe, + 0x57, 0xfe, 0x56, 0xfe, 0x14, 0xfe, 0x14, 0xfe, 0xcc, 0xfd, 0xcb, 0xfd, + 0x7f, 0xfd, 0x7e, 0xfd, 0x29, 0xfd, 0x29, 0xfd, 0xd8, 0xfc, 0xd5, 0xfc, + 0x7f, 0xfc, 0x80, 0xfc, 0x2c, 0xfc, 0x28, 0xfc, 0xd9, 0xfb, 0xd9, 0xfb, + 0x8c, 0xfb, 0x89, 0xfb, 0x44, 0xfb, 0x44, 0xfb, 0x09, 0xfb, 0x05, 0xfb, + 0xd1, 0xfa, 0xd1, 0xfa, 0xa8, 0xfa, 0xa7, 0xfa, 0x8d, 0xfa, 0x8b, 0xfa, + 0x7c, 0xfa, 0x7b, 0xfa, 0x79, 0xfa, 0x78, 0xfa, 0x85, 0xfa, 0x84, 0xfa, + 0x9f, 0xfa, 0x9d, 0xfa, 0xc9, 0xfa, 0xc8, 0xfa, 0xff, 0xfa, 0xfe, 0xfa, + 0x44, 0xfb, 0x42, 0xfb, 0x95, 0xfb, 0x93, 0xfb, 0xf0, 0xfb, 0xf0, 0xfb, + 0x59, 0xfc, 0x57, 0xfc, 0xc5, 0xfc, 0xc6, 0xfc, 0x40, 0xfd, 0x3d, 0xfd, + 0xbb, 0xfd, 0xbc, 0xfd, 0x39, 0xfe, 0x37, 0xfe, 0xbc, 0xfe, 0xbd, 0xfe, + 0x39, 0xff, 0x37, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0x30, 0x00, 0x2f, 0x00, + 0x9f, 0x00, 0x9e, 0x00, 0x0c, 0x01, 0x0b, 0x01, 0x65, 0x01, 0x64, 0x01, + 0xba, 0x01, 0xb9, 0x01, 0xfd, 0x01, 0xfd, 0x01, 0x32, 0x02, 0x31, 0x02, + 0x5a, 0x02, 0x59, 0x02, 0x6d, 0x02, 0x6d, 0x02, 0x76, 0x02, 0x75, 0x02, + 0x6c, 0x02, 0x6c, 0x02, 0x50, 0x02, 0x52, 0x02, 0x2a, 0x02, 0x29, 0x02, + 0xf0, 0x01, 0xf0, 0x01, 0xaf, 0x01, 0xaf, 0x01, 0x5e, 0x01, 0x5d, 0x01, + 0x03, 0x01, 0x03, 0x01, 0x9e, 0x00, 0xa0, 0x00, 0x33, 0x00, 0x32, 0x00, + 0xc5, 0xff, 0xc6, 0xff, 0x4d, 0xff, 0x4d, 0xff, 0xdc, 0xfe, 0xdc, 0xfe, + 0x67, 0xfe, 0x67, 0xfe, 0xf5, 0xfd, 0xf5, 0xfd, 0x89, 0xfd, 0x8a, 0xfd, + 0x22, 0xfd, 0x23, 0xfd, 0xc7, 0xfc, 0xc6, 0xfc, 0x73, 0xfc, 0x73, 0xfc, + 0x2b, 0xfc, 0x2b, 0xfc, 0xf1, 0xfb, 0xf1, 0xfb, 0xc0, 0xfb, 0xc1, 0xfb, + 0xa5, 0xfb, 0xa4, 0xfb, 0x91, 0xfb, 0x91, 0xfb, 0x8f, 0xfb, 0x90, 0xfb, + 0x9f, 0xfb, 0x9c, 0xfb, 0xb8, 0xfb, 0xba, 0xfb, 0xe3, 0xfb, 0xe0, 0xfb, + 0x18, 0xfc, 0x1a, 0xfc, 0x5a, 0xfc, 0x59, 0xfc, 0xa7, 0xfc, 0xa7, 0xfc, + 0xfd, 0xfc, 0xff, 0xfc, 0x5d, 0xfd, 0x5c, 0xfd, 0xc0, 0xfd, 0xc1, 0xfd, + 0x2b, 0xfe, 0x2a, 0xfe, 0x94, 0xfe, 0x96, 0xfe, 0x04, 0xff, 0x01, 0xff, + 0x6c, 0xff, 0x6e, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0x3b, 0x00, 0x3c, 0x00, + 0x97, 0x00, 0x98, 0x00, 0xf1, 0x00, 0xf0, 0x00, 0x3d, 0x01, 0x3f, 0x01, + 0x84, 0x01, 0x82, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xef, 0x01, 0xee, 0x01, + 0x16, 0x02, 0x15, 0x02, 0x2f, 0x02, 0x30, 0x02, 0x3f, 0x02, 0x3e, 0x02, + 0x46, 0x02, 0x45, 0x02, 0x40, 0x02, 0x40, 0x02, 0x36, 0x02, 0x35, 0x02, + 0x20, 0x02, 0x20, 0x02, 0x06, 0x02, 0x05, 0x02, 0xe8, 0x01, 0xe5, 0x01, + 0xc2, 0x01, 0xc4, 0x01, 0x9f, 0x01, 0x9d, 0x01, 0x79, 0x01, 0x7a, 0x01, + 0x56, 0x01, 0x56, 0x01, 0x36, 0x01, 0x36, 0x01, 0x1b, 0x01, 0x19, 0x01, + 0x04, 0x01, 0x05, 0x01, 0xf7, 0x00, 0xf5, 0x00, 0xf1, 0x00, 0xf3, 0x00, + 0xf7, 0x00, 0xf7, 0x00, 0x06, 0x01, 0x06, 0x01, 0x22, 0x01, 0x22, 0x01, + 0x49, 0x01, 0x49, 0x01, 0x7d, 0x01, 0x7f, 0x01, 0xb9, 0x01, 0xb9, 0x01, + 0x04, 0x02, 0x03, 0x02, 0x57, 0x02, 0x56, 0x02, 0xb5, 0x02, 0xb5, 0x02, + 0x1c, 0x03, 0x1d, 0x03, 0x89, 0x03, 0x88, 0x03, 0x00, 0x04, 0xff, 0x03, + 0x74, 0x04, 0x75, 0x04, 0xef, 0x04, 0xee, 0x04, 0x68, 0x05, 0x68, 0x05, + 0xe1, 0x05, 0xdf, 0x05, 0x55, 0x06, 0x57, 0x06, 0xc5, 0x06, 0xc5, 0x06, + 0x2d, 0x07, 0x2b, 0x07, 0x8a, 0x07, 0x8d, 0x07, 0xdd, 0x07, 0xdc, 0x07, + 0x22, 0x08, 0x24, 0x08, 0x5a, 0x08, 0x5a, 0x08, 0x80, 0x08, 0x81, 0x08, + 0x9a, 0x08, 0x99, 0x08, 0x9b, 0x08, 0x9c, 0x08, 0x91, 0x08, 0x91, 0x08, + 0x71, 0x08, 0x70, 0x08, 0x3d, 0x08, 0x3e, 0x08, 0xfc, 0x07, 0xfa, 0x07, + 0xa3, 0x07, 0xa6, 0x07, 0x3f, 0x07, 0x3d, 0x07, 0xc8, 0x06, 0xc9, 0x06, + 0x44, 0x06, 0x44, 0x06, 0xb3, 0x05, 0xb4, 0x05, 0x18, 0x05, 0x17, 0x05, + 0x73, 0x04, 0x75, 0x04, 0xc8, 0x03, 0xc6, 0x03, 0x17, 0x03, 0x18, 0x03, + 0x64, 0x02, 0x63, 0x02, 0xb1, 0x01, 0xb1, 0x01, 0x00, 0x01, 0xff, 0x00, + 0x53, 0x00, 0x54, 0x00, 0xae, 0xff, 0xaa, 0xff, 0x0c, 0xff, 0x0f, 0xff, + 0x7c, 0xfe, 0x7a, 0xfe, 0xf1, 0xfd, 0xf2, 0xfd, 0x77, 0xfd, 0x76, 0xfd, + 0x07, 0xfd, 0x08, 0xfd, 0xab, 0xfc, 0xab, 0xfc, 0x5c, 0xfc, 0x5c, 0xfc, + 0x1e, 0xfc, 0x1d, 0xfc, 0xee, 0xfb, 0xec, 0xfb, 0xd0, 0xfb, 0xd0, 0xfb, + 0xbf, 0xfb, 0xc0, 0xfb, 0xc0, 0xfb, 0xbe, 0xfb, 0xcd, 0xfb, 0xce, 0xfb, + 0xe6, 0xfb, 0xe5, 0xfb, 0x0b, 0xfc, 0x0c, 0xfc, 0x3a, 0xfc, 0x39, 0xfc, + 0x70, 0xfc, 0x70, 0xfc, 0xae, 0xfc, 0xad, 0xfc, 0xed, 0xfc, 0xf0, 0xfc, + 0x33, 0xfd, 0x31, 0xfd, 0x76, 0xfd, 0x78, 0xfd, 0xbb, 0xfd, 0xb9, 0xfd, + 0xfa, 0xfd, 0xfb, 0xfd, 0x38, 0xfe, 0x37, 0xfe, 0x6c, 0xfe, 0x6d, 0xfe, + 0x9c, 0xfe, 0x9c, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, 0xde, 0xfe, 0xdf, 0xfe, + 0xf2, 0xfe, 0xf2, 0xfe, 0xfa, 0xfe, 0xfa, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, + 0xea, 0xfe, 0xeb, 0xfe, 0xd2, 0xfe, 0xd2, 0xfe, 0xb1, 0xfe, 0xb2, 0xfe, + 0x88, 0xfe, 0x88, 0xfe, 0x53, 0xfe, 0x53, 0xfe, 0x1a, 0xfe, 0x1a, 0xfe, + 0xda, 0xfd, 0xdb, 0xfd, 0x97, 0xfd, 0x98, 0xfd, 0x50, 0xfd, 0x50, 0xfd, + 0x07, 0xfd, 0x0a, 0xfd, 0xc2, 0xfc, 0xc0, 0xfc, 0x7b, 0xfc, 0x7c, 0xfc, + 0x3b, 0xfc, 0x3a, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xc9, 0xfb, 0xcb, 0xfb, + 0xa0, 0xfb, 0x9d, 0xfb, 0x79, 0xfb, 0x7c, 0xfb, 0x65, 0xfb, 0x64, 0xfb, + 0x58, 0xfb, 0x56, 0xfb, 0x56, 0xfb, 0x57, 0xfb, 0x64, 0xfb, 0x63, 0xfb, + 0x7d, 0xfb, 0x7c, 0xfb, 0xa3, 0xfb, 0xa2, 0xfb, 0xd3, 0xfb, 0xd5, 0xfb, + 0x13, 0xfc, 0x12, 0xfc, 0x59, 0xfc, 0x5b, 0xfc, 0xae, 0xfc, 0xac, 0xfc, + 0x08, 0xfd, 0x09, 0xfd, 0x6b, 0xfd, 0x6c, 0xfd, 0xd3, 0xfd, 0xd3, 0xfd, + 0x3e, 0xfe, 0x3f, 0xfe, 0xae, 0xfe, 0xad, 0xfe, 0x1c, 0xff, 0x1c, 0xff, + 0x87, 0xff, 0x88, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0x54, 0x00, 0x54, 0x00, + 0xb2, 0x00, 0xb2, 0x00, 0x04, 0x01, 0x05, 0x01, 0x4e, 0x01, 0x4e, 0x01, + 0x8a, 0x01, 0x8b, 0x01, 0xbb, 0x01, 0xba, 0x01, 0xdd, 0x01, 0xde, 0x01, + 0xf3, 0x01, 0xf2, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xee, 0x01, 0xee, 0x01, + 0xd3, 0x01, 0xd3, 0x01, 0xac, 0x01, 0xad, 0x01, 0x79, 0x01, 0x77, 0x01, + 0x34, 0x01, 0x36, 0x01, 0xe8, 0x00, 0xe8, 0x00, 0x90, 0x00, 0x90, 0x00, + 0x2f, 0x00, 0x2d, 0x00, 0xc6, 0xff, 0xc7, 0xff, 0x57, 0xff, 0x56, 0xff, + 0xe6, 0xfe, 0xe8, 0xfe, 0x72, 0xfe, 0x71, 0xfe, 0xff, 0xfd, 0xfe, 0xfd, + 0x8f, 0xfd, 0x8f, 0xfd, 0x22, 0xfd, 0x21, 0xfd, 0xbd, 0xfc, 0xbd, 0xfc, + 0x5f, 0xfc, 0x5e, 0xfc, 0x0a, 0xfc, 0x0b, 0xfc, 0xc2, 0xfb, 0xc2, 0xfb, + 0x84, 0xfb, 0x85, 0xfb, 0x57, 0xfb, 0x57, 0xfb, 0x35, 0xfb, 0x34, 0xfb, + 0x23, 0xfb, 0x23, 0xfb, 0x20, 0xfb, 0x20, 0xfb, 0x2d, 0xfb, 0x2c, 0xfb, + 0x48, 0xfb, 0x49, 0xfb, 0x72, 0xfb, 0x71, 0xfb, 0xaa, 0xfb, 0xab, 0xfb, + 0xf0, 0xfb, 0xef, 0xfb, 0x3f, 0xfc, 0x3f, 0xfc, 0x9b, 0xfc, 0x9a, 0xfc, + 0xfc, 0xfc, 0xfd, 0xfc, 0x69, 0xfd, 0x69, 0xfd, 0xd7, 0xfd, 0xd7, 0xfd, + 0x4b, 0xfe, 0x4c, 0xfe, 0xc1, 0xfe, 0xc0, 0xfe, 0x36, 0xff, 0x37, 0xff, + 0xa8, 0xff, 0xa8, 0xff, 0x18, 0x00, 0x18, 0x00, 0x81, 0x00, 0x82, 0x00, + 0xe3, 0x00, 0xe4, 0x00, 0x41, 0x01, 0x3f, 0x01, 0x8e, 0x01, 0x90, 0x01, + 0xd8, 0x01, 0xd6, 0x01, 0x12, 0x02, 0x14, 0x02, 0x41, 0x02, 0x40, 0x02, + 0x67, 0x02, 0x66, 0x02, 0x7b, 0x02, 0x7c, 0x02, 0x89, 0x02, 0x88, 0x02, + 0x88, 0x02, 0x8a, 0x02, 0x7f, 0x02, 0x7d, 0x02, 0x6a, 0x02, 0x6d, 0x02, + 0x50, 0x02, 0x4d, 0x02, 0x28, 0x02, 0x2b, 0x02, 0x00, 0x02, 0x00, 0x02, + 0xd2, 0x01, 0xd2, 0x01, 0xa1, 0x01, 0xa3, 0x01, 0x71, 0x01, 0x70, 0x01, + 0x3f, 0x01, 0x41, 0x01, 0x13, 0x01, 0x12, 0x01, 0xe7, 0x00, 0xea, 0x00, + 0xc6, 0x00, 0xc5, 0x00, 0xa5, 0x00, 0xa7, 0x00, 0x96, 0x00, 0x95, 0x00, + 0x8c, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x9a, 0x00, 0x9a, 0x00, + 0xb1, 0x00, 0xb3, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0x0c, 0x01, 0x0b, 0x01, + 0x48, 0x01, 0x4a, 0x01, 0x95, 0x01, 0x95, 0x01, 0xe7, 0x01, 0xe8, 0x01, + 0x46, 0x02, 0x47, 0x02, 0xae, 0x02, 0xae, 0x02, 0x1c, 0x03, 0x1d, 0x03, + 0x90, 0x03, 0x92, 0x03, 0x09, 0x04, 0x0a, 0x04, 0x82, 0x04, 0x84, 0x04, + 0xff, 0x04, 0xff, 0x04, 0x75, 0x05, 0x78, 0x05, 0xeb, 0x05, 0xeb, 0x05, + 0x5a, 0x06, 0x5d, 0x06, 0xc2, 0x06, 0xc2, 0x06, 0x20, 0x07, 0x21, 0x07, + 0x70, 0x07, 0x72, 0x07, 0xb7, 0x07, 0xb8, 0x07, 0xf0, 0x07, 0xf0, 0x07, + 0x16, 0x08, 0x18, 0x08, 0x31, 0x08, 0x31, 0x08, 0x34, 0x08, 0x36, 0x08, + 0x2d, 0x08, 0x2d, 0x08, 0x0e, 0x08, 0x0f, 0x08, 0xe3, 0x07, 0xe3, 0x07, + 0xa2, 0x07, 0xa4, 0x07, 0x55, 0x07, 0x54, 0x07, 0xf8, 0x06, 0xf9, 0x06, + 0x8a, 0x06, 0x8a, 0x06, 0x13, 0x06, 0x13, 0x06, 0x8f, 0x05, 0x8f, 0x05, + 0x00, 0x05, 0x01, 0x05, 0x6d, 0x04, 0x6b, 0x04, 0xcf, 0x03, 0xd1, 0x03, + 0x34, 0x03, 0x33, 0x03, 0x91, 0x02, 0x93, 0x02, 0xf4, 0x01, 0xf3, 0x01, + 0x55, 0x01, 0x56, 0x01, 0xbc, 0x00, 0xbd, 0x00, 0x2b, 0x00, 0x2a, 0x00, + 0xa1, 0xff, 0xa1, 0xff, 0x20, 0xff, 0x1f, 0xff, 0xa9, 0xfe, 0xa9, 0xfe, + 0x3f, 0xfe, 0x3e, 0xfe, 0xe1, 0xfd, 0xe3, 0xfd, 0x92, 0xfd, 0x91, 0xfd, + 0x50, 0xfd, 0x51, 0xfd, 0x1e, 0xfd, 0x1c, 0xfd, 0xf6, 0xfc, 0xf7, 0xfc, + 0xdf, 0xfc, 0xde, 0xfc, 0xd1, 0xfc, 0xd3, 0xfc, 0xd2, 0xfc, 0xd2, 0xfc, + 0xde, 0xfc, 0xde, 0xfc, 0xf2, 0xfc, 0xf2, 0xfc, 0x11, 0xfd, 0x10, 0xfd, + 0x34, 0xfd, 0x35, 0xfd, 0x5d, 0xfd, 0x5e, 0xfd, 0x8b, 0xfd, 0x8c, 0xfd, + 0xbb, 0xfd, 0xba, 0xfd, 0xea, 0xfd, 0xea, 0xfd, 0x18, 0xfe, 0x18, 0xfe, + 0x45, 0xfe, 0x47, 0xfe, 0x6b, 0xfe, 0x6a, 0xfe, 0x8f, 0xfe, 0x8f, 0xfe, + 0xa7, 0xfe, 0xa7, 0xfe, 0xbc, 0xfe, 0xbd, 0xfe, 0xc7, 0xfe, 0xc6, 0xfe, + 0xc7, 0xfe, 0xc8, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xac, 0xfe, 0xae, 0xfe, + 0x96, 0xfe, 0x94, 0xfe, 0x70, 0xfe, 0x71, 0xfe, 0x47, 0xfe, 0x46, 0xfe, + 0x12, 0xfe, 0x13, 0xfe, 0xdb, 0xfd, 0xd9, 0xfd, 0x9c, 0xfd, 0x9c, 0xfd, + 0x58, 0xfd, 0x58, 0xfd, 0x14, 0xfd, 0x13, 0xfd, 0xcd, 0xfc, 0xcd, 0xfc, + 0x87, 0xfc, 0x88, 0xfc, 0x44, 0xfc, 0x42, 0xfc, 0x00, 0xfc, 0x03, 0xfc, + 0xc7, 0xfb, 0xc7, 0xfb, 0x92, 0xfb, 0x92, 0xfb, 0x67, 0xfb, 0x68, 0xfb, + 0x42, 0xfb, 0x41, 0xfb, 0x2b, 0xfb, 0x2c, 0xfb, 0x1e, 0xfb, 0x1e, 0xfb, + 0x1e, 0xfb, 0x1d, 0xfb, 0x28, 0xfb, 0x2b, 0xfb, 0x44, 0xfb, 0x41, 0xfb, + 0x69, 0xfb, 0x6c, 0xfb, 0x9c, 0xfb, 0x9c, 0xfb, 0xdc, 0xfb, 0xdd, 0xfb, + 0x26, 0xfc, 0x27, 0xfc, 0x7d, 0xfc, 0x7e, 0xfc, 0xdb, 0xfc, 0xdc, 0xfc, + 0x43, 0xfd, 0x44, 0xfd, 0xb1, 0xfd, 0xb1, 0xfd, 0x24, 0xfe, 0x25, 0xfe, + 0x9a, 0xfe, 0x9c, 0xfe, 0x12, 0xff, 0x13, 0xff, 0x88, 0xff, 0x89, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0x6d, 0x00, 0x6e, 0x00, 0xd8, 0x00, 0xd8, 0x00, + 0x38, 0x01, 0x3a, 0x01, 0x91, 0x01, 0x92, 0x01, 0xdd, 0x01, 0xdc, 0x01, + 0x1c, 0x02, 0x1f, 0x02, 0x4d, 0x02, 0x4e, 0x02, 0x70, 0x02, 0x6f, 0x02, + 0x81, 0x02, 0x83, 0x02, 0x87, 0x02, 0x87, 0x02, 0x77, 0x02, 0x77, 0x02, + 0x5a, 0x02, 0x5d, 0x02, 0x30, 0x02, 0x2c, 0x02, 0xf2, 0x01, 0xf5, 0x01, + 0xad, 0x01, 0xab, 0x01, 0x54, 0x01, 0x55, 0x01, 0xf4, 0x00, 0xf5, 0x00, + 0x89, 0x00, 0x89, 0x00, 0x14, 0x00, 0x17, 0x00, 0x9d, 0xff, 0x9d, 0xff, + 0x20, 0xff, 0x20, 0xff, 0x9f, 0xfe, 0xa0, 0xfe, 0x20, 0xfe, 0x1f, 0xfe, + 0x9f, 0xfd, 0xa1, 0xfd, 0x25, 0xfd, 0x25, 0xfd, 0xb1, 0xfc, 0xb1, 0xfc, + 0x42, 0xfc, 0x44, 0xfc, 0xdf, 0xfb, 0xdf, 0xfb, 0x85, 0xfb, 0x85, 0xfb, + 0x36, 0xfb, 0x39, 0xfb, 0xf8, 0xfa, 0xf8, 0xfa, 0xc6, 0xfa, 0xc6, 0xfa, + 0xa3, 0xfa, 0xa2, 0xfa, 0x8e, 0xfa, 0x8f, 0xfa, 0x89, 0xfa, 0x89, 0xfa, + 0x95, 0xfa, 0x96, 0xfa, 0xad, 0xfa, 0xad, 0xfa, 0xd7, 0xfa, 0xd7, 0xfa, + 0x0d, 0xfb, 0x0c, 0xfb, 0x4f, 0xfb, 0x51, 0xfb, 0x9e, 0xfb, 0x9d, 0xfb, + 0xf6, 0xfb, 0xf6, 0xfb, 0x56, 0xfc, 0x57, 0xfc, 0xbd, 0xfc, 0xbc, 0xfc, + 0x29, 0xfd, 0x2a, 0xfd, 0x9b, 0xfd, 0x9b, 0xfd, 0x0a, 0xfe, 0x0a, 0xfe, + 0x80, 0xfe, 0x80, 0xfe, 0xeb, 0xfe, 0xed, 0xfe, 0x59, 0xff, 0x59, 0xff, + 0xc1, 0xff, 0xc2, 0xff, 0x20, 0x00, 0x20, 0x00, 0x7c, 0x00, 0x7c, 0x00, + 0xcb, 0x00, 0xcd, 0x00, 0x13, 0x01, 0x13, 0x01, 0x50, 0x01, 0x51, 0x01, + 0x84, 0x01, 0x84, 0x01, 0xad, 0x01, 0xad, 0x01, 0xcb, 0x01, 0xca, 0x01, + 0xdf, 0x01, 0xe1, 0x01, 0xec, 0x01, 0xe9, 0x01, 0xeb, 0x01, 0xf0, 0x01, + 0xe9, 0x01, 0xe7, 0x01, 0xdc, 0x01, 0xdd, 0x01, 0xc9, 0x01, 0xc9, 0x01, + 0xb6, 0x01, 0xb5, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x81, 0x01, 0x80, 0x01, + 0x69, 0x01, 0x68, 0x01, 0x4d, 0x01, 0x4e, 0x01, 0x3c, 0x01, 0x3b, 0x01, + 0x29, 0x01, 0x28, 0x01, 0x1c, 0x01, 0x1f, 0x01, 0x1c, 0x01, 0x1a, 0x01, + 0x1d, 0x01, 0x1e, 0x01, 0x2c, 0x01, 0x2c, 0x01, 0x40, 0x01, 0x3f, 0x01, + 0x60, 0x01, 0x60, 0x01, 0x8b, 0x01, 0x89, 0x01, 0xbd, 0x01, 0xbf, 0x01, + 0xfd, 0x01, 0xfc, 0x01, 0x42, 0x02, 0x42, 0x02, 0x92, 0x02, 0x93, 0x02, + 0xe8, 0x02, 0xe7, 0x02, 0x46, 0x03, 0x47, 0x03, 0xa9, 0x03, 0xa7, 0x03, + 0x0d, 0x04, 0x0e, 0x04, 0x77, 0x04, 0x77, 0x04, 0xe0, 0x04, 0xdf, 0x04, + 0x47, 0x05, 0x49, 0x05, 0xaf, 0x05, 0xae, 0x05, 0x0d, 0x06, 0x0d, 0x06, + 0x6a, 0x06, 0x6a, 0x06, 0xbc, 0x06, 0xbd, 0x06, 0x04, 0x07, 0x04, 0x07, + 0x44, 0x07, 0x44, 0x07, 0x74, 0x07, 0x74, 0x07, 0x99, 0x07, 0x99, 0x07, + 0xb1, 0x07, 0xb2, 0x07, 0xb7, 0x07, 0xb7, 0x07, 0xb1, 0x07, 0xb3, 0x07, + 0x9a, 0x07, 0x99, 0x07, 0x72, 0x07, 0x74, 0x07, 0x40, 0x07, 0x40, 0x07, + 0xf7, 0x06, 0xf7, 0x06, 0xa7, 0x06, 0xa8, 0x06, 0x48, 0x06, 0x48, 0x06, + 0xdc, 0x05, 0xdc, 0x05, 0x65, 0x05, 0x67, 0x05, 0xe6, 0x04, 0xe6, 0x04, + 0x60, 0x04, 0x61, 0x04, 0xd3, 0x03, 0xd4, 0x03, 0x46, 0x03, 0x46, 0x03, + 0xb2, 0x02, 0xb3, 0x02, 0x24, 0x02, 0x25, 0x02, 0x92, 0x01, 0x94, 0x01, + 0x09, 0x01, 0x07, 0x01, 0x82, 0x00, 0x83, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x8e, 0xff, 0x8f, 0xff, 0x20, 0xff, 0x20, 0xff, 0xc1, 0xfe, 0xc0, 0xfe, + 0x6a, 0xfe, 0x6b, 0xfe, 0x21, 0xfe, 0x22, 0xfe, 0xe6, 0xfd, 0xe7, 0xfd, + 0xb7, 0xfd, 0xb9, 0xfd, 0x98, 0xfd, 0x97, 0xfd, 0x7f, 0xfd, 0x82, 0xfd, + 0x7a, 0xfd, 0x7a, 0xfd, 0x7a, 0xfd, 0x7c, 0xfd, 0x8c, 0xfd, 0x8c, 0xfd, + 0xa3, 0xfd, 0xa5, 0xfd, 0xc0, 0xfd, 0xc2, 0xfd, 0xeb, 0xfd, 0xec, 0xfd, + 0x13, 0xfe, 0x14, 0xfe, 0x46, 0xfe, 0x48, 0xfe, 0x78, 0xfe, 0x78, 0xfe, + 0xac, 0xfe, 0xac, 0xfe, 0xdf, 0xfe, 0xe0, 0xfe, 0x0c, 0xff, 0x0d, 0xff, + 0x3a, 0xff, 0x3b, 0xff, 0x5e, 0xff, 0x5f, 0xff, 0x7f, 0xff, 0x80, 0xff, + 0x96, 0xff, 0x96, 0xff, 0xa5, 0xff, 0xa8, 0xff, 0xae, 0xff, 0xac, 0xff, + 0xa9, 0xff, 0xab, 0xff, 0x9c, 0xff, 0x9e, 0xff, 0x86, 0xff, 0x85, 0xff, + 0x65, 0xff, 0x68, 0xff, 0x3a, 0xff, 0x38, 0xff, 0x08, 0xff, 0x0a, 0xff, + 0xcd, 0xfe, 0xcb, 0xfe, 0x8b, 0xfe, 0x8c, 0xfe, 0x46, 0xfe, 0x45, 0xfe, + 0xf9, 0xfd, 0xf9, 0xfd, 0xaa, 0xfd, 0xad, 0xfd, 0x5b, 0xfd, 0x5b, 0xfd, + 0x0d, 0xfd, 0x0e, 0xfd, 0xbe, 0xfc, 0xbd, 0xfc, 0x71, 0xfc, 0x73, 0xfc, + 0x2f, 0xfc, 0x2d, 0xfc, 0xec, 0xfb, 0xed, 0xfb, 0xb7, 0xfb, 0xb6, 0xfb, + 0x85, 0xfb, 0x85, 0xfb, 0x5f, 0xfb, 0x61, 0xfb, 0x48, 0xfb, 0x47, 0xfb, + 0x37, 0xfb, 0x37, 0xfb, 0x37, 0xfb, 0x38, 0xfb, 0x42, 0xfb, 0x41, 0xfb, + 0x5a, 0xfb, 0x5b, 0xfb, 0x7f, 0xfb, 0x7e, 0xfb, 0xb1, 0xfb, 0xaf, 0xfb, + 0xed, 0xfb, 0xee, 0xfb, 0x36, 0xfc, 0x35, 0xfc, 0x89, 0xfc, 0x89, 0xfc, + 0xe2, 0xfc, 0xe2, 0xfc, 0x46, 0xfd, 0x46, 0xfd, 0xac, 0xfd, 0xab, 0xfd, + 0x19, 0xfe, 0x1b, 0xfe, 0x89, 0xfe, 0x86, 0xfe, 0xf7, 0xfe, 0xf8, 0xfe, + 0x66, 0xff, 0x65, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0x38, 0x00, 0x38, 0x00, + 0x9a, 0x00, 0x99, 0x00, 0xf0, 0x00, 0xf1, 0x00, 0x42, 0x01, 0x40, 0x01, + 0x83, 0x01, 0x84, 0x01, 0xbd, 0x01, 0xbc, 0x01, 0xe5, 0x01, 0xe7, 0x01, + 0x05, 0x02, 0x03, 0x02, 0x12, 0x02, 0x12, 0x02, 0x11, 0x02, 0x13, 0x02, + 0x05, 0x02, 0x04, 0x02, 0xe6, 0x01, 0xe8, 0x01, 0xbc, 0x01, 0xbc, 0x01, + 0x86, 0x01, 0x87, 0x01, 0x43, 0x01, 0x43, 0x01, 0xf3, 0x00, 0xf5, 0x00, + 0x9d, 0x00, 0x9b, 0x00, 0x3c, 0x00, 0x3f, 0x00, 0xd7, 0xff, 0xd6, 0xff, + 0x6c, 0xff, 0x6d, 0xff, 0xfd, 0xfe, 0xff, 0xfe, 0x8e, 0xfe, 0x8e, 0xfe, + 0x1f, 0xfe, 0x1f, 0xfe, 0xb0, 0xfd, 0xb2, 0xfd, 0x4b, 0xfd, 0x4a, 0xfd, + 0xe3, 0xfc, 0xe7, 0xfc, 0x8b, 0xfc, 0x89, 0xfc, 0x35, 0xfc, 0x38, 0xfc, + 0xec, 0xfb, 0xec, 0xfb, 0xaf, 0xfb, 0xaf, 0xfb, 0x7b, 0xfb, 0x7d, 0xfb, + 0x55, 0xfb, 0x56, 0xfb, 0x3c, 0xfb, 0x3d, 0xfb, 0x2f, 0xfb, 0x2e, 0xfb, + 0x30, 0xfb, 0x31, 0xfb, 0x3c, 0xfb, 0x3c, 0xfb, 0x57, 0xfb, 0x58, 0xfb, + 0x7a, 0xfb, 0x7c, 0xfb, 0xab, 0xfb, 0xab, 0xfb, 0xe2, 0xfb, 0xe4, 0xfb, + 0x25, 0xfc, 0x26, 0xfc, 0x6f, 0xfc, 0x6f, 0xfc, 0xba, 0xfc, 0xbd, 0xfc, + 0x10, 0xfd, 0x11, 0xfd, 0x66, 0xfd, 0x65, 0xfd, 0xbd, 0xfd, 0xbf, 0xfd, + 0x14, 0xfe, 0x13, 0xfe, 0x67, 0xfe, 0x6b, 0xfe, 0xba, 0xfe, 0xbb, 0xfe, + 0x0a, 0xff, 0x0a, 0xff, 0x50, 0xff, 0x53, 0xff, 0x96, 0xff, 0x95, 0xff, + 0xce, 0xff, 0xd1, 0xff, 0x03, 0x00, 0x04, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x53, 0x00, 0x53, 0x00, 0x6f, 0x00, 0x71, 0x00, 0x83, 0x00, 0x82, 0x00, + 0x8e, 0x00, 0x8f, 0x00, 0x94, 0x00, 0x94, 0x00, 0x91, 0x00, 0x92, 0x00, + 0x8c, 0x00, 0x8d, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x74, 0x00, 0x75, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x53, 0x00, 0x53, 0x00, 0x44, 0x00, 0x46, 0x00, + 0x35, 0x00, 0x35, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x26, 0x00, 0x27, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x30, 0x00, 0x31, 0x00, 0x3e, 0x00, 0x3e, 0x00, + 0x59, 0x00, 0x5b, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0xa7, 0x00, 0xa7, 0x00, + 0xdf, 0x00, 0xde, 0x00, 0x1d, 0x01, 0x1e, 0x01, 0x69, 0x01, 0x69, 0x01, + 0xbb, 0x01, 0xbd, 0x01, 0x19, 0x02, 0x18, 0x02, 0x7c, 0x02, 0x7d, 0x02, + 0xe6, 0x02, 0xe7, 0x02, 0x57, 0x03, 0x59, 0x03, 0xcc, 0x03, 0xcd, 0x03, + 0x45, 0x04, 0x45, 0x04, 0xbd, 0x04, 0xbd, 0x04, 0x36, 0x05, 0x36, 0x05, + 0xab, 0x05, 0xad, 0x05, 0x1e, 0x06, 0x1f, 0x06, 0x8c, 0x06, 0x8d, 0x06, + 0xf1, 0x06, 0xf0, 0x06, 0x4c, 0x07, 0x4d, 0x07, 0x9d, 0x07, 0x9f, 0x07, + 0xe2, 0x07, 0xe3, 0x07, 0x1b, 0x08, 0x19, 0x08, 0x41, 0x08, 0x45, 0x08, + 0x5e, 0x08, 0x5d, 0x08, 0x66, 0x08, 0x68, 0x08, 0x62, 0x08, 0x63, 0x08, + 0x49, 0x08, 0x4a, 0x08, 0x24, 0x08, 0x22, 0x08, 0xea, 0x07, 0xeb, 0x07, + 0xa2, 0x07, 0xa2, 0x07, 0x4b, 0x07, 0x4c, 0x07, 0xe7, 0x06, 0xe9, 0x06, + 0x77, 0x06, 0x75, 0x06, 0xf9, 0x05, 0xfb, 0x05, 0x71, 0x05, 0x71, 0x05, + 0xe5, 0x04, 0xe5, 0x04, 0x50, 0x04, 0x50, 0x04, 0xb7, 0x03, 0xb8, 0x03, + 0x1b, 0x03, 0x1b, 0x03, 0x7e, 0x02, 0x7c, 0x02, 0xe3, 0x01, 0xe4, 0x01, + 0x4a, 0x01, 0x4a, 0x01, 0xba, 0x00, 0xbb, 0x00, 0x2c, 0x00, 0x2c, 0x00, + 0xab, 0xff, 0xab, 0xff, 0x30, 0xff, 0x32, 0xff, 0xc0, 0xfe, 0xc0, 0xfe, + 0x63, 0xfe, 0x63, 0xfe, 0x08, 0xfe, 0x0a, 0xfe, 0xc2, 0xfd, 0xc3, 0xfd, + 0x87, 0xfd, 0x86, 0xfd, 0x59, 0xfd, 0x5d, 0xfd, 0x3c, 0xfd, 0x3b, 0xfd, + 0x27, 0xfd, 0x29, 0xfd, 0x24, 0xfd, 0x25, 0xfd, 0x29, 0xfd, 0x28, 0xfd, + 0x3a, 0xfd, 0x3d, 0xfd, 0x55, 0xfd, 0x54, 0xfd, 0x76, 0xfd, 0x76, 0xfd, + 0xa2, 0xfd, 0xa1, 0xfd, 0xce, 0xfd, 0xce, 0xfd, 0x01, 0xfe, 0x04, 0xfe, + 0x33, 0xfe, 0x34, 0xfe, 0x6b, 0xfe, 0x6a, 0xfe, 0x9d, 0xfe, 0x9f, 0xfe, + 0xd0, 0xfe, 0xcf, 0xfe, 0xfb, 0xfe, 0xff, 0xfe, 0x27, 0xff, 0x27, 0xff, + 0x49, 0xff, 0x4a, 0xff, 0x66, 0xff, 0x69, 0xff, 0x7a, 0xff, 0x7a, 0xff, + 0x87, 0xff, 0x87, 0xff, 0x8a, 0xff, 0x8b, 0xff, 0x85, 0xff, 0x86, 0xff, + 0x75, 0xff, 0x76, 0xff, 0x62, 0xff, 0x60, 0xff, 0x3f, 0xff, 0x41, 0xff, + 0x1a, 0xff, 0x1a, 0xff, 0xef, 0xfe, 0xf0, 0xfe, 0xba, 0xfe, 0xba, 0xfe, + 0x86, 0xfe, 0x86, 0xfe, 0x48, 0xfe, 0x4a, 0xfe, 0x0d, 0xfe, 0x0c, 0xfe, + 0xd1, 0xfd, 0xd2, 0xfd, 0x93, 0xfd, 0x93, 0xfd, 0x5b, 0xfd, 0x5b, 0xfd, + 0x22, 0xfd, 0x23, 0xfd, 0xf1, 0xfc, 0xf1, 0xfc, 0xc5, 0xfc, 0xc7, 0xfc, + 0xa1, 0xfc, 0xa0, 0xfc, 0x85, 0xfc, 0x85, 0xfc, 0x72, 0xfc, 0x72, 0xfc, + 0x68, 0xfc, 0x69, 0xfc, 0x6a, 0xfc, 0x69, 0xfc, 0x73, 0xfc, 0x76, 0xfc, + 0x8a, 0xfc, 0x8a, 0xfc, 0xac, 0xfc, 0xac, 0xfc, 0xd5, 0xfc, 0xd6, 0xfc, + 0x09, 0xfd, 0x09, 0xfd, 0x45, 0xfd, 0x47, 0xfd, 0x8c, 0xfd, 0x8b, 0xfd, + 0xd6, 0xfd, 0xd7, 0xfd, 0x27, 0xfe, 0x28, 0xfe, 0x7c, 0xfe, 0x7c, 0xfe, + 0xd3, 0xfe, 0xd2, 0xfe, 0x2b, 0xff, 0x2d, 0xff, 0x82, 0xff, 0x83, 0xff, + 0xda, 0xff, 0xda, 0xff, 0x2b, 0x00, 0x2c, 0x00, 0x78, 0x00, 0x79, 0x00, + 0xbf, 0x00, 0xbf, 0x00, 0xfb, 0x00, 0xfc, 0x00, 0x32, 0x01, 0x32, 0x01, + 0x5b, 0x01, 0x5b, 0x01, 0x79, 0x01, 0x7b, 0x01, 0x8b, 0x01, 0x8b, 0x01, + 0x91, 0x01, 0x92, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x77, 0x01, 0x76, 0x01, + 0x52, 0x01, 0x53, 0x01, 0x25, 0x01, 0x25, 0x01, 0xeb, 0x00, 0xec, 0x00, + 0xa6, 0x00, 0xa8, 0x00, 0x58, 0x00, 0x59, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xa2, 0xff, 0xa4, 0xff, 0x3d, 0xff, 0x3d, 0xff, 0xd3, 0xfe, 0xd5, 0xfe, + 0x6a, 0xfe, 0x6a, 0xfe, 0xfb, 0xfd, 0xfe, 0xfd, 0x92, 0xfd, 0x93, 0xfd, + 0x28, 0xfd, 0x29, 0xfd, 0xc3, 0xfc, 0xc4, 0xfc, 0x66, 0xfc, 0x68, 0xfc, + 0x0d, 0xfc, 0x0e, 0xfc, 0xc0, 0xfb, 0xc1, 0xfb, 0x7c, 0xfb, 0x7c, 0xfb, + 0x41, 0xfb, 0x42, 0xfb, 0x16, 0xfb, 0x17, 0xfb, 0xf3, 0xfa, 0xf4, 0xfa, + 0xe0, 0xfa, 0xe1, 0xfa, 0xdc, 0xfa, 0xdb, 0xfa, 0xe1, 0xfa, 0xe1, 0xfa, + 0xf7, 0xfa, 0xf7, 0xfa, 0x16, 0xfb, 0x17, 0xfb, 0x44, 0xfb, 0x43, 0xfb, + 0x7a, 0xfb, 0x7c, 0xfb, 0xbd, 0xfb, 0xbc, 0xfb, 0x06, 0xfc, 0x08, 0xfc, + 0x58, 0xfc, 0x57, 0xfc, 0xb0, 0xfc, 0xb0, 0xfc, 0x0c, 0xfd, 0x0c, 0xfd, + 0x6d, 0xfd, 0x6d, 0xfd, 0xcd, 0xfd, 0xce, 0xfd, 0x2f, 0xfe, 0x30, 0xfe, + 0x8e, 0xfe, 0x8d, 0xfe, 0xe7, 0xfe, 0xea, 0xfe, 0x42, 0xff, 0x42, 0xff, + 0x92, 0xff, 0x92, 0xff, 0xdc, 0xff, 0xde, 0xff, 0x1e, 0x00, 0x1d, 0x00, + 0x57, 0x00, 0x58, 0x00, 0x87, 0x00, 0x86, 0x00, 0xad, 0x00, 0xad, 0x00, + 0xc9, 0x00, 0xc8, 0x00, 0xdc, 0x00, 0xdb, 0x00, 0xe4, 0x00, 0xe6, 0x00, + 0xe4, 0x00, 0xe4, 0x00, 0xde, 0x00, 0xde, 0x00, 0xcd, 0x00, 0xcd, 0x00, + 0xba, 0x00, 0xb9, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x7f, 0x00, 0x7f, 0x00, + 0x60, 0x00, 0x62, 0x00, 0x3f, 0x00, 0x3d, 0x00, 0x1d, 0x00, 0x1d, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xcc, 0xff, 0xce, 0xff, + 0xbc, 0xff, 0xbb, 0xff, 0xb3, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0xb3, 0xff, + 0xbe, 0xff, 0xbd, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xed, 0xff, 0xf0, 0xff, + 0x19, 0x00, 0x17, 0x00, 0x4a, 0x00, 0x4d, 0x00, 0x8c, 0x00, 0x8b, 0x00, + 0xd4, 0x00, 0xd5, 0x00, 0x2b, 0x01, 0x2c, 0x01, 0x85, 0x01, 0x86, 0x01, + 0xed, 0x01, 0xed, 0x01, 0x59, 0x02, 0x59, 0x02, 0xcc, 0x02, 0xce, 0x02, + 0x44, 0x03, 0x44, 0x03, 0xbe, 0x03, 0xbf, 0x03, 0x38, 0x04, 0x3a, 0x04, + 0xb3, 0x04, 0xb4, 0x04, 0x2c, 0x05, 0x2c, 0x05, 0xa0, 0x05, 0xa2, 0x05, + 0x0d, 0x06, 0x0d, 0x06, 0x76, 0x06, 0x77, 0x06, 0xd0, 0x06, 0xd2, 0x06, + 0x25, 0x07, 0x25, 0x07, 0x6b, 0x07, 0x6c, 0x07, 0xa5, 0x07, 0xa4, 0x07, + 0xcf, 0x07, 0xd1, 0x07, 0xec, 0x07, 0xec, 0x07, 0xf8, 0x07, 0xf8, 0x07, + 0xf4, 0x07, 0xf6, 0x07, 0xe2, 0x07, 0xe2, 0x07, 0xc0, 0x07, 0xc2, 0x07, + 0x8d, 0x07, 0x8d, 0x07, 0x4d, 0x07, 0x4e, 0x07, 0xfe, 0x06, 0xfd, 0x06, + 0xa4, 0x06, 0xa5, 0x06, 0x3d, 0x06, 0x3c, 0x06, 0xcb, 0x05, 0xce, 0x05, + 0x54, 0x05, 0x53, 0x05, 0xd2, 0x04, 0xd4, 0x04, 0x4e, 0x04, 0x4e, 0x04, + 0xc5, 0x03, 0xc6, 0x03, 0x3e, 0x03, 0x3e, 0x03, 0xb2, 0x02, 0xb4, 0x02, + 0x2d, 0x02, 0x2d, 0x02, 0xa7, 0x01, 0xa7, 0x01, 0x27, 0x01, 0x2a, 0x01, + 0xb2, 0x00, 0xb0, 0x00, 0x40, 0x00, 0x43, 0x00, 0xdb, 0xff, 0xd9, 0xff, + 0x7d, 0xff, 0x7e, 0xff, 0x2b, 0xff, 0x2c, 0xff, 0xe5, 0xfe, 0xe4, 0xfe, + 0xaa, 0xfe, 0xab, 0xfe, 0x7d, 0xfe, 0x7c, 0xfe, 0x59, 0xfe, 0x57, 0xfe, + 0x3f, 0xfe, 0x3f, 0xfe, 0x34, 0xfe, 0x32, 0xfe, 0x2d, 0xfe, 0x2c, 0xfe, + 0x33, 0xfe, 0x33, 0xfe, 0x3f, 0xfe, 0x40, 0xfe, 0x54, 0xfe, 0x51, 0xfe, + 0x6c, 0xfe, 0x6d, 0xfe, 0x8a, 0xfe, 0x88, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, + 0xc9, 0xfe, 0xca, 0xfe, 0xec, 0xfe, 0xea, 0xfe, 0x09, 0xff, 0x0a, 0xff, + 0x27, 0xff, 0x26, 0xff, 0x3e, 0xff, 0x3f, 0xff, 0x50, 0xff, 0x4f, 0xff, + 0x5f, 0xff, 0x60, 0xff, 0x63, 0xff, 0x63, 0xff, 0x66, 0xff, 0x66, 0xff, + 0x5a, 0xff, 0x5b, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x36, 0xff, 0x34, 0xff, + 0x11, 0xff, 0x14, 0xff, 0xef, 0xfe, 0xed, 0xfe, 0xbf, 0xfe, 0xc2, 0xfe, + 0x90, 0xfe, 0x8d, 0xfe, 0x57, 0xfe, 0x5a, 0xfe, 0x1c, 0xfe, 0x1a, 0xfe, + 0xe0, 0xfd, 0xe0, 0xfd, 0x9e, 0xfd, 0x9e, 0xfd, 0x60, 0xfd, 0x61, 0xfd, + 0x25, 0xfd, 0x25, 0xfd, 0xe9, 0xfc, 0xe8, 0xfc, 0xb3, 0xfc, 0xb4, 0xfc, + 0x81, 0xfc, 0x7f, 0xfc, 0x57, 0xfc, 0x5a, 0xfc, 0x35, 0xfc, 0x35, 0xfc, + 0x1b, 0xfc, 0x1a, 0xfc, 0x0c, 0xfc, 0x0e, 0xfc, 0x08, 0xfc, 0x08, 0xfc, + 0x10, 0xfc, 0x10, 0xfc, 0x20, 0xfc, 0x22, 0xfc, 0x42, 0xfc, 0x41, 0xfc, + 0x6a, 0xfc, 0x6c, 0xfc, 0x9e, 0xfc, 0x9e, 0xfc, 0xe0, 0xfc, 0xe1, 0xfc, + 0x28, 0xfd, 0x27, 0xfd, 0x7b, 0xfd, 0x7d, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, + 0x35, 0xfe, 0x34, 0xfe, 0x9e, 0xfe, 0x9d, 0xfe, 0x03, 0xff, 0x03, 0xff, + 0x71, 0xff, 0x71, 0xff, 0xda, 0xff, 0xdc, 0xff, 0x43, 0x00, 0x42, 0x00, + 0xaa, 0x00, 0xab, 0x00, 0x06, 0x01, 0x06, 0x01, 0x64, 0x01, 0x63, 0x01, + 0xaf, 0x01, 0xae, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0x31, 0x02, 0x31, 0x02, + 0x5d, 0x02, 0x5f, 0x02, 0x80, 0x02, 0x80, 0x02, 0x90, 0x02, 0x8f, 0x02, + 0x91, 0x02, 0x93, 0x02, 0x86, 0x02, 0x84, 0x02, 0x68, 0x02, 0x69, 0x02, + 0x3e, 0x02, 0x3e, 0x02, 0x05, 0x02, 0x03, 0x02, 0xbd, 0x01, 0xbe, 0x01, + 0x68, 0x01, 0x69, 0x01, 0x0c, 0x01, 0x09, 0x01, 0x9e, 0x00, 0xa0, 0x00, + 0x2f, 0x00, 0x2e, 0x00, 0xb5, 0xff, 0xb4, 0xff, 0x36, 0xff, 0x37, 0xff, + 0xb6, 0xfe, 0xb4, 0xfe, 0x30, 0xfe, 0x32, 0xfe, 0xaf, 0xfd, 0xaf, 0xfd, + 0x2e, 0xfd, 0x2e, 0xfd, 0xb2, 0xfc, 0xb3, 0xfc, 0x3b, 0xfc, 0x3a, 0xfc, + 0xcf, 0xfb, 0xcf, 0xfb, 0x68, 0xfb, 0x68, 0xfb, 0x11, 0xfb, 0x0e, 0xfb, + 0xbf, 0xfa, 0xc1, 0xfa, 0x82, 0xfa, 0x7e, 0xfa, 0x4c, 0xfa, 0x4f, 0xfa, + 0x28, 0xfa, 0x26, 0xfa, 0x11, 0xfa, 0x0f, 0xfa, 0x09, 0xfa, 0x09, 0xfa, + 0x10, 0xfa, 0x0f, 0xfa, 0x25, 0xfa, 0x25, 0xfa, 0x45, 0xfa, 0x46, 0xfa, + 0x76, 0xfa, 0x76, 0xfa, 0xb1, 0xfa, 0xb0, 0xfa, 0xf5, 0xfa, 0xf5, 0xfa, + 0x41, 0xfb, 0x42, 0xfb, 0x99, 0xfb, 0x99, 0xfb, 0xf3, 0xfb, 0xf3, 0xfb, + 0x55, 0xfc, 0x55, 0xfc, 0xb7, 0xfc, 0xb6, 0xfc, 0x1b, 0xfd, 0x1b, 0xfd, + 0x81, 0xfd, 0x82, 0xfd, 0xe2, 0xfd, 0xe1, 0xfd, 0x42, 0xfe, 0x43, 0xfe, + 0x9c, 0xfe, 0x9b, 0xfe, 0xf1, 0xfe, 0xef, 0xfe, 0x3d, 0xff, 0x3f, 0xff, + 0x84, 0xff, 0x82, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xf5, 0xff, 0xf6, 0xff, + 0x22, 0x00, 0x1f, 0x00, 0x42, 0x00, 0x45, 0x00, 0x5d, 0x00, 0x5b, 0x00, + 0x6d, 0x00, 0x6f, 0x00, 0x77, 0x00, 0x76, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0x75, 0x00, 0x77, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x62, 0x00, 0x62, 0x00, + 0x51, 0x00, 0x50, 0x00, 0x42, 0x00, 0x42, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x22, 0x00, 0x23, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0e, 0x00, 0x0f, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x1b, 0x00, 0x1c, 0x00, + 0x2b, 0x00, 0x2e, 0x00, 0x4c, 0x00, 0x4b, 0x00, 0x70, 0x00, 0x70, 0x00, + 0xa0, 0x00, 0xa0, 0x00, 0xda, 0x00, 0xdb, 0x00, 0x1a, 0x01, 0x1a, 0x01, + 0x66, 0x01, 0x6a, 0x01, 0xbb, 0x01, 0xba, 0x01, 0x16, 0x02, 0x18, 0x02, + 0x78, 0x02, 0x79, 0x02, 0xe0, 0x02, 0xe0, 0x02, 0x4b, 0x03, 0x4d, 0x03, + 0xba, 0x03, 0xb9, 0x03, 0x29, 0x04, 0x2a, 0x04, 0x9b, 0x04, 0x9c, 0x04, + 0x05, 0x05, 0x06, 0x05, 0x72, 0x05, 0x71, 0x05, 0xd5, 0x05, 0xd7, 0x05, + 0x31, 0x06, 0x32, 0x06, 0x89, 0x06, 0x8a, 0x06, 0xd2, 0x06, 0xd3, 0x06, + 0x15, 0x07, 0x15, 0x07, 0x45, 0x07, 0x48, 0x07, 0x6f, 0x07, 0x6e, 0x07, + 0x85, 0x07, 0x86, 0x07, 0x8d, 0x07, 0x8e, 0x07, 0x88, 0x07, 0x89, 0x07, + 0x74, 0x07, 0x73, 0x07, 0x4f, 0x07, 0x50, 0x07, 0x1e, 0x07, 0x1d, 0x07, + 0xdb, 0x06, 0xde, 0x06, 0x90, 0x06, 0x8d, 0x06, 0x32, 0x06, 0x35, 0x06, + 0xd0, 0x05, 0xcf, 0x05, 0x5f, 0x05, 0x61, 0x05, 0xe9, 0x04, 0xe9, 0x04, + 0x6c, 0x04, 0x6d, 0x04, 0xe8, 0x03, 0xe9, 0x03, 0x66, 0x03, 0x67, 0x03, + 0xdd, 0x02, 0xde, 0x02, 0x5a, 0x02, 0x5a, 0x02, 0xd7, 0x01, 0xd8, 0x01, + 0x58, 0x01, 0x5a, 0x01, 0xe0, 0x00, 0xdf, 0x00, 0x6f, 0x00, 0x70, 0x00, + 0x06, 0x00, 0x07, 0x00, 0xa9, 0xff, 0xa9, 0xff, 0x54, 0xff, 0x56, 0xff, + 0x0f, 0xff, 0x0f, 0xff, 0xd4, 0xfe, 0xd3, 0xfe, 0xa7, 0xfe, 0xa8, 0xfe, + 0x84, 0xfe, 0x84, 0xfe, 0x71, 0xfe, 0x6f, 0xfe, 0x68, 0xfe, 0x69, 0xfe, + 0x6b, 0xfe, 0x69, 0xfe, 0x7a, 0xfe, 0x7b, 0xfe, 0x92, 0xfe, 0x92, 0xfe, + 0xb0, 0xfe, 0xb1, 0xfe, 0xda, 0xfe, 0xdb, 0xfe, 0x06, 0xff, 0x06, 0xff, + 0x38, 0xff, 0x37, 0xff, 0x6b, 0xff, 0x6c, 0xff, 0xa1, 0xff, 0xa0, 0xff, + 0xd6, 0xff, 0xd6, 0xff, 0x08, 0x00, 0x08, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x60, 0x00, 0x61, 0x00, 0x85, 0x00, 0x84, 0x00, 0xa0, 0x00, 0xa2, 0x00, + 0xb4, 0x00, 0xb3, 0x00, 0xbd, 0x00, 0xc0, 0x00, 0xbd, 0x00, 0xbc, 0x00, + 0xb4, 0x00, 0xb5, 0x00, 0xa0, 0x00, 0x9f, 0x00, 0x82, 0x00, 0x82, 0x00, + 0x5a, 0x00, 0x5b, 0x00, 0x28, 0x00, 0x26, 0x00, 0xf0, 0xff, 0xf1, 0xff, + 0xac, 0xff, 0xac, 0xff, 0x68, 0xff, 0x67, 0xff, 0x18, 0xff, 0x18, 0xff, + 0xc8, 0xfe, 0xc7, 0xfe, 0x74, 0xfe, 0x75, 0xfe, 0x20, 0xfe, 0x20, 0xfe, + 0xce, 0xfd, 0xce, 0xfd, 0x7d, 0xfd, 0x7c, 0xfd, 0x2e, 0xfd, 0x30, 0xfd, + 0xe7, 0xfc, 0xe8, 0xfc, 0xa6, 0xfc, 0xa7, 0xfc, 0x6f, 0xfc, 0x6c, 0xfc, + 0x3e, 0xfc, 0x3f, 0xfc, 0x1a, 0xfc, 0x1b, 0xfc, 0x02, 0xfc, 0x01, 0xfc, + 0xf4, 0xfb, 0xf6, 0xfb, 0xf5, 0xfb, 0xf4, 0xfb, 0x01, 0xfc, 0x03, 0xfc, + 0x1b, 0xfc, 0x1b, 0xfc, 0x42, 0xfc, 0x42, 0xfc, 0x74, 0xfc, 0x75, 0xfc, + 0xb4, 0xfc, 0xb3, 0xfc, 0xfb, 0xfc, 0xfd, 0xfc, 0x4e, 0xfd, 0x4e, 0xfd, + 0xa9, 0xfd, 0xaa, 0xfd, 0x09, 0xfe, 0x09, 0xfe, 0x70, 0xfe, 0x70, 0xfe, + 0xd9, 0xfe, 0xd9, 0xfe, 0x42, 0xff, 0x44, 0xff, 0xad, 0xff, 0xad, 0xff, + 0x16, 0x00, 0x16, 0x00, 0x78, 0x00, 0x78, 0x00, 0xd8, 0x00, 0xd7, 0x00, + 0x2c, 0x01, 0x2d, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0xbe, 0x01, 0xbe, 0x01, + 0xf5, 0x01, 0xf7, 0x01, 0x21, 0x02, 0x20, 0x02, 0x3c, 0x02, 0x3e, 0x02, + 0x4e, 0x02, 0x4c, 0x02, 0x4d, 0x02, 0x4e, 0x02, 0x3d, 0x02, 0x3e, 0x02, + 0x1f, 0x02, 0x1f, 0x02, 0xf4, 0x01, 0xf4, 0x01, 0xba, 0x01, 0xbb, 0x01, + 0x74, 0x01, 0x74, 0x01, 0x21, 0x01, 0x21, 0x01, 0xc5, 0x00, 0xc7, 0x00, + 0x62, 0x00, 0x61, 0x00, 0xf4, 0xff, 0xf6, 0xff, 0x83, 0xff, 0x81, 0xff, + 0x0d, 0xff, 0x0e, 0xff, 0x94, 0xfe, 0x95, 0xfe, 0x1e, 0xfe, 0x1e, 0xfe, + 0xa7, 0xfd, 0xa8, 0xfd, 0x34, 0xfd, 0x34, 0xfd, 0xc8, 0xfc, 0xc8, 0xfc, + 0x5f, 0xfc, 0x5f, 0xfc, 0x02, 0xfc, 0x02, 0xfc, 0xaa, 0xfb, 0xab, 0xfb, + 0x60, 0xfb, 0x62, 0xfb, 0x25, 0xfb, 0x23, 0xfb, 0xef, 0xfa, 0xf1, 0xfa, + 0xcd, 0xfa, 0xcb, 0xfa, 0xb2, 0xfa, 0xb5, 0xfa, 0xab, 0xfa, 0xa9, 0xfa, + 0xaa, 0xfa, 0xac, 0xfa, 0xba, 0xfa, 0xba, 0xfa, 0xd3, 0xfa, 0xd5, 0xfa, + 0xf9, 0xfa, 0xfb, 0xfa, 0x2b, 0xfb, 0x2c, 0xfb, 0x63, 0xfb, 0x64, 0xfb, + 0xa5, 0xfb, 0xa5, 0xfb, 0xeb, 0xfb, 0xec, 0xfb, 0x38, 0xfc, 0x39, 0xfc, + 0x87, 0xfc, 0x88, 0xfc, 0xd9, 0xfc, 0xd9, 0xfc, 0x2a, 0xfd, 0x2b, 0xfd, + 0x7a, 0xfd, 0x79, 0xfd, 0xc9, 0xfd, 0xcb, 0xfd, 0x10, 0xfe, 0x11, 0xfe, + 0x57, 0xfe, 0x58, 0xfe, 0x95, 0xfe, 0x98, 0xfe, 0xcc, 0xfe, 0xcb, 0xfe, + 0x00, 0xff, 0x00, 0xff, 0x22, 0xff, 0x23, 0xff, 0x44, 0xff, 0x44, 0xff, + 0x59, 0xff, 0x5b, 0xff, 0x68, 0xff, 0x67, 0xff, 0x70, 0xff, 0x72, 0xff, + 0x6d, 0xff, 0x6d, 0xff, 0x69, 0xff, 0x69, 0xff, 0x59, 0xff, 0x5a, 0xff, + 0x4b, 0xff, 0x4b, 0xff, 0x36, 0xff, 0x36, 0xff, 0x1f, 0xff, 0x1f, 0xff, + 0x0b, 0xff, 0x0c, 0xff, 0xf2, 0xfe, 0xf3, 0xfe, 0xe3, 0xfe, 0xe1, 0xfe, + 0xd0, 0xfe, 0xd2, 0xfe, 0xc8, 0xfe, 0xc6, 0xfe, 0xc5, 0xfe, 0xc6, 0xfe, + 0xc7, 0xfe, 0xc8, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, 0xeb, 0xfe, 0xec, 0xfe, + 0x0e, 0xff, 0x10, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x73, 0xff, 0x72, 0xff, + 0xb5, 0xff, 0xb7, 0xff, 0x04, 0x00, 0x04, 0x00, 0x5d, 0x00, 0x5e, 0x00, + 0xc1, 0x00, 0xc2, 0x00, 0x2e, 0x01, 0x2e, 0x01, 0xa3, 0x01, 0xa4, 0x01, + 0x20, 0x02, 0x20, 0x02, 0xa1, 0x02, 0xa2, 0x02, 0x28, 0x03, 0x29, 0x03, + 0xb0, 0x03, 0xb0, 0x03, 0x3b, 0x04, 0x3b, 0x04, 0xc1, 0x04, 0xc2, 0x04, + 0x47, 0x05, 0x46, 0x05, 0xc8, 0x05, 0xca, 0x05, 0x3f, 0x06, 0x3f, 0x06, + 0xb4, 0x06, 0xb3, 0x06, 0x16, 0x07, 0x17, 0x07, 0x73, 0x07, 0x72, 0x07, + 0xc1, 0x07, 0xc1, 0x07, 0xfc, 0x07, 0xfd, 0x07, 0x32, 0x08, 0x30, 0x08, + 0x4c, 0x08, 0x4d, 0x08, 0x5d, 0x08, 0x5c, 0x08, 0x58, 0x08, 0x59, 0x08, + 0x44, 0x08, 0x42, 0x08, 0x1d, 0x08, 0x1f, 0x08, 0xe4, 0x07, 0xe3, 0x07, + 0x9e, 0x07, 0xa0, 0x07, 0x48, 0x07, 0x46, 0x07, 0xe3, 0x06, 0xe3, 0x06, + 0x73, 0x06, 0x72, 0x06, 0xf6, 0x05, 0xf5, 0x05, 0x72, 0x05, 0x72, 0x05, + 0xe5, 0x04, 0xe4, 0x04, 0x54, 0x04, 0x54, 0x04, 0xbd, 0x03, 0xbe, 0x03, + 0x27, 0x03, 0x25, 0x03, 0x8f, 0x02, 0x91, 0x02, 0xfb, 0x01, 0xfc, 0x01, + 0x6e, 0x01, 0x6c, 0x01, 0xe2, 0x00, 0xe2, 0x00, 0x61, 0x00, 0x61, 0x00, + 0xe8, 0xff, 0xe8, 0xff, 0x79, 0xff, 0x79, 0xff, 0x19, 0xff, 0x1a, 0xff, + 0xc5, 0xfe, 0xc4, 0xfe, 0x7c, 0xfe, 0x7d, 0xfe, 0x44, 0xfe, 0x44, 0xfe, + 0x19, 0xfe, 0x19, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xeb, 0xfd, 0xec, 0xfd, + 0xea, 0xfd, 0xe9, 0xfd, 0xf2, 0xfd, 0xf3, 0xfd, 0x05, 0xfe, 0x05, 0xfe, + 0x25, 0xfe, 0x24, 0xfe, 0x47, 0xfe, 0x49, 0xfe, 0x79, 0xfe, 0x78, 0xfe, + 0xaa, 0xfe, 0xab, 0xfe, 0xe1, 0xfe, 0xe1, 0xfe, 0x1c, 0xff, 0x1c, 0xff, + 0x54, 0xff, 0x54, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0xc6, 0xff, 0xc5, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0x26, 0x00, 0x26, 0x00, 0x4a, 0x00, 0x4a, 0x00, + 0x69, 0x00, 0x6c, 0x00, 0x81, 0x00, 0x7e, 0x00, 0x8b, 0x00, 0x8c, 0x00, + 0x92, 0x00, 0x91, 0x00, 0x88, 0x00, 0x89, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0x62, 0x00, 0x62, 0x00, 0x41, 0x00, 0x40, 0x00, 0x17, 0x00, 0x17, 0x00, + 0xe5, 0xff, 0xe6, 0xff, 0xaf, 0xff, 0xae, 0xff, 0x72, 0xff, 0x73, 0xff, + 0x31, 0xff, 0x31, 0xff, 0xf1, 0xfe, 0xef, 0xfe, 0xa9, 0xfe, 0xab, 0xfe, + 0x68, 0xfe, 0x68, 0xfe, 0x26, 0xfe, 0x25, 0xfe, 0xe7, 0xfd, 0xe9, 0xfd, + 0xb0, 0xfd, 0xaf, 0xfd, 0x7a, 0xfd, 0x7c, 0xfd, 0x53, 0xfd, 0x52, 0xfd, + 0x2a, 0xfd, 0x2b, 0xfd, 0x13, 0xfd, 0x15, 0xfd, 0x02, 0xfd, 0x02, 0xfd, + 0xfb, 0xfc, 0xfe, 0xfc, 0x04, 0xfd, 0x04, 0xfd, 0x14, 0xfd, 0x15, 0xfd, + 0x31, 0xfd, 0x33, 0xfd, 0x58, 0xfd, 0x59, 0xfd, 0x8a, 0xfd, 0x8c, 0xfd, + 0xc6, 0xfd, 0xc8, 0xfd, 0x0a, 0xfe, 0x0a, 0xfe, 0x55, 0xfe, 0x57, 0xfe, + 0xab, 0xfe, 0xaa, 0xfe, 0xfc, 0xfe, 0xff, 0xfe, 0x5a, 0xff, 0x5c, 0xff, + 0xb4, 0xff, 0xb5, 0xff, 0x0f, 0x00, 0x0f, 0x00, 0x6a, 0x00, 0x6b, 0x00, + 0xbc, 0x00, 0xbc, 0x00, 0x0f, 0x01, 0x12, 0x01, 0x56, 0x01, 0x56, 0x01, + 0x98, 0x01, 0x9a, 0x01, 0xd0, 0x01, 0xd0, 0x01, 0xf9, 0x01, 0xfc, 0x01, + 0x1b, 0x02, 0x1c, 0x02, 0x2d, 0x02, 0x2f, 0x02, 0x33, 0x02, 0x34, 0x02, + 0x2b, 0x02, 0x2c, 0x02, 0x14, 0x02, 0x14, 0x02, 0xf0, 0x01, 0xf1, 0x01, + 0xbd, 0x01, 0xbe, 0x01, 0x7f, 0x01, 0x81, 0x01, 0x33, 0x01, 0x34, 0x01, + 0xdc, 0x00, 0xdd, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x11, 0x00, 0x12, 0x00, + 0xa2, 0xff, 0xa6, 0xff, 0x2d, 0xff, 0x2d, 0xff, 0xb4, 0xfe, 0xb6, 0xfe, + 0x3a, 0xfe, 0x3c, 0xfe, 0xc0, 0xfd, 0xc0, 0xfd, 0x48, 0xfd, 0x4a, 0xfd, + 0xd4, 0xfc, 0xd4, 0xfc, 0x64, 0xfc, 0x66, 0xfc, 0xfe, 0xfb, 0xff, 0xfb, + 0x9d, 0xfb, 0x9d, 0xfb, 0x47, 0xfb, 0x4c, 0xfb, 0x01, 0xfb, 0xfe, 0xfa, + 0xc1, 0xfa, 0xc5, 0xfa, 0x92, 0xfa, 0x92, 0xfa, 0x6f, 0xfa, 0x71, 0xfa, + 0x5d, 0xfa, 0x5d, 0xfa, 0x56, 0xfa, 0x57, 0xfa, 0x60, 0xfa, 0x60, 0xfa, + 0x73, 0xfa, 0x75, 0xfa, 0x98, 0xfa, 0x99, 0xfa, 0xc5, 0xfa, 0xc6, 0xfa, + 0xfd, 0xfa, 0xff, 0xfa, 0x40, 0xfb, 0x41, 0xfb, 0x8a, 0xfb, 0x8c, 0xfb, + 0xdc, 0xfb, 0xdd, 0xfb, 0x33, 0xfc, 0x34, 0xfc, 0x8e, 0xfc, 0x8f, 0xfc, + 0xeb, 0xfc, 0xec, 0xfc, 0x47, 0xfd, 0x48, 0xfd, 0xa2, 0xfd, 0xa3, 0xfd, + 0xfd, 0xfd, 0xfe, 0xfd, 0x4f, 0xfe, 0x50, 0xfe, 0x9e, 0xfe, 0x9f, 0xfe, + 0xe7, 0xfe, 0xe9, 0xfe, 0x26, 0xff, 0x26, 0xff, 0x5f, 0xff, 0x60, 0xff, + 0x89, 0xff, 0x8a, 0xff, 0xae, 0xff, 0xaf, 0xff, 0xc8, 0xff, 0xc8, 0xff, + 0xd6, 0xff, 0xd7, 0xff, 0xdc, 0xff, 0xdd, 0xff, 0xd7, 0xff, 0xd8, 0xff, + 0xca, 0xff, 0xcb, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0x9b, 0xff, 0x9e, 0xff, + 0x7c, 0xff, 0x7c, 0xff, 0x58, 0xff, 0x58, 0xff, 0x30, 0xff, 0x31, 0xff, + 0x08, 0xff, 0x09, 0xff, 0xe0, 0xfe, 0xe2, 0xfe, 0xbe, 0xfe, 0xbf, 0xfe, + 0x9b, 0xfe, 0x9a, 0xfe, 0x7f, 0xfe, 0x82, 0xfe, 0x6c, 0xfe, 0x6c, 0xfe, + 0x5d, 0xfe, 0x5d, 0xfe, 0x5a, 0xfe, 0x5c, 0xfe, 0x60, 0xfe, 0x62, 0xfe, + 0x74, 0xfe, 0x75, 0xfe, 0x91, 0xfe, 0x92, 0xfe, 0xbc, 0xfe, 0xbe, 0xfe, + 0xf1, 0xfe, 0xf4, 0xfe, 0x37, 0xff, 0x37, 0xff, 0x83, 0xff, 0x85, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0x45, 0x00, 0x48, 0x00, 0xb4, 0x00, 0xb5, 0x00, + 0x2c, 0x01, 0x2e, 0x01, 0xa9, 0x01, 0xab, 0x01, 0x30, 0x02, 0x2f, 0x02, + 0xb5, 0x02, 0xb8, 0x02, 0x3f, 0x03, 0x41, 0x03, 0xc9, 0x03, 0xcb, 0x03, + 0x52, 0x04, 0x52, 0x04, 0xd8, 0x04, 0xd9, 0x04, 0x56, 0x05, 0x57, 0x05, + 0xcf, 0x05, 0xcf, 0x05, 0x3d, 0x06, 0x3e, 0x06, 0x9f, 0x06, 0xa1, 0x06, + 0xf9, 0x06, 0xfa, 0x06, 0x44, 0x07, 0x46, 0x07, 0x80, 0x07, 0x7f, 0x07, + 0xac, 0x07, 0xad, 0x07, 0xc8, 0x07, 0xca, 0x07, 0xd5, 0x07, 0xd7, 0x07, + 0xd0, 0x07, 0xd1, 0x07, 0xbc, 0x07, 0xbf, 0x07, 0x97, 0x07, 0x98, 0x07, + 0x62, 0x07, 0x63, 0x07, 0x1f, 0x07, 0x22, 0x07, 0xce, 0x06, 0xce, 0x06, + 0x70, 0x06, 0x74, 0x06, 0x0b, 0x06, 0x0a, 0x06, 0x97, 0x05, 0x99, 0x05, + 0x20, 0x05, 0x21, 0x05, 0xa0, 0x04, 0xa0, 0x04, 0x1e, 0x04, 0x1f, 0x04, + 0x98, 0x03, 0x9a, 0x03, 0x15, 0x03, 0x15, 0x03, 0x90, 0x02, 0x91, 0x02, + 0x10, 0x02, 0x14, 0x02, 0x97, 0x01, 0x94, 0x01, 0x21, 0x01, 0x25, 0x01, + 0xb7, 0x00, 0xb7, 0x00, 0x53, 0x00, 0x55, 0x00, 0xfa, 0xff, 0xfb, 0xff, + 0xad, 0xff, 0xae, 0xff, 0x6c, 0xff, 0x6b, 0xff, 0x33, 0xff, 0x37, 0xff, + 0x0c, 0xff, 0x0b, 0xff, 0xed, 0xfe, 0xf0, 0xfe, 0xda, 0xfe, 0xda, 0xfe, + 0xd4, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, 0xd5, 0xfe, 0xe1, 0xfe, 0xe3, 0xfe, + 0xf7, 0xfe, 0xf8, 0xfe, 0x11, 0xff, 0x12, 0xff, 0x34, 0xff, 0x34, 0xff, + 0x56, 0xff, 0x57, 0xff, 0x81, 0xff, 0x82, 0xff, 0xa8, 0xff, 0xa7, 0xff, + 0xd1, 0xff, 0xd4, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0x1b, 0x00, 0x1d, 0x00, + 0x3d, 0x00, 0x3c, 0x00, 0x54, 0x00, 0x54, 0x00, 0x68, 0x00, 0x6b, 0x00, + 0x74, 0x00, 0x74, 0x00, 0x78, 0x00, 0x79, 0x00, 0x75, 0x00, 0x75, 0x00, + 0x64, 0x00, 0x65, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x32, 0x00, 0x32, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0xdb, 0xff, 0xdf, 0xff, 0xaa, 0xff, 0xa8, 0xff, + 0x6e, 0xff, 0x72, 0xff, 0x2e, 0xff, 0x2f, 0xff, 0xed, 0xfe, 0xed, 0xfe, + 0xa8, 0xfe, 0xab, 0xfe, 0x64, 0xfe, 0x63, 0xfe, 0x20, 0xfe, 0x22, 0xfe, + 0xdb, 0xfd, 0xde, 0xfd, 0xa1, 0xfd, 0xa2, 0xfd, 0x65, 0xfd, 0x67, 0xfd, + 0x36, 0xfd, 0x35, 0xfd, 0x08, 0xfd, 0x0a, 0xfd, 0xe8, 0xfc, 0xe9, 0xfc, + 0xcf, 0xfc, 0xd0, 0xfc, 0xc1, 0xfc, 0xc3, 0xfc, 0xc0, 0xfc, 0xc1, 0xfc, + 0xc8, 0xfc, 0xca, 0xfc, 0xdf, 0xfc, 0xe1, 0xfc, 0x01, 0xfd, 0x01, 0xfd, + 0x2c, 0xfd, 0x2e, 0xfd, 0x67, 0xfd, 0x65, 0xfd, 0xa6, 0xfd, 0xa9, 0xfd, + 0xf3, 0xfd, 0xf4, 0xfd, 0x48, 0xfe, 0x4a, 0xfe, 0xa3, 0xfe, 0xa4, 0xfe, + 0x03, 0xff, 0x04, 0xff, 0x69, 0xff, 0x6b, 0xff, 0xcf, 0xff, 0xd1, 0xff, + 0x38, 0x00, 0x39, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x60, 0x01, 0x62, 0x01, 0xb6, 0x01, 0xb6, 0x01, 0x08, 0x02, 0x0a, 0x02, + 0x4c, 0x02, 0x4c, 0x02, 0x87, 0x02, 0x8a, 0x02, 0xb5, 0x02, 0xb6, 0x02, + 0xd6, 0x02, 0xd8, 0x02, 0xec, 0x02, 0xec, 0x02, 0xee, 0x02, 0xef, 0x02, + 0xe6, 0x02, 0xe8, 0x02, 0xca, 0x02, 0xca, 0x02, 0xa3, 0x02, 0xa5, 0x02, + 0x6d, 0x02, 0x6e, 0x02, 0x28, 0x02, 0x27, 0x02, 0xd8, 0x01, 0xda, 0x01, + 0x7a, 0x01, 0x7a, 0x01, 0x13, 0x01, 0x16, 0x01, 0xa4, 0x00, 0xa3, 0x00, + 0x2c, 0x00, 0x30, 0x00, 0xb3, 0xff, 0xb3, 0xff, 0x31, 0xff, 0x33, 0xff, + 0xb1, 0xfe, 0xb1, 0xfe, 0x2f, 0xfe, 0x30, 0xfe, 0xae, 0xfd, 0xb0, 0xfd, + 0x33, 0xfd, 0x33, 0xfd, 0xbd, 0xfc, 0xbd, 0xfc, 0x4f, 0xfc, 0x4f, 0xfc, + 0xe6, 0xfb, 0xe7, 0xfb, 0x8d, 0xfb, 0x8c, 0xfb, 0x39, 0xfb, 0x3b, 0xfb, + 0xf6, 0xfa, 0xf6, 0xfa, 0xbf, 0xfa, 0xbe, 0xfa, 0x92, 0xfa, 0x92, 0xfa, + 0x74, 0xfa, 0x76, 0xfa, 0x65, 0xfa, 0x65, 0xfa, 0x61, 0xfa, 0x62, 0xfa, + 0x6d, 0xfa, 0x6b, 0xfa, 0x83, 0xfa, 0x85, 0xfa, 0xa3, 0xfa, 0xa4, 0xfa, + 0xd1, 0xfa, 0xd2, 0xfa, 0x05, 0xfb, 0x06, 0xfb, 0x44, 0xfb, 0x43, 0xfb, + 0x85, 0xfb, 0x86, 0xfb, 0xce, 0xfb, 0xce, 0xfb, 0x19, 0xfc, 0x17, 0xfc, + 0x65, 0xfc, 0x66, 0xfc, 0xb4, 0xfc, 0xb5, 0xfc, 0x00, 0xfd, 0xff, 0xfc, + 0x48, 0xfd, 0x4a, 0xfd, 0x8f, 0xfd, 0x8d, 0xfd, 0xcd, 0xfd, 0xcf, 0xfd, + 0x09, 0xfe, 0x0a, 0xfe, 0x3a, 0xfe, 0x3a, 0xfe, 0x65, 0xfe, 0x67, 0xfe, + 0x87, 0xfe, 0x86, 0xfe, 0x9c, 0xfe, 0x9d, 0xfe, 0xb0, 0xfe, 0xb1, 0xfe, + 0xb4, 0xfe, 0xb4, 0xfe, 0xb4, 0xfe, 0xb6, 0xfe, 0xab, 0xfe, 0xab, 0xfe, + 0x9b, 0xfe, 0x9c, 0xfe, 0x87, 0xfe, 0x89, 0xfe, 0x6c, 0xfe, 0x6c, 0xfe, + 0x4f, 0xfe, 0x50, 0xfe, 0x2e, 0xfe, 0x30, 0xfe, 0x0f, 0xfe, 0x0e, 0xfe, + 0xf1, 0xfd, 0xf3, 0xfd, 0xd3, 0xfd, 0xd3, 0xfd, 0xbb, 0xfd, 0xbd, 0xfd, + 0xa8, 0xfd, 0xa6, 0xfd, 0x9b, 0xfd, 0x9e, 0xfd, 0x99, 0xfd, 0x98, 0xfd, + 0x9c, 0xfd, 0x9f, 0xfd, 0xb1, 0xfd, 0xaf, 0xfd, 0xca, 0xfd, 0xcb, 0xfd, + 0xf4, 0xfd, 0xf4, 0xfd, 0x28, 0xfe, 0x28, 0xfe, 0x69, 0xfe, 0x6a, 0xfe, + 0xb8, 0xfe, 0xb8, 0xfe, 0x13, 0xff, 0x13, 0xff, 0x7a, 0xff, 0x7b, 0xff, + 0xe9, 0xff, 0xe8, 0xff, 0x64, 0x00, 0x66, 0x00, 0xe8, 0x00, 0xe6, 0x00, + 0x71, 0x01, 0x72, 0x01, 0x02, 0x02, 0x03, 0x02, 0x96, 0x02, 0x96, 0x02, + 0x2f, 0x03, 0x2f, 0x03, 0xc3, 0x03, 0xc4, 0x03, 0x5c, 0x04, 0x5b, 0x04, + 0xeb, 0x04, 0xed, 0x04, 0x7b, 0x05, 0x7a, 0x05, 0xff, 0x05, 0xfe, 0x05, + 0x79, 0x06, 0x7b, 0x06, 0xed, 0x06, 0xec, 0x06, 0x50, 0x07, 0x52, 0x07, + 0xa7, 0x07, 0xa7, 0x07, 0xef, 0x07, 0xef, 0x07, 0x27, 0x08, 0x27, 0x08, + 0x4e, 0x08, 0x50, 0x08, 0x65, 0x08, 0x62, 0x08, 0x69, 0x08, 0x6d, 0x08, + 0x5d, 0x08, 0x5d, 0x08, 0x3e, 0x08, 0x3f, 0x08, 0x10, 0x08, 0x12, 0x08, + 0xd0, 0x07, 0xd1, 0x07, 0x86, 0x07, 0x87, 0x07, 0x26, 0x07, 0x26, 0x07, + 0xc1, 0x06, 0xc2, 0x06, 0x4e, 0x06, 0x4c, 0x06, 0xd0, 0x05, 0xd1, 0x05, + 0x4e, 0x05, 0x4f, 0x05, 0xc3, 0x04, 0xc3, 0x04, 0x38, 0x04, 0x39, 0x04, + 0xa7, 0x03, 0xa9, 0x03, 0x1a, 0x03, 0x19, 0x03, 0x8d, 0x02, 0x8e, 0x02, + 0x04, 0x02, 0x03, 0x02, 0x80, 0x01, 0x82, 0x01, 0x02, 0x01, 0x04, 0x01, + 0x90, 0x00, 0x8f, 0x00, 0x22, 0x00, 0x24, 0x00, 0xc6, 0xff, 0xc4, 0xff, + 0x6f, 0xff, 0x70, 0xff, 0x25, 0xff, 0x27, 0xff, 0xed, 0xfe, 0xee, 0xfe, + 0xb8, 0xfe, 0xba, 0xfe, 0x99, 0xfe, 0x99, 0xfe, 0x7e, 0xfe, 0x7f, 0xfe, + 0x72, 0xfe, 0x74, 0xfe, 0x70, 0xfe, 0x72, 0xfe, 0x75, 0xfe, 0x77, 0xfe, + 0x88, 0xfe, 0x89, 0xfe, 0x9e, 0xfe, 0x9f, 0xfe, 0xbc, 0xfe, 0xbe, 0xfe, + 0xdd, 0xfe, 0xe0, 0xfe, 0x06, 0xff, 0x07, 0xff, 0x2c, 0xff, 0x2e, 0xff, + 0x54, 0xff, 0x53, 0xff, 0x7b, 0xff, 0x7c, 0xff, 0xa0, 0xff, 0xa1, 0xff, + 0xc2, 0xff, 0xc4, 0xff, 0xde, 0xff, 0xde, 0xff, 0xf7, 0xff, 0xf9, 0xff, + 0x08, 0x00, 0x09, 0x00, 0x16, 0x00, 0x17, 0x00, 0x19, 0x00, 0x1b, 0x00, + 0x16, 0x00, 0x16, 0x00, 0x0e, 0x00, 0x10, 0x00, 0xfd, 0xff, 0xfe, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xc9, 0xff, 0xcc, 0xff, 0xa8, 0xff, 0xa8, 0xff, + 0x84, 0xff, 0x84, 0xff, 0x59, 0xff, 0x5a, 0xff, 0x2e, 0xff, 0x2e, 0xff, + 0x02, 0xff, 0x03, 0xff, 0xd6, 0xfe, 0xd6, 0xfe, 0xac, 0xfe, 0xad, 0xfe, + 0x84, 0xfe, 0x83, 0xfe, 0x5f, 0xfe, 0x61, 0xfe, 0x40, 0xfe, 0x40, 0xfe, + 0x26, 0xfe, 0x28, 0xfe, 0x14, 0xfe, 0x14, 0xfe, 0x0b, 0xfe, 0x0a, 0xfe, + 0x07, 0xfe, 0x09, 0xfe, 0x0e, 0xfe, 0x0f, 0xfe, 0x1e, 0xfe, 0x20, 0xfe, + 0x3a, 0xfe, 0x37, 0xfe, 0x59, 0xfe, 0x5b, 0xfe, 0x88, 0xfe, 0x88, 0xfe, + 0xbb, 0xfe, 0xbb, 0xfe, 0xf8, 0xfe, 0xf8, 0xfe, 0x3f, 0xff, 0x3f, 0xff, + 0x87, 0xff, 0x88, 0xff, 0xd6, 0xff, 0xd9, 0xff, 0x2c, 0x00, 0x2a, 0x00, + 0x7e, 0x00, 0x80, 0x00, 0xd8, 0x00, 0xd8, 0x00, 0x2a, 0x01, 0x2b, 0x01, + 0x7e, 0x01, 0x7c, 0x01, 0xc8, 0x01, 0xca, 0x01, 0x11, 0x02, 0x11, 0x02, + 0x50, 0x02, 0x51, 0x02, 0x84, 0x02, 0x86, 0x02, 0xb4, 0x02, 0xb3, 0x02, + 0xd0, 0x02, 0xd2, 0x02, 0xe7, 0x02, 0xe5, 0x02, 0xec, 0x02, 0xed, 0x02, + 0xe3, 0x02, 0xe4, 0x02, 0xce, 0x02, 0xce, 0x02, 0xa6, 0x02, 0xa8, 0x02, + 0x75, 0x02, 0x75, 0x02, 0x32, 0x02, 0x34, 0x02, 0xe0, 0x01, 0xe3, 0x01, + 0x85, 0x01, 0x85, 0x01, 0x1b, 0x01, 0x1c, 0x01, 0xa9, 0x00, 0xa9, 0x00, + 0x2c, 0x00, 0x2c, 0x00, 0xa7, 0xff, 0xa8, 0xff, 0x1f, 0xff, 0x1e, 0xff, + 0x8d, 0xfe, 0x8e, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x6f, 0xfd, 0x6e, 0xfd, + 0xe0, 0xfc, 0xe2, 0xfc, 0x57, 0xfc, 0x57, 0xfc, 0xd1, 0xfb, 0xd2, 0xfb, + 0x56, 0xfb, 0x56, 0xfb, 0xe0, 0xfa, 0xe0, 0xfa, 0x77, 0xfa, 0x78, 0xfa, + 0x1a, 0xfa, 0x1b, 0xfa, 0xcd, 0xf9, 0xcd, 0xf9, 0x8c, 0xf9, 0x8d, 0xf9, + 0x5c, 0xf9, 0x5d, 0xf9, 0x3c, 0xf9, 0x3b, 0xf9, 0x2b, 0xf9, 0x2c, 0xf9, + 0x2b, 0xf9, 0x2d, 0xf9, 0x3c, 0xf9, 0x3d, 0xf9, 0x5c, 0xf9, 0x5c, 0xf9, + 0x8a, 0xf9, 0x8b, 0xf9, 0xc9, 0xf9, 0xc7, 0xf9, 0x0e, 0xfa, 0x10, 0xfa, + 0x66, 0xfa, 0x66, 0xfa, 0xc1, 0xfa, 0xc1, 0xfa, 0x28, 0xfb, 0x2b, 0xfb, + 0x94, 0xfb, 0x93, 0xfb, 0x04, 0xfc, 0x07, 0xfc, 0x78, 0xfc, 0x77, 0xfc, + 0xeb, 0xfc, 0xed, 0xfc, 0x61, 0xfd, 0x60, 0xfd, 0xce, 0xfd, 0xd0, 0xfd, + 0x3e, 0xfe, 0x3d, 0xfe, 0xa2, 0xfe, 0xa5, 0xfe, 0x01, 0xff, 0x02, 0xff, + 0x5a, 0xff, 0x5a, 0xff, 0xa4, 0xff, 0xa5, 0xff, 0xe6, 0xff, 0xe8, 0xff, + 0x1c, 0x00, 0x1e, 0x00, 0x49, 0x00, 0x49, 0x00, 0x6a, 0x00, 0x6b, 0x00, + 0x79, 0x00, 0x7b, 0x00, 0x88, 0x00, 0x88, 0x00, 0x80, 0x00, 0x81, 0x00, + 0x78, 0x00, 0x7a, 0x00, 0x62, 0x00, 0x63, 0x00, 0x44, 0x00, 0x45, 0x00, + 0x22, 0x00, 0x24, 0x00, 0xf8, 0xff, 0xf8, 0xff, 0xcd, 0xff, 0xcf, 0xff, + 0x9f, 0xff, 0xa0, 0xff, 0x70, 0xff, 0x72, 0xff, 0x43, 0xff, 0x42, 0xff, + 0x16, 0xff, 0x18, 0xff, 0xf2, 0xfe, 0xf1, 0xfe, 0xd0, 0xfe, 0xd2, 0xfe, + 0xb7, 0xfe, 0xb8, 0xfe, 0xa5, 0xfe, 0xa5, 0xfe, 0x9c, 0xfe, 0x9e, 0xfe, + 0xa0, 0xfe, 0x9f, 0xfe, 0xac, 0xfe, 0xac, 0xfe, 0xc3, 0xfe, 0xc5, 0xfe, + 0xe5, 0xfe, 0xe5, 0xfe, 0x12, 0xff, 0x14, 0xff, 0x4b, 0xff, 0x4c, 0xff, + 0x8f, 0xff, 0x8e, 0xff, 0xdc, 0xff, 0xdd, 0xff, 0x32, 0x00, 0x32, 0x00, + 0x8e, 0x00, 0x8f, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0x5b, 0x01, 0x5b, 0x01, + 0xc9, 0x01, 0xca, 0x01, 0x38, 0x02, 0x38, 0x02, 0xa4, 0x02, 0xa7, 0x02, + 0x17, 0x03, 0x16, 0x03, 0x7e, 0x03, 0x80, 0x03, 0xe8, 0x03, 0xe7, 0x03, + 0x47, 0x04, 0x4b, 0x04, 0xa2, 0x04, 0xa0, 0x04, 0xf3, 0x04, 0xf5, 0x04, + 0x39, 0x05, 0x3a, 0x05, 0x77, 0x05, 0x78, 0x05, 0xa9, 0x05, 0xa9, 0x05, + 0xca, 0x05, 0xcc, 0x05, 0xe5, 0x05, 0xe5, 0x05, 0xee, 0x05, 0xf1, 0x05, + 0xef, 0x05, 0xee, 0x05, 0xdf, 0x05, 0xe3, 0x05, 0xc6, 0x05, 0xc3, 0x05, + 0x9f, 0x05, 0xa2, 0x05, 0x70, 0x05, 0x70, 0x05, 0x36, 0x05, 0x36, 0x05, + 0xf4, 0x04, 0xf6, 0x04, 0xac, 0x04, 0xac, 0x04, 0x5e, 0x04, 0x5f, 0x04, + 0x0d, 0x04, 0x0e, 0x04, 0xb7, 0x03, 0xb9, 0x03, 0x64, 0x03, 0x64, 0x03, + 0x0e, 0x03, 0x0f, 0x03, 0xbc, 0x02, 0xbc, 0x02, 0x6c, 0x02, 0x6e, 0x02, + 0x21, 0x02, 0x24, 0x02, 0xdf, 0x01, 0xde, 0x01, 0x9f, 0x01, 0xa1, 0x01, + 0x6b, 0x01, 0x6c, 0x01, 0x3e, 0x01, 0x3f, 0x01, 0x18, 0x01, 0x1a, 0x01, + 0xfe, 0x00, 0x00, 0x01, 0xe9, 0x00, 0xe9, 0x00, 0xdf, 0x00, 0xe2, 0x00, + 0xde, 0x00, 0xdd, 0x00, 0xe3, 0x00, 0xe5, 0x00, 0xef, 0x00, 0xf0, 0x00, + 0x05, 0x01, 0x06, 0x01, 0x1c, 0x01, 0x1d, 0x01, 0x37, 0x01, 0x38, 0x01, + 0x56, 0x01, 0x58, 0x01, 0x75, 0x01, 0x77, 0x01, 0x95, 0x01, 0x97, 0x01, + 0xb4, 0x01, 0xb3, 0x01, 0xcb, 0x01, 0xcf, 0x01, 0xe8, 0x01, 0xe5, 0x01, + 0xf3, 0x01, 0xf5, 0x01, 0x00, 0x02, 0xff, 0x01, 0xff, 0x01, 0x01, 0x02, + 0xfa, 0x01, 0xfa, 0x01, 0xe9, 0x01, 0xe8, 0x01, 0xcd, 0x01, 0xce, 0x01, + 0xa9, 0x01, 0xaa, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x40, 0x01, 0x40, 0x01, + 0xfc, 0x00, 0xfc, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0x5b, 0x00, 0x5a, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x9d, 0xff, 0x9d, 0xff, 0x36, 0xff, 0x38, 0xff, + 0xcf, 0xfe, 0xcf, 0xfe, 0x64, 0xfe, 0x63, 0xfe, 0xf8, 0xfd, 0xfb, 0xfd, + 0x92, 0xfd, 0x92, 0xfd, 0x2d, 0xfd, 0x2f, 0xfd, 0xcc, 0xfc, 0xce, 0xfc, + 0x76, 0xfc, 0x75, 0xfc, 0x25, 0xfc, 0x27, 0xfc, 0xe2, 0xfb, 0xe0, 0xfb, + 0xa5, 0xfb, 0xa9, 0xfb, 0x79, 0xfb, 0x78, 0xfb, 0x59, 0xfb, 0x5a, 0xfb, + 0x47, 0xfb, 0x48, 0xfb, 0x46, 0xfb, 0x45, 0xfb, 0x50, 0xfb, 0x51, 0xfb, + 0x6d, 0xfb, 0x6d, 0xfb, 0x98, 0xfb, 0x9a, 0xfb, 0xd2, 0xfb, 0xd2, 0xfb, + 0x1d, 0xfc, 0x1e, 0xfc, 0x72, 0xfc, 0x73, 0xfc, 0xd4, 0xfc, 0xd6, 0xfc, + 0x43, 0xfd, 0x43, 0xfd, 0xb8, 0xfd, 0xb9, 0xfd, 0x3a, 0xfe, 0x38, 0xfe, + 0xbc, 0xfe, 0xbc, 0xfe, 0x45, 0xff, 0x45, 0xff, 0xd1, 0xff, 0xd2, 0xff, + 0x5a, 0x00, 0x5b, 0x00, 0xe2, 0x00, 0xe1, 0x00, 0x65, 0x01, 0x66, 0x01, + 0xe1, 0x01, 0xe2, 0x01, 0x57, 0x02, 0x59, 0x02, 0xbf, 0x02, 0xc0, 0x02, + 0x1f, 0x03, 0x20, 0x03, 0x70, 0x03, 0x70, 0x03, 0xb1, 0x03, 0xb2, 0x03, + 0xe5, 0x03, 0xe7, 0x03, 0x04, 0x04, 0x04, 0x04, 0x18, 0x04, 0x1a, 0x04, + 0x15, 0x04, 0x16, 0x04, 0x05, 0x04, 0x05, 0x04, 0xe2, 0x03, 0xe4, 0x03, + 0xaf, 0x03, 0xae, 0x03, 0x6b, 0x03, 0x6d, 0x03, 0x19, 0x03, 0x1a, 0x03, + 0xba, 0x02, 0xba, 0x02, 0x4e, 0x02, 0x50, 0x02, 0xd7, 0x01, 0xd8, 0x01, + 0x5a, 0x01, 0x59, 0x01, 0xd0, 0x00, 0xd4, 0x00, 0x47, 0x00, 0x45, 0x00, + 0xb7, 0xff, 0xbb, 0xff, 0x28, 0xff, 0x28, 0xff, 0x9b, 0xfe, 0x9d, 0xfe, + 0x0e, 0xfe, 0x0f, 0xfe, 0x88, 0xfd, 0x87, 0xfd, 0x04, 0xfd, 0x07, 0xfd, + 0x8e, 0xfc, 0x8d, 0xfc, 0x1d, 0xfc, 0x1e, 0xfc, 0xb6, 0xfb, 0xb7, 0xfb, + 0x5e, 0xfb, 0x5e, 0xfb, 0x0d, 0xfb, 0x0e, 0xfb, 0xcd, 0xfa, 0xce, 0xfa, + 0x98, 0xfa, 0x99, 0xfa, 0x72, 0xfa, 0x72, 0xfa, 0x57, 0xfa, 0x58, 0xfa, + 0x49, 0xfa, 0x49, 0xfa, 0x47, 0xfa, 0x48, 0xfa, 0x51, 0xfa, 0x53, 0xfa, + 0x62, 0xfa, 0x64, 0xfa, 0x84, 0xfa, 0x83, 0xfa, 0xa7, 0xfa, 0xa8, 0xfa, + 0xd5, 0xfa, 0xd4, 0xfa, 0x09, 0xfb, 0x08, 0xfb, 0x3d, 0xfb, 0x3f, 0xfb, + 0x7a, 0xfb, 0x79, 0xfb, 0xb3, 0xfb, 0xb6, 0xfb, 0xf0, 0xfb, 0xef, 0xfb, + 0x2a, 0xfc, 0x2b, 0xfc, 0x63, 0xfc, 0x63, 0xfc, 0x98, 0xfc, 0x98, 0xfc, + 0xca, 0xfc, 0xcb, 0xfc, 0xf6, 0xfc, 0xf7, 0xfc, 0x21, 0xfd, 0x22, 0xfd, + 0x41, 0xfd, 0x41, 0xfd, 0x5e, 0xfd, 0x5e, 0xfd, 0x75, 0xfd, 0x75, 0xfd, + 0x85, 0xfd, 0x87, 0xfd, 0x94, 0xfd, 0x94, 0xfd, 0x99, 0xfd, 0x9a, 0xfd, + 0xa1, 0xfd, 0xa0, 0xfd, 0xa1, 0xfd, 0xa1, 0xfd, 0xa1, 0xfd, 0xa1, 0xfd, + 0xa1, 0xfd, 0xa0, 0xfd, 0x9e, 0xfd, 0xa1, 0xfd, 0xa3, 0xfd, 0xa3, 0xfd, + 0xa6, 0xfd, 0xa5, 0xfd, 0xae, 0xfd, 0xaf, 0xfd, 0xbb, 0xfd, 0xba, 0xfd, + 0xcf, 0xfd, 0xd1, 0xfd, 0xec, 0xfd, 0xea, 0xfd, 0x0d, 0xfe, 0x0d, 0xfe, + 0x39, 0xfe, 0x3a, 0xfe, 0x6f, 0xfe, 0x6f, 0xfe, 0xac, 0xfe, 0xac, 0xfe, + 0xf8, 0xfe, 0xf8, 0xfe, 0x46, 0xff, 0x47, 0xff, 0xa5, 0xff, 0xa5, 0xff, + 0x0a, 0x00, 0x09, 0x00, 0x74, 0x00, 0x76, 0x00, 0xed, 0x00, 0xee, 0x00, + 0x65, 0x01, 0x65, 0x01, 0xe7, 0x01, 0xe8, 0x01, 0x6b, 0x02, 0x6a, 0x02, + 0xef, 0x02, 0xf0, 0x02, 0x7a, 0x03, 0x78, 0x03, 0xfb, 0x03, 0xfc, 0x03, + 0x80, 0x04, 0x7f, 0x04, 0xfb, 0x04, 0xfc, 0x04, 0x75, 0x05, 0x75, 0x05, + 0xe4, 0x05, 0xe6, 0x05, 0x4c, 0x06, 0x4a, 0x06, 0xa8, 0x06, 0xa9, 0x06, + 0xf6, 0x06, 0xf4, 0x06, 0x38, 0x07, 0x38, 0x07, 0x69, 0x07, 0x69, 0x07, + 0x8d, 0x07, 0x8d, 0x07, 0x9f, 0x07, 0xa0, 0x07, 0xa3, 0x07, 0xa3, 0x07, + 0x95, 0x07, 0x95, 0x07, 0x75, 0x07, 0x75, 0x07, 0x46, 0x07, 0x47, 0x07, + 0x07, 0x07, 0x07, 0x07, 0xb9, 0x06, 0xbb, 0x06, 0x5c, 0x06, 0x5c, 0x06, + 0xf5, 0x05, 0xf7, 0x05, 0x81, 0x05, 0x81, 0x05, 0x05, 0x05, 0x06, 0x05, + 0x81, 0x04, 0x82, 0x04, 0xf7, 0x03, 0xf6, 0x03, 0x68, 0x03, 0x6a, 0x03, + 0xda, 0x02, 0xd9, 0x02, 0x4a, 0x02, 0x4b, 0x02, 0xbe, 0x01, 0xbf, 0x01, + 0x34, 0x01, 0x34, 0x01, 0xb2, 0x00, 0xb4, 0x00, 0x39, 0x00, 0x39, 0x00, + 0xc8, 0xff, 0xca, 0xff, 0x65, 0xff, 0x64, 0xff, 0x09, 0xff, 0x0a, 0xff, + 0xbe, 0xfe, 0xbd, 0xfe, 0x81, 0xfe, 0x83, 0xfe, 0x53, 0xfe, 0x52, 0xfe, + 0x33, 0xfe, 0x33, 0xfe, 0x23, 0xfe, 0x24, 0xfe, 0x20, 0xfe, 0x1f, 0xfe, + 0x2e, 0xfe, 0x2e, 0xfe, 0x47, 0xfe, 0x47, 0xfe, 0x6e, 0xfe, 0x6d, 0xfe, + 0x9f, 0xfe, 0xa1, 0xfe, 0xdc, 0xfe, 0xd9, 0xfe, 0x1e, 0xff, 0x1f, 0xff, + 0x68, 0xff, 0x67, 0xff, 0xb9, 0xff, 0xb8, 0xff, 0x0c, 0x00, 0x0c, 0x00, + 0x60, 0x00, 0x5f, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0x05, 0x01, 0x05, 0x01, + 0x56, 0x01, 0x54, 0x01, 0x9b, 0x01, 0x9b, 0x01, 0xdd, 0x01, 0xdc, 0x01, + 0x15, 0x02, 0x15, 0x02, 0x44, 0x02, 0x44, 0x02, 0x69, 0x02, 0x6b, 0x02, + 0x83, 0x02, 0x81, 0x02, 0x8f, 0x02, 0x91, 0x02, 0x91, 0x02, 0x91, 0x02, + 0x88, 0x02, 0x87, 0x02, 0x71, 0x02, 0x71, 0x02, 0x4e, 0x02, 0x4e, 0x02, + 0x23, 0x02, 0x24, 0x02, 0xec, 0x01, 0xeb, 0x01, 0xae, 0x01, 0xad, 0x01, + 0x65, 0x01, 0x65, 0x01, 0x18, 0x01, 0x1a, 0x01, 0xc8, 0x00, 0xc6, 0x00, + 0x70, 0x00, 0x72, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0xc4, 0xff, 0xc4, 0xff, + 0x6f, 0xff, 0x70, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0xcf, 0xfe, 0xcf, 0xfe, + 0x89, 0xfe, 0x89, 0xfe, 0x47, 0xfe, 0x48, 0xfe, 0x10, 0xfe, 0x10, 0xfe, + 0xe2, 0xfd, 0xe4, 0xfd, 0xbe, 0xfd, 0xbd, 0xfd, 0xa5, 0xfd, 0xa7, 0xfd, + 0x98, 0xfd, 0x97, 0xfd, 0x97, 0xfd, 0x98, 0xfd, 0x9f, 0xfd, 0x9f, 0xfd, + 0xb3, 0xfd, 0xb2, 0xfd, 0xd3, 0xfd, 0xd2, 0xfd, 0xf9, 0xfd, 0xfa, 0xfd, + 0x2c, 0xfe, 0x2a, 0xfe, 0x61, 0xfe, 0x62, 0xfe, 0xa2, 0xfe, 0xa3, 0xfe, + 0xe7, 0xfe, 0xe6, 0xfe, 0x2d, 0xff, 0x2d, 0xff, 0x79, 0xff, 0x79, 0xff, + 0xc2, 0xff, 0xc3, 0xff, 0x0c, 0x00, 0x0e, 0x00, 0x53, 0x00, 0x52, 0x00, + 0x94, 0x00, 0x97, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0x09, 0x01, 0x08, 0x01, + 0x35, 0x01, 0x39, 0x01, 0x5c, 0x01, 0x5c, 0x01, 0x75, 0x01, 0x75, 0x01, + 0x85, 0x01, 0x87, 0x01, 0x89, 0x01, 0x89, 0x01, 0x81, 0x01, 0x82, 0x01, + 0x70, 0x01, 0x6f, 0x01, 0x4f, 0x01, 0x4f, 0x01, 0x26, 0x01, 0x27, 0x01, + 0xf1, 0x00, 0xf2, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0x6e, 0x00, 0x70, 0x00, + 0x1f, 0x00, 0x20, 0x00, 0xcb, 0xff, 0xcc, 0xff, 0x72, 0xff, 0x73, 0xff, + 0x14, 0xff, 0x15, 0xff, 0xb7, 0xfe, 0xb6, 0xfe, 0x56, 0xfe, 0x58, 0xfe, + 0xf8, 0xfd, 0xf8, 0xfd, 0x9f, 0xfd, 0x9d, 0xfd, 0x45, 0xfd, 0x47, 0xfd, + 0xf4, 0xfc, 0xf3, 0xfc, 0xa9, 0xfc, 0xab, 0xfc, 0x65, 0xfc, 0x66, 0xfc, + 0x2e, 0xfc, 0x2d, 0xfc, 0xfb, 0xfb, 0xfe, 0xfb, 0xd8, 0xfb, 0xd7, 0xfb, + 0xbe, 0xfb, 0xbd, 0xfb, 0xac, 0xfb, 0xad, 0xfb, 0xa8, 0xfb, 0xa8, 0xfb, + 0xaf, 0xfb, 0xaf, 0xfb, 0xbe, 0xfb, 0xbf, 0xfb, 0xdb, 0xfb, 0xda, 0xfb, + 0xfc, 0xfb, 0xfe, 0xfb, 0x28, 0xfc, 0x26, 0xfc, 0x5a, 0xfc, 0x5a, 0xfc, + 0x90, 0xfc, 0x91, 0xfc, 0xcb, 0xfc, 0xca, 0xfc, 0x08, 0xfd, 0x09, 0xfd, + 0x47, 0xfd, 0x47, 0xfd, 0x86, 0xfd, 0x86, 0xfd, 0xc1, 0xfd, 0xc3, 0xfd, + 0xfd, 0xfd, 0xfc, 0xfd, 0x30, 0xfe, 0x32, 0xfe, 0x61, 0xfe, 0x60, 0xfe, + 0x88, 0xfe, 0x8a, 0xfe, 0xa9, 0xfe, 0xa7, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, + 0xce, 0xfe, 0xd0, 0xfe, 0xd7, 0xfe, 0xd6, 0xfe, 0xd0, 0xfe, 0xd1, 0xfe, + 0xc1, 0xfe, 0xc4, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, 0x88, 0xfe, 0x89, 0xfe, + 0x60, 0xfe, 0x60, 0xfe, 0x2e, 0xfe, 0x2f, 0xfe, 0xf8, 0xfd, 0xf9, 0xfd, + 0xba, 0xfd, 0xbc, 0xfd, 0x7d, 0xfd, 0x7e, 0xfd, 0x3b, 0xfd, 0x3b, 0xfd, + 0xfb, 0xfc, 0xfc, 0xfc, 0xb9, 0xfc, 0xbb, 0xfc, 0x7d, 0xfc, 0x7e, 0xfc, + 0x47, 0xfc, 0x47, 0xfc, 0x15, 0xfc, 0x16, 0xfc, 0xea, 0xfb, 0xeb, 0xfb, + 0xcd, 0xfb, 0xce, 0xfb, 0xb6, 0xfb, 0xb7, 0xfb, 0xae, 0xfb, 0xaf, 0xfb, + 0xb3, 0xfb, 0xb3, 0xfb, 0xc5, 0xfb, 0xc7, 0xfb, 0xe9, 0xfb, 0xe8, 0xfb, + 0x18, 0xfc, 0x19, 0xfc, 0x57, 0xfc, 0x58, 0xfc, 0xa6, 0xfc, 0xa5, 0xfc, + 0x02, 0xfd, 0x03, 0xfd, 0x6e, 0xfd, 0x6f, 0xfd, 0xe6, 0xfd, 0xe7, 0xfd, + 0x6c, 0xfe, 0x6d, 0xfe, 0xfa, 0xfe, 0xfa, 0xfe, 0x95, 0xff, 0x94, 0xff, + 0x34, 0x00, 0x34, 0x00, 0xda, 0x00, 0xd8, 0x00, 0x85, 0x01, 0x83, 0x01, + 0x2c, 0x02, 0x2c, 0x02, 0xd9, 0x02, 0xd7, 0x02, 0x7e, 0x03, 0x7e, 0x03, + 0x21, 0x04, 0x20, 0x04, 0xbf, 0x04, 0xbe, 0x04, 0x4d, 0x05, 0x4e, 0x05, + 0xd9, 0x05, 0xd9, 0x05, 0x55, 0x06, 0x54, 0x06, 0xc2, 0x06, 0xc3, 0x06, + 0x23, 0x07, 0x21, 0x07, 0x73, 0x07, 0x73, 0x07, 0xaf, 0x07, 0xb0, 0x07, + 0xe0, 0x07, 0xdf, 0x07, 0xf9, 0x07, 0xfa, 0x07, 0x03, 0x08, 0x03, 0x08, + 0xfc, 0x07, 0xfc, 0x07, 0xe3, 0x07, 0xe4, 0x07, 0xbb, 0x07, 0xba, 0x07, + 0x82, 0x07, 0x82, 0x07, 0x3b, 0x07, 0x3c, 0x07, 0xea, 0x06, 0xe8, 0x06, + 0x88, 0x06, 0x8a, 0x06, 0x20, 0x06, 0x20, 0x06, 0xb1, 0x05, 0xb1, 0x05, + 0x38, 0x05, 0x38, 0x05, 0xbd, 0x04, 0xbe, 0x04, 0x3f, 0x04, 0x3f, 0x04, + 0xc0, 0x03, 0xc0, 0x03, 0x43, 0x03, 0x43, 0x03, 0xc8, 0x02, 0xc8, 0x02, + 0x50, 0x02, 0x51, 0x02, 0xe0, 0x01, 0xe0, 0x01, 0x78, 0x01, 0x78, 0x01, + 0x16, 0x01, 0x16, 0x01, 0xbc, 0x00, 0xbd, 0x00, 0x6f, 0x00, 0x72, 0x00, + 0x2c, 0x00, 0x2c, 0x00, 0xf4, 0xff, 0xf5, 0xff, 0xc6, 0xff, 0xc7, 0xff, + 0xa4, 0xff, 0xa4, 0xff, 0x8a, 0xff, 0x8b, 0xff, 0x7c, 0xff, 0x7c, 0xff, + 0x76, 0xff, 0x77, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x85, 0xff, 0x86, 0xff, + 0x95, 0xff, 0x95, 0xff, 0xac, 0xff, 0xad, 0xff, 0xc4, 0xff, 0xc4, 0xff, + 0xe3, 0xff, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x1f, 0x00, + 0x3a, 0x00, 0x39, 0x00, 0x52, 0x00, 0x52, 0x00, 0x6b, 0x00, 0x6d, 0x00, + 0x7b, 0x00, 0x79, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x8c, 0x00, 0x8e, 0x00, + 0x8e, 0x00, 0x90, 0x00, 0x88, 0x00, 0x89, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0x69, 0x00, 0x69, 0x00, 0x4f, 0x00, 0x4e, 0x00, 0x2f, 0x00, 0x30, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0xe1, 0xff, 0xe2, 0xff, 0xb6, 0xff, 0xb7, 0xff, + 0x87, 0xff, 0x89, 0xff, 0x5b, 0xff, 0x59, 0xff, 0x2a, 0xff, 0x2b, 0xff, + 0xff, 0xfe, 0xfe, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, 0xab, 0xfe, 0xad, 0xfe, + 0x8a, 0xfe, 0x88, 0xfe, 0x6c, 0xfe, 0x6e, 0xfe, 0x59, 0xfe, 0x57, 0xfe, + 0x4b, 0xfe, 0x4c, 0xfe, 0x47, 0xfe, 0x47, 0xfe, 0x4b, 0xfe, 0x4b, 0xfe, + 0x5a, 0xfe, 0x59, 0xfe, 0x72, 0xfe, 0x72, 0xfe, 0x96, 0xfe, 0x95, 0xfe, + 0xc2, 0xfe, 0xc3, 0xfe, 0xf9, 0xfe, 0xf8, 0xfe, 0x39, 0xff, 0x38, 0xff, + 0x80, 0xff, 0x81, 0xff, 0xce, 0xff, 0xce, 0xff, 0x26, 0x00, 0x26, 0x00, + 0x7f, 0x00, 0x80, 0x00, 0xdd, 0x00, 0xdc, 0x00, 0x3d, 0x01, 0x3d, 0x01, + 0x9c, 0x01, 0x9c, 0x01, 0xfd, 0x01, 0xfd, 0x01, 0x56, 0x02, 0x56, 0x02, + 0xad, 0x02, 0xae, 0x02, 0x00, 0x03, 0xfd, 0x02, 0x45, 0x03, 0x45, 0x03, + 0x86, 0x03, 0x84, 0x03, 0xb5, 0x03, 0xb7, 0x03, 0xe0, 0x03, 0xdf, 0x03, + 0xf8, 0x03, 0xf8, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x04, 0x00, 0x04, + 0xf0, 0x03, 0xf1, 0x03, 0xcf, 0x03, 0xce, 0x03, 0x9e, 0x03, 0xa0, 0x03, + 0x5e, 0x03, 0x5d, 0x03, 0x0e, 0x03, 0x11, 0x03, 0xb5, 0x02, 0xb4, 0x02, + 0x48, 0x02, 0x49, 0x02, 0xd7, 0x01, 0xd6, 0x01, 0x57, 0x01, 0x56, 0x01, + 0xce, 0x00, 0xd1, 0x00, 0x42, 0x00, 0x3f, 0x00, 0xac, 0xff, 0xae, 0xff, + 0x18, 0xff, 0x17, 0xff, 0x7e, 0xfe, 0x7d, 0xfe, 0xe8, 0xfd, 0xe8, 0xfd, + 0x52, 0xfd, 0x52, 0xfd, 0xc5, 0xfc, 0xc3, 0xfc, 0x39, 0xfc, 0x3b, 0xfc, + 0xbb, 0xfb, 0xb9, 0xfb, 0x41, 0xfb, 0x42, 0xfb, 0xd4, 0xfa, 0xd6, 0xfa, + 0x75, 0xfa, 0x73, 0xfa, 0x21, 0xfa, 0x24, 0xfa, 0xde, 0xf9, 0xdd, 0xf9, + 0xaa, 0xf9, 0xac, 0xf9, 0x84, 0xf9, 0x84, 0xf9, 0x6f, 0xf9, 0x6f, 0xf9, + 0x67, 0xf9, 0x67, 0xf9, 0x6f, 0xf9, 0x6f, 0xf9, 0x87, 0xf9, 0x88, 0xf9, + 0xab, 0xf9, 0xa9, 0xf9, 0xdb, 0xf9, 0xdc, 0xf9, 0x15, 0xfa, 0x17, 0xfa, + 0x60, 0xfa, 0x5e, 0xfa, 0xab, 0xfa, 0xae, 0xfa, 0x03, 0xfb, 0x02, 0xfb, + 0x5c, 0xfb, 0x5d, 0xfb, 0xba, 0xfb, 0xbb, 0xfb, 0x1e, 0xfc, 0x1c, 0xfc, + 0x7a, 0xfc, 0x7c, 0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x35, 0xfd, 0x37, 0xfd, + 0x8e, 0xfd, 0x8d, 0xfd, 0xdf, 0xfd, 0xdf, 0xfd, 0x27, 0xfe, 0x27, 0xfe, + 0x69, 0xfe, 0x6b, 0xfe, 0xa2, 0xfe, 0xa2, 0xfe, 0xd2, 0xfe, 0xd3, 0xfe, + 0xf5, 0xfe, 0xf7, 0xfe, 0x12, 0xff, 0x11, 0xff, 0x22, 0xff, 0x23, 0xff, + 0x29, 0xff, 0x27, 0xff, 0x24, 0xff, 0x25, 0xff, 0x16, 0xff, 0x18, 0xff, + 0x07, 0xff, 0x06, 0xff, 0xe7, 0xfe, 0xea, 0xfe, 0xca, 0xfe, 0xc9, 0xfe, + 0xa3, 0xfe, 0xa4, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, 0x51, 0xfe, 0x51, 0xfe, + 0x24, 0xfe, 0x24, 0xfe, 0xfd, 0xfd, 0xfe, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, + 0xb0, 0xfd, 0xb0, 0xfd, 0x96, 0xfd, 0x96, 0xfd, 0x7e, 0xfd, 0x7d, 0xfd, + 0x6f, 0xfd, 0x6f, 0xfd, 0x69, 0xfd, 0x69, 0xfd, 0x6d, 0xfd, 0x6b, 0xfd, + 0x7a, 0xfd, 0x7b, 0xfd, 0x92, 0xfd, 0x90, 0xfd, 0xb6, 0xfd, 0xb7, 0xfd, + 0xe3, 0xfd, 0xe2, 0xfd, 0x1a, 0xfe, 0x1a, 0xfe, 0x5c, 0xfe, 0x5d, 0xfe, + 0xa8, 0xfe, 0xa8, 0xfe, 0xfc, 0xfe, 0xfd, 0xfe, 0x56, 0xff, 0x57, 0xff, + 0xb9, 0xff, 0xba, 0xff, 0x1f, 0x00, 0x1f, 0x00, 0x8a, 0x00, 0x8b, 0x00, + 0xf8, 0x00, 0xf9, 0x00, 0x65, 0x01, 0x65, 0x01, 0xd3, 0x01, 0xd4, 0x01, + 0x3f, 0x02, 0x3e, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0x0a, 0x03, 0x09, 0x03, + 0x62, 0x03, 0x64, 0x03, 0xb7, 0x03, 0xb9, 0x03, 0x04, 0x04, 0x05, 0x04, + 0x44, 0x04, 0x44, 0x04, 0x7b, 0x04, 0x7c, 0x04, 0xa4, 0x04, 0xa5, 0x04, + 0xc4, 0x04, 0xc5, 0x04, 0xd8, 0x04, 0xd8, 0x04, 0xde, 0x04, 0xde, 0x04, + 0xda, 0x04, 0xd9, 0x04, 0xc8, 0x04, 0xc9, 0x04, 0xae, 0x04, 0xac, 0x04, + 0x87, 0x04, 0x88, 0x04, 0x5a, 0x04, 0x59, 0x04, 0x21, 0x04, 0x21, 0x04, + 0xe4, 0x03, 0xe4, 0x03, 0xa0, 0x03, 0xa0, 0x03, 0x5a, 0x03, 0x5a, 0x03, + 0x0f, 0x03, 0x0e, 0x03, 0xc3, 0x02, 0xc2, 0x02, 0x78, 0x02, 0x79, 0x02, + 0x2f, 0x02, 0x2d, 0x02, 0xe9, 0x01, 0xeb, 0x01, 0xa8, 0x01, 0xa9, 0x01, + 0x6a, 0x01, 0x69, 0x01, 0x36, 0x01, 0x37, 0x01, 0x09, 0x01, 0x07, 0x01, + 0xe0, 0x00, 0xe0, 0x00, 0xc6, 0x00, 0xc5, 0x00, 0xae, 0x00, 0xb0, 0x00, + 0xa6, 0x00, 0xa5, 0x00, 0xa3, 0x00, 0xa2, 0x00, 0xaa, 0x00, 0xaa, 0x00, + 0xba, 0x00, 0xb9, 0x00, 0xd0, 0x00, 0xd2, 0x00, 0xf0, 0x00, 0xee, 0x00, + 0x11, 0x01, 0x12, 0x01, 0x3a, 0x01, 0x3a, 0x01, 0x67, 0x01, 0x66, 0x01, + 0x94, 0x01, 0x96, 0x01, 0xc5, 0x01, 0xc3, 0x01, 0xf3, 0x01, 0xf4, 0x01, + 0x21, 0x02, 0x1e, 0x02, 0x4a, 0x02, 0x4c, 0x02, 0x70, 0x02, 0x70, 0x02, + 0x8f, 0x02, 0x8f, 0x02, 0xa8, 0x02, 0xa7, 0x02, 0xb7, 0x02, 0xb7, 0x02, + 0xc1, 0x02, 0xc0, 0x02, 0xbe, 0x02, 0xbd, 0x02, 0xb3, 0x02, 0xb4, 0x02, + 0x9b, 0x02, 0x9a, 0x02, 0x7b, 0x02, 0x7c, 0x02, 0x52, 0x02, 0x51, 0x02, + 0x1b, 0x02, 0x1b, 0x02, 0xdf, 0x01, 0xdf, 0x01, 0x96, 0x01, 0x96, 0x01, + 0x49, 0x01, 0x49, 0x01, 0xf3, 0x00, 0xf4, 0x00, 0x99, 0x00, 0x9a, 0x00, + 0x3c, 0x00, 0x3a, 0x00, 0xda, 0xff, 0xde, 0xff, 0x7c, 0xff, 0x7a, 0xff, + 0x1c, 0xff, 0x1e, 0xff, 0xbf, 0xfe, 0xbe, 0xfe, 0x66, 0xfe, 0x67, 0xfe, + 0x14, 0xfe, 0x14, 0xfe, 0xc9, 0xfd, 0xc9, 0xfd, 0x88, 0xfd, 0x88, 0xfd, + 0x4d, 0xfd, 0x4e, 0xfd, 0x23, 0xfd, 0x22, 0xfd, 0x00, 0xfd, 0x01, 0xfd, + 0xef, 0xfc, 0xef, 0xfc, 0xea, 0xfc, 0xe9, 0xfc, 0xef, 0xfc, 0xf1, 0xfc, + 0x09, 0xfd, 0x08, 0xfd, 0x2d, 0xfd, 0x2e, 0xfd, 0x60, 0xfd, 0x60, 0xfd, + 0xa1, 0xfd, 0xa1, 0xfd, 0xee, 0xfd, 0xed, 0xfd, 0x47, 0xfe, 0x48, 0xfe, + 0xab, 0xfe, 0xa9, 0xfe, 0x16, 0xff, 0x16, 0xff, 0x89, 0xff, 0x89, 0xff, + 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x80, 0x00, 0xff, 0x00, 0xfe, 0x00, + 0x7c, 0x01, 0x7d, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0x73, 0x02, 0x72, 0x02, + 0xe4, 0x02, 0xe6, 0x02, 0x51, 0x03, 0x4f, 0x03, 0xaf, 0x03, 0xb0, 0x03, + 0x06, 0x04, 0x07, 0x04, 0x51, 0x04, 0x50, 0x04, 0x8d, 0x04, 0x8e, 0x04, + 0xbb, 0x04, 0xbc, 0x04, 0xd6, 0x04, 0xd7, 0x04, 0xe7, 0x04, 0xe6, 0x04, + 0xe1, 0x04, 0xe1, 0x04, 0xce, 0x04, 0xce, 0x04, 0xaa, 0x04, 0xaa, 0x04, + 0x75, 0x04, 0x74, 0x04, 0x34, 0x04, 0x35, 0x04, 0xe1, 0x03, 0xe3, 0x03, + 0x84, 0x03, 0x84, 0x03, 0x1a, 0x03, 0x19, 0x03, 0xa3, 0x02, 0xa3, 0x02, + 0x29, 0x02, 0x29, 0x02, 0xa2, 0x01, 0xa1, 0x01, 0x1a, 0x01, 0x1b, 0x01, + 0x8e, 0x00, 0x8d, 0x00, 0xff, 0xff, 0x00, 0x00, 0x72, 0xff, 0x72, 0xff, + 0xe6, 0xfe, 0xe6, 0xfe, 0x5d, 0xfe, 0x5e, 0xfe, 0xdc, 0xfd, 0xdc, 0xfd, + 0x5f, 0xfd, 0x60, 0xfd, 0xee, 0xfc, 0xee, 0xfc, 0x82, 0xfc, 0x82, 0xfc, + 0x22, 0xfc, 0x23, 0xfc, 0xce, 0xfb, 0xcf, 0xfb, 0x86, 0xfb, 0x85, 0xfb, + 0x49, 0xfb, 0x49, 0xfb, 0x18, 0xfb, 0x18, 0xfb, 0xf5, 0xfa, 0xf5, 0xfa, + 0xdb, 0xfa, 0xdb, 0xfa, 0xcb, 0xfa, 0xcd, 0xfa, 0xca, 0xfa, 0xc9, 0xfa, + 0xce, 0xfa, 0xd0, 0xfa, 0xde, 0xfa, 0xdd, 0xfa, 0xf3, 0xfa, 0xf3, 0xfa, + 0x11, 0xfb, 0x11, 0xfb, 0x33, 0xfb, 0x32, 0xfb, 0x57, 0xfb, 0x57, 0xfb, + 0x81, 0xfb, 0x81, 0xfb, 0xa9, 0xfb, 0xa9, 0xfb, 0xd4, 0xfb, 0xd4, 0xfb, + 0xfa, 0xfb, 0xfb, 0xfb, 0x22, 0xfc, 0x22, 0xfc, 0x45, 0xfc, 0x45, 0xfc, + 0x67, 0xfc, 0x67, 0xfc, 0x80, 0xfc, 0x81, 0xfc, 0x9a, 0xfc, 0x98, 0xfc, + 0xa9, 0xfc, 0xaa, 0xfc, 0xb5, 0xfc, 0xb4, 0xfc, 0xbd, 0xfc, 0xbc, 0xfc, + 0xbd, 0xfc, 0xbe, 0xfc, 0xbc, 0xfc, 0xb9, 0xfc, 0xb6, 0xfc, 0xb6, 0xfc, + 0xab, 0xfc, 0xac, 0xfc, 0xa1, 0xfc, 0xa0, 0xfc, 0x92, 0xfc, 0x94, 0xfc, + 0x89, 0xfc, 0x86, 0xfc, 0x7b, 0xfc, 0x7c, 0xfc, 0x70, 0xfc, 0x71, 0xfc, + 0x6d, 0xfc, 0x6b, 0xfc, 0x69, 0xfc, 0x69, 0xfc, 0x6e, 0xfc, 0x6c, 0xfc, + 0x78, 0xfc, 0x79, 0xfc, 0x8b, 0xfc, 0x88, 0xfc, 0xa3, 0xfc, 0xa6, 0xfc, + 0xc9, 0xfc, 0xc7, 0xfc, 0xf5, 0xfc, 0xf6, 0xfc, 0x2d, 0xfd, 0x2d, 0xfd, + 0x71, 0xfd, 0x6f, 0xfd, 0xb9, 0xfd, 0xbb, 0xfd, 0x14, 0xfe, 0x11, 0xfe, + 0x71, 0xfe, 0x71, 0xfe, 0xda, 0xfe, 0xd9, 0xfe, 0x4b, 0xff, 0x4b, 0xff, + 0xc1, 0xff, 0xbf, 0xff, 0x3f, 0x00, 0x40, 0x00, 0xc0, 0x00, 0xbd, 0x00, + 0x43, 0x01, 0x44, 0x01, 0xca, 0x01, 0xc8, 0x01, 0x4f, 0x02, 0x4e, 0x02, + 0xd1, 0x02, 0xd0, 0x02, 0x4e, 0x03, 0x4e, 0x03, 0xc8, 0x03, 0xc7, 0x03, + 0x3b, 0x04, 0x3b, 0x04, 0xa4, 0x04, 0xa3, 0x04, 0x02, 0x05, 0x01, 0x05, + 0x55, 0x05, 0x54, 0x05, 0x9b, 0x05, 0x9b, 0x05, 0xd4, 0x05, 0xd3, 0x05, + 0xff, 0x05, 0xff, 0x05, 0x19, 0x06, 0x17, 0x06, 0x22, 0x06, 0x24, 0x06, + 0x20, 0x06, 0x1d, 0x06, 0x08, 0x06, 0x07, 0x06, 0xe3, 0x05, 0xe3, 0x05, + 0xae, 0x05, 0xad, 0x05, 0x69, 0x05, 0x68, 0x05, 0x1a, 0x05, 0x1b, 0x05, + 0xba, 0x04, 0xb8, 0x04, 0x54, 0x04, 0x54, 0x04, 0xe1, 0x03, 0xdf, 0x03, + 0x68, 0x03, 0x66, 0x03, 0xe8, 0x02, 0xe7, 0x02, 0x66, 0x02, 0x64, 0x02, + 0xdf, 0x01, 0xe0, 0x01, 0x5c, 0x01, 0x5a, 0x01, 0xd8, 0x00, 0xd8, 0x00, + 0x57, 0x00, 0x56, 0x00, 0xe2, 0xff, 0xe0, 0xff, 0x6e, 0xff, 0x6f, 0xff, + 0x08, 0xff, 0x06, 0xff, 0xaa, 0xfe, 0xa9, 0xfe, 0x58, 0xfe, 0x59, 0xfe, + 0x16, 0xfe, 0x14, 0xfe, 0xdf, 0xfd, 0xde, 0xfd, 0xb8, 0xfd, 0xb7, 0xfd, + 0xa0, 0xfd, 0xa0, 0xfd, 0x96, 0xfd, 0x95, 0xfd, 0x9c, 0xfd, 0x9c, 0xfd, + 0xae, 0xfd, 0xae, 0xfd, 0xd2, 0xfd, 0xcf, 0xfd, 0xff, 0xfd, 0x00, 0xfe, + 0x38, 0xfe, 0x39, 0xfe, 0x7e, 0xfe, 0x7b, 0xfe, 0xca, 0xfe, 0xcb, 0xfe, + 0x1e, 0xff, 0x1d, 0xff, 0x7a, 0xff, 0x79, 0xff, 0xd6, 0xff, 0xd6, 0xff, + 0x38, 0x00, 0x37, 0x00, 0x99, 0x00, 0x98, 0x00, 0xf6, 0x00, 0xf6, 0x00, + 0x52, 0x01, 0x51, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xf8, 0x01, 0xf6, 0x01, + 0x42, 0x02, 0x41, 0x02, 0x7f, 0x02, 0x7f, 0x02, 0xb5, 0x02, 0xb5, 0x02, + 0xde, 0x02, 0xde, 0x02, 0xfd, 0x02, 0xfc, 0x02, 0x10, 0x03, 0x0f, 0x03, + 0x14, 0x03, 0x15, 0x03, 0x10, 0x03, 0x0e, 0x03, 0xfb, 0x02, 0xfc, 0x02, + 0xe0, 0x02, 0xdf, 0x02, 0xb7, 0x02, 0xb7, 0x02, 0x86, 0x02, 0x86, 0x02, + 0x4d, 0x02, 0x4c, 0x02, 0x0b, 0x02, 0x0a, 0x02, 0xc7, 0x01, 0xc6, 0x01, + 0x7b, 0x01, 0x7a, 0x01, 0x2f, 0x01, 0x2e, 0x01, 0xe2, 0x00, 0xe1, 0x00, + 0x93, 0x00, 0x92, 0x00, 0x48, 0x00, 0x48, 0x00, 0xfe, 0xff, 0xfd, 0xff, + 0xbe, 0xff, 0xbe, 0xff, 0x80, 0xff, 0x7d, 0xff, 0x4c, 0xff, 0x4c, 0xff, + 0x1e, 0xff, 0x1c, 0xff, 0xfb, 0xfe, 0xfb, 0xfe, 0xe1, 0xfe, 0xe0, 0xfe, + 0xd2, 0xfe, 0xd1, 0xfe, 0xcc, 0xfe, 0xce, 0xfe, 0xd2, 0xfe, 0xd1, 0xfe, + 0xe1, 0xfe, 0xe2, 0xfe, 0xfd, 0xfe, 0xfb, 0xfe, 0x1e, 0xff, 0x20, 0xff, + 0x4c, 0xff, 0x4a, 0xff, 0x7f, 0xff, 0x7e, 0xff, 0xba, 0xff, 0xb8, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0x38, 0x00, 0x38, 0x00, 0x7f, 0x00, 0x7e, 0x00, + 0xc4, 0x00, 0xc4, 0x00, 0x08, 0x01, 0x06, 0x01, 0x48, 0x01, 0x49, 0x01, + 0x89, 0x01, 0x87, 0x01, 0xc1, 0x01, 0xc1, 0x01, 0xf7, 0x01, 0xf4, 0x01, + 0x20, 0x02, 0x1f, 0x02, 0x43, 0x02, 0x43, 0x02, 0x5d, 0x02, 0x5b, 0x02, + 0x6c, 0x02, 0x6a, 0x02, 0x6f, 0x02, 0x70, 0x02, 0x6a, 0x02, 0x68, 0x02, + 0x56, 0x02, 0x57, 0x02, 0x3c, 0x02, 0x3b, 0x02, 0x14, 0x02, 0x13, 0x02, + 0xe4, 0x01, 0xe4, 0x01, 0xaa, 0x01, 0xa9, 0x01, 0x66, 0x01, 0x66, 0x01, + 0x1e, 0x01, 0x1c, 0x01, 0xcd, 0x00, 0xcd, 0x00, 0x79, 0x00, 0x7a, 0x00, + 0x23, 0x00, 0x21, 0x00, 0xc6, 0xff, 0xc8, 0xff, 0x6e, 0xff, 0x6d, 0xff, + 0x16, 0xff, 0x15, 0xff, 0xbd, 0xfe, 0xbd, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, + 0x1b, 0xfe, 0x1c, 0xfe, 0xd3, 0xfd, 0xd3, 0xfd, 0x96, 0xfd, 0x94, 0xfd, + 0x58, 0xfd, 0x5b, 0xfd, 0x2e, 0xfd, 0x2c, 0xfd, 0x05, 0xfd, 0x06, 0xfd, + 0xeb, 0xfc, 0xea, 0xfc, 0xd8, 0xfc, 0xd9, 0xfc, 0xd2, 0xfc, 0xd1, 0xfc, + 0xd5, 0xfc, 0xd4, 0xfc, 0xde, 0xfc, 0xdd, 0xfc, 0xf6, 0xfc, 0xf7, 0xfc, + 0x11, 0xfd, 0x0f, 0xfd, 0x33, 0xfd, 0x35, 0xfd, 0x5e, 0xfd, 0x5e, 0xfd, + 0x8a, 0xfd, 0x8b, 0xfd, 0xbd, 0xfd, 0xbb, 0xfd, 0xea, 0xfd, 0xec, 0xfd, + 0x20, 0xfe, 0x1d, 0xfe, 0x4d, 0xfe, 0x4e, 0xfe, 0x7d, 0xfe, 0x7d, 0xfe, + 0xa6, 0xfe, 0xa4, 0xfe, 0xca, 0xfe, 0xcc, 0xfe, 0xea, 0xfe, 0xe9, 0xfe, + 0x00, 0xff, 0xff, 0xfe, 0x0e, 0xff, 0x11, 0xff, 0x15, 0xff, 0x13, 0xff, + 0x0f, 0xff, 0x0d, 0xff, 0x01, 0xff, 0x02, 0xff, 0xe9, 0xfe, 0xe8, 0xfe, + 0xc6, 0xfe, 0xc7, 0xfe, 0x9a, 0xfe, 0x99, 0xfe, 0x65, 0xfe, 0x64, 0xfe, + 0x26, 0xfe, 0x27, 0xfe, 0xe4, 0xfd, 0xe3, 0xfd, 0x98, 0xfd, 0x98, 0xfd, + 0x48, 0xfd, 0x48, 0xfd, 0xf9, 0xfc, 0xf7, 0xfc, 0xa2, 0xfc, 0xa3, 0xfc, + 0x50, 0xfc, 0x4e, 0xfc, 0xfe, 0xfb, 0xfe, 0xfb, 0xb0, 0xfb, 0xb2, 0xfb, + 0x69, 0xfb, 0x67, 0xfb, 0x27, 0xfb, 0x27, 0xfb, 0xef, 0xfa, 0xef, 0xfa, + 0xc1, 0xfa, 0xc1, 0xfa, 0x9f, 0xfa, 0x9e, 0xfa, 0x8a, 0xfa, 0x8a, 0xfa, + 0x84, 0xfa, 0x82, 0xfa, 0x8a, 0xfa, 0x8a, 0xfa, 0xa0, 0xfa, 0xa1, 0xfa, + 0xcb, 0xfa, 0xc9, 0xfa, 0x01, 0xfb, 0x02, 0xfb, 0x4b, 0xfb, 0x49, 0xfb, + 0xa2, 0xfb, 0xa1, 0xfb, 0x09, 0xfc, 0x09, 0xfc, 0x81, 0xfc, 0x7f, 0xfc, + 0x02, 0xfd, 0x01, 0xfd, 0x93, 0xfd, 0x92, 0xfd, 0x2c, 0xfe, 0x2b, 0xfe, + 0xcf, 0xfe, 0xcf, 0xfe, 0x79, 0xff, 0x78, 0xff, 0x27, 0x00, 0x25, 0x00, + 0xd7, 0x00, 0xd8, 0x00, 0x89, 0x01, 0x86, 0x01, 0x36, 0x02, 0x36, 0x02, + 0xe3, 0x02, 0xe1, 0x02, 0x87, 0x03, 0x86, 0x03, 0x25, 0x04, 0x24, 0x04, + 0xb7, 0x04, 0xb6, 0x04, 0x3e, 0x05, 0x3e, 0x05, 0xb9, 0x05, 0xb7, 0x05, + 0x23, 0x06, 0x22, 0x06, 0x7f, 0x06, 0x7f, 0x06, 0xc9, 0x06, 0xc9, 0x06, + 0x05, 0x07, 0x03, 0x07, 0x2d, 0x07, 0x2b, 0x07, 0x40, 0x07, 0x40, 0x07, + 0x49, 0x07, 0x46, 0x07, 0x37, 0x07, 0x37, 0x07, 0x1c, 0x07, 0x1a, 0x07, + 0xeb, 0x06, 0xea, 0x06, 0xad, 0x06, 0xad, 0x06, 0x60, 0x06, 0x60, 0x06, + 0x09, 0x06, 0x08, 0x06, 0xa6, 0x05, 0xa6, 0x05, 0x37, 0x05, 0x37, 0x05, + 0xc5, 0x04, 0xc5, 0x04, 0x4c, 0x04, 0x4c, 0x04, 0xcf, 0x03, 0xcd, 0x03, + 0x51, 0x03, 0x51, 0x03, 0xd2, 0x02, 0xd2, 0x02, 0x57, 0x02, 0x56, 0x02, + 0xdd, 0x01, 0xdb, 0x01, 0x69, 0x01, 0x69, 0x01, 0xfb, 0x00, 0xfa, 0x00, + 0x95, 0x00, 0x94, 0x00, 0x38, 0x00, 0x38, 0x00, 0xe5, 0xff, 0xe4, 0xff, + 0x9d, 0xff, 0x9d, 0xff, 0x5d, 0xff, 0x5c, 0xff, 0x29, 0xff, 0x2a, 0xff, + 0x01, 0xff, 0x00, 0xff, 0xe0, 0xfe, 0xdf, 0xfe, 0xd0, 0xfe, 0xce, 0xfe, + 0xc3, 0xfe, 0xc4, 0xfe, 0xc4, 0xfe, 0xc1, 0xfe, 0xca, 0xfe, 0xca, 0xfe, + 0xd7, 0xfe, 0xd5, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0x02, 0xff, 0x00, 0xff, + 0x21, 0xff, 0x1e, 0xff, 0x3d, 0xff, 0x3e, 0xff, 0x5d, 0xff, 0x5a, 0xff, + 0x7e, 0xff, 0x7e, 0xff, 0x9b, 0xff, 0x9a, 0xff, 0xb9, 0xff, 0xb6, 0xff, + 0xd0, 0xff, 0xcf, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0x00, 0x00, 0xfd, 0xff, 0x03, 0x00, 0x05, 0x00, 0x06, 0x00, 0x01, 0x00, + 0xfc, 0xff, 0x00, 0x00, 0xf4, 0xff, 0xf1, 0xff, 0xe4, 0xff, 0xe4, 0xff, + 0xcf, 0xff, 0xcf, 0xff, 0xba, 0xff, 0xb8, 0xff, 0x9d, 0xff, 0x9c, 0xff, + 0x80, 0xff, 0x81, 0xff, 0x66, 0xff, 0x64, 0xff, 0x47, 0xff, 0x47, 0xff, + 0x30, 0xff, 0x31, 0xff, 0x16, 0xff, 0x15, 0xff, 0x02, 0xff, 0x03, 0xff, + 0xf3, 0xfe, 0xf2, 0xfe, 0xe8, 0xfe, 0xe9, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, + 0xec, 0xfe, 0xeb, 0xfe, 0xf9, 0xfe, 0xfa, 0xfe, 0x10, 0xff, 0x11, 0xff, + 0x2f, 0xff, 0x2e, 0xff, 0x58, 0xff, 0x59, 0xff, 0x89, 0xff, 0x89, 0xff, + 0xc6, 0xff, 0xc5, 0xff, 0x07, 0x00, 0x09, 0x00, 0x55, 0x00, 0x55, 0x00, + 0xaa, 0x00, 0xaa, 0x00, 0x02, 0x01, 0x02, 0x01, 0x63, 0x01, 0x63, 0x01, + 0xc4, 0x01, 0xc4, 0x01, 0x28, 0x02, 0x2a, 0x02, 0x8e, 0x02, 0x8d, 0x02, + 0xf0, 0x02, 0xf1, 0x02, 0x53, 0x03, 0x52, 0x03, 0xad, 0x03, 0xac, 0x03, + 0x05, 0x04, 0x03, 0x04, 0x4f, 0x04, 0x50, 0x04, 0x95, 0x04, 0x94, 0x04, + 0xcf, 0x04, 0xce, 0x04, 0xfa, 0x04, 0xf9, 0x04, 0x1a, 0x05, 0x1a, 0x05, + 0x2b, 0x05, 0x29, 0x05, 0x2e, 0x05, 0x2e, 0x05, 0x1c, 0x05, 0x1c, 0x05, + 0x01, 0x05, 0x00, 0x05, 0xd1, 0x04, 0xd0, 0x04, 0x8f, 0x04, 0x8f, 0x04, + 0x43, 0x04, 0x41, 0x04, 0xe1, 0x03, 0xe0, 0x03, 0x75, 0x03, 0x75, 0x03, + 0xfb, 0x02, 0xf9, 0x02, 0x73, 0x02, 0x72, 0x02, 0xe3, 0x01, 0xe3, 0x01, + 0x4a, 0x01, 0x49, 0x01, 0xaa, 0x00, 0xaa, 0x00, 0x06, 0x00, 0x03, 0x00, + 0x60, 0xff, 0x5f, 0xff, 0xb9, 0xfe, 0xb8, 0xfe, 0x15, 0xfe, 0x14, 0xfe, + 0x73, 0xfd, 0x72, 0xfd, 0xd8, 0xfc, 0xd7, 0xfc, 0x44, 0xfc, 0x42, 0xfc, + 0xbc, 0xfb, 0xbb, 0xfb, 0x3c, 0xfb, 0x3b, 0xfb, 0xca, 0xfa, 0xc9, 0xfa, + 0x66, 0xfa, 0x67, 0xfa, 0x12, 0xfa, 0x10, 0xfa, 0xce, 0xf9, 0xce, 0xf9, + 0x9b, 0xf9, 0x9a, 0xf9, 0x78, 0xf9, 0x77, 0xf9, 0x65, 0xf9, 0x65, 0xf9, + 0x67, 0xf9, 0x65, 0xf9, 0x74, 0xf9, 0x74, 0xf9, 0x97, 0xf9, 0x94, 0xf9, + 0xc2, 0xf9, 0xc3, 0xf9, 0x03, 0xfa, 0xff, 0xf9, 0x46, 0xfa, 0x48, 0xfa, + 0x9d, 0xfa, 0x9b, 0xfa, 0xf6, 0xfa, 0xf5, 0xfa, 0x5a, 0xfb, 0x5b, 0xfb, + 0xc4, 0xfb, 0xc1, 0xfb, 0x2d, 0xfc, 0x2d, 0xfc, 0x9b, 0xfc, 0x9c, 0xfc, + 0x08, 0xfd, 0x06, 0xfd, 0x72, 0xfd, 0x73, 0xfd, 0xda, 0xfd, 0xd8, 0xfd, + 0x37, 0xfe, 0x37, 0xfe, 0x96, 0xfe, 0x95, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, + 0x2c, 0xff, 0x2f, 0xff, 0x6c, 0xff, 0x69, 0xff, 0x9a, 0xff, 0x9e, 0xff, + 0xc5, 0xff, 0xc4, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xed, 0xff, 0xec, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xd3, 0xff, 0xd2, 0xff, + 0xb5, 0xff, 0xb5, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x63, 0xff, 0x62, 0xff, + 0x30, 0xff, 0x2f, 0xff, 0xf7, 0xfe, 0xf5, 0xfe, 0xbd, 0xfe, 0xbe, 0xfe, + 0x7f, 0xfe, 0x7c, 0xfe, 0x43, 0xfe, 0x43, 0xfe, 0x08, 0xfe, 0x06, 0xfe, + 0xd0, 0xfd, 0xd0, 0xfd, 0xa1, 0xfd, 0x9e, 0xfd, 0x70, 0xfd, 0x6f, 0xfd, + 0x4c, 0xfd, 0x4a, 0xfd, 0x2e, 0xfd, 0x2b, 0xfd, 0x1a, 0xfd, 0x1b, 0xfd, + 0x10, 0xfd, 0x0e, 0xfd, 0x11, 0xfd, 0x0f, 0xfd, 0x1d, 0xfd, 0x1a, 0xfd, + 0x31, 0xfd, 0x31, 0xfd, 0x54, 0xfd, 0x53, 0xfd, 0x7f, 0xfd, 0x7f, 0xfd, + 0xb5, 0xfd, 0xb3, 0xfd, 0xf5, 0xfd, 0xf4, 0xfd, 0x3c, 0xfe, 0x3b, 0xfe, + 0x8b, 0xfe, 0x8a, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0x3b, 0xff, 0x38, 0xff, + 0x98, 0xff, 0x97, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0x59, 0x00, 0x5a, 0x00, + 0xba, 0x00, 0xb7, 0x00, 0x17, 0x01, 0x16, 0x01, 0x73, 0x01, 0x73, 0x01, + 0xc8, 0x01, 0xc5, 0x01, 0x18, 0x02, 0x17, 0x02, 0x5e, 0x02, 0x5d, 0x02, + 0xa0, 0x02, 0x9e, 0x02, 0xd6, 0x02, 0xd6, 0x02, 0x03, 0x03, 0x01, 0x03, + 0x26, 0x03, 0x27, 0x03, 0x3f, 0x03, 0x3d, 0x03, 0x4f, 0x03, 0x4f, 0x03, + 0x56, 0x03, 0x53, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0x44, 0x03, 0x43, 0x03, + 0x2b, 0x03, 0x29, 0x03, 0x10, 0x03, 0x0f, 0x03, 0xe9, 0x02, 0xe7, 0x02, + 0xc0, 0x02, 0xbf, 0x02, 0x93, 0x02, 0x90, 0x02, 0x5f, 0x02, 0x5e, 0x02, + 0x30, 0x02, 0x2e, 0x02, 0xf8, 0x01, 0xf8, 0x01, 0xcc, 0x01, 0xc9, 0x01, + 0x99, 0x01, 0x99, 0x01, 0x6e, 0x01, 0x6e, 0x01, 0x49, 0x01, 0x48, 0x01, + 0x26, 0x01, 0x23, 0x01, 0x0d, 0x01, 0x0c, 0x01, 0xf8, 0x00, 0xf8, 0x00, + 0xec, 0x00, 0xeb, 0x00, 0xe8, 0x00, 0xe8, 0x00, 0xe9, 0x00, 0xe9, 0x00, + 0xf9, 0x00, 0xf8, 0x00, 0x0b, 0x01, 0x0a, 0x01, 0x26, 0x01, 0x24, 0x01, + 0x47, 0x01, 0x48, 0x01, 0x6f, 0x01, 0x6c, 0x01, 0x9b, 0x01, 0x9c, 0x01, + 0xca, 0x01, 0xc9, 0x01, 0xfc, 0x01, 0xfb, 0x01, 0x30, 0x02, 0x30, 0x02, + 0x63, 0x02, 0x62, 0x02, 0x94, 0x02, 0x95, 0x02, 0xc4, 0x02, 0xc4, 0x02, + 0xef, 0x02, 0xed, 0x02, 0x15, 0x03, 0x15, 0x03, 0x33, 0x03, 0x33, 0x03, + 0x4a, 0x03, 0x49, 0x03, 0x59, 0x03, 0x59, 0x03, 0x5d, 0x03, 0x5a, 0x03, + 0x57, 0x03, 0x59, 0x03, 0x46, 0x03, 0x45, 0x03, 0x2b, 0x03, 0x2a, 0x03, + 0x02, 0x03, 0x02, 0x03, 0xcc, 0x02, 0xcd, 0x02, 0x8e, 0x02, 0x8d, 0x02, + 0x45, 0x02, 0x46, 0x02, 0xf2, 0x01, 0xf0, 0x01, 0x96, 0x01, 0x96, 0x01, + 0x33, 0x01, 0x33, 0x01, 0xc8, 0x00, 0xcb, 0x00, 0x5c, 0x00, 0x5b, 0x00, + 0xec, 0xff, 0xec, 0xff, 0x7b, 0xff, 0x7a, 0xff, 0x0b, 0xff, 0x0a, 0xff, + 0x9d, 0xfe, 0x9e, 0xfe, 0x35, 0xfe, 0x34, 0xfe, 0xd3, 0xfd, 0xd3, 0xfd, + 0x79, 0xfd, 0x79, 0xfd, 0x29, 0xfd, 0x27, 0xfd, 0xe4, 0xfc, 0xe5, 0xfc, + 0xab, 0xfc, 0xa9, 0xfc, 0x82, 0xfc, 0x81, 0xfc, 0x64, 0xfc, 0x65, 0xfc, + 0x57, 0xfc, 0x57, 0xfc, 0x5a, 0xfc, 0x5b, 0xfc, 0x6e, 0xfc, 0x6d, 0xfc, + 0x92, 0xfc, 0x92, 0xfc, 0xc5, 0xfc, 0xc5, 0xfc, 0x09, 0xfd, 0x0a, 0xfd, + 0x5c, 0xfd, 0x5c, 0xfd, 0xbc, 0xfd, 0xbd, 0xfd, 0x2a, 0xfe, 0x2b, 0xfe, + 0xa3, 0xfe, 0xa2, 0xfe, 0x25, 0xff, 0x26, 0xff, 0xb2, 0xff, 0xb0, 0xff, + 0x41, 0x00, 0x42, 0x00, 0xd9, 0x00, 0xd8, 0x00, 0x6d, 0x01, 0x6d, 0x01, + 0x07, 0x02, 0x06, 0x02, 0x9a, 0x02, 0x9a, 0x02, 0x2a, 0x03, 0x29, 0x03, + 0xb3, 0x03, 0xb4, 0x03, 0x36, 0x04, 0x34, 0x04, 0xab, 0x04, 0xac, 0x04, + 0x15, 0x05, 0x15, 0x05, 0x73, 0x05, 0x72, 0x05, 0xbe, 0x05, 0xbd, 0x05, + 0xfb, 0x05, 0xfa, 0x05, 0x27, 0x06, 0x27, 0x06, 0x40, 0x06, 0x40, 0x06, + 0x4a, 0x06, 0x4a, 0x06, 0x3e, 0x06, 0x3e, 0x06, 0x24, 0x06, 0x22, 0x06, + 0xf3, 0x05, 0xf5, 0x05, 0xb5, 0x05, 0xb3, 0x05, 0x66, 0x05, 0x67, 0x05, + 0x06, 0x05, 0x06, 0x05, 0x9d, 0x04, 0x9c, 0x04, 0x24, 0x04, 0x24, 0x04, + 0xa2, 0x03, 0xa1, 0x03, 0x18, 0x03, 0x18, 0x03, 0x85, 0x02, 0x85, 0x02, + 0xf3, 0x01, 0xf1, 0x01, 0x57, 0x01, 0x58, 0x01, 0xc0, 0x00, 0xbd, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x91, 0xff, 0x8e, 0xff, 0xfd, 0xfe, 0xfd, 0xfe, + 0x70, 0xfe, 0x6f, 0xfe, 0xec, 0xfd, 0xeb, 0xfd, 0x6e, 0xfd, 0x6d, 0xfd, + 0xfb, 0xfc, 0xfb, 0xfc, 0x94, 0xfc, 0x93, 0xfc, 0x36, 0xfc, 0x35, 0xfc, + 0xe9, 0xfb, 0xea, 0xfb, 0xa4, 0xfb, 0xa2, 0xfb, 0x6c, 0xfb, 0x6d, 0xfb, + 0x3f, 0xfb, 0x3d, 0xfb, 0x1d, 0xfb, 0x1d, 0xfb, 0x05, 0xfb, 0x03, 0xfb, + 0xf7, 0xfa, 0xf6, 0xfa, 0xf2, 0xfa, 0xf1, 0xfa, 0xf3, 0xfa, 0xf3, 0xfa, + 0xff, 0xfa, 0xff, 0xfa, 0x0c, 0xfb, 0x0b, 0xfb, 0x22, 0xfb, 0x21, 0xfb, + 0x37, 0xfb, 0x38, 0xfb, 0x50, 0xfb, 0x4f, 0xfb, 0x6d, 0xfb, 0x6b, 0xfb, + 0x83, 0xfb, 0x85, 0xfb, 0xa1, 0xfb, 0x9e, 0xfb, 0xb6, 0xfb, 0xb7, 0xfb, + 0xcd, 0xfb, 0xcb, 0xfb, 0xde, 0xfb, 0xdf, 0xfb, 0xee, 0xfb, 0xeb, 0xfb, + 0xf9, 0xfb, 0xf9, 0xfb, 0x00, 0xfc, 0xfe, 0xfb, 0x03, 0xfc, 0x02, 0xfc, + 0x04, 0xfc, 0x03, 0xfc, 0x00, 0xfc, 0xfe, 0xfb, 0xfd, 0xfb, 0xfb, 0xfb, + 0xf3, 0xfb, 0xf3, 0xfb, 0xee, 0xfb, 0xec, 0xfb, 0xe5, 0xfb, 0xe4, 0xfb, + 0xde, 0xfb, 0xdd, 0xfb, 0xdb, 0xfb, 0xd9, 0xfb, 0xd9, 0xfb, 0xd8, 0xfb, + 0xdc, 0xfb, 0xdb, 0xfb, 0xe3, 0xfb, 0xe1, 0xfb, 0xf3, 0xfb, 0xf3, 0xfb, + 0x06, 0xfc, 0x05, 0xfc, 0x24, 0xfc, 0x23, 0xfc, 0x4a, 0xfc, 0x4a, 0xfc, + 0x79, 0xfc, 0x77, 0xfc, 0xb1, 0xfc, 0xb1, 0xfc, 0xf2, 0xfc, 0xf1, 0xfc, + 0x3f, 0xfd, 0x3d, 0xfd, 0x94, 0xfd, 0x93, 0xfd, 0xf0, 0xfd, 0xf1, 0xfd, + 0x59, 0xfe, 0x58, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, 0x3d, 0xff, 0x3c, 0xff, + 0xb8, 0xff, 0xb7, 0xff, 0x36, 0x00, 0x35, 0x00, 0xb8, 0x00, 0xb7, 0x00, + 0x39, 0x01, 0x39, 0x01, 0xbf, 0x01, 0xbf, 0x01, 0x3c, 0x02, 0x3b, 0x02, + 0xba, 0x02, 0xb8, 0x02, 0x2e, 0x03, 0x2f, 0x03, 0xa1, 0x03, 0xa2, 0x03, + 0x08, 0x04, 0x07, 0x04, 0x65, 0x04, 0x64, 0x04, 0xb5, 0x04, 0xb5, 0x04, + 0xfd, 0x04, 0xfb, 0x04, 0x33, 0x05, 0x34, 0x05, 0x5f, 0x05, 0x5d, 0x05, + 0x77, 0x05, 0x77, 0x05, 0x7f, 0x05, 0x81, 0x05, 0x7c, 0x05, 0x7a, 0x05, + 0x64, 0x05, 0x64, 0x05, 0x3f, 0x05, 0x3f, 0x05, 0x09, 0x05, 0x07, 0x05, + 0xc4, 0x04, 0xc5, 0x04, 0x74, 0x04, 0x71, 0x04, 0x12, 0x04, 0x13, 0x04, + 0xab, 0x03, 0xaa, 0x03, 0x35, 0x03, 0x34, 0x03, 0xb8, 0x02, 0xb9, 0x02, + 0x36, 0x02, 0x34, 0x02, 0xad, 0x01, 0xac, 0x01, 0x26, 0x01, 0x25, 0x01, + 0x9a, 0x00, 0x98, 0x00, 0x11, 0x00, 0x10, 0x00, 0x8f, 0xff, 0x8d, 0xff, + 0x0c, 0xff, 0x0b, 0xff, 0x97, 0xfe, 0x97, 0xfe, 0x27, 0xfe, 0x26, 0xfe, + 0xc4, 0xfd, 0xc4, 0xfd, 0x6e, 0xfd, 0x6d, 0xfd, 0x24, 0xfd, 0x23, 0xfd, + 0xec, 0xfc, 0xeb, 0xfc, 0xbf, 0xfc, 0xbe, 0xfc, 0xa5, 0xfc, 0xa5, 0xfc, + 0x97, 0xfc, 0x97, 0xfc, 0xa0, 0xfc, 0x9d, 0xfc, 0xb3, 0xfc, 0xb3, 0xfc, + 0xd7, 0xfc, 0xd6, 0xfc, 0x09, 0xfd, 0x0a, 0xfd, 0x48, 0xfd, 0x47, 0xfd, + 0x95, 0xfd, 0x94, 0xfd, 0xeb, 0xfd, 0xed, 0xfd, 0x4c, 0xfe, 0x49, 0xfe, + 0xb3, 0xfe, 0xb3, 0xfe, 0x20, 0xff, 0x1f, 0xff, 0x93, 0xff, 0x91, 0xff, + 0x05, 0x00, 0x04, 0x00, 0x76, 0x00, 0x74, 0x00, 0xea, 0x00, 0xea, 0x00, + 0x57, 0x01, 0x55, 0x01, 0xc2, 0x01, 0xc1, 0x01, 0x23, 0x02, 0x22, 0x02, + 0x7d, 0x02, 0x7c, 0x02, 0xd1, 0x02, 0xd0, 0x02, 0x12, 0x03, 0x13, 0x03, + 0x53, 0x03, 0x52, 0x03, 0x7c, 0x03, 0x7d, 0x03, 0xa3, 0x03, 0xa3, 0x03, + 0xba, 0x03, 0xb8, 0x03, 0xbf, 0x03, 0xc0, 0x03, 0xc1, 0x03, 0xbe, 0x03, + 0xaa, 0x03, 0xae, 0x03, 0x94, 0x03, 0x92, 0x03, 0x6c, 0x03, 0x6b, 0x03, + 0x3d, 0x03, 0x3c, 0x03, 0x05, 0x03, 0x04, 0x03, 0xc4, 0x02, 0xc6, 0x02, + 0x83, 0x02, 0x82, 0x02, 0x39, 0x02, 0x39, 0x02, 0xee, 0x01, 0xed, 0x01, + 0xa2, 0x01, 0xa2, 0x01, 0x56, 0x01, 0x55, 0x01, 0x0c, 0x01, 0x0c, 0x01, + 0xc6, 0x00, 0xc4, 0x00, 0x83, 0x00, 0x84, 0x00, 0x48, 0x00, 0x47, 0x00, + 0x11, 0x00, 0x11, 0x00, 0xe7, 0xff, 0xe4, 0xff, 0xc0, 0xff, 0xc0, 0xff, + 0xa4, 0xff, 0xa5, 0xff, 0x92, 0xff, 0x91, 0xff, 0x88, 0xff, 0x89, 0xff, + 0x8a, 0xff, 0x87, 0xff, 0x91, 0xff, 0x93, 0xff, 0xa6, 0xff, 0xa4, 0xff, + 0xbe, 0xff, 0xbe, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0x08, 0x00, 0x07, 0x00, + 0x34, 0x00, 0x33, 0x00, 0x65, 0x00, 0x63, 0x00, 0x99, 0x00, 0x99, 0x00, + 0xcf, 0x00, 0xcd, 0x00, 0x05, 0x01, 0x04, 0x01, 0x38, 0x01, 0x38, 0x01, + 0x6d, 0x01, 0x6a, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0xc6, 0x01, 0xc4, 0x01, + 0xe9, 0x01, 0xe7, 0x01, 0x07, 0x02, 0x07, 0x02, 0x1d, 0x02, 0x1b, 0x02, + 0x2c, 0x02, 0x2b, 0x02, 0x31, 0x02, 0x31, 0x02, 0x30, 0x02, 0x2d, 0x02, + 0x23, 0x02, 0x24, 0x02, 0x10, 0x02, 0x0e, 0x02, 0xf4, 0x01, 0xf3, 0x01, + 0xce, 0x01, 0xcc, 0x01, 0xa3, 0x01, 0xa1, 0x01, 0x70, 0x01, 0x70, 0x01, + 0x38, 0x01, 0x36, 0x01, 0xfe, 0x00, 0xfc, 0x00, 0xba, 0x00, 0xba, 0x00, + 0x79, 0x00, 0x77, 0x00, 0x35, 0x00, 0x32, 0x00, 0xef, 0xff, 0xf0, 0xff, + 0xaf, 0xff, 0xab, 0xff, 0x6a, 0xff, 0x6c, 0xff, 0x31, 0xff, 0x2d, 0xff, + 0xf6, 0xfe, 0xf9, 0xfe, 0xc4, 0xfe, 0xc2, 0xfe, 0x98, 0xfe, 0x98, 0xfe, + 0x70, 0xfe, 0x6f, 0xfe, 0x53, 0xfe, 0x52, 0xfe, 0x3b, 0xfe, 0x3a, 0xfe, + 0x2c, 0xfe, 0x2c, 0xfe, 0x27, 0xfe, 0x25, 0xfe, 0x27, 0xfe, 0x27, 0xfe, + 0x33, 0xfe, 0x33, 0xfe, 0x42, 0xfe, 0x41, 0xfe, 0x5a, 0xfe, 0x5a, 0xfe, + 0x75, 0xfe, 0x75, 0xfe, 0x97, 0xfe, 0x96, 0xfe, 0xbc, 0xfe, 0xbd, 0xfe, + 0xe1, 0xfe, 0xdf, 0xfe, 0x0b, 0xff, 0x0a, 0xff, 0x2f, 0xff, 0x30, 0xff, + 0x58, 0xff, 0x55, 0xff, 0x77, 0xff, 0x78, 0xff, 0x96, 0xff, 0x97, 0xff, + 0xae, 0xff, 0xad, 0xff, 0xc1, 0xff, 0xc2, 0xff, 0xcc, 0xff, 0xcb, 0xff, + 0xcf, 0xff, 0xcd, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xb6, 0xff, 0xb6, 0xff, + 0xa0, 0xff, 0x9f, 0xff, 0x78, 0xff, 0x77, 0xff, 0x4b, 0xff, 0x4a, 0xff, + 0x11, 0xff, 0x11, 0xff, 0xcf, 0xfe, 0xce, 0xfe, 0x84, 0xfe, 0x83, 0xfe, + 0x30, 0xfe, 0x30, 0xfe, 0xd8, 0xfd, 0xd8, 0xfd, 0x7a, 0xfd, 0x77, 0xfd, + 0x14, 0xfd, 0x16, 0xfd, 0xb1, 0xfc, 0xaf, 0xfc, 0x48, 0xfc, 0x48, 0xfc, + 0xe6, 0xfb, 0xe3, 0xfb, 0x80, 0xfb, 0x7f, 0xfb, 0x22, 0xfb, 0x22, 0xfb, + 0xcb, 0xfa, 0xc9, 0xfa, 0x78, 0xfa, 0x77, 0xfa, 0x33, 0xfa, 0x33, 0xfa, + 0xf6, 0xf9, 0xf3, 0xf9, 0xc5, 0xf9, 0xc6, 0xf9, 0xa4, 0xf9, 0xa0, 0xf9, + 0x8e, 0xf9, 0x8e, 0xf9, 0x8b, 0xf9, 0x89, 0xf9, 0x95, 0xf9, 0x94, 0xf9, + 0xb4, 0xf9, 0xb2, 0xf9, 0xdf, 0xf9, 0xde, 0xf9, 0x1e, 0xfa, 0x1d, 0xfa, + 0x6a, 0xfa, 0x6a, 0xfa, 0xca, 0xfa, 0xc8, 0xfa, 0x36, 0xfb, 0x37, 0xfb, + 0xb2, 0xfb, 0xb0, 0xfb, 0x3b, 0xfc, 0x3b, 0xfc, 0xd0, 0xfc, 0xcf, 0xfc, + 0x6f, 0xfd, 0x6d, 0xfd, 0x15, 0xfe, 0x15, 0xfe, 0xc0, 0xfe, 0xc0, 0xfe, + 0x74, 0xff, 0x72, 0xff, 0x24, 0x00, 0x25, 0x00, 0xd8, 0x00, 0xd7, 0x00, + 0x89, 0x01, 0x89, 0x01, 0x33, 0x02, 0x33, 0x02, 0xd9, 0x02, 0xd9, 0x02, + 0x76, 0x03, 0x76, 0x03, 0x08, 0x04, 0x08, 0x04, 0x90, 0x04, 0x8f, 0x04, + 0x09, 0x05, 0x09, 0x05, 0x73, 0x05, 0x74, 0x05, 0xcf, 0x05, 0xcf, 0x05, + 0x19, 0x06, 0x19, 0x06, 0x53, 0x06, 0x54, 0x06, 0x7b, 0x06, 0x7c, 0x06, + 0x95, 0x06, 0x94, 0x06, 0x9b, 0x06, 0x9a, 0x06, 0x8f, 0x06, 0x90, 0x06, + 0x73, 0x06, 0x72, 0x06, 0x49, 0x06, 0x4b, 0x06, 0x10, 0x06, 0x0e, 0x06, + 0xca, 0x05, 0xcb, 0x05, 0x77, 0x05, 0x77, 0x05, 0x1e, 0x05, 0x1e, 0x05, + 0xb8, 0x04, 0xb8, 0x04, 0x4d, 0x04, 0x4d, 0x04, 0xdd, 0x03, 0xdc, 0x03, + 0x68, 0x03, 0x69, 0x03, 0xf2, 0x02, 0xef, 0x02, 0x7a, 0x02, 0x7b, 0x02, + 0x05, 0x02, 0x04, 0x02, 0x92, 0x01, 0x92, 0x01, 0x25, 0x01, 0x22, 0x01, + 0xbb, 0x00, 0xbc, 0x00, 0x5b, 0x00, 0x58, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0xae, 0xff, 0xae, 0xff, 0x65, 0xff, 0x62, 0xff, 0x26, 0xff, 0x25, 0xff, + 0xed, 0xfe, 0xed, 0xfe, 0xc3, 0xfe, 0xc2, 0xfe, 0x9e, 0xfe, 0x9e, 0xfe, + 0x85, 0xfe, 0x84, 0xfe, 0x73, 0xfe, 0x71, 0xfe, 0x66, 0xfe, 0x67, 0xfe, + 0x67, 0xfe, 0x65, 0xfe, 0x68, 0xfe, 0x67, 0xfe, 0x72, 0xfe, 0x71, 0xfe, + 0x80, 0xfe, 0x7e, 0xfe, 0x91, 0xfe, 0x90, 0xfe, 0xa4, 0xfe, 0xa3, 0xfe, + 0xbb, 0xfe, 0xba, 0xfe, 0xce, 0xfe, 0xcd, 0xfe, 0xe7, 0xfe, 0xe6, 0xfe, + 0xf7, 0xfe, 0xf6, 0xfe, 0x0c, 0xff, 0x0a, 0xff, 0x1b, 0xff, 0x1b, 0xff, + 0x27, 0xff, 0x25, 0xff, 0x32, 0xff, 0x32, 0xff, 0x37, 0xff, 0x36, 0xff, + 0x3d, 0xff, 0x3b, 0xff, 0x3a, 0xff, 0x3b, 0xff, 0x38, 0xff, 0x36, 0xff, + 0x34, 0xff, 0x32, 0xff, 0x2a, 0xff, 0x2d, 0xff, 0x27, 0xff, 0x23, 0xff, + 0x1c, 0xff, 0x1d, 0xff, 0x16, 0xff, 0x15, 0xff, 0x11, 0xff, 0x0f, 0xff, + 0x0b, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x10, 0xff, 0x0d, 0xff, + 0x16, 0xff, 0x17, 0xff, 0x26, 0xff, 0x25, 0xff, 0x38, 0xff, 0x36, 0xff, + 0x54, 0xff, 0x56, 0xff, 0x77, 0xff, 0x73, 0xff, 0xa0, 0xff, 0xa1, 0xff, + 0xd3, 0xff, 0xd1, 0xff, 0x0d, 0x00, 0x09, 0x00, 0x4f, 0x00, 0x50, 0x00, + 0x98, 0x00, 0x96, 0x00, 0xea, 0x00, 0xe9, 0x00, 0x42, 0x01, 0x42, 0x01, + 0x9f, 0x01, 0x9d, 0x01, 0x02, 0x02, 0x00, 0x02, 0x64, 0x02, 0x63, 0x02, + 0xcd, 0x02, 0xca, 0x02, 0x34, 0x03, 0x34, 0x03, 0x98, 0x03, 0x97, 0x03, + 0xff, 0x03, 0xfc, 0x03, 0x5c, 0x04, 0x5c, 0x04, 0xb6, 0x04, 0xb5, 0x04, + 0x0b, 0x05, 0x09, 0x05, 0x53, 0x05, 0x52, 0x05, 0x94, 0x05, 0x95, 0x05, + 0xc8, 0x05, 0xc6, 0x05, 0xee, 0x05, 0xef, 0x05, 0x0a, 0x06, 0x08, 0x06, + 0x12, 0x06, 0x11, 0x06, 0x10, 0x06, 0x10, 0x06, 0xfa, 0x05, 0xfa, 0x05, + 0xd8, 0x05, 0xd9, 0x05, 0xa3, 0x05, 0xa2, 0x05, 0x5f, 0x05, 0x5f, 0x05, + 0x0c, 0x05, 0x0b, 0x05, 0xa8, 0x04, 0xa9, 0x04, 0x38, 0x04, 0x37, 0x04, + 0xbb, 0x03, 0xbb, 0x03, 0x33, 0x03, 0x33, 0x03, 0x9e, 0x02, 0x9f, 0x02, + 0x05, 0x02, 0x05, 0x02, 0x61, 0x01, 0x62, 0x01, 0xbe, 0x00, 0xbd, 0x00, + 0x11, 0x00, 0x14, 0x00, 0x6b, 0xff, 0x69, 0xff, 0xc3, 0xfe, 0xc6, 0xfe, + 0x1f, 0xfe, 0x1e, 0xfe, 0x81, 0xfd, 0x82, 0xfd, 0xea, 0xfc, 0xe9, 0xfc, + 0x5e, 0xfc, 0x5f, 0xfc, 0xdb, 0xfb, 0xdb, 0xfb, 0x64, 0xfb, 0x63, 0xfb, + 0xfd, 0xfa, 0xfd, 0xfa, 0xa0, 0xfa, 0x9f, 0xfa, 0x58, 0xfa, 0x58, 0xfa, + 0x1c, 0xfa, 0x1c, 0xfa, 0xf4, 0xf9, 0xf2, 0xf9, 0xda, 0xf9, 0xdb, 0xf9, + 0xd2, 0xf9, 0xd0, 0xf9, 0xda, 0xf9, 0xdb, 0xf9, 0xf2, 0xf9, 0xf0, 0xf9, + 0x18, 0xfa, 0x19, 0xfa, 0x4c, 0xfa, 0x4b, 0xfa, 0x8b, 0xfa, 0x8c, 0xfa, + 0xd8, 0xfa, 0xd6, 0xfa, 0x2c, 0xfb, 0x2d, 0xfb, 0x8c, 0xfb, 0x8a, 0xfb, + 0xec, 0xfb, 0xeb, 0xfb, 0x54, 0xfc, 0x52, 0xfc, 0xbd, 0xfc, 0xbe, 0xfc, + 0x25, 0xfd, 0x25, 0xfd, 0x8f, 0xfd, 0x8f, 0xfd, 0xf4, 0xfd, 0xf3, 0xfd, + 0x56, 0xfe, 0x55, 0xfe, 0xb1, 0xfe, 0xb1, 0xfe, 0x04, 0xff, 0x03, 0xff, + 0x4f, 0xff, 0x51, 0xff, 0x93, 0xff, 0x90, 0xff, 0xca, 0xff, 0xca, 0xff, + 0xf7, 0xff, 0xf5, 0xff, 0x17, 0x00, 0x17, 0x00, 0x2e, 0x00, 0x2c, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x36, 0x00, 0x2c, 0x00, 0x2b, 0x00, + 0x16, 0x00, 0x16, 0x00, 0xf9, 0xff, 0xf8, 0xff, 0xd3, 0xff, 0xd2, 0xff, + 0xa5, 0xff, 0xa4, 0xff, 0x75, 0xff, 0x72, 0xff, 0x3c, 0xff, 0x3c, 0xff, + 0x05, 0xff, 0x02, 0xff, 0xc7, 0xfe, 0xc7, 0xfe, 0x8f, 0xfe, 0x8c, 0xfe, + 0x53, 0xfe, 0x55, 0xfe, 0x20, 0xfe, 0x1e, 0xfe, 0xeb, 0xfd, 0xeb, 0xfd, + 0xbe, 0xfd, 0xbc, 0xfd, 0x97, 0xfd, 0x95, 0xfd, 0x75, 0xfd, 0x75, 0xfd, + 0x5f, 0xfd, 0x5d, 0xfd, 0x4d, 0xfd, 0x4c, 0xfd, 0x47, 0xfd, 0x45, 0xfd, + 0x48, 0xfd, 0x48, 0xfd, 0x53, 0xfd, 0x51, 0xfd, 0x68, 0xfd, 0x66, 0xfd, + 0x84, 0xfd, 0x82, 0xfd, 0xa9, 0xfd, 0xaa, 0xfd, 0xd6, 0xfd, 0xd3, 0xfd, + 0x08, 0xfe, 0x07, 0xfe, 0x41, 0xfe, 0x40, 0xfe, 0x7f, 0xfe, 0x7e, 0xfe, + 0xc0, 0xfe, 0xc0, 0xfe, 0x04, 0xff, 0x02, 0xff, 0x49, 0xff, 0x46, 0xff, + 0x8f, 0xff, 0x8d, 0xff, 0xd1, 0xff, 0xcf, 0xff, 0x15, 0x00, 0x13, 0x00, + 0x54, 0x00, 0x52, 0x00, 0x8b, 0x00, 0x89, 0x00, 0xc4, 0x00, 0xc2, 0x00, + 0xf0, 0x00, 0xee, 0x00, 0x1c, 0x01, 0x1a, 0x01, 0x3c, 0x01, 0x3c, 0x01, + 0x58, 0x01, 0x56, 0x01, 0x6d, 0x01, 0x6c, 0x01, 0x78, 0x01, 0x76, 0x01, + 0x80, 0x01, 0x7f, 0x01, 0x7d, 0x01, 0x7b, 0x01, 0x76, 0x01, 0x75, 0x01, + 0x68, 0x01, 0x65, 0x01, 0x55, 0x01, 0x56, 0x01, 0x43, 0x01, 0x3f, 0x01, + 0x26, 0x01, 0x25, 0x01, 0x0e, 0x01, 0x0b, 0x01, 0xef, 0x00, 0xef, 0x00, + 0xd5, 0x00, 0xd3, 0x00, 0xbb, 0x00, 0xba, 0x00, 0xa2, 0x00, 0xa2, 0x00, + 0x90, 0x00, 0x8d, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x74, 0x00, 0x71, 0x00, + 0x6f, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x76, 0x00, 0x75, 0x00, + 0x83, 0x00, 0x83, 0x00, 0x98, 0x00, 0x97, 0x00, 0xb5, 0x00, 0xb3, 0x00, + 0xd6, 0x00, 0xd6, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x2e, 0x01, 0x2b, 0x01, + 0x60, 0x01, 0x61, 0x01, 0x95, 0x01, 0x93, 0x01, 0xd0, 0x01, 0xcf, 0x01, + 0x09, 0x02, 0x08, 0x02, 0x45, 0x02, 0x44, 0x02, 0x7d, 0x02, 0x7c, 0x02, + 0xb7, 0x02, 0xb6, 0x02, 0xea, 0x02, 0xe9, 0x02, 0x19, 0x03, 0x19, 0x03, + 0x43, 0x03, 0x43, 0x03, 0x65, 0x03, 0x63, 0x03, 0x80, 0x03, 0x7f, 0x03, + 0x93, 0x03, 0x92, 0x03, 0x97, 0x03, 0x96, 0x03, 0x96, 0x03, 0x96, 0x03, + 0x87, 0x03, 0x85, 0x03, 0x6e, 0x03, 0x6d, 0x03, 0x48, 0x03, 0x46, 0x03, + 0x16, 0x03, 0x15, 0x03, 0xda, 0x02, 0xd9, 0x02, 0x91, 0x02, 0x90, 0x02, + 0x40, 0x02, 0x3f, 0x02, 0xe6, 0x01, 0xe4, 0x01, 0x81, 0x01, 0x81, 0x01, + 0x18, 0x01, 0x16, 0x01, 0xa9, 0x00, 0xa7, 0x00, 0x38, 0x00, 0x36, 0x00, + 0xc2, 0xff, 0xc2, 0xff, 0x51, 0xff, 0x4d, 0xff, 0xdb, 0xfe, 0xdc, 0xfe, + 0x6f, 0xfe, 0x6b, 0xfe, 0x04, 0xfe, 0x05, 0xfe, 0xa4, 0xfd, 0xa1, 0xfd, + 0x49, 0xfd, 0x4a, 0xfd, 0xfd, 0xfc, 0xfa, 0xfc, 0xb8, 0xfc, 0xb9, 0xfc, + 0x85, 0xfc, 0x84, 0xfc, 0x5e, 0xfc, 0x5d, 0xfc, 0x47, 0xfc, 0x45, 0xfc, + 0x3e, 0xfc, 0x3d, 0xfc, 0x47, 0xfc, 0x47, 0xfc, 0x60, 0xfc, 0x5e, 0xfc, + 0x89, 0xfc, 0x89, 0xfc, 0xc3, 0xfc, 0xc0, 0xfc, 0x0e, 0xfd, 0x0c, 0xfd, + 0x64, 0xfd, 0x62, 0xfd, 0xca, 0xfd, 0xc9, 0xfd, 0x3c, 0xfe, 0x3b, 0xfe, + 0xbd, 0xfe, 0xba, 0xfe, 0x42, 0xff, 0x40, 0xff, 0xd4, 0xff, 0xd3, 0xff, + 0x69, 0x00, 0x68, 0x00, 0x04, 0x01, 0x03, 0x01, 0xa0, 0x01, 0x9f, 0x01, + 0x3d, 0x02, 0x3d, 0x02, 0xd8, 0x02, 0xd6, 0x02, 0x6c, 0x03, 0x6c, 0x03, + 0xfd, 0x03, 0xfc, 0x03, 0x85, 0x04, 0x83, 0x04, 0x03, 0x05, 0x03, 0x05, + 0x76, 0x05, 0x75, 0x05, 0xdb, 0x05, 0xd9, 0x05, 0x31, 0x06, 0x30, 0x06, + 0x78, 0x06, 0x77, 0x06, 0xaf, 0x06, 0xad, 0x06, 0xd4, 0x06, 0xd3, 0x06, + 0xe9, 0x06, 0xe7, 0x06, 0xec, 0x06, 0xea, 0x06, 0xdb, 0x06, 0xdc, 0x06, + 0xbd, 0x06, 0xba, 0x06, 0x8c, 0x06, 0x8d, 0x06, 0x4d, 0x06, 0x4c, 0x06, + 0xff, 0x05, 0xfe, 0x05, 0xa4, 0x05, 0xa3, 0x05, 0x3a, 0x05, 0x3a, 0x05, + 0xc9, 0x04, 0xc6, 0x04, 0x4a, 0x04, 0x4c, 0x04, 0xc7, 0x03, 0xc5, 0x03, + 0x40, 0x03, 0x3f, 0x03, 0xb0, 0x02, 0xaf, 0x02, 0x22, 0x02, 0x22, 0x02, + 0x90, 0x01, 0x8f, 0x01, 0xff, 0x00, 0x00, 0x01, 0x75, 0x00, 0x74, 0x00, + 0xe8, 0xff, 0xe8, 0xff, 0x68, 0xff, 0x65, 0xff, 0xe7, 0xfe, 0xe8, 0xfe, + 0x72, 0xfe, 0x70, 0xfe, 0x04, 0xfe, 0x03, 0xfe, 0x9c, 0xfd, 0x9c, 0xfd, + 0x44, 0xfd, 0x42, 0xfd, 0xef, 0xfc, 0xee, 0xfc, 0xaa, 0xfc, 0xab, 0xfc, + 0x6e, 0xfc, 0x6c, 0xfc, 0x3a, 0xfc, 0x39, 0xfc, 0x0e, 0xfc, 0x0f, 0xfc, + 0xeb, 0xfb, 0xe9, 0xfb, 0xcf, 0xfb, 0xcf, 0xfb, 0xb7, 0xfb, 0xb6, 0xfb, + 0xaa, 0xfb, 0xa8, 0xfb, 0x9e, 0xfb, 0x9d, 0xfb, 0x96, 0xfb, 0x95, 0xfb, + 0x93, 0xfb, 0x92, 0xfb, 0x90, 0xfb, 0x8e, 0xfb, 0x90, 0xfb, 0x8e, 0xfb, + 0x8f, 0xfb, 0x8e, 0xfb, 0x8f, 0xfb, 0x8e, 0xfb, 0x8e, 0xfb, 0x8e, 0xfb, + 0x8b, 0xfb, 0x8a, 0xfb, 0x89, 0xfb, 0x87, 0xfb, 0x83, 0xfb, 0x82, 0xfb, + 0x7d, 0xfb, 0x7b, 0xfb, 0x72, 0xfb, 0x72, 0xfb, 0x6a, 0xfb, 0x68, 0xfb, + 0x5f, 0xfb, 0x60, 0xfb, 0x55, 0xfb, 0x51, 0xfb, 0x4a, 0xfb, 0x4b, 0xfb, + 0x3e, 0xfb, 0x3b, 0xfb, 0x37, 0xfb, 0x36, 0xfb, 0x32, 0xfb, 0x32, 0xfb, + 0x2e, 0xfb, 0x2c, 0xfb, 0x33, 0xfb, 0x33, 0xfb, 0x3a, 0xfb, 0x37, 0xfb, + 0x46, 0xfb, 0x47, 0xfb, 0x5d, 0xfb, 0x5a, 0xfb, 0x78, 0xfb, 0x77, 0xfb, + 0x9d, 0xfb, 0x9b, 0xfb, 0xcb, 0xfb, 0xc9, 0xfb, 0x01, 0xfc, 0x00, 0xfc, + 0x43, 0xfc, 0x42, 0xfc, 0x8e, 0xfc, 0x8a, 0xfc, 0xe1, 0xfc, 0xe1, 0xfc, + 0x3e, 0xfd, 0x3d, 0xfd, 0xa6, 0xfd, 0xa2, 0xfd, 0x12, 0xfe, 0x14, 0xfe, + 0x8a, 0xfe, 0x88, 0xfe, 0x07, 0xff, 0x05, 0xff, 0x86, 0xff, 0x86, 0xff, + 0x0c, 0x00, 0x0a, 0x00, 0x90, 0x00, 0x91, 0x00, 0x19, 0x01, 0x18, 0x01, + 0xa0, 0x01, 0x9e, 0x01, 0x21, 0x02, 0x22, 0x02, 0xa3, 0x02, 0xa0, 0x02, + 0x18, 0x03, 0x18, 0x03, 0x8a, 0x03, 0x87, 0x03, 0xf0, 0x03, 0xef, 0x03, + 0x49, 0x04, 0x47, 0x04, 0x9b, 0x04, 0x99, 0x04, 0xdb, 0x04, 0xdb, 0x04, + 0x0d, 0x05, 0x0b, 0x05, 0x32, 0x05, 0x33, 0x05, 0x44, 0x05, 0x42, 0x05, + 0x48, 0x05, 0x48, 0x05, 0x39, 0x05, 0x38, 0x05, 0x1c, 0x05, 0x1b, 0x05, + 0xeb, 0x04, 0xeb, 0x04, 0xaf, 0x04, 0xad, 0x04, 0x5d, 0x04, 0x5e, 0x04, + 0x04, 0x04, 0x01, 0x04, 0x99, 0x03, 0x96, 0x03, 0x20, 0x03, 0x21, 0x03, + 0xa3, 0x02, 0xa0, 0x02, 0x19, 0x02, 0x19, 0x02, 0x89, 0x01, 0x89, 0x01, + 0xf9, 0x00, 0xf6, 0x00, 0x60, 0x00, 0x61, 0x00, 0xcb, 0xff, 0xca, 0xff, + 0x37, 0xff, 0x35, 0xff, 0xa6, 0xfe, 0xa6, 0xfe, 0x1e, 0xfe, 0x1a, 0xfe, + 0x9a, 0xfd, 0x9c, 0xfd, 0x21, 0xfd, 0x1f, 0xfd, 0xb5, 0xfc, 0xb5, 0xfc, + 0x55, 0xfc, 0x53, 0xfc, 0x02, 0xfc, 0x03, 0xfc, 0xc3, 0xfb, 0xc0, 0xfb, + 0x8e, 0xfb, 0x8f, 0xfb, 0x6f, 0xfb, 0x6c, 0xfb, 0x5d, 0xfb, 0x5c, 0xfb, + 0x60, 0xfb, 0x5e, 0xfb, 0x72, 0xfb, 0x6f, 0xfb, 0x94, 0xfb, 0x94, 0xfb, + 0xc8, 0xfb, 0xc6, 0xfb, 0x0a, 0xfc, 0x0a, 0xfc, 0x5a, 0xfc, 0x59, 0xfc, + 0xb5, 0xfc, 0xb4, 0xfc, 0x1e, 0xfd, 0x1d, 0xfd, 0x8e, 0xfd, 0x8c, 0xfd, + 0x06, 0xfe, 0x06, 0xfe, 0x82, 0xfe, 0x80, 0xfe, 0x02, 0xff, 0x03, 0xff, + 0x87, 0xff, 0x84, 0xff, 0x07, 0x00, 0x06, 0x00, 0x89, 0x00, 0x89, 0x00, + 0x04, 0x01, 0x02, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0xea, 0x01, 0xe7, 0x01, + 0x50, 0x02, 0x50, 0x02, 0xae, 0x02, 0xae, 0x02, 0x00, 0x03, 0xfd, 0x02, + 0x47, 0x03, 0x47, 0x03, 0x82, 0x03, 0x7f, 0x03, 0xad, 0x03, 0xac, 0x03, + 0xd0, 0x03, 0xcf, 0x03, 0xe1, 0x03, 0xe0, 0x03, 0xeb, 0x03, 0xe8, 0x03, + 0xe2, 0x03, 0xe2, 0x03, 0xd4, 0x03, 0xd1, 0x03, 0xb6, 0x03, 0xb5, 0x03, + 0x91, 0x03, 0x91, 0x03, 0x67, 0x03, 0x65, 0x03, 0x2f, 0x03, 0x2e, 0x03, + 0xf8, 0x02, 0xf6, 0x02, 0xb8, 0x02, 0xb7, 0x02, 0x77, 0x02, 0x75, 0x02, + 0x35, 0x02, 0x34, 0x02, 0xf1, 0x01, 0xef, 0x01, 0xb1, 0x01, 0xb1, 0x01, + 0x70, 0x01, 0x6f, 0x01, 0x35, 0x01, 0x36, 0x01, 0x02, 0x01, 0x02, 0x01, + 0xcf, 0x00, 0xcf, 0x00, 0xaa, 0x00, 0xa9, 0x00, 0x85, 0x00, 0x85, 0x00, + 0x6e, 0x00, 0x6c, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x4f, 0x00, 0x4d, 0x00, + 0x4f, 0x00, 0x4e, 0x00, 0x52, 0x00, 0x51, 0x00, 0x5f, 0x00, 0x5e, 0x00, + 0x70, 0x00, 0x70, 0x00, 0x87, 0x00, 0x84, 0x00, 0xa4, 0x00, 0xa3, 0x00, + 0xc4, 0x00, 0xc2, 0x00, 0xe7, 0x00, 0xe7, 0x00, 0x0c, 0x01, 0x0a, 0x01, + 0x30, 0x01, 0x30, 0x01, 0x56, 0x01, 0x56, 0x01, 0x76, 0x01, 0x76, 0x01, + 0x97, 0x01, 0x96, 0x01, 0xb5, 0x01, 0xb1, 0x01, 0xca, 0x01, 0xca, 0x01, + 0xde, 0x01, 0xdc, 0x01, 0xe8, 0x01, 0xe8, 0x01, 0xee, 0x01, 0xeb, 0x01, + 0xed, 0x01, 0xed, 0x01, 0xe4, 0x01, 0xe3, 0x01, 0xd5, 0x01, 0xd3, 0x01, + 0xbc, 0x01, 0xbc, 0x01, 0x9f, 0x01, 0x9f, 0x01, 0x7d, 0x01, 0x7c, 0x01, + 0x53, 0x01, 0x52, 0x01, 0x26, 0x01, 0x26, 0x01, 0xf5, 0x00, 0xf3, 0x00, + 0xc1, 0x00, 0xc1, 0x00, 0x8b, 0x00, 0x89, 0x00, 0x54, 0x00, 0x54, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0xea, 0xff, 0xe9, 0xff, 0xb5, 0xff, 0xb6, 0xff, + 0x8b, 0xff, 0x88, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x3c, 0xff, 0x3b, 0xff, + 0x20, 0xff, 0x20, 0xff, 0x08, 0xff, 0x07, 0xff, 0xfb, 0xfe, 0xfd, 0xfe, + 0xf4, 0xfe, 0xf2, 0xfe, 0xf4, 0xfe, 0xf4, 0xfe, 0xfd, 0xfe, 0xfc, 0xfe, + 0x0f, 0xff, 0x0d, 0xff, 0x27, 0xff, 0x28, 0xff, 0x46, 0xff, 0x45, 0xff, + 0x6e, 0xff, 0x6e, 0xff, 0x99, 0xff, 0x98, 0xff, 0xc7, 0xff, 0xc8, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0x30, 0x00, 0x30, 0x00, 0x66, 0x00, 0x64, 0x00, + 0x9b, 0x00, 0x9c, 0x00, 0xcc, 0x00, 0xca, 0x00, 0xfa, 0x00, 0xfa, 0x00, + 0x22, 0x01, 0x21, 0x01, 0x44, 0x01, 0x42, 0x01, 0x60, 0x01, 0x5f, 0x01, + 0x6f, 0x01, 0x6e, 0x01, 0x75, 0x01, 0x75, 0x01, 0x74, 0x01, 0x72, 0x01, + 0x61, 0x01, 0x60, 0x01, 0x48, 0x01, 0x46, 0x01, 0x1c, 0x01, 0x1c, 0x01, + 0xe8, 0x00, 0xe7, 0x00, 0xa6, 0x00, 0xa6, 0x00, 0x57, 0x00, 0x55, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x9a, 0xff, 0x99, 0xff, 0x2f, 0xff, 0x2e, 0xff, + 0xb7, 0xfe, 0xb8, 0xfe, 0x3c, 0xfe, 0x3a, 0xfe, 0xbc, 0xfd, 0xba, 0xfd, + 0x33, 0xfd, 0x32, 0xfd, 0xaf, 0xfc, 0xae, 0xfc, 0x28, 0xfc, 0x27, 0xfc, + 0xa2, 0xfb, 0xa2, 0xfb, 0x26, 0xfb, 0x25, 0xfb, 0xa9, 0xfa, 0xa9, 0xfa, + 0x3a, 0xfa, 0x3b, 0xfa, 0xd6, 0xf9, 0xd2, 0xf9, 0x76, 0xf9, 0x77, 0xf9, + 0x2d, 0xf9, 0x2c, 0xf9, 0xef, 0xf8, 0xec, 0xf8, 0xbd, 0xf8, 0xbf, 0xf8, + 0xa4, 0xf8, 0xa1, 0xf8, 0x94, 0xf8, 0x95, 0xf8, 0x9f, 0xf8, 0x9c, 0xf8, + 0xb5, 0xf8, 0xb5, 0xf8, 0xe0, 0xf8, 0xdf, 0xf8, 0x20, 0xf9, 0x1f, 0xf9, + 0x70, 0xf9, 0x6e, 0xf9, 0xd1, 0xf9, 0xd1, 0xf9, 0x42, 0xfa, 0x41, 0xfa, + 0xc3, 0xfa, 0xc3, 0xfa, 0x52, 0xfb, 0x51, 0xfb, 0xed, 0xfb, 0xed, 0xfb, + 0x91, 0xfc, 0x8e, 0xfc, 0x3f, 0xfd, 0x3f, 0xfd, 0xf2, 0xfd, 0xf0, 0xfd, + 0xa8, 0xfe, 0xa8, 0xfe, 0x62, 0xff, 0x61, 0xff, 0x1a, 0x00, 0x19, 0x00, + 0xd1, 0x00, 0xd1, 0x00, 0x81, 0x01, 0x7f, 0x01, 0x2b, 0x02, 0x2a, 0x02, + 0xcd, 0x02, 0xcb, 0x02, 0x62, 0x03, 0x61, 0x03, 0xed, 0x03, 0xed, 0x03, + 0x69, 0x04, 0x67, 0x04, 0xda, 0x04, 0xd8, 0x04, 0x34, 0x05, 0x34, 0x05, + 0x85, 0x05, 0x83, 0x05, 0xbf, 0x05, 0xbe, 0x05, 0xea, 0x05, 0xe9, 0x05, + 0x06, 0x06, 0x04, 0x06, 0x0b, 0x06, 0x0b, 0x06, 0x08, 0x06, 0x07, 0x06, + 0xed, 0x05, 0xec, 0x05, 0xc9, 0x05, 0xc7, 0x05, 0x96, 0x05, 0x94, 0x05, + 0x53, 0x05, 0x53, 0x05, 0x0a, 0x05, 0x07, 0x05, 0xb4, 0x04, 0xb4, 0x04, + 0x56, 0x04, 0x56, 0x04, 0xf4, 0x03, 0xf2, 0x03, 0x89, 0x03, 0x8a, 0x03, + 0x21, 0x03, 0x1f, 0x03, 0xb3, 0x02, 0xb3, 0x02, 0x44, 0x02, 0x44, 0x02, + 0xda, 0x01, 0xd8, 0x01, 0x6f, 0x01, 0x6e, 0x01, 0x09, 0x01, 0x09, 0x01, + 0xab, 0x00, 0xa9, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0xfc, 0xff, 0xfa, 0xff, + 0xb0, 0xff, 0xb1, 0xff, 0x6a, 0xff, 0x68, 0xff, 0x2e, 0xff, 0x2d, 0xff, + 0xf9, 0xfe, 0xf8, 0xfe, 0xcb, 0xfe, 0xcb, 0xfe, 0xa9, 0xfe, 0xa6, 0xfe, + 0x86, 0xfe, 0x86, 0xfe, 0x72, 0xfe, 0x71, 0xfe, 0x5e, 0xfe, 0x5e, 0xfe, + 0x53, 0xfe, 0x53, 0xfe, 0x4b, 0xfe, 0x4b, 0xfe, 0x48, 0xfe, 0x47, 0xfe, + 0x46, 0xfe, 0x46, 0xfe, 0x49, 0xfe, 0x48, 0xfe, 0x4a, 0xfe, 0x49, 0xfe, + 0x4e, 0xfe, 0x4e, 0xfe, 0x50, 0xfe, 0x50, 0xfe, 0x54, 0xfe, 0x51, 0xfe, + 0x54, 0xfe, 0x55, 0xfe, 0x55, 0xfe, 0x53, 0xfe, 0x52, 0xfe, 0x52, 0xfe, + 0x4f, 0xfe, 0x4d, 0xfe, 0x48, 0xfe, 0x47, 0xfe, 0x40, 0xfe, 0x40, 0xfe, + 0x39, 0xfe, 0x38, 0xfe, 0x2e, 0xfe, 0x2d, 0xfe, 0x25, 0xfe, 0x24, 0xfe, + 0x1a, 0xfe, 0x1a, 0xfe, 0x12, 0xfe, 0x11, 0xfe, 0x0d, 0xfe, 0x0b, 0xfe, + 0x06, 0xfe, 0x05, 0xfe, 0x06, 0xfe, 0x06, 0xfe, 0x0b, 0xfe, 0x09, 0xfe, + 0x11, 0xfe, 0x11, 0xfe, 0x24, 0xfe, 0x21, 0xfe, 0x38, 0xfe, 0x37, 0xfe, + 0x57, 0xfe, 0x57, 0xfe, 0x7f, 0xfe, 0x7b, 0xfe, 0xa7, 0xfe, 0xa9, 0xfe, + 0xe4, 0xfe, 0xe1, 0xfe, 0x21, 0xff, 0x20, 0xff, 0x6a, 0xff, 0x69, 0xff, + 0xbd, 0xff, 0xbc, 0xff, 0x17, 0x00, 0x16, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0xe4, 0x00, 0xe2, 0x00, 0x54, 0x01, 0x54, 0x01, 0xcb, 0x01, 0xc9, 0x01, + 0x44, 0x02, 0x43, 0x02, 0xc0, 0x02, 0xc0, 0x02, 0x3f, 0x03, 0x3c, 0x03, + 0xbb, 0x03, 0xba, 0x03, 0x35, 0x04, 0x34, 0x04, 0xad, 0x04, 0xab, 0x04, + 0x1e, 0x05, 0x1f, 0x05, 0x89, 0x05, 0x85, 0x05, 0xea, 0x05, 0xe8, 0x05, + 0x3c, 0x06, 0x3f, 0x06, 0x8d, 0x06, 0x88, 0x06, 0xc5, 0x06, 0xc6, 0x06, + 0xf6, 0x06, 0xf4, 0x06, 0x15, 0x07, 0x14, 0x07, 0x21, 0x07, 0x22, 0x07, + 0x24, 0x07, 0x20, 0x07, 0x0d, 0x07, 0x0d, 0x07, 0xe7, 0x06, 0xe7, 0x06, + 0xb2, 0x06, 0xb0, 0x06, 0x68, 0x06, 0x6a, 0x06, 0x11, 0x06, 0x0e, 0x06, + 0xa7, 0x05, 0xa7, 0x05, 0x2f, 0x05, 0x2e, 0x05, 0xab, 0x04, 0xa9, 0x04, + 0x18, 0x04, 0x17, 0x04, 0x7c, 0x03, 0x7a, 0x03, 0xd6, 0x02, 0xd5, 0x02, + 0x2a, 0x02, 0x2b, 0x02, 0x77, 0x01, 0x77, 0x01, 0xc8, 0x00, 0xc3, 0x00, + 0x0e, 0x00, 0x11, 0x00, 0x61, 0xff, 0x5d, 0xff, 0xb3, 0xfe, 0xb4, 0xfe, + 0x0b, 0xfe, 0x0a, 0xfe, 0x6b, 0xfd, 0x6b, 0xfd, 0xd7, 0xfc, 0xd8, 0xfc, + 0x4a, 0xfc, 0x48, 0xfc, 0xd2, 0xfb, 0xd1, 0xfb, 0x60, 0xfb, 0x60, 0xfb, + 0x03, 0xfb, 0x01, 0xfb, 0xb4, 0xfa, 0xb4, 0xfa, 0x76, 0xfa, 0x75, 0xfa, + 0x4d, 0xfa, 0x4b, 0xfa, 0x2f, 0xfa, 0x2e, 0xfa, 0x27, 0xfa, 0x28, 0xfa, + 0x30, 0xfa, 0x2f, 0xfa, 0x47, 0xfa, 0x47, 0xfa, 0x73, 0xfa, 0x72, 0xfa, + 0xa6, 0xfa, 0xa6, 0xfa, 0xef, 0xfa, 0xee, 0xfa, 0x3d, 0xfb, 0x3d, 0xfb, + 0x99, 0xfb, 0x97, 0xfb, 0xfd, 0xfb, 0xfd, 0xfb, 0x65, 0xfc, 0x65, 0xfc, + 0xd8, 0xfc, 0xd5, 0xfc, 0x46, 0xfd, 0x46, 0xfd, 0xbc, 0xfd, 0xbb, 0xfd, + 0x2e, 0xfe, 0x2d, 0xfe, 0x9f, 0xfe, 0x9d, 0xfe, 0x09, 0xff, 0x0b, 0xff, + 0x71, 0xff, 0x6f, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0x28, 0x00, 0x27, 0x00, + 0x75, 0x00, 0x74, 0x00, 0xb9, 0x00, 0xb8, 0x00, 0xed, 0x00, 0xee, 0x00, + 0x1c, 0x01, 0x1b, 0x01, 0x3a, 0x01, 0x3a, 0x01, 0x4f, 0x01, 0x4f, 0x01, + 0x58, 0x01, 0x57, 0x01, 0x53, 0x01, 0x54, 0x01, 0x45, 0x01, 0x44, 0x01, + 0x2d, 0x01, 0x2c, 0x01, 0x0a, 0x01, 0x0b, 0x01, 0xde, 0x00, 0xde, 0x00, + 0xac, 0x00, 0xac, 0x00, 0x72, 0x00, 0x71, 0x00, 0x35, 0x00, 0x34, 0x00, + 0xf3, 0xff, 0xf3, 0xff, 0xb0, 0xff, 0xae, 0xff, 0x6c, 0xff, 0x6a, 0xff, + 0x25, 0xff, 0x26, 0xff, 0xe5, 0xfe, 0xe2, 0xfe, 0xa2, 0xfe, 0xa4, 0xfe, + 0x6a, 0xfe, 0x66, 0xfe, 0x2f, 0xfe, 0x2f, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, + 0xd3, 0xfd, 0xd1, 0xfd, 0xab, 0xfd, 0xad, 0xfd, 0x90, 0xfd, 0x8e, 0xfd, + 0x78, 0xfd, 0x79, 0xfd, 0x6a, 0xfd, 0x69, 0xfd, 0x62, 0xfd, 0x61, 0xfd, + 0x60, 0xfd, 0x60, 0xfd, 0x65, 0xfd, 0x65, 0xfd, 0x71, 0xfd, 0x70, 0xfd, + 0x82, 0xfd, 0x83, 0xfd, 0x97, 0xfd, 0x96, 0xfd, 0xb1, 0xfd, 0xb1, 0xfd, + 0xcc, 0xfd, 0xcc, 0xfd, 0xed, 0xfd, 0xec, 0xfd, 0x0c, 0xfe, 0x0b, 0xfe, + 0x2b, 0xfe, 0x2d, 0xfe, 0x4e, 0xfe, 0x4b, 0xfe, 0x6c, 0xfe, 0x6d, 0xfe, + 0x89, 0xfe, 0x88, 0xfe, 0xa4, 0xfe, 0xa2, 0xfe, 0xba, 0xfe, 0xb9, 0xfe, + 0xcf, 0xfe, 0xcd, 0xfe, 0xdc, 0xfe, 0xda, 0xfe, 0xe9, 0xfe, 0xea, 0xfe, + 0xf0, 0xfe, 0xed, 0xfe, 0xf4, 0xfe, 0xf7, 0xfe, 0xf5, 0xfe, 0xf2, 0xfe, + 0xf1, 0xfe, 0xf3, 0xfe, 0xee, 0xfe, 0xec, 0xfe, 0xe6, 0xfe, 0xe6, 0xfe, + 0xde, 0xfe, 0xdc, 0xfe, 0xd5, 0xfe, 0xd5, 0xfe, 0xcd, 0xfe, 0xca, 0xfe, + 0xc5, 0xfe, 0xc5, 0xfe, 0xc2, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xc0, 0xfe, + 0xc3, 0xfe, 0xc2, 0xfe, 0xc9, 0xfe, 0xc8, 0xfe, 0xd6, 0xfe, 0xd4, 0xfe, + 0xe7, 0xfe, 0xe6, 0xfe, 0x00, 0xff, 0xff, 0xfe, 0x21, 0xff, 0x21, 0xff, + 0x48, 0xff, 0x47, 0xff, 0x78, 0xff, 0x78, 0xff, 0xaf, 0xff, 0xaf, 0xff, + 0xef, 0xff, 0xed, 0xff, 0x34, 0x00, 0x35, 0x00, 0x82, 0x00, 0x80, 0x00, + 0xd2, 0x00, 0xd2, 0x00, 0x2b, 0x01, 0x29, 0x01, 0x86, 0x01, 0x84, 0x01, + 0xe2, 0x01, 0xe1, 0x01, 0x43, 0x02, 0x42, 0x02, 0xa2, 0x02, 0xa0, 0x02, + 0x00, 0x03, 0x00, 0x03, 0x5b, 0x03, 0x5a, 0x03, 0xb3, 0x03, 0xb2, 0x03, + 0x02, 0x04, 0x04, 0x04, 0x50, 0x04, 0x4d, 0x04, 0x8f, 0x04, 0x8f, 0x04, + 0xc9, 0x04, 0xc6, 0x04, 0xf6, 0x04, 0xf6, 0x04, 0x16, 0x05, 0x14, 0x05, + 0x2b, 0x05, 0x2a, 0x05, 0x32, 0x05, 0x30, 0x05, 0x2a, 0x05, 0x29, 0x05, + 0x13, 0x05, 0x14, 0x05, 0xf2, 0x04, 0xee, 0x04, 0xbb, 0x04, 0xbc, 0x04, + 0x7d, 0x04, 0x7a, 0x04, 0x2c, 0x04, 0x2d, 0x04, 0xd3, 0x03, 0xd3, 0x03, + 0x6c, 0x03, 0x68, 0x03, 0xf7, 0x02, 0xf8, 0x02, 0x7f, 0x02, 0x7b, 0x02, + 0xf9, 0x01, 0xf9, 0x01, 0x6f, 0x01, 0x6e, 0x01, 0xe3, 0x00, 0xe0, 0x00, + 0x51, 0x00, 0x51, 0x00, 0xc2, 0xff, 0xc0, 0xff, 0x32, 0xff, 0x33, 0xff, + 0xa8, 0xfe, 0xa5, 0xfe, 0x22, 0xfe, 0x22, 0xfe, 0xa5, 0xfd, 0xa5, 0xfd, + 0x30, 0xfd, 0x30, 0xfd, 0xc7, 0xfc, 0xc8, 0xfc, 0x6d, 0xfc, 0x6b, 0xfc, + 0x1d, 0xfc, 0x1d, 0xfc, 0xe0, 0xfb, 0xdf, 0xfb, 0xb0, 0xfb, 0xb0, 0xfb, + 0x93, 0xfb, 0x92, 0xfb, 0x87, 0xfb, 0x86, 0xfb, 0x8a, 0xfb, 0x8b, 0xfb, + 0xa2, 0xfb, 0xa2, 0xfb, 0xc9, 0xfb, 0xc9, 0xfb, 0x06, 0xfc, 0x03, 0xfc, + 0x4a, 0xfc, 0x4c, 0xfc, 0xa5, 0xfc, 0xa3, 0xfc, 0x09, 0xfd, 0x0a, 0xfd, + 0x7d, 0xfd, 0x7d, 0xfd, 0xfc, 0xfd, 0xfa, 0xfd, 0x83, 0xfe, 0x83, 0xfe, + 0x0e, 0xff, 0x0e, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0x39, 0x00, 0x3a, 0x00, + 0xd4, 0x00, 0xd3, 0x00, 0x6d, 0x01, 0x6e, 0x01, 0x03, 0x02, 0x01, 0x02, + 0x96, 0x02, 0x95, 0x02, 0x20, 0x03, 0x1f, 0x03, 0xa3, 0x03, 0xa3, 0x03, + 0x20, 0x04, 0x1e, 0x04, 0x8d, 0x04, 0x8d, 0x04, 0xf0, 0x04, 0xee, 0x04, + 0x46, 0x05, 0x44, 0x05, 0x8c, 0x05, 0x8c, 0x05, 0xc6, 0x05, 0xc4, 0x05, + 0xef, 0x05, 0xef, 0x05, 0x08, 0x06, 0x07, 0x06, 0x13, 0x06, 0x12, 0x06, + 0x0f, 0x06, 0x0f, 0x06, 0xfe, 0x05, 0xfd, 0x05, 0xdd, 0x05, 0xdc, 0x05, + 0xb1, 0x05, 0xb0, 0x05, 0x77, 0x05, 0x75, 0x05, 0x32, 0x05, 0x33, 0x05, + 0xe6, 0x04, 0xe3, 0x04, 0x8e, 0x04, 0x8f, 0x04, 0x31, 0x04, 0x31, 0x04, + 0xcd, 0x03, 0xca, 0x03, 0x64, 0x03, 0x66, 0x03, 0xfa, 0x02, 0xf9, 0x02, + 0x90, 0x02, 0x8f, 0x02, 0x22, 0x02, 0x22, 0x02, 0xb8, 0x01, 0xb6, 0x01, + 0x4d, 0x01, 0x4e, 0x01, 0xe8, 0x00, 0xe6, 0x00, 0x86, 0x00, 0x87, 0x00, + 0x29, 0x00, 0x29, 0x00, 0xd5, 0xff, 0xd4, 0xff, 0x82, 0xff, 0x82, 0xff, + 0x37, 0xff, 0x37, 0xff, 0xf7, 0xfe, 0xf3, 0xfe, 0xb3, 0xfe, 0xb5, 0xfe, + 0x80, 0xfe, 0x7d, 0xfe, 0x4d, 0xfe, 0x4f, 0xfe, 0x23, 0xfe, 0x1f, 0xfe, + 0xfb, 0xfd, 0xfc, 0xfd, 0xd7, 0xfd, 0xd6, 0xfd, 0xbb, 0xfd, 0xba, 0xfd, + 0x9e, 0xfd, 0x9f, 0xfd, 0x87, 0xfd, 0x84, 0xfd, 0x71, 0xfd, 0x72, 0xfd, + 0x5b, 0xfd, 0x59, 0xfd, 0x47, 0xfd, 0x47, 0xfd, 0x33, 0xfd, 0x31, 0xfd, + 0x1d, 0xfd, 0x1d, 0xfd, 0x0b, 0xfd, 0x0a, 0xfd, 0xf1, 0xfc, 0xf2, 0xfc, + 0xdb, 0xfc, 0xdb, 0xfc, 0xc3, 0xfc, 0xc2, 0xfc, 0xa7, 0xfc, 0xa6, 0xfc, + 0x8e, 0xfc, 0x8d, 0xfc, 0x71, 0xfc, 0x70, 0xfc, 0x55, 0xfc, 0x55, 0xfc, + 0x3a, 0xfc, 0x39, 0xfc, 0x1f, 0xfc, 0x1e, 0xfc, 0x07, 0xfc, 0x07, 0xfc, + 0xee, 0xfb, 0xec, 0xfb, 0xda, 0xfb, 0xda, 0xfb, 0xc7, 0xfb, 0xc7, 0xfb, + 0xbe, 0xfb, 0xbb, 0xfb, 0xb6, 0xfb, 0xb7, 0xfb, 0xb5, 0xfb, 0xb2, 0xfb, + 0xbc, 0xfb, 0xbc, 0xfb, 0xca, 0xfb, 0xc8, 0xfb, 0xdf, 0xfb, 0xde, 0xfb, + 0x01, 0xfc, 0xff, 0xfb, 0x24, 0xfc, 0x24, 0xfc, 0x59, 0xfc, 0x58, 0xfc, + 0x8f, 0xfc, 0x8e, 0xfc, 0xd4, 0xfc, 0xd4, 0xfc, 0x20, 0xfd, 0x1e, 0xfd, + 0x71, 0xfd, 0x6f, 0xfd, 0xce, 0xfd, 0xce, 0xfd, 0x2e, 0xfe, 0x2c, 0xfe, + 0x98, 0xfe, 0x97, 0xfe, 0x01, 0xff, 0x01, 0xff, 0x74, 0xff, 0x72, 0xff, + 0xe6, 0xff, 0xe5, 0xff, 0x59, 0x00, 0x58, 0x00, 0xcb, 0x00, 0xca, 0x00, + 0x3a, 0x01, 0x38, 0x01, 0xa6, 0x01, 0xa5, 0x01, 0x0b, 0x02, 0x0a, 0x02, + 0x6a, 0x02, 0x69, 0x02, 0xbe, 0x02, 0xbe, 0x02, 0x0f, 0x03, 0x0b, 0x03, + 0x4d, 0x03, 0x4d, 0x03, 0x84, 0x03, 0x83, 0x03, 0xa9, 0x03, 0xa8, 0x03, + 0xc6, 0x03, 0xc5, 0x03, 0xd0, 0x03, 0xcf, 0x03, 0xce, 0x03, 0xcd, 0x03, + 0xb9, 0x03, 0xbb, 0x03, 0x9a, 0x03, 0x98, 0x03, 0x69, 0x03, 0x6b, 0x03, + 0x2b, 0x03, 0x29, 0x03, 0xe0, 0x02, 0xe0, 0x02, 0x87, 0x02, 0x85, 0x02, + 0x22, 0x02, 0x23, 0x02, 0xb4, 0x01, 0xb2, 0x01, 0x3a, 0x01, 0x39, 0x01, + 0xbd, 0x00, 0xbb, 0x00, 0x35, 0x00, 0x35, 0x00, 0xad, 0xff, 0xac, 0xff, + 0x21, 0xff, 0x20, 0xff, 0x97, 0xfe, 0x96, 0xfe, 0x0c, 0xfe, 0x0c, 0xfe, + 0x88, 0xfd, 0x89, 0xfd, 0x0b, 0xfd, 0x08, 0xfd, 0x91, 0xfc, 0x94, 0xfc, + 0x28, 0xfc, 0x25, 0xfc, 0xc2, 0xfb, 0xc3, 0xfb, 0x70, 0xfb, 0x6e, 0xfb, + 0x28, 0xfb, 0x26, 0xfb, 0xee, 0xfa, 0xec, 0xfa, 0xc5, 0xfa, 0xc5, 0xfa, + 0xad, 0xfa, 0xab, 0xfa, 0xa5, 0xfa, 0xa4, 0xfa, 0xaf, 0xfa, 0xae, 0xfa, + 0xc7, 0xfa, 0xc5, 0xfa, 0xf6, 0xfa, 0xf5, 0xfa, 0x2f, 0xfb, 0x2e, 0xfb, + 0x7b, 0xfb, 0x7a, 0xfb, 0xd4, 0xfb, 0xd1, 0xfb, 0x39, 0xfc, 0x38, 0xfc, + 0xac, 0xfc, 0xab, 0xfc, 0x28, 0xfd, 0x25, 0xfd, 0xaa, 0xfd, 0xaa, 0xfd, + 0x36, 0xfe, 0x34, 0xfe, 0xc6, 0xfe, 0xc5, 0xfe, 0x59, 0xff, 0x58, 0xff, + 0xec, 0xff, 0xea, 0xff, 0x80, 0x00, 0x7e, 0x00, 0x0e, 0x01, 0x0d, 0x01, + 0x9a, 0x01, 0x99, 0x01, 0x20, 0x02, 0x1d, 0x02, 0x9c, 0x02, 0x9a, 0x02, + 0x11, 0x03, 0x0f, 0x03, 0x7a, 0x03, 0x77, 0x03, 0xd9, 0x03, 0xd8, 0x03, + 0x2a, 0x04, 0x28, 0x04, 0x71, 0x04, 0x6f, 0x04, 0xa6, 0x04, 0xa5, 0x04, + 0xd3, 0x04, 0xd1, 0x04, 0xf0, 0x04, 0xef, 0x04, 0xff, 0x04, 0xfd, 0x04, + 0x03, 0x05, 0x01, 0x05, 0xf7, 0x04, 0xf6, 0x04, 0xe2, 0x04, 0xe1, 0x04, + 0xc2, 0x04, 0xc0, 0x04, 0x95, 0x04, 0x94, 0x04, 0x62, 0x04, 0x62, 0x04, + 0x26, 0x04, 0x24, 0x04, 0xe4, 0x03, 0xe4, 0x03, 0x9d, 0x03, 0x9b, 0x03, + 0x53, 0x03, 0x52, 0x03, 0x02, 0x03, 0x02, 0x03, 0xb7, 0x02, 0xb5, 0x02, + 0x65, 0x02, 0x67, 0x02, 0x1a, 0x02, 0x16, 0x02, 0xce, 0x01, 0xcd, 0x01, + 0x85, 0x01, 0x85, 0x01, 0x43, 0x01, 0x41, 0x01, 0x00, 0x01, 0x00, 0x01, + 0xc9, 0x00, 0xc7, 0x00, 0x94, 0x00, 0x93, 0x00, 0x65, 0x00, 0x64, 0x00, + 0x3e, 0x00, 0x3e, 0x00, 0x1b, 0x00, 0x19, 0x00, 0x02, 0x00, 0x02, 0x00, + 0xe9, 0xff, 0xe7, 0xff, 0xda, 0xff, 0xda, 0xff, 0xcc, 0xff, 0xcd, 0xff, + 0xc7, 0xff, 0xc3, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xbe, 0xff, + 0xc5, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xcc, 0xff, 0xcb, 0xff, + 0xd2, 0xff, 0xd1, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd9, 0xff, 0xd8, 0xff, + 0xd7, 0xff, 0xd8, 0xff, 0xdb, 0xff, 0xd9, 0xff, 0xd5, 0xff, 0xd4, 0xff, + 0xd2, 0xff, 0xd3, 0xff, 0xca, 0xff, 0xc9, 0xff, 0xc1, 0xff, 0xc1, 0xff, + 0xb5, 0xff, 0xb5, 0xff, 0xa7, 0xff, 0xa6, 0xff, 0x97, 0xff, 0x98, 0xff, + 0x87, 0xff, 0x87, 0xff, 0x78, 0xff, 0x76, 0xff, 0x67, 0xff, 0x65, 0xff, + 0x54, 0xff, 0x54, 0xff, 0x48, 0xff, 0x46, 0xff, 0x39, 0xff, 0x3a, 0xff, + 0x33, 0xff, 0x31, 0xff, 0x2a, 0xff, 0x2a, 0xff, 0x2a, 0xff, 0x29, 0xff, + 0x2c, 0xff, 0x2c, 0xff, 0x37, 0xff, 0x34, 0xff, 0x44, 0xff, 0x45, 0xff, + 0x5a, 0xff, 0x57, 0xff, 0x76, 0xff, 0x75, 0xff, 0x98, 0xff, 0x99, 0xff, + 0xc3, 0xff, 0xc1, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0x2a, 0x00, 0x28, 0x00, + 0x65, 0x00, 0x67, 0x00, 0xaa, 0x00, 0xa7, 0x00, 0xef, 0x00, 0xee, 0x00, + 0x3a, 0x01, 0x38, 0x01, 0x85, 0x01, 0x85, 0x01, 0xd3, 0x01, 0xd4, 0x01, + 0x22, 0x02, 0x21, 0x02, 0x6f, 0x02, 0x6d, 0x02, 0xb9, 0x02, 0xba, 0x02, + 0x01, 0x03, 0xff, 0x02, 0x3f, 0x03, 0x3f, 0x03, 0x7a, 0x03, 0x7a, 0x03, + 0xac, 0x03, 0xaa, 0x03, 0xd4, 0x03, 0xd4, 0x03, 0xf2, 0x03, 0xf0, 0x03, + 0x02, 0x04, 0x01, 0x04, 0x08, 0x04, 0x08, 0x04, 0x00, 0x04, 0xff, 0x03, + 0xe9, 0x03, 0xe9, 0x03, 0xc5, 0x03, 0xc4, 0x03, 0x91, 0x03, 0x91, 0x03, + 0x50, 0x03, 0x4e, 0x03, 0xff, 0x02, 0x00, 0x03, 0xa2, 0x02, 0xa1, 0x02, + 0x38, 0x02, 0x38, 0x02, 0xc3, 0x01, 0xc1, 0x01, 0x41, 0x01, 0x40, 0x01, + 0xb5, 0x00, 0xb5, 0x00, 0x23, 0x00, 0x20, 0x00, 0x89, 0xff, 0x8a, 0xff, + 0xec, 0xfe, 0xec, 0xfe, 0x4e, 0xfe, 0x4d, 0xfe, 0xab, 0xfd, 0xaa, 0xfd, + 0x0a, 0xfd, 0x0c, 0xfd, 0x6f, 0xfc, 0x6d, 0xfc, 0xd8, 0xfb, 0xd7, 0xfb, + 0x48, 0xfb, 0x48, 0xfb, 0xc2, 0xfa, 0xc1, 0xfa, 0x4a, 0xfa, 0x48, 0xfa, + 0xd7, 0xf9, 0xd8, 0xf9, 0x7a, 0xf9, 0x79, 0xf9, 0x26, 0xf9, 0x24, 0xf9, + 0xe5, 0xf8, 0xe4, 0xf8, 0xb7, 0xf8, 0xb6, 0xf8, 0x96, 0xf8, 0x96, 0xf8, + 0x8e, 0xf8, 0x8d, 0xf8, 0x93, 0xf8, 0x92, 0xf8, 0xab, 0xf8, 0xab, 0xf8, + 0xd8, 0xf8, 0xd6, 0xf8, 0x10, 0xf9, 0x13, 0xf9, 0x63, 0xf9, 0x5f, 0xf9, + 0xba, 0xf9, 0xb9, 0xf9, 0x28, 0xfa, 0x27, 0xfa, 0xa0, 0xfa, 0x9e, 0xfa, + 0x20, 0xfb, 0x22, 0xfb, 0xb4, 0xfb, 0xb0, 0xfb, 0x41, 0xfc, 0x43, 0xfc, + 0xe2, 0xfc, 0xe0, 0xfc, 0x7e, 0xfd, 0x7b, 0xfd, 0x21, 0xfe, 0x21, 0xfe, + 0xc2, 0xfe, 0xc1, 0xfe, 0x61, 0xff, 0x5f, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0x93, 0x00, 0x91, 0x00, 0x22, 0x01, 0x22, 0x01, 0xa6, 0x01, 0xa5, 0x01, + 0x21, 0x02, 0x21, 0x02, 0x90, 0x02, 0x8f, 0x02, 0xf4, 0x02, 0xf4, 0x02, + 0x46, 0x03, 0x47, 0x03, 0x91, 0x03, 0x90, 0x03, 0xc8, 0x03, 0xc8, 0x03, + 0xf4, 0x03, 0xf3, 0x03, 0x0e, 0x04, 0x0d, 0x04, 0x1c, 0x04, 0x1d, 0x04, + 0x1e, 0x04, 0x1d, 0x04, 0x12, 0x04, 0x12, 0x04, 0xfb, 0x03, 0xf9, 0x03, + 0xd6, 0x03, 0xd5, 0x03, 0xa9, 0x03, 0xa9, 0x03, 0x73, 0x03, 0x72, 0x03, + 0x35, 0x03, 0x33, 0x03, 0xf1, 0x02, 0xf2, 0x02, 0xa9, 0x02, 0xa6, 0x02, + 0x5a, 0x02, 0x5b, 0x02, 0x0d, 0x02, 0x0b, 0x02, 0xbd, 0x01, 0xbc, 0x01, + 0x6d, 0x01, 0x6c, 0x01, 0x22, 0x01, 0x1f, 0x01, 0xd5, 0x00, 0xd3, 0x00, + 0x8b, 0x00, 0x8c, 0x00, 0x49, 0x00, 0x46, 0x00, 0x0a, 0x00, 0x08, 0x00, + 0xcf, 0xff, 0xcf, 0xff, 0x9c, 0xff, 0x9a, 0xff, 0x6f, 0xff, 0x6f, 0xff, + 0x48, 0xff, 0x48, 0xff, 0x27, 0xff, 0x25, 0xff, 0x0a, 0xff, 0x0a, 0xff, + 0xf5, 0xfe, 0xf4, 0xfe, 0xe4, 0xfe, 0xe2, 0xfe, 0xd7, 0xfe, 0xd6, 0xfe, + 0xd0, 0xfe, 0xcf, 0xfe, 0xca, 0xfe, 0xc8, 0xfe, 0xc8, 0xfe, 0xc8, 0xfe, + 0xc9, 0xfe, 0xc7, 0xfe, 0xc9, 0xfe, 0xc9, 0xfe, 0xce, 0xfe, 0xcc, 0xfe, + 0xcc, 0xfe, 0xca, 0xfe, 0xd0, 0xfe, 0xcf, 0xfe, 0xd0, 0xfe, 0xcf, 0xfe, + 0xce, 0xfe, 0xcd, 0xfe, 0xcd, 0xfe, 0xcc, 0xfe, 0xc6, 0xfe, 0xc6, 0xfe, + 0xc3, 0xfe, 0xc2, 0xfe, 0xbb, 0xfe, 0xbb, 0xfe, 0xb1, 0xfe, 0xb1, 0xfe, + 0xaa, 0xfe, 0xaa, 0xfe, 0x9d, 0xfe, 0x9d, 0xfe, 0x94, 0xfe, 0x93, 0xfe, + 0x8b, 0xfe, 0x8c, 0xfe, 0x81, 0xfe, 0x7f, 0xfe, 0x7b, 0xfe, 0x7c, 0xfe, + 0x7a, 0xfe, 0x77, 0xfe, 0x76, 0xfe, 0x77, 0xfe, 0x7d, 0xfe, 0x7c, 0xfe, + 0x84, 0xfe, 0x84, 0xfe, 0x94, 0xfe, 0x94, 0xfe, 0xa9, 0xfe, 0xa8, 0xfe, + 0xc4, 0xfe, 0xc5, 0xfe, 0xea, 0xfe, 0xe9, 0xfe, 0x15, 0xff, 0x13, 0xff, + 0x47, 0xff, 0x48, 0xff, 0x83, 0xff, 0x82, 0xff, 0xc3, 0xff, 0xc4, 0xff, + 0x10, 0x00, 0x12, 0x00, 0x61, 0x00, 0x61, 0x00, 0xbb, 0x00, 0xba, 0x00, + 0x17, 0x01, 0x19, 0x01, 0x7f, 0x01, 0x7d, 0x01, 0xe3, 0x01, 0xe4, 0x01, + 0x50, 0x02, 0x51, 0x02, 0xbb, 0x02, 0xb9, 0x02, 0x29, 0x03, 0x29, 0x03, + 0x93, 0x03, 0x92, 0x03, 0xf9, 0x03, 0xfb, 0x03, 0x5f, 0x04, 0x5f, 0x04, + 0xbc, 0x04, 0xba, 0x04, 0x13, 0x05, 0x15, 0x05, 0x60, 0x05, 0x60, 0x05, + 0xa3, 0x05, 0xa5, 0x05, 0xdd, 0x05, 0xdc, 0x05, 0x07, 0x06, 0x09, 0x06, + 0x26, 0x06, 0x26, 0x06, 0x36, 0x06, 0x37, 0x06, 0x38, 0x06, 0x37, 0x06, + 0x2a, 0x06, 0x2a, 0x06, 0x0c, 0x06, 0x0c, 0x06, 0xde, 0x05, 0xde, 0x05, + 0xa2, 0x05, 0xa1, 0x05, 0x53, 0x05, 0x54, 0x05, 0xf9, 0x04, 0xf8, 0x04, + 0x92, 0x04, 0x92, 0x04, 0x1a, 0x04, 0x1b, 0x04, 0x9d, 0x03, 0x9a, 0x03, + 0x11, 0x03, 0x11, 0x03, 0x7f, 0x02, 0x7e, 0x02, 0xe7, 0x01, 0xe6, 0x01, + 0x49, 0x01, 0x48, 0x01, 0xa9, 0x00, 0xa8, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x68, 0xff, 0x67, 0xff, 0xcc, 0xfe, 0xcb, 0xfe, 0x34, 0xfe, 0x34, 0xfe, + 0xa8, 0xfd, 0xa6, 0xfd, 0x1f, 0xfd, 0x1f, 0xfd, 0xa5, 0xfc, 0xa6, 0xfc, + 0x38, 0xfc, 0x36, 0xfc, 0xd5, 0xfb, 0xd6, 0xfb, 0x87, 0xfb, 0x84, 0xfb, + 0x42, 0xfb, 0x41, 0xfb, 0x12, 0xfb, 0x10, 0xfb, 0xf0, 0xfa, 0xef, 0xfa, + 0xe0, 0xfa, 0xe0, 0xfa, 0xe1, 0xfa, 0xe0, 0xfa, 0xf2, 0xfa, 0xf3, 0xfa, + 0x14, 0xfb, 0x13, 0xfb, 0x47, 0xfb, 0x47, 0xfb, 0x87, 0xfb, 0x86, 0xfb, + 0xd5, 0xfb, 0xd3, 0xfb, 0x2c, 0xfc, 0x2c, 0xfc, 0x90, 0xfc, 0x90, 0xfc, + 0xfe, 0xfc, 0xfd, 0xfc, 0x70, 0xfd, 0x71, 0xfd, 0xed, 0xfd, 0xea, 0xfd, + 0x65, 0xfe, 0x67, 0xfe, 0xe8, 0xfe, 0xe5, 0xfe, 0x62, 0xff, 0x64, 0xff, + 0xe0, 0xff, 0xde, 0xff, 0x58, 0x00, 0x57, 0x00, 0xca, 0x00, 0xc8, 0x00, + 0x36, 0x01, 0x35, 0x01, 0x97, 0x01, 0x96, 0x01, 0xf4, 0x01, 0xf1, 0x01, + 0x3e, 0x02, 0x3f, 0x02, 0x83, 0x02, 0x81, 0x02, 0xb8, 0x02, 0xb8, 0x02, + 0xe1, 0x02, 0xdf, 0x02, 0xfd, 0x02, 0xfe, 0x02, 0x0c, 0x03, 0x0a, 0x03, + 0x0d, 0x03, 0x0e, 0x03, 0x03, 0x03, 0x00, 0x03, 0xea, 0x02, 0xea, 0x02, + 0xc7, 0x02, 0xc8, 0x02, 0x9c, 0x02, 0x99, 0x02, 0x62, 0x02, 0x63, 0x02, + 0x22, 0x02, 0x22, 0x02, 0xdc, 0x01, 0xda, 0x01, 0x8d, 0x01, 0x8d, 0x01, + 0x3c, 0x01, 0x39, 0x01, 0xe5, 0x00, 0xe5, 0x00, 0x8c, 0x00, 0x8b, 0x00, + 0x36, 0x00, 0x35, 0x00, 0xdc, 0xff, 0xda, 0xff, 0x86, 0xff, 0x87, 0xff, + 0x31, 0xff, 0x2e, 0xff, 0xdf, 0xfe, 0xdf, 0xfe, 0x96, 0xfe, 0x95, 0xfe, + 0x4d, 0xfe, 0x4b, 0xfe, 0x0d, 0xfe, 0x0d, 0xfe, 0xd3, 0xfd, 0xd1, 0xfd, + 0x9e, 0xfd, 0x9e, 0xfd, 0x73, 0xfd, 0x70, 0xfd, 0x4c, 0xfd, 0x4c, 0xfd, + 0x2e, 0xfd, 0x2d, 0xfd, 0x14, 0xfd, 0x14, 0xfd, 0x01, 0xfd, 0x00, 0xfd, + 0xf5, 0xfc, 0xf4, 0xfc, 0xeb, 0xfc, 0xeb, 0xfc, 0xea, 0xfc, 0xe9, 0xfc, + 0xea, 0xfc, 0xe7, 0xfc, 0xec, 0xfc, 0xee, 0xfc, 0xf5, 0xfc, 0xf2, 0xfc, + 0xfa, 0xfc, 0xfb, 0xfc, 0x06, 0xfd, 0x04, 0xfd, 0x0f, 0xfd, 0x0f, 0xfd, + 0x17, 0xfd, 0x17, 0xfd, 0x21, 0xfd, 0x20, 0xfd, 0x29, 0xfd, 0x26, 0xfd, + 0x30, 0xfd, 0x31, 0xfd, 0x36, 0xfd, 0x34, 0xfd, 0x3b, 0xfd, 0x3a, 0xfd, + 0x3d, 0xfd, 0x3d, 0xfd, 0x41, 0xfd, 0x3f, 0xfd, 0x3f, 0xfd, 0x3f, 0xfd, + 0x41, 0xfd, 0x3f, 0xfd, 0x41, 0xfd, 0x3f, 0xfd, 0x40, 0xfd, 0x40, 0xfd, + 0x44, 0xfd, 0x42, 0xfd, 0x46, 0xfd, 0x45, 0xfd, 0x4b, 0xfd, 0x4a, 0xfd, + 0x55, 0xfd, 0x54, 0xfd, 0x5f, 0xfd, 0x5e, 0xfd, 0x71, 0xfd, 0x71, 0xfd, + 0x86, 0xfd, 0x85, 0xfd, 0xa0, 0xfd, 0xa0, 0xfd, 0xc4, 0xfd, 0xc5, 0xfd, + 0xea, 0xfd, 0xe9, 0xfd, 0x1c, 0xfe, 0x1b, 0xfe, 0x54, 0xfe, 0x53, 0xfe, + 0x8e, 0xfe, 0x8e, 0xfe, 0xd7, 0xfe, 0xd6, 0xfe, 0x22, 0xff, 0x21, 0xff, + 0x75, 0xff, 0x76, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0x2f, 0x00, 0x2e, 0x00, + 0x92, 0x00, 0x91, 0x00, 0xf9, 0x00, 0xf9, 0x00, 0x61, 0x01, 0x61, 0x01, + 0xcb, 0x01, 0xcb, 0x01, 0x36, 0x02, 0x39, 0x02, 0xa2, 0x02, 0xa1, 0x02, + 0x0a, 0x03, 0x0a, 0x03, 0x70, 0x03, 0x6e, 0x03, 0xcb, 0x03, 0xcb, 0x03, + 0x25, 0x04, 0x24, 0x04, 0x6f, 0x04, 0x70, 0x04, 0xb3, 0x04, 0xb3, 0x04, + 0xec, 0x04, 0xec, 0x04, 0x14, 0x05, 0x14, 0x05, 0x33, 0x05, 0x34, 0x05, + 0x41, 0x05, 0x40, 0x05, 0x41, 0x05, 0x40, 0x05, 0x31, 0x05, 0x32, 0x05, + 0x12, 0x05, 0x11, 0x05, 0xe3, 0x04, 0xe2, 0x04, 0xa5, 0x04, 0xa6, 0x04, + 0x5a, 0x04, 0x59, 0x04, 0x00, 0x04, 0x00, 0x04, 0x9a, 0x03, 0x9b, 0x03, + 0x29, 0x03, 0x28, 0x03, 0xb0, 0x02, 0xae, 0x02, 0x2a, 0x02, 0x2a, 0x02, + 0xa2, 0x01, 0xa1, 0x01, 0x15, 0x01, 0x13, 0x01, 0x80, 0x00, 0x82, 0x00, + 0xf0, 0xff, 0xef, 0xff, 0x5c, 0xff, 0x5c, 0xff, 0xcf, 0xfe, 0xce, 0xfe, + 0x46, 0xfe, 0x47, 0xfe, 0xc5, 0xfd, 0xc4, 0xfd, 0x4c, 0xfd, 0x4c, 0xfd, + 0xde, 0xfc, 0xde, 0xfc, 0x7b, 0xfc, 0x7b, 0xfc, 0x27, 0xfc, 0x28, 0xfc, + 0xdf, 0xfb, 0xdf, 0xfb, 0xaa, 0xfb, 0xaa, 0xfb, 0x83, 0xfb, 0x83, 0xfb, + 0x6d, 0xfb, 0x6d, 0xfb, 0x68, 0xfb, 0x68, 0xfb, 0x73, 0xfb, 0x74, 0xfb, + 0x91, 0xfb, 0x8f, 0xfb, 0xbd, 0xfb, 0xbd, 0xfb, 0xfb, 0xfb, 0xfa, 0xfb, + 0x46, 0xfc, 0x46, 0xfc, 0x9e, 0xfc, 0x9d, 0xfc, 0x06, 0xfd, 0x04, 0xfd, + 0x74, 0xfd, 0x76, 0xfd, 0xef, 0xfd, 0xef, 0xfd, 0x72, 0xfe, 0x71, 0xfe, + 0xfa, 0xfe, 0xfb, 0xfe, 0x89, 0xff, 0x87, 0xff, 0x16, 0x00, 0x17, 0x00, + 0xa9, 0x00, 0xa6, 0x00, 0x35, 0x01, 0x35, 0x01, 0xc5, 0x01, 0xc4, 0x01, + 0x4d, 0x02, 0x4b, 0x02, 0xd1, 0x02, 0xd1, 0x02, 0x4c, 0x03, 0x4c, 0x03, + 0xc2, 0x03, 0xc1, 0x03, 0x2a, 0x04, 0x2b, 0x04, 0x8b, 0x04, 0x8a, 0x04, + 0xe1, 0x04, 0xe1, 0x04, 0x28, 0x05, 0x28, 0x05, 0x67, 0x05, 0x65, 0x05, + 0x97, 0x05, 0x95, 0x05, 0xb7, 0x05, 0xb7, 0x05, 0xd0, 0x05, 0xce, 0x05, + 0xd8, 0x05, 0xd8, 0x05, 0xd6, 0x05, 0xd8, 0x05, 0xcb, 0x05, 0xc6, 0x05, + 0xae, 0x05, 0xb1, 0x05, 0x8f, 0x05, 0x8c, 0x05, 0x5f, 0x05, 0x60, 0x05, + 0x2d, 0x05, 0x2d, 0x05, 0xef, 0x04, 0xef, 0x04, 0xae, 0x04, 0xad, 0x04, + 0x67, 0x04, 0x65, 0x04, 0x16, 0x04, 0x17, 0x04, 0xcb, 0x03, 0xc9, 0x03, + 0x74, 0x03, 0x74, 0x03, 0x21, 0x03, 0x21, 0x03, 0xcb, 0x02, 0xca, 0x02, + 0x76, 0x02, 0x76, 0x02, 0x22, 0x02, 0x21, 0x02, 0xcc, 0x01, 0xcc, 0x01, + 0x7c, 0x01, 0x7d, 0x01, 0x2e, 0x01, 0x2c, 0x01, 0xdf, 0x00, 0xde, 0x00, + 0x96, 0x00, 0x95, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0xc8, 0xff, 0xc8, 0xff, 0x8a, 0xff, 0x89, 0xff, 0x4f, 0xff, 0x50, 0xff, + 0x13, 0xff, 0x11, 0xff, 0xdf, 0xfe, 0xdf, 0xfe, 0xa9, 0xfe, 0xa7, 0xfe, + 0x75, 0xfe, 0x76, 0xfe, 0x45, 0xfe, 0x43, 0xfe, 0x13, 0xfe, 0x15, 0xfe, + 0xe8, 0xfd, 0xe6, 0xfd, 0xb8, 0xfd, 0xba, 0xfd, 0x8c, 0xfd, 0x8a, 0xfd, + 0x63, 0xfd, 0x62, 0xfd, 0x38, 0xfd, 0x37, 0xfd, 0x10, 0xfd, 0x11, 0xfd, + 0xea, 0xfc, 0xe7, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, 0xa3, 0xfc, 0x9f, 0xfc, + 0x7f, 0xfc, 0x7f, 0xfc, 0x61, 0xfc, 0x61, 0xfc, 0x4a, 0xfc, 0x47, 0xfc, + 0x2e, 0xfc, 0x2f, 0xfc, 0x1e, 0xfc, 0x1c, 0xfc, 0x0e, 0xfc, 0x0e, 0xfc, + 0x06, 0xfc, 0x05, 0xfc, 0x03, 0xfc, 0x02, 0xfc, 0x04, 0xfc, 0x06, 0xfc, + 0x10, 0xfc, 0x0e, 0xfc, 0x20, 0xfc, 0x21, 0xfc, 0x37, 0xfc, 0x37, 0xfc, + 0x55, 0xfc, 0x54, 0xfc, 0x7d, 0xfc, 0x7d, 0xfc, 0xaa, 0xfc, 0xaa, 0xfc, + 0xde, 0xfc, 0xe0, 0xfc, 0x1d, 0xfd, 0x1a, 0xfd, 0x5e, 0xfd, 0x5f, 0xfd, + 0xa6, 0xfd, 0xa6, 0xfd, 0xf9, 0xfd, 0xf7, 0xfd, 0x4a, 0xfe, 0x4b, 0xfe, + 0xa6, 0xfe, 0xa4, 0xfe, 0x01, 0xff, 0x01, 0xff, 0x63, 0xff, 0x62, 0xff, + 0xc2, 0xff, 0xc3, 0xff, 0x25, 0x00, 0x23, 0x00, 0x86, 0x00, 0x85, 0x00, + 0xe3, 0x00, 0xe5, 0x00, 0x41, 0x01, 0x3f, 0x01, 0x96, 0x01, 0x97, 0x01, + 0xec, 0x01, 0xe9, 0x01, 0x32, 0x02, 0x34, 0x02, 0x78, 0x02, 0x78, 0x02, + 0xb1, 0x02, 0xb0, 0x02, 0xe1, 0x02, 0xe2, 0x02, 0x08, 0x03, 0x07, 0x03, + 0x21, 0x03, 0x21, 0x03, 0x31, 0x03, 0x33, 0x03, 0x33, 0x03, 0x31, 0x03, + 0x29, 0x03, 0x2a, 0x03, 0x12, 0x03, 0x11, 0x03, 0xf0, 0x02, 0xf0, 0x02, + 0xc1, 0x02, 0xc0, 0x02, 0x86, 0x02, 0x88, 0x02, 0x41, 0x02, 0x40, 0x02, + 0xf1, 0x01, 0xf1, 0x01, 0x98, 0x01, 0x99, 0x01, 0x36, 0x01, 0x32, 0x01, + 0xcb, 0x00, 0xcc, 0x00, 0x5b, 0x00, 0x5a, 0x00, 0xe8, 0xff, 0xe6, 0xff, + 0x6e, 0xff, 0x70, 0xff, 0xf7, 0xfe, 0xf5, 0xfe, 0x7b, 0xfe, 0x7c, 0xfe, + 0x04, 0xfe, 0x03, 0xfe, 0x8e, 0xfd, 0x8b, 0xfd, 0x1a, 0xfd, 0x1d, 0xfd, + 0xb0, 0xfc, 0xad, 0xfc, 0x48, 0xfc, 0x47, 0xfc, 0xec, 0xfb, 0xed, 0xfb, + 0x98, 0xfb, 0x97, 0xfb, 0x4e, 0xfb, 0x4e, 0xfb, 0x11, 0xfb, 0x11, 0xfb, + 0xde, 0xfa, 0xde, 0xfa, 0xba, 0xfa, 0xba, 0xfa, 0xa2, 0xfa, 0xa2, 0xfa, + 0x98, 0xfa, 0x97, 0xfa, 0x9a, 0xfa, 0x9b, 0xfa, 0xad, 0xfa, 0xac, 0xfa, + 0xc9, 0xfa, 0xc9, 0xfa, 0xf6, 0xfa, 0xf5, 0xfa, 0x2d, 0xfb, 0x2d, 0xfb, + 0x70, 0xfb, 0x70, 0xfb, 0xbf, 0xfb, 0xbe, 0xfb, 0x15, 0xfc, 0x15, 0xfc, + 0x77, 0xfc, 0x75, 0xfc, 0xdf, 0xfc, 0xdf, 0xfc, 0x4c, 0xfd, 0x4c, 0xfd, + 0xc0, 0xfd, 0xbf, 0xfd, 0x36, 0xfe, 0x36, 0xfe, 0xaf, 0xfe, 0xae, 0xfe, + 0x29, 0xff, 0x27, 0xff, 0xa0, 0xff, 0xa1, 0xff, 0x1b, 0x00, 0x1a, 0x00, + 0x8f, 0x00, 0x8f, 0x00, 0x01, 0x01, 0xff, 0x00, 0x6d, 0x01, 0x6c, 0x01, + 0xd2, 0x01, 0xd2, 0x01, 0x33, 0x02, 0x33, 0x02, 0x89, 0x02, 0x88, 0x02, + 0xda, 0x02, 0xda, 0x02, 0x21, 0x03, 0x20, 0x03, 0x60, 0x03, 0x5f, 0x03, + 0x95, 0x03, 0x95, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xe2, 0x03, 0xe3, 0x03, + 0xfc, 0x03, 0xfb, 0x03, 0x0c, 0x04, 0x0d, 0x04, 0x14, 0x04, 0x15, 0x04, + 0x15, 0x04, 0x14, 0x04, 0x0b, 0x04, 0x0c, 0x04, 0xfe, 0x03, 0xfd, 0x03, + 0xe5, 0x03, 0xe6, 0x03, 0xcb, 0x03, 0xca, 0x03, 0xa9, 0x03, 0xa8, 0x03, + 0x80, 0x03, 0x81, 0x03, 0x58, 0x03, 0x59, 0x03, 0x28, 0x03, 0x27, 0x03, + 0xf8, 0x02, 0xf9, 0x02, 0xc4, 0x02, 0xc5, 0x02, 0x90, 0x02, 0x8f, 0x02, + 0x5a, 0x02, 0x5d, 0x02, 0x24, 0x02, 0x24, 0x02, 0xef, 0x01, 0xef, 0x01, + 0xb7, 0x01, 0xb8, 0x01, 0x85, 0x01, 0x83, 0x01, 0x4e, 0x01, 0x50, 0x01, + 0x1c, 0x01, 0x1c, 0x01, 0xec, 0x00, 0xec, 0x00, 0xb9, 0x00, 0xba, 0x00, + 0x8f, 0x00, 0x8d, 0x00, 0x5f, 0x00, 0x62, 0x00, 0x36, 0x00, 0x35, 0x00, + 0x10, 0x00, 0x11, 0x00, 0xe4, 0xff, 0xe4, 0xff, 0xc2, 0xff, 0xc4, 0xff, + 0x9f, 0xff, 0x9d, 0xff, 0x7d, 0xff, 0x7e, 0xff, 0x60, 0xff, 0x5f, 0xff, + 0x3f, 0xff, 0x3f, 0xff, 0x25, 0xff, 0x25, 0xff, 0x0a, 0xff, 0x0a, 0xff, + 0xf2, 0xfe, 0xf3, 0xfe, 0xdd, 0xfe, 0xdc, 0xfe, 0xcb, 0xfe, 0xc9, 0xfe, + 0xb8, 0xfe, 0xba, 0xfe, 0xab, 0xfe, 0xaa, 0xfe, 0xa0, 0xfe, 0xa1, 0xfe, + 0x98, 0xfe, 0x98, 0xfe, 0x95, 0xfe, 0x93, 0xfe, 0x93, 0xfe, 0x93, 0xfe, + 0x96, 0xfe, 0x97, 0xfe, 0x9f, 0xfe, 0x9d, 0xfe, 0xaa, 0xfe, 0xac, 0xfe, + 0xbc, 0xfe, 0xbc, 0xfe, 0xd2, 0xfe, 0xd2, 0xfe, 0xec, 0xfe, 0xec, 0xfe, + 0x0f, 0xff, 0x0e, 0xff, 0x34, 0xff, 0x33, 0xff, 0x5d, 0xff, 0x5e, 0xff, + 0x90, 0xff, 0x8c, 0xff, 0xc1, 0xff, 0xc4, 0xff, 0xfe, 0xff, 0xfc, 0xff, + 0x3b, 0x00, 0x3b, 0x00, 0x7e, 0x00, 0x7d, 0x00, 0xc4, 0x00, 0xc6, 0x00, + 0x0d, 0x01, 0x0d, 0x01, 0x5c, 0x01, 0x5b, 0x01, 0xa6, 0x01, 0xa8, 0x01, + 0xf8, 0x01, 0xf7, 0x01, 0x46, 0x02, 0x48, 0x02, 0x97, 0x02, 0x95, 0x02, + 0xe1, 0x02, 0xe2, 0x02, 0x2f, 0x03, 0x2f, 0x03, 0x74, 0x03, 0x73, 0x03, + 0xb8, 0x03, 0xb7, 0x03, 0xf4, 0x03, 0xf4, 0x03, 0x2a, 0x04, 0x2b, 0x04, + 0x5d, 0x04, 0x5c, 0x04, 0x7e, 0x04, 0x7f, 0x04, 0x9f, 0x04, 0x9d, 0x04, + 0xae, 0x04, 0xaf, 0x04, 0xba, 0x04, 0xb8, 0x04, 0xb4, 0x04, 0xb7, 0x04, + 0xa8, 0x04, 0xa7, 0x04, 0x8e, 0x04, 0x8f, 0x04, 0x67, 0x04, 0x66, 0x04, + 0x37, 0x04, 0x38, 0x04, 0xf7, 0x03, 0xf8, 0x03, 0xaf, 0x03, 0xae, 0x03, + 0x5b, 0x03, 0x5b, 0x03, 0xf9, 0x02, 0xf9, 0x02, 0x94, 0x02, 0x93, 0x02, + 0x20, 0x02, 0x20, 0x02, 0xa8, 0x01, 0xa8, 0x01, 0x29, 0x01, 0x28, 0x01, + 0xa2, 0x00, 0xa3, 0x00, 0x18, 0x00, 0x17, 0x00, 0x8c, 0xff, 0x8d, 0xff, + 0xfd, 0xfe, 0xfc, 0xfe, 0x70, 0xfe, 0x70, 0xfe, 0xe3, 0xfd, 0xe3, 0xfd, + 0x5a, 0xfd, 0x5a, 0xfd, 0xd5, 0xfc, 0xd4, 0xfc, 0x53, 0xfc, 0x54, 0xfc, + 0xdd, 0xfb, 0xdd, 0xfb, 0x6d, 0xfb, 0x6d, 0xfb, 0x08, 0xfb, 0x07, 0xfb, + 0xac, 0xfa, 0xab, 0xfa, 0x5a, 0xfa, 0x5c, 0xfa, 0x19, 0xfa, 0x17, 0xfa, + 0xe1, 0xf9, 0xe3, 0xf9, 0xb9, 0xf9, 0xb7, 0xf9, 0x9c, 0xf9, 0x9d, 0xf9, + 0x8f, 0xf9, 0x8f, 0xf9, 0x92, 0xf9, 0x90, 0xf9, 0x9f, 0xf9, 0x9f, 0xf9, + 0xba, 0xf9, 0xba, 0xf9, 0xe4, 0xf9, 0xe4, 0xf9, 0x19, 0xfa, 0x18, 0xfa, + 0x5d, 0xfa, 0x5c, 0xfa, 0xa7, 0xfa, 0xa9, 0xfa, 0xff, 0xfa, 0xfe, 0xfa, + 0x5f, 0xfb, 0x5f, 0xfb, 0xc8, 0xfb, 0xc8, 0xfb, 0x36, 0xfc, 0x36, 0xfc, + 0xaa, 0xfc, 0xaa, 0xfc, 0x23, 0xfd, 0x22, 0xfd, 0x9d, 0xfd, 0x9e, 0xfd, + 0x1a, 0xfe, 0x19, 0xfe, 0x95, 0xfe, 0x96, 0xfe, 0x12, 0xff, 0x10, 0xff, + 0x88, 0xff, 0x88, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x6f, 0x00, 0x70, 0x00, + 0xdb, 0x00, 0xdb, 0x00, 0x40, 0x01, 0x40, 0x01, 0x9c, 0x01, 0x9c, 0x01, + 0xf3, 0x01, 0xf2, 0x01, 0x3e, 0x02, 0x3e, 0x02, 0x81, 0x02, 0x81, 0x02, + 0xba, 0x02, 0xbb, 0x02, 0xe9, 0x02, 0xe9, 0x02, 0x13, 0x03, 0x12, 0x03, + 0x2b, 0x03, 0x2c, 0x03, 0x3f, 0x03, 0x3f, 0x03, 0x46, 0x03, 0x48, 0x03, + 0x47, 0x03, 0x47, 0x03, 0x3f, 0x03, 0x3f, 0x03, 0x2d, 0x03, 0x2c, 0x03, + 0x16, 0x03, 0x16, 0x03, 0xf5, 0x02, 0xf5, 0x02, 0xd1, 0x02, 0xd0, 0x02, + 0xa6, 0x02, 0xa6, 0x02, 0x75, 0x02, 0x76, 0x02, 0x42, 0x02, 0x42, 0x02, + 0x06, 0x02, 0x08, 0x02, 0xcf, 0x01, 0xcd, 0x01, 0x8d, 0x01, 0x8f, 0x01, + 0x51, 0x01, 0x4f, 0x01, 0x0f, 0x01, 0x10, 0x01, 0xcf, 0x00, 0xcd, 0x00, + 0x8d, 0x00, 0x8e, 0x00, 0x4d, 0x00, 0x4c, 0x00, 0x0c, 0x00, 0x0e, 0x00, + 0xcf, 0xff, 0xcd, 0xff, 0x8f, 0xff, 0x91, 0xff, 0x58, 0xff, 0x56, 0xff, + 0x1b, 0xff, 0x1c, 0xff, 0xe6, 0xfe, 0xe7, 0xfe, 0xb0, 0xfe, 0xae, 0xfe, + 0x7d, 0xfe, 0x7e, 0xfe, 0x4c, 0xfe, 0x4d, 0xfe, 0x1e, 0xfe, 0x1d, 0xfe, + 0xf1, 0xfd, 0xf3, 0xfd, 0xc9, 0xfd, 0xc8, 0xfd, 0xa3, 0xfd, 0xa2, 0xfd, + 0x7d, 0xfd, 0x7f, 0xfd, 0x5c, 0xfd, 0x5a, 0xfd, 0x3e, 0xfd, 0x3e, 0xfd, + 0x22, 0xfd, 0x22, 0xfd, 0x0a, 0xfd, 0x09, 0xfd, 0xf6, 0xfc, 0xf6, 0xfc, + 0xe6, 0xfc, 0xe5, 0xfc, 0xd9, 0xfc, 0xd9, 0xfc, 0xd2, 0xfc, 0xd1, 0xfc, + 0xcc, 0xfc, 0xcc, 0xfc, 0xcd, 0xfc, 0xce, 0xfc, 0xd3, 0xfc, 0xd3, 0xfc, + 0xdf, 0xfc, 0xdf, 0xfc, 0xf1, 0xfc, 0xf1, 0xfc, 0x08, 0xfd, 0x08, 0xfd, + 0x26, 0xfd, 0x26, 0xfd, 0x4a, 0xfd, 0x49, 0xfd, 0x74, 0xfd, 0x75, 0xfd, + 0xa7, 0xfd, 0xa6, 0xfd, 0xde, 0xfd, 0xde, 0xfd, 0x1e, 0xfe, 0x1e, 0xfe, + 0x63, 0xfe, 0x63, 0xfe, 0xb0, 0xfe, 0xaf, 0xfe, 0x02, 0xff, 0x02, 0xff, + 0x5a, 0xff, 0x58, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0x18, 0x00, 0x19, 0x00, + 0x81, 0x00, 0x80, 0x00, 0xe8, 0x00, 0xe9, 0x00, 0x55, 0x01, 0x54, 0x01, + 0xc3, 0x01, 0xc3, 0x01, 0x30, 0x02, 0x30, 0x02, 0x9f, 0x02, 0xa0, 0x02, + 0x0a, 0x03, 0x09, 0x03, 0x75, 0x03, 0x76, 0x03, 0xdc, 0x03, 0xd9, 0x03, + 0x3c, 0x04, 0x3b, 0x04, 0x98, 0x04, 0x98, 0x04, 0xec, 0x04, 0xeb, 0x04, + 0x38, 0x05, 0x37, 0x05, 0x7d, 0x05, 0x7a, 0x05, 0xb4, 0x05, 0xb3, 0x05, + 0xe3, 0x05, 0xe3, 0x05, 0x06, 0x06, 0x04, 0x06, 0x1d, 0x06, 0x1d, 0x06, + 0x28, 0x06, 0x28, 0x06, 0x26, 0x06, 0x25, 0x06, 0x18, 0x06, 0x17, 0x06, + 0xfc, 0x05, 0xfd, 0x05, 0xd5, 0x05, 0xd2, 0x05, 0x9f, 0x05, 0xa1, 0x05, + 0x5e, 0x05, 0x5d, 0x05, 0x11, 0x05, 0x10, 0x05, 0xba, 0x04, 0xb9, 0x04, + 0x59, 0x04, 0x56, 0x04, 0xee, 0x03, 0xef, 0x03, 0x7a, 0x03, 0x79, 0x03, + 0x03, 0x03, 0x02, 0x03, 0x81, 0x02, 0x82, 0x02, 0x02, 0x02, 0xfe, 0x01, + 0x7a, 0x01, 0x7a, 0x01, 0xf3, 0x00, 0xf3, 0x00, 0x6e, 0x00, 0x6d, 0x00, + 0xe6, 0xff, 0xe5, 0xff, 0x69, 0xff, 0x66, 0xff, 0xe8, 0xfe, 0xe9, 0xfe, + 0x74, 0xfe, 0x72, 0xfe, 0x02, 0xfe, 0x03, 0xfe, 0x9d, 0xfd, 0x9b, 0xfd, + 0x40, 0xfd, 0x3f, 0xfd, 0xed, 0xfc, 0xec, 0xfc, 0xa5, 0xfc, 0xa4, 0xfc, + 0x6b, 0xfc, 0x6a, 0xfc, 0x3b, 0xfc, 0x3c, 0xfc, 0x1a, 0xfc, 0x19, 0xfc, + 0x05, 0xfc, 0x04, 0xfc, 0xfb, 0xfb, 0xfb, 0xfb, 0x03, 0xfc, 0x02, 0xfc, + 0x10, 0xfc, 0x10, 0xfc, 0x30, 0xfc, 0x30, 0xfc, 0x57, 0xfc, 0x56, 0xfc, + 0x8b, 0xfc, 0x8b, 0xfc, 0xc6, 0xfc, 0xc5, 0xfc, 0x0c, 0xfd, 0x0b, 0xfd, + 0x58, 0xfd, 0x59, 0xfd, 0xac, 0xfd, 0xab, 0xfd, 0x04, 0xfe, 0x06, 0xfe, + 0x61, 0xfe, 0x60, 0xfe, 0xc4, 0xfe, 0xc4, 0xfe, 0x22, 0xff, 0x22, 0xff, + 0x87, 0xff, 0x87, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0x44, 0x00, 0x45, 0x00, + 0xa4, 0x00, 0xa2, 0x00, 0xf8, 0x00, 0xfa, 0x00, 0x4d, 0x01, 0x4b, 0x01, + 0x97, 0x01, 0x99, 0x01, 0xdd, 0x01, 0xdd, 0x01, 0x1d, 0x02, 0x1c, 0x02, + 0x52, 0x02, 0x52, 0x02, 0x7f, 0x02, 0x80, 0x02, 0xa6, 0x02, 0xa6, 0x02, + 0xc1, 0x02, 0xc1, 0x02, 0xd6, 0x02, 0xd8, 0x02, 0xdf, 0x02, 0xdf, 0x02, + 0xe4, 0x02, 0xe4, 0x02, 0xdc, 0x02, 0xdd, 0x02, 0xd0, 0x02, 0xce, 0x02, + 0xb9, 0x02, 0xba, 0x02, 0x9d, 0x02, 0x9d, 0x02, 0x79, 0x02, 0x79, 0x02, + 0x50, 0x02, 0x50, 0x02, 0x21, 0x02, 0x1f, 0x02, 0xee, 0x01, 0xef, 0x01, + 0xb5, 0x01, 0xb5, 0x01, 0x7b, 0x01, 0x7b, 0x01, 0x3c, 0x01, 0x3b, 0x01, + 0xfa, 0x00, 0xfb, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0x74, 0x00, 0x76, 0x00, + 0x31, 0x00, 0x31, 0x00, 0xed, 0xff, 0xee, 0xff, 0xa9, 0xff, 0xa9, 0xff, + 0x67, 0xff, 0x66, 0xff, 0x23, 0xff, 0x25, 0xff, 0xe4, 0xfe, 0xe3, 0xfe, + 0xa3, 0xfe, 0xa4, 0xfe, 0x68, 0xfe, 0x67, 0xfe, 0x2d, 0xfe, 0x2d, 0xfe, + 0xf3, 0xfd, 0xf2, 0xfd, 0xbe, 0xfd, 0xbd, 0xfd, 0x88, 0xfd, 0x86, 0xfd, + 0x54, 0xfd, 0x55, 0xfd, 0x25, 0xfd, 0x25, 0xfd, 0xf7, 0xfc, 0xf5, 0xfc, + 0xcc, 0xfc, 0xce, 0xfc, 0xa4, 0xfc, 0xa2, 0xfc, 0x7d, 0xfc, 0x7e, 0xfc, + 0x59, 0xfc, 0x59, 0xfc, 0x3b, 0xfc, 0x3b, 0xfc, 0x1c, 0xfc, 0x1d, 0xfc, + 0x03, 0xfc, 0x03, 0xfc, 0xeb, 0xfb, 0xec, 0xfb, 0xd7, 0xfb, 0xd7, 0xfb, + 0xc8, 0xfb, 0xca, 0xfb, 0xbd, 0xfb, 0xbd, 0xfb, 0xb6, 0xfb, 0xb6, 0xfb, + 0xb5, 0xfb, 0xb4, 0xfb, 0xb6, 0xfb, 0xb7, 0xfb, 0xc3, 0xfb, 0xc1, 0xfb, + 0xca, 0xfb, 0xcd, 0xfb, 0xe5, 0xfb, 0xe4, 0xfb, 0xfb, 0xfb, 0xfe, 0xfb, + 0x1f, 0xfc, 0x1e, 0xfc, 0x46, 0xfc, 0x47, 0xfc, 0x73, 0xfc, 0x73, 0xfc, + 0xa8, 0xfc, 0xa9, 0xfc, 0xe1, 0xfc, 0xe1, 0xfc, 0x23, 0xfd, 0x24, 0xfd, + 0x6b, 0xfd, 0x6c, 0xfd, 0xb8, 0xfd, 0xb8, 0xfd, 0x0c, 0xfe, 0x0d, 0xfe, + 0x62, 0xfe, 0x62, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, 0x1f, 0xff, 0x1f, 0xff, + 0x86, 0xff, 0x86, 0xff, 0xec, 0xff, 0xeb, 0xff, 0x53, 0x00, 0x55, 0x00, + 0xbb, 0x00, 0xbb, 0x00, 0x22, 0x01, 0x24, 0x01, 0x89, 0x01, 0x8b, 0x01, + 0xee, 0x01, 0xee, 0x01, 0x4c, 0x02, 0x4d, 0x02, 0xa7, 0x02, 0xa8, 0x02, + 0xfe, 0x02, 0xfe, 0x02, 0x4b, 0x03, 0x4c, 0x03, 0x94, 0x03, 0x93, 0x03, + 0xcf, 0x03, 0xd1, 0x03, 0x04, 0x04, 0x04, 0x04, 0x2f, 0x04, 0x2e, 0x04, + 0x4a, 0x04, 0x4d, 0x04, 0x63, 0x04, 0x5f, 0x04, 0x65, 0x04, 0x65, 0x04, + 0x63, 0x04, 0x63, 0x04, 0x52, 0x04, 0x51, 0x04, 0x34, 0x04, 0x35, 0x04, + 0x0c, 0x04, 0x0c, 0x04, 0xd6, 0x03, 0xd5, 0x03, 0x96, 0x03, 0x98, 0x03, + 0x4a, 0x03, 0x49, 0x03, 0xf4, 0x02, 0xf6, 0x02, 0x99, 0x02, 0x97, 0x02, + 0x33, 0x02, 0x34, 0x02, 0xc6, 0x01, 0xc7, 0x01, 0x54, 0x01, 0x54, 0x01, + 0xdf, 0x00, 0xe1, 0x00, 0x64, 0x00, 0x64, 0x00, 0xec, 0xff, 0xee, 0xff, + 0x71, 0xff, 0x71, 0xff, 0xf7, 0xfe, 0xf8, 0xfe, 0x85, 0xfe, 0x82, 0xfe, + 0x0f, 0xfe, 0x11, 0xfe, 0xa5, 0xfd, 0xa5, 0xfd, 0x41, 0xfd, 0x41, 0xfd, + 0xe5, 0xfc, 0xe6, 0xfc, 0x96, 0xfc, 0x94, 0xfc, 0x4c, 0xfc, 0x4d, 0xfc, + 0x13, 0xfc, 0x11, 0xfc, 0xe1, 0xfb, 0xe2, 0xfb, 0xbe, 0xfb, 0xbf, 0xfb, + 0xaa, 0xfb, 0xa9, 0xfb, 0xa1, 0xfb, 0xa2, 0xfb, 0xaa, 0xfb, 0xa7, 0xfb, + 0xb8, 0xfb, 0xba, 0xfb, 0xdf, 0xfb, 0xdc, 0xfb, 0x08, 0xfc, 0x0a, 0xfc, + 0x45, 0xfc, 0x44, 0xfc, 0x8a, 0xfc, 0x8b, 0xfc, 0xdc, 0xfc, 0xdb, 0xfc, + 0x38, 0xfd, 0x39, 0xfd, 0x9c, 0xfd, 0x9b, 0xfd, 0x07, 0xfe, 0x07, 0xfe, + 0x7a, 0xfe, 0x7a, 0xfe, 0xf4, 0xfe, 0xf3, 0xfe, 0x6e, 0xff, 0x6f, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0x71, 0x00, 0x72, 0x00, 0xf4, 0x00, 0xf2, 0x00, + 0x71, 0x01, 0x73, 0x01, 0xf2, 0x01, 0xf1, 0x01, 0x6b, 0x02, 0x6d, 0x02, + 0xe4, 0x02, 0xe3, 0x02, 0x51, 0x03, 0x51, 0x03, 0xbc, 0x03, 0xbc, 0x03, + 0x1e, 0x04, 0x1d, 0x04, 0x78, 0x04, 0x77, 0x04, 0xc7, 0x04, 0xca, 0x04, + 0x0f, 0x05, 0x0c, 0x05, 0x4e, 0x05, 0x4f, 0x05, 0x7c, 0x05, 0x7c, 0x05, + 0xa9, 0x05, 0xa8, 0x05, 0xc5, 0x05, 0xc6, 0x05, 0xdb, 0x05, 0xd8, 0x05, + 0xe2, 0x05, 0xe4, 0x05, 0xe2, 0x05, 0xe0, 0x05, 0xd8, 0x05, 0xd7, 0x05, + 0xc5, 0x05, 0xc4, 0x05, 0xa9, 0x05, 0xa7, 0x05, 0x85, 0x05, 0x84, 0x05, + 0x5b, 0x05, 0x5a, 0x05, 0x27, 0x05, 0x25, 0x05, 0xee, 0x04, 0xef, 0x04, + 0xb0, 0x04, 0xaf, 0x04, 0x6c, 0x04, 0x6b, 0x04, 0x25, 0x04, 0x24, 0x04, + 0xd9, 0x03, 0xd9, 0x03, 0x8b, 0x03, 0x88, 0x03, 0x39, 0x03, 0x3b, 0x03, + 0xe9, 0x02, 0xe5, 0x02, 0x93, 0x02, 0x94, 0x02, 0x40, 0x02, 0x3d, 0x02, + 0xea, 0x01, 0xea, 0x01, 0x95, 0x01, 0x93, 0x01, 0x40, 0x01, 0x40, 0x01, + 0xeb, 0x00, 0xea, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x47, 0x00, 0x46, 0x00, + 0xf7, 0xff, 0xf5, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0x58, 0xff, 0x56, 0xff, + 0x0e, 0xff, 0x0f, 0xff, 0xc3, 0xfe, 0xc3, 0xfe, 0x7d, 0xfe, 0x7a, 0xfe, + 0x36, 0xfe, 0x37, 0xfe, 0xf4, 0xfd, 0xf2, 0xfd, 0xb2, 0xfd, 0xb2, 0xfd, + 0x76, 0xfd, 0x75, 0xfd, 0x3a, 0xfd, 0x3a, 0xfd, 0x06, 0xfd, 0x04, 0xfd, + 0xd1, 0xfc, 0xd0, 0xfc, 0xa2, 0xfc, 0xa2, 0xfc, 0x79, 0xfc, 0x77, 0xfc, + 0x51, 0xfc, 0x53, 0xfc, 0x33, 0xfc, 0x30, 0xfc, 0x16, 0xfc, 0x16, 0xfc, + 0x02, 0xfc, 0x00, 0xfc, 0xf0, 0xfb, 0xf0, 0xfb, 0xe8, 0xfb, 0xe9, 0xfb, + 0xe7, 0xfb, 0xe4, 0xfb, 0xeb, 0xfb, 0xeb, 0xfb, 0xf8, 0xfb, 0xf7, 0xfb, + 0x0b, 0xfc, 0x0b, 0xfc, 0x27, 0xfc, 0x26, 0xfc, 0x49, 0xfc, 0x4b, 0xfc, + 0x77, 0xfc, 0x75, 0xfc, 0xa8, 0xfc, 0xa8, 0xfc, 0xe2, 0xfc, 0xe2, 0xfc, + 0x23, 0xfd, 0x23, 0xfd, 0x6a, 0xfd, 0x6a, 0xfd, 0xba, 0xfd, 0xbb, 0xfd, + 0x0d, 0xfe, 0x0c, 0xfe, 0x66, 0xfe, 0x67, 0xfe, 0xc5, 0xfe, 0xc2, 0xfe, + 0x24, 0xff, 0x25, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0xee, 0xff, 0xee, 0xff, + 0x57, 0x00, 0x56, 0x00, 0xba, 0x00, 0xbc, 0x00, 0x20, 0x01, 0x1e, 0x01, + 0x7f, 0x01, 0x80, 0x01, 0xdf, 0x01, 0xde, 0x01, 0x37, 0x02, 0x37, 0x02, + 0x89, 0x02, 0x88, 0x02, 0xd1, 0x02, 0xd2, 0x02, 0x16, 0x03, 0x16, 0x03, + 0x4d, 0x03, 0x4b, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0xa0, 0x03, 0x9e, 0x03, + 0xb7, 0x03, 0xb8, 0x03, 0xc4, 0x03, 0xc3, 0x03, 0xc2, 0x03, 0xc1, 0x03, + 0xb5, 0x03, 0xb5, 0x03, 0x9b, 0x03, 0x99, 0x03, 0x73, 0x03, 0x73, 0x03, + 0x43, 0x03, 0x40, 0x03, 0x00, 0x03, 0x00, 0x03, 0xb7, 0x02, 0xb7, 0x02, + 0x60, 0x02, 0x5f, 0x02, 0x01, 0x02, 0x02, 0x02, 0x99, 0x01, 0x98, 0x01, + 0x26, 0x01, 0x26, 0x01, 0xb1, 0x00, 0xb0, 0x00, 0x32, 0x00, 0x31, 0x00, + 0xb2, 0xff, 0xb1, 0xff, 0x2e, 0xff, 0x2e, 0xff, 0xa8, 0xfe, 0xa7, 0xfe, + 0x24, 0xfe, 0x25, 0xfe, 0xa1, 0xfd, 0xa0, 0xfd, 0x22, 0xfd, 0x22, 0xfd, + 0xa8, 0xfc, 0xa8, 0xfc, 0x33, 0xfc, 0x32, 0xfc, 0xc6, 0xfb, 0xc8, 0xfb, + 0x63, 0xfb, 0x62, 0xfb, 0x08, 0xfb, 0x0a, 0xfb, 0xbb, 0xfa, 0xbb, 0xfa, + 0x78, 0xfa, 0x77, 0xfa, 0x41, 0xfa, 0x43, 0xfa, 0x1a, 0xfa, 0x18, 0xfa, + 0xfc, 0xf9, 0xfd, 0xf9, 0xf0, 0xf9, 0xef, 0xf9, 0xee, 0xf9, 0xef, 0xf9, + 0xfc, 0xf9, 0xfc, 0xf9, 0x16, 0xfa, 0x17, 0xfa, 0x40, 0xfa, 0x40, 0xfa, + 0x73, 0xfa, 0x73, 0xfa, 0xb3, 0xfa, 0xb3, 0xfa, 0xff, 0xfa, 0xff, 0xfa, + 0x54, 0xfb, 0x55, 0xfb, 0xb4, 0xfb, 0xb4, 0xfb, 0x19, 0xfc, 0x1a, 0xfc, + 0x88, 0xfc, 0x86, 0xfc, 0xf9, 0xfc, 0xfb, 0xfc, 0x6e, 0xfd, 0x6f, 0xfd, + 0xeb, 0xfd, 0xea, 0xfd, 0x61, 0xfe, 0x64, 0xfe, 0xe0, 0xfe, 0xdf, 0xfe, + 0x57, 0xff, 0x57, 0xff, 0xce, 0xff, 0xcf, 0xff, 0x42, 0x00, 0x42, 0x00, + 0xb0, 0x00, 0xb0, 0x00, 0x1a, 0x01, 0x19, 0x01, 0x7d, 0x01, 0x7f, 0x01, + 0xdb, 0x01, 0xd8, 0x01, 0x2e, 0x02, 0x30, 0x02, 0x7e, 0x02, 0x7b, 0x02, + 0xc0, 0x02, 0xbf, 0x02, 0xfd, 0x02, 0xfd, 0x02, 0x2f, 0x03, 0x2e, 0x03, + 0x58, 0x03, 0x58, 0x03, 0x7c, 0x03, 0x79, 0x03, 0x92, 0x03, 0x92, 0x03, + 0xa1, 0x03, 0xa0, 0x03, 0xaa, 0x03, 0xaa, 0x03, 0xa9, 0x03, 0xa7, 0x03, + 0xa2, 0x03, 0xa2, 0x03, 0x93, 0x03, 0x91, 0x03, 0x7e, 0x03, 0x7f, 0x03, + 0x66, 0x03, 0x64, 0x03, 0x45, 0x03, 0x46, 0x03, 0x22, 0x03, 0x21, 0x03, + 0xfb, 0x02, 0xfa, 0x02, 0xd1, 0x02, 0xd1, 0x02, 0xa3, 0x02, 0xa2, 0x02, + 0x71, 0x02, 0x73, 0x02, 0x44, 0x02, 0x42, 0x02, 0x0f, 0x02, 0x0e, 0x02, + 0xdf, 0x01, 0xdf, 0x01, 0xa9, 0x01, 0xa9, 0x01, 0x78, 0x01, 0x77, 0x01, + 0x44, 0x01, 0x45, 0x01, 0x14, 0x01, 0x13, 0x01, 0xe0, 0x00, 0xe1, 0x00, + 0xb2, 0x00, 0xb2, 0x00, 0x82, 0x00, 0x81, 0x00, 0x54, 0x00, 0x55, 0x00, + 0x27, 0x00, 0x27, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xd1, 0xff, 0xd1, 0xff, + 0xaa, 0xff, 0xa9, 0xff, 0x82, 0xff, 0x82, 0xff, 0x5c, 0xff, 0x5c, 0xff, + 0x38, 0xff, 0x3a, 0xff, 0x17, 0xff, 0x17, 0xff, 0xf8, 0xfe, 0xf7, 0xfe, + 0xda, 0xfe, 0xd9, 0xfe, 0xbf, 0xfe, 0xc0, 0xfe, 0xa7, 0xfe, 0xa6, 0xfe, + 0x91, 0xfe, 0x92, 0xfe, 0x7f, 0xfe, 0x80, 0xfe, 0x6f, 0xfe, 0x70, 0xfe, + 0x67, 0xfe, 0x66, 0xfe, 0x5e, 0xfe, 0x5e, 0xfe, 0x5e, 0xfe, 0x5f, 0xfe, + 0x5f, 0xfe, 0x5f, 0xfe, 0x67, 0xfe, 0x67, 0xfe, 0x74, 0xfe, 0x75, 0xfe, + 0x87, 0xfe, 0x84, 0xfe, 0x9e, 0xfe, 0xa1, 0xfe, 0xbe, 0xfe, 0xba, 0xfe, + 0xdf, 0xfe, 0xe1, 0xfe, 0x0d, 0xff, 0x0c, 0xff, 0x3a, 0xff, 0x39, 0xff, + 0x72, 0xff, 0x71, 0xff, 0xad, 0xff, 0xab, 0xff, 0xec, 0xff, 0xeb, 0xff, + 0x35, 0x00, 0x34, 0x00, 0x7c, 0x00, 0x7b, 0x00, 0xcf, 0x00, 0xcd, 0x00, + 0x21, 0x01, 0x1f, 0x01, 0x76, 0x01, 0x74, 0x01, 0xd0, 0x01, 0xcf, 0x01, + 0x28, 0x02, 0x27, 0x02, 0x84, 0x02, 0x81, 0x02, 0xdc, 0x02, 0xdb, 0x02, + 0x34, 0x03, 0x33, 0x03, 0x8c, 0x03, 0x89, 0x03, 0xdb, 0x03, 0xdc, 0x03, + 0x2a, 0x04, 0x28, 0x04, 0x72, 0x04, 0x6f, 0x04, 0xb3, 0x04, 0xb2, 0x04, + 0xeb, 0x04, 0xe9, 0x04, 0x1a, 0x05, 0x19, 0x05, 0x41, 0x05, 0x40, 0x05, + 0x5d, 0x05, 0x5a, 0x05, 0x6c, 0x05, 0x6d, 0x05, 0x71, 0x05, 0x6e, 0x05, + 0x67, 0x05, 0x66, 0x05, 0x53, 0x05, 0x52, 0x05, 0x32, 0x05, 0x2f, 0x05, + 0x02, 0x05, 0x01, 0x05, 0xc8, 0x04, 0xc5, 0x04, 0x7e, 0x04, 0x7d, 0x04, + 0x2b, 0x04, 0x2a, 0x04, 0xca, 0x03, 0xc9, 0x03, 0x62, 0x03, 0x60, 0x03, + 0xeb, 0x02, 0xec, 0x02, 0x70, 0x02, 0x6e, 0x02, 0xea, 0x01, 0xe8, 0x01, + 0x5e, 0x01, 0x5e, 0x01, 0xcf, 0x00, 0xcd, 0x00, 0x3b, 0x00, 0x39, 0x00, + 0xa5, 0xff, 0xa5, 0xff, 0x0f, 0xff, 0x0c, 0xff, 0x79, 0xfe, 0x7a, 0xfe, + 0xe7, 0xfd, 0xe7, 0xfd, 0x5b, 0xfd, 0x58, 0xfd, 0xd1, 0xfc, 0xd0, 0xfc, + 0x51, 0xfc, 0x50, 0xfc, 0xd8, 0xfb, 0xd5, 0xfb, 0x69, 0xfb, 0x68, 0xfb, + 0x04, 0xfb, 0x02, 0xfb, 0xab, 0xfa, 0xab, 0xfa, 0x62, 0xfa, 0x5f, 0xfa, + 0x21, 0xfa, 0x22, 0xfa, 0xf6, 0xf9, 0xf2, 0xf9, 0xd0, 0xf9, 0xd1, 0xf9, + 0xc0, 0xf9, 0xbe, 0xf9, 0xbc, 0xf9, 0xb9, 0xf9, 0xc4, 0xf9, 0xc4, 0xf9, + 0xdf, 0xf9, 0xdc, 0xf9, 0x04, 0xfa, 0x03, 0xfa, 0x38, 0xfa, 0x36, 0xfa, + 0x79, 0xfa, 0x78, 0xfa, 0xc4, 0xfa, 0xc2, 0xfa, 0x1b, 0xfb, 0x1b, 0xfb, + 0x7b, 0xfb, 0x7b, 0xfb, 0xe4, 0xfb, 0xe4, 0xfb, 0x54, 0xfc, 0x53, 0xfc, + 0xca, 0xfc, 0xca, 0xfc, 0x41, 0xfd, 0x41, 0xfd, 0xbf, 0xfd, 0xc0, 0xfd, + 0x3d, 0xfe, 0x3c, 0xfe, 0xbb, 0xfe, 0xbb, 0xfe, 0x39, 0xff, 0x39, 0xff, + 0xb3, 0xff, 0xb3, 0xff, 0x2b, 0x00, 0x2d, 0x00, 0x9c, 0x00, 0x9b, 0x00, + 0x0a, 0x01, 0x0a, 0x01, 0x70, 0x01, 0x6f, 0x01, 0xcd, 0x01, 0xce, 0x01, + 0x24, 0x02, 0x24, 0x02, 0x70, 0x02, 0x71, 0x02, 0xb1, 0x02, 0xb1, 0x02, + 0xec, 0x02, 0xeb, 0x02, 0x1a, 0x03, 0x19, 0x03, 0x40, 0x03, 0x3e, 0x03, + 0x57, 0x03, 0x5a, 0x03, 0x6a, 0x03, 0x68, 0x03, 0x6f, 0x03, 0x6e, 0x03, + 0x6e, 0x03, 0x6d, 0x03, 0x61, 0x03, 0x61, 0x03, 0x4b, 0x03, 0x4b, 0x03, + 0x31, 0x03, 0x30, 0x03, 0x08, 0x03, 0x09, 0x03, 0xe0, 0x02, 0xe0, 0x02, + 0xb0, 0x02, 0xad, 0x02, 0x73, 0x02, 0x77, 0x02, 0x3d, 0x02, 0x3c, 0x02, + 0xfa, 0x01, 0xfa, 0x01, 0xb9, 0x01, 0xb8, 0x01, 0x72, 0x01, 0x72, 0x01, + 0x29, 0x01, 0x2a, 0x01, 0xe3, 0x00, 0xe1, 0x00, 0x97, 0x00, 0x95, 0x00, + 0x4e, 0x00, 0x4d, 0x00, 0x03, 0x00, 0x04, 0x00, 0xb9, 0xff, 0xb7, 0xff, + 0x70, 0xff, 0x6f, 0xff, 0x29, 0xff, 0x28, 0xff, 0xe3, 0xfe, 0xe3, 0xfe, + 0xa1, 0xfe, 0xa0, 0xfe, 0x5f, 0xfe, 0x60, 0xfe, 0x1f, 0xfe, 0x1e, 0xfe, + 0xe3, 0xfd, 0xe2, 0xfd, 0xa7, 0xfd, 0xa6, 0xfd, 0x70, 0xfd, 0x70, 0xfd, + 0x3a, 0xfd, 0x3a, 0xfd, 0x0a, 0xfd, 0x09, 0xfd, 0xda, 0xfc, 0xd9, 0xfc, + 0xac, 0xfc, 0xac, 0xfc, 0x84, 0xfc, 0x82, 0xfc, 0x5d, 0xfc, 0x60, 0xfc, + 0x3e, 0xfc, 0x3a, 0xfc, 0x20, 0xfc, 0x22, 0xfc, 0x05, 0xfc, 0x03, 0xfc, + 0xf1, 0xfb, 0xf1, 0xfb, 0xe2, 0xfb, 0xe1, 0xfb, 0xd6, 0xfb, 0xd5, 0xfb, + 0xd2, 0xfb, 0xd0, 0xfb, 0xcf, 0xfb, 0xcf, 0xfb, 0xd9, 0xfb, 0xd6, 0xfb, + 0xe2, 0xfb, 0xe1, 0xfb, 0xf8, 0xfb, 0xf6, 0xfb, 0x11, 0xfc, 0x11, 0xfc, + 0x33, 0xfc, 0x33, 0xfc, 0x5e, 0xfc, 0x5b, 0xfc, 0x8e, 0xfc, 0x8d, 0xfc, + 0xc6, 0xfc, 0xc6, 0xfc, 0x06, 0xfd, 0x05, 0xfd, 0x4d, 0xfd, 0x4e, 0xfd, + 0x9e, 0xfd, 0x9b, 0xfd, 0xf3, 0xfd, 0xf4, 0xfd, 0x51, 0xfe, 0x52, 0xfe, + 0xb6, 0xfe, 0xb4, 0xfe, 0x1e, 0xff, 0x21, 0xff, 0x8f, 0xff, 0x8d, 0xff, + 0x03, 0x00, 0x03, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0xf4, 0x00, 0xf3, 0x00, + 0x70, 0x01, 0x70, 0x01, 0xec, 0x01, 0xeb, 0x01, 0x68, 0x02, 0x68, 0x02, + 0xe3, 0x02, 0xe3, 0x02, 0x59, 0x03, 0x5a, 0x03, 0xd1, 0x03, 0xcf, 0x03, + 0x3c, 0x04, 0x3d, 0x04, 0xa7, 0x04, 0xa6, 0x04, 0x08, 0x05, 0x06, 0x05, + 0x5e, 0x05, 0x5f, 0x05, 0xae, 0x05, 0xac, 0x05, 0xee, 0x05, 0xef, 0x05, + 0x2b, 0x06, 0x27, 0x06, 0x52, 0x06, 0x55, 0x06, 0x74, 0x06, 0x71, 0x06, + 0x83, 0x06, 0x85, 0x06, 0x88, 0x06, 0x87, 0x06, 0x7d, 0x06, 0x7e, 0x06, + 0x67, 0x06, 0x65, 0x06, 0x40, 0x06, 0x40, 0x06, 0x0c, 0x06, 0x0b, 0x06, + 0xcc, 0x05, 0xca, 0x05, 0x7c, 0x05, 0x7e, 0x05, 0x26, 0x05, 0x24, 0x05, + 0xc1, 0x04, 0xc1, 0x04, 0x54, 0x04, 0x53, 0x04, 0xdc, 0x03, 0xdc, 0x03, + 0x5f, 0x03, 0x5c, 0x03, 0xda, 0x02, 0xdb, 0x02, 0x50, 0x02, 0x4e, 0x02, + 0xc5, 0x01, 0xc5, 0x01, 0x35, 0x01, 0x35, 0x01, 0xa9, 0x00, 0xa8, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x92, 0xff, 0x92, 0xff, 0x0e, 0xff, 0x0c, 0xff, + 0x8c, 0xfe, 0x8d, 0xfe, 0x16, 0xfe, 0x16, 0xfe, 0xa8, 0xfd, 0xa7, 0xfd, + 0x43, 0xfd, 0x44, 0xfd, 0xea, 0xfc, 0xe8, 0xfc, 0x9d, 0xfc, 0x9d, 0xfc, + 0x5c, 0xfc, 0x5c, 0xfc, 0x29, 0xfc, 0x27, 0xfc, 0x04, 0xfc, 0x03, 0xfc, + 0xe9, 0xfb, 0xe8, 0xfb, 0xe3, 0xfb, 0xe2, 0xfb, 0xe4, 0xfb, 0xe3, 0xfb, + 0xf7, 0xfb, 0xf7, 0xfb, 0x14, 0xfc, 0x14, 0xfc, 0x40, 0xfc, 0x3f, 0xfc, + 0x76, 0xfc, 0x76, 0xfc, 0xb8, 0xfc, 0xb7, 0xfc, 0x05, 0xfd, 0x04, 0xfd, + 0x59, 0xfd, 0x57, 0xfd, 0xb5, 0xfd, 0xb4, 0xfd, 0x17, 0xfe, 0x17, 0xfe, + 0x7f, 0xfe, 0x7e, 0xfe, 0xe7, 0xfe, 0xe9, 0xfe, 0x58, 0xff, 0x55, 0xff, + 0xc2, 0xff, 0xc3, 0xff, 0x31, 0x00, 0x30, 0x00, 0x9c, 0x00, 0x9c, 0x00, + 0x04, 0x01, 0x02, 0x01, 0x69, 0x01, 0x6a, 0x01, 0xc5, 0x01, 0xc5, 0x01, + 0x21, 0x02, 0x20, 0x02, 0x6f, 0x02, 0x70, 0x02, 0xbc, 0x02, 0xbb, 0x02, + 0xfa, 0x02, 0xfb, 0x02, 0x33, 0x03, 0x32, 0x03, 0x62, 0x03, 0x61, 0x03, + 0x85, 0x03, 0x85, 0x03, 0xa2, 0x03, 0x9f, 0x03, 0xae, 0x03, 0xb2, 0x03, + 0xb9, 0x03, 0xb6, 0x03, 0xb6, 0x03, 0xb6, 0x03, 0xaa, 0x03, 0xa9, 0x03, + 0x95, 0x03, 0x92, 0x03, 0x76, 0x03, 0x77, 0x03, 0x52, 0x03, 0x50, 0x03, + 0x26, 0x03, 0x26, 0x03, 0xf4, 0x02, 0xf2, 0x02, 0xb9, 0x02, 0xba, 0x02, + 0x7d, 0x02, 0x7e, 0x02, 0x3a, 0x02, 0x39, 0x02, 0xf6, 0x01, 0xf8, 0x01, + 0xaf, 0x01, 0xad, 0x01, 0x63, 0x01, 0x64, 0x01, 0x17, 0x01, 0x17, 0x01, + 0xc9, 0x00, 0xc9, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x2f, 0x00, 0x2f, 0x00, + 0xe5, 0xff, 0xe4, 0xff, 0x99, 0xff, 0x9a, 0xff, 0x4e, 0xff, 0x4d, 0xff, + 0x07, 0xff, 0x07, 0xff, 0xc2, 0xfe, 0xbf, 0xfe, 0x7d, 0xfe, 0x7c, 0xfe, + 0x3e, 0xfe, 0x3e, 0xfe, 0xff, 0xfd, 0xfd, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, + 0x8c, 0xfd, 0x8a, 0xfd, 0x54, 0xfd, 0x55, 0xfd, 0x25, 0xfd, 0x23, 0xfd, + 0xf3, 0xfc, 0xf3, 0xfc, 0xc8, 0xfc, 0xc6, 0xfc, 0x9b, 0xfc, 0x9b, 0xfc, + 0x78, 0xfc, 0x75, 0xfc, 0x53, 0xfc, 0x53, 0xfc, 0x31, 0xfc, 0x31, 0xfc, + 0x18, 0xfc, 0x17, 0xfc, 0xfb, 0xfb, 0xfb, 0xfb, 0xe9, 0xfb, 0xe8, 0xfb, + 0xd3, 0xfb, 0xd4, 0xfb, 0xca, 0xfb, 0xca, 0xfb, 0xbf, 0xfb, 0xbe, 0xfb, + 0xbc, 0xfb, 0xbb, 0xfb, 0xbb, 0xfb, 0xba, 0xfb, 0xc0, 0xfb, 0xc0, 0xfb, + 0xcc, 0xfb, 0xcc, 0xfb, 0xdb, 0xfb, 0xdb, 0xfb, 0xf3, 0xfb, 0xf1, 0xfb, + 0x0e, 0xfc, 0x0f, 0xfc, 0x31, 0xfc, 0x30, 0xfc, 0x5a, 0xfc, 0x5a, 0xfc, + 0x89, 0xfc, 0x87, 0xfc, 0xbe, 0xfc, 0xbd, 0xfc, 0xf8, 0xfc, 0xf9, 0xfc, + 0x3a, 0xfd, 0x39, 0xfd, 0x80, 0xfd, 0x80, 0xfd, 0xca, 0xfd, 0xcc, 0xfd, + 0x1e, 0xfe, 0x1d, 0xfe, 0x74, 0xfe, 0x73, 0xfe, 0xcf, 0xfe, 0xce, 0xfe, + 0x2e, 0xff, 0x2f, 0xff, 0x8f, 0xff, 0x8c, 0xff, 0xf1, 0xff, 0xf3, 0xff, + 0x55, 0x00, 0x54, 0x00, 0xb7, 0x00, 0xb9, 0x00, 0x1e, 0x01, 0x1c, 0x01, + 0x7a, 0x01, 0x7b, 0x01, 0xda, 0x01, 0xda, 0x01, 0x32, 0x02, 0x33, 0x02, + 0x88, 0x02, 0x87, 0x02, 0xd5, 0x02, 0xd5, 0x02, 0x1b, 0x03, 0x1b, 0x03, + 0x5b, 0x03, 0x5b, 0x03, 0x8f, 0x03, 0x8e, 0x03, 0xba, 0x03, 0xb9, 0x03, + 0xd8, 0x03, 0xd7, 0x03, 0xed, 0x03, 0xee, 0x03, 0xf6, 0x03, 0xf4, 0x03, + 0xf3, 0x03, 0xf1, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xc8, 0x03, 0xc6, 0x03, + 0x9e, 0x03, 0x9e, 0x03, 0x6a, 0x03, 0x69, 0x03, 0x29, 0x03, 0x26, 0x03, + 0xdc, 0x02, 0xde, 0x02, 0x86, 0x02, 0x83, 0x02, 0x27, 0x02, 0x26, 0x02, + 0xbd, 0x01, 0xbd, 0x01, 0x4b, 0x01, 0x4a, 0x01, 0xd5, 0x00, 0xd6, 0x00, + 0x5c, 0x00, 0x59, 0x00, 0xdb, 0xff, 0xdb, 0xff, 0x5b, 0xff, 0x5b, 0xff, + 0xda, 0xfe, 0xd7, 0xfe, 0x58, 0xfe, 0x59, 0xfe, 0xdc, 0xfd, 0xd7, 0xfd, + 0x61, 0xfd, 0x62, 0xfd, 0xed, 0xfc, 0xec, 0xfc, 0x82, 0xfc, 0x81, 0xfc, + 0x1b, 0xfc, 0x1c, 0xfc, 0xc6, 0xfb, 0xc3, 0xfb, 0x72, 0xfb, 0x74, 0xfb, + 0x34, 0xfb, 0x31, 0xfb, 0xfe, 0xfa, 0xff, 0xfa, 0xd7, 0xfa, 0xd5, 0xfa, + 0xc1, 0xfa, 0xbf, 0xfa, 0xb2, 0xfa, 0xb2, 0xfa, 0xbb, 0xfa, 0xb9, 0xfa, + 0xce, 0xfa, 0xce, 0xfa, 0xf3, 0xfa, 0xef, 0xfa, 0x24, 0xfb, 0x25, 0xfb, + 0x64, 0xfb, 0x62, 0xfb, 0xb2, 0xfb, 0xb2, 0xfb, 0x0e, 0xfc, 0x0d, 0xfc, + 0x73, 0xfc, 0x72, 0xfc, 0xe6, 0xfc, 0xe4, 0xfc, 0x5f, 0xfd, 0x5e, 0xfd, + 0xe2, 0xfd, 0xe2, 0xfd, 0x6d, 0xfe, 0x6c, 0xfe, 0xf9, 0xfe, 0xf9, 0xfe, + 0x90, 0xff, 0x8d, 0xff, 0x23, 0x00, 0x21, 0x00, 0xbb, 0x00, 0xbb, 0x00, + 0x4f, 0x01, 0x4c, 0x01, 0xdb, 0x01, 0xdb, 0x01, 0x6c, 0x02, 0x69, 0x02, + 0xf0, 0x02, 0xef, 0x02, 0x73, 0x03, 0x71, 0x03, 0xec, 0x03, 0xea, 0x03, + 0x5c, 0x04, 0x5b, 0x04, 0xc3, 0x04, 0xc1, 0x04, 0x22, 0x05, 0x1f, 0x05, + 0x71, 0x05, 0x70, 0x05, 0xba, 0x05, 0xb9, 0x05, 0xf3, 0x05, 0xf4, 0x05, + 0x24, 0x06, 0x22, 0x06, 0x46, 0x06, 0x47, 0x06, 0x5e, 0x06, 0x5b, 0x06, + 0x68, 0x06, 0x69, 0x06, 0x69, 0x06, 0x66, 0x06, 0x5c, 0x06, 0x5d, 0x06, + 0x49, 0x06, 0x46, 0x06, 0x26, 0x06, 0x27, 0x06, 0x00, 0x06, 0xfd, 0x05, + 0xcc, 0x05, 0xcc, 0x05, 0x92, 0x05, 0x92, 0x05, 0x54, 0x05, 0x52, 0x05, + 0x0c, 0x05, 0x0b, 0x05, 0xc1, 0x04, 0xc0, 0x04, 0x6e, 0x04, 0x6c, 0x04, + 0x1a, 0x04, 0x1a, 0x04, 0xc4, 0x03, 0xc0, 0x03, 0x6a, 0x03, 0x69, 0x03, + 0x0f, 0x03, 0x0d, 0x03, 0xb1, 0x02, 0xb1, 0x02, 0x5a, 0x02, 0x58, 0x02, + 0xfa, 0x01, 0xfb, 0x01, 0xa5, 0x01, 0xa1, 0x01, 0x48, 0x01, 0x4a, 0x01, + 0xf4, 0x00, 0xf1, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0x4c, 0x00, 0x4a, 0x00, + 0xfa, 0xff, 0xfb, 0xff, 0xb0, 0xff, 0xad, 0xff, 0x63, 0xff, 0x64, 0xff, + 0x1b, 0xff, 0x1b, 0xff, 0xd7, 0xfe, 0xd7, 0xfe, 0x96, 0xfe, 0x96, 0xfe, + 0x57, 0xfe, 0x55, 0xfe, 0x1b, 0xfe, 0x1c, 0xfe, 0xe5, 0xfd, 0xe1, 0xfd, + 0xad, 0xfd, 0xb1, 0xfd, 0x80, 0xfd, 0x7c, 0xfd, 0x4f, 0xfd, 0x51, 0xfd, + 0x29, 0xfd, 0x25, 0xfd, 0x00, 0xfd, 0x00, 0xfd, 0xdf, 0xfc, 0xdd, 0xfc, + 0xc1, 0xfc, 0xc0, 0xfc, 0xa8, 0xfc, 0xa7, 0xfc, 0x93, 0xfc, 0x92, 0xfc, + 0x84, 0xfc, 0x84, 0xfc, 0x7b, 0xfc, 0x7a, 0xfc, 0x75, 0xfc, 0x74, 0xfc, + 0x76, 0xfc, 0x77, 0xfc, 0x7f, 0xfc, 0x7e, 0xfc, 0x8d, 0xfc, 0x8c, 0xfc, + 0xa2, 0xfc, 0xa3, 0xfc, 0xc0, 0xfc, 0xbd, 0xfc, 0xe1, 0xfc, 0xe1, 0xfc, + 0x0a, 0xfd, 0x08, 0xfd, 0x3b, 0xfd, 0x3b, 0xfd, 0x70, 0xfd, 0x71, 0xfd, + 0xb1, 0xfd, 0xaf, 0xfd, 0xf4, 0xfd, 0xf4, 0xfd, 0x40, 0xfe, 0x3e, 0xfe, + 0x8f, 0xfe, 0x8e, 0xfe, 0xe5, 0xfe, 0xe3, 0xfe, 0x3e, 0xff, 0x3d, 0xff, + 0x9b, 0xff, 0x9b, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0x5f, 0x00, 0x5e, 0x00, + 0xc3, 0x00, 0xc2, 0x00, 0x28, 0x01, 0x26, 0x01, 0x89, 0x01, 0x88, 0x01, + 0xed, 0x01, 0xeb, 0x01, 0x48, 0x02, 0x47, 0x02, 0xa3, 0x02, 0xa1, 0x02, + 0xf4, 0x02, 0xf3, 0x02, 0x42, 0x03, 0x3f, 0x03, 0x85, 0x03, 0x85, 0x03, + 0xc1, 0x03, 0xc0, 0x03, 0xf3, 0x03, 0xf2, 0x03, 0x19, 0x04, 0x18, 0x04, + 0x37, 0x04, 0x36, 0x04, 0x44, 0x04, 0x43, 0x04, 0x49, 0x04, 0x46, 0x04, + 0x3d, 0x04, 0x3f, 0x04, 0x26, 0x04, 0x24, 0x04, 0x01, 0x04, 0x03, 0x04, + 0xd0, 0x03, 0xcc, 0x03, 0x93, 0x03, 0x92, 0x03, 0x47, 0x03, 0x45, 0x03, + 0xef, 0x02, 0xef, 0x02, 0x90, 0x02, 0x8e, 0x02, 0x23, 0x02, 0x22, 0x02, + 0xb0, 0x01, 0xaf, 0x01, 0x32, 0x01, 0x30, 0x01, 0xae, 0x00, 0xac, 0x00, + 0x26, 0x00, 0x24, 0x00, 0x97, 0xff, 0x97, 0xff, 0x0b, 0xff, 0x09, 0xff, + 0x77, 0xfe, 0x76, 0xfe, 0xe9, 0xfd, 0xe9, 0xfd, 0x5e, 0xfd, 0x5b, 0xfd, + 0xd1, 0xfc, 0xd2, 0xfc, 0x53, 0xfc, 0x51, 0xfc, 0xd1, 0xfb, 0xd2, 0xfb, + 0x61, 0xfb, 0x60, 0xfb, 0xf5, 0xfa, 0xf4, 0xfa, 0x96, 0xfa, 0x95, 0xfa, + 0x44, 0xfa, 0x43, 0xfa, 0xfd, 0xf9, 0xfb, 0xf9, 0xc5, 0xf9, 0xc4, 0xf9, + 0x9a, 0xf9, 0x98, 0xf9, 0x7d, 0xf9, 0x7d, 0xf9, 0x70, 0xf9, 0x6f, 0xf9, + 0x72, 0xf9, 0x70, 0xf9, 0x82, 0xf9, 0x82, 0xf9, 0xa1, 0xf9, 0x9f, 0xf9, + 0xcf, 0xf9, 0xce, 0xf9, 0x06, 0xfa, 0x06, 0xfa, 0x4d, 0xfa, 0x4b, 0xfa, + 0x9d, 0xfa, 0x9d, 0xfa, 0xfa, 0xfa, 0xf8, 0xfa, 0x5e, 0xfb, 0x5e, 0xfb, + 0xcd, 0xfb, 0xcb, 0xfb, 0x3e, 0xfc, 0x3f, 0xfc, 0xba, 0xfc, 0xb9, 0xfc, + 0x37, 0xfd, 0x36, 0xfd, 0xb8, 0xfd, 0xb6, 0xfd, 0x3b, 0xfe, 0x3a, 0xfe, + 0xba, 0xfe, 0xba, 0xfe, 0x3a, 0xff, 0x38, 0xff, 0xb5, 0xff, 0xb4, 0xff, + 0x2c, 0x00, 0x2c, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0x0e, 0x01, 0x0c, 0x01, + 0x71, 0x01, 0x71, 0x01, 0xd0, 0x01, 0xce, 0x01, 0x20, 0x02, 0x21, 0x02, + 0x6e, 0x02, 0x6d, 0x02, 0xad, 0x02, 0xad, 0x02, 0xe5, 0x02, 0xe5, 0x02, + 0x12, 0x03, 0x12, 0x03, 0x32, 0x03, 0x34, 0x03, 0x4e, 0x03, 0x4b, 0x03, + 0x5a, 0x03, 0x5b, 0x03, 0x62, 0x03, 0x62, 0x03, 0x5f, 0x03, 0x5e, 0x03, + 0x52, 0x03, 0x54, 0x03, 0x40, 0x03, 0x3f, 0x03, 0x27, 0x03, 0x27, 0x03, + 0x06, 0x03, 0x05, 0x03, 0xe0, 0x02, 0xe0, 0x02, 0xb6, 0x02, 0xb4, 0x02, + 0x87, 0x02, 0x86, 0x02, 0x53, 0x02, 0x54, 0x02, 0x20, 0x02, 0x1e, 0x02, + 0xea, 0x01, 0xea, 0x01, 0xb0, 0x01, 0xb0, 0x01, 0x79, 0x01, 0x7a, 0x01, + 0x40, 0x01, 0x3f, 0x01, 0x08, 0x01, 0x0a, 0x01, 0xd3, 0x00, 0xd0, 0x00, + 0x9d, 0x00, 0x9e, 0x00, 0x6a, 0x00, 0x68, 0x00, 0x39, 0x00, 0x3a, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0xde, 0xff, 0xdf, 0xff, 0xb3, 0xff, 0xb3, 0xff, + 0x8d, 0xff, 0x8e, 0xff, 0x69, 0xff, 0x68, 0xff, 0x45, 0xff, 0x48, 0xff, + 0x29, 0xff, 0x27, 0xff, 0x0b, 0xff, 0x0c, 0xff, 0xf1, 0xfe, 0xf2, 0xfe, + 0xdb, 0xfe, 0xda, 0xfe, 0xc6, 0xfe, 0xc7, 0xfe, 0xb4, 0xfe, 0xb4, 0xfe, + 0xa3, 0xfe, 0xa3, 0xfe, 0x95, 0xfe, 0x95, 0xfe, 0x8b, 0xfe, 0x89, 0xfe, + 0x84, 0xfe, 0x83, 0xfe, 0x7c, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, + 0x7a, 0xfe, 0x78, 0xfe, 0x7d, 0xfe, 0x7d, 0xfe, 0x85, 0xfe, 0x84, 0xfe, + 0x8f, 0xfe, 0x8e, 0xfe, 0x9d, 0xfe, 0x9c, 0xfe, 0xae, 0xfe, 0xad, 0xfe, + 0xc5, 0xfe, 0xc5, 0xfe, 0xe0, 0xfe, 0xde, 0xfe, 0x01, 0xff, 0xfe, 0xfe, + 0x23, 0xff, 0x23, 0xff, 0x4e, 0xff, 0x4b, 0xff, 0x7b, 0xff, 0x7a, 0xff, + 0xad, 0xff, 0xac, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0x20, 0x00, 0x1f, 0x00, + 0x62, 0x00, 0x60, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0x3e, 0x01, 0x3c, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0xe0, 0x01, 0xdd, 0x01, + 0x36, 0x02, 0x36, 0x02, 0x8c, 0x02, 0x8a, 0x02, 0xe1, 0x02, 0xe1, 0x02, + 0x36, 0x03, 0x35, 0x03, 0x8c, 0x03, 0x8c, 0x03, 0xdb, 0x03, 0xda, 0x03, + 0x2a, 0x04, 0x2b, 0x04, 0x72, 0x04, 0x71, 0x04, 0xb8, 0x04, 0xb7, 0x04, + 0xf4, 0x04, 0xf4, 0x04, 0x29, 0x05, 0x28, 0x05, 0x56, 0x05, 0x55, 0x05, + 0x77, 0x05, 0x78, 0x05, 0x90, 0x05, 0x8f, 0x05, 0x9c, 0x05, 0x9d, 0x05, + 0x9f, 0x05, 0x9e, 0x05, 0x95, 0x05, 0x94, 0x05, 0x7d, 0x05, 0x7e, 0x05, + 0x5b, 0x05, 0x5a, 0x05, 0x2a, 0x05, 0x2a, 0x05, 0xef, 0x04, 0xee, 0x04, + 0xa5, 0x04, 0xa5, 0x04, 0x51, 0x04, 0x50, 0x04, 0xef, 0x03, 0xed, 0x03, + 0x84, 0x03, 0x85, 0x03, 0x0f, 0x03, 0x0e, 0x03, 0x92, 0x02, 0x92, 0x02, + 0x0c, 0x02, 0x0b, 0x02, 0x80, 0x01, 0x80, 0x01, 0xf1, 0x00, 0xec, 0x00, + 0x5a, 0x00, 0x5d, 0x00, 0xc6, 0xff, 0xc3, 0xff, 0x2e, 0xff, 0x30, 0xff, + 0x9b, 0xfe, 0x98, 0xfe, 0x08, 0xfe, 0x07, 0xfe, 0x7a, 0xfd, 0x79, 0xfd, + 0xf4, 0xfc, 0xf2, 0xfc, 0x72, 0xfc, 0x71, 0xfc, 0xfb, 0xfb, 0xfa, 0xfb, + 0x8e, 0xfb, 0x8e, 0xfb, 0x2b, 0xfb, 0x29, 0xfb, 0xd6, 0xfa, 0xd7, 0xfa, + 0x8f, 0xfa, 0x8d, 0xfa, 0x54, 0xfa, 0x53, 0xfa, 0x28, 0xfa, 0x27, 0xfa, + 0x07, 0xfa, 0x09, 0xfa, 0xff, 0xf9, 0xfa, 0xf9, 0xfa, 0xf9, 0xfc, 0xf9, + 0x0e, 0xfa, 0x0b, 0xfa, 0x2a, 0xfa, 0x29, 0xfa, 0x58, 0xfa, 0x57, 0xfa, + 0x92, 0xfa, 0x92, 0xfa, 0xd9, 0xfa, 0xd6, 0xfa, 0x2c, 0xfb, 0x2e, 0xfb, + 0x89, 0xfb, 0x86, 0xfb, 0xf2, 0xfb, 0xf2, 0xfb, 0x5f, 0xfc, 0x5e, 0xfc, + 0xd7, 0xfc, 0xd7, 0xfc, 0x55, 0xfd, 0x54, 0xfd, 0xd4, 0xfd, 0xd2, 0xfd, + 0x5a, 0xfe, 0x59, 0xfe, 0xdb, 0xfe, 0xd9, 0xfe, 0x61, 0xff, 0x61, 0xff, + 0xe3, 0xff, 0xe1, 0xff, 0x62, 0x00, 0x61, 0x00, 0xdc, 0x00, 0xda, 0x00, + 0x51, 0x01, 0x50, 0x01, 0xc0, 0x01, 0xbc, 0x01, 0x24, 0x02, 0x24, 0x02, + 0x82, 0x02, 0x80, 0x02, 0xd5, 0x02, 0xd4, 0x02, 0x1e, 0x03, 0x1d, 0x03, + 0x5d, 0x03, 0x5a, 0x03, 0x8f, 0x03, 0x8e, 0x03, 0xb6, 0x03, 0xb6, 0x03, + 0xd5, 0x03, 0xd3, 0x03, 0xe5, 0x03, 0xe4, 0x03, 0xec, 0x03, 0xeb, 0x03, + 0xe5, 0x03, 0xe3, 0x03, 0xd6, 0x03, 0xd6, 0x03, 0xbb, 0x03, 0xb9, 0x03, + 0x98, 0x03, 0x97, 0x03, 0x6c, 0x03, 0x6b, 0x03, 0x38, 0x03, 0x38, 0x03, + 0xfc, 0x02, 0xfb, 0x02, 0xba, 0x02, 0xb9, 0x02, 0x73, 0x02, 0x72, 0x02, + 0x28, 0x02, 0x25, 0x02, 0xd4, 0x01, 0xd4, 0x01, 0x83, 0x01, 0x81, 0x01, + 0x2c, 0x01, 0x28, 0x01, 0xd5, 0x00, 0xd6, 0x00, 0x7d, 0x00, 0x7a, 0x00, + 0x27, 0x00, 0x23, 0x00, 0xce, 0xff, 0xcd, 0xff, 0x78, 0xff, 0x75, 0xff, + 0x25, 0xff, 0x24, 0xff, 0xd3, 0xfe, 0xd0, 0xfe, 0x85, 0xfe, 0x83, 0xfe, + 0x38, 0xfe, 0x36, 0xfe, 0xee, 0xfd, 0xec, 0xfd, 0xa9, 0xfd, 0xa8, 0xfd, + 0x65, 0xfd, 0x63, 0xfd, 0x27, 0xfd, 0x27, 0xfd, 0xee, 0xfc, 0xea, 0xfc, + 0xb5, 0xfc, 0xb6, 0xfc, 0x83, 0xfc, 0x81, 0xfc, 0x53, 0xfc, 0x52, 0xfc, + 0x2a, 0xfc, 0x28, 0xfc, 0x00, 0xfc, 0xff, 0xfb, 0xe0, 0xfb, 0xdf, 0xfb, + 0xbf, 0xfb, 0xbd, 0xfb, 0xa6, 0xfb, 0xa5, 0xfb, 0x8e, 0xfb, 0x8d, 0xfb, + 0x7d, 0xfb, 0x7b, 0xfb, 0x70, 0xfb, 0x71, 0xfb, 0x69, 0xfb, 0x66, 0xfb, + 0x65, 0xfb, 0x66, 0xfb, 0x6a, 0xfb, 0x67, 0xfb, 0x6f, 0xfb, 0x6e, 0xfb, + 0x7e, 0xfb, 0x7d, 0xfb, 0x91, 0xfb, 0x8f, 0xfb, 0xab, 0xfb, 0xab, 0xfb, + 0xca, 0xfb, 0xcb, 0xfb, 0xf3, 0xfb, 0xf0, 0xfb, 0x1f, 0xfc, 0x20, 0xfc, + 0x54, 0xfc, 0x53, 0xfc, 0x91, 0xfc, 0x90, 0xfc, 0xd2, 0xfc, 0xd1, 0xfc, + 0x1d, 0xfd, 0x1c, 0xfd, 0x6b, 0xfd, 0x6b, 0xfd, 0xc4, 0xfd, 0xc2, 0xfd, + 0x1f, 0xfe, 0x1f, 0xfe, 0x84, 0xfe, 0x83, 0xfe, 0xeb, 0xfe, 0xeb, 0xfe, + 0x58, 0xff, 0x58, 0xff, 0xcc, 0xff, 0xcb, 0xff, 0x3f, 0x00, 0x3f, 0x00, + 0xb7, 0x00, 0xb5, 0x00, 0x30, 0x01, 0x31, 0x01, 0xa9, 0x01, 0xa8, 0x01, + 0x25, 0x02, 0x25, 0x02, 0x9a, 0x02, 0x98, 0x02, 0x11, 0x03, 0x0f, 0x03, + 0x81, 0x03, 0x81, 0x03, 0xec, 0x03, 0xea, 0x03, 0x53, 0x04, 0x52, 0x04, + 0xb1, 0x04, 0xb1, 0x04, 0x08, 0x05, 0x08, 0x05, 0x54, 0x05, 0x53, 0x05, + 0x97, 0x05, 0x96, 0x05, 0xce, 0x05, 0xcc, 0x05, 0xfb, 0x05, 0xfa, 0x05, + 0x19, 0x06, 0x19, 0x06, 0x2d, 0x06, 0x2a, 0x06, 0x31, 0x06, 0x30, 0x06, + 0x29, 0x06, 0x27, 0x06, 0x13, 0x06, 0x11, 0x06, 0xef, 0x05, 0xee, 0x05, + 0xbf, 0x05, 0xbe, 0x05, 0x81, 0x05, 0x80, 0x05, 0x38, 0x05, 0x36, 0x05, + 0xe3, 0x04, 0xe1, 0x04, 0x82, 0x04, 0x81, 0x04, 0x19, 0x04, 0x18, 0x04, + 0xa6, 0x03, 0xa5, 0x03, 0x2d, 0x03, 0x2b, 0x03, 0xac, 0x02, 0xac, 0x02, + 0x2b, 0x02, 0x28, 0x02, 0xa2, 0x01, 0xa1, 0x01, 0x1a, 0x01, 0x19, 0x01, + 0x91, 0x00, 0x91, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x88, 0xff, 0x86, 0xff, + 0x06, 0xff, 0x05, 0xff, 0x8f, 0xfe, 0x8d, 0xfe, 0x1a, 0xfe, 0x1a, 0xfe, + 0xb4, 0xfd, 0xb1, 0xfd, 0x51, 0xfd, 0x51, 0xfd, 0xfe, 0xfc, 0xfc, 0xfc, + 0xb7, 0xfc, 0xb5, 0xfc, 0x77, 0xfc, 0x77, 0xfc, 0x4b, 0xfc, 0x49, 0xfc, + 0x27, 0xfc, 0x26, 0xfc, 0x16, 0xfc, 0x14, 0xfc, 0x10, 0xfc, 0x0e, 0xfc, + 0x17, 0xfc, 0x16, 0xfc, 0x2e, 0xfc, 0x2c, 0xfc, 0x4d, 0xfc, 0x4d, 0xfc, + 0x7e, 0xfc, 0x7c, 0xfc, 0xb6, 0xfc, 0xb7, 0xfc, 0xfd, 0xfc, 0xf8, 0xfc, + 0x4b, 0xfd, 0x4a, 0xfd, 0xa0, 0xfd, 0xa0, 0xfd, 0x01, 0xfe, 0xff, 0xfd, + 0x64, 0xfe, 0x65, 0xfe, 0xce, 0xfe, 0xca, 0xfe, 0x3b, 0xff, 0x3d, 0xff, + 0xab, 0xff, 0xa9, 0xff, 0x1b, 0x00, 0x1b, 0x00, 0x8c, 0x00, 0x8a, 0x00, + 0xf7, 0x00, 0xf7, 0x00, 0x64, 0x01, 0x62, 0x01, 0xc8, 0x01, 0xc8, 0x01, + 0x2a, 0x02, 0x28, 0x02, 0x84, 0x02, 0x84, 0x02, 0xd7, 0x02, 0xd6, 0x02, + 0x23, 0x03, 0x21, 0x03, 0x65, 0x03, 0x63, 0x03, 0x9e, 0x03, 0x9c, 0x03, + 0xcd, 0x03, 0xcd, 0x03, 0xf3, 0x03, 0xf0, 0x03, 0x0e, 0x04, 0x0e, 0x04, + 0x21, 0x04, 0x1d, 0x04, 0x25, 0x04, 0x26, 0x04, 0x25, 0x04, 0x24, 0x04, + 0x19, 0x04, 0x16, 0x04, 0x02, 0x04, 0x03, 0x04, 0xe7, 0x03, 0xe4, 0x03, + 0xc1, 0x03, 0xbf, 0x03, 0x93, 0x03, 0x94, 0x03, 0x60, 0x03, 0x5d, 0x03, + 0x26, 0x03, 0x25, 0x03, 0xe6, 0x02, 0xe4, 0x02, 0xa2, 0x02, 0xa1, 0x02, + 0x5b, 0x02, 0x5a, 0x02, 0x11, 0x02, 0x0f, 0x02, 0xc5, 0x01, 0xc3, 0x01, + 0x74, 0x01, 0x73, 0x01, 0x26, 0x01, 0x23, 0x01, 0xd3, 0x00, 0xd1, 0x00, + 0x85, 0x00, 0x83, 0x00, 0x34, 0x00, 0x31, 0x00, 0xe6, 0xff, 0xe6, 0xff, + 0x9a, 0xff, 0x98, 0xff, 0x4f, 0xff, 0x4e, 0xff, 0x07, 0xff, 0x06, 0xff, + 0xc1, 0xfe, 0xbd, 0xfe, 0x7b, 0xfe, 0x7b, 0xfe, 0x3e, 0xfe, 0x3c, 0xfe, + 0xfe, 0xfd, 0xfc, 0xfd, 0xc5, 0xfd, 0xc4, 0xfd, 0x8e, 0xfd, 0x8c, 0xfd, + 0x59, 0xfd, 0x59, 0xfd, 0x2b, 0xfd, 0x28, 0xfd, 0xfb, 0xfc, 0xfb, 0xfc, + 0xd3, 0xfc, 0xd1, 0xfc, 0xac, 0xfc, 0xad, 0xfc, 0x8c, 0xfc, 0x89, 0xfc, + 0x6b, 0xfc, 0x6b, 0xfc, 0x50, 0xfc, 0x50, 0xfc, 0x3a, 0xfc, 0x39, 0xfc, + 0x26, 0xfc, 0x25, 0xfc, 0x17, 0xfc, 0x14, 0xfc, 0x0e, 0xfc, 0x0c, 0xfc, + 0x06, 0xfc, 0x04, 0xfc, 0x06, 0xfc, 0x05, 0xfc, 0x09, 0xfc, 0x09, 0xfc, + 0x12, 0xfc, 0x10, 0xfc, 0x21, 0xfc, 0x20, 0xfc, 0x35, 0xfc, 0x33, 0xfc, + 0x4c, 0xfc, 0x4b, 0xfc, 0x6c, 0xfc, 0x6b, 0xfc, 0x8e, 0xfc, 0x8e, 0xfc, + 0xb7, 0xfc, 0xb6, 0xfc, 0xe9, 0xfc, 0xe9, 0xfc, 0x1d, 0xfd, 0x1b, 0xfd, + 0x58, 0xfd, 0x56, 0xfd, 0x96, 0xfd, 0x95, 0xfd, 0xdb, 0xfd, 0xda, 0xfd, + 0x24, 0xfe, 0x21, 0xfe, 0x70, 0xfe, 0x70, 0xfe, 0xc3, 0xfe, 0xc1, 0xfe, + 0x14, 0xff, 0x14, 0xff, 0x6f, 0xff, 0x6e, 0xff, 0xc4, 0xff, 0xc4, 0xff, + 0x21, 0x00, 0x1f, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0xd4, 0x00, 0xd1, 0x00, + 0x2c, 0x01, 0x2c, 0x01, 0x80, 0x01, 0x7e, 0x01, 0xd3, 0x01, 0xd2, 0x01, + 0x1d, 0x02, 0x1d, 0x02, 0x67, 0x02, 0x64, 0x02, 0xa7, 0x02, 0xa7, 0x02, + 0xdf, 0x02, 0xdd, 0x02, 0x11, 0x03, 0x10, 0x03, 0x37, 0x03, 0x36, 0x03, + 0x56, 0x03, 0x55, 0x03, 0x69, 0x03, 0x67, 0x03, 0x71, 0x03, 0x6f, 0x03, + 0x6f, 0x03, 0x6e, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x47, 0x03, 0x46, 0x03, + 0x20, 0x03, 0x1e, 0x03, 0xee, 0x02, 0xef, 0x02, 0xb5, 0x02, 0xb2, 0x02, + 0x6c, 0x02, 0x6c, 0x02, 0x22, 0x02, 0x1e, 0x02, 0xc2, 0x01, 0xc4, 0x01, + 0x65, 0x01, 0x62, 0x01, 0xf9, 0x00, 0xfa, 0x00, 0x8a, 0x00, 0x89, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x9b, 0xff, 0x9b, 0xff, 0x23, 0xff, 0x22, 0xff, + 0xa6, 0xfe, 0xa5, 0xfe, 0x2a, 0xfe, 0x29, 0xfe, 0xaf, 0xfd, 0xb0, 0xfd, + 0x3a, 0xfd, 0x37, 0xfd, 0xc6, 0xfc, 0xc8, 0xfc, 0x5b, 0xfc, 0x59, 0xfc, + 0xf5, 0xfb, 0xf5, 0xfb, 0x9b, 0xfb, 0x9a, 0xfb, 0x4a, 0xfb, 0x48, 0xfb, + 0x03, 0xfb, 0x03, 0xfb, 0xc7, 0xfa, 0xc7, 0xfa, 0x9a, 0xfa, 0x9a, 0xfa, + 0x78, 0xfa, 0x79, 0xfa, 0x66, 0xfa, 0x64, 0xfa, 0x60, 0xfa, 0x60, 0xfa, + 0x69, 0xfa, 0x69, 0xfa, 0x81, 0xfa, 0x7f, 0xfa, 0xa6, 0xfa, 0xa6, 0xfa, + 0xda, 0xfa, 0xd9, 0xfa, 0x1b, 0xfb, 0x19, 0xfb, 0x68, 0xfb, 0x68, 0xfb, + 0xc2, 0xfb, 0xc1, 0xfb, 0x25, 0xfc, 0x25, 0xfc, 0x95, 0xfc, 0x94, 0xfc, + 0x0e, 0xfd, 0x0d, 0xfd, 0x8e, 0xfd, 0x8d, 0xfd, 0x14, 0xfe, 0x13, 0xfe, + 0x9f, 0xfe, 0xa0, 0xfe, 0x2e, 0xff, 0x2e, 0xff, 0xc3, 0xff, 0xc3, 0xff, + 0x54, 0x00, 0x53, 0x00, 0xe9, 0x00, 0xea, 0x00, 0x7a, 0x01, 0x77, 0x01, + 0x04, 0x02, 0x04, 0x02, 0x91, 0x02, 0x8f, 0x02, 0x10, 0x03, 0x11, 0x03, + 0x91, 0x03, 0x8f, 0x03, 0x03, 0x04, 0x02, 0x04, 0x73, 0x04, 0x71, 0x04, + 0xd4, 0x04, 0xd5, 0x04, 0x2e, 0x05, 0x2c, 0x05, 0x7e, 0x05, 0x7d, 0x05, + 0xc1, 0x05, 0xbf, 0x05, 0xf9, 0x05, 0xf8, 0x05, 0x27, 0x06, 0x24, 0x06, + 0x44, 0x06, 0x46, 0x06, 0x5d, 0x06, 0x5a, 0x06, 0x64, 0x06, 0x65, 0x06, + 0x64, 0x06, 0x63, 0x06, 0x5b, 0x06, 0x58, 0x06, 0x42, 0x06, 0x42, 0x06, + 0x25, 0x06, 0x23, 0x06, 0xf9, 0x05, 0xf9, 0x05, 0xc9, 0x05, 0xc7, 0x05, + 0x8f, 0x05, 0x8e, 0x05, 0x4c, 0x05, 0x4c, 0x05, 0x07, 0x05, 0x05, 0x05, + 0xb8, 0x04, 0xb8, 0x04, 0x67, 0x04, 0x65, 0x04, 0x10, 0x04, 0x0f, 0x04, + 0xb6, 0x03, 0xb5, 0x03, 0x5a, 0x03, 0x58, 0x03, 0xfc, 0x02, 0xf9, 0x02, + 0x9c, 0x02, 0x9a, 0x02, 0x3b, 0x02, 0x39, 0x02, 0xd9, 0x01, 0xd8, 0x01, + 0x7b, 0x01, 0x79, 0x01, 0x19, 0x01, 0x17, 0x01, 0xbe, 0x00, 0xbc, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0x08, 0x00, 0x07, 0x00, 0xaf, 0xff, 0xae, 0xff, + 0x5f, 0xff, 0x5c, 0xff, 0x09, 0xff, 0x0a, 0xff, 0xc1, 0xfe, 0xbd, 0xfe, + 0x75, 0xfe, 0x76, 0xfe, 0x30, 0xfe, 0x2d, 0xfe, 0xf0, 0xfd, 0xef, 0xfd, + 0xb4, 0xfd, 0xb2, 0xfd, 0x7b, 0xfd, 0x79, 0xfd, 0x4b, 0xfd, 0x4b, 0xfd, + 0x1c, 0xfd, 0x17, 0xfd, 0xf7, 0xfc, 0xf7, 0xfc, 0xd2, 0xfc, 0xd1, 0xfc, + 0xb8, 0xfc, 0xb6, 0xfc, 0xa3, 0xfc, 0xa0, 0xfc, 0x90, 0xfc, 0x90, 0xfc, + 0x8b, 0xfc, 0x86, 0xfc, 0x84, 0xfc, 0x85, 0xfc, 0x8c, 0xfc, 0x8a, 0xfc, + 0x95, 0xfc, 0x94, 0xfc, 0xa7, 0xfc, 0xa6, 0xfc, 0xc1, 0xfc, 0xbf, 0xfc, + 0xde, 0xfc, 0xde, 0xfc, 0x08, 0xfd, 0x06, 0xfd, 0x33, 0xfd, 0x32, 0xfd, + 0x69, 0xfd, 0x68, 0xfd, 0xa4, 0xfd, 0xa3, 0xfd, 0xe5, 0xfd, 0xe2, 0xfd, + 0x2c, 0xfe, 0x2b, 0xfe, 0x78, 0xfe, 0x76, 0xfe, 0xca, 0xfe, 0xc9, 0xfe, + 0x21, 0xff, 0x1f, 0xff, 0x7a, 0xff, 0x78, 0xff, 0xd9, 0xff, 0xd7, 0xff, + 0x37, 0x00, 0x35, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0xff, 0x00, 0xfb, 0x00, + 0x5f, 0x01, 0x5f, 0x01, 0xc1, 0x01, 0xbf, 0x01, 0x1f, 0x02, 0x1f, 0x02, + 0x7d, 0x02, 0x7c, 0x02, 0xd5, 0x02, 0xd3, 0x02, 0x29, 0x03, 0x27, 0x03, + 0x75, 0x03, 0x74, 0x03, 0xbd, 0x03, 0xba, 0x03, 0xf9, 0x03, 0xf9, 0x03, + 0x2f, 0x04, 0x2d, 0x04, 0x5b, 0x04, 0x5a, 0x04, 0x7c, 0x04, 0x7a, 0x04, + 0x91, 0x04, 0x91, 0x04, 0x9f, 0x04, 0x9c, 0x04, 0x9a, 0x04, 0x9c, 0x04, + 0x91, 0x04, 0x8d, 0x04, 0x75, 0x04, 0x75, 0x04, 0x52, 0x04, 0x50, 0x04, + 0x20, 0x04, 0x1f, 0x04, 0xe4, 0x03, 0xe2, 0x03, 0x9b, 0x03, 0x9c, 0x03, + 0x49, 0x03, 0x44, 0x03, 0xea, 0x02, 0xeb, 0x02, 0x86, 0x02, 0x80, 0x02, + 0x15, 0x02, 0x14, 0x02, 0xa0, 0x01, 0x9f, 0x01, 0x21, 0x01, 0x1f, 0x01, + 0xa2, 0x00, 0xa1, 0x00, 0x1c, 0x00, 0x19, 0x00, 0x93, 0xff, 0x91, 0xff, + 0x0a, 0xff, 0x08, 0xff, 0x7e, 0xfe, 0x7c, 0xfe, 0xf8, 0xfd, 0xf6, 0xfd, + 0x71, 0xfd, 0x6f, 0xfd, 0xef, 0xfc, 0xec, 0xfc, 0x75, 0xfc, 0x74, 0xfc, + 0xfe, 0xfb, 0xfb, 0xfb, 0x93, 0xfb, 0x91, 0xfb, 0x2d, 0xfb, 0x2c, 0xfb, + 0xd4, 0xfa, 0xd1, 0xfa, 0x85, 0xfa, 0x83, 0xfa, 0x3e, 0xfa, 0x3d, 0xfa, + 0x09, 0xfa, 0x06, 0xfa, 0xdb, 0xf9, 0xda, 0xf9, 0xc1, 0xf9, 0xbd, 0xf9, + 0xae, 0xf9, 0xaa, 0xf9, 0xaa, 0xf9, 0xa9, 0xf9, 0xb3, 0xf9, 0xaf, 0xf9, + 0xc7, 0xf9, 0xc5, 0xf9, 0xeb, 0xf9, 0xe9, 0xf9, 0x18, 0xfa, 0x15, 0xfa, + 0x52, 0xfa, 0x4f, 0xfa, 0x95, 0xfa, 0x93, 0xfa, 0xe2, 0xfa, 0xde, 0xfa, + 0x39, 0xfb, 0x38, 0xfb, 0x98, 0xfb, 0x94, 0xfb, 0xfd, 0xfb, 0xfb, 0xfb, + 0x68, 0xfc, 0x67, 0xfc, 0xd8, 0xfc, 0xd5, 0xfc, 0x4a, 0xfd, 0x48, 0xfd, + 0xbe, 0xfd, 0xba, 0xfd, 0x33, 0xfe, 0x32, 0xfe, 0xa9, 0xfe, 0xa5, 0xfe, + 0x1d, 0xff, 0x1c, 0xff, 0x8d, 0xff, 0x8a, 0xff, 0xf9, 0xff, 0xfb, 0xff, + 0x63, 0x00, 0x60, 0x00, 0xc6, 0x00, 0xc5, 0x00, 0x23, 0x01, 0x20, 0x01, + 0x78, 0x01, 0x78, 0x01, 0xc8, 0x01, 0xc4, 0x01, 0x0c, 0x02, 0x0d, 0x02, + 0x4d, 0x02, 0x4a, 0x02, 0x7f, 0x02, 0x7d, 0x02, 0xae, 0x02, 0xad, 0x02, + 0xd0, 0x02, 0xce, 0x02, 0xea, 0x02, 0xe9, 0x02, 0xfe, 0x02, 0xfe, 0x02, + 0x04, 0x03, 0x03, 0x03, 0x08, 0x03, 0x07, 0x03, 0xff, 0x02, 0xfd, 0x02, + 0xf2, 0x02, 0xf2, 0x02, 0xdd, 0x02, 0xdb, 0x02, 0xbf, 0x02, 0xbf, 0x02, + 0x9e, 0x02, 0x9c, 0x02, 0x75, 0x02, 0x74, 0x02, 0x4a, 0x02, 0x48, 0x02, + 0x16, 0x02, 0x16, 0x02, 0xe4, 0x01, 0xe2, 0x01, 0xab, 0x01, 0xaa, 0x01, + 0x72, 0x01, 0x70, 0x01, 0x36, 0x01, 0x35, 0x01, 0xf7, 0x00, 0xf6, 0x00, + 0xbb, 0x00, 0xb9, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x3f, 0x00, 0x3d, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xc5, 0xff, 0xc4, 0xff, 0x8d, 0xff, 0x8b, 0xff, + 0x50, 0xff, 0x50, 0xff, 0x1d, 0xff, 0x1b, 0xff, 0xe9, 0xfe, 0xe7, 0xfe, + 0xb8, 0xfe, 0xb7, 0xfe, 0x8c, 0xfe, 0x89, 0xfe, 0x62, 0xfe, 0x60, 0xfe, + 0x3d, 0xfe, 0x3b, 0xfe, 0x1c, 0xfe, 0x18, 0xfe, 0xfb, 0xfd, 0xfb, 0xfd, + 0xe3, 0xfd, 0xe0, 0xfd, 0xcc, 0xfd, 0xcc, 0xfd, 0xbd, 0xfd, 0xbc, 0xfd, + 0xb3, 0xfd, 0xb0, 0xfd, 0xaa, 0xfd, 0xa8, 0xfd, 0xaa, 0xfd, 0xa8, 0xfd, + 0xac, 0xfd, 0xab, 0xfd, 0xb6, 0xfd, 0xb4, 0xfd, 0xc5, 0xfd, 0xc1, 0xfd, + 0xd6, 0xfd, 0xd7, 0xfd, 0xf3, 0xfd, 0xf0, 0xfd, 0x0f, 0xfe, 0x0e, 0xfe, + 0x36, 0xfe, 0x34, 0xfe, 0x61, 0xfe, 0x5f, 0xfe, 0x90, 0xfe, 0x8f, 0xfe, + 0xc6, 0xfe, 0xc1, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x3e, 0xff, 0x3b, 0xff, + 0x81, 0xff, 0x81, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0x15, 0x00, 0x11, 0x00, + 0x62, 0x00, 0x62, 0x00, 0xb5, 0x00, 0xb2, 0x00, 0x0a, 0x01, 0x09, 0x01, + 0x5f, 0x01, 0x5d, 0x01, 0xbb, 0x01, 0xb8, 0x01, 0x11, 0x02, 0x0f, 0x02, + 0x6b, 0x02, 0x69, 0x02, 0xc3, 0x02, 0xc2, 0x02, 0x1a, 0x03, 0x17, 0x03, + 0x6e, 0x03, 0x6d, 0x03, 0xc0, 0x03, 0xbe, 0x03, 0x0d, 0x04, 0x0b, 0x04, + 0x57, 0x04, 0x55, 0x04, 0x9a, 0x04, 0x98, 0x04, 0xd9, 0x04, 0xd6, 0x04, + 0x0c, 0x05, 0x0b, 0x05, 0x3d, 0x05, 0x3b, 0x05, 0x61, 0x05, 0x5f, 0x05, + 0x7d, 0x05, 0x7d, 0x05, 0x93, 0x05, 0x8f, 0x05, 0x96, 0x05, 0x97, 0x05, + 0x9a, 0x05, 0x95, 0x05, 0x87, 0x05, 0x86, 0x05, 0x74, 0x05, 0x71, 0x05, + 0x4d, 0x05, 0x4b, 0x05, 0x1f, 0x05, 0x1e, 0x05, 0xe6, 0x04, 0xe3, 0x04, + 0xa0, 0x04, 0x9f, 0x04, 0x55, 0x04, 0x53, 0x04, 0xfb, 0x03, 0xfa, 0x03, + 0x9c, 0x03, 0x9a, 0x03, 0x31, 0x03, 0x2f, 0x03, 0xc2, 0x02, 0xbf, 0x02, + 0x4a, 0x02, 0x48, 0x02, 0xcd, 0x01, 0xca, 0x01, 0x4a, 0x01, 0x49, 0x01, + 0xc6, 0x00, 0xc3, 0x00, 0x41, 0x00, 0x40, 0x00, 0xb8, 0xff, 0xb6, 0xff, + 0x35, 0xff, 0x33, 0xff, 0xb0, 0xfe, 0xae, 0xfe, 0x30, 0xfe, 0x2e, 0xfe, + 0xb6, 0xfd, 0xb4, 0xfd, 0x3f, 0xfd, 0x3d, 0xfd, 0xd5, 0xfc, 0xd2, 0xfc, + 0x6a, 0xfc, 0x6a, 0xfc, 0x11, 0xfc, 0x0d, 0xfc, 0xbd, 0xfb, 0xbc, 0xfb, + 0x74, 0xfb, 0x72, 0xfb, 0x3b, 0xfb, 0x39, 0xfb, 0x0a, 0xfb, 0x07, 0xfb, + 0xea, 0xfa, 0xe9, 0xfa, 0xd3, 0xfa, 0xd0, 0xfa, 0xca, 0xfa, 0xca, 0xfa, + 0xcf, 0xfa, 0xcb, 0xfa, 0xe2, 0xfa, 0xe0, 0xfa, 0xfe, 0xfa, 0xfd, 0xfa, + 0x2e, 0xfb, 0x28, 0xfb, 0x5f, 0xfb, 0x60, 0xfb, 0xa5, 0xfb, 0xa2, 0xfb, + 0xf1, 0xfb, 0xee, 0xfb, 0x46, 0xfc, 0x45, 0xfc, 0xa3, 0xfc, 0xa1, 0xfc, + 0x0b, 0xfd, 0x08, 0xfd, 0x75, 0xfd, 0x75, 0xfd, 0xe8, 0xfd, 0xe4, 0xfd, + 0x5d, 0xfe, 0x5c, 0xfe, 0xd6, 0xfe, 0xd3, 0xfe, 0x50, 0xff, 0x4e, 0xff, + 0xc9, 0xff, 0xc6, 0xff, 0x42, 0x00, 0x3f, 0x00, 0xb7, 0x00, 0xb5, 0x00, + 0x2a, 0x01, 0x28, 0x01, 0x98, 0x01, 0x95, 0x01, 0x01, 0x02, 0xff, 0x01, + 0x62, 0x02, 0x60, 0x02, 0xbd, 0x02, 0xbb, 0x02, 0x10, 0x03, 0x0e, 0x03, + 0x56, 0x03, 0x55, 0x03, 0x99, 0x03, 0x97, 0x03, 0xcc, 0x03, 0xc8, 0x03, + 0xf8, 0x03, 0xf9, 0x03, 0x19, 0x04, 0x15, 0x04, 0x2d, 0x04, 0x2d, 0x04, + 0x3a, 0x04, 0x37, 0x04, 0x38, 0x04, 0x37, 0x04, 0x2e, 0x04, 0x2d, 0x04, + 0x19, 0x04, 0x17, 0x04, 0xfb, 0x03, 0xf8, 0x03, 0xcf, 0x03, 0xd1, 0x03, + 0xa1, 0x03, 0x9d, 0x03, 0x64, 0x03, 0x64, 0x03, 0x26, 0x03, 0x23, 0x03, + 0xd9, 0x02, 0xd7, 0x02, 0x8b, 0x02, 0x8a, 0x02, 0x36, 0x02, 0x35, 0x02, + 0xdb, 0x01, 0xd8, 0x01, 0x7e, 0x01, 0x7e, 0x01, 0x1c, 0x01, 0x1b, 0x01, + 0xba, 0x00, 0xb9, 0x00, 0x54, 0x00, 0x54, 0x00, 0xef, 0xff, 0xef, 0xff, + 0x8a, 0xff, 0x89, 0xff, 0x22, 0xff, 0x21, 0xff, 0xc2, 0xfe, 0xc0, 0xfe, + 0x5d, 0xfe, 0x5c, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0xa2, 0xfd, 0xa0, 0xfd, + 0x48, 0xfd, 0x47, 0xfd, 0xf3, 0xfc, 0xf1, 0xfc, 0xa3, 0xfc, 0xa1, 0xfc, + 0x54, 0xfc, 0x55, 0xfc, 0x10, 0xfc, 0x0d, 0xfc, 0xcd, 0xfb, 0xca, 0xfb, + 0x92, 0xfb, 0x90, 0xfb, 0x59, 0xfb, 0x59, 0xfb, 0x2b, 0xfb, 0x28, 0xfb, + 0x00, 0xfb, 0xff, 0xfa, 0xde, 0xfa, 0xdb, 0xfa, 0xc1, 0xfa, 0xbf, 0xfa, + 0xaa, 0xfa, 0xa8, 0xfa, 0x9c, 0xfa, 0x9a, 0xfa, 0x93, 0xfa, 0x8f, 0xfa, + 0x93, 0xfa, 0x92, 0xfa, 0x98, 0xfa, 0x96, 0xfa, 0xa8, 0xfa, 0xa5, 0xfa, + 0xbe, 0xfa, 0xbd, 0xfa, 0xd7, 0xfa, 0xd4, 0xfa, 0xfd, 0xfa, 0xfc, 0xfa, + 0x28, 0xfb, 0x25, 0xfb, 0x5a, 0xfb, 0x59, 0xfb, 0x95, 0xfb, 0x94, 0xfb, + 0xd5, 0xfb, 0xd2, 0xfb, 0x1c, 0xfc, 0x1b, 0xfc, 0x6b, 0xfc, 0x68, 0xfc, + 0xbc, 0xfc, 0xbc, 0xfc, 0x1a, 0xfd, 0x16, 0xfd, 0x76, 0xfd, 0x77, 0xfd, + 0xdd, 0xfd, 0xd8, 0xfd, 0x45, 0xfe, 0x45, 0xfe, 0xb3, 0xfe, 0xb1, 0xfe, + 0x22, 0xff, 0x22, 0xff, 0x96, 0xff, 0x94, 0xff, 0x0c, 0x00, 0x0a, 0x00, + 0x83, 0x00, 0x80, 0x00, 0xf8, 0x00, 0xf6, 0x00, 0x6e, 0x01, 0x6d, 0x01, + 0xe3, 0x01, 0xe0, 0x01, 0x55, 0x02, 0x55, 0x02, 0xc3, 0x02, 0xc0, 0x02, + 0x2b, 0x03, 0x2a, 0x03, 0x91, 0x03, 0x8e, 0x03, 0xed, 0x03, 0xeb, 0x03, + 0x46, 0x04, 0x42, 0x04, 0x92, 0x04, 0x91, 0x04, 0xd8, 0x04, 0xd7, 0x04, + 0x15, 0x05, 0x13, 0x05, 0x46, 0x05, 0x45, 0x05, 0x6e, 0x05, 0x6c, 0x05, + 0x8b, 0x05, 0x88, 0x05, 0x9a, 0x05, 0x9a, 0x05, 0xa2, 0x05, 0x9f, 0x05, + 0x95, 0x05, 0x95, 0x05, 0x86, 0x05, 0x84, 0x05, 0x64, 0x05, 0x62, 0x05, + 0x3a, 0x05, 0x39, 0x05, 0x03, 0x05, 0x01, 0x05, 0xc4, 0x04, 0xc3, 0x04, + 0x78, 0x04, 0x77, 0x04, 0x24, 0x04, 0x24, 0x04, 0xc7, 0x03, 0xc5, 0x03, + 0x63, 0x03, 0x61, 0x03, 0xf5, 0x02, 0xf5, 0x02, 0x85, 0x02, 0x83, 0x02, + 0x0e, 0x02, 0x0d, 0x02, 0x96, 0x01, 0x93, 0x01, 0x1b, 0x01, 0x1b, 0x01, + 0x9f, 0x00, 0x9e, 0x00, 0x26, 0x00, 0x24, 0x00, 0xac, 0xff, 0xaa, 0xff, + 0x39, 0xff, 0x37, 0xff, 0xc6, 0xfe, 0xc5, 0xfe, 0x5b, 0xfe, 0x5a, 0xfe, + 0xf7, 0xfd, 0xf4, 0xfd, 0x9b, 0xfd, 0x98, 0xfd, 0x48, 0xfd, 0x47, 0xfd, + 0xfd, 0xfc, 0xfb, 0xfc, 0xc0, 0xfc, 0xbf, 0xfc, 0x8b, 0xfc, 0x8a, 0xfc, + 0x66, 0xfc, 0x62, 0xfc, 0x4a, 0xfc, 0x49, 0xfc, 0x3c, 0xfc, 0x39, 0xfc, + 0x39, 0xfc, 0x38, 0xfc, 0x43, 0xfc, 0x40, 0xfc, 0x5a, 0xfc, 0x58, 0xfc, + 0x7d, 0xfc, 0x7a, 0xfc, 0xaa, 0xfc, 0xa8, 0xfc, 0xe1, 0xfc, 0xde, 0xfc, + 0x25, 0xfd, 0x23, 0xfd, 0x6f, 0xfd, 0x6d, 0xfd, 0xc4, 0xfd, 0xc0, 0xfd, + 0x1e, 0xfe, 0x1d, 0xfe, 0x7f, 0xfe, 0x7b, 0xfe, 0xe8, 0xfe, 0xe7, 0xfe, + 0x4f, 0xff, 0x4d, 0xff, 0xbd, 0xff, 0xba, 0xff, 0x29, 0x00, 0x28, 0x00, + 0x98, 0x00, 0x96, 0x00, 0x05, 0x01, 0x03, 0x01, 0x6e, 0x01, 0x6e, 0x01, + 0xda, 0x01, 0xd6, 0x01, 0x39, 0x02, 0x38, 0x02, 0x98, 0x02, 0x97, 0x02, + 0xee, 0x02, 0xee, 0x02, 0x40, 0x03, 0x3d, 0x03, 0x89, 0x03, 0x88, 0x03, + 0xc5, 0x03, 0xc4, 0x03, 0xfe, 0x03, 0xfd, 0x03, 0x2d, 0x04, 0x2a, 0x04, + 0x4f, 0x04, 0x4e, 0x04, 0x6a, 0x04, 0x69, 0x04, 0x7b, 0x04, 0x79, 0x04, + 0x80, 0x04, 0x80, 0x04, 0x7e, 0x04, 0x7b, 0x04, 0x72, 0x04, 0x71, 0x04, + 0x5c, 0x04, 0x5a, 0x04, 0x3d, 0x04, 0x3c, 0x04, 0x18, 0x04, 0x16, 0x04, + 0xea, 0x03, 0xe9, 0x03, 0xb4, 0x03, 0xb3, 0x03, 0x79, 0x03, 0x78, 0x03, + 0x38, 0x03, 0x37, 0x03, 0xf2, 0x02, 0xf1, 0x02, 0xa8, 0x02, 0xa8, 0x02, + 0x59, 0x02, 0x58, 0x02, 0x0b, 0x02, 0x0a, 0x02, 0xb7, 0x01, 0xb5, 0x01, + 0x62, 0x01, 0x61, 0x01, 0x0d, 0x01, 0x0d, 0x01, 0xb7, 0x00, 0xb4, 0x00, + 0x62, 0x00, 0x60, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0xbc, 0xff, 0xba, 0xff, + 0x6b, 0xff, 0x6a, 0xff, 0x1d, 0xff, 0x1b, 0xff, 0xd1, 0xfe, 0xd1, 0xfe, + 0x8a, 0xfe, 0x88, 0xfe, 0x44, 0xfe, 0x43, 0xfe, 0x03, 0xfe, 0x01, 0xfe, + 0xc6, 0xfd, 0xc5, 0xfd, 0x8f, 0xfd, 0x8b, 0xfd, 0x58, 0xfd, 0x59, 0xfd, + 0x29, 0xfd, 0x26, 0xfd, 0xfe, 0xfc, 0xfb, 0xfc, 0xd5, 0xfc, 0xd5, 0xfc, + 0xb6, 0xfc, 0xb2, 0xfc, 0x96, 0xfc, 0x95, 0xfc, 0x81, 0xfc, 0x80, 0xfc, + 0x6c, 0xfc, 0x69, 0xfc, 0x5f, 0xfc, 0x5e, 0xfc, 0x56, 0xfc, 0x53, 0xfc, + 0x55, 0xfc, 0x54, 0xfc, 0x54, 0xfc, 0x52, 0xfc, 0x5e, 0xfc, 0x5d, 0xfc, + 0x6a, 0xfc, 0x68, 0xfc, 0x7b, 0xfc, 0x7a, 0xfc, 0x95, 0xfc, 0x92, 0xfc, + 0xb0, 0xfc, 0xaf, 0xfc, 0xd3, 0xfc, 0xd0, 0xfc, 0xfa, 0xfc, 0xf9, 0xfc, + 0x25, 0xfd, 0x22, 0xfd, 0x56, 0xfd, 0x54, 0xfd, 0x89, 0xfd, 0x86, 0xfd, + 0xc5, 0xfd, 0xc3, 0xfd, 0xff, 0xfd, 0xfe, 0xfd, 0x41, 0xfe, 0x3e, 0xfe, + 0x84, 0xfe, 0x81, 0xfe, 0xcb, 0xfe, 0xca, 0xfe, 0x14, 0xff, 0x12, 0xff, + 0x5e, 0xff, 0x5c, 0xff, 0xab, 0xff, 0xa9, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0x44, 0x00, 0x44, 0x00, 0x90, 0x00, 0x8f, 0x00, 0xde, 0x00, 0xdd, 0x00, + 0x27, 0x01, 0x24, 0x01, 0x6d, 0x01, 0x6c, 0x01, 0xb1, 0x01, 0xb0, 0x01, + 0xed, 0x01, 0xec, 0x01, 0x28, 0x02, 0x26, 0x02, 0x5a, 0x02, 0x59, 0x02, + 0x8a, 0x02, 0x88, 0x02, 0xad, 0x02, 0xac, 0x02, 0xcb, 0x02, 0xc9, 0x02, + 0xe0, 0x02, 0xdf, 0x02, 0xea, 0x02, 0xe9, 0x02, 0xef, 0x02, 0xee, 0x02, + 0xe7, 0x02, 0xe4, 0x02, 0xd3, 0x02, 0xd3, 0x02, 0xbb, 0x02, 0xba, 0x02, + 0x93, 0x02, 0x92, 0x02, 0x66, 0x02, 0x65, 0x02, 0x2c, 0x02, 0x29, 0x02, + 0xe8, 0x01, 0xe9, 0x01, 0xa0, 0x01, 0x9e, 0x01, 0x49, 0x01, 0x48, 0x01, + 0xef, 0x00, 0xf0, 0x00, 0x8f, 0x00, 0x8d, 0x00, 0x26, 0x00, 0x24, 0x00, + 0xbb, 0xff, 0xb9, 0xff, 0x47, 0xff, 0x47, 0xff, 0xd8, 0xfe, 0xd6, 0xfe, + 0x60, 0xfe, 0x60, 0xfe, 0xeb, 0xfd, 0xea, 0xfd, 0x7a, 0xfd, 0x78, 0xfd, + 0x05, 0xfd, 0x04, 0xfd, 0x9a, 0xfc, 0x99, 0xfc, 0x31, 0xfc, 0x2f, 0xfc, + 0xce, 0xfb, 0xcd, 0xfb, 0x74, 0xfb, 0x72, 0xfb, 0x21, 0xfb, 0x1f, 0xfb, + 0xd8, 0xfa, 0xd7, 0xfa, 0x9a, 0xfa, 0x99, 0xfa, 0x67, 0xfa, 0x66, 0xfa, + 0x40, 0xfa, 0x3f, 0xfa, 0x26, 0xfa, 0x25, 0xfa, 0x1a, 0xfa, 0x19, 0xfa, + 0x1c, 0xfa, 0x19, 0xfa, 0x2a, 0xfa, 0x29, 0xfa, 0x45, 0xfa, 0x45, 0xfa, + 0x71, 0xfa, 0x6f, 0xfa, 0xa8, 0xfa, 0xa7, 0xfa, 0xec, 0xfa, 0xec, 0xfa, + 0x3c, 0xfb, 0x3a, 0xfb, 0x97, 0xfb, 0x95, 0xfb, 0xff, 0xfb, 0xfe, 0xfb, + 0x70, 0xfc, 0x6f, 0xfc, 0xe9, 0xfc, 0xe8, 0xfc, 0x6a, 0xfd, 0x6a, 0xfd, + 0xf2, 0xfd, 0xf0, 0xfd, 0x7f, 0xfe, 0x80, 0xfe, 0x0f, 0xff, 0x0d, 0xff, + 0xa3, 0xff, 0xa3, 0xff, 0x37, 0x00, 0x37, 0x00, 0xcb, 0x00, 0xca, 0x00, + 0x5e, 0x01, 0x5f, 0x01, 0xec, 0x01, 0xeb, 0x01, 0x77, 0x02, 0x76, 0x02, + 0xfc, 0x02, 0xfb, 0x02, 0x7a, 0x03, 0x7b, 0x03, 0xee, 0x03, 0xee, 0x03, + 0x5f, 0x04, 0x5e, 0x04, 0xc1, 0x04, 0xc1, 0x04, 0x1c, 0x05, 0x1c, 0x05, + 0x6b, 0x05, 0x6a, 0x05, 0xac, 0x05, 0xad, 0x05, 0xe6, 0x05, 0xe5, 0x05, + 0x10, 0x06, 0x10, 0x06, 0x2f, 0x06, 0x2e, 0x06, 0x44, 0x06, 0x43, 0x06, + 0x4b, 0x06, 0x4a, 0x06, 0x47, 0x06, 0x47, 0x06, 0x38, 0x06, 0x36, 0x06, + 0x1f, 0x06, 0x1e, 0x06, 0xf9, 0x05, 0xf7, 0x05, 0xcb, 0x05, 0xcb, 0x05, + 0x94, 0x05, 0x91, 0x05, 0x54, 0x05, 0x53, 0x05, 0x0d, 0x05, 0x0b, 0x05, + 0xbf, 0x04, 0xbf, 0x04, 0x6a, 0x04, 0x6a, 0x04, 0x13, 0x04, 0x12, 0x04, + 0xb6, 0x03, 0xb6, 0x03, 0x56, 0x03, 0x55, 0x03, 0xf4, 0x02, 0xf1, 0x02, + 0x90, 0x02, 0x8d, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0xc7, 0x01, 0xc3, 0x01, + 0x62, 0x01, 0x63, 0x01, 0x00, 0x01, 0xfe, 0x00, 0x9e, 0x00, 0x9d, 0x00, + 0x43, 0x00, 0x41, 0x00, 0xe6, 0xff, 0xe3, 0xff, 0x90, 0xff, 0x8f, 0xff, + 0x3a, 0xff, 0x39, 0xff, 0xeb, 0xfe, 0xe9, 0xfe, 0xa1, 0xfe, 0xa1, 0xfe, + 0x59, 0xfe, 0x58, 0xfe, 0x1b, 0xfe, 0x19, 0xfe, 0xdc, 0xfd, 0xdd, 0xfd, + 0xa8, 0xfd, 0xa5, 0xfd, 0x77, 0xfd, 0x79, 0xfd, 0x4d, 0xfd, 0x4a, 0xfd, + 0x28, 0xfd, 0x28, 0xfd, 0x09, 0xfd, 0x08, 0xfd, 0xef, 0xfc, 0xed, 0xfc, + 0xdc, 0xfc, 0xdc, 0xfc, 0xce, 0xfc, 0xcd, 0xfc, 0xca, 0xfc, 0xc7, 0xfc, + 0xc9, 0xfc, 0xc9, 0xfc, 0xcf, 0xfc, 0xcd, 0xfc, 0xdd, 0xfc, 0xdb, 0xfc, + 0xec, 0xfc, 0xee, 0xfc, 0x09, 0xfd, 0x07, 0xfd, 0x26, 0xfd, 0x24, 0xfd, + 0x4a, 0xfd, 0x4c, 0xfd, 0x78, 0xfd, 0x74, 0xfd, 0xa6, 0xfd, 0xa7, 0xfd, + 0xdf, 0xfd, 0xde, 0xfd, 0x1c, 0xfe, 0x1a, 0xfe, 0x5d, 0xfe, 0x5d, 0xfe, + 0xa6, 0xfe, 0xa4, 0xfe, 0xef, 0xfe, 0xef, 0xfe, 0x41, 0xff, 0x42, 0xff, + 0x96, 0xff, 0x93, 0xff, 0xec, 0xff, 0xec, 0xff, 0x49, 0x00, 0x47, 0x00, + 0xa4, 0x00, 0xa3, 0x00, 0x03, 0x01, 0x01, 0x01, 0x62, 0x01, 0x60, 0x01, + 0xbf, 0x01, 0xbf, 0x01, 0x20, 0x02, 0x1f, 0x02, 0x7b, 0x02, 0x7a, 0x02, + 0xd6, 0x02, 0xd6, 0x02, 0x2e, 0x03, 0x2d, 0x03, 0x80, 0x03, 0x80, 0x03, + 0xce, 0x03, 0xce, 0x03, 0x15, 0x04, 0x13, 0x04, 0x56, 0x04, 0x56, 0x04, + 0x8c, 0x04, 0x8c, 0x04, 0xbe, 0x04, 0xbd, 0x04, 0xe3, 0x04, 0xe3, 0x04, + 0xff, 0x04, 0xff, 0x04, 0x10, 0x05, 0x11, 0x05, 0x15, 0x05, 0x15, 0x05, + 0x12, 0x05, 0x10, 0x05, 0xfe, 0x04, 0xfe, 0x04, 0xe1, 0x04, 0xdf, 0x04, + 0xb7, 0x04, 0xb7, 0x04, 0x83, 0x04, 0x82, 0x04, 0x40, 0x04, 0x3f, 0x04, + 0xf5, 0x03, 0xf4, 0x03, 0x9b, 0x03, 0x9d, 0x03, 0x3e, 0x03, 0x3b, 0x03, + 0xd0, 0x02, 0xd1, 0x02, 0x5e, 0x02, 0x5d, 0x02, 0xe3, 0x01, 0xe3, 0x01, + 0x62, 0x01, 0x61, 0x01, 0xdc, 0x00, 0xdb, 0x00, 0x50, 0x00, 0x50, 0x00, + 0xc3, 0xff, 0xc3, 0xff, 0x35, 0xff, 0x35, 0xff, 0xa7, 0xfe, 0xa7, 0xfe, + 0x19, 0xfe, 0x19, 0xfe, 0x90, 0xfd, 0x8e, 0xfd, 0x08, 0xfd, 0x09, 0xfd, + 0x89, 0xfc, 0x88, 0xfc, 0x0d, 0xfc, 0x0d, 0xfc, 0x9e, 0xfb, 0x9d, 0xfb, + 0x35, 0xfb, 0x33, 0xfb, 0xd6, 0xfa, 0xd5, 0xfa, 0x83, 0xfa, 0x85, 0xfa, + 0x3c, 0xfa, 0x3a, 0xfa, 0x03, 0xfa, 0x02, 0xfa, 0xd3, 0xf9, 0xd2, 0xf9, + 0xb6, 0xf9, 0xb3, 0xf9, 0xa4, 0xf9, 0xa3, 0xf9, 0x9d, 0xf9, 0x9c, 0xf9, + 0xa8, 0xf9, 0xa6, 0xf9, 0xbc, 0xf9, 0xb9, 0xf9, 0xe1, 0xf9, 0xe1, 0xf9, + 0x0f, 0xfa, 0x0b, 0xfa, 0x49, 0xfa, 0x4a, 0xfa, 0x94, 0xfa, 0x91, 0xfa, + 0xdf, 0xfa, 0xe0, 0xfa, 0x3d, 0xfb, 0x3b, 0xfb, 0x9d, 0xfb, 0x9c, 0xfb, + 0x06, 0xfc, 0x06, 0xfc, 0x75, 0xfc, 0x74, 0xfc, 0xe6, 0xfc, 0xe5, 0xfc, + 0x5d, 0xfd, 0x5c, 0xfd, 0xd4, 0xfd, 0xd2, 0xfd, 0x4c, 0xfe, 0x4b, 0xfe, + 0xc3, 0xfe, 0xc2, 0xfe, 0x37, 0xff, 0x37, 0xff, 0xaa, 0xff, 0xa9, 0xff, + 0x16, 0x00, 0x16, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0xe0, 0x00, 0xe0, 0x00, + 0x39, 0x01, 0x37, 0x01, 0x8c, 0x01, 0x8a, 0x01, 0xd5, 0x01, 0xd6, 0x01, + 0x16, 0x02, 0x13, 0x02, 0x4d, 0x02, 0x4e, 0x02, 0x79, 0x02, 0x78, 0x02, + 0x9e, 0x02, 0x9c, 0x02, 0xb7, 0x02, 0xb6, 0x02, 0xc5, 0x02, 0xc6, 0x02, + 0xce, 0x02, 0xcc, 0x02, 0xc9, 0x02, 0xc9, 0x02, 0xc0, 0x02, 0xbe, 0x02, + 0xac, 0x02, 0xab, 0x02, 0x90, 0x02, 0x8e, 0x02, 0x6e, 0x02, 0x6d, 0x02, + 0x44, 0x02, 0x43, 0x02, 0x17, 0x02, 0x15, 0x02, 0xe2, 0x01, 0xe0, 0x01, + 0xaa, 0x01, 0xa9, 0x01, 0x6f, 0x01, 0x6e, 0x01, 0x2e, 0x01, 0x2d, 0x01, + 0xf0, 0x00, 0xef, 0x00, 0xae, 0x00, 0xac, 0x00, 0x6d, 0x00, 0x6d, 0x00, + 0x2a, 0x00, 0x27, 0x00, 0xe7, 0xff, 0xe7, 0xff, 0xa8, 0xff, 0xa7, 0xff, + 0x6b, 0xff, 0x68, 0xff, 0x2d, 0xff, 0x2e, 0xff, 0xf5, 0xfe, 0xf1, 0xfe, + 0xbd, 0xfe, 0xbe, 0xfe, 0x8a, 0xfe, 0x89, 0xfe, 0x5c, 0xfe, 0x5b, 0xfe, + 0x2d, 0xfe, 0x2d, 0xfe, 0x0a, 0xfe, 0x07, 0xfe, 0xe3, 0xfd, 0xe2, 0xfd, + 0xc5, 0xfd, 0xc4, 0xfd, 0xab, 0xfd, 0xaa, 0xfd, 0x94, 0xfd, 0x93, 0xfd, + 0x84, 0xfd, 0x83, 0xfd, 0x76, 0xfd, 0x76, 0xfd, 0x6f, 0xfd, 0x6d, 0xfd, + 0x6d, 0xfd, 0x6c, 0xfd, 0x6b, 0xfd, 0x6a, 0xfd, 0x74, 0xfd, 0x70, 0xfd, + 0x7b, 0xfd, 0x79, 0xfd, 0x89, 0xfd, 0x89, 0xfd, 0x9d, 0xfd, 0x9d, 0xfd, + 0xb4, 0xfd, 0xb1, 0xfd, 0xd3, 0xfd, 0xd2, 0xfd, 0xf3, 0xfd, 0xf3, 0xfd, + 0x18, 0xfe, 0x17, 0xfe, 0x46, 0xfe, 0x44, 0xfe, 0x71, 0xfe, 0x70, 0xfe, + 0xa9, 0xfe, 0xa8, 0xfe, 0xdc, 0xfe, 0xdb, 0xfe, 0x1a, 0xff, 0x17, 0xff, + 0x57, 0xff, 0x56, 0xff, 0x9a, 0xff, 0x98, 0xff, 0xe1, 0xff, 0xe0, 0xff, + 0x2a, 0x00, 0x29, 0x00, 0x78, 0x00, 0x76, 0x00, 0xc6, 0x00, 0xc5, 0x00, + 0x18, 0x01, 0x17, 0x01, 0x69, 0x01, 0x67, 0x01, 0xbf, 0x01, 0xbd, 0x01, + 0x12, 0x02, 0x12, 0x02, 0x69, 0x02, 0x69, 0x02, 0xbc, 0x02, 0xbb, 0x02, + 0x10, 0x03, 0x0f, 0x03, 0x62, 0x03, 0x5f, 0x03, 0xaf, 0x03, 0xb0, 0x03, + 0xfd, 0x03, 0xf8, 0x03, 0x40, 0x04, 0x41, 0x04, 0x83, 0x04, 0x7f, 0x04, + 0xbb, 0x04, 0xbd, 0x04, 0xf2, 0x04, 0xf1, 0x04, 0x1e, 0x05, 0x1c, 0x05, + 0x42, 0x05, 0x42, 0x05, 0x5f, 0x05, 0x5d, 0x05, 0x6f, 0x05, 0x6e, 0x05, + 0x78, 0x05, 0x77, 0x05, 0x74, 0x05, 0x75, 0x05, 0x6a, 0x05, 0x68, 0x05, + 0x50, 0x05, 0x4f, 0x05, 0x2f, 0x05, 0x2f, 0x05, 0x01, 0x05, 0xfe, 0x04, + 0xc8, 0x04, 0xc9, 0x04, 0x86, 0x04, 0x83, 0x04, 0x36, 0x04, 0x38, 0x04, + 0xe3, 0x03, 0xe0, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x18, 0x03, 0x19, 0x03, + 0xa9, 0x02, 0xa8, 0x02, 0x31, 0x02, 0x31, 0x02, 0xb8, 0x01, 0xb6, 0x01, + 0x35, 0x01, 0x34, 0x01, 0xb1, 0x00, 0xb1, 0x00, 0x2d, 0x00, 0x2b, 0x00, + 0xa5, 0xff, 0xa6, 0xff, 0x23, 0xff, 0x22, 0xff, 0xa0, 0xfe, 0x9e, 0xfe, + 0x23, 0xfe, 0x23, 0xfe, 0xa9, 0xfd, 0xa7, 0xfd, 0x37, 0xfd, 0x36, 0xfd, + 0xcb, 0xfc, 0xcb, 0xfc, 0x6b, 0xfc, 0x69, 0xfc, 0x12, 0xfc, 0x12, 0xfc, + 0xc6, 0xfb, 0xc4, 0xfb, 0x84, 0xfb, 0x84, 0xfb, 0x4f, 0xfb, 0x4f, 0xfb, + 0x29, 0xfb, 0x28, 0xfb, 0x0e, 0xfb, 0x0e, 0xfb, 0x02, 0xfb, 0xff, 0xfa, + 0x04, 0xfb, 0x03, 0xfb, 0x13, 0xfb, 0x11, 0xfb, 0x30, 0xfb, 0x30, 0xfb, + 0x5b, 0xfb, 0x59, 0xfb, 0x91, 0xfb, 0x91, 0xfb, 0xd7, 0xfb, 0xd5, 0xfb, + 0x22, 0xfc, 0x23, 0xfc, 0x7f, 0xfc, 0x7d, 0xfc, 0xde, 0xfc, 0xe0, 0xfc, + 0x4e, 0xfd, 0x4b, 0xfd, 0xbd, 0xfd, 0xbd, 0xfd, 0x36, 0xfe, 0x36, 0xfe, + 0xb4, 0xfe, 0xb1, 0xfe, 0x32, 0xff, 0x31, 0xff, 0xb6, 0xff, 0xb4, 0xff, + 0x34, 0x00, 0x35, 0x00, 0xba, 0x00, 0xb7, 0x00, 0x35, 0x01, 0x34, 0x01, + 0xb0, 0x01, 0xb0, 0x01, 0x26, 0x02, 0x26, 0x02, 0x96, 0x02, 0x93, 0x02, + 0xfe, 0x02, 0xfe, 0x02, 0x5d, 0x03, 0x5d, 0x03, 0xb5, 0x03, 0xb4, 0x03, + 0x01, 0x04, 0x00, 0x04, 0x42, 0x04, 0x40, 0x04, 0x7a, 0x04, 0x7a, 0x04, + 0xa6, 0x04, 0xa4, 0x04, 0xc5, 0x04, 0xc5, 0x04, 0xd8, 0x04, 0xd6, 0x04, + 0xdf, 0x04, 0xde, 0x04, 0xda, 0x04, 0xd7, 0x04, 0xca, 0x04, 0xc9, 0x04, + 0xab, 0x04, 0xac, 0x04, 0x87, 0x04, 0x85, 0x04, 0x54, 0x04, 0x55, 0x04, + 0x1b, 0x04, 0x19, 0x04, 0xd7, 0x03, 0xd7, 0x03, 0x88, 0x03, 0x88, 0x03, + 0x37, 0x03, 0x36, 0x03, 0xdb, 0x02, 0xdb, 0x02, 0x7b, 0x02, 0x7a, 0x02, + 0x17, 0x02, 0x16, 0x02, 0xad, 0x01, 0xae, 0x01, 0x44, 0x01, 0x43, 0x01, + 0xd5, 0x00, 0xd5, 0x00, 0x69, 0x00, 0x68, 0x00, 0xf9, 0xff, 0xf8, 0xff, + 0x8d, 0xff, 0x8d, 0xff, 0x1f, 0xff, 0x1e, 0xff, 0xb5, 0xfe, 0xb6, 0xfe, + 0x50, 0xfe, 0x4f, 0xfe, 0xee, 0xfd, 0xef, 0xfd, 0x8f, 0xfd, 0x8f, 0xfd, + 0x35, 0xfd, 0x35, 0xfd, 0xdf, 0xfc, 0xdf, 0xfc, 0x8a, 0xfc, 0x8c, 0xfc, + 0x43, 0xfc, 0x43, 0xfc, 0xf9, 0xfb, 0xf8, 0xfb, 0xba, 0xfb, 0xbb, 0xfb, + 0x7e, 0xfb, 0x80, 0xfb, 0x49, 0xfb, 0x48, 0xfb, 0x1c, 0xfb, 0x1d, 0xfb, + 0xf1, 0xfa, 0xf1, 0xfa, 0xd0, 0xfa, 0xd1, 0xfa, 0xb4, 0xfa, 0xb3, 0xfa, + 0x9c, 0xfa, 0x9d, 0xfa, 0x8e, 0xfa, 0x8e, 0xfa, 0x86, 0xfa, 0x86, 0xfa, + 0x83, 0xfa, 0x84, 0xfa, 0x86, 0xfa, 0x87, 0xfa, 0x92, 0xfa, 0x91, 0xfa, + 0xa1, 0xfa, 0xa3, 0xfa, 0xbc, 0xfa, 0xba, 0xfa, 0xd9, 0xfa, 0xda, 0xfa, + 0xff, 0xfa, 0xfe, 0xfa, 0x2b, 0xfb, 0x2c, 0xfb, 0x5b, 0xfb, 0x5a, 0xfb, + 0x96, 0xfb, 0x96, 0xfb, 0xd4, 0xfb, 0xd4, 0xfb, 0x1a, 0xfc, 0x19, 0xfc, + 0x65, 0xfc, 0x66, 0xfc, 0xb7, 0xfc, 0xb6, 0xfc, 0x0e, 0xfd, 0x0e, 0xfd, + 0x6a, 0xfd, 0x69, 0xfd, 0xcb, 0xfd, 0xca, 0xfd, 0x31, 0xfe, 0x2f, 0xfe, + 0x9b, 0xfe, 0x99, 0xfe, 0x08, 0xff, 0x08, 0xff, 0x78, 0xff, 0x76, 0xff, + 0xea, 0xff, 0xe9, 0xff, 0x5d, 0x00, 0x5b, 0x00, 0xd0, 0x00, 0xcf, 0x00, + 0x44, 0x01, 0x42, 0x01, 0xb5, 0x01, 0xb3, 0x01, 0x23, 0x02, 0x21, 0x02, + 0x90, 0x02, 0x8e, 0x02, 0xf6, 0x02, 0xf5, 0x02, 0x5a, 0x03, 0x57, 0x03, + 0xb2, 0x03, 0xb2, 0x03, 0x0b, 0x04, 0x08, 0x04, 0x51, 0x04, 0x51, 0x04, + 0x98, 0x04, 0x95, 0x04, 0xce, 0x04, 0xcd, 0x04, 0xfe, 0x04, 0xfe, 0x04, + 0x23, 0x05, 0x22, 0x05, 0x3b, 0x05, 0x39, 0x05, 0x47, 0x05, 0x47, 0x05, + 0x47, 0x05, 0x45, 0x05, 0x39, 0x05, 0x37, 0x05, 0x21, 0x05, 0x21, 0x05, + 0xff, 0x04, 0xfc, 0x04, 0xcc, 0x04, 0xcc, 0x04, 0x91, 0x04, 0x8f, 0x04, + 0x4b, 0x04, 0x4a, 0x04, 0xf8, 0x03, 0xf8, 0x03, 0xa1, 0x03, 0x9f, 0x03, + 0x3b, 0x03, 0x3a, 0x03, 0xd1, 0x02, 0xd0, 0x02, 0x60, 0x02, 0x5f, 0x02, + 0xe8, 0x01, 0xe8, 0x01, 0x71, 0x01, 0x6f, 0x01, 0xef, 0x00, 0xf0, 0x00, + 0x74, 0x00, 0x72, 0x00, 0xf4, 0xff, 0xf4, 0xff, 0x7b, 0xff, 0x7a, 0xff, + 0x00, 0xff, 0xfd, 0xfe, 0x8c, 0xfe, 0x8a, 0xfe, 0x1a, 0xfe, 0x1b, 0xfe, + 0xb2, 0xfd, 0xb1, 0xfd, 0x53, 0xfd, 0x53, 0xfd, 0xf9, 0xfc, 0xf8, 0xfc, + 0xae, 0xfc, 0xae, 0xfc, 0x6d, 0xfc, 0x6a, 0xfc, 0x36, 0xfc, 0x36, 0xfc, + 0x0e, 0xfc, 0x0c, 0xfc, 0xf0, 0xfb, 0xf0, 0xfb, 0xe2, 0xfb, 0xe0, 0xfb, + 0xde, 0xfb, 0xdf, 0xfb, 0xec, 0xfb, 0xea, 0xfb, 0x02, 0xfc, 0x03, 0xfc, + 0x29, 0xfc, 0x26, 0xfc, 0x5a, 0xfc, 0x59, 0xfc, 0x96, 0xfc, 0x94, 0xfc, + 0xdf, 0xfc, 0xdf, 0xfc, 0x2f, 0xfd, 0x2d, 0xfd, 0x8c, 0xfd, 0x8a, 0xfd, + 0xec, 0xfd, 0xeb, 0xfd, 0x56, 0xfe, 0x55, 0xfe, 0xc4, 0xfe, 0xc3, 0xfe, + 0x34, 0xff, 0x33, 0xff, 0xab, 0xff, 0xaa, 0xff, 0x20, 0x00, 0x1f, 0x00, + 0x97, 0x00, 0x98, 0x00, 0x0d, 0x01, 0x0b, 0x01, 0x80, 0x01, 0x7e, 0x01, + 0xef, 0x01, 0xee, 0x01, 0x59, 0x02, 0x58, 0x02, 0xbc, 0x02, 0xbc, 0x02, + 0x1b, 0x03, 0x1a, 0x03, 0x71, 0x03, 0x70, 0x03, 0xbd, 0x03, 0xbc, 0x03, + 0x01, 0x04, 0x01, 0x04, 0x3b, 0x04, 0x3a, 0x04, 0x6c, 0x04, 0x6d, 0x04, + 0x93, 0x04, 0x91, 0x04, 0xad, 0x04, 0xad, 0x04, 0xc1, 0x04, 0xbf, 0x04, + 0xc8, 0x04, 0xc7, 0x04, 0xc5, 0x04, 0xc4, 0x04, 0xba, 0x04, 0xba, 0x04, + 0xa3, 0x04, 0xa4, 0x04, 0x86, 0x04, 0x85, 0x04, 0x5e, 0x04, 0x5f, 0x04, + 0x31, 0x04, 0x30, 0x04, 0xfd, 0x03, 0xfb, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0x81, 0x03, 0x81, 0x03, 0x3c, 0x03, 0x3a, 0x03, 0xf1, 0x02, 0xf2, 0x02, + 0xa7, 0x02, 0xa6, 0x02, 0x57, 0x02, 0x57, 0x02, 0x06, 0x02, 0x07, 0x02, + 0xb5, 0x01, 0xb3, 0x01, 0x63, 0x01, 0x64, 0x01, 0x11, 0x01, 0x10, 0x01, + 0xc0, 0x00, 0xbf, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x23, 0x00, 0x22, 0x00, + 0xd7, 0xff, 0xd7, 0xff, 0x8f, 0xff, 0x8e, 0xff, 0x49, 0xff, 0x47, 0xff, + 0x05, 0xff, 0x04, 0xff, 0xc7, 0xfe, 0xc4, 0xfe, 0x89, 0xfe, 0x8a, 0xfe, + 0x53, 0xfe, 0x51, 0xfe, 0x1d, 0xfe, 0x1c, 0xfe, 0xed, 0xfd, 0xec, 0xfd, + 0xc3, 0xfd, 0xc2, 0xfd, 0x98, 0xfd, 0x97, 0xfd, 0x76, 0xfd, 0x74, 0xfd, + 0x55, 0xfd, 0x55, 0xfd, 0x3a, 0xfd, 0x36, 0xfd, 0x1f, 0xfd, 0x21, 0xfd, + 0x0e, 0xfd, 0x0b, 0xfd, 0xfe, 0xfc, 0xfc, 0xfc, 0xf3, 0xfc, 0xf2, 0xfc, + 0xea, 0xfc, 0xe9, 0xfc, 0xec, 0xfc, 0xe9, 0xfc, 0xeb, 0xfc, 0xea, 0xfc, + 0xf3, 0xfc, 0xf1, 0xfc, 0xff, 0xfc, 0xfe, 0xfc, 0x0d, 0xfd, 0x0e, 0xfd, + 0x25, 0xfd, 0x22, 0xfd, 0x3f, 0xfd, 0x3d, 0xfd, 0x5e, 0xfd, 0x5e, 0xfd, + 0x82, 0xfd, 0x80, 0xfd, 0xa8, 0xfd, 0xa8, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, + 0x06, 0xfe, 0x04, 0xfe, 0x3b, 0xfe, 0x3a, 0xfe, 0x72, 0xfe, 0x72, 0xfe, + 0xb0, 0xfe, 0xaf, 0xfe, 0xee, 0xfe, 0xee, 0xfe, 0x33, 0xff, 0x33, 0xff, + 0x78, 0xff, 0x77, 0xff, 0xc0, 0xff, 0xbf, 0xff, 0x08, 0x00, 0x09, 0x00, + 0x51, 0x00, 0x50, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0xe4, 0x00, 0xe4, 0x00, + 0x2f, 0x01, 0x2e, 0x01, 0x74, 0x01, 0x76, 0x01, 0xb4, 0x01, 0xb4, 0x01, + 0xf5, 0x01, 0xf6, 0x01, 0x2d, 0x02, 0x2c, 0x02, 0x60, 0x02, 0x62, 0x02, + 0x90, 0x02, 0x8e, 0x02, 0xb1, 0x02, 0xb3, 0x02, 0xd4, 0x02, 0xd3, 0x02, + 0xe5, 0x02, 0xe6, 0x02, 0xf3, 0x02, 0xf4, 0x02, 0xf5, 0x02, 0xf5, 0x02, + 0xec, 0x02, 0xee, 0x02, 0xdd, 0x02, 0xdb, 0x02, 0xbd, 0x02, 0xbe, 0x02, + 0x96, 0x02, 0x96, 0x02, 0x64, 0x02, 0x64, 0x02, 0x29, 0x02, 0x28, 0x02, + 0xe1, 0x01, 0xe2, 0x01, 0x93, 0x01, 0x91, 0x01, 0x39, 0x01, 0x3b, 0x01, + 0xda, 0x00, 0xd8, 0x00, 0x70, 0x00, 0x71, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x8f, 0xff, 0x8f, 0xff, 0x17, 0xff, 0x18, 0xff, 0x9c, 0xfe, 0x9c, 0xfe, + 0x21, 0xfe, 0x22, 0xfe, 0xa3, 0xfd, 0xa4, 0xfd, 0x2a, 0xfd, 0x2a, 0xfd, + 0xb2, 0xfc, 0xb2, 0xfc, 0x3d, 0xfc, 0x3d, 0xfc, 0xd1, 0xfb, 0xd1, 0xfb, + 0x65, 0xfb, 0x65, 0xfb, 0x08, 0xfb, 0x09, 0xfb, 0xaf, 0xfa, 0xaf, 0xfa, + 0x65, 0xfa, 0x65, 0xfa, 0x21, 0xfa, 0x23, 0xfa, 0xef, 0xf9, 0xee, 0xf9, + 0xc5, 0xf9, 0xc7, 0xf9, 0xac, 0xf9, 0xac, 0xf9, 0xa0, 0xf9, 0xa0, 0xf9, + 0xa1, 0xf9, 0xa0, 0xf9, 0xb0, 0xf9, 0xb3, 0xf9, 0xd0, 0xf9, 0xce, 0xf9, + 0xfb, 0xf9, 0xfd, 0xf9, 0x35, 0xfa, 0x32, 0xfa, 0x7c, 0xfa, 0x7d, 0xfa, + 0xce, 0xfa, 0xce, 0xfa, 0x2e, 0xfb, 0x2d, 0xfb, 0x98, 0xfb, 0x98, 0xfb, + 0x0b, 0xfc, 0x0c, 0xfc, 0x89, 0xfc, 0x87, 0xfc, 0x0d, 0xfd, 0x0f, 0xfd, + 0x98, 0xfd, 0x96, 0xfd, 0x27, 0xfe, 0x28, 0xfe, 0xbc, 0xfe, 0xbb, 0xfe, + 0x4f, 0xff, 0x4f, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0x7b, 0x00, 0x7d, 0x00, + 0x0f, 0x01, 0x0e, 0x01, 0x9d, 0x01, 0x9c, 0x01, 0x25, 0x02, 0x26, 0x02, + 0xab, 0x02, 0xac, 0x02, 0x27, 0x03, 0x26, 0x03, 0x9d, 0x03, 0x9f, 0x03, + 0x08, 0x04, 0x06, 0x04, 0x69, 0x04, 0x69, 0x04, 0xc0, 0x04, 0xc1, 0x04, + 0x0b, 0x05, 0x09, 0x05, 0x4d, 0x05, 0x4e, 0x05, 0x80, 0x05, 0x81, 0x05, + 0xab, 0x05, 0xaa, 0x05, 0xc7, 0x05, 0xc9, 0x05, 0xd7, 0x05, 0xd6, 0x05, + 0xde, 0x05, 0xde, 0x05, 0xd6, 0x05, 0xd9, 0x05, 0xc8, 0x05, 0xc5, 0x05, + 0xab, 0x05, 0xad, 0x05, 0x87, 0x05, 0x87, 0x05, 0x59, 0x05, 0x59, 0x05, + 0x23, 0x05, 0x24, 0x05, 0xe5, 0x04, 0xe4, 0x04, 0xa2, 0x04, 0xa2, 0x04, + 0x55, 0x04, 0x55, 0x04, 0x07, 0x04, 0x07, 0x04, 0xb2, 0x03, 0xb2, 0x03, + 0x5a, 0x03, 0x5b, 0x03, 0xff, 0x02, 0xff, 0x02, 0xa1, 0x02, 0xa3, 0x02, + 0x48, 0x02, 0x46, 0x02, 0xe5, 0x01, 0xe8, 0x01, 0x8b, 0x01, 0x89, 0x01, + 0x2b, 0x01, 0x2e, 0x01, 0xd2, 0x00, 0xd1, 0x00, 0x76, 0x00, 0x77, 0x00, + 0x20, 0x00, 0x22, 0x00, 0xca, 0xff, 0xca, 0xff, 0x7b, 0xff, 0x7b, 0xff, + 0x2c, 0xff, 0x2d, 0xff, 0xe2, 0xfe, 0xe2, 0xfe, 0x9c, 0xfe, 0x9c, 0xfe, + 0x5b, 0xfe, 0x5c, 0xfe, 0x1d, 0xfe, 0x1e, 0xfe, 0xe5, 0xfd, 0xe7, 0xfd, + 0xb4, 0xfd, 0xb3, 0xfd, 0x84, 0xfd, 0x84, 0xfd, 0x5b, 0xfd, 0x5d, 0xfd, + 0x37, 0xfd, 0x36, 0xfd, 0x18, 0xfd, 0x1a, 0xfd, 0x01, 0xfd, 0x00, 0xfd, + 0xec, 0xfc, 0xee, 0xfc, 0xe0, 0xfc, 0xe1, 0xfc, 0xda, 0xfc, 0xdb, 0xfc, + 0xd9, 0xfc, 0xd8, 0xfc, 0xdd, 0xfc, 0xdf, 0xfc, 0xea, 0xfc, 0xea, 0xfc, + 0xfa, 0xfc, 0xfb, 0xfc, 0x13, 0xfd, 0x15, 0xfd, 0x33, 0xfd, 0x32, 0xfd, + 0x58, 0xfd, 0x5a, 0xfd, 0x84, 0xfd, 0x84, 0xfd, 0xb6, 0xfd, 0xb7, 0xfd, + 0xee, 0xfd, 0xf0, 0xfd, 0x2d, 0xfe, 0x2d, 0xfe, 0x72, 0xfe, 0x73, 0xfe, + 0xbb, 0xfe, 0xbe, 0xfe, 0x0c, 0xff, 0x0c, 0xff, 0x61, 0xff, 0x63, 0xff, + 0xba, 0xff, 0xb9, 0xff, 0x18, 0x00, 0x1a, 0x00, 0x78, 0x00, 0x78, 0x00, + 0xdc, 0x00, 0xdc, 0x00, 0x41, 0x01, 0x43, 0x01, 0xa8, 0x01, 0xa6, 0x01, + 0x0e, 0x02, 0x10, 0x02, 0x76, 0x02, 0x74, 0x02, 0xd8, 0x02, 0xdb, 0x02, + 0x3d, 0x03, 0x3e, 0x03, 0x9c, 0x03, 0x9d, 0x03, 0xf6, 0x03, 0xf7, 0x03, + 0x4b, 0x04, 0x4c, 0x04, 0x9a, 0x04, 0x9a, 0x04, 0xdf, 0x04, 0xe2, 0x04, + 0x1f, 0x05, 0x1f, 0x05, 0x54, 0x05, 0x54, 0x05, 0x7e, 0x05, 0x7f, 0x05, + 0xa0, 0x05, 0x9e, 0x05, 0xaf, 0x05, 0xb3, 0x05, 0xbc, 0x05, 0xbc, 0x05, + 0xb5, 0x05, 0xb4, 0x05, 0xa4, 0x05, 0xa5, 0x05, 0x87, 0x05, 0x87, 0x05, + 0x58, 0x05, 0x5a, 0x05, 0x24, 0x05, 0x24, 0x05, 0xdf, 0x04, 0xde, 0x04, + 0x8d, 0x04, 0x8f, 0x04, 0x34, 0x04, 0x34, 0x04, 0xcd, 0x03, 0xcd, 0x03, + 0x5e, 0x03, 0x60, 0x03, 0xe5, 0x02, 0xe5, 0x02, 0x65, 0x02, 0x67, 0x02, + 0xdd, 0x01, 0xdf, 0x01, 0x52, 0x01, 0x53, 0x01, 0xc1, 0x00, 0xc2, 0x00, + 0x2c, 0x00, 0x2e, 0x00, 0x9a, 0xff, 0x9a, 0xff, 0x05, 0xff, 0x07, 0xff, + 0x75, 0xfe, 0x76, 0xfe, 0xe4, 0xfd, 0xe5, 0xfd, 0x5b, 0xfd, 0x5c, 0xfd, + 0xd6, 0xfc, 0xd7, 0xfc, 0x59, 0xfc, 0x5b, 0xfc, 0xe6, 0xfb, 0xe7, 0xfb, + 0x7a, 0xfb, 0x79, 0xfb, 0x1c, 0xfb, 0x1d, 0xfb, 0xc5, 0xfa, 0xc6, 0xfa, + 0x7e, 0xfa, 0x7f, 0xfa, 0x43, 0xfa, 0x44, 0xfa, 0x15, 0xfa, 0x15, 0xfa, + 0xf5, 0xf9, 0xf6, 0xf9, 0xe2, 0xf9, 0xe2, 0xf9, 0xdf, 0xf9, 0xe0, 0xf9, + 0xe5, 0xf9, 0xe6, 0xf9, 0xfc, 0xf9, 0xfc, 0xf9, 0x1f, 0xfa, 0x21, 0xfa, + 0x4d, 0xfa, 0x4e, 0xfa, 0x8b, 0xfa, 0x8b, 0xfa, 0xcd, 0xfa, 0xce, 0xfa, + 0x1d, 0xfb, 0x1e, 0xfb, 0x76, 0xfb, 0x76, 0xfb, 0xd2, 0xfb, 0xd4, 0xfb, + 0x3b, 0xfc, 0x3b, 0xfc, 0xa2, 0xfc, 0xa3, 0xfc, 0x10, 0xfd, 0x12, 0xfd, + 0x83, 0xfd, 0x82, 0xfd, 0xf3, 0xfd, 0xf6, 0xfd, 0x66, 0xfe, 0x66, 0xfe, + 0xd6, 0xfe, 0xd7, 0xfe, 0x44, 0xff, 0x44, 0xff, 0xaf, 0xff, 0xaf, 0xff, + 0x14, 0x00, 0x15, 0x00, 0x73, 0x00, 0x76, 0x00, 0xce, 0x00, 0xcc, 0x00, + 0x1d, 0x01, 0x21, 0x01, 0x67, 0x01, 0x67, 0x01, 0xa8, 0x01, 0xaa, 0x01, + 0xe2, 0x01, 0xe4, 0x01, 0x10, 0x02, 0x10, 0x02, 0x37, 0x02, 0x39, 0x02, + 0x52, 0x02, 0x55, 0x02, 0x68, 0x02, 0x67, 0x02, 0x6f, 0x02, 0x73, 0x02, + 0x71, 0x02, 0x72, 0x02, 0x6d, 0x02, 0x6c, 0x02, 0x5b, 0x02, 0x5e, 0x02, + 0x45, 0x02, 0x46, 0x02, 0x2b, 0x02, 0x2a, 0x02, 0x03, 0x02, 0x05, 0x02, + 0xdc, 0x01, 0xdc, 0x01, 0xab, 0x01, 0xad, 0x01, 0x7b, 0x01, 0x7a, 0x01, + 0x43, 0x01, 0x44, 0x01, 0x09, 0x01, 0x0a, 0x01, 0xcf, 0x00, 0xcf, 0x00, + 0x8f, 0x00, 0x91, 0x00, 0x55, 0x00, 0x56, 0x00, 0x14, 0x00, 0x16, 0x00, + 0xd8, 0xff, 0xd8, 0xff, 0x9a, 0xff, 0x9b, 0xff, 0x5d, 0xff, 0x5e, 0xff, + 0x24, 0xff, 0x24, 0xff, 0xeb, 0xfe, 0xec, 0xfe, 0xb8, 0xfe, 0xb8, 0xfe, + 0x83, 0xfe, 0x84, 0xfe, 0x54, 0xfe, 0x55, 0xfe, 0x28, 0xfe, 0x28, 0xfe, + 0xff, 0xfd, 0xff, 0xfd, 0xd9, 0xfd, 0xda, 0xfd, 0xb5, 0xfd, 0xb5, 0xfd, + 0x98, 0xfd, 0x99, 0xfd, 0x7c, 0xfd, 0x7d, 0xfd, 0x66, 0xfd, 0x65, 0xfd, + 0x51, 0xfd, 0x54, 0xfd, 0x42, 0xfd, 0x42, 0xfd, 0x38, 0xfd, 0x39, 0xfd, + 0x2e, 0xfd, 0x30, 0xfd, 0x2e, 0xfd, 0x2d, 0xfd, 0x2d, 0xfd, 0x2f, 0xfd, + 0x31, 0xfd, 0x33, 0xfd, 0x3b, 0xfd, 0x3c, 0xfd, 0x48, 0xfd, 0x4a, 0xfd, + 0x5c, 0xfd, 0x5b, 0xfd, 0x71, 0xfd, 0x74, 0xfd, 0x8c, 0xfd, 0x90, 0xfd, + 0xae, 0xfd, 0xae, 0xfd, 0xd4, 0xfd, 0xd6, 0xfd, 0xfd, 0xfd, 0xff, 0xfd, + 0x2f, 0xfe, 0x30, 0xfe, 0x60, 0xfe, 0x61, 0xfe, 0x99, 0xfe, 0x9a, 0xfe, + 0xd3, 0xfe, 0xd5, 0xfe, 0x16, 0xff, 0x17, 0xff, 0x5b, 0xff, 0x5d, 0xff, + 0xa4, 0xff, 0xa4, 0xff, 0xef, 0xff, 0xf2, 0xff, 0x43, 0x00, 0x42, 0x00, + 0x94, 0x00, 0x96, 0x00, 0xed, 0x00, 0xec, 0x00, 0x41, 0x01, 0x44, 0x01, + 0x9c, 0x01, 0x9d, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0x4f, 0x02, 0x50, 0x02, + 0xa7, 0x02, 0xa8, 0x02, 0x00, 0x03, 0x01, 0x03, 0x52, 0x03, 0x54, 0x03, + 0xa5, 0x03, 0xa5, 0x03, 0xf2, 0x03, 0xf2, 0x03, 0x3b, 0x04, 0x3b, 0x04, + 0x7b, 0x04, 0x7d, 0x04, 0xb7, 0x04, 0xb8, 0x04, 0xea, 0x04, 0xea, 0x04, + 0x15, 0x05, 0x17, 0x05, 0x36, 0x05, 0x34, 0x05, 0x4d, 0x05, 0x51, 0x05, + 0x5e, 0x05, 0x5b, 0x05, 0x5c, 0x05, 0x5e, 0x05, 0x56, 0x05, 0x56, 0x05, + 0x3e, 0x05, 0x40, 0x05, 0x23, 0x05, 0x22, 0x05, 0xf4, 0x04, 0xf5, 0x04, + 0xbf, 0x04, 0xc0, 0x04, 0x7e, 0x04, 0x7f, 0x04, 0x32, 0x04, 0x32, 0x04, + 0xdd, 0x03, 0xdf, 0x03, 0x7d, 0x03, 0x7c, 0x03, 0x16, 0x03, 0x17, 0x03, + 0xa6, 0x02, 0xa7, 0x02, 0x2f, 0x02, 0x2e, 0x02, 0xb4, 0x01, 0xb6, 0x01, + 0x32, 0x01, 0x33, 0x01, 0xb1, 0x00, 0xb1, 0x00, 0x2b, 0x00, 0x2d, 0x00, + 0xa8, 0xff, 0xa6, 0xff, 0x25, 0xff, 0x26, 0xff, 0xa4, 0xfe, 0xa5, 0xfe, + 0x2a, 0xfe, 0x29, 0xfe, 0xb2, 0xfd, 0xb4, 0xfd, 0x43, 0xfd, 0x44, 0xfd, + 0xdd, 0xfc, 0xde, 0xfc, 0x7f, 0xfc, 0x80, 0xfc, 0x2c, 0xfc, 0x2d, 0xfc, + 0xe5, 0xfb, 0xe6, 0xfb, 0xa9, 0xfb, 0xab, 0xfb, 0x7d, 0xfb, 0x7e, 0xfb, + 0x5b, 0xfb, 0x5b, 0xfb, 0x4a, 0xfb, 0x4b, 0xfb, 0x46, 0xfb, 0x46, 0xfb, + 0x4f, 0xfb, 0x51, 0xfb, 0x66, 0xfb, 0x65, 0xfb, 0x8d, 0xfb, 0x8f, 0xfb, + 0xbe, 0xfb, 0xbe, 0xfb, 0xfe, 0xfb, 0x00, 0xfc, 0x48, 0xfc, 0x49, 0xfc, + 0x9c, 0xfc, 0xa0, 0xfc, 0xfe, 0xfc, 0xff, 0xfc, 0x65, 0xfd, 0x66, 0xfd, + 0xd7, 0xfd, 0xd9, 0xfd, 0x4f, 0xfe, 0x4f, 0xfe, 0xca, 0xfe, 0xcb, 0xfe, + 0x4a, 0xff, 0x4b, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0x4e, 0x00, 0x4e, 0x00, + 0xd2, 0x00, 0xd2, 0x00, 0x53, 0x01, 0x53, 0x01, 0xcd, 0x01, 0xd0, 0x01, + 0x49, 0x02, 0x48, 0x02, 0xb5, 0x02, 0xba, 0x02, 0x26, 0x03, 0x25, 0x03, + 0x84, 0x03, 0x87, 0x03, 0xe2, 0x03, 0xe2, 0x03, 0x32, 0x04, 0x34, 0x04, + 0x76, 0x04, 0x77, 0x04, 0xb3, 0x04, 0xb5, 0x04, 0xe2, 0x04, 0xe2, 0x04, + 0x06, 0x05, 0x08, 0x05, 0x1e, 0x05, 0x1e, 0x05, 0x29, 0x05, 0x2a, 0x05, + 0x2a, 0x05, 0x2b, 0x05, 0x1e, 0x05, 0x1e, 0x05, 0x06, 0x05, 0x08, 0x05, + 0xe5, 0x04, 0xe5, 0x04, 0xb7, 0x04, 0xb9, 0x04, 0x83, 0x04, 0x84, 0x04, + 0x44, 0x04, 0x43, 0x04, 0xfc, 0x03, 0xfd, 0x03, 0xae, 0x03, 0xaf, 0x03, + 0x58, 0x03, 0x59, 0x03, 0xfb, 0x02, 0xfc, 0x02, 0x9d, 0x02, 0x9f, 0x02, + 0x37, 0x02, 0x38, 0x02, 0xd1, 0x01, 0xd2, 0x01, 0x68, 0x01, 0x69, 0x01, + 0xfb, 0x00, 0xfc, 0x00, 0x92, 0x00, 0x92, 0x00, 0x23, 0x00, 0x24, 0x00, + 0xb9, 0xff, 0xba, 0xff, 0x4f, 0xff, 0x50, 0xff, 0xe7, 0xfe, 0xe8, 0xfe, + 0x85, 0xfe, 0x86, 0xfe, 0x23, 0xfe, 0x24, 0xfe, 0xc7, 0xfd, 0xc8, 0xfd, + 0x6c, 0xfd, 0x6d, 0xfd, 0x17, 0xfd, 0x19, 0xfd, 0xc6, 0xfc, 0xc7, 0xfc, + 0x7b, 0xfc, 0x7b, 0xfc, 0x32, 0xfc, 0x34, 0xfc, 0xf1, 0xfb, 0xf0, 0xfb, + 0xb2, 0xfb, 0xb3, 0xfb, 0x7a, 0xfb, 0x79, 0xfb, 0x48, 0xfb, 0x49, 0xfb, + 0x1b, 0xfb, 0x1c, 0xfb, 0xf2, 0xfa, 0xf3, 0xfa, 0xd3, 0xfa, 0xd3, 0xfa, + 0xb6, 0xfa, 0xb7, 0xfa, 0x9f, 0xfa, 0xa1, 0xfa, 0x92, 0xfa, 0x92, 0xfa, + 0x85, 0xfa, 0x88, 0xfa, 0x85, 0xfa, 0x84, 0xfa, 0x86, 0xfa, 0x89, 0xfa, + 0x90, 0xfa, 0x8f, 0xfa, 0xa1, 0xfa, 0xa4, 0xfa, 0xb8, 0xfa, 0xb9, 0xfa, + 0xd8, 0xfa, 0xd7, 0xfa, 0xfc, 0xfa, 0xfe, 0xfa, 0x28, 0xfb, 0x27, 0xfb, + 0x5c, 0xfb, 0x5e, 0xfb, 0x94, 0xfb, 0x95, 0xfb, 0xd5, 0xfb, 0xd7, 0xfb, + 0x1d, 0xfc, 0x1e, 0xfc, 0x6a, 0xfc, 0x6d, 0xfc, 0xbf, 0xfc, 0xbf, 0xfc, + 0x18, 0xfd, 0x1b, 0xfd, 0x79, 0xfd, 0x79, 0xfd, 0xde, 0xfd, 0xe0, 0xfd, + 0x46, 0xfe, 0x47, 0xfe, 0xb6, 0xfe, 0xb8, 0xfe, 0x24, 0xff, 0x26, 0xff, + 0x9a, 0xff, 0x9b, 0xff, 0x0d, 0x00, 0x0f, 0x00, 0x86, 0x00, 0x88, 0x00, + 0xfb, 0x00, 0xfd, 0x00, 0x70, 0x01, 0x72, 0x01, 0xe2, 0x01, 0xe5, 0x01, + 0x53, 0x02, 0x54, 0x02, 0xbb, 0x02, 0xbe, 0x02, 0x24, 0x03, 0x24, 0x03, + 0x7e, 0x03, 0x82, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0x26, 0x04, 0x29, 0x04, + 0x69, 0x04, 0x6a, 0x04, 0xa5, 0x04, 0xa8, 0x04, 0xd4, 0x04, 0xd6, 0x04, + 0xf9, 0x04, 0xfa, 0x04, 0x10, 0x05, 0x13, 0x05, 0x1b, 0x05, 0x1c, 0x05, + 0x1a, 0x05, 0x1d, 0x05, 0x0c, 0x05, 0x0d, 0x05, 0xee, 0x04, 0xf1, 0x04, + 0xc8, 0x04, 0xc8, 0x04, 0x90, 0x04, 0x93, 0x04, 0x53, 0x04, 0x54, 0x04, + 0x06, 0x04, 0x07, 0x04, 0xae, 0x03, 0xaf, 0x03, 0x51, 0x03, 0x51, 0x03, + 0xe7, 0x02, 0xe8, 0x02, 0x78, 0x02, 0x7b, 0x02, 0x00, 0x02, 0x01, 0x02, + 0x85, 0x01, 0x84, 0x01, 0x03, 0x01, 0x07, 0x01, 0x82, 0x00, 0x82, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x7d, 0xff, 0x80, 0xff, 0xfe, 0xfe, 0xff, 0xfe, + 0x83, 0xfe, 0x87, 0xfe, 0x0a, 0xfe, 0x0a, 0xfe, 0x9a, 0xfd, 0x9d, 0xfd, + 0x31, 0xfd, 0x31, 0xfd, 0xcf, 0xfc, 0xd1, 0xfc, 0x7b, 0xfc, 0x7c, 0xfc, + 0x2e, 0xfc, 0x30, 0xfc, 0xef, 0xfb, 0xf3, 0xfb, 0xbd, 0xfb, 0xbd, 0xfb, + 0x97, 0xfb, 0x9b, 0xfb, 0x82, 0xfb, 0x81, 0xfb, 0x76, 0xfb, 0x7a, 0xfb, + 0x7d, 0xfb, 0x7c, 0xfb, 0x8b, 0xfb, 0x8f, 0xfb, 0xab, 0xfb, 0xac, 0xfb, + 0xd8, 0xfb, 0xda, 0xfb, 0x11, 0xfc, 0x12, 0xfc, 0x56, 0xfc, 0x57, 0xfc, + 0xa5, 0xfc, 0xa8, 0xfc, 0xfd, 0xfc, 0xfe, 0xfc, 0x62, 0xfd, 0x63, 0xfd, + 0xc9, 0xfd, 0xca, 0xfd, 0x3a, 0xfe, 0x3c, 0xfe, 0xae, 0xfe, 0xb0, 0xfe, + 0x28, 0xff, 0x28, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0x1d, 0x00, 0x21, 0x00, + 0x99, 0x00, 0x99, 0x00, 0x13, 0x01, 0x15, 0x01, 0x88, 0x01, 0x8a, 0x01, + 0xfa, 0x01, 0xfa, 0x01, 0x68, 0x02, 0x6b, 0x02, 0xcc, 0x02, 0xcc, 0x02, + 0x2c, 0x03, 0x2c, 0x03, 0x81, 0x03, 0x81, 0x03, 0xcc, 0x03, 0xce, 0x03, + 0x13, 0x04, 0x14, 0x04, 0x4a, 0x04, 0x4b, 0x04, 0x7d, 0x04, 0x7e, 0x04, + 0x9f, 0x04, 0xa1, 0x04, 0xbc, 0x04, 0xbb, 0x04, 0xcb, 0x04, 0xcb, 0x04, + 0xd2, 0x04, 0xd2, 0x04, 0xce, 0x04, 0xcf, 0x04, 0xc0, 0x04, 0xc0, 0x04, + 0xaa, 0x04, 0xab, 0x04, 0x8b, 0x04, 0x8b, 0x04, 0x65, 0x04, 0x65, 0x04, + 0x35, 0x04, 0x38, 0x04, 0x02, 0x04, 0x01, 0x04, 0xc8, 0x03, 0xca, 0x03, + 0x89, 0x03, 0x89, 0x03, 0x46, 0x03, 0x47, 0x03, 0x01, 0x03, 0x02, 0x03, + 0xb8, 0x02, 0xb8, 0x02, 0x6f, 0x02, 0x72, 0x02, 0x24, 0x02, 0x25, 0x02, + 0xd9, 0x01, 0xd9, 0x01, 0x8c, 0x01, 0x8e, 0x01, 0x44, 0x01, 0x44, 0x01, + 0xf8, 0x00, 0xfa, 0x00, 0xb2, 0x00, 0xb1, 0x00, 0x6c, 0x00, 0x6f, 0x00, + 0x28, 0x00, 0x29, 0x00, 0xea, 0xff, 0xeb, 0xff, 0xaa, 0xff, 0xab, 0xff, + 0x71, 0xff, 0x72, 0xff, 0x37, 0xff, 0x3a, 0xff, 0x07, 0xff, 0x05, 0xff, + 0xd2, 0xfe, 0xd6, 0xfe, 0xa9, 0xfe, 0xa7, 0xfe, 0x7a, 0xfe, 0x7e, 0xfe, + 0x56, 0xfe, 0x56, 0xfe, 0x2f, 0xfe, 0x31, 0xfe, 0x10, 0xfe, 0x11, 0xfe, + 0xf3, 0xfd, 0xf4, 0xfd, 0xd6, 0xfd, 0xd9, 0xfd, 0xc2, 0xfd, 0xc5, 0xfd, + 0xad, 0xfd, 0xad, 0xfd, 0x9b, 0xfd, 0x9f, 0xfd, 0x90, 0xfd, 0x90, 0xfd, + 0x84, 0xfd, 0x88, 0xfd, 0x83, 0xfd, 0x82, 0xfd, 0x7a, 0xfd, 0x7e, 0xfd, + 0x80, 0xfd, 0x81, 0xfd, 0x83, 0xfd, 0x86, 0xfd, 0x90, 0xfd, 0x91, 0xfd, + 0x9e, 0xfd, 0xa0, 0xfd, 0xaf, 0xfd, 0xb1, 0xfd, 0xc8, 0xfd, 0xc7, 0xfd, + 0xe3, 0xfd, 0xe5, 0xfd, 0x03, 0xfe, 0x02, 0xfe, 0x29, 0xfe, 0x2c, 0xfe, + 0x51, 0xfe, 0x52, 0xfe, 0x7f, 0xfe, 0x80, 0xfe, 0xb0, 0xfe, 0xb2, 0xfe, + 0xe8, 0xfe, 0xe8, 0xfe, 0x20, 0xff, 0x22, 0xff, 0x5d, 0xff, 0x5e, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0x28, 0x00, 0x2a, 0x00, + 0x6f, 0x00, 0x6e, 0x00, 0xb4, 0x00, 0xb6, 0x00, 0xfe, 0x00, 0xfe, 0x00, + 0x43, 0x01, 0x43, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0xcb, 0x01, 0xcb, 0x01, + 0x0a, 0x02, 0x0a, 0x02, 0x47, 0x02, 0x47, 0x02, 0x7a, 0x02, 0x7b, 0x02, + 0xab, 0x02, 0xab, 0x02, 0xd2, 0x02, 0xd4, 0x02, 0xf2, 0x02, 0xf3, 0x02, + 0x0b, 0x03, 0x09, 0x03, 0x18, 0x03, 0x19, 0x03, 0x1d, 0x03, 0x1d, 0x03, + 0x17, 0x03, 0x18, 0x03, 0x05, 0x03, 0x06, 0x03, 0xe9, 0x02, 0xea, 0x02, + 0xc1, 0x02, 0xc1, 0x02, 0x8e, 0x02, 0x90, 0x02, 0x54, 0x02, 0x54, 0x02, + 0x09, 0x02, 0x0b, 0x02, 0xbb, 0x01, 0xbb, 0x01, 0x5d, 0x01, 0x5f, 0x01, + 0xfb, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x91, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0xa3, 0xff, 0xa4, 0xff, 0x24, 0xff, 0x24, 0xff, 0xa2, 0xfe, 0xa3, 0xfe, + 0x21, 0xfe, 0x22, 0xfe, 0x9b, 0xfd, 0x9d, 0xfd, 0x1b, 0xfd, 0x1b, 0xfd, + 0x99, 0xfc, 0x9b, 0xfc, 0x1e, 0xfc, 0x1e, 0xfc, 0xa8, 0xfb, 0xa9, 0xfb, + 0x38, 0xfb, 0x39, 0xfb, 0xd0, 0xfa, 0xd1, 0xfa, 0x73, 0xfa, 0x73, 0xfa, + 0x20, 0xfa, 0x21, 0xfa, 0xd8, 0xf9, 0xd9, 0xf9, 0x9f, 0xf9, 0x9f, 0xf9, + 0x70, 0xf9, 0x73, 0xf9, 0x54, 0xf9, 0x54, 0xf9, 0x43, 0xf9, 0x45, 0xf9, + 0x43, 0xf9, 0x43, 0xf9, 0x51, 0xf9, 0x52, 0xf9, 0x6f, 0xf9, 0x70, 0xf9, + 0x9b, 0xf9, 0x9b, 0xf9, 0xd5, 0xf9, 0xd5, 0xf9, 0x1e, 0xfa, 0x1f, 0xfa, + 0x74, 0xfa, 0x75, 0xfa, 0xd7, 0xfa, 0xd8, 0xfa, 0x43, 0xfb, 0x44, 0xfb, + 0xbd, 0xfb, 0xbd, 0xfb, 0x3d, 0xfc, 0x3d, 0xfc, 0xc5, 0xfc, 0xc6, 0xfc, + 0x56, 0xfd, 0x56, 0xfd, 0xe8, 0xfd, 0xe9, 0xfd, 0x81, 0xfe, 0x80, 0xfe, + 0x19, 0xff, 0x1a, 0xff, 0xb3, 0xff, 0xb5, 0xff, 0x4b, 0x00, 0x4b, 0x00, + 0xdf, 0x00, 0xe0, 0x00, 0x71, 0x01, 0x70, 0x01, 0xfd, 0x01, 0xff, 0x01, + 0x81, 0x02, 0x80, 0x02, 0xff, 0x02, 0x00, 0x03, 0x70, 0x03, 0x71, 0x03, + 0xda, 0x03, 0xdd, 0x03, 0x3b, 0x04, 0x3c, 0x04, 0x8b, 0x04, 0x8e, 0x04, + 0xd8, 0x04, 0xd7, 0x04, 0x0e, 0x05, 0x13, 0x05, 0x43, 0x05, 0x43, 0x05, + 0x62, 0x05, 0x65, 0x05, 0x79, 0x05, 0x7c, 0x05, 0x86, 0x05, 0x86, 0x05, + 0x80, 0x05, 0x83, 0x05, 0x78, 0x05, 0x76, 0x05, 0x5c, 0x05, 0x60, 0x05, + 0x3d, 0x05, 0x3e, 0x05, 0x12, 0x05, 0x13, 0x05, 0xdd, 0x04, 0xdf, 0x04, + 0xa2, 0x04, 0xa3, 0x04, 0x5e, 0x04, 0x61, 0x04, 0x17, 0x04, 0x19, 0x04, + 0xc9, 0x03, 0xca, 0x03, 0x76, 0x03, 0x77, 0x03, 0x20, 0x03, 0x22, 0x03, + 0xc6, 0x02, 0xc6, 0x02, 0x6c, 0x02, 0x6d, 0x02, 0x0f, 0x02, 0x10, 0x02, + 0xb3, 0x01, 0xb5, 0x01, 0x5b, 0x01, 0x5b, 0x01, 0xfc, 0x00, 0xfe, 0x00, + 0xa7, 0x00, 0xa7, 0x00, 0x4d, 0x00, 0x50, 0x00, 0xfc, 0xff, 0xfc, 0xff, + 0xac, 0xff, 0xac, 0xff, 0x5c, 0xff, 0x5e, 0xff, 0x16, 0xff, 0x16, 0xff, + 0xce, 0xfe, 0xcf, 0xfe, 0x8e, 0xfe, 0x8f, 0xfe, 0x4f, 0xfe, 0x50, 0xfe, + 0x17, 0xfe, 0x18, 0xfe, 0xe3, 0xfd, 0xe4, 0xfd, 0xb3, 0xfd, 0xb4, 0xfd, + 0x89, 0xfd, 0x8a, 0xfd, 0x63, 0xfd, 0x62, 0xfd, 0x42, 0xfd, 0x45, 0xfd, + 0x26, 0xfd, 0x25, 0xfd, 0x10, 0xfd, 0x12, 0xfd, 0xfd, 0xfc, 0xfd, 0xfc, + 0xf1, 0xfc, 0xf2, 0xfc, 0xe8, 0xfc, 0xea, 0xfc, 0xe7, 0xfc, 0xe7, 0xfc, + 0xec, 0xfc, 0xee, 0xfc, 0xf4, 0xfc, 0xf3, 0xfc, 0x04, 0xfd, 0x05, 0xfd, + 0x17, 0xfd, 0x18, 0xfd, 0x32, 0xfd, 0x34, 0xfd, 0x53, 0xfd, 0x52, 0xfd, + 0x78, 0xfd, 0x7b, 0xfd, 0xa5, 0xfd, 0xa5, 0xfd, 0xd9, 0xfd, 0xda, 0xfd, + 0x10, 0xfe, 0x12, 0xfe, 0x50, 0xfe, 0x51, 0xfe, 0x96, 0xfe, 0x95, 0xfe, + 0xdf, 0xfe, 0xe0, 0xfe, 0x2f, 0xff, 0x2f, 0xff, 0x84, 0xff, 0x84, 0xff, + 0xde, 0xff, 0xdf, 0xff, 0x3b, 0x00, 0x3b, 0x00, 0x9d, 0x00, 0x9e, 0x00, + 0x01, 0x01, 0x03, 0x01, 0x68, 0x01, 0x69, 0x01, 0xd0, 0x01, 0xd2, 0x01, + 0x3b, 0x02, 0x3c, 0x02, 0xa4, 0x02, 0xa6, 0x02, 0x0d, 0x03, 0x0d, 0x03, + 0x72, 0x03, 0x74, 0x03, 0xd6, 0x03, 0xd6, 0x03, 0x34, 0x04, 0x36, 0x04, + 0x90, 0x04, 0x90, 0x04, 0xe1, 0x04, 0xe2, 0x04, 0x2e, 0x05, 0x2f, 0x05, + 0x72, 0x05, 0x71, 0x05, 0xaa, 0x05, 0xaa, 0x05, 0xda, 0x05, 0xdb, 0x05, + 0xff, 0x05, 0xfe, 0x05, 0x18, 0x06, 0x19, 0x06, 0x25, 0x06, 0x25, 0x06, + 0x24, 0x06, 0x25, 0x06, 0x17, 0x06, 0x19, 0x06, 0xfc, 0x05, 0xfc, 0x05, + 0xd6, 0x05, 0xd6, 0x05, 0x9f, 0x05, 0x9f, 0x05, 0x5e, 0x05, 0x60, 0x05, + 0x11, 0x05, 0x0f, 0x05, 0xb6, 0x04, 0xb7, 0x04, 0x50, 0x04, 0x51, 0x04, + 0xe2, 0x03, 0xe2, 0x03, 0x66, 0x03, 0x67, 0x03, 0xe6, 0x02, 0xe6, 0x02, + 0x5b, 0x02, 0x5b, 0x02, 0xce, 0x01, 0xcf, 0x01, 0x38, 0x01, 0x39, 0x01, + 0xa4, 0x00, 0xa6, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x72, 0xff, 0x75, 0xff, + 0xdf, 0xfe, 0xdd, 0xfe, 0x47, 0xfe, 0x4a, 0xfe, 0xb9, 0xfd, 0xba, 0xfd, + 0x31, 0xfd, 0x32, 0xfd, 0xb0, 0xfc, 0xb1, 0xfc, 0x36, 0xfc, 0x36, 0xfc, + 0xc6, 0xfb, 0xca, 0xfb, 0x63, 0xfb, 0x63, 0xfb, 0x09, 0xfb, 0x0b, 0xfb, + 0xbd, 0xfa, 0xbf, 0xfa, 0x7e, 0xfa, 0x80, 0xfa, 0x4e, 0xfa, 0x50, 0xfa, + 0x2a, 0xfa, 0x2b, 0xfa, 0x17, 0xfa, 0x1a, 0xfa, 0x10, 0xfa, 0x0f, 0xfa, + 0x17, 0xfa, 0x1a, 0xfa, 0x2d, 0xfa, 0x2e, 0xfa, 0x4e, 0xfa, 0x4f, 0xfa, + 0x7f, 0xfa, 0x80, 0xfa, 0xb7, 0xfa, 0xb9, 0xfa, 0x01, 0xfb, 0x00, 0xfb, + 0x4c, 0xfb, 0x4f, 0xfb, 0xa8, 0xfb, 0xa8, 0xfb, 0x06, 0xfc, 0x07, 0xfc, + 0x6d, 0xfc, 0x6f, 0xfc, 0xd9, 0xfc, 0xd8, 0xfc, 0x47, 0xfd, 0x4a, 0xfd, + 0xbb, 0xfd, 0xbb, 0xfd, 0x2c, 0xfe, 0x2e, 0xfe, 0xa0, 0xfe, 0xa0, 0xfe, + 0x10, 0xff, 0x11, 0xff, 0x7f, 0xff, 0x7e, 0xff, 0xe8, 0xff, 0xea, 0xff, + 0x4e, 0x00, 0x4f, 0x00, 0xab, 0x00, 0xad, 0x00, 0x05, 0x01, 0x04, 0x01, + 0x52, 0x01, 0x54, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0xd9, 0x01, 0xda, 0x01, + 0x10, 0x02, 0x10, 0x02, 0x39, 0x02, 0x39, 0x02, 0x5d, 0x02, 0x5e, 0x02, + 0x73, 0x02, 0x73, 0x02, 0x83, 0x02, 0x85, 0x02, 0x89, 0x02, 0x88, 0x02, + 0x82, 0x02, 0x84, 0x02, 0x7a, 0x02, 0x7a, 0x02, 0x63, 0x02, 0x64, 0x02, + 0x47, 0x02, 0x48, 0x02, 0x24, 0x02, 0x24, 0x02, 0xf9, 0x01, 0xfb, 0x01, + 0xcc, 0x01, 0xcc, 0x01, 0x95, 0x01, 0x97, 0x01, 0x5f, 0x01, 0x5f, 0x01, + 0x22, 0x01, 0x24, 0x01, 0xe6, 0x00, 0xe5, 0x00, 0xa3, 0x00, 0xa3, 0x00, + 0x63, 0x00, 0x65, 0x00, 0x21, 0x00, 0x20, 0x00, 0xde, 0xff, 0xe1, 0xff, + 0xa0, 0xff, 0x9e, 0xff, 0x5e, 0xff, 0x5f, 0xff, 0x1f, 0xff, 0x20, 0xff, + 0xe4, 0xfe, 0xe3, 0xfe, 0xa8, 0xfe, 0xa9, 0xfe, 0x73, 0xfe, 0x75, 0xfe, + 0x3c, 0xfe, 0x3d, 0xfe, 0x0b, 0xfe, 0x0b, 0xfe, 0xdd, 0xfd, 0xde, 0xfd, + 0xb2, 0xfd, 0xb3, 0xfd, 0x8d, 0xfd, 0x8d, 0xfd, 0x67, 0xfd, 0x69, 0xfd, + 0x49, 0xfd, 0x49, 0xfd, 0x2e, 0xfd, 0x2e, 0xfd, 0x17, 0xfd, 0x16, 0xfd, + 0x02, 0xfd, 0x02, 0xfd, 0xf1, 0xfc, 0xf3, 0xfc, 0xe5, 0xfc, 0xe3, 0xfc, + 0xdc, 0xfc, 0xde, 0xfc, 0xd8, 0xfc, 0xd8, 0xfc, 0xd7, 0xfc, 0xd9, 0xfc, + 0xdc, 0xfc, 0xdb, 0xfc, 0xe3, 0xfc, 0xe3, 0xfc, 0xf1, 0xfc, 0xf1, 0xfc, + 0xff, 0xfc, 0x01, 0xfd, 0x18, 0xfd, 0x17, 0xfd, 0x2f, 0xfd, 0x31, 0xfd, + 0x50, 0xfd, 0x4e, 0xfd, 0x72, 0xfd, 0x76, 0xfd, 0x9c, 0xfd, 0x9b, 0xfd, + 0xc8, 0xfd, 0xc9, 0xfd, 0xf8, 0xfd, 0xfa, 0xfd, 0x2f, 0xfe, 0x31, 0xfe, + 0x69, 0xfe, 0x6b, 0xfe, 0xab, 0xfe, 0xab, 0xfe, 0xef, 0xfe, 0xef, 0xfe, + 0x35, 0xff, 0x37, 0xff, 0x84, 0xff, 0x84, 0xff, 0xd2, 0xff, 0xd2, 0xff, + 0x27, 0x00, 0x28, 0x00, 0x79, 0x00, 0x79, 0x00, 0xd1, 0x00, 0xd4, 0x00, + 0x2b, 0x01, 0x2c, 0x01, 0x87, 0x01, 0x86, 0x01, 0xe2, 0x01, 0xe4, 0x01, + 0x3a, 0x02, 0x3b, 0x02, 0x94, 0x02, 0x97, 0x02, 0xea, 0x02, 0xeb, 0x02, + 0x3c, 0x03, 0x3f, 0x03, 0x8e, 0x03, 0x8d, 0x03, 0xd6, 0x03, 0xd9, 0x03, + 0x1d, 0x04, 0x1b, 0x04, 0x58, 0x04, 0x5a, 0x04, 0x90, 0x04, 0x91, 0x04, + 0xbc, 0x04, 0xbd, 0x04, 0xe0, 0x04, 0xe3, 0x04, 0xfe, 0x04, 0xfd, 0x04, + 0x0c, 0x05, 0x0f, 0x05, 0x17, 0x05, 0x15, 0x05, 0x10, 0x05, 0x11, 0x05, + 0x01, 0x05, 0x01, 0x05, 0xe6, 0x04, 0xe6, 0x04, 0xbc, 0x04, 0xbf, 0x04, + 0x90, 0x04, 0x8e, 0x04, 0x4e, 0x04, 0x51, 0x04, 0x09, 0x04, 0x09, 0x04, + 0xb7, 0x03, 0xb9, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0xfc, 0x02, 0xfc, 0x02, + 0x90, 0x02, 0x92, 0x02, 0x20, 0x02, 0x1f, 0x02, 0xa9, 0x01, 0xaa, 0x01, + 0x2e, 0x01, 0x2e, 0x01, 0xaf, 0x00, 0xb2, 0x00, 0x31, 0x00, 0x31, 0x00, + 0xaf, 0xff, 0xb1, 0xff, 0x34, 0xff, 0x32, 0xff, 0xb5, 0xfe, 0xb6, 0xfe, + 0x3f, 0xfe, 0x3f, 0xfe, 0xcc, 0xfd, 0xcc, 0xfd, 0x5f, 0xfd, 0x60, 0xfd, + 0xfb, 0xfc, 0xfc, 0xfc, 0xa2, 0xfc, 0xa2, 0xfc, 0x52, 0xfc, 0x52, 0xfc, + 0x0d, 0xfc, 0x0e, 0xfc, 0xd7, 0xfb, 0xd7, 0xfb, 0xa9, 0xfb, 0xaa, 0xfb, + 0x8d, 0xfb, 0x8e, 0xfb, 0x7e, 0xfb, 0x7c, 0xfb, 0x77, 0xfb, 0x7a, 0xfb, + 0x88, 0xfb, 0x85, 0xfb, 0x9e, 0xfb, 0xa0, 0xfb, 0xc5, 0xfb, 0xc5, 0xfb, + 0xf9, 0xfb, 0xf8, 0xfb, 0x37, 0xfc, 0x39, 0xfc, 0x84, 0xfc, 0x83, 0xfc, + 0xdc, 0xfc, 0xdb, 0xfc, 0x38, 0xfd, 0x39, 0xfd, 0xa4, 0xfd, 0xa6, 0xfd, + 0x14, 0xfe, 0x13, 0xfe, 0x8d, 0xfe, 0x8c, 0xfe, 0x09, 0xff, 0x09, 0xff, + 0x8a, 0xff, 0x89, 0xff, 0x0c, 0x00, 0x0e, 0x00, 0x90, 0x00, 0x8f, 0x00, + 0x12, 0x01, 0x11, 0x01, 0x94, 0x01, 0x95, 0x01, 0x11, 0x02, 0x0f, 0x02, + 0x89, 0x02, 0x8a, 0x02, 0xfc, 0x02, 0xfb, 0x02, 0x69, 0x03, 0x69, 0x03, + 0xcd, 0x03, 0xcc, 0x03, 0x29, 0x04, 0x29, 0x04, 0x7a, 0x04, 0x7a, 0x04, + 0xc4, 0x04, 0xc3, 0x04, 0xff, 0x04, 0xff, 0x04, 0x30, 0x05, 0x30, 0x05, + 0x57, 0x05, 0x57, 0x05, 0x6f, 0x05, 0x70, 0x05, 0x7f, 0x05, 0x7e, 0x05, + 0x7f, 0x05, 0x80, 0x05, 0x76, 0x05, 0x76, 0x05, 0x61, 0x05, 0x62, 0x05, + 0x41, 0x05, 0x41, 0x05, 0x17, 0x05, 0x17, 0x05, 0xe3, 0x04, 0xe3, 0x04, + 0xa4, 0x04, 0xa5, 0x04, 0x5f, 0x04, 0x5e, 0x04, 0x11, 0x04, 0x12, 0x04, + 0xbf, 0x03, 0xbe, 0x03, 0x63, 0x03, 0x62, 0x03, 0x03, 0x03, 0x03, 0x03, + 0xa0, 0x02, 0x9f, 0x02, 0x35, 0x02, 0x37, 0x02, 0xcf, 0x01, 0xce, 0x01, + 0x62, 0x01, 0x60, 0x01, 0xf3, 0x00, 0xf4, 0x00, 0x85, 0x00, 0x86, 0x00, + 0x18, 0x00, 0x18, 0x00, 0xae, 0xff, 0xad, 0xff, 0x42, 0xff, 0x42, 0xff, + 0xdb, 0xfe, 0xdb, 0xfe, 0x77, 0xfe, 0x75, 0xfe, 0x11, 0xfe, 0x14, 0xfe, + 0xb6, 0xfd, 0xb5, 0xfd, 0x59, 0xfd, 0x5b, 0xfd, 0x04, 0xfd, 0x03, 0xfd, + 0xb3, 0xfc, 0xb5, 0xfc, 0x65, 0xfc, 0x63, 0xfc, 0x1e, 0xfc, 0x21, 0xfc, + 0xdb, 0xfb, 0xda, 0xfb, 0xa1, 0xfb, 0xa1, 0xfb, 0x66, 0xfb, 0x69, 0xfb, + 0x38, 0xfb, 0x36, 0xfb, 0x0a, 0xfb, 0x0d, 0xfb, 0xe5, 0xfa, 0xe4, 0xfa, + 0xc9, 0xfa, 0xca, 0xfa, 0xae, 0xfa, 0xae, 0xfa, 0x9c, 0xfa, 0x9d, 0xfa, + 0x92, 0xfa, 0x90, 0xfa, 0x8b, 0xfa, 0x8e, 0xfa, 0x8e, 0xfa, 0x8e, 0xfa, + 0x96, 0xfa, 0x97, 0xfa, 0xa5, 0xfa, 0xa5, 0xfa, 0xbe, 0xfa, 0xbe, 0xfa, + 0xd8, 0xfa, 0xda, 0xfa, 0x01, 0xfb, 0xff, 0xfa, 0x29, 0xfb, 0x2d, 0xfb, + 0x5d, 0xfb, 0x5c, 0xfb, 0x99, 0xfb, 0x9a, 0xfb, 0xd8, 0xfb, 0xd9, 0xfb, + 0x22, 0xfc, 0x22, 0xfc, 0x6f, 0xfc, 0x6f, 0xfc, 0xc2, 0xfc, 0xc4, 0xfc, + 0x1f, 0xfd, 0x1e, 0xfd, 0x7d, 0xfd, 0x7c, 0xfd, 0xe2, 0xfd, 0xe3, 0xfd, + 0x4b, 0xfe, 0x49, 0xfe, 0xb4, 0xfe, 0xb8, 0xfe, 0x27, 0xff, 0x24, 0xff, + 0x98, 0xff, 0x99, 0xff, 0x0a, 0x00, 0x09, 0x00, 0x7e, 0x00, 0x7d, 0x00, + 0xf1, 0x00, 0xf1, 0x00, 0x64, 0x01, 0x62, 0x01, 0xd2, 0x01, 0xd2, 0x01, + 0x3b, 0x02, 0x3b, 0x02, 0xa5, 0x02, 0xa2, 0x02, 0x02, 0x03, 0x03, 0x03, + 0x5f, 0x03, 0x5d, 0x03, 0xad, 0x03, 0xad, 0x03, 0xf8, 0x03, 0xf8, 0x03, + 0x37, 0x04, 0x37, 0x04, 0x6b, 0x04, 0x6a, 0x04, 0x98, 0x04, 0x99, 0x04, + 0xb4, 0x04, 0xb3, 0x04, 0xc7, 0x04, 0xc7, 0x04, 0xcf, 0x04, 0xcd, 0x04, + 0xc6, 0x04, 0xc7, 0x04, 0xb3, 0x04, 0xb3, 0x04, 0x92, 0x04, 0x92, 0x04, + 0x68, 0x04, 0x66, 0x04, 0x2e, 0x04, 0x2e, 0x04, 0xea, 0x03, 0xea, 0x03, + 0x9b, 0x03, 0x9c, 0x03, 0x43, 0x03, 0x42, 0x03, 0xe1, 0x02, 0xe1, 0x02, + 0x75, 0x02, 0x76, 0x02, 0x04, 0x02, 0x04, 0x02, 0x8e, 0x01, 0x8e, 0x01, + 0x11, 0x01, 0x10, 0x01, 0x92, 0x00, 0x92, 0x00, 0x0f, 0x00, 0x10, 0x00, + 0x8f, 0xff, 0x8e, 0xff, 0x10, 0xff, 0x0f, 0xff, 0x8f, 0xfe, 0x8d, 0xfe, + 0x16, 0xfe, 0x17, 0xfe, 0xa0, 0xfd, 0x9f, 0xfd, 0x31, 0xfd, 0x32, 0xfd, + 0xca, 0xfc, 0xca, 0xfc, 0x6c, 0xfc, 0x6b, 0xfc, 0x18, 0xfc, 0x1b, 0xfc, + 0xd1, 0xfb, 0xce, 0xfb, 0x90, 0xfb, 0x93, 0xfb, 0x63, 0xfb, 0x63, 0xfb, + 0x3e, 0xfb, 0x3e, 0xfb, 0x2a, 0xfb, 0x2b, 0xfb, 0x21, 0xfb, 0x1f, 0xfb, + 0x25, 0xfb, 0x27, 0xfb, 0x3a, 0xfb, 0x38, 0xfb, 0x5b, 0xfb, 0x59, 0xfb, + 0x87, 0xfb, 0x88, 0xfb, 0xc0, 0xfb, 0xbf, 0xfb, 0x07, 0xfc, 0x07, 0xfc, + 0x56, 0xfc, 0x56, 0xfc, 0xb1, 0xfc, 0xb2, 0xfc, 0x12, 0xfd, 0x12, 0xfd, + 0x7d, 0xfd, 0x7e, 0xfd, 0xec, 0xfd, 0xec, 0xfd, 0x64, 0xfe, 0x65, 0xfe, + 0xdb, 0xfe, 0xdc, 0xfe, 0x59, 0xff, 0x57, 0xff, 0xd5, 0xff, 0xd7, 0xff, + 0x52, 0x00, 0x51, 0x00, 0xcd, 0x00, 0xcf, 0x00, 0x42, 0x01, 0x44, 0x01, + 0xbb, 0x01, 0xb9, 0x01, 0x29, 0x02, 0x2b, 0x02, 0x94, 0x02, 0x93, 0x02, + 0xf7, 0x02, 0xf7, 0x02, 0x53, 0x03, 0x53, 0x03, 0xa4, 0x03, 0xa3, 0x03, + 0xf0, 0x03, 0xef, 0x03, 0x2e, 0x04, 0x2e, 0x04, 0x64, 0x04, 0x65, 0x04, + 0x92, 0x04, 0x93, 0x04, 0xb3, 0x04, 0xb2, 0x04, 0xce, 0x04, 0xce, 0x04, + 0xda, 0x04, 0xd9, 0x04, 0xdf, 0x04, 0xe0, 0x04, 0xdb, 0x04, 0xda, 0x04, + 0xcb, 0x04, 0xcb, 0x04, 0xb6, 0x04, 0xb7, 0x04, 0x96, 0x04, 0x95, 0x04, + 0x72, 0x04, 0x71, 0x04, 0x44, 0x04, 0x44, 0x04, 0x12, 0x04, 0x11, 0x04, + 0xd9, 0x03, 0xda, 0x03, 0x9c, 0x03, 0x9b, 0x03, 0x5c, 0x03, 0x5c, 0x03, + 0x15, 0x03, 0x16, 0x03, 0xcf, 0x02, 0xd0, 0x02, 0x85, 0x02, 0x87, 0x02, + 0x3b, 0x02, 0x3a, 0x02, 0xf1, 0x01, 0xf1, 0x01, 0xa5, 0x01, 0xa7, 0x01, + 0x5c, 0x01, 0x5b, 0x01, 0x10, 0x01, 0x11, 0x01, 0xc9, 0x00, 0xca, 0x00, + 0x81, 0x00, 0x81, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0xfa, 0xff, 0xfa, 0xff, + 0xb9, 0xff, 0xb8, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0x40, 0xff, 0x40, 0xff, + 0x0a, 0xff, 0x0a, 0xff, 0xd5, 0xfe, 0xd5, 0xfe, 0xa7, 0xfe, 0xa5, 0xfe, + 0x76, 0xfe, 0x76, 0xfe, 0x4e, 0xfe, 0x4e, 0xfe, 0x26, 0xfe, 0x27, 0xfe, + 0x07, 0xfe, 0x06, 0xfe, 0xe7, 0xfd, 0xe8, 0xfd, 0xce, 0xfd, 0xcc, 0xfd, + 0xb7, 0xfd, 0xb9, 0xfd, 0xa6, 0xfd, 0xa5, 0xfd, 0x9b, 0xfd, 0x9b, 0xfd, + 0x90, 0xfd, 0x8f, 0xfd, 0x8e, 0xfd, 0x8d, 0xfd, 0x8f, 0xfd, 0x8e, 0xfd, + 0x94, 0xfd, 0x93, 0xfd, 0x9f, 0xfd, 0x9f, 0xfd, 0xae, 0xfd, 0xae, 0xfd, + 0xc2, 0xfd, 0xc2, 0xfd, 0xdc, 0xfd, 0xdc, 0xfd, 0xfa, 0xfd, 0xfb, 0xfd, + 0x1f, 0xfe, 0x1f, 0xfe, 0x47, 0xfe, 0x47, 0xfe, 0x74, 0xfe, 0x74, 0xfe, + 0xa7, 0xfe, 0xa8, 0xfe, 0xdd, 0xfe, 0xdc, 0xfe, 0x17, 0xff, 0x18, 0xff, + 0x57, 0xff, 0x54, 0xff, 0x99, 0xff, 0x9a, 0xff, 0xdd, 0xff, 0xdc, 0xff, + 0x24, 0x00, 0x24, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0xb8, 0x00, 0xb7, 0x00, + 0x01, 0x01, 0x03, 0x01, 0x4d, 0x01, 0x4c, 0x01, 0x95, 0x01, 0x96, 0x01, + 0xdd, 0x01, 0xdd, 0x01, 0x22, 0x02, 0x24, 0x02, 0x62, 0x02, 0x62, 0x02, + 0xa0, 0x02, 0xa1, 0x02, 0xd6, 0x02, 0xd6, 0x02, 0x05, 0x03, 0x06, 0x03, + 0x2f, 0x03, 0x30, 0x03, 0x50, 0x03, 0x50, 0x03, 0x68, 0x03, 0x68, 0x03, + 0x79, 0x03, 0x79, 0x03, 0x7e, 0x03, 0x7d, 0x03, 0x7b, 0x03, 0x7b, 0x03, + 0x69, 0x03, 0x68, 0x03, 0x4f, 0x03, 0x51, 0x03, 0x2a, 0x03, 0x29, 0x03, + 0xf8, 0x02, 0xfa, 0x02, 0xbf, 0x02, 0xbe, 0x02, 0x7a, 0x02, 0x7b, 0x02, + 0x2b, 0x02, 0x2c, 0x02, 0xd2, 0x01, 0xd1, 0x01, 0x70, 0x01, 0x71, 0x01, + 0x05, 0x01, 0x06, 0x01, 0x96, 0x00, 0x95, 0x00, 0x1c, 0x00, 0x1e, 0x00, + 0xa1, 0xff, 0x9f, 0xff, 0x1f, 0xff, 0x23, 0xff, 0x9e, 0xfe, 0x9c, 0xfe, + 0x19, 0xfe, 0x1c, 0xfe, 0x95, 0xfd, 0x95, 0xfd, 0x14, 0xfd, 0x14, 0xfd, + 0x94, 0xfc, 0x96, 0xfc, 0x1b, 0xfc, 0x1a, 0xfc, 0xa3, 0xfb, 0xa7, 0xfb, + 0x38, 0xfb, 0x38, 0xfb, 0xd3, 0xfa, 0xd3, 0xfa, 0x75, 0xfa, 0x76, 0xfa, + 0x27, 0xfa, 0x26, 0xfa, 0xdc, 0xf9, 0xdf, 0xf9, 0xaa, 0xf9, 0xa7, 0xf9, + 0x78, 0xf9, 0x79, 0xf9, 0x5c, 0xf9, 0x5c, 0xf9, 0x4b, 0xf9, 0x4a, 0xf9, + 0x47, 0xf9, 0x4a, 0xf9, 0x55, 0xf9, 0x54, 0xf9, 0x6d, 0xf9, 0x6e, 0xf9, + 0x97, 0xf9, 0x96, 0xf9, 0xcc, 0xf9, 0xcc, 0xf9, 0x0d, 0xfa, 0x0f, 0xfa, + 0x5e, 0xfa, 0x5f, 0xfa, 0xba, 0xfa, 0xb9, 0xfa, 0x21, 0xfb, 0x20, 0xfb, + 0x8e, 0xfb, 0x8f, 0xfb, 0x09, 0xfc, 0x07, 0xfc, 0x88, 0xfc, 0x8a, 0xfc, + 0x10, 0xfd, 0x0f, 0xfd, 0x9b, 0xfd, 0x9a, 0xfd, 0x27, 0xfe, 0x28, 0xfe, + 0xb8, 0xfe, 0xb8, 0xfe, 0x49, 0xff, 0x48, 0xff, 0xd8, 0xff, 0xda, 0xff, + 0x67, 0x00, 0x66, 0x00, 0xf1, 0x00, 0xf1, 0x00, 0x78, 0x01, 0x75, 0x01, + 0xf4, 0x01, 0xf6, 0x01, 0x72, 0x02, 0x71, 0x02, 0xe0, 0x02, 0xe1, 0x02, + 0x48, 0x03, 0x48, 0x03, 0xa8, 0x03, 0xa7, 0x03, 0xf9, 0x03, 0xfa, 0x03, + 0x46, 0x04, 0x45, 0x04, 0x82, 0x04, 0x83, 0x04, 0xb5, 0x04, 0xb5, 0x04, + 0xdd, 0x04, 0xdc, 0x04, 0xf8, 0x04, 0xf9, 0x04, 0x06, 0x05, 0x05, 0x05, + 0x0d, 0x05, 0x0d, 0x05, 0x02, 0x05, 0x02, 0x05, 0xf6, 0x04, 0xf7, 0x04, + 0xda, 0x04, 0xd8, 0x04, 0xb4, 0x04, 0xb7, 0x04, 0x8a, 0x04, 0x89, 0x04, + 0x52, 0x04, 0x52, 0x04, 0x17, 0x04, 0x17, 0x04, 0xd3, 0x03, 0xd2, 0x03, + 0x8a, 0x03, 0x8c, 0x03, 0x3d, 0x03, 0x3b, 0x03, 0xeb, 0x02, 0xec, 0x02, + 0x94, 0x02, 0x95, 0x02, 0x3d, 0x02, 0x3d, 0x02, 0xe2, 0x01, 0xe3, 0x01, + 0x87, 0x01, 0x87, 0x01, 0x2c, 0x01, 0x2e, 0x01, 0xd0, 0x00, 0xd0, 0x00, + 0x78, 0x00, 0x78, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0xc7, 0xff, 0xc9, 0xff, + 0x75, 0xff, 0x74, 0xff, 0x23, 0xff, 0x26, 0xff, 0xd6, 0xfe, 0xd6, 0xfe, + 0x8d, 0xfe, 0x8c, 0xfe, 0x46, 0xfe, 0x47, 0xfe, 0x08, 0xfe, 0x06, 0xfe, + 0xc9, 0xfd, 0xca, 0xfd, 0x92, 0xfd, 0x92, 0xfd, 0x5f, 0xfd, 0x5e, 0xfd, + 0x32, 0xfd, 0x2e, 0xfd, 0x07, 0xfd, 0x08, 0xfd, 0xe5, 0xfc, 0xe2, 0xfc, + 0xc7, 0xfc, 0xc7, 0xfc, 0xb1, 0xfc, 0xaf, 0xfc, 0x9e, 0xfc, 0x9d, 0xfc, + 0x92, 0xfc, 0x92, 0xfc, 0x8e, 0xfc, 0x8c, 0xfc, 0x90, 0xfc, 0x8e, 0xfc, + 0x94, 0xfc, 0x95, 0xfc, 0xa4, 0xfc, 0xa2, 0xfc, 0xb8, 0xfc, 0xb8, 0xfc, + 0xd3, 0xfc, 0xd0, 0xfc, 0xf6, 0xfc, 0xf6, 0xfc, 0x1b, 0xfd, 0x1b, 0xfd, + 0x4d, 0xfd, 0x4b, 0xfd, 0x83, 0xfd, 0x84, 0xfd, 0xbf, 0xfd, 0xbe, 0xfd, + 0x01, 0xfe, 0x00, 0xfe, 0x49, 0xfe, 0x4a, 0xfe, 0x99, 0xfe, 0x96, 0xfe, + 0xec, 0xfe, 0xeb, 0xfe, 0x45, 0xff, 0x45, 0xff, 0xa4, 0xff, 0xa2, 0xff, + 0x03, 0x00, 0x05, 0x00, 0x6d, 0x00, 0x6a, 0x00, 0xd2, 0x00, 0xd2, 0x00, + 0x3e, 0x01, 0x40, 0x01, 0xad, 0x01, 0xaa, 0x01, 0x17, 0x02, 0x1a, 0x02, + 0x89, 0x02, 0x87, 0x02, 0xf4, 0x02, 0xf5, 0x02, 0x60, 0x03, 0x5f, 0x03, + 0xc7, 0x03, 0xc7, 0x03, 0x2b, 0x04, 0x2a, 0x04, 0x8a, 0x04, 0x8b, 0x04, + 0xe2, 0x04, 0xe1, 0x04, 0x33, 0x05, 0x33, 0x05, 0x7b, 0x05, 0x7d, 0x05, + 0xbf, 0x05, 0xbc, 0x05, 0xf3, 0x05, 0xf4, 0x05, 0x20, 0x06, 0x21, 0x06, + 0x40, 0x06, 0x3f, 0x06, 0x56, 0x06, 0x56, 0x06, 0x5d, 0x06, 0x5d, 0x06, + 0x5a, 0x06, 0x59, 0x06, 0x47, 0x06, 0x46, 0x06, 0x2c, 0x06, 0x2a, 0x06, + 0xfd, 0x05, 0xfd, 0x05, 0xc8, 0x05, 0xc6, 0x05, 0x83, 0x05, 0x81, 0x05, + 0x33, 0x05, 0x31, 0x05, 0xd7, 0x04, 0xd7, 0x04, 0x72, 0x04, 0x70, 0x04, + 0x02, 0x04, 0x01, 0x04, 0x8a, 0x03, 0x87, 0x03, 0x09, 0x03, 0x08, 0x03, + 0x81, 0x02, 0x7e, 0x02, 0xf5, 0x01, 0xf5, 0x01, 0x67, 0x01, 0x64, 0x01, + 0xd2, 0x00, 0xd1, 0x00, 0x40, 0x00, 0x3e, 0x00, 0xab, 0xff, 0xaa, 0xff, + 0x1b, 0xff, 0x1a, 0xff, 0x8b, 0xfe, 0x8b, 0xfe, 0x04, 0xfe, 0x02, 0xfe, + 0x81, 0xfd, 0x81, 0xfd, 0x03, 0xfd, 0x01, 0xfd, 0x91, 0xfc, 0x91, 0xfc, + 0x26, 0xfc, 0x25, 0xfc, 0xc9, 0xfb, 0xc6, 0xfb, 0x76, 0xfb, 0x75, 0xfb, + 0x2e, 0xfb, 0x2b, 0xfb, 0xf5, 0xfa, 0xf3, 0xfa, 0xc3, 0xfa, 0xc5, 0xfa, + 0xa9, 0xfa, 0xa7, 0xfa, 0x94, 0xfa, 0x93, 0xfa, 0x90, 0xfa, 0x8f, 0xfa, + 0x99, 0xfa, 0x9a, 0xfa, 0xae, 0xfa, 0xac, 0xfa, 0xd2, 0xfa, 0xd4, 0xfa, + 0x00, 0xfb, 0xfd, 0xfa, 0x39, 0xfb, 0x39, 0xfb, 0x7d, 0xfb, 0x7d, 0xfb, + 0xca, 0xfb, 0xc8, 0xfb, 0x20, 0xfc, 0x21, 0xfc, 0x7d, 0xfc, 0x7b, 0xfc, + 0xde, 0xfc, 0xde, 0xfc, 0x47, 0xfd, 0x47, 0xfd, 0xb3, 0xfd, 0xb1, 0xfd, + 0x1f, 0xfe, 0x20, 0xfe, 0x8f, 0xfe, 0x8d, 0xfe, 0xfd, 0xfe, 0xfd, 0xfe, + 0x69, 0xff, 0x67, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0x37, 0x00, 0x37, 0x00, + 0x99, 0x00, 0x99, 0x00, 0xf5, 0x00, 0xf3, 0x00, 0x49, 0x01, 0x48, 0x01, + 0x97, 0x01, 0x98, 0x01, 0xda, 0x01, 0xda, 0x01, 0x17, 0x02, 0x16, 0x02, + 0x4a, 0x02, 0x4b, 0x02, 0x74, 0x02, 0x73, 0x02, 0x95, 0x02, 0x94, 0x02, + 0xac, 0x02, 0xad, 0x02, 0xb9, 0x02, 0xb8, 0x02, 0xbd, 0x02, 0xbb, 0x02, + 0xb7, 0x02, 0xb7, 0x02, 0xa9, 0x02, 0xa7, 0x02, 0x93, 0x02, 0x93, 0x02, + 0x76, 0x02, 0x74, 0x02, 0x4e, 0x02, 0x50, 0x02, 0x25, 0x02, 0x22, 0x02, + 0xf2, 0x01, 0xf2, 0x01, 0xbc, 0x01, 0xba, 0x01, 0x7f, 0x01, 0x7f, 0x01, + 0x40, 0x01, 0x3e, 0x01, 0xfe, 0x00, 0xfe, 0x00, 0xb9, 0x00, 0xb7, 0x00, + 0x71, 0x00, 0x71, 0x00, 0x2c, 0x00, 0x29, 0x00, 0xe1, 0xff, 0xe2, 0xff, + 0x9a, 0xff, 0x99, 0xff, 0x54, 0xff, 0x52, 0xff, 0x0c, 0xff, 0x0b, 0xff, + 0xca, 0xfe, 0xc9, 0xfe, 0x86, 0xfe, 0x86, 0xfe, 0x47, 0xfe, 0x46, 0xfe, + 0x0b, 0xfe, 0x0a, 0xfe, 0xd2, 0xfd, 0xd1, 0xfd, 0x9c, 0xfd, 0x9c, 0xfd, + 0x6b, 0xfd, 0x6a, 0xfd, 0x3c, 0xfd, 0x39, 0xfd, 0x11, 0xfd, 0x11, 0xfd, + 0xea, 0xfc, 0xe8, 0xfc, 0xc9, 0xfc, 0xc8, 0xfc, 0xaa, 0xfc, 0xa9, 0xfc, + 0x90, 0xfc, 0x91, 0xfc, 0x7d, 0xfc, 0x7c, 0xfc, 0x6b, 0xfc, 0x6b, 0xfc, + 0x61, 0xfc, 0x60, 0xfc, 0x5a, 0xfc, 0x5a, 0xfc, 0x5a, 0xfc, 0x59, 0xfc, + 0x5c, 0xfc, 0x5c, 0xfc, 0x64, 0xfc, 0x63, 0xfc, 0x72, 0xfc, 0x71, 0xfc, + 0x85, 0xfc, 0x83, 0xfc, 0x9c, 0xfc, 0x9a, 0xfc, 0xb8, 0xfc, 0xb8, 0xfc, + 0xdc, 0xfc, 0xdb, 0xfc, 0x02, 0xfd, 0x01, 0xfd, 0x30, 0xfd, 0x2f, 0xfd, + 0x61, 0xfd, 0x60, 0xfd, 0x98, 0xfd, 0x98, 0xfd, 0xd5, 0xfd, 0xd3, 0xfd, + 0x12, 0xfe, 0x13, 0xfe, 0x5b, 0xfe, 0x59, 0xfe, 0xa1, 0xfe, 0xa1, 0xfe, + 0xf0, 0xfe, 0xef, 0xfe, 0x3f, 0xff, 0x3f, 0xff, 0x94, 0xff, 0x94, 0xff, + 0xea, 0xff, 0xea, 0xff, 0x42, 0x00, 0x42, 0x00, 0x9e, 0x00, 0x9d, 0x00, + 0xfa, 0x00, 0xfa, 0x00, 0x56, 0x01, 0x56, 0x01, 0xb2, 0x01, 0xaf, 0x01, + 0x0b, 0x02, 0x0c, 0x02, 0x64, 0x02, 0x62, 0x02, 0xb9, 0x02, 0xb9, 0x02, + 0x0c, 0x03, 0x0b, 0x03, 0x59, 0x03, 0x57, 0x03, 0xa2, 0x03, 0xa2, 0x03, + 0xe2, 0x03, 0xe1, 0x03, 0x1e, 0x04, 0x1d, 0x04, 0x4e, 0x04, 0x4e, 0x04, + 0x78, 0x04, 0x77, 0x04, 0x9a, 0x04, 0x99, 0x04, 0xb0, 0x04, 0xb0, 0x04, + 0xc0, 0x04, 0xbf, 0x04, 0xc0, 0x04, 0xbf, 0x04, 0xba, 0x04, 0xbb, 0x04, + 0xa5, 0x04, 0xa2, 0x04, 0x88, 0x04, 0x88, 0x04, 0x5f, 0x04, 0x5e, 0x04, + 0x2b, 0x04, 0x2b, 0x04, 0xed, 0x03, 0xed, 0x03, 0xa5, 0x03, 0xa5, 0x03, + 0x54, 0x03, 0x53, 0x03, 0xfb, 0x02, 0xfa, 0x02, 0x99, 0x02, 0x99, 0x02, + 0x32, 0x02, 0x31, 0x02, 0xc4, 0x01, 0xc3, 0x01, 0x51, 0x01, 0x4f, 0x01, + 0xd7, 0x00, 0xd8, 0x00, 0x63, 0x00, 0x60, 0x00, 0xe6, 0xff, 0xe6, 0xff, + 0x6d, 0xff, 0x6a, 0xff, 0xf4, 0xfe, 0xf3, 0xfe, 0x7e, 0xfe, 0x80, 0xfe, + 0x0c, 0xfe, 0x0a, 0xfe, 0xa0, 0xfd, 0xa0, 0xfd, 0x3e, 0xfd, 0x3c, 0xfd, + 0xdf, 0xfc, 0xde, 0xfc, 0x8c, 0xfc, 0x8d, 0xfc, 0x43, 0xfc, 0x42, 0xfc, + 0x04, 0xfc, 0x04, 0xfc, 0xd4, 0xfb, 0xd4, 0xfb, 0xae, 0xfb, 0xac, 0xfb, + 0x97, 0xfb, 0x95, 0xfb, 0x8b, 0xfb, 0x8b, 0xfb, 0x8e, 0xfb, 0x8b, 0xfb, + 0x9f, 0xfb, 0x9e, 0xfb, 0xbb, 0xfb, 0xbb, 0xfb, 0xe6, 0xfb, 0xe4, 0xfb, + 0x1d, 0xfc, 0x1c, 0xfc, 0x60, 0xfc, 0x5f, 0xfc, 0xae, 0xfc, 0xac, 0xfc, + 0x08, 0xfd, 0x07, 0xfd, 0x69, 0xfd, 0x69, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, + 0x48, 0xfe, 0x46, 0xfe, 0xc0, 0xfe, 0xc0, 0xfe, 0x3f, 0xff, 0x3c, 0xff, + 0xbe, 0xff, 0xbe, 0xff, 0x41, 0x00, 0x40, 0x00, 0xc6, 0x00, 0xc4, 0x00, + 0x48, 0x01, 0x47, 0x01, 0xc9, 0x01, 0xc9, 0x01, 0x48, 0x02, 0x47, 0x02, + 0xc2, 0x02, 0xbf, 0x02, 0x35, 0x03, 0x37, 0x03, 0xa5, 0x03, 0xa1, 0x03, + 0x08, 0x04, 0x0a, 0x04, 0x69, 0x04, 0x65, 0x04, 0xba, 0x04, 0xba, 0x04, + 0x06, 0x05, 0x04, 0x05, 0x46, 0x05, 0x44, 0x05, 0x77, 0x05, 0x77, 0x05, + 0xa1, 0x05, 0x9e, 0x05, 0xbe, 0x05, 0xbd, 0x05, 0xcc, 0x05, 0xcb, 0x05, + 0xd3, 0x05, 0xd1, 0x05, 0xcb, 0x05, 0xcb, 0x05, 0xba, 0x05, 0xb7, 0x05, + 0x9b, 0x05, 0x9b, 0x05, 0x76, 0x05, 0x73, 0x05, 0x42, 0x05, 0x43, 0x05, + 0x09, 0x05, 0x05, 0x05, 0xc3, 0x04, 0xc6, 0x04, 0x79, 0x04, 0x75, 0x04, + 0x24, 0x04, 0x25, 0x04, 0xcb, 0x03, 0xca, 0x03, 0x6b, 0x03, 0x6b, 0x03, + 0x08, 0x03, 0x07, 0x03, 0x9e, 0x02, 0xa0, 0x02, 0x35, 0x02, 0x33, 0x02, + 0xc4, 0x01, 0xc6, 0x01, 0x57, 0x01, 0x54, 0x01, 0xe8, 0x00, 0xe8, 0x00, + 0x77, 0x00, 0x77, 0x00, 0x09, 0x00, 0x07, 0x00, 0x9a, 0xff, 0x99, 0xff, + 0x2d, 0xff, 0x2e, 0xff, 0xc4, 0xfe, 0xc3, 0xfe, 0x5d, 0xfe, 0x5d, 0xfe, + 0xfa, 0xfd, 0xfa, 0xfd, 0x9c, 0xfd, 0x9b, 0xfd, 0x41, 0xfd, 0x40, 0xfd, + 0xec, 0xfc, 0xec, 0xfc, 0x9d, 0xfc, 0x9c, 0xfc, 0x51, 0xfc, 0x50, 0xfc, + 0x0c, 0xfc, 0x0c, 0xfc, 0xcc, 0xfb, 0xcb, 0xfb, 0x91, 0xfb, 0x90, 0xfb, + 0x62, 0xfb, 0x61, 0xfb, 0x30, 0xfb, 0x31, 0xfb, 0x0f, 0xfb, 0x0d, 0xfb, + 0xec, 0xfa, 0xed, 0xfa, 0xd8, 0xfa, 0xd6, 0xfa, 0xc5, 0xfa, 0xc5, 0xfa, + 0xbb, 0xfa, 0xba, 0xfa, 0xba, 0xfa, 0xb9, 0xfa, 0xba, 0xfa, 0xbb, 0xfa, + 0xca, 0xfa, 0xc7, 0xfa, 0xd9, 0xfa, 0xdc, 0xfa, 0xf6, 0xfa, 0xf2, 0xfa, + 0x16, 0xfb, 0x17, 0xfb, 0x3e, 0xfb, 0x3c, 0xfb, 0x70, 0xfb, 0x6e, 0xfb, + 0xa5, 0xfb, 0xa4, 0xfb, 0xe5, 0xfb, 0xe2, 0xfb, 0x28, 0xfc, 0x27, 0xfc, + 0x70, 0xfc, 0x6f, 0xfc, 0xc2, 0xfc, 0xbf, 0xfc, 0x14, 0xfd, 0x16, 0xfd, + 0x71, 0xfd, 0x6e, 0xfd, 0xcf, 0xfd, 0xcf, 0xfd, 0x34, 0xfe, 0x34, 0xfe, + 0x98, 0xfe, 0x98, 0xfe, 0x04, 0xff, 0x01, 0xff, 0x6e, 0xff, 0x6e, 0xff, + 0xdc, 0xff, 0xdb, 0xff, 0x49, 0x00, 0x49, 0x00, 0xb6, 0x00, 0xb5, 0x00, + 0x24, 0x01, 0x21, 0x01, 0x8b, 0x01, 0x8b, 0x01, 0xf3, 0x01, 0xef, 0x01, + 0x54, 0x02, 0x54, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0x07, 0x03, 0x04, 0x03, + 0x54, 0x03, 0x54, 0x03, 0x9d, 0x03, 0x9a, 0x03, 0xda, 0x03, 0xd8, 0x03, + 0x0f, 0x04, 0x0e, 0x04, 0x37, 0x04, 0x36, 0x04, 0x59, 0x04, 0x57, 0x04, + 0x6a, 0x04, 0x6a, 0x04, 0x75, 0x04, 0x72, 0x04, 0x70, 0x04, 0x6e, 0x04, + 0x60, 0x04, 0x5e, 0x04, 0x45, 0x04, 0x41, 0x04, 0x1d, 0x04, 0x1b, 0x04, + 0xe9, 0x03, 0xe9, 0x03, 0xad, 0x03, 0xab, 0x03, 0x62, 0x03, 0x61, 0x03, + 0x12, 0x03, 0x0d, 0x03, 0xb5, 0x02, 0xb6, 0x02, 0x52, 0x02, 0x4f, 0x02, + 0xe7, 0x01, 0xe6, 0x01, 0x75, 0x01, 0x73, 0x01, 0x00, 0x01, 0xfd, 0x00, + 0x86, 0x00, 0x85, 0x00, 0x08, 0x00, 0x05, 0x00, 0x8b, 0xff, 0x89, 0xff, + 0x0b, 0xff, 0x0a, 0xff, 0x90, 0xfe, 0x8f, 0xfe, 0x15, 0xfe, 0x14, 0xfe, + 0x9f, 0xfd, 0x9c, 0xfd, 0x30, 0xfd, 0x2f, 0xfd, 0xc4, 0xfc, 0xc1, 0xfc, + 0x65, 0xfc, 0x65, 0xfc, 0x09, 0xfc, 0x08, 0xfc, 0xbd, 0xfb, 0xbb, 0xfb, + 0x76, 0xfb, 0x77, 0xfb, 0x3e, 0xfb, 0x3c, 0xfb, 0x11, 0xfb, 0x11, 0xfb, + 0xf0, 0xfa, 0xef, 0xfa, 0xdf, 0xfa, 0xde, 0xfa, 0xd7, 0xfa, 0xd5, 0xfa, + 0xe1, 0xfa, 0xe0, 0xfa, 0xf3, 0xfa, 0xf2, 0xfa, 0x17, 0xfb, 0x16, 0xfb, + 0x42, 0xfb, 0x41, 0xfb, 0x7e, 0xfb, 0x7d, 0xfb, 0xc2, 0xfb, 0xc2, 0xfb, + 0x10, 0xfc, 0x10, 0xfc, 0x6c, 0xfc, 0x6c, 0xfc, 0xcc, 0xfc, 0xcb, 0xfc, + 0x37, 0xfd, 0x37, 0xfd, 0xa7, 0xfd, 0xa7, 0xfd, 0x1b, 0xfe, 0x1b, 0xfe, + 0x98, 0xfe, 0x97, 0xfe, 0x10, 0xff, 0x11, 0xff, 0x91, 0xff, 0x90, 0xff, + 0x0b, 0x00, 0x0d, 0x00, 0x89, 0x00, 0x89, 0x00, 0x04, 0x01, 0x05, 0x01, + 0x7a, 0x01, 0x7a, 0x01, 0xed, 0x01, 0xee, 0x01, 0x5a, 0x02, 0x5a, 0x02, + 0xc1, 0x02, 0xc1, 0x02, 0x1f, 0x03, 0x1f, 0x03, 0x76, 0x03, 0x77, 0x03, + 0xc7, 0x03, 0xc5, 0x03, 0x08, 0x04, 0x09, 0x04, 0x45, 0x04, 0x43, 0x04, + 0x77, 0x04, 0x77, 0x04, 0x9e, 0x04, 0x9c, 0x04, 0xbd, 0x04, 0xbd, 0x04, + 0xd0, 0x04, 0xcf, 0x04, 0xda, 0x04, 0xd9, 0x04, 0xd9, 0x04, 0xd8, 0x04, + 0xd1, 0x04, 0xd2, 0x04, 0xbe, 0x04, 0xbc, 0x04, 0xa3, 0x04, 0xa4, 0x04, + 0x81, 0x04, 0x81, 0x04, 0x56, 0x04, 0x54, 0x04, 0x28, 0x04, 0x26, 0x04, + 0xee, 0x03, 0xed, 0x03, 0xb3, 0x03, 0xb1, 0x03, 0x71, 0x03, 0x72, 0x03, + 0x2c, 0x03, 0x2a, 0x03, 0xe6, 0x02, 0xe5, 0x02, 0x9b, 0x02, 0x99, 0x02, + 0x4e, 0x02, 0x4d, 0x02, 0x02, 0x02, 0x00, 0x02, 0xb4, 0x01, 0xb4, 0x01, + 0x68, 0x01, 0x66, 0x01, 0x19, 0x01, 0x19, 0x01, 0xcf, 0x00, 0xce, 0x00, + 0x84, 0x00, 0x83, 0x00, 0x3d, 0x00, 0x3b, 0x00, 0xf7, 0xff, 0xf6, 0xff, + 0xb5, 0xff, 0xb4, 0xff, 0x77, 0xff, 0x75, 0xff, 0x3a, 0xff, 0x39, 0xff, + 0x01, 0xff, 0x01, 0xff, 0xce, 0xfe, 0xcc, 0xfe, 0x9d, 0xfe, 0x9b, 0xfe, + 0x72, 0xfe, 0x73, 0xfe, 0x4b, 0xfe, 0x49, 0xfe, 0x28, 0xfe, 0x28, 0xfe, + 0x0b, 0xfe, 0x09, 0xfe, 0xf1, 0xfd, 0xf0, 0xfd, 0xde, 0xfd, 0xde, 0xfd, + 0xce, 0xfd, 0xcc, 0xfd, 0xc2, 0xfd, 0xc3, 0xfd, 0xbd, 0xfd, 0xbb, 0xfd, + 0xbc, 0xfd, 0xbd, 0xfd, 0xc3, 0xfd, 0xc0, 0xfd, 0xca, 0xfd, 0xc9, 0xfd, + 0xd9, 0xfd, 0xdb, 0xfd, 0xed, 0xfd, 0xec, 0xfd, 0x04, 0xfe, 0x05, 0xfe, + 0x23, 0xfe, 0x22, 0xfe, 0x42, 0xfe, 0x43, 0xfe, 0x6b, 0xfe, 0x6a, 0xfe, + 0x96, 0xfe, 0x96, 0xfe, 0xc6, 0xfe, 0xc5, 0xfe, 0xfa, 0xfe, 0xf9, 0xfe, + 0x30, 0xff, 0x30, 0xff, 0x6b, 0xff, 0x69, 0xff, 0xa8, 0xff, 0xa8, 0xff, + 0xe9, 0xff, 0xe8, 0xff, 0x2b, 0x00, 0x2a, 0x00, 0x70, 0x00, 0x6f, 0x00, + 0xb6, 0x00, 0xb7, 0x00, 0xfd, 0x00, 0xfc, 0x00, 0x43, 0x01, 0x43, 0x01, + 0x8b, 0x01, 0x89, 0x01, 0xd0, 0x01, 0xd0, 0x01, 0x11, 0x02, 0x10, 0x02, + 0x51, 0x02, 0x51, 0x02, 0x8e, 0x02, 0x8b, 0x02, 0xc5, 0x02, 0xc7, 0x02, + 0xfa, 0x02, 0xf7, 0x02, 0x25, 0x03, 0x27, 0x03, 0x4e, 0x03, 0x4c, 0x03, + 0x6f, 0x03, 0x6f, 0x03, 0x86, 0x03, 0x85, 0x03, 0x97, 0x03, 0x97, 0x03, + 0x9e, 0x03, 0x9d, 0x03, 0x9c, 0x03, 0x9b, 0x03, 0x91, 0x03, 0x90, 0x03, + 0x7b, 0x03, 0x7b, 0x03, 0x5c, 0x03, 0x5c, 0x03, 0x33, 0x03, 0x33, 0x03, + 0xfe, 0x02, 0xfd, 0x02, 0xc3, 0x02, 0xc2, 0x02, 0x7d, 0x02, 0x7d, 0x02, + 0x2d, 0x02, 0x2d, 0x02, 0xd7, 0x01, 0xd9, 0x01, 0x7a, 0x01, 0x76, 0x01, + 0x12, 0x01, 0x13, 0x01, 0xa7, 0x00, 0xa5, 0x00, 0x35, 0x00, 0x35, 0x00, + 0xbf, 0xff, 0xbe, 0xff, 0x46, 0xff, 0x44, 0xff, 0xcb, 0xfe, 0xca, 0xfe, + 0x4e, 0xfe, 0x4d, 0xfe, 0xd5, 0xfd, 0xd3, 0xfd, 0x58, 0xfd, 0x58, 0xfd, + 0xe3, 0xfc, 0xe1, 0xfc, 0x70, 0xfc, 0x6f, 0xfc, 0x02, 0xfc, 0x03, 0xfc, + 0x9d, 0xfb, 0x9b, 0xfb, 0x3c, 0xfb, 0x3b, 0xfb, 0xe8, 0xfa, 0xe6, 0xfa, + 0x97, 0xfa, 0x97, 0xfa, 0x58, 0xfa, 0x57, 0xfa, 0x1e, 0xfa, 0x1e, 0xfa, + 0xf3, 0xf9, 0xf1, 0xf9, 0xd6, 0xf9, 0xd4, 0xf9, 0xc1, 0xf9, 0xc1, 0xf9, + 0xbf, 0xf9, 0xbd, 0xf9, 0xc4, 0xf9, 0xc2, 0xf9, 0xd8, 0xf9, 0xd7, 0xf9, + 0xfc, 0xf9, 0xf9, 0xf9, 0x25, 0xfa, 0x26, 0xfa, 0x63, 0xfa, 0x60, 0xfa, + 0xa5, 0xfa, 0xa4, 0xfa, 0xf5, 0xfa, 0xf6, 0xfa, 0x50, 0xfb, 0x4f, 0xfb, + 0xb4, 0xfb, 0xb1, 0xfb, 0x1f, 0xfc, 0x1f, 0xfc, 0x90, 0xfc, 0x8d, 0xfc, + 0x07, 0xfd, 0x09, 0xfd, 0x83, 0xfd, 0x80, 0xfd, 0x04, 0xfe, 0x02, 0xfe, + 0x84, 0xfe, 0x83, 0xfe, 0x07, 0xff, 0x06, 0xff, 0x8b, 0xff, 0x89, 0xff, + 0x09, 0x00, 0x08, 0x00, 0x8a, 0x00, 0x87, 0x00, 0x03, 0x01, 0x02, 0x01, + 0x77, 0x01, 0x75, 0x01, 0xe8, 0x01, 0xe6, 0x01, 0x4c, 0x02, 0x4b, 0x02, + 0xaf, 0x02, 0xad, 0x02, 0x05, 0x03, 0x03, 0x03, 0x53, 0x03, 0x52, 0x03, + 0x98, 0x03, 0x97, 0x03, 0xd0, 0x03, 0xcf, 0x03, 0x03, 0x04, 0x02, 0x04, + 0x27, 0x04, 0x25, 0x04, 0x43, 0x04, 0x42, 0x04, 0x52, 0x04, 0x50, 0x04, + 0x59, 0x04, 0x58, 0x04, 0x55, 0x04, 0x53, 0x04, 0x46, 0x04, 0x45, 0x04, + 0x2f, 0x04, 0x2e, 0x04, 0x0e, 0x04, 0x0d, 0x04, 0xe7, 0x03, 0xe5, 0x03, + 0xb4, 0x03, 0xb4, 0x03, 0x7e, 0x03, 0x7d, 0x03, 0x40, 0x03, 0x3f, 0x03, + 0xfd, 0x02, 0xfd, 0x02, 0xb4, 0x02, 0xb2, 0x02, 0x67, 0x02, 0x69, 0x02, + 0x17, 0x02, 0x16, 0x02, 0xc3, 0x01, 0xc4, 0x01, 0x70, 0x01, 0x6e, 0x01, + 0x18, 0x01, 0x18, 0x01, 0xc3, 0x00, 0xc2, 0x00, 0x6c, 0x00, 0x6a, 0x00, + 0x15, 0x00, 0x15, 0x00, 0xbf, 0xff, 0xbf, 0xff, 0x6e, 0xff, 0x6c, 0xff, + 0x1c, 0xff, 0x1c, 0xff, 0xcf, 0xfe, 0xce, 0xfe, 0x86, 0xfe, 0x84, 0xfe, + 0x3e, 0xfe, 0x40, 0xfe, 0xfc, 0xfd, 0xfb, 0xfd, 0xbe, 0xfd, 0xbf, 0xfd, + 0x85, 0xfd, 0x83, 0xfd, 0x52, 0xfd, 0x50, 0xfd, 0x21, 0xfd, 0x22, 0xfd, + 0xfa, 0xfc, 0xf7, 0xfc, 0xd5, 0xfc, 0xd5, 0xfc, 0xb7, 0xfc, 0xb6, 0xfc, + 0xa0, 0xfc, 0xa2, 0xfc, 0x8d, 0xfc, 0x8a, 0xfc, 0x86, 0xfc, 0x85, 0xfc, + 0x7e, 0xfc, 0x7d, 0xfc, 0x80, 0xfc, 0x7e, 0xfc, 0x89, 0xfc, 0x88, 0xfc, + 0x96, 0xfc, 0x95, 0xfc, 0xad, 0xfc, 0xac, 0xfc, 0xc8, 0xfc, 0xc6, 0xfc, + 0xea, 0xfc, 0xea, 0xfc, 0x13, 0xfd, 0x12, 0xfd, 0x41, 0xfd, 0x40, 0xfd, + 0x75, 0xfd, 0x76, 0xfd, 0xb3, 0xfd, 0xb1, 0xfd, 0xf1, 0xfd, 0xf2, 0xfd, + 0x39, 0xfe, 0x37, 0xfe, 0x84, 0xfe, 0x84, 0xfe, 0xd6, 0xfe, 0xd5, 0xfe, + 0x2b, 0xff, 0x2a, 0xff, 0x85, 0xff, 0x84, 0xff, 0xe0, 0xff, 0xde, 0xff, + 0x41, 0x00, 0x40, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0x09, 0x01, 0x06, 0x01, + 0x6c, 0x01, 0x6c, 0x01, 0xd2, 0x01, 0xd2, 0x01, 0x37, 0x02, 0x36, 0x02, + 0xa0, 0x02, 0x9e, 0x02, 0xfe, 0x02, 0xfd, 0x02, 0x5f, 0x03, 0x60, 0x03, + 0xba, 0x03, 0xb8, 0x03, 0x12, 0x04, 0x13, 0x04, 0x65, 0x04, 0x64, 0x04, + 0xaf, 0x04, 0xb0, 0x04, 0xf6, 0x04, 0xf4, 0x04, 0x31, 0x05, 0x31, 0x05, + 0x68, 0x05, 0x66, 0x05, 0x93, 0x05, 0x94, 0x05, 0xb6, 0x05, 0xb5, 0x05, + 0xcf, 0x05, 0xcc, 0x05, 0xda, 0x05, 0xdc, 0x05, 0xdf, 0x05, 0xda, 0x05, + 0xd4, 0x05, 0xd7, 0x05, 0xc1, 0x05, 0xbe, 0x05, 0xa4, 0x05, 0xa3, 0x05, + 0x79, 0x05, 0x79, 0x05, 0x45, 0x05, 0x45, 0x05, 0x09, 0x05, 0x06, 0x05, + 0xbd, 0x04, 0xbd, 0x04, 0x71, 0x04, 0x70, 0x04, 0x13, 0x04, 0x12, 0x04, + 0xb3, 0x03, 0xb3, 0x03, 0x4b, 0x03, 0x49, 0x03, 0xdb, 0x02, 0xda, 0x02, + 0x68, 0x02, 0x66, 0x02, 0xf0, 0x01, 0xef, 0x01, 0x74, 0x01, 0x73, 0x01, + 0xf9, 0x00, 0xf8, 0x00, 0x7a, 0x00, 0x78, 0x00, 0xfe, 0xff, 0xfd, 0xff, + 0x85, 0xff, 0x83, 0xff, 0x0c, 0xff, 0x0b, 0xff, 0x98, 0xfe, 0x99, 0xfe, + 0x2c, 0xfe, 0x2a, 0xfe, 0xc3, 0xfd, 0xc2, 0xfd, 0x63, 0xfd, 0x62, 0xfd, + 0x0d, 0xfd, 0x09, 0xfd, 0xbb, 0xfc, 0xbc, 0xfc, 0x76, 0xfc, 0x74, 0xfc, + 0x3a, 0xfc, 0x3a, 0xfc, 0x0a, 0xfc, 0x08, 0xfc, 0xe2, 0xfb, 0xe1, 0xfb, + 0xc9, 0xfb, 0xc8, 0xfb, 0xb7, 0xfb, 0xb6, 0xfb, 0xb4, 0xfb, 0xb2, 0xfb, + 0xb9, 0xfb, 0xb8, 0xfb, 0xca, 0xfb, 0xc8, 0xfb, 0xe6, 0xfb, 0xe4, 0xfb, + 0x0a, 0xfc, 0x09, 0xfc, 0x38, 0xfc, 0x35, 0xfc, 0x6e, 0xfc, 0x6e, 0xfc, + 0xab, 0xfc, 0xa9, 0xfc, 0xf1, 0xfc, 0xf0, 0xfc, 0x3d, 0xfd, 0x3a, 0xfd, + 0x8c, 0xfd, 0x8b, 0xfd, 0xe1, 0xfd, 0xde, 0xfd, 0x37, 0xfe, 0x34, 0xfe, + 0x91, 0xfe, 0x90, 0xfe, 0xe9, 0xfe, 0xe7, 0xfe, 0x45, 0xff, 0x44, 0xff, + 0x9d, 0xff, 0x9b, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0x48, 0x00, 0x47, 0x00, + 0x96, 0x00, 0x94, 0x00, 0xe2, 0x00, 0xe2, 0x00, 0x2a, 0x01, 0x27, 0x01, + 0x6a, 0x01, 0x69, 0x01, 0xa5, 0x01, 0xa4, 0x01, 0xd8, 0x01, 0xd8, 0x01, + 0x05, 0x02, 0x02, 0x02, 0x28, 0x02, 0x29, 0x02, 0x47, 0x02, 0x45, 0x02, + 0x5b, 0x02, 0x5a, 0x02, 0x68, 0x02, 0x68, 0x02, 0x70, 0x02, 0x6d, 0x02, + 0x6c, 0x02, 0x6c, 0x02, 0x64, 0x02, 0x62, 0x02, 0x52, 0x02, 0x51, 0x02, + 0x39, 0x02, 0x38, 0x02, 0x1d, 0x02, 0x1d, 0x02, 0xf7, 0x01, 0xf7, 0x01, + 0xd1, 0x01, 0xd0, 0x01, 0x9f, 0x01, 0x9f, 0x01, 0x70, 0x01, 0x6f, 0x01, + 0x36, 0x01, 0x38, 0x01, 0xfe, 0x00, 0xfc, 0x00, 0xc2, 0x00, 0xc3, 0x00, + 0x82, 0x00, 0x82, 0x00, 0x44, 0x00, 0x44, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xbf, 0xff, 0xbe, 0xff, 0x7d, 0xff, 0x7e, 0xff, 0x3c, 0xff, 0x3c, 0xff, + 0xfc, 0xfe, 0xfb, 0xfe, 0xbd, 0xfe, 0xbc, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, + 0x43, 0xfe, 0x42, 0xfe, 0x0b, 0xfe, 0x0b, 0xfe, 0xd4, 0xfd, 0xd3, 0xfd, + 0xa1, 0xfd, 0xa1, 0xfd, 0x72, 0xfd, 0x71, 0xfd, 0x44, 0xfd, 0x44, 0xfd, + 0x1d, 0xfd, 0x1c, 0xfd, 0xf8, 0xfc, 0xf8, 0xfc, 0xd9, 0xfc, 0xda, 0xfc, + 0xbd, 0xfc, 0xbc, 0xfc, 0xa6, 0xfc, 0xa3, 0xfc, 0x92, 0xfc, 0x92, 0xfc, + 0x85, 0xfc, 0x83, 0xfc, 0x7c, 0xfc, 0x7c, 0xfc, 0x79, 0xfc, 0x77, 0xfc, + 0x7a, 0xfc, 0x7a, 0xfc, 0x81, 0xfc, 0x7f, 0xfc, 0x8b, 0xfc, 0x8b, 0xfc, + 0x9b, 0xfc, 0x9c, 0xfc, 0xb3, 0xfc, 0xb1, 0xfc, 0xcd, 0xfc, 0xcc, 0xfc, + 0xed, 0xfc, 0xeb, 0xfc, 0x12, 0xfd, 0x12, 0xfd, 0x3c, 0xfd, 0x3a, 0xfd, + 0x6b, 0xfd, 0x6b, 0xfd, 0x9d, 0xfd, 0x9d, 0xfd, 0xd6, 0xfd, 0xd4, 0xfd, + 0x11, 0xfe, 0x12, 0xfe, 0x50, 0xfe, 0x51, 0xfe, 0x94, 0xfe, 0x91, 0xfe, + 0xda, 0xfe, 0xdd, 0xfe, 0x25, 0xff, 0x21, 0xff, 0x6e, 0xff, 0x6e, 0xff, + 0xbb, 0xff, 0xba, 0xff, 0x09, 0x00, 0x08, 0x00, 0x57, 0x00, 0x55, 0x00, + 0xa7, 0x00, 0xa6, 0x00, 0xf3, 0x00, 0xf2, 0x00, 0x42, 0x01, 0x40, 0x01, + 0x8b, 0x01, 0x8c, 0x01, 0xd4, 0x01, 0xd2, 0x01, 0x1a, 0x02, 0x19, 0x02, + 0x5a, 0x02, 0x58, 0x02, 0x96, 0x02, 0x97, 0x02, 0xcd, 0x02, 0xcc, 0x02, + 0xfe, 0x02, 0xff, 0x02, 0x2a, 0x03, 0x27, 0x03, 0x4d, 0x03, 0x4e, 0x03, + 0x6a, 0x03, 0x69, 0x03, 0x7e, 0x03, 0x7d, 0x03, 0x8d, 0x03, 0x8c, 0x03, + 0x91, 0x03, 0x90, 0x03, 0x8f, 0x03, 0x8d, 0x03, 0x81, 0x03, 0x81, 0x03, + 0x6c, 0x03, 0x6a, 0x03, 0x4f, 0x03, 0x51, 0x03, 0x28, 0x03, 0x27, 0x03, + 0xfd, 0x02, 0xfc, 0x02, 0xc6, 0x02, 0xc6, 0x02, 0x8c, 0x02, 0x8a, 0x02, + 0x45, 0x02, 0x48, 0x02, 0xfe, 0x01, 0xfe, 0x01, 0xb1, 0x01, 0xb0, 0x01, + 0x5e, 0x01, 0x5e, 0x01, 0x08, 0x01, 0x06, 0x01, 0xaf, 0x00, 0xaf, 0x00, + 0x55, 0x00, 0x54, 0x00, 0xf8, 0xff, 0xf7, 0xff, 0x9c, 0xff, 0x9b, 0xff, + 0x41, 0xff, 0x40, 0xff, 0xe9, 0xfe, 0xe7, 0xfe, 0x93, 0xfe, 0x92, 0xfe, + 0x41, 0xfe, 0x42, 0xfe, 0xf6, 0xfd, 0xf4, 0xfd, 0xae, 0xfd, 0xae, 0xfd, + 0x6e, 0xfd, 0x6e, 0xfd, 0x37, 0xfd, 0x34, 0xfd, 0x04, 0xfd, 0x06, 0xfd, + 0xdf, 0xfc, 0xdc, 0xfc, 0xbf, 0xfc, 0xc0, 0xfc, 0xab, 0xfc, 0xa9, 0xfc, + 0xa0, 0xfc, 0xa1, 0xfc, 0xa0, 0xfc, 0x9e, 0xfc, 0xa9, 0xfc, 0xa8, 0xfc, + 0xbc, 0xfc, 0xbc, 0xfc, 0xda, 0xfc, 0xd9, 0xfc, 0x00, 0xfd, 0x01, 0xfd, + 0x32, 0xfd, 0x31, 0xfd, 0x6b, 0xfd, 0x6a, 0xfd, 0xad, 0xfd, 0xac, 0xfd, + 0xf5, 0xfd, 0xf4, 0xfd, 0x47, 0xfe, 0x45, 0xfe, 0x9b, 0xfe, 0x9d, 0xfe, + 0xf7, 0xfe, 0xf6, 0xfe, 0x58, 0xff, 0x56, 0xff, 0xb9, 0xff, 0xba, 0xff, + 0x1f, 0x00, 0x1f, 0x00, 0x84, 0x00, 0x85, 0x00, 0xee, 0x00, 0xed, 0x00, + 0x53, 0x01, 0x53, 0x01, 0xba, 0x01, 0xb8, 0x01, 0x19, 0x02, 0x1a, 0x02, + 0x7b, 0x02, 0x79, 0x02, 0xd5, 0x02, 0xd5, 0x02, 0x2a, 0x03, 0x28, 0x03, + 0x7c, 0x03, 0x7c, 0x03, 0xc5, 0x03, 0xc5, 0x03, 0x0a, 0x04, 0x09, 0x04, + 0x42, 0x04, 0x43, 0x04, 0x7a, 0x04, 0x77, 0x04, 0xa1, 0x04, 0xa3, 0x04, + 0xc6, 0x04, 0xc2, 0x04, 0xdb, 0x04, 0xde, 0x04, 0xf0, 0x04, 0xed, 0x04, + 0xf4, 0x04, 0xf5, 0x04, 0xf4, 0x04, 0xf3, 0x04, 0xe9, 0x04, 0xe8, 0x04, + 0xd6, 0x04, 0xd6, 0x04, 0xbb, 0x04, 0xba, 0x04, 0x97, 0x04, 0x96, 0x04, + 0x6e, 0x04, 0x6d, 0x04, 0x39, 0x04, 0x39, 0x04, 0x02, 0x04, 0x02, 0x04, + 0xc3, 0x03, 0xc1, 0x03, 0x7c, 0x03, 0x7c, 0x03, 0x34, 0x03, 0x32, 0x03, + 0xe4, 0x02, 0xe2, 0x02, 0x92, 0x02, 0x92, 0x02, 0x3c, 0x02, 0x3b, 0x02, + 0xe3, 0x01, 0xe4, 0x01, 0x8b, 0x01, 0x88, 0x01, 0x2b, 0x01, 0x2d, 0x01, + 0xd3, 0x00, 0xce, 0x00, 0x72, 0x00, 0x73, 0x00, 0x16, 0x00, 0x16, 0x00, + 0xbd, 0xff, 0xba, 0xff, 0x5d, 0xff, 0x60, 0xff, 0x09, 0xff, 0x06, 0xff, + 0xaf, 0xfe, 0xb1, 0xfe, 0x5f, 0xfe, 0x5e, 0xfe, 0x0d, 0xfe, 0x0c, 0xfe, + 0xc0, 0xfd, 0xc1, 0xfd, 0x7a, 0xfd, 0x76, 0xfd, 0x33, 0xfd, 0x35, 0xfd, + 0xf6, 0xfc, 0xf5, 0xfc, 0xb9, 0xfc, 0xb8, 0xfc, 0x85, 0xfc, 0x84, 0xfc, + 0x55, 0xfc, 0x54, 0xfc, 0x29, 0xfc, 0x28, 0xfc, 0x07, 0xfc, 0x06, 0xfc, + 0xeb, 0xfb, 0xe9, 0xfb, 0xd0, 0xfb, 0xd2, 0xfb, 0xc4, 0xfb, 0xc1, 0xfb, + 0xb3, 0xfb, 0xb4, 0xfb, 0xb4, 0xfb, 0xb3, 0xfb, 0xb5, 0xfb, 0xb4, 0xfb, + 0xbf, 0xfb, 0xbe, 0xfb, 0xcf, 0xfb, 0xd0, 0xfb, 0xe7, 0xfb, 0xe5, 0xfb, + 0x02, 0xfc, 0x03, 0xfc, 0x27, 0xfc, 0x27, 0xfc, 0x50, 0xfc, 0x4e, 0xfc, + 0x7e, 0xfc, 0x81, 0xfc, 0xb7, 0xfc, 0xb3, 0xfc, 0xef, 0xfc, 0xf0, 0xfc, + 0x2f, 0xfd, 0x2e, 0xfd, 0x75, 0xfd, 0x73, 0xfd, 0xb9, 0xfd, 0xba, 0xfd, + 0x08, 0xfe, 0x07, 0xfe, 0x58, 0xfe, 0x55, 0xfe, 0xa7, 0xfe, 0xa7, 0xfe, + 0xfd, 0xfe, 0xfc, 0xfe, 0x51, 0xff, 0x50, 0xff, 0xa8, 0xff, 0xa8, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0x54, 0x00, 0x54, 0x00, 0xa9, 0x00, 0xa9, 0x00, + 0xfb, 0x00, 0xfa, 0x00, 0x4d, 0x01, 0x4a, 0x01, 0x95, 0x01, 0x97, 0x01, + 0xe2, 0x01, 0xdf, 0x01, 0x21, 0x02, 0x21, 0x02, 0x63, 0x02, 0x60, 0x02, + 0x96, 0x02, 0x98, 0x02, 0xc9, 0x02, 0xc6, 0x02, 0xf0, 0x02, 0xf1, 0x02, + 0x11, 0x03, 0x10, 0x03, 0x2b, 0x03, 0x2c, 0x03, 0x3c, 0x03, 0x3b, 0x03, + 0x43, 0x03, 0x43, 0x03, 0x43, 0x03, 0x40, 0x03, 0x35, 0x03, 0x37, 0x03, + 0x25, 0x03, 0x23, 0x03, 0x06, 0x03, 0x06, 0x03, 0xe3, 0x02, 0xe1, 0x02, + 0xb5, 0x02, 0xb4, 0x02, 0x7f, 0x02, 0x7f, 0x02, 0x43, 0x02, 0x42, 0x02, + 0xfe, 0x01, 0xfe, 0x01, 0xb6, 0x01, 0xb5, 0x01, 0x65, 0x01, 0x65, 0x01, + 0x12, 0x01, 0x11, 0x01, 0xb9, 0x00, 0xb9, 0x00, 0x5d, 0x00, 0x5d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0xa0, 0xff, 0x42, 0xff, 0x42, 0xff, + 0xe2, 0xfe, 0xe3, 0xfe, 0x86, 0xfe, 0x85, 0xfe, 0x2d, 0xfe, 0x2d, 0xfe, + 0xd5, 0xfd, 0xd4, 0xfd, 0x86, 0xfd, 0x85, 0xfd, 0x36, 0xfd, 0x36, 0xfd, + 0xf1, 0xfc, 0xf0, 0xfc, 0xb3, 0xfc, 0xb3, 0xfc, 0x79, 0xfc, 0x7a, 0xfc, + 0x4b, 0xfc, 0x4b, 0xfc, 0x22, 0xfc, 0x24, 0xfc, 0x06, 0xfc, 0x04, 0xfc, + 0xf1, 0xfb, 0xf1, 0xfb, 0xe5, 0xfb, 0xe4, 0xfb, 0xe4, 0xfb, 0xe4, 0xfb, + 0xea, 0xfb, 0xea, 0xfb, 0xfc, 0xfb, 0xfc, 0xfb, 0x16, 0xfc, 0x15, 0xfc, + 0x3a, 0xfc, 0x39, 0xfc, 0x64, 0xfc, 0x65, 0xfc, 0x9b, 0xfc, 0x99, 0xfc, + 0xd3, 0xfc, 0xd3, 0xfc, 0x17, 0xfd, 0x16, 0xfd, 0x5e, 0xfd, 0x5e, 0xfd, + 0xab, 0xfd, 0xaa, 0xfd, 0x00, 0xfe, 0xfd, 0xfd, 0x51, 0xfe, 0x53, 0xfe, + 0xac, 0xfe, 0xab, 0xfe, 0x08, 0xff, 0x07, 0xff, 0x62, 0xff, 0x62, 0xff, + 0xbf, 0xff, 0xbe, 0xff, 0x1b, 0x00, 0x1a, 0x00, 0x73, 0x00, 0x73, 0x00, + 0xcc, 0x00, 0xcc, 0x00, 0x21, 0x01, 0x1f, 0x01, 0x71, 0x01, 0x72, 0x01, + 0xbf, 0x01, 0xbd, 0x01, 0x03, 0x02, 0x04, 0x02, 0x49, 0x02, 0x47, 0x02, + 0x83, 0x02, 0x83, 0x02, 0xba, 0x02, 0xba, 0x02, 0xec, 0x02, 0xea, 0x02, + 0x13, 0x03, 0x13, 0x03, 0x36, 0x03, 0x36, 0x03, 0x53, 0x03, 0x50, 0x03, + 0x67, 0x03, 0x67, 0x03, 0x76, 0x03, 0x75, 0x03, 0x7e, 0x03, 0x7c, 0x03, + 0x7e, 0x03, 0x7c, 0x03, 0x78, 0x03, 0x79, 0x03, 0x6c, 0x03, 0x6a, 0x03, + 0x5d, 0x03, 0x5c, 0x03, 0x44, 0x03, 0x44, 0x03, 0x2a, 0x03, 0x2a, 0x03, + 0x0a, 0x03, 0x08, 0x03, 0xe5, 0x02, 0xe5, 0x02, 0xbf, 0x02, 0xbd, 0x02, + 0x91, 0x02, 0x92, 0x02, 0x66, 0x02, 0x64, 0x02, 0x34, 0x02, 0x35, 0x02, + 0x05, 0x02, 0x03, 0x02, 0xcf, 0x01, 0xcf, 0x01, 0x9d, 0x01, 0x9d, 0x01, + 0x67, 0x01, 0x67, 0x01, 0x32, 0x01, 0x32, 0x01, 0xff, 0x00, 0xfd, 0x00, + 0xc6, 0x00, 0xc8, 0x00, 0x98, 0x00, 0x96, 0x00, 0x63, 0x00, 0x64, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x07, 0x00, 0x07, 0x00, 0xd6, 0xff, 0xd8, 0xff, + 0xae, 0xff, 0xae, 0xff, 0x85, 0xff, 0x86, 0xff, 0x5f, 0xff, 0x60, 0xff, + 0x40, 0xff, 0x3e, 0xff, 0x1d, 0xff, 0x1e, 0xff, 0x03, 0xff, 0x01, 0xff, + 0xe9, 0xfe, 0xe9, 0xfe, 0xd4, 0xfe, 0xd4, 0xfe, 0xc4, 0xfe, 0xc3, 0xfe, + 0xb2, 0xfe, 0xb3, 0xfe, 0xab, 0xfe, 0xab, 0xfe, 0xa4, 0xfe, 0xa4, 0xfe, + 0xa2, 0xfe, 0xa3, 0xfe, 0xa6, 0xfe, 0xa4, 0xfe, 0xa9, 0xfe, 0xaa, 0xfe, + 0xb5, 0xfe, 0xb5, 0xfe, 0xc3, 0xfe, 0xc4, 0xfe, 0xd6, 0xfe, 0xd7, 0xfe, + 0xed, 0xfe, 0xec, 0xfe, 0x06, 0xff, 0x06, 0xff, 0x27, 0xff, 0x26, 0xff, + 0x46, 0xff, 0x46, 0xff, 0x6e, 0xff, 0x6c, 0xff, 0x93, 0xff, 0x94, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0xef, 0xff, 0xed, 0xff, 0x1f, 0x00, 0x20, 0x00, + 0x52, 0x00, 0x51, 0x00, 0x86, 0x00, 0x87, 0x00, 0xbc, 0x00, 0xbe, 0x00, + 0xf3, 0x00, 0xf3, 0x00, 0x29, 0x01, 0x29, 0x01, 0x5f, 0x01, 0x5f, 0x01, + 0x92, 0x01, 0x93, 0x01, 0xc7, 0x01, 0xc7, 0x01, 0xf7, 0x01, 0xf8, 0x01, + 0x26, 0x02, 0x26, 0x02, 0x53, 0x02, 0x53, 0x02, 0x79, 0x02, 0x78, 0x02, + 0x9b, 0x02, 0x9d, 0x02, 0xb9, 0x02, 0xb7, 0x02, 0xd0, 0x02, 0xd3, 0x02, + 0xe3, 0x02, 0xe1, 0x02, 0xef, 0x02, 0xf1, 0x02, 0xf4, 0x02, 0xf4, 0x02, + 0xf3, 0x02, 0xf2, 0x02, 0xea, 0x02, 0xe9, 0x02, 0xd8, 0x02, 0xd9, 0x02, + 0xc1, 0x02, 0xc1, 0x02, 0x9e, 0x02, 0x9f, 0x02, 0x78, 0x02, 0x77, 0x02, + 0x4a, 0x02, 0x4a, 0x02, 0x13, 0x02, 0x11, 0x02, 0xd8, 0x01, 0xd7, 0x01, + 0x93, 0x01, 0x94, 0x01, 0x4a, 0x01, 0x4a, 0x01, 0xfd, 0x00, 0xfb, 0x00, + 0xa8, 0x00, 0xaa, 0x00, 0x54, 0x00, 0x50, 0x00, 0xf7, 0xff, 0xf8, 0xff, + 0x9c, 0xff, 0x9b, 0xff, 0x3f, 0xff, 0x3e, 0xff, 0xe0, 0xfe, 0xe0, 0xfe, + 0x80, 0xfe, 0x81, 0xfe, 0x24, 0xfe, 0x23, 0xfe, 0xc7, 0xfd, 0xc8, 0xfd, + 0x70, 0xfd, 0x6f, 0xfd, 0x1c, 0xfd, 0x1c, 0xfd, 0xca, 0xfc, 0xcb, 0xfc, + 0x84, 0xfc, 0x81, 0xfc, 0x3b, 0xfc, 0x3f, 0xfc, 0x03, 0xfc, 0x00, 0xfc, + 0xcb, 0xfb, 0xcd, 0xfb, 0x9f, 0xfb, 0x9c, 0xfb, 0x79, 0xfb, 0x7b, 0xfb, + 0x5f, 0xfb, 0x5e, 0xfb, 0x4b, 0xfb, 0x4a, 0xfb, 0x42, 0xfb, 0x42, 0xfb, + 0x44, 0xfb, 0x43, 0xfb, 0x4b, 0xfb, 0x4a, 0xfb, 0x5e, 0xfb, 0x60, 0xfb, + 0x7c, 0xfb, 0x7a, 0xfb, 0xa0, 0xfb, 0xa2, 0xfb, 0xcf, 0xfb, 0xcd, 0xfb, + 0x03, 0xfc, 0x03, 0xfc, 0x40, 0xfc, 0x41, 0xfc, 0x85, 0xfc, 0x84, 0xfc, + 0xcb, 0xfc, 0xcd, 0xfc, 0x1e, 0xfd, 0x1d, 0xfd, 0x6f, 0xfd, 0x6f, 0xfd, + 0xc8, 0xfd, 0xc9, 0xfd, 0x21, 0xfe, 0x21, 0xfe, 0x7d, 0xfe, 0x7d, 0xfe, + 0xd9, 0xfe, 0xdb, 0xfe, 0x37, 0xff, 0x35, 0xff, 0x92, 0xff, 0x94, 0xff, + 0xee, 0xff, 0xed, 0xff, 0x47, 0x00, 0x47, 0x00, 0x9c, 0x00, 0x9c, 0x00, + 0xed, 0x00, 0xed, 0x00, 0x3b, 0x01, 0x3b, 0x01, 0x82, 0x01, 0x83, 0x01, + 0xc5, 0x01, 0xc5, 0x01, 0x01, 0x02, 0x01, 0x02, 0x37, 0x02, 0x36, 0x02, + 0x65, 0x02, 0x66, 0x02, 0x8d, 0x02, 0x8a, 0x02, 0xab, 0x02, 0xae, 0x02, + 0xc5, 0x02, 0xc1, 0x02, 0xd6, 0x02, 0xd8, 0x02, 0xdf, 0x02, 0xdd, 0x02, + 0xe1, 0x02, 0xe2, 0x02, 0xdc, 0x02, 0xdb, 0x02, 0xd0, 0x02, 0xd0, 0x02, + 0xbd, 0x02, 0xbc, 0x02, 0xa5, 0x02, 0xa5, 0x02, 0x86, 0x02, 0x84, 0x02, + 0x63, 0x02, 0x65, 0x02, 0x38, 0x02, 0x38, 0x02, 0x0b, 0x02, 0x0a, 0x02, + 0xd8, 0x01, 0xd9, 0x01, 0xa3, 0x01, 0xa2, 0x01, 0x6c, 0x01, 0x6a, 0x01, + 0x2e, 0x01, 0x30, 0x01, 0xf2, 0x00, 0xf2, 0x00, 0xb3, 0x00, 0xb3, 0x00, + 0x74, 0x00, 0x74, 0x00, 0x33, 0x00, 0x32, 0x00, 0xf3, 0xff, 0xf3, 0xff, + 0xb4, 0xff, 0xb2, 0xff, 0x71, 0xff, 0x74, 0xff, 0x37, 0xff, 0x36, 0xff, + 0xf8, 0xfe, 0xf7, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0x86, 0xfe, 0x86, 0xfe, + 0x50, 0xfe, 0x50, 0xfe, 0x21, 0xfe, 0x21, 0xfe, 0xed, 0xfd, 0xed, 0xfd, + 0xc4, 0xfd, 0xc4, 0xfd, 0x9b, 0xfd, 0x9a, 0xfd, 0x76, 0xfd, 0x76, 0xfd, + 0x59, 0xfd, 0x59, 0xfd, 0x3b, 0xfd, 0x3b, 0xfd, 0x27, 0xfd, 0x27, 0xfd, + 0x14, 0xfd, 0x13, 0xfd, 0x08, 0xfd, 0x06, 0xfd, 0x01, 0xfd, 0x00, 0xfd, + 0xfd, 0xfc, 0xfe, 0xfc, 0x02, 0xfd, 0xff, 0xfc, 0x09, 0xfd, 0x0b, 0xfd, + 0x18, 0xfd, 0x17, 0xfd, 0x2d, 0xfd, 0x2d, 0xfd, 0x43, 0xfd, 0x44, 0xfd, + 0x65, 0xfd, 0x65, 0xfd, 0x87, 0xfd, 0x87, 0xfd, 0xb1, 0xfd, 0xb2, 0xfd, + 0xe1, 0xfd, 0xe0, 0xfd, 0x14, 0xfe, 0x15, 0xfe, 0x4e, 0xfe, 0x4d, 0xfe, + 0x89, 0xfe, 0x89, 0xfe, 0xcc, 0xfe, 0xcb, 0xfe, 0x10, 0xff, 0x12, 0xff, + 0x5b, 0xff, 0x59, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0x45, 0x00, 0x47, 0x00, 0x9a, 0x00, 0x97, 0x00, 0xed, 0x00, 0xf0, 0x00, + 0x44, 0x01, 0x42, 0x01, 0x98, 0x01, 0x99, 0x01, 0xec, 0x01, 0xeb, 0x01, + 0x40, 0x02, 0x3f, 0x02, 0x91, 0x02, 0x92, 0x02, 0xdf, 0x02, 0xdf, 0x02, + 0x2b, 0x03, 0x2b, 0x03, 0x72, 0x03, 0x72, 0x03, 0xb4, 0x03, 0xb3, 0x03, + 0xf1, 0x03, 0xf0, 0x03, 0x29, 0x04, 0x28, 0x04, 0x5a, 0x04, 0x59, 0x04, + 0x84, 0x04, 0x84, 0x04, 0xa7, 0x04, 0xa5, 0x04, 0xc2, 0x04, 0xc3, 0x04, + 0xd1, 0x04, 0xd1, 0x04, 0xde, 0x04, 0xde, 0x04, 0xdd, 0x04, 0xdd, 0x04, + 0xd9, 0x04, 0xd8, 0x04, 0xc7, 0x04, 0xc6, 0x04, 0xad, 0x04, 0xae, 0x04, + 0x8d, 0x04, 0x8d, 0x04, 0x65, 0x04, 0x63, 0x04, 0x31, 0x04, 0x32, 0x04, + 0xfa, 0x03, 0xfa, 0x03, 0xba, 0x03, 0xb9, 0x03, 0x73, 0x03, 0x73, 0x03, + 0x28, 0x03, 0x26, 0x03, 0xd4, 0x02, 0xd5, 0x02, 0x7f, 0x02, 0x7f, 0x02, + 0x25, 0x02, 0x24, 0x02, 0xc9, 0x01, 0xc9, 0x01, 0x6b, 0x01, 0x6a, 0x01, + 0x0b, 0x01, 0x0b, 0x01, 0xaa, 0x00, 0xab, 0x00, 0x4d, 0x00, 0x4d, 0x00, + 0xf1, 0xff, 0xef, 0xff, 0x95, 0xff, 0x96, 0xff, 0x40, 0xff, 0x3f, 0xff, + 0xed, 0xfe, 0xed, 0xfe, 0xa0, 0xfe, 0x9f, 0xfe, 0x58, 0xfe, 0x59, 0xfe, + 0x15, 0xfe, 0x15, 0xfe, 0xdb, 0xfd, 0xdc, 0xfd, 0xa8, 0xfd, 0xa8, 0xfd, + 0x7c, 0xfd, 0x7c, 0xfd, 0x59, 0xfd, 0x59, 0xfd, 0x3e, 0xfd, 0x3d, 0xfd, + 0x29, 0xfd, 0x2b, 0xfd, 0x1f, 0xfd, 0x1d, 0xfd, 0x1d, 0xfd, 0x1f, 0xfd, + 0x21, 0xfd, 0x21, 0xfd, 0x31, 0xfd, 0x31, 0xfd, 0x43, 0xfd, 0x42, 0xfd, + 0x61, 0xfd, 0x61, 0xfd, 0x83, 0xfd, 0x84, 0xfd, 0xa8, 0xfd, 0xa8, 0xfd, + 0xd9, 0xfd, 0xda, 0xfd, 0x08, 0xfe, 0x08, 0xfe, 0x41, 0xfe, 0x41, 0xfe, + 0x7c, 0xfe, 0x7b, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xf8, 0xfe, 0xf8, 0xfe, + 0x35, 0xff, 0x35, 0xff, 0x78, 0xff, 0x78, 0xff, 0xb9, 0xff, 0xb7, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0x34, 0x00, 0x32, 0x00, 0x6f, 0x00, 0x70, 0x00, + 0xa7, 0x00, 0xa6, 0x00, 0xda, 0x00, 0xda, 0x00, 0x0c, 0x01, 0x0a, 0x01, + 0x37, 0x01, 0x37, 0x01, 0x60, 0x01, 0x60, 0x01, 0x83, 0x01, 0x82, 0x01, + 0x9e, 0x01, 0x9e, 0x01, 0xb7, 0x01, 0xb5, 0x01, 0xc7, 0x01, 0xc7, 0x01, + 0xd4, 0x01, 0xd3, 0x01, 0xdb, 0x01, 0xda, 0x01, 0xd9, 0x01, 0xd9, 0x01, + 0xd6, 0x01, 0xd5, 0x01, 0xcc, 0x01, 0xcb, 0x01, 0xba, 0x01, 0xb9, 0x01, + 0xa9, 0x01, 0xaa, 0x01, 0x8f, 0x01, 0x8c, 0x01, 0x72, 0x01, 0x72, 0x01, + 0x52, 0x01, 0x50, 0x01, 0x2a, 0x01, 0x2c, 0x01, 0x04, 0x01, 0x04, 0x01, + 0xd9, 0x00, 0xd7, 0x00, 0xac, 0x00, 0xad, 0x00, 0x7f, 0x00, 0x7d, 0x00, + 0x4e, 0x00, 0x4e, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0xe9, 0xff, 0xe9, 0xff, + 0xb7, 0xff, 0xb6, 0xff, 0x83, 0xff, 0x84, 0xff, 0x52, 0xff, 0x51, 0xff, + 0x20, 0xff, 0x20, 0xff, 0xf1, 0xfe, 0xef, 0xfe, 0xc1, 0xfe, 0xc2, 0xfe, + 0x93, 0xfe, 0x92, 0xfe, 0x66, 0xfe, 0x65, 0xfe, 0x3b, 0xfe, 0x3e, 0xfe, + 0x13, 0xfe, 0x12, 0xfe, 0xee, 0xfd, 0xee, 0xfd, 0xc9, 0xfd, 0xca, 0xfd, + 0xab, 0xfd, 0xab, 0xfd, 0x8b, 0xfd, 0x8c, 0xfd, 0x72, 0xfd, 0x71, 0xfd, + 0x58, 0xfd, 0x5a, 0xfd, 0x45, 0xfd, 0x44, 0xfd, 0x33, 0xfd, 0x34, 0xfd, + 0x25, 0xfd, 0x26, 0xfd, 0x1b, 0xfd, 0x1c, 0xfd, 0x16, 0xfd, 0x17, 0xfd, + 0x14, 0xfd, 0x13, 0xfd, 0x17, 0xfd, 0x18, 0xfd, 0x1f, 0xfd, 0x1e, 0xfd, + 0x2a, 0xfd, 0x2a, 0xfd, 0x36, 0xfd, 0x38, 0xfd, 0x4b, 0xfd, 0x4a, 0xfd, + 0x62, 0xfd, 0x62, 0xfd, 0x7d, 0xfd, 0x7d, 0xfd, 0x9e, 0xfd, 0x9b, 0xfd, + 0xbd, 0xfd, 0xc0, 0xfd, 0xe5, 0xfd, 0xe4, 0xfd, 0x10, 0xfe, 0x10, 0xfe, + 0x3a, 0xfe, 0x3c, 0xfe, 0x6d, 0xfe, 0x6c, 0xfe, 0x9f, 0xfe, 0xa0, 0xfe, + 0xd4, 0xfe, 0xd2, 0xfe, 0x0c, 0xff, 0x0e, 0xff, 0x45, 0xff, 0x43, 0xff, + 0x81, 0xff, 0x81, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0x32, 0x00, 0x32, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0xa7, 0x00, 0xa8, 0x00, + 0xe0, 0x00, 0xde, 0x00, 0x14, 0x01, 0x15, 0x01, 0x48, 0x01, 0x47, 0x01, + 0x79, 0x01, 0x78, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xce, 0x01, 0xcb, 0x01, + 0xef, 0x01, 0xef, 0x01, 0x0f, 0x02, 0x0d, 0x02, 0x27, 0x02, 0x27, 0x02, + 0x3a, 0x02, 0x39, 0x02, 0x48, 0x02, 0x48, 0x02, 0x4e, 0x02, 0x4c, 0x02, + 0x51, 0x02, 0x51, 0x02, 0x4b, 0x02, 0x4a, 0x02, 0x3e, 0x02, 0x3e, 0x02, + 0x2b, 0x02, 0x2a, 0x02, 0x14, 0x02, 0x14, 0x02, 0xf5, 0x01, 0xf4, 0x01, + 0xcf, 0x01, 0xd0, 0x01, 0xa8, 0x01, 0xa5, 0x01, 0x77, 0x01, 0x78, 0x01, + 0x44, 0x01, 0x45, 0x01, 0x11, 0x01, 0x0d, 0x01, 0xd3, 0x00, 0xd4, 0x00, + 0x99, 0x00, 0x97, 0x00, 0x58, 0x00, 0x59, 0x00, 0x18, 0x00, 0x18, 0x00, + 0xda, 0xff, 0xd8, 0xff, 0x95, 0xff, 0x94, 0xff, 0x59, 0xff, 0x58, 0xff, + 0x18, 0xff, 0x16, 0xff, 0xde, 0xfe, 0xde, 0xfe, 0xa3, 0xfe, 0xa2, 0xfe, + 0x6e, 0xfe, 0x6f, 0xfe, 0x3f, 0xfe, 0x3d, 0xfe, 0x12, 0xfe, 0x12, 0xfe, + 0xee, 0xfd, 0xeb, 0xfd, 0xcd, 0xfd, 0xcc, 0xfd, 0xb2, 0xfd, 0xb2, 0xfd, + 0xa3, 0xfd, 0xa1, 0xfd, 0x93, 0xfd, 0x93, 0xfd, 0x94, 0xfd, 0x92, 0xfd, + 0x91, 0xfd, 0x93, 0xfd, 0xa0, 0xfd, 0x9e, 0xfd, 0xb1, 0xfd, 0xb0, 0xfd, + 0xc9, 0xfd, 0xc9, 0xfd, 0xeb, 0xfd, 0xe9, 0xfd, 0x10, 0xfe, 0x0f, 0xfe, + 0x3e, 0xfe, 0x3e, 0xfe, 0x70, 0xfe, 0x6d, 0xfe, 0xa7, 0xfe, 0xa9, 0xfe, + 0xe6, 0xfe, 0xe4, 0xfe, 0x27, 0xff, 0x24, 0xff, 0x69, 0xff, 0x6b, 0xff, + 0xb1, 0xff, 0xad, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x44, 0x00, 0x42, 0x00, + 0x8d, 0x00, 0x8c, 0x00, 0xda, 0x00, 0xd9, 0x00, 0x22, 0x01, 0x21, 0x01, + 0x6d, 0x01, 0x6b, 0x01, 0xb0, 0x01, 0xb0, 0x01, 0xf5, 0x01, 0xf3, 0x01, + 0x34, 0x02, 0x34, 0x02, 0x70, 0x02, 0x6f, 0x02, 0xa8, 0x02, 0xa7, 0x02, + 0xdb, 0x02, 0xda, 0x02, 0x0a, 0x03, 0x09, 0x03, 0x32, 0x03, 0x31, 0x03, + 0x53, 0x03, 0x54, 0x03, 0x72, 0x03, 0x70, 0x03, 0x87, 0x03, 0x86, 0x03, + 0x99, 0x03, 0x99, 0x03, 0xa4, 0x03, 0xa3, 0x03, 0xa9, 0x03, 0xa9, 0x03, + 0xa9, 0x03, 0xa7, 0x03, 0xa2, 0x03, 0xa1, 0x03, 0x98, 0x03, 0x97, 0x03, + 0x86, 0x03, 0x84, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x55, 0x03, 0x53, 0x03, + 0x34, 0x03, 0x35, 0x03, 0x14, 0x03, 0x13, 0x03, 0xec, 0x02, 0xed, 0x02, + 0xc5, 0x02, 0xc1, 0x02, 0x96, 0x02, 0x96, 0x02, 0x65, 0x02, 0x66, 0x02, + 0x3a, 0x02, 0x37, 0x02, 0x03, 0x02, 0x05, 0x02, 0xd0, 0x01, 0xcd, 0x01, + 0x9c, 0x01, 0x9c, 0x01, 0x63, 0x01, 0x62, 0x01, 0x31, 0x01, 0x2f, 0x01, + 0xf8, 0x00, 0xfa, 0x00, 0xc2, 0x00, 0xc1, 0x00, 0x8e, 0x00, 0x8d, 0x00, + 0x56, 0x00, 0x56, 0x00, 0x23, 0x00, 0x22, 0x00, 0xf0, 0xff, 0xef, 0xff, + 0xbc, 0xff, 0xbc, 0xff, 0x8d, 0xff, 0x8b, 0xff, 0x5b, 0xff, 0x5c, 0xff, + 0x2e, 0xff, 0x2b, 0xff, 0x00, 0xff, 0x01, 0xff, 0xd7, 0xfe, 0xd4, 0xfe, + 0xab, 0xfe, 0xad, 0xfe, 0x86, 0xfe, 0x85, 0xfe, 0x61, 0xfe, 0x61, 0xfe, + 0x3e, 0xfe, 0x3d, 0xfe, 0x1f, 0xfe, 0x20, 0xfe, 0x01, 0xfe, 0x00, 0xfe, + 0xe5, 0xfd, 0xe5, 0xfd, 0xcd, 0xfd, 0xcd, 0xfd, 0xb8, 0xfd, 0xb8, 0xfd, + 0xa7, 0xfd, 0xa5, 0xfd, 0x98, 0xfd, 0x97, 0xfd, 0x8c, 0xfd, 0x8c, 0xfd, + 0x85, 0xfd, 0x84, 0xfd, 0x7f, 0xfd, 0x80, 0xfd, 0x80, 0xfd, 0x7f, 0xfd, + 0x82, 0xfd, 0x81, 0xfd, 0x8a, 0xfd, 0x8a, 0xfd, 0x95, 0xfd, 0x93, 0xfd, + 0xa3, 0xfd, 0xa2, 0xfd, 0xb5, 0xfd, 0xb4, 0xfd, 0xcb, 0xfd, 0xca, 0xfd, + 0xe4, 0xfd, 0xe5, 0xfd, 0x02, 0xfe, 0x00, 0xfe, 0x22, 0xfe, 0x21, 0xfe, + 0x45, 0xfe, 0x44, 0xfe, 0x6d, 0xfe, 0x6b, 0xfe, 0x95, 0xfe, 0x94, 0xfe, + 0xc0, 0xfe, 0xc0, 0xfe, 0xee, 0xfe, 0xec, 0xfe, 0x1c, 0xff, 0x1d, 0xff, + 0x4a, 0xff, 0x49, 0xff, 0x7e, 0xff, 0x7d, 0xff, 0xac, 0xff, 0xab, 0xff, + 0xde, 0xff, 0xde, 0xff, 0x0d, 0x00, 0x0b, 0x00, 0x3a, 0x00, 0x3a, 0x00, + 0x6b, 0x00, 0x6a, 0x00, 0x92, 0x00, 0x91, 0x00, 0xbe, 0x00, 0xbc, 0x00, + 0xe2, 0x00, 0xe0, 0x00, 0x00, 0x01, 0x01, 0x01, 0x23, 0x01, 0x21, 0x01, + 0x39, 0x01, 0x38, 0x01, 0x51, 0x01, 0x50, 0x01, 0x5f, 0x01, 0x5f, 0x01, + 0x6b, 0x01, 0x69, 0x01, 0x72, 0x01, 0x72, 0x01, 0x70, 0x01, 0x6f, 0x01, + 0x6e, 0x01, 0x6e, 0x01, 0x66, 0x01, 0x63, 0x01, 0x56, 0x01, 0x57, 0x01, + 0x45, 0x01, 0x41, 0x01, 0x2a, 0x01, 0x2b, 0x01, 0x0f, 0x01, 0x0e, 0x01, + 0xf0, 0x00, 0xf0, 0x00, 0xca, 0x00, 0xca, 0x00, 0xa6, 0x00, 0xa5, 0x00, + 0x7a, 0x00, 0x79, 0x00, 0x4f, 0x00, 0x4e, 0x00, 0x21, 0x00, 0x21, 0x00, + 0xf0, 0xff, 0xf1, 0xff, 0xc2, 0xff, 0xc3, 0xff, 0x91, 0xff, 0x90, 0xff, + 0x62, 0xff, 0x63, 0xff, 0x34, 0xff, 0x33, 0xff, 0x06, 0xff, 0x07, 0xff, + 0xdc, 0xfe, 0xdd, 0xfe, 0xb3, 0xfe, 0xb2, 0xfe, 0x90, 0xfe, 0x90, 0xfe, + 0x6d, 0xfe, 0x6d, 0xfe, 0x4e, 0xfe, 0x4e, 0xfe, 0x34, 0xfe, 0x33, 0xfe, + 0x1b, 0xfe, 0x1b, 0xfe, 0x0a, 0xfe, 0x0a, 0xfe, 0xfc, 0xfd, 0xfb, 0xfd, + 0xf4, 0xfd, 0xf2, 0xfd, 0xee, 0xfd, 0xed, 0xfd, 0xec, 0xfd, 0xed, 0xfd, + 0xf1, 0xfd, 0xef, 0xfd, 0xf9, 0xfd, 0xf9, 0xfd, 0x03, 0xfe, 0x04, 0xfe, + 0x16, 0xfe, 0x14, 0xfe, 0x28, 0xfe, 0x28, 0xfe, 0x40, 0xfe, 0x3d, 0xfe, + 0x58, 0xfe, 0x58, 0xfe, 0x75, 0xfe, 0x74, 0xfe, 0x8f, 0xfe, 0x8e, 0xfe, + 0xb0, 0xfe, 0xb0, 0xfe, 0xd0, 0xfe, 0xcd, 0xfe, 0xf1, 0xfe, 0xf3, 0xfe, + 0x14, 0xff, 0x12, 0xff, 0x35, 0xff, 0x33, 0xff, 0x58, 0xff, 0x59, 0xff, + 0x78, 0xff, 0x78, 0xff, 0x99, 0xff, 0x99, 0xff, 0xbb, 0xff, 0xba, 0xff, + 0xd6, 0xff, 0xd5, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0x10, 0x00, 0x0e, 0x00, + 0x2b, 0x00, 0x29, 0x00, 0x44, 0x00, 0x42, 0x00, 0x57, 0x00, 0x57, 0x00, + 0x6e, 0x00, 0x6c, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x90, 0x00, 0x8f, 0x00, + 0x9f, 0x00, 0x9f, 0x00, 0xac, 0x00, 0xab, 0x00, 0xb9, 0x00, 0xb9, 0x00, + 0xc4, 0x00, 0xc2, 0x00, 0xcd, 0x00, 0xcd, 0x00, 0xd7, 0x00, 0xd6, 0x00, + 0xdf, 0x00, 0xdd, 0x00, 0xe4, 0x00, 0xe6, 0x00, 0xec, 0x00, 0xea, 0x00, + 0xf3, 0x00, 0xf2, 0x00, 0xf9, 0x00, 0xf9, 0x00, 0xfd, 0x00, 0xfd, 0x00, + 0x02, 0x01, 0x01, 0x01, 0x09, 0x01, 0x09, 0x01, 0x0f, 0x01, 0x0c, 0x01, + 0x13, 0x01, 0x15, 0x01, 0x19, 0x01, 0x17, 0x01, 0x1d, 0x01, 0x1e, 0x01, + 0x23, 0x01, 0x23, 0x01, 0x29, 0x01, 0x29, 0x01, 0x2d, 0x01, 0x2d, 0x01, + 0x34, 0x01, 0x33, 0x01, 0x38, 0x01, 0x37, 0x01, 0x3b, 0x01, 0x3c, 0x01, + 0x41, 0x01, 0x3f, 0x01, 0x40, 0x01, 0x40, 0x01, 0x45, 0x01, 0x43, 0x01, + 0x45, 0x01, 0x43, 0x01, 0x42, 0x01, 0x44, 0x01, 0x44, 0x01, 0x43, 0x01, + 0x40, 0x01, 0x41, 0x01, 0x3e, 0x01, 0x3d, 0x01, 0x39, 0x01, 0x38, 0x01, + 0x33, 0x01, 0x33, 0x01, 0x2b, 0x01, 0x29, 0x01, 0x23, 0x01, 0x24, 0x01, + 0x17, 0x01, 0x18, 0x01, 0x11, 0x01, 0x0e, 0x01, 0xff, 0x00, 0x02, 0x01, + 0xf8, 0x00, 0xf6, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xdb, 0x00, 0xdb, 0x00, + 0xcd, 0x00, 0xcd, 0x00, 0xbf, 0x00, 0xbe, 0x00, 0xb2, 0x00, 0xb1, 0x00, + 0xa4, 0x00, 0xa3, 0x00, 0x98, 0x00, 0x98, 0x00, 0x8b, 0x00, 0x8a, 0x00, + 0x7f, 0x00, 0x81, 0x00, 0x77, 0x00, 0x77, 0x00, 0x6f, 0x00, 0x6d, 0x00, + 0x67, 0x00, 0x68, 0x00, 0x62, 0x00, 0x61, 0x00, 0x5f, 0x00, 0x5e, 0x00, + 0x5c, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, + 0x60, 0x00, 0x5f, 0x00, 0x65, 0x00, 0x64, 0x00, 0x6b, 0x00, 0x6a, 0x00, + 0x73, 0x00, 0x73, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x85, 0x00, 0x82, 0x00, + 0x90, 0x00, 0x91, 0x00, 0x9a, 0x00, 0x98, 0x00, 0xa5, 0x00, 0xa5, 0x00, + 0xaf, 0x00, 0xae, 0x00, 0xba, 0x00, 0xbb, 0x00, 0xc5, 0x00, 0xc4, 0x00, + 0xcd, 0x00, 0xcc, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd9, 0x00, 0xd8, 0x00, + 0xda, 0x00, 0xdc, 0x00, 0xdf, 0x00, 0xdd, 0x00, 0xdd, 0x00, 0xdc, 0x00, + 0xd9, 0x00, 0xda, 0x00, 0xd4, 0x00, 0xd2, 0x00, 0xc9, 0x00, 0xca, 0x00, + 0xbe, 0x00, 0xbe, 0x00, 0xae, 0x00, 0xad, 0x00, 0x9c, 0x00, 0x9d, 0x00, + 0x88, 0x00, 0x88, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x58, 0x00, 0x57, 0x00, + 0x3b, 0x00, 0x3a, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0xfd, 0xff, 0xfc, 0xff, + 0xde, 0xff, 0xde, 0xff, 0xbb, 0xff, 0xb9, 0xff, 0x97, 0xff, 0x98, 0xff, + 0x73, 0xff, 0x73, 0xff, 0x52, 0xff, 0x50, 0xff, 0x2e, 0xff, 0x2e, 0xff, + 0x0d, 0xff, 0x0c, 0xff, 0xea, 0xfe, 0xeb, 0xfe, 0xce, 0xfe, 0xce, 0xfe, + 0xb0, 0xfe, 0xaf, 0xfe, 0x96, 0xfe, 0x97, 0xfe, 0x7f, 0xfe, 0x7c, 0xfe, + 0x6b, 0xfe, 0x6b, 0xfe, 0x57, 0xfe, 0x56, 0xfe, 0x4a, 0xfe, 0x4a, 0xfe, + 0x3e, 0xfe, 0x3d, 0xfe, 0x36, 0xfe, 0x36, 0xfe, 0x35, 0xfe, 0x33, 0xfe, + 0x34, 0xfe, 0x33, 0xfe, 0x3a, 0xfe, 0x36, 0xfe, 0x3f, 0xfe, 0x3e, 0xfe, + 0x49, 0xfe, 0x48, 0xfe, 0x58, 0xfe, 0x57, 0xfe, 0x67, 0xfe, 0x66, 0xfe, + 0x7c, 0xfe, 0x7a, 0xfe, 0x91, 0xfe, 0x8f, 0xfe, 0xa5, 0xfe, 0xa4, 0xfe, + 0xc1, 0xfe, 0xc2, 0xfe, 0xd9, 0xfe, 0xd7, 0xfe, 0xf7, 0xfe, 0xf7, 0xfe, + 0x11, 0xff, 0x0e, 0xff, 0x2e, 0xff, 0x2e, 0xff, 0x4b, 0xff, 0x48, 0xff, + 0x64, 0xff, 0x64, 0xff, 0x81, 0xff, 0x7f, 0xff, 0x96, 0xff, 0x95, 0xff, + 0xb0, 0xff, 0xb1, 0xff, 0xc5, 0xff, 0xc3, 0xff, 0xd9, 0xff, 0xda, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0x08, 0x00, 0x08, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x22, 0x00, 0x1e, 0x00, + 0x23, 0x00, 0x24, 0x00, 0x28, 0x00, 0x26, 0x00, 0x25, 0x00, 0x24, 0x00, + 0x20, 0x00, 0x21, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x12, 0x00, 0x12, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xf7, 0xff, 0xf6, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe2, 0xff, 0xe4, 0xff, + 0xd9, 0xff, 0xd7, 0xff, 0xcc, 0xff, 0xce, 0xff, 0xc4, 0xff, 0xc5, 0xff, + 0xbb, 0xff, 0xb9, 0xff, 0xaf, 0xff, 0xb1, 0xff, 0xab, 0xff, 0xa9, 0xff, + 0x9f, 0xff, 0xa0, 0xff, 0x9b, 0xff, 0x9c, 0xff, 0x95, 0xff, 0x94, 0xff, + 0x8e, 0xff, 0x8f, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x84, 0xff, 0x84, 0xff, + 0x85, 0xff, 0x85, 0xff, 0x7e, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0x7c, 0xff, + 0x79, 0xff, 0x79, 0xff, 0x75, 0xff, 0x74, 0xff, 0x74, 0xff, 0x73, 0xff, + 0x70, 0xff, 0x6f, 0xff, 0x6e, 0xff, 0x6d, 0xff, 0x69, 0xff, 0x67, 0xff, + 0x63, 0xff, 0x63, 0xff, 0x5f, 0xff, 0x5e, 0xff, 0x58, 0xff, 0x58, 0xff, + 0x53, 0xff, 0x53, 0xff, 0x4b, 0xff, 0x49, 0xff, 0x44, 0xff, 0x44, 0xff, + 0x3a, 0xff, 0x3a, 0xff, 0x34, 0xff, 0x34, 0xff, 0x2c, 0xff, 0x2c, 0xff, + 0x21, 0xff, 0x21, 0xff, 0x19, 0xff, 0x19, 0xff, 0x10, 0xff, 0x0f, 0xff, + 0x08, 0xff, 0x0a, 0xff, 0x01, 0xff, 0xff, 0xfe, 0xfb, 0xfe, 0xfc, 0xfe, + 0xf6, 0xfe, 0xf3, 0xfe, 0xf1, 0xfe, 0xf2, 0xfe, 0xee, 0xfe, 0xef, 0xfe, + 0xf1, 0xfe, 0xf0, 0xfe, 0xf1, 0xfe, 0xf2, 0xfe, 0xf7, 0xfe, 0xf8, 0xfe, + 0xff, 0xfe, 0xfd, 0xfe, 0x08, 0xff, 0x09, 0xff, 0x15, 0xff, 0x15, 0xff, + 0x27, 0xff, 0x27, 0xff, 0x38, 0xff, 0x38, 0xff, 0x50, 0xff, 0x4f, 0xff, + 0x68, 0xff, 0x67, 0xff, 0x85, 0xff, 0x84, 0xff, 0xa1, 0xff, 0xa2, 0xff, + 0xc4, 0xff, 0xc4, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0x0b, 0x00, 0x0c, 0x00, + 0x34, 0x00, 0x34, 0x00, 0x5d, 0x00, 0x5b, 0x00, 0x89, 0x00, 0x89, 0x00, + 0xb2, 0x00, 0xb0, 0x00, 0xdc, 0x00, 0xdd, 0x00, 0x08, 0x01, 0x07, 0x01, + 0x32, 0x01, 0x32, 0x01, 0x5c, 0x01, 0x5c, 0x01, 0x83, 0x01, 0x85, 0x01, + 0xad, 0x01, 0xaa, 0x01, 0xce, 0x01, 0xcf, 0x01, 0xef, 0x01, 0xee, 0x01, + 0x0d, 0x02, 0x0d, 0x02, 0x2a, 0x02, 0x29, 0x02, 0x3f, 0x02, 0x40, 0x02, + 0x55, 0x02, 0x56, 0x02, 0x65, 0x02, 0x65, 0x02, 0x73, 0x02, 0x71, 0x02, + 0x79, 0x02, 0x7b, 0x02, 0x7e, 0x02, 0x7d, 0x02, 0x7f, 0x02, 0x81, 0x02, + 0x78, 0x02, 0x79, 0x02, 0x75, 0x02, 0x73, 0x02, 0x66, 0x02, 0x68, 0x02, + 0x59, 0x02, 0x58, 0x02, 0x46, 0x02, 0x46, 0x02, 0x33, 0x02, 0x31, 0x02, + 0x1c, 0x02, 0x1b, 0x02, 0x00, 0x02, 0x01, 0x02, 0xe7, 0x01, 0xe6, 0x01, + 0xc9, 0x01, 0xc8, 0x01, 0xaa, 0x01, 0xaa, 0x01, 0x8d, 0x01, 0x8b, 0x01, + 0x6c, 0x01, 0x6d, 0x01, 0x4f, 0x01, 0x4d, 0x01, 0x2e, 0x01, 0x2e, 0x01, + 0x11, 0x01, 0x10, 0x01, 0xf3, 0x00, 0xf3, 0x00, 0xd9, 0x00, 0xd8, 0x00, + 0xbe, 0x00, 0xbd, 0x00, 0xa7, 0x00, 0xa6, 0x00, 0x8e, 0x00, 0x8f, 0x00, + 0x7a, 0x00, 0x79, 0x00, 0x6a, 0x00, 0x68, 0x00, 0x55, 0x00, 0x55, 0x00, + 0x4a, 0x00, 0x48, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x31, 0x00, 0x31, 0x00, + 0x2a, 0x00, 0x28, 0x00, 0x1f, 0x00, 0x23, 0x00, 0x1e, 0x00, 0x1c, 0x00, + 0x1b, 0x00, 0x18, 0x00, 0x16, 0x00, 0x15, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x05, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xf9, 0xff, 0xf8, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xeb, 0xff, 0xec, 0xff, + 0xe1, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xcd, 0xff, 0xcd, 0xff, + 0xc5, 0xff, 0xc4, 0xff, 0xb7, 0xff, 0xb6, 0xff, 0xaa, 0xff, 0xac, 0xff, + 0xa0, 0xff, 0x9c, 0xff, 0x91, 0xff, 0x92, 0xff, 0x87, 0xff, 0x84, 0xff, + 0x79, 0xff, 0x79, 0xff, 0x6d, 0xff, 0x6c, 0xff, 0x63, 0xff, 0x62, 0xff, + 0x5a, 0xff, 0x59, 0xff, 0x4e, 0xff, 0x50, 0xff, 0x4b, 0xff, 0x49, 0xff, + 0x42, 0xff, 0x42, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3d, 0xff, 0x39, 0xff, + 0x3c, 0xff, 0x3d, 0xff, 0x3d, 0xff, 0x3b, 0xff, 0x40, 0xff, 0x41, 0xff, + 0x47, 0xff, 0x44, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x54, 0xff, 0x55, 0xff, + 0x5d, 0xff, 0x5c, 0xff, 0x6a, 0xff, 0x6b, 0xff, 0x76, 0xff, 0x75, 0xff, + 0x83, 0xff, 0x83, 0xff, 0x93, 0xff, 0x92, 0xff, 0x9f, 0xff, 0xa0, 0xff, + 0xb0, 0xff, 0xae, 0xff, 0xbb, 0xff, 0xbd, 0xff, 0xcd, 0xff, 0xcb, 0xff, + 0xd8, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xf3, 0xff, 0xf0, 0xff, + 0xf9, 0xff, 0xfb, 0xff, 0x05, 0x00, 0x02, 0x00, 0x07, 0x00, 0x09, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0e, 0x00, + 0x0b, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x07, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xf9, 0xff, 0xf8, 0xff, 0xec, 0xff, 0xec, 0xff, 0xdd, 0xff, 0xdf, 0xff, + 0xd1, 0xff, 0xcf, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xae, 0xff, 0xac, 0xff, + 0x97, 0xff, 0x98, 0xff, 0x85, 0xff, 0x85, 0xff, 0x70, 0xff, 0x70, 0xff, + 0x5e, 0xff, 0x5c, 0xff, 0x48, 0xff, 0x48, 0xff, 0x34, 0xff, 0x33, 0xff, + 0x22, 0xff, 0x20, 0xff, 0x0f, 0xff, 0x10, 0xff, 0x00, 0xff, 0xfe, 0xfe, + 0xef, 0xfe, 0xef, 0xfe, 0xe3, 0xfe, 0xe2, 0xfe, 0xd7, 0xfe, 0xd8, 0xfe, + 0xcf, 0xfe, 0xd0, 0xfe, 0xc9, 0xfe, 0xc9, 0xfe, 0xc5, 0xfe, 0xc4, 0xfe, + 0xc2, 0xfe, 0xc2, 0xfe, 0xc5, 0xfe, 0xc4, 0xfe, 0xc7, 0xfe, 0xc8, 0xfe, + 0xcd, 0xfe, 0xcc, 0xfe, 0xd6, 0xfe, 0xd5, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, + 0xec, 0xfe, 0xeb, 0xfe, 0xf7, 0xfe, 0xf6, 0xfe, 0x07, 0xff, 0x06, 0xff, + 0x15, 0xff, 0x14, 0xff, 0x26, 0xff, 0x25, 0xff, 0x37, 0xff, 0x35, 0xff, + 0x44, 0xff, 0x46, 0xff, 0x59, 0xff, 0x58, 0xff, 0x65, 0xff, 0x66, 0xff, + 0x76, 0xff, 0x77, 0xff, 0x83, 0xff, 0x83, 0xff, 0x91, 0xff, 0x91, 0xff, + 0x9c, 0xff, 0x9c, 0xff, 0xa5, 0xff, 0xa6, 0xff, 0xad, 0xff, 0xad, 0xff, + 0xb4, 0xff, 0xb5, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xb7, 0xff, + 0xb9, 0xff, 0xb9, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xb0, 0xff, 0xb1, 0xff, + 0xad, 0xff, 0xab, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0x9d, 0xff, 0x9f, 0xff, + 0x91, 0xff, 0x90, 0xff, 0x89, 0xff, 0x89, 0xff, 0x7d, 0xff, 0x7d, 0xff, + 0x73, 0xff, 0x73, 0xff, 0x69, 0xff, 0x68, 0xff, 0x5f, 0xff, 0x60, 0xff, + 0x57, 0xff, 0x57, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x4a, 0xff, 0x49, 0xff, + 0x44, 0xff, 0x45, 0xff, 0x43, 0xff, 0x42, 0xff, 0x41, 0xff, 0x41, 0xff, + 0x45, 0xff, 0x44, 0xff, 0x49, 0xff, 0x48, 0xff, 0x51, 0xff, 0x53, 0xff, + 0x5b, 0xff, 0x59, 0xff, 0x6a, 0xff, 0x69, 0xff, 0x77, 0xff, 0x78, 0xff, + 0x8b, 0xff, 0x89, 0xff, 0xa1, 0xff, 0xa2, 0xff, 0xb9, 0xff, 0xb7, 0xff, + 0xd4, 0xff, 0xd2, 0xff, 0xed, 0xff, 0xef, 0xff, 0x0e, 0x00, 0x0a, 0x00, + 0x2b, 0x00, 0x2b, 0x00, 0x4c, 0x00, 0x4a, 0x00, 0x6c, 0x00, 0x6c, 0x00, + 0x8c, 0x00, 0x8c, 0x00, 0xae, 0x00, 0xad, 0x00, 0xd0, 0x00, 0xcf, 0x00, + 0xee, 0x00, 0xee, 0x00, 0x0e, 0x01, 0x0d, 0x01, 0x2a, 0x01, 0x2b, 0x01, + 0x46, 0x01, 0x47, 0x01, 0x62, 0x01, 0x60, 0x01, 0x77, 0x01, 0x77, 0x01, + 0x8c, 0x01, 0x8a, 0x01, 0x9b, 0x01, 0x9d, 0x01, 0xad, 0x01, 0xaa, 0x01, + 0xb8, 0x01, 0xb8, 0x01, 0xc1, 0x01, 0xc0, 0x01, 0xc9, 0x01, 0xc9, 0x01, + 0xcc, 0x01, 0xcc, 0x01, 0xcc, 0x01, 0xcd, 0x01, 0xcc, 0x01, 0xcb, 0x01, + 0xc8, 0x01, 0xc8, 0x01, 0xc2, 0x01, 0xc2, 0x01, 0xb9, 0x01, 0xb9, 0x01, + 0xae, 0x01, 0xb0, 0x01, 0xa4, 0x01, 0xa3, 0x01, 0x94, 0x01, 0x95, 0x01, + 0x8a, 0x01, 0x88, 0x01, 0x76, 0x01, 0x77, 0x01, 0x6c, 0x01, 0x6a, 0x01, + 0x56, 0x01, 0x5a, 0x01, 0x4c, 0x01, 0x49, 0x01, 0x38, 0x01, 0x3c, 0x01, + 0x2d, 0x01, 0x2b, 0x01, 0x1d, 0x01, 0x1f, 0x01, 0x11, 0x01, 0x10, 0x01, + 0x05, 0x01, 0x06, 0x01, 0xf7, 0x00, 0xf8, 0x00, 0xed, 0x00, 0xee, 0x00, + 0xe4, 0x00, 0xe6, 0x00, 0xdc, 0x00, 0xdb, 0x00, 0xd5, 0x00, 0xd8, 0x00, + 0xcd, 0x00, 0xcd, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xc3, 0x00, 0xc2, 0x00, + 0xbe, 0x00, 0xc0, 0x00, 0xba, 0x00, 0xba, 0x00, 0xb4, 0x00, 0xb5, 0x00, + 0xb1, 0x00, 0xb1, 0x00, 0xab, 0x00, 0xab, 0x00, 0xa5, 0x00, 0xa5, 0x00, + 0xa0, 0x00, 0xa0, 0x00, 0x99, 0x00, 0x99, 0x00, 0x90, 0x00, 0x91, 0x00, + 0x86, 0x00, 0x85, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x6e, 0x00, 0x6f, 0x00, + 0x5e, 0x00, 0x5f, 0x00, 0x4f, 0x00, 0x51, 0x00, 0x3f, 0x00, 0x3e, 0x00, + 0x2a, 0x00, 0x2c, 0x00, 0x18, 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, + 0xeb, 0xff, 0xeb, 0xff, 0xd4, 0xff, 0xd5, 0xff, 0xba, 0xff, 0xba, 0xff, + 0xa3, 0xff, 0xa4, 0xff, 0x89, 0xff, 0x8b, 0xff, 0x70, 0xff, 0x71, 0xff, + 0x59, 0xff, 0x5a, 0xff, 0x40, 0xff, 0x3f, 0xff, 0x2a, 0xff, 0x2c, 0xff, + 0x15, 0xff, 0x13, 0xff, 0x03, 0xff, 0x04, 0xff, 0xef, 0xfe, 0xf1, 0xfe, + 0xe4, 0xfe, 0xe2, 0xfe, 0xd4, 0xfe, 0xd6, 0xfe, 0xcc, 0xfe, 0xcb, 0xfe, + 0xc5, 0xfe, 0xc5, 0xfe, 0xc1, 0xfe, 0xc2, 0xfe, 0xc1, 0xfe, 0xc0, 0xfe, + 0xc4, 0xfe, 0xc3, 0xfe, 0xc8, 0xfe, 0xca, 0xfe, 0xd2, 0xfe, 0xd0, 0xfe, + 0xde, 0xfe, 0xe1, 0xfe, 0xed, 0xfe, 0xec, 0xfe, 0xff, 0xfe, 0xff, 0xfe, + 0x12, 0xff, 0x12, 0xff, 0x2a, 0xff, 0x28, 0xff, 0x41, 0xff, 0x44, 0xff, + 0x5c, 0xff, 0x5a, 0xff, 0x76, 0xff, 0x77, 0xff, 0x94, 0xff, 0x94, 0xff, + 0xae, 0xff, 0xae, 0xff, 0xcb, 0xff, 0xcd, 0xff, 0xe8, 0xff, 0xe6, 0xff, + 0x02, 0x00, 0x02, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x35, 0x00, 0x34, 0x00, + 0x4c, 0x00, 0x4c, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x73, 0x00, 0x71, 0x00, + 0x80, 0x00, 0x7f, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x94, 0x00, 0x95, 0x00, + 0x9b, 0x00, 0x99, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x9a, 0x00, 0x99, 0x00, + 0x96, 0x00, 0x96, 0x00, 0x8e, 0x00, 0x8c, 0x00, 0x82, 0x00, 0x83, 0x00, + 0x74, 0x00, 0x74, 0x00, 0x64, 0x00, 0x64, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x3b, 0x00, 0x39, 0x00, 0x25, 0x00, 0x26, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0xf5, 0xff, 0xf5, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xc0, 0xff, 0xbe, 0xff, + 0xa4, 0xff, 0xa6, 0xff, 0x8a, 0xff, 0x89, 0xff, 0x73, 0xff, 0x73, 0xff, + 0x58, 0xff, 0x59, 0xff, 0x44, 0xff, 0x43, 0xff, 0x2e, 0xff, 0x2f, 0xff, + 0x1b, 0xff, 0x1b, 0xff, 0x0a, 0xff, 0x0b, 0xff, 0xfa, 0xfe, 0xfa, 0xfe, + 0xf0, 0xfe, 0xf0, 0xfe, 0xe5, 0xfe, 0xe4, 0xfe, 0xdc, 0xfe, 0xde, 0xfe, + 0xd8, 0xfe, 0xd7, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, 0xd5, 0xfe, 0xd4, 0xfe, + 0xd4, 0xfe, 0xd5, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xde, 0xfe, 0xdc, 0xfe, + 0xe6, 0xfe, 0xe6, 0xfe, 0xec, 0xfe, 0xec, 0xfe, 0xf7, 0xfe, 0xf6, 0xfe, + 0xfe, 0xfe, 0xff, 0xfe, 0x0b, 0xff, 0x0a, 0xff, 0x14, 0xff, 0x15, 0xff, + 0x1f, 0xff, 0x1d, 0xff, 0x29, 0xff, 0x2a, 0xff, 0x34, 0xff, 0x33, 0xff, + 0x3c, 0xff, 0x3c, 0xff, 0x44, 0xff, 0x46, 0xff, 0x4c, 0xff, 0x4b, 0xff, + 0x4f, 0xff, 0x52, 0xff, 0x59, 0xff, 0x58, 0xff, 0x5b, 0xff, 0x5c, 0xff, + 0x5f, 0xff, 0x60, 0xff, 0x62, 0xff, 0x62, 0xff, 0x61, 0xff, 0x60, 0xff, + 0x61, 0xff, 0x63, 0xff, 0x60, 0xff, 0x5e, 0xff, 0x5d, 0xff, 0x5f, 0xff, + 0x5c, 0xff, 0x5c, 0xff, 0x58, 0xff, 0x59, 0xff, 0x59, 0xff, 0x5a, 0xff, + 0x52, 0xff, 0x55, 0xff, 0x55, 0xff, 0x53, 0xff, 0x51, 0xff, 0x54, 0xff, + 0x52, 0xff, 0x53, 0xff, 0x56, 0xff, 0x55, 0xff, 0x56, 0xff, 0x5a, 0xff, + 0x5f, 0xff, 0x5e, 0xff, 0x65, 0xff, 0x64, 0xff, 0x6c, 0xff, 0x6e, 0xff, + 0x79, 0xff, 0x79, 0xff, 0x84, 0xff, 0x86, 0xff, 0x98, 0xff, 0x97, 0xff, + 0xa6, 0xff, 0xa8, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xea, 0xff, 0xea, 0xff, 0x06, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x1e, 0x00, + 0x3e, 0x00, 0x3f, 0x00, 0x5c, 0x00, 0x5a, 0x00, 0x79, 0x00, 0x7a, 0x00, + 0x9a, 0x00, 0x99, 0x00, 0xb8, 0x00, 0xb7, 0x00, 0xd9, 0x00, 0xd8, 0x00, + 0xf6, 0x00, 0xf7, 0x00, 0x15, 0x01, 0x12, 0x01, 0x32, 0x01, 0x33, 0x01, + 0x4a, 0x01, 0x4b, 0x01, 0x67, 0x01, 0x64, 0x01, 0x7b, 0x01, 0x7c, 0x01, + 0x90, 0x01, 0x8f, 0x01, 0xa2, 0x01, 0xa2, 0x01, 0xb1, 0x01, 0xb1, 0x01, + 0xbc, 0x01, 0xba, 0x01, 0xc6, 0x01, 0xc8, 0x01, 0xcc, 0x01, 0xca, 0x01, + 0xce, 0x01, 0xcd, 0x01, 0xcb, 0x01, 0xcd, 0x01, 0xc9, 0x01, 0xc8, 0x01, + 0xc3, 0x01, 0xc2, 0x01, 0xb8, 0x01, 0xb7, 0x01, 0xac, 0x01, 0xae, 0x01, + 0x9f, 0x01, 0x9d, 0x01, 0x8b, 0x01, 0x8e, 0x01, 0x7c, 0x01, 0x7c, 0x01, + 0x67, 0x01, 0x66, 0x01, 0x54, 0x01, 0x55, 0x01, 0x3f, 0x01, 0x3d, 0x01, + 0x27, 0x01, 0x29, 0x01, 0x14, 0x01, 0x13, 0x01, 0xfc, 0x00, 0xfb, 0x00, + 0xe9, 0x00, 0xea, 0x00, 0xd4, 0x00, 0xd3, 0x00, 0xc3, 0x00, 0xc3, 0x00, + 0xb1, 0x00, 0xb2, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0x95, 0x00, 0x96, 0x00, + 0x88, 0x00, 0x89, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x79, 0x00, 0x78, 0x00, + 0x71, 0x00, 0x72, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x6e, 0x00, + 0x6b, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x72, 0x00, 0x70, 0x00, 0x72, 0x00, + 0x78, 0x00, 0x77, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x83, 0x00, 0x84, 0x00, + 0x88, 0x00, 0x88, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x94, 0x00, 0x94, 0x00, + 0x9a, 0x00, 0x99, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0xa1, 0x00, 0xa0, 0x00, + 0xa0, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0x9f, 0x00, 0xa0, 0x00, + 0x9d, 0x00, 0x9c, 0x00, 0x96, 0x00, 0x96, 0x00, 0x8d, 0x00, 0x8d, 0x00, + 0x81, 0x00, 0x82, 0x00, 0x76, 0x00, 0x75, 0x00, 0x65, 0x00, 0x66, 0x00, + 0x56, 0x00, 0x55, 0x00, 0x42, 0x00, 0x44, 0x00, 0x2c, 0x00, 0x2b, 0x00, + 0x17, 0x00, 0x19, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xce, 0xff, 0xce, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0x99, 0xff, 0x9a, 0xff, + 0x82, 0xff, 0x81, 0xff, 0x66, 0xff, 0x68, 0xff, 0x52, 0xff, 0x50, 0xff, + 0x39, 0xff, 0x3b, 0xff, 0x25, 0xff, 0x26, 0xff, 0x14, 0xff, 0x14, 0xff, + 0x05, 0xff, 0x03, 0xff, 0xf6, 0xfe, 0xf7, 0xfe, 0xed, 0xfe, 0xeb, 0xfe, + 0xe2, 0xfe, 0xe5, 0xfe, 0xe0, 0xfe, 0xdf, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, + 0xde, 0xfe, 0xdf, 0xfe, 0xe4, 0xfe, 0xe3, 0xfe, 0xe9, 0xfe, 0xea, 0xfe, + 0xf4, 0xfe, 0xf4, 0xfe, 0x01, 0xff, 0x00, 0xff, 0x0e, 0xff, 0x0f, 0xff, + 0x21, 0xff, 0x20, 0xff, 0x32, 0xff, 0x34, 0xff, 0x48, 0xff, 0x46, 0xff, + 0x5c, 0xff, 0x5c, 0xff, 0x72, 0xff, 0x74, 0xff, 0x89, 0xff, 0x88, 0xff, + 0x9f, 0xff, 0xa1, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xcd, 0xff, 0xcc, 0xff, + 0xdf, 0xff, 0xdf, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0x03, 0x00, 0x03, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x2b, 0x00, 0x2a, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x38, 0x00, 0x36, 0x00, 0x3a, 0x00, 0x3b, 0x00, + 0x39, 0x00, 0x39, 0x00, 0x37, 0x00, 0x37, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x12, 0x00, 0x11, 0x00, + 0x02, 0x00, 0x03, 0x00, 0xf2, 0xff, 0xf2, 0xff, 0xe1, 0xff, 0xe1, 0xff, + 0xce, 0xff, 0xce, 0xff, 0xbc, 0xff, 0xbd, 0xff, 0xa7, 0xff, 0xa7, 0xff, + 0x93, 0xff, 0x94, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x6c, 0xff, 0x6c, 0xff, + 0x5a, 0xff, 0x59, 0xff, 0x48, 0xff, 0x49, 0xff, 0x39, 0xff, 0x37, 0xff, + 0x29, 0xff, 0x2a, 0xff, 0x1e, 0xff, 0x1d, 0xff, 0x11, 0xff, 0x12, 0xff, + 0x0a, 0xff, 0x0a, 0xff, 0x04, 0xff, 0x02, 0xff, 0xfb, 0xfe, 0x00, 0xff, + 0xfb, 0xfe, 0xf9, 0xfe, 0xfa, 0xfe, 0xfa, 0xfe, 0xf9, 0xfe, 0xfc, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfe, 0x02, 0xff, 0x03, 0xff, 0x07, 0xff, 0x06, 0xff, + 0x0f, 0xff, 0x0e, 0xff, 0x14, 0xff, 0x17, 0xff, 0x20, 0xff, 0x1e, 0xff, + 0x25, 0xff, 0x26, 0xff, 0x30, 0xff, 0x30, 0xff, 0x37, 0xff, 0x37, 0xff, + 0x3f, 0xff, 0x40, 0xff, 0x46, 0xff, 0x46, 0xff, 0x4d, 0xff, 0x4d, 0xff, + 0x51, 0xff, 0x53, 0xff, 0x57, 0xff, 0x56, 0xff, 0x5a, 0xff, 0x59, 0xff, + 0x59, 0xff, 0x5a, 0xff, 0x58, 0xff, 0x59, 0xff, 0x58, 0xff, 0x57, 0xff, + 0x54, 0xff, 0x53, 0xff, 0x51, 0xff, 0x51, 0xff, 0x48, 0xff, 0x48, 0xff, + 0x43, 0xff, 0x44, 0xff, 0x3a, 0xff, 0x39, 0xff, 0x31, 0xff, 0x34, 0xff, + 0x2b, 0xff, 0x29, 0xff, 0x1e, 0xff, 0x1f, 0xff, 0x17, 0xff, 0x17, 0xff, + 0x0f, 0xff, 0x0e, 0xff, 0x08, 0xff, 0x08, 0xff, 0xff, 0xfe, 0x00, 0xff, + 0xfb, 0xfe, 0xfa, 0xfe, 0xf7, 0xfe, 0xf8, 0xfe, 0xf8, 0xfe, 0xf6, 0xfe, + 0xf7, 0xfe, 0xf8, 0xfe, 0xfb, 0xfe, 0xfd, 0xfe, 0x03, 0xff, 0x03, 0xff, + 0x0b, 0xff, 0x0c, 0xff, 0x16, 0xff, 0x16, 0xff, 0x25, 0xff, 0x27, 0xff, + 0x3b, 0xff, 0x3a, 0xff, 0x4b, 0xff, 0x4e, 0xff, 0x68, 0xff, 0x67, 0xff, + 0x81, 0xff, 0x83, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0xbf, 0xff, 0xc0, 0xff, + 0xe3, 0xff, 0xe3, 0xff, 0x08, 0x00, 0x0a, 0x00, 0x2e, 0x00, 0x2c, 0x00, + 0x54, 0x00, 0x56, 0x00, 0x7e, 0x00, 0x7d, 0x00, 0xa5, 0x00, 0xa5, 0x00, + 0xd0, 0x00, 0xd0, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0x1f, 0x01, 0x1d, 0x01, + 0x41, 0x01, 0x43, 0x01, 0x66, 0x01, 0x65, 0x01, 0x87, 0x01, 0x88, 0x01, + 0xa6, 0x01, 0xa6, 0x01, 0xc2, 0x01, 0xc3, 0x01, 0xda, 0x01, 0xd9, 0x01, + 0xf0, 0x01, 0xf0, 0x01, 0x01, 0x02, 0x01, 0x02, 0x10, 0x02, 0x10, 0x02, + 0x19, 0x02, 0x1b, 0x02, 0x1e, 0x02, 0x1e, 0x02, 0x21, 0x02, 0x21, 0x02, + 0x1d, 0x02, 0x20, 0x02, 0x1c, 0x02, 0x18, 0x02, 0x0e, 0x02, 0x13, 0x02, + 0x06, 0x02, 0x02, 0x02, 0xf2, 0x01, 0xf7, 0x01, 0xe3, 0x01, 0xe1, 0x01, + 0xcf, 0x01, 0xcf, 0x01, 0xb6, 0x01, 0xb6, 0x01, 0xa1, 0x01, 0xa0, 0x01, + 0x84, 0x01, 0x84, 0x01, 0x6d, 0x01, 0x6c, 0x01, 0x52, 0x01, 0x51, 0x01, + 0x35, 0x01, 0x35, 0x01, 0x1c, 0x01, 0x1b, 0x01, 0x01, 0x01, 0x02, 0x01, + 0xea, 0x00, 0xe9, 0x00, 0xd2, 0x00, 0xd3, 0x00, 0xbd, 0x00, 0xbb, 0x00, + 0xab, 0x00, 0xac, 0x00, 0x98, 0x00, 0x97, 0x00, 0x8c, 0x00, 0x8b, 0x00, + 0x7b, 0x00, 0x7d, 0x00, 0x74, 0x00, 0x74, 0x00, 0x6c, 0x00, 0x6c, 0x00, + 0x65, 0x00, 0x66, 0x00, 0x64, 0x00, 0x63, 0x00, 0x61, 0x00, 0x62, 0x00, + 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x63, 0x00, 0x67, 0x00, 0x66, 0x00, + 0x6a, 0x00, 0x6b, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x75, 0x00, 0x76, 0x00, + 0x7b, 0x00, 0x7b, 0x00, 0x80, 0x00, 0x80, 0x00, 0x85, 0x00, 0x85, 0x00, + 0x88, 0x00, 0x89, 0x00, 0x8e, 0x00, 0x8c, 0x00, 0x8b, 0x00, 0x8d, 0x00, + 0x8e, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0x8b, 0x00, 0x88, 0x00, 0x8a, 0x00, + 0x84, 0x00, 0x84, 0x00, 0x7c, 0x00, 0x7b, 0x00, 0x73, 0x00, 0x74, 0x00, + 0x67, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x5c, 0x00, 0x4b, 0x00, 0x4c, 0x00, + 0x3a, 0x00, 0x3a, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x14, 0x00, 0x15, 0x00, + 0x03, 0x00, 0x03, 0x00, 0xee, 0xff, 0xef, 0xff, 0xd9, 0xff, 0xd9, 0xff, + 0xc8, 0xff, 0xc9, 0xff, 0xb1, 0xff, 0xb2, 0xff, 0xa3, 0xff, 0xa1, 0xff, + 0x8e, 0xff, 0x8f, 0xff, 0x7e, 0xff, 0x7f, 0xff, 0x70, 0xff, 0x71, 0xff, + 0x62, 0xff, 0x62, 0xff, 0x59, 0xff, 0x59, 0xff, 0x51, 0xff, 0x51, 0xff, + 0x4c, 0xff, 0x4c, 0xff, 0x49, 0xff, 0x49, 0xff, 0x48, 0xff, 0x48, 0xff, + 0x4e, 0xff, 0x4c, 0xff, 0x4e, 0xff, 0x50, 0xff, 0x5a, 0xff, 0x58, 0xff, + 0x61, 0xff, 0x63, 0xff, 0x6f, 0xff, 0x6f, 0xff, 0x7d, 0xff, 0x7d, 0xff, + 0x8a, 0xff, 0x8d, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0xaf, 0xff, 0xb1, 0xff, + 0xc5, 0xff, 0xc3, 0xff, 0xd6, 0xff, 0xd7, 0xff, 0xeb, 0xff, 0xea, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0x11, 0x00, 0x10, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x32, 0x00, 0x31, 0x00, 0x41, 0x00, 0x41, 0x00, 0x4b, 0x00, 0x4c, 0x00, + 0x56, 0x00, 0x56, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, + 0x64, 0x00, 0x63, 0x00, 0x5e, 0x00, 0x60, 0x00, 0x5f, 0x00, 0x5e, 0x00, + 0x53, 0x00, 0x53, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x3c, 0x00, 0x3d, 0x00, + 0x2e, 0x00, 0x2d, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x05, 0x00, 0x07, 0x00, + 0xf2, 0xff, 0xf1, 0xff, 0xd7, 0xff, 0xd9, 0xff, 0xc0, 0xff, 0xbf, 0xff, + 0xa6, 0xff, 0xa6, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x73, 0xff, 0x72, 0xff, + 0x5b, 0xff, 0x5b, 0xff, 0x40, 0xff, 0x42, 0xff, 0x2b, 0xff, 0x29, 0xff, + 0x14, 0xff, 0x16, 0xff, 0x00, 0xff, 0xfe, 0xfe, 0xed, 0xfe, 0xef, 0xfe, + 0xdd, 0xfe, 0xdc, 0xfe, 0xd0, 0xfe, 0xd0, 0xfe, 0xc4, 0xfe, 0xc4, 0xfe, + 0xbe, 0xfe, 0xbf, 0xfe, 0xb9, 0xfe, 0xb7, 0xfe, 0xb5, 0xfe, 0xb7, 0xfe, + 0xb8, 0xfe, 0xb6, 0xfe, 0xb8, 0xfe, 0xb9, 0xfe, 0xbf, 0xfe, 0xbe, 0xfe, + 0xc7, 0xfe, 0xc6, 0xfe, 0xcf, 0xfe, 0xcf, 0xfe, 0xdc, 0xfe, 0xdd, 0xfe, + 0xe8, 0xfe, 0xe7, 0xfe, 0xf5, 0xfe, 0xf7, 0xfe, 0x07, 0xff, 0x06, 0xff, + 0x16, 0xff, 0x15, 0xff, 0x23, 0xff, 0x24, 0xff, 0x35, 0xff, 0x35, 0xff, + 0x41, 0xff, 0x43, 0xff, 0x53, 0xff, 0x51, 0xff, 0x5c, 0xff, 0x5e, 0xff, + 0x68, 0xff, 0x67, 0xff, 0x72, 0xff, 0x75, 0xff, 0x78, 0xff, 0x77, 0xff, + 0x7f, 0xff, 0x80, 0xff, 0x81, 0xff, 0x81, 0xff, 0x83, 0xff, 0x83, 0xff, + 0x81, 0xff, 0x82, 0xff, 0x7c, 0xff, 0x7d, 0xff, 0x79, 0xff, 0x79, 0xff, + 0x6f, 0xff, 0x70, 0xff, 0x68, 0xff, 0x69, 0xff, 0x5d, 0xff, 0x5e, 0xff, + 0x52, 0xff, 0x52, 0xff, 0x46, 0xff, 0x46, 0xff, 0x39, 0xff, 0x38, 0xff, + 0x2a, 0xff, 0x2b, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0x11, 0xff, 0x12, 0xff, + 0x08, 0xff, 0x06, 0xff, 0xfd, 0xfe, 0xfd, 0xfe, 0xf4, 0xfe, 0xf5, 0xfe, + 0xf0, 0xfe, 0xf1, 0xfe, 0xec, 0xfe, 0xea, 0xfe, 0xe9, 0xfe, 0xeb, 0xfe, + 0xed, 0xfe, 0xeb, 0xfe, 0xf0, 0xfe, 0xf1, 0xfe, 0xfa, 0xfe, 0xf8, 0xfe, + 0x04, 0xff, 0x03, 0xff, 0x14, 0xff, 0x13, 0xff, 0x24, 0xff, 0x24, 0xff, + 0x3c, 0xff, 0x3b, 0xff, 0x4f, 0xff, 0x50, 0xff, 0x6e, 0xff, 0x6d, 0xff, + 0x89, 0xff, 0x89, 0xff, 0xab, 0xff, 0xab, 0xff, 0xcc, 0xff, 0xcb, 0xff, + 0xef, 0xff, 0xef, 0xff, 0x13, 0x00, 0x12, 0x00, 0x39, 0x00, 0x3a, 0x00, + 0x60, 0x00, 0x5e, 0x00, 0x85, 0x00, 0x85, 0x00, 0xa9, 0x00, 0xa9, 0x00, + 0xcf, 0x00, 0xcf, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0x13, 0x01, 0x12, 0x01, + 0x33, 0x01, 0x33, 0x01, 0x50, 0x01, 0x4e, 0x01, 0x68, 0x01, 0x6a, 0x01, + 0x81, 0x01, 0x81, 0x01, 0x95, 0x01, 0x95, 0x01, 0xa5, 0x01, 0xa4, 0x01, + 0xb1, 0x01, 0xb1, 0x01, 0xba, 0x01, 0xb9, 0x01, 0xc1, 0x01, 0xc0, 0x01, + 0xc2, 0x01, 0xc3, 0x01, 0xc2, 0x01, 0xc2, 0x01, 0xbc, 0x01, 0xbc, 0x01, + 0xb5, 0x01, 0xb5, 0x01, 0xab, 0x01, 0xac, 0x01, 0x9f, 0x01, 0x9e, 0x01, + 0x8e, 0x01, 0x90, 0x01, 0x7f, 0x01, 0x7e, 0x01, 0x6b, 0x01, 0x6d, 0x01, + 0x58, 0x01, 0x56, 0x01, 0x44, 0x01, 0x46, 0x01, 0x2d, 0x01, 0x2e, 0x01, + 0x1c, 0x01, 0x1c, 0x01, 0x04, 0x01, 0x05, 0x01, 0xf3, 0x00, 0xf4, 0x00, + 0xdf, 0x00, 0xdf, 0x00, 0xcd, 0x00, 0xcf, 0x00, 0xbe, 0x00, 0xbf, 0x00, + 0xaf, 0x00, 0xaf, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0x99, 0x00, 0x9a, 0x00, + 0x90, 0x00, 0x90, 0x00, 0x8a, 0x00, 0x89, 0x00, 0x84, 0x00, 0x85, 0x00, + 0x82, 0x00, 0x83, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x80, 0x00, 0x7f, 0x00, + 0x82, 0x00, 0x81, 0x00, 0x85, 0x00, 0x85, 0x00, 0x86, 0x00, 0x85, 0x00, + 0x8c, 0x00, 0x8b, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x93, 0x00, 0x92, 0x00, + 0x97, 0x00, 0x97, 0x00, 0x9a, 0x00, 0x98, 0x00, 0x9c, 0x00, 0x9b, 0x00, + 0x9a, 0x00, 0x99, 0x00, 0x9b, 0x00, 0x9a, 0x00, 0x98, 0x00, 0x96, 0x00, + 0x95, 0x00, 0x95, 0x00, 0x8f, 0x00, 0x8d, 0x00, 0x86, 0x00, 0x85, 0x00, + 0x7f, 0x00, 0x7d, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x61, 0x00, + 0x52, 0x00, 0x53, 0x00, 0x41, 0x00, 0x3f, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x1a, 0x00, 0x18, 0x00, 0x05, 0x00, 0x03, 0x00, 0xee, 0xff, 0xee, 0xff, + 0xd9, 0xff, 0xd7, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xac, 0xff, 0xab, 0xff, + 0x97, 0xff, 0x94, 0xff, 0x81, 0xff, 0x82, 0xff, 0x70, 0xff, 0x6d, 0xff, + 0x5d, 0xff, 0x5e, 0xff, 0x51, 0xff, 0x4e, 0xff, 0x43, 0xff, 0x42, 0xff, + 0x38, 0xff, 0x38, 0xff, 0x32, 0xff, 0x31, 0xff, 0x2c, 0xff, 0x2e, 0xff, + 0x2d, 0xff, 0x2a, 0xff, 0x2c, 0xff, 0x2d, 0xff, 0x34, 0xff, 0x34, 0xff, + 0x3b, 0xff, 0x3a, 0xff, 0x47, 0xff, 0x46, 0xff, 0x54, 0xff, 0x53, 0xff, + 0x64, 0xff, 0x64, 0xff, 0x76, 0xff, 0x76, 0xff, 0x8d, 0xff, 0x8c, 0xff, + 0xa4, 0xff, 0xa2, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xd6, 0xff, 0xd3, 0xff, + 0xee, 0xff, 0xee, 0xff, 0x0a, 0x00, 0x09, 0x00, 0x24, 0x00, 0x23, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x56, 0x00, 0x55, 0x00, 0x6b, 0x00, 0x6a, 0x00, + 0x80, 0x00, 0x80, 0x00, 0x93, 0x00, 0x91, 0x00, 0xa2, 0x00, 0xa1, 0x00, + 0xaf, 0x00, 0xae, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xbf, 0x00, 0xbf, 0x00, + 0xc0, 0x00, 0xbf, 0x00, 0xc1, 0x00, 0xc0, 0x00, 0xbc, 0x00, 0xbd, 0x00, + 0xb4, 0x00, 0xb3, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0x9a, 0x00, 0x98, 0x00, + 0x89, 0x00, 0x89, 0x00, 0x72, 0x00, 0x72, 0x00, 0x5d, 0x00, 0x5c, 0x00, + 0x41, 0x00, 0x42, 0x00, 0x26, 0x00, 0x26, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0xe9, 0xff, 0xea, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xad, 0xff, 0xae, 0xff, + 0x93, 0xff, 0x91, 0xff, 0x73, 0xff, 0x72, 0xff, 0x56, 0xff, 0x59, 0xff, + 0x3d, 0xff, 0x3b, 0xff, 0x22, 0xff, 0x22, 0xff, 0x0e, 0xff, 0x0b, 0xff, + 0xf6, 0xfe, 0xf7, 0xfe, 0xe5, 0xfe, 0xe3, 0xfe, 0xd5, 0xfe, 0xd6, 0xfe, + 0xc9, 0xfe, 0xc7, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xb8, 0xfe, 0xb6, 0xfe, + 0xb6, 0xfe, 0xb8, 0xfe, 0xb5, 0xfe, 0xb4, 0xfe, 0xb7, 0xfe, 0xb8, 0xfe, + 0xbc, 0xfe, 0xbb, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, 0xcd, 0xfe, 0xcb, 0xfe, + 0xd7, 0xfe, 0xd8, 0xfe, 0xe3, 0xfe, 0xe2, 0xfe, 0xf3, 0xfe, 0xf2, 0xfe, + 0x00, 0xff, 0x01, 0xff, 0x11, 0xff, 0x10, 0xff, 0x1d, 0xff, 0x1d, 0xff, + 0x2d, 0xff, 0x2c, 0xff, 0x3b, 0xff, 0x3a, 0xff, 0x48, 0xff, 0x48, 0xff, + 0x54, 0xff, 0x54, 0xff, 0x5f, 0xff, 0x5d, 0xff, 0x67, 0xff, 0x69, 0xff, + 0x70, 0xff, 0x6e, 0xff, 0x72, 0xff, 0x75, 0xff, 0x79, 0xff, 0x78, 0xff, + 0x7b, 0xff, 0x79, 0xff, 0x79, 0xff, 0x7b, 0xff, 0x79, 0xff, 0x78, 0xff, + 0x75, 0xff, 0x75, 0xff, 0x71, 0xff, 0x71, 0xff, 0x68, 0xff, 0x69, 0xff, + 0x63, 0xff, 0x61, 0xff, 0x59, 0xff, 0x5b, 0xff, 0x52, 0xff, 0x4e, 0xff, + 0x47, 0xff, 0x4a, 0xff, 0x40, 0xff, 0x3e, 0xff, 0x37, 0xff, 0x38, 0xff, + 0x31, 0xff, 0x2f, 0xff, 0x29, 0xff, 0x2a, 0xff, 0x27, 0xff, 0x28, 0xff, + 0x25, 0xff, 0x23, 0xff, 0x24, 0xff, 0x26, 0xff, 0x28, 0xff, 0x26, 0xff, + 0x29, 0xff, 0x2d, 0xff, 0x34, 0xff, 0x32, 0xff, 0x3b, 0xff, 0x3b, 0xff, + 0x47, 0xff, 0x49, 0xff, 0x5a, 0xff, 0x59, 0xff, 0x6b, 0xff, 0x6d, 0xff, + 0x81, 0xff, 0x80, 0xff, 0x96, 0xff, 0x97, 0xff, 0xb2, 0xff, 0xb3, 0xff, + 0xcc, 0xff, 0xcc, 0xff, 0xed, 0xff, 0xec, 0xff, 0x0a, 0x00, 0x0b, 0x00, + 0x2b, 0x00, 0x2a, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x6e, 0x00, 0x6d, 0x00, + 0x91, 0x00, 0x91, 0x00, 0xb1, 0x00, 0xb0, 0x00, 0xd1, 0x00, 0xd1, 0x00, + 0xf1, 0x00, 0xf1, 0x00, 0x0d, 0x01, 0x0e, 0x01, 0x28, 0x01, 0x27, 0x01, + 0x44, 0x01, 0x43, 0x01, 0x55, 0x01, 0x56, 0x01, 0x6e, 0x01, 0x6d, 0x01, + 0x79, 0x01, 0x79, 0x01, 0x89, 0x01, 0x88, 0x01, 0x90, 0x01, 0x90, 0x01, + 0x97, 0x01, 0x97, 0x01, 0x9a, 0x01, 0x9a, 0x01, 0x98, 0x01, 0x96, 0x01, + 0x96, 0x01, 0x97, 0x01, 0x8d, 0x01, 0x8b, 0x01, 0x84, 0x01, 0x85, 0x01, + 0x77, 0x01, 0x76, 0x01, 0x68, 0x01, 0x67, 0x01, 0x58, 0x01, 0x59, 0x01, + 0x47, 0x01, 0x45, 0x01, 0x31, 0x01, 0x33, 0x01, 0x1f, 0x01, 0x1d, 0x01, + 0x06, 0x01, 0x09, 0x01, 0xf6, 0x00, 0xf5, 0x00, 0xde, 0x00, 0xdf, 0x00, + 0xcc, 0x00, 0xcb, 0x00, 0xb7, 0x00, 0xb9, 0x00, 0xa6, 0x00, 0xa4, 0x00, + 0x97, 0x00, 0x98, 0x00, 0x8a, 0x00, 0x89, 0x00, 0x7d, 0x00, 0x7c, 0x00, + 0x72, 0x00, 0x74, 0x00, 0x6c, 0x00, 0x6b, 0x00, 0x66, 0x00, 0x67, 0x00, + 0x65, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x66, 0x00, 0x66, 0x00, + 0x68, 0x00, 0x68, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x75, 0x00, 0x76, 0x00, + 0x7e, 0x00, 0x7c, 0x00, 0x86, 0x00, 0x84, 0x00, 0x91, 0x00, 0x92, 0x00, + 0x99, 0x00, 0x97, 0x00, 0xa3, 0x00, 0xa5, 0x00, 0xae, 0x00, 0xad, 0x00, + 0xb5, 0x00, 0xb6, 0x00, 0xbe, 0x00, 0xbd, 0x00, 0xc5, 0x00, 0xc2, 0x00, + 0xc9, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xca, 0x00, 0xcc, 0x00, 0xcc, 0x00, + 0xca, 0x00, 0xc9, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xbe, 0x00, 0xbe, 0x00, + 0xb5, 0x00, 0xb4, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0x99, 0x00, 0x9a, 0x00, + 0x88, 0x00, 0x88, 0x00, 0x76, 0x00, 0x75, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x47, 0x00, 0x47, 0x00, 0x30, 0x00, 0x30, 0x00, 0x15, 0x00, 0x16, 0x00, + 0xfc, 0xff, 0xfb, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xc7, 0xff, 0xc8, 0xff, + 0xab, 0xff, 0xac, 0xff, 0x94, 0xff, 0x93, 0xff, 0x7b, 0xff, 0x7c, 0xff, + 0x66, 0xff, 0x66, 0xff, 0x52, 0xff, 0x51, 0xff, 0x3f, 0xff, 0x3f, 0xff, + 0x31, 0xff, 0x2f, 0xff, 0x26, 0xff, 0x26, 0xff, 0x1a, 0xff, 0x1a, 0xff, + 0x16, 0xff, 0x17, 0xff, 0x13, 0xff, 0x12, 0xff, 0x14, 0xff, 0x13, 0xff, + 0x18, 0xff, 0x19, 0xff, 0x22, 0xff, 0x20, 0xff, 0x2a, 0xff, 0x2c, 0xff, + 0x39, 0xff, 0x37, 0xff, 0x48, 0xff, 0x4a, 0xff, 0x5b, 0xff, 0x5b, 0xff, + 0x70, 0xff, 0x70, 0xff, 0x86, 0xff, 0x88, 0xff, 0xa0, 0xff, 0x9f, 0xff, + 0xb9, 0xff, 0xba, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xed, 0xff, 0xee, 0xff, + 0x05, 0x00, 0x05, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x36, 0x00, 0x37, 0x00, + 0x4c, 0x00, 0x4b, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x72, 0x00, 0x71, 0x00, + 0x7f, 0x00, 0x80, 0x00, 0x8d, 0x00, 0x8c, 0x00, 0x94, 0x00, 0x94, 0x00, + 0x9c, 0x00, 0x9b, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0x9d, 0x00, 0x9a, 0x00, + 0x98, 0x00, 0x9a, 0x00, 0x92, 0x00, 0x8f, 0x00, 0x85, 0x00, 0x85, 0x00, + 0x78, 0x00, 0x77, 0x00, 0x68, 0x00, 0x68, 0x00, 0x54, 0x00, 0x55, 0x00, + 0x40, 0x00, 0x3e, 0x00, 0x27, 0x00, 0x29, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0xf5, 0xff, 0xf5, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xc0, 0xff, 0xc0, 0xff, + 0xa4, 0xff, 0xa4, 0xff, 0x8b, 0xff, 0x8d, 0xff, 0x73, 0xff, 0x71, 0xff, + 0x59, 0xff, 0x5a, 0xff, 0x44, 0xff, 0x42, 0xff, 0x2e, 0xff, 0x2e, 0xff, + 0x1a, 0xff, 0x19, 0xff, 0x0a, 0xff, 0x0b, 0xff, 0xfa, 0xfe, 0xf9, 0xfe, + 0xef, 0xfe, 0xee, 0xfe, 0xe5, 0xfe, 0xe5, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, + 0xda, 0xfe, 0xd9, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, + 0xd9, 0xfe, 0xd9, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, + 0xea, 0xfe, 0xe9, 0xfe, 0xf3, 0xfe, 0xf3, 0xfe, 0xf9, 0xfe, 0xfb, 0xfe, + 0x03, 0xff, 0x01, 0xff, 0x0c, 0xff, 0x0e, 0xff, 0x15, 0xff, 0x15, 0xff, + 0x1d, 0xff, 0x1f, 0xff, 0x25, 0xff, 0x23, 0xff, 0x2b, 0xff, 0x2d, 0xff, + 0x34, 0xff, 0x2f, 0xff, 0x33, 0xff, 0x35, 0xff, 0x39, 0xff, 0x37, 0xff, + 0x39, 0xff, 0x38, 0xff, 0x38, 0xff, 0x39, 0xff, 0x37, 0xff, 0x35, 0xff, + 0x32, 0xff, 0x32, 0xff, 0x2d, 0xff, 0x2c, 0xff, 0x26, 0xff, 0x26, 0xff, + 0x1e, 0xff, 0x1c, 0xff, 0x15, 0xff, 0x15, 0xff, 0x0a, 0xff, 0x0a, 0xff, + 0x01, 0xff, 0xff, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, 0xed, 0xfe, 0xec, 0xfe, + 0xe2, 0xfe, 0xe2, 0xfe, 0xd8, 0xfe, 0xd9, 0xfe, 0xd3, 0xfe, 0xd0, 0xfe, + 0xca, 0xfe, 0xcc, 0xfe, 0xc7, 0xfe, 0xc8, 0xfe, 0xc5, 0xfe, 0xc5, 0xfe, + 0xc4, 0xfe, 0xc4, 0xfe, 0xc9, 0xfe, 0xc8, 0xfe, 0xce, 0xfe, 0xd0, 0xfe, + 0xd7, 0xfe, 0xd6, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, 0xf4, 0xfe, 0xf4, 0xfe, + 0x07, 0xff, 0x07, 0xff, 0x1d, 0xff, 0x1c, 0xff, 0x35, 0xff, 0x37, 0xff, + 0x53, 0xff, 0x51, 0xff, 0x72, 0xff, 0x73, 0xff, 0x91, 0xff, 0x90, 0xff, + 0xb7, 0xff, 0xb6, 0xff, 0xda, 0xff, 0xdb, 0xff, 0x02, 0x00, 0x01, 0x00, + 0x2b, 0x00, 0x2b, 0x00, 0x52, 0x00, 0x53, 0x00, 0x7c, 0x00, 0x7a, 0x00, + 0xa2, 0x00, 0xa2, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0x12, 0x01, 0x12, 0x01, 0x37, 0x01, 0x38, 0x01, 0x54, 0x01, 0x54, 0x01, + 0x70, 0x01, 0x71, 0x01, 0x8d, 0x01, 0x8c, 0x01, 0x9d, 0x01, 0xa0, 0x01, + 0xb6, 0x01, 0xb4, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0xcd, 0x01, 0xcc, 0x01, + 0xd4, 0x01, 0xd2, 0x01, 0xd5, 0x01, 0xd4, 0x01, 0xd3, 0x01, 0xd4, 0x01, + 0xd0, 0x01, 0xcf, 0x01, 0xc7, 0x01, 0xc6, 0x01, 0xba, 0x01, 0xbb, 0x01, + 0xac, 0x01, 0xab, 0x01, 0x99, 0x01, 0x99, 0x01, 0x87, 0x01, 0x86, 0x01, + 0x6e, 0x01, 0x6e, 0x01, 0x5a, 0x01, 0x58, 0x01, 0x3f, 0x01, 0x40, 0x01, + 0x26, 0x01, 0x25, 0x01, 0x0c, 0x01, 0x0d, 0x01, 0xf5, 0x00, 0xf3, 0x00, + 0xd9, 0x00, 0xdb, 0x00, 0xc5, 0x00, 0xc4, 0x00, 0xac, 0x00, 0xaa, 0x00, + 0x97, 0x00, 0x9a, 0x00, 0x85, 0x00, 0x84, 0x00, 0x74, 0x00, 0x75, 0x00, + 0x66, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x58, 0x00, 0x4f, 0x00, 0x51, 0x00, + 0x49, 0x00, 0x48, 0x00, 0x47, 0x00, 0x47, 0x00, 0x44, 0x00, 0x45, 0x00, + 0x47, 0x00, 0x46, 0x00, 0x49, 0x00, 0x4b, 0x00, 0x4f, 0x00, 0x4e, 0x00, + 0x56, 0x00, 0x56, 0x00, 0x5d, 0x00, 0x5c, 0x00, 0x67, 0x00, 0x67, 0x00, + 0x71, 0x00, 0x72, 0x00, 0x7c, 0x00, 0x7b, 0x00, 0x87, 0x00, 0x86, 0x00, + 0x91, 0x00, 0x91, 0x00, 0x9b, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0xa3, 0x00, + 0xaa, 0x00, 0xad, 0x00, 0xb5, 0x00, 0xb2, 0x00, 0xb7, 0x00, 0xb9, 0x00, + 0xbc, 0x00, 0xba, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbc, 0x00, 0xba, 0x00, + 0xb7, 0x00, 0xb8, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0xa8, 0x00, 0xa5, 0x00, + 0x9d, 0x00, 0x9e, 0x00, 0x92, 0x00, 0x90, 0x00, 0x82, 0x00, 0x83, 0x00, + 0x73, 0x00, 0x72, 0x00, 0x62, 0x00, 0x62, 0x00, 0x4d, 0x00, 0x4e, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x27, 0x00, 0x26, 0x00, 0x15, 0x00, 0x17, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xed, 0xff, 0xef, 0xff, 0xdd, 0xff, 0xdb, 0xff, + 0xcc, 0xff, 0xcb, 0xff, 0xbc, 0xff, 0xbe, 0xff, 0xaf, 0xff, 0xaf, 0xff, + 0xa4, 0xff, 0xa4, 0xff, 0x9c, 0xff, 0x9b, 0xff, 0x95, 0xff, 0x94, 0xff, + 0x91, 0xff, 0x93, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x92, 0xff, 0x92, 0xff, + 0x94, 0xff, 0x93, 0xff, 0x9b, 0xff, 0x9e, 0xff, 0xa7, 0xff, 0xa5, 0xff, + 0xb0, 0xff, 0xb2, 0xff, 0xbf, 0xff, 0xbd, 0xff, 0xce, 0xff, 0xce, 0xff, + 0xdf, 0xff, 0xdf, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0x05, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x40, 0x00, 0x41, 0x00, + 0x53, 0x00, 0x52, 0x00, 0x65, 0x00, 0x66, 0x00, 0x73, 0x00, 0x72, 0x00, + 0x85, 0x00, 0x86, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x9a, 0x00, 0x9b, 0x00, + 0xa3, 0x00, 0xa2, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xaa, 0x00, 0xaa, 0x00, + 0xa6, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa5, 0x00, 0x9c, 0x00, 0x9d, 0x00, + 0x94, 0x00, 0x92, 0x00, 0x87, 0x00, 0x87, 0x00, 0x77, 0x00, 0x77, 0x00, + 0x66, 0x00, 0x66, 0x00, 0x50, 0x00, 0x52, 0x00, 0x3b, 0x00, 0x3c, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x09, 0x00, 0x0b, 0x00, 0xf3, 0xff, 0xf1, 0xff, + 0xd6, 0xff, 0xd8, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xa2, 0xff, 0xa3, 0xff, + 0x89, 0xff, 0x89, 0xff, 0x72, 0xff, 0x72, 0xff, 0x5a, 0xff, 0x58, 0xff, + 0x44, 0xff, 0x45, 0xff, 0x30, 0xff, 0x30, 0xff, 0x1f, 0xff, 0x1f, 0xff, + 0x0c, 0xff, 0x0d, 0xff, 0x01, 0xff, 0x01, 0xff, 0xf8, 0xfe, 0xf6, 0xfe, + 0xed, 0xfe, 0xf0, 0xfe, 0xeb, 0xfe, 0xe8, 0xfe, 0xe4, 0xfe, 0xe6, 0xfe, + 0xe8, 0xfe, 0xe6, 0xfe, 0xe7, 0xfe, 0xe4, 0xfe, 0xeb, 0xfe, 0xed, 0xfe, + 0xf4, 0xfe, 0xef, 0xfe, 0xf8, 0xfe, 0xfa, 0xfe, 0x04, 0xff, 0x01, 0xff, + 0x0c, 0xff, 0x0c, 0xff, 0x17, 0xff, 0x16, 0xff, 0x23, 0xff, 0x20, 0xff, + 0x2c, 0xff, 0x2d, 0xff, 0x3a, 0xff, 0x36, 0xff, 0x3f, 0xff, 0x41, 0xff, + 0x4b, 0xff, 0x4a, 0xff, 0x53, 0xff, 0x53, 0xff, 0x5b, 0xff, 0x5b, 0xff, + 0x60, 0xff, 0x5e, 0xff, 0x61, 0xff, 0x61, 0xff, 0x63, 0xff, 0x63, 0xff, + 0x63, 0xff, 0x62, 0xff, 0x62, 0xff, 0x61, 0xff, 0x5b, 0xff, 0x5c, 0xff, + 0x55, 0xff, 0x55, 0xff, 0x4d, 0xff, 0x4c, 0xff, 0x41, 0xff, 0x41, 0xff, + 0x37, 0xff, 0x36, 0xff, 0x27, 0xff, 0x25, 0xff, 0x1b, 0xff, 0x1a, 0xff, + 0x0a, 0xff, 0x0a, 0xff, 0xfc, 0xfe, 0xfb, 0xfe, 0xeb, 0xfe, 0xec, 0xfe, + 0xdd, 0xfe, 0xdb, 0xfe, 0xce, 0xfe, 0xcf, 0xfe, 0xc1, 0xfe, 0xc0, 0xfe, + 0xb5, 0xfe, 0xb6, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, 0xa3, 0xfe, 0xa2, 0xfe, + 0x9d, 0xfe, 0x9c, 0xfe, 0x9a, 0xfe, 0x9a, 0xfe, 0x9b, 0xfe, 0x9a, 0xfe, + 0x9c, 0xfe, 0x9c, 0xfe, 0xa5, 0xfe, 0xa6, 0xfe, 0xae, 0xfe, 0xad, 0xfe, + 0xbc, 0xfe, 0xbc, 0xfe, 0xcd, 0xfe, 0xcd, 0xfe, 0xde, 0xfe, 0xe0, 0xfe, + 0xf7, 0xfe, 0xf7, 0xfe, 0x11, 0xff, 0x12, 0xff, 0x2b, 0xff, 0x2c, 0xff, + 0x4e, 0xff, 0x4d, 0xff, 0x6b, 0xff, 0x6d, 0xff, 0x93, 0xff, 0x92, 0xff, + 0xb6, 0xff, 0xb7, 0xff, 0xdc, 0xff, 0xdd, 0xff, 0x03, 0x00, 0x02, 0x00, + 0x28, 0x00, 0x29, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x74, 0x00, 0x75, 0x00, + 0x98, 0x00, 0x98, 0x00, 0xba, 0x00, 0xba, 0x00, 0xdd, 0x00, 0xdc, 0x00, + 0xfa, 0x00, 0xfb, 0x00, 0x17, 0x01, 0x17, 0x01, 0x2f, 0x01, 0x2f, 0x01, + 0x46, 0x01, 0x46, 0x01, 0x5a, 0x01, 0x59, 0x01, 0x6a, 0x01, 0x6c, 0x01, + 0x77, 0x01, 0x76, 0x01, 0x81, 0x01, 0x80, 0x01, 0x87, 0x01, 0x86, 0x01, + 0x87, 0x01, 0x87, 0x01, 0x8a, 0x01, 0x87, 0x01, 0x81, 0x01, 0x82, 0x01, + 0x7f, 0x01, 0x7c, 0x01, 0x71, 0x01, 0x74, 0x01, 0x6a, 0x01, 0x67, 0x01, + 0x5b, 0x01, 0x5b, 0x01, 0x4b, 0x01, 0x4d, 0x01, 0x3c, 0x01, 0x3a, 0x01, + 0x2b, 0x01, 0x2b, 0x01, 0x18, 0x01, 0x18, 0x01, 0x09, 0x01, 0x07, 0x01, + 0xf3, 0x00, 0xf4, 0x00, 0xe3, 0x00, 0xe2, 0x00, 0xd1, 0x00, 0xd3, 0x00, + 0xc2, 0x00, 0xbe, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xa4, 0x00, 0xa3, 0x00, + 0x99, 0x00, 0x99, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x85, 0x00, 0x85, 0x00, + 0x7e, 0x00, 0x7d, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x74, 0x00, 0x74, 0x00, + 0x73, 0x00, 0x73, 0x00, 0x71, 0x00, 0x71, 0x00, 0x73, 0x00, 0x72, 0x00, + 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x74, 0x00, 0x79, 0x00, 0x7a, 0x00, + 0x7c, 0x00, 0x7c, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x81, 0x00, 0x82, 0x00, + 0x83, 0x00, 0x82, 0x00, 0x85, 0x00, 0x87, 0x00, 0x86, 0x00, 0x86, 0x00, + 0x87, 0x00, 0x87, 0x00, 0x83, 0x00, 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, + 0x7c, 0x00, 0x7e, 0x00, 0x78, 0x00, 0x77, 0x00, 0x70, 0x00, 0x70, 0x00, + 0x66, 0x00, 0x67, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x4e, 0x00, 0x4c, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x31, 0x00, 0x31, 0x00, 0x22, 0x00, 0x23, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xec, 0xff, 0xed, 0xff, + 0xdc, 0xff, 0xdc, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xb9, 0xff, 0xba, 0xff, + 0xaa, 0xff, 0xab, 0xff, 0x9b, 0xff, 0x9a, 0xff, 0x90, 0xff, 0x91, 0xff, + 0x83, 0xff, 0x82, 0xff, 0x7a, 0xff, 0x7b, 0xff, 0x76, 0xff, 0x76, 0xff, + 0x6f, 0xff, 0x6f, 0xff, 0x71, 0xff, 0x71, 0xff, 0x70, 0xff, 0x6e, 0xff, + 0x74, 0xff, 0x76, 0xff, 0x7c, 0xff, 0x7a, 0xff, 0x85, 0xff, 0x86, 0xff, + 0x90, 0xff, 0x90, 0xff, 0xa0, 0xff, 0x9f, 0xff, 0xb0, 0xff, 0xb0, 0xff, + 0xc5, 0xff, 0xc4, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xee, 0xff, 0xef, 0xff, + 0x08, 0x00, 0x07, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x3a, 0x00, 0x39, 0x00, + 0x51, 0x00, 0x51, 0x00, 0x6b, 0x00, 0x6a, 0x00, 0x82, 0x00, 0x82, 0x00, + 0x97, 0x00, 0x98, 0x00, 0xaf, 0x00, 0xae, 0x00, 0xc2, 0x00, 0xc2, 0x00, + 0xd4, 0x00, 0xd3, 0x00, 0xe4, 0x00, 0xe4, 0x00, 0xed, 0x00, 0xee, 0x00, + 0xfb, 0x00, 0xfa, 0x00, 0xfd, 0x00, 0xfd, 0x00, 0x03, 0x01, 0x03, 0x01, + 0x00, 0x01, 0x01, 0x01, 0xfd, 0x00, 0xfb, 0x00, 0xf5, 0x00, 0xf7, 0x00, + 0xeb, 0x00, 0xe9, 0x00, 0xdc, 0x00, 0xdd, 0x00, 0xcd, 0x00, 0xcc, 0x00, + 0xb8, 0x00, 0xb8, 0x00, 0xa4, 0x00, 0xa3, 0x00, 0x89, 0x00, 0x89, 0x00, + 0x72, 0x00, 0x70, 0x00, 0x55, 0x00, 0x55, 0x00, 0x37, 0x00, 0x36, 0x00, + 0x1a, 0x00, 0x19, 0x00, 0xf9, 0xff, 0xf9, 0xff, 0xde, 0xff, 0xdd, 0xff, + 0xbd, 0xff, 0xbc, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0x86, 0xff, 0x85, 0xff, + 0x67, 0xff, 0x67, 0xff, 0x53, 0xff, 0x50, 0xff, 0x37, 0xff, 0x37, 0xff, + 0x25, 0xff, 0x25, 0xff, 0x0e, 0xff, 0x0d, 0xff, 0x02, 0xff, 0x01, 0xff, + 0xf2, 0xfe, 0xf3, 0xfe, 0xe7, 0xfe, 0xe6, 0xfe, 0xe0, 0xfe, 0xe2, 0xfe, + 0xda, 0xfe, 0xd8, 0xfe, 0xd9, 0xfe, 0xd7, 0xfe, 0xd6, 0xfe, 0xd7, 0xfe, + 0xd6, 0xfe, 0xd4, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xde, 0xfe, 0xe0, 0xfe, + 0xe9, 0xfe, 0xe7, 0xfe, 0xee, 0xfe, 0xf0, 0xfe, 0xf9, 0xfe, 0xf8, 0xfe, + 0x01, 0xff, 0x03, 0xff, 0x0e, 0xff, 0x0c, 0xff, 0x16, 0xff, 0x18, 0xff, + 0x22, 0xff, 0x20, 0xff, 0x2b, 0xff, 0x2b, 0xff, 0x36, 0xff, 0x35, 0xff, + 0x3c, 0xff, 0x3b, 0xff, 0x44, 0xff, 0x43, 0xff, 0x49, 0xff, 0x48, 0xff, + 0x4c, 0xff, 0x4b, 0xff, 0x51, 0xff, 0x4f, 0xff, 0x52, 0xff, 0x50, 0xff, + 0x53, 0xff, 0x51, 0xff, 0x50, 0xff, 0x50, 0xff, 0x4d, 0xff, 0x4c, 0xff, + 0x49, 0xff, 0x4a, 0xff, 0x44, 0xff, 0x42, 0xff, 0x3e, 0xff, 0x3d, 0xff, + 0x37, 0xff, 0x37, 0xff, 0x30, 0xff, 0x30, 0xff, 0x2a, 0xff, 0x29, 0xff, + 0x21, 0xff, 0x22, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x15, 0xff, 0x13, 0xff, + 0x0f, 0xff, 0x0f, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x07, 0xff, 0x08, 0xff, + 0x08, 0xff, 0x07, 0xff, 0x07, 0xff, 0x07, 0xff, 0x0c, 0xff, 0x0d, 0xff, + 0x11, 0xff, 0x11, 0xff, 0x18, 0xff, 0x18, 0xff, 0x22, 0xff, 0x21, 0xff, + 0x2e, 0xff, 0x2f, 0xff, 0x3c, 0xff, 0x3c, 0xff, 0x4d, 0xff, 0x4d, 0xff, + 0x62, 0xff, 0x60, 0xff, 0x75, 0xff, 0x76, 0xff, 0x8f, 0xff, 0x8e, 0xff, + 0xa3, 0xff, 0xa5, 0xff, 0xc2, 0xff, 0xc0, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0x14, 0x00, 0x14, 0x00, 0x30, 0x00, 0x2f, 0x00, + 0x4c, 0x00, 0x4c, 0x00, 0x69, 0x00, 0x68, 0x00, 0x83, 0x00, 0x82, 0x00, + 0x9f, 0x00, 0xa0, 0x00, 0xb7, 0x00, 0xb6, 0x00, 0xce, 0x00, 0xcd, 0x00, + 0xe1, 0x00, 0xe2, 0x00, 0xf6, 0x00, 0xf4, 0x00, 0x06, 0x01, 0x07, 0x01, + 0x14, 0x01, 0x12, 0x01, 0x1e, 0x01, 0x1f, 0x01, 0x29, 0x01, 0x28, 0x01, + 0x2c, 0x01, 0x2c, 0x01, 0x33, 0x01, 0x31, 0x01, 0x31, 0x01, 0x31, 0x01, + 0x31, 0x01, 0x30, 0x01, 0x2d, 0x01, 0x2c, 0x01, 0x26, 0x01, 0x27, 0x01, + 0x1e, 0x01, 0x1e, 0x01, 0x16, 0x01, 0x15, 0x01, 0x0a, 0x01, 0x0a, 0x01, + 0xff, 0x00, 0xfe, 0x00, 0xf0, 0x00, 0xf1, 0x00, 0xe3, 0x00, 0xe5, 0x00, + 0xd6, 0x00, 0xd4, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xbc, 0x00, 0xbb, 0x00, + 0xaf, 0x00, 0xad, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0x97, 0x00, 0x96, 0x00, + 0x8f, 0x00, 0x8e, 0x00, 0x85, 0x00, 0x87, 0x00, 0x81, 0x00, 0x7f, 0x00, + 0x78, 0x00, 0x7a, 0x00, 0x78, 0x00, 0x77, 0x00, 0x76, 0x00, 0x74, 0x00, + 0x78, 0x00, 0x79, 0x00, 0x79, 0x00, 0x77, 0x00, 0x7b, 0x00, 0x7d, 0x00, + 0x83, 0x00, 0x80, 0x00, 0x84, 0x00, 0x86, 0x00, 0x8f, 0x00, 0x8e, 0x00, + 0x94, 0x00, 0x93, 0x00, 0x9b, 0x00, 0x9b, 0x00, 0xa4, 0x00, 0xa5, 0x00, + 0xac, 0x00, 0xaa, 0x00, 0xb1, 0x00, 0xb3, 0x00, 0xb9, 0x00, 0xb9, 0x00, + 0xbf, 0x00, 0xbe, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xc8, 0x00, 0xc6, 0x00, + 0xc6, 0x00, 0xc8, 0x00, 0xc8, 0x00, 0xc6, 0x00, 0xc5, 0x00, 0xc6, 0x00, + 0xbf, 0x00, 0xbf, 0x00, 0xbc, 0x00, 0xbb, 0x00, 0xb1, 0x00, 0xb2, 0x00, + 0xa8, 0x00, 0xa7, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x8d, 0x00, 0x8b, 0x00, + 0x7d, 0x00, 0x7d, 0x00, 0x69, 0x00, 0x69, 0x00, 0x59, 0x00, 0x58, 0x00, + 0x41, 0x00, 0x43, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x18, 0x00, 0x1a, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xec, 0xff, 0xed, 0xff, 0xd5, 0xff, 0xd5, 0xff, + 0xc3, 0xff, 0xc4, 0xff, 0xad, 0xff, 0xae, 0xff, 0x9d, 0xff, 0x9d, 0xff, + 0x8a, 0xff, 0x8b, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x6f, 0xff, 0x71, 0xff, + 0x68, 0xff, 0x65, 0xff, 0x5d, 0xff, 0x60, 0xff, 0x5b, 0xff, 0x5a, 0xff, + 0x56, 0xff, 0x58, 0xff, 0x59, 0xff, 0x59, 0xff, 0x5b, 0xff, 0x5d, 0xff, + 0x64, 0xff, 0x63, 0xff, 0x6d, 0xff, 0x6c, 0xff, 0x79, 0xff, 0x78, 0xff, + 0x88, 0xff, 0x88, 0xff, 0x97, 0xff, 0x97, 0xff, 0xaa, 0xff, 0xaa, 0xff, + 0xbf, 0xff, 0xbf, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x18, 0x00, 0x2f, 0x00, 0x2e, 0x00, + 0x48, 0x00, 0x46, 0x00, 0x5a, 0x00, 0x5c, 0x00, 0x71, 0x00, 0x70, 0x00, + 0x82, 0x00, 0x82, 0x00, 0x94, 0x00, 0x95, 0x00, 0xa4, 0x00, 0xa2, 0x00, + 0xaf, 0x00, 0xaf, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xc2, 0x00, 0xc0, 0x00, + 0xc5, 0x00, 0xc6, 0x00, 0xc8, 0x00, 0xc7, 0x00, 0xc6, 0x00, 0xc6, 0x00, + 0xc1, 0x00, 0xc3, 0x00, 0xbc, 0x00, 0xba, 0x00, 0xb0, 0x00, 0xb2, 0x00, + 0xa6, 0x00, 0xa5, 0x00, 0x96, 0x00, 0x97, 0x00, 0x87, 0x00, 0x86, 0x00, + 0x71, 0x00, 0x74, 0x00, 0x61, 0x00, 0x5d, 0x00, 0x49, 0x00, 0x4c, 0x00, + 0x34, 0x00, 0x32, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x02, 0x00, + 0xec, 0xff, 0xeb, 0xff, 0xd4, 0xff, 0xd5, 0xff, 0xbd, 0xff, 0xbe, 0xff, + 0xa8, 0xff, 0xa7, 0xff, 0x90, 0xff, 0x91, 0xff, 0x7d, 0xff, 0x7c, 0xff, + 0x6c, 0xff, 0x6b, 0xff, 0x58, 0xff, 0x58, 0xff, 0x4c, 0xff, 0x4c, 0xff, + 0x3b, 0xff, 0x3a, 0xff, 0x30, 0xff, 0x32, 0xff, 0x26, 0xff, 0x25, 0xff, + 0x1c, 0xff, 0x1c, 0xff, 0x17, 0xff, 0x17, 0xff, 0x10, 0xff, 0x0f, 0xff, + 0x0e, 0xff, 0x0e, 0xff, 0x0b, 0xff, 0x0b, 0xff, 0x08, 0xff, 0x07, 0xff, + 0x09, 0xff, 0x09, 0xff, 0x07, 0xff, 0x08, 0xff, 0x0b, 0xff, 0x08, 0xff, + 0x08, 0xff, 0x09, 0xff, 0x0c, 0xff, 0x0a, 0xff, 0x0c, 0xff, 0x0d, 0xff, + 0x0c, 0xff, 0x0b, 0xff, 0x0d, 0xff, 0x0d, 0xff, 0x0c, 0xff, 0x0a, 0xff, + 0x0a, 0xff, 0x0c, 0xff, 0x07, 0xff, 0x06, 0xff, 0x04, 0xff, 0x03, 0xff, + 0x02, 0xff, 0x00, 0xff, 0xfa, 0xfe, 0xfb, 0xfe, 0xf7, 0xfe, 0xf5, 0xfe, + 0xed, 0xfe, 0xf0, 0xfe, 0xea, 0xfe, 0xe8, 0xfe, 0xdf, 0xfe, 0xe1, 0xfe, + 0xda, 0xfe, 0xd9, 0xfe, 0xcf, 0xfe, 0xce, 0xfe, 0xc9, 0xfe, 0xc7, 0xfe, + 0xbf, 0xfe, 0xc0, 0xfe, 0xb8, 0xfe, 0xb8, 0xfe, 0xb1, 0xfe, 0xb1, 0xfe, + 0xab, 0xfe, 0xac, 0xfe, 0xa9, 0xfe, 0xa8, 0xfe, 0xa3, 0xfe, 0xa4, 0xfe, + 0xa5, 0xfe, 0xa3, 0xfe, 0xa3, 0xfe, 0xa5, 0xfe, 0xa8, 0xfe, 0xa6, 0xfe, + 0xad, 0xfe, 0xae, 0xfe, 0xb3, 0xfe, 0xb1, 0xfe, 0xbf, 0xfe, 0xc2, 0xfe, + 0xcb, 0xfe, 0xcb, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xee, 0xfe, 0xef, 0xfe, + 0x00, 0xff, 0xff, 0xfe, 0x1a, 0xff, 0x1c, 0xff, 0x31, 0xff, 0x31, 0xff, + 0x50, 0xff, 0x4f, 0xff, 0x69, 0xff, 0x6c, 0xff, 0x8c, 0xff, 0x8b, 0xff, + 0xab, 0xff, 0xac, 0xff, 0xcc, 0xff, 0xcd, 0xff, 0xef, 0xff, 0xf0, 0xff, + 0x10, 0x00, 0x10, 0x00, 0x35, 0x00, 0x37, 0x00, 0x56, 0x00, 0x55, 0x00, + 0x77, 0x00, 0x78, 0x00, 0x98, 0x00, 0x98, 0x00, 0xb4, 0x00, 0xb6, 0x00, + 0xd5, 0x00, 0xd3, 0x00, 0xeb, 0x00, 0xed, 0x00, 0x07, 0x01, 0x07, 0x01, + 0x19, 0x01, 0x1b, 0x01, 0x2e, 0x01, 0x2d, 0x01, 0x3e, 0x01, 0x40, 0x01, + 0x4b, 0x01, 0x4a, 0x01, 0x55, 0x01, 0x56, 0x01, 0x5b, 0x01, 0x5b, 0x01, + 0x5d, 0x01, 0x5d, 0x01, 0x5c, 0x01, 0x5f, 0x01, 0x5b, 0x01, 0x59, 0x01, + 0x53, 0x01, 0x55, 0x01, 0x4d, 0x01, 0x4d, 0x01, 0x40, 0x01, 0x41, 0x01, + 0x34, 0x01, 0x34, 0x01, 0x24, 0x01, 0x26, 0x01, 0x14, 0x01, 0x13, 0x01, + 0x02, 0x01, 0x03, 0x01, 0xef, 0x00, 0xee, 0x00, 0xdc, 0x00, 0xdc, 0x00, + 0xc8, 0x00, 0xc8, 0x00, 0xb6, 0x00, 0xb5, 0x00, 0xa1, 0x00, 0x9f, 0x00, + 0x90, 0x00, 0x92, 0x00, 0x7d, 0x00, 0x7c, 0x00, 0x6f, 0x00, 0x6f, 0x00, + 0x5f, 0x00, 0x5e, 0x00, 0x55, 0x00, 0x53, 0x00, 0x4a, 0x00, 0x4a, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x3c, 0x00, 0x3a, 0x00, 0x36, 0x00, 0x38, 0x00, + 0x36, 0x00, 0x34, 0x00, 0x34, 0x00, 0x35, 0x00, 0x37, 0x00, 0x36, 0x00, + 0x3d, 0x00, 0x3c, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x4a, 0x00, 0x48, 0x00, + 0x50, 0x00, 0x51, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x67, 0x00, 0x63, 0x00, + 0x6d, 0x00, 0x70, 0x00, 0x7a, 0x00, 0x79, 0x00, 0x84, 0x00, 0x84, 0x00, + 0x8f, 0x00, 0x91, 0x00, 0x9a, 0x00, 0x98, 0x00, 0xa2, 0x00, 0xa4, 0x00, + 0xab, 0x00, 0xaa, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb7, 0x00, 0xb7, 0x00, + 0xb8, 0x00, 0xb8, 0x00, 0xbd, 0x00, 0xbc, 0x00, 0xb8, 0x00, 0xbb, 0x00, + 0xbb, 0x00, 0xb7, 0x00, 0xb4, 0x00, 0xb8, 0x00, 0xae, 0x00, 0xad, 0x00, + 0xaa, 0x00, 0xa9, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x96, 0x00, 0x95, 0x00, + 0x87, 0x00, 0x87, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x70, 0x00, 0x6e, 0x00, + 0x5d, 0x00, 0x5f, 0x00, 0x53, 0x00, 0x51, 0x00, 0x43, 0x00, 0x43, 0x00, + 0x35, 0x00, 0x35, 0x00, 0x28, 0x00, 0x27, 0x00, 0x1a, 0x00, 0x19, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0x06, 0x00, 0x05, 0x00, 0xfb, 0xff, 0xfb, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xef, 0xff, 0xef, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xea, 0xff, 0xec, 0xff, 0xef, 0xff, + 0xf2, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0x02, 0x00, 0xff, 0xff, + 0x09, 0x00, 0x0a, 0x00, 0x17, 0x00, 0x16, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x30, 0x00, 0x2f, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x4b, 0x00, 0x4b, 0x00, + 0x5b, 0x00, 0x5b, 0x00, 0x68, 0x00, 0x67, 0x00, 0x77, 0x00, 0x78, 0x00, + 0x85, 0x00, 0x83, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x9a, 0x00, 0x9b, 0x00, + 0xa3, 0x00, 0xa2, 0x00, 0xab, 0x00, 0xab, 0x00, 0xaf, 0x00, 0xae, 0x00, + 0xb3, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb3, 0x00, 0xb2, 0x00, + 0xaf, 0x00, 0xae, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xa0, 0x00, 0x9f, 0x00, + 0x95, 0x00, 0x97, 0x00, 0x89, 0x00, 0x89, 0x00, 0x7b, 0x00, 0x7b, 0x00, + 0x67, 0x00, 0x6b, 0x00, 0x59, 0x00, 0x58, 0x00, 0x44, 0x00, 0x46, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x05, 0x00, 0x06, 0x00, + 0xef, 0xff, 0xef, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xc5, 0xff, 0xc5, 0xff, + 0xb1, 0xff, 0xb2, 0xff, 0xa0, 0xff, 0x9f, 0xff, 0x8a, 0xff, 0x8a, 0xff, + 0x7c, 0xff, 0x7c, 0xff, 0x6c, 0xff, 0x6b, 0xff, 0x5f, 0xff, 0x60, 0xff, + 0x53, 0xff, 0x53, 0xff, 0x48, 0xff, 0x49, 0xff, 0x45, 0xff, 0x44, 0xff, + 0x3f, 0xff, 0x3d, 0xff, 0x3b, 0xff, 0x3b, 0xff, 0x3c, 0xff, 0x3c, 0xff, + 0x3c, 0xff, 0x3b, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x44, 0xff, 0x45, 0xff, + 0x4a, 0xff, 0x48, 0xff, 0x4f, 0xff, 0x50, 0xff, 0x59, 0xff, 0x59, 0xff, + 0x64, 0xff, 0x62, 0xff, 0x6b, 0xff, 0x6c, 0xff, 0x76, 0xff, 0x75, 0xff, + 0x7c, 0xff, 0x7b, 0xff, 0x85, 0xff, 0x85, 0xff, 0x89, 0xff, 0x89, 0xff, + 0x8d, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x90, 0xff, 0x8f, 0xff, + 0x8c, 0xff, 0x8d, 0xff, 0x89, 0xff, 0x87, 0xff, 0x80, 0xff, 0x7f, 0xff, + 0x76, 0xff, 0x77, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x5c, 0xff, 0x5a, 0xff, + 0x4a, 0xff, 0x4a, 0xff, 0x37, 0xff, 0x36, 0xff, 0x22, 0xff, 0x22, 0xff, + 0x0b, 0xff, 0x0b, 0xff, 0xf4, 0xfe, 0xf3, 0xfe, 0xdb, 0xfe, 0xdc, 0xfe, + 0xc5, 0xfe, 0xc3, 0xfe, 0xab, 0xfe, 0xac, 0xfe, 0x94, 0xfe, 0x93, 0xfe, + 0x7f, 0xfe, 0x7f, 0xfe, 0x6a, 0xfe, 0x6a, 0xfe, 0x5a, 0xfe, 0x59, 0xfe, + 0x48, 0xfe, 0x49, 0xfe, 0x3d, 0xfe, 0x3c, 0xfe, 0x37, 0xfe, 0x37, 0xfe, + 0x30, 0xfe, 0x2f, 0xfe, 0x31, 0xfe, 0x31, 0xfe, 0x37, 0xfe, 0x36, 0xfe, + 0x3e, 0xfe, 0x3e, 0xfe, 0x50, 0xfe, 0x4f, 0xfe, 0x5f, 0xfe, 0x61, 0xfe, + 0x7d, 0xfe, 0x7c, 0xfe, 0x94, 0xfe, 0x96, 0xfe, 0xb8, 0xfe, 0xb7, 0xfe, + 0xdc, 0xfe, 0xdd, 0xfe, 0x04, 0xff, 0x03, 0xff, 0x30, 0xff, 0x31, 0xff, + 0x5d, 0xff, 0x5d, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0xc2, 0xff, 0xbf, 0xff, + 0xf0, 0xff, 0xf2, 0xff, 0x24, 0x00, 0x23, 0x00, 0x55, 0x00, 0x56, 0x00, + 0x84, 0x00, 0x84, 0x00, 0xb4, 0x00, 0xb3, 0x00, 0xdd, 0x00, 0xde, 0x00, + 0x07, 0x01, 0x05, 0x01, 0x28, 0x01, 0x28, 0x01, 0x4b, 0x01, 0x4a, 0x01, + 0x64, 0x01, 0x64, 0x01, 0x78, 0x01, 0x79, 0x01, 0x8b, 0x01, 0x8a, 0x01, + 0x94, 0x01, 0x94, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9a, 0x01, 0x98, 0x01, + 0x95, 0x01, 0x94, 0x01, 0x89, 0x01, 0x88, 0x01, 0x77, 0x01, 0x77, 0x01, + 0x63, 0x01, 0x62, 0x01, 0x4b, 0x01, 0x4b, 0x01, 0x2d, 0x01, 0x2d, 0x01, + 0x0e, 0x01, 0x0d, 0x01, 0xea, 0x00, 0xec, 0x00, 0xca, 0x00, 0xc7, 0x00, + 0xa2, 0x00, 0xa3, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x58, 0x00, 0x59, 0x00, + 0x38, 0x00, 0x36, 0x00, 0x14, 0x00, 0x14, 0x00, 0xf7, 0xff, 0xf6, 0xff, + 0xda, 0xff, 0xda, 0xff, 0xc3, 0xff, 0xc2, 0xff, 0xaf, 0xff, 0xae, 0xff, + 0x9f, 0xff, 0xa1, 0xff, 0x96, 0xff, 0x96, 0xff, 0x8f, 0xff, 0x91, 0xff, + 0x90, 0xff, 0x8e, 0xff, 0x92, 0xff, 0x93, 0xff, 0x9b, 0xff, 0x9c, 0xff, + 0xaa, 0xff, 0xa7, 0xff, 0xb9, 0xff, 0xba, 0xff, 0xce, 0xff, 0xcd, 0xff, + 0xe7, 0xff, 0xe6, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1d, 0x00, + 0x3a, 0x00, 0x3a, 0x00, 0x58, 0x00, 0x58, 0x00, 0x75, 0x00, 0x73, 0x00, + 0x92, 0x00, 0x93, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xc7, 0x00, 0xc6, 0x00, + 0xd8, 0x00, 0xd9, 0x00, 0xee, 0x00, 0xec, 0x00, 0xf8, 0x00, 0xfc, 0x00, + 0x04, 0x01, 0x03, 0x01, 0x08, 0x01, 0x08, 0x01, 0x07, 0x01, 0x07, 0x01, + 0x00, 0x01, 0xff, 0x00, 0xf4, 0x00, 0xf5, 0x00, 0xe2, 0x00, 0xe1, 0x00, + 0xce, 0x00, 0xce, 0x00, 0xb1, 0x00, 0xb1, 0x00, 0x94, 0x00, 0x93, 0x00, + 0x72, 0x00, 0x71, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x27, 0x00, 0x24, 0x00, + 0xfb, 0xff, 0xfd, 0xff, 0xd2, 0xff, 0xd1, 0xff, 0xa8, 0xff, 0xa9, 0xff, + 0x7d, 0xff, 0x7d, 0xff, 0x59, 0xff, 0x58, 0xff, 0x30, 0xff, 0x31, 0xff, + 0x11, 0xff, 0x12, 0xff, 0xf6, 0xfe, 0xf5, 0xfe, 0xdd, 0xfe, 0xe0, 0xfe, + 0xcd, 0xfe, 0xcb, 0xfe, 0xbe, 0xfe, 0xbf, 0xfe, 0xbd, 0xfe, 0xbc, 0xfe, + 0xbc, 0xfe, 0xbc, 0xfe, 0xc6, 0xfe, 0xc6, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, + 0xee, 0xfe, 0xef, 0xfe, 0x0d, 0xff, 0x0b, 0xff, 0x32, 0xff, 0x33, 0xff, + 0x5d, 0xff, 0x5e, 0xff, 0x91, 0xff, 0x90, 0xff, 0xc5, 0xff, 0xc5, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x7e, 0x00, 0x7e, 0x00, + 0xc2, 0x00, 0xc0, 0x00, 0x02, 0x01, 0x02, 0x01, 0x45, 0x01, 0x45, 0x01, + 0x82, 0x01, 0x83, 0x01, 0xc1, 0x01, 0xc0, 0x01, 0xf8, 0x01, 0xf8, 0x01, + 0x2c, 0x02, 0x2c, 0x02, 0x5c, 0x02, 0x5b, 0x02, 0x81, 0x02, 0x82, 0x02, + 0xa4, 0x02, 0xa3, 0x02, 0xb8, 0x02, 0xb9, 0x02, 0xca, 0x02, 0xc9, 0x02, + 0xd1, 0x02, 0xd1, 0x02, 0xcd, 0x02, 0xcc, 0x02, 0xc6, 0x02, 0xc6, 0x02, + 0xae, 0x02, 0xaf, 0x02, 0x96, 0x02, 0x95, 0x02, 0x72, 0x02, 0x72, 0x02, + 0x45, 0x02, 0x44, 0x02, 0x14, 0x02, 0x14, 0x02, 0xdb, 0x01, 0xda, 0x01, + 0x9d, 0x01, 0x9e, 0x01, 0x5c, 0x01, 0x5d, 0x01, 0x17, 0x01, 0x15, 0x01, + 0xd1, 0x00, 0xd3, 0x00, 0x88, 0x00, 0x87, 0x00, 0x42, 0x00, 0x41, 0x00, + 0xfa, 0xff, 0xfb, 0xff, 0xb8, 0xff, 0xb6, 0xff, 0x77, 0xff, 0x78, 0xff, + 0x39, 0xff, 0x37, 0xff, 0x04, 0xff, 0x05, 0xff, 0xd3, 0xfe, 0xd4, 0xfe, + 0xaa, 0xfe, 0xa8, 0xfe, 0x89, 0xfe, 0x89, 0xfe, 0x6a, 0xfe, 0x69, 0xfe, + 0x5b, 0xfe, 0x5a, 0xfe, 0x4d, 0xfe, 0x4d, 0xfe, 0x4b, 0xfe, 0x48, 0xfe, + 0x4d, 0xfe, 0x4e, 0xfe, 0x58, 0xfe, 0x56, 0xfe, 0x69, 0xfe, 0x6a, 0xfe, + 0x81, 0xfe, 0x7f, 0xfe, 0x9f, 0xfe, 0x9f, 0xfe, 0xc0, 0xfe, 0xbf, 0xfe, + 0xe2, 0xfe, 0xe3, 0xfe, 0x0c, 0xff, 0x0b, 0xff, 0x33, 0xff, 0x32, 0xff, + 0x5e, 0xff, 0x5e, 0xff, 0x86, 0xff, 0x85, 0xff, 0xad, 0xff, 0xad, 0xff, + 0xd2, 0xff, 0xd2, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0x0e, 0x00, 0x0e, 0x00, + 0x24, 0x00, 0x22, 0x00, 0x35, 0x00, 0x35, 0x00, 0x3f, 0x00, 0x3d, 0x00, + 0x3e, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x3d, 0x00, 0x31, 0x00, 0x31, 0x00, + 0x1f, 0x00, 0x1f, 0x00, 0x04, 0x00, 0x04, 0x00, 0xe5, 0xff, 0xe4, 0xff, + 0xbc, 0xff, 0xbd, 0xff, 0x8f, 0xff, 0x8e, 0xff, 0x5e, 0xff, 0x5d, 0xff, + 0x26, 0xff, 0x26, 0xff, 0xee, 0xfe, 0xed, 0xfe, 0xaf, 0xfe, 0xaf, 0xfe, + 0x73, 0xfe, 0x73, 0xfe, 0x35, 0xfe, 0x35, 0xfe, 0xf7, 0xfd, 0xf7, 0xfd, + 0xbd, 0xfd, 0xbe, 0xfd, 0x86, 0xfd, 0x86, 0xfd, 0x52, 0xfd, 0x52, 0xfd, + 0x25, 0xfd, 0x25, 0xfd, 0xfe, 0xfc, 0xfd, 0xfc, 0xdc, 0xfc, 0xdd, 0xfc, + 0xc5, 0xfc, 0xc6, 0xfc, 0xb5, 0xfc, 0xb3, 0xfc, 0xae, 0xfc, 0xaf, 0xfc, + 0xae, 0xfc, 0xaf, 0xfc, 0xb9, 0xfc, 0xba, 0xfc, 0xcf, 0xfc, 0xd0, 0xfc, + 0xeb, 0xfc, 0xea, 0xfc, 0x11, 0xfd, 0x11, 0xfd, 0x3c, 0xfd, 0x3d, 0xfd, + 0x71, 0xfd, 0x70, 0xfd, 0xab, 0xfd, 0xab, 0xfd, 0xee, 0xfd, 0xef, 0xfd, + 0x32, 0xfe, 0x32, 0xfe, 0x7c, 0xfe, 0x7c, 0xfe, 0xc7, 0xfe, 0xc8, 0xfe, + 0x15, 0xff, 0x14, 0xff, 0x60, 0xff, 0x62, 0xff, 0xae, 0xff, 0xad, 0xff, + 0xf6, 0xff, 0xf8, 0xff, 0x3f, 0x00, 0x3d, 0x00, 0x7e, 0x00, 0x82, 0x00, + 0xc0, 0x00, 0xbd, 0x00, 0xf4, 0x00, 0xf5, 0x00, 0x25, 0x01, 0x25, 0x01, + 0x4f, 0x01, 0x4e, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0x89, 0x01, 0x87, 0x01, + 0x98, 0x01, 0x99, 0x01, 0xa1, 0x01, 0xa1, 0x01, 0xa3, 0x01, 0xa2, 0x01, + 0x97, 0x01, 0x99, 0x01, 0x8d, 0x01, 0x8b, 0x01, 0x75, 0x01, 0x76, 0x01, + 0x5a, 0x01, 0x5a, 0x01, 0x3b, 0x01, 0x3a, 0x01, 0x14, 0x01, 0x15, 0x01, + 0xee, 0x00, 0xed, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0x9a, 0x00, 0x99, 0x00, + 0x72, 0x00, 0x71, 0x00, 0x48, 0x00, 0x49, 0x00, 0x23, 0x00, 0x22, 0x00, + 0x02, 0x00, 0x02, 0x00, 0xe4, 0xff, 0xe4, 0xff, 0xce, 0xff, 0xce, 0xff, + 0xbc, 0xff, 0xba, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xaf, 0xff, 0xae, 0xff, + 0xb6, 0xff, 0xb6, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xd8, 0xff, 0xd8, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0x1a, 0x00, 0x1b, 0x00, 0x4a, 0x00, 0x48, 0x00, + 0x7a, 0x00, 0x7b, 0x00, 0xb3, 0x00, 0xb2, 0x00, 0xf2, 0x00, 0xf2, 0x00, + 0x31, 0x01, 0x32, 0x01, 0x7a, 0x01, 0x79, 0x01, 0xbe, 0x01, 0xbe, 0x01, + 0x06, 0x02, 0x06, 0x02, 0x4e, 0x02, 0x4d, 0x02, 0x91, 0x02, 0x92, 0x02, + 0xd5, 0x02, 0xd3, 0x02, 0x0f, 0x03, 0x11, 0x03, 0x4a, 0x03, 0x4a, 0x03, + 0x7b, 0x03, 0x7b, 0x03, 0xa5, 0x03, 0xa5, 0x03, 0xc8, 0x03, 0xc6, 0x03, + 0xe0, 0x03, 0xe0, 0x03, 0xf2, 0x03, 0xf2, 0x03, 0xf7, 0x03, 0xf7, 0x03, + 0xf4, 0x03, 0xf5, 0x03, 0xe9, 0x03, 0xe9, 0x03, 0xd2, 0x03, 0xd4, 0x03, + 0xb5, 0x03, 0xb3, 0x03, 0x8e, 0x03, 0x90, 0x03, 0x60, 0x03, 0x5d, 0x03, + 0x27, 0x03, 0x29, 0x03, 0xe9, 0x02, 0xe7, 0x02, 0xa7, 0x02, 0xa6, 0x02, + 0x5e, 0x02, 0x60, 0x02, 0x17, 0x02, 0x13, 0x02, 0xc7, 0x01, 0xc7, 0x01, + 0x79, 0x01, 0x78, 0x01, 0x2c, 0x01, 0x2b, 0x01, 0xdf, 0x00, 0xde, 0x00, + 0x95, 0x00, 0x96, 0x00, 0x51, 0x00, 0x4e, 0x00, 0x0e, 0x00, 0x0f, 0x00, + 0xd1, 0xff, 0xd2, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x6e, 0xff, 0x6f, 0xff, + 0x47, 0xff, 0x47, 0xff, 0x2c, 0xff, 0x2b, 0xff, 0x14, 0xff, 0x14, 0xff, + 0x08, 0xff, 0x07, 0xff, 0x04, 0xff, 0x04, 0xff, 0x05, 0xff, 0x06, 0xff, + 0x12, 0xff, 0x13, 0xff, 0x25, 0xff, 0x25, 0xff, 0x3f, 0xff, 0x3e, 0xff, + 0x5e, 0xff, 0x5d, 0xff, 0x83, 0xff, 0x83, 0xff, 0xa9, 0xff, 0xab, 0xff, + 0xd8, 0xff, 0xd7, 0xff, 0x03, 0x00, 0x03, 0x00, 0x31, 0x00, 0x31, 0x00, + 0x5e, 0x00, 0x5e, 0x00, 0x88, 0x00, 0x88, 0x00, 0xaf, 0x00, 0xb1, 0x00, + 0xd5, 0x00, 0xd4, 0x00, 0xf1, 0x00, 0xf1, 0x00, 0x0a, 0x01, 0x0a, 0x01, + 0x1b, 0x01, 0x1a, 0x01, 0x25, 0x01, 0x24, 0x01, 0x26, 0x01, 0x26, 0x01, + 0x20, 0x01, 0x1f, 0x01, 0x10, 0x01, 0x0e, 0x01, 0xf4, 0x00, 0xf6, 0x00, + 0xd4, 0x00, 0xd4, 0x00, 0xaa, 0x00, 0xa9, 0x00, 0x75, 0x00, 0x76, 0x00, + 0x3d, 0x00, 0x3c, 0x00, 0xfb, 0xff, 0xfd, 0xff, 0xb6, 0xff, 0xb3, 0xff, + 0x69, 0xff, 0x69, 0xff, 0x17, 0xff, 0x17, 0xff, 0xc6, 0xfe, 0xc6, 0xfe, + 0x70, 0xfe, 0x6f, 0xfe, 0x1c, 0xfe, 0x1d, 0xfe, 0xc8, 0xfd, 0xc7, 0xfd, + 0x76, 0xfd, 0x77, 0xfd, 0x27, 0xfd, 0x26, 0xfd, 0xdd, 0xfc, 0xde, 0xfc, + 0x97, 0xfc, 0x97, 0xfc, 0x5a, 0xfc, 0x5a, 0xfc, 0x22, 0xfc, 0x22, 0xfc, + 0xf4, 0xfb, 0xf2, 0xfb, 0xcc, 0xfb, 0xce, 0xfb, 0xb1, 0xfb, 0xae, 0xfb, + 0x9b, 0xfb, 0x9c, 0xfb, 0x90, 0xfb, 0x90, 0xfb, 0x8e, 0xfb, 0x8d, 0xfb, + 0x94, 0xfb, 0x95, 0xfb, 0xa5, 0xfb, 0xa4, 0xfb, 0xbc, 0xfb, 0xbc, 0xfb, + 0xd9, 0xfb, 0xda, 0xfb, 0x01, 0xfc, 0x00, 0xfc, 0x2b, 0xfc, 0x2b, 0xfc, + 0x5d, 0xfc, 0x5b, 0xfc, 0x8f, 0xfc, 0x90, 0xfc, 0xc7, 0xfc, 0xc5, 0xfc, + 0xff, 0xfc, 0x00, 0xfd, 0x39, 0xfd, 0x37, 0xfd, 0x71, 0xfd, 0x72, 0xfd, + 0xa9, 0xfd, 0xa9, 0xfd, 0xdb, 0xfd, 0xdc, 0xfd, 0x0f, 0xfe, 0x0e, 0xfe, + 0x3a, 0xfe, 0x3a, 0xfe, 0x64, 0xfe, 0x64, 0xfe, 0x84, 0xfe, 0x84, 0xfe, + 0xa4, 0xfe, 0xa3, 0xfe, 0xb7, 0xfe, 0xb8, 0xfe, 0xc7, 0xfe, 0xc8, 0xfe, + 0xd4, 0xfe, 0xd2, 0xfe, 0xd3, 0xfe, 0xd4, 0xfe, 0xd2, 0xfe, 0xd2, 0xfe, + 0xc8, 0xfe, 0xca, 0xfe, 0xbb, 0xfe, 0xbb, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, + 0x91, 0xfe, 0x92, 0xfe, 0x7a, 0xfe, 0x7b, 0xfe, 0x5d, 0xfe, 0x5c, 0xfe, + 0x43, 0xfe, 0x45, 0xfe, 0x26, 0xfe, 0x26, 0xfe, 0x0a, 0xfe, 0x0b, 0xfe, + 0xf4, 0xfd, 0xf4, 0xfd, 0xd9, 0xfd, 0xdc, 0xfd, 0xcd, 0xfd, 0xcd, 0xfd, + 0xbe, 0xfd, 0xc0, 0xfd, 0xbb, 0xfd, 0xba, 0xfd, 0xbc, 0xfd, 0xbc, 0xfd, + 0xc3, 0xfd, 0xc2, 0xfd, 0xd6, 0xfd, 0xd7, 0xfd, 0xec, 0xfd, 0xed, 0xfd, + 0x12, 0xfe, 0x13, 0xfe, 0x3d, 0xfe, 0x3b, 0xfe, 0x6e, 0xfe, 0x6f, 0xfe, + 0xac, 0xfe, 0xac, 0xfe, 0xee, 0xfe, 0xef, 0xfe, 0x3c, 0xff, 0x3b, 0xff, + 0x8e, 0xff, 0x8e, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0x43, 0x00, 0x42, 0x00, + 0xa7, 0x00, 0xa8, 0x00, 0x08, 0x01, 0x08, 0x01, 0x70, 0x01, 0x72, 0x01, + 0xd8, 0x01, 0xd5, 0x01, 0x3a, 0x02, 0x3b, 0x02, 0xa1, 0x02, 0xa1, 0x02, + 0xfe, 0x02, 0xfe, 0x02, 0x5c, 0x03, 0x5c, 0x03, 0xb1, 0x03, 0xb0, 0x03, + 0xfe, 0x03, 0xfe, 0x03, 0x47, 0x04, 0x48, 0x04, 0x85, 0x04, 0x86, 0x04, + 0xbc, 0x04, 0xbb, 0x04, 0xe5, 0x04, 0xe6, 0x04, 0x0a, 0x05, 0x09, 0x05, + 0x1f, 0x05, 0x21, 0x05, 0x2f, 0x05, 0x2c, 0x05, 0x30, 0x05, 0x31, 0x05, + 0x29, 0x05, 0x28, 0x05, 0x19, 0x05, 0x19, 0x05, 0xfe, 0x04, 0xff, 0x04, + 0xde, 0x04, 0xde, 0x04, 0xb6, 0x04, 0xb7, 0x04, 0x87, 0x04, 0x88, 0x04, + 0x54, 0x04, 0x54, 0x04, 0x1e, 0x04, 0x1e, 0x04, 0xe3, 0x03, 0xe3, 0x03, + 0xa8, 0x03, 0xaa, 0x03, 0x6c, 0x03, 0x6b, 0x03, 0x32, 0x03, 0x33, 0x03, + 0xf8, 0x02, 0xf7, 0x02, 0xc3, 0x02, 0xc5, 0x02, 0x92, 0x02, 0x91, 0x02, + 0x63, 0x02, 0x63, 0x02, 0x3b, 0x02, 0x3b, 0x02, 0x1b, 0x02, 0x1c, 0x02, + 0x01, 0x02, 0x00, 0x02, 0xec, 0x01, 0xee, 0x01, 0xe0, 0x01, 0xdf, 0x01, + 0xdc, 0x01, 0xdb, 0x01, 0xdb, 0x01, 0xdd, 0x01, 0xe8, 0x01, 0xe6, 0x01, + 0xf4, 0x01, 0xf4, 0x01, 0x08, 0x02, 0x0a, 0x02, 0x24, 0x02, 0x23, 0x02, + 0x40, 0x02, 0x42, 0x02, 0x63, 0x02, 0x63, 0x02, 0x87, 0x02, 0x87, 0x02, + 0xab, 0x02, 0xac, 0x02, 0xd0, 0x02, 0xd0, 0x02, 0xf6, 0x02, 0xf3, 0x02, + 0x15, 0x03, 0x18, 0x03, 0x37, 0x03, 0x35, 0x03, 0x4e, 0x03, 0x50, 0x03, + 0x65, 0x03, 0x65, 0x03, 0x74, 0x03, 0x73, 0x03, 0x7a, 0x03, 0x7c, 0x03, + 0x7a, 0x03, 0x7b, 0x03, 0x74, 0x03, 0x73, 0x03, 0x63, 0x03, 0x64, 0x03, + 0x4d, 0x03, 0x4b, 0x03, 0x2a, 0x03, 0x2b, 0x03, 0x00, 0x03, 0x01, 0x03, + 0xce, 0x02, 0xcd, 0x02, 0x93, 0x02, 0x97, 0x02, 0x54, 0x02, 0x51, 0x02, + 0x0a, 0x02, 0x0d, 0x02, 0xbc, 0x01, 0xbb, 0x01, 0x68, 0x01, 0x69, 0x01, + 0x0e, 0x01, 0x0e, 0x01, 0xb4, 0x00, 0xb4, 0x00, 0x56, 0x00, 0x56, 0x00, + 0xf6, 0xff, 0xf7, 0xff, 0x95, 0xff, 0x95, 0xff, 0x36, 0xff, 0x36, 0xff, + 0xd8, 0xfe, 0xda, 0xfe, 0x7f, 0xfe, 0x80, 0xfe, 0x27, 0xfe, 0x27, 0xfe, + 0xd9, 0xfd, 0xd9, 0xfd, 0x8b, 0xfd, 0x8c, 0xfd, 0x49, 0xfd, 0x49, 0xfd, + 0x09, 0xfd, 0x0a, 0xfd, 0xd3, 0xfc, 0xd6, 0xfc, 0xa6, 0xfc, 0xa5, 0xfc, + 0x7e, 0xfc, 0x7f, 0xfc, 0x61, 0xfc, 0x63, 0xfc, 0x4c, 0xfc, 0x4b, 0xfc, + 0x3f, 0xfc, 0x3f, 0xfc, 0x35, 0xfc, 0x36, 0xfc, 0x3a, 0xfc, 0x38, 0xfc, + 0x3d, 0xfc, 0x3f, 0xfc, 0x4c, 0xfc, 0x4c, 0xfc, 0x5d, 0xfc, 0x5d, 0xfc, + 0x71, 0xfc, 0x71, 0xfc, 0x8c, 0xfc, 0x8c, 0xfc, 0xa4, 0xfc, 0xa5, 0xfc, + 0xc3, 0xfc, 0xc2, 0xfc, 0xdc, 0xfc, 0xdd, 0xfc, 0xf8, 0xfc, 0xf7, 0xfc, + 0x12, 0xfd, 0x11, 0xfd, 0x26, 0xfd, 0x27, 0xfd, 0x3b, 0xfd, 0x39, 0xfd, + 0x46, 0xfd, 0x48, 0xfd, 0x50, 0xfd, 0x4f, 0xfd, 0x54, 0xfd, 0x53, 0xfd, + 0x4e, 0xfd, 0x50, 0xfd, 0x48, 0xfd, 0x47, 0xfd, 0x36, 0xfd, 0x36, 0xfd, + 0x22, 0xfd, 0x22, 0xfd, 0x07, 0xfd, 0x05, 0xfd, 0xe5, 0xfc, 0xe5, 0xfc, + 0xc0, 0xfc, 0xc0, 0xfc, 0x95, 0xfc, 0x93, 0xfc, 0x68, 0xfc, 0x68, 0xfc, + 0x39, 0xfc, 0x36, 0xfc, 0x03, 0xfc, 0x04, 0xfc, 0xd2, 0xfb, 0xd1, 0xfb, + 0x9c, 0xfb, 0x9d, 0xfb, 0x6e, 0xfb, 0x6c, 0xfb, 0x3a, 0xfb, 0x3c, 0xfb, + 0x0f, 0xfb, 0x0e, 0xfb, 0xe5, 0xfa, 0xe6, 0xfa, 0xc4, 0xfa, 0xc3, 0xfa, + 0xa6, 0xfa, 0xa7, 0xfa, 0x91, 0xfa, 0x91, 0xfa, 0x81, 0xfa, 0x81, 0xfa, + 0x7c, 0xfa, 0x7b, 0xfa, 0x7d, 0xfa, 0x7e, 0xfa, 0x88, 0xfa, 0x88, 0xfa, + 0x9d, 0xfa, 0x9e, 0xfa, 0xb9, 0xfa, 0xbb, 0xfa, 0xe1, 0xfa, 0xe0, 0xfa, + 0x0e, 0xfb, 0x0f, 0xfb, 0x45, 0xfb, 0x44, 0xfb, 0x84, 0xfb, 0x85, 0xfb, + 0xc9, 0xfb, 0xc8, 0xfb, 0x17, 0xfc, 0x17, 0xfc, 0x66, 0xfc, 0x65, 0xfc, + 0xba, 0xfc, 0xbb, 0xfc, 0x15, 0xfd, 0x14, 0xfd, 0x6c, 0xfd, 0x6b, 0xfd, + 0xcb, 0xfd, 0xcb, 0xfd, 0x23, 0xfe, 0x22, 0xfe, 0x81, 0xfe, 0x81, 0xfe, + 0xd7, 0xfe, 0xd9, 0xfe, 0x30, 0xff, 0x2f, 0xff, 0x82, 0xff, 0x85, 0xff, + 0xd1, 0xff, 0xcf, 0xff, 0x1a, 0x00, 0x1a, 0x00, 0x5b, 0x00, 0x5c, 0x00, + 0x98, 0x00, 0x97, 0x00, 0xce, 0x00, 0xce, 0x00, 0xfc, 0x00, 0xfd, 0x00, + 0x23, 0x01, 0x22, 0x01, 0x43, 0x01, 0x44, 0x01, 0x5c, 0x01, 0x5c, 0x01, + 0x6e, 0x01, 0x6e, 0x01, 0x7b, 0x01, 0x7b, 0x01, 0x82, 0x01, 0x82, 0x01, + 0x82, 0x01, 0x85, 0x01, 0x83, 0x01, 0x83, 0x01, 0x7b, 0x01, 0x7d, 0x01, + 0x74, 0x01, 0x74, 0x01, 0x69, 0x01, 0x6b, 0x01, 0x60, 0x01, 0x60, 0x01, + 0x55, 0x01, 0x56, 0x01, 0x4c, 0x01, 0x4c, 0x01, 0x46, 0x01, 0x47, 0x01, + 0x44, 0x01, 0x43, 0x01, 0x42, 0x01, 0x44, 0x01, 0x49, 0x01, 0x48, 0x01, + 0x52, 0x01, 0x54, 0x01, 0x65, 0x01, 0x64, 0x01, 0x74, 0x01, 0x76, 0x01, + 0x8d, 0x01, 0x8e, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xcd, 0x01, 0xce, 0x01, + 0xfb, 0x01, 0xfb, 0x01, 0x2c, 0x02, 0x2c, 0x02, 0x64, 0x02, 0x64, 0x02, + 0xa3, 0x02, 0xa4, 0x02, 0xe5, 0x02, 0xe6, 0x02, 0x2f, 0x03, 0x2f, 0x03, + 0x7a, 0x03, 0x7b, 0x03, 0xcb, 0x03, 0xca, 0x03, 0x1b, 0x04, 0x1b, 0x04, + 0x6f, 0x04, 0x71, 0x04, 0xc3, 0x04, 0xc2, 0x04, 0x11, 0x05, 0x13, 0x05, + 0x61, 0x05, 0x60, 0x05, 0xa8, 0x05, 0xa8, 0x05, 0xef, 0x05, 0xef, 0x05, + 0x2b, 0x06, 0x2b, 0x06, 0x64, 0x06, 0x64, 0x06, 0x93, 0x06, 0x94, 0x06, + 0xba, 0x06, 0xb9, 0x06, 0xd9, 0x06, 0xdb, 0x06, 0xee, 0x06, 0xee, 0x06, + 0xfa, 0x06, 0xfa, 0x06, 0xfb, 0x06, 0xfc, 0x06, 0xf3, 0x06, 0xf2, 0x06, + 0xe1, 0x06, 0xe1, 0x06, 0xc5, 0x06, 0xc5, 0x06, 0xa1, 0x06, 0xa2, 0x06, + 0x77, 0x06, 0x77, 0x06, 0x44, 0x06, 0x44, 0x06, 0x09, 0x06, 0x0b, 0x06, + 0xcf, 0x05, 0xce, 0x05, 0x86, 0x05, 0x89, 0x05, 0x41, 0x05, 0x41, 0x05, + 0xf7, 0x04, 0xf7, 0x04, 0xaa, 0x04, 0xac, 0x04, 0x62, 0x04, 0x62, 0x04, + 0x13, 0x04, 0x14, 0x04, 0xca, 0x03, 0xcb, 0x03, 0x81, 0x03, 0x83, 0x03, + 0x3e, 0x03, 0x3e, 0x03, 0xfd, 0x02, 0x00, 0x03, 0xc0, 0x02, 0xc0, 0x02, + 0x88, 0x02, 0x8a, 0x02, 0x55, 0x02, 0x56, 0x02, 0x29, 0x02, 0x29, 0x02, + 0x01, 0x02, 0x02, 0x02, 0xdf, 0x01, 0xe0, 0x01, 0xc3, 0x01, 0xc3, 0x01, + 0xa9, 0x01, 0xac, 0x01, 0x9b, 0x01, 0x9a, 0x01, 0x88, 0x01, 0x8b, 0x01, + 0x83, 0x01, 0x81, 0x01, 0x77, 0x01, 0x79, 0x01, 0x74, 0x01, 0x74, 0x01, + 0x70, 0x01, 0x71, 0x01, 0x6e, 0x01, 0x6e, 0x01, 0x6b, 0x01, 0x6c, 0x01, + 0x67, 0x01, 0x68, 0x01, 0x61, 0x01, 0x63, 0x01, 0x58, 0x01, 0x56, 0x01, + 0x4a, 0x01, 0x4c, 0x01, 0x39, 0x01, 0x37, 0x01, 0x21, 0x01, 0x24, 0x01, + 0x07, 0x01, 0x05, 0x01, 0xe2, 0x00, 0xe7, 0x00, 0xbf, 0x00, 0xbe, 0x00, + 0x90, 0x00, 0x90, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x22, 0x00, 0x24, 0x00, + 0xe1, 0xff, 0xe2, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x4f, 0xff, 0x51, 0xff, + 0x02, 0xff, 0x03, 0xff, 0xad, 0xfe, 0xad, 0xfe, 0x54, 0xfe, 0x56, 0xfe, + 0xfb, 0xfd, 0xfb, 0xfd, 0x9d, 0xfd, 0x9f, 0xfd, 0x42, 0xfd, 0x42, 0xfd, + 0xe4, 0xfc, 0xe6, 0xfc, 0x87, 0xfc, 0x88, 0xfc, 0x2e, 0xfc, 0x2e, 0xfc, + 0xd5, 0xfb, 0xd8, 0xfb, 0x83, 0xfb, 0x83, 0xfb, 0x34, 0xfb, 0x35, 0xfb, + 0xeb, 0xfa, 0xed, 0xfa, 0xa8, 0xfa, 0xa7, 0xfa, 0x6a, 0xfa, 0x6c, 0xfa, + 0x36, 0xfa, 0x37, 0xfa, 0x0c, 0xfa, 0x0b, 0xfa, 0xe7, 0xf9, 0xe8, 0xf9, + 0xd1, 0xf9, 0xcf, 0xf9, 0xbd, 0xf9, 0xbe, 0xf9, 0xb5, 0xf9, 0xb5, 0xf9, + 0xb5, 0xf9, 0xb4, 0xf9, 0xb8, 0xf9, 0xb9, 0xf9, 0xc5, 0xf9, 0xc5, 0xf9, + 0xd9, 0xf9, 0xda, 0xf9, 0xf3, 0xf9, 0xf0, 0xf9, 0x0e, 0xfa, 0x0f, 0xfa, + 0x31, 0xfa, 0x2f, 0xfa, 0x57, 0xfa, 0x58, 0xfa, 0x80, 0xfa, 0x80, 0xfa, + 0xa8, 0xfa, 0xa7, 0xfa, 0xd2, 0xfa, 0xd2, 0xfa, 0xfe, 0xfa, 0xfc, 0xfa, + 0x24, 0xfb, 0x25, 0xfb, 0x4e, 0xfb, 0x4c, 0xfb, 0x6f, 0xfb, 0x71, 0xfb, + 0x92, 0xfb, 0x90, 0xfb, 0xab, 0xfb, 0xad, 0xfb, 0xc3, 0xfb, 0xc2, 0xfb, + 0xd4, 0xfb, 0xd6, 0xfb, 0xdf, 0xfb, 0xdf, 0xfb, 0xe6, 0xfb, 0xe5, 0xfb, + 0xe5, 0xfb, 0xe6, 0xfb, 0xe1, 0xfb, 0xe2, 0xfb, 0xd8, 0xfb, 0xd7, 0xfb, + 0xc7, 0xfb, 0xc8, 0xfb, 0xb6, 0xfb, 0xb5, 0xfb, 0x9e, 0xfb, 0x9e, 0xfb, + 0x83, 0xfb, 0x84, 0xfb, 0x6a, 0xfb, 0x69, 0xfb, 0x4c, 0xfb, 0x4b, 0xfb, + 0x2f, 0xfb, 0x31, 0xfb, 0x13, 0xfb, 0x10, 0xfb, 0xf6, 0xfa, 0xf9, 0xfa, + 0xe1, 0xfa, 0xe0, 0xfa, 0xcb, 0xfa, 0xcc, 0xfa, 0xbc, 0xfa, 0xba, 0xfa, + 0xaf, 0xfa, 0xb2, 0xfa, 0xad, 0xfa, 0xab, 0xfa, 0xaf, 0xfa, 0xb0, 0xfa, + 0xbb, 0xfa, 0xbb, 0xfa, 0xcc, 0xfa, 0xcc, 0xfa, 0xea, 0xfa, 0xea, 0xfa, + 0x0b, 0xfb, 0x0b, 0xfb, 0x37, 0xfb, 0x38, 0xfb, 0x6c, 0xfb, 0x6c, 0xfb, + 0xa8, 0xfb, 0xa8, 0xfb, 0xed, 0xfb, 0xec, 0xfb, 0x38, 0xfc, 0x38, 0xfc, + 0x8c, 0xfc, 0x8b, 0xfc, 0xe2, 0xfc, 0xe4, 0xfc, 0x42, 0xfd, 0x42, 0xfd, + 0xa4, 0xfd, 0xa3, 0xfd, 0x08, 0xfe, 0x0a, 0xfe, 0x74, 0xfe, 0x73, 0xfe, + 0xdd, 0xfe, 0xdd, 0xfe, 0x47, 0xff, 0x48, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0x1c, 0x00, 0x1c, 0x00, 0x84, 0x00, 0x85, 0x00, 0xe8, 0x00, 0xe6, 0x00, + 0x46, 0x01, 0x49, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xfa, 0x01, 0xfa, 0x01, + 0x49, 0x02, 0x4b, 0x02, 0x95, 0x02, 0x94, 0x02, 0xd8, 0x02, 0xd7, 0x02, + 0x12, 0x03, 0x14, 0x03, 0x47, 0x03, 0x47, 0x03, 0x75, 0x03, 0x76, 0x03, + 0x9c, 0x03, 0x9c, 0x03, 0xbc, 0x03, 0xbe, 0x03, 0xd8, 0x03, 0xd8, 0x03, + 0xed, 0x03, 0xec, 0x03, 0xfa, 0x03, 0xfc, 0x03, 0x03, 0x04, 0x03, 0x04, + 0xff, 0x03, 0x01, 0x04, 0xfe, 0x03, 0xfe, 0x03, 0xf4, 0x03, 0xf4, 0x03, + 0xec, 0x03, 0xed, 0x03, 0xe3, 0x03, 0xe2, 0x03, 0xd8, 0x03, 0xd9, 0x03, + 0xd2, 0x03, 0xd3, 0x03, 0xcc, 0x03, 0xcc, 0x03, 0xc8, 0x03, 0xcb, 0x03, + 0xcb, 0x03, 0xcb, 0x03, 0xd0, 0x03, 0xd1, 0x03, 0xd8, 0x03, 0xda, 0x03, + 0xeb, 0x03, 0xec, 0x03, 0x00, 0x04, 0x00, 0x04, 0x1c, 0x04, 0x1e, 0x04, + 0x3d, 0x04, 0x3c, 0x04, 0x64, 0x04, 0x65, 0x04, 0x8f, 0x04, 0x90, 0x04, + 0xc1, 0x04, 0xbf, 0x04, 0xf3, 0x04, 0xf4, 0x04, 0x2a, 0x05, 0x2b, 0x05, + 0x64, 0x05, 0x63, 0x05, 0x9e, 0x05, 0x9f, 0x05, 0xdc, 0x05, 0xdc, 0x05, + 0x16, 0x06, 0x15, 0x06, 0x51, 0x06, 0x53, 0x06, 0x87, 0x06, 0x87, 0x06, + 0xbd, 0x06, 0xbc, 0x06, 0xed, 0x06, 0xee, 0x06, 0x18, 0x07, 0x19, 0x07, + 0x40, 0x07, 0x41, 0x07, 0x5e, 0x07, 0x5e, 0x07, 0x76, 0x07, 0x77, 0x07, + 0x89, 0x07, 0x88, 0x07, 0x8c, 0x07, 0x90, 0x07, 0x91, 0x07, 0x8f, 0x07, + 0x83, 0x07, 0x86, 0x07, 0x75, 0x07, 0x74, 0x07, 0x57, 0x07, 0x59, 0x07, + 0x35, 0x07, 0x35, 0x07, 0x0b, 0x07, 0x0a, 0x07, 0xd4, 0x06, 0xd7, 0x06, + 0x9d, 0x06, 0x9c, 0x06, 0x5a, 0x06, 0x5c, 0x06, 0x15, 0x06, 0x14, 0x06, + 0xc9, 0x05, 0xcc, 0x05, 0x7a, 0x05, 0x7b, 0x05, 0x2a, 0x05, 0x2b, 0x05, + 0xd5, 0x04, 0xd6, 0x04, 0x83, 0x04, 0x84, 0x04, 0x2e, 0x04, 0x2e, 0x04, + 0xda, 0x03, 0xdc, 0x03, 0x8b, 0x03, 0x8b, 0x03, 0x3a, 0x03, 0x3b, 0x03, + 0xf1, 0x02, 0xf3, 0x02, 0xab, 0x02, 0xaa, 0x02, 0x68, 0x02, 0x6b, 0x02, + 0x2e, 0x02, 0x2d, 0x02, 0xf4, 0x01, 0xf5, 0x01, 0xc2, 0x01, 0xc3, 0x01, + 0x98, 0x01, 0x97, 0x01, 0x6f, 0x01, 0x72, 0x01, 0x50, 0x01, 0x50, 0x01, + 0x35, 0x01, 0x35, 0x01, 0x1d, 0x01, 0x1e, 0x01, 0x0c, 0x01, 0x0d, 0x01, + 0xfd, 0x00, 0xfd, 0x00, 0xf0, 0x00, 0xf1, 0x00, 0xea, 0x00, 0xe9, 0x00, + 0xdf, 0x00, 0xe1, 0x00, 0xd9, 0x00, 0xd9, 0x00, 0xce, 0x00, 0xd0, 0x00, + 0xc7, 0x00, 0xc7, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0xac, 0x00, 0xab, 0x00, + 0x96, 0x00, 0x97, 0x00, 0x80, 0x00, 0x80, 0x00, 0x61, 0x00, 0x62, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x17, 0x00, 0x17, 0x00, 0xea, 0xff, 0xeb, 0xff, + 0xb4, 0xff, 0xb3, 0xff, 0x78, 0xff, 0x79, 0xff, 0x3a, 0xff, 0x3a, 0xff, + 0xee, 0xfe, 0xf0, 0xfe, 0xa6, 0xfe, 0xa5, 0xfe, 0x52, 0xfe, 0x54, 0xfe, + 0xfc, 0xfd, 0xfb, 0xfd, 0xa2, 0xfd, 0xa5, 0xfd, 0x42, 0xfd, 0x42, 0xfd, + 0xe3, 0xfc, 0xe4, 0xfc, 0x7e, 0xfc, 0x81, 0xfc, 0x1d, 0xfc, 0x1c, 0xfc, + 0xb8, 0xfb, 0xba, 0xfb, 0x5c, 0xfb, 0x5b, 0xfb, 0x01, 0xfb, 0x01, 0xfb, + 0xaa, 0xfa, 0xab, 0xfa, 0x53, 0xfa, 0x55, 0xfa, 0x08, 0xfa, 0x07, 0xfa, + 0xba, 0xf9, 0xba, 0xf9, 0x76, 0xf9, 0x77, 0xf9, 0x3a, 0xf9, 0x3b, 0xf9, + 0x01, 0xf9, 0x01, 0xf9, 0xd5, 0xf8, 0xd7, 0xf8, 0xae, 0xf8, 0xad, 0xf8, + 0x91, 0xf8, 0x92, 0xf8, 0x7e, 0xf8, 0x7f, 0xf8, 0x74, 0xf8, 0x74, 0xf8, + 0x72, 0xf8, 0x73, 0xf8, 0x79, 0xf8, 0x7a, 0xf8, 0x89, 0xf8, 0x89, 0xf8, + 0x9d, 0xf8, 0xa0, 0xf8, 0xbc, 0xf8, 0xbd, 0xf8, 0xe1, 0xf8, 0xe1, 0xf8, + 0x08, 0xf9, 0x0a, 0xf9, 0x39, 0xf9, 0x37, 0xf9, 0x66, 0xf9, 0x6a, 0xf9, + 0x9d, 0xf9, 0x9c, 0xf9, 0xd0, 0xf9, 0xd3, 0xf9, 0x06, 0xfa, 0x05, 0xfa, + 0x3b, 0xfa, 0x3c, 0xfa, 0x6e, 0xfa, 0x6f, 0xfa, 0xa2, 0xfa, 0xa2, 0xfa, + 0xd0, 0xfa, 0xd0, 0xfa, 0xf9, 0xfa, 0xf9, 0xfa, 0x20, 0xfb, 0x20, 0xfb, + 0x42, 0xfb, 0x40, 0xfb, 0x5c, 0xfb, 0x5d, 0xfb, 0x72, 0xfb, 0x72, 0xfb, + 0x84, 0xfb, 0x83, 0xfb, 0x8f, 0xfb, 0x8e, 0xfb, 0x95, 0xfb, 0x96, 0xfb, + 0x98, 0xfb, 0x97, 0xfb, 0x92, 0xfb, 0x93, 0xfb, 0x8e, 0xfb, 0x8d, 0xfb, + 0x81, 0xfb, 0x81, 0xfb, 0x74, 0xfb, 0x74, 0xfb, 0x66, 0xfb, 0x65, 0xfb, + 0x57, 0xfb, 0x57, 0xfb, 0x46, 0xfb, 0x47, 0xfb, 0x38, 0xfb, 0x38, 0xfb, + 0x2c, 0xfb, 0x2d, 0xfb, 0x23, 0xfb, 0x22, 0xfb, 0x1c, 0xfb, 0x1d, 0xfb, + 0x19, 0xfb, 0x19, 0xfb, 0x1d, 0xfb, 0x1e, 0xfb, 0x29, 0xfb, 0x28, 0xfb, + 0x37, 0xfb, 0x37, 0xfb, 0x51, 0xfb, 0x51, 0xfb, 0x6f, 0xfb, 0x70, 0xfb, + 0x95, 0xfb, 0x96, 0xfb, 0xc4, 0xfb, 0xc3, 0xfb, 0xfa, 0xfb, 0xf9, 0xfb, + 0x39, 0xfc, 0x39, 0xfc, 0x7d, 0xfc, 0x7c, 0xfc, 0xc9, 0xfc, 0xca, 0xfc, + 0x1b, 0xfd, 0x1a, 0xfd, 0x74, 0xfd, 0x73, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, + 0x2f, 0xfe, 0x2f, 0xfe, 0x94, 0xfe, 0x95, 0xfe, 0xf8, 0xfe, 0xf8, 0xfe, + 0x62, 0xff, 0x63, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0x2f, 0x00, 0x31, 0x00, + 0x95, 0x00, 0x95, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0x57, 0x01, 0x57, 0x01, + 0xb1, 0x01, 0xb1, 0x01, 0x08, 0x02, 0x08, 0x02, 0x5b, 0x02, 0x5a, 0x02, + 0xa5, 0x02, 0xa6, 0x02, 0xeb, 0x02, 0xeb, 0x02, 0x29, 0x03, 0x2a, 0x03, + 0x63, 0x03, 0x63, 0x03, 0x92, 0x03, 0x93, 0x03, 0xbf, 0x03, 0xc0, 0x03, + 0xe3, 0x03, 0xe1, 0x03, 0xff, 0x03, 0x01, 0x04, 0x1a, 0x04, 0x1a, 0x04, + 0x2c, 0x04, 0x2c, 0x04, 0x3b, 0x04, 0x3d, 0x04, 0x46, 0x04, 0x45, 0x04, + 0x4c, 0x04, 0x4d, 0x04, 0x53, 0x04, 0x52, 0x04, 0x4d, 0x04, 0x4d, 0x04, + 0x4a, 0x04, 0x49, 0x04, 0x40, 0x04, 0x41, 0x04, 0x3c, 0x04, 0x3b, 0x04, + 0x36, 0x04, 0x38, 0x04, 0x35, 0x04, 0x36, 0x04, 0x39, 0x04, 0x37, 0x04, + 0x3e, 0x04, 0x41, 0x04, 0x4c, 0x04, 0x49, 0x04, 0x5a, 0x04, 0x5c, 0x04, + 0x72, 0x04, 0x70, 0x04, 0x8c, 0x04, 0x8f, 0x04, 0xb1, 0x04, 0xad, 0x04, + 0xd5, 0x04, 0xd7, 0x04, 0x02, 0x05, 0x00, 0x05, 0x33, 0x05, 0x33, 0x05, + 0x65, 0x05, 0x65, 0x05, 0xa0, 0x05, 0x9d, 0x05, 0xd7, 0x05, 0xd7, 0x05, + 0x12, 0x06, 0x12, 0x06, 0x4d, 0x06, 0x4e, 0x06, 0x8b, 0x06, 0x8b, 0x06, + 0xc6, 0x06, 0xc7, 0x06, 0x02, 0x07, 0x01, 0x07, 0x38, 0x07, 0x39, 0x07, + 0x6b, 0x07, 0x6a, 0x07, 0x99, 0x07, 0x9a, 0x07, 0xc2, 0x07, 0xc1, 0x07, + 0xe4, 0x07, 0xe6, 0x07, 0x00, 0x08, 0x00, 0x08, 0x12, 0x08, 0x14, 0x08, + 0x1f, 0x08, 0x1f, 0x08, 0x21, 0x08, 0x20, 0x08, 0x19, 0x08, 0x1b, 0x08, + 0x09, 0x08, 0x09, 0x08, 0xf0, 0x07, 0xf0, 0x07, 0xcc, 0x07, 0xcd, 0x07, + 0xa3, 0x07, 0xa2, 0x07, 0x6c, 0x07, 0x6e, 0x07, 0x33, 0x07, 0x31, 0x07, + 0xed, 0x06, 0xee, 0x06, 0xa6, 0x06, 0xa6, 0x06, 0x53, 0x06, 0x53, 0x06, + 0x00, 0x06, 0x00, 0x06, 0xa8, 0x05, 0xa9, 0x05, 0x4b, 0x05, 0x4d, 0x05, + 0xf2, 0x04, 0xf0, 0x04, 0x8f, 0x04, 0x90, 0x04, 0x35, 0x04, 0x33, 0x04, + 0xd4, 0x03, 0xd5, 0x03, 0x7d, 0x03, 0x7c, 0x03, 0x23, 0x03, 0x23, 0x03, + 0xce, 0x02, 0xce, 0x02, 0x7f, 0x02, 0x80, 0x02, 0x33, 0x02, 0x33, 0x02, + 0xee, 0x01, 0xef, 0x01, 0xad, 0x01, 0xae, 0x01, 0x75, 0x01, 0x73, 0x01, + 0x3e, 0x01, 0x42, 0x01, 0x12, 0x01, 0x10, 0x01, 0xea, 0x00, 0xeb, 0x00, + 0xc7, 0x00, 0xc5, 0x00, 0xa9, 0x00, 0xad, 0x00, 0x93, 0x00, 0x90, 0x00, + 0x7c, 0x00, 0x7e, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0x56, 0x00, 0x56, 0x00, 0x4b, 0x00, 0x4a, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x39, 0x00, 0x37, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x22, 0x00, 0x22, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0xfd, 0xff, 0xfe, 0xff, 0xe6, 0xff, 0xe5, 0xff, + 0xc9, 0xff, 0xc9, 0xff, 0xa9, 0xff, 0xa8, 0xff, 0x81, 0xff, 0x81, 0xff, + 0x57, 0xff, 0x57, 0xff, 0x25, 0xff, 0x24, 0xff, 0xef, 0xfe, 0xf0, 0xfe, + 0xb2, 0xfe, 0xb3, 0xfe, 0x72, 0xfe, 0x71, 0xfe, 0x2c, 0xfe, 0x2b, 0xfe, + 0xe1, 0xfd, 0xe2, 0xfd, 0x94, 0xfd, 0x93, 0xfd, 0x43, 0xfd, 0x42, 0xfd, + 0xee, 0xfc, 0xed, 0xfc, 0x98, 0xfc, 0x99, 0xfc, 0x43, 0xfc, 0x42, 0xfc, + 0xea, 0xfb, 0xea, 0xfb, 0x95, 0xfb, 0x93, 0xfb, 0x40, 0xfb, 0x3f, 0xfb, + 0xec, 0xfa, 0xed, 0xfa, 0x9e, 0xfa, 0x9d, 0xfa, 0x50, 0xfa, 0x50, 0xfa, + 0x09, 0xfa, 0x09, 0xfa, 0xc6, 0xf9, 0xc5, 0xf9, 0x8a, 0xf9, 0x8a, 0xf9, + 0x54, 0xf9, 0x54, 0xf9, 0x27, 0xf9, 0x25, 0xf9, 0xfe, 0xf8, 0x00, 0xf9, + 0xdf, 0xf8, 0xdd, 0xf8, 0xc7, 0xf8, 0xc8, 0xf8, 0xb6, 0xf8, 0xb5, 0xf8, + 0xaf, 0xf8, 0xae, 0xf8, 0xac, 0xf8, 0xac, 0xf8, 0xb0, 0xf8, 0xaf, 0xf8, + 0xbf, 0xf8, 0xbf, 0xf8, 0xd0, 0xf8, 0xcd, 0xf8, 0xe6, 0xf8, 0xe5, 0xf8, + 0x05, 0xf9, 0x03, 0xf9, 0x23, 0xf9, 0x23, 0xf9, 0x49, 0xf9, 0x49, 0xf9, + 0x6f, 0xf9, 0x6f, 0xf9, 0x98, 0xf9, 0x97, 0xf9, 0xc3, 0xf9, 0xc3, 0xf9, + 0xea, 0xf9, 0xea, 0xf9, 0x14, 0xfa, 0x14, 0xfa, 0x3c, 0xfa, 0x3a, 0xfa, + 0x61, 0xfa, 0x61, 0xfa, 0x85, 0xfa, 0x85, 0xfa, 0xa4, 0xfa, 0xa4, 0xfa, + 0xc2, 0xfa, 0xc2, 0xfa, 0xd9, 0xfa, 0xd7, 0xfa, 0xee, 0xfa, 0xf0, 0xfa, + 0xfe, 0xfa, 0xfd, 0xfa, 0x0c, 0xfb, 0x0c, 0xfb, 0x14, 0xfb, 0x14, 0xfb, + 0x19, 0xfb, 0x19, 0xfb, 0x1b, 0xfb, 0x1b, 0xfb, 0x19, 0xfb, 0x18, 0xfb, + 0x15, 0xfb, 0x16, 0xfb, 0x0f, 0xfb, 0x0e, 0xfb, 0x0a, 0xfb, 0x0b, 0xfb, + 0x01, 0xfb, 0x01, 0xfb, 0xfe, 0xfa, 0xfd, 0xfa, 0xf7, 0xfa, 0xf8, 0xfa, + 0xf4, 0xfa, 0xf3, 0xfa, 0xf7, 0xfa, 0xf7, 0xfa, 0xf8, 0xfa, 0xf9, 0xfa, + 0x02, 0xfb, 0x02, 0xfb, 0x0e, 0xfb, 0x0e, 0xfb, 0x21, 0xfb, 0x21, 0xfb, + 0x3a, 0xfb, 0x39, 0xfb, 0x59, 0xfb, 0x5a, 0xfb, 0x81, 0xfb, 0x80, 0xfb, + 0xad, 0xfb, 0xad, 0xfb, 0xe0, 0xfb, 0xe0, 0xfb, 0x1b, 0xfc, 0x1a, 0xfc, + 0x5a, 0xfc, 0x5b, 0xfc, 0xa5, 0xfc, 0xa2, 0xfc, 0xee, 0xfc, 0xee, 0xfc, + 0x42, 0xfd, 0x43, 0xfd, 0x9b, 0xfd, 0x9a, 0xfd, 0xf4, 0xfd, 0xf4, 0xfd, + 0x56, 0xfe, 0x54, 0xfe, 0xb7, 0xfe, 0xb7, 0xfe, 0x1a, 0xff, 0x1a, 0xff, + 0x81, 0xff, 0x7f, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0x4a, 0x00, 0x4a, 0x00, + 0xab, 0x00, 0xaa, 0x00, 0x0d, 0x01, 0x0d, 0x01, 0x69, 0x01, 0x67, 0x01, + 0xc2, 0x01, 0xc2, 0x01, 0x17, 0x02, 0x16, 0x02, 0x65, 0x02, 0x64, 0x02, + 0xb0, 0x02, 0xb0, 0x02, 0xf3, 0x02, 0xf2, 0x02, 0x31, 0x03, 0x31, 0x03, + 0x68, 0x03, 0x67, 0x03, 0x98, 0x03, 0x98, 0x03, 0xc2, 0x03, 0xc1, 0x03, + 0xe5, 0x03, 0xe6, 0x03, 0x05, 0x04, 0x04, 0x04, 0x1c, 0x04, 0x1c, 0x04, + 0x2f, 0x04, 0x2e, 0x04, 0x3b, 0x04, 0x3a, 0x04, 0x43, 0x04, 0x44, 0x04, + 0x4a, 0x04, 0x49, 0x04, 0x4c, 0x04, 0x4b, 0x04, 0x48, 0x04, 0x4a, 0x04, + 0x4c, 0x04, 0x4a, 0x04, 0x46, 0x04, 0x47, 0x04, 0x46, 0x04, 0x45, 0x04, + 0x44, 0x04, 0x45, 0x04, 0x45, 0x04, 0x45, 0x04, 0x48, 0x04, 0x48, 0x04, + 0x4c, 0x04, 0x4d, 0x04, 0x58, 0x04, 0x55, 0x04, 0x65, 0x04, 0x66, 0x04, + 0x71, 0x04, 0x71, 0x04, 0x85, 0x04, 0x84, 0x04, 0x9b, 0x04, 0x9b, 0x04, + 0xb7, 0x04, 0xb8, 0x04, 0xdb, 0x04, 0xda, 0x04, 0x02, 0x05, 0x00, 0x05, + 0x2e, 0x05, 0x2f, 0x05, 0x60, 0x05, 0x5f, 0x05, 0x95, 0x05, 0x94, 0x05, + 0xcc, 0x05, 0xcb, 0x05, 0x03, 0x06, 0x03, 0x06, 0x3e, 0x06, 0x3d, 0x06, + 0x77, 0x06, 0x77, 0x06, 0xb2, 0x06, 0xb2, 0x06, 0xea, 0x06, 0xe8, 0x06, + 0x20, 0x07, 0x20, 0x07, 0x53, 0x07, 0x51, 0x07, 0x82, 0x07, 0x82, 0x07, + 0xad, 0x07, 0xac, 0x07, 0xd1, 0x07, 0xd1, 0x07, 0xf2, 0x07, 0xf0, 0x07, + 0x05, 0x08, 0x06, 0x08, 0x18, 0x08, 0x17, 0x08, 0x1e, 0x08, 0x1d, 0x08, + 0x1c, 0x08, 0x1d, 0x08, 0x16, 0x08, 0x12, 0x08, 0xff, 0x07, 0x01, 0x08, + 0xe8, 0x07, 0xe6, 0x07, 0xc2, 0x07, 0xc1, 0x07, 0x97, 0x07, 0x98, 0x07, + 0x65, 0x07, 0x61, 0x07, 0x27, 0x07, 0x29, 0x07, 0xea, 0x06, 0xe6, 0x06, + 0x9d, 0x06, 0x9e, 0x06, 0x53, 0x06, 0x54, 0x06, 0x01, 0x06, 0xfe, 0x05, + 0xac, 0x05, 0xaf, 0x05, 0x58, 0x05, 0x57, 0x05, 0x01, 0x05, 0x01, 0x05, + 0xab, 0x04, 0xa9, 0x04, 0x4f, 0x04, 0x50, 0x04, 0xfc, 0x03, 0xfa, 0x03, + 0xa3, 0x03, 0xa4, 0x03, 0x55, 0x03, 0x54, 0x03, 0x05, 0x03, 0x06, 0x03, + 0xbb, 0x02, 0xba, 0x02, 0x78, 0x02, 0x75, 0x02, 0x33, 0x02, 0x33, 0x02, + 0xf8, 0x01, 0xf8, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0x8e, 0x01, 0x8e, 0x01, + 0x61, 0x01, 0x60, 0x01, 0x39, 0x01, 0x38, 0x01, 0x16, 0x01, 0x17, 0x01, + 0xf6, 0x00, 0xf3, 0x00, 0xdb, 0x00, 0xdd, 0x00, 0xc2, 0x00, 0xbf, 0x00, + 0xac, 0x00, 0xad, 0x00, 0x96, 0x00, 0x96, 0x00, 0x83, 0x00, 0x82, 0x00, + 0x6f, 0x00, 0x71, 0x00, 0x5b, 0x00, 0x5a, 0x00, 0x46, 0x00, 0x47, 0x00, + 0x2e, 0x00, 0x2c, 0x00, 0x13, 0x00, 0x14, 0x00, 0xf6, 0xff, 0xf6, 0xff, + 0xd4, 0xff, 0xd2, 0xff, 0xaf, 0xff, 0xae, 0xff, 0x83, 0xff, 0x83, 0xff, + 0x55, 0xff, 0x55, 0xff, 0x1f, 0xff, 0x1e, 0xff, 0xe6, 0xfe, 0xe6, 0xfe, + 0xaa, 0xfe, 0xaa, 0xfe, 0x64, 0xfe, 0x63, 0xfe, 0x1d, 0xfe, 0x1e, 0xfe, + 0xd3, 0xfd, 0xd2, 0xfd, 0x84, 0xfd, 0x85, 0xfd, 0x33, 0xfd, 0x34, 0xfd, + 0xde, 0xfc, 0xdc, 0xfc, 0x87, 0xfc, 0x88, 0xfc, 0x32, 0xfc, 0x30, 0xfc, + 0xd8, 0xfb, 0xd8, 0xfb, 0x82, 0xfb, 0x83, 0xfb, 0x2c, 0xfb, 0x2b, 0xfb, + 0xd9, 0xfa, 0xda, 0xfa, 0x8b, 0xfa, 0x8a, 0xfa, 0x3b, 0xfa, 0x3c, 0xfa, + 0xf6, 0xf9, 0xf6, 0xf9, 0xb4, 0xf9, 0xb4, 0xf9, 0x77, 0xf9, 0x78, 0xf9, + 0x42, 0xf9, 0x41, 0xf9, 0x13, 0xf9, 0x12, 0xf9, 0xec, 0xf8, 0xec, 0xf8, + 0xcc, 0xf8, 0xc9, 0xf8, 0xb3, 0xf8, 0xb5, 0xf8, 0xa5, 0xf8, 0xa2, 0xf8, + 0x9b, 0xf8, 0x9b, 0xf8, 0x99, 0xf8, 0x99, 0xf8, 0xa2, 0xf8, 0xa1, 0xf8, + 0xad, 0xf8, 0xad, 0xf8, 0xc3, 0xf8, 0xc3, 0xf8, 0xdc, 0xf8, 0xdb, 0xf8, + 0xf8, 0xf8, 0xf9, 0xf8, 0x1f, 0xf9, 0x1f, 0xf9, 0x43, 0xf9, 0x42, 0xf9, + 0x6f, 0xf9, 0x6e, 0xf9, 0x98, 0xf9, 0x97, 0xf9, 0xc5, 0xf9, 0xc5, 0xf9, + 0xf1, 0xf9, 0xf1, 0xf9, 0x1c, 0xfa, 0x1b, 0xfa, 0x46, 0xfa, 0x45, 0xfa, + 0x6d, 0xfa, 0x6c, 0xfa, 0x91, 0xfa, 0x91, 0xfa, 0xb3, 0xfa, 0xaf, 0xfa, + 0xcd, 0xfa, 0xcf, 0xfa, 0xe7, 0xfa, 0xe6, 0xfa, 0xfa, 0xfa, 0xfb, 0xfa, + 0x0a, 0xfb, 0x09, 0xfb, 0x12, 0xfb, 0x10, 0xfb, 0x19, 0xfb, 0x18, 0xfb, + 0x16, 0xfb, 0x14, 0xfb, 0x11, 0xfb, 0x10, 0xfb, 0x09, 0xfb, 0x08, 0xfb, + 0xfd, 0xfa, 0xfd, 0xfa, 0xef, 0xfa, 0xed, 0xfa, 0xdc, 0xfa, 0xdc, 0xfa, + 0xce, 0xfa, 0xcb, 0xfa, 0xb8, 0xfa, 0xb8, 0xfa, 0xa7, 0xfa, 0xa6, 0xfa, + 0x98, 0xfa, 0x99, 0xfa, 0x87, 0xfa, 0x87, 0xfa, 0x81, 0xfa, 0x80, 0xfa, + 0x76, 0xfa, 0x77, 0xfa, 0x77, 0xfa, 0x76, 0xfa, 0x7b, 0xfa, 0x7c, 0xfa, + 0x85, 0xfa, 0x85, 0xfa, 0x96, 0xfa, 0x97, 0xfa, 0xaf, 0xfa, 0xad, 0xfa, + 0xcf, 0xfa, 0xcf, 0xfa, 0xf8, 0xfa, 0xf7, 0xfa, 0x26, 0xfb, 0x25, 0xfb, + 0x5f, 0xfb, 0x5f, 0xfb, 0x9e, 0xfb, 0x9e, 0xfb, 0xe5, 0xfb, 0xe3, 0xfb, + 0x32, 0xfc, 0x34, 0xfc, 0x89, 0xfc, 0x87, 0xfc, 0xe1, 0xfc, 0xe1, 0xfc, + 0x43, 0xfd, 0x41, 0xfd, 0xa4, 0xfd, 0xa4, 0xfd, 0x0e, 0xfe, 0x0c, 0xfe, + 0x77, 0xfe, 0x76, 0xfe, 0xe2, 0xfe, 0xe2, 0xfe, 0x4f, 0xff, 0x4f, 0xff, + 0xba, 0xff, 0xbb, 0xff, 0x27, 0x00, 0x25, 0x00, 0x8e, 0x00, 0x8e, 0x00, + 0xf5, 0x00, 0xf4, 0x00, 0x59, 0x01, 0x56, 0x01, 0xb3, 0x01, 0xb5, 0x01, + 0x0f, 0x02, 0x0c, 0x02, 0x5e, 0x02, 0x5d, 0x02, 0xad, 0x02, 0xac, 0x02, + 0xf2, 0x02, 0xf1, 0x02, 0x30, 0x03, 0x30, 0x03, 0x69, 0x03, 0x67, 0x03, + 0x99, 0x03, 0x99, 0x03, 0xc3, 0x03, 0xc2, 0x03, 0xe8, 0x03, 0xe8, 0x03, + 0x07, 0x04, 0x04, 0x04, 0x1c, 0x04, 0x1d, 0x04, 0x30, 0x04, 0x2e, 0x04, + 0x3e, 0x04, 0x3d, 0x04, 0x48, 0x04, 0x48, 0x04, 0x4f, 0x04, 0x4d, 0x04, + 0x51, 0x04, 0x52, 0x04, 0x55, 0x04, 0x55, 0x04, 0x56, 0x04, 0x54, 0x04, + 0x57, 0x04, 0x57, 0x04, 0x5b, 0x04, 0x5c, 0x04, 0x5d, 0x04, 0x5b, 0x04, + 0x64, 0x04, 0x64, 0x04, 0x6e, 0x04, 0x6c, 0x04, 0x79, 0x04, 0x78, 0x04, + 0x8a, 0x04, 0x89, 0x04, 0x9c, 0x04, 0x9c, 0x04, 0xb5, 0x04, 0xb4, 0x04, + 0xd0, 0x04, 0xd0, 0x04, 0xf2, 0x04, 0xf2, 0x04, 0x17, 0x05, 0x17, 0x05, + 0x40, 0x05, 0x41, 0x05, 0x6e, 0x05, 0x6e, 0x05, 0x9f, 0x05, 0x9f, 0x05, + 0xd2, 0x05, 0xd1, 0x05, 0x08, 0x06, 0x07, 0x06, 0x3d, 0x06, 0x3e, 0x06, + 0x76, 0x06, 0x75, 0x06, 0xae, 0x06, 0xae, 0x06, 0xe4, 0x06, 0xe5, 0x06, + 0x1a, 0x07, 0x18, 0x07, 0x4a, 0x07, 0x4b, 0x07, 0x7a, 0x07, 0x79, 0x07, + 0xa5, 0x07, 0xa5, 0x07, 0xca, 0x07, 0xc8, 0x07, 0xe9, 0x07, 0xea, 0x07, + 0x01, 0x08, 0xfe, 0x07, 0x12, 0x08, 0x13, 0x08, 0x1d, 0x08, 0x1b, 0x08, + 0x1d, 0x08, 0x1f, 0x08, 0x18, 0x08, 0x15, 0x08, 0x09, 0x08, 0x07, 0x08, + 0xef, 0x07, 0xf0, 0x07, 0xd1, 0x07, 0xd0, 0x07, 0xa6, 0x07, 0xa4, 0x07, + 0x78, 0x07, 0x79, 0x07, 0x42, 0x07, 0x3f, 0x07, 0x01, 0x07, 0x02, 0x07, + 0xbf, 0x06, 0xbd, 0x06, 0x76, 0x06, 0x76, 0x06, 0x2b, 0x06, 0x29, 0x06, + 0xdc, 0x05, 0xdb, 0x05, 0x8a, 0x05, 0x88, 0x05, 0x37, 0x05, 0x38, 0x05, + 0xe3, 0x04, 0xe1, 0x04, 0x91, 0x04, 0x90, 0x04, 0x3f, 0x04, 0x3e, 0x04, + 0xf0, 0x03, 0xef, 0x03, 0xa5, 0x03, 0xa4, 0x03, 0x5b, 0x03, 0x5b, 0x03, + 0x1b, 0x03, 0x19, 0x03, 0xd8, 0x02, 0xd7, 0x02, 0xa0, 0x02, 0x9f, 0x02, + 0x6e, 0x02, 0x6a, 0x02, 0x3c, 0x02, 0x3c, 0x02, 0x14, 0x02, 0x13, 0x02, + 0xf0, 0x01, 0xee, 0x01, 0xd0, 0x01, 0xd0, 0x01, 0xb7, 0x01, 0xb7, 0x01, + 0xa2, 0x01, 0x9f, 0x01, 0x90, 0x01, 0x91, 0x01, 0x84, 0x01, 0x82, 0x01, + 0x75, 0x01, 0x75, 0x01, 0x6b, 0x01, 0x6b, 0x01, 0x62, 0x01, 0x61, 0x01, + 0x57, 0x01, 0x57, 0x01, 0x4e, 0x01, 0x4c, 0x01, 0x3f, 0x01, 0x40, 0x01, + 0x32, 0x01, 0x2e, 0x01, 0x1d, 0x01, 0x1e, 0x01, 0x04, 0x01, 0x03, 0x01, + 0xe8, 0x00, 0xe9, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0x9f, 0x00, 0x9f, 0x00, + 0x70, 0x00, 0x6f, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x01, 0x00, + 0xbf, 0xff, 0xc1, 0xff, 0x7b, 0xff, 0x7a, 0xff, 0x2a, 0xff, 0x2a, 0xff, + 0xdb, 0xfe, 0xdc, 0xfe, 0x83, 0xfe, 0x83, 0xfe, 0x26, 0xfe, 0x26, 0xfe, + 0xca, 0xfd, 0xca, 0xfd, 0x64, 0xfd, 0x64, 0xfd, 0x03, 0xfd, 0x01, 0xfd, + 0x99, 0xfc, 0x9a, 0xfc, 0x36, 0xfc, 0x35, 0xfc, 0xce, 0xfb, 0xce, 0xfb, + 0x6a, 0xfb, 0x6b, 0xfb, 0x09, 0xfb, 0x07, 0xfb, 0xa8, 0xfa, 0xaa, 0xfa, + 0x50, 0xfa, 0x4e, 0xfa, 0xf8, 0xf9, 0xfa, 0xf9, 0xa9, 0xf9, 0xa8, 0xf9, + 0x62, 0xf9, 0x62, 0xf9, 0x1e, 0xf9, 0x1f, 0xf9, 0xe7, 0xf8, 0xe6, 0xf8, + 0xb5, 0xf8, 0xb6, 0xf8, 0x8d, 0xf8, 0x8c, 0xf8, 0x70, 0xf8, 0x6f, 0xf8, + 0x56, 0xf8, 0x56, 0xf8, 0x4b, 0xf8, 0x4a, 0xf8, 0x45, 0xf8, 0x44, 0xf8, + 0x46, 0xf8, 0x47, 0xf8, 0x57, 0xf8, 0x54, 0xf8, 0x64, 0xf8, 0x65, 0xf8, + 0x81, 0xf8, 0x80, 0xf8, 0x9d, 0xf8, 0x9e, 0xf8, 0xc3, 0xf8, 0xc2, 0xf8, + 0xec, 0xf8, 0xec, 0xf8, 0x18, 0xf9, 0x17, 0xf9, 0x49, 0xf9, 0x48, 0xf9, + 0x78, 0xf9, 0x79, 0xf9, 0xa9, 0xf9, 0xa7, 0xf9, 0xd8, 0xf9, 0xd9, 0xf9, + 0x05, 0xfa, 0x05, 0xfa, 0x34, 0xfa, 0x33, 0xfa, 0x5c, 0xfa, 0x5b, 0xfa, + 0x83, 0xfa, 0x82, 0xfa, 0xa2, 0xfa, 0xa2, 0xfa, 0xc1, 0xfa, 0xc1, 0xfa, + 0xd9, 0xfa, 0xd7, 0xfa, 0xe9, 0xfa, 0xea, 0xfa, 0xf8, 0xfa, 0xf7, 0xfa, + 0xfd, 0xfa, 0xfd, 0xfa, 0x03, 0xfb, 0x01, 0xfb, 0xfd, 0xfa, 0xfd, 0xfa, + 0xf7, 0xfa, 0xf6, 0xfa, 0xec, 0xfa, 0xeb, 0xfa, 0xdd, 0xfa, 0xdc, 0xfa, + 0xcc, 0xfa, 0xcb, 0xfa, 0xbb, 0xfa, 0xba, 0xfa, 0xa7, 0xfa, 0xa4, 0xfa, + 0x94, 0xfa, 0x95, 0xfa, 0x82, 0xfa, 0x7d, 0xfa, 0x70, 0xfa, 0x72, 0xfa, + 0x63, 0xfa, 0x61, 0xfa, 0x5b, 0xfa, 0x58, 0xfa, 0x52, 0xfa, 0x54, 0xfa, + 0x55, 0xfa, 0x52, 0xfa, 0x59, 0xfa, 0x59, 0xfa, 0x68, 0xfa, 0x66, 0xfa, + 0x7a, 0xfa, 0x7a, 0xfa, 0x98, 0xfa, 0x97, 0xfa, 0xba, 0xfa, 0xba, 0xfa, + 0xe7, 0xfa, 0xe5, 0xfa, 0x1a, 0xfb, 0x19, 0xfb, 0x53, 0xfb, 0x54, 0xfb, + 0x97, 0xfb, 0x95, 0xfb, 0xe0, 0xfb, 0xe1, 0xfb, 0x31, 0xfc, 0x2e, 0xfc, + 0x87, 0xfc, 0x88, 0xfc, 0xe2, 0xfc, 0xe1, 0xfc, 0x42, 0xfd, 0x41, 0xfd, + 0xa3, 0xfd, 0xa3, 0xfd, 0x0a, 0xfe, 0x08, 0xfe, 0x70, 0xfe, 0x70, 0xfe, + 0xd8, 0xfe, 0xd7, 0xfe, 0x41, 0xff, 0x40, 0xff, 0xa5, 0xff, 0xa5, 0xff, + 0x0c, 0x00, 0x0b, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0xc7, 0x00, 0xc8, 0x00, + 0x21, 0x01, 0x20, 0x01, 0x73, 0x01, 0x74, 0x01, 0xc2, 0x01, 0xc0, 0x01, + 0x09, 0x02, 0x08, 0x02, 0x49, 0x02, 0x49, 0x02, 0x84, 0x02, 0x82, 0x02, + 0xb6, 0x02, 0xb8, 0x02, 0xe6, 0x02, 0xe2, 0x02, 0x09, 0x03, 0x0a, 0x03, + 0x2c, 0x03, 0x2a, 0x03, 0x42, 0x03, 0x42, 0x03, 0x5b, 0x03, 0x59, 0x03, + 0x68, 0x03, 0x67, 0x03, 0x76, 0x03, 0x77, 0x03, 0x7d, 0x03, 0x7a, 0x03, + 0x83, 0x03, 0x84, 0x03, 0x8a, 0x03, 0x87, 0x03, 0x8b, 0x03, 0x8c, 0x03, + 0x90, 0x03, 0x90, 0x03, 0x95, 0x03, 0x96, 0x03, 0x9c, 0x03, 0x9d, 0x03, + 0xa6, 0x03, 0xa5, 0x03, 0xb4, 0x03, 0xb4, 0x03, 0xc4, 0x03, 0xc5, 0x03, + 0xda, 0x03, 0xd9, 0x03, 0xf1, 0x03, 0xf3, 0x03, 0x0c, 0x04, 0x0b, 0x04, + 0x2c, 0x04, 0x2b, 0x04, 0x51, 0x04, 0x51, 0x04, 0x7e, 0x04, 0x7d, 0x04, + 0xae, 0x04, 0xad, 0x04, 0xe6, 0x04, 0xe7, 0x04, 0x22, 0x05, 0x21, 0x05, + 0x64, 0x05, 0x63, 0x05, 0xa4, 0x05, 0xa2, 0x05, 0xe9, 0x05, 0xe8, 0x05, + 0x2f, 0x06, 0x30, 0x06, 0x75, 0x06, 0x73, 0x06, 0xbd, 0x06, 0xbd, 0x06, + 0x00, 0x07, 0xfd, 0x06, 0x43, 0x07, 0x42, 0x07, 0x81, 0x07, 0x82, 0x07, + 0xbc, 0x07, 0xb9, 0x07, 0xf1, 0x07, 0xf2, 0x07, 0x1f, 0x08, 0x1c, 0x08, + 0x48, 0x08, 0x47, 0x08, 0x64, 0x08, 0x65, 0x08, 0x7f, 0x08, 0x7c, 0x08, + 0x88, 0x08, 0x89, 0x08, 0x8f, 0x08, 0x8c, 0x08, 0x89, 0x08, 0x89, 0x08, + 0x77, 0x08, 0x77, 0x08, 0x5e, 0x08, 0x5d, 0x08, 0x39, 0x08, 0x39, 0x08, + 0x0d, 0x08, 0x0b, 0x08, 0xd5, 0x07, 0xd5, 0x07, 0x98, 0x07, 0x96, 0x07, + 0x51, 0x07, 0x51, 0x07, 0x03, 0x07, 0x02, 0x07, 0xae, 0x06, 0xae, 0x06, + 0x59, 0x06, 0x58, 0x06, 0xfb, 0x05, 0xfb, 0x05, 0xa0, 0x05, 0x9e, 0x05, + 0x3d, 0x05, 0x3f, 0x05, 0xe0, 0x04, 0xde, 0x04, 0x82, 0x04, 0x81, 0x04, + 0x22, 0x04, 0x23, 0x04, 0xcb, 0x03, 0xca, 0x03, 0x71, 0x03, 0x72, 0x03, + 0x25, 0x03, 0x21, 0x03, 0xd5, 0x02, 0xd7, 0x02, 0x91, 0x02, 0x8f, 0x02, + 0x53, 0x02, 0x54, 0x02, 0x19, 0x02, 0x18, 0x02, 0xea, 0x01, 0xe9, 0x01, + 0xbe, 0x01, 0xbd, 0x01, 0x9c, 0x01, 0x9c, 0x01, 0x7f, 0x01, 0x7f, 0x01, + 0x69, 0x01, 0x68, 0x01, 0x5a, 0x01, 0x5a, 0x01, 0x4d, 0x01, 0x4d, 0x01, + 0x48, 0x01, 0x48, 0x01, 0x47, 0x01, 0x46, 0x01, 0x47, 0x01, 0x45, 0x01, + 0x47, 0x01, 0x48, 0x01, 0x4b, 0x01, 0x4b, 0x01, 0x4e, 0x01, 0x4d, 0x01, + 0x4f, 0x01, 0x4f, 0x01, 0x4e, 0x01, 0x4d, 0x01, 0x4a, 0x01, 0x4a, 0x01, + 0x43, 0x01, 0x42, 0x01, 0x36, 0x01, 0x35, 0x01, 0x22, 0x01, 0x22, 0x01, + 0x0b, 0x01, 0x09, 0x01, 0xe8, 0x00, 0xe9, 0x00, 0xc2, 0x00, 0xc2, 0x00, + 0x94, 0x00, 0x94, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x1f, 0x00, 0x20, 0x00, + 0xdf, 0xff, 0xde, 0xff, 0x90, 0xff, 0x91, 0xff, 0x43, 0xff, 0x41, 0xff, + 0xe9, 0xfe, 0xeb, 0xfe, 0x91, 0xfe, 0x8f, 0xfe, 0x2e, 0xfe, 0x30, 0xfe, + 0xcc, 0xfd, 0xcd, 0xfd, 0x6a, 0xfd, 0x69, 0xfd, 0x01, 0xfd, 0x02, 0xfd, + 0x9d, 0xfc, 0x9b, 0xfc, 0x35, 0xfc, 0x35, 0xfc, 0xd2, 0xfb, 0xd0, 0xfb, + 0x70, 0xfb, 0x6f, 0xfb, 0x10, 0xfb, 0x11, 0xfb, 0xb8, 0xfa, 0xb6, 0xfa, + 0x64, 0xfa, 0x63, 0xfa, 0x15, 0xfa, 0x15, 0xfa, 0xd0, 0xf9, 0xce, 0xf9, + 0x90, 0xf9, 0x90, 0xf9, 0x5a, 0xf9, 0x59, 0xf9, 0x2c, 0xf9, 0x2c, 0xf9, + 0x07, 0xf9, 0x06, 0xf9, 0xea, 0xf8, 0xea, 0xf8, 0xd9, 0xf8, 0xd7, 0xf8, + 0xce, 0xf8, 0xcc, 0xf8, 0xca, 0xf8, 0xcb, 0xf8, 0xd3, 0xf8, 0xd1, 0xf8, + 0xdf, 0xf8, 0xde, 0xf8, 0xf3, 0xf8, 0xf3, 0xf8, 0x0c, 0xf9, 0x09, 0xf9, + 0x2b, 0xf9, 0x2d, 0xf9, 0x4f, 0xf9, 0x4d, 0xf9, 0x75, 0xf9, 0x74, 0xf9, + 0x9e, 0xf9, 0x9e, 0xf9, 0xc8, 0xf9, 0xc7, 0xf9, 0xf2, 0xf9, 0xf2, 0xf9, + 0x1c, 0xfa, 0x1b, 0xfa, 0x45, 0xfa, 0x43, 0xfa, 0x67, 0xfa, 0x68, 0xfa, + 0x8d, 0xfa, 0x8b, 0xfa, 0xa9, 0xfa, 0xaa, 0xfa, 0xc4, 0xfa, 0xc1, 0xfa, + 0xd7, 0xfa, 0xd8, 0xfa, 0xe7, 0xfa, 0xe4, 0xfa, 0xef, 0xfa, 0xf1, 0xfa, + 0xf5, 0xfa, 0xf2, 0xfa, 0xf3, 0xfa, 0xf4, 0xfa, 0xed, 0xfa, 0xec, 0xfa, + 0xe3, 0xfa, 0xe3, 0xfa, 0xd3, 0xfa, 0xd1, 0xfa, 0xbf, 0xfa, 0xc0, 0xfa, + 0xab, 0xfa, 0xaa, 0xfa, 0x93, 0xfa, 0x94, 0xfa, 0x7b, 0xfa, 0x79, 0xfa, + 0x62, 0xfa, 0x63, 0xfa, 0x4a, 0xfa, 0x49, 0xfa, 0x32, 0xfa, 0x32, 0xfa, + 0x23, 0xfa, 0x22, 0xfa, 0x10, 0xfa, 0x10, 0xfa, 0x09, 0xfa, 0x0a, 0xfa, + 0x01, 0xfa, 0x01, 0xfa, 0x04, 0xfa, 0x03, 0xfa, 0x0f, 0xfa, 0x0f, 0xfa, + 0x1e, 0xfa, 0x1c, 0xfa, 0x38, 0xfa, 0x3a, 0xfa, 0x58, 0xfa, 0x57, 0xfa, + 0x84, 0xfa, 0x84, 0xfa, 0xb6, 0xfa, 0xb6, 0xfa, 0xf1, 0xfa, 0xef, 0xfa, + 0x35, 0xfb, 0x35, 0xfb, 0x80, 0xfb, 0x81, 0xfb, 0xd4, 0xfb, 0xd2, 0xfb, + 0x2d, 0xfc, 0x2c, 0xfc, 0x8d, 0xfc, 0x8b, 0xfc, 0xf1, 0xfc, 0xf0, 0xfc, + 0x59, 0xfd, 0x59, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0x33, 0xfe, 0x31, 0xfe, + 0xa1, 0xfe, 0xa1, 0xfe, 0x0f, 0xff, 0x0f, 0xff, 0x7c, 0xff, 0x79, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0x4a, 0x00, 0x48, 0x00, 0xac, 0x00, 0xab, 0x00, + 0x09, 0x01, 0x07, 0x01, 0x5c, 0x01, 0x5d, 0x01, 0xac, 0x01, 0xab, 0x01, + 0xf5, 0x01, 0xf2, 0x01, 0x33, 0x02, 0x34, 0x02, 0x6c, 0x02, 0x6a, 0x02, + 0x9d, 0x02, 0x9b, 0x02, 0xc3, 0x02, 0xc2, 0x02, 0xe2, 0x02, 0xe1, 0x02, + 0xfd, 0x02, 0xfa, 0x02, 0x0b, 0x03, 0x0b, 0x03, 0x19, 0x03, 0x17, 0x03, + 0x1b, 0x03, 0x1b, 0x03, 0x1d, 0x03, 0x19, 0x03, 0x14, 0x03, 0x16, 0x03, + 0x0f, 0x03, 0x0c, 0x03, 0x00, 0x03, 0x01, 0x03, 0xf4, 0x02, 0xf5, 0x02, + 0xe8, 0x02, 0xe5, 0x02, 0xdd, 0x02, 0xdc, 0x02, 0xd2, 0x02, 0xd0, 0x02, + 0xca, 0x02, 0xc8, 0x02, 0xc8, 0x02, 0xc6, 0x02, 0xc8, 0x02, 0xc8, 0x02, + 0xcf, 0x02, 0xcb, 0x02, 0xda, 0x02, 0xdc, 0x02, 0xef, 0x02, 0xec, 0x02, + 0x09, 0x03, 0x07, 0x03, 0x28, 0x03, 0x28, 0x03, 0x52, 0x03, 0x50, 0x03, + 0x7f, 0x03, 0x80, 0x03, 0xb5, 0x03, 0xb3, 0x03, 0xf0, 0x03, 0xf0, 0x03, + 0x31, 0x04, 0x30, 0x04, 0x77, 0x04, 0x76, 0x04, 0xc1, 0x04, 0xc1, 0x04, + 0x0e, 0x05, 0x0d, 0x05, 0x5f, 0x05, 0x5e, 0x05, 0xb1, 0x05, 0xb0, 0x05, + 0x02, 0x06, 0x02, 0x06, 0x55, 0x06, 0x54, 0x06, 0xa4, 0x06, 0xa3, 0x06, + 0xf1, 0x06, 0xf2, 0x06, 0x38, 0x07, 0x36, 0x07, 0x7c, 0x07, 0x7d, 0x07, + 0xb8, 0x07, 0xb5, 0x07, 0xef, 0x07, 0xef, 0x07, 0x1a, 0x08, 0x19, 0x08, + 0x3e, 0x08, 0x3e, 0x08, 0x59, 0x08, 0x58, 0x08, 0x6a, 0x08, 0x6a, 0x08, + 0x6f, 0x08, 0x6d, 0x08, 0x6b, 0x08, 0x6a, 0x08, 0x5a, 0x08, 0x5a, 0x08, + 0x41, 0x08, 0x41, 0x08, 0x1e, 0x08, 0x1d, 0x08, 0xf0, 0x07, 0xef, 0x07, + 0xbb, 0x07, 0xba, 0x07, 0x7a, 0x07, 0x7a, 0x07, 0x34, 0x07, 0x32, 0x07, + 0xe7, 0x06, 0xe7, 0x06, 0x93, 0x06, 0x92, 0x06, 0x3c, 0x06, 0x3d, 0x06, + 0xe5, 0x05, 0xe2, 0x05, 0x87, 0x05, 0x88, 0x05, 0x2d, 0x05, 0x2c, 0x05, + 0xcf, 0x04, 0xcf, 0x04, 0x77, 0x04, 0x78, 0x04, 0x20, 0x04, 0x1f, 0x04, + 0xcd, 0x03, 0xcc, 0x03, 0x7d, 0x03, 0x7e, 0x03, 0x37, 0x03, 0x36, 0x03, + 0xf1, 0x02, 0xf1, 0x02, 0xb7, 0x02, 0xb7, 0x02, 0x80, 0x02, 0x80, 0x02, + 0x52, 0x02, 0x52, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0x07, 0x02, 0x09, 0x02, + 0xf1, 0x01, 0xee, 0x01, 0xd9, 0x01, 0xdb, 0x01, 0xcd, 0x01, 0xcd, 0x01, + 0xc1, 0x01, 0xbf, 0x01, 0xbc, 0x01, 0xbf, 0x01, 0xbd, 0x01, 0xba, 0x01, + 0xb9, 0x01, 0xba, 0x01, 0xbc, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbc, 0x01, + 0xbf, 0x01, 0xbe, 0x01, 0xbd, 0x01, 0xbc, 0x01, 0xb9, 0x01, 0xb8, 0x01, + 0xb3, 0x01, 0xb1, 0x01, 0xa4, 0x01, 0xa4, 0x01, 0x93, 0x01, 0x91, 0x01, + 0x79, 0x01, 0x79, 0x01, 0x5a, 0x01, 0x58, 0x01, 0x32, 0x01, 0x31, 0x01, + 0x04, 0x01, 0x01, 0x01, 0xcb, 0x00, 0xcd, 0x00, 0x91, 0x00, 0x8d, 0x00, + 0x4a, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xae, 0xff, 0xad, 0xff, + 0x55, 0xff, 0x55, 0xff, 0xfa, 0xfe, 0xf7, 0xfe, 0x97, 0xfe, 0x96, 0xfe, + 0x34, 0xfe, 0x32, 0xfe, 0xcb, 0xfd, 0xca, 0xfd, 0x64, 0xfd, 0x65, 0xfd, + 0xfd, 0xfc, 0xf9, 0xfc, 0x92, 0xfc, 0x94, 0xfc, 0x31, 0xfc, 0x2d, 0xfc, + 0xca, 0xfb, 0xcc, 0xfb, 0x71, 0xfb, 0x6e, 0xfb, 0x13, 0xfb, 0x14, 0xfb, + 0xc2, 0xfa, 0xc0, 0xfa, 0x76, 0xfa, 0x77, 0xfa, 0x31, 0xfa, 0x30, 0xfa, + 0xf7, 0xf9, 0xf7, 0xf9, 0xc2, 0xf9, 0xc1, 0xf9, 0x99, 0xf9, 0x98, 0xf9, + 0x7a, 0xf9, 0x78, 0xf9, 0x61, 0xf9, 0x61, 0xf9, 0x55, 0xf9, 0x52, 0xf9, + 0x4f, 0xf9, 0x4e, 0xf9, 0x52, 0xf9, 0x52, 0xf9, 0x60, 0xf9, 0x5e, 0xf9, + 0x72, 0xf9, 0x70, 0xf9, 0x8c, 0xf9, 0x8d, 0xf9, 0xaf, 0xf9, 0xab, 0xf9, + 0xd2, 0xf9, 0xd2, 0xf9, 0xfc, 0xf9, 0xfa, 0xf9, 0x28, 0xfa, 0x25, 0xfa, + 0x54, 0xfa, 0x52, 0xfa, 0x82, 0xfa, 0x80, 0xfa, 0xae, 0xfa, 0xad, 0xfa, + 0xd9, 0xfa, 0xd6, 0xfa, 0x01, 0xfb, 0xfe, 0xfa, 0x22, 0xfb, 0x23, 0xfb, + 0x46, 0xfb, 0x40, 0xfb, 0x5b, 0xfb, 0x5d, 0xfb, 0x70, 0xfb, 0x6d, 0xfb, + 0x7d, 0xfb, 0x7c, 0xfb, 0x82, 0xfb, 0x81, 0xfb, 0x81, 0xfb, 0x80, 0xfb, + 0x7a, 0xfb, 0x78, 0xfb, 0x6a, 0xfb, 0x6a, 0xfb, 0x55, 0xfb, 0x54, 0xfb, + 0x38, 0xfb, 0x38, 0xfb, 0x18, 0xfb, 0x17, 0xfb, 0xf2, 0xfa, 0xf0, 0xfa, + 0xc8, 0xfa, 0xc8, 0xfa, 0x9c, 0xfa, 0x9a, 0xfa, 0x6d, 0xfa, 0x6d, 0xfa, + 0x40, 0xfa, 0x3e, 0xfa, 0x11, 0xfa, 0x11, 0xfa, 0xe6, 0xf9, 0xe4, 0xf9, + 0xbd, 0xf9, 0xbc, 0xf9, 0x98, 0xf9, 0x97, 0xf9, 0x7c, 0xf9, 0x7b, 0xf9, + 0x61, 0xf9, 0x60, 0xf9, 0x52, 0xf9, 0x51, 0xf9, 0x49, 0xf9, 0x47, 0xf9, + 0x49, 0xf9, 0x48, 0xf9, 0x56, 0xf9, 0x56, 0xf9, 0x68, 0xf9, 0x67, 0xf9, + 0x88, 0xf9, 0x88, 0xf9, 0xb2, 0xf9, 0xb1, 0xf9, 0xe5, 0xf9, 0xe5, 0xf9, + 0x23, 0xfa, 0x23, 0xfa, 0x6b, 0xfa, 0x6c, 0xfa, 0xbe, 0xfa, 0xbe, 0xfa, + 0x19, 0xfb, 0x17, 0xfb, 0x77, 0xfb, 0x78, 0xfb, 0xe0, 0xfb, 0xde, 0xfb, + 0x4c, 0xfc, 0x4d, 0xfc, 0xc2, 0xfc, 0xbf, 0xfc, 0x30, 0xfd, 0x32, 0xfd, + 0xae, 0xfd, 0xab, 0xfd, 0x20, 0xfe, 0x21, 0xfe, 0x99, 0xfe, 0x98, 0xfe, + 0x0d, 0xff, 0x0c, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0xed, 0xff, 0xec, 0xff, + 0x51, 0x00, 0x52, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0x0e, 0x01, 0x0c, 0x01, + 0x61, 0x01, 0x61, 0x01, 0xac, 0x01, 0xab, 0x01, 0xed, 0x01, 0xeb, 0x01, + 0x24, 0x02, 0x25, 0x02, 0x56, 0x02, 0x56, 0x02, 0x7b, 0x02, 0x7b, 0x02, + 0x9c, 0x02, 0x9b, 0x02, 0xb1, 0x02, 0xaf, 0x02, 0xc2, 0x02, 0xc0, 0x02, + 0xc7, 0x02, 0xc8, 0x02, 0xca, 0x02, 0xc9, 0x02, 0xc8, 0x02, 0xc8, 0x02, + 0xbf, 0x02, 0xbe, 0x02, 0xb4, 0x02, 0xb4, 0x02, 0xaa, 0x02, 0xa7, 0x02, + 0x99, 0x02, 0x9a, 0x02, 0x8f, 0x02, 0x8e, 0x02, 0x81, 0x02, 0x82, 0x02, + 0x79, 0x02, 0x78, 0x02, 0x76, 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, + 0x7a, 0x02, 0x77, 0x02, 0x82, 0x02, 0x82, 0x02, 0x95, 0x02, 0x93, 0x02, + 0xab, 0x02, 0xaa, 0x02, 0xca, 0x02, 0xc9, 0x02, 0xef, 0x02, 0xed, 0x02, + 0x1a, 0x03, 0x19, 0x03, 0x4e, 0x03, 0x4c, 0x03, 0x85, 0x03, 0x83, 0x03, + 0xc6, 0x03, 0xc6, 0x03, 0x09, 0x04, 0x07, 0x04, 0x53, 0x04, 0x52, 0x04, + 0xa0, 0x04, 0x9e, 0x04, 0xf0, 0x04, 0xed, 0x04, 0x3e, 0x05, 0x3f, 0x05, + 0x93, 0x05, 0x91, 0x05, 0xe5, 0x05, 0xe3, 0x05, 0x32, 0x06, 0x30, 0x06, + 0x80, 0x06, 0x7e, 0x06, 0xc5, 0x06, 0xc5, 0x06, 0x0d, 0x07, 0x0c, 0x07, + 0x47, 0x07, 0x45, 0x07, 0x7e, 0x07, 0x7d, 0x07, 0xab, 0x07, 0xab, 0x07, + 0xd0, 0x07, 0xce, 0x07, 0xec, 0x07, 0xec, 0x07, 0xfd, 0x07, 0xfc, 0x07, + 0x07, 0x08, 0x06, 0x08, 0x02, 0x08, 0x03, 0x08, 0xfa, 0x07, 0xf7, 0x07, + 0xdf, 0x07, 0xe2, 0x07, 0xc2, 0x07, 0xbf, 0x07, 0x99, 0x07, 0x9b, 0x07, + 0x66, 0x07, 0x64, 0x07, 0x2d, 0x07, 0x2d, 0x07, 0xeb, 0x06, 0xea, 0x06, + 0xa5, 0x06, 0xa4, 0x06, 0x5b, 0x06, 0x5c, 0x06, 0x0c, 0x06, 0x0a, 0x06, + 0xbc, 0x05, 0xbc, 0x05, 0x69, 0x05, 0x68, 0x05, 0x17, 0x05, 0x18, 0x05, + 0xc9, 0x04, 0xc9, 0x04, 0x7b, 0x04, 0x7a, 0x04, 0x31, 0x04, 0x2f, 0x04, + 0xea, 0x03, 0xeb, 0x03, 0xac, 0x03, 0xa9, 0x03, 0x70, 0x03, 0x6f, 0x03, + 0x3c, 0x03, 0x3d, 0x03, 0x0f, 0x03, 0x0e, 0x03, 0xea, 0x02, 0xea, 0x02, + 0xca, 0x02, 0xca, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0xa5, 0x02, 0xa4, 0x02, + 0x9b, 0x02, 0x99, 0x02, 0x97, 0x02, 0x98, 0x02, 0x99, 0x02, 0x97, 0x02, + 0x9c, 0x02, 0x9c, 0x02, 0xa6, 0x02, 0xa6, 0x02, 0xb1, 0x02, 0xb2, 0x02, + 0xbf, 0x02, 0xbe, 0x02, 0xcf, 0x02, 0xcf, 0x02, 0xd8, 0x02, 0xd8, 0x02, + 0xe6, 0x02, 0xe6, 0x02, 0xec, 0x02, 0xec, 0x02, 0xf1, 0x02, 0xef, 0x02, + 0xef, 0x02, 0xf0, 0x02, 0xe5, 0x02, 0xe6, 0x02, 0xd8, 0x02, 0xd7, 0x02, + 0xbe, 0x02, 0xbe, 0x02, 0xa1, 0x02, 0xa0, 0x02, 0x76, 0x02, 0x76, 0x02, + 0x47, 0x02, 0x44, 0x02, 0x0d, 0x02, 0x0c, 0x02, 0xc6, 0x01, 0xc5, 0x01, + 0x7b, 0x01, 0x7b, 0x01, 0x27, 0x01, 0x27, 0x01, 0xcc, 0x00, 0xca, 0x00, + 0x6b, 0x00, 0x6a, 0x00, 0x03, 0x00, 0x01, 0x00, 0x95, 0xff, 0x95, 0xff, + 0x26, 0xff, 0x24, 0xff, 0xb0, 0xfe, 0xaf, 0xfe, 0x3d, 0xfe, 0x3b, 0xfe, + 0xc4, 0xfd, 0xc5, 0xfd, 0x4f, 0xfd, 0x4c, 0xfd, 0xdc, 0xfc, 0xdd, 0xfc, + 0x6c, 0xfc, 0x68, 0xfc, 0xff, 0xfb, 0xfe, 0xfb, 0x97, 0xfb, 0x97, 0xfb, + 0x37, 0xfb, 0x36, 0xfb, 0xdf, 0xfa, 0xdd, 0xfa, 0x8c, 0xfa, 0x8c, 0xfa, + 0x46, 0xfa, 0x46, 0xfa, 0x08, 0xfa, 0x05, 0xfa, 0xd2, 0xf9, 0xd3, 0xf9, + 0xaa, 0xf9, 0xa7, 0xf9, 0x88, 0xf9, 0x89, 0xf9, 0x75, 0xf9, 0x72, 0xf9, + 0x68, 0xf9, 0x65, 0xf9, 0x67, 0xf9, 0x66, 0xf9, 0x6c, 0xf9, 0x6a, 0xf9, + 0x7e, 0xf9, 0x7d, 0xf9, 0x91, 0xf9, 0x92, 0xf9, 0xb4, 0xf9, 0xb1, 0xf9, + 0xd4, 0xf9, 0xd4, 0xf9, 0xff, 0xf9, 0xfd, 0xf9, 0x2a, 0xfa, 0x29, 0xfa, + 0x59, 0xfa, 0x57, 0xfa, 0x89, 0xfa, 0x89, 0xfa, 0xb9, 0xfa, 0xb6, 0xfa, + 0xe7, 0xfa, 0xe7, 0xfa, 0x13, 0xfb, 0x10, 0xfb, 0x3a, 0xfb, 0x3a, 0xfb, + 0x60, 0xfb, 0x5e, 0xfb, 0x7f, 0xfb, 0x7d, 0xfb, 0x96, 0xfb, 0x96, 0xfb, + 0xaa, 0xfb, 0xa8, 0xfb, 0xb4, 0xfb, 0xb4, 0xfb, 0xba, 0xfb, 0xb8, 0xfb, + 0xb5, 0xfb, 0xb4, 0xfb, 0xab, 0xfb, 0xaa, 0xfb, 0x97, 0xfb, 0x96, 0xfb, + 0x80, 0xfb, 0x80, 0xfb, 0x63, 0xfb, 0x5f, 0xfb, 0x3d, 0xfb, 0x3d, 0xfb, + 0x15, 0xfb, 0x15, 0xfb, 0xe8, 0xfa, 0xe5, 0xfa, 0xbc, 0xfa, 0xbb, 0xfa, + 0x8a, 0xfa, 0x88, 0xfa, 0x5b, 0xfa, 0x5a, 0xfa, 0x29, 0xfa, 0x29, 0xfa, + 0xfe, 0xf9, 0xfb, 0xf9, 0xd2, 0xf9, 0xd2, 0xf9, 0xae, 0xf9, 0xac, 0xf9, + 0x8f, 0xf9, 0x8d, 0xf9, 0x73, 0xf9, 0x74, 0xf9, 0x62, 0xf9, 0x60, 0xf9, + 0x58, 0xf9, 0x56, 0xf9, 0x57, 0xf9, 0x57, 0xf9, 0x60, 0xf9, 0x5e, 0xf9, + 0x74, 0xf9, 0x73, 0xf9, 0x8e, 0xf9, 0x8e, 0xf9, 0xb9, 0xf9, 0xb5, 0xf9, + 0xe6, 0xf9, 0xe8, 0xf9, 0x22, 0xfa, 0x1e, 0xfa, 0x65, 0xfa, 0x66, 0xfa, + 0xb1, 0xfa, 0xae, 0xfa, 0x04, 0xfb, 0x03, 0xfb, 0x60, 0xfb, 0x5e, 0xfb, + 0xbd, 0xfb, 0xbd, 0xfb, 0x23, 0xfc, 0x20, 0xfc, 0x8d, 0xfc, 0x8b, 0xfc, + 0xf4, 0xfc, 0xf5, 0xfc, 0x64, 0xfd, 0x62, 0xfd, 0xcc, 0xfd, 0xcb, 0xfd, + 0x36, 0xfe, 0x35, 0xfe, 0x9f, 0xfe, 0x9d, 0xfe, 0x00, 0xff, 0xff, 0xfe, + 0x62, 0xff, 0x60, 0xff, 0xba, 0xff, 0xba, 0xff, 0x0d, 0x00, 0x0b, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x9f, 0x00, 0x9d, 0x00, 0xdc, 0x00, 0xdc, 0x00, + 0x12, 0x01, 0x12, 0x01, 0x3e, 0x01, 0x3c, 0x01, 0x63, 0x01, 0x64, 0x01, + 0x81, 0x01, 0x80, 0x01, 0x99, 0x01, 0x97, 0x01, 0xa5, 0x01, 0xa6, 0x01, + 0xb2, 0x01, 0xaf, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xb3, 0x01, 0xb1, 0x01, + 0xaf, 0x01, 0xae, 0x01, 0xaa, 0x01, 0xa8, 0x01, 0xa0, 0x01, 0xa0, 0x01, + 0x9a, 0x01, 0x99, 0x01, 0x93, 0x01, 0x93, 0x01, 0x8d, 0x01, 0x8e, 0x01, + 0x8e, 0x01, 0x8b, 0x01, 0x8f, 0x01, 0x92, 0x01, 0x99, 0x01, 0x97, 0x01, + 0xa6, 0x01, 0xa6, 0x01, 0xbb, 0x01, 0xbc, 0x01, 0xd5, 0x01, 0xd3, 0x01, + 0xf5, 0x01, 0xf7, 0x01, 0x21, 0x02, 0x1e, 0x02, 0x4f, 0x02, 0x4f, 0x02, + 0x86, 0x02, 0x85, 0x02, 0xc3, 0x02, 0xc2, 0x02, 0x09, 0x03, 0x07, 0x03, + 0x53, 0x03, 0x53, 0x03, 0xa2, 0x03, 0xa1, 0x03, 0xf7, 0x03, 0xf7, 0x03, + 0x4f, 0x04, 0x4d, 0x04, 0xa9, 0x04, 0xa9, 0x04, 0x03, 0x05, 0x03, 0x05, + 0x60, 0x05, 0x5f, 0x05, 0xbb, 0x05, 0xba, 0x05, 0x12, 0x06, 0x13, 0x06, + 0x68, 0x06, 0x69, 0x06, 0xb8, 0x06, 0xb9, 0x06, 0x03, 0x07, 0x03, 0x07, + 0x49, 0x07, 0x49, 0x07, 0x85, 0x07, 0x85, 0x07, 0xb8, 0x07, 0xb8, 0x07, + 0xe3, 0x07, 0xe3, 0x07, 0x03, 0x08, 0x02, 0x08, 0x18, 0x08, 0x19, 0x08, + 0x23, 0x08, 0x22, 0x08, 0x21, 0x08, 0x21, 0x08, 0x17, 0x08, 0x15, 0x08, + 0x00, 0x08, 0x01, 0x08, 0xe2, 0x07, 0xe0, 0x07, 0xb6, 0x07, 0xb5, 0x07, + 0x82, 0x07, 0x81, 0x07, 0x46, 0x07, 0x46, 0x07, 0x01, 0x07, 0x02, 0x07, + 0xba, 0x06, 0xb8, 0x06, 0x67, 0x06, 0x68, 0x06, 0x16, 0x06, 0x15, 0x06, + 0xbe, 0x05, 0xbf, 0x05, 0x68, 0x05, 0x67, 0x05, 0x11, 0x05, 0x0f, 0x05, + 0xb9, 0x04, 0xba, 0x04, 0x68, 0x04, 0x67, 0x04, 0x18, 0x04, 0x16, 0x04, + 0xce, 0x03, 0xce, 0x03, 0x89, 0x03, 0x87, 0x03, 0x4b, 0x03, 0x4b, 0x03, + 0x14, 0x03, 0x13, 0x03, 0xe6, 0x02, 0xe5, 0x02, 0xc0, 0x02, 0xbf, 0x02, + 0xa1, 0x02, 0x9f, 0x02, 0x8d, 0x02, 0x8c, 0x02, 0x7b, 0x02, 0x7c, 0x02, + 0x78, 0x02, 0x77, 0x02, 0x79, 0x02, 0x77, 0x02, 0x7e, 0x02, 0x7f, 0x02, + 0x8f, 0x02, 0x8d, 0x02, 0xa2, 0x02, 0xa0, 0x02, 0xb4, 0x02, 0xb5, 0x02, + 0xd0, 0x02, 0xce, 0x02, 0xe7, 0x02, 0xe8, 0x02, 0x03, 0x03, 0x01, 0x03, + 0x1a, 0x03, 0x1a, 0x03, 0x32, 0x03, 0x31, 0x03, 0x44, 0x03, 0x44, 0x03, + 0x52, 0x03, 0x4f, 0x03, 0x5a, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x59, 0x03, + 0x54, 0x03, 0x54, 0x03, 0x46, 0x03, 0x46, 0x03, 0x2d, 0x03, 0x2c, 0x03, + 0x0d, 0x03, 0x0b, 0x03, 0xe1, 0x02, 0xe1, 0x02, 0xac, 0x02, 0xab, 0x02, + 0x6e, 0x02, 0x6c, 0x02, 0x24, 0x02, 0x24, 0x02, 0xd2, 0x01, 0xd1, 0x01, + 0x7a, 0x01, 0x78, 0x01, 0x19, 0x01, 0x18, 0x01, 0xb1, 0x00, 0xb0, 0x00, + 0x46, 0x00, 0x46, 0x00, 0xd2, 0xff, 0xd1, 0xff, 0x61, 0xff, 0x5e, 0xff, + 0xe9, 0xfe, 0xe9, 0xfe, 0x72, 0xfe, 0x71, 0xfe, 0xfe, 0xfd, 0xfc, 0xfd, + 0x86, 0xfd, 0x87, 0xfd, 0x19, 0xfd, 0x16, 0xfd, 0xab, 0xfc, 0xab, 0xfc, + 0x43, 0xfc, 0x41, 0xfc, 0xe3, 0xfb, 0xe3, 0xfb, 0x8a, 0xfb, 0x89, 0xfb, + 0x38, 0xfb, 0x38, 0xfb, 0xf1, 0xfa, 0xf2, 0xfa, 0xb2, 0xfa, 0xb1, 0xfa, + 0x7e, 0xfa, 0x7f, 0xfa, 0x53, 0xfa, 0x50, 0xfa, 0x31, 0xfa, 0x34, 0xfa, + 0x1d, 0xfa, 0x1c, 0xfa, 0x0f, 0xfa, 0x0e, 0xfa, 0x0c, 0xfa, 0x0c, 0xfa, + 0x11, 0xfa, 0x10, 0xfa, 0x1e, 0xfa, 0x1e, 0xfa, 0x31, 0xfa, 0x30, 0xfa, + 0x4c, 0xfa, 0x4c, 0xfa, 0x6c, 0xfa, 0x6b, 0xfa, 0x8e, 0xfa, 0x8d, 0xfa, + 0xb4, 0xfa, 0xb2, 0xfa, 0xd9, 0xfa, 0xda, 0xfa, 0x03, 0xfb, 0x00, 0xfb, + 0x27, 0xfb, 0x29, 0xfb, 0x4f, 0xfb, 0x4d, 0xfb, 0x6e, 0xfb, 0x6f, 0xfb, + 0x8c, 0xfb, 0x8a, 0xfb, 0xa6, 0xfb, 0xa6, 0xfb, 0xb7, 0xfb, 0xb5, 0xfb, + 0xc5, 0xfb, 0xc4, 0xfb, 0xca, 0xfb, 0xc9, 0xfb, 0xc9, 0xfb, 0xc8, 0xfb, + 0xc1, 0xfb, 0xc1, 0xfb, 0xb4, 0xfb, 0xb1, 0xfb, 0x9b, 0xfb, 0x9c, 0xfb, + 0x80, 0xfb, 0x7f, 0xfb, 0x5d, 0xfb, 0x5c, 0xfb, 0x34, 0xfb, 0x33, 0xfb, + 0x07, 0xfb, 0x07, 0xfb, 0xd8, 0xfa, 0xd6, 0xfa, 0xa3, 0xfa, 0xa3, 0xfa, + 0x71, 0xfa, 0x70, 0xfa, 0x3a, 0xfa, 0x3a, 0xfa, 0x07, 0xfa, 0x07, 0xfa, + 0xd8, 0xf9, 0xd6, 0xf9, 0xa8, 0xf9, 0xa9, 0xf9, 0x82, 0xf9, 0x7e, 0xf9, + 0x5e, 0xf9, 0x5e, 0xf9, 0x42, 0xf9, 0x41, 0xf9, 0x30, 0xf9, 0x2f, 0xf9, + 0x25, 0xf9, 0x25, 0xf9, 0x23, 0xf9, 0x22, 0xf9, 0x2a, 0xf9, 0x2b, 0xf9, + 0x40, 0xf9, 0x3f, 0xf9, 0x5c, 0xf9, 0x5b, 0xf9, 0x84, 0xf9, 0x85, 0xf9, + 0xb7, 0xf9, 0xb7, 0xf9, 0xf3, 0xf9, 0xf3, 0xf9, 0x39, 0xfa, 0x39, 0xfa, + 0x87, 0xfa, 0x86, 0xfa, 0xde, 0xfa, 0xde, 0xfa, 0x3c, 0xfb, 0x3b, 0xfb, + 0x9f, 0xfb, 0xa1, 0xfb, 0x0a, 0xfc, 0x08, 0xfc, 0x73, 0xfc, 0x74, 0xfc, + 0xe4, 0xfc, 0xe3, 0xfc, 0x51, 0xfd, 0x51, 0xfd, 0xc0, 0xfd, 0xc0, 0xfd, + 0x2c, 0xfe, 0x2b, 0xfe, 0x94, 0xfe, 0x95, 0xfe, 0xfb, 0xfe, 0xfa, 0xfe, + 0x59, 0xff, 0x5a, 0xff, 0xb5, 0xff, 0xb3, 0xff, 0x02, 0x00, 0x04, 0x00, + 0x51, 0x00, 0x50, 0x00, 0x8f, 0x00, 0x92, 0x00, 0xcb, 0x00, 0xc9, 0x00, + 0xfa, 0x00, 0xfa, 0x00, 0x20, 0x01, 0x20, 0x01, 0x3f, 0x01, 0x3d, 0x01, + 0x51, 0x01, 0x50, 0x01, 0x5d, 0x01, 0x5d, 0x01, 0x61, 0x01, 0x60, 0x01, + 0x5d, 0x01, 0x5f, 0x01, 0x55, 0x01, 0x54, 0x01, 0x46, 0x01, 0x46, 0x01, + 0x35, 0x01, 0x35, 0x01, 0x1f, 0x01, 0x1d, 0x01, 0x08, 0x01, 0x0a, 0x01, + 0xef, 0x00, 0xec, 0x00, 0xd9, 0x00, 0xda, 0x00, 0xc2, 0x00, 0xc1, 0x00, + 0xb1, 0x00, 0xb2, 0x00, 0xa5, 0x00, 0xa5, 0x00, 0x9f, 0x00, 0x9f, 0x00, + 0x9e, 0x00, 0x9c, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xb4, 0x00, 0xb3, 0x00, + 0xcb, 0x00, 0xca, 0x00, 0xec, 0x00, 0xeb, 0x00, 0x14, 0x01, 0x14, 0x01, + 0x48, 0x01, 0x46, 0x01, 0x80, 0x01, 0x82, 0x01, 0xc6, 0x01, 0xc3, 0x01, + 0x0d, 0x02, 0x0e, 0x02, 0x61, 0x02, 0x60, 0x02, 0xb9, 0x02, 0xb9, 0x02, + 0x15, 0x03, 0x17, 0x03, 0x7a, 0x03, 0x77, 0x03, 0xdd, 0x03, 0xdd, 0x03, + 0x47, 0x04, 0x46, 0x04, 0xac, 0x04, 0xad, 0x04, 0x16, 0x05, 0x14, 0x05, + 0x7a, 0x05, 0x7b, 0x05, 0xde, 0x05, 0xdd, 0x05, 0x3c, 0x06, 0x3b, 0x06, + 0x92, 0x06, 0x95, 0x06, 0xe6, 0x06, 0xe3, 0x06, 0x2d, 0x07, 0x2e, 0x07, + 0x70, 0x07, 0x6f, 0x07, 0xa4, 0x07, 0xa2, 0x07, 0xd0, 0x07, 0xd1, 0x07, + 0xf1, 0x07, 0xf0, 0x07, 0x05, 0x08, 0x04, 0x08, 0x0f, 0x08, 0x0f, 0x08, + 0x0b, 0x08, 0x08, 0x08, 0xfe, 0x07, 0xff, 0x07, 0xe5, 0x07, 0xe4, 0x07, + 0xc2, 0x07, 0xc2, 0x07, 0x95, 0x07, 0x96, 0x07, 0x5e, 0x07, 0x5c, 0x07, + 0x21, 0x07, 0x21, 0x07, 0xdc, 0x06, 0xda, 0x06, 0x91, 0x06, 0x8f, 0x06, + 0x43, 0x06, 0x42, 0x06, 0xed, 0x05, 0xec, 0x05, 0x9e, 0x05, 0x9e, 0x05, + 0x45, 0x05, 0x44, 0x05, 0xf5, 0x04, 0xf3, 0x04, 0xa3, 0x04, 0xa2, 0x04, + 0x52, 0x04, 0x53, 0x04, 0x0c, 0x04, 0x0a, 0x04, 0xc8, 0x03, 0xc7, 0x03, + 0x8a, 0x03, 0x8a, 0x03, 0x56, 0x03, 0x53, 0x03, 0x26, 0x03, 0x26, 0x03, + 0x01, 0x03, 0xff, 0x02, 0xe2, 0x02, 0xe2, 0x02, 0xce, 0x02, 0xcd, 0x02, + 0xc0, 0x02, 0xbe, 0x02, 0xba, 0x02, 0xb9, 0x02, 0xbb, 0x02, 0xb9, 0x02, + 0xc3, 0x02, 0xc2, 0x02, 0xcf, 0x02, 0xcd, 0x02, 0xe2, 0x02, 0xe2, 0x02, + 0xf5, 0x02, 0xf5, 0x02, 0x0e, 0x03, 0x0c, 0x03, 0x25, 0x03, 0x25, 0x03, + 0x3f, 0x03, 0x3d, 0x03, 0x56, 0x03, 0x55, 0x03, 0x6c, 0x03, 0x6b, 0x03, + 0x7e, 0x03, 0x7b, 0x03, 0x87, 0x03, 0x87, 0x03, 0x8f, 0x03, 0x8e, 0x03, + 0x8f, 0x03, 0x8e, 0x03, 0x87, 0x03, 0x86, 0x03, 0x76, 0x03, 0x75, 0x03, + 0x5a, 0x03, 0x5a, 0x03, 0x36, 0x03, 0x37, 0x03, 0x0b, 0x03, 0x09, 0x03, + 0xd3, 0x02, 0xd3, 0x02, 0x93, 0x02, 0x92, 0x02, 0x49, 0x02, 0x49, 0x02, + 0xf6, 0x01, 0xf6, 0x01, 0x9e, 0x01, 0x9e, 0x01, 0x3c, 0x01, 0x3a, 0x01, + 0xd5, 0x00, 0xd5, 0x00, 0x6a, 0x00, 0x68, 0x00, 0xf9, 0xff, 0xfa, 0xff, + 0x86, 0xff, 0x85, 0xff, 0x14, 0xff, 0x14, 0xff, 0x9f, 0xfe, 0x9e, 0xfe, + 0x2d, 0xfe, 0x2e, 0xfe, 0xc0, 0xfd, 0xbf, 0xfd, 0x52, 0xfd, 0x51, 0xfd, + 0xed, 0xfc, 0xed, 0xfc, 0x8a, 0xfc, 0x8a, 0xfc, 0x32, 0xfc, 0x32, 0xfc, + 0xe2, 0xfb, 0xe2, 0xfb, 0x99, 0xfb, 0x99, 0xfb, 0x5b, 0xfb, 0x5b, 0xfb, + 0x24, 0xfb, 0x23, 0xfb, 0xf9, 0xfa, 0xfa, 0xfa, 0xd8, 0xfa, 0xd7, 0xfa, + 0xc1, 0xfa, 0xc1, 0xfa, 0xb5, 0xfa, 0xb4, 0xfa, 0xb1, 0xfa, 0xb1, 0xfa, + 0xb8, 0xfa, 0xb7, 0xfa, 0xc4, 0xfa, 0xc4, 0xfa, 0xda, 0xfa, 0xda, 0xfa, + 0xf4, 0xfa, 0xf3, 0xfa, 0x16, 0xfb, 0x16, 0xfb, 0x3a, 0xfb, 0x3b, 0xfb, + 0x60, 0xfb, 0x61, 0xfb, 0x8d, 0xfb, 0x8c, 0xfb, 0xb1, 0xfb, 0xb1, 0xfb, + 0xdd, 0xfb, 0xdc, 0xfb, 0x01, 0xfc, 0x01, 0xfc, 0x24, 0xfc, 0x24, 0xfc, + 0x44, 0xfc, 0x44, 0xfc, 0x5c, 0xfc, 0x59, 0xfc, 0x6b, 0xfc, 0x6f, 0xfc, + 0x7a, 0xfc, 0x77, 0xfc, 0x7c, 0xfc, 0x7c, 0xfc, 0x76, 0xfc, 0x76, 0xfc, + 0x6a, 0xfc, 0x68, 0xfc, 0x52, 0xfc, 0x53, 0xfc, 0x35, 0xfc, 0x33, 0xfc, + 0x0f, 0xfc, 0x0f, 0xfc, 0xe0, 0xfb, 0xe0, 0xfb, 0xaf, 0xfb, 0xab, 0xfb, + 0x73, 0xfb, 0x74, 0xfb, 0x35, 0xfb, 0x32, 0xfb, 0xf1, 0xfa, 0xf0, 0xfa, + 0xac, 0xfa, 0xab, 0xfa, 0x65, 0xfa, 0x65, 0xfa, 0x20, 0xfa, 0x1e, 0xfa, + 0xd9, 0xf9, 0xd9, 0xf9, 0x9a, 0xf9, 0x98, 0xf9, 0x59, 0xf9, 0x5a, 0xf9, + 0x24, 0xf9, 0x23, 0xf9, 0xf0, 0xf8, 0xf1, 0xf8, 0xc9, 0xf8, 0xc7, 0xf8, + 0xa7, 0xf8, 0xa8, 0xf8, 0x91, 0xf8, 0x90, 0xf8, 0x87, 0xf8, 0x88, 0xf8, + 0x87, 0xf8, 0x85, 0xf8, 0x94, 0xf8, 0x95, 0xf8, 0xab, 0xf8, 0xa8, 0xf8, + 0xce, 0xf8, 0xd0, 0xf8, 0x00, 0xf9, 0xfd, 0xf8, 0x39, 0xf9, 0x3a, 0xf9, + 0x81, 0xf9, 0x7f, 0xf9, 0xd1, 0xf9, 0xd0, 0xf9, 0x2b, 0xfa, 0x2b, 0xfa, + 0x8b, 0xfa, 0x8a, 0xfa, 0xf6, 0xfa, 0xf3, 0xfa, 0x60, 0xfb, 0x61, 0xfb, + 0xd4, 0xfb, 0xd3, 0xfb, 0x49, 0xfc, 0x49, 0xfc, 0xbf, 0xfc, 0xbe, 0xfc, + 0x36, 0xfd, 0x36, 0xfd, 0xa9, 0xfd, 0xa9, 0xfd, 0x1c, 0xfe, 0x1c, 0xfe, + 0x8a, 0xfe, 0x8a, 0xfe, 0xf2, 0xfe, 0xf2, 0xfe, 0x54, 0xff, 0x52, 0xff, + 0xad, 0xff, 0xad, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x46, 0x00, 0x46, 0x00, + 0x85, 0x00, 0x84, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xe6, 0x00, 0xe5, 0x00, + 0x06, 0x01, 0x06, 0x01, 0x1e, 0x01, 0x1e, 0x01, 0x2c, 0x01, 0x2c, 0x01, + 0x34, 0x01, 0x33, 0x01, 0x2f, 0x01, 0x30, 0x01, 0x29, 0x01, 0x27, 0x01, + 0x1b, 0x01, 0x1a, 0x01, 0x06, 0x01, 0x07, 0x01, 0xf1, 0x00, 0xf2, 0x00, + 0xd7, 0x00, 0xd6, 0x00, 0xc1, 0x00, 0xc1, 0x00, 0xa5, 0x00, 0xa5, 0x00, + 0x90, 0x00, 0x90, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x6e, 0x00, 0x6d, 0x00, + 0x64, 0x00, 0x65, 0x00, 0x61, 0x00, 0x60, 0x00, 0x67, 0x00, 0x68, 0x00, + 0x73, 0x00, 0x72, 0x00, 0x88, 0x00, 0x89, 0x00, 0xa9, 0x00, 0xa7, 0x00, + 0xcb, 0x00, 0xcb, 0x00, 0xfd, 0x00, 0xfe, 0x00, 0x34, 0x01, 0x31, 0x01, + 0x74, 0x01, 0x77, 0x01, 0xbd, 0x01, 0xbd, 0x01, 0x0c, 0x02, 0x0b, 0x02, + 0x64, 0x02, 0x64, 0x02, 0xbb, 0x02, 0xbb, 0x02, 0x1f, 0x03, 0x1f, 0x03, + 0x7d, 0x03, 0x7d, 0x03, 0xe4, 0x03, 0xe3, 0x03, 0x48, 0x04, 0x48, 0x04, + 0xad, 0x04, 0xad, 0x04, 0x12, 0x05, 0x11, 0x05, 0x70, 0x05, 0x70, 0x05, + 0xcd, 0x05, 0xcb, 0x05, 0x20, 0x06, 0x20, 0x06, 0x6d, 0x06, 0x6d, 0x06, + 0xb5, 0x06, 0xb4, 0x06, 0xf1, 0x06, 0xf2, 0x06, 0x26, 0x07, 0x25, 0x07, + 0x4f, 0x07, 0x4e, 0x07, 0x6d, 0x07, 0x6d, 0x07, 0x82, 0x07, 0x81, 0x07, + 0x89, 0x07, 0x89, 0x07, 0x88, 0x07, 0x86, 0x07, 0x79, 0x07, 0x79, 0x07, + 0x61, 0x07, 0x62, 0x07, 0x3f, 0x07, 0x3e, 0x07, 0x14, 0x07, 0x15, 0x07, + 0xe3, 0x06, 0xe2, 0x06, 0xa9, 0x06, 0xaa, 0x06, 0x6b, 0x06, 0x69, 0x06, + 0x27, 0x06, 0x29, 0x06, 0xe0, 0x05, 0xde, 0x05, 0x97, 0x05, 0x98, 0x05, + 0x4c, 0x05, 0x4c, 0x05, 0x06, 0x05, 0x04, 0x05, 0xbe, 0x04, 0xbd, 0x04, + 0x79, 0x04, 0x79, 0x04, 0x3b, 0x04, 0x3c, 0x04, 0x00, 0x04, 0x00, 0x04, + 0xd0, 0x03, 0xce, 0x03, 0xa3, 0x03, 0xa4, 0x03, 0x80, 0x03, 0x7f, 0x03, + 0x65, 0x03, 0x64, 0x03, 0x50, 0x03, 0x4f, 0x03, 0x44, 0x03, 0x44, 0x03, + 0x42, 0x03, 0x3f, 0x03, 0x45, 0x03, 0x44, 0x03, 0x50, 0x03, 0x50, 0x03, + 0x63, 0x03, 0x5f, 0x03, 0x78, 0x03, 0x78, 0x03, 0x96, 0x03, 0x96, 0x03, + 0xb4, 0x03, 0xb2, 0x03, 0xd8, 0x03, 0xd6, 0x03, 0xf7, 0x03, 0xf7, 0x03, + 0x1a, 0x04, 0x1b, 0x04, 0x3b, 0x04, 0x3a, 0x04, 0x57, 0x04, 0x57, 0x04, + 0x71, 0x04, 0x70, 0x04, 0x83, 0x04, 0x83, 0x04, 0x90, 0x04, 0x90, 0x04, + 0x94, 0x04, 0x93, 0x04, 0x90, 0x04, 0x91, 0x04, 0x80, 0x04, 0x81, 0x04, + 0x69, 0x04, 0x68, 0x04, 0x46, 0x04, 0x47, 0x04, 0x17, 0x04, 0x16, 0x04, + 0xe0, 0x03, 0xdf, 0x03, 0x9b, 0x03, 0x9c, 0x03, 0x4f, 0x03, 0x4e, 0x03, + 0xf7, 0x02, 0xf6, 0x02, 0x97, 0x02, 0x96, 0x02, 0x2e, 0x02, 0x2e, 0x02, + 0xc0, 0x01, 0xbf, 0x01, 0x49, 0x01, 0x4a, 0x01, 0xcf, 0x00, 0xcd, 0x00, + 0x52, 0x00, 0x54, 0x00, 0xd4, 0xff, 0xd2, 0xff, 0x51, 0xff, 0x52, 0xff, + 0xd6, 0xfe, 0xd6, 0xfe, 0x59, 0xfe, 0x57, 0xfe, 0xe0, 0xfd, 0xe1, 0xfd, + 0x6c, 0xfd, 0x6d, 0xfd, 0x00, 0xfd, 0xff, 0xfc, 0x9a, 0xfc, 0x9c, 0xfc, + 0x3e, 0xfc, 0x3b, 0xfc, 0xe7, 0xfb, 0xeb, 0xfb, 0xa1, 0xfb, 0xa0, 0xfb, + 0x63, 0xfb, 0x61, 0xfb, 0x2d, 0xfb, 0x31, 0xfb, 0x08, 0xfb, 0x04, 0xfb, + 0xe7, 0xfa, 0xe9, 0xfa, 0xd7, 0xfa, 0xd6, 0xfa, 0xcd, 0xfa, 0xcd, 0xfa, + 0xd0, 0xfa, 0xd1, 0xfa, 0xdc, 0xfa, 0xda, 0xfa, 0xef, 0xfa, 0xf0, 0xfa, + 0x0c, 0xfb, 0x0c, 0xfb, 0x2c, 0xfb, 0x2c, 0xfb, 0x55, 0xfb, 0x56, 0xfb, + 0x7f, 0xfb, 0x7f, 0xfb, 0xaf, 0xfb, 0xae, 0xfb, 0xdd, 0xfb, 0xde, 0xfb, + 0x0d, 0xfc, 0x0c, 0xfc, 0x3a, 0xfc, 0x3b, 0xfc, 0x65, 0xfc, 0x66, 0xfc, + 0x8b, 0xfc, 0x8a, 0xfc, 0xad, 0xfc, 0xae, 0xfc, 0xc7, 0xfc, 0xc5, 0xfc, + 0xda, 0xfc, 0xdc, 0xfc, 0xe5, 0xfc, 0xe3, 0xfc, 0xe8, 0xfc, 0xe6, 0xfc, + 0xdf, 0xfc, 0xe1, 0xfc, 0xd2, 0xfc, 0xd1, 0xfc, 0xbb, 0xfc, 0xbb, 0xfc, + 0x99, 0xfc, 0x98, 0xfc, 0x71, 0xfc, 0x71, 0xfc, 0x40, 0xfc, 0x3f, 0xfc, + 0x05, 0xfc, 0x07, 0xfc, 0xcc, 0xfb, 0xc9, 0xfb, 0x85, 0xfb, 0x86, 0xfb, + 0x40, 0xfb, 0x40, 0xfb, 0xf8, 0xfa, 0xf7, 0xfa, 0xab, 0xfa, 0xac, 0xfa, + 0x64, 0xfa, 0x63, 0xfa, 0x18, 0xfa, 0x17, 0xfa, 0xd3, 0xf9, 0xd4, 0xf9, + 0x91, 0xf9, 0x90, 0xf9, 0x56, 0xf9, 0x56, 0xf9, 0x1f, 0xf9, 0x20, 0xf9, + 0xf5, 0xf8, 0xf3, 0xf8, 0xce, 0xf8, 0xd0, 0xf8, 0xb7, 0xf8, 0xb4, 0xf8, + 0xa5, 0xf8, 0xa6, 0xf8, 0xa3, 0xf8, 0xa1, 0xf8, 0xaa, 0xf8, 0xa9, 0xf8, + 0xbd, 0xf8, 0xbd, 0xf8, 0xdc, 0xf8, 0xdc, 0xf8, 0x06, 0xf9, 0x06, 0xf9, + 0x39, 0xf9, 0x3a, 0xf9, 0x7d, 0xf9, 0x7c, 0xf9, 0xc2, 0xf9, 0xc4, 0xf9, + 0x18, 0xfa, 0x16, 0xfa, 0x6c, 0xfa, 0x6f, 0xfa, 0xd0, 0xfa, 0xce, 0xfa, + 0x30, 0xfb, 0x32, 0xfb, 0x9c, 0xfb, 0x9c, 0xfb, 0x03, 0xfc, 0x04, 0xfc, + 0x70, 0xfc, 0x70, 0xfc, 0xd8, 0xfc, 0xda, 0xfc, 0x42, 0xfd, 0x40, 0xfd, + 0xa4, 0xfd, 0xa5, 0xfd, 0x04, 0xfe, 0x03, 0xfe, 0x5f, 0xfe, 0x5f, 0xfe, + 0xb2, 0xfe, 0xb3, 0xfe, 0xfd, 0xfe, 0xfc, 0xfe, 0x44, 0xff, 0x44, 0xff, + 0x7d, 0xff, 0x7d, 0xff, 0xb1, 0xff, 0xb0, 0xff, 0xd9, 0xff, 0xd9, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0x11, 0x00, 0x12, 0x00, 0x1e, 0x00, 0x1d, 0x00, + 0x2a, 0x00, 0x29, 0x00, 0x26, 0x00, 0x26, 0x00, 0x24, 0x00, 0x23, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x08, 0x00, 0x07, 0x00, 0xf7, 0xff, 0xf9, 0xff, + 0xe3, 0xff, 0xe2, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xbe, 0xff, 0xbd, 0xff, + 0xad, 0xff, 0xae, 0xff, 0xa2, 0xff, 0xa1, 0xff, 0x9a, 0xff, 0x99, 0xff, + 0x9a, 0xff, 0x9a, 0xff, 0xa1, 0xff, 0x9f, 0xff, 0xae, 0xff, 0xae, 0xff, + 0xc3, 0xff, 0xc4, 0xff, 0xe3, 0xff, 0xe1, 0xff, 0x08, 0x00, 0x0a, 0x00, + 0x3a, 0x00, 0x39, 0x00, 0x74, 0x00, 0x73, 0x00, 0xb5, 0x00, 0xb5, 0x00, + 0x02, 0x01, 0x01, 0x01, 0x52, 0x01, 0x53, 0x01, 0xaa, 0x01, 0xac, 0x01, + 0x0c, 0x02, 0x09, 0x02, 0x6d, 0x02, 0x6f, 0x02, 0xd8, 0x02, 0xd8, 0x02, + 0x40, 0x03, 0x40, 0x03, 0xb0, 0x03, 0xb0, 0x03, 0x1a, 0x04, 0x1a, 0x04, + 0x88, 0x04, 0x88, 0x04, 0xf0, 0x04, 0xf0, 0x04, 0x53, 0x05, 0x52, 0x05, + 0xb5, 0x05, 0xb5, 0x05, 0x0b, 0x06, 0x0b, 0x06, 0x5e, 0x06, 0x5f, 0x06, + 0xa7, 0x06, 0xa5, 0x06, 0xe2, 0x06, 0xe3, 0x06, 0x1b, 0x07, 0x1c, 0x07, + 0x40, 0x07, 0x40, 0x07, 0x61, 0x07, 0x61, 0x07, 0x71, 0x07, 0x70, 0x07, + 0x79, 0x07, 0x79, 0x07, 0x70, 0x07, 0x71, 0x07, 0x62, 0x07, 0x61, 0x07, + 0x46, 0x07, 0x47, 0x07, 0x1f, 0x07, 0x1f, 0x07, 0xf2, 0x06, 0xf0, 0x06, + 0xb6, 0x06, 0xb8, 0x06, 0x7b, 0x06, 0x7a, 0x06, 0x33, 0x06, 0x34, 0x06, + 0xec, 0x05, 0xea, 0x05, 0x9e, 0x05, 0x9f, 0x05, 0x50, 0x05, 0x4f, 0x05, + 0x01, 0x05, 0x02, 0x05, 0xb4, 0x04, 0xb4, 0x04, 0x68, 0x04, 0x66, 0x04, + 0x20, 0x04, 0x25, 0x04, 0xe1, 0x03, 0xde, 0x03, 0xa3, 0x03, 0xa5, 0x03, + 0x71, 0x03, 0x6f, 0x03, 0x43, 0x03, 0x43, 0x03, 0x1f, 0x03, 0x20, 0x03, + 0x06, 0x03, 0x04, 0x03, 0xf5, 0x02, 0xf6, 0x02, 0xef, 0x02, 0xed, 0x02, + 0xec, 0x02, 0xee, 0x02, 0xfc, 0x02, 0xfb, 0x02, 0x0b, 0x03, 0x0a, 0x03, + 0x27, 0x03, 0x29, 0x03, 0x4b, 0x03, 0x48, 0x03, 0x6f, 0x03, 0x6f, 0x03, + 0x9c, 0x03, 0x9d, 0x03, 0xc9, 0x03, 0xc7, 0x03, 0xf9, 0x03, 0xfd, 0x03, + 0x2b, 0x04, 0x29, 0x04, 0x57, 0x04, 0x58, 0x04, 0x88, 0x04, 0x86, 0x04, + 0xae, 0x04, 0xaf, 0x04, 0xd2, 0x04, 0xd2, 0x04, 0xf1, 0x04, 0xf1, 0x04, + 0x04, 0x05, 0x05, 0x05, 0x14, 0x05, 0x12, 0x05, 0x14, 0x05, 0x14, 0x05, + 0x0d, 0x05, 0x0c, 0x05, 0xfa, 0x04, 0xf9, 0x04, 0xd9, 0x04, 0xd9, 0x04, + 0xb0, 0x04, 0xaf, 0x04, 0x77, 0x04, 0x79, 0x04, 0x38, 0x04, 0x37, 0x04, + 0xea, 0x03, 0xec, 0x03, 0x94, 0x03, 0x93, 0x03, 0x34, 0x03, 0x36, 0x03, + 0xcc, 0x02, 0xcc, 0x02, 0x5e, 0x02, 0x5c, 0x02, 0xe5, 0x01, 0xe6, 0x01, + 0x6c, 0x01, 0x6c, 0x01, 0xf0, 0x00, 0xf0, 0x00, 0x6f, 0x00, 0x70, 0x00, + 0xf1, 0xff, 0xf0, 0xff, 0x71, 0xff, 0x71, 0xff, 0xf8, 0xfe, 0xf8, 0xfe, + 0x80, 0xfe, 0x7f, 0xfe, 0x0e, 0xfe, 0x0f, 0xfe, 0xa3, 0xfd, 0xa3, 0xfd, + 0x3d, 0xfd, 0x3c, 0xfd, 0xe6, 0xfc, 0xe7, 0xfc, 0x8f, 0xfc, 0x90, 0xfc, + 0x4c, 0xfc, 0x4d, 0xfc, 0x0d, 0xfc, 0x0e, 0xfc, 0xd9, 0xfb, 0xda, 0xfb, + 0xb5, 0xfb, 0xb4, 0xfb, 0x97, 0xfb, 0x97, 0xfb, 0x86, 0xfb, 0x87, 0xfb, + 0x7e, 0xfb, 0x7c, 0xfb, 0x7d, 0xfb, 0x7f, 0xfb, 0x8a, 0xfb, 0x86, 0xfb, + 0x99, 0xfb, 0x9b, 0xfb, 0xb2, 0xfb, 0xb0, 0xfb, 0xcd, 0xfb, 0xcf, 0xfb, + 0xf1, 0xfb, 0xef, 0xfb, 0x12, 0xfc, 0x14, 0xfc, 0x3a, 0xfc, 0x39, 0xfc, + 0x5d, 0xfc, 0x5d, 0xfc, 0x82, 0xfc, 0x82, 0xfc, 0xa3, 0xfc, 0xa2, 0xfc, + 0xc0, 0xfc, 0xc1, 0xfc, 0xdb, 0xfc, 0xd9, 0xfc, 0xe8, 0xfc, 0xea, 0xfc, + 0xf7, 0xfc, 0xf6, 0xfc, 0xf9, 0xfc, 0xfb, 0xfc, 0xf7, 0xfc, 0xf6, 0xfc, + 0xea, 0xfc, 0xeb, 0xfc, 0xd5, 0xfc, 0xd5, 0xfc, 0xba, 0xfc, 0xba, 0xfc, + 0x94, 0xfc, 0x94, 0xfc, 0x68, 0xfc, 0x69, 0xfc, 0x38, 0xfc, 0x35, 0xfc, + 0xfb, 0xfb, 0xfc, 0xfb, 0xbf, 0xfb, 0xbe, 0xfb, 0x7a, 0xfb, 0x7a, 0xfb, + 0x33, 0xfb, 0x34, 0xfb, 0xed, 0xfa, 0xec, 0xfa, 0xa2, 0xfa, 0xa2, 0xfa, + 0x59, 0xfa, 0x5a, 0xfa, 0x14, 0xfa, 0x13, 0xfa, 0xd0, 0xf9, 0xd1, 0xf9, + 0x93, 0xf9, 0x93, 0xf9, 0x5a, 0xf9, 0x5b, 0xf9, 0x28, 0xf9, 0x2a, 0xf9, + 0x01, 0xf9, 0x00, 0xf9, 0xe2, 0xf8, 0xe2, 0xf8, 0xcc, 0xf8, 0xcd, 0xf8, + 0xc2, 0xf8, 0xc1, 0xf8, 0xc2, 0xf8, 0xc2, 0xf8, 0xce, 0xf8, 0xcf, 0xf8, + 0xe5, 0xf8, 0xe6, 0xf8, 0x09, 0xf9, 0x09, 0xf9, 0x37, 0xf9, 0x39, 0xf9, + 0x70, 0xf9, 0x70, 0xf9, 0xb3, 0xf9, 0xb4, 0xf9, 0x00, 0xfa, 0x01, 0xfa, + 0x55, 0xfa, 0x54, 0xfa, 0xaf, 0xfa, 0xb0, 0xfa, 0x0f, 0xfb, 0x0e, 0xfb, + 0x74, 0xfb, 0x74, 0xfb, 0xdb, 0xfb, 0xdc, 0xfb, 0x43, 0xfc, 0x42, 0xfc, + 0xac, 0xfc, 0xac, 0xfc, 0x11, 0xfd, 0x12, 0xfd, 0x75, 0xfd, 0x74, 0xfd, + 0xd4, 0xfd, 0xd5, 0xfd, 0x2d, 0xfe, 0x2c, 0xfe, 0x80, 0xfe, 0x80, 0xfe, + 0xc8, 0xfe, 0xc8, 0xfe, 0x0d, 0xff, 0x0c, 0xff, 0x42, 0xff, 0x44, 0xff, + 0x75, 0xff, 0x72, 0xff, 0x99, 0xff, 0x9a, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0xc9, 0xff, 0xc7, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xcf, 0xff, 0xcf, 0xff, + 0xc6, 0xff, 0xc6, 0xff, 0xb8, 0xff, 0xb6, 0xff, 0x9f, 0xff, 0xa0, 0xff, + 0x84, 0xff, 0x84, 0xff, 0x66, 0xff, 0x66, 0xff, 0x44, 0xff, 0x41, 0xff, + 0x21, 0xff, 0x22, 0xff, 0xfe, 0xfe, 0xfc, 0xfe, 0xdb, 0xfe, 0xdc, 0xfe, + 0xbe, 0xfe, 0xbe, 0xfe, 0xa5, 0xfe, 0xa4, 0xfe, 0x8f, 0xfe, 0x92, 0xfe, + 0x85, 0xfe, 0x83, 0xfe, 0x80, 0xfe, 0x7e, 0xfe, 0x84, 0xfe, 0x84, 0xfe, + 0x93, 0xfe, 0x91, 0xfe, 0xab, 0xfe, 0xac, 0xfe, 0xce, 0xfe, 0xcd, 0xfe, + 0xfd, 0xfe, 0xfe, 0xfe, 0x37, 0xff, 0x37, 0xff, 0x79, 0xff, 0x7a, 0xff, + 0xc8, 0xff, 0xc7, 0xff, 0x1d, 0x00, 0x1f, 0x00, 0x7e, 0x00, 0x7c, 0x00, + 0xe4, 0x00, 0xe6, 0x00, 0x51, 0x01, 0x50, 0x01, 0xc7, 0x01, 0xc6, 0x01, + 0x3a, 0x02, 0x3a, 0x02, 0xb5, 0x02, 0xb5, 0x02, 0x2f, 0x03, 0x2e, 0x03, + 0xa9, 0x03, 0xa9, 0x03, 0x21, 0x04, 0x20, 0x04, 0x93, 0x04, 0x96, 0x04, + 0x05, 0x05, 0x04, 0x05, 0x6c, 0x05, 0x6d, 0x05, 0xd0, 0x05, 0xd0, 0x05, + 0x29, 0x06, 0x27, 0x06, 0x77, 0x06, 0x79, 0x06, 0xbd, 0x06, 0xbb, 0x06, + 0xf6, 0x06, 0xf7, 0x06, 0x24, 0x07, 0x23, 0x07, 0x46, 0x07, 0x46, 0x07, + 0x59, 0x07, 0x5a, 0x07, 0x62, 0x07, 0x62, 0x07, 0x61, 0x07, 0x5f, 0x07, + 0x50, 0x07, 0x50, 0x07, 0x37, 0x07, 0x35, 0x07, 0x12, 0x07, 0x11, 0x07, + 0xe3, 0x06, 0xe4, 0x06, 0xae, 0x06, 0xad, 0x06, 0x70, 0x06, 0x72, 0x06, + 0x2d, 0x06, 0x2c, 0x06, 0xe7, 0x05, 0xe7, 0x05, 0x9b, 0x05, 0x9b, 0x05, + 0x51, 0x05, 0x52, 0x05, 0x07, 0x05, 0x07, 0x05, 0xbb, 0x04, 0xbd, 0x04, + 0x78, 0x04, 0x77, 0x04, 0x32, 0x04, 0x34, 0x04, 0xf7, 0x03, 0xf7, 0x03, + 0xc1, 0x03, 0xc2, 0x03, 0x91, 0x03, 0x92, 0x03, 0x6b, 0x03, 0x6a, 0x03, + 0x4d, 0x03, 0x4c, 0x03, 0x35, 0x03, 0x37, 0x03, 0x29, 0x03, 0x29, 0x03, + 0x25, 0x03, 0x24, 0x03, 0x2b, 0x03, 0x2c, 0x03, 0x37, 0x03, 0x36, 0x03, + 0x4d, 0x03, 0x4e, 0x03, 0x65, 0x03, 0x66, 0x03, 0x8a, 0x03, 0x88, 0x03, + 0xb0, 0x03, 0xb0, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0x07, 0x04, 0x06, 0x04, + 0x2e, 0x04, 0x2e, 0x04, 0x5f, 0x04, 0x5d, 0x04, 0x87, 0x04, 0x88, 0x04, + 0xad, 0x04, 0xad, 0x04, 0xd2, 0x04, 0xcf, 0x04, 0xe9, 0x04, 0xe8, 0x04, + 0x01, 0x05, 0x01, 0x05, 0x0b, 0x05, 0x09, 0x05, 0x0f, 0x05, 0x10, 0x05, + 0x0a, 0x05, 0x07, 0x05, 0xf6, 0x04, 0xf6, 0x04, 0xd9, 0x04, 0xd9, 0x04, + 0xb2, 0x04, 0xb1, 0x04, 0x81, 0x04, 0x80, 0x04, 0x43, 0x04, 0x44, 0x04, + 0xfc, 0x03, 0xfb, 0x03, 0xab, 0x03, 0xac, 0x03, 0x51, 0x03, 0x51, 0x03, + 0xf0, 0x02, 0xf0, 0x02, 0x88, 0x02, 0x88, 0x02, 0x1a, 0x02, 0x1b, 0x02, + 0xa9, 0x01, 0xa8, 0x01, 0x33, 0x01, 0x32, 0x01, 0xbc, 0x00, 0xbd, 0x00, + 0x48, 0x00, 0x48, 0x00, 0xd1, 0xff, 0xd1, 0xff, 0x62, 0xff, 0x62, 0xff, + 0xf4, 0xfe, 0xf3, 0xfe, 0x8b, 0xfe, 0x8d, 0xfe, 0x2d, 0xfe, 0x2c, 0xfe, + 0xd1, 0xfd, 0xd2, 0xfd, 0x82, 0xfd, 0x83, 0xfd, 0x3c, 0xfd, 0x3b, 0xfd, + 0xfe, 0xfc, 0x01, 0xfd, 0xcd, 0xfc, 0xcd, 0xfc, 0xa5, 0xfc, 0xa4, 0xfc, + 0x86, 0xfc, 0x88, 0xfc, 0x74, 0xfc, 0x72, 0xfc, 0x6a, 0xfc, 0x6a, 0xfc, + 0x6a, 0xfc, 0x6a, 0xfc, 0x73, 0xfc, 0x72, 0xfc, 0x82, 0xfc, 0x84, 0xfc, + 0x9a, 0xfc, 0x99, 0xfc, 0xb8, 0xfc, 0xb8, 0xfc, 0xd9, 0xfc, 0xd8, 0xfc, + 0xfe, 0xfc, 0xfd, 0xfc, 0x22, 0xfd, 0x22, 0xfd, 0x4a, 0xfd, 0x4a, 0xfd, + 0x6f, 0xfd, 0x6f, 0xfd, 0x94, 0xfd, 0x92, 0xfd, 0xb1, 0xfd, 0xb0, 0xfd, + 0xca, 0xfd, 0xcb, 0xfd, 0xde, 0xfd, 0xde, 0xfd, 0xe9, 0xfd, 0xe9, 0xfd, + 0xee, 0xfd, 0xed, 0xfd, 0xe9, 0xfd, 0xe9, 0xfd, 0xdb, 0xfd, 0xdb, 0xfd, + 0xc3, 0xfd, 0xc3, 0xfd, 0xa2, 0xfd, 0xa3, 0xfd, 0x7a, 0xfd, 0x79, 0xfd, + 0x46, 0xfd, 0x46, 0xfd, 0x0b, 0xfd, 0x0b, 0xfd, 0xc9, 0xfc, 0xc8, 0xfc, + 0x7d, 0xfc, 0x7c, 0xfc, 0x2e, 0xfc, 0x2d, 0xfc, 0xd8, 0xfb, 0xd8, 0xfb, + 0x80, 0xfb, 0x7f, 0xfb, 0x24, 0xfb, 0x24, 0xfb, 0xca, 0xfa, 0xc9, 0xfa, + 0x6e, 0xfa, 0x6d, 0xfa, 0x16, 0xfa, 0x16, 0xfa, 0xc0, 0xf9, 0xbf, 0xf9, + 0x6f, 0xf9, 0x70, 0xf9, 0x27, 0xf9, 0x28, 0xf9, 0xe5, 0xf8, 0xe3, 0xf8, + 0xac, 0xf8, 0xae, 0xf8, 0x7e, 0xf8, 0x7b, 0xf8, 0x59, 0xf8, 0x5c, 0xf8, + 0x42, 0xf8, 0x42, 0xf8, 0x36, 0xf8, 0x36, 0xf8, 0x39, 0xf8, 0x37, 0xf8, + 0x44, 0xf8, 0x45, 0xf8, 0x61, 0xf8, 0x5f, 0xf8, 0x86, 0xf8, 0x86, 0xf8, + 0xba, 0xf8, 0xb9, 0xf8, 0xf7, 0xf8, 0xf8, 0xf8, 0x42, 0xf9, 0x41, 0xf9, + 0x92, 0xf9, 0x93, 0xf9, 0xef, 0xf9, 0xee, 0xf9, 0x4e, 0xfa, 0x4f, 0xfa, + 0xb8, 0xfa, 0xb7, 0xfa, 0x20, 0xfb, 0x21, 0xfb, 0x90, 0xfb, 0x8f, 0xfb, + 0xfd, 0xfb, 0xfc, 0xfb, 0x6d, 0xfc, 0x6d, 0xfc, 0xd6, 0xfc, 0xd6, 0xfc, + 0x3f, 0xfd, 0x3f, 0xfd, 0xa2, 0xfd, 0xa2, 0xfd, 0xfe, 0xfd, 0xfe, 0xfd, + 0x54, 0xfe, 0x54, 0xfe, 0xa1, 0xfe, 0x9f, 0xfe, 0xe2, 0xfe, 0xe2, 0xfe, + 0x1b, 0xff, 0x1c, 0xff, 0x4c, 0xff, 0x4a, 0xff, 0x71, 0xff, 0x71, 0xff, + 0x8d, 0xff, 0x8b, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xa5, 0xff, 0xa5, 0xff, + 0xa6, 0xff, 0xa6, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0x8b, 0xff, 0x8b, 0xff, + 0x72, 0xff, 0x72, 0xff, 0x55, 0xff, 0x56, 0xff, 0x35, 0xff, 0x34, 0xff, + 0x13, 0xff, 0x12, 0xff, 0xee, 0xfe, 0xee, 0xfe, 0xcb, 0xfe, 0xcb, 0xfe, + 0xab, 0xfe, 0xa8, 0xfe, 0x88, 0xfe, 0x8a, 0xfe, 0x74, 0xfe, 0x71, 0xfe, + 0x5b, 0xfe, 0x5e, 0xfe, 0x52, 0xfe, 0x50, 0xfe, 0x4e, 0xfe, 0x4d, 0xfe, + 0x52, 0xfe, 0x52, 0xfe, 0x61, 0xfe, 0x61, 0xfe, 0x7a, 0xfe, 0x78, 0xfe, + 0x9b, 0xfe, 0x9d, 0xfe, 0xcc, 0xfe, 0xc9, 0xfe, 0x00, 0xff, 0x01, 0xff, + 0x44, 0xff, 0x43, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0xe1, 0xff, 0xe0, 0xff, + 0x39, 0x00, 0x39, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x05, 0x01, 0x04, 0x01, + 0x6f, 0x01, 0x70, 0x01, 0xe4, 0x01, 0xe1, 0x01, 0x51, 0x02, 0x51, 0x02, + 0xc6, 0x02, 0xc6, 0x02, 0x36, 0x03, 0x35, 0x03, 0xa3, 0x03, 0xa4, 0x03, + 0x12, 0x04, 0x11, 0x04, 0x75, 0x04, 0x77, 0x04, 0xd8, 0x04, 0xd8, 0x04, + 0x2e, 0x05, 0x2d, 0x05, 0x7e, 0x05, 0x7f, 0x05, 0xc7, 0x05, 0xc7, 0x05, + 0x01, 0x06, 0x00, 0x06, 0x35, 0x06, 0x37, 0x06, 0x5a, 0x06, 0x59, 0x06, + 0x77, 0x06, 0x78, 0x06, 0x87, 0x06, 0x86, 0x06, 0x8b, 0x06, 0x8d, 0x06, + 0x87, 0x06, 0x86, 0x06, 0x75, 0x06, 0x75, 0x06, 0x5f, 0x06, 0x5e, 0x06, + 0x39, 0x06, 0x3a, 0x06, 0x13, 0x06, 0x11, 0x06, 0xe2, 0x05, 0xe2, 0x05, + 0xac, 0x05, 0xad, 0x05, 0x74, 0x05, 0x74, 0x05, 0x37, 0x05, 0x39, 0x05, + 0xfd, 0x04, 0xfb, 0x04, 0xbe, 0x04, 0xc1, 0x04, 0x85, 0x04, 0x85, 0x04, + 0x4c, 0x04, 0x4d, 0x04, 0x1a, 0x04, 0x19, 0x04, 0xeb, 0x03, 0xeb, 0x03, + 0xc5, 0x03, 0xc5, 0x03, 0xa2, 0x03, 0xa3, 0x03, 0x8b, 0x03, 0x8b, 0x03, + 0x79, 0x03, 0x7b, 0x03, 0x71, 0x03, 0x71, 0x03, 0x74, 0x03, 0x74, 0x03, + 0x7b, 0x03, 0x7b, 0x03, 0x8f, 0x03, 0x8f, 0x03, 0xa5, 0x03, 0xa6, 0x03, + 0xc9, 0x03, 0xca, 0x03, 0xf0, 0x03, 0xee, 0x03, 0x1a, 0x04, 0x1c, 0x04, + 0x4d, 0x04, 0x4c, 0x04, 0x7f, 0x04, 0x80, 0x04, 0xb5, 0x04, 0xb4, 0x04, + 0xec, 0x04, 0xec, 0x04, 0x1d, 0x05, 0x1d, 0x05, 0x52, 0x05, 0x51, 0x05, + 0x7d, 0x05, 0x7f, 0x05, 0xa6, 0x05, 0xa5, 0x05, 0xc7, 0x05, 0xc8, 0x05, + 0xdf, 0x05, 0xde, 0x05, 0xef, 0x05, 0xef, 0x05, 0xf4, 0x05, 0xf6, 0x05, + 0xf1, 0x05, 0xee, 0x05, 0xdd, 0x05, 0xdf, 0x05, 0xc2, 0x05, 0xc0, 0x05, + 0x9b, 0x05, 0x9c, 0x05, 0x65, 0x05, 0x66, 0x05, 0x27, 0x05, 0x26, 0x05, + 0xdc, 0x04, 0xdd, 0x04, 0x85, 0x04, 0x85, 0x04, 0x2a, 0x04, 0x29, 0x04, + 0xbd, 0x03, 0xbf, 0x03, 0x51, 0x03, 0x50, 0x03, 0xd9, 0x02, 0xd9, 0x02, + 0x5f, 0x02, 0x60, 0x02, 0xe1, 0x01, 0xde, 0x01, 0x5f, 0x01, 0x61, 0x01, + 0xe0, 0x00, 0xdf, 0x00, 0x5e, 0x00, 0x5d, 0x00, 0xe3, 0xff, 0xe3, 0xff, + 0x6a, 0xff, 0x6a, 0xff, 0xf7, 0xfe, 0xf6, 0xfe, 0x8c, 0xfe, 0x8b, 0xfe, + 0x28, 0xfe, 0x26, 0xfe, 0xca, 0xfd, 0xcc, 0xfd, 0x7b, 0xfd, 0x7b, 0xfd, + 0x33, 0xfd, 0x33, 0xfd, 0xf9, 0xfc, 0xfa, 0xfc, 0xc8, 0xfc, 0xc7, 0xfc, + 0xa5, 0xfc, 0xa6, 0xfc, 0x8d, 0xfc, 0x8c, 0xfc, 0x80, 0xfc, 0x7f, 0xfc, + 0x7b, 0xfc, 0x7c, 0xfc, 0x82, 0xfc, 0x81, 0xfc, 0x94, 0xfc, 0x93, 0xfc, + 0xa9, 0xfc, 0xab, 0xfc, 0xcc, 0xfc, 0xca, 0xfc, 0xf0, 0xfc, 0xf1, 0xfc, + 0x1a, 0xfd, 0x1b, 0xfd, 0x48, 0xfd, 0x48, 0xfd, 0x73, 0xfd, 0x74, 0xfd, + 0xa7, 0xfd, 0xa6, 0xfd, 0xd1, 0xfd, 0xd1, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0x24, 0xfe, 0x23, 0xfe, 0x42, 0xfe, 0x41, 0xfe, 0x5e, 0xfe, 0x5e, 0xfe, + 0x6b, 0xfe, 0x6b, 0xfe, 0x78, 0xfe, 0x77, 0xfe, 0x77, 0xfe, 0x76, 0xfe, + 0x6d, 0xfe, 0x6c, 0xfe, 0x5b, 0xfe, 0x5c, 0xfe, 0x3c, 0xfe, 0x3b, 0xfe, + 0x17, 0xfe, 0x17, 0xfe, 0xe5, 0xfd, 0xe5, 0xfd, 0xad, 0xfd, 0xad, 0xfd, + 0x6b, 0xfd, 0x6b, 0xfd, 0x21, 0xfd, 0x22, 0xfd, 0xd2, 0xfc, 0xd1, 0xfc, + 0x7c, 0xfc, 0x7c, 0xfc, 0x23, 0xfc, 0x23, 0xfc, 0xc8, 0xfb, 0xc7, 0xfb, + 0x69, 0xfb, 0x6a, 0xfb, 0x0d, 0xfb, 0x0d, 0xfb, 0xb0, 0xfa, 0xb0, 0xfa, + 0x59, 0xfa, 0x59, 0xfa, 0x05, 0xfa, 0x03, 0xfa, 0xb6, 0xf9, 0xb5, 0xf9, + 0x70, 0xf9, 0x71, 0xf9, 0x2f, 0xf9, 0x2e, 0xf9, 0xfa, 0xf8, 0xfa, 0xf8, + 0xce, 0xf8, 0xcd, 0xf8, 0xaf, 0xf8, 0xac, 0xf8, 0x99, 0xf8, 0x9b, 0xf8, + 0x91, 0xf8, 0x8e, 0xf8, 0x94, 0xf8, 0x95, 0xf8, 0xa2, 0xf8, 0xa1, 0xf8, + 0xbe, 0xf8, 0xbd, 0xf8, 0xe6, 0xf8, 0xe5, 0xf8, 0x15, 0xf9, 0x14, 0xf9, + 0x51, 0xf9, 0x52, 0xf9, 0x97, 0xf9, 0x95, 0xf9, 0xe2, 0xf9, 0xe2, 0xf9, + 0x36, 0xfa, 0x35, 0xfa, 0x8d, 0xfa, 0x8d, 0xfa, 0xeb, 0xfa, 0xea, 0xfa, + 0x49, 0xfb, 0x48, 0xfb, 0xa9, 0xfb, 0xa8, 0xfb, 0x06, 0xfc, 0x06, 0xfc, + 0x63, 0xfc, 0x62, 0xfc, 0xbc, 0xfc, 0xbc, 0xfc, 0x11, 0xfd, 0x10, 0xfd, + 0x60, 0xfd, 0x5f, 0xfd, 0xa7, 0xfd, 0xa8, 0xfd, 0xe8, 0xfd, 0xe6, 0xfd, + 0x21, 0xfe, 0x22, 0xfe, 0x4f, 0xfe, 0x4e, 0xfe, 0x78, 0xfe, 0x79, 0xfe, + 0x92, 0xfe, 0x8f, 0xfe, 0xa8, 0xfe, 0xaa, 0xfe, 0xb1, 0xfe, 0xb0, 0xfe, + 0xb4, 0xfe, 0xb5, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, 0xa1, 0xfe, 0xa2, 0xfe, + 0x92, 0xfe, 0x91, 0xfe, 0x78, 0xfe, 0x78, 0xfe, 0x5f, 0xfe, 0x5f, 0xfe, + 0x40, 0xfe, 0x40, 0xfe, 0x24, 0xfe, 0x24, 0xfe, 0x06, 0xfe, 0x05, 0xfe, + 0xea, 0xfd, 0xe9, 0xfd, 0xcf, 0xfd, 0xd0, 0xfd, 0xbe, 0xfd, 0xbd, 0xfd, + 0xac, 0xfd, 0xab, 0xfd, 0xa7, 0xfd, 0xa5, 0xfd, 0xa7, 0xfd, 0xa5, 0xfd, + 0xae, 0xfd, 0xaf, 0xfd, 0xc3, 0xfd, 0xc2, 0xfd, 0xe0, 0xfd, 0xe1, 0xfd, + 0x06, 0xfe, 0x06, 0xfe, 0x3c, 0xfe, 0x3c, 0xfe, 0x72, 0xfe, 0x72, 0xfe, + 0xbd, 0xfe, 0xbd, 0xfe, 0x09, 0xff, 0x0a, 0xff, 0x62, 0xff, 0x61, 0xff, + 0xc3, 0xff, 0xc3, 0xff, 0x2a, 0x00, 0x28, 0x00, 0x97, 0x00, 0x98, 0x00, + 0x09, 0x01, 0x0a, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0xf7, 0x01, 0xf8, 0x01, + 0x6b, 0x02, 0x6b, 0x02, 0xe5, 0x02, 0xe5, 0x02, 0x58, 0x03, 0x57, 0x03, + 0xca, 0x03, 0xc9, 0x03, 0x35, 0x04, 0x36, 0x04, 0x9a, 0x04, 0x98, 0x04, + 0xf6, 0x04, 0xf6, 0x04, 0x4a, 0x05, 0x49, 0x05, 0x95, 0x05, 0x95, 0x05, + 0xd5, 0x05, 0xd4, 0x05, 0x09, 0x06, 0x08, 0x06, 0x30, 0x06, 0x32, 0x06, + 0x4e, 0x06, 0x4d, 0x06, 0x5e, 0x06, 0x5d, 0x06, 0x61, 0x06, 0x61, 0x06, + 0x5c, 0x06, 0x5d, 0x06, 0x49, 0x06, 0x48, 0x06, 0x2d, 0x06, 0x2c, 0x06, + 0x05, 0x06, 0x05, 0x06, 0xd7, 0x05, 0xd6, 0x05, 0xa1, 0x05, 0xa1, 0x05, + 0x66, 0x05, 0x65, 0x05, 0x26, 0x05, 0x25, 0x05, 0xe3, 0x04, 0xe3, 0x04, + 0x9c, 0x04, 0x9c, 0x04, 0x57, 0x04, 0x59, 0x04, 0x13, 0x04, 0x14, 0x04, + 0xd2, 0x03, 0xd1, 0x03, 0x98, 0x03, 0x97, 0x03, 0x5d, 0x03, 0x5f, 0x03, + 0x30, 0x03, 0x2f, 0x03, 0x05, 0x03, 0x07, 0x03, 0xe6, 0x02, 0xe5, 0x02, + 0xd1, 0x02, 0xd2, 0x02, 0xc2, 0x02, 0xc4, 0x02, 0xc2, 0x02, 0xc2, 0x02, + 0xca, 0x02, 0xcb, 0x02, 0xdd, 0x02, 0xda, 0x02, 0xf7, 0x02, 0xf9, 0x02, + 0x1a, 0x03, 0x19, 0x03, 0x4a, 0x03, 0x4a, 0x03, 0x7b, 0x03, 0x7c, 0x03, + 0xb8, 0x03, 0xb7, 0x03, 0xf6, 0x03, 0xf6, 0x03, 0x39, 0x04, 0x3a, 0x04, + 0x80, 0x04, 0x7f, 0x04, 0xc2, 0x04, 0xc4, 0x04, 0x0b, 0x05, 0x09, 0x05, + 0x4b, 0x05, 0x4b, 0x05, 0x88, 0x05, 0x88, 0x05, 0xc1, 0x05, 0xc1, 0x05, + 0xf3, 0x05, 0xf1, 0x05, 0x1b, 0x06, 0x1b, 0x06, 0x3a, 0x06, 0x3b, 0x06, + 0x4e, 0x06, 0x4e, 0x06, 0x58, 0x06, 0x58, 0x06, 0x54, 0x06, 0x54, 0x06, + 0x44, 0x06, 0x44, 0x06, 0x28, 0x06, 0x27, 0x06, 0xfd, 0x05, 0xfd, 0x05, + 0xc7, 0x05, 0xc7, 0x05, 0x83, 0x05, 0x83, 0x05, 0x36, 0x05, 0x37, 0x05, + 0xde, 0x04, 0xdc, 0x04, 0x79, 0x04, 0x7a, 0x04, 0x0e, 0x04, 0x0e, 0x04, + 0x9a, 0x03, 0x9b, 0x03, 0x24, 0x03, 0x24, 0x03, 0xa5, 0x02, 0xa6, 0x02, + 0x26, 0x02, 0x27, 0x02, 0xa6, 0x01, 0xa6, 0x01, 0x27, 0x01, 0x26, 0x01, + 0xa8, 0x00, 0xaa, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0xba, 0xff, 0xbb, 0xff, + 0x4c, 0xff, 0x4c, 0xff, 0xe5, 0xfe, 0xe5, 0xfe, 0x88, 0xfe, 0x87, 0xfe, + 0x34, 0xfe, 0x35, 0xfe, 0xe8, 0xfd, 0xe7, 0xfd, 0xaa, 0xfd, 0xac, 0xfd, + 0x77, 0xfd, 0x75, 0xfd, 0x4e, 0xfd, 0x4e, 0xfd, 0x31, 0xfd, 0x31, 0xfd, + 0x1d, 0xfd, 0x1d, 0xfd, 0x18, 0xfd, 0x18, 0xfd, 0x17, 0xfd, 0x16, 0xfd, + 0x22, 0xfd, 0x23, 0xfd, 0x35, 0xfd, 0x35, 0xfd, 0x4e, 0xfd, 0x4b, 0xfd, + 0x6d, 0xfd, 0x70, 0xfd, 0x91, 0xfd, 0x8d, 0xfd, 0xb4, 0xfd, 0xb6, 0xfd, + 0xdc, 0xfd, 0xdb, 0xfd, 0x02, 0xfe, 0x02, 0xfe, 0x27, 0xfe, 0x27, 0xfe, + 0x49, 0xfe, 0x48, 0xfe, 0x65, 0xfe, 0x65, 0xfe, 0x7b, 0xfe, 0x7b, 0xfe, + 0x8b, 0xfe, 0x8c, 0xfe, 0x93, 0xfe, 0x93, 0xfe, 0x93, 0xfe, 0x95, 0xfe, + 0x89, 0xfe, 0x89, 0xfe, 0x77, 0xfe, 0x79, 0xfe, 0x5c, 0xfe, 0x5c, 0xfe, + 0x36, 0xfe, 0x38, 0xfe, 0x09, 0xfe, 0x09, 0xfe, 0xd1, 0xfd, 0xd2, 0xfd, + 0x95, 0xfd, 0x95, 0xfd, 0x4b, 0xfd, 0x4c, 0xfd, 0x02, 0xfd, 0x02, 0xfd, + 0xae, 0xfc, 0xae, 0xfc, 0x59, 0xfc, 0x59, 0xfc, 0x00, 0xfc, 0x00, 0xfc, + 0xa4, 0xfb, 0xa4, 0xfb, 0x4c, 0xfb, 0x4d, 0xfb, 0xf1, 0xfa, 0xef, 0xfa, + 0x9b, 0xfa, 0x9e, 0xfa, 0x49, 0xfa, 0x48, 0xfa, 0xfc, 0xf9, 0xfb, 0xf9, + 0xb7, 0xf9, 0xb8, 0xf9, 0x79, 0xf9, 0x77, 0xf9, 0x45, 0xf9, 0x46, 0xf9, + 0x19, 0xf9, 0x18, 0xf9, 0xfb, 0xf8, 0xfb, 0xf8, 0xe6, 0xf8, 0xe6, 0xf8, + 0xdf, 0xf8, 0xde, 0xf8, 0xe2, 0xf8, 0xe4, 0xf8, 0xf2, 0xf8, 0xf0, 0xf8, + 0x0e, 0xf9, 0x0e, 0xf9, 0x35, 0xf9, 0x34, 0xf9, 0x66, 0xf9, 0x65, 0xf9, + 0xa2, 0xf9, 0xa1, 0xf9, 0xe6, 0xf9, 0xe5, 0xf9, 0x32, 0xfa, 0x30, 0xfa, + 0x85, 0xfa, 0x85, 0xfa, 0xdc, 0xfa, 0xdc, 0xfa, 0x3a, 0xfb, 0x39, 0xfb, + 0x95, 0xfb, 0x95, 0xfb, 0xf5, 0xfb, 0xf4, 0xfb, 0x53, 0xfc, 0x50, 0xfc, + 0xad, 0xfc, 0xac, 0xfc, 0x04, 0xfd, 0x04, 0xfd, 0x54, 0xfd, 0x54, 0xfd, + 0xa1, 0xfd, 0xa0, 0xfd, 0xe3, 0xfd, 0xe3, 0xfd, 0x1e, 0xfe, 0x1e, 0xfe, + 0x50, 0xfe, 0x4f, 0xfe, 0x76, 0xfe, 0x76, 0xfe, 0x95, 0xfe, 0x94, 0xfe, + 0xa7, 0xfe, 0xa8, 0xfe, 0xaf, 0xfe, 0xaf, 0xfe, 0xaf, 0xfe, 0xb0, 0xfe, + 0xa1, 0xfe, 0xa2, 0xfe, 0x91, 0xfe, 0x91, 0xfe, 0x76, 0xfe, 0x77, 0xfe, + 0x53, 0xfe, 0x52, 0xfe, 0x2b, 0xfe, 0x2e, 0xfe, 0x00, 0xfe, 0xff, 0xfd, + 0xd0, 0xfd, 0xd2, 0xfd, 0xa1, 0xfd, 0xa1, 0xfd, 0x6f, 0xfd, 0x71, 0xfd, + 0x43, 0xfd, 0x43, 0xfd, 0x15, 0xfd, 0x15, 0xfd, 0xf1, 0xfc, 0xf2, 0xfc, + 0xcf, 0xfc, 0xcf, 0xfc, 0xb7, 0xfc, 0xb7, 0xfc, 0xa6, 0xfc, 0xa7, 0xfc, + 0xa0, 0xfc, 0xa1, 0xfc, 0xa8, 0xfc, 0xa6, 0xfc, 0xb5, 0xfc, 0xb6, 0xfc, + 0xd3, 0xfc, 0xd3, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x2e, 0xfd, 0x30, 0xfd, + 0x74, 0xfd, 0x72, 0xfd, 0xbf, 0xfd, 0xbf, 0xfd, 0x16, 0xfe, 0x16, 0xfe, + 0x7c, 0xfe, 0x7b, 0xfe, 0xe1, 0xfe, 0xe2, 0xfe, 0x5a, 0xff, 0x5a, 0xff, + 0xd0, 0xff, 0xd0, 0xff, 0x52, 0x00, 0x52, 0x00, 0xd4, 0x00, 0xd4, 0x00, + 0x58, 0x01, 0x58, 0x01, 0xe0, 0x01, 0xde, 0x01, 0x64, 0x02, 0x64, 0x02, + 0xe5, 0x02, 0xe5, 0x02, 0x66, 0x03, 0x65, 0x03, 0xdc, 0x03, 0xdb, 0x03, + 0x4f, 0x04, 0x4d, 0x04, 0xb5, 0x04, 0xb5, 0x04, 0x14, 0x05, 0x14, 0x05, + 0x68, 0x05, 0x68, 0x05, 0xaf, 0x05, 0xaf, 0x05, 0xed, 0x05, 0xef, 0x05, + 0x1d, 0x06, 0x1b, 0x06, 0x3f, 0x06, 0x3f, 0x06, 0x55, 0x06, 0x53, 0x06, + 0x5d, 0x06, 0x5d, 0x06, 0x5a, 0x06, 0x5a, 0x06, 0x49, 0x06, 0x4a, 0x06, + 0x31, 0x06, 0x30, 0x06, 0x0b, 0x06, 0x0a, 0x06, 0xdd, 0x05, 0xdd, 0x05, + 0xa6, 0x05, 0xa7, 0x05, 0x6d, 0x05, 0x6c, 0x05, 0x2a, 0x05, 0x2c, 0x05, + 0xea, 0x04, 0xe7, 0x04, 0xa1, 0x04, 0xa4, 0x04, 0x5d, 0x04, 0x5b, 0x04, + 0x17, 0x04, 0x18, 0x04, 0xd7, 0x03, 0xd7, 0x03, 0x9b, 0x03, 0x99, 0x03, + 0x62, 0x03, 0x63, 0x03, 0x33, 0x03, 0x32, 0x03, 0x09, 0x03, 0x09, 0x03, + 0xe8, 0x02, 0xe8, 0x02, 0xd2, 0x02, 0xd2, 0x02, 0xc3, 0x02, 0xc4, 0x02, + 0xc3, 0x02, 0xc4, 0x02, 0xc5, 0x02, 0xc8, 0x02, 0xd9, 0x02, 0xd8, 0x02, + 0xf2, 0x02, 0xf4, 0x02, 0x15, 0x03, 0x16, 0x03, 0x40, 0x03, 0x42, 0x03, + 0x73, 0x03, 0x72, 0x03, 0xa9, 0x03, 0xab, 0x03, 0xe8, 0x03, 0xe8, 0x03, + 0x27, 0x04, 0x27, 0x04, 0x68, 0x04, 0x69, 0x04, 0xab, 0x04, 0xab, 0x04, + 0xea, 0x04, 0xeb, 0x04, 0x29, 0x05, 0x2a, 0x05, 0x61, 0x05, 0x62, 0x05, + 0x93, 0x05, 0x96, 0x05, 0xc1, 0x05, 0xc1, 0x05, 0xe5, 0x05, 0xe7, 0x05, + 0x00, 0x06, 0xfe, 0x05, 0x10, 0x06, 0x12, 0x06, 0x13, 0x06, 0x14, 0x06, + 0x0b, 0x06, 0x0b, 0x06, 0xf9, 0x05, 0xfb, 0x05, 0xd7, 0x05, 0xd8, 0x05, + 0xac, 0x05, 0xac, 0x05, 0x74, 0x05, 0x75, 0x05, 0x30, 0x05, 0x2f, 0x05, + 0xe3, 0x04, 0xe4, 0x04, 0x8b, 0x04, 0x8b, 0x04, 0x2b, 0x04, 0x2c, 0x04, + 0xc5, 0x03, 0xc5, 0x03, 0x59, 0x03, 0x59, 0x03, 0xe8, 0x02, 0xe7, 0x02, + 0x74, 0x02, 0x75, 0x02, 0xff, 0x01, 0xff, 0x01, 0x8c, 0x01, 0x8b, 0x01, + 0x17, 0x01, 0x18, 0x01, 0xa9, 0x00, 0xa7, 0x00, 0x3e, 0x00, 0x3f, 0x00, + 0xda, 0xff, 0xd9, 0xff, 0x7f, 0xff, 0x7e, 0xff, 0x2a, 0xff, 0x2a, 0xff, + 0xe1, 0xfe, 0xe0, 0xfe, 0xa1, 0xfe, 0xa0, 0xfe, 0x68, 0xfe, 0x6a, 0xfe, + 0x40, 0xfe, 0x3f, 0xfe, 0x1d, 0xfe, 0x1f, 0xfe, 0x0b, 0xfe, 0x09, 0xfe, + 0xfe, 0xfd, 0xfe, 0xfd, 0xfd, 0xfd, 0xff, 0xfd, 0x06, 0xfe, 0x05, 0xfe, + 0x19, 0xfe, 0x18, 0xfe, 0x2f, 0xfe, 0x31, 0xfe, 0x51, 0xfe, 0x50, 0xfe, + 0x73, 0xfe, 0x73, 0xfe, 0x9b, 0xfe, 0x9a, 0xfe, 0xc3, 0xfe, 0xc4, 0xfe, + 0xee, 0xfe, 0xec, 0xfe, 0x15, 0xff, 0x15, 0xff, 0x3c, 0xff, 0x3c, 0xff, + 0x5c, 0xff, 0x5b, 0xff, 0x77, 0xff, 0x77, 0xff, 0x8e, 0xff, 0x8d, 0xff, + 0x9a, 0xff, 0x99, 0xff, 0x9d, 0xff, 0x9c, 0xff, 0x96, 0xff, 0x97, 0xff, + 0x87, 0xff, 0x86, 0xff, 0x6c, 0xff, 0x6b, 0xff, 0x47, 0xff, 0x47, 0xff, + 0x15, 0xff, 0x16, 0xff, 0xde, 0xfe, 0xdc, 0xfe, 0x98, 0xfe, 0x98, 0xfe, + 0x4b, 0xfe, 0x49, 0xfe, 0xf6, 0xfd, 0xf7, 0xfd, 0x9b, 0xfd, 0x98, 0xfd, + 0x38, 0xfd, 0x38, 0xfd, 0xd0, 0xfc, 0xcf, 0xfc, 0x67, 0xfc, 0x64, 0xfc, + 0xf8, 0xfb, 0xf9, 0xfb, 0x8d, 0xfb, 0x89, 0xfb, 0x1e, 0xfb, 0x1e, 0xfb, + 0xb5, 0xfa, 0xb3, 0xfa, 0x51, 0xfa, 0x50, 0xfa, 0xf1, 0xf9, 0xf2, 0xf9, + 0x9b, 0xf9, 0x9a, 0xf9, 0x4d, 0xf9, 0x4a, 0xf9, 0x06, 0xf9, 0x07, 0xf9, + 0xcf, 0xf8, 0xce, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x80, 0xf8, 0x80, 0xf8, + 0x6b, 0xf8, 0x69, 0xf8, 0x67, 0xf8, 0x66, 0xf8, 0x6d, 0xf8, 0x6b, 0xf8, + 0x82, 0xf8, 0x81, 0xf8, 0xa3, 0xf8, 0xa3, 0xf8, 0xce, 0xf8, 0xcf, 0xf8, + 0x09, 0xf9, 0x09, 0xf9, 0x4d, 0xf9, 0x4c, 0xf9, 0x99, 0xf9, 0x9a, 0xf9, + 0xef, 0xf9, 0xee, 0xf9, 0x4a, 0xfa, 0x4a, 0xfa, 0xad, 0xfa, 0xab, 0xfa, + 0x11, 0xfb, 0x12, 0xfb, 0x77, 0xfb, 0x77, 0xfb, 0xdf, 0xfb, 0xdd, 0xfb, + 0x43, 0xfc, 0x43, 0xfc, 0xa6, 0xfc, 0xa5, 0xfc, 0x02, 0xfd, 0x01, 0xfd, + 0x5a, 0xfd, 0x5b, 0xfd, 0xaa, 0xfd, 0xa9, 0xfd, 0xf1, 0xfd, 0xf1, 0xfd, + 0x2f, 0xfe, 0x2f, 0xfe, 0x62, 0xfe, 0x61, 0xfe, 0x8c, 0xfe, 0x8d, 0xfe, + 0xa8, 0xfe, 0xa7, 0xfe, 0xbe, 0xfe, 0xbf, 0xfe, 0xc4, 0xfe, 0xc4, 0xfe, + 0xc1, 0xfe, 0xc1, 0xfe, 0xb5, 0xfe, 0xb2, 0xfe, 0x9b, 0xfe, 0x9d, 0xfe, + 0x81, 0xfe, 0x80, 0xfe, 0x58, 0xfe, 0x59, 0xfe, 0x2e, 0xfe, 0x2d, 0xfe, + 0xfc, 0xfd, 0xfc, 0xfd, 0xca, 0xfd, 0xca, 0xfd, 0x95, 0xfd, 0x95, 0xfd, + 0x5f, 0xfd, 0x60, 0xfd, 0x2d, 0xfd, 0x2e, 0xfd, 0xfb, 0xfc, 0xfc, 0xfc, + 0xd3, 0xfc, 0xd2, 0xfc, 0xac, 0xfc, 0xad, 0xfc, 0x90, 0xfc, 0x90, 0xfc, + 0x7a, 0xfc, 0x7b, 0xfc, 0x71, 0xfc, 0x70, 0xfc, 0x72, 0xfc, 0x72, 0xfc, + 0x7e, 0xfc, 0x7e, 0xfc, 0x96, 0xfc, 0x97, 0xfc, 0xbb, 0xfc, 0xb9, 0xfc, + 0xec, 0xfc, 0xee, 0xfc, 0x27, 0xfd, 0x24, 0xfd, 0x6f, 0xfd, 0x70, 0xfd, + 0xc0, 0xfd, 0xc1, 0xfd, 0x1e, 0xfe, 0x1e, 0xfe, 0x83, 0xfe, 0x83, 0xfe, + 0xf0, 0xfe, 0xef, 0xfe, 0x62, 0xff, 0x62, 0xff, 0xdb, 0xff, 0xda, 0xff, + 0x56, 0x00, 0x57, 0x00, 0xd4, 0x00, 0xd3, 0x00, 0x51, 0x01, 0x52, 0x01, + 0xce, 0x01, 0xcd, 0x01, 0x47, 0x02, 0x47, 0x02, 0xbd, 0x02, 0xbb, 0x02, + 0x2a, 0x03, 0x2b, 0x03, 0x93, 0x03, 0x93, 0x03, 0xf2, 0x03, 0xf1, 0x03, + 0x48, 0x04, 0x48, 0x04, 0x93, 0x04, 0x94, 0x04, 0xd4, 0x04, 0xd5, 0x04, + 0x0a, 0x05, 0x0a, 0x05, 0x33, 0x05, 0x34, 0x05, 0x52, 0x05, 0x4f, 0x05, + 0x60, 0x05, 0x62, 0x05, 0x69, 0x05, 0x67, 0x05, 0x61, 0x05, 0x63, 0x05, + 0x52, 0x05, 0x51, 0x05, 0x39, 0x05, 0x3a, 0x05, 0x16, 0x05, 0x16, 0x05, + 0xef, 0x04, 0xf0, 0x04, 0xbf, 0x04, 0xbe, 0x04, 0x8d, 0x04, 0x8c, 0x04, + 0x54, 0x04, 0x56, 0x04, 0x1f, 0x04, 0x1d, 0x04, 0xe6, 0x03, 0xe7, 0x03, + 0xb1, 0x03, 0xb1, 0x03, 0x7e, 0x03, 0x7d, 0x03, 0x4e, 0x03, 0x4f, 0x03, + 0x26, 0x03, 0x25, 0x03, 0x02, 0x03, 0x01, 0x03, 0xe7, 0x02, 0xea, 0x02, + 0xd7, 0x02, 0xd5, 0x02, 0xcf, 0x02, 0xd0, 0x02, 0xce, 0x02, 0xce, 0x02, + 0xda, 0x02, 0xd9, 0x02, 0xee, 0x02, 0xf0, 0x02, 0x0b, 0x03, 0x0a, 0x03, + 0x36, 0x03, 0x36, 0x03, 0x63, 0x03, 0x63, 0x03, 0x9c, 0x03, 0x9d, 0x03, + 0xd9, 0x03, 0xd8, 0x03, 0x1d, 0x04, 0x1e, 0x04, 0x65, 0x04, 0x65, 0x04, + 0xac, 0x04, 0xad, 0x04, 0xf9, 0x04, 0xfa, 0x04, 0x45, 0x05, 0x42, 0x05, + 0x8c, 0x05, 0x8c, 0x05, 0xd2, 0x05, 0xd3, 0x05, 0x11, 0x06, 0x0e, 0x06, + 0x49, 0x06, 0x4b, 0x06, 0x7a, 0x06, 0x76, 0x06, 0x9f, 0x06, 0xa0, 0x06, + 0xbe, 0x06, 0xbb, 0x06, 0xca, 0x06, 0xca, 0x06, 0xd1, 0x06, 0xd1, 0x06, + 0xc5, 0x06, 0xc4, 0x06, 0xb0, 0x06, 0xb1, 0x06, 0x8e, 0x06, 0x8b, 0x06, + 0x5b, 0x06, 0x5d, 0x06, 0x1e, 0x06, 0x1f, 0x06, 0xd6, 0x05, 0xd7, 0x05, + 0x81, 0x05, 0x7f, 0x05, 0x21, 0x05, 0x24, 0x05, 0xba, 0x04, 0xba, 0x04, + 0x49, 0x04, 0x47, 0x04, 0xd2, 0x03, 0xd4, 0x03, 0x58, 0x03, 0x56, 0x03, + 0xd8, 0x02, 0xd8, 0x02, 0x5a, 0x02, 0x5c, 0x02, 0xdc, 0x01, 0xda, 0x01, + 0x5e, 0x01, 0x60, 0x01, 0xe7, 0x00, 0xe7, 0x00, 0x74, 0x00, 0x73, 0x00, + 0x06, 0x00, 0x07, 0x00, 0xa4, 0xff, 0xa3, 0xff, 0x47, 0xff, 0x48, 0xff, + 0xf8, 0xfe, 0xf8, 0xfe, 0xb3, 0xfe, 0xb2, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, + 0x4b, 0xfe, 0x4b, 0xfe, 0x2c, 0xfe, 0x2c, 0xfe, 0x17, 0xfe, 0x17, 0xfe, + 0x11, 0xfe, 0x0f, 0xfe, 0x11, 0xfe, 0x13, 0xfe, 0x20, 0xfe, 0x1f, 0xfe, + 0x36, 0xfe, 0x38, 0xfe, 0x58, 0xfe, 0x56, 0xfe, 0x80, 0xfe, 0x81, 0xfe, + 0xad, 0xfe, 0xad, 0xfe, 0xe0, 0xfe, 0xdf, 0xfe, 0x15, 0xff, 0x15, 0xff, + 0x4c, 0xff, 0x4b, 0xff, 0x83, 0xff, 0x83, 0xff, 0xb5, 0xff, 0xb4, 0xff, + 0xe8, 0xff, 0xe9, 0xff, 0x12, 0x00, 0x12, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x53, 0x00, 0x54, 0x00, 0x64, 0x00, 0x63, 0x00, 0x6c, 0x00, 0x6e, 0x00, + 0x6b, 0x00, 0x6b, 0x00, 0x5d, 0x00, 0x5b, 0x00, 0x42, 0x00, 0x45, 0x00, + 0x1f, 0x00, 0x1b, 0x00, 0xec, 0xff, 0xee, 0xff, 0xb2, 0xff, 0xb2, 0xff, + 0x69, 0xff, 0x69, 0xff, 0x1c, 0xff, 0x1b, 0xff, 0xc2, 0xfe, 0xc1, 0xfe, + 0x62, 0xfe, 0x61, 0xfe, 0xfb, 0xfd, 0xfd, 0xfd, 0x8d, 0xfd, 0x8c, 0xfd, + 0x1c, 0xfd, 0x1d, 0xfd, 0xaa, 0xfc, 0xa9, 0xfc, 0x37, 0xfc, 0x35, 0xfc, + 0xc3, 0xfb, 0xc5, 0xfb, 0x56, 0xfb, 0x55, 0xfb, 0xe7, 0xfa, 0xe8, 0xfa, + 0x83, 0xfa, 0x84, 0xfa, 0x24, 0xfa, 0x23, 0xfa, 0xd1, 0xf9, 0xd2, 0xf9, + 0x85, 0xf9, 0x83, 0xf9, 0x42, 0xf9, 0x45, 0xf9, 0x10, 0xf9, 0x0e, 0xf9, + 0xe6, 0xf8, 0xe6, 0xf8, 0xcc, 0xf8, 0xcb, 0xf8, 0xba, 0xf8, 0xbb, 0xf8, + 0xbb, 0xf8, 0xbc, 0xf8, 0xc7, 0xf8, 0xc8, 0xf8, 0xe0, 0xf8, 0xe0, 0xf8, + 0x04, 0xf9, 0x03, 0xf9, 0x32, 0xf9, 0x33, 0xf9, 0x6d, 0xf9, 0x6c, 0xf9, + 0xac, 0xf9, 0xae, 0xf9, 0xf9, 0xf9, 0xf6, 0xf9, 0x47, 0xfa, 0x49, 0xfa, + 0x9c, 0xfa, 0x9a, 0xfa, 0xf5, 0xfa, 0xf6, 0xfa, 0x4d, 0xfb, 0x4d, 0xfb, + 0xa5, 0xfb, 0xa7, 0xfb, 0xfd, 0xfb, 0xfc, 0xfb, 0x4f, 0xfc, 0x50, 0xfc, + 0xa0, 0xfc, 0x9f, 0xfc, 0xe8, 0xfc, 0xe8, 0xfc, 0x29, 0xfd, 0x29, 0xfd, + 0x60, 0xfd, 0x60, 0xfd, 0x92, 0xfd, 0x94, 0xfd, 0xb9, 0xfd, 0xb7, 0xfd, + 0xd4, 0xfd, 0xd6, 0xfd, 0xe9, 0xfd, 0xe6, 0xfd, 0xef, 0xfd, 0xf2, 0xfd, + 0xef, 0xfd, 0xed, 0xfd, 0xe4, 0xfd, 0xe3, 0xfd, 0xce, 0xfd, 0xcf, 0xfd, + 0xb7, 0xfd, 0xb5, 0xfd, 0x92, 0xfd, 0x92, 0xfd, 0x6c, 0xfd, 0x6c, 0xfd, + 0x3e, 0xfd, 0x3f, 0xfd, 0x12, 0xfd, 0x10, 0xfd, 0xe2, 0xfc, 0xe2, 0xfc, + 0xb1, 0xfc, 0xb1, 0xfc, 0x83, 0xfc, 0x84, 0xfc, 0x59, 0xfc, 0x59, 0xfc, + 0x34, 0xfc, 0x34, 0xfc, 0x16, 0xfc, 0x15, 0xfc, 0xfd, 0xfb, 0xfc, 0xfb, + 0xf0, 0xfb, 0xf1, 0xfb, 0xec, 0xfb, 0xe9, 0xfb, 0xf0, 0xfb, 0xf0, 0xfb, + 0x05, 0xfc, 0x05, 0xfc, 0x20, 0xfc, 0x20, 0xfc, 0x4b, 0xfc, 0x4b, 0xfc, + 0x80, 0xfc, 0x81, 0xfc, 0xc2, 0xfc, 0xc1, 0xfc, 0x0f, 0xfd, 0x0f, 0xfd, + 0x65, 0xfd, 0x66, 0xfd, 0xc7, 0xfd, 0xc5, 0xfd, 0x30, 0xfe, 0x31, 0xfe, + 0xa3, 0xfe, 0xa0, 0xfe, 0x17, 0xff, 0x17, 0xff, 0x93, 0xff, 0x94, 0xff, + 0x10, 0x00, 0x0f, 0x00, 0x90, 0x00, 0x93, 0x00, 0x10, 0x01, 0x0f, 0x01, + 0x8c, 0x01, 0x8e, 0x01, 0x06, 0x02, 0x07, 0x02, 0x7e, 0x02, 0x7c, 0x02, + 0xea, 0x02, 0xec, 0x02, 0x52, 0x03, 0x52, 0x03, 0xaf, 0x03, 0xaf, 0x03, + 0x02, 0x04, 0x03, 0x04, 0x4c, 0x04, 0x4b, 0x04, 0x86, 0x04, 0x87, 0x04, + 0xb8, 0x04, 0xb8, 0x04, 0xdc, 0x04, 0xda, 0x04, 0xf2, 0x04, 0xf4, 0x04, + 0xfe, 0x04, 0xfe, 0x04, 0xfd, 0x04, 0xfd, 0x04, 0xf0, 0x04, 0xf1, 0x04, + 0xda, 0x04, 0xd8, 0x04, 0xb5, 0x04, 0xb7, 0x04, 0x8f, 0x04, 0x8d, 0x04, + 0x5a, 0x04, 0x5b, 0x04, 0x25, 0x04, 0x23, 0x04, 0xe6, 0x03, 0xe6, 0x03, + 0xa8, 0x03, 0xa8, 0x03, 0x69, 0x03, 0x68, 0x03, 0x27, 0x03, 0x28, 0x03, + 0xea, 0x02, 0xea, 0x02, 0xb0, 0x02, 0xb1, 0x02, 0x7a, 0x02, 0x79, 0x02, + 0x4c, 0x02, 0x4d, 0x02, 0x27, 0x02, 0x25, 0x02, 0x07, 0x02, 0x0a, 0x02, + 0xf7, 0x01, 0xf5, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xef, 0x01, 0xee, 0x01, + 0xfc, 0x01, 0xfb, 0x01, 0x13, 0x02, 0x15, 0x02, 0x39, 0x02, 0x38, 0x02, + 0x66, 0x02, 0x66, 0x02, 0x9f, 0x02, 0x9e, 0x02, 0xde, 0x02, 0xe0, 0x02, + 0x29, 0x03, 0x2a, 0x03, 0x78, 0x03, 0x77, 0x03, 0xce, 0x03, 0xcf, 0x03, + 0x28, 0x04, 0x27, 0x04, 0x83, 0x04, 0x83, 0x04, 0xde, 0x04, 0xe0, 0x04, + 0x3e, 0x05, 0x3b, 0x05, 0x94, 0x05, 0x95, 0x05, 0xe9, 0x05, 0xe9, 0x05, + 0x35, 0x06, 0x36, 0x06, 0x7f, 0x06, 0x7f, 0x06, 0xbb, 0x06, 0xba, 0x06, + 0xee, 0x06, 0xef, 0x06, 0x17, 0x07, 0x15, 0x07, 0x31, 0x07, 0x32, 0x07, + 0x3f, 0x07, 0x3f, 0x07, 0x3e, 0x07, 0x3d, 0x07, 0x30, 0x07, 0x30, 0x07, + 0x13, 0x07, 0x13, 0x07, 0xe8, 0x06, 0xe7, 0x06, 0xaf, 0x06, 0xb0, 0x06, + 0x69, 0x06, 0x69, 0x06, 0x19, 0x06, 0x17, 0x06, 0xbd, 0x05, 0xbd, 0x05, + 0x57, 0x05, 0x56, 0x05, 0xe8, 0x04, 0xe7, 0x04, 0x74, 0x04, 0x73, 0x04, + 0xfa, 0x03, 0xfa, 0x03, 0x7d, 0x03, 0x7c, 0x03, 0xfc, 0x02, 0xfd, 0x02, + 0x80, 0x02, 0x80, 0x02, 0x03, 0x02, 0x03, 0x02, 0x8c, 0x01, 0x8a, 0x01, + 0x17, 0x01, 0x17, 0x01, 0xab, 0x00, 0xab, 0x00, 0x46, 0x00, 0x45, 0x00, + 0xeb, 0xff, 0xeb, 0xff, 0x9c, 0xff, 0x9b, 0xff, 0x53, 0xff, 0x52, 0xff, + 0x19, 0xff, 0x18, 0xff, 0xe9, 0xfe, 0xe9, 0xfe, 0xc5, 0xfe, 0xc7, 0xfe, + 0xb1, 0xfe, 0xb0, 0xfe, 0xa3, 0xfe, 0xa2, 0xfe, 0xa5, 0xfe, 0xa4, 0xfe, + 0xac, 0xfe, 0xaa, 0xfe, 0xc0, 0xfe, 0xbf, 0xfe, 0xdb, 0xfe, 0xdc, 0xfe, + 0xfd, 0xfe, 0xfa, 0xfe, 0x24, 0xff, 0x26, 0xff, 0x4f, 0xff, 0x4c, 0xff, + 0x7e, 0xff, 0x7e, 0xff, 0xaa, 0xff, 0xa9, 0xff, 0xda, 0xff, 0xd9, 0xff, + 0x03, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x4c, 0x00, 0x4c, 0x00, + 0x66, 0x00, 0x64, 0x00, 0x78, 0x00, 0x78, 0x00, 0x80, 0x00, 0x80, 0x00, + 0x81, 0x00, 0x7f, 0x00, 0x73, 0x00, 0x74, 0x00, 0x5e, 0x00, 0x5b, 0x00, + 0x3a, 0x00, 0x3c, 0x00, 0x11, 0x00, 0x0e, 0x00, 0xd8, 0xff, 0xd9, 0xff, + 0x99, 0xff, 0x99, 0xff, 0x4d, 0xff, 0x4e, 0xff, 0xfb, 0xfe, 0xfa, 0xfe, + 0xa2, 0xfe, 0xa2, 0xfe, 0x3e, 0xfe, 0x3e, 0xfe, 0xdd, 0xfd, 0xdb, 0xfd, + 0x6f, 0xfd, 0x71, 0xfd, 0x06, 0xfd, 0x04, 0xfd, 0x98, 0xfc, 0x99, 0xfc, + 0x2d, 0xfc, 0x2b, 0xfc, 0xc3, 0xfb, 0xc3, 0xfb, 0x5d, 0xfb, 0x5d, 0xfb, + 0x00, 0xfb, 0xff, 0xfa, 0xa5, 0xfa, 0xa4, 0xfa, 0x55, 0xfa, 0x56, 0xfa, + 0x0c, 0xfa, 0x0c, 0xfa, 0xce, 0xf9, 0xce, 0xf9, 0x9e, 0xf9, 0x9e, 0xf9, + 0x79, 0xf9, 0x77, 0xf9, 0x5d, 0xf9, 0x5f, 0xf9, 0x52, 0xf9, 0x4f, 0xf9, + 0x50, 0xf9, 0x52, 0xf9, 0x5d, 0xf9, 0x5c, 0xf9, 0x74, 0xf9, 0x74, 0xf9, + 0x96, 0xf9, 0x98, 0xf9, 0xc7, 0xf9, 0xc5, 0xf9, 0xfd, 0xf9, 0xfd, 0xf9, + 0x3e, 0xfa, 0x3b, 0xfa, 0x85, 0xfa, 0x85, 0xfa, 0xd1, 0xfa, 0xd0, 0xfa, + 0x21, 0xfb, 0x21, 0xfb, 0x75, 0xfb, 0x73, 0xfb, 0xc8, 0xfb, 0xc8, 0xfb, + 0x1b, 0xfc, 0x1b, 0xfc, 0x6d, 0xfc, 0x6b, 0xfc, 0xb8, 0xfc, 0xb9, 0xfc, + 0x01, 0xfd, 0x00, 0xfd, 0x41, 0xfd, 0x40, 0xfd, 0x7b, 0xfd, 0x7a, 0xfd, + 0xaa, 0xfd, 0xaa, 0xfd, 0xd1, 0xfd, 0xcf, 0xfd, 0xeb, 0xfd, 0xee, 0xfd, + 0xff, 0xfd, 0xfc, 0xfd, 0x03, 0xfe, 0x04, 0xfe, 0x00, 0xfe, 0xff, 0xfd, + 0xf2, 0xfd, 0xf1, 0xfd, 0xd8, 0xfd, 0xd9, 0xfd, 0xb9, 0xfd, 0xb7, 0xfd, + 0x8c, 0xfd, 0x8f, 0xfd, 0x5d, 0xfd, 0x5b, 0xfd, 0x27, 0xfd, 0x27, 0xfd, + 0xea, 0xfc, 0xe9, 0xfc, 0xae, 0xfc, 0xad, 0xfc, 0x6b, 0xfc, 0x6c, 0xfc, + 0x2e, 0xfc, 0x2f, 0xfc, 0xef, 0xfb, 0xee, 0xfb, 0xb7, 0xfb, 0xb8, 0xfb, + 0x84, 0xfb, 0x83, 0xfb, 0x53, 0xfb, 0x54, 0xfb, 0x32, 0xfb, 0x30, 0xfb, + 0x14, 0xfb, 0x14, 0xfb, 0x04, 0xfb, 0x05, 0xfb, 0x01, 0xfb, 0x00, 0xfb, + 0x07, 0xfb, 0x08, 0xfb, 0x1c, 0xfb, 0x1d, 0xfb, 0x40, 0xfb, 0x3f, 0xfb, + 0x6f, 0xfb, 0x71, 0xfb, 0xae, 0xfb, 0xad, 0xfb, 0xf7, 0xfb, 0xf9, 0xfb, + 0x51, 0xfc, 0x50, 0xfc, 0xb0, 0xfc, 0xb0, 0xfc, 0x1f, 0xfd, 0x1e, 0xfd, + 0x95, 0xfd, 0x97, 0xfd, 0x12, 0xfe, 0x11, 0xfe, 0x98, 0xfe, 0x98, 0xfe, + 0x1d, 0xff, 0x1d, 0xff, 0xab, 0xff, 0xab, 0xff, 0x34, 0x00, 0x34, 0x00, + 0xc0, 0x00, 0xc1, 0x00, 0x4b, 0x01, 0x4a, 0x01, 0xce, 0x01, 0xcd, 0x01, + 0x4d, 0x02, 0x4e, 0x02, 0xc4, 0x02, 0xc2, 0x02, 0x31, 0x03, 0x34, 0x03, + 0x97, 0x03, 0x94, 0x03, 0xed, 0x03, 0xef, 0x03, 0x3a, 0x04, 0x39, 0x04, + 0x7a, 0x04, 0x7a, 0x04, 0xad, 0x04, 0xad, 0x04, 0xd2, 0x04, 0xd1, 0x04, + 0xe9, 0x04, 0xe9, 0x04, 0xf4, 0x04, 0xf3, 0x04, 0xf0, 0x04, 0xf1, 0x04, + 0xe4, 0x04, 0xe2, 0x04, 0xc8, 0x04, 0xc9, 0x04, 0xa4, 0x04, 0xa3, 0x04, + 0x78, 0x04, 0x78, 0x04, 0x42, 0x04, 0x43, 0x04, 0x09, 0x04, 0x08, 0x04, + 0xc8, 0x03, 0xca, 0x03, 0x87, 0x03, 0x86, 0x03, 0x43, 0x03, 0x43, 0x03, + 0x00, 0x03, 0x01, 0x03, 0xc2, 0x02, 0xbf, 0x02, 0x83, 0x02, 0x87, 0x02, + 0x4e, 0x02, 0x4b, 0x02, 0x1f, 0x02, 0x21, 0x02, 0xf8, 0x01, 0xf7, 0x01, + 0xda, 0x01, 0xdb, 0x01, 0xc5, 0x01, 0xc5, 0x01, 0xbd, 0x01, 0xbd, 0x01, + 0xc0, 0x01, 0xbe, 0x01, 0xcb, 0x01, 0xcd, 0x01, 0xe4, 0x01, 0xe2, 0x01, + 0x07, 0x02, 0x07, 0x02, 0x36, 0x02, 0x37, 0x02, 0x6b, 0x02, 0x69, 0x02, + 0xaf, 0x02, 0xae, 0x02, 0xf1, 0x02, 0xf2, 0x02, 0x43, 0x03, 0x43, 0x03, + 0x97, 0x03, 0x95, 0x03, 0xec, 0x03, 0xec, 0x03, 0x46, 0x04, 0x45, 0x04, + 0x9d, 0x04, 0x9d, 0x04, 0xf7, 0x04, 0xf7, 0x04, 0x4a, 0x05, 0x49, 0x05, + 0x9a, 0x05, 0x99, 0x05, 0xe2, 0x05, 0xe2, 0x05, 0x26, 0x06, 0x25, 0x06, + 0x5e, 0x06, 0x5d, 0x06, 0x8e, 0x06, 0x8f, 0x06, 0xaf, 0x06, 0xae, 0x06, + 0xc9, 0x06, 0xc8, 0x06, 0xcf, 0x06, 0xcf, 0x06, 0xcd, 0x06, 0xcd, 0x06, + 0xbc, 0x06, 0xbb, 0x06, 0x9f, 0x06, 0x9d, 0x06, 0x72, 0x06, 0x72, 0x06, + 0x39, 0x06, 0x3a, 0x06, 0xf8, 0x05, 0xf4, 0x05, 0xa6, 0x05, 0xa8, 0x05, + 0x52, 0x05, 0x4e, 0x05, 0xef, 0x04, 0xf0, 0x04, 0x8a, 0x04, 0x87, 0x04, + 0x1c, 0x04, 0x1d, 0x04, 0xad, 0x03, 0xac, 0x03, 0x3c, 0x03, 0x3b, 0x03, + 0xc9, 0x02, 0xc9, 0x02, 0x5b, 0x02, 0x5a, 0x02, 0xed, 0x01, 0xec, 0x01, + 0x86, 0x01, 0x86, 0x01, 0x25, 0x01, 0x24, 0x01, 0xcb, 0x00, 0xcc, 0x00, + 0x7d, 0x00, 0x7a, 0x00, 0x33, 0x00, 0x33, 0x00, 0xfa, 0xff, 0xfa, 0xff, + 0xc8, 0xff, 0xc7, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0x89, 0xff, 0x89, 0xff, + 0x7c, 0xff, 0x7b, 0xff, 0x77, 0xff, 0x79, 0xff, 0x7f, 0xff, 0x7f, 0xff, + 0x90, 0xff, 0x90, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xcc, 0xff, 0xcb, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0x21, 0x00, 0x20, 0x00, 0x4f, 0x00, 0x4f, 0x00, + 0x83, 0x00, 0x82, 0x00, 0xb4, 0x00, 0xb2, 0x00, 0xe4, 0x00, 0xe4, 0x00, + 0x11, 0x01, 0x0f, 0x01, 0x38, 0x01, 0x37, 0x01, 0x59, 0x01, 0x59, 0x01, + 0x73, 0x01, 0x71, 0x01, 0x82, 0x01, 0x80, 0x01, 0x88, 0x01, 0x88, 0x01, + 0x80, 0x01, 0x7f, 0x01, 0x6e, 0x01, 0x6d, 0x01, 0x52, 0x01, 0x50, 0x01, + 0x25, 0x01, 0x26, 0x01, 0xf0, 0x00, 0xf1, 0x00, 0xae, 0x00, 0xad, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0x09, 0x00, 0x07, 0x00, 0xa7, 0xff, 0xa7, 0xff, + 0x3c, 0xff, 0x3c, 0xff, 0xce, 0xfe, 0xcc, 0xfe, 0x55, 0xfe, 0x56, 0xfe, + 0xdb, 0xfd, 0xdb, 0xfd, 0x5e, 0xfd, 0x5d, 0xfd, 0xe0, 0xfc, 0xe1, 0xfc, + 0x64, 0xfc, 0x64, 0xfc, 0xea, 0xfb, 0xea, 0xfb, 0x75, 0xfb, 0x75, 0xfb, + 0x04, 0xfb, 0x04, 0xfb, 0x9e, 0xfa, 0x9f, 0xfa, 0x3f, 0xfa, 0x3e, 0xfa, + 0xec, 0xf9, 0xed, 0xf9, 0xa4, 0xf9, 0xa2, 0xf9, 0x68, 0xf9, 0x68, 0xf9, + 0x3a, 0xf9, 0x38, 0xf9, 0x1a, 0xf9, 0x18, 0xf9, 0x06, 0xf9, 0x05, 0xf9, + 0x03, 0xf9, 0x02, 0xf9, 0x0c, 0xf9, 0x09, 0xf9, 0x21, 0xf9, 0x22, 0xf9, + 0x48, 0xf9, 0x45, 0xf9, 0x76, 0xf9, 0x76, 0xf9, 0xb0, 0xf9, 0xaf, 0xf9, + 0xf5, 0xf9, 0xf5, 0xf9, 0x41, 0xfa, 0x40, 0xfa, 0x97, 0xfa, 0x98, 0xfa, + 0xf0, 0xfa, 0xee, 0xfa, 0x4c, 0xfb, 0x4c, 0xfb, 0xa9, 0xfb, 0xaa, 0xfb, + 0x07, 0xfc, 0x06, 0xfc, 0x63, 0xfc, 0x64, 0xfc, 0xbb, 0xfc, 0xb9, 0xfc, + 0x0f, 0xfd, 0x0f, 0xfd, 0x59, 0xfd, 0x59, 0xfd, 0x9e, 0xfd, 0x9e, 0xfd, + 0xd8, 0xfd, 0xd7, 0xfd, 0x08, 0xfe, 0x08, 0xfe, 0x2d, 0xfe, 0x2c, 0xfe, + 0x44, 0xfe, 0x45, 0xfe, 0x56, 0xfe, 0x54, 0xfe, 0x52, 0xfe, 0x53, 0xfe, + 0x4a, 0xfe, 0x49, 0xfe, 0x33, 0xfe, 0x32, 0xfe, 0x10, 0xfe, 0x11, 0xfe, + 0xe9, 0xfd, 0xe7, 0xfd, 0xb2, 0xfd, 0xb5, 0xfd, 0x79, 0xfd, 0x77, 0xfd, + 0x37, 0xfd, 0x37, 0xfd, 0xf0, 0xfc, 0xef, 0xfc, 0xaa, 0xfc, 0xaa, 0xfc, + 0x5e, 0xfc, 0x5e, 0xfc, 0x18, 0xfc, 0x17, 0xfc, 0xd0, 0xfb, 0xcf, 0xfb, + 0x8f, 0xfb, 0x8f, 0xfb, 0x50, 0xfb, 0x52, 0xfb, 0x1f, 0xfb, 0x1e, 0xfb, + 0xf3, 0xfa, 0xf3, 0xfa, 0xd3, 0xfa, 0xd2, 0xfa, 0xbf, 0xfa, 0xbe, 0xfa, + 0xb2, 0xfa, 0xb3, 0xfa, 0xba, 0xfa, 0xb8, 0xfa, 0xc8, 0xfa, 0xca, 0xfa, + 0xeb, 0xfa, 0xe9, 0xfa, 0x18, 0xfb, 0x18, 0xfb, 0x56, 0xfb, 0x55, 0xfb, + 0x9d, 0xfb, 0x9d, 0xfb, 0xf4, 0xfb, 0xf3, 0xfb, 0x52, 0xfc, 0x52, 0xfc, + 0xbe, 0xfc, 0xbd, 0xfc, 0x32, 0xfd, 0x30, 0xfd, 0xac, 0xfd, 0xac, 0xfd, + 0x2e, 0xfe, 0x2c, 0xfe, 0xb1, 0xfe, 0xb1, 0xfe, 0x38, 0xff, 0x37, 0xff, + 0xbe, 0xff, 0xbe, 0xff, 0x45, 0x00, 0x44, 0x00, 0xc7, 0x00, 0xc4, 0x00, + 0x45, 0x01, 0x47, 0x01, 0xba, 0x01, 0xb6, 0x01, 0x2a, 0x02, 0x2b, 0x02, + 0x90, 0x02, 0x90, 0x02, 0xeb, 0x02, 0xea, 0x02, 0x3b, 0x03, 0x3a, 0x03, + 0x7d, 0x03, 0x7d, 0x03, 0xb6, 0x03, 0xb4, 0x03, 0xdf, 0x03, 0xe0, 0x03, + 0xfc, 0x03, 0xfb, 0x03, 0x0e, 0x04, 0x0e, 0x04, 0x10, 0x04, 0x0f, 0x04, + 0x0b, 0x04, 0x0a, 0x04, 0xf6, 0x03, 0xf6, 0x03, 0xdb, 0x03, 0xda, 0x03, + 0xb8, 0x03, 0xb7, 0x03, 0x87, 0x03, 0x89, 0x03, 0x5b, 0x03, 0x5a, 0x03, + 0x20, 0x03, 0x1f, 0x03, 0xe8, 0x02, 0xeb, 0x02, 0xb1, 0x02, 0xae, 0x02, + 0x77, 0x02, 0x78, 0x02, 0x42, 0x02, 0x42, 0x02, 0x0f, 0x02, 0x0d, 0x02, + 0xe5, 0x01, 0xe6, 0x01, 0xc0, 0x01, 0xbe, 0x01, 0xa3, 0x01, 0xa4, 0x01, + 0x91, 0x01, 0x91, 0x01, 0x88, 0x01, 0x88, 0x01, 0x8b, 0x01, 0x8c, 0x01, + 0x9a, 0x01, 0x97, 0x01, 0xaf, 0x01, 0xb1, 0x01, 0xd5, 0x01, 0xd4, 0x01, + 0x01, 0x02, 0x03, 0x02, 0x3c, 0x02, 0x3a, 0x02, 0x7d, 0x02, 0x80, 0x02, + 0xc7, 0x02, 0xc6, 0x02, 0x19, 0x03, 0x1a, 0x03, 0x71, 0x03, 0x70, 0x03, + 0xcb, 0x03, 0xcc, 0x03, 0x2b, 0x04, 0x2c, 0x04, 0x8b, 0x04, 0x8a, 0x04, + 0xea, 0x04, 0xeb, 0x04, 0x49, 0x05, 0x4a, 0x05, 0xa1, 0x05, 0xa1, 0x05, + 0xf4, 0x05, 0xf5, 0x05, 0x44, 0x06, 0x42, 0x06, 0x85, 0x06, 0x86, 0x06, + 0xc0, 0x06, 0xc0, 0x06, 0xec, 0x06, 0xef, 0x06, 0x11, 0x07, 0x11, 0x07, + 0x26, 0x07, 0x28, 0x07, 0x2f, 0x07, 0x2e, 0x07, 0x28, 0x07, 0x2b, 0x07, + 0x14, 0x07, 0x13, 0x07, 0xf2, 0x06, 0xf2, 0x06, 0xc1, 0x06, 0xc2, 0x06, + 0x84, 0x06, 0x83, 0x06, 0x3a, 0x06, 0x3c, 0x06, 0xe8, 0x05, 0xe7, 0x05, + 0x89, 0x05, 0x8a, 0x05, 0x21, 0x05, 0x22, 0x05, 0xb5, 0x04, 0xb4, 0x04, + 0x41, 0x04, 0x43, 0x04, 0xce, 0x03, 0xcc, 0x03, 0x54, 0x03, 0x56, 0x03, + 0xdf, 0x02, 0xdd, 0x02, 0x69, 0x02, 0x6b, 0x02, 0xf9, 0x01, 0xf9, 0x01, + 0x8f, 0x01, 0x8e, 0x01, 0x2c, 0x01, 0x2c, 0x01, 0xd0, 0x00, 0xd0, 0x00, + 0x82, 0x00, 0x81, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xd0, 0xff, 0xd2, 0xff, 0xb2, 0xff, 0xb1, 0xff, 0x9a, 0xff, 0x9b, 0xff, + 0x92, 0xff, 0x93, 0xff, 0x98, 0xff, 0x97, 0xff, 0xa5, 0xff, 0xa7, 0xff, + 0xc2, 0xff, 0xc1, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0x12, 0x00, 0x10, 0x00, + 0x44, 0x00, 0x44, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0xba, 0x00, 0xba, 0x00, + 0xf9, 0x00, 0xf9, 0x00, 0x38, 0x01, 0x37, 0x01, 0x77, 0x01, 0x77, 0x01, + 0xb0, 0x01, 0xae, 0x01, 0xe5, 0x01, 0xe5, 0x01, 0x15, 0x02, 0x13, 0x02, + 0x38, 0x02, 0x39, 0x02, 0x57, 0x02, 0x55, 0x02, 0x65, 0x02, 0x64, 0x02, + 0x6c, 0x02, 0x6b, 0x02, 0x63, 0x02, 0x62, 0x02, 0x4f, 0x02, 0x4e, 0x02, + 0x2d, 0x02, 0x2e, 0x02, 0xfd, 0x01, 0xfd, 0x01, 0xc2, 0x01, 0xc2, 0x01, + 0x78, 0x01, 0x77, 0x01, 0x25, 0x01, 0x22, 0x01, 0xc4, 0x00, 0xc4, 0x00, + 0x5c, 0x00, 0x5a, 0x00, 0xe8, 0xff, 0xe9, 0xff, 0x71, 0xff, 0x71, 0xff, + 0xf5, 0xfe, 0xf3, 0xfe, 0x71, 0xfe, 0x72, 0xfe, 0xf0, 0xfd, 0xee, 0xfd, + 0x68, 0xfd, 0x6a, 0xfd, 0xe9, 0xfc, 0xe8, 0xfc, 0x67, 0xfc, 0x67, 0xfc, + 0xf0, 0xfb, 0xef, 0xfb, 0x7b, 0xfb, 0x7b, 0xfb, 0x11, 0xfb, 0x0f, 0xfb, + 0xad, 0xfa, 0xad, 0xfa, 0x58, 0xfa, 0x56, 0xfa, 0x0d, 0xfa, 0x0d, 0xfa, + 0xcd, 0xf9, 0xcb, 0xf9, 0x9e, 0xf9, 0x9d, 0xf9, 0x79, 0xf9, 0x77, 0xf9, + 0x66, 0xf9, 0x66, 0xf9, 0x5f, 0xf9, 0x5d, 0xf9, 0x65, 0xf9, 0x64, 0xf9, + 0x78, 0xf9, 0x78, 0xf9, 0x99, 0xf9, 0x97, 0xf9, 0xc4, 0xf9, 0xc3, 0xf9, + 0xf8, 0xf9, 0xf8, 0xf9, 0x38, 0xfa, 0x36, 0xfa, 0x7c, 0xfa, 0x7b, 0xfa, + 0xc8, 0xfa, 0xc8, 0xfa, 0x16, 0xfb, 0x14, 0xfb, 0x68, 0xfb, 0x69, 0xfb, + 0xbb, 0xfb, 0xba, 0xfb, 0x0e, 0xfc, 0x0d, 0xfc, 0x5b, 0xfc, 0x5d, 0xfc, + 0xa7, 0xfc, 0xa5, 0xfc, 0xed, 0xfc, 0xee, 0xfc, 0x2a, 0xfd, 0x29, 0xfd, + 0x61, 0xfd, 0x62, 0xfd, 0x8d, 0xfd, 0x8c, 0xfd, 0xb0, 0xfd, 0xb0, 0xfd, + 0xc7, 0xfd, 0xc8, 0xfd, 0xd4, 0xfd, 0xd2, 0xfd, 0xd5, 0xfd, 0xd7, 0xfd, + 0xcc, 0xfd, 0xc9, 0xfd, 0xb7, 0xfd, 0xb8, 0xfd, 0x9a, 0xfd, 0x99, 0xfd, + 0x71, 0xfd, 0x70, 0xfd, 0x42, 0xfd, 0x42, 0xfd, 0x0b, 0xfd, 0x0c, 0xfd, + 0xcf, 0xfc, 0xcd, 0xfc, 0x8e, 0xfc, 0x8f, 0xfc, 0x4a, 0xfc, 0x49, 0xfc, + 0x06, 0xfc, 0x08, 0xfc, 0xc2, 0xfb, 0xc3, 0xfb, 0x83, 0xfb, 0x83, 0xfb, + 0x45, 0xfb, 0x44, 0xfb, 0x0d, 0xfb, 0x0d, 0xfb, 0xdf, 0xfa, 0xdf, 0xfa, + 0xb5, 0xfa, 0xb6, 0xfa, 0x9b, 0xfa, 0x9a, 0xfa, 0x86, 0xfa, 0x87, 0xfa, + 0x81, 0xfa, 0x81, 0xfa, 0x88, 0xfa, 0x89, 0xfa, 0x99, 0xfa, 0x9a, 0xfa, + 0xbb, 0xfa, 0xbb, 0xfa, 0xea, 0xfa, 0xea, 0xfa, 0x24, 0xfb, 0x25, 0xfb, + 0x6e, 0xfb, 0x6c, 0xfb, 0xbf, 0xfb, 0xc1, 0xfb, 0x20, 0xfc, 0x20, 0xfc, + 0x87, 0xfc, 0x86, 0xfc, 0xf7, 0xfc, 0xf9, 0xfc, 0x6e, 0xfd, 0x6e, 0xfd, + 0xea, 0xfd, 0xe9, 0xfd, 0x6a, 0xfe, 0x6a, 0xfe, 0xe9, 0xfe, 0xe8, 0xfe, + 0x6b, 0xff, 0x6d, 0xff, 0xeb, 0xff, 0xea, 0xff, 0x64, 0x00, 0x66, 0x00, + 0xe0, 0x00, 0xdd, 0x00, 0x4c, 0x01, 0x4e, 0x01, 0xb5, 0x01, 0xb4, 0x01, + 0x13, 0x02, 0x15, 0x02, 0x68, 0x02, 0x65, 0x02, 0xb2, 0x02, 0xb3, 0x02, + 0xed, 0x02, 0xeb, 0x02, 0x1c, 0x03, 0x1c, 0x03, 0x40, 0x03, 0x3f, 0x03, + 0x56, 0x03, 0x56, 0x03, 0x5e, 0x03, 0x5e, 0x03, 0x5f, 0x03, 0x5d, 0x03, + 0x4e, 0x03, 0x4e, 0x03, 0x36, 0x03, 0x38, 0x03, 0x15, 0x03, 0x15, 0x03, + 0xec, 0x02, 0xec, 0x02, 0xb9, 0x02, 0xb9, 0x02, 0x85, 0x02, 0x84, 0x02, + 0x4a, 0x02, 0x4a, 0x02, 0x0e, 0x02, 0x0e, 0x02, 0xd2, 0x01, 0xd4, 0x01, + 0x97, 0x01, 0x94, 0x01, 0x60, 0x01, 0x61, 0x01, 0x2b, 0x01, 0x2c, 0x01, + 0x01, 0x01, 0x00, 0x01, 0xdc, 0x00, 0xdd, 0x00, 0xc2, 0x00, 0xc2, 0x00, + 0xb1, 0x00, 0xb1, 0x00, 0xab, 0x00, 0xad, 0x00, 0xb2, 0x00, 0xb2, 0x00, + 0xc5, 0x00, 0xc4, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0x0e, 0x01, 0x0b, 0x01, + 0x3f, 0x01, 0x40, 0x01, 0x82, 0x01, 0x82, 0x01, 0xca, 0x01, 0xc9, 0x01, + 0x1d, 0x02, 0x1e, 0x02, 0x7a, 0x02, 0x7a, 0x02, 0xda, 0x02, 0xda, 0x02, + 0x44, 0x03, 0x43, 0x03, 0xac, 0x03, 0xad, 0x03, 0x19, 0x04, 0x19, 0x04, + 0x84, 0x04, 0x86, 0x04, 0xf1, 0x04, 0xf1, 0x04, 0x5a, 0x05, 0x5a, 0x05, + 0xbc, 0x05, 0xbc, 0x05, 0x19, 0x06, 0x1a, 0x06, 0x6b, 0x06, 0x6c, 0x06, + 0xb8, 0x06, 0xb6, 0x06, 0xf3, 0x06, 0xf4, 0x06, 0x29, 0x07, 0x29, 0x07, + 0x4c, 0x07, 0x4b, 0x07, 0x64, 0x07, 0x65, 0x07, 0x6c, 0x07, 0x6c, 0x07, + 0x66, 0x07, 0x66, 0x07, 0x53, 0x07, 0x53, 0x07, 0x30, 0x07, 0x2f, 0x07, + 0xfe, 0x06, 0xfe, 0x06, 0xc3, 0x06, 0xc3, 0x06, 0x76, 0x06, 0x78, 0x06, + 0x23, 0x06, 0x24, 0x06, 0xc4, 0x05, 0xc3, 0x05, 0x5e, 0x05, 0x5f, 0x05, + 0xf1, 0x04, 0xf0, 0x04, 0x7e, 0x04, 0x80, 0x04, 0x0c, 0x04, 0x09, 0x04, + 0x94, 0x03, 0x95, 0x03, 0x20, 0x03, 0x1e, 0x03, 0xab, 0x02, 0xae, 0x02, + 0x41, 0x02, 0x3e, 0x02, 0xd9, 0x01, 0xdb, 0x01, 0x77, 0x01, 0x77, 0x01, + 0x21, 0x01, 0x21, 0x01, 0xd3, 0x00, 0xd3, 0x00, 0x90, 0x00, 0x90, 0x00, + 0x59, 0x00, 0x5a, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x0d, 0x00, 0x11, 0x00, + 0xfc, 0xff, 0xfb, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0x09, 0x00, 0x09, 0x00, 0x26, 0x00, 0x25, 0x00, 0x46, 0x00, 0x48, 0x00, + 0x74, 0x00, 0x72, 0x00, 0xa5, 0x00, 0xa7, 0x00, 0xdb, 0x00, 0xda, 0x00, + 0x13, 0x01, 0x14, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x88, 0x01, 0x86, 0x01, + 0xc1, 0x01, 0xc1, 0x01, 0xf5, 0x01, 0xf4, 0x01, 0x25, 0x02, 0x24, 0x02, + 0x4c, 0x02, 0x4c, 0x02, 0x6e, 0x02, 0x6c, 0x02, 0x82, 0x02, 0x80, 0x02, + 0x8e, 0x02, 0x8d, 0x02, 0x8c, 0x02, 0x8a, 0x02, 0x7e, 0x02, 0x7e, 0x02, + 0x66, 0x02, 0x65, 0x02, 0x3f, 0x02, 0x3e, 0x02, 0x0c, 0x02, 0x0d, 0x02, + 0xce, 0x01, 0xcc, 0x01, 0x83, 0x01, 0x84, 0x01, 0x30, 0x01, 0x2d, 0x01, + 0xd0, 0x00, 0xd1, 0x00, 0x6b, 0x00, 0x68, 0x00, 0xfc, 0xff, 0xfc, 0xff, + 0x87, 0xff, 0x86, 0xff, 0x11, 0xff, 0x12, 0xff, 0x96, 0xfe, 0x94, 0xfe, + 0x19, 0xfe, 0x1b, 0xfe, 0xa2, 0xfd, 0xa0, 0xfd, 0x28, 0xfd, 0x28, 0xfd, + 0xb5, 0xfc, 0xb7, 0xfc, 0x46, 0xfc, 0x44, 0xfc, 0xe0, 0xfb, 0xe2, 0xfb, + 0x81, 0xfb, 0x80, 0xfb, 0x2f, 0xfb, 0x2d, 0xfb, 0xe4, 0xfa, 0xe6, 0xfa, + 0xa8, 0xfa, 0xa5, 0xfa, 0x74, 0xfa, 0x75, 0xfa, 0x51, 0xfa, 0x4f, 0xfa, + 0x39, 0xfa, 0x38, 0xfa, 0x2f, 0xfa, 0x2f, 0xfa, 0x32, 0xfa, 0x31, 0xfa, + 0x40, 0xfa, 0x3e, 0xfa, 0x5a, 0xfa, 0x5a, 0xfa, 0x7f, 0xfa, 0x7e, 0xfa, + 0xaf, 0xfa, 0xad, 0xfa, 0xe6, 0xfa, 0xe6, 0xfa, 0x22, 0xfb, 0x22, 0xfb, + 0x69, 0xfb, 0x67, 0xfb, 0xac, 0xfb, 0xac, 0xfb, 0xf9, 0xfb, 0xf8, 0xfb, + 0x41, 0xfc, 0x3f, 0xfc, 0x89, 0xfc, 0x8a, 0xfc, 0xd0, 0xfc, 0xcf, 0xfc, + 0x10, 0xfd, 0x11, 0xfd, 0x4e, 0xfd, 0x4c, 0xfd, 0x80, 0xfd, 0x80, 0xfd, + 0xae, 0xfd, 0xad, 0xfd, 0xcf, 0xfd, 0xce, 0xfd, 0xe7, 0xfd, 0xe7, 0xfd, + 0xf5, 0xfd, 0xf4, 0xfd, 0xf5, 0xfd, 0xf6, 0xfd, 0xed, 0xfd, 0xed, 0xfd, + 0xd7, 0xfd, 0xd9, 0xfd, 0xba, 0xfd, 0xb8, 0xfd, 0x8f, 0xfd, 0x90, 0xfd, + 0x5c, 0xfd, 0x5b, 0xfd, 0x21, 0xfd, 0x23, 0xfd, 0xe0, 0xfc, 0xde, 0xfc, + 0x97, 0xfc, 0x96, 0xfc, 0x4c, 0xfc, 0x4d, 0xfc, 0xfa, 0xfb, 0xfb, 0xfb, + 0xad, 0xfb, 0xae, 0xfb, 0x5e, 0xfb, 0x5d, 0xfb, 0x12, 0xfb, 0x12, 0xfb, + 0xca, 0xfa, 0xca, 0xfa, 0x87, 0xfa, 0x89, 0xfa, 0x50, 0xfa, 0x4e, 0xfa, + 0x1e, 0xfa, 0x20, 0xfa, 0xf9, 0xf9, 0xf7, 0xf9, 0xdf, 0xf9, 0xe0, 0xf9, + 0xd0, 0xf9, 0xd1, 0xf9, 0xd3, 0xf9, 0xd2, 0xf9, 0xe0, 0xf9, 0xdf, 0xf9, + 0xfe, 0xf9, 0xff, 0xf9, 0x2b, 0xfa, 0x29, 0xfa, 0x62, 0xfa, 0x65, 0xfa, + 0xac, 0xfa, 0xaa, 0xfa, 0xfd, 0xfa, 0x00, 0xfb, 0x61, 0xfb, 0x5e, 0xfb, + 0xcb, 0xfb, 0xcb, 0xfb, 0x3e, 0xfc, 0x3e, 0xfc, 0xbb, 0xfc, 0xbd, 0xfc, + 0x3f, 0xfd, 0x3e, 0xfd, 0xc5, 0xfd, 0xc6, 0xfd, 0x50, 0xfe, 0x4f, 0xfe, + 0xda, 0xfe, 0xda, 0xfe, 0x63, 0xff, 0x66, 0xff, 0xec, 0xff, 0xe9, 0xff, + 0x6c, 0x00, 0x6d, 0x00, 0xe9, 0x00, 0xe8, 0x00, 0x5c, 0x01, 0x5c, 0x01, + 0xc5, 0x01, 0xc5, 0x01, 0x25, 0x02, 0x24, 0x02, 0x77, 0x02, 0x75, 0x02, + 0xbf, 0x02, 0xbf, 0x02, 0xf8, 0x02, 0xf6, 0x02, 0x24, 0x03, 0x25, 0x03, + 0x43, 0x03, 0x41, 0x03, 0x52, 0x03, 0x53, 0x03, 0x56, 0x03, 0x56, 0x03, + 0x4d, 0x03, 0x4c, 0x03, 0x38, 0x03, 0x37, 0x03, 0x18, 0x03, 0x18, 0x03, + 0xee, 0x02, 0xee, 0x02, 0xbb, 0x02, 0xbb, 0x02, 0x83, 0x02, 0x82, 0x02, + 0x46, 0x02, 0x46, 0x02, 0x04, 0x02, 0x03, 0x02, 0xc1, 0x01, 0xc0, 0x01, + 0x7e, 0x01, 0x7e, 0x01, 0x3d, 0x01, 0x3c, 0x01, 0x01, 0x01, 0xff, 0x00, + 0xc8, 0x00, 0xc9, 0x00, 0x99, 0x00, 0x99, 0x00, 0x73, 0x00, 0x70, 0x00, + 0x56, 0x00, 0x57, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3d, 0x00, 0x3d, 0x00, + 0x42, 0x00, 0x3f, 0x00, 0x51, 0x00, 0x50, 0x00, 0x70, 0x00, 0x6f, 0x00, + 0x95, 0x00, 0x95, 0x00, 0xcc, 0x00, 0xcb, 0x00, 0x0b, 0x01, 0x09, 0x01, + 0x54, 0x01, 0x53, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0x01, 0x02, 0xff, 0x01, + 0x63, 0x02, 0x63, 0x02, 0xc9, 0x02, 0xc9, 0x02, 0x33, 0x03, 0x31, 0x03, + 0x9e, 0x03, 0x9f, 0x03, 0x0b, 0x04, 0x0a, 0x04, 0x73, 0x04, 0x74, 0x04, + 0xda, 0x04, 0xda, 0x04, 0x3e, 0x05, 0x3c, 0x05, 0x97, 0x05, 0x97, 0x05, + 0xeb, 0x05, 0xea, 0x05, 0x32, 0x06, 0x33, 0x06, 0x72, 0x06, 0x72, 0x06, + 0xa3, 0x06, 0xa2, 0x06, 0xca, 0x06, 0xc9, 0x06, 0xe0, 0x06, 0xe0, 0x06, + 0xeb, 0x06, 0xeb, 0x06, 0xe8, 0x06, 0xe8, 0x06, 0xd5, 0x06, 0xd4, 0x06, + 0xb6, 0x06, 0xb6, 0x06, 0x8a, 0x06, 0x8b, 0x06, 0x51, 0x06, 0x51, 0x06, + 0x0f, 0x06, 0x0e, 0x06, 0xc3, 0x05, 0xc3, 0x05, 0x6b, 0x05, 0x6b, 0x05, + 0x0f, 0x05, 0x0f, 0x05, 0xad, 0x04, 0xac, 0x04, 0x47, 0x04, 0x46, 0x04, + 0xe0, 0x03, 0xdf, 0x03, 0x79, 0x03, 0x78, 0x03, 0x12, 0x03, 0x11, 0x03, + 0xaf, 0x02, 0xb0, 0x02, 0x52, 0x02, 0x50, 0x02, 0xfb, 0x01, 0xfc, 0x01, + 0xad, 0x01, 0xac, 0x01, 0x68, 0x01, 0x68, 0x01, 0x2c, 0x01, 0x2a, 0x01, + 0xfb, 0x00, 0xfc, 0x00, 0xd6, 0x00, 0xd5, 0x00, 0xbb, 0x00, 0xba, 0x00, + 0xae, 0x00, 0xae, 0x00, 0xac, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0xb3, 0x00, + 0xc9, 0x00, 0xc6, 0x00, 0xe2, 0x00, 0xe3, 0x00, 0x0a, 0x01, 0x0a, 0x01, + 0x37, 0x01, 0x36, 0x01, 0x69, 0x01, 0x68, 0x01, 0xa3, 0x01, 0xa1, 0x01, + 0xda, 0x01, 0xd9, 0x01, 0x16, 0x02, 0x16, 0x02, 0x50, 0x02, 0x4e, 0x02, + 0x87, 0x02, 0x85, 0x02, 0xbc, 0x02, 0xbc, 0x02, 0xeb, 0x02, 0xe9, 0x02, + 0x0f, 0x03, 0x0f, 0x03, 0x2f, 0x03, 0x2e, 0x03, 0x41, 0x03, 0x3f, 0x03, + 0x4b, 0x03, 0x48, 0x03, 0x46, 0x03, 0x46, 0x03, 0x36, 0x03, 0x33, 0x03, + 0x17, 0x03, 0x18, 0x03, 0xed, 0x02, 0xec, 0x02, 0xb5, 0x02, 0xb3, 0x02, + 0x6e, 0x02, 0x6f, 0x02, 0x1e, 0x02, 0x1d, 0x02, 0xc1, 0x01, 0xc1, 0x01, + 0x5c, 0x01, 0x5a, 0x01, 0xec, 0x00, 0xeb, 0x00, 0x76, 0x00, 0x74, 0x00, + 0xf8, 0xff, 0xf9, 0xff, 0x76, 0xff, 0x74, 0xff, 0xf1, 0xfe, 0xf2, 0xfe, + 0x70, 0xfe, 0x6d, 0xfe, 0xe8, 0xfd, 0xe8, 0xfd, 0x69, 0xfd, 0x68, 0xfd, + 0xeb, 0xfc, 0xeb, 0xfc, 0x75, 0xfc, 0x73, 0xfc, 0x06, 0xfc, 0x06, 0xfc, + 0xa2, 0xfb, 0x9f, 0xfb, 0x46, 0xfb, 0x44, 0xfb, 0xf6, 0xfa, 0xf7, 0xfa, + 0xb4, 0xfa, 0xb3, 0xfa, 0x7e, 0xfa, 0x7e, 0xfa, 0x57, 0xfa, 0x57, 0xfa, + 0x3f, 0xfa, 0x3c, 0xfa, 0x33, 0xfa, 0x32, 0xfa, 0x34, 0xfa, 0x35, 0xfa, + 0x43, 0xfa, 0x43, 0xfa, 0x61, 0xfa, 0x61, 0xfa, 0x88, 0xfa, 0x87, 0xfa, + 0xbb, 0xfa, 0xbc, 0xfa, 0xf7, 0xfa, 0xf6, 0xfa, 0x3c, 0xfb, 0x3c, 0xfb, + 0x84, 0xfb, 0x84, 0xfb, 0xd3, 0xfb, 0xd4, 0xfb, 0x25, 0xfc, 0x25, 0xfc, + 0x78, 0xfc, 0x77, 0xfc, 0xca, 0xfc, 0xcb, 0xfc, 0x19, 0xfd, 0x18, 0xfd, + 0x63, 0xfd, 0x64, 0xfd, 0xa8, 0xfd, 0xa8, 0xfd, 0xe3, 0xfd, 0xe3, 0xfd, + 0x18, 0xfe, 0x1a, 0xfe, 0x45, 0xfe, 0x42, 0xfe, 0x62, 0xfe, 0x63, 0xfe, + 0x79, 0xfe, 0x77, 0xfe, 0x7d, 0xfe, 0x7c, 0xfe, 0x78, 0xfe, 0x79, 0xfe, + 0x67, 0xfe, 0x66, 0xfe, 0x49, 0xfe, 0x48, 0xfe, 0x20, 0xfe, 0x21, 0xfe, + 0xea, 0xfd, 0xea, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0x65, 0xfd, 0x64, 0xfd, + 0x17, 0xfd, 0x18, 0xfd, 0xc4, 0xfc, 0xc1, 0xfc, 0x6b, 0xfc, 0x6a, 0xfc, + 0x11, 0xfc, 0x11, 0xfc, 0xb4, 0xfb, 0xb2, 0xfb, 0x5c, 0xfb, 0x5c, 0xfb, + 0x03, 0xfb, 0x02, 0xfb, 0xb1, 0xfa, 0xb0, 0xfa, 0x67, 0xfa, 0x65, 0xfa, + 0x22, 0xfa, 0x20, 0xfa, 0xea, 0xf9, 0xea, 0xf9, 0xba, 0xf9, 0xba, 0xf9, + 0x9d, 0xf9, 0x99, 0xf9, 0x86, 0xf9, 0x85, 0xf9, 0x80, 0xf9, 0x80, 0xf9, + 0x8b, 0xf9, 0x88, 0xf9, 0xa0, 0xf9, 0xa0, 0xf9, 0xc9, 0xf9, 0xc7, 0xf9, + 0xfd, 0xf9, 0xfe, 0xf9, 0x43, 0xfa, 0x41, 0xfa, 0x91, 0xfa, 0x90, 0xfa, + 0xef, 0xfa, 0xed, 0xfa, 0x55, 0xfb, 0x53, 0xfb, 0xc7, 0xfb, 0xc6, 0xfb, + 0x3e, 0xfc, 0x3e, 0xfc, 0xbe, 0xfc, 0xbd, 0xfc, 0x41, 0xfd, 0x40, 0xfd, + 0xc8, 0xfd, 0xc6, 0xfd, 0x4d, 0xfe, 0x4d, 0xfe, 0xd2, 0xfe, 0xce, 0xfe, + 0x54, 0xff, 0x54, 0xff, 0xd1, 0xff, 0xce, 0xff, 0x46, 0x00, 0x46, 0x00, + 0xb5, 0x00, 0xb2, 0x00, 0x18, 0x01, 0x17, 0x01, 0x72, 0x01, 0x70, 0x01, + 0xc0, 0x01, 0xbf, 0x01, 0x01, 0x02, 0x00, 0x02, 0x36, 0x02, 0x34, 0x02, + 0x5d, 0x02, 0x5c, 0x02, 0x79, 0x02, 0x78, 0x02, 0x85, 0x02, 0x84, 0x02, + 0x86, 0x02, 0x86, 0x02, 0x7d, 0x02, 0x7b, 0x02, 0x67, 0x02, 0x67, 0x02, + 0x48, 0x02, 0x48, 0x02, 0x21, 0x02, 0x1f, 0x02, 0xf4, 0x01, 0xf3, 0x01, + 0xbd, 0x01, 0xbc, 0x01, 0x89, 0x01, 0x88, 0x01, 0x50, 0x01, 0x4d, 0x01, + 0x17, 0x01, 0x14, 0x01, 0xde, 0x00, 0xde, 0x00, 0xab, 0x00, 0xa9, 0x00, + 0x7b, 0x00, 0x7a, 0x00, 0x53, 0x00, 0x52, 0x00, 0x33, 0x00, 0x31, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0d, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x50, 0x00, 0x4f, 0x00, + 0x7d, 0x00, 0x7c, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0xf9, 0x00, 0xf7, 0x00, + 0x44, 0x01, 0x46, 0x01, 0x9b, 0x01, 0x99, 0x01, 0xf8, 0x01, 0xf7, 0x01, + 0x5c, 0x02, 0x5c, 0x02, 0xc1, 0x02, 0xc1, 0x02, 0x30, 0x03, 0x2e, 0x03, + 0x9a, 0x03, 0x9a, 0x03, 0x09, 0x04, 0x09, 0x04, 0x71, 0x04, 0x70, 0x04, + 0xdc, 0x04, 0xda, 0x04, 0x39, 0x05, 0x3a, 0x05, 0x97, 0x05, 0x96, 0x05, + 0xe7, 0x05, 0xe7, 0x05, 0x2f, 0x06, 0x30, 0x06, 0x6e, 0x06, 0x6c, 0x06, + 0x9c, 0x06, 0x9e, 0x06, 0xc1, 0x06, 0xc2, 0x06, 0xd9, 0x06, 0xd6, 0x06, + 0xdd, 0x06, 0xdf, 0x06, 0xdd, 0x06, 0xda, 0x06, 0xc5, 0x06, 0xc5, 0x06, + 0xa6, 0x06, 0xa5, 0x06, 0x77, 0x06, 0x75, 0x06, 0x3a, 0x06, 0x3a, 0x06, + 0xf8, 0x05, 0xf6, 0x05, 0xa7, 0x05, 0xa7, 0x05, 0x4f, 0x05, 0x4e, 0x05, + 0xf2, 0x04, 0xf0, 0x04, 0x8b, 0x04, 0x8a, 0x04, 0x27, 0x04, 0x26, 0x04, + 0xbc, 0x03, 0xbc, 0x03, 0x54, 0x03, 0x53, 0x03, 0xef, 0x02, 0xef, 0x02, + 0x8c, 0x02, 0x8a, 0x02, 0x2f, 0x02, 0x30, 0x02, 0xdb, 0x01, 0xd8, 0x01, + 0x8d, 0x01, 0x8e, 0x01, 0x4c, 0x01, 0x4a, 0x01, 0x12, 0x01, 0x12, 0x01, + 0xe7, 0x00, 0xe6, 0x00, 0xc6, 0x00, 0xc5, 0x00, 0xb3, 0x00, 0xb2, 0x00, + 0xac, 0x00, 0xac, 0x00, 0xb2, 0x00, 0xb2, 0x00, 0xc4, 0x00, 0xc4, 0x00, + 0xe0, 0x00, 0xe0, 0x00, 0x09, 0x01, 0x08, 0x01, 0x3c, 0x01, 0x3b, 0x01, + 0x72, 0x01, 0x73, 0x01, 0xb6, 0x01, 0xb5, 0x01, 0xf7, 0x01, 0xf7, 0x01, + 0x43, 0x02, 0x41, 0x02, 0x8b, 0x02, 0x8c, 0x02, 0xd5, 0x02, 0xd6, 0x02, + 0x1d, 0x03, 0x1c, 0x03, 0x60, 0x03, 0x5e, 0x03, 0x9f, 0x03, 0x9f, 0x03, + 0xd3, 0x03, 0xd2, 0x03, 0x02, 0x04, 0x02, 0x04, 0x23, 0x04, 0x20, 0x04, + 0x38, 0x04, 0x39, 0x04, 0x42, 0x04, 0x41, 0x04, 0x3c, 0x04, 0x3c, 0x04, + 0x2a, 0x04, 0x29, 0x04, 0x0a, 0x04, 0x09, 0x04, 0xd8, 0x03, 0xd7, 0x03, + 0x9b, 0x03, 0x9a, 0x03, 0x4e, 0x03, 0x4f, 0x03, 0xf8, 0x02, 0xf8, 0x02, + 0x93, 0x02, 0x92, 0x02, 0x25, 0x02, 0x27, 0x02, 0xad, 0x01, 0xab, 0x01, + 0x2c, 0x01, 0x2e, 0x01, 0xa9, 0x00, 0xa8, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x92, 0xff, 0x93, 0xff, 0x06, 0xff, 0x06, 0xff, 0x7c, 0xfe, 0x7b, 0xfe, + 0xf3, 0xfd, 0xf2, 0xfd, 0x70, 0xfd, 0x71, 0xfd, 0xf3, 0xfc, 0xf2, 0xfc, + 0x80, 0xfc, 0x80, 0xfc, 0x15, 0xfc, 0x14, 0xfc, 0xb7, 0xfb, 0xb4, 0xfb, + 0x62, 0xfb, 0x64, 0xfb, 0x1d, 0xfb, 0x1a, 0xfb, 0xe2, 0xfa, 0xe3, 0xfa, + 0xb8, 0xfa, 0xb6, 0xfa, 0x9b, 0xfa, 0x9b, 0xfa, 0x8c, 0xfa, 0x8c, 0xfa, + 0x8c, 0xfa, 0x8b, 0xfa, 0x96, 0xfa, 0x96, 0xfa, 0xaf, 0xfa, 0xae, 0xfa, + 0xd2, 0xfa, 0xd2, 0xfa, 0x00, 0xfb, 0xff, 0xfa, 0x35, 0xfb, 0x35, 0xfb, + 0x73, 0xfb, 0x73, 0xfb, 0xb4, 0xfb, 0xb3, 0xfb, 0xfc, 0xfb, 0xfb, 0xfb, + 0x44, 0xfc, 0x43, 0xfc, 0x8e, 0xfc, 0x8e, 0xfc, 0xd6, 0xfc, 0xd7, 0xfc, + 0x1b, 0xfd, 0x19, 0xfd, 0x5c, 0xfd, 0x5d, 0xfd, 0x97, 0xfd, 0x95, 0xfd, + 0xca, 0xfd, 0xc9, 0xfd, 0xf4, 0xfd, 0xf4, 0xfd, 0x15, 0xfe, 0x12, 0xfe, + 0x28, 0xfe, 0x28, 0xfe, 0x34, 0xfe, 0x33, 0xfe, 0x32, 0xfe, 0x30, 0xfe, + 0x25, 0xfe, 0x24, 0xfe, 0x0c, 0xfe, 0x0b, 0xfe, 0xe8, 0xfd, 0xe8, 0xfd, + 0xbb, 0xfd, 0xb9, 0xfd, 0x84, 0xfd, 0x83, 0xfd, 0x42, 0xfd, 0x42, 0xfd, + 0xfd, 0xfc, 0xfb, 0xfc, 0xaf, 0xfc, 0xad, 0xfc, 0x5e, 0xfc, 0x5d, 0xfc, + 0x09, 0xfc, 0x08, 0xfc, 0xb3, 0xfb, 0xb2, 0xfb, 0x60, 0xfb, 0x5f, 0xfb, + 0x0c, 0xfb, 0x0c, 0xfb, 0xc1, 0xfa, 0xbf, 0xfa, 0x79, 0xfa, 0x79, 0xfa, + 0x37, 0xfa, 0x35, 0xfa, 0x03, 0xfa, 0x01, 0xfa, 0xd4, 0xf9, 0xd4, 0xf9, + 0xb5, 0xf9, 0xb4, 0xf9, 0xa0, 0xf9, 0xa0, 0xf9, 0x9a, 0xf9, 0x98, 0xf9, + 0x9f, 0xf9, 0xa1, 0xf9, 0xb4, 0xf9, 0xb3, 0xf9, 0xd6, 0xf9, 0xd5, 0xf9, + 0x07, 0xfa, 0x07, 0xfa, 0x46, 0xfa, 0x44, 0xfa, 0x8d, 0xfa, 0x8f, 0xfa, + 0xe6, 0xfa, 0xe4, 0xfa, 0x44, 0xfb, 0x43, 0xfb, 0xae, 0xfb, 0xae, 0xfb, + 0x1d, 0xfc, 0x1b, 0xfc, 0x95, 0xfc, 0x94, 0xfc, 0x0d, 0xfd, 0x0d, 0xfd, + 0x8b, 0xfd, 0x89, 0xfd, 0x07, 0xfe, 0x07, 0xfe, 0x81, 0xfe, 0x80, 0xfe, + 0xfb, 0xfe, 0xf9, 0xfe, 0x6b, 0xff, 0x6c, 0xff, 0xd7, 0xff, 0xd7, 0xff, + 0x3b, 0x00, 0x3c, 0x00, 0x95, 0x00, 0x95, 0x00, 0xe7, 0x00, 0xe5, 0x00, + 0x2b, 0x01, 0x2a, 0x01, 0x63, 0x01, 0x63, 0x01, 0x8e, 0x01, 0x8f, 0x01, + 0xae, 0x01, 0xad, 0x01, 0xc0, 0x01, 0xbf, 0x01, 0xc6, 0x01, 0xc7, 0x01, + 0xbf, 0x01, 0xbf, 0x01, 0xad, 0x01, 0xae, 0x01, 0x93, 0x01, 0x93, 0x01, + 0x6b, 0x01, 0x6a, 0x01, 0x3e, 0x01, 0x41, 0x01, 0x0c, 0x01, 0x0a, 0x01, + 0xd0, 0x00, 0xd2, 0x00, 0x99, 0x00, 0x97, 0x00, 0x57, 0x00, 0x58, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0xe1, 0xff, 0xdf, 0xff, 0xaa, 0xff, 0xac, 0xff, + 0x7b, 0xff, 0x79, 0xff, 0x4f, 0xff, 0x50, 0xff, 0x30, 0xff, 0x31, 0xff, + 0x1a, 0xff, 0x18, 0xff, 0x0e, 0xff, 0x10, 0xff, 0x12, 0xff, 0x0f, 0xff, + 0x1c, 0xff, 0x1e, 0xff, 0x38, 0xff, 0x36, 0xff, 0x5c, 0xff, 0x5e, 0xff, + 0x92, 0xff, 0x91, 0xff, 0xd1, 0xff, 0xce, 0xff, 0x1a, 0x00, 0x1a, 0x00, + 0x71, 0x00, 0x70, 0x00, 0xce, 0x00, 0xcb, 0x00, 0x36, 0x01, 0x37, 0x01, + 0xa4, 0x01, 0xa1, 0x01, 0x15, 0x02, 0x17, 0x02, 0x91, 0x02, 0x8c, 0x02, + 0x07, 0x03, 0x07, 0x03, 0x83, 0x03, 0x84, 0x03, 0xfb, 0x03, 0xf8, 0x03, + 0x73, 0x04, 0x72, 0x04, 0xe0, 0x04, 0xe1, 0x04, 0x4c, 0x05, 0x49, 0x05, + 0xad, 0x05, 0xac, 0x05, 0x04, 0x06, 0x02, 0x06, 0x51, 0x06, 0x51, 0x06, + 0x90, 0x06, 0x8e, 0x06, 0xc4, 0x06, 0xc3, 0x06, 0xe8, 0x06, 0xe7, 0x06, + 0xfe, 0x06, 0xfe, 0x06, 0x08, 0x07, 0x06, 0x07, 0xfe, 0x06, 0xfe, 0x06, + 0xed, 0x06, 0xeb, 0x06, 0xc7, 0x06, 0xc7, 0x06, 0x98, 0x06, 0x97, 0x06, + 0x5c, 0x06, 0x5d, 0x06, 0x15, 0x06, 0x13, 0x06, 0xc4, 0x05, 0xc3, 0x05, + 0x6c, 0x05, 0x6a, 0x05, 0x0c, 0x05, 0x0b, 0x05, 0xa9, 0x04, 0xa7, 0x04, + 0x42, 0x04, 0x3f, 0x04, 0xda, 0x03, 0xd9, 0x03, 0x71, 0x03, 0x70, 0x03, + 0x0e, 0x03, 0x0d, 0x03, 0xad, 0x02, 0xab, 0x02, 0x53, 0x02, 0x52, 0x02, + 0xff, 0x01, 0xff, 0x01, 0xb6, 0x01, 0xb4, 0x01, 0x75, 0x01, 0x75, 0x01, + 0x41, 0x01, 0x40, 0x01, 0x19, 0x01, 0x1a, 0x01, 0xf9, 0x00, 0xfa, 0x00, + 0xeb, 0x00, 0xe9, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xee, 0x00, 0xed, 0x00, + 0x05, 0x01, 0x04, 0x01, 0x22, 0x01, 0x21, 0x01, 0x4b, 0x01, 0x4b, 0x01, + 0x7f, 0x01, 0x7d, 0x01, 0xb5, 0x01, 0xb4, 0x01, 0xf8, 0x01, 0xf7, 0x01, + 0x36, 0x02, 0x36, 0x02, 0x7f, 0x02, 0x7e, 0x02, 0xc5, 0x02, 0xc5, 0x02, + 0x0c, 0x03, 0x0c, 0x03, 0x51, 0x03, 0x51, 0x03, 0x8e, 0x03, 0x8e, 0x03, + 0xcb, 0x03, 0xc9, 0x03, 0xf9, 0x03, 0xfa, 0x03, 0x24, 0x04, 0x23, 0x04, + 0x3f, 0x04, 0x3f, 0x04, 0x52, 0x04, 0x50, 0x04, 0x58, 0x04, 0x57, 0x04, + 0x4f, 0x04, 0x50, 0x04, 0x3a, 0x04, 0x38, 0x04, 0x17, 0x04, 0x19, 0x04, + 0xe4, 0x03, 0xe4, 0x03, 0xaa, 0x03, 0xa8, 0x03, 0x5d, 0x03, 0x5d, 0x03, + 0x08, 0x03, 0x05, 0x03, 0xa6, 0x02, 0xa7, 0x02, 0x3c, 0x02, 0x39, 0x02, + 0xc9, 0x01, 0xca, 0x01, 0x52, 0x01, 0x50, 0x01, 0xd3, 0x00, 0xd2, 0x00, + 0x51, 0x00, 0x51, 0x00, 0xd1, 0xff, 0xce, 0xff, 0x4e, 0xff, 0x4f, 0xff, + 0xcf, 0xfe, 0xcc, 0xfe, 0x54, 0xfe, 0x55, 0xfe, 0xdd, 0xfd, 0xdc, 0xfd, + 0x70, 0xfd, 0x70, 0xfd, 0x0b, 0xfd, 0x0a, 0xfd, 0xaf, 0xfc, 0xae, 0xfc, + 0x5e, 0xfc, 0x5c, 0xfc, 0x19, 0xfc, 0x1a, 0xfc, 0xe0, 0xfb, 0xde, 0xfb, + 0xb5, 0xfb, 0xb4, 0xfb, 0x96, 0xfb, 0x95, 0xfb, 0x83, 0xfb, 0x83, 0xfb, + 0x7e, 0xfb, 0x7e, 0xfb, 0x85, 0xfb, 0x85, 0xfb, 0x9b, 0xfb, 0x9a, 0xfb, + 0xb5, 0xfb, 0xb6, 0xfb, 0xde, 0xfb, 0xdd, 0xfb, 0x0c, 0xfc, 0x0c, 0xfc, + 0x41, 0xfc, 0x41, 0xfc, 0x7d, 0xfc, 0x7d, 0xfc, 0xba, 0xfc, 0xb9, 0xfc, + 0xfb, 0xfc, 0xfb, 0xfc, 0x3c, 0xfd, 0x3b, 0xfd, 0x79, 0xfd, 0x78, 0xfd, + 0xb4, 0xfd, 0xb6, 0xfd, 0xea, 0xfd, 0xe8, 0xfd, 0x1a, 0xfe, 0x1a, 0xfe, + 0x43, 0xfe, 0x41, 0xfe, 0x5e, 0xfe, 0x5e, 0xfe, 0x75, 0xfe, 0x74, 0xfe, + 0x7c, 0xfe, 0x7d, 0xfe, 0x7d, 0xfe, 0x7c, 0xfe, 0x6d, 0xfe, 0x6f, 0xfe, + 0x56, 0xfe, 0x56, 0xfe, 0x31, 0xfe, 0x31, 0xfe, 0x04, 0xfe, 0x03, 0xfe, + 0xca, 0xfd, 0xca, 0xfd, 0x86, 0xfd, 0x86, 0xfd, 0x3d, 0xfd, 0x3d, 0xfd, + 0xeb, 0xfc, 0xeb, 0xfc, 0x94, 0xfc, 0x94, 0xfc, 0x37, 0xfc, 0x38, 0xfc, + 0xdc, 0xfb, 0xda, 0xfb, 0x7d, 0xfb, 0x7e, 0xfb, 0x1f, 0xfb, 0x1f, 0xfb, + 0xc7, 0xfa, 0xc7, 0xfa, 0x6f, 0xfa, 0x71, 0xfa, 0x24, 0xfa, 0x21, 0xfa, + 0xdb, 0xf9, 0xdb, 0xf9, 0x9d, 0xf9, 0x9f, 0xf9, 0x6c, 0xf9, 0x6a, 0xf9, + 0x44, 0xf9, 0x45, 0xf9, 0x2d, 0xf9, 0x2d, 0xf9, 0x22, 0xf9, 0x1f, 0xf9, + 0x24, 0xf9, 0x25, 0xf9, 0x37, 0xf9, 0x37, 0xf9, 0x57, 0xf9, 0x57, 0xf9, + 0x87, 0xf9, 0x87, 0xf9, 0xc4, 0xf9, 0xc3, 0xf9, 0x10, 0xfa, 0x0f, 0xfa, + 0x66, 0xfa, 0x66, 0xfa, 0xc9, 0xfa, 0xc8, 0xfa, 0x34, 0xfb, 0x34, 0xfb, + 0xa9, 0xfb, 0xa9, 0xfb, 0x22, 0xfc, 0x22, 0xfc, 0xa2, 0xfc, 0xa2, 0xfc, + 0x21, 0xfd, 0x20, 0xfd, 0xa7, 0xfd, 0xa7, 0xfd, 0x25, 0xfe, 0x26, 0xfe, + 0xa4, 0xfe, 0xa5, 0xfe, 0x1f, 0xff, 0x1d, 0xff, 0x8f, 0xff, 0x90, 0xff, + 0xfc, 0xff, 0xfa, 0xff, 0x5c, 0x00, 0x5c, 0x00, 0xb3, 0x00, 0xb2, 0x00, + 0xfe, 0x00, 0xfe, 0x00, 0x3a, 0x01, 0x3a, 0x01, 0x6d, 0x01, 0x6c, 0x01, + 0x8e, 0x01, 0x8e, 0x01, 0xa5, 0x01, 0xa4, 0x01, 0xad, 0x01, 0xae, 0x01, + 0xa8, 0x01, 0xa7, 0x01, 0x97, 0x01, 0x97, 0x01, 0x7c, 0x01, 0x7a, 0x01, + 0x55, 0x01, 0x55, 0x01, 0x25, 0x01, 0x24, 0x01, 0xee, 0x00, 0xf0, 0x00, + 0xb2, 0x00, 0xb1, 0x00, 0x71, 0x00, 0x71, 0x00, 0x2e, 0x00, 0x2e, 0x00, + 0xea, 0xff, 0xe9, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0x68, 0xff, 0x68, 0xff, + 0x2c, 0xff, 0x2b, 0xff, 0xf8, 0xfe, 0xfa, 0xfe, 0xcd, 0xfe, 0xcc, 0xfe, + 0xad, 0xfe, 0xad, 0xfe, 0x92, 0xfe, 0x94, 0xfe, 0x89, 0xfe, 0x88, 0xfe, + 0x89, 0xfe, 0x8a, 0xfe, 0x97, 0xfe, 0x96, 0xfe, 0xb1, 0xfe, 0xb1, 0xfe, + 0xd8, 0xfe, 0xd9, 0xfe, 0x0d, 0xff, 0x0c, 0xff, 0x4e, 0xff, 0x4f, 0xff, + 0x98, 0xff, 0x97, 0xff, 0xef, 0xff, 0xef, 0xff, 0x4f, 0x00, 0x4e, 0x00, + 0xb4, 0x00, 0xb6, 0x00, 0x24, 0x01, 0x24, 0x01, 0x98, 0x01, 0x97, 0x01, + 0x0e, 0x02, 0x0d, 0x02, 0x86, 0x02, 0x89, 0x02, 0x00, 0x03, 0xfe, 0x02, + 0x75, 0x03, 0x76, 0x03, 0xe8, 0x03, 0xe6, 0x03, 0x58, 0x04, 0x59, 0x04, + 0xbe, 0x04, 0xbc, 0x04, 0x19, 0x05, 0x1c, 0x05, 0x71, 0x05, 0x6e, 0x05, + 0xb9, 0x05, 0xba, 0x05, 0xf7, 0x05, 0xf8, 0x05, 0x28, 0x06, 0x26, 0x06, + 0x4b, 0x06, 0x4e, 0x06, 0x61, 0x06, 0x5f, 0x06, 0x68, 0x06, 0x69, 0x06, + 0x64, 0x06, 0x64, 0x06, 0x50, 0x06, 0x4f, 0x06, 0x31, 0x06, 0x30, 0x06, + 0x05, 0x06, 0x05, 0x06, 0xcf, 0x05, 0xce, 0x05, 0x8e, 0x05, 0x8e, 0x05, + 0x46, 0x05, 0x46, 0x05, 0xf7, 0x04, 0xf6, 0x04, 0xa4, 0x04, 0xa3, 0x04, + 0x4c, 0x04, 0x4b, 0x04, 0xf0, 0x03, 0xf1, 0x03, 0x9a, 0x03, 0x9b, 0x03, + 0x42, 0x03, 0x42, 0x03, 0xef, 0x02, 0xef, 0x02, 0xa2, 0x02, 0xa2, 0x02, + 0x59, 0x02, 0x5b, 0x02, 0x1d, 0x02, 0x1b, 0x02, 0xe3, 0x01, 0xe6, 0x01, + 0xbc, 0x01, 0xba, 0x01, 0x96, 0x01, 0x99, 0x01, 0x82, 0x01, 0x81, 0x01, + 0x79, 0x01, 0x7b, 0x01, 0x78, 0x01, 0x78, 0x01, 0x89, 0x01, 0x89, 0x01, + 0x9d, 0x01, 0x9f, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xec, 0x01, 0xed, 0x01, + 0x1d, 0x02, 0x1e, 0x02, 0x5b, 0x02, 0x5c, 0x02, 0x98, 0x02, 0x9a, 0x02, + 0xdf, 0x02, 0xdd, 0x02, 0x20, 0x03, 0x23, 0x03, 0x69, 0x03, 0x69, 0x03, + 0xaf, 0x03, 0xaf, 0x03, 0xf0, 0x03, 0xef, 0x03, 0x2d, 0x04, 0x2e, 0x04, + 0x63, 0x04, 0x62, 0x04, 0x90, 0x04, 0x93, 0x04, 0xb7, 0x04, 0xb5, 0x04, + 0xcf, 0x04, 0xcf, 0x04, 0xdc, 0x04, 0xde, 0x04, 0xde, 0x04, 0xdd, 0x04, + 0xd4, 0x04, 0xd3, 0x04, 0xb7, 0x04, 0xb8, 0x04, 0x93, 0x04, 0x92, 0x04, + 0x5c, 0x04, 0x5d, 0x04, 0x1a, 0x04, 0x19, 0x04, 0xca, 0x03, 0xca, 0x03, + 0x6d, 0x03, 0x6e, 0x03, 0x0a, 0x03, 0x08, 0x03, 0x99, 0x02, 0x9a, 0x02, + 0x23, 0x02, 0x22, 0x02, 0xa4, 0x01, 0xa3, 0x01, 0x22, 0x01, 0x23, 0x01, + 0x9b, 0x00, 0x9a, 0x00, 0x16, 0x00, 0x17, 0x00, 0x90, 0xff, 0x90, 0xff, + 0x0e, 0xff, 0x0d, 0xff, 0x8f, 0xfe, 0x90, 0xfe, 0x17, 0xfe, 0x17, 0xfe, + 0xa6, 0xfd, 0xa7, 0xfd, 0x3f, 0xfd, 0x40, 0xfd, 0xe4, 0xfc, 0xe4, 0xfc, + 0x94, 0xfc, 0x94, 0xfc, 0x4e, 0xfc, 0x4f, 0xfc, 0x18, 0xfc, 0x17, 0xfc, + 0xee, 0xfb, 0xee, 0xfb, 0xd0, 0xfb, 0xd3, 0xfb, 0xc3, 0xfb, 0xc2, 0xfb, + 0xbf, 0xfb, 0xc0, 0xfb, 0xcc, 0xfb, 0xcd, 0xfb, 0xe1, 0xfb, 0xe3, 0xfb, + 0x06, 0xfc, 0x05, 0xfc, 0x30, 0xfc, 0x33, 0xfc, 0x68, 0xfc, 0x65, 0xfc, + 0xa0, 0xfc, 0xa3, 0xfc, 0xe4, 0xfc, 0xe3, 0xfc, 0x27, 0xfd, 0x29, 0xfd, + 0x70, 0xfd, 0x71, 0xfd, 0xb6, 0xfd, 0xb6, 0xfd, 0xfa, 0xfd, 0xfb, 0xfd, + 0x3d, 0xfe, 0x3c, 0xfe, 0x79, 0xfe, 0x79, 0xfe, 0xaf, 0xfe, 0xae, 0xfe, + 0xdc, 0xfe, 0xde, 0xfe, 0x01, 0xff, 0x00, 0xff, 0x19, 0xff, 0x18, 0xff, + 0x26, 0xff, 0x28, 0xff, 0x29, 0xff, 0x27, 0xff, 0x1c, 0xff, 0x1e, 0xff, + 0x07, 0xff, 0x07, 0xff, 0xe3, 0xfe, 0xe2, 0xfe, 0xb3, 0xfe, 0xb4, 0xfe, + 0x79, 0xfe, 0x77, 0xfe, 0x33, 0xfe, 0x34, 0xfe, 0xe5, 0xfd, 0xe6, 0xfd, + 0x8e, 0xfd, 0x8e, 0xfd, 0x2f, 0xfd, 0x31, 0xfd, 0xce, 0xfc, 0xcd, 0xfc, + 0x67, 0xfc, 0x68, 0xfc, 0x00, 0xfc, 0x00, 0xfc, 0x96, 0xfb, 0x97, 0xfb, + 0x32, 0xfb, 0x31, 0xfb, 0xce, 0xfa, 0xd0, 0xfa, 0x72, 0xfa, 0x71, 0xfa, + 0x1d, 0xfa, 0x1e, 0xfa, 0xcf, 0xf9, 0xce, 0xf9, 0x8e, 0xf9, 0x8e, 0xf9, + 0x54, 0xf9, 0x55, 0xf9, 0x2a, 0xf9, 0x2a, 0xf9, 0x0d, 0xf9, 0x0e, 0xf9, + 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0x0c, 0xf9, 0x0e, 0xf9, + 0x2b, 0xf9, 0x2b, 0xf9, 0x54, 0xf9, 0x54, 0xf9, 0x90, 0xf9, 0x90, 0xf9, + 0xd4, 0xf9, 0xd5, 0xf9, 0x29, 0xfa, 0x28, 0xfa, 0x85, 0xfa, 0x85, 0xfa, + 0xe8, 0xfa, 0xe9, 0xfa, 0x5b, 0xfb, 0x59, 0xfb, 0xcb, 0xfb, 0xca, 0xfb, + 0x45, 0xfc, 0x45, 0xfc, 0xbc, 0xfc, 0xbd, 0xfc, 0x38, 0xfd, 0x36, 0xfd, + 0xb0, 0xfd, 0xb0, 0xfd, 0x25, 0xfe, 0x25, 0xfe, 0x96, 0xfe, 0x98, 0xfe, + 0x00, 0xff, 0xff, 0xfe, 0x60, 0xff, 0x60, 0xff, 0xba, 0xff, 0xb9, 0xff, + 0x06, 0x00, 0x06, 0x00, 0x49, 0x00, 0x47, 0x00, 0x7e, 0x00, 0x80, 0x00, + 0xa9, 0x00, 0xa8, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xd6, 0x00, 0xd6, 0x00, + 0xdc, 0x00, 0xdb, 0x00, 0xd1, 0x00, 0xd3, 0x00, 0xc2, 0x00, 0xc2, 0x00, + 0xa2, 0x00, 0xa3, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x52, 0x00, 0x52, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0xe9, 0xff, 0xea, 0xff, 0xad, 0xff, 0xaf, 0xff, + 0x75, 0xff, 0x76, 0xff, 0x3b, 0xff, 0x3c, 0xff, 0x02, 0xff, 0x02, 0xff, + 0xd0, 0xfe, 0xd2, 0xfe, 0xa4, 0xfe, 0xa3, 0xfe, 0x7f, 0xfe, 0x7e, 0xfe, + 0x62, 0xfe, 0x62, 0xfe, 0x4d, 0xfe, 0x4e, 0xfe, 0x4c, 0xfe, 0x4b, 0xfe, + 0x4b, 0xfe, 0x4c, 0xfe, 0x5e, 0xfe, 0x5f, 0xfe, 0x79, 0xfe, 0x7a, 0xfe, + 0xa3, 0xfe, 0xa3, 0xfe, 0xd9, 0xfe, 0xda, 0xfe, 0x17, 0xff, 0x17, 0xff, + 0x65, 0xff, 0x65, 0xff, 0xb7, 0xff, 0xb8, 0xff, 0x16, 0x00, 0x15, 0x00, + 0x7c, 0x00, 0x7d, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0x5a, 0x01, 0x5a, 0x01, + 0xcb, 0x01, 0xcc, 0x01, 0x44, 0x02, 0x43, 0x02, 0xb7, 0x02, 0xb9, 0x02, + 0x2b, 0x03, 0x2c, 0x03, 0x9c, 0x03, 0x9c, 0x03, 0x06, 0x04, 0x06, 0x04, + 0x6a, 0x04, 0x69, 0x04, 0xc4, 0x04, 0xc6, 0x04, 0x17, 0x05, 0x18, 0x05, + 0x5e, 0x05, 0x5f, 0x05, 0x99, 0x05, 0x98, 0x05, 0xc9, 0x05, 0xcb, 0x05, + 0xea, 0x05, 0xea, 0x05, 0xfd, 0x05, 0xfe, 0x05, 0x06, 0x06, 0x07, 0x06, + 0xfe, 0x05, 0xff, 0x05, 0xed, 0x05, 0xee, 0x05, 0xcb, 0x05, 0xcb, 0x05, + 0xa2, 0x05, 0xa2, 0x05, 0x6d, 0x05, 0x6d, 0x05, 0x2d, 0x05, 0x2e, 0x05, + 0xe9, 0x04, 0xea, 0x04, 0x99, 0x04, 0x9b, 0x04, 0x4c, 0x04, 0x4b, 0x04, + 0xf5, 0x03, 0xf7, 0x03, 0xa1, 0x03, 0xa2, 0x03, 0x4b, 0x03, 0x4b, 0x03, + 0xf7, 0x02, 0xf9, 0x02, 0xaa, 0x02, 0xab, 0x02, 0x60, 0x02, 0x61, 0x02, + 0x20, 0x02, 0x22, 0x02, 0xe5, 0x01, 0xe6, 0x01, 0xb5, 0x01, 0xb6, 0x01, + 0x91, 0x01, 0x92, 0x01, 0x77, 0x01, 0x79, 0x01, 0x6b, 0x01, 0x6a, 0x01, + 0x67, 0x01, 0x69, 0x01, 0x73, 0x01, 0x73, 0x01, 0x8a, 0x01, 0x8a, 0x01, + 0xab, 0x01, 0xac, 0x01, 0xd7, 0x01, 0xd8, 0x01, 0x0e, 0x02, 0x0d, 0x02, + 0x4c, 0x02, 0x4d, 0x02, 0x93, 0x02, 0x94, 0x02, 0xde, 0x02, 0xdf, 0x02, + 0x2f, 0x03, 0x30, 0x03, 0x80, 0x03, 0x81, 0x03, 0xd7, 0x03, 0xd5, 0x03, + 0x25, 0x04, 0x27, 0x04, 0x76, 0x04, 0x77, 0x04, 0xbe, 0x04, 0xbf, 0x04, + 0x02, 0x05, 0x03, 0x05, 0x3d, 0x05, 0x3d, 0x05, 0x6f, 0x05, 0x70, 0x05, + 0x96, 0x05, 0x98, 0x05, 0xae, 0x05, 0xb0, 0x05, 0xbb, 0x05, 0xbc, 0x05, + 0xba, 0x05, 0xba, 0x05, 0xa9, 0x05, 0xaa, 0x05, 0x8b, 0x05, 0x8c, 0x05, + 0x5b, 0x05, 0x5d, 0x05, 0x20, 0x05, 0x22, 0x05, 0xd6, 0x04, 0xd6, 0x04, + 0x7e, 0x04, 0x80, 0x04, 0x1b, 0x04, 0x1c, 0x04, 0xad, 0x03, 0xae, 0x03, + 0x36, 0x03, 0x39, 0x03, 0xb8, 0x02, 0xb8, 0x02, 0x35, 0x02, 0x36, 0x02, + 0xab, 0x01, 0xac, 0x01, 0x20, 0x01, 0x20, 0x01, 0x96, 0x00, 0x98, 0x00, + 0x0c, 0x00, 0x0a, 0x00, 0x86, 0xff, 0x87, 0xff, 0x04, 0xff, 0x06, 0xff, + 0x8a, 0xfe, 0x8b, 0xfe, 0x19, 0xfe, 0x18, 0xfe, 0xaf, 0xfd, 0xb0, 0xfd, + 0x53, 0xfd, 0x53, 0xfd, 0x01, 0xfd, 0x04, 0xfd, 0xbc, 0xfc, 0xbd, 0xfc, + 0x87, 0xfc, 0x86, 0xfc, 0x5c, 0xfc, 0x5f, 0xfc, 0x40, 0xfc, 0x41, 0xfc, + 0x33, 0xfc, 0x34, 0xfc, 0x30, 0xfc, 0x32, 0xfc, 0x3c, 0xfc, 0x3c, 0xfc, + 0x53, 0xfc, 0x55, 0xfc, 0x72, 0xfc, 0x73, 0xfc, 0x9d, 0xfc, 0x9f, 0xfc, + 0xce, 0xfc, 0xd0, 0xfc, 0x07, 0xfd, 0x06, 0xfd, 0x43, 0xfd, 0x45, 0xfd, + 0x82, 0xfd, 0x83, 0xfd, 0xc3, 0xfd, 0xc5, 0xfd, 0x03, 0xfe, 0x04, 0xfe, + 0x3f, 0xfe, 0x41, 0xfe, 0x7b, 0xfe, 0x7c, 0xfe, 0xac, 0xfe, 0xad, 0xfe, + 0xdb, 0xfe, 0xdc, 0xfe, 0xfd, 0xfe, 0xfe, 0xfe, 0x18, 0xff, 0x19, 0xff, + 0x28, 0xff, 0x28, 0xff, 0x2a, 0xff, 0x2a, 0xff, 0x23, 0xff, 0x26, 0xff, + 0x0f, 0xff, 0x0f, 0xff, 0xf1, 0xfe, 0xf2, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, + 0x8f, 0xfe, 0x91, 0xfe, 0x51, 0xfe, 0x51, 0xfe, 0x09, 0xfe, 0x09, 0xfe, + 0xb7, 0xfd, 0xb8, 0xfd, 0x61, 0xfd, 0x62, 0xfd, 0x02, 0xfd, 0x02, 0xfd, + 0xa1, 0xfc, 0xa4, 0xfc, 0x3d, 0xfc, 0x3d, 0xfc, 0xda, 0xfb, 0xda, 0xfb, + 0x78, 0xfb, 0x7a, 0xfb, 0x18, 0xfb, 0x18, 0xfb, 0xbe, 0xfa, 0xc0, 0xfa, + 0x6b, 0xfa, 0x6a, 0xfa, 0x1c, 0xfa, 0x20, 0xfa, 0xdd, 0xf9, 0xdc, 0xf9, + 0xa3, 0xf9, 0xa6, 0xf9, 0x78, 0xf9, 0x78, 0xf9, 0x58, 0xf9, 0x59, 0xf9, + 0x44, 0xf9, 0x47, 0xf9, 0x43, 0xf9, 0x42, 0xf9, 0x48, 0xf9, 0x4b, 0xf9, + 0x60, 0xf9, 0x5f, 0xf9, 0x85, 0xf9, 0x87, 0xf9, 0xb5, 0xf9, 0xb5, 0xf9, + 0xf4, 0xf9, 0xf6, 0xf9, 0x3d, 0xfa, 0x3d, 0xfa, 0x8e, 0xfa, 0x8f, 0xfa, + 0xeb, 0xfa, 0xee, 0xfa, 0x4e, 0xfb, 0x4c, 0xfb, 0xb5, 0xfb, 0xb9, 0xfb, + 0x22, 0xfc, 0x21, 0xfc, 0x8f, 0xfc, 0x91, 0xfc, 0xfd, 0xfc, 0xfd, 0xfc, + 0x68, 0xfd, 0x68, 0xfd, 0xd1, 0xfd, 0xd4, 0xfd, 0x34, 0xfe, 0x34, 0xfe, + 0x92, 0xfe, 0x93, 0xfe, 0xe6, 0xfe, 0xe7, 0xfe, 0x32, 0xff, 0x33, 0xff, + 0x73, 0xff, 0x75, 0xff, 0xab, 0xff, 0xac, 0xff, 0xd7, 0xff, 0xd7, 0xff, + 0xf2, 0xff, 0xf4, 0xff, 0x09, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0f, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xe2, 0xff, 0xe4, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0x93, 0xff, 0x92, 0xff, 0x64, 0xff, 0x66, 0xff, + 0x2b, 0xff, 0x2b, 0xff, 0xf1, 0xfe, 0xf4, 0xfe, 0xb6, 0xfe, 0xb5, 0xfe, + 0x78, 0xfe, 0x7b, 0xfe, 0x3f, 0xfe, 0x3f, 0xfe, 0x05, 0xfe, 0x08, 0xfe, + 0xd6, 0xfd, 0xd3, 0xfd, 0xa5, 0xfd, 0xa9, 0xfd, 0x84, 0xfd, 0x84, 0xfd, + 0x69, 0xfd, 0x6b, 0xfd, 0x58, 0xfd, 0x59, 0xfd, 0x57, 0xfd, 0x57, 0xfd, + 0x5b, 0xfd, 0x5e, 0xfd, 0x74, 0xfd, 0x74, 0xfd, 0x94, 0xfd, 0x95, 0xfd, + 0xc5, 0xfd, 0xc5, 0xfd, 0xfe, 0xfd, 0x00, 0xfe, 0x45, 0xfe, 0x46, 0xfe, + 0x95, 0xfe, 0x95, 0xfe, 0xf1, 0xfe, 0xf3, 0xfe, 0x56, 0xff, 0x57, 0xff, + 0xc4, 0xff, 0xc6, 0xff, 0x37, 0x00, 0x39, 0x00, 0xb1, 0x00, 0xb1, 0x00, + 0x2c, 0x01, 0x2d, 0x01, 0xab, 0x01, 0xad, 0x01, 0x27, 0x02, 0x27, 0x02, + 0xa5, 0x02, 0xa8, 0x02, 0x1d, 0x03, 0x1d, 0x03, 0x90, 0x03, 0x91, 0x03, + 0xfd, 0x03, 0xff, 0x03, 0x62, 0x04, 0x62, 0x04, 0xbb, 0x04, 0xbf, 0x04, + 0x0c, 0x05, 0x0d, 0x05, 0x52, 0x05, 0x52, 0x05, 0x8a, 0x05, 0x8c, 0x05, + 0xb4, 0x05, 0xb6, 0x05, 0xd2, 0x05, 0xd4, 0x05, 0xe1, 0x05, 0xe2, 0x05, + 0xe3, 0x05, 0xe7, 0x05, 0xd8, 0x05, 0xd8, 0x05, 0xc2, 0x05, 0xc6, 0x05, + 0xa0, 0x05, 0xa0, 0x05, 0x71, 0x05, 0x75, 0x05, 0x3b, 0x05, 0x3d, 0x05, + 0xfc, 0x04, 0xfe, 0x04, 0xb6, 0x04, 0xb7, 0x04, 0x6c, 0x04, 0x6d, 0x04, + 0x1b, 0x04, 0x1c, 0x04, 0xcc, 0x03, 0xcd, 0x03, 0x7a, 0x03, 0x7b, 0x03, + 0x2c, 0x03, 0x2d, 0x03, 0xdd, 0x02, 0xdf, 0x02, 0x98, 0x02, 0x99, 0x02, + 0x57, 0x02, 0x57, 0x02, 0x1d, 0x02, 0x1e, 0x02, 0xec, 0x01, 0xed, 0x01, + 0xc5, 0x01, 0xc6, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0x98, 0x01, 0x99, 0x01, + 0x91, 0x01, 0x90, 0x01, 0x97, 0x01, 0x99, 0x01, 0xa8, 0x01, 0xa9, 0x01, + 0xc6, 0x01, 0xc3, 0x01, 0xe9, 0x01, 0xec, 0x01, 0x1b, 0x02, 0x1a, 0x02, + 0x52, 0x02, 0x55, 0x02, 0x93, 0x02, 0x92, 0x02, 0xd7, 0x02, 0xd9, 0x02, + 0x22, 0x03, 0x21, 0x03, 0x6f, 0x03, 0x71, 0x03, 0xbc, 0x03, 0xbe, 0x03, + 0x0b, 0x04, 0x0c, 0x04, 0x58, 0x04, 0x59, 0x04, 0xa0, 0x04, 0xa2, 0x04, + 0xe2, 0x04, 0xe3, 0x04, 0x1d, 0x05, 0x1f, 0x05, 0x53, 0x05, 0x55, 0x05, + 0x7c, 0x05, 0x7c, 0x05, 0x9a, 0x05, 0x9d, 0x05, 0xae, 0x05, 0xae, 0x05, + 0xb4, 0x05, 0xb5, 0x05, 0xae, 0x05, 0xb0, 0x05, 0x9a, 0x05, 0x99, 0x05, + 0x79, 0x05, 0x7c, 0x05, 0x4a, 0x05, 0x4a, 0x05, 0x0f, 0x05, 0x10, 0x05, + 0xc8, 0x04, 0xc9, 0x04, 0x75, 0x04, 0x74, 0x04, 0x19, 0x04, 0x19, 0x04, + 0xb3, 0x03, 0xb4, 0x03, 0x48, 0x03, 0x48, 0x03, 0xd5, 0x02, 0xd7, 0x02, + 0x5d, 0x02, 0x5c, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0x69, 0x01, 0x6b, 0x01, + 0xf0, 0x00, 0xef, 0x00, 0x78, 0x00, 0x7a, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x98, 0xff, 0x98, 0xff, 0x2f, 0xff, 0x30, 0xff, 0xd2, 0xfe, 0xd1, 0xfe, + 0x7b, 0xfe, 0x7c, 0xfe, 0x2f, 0xfe, 0x2e, 0xfe, 0xef, 0xfd, 0xf1, 0xfd, + 0xb9, 0xfd, 0xb8, 0xfd, 0x90, 0xfd, 0x92, 0xfd, 0x71, 0xfd, 0x71, 0xfd, + 0x5f, 0xfd, 0x60, 0xfd, 0x59, 0xfd, 0x59, 0xfd, 0x5c, 0xfd, 0x5c, 0xfd, + 0x6a, 0xfd, 0x6a, 0xfd, 0x7d, 0xfd, 0x7e, 0xfd, 0x9f, 0xfd, 0x9e, 0xfd, + 0xc1, 0xfd, 0xc2, 0xfd, 0xea, 0xfd, 0xea, 0xfd, 0x1b, 0xfe, 0x1c, 0xfe, + 0x46, 0xfe, 0x47, 0xfe, 0x79, 0xfe, 0x78, 0xfe, 0xa6, 0xfe, 0xa8, 0xfe, + 0xd3, 0xfe, 0xd3, 0xfe, 0xfc, 0xfe, 0xfe, 0xfe, 0x1f, 0xff, 0x1e, 0xff, + 0x3b, 0xff, 0x3c, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x5c, 0xff, 0x5e, 0xff, + 0x5d, 0xff, 0x5d, 0xff, 0x55, 0xff, 0x56, 0xff, 0x42, 0xff, 0x43, 0xff, + 0x26, 0xff, 0x27, 0xff, 0xfc, 0xfe, 0xfd, 0xfe, 0xcc, 0xfe, 0xcc, 0xfe, + 0x90, 0xfe, 0x91, 0xfe, 0x4c, 0xfe, 0x4e, 0xfe, 0x01, 0xfe, 0x03, 0xfe, + 0xad, 0xfd, 0xad, 0xfd, 0x56, 0xfd, 0x57, 0xfd, 0xf8, 0xfc, 0xf7, 0xfc, + 0x97, 0xfc, 0x9a, 0xfc, 0x39, 0xfc, 0x37, 0xfc, 0xd3, 0xfb, 0xd5, 0xfb, + 0x77, 0xfb, 0x77, 0xfb, 0x17, 0xfb, 0x19, 0xfb, 0xc3, 0xfa, 0xc3, 0xfa, + 0x6f, 0xfa, 0x72, 0xfa, 0x27, 0xfa, 0x26, 0xfa, 0xe7, 0xf9, 0xe9, 0xf9, + 0xaf, 0xf9, 0xaf, 0xf9, 0x85, 0xf9, 0x86, 0xf9, 0x66, 0xf9, 0x66, 0xf9, + 0x51, 0xf9, 0x53, 0xf9, 0x4f, 0xf9, 0x4e, 0xf9, 0x51, 0xf9, 0x54, 0xf9, + 0x68, 0xf9, 0x67, 0xf9, 0x85, 0xf9, 0x88, 0xf9, 0xb5, 0xf9, 0xb5, 0xf9, + 0xeb, 0xf9, 0xec, 0xf9, 0x2f, 0xfa, 0x30, 0xfa, 0x7b, 0xfa, 0x7b, 0xfa, + 0xcf, 0xfa, 0xd2, 0xfa, 0x2a, 0xfb, 0x2c, 0xfb, 0x8d, 0xfb, 0x8e, 0xfb, + 0xee, 0xfb, 0xf1, 0xfb, 0x57, 0xfc, 0x58, 0xfc, 0xbe, 0xfc, 0xc0, 0xfc, + 0x23, 0xfd, 0x24, 0xfd, 0x87, 0xfd, 0x88, 0xfd, 0xe4, 0xfd, 0xe6, 0xfd, + 0x3f, 0xfe, 0x41, 0xfe, 0x8c, 0xfe, 0x8f, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, + 0x16, 0xff, 0x18, 0xff, 0x4b, 0xff, 0x4d, 0xff, 0x76, 0xff, 0x77, 0xff, + 0x95, 0xff, 0x97, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xb1, 0xff, 0xb3, 0xff, + 0xae, 0xff, 0xb1, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0x8b, 0xff, 0x8c, 0xff, + 0x6b, 0xff, 0x6c, 0xff, 0x44, 0xff, 0x44, 0xff, 0x15, 0xff, 0x16, 0xff, + 0xe2, 0xfe, 0xe2, 0xfe, 0xac, 0xfe, 0xac, 0xfe, 0x70, 0xfe, 0x71, 0xfe, + 0x37, 0xfe, 0x38, 0xfe, 0xfd, 0xfd, 0xfe, 0xfd, 0xc6, 0xfd, 0xc8, 0xfd, + 0x95, 0xfd, 0x94, 0xfd, 0x65, 0xfd, 0x67, 0xfd, 0x40, 0xfd, 0x41, 0xfd, + 0x21, 0xfd, 0x22, 0xfd, 0x0b, 0xfd, 0x0d, 0xfd, 0x02, 0xfd, 0x03, 0xfd, + 0x01, 0xfd, 0x02, 0xfd, 0x10, 0xfd, 0x11, 0xfd, 0x25, 0xfd, 0x27, 0xfd, + 0x4b, 0xfd, 0x4c, 0xfd, 0x7a, 0xfd, 0x7a, 0xfd, 0xb5, 0xfd, 0xb6, 0xfd, + 0xfc, 0xfd, 0xfd, 0xfd, 0x4b, 0xfe, 0x4b, 0xfe, 0xa4, 0xfe, 0xa6, 0xfe, + 0x06, 0xff, 0x05, 0xff, 0x6d, 0xff, 0x6f, 0xff, 0xdb, 0xff, 0xda, 0xff, + 0x4d, 0x00, 0x4e, 0x00, 0xc2, 0x00, 0xc1, 0x00, 0x35, 0x01, 0x36, 0x01, + 0xac, 0x01, 0xad, 0x01, 0x1e, 0x02, 0x1d, 0x02, 0x8e, 0x02, 0x8e, 0x02, + 0xf6, 0x02, 0xf7, 0x02, 0x5a, 0x03, 0x5c, 0x03, 0xb5, 0x03, 0xb5, 0x03, + 0x08, 0x04, 0x0c, 0x04, 0x51, 0x04, 0x51, 0x04, 0x8f, 0x04, 0x90, 0x04, + 0xc3, 0x04, 0xc4, 0x04, 0xe9, 0x04, 0xe9, 0x04, 0x07, 0x05, 0x07, 0x05, + 0x15, 0x05, 0x16, 0x05, 0x1a, 0x05, 0x1b, 0x05, 0x16, 0x05, 0x15, 0x05, + 0x03, 0x05, 0x06, 0x05, 0xeb, 0x04, 0xe7, 0x04, 0xc6, 0x04, 0xc9, 0x04, + 0x9b, 0x04, 0x99, 0x04, 0x6b, 0x04, 0x6e, 0x04, 0x35, 0x04, 0x34, 0x04, + 0xfb, 0x03, 0xfb, 0x03, 0xbf, 0x03, 0xbe, 0x03, 0x83, 0x03, 0x84, 0x03, + 0x46, 0x03, 0x46, 0x03, 0x0d, 0x03, 0x0c, 0x03, 0xd8, 0x02, 0xd9, 0x02, + 0xa5, 0x02, 0xa6, 0x02, 0x7d, 0x02, 0x7b, 0x02, 0x58, 0x02, 0x59, 0x02, + 0x3d, 0x02, 0x3c, 0x02, 0x28, 0x02, 0x28, 0x02, 0x1e, 0x02, 0x1f, 0x02, + 0x1d, 0x02, 0x1d, 0x02, 0x26, 0x02, 0x26, 0x02, 0x3a, 0x02, 0x3a, 0x02, + 0x55, 0x02, 0x56, 0x02, 0x7b, 0x02, 0x79, 0x02, 0xa7, 0x02, 0xa9, 0x02, + 0xda, 0x02, 0xd9, 0x02, 0x15, 0x03, 0x17, 0x03, 0x52, 0x03, 0x53, 0x03, + 0x98, 0x03, 0x96, 0x03, 0xd9, 0x03, 0xda, 0x03, 0x1f, 0x04, 0x1d, 0x04, + 0x63, 0x04, 0x64, 0x04, 0xa3, 0x04, 0xa4, 0x04, 0xe4, 0x04, 0xe3, 0x04, + 0x1a, 0x05, 0x1a, 0x05, 0x4e, 0x05, 0x50, 0x05, 0x7a, 0x05, 0x79, 0x05, + 0x9a, 0x05, 0x9c, 0x05, 0xb5, 0x05, 0xb5, 0x05, 0xc0, 0x05, 0xbf, 0x05, + 0xc2, 0x05, 0xc5, 0x05, 0xba, 0x05, 0xb7, 0x05, 0xa2, 0x05, 0xa6, 0x05, + 0x82, 0x05, 0x81, 0x05, 0x53, 0x05, 0x54, 0x05, 0x19, 0x05, 0x1b, 0x05, + 0xd7, 0x04, 0xd7, 0x04, 0x88, 0x04, 0x89, 0x04, 0x33, 0x04, 0x32, 0x04, + 0xd1, 0x03, 0xd2, 0x03, 0x6e, 0x03, 0x6e, 0x03, 0x00, 0x03, 0x01, 0x03, + 0x93, 0x02, 0x95, 0x02, 0x24, 0x02, 0x24, 0x02, 0xb1, 0x01, 0xb2, 0x01, + 0x43, 0x01, 0x44, 0x01, 0xd3, 0x00, 0xd3, 0x00, 0x69, 0x00, 0x6b, 0x00, + 0x05, 0x00, 0x06, 0x00, 0xa6, 0xff, 0xa8, 0xff, 0x53, 0xff, 0x53, 0xff, + 0x03, 0xff, 0x04, 0xff, 0xbf, 0xfe, 0xc1, 0xfe, 0x86, 0xfe, 0x86, 0xfe, + 0x54, 0xfe, 0x56, 0xfe, 0x31, 0xfe, 0x32, 0xfe, 0x16, 0xfe, 0x17, 0xfe, + 0x08, 0xfe, 0x0c, 0xfe, 0x03, 0xfe, 0x03, 0xfe, 0x07, 0xfe, 0x09, 0xfe, + 0x13, 0xfe, 0x16, 0xfe, 0x2b, 0xfe, 0x2b, 0xfe, 0x48, 0xfe, 0x4a, 0xfe, + 0x69, 0xfe, 0x6a, 0xfe, 0x92, 0xfe, 0x93, 0xfe, 0xbb, 0xfe, 0xbd, 0xfe, + 0xe8, 0xfe, 0xe9, 0xfe, 0x15, 0xff, 0x17, 0xff, 0x41, 0xff, 0x43, 0xff, + 0x6b, 0xff, 0x6b, 0xff, 0x8e, 0xff, 0x91, 0xff, 0xb0, 0xff, 0xb1, 0xff, + 0xc8, 0xff, 0xca, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xe3, 0xff, 0xe5, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xd9, 0xff, 0xdc, 0xff, 0xc6, 0xff, 0xc7, 0xff, + 0xa9, 0xff, 0xac, 0xff, 0x7e, 0xff, 0x7f, 0xff, 0x4e, 0xff, 0x4f, 0xff, + 0x12, 0xff, 0x14, 0xff, 0xce, 0xfe, 0xd0, 0xfe, 0x83, 0xfe, 0x84, 0xfe, + 0x30, 0xfe, 0x31, 0xfe, 0xd6, 0xfd, 0xd8, 0xfd, 0x79, 0xfd, 0x7a, 0xfd, + 0x18, 0xfd, 0x1a, 0xfd, 0xb4, 0xfc, 0xb6, 0xfc, 0x52, 0xfc, 0x50, 0xfc, + 0xef, 0xfb, 0xf1, 0xfb, 0x8e, 0xfb, 0x8f, 0xfb, 0x32, 0xfb, 0x33, 0xfb, + 0xdc, 0xfa, 0xde, 0xfa, 0x8c, 0xfa, 0x8c, 0xfa, 0x42, 0xfa, 0x44, 0xfa, + 0x04, 0xfa, 0x06, 0xfa, 0xcf, 0xf9, 0xce, 0xf9, 0xa4, 0xf9, 0xa4, 0xf9, + 0x84, 0xf9, 0x85, 0xf9, 0x71, 0xf9, 0x70, 0xf9, 0x69, 0xf9, 0x6c, 0xf9, + 0x6e, 0xf9, 0x6c, 0xf9, 0x7c, 0xf9, 0x81, 0xf9, 0x9b, 0xf9, 0x9a, 0xf9, + 0xc1, 0xf9, 0xc2, 0xf9, 0xf1, 0xf9, 0xf3, 0xf9, 0x2c, 0xfa, 0x2b, 0xfa, + 0x6f, 0xfa, 0x70, 0xfa, 0xb8, 0xfa, 0xba, 0xfa, 0x08, 0xfb, 0x09, 0xfb, + 0x5d, 0xfb, 0x5d, 0xfb, 0xb3, 0xfb, 0xb5, 0xfb, 0x0f, 0xfc, 0x0e, 0xfc, + 0x65, 0xfc, 0x67, 0xfc, 0xbe, 0xfc, 0xbe, 0xfc, 0x10, 0xfd, 0x14, 0xfd, + 0x61, 0xfd, 0x60, 0xfd, 0xae, 0xfd, 0xb1, 0xfd, 0xf1, 0xfd, 0xef, 0xfd, + 0x2e, 0xfe, 0x2f, 0xfe, 0x60, 0xfe, 0x62, 0xfe, 0x8d, 0xfe, 0x8d, 0xfe, + 0xae, 0xfe, 0xb1, 0xfe, 0xc7, 0xfe, 0xc6, 0xfe, 0xd6, 0xfe, 0xd8, 0xfe, + 0xdd, 0xfe, 0xdb, 0xfe, 0xd7, 0xfe, 0xda, 0xfe, 0xcd, 0xfe, 0xcc, 0xfe, + 0xb7, 0xfe, 0xb9, 0xfe, 0x9f, 0xfe, 0x9e, 0xfe, 0x7c, 0xfe, 0x7c, 0xfe, + 0x58, 0xfe, 0x5a, 0xfe, 0x2e, 0xfe, 0x2e, 0xfe, 0x03, 0xfe, 0x04, 0xfe, + 0xd9, 0xfd, 0xd7, 0xfd, 0xa9, 0xfd, 0xab, 0xfd, 0x83, 0xfd, 0x81, 0xfd, + 0x5a, 0xfd, 0x5b, 0xfd, 0x39, 0xfd, 0x3a, 0xfd, 0x1d, 0xfd, 0x1c, 0xfd, + 0x07, 0xfd, 0x09, 0xfd, 0xfa, 0xfc, 0xf9, 0xfc, 0xf6, 0xfc, 0xf7, 0xfc, + 0xfb, 0xfc, 0xfc, 0xfc, 0x0b, 0xfd, 0x09, 0xfd, 0x23, 0xfd, 0x26, 0xfd, + 0x44, 0xfd, 0x45, 0xfd, 0x73, 0xfd, 0x76, 0xfd, 0xa9, 0xfd, 0xaa, 0xfd, + 0xea, 0xfd, 0xeb, 0xfd, 0x33, 0xfe, 0x35, 0xfe, 0x85, 0xfe, 0x84, 0xfe, + 0xdc, 0xfe, 0xde, 0xfe, 0x3b, 0xff, 0x3c, 0xff, 0x9e, 0xff, 0x9f, 0xff, + 0x04, 0x00, 0x05, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0xd5, 0x00, 0xd7, 0x00, + 0x40, 0x01, 0x3f, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0x09, 0x02, 0x09, 0x02, + 0x65, 0x02, 0x68, 0x02, 0xc0, 0x02, 0xc2, 0x02, 0x14, 0x03, 0x11, 0x03, + 0x5b, 0x03, 0x5e, 0x03, 0x9e, 0x03, 0x9e, 0x03, 0xd6, 0x03, 0xd7, 0x03, + 0x04, 0x04, 0x06, 0x04, 0x2b, 0x04, 0x29, 0x04, 0x42, 0x04, 0x44, 0x04, + 0x54, 0x04, 0x56, 0x04, 0x5a, 0x04, 0x59, 0x04, 0x55, 0x04, 0x58, 0x04, + 0x49, 0x04, 0x4a, 0x04, 0x35, 0x04, 0x35, 0x04, 0x19, 0x04, 0x1b, 0x04, + 0xf5, 0x03, 0xf5, 0x03, 0xd0, 0x03, 0xd2, 0x03, 0xa0, 0x03, 0xa2, 0x03, + 0x74, 0x03, 0x73, 0x03, 0x42, 0x03, 0x44, 0x03, 0x12, 0x03, 0x13, 0x03, + 0xe3, 0x02, 0xe4, 0x02, 0xb6, 0x02, 0xb6, 0x02, 0x8c, 0x02, 0x8e, 0x02, + 0x69, 0x02, 0x6a, 0x02, 0x4b, 0x02, 0x4c, 0x02, 0x32, 0x02, 0x34, 0x02, + 0x25, 0x02, 0x24, 0x02, 0x1a, 0x02, 0x1c, 0x02, 0x1b, 0x02, 0x1e, 0x02, + 0x27, 0x02, 0x28, 0x02, 0x37, 0x02, 0x38, 0x02, 0x56, 0x02, 0x57, 0x02, + 0x78, 0x02, 0x78, 0x02, 0xa4, 0x02, 0xa7, 0x02, 0xd8, 0x02, 0xd7, 0x02, + 0x11, 0x03, 0x13, 0x03, 0x51, 0x03, 0x51, 0x03, 0x93, 0x03, 0x96, 0x03, + 0xdc, 0x03, 0xdb, 0x03, 0x23, 0x04, 0x24, 0x04, 0x6e, 0x04, 0x6e, 0x04, + 0xb6, 0x04, 0xb5, 0x04, 0xfc, 0x04, 0xfc, 0x04, 0x3c, 0x05, 0x3e, 0x05, + 0x7c, 0x05, 0x7c, 0x05, 0xb0, 0x05, 0xb1, 0x05, 0xe0, 0x05, 0xe1, 0x05, + 0x08, 0x06, 0x08, 0x06, 0x24, 0x06, 0x27, 0x06, 0x36, 0x06, 0x37, 0x06, + 0x3f, 0x06, 0x40, 0x06, 0x3a, 0x06, 0x3b, 0x06, 0x2d, 0x06, 0x2c, 0x06, + 0x0f, 0x06, 0x10, 0x06, 0xe8, 0x05, 0xea, 0x05, 0xb6, 0x05, 0xb6, 0x05, + 0x79, 0x05, 0x7b, 0x05, 0x32, 0x05, 0x31, 0x05, 0xe2, 0x04, 0xe4, 0x04, + 0x8a, 0x04, 0x8a, 0x04, 0x2a, 0x04, 0x2c, 0x04, 0xc6, 0x03, 0xc7, 0x03, + 0x5a, 0x03, 0x5b, 0x03, 0xf2, 0x02, 0xf4, 0x02, 0x81, 0x02, 0x83, 0x02, + 0x15, 0x02, 0x14, 0x02, 0xa7, 0x01, 0xa8, 0x01, 0x41, 0x01, 0x43, 0x01, + 0xda, 0x00, 0xda, 0x00, 0x7b, 0x00, 0x7d, 0x00, 0x23, 0x00, 0x24, 0x00, + 0xd0, 0xff, 0xd1, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x45, 0xff, 0x46, 0xff, + 0x12, 0xff, 0x11, 0xff, 0xe3, 0xfe, 0xe6, 0xfe, 0xc0, 0xfe, 0xc0, 0xfe, + 0xa8, 0xfe, 0xa8, 0xfe, 0x96, 0xfe, 0x96, 0xfe, 0x91, 0xfe, 0x94, 0xfe, + 0x92, 0xfe, 0x92, 0xfe, 0x9c, 0xfe, 0x9e, 0xfe, 0xac, 0xfe, 0xac, 0xfe, + 0xc1, 0xfe, 0xc2, 0xfe, 0xde, 0xfe, 0xdf, 0xfe, 0xfa, 0xfe, 0xfb, 0xfe, + 0x1e, 0xff, 0x1e, 0xff, 0x3d, 0xff, 0x3f, 0xff, 0x62, 0xff, 0x61, 0xff, + 0x7f, 0xff, 0x81, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0xb8, 0xff, 0xb9, 0xff, + 0xc9, 0xff, 0xc9, 0xff, 0xdc, 0xff, 0xdd, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xd6, 0xff, 0xd7, 0xff, 0xc5, 0xff, 0xc5, 0xff, + 0xab, 0xff, 0xaf, 0xff, 0x8b, 0xff, 0x89, 0xff, 0x5f, 0xff, 0x60, 0xff, + 0x2b, 0xff, 0x2d, 0xff, 0xf3, 0xfe, 0xf0, 0xfe, 0xad, 0xfe, 0xb1, 0xfe, + 0x68, 0xfe, 0x67, 0xfe, 0x19, 0xfe, 0x1b, 0xfe, 0xc9, 0xfd, 0xc7, 0xfd, + 0x72, 0xfd, 0x74, 0xfd, 0x1b, 0xfd, 0x1c, 0xfd, 0xc4, 0xfc, 0xc5, 0xfc, + 0x6b, 0xfc, 0x6b, 0xfc, 0x17, 0xfc, 0x19, 0xfc, 0xc3, 0xfb, 0xc3, 0xfb, + 0x76, 0xfb, 0x75, 0xfb, 0x2b, 0xfb, 0x2f, 0xfb, 0xe8, 0xfa, 0xe8, 0xfa, + 0xaf, 0xfa, 0xaf, 0xfa, 0x7c, 0xfa, 0x7c, 0xfa, 0x51, 0xfa, 0x53, 0xfa, + 0x33, 0xfa, 0x33, 0xfa, 0x18, 0xfa, 0x19, 0xfa, 0x11, 0xfa, 0x10, 0xfa, + 0x0b, 0xfa, 0x0d, 0xfa, 0x14, 0xfa, 0x15, 0xfa, 0x25, 0xfa, 0x26, 0xfa, + 0x40, 0xfa, 0x3f, 0xfa, 0x64, 0xfa, 0x66, 0xfa, 0x90, 0xfa, 0x8f, 0xfa, + 0xc2, 0xfa, 0xc4, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0x38, 0xfb, 0x39, 0xfb, + 0x7a, 0xfb, 0x7a, 0xfb, 0xbd, 0xfb, 0xbd, 0xfb, 0x02, 0xfc, 0x04, 0xfc, + 0x48, 0xfc, 0x46, 0xfc, 0x8a, 0xfc, 0x8d, 0xfc, 0xcc, 0xfc, 0xcb, 0xfc, + 0x08, 0xfd, 0x09, 0xfd, 0x43, 0xfd, 0x44, 0xfd, 0x74, 0xfd, 0x74, 0xfd, + 0xa3, 0xfd, 0xa3, 0xfd, 0xc4, 0xfd, 0xc5, 0xfd, 0xe4, 0xfd, 0xe7, 0xfd, + 0xf9, 0xfd, 0xf8, 0xfd, 0x05, 0xfe, 0x07, 0xfe, 0x0d, 0xfe, 0x0d, 0xfe, + 0x08, 0xfe, 0x0a, 0xfe, 0x00, 0xfe, 0x01, 0xfe, 0xee, 0xfd, 0xf0, 0xfd, + 0xd6, 0xfd, 0xd6, 0xfd, 0xbb, 0xfd, 0xbe, 0xfd, 0x98, 0xfd, 0x99, 0xfd, + 0x75, 0xfd, 0x76, 0xfd, 0x4d, 0xfd, 0x4c, 0xfd, 0x24, 0xfd, 0x26, 0xfd, + 0xfd, 0xfc, 0xfe, 0xfc, 0xd4, 0xfc, 0xd4, 0xfc, 0xb1, 0xfc, 0xb3, 0xfc, + 0x8f, 0xfc, 0x8f, 0xfc, 0x74, 0xfc, 0x76, 0xfc, 0x5c, 0xfc, 0x5b, 0xfc, + 0x4e, 0xfc, 0x51, 0xfc, 0x46, 0xfc, 0x46, 0xfc, 0x47, 0xfc, 0x48, 0xfc, + 0x52, 0xfc, 0x52, 0xfc, 0x63, 0xfc, 0x64, 0xfc, 0x83, 0xfc, 0x82, 0xfc, + 0xa8, 0xfc, 0xa9, 0xfc, 0xda, 0xfc, 0xda, 0xfc, 0x15, 0xfd, 0x15, 0xfd, + 0x56, 0xfd, 0x58, 0xfd, 0xa5, 0xfd, 0xa2, 0xfd, 0xf5, 0xfd, 0xf8, 0xfd, + 0x50, 0xfe, 0x51, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, 0x14, 0xff, 0x15, 0xff, + 0x7b, 0xff, 0x7b, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0x4e, 0x00, 0x4e, 0x00, + 0xb6, 0x00, 0xb7, 0x00, 0x1f, 0x01, 0x21, 0x01, 0x82, 0x01, 0x83, 0x01, + 0xe3, 0x01, 0xe4, 0x01, 0x3e, 0x02, 0x3e, 0x02, 0x93, 0x02, 0x93, 0x02, + 0xdf, 0x02, 0xdf, 0x02, 0x26, 0x03, 0x26, 0x03, 0x61, 0x03, 0x60, 0x03, + 0x92, 0x03, 0x95, 0x03, 0xbe, 0x03, 0xbd, 0x03, 0xdb, 0x03, 0xdc, 0x03, + 0xf3, 0x03, 0xf4, 0x03, 0xfd, 0x03, 0xfd, 0x03, 0x01, 0x04, 0x03, 0x04, + 0xfb, 0x03, 0xfb, 0x03, 0xee, 0x03, 0xed, 0x03, 0xd9, 0x03, 0xda, 0x03, + 0xbe, 0x03, 0xbe, 0x03, 0xa0, 0x03, 0xa2, 0x03, 0x77, 0x03, 0x79, 0x03, + 0x53, 0x03, 0x54, 0x03, 0x29, 0x03, 0x29, 0x03, 0xfe, 0x02, 0xff, 0x02, + 0xd6, 0x02, 0xd7, 0x02, 0xab, 0x02, 0xab, 0x02, 0x88, 0x02, 0x8b, 0x02, + 0x65, 0x02, 0x65, 0x02, 0x4b, 0x02, 0x4e, 0x02, 0x32, 0x02, 0x34, 0x02, + 0x25, 0x02, 0x24, 0x02, 0x1c, 0x02, 0x1e, 0x02, 0x1c, 0x02, 0x1b, 0x02, + 0x23, 0x02, 0x25, 0x02, 0x33, 0x02, 0x34, 0x02, 0x49, 0x02, 0x4a, 0x02, + 0x69, 0x02, 0x69, 0x02, 0x8e, 0x02, 0x90, 0x02, 0xbe, 0x02, 0xbc, 0x02, + 0xef, 0x02, 0xf1, 0x02, 0x29, 0x03, 0x28, 0x03, 0x66, 0x03, 0x66, 0x03, + 0xa5, 0x03, 0xa7, 0x03, 0xe8, 0x03, 0xe8, 0x03, 0x2d, 0x04, 0x2e, 0x04, + 0x6f, 0x04, 0x70, 0x04, 0xb2, 0x04, 0xb1, 0x04, 0xf0, 0x04, 0xf2, 0x04, + 0x2d, 0x05, 0x2b, 0x05, 0x62, 0x05, 0x65, 0x05, 0x94, 0x05, 0x93, 0x05, + 0xba, 0x05, 0xbc, 0x05, 0xdd, 0x05, 0xdd, 0x05, 0xf3, 0x05, 0xf5, 0x05, + 0x03, 0x06, 0x03, 0x06, 0x07, 0x06, 0x07, 0x06, 0x02, 0x06, 0x04, 0x06, + 0xf2, 0x05, 0xf1, 0x05, 0xd6, 0x05, 0xd7, 0x05, 0xb5, 0x05, 0xb4, 0x05, + 0x84, 0x05, 0x85, 0x05, 0x50, 0x05, 0x51, 0x05, 0x10, 0x05, 0x10, 0x05, + 0xcb, 0x04, 0xcc, 0x04, 0x7d, 0x04, 0x7e, 0x04, 0x2d, 0x04, 0x2d, 0x04, + 0xd5, 0x03, 0xd6, 0x03, 0x7c, 0x03, 0x7c, 0x03, 0x21, 0x03, 0x22, 0x03, + 0xc4, 0x02, 0xc5, 0x02, 0x6b, 0x02, 0x6b, 0x02, 0x11, 0x02, 0x13, 0x02, + 0xbb, 0x01, 0xbb, 0x01, 0x6a, 0x01, 0x6a, 0x01, 0x1b, 0x01, 0x1e, 0x01, + 0xd6, 0x00, 0xd6, 0x00, 0x94, 0x00, 0x94, 0x00, 0x5c, 0x00, 0x5d, 0x00, + 0x28, 0x00, 0x2a, 0x00, 0x01, 0x00, 0x01, 0x00, 0xde, 0xff, 0xdd, 0xff, + 0xc4, 0xff, 0xc5, 0xff, 0xb3, 0xff, 0xb2, 0xff, 0xa7, 0xff, 0xa9, 0xff, + 0xa2, 0xff, 0xa2, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xad, 0xff, 0xad, 0xff, + 0xb8, 0xff, 0xba, 0xff, 0xc8, 0xff, 0xc9, 0xff, 0xdc, 0xff, 0xdc, 0xff, + 0xee, 0xff, 0xef, 0xff, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x28, 0x00, 0x2a, 0x00, 0x37, 0x00, 0x38, 0x00, 0x41, 0x00, 0x41, 0x00, + 0x49, 0x00, 0x4a, 0x00, 0x47, 0x00, 0x48, 0x00, 0x44, 0x00, 0x43, 0x00, + 0x35, 0x00, 0x35, 0x00, 0x22, 0x00, 0x22, 0x00, 0x06, 0x00, 0x07, 0x00, + 0xe2, 0xff, 0xe2, 0xff, 0xb8, 0xff, 0xb9, 0xff, 0x85, 0xff, 0x85, 0xff, + 0x4d, 0xff, 0x4d, 0xff, 0x0c, 0xff, 0x0d, 0xff, 0xc6, 0xfe, 0xc7, 0xfe, + 0x7c, 0xfe, 0x7c, 0xfe, 0x2d, 0xfe, 0x2d, 0xfe, 0xdc, 0xfd, 0xde, 0xfd, + 0x86, 0xfd, 0x86, 0xfd, 0x30, 0xfd, 0x33, 0xfd, 0xdf, 0xfc, 0xde, 0xfc, + 0x85, 0xfc, 0x86, 0xfc, 0x36, 0xfc, 0x36, 0xfc, 0xe4, 0xfb, 0xe4, 0xfb, + 0x9c, 0xfb, 0x9b, 0xfb, 0x55, 0xfb, 0x56, 0xfb, 0x15, 0xfb, 0x15, 0xfb, + 0xe0, 0xfa, 0xe2, 0xfa, 0xae, 0xfa, 0xac, 0xfa, 0x87, 0xfa, 0x8a, 0xfa, + 0x69, 0xfa, 0x68, 0xfa, 0x53, 0xfa, 0x54, 0xfa, 0x48, 0xfa, 0x49, 0xfa, + 0x47, 0xfa, 0x47, 0xfa, 0x4c, 0xfa, 0x4e, 0xfa, 0x5f, 0xfa, 0x60, 0xfa, + 0x77, 0xfa, 0x7a, 0xfa, 0x99, 0xfa, 0x99, 0xfa, 0xc2, 0xfa, 0xc4, 0xfa, + 0xef, 0xfa, 0xf0, 0xfa, 0x26, 0xfb, 0x26, 0xfb, 0x5e, 0xfb, 0x5f, 0xfb, + 0x99, 0xfb, 0x99, 0xfb, 0xd9, 0xfb, 0xdb, 0xfb, 0x18, 0xfc, 0x18, 0xfc, + 0x58, 0xfc, 0x58, 0xfc, 0x96, 0xfc, 0x97, 0xfc, 0xd1, 0xfc, 0xd2, 0xfc, + 0x0b, 0xfd, 0x0b, 0xfd, 0x3d, 0xfd, 0x3f, 0xfd, 0x6d, 0xfd, 0x6c, 0xfd, + 0x95, 0xfd, 0x96, 0xfd, 0xb7, 0xfd, 0xb7, 0xfd, 0xd1, 0xfd, 0xd2, 0xfd, + 0xe3, 0xfd, 0xe4, 0xfd, 0xed, 0xfd, 0xef, 0xfd, 0xf4, 0xfd, 0xf3, 0xfd, + 0xee, 0xfd, 0xee, 0xfd, 0xe3, 0xfd, 0xe4, 0xfd, 0xd1, 0xfd, 0xd1, 0xfd, + 0xba, 0xfd, 0xb9, 0xfd, 0x9c, 0xfd, 0x9d, 0xfd, 0x7a, 0xfd, 0x7a, 0xfd, + 0x54, 0xfd, 0x55, 0xfd, 0x2c, 0xfd, 0x2c, 0xfd, 0x01, 0xfd, 0x02, 0xfd, + 0xd8, 0xfc, 0xd8, 0xfc, 0xaf, 0xfc, 0xb0, 0xfc, 0x88, 0xfc, 0x88, 0xfc, + 0x62, 0xfc, 0x62, 0xfc, 0x44, 0xfc, 0x43, 0xfc, 0x26, 0xfc, 0x27, 0xfc, + 0x14, 0xfc, 0x16, 0xfc, 0x04, 0xfc, 0x05, 0xfc, 0x01, 0xfc, 0x00, 0xfc, + 0x00, 0xfc, 0x01, 0xfc, 0x0d, 0xfc, 0x0d, 0xfc, 0x22, 0xfc, 0x23, 0xfc, + 0x3d, 0xfc, 0x3d, 0xfc, 0x66, 0xfc, 0x66, 0xfc, 0x93, 0xfc, 0x94, 0xfc, + 0xcb, 0xfc, 0xcd, 0xfc, 0x0c, 0xfd, 0x0c, 0xfd, 0x52, 0xfd, 0x55, 0xfd, + 0xa2, 0xfd, 0xa2, 0xfd, 0xf4, 0xfd, 0xf6, 0xfd, 0x4c, 0xfe, 0x4e, 0xfe, + 0xab, 0xfe, 0xab, 0xfe, 0x08, 0xff, 0x0a, 0xff, 0x6a, 0xff, 0x6c, 0xff, + 0xcb, 0xff, 0xcb, 0xff, 0x2b, 0x00, 0x2d, 0x00, 0x8a, 0x00, 0x8d, 0x00, + 0xe5, 0x00, 0xe5, 0x00, 0x3e, 0x01, 0x40, 0x01, 0x90, 0x01, 0x8f, 0x01, + 0xdb, 0x01, 0xde, 0x01, 0x23, 0x02, 0x24, 0x02, 0x60, 0x02, 0x61, 0x02, + 0x99, 0x02, 0x9a, 0x02, 0xc8, 0x02, 0xca, 0x02, 0xed, 0x02, 0xed, 0x02, + 0x0c, 0x03, 0x0e, 0x03, 0x22, 0x03, 0x22, 0x03, 0x32, 0x03, 0x34, 0x03, + 0x38, 0x03, 0x3a, 0x03, 0x39, 0x03, 0x38, 0x03, 0x33, 0x03, 0x36, 0x03, + 0x27, 0x03, 0x26, 0x03, 0x17, 0x03, 0x19, 0x03, 0x05, 0x03, 0x04, 0x03, + 0xea, 0x02, 0xed, 0x02, 0xd5, 0x02, 0xd3, 0x02, 0xb8, 0x02, 0xbb, 0x02, + 0xa1, 0x02, 0xa0, 0x02, 0x88, 0x02, 0x88, 0x02, 0x71, 0x02, 0x72, 0x02, + 0x5e, 0x02, 0x5f, 0x02, 0x4f, 0x02, 0x4f, 0x02, 0x44, 0x02, 0x45, 0x02, + 0x40, 0x02, 0x41, 0x02, 0x40, 0x02, 0x41, 0x02, 0x49, 0x02, 0x49, 0x02, + 0x55, 0x02, 0x56, 0x02, 0x6b, 0x02, 0x6c, 0x02, 0x84, 0x02, 0x85, 0x02, + 0xa6, 0x02, 0xa6, 0x02, 0xcd, 0x02, 0xce, 0x02, 0xfa, 0x02, 0xfa, 0x02, + 0x2c, 0x03, 0x2d, 0x03, 0x63, 0x03, 0x64, 0x03, 0x9c, 0x03, 0x9c, 0x03, + 0xd7, 0x03, 0xd9, 0x03, 0x15, 0x04, 0x16, 0x04, 0x54, 0x04, 0x53, 0x04, + 0x8f, 0x04, 0x91, 0x04, 0xcc, 0x04, 0xcb, 0x04, 0x04, 0x05, 0x05, 0x05, + 0x39, 0x05, 0x3a, 0x05, 0x68, 0x05, 0x68, 0x05, 0x93, 0x05, 0x95, 0x05, + 0xb8, 0x05, 0xb8, 0x05, 0xd2, 0x05, 0xd3, 0x05, 0xe8, 0x05, 0xe9, 0x05, + 0xf1, 0x05, 0xf2, 0x05, 0xf7, 0x05, 0xf8, 0x05, 0xee, 0x05, 0xf0, 0x05, + 0xdf, 0x05, 0xe0, 0x05, 0xc9, 0x05, 0xc8, 0x05, 0xa3, 0x05, 0xa7, 0x05, + 0x7e, 0x05, 0x7d, 0x05, 0x47, 0x05, 0x4a, 0x05, 0x10, 0x05, 0x10, 0x05, + 0xce, 0x04, 0xcf, 0x04, 0x87, 0x04, 0x89, 0x04, 0x3e, 0x04, 0x3d, 0x04, + 0xed, 0x03, 0xee, 0x03, 0x9d, 0x03, 0x9e, 0x03, 0x4b, 0x03, 0x4a, 0x03, + 0xf4, 0x02, 0xf7, 0x02, 0xa5, 0x02, 0xa4, 0x02, 0x50, 0x02, 0x51, 0x02, + 0x06, 0x02, 0x05, 0x02, 0xb9, 0x01, 0xba, 0x01, 0x74, 0x01, 0x76, 0x01, + 0x35, 0x01, 0x35, 0x01, 0xf9, 0x00, 0xf9, 0x00, 0xc9, 0x00, 0xc9, 0x00, + 0x9a, 0x00, 0x9b, 0x00, 0x76, 0x00, 0x76, 0x00, 0x5a, 0x00, 0x5a, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x33, 0x00, 0x35, 0x00, 0x2c, 0x00, 0x2c, 0x00, + 0x2a, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x2f, 0x00, 0x37, 0x00, 0x36, 0x00, + 0x43, 0x00, 0x45, 0x00, 0x55, 0x00, 0x53, 0x00, 0x66, 0x00, 0x67, 0x00, + 0x7a, 0x00, 0x7b, 0x00, 0x90, 0x00, 0x8f, 0x00, 0xa3, 0x00, 0xa4, 0x00, + 0xb4, 0x00, 0xb4, 0x00, 0xc2, 0x00, 0xc5, 0x00, 0xd1, 0x00, 0xd0, 0x00, + 0xd6, 0x00, 0xd8, 0x00, 0xd7, 0x00, 0xd6, 0x00, 0xd3, 0x00, 0xd2, 0x00, + 0xc6, 0x00, 0xc8, 0x00, 0xb7, 0x00, 0xb5, 0x00, 0x9a, 0x00, 0x9c, 0x00, + 0x7a, 0x00, 0x7a, 0x00, 0x53, 0x00, 0x52, 0x00, 0x23, 0x00, 0x23, 0x00, + 0xeb, 0xff, 0xee, 0xff, 0xb0, 0xff, 0xae, 0xff, 0x6b, 0xff, 0x6e, 0xff, + 0x24, 0xff, 0x23, 0xff, 0xd9, 0xfe, 0xd7, 0xfe, 0x85, 0xfe, 0x88, 0xfe, + 0x35, 0xfe, 0x33, 0xfe, 0xde, 0xfd, 0xe0, 0xfd, 0x8b, 0xfd, 0x8a, 0xfd, + 0x35, 0xfd, 0x35, 0xfd, 0xe2, 0xfc, 0xe1, 0xfc, 0x90, 0xfc, 0x90, 0xfc, + 0x42, 0xfc, 0x43, 0xfc, 0xf8, 0xfb, 0xf9, 0xfb, 0xb6, 0xfb, 0xb6, 0xfb, + 0x75, 0xfb, 0x75, 0xfb, 0x40, 0xfb, 0x3f, 0xfb, 0x0f, 0xfb, 0x10, 0xfb, + 0xea, 0xfa, 0xea, 0xfa, 0xc9, 0xfa, 0xca, 0xfa, 0xb4, 0xfa, 0xb3, 0xfa, + 0xa8, 0xfa, 0xa9, 0xfa, 0xa2, 0xfa, 0xa2, 0xfa, 0xa6, 0xfa, 0xa7, 0xfa, + 0xb1, 0xfa, 0xb1, 0xfa, 0xc4, 0xfa, 0xc4, 0xfa, 0xde, 0xfa, 0xdd, 0xfa, + 0xfd, 0xfa, 0xff, 0xfa, 0x25, 0xfb, 0x22, 0xfb, 0x4f, 0xfb, 0x50, 0xfb, + 0x7e, 0xfb, 0x7d, 0xfb, 0xac, 0xfb, 0xae, 0xfb, 0xe1, 0xfb, 0xe1, 0xfb, + 0x12, 0xfc, 0x13, 0xfc, 0x47, 0xfc, 0x48, 0xfc, 0x76, 0xfc, 0x78, 0xfc, + 0xa6, 0xfc, 0xa5, 0xfc, 0xd1, 0xfc, 0xd2, 0xfc, 0xf8, 0xfc, 0xf8, 0xfc, + 0x1b, 0xfd, 0x1c, 0xfd, 0x37, 0xfd, 0x37, 0xfd, 0x4e, 0xfd, 0x50, 0xfd, + 0x60, 0xfd, 0x5f, 0xfd, 0x68, 0xfd, 0x6b, 0xfd, 0x6f, 0xfd, 0x6f, 0xfd, + 0x6a, 0xfd, 0x6b, 0xfd, 0x63, 0xfd, 0x63, 0xfd, 0x52, 0xfd, 0x53, 0xfd, + 0x3c, 0xfd, 0x3d, 0xfd, 0x26, 0xfd, 0x27, 0xfd, 0x08, 0xfd, 0x09, 0xfd, + 0xe9, 0xfc, 0xe9, 0xfc, 0xc5, 0xfc, 0xc5, 0xfc, 0xa2, 0xfc, 0xa3, 0xfc, + 0x7e, 0xfc, 0x7f, 0xfc, 0x5b, 0xfc, 0x5c, 0xfc, 0x39, 0xfc, 0x38, 0xfc, + 0x1a, 0xfc, 0x1b, 0xfc, 0x00, 0xfc, 0xfe, 0xfb, 0xe8, 0xfb, 0xea, 0xfb, + 0xd7, 0xfb, 0xd7, 0xfb, 0xc9, 0xfb, 0xca, 0xfb, 0xc8, 0xfb, 0xc8, 0xfb, + 0xc9, 0xfb, 0xcb, 0xfb, 0xd4, 0xfb, 0xd3, 0xfb, 0xe6, 0xfb, 0xe8, 0xfb, + 0x01, 0xfc, 0x00, 0xfc, 0x25, 0xfc, 0x27, 0xfc, 0x50, 0xfc, 0x4f, 0xfc, + 0x82, 0xfc, 0x83, 0xfc, 0xbe, 0xfc, 0xbe, 0xfc, 0xfe, 0xfc, 0xff, 0xfc, + 0x47, 0xfd, 0x48, 0xfd, 0x93, 0xfd, 0x94, 0xfd, 0xe5, 0xfd, 0xe4, 0xfd, + 0x38, 0xfe, 0x3a, 0xfe, 0x91, 0xfe, 0x91, 0xfe, 0xe9, 0xfe, 0xe9, 0xfe, + 0x43, 0xff, 0x44, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0xf3, 0xff, 0xf5, 0xff, + 0x49, 0x00, 0x49, 0x00, 0x99, 0x00, 0x9c, 0x00, 0xe7, 0x00, 0xe7, 0x00, + 0x30, 0x01, 0x33, 0x01, 0x72, 0x01, 0x71, 0x01, 0xaf, 0x01, 0xb2, 0x01, + 0xe4, 0x01, 0xe3, 0x01, 0x11, 0x02, 0x12, 0x02, 0x39, 0x02, 0x39, 0x02, + 0x57, 0x02, 0x58, 0x02, 0x6f, 0x02, 0x6f, 0x02, 0x7f, 0x02, 0x81, 0x02, + 0x8b, 0x02, 0x8b, 0x02, 0x8f, 0x02, 0x8f, 0x02, 0x8c, 0x02, 0x8c, 0x02, + 0x85, 0x02, 0x87, 0x02, 0x7a, 0x02, 0x7a, 0x02, 0x6b, 0x02, 0x6d, 0x02, + 0x5d, 0x02, 0x5a, 0x02, 0x47, 0x02, 0x4b, 0x02, 0x39, 0x02, 0x35, 0x02, + 0x21, 0x02, 0x23, 0x02, 0x12, 0x02, 0x10, 0x02, 0x01, 0x02, 0x02, 0x02, + 0xf4, 0x01, 0xf4, 0x01, 0xec, 0x01, 0xed, 0x01, 0xe6, 0x01, 0xe8, 0x01, + 0xe9, 0x01, 0xe9, 0x01, 0xf1, 0x01, 0xf0, 0x01, 0xfb, 0x01, 0xfc, 0x01, + 0x0f, 0x02, 0x0e, 0x02, 0x27, 0x02, 0x27, 0x02, 0x46, 0x02, 0x49, 0x02, + 0x6b, 0x02, 0x6a, 0x02, 0x95, 0x02, 0x96, 0x02, 0xc7, 0x02, 0xc7, 0x02, + 0xfa, 0x02, 0xfa, 0x02, 0x35, 0x03, 0x36, 0x03, 0x71, 0x03, 0x71, 0x03, + 0xb0, 0x03, 0xb1, 0x03, 0xf2, 0x03, 0xf3, 0x03, 0x30, 0x04, 0x31, 0x04, + 0x74, 0x04, 0x75, 0x04, 0xb0, 0x04, 0xb2, 0x04, 0xef, 0x04, 0xef, 0x04, + 0x28, 0x05, 0x2b, 0x05, 0x5d, 0x05, 0x5d, 0x05, 0x8d, 0x05, 0x90, 0x05, + 0xb7, 0x05, 0xb7, 0x05, 0xd9, 0x05, 0xdb, 0x05, 0xf6, 0x05, 0xf7, 0x05, + 0x09, 0x06, 0x0a, 0x06, 0x14, 0x06, 0x15, 0x06, 0x17, 0x06, 0x18, 0x06, + 0x0f, 0x06, 0x11, 0x06, 0x00, 0x06, 0x01, 0x06, 0xe8, 0x05, 0xea, 0x05, + 0xc8, 0x05, 0xc8, 0x05, 0x9f, 0x05, 0xa1, 0x05, 0x71, 0x05, 0x72, 0x05, + 0x3a, 0x05, 0x3b, 0x05, 0xfe, 0x04, 0x00, 0x05, 0xbc, 0x04, 0xbd, 0x04, + 0x77, 0x04, 0x77, 0x04, 0x2d, 0x04, 0x2e, 0x04, 0xe3, 0x03, 0xe4, 0x03, + 0x97, 0x03, 0x97, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x03, 0x03, 0x02, 0x03, + 0xb7, 0x02, 0xba, 0x02, 0x74, 0x02, 0x73, 0x02, 0x31, 0x02, 0x33, 0x02, + 0xf3, 0x01, 0xf3, 0x01, 0xba, 0x01, 0xbc, 0x01, 0x88, 0x01, 0x88, 0x01, + 0x5d, 0x01, 0x5d, 0x01, 0x36, 0x01, 0x36, 0x01, 0x17, 0x01, 0x18, 0x01, + 0xfc, 0x00, 0xfd, 0x00, 0xed, 0x00, 0xed, 0x00, 0xde, 0x00, 0xdf, 0x00, + 0xdb, 0x00, 0xdc, 0x00, 0xd7, 0x00, 0xd9, 0x00, 0xdc, 0x00, 0xdd, 0x00, + 0xe2, 0x00, 0xe3, 0x00, 0xed, 0x00, 0xed, 0x00, 0xf7, 0x00, 0xfa, 0x00, + 0x09, 0x01, 0x08, 0x01, 0x16, 0x01, 0x17, 0x01, 0x23, 0x01, 0x23, 0x01, + 0x30, 0x01, 0x33, 0x01, 0x3b, 0x01, 0x3c, 0x01, 0x44, 0x01, 0x45, 0x01, + 0x45, 0x01, 0x46, 0x01, 0x44, 0x01, 0x45, 0x01, 0x3d, 0x01, 0x3d, 0x01, + 0x2f, 0x01, 0x31, 0x01, 0x1c, 0x01, 0x1b, 0x01, 0x02, 0x01, 0x04, 0x01, + 0xe0, 0x00, 0xe2, 0x00, 0xbd, 0x00, 0xbd, 0x00, 0x8c, 0x00, 0x8f, 0x00, + 0x58, 0x00, 0x57, 0x00, 0x1f, 0x00, 0x20, 0x00, 0xdd, 0xff, 0xdd, 0xff, + 0x9a, 0xff, 0x9a, 0xff, 0x50, 0xff, 0x50, 0xff, 0x02, 0xff, 0x02, 0xff, + 0xb5, 0xfe, 0xb4, 0xfe, 0x60, 0xfe, 0x62, 0xfe, 0x10, 0xfe, 0x0f, 0xfe, + 0xbd, 0xfd, 0xbe, 0xfd, 0x6a, 0xfd, 0x6b, 0xfd, 0x1d, 0xfd, 0x1d, 0xfd, + 0xcd, 0xfc, 0xcf, 0xfc, 0x88, 0xfc, 0x88, 0xfc, 0x42, 0xfc, 0x43, 0xfc, + 0x01, 0xfc, 0x05, 0xfc, 0xcd, 0xfb, 0xcb, 0xfb, 0x97, 0xfb, 0x9a, 0xfb, + 0x70, 0xfb, 0x70, 0xfb, 0x4a, 0xfb, 0x4d, 0xfb, 0x31, 0xfb, 0x30, 0xfb, + 0x1d, 0xfb, 0x1e, 0xfb, 0x10, 0xfb, 0x12, 0xfb, 0x0d, 0xfb, 0x0e, 0xfb, + 0x10, 0xfb, 0x11, 0xfb, 0x1b, 0xfb, 0x1b, 0xfb, 0x2b, 0xfb, 0x2c, 0xfb, + 0x43, 0xfb, 0x43, 0xfb, 0x5e, 0xfb, 0x5d, 0xfb, 0x7e, 0xfb, 0x80, 0xfb, + 0xa2, 0xfb, 0xa2, 0xfb, 0xc7, 0xfb, 0xc9, 0xfb, 0xef, 0xfb, 0xf1, 0xfb, + 0x16, 0xfc, 0x15, 0xfc, 0x40, 0xfc, 0x43, 0xfc, 0x67, 0xfc, 0x66, 0xfc, + 0x8c, 0xfc, 0x8c, 0xfc, 0xae, 0xfc, 0xaf, 0xfc, 0xcc, 0xfc, 0xcc, 0xfc, + 0xe9, 0xfc, 0xe8, 0xfc, 0xfa, 0xfc, 0xfc, 0xfc, 0x0e, 0xfd, 0x10, 0xfd, + 0x16, 0xfd, 0x17, 0xfd, 0x1f, 0xfd, 0x20, 0xfd, 0x1d, 0xfd, 0x1c, 0xfd, + 0x15, 0xfd, 0x17, 0xfd, 0x0c, 0xfd, 0x0d, 0xfd, 0xf9, 0xfc, 0xfa, 0xfc, + 0xe4, 0xfc, 0xe6, 0xfc, 0xcb, 0xfc, 0xca, 0xfc, 0xac, 0xfc, 0xac, 0xfc, + 0x8d, 0xfc, 0x8d, 0xfc, 0x67, 0xfc, 0x67, 0xfc, 0x46, 0xfc, 0x47, 0xfc, + 0x20, 0xfc, 0x20, 0xfc, 0xfd, 0xfb, 0xfe, 0xfb, 0xdb, 0xfb, 0xdc, 0xfb, + 0xbb, 0xfb, 0xbd, 0xfb, 0xa1, 0xfb, 0xa1, 0xfb, 0x88, 0xfb, 0x88, 0xfb, + 0x76, 0xfb, 0x76, 0xfb, 0x68, 0xfb, 0x69, 0xfb, 0x62, 0xfb, 0x64, 0xfb, + 0x61, 0xfb, 0x62, 0xfb, 0x6a, 0xfb, 0x6a, 0xfb, 0x7b, 0xfb, 0x7a, 0xfb, + 0x91, 0xfb, 0x92, 0xfb, 0xb0, 0xfb, 0xb0, 0xfb, 0xd5, 0xfb, 0xd6, 0xfb, + 0x03, 0xfc, 0x03, 0xfc, 0x37, 0xfc, 0x3b, 0xfc, 0x74, 0xfc, 0x73, 0xfc, + 0xb3, 0xfc, 0xb6, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, 0x45, 0xfd, 0x45, 0xfd, + 0x96, 0xfd, 0x97, 0xfd, 0xe7, 0xfd, 0xe7, 0xfd, 0x3b, 0xfe, 0x3b, 0xfe, + 0x8e, 0xfe, 0x91, 0xfe, 0xe3, 0xfe, 0xe4, 0xfe, 0x37, 0xff, 0x37, 0xff, + 0x88, 0xff, 0x89, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0x20, 0x00, 0x21, 0x00, + 0x67, 0x00, 0x67, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xe3, 0x00, 0xe6, 0x00, + 0x1c, 0x01, 0x1a, 0x01, 0x48, 0x01, 0x4b, 0x01, 0x74, 0x01, 0x74, 0x01, + 0x94, 0x01, 0x97, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0xc8, 0x01, 0xca, 0x01, + 0xd6, 0x01, 0xd8, 0x01, 0xe3, 0x01, 0xe3, 0x01, 0xe6, 0x01, 0xe8, 0x01, + 0xe7, 0x01, 0xe5, 0x01, 0xe3, 0x01, 0xe5, 0x01, 0xdb, 0x01, 0xdb, 0x01, + 0xd4, 0x01, 0xd4, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0xbd, 0x01, 0xbb, 0x01, + 0xb2, 0x01, 0xb4, 0x01, 0xa8, 0x01, 0xa7, 0x01, 0xa0, 0x01, 0xa2, 0x01, + 0x9b, 0x01, 0x9a, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9d, 0x01, 0x9c, 0x01, + 0xa0, 0x01, 0xa1, 0x01, 0xae, 0x01, 0xae, 0x01, 0xbd, 0x01, 0xbe, 0x01, + 0xd6, 0x01, 0xd6, 0x01, 0xf0, 0x01, 0xf2, 0x01, 0x12, 0x02, 0x11, 0x02, + 0x3a, 0x02, 0x3c, 0x02, 0x66, 0x02, 0x66, 0x02, 0x96, 0x02, 0x97, 0x02, + 0xcd, 0x02, 0xcc, 0x02, 0x06, 0x03, 0x07, 0x03, 0x42, 0x03, 0x43, 0x03, + 0x81, 0x03, 0x81, 0x03, 0xc1, 0x03, 0xc0, 0x03, 0x01, 0x04, 0x02, 0x04, + 0x43, 0x04, 0x42, 0x04, 0x80, 0x04, 0x82, 0x04, 0xbd, 0x04, 0xbd, 0x04, + 0xf6, 0x04, 0xf7, 0x04, 0x2d, 0x05, 0x2e, 0x05, 0x5f, 0x05, 0x5f, 0x05, + 0x8c, 0x05, 0x8a, 0x05, 0xb0, 0x05, 0xb0, 0x05, 0xd0, 0x05, 0xd0, 0x05, + 0xe6, 0x05, 0xe6, 0x05, 0xf6, 0x05, 0xf6, 0x05, 0xfd, 0x05, 0xfe, 0x05, + 0xfc, 0x05, 0xfc, 0x05, 0xf5, 0x05, 0xf5, 0x05, 0xe2, 0x05, 0xe4, 0x05, + 0xcc, 0x05, 0xcc, 0x05, 0xa9, 0x05, 0xac, 0x05, 0x85, 0x05, 0x83, 0x05, + 0x57, 0x05, 0x58, 0x05, 0x24, 0x05, 0x23, 0x05, 0xed, 0x04, 0xed, 0x04, + 0xb0, 0x04, 0xb2, 0x04, 0x72, 0x04, 0x72, 0x04, 0x31, 0x04, 0x32, 0x04, + 0xee, 0x03, 0xee, 0x03, 0xad, 0x03, 0xad, 0x03, 0x69, 0x03, 0x6b, 0x03, + 0x2a, 0x03, 0x2a, 0x03, 0xeb, 0x02, 0xeb, 0x02, 0xaf, 0x02, 0xb0, 0x02, + 0x79, 0x02, 0x7a, 0x02, 0x47, 0x02, 0x47, 0x02, 0x18, 0x02, 0x1b, 0x02, + 0xf1, 0x01, 0xf1, 0x01, 0xcd, 0x01, 0xcd, 0x01, 0xb1, 0x01, 0xb2, 0x01, + 0x97, 0x01, 0x97, 0x01, 0x88, 0x01, 0x88, 0x01, 0x7b, 0x01, 0x7b, 0x01, + 0x73, 0x01, 0x73, 0x01, 0x70, 0x01, 0x6f, 0x01, 0x72, 0x01, 0x72, 0x01, + 0x79, 0x01, 0x78, 0x01, 0x80, 0x01, 0x80, 0x01, 0x8a, 0x01, 0x89, 0x01, + 0x94, 0x01, 0x94, 0x01, 0x9e, 0x01, 0x9e, 0x01, 0xab, 0x01, 0xab, 0x01, + 0xb5, 0x01, 0xb4, 0x01, 0xbd, 0x01, 0xbd, 0x01, 0xc1, 0x01, 0xc2, 0x01, + 0xc4, 0x01, 0xc2, 0x01, 0xc0, 0x01, 0xc1, 0x01, 0xb8, 0x01, 0xb7, 0x01, + 0xab, 0x01, 0xab, 0x01, 0x96, 0x01, 0x97, 0x01, 0x7e, 0x01, 0x7d, 0x01, + 0x5d, 0x01, 0x5f, 0x01, 0x36, 0x01, 0x35, 0x01, 0x0b, 0x01, 0x0c, 0x01, + 0xd7, 0x00, 0xd8, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0x64, 0x00, 0x64, 0x00, + 0x21, 0x00, 0x22, 0x00, 0xdc, 0xff, 0xdc, 0xff, 0x91, 0xff, 0x92, 0xff, + 0x47, 0xff, 0x46, 0xff, 0xf7, 0xfe, 0xf8, 0xfe, 0xa9, 0xfe, 0xa9, 0xfe, + 0x5b, 0xfe, 0x5a, 0xfe, 0x0a, 0xfe, 0x0b, 0xfe, 0xc0, 0xfd, 0xbd, 0xfd, + 0x73, 0xfd, 0x74, 0xfd, 0x2d, 0xfd, 0x2b, 0xfd, 0xe8, 0xfc, 0xe7, 0xfc, + 0xa8, 0xfc, 0xaa, 0xfc, 0x71, 0xfc, 0x6e, 0xfc, 0x3b, 0xfc, 0x3d, 0xfc, + 0x0e, 0xfc, 0x0d, 0xfc, 0xe7, 0xfb, 0xe6, 0xfb, 0xc6, 0xfb, 0xc8, 0xfb, + 0xb0, 0xfb, 0xae, 0xfb, 0x99, 0xfb, 0x9c, 0xfb, 0x95, 0xfb, 0x93, 0xfb, + 0x8c, 0xfb, 0x8e, 0xfb, 0x90, 0xfb, 0x90, 0xfb, 0x99, 0xfb, 0x97, 0xfb, + 0xa4, 0xfb, 0xa5, 0xfb, 0xba, 0xfb, 0xb9, 0xfb, 0xcb, 0xfb, 0xcb, 0xfb, + 0xe9, 0xfb, 0xe9, 0xfb, 0x02, 0xfc, 0x03, 0xfc, 0x21, 0xfc, 0x20, 0xfc, + 0x41, 0xfc, 0x3f, 0xfc, 0x5d, 0xfc, 0x5e, 0xfc, 0x7d, 0xfc, 0x7b, 0xfc, + 0x98, 0xfc, 0x98, 0xfc, 0xb2, 0xfc, 0xb2, 0xfc, 0xc9, 0xfc, 0xc9, 0xfc, + 0xdb, 0xfc, 0xdb, 0xfc, 0xe8, 0xfc, 0xe8, 0xfc, 0xf4, 0xfc, 0xf5, 0xfc, + 0xfa, 0xfc, 0xf9, 0xfc, 0xfa, 0xfc, 0xfb, 0xfc, 0xf6, 0xfc, 0xf5, 0xfc, + 0xed, 0xfc, 0xee, 0xfc, 0xdd, 0xfc, 0xdf, 0xfc, 0xca, 0xfc, 0xcb, 0xfc, + 0xb3, 0xfc, 0xb5, 0xfc, 0x98, 0xfc, 0x98, 0xfc, 0x79, 0xfc, 0x7c, 0xfc, + 0x59, 0xfc, 0x59, 0xfc, 0x39, 0xfc, 0x3a, 0xfc, 0x13, 0xfc, 0x13, 0xfc, + 0xf0, 0xfb, 0xf1, 0xfb, 0xcd, 0xfb, 0xce, 0xfb, 0xab, 0xfb, 0xab, 0xfb, + 0x8d, 0xfb, 0x8e, 0xfb, 0x6e, 0xfb, 0x71, 0xfb, 0x59, 0xfb, 0x5a, 0xfb, + 0x45, 0xfb, 0x47, 0xfb, 0x38, 0xfb, 0x38, 0xfb, 0x31, 0xfb, 0x31, 0xfb, + 0x2f, 0xfb, 0x30, 0xfb, 0x34, 0xfb, 0x35, 0xfb, 0x42, 0xfb, 0x44, 0xfb, + 0x53, 0xfb, 0x55, 0xfb, 0x71, 0xfb, 0x72, 0xfb, 0x93, 0xfb, 0x94, 0xfb, + 0xbb, 0xfb, 0xbb, 0xfb, 0xed, 0xfb, 0xed, 0xfb, 0x21, 0xfc, 0x23, 0xfc, + 0x5e, 0xfc, 0x60, 0xfc, 0xa0, 0xfc, 0x9f, 0xfc, 0xe2, 0xfc, 0xe7, 0xfc, + 0x2f, 0xfd, 0x2d, 0xfd, 0x77, 0xfd, 0x79, 0xfd, 0xc5, 0xfd, 0xc6, 0xfd, + 0x15, 0xfe, 0x15, 0xfe, 0x62, 0xfe, 0x64, 0xfe, 0xaf, 0xfe, 0xae, 0xfe, + 0xfc, 0xfe, 0xfe, 0xfe, 0x45, 0xff, 0x44, 0xff, 0x8b, 0xff, 0x8c, 0xff, + 0xce, 0xff, 0xce, 0xff, 0x0b, 0x00, 0x0d, 0x00, 0x45, 0x00, 0x46, 0x00, + 0x77, 0x00, 0x79, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xcc, 0x00, 0xcf, 0x00, + 0xf2, 0x00, 0xf2, 0x00, 0x0e, 0x01, 0x0f, 0x01, 0x20, 0x01, 0x22, 0x01, + 0x37, 0x01, 0x38, 0x01, 0x3e, 0x01, 0x3f, 0x01, 0x49, 0x01, 0x49, 0x01, + 0x4c, 0x01, 0x4c, 0x01, 0x4b, 0x01, 0x4d, 0x01, 0x4b, 0x01, 0x4a, 0x01, + 0x43, 0x01, 0x43, 0x01, 0x3c, 0x01, 0x3e, 0x01, 0x37, 0x01, 0x35, 0x01, + 0x2d, 0x01, 0x31, 0x01, 0x2c, 0x01, 0x2a, 0x01, 0x24, 0x01, 0x26, 0x01, + 0x27, 0x01, 0x25, 0x01, 0x28, 0x01, 0x27, 0x01, 0x2d, 0x01, 0x2e, 0x01, + 0x38, 0x01, 0x38, 0x01, 0x43, 0x01, 0x45, 0x01, 0x5a, 0x01, 0x58, 0x01, + 0x6f, 0x01, 0x71, 0x01, 0x90, 0x01, 0x8f, 0x01, 0xb1, 0x01, 0xb1, 0x01, + 0xda, 0x01, 0xda, 0x01, 0x07, 0x02, 0x07, 0x02, 0x39, 0x02, 0x38, 0x02, + 0x6c, 0x02, 0x6e, 0x02, 0xa7, 0x02, 0xa6, 0x02, 0xdf, 0x02, 0xe2, 0x02, + 0x20, 0x03, 0x20, 0x03, 0x60, 0x03, 0x60, 0x03, 0x9f, 0x03, 0x9e, 0x03, + 0xe2, 0x03, 0xe4, 0x03, 0x20, 0x04, 0x20, 0x04, 0x5f, 0x04, 0x5f, 0x04, + 0x97, 0x04, 0x99, 0x04, 0xd0, 0x04, 0xcf, 0x04, 0x05, 0x05, 0x05, 0x05, + 0x30, 0x05, 0x31, 0x05, 0x5a, 0x05, 0x5b, 0x05, 0x7d, 0x05, 0x7d, 0x05, + 0x99, 0x05, 0x9a, 0x05, 0xb1, 0x05, 0xae, 0x05, 0xbc, 0x05, 0xbf, 0x05, + 0xc5, 0x05, 0xc3, 0x05, 0xc2, 0x05, 0xc3, 0x05, 0xba, 0x05, 0xbb, 0x05, + 0xad, 0x05, 0xac, 0x05, 0x94, 0x05, 0x96, 0x05, 0x7a, 0x05, 0x78, 0x05, + 0x56, 0x05, 0x56, 0x05, 0x2e, 0x05, 0x2f, 0x05, 0x00, 0x05, 0x02, 0x05, + 0xd1, 0x04, 0xd1, 0x04, 0x9b, 0x04, 0x9b, 0x04, 0x67, 0x04, 0x66, 0x04, + 0x2c, 0x04, 0x2d, 0x04, 0xf6, 0x03, 0xf7, 0x03, 0xbc, 0x03, 0xbc, 0x03, + 0x84, 0x03, 0x86, 0x03, 0x4f, 0x03, 0x4e, 0x03, 0x1c, 0x03, 0x1d, 0x03, + 0xec, 0x02, 0xeb, 0x02, 0xc0, 0x02, 0xc0, 0x02, 0x96, 0x02, 0x97, 0x02, + 0x73, 0x02, 0x74, 0x02, 0x51, 0x02, 0x51, 0x02, 0x38, 0x02, 0x39, 0x02, + 0x24, 0x02, 0x23, 0x02, 0x10, 0x02, 0x11, 0x02, 0x08, 0x02, 0x09, 0x02, + 0xfd, 0x01, 0xfe, 0x01, 0xfc, 0x01, 0xfb, 0x01, 0xfb, 0x01, 0xfd, 0x01, + 0xfe, 0x01, 0xfd, 0x01, 0x05, 0x02, 0x06, 0x02, 0x0b, 0x02, 0x0a, 0x02, + 0x15, 0x02, 0x14, 0x02, 0x1c, 0x02, 0x1e, 0x02, 0x25, 0x02, 0x24, 0x02, + 0x2d, 0x02, 0x2f, 0x02, 0x31, 0x02, 0x30, 0x02, 0x35, 0x02, 0x36, 0x02, + 0x34, 0x02, 0x34, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x26, 0x02, 0x26, 0x02, + 0x16, 0x02, 0x16, 0x02, 0x01, 0x02, 0x03, 0x02, 0xe9, 0x01, 0xe9, 0x01, + 0xc8, 0x01, 0xc9, 0x01, 0xa5, 0x01, 0xa5, 0x01, 0x78, 0x01, 0x78, 0x01, + 0x48, 0x01, 0x48, 0x01, 0x11, 0x01, 0x10, 0x01, 0xd5, 0x00, 0xd6, 0x00, + 0x97, 0x00, 0x96, 0x00, 0x51, 0x00, 0x52, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0xc0, 0xff, 0xc1, 0xff, 0x77, 0xff, 0x78, 0xff, 0x29, 0xff, 0x28, 0xff, + 0xdd, 0xfe, 0xdf, 0xfe, 0x92, 0xfe, 0x91, 0xfe, 0x46, 0xfe, 0x47, 0xfe, + 0x00, 0xfe, 0x01, 0xfe, 0xb8, 0xfd, 0xb8, 0xfd, 0x78, 0xfd, 0x78, 0xfd, + 0x38, 0xfd, 0x38, 0xfd, 0x00, 0xfd, 0xfe, 0xfc, 0xcb, 0xfc, 0xcc, 0xfc, + 0x9d, 0xfc, 0x9c, 0xfc, 0x75, 0xfc, 0x75, 0xfc, 0x54, 0xfc, 0x55, 0xfc, + 0x39, 0xfc, 0x38, 0xfc, 0x24, 0xfc, 0x24, 0xfc, 0x17, 0xfc, 0x17, 0xfc, + 0x0d, 0xfc, 0x0c, 0xfc, 0x0a, 0xfc, 0x0c, 0xfc, 0x0d, 0xfc, 0x0c, 0xfc, + 0x13, 0xfc, 0x14, 0xfc, 0x21, 0xfc, 0x22, 0xfc, 0x2f, 0xfc, 0x2d, 0xfc, + 0x42, 0xfc, 0x45, 0xfc, 0x57, 0xfc, 0x55, 0xfc, 0x6c, 0xfc, 0x6e, 0xfc, + 0x85, 0xfc, 0x85, 0xfc, 0x99, 0xfc, 0x99, 0xfc, 0xb1, 0xfc, 0xb2, 0xfc, + 0xc6, 0xfc, 0xc4, 0xfc, 0xd9, 0xfc, 0xd8, 0xfc, 0xe8, 0xfc, 0xe8, 0xfc, + 0xf4, 0xfc, 0xf5, 0xfc, 0xfe, 0xfc, 0xfe, 0xfc, 0x00, 0xfd, 0x00, 0xfd, + 0x00, 0xfd, 0x01, 0xfd, 0xfb, 0xfc, 0xfb, 0xfc, 0xf0, 0xfc, 0xf1, 0xfc, + 0xe4, 0xfc, 0xe5, 0xfc, 0xd0, 0xfc, 0xcf, 0xfc, 0xba, 0xfc, 0xba, 0xfc, + 0x9b, 0xfc, 0x9d, 0xfc, 0x80, 0xfc, 0x7f, 0xfc, 0x5e, 0xfc, 0x5e, 0xfc, + 0x39, 0xfc, 0x3a, 0xfc, 0x15, 0xfc, 0x16, 0xfc, 0xee, 0xfb, 0xee, 0xfb, + 0xc9, 0xfb, 0xca, 0xfb, 0xa2, 0xfb, 0xa1, 0xfb, 0x7d, 0xfb, 0x7f, 0xfb, + 0x5d, 0xfb, 0x5c, 0xfb, 0x3e, 0xfb, 0x3e, 0xfb, 0x23, 0xfb, 0x24, 0xfb, + 0x0f, 0xfb, 0x0e, 0xfb, 0xfb, 0xfa, 0xfc, 0xfa, 0xf2, 0xfa, 0xf2, 0xfa, + 0xec, 0xfa, 0xec, 0xfa, 0xee, 0xfa, 0xec, 0xfa, 0xf4, 0xfa, 0xf4, 0xfa, + 0x03, 0xfb, 0x04, 0xfb, 0x1a, 0xfb, 0x1a, 0xfb, 0x36, 0xfb, 0x36, 0xfb, + 0x5a, 0xfb, 0x5a, 0xfb, 0x84, 0xfb, 0x84, 0xfb, 0xb4, 0xfb, 0xb5, 0xfb, + 0xec, 0xfb, 0xec, 0xfb, 0x26, 0xfc, 0x27, 0xfc, 0x66, 0xfc, 0x67, 0xfc, + 0xa9, 0xfc, 0xa9, 0xfc, 0xf0, 0xfc, 0xf0, 0xfc, 0x37, 0xfd, 0x39, 0xfd, + 0x82, 0xfd, 0x81, 0xfd, 0xcc, 0xfd, 0xce, 0xfd, 0x14, 0xfe, 0x14, 0xfe, + 0x5e, 0xfe, 0x5e, 0xfe, 0xa4, 0xfe, 0xa6, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, + 0x29, 0xff, 0x2a, 0xff, 0x65, 0xff, 0x66, 0xff, 0x9f, 0xff, 0x9e, 0xff, + 0xd3, 0xff, 0xd5, 0xff, 0x02, 0x00, 0x01, 0x00, 0x2c, 0x00, 0x2d, 0x00, + 0x4e, 0x00, 0x4e, 0x00, 0x6d, 0x00, 0x6f, 0x00, 0x89, 0x00, 0x89, 0x00, + 0x9a, 0x00, 0x9c, 0x00, 0xac, 0x00, 0xad, 0x00, 0xb6, 0x00, 0xb6, 0x00, + 0xbf, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xc5, 0x00, 0xc5, 0x00, + 0xc4, 0x00, 0xc5, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc1, 0x00, 0xc1, 0x00, + 0xbd, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xbe, 0x00, 0xbc, 0x00, 0xbe, 0x00, + 0xc2, 0x00, 0xc1, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xcf, 0x00, 0xcf, 0x00, + 0xdd, 0x00, 0xde, 0x00, 0xef, 0x00, 0xef, 0x00, 0x04, 0x01, 0x04, 0x01, + 0x1f, 0x01, 0x21, 0x01, 0x3f, 0x01, 0x3e, 0x01, 0x62, 0x01, 0x62, 0x01, + 0x8c, 0x01, 0x8c, 0x01, 0xb9, 0x01, 0xb9, 0x01, 0xeb, 0x01, 0xeb, 0x01, + 0x21, 0x02, 0x21, 0x02, 0x59, 0x02, 0x5a, 0x02, 0x95, 0x02, 0x94, 0x02, + 0xd4, 0x02, 0xd4, 0x02, 0x10, 0x03, 0x10, 0x03, 0x54, 0x03, 0x54, 0x03, + 0x92, 0x03, 0x93, 0x03, 0xd2, 0x03, 0xd2, 0x03, 0x10, 0x04, 0x0f, 0x04, + 0x4a, 0x04, 0x4b, 0x04, 0x84, 0x04, 0x84, 0x04, 0xb6, 0x04, 0xb7, 0x04, + 0xe7, 0x04, 0xe5, 0x04, 0x0f, 0x05, 0x11, 0x05, 0x36, 0x05, 0x35, 0x05, + 0x53, 0x05, 0x54, 0x05, 0x6c, 0x05, 0x6d, 0x05, 0x7e, 0x05, 0x7d, 0x05, + 0x86, 0x05, 0x88, 0x05, 0x8e, 0x05, 0x8d, 0x05, 0x87, 0x05, 0x87, 0x05, + 0x80, 0x05, 0x80, 0x05, 0x6f, 0x05, 0x6e, 0x05, 0x59, 0x05, 0x5a, 0x05, + 0x3e, 0x05, 0x3d, 0x05, 0x1b, 0x05, 0x1d, 0x05, 0xfb, 0x04, 0xfa, 0x04, + 0xcf, 0x04, 0xce, 0x04, 0xa3, 0x04, 0xa5, 0x04, 0x75, 0x04, 0x75, 0x04, + 0x48, 0x04, 0x48, 0x04, 0x16, 0x04, 0x18, 0x04, 0xe7, 0x03, 0xe4, 0x03, + 0xb7, 0x03, 0xba, 0x03, 0x8a, 0x03, 0x8a, 0x03, 0x61, 0x03, 0x5f, 0x03, + 0x37, 0x03, 0x38, 0x03, 0x13, 0x03, 0x13, 0x03, 0xf3, 0x02, 0xf3, 0x02, + 0xd4, 0x02, 0xd5, 0x02, 0xc0, 0x02, 0xc0, 0x02, 0xa9, 0x02, 0xa9, 0x02, + 0x9c, 0x02, 0x9c, 0x02, 0x90, 0x02, 0x91, 0x02, 0x8a, 0x02, 0x89, 0x02, + 0x88, 0x02, 0x8a, 0x02, 0x88, 0x02, 0x88, 0x02, 0x8d, 0x02, 0x8e, 0x02, + 0x95, 0x02, 0x95, 0x02, 0x9c, 0x02, 0x9d, 0x02, 0xa9, 0x02, 0xa7, 0x02, + 0xb1, 0x02, 0xb3, 0x02, 0xbe, 0x02, 0xbc, 0x02, 0xc7, 0x02, 0xc9, 0x02, + 0xd0, 0x02, 0xcf, 0x02, 0xd8, 0x02, 0xd8, 0x02, 0xd7, 0x02, 0xd8, 0x02, + 0xdb, 0x02, 0xdb, 0x02, 0xd4, 0x02, 0xd4, 0x02, 0xcb, 0x02, 0xcb, 0x02, + 0xbd, 0x02, 0xbc, 0x02, 0xa7, 0x02, 0xa8, 0x02, 0x8f, 0x02, 0x8f, 0x02, + 0x6c, 0x02, 0x6e, 0x02, 0x47, 0x02, 0x47, 0x02, 0x1c, 0x02, 0x1d, 0x02, + 0xe9, 0x01, 0xe9, 0x01, 0xb3, 0x01, 0xb5, 0x01, 0x79, 0x01, 0x77, 0x01, + 0x34, 0x01, 0x37, 0x01, 0xf4, 0x00, 0xf3, 0x00, 0xa9, 0x00, 0xab, 0x00, + 0x60, 0x00, 0x61, 0x00, 0x13, 0x00, 0x14, 0x00, 0xc5, 0xff, 0xc7, 0xff, + 0x7b, 0xff, 0x78, 0xff, 0x29, 0xff, 0x2c, 0xff, 0xde, 0xfe, 0xdd, 0xfe, + 0x92, 0xfe, 0x95, 0xfe, 0x4b, 0xfe, 0x4a, 0xfe, 0x07, 0xfe, 0x07, 0xfe, + 0xc6, 0xfd, 0xc7, 0xfd, 0x8b, 0xfd, 0x8c, 0xfd, 0x54, 0xfd, 0x54, 0xfd, + 0x22, 0xfd, 0x24, 0xfd, 0xf8, 0xfc, 0xf8, 0xfc, 0xd1, 0xfc, 0xd3, 0xfc, + 0xb4, 0xfc, 0xb4, 0xfc, 0x99, 0xfc, 0x9b, 0xfc, 0x8a, 0xfc, 0x89, 0xfc, + 0x79, 0xfc, 0x7d, 0xfc, 0x76, 0xfc, 0x75, 0xfc, 0x73, 0xfc, 0x73, 0xfc, + 0x74, 0xfc, 0x77, 0xfc, 0x7d, 0xfc, 0x7b, 0xfc, 0x84, 0xfc, 0x86, 0xfc, + 0x93, 0xfc, 0x92, 0xfc, 0x9f, 0xfc, 0xa0, 0xfc, 0xb3, 0xfc, 0xb3, 0xfc, + 0xc2, 0xfc, 0xc3, 0xfc, 0xd5, 0xfc, 0xd4, 0xfc, 0xe6, 0xfc, 0xe6, 0xfc, + 0xf3, 0xfc, 0xf4, 0xfc, 0x02, 0xfd, 0x01, 0xfd, 0x0b, 0xfd, 0x0e, 0xfd, + 0x13, 0xfd, 0x13, 0xfd, 0x17, 0xfd, 0x19, 0xfd, 0x17, 0xfd, 0x16, 0xfd, + 0x12, 0xfd, 0x12, 0xfd, 0x09, 0xfd, 0x0b, 0xfd, 0xfe, 0xfc, 0xfc, 0xfc, + 0xe9, 0xfc, 0xec, 0xfc, 0xd7, 0xfc, 0xd5, 0xfc, 0xba, 0xfc, 0xbb, 0xfc, + 0x9d, 0xfc, 0x9d, 0xfc, 0x7b, 0xfc, 0x7c, 0xfc, 0x58, 0xfc, 0x58, 0xfc, + 0x32, 0xfc, 0x33, 0xfc, 0x09, 0xfc, 0x0a, 0xfc, 0xe4, 0xfb, 0xe3, 0xfb, + 0xba, 0xfb, 0xbc, 0xfb, 0x94, 0xfb, 0x92, 0xfb, 0x6b, 0xfb, 0x6e, 0xfb, + 0x4a, 0xfb, 0x49, 0xfb, 0x29, 0xfb, 0x27, 0xfb, 0x0b, 0xfb, 0x0a, 0xfb, + 0xf1, 0xfa, 0xf2, 0xfa, 0xdc, 0xfa, 0xdd, 0xfa, 0xcf, 0xfa, 0xcf, 0xfa, + 0xc4, 0xfa, 0xc4, 0xfa, 0xc3, 0xfa, 0xc1, 0xfa, 0xc5, 0xfa, 0xc7, 0xfa, + 0xd0, 0xfa, 0xce, 0xfa, 0xe2, 0xfa, 0xe2, 0xfa, 0xf7, 0xfa, 0xf7, 0xfa, + 0x16, 0xfb, 0x16, 0xfb, 0x3a, 0xfb, 0x3a, 0xfb, 0x64, 0xfb, 0x64, 0xfb, + 0x94, 0xfb, 0x94, 0xfb, 0xc7, 0xfb, 0xc7, 0xfb, 0xfe, 0xfb, 0x01, 0xfc, + 0x3c, 0xfc, 0x3b, 0xfc, 0x7b, 0xfc, 0x7c, 0xfc, 0xbb, 0xfc, 0xbd, 0xfc, + 0xfe, 0xfc, 0xfd, 0xfc, 0x40, 0xfd, 0x41, 0xfd, 0x82, 0xfd, 0x82, 0xfd, + 0xc4, 0xfd, 0xc4, 0xfd, 0x04, 0xfe, 0x05, 0xfe, 0x41, 0xfe, 0x42, 0xfe, + 0x7f, 0xfe, 0x7d, 0xfe, 0xb3, 0xfe, 0xb5, 0xfe, 0xe8, 0xfe, 0xe7, 0xfe, + 0x16, 0xff, 0x16, 0xff, 0x41, 0xff, 0x42, 0xff, 0x67, 0xff, 0x66, 0xff, + 0x88, 0xff, 0x89, 0xff, 0xa5, 0xff, 0xa6, 0xff, 0xbc, 0xff, 0xbd, 0xff, + 0xd1, 0xff, 0xd0, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x15, 0x00, 0x12, 0x00, + 0x19, 0x00, 0x1b, 0x00, 0x27, 0x00, 0x26, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x49, 0x00, 0x48, 0x00, 0x60, 0x00, 0x61, 0x00, 0x7c, 0x00, 0x7b, 0x00, + 0x9c, 0x00, 0x9e, 0x00, 0xc2, 0x00, 0xc0, 0x00, 0xea, 0x00, 0xeb, 0x00, + 0x19, 0x01, 0x18, 0x01, 0x4c, 0x01, 0x4b, 0x01, 0x82, 0x01, 0x82, 0x01, + 0xbe, 0x01, 0xbd, 0x01, 0xf8, 0x01, 0xf9, 0x01, 0x39, 0x02, 0x38, 0x02, + 0x7c, 0x02, 0x7d, 0x02, 0xbe, 0x02, 0xbd, 0x02, 0x02, 0x03, 0x02, 0x03, + 0x45, 0x03, 0x45, 0x03, 0x86, 0x03, 0x87, 0x03, 0xc7, 0x03, 0xc7, 0x03, + 0x04, 0x04, 0x04, 0x04, 0x3f, 0x04, 0x40, 0x04, 0x77, 0x04, 0x75, 0x04, + 0xa7, 0x04, 0xa8, 0x04, 0xd4, 0x04, 0xd4, 0x04, 0xfc, 0x04, 0xfd, 0x04, + 0x1c, 0x05, 0x1d, 0x05, 0x38, 0x05, 0x38, 0x05, 0x4b, 0x05, 0x4c, 0x05, + 0x59, 0x05, 0x59, 0x05, 0x60, 0x05, 0x60, 0x05, 0x5f, 0x05, 0x5f, 0x05, + 0x5a, 0x05, 0x5c, 0x05, 0x4d, 0x05, 0x4d, 0x05, 0x3a, 0x05, 0x3d, 0x05, + 0x25, 0x05, 0x24, 0x05, 0x07, 0x05, 0x09, 0x05, 0xe7, 0x04, 0xe7, 0x04, + 0xc5, 0x04, 0xc4, 0x04, 0x9c, 0x04, 0x9d, 0x04, 0x74, 0x04, 0x73, 0x04, + 0x4a, 0x04, 0x49, 0x04, 0x1e, 0x04, 0x1e, 0x04, 0xf5, 0x03, 0xf5, 0x03, + 0xc9, 0x03, 0xca, 0x03, 0xa4, 0x03, 0xa4, 0x03, 0x7c, 0x03, 0x7d, 0x03, + 0x59, 0x03, 0x5c, 0x03, 0x3b, 0x03, 0x39, 0x03, 0x1d, 0x03, 0x20, 0x03, + 0x0a, 0x03, 0x06, 0x03, 0xf1, 0x02, 0xf3, 0x02, 0xe5, 0x02, 0xe5, 0x02, + 0xd9, 0x02, 0xd9, 0x02, 0xd2, 0x02, 0xd2, 0x02, 0xd2, 0x02, 0xd1, 0x02, + 0xd1, 0x02, 0xd2, 0x02, 0xd7, 0x02, 0xd5, 0x02, 0xdd, 0x02, 0xde, 0x02, + 0xe9, 0x02, 0xe9, 0x02, 0xf5, 0x02, 0xf5, 0x02, 0x03, 0x03, 0x01, 0x03, + 0x0f, 0x03, 0x10, 0x03, 0x20, 0x03, 0x1f, 0x03, 0x2d, 0x03, 0x2c, 0x03, + 0x38, 0x03, 0x37, 0x03, 0x41, 0x03, 0x40, 0x03, 0x46, 0x03, 0x48, 0x03, + 0x4b, 0x03, 0x4a, 0x03, 0x48, 0x03, 0x48, 0x03, 0x44, 0x03, 0x44, 0x03, + 0x38, 0x03, 0x38, 0x03, 0x27, 0x03, 0x27, 0x03, 0x13, 0x03, 0x13, 0x03, + 0xf4, 0x02, 0xf6, 0x02, 0xd6, 0x02, 0xd5, 0x02, 0xae, 0x02, 0xae, 0x02, + 0x81, 0x02, 0x82, 0x02, 0x4e, 0x02, 0x4e, 0x02, 0x17, 0x02, 0x19, 0x02, + 0xdb, 0x01, 0xd9, 0x01, 0x9a, 0x01, 0x9a, 0x01, 0x56, 0x01, 0x57, 0x01, + 0x0f, 0x01, 0x0e, 0x01, 0xc7, 0x00, 0xc8, 0x00, 0x7d, 0x00, 0x7b, 0x00, + 0x30, 0x00, 0x31, 0x00, 0xe5, 0xff, 0xe5, 0xff, 0x9c, 0xff, 0x9b, 0xff, + 0x4e, 0xff, 0x50, 0xff, 0x0d, 0xff, 0x0c, 0xff, 0xc5, 0xfe, 0xc7, 0xfe, + 0x88, 0xfe, 0x86, 0xfe, 0x4b, 0xfe, 0x4d, 0xfe, 0x13, 0xfe, 0x12, 0xfe, + 0xe1, 0xfd, 0xe3, 0xfd, 0xb3, 0xfd, 0xb3, 0xfd, 0x8c, 0xfd, 0x8c, 0xfd, + 0x69, 0xfd, 0x6a, 0xfd, 0x4c, 0xfd, 0x4b, 0xfd, 0x33, 0xfd, 0x34, 0xfd, + 0x22, 0xfd, 0x21, 0xfd, 0x14, 0xfd, 0x16, 0xfd, 0x0b, 0xfd, 0x0a, 0xfd, + 0x08, 0xfd, 0x09, 0xfd, 0x07, 0xfd, 0x07, 0xfd, 0x08, 0xfd, 0x09, 0xfd, + 0x10, 0xfd, 0x0f, 0xfd, 0x17, 0xfd, 0x16, 0xfd, 0x1f, 0xfd, 0x20, 0xfd, + 0x2b, 0xfd, 0x28, 0xfd, 0x33, 0xfd, 0x33, 0xfd, 0x3a, 0xfd, 0x3b, 0xfd, + 0x43, 0xfd, 0x42, 0xfd, 0x46, 0xfd, 0x47, 0xfd, 0x4b, 0xfd, 0x49, 0xfd, + 0x4a, 0xfd, 0x4a, 0xfd, 0x45, 0xfd, 0x46, 0xfd, 0x3f, 0xfd, 0x3f, 0xfd, + 0x35, 0xfd, 0x34, 0xfd, 0x25, 0xfd, 0x27, 0xfd, 0x12, 0xfd, 0x10, 0xfd, + 0xfa, 0xfc, 0xfd, 0xfc, 0xe0, 0xfc, 0xdf, 0xfc, 0xc2, 0xfc, 0xc3, 0xfc, + 0xa0, 0xfc, 0xa0, 0xfc, 0x7d, 0xfc, 0x7d, 0xfc, 0x54, 0xfc, 0x54, 0xfc, + 0x2e, 0xfc, 0x2f, 0xfc, 0x01, 0xfc, 0x02, 0xfc, 0xda, 0xfb, 0xda, 0xfb, + 0xaf, 0xfb, 0xae, 0xfb, 0x86, 0xfb, 0x87, 0xfb, 0x60, 0xfb, 0x5f, 0xfb, + 0x38, 0xfb, 0x3a, 0xfb, 0x1b, 0xfb, 0x18, 0xfb, 0xf8, 0xfa, 0xf9, 0xfa, + 0xe0, 0xfa, 0xe1, 0xfa, 0xca, 0xfa, 0xc9, 0xfa, 0xba, 0xfa, 0xbc, 0xfa, + 0xb1, 0xfa, 0xb1, 0xfa, 0xac, 0xfa, 0xad, 0xfa, 0xaf, 0xfa, 0xad, 0xfa, + 0xb7, 0xfa, 0xba, 0xfa, 0xc8, 0xfa, 0xc5, 0xfa, 0xdd, 0xfa, 0xde, 0xfa, + 0xf8, 0xfa, 0xf9, 0xfa, 0x19, 0xfb, 0x1a, 0xfb, 0x41, 0xfb, 0x41, 0xfb, + 0x6d, 0xfb, 0x6e, 0xfb, 0xa0, 0xfb, 0x9e, 0xfb, 0xd3, 0xfb, 0xd3, 0xfb, + 0x0c, 0xfc, 0x0c, 0xfc, 0x47, 0xfc, 0x45, 0xfc, 0x82, 0xfc, 0x84, 0xfc, + 0xc0, 0xfc, 0xbf, 0xfc, 0x00, 0xfd, 0x01, 0xfd, 0x40, 0xfd, 0x3f, 0xfd, + 0x7d, 0xfd, 0x7c, 0xfd, 0xb7, 0xfd, 0xb7, 0xfd, 0xef, 0xfd, 0xf0, 0xfd, + 0x28, 0xfe, 0x25, 0xfe, 0x59, 0xfe, 0x5a, 0xfe, 0x8a, 0xfe, 0x88, 0xfe, + 0xb3, 0xfe, 0xb2, 0xfe, 0xd8, 0xfe, 0xdb, 0xfe, 0xfc, 0xfe, 0xf8, 0xfe, + 0x17, 0xff, 0x1a, 0xff, 0x30, 0xff, 0x2f, 0xff, 0x45, 0xff, 0x43, 0xff, + 0x53, 0xff, 0x57, 0xff, 0x61, 0xff, 0x5f, 0xff, 0x6a, 0xff, 0x69, 0xff, + 0x6d, 0xff, 0x70, 0xff, 0x73, 0xff, 0x71, 0xff, 0x73, 0xff, 0x74, 0xff, + 0x71, 0xff, 0x72, 0xff, 0x73, 0xff, 0x73, 0xff, 0x6f, 0xff, 0x70, 0xff, + 0x72, 0xff, 0x74, 0xff, 0x73, 0xff, 0x73, 0xff, 0x77, 0xff, 0x78, 0xff, + 0x7e, 0xff, 0x7c, 0xff, 0x86, 0xff, 0x88, 0xff, 0x94, 0xff, 0x93, 0xff, + 0xa6, 0xff, 0xa7, 0xff, 0xbb, 0xff, 0xbc, 0xff, 0xd6, 0xff, 0xd5, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0x19, 0x00, 0x16, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x6f, 0x00, 0x70, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xd7, 0x00, 0xd9, 0x00, + 0x12, 0x01, 0x12, 0x01, 0x50, 0x01, 0x50, 0x01, 0x91, 0x01, 0x91, 0x01, + 0xd4, 0x01, 0xd4, 0x01, 0x19, 0x02, 0x18, 0x02, 0x5e, 0x02, 0x5f, 0x02, + 0xa2, 0x02, 0xa2, 0x02, 0xe9, 0x02, 0xe9, 0x02, 0x2c, 0x03, 0x2b, 0x03, + 0x6d, 0x03, 0x6e, 0x03, 0xac, 0x03, 0xad, 0x03, 0xe8, 0x03, 0xe8, 0x03, + 0x21, 0x04, 0x21, 0x04, 0x54, 0x04, 0x52, 0x04, 0x82, 0x04, 0x82, 0x04, + 0xaa, 0x04, 0xaa, 0x04, 0xcf, 0x04, 0xce, 0x04, 0xe8, 0x04, 0xe9, 0x04, + 0x01, 0x05, 0xfe, 0x04, 0x0e, 0x05, 0x0f, 0x05, 0x17, 0x05, 0x17, 0x05, + 0x1c, 0x05, 0x1b, 0x05, 0x17, 0x05, 0x18, 0x05, 0x10, 0x05, 0x10, 0x05, + 0x02, 0x05, 0x01, 0x05, 0xee, 0x04, 0xf0, 0x04, 0xd9, 0x04, 0xd7, 0x04, + 0xbd, 0x04, 0xbe, 0x04, 0xa0, 0x04, 0xa0, 0x04, 0x7f, 0x04, 0x7f, 0x04, + 0x60, 0x04, 0x60, 0x04, 0x3c, 0x04, 0x3c, 0x04, 0x19, 0x04, 0x18, 0x04, + 0xf7, 0x03, 0xf8, 0x03, 0xd3, 0x03, 0xd5, 0x03, 0xb5, 0x03, 0xb3, 0x03, + 0x97, 0x03, 0x98, 0x03, 0x7c, 0x03, 0x7a, 0x03, 0x66, 0x03, 0x64, 0x03, + 0x4e, 0x03, 0x51, 0x03, 0x3f, 0x03, 0x3d, 0x03, 0x32, 0x03, 0x33, 0x03, + 0x28, 0x03, 0x27, 0x03, 0x23, 0x03, 0x23, 0x03, 0x21, 0x03, 0x21, 0x03, + 0x24, 0x03, 0x23, 0x03, 0x28, 0x03, 0x27, 0x03, 0x2f, 0x03, 0x2f, 0x03, + 0x38, 0x03, 0x39, 0x03, 0x45, 0x03, 0x44, 0x03, 0x4f, 0x03, 0x51, 0x03, + 0x5d, 0x03, 0x5d, 0x03, 0x69, 0x03, 0x6a, 0x03, 0x78, 0x03, 0x77, 0x03, + 0x7f, 0x03, 0x80, 0x03, 0x8b, 0x03, 0x8a, 0x03, 0x8d, 0x03, 0x8f, 0x03, + 0x93, 0x03, 0x92, 0x03, 0x8f, 0x03, 0x91, 0x03, 0x8c, 0x03, 0x8d, 0x03, + 0x81, 0x03, 0x81, 0x03, 0x70, 0x03, 0x72, 0x03, 0x5c, 0x03, 0x5d, 0x03, + 0x41, 0x03, 0x41, 0x03, 0x24, 0x03, 0x26, 0x03, 0xfe, 0x02, 0xfe, 0x02, + 0xd3, 0x02, 0xd4, 0x02, 0xa7, 0x02, 0xa7, 0x02, 0x6f, 0x02, 0x71, 0x02, + 0x3c, 0x02, 0x3a, 0x02, 0xfb, 0x01, 0xfd, 0x01, 0xbe, 0x01, 0xbc, 0x01, + 0x79, 0x01, 0x7d, 0x01, 0x37, 0x01, 0x34, 0x01, 0xf1, 0x00, 0xf2, 0x00, + 0xa9, 0x00, 0xaa, 0x00, 0x64, 0x00, 0x63, 0x00, 0x1e, 0x00, 0x1d, 0x00, + 0xd7, 0xff, 0xd9, 0xff, 0x97, 0xff, 0x96, 0xff, 0x57, 0xff, 0x55, 0xff, + 0x1a, 0xff, 0x1c, 0xff, 0xe3, 0xfe, 0xe0, 0xfe, 0xad, 0xfe, 0xaf, 0xfe, + 0x7e, 0xfe, 0x7b, 0xfe, 0x53, 0xfe, 0x54, 0xfe, 0x2c, 0xfe, 0x2b, 0xfe, + 0x0b, 0xfe, 0x0b, 0xfe, 0xef, 0xfd, 0xf0, 0xfd, 0xd8, 0xfd, 0xd6, 0xfd, + 0xc6, 0xfd, 0xc9, 0xfd, 0xb9, 0xfd, 0xb7, 0xfd, 0xaf, 0xfd, 0xb1, 0xfd, + 0xaa, 0xfd, 0xa9, 0xfd, 0xa8, 0xfd, 0xa9, 0xfd, 0xa8, 0xfd, 0xa8, 0xfd, + 0xac, 0xfd, 0xad, 0xfd, 0xb2, 0xfd, 0xb0, 0xfd, 0xb5, 0xfd, 0xb8, 0xfd, + 0xbf, 0xfd, 0xba, 0xfd, 0xc0, 0xfd, 0xc2, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, + 0xcb, 0xfd, 0xc9, 0xfd, 0xc8, 0xfd, 0xca, 0xfd, 0xc9, 0xfd, 0xc7, 0xfd, + 0xc2, 0xfd, 0xc3, 0xfd, 0xb7, 0xfd, 0xb8, 0xfd, 0xae, 0xfd, 0xad, 0xfd, + 0x9a, 0xfd, 0x9b, 0xfd, 0x88, 0xfd, 0x88, 0xfd, 0x6e, 0xfd, 0x6e, 0xfd, + 0x51, 0xfd, 0x51, 0xfd, 0x2f, 0xfd, 0x31, 0xfd, 0x0b, 0xfd, 0x0a, 0xfd, + 0xe4, 0xfc, 0xe4, 0xfc, 0xb7, 0xfc, 0xb7, 0xfc, 0x8a, 0xfc, 0x8a, 0xfc, + 0x5a, 0xfc, 0x5a, 0xfc, 0x29, 0xfc, 0x29, 0xfc, 0xf7, 0xfb, 0xf7, 0xfb, + 0xc7, 0xfb, 0xc6, 0xfb, 0x96, 0xfb, 0x97, 0xfb, 0x67, 0xfb, 0x65, 0xfb, + 0x3a, 0xfb, 0x3b, 0xfb, 0x12, 0xfb, 0x11, 0xfb, 0xe9, 0xfa, 0xe8, 0xfa, + 0xca, 0xfa, 0xcb, 0xfa, 0xab, 0xfa, 0xab, 0xfa, 0x96, 0xfa, 0x96, 0xfa, + 0x82, 0xfa, 0x81, 0xfa, 0x78, 0xfa, 0x77, 0xfa, 0x70, 0xfa, 0x72, 0xfa, + 0x72, 0xfa, 0x71, 0xfa, 0x7b, 0xfa, 0x7a, 0xfa, 0x89, 0xfa, 0x89, 0xfa, + 0xa0, 0xfa, 0x9e, 0xfa, 0xba, 0xfa, 0xba, 0xfa, 0xd7, 0xfa, 0xd8, 0xfa, + 0x03, 0xfb, 0x03, 0xfb, 0x2d, 0xfb, 0x2d, 0xfb, 0x5d, 0xfb, 0x5d, 0xfb, + 0x91, 0xfb, 0x91, 0xfb, 0xc6, 0xfb, 0xc7, 0xfb, 0x02, 0xfc, 0x00, 0xfc, + 0x3a, 0xfc, 0x3b, 0xfc, 0x79, 0xfc, 0x78, 0xfc, 0xb5, 0xfc, 0xb4, 0xfc, + 0xf1, 0xfc, 0xf2, 0xfc, 0x2b, 0xfd, 0x2b, 0xfd, 0x64, 0xfd, 0x65, 0xfd, + 0x9a, 0xfd, 0x98, 0xfd, 0xcd, 0xfd, 0xcf, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0x2b, 0xfe, 0x2a, 0xfe, 0x53, 0xfe, 0x51, 0xfe, 0x77, 0xfe, 0x76, 0xfe, + 0x94, 0xfe, 0x95, 0xfe, 0xb1, 0xfe, 0xb1, 0xfe, 0xc8, 0xfe, 0xc6, 0xfe, + 0xda, 0xfe, 0xda, 0xfe, 0xe9, 0xfe, 0xe9, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, + 0xfc, 0xfe, 0xfc, 0xfe, 0x03, 0xff, 0x02, 0xff, 0x07, 0xff, 0x07, 0xff, + 0x0a, 0xff, 0x0a, 0xff, 0x0c, 0xff, 0x0c, 0xff, 0x0f, 0xff, 0x0f, 0xff, + 0x11, 0xff, 0x10, 0xff, 0x16, 0xff, 0x16, 0xff, 0x1a, 0xff, 0x18, 0xff, + 0x21, 0xff, 0x22, 0xff, 0x2b, 0xff, 0x2a, 0xff, 0x39, 0xff, 0x3a, 0xff, + 0x4b, 0xff, 0x4a, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x7a, 0xff, 0x7b, 0xff, + 0x9a, 0xff, 0x97, 0xff, 0xba, 0xff, 0xbc, 0xff, 0xe6, 0xff, 0xe3, 0xff, + 0x0e, 0x00, 0x0f, 0x00, 0x41, 0x00, 0x40, 0x00, 0x74, 0x00, 0x72, 0x00, + 0xaa, 0x00, 0xac, 0x00, 0xe7, 0x00, 0xe6, 0x00, 0x25, 0x01, 0x25, 0x01, + 0x67, 0x01, 0x66, 0x01, 0xa6, 0x01, 0xa6, 0x01, 0xeb, 0x01, 0xea, 0x01, + 0x2e, 0x02, 0x2e, 0x02, 0x70, 0x02, 0x6f, 0x02, 0xb4, 0x02, 0xb4, 0x02, + 0xf1, 0x02, 0xf0, 0x02, 0x31, 0x03, 0x31, 0x03, 0x69, 0x03, 0x68, 0x03, + 0xa2, 0x03, 0xa2, 0x03, 0xd3, 0x03, 0xd5, 0x03, 0x02, 0x04, 0x01, 0x04, + 0x2c, 0x04, 0x2d, 0x04, 0x4d, 0x04, 0x4d, 0x04, 0x6e, 0x04, 0x6e, 0x04, + 0x83, 0x04, 0x84, 0x04, 0x99, 0x04, 0x98, 0x04, 0xa5, 0x04, 0xa6, 0x04, + 0xac, 0x04, 0xac, 0x04, 0xaf, 0x04, 0xaf, 0x04, 0xa9, 0x04, 0xab, 0x04, + 0xa5, 0x04, 0xa3, 0x04, 0x97, 0x04, 0x97, 0x04, 0x86, 0x04, 0x87, 0x04, + 0x75, 0x04, 0x73, 0x04, 0x5d, 0x04, 0x5d, 0x04, 0x45, 0x04, 0x46, 0x04, + 0x2e, 0x04, 0x2c, 0x04, 0x12, 0x04, 0x15, 0x04, 0xfc, 0x03, 0xf9, 0x03, + 0xe1, 0x03, 0xe2, 0x03, 0xca, 0x03, 0xc9, 0x03, 0xb4, 0x03, 0xb4, 0x03, + 0x9f, 0x03, 0x9f, 0x03, 0x91, 0x03, 0x90, 0x03, 0x81, 0x03, 0x82, 0x03, + 0x76, 0x03, 0x76, 0x03, 0x71, 0x03, 0x70, 0x03, 0x6a, 0x03, 0x6b, 0x03, + 0x6d, 0x03, 0x6c, 0x03, 0x70, 0x03, 0x70, 0x03, 0x78, 0x03, 0x76, 0x03, + 0x7f, 0x03, 0x80, 0x03, 0x8d, 0x03, 0x8a, 0x03, 0x9a, 0x03, 0x9c, 0x03, + 0xac, 0x03, 0xab, 0x03, 0xbe, 0x03, 0xbd, 0x03, 0xce, 0x03, 0xcf, 0x03, + 0xe3, 0x03, 0xe0, 0x03, 0xf1, 0x03, 0xf4, 0x03, 0x04, 0x04, 0x02, 0x04, + 0x11, 0x04, 0x11, 0x04, 0x1e, 0x04, 0x1e, 0x04, 0x26, 0x04, 0x26, 0x04, + 0x2b, 0x04, 0x29, 0x04, 0x2c, 0x04, 0x2d, 0x04, 0x29, 0x04, 0x27, 0x04, + 0x1e, 0x04, 0x1f, 0x04, 0x12, 0x04, 0x0f, 0x04, 0xfd, 0x03, 0xfe, 0x03, + 0xe3, 0x03, 0xe2, 0x03, 0xc4, 0x03, 0xc5, 0x03, 0x9f, 0x03, 0x9f, 0x03, + 0x74, 0x03, 0x74, 0x03, 0x43, 0x03, 0x42, 0x03, 0x10, 0x03, 0x10, 0x03, + 0xd6, 0x02, 0xd5, 0x02, 0x98, 0x02, 0x99, 0x02, 0x56, 0x02, 0x56, 0x02, + 0x12, 0x02, 0x12, 0x02, 0xcc, 0x01, 0xcb, 0x01, 0x83, 0x01, 0x84, 0x01, + 0x3d, 0x01, 0x3c, 0x01, 0xf3, 0x00, 0xf4, 0x00, 0xaa, 0x00, 0xa8, 0x00, + 0x64, 0x00, 0x64, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0xdc, 0xff, 0xdb, 0xff, + 0x9b, 0xff, 0x9b, 0xff, 0x60, 0xff, 0x60, 0xff, 0x2b, 0xff, 0x2b, 0xff, + 0xf5, 0xfe, 0xf5, 0xfe, 0xc9, 0xfe, 0xcb, 0xfe, 0x9e, 0xfe, 0x9f, 0xfe, + 0x7c, 0xfe, 0x7c, 0xfe, 0x5c, 0xfe, 0x5d, 0xfe, 0x43, 0xfe, 0x42, 0xfe, + 0x2d, 0xfe, 0x2f, 0xfe, 0x1d, 0xfe, 0x1b, 0xfe, 0x0f, 0xfe, 0x12, 0xfe, + 0x09, 0xfe, 0x0a, 0xfe, 0x04, 0xfe, 0x06, 0xfe, 0x01, 0xfe, 0x03, 0xfe, + 0x05, 0xfe, 0x04, 0xfe, 0x04, 0xfe, 0x05, 0xfe, 0x0a, 0xfe, 0x0b, 0xfe, + 0x0c, 0xfe, 0x0e, 0xfe, 0x12, 0xfe, 0x11, 0xfe, 0x12, 0xfe, 0x14, 0xfe, + 0x13, 0xfe, 0x13, 0xfe, 0x13, 0xfe, 0x14, 0xfe, 0x10, 0xfe, 0x0f, 0xfe, + 0x0b, 0xfe, 0x0c, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xf5, 0xfd, 0xf4, 0xfd, + 0xe2, 0xfd, 0xe3, 0xfd, 0xd0, 0xfd, 0xcf, 0xfd, 0xb5, 0xfd, 0xb4, 0xfd, + 0x97, 0xfd, 0x99, 0xfd, 0x79, 0xfd, 0x76, 0xfd, 0x53, 0xfd, 0x54, 0xfd, + 0x2b, 0xfd, 0x2b, 0xfd, 0x01, 0xfd, 0x00, 0xfd, 0xd1, 0xfc, 0xd1, 0xfc, + 0xa3, 0xfc, 0xa3, 0xfc, 0x72, 0xfc, 0x72, 0xfc, 0x3f, 0xfc, 0x3d, 0xfc, + 0x0e, 0xfc, 0x0f, 0xfc, 0xdc, 0xfb, 0xdb, 0xfb, 0xad, 0xfb, 0xad, 0xfb, + 0x7c, 0xfb, 0x7c, 0xfb, 0x51, 0xfb, 0x50, 0xfb, 0x26, 0xfb, 0x28, 0xfb, + 0x03, 0xfb, 0x02, 0xfb, 0xe2, 0xfa, 0xe1, 0xfa, 0xc5, 0xfa, 0xc5, 0xfa, + 0xaf, 0xfa, 0xaf, 0xfa, 0x9d, 0xfa, 0x9d, 0xfa, 0x93, 0xfa, 0x92, 0xfa, + 0x8c, 0xfa, 0x8c, 0xfa, 0x8d, 0xfa, 0x8e, 0xfa, 0x95, 0xfa, 0x93, 0xfa, + 0x9f, 0xfa, 0xa1, 0xfa, 0xb4, 0xfa, 0xb3, 0xfa, 0xcc, 0xfa, 0xcb, 0xfa, + 0xe7, 0xfa, 0xe9, 0xfa, 0x0d, 0xfb, 0x0b, 0xfb, 0x30, 0xfb, 0x30, 0xfb, + 0x5c, 0xfb, 0x5a, 0xfb, 0x87, 0xfb, 0x87, 0xfb, 0xb7, 0xfb, 0xb6, 0xfb, + 0xe8, 0xfb, 0xe9, 0xfb, 0x1a, 0xfc, 0x1a, 0xfc, 0x4b, 0xfc, 0x4c, 0xfc, + 0x7e, 0xfc, 0x7e, 0xfc, 0xae, 0xfc, 0xad, 0xfc, 0xde, 0xfc, 0xe0, 0xfc, + 0x0d, 0xfd, 0x0b, 0xfd, 0x37, 0xfd, 0x39, 0xfd, 0x60, 0xfd, 0x5f, 0xfd, + 0x83, 0xfd, 0x84, 0xfd, 0xa5, 0xfd, 0xa6, 0xfd, 0xc5, 0xfd, 0xc4, 0xfd, + 0xdf, 0xfd, 0xde, 0xfd, 0xf6, 0xfd, 0xf7, 0xfd, 0x09, 0xfe, 0x08, 0xfe, + 0x1a, 0xfe, 0x19, 0xfe, 0x26, 0xfe, 0x26, 0xfe, 0x32, 0xfe, 0x30, 0xfe, + 0x39, 0xfe, 0x39, 0xfe, 0x40, 0xfe, 0x40, 0xfe, 0x46, 0xfe, 0x45, 0xfe, + 0x49, 0xfe, 0x4b, 0xfe, 0x4d, 0xfe, 0x4b, 0xfe, 0x51, 0xfe, 0x51, 0xfe, + 0x57, 0xfe, 0x56, 0xfe, 0x5e, 0xfe, 0x5d, 0xfe, 0x68, 0xfe, 0x68, 0xfe, + 0x72, 0xfe, 0x72, 0xfe, 0x84, 0xfe, 0x83, 0xfe, 0x94, 0xfe, 0x95, 0xfe, + 0xac, 0xfe, 0xab, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, + 0x0d, 0xff, 0x0a, 0xff, 0x30, 0xff, 0x31, 0xff, 0x5e, 0xff, 0x5e, 0xff, + 0x8f, 0xff, 0x8f, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0x3a, 0x00, 0x3a, 0x00, 0x77, 0x00, 0x78, 0x00, 0xbb, 0x00, 0xba, 0x00, + 0xfd, 0x00, 0xfe, 0x00, 0x44, 0x01, 0x44, 0x01, 0x89, 0x01, 0x8a, 0x01, + 0xd0, 0x01, 0xcf, 0x01, 0x14, 0x02, 0x15, 0x02, 0x5a, 0x02, 0x59, 0x02, + 0x9b, 0x02, 0x9c, 0x02, 0xd9, 0x02, 0xda, 0x02, 0x19, 0x03, 0x17, 0x03, + 0x4e, 0x03, 0x4f, 0x03, 0x84, 0x03, 0x85, 0x03, 0xb3, 0x03, 0xb3, 0x03, + 0xde, 0x03, 0xde, 0x03, 0x04, 0x04, 0x02, 0x04, 0x21, 0x04, 0x23, 0x04, + 0x3e, 0x04, 0x3d, 0x04, 0x51, 0x04, 0x51, 0x04, 0x5e, 0x04, 0x5f, 0x04, + 0x69, 0x04, 0x69, 0x04, 0x6c, 0x04, 0x6d, 0x04, 0x6c, 0x04, 0x6d, 0x04, + 0x65, 0x04, 0x67, 0x04, 0x5b, 0x04, 0x5a, 0x04, 0x4e, 0x04, 0x4f, 0x04, + 0x3c, 0x04, 0x3c, 0x04, 0x2a, 0x04, 0x2b, 0x04, 0x13, 0x04, 0x15, 0x04, + 0xff, 0x03, 0xff, 0x03, 0xe7, 0x03, 0xe8, 0x03, 0xd0, 0x03, 0xd1, 0x03, + 0xbc, 0x03, 0xbc, 0x03, 0xa4, 0x03, 0xa5, 0x03, 0x96, 0x03, 0x95, 0x03, + 0x82, 0x03, 0x83, 0x03, 0x74, 0x03, 0x75, 0x03, 0x6b, 0x03, 0x6d, 0x03, + 0x62, 0x03, 0x61, 0x03, 0x60, 0x03, 0x61, 0x03, 0x5f, 0x03, 0x5e, 0x03, + 0x63, 0x03, 0x64, 0x03, 0x6b, 0x03, 0x6a, 0x03, 0x72, 0x03, 0x72, 0x03, + 0x81, 0x03, 0x82, 0x03, 0x91, 0x03, 0x90, 0x03, 0xa3, 0x03, 0xa4, 0x03, + 0xb8, 0x03, 0xb8, 0x03, 0xcc, 0x03, 0xcb, 0x03, 0xe5, 0x03, 0xe6, 0x03, + 0xf9, 0x03, 0xfb, 0x03, 0x12, 0x04, 0x11, 0x04, 0x27, 0x04, 0x27, 0x04, + 0x39, 0x04, 0x39, 0x04, 0x4a, 0x04, 0x4c, 0x04, 0x59, 0x04, 0x58, 0x04, + 0x65, 0x04, 0x65, 0x04, 0x69, 0x04, 0x69, 0x04, 0x6c, 0x04, 0x6b, 0x04, + 0x6a, 0x04, 0x6a, 0x04, 0x62, 0x04, 0x60, 0x04, 0x53, 0x04, 0x55, 0x04, + 0x3f, 0x04, 0x3f, 0x04, 0x28, 0x04, 0x28, 0x04, 0x09, 0x04, 0x0a, 0x04, + 0xe6, 0x03, 0xe4, 0x03, 0xbb, 0x03, 0xbd, 0x03, 0x8d, 0x03, 0x8c, 0x03, + 0x59, 0x03, 0x5b, 0x03, 0x22, 0x03, 0x22, 0x03, 0xe7, 0x02, 0xe7, 0x02, + 0xaa, 0x02, 0xab, 0x02, 0x68, 0x02, 0x66, 0x02, 0x26, 0x02, 0x29, 0x02, + 0xe3, 0x01, 0xe2, 0x01, 0x9d, 0x01, 0x9d, 0x01, 0x5a, 0x01, 0x58, 0x01, + 0x15, 0x01, 0x15, 0x01, 0xd3, 0x00, 0xd2, 0x00, 0x91, 0x00, 0x91, 0x00, + 0x57, 0x00, 0x56, 0x00, 0x19, 0x00, 0x19, 0x00, 0xe4, 0xff, 0xe3, 0xff, + 0xaf, 0xff, 0xb0, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x56, 0xff, 0x58, 0xff, + 0x2f, 0xff, 0x2f, 0xff, 0x0f, 0xff, 0x0e, 0xff, 0xf1, 0xfe, 0xf2, 0xfe, + 0xd7, 0xfe, 0xd7, 0xfe, 0xc5, 0xfe, 0xc6, 0xfe, 0xb2, 0xfe, 0xb2, 0xfe, + 0xa5, 0xfe, 0xa6, 0xfe, 0x9b, 0xfe, 0x9b, 0xfe, 0x90, 0xfe, 0x91, 0xfe, + 0x8e, 0xfe, 0x8f, 0xfe, 0x87, 0xfe, 0x87, 0xfe, 0x84, 0xfe, 0x83, 0xfe, + 0x7f, 0xfe, 0x82, 0xfe, 0x7c, 0xfe, 0x7b, 0xfe, 0x79, 0xfe, 0x7a, 0xfe, + 0x72, 0xfe, 0x73, 0xfe, 0x6d, 0xfe, 0x6d, 0xfe, 0x62, 0xfe, 0x63, 0xfe, + 0x56, 0xfe, 0x56, 0xfe, 0x46, 0xfe, 0x48, 0xfe, 0x33, 0xfe, 0x32, 0xfe, + 0x1e, 0xfe, 0x1f, 0xfe, 0x04, 0xfe, 0x04, 0xfe, 0xe5, 0xfd, 0xe6, 0xfd, + 0xc6, 0xfd, 0xc5, 0xfd, 0x9f, 0xfd, 0xa0, 0xfd, 0x79, 0xfd, 0x79, 0xfd, + 0x4f, 0xfd, 0x4f, 0xfd, 0x21, 0xfd, 0x21, 0xfd, 0xf3, 0xfc, 0xf3, 0xfc, + 0xc2, 0xfc, 0xc2, 0xfc, 0x91, 0xfc, 0x91, 0xfc, 0x5f, 0xfc, 0x5f, 0xfc, + 0x2d, 0xfc, 0x2b, 0xfc, 0xfd, 0xfb, 0xfe, 0xfb, 0xce, 0xfb, 0xcb, 0xfb, + 0xa0, 0xfb, 0xa2, 0xfb, 0x76, 0xfb, 0x74, 0xfb, 0x4d, 0xfb, 0x4e, 0xfb, + 0x2a, 0xfb, 0x2a, 0xfb, 0x0a, 0xfb, 0x0b, 0xfb, 0xf1, 0xfa, 0xf0, 0xfa, + 0xd9, 0xfa, 0xda, 0xfa, 0xcc, 0xfa, 0xcb, 0xfa, 0xc0, 0xfa, 0xc1, 0xfa, + 0xbc, 0xfa, 0xbb, 0xfa, 0xbd, 0xfa, 0xbe, 0xfa, 0xc4, 0xfa, 0xc4, 0xfa, + 0xce, 0xfa, 0xcf, 0xfa, 0xe3, 0xfa, 0xe4, 0xfa, 0xf9, 0xfa, 0xf7, 0xfa, + 0x14, 0xfb, 0x15, 0xfb, 0x36, 0xfb, 0x35, 0xfb, 0x59, 0xfb, 0x56, 0xfb, + 0x80, 0xfb, 0x81, 0xfb, 0xa9, 0xfb, 0xa7, 0xfb, 0xd6, 0xfb, 0xd6, 0xfb, + 0x02, 0xfc, 0x02, 0xfc, 0x32, 0xfc, 0x2f, 0xfc, 0x5d, 0xfc, 0x5f, 0xfc, + 0x8b, 0xfc, 0x8a, 0xfc, 0xb7, 0xfc, 0xb7, 0xfc, 0xdf, 0xfc, 0xdf, 0xfc, + 0x0a, 0xfd, 0x08, 0xfd, 0x2d, 0xfd, 0x2d, 0xfd, 0x4e, 0xfd, 0x4d, 0xfd, + 0x6f, 0xfd, 0x6e, 0xfd, 0x86, 0xfd, 0x87, 0xfd, 0xa0, 0xfd, 0xa0, 0xfd, + 0xb3, 0xfd, 0xb3, 0xfd, 0xc4, 0xfd, 0xc3, 0xfd, 0xcf, 0xfd, 0xd0, 0xfd, + 0xd9, 0xfd, 0xda, 0xfd, 0xdf, 0xfd, 0xde, 0xfd, 0xe3, 0xfd, 0xe3, 0xfd, + 0xe4, 0xfd, 0xe5, 0xfd, 0xe3, 0xfd, 0xe3, 0xfd, 0xe2, 0xfd, 0xe2, 0xfd, + 0xdf, 0xfd, 0xde, 0xfd, 0xde, 0xfd, 0xdd, 0xfd, 0xdb, 0xfd, 0xdb, 0xfd, + 0xda, 0xfd, 0xda, 0xfd, 0xdc, 0xfd, 0xdc, 0xfd, 0xde, 0xfd, 0xde, 0xfd, + 0xe4, 0xfd, 0xe4, 0xfd, 0xef, 0xfd, 0xee, 0xfd, 0xfb, 0xfd, 0xfb, 0xfd, + 0x0e, 0xfe, 0x0e, 0xfe, 0x23, 0xfe, 0x23, 0xfe, 0x3e, 0xfe, 0x3e, 0xfe, + 0x5b, 0xfe, 0x5b, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0xab, 0xfe, 0xab, 0xfe, + 0xd8, 0xfe, 0xd8, 0xfe, 0x0a, 0xff, 0x0b, 0xff, 0x42, 0xff, 0x41, 0xff, + 0x7c, 0xff, 0x7d, 0xff, 0xba, 0xff, 0xba, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0x40, 0x00, 0x40, 0x00, 0x85, 0x00, 0x85, 0x00, 0xcc, 0x00, 0xcd, 0x00, + 0x12, 0x01, 0x13, 0x01, 0x5a, 0x01, 0x5a, 0x01, 0xa1, 0x01, 0xa1, 0x01, + 0xe1, 0x01, 0xe3, 0x01, 0x28, 0x02, 0x27, 0x02, 0x65, 0x02, 0x67, 0x02, + 0xa3, 0x02, 0xa2, 0x02, 0xdb, 0x02, 0xdd, 0x02, 0x10, 0x03, 0x0e, 0x03, + 0x40, 0x03, 0x42, 0x03, 0x6b, 0x03, 0x6b, 0x03, 0x91, 0x03, 0x90, 0x03, + 0xb0, 0x03, 0xb1, 0x03, 0xcb, 0x03, 0xca, 0x03, 0xe3, 0x03, 0xe3, 0x03, + 0xf1, 0x03, 0xf0, 0x03, 0xfe, 0x03, 0xfe, 0x03, 0x05, 0x04, 0x04, 0x04, + 0x05, 0x04, 0x07, 0x04, 0x06, 0x04, 0x05, 0x04, 0xfe, 0x03, 0xfe, 0x03, + 0xf6, 0x03, 0xf6, 0x03, 0xeb, 0x03, 0xeb, 0x03, 0xdd, 0x03, 0xdd, 0x03, + 0xd0, 0x03, 0xd0, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xaf, 0x03, 0xb1, 0x03, + 0xa1, 0x03, 0x9f, 0x03, 0x92, 0x03, 0x93, 0x03, 0x85, 0x03, 0x84, 0x03, + 0x7b, 0x03, 0x7b, 0x03, 0x72, 0x03, 0x72, 0x03, 0x6b, 0x03, 0x6e, 0x03, + 0x6a, 0x03, 0x68, 0x03, 0x67, 0x03, 0x69, 0x03, 0x6e, 0x03, 0x6c, 0x03, + 0x72, 0x03, 0x73, 0x03, 0x7d, 0x03, 0x7c, 0x03, 0x8a, 0x03, 0x89, 0x03, + 0x98, 0x03, 0x98, 0x03, 0xab, 0x03, 0xaa, 0x03, 0xbd, 0x03, 0xbc, 0x03, + 0xd3, 0x03, 0xd2, 0x03, 0xe9, 0x03, 0xea, 0x03, 0x00, 0x04, 0xff, 0x03, + 0x16, 0x04, 0x17, 0x04, 0x2e, 0x04, 0x2f, 0x04, 0x42, 0x04, 0x41, 0x04, + 0x56, 0x04, 0x57, 0x04, 0x6a, 0x04, 0x69, 0x04, 0x74, 0x04, 0x75, 0x04, + 0x82, 0x04, 0x82, 0x04, 0x88, 0x04, 0x87, 0x04, 0x8b, 0x04, 0x8c, 0x04, + 0x88, 0x04, 0x87, 0x04, 0x82, 0x04, 0x81, 0x04, 0x74, 0x04, 0x77, 0x04, + 0x66, 0x04, 0x64, 0x04, 0x4d, 0x04, 0x4e, 0x04, 0x32, 0x04, 0x31, 0x04, + 0x10, 0x04, 0x10, 0x04, 0xeb, 0x03, 0xeb, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0x8f, 0x03, 0x8f, 0x03, 0x5e, 0x03, 0x5c, 0x03, 0x25, 0x03, 0x27, 0x03, + 0xef, 0x02, 0xef, 0x02, 0xb2, 0x02, 0xb0, 0x02, 0x73, 0x02, 0x74, 0x02, + 0x36, 0x02, 0x36, 0x02, 0xf4, 0x01, 0xf4, 0x01, 0xb9, 0x01, 0xb8, 0x01, + 0x7a, 0x01, 0x79, 0x01, 0x3c, 0x01, 0x3c, 0x01, 0x02, 0x01, 0x02, 0x01, + 0xc8, 0x00, 0xc9, 0x00, 0x97, 0x00, 0x94, 0x00, 0x62, 0x00, 0x65, 0x00, + 0x35, 0x00, 0x35, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0xe7, 0xff, 0xe5, 0xff, + 0xc5, 0xff, 0xc4, 0xff, 0xa6, 0xff, 0xa7, 0xff, 0x8f, 0xff, 0x8c, 0xff, + 0x76, 0xff, 0x77, 0xff, 0x66, 0xff, 0x66, 0xff, 0x57, 0xff, 0x58, 0xff, + 0x4b, 0xff, 0x4c, 0xff, 0x43, 0xff, 0x42, 0xff, 0x3e, 0xff, 0x3f, 0xff, + 0x39, 0xff, 0x38, 0xff, 0x35, 0xff, 0x35, 0xff, 0x31, 0xff, 0x31, 0xff, + 0x2d, 0xff, 0x2c, 0xff, 0x29, 0xff, 0x29, 0xff, 0x22, 0xff, 0x22, 0xff, + 0x1d, 0xff, 0x1d, 0xff, 0x13, 0xff, 0x12, 0xff, 0x08, 0xff, 0x09, 0xff, + 0xf9, 0xfe, 0xf8, 0xfe, 0xe8, 0xfe, 0xe6, 0xfe, 0xcf, 0xfe, 0xd1, 0xfe, + 0xb6, 0xfe, 0xb4, 0xfe, 0x98, 0xfe, 0x99, 0xfe, 0x76, 0xfe, 0x74, 0xfe, + 0x52, 0xfe, 0x52, 0xfe, 0x28, 0xfe, 0x27, 0xfe, 0xfa, 0xfd, 0xfb, 0xfd, + 0xcc, 0xfd, 0xcb, 0xfd, 0x97, 0xfd, 0x98, 0xfd, 0x64, 0xfd, 0x62, 0xfd, + 0x2b, 0xfd, 0x2c, 0xfd, 0xf3, 0xfc, 0xf4, 0xfc, 0xbd, 0xfc, 0xbb, 0xfc, + 0x81, 0xfc, 0x82, 0xfc, 0x4c, 0xfc, 0x4c, 0xfc, 0x12, 0xfc, 0x13, 0xfc, + 0xe0, 0xfb, 0xe0, 0xfb, 0xad, 0xfb, 0xad, 0xfb, 0x7f, 0xfb, 0x7e, 0xfb, + 0x54, 0xfb, 0x53, 0xfb, 0x2e, 0xfb, 0x2f, 0xfb, 0x0a, 0xfb, 0x09, 0xfb, + 0xef, 0xfa, 0xee, 0xfa, 0xd6, 0xfa, 0xd7, 0xfa, 0xc4, 0xfa, 0xc5, 0xfa, + 0xbb, 0xfa, 0xb9, 0xfa, 0xb4, 0xfa, 0xb3, 0xfa, 0xb3, 0xfa, 0xb3, 0xfa, + 0xba, 0xfa, 0xb9, 0xfa, 0xc4, 0xfa, 0xc5, 0xfa, 0xd7, 0xfa, 0xd5, 0xfa, + 0xeb, 0xfa, 0xeb, 0xfa, 0x06, 0xfb, 0x06, 0xfb, 0x25, 0xfb, 0x25, 0xfb, + 0x48, 0xfb, 0x47, 0xfb, 0x6b, 0xfb, 0x6c, 0xfb, 0x94, 0xfb, 0x93, 0xfb, + 0xbe, 0xfb, 0xbe, 0xfb, 0xe6, 0xfb, 0xe5, 0xfb, 0x15, 0xfc, 0x14, 0xfc, + 0x3c, 0xfc, 0x3b, 0xfc, 0x68, 0xfc, 0x68, 0xfc, 0x90, 0xfc, 0x90, 0xfc, + 0xb6, 0xfc, 0xb5, 0xfc, 0xdd, 0xfc, 0xdd, 0xfc, 0xfd, 0xfc, 0xfc, 0xfc, + 0x1d, 0xfd, 0x1b, 0xfd, 0x36, 0xfd, 0x37, 0xfd, 0x4f, 0xfd, 0x4c, 0xfd, + 0x64, 0xfd, 0x64, 0xfd, 0x73, 0xfd, 0x71, 0xfd, 0x82, 0xfd, 0x81, 0xfd, + 0x8b, 0xfd, 0x89, 0xfd, 0x93, 0xfd, 0x92, 0xfd, 0x96, 0xfd, 0x97, 0xfd, + 0x99, 0xfd, 0x96, 0xfd, 0x98, 0xfd, 0x99, 0xfd, 0x98, 0xfd, 0x96, 0xfd, + 0x96, 0xfd, 0x95, 0xfd, 0x92, 0xfd, 0x93, 0xfd, 0x92, 0xfd, 0x91, 0xfd, + 0x90, 0xfd, 0x90, 0xfd, 0x90, 0xfd, 0x8f, 0xfd, 0x93, 0xfd, 0x94, 0xfd, + 0x98, 0xfd, 0x96, 0xfd, 0x9f, 0xfd, 0xa0, 0xfd, 0xab, 0xfd, 0xaa, 0xfd, + 0xba, 0xfd, 0xbb, 0xfd, 0xcd, 0xfd, 0xcb, 0xfd, 0xe6, 0xfd, 0xe5, 0xfd, + 0x01, 0xfe, 0x01, 0xfe, 0x24, 0xfe, 0x23, 0xfe, 0x47, 0xfe, 0x47, 0xfe, + 0x73, 0xfe, 0x73, 0xfe, 0xa2, 0xfe, 0xa0, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, + 0x0b, 0xff, 0x0a, 0xff, 0x44, 0xff, 0x44, 0xff, 0x82, 0xff, 0x80, 0xff, + 0xc0, 0xff, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x44, 0x00, + 0x86, 0x00, 0x86, 0x00, 0xca, 0x00, 0xca, 0x00, 0x0a, 0x01, 0x0a, 0x01, + 0x4e, 0x01, 0x4d, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0xca, 0x01, 0xc8, 0x01, + 0x04, 0x02, 0x05, 0x02, 0x3a, 0x02, 0x3a, 0x02, 0x70, 0x02, 0x6e, 0x02, + 0x9e, 0x02, 0x9d, 0x02, 0xc8, 0x02, 0xc6, 0x02, 0xee, 0x02, 0xed, 0x02, + 0x0d, 0x03, 0x0d, 0x03, 0x2b, 0x03, 0x2b, 0x03, 0x41, 0x03, 0x42, 0x03, + 0x55, 0x03, 0x54, 0x03, 0x63, 0x03, 0x61, 0x03, 0x6d, 0x03, 0x6c, 0x03, + 0x71, 0x03, 0x71, 0x03, 0x75, 0x03, 0x75, 0x03, 0x71, 0x03, 0x72, 0x03, + 0x71, 0x03, 0x70, 0x03, 0x69, 0x03, 0x68, 0x03, 0x64, 0x03, 0x63, 0x03, + 0x5b, 0x03, 0x59, 0x03, 0x52, 0x03, 0x53, 0x03, 0x4a, 0x03, 0x48, 0x03, + 0x3f, 0x03, 0x3f, 0x03, 0x3a, 0x03, 0x3a, 0x03, 0x35, 0x03, 0x33, 0x03, + 0x32, 0x03, 0x33, 0x03, 0x31, 0x03, 0x30, 0x03, 0x34, 0x03, 0x34, 0x03, + 0x3a, 0x03, 0x3a, 0x03, 0x40, 0x03, 0x42, 0x03, 0x4f, 0x03, 0x4f, 0x03, + 0x5c, 0x03, 0x5c, 0x03, 0x6e, 0x03, 0x6e, 0x03, 0x83, 0x03, 0x84, 0x03, + 0x9b, 0x03, 0x9a, 0x03, 0xb5, 0x03, 0xb5, 0x03, 0xd0, 0x03, 0xcf, 0x03, + 0xed, 0x03, 0xec, 0x03, 0x08, 0x04, 0x0a, 0x04, 0x2c, 0x04, 0x28, 0x04, + 0x46, 0x04, 0x48, 0x04, 0x66, 0x04, 0x64, 0x04, 0x80, 0x04, 0x80, 0x04, + 0x9a, 0x04, 0x9b, 0x04, 0xb5, 0x04, 0xb3, 0x04, 0xc5, 0x04, 0xc7, 0x04, + 0xda, 0x04, 0xd9, 0x04, 0xe4, 0x04, 0xe3, 0x04, 0xee, 0x04, 0xed, 0x04, + 0xf0, 0x04, 0xf1, 0x04, 0xed, 0x04, 0xee, 0x04, 0xe9, 0x04, 0xea, 0x04, + 0xd9, 0x04, 0xda, 0x04, 0xca, 0x04, 0xc8, 0x04, 0xae, 0x04, 0xae, 0x04, + 0x91, 0x04, 0x90, 0x04, 0x6d, 0x04, 0x6e, 0x04, 0x44, 0x04, 0x43, 0x04, + 0x18, 0x04, 0x18, 0x04, 0xe5, 0x03, 0xe4, 0x03, 0xb1, 0x03, 0xb1, 0x03, + 0x78, 0x03, 0x77, 0x03, 0x3f, 0x03, 0x3f, 0x03, 0xff, 0x02, 0x01, 0x03, + 0xc3, 0x02, 0xc1, 0x02, 0x84, 0x02, 0x84, 0x02, 0x44, 0x02, 0x43, 0x02, + 0x07, 0x02, 0x05, 0x02, 0xc7, 0x01, 0xca, 0x01, 0x91, 0x01, 0x8c, 0x01, + 0x53, 0x01, 0x55, 0x01, 0x20, 0x01, 0x1d, 0x01, 0xea, 0x00, 0xea, 0x00, + 0xbc, 0x00, 0xbb, 0x00, 0x91, 0x00, 0x8f, 0x00, 0x69, 0x00, 0x68, 0x00, + 0x46, 0x00, 0x46, 0x00, 0x25, 0x00, 0x25, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0xf4, 0xff, 0xf4, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xd1, 0xff, 0xd2, 0xff, + 0xc7, 0xff, 0xc5, 0xff, 0xbb, 0xff, 0xb9, 0xff, 0xb4, 0xff, 0xb5, 0xff, + 0xad, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xa9, 0xff, 0xa5, 0xff, 0xa6, 0xff, + 0xa2, 0xff, 0xa1, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x98, 0xff, 0x96, 0xff, + 0x91, 0xff, 0x92, 0xff, 0x87, 0xff, 0x88, 0xff, 0x7e, 0xff, 0x7b, 0xff, + 0x6c, 0xff, 0x6d, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x44, 0xff, 0x46, 0xff, + 0x30, 0xff, 0x2d, 0xff, 0x11, 0xff, 0x11, 0xff, 0xef, 0xfe, 0xee, 0xfe, + 0xcc, 0xfe, 0xcc, 0xfe, 0xa2, 0xfe, 0xa2, 0xfe, 0x76, 0xfe, 0x74, 0xfe, + 0x46, 0xfe, 0x46, 0xfe, 0x14, 0xfe, 0x14, 0xfe, 0xe0, 0xfd, 0xde, 0xfd, + 0xa8, 0xfd, 0xa7, 0xfd, 0x6f, 0xfd, 0x70, 0xfd, 0x37, 0xfd, 0x34, 0xfd, + 0xfd, 0xfc, 0xfe, 0xfc, 0xc5, 0xfc, 0xc3, 0xfc, 0x8b, 0xfc, 0x8b, 0xfc, + 0x55, 0xfc, 0x53, 0xfc, 0x21, 0xfc, 0x20, 0xfc, 0xee, 0xfb, 0xec, 0xfb, + 0xbf, 0xfb, 0xbf, 0xfb, 0x94, 0xfb, 0x93, 0xfb, 0x6d, 0xfb, 0x6d, 0xfb, + 0x4c, 0xfb, 0x4b, 0xfb, 0x2e, 0xfb, 0x2d, 0xfb, 0x17, 0xfb, 0x17, 0xfb, + 0x04, 0xfb, 0x05, 0xfb, 0xf7, 0xfa, 0xf6, 0xfa, 0xf0, 0xfa, 0xf0, 0xfa, + 0xec, 0xfa, 0xec, 0xfa, 0xf2, 0xfa, 0xf1, 0xfa, 0xfb, 0xfa, 0xfa, 0xfa, + 0x05, 0xfb, 0x05, 0xfb, 0x1b, 0xfb, 0x19, 0xfb, 0x2c, 0xfb, 0x2c, 0xfb, + 0x48, 0xfb, 0x46, 0xfb, 0x61, 0xfb, 0x62, 0xfb, 0x7f, 0xfb, 0x7f, 0xfb, + 0xa1, 0xfb, 0xa0, 0xfb, 0xc0, 0xfb, 0xbf, 0xfb, 0xe4, 0xfb, 0xe3, 0xfb, + 0x03, 0xfc, 0x03, 0xfc, 0x27, 0xfc, 0x26, 0xfc, 0x43, 0xfc, 0x45, 0xfc, + 0x64, 0xfc, 0x62, 0xfc, 0x7f, 0xfc, 0x7d, 0xfc, 0x97, 0xfc, 0x96, 0xfc, + 0xaf, 0xfc, 0xae, 0xfc, 0xc3, 0xfc, 0xc1, 0xfc, 0xd2, 0xfc, 0xd1, 0xfc, + 0xe2, 0xfc, 0xe0, 0xfc, 0xeb, 0xfc, 0xeb, 0xfc, 0xf4, 0xfc, 0xf3, 0xfc, + 0xfa, 0xfc, 0xf9, 0xfc, 0xfb, 0xfc, 0xfa, 0xfc, 0xfe, 0xfc, 0xfd, 0xfc, + 0xfa, 0xfc, 0xfa, 0xfc, 0xfa, 0xfc, 0xf8, 0xfc, 0xf7, 0xfc, 0xf6, 0xfc, + 0xf2, 0xfc, 0xf1, 0xfc, 0xef, 0xfc, 0xee, 0xfc, 0xed, 0xfc, 0xec, 0xfc, + 0xeb, 0xfc, 0xe8, 0xfc, 0xed, 0xfc, 0xec, 0xfc, 0xec, 0xfc, 0xec, 0xfc, + 0xf4, 0xfc, 0xf2, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, 0x0a, 0xfd, 0x07, 0xfd, + 0x19, 0xfd, 0x19, 0xfd, 0x31, 0xfd, 0x2d, 0xfd, 0x48, 0xfd, 0x49, 0xfd, + 0x66, 0xfd, 0x64, 0xfd, 0x8b, 0xfd, 0x8b, 0xfd, 0xb3, 0xfd, 0xb1, 0xfd, + 0xe0, 0xfd, 0xde, 0xfd, 0x10, 0xfe, 0x0f, 0xfe, 0x46, 0xfe, 0x43, 0xfe, + 0x7f, 0xfe, 0x80, 0xfe, 0xba, 0xfe, 0xb9, 0xfe, 0xfa, 0xfe, 0xf9, 0xfe, + 0x3c, 0xff, 0x3b, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0xc6, 0xff, 0xc4, 0xff, + 0x07, 0x00, 0x07, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x92, 0x00, 0x92, 0x00, + 0xd6, 0x00, 0xd6, 0x00, 0x1a, 0x01, 0x18, 0x01, 0x55, 0x01, 0x55, 0x01, + 0x95, 0x01, 0x92, 0x01, 0xc8, 0x01, 0xca, 0x01, 0x02, 0x02, 0xfe, 0x01, + 0x31, 0x02, 0x32, 0x02, 0x5a, 0x02, 0x59, 0x02, 0x84, 0x02, 0x83, 0x02, + 0xa5, 0x02, 0xa5, 0x02, 0xc3, 0x02, 0xc1, 0x02, 0xdd, 0x02, 0xdc, 0x02, + 0xed, 0x02, 0xed, 0x02, 0x00, 0x03, 0xfe, 0x02, 0x08, 0x03, 0x08, 0x03, + 0x10, 0x03, 0x0f, 0x03, 0x14, 0x03, 0x11, 0x03, 0x13, 0x03, 0x13, 0x03, + 0x12, 0x03, 0x0e, 0x03, 0x0b, 0x03, 0x0b, 0x03, 0x05, 0x03, 0x04, 0x03, + 0xfe, 0x02, 0xfd, 0x02, 0xf8, 0x02, 0xf5, 0x02, 0xf0, 0x02, 0xef, 0x02, + 0xea, 0x02, 0xe7, 0x02, 0xe3, 0x02, 0xe3, 0x02, 0xe3, 0x02, 0xe0, 0x02, + 0xe1, 0x02, 0xe0, 0x02, 0xe2, 0x02, 0xe1, 0x02, 0xe7, 0x02, 0xe5, 0x02, + 0xee, 0x02, 0xed, 0x02, 0xf9, 0x02, 0xf7, 0x02, 0x06, 0x03, 0x06, 0x03, + 0x17, 0x03, 0x17, 0x03, 0x2d, 0x03, 0x2e, 0x03, 0x44, 0x03, 0x45, 0x03, + 0x5f, 0x03, 0x60, 0x03, 0x7f, 0x03, 0x7b, 0x03, 0x9c, 0x03, 0x9e, 0x03, + 0xc0, 0x03, 0xbe, 0x03, 0xe1, 0x03, 0xe2, 0x03, 0x06, 0x04, 0x06, 0x04, + 0x28, 0x04, 0x27, 0x04, 0x4c, 0x04, 0x4e, 0x04, 0x6f, 0x04, 0x6d, 0x04, + 0x8d, 0x04, 0x8e, 0x04, 0xac, 0x04, 0xaa, 0x04, 0xc6, 0x04, 0xc6, 0x04, + 0xdf, 0x04, 0xe0, 0x04, 0xf4, 0x04, 0xf3, 0x04, 0x04, 0x05, 0x03, 0x05, + 0x0e, 0x05, 0x0e, 0x05, 0x13, 0x05, 0x14, 0x05, 0x17, 0x05, 0x13, 0x05, + 0x0c, 0x05, 0x0f, 0x05, 0x08, 0x05, 0x03, 0x05, 0xf1, 0x04, 0xf4, 0x04, + 0xe0, 0x04, 0xdd, 0x04, 0xc1, 0x04, 0xc2, 0x04, 0xa2, 0x04, 0xa3, 0x04, + 0x7d, 0x04, 0x7c, 0x04, 0x52, 0x04, 0x54, 0x04, 0x26, 0x04, 0x24, 0x04, + 0xf2, 0x03, 0xf3, 0x03, 0xc0, 0x03, 0xbf, 0x03, 0x89, 0x03, 0x8a, 0x03, + 0x51, 0x03, 0x50, 0x03, 0x19, 0x03, 0x18, 0x03, 0xde, 0x02, 0xde, 0x02, + 0xa6, 0x02, 0xa6, 0x02, 0x6e, 0x02, 0x6c, 0x02, 0x36, 0x02, 0x34, 0x02, + 0x00, 0x02, 0x00, 0x02, 0xce, 0x01, 0xcc, 0x01, 0x9c, 0x01, 0x9c, 0x01, + 0x70, 0x01, 0x6f, 0x01, 0x45, 0x01, 0x44, 0x01, 0x20, 0x01, 0x1e, 0x01, + 0xfc, 0x00, 0xfb, 0x00, 0xdd, 0x00, 0xdb, 0x00, 0xc0, 0x00, 0xc1, 0x00, + 0xab, 0x00, 0xa8, 0x00, 0x93, 0x00, 0x94, 0x00, 0x83, 0x00, 0x81, 0x00, + 0x74, 0x00, 0x73, 0x00, 0x67, 0x00, 0x65, 0x00, 0x5b, 0x00, 0x5b, 0x00, + 0x53, 0x00, 0x4e, 0x00, 0x48, 0x00, 0x49, 0x00, 0x41, 0x00, 0x3f, 0x00, + 0x37, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x2c, 0x00, 0x20, 0x00, 0x21, 0x00, + 0x17, 0x00, 0x15, 0x00, 0x05, 0x00, 0x05, 0x00, 0xf6, 0xff, 0xf4, 0xff, + 0xde, 0xff, 0xde, 0xff, 0xca, 0xff, 0xc7, 0xff, 0xac, 0xff, 0xac, 0xff, + 0x91, 0xff, 0x8e, 0xff, 0x6d, 0xff, 0x6d, 0xff, 0x48, 0xff, 0x46, 0xff, + 0x1f, 0xff, 0x1f, 0xff, 0xf3, 0xfe, 0xf4, 0xfe, 0xc6, 0xfe, 0xc3, 0xfe, + 0x92, 0xfe, 0x94, 0xfe, 0x60, 0xfe, 0x5f, 0xfe, 0x29, 0xfe, 0x28, 0xfe, + 0xf2, 0xfd, 0xf3, 0xfd, 0xbd, 0xfd, 0xb9, 0xfd, 0x81, 0xfd, 0x82, 0xfd, + 0x4a, 0xfd, 0x49, 0xfd, 0x13, 0xfd, 0x12, 0xfd, 0xdb, 0xfc, 0xda, 0xfc, + 0xa9, 0xfc, 0xa8, 0xfc, 0x74, 0xfc, 0x72, 0xfc, 0x45, 0xfc, 0x45, 0xfc, + 0x17, 0xfc, 0x15, 0xfc, 0xef, 0xfb, 0xee, 0xfb, 0xc9, 0xfb, 0xc9, 0xfb, + 0xa9, 0xfb, 0xa7, 0xfb, 0x8c, 0xfb, 0x8c, 0xfb, 0x75, 0xfb, 0x72, 0xfb, + 0x62, 0xfb, 0x62, 0xfb, 0x52, 0xfb, 0x51, 0xfb, 0x49, 0xfb, 0x47, 0xfb, + 0x45, 0xfb, 0x45, 0xfb, 0x45, 0xfb, 0x44, 0xfb, 0x48, 0xfb, 0x48, 0xfb, + 0x50, 0xfb, 0x4e, 0xfb, 0x5b, 0xfb, 0x59, 0xfb, 0x68, 0xfb, 0x69, 0xfb, + 0x79, 0xfb, 0x76, 0xfb, 0x8c, 0xfb, 0x8c, 0xfb, 0xa2, 0xfb, 0xa0, 0xfb, + 0xb7, 0xfb, 0xb5, 0xfb, 0xce, 0xfb, 0xce, 0xfb, 0xe6, 0xfb, 0xe4, 0xfb, + 0xfc, 0xfb, 0xfc, 0xfb, 0x14, 0xfc, 0x13, 0xfc, 0x29, 0xfc, 0x27, 0xfc, + 0x3d, 0xfc, 0x3e, 0xfc, 0x51, 0xfc, 0x4f, 0xfc, 0x61, 0xfc, 0x63, 0xfc, + 0x74, 0xfc, 0x70, 0xfc, 0x7e, 0xfc, 0x7e, 0xfc, 0x8a, 0xfc, 0x89, 0xfc, + 0x92, 0xfc, 0x91, 0xfc, 0x98, 0xfc, 0x98, 0xfc, 0x9e, 0xfc, 0x9d, 0xfc, + 0xa2, 0xfc, 0xa1, 0xfc, 0xa1, 0xfc, 0xa1, 0xfc, 0xa5, 0xfc, 0xa5, 0xfc, + 0xa2, 0xfc, 0xa1, 0xfc, 0xa3, 0xfc, 0xa3, 0xfc, 0x9f, 0xfc, 0x9f, 0xfc, + 0x9e, 0xfc, 0x9e, 0xfc, 0x9e, 0xfc, 0x9d, 0xfc, 0x9d, 0xfc, 0x9c, 0xfc, + 0x9f, 0xfc, 0x9f, 0xfc, 0xa4, 0xfc, 0xa3, 0xfc, 0xa7, 0xfc, 0xa8, 0xfc, + 0xb4, 0xfc, 0xb1, 0xfc, 0xbb, 0xfc, 0xbc, 0xfc, 0xcc, 0xfc, 0xca, 0xfc, + 0xdc, 0xfc, 0xdc, 0xfc, 0xf1, 0xfc, 0xf1, 0xfc, 0x0a, 0xfd, 0x0a, 0xfd, + 0x26, 0xfd, 0x26, 0xfd, 0x47, 0xfd, 0x47, 0xfd, 0x6c, 0xfd, 0x68, 0xfd, + 0x91, 0xfd, 0x93, 0xfd, 0xbe, 0xfd, 0xbb, 0xfd, 0xe7, 0xfd, 0xea, 0xfd, + 0x1d, 0xfe, 0x19, 0xfe, 0x4b, 0xfe, 0x4e, 0xfe, 0x84, 0xfe, 0x82, 0xfe, + 0xb9, 0xfe, 0xb7, 0xfe, 0xf0, 0xfe, 0xf1, 0xfe, 0x2d, 0xff, 0x2a, 0xff, + 0x64, 0xff, 0x64, 0xff, 0xa3, 0xff, 0xa0, 0xff, 0xda, 0xff, 0xd8, 0xff, + 0x13, 0x00, 0x13, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x81, 0x00, 0x7e, 0x00, + 0xb5, 0x00, 0xb6, 0x00, 0xe9, 0x00, 0xe5, 0x00, 0x18, 0x01, 0x19, 0x01, + 0x43, 0x01, 0x42, 0x01, 0x72, 0x01, 0x70, 0x01, 0x96, 0x01, 0x96, 0x01, + 0xbc, 0x01, 0xbc, 0x01, 0xe0, 0x01, 0xde, 0x01, 0xfc, 0x01, 0xfc, 0x01, + 0x1b, 0x02, 0x1a, 0x02, 0x33, 0x02, 0x31, 0x02, 0x4a, 0x02, 0x4a, 0x02, + 0x60, 0x02, 0x5e, 0x02, 0x71, 0x02, 0x70, 0x02, 0x83, 0x02, 0x81, 0x02, + 0x91, 0x02, 0x8f, 0x02, 0x9d, 0x02, 0x9d, 0x02, 0xab, 0x02, 0xa9, 0x02, + 0xb6, 0x02, 0xb6, 0x02, 0xc2, 0x02, 0xc0, 0x02, 0xcd, 0x02, 0xcc, 0x02, + 0xd8, 0x02, 0xd6, 0x02, 0xe4, 0x02, 0xe3, 0x02, 0xf0, 0x02, 0xf0, 0x02, + 0xff, 0x02, 0xfc, 0x02, 0x0c, 0x03, 0x0b, 0x03, 0x1c, 0x03, 0x1b, 0x03, + 0x2b, 0x03, 0x2a, 0x03, 0x3e, 0x03, 0x3d, 0x03, 0x50, 0x03, 0x50, 0x03, + 0x65, 0x03, 0x62, 0x03, 0x79, 0x03, 0x7a, 0x03, 0x90, 0x03, 0x8b, 0x03, + 0xa5, 0x03, 0xa5, 0x03, 0xbd, 0x03, 0xbc, 0x03, 0xd4, 0x03, 0xd2, 0x03, + 0xec, 0x03, 0xec, 0x03, 0x04, 0x04, 0x01, 0x04, 0x19, 0x04, 0x19, 0x04, + 0x30, 0x04, 0x2f, 0x04, 0x47, 0x04, 0x44, 0x04, 0x57, 0x04, 0x58, 0x04, + 0x6c, 0x04, 0x69, 0x04, 0x79, 0x04, 0x78, 0x04, 0x87, 0x04, 0x87, 0x04, + 0x94, 0x04, 0x91, 0x04, 0x98, 0x04, 0x99, 0x04, 0xa3, 0x04, 0xa0, 0x04, + 0xa1, 0x04, 0xa0, 0x04, 0x9f, 0x04, 0xa2, 0x04, 0x9e, 0x04, 0x9c, 0x04, + 0x96, 0x04, 0x94, 0x04, 0x8b, 0x04, 0x8e, 0x04, 0x81, 0x04, 0x7a, 0x04, + 0x6c, 0x04, 0x6f, 0x04, 0x5c, 0x04, 0x5a, 0x04, 0x44, 0x04, 0x44, 0x04, + 0x2c, 0x04, 0x2c, 0x04, 0x13, 0x04, 0x11, 0x04, 0xf5, 0x03, 0xf4, 0x03, + 0xd6, 0x03, 0xd5, 0x03, 0xb6, 0x03, 0xb6, 0x03, 0x95, 0x03, 0x94, 0x03, + 0x73, 0x03, 0x74, 0x03, 0x52, 0x03, 0x50, 0x03, 0x2e, 0x03, 0x2e, 0x03, + 0x0d, 0x03, 0x0b, 0x03, 0xea, 0x02, 0xe9, 0x02, 0xc6, 0x02, 0xc6, 0x02, + 0xa8, 0x02, 0xa5, 0x02, 0x85, 0x02, 0x84, 0x02, 0x65, 0x02, 0x64, 0x02, + 0x48, 0x02, 0x46, 0x02, 0x28, 0x02, 0x28, 0x02, 0x0e, 0x02, 0x0c, 0x02, + 0xf2, 0x01, 0xf0, 0x01, 0xd7, 0x01, 0xd7, 0x01, 0xbf, 0x01, 0xbe, 0x01, + 0xa7, 0x01, 0xa5, 0x01, 0x8e, 0x01, 0x8c, 0x01, 0x78, 0x01, 0x77, 0x01, + 0x61, 0x01, 0x60, 0x01, 0x49, 0x01, 0x47, 0x01, 0x36, 0x01, 0x35, 0x01, + 0x1d, 0x01, 0x1a, 0x01, 0x06, 0x01, 0x05, 0x01, 0xf0, 0x00, 0xef, 0x00, + 0xd5, 0x00, 0xd4, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xa1, 0x00, 0x9f, 0x00, + 0x86, 0x00, 0x87, 0x00, 0x6a, 0x00, 0x68, 0x00, 0x4a, 0x00, 0x4a, 0x00, + 0x2a, 0x00, 0x29, 0x00, 0x07, 0x00, 0x06, 0x00, 0xe3, 0xff, 0xe3, 0xff, + 0xbd, 0xff, 0xbc, 0xff, 0x96, 0xff, 0x94, 0xff, 0x6d, 0xff, 0x6c, 0xff, + 0x42, 0xff, 0x41, 0xff, 0x16, 0xff, 0x14, 0xff, 0xe8, 0xfe, 0xe8, 0xfe, + 0xbb, 0xfe, 0xb9, 0xfe, 0x8d, 0xfe, 0x8c, 0xfe, 0x5d, 0xfe, 0x5c, 0xfe, + 0x2e, 0xfe, 0x2e, 0xfe, 0x01, 0xfe, 0xff, 0xfd, 0xcf, 0xfd, 0xce, 0xfd, + 0xa3, 0xfd, 0xa2, 0xfd, 0x72, 0xfd, 0x72, 0xfd, 0x4a, 0xfd, 0x48, 0xfd, + 0x1d, 0xfd, 0x1d, 0xfd, 0xf4, 0xfc, 0xf3, 0xfc, 0xce, 0xfc, 0xcd, 0xfc, + 0xa7, 0xfc, 0xa6, 0xfc, 0x86, 0xfc, 0x84, 0xfc, 0x64, 0xfc, 0x66, 0xfc, + 0x45, 0xfc, 0x45, 0xfc, 0x30, 0xfc, 0x2b, 0xfc, 0x10, 0xfc, 0x14, 0xfc, + 0x02, 0xfc, 0xfc, 0xfb, 0xe8, 0xfb, 0xeb, 0xfb, 0xdd, 0xfb, 0xd9, 0xfb, + 0xcc, 0xfb, 0xcd, 0xfb, 0xc3, 0xfb, 0xc1, 0xfb, 0xb9, 0xfb, 0xb9, 0xfb, + 0xb2, 0xfb, 0xb1, 0xfb, 0xae, 0xfb, 0xad, 0xfb, 0xac, 0xfb, 0xab, 0xfb, + 0xac, 0xfb, 0xaa, 0xfb, 0xab, 0xfb, 0xac, 0xfb, 0xaf, 0xfb, 0xac, 0xfb, + 0xb2, 0xfb, 0xb1, 0xfb, 0xb8, 0xfb, 0xb7, 0xfb, 0xbf, 0xfb, 0xbc, 0xfb, + 0xc3, 0xfb, 0xc2, 0xfb, 0xca, 0xfb, 0xc9, 0xfb, 0xd2, 0xfb, 0xd1, 0xfb, + 0xd9, 0xfb, 0xd8, 0xfb, 0xe1, 0xfb, 0xde, 0xfb, 0xe8, 0xfb, 0xe7, 0xfb, + 0xf0, 0xfb, 0xed, 0xfb, 0xf6, 0xfb, 0xf4, 0xfb, 0xfd, 0xfb, 0xfc, 0xfb, + 0x03, 0xfc, 0x04, 0xfc, 0x0b, 0xfc, 0x0a, 0xfc, 0x13, 0xfc, 0x11, 0xfc, + 0x17, 0xfc, 0x16, 0xfc, 0x1e, 0xfc, 0x1e, 0xfc, 0x27, 0xfc, 0x25, 0xfc, + 0x2e, 0xfc, 0x2e, 0xfc, 0x38, 0xfc, 0x34, 0xfc, 0x3f, 0xfc, 0x3d, 0xfc, + 0x49, 0xfc, 0x48, 0xfc, 0x54, 0xfc, 0x52, 0xfc, 0x60, 0xfc, 0x5f, 0xfc, + 0x6c, 0xfc, 0x6b, 0xfc, 0x7b, 0xfc, 0x7a, 0xfc, 0x8a, 0xfc, 0x8a, 0xfc, + 0x9e, 0xfc, 0x9c, 0xfc, 0xb0, 0xfc, 0xb0, 0xfc, 0xc7, 0xfc, 0xc6, 0xfc, + 0xde, 0xfc, 0xdd, 0xfc, 0xf4, 0xfc, 0xf5, 0xfc, 0x12, 0xfd, 0x10, 0xfd, + 0x2d, 0xfd, 0x2d, 0xfd, 0x4b, 0xfd, 0x49, 0xfd, 0x6b, 0xfd, 0x6b, 0xfd, + 0x8c, 0xfd, 0x8c, 0xfd, 0xb1, 0xfd, 0xb1, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, + 0xfb, 0xfd, 0xfb, 0xfd, 0x23, 0xfe, 0x24, 0xfe, 0x49, 0xfe, 0x4a, 0xfe, + 0x75, 0xfe, 0x74, 0xfe, 0x9e, 0xfe, 0x9f, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, + 0xf4, 0xfe, 0xf2, 0xfe, 0x1c, 0xff, 0x1c, 0xff, 0x47, 0xff, 0x45, 0xff, + 0x71, 0xff, 0x6f, 0xff, 0x99, 0xff, 0x9a, 0xff, 0xc5, 0xff, 0xc2, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0x15, 0x00, 0x13, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x5f, 0x00, 0x5e, 0x00, 0x84, 0x00, 0x82, 0x00, 0xa6, 0x00, 0xa6, 0x00, + 0xca, 0x00, 0xc8, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0x0a, 0x01, 0x09, 0x01, + 0x29, 0x01, 0x29, 0x01, 0x48, 0x01, 0x45, 0x01, 0x65, 0x01, 0x65, 0x01, + 0x83, 0x01, 0x81, 0x01, 0x9d, 0x01, 0x9c, 0x01, 0xbb, 0x01, 0xb8, 0x01, + 0xd4, 0x01, 0xd4, 0x01, 0xf0, 0x01, 0xed, 0x01, 0x0a, 0x02, 0x0a, 0x02, + 0x24, 0x02, 0x23, 0x02, 0x3e, 0x02, 0x3d, 0x02, 0x59, 0x02, 0x5a, 0x02, + 0x76, 0x02, 0x71, 0x02, 0x8f, 0x02, 0x8f, 0x02, 0xab, 0x02, 0xa8, 0x02, + 0xc5, 0x02, 0xc4, 0x02, 0xe0, 0x02, 0xdf, 0x02, 0xfd, 0x02, 0xfa, 0x02, + 0x17, 0x03, 0x16, 0x03, 0x34, 0x03, 0x32, 0x03, 0x50, 0x03, 0x4e, 0x03, + 0x6b, 0x03, 0x69, 0x03, 0x88, 0x03, 0x85, 0x03, 0xa0, 0x03, 0x9f, 0x03, + 0xbe, 0x03, 0xbc, 0x03, 0xd6, 0x03, 0xd5, 0x03, 0xf1, 0x03, 0xf0, 0x03, + 0x0a, 0x04, 0x06, 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x37, 0x04, 0x35, 0x04, + 0x4a, 0x04, 0x4b, 0x04, 0x5e, 0x04, 0x5b, 0x04, 0x70, 0x04, 0x70, 0x04, + 0x81, 0x04, 0x7e, 0x04, 0x8e, 0x04, 0x8e, 0x04, 0x9b, 0x04, 0x99, 0x04, + 0xa4, 0x04, 0xa3, 0x04, 0xab, 0x04, 0xa9, 0x04, 0xb0, 0x04, 0xad, 0x04, + 0xb2, 0x04, 0xb2, 0x04, 0xb3, 0x04, 0xb0, 0x04, 0xaf, 0x04, 0xad, 0x04, + 0xab, 0x04, 0xa9, 0x04, 0xa6, 0x04, 0xa3, 0x04, 0x99, 0x04, 0x99, 0x04, + 0x92, 0x04, 0x8f, 0x04, 0x7e, 0x04, 0x7e, 0x04, 0x72, 0x04, 0x70, 0x04, + 0x5f, 0x04, 0x5c, 0x04, 0x4a, 0x04, 0x4a, 0x04, 0x38, 0x04, 0x34, 0x04, + 0x1e, 0x04, 0x20, 0x04, 0x07, 0x04, 0x04, 0x04, 0xee, 0x03, 0xef, 0x03, + 0xd5, 0x03, 0xd3, 0x03, 0xb8, 0x03, 0xb8, 0x03, 0x9f, 0x03, 0x9d, 0x03, + 0x80, 0x03, 0x7e, 0x03, 0x64, 0x03, 0x65, 0x03, 0x48, 0x03, 0x47, 0x03, + 0x2b, 0x03, 0x29, 0x03, 0x0e, 0x03, 0x0f, 0x03, 0xf0, 0x02, 0xee, 0x02, + 0xd5, 0x02, 0xd4, 0x02, 0xb5, 0x02, 0xb5, 0x02, 0x9a, 0x02, 0x99, 0x02, + 0x7f, 0x02, 0x7d, 0x02, 0x5f, 0x02, 0x5f, 0x02, 0x47, 0x02, 0x46, 0x02, + 0x29, 0x02, 0x28, 0x02, 0x0d, 0x02, 0x0c, 0x02, 0xf3, 0x01, 0xf3, 0x01, + 0xd4, 0x01, 0xd2, 0x01, 0xbb, 0x01, 0xbb, 0x01, 0x9d, 0x01, 0x9c, 0x01, + 0x7f, 0x01, 0x7e, 0x01, 0x65, 0x01, 0x64, 0x01, 0x44, 0x01, 0x44, 0x01, + 0x2a, 0x01, 0x27, 0x01, 0x08, 0x01, 0x0a, 0x01, 0xeb, 0x00, 0xe8, 0x00, + 0xcb, 0x00, 0xcc, 0x00, 0xaa, 0x00, 0xa9, 0x00, 0x8b, 0x00, 0x8a, 0x00, + 0x68, 0x00, 0x67, 0x00, 0x44, 0x00, 0x44, 0x00, 0x23, 0x00, 0x20, 0x00, + 0xfc, 0xff, 0xfc, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xb2, 0xff, 0xb1, 0xff, + 0x8d, 0xff, 0x8c, 0xff, 0x67, 0xff, 0x67, 0xff, 0x40, 0xff, 0x3e, 0xff, + 0x1a, 0xff, 0x1a, 0xff, 0xf1, 0xfe, 0xef, 0xfe, 0xca, 0xfe, 0xcb, 0xfe, + 0xa2, 0xfe, 0xa1, 0xfe, 0x7d, 0xfe, 0x7b, 0xfe, 0x53, 0xfe, 0x52, 0xfe, + 0x2e, 0xfe, 0x2d, 0xfe, 0x07, 0xfe, 0x06, 0xfe, 0xe2, 0xfd, 0xe1, 0xfd, + 0xbe, 0xfd, 0xbd, 0xfd, 0x99, 0xfd, 0x97, 0xfd, 0x77, 0xfd, 0x79, 0xfd, + 0x55, 0xfd, 0x53, 0xfd, 0x34, 0xfd, 0x35, 0xfd, 0x15, 0xfd, 0x14, 0xfd, + 0xf7, 0xfc, 0xf6, 0xfc, 0xd9, 0xfc, 0xdb, 0xfc, 0xbe, 0xfc, 0xbe, 0xfc, + 0xa5, 0xfc, 0xa5, 0xfc, 0x8e, 0xfc, 0x8e, 0xfc, 0x76, 0xfc, 0x76, 0xfc, + 0x62, 0xfc, 0x62, 0xfc, 0x4c, 0xfc, 0x4b, 0xfc, 0x3c, 0xfc, 0x3c, 0xfc, + 0x2a, 0xfc, 0x28, 0xfc, 0x19, 0xfc, 0x18, 0xfc, 0x0b, 0xfc, 0x09, 0xfc, + 0xfd, 0xfb, 0xfc, 0xfb, 0xf2, 0xfb, 0xf0, 0xfb, 0xe6, 0xfb, 0xe4, 0xfb, + 0xdc, 0xfb, 0xde, 0xfb, 0xd3, 0xfb, 0xd0, 0xfb, 0xc9, 0xfb, 0xc9, 0xfb, + 0xc2, 0xfb, 0xc2, 0xfb, 0xba, 0xfb, 0xb9, 0xfb, 0xb6, 0xfb, 0xb6, 0xfb, + 0xae, 0xfb, 0xad, 0xfb, 0xab, 0xfb, 0xab, 0xfb, 0xa8, 0xfb, 0xa7, 0xfb, + 0xa5, 0xfb, 0xa3, 0xfb, 0xa4, 0xfb, 0xa4, 0xfb, 0xa0, 0xfb, 0x9f, 0xfb, + 0xa2, 0xfb, 0xa4, 0xfb, 0xa1, 0xfb, 0xa0, 0xfb, 0xa2, 0xfb, 0xa2, 0xfb, + 0xa7, 0xfb, 0xa8, 0xfb, 0xa9, 0xfb, 0xa6, 0xfb, 0xaf, 0xfb, 0xb0, 0xfb, + 0xb3, 0xfb, 0xb2, 0xfb, 0xba, 0xfb, 0xbb, 0xfb, 0xc3, 0xfb, 0xc3, 0xfb, + 0xcc, 0xfb, 0xcd, 0xfb, 0xda, 0xfb, 0xda, 0xfb, 0xe4, 0xfb, 0xe3, 0xfb, + 0xf5, 0xfb, 0xf3, 0xfb, 0x04, 0xfc, 0x04, 0xfc, 0x15, 0xfc, 0x15, 0xfc, + 0x2c, 0xfc, 0x2a, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x57, 0xfc, 0x56, 0xfc, + 0x70, 0xfc, 0x6e, 0xfc, 0x8b, 0xfc, 0x8a, 0xfc, 0xa6, 0xfc, 0xa5, 0xfc, + 0xc3, 0xfc, 0xc1, 0xfc, 0xe1, 0xfc, 0xe1, 0xfc, 0x01, 0xfd, 0x00, 0xfd, + 0x24, 0xfd, 0x23, 0xfd, 0x44, 0xfd, 0x44, 0xfd, 0x6c, 0xfd, 0x6a, 0xfd, + 0x8d, 0xfd, 0x8e, 0xfd, 0xb3, 0xfd, 0xb3, 0xfd, 0xdb, 0xfd, 0xda, 0xfd, + 0x00, 0xfe, 0x00, 0xfe, 0x29, 0xfe, 0x29, 0xfe, 0x50, 0xfe, 0x4f, 0xfe, + 0x78, 0xfe, 0x79, 0xfe, 0xa1, 0xfe, 0x9f, 0xfe, 0xc9, 0xfe, 0xca, 0xfe, + 0xf1, 0xfe, 0xf1, 0xfe, 0x19, 0xff, 0x18, 0xff, 0x40, 0xff, 0x40, 0xff, + 0x66, 0xff, 0x66, 0xff, 0x8e, 0xff, 0x8d, 0xff, 0xb1, 0xff, 0xb0, 0xff, + 0xd9, 0xff, 0xd8, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0x20, 0x00, 0x1f, 0x00, + 0x42, 0x00, 0x42, 0x00, 0x65, 0x00, 0x65, 0x00, 0x87, 0x00, 0x88, 0x00, + 0xa9, 0x00, 0xa7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xea, 0x00, 0xe7, 0x00, + 0x07, 0x01, 0x08, 0x01, 0x27, 0x01, 0x26, 0x01, 0x44, 0x01, 0x44, 0x01, + 0x63, 0x01, 0x63, 0x01, 0x82, 0x01, 0x81, 0x01, 0x9e, 0x01, 0x9e, 0x01, + 0xbc, 0x01, 0xbc, 0x01, 0xd8, 0x01, 0xd6, 0x01, 0xf6, 0x01, 0xf5, 0x01, + 0x13, 0x02, 0x14, 0x02, 0x30, 0x02, 0x2e, 0x02, 0x4d, 0x02, 0x4d, 0x02, + 0x6a, 0x02, 0x68, 0x02, 0x85, 0x02, 0x86, 0x02, 0xa4, 0x02, 0xa2, 0x02, + 0xc0, 0x02, 0xc0, 0x02, 0xdd, 0x02, 0xdd, 0x02, 0xfa, 0x02, 0xf9, 0x02, + 0x14, 0x03, 0x15, 0x03, 0x33, 0x03, 0x31, 0x03, 0x4d, 0x03, 0x4e, 0x03, + 0x68, 0x03, 0x67, 0x03, 0x83, 0x03, 0x81, 0x03, 0x9c, 0x03, 0x9c, 0x03, + 0xb6, 0x03, 0xb5, 0x03, 0xd0, 0x03, 0xce, 0x03, 0xe5, 0x03, 0xe6, 0x03, + 0xff, 0x03, 0xfc, 0x03, 0x10, 0x04, 0x10, 0x04, 0x27, 0x04, 0x26, 0x04, + 0x39, 0x04, 0x36, 0x04, 0x4a, 0x04, 0x4a, 0x04, 0x5a, 0x04, 0x59, 0x04, + 0x67, 0x04, 0x66, 0x04, 0x73, 0x04, 0x72, 0x04, 0x7e, 0x04, 0x7d, 0x04, + 0x86, 0x04, 0x86, 0x04, 0x8e, 0x04, 0x8d, 0x04, 0x92, 0x04, 0x91, 0x04, + 0x95, 0x04, 0x95, 0x04, 0x97, 0x04, 0x96, 0x04, 0x96, 0x04, 0x95, 0x04, + 0x94, 0x04, 0x94, 0x04, 0x90, 0x04, 0x8e, 0x04, 0x89, 0x04, 0x8a, 0x04, + 0x81, 0x04, 0x7f, 0x04, 0x76, 0x04, 0x77, 0x04, 0x6d, 0x04, 0x6c, 0x04, + 0x5f, 0x04, 0x5f, 0x04, 0x51, 0x04, 0x50, 0x04, 0x40, 0x04, 0x40, 0x04, + 0x31, 0x04, 0x31, 0x04, 0x21, 0x04, 0x1f, 0x04, 0x0b, 0x04, 0x0d, 0x04, + 0xf9, 0x03, 0xf9, 0x03, 0xe2, 0x03, 0xe0, 0x03, 0xcc, 0x03, 0xcd, 0x03, + 0xb5, 0x03, 0xb4, 0x03, 0x9e, 0x03, 0x9e, 0x03, 0x86, 0x03, 0x86, 0x03, + 0x6c, 0x03, 0x6b, 0x03, 0x54, 0x03, 0x53, 0x03, 0x38, 0x03, 0x37, 0x03, + 0x1e, 0x03, 0x1e, 0x03, 0x00, 0x03, 0x01, 0x03, 0xe5, 0x02, 0xe4, 0x02, + 0xc9, 0x02, 0xc9, 0x02, 0xab, 0x02, 0xa9, 0x02, 0x8f, 0x02, 0x8e, 0x02, + 0x6e, 0x02, 0x6d, 0x02, 0x50, 0x02, 0x51, 0x02, 0x2f, 0x02, 0x2e, 0x02, + 0x0d, 0x02, 0x0e, 0x02, 0xed, 0x01, 0xef, 0x01, 0xc9, 0x01, 0xc9, 0x01, + 0xa9, 0x01, 0xa9, 0x01, 0x86, 0x01, 0x86, 0x01, 0x60, 0x01, 0x60, 0x01, + 0x3c, 0x01, 0x3d, 0x01, 0x16, 0x01, 0x15, 0x01, 0xf2, 0x00, 0xf3, 0x00, + 0xcb, 0x00, 0xca, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x7b, 0x00, 0x7c, 0x00, + 0x55, 0x00, 0x54, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xdc, 0xff, 0xdc, 0xff, 0xb3, 0xff, 0xb4, 0xff, 0x8b, 0xff, 0x8a, 0xff, + 0x64, 0xff, 0x63, 0xff, 0x37, 0xff, 0x38, 0xff, 0x13, 0xff, 0x14, 0xff, + 0xec, 0xfe, 0xeb, 0xfe, 0xc2, 0xfe, 0xc4, 0xfe, 0xa0, 0xfe, 0x9f, 0xfe, + 0x78, 0xfe, 0x79, 0xfe, 0x55, 0xfe, 0x53, 0xfe, 0x32, 0xfe, 0x31, 0xfe, + 0x0b, 0xfe, 0x0e, 0xfe, 0xef, 0xfd, 0xee, 0xfd, 0xc9, 0xfd, 0xca, 0xfd, + 0xab, 0xfd, 0xaa, 0xfd, 0x8c, 0xfd, 0x8e, 0xfd, 0x6f, 0xfd, 0x6e, 0xfd, + 0x53, 0xfd, 0x54, 0xfd, 0x38, 0xfd, 0x38, 0xfd, 0x20, 0xfd, 0x1f, 0xfd, + 0x07, 0xfd, 0x06, 0xfd, 0xef, 0xfc, 0xef, 0xfc, 0xda, 0xfc, 0xd9, 0xfc, + 0xc5, 0xfc, 0xc6, 0xfc, 0xb1, 0xfc, 0xb1, 0xfc, 0xa0, 0xfc, 0x9f, 0xfc, + 0x8c, 0xfc, 0x8d, 0xfc, 0x7d, 0xfc, 0x7b, 0xfc, 0x6d, 0xfc, 0x6c, 0xfc, + 0x5f, 0xfc, 0x5f, 0xfc, 0x52, 0xfc, 0x51, 0xfc, 0x44, 0xfc, 0x44, 0xfc, + 0x38, 0xfc, 0x38, 0xfc, 0x2c, 0xfc, 0x2d, 0xfc, 0x21, 0xfc, 0x22, 0xfc, + 0x18, 0xfc, 0x17, 0xfc, 0x0d, 0xfc, 0x0e, 0xfc, 0x03, 0xfc, 0x03, 0xfc, + 0xfb, 0xfb, 0xfc, 0xfb, 0xf3, 0xfb, 0xf0, 0xfb, 0xeb, 0xfb, 0xed, 0xfb, + 0xe5, 0xfb, 0xe3, 0xfb, 0xdb, 0xfb, 0xdd, 0xfb, 0xd8, 0xfb, 0xd6, 0xfb, + 0xd1, 0xfb, 0xd1, 0xfb, 0xcd, 0xfb, 0xcc, 0xfb, 0xca, 0xfb, 0xc9, 0xfb, + 0xc4, 0xfb, 0xc5, 0xfb, 0xc4, 0xfb, 0xc4, 0xfb, 0xc2, 0xfb, 0xc2, 0xfb, + 0xc3, 0xfb, 0xc2, 0xfb, 0xc3, 0xfb, 0xc2, 0xfb, 0xc6, 0xfb, 0xc5, 0xfb, + 0xc8, 0xfb, 0xc9, 0xfb, 0xce, 0xfb, 0xcd, 0xfb, 0xd4, 0xfb, 0xd5, 0xfb, + 0xdc, 0xfb, 0xda, 0xfb, 0xe3, 0xfb, 0xe4, 0xfb, 0xef, 0xfb, 0xf1, 0xfb, + 0xfb, 0xfb, 0xfb, 0xfb, 0x09, 0xfc, 0x0a, 0xfc, 0x1a, 0xfc, 0x19, 0xfc, + 0x2a, 0xfc, 0x2a, 0xfc, 0x3f, 0xfc, 0x3d, 0xfc, 0x51, 0xfc, 0x53, 0xfc, + 0x69, 0xfc, 0x67, 0xfc, 0x7e, 0xfc, 0x81, 0xfc, 0x9b, 0xfc, 0x9a, 0xfc, + 0xb4, 0xfc, 0xb6, 0xfc, 0xd2, 0xfc, 0xd1, 0xfc, 0xee, 0xfc, 0xef, 0xfc, + 0x0f, 0xfd, 0x0d, 0xfd, 0x2d, 0xfd, 0x2f, 0xfd, 0x50, 0xfd, 0x4f, 0xfd, + 0x71, 0xfd, 0x73, 0xfd, 0x94, 0xfd, 0x92, 0xfd, 0xb8, 0xfd, 0xb8, 0xfd, + 0xda, 0xfd, 0xdb, 0xfd, 0x02, 0xfe, 0x00, 0xfe, 0x26, 0xfe, 0x28, 0xfe, + 0x4c, 0xfe, 0x4b, 0xfe, 0x71, 0xfe, 0x73, 0xfe, 0x99, 0xfe, 0x97, 0xfe, + 0xbf, 0xfe, 0xc0, 0xfe, 0xe7, 0xfe, 0xe6, 0xfe, 0x0d, 0xff, 0x0d, 0xff, + 0x34, 0xff, 0x33, 0xff, 0x58, 0xff, 0x5a, 0xff, 0x82, 0xff, 0x80, 0xff, + 0xa4, 0xff, 0xa5, 0xff, 0xcd, 0xff, 0xcb, 0xff, 0xf0, 0xff, 0xf1, 0xff, + 0x16, 0x00, 0x16, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0x85, 0x00, 0x85, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0xcc, 0x00, 0xcd, 0x00, + 0xef, 0x00, 0xef, 0x00, 0x10, 0x01, 0x11, 0x01, 0x37, 0x01, 0x36, 0x01, + 0x54, 0x01, 0x56, 0x01, 0x7b, 0x01, 0x7b, 0x01, 0x9b, 0x01, 0x9a, 0x01, + 0xbb, 0x01, 0xbf, 0x01, 0xe0, 0x01, 0xde, 0x01, 0xfd, 0x01, 0xfe, 0x01, + 0x21, 0x02, 0x21, 0x02, 0x3e, 0x02, 0x40, 0x02, 0x61, 0x02, 0x60, 0x02, + 0x7f, 0x02, 0x80, 0x02, 0x9f, 0x02, 0x9e, 0x02, 0xbe, 0x02, 0xbd, 0x02, + 0xda, 0x02, 0xdc, 0x02, 0xf9, 0x02, 0xf8, 0x02, 0x13, 0x03, 0x14, 0x03, + 0x30, 0x03, 0x30, 0x03, 0x4e, 0x03, 0x4c, 0x03, 0x64, 0x03, 0x65, 0x03, + 0x81, 0x03, 0x81, 0x03, 0x96, 0x03, 0x97, 0x03, 0xb0, 0x03, 0xb0, 0x03, + 0xc5, 0x03, 0xc6, 0x03, 0xd8, 0x03, 0xd8, 0x03, 0xee, 0x03, 0xed, 0x03, + 0xfe, 0x03, 0xfe, 0x03, 0x0e, 0x04, 0x0e, 0x04, 0x1d, 0x04, 0x1f, 0x04, + 0x29, 0x04, 0x28, 0x04, 0x38, 0x04, 0x39, 0x04, 0x40, 0x04, 0x3f, 0x04, + 0x4b, 0x04, 0x4b, 0x04, 0x4f, 0x04, 0x51, 0x04, 0x57, 0x04, 0x56, 0x04, + 0x5a, 0x04, 0x5a, 0x04, 0x5c, 0x04, 0x5c, 0x04, 0x60, 0x04, 0x5f, 0x04, + 0x5d, 0x04, 0x5f, 0x04, 0x5f, 0x04, 0x5b, 0x04, 0x59, 0x04, 0x5c, 0x04, + 0x54, 0x04, 0x54, 0x04, 0x52, 0x04, 0x50, 0x04, 0x47, 0x04, 0x48, 0x04, + 0x44, 0x04, 0x41, 0x04, 0x37, 0x04, 0x37, 0x04, 0x2e, 0x04, 0x2e, 0x04, + 0x22, 0x04, 0x22, 0x04, 0x17, 0x04, 0x17, 0x04, 0x09, 0x04, 0x08, 0x04, + 0xfc, 0x03, 0xfc, 0x03, 0xed, 0x03, 0xed, 0x03, 0xde, 0x03, 0xdf, 0x03, + 0xce, 0x03, 0xce, 0x03, 0xbe, 0x03, 0xbe, 0x03, 0xac, 0x03, 0xad, 0x03, + 0x9a, 0x03, 0x9a, 0x03, 0x87, 0x03, 0x88, 0x03, 0x76, 0x03, 0x75, 0x03, + 0x61, 0x03, 0x62, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x37, 0x03, 0x37, 0x03, + 0x21, 0x03, 0x22, 0x03, 0x0a, 0x03, 0x0a, 0x03, 0xf3, 0x02, 0xf5, 0x02, + 0xda, 0x02, 0xda, 0x02, 0xc0, 0x02, 0xc2, 0x02, 0xa7, 0x02, 0xa6, 0x02, + 0x8a, 0x02, 0x8d, 0x02, 0x70, 0x02, 0x6f, 0x02, 0x51, 0x02, 0x53, 0x02, + 0x35, 0x02, 0x35, 0x02, 0x15, 0x02, 0x15, 0x02, 0xf6, 0x01, 0xf7, 0x01, + 0xd4, 0x01, 0xd6, 0x01, 0xaf, 0x01, 0xb1, 0x01, 0x91, 0x01, 0x90, 0x01, + 0x6a, 0x01, 0x6c, 0x01, 0x46, 0x01, 0x47, 0x01, 0x1e, 0x01, 0x1e, 0x01, + 0xfa, 0x00, 0xfb, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xa9, 0x00, 0xaa, 0x00, + 0x7f, 0x00, 0x7f, 0x00, 0x59, 0x00, 0x59, 0x00, 0x2e, 0x00, 0x30, 0x00, + 0x03, 0x00, 0x04, 0x00, 0xdc, 0xff, 0xdc, 0xff, 0xb0, 0xff, 0xb0, 0xff, + 0x88, 0xff, 0x88, 0xff, 0x5d, 0xff, 0x5b, 0xff, 0x32, 0xff, 0x34, 0xff, + 0x0a, 0xff, 0x0a, 0xff, 0xe3, 0xfe, 0xe3, 0xfe, 0xb9, 0xfe, 0xb8, 0xfe, + 0x93, 0xfe, 0x94, 0xfe, 0x6c, 0xfe, 0x6d, 0xfe, 0x46, 0xfe, 0x46, 0xfe, + 0x22, 0xfe, 0x23, 0xfe, 0xfd, 0xfd, 0xfd, 0xfd, 0xdd, 0xfd, 0xdc, 0xfd, + 0xba, 0xfd, 0xbb, 0xfd, 0x9a, 0xfd, 0x9a, 0xfd, 0x78, 0xfd, 0x79, 0xfd, + 0x5d, 0xfd, 0x5d, 0xfd, 0x42, 0xfd, 0x40, 0xfd, 0x23, 0xfd, 0x25, 0xfd, + 0x0c, 0xfd, 0x0c, 0xfd, 0xf1, 0xfc, 0xf0, 0xfc, 0xd9, 0xfc, 0xdb, 0xfc, + 0xc4, 0xfc, 0xc3, 0xfc, 0xad, 0xfc, 0xad, 0xfc, 0x9c, 0xfc, 0x9b, 0xfc, + 0x84, 0xfc, 0x85, 0xfc, 0x74, 0xfc, 0x75, 0xfc, 0x63, 0xfc, 0x63, 0xfc, + 0x51, 0xfc, 0x51, 0xfc, 0x45, 0xfc, 0x45, 0xfc, 0x34, 0xfc, 0x33, 0xfc, + 0x27, 0xfc, 0x26, 0xfc, 0x1a, 0xfc, 0x1c, 0xfc, 0x0e, 0xfc, 0x0c, 0xfc, + 0x04, 0xfc, 0x05, 0xfc, 0xf8, 0xfb, 0xf9, 0xfb, 0xf1, 0xfb, 0xf1, 0xfb, + 0xe8, 0xfb, 0xe6, 0xfb, 0xe1, 0xfb, 0xe1, 0xfb, 0xd8, 0xfb, 0xd9, 0xfb, + 0xd4, 0xfb, 0xd3, 0xfb, 0xcc, 0xfb, 0xcf, 0xfb, 0xc8, 0xfb, 0xc9, 0xfb, + 0xc5, 0xfb, 0xc6, 0xfb, 0xc3, 0xfb, 0xc1, 0xfb, 0xc2, 0xfb, 0xc4, 0xfb, + 0xc2, 0xfb, 0xc0, 0xfb, 0xc1, 0xfb, 0xc2, 0xfb, 0xc3, 0xfb, 0xc3, 0xfb, + 0xc5, 0xfb, 0xc6, 0xfb, 0xcd, 0xfb, 0xcc, 0xfb, 0xcf, 0xfb, 0xd0, 0xfb, + 0xd7, 0xfb, 0xd6, 0xfb, 0xde, 0xfb, 0xde, 0xfb, 0xe8, 0xfb, 0xe9, 0xfb, + 0xf3, 0xfb, 0xf2, 0xfb, 0xfe, 0xfb, 0x00, 0xfc, 0x0c, 0xfc, 0x0b, 0xfc, + 0x19, 0xfc, 0x1b, 0xfc, 0x2a, 0xfc, 0x2a, 0xfc, 0x3a, 0xfc, 0x3b, 0xfc, + 0x4e, 0xfc, 0x4d, 0xfc, 0x61, 0xfc, 0x62, 0xfc, 0x76, 0xfc, 0x76, 0xfc, + 0x8d, 0xfc, 0x8c, 0xfc, 0xa1, 0xfc, 0xa5, 0xfc, 0xbc, 0xfc, 0xbb, 0xfc, + 0xd4, 0xfc, 0xd5, 0xfc, 0xef, 0xfc, 0xef, 0xfc, 0x0a, 0xfd, 0x0a, 0xfd, + 0x26, 0xfd, 0x26, 0xfd, 0x44, 0xfd, 0x46, 0xfd, 0x5e, 0xfd, 0x5d, 0xfd, + 0x81, 0xfd, 0x80, 0xfd, 0x9d, 0xfd, 0x9d, 0xfd, 0xbc, 0xfd, 0xbc, 0xfd, + 0xde, 0xfd, 0xdd, 0xfd, 0xfa, 0xfd, 0xf9, 0xfd, 0x1d, 0xfe, 0x20, 0xfe, + 0x3c, 0xfe, 0x3b, 0xfe, 0x5e, 0xfe, 0x5e, 0xfe, 0x80, 0xfe, 0x80, 0xfe, + 0xa0, 0xfe, 0x9e, 0xfe, 0xc3, 0xfe, 0xc5, 0xfe, 0xe4, 0xfe, 0xe2, 0xfe, + 0x06, 0xff, 0x08, 0xff, 0x2a, 0xff, 0x28, 0xff, 0x49, 0xff, 0x4b, 0xff, + 0x71, 0xff, 0x6f, 0xff, 0x8f, 0xff, 0x90, 0xff, 0xb7, 0xff, 0xb6, 0xff, + 0xd7, 0xff, 0xd6, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0x1e, 0x00, 0x1e, 0x00, + 0x42, 0x00, 0x43, 0x00, 0x68, 0x00, 0x67, 0x00, 0x8a, 0x00, 0x8a, 0x00, + 0xb0, 0x00, 0xb0, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xf9, 0x00, 0xf8, 0x00, + 0x1d, 0x01, 0x20, 0x01, 0x44, 0x01, 0x43, 0x01, 0x6a, 0x01, 0x6b, 0x01, + 0x8d, 0x01, 0x8d, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xd8, 0x01, 0xd7, 0x01, + 0xfc, 0x01, 0x00, 0x02, 0x24, 0x02, 0x22, 0x02, 0x46, 0x02, 0x47, 0x02, + 0x6d, 0x02, 0x6e, 0x02, 0x90, 0x02, 0x8f, 0x02, 0xb3, 0x02, 0xb5, 0x02, + 0xd6, 0x02, 0xd4, 0x02, 0xf9, 0x02, 0xfa, 0x02, 0x17, 0x03, 0x19, 0x03, + 0x3a, 0x03, 0x39, 0x03, 0x57, 0x03, 0x58, 0x03, 0x74, 0x03, 0x74, 0x03, + 0x94, 0x03, 0x93, 0x03, 0xaa, 0x03, 0xad, 0x03, 0xc9, 0x03, 0xc8, 0x03, + 0xde, 0x03, 0xdf, 0x03, 0xf6, 0x03, 0xf7, 0x03, 0x0e, 0x04, 0x0d, 0x04, + 0x1d, 0x04, 0x20, 0x04, 0x32, 0x04, 0x30, 0x04, 0x3e, 0x04, 0x3f, 0x04, + 0x4e, 0x04, 0x4d, 0x04, 0x58, 0x04, 0x5b, 0x04, 0x66, 0x04, 0x61, 0x04, + 0x6b, 0x04, 0x6d, 0x04, 0x73, 0x04, 0x73, 0x04, 0x77, 0x04, 0x78, 0x04, + 0x7b, 0x04, 0x7c, 0x04, 0x7c, 0x04, 0x7b, 0x04, 0x7b, 0x04, 0x7c, 0x04, + 0x78, 0x04, 0x79, 0x04, 0x78, 0x04, 0x77, 0x04, 0x71, 0x04, 0x73, 0x04, + 0x6c, 0x04, 0x6b, 0x04, 0x65, 0x04, 0x67, 0x04, 0x5b, 0x04, 0x5b, 0x04, + 0x53, 0x04, 0x53, 0x04, 0x47, 0x04, 0x47, 0x04, 0x3b, 0x04, 0x3c, 0x04, + 0x2d, 0x04, 0x2e, 0x04, 0x21, 0x04, 0x21, 0x04, 0x12, 0x04, 0x13, 0x04, + 0x02, 0x04, 0x02, 0x04, 0xf2, 0x03, 0xf3, 0x03, 0xe1, 0x03, 0xe1, 0x03, + 0xd0, 0x03, 0xd0, 0x03, 0xbd, 0x03, 0xbe, 0x03, 0xad, 0x03, 0xad, 0x03, + 0x97, 0x03, 0x9a, 0x03, 0x86, 0x03, 0x84, 0x03, 0x70, 0x03, 0x72, 0x03, + 0x5b, 0x03, 0x5b, 0x03, 0x45, 0x03, 0x46, 0x03, 0x2e, 0x03, 0x30, 0x03, + 0x1a, 0x03, 0x18, 0x03, 0xff, 0x02, 0x00, 0x03, 0xe9, 0x02, 0xe8, 0x02, + 0xcf, 0x02, 0xd0, 0x02, 0xb5, 0x02, 0xb5, 0x02, 0x9b, 0x02, 0x9b, 0x02, + 0x80, 0x02, 0x80, 0x02, 0x63, 0x02, 0x64, 0x02, 0x48, 0x02, 0x45, 0x02, + 0x28, 0x02, 0x28, 0x02, 0x0a, 0x02, 0x0a, 0x02, 0xec, 0x01, 0xeb, 0x01, + 0xca, 0x01, 0xcb, 0x01, 0xac, 0x01, 0xab, 0x01, 0x88, 0x01, 0x89, 0x01, + 0x66, 0x01, 0x67, 0x01, 0x43, 0x01, 0x42, 0x01, 0x1e, 0x01, 0x20, 0x01, + 0xfa, 0x00, 0xfa, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0xb0, 0x00, 0xaf, 0x00, + 0x8b, 0x00, 0x8a, 0x00, 0x61, 0x00, 0x63, 0x00, 0x40, 0x00, 0x40, 0x00, + 0x14, 0x00, 0x17, 0x00, 0xf3, 0xff, 0xf0, 0xff, 0xc9, 0xff, 0xcb, 0xff, + 0xa3, 0xff, 0xa2, 0xff, 0x7e, 0xff, 0x80, 0xff, 0x57, 0xff, 0x57, 0xff, + 0x33, 0xff, 0x34, 0xff, 0x0d, 0xff, 0x0b, 0xff, 0xe7, 0xfe, 0xeb, 0xfe, + 0xc5, 0xfe, 0xc4, 0xfe, 0x9e, 0xfe, 0xa0, 0xfe, 0x7e, 0xfe, 0x7d, 0xfe, + 0x58, 0xfe, 0x59, 0xfe, 0x39, 0xfe, 0x37, 0xfe, 0x18, 0xfe, 0x19, 0xfe, + 0xf7, 0xfd, 0xf6, 0xfd, 0xd8, 0xfd, 0xd9, 0xfd, 0xb6, 0xfd, 0xb7, 0xfd, + 0x9a, 0xfd, 0x9a, 0xfd, 0x7a, 0xfd, 0x7b, 0xfd, 0x60, 0xfd, 0x60, 0xfd, + 0x43, 0xfd, 0x43, 0xfd, 0x28, 0xfd, 0x28, 0xfd, 0x10, 0xfd, 0x0f, 0xfd, + 0xf4, 0xfc, 0xf3, 0xfc, 0xdc, 0xfc, 0xde, 0xfc, 0xc4, 0xfc, 0xc3, 0xfc, + 0xaf, 0xfc, 0xaf, 0xfc, 0x97, 0xfc, 0x98, 0xfc, 0x82, 0xfc, 0x82, 0xfc, + 0x6d, 0xfc, 0x6c, 0xfc, 0x59, 0xfc, 0x5a, 0xfc, 0x46, 0xfc, 0x46, 0xfc, + 0x33, 0xfc, 0x34, 0xfc, 0x22, 0xfc, 0x22, 0xfc, 0x0f, 0xfc, 0x11, 0xfc, + 0x01, 0xfc, 0x00, 0xfc, 0xf3, 0xfb, 0xf3, 0xfb, 0xe2, 0xfb, 0xe4, 0xfb, + 0xd9, 0xfb, 0xd5, 0xfb, 0xcb, 0xfb, 0xcc, 0xfb, 0xbf, 0xfb, 0xbf, 0xfb, + 0xb6, 0xfb, 0xb5, 0xfb, 0xab, 0xfb, 0xad, 0xfb, 0xa5, 0xfb, 0xa4, 0xfb, + 0x9d, 0xfb, 0x9e, 0xfb, 0x99, 0xfb, 0x9b, 0xfb, 0x96, 0xfb, 0x95, 0xfb, + 0x92, 0xfb, 0x93, 0xfb, 0x93, 0xfb, 0x93, 0xfb, 0x91, 0xfb, 0x91, 0xfb, + 0x95, 0xfb, 0x96, 0xfb, 0x97, 0xfb, 0x98, 0xfb, 0x9e, 0xfb, 0x9d, 0xfb, + 0xa4, 0xfb, 0xa6, 0xfb, 0xac, 0xfb, 0xab, 0xfb, 0xb6, 0xfb, 0xb8, 0xfb, + 0xc3, 0xfb, 0xc2, 0xfb, 0xd0, 0xfb, 0xd1, 0xfb, 0xe1, 0xfb, 0xe1, 0xfb, + 0xf0, 0xfb, 0xf0, 0xfb, 0x02, 0xfc, 0x03, 0xfc, 0x15, 0xfc, 0x15, 0xfc, + 0x2a, 0xfc, 0x2c, 0xfc, 0x42, 0xfc, 0x41, 0xfc, 0x58, 0xfc, 0x5a, 0xfc, + 0x72, 0xfc, 0x72, 0xfc, 0x8c, 0xfc, 0x8b, 0xfc, 0xa6, 0xfc, 0xa8, 0xfc, + 0xc4, 0xfc, 0xc3, 0xfc, 0xe1, 0xfc, 0xe1, 0xfc, 0x00, 0xfd, 0x01, 0xfd, + 0x1d, 0xfd, 0x1c, 0xfd, 0x3d, 0xfd, 0x3d, 0xfd, 0x5d, 0xfd, 0x5d, 0xfd, + 0x7d, 0xfd, 0x7c, 0xfd, 0x9e, 0xfd, 0x9f, 0xfd, 0xbe, 0xfd, 0xbd, 0xfd, + 0xe0, 0xfd, 0xe1, 0xfd, 0x00, 0xfe, 0x00, 0xfe, 0x23, 0xfe, 0x23, 0xfe, + 0x44, 0xfe, 0x44, 0xfe, 0x66, 0xfe, 0x67, 0xfe, 0x89, 0xfe, 0x88, 0xfe, + 0xa8, 0xfe, 0xa9, 0xfe, 0xcc, 0xfe, 0xcc, 0xfe, 0xea, 0xfe, 0xeb, 0xfe, + 0x0f, 0xff, 0x10, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x51, 0xff, 0x51, 0xff, + 0x70, 0xff, 0x70, 0xff, 0x92, 0xff, 0x93, 0xff, 0xb5, 0xff, 0xb2, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0x17, 0x00, 0x15, 0x00, + 0x38, 0x00, 0x39, 0x00, 0x5c, 0x00, 0x5b, 0x00, 0x7b, 0x00, 0x7b, 0x00, + 0xa0, 0x00, 0x9f, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xe1, 0x00, 0xe0, 0x00, + 0x07, 0x01, 0x07, 0x01, 0x27, 0x01, 0x26, 0x01, 0x4b, 0x01, 0x4b, 0x01, + 0x6e, 0x01, 0x6e, 0x01, 0x90, 0x01, 0x90, 0x01, 0xb4, 0x01, 0xb4, 0x01, + 0xd6, 0x01, 0xd6, 0x01, 0xfa, 0x01, 0xfb, 0x01, 0x1d, 0x02, 0x1b, 0x02, + 0x3f, 0x02, 0x41, 0x02, 0x62, 0x02, 0x62, 0x02, 0x84, 0x02, 0x85, 0x02, + 0xa9, 0x02, 0xa8, 0x02, 0xc6, 0x02, 0xc6, 0x02, 0xeb, 0x02, 0xec, 0x02, + 0x09, 0x03, 0x07, 0x03, 0x2a, 0x03, 0x2b, 0x03, 0x4a, 0x03, 0x48, 0x03, + 0x65, 0x03, 0x66, 0x03, 0x84, 0x03, 0x84, 0x03, 0x9d, 0x03, 0x9c, 0x03, + 0xb8, 0x03, 0xb7, 0x03, 0xd1, 0x03, 0xd1, 0x03, 0xe7, 0x03, 0xe5, 0x03, + 0xfd, 0x03, 0xff, 0x03, 0x0e, 0x04, 0x0f, 0x04, 0x23, 0x04, 0x24, 0x04, + 0x34, 0x04, 0x34, 0x04, 0x41, 0x04, 0x41, 0x04, 0x50, 0x04, 0x51, 0x04, + 0x5d, 0x04, 0x5b, 0x04, 0x65, 0x04, 0x64, 0x04, 0x6e, 0x04, 0x6e, 0x04, + 0x73, 0x04, 0x73, 0x04, 0x78, 0x04, 0x79, 0x04, 0x7c, 0x04, 0x7b, 0x04, + 0x7e, 0x04, 0x7e, 0x04, 0x7f, 0x04, 0x7e, 0x04, 0x7b, 0x04, 0x7b, 0x04, + 0x79, 0x04, 0x7a, 0x04, 0x76, 0x04, 0x74, 0x04, 0x6c, 0x04, 0x6d, 0x04, + 0x6a, 0x04, 0x68, 0x04, 0x5d, 0x04, 0x5d, 0x04, 0x56, 0x04, 0x55, 0x04, + 0x49, 0x04, 0x4b, 0x04, 0x3f, 0x04, 0x3c, 0x04, 0x32, 0x04, 0x34, 0x04, + 0x25, 0x04, 0x23, 0x04, 0x15, 0x04, 0x15, 0x04, 0x06, 0x04, 0x06, 0x04, + 0xf5, 0x03, 0xf5, 0x03, 0xe4, 0x03, 0xe4, 0x03, 0xd2, 0x03, 0xd2, 0x03, + 0xbf, 0x03, 0xbf, 0x03, 0xab, 0x03, 0xaa, 0x03, 0x97, 0x03, 0x96, 0x03, + 0x80, 0x03, 0x7f, 0x03, 0x69, 0x03, 0x69, 0x03, 0x52, 0x03, 0x52, 0x03, + 0x3a, 0x03, 0x39, 0x03, 0x20, 0x03, 0x21, 0x03, 0x07, 0x03, 0x08, 0x03, + 0xec, 0x02, 0xeb, 0x02, 0xd1, 0x02, 0xd2, 0x02, 0xb3, 0x02, 0xb4, 0x02, + 0x97, 0x02, 0x97, 0x02, 0x78, 0x02, 0x77, 0x02, 0x5a, 0x02, 0x5a, 0x02, + 0x38, 0x02, 0x3a, 0x02, 0x18, 0x02, 0x18, 0x02, 0xf6, 0x01, 0xf5, 0x01, + 0xd2, 0x01, 0xd4, 0x01, 0xaf, 0x01, 0xad, 0x01, 0x8a, 0x01, 0x8b, 0x01, + 0x65, 0x01, 0x67, 0x01, 0x3f, 0x01, 0x40, 0x01, 0x19, 0x01, 0x1a, 0x01, + 0xf3, 0x00, 0xf3, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xa6, 0x00, 0xa6, 0x00, + 0x7d, 0x00, 0x7f, 0x00, 0x56, 0x00, 0x56, 0x00, 0x2f, 0x00, 0x2f, 0x00, + 0x07, 0x00, 0x08, 0x00, 0xe0, 0xff, 0xe0, 0xff, 0xba, 0xff, 0xba, 0xff, + 0x92, 0xff, 0x94, 0xff, 0x6b, 0xff, 0x6c, 0xff, 0x48, 0xff, 0x48, 0xff, + 0x20, 0xff, 0x22, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xda, 0xfe, 0xdd, 0xfe, + 0xb8, 0xfe, 0xb9, 0xfe, 0x98, 0xfe, 0x99, 0xfe, 0x76, 0xfe, 0x77, 0xfe, + 0x58, 0xfe, 0x57, 0xfe, 0x3a, 0xfe, 0x3c, 0xfe, 0x1a, 0xfe, 0x1b, 0xfe, + 0x01, 0xfe, 0x01, 0xfe, 0xe1, 0xfd, 0xe2, 0xfd, 0xca, 0xfd, 0xc9, 0xfd, + 0xac, 0xfd, 0xad, 0xfd, 0x94, 0xfd, 0x95, 0xfd, 0x7d, 0xfd, 0x7c, 0xfd, + 0x62, 0xfd, 0x64, 0xfd, 0x4e, 0xfd, 0x4e, 0xfd, 0x37, 0xfd, 0x37, 0xfd, + 0x24, 0xfd, 0x24, 0xfd, 0x0e, 0xfd, 0x0c, 0xfd, 0xf9, 0xfc, 0xf8, 0xfc, + 0xe4, 0xfc, 0xe5, 0xfc, 0xd1, 0xfc, 0xd0, 0xfc, 0xbd, 0xfc, 0xbc, 0xfc, + 0xa8, 0xfc, 0xab, 0xfc, 0x97, 0xfc, 0x96, 0xfc, 0x83, 0xfc, 0x84, 0xfc, + 0x73, 0xfc, 0x73, 0xfc, 0x60, 0xfc, 0x5f, 0xfc, 0x50, 0xfc, 0x51, 0xfc, + 0x40, 0xfc, 0x3f, 0xfc, 0x2e, 0xfc, 0x2f, 0xfc, 0x1f, 0xfc, 0x1f, 0xfc, + 0x0f, 0xfc, 0x0f, 0xfc, 0x01, 0xfc, 0x01, 0xfc, 0xf1, 0xfb, 0xf1, 0xfb, + 0xe5, 0xfb, 0xe6, 0xfb, 0xd9, 0xfb, 0xd9, 0xfb, 0xcc, 0xfb, 0xcd, 0xfb, + 0xc2, 0xfb, 0xc1, 0xfb, 0xba, 0xfb, 0xb9, 0xfb, 0xb3, 0xfb, 0xb4, 0xfb, + 0xab, 0xfb, 0xaa, 0xfb, 0xa6, 0xfb, 0xa8, 0xfb, 0xa2, 0xfb, 0xa1, 0xfb, + 0xa1, 0xfb, 0xa0, 0xfb, 0xa1, 0xfb, 0xa2, 0xfb, 0xa1, 0xfb, 0xa1, 0xfb, + 0xa4, 0xfb, 0xa5, 0xfb, 0xa8, 0xfb, 0xa8, 0xfb, 0xb0, 0xfb, 0xb0, 0xfb, + 0xb8, 0xfb, 0xb9, 0xfb, 0xc1, 0xfb, 0xc1, 0xfb, 0xcf, 0xfb, 0xd0, 0xfb, + 0xdc, 0xfb, 0xda, 0xfb, 0xed, 0xfb, 0xef, 0xfb, 0xff, 0xfb, 0xfd, 0xfb, + 0x11, 0xfc, 0x11, 0xfc, 0x28, 0xfc, 0x29, 0xfc, 0x3b, 0xfc, 0x3b, 0xfc, + 0x55, 0xfc, 0x56, 0xfc, 0x6f, 0xfc, 0x6d, 0xfc, 0x88, 0xfc, 0x87, 0xfc, + 0xa6, 0xfc, 0xa7, 0xfc, 0xc1, 0xfc, 0xc1, 0xfc, 0xe0, 0xfc, 0xe0, 0xfc, + 0xfe, 0xfc, 0xfe, 0xfc, 0x1e, 0xfd, 0x1d, 0xfd, 0x3e, 0xfd, 0x40, 0xfd, + 0x5e, 0xfd, 0x5c, 0xfd, 0x7f, 0xfd, 0x80, 0xfd, 0xa1, 0xfd, 0xa2, 0xfd, + 0xc2, 0xfd, 0xc1, 0xfd, 0xe6, 0xfd, 0xe7, 0xfd, 0x08, 0xfe, 0x07, 0xfe, + 0x2a, 0xfe, 0x2c, 0xfe, 0x4d, 0xfe, 0x4b, 0xfe, 0x6e, 0xfe, 0x6f, 0xfe, + 0x93, 0xfe, 0x95, 0xfe, 0xb4, 0xfe, 0xb2, 0xfe, 0xd9, 0xfe, 0xdb, 0xfe, + 0xf8, 0xfe, 0xf9, 0xfe, 0x1f, 0xff, 0x1d, 0xff, 0x40, 0xff, 0x42, 0xff, + 0x63, 0xff, 0x63, 0xff, 0x87, 0xff, 0x87, 0xff, 0xa9, 0xff, 0xaa, 0xff, + 0xce, 0xff, 0xcd, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0x12, 0x00, 0x12, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x57, 0x00, 0x5a, 0x00, 0x81, 0x00, 0x7f, 0x00, + 0xa0, 0x00, 0xa2, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xec, 0x00, 0xeb, 0x00, + 0x0d, 0x01, 0x10, 0x01, 0x34, 0x01, 0x34, 0x01, 0x58, 0x01, 0x56, 0x01, + 0x7b, 0x01, 0x7d, 0x01, 0xa0, 0x01, 0x9f, 0x01, 0xc3, 0x01, 0xc4, 0x01, + 0xea, 0x01, 0xea, 0x01, 0x0b, 0x02, 0x0b, 0x02, 0x2e, 0x02, 0x30, 0x02, + 0x53, 0x02, 0x52, 0x02, 0x74, 0x02, 0x75, 0x02, 0x97, 0x02, 0x97, 0x02, + 0xb8, 0x02, 0xb8, 0x02, 0xd7, 0x02, 0xd6, 0x02, 0xf8, 0x02, 0xf6, 0x02, + 0x13, 0x03, 0x15, 0x03, 0x33, 0x03, 0x32, 0x03, 0x4d, 0x03, 0x4f, 0x03, + 0x69, 0x03, 0x68, 0x03, 0x82, 0x03, 0x83, 0x03, 0x99, 0x03, 0x99, 0x03, + 0xb0, 0x03, 0xb1, 0x03, 0xc6, 0x03, 0xc4, 0x03, 0xd7, 0x03, 0xda, 0x03, + 0xeb, 0x03, 0xea, 0x03, 0xf8, 0x03, 0xfa, 0x03, 0x0b, 0x04, 0x0a, 0x04, + 0x16, 0x04, 0x15, 0x04, 0x20, 0x04, 0x21, 0x04, 0x2c, 0x04, 0x29, 0x04, + 0x32, 0x04, 0x33, 0x04, 0x39, 0x04, 0x38, 0x04, 0x3c, 0x04, 0x3d, 0x04, + 0x41, 0x04, 0x41, 0x04, 0x44, 0x04, 0x44, 0x04, 0x44, 0x04, 0x43, 0x04, + 0x46, 0x04, 0x46, 0x04, 0x43, 0x04, 0x43, 0x04, 0x42, 0x04, 0x42, 0x04, + 0x3f, 0x04, 0x3e, 0x04, 0x39, 0x04, 0x3b, 0x04, 0x35, 0x04, 0x34, 0x04, + 0x30, 0x04, 0x30, 0x04, 0x29, 0x04, 0x29, 0x04, 0x1f, 0x04, 0x21, 0x04, + 0x1a, 0x04, 0x18, 0x04, 0x0f, 0x04, 0x12, 0x04, 0x07, 0x04, 0x07, 0x04, + 0xfd, 0x03, 0xfe, 0x03, 0xf3, 0x03, 0xf2, 0x03, 0xe7, 0x03, 0xe6, 0x03, + 0xdb, 0x03, 0xdd, 0x03, 0xce, 0x03, 0xcd, 0x03, 0xc0, 0x03, 0xc1, 0x03, + 0xb2, 0x03, 0xb3, 0x03, 0xa5, 0x03, 0xa3, 0x03, 0x93, 0x03, 0x97, 0x03, + 0x83, 0x03, 0x81, 0x03, 0x73, 0x03, 0x73, 0x03, 0x5f, 0x03, 0x60, 0x03, + 0x4b, 0x03, 0x4c, 0x03, 0x36, 0x03, 0x37, 0x03, 0x21, 0x03, 0x20, 0x03, + 0x06, 0x03, 0x09, 0x03, 0xf4, 0x02, 0xf1, 0x02, 0xd2, 0x02, 0xd4, 0x02, + 0xbc, 0x02, 0xbd, 0x02, 0x9e, 0x02, 0x9e, 0x02, 0x7f, 0x02, 0x81, 0x02, + 0x61, 0x02, 0x63, 0x02, 0x40, 0x02, 0x40, 0x02, 0x1d, 0x02, 0x1e, 0x02, + 0xfa, 0x01, 0xfb, 0x01, 0xd7, 0x01, 0xd6, 0x01, 0xb1, 0x01, 0xb3, 0x01, + 0x8d, 0x01, 0x8b, 0x01, 0x65, 0x01, 0x66, 0x01, 0x3e, 0x01, 0x3c, 0x01, + 0x16, 0x01, 0x17, 0x01, 0xec, 0x00, 0xeb, 0x00, 0xc3, 0x00, 0xc3, 0x00, + 0x99, 0x00, 0x99, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x46, 0x00, 0x45, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0xf1, 0xff, 0xf2, 0xff, 0xc9, 0xff, 0xc9, 0xff, + 0x9f, 0xff, 0x9f, 0xff, 0x7a, 0xff, 0x79, 0xff, 0x4f, 0xff, 0x4f, 0xff, + 0x2b, 0xff, 0x29, 0xff, 0x04, 0xff, 0x05, 0xff, 0xdf, 0xfe, 0xdf, 0xfe, + 0xbb, 0xfe, 0xbb, 0xfe, 0x97, 0xfe, 0x96, 0xfe, 0x78, 0xfe, 0x78, 0xfe, + 0x53, 0xfe, 0x54, 0xfe, 0x38, 0xfe, 0x35, 0xfe, 0x15, 0xfe, 0x17, 0xfe, + 0xf9, 0xfd, 0xf9, 0xfd, 0xdd, 0xfd, 0xde, 0xfd, 0xbf, 0xfd, 0xc0, 0xfd, + 0xa8, 0xfd, 0xa7, 0xfd, 0x8c, 0xfd, 0x8b, 0xfd, 0x74, 0xfd, 0x76, 0xfd, + 0x5c, 0xfd, 0x5b, 0xfd, 0x45, 0xfd, 0x45, 0xfd, 0x2e, 0xfd, 0x2d, 0xfd, + 0x17, 0xfd, 0x19, 0xfd, 0x03, 0xfd, 0x02, 0xfd, 0xed, 0xfc, 0xee, 0xfc, + 0xdb, 0xfc, 0xdb, 0xfc, 0xc4, 0xfc, 0xc6, 0xfc, 0xb3, 0xfc, 0xb2, 0xfc, + 0x9f, 0xfc, 0xa1, 0xfc, 0x8c, 0xfc, 0x8e, 0xfc, 0x7d, 0xfc, 0x7c, 0xfc, + 0x69, 0xfc, 0x6a, 0xfc, 0x59, 0xfc, 0x5a, 0xfc, 0x48, 0xfc, 0x47, 0xfc, + 0x37, 0xfc, 0x38, 0xfc, 0x27, 0xfc, 0x26, 0xfc, 0x1a, 0xfc, 0x1b, 0xfc, + 0x09, 0xfc, 0x09, 0xfc, 0xfd, 0xfb, 0xfe, 0xfb, 0xf0, 0xfb, 0xf0, 0xfb, + 0xe4, 0xfb, 0xe5, 0xfb, 0xda, 0xfb, 0xda, 0xfb, 0xd0, 0xfb, 0xd1, 0xfb, + 0xc8, 0xfb, 0xc8, 0xfb, 0xbf, 0xfb, 0xc2, 0xfb, 0xbc, 0xfb, 0xbc, 0xfb, + 0xb5, 0xfb, 0xb7, 0xfb, 0xb2, 0xfb, 0xb4, 0xfb, 0xb0, 0xfb, 0xb1, 0xfb, + 0xb1, 0xfb, 0xb2, 0xfb, 0xb0, 0xfb, 0xb3, 0xfb, 0xb5, 0xfb, 0xb4, 0xfb, + 0xba, 0xfb, 0xbb, 0xfb, 0xc0, 0xfb, 0xc1, 0xfb, 0xcb, 0xfb, 0xc9, 0xfb, + 0xd3, 0xfb, 0xd4, 0xfb, 0xe0, 0xfb, 0xe0, 0xfb, 0xea, 0xfb, 0xeb, 0xfb, + 0xfd, 0xfb, 0xfd, 0xfb, 0x0a, 0xfc, 0x0a, 0xfc, 0x1e, 0xfc, 0x1d, 0xfc, + 0x30, 0xfc, 0x31, 0xfc, 0x45, 0xfc, 0x45, 0xfc, 0x5b, 0xfc, 0x5b, 0xfc, + 0x71, 0xfc, 0x70, 0xfc, 0x8a, 0xfc, 0x8b, 0xfc, 0xa1, 0xfc, 0xa1, 0xfc, + 0xbc, 0xfc, 0xbb, 0xfc, 0xd7, 0xfc, 0xd7, 0xfc, 0xf0, 0xfc, 0xf1, 0xfc, + 0x0f, 0xfd, 0x0e, 0xfd, 0x29, 0xfd, 0x29, 0xfd, 0x47, 0xfd, 0x47, 0xfd, + 0x64, 0xfd, 0x65, 0xfd, 0x81, 0xfd, 0x80, 0xfd, 0x9f, 0xfd, 0xa0, 0xfd, + 0xbd, 0xfd, 0xbd, 0xfd, 0xdb, 0xfd, 0xdb, 0xfd, 0xf9, 0xfd, 0xfa, 0xfd, + 0x17, 0xfe, 0x18, 0xfe, 0x36, 0xfe, 0x37, 0xfe, 0x56, 0xfe, 0x58, 0xfe, + 0x75, 0xfe, 0x76, 0xfe, 0x95, 0xfe, 0x95, 0xfe, 0xb4, 0xfe, 0xb5, 0xfe, + 0xd5, 0xfe, 0xd5, 0xfe, 0xf6, 0xfe, 0xf5, 0xfe, 0x14, 0xff, 0x17, 0xff, + 0x38, 0xff, 0x38, 0xff, 0x58, 0xff, 0x58, 0xff, 0x7b, 0xff, 0x7c, 0xff, + 0x9d, 0xff, 0x9d, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xe5, 0xff, 0xe8, 0xff, + 0x08, 0x00, 0x08, 0x00, 0x30, 0x00, 0x31, 0x00, 0x54, 0x00, 0x52, 0x00, + 0x7b, 0x00, 0x7c, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0xc8, 0x00, 0xc8, 0x00, + 0xf0, 0x00, 0xf1, 0x00, 0x18, 0x01, 0x17, 0x01, 0x3f, 0x01, 0x41, 0x01, + 0x68, 0x01, 0x69, 0x01, 0x91, 0x01, 0x92, 0x01, 0xb8, 0x01, 0xb8, 0x01, + 0xe2, 0x01, 0xe2, 0x01, 0x07, 0x02, 0x08, 0x02, 0x30, 0x02, 0x31, 0x02, + 0x57, 0x02, 0x57, 0x02, 0x7d, 0x02, 0x80, 0x02, 0xa4, 0x02, 0xa3, 0x02, + 0xc8, 0x02, 0xca, 0x02, 0xe9, 0x02, 0xeb, 0x02, 0x0d, 0x03, 0x0d, 0x03, + 0x2e, 0x03, 0x2f, 0x03, 0x4d, 0x03, 0x4a, 0x03, 0x6b, 0x03, 0x6c, 0x03, + 0x87, 0x03, 0x86, 0x03, 0xa0, 0x03, 0xa1, 0x03, 0xbb, 0x03, 0xba, 0x03, + 0xd0, 0x03, 0xd0, 0x03, 0xe7, 0x03, 0xe6, 0x03, 0xf8, 0x03, 0xf9, 0x03, + 0x09, 0x04, 0x09, 0x04, 0x18, 0x04, 0x19, 0x04, 0x27, 0x04, 0x25, 0x04, + 0x2f, 0x04, 0x31, 0x04, 0x3c, 0x04, 0x3b, 0x04, 0x41, 0x04, 0x42, 0x04, + 0x4a, 0x04, 0x49, 0x04, 0x4d, 0x04, 0x4d, 0x04, 0x4f, 0x04, 0x4f, 0x04, + 0x52, 0x04, 0x51, 0x04, 0x50, 0x04, 0x50, 0x04, 0x51, 0x04, 0x50, 0x04, + 0x4d, 0x04, 0x4c, 0x04, 0x48, 0x04, 0x47, 0x04, 0x46, 0x04, 0x46, 0x04, + 0x3e, 0x04, 0x3d, 0x04, 0x3c, 0x04, 0x3a, 0x04, 0x31, 0x04, 0x31, 0x04, + 0x2d, 0x04, 0x2c, 0x04, 0x23, 0x04, 0x22, 0x04, 0x19, 0x04, 0x19, 0x04, + 0x12, 0x04, 0x10, 0x04, 0x06, 0x04, 0x06, 0x04, 0xfc, 0x03, 0xfb, 0x03, + 0xf1, 0x03, 0xef, 0x03, 0xe4, 0x03, 0xe4, 0x03, 0xda, 0x03, 0xd9, 0x03, + 0xcb, 0x03, 0xcb, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xb2, 0x03, 0xb1, 0x03, + 0xa2, 0x03, 0xa4, 0x03, 0x95, 0x03, 0x95, 0x03, 0x82, 0x03, 0x82, 0x03, + 0x74, 0x03, 0x74, 0x03, 0x61, 0x03, 0x61, 0x03, 0x4f, 0x03, 0x4e, 0x03, + 0x3b, 0x03, 0x3c, 0x03, 0x25, 0x03, 0x25, 0x03, 0x10, 0x03, 0x11, 0x03, + 0xf7, 0x02, 0xf7, 0x02, 0xe1, 0x02, 0xe1, 0x02, 0xc5, 0x02, 0xc5, 0x02, + 0xac, 0x02, 0xac, 0x02, 0x8f, 0x02, 0x8f, 0x02, 0x70, 0x02, 0x72, 0x02, + 0x56, 0x02, 0x55, 0x02, 0x32, 0x02, 0x33, 0x02, 0x13, 0x02, 0x13, 0x02, + 0xf1, 0x01, 0xf0, 0x01, 0xcb, 0x01, 0xcd, 0x01, 0xac, 0x01, 0xaa, 0x01, + 0x83, 0x01, 0x85, 0x01, 0x61, 0x01, 0x60, 0x01, 0x39, 0x01, 0x3a, 0x01, + 0x13, 0x01, 0x12, 0x01, 0xed, 0x00, 0xef, 0x00, 0xc5, 0x00, 0xc5, 0x00, + 0x9f, 0x00, 0x9f, 0x00, 0x78, 0x00, 0x78, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x02, 0x00, 0x02, 0x00, 0xdc, 0xff, 0xdd, 0xff, + 0xb7, 0xff, 0xb8, 0xff, 0x91, 0xff, 0x91, 0xff, 0x6e, 0xff, 0x6f, 0xff, + 0x49, 0xff, 0x4b, 0xff, 0x26, 0xff, 0x27, 0xff, 0x04, 0xff, 0x05, 0xff, + 0xe5, 0xfe, 0xe4, 0xfe, 0xc1, 0xfe, 0xc4, 0xfe, 0xa3, 0xfe, 0xa4, 0xfe, + 0x84, 0xfe, 0x83, 0xfe, 0x65, 0xfe, 0x68, 0xfe, 0x49, 0xfe, 0x48, 0xfe, + 0x2a, 0xfe, 0x2d, 0xfe, 0x10, 0xfe, 0x0f, 0xfe, 0xf4, 0xfd, 0xf3, 0xfd, + 0xd8, 0xfd, 0xd9, 0xfd, 0xbd, 0xfd, 0xbd, 0xfd, 0xa3, 0xfd, 0xa4, 0xfd, + 0x89, 0xfd, 0x8a, 0xfd, 0x70, 0xfd, 0x73, 0xfd, 0x57, 0xfd, 0x56, 0xfd, + 0x3c, 0xfd, 0x3e, 0xfd, 0x27, 0xfd, 0x26, 0xfd, 0x0b, 0xfd, 0x0d, 0xfd, + 0xf8, 0xfc, 0xf7, 0xfc, 0xdc, 0xfc, 0xdd, 0xfc, 0xc7, 0xfc, 0xc7, 0xfc, + 0xad, 0xfc, 0xad, 0xfc, 0x96, 0xfc, 0x98, 0xfc, 0x81, 0xfc, 0x81, 0xfc, + 0x68, 0xfc, 0x68, 0xfc, 0x54, 0xfc, 0x53, 0xfc, 0x3d, 0xfc, 0x3e, 0xfc, + 0x28, 0xfc, 0x27, 0xfc, 0x16, 0xfc, 0x18, 0xfc, 0x02, 0xfc, 0x02, 0xfc, + 0xf0, 0xfb, 0xf0, 0xfb, 0xde, 0xfb, 0xe1, 0xfb, 0xd0, 0xfb, 0xce, 0xfb, + 0xc1, 0xfb, 0xc2, 0xfb, 0xb4, 0xfb, 0xb4, 0xfb, 0xa8, 0xfb, 0xa9, 0xfb, + 0x9f, 0xfb, 0xa0, 0xfb, 0x96, 0xfb, 0x96, 0xfb, 0x90, 0xfb, 0x93, 0xfb, + 0x8c, 0xfb, 0x8c, 0xfb, 0x89, 0xfb, 0x8b, 0xfb, 0x89, 0xfb, 0x88, 0xfb, + 0x8a, 0xfb, 0x8b, 0xfb, 0x8e, 0xfb, 0x8f, 0xfb, 0x93, 0xfb, 0x95, 0xfb, + 0x9a, 0xfb, 0x9c, 0xfb, 0xa4, 0xfb, 0xa5, 0xfb, 0xb1, 0xfb, 0xb2, 0xfb, + 0xbd, 0xfb, 0xbf, 0xfb, 0xcd, 0xfb, 0xce, 0xfb, 0xde, 0xfb, 0xe0, 0xfb, + 0xf2, 0xfb, 0xf3, 0xfb, 0x05, 0xfc, 0x06, 0xfc, 0x1a, 0xfc, 0x1c, 0xfc, + 0x31, 0xfc, 0x35, 0xfc, 0x49, 0xfc, 0x48, 0xfc, 0x61, 0xfc, 0x65, 0xfc, + 0x7d, 0xfc, 0x7c, 0xfc, 0x95, 0xfc, 0x97, 0xfc, 0xb2, 0xfc, 0xb2, 0xfc, + 0xcd, 0xfc, 0xcf, 0xfc, 0xe9, 0xfc, 0xe9, 0xfc, 0x07, 0xfd, 0x07, 0xfd, + 0x24, 0xfd, 0x23, 0xfd, 0x3e, 0xfd, 0x41, 0xfd, 0x5e, 0xfd, 0x5e, 0xfd, + 0x78, 0xfd, 0x78, 0xfd, 0x97, 0xfd, 0x99, 0xfd, 0xaf, 0xfd, 0xb1, 0xfd, + 0xd1, 0xfd, 0xd0, 0xfd, 0xeb, 0xfd, 0xed, 0xfd, 0x08, 0xfe, 0x07, 0xfe, + 0x25, 0xfe, 0x27, 0xfe, 0x42, 0xfe, 0x42, 0xfe, 0x5d, 0xfe, 0x5f, 0xfe, + 0x7b, 0xfe, 0x7b, 0xfe, 0x97, 0xfe, 0x99, 0xfe, 0xb7, 0xfe, 0xb7, 0xfe, + 0xd4, 0xfe, 0xd4, 0xfe, 0xf0, 0xfe, 0xf3, 0xfe, 0x12, 0xff, 0x11, 0xff, + 0x2e, 0xff, 0x2e, 0xff, 0x51, 0xff, 0x51, 0xff, 0x70, 0xff, 0x6f, 0xff, + 0x92, 0xff, 0x92, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xd6, 0xff, 0xd6, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0x1c, 0x00, 0x1d, 0x00, 0x42, 0x00, 0x41, 0x00, + 0x66, 0x00, 0x67, 0x00, 0x8d, 0x00, 0x8f, 0x00, 0xb5, 0x00, 0xb5, 0x00, + 0xdb, 0x00, 0xdd, 0x00, 0x05, 0x01, 0x03, 0x01, 0x29, 0x01, 0x2d, 0x01, + 0x57, 0x01, 0x53, 0x01, 0x78, 0x01, 0x7b, 0x01, 0xa5, 0x01, 0xa5, 0x01, + 0xcb, 0x01, 0xcb, 0x01, 0xf3, 0x01, 0xf6, 0x01, 0x1b, 0x02, 0x1b, 0x02, + 0x42, 0x02, 0x42, 0x02, 0x67, 0x02, 0x68, 0x02, 0x8e, 0x02, 0x8c, 0x02, + 0xaf, 0x02, 0xb2, 0x02, 0xd4, 0x02, 0xd3, 0x02, 0xf4, 0x02, 0xf4, 0x02, + 0x14, 0x03, 0x13, 0x03, 0x30, 0x03, 0x34, 0x03, 0x50, 0x03, 0x4e, 0x03, + 0x6a, 0x03, 0x6a, 0x03, 0x84, 0x03, 0x84, 0x03, 0x9a, 0x03, 0x9c, 0x03, + 0xb1, 0x03, 0xb3, 0x03, 0xc6, 0x03, 0xc8, 0x03, 0xda, 0x03, 0xd9, 0x03, + 0xe9, 0x03, 0xec, 0x03, 0xfa, 0x03, 0xf9, 0x03, 0x05, 0x04, 0x07, 0x04, + 0x12, 0x04, 0x13, 0x04, 0x1b, 0x04, 0x1b, 0x04, 0x23, 0x04, 0x25, 0x04, + 0x2b, 0x04, 0x2b, 0x04, 0x31, 0x04, 0x31, 0x04, 0x33, 0x04, 0x35, 0x04, + 0x39, 0x04, 0x37, 0x04, 0x39, 0x04, 0x3a, 0x04, 0x3a, 0x04, 0x3c, 0x04, + 0x3c, 0x04, 0x3b, 0x04, 0x39, 0x04, 0x3c, 0x04, 0x3a, 0x04, 0x39, 0x04, + 0x38, 0x04, 0x3a, 0x04, 0x35, 0x04, 0x36, 0x04, 0x30, 0x04, 0x32, 0x04, + 0x2d, 0x04, 0x2d, 0x04, 0x28, 0x04, 0x27, 0x04, 0x22, 0x04, 0x24, 0x04, + 0x1d, 0x04, 0x1c, 0x04, 0x16, 0x04, 0x16, 0x04, 0x0e, 0x04, 0x10, 0x04, + 0x07, 0x04, 0x05, 0x04, 0xfb, 0x03, 0xfc, 0x03, 0xf2, 0x03, 0xf1, 0x03, + 0xe7, 0x03, 0xe8, 0x03, 0xdb, 0x03, 0xdd, 0x03, 0xcf, 0x03, 0xce, 0x03, + 0xc0, 0x03, 0xc2, 0x03, 0xb2, 0x03, 0xb1, 0x03, 0x9f, 0x03, 0xa1, 0x03, + 0x8f, 0x03, 0x8f, 0x03, 0x7b, 0x03, 0x7c, 0x03, 0x65, 0x03, 0x66, 0x03, + 0x51, 0x03, 0x51, 0x03, 0x37, 0x03, 0x35, 0x03, 0x1d, 0x03, 0x21, 0x03, + 0x04, 0x03, 0x04, 0x03, 0xe8, 0x02, 0xe8, 0x02, 0xcb, 0x02, 0xcd, 0x02, + 0xab, 0x02, 0xaa, 0x02, 0x8b, 0x02, 0x8b, 0x02, 0x68, 0x02, 0x6a, 0x02, + 0x45, 0x02, 0x45, 0x02, 0x23, 0x02, 0x23, 0x02, 0xfd, 0x01, 0xfc, 0x01, + 0xdb, 0x01, 0xdc, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0x8d, 0x01, 0x8c, 0x01, + 0x67, 0x01, 0x65, 0x01, 0x3b, 0x01, 0x3d, 0x01, 0x17, 0x01, 0x16, 0x01, + 0xee, 0x00, 0xee, 0x00, 0xc8, 0x00, 0xc7, 0x00, 0xa1, 0x00, 0xa1, 0x00, + 0x7a, 0x00, 0x79, 0x00, 0x54, 0x00, 0x55, 0x00, 0x2f, 0x00, 0x2d, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0xe7, 0xff, 0xe6, 0xff, 0xc4, 0xff, 0xc4, 0xff, + 0xa3, 0xff, 0xa3, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x61, 0xff, 0x61, 0xff, + 0x41, 0xff, 0x41, 0xff, 0x24, 0xff, 0x23, 0xff, 0x06, 0xff, 0x05, 0xff, + 0xe9, 0xfe, 0xea, 0xfe, 0xd0, 0xfe, 0xcd, 0xfe, 0xb5, 0xfe, 0xb5, 0xfe, + 0x99, 0xfe, 0x99, 0xfe, 0x81, 0xfe, 0x80, 0xfe, 0x66, 0xfe, 0x67, 0xfe, + 0x4f, 0xfe, 0x4f, 0xfe, 0x36, 0xfe, 0x37, 0xfe, 0x1e, 0xfe, 0x1e, 0xfe, + 0x06, 0xfe, 0x08, 0xfe, 0xef, 0xfd, 0xee, 0xfd, 0xd7, 0xfd, 0xda, 0xfd, + 0xbf, 0xfd, 0xbf, 0xfd, 0xa8, 0xfd, 0xa9, 0xfd, 0x8f, 0xfd, 0x8e, 0xfd, + 0x77, 0xfd, 0x76, 0xfd, 0x5c, 0xfd, 0x5c, 0xfd, 0x47, 0xfd, 0x45, 0xfd, + 0x2b, 0xfd, 0x2b, 0xfd, 0x13, 0xfd, 0x13, 0xfd, 0xf9, 0xfc, 0xfa, 0xfc, + 0xe0, 0xfc, 0xe1, 0xfc, 0xc6, 0xfc, 0xc6, 0xfc, 0xaf, 0xfc, 0xaf, 0xfc, + 0x95, 0xfc, 0x95, 0xfc, 0x7e, 0xfc, 0x7d, 0xfc, 0x66, 0xfc, 0x66, 0xfc, + 0x4e, 0xfc, 0x4e, 0xfc, 0x38, 0xfc, 0x38, 0xfc, 0x23, 0xfc, 0x23, 0xfc, + 0x0d, 0xfc, 0x0e, 0xfc, 0xfb, 0xfb, 0xfa, 0xfb, 0xe9, 0xfb, 0xea, 0xfb, + 0xd9, 0xfb, 0xd8, 0xfb, 0xcc, 0xfb, 0xcd, 0xfb, 0xbd, 0xfb, 0xbd, 0xfb, + 0xb2, 0xfb, 0xb3, 0xfb, 0xaa, 0xfb, 0xaa, 0xfb, 0xa2, 0xfb, 0xa2, 0xfb, + 0x9d, 0xfb, 0x9d, 0xfb, 0x99, 0xfb, 0x9a, 0xfb, 0x98, 0xfb, 0x98, 0xfb, + 0x9a, 0xfb, 0x9a, 0xfb, 0x9c, 0xfb, 0x9d, 0xfb, 0xa2, 0xfb, 0xa2, 0xfb, + 0xaa, 0xfb, 0xaa, 0xfb, 0xb1, 0xfb, 0xb2, 0xfb, 0xbf, 0xfb, 0xbd, 0xfb, + 0xca, 0xfb, 0xcb, 0xfb, 0xda, 0xfb, 0xd9, 0xfb, 0xe9, 0xfb, 0xea, 0xfb, + 0xfc, 0xfb, 0xfb, 0xfb, 0x0d, 0xfc, 0x0d, 0xfc, 0x22, 0xfc, 0x23, 0xfc, + 0x38, 0xfc, 0x38, 0xfc, 0x4e, 0xfc, 0x4e, 0xfc, 0x66, 0xfc, 0x66, 0xfc, + 0x7e, 0xfc, 0x7e, 0xfc, 0x97, 0xfc, 0x97, 0xfc, 0xae, 0xfc, 0xb1, 0xfc, + 0xcc, 0xfc, 0xc9, 0xfc, 0xe5, 0xfc, 0xe6, 0xfc, 0xfd, 0xfc, 0xfc, 0xfc, + 0x1b, 0xfd, 0x1c, 0xfd, 0x35, 0xfd, 0x34, 0xfd, 0x4f, 0xfd, 0x4f, 0xfd, + 0x6d, 0xfd, 0x6d, 0xfd, 0x85, 0xfd, 0x86, 0xfd, 0xa4, 0xfd, 0xa3, 0xfd, + 0xbe, 0xfd, 0xbf, 0xfd, 0xdb, 0xfd, 0xd9, 0xfd, 0xf7, 0xfd, 0xfa, 0xfd, + 0x15, 0xfe, 0x12, 0xfe, 0x35, 0xfe, 0x35, 0xfe, 0x4f, 0xfe, 0x4e, 0xfe, + 0x71, 0xfe, 0x71, 0xfe, 0x8d, 0xfe, 0x8e, 0xfe, 0xad, 0xfe, 0xac, 0xfe, + 0xcd, 0xfe, 0xce, 0xfe, 0xed, 0xfe, 0xee, 0xfe, 0x0f, 0xff, 0x0f, 0xff, + 0x31, 0xff, 0x31, 0xff, 0x54, 0xff, 0x53, 0xff, 0x79, 0xff, 0x7a, 0xff, + 0x9d, 0xff, 0x9e, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0x0e, 0x00, 0x0f, 0x00, 0x37, 0x00, 0x37, 0x00, 0x5e, 0x00, 0x5e, 0x00, + 0x85, 0x00, 0x85, 0x00, 0xaf, 0x00, 0xae, 0x00, 0xd4, 0x00, 0xd5, 0x00, + 0x00, 0x01, 0x00, 0x01, 0x26, 0x01, 0x27, 0x01, 0x4e, 0x01, 0x4f, 0x01, + 0x77, 0x01, 0x77, 0x01, 0x9c, 0x01, 0x9c, 0x01, 0xc5, 0x01, 0xc6, 0x01, + 0xe8, 0x01, 0xe9, 0x01, 0x0f, 0x02, 0x0f, 0x02, 0x31, 0x02, 0x32, 0x02, + 0x53, 0x02, 0x54, 0x02, 0x78, 0x02, 0x77, 0x02, 0x93, 0x02, 0x96, 0x02, + 0xb6, 0x02, 0xb4, 0x02, 0xd1, 0x02, 0xd2, 0x02, 0xec, 0x02, 0xed, 0x02, + 0x08, 0x03, 0x08, 0x03, 0x1e, 0x03, 0x1f, 0x03, 0x37, 0x03, 0x39, 0x03, + 0x4c, 0x03, 0x4c, 0x03, 0x60, 0x03, 0x5f, 0x03, 0x71, 0x03, 0x71, 0x03, + 0x82, 0x03, 0x83, 0x03, 0x8f, 0x03, 0x90, 0x03, 0x9f, 0x03, 0x9e, 0x03, + 0xaa, 0x03, 0xac, 0x03, 0xb3, 0x03, 0xb3, 0x03, 0xbf, 0x03, 0xc0, 0x03, + 0xc7, 0x03, 0xc7, 0x03, 0xcf, 0x03, 0xd1, 0x03, 0xd8, 0x03, 0xd7, 0x03, + 0xdb, 0x03, 0xdc, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe7, 0x03, 0xe7, 0x03, + 0xec, 0x03, 0xec, 0x03, 0xef, 0x03, 0xf1, 0x03, 0xf2, 0x03, 0xf1, 0x03, + 0xf6, 0x03, 0xf7, 0x03, 0xf8, 0x03, 0xf6, 0x03, 0xfa, 0x03, 0xfb, 0x03, + 0xfc, 0x03, 0xfc, 0x03, 0xfd, 0x03, 0xfd, 0x03, 0xfe, 0x03, 0xff, 0x03, + 0xff, 0x03, 0xfe, 0x03, 0xff, 0x03, 0x00, 0x04, 0xfd, 0x03, 0xfd, 0x03, + 0xfb, 0x03, 0xfb, 0x03, 0xfa, 0x03, 0xfa, 0x03, 0xf7, 0x03, 0xf7, 0x03, + 0xf3, 0x03, 0xf3, 0x03, 0xf0, 0x03, 0xf0, 0x03, 0xe9, 0x03, 0xe8, 0x03, + 0xe0, 0x03, 0xe2, 0x03, 0xd9, 0x03, 0xd8, 0x03, 0xce, 0x03, 0xce, 0x03, + 0xc4, 0x03, 0xc3, 0x03, 0xb6, 0x03, 0xb6, 0x03, 0xa7, 0x03, 0xa8, 0x03, + 0x96, 0x03, 0x95, 0x03, 0x83, 0x03, 0x85, 0x03, 0x71, 0x03, 0x6f, 0x03, + 0x58, 0x03, 0x59, 0x03, 0x42, 0x03, 0x41, 0x03, 0x27, 0x03, 0x28, 0x03, + 0x0f, 0x03, 0x0e, 0x03, 0xf0, 0x02, 0xf2, 0x02, 0xd3, 0x02, 0xd3, 0x02, + 0xb2, 0x02, 0xb3, 0x02, 0x93, 0x02, 0x91, 0x02, 0x6e, 0x02, 0x6f, 0x02, + 0x4d, 0x02, 0x4d, 0x02, 0x27, 0x02, 0x28, 0x02, 0x02, 0x02, 0x02, 0x02, + 0xdd, 0x01, 0xdc, 0x01, 0xb3, 0x01, 0xb5, 0x01, 0x91, 0x01, 0x90, 0x01, + 0x65, 0x01, 0x67, 0x01, 0x41, 0x01, 0x40, 0x01, 0x19, 0x01, 0x18, 0x01, + 0xf1, 0x00, 0xf1, 0x00, 0xcd, 0x00, 0xcd, 0x00, 0xa4, 0x00, 0xa4, 0x00, + 0x80, 0x00, 0x80, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x36, 0x00, 0x37, 0x00, + 0x15, 0x00, 0x13, 0x00, 0xef, 0xff, 0xef, 0xff, 0xcf, 0xff, 0xcf, 0xff, + 0xab, 0xff, 0xac, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x6d, 0xff, 0x6d, 0xff, + 0x4e, 0xff, 0x4e, 0xff, 0x30, 0xff, 0x31, 0xff, 0x12, 0xff, 0x12, 0xff, + 0xf9, 0xfe, 0xf8, 0xfe, 0xdb, 0xfe, 0xdc, 0xfe, 0xc2, 0xfe, 0xc0, 0xfe, + 0xa7, 0xfe, 0xa8, 0xfe, 0x8c, 0xfe, 0x8c, 0xfe, 0x73, 0xfe, 0x74, 0xfe, + 0x5b, 0xfe, 0x5a, 0xfe, 0x40, 0xfe, 0x3f, 0xfe, 0x29, 0xfe, 0x28, 0xfe, + 0x0d, 0xfe, 0x0e, 0xfe, 0xf5, 0xfd, 0xf5, 0xfd, 0xdc, 0xfd, 0xda, 0xfd, + 0xc0, 0xfd, 0xc1, 0xfd, 0xaa, 0xfd, 0xa8, 0xfd, 0x8d, 0xfd, 0x8d, 0xfd, + 0x75, 0xfd, 0x74, 0xfd, 0x5b, 0xfd, 0x5a, 0xfd, 0x41, 0xfd, 0x40, 0xfd, + 0x28, 0xfd, 0x28, 0xfd, 0x0e, 0xfd, 0x0e, 0xfd, 0xf7, 0xfc, 0xf6, 0xfc, + 0xdc, 0xfc, 0xdb, 0xfc, 0xc3, 0xfc, 0xc4, 0xfc, 0xac, 0xfc, 0xab, 0xfc, + 0x94, 0xfc, 0x94, 0xfc, 0x7d, 0xfc, 0x7e, 0xfc, 0x67, 0xfc, 0x68, 0xfc, + 0x54, 0xfc, 0x52, 0xfc, 0x3e, 0xfc, 0x40, 0xfc, 0x2e, 0xfc, 0x2c, 0xfc, + 0x1b, 0xfc, 0x1d, 0xfc, 0x0c, 0xfc, 0x0b, 0xfc, 0xfc, 0xfb, 0xfb, 0xfb, + 0xf0, 0xfb, 0xf3, 0xfb, 0xe4, 0xfb, 0xe4, 0xfb, 0xdd, 0xfb, 0xdc, 0xfb, + 0xd2, 0xfb, 0xd4, 0xfb, 0xcf, 0xfb, 0xce, 0xfb, 0xcb, 0xfb, 0xca, 0xfb, + 0xc8, 0xfb, 0xc9, 0xfb, 0xca, 0xfb, 0xc9, 0xfb, 0xca, 0xfb, 0xca, 0xfb, + 0xce, 0xfb, 0xcf, 0xfb, 0xd0, 0xfb, 0xd1, 0xfb, 0xd8, 0xfb, 0xd9, 0xfb, + 0xe0, 0xfb, 0xe0, 0xfb, 0xe9, 0xfb, 0xe9, 0xfb, 0xf4, 0xfb, 0xf6, 0xfb, + 0x01, 0xfc, 0x00, 0xfc, 0x0d, 0xfc, 0x0e, 0xfc, 0x1d, 0xfc, 0x1c, 0xfc, + 0x2a, 0xfc, 0x2b, 0xfc, 0x3b, 0xfc, 0x3b, 0xfc, 0x4b, 0xfc, 0x4c, 0xfc, + 0x5e, 0xfc, 0x5d, 0xfc, 0x70, 0xfc, 0x70, 0xfc, 0x83, 0xfc, 0x83, 0xfc, + 0x96, 0xfc, 0x96, 0xfc, 0xaa, 0xfc, 0xab, 0xfc, 0xbd, 0xfc, 0xbe, 0xfc, + 0xd1, 0xfc, 0xd1, 0xfc, 0xe6, 0xfc, 0xe7, 0xfc, 0xfa, 0xfc, 0xfa, 0xfc, + 0x11, 0xfd, 0x10, 0xfd, 0x25, 0xfd, 0x25, 0xfd, 0x3a, 0xfd, 0x3a, 0xfd, + 0x52, 0xfd, 0x53, 0xfd, 0x69, 0xfd, 0x68, 0xfd, 0x80, 0xfd, 0x80, 0xfd, + 0x98, 0xfd, 0x99, 0xfd, 0xb1, 0xfd, 0xb1, 0xfd, 0xca, 0xfd, 0xcc, 0xfd, + 0xe6, 0xfd, 0xe3, 0xfd, 0x01, 0xfe, 0x03, 0xfe, 0x1d, 0xfe, 0x1c, 0xfe, + 0x3c, 0xfe, 0x3c, 0xfe, 0x58, 0xfe, 0x59, 0xfe, 0x7b, 0xfe, 0x7a, 0xfe, + 0x9a, 0xfe, 0x9c, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xe2, 0xfe, 0xe2, 0xfe, + 0x05, 0xff, 0x08, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x53, 0xff, 0x53, 0xff, + 0x7b, 0xff, 0x7b, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xcc, 0xff, 0xce, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0x21, 0x00, 0x22, 0x00, 0x50, 0x00, 0x51, 0x00, + 0x7b, 0x00, 0x7c, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0xd4, 0x00, 0xd6, 0x00, + 0xff, 0x00, 0xfe, 0x00, 0x2d, 0x01, 0x2e, 0x01, 0x55, 0x01, 0x58, 0x01, + 0x84, 0x01, 0x83, 0x01, 0xac, 0x01, 0xad, 0x01, 0xd6, 0x01, 0xd7, 0x01, + 0xfc, 0x01, 0xfd, 0x01, 0x23, 0x02, 0x23, 0x02, 0x48, 0x02, 0x49, 0x02, + 0x6c, 0x02, 0x6c, 0x02, 0x8d, 0x02, 0x8e, 0x02, 0xaf, 0x02, 0xb0, 0x02, + 0xcc, 0x02, 0xcd, 0x02, 0xea, 0x02, 0xea, 0x02, 0x03, 0x03, 0x03, 0x03, + 0x1d, 0x03, 0x1e, 0x03, 0x33, 0x03, 0x33, 0x03, 0x48, 0x03, 0x4b, 0x03, + 0x5e, 0x03, 0x5c, 0x03, 0x6e, 0x03, 0x70, 0x03, 0x7f, 0x03, 0x7f, 0x03, + 0x8e, 0x03, 0x8e, 0x03, 0x99, 0x03, 0x9a, 0x03, 0xa5, 0x03, 0xa6, 0x03, + 0xb0, 0x03, 0xb0, 0x03, 0xb5, 0x03, 0xb9, 0x03, 0xc2, 0x03, 0xc1, 0x03, + 0xc4, 0x03, 0xc6, 0x03, 0xcd, 0x03, 0xcd, 0x03, 0xd1, 0x03, 0xd1, 0x03, + 0xd4, 0x03, 0xd6, 0x03, 0xdc, 0x03, 0xda, 0x03, 0xdb, 0x03, 0xde, 0x03, + 0xe1, 0x03, 0xe1, 0x03, 0xe2, 0x03, 0xe1, 0x03, 0xe3, 0x03, 0xe4, 0x03, + 0xe7, 0x03, 0xe7, 0x03, 0xe7, 0x03, 0xe7, 0x03, 0xeb, 0x03, 0xea, 0x03, + 0xe9, 0x03, 0xea, 0x03, 0xec, 0x03, 0xec, 0x03, 0xea, 0x03, 0xec, 0x03, + 0xeb, 0x03, 0xeb, 0x03, 0xec, 0x03, 0xec, 0x03, 0xe8, 0x03, 0xe7, 0x03, + 0xe9, 0x03, 0xea, 0x03, 0xe4, 0x03, 0xe5, 0x03, 0xe3, 0x03, 0xe2, 0x03, + 0xdd, 0x03, 0xde, 0x03, 0xd9, 0x03, 0xd6, 0x03, 0xd1, 0x03, 0xd2, 0x03, + 0xca, 0x03, 0xcb, 0x03, 0xc3, 0x03, 0xc1, 0x03, 0xb6, 0x03, 0xb7, 0x03, + 0xac, 0x03, 0xa9, 0x03, 0x9c, 0x03, 0x9c, 0x03, 0x8f, 0x03, 0x8f, 0x03, + 0x7c, 0x03, 0x7d, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x58, 0x03, 0x56, 0x03, + 0x41, 0x03, 0x41, 0x03, 0x2b, 0x03, 0x2c, 0x03, 0x12, 0x03, 0x11, 0x03, + 0xf8, 0x02, 0xfa, 0x02, 0xdd, 0x02, 0xdc, 0x02, 0xbe, 0x02, 0xc0, 0x02, + 0xa3, 0x02, 0xa1, 0x02, 0x82, 0x02, 0x82, 0x02, 0x63, 0x02, 0x61, 0x02, + 0x41, 0x02, 0x40, 0x02, 0x1f, 0x02, 0x20, 0x02, 0xfd, 0x01, 0xfa, 0x01, + 0xda, 0x01, 0xdc, 0x01, 0xb8, 0x01, 0xb6, 0x01, 0x94, 0x01, 0x96, 0x01, + 0x72, 0x01, 0x71, 0x01, 0x4e, 0x01, 0x4f, 0x01, 0x2a, 0x01, 0x2c, 0x01, + 0x07, 0x01, 0x06, 0x01, 0xe5, 0x00, 0xe5, 0x00, 0xc2, 0x00, 0xc3, 0x00, + 0xa1, 0x00, 0xa0, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0x40, 0x00, 0x42, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x01, 0x00, 0x03, 0x00, + 0xe2, 0xff, 0xe3, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xa7, 0xff, 0xa7, 0xff, + 0x89, 0xff, 0x88, 0xff, 0x6c, 0xff, 0x6d, 0xff, 0x50, 0xff, 0x50, 0xff, + 0x33, 0xff, 0x33, 0xff, 0x16, 0xff, 0x17, 0xff, 0xfc, 0xfe, 0xfa, 0xfe, + 0xdf, 0xfe, 0xdf, 0xfe, 0xc0, 0xfe, 0xc1, 0xfe, 0xa7, 0xfe, 0xa7, 0xfe, + 0x88, 0xfe, 0x88, 0xfe, 0x6d, 0xfe, 0x6c, 0xfe, 0x4e, 0xfe, 0x4e, 0xfe, + 0x33, 0xfe, 0x2f, 0xfe, 0x12, 0xfe, 0x14, 0xfe, 0xf6, 0xfd, 0xf2, 0xfd, + 0xd5, 0xfd, 0xd6, 0xfd, 0xb6, 0xfd, 0xb5, 0xfd, 0x97, 0xfd, 0x98, 0xfd, + 0x78, 0xfd, 0x77, 0xfd, 0x59, 0xfd, 0x58, 0xfd, 0x3b, 0xfd, 0x39, 0xfd, + 0x1a, 0xfd, 0x1b, 0xfd, 0xfe, 0xfc, 0xfd, 0xfc, 0xdf, 0xfc, 0xdf, 0xfc, + 0xc2, 0xfc, 0xc2, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0x8a, 0xfc, 0x8a, 0xfc, + 0x71, 0xfc, 0x71, 0xfc, 0x56, 0xfc, 0x56, 0xfc, 0x41, 0xfc, 0x41, 0xfc, + 0x29, 0xfc, 0x29, 0xfc, 0x15, 0xfc, 0x15, 0xfc, 0x01, 0xfc, 0x02, 0xfc, + 0xf2, 0xfb, 0xf3, 0xfb, 0xe1, 0xfb, 0xe2, 0xfb, 0xd6, 0xfb, 0xd5, 0xfb, + 0xcb, 0xfb, 0xcc, 0xfb, 0xc1, 0xfb, 0xc1, 0xfb, 0xbb, 0xfb, 0xbb, 0xfb, + 0xb4, 0xfb, 0xb6, 0xfb, 0xb5, 0xfb, 0xb3, 0xfb, 0xb1, 0xfb, 0xb2, 0xfb, + 0xb6, 0xfb, 0xb4, 0xfb, 0xb8, 0xfb, 0xb7, 0xfb, 0xbf, 0xfb, 0xbf, 0xfb, + 0xc7, 0xfb, 0xc6, 0xfb, 0xcf, 0xfb, 0xce, 0xfb, 0xda, 0xfb, 0xda, 0xfb, + 0xe6, 0xfb, 0xe5, 0xfb, 0xf1, 0xfb, 0xf3, 0xfb, 0x01, 0xfc, 0xff, 0xfb, + 0x0e, 0xfc, 0x10, 0xfc, 0x20, 0xfc, 0x1f, 0xfc, 0x31, 0xfc, 0x32, 0xfc, + 0x42, 0xfc, 0x42, 0xfc, 0x55, 0xfc, 0x55, 0xfc, 0x67, 0xfc, 0x68, 0xfc, + 0x7a, 0xfc, 0x78, 0xfc, 0x8c, 0xfc, 0x8d, 0xfc, 0xa0, 0xfc, 0x9f, 0xfc, + 0xb2, 0xfc, 0xb2, 0xfc, 0xc6, 0xfc, 0xc7, 0xfc, 0xd9, 0xfc, 0xd8, 0xfc, + 0xec, 0xfc, 0xee, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0x12, 0xfd, 0x14, 0xfd, + 0x27, 0xfd, 0x27, 0xfd, 0x39, 0xfd, 0x38, 0xfd, 0x4e, 0xfd, 0x50, 0xfd, + 0x62, 0xfd, 0x60, 0xfd, 0x76, 0xfd, 0x78, 0xfd, 0x8d, 0xfd, 0x8c, 0xfd, + 0xa1, 0xfd, 0xa1, 0xfd, 0xb9, 0xfd, 0xb9, 0xfd, 0xd1, 0xfd, 0xd2, 0xfd, + 0xe8, 0xfd, 0xe8, 0xfd, 0x03, 0xfe, 0x02, 0xfe, 0x1c, 0xfe, 0x1c, 0xfe, + 0x3b, 0xfe, 0x3a, 0xfe, 0x55, 0xfe, 0x56, 0xfe, 0x75, 0xfe, 0x75, 0xfe, + 0x94, 0xfe, 0x95, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, + 0xfb, 0xfe, 0xfb, 0xfe, 0x22, 0xff, 0x21, 0xff, 0x46, 0xff, 0x46, 0xff, + 0x6e, 0xff, 0x6d, 0xff, 0x97, 0xff, 0x97, 0xff, 0xbc, 0xff, 0xbd, 0xff, + 0xea, 0xff, 0xea, 0xff, 0x11, 0x00, 0x13, 0x00, 0x3e, 0x00, 0x3d, 0x00, + 0x69, 0x00, 0x6b, 0x00, 0x94, 0x00, 0x94, 0x00, 0xc0, 0x00, 0xc1, 0x00, + 0xea, 0x00, 0xea, 0x00, 0x17, 0x01, 0x17, 0x01, 0x3d, 0x01, 0x3d, 0x01, + 0x6a, 0x01, 0x6a, 0x01, 0x91, 0x01, 0x92, 0x01, 0xb8, 0x01, 0xb8, 0x01, + 0xe3, 0x01, 0xe2, 0x01, 0x03, 0x02, 0x04, 0x02, 0x29, 0x02, 0x2a, 0x02, + 0x4b, 0x02, 0x4a, 0x02, 0x6b, 0x02, 0x6c, 0x02, 0x8d, 0x02, 0x8d, 0x02, + 0xa8, 0x02, 0xa9, 0x02, 0xc8, 0x02, 0xc8, 0x02, 0xe1, 0x02, 0xe0, 0x02, + 0xf9, 0x02, 0xf8, 0x02, 0x11, 0x03, 0x12, 0x03, 0x27, 0x03, 0x25, 0x03, + 0x3c, 0x03, 0x3c, 0x03, 0x4c, 0x03, 0x4b, 0x03, 0x5e, 0x03, 0x5d, 0x03, + 0x6d, 0x03, 0x6d, 0x03, 0x7b, 0x03, 0x79, 0x03, 0x8a, 0x03, 0x8a, 0x03, + 0x95, 0x03, 0x93, 0x03, 0xa1, 0x03, 0xa1, 0x03, 0xad, 0x03, 0xac, 0x03, + 0xb5, 0x03, 0xb5, 0x03, 0xbf, 0x03, 0xbe, 0x03, 0xc6, 0x03, 0xc8, 0x03, + 0xcf, 0x03, 0xcc, 0x03, 0xd7, 0x03, 0xd9, 0x03, 0xde, 0x03, 0xdd, 0x03, + 0xe3, 0x03, 0xe3, 0x03, 0xea, 0x03, 0xe9, 0x03, 0xed, 0x03, 0xef, 0x03, + 0xf4, 0x03, 0xf3, 0x03, 0xf8, 0x03, 0xf9, 0x03, 0xfc, 0x03, 0xfc, 0x03, + 0xff, 0x03, 0x00, 0x04, 0x03, 0x04, 0x03, 0x04, 0x05, 0x04, 0x02, 0x04, + 0x04, 0x04, 0x07, 0x04, 0x06, 0x04, 0x04, 0x04, 0x03, 0x04, 0x06, 0x04, + 0x02, 0x04, 0x02, 0x04, 0xff, 0x03, 0xff, 0x03, 0xf8, 0x03, 0xfb, 0x03, + 0xf7, 0x03, 0xf5, 0x03, 0xeb, 0x03, 0xed, 0x03, 0xe5, 0x03, 0xe5, 0x03, + 0xd9, 0x03, 0xd9, 0x03, 0xcb, 0x03, 0xcc, 0x03, 0xc0, 0x03, 0xc0, 0x03, + 0xad, 0x03, 0xae, 0x03, 0x9d, 0x03, 0x9d, 0x03, 0x89, 0x03, 0x8a, 0x03, + 0x74, 0x03, 0x75, 0x03, 0x5e, 0x03, 0x5f, 0x03, 0x43, 0x03, 0x43, 0x03, + 0x2a, 0x03, 0x2b, 0x03, 0x0d, 0x03, 0x0e, 0x03, 0xf2, 0x02, 0xf2, 0x02, + 0xd3, 0x02, 0xd5, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0x96, 0x02, 0x95, 0x02, + 0x72, 0x02, 0x75, 0x02, 0x56, 0x02, 0x53, 0x02, 0x30, 0x02, 0x34, 0x02, + 0x11, 0x02, 0x0f, 0x02, 0xee, 0x01, 0xee, 0x01, 0xca, 0x01, 0xcc, 0x01, + 0xaa, 0x01, 0xa9, 0x01, 0x88, 0x01, 0x89, 0x01, 0x67, 0x01, 0x68, 0x01, + 0x44, 0x01, 0x43, 0x01, 0x27, 0x01, 0x28, 0x01, 0x05, 0x01, 0x04, 0x01, + 0xe8, 0x00, 0xe9, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xad, 0x00, 0xab, 0x00, + 0x8d, 0x00, 0x8f, 0x00, 0x73, 0x00, 0x72, 0x00, 0x59, 0x00, 0x58, 0x00, + 0x3b, 0x00, 0x3b, 0x00, 0x23, 0x00, 0x23, 0x00, 0x09, 0x00, 0x09, 0x00, + 0xf0, 0xff, 0xf0, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xbe, 0xff, 0xbd, 0xff, + 0xa8, 0xff, 0xa8, 0xff, 0x8d, 0xff, 0x8b, 0xff, 0x76, 0xff, 0x77, 0xff, + 0x5e, 0xff, 0x5d, 0xff, 0x44, 0xff, 0x44, 0xff, 0x2b, 0xff, 0x2b, 0xff, + 0x10, 0xff, 0x0e, 0xff, 0xf5, 0xfe, 0xf7, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, + 0xbe, 0xfe, 0xbf, 0xfe, 0xa2, 0xfe, 0xa3, 0xfe, 0x85, 0xfe, 0x84, 0xfe, + 0x68, 0xfe, 0x69, 0xfe, 0x46, 0xfe, 0x47, 0xfe, 0x2c, 0xfe, 0x2a, 0xfe, + 0x06, 0xfe, 0x08, 0xfe, 0xea, 0xfd, 0xe8, 0xfd, 0xc8, 0xfd, 0xc8, 0xfd, + 0xa6, 0xfd, 0xa6, 0xfd, 0x87, 0xfd, 0x86, 0xfd, 0x63, 0xfd, 0x63, 0xfd, + 0x43, 0xfd, 0x43, 0xfd, 0x24, 0xfd, 0x23, 0xfd, 0x02, 0xfd, 0x00, 0xfd, + 0xe2, 0xfc, 0xe5, 0xfc, 0xc4, 0xfc, 0xc3, 0xfc, 0xa8, 0xfc, 0xa8, 0xfc, + 0x89, 0xfc, 0x88, 0xfc, 0x71, 0xfc, 0x6f, 0xfc, 0x53, 0xfc, 0x56, 0xfc, + 0x40, 0xfc, 0x3c, 0xfc, 0x27, 0xfc, 0x29, 0xfc, 0x14, 0xfc, 0x12, 0xfc, + 0x02, 0xfc, 0x02, 0xfc, 0xf0, 0xfb, 0xf1, 0xfb, 0xe3, 0xfb, 0xe2, 0xfb, + 0xd5, 0xfb, 0xd7, 0xfb, 0xce, 0xfb, 0xcb, 0xfb, 0xc5, 0xfb, 0xc7, 0xfb, + 0xc1, 0xfb, 0xc1, 0xfb, 0xbe, 0xfb, 0xbf, 0xfb, 0xbe, 0xfb, 0xbd, 0xfb, + 0xbd, 0xfb, 0xbe, 0xfb, 0xc1, 0xfb, 0xc1, 0xfb, 0xc4, 0xfb, 0xc4, 0xfb, + 0xcc, 0xfb, 0xcd, 0xfb, 0xd1, 0xfb, 0xd2, 0xfb, 0xde, 0xfb, 0xde, 0xfb, + 0xe8, 0xfb, 0xe8, 0xfb, 0xf1, 0xfb, 0xf2, 0xfb, 0x02, 0xfc, 0x00, 0xfc, + 0x0e, 0xfc, 0x0f, 0xfc, 0x1d, 0xfc, 0x1e, 0xfc, 0x2f, 0xfc, 0x2e, 0xfc, + 0x3c, 0xfc, 0x3d, 0xfc, 0x4f, 0xfc, 0x4d, 0xfc, 0x5f, 0xfc, 0x60, 0xfc, + 0x71, 0xfc, 0x70, 0xfc, 0x84, 0xfc, 0x82, 0xfc, 0x94, 0xfc, 0x95, 0xfc, + 0xa7, 0xfc, 0xa5, 0xfc, 0xba, 0xfc, 0xbb, 0xfc, 0xcd, 0xfc, 0xcb, 0xfc, + 0xe1, 0xfc, 0xe1, 0xfc, 0xf2, 0xfc, 0xf2, 0xfc, 0x07, 0xfd, 0x06, 0xfd, + 0x1c, 0xfd, 0x1c, 0xfd, 0x32, 0xfd, 0x31, 0xfd, 0x46, 0xfd, 0x46, 0xfd, + 0x5e, 0xfd, 0x5d, 0xfd, 0x73, 0xfd, 0x73, 0xfd, 0x8b, 0xfd, 0x8b, 0xfd, + 0xa5, 0xfd, 0xa5, 0xfd, 0xbd, 0xfd, 0xbd, 0xfd, 0xdb, 0xfd, 0xda, 0xfd, + 0xf6, 0xfd, 0xf5, 0xfd, 0x14, 0xfe, 0x13, 0xfe, 0x32, 0xfe, 0x32, 0xfe, + 0x52, 0xfe, 0x52, 0xfe, 0x73, 0xfe, 0x72, 0xfe, 0x93, 0xfe, 0x93, 0xfe, + 0xb7, 0xfe, 0xb7, 0xfe, 0xdd, 0xfe, 0xdb, 0xfe, 0x01, 0xff, 0x01, 0xff, + 0x28, 0xff, 0x27, 0xff, 0x52, 0xff, 0x4e, 0xff, 0x77, 0xff, 0x79, 0xff, + 0xa2, 0xff, 0x9e, 0xff, 0xca, 0xff, 0xca, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0x1d, 0x00, 0x1b, 0x00, 0x46, 0x00, 0x47, 0x00, 0x70, 0x00, 0x6e, 0x00, + 0x9b, 0x00, 0x99, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xea, 0x00, 0xe8, 0x00, + 0x12, 0x01, 0x13, 0x01, 0x38, 0x01, 0x38, 0x01, 0x5f, 0x01, 0x5e, 0x01, + 0x83, 0x01, 0x82, 0x01, 0xa5, 0x01, 0xa5, 0x01, 0xc8, 0x01, 0xc9, 0x01, + 0xe8, 0x01, 0xe7, 0x01, 0x08, 0x02, 0x07, 0x02, 0x23, 0x02, 0x22, 0x02, + 0x3e, 0x02, 0x3e, 0x02, 0x5a, 0x02, 0x5a, 0x02, 0x73, 0x02, 0x71, 0x02, + 0x88, 0x02, 0x89, 0x02, 0x9e, 0x02, 0x9c, 0x02, 0xb2, 0x02, 0xb3, 0x02, + 0xc6, 0x02, 0xc4, 0x02, 0xd7, 0x02, 0xd7, 0x02, 0xe9, 0x02, 0xe7, 0x02, + 0xf7, 0x02, 0xf8, 0x02, 0x07, 0x03, 0x04, 0x03, 0x13, 0x03, 0x13, 0x03, + 0x1f, 0x03, 0x20, 0x03, 0x2f, 0x03, 0x2e, 0x03, 0x38, 0x03, 0x38, 0x03, + 0x46, 0x03, 0x46, 0x03, 0x50, 0x03, 0x4f, 0x03, 0x5c, 0x03, 0x5c, 0x03, + 0x69, 0x03, 0x67, 0x03, 0x72, 0x03, 0x72, 0x03, 0x7e, 0x03, 0x7e, 0x03, + 0x89, 0x03, 0x8a, 0x03, 0x94, 0x03, 0x93, 0x03, 0x9e, 0x03, 0xa0, 0x03, + 0xaa, 0x03, 0xa8, 0x03, 0xb3, 0x03, 0xb3, 0x03, 0xbf, 0x03, 0xbe, 0x03, + 0xc7, 0x03, 0xc6, 0x03, 0xd2, 0x03, 0xd2, 0x03, 0xda, 0x03, 0xd9, 0x03, + 0xe2, 0x03, 0xe4, 0x03, 0xea, 0x03, 0xe8, 0x03, 0xf2, 0x03, 0xf1, 0x03, + 0xf4, 0x03, 0xf5, 0x03, 0xfc, 0x03, 0xfb, 0x03, 0xfb, 0x03, 0xfc, 0x03, + 0xfe, 0x03, 0xfc, 0x03, 0xfd, 0x03, 0xfe, 0x03, 0xfc, 0x03, 0xfa, 0x03, + 0xf6, 0x03, 0xf6, 0x03, 0xf1, 0x03, 0xf1, 0x03, 0xe9, 0x03, 0xe8, 0x03, + 0xdf, 0x03, 0xdf, 0x03, 0xd3, 0x03, 0xd2, 0x03, 0xc4, 0x03, 0xc4, 0x03, + 0xb4, 0x03, 0xb4, 0x03, 0xa1, 0x03, 0xa2, 0x03, 0x8f, 0x03, 0x8d, 0x03, + 0x77, 0x03, 0x79, 0x03, 0x61, 0x03, 0x5f, 0x03, 0x47, 0x03, 0x48, 0x03, + 0x2a, 0x03, 0x29, 0x03, 0x10, 0x03, 0x0f, 0x03, 0xf2, 0x02, 0xf0, 0x02, + 0xd2, 0x02, 0xd2, 0x02, 0xb3, 0x02, 0xb2, 0x02, 0x91, 0x02, 0x92, 0x02, + 0x72, 0x02, 0x71, 0x02, 0x4e, 0x02, 0x4e, 0x02, 0x2e, 0x02, 0x2c, 0x02, + 0x0b, 0x02, 0x0b, 0x02, 0xe8, 0x01, 0xe7, 0x01, 0xc9, 0x01, 0xc8, 0x01, + 0xa4, 0x01, 0xa4, 0x01, 0x85, 0x01, 0x84, 0x01, 0x64, 0x01, 0x64, 0x01, + 0x43, 0x01, 0x44, 0x01, 0x26, 0x01, 0x25, 0x01, 0x04, 0x01, 0x04, 0x01, + 0xe8, 0x00, 0xe8, 0x00, 0xcb, 0x00, 0xca, 0x00, 0xae, 0x00, 0xad, 0x00, + 0x93, 0x00, 0x92, 0x00, 0x77, 0x00, 0x76, 0x00, 0x5f, 0x00, 0x5e, 0x00, + 0x42, 0x00, 0x40, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0xf8, 0xff, 0xf6, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xc5, 0xff, 0xc5, 0xff, + 0xad, 0xff, 0xac, 0xff, 0x92, 0xff, 0x93, 0xff, 0x7a, 0xff, 0x79, 0xff, + 0x5f, 0xff, 0x5e, 0xff, 0x44, 0xff, 0x45, 0xff, 0x2a, 0xff, 0x28, 0xff, + 0x0d, 0xff, 0x0f, 0xff, 0xf2, 0xfe, 0xf0, 0xfe, 0xd4, 0xfe, 0xd3, 0xfe, + 0xb9, 0xfe, 0xb8, 0xfe, 0x99, 0xfe, 0x98, 0xfe, 0x7c, 0xfe, 0x7b, 0xfe, + 0x5d, 0xfe, 0x5d, 0xfe, 0x3b, 0xfe, 0x3b, 0xfe, 0x1e, 0xfe, 0x1c, 0xfe, + 0xfb, 0xfd, 0xfb, 0xfd, 0xde, 0xfd, 0xdd, 0xfd, 0xbb, 0xfd, 0xba, 0xfd, + 0x9b, 0xfd, 0x99, 0xfd, 0x7b, 0xfd, 0x7c, 0xfd, 0x59, 0xfd, 0x58, 0xfd, + 0x3d, 0xfd, 0x3c, 0xfd, 0x1b, 0xfd, 0x1b, 0xfd, 0xff, 0xfc, 0xff, 0xfc, + 0xe4, 0xfc, 0xe2, 0xfc, 0xc7, 0xfc, 0xc7, 0xfc, 0xb0, 0xfc, 0xae, 0xfc, + 0x93, 0xfc, 0x93, 0xfc, 0x80, 0xfc, 0x80, 0xfc, 0x69, 0xfc, 0x67, 0xfc, + 0x55, 0xfc, 0x57, 0xfc, 0x45, 0xfc, 0x43, 0xfc, 0x32, 0xfc, 0x34, 0xfc, + 0x26, 0xfc, 0x25, 0xfc, 0x19, 0xfc, 0x18, 0xfc, 0x0f, 0xfc, 0x0f, 0xfc, + 0x07, 0xfc, 0x05, 0xfc, 0x00, 0xfc, 0x00, 0xfc, 0xfb, 0xfb, 0xfc, 0xfb, + 0xfa, 0xfb, 0xf9, 0xfb, 0xf8, 0xfb, 0xf9, 0xfb, 0xf8, 0xfb, 0xf7, 0xfb, + 0xfa, 0xfb, 0xfa, 0xfb, 0xfc, 0xfb, 0xfd, 0xfb, 0x00, 0xfc, 0xff, 0xfb, + 0x07, 0xfc, 0x05, 0xfc, 0x0c, 0xfc, 0x0b, 0xfc, 0x14, 0xfc, 0x12, 0xfc, + 0x19, 0xfc, 0x1b, 0xfc, 0x23, 0xfc, 0x21, 0xfc, 0x2b, 0xfc, 0x2d, 0xfc, + 0x34, 0xfc, 0x32, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x4b, 0xfc, 0x4a, 0xfc, + 0x54, 0xfc, 0x53, 0xfc, 0x61, 0xfc, 0x5f, 0xfc, 0x69, 0xfc, 0x6a, 0xfc, + 0x76, 0xfc, 0x75, 0xfc, 0x83, 0xfc, 0x82, 0xfc, 0x8f, 0xfc, 0x8f, 0xfc, + 0x9b, 0xfc, 0x9b, 0xfc, 0xaa, 0xfc, 0xaa, 0xfc, 0xb7, 0xfc, 0xb6, 0xfc, + 0xc6, 0xfc, 0xc6, 0xfc, 0xd6, 0xfc, 0xd5, 0xfc, 0xe7, 0xfc, 0xe7, 0xfc, + 0xf5, 0xfc, 0xf6, 0xfc, 0x0b, 0xfd, 0x0b, 0xfd, 0x1d, 0xfd, 0x1c, 0xfd, + 0x32, 0xfd, 0x33, 0xfd, 0x49, 0xfd, 0x47, 0xfd, 0x60, 0xfd, 0x63, 0xfd, + 0x7b, 0xfd, 0x79, 0xfd, 0x94, 0xfd, 0x96, 0xfd, 0xb2, 0xfd, 0xb1, 0xfd, + 0xd1, 0xfd, 0xd1, 0xfd, 0xef, 0xfd, 0xf0, 0xfd, 0x13, 0xfe, 0x12, 0xfe, + 0x36, 0xfe, 0x36, 0xfe, 0x5b, 0xfe, 0x5b, 0xfe, 0x82, 0xfe, 0x81, 0xfe, + 0xa8, 0xfe, 0xa9, 0xfe, 0xd2, 0xfe, 0xd2, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, + 0x28, 0xff, 0x27, 0xff, 0x51, 0xff, 0x52, 0xff, 0x7f, 0xff, 0x7e, 0xff, + 0xab, 0xff, 0xab, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0x06, 0x00, 0x05, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x5e, 0x00, 0x5d, 0x00, 0x87, 0x00, 0x88, 0x00, + 0xb6, 0x00, 0xb4, 0x00, 0xdd, 0x00, 0xde, 0x00, 0x07, 0x01, 0x06, 0x01, + 0x2f, 0x01, 0x2f, 0x01, 0x55, 0x01, 0x54, 0x01, 0x79, 0x01, 0x79, 0x01, + 0x9c, 0x01, 0x9c, 0x01, 0xbd, 0x01, 0xbd, 0x01, 0xdd, 0x01, 0xdd, 0x01, + 0xfe, 0x01, 0xfb, 0x01, 0x17, 0x02, 0x18, 0x02, 0x35, 0x02, 0x34, 0x02, + 0x4a, 0x02, 0x4a, 0x02, 0x63, 0x02, 0x64, 0x02, 0x79, 0x02, 0x78, 0x02, + 0x8d, 0x02, 0x8d, 0x02, 0xa1, 0x02, 0xa0, 0x02, 0xb0, 0x02, 0xaf, 0x02, + 0xc1, 0x02, 0xc3, 0x02, 0xd1, 0x02, 0xcf, 0x02, 0xde, 0x02, 0xde, 0x02, + 0xeb, 0x02, 0xeb, 0x02, 0xf8, 0x02, 0xf8, 0x02, 0x04, 0x03, 0x04, 0x03, + 0x10, 0x03, 0x11, 0x03, 0x1c, 0x03, 0x1b, 0x03, 0x27, 0x03, 0x29, 0x03, + 0x33, 0x03, 0x32, 0x03, 0x3d, 0x03, 0x3c, 0x03, 0x4a, 0x03, 0x49, 0x03, + 0x53, 0x03, 0x52, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x6a, 0x03, 0x69, 0x03, + 0x73, 0x03, 0x74, 0x03, 0x80, 0x03, 0x80, 0x03, 0x8a, 0x03, 0x8a, 0x03, + 0x97, 0x03, 0x96, 0x03, 0xa0, 0x03, 0xa1, 0x03, 0xac, 0x03, 0xab, 0x03, + 0xb4, 0x03, 0xb5, 0x03, 0xbe, 0x03, 0xbe, 0x03, 0xc7, 0x03, 0xc7, 0x03, + 0xce, 0x03, 0xcd, 0x03, 0xd6, 0x03, 0xd5, 0x03, 0xdc, 0x03, 0xdc, 0x03, + 0xe1, 0x03, 0xe0, 0x03, 0xe4, 0x03, 0xe4, 0x03, 0xe6, 0x03, 0xe7, 0x03, + 0xe6, 0x03, 0xe5, 0x03, 0xe3, 0x03, 0xe5, 0x03, 0xe2, 0x03, 0xe0, 0x03, + 0xda, 0x03, 0xdc, 0x03, 0xd8, 0x03, 0xd7, 0x03, 0xcc, 0x03, 0xcb, 0x03, + 0xc2, 0x03, 0xc3, 0x03, 0xb5, 0x03, 0xb4, 0x03, 0xa7, 0x03, 0xa6, 0x03, + 0x98, 0x03, 0x97, 0x03, 0x85, 0x03, 0x84, 0x03, 0x72, 0x03, 0x71, 0x03, + 0x5a, 0x03, 0x5c, 0x03, 0x47, 0x03, 0x44, 0x03, 0x2c, 0x03, 0x2d, 0x03, + 0x13, 0x03, 0x12, 0x03, 0xfa, 0x02, 0xfa, 0x02, 0xde, 0x02, 0xde, 0x02, + 0xc3, 0x02, 0xc3, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0x89, 0x02, 0x88, 0x02, + 0x6c, 0x02, 0x6c, 0x02, 0x4d, 0x02, 0x4d, 0x02, 0x31, 0x02, 0x32, 0x02, + 0x14, 0x02, 0x14, 0x02, 0xf6, 0x01, 0xf5, 0x01, 0xdb, 0x01, 0xda, 0x01, + 0xbb, 0x01, 0xbb, 0x01, 0xa1, 0x01, 0x9f, 0x01, 0x83, 0x01, 0x86, 0x01, + 0x69, 0x01, 0x67, 0x01, 0x4f, 0x01, 0x50, 0x01, 0x33, 0x01, 0x33, 0x01, + 0x1a, 0x01, 0x1a, 0x01, 0xff, 0x00, 0xff, 0x00, 0xe7, 0x00, 0xe6, 0x00, + 0xcd, 0x00, 0xcc, 0x00, 0xb3, 0x00, 0xb2, 0x00, 0x98, 0x00, 0x9a, 0x00, + 0x80, 0x00, 0x80, 0x00, 0x65, 0x00, 0x66, 0x00, 0x4e, 0x00, 0x4e, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x15, 0x00, 0x17, 0x00, 0xf9, 0xff, 0xf8, 0xff, + 0xdf, 0xff, 0xe0, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xa4, 0xff, 0xa4, 0xff, + 0x86, 0xff, 0x85, 0xff, 0x64, 0xff, 0x65, 0xff, 0x47, 0xff, 0x46, 0xff, + 0x25, 0xff, 0x23, 0xff, 0x02, 0xff, 0x04, 0xff, 0xe2, 0xfe, 0xe1, 0xfe, + 0xbc, 0xfe, 0xbc, 0xfe, 0x9a, 0xfe, 0x9b, 0xfe, 0x76, 0xfe, 0x74, 0xfe, + 0x50, 0xfe, 0x53, 0xfe, 0x2c, 0xfe, 0x2a, 0xfe, 0x06, 0xfe, 0x08, 0xfe, + 0xe3, 0xfd, 0xe0, 0xfd, 0xbd, 0xfd, 0xc0, 0xfd, 0x9b, 0xfd, 0x9a, 0xfd, + 0x78, 0xfd, 0x78, 0xfd, 0x55, 0xfd, 0x54, 0xfd, 0x35, 0xfd, 0x35, 0xfd, + 0x12, 0xfd, 0x13, 0xfd, 0xf6, 0xfc, 0xf6, 0xfc, 0xd7, 0xfc, 0xd7, 0xfc, + 0xbd, 0xfc, 0xbc, 0xfc, 0xa2, 0xfc, 0xa2, 0xfc, 0x8a, 0xfc, 0x8a, 0xfc, + 0x74, 0xfc, 0x74, 0xfc, 0x60, 0xfc, 0x60, 0xfc, 0x4e, 0xfc, 0x4e, 0xfc, + 0x40, 0xfc, 0x3f, 0xfc, 0x31, 0xfc, 0x32, 0xfc, 0x26, 0xfc, 0x27, 0xfc, + 0x1c, 0xfc, 0x1b, 0xfc, 0x15, 0xfc, 0x16, 0xfc, 0x0f, 0xfc, 0x0d, 0xfc, + 0x0a, 0xfc, 0x0b, 0xfc, 0x09, 0xfc, 0x09, 0xfc, 0x08, 0xfc, 0x07, 0xfc, + 0x09, 0xfc, 0x09, 0xfc, 0x09, 0xfc, 0x0a, 0xfc, 0x11, 0xfc, 0x0e, 0xfc, + 0x12, 0xfc, 0x13, 0xfc, 0x19, 0xfc, 0x19, 0xfc, 0x1f, 0xfc, 0x1f, 0xfc, + 0x26, 0xfc, 0x27, 0xfc, 0x2e, 0xfc, 0x2d, 0xfc, 0x36, 0xfc, 0x35, 0xfc, + 0x3d, 0xfc, 0x3f, 0xfc, 0x47, 0xfc, 0x45, 0xfc, 0x4b, 0xfc, 0x4e, 0xfc, + 0x59, 0xfc, 0x57, 0xfc, 0x5f, 0xfc, 0x60, 0xfc, 0x68, 0xfc, 0x67, 0xfc, + 0x72, 0xfc, 0x73, 0xfc, 0x78, 0xfc, 0x78, 0xfc, 0x84, 0xfc, 0x82, 0xfc, + 0x8c, 0xfc, 0x8c, 0xfc, 0x96, 0xfc, 0x96, 0xfc, 0xa1, 0xfc, 0xa0, 0xfc, + 0xa8, 0xfc, 0xa8, 0xfc, 0xb5, 0xfc, 0xb4, 0xfc, 0xbf, 0xfc, 0xc0, 0xfc, + 0xcd, 0xfc, 0xcb, 0xfc, 0xda, 0xfc, 0xdb, 0xfc, 0xe8, 0xfc, 0xe7, 0xfc, + 0xf9, 0xfc, 0xf9, 0xfc, 0x09, 0xfd, 0x08, 0xfd, 0x1b, 0xfd, 0x1c, 0xfd, + 0x32, 0xfd, 0x2f, 0xfd, 0x44, 0xfd, 0x45, 0xfd, 0x5e, 0xfd, 0x5d, 0xfd, + 0x74, 0xfd, 0x74, 0xfd, 0x8f, 0xfd, 0x8f, 0xfd, 0xab, 0xfd, 0xad, 0xfd, + 0xcb, 0xfd, 0xca, 0xfd, 0xea, 0xfd, 0xea, 0xfd, 0x09, 0xfe, 0x0a, 0xfe, + 0x31, 0xfe, 0x30, 0xfe, 0x53, 0xfe, 0x53, 0xfe, 0x7c, 0xfe, 0x7b, 0xfe, + 0xa2, 0xfe, 0xa2, 0xfe, 0xcc, 0xfe, 0xcb, 0xfe, 0xf4, 0xfe, 0xf4, 0xfe, + 0x1e, 0xff, 0x1e, 0xff, 0x49, 0xff, 0x49, 0xff, 0x74, 0xff, 0x73, 0xff, + 0xa0, 0xff, 0x9f, 0xff, 0xca, 0xff, 0xcb, 0xff, 0xf5, 0xff, 0xf7, 0xff, + 0x22, 0x00, 0x21, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x76, 0x00, 0x76, 0x00, + 0x9e, 0x00, 0x9d, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xee, 0x00, 0xec, 0x00, + 0x12, 0x01, 0x12, 0x01, 0x36, 0x01, 0x36, 0x01, 0x59, 0x01, 0x58, 0x01, + 0x7a, 0x01, 0x7b, 0x01, 0x99, 0x01, 0x98, 0x01, 0xb7, 0x01, 0xb7, 0x01, + 0xd3, 0x01, 0xd2, 0x01, 0xee, 0x01, 0xef, 0x01, 0x08, 0x02, 0x07, 0x02, + 0x20, 0x02, 0x1f, 0x02, 0x38, 0x02, 0x37, 0x02, 0x4f, 0x02, 0x4d, 0x02, + 0x62, 0x02, 0x62, 0x02, 0x77, 0x02, 0x77, 0x02, 0x8a, 0x02, 0x89, 0x02, + 0x9c, 0x02, 0x9d, 0x02, 0xaf, 0x02, 0xad, 0x02, 0xbe, 0x02, 0xbe, 0x02, + 0xce, 0x02, 0xcd, 0x02, 0xdf, 0x02, 0xdf, 0x02, 0xef, 0x02, 0xed, 0x02, + 0x00, 0x03, 0xff, 0x02, 0x0d, 0x03, 0x0c, 0x03, 0x20, 0x03, 0x1f, 0x03, + 0x2d, 0x03, 0x2d, 0x03, 0x3c, 0x03, 0x3a, 0x03, 0x4c, 0x03, 0x4d, 0x03, + 0x5a, 0x03, 0x58, 0x03, 0x6b, 0x03, 0x6c, 0x03, 0x79, 0x03, 0x76, 0x03, + 0x87, 0x03, 0x87, 0x03, 0x99, 0x03, 0x97, 0x03, 0xa1, 0x03, 0xa2, 0x03, + 0xb4, 0x03, 0xb1, 0x03, 0xbc, 0x03, 0xbc, 0x03, 0xc9, 0x03, 0xc8, 0x03, + 0xd4, 0x03, 0xd4, 0x03, 0xdc, 0x03, 0xda, 0x03, 0xe4, 0x03, 0xe5, 0x03, + 0xea, 0x03, 0xe9, 0x03, 0xf1, 0x03, 0xef, 0x03, 0xf1, 0x03, 0xf1, 0x03, + 0xf5, 0x03, 0xf5, 0x03, 0xf6, 0x03, 0xf4, 0x03, 0xf3, 0x03, 0xf2, 0x03, + 0xef, 0x03, 0xef, 0x03, 0xea, 0x03, 0xe9, 0x03, 0xe1, 0x03, 0xe1, 0x03, + 0xd9, 0x03, 0xd8, 0x03, 0xcb, 0x03, 0xcb, 0x03, 0xbf, 0x03, 0xbe, 0x03, + 0xae, 0x03, 0xae, 0x03, 0x9d, 0x03, 0x9d, 0x03, 0x8a, 0x03, 0x8a, 0x03, + 0x76, 0x03, 0x76, 0x03, 0x60, 0x03, 0x60, 0x03, 0x49, 0x03, 0x4a, 0x03, + 0x2f, 0x03, 0x2e, 0x03, 0x16, 0x03, 0x18, 0x03, 0x00, 0x03, 0xfe, 0x02, + 0xe2, 0x02, 0xe3, 0x02, 0xc9, 0x02, 0xc9, 0x02, 0xad, 0x02, 0xad, 0x02, + 0x91, 0x02, 0x93, 0x02, 0x77, 0x02, 0x77, 0x02, 0x5d, 0x02, 0x5c, 0x02, + 0x42, 0x02, 0x42, 0x02, 0x28, 0x02, 0x27, 0x02, 0x0e, 0x02, 0x0e, 0x02, + 0xf4, 0x01, 0xf4, 0x01, 0xdd, 0x01, 0xdc, 0x01, 0xc2, 0x01, 0xc3, 0x01, + 0xae, 0x01, 0xac, 0x01, 0x94, 0x01, 0x95, 0x01, 0x7f, 0x01, 0x7f, 0x01, + 0x6a, 0x01, 0x68, 0x01, 0x53, 0x01, 0x53, 0x01, 0x3c, 0x01, 0x3c, 0x01, + 0x2a, 0x01, 0x29, 0x01, 0x13, 0x01, 0x13, 0x01, 0x00, 0x01, 0x00, 0x01, + 0xea, 0x00, 0xea, 0x00, 0xd5, 0x00, 0xd4, 0x00, 0xbe, 0x00, 0xbf, 0x00, + 0xa7, 0x00, 0xa7, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x77, 0x00, 0x77, 0x00, + 0x5f, 0x00, 0x5e, 0x00, 0x44, 0x00, 0x46, 0x00, 0x2b, 0x00, 0x29, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0xf1, 0xff, 0xf1, 0xff, 0xcf, 0xff, 0xce, 0xff, + 0xb0, 0xff, 0xb1, 0xff, 0x8e, 0xff, 0x8d, 0xff, 0x6c, 0xff, 0x6d, 0xff, + 0x4a, 0xff, 0x49, 0xff, 0x25, 0xff, 0x24, 0xff, 0xfe, 0xfe, 0xff, 0xfe, + 0xd8, 0xfe, 0xda, 0xfe, 0xb5, 0xfe, 0xb3, 0xfe, 0x8b, 0xfe, 0x8c, 0xfe, + 0x65, 0xfe, 0x63, 0xfe, 0x3e, 0xfe, 0x3e, 0xfe, 0x16, 0xfe, 0x16, 0xfe, + 0xf1, 0xfd, 0xf2, 0xfd, 0xcb, 0xfd, 0xc9, 0xfd, 0xa5, 0xfd, 0xa5, 0xfd, + 0x7f, 0xfd, 0x81, 0xfd, 0x5e, 0xfd, 0x5b, 0xfd, 0x39, 0xfd, 0x3b, 0xfd, + 0x1b, 0xfd, 0x1a, 0xfd, 0xfc, 0xfc, 0xf9, 0xfc, 0xdd, 0xfc, 0xdd, 0xfc, + 0xc3, 0xfc, 0xc1, 0xfc, 0xa8, 0xfc, 0xa9, 0xfc, 0x92, 0xfc, 0x91, 0xfc, + 0x7c, 0xfc, 0x7b, 0xfc, 0x67, 0xfc, 0x68, 0xfc, 0x58, 0xfc, 0x56, 0xfc, + 0x46, 0xfc, 0x48, 0xfc, 0x3b, 0xfc, 0x39, 0xfc, 0x2d, 0xfc, 0x2e, 0xfc, + 0x27, 0xfc, 0x26, 0xfc, 0x1d, 0xfc, 0x1e, 0xfc, 0x19, 0xfc, 0x19, 0xfc, + 0x16, 0xfc, 0x15, 0xfc, 0x11, 0xfc, 0x12, 0xfc, 0x13, 0xfc, 0x12, 0xfc, + 0x10, 0xfc, 0x12, 0xfc, 0x16, 0xfc, 0x13, 0xfc, 0x15, 0xfc, 0x16, 0xfc, + 0x19, 0xfc, 0x19, 0xfc, 0x1c, 0xfc, 0x1d, 0xfc, 0x20, 0xfc, 0x1e, 0xfc, + 0x26, 0xfc, 0x27, 0xfc, 0x2b, 0xfc, 0x2b, 0xfc, 0x31, 0xfc, 0x30, 0xfc, + 0x37, 0xfc, 0x38, 0xfc, 0x40, 0xfc, 0x3e, 0xfc, 0x44, 0xfc, 0x46, 0xfc, + 0x4f, 0xfc, 0x4d, 0xfc, 0x54, 0xfc, 0x55, 0xfc, 0x5d, 0xfc, 0x5d, 0xfc, + 0x63, 0xfc, 0x62, 0xfc, 0x6c, 0xfc, 0x6c, 0xfc, 0x75, 0xfc, 0x76, 0xfc, + 0x80, 0xfc, 0x7d, 0xfc, 0x88, 0xfc, 0x8a, 0xfc, 0x94, 0xfc, 0x92, 0xfc, + 0xa0, 0xfc, 0x9f, 0xfc, 0xab, 0xfc, 0xab, 0xfc, 0xbb, 0xfc, 0xb9, 0xfc, + 0xc9, 0xfc, 0xcb, 0xfc, 0xdb, 0xfc, 0xd8, 0xfc, 0xec, 0xfc, 0xeb, 0xfc, + 0x00, 0xfd, 0x00, 0xfd, 0x17, 0xfd, 0x15, 0xfd, 0x2c, 0xfd, 0x2c, 0xfd, + 0x44, 0xfd, 0x44, 0xfd, 0x5f, 0xfd, 0x5d, 0xfd, 0x79, 0xfd, 0x7a, 0xfd, + 0x98, 0xfd, 0x97, 0xfd, 0xb6, 0xfd, 0xb5, 0xfd, 0xd7, 0xfd, 0xd8, 0xfd, + 0xf9, 0xfd, 0xf7, 0xfd, 0x1c, 0xfe, 0x1c, 0xfe, 0x43, 0xfe, 0x41, 0xfe, + 0x67, 0xfe, 0x67, 0xfe, 0x8d, 0xfe, 0x8f, 0xfe, 0xb6, 0xfe, 0xb4, 0xfe, + 0xdf, 0xfe, 0xde, 0xfe, 0x06, 0xff, 0x06, 0xff, 0x2f, 0xff, 0x2e, 0xff, + 0x59, 0xff, 0x59, 0xff, 0x80, 0xff, 0x80, 0xff, 0xab, 0xff, 0xaa, 0xff, + 0xd2, 0xff, 0xd2, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0x21, 0x00, 0x1f, 0x00, + 0x47, 0x00, 0x47, 0x00, 0x6a, 0x00, 0x6b, 0x00, 0x90, 0x00, 0x8f, 0x00, + 0xb1, 0x00, 0xb1, 0x00, 0xd4, 0x00, 0xd3, 0x00, 0xf2, 0x00, 0xf2, 0x00, + 0x13, 0x01, 0x12, 0x01, 0x2f, 0x01, 0x2e, 0x01, 0x4a, 0x01, 0x4a, 0x01, + 0x65, 0x01, 0x65, 0x01, 0x7d, 0x01, 0x7b, 0x01, 0x97, 0x01, 0x98, 0x01, + 0xab, 0x01, 0xab, 0x01, 0xc3, 0x01, 0xc1, 0x01, 0xd6, 0x01, 0xd5, 0x01, + 0xeb, 0x01, 0xeb, 0x01, 0xff, 0x01, 0xfd, 0x01, 0x11, 0x02, 0x11, 0x02, + 0x25, 0x02, 0x24, 0x02, 0x35, 0x02, 0x34, 0x02, 0x49, 0x02, 0x48, 0x02, + 0x58, 0x02, 0x58, 0x02, 0x6d, 0x02, 0x6a, 0x02, 0x7d, 0x02, 0x7f, 0x02, + 0x90, 0x02, 0x8d, 0x02, 0xa2, 0x02, 0xa3, 0x02, 0xb3, 0x02, 0xb3, 0x02, + 0xc8, 0x02, 0xc6, 0x02, 0xd9, 0x02, 0xdb, 0x02, 0xee, 0x02, 0xec, 0x02, + 0x01, 0x03, 0x02, 0x03, 0x14, 0x03, 0x15, 0x03, 0x28, 0x03, 0x2a, 0x03, + 0x3d, 0x03, 0x3c, 0x03, 0x50, 0x03, 0x50, 0x03, 0x65, 0x03, 0x64, 0x03, + 0x75, 0x03, 0x75, 0x03, 0x89, 0x03, 0x89, 0x03, 0x9a, 0x03, 0x99, 0x03, + 0xac, 0x03, 0xaa, 0x03, 0xb8, 0x03, 0xba, 0x03, 0xc9, 0x03, 0xc8, 0x03, + 0xd6, 0x03, 0xd7, 0x03, 0xe2, 0x03, 0xe0, 0x03, 0xec, 0x03, 0xed, 0x03, + 0xf1, 0x03, 0xf3, 0x03, 0xfa, 0x03, 0xf7, 0x03, 0xfc, 0x03, 0xfe, 0x03, + 0xff, 0x03, 0xfd, 0x03, 0xff, 0x03, 0xff, 0x03, 0xfa, 0x03, 0xfa, 0x03, + 0xf6, 0x03, 0xf7, 0x03, 0xf0, 0x03, 0xf0, 0x03, 0xe6, 0x03, 0xe6, 0x03, + 0xda, 0x03, 0xdb, 0x03, 0xce, 0x03, 0xce, 0x03, 0xbd, 0x03, 0xbe, 0x03, + 0xad, 0x03, 0xac, 0x03, 0x9a, 0x03, 0x98, 0x03, 0x83, 0x03, 0x87, 0x03, + 0x70, 0x03, 0x6f, 0x03, 0x57, 0x03, 0x57, 0x03, 0x40, 0x03, 0x40, 0x03, + 0x27, 0x03, 0x25, 0x03, 0x0c, 0x03, 0x0d, 0x03, 0xf3, 0x02, 0xf2, 0x02, + 0xd7, 0x02, 0xd8, 0x02, 0xbe, 0x02, 0xbd, 0x02, 0xa1, 0x02, 0xa0, 0x02, + 0x86, 0x02, 0x86, 0x02, 0x6b, 0x02, 0x6b, 0x02, 0x51, 0x02, 0x51, 0x02, + 0x37, 0x02, 0x38, 0x02, 0x1f, 0x02, 0x1e, 0x02, 0x04, 0x02, 0x04, 0x02, + 0xec, 0x01, 0xec, 0x01, 0xd4, 0x01, 0xd4, 0x01, 0xbe, 0x01, 0xbe, 0x01, + 0xa7, 0x01, 0xa6, 0x01, 0x8e, 0x01, 0x90, 0x01, 0x7c, 0x01, 0x7b, 0x01, + 0x63, 0x01, 0x65, 0x01, 0x51, 0x01, 0x51, 0x01, 0x39, 0x01, 0x3a, 0x01, + 0x25, 0x01, 0x23, 0x01, 0x0e, 0x01, 0x10, 0x01, 0xf9, 0x00, 0xf8, 0x00, + 0xe0, 0x00, 0xe3, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xb3, 0x00, 0xb2, 0x00, + 0x9b, 0x00, 0x9c, 0x00, 0x81, 0x00, 0x82, 0x00, 0x68, 0x00, 0x68, 0x00, + 0x4d, 0x00, 0x4d, 0x00, 0x32, 0x00, 0x30, 0x00, 0x11, 0x00, 0x13, 0x00, + 0xf7, 0xff, 0xf5, 0xff, 0xd3, 0xff, 0xd5, 0xff, 0xb6, 0xff, 0xb4, 0xff, + 0x93, 0xff, 0x95, 0xff, 0x6f, 0xff, 0x6e, 0xff, 0x4d, 0xff, 0x4c, 0xff, + 0x28, 0xff, 0x28, 0xff, 0x02, 0xff, 0x03, 0xff, 0xde, 0xfe, 0xdf, 0xfe, + 0xb7, 0xfe, 0xb8, 0xfe, 0x96, 0xfe, 0x95, 0xfe, 0x6c, 0xfe, 0x6e, 0xfe, + 0x4a, 0xfe, 0x49, 0xfe, 0x23, 0xfe, 0x25, 0xfe, 0x03, 0xfe, 0xff, 0xfd, + 0xdc, 0xfd, 0xde, 0xfd, 0xbc, 0xfd, 0xba, 0xfd, 0x97, 0xfd, 0x9a, 0xfd, + 0x7b, 0xfd, 0x7a, 0xfd, 0x59, 0xfd, 0x5a, 0xfd, 0x3d, 0xfd, 0x3f, 0xfd, + 0x21, 0xfd, 0x20, 0xfd, 0x06, 0xfd, 0x05, 0xfd, 0xef, 0xfc, 0xee, 0xfc, + 0xd6, 0xfc, 0xd9, 0xfc, 0xc6, 0xfc, 0xc3, 0xfc, 0xb0, 0xfc, 0xb2, 0xfc, + 0xa2, 0xfc, 0x9f, 0xfc, 0x91, 0xfc, 0x92, 0xfc, 0x85, 0xfc, 0x85, 0xfc, + 0x78, 0xfc, 0x79, 0xfc, 0x70, 0xfc, 0x70, 0xfc, 0x65, 0xfc, 0x65, 0xfc, + 0x5f, 0xfc, 0x5e, 0xfc, 0x57, 0xfc, 0x57, 0xfc, 0x53, 0xfc, 0x52, 0xfc, + 0x50, 0xfc, 0x4f, 0xfc, 0x49, 0xfc, 0x4b, 0xfc, 0x4a, 0xfc, 0x4a, 0xfc, + 0x48, 0xfc, 0x48, 0xfc, 0x47, 0xfc, 0x48, 0xfc, 0x46, 0xfc, 0x47, 0xfc, + 0x47, 0xfc, 0x47, 0xfc, 0x47, 0xfc, 0x49, 0xfc, 0x46, 0xfc, 0x46, 0xfc, + 0x47, 0xfc, 0x48, 0xfc, 0x47, 0xfc, 0x47, 0xfc, 0x4a, 0xfc, 0x49, 0xfc, + 0x48, 0xfc, 0x49, 0xfc, 0x4b, 0xfc, 0x4b, 0xfc, 0x4b, 0xfc, 0x4c, 0xfc, + 0x4e, 0xfc, 0x4c, 0xfc, 0x50, 0xfc, 0x50, 0xfc, 0x52, 0xfc, 0x52, 0xfc, + 0x58, 0xfc, 0x57, 0xfc, 0x59, 0xfc, 0x5a, 0xfc, 0x5f, 0xfc, 0x5e, 0xfc, + 0x69, 0xfc, 0x68, 0xfc, 0x6c, 0xfc, 0x6e, 0xfc, 0x79, 0xfc, 0x79, 0xfc, + 0x82, 0xfc, 0x81, 0xfc, 0x8e, 0xfc, 0x8e, 0xfc, 0x9c, 0xfc, 0x9d, 0xfc, + 0xab, 0xfc, 0xaa, 0xfc, 0xbd, 0xfc, 0xbe, 0xfc, 0xd2, 0xfc, 0xd2, 0xfc, + 0xe6, 0xfc, 0xe7, 0xfc, 0xff, 0xfc, 0xfe, 0xfc, 0x17, 0xfd, 0x18, 0xfd, + 0x33, 0xfd, 0x33, 0xfd, 0x53, 0xfd, 0x53, 0xfd, 0x73, 0xfd, 0x72, 0xfd, + 0x92, 0xfd, 0x94, 0xfd, 0xb7, 0xfd, 0xb7, 0xfd, 0xdc, 0xfd, 0xd9, 0xfd, + 0x02, 0xfe, 0x04, 0xfe, 0x2b, 0xfe, 0x2a, 0xfe, 0x52, 0xfe, 0x51, 0xfe, + 0x7b, 0xfe, 0x7d, 0xfe, 0xa7, 0xfe, 0xa5, 0xfe, 0xd1, 0xfe, 0xd3, 0xfe, + 0xfc, 0xfe, 0xfc, 0xfe, 0x29, 0xff, 0x26, 0xff, 0x51, 0xff, 0x54, 0xff, + 0x7d, 0xff, 0x7c, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0xd0, 0xff, 0xd2, 0xff, + 0xf9, 0xff, 0xf7, 0xff, 0x20, 0x00, 0x23, 0x00, 0x46, 0x00, 0x45, 0x00, + 0x6d, 0x00, 0x6e, 0x00, 0x8f, 0x00, 0x8e, 0x00, 0xb2, 0x00, 0xb3, 0x00, + 0xd2, 0x00, 0xd2, 0x00, 0xf0, 0x00, 0xf1, 0x00, 0x10, 0x01, 0x0f, 0x01, + 0x28, 0x01, 0x2a, 0x01, 0x45, 0x01, 0x46, 0x01, 0x5d, 0x01, 0x5e, 0x01, + 0x74, 0x01, 0x74, 0x01, 0x8c, 0x01, 0x8c, 0x01, 0x9e, 0x01, 0xa0, 0x01, + 0xb6, 0x01, 0xb4, 0x01, 0xc6, 0x01, 0xc6, 0x01, 0xd8, 0x01, 0xd9, 0x01, + 0xeb, 0x01, 0xeb, 0x01, 0xfb, 0x01, 0xfb, 0x01, 0x0d, 0x02, 0x0d, 0x02, + 0x1d, 0x02, 0x1c, 0x02, 0x2e, 0x02, 0x2e, 0x02, 0x3e, 0x02, 0x3d, 0x02, + 0x4f, 0x02, 0x4f, 0x02, 0x5f, 0x02, 0x5e, 0x02, 0x73, 0x02, 0x74, 0x02, + 0x82, 0x02, 0x81, 0x02, 0x96, 0x02, 0x96, 0x02, 0xa9, 0x02, 0xa9, 0x02, + 0xba, 0x02, 0xb9, 0x02, 0xcd, 0x02, 0xcf, 0x02, 0xe0, 0x02, 0xdf, 0x02, + 0xf5, 0x02, 0xf4, 0x02, 0x07, 0x03, 0x07, 0x03, 0x1a, 0x03, 0x1a, 0x03, + 0x2f, 0x03, 0x30, 0x03, 0x42, 0x03, 0x3f, 0x03, 0x54, 0x03, 0x56, 0x03, + 0x65, 0x03, 0x64, 0x03, 0x77, 0x03, 0x78, 0x03, 0x88, 0x03, 0x86, 0x03, + 0x96, 0x03, 0x96, 0x03, 0xa4, 0x03, 0xa4, 0x03, 0xb0, 0x03, 0xb1, 0x03, + 0xbd, 0x03, 0xbb, 0x03, 0xc5, 0x03, 0xc6, 0x03, 0xcd, 0x03, 0xcd, 0x03, + 0xd4, 0x03, 0xd3, 0x03, 0xd6, 0x03, 0xd8, 0x03, 0xda, 0x03, 0xd7, 0x03, + 0xd7, 0x03, 0xd8, 0x03, 0xd6, 0x03, 0xd7, 0x03, 0xd3, 0x03, 0xd3, 0x03, + 0xcb, 0x03, 0xcc, 0x03, 0xc4, 0x03, 0xc4, 0x03, 0xb8, 0x03, 0xba, 0x03, + 0xad, 0x03, 0xae, 0x03, 0xa2, 0x03, 0xa1, 0x03, 0x90, 0x03, 0x92, 0x03, + 0x83, 0x03, 0x82, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x5e, 0x03, 0x5d, 0x03, + 0x4c, 0x03, 0x4c, 0x03, 0x37, 0x03, 0x36, 0x03, 0x22, 0x03, 0x23, 0x03, + 0x0c, 0x03, 0x0b, 0x03, 0xf6, 0x02, 0xf7, 0x02, 0xe0, 0x02, 0xe1, 0x02, + 0xcb, 0x02, 0xc9, 0x02, 0xb5, 0x02, 0xb6, 0x02, 0x9d, 0x02, 0x9e, 0x02, + 0x8b, 0x02, 0x8a, 0x02, 0x73, 0x02, 0x73, 0x02, 0x61, 0x02, 0x5f, 0x02, + 0x4b, 0x02, 0x4b, 0x02, 0x35, 0x02, 0x36, 0x02, 0x22, 0x02, 0x23, 0x02, + 0x0e, 0x02, 0x0f, 0x02, 0xfb, 0x01, 0xfc, 0x01, 0xe9, 0x01, 0xe8, 0x01, + 0xd3, 0x01, 0xd5, 0x01, 0xc1, 0x01, 0xc3, 0x01, 0xae, 0x01, 0xab, 0x01, + 0x98, 0x01, 0x99, 0x01, 0x86, 0x01, 0x86, 0x01, 0x6f, 0x01, 0x6e, 0x01, + 0x58, 0x01, 0x5b, 0x01, 0x42, 0x01, 0x42, 0x01, 0x2a, 0x01, 0x2a, 0x01, + 0x11, 0x01, 0x13, 0x01, 0xf6, 0x00, 0xf6, 0x00, 0xdc, 0x00, 0xdc, 0x00, + 0xbe, 0x00, 0xbd, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0x81, 0x00, 0x81, 0x00, + 0x61, 0x00, 0x5e, 0x00, 0x3e, 0x00, 0x40, 0x00, 0x1c, 0x00, 0x1a, 0x00, + 0xf6, 0xff, 0xf7, 0xff, 0xd2, 0xff, 0xd1, 0xff, 0xaa, 0xff, 0xac, 0xff, + 0x85, 0xff, 0x83, 0xff, 0x5c, 0xff, 0x5d, 0xff, 0x34, 0xff, 0x32, 0xff, + 0x0a, 0xff, 0x0b, 0xff, 0xe2, 0xfe, 0xe1, 0xfe, 0xb7, 0xfe, 0xb9, 0xfe, + 0x92, 0xfe, 0x90, 0xfe, 0x69, 0xfe, 0x69, 0xfe, 0x41, 0xfe, 0x41, 0xfe, + 0x1b, 0xfe, 0x19, 0xfe, 0xf4, 0xfd, 0xf4, 0xfd, 0xd1, 0xfd, 0xd1, 0xfd, + 0xad, 0xfd, 0xae, 0xfd, 0x8f, 0xfd, 0x90, 0xfd, 0x6e, 0xfd, 0x6d, 0xfd, + 0x51, 0xfd, 0x52, 0xfd, 0x36, 0xfd, 0x35, 0xfd, 0x1b, 0xfd, 0x1c, 0xfd, + 0x05, 0xfd, 0x04, 0xfd, 0xee, 0xfc, 0xef, 0xfc, 0xdb, 0xfc, 0xda, 0xfc, + 0xcb, 0xfc, 0xcb, 0xfc, 0xb8, 0xfc, 0xb8, 0xfc, 0xad, 0xfc, 0xad, 0xfc, + 0x9f, 0xfc, 0xa1, 0xfc, 0x96, 0xfc, 0x95, 0xfc, 0x8e, 0xfc, 0x8d, 0xfc, + 0x85, 0xfc, 0x87, 0xfc, 0x80, 0xfc, 0x80, 0xfc, 0x7b, 0xfc, 0x7a, 0xfc, + 0x78, 0xfc, 0x77, 0xfc, 0x75, 0xfc, 0x74, 0xfc, 0x72, 0xfc, 0x72, 0xfc, + 0x71, 0xfc, 0x71, 0xfc, 0x6e, 0xfc, 0x6f, 0xfc, 0x70, 0xfc, 0x70, 0xfc, + 0x6e, 0xfc, 0x6d, 0xfc, 0x6e, 0xfc, 0x6e, 0xfc, 0x6d, 0xfc, 0x6c, 0xfc, + 0x6e, 0xfc, 0x6d, 0xfc, 0x6b, 0xfc, 0x6c, 0xfc, 0x6a, 0xfc, 0x6a, 0xfc, + 0x6a, 0xfc, 0x69, 0xfc, 0x66, 0xfc, 0x69, 0xfc, 0x6a, 0xfc, 0x69, 0xfc, + 0x67, 0xfc, 0x68, 0xfc, 0x67, 0xfc, 0x68, 0xfc, 0x66, 0xfc, 0x66, 0xfc, + 0x67, 0xfc, 0x67, 0xfc, 0x69, 0xfc, 0x6a, 0xfc, 0x6b, 0xfc, 0x6a, 0xfc, + 0x6b, 0xfc, 0x6b, 0xfc, 0x6f, 0xfc, 0x70, 0xfc, 0x73, 0xfc, 0x71, 0xfc, + 0x77, 0xfc, 0x78, 0xfc, 0x80, 0xfc, 0x7e, 0xfc, 0x86, 0xfc, 0x88, 0xfc, + 0x95, 0xfc, 0x93, 0xfc, 0x9b, 0xfc, 0x9d, 0xfc, 0xad, 0xfc, 0xab, 0xfc, + 0xbd, 0xfc, 0xbd, 0xfc, 0xcf, 0xfc, 0xce, 0xfc, 0xe3, 0xfc, 0xe2, 0xfc, + 0xf8, 0xfc, 0xf9, 0xfc, 0x11, 0xfd, 0x10, 0xfd, 0x2a, 0xfd, 0x2a, 0xfd, + 0x46, 0xfd, 0x47, 0xfd, 0x63, 0xfd, 0x64, 0xfd, 0x86, 0xfd, 0x85, 0xfd, + 0xa3, 0xfd, 0xa5, 0xfd, 0xcb, 0xfd, 0xca, 0xfd, 0xee, 0xfd, 0xee, 0xfd, + 0x12, 0xfe, 0x13, 0xfe, 0x3a, 0xfe, 0x3b, 0xfe, 0x5f, 0xfe, 0x5f, 0xfe, + 0x88, 0xfe, 0x89, 0xfe, 0xaf, 0xfe, 0xaf, 0xfe, 0xd8, 0xfe, 0xd9, 0xfe, + 0x00, 0xff, 0x02, 0xff, 0x28, 0xff, 0x29, 0xff, 0x51, 0xff, 0x52, 0xff, + 0x78, 0xff, 0x78, 0xff, 0x9e, 0xff, 0x9f, 0xff, 0xc5, 0xff, 0xc4, 0xff, + 0xe8, 0xff, 0xe9, 0xff, 0x0d, 0x00, 0x0d, 0x00, 0x2f, 0x00, 0x2e, 0x00, + 0x50, 0x00, 0x51, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x8e, 0x00, 0x8f, 0x00, + 0xab, 0x00, 0xab, 0x00, 0xc7, 0x00, 0xc7, 0x00, 0xe4, 0x00, 0xe4, 0x00, + 0xfc, 0x00, 0xfd, 0x00, 0x17, 0x01, 0x17, 0x01, 0x2d, 0x01, 0x2f, 0x01, + 0x45, 0x01, 0x45, 0x01, 0x5d, 0x01, 0x5d, 0x01, 0x6e, 0x01, 0x70, 0x01, + 0x89, 0x01, 0x89, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0xb1, 0x01, 0xb2, 0x01, + 0xc6, 0x01, 0xc6, 0x01, 0xda, 0x01, 0xd9, 0x01, 0xef, 0x01, 0xf1, 0x01, + 0x05, 0x02, 0x03, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x2e, 0x02, 0x2e, 0x02, + 0x45, 0x02, 0x45, 0x02, 0x5b, 0x02, 0x5b, 0x02, 0x71, 0x02, 0x6f, 0x02, + 0x88, 0x02, 0x88, 0x02, 0x9c, 0x02, 0x9c, 0x02, 0xb4, 0x02, 0xb4, 0x02, + 0xcb, 0x02, 0xcc, 0x02, 0xe2, 0x02, 0xe0, 0x02, 0xf7, 0x02, 0xfa, 0x02, + 0x0e, 0x03, 0x0e, 0x03, 0x23, 0x03, 0x25, 0x03, 0x39, 0x03, 0x38, 0x03, + 0x4f, 0x03, 0x4d, 0x03, 0x61, 0x03, 0x60, 0x03, 0x72, 0x03, 0x73, 0x03, + 0x84, 0x03, 0x85, 0x03, 0x92, 0x03, 0x90, 0x03, 0xa2, 0x03, 0xa1, 0x03, + 0xac, 0x03, 0xad, 0x03, 0xb7, 0x03, 0xb7, 0x03, 0xc1, 0x03, 0xc2, 0x03, + 0xc6, 0x03, 0xc5, 0x03, 0xcb, 0x03, 0xcb, 0x03, 0xcd, 0x03, 0xcb, 0x03, + 0xcd, 0x03, 0xcd, 0x03, 0xcb, 0x03, 0xca, 0x03, 0xc7, 0x03, 0xc6, 0x03, + 0xbf, 0x03, 0xbf, 0x03, 0xb6, 0x03, 0xb7, 0x03, 0xae, 0x03, 0xad, 0x03, + 0xa2, 0x03, 0xa3, 0x03, 0x97, 0x03, 0x94, 0x03, 0x87, 0x03, 0x88, 0x03, + 0x77, 0x03, 0x76, 0x03, 0x67, 0x03, 0x66, 0x03, 0x54, 0x03, 0x53, 0x03, + 0x42, 0x03, 0x42, 0x03, 0x2f, 0x03, 0x2d, 0x03, 0x1b, 0x03, 0x1c, 0x03, + 0x0a, 0x03, 0x07, 0x03, 0xf4, 0x02, 0xf4, 0x02, 0xe0, 0x02, 0xe1, 0x02, + 0xcd, 0x02, 0xcc, 0x02, 0xbc, 0x02, 0xbb, 0x02, 0xa7, 0x02, 0xa5, 0x02, + 0x94, 0x02, 0x95, 0x02, 0x85, 0x02, 0x83, 0x02, 0x72, 0x02, 0x72, 0x02, + 0x65, 0x02, 0x63, 0x02, 0x51, 0x02, 0x51, 0x02, 0x44, 0x02, 0x43, 0x02, + 0x35, 0x02, 0x34, 0x02, 0x26, 0x02, 0x24, 0x02, 0x16, 0x02, 0x18, 0x02, + 0x08, 0x02, 0x07, 0x02, 0xfb, 0x01, 0xf9, 0x01, 0xea, 0x01, 0xec, 0x01, + 0xdc, 0x01, 0xd9, 0x01, 0xcc, 0x01, 0xce, 0x01, 0xbd, 0x01, 0xbb, 0x01, + 0xab, 0x01, 0xab, 0x01, 0x9a, 0x01, 0x99, 0x01, 0x87, 0x01, 0x86, 0x01, + 0x74, 0x01, 0x73, 0x01, 0x5d, 0x01, 0x5e, 0x01, 0x47, 0x01, 0x47, 0x01, + 0x2f, 0x01, 0x2f, 0x01, 0x15, 0x01, 0x15, 0x01, 0xf9, 0x00, 0xf7, 0x00, + 0xdc, 0x00, 0xdd, 0x00, 0xbb, 0x00, 0xbb, 0x00, 0x9d, 0x00, 0x9c, 0x00, + 0x78, 0x00, 0x78, 0x00, 0x56, 0x00, 0x56, 0x00, 0x33, 0x00, 0x31, 0x00, + 0x09, 0x00, 0x0b, 0x00, 0xe5, 0xff, 0xe3, 0xff, 0xbb, 0xff, 0xbc, 0xff, + 0x93, 0xff, 0x92, 0xff, 0x69, 0xff, 0x68, 0xff, 0x40, 0xff, 0x40, 0xff, + 0x18, 0xff, 0x17, 0xff, 0xec, 0xfe, 0xeb, 0xfe, 0xc4, 0xfe, 0xc4, 0xfe, + 0x9a, 0xfe, 0x9a, 0xfe, 0x74, 0xfe, 0x73, 0xfe, 0x4b, 0xfe, 0x4c, 0xfe, + 0x27, 0xfe, 0x25, 0xfe, 0x02, 0xfe, 0x04, 0xfe, 0xdd, 0xfd, 0xdc, 0xfd, + 0xbf, 0xfd, 0xbd, 0xfd, 0x9c, 0xfd, 0x9d, 0xfd, 0x80, 0xfd, 0x80, 0xfd, + 0x63, 0xfd, 0x63, 0xfd, 0x48, 0xfd, 0x49, 0xfd, 0x31, 0xfd, 0x32, 0xfd, + 0x18, 0xfd, 0x17, 0xfd, 0x06, 0xfd, 0x06, 0xfd, 0xf2, 0xfc, 0xf1, 0xfc, + 0xe1, 0xfc, 0xe2, 0xfc, 0xd3, 0xfc, 0xd3, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, + 0xba, 0xfc, 0xb9, 0xfc, 0xaf, 0xfc, 0xaf, 0xfc, 0xa6, 0xfc, 0xa3, 0xfc, + 0x9d, 0xfc, 0x9c, 0xfc, 0x95, 0xfc, 0x95, 0xfc, 0x8f, 0xfc, 0x8e, 0xfc, + 0x8a, 0xfc, 0x8a, 0xfc, 0x84, 0xfc, 0x82, 0xfc, 0x80, 0xfc, 0x81, 0xfc, + 0x7c, 0xfc, 0x7b, 0xfc, 0x79, 0xfc, 0x78, 0xfc, 0x75, 0xfc, 0x75, 0xfc, + 0x71, 0xfc, 0x70, 0xfc, 0x6f, 0xfc, 0x6e, 0xfc, 0x6b, 0xfc, 0x6c, 0xfc, + 0x69, 0xfc, 0x68, 0xfc, 0x66, 0xfc, 0x66, 0xfc, 0x63, 0xfc, 0x65, 0xfc, + 0x64, 0xfc, 0x60, 0xfc, 0x60, 0xfc, 0x63, 0xfc, 0x61, 0xfc, 0x5e, 0xfc, + 0x5f, 0xfc, 0x5d, 0xfc, 0x5e, 0xfc, 0x5f, 0xfc, 0x60, 0xfc, 0x5e, 0xfc, + 0x62, 0xfc, 0x63, 0xfc, 0x65, 0xfc, 0x65, 0xfc, 0x69, 0xfc, 0x69, 0xfc, + 0x6f, 0xfc, 0x6e, 0xfc, 0x76, 0xfc, 0x75, 0xfc, 0x7d, 0xfc, 0x7c, 0xfc, + 0x89, 0xfc, 0x88, 0xfc, 0x93, 0xfc, 0x95, 0xfc, 0xa3, 0xfc, 0xa2, 0xfc, + 0xb2, 0xfc, 0xb2, 0xfc, 0xc4, 0xfc, 0xc3, 0xfc, 0xd7, 0xfc, 0xd8, 0xfc, + 0xed, 0xfc, 0xee, 0xfc, 0x04, 0xfd, 0x03, 0xfd, 0x1e, 0xfd, 0x1f, 0xfd, + 0x39, 0xfd, 0x38, 0xfd, 0x53, 0xfd, 0x53, 0xfd, 0x73, 0xfd, 0x74, 0xfd, + 0x92, 0xfd, 0x92, 0xfd, 0xb3, 0xfd, 0xb3, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, + 0xf7, 0xfd, 0xf6, 0xfd, 0x1c, 0xfe, 0x1c, 0xfe, 0x3d, 0xfe, 0x3e, 0xfe, + 0x64, 0xfe, 0x64, 0xfe, 0x87, 0xfe, 0x87, 0xfe, 0xab, 0xfe, 0xab, 0xfe, + 0xcf, 0xfe, 0xd0, 0xfe, 0xf2, 0xfe, 0xf2, 0xfe, 0x17, 0xff, 0x16, 0xff, + 0x38, 0xff, 0x3a, 0xff, 0x5b, 0xff, 0x5a, 0xff, 0x7d, 0xff, 0x7f, 0xff, + 0x9c, 0xff, 0x9b, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xd9, 0xff, 0xd9, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0x11, 0x00, 0x10, 0x00, 0x2b, 0x00, 0x2b, 0x00, + 0x44, 0x00, 0x44, 0x00, 0x5d, 0x00, 0x5c, 0x00, 0x74, 0x00, 0x74, 0x00, + 0x89, 0x00, 0x89, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xb5, 0x00, 0xb6, 0x00, + 0xcb, 0x00, 0xca, 0x00, 0xde, 0x00, 0xe0, 0x00, 0xf2, 0x00, 0xf0, 0x00, + 0x08, 0x01, 0x08, 0x01, 0x1a, 0x01, 0x1a, 0x01, 0x30, 0x01, 0x2f, 0x01, + 0x43, 0x01, 0x43, 0x01, 0x57, 0x01, 0x58, 0x01, 0x6c, 0x01, 0x6c, 0x01, + 0x81, 0x01, 0x82, 0x01, 0x99, 0x01, 0x99, 0x01, 0xb0, 0x01, 0xaf, 0x01, + 0xc8, 0x01, 0xc8, 0x01, 0xe0, 0x01, 0xdf, 0x01, 0xf8, 0x01, 0xf8, 0x01, + 0x12, 0x02, 0x12, 0x02, 0x2d, 0x02, 0x2b, 0x02, 0x44, 0x02, 0x46, 0x02, + 0x62, 0x02, 0x5f, 0x02, 0x7b, 0x02, 0x7a, 0x02, 0x95, 0x02, 0x95, 0x02, + 0xb3, 0x02, 0xb1, 0x02, 0xc9, 0x02, 0xca, 0x02, 0xe7, 0x02, 0xe6, 0x02, + 0xfd, 0x02, 0xfc, 0x02, 0x16, 0x03, 0x16, 0x03, 0x2d, 0x03, 0x2b, 0x03, + 0x42, 0x03, 0x43, 0x03, 0x58, 0x03, 0x56, 0x03, 0x68, 0x03, 0x6a, 0x03, + 0x7d, 0x03, 0x7a, 0x03, 0x8a, 0x03, 0x8b, 0x03, 0x98, 0x03, 0x98, 0x03, + 0xa4, 0x03, 0xa3, 0x03, 0xac, 0x03, 0xad, 0x03, 0xb5, 0x03, 0xb3, 0x03, + 0xba, 0x03, 0xb9, 0x03, 0xbd, 0x03, 0xbc, 0x03, 0xbc, 0x03, 0xbd, 0x03, + 0xbb, 0x03, 0xbc, 0x03, 0xb8, 0x03, 0xb7, 0x03, 0xb1, 0x03, 0xb2, 0x03, + 0xac, 0x03, 0xa9, 0x03, 0xa0, 0x03, 0xa0, 0x03, 0x99, 0x03, 0x98, 0x03, + 0x89, 0x03, 0x88, 0x03, 0x7e, 0x03, 0x7d, 0x03, 0x6f, 0x03, 0x6f, 0x03, + 0x5e, 0x03, 0x5d, 0x03, 0x4f, 0x03, 0x4d, 0x03, 0x3b, 0x03, 0x3b, 0x03, + 0x2e, 0x03, 0x29, 0x03, 0x18, 0x03, 0x18, 0x03, 0x08, 0x03, 0x06, 0x03, + 0xf5, 0x02, 0xf4, 0x02, 0xe2, 0x02, 0xe1, 0x02, 0xd2, 0x02, 0xcf, 0x02, + 0xbe, 0x02, 0xbe, 0x02, 0xad, 0x02, 0xad, 0x02, 0x9f, 0x02, 0x9c, 0x02, + 0x8b, 0x02, 0x8c, 0x02, 0x7f, 0x02, 0x7c, 0x02, 0x6b, 0x02, 0x6b, 0x02, + 0x5e, 0x02, 0x5d, 0x02, 0x4e, 0x02, 0x4e, 0x02, 0x3f, 0x02, 0x3e, 0x02, + 0x30, 0x02, 0x2e, 0x02, 0x20, 0x02, 0x20, 0x02, 0x15, 0x02, 0x12, 0x02, + 0x01, 0x02, 0x02, 0x02, 0xf3, 0x01, 0xf1, 0x01, 0xe5, 0x01, 0xe5, 0x01, + 0xd2, 0x01, 0xcf, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0xaf, 0x01, 0xad, 0x01, + 0x9b, 0x01, 0x9b, 0x01, 0x88, 0x01, 0x86, 0x01, 0x70, 0x01, 0x6f, 0x01, + 0x5a, 0x01, 0x59, 0x01, 0x41, 0x01, 0x3e, 0x01, 0x28, 0x01, 0x29, 0x01, + 0x0d, 0x01, 0x0c, 0x01, 0xf1, 0x00, 0xf0, 0x00, 0xd2, 0x00, 0xd3, 0x00, + 0xb3, 0x00, 0xb2, 0x00, 0x93, 0x00, 0x92, 0x00, 0x72, 0x00, 0x71, 0x00, + 0x4f, 0x00, 0x4e, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x07, 0x00, + 0xe3, 0xff, 0xe2, 0xff, 0xbd, 0xff, 0xbe, 0xff, 0x98, 0xff, 0x97, 0xff, + 0x71, 0xff, 0x70, 0xff, 0x4d, 0xff, 0x4c, 0xff, 0x25, 0xff, 0x25, 0xff, + 0x03, 0xff, 0x02, 0xff, 0xdd, 0xfe, 0xdc, 0xfe, 0xbb, 0xfe, 0xbb, 0xfe, + 0x96, 0xfe, 0x97, 0xfe, 0x76, 0xfe, 0x75, 0xfe, 0x55, 0xfe, 0x57, 0xfe, + 0x36, 0xfe, 0x35, 0xfe, 0x19, 0xfe, 0x18, 0xfe, 0xfc, 0xfd, 0xfc, 0xfd, + 0xe3, 0xfd, 0xe1, 0xfd, 0xc7, 0xfd, 0xc8, 0xfd, 0xb0, 0xfd, 0xb0, 0xfd, + 0x9b, 0xfd, 0x9a, 0xfd, 0x84, 0xfd, 0x82, 0xfd, 0x71, 0xfd, 0x72, 0xfd, + 0x5f, 0xfd, 0x5c, 0xfd, 0x4c, 0xfd, 0x4e, 0xfd, 0x3e, 0xfd, 0x3b, 0xfd, + 0x2c, 0xfd, 0x2e, 0xfd, 0x20, 0xfd, 0x1e, 0xfd, 0x12, 0xfd, 0x12, 0xfd, + 0x07, 0xfd, 0x07, 0xfd, 0xfb, 0xfc, 0xf9, 0xfc, 0xef, 0xfc, 0xef, 0xfc, + 0xe4, 0xfc, 0xe3, 0xfc, 0xda, 0xfc, 0xda, 0xfc, 0xcf, 0xfc, 0xce, 0xfc, + 0xc6, 0xfc, 0xc5, 0xfc, 0xbb, 0xfc, 0xb9, 0xfc, 0xb2, 0xfc, 0xb2, 0xfc, + 0xa8, 0xfc, 0xa5, 0xfc, 0x9e, 0xfc, 0x9e, 0xfc, 0x94, 0xfc, 0x93, 0xfc, + 0x8a, 0xfc, 0x8a, 0xfc, 0x82, 0xfc, 0x80, 0xfc, 0x78, 0xfc, 0x78, 0xfc, + 0x6f, 0xfc, 0x6e, 0xfc, 0x68, 0xfc, 0x66, 0xfc, 0x60, 0xfc, 0x60, 0xfc, + 0x58, 0xfc, 0x58, 0xfc, 0x54, 0xfc, 0x53, 0xfc, 0x4d, 0xfc, 0x4e, 0xfc, + 0x4b, 0xfc, 0x49, 0xfc, 0x47, 0xfc, 0x47, 0xfc, 0x48, 0xfc, 0x47, 0xfc, + 0x47, 0xfc, 0x47, 0xfc, 0x4a, 0xfc, 0x4a, 0xfc, 0x4e, 0xfc, 0x4d, 0xfc, + 0x55, 0xfc, 0x54, 0xfc, 0x5e, 0xfc, 0x5c, 0xfc, 0x68, 0xfc, 0x67, 0xfc, + 0x75, 0xfc, 0x76, 0xfc, 0x84, 0xfc, 0x83, 0xfc, 0x96, 0xfc, 0x94, 0xfc, + 0xa8, 0xfc, 0xa7, 0xfc, 0xbf, 0xfc, 0xbd, 0xfc, 0xd5, 0xfc, 0xd5, 0xfc, + 0xef, 0xfc, 0xee, 0xfc, 0x0a, 0xfd, 0x0a, 0xfd, 0x29, 0xfd, 0x28, 0xfd, + 0x4a, 0xfd, 0x48, 0xfd, 0x67, 0xfd, 0x68, 0xfd, 0x8d, 0xfd, 0x8c, 0xfd, + 0xad, 0xfd, 0xad, 0xfd, 0xd4, 0xfd, 0xd2, 0xfd, 0xf6, 0xfd, 0xf7, 0xfd, + 0x1b, 0xfe, 0x1a, 0xfe, 0x40, 0xfe, 0x40, 0xfe, 0x65, 0xfe, 0x65, 0xfe, + 0x8c, 0xfe, 0x8b, 0xfe, 0xb1, 0xfe, 0xb1, 0xfe, 0xd4, 0xfe, 0xd5, 0xfe, + 0xf9, 0xfe, 0xf7, 0xfe, 0x1d, 0xff, 0x1f, 0xff, 0x3f, 0xff, 0x3c, 0xff, + 0x60, 0xff, 0x60, 0xff, 0x80, 0xff, 0x7e, 0xff, 0x9e, 0xff, 0x9d, 0xff, + 0xbc, 0xff, 0xbc, 0xff, 0xd9, 0xff, 0xd7, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0x0d, 0x00, 0x0d, 0x00, 0x24, 0x00, 0x24, 0x00, 0x3f, 0x00, 0x3d, 0x00, + 0x54, 0x00, 0x56, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x7f, 0x00, 0x7f, 0x00, + 0x92, 0x00, 0x92, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xba, 0x00, 0xba, 0x00, + 0xcc, 0x00, 0xce, 0x00, 0xde, 0x00, 0xdc, 0x00, 0xf1, 0x00, 0xf3, 0x00, + 0x03, 0x01, 0x01, 0x01, 0x17, 0x01, 0x19, 0x01, 0x29, 0x01, 0x27, 0x01, + 0x3c, 0x01, 0x3d, 0x01, 0x51, 0x01, 0x50, 0x01, 0x64, 0x01, 0x64, 0x01, + 0x7b, 0x01, 0x7b, 0x01, 0x8f, 0x01, 0x8e, 0x01, 0xa6, 0x01, 0xa5, 0x01, + 0xba, 0x01, 0xba, 0x01, 0xd3, 0x01, 0xd1, 0x01, 0xe9, 0x01, 0xeb, 0x01, + 0x03, 0x02, 0x01, 0x02, 0x1b, 0x02, 0x1d, 0x02, 0x33, 0x02, 0x32, 0x02, + 0x4b, 0x02, 0x4b, 0x02, 0x64, 0x02, 0x64, 0x02, 0x7c, 0x02, 0x7a, 0x02, + 0x94, 0x02, 0x95, 0x02, 0xac, 0x02, 0xaa, 0x02, 0xc1, 0x02, 0xc3, 0x02, + 0xda, 0x02, 0xd8, 0x02, 0xec, 0x02, 0xed, 0x02, 0x02, 0x03, 0x02, 0x03, + 0x14, 0x03, 0x14, 0x03, 0x26, 0x03, 0x25, 0x03, 0x36, 0x03, 0x35, 0x03, + 0x43, 0x03, 0x40, 0x03, 0x4f, 0x03, 0x51, 0x03, 0x5c, 0x03, 0x59, 0x03, + 0x63, 0x03, 0x64, 0x03, 0x6c, 0x03, 0x6b, 0x03, 0x71, 0x03, 0x70, 0x03, + 0x77, 0x03, 0x77, 0x03, 0x79, 0x03, 0x76, 0x03, 0x77, 0x03, 0x78, 0x03, + 0x79, 0x03, 0x77, 0x03, 0x73, 0x03, 0x73, 0x03, 0x72, 0x03, 0x71, 0x03, + 0x6b, 0x03, 0x69, 0x03, 0x66, 0x03, 0x65, 0x03, 0x5e, 0x03, 0x5d, 0x03, + 0x54, 0x03, 0x53, 0x03, 0x4a, 0x03, 0x4c, 0x03, 0x41, 0x03, 0x3f, 0x03, + 0x37, 0x03, 0x38, 0x03, 0x2c, 0x03, 0x2a, 0x03, 0x22, 0x03, 0x21, 0x03, + 0x17, 0x03, 0x16, 0x03, 0x0a, 0x03, 0x0a, 0x03, 0x00, 0x03, 0xff, 0x02, + 0xf3, 0x02, 0xf4, 0x02, 0xea, 0x02, 0xe8, 0x02, 0xdc, 0x02, 0xdc, 0x02, + 0xd0, 0x02, 0xd1, 0x02, 0xc8, 0x02, 0xc6, 0x02, 0xba, 0x02, 0xba, 0x02, + 0xb1, 0x02, 0xae, 0x02, 0xa3, 0x02, 0xa5, 0x02, 0x99, 0x02, 0x96, 0x02, + 0x8c, 0x02, 0x8c, 0x02, 0x80, 0x02, 0x80, 0x02, 0x73, 0x02, 0x72, 0x02, + 0x67, 0x02, 0x67, 0x02, 0x58, 0x02, 0x57, 0x02, 0x49, 0x02, 0x49, 0x02, + 0x39, 0x02, 0x3a, 0x02, 0x28, 0x02, 0x26, 0x02, 0x16, 0x02, 0x17, 0x02, + 0x01, 0x02, 0xff, 0x01, 0xef, 0x01, 0xee, 0x01, 0xd5, 0x01, 0xd7, 0x01, + 0xbf, 0x01, 0xbb, 0x01, 0xa5, 0x01, 0xa7, 0x01, 0x8a, 0x01, 0x88, 0x01, + 0x6e, 0x01, 0x6f, 0x01, 0x4f, 0x01, 0x4f, 0x01, 0x31, 0x01, 0x31, 0x01, + 0x11, 0x01, 0x10, 0x01, 0xee, 0x00, 0xee, 0x00, 0xcd, 0x00, 0xcb, 0x00, + 0xa6, 0x00, 0xa6, 0x00, 0x81, 0x00, 0x81, 0x00, 0x59, 0x00, 0x5b, 0x00, + 0x35, 0x00, 0x34, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0xe7, 0xff, 0xe6, 0xff, + 0xbf, 0xff, 0xbf, 0xff, 0x97, 0xff, 0x97, 0xff, 0x72, 0xff, 0x72, 0xff, + 0x4d, 0xff, 0x4b, 0xff, 0x26, 0xff, 0x26, 0xff, 0x00, 0xff, 0xff, 0xfe, + 0xdd, 0xfe, 0xdd, 0xfe, 0xbb, 0xfe, 0xbb, 0xfe, 0x9a, 0xfe, 0x98, 0xfe, + 0x7b, 0xfe, 0x7b, 0xfe, 0x5c, 0xfe, 0x5c, 0xfe, 0x41, 0xfe, 0x40, 0xfe, + 0x24, 0xfe, 0x25, 0xfe, 0x0a, 0xfe, 0x0a, 0xfe, 0xf3, 0xfd, 0xf2, 0xfd, + 0xdd, 0xfd, 0xdb, 0xfd, 0xc9, 0xfd, 0xc8, 0xfd, 0xb3, 0xfd, 0xb3, 0xfd, + 0xa2, 0xfd, 0xa3, 0xfd, 0x93, 0xfd, 0x92, 0xfd, 0x82, 0xfd, 0x81, 0xfd, + 0x74, 0xfd, 0x75, 0xfd, 0x66, 0xfd, 0x66, 0xfd, 0x5b, 0xfd, 0x5c, 0xfd, + 0x4f, 0xfd, 0x4f, 0xfd, 0x44, 0xfd, 0x44, 0xfd, 0x39, 0xfd, 0x38, 0xfd, + 0x30, 0xfd, 0x31, 0xfd, 0x24, 0xfd, 0x24, 0xfd, 0x1d, 0xfd, 0x1c, 0xfd, + 0x13, 0xfd, 0x13, 0xfd, 0x07, 0xfd, 0x08, 0xfd, 0x00, 0xfd, 0xfe, 0xfc, + 0xf3, 0xfc, 0xf4, 0xfc, 0xea, 0xfc, 0xeb, 0xfc, 0xde, 0xfc, 0xde, 0xfc, + 0xd4, 0xfc, 0xd5, 0xfc, 0xcb, 0xfc, 0xcb, 0xfc, 0xbf, 0xfc, 0xbd, 0xfc, + 0xb5, 0xfc, 0xb8, 0xfc, 0xa8, 0xfc, 0xa8, 0xfc, 0xa2, 0xfc, 0xa2, 0xfc, + 0x94, 0xfc, 0x96, 0xfc, 0x8e, 0xfc, 0x8d, 0xfc, 0x84, 0xfc, 0x85, 0xfc, + 0x7c, 0xfc, 0x7c, 0xfc, 0x75, 0xfc, 0x76, 0xfc, 0x6f, 0xfc, 0x6f, 0xfc, + 0x6a, 0xfc, 0x6a, 0xfc, 0x68, 0xfc, 0x68, 0xfc, 0x65, 0xfc, 0x65, 0xfc, + 0x66, 0xfc, 0x66, 0xfc, 0x69, 0xfc, 0x69, 0xfc, 0x6c, 0xfc, 0x6a, 0xfc, + 0x73, 0xfc, 0x74, 0xfc, 0x78, 0xfc, 0x77, 0xfc, 0x82, 0xfc, 0x81, 0xfc, + 0x8f, 0xfc, 0x90, 0xfc, 0x9b, 0xfc, 0x9b, 0xfc, 0xaf, 0xfc, 0xb0, 0xfc, + 0xbf, 0xfc, 0xbc, 0xfc, 0xd4, 0xfc, 0xd6, 0xfc, 0xec, 0xfc, 0xeb, 0xfc, + 0x02, 0xfd, 0x02, 0xfd, 0x1e, 0xfd, 0x1d, 0xfd, 0x37, 0xfd, 0x39, 0xfd, + 0x57, 0xfd, 0x56, 0xfd, 0x73, 0xfd, 0x74, 0xfd, 0x93, 0xfd, 0x92, 0xfd, + 0xb4, 0xfd, 0xb3, 0xfd, 0xd2, 0xfd, 0xd2, 0xfd, 0xf7, 0xfd, 0xf6, 0xfd, + 0x15, 0xfe, 0x14, 0xfe, 0x3a, 0xfe, 0x3a, 0xfe, 0x5b, 0xfe, 0x59, 0xfe, + 0x7c, 0xfe, 0x7c, 0xfe, 0x9e, 0xfe, 0x9e, 0xfe, 0xbe, 0xfe, 0xbc, 0xfe, + 0xde, 0xfe, 0xde, 0xfe, 0x00, 0xff, 0xfc, 0xfe, 0x1c, 0xff, 0x1d, 0xff, + 0x3b, 0xff, 0x3b, 0xff, 0x58, 0xff, 0x57, 0xff, 0x74, 0xff, 0x75, 0xff, + 0x8f, 0xff, 0x8f, 0xff, 0xab, 0xff, 0xab, 0xff, 0xc4, 0xff, 0xc4, 0xff, + 0xdd, 0xff, 0xdc, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0x0d, 0x00, 0x0d, 0x00, + 0x27, 0x00, 0x25, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x69, 0x00, 0x6b, 0x00, 0x80, 0x00, 0x7d, 0x00, 0x95, 0x00, 0x96, 0x00, + 0xae, 0x00, 0xac, 0x00, 0xc2, 0x00, 0xc1, 0x00, 0xdb, 0x00, 0xda, 0x00, + 0xf1, 0x00, 0xf0, 0x00, 0x08, 0x01, 0x07, 0x01, 0x20, 0x01, 0x1f, 0x01, + 0x38, 0x01, 0x36, 0x01, 0x4f, 0x01, 0x4f, 0x01, 0x69, 0x01, 0x67, 0x01, + 0x80, 0x01, 0x81, 0x01, 0x9c, 0x01, 0x9a, 0x01, 0xb5, 0x01, 0xb5, 0x01, + 0xd2, 0x01, 0xce, 0x01, 0xe8, 0x01, 0xe9, 0x01, 0x04, 0x02, 0x01, 0x02, + 0x1d, 0x02, 0x1d, 0x02, 0x36, 0x02, 0x34, 0x02, 0x51, 0x02, 0x50, 0x02, + 0x66, 0x02, 0x66, 0x02, 0x81, 0x02, 0x7f, 0x02, 0x95, 0x02, 0x95, 0x02, + 0xac, 0x02, 0xaa, 0x02, 0xc1, 0x02, 0xc0, 0x02, 0xd3, 0x02, 0xd2, 0x02, + 0xe5, 0x02, 0xe5, 0x02, 0xf7, 0x02, 0xf5, 0x02, 0x05, 0x03, 0x05, 0x03, + 0x15, 0x03, 0x15, 0x03, 0x20, 0x03, 0x1e, 0x03, 0x2a, 0x03, 0x29, 0x03, + 0x32, 0x03, 0x30, 0x03, 0x37, 0x03, 0x37, 0x03, 0x3d, 0x03, 0x3c, 0x03, + 0x40, 0x03, 0x40, 0x03, 0x42, 0x03, 0x41, 0x03, 0x41, 0x03, 0x3f, 0x03, + 0x40, 0x03, 0x41, 0x03, 0x3d, 0x03, 0x3d, 0x03, 0x3a, 0x03, 0x38, 0x03, + 0x35, 0x03, 0x35, 0x03, 0x30, 0x03, 0x2e, 0x03, 0x28, 0x03, 0x2a, 0x03, + 0x20, 0x03, 0x1e, 0x03, 0x1a, 0x03, 0x19, 0x03, 0x11, 0x03, 0x10, 0x03, + 0x07, 0x03, 0x08, 0x03, 0x01, 0x03, 0xff, 0x02, 0xf7, 0x02, 0xf9, 0x02, + 0xf1, 0x02, 0xef, 0x02, 0xe8, 0x02, 0xe8, 0x02, 0xdf, 0x02, 0xdf, 0x02, + 0xd9, 0x02, 0xd7, 0x02, 0xd0, 0x02, 0xd0, 0x02, 0xcb, 0x02, 0xca, 0x02, + 0xc3, 0x02, 0xc4, 0x02, 0xbc, 0x02, 0xbc, 0x02, 0xb7, 0x02, 0xb6, 0x02, + 0xb2, 0x02, 0xb1, 0x02, 0xab, 0x02, 0xab, 0x02, 0xa7, 0x02, 0xa5, 0x02, + 0x9e, 0x02, 0x9f, 0x02, 0x9c, 0x02, 0x99, 0x02, 0x93, 0x02, 0x94, 0x02, + 0x8c, 0x02, 0x8b, 0x02, 0x84, 0x02, 0x84, 0x02, 0x7a, 0x02, 0x7b, 0x02, + 0x75, 0x02, 0x74, 0x02, 0x67, 0x02, 0x66, 0x02, 0x5d, 0x02, 0x5d, 0x02, + 0x4f, 0x02, 0x4e, 0x02, 0x3d, 0x02, 0x3e, 0x02, 0x30, 0x02, 0x2e, 0x02, + 0x19, 0x02, 0x1b, 0x02, 0x0a, 0x02, 0x09, 0x02, 0xf1, 0x01, 0xf1, 0x01, + 0xdc, 0x01, 0xdb, 0x01, 0xc2, 0x01, 0xc1, 0x01, 0xa7, 0x01, 0xa4, 0x01, + 0x89, 0x01, 0x89, 0x01, 0x69, 0x01, 0x68, 0x01, 0x4a, 0x01, 0x4a, 0x01, + 0x27, 0x01, 0x25, 0x01, 0x05, 0x01, 0x05, 0x01, 0xdf, 0x00, 0xe1, 0x00, + 0xbc, 0x00, 0xba, 0x00, 0x94, 0x00, 0x96, 0x00, 0x6f, 0x00, 0x6c, 0x00, + 0x47, 0x00, 0x47, 0x00, 0x21, 0x00, 0x1f, 0x00, 0xf8, 0xff, 0xf8, 0xff, + 0xd0, 0xff, 0xd1, 0xff, 0xa9, 0xff, 0xa7, 0xff, 0x82, 0xff, 0x81, 0xff, + 0x5e, 0xff, 0x5b, 0xff, 0x37, 0xff, 0x37, 0xff, 0x14, 0xff, 0x12, 0xff, + 0xef, 0xfe, 0xf0, 0xfe, 0xcf, 0xfe, 0xcc, 0xfe, 0xac, 0xfe, 0xad, 0xfe, + 0x8e, 0xfe, 0x8e, 0xfe, 0x71, 0xfe, 0x70, 0xfe, 0x54, 0xfe, 0x54, 0xfe, + 0x3a, 0xfe, 0x38, 0xfe, 0x20, 0xfe, 0x20, 0xfe, 0x09, 0xfe, 0x08, 0xfe, + 0xf2, 0xfd, 0xf1, 0xfd, 0xdc, 0xfd, 0xdd, 0xfd, 0xca, 0xfd, 0xc7, 0xfd, + 0xb7, 0xfd, 0xb8, 0xfd, 0xa5, 0xfd, 0xa3, 0xfd, 0x95, 0xfd, 0x95, 0xfd, + 0x85, 0xfd, 0x84, 0xfd, 0x78, 0xfd, 0x78, 0xfd, 0x6a, 0xfd, 0x69, 0xfd, + 0x5b, 0xfd, 0x5b, 0xfd, 0x4f, 0xfd, 0x4c, 0xfd, 0x40, 0xfd, 0x40, 0xfd, + 0x37, 0xfd, 0x36, 0xfd, 0x29, 0xfd, 0x28, 0xfd, 0x1e, 0xfd, 0x1e, 0xfd, + 0x12, 0xfd, 0x10, 0xfd, 0x06, 0xfd, 0x06, 0xfd, 0xfa, 0xfc, 0xfa, 0xfc, + 0xf1, 0xfc, 0xef, 0xfc, 0xe2, 0xfc, 0xe2, 0xfc, 0xd8, 0xfc, 0xd8, 0xfc, + 0xcc, 0xfc, 0xcc, 0xfc, 0xc3, 0xfc, 0xc4, 0xfc, 0xba, 0xfc, 0xb8, 0xfc, + 0xaf, 0xfc, 0xb0, 0xfc, 0xa7, 0xfc, 0xa6, 0xfc, 0x9f, 0xfc, 0x9e, 0xfc, + 0x95, 0xfc, 0x95, 0xfc, 0x91, 0xfc, 0x91, 0xfc, 0x8c, 0xfc, 0x8b, 0xfc, + 0x87, 0xfc, 0x87, 0xfc, 0x86, 0xfc, 0x83, 0xfc, 0x82, 0xfc, 0x83, 0xfc, + 0x86, 0xfc, 0x85, 0xfc, 0x84, 0xfc, 0x84, 0xfc, 0x8a, 0xfc, 0x8b, 0xfc, + 0x8f, 0xfc, 0x8d, 0xfc, 0x96, 0xfc, 0x95, 0xfc, 0xa0, 0xfc, 0x9f, 0xfc, + 0xaa, 0xfc, 0xa9, 0xfc, 0xba, 0xfc, 0xb9, 0xfc, 0xc5, 0xfc, 0xc4, 0xfc, + 0xd7, 0xfc, 0xd8, 0xfc, 0xeb, 0xfc, 0xe8, 0xfc, 0xfc, 0xfc, 0xfd, 0xfc, + 0x15, 0xfd, 0x13, 0xfd, 0x28, 0xfd, 0x28, 0xfd, 0x41, 0xfd, 0x40, 0xfd, + 0x59, 0xfd, 0x5a, 0xfd, 0x74, 0xfd, 0x72, 0xfd, 0x8e, 0xfd, 0x90, 0xfd, + 0xab, 0xfd, 0xa7, 0xfd, 0xc6, 0xfd, 0xc8, 0xfd, 0xe1, 0xfd, 0xe0, 0xfd, + 0xfe, 0xfd, 0xfe, 0xfd, 0x1a, 0xfe, 0x18, 0xfe, 0x37, 0xfe, 0x37, 0xfe, + 0x52, 0xfe, 0x4f, 0xfe, 0x6d, 0xfe, 0x6c, 0xfe, 0x89, 0xfe, 0x86, 0xfe, + 0xa3, 0xfe, 0xa0, 0xfe, 0xbc, 0xfe, 0xbc, 0xfe, 0xd6, 0xfe, 0xd4, 0xfe, + 0xed, 0xfe, 0xec, 0xfe, 0x08, 0xff, 0x06, 0xff, 0x1c, 0xff, 0x1b, 0xff, + 0x34, 0xff, 0x32, 0xff, 0x48, 0xff, 0x48, 0xff, 0x5e, 0xff, 0x5b, 0xff, + 0x73, 0xff, 0x73, 0xff, 0x87, 0xff, 0x84, 0xff, 0x9d, 0xff, 0x9c, 0xff, + 0xaf, 0xff, 0xaf, 0xff, 0xc3, 0xff, 0xc0, 0xff, 0xd7, 0xff, 0xd8, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0x00, 0x00, 0xff, 0xff, 0x14, 0x00, 0x13, 0x00, + 0x2a, 0x00, 0x28, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x56, 0x00, 0x54, 0x00, + 0x6c, 0x00, 0x6c, 0x00, 0x84, 0x00, 0x84, 0x00, 0x9c, 0x00, 0x9b, 0x00, + 0xb7, 0x00, 0xb6, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xec, 0x00, 0xe9, 0x00, + 0x05, 0x01, 0x07, 0x01, 0x23, 0x01, 0x20, 0x01, 0x3e, 0x01, 0x40, 0x01, + 0x5b, 0x01, 0x59, 0x01, 0x79, 0x01, 0x79, 0x01, 0x96, 0x01, 0x97, 0x01, + 0xb4, 0x01, 0xb2, 0x01, 0xd3, 0x01, 0xd2, 0x01, 0xef, 0x01, 0xee, 0x01, + 0x0c, 0x02, 0x0c, 0x02, 0x29, 0x02, 0x27, 0x02, 0x43, 0x02, 0x43, 0x02, + 0x5f, 0x02, 0x5f, 0x02, 0x78, 0x02, 0x78, 0x02, 0x90, 0x02, 0x90, 0x02, + 0xa8, 0x02, 0xa6, 0x02, 0xbe, 0x02, 0xbd, 0x02, 0xce, 0x02, 0xd0, 0x02, + 0xe3, 0x02, 0xe1, 0x02, 0xf1, 0x02, 0xf2, 0x02, 0x00, 0x03, 0xff, 0x02, + 0x0e, 0x03, 0x0e, 0x03, 0x15, 0x03, 0x16, 0x03, 0x21, 0x03, 0x20, 0x03, + 0x27, 0x03, 0x28, 0x03, 0x2c, 0x03, 0x2b, 0x03, 0x2e, 0x03, 0x2e, 0x03, + 0x32, 0x03, 0x32, 0x03, 0x33, 0x03, 0x31, 0x03, 0x31, 0x03, 0x30, 0x03, + 0x2e, 0x03, 0x2e, 0x03, 0x2b, 0x03, 0x2a, 0x03, 0x27, 0x03, 0x28, 0x03, + 0x1f, 0x03, 0x1f, 0x03, 0x1c, 0x03, 0x1c, 0x03, 0x13, 0x03, 0x13, 0x03, + 0x0d, 0x03, 0x0c, 0x03, 0x03, 0x03, 0x04, 0x03, 0xfe, 0x02, 0xfe, 0x02, + 0xf4, 0x02, 0xf2, 0x02, 0xee, 0x02, 0xec, 0x02, 0xe3, 0x02, 0xe6, 0x02, + 0xdc, 0x02, 0xda, 0x02, 0xd6, 0x02, 0xd7, 0x02, 0xce, 0x02, 0xcd, 0x02, + 0xc7, 0x02, 0xc7, 0x02, 0xc0, 0x02, 0xc0, 0x02, 0xbb, 0x02, 0xba, 0x02, + 0xb4, 0x02, 0xb4, 0x02, 0xad, 0x02, 0xad, 0x02, 0xa7, 0x02, 0xa6, 0x02, + 0xa2, 0x02, 0xa1, 0x02, 0x99, 0x02, 0x99, 0x02, 0x96, 0x02, 0x94, 0x02, + 0x8b, 0x02, 0x8c, 0x02, 0x87, 0x02, 0x84, 0x02, 0x7e, 0x02, 0x7e, 0x02, + 0x74, 0x02, 0x73, 0x02, 0x6c, 0x02, 0x6d, 0x02, 0x5e, 0x02, 0x5e, 0x02, + 0x54, 0x02, 0x53, 0x02, 0x47, 0x02, 0x47, 0x02, 0x38, 0x02, 0x39, 0x02, + 0x2a, 0x02, 0x28, 0x02, 0x18, 0x02, 0x18, 0x02, 0x06, 0x02, 0x06, 0x02, + 0xf1, 0x01, 0xf2, 0x01, 0xdc, 0x01, 0xdc, 0x01, 0xc4, 0x01, 0xc5, 0x01, + 0xac, 0x01, 0xac, 0x01, 0x93, 0x01, 0x93, 0x01, 0x78, 0x01, 0x77, 0x01, + 0x5a, 0x01, 0x5c, 0x01, 0x3c, 0x01, 0x3b, 0x01, 0x1e, 0x01, 0x20, 0x01, + 0xff, 0x00, 0xfd, 0x00, 0xde, 0x00, 0xdf, 0x00, 0xbb, 0x00, 0xbb, 0x00, + 0x9b, 0x00, 0x9b, 0x00, 0x78, 0x00, 0x79, 0x00, 0x55, 0x00, 0x56, 0x00, + 0x36, 0x00, 0x33, 0x00, 0x0f, 0x00, 0x12, 0x00, 0xf0, 0xff, 0xee, 0xff, + 0xcd, 0xff, 0xcd, 0xff, 0xac, 0xff, 0xab, 0xff, 0x8b, 0xff, 0x8a, 0xff, + 0x6d, 0xff, 0x6d, 0xff, 0x4d, 0xff, 0x4d, 0xff, 0x2f, 0xff, 0x2f, 0xff, + 0x13, 0xff, 0x11, 0xff, 0xf5, 0xfe, 0xf4, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, + 0xc0, 0xfe, 0xbe, 0xfe, 0xa5, 0xfe, 0xa5, 0xfe, 0x8f, 0xfe, 0x8e, 0xfe, + 0x75, 0xfe, 0x74, 0xfe, 0x62, 0xfe, 0x61, 0xfe, 0x49, 0xfe, 0x49, 0xfe, + 0x36, 0xfe, 0x35, 0xfe, 0x21, 0xfe, 0x21, 0xfe, 0x0d, 0xfe, 0x0e, 0xfe, + 0xfc, 0xfd, 0xfa, 0xfd, 0xe7, 0xfd, 0xe7, 0xfd, 0xd7, 0xfd, 0xd6, 0xfd, + 0xc5, 0xfd, 0xc4, 0xfd, 0xb2, 0xfd, 0xb2, 0xfd, 0xa1, 0xfd, 0xa0, 0xfd, + 0x8f, 0xfd, 0x8f, 0xfd, 0x7e, 0xfd, 0x7c, 0xfd, 0x6b, 0xfd, 0x6c, 0xfd, + 0x5c, 0xfd, 0x5b, 0xfd, 0x49, 0xfd, 0x49, 0xfd, 0x38, 0xfd, 0x38, 0xfd, + 0x28, 0xfd, 0x26, 0xfd, 0x16, 0xfd, 0x17, 0xfd, 0x06, 0xfd, 0x05, 0xfd, + 0xf7, 0xfc, 0xf7, 0xfc, 0xe6, 0xfc, 0xe6, 0xfc, 0xd7, 0xfc, 0xd7, 0xfc, + 0xc9, 0xfc, 0xc7, 0xfc, 0xb8, 0xfc, 0xb9, 0xfc, 0xad, 0xfc, 0xad, 0xfc, + 0xa1, 0xfc, 0xa1, 0xfc, 0x98, 0xfc, 0x98, 0xfc, 0x8d, 0xfc, 0x8d, 0xfc, + 0x85, 0xfc, 0x84, 0xfc, 0x80, 0xfc, 0x80, 0xfc, 0x7a, 0xfc, 0x78, 0xfc, + 0x78, 0xfc, 0x78, 0xfc, 0x76, 0xfc, 0x76, 0xfc, 0x76, 0xfc, 0x77, 0xfc, + 0x7a, 0xfc, 0x79, 0xfc, 0x7f, 0xfc, 0x7f, 0xfc, 0x86, 0xfc, 0x85, 0xfc, + 0x91, 0xfc, 0x91, 0xfc, 0x9a, 0xfc, 0x9b, 0xfc, 0xaa, 0xfc, 0xa7, 0xfc, + 0xb6, 0xfc, 0xb8, 0xfc, 0xca, 0xfc, 0xc7, 0xfc, 0xdb, 0xfc, 0xdc, 0xfc, + 0xf0, 0xfc, 0xf0, 0xfc, 0x06, 0xfd, 0x05, 0xfd, 0x1d, 0xfd, 0x1d, 0xfd, + 0x36, 0xfd, 0x35, 0xfd, 0x4c, 0xfd, 0x4d, 0xfd, 0x69, 0xfd, 0x69, 0xfd, + 0x83, 0xfd, 0x81, 0xfd, 0xa0, 0xfd, 0xa1, 0xfd, 0xbc, 0xfd, 0xbb, 0xfd, + 0xd9, 0xfd, 0xd8, 0xfd, 0xf5, 0xfd, 0xf5, 0xfd, 0x10, 0xfe, 0x10, 0xfe, + 0x2b, 0xfe, 0x2d, 0xfe, 0x48, 0xfe, 0x47, 0xfe, 0x61, 0xfe, 0x61, 0xfe, + 0x7c, 0xfe, 0x7c, 0xfe, 0x96, 0xfe, 0x96, 0xfe, 0xaf, 0xfe, 0xae, 0xfe, + 0xc9, 0xfe, 0xc8, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xf5, 0xfe, 0xf6, 0xfe, + 0x0a, 0xff, 0x09, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0x34, 0xff, 0x34, 0xff, + 0x47, 0xff, 0x46, 0xff, 0x5b, 0xff, 0x5a, 0xff, 0x6b, 0xff, 0x6b, 0xff, + 0x7f, 0xff, 0x7d, 0xff, 0x90, 0xff, 0x91, 0xff, 0xa3, 0xff, 0xa1, 0xff, + 0xb3, 0xff, 0xb4, 0xff, 0xc7, 0xff, 0xc5, 0xff, 0xd8, 0xff, 0xd8, 0xff, + 0xeb, 0xff, 0xe9, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0x11, 0x00, 0x10, 0x00, + 0x22, 0x00, 0x23, 0x00, 0x3a, 0x00, 0x39, 0x00, 0x4d, 0x00, 0x4c, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x7b, 0x00, 0x78, 0x00, 0x8f, 0x00, 0x92, 0x00, + 0xab, 0x00, 0xa8, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xda, 0x00, 0xd9, 0x00, + 0xf5, 0x00, 0xf4, 0x00, 0x0d, 0x01, 0x0e, 0x01, 0x2a, 0x01, 0x29, 0x01, + 0x45, 0x01, 0x44, 0x01, 0x5d, 0x01, 0x5e, 0x01, 0x7c, 0x01, 0x7a, 0x01, + 0x94, 0x01, 0x93, 0x01, 0xaf, 0x01, 0xaf, 0x01, 0xca, 0x01, 0xc9, 0x01, + 0xe3, 0x01, 0xe2, 0x01, 0xfe, 0x01, 0xfe, 0x01, 0x14, 0x02, 0x13, 0x02, + 0x2e, 0x02, 0x2d, 0x02, 0x43, 0x02, 0x42, 0x02, 0x59, 0x02, 0x58, 0x02, + 0x6e, 0x02, 0x6e, 0x02, 0x80, 0x02, 0x7f, 0x02, 0x93, 0x02, 0x93, 0x02, + 0xa1, 0x02, 0xa0, 0x02, 0xb1, 0x02, 0xaf, 0x02, 0xbd, 0x02, 0xbf, 0x02, + 0xc8, 0x02, 0xc6, 0x02, 0xd4, 0x02, 0xd6, 0x02, 0xdd, 0x02, 0xda, 0x02, + 0xe5, 0x02, 0xe5, 0x02, 0xec, 0x02, 0xee, 0x02, 0xf1, 0x02, 0xef, 0x02, + 0xf5, 0x02, 0xf5, 0x02, 0xf9, 0x02, 0xf9, 0x02, 0xfa, 0x02, 0xfa, 0x02, + 0xff, 0x02, 0xfd, 0x02, 0xff, 0x02, 0xfd, 0x02, 0xfe, 0x02, 0xfd, 0x02, + 0xff, 0x02, 0xff, 0x02, 0xfd, 0x02, 0xfc, 0x02, 0xfe, 0x02, 0xfd, 0x02, + 0xfa, 0x02, 0xfb, 0x02, 0xfb, 0x02, 0xf8, 0x02, 0xf6, 0x02, 0xf8, 0x02, + 0xf7, 0x02, 0xf5, 0x02, 0xf1, 0x02, 0xf3, 0x02, 0xf2, 0x02, 0xf1, 0x02, + 0xef, 0x02, 0xef, 0x02, 0xee, 0x02, 0xed, 0x02, 0xeb, 0x02, 0xeb, 0x02, + 0xe9, 0x02, 0xe7, 0x02, 0xe6, 0x02, 0xe6, 0x02, 0xe2, 0x02, 0xe1, 0x02, + 0xdf, 0x02, 0xdf, 0x02, 0xda, 0x02, 0xda, 0x02, 0xd6, 0x02, 0xd6, 0x02, + 0xd1, 0x02, 0xd1, 0x02, 0xc8, 0x02, 0xc8, 0x02, 0xc5, 0x02, 0xc3, 0x02, + 0xb8, 0x02, 0xb9, 0x02, 0xb0, 0x02, 0xae, 0x02, 0xa5, 0x02, 0xa5, 0x02, + 0x98, 0x02, 0x97, 0x02, 0x8b, 0x02, 0x8b, 0x02, 0x7c, 0x02, 0x7b, 0x02, + 0x6a, 0x02, 0x6a, 0x02, 0x59, 0x02, 0x58, 0x02, 0x45, 0x02, 0x44, 0x02, + 0x31, 0x02, 0x30, 0x02, 0x1a, 0x02, 0x1a, 0x02, 0x02, 0x02, 0x01, 0x02, + 0xea, 0x01, 0xe9, 0x01, 0xcf, 0x01, 0xcc, 0x01, 0xb1, 0x01, 0xb1, 0x01, + 0x95, 0x01, 0x94, 0x01, 0x75, 0x01, 0x75, 0x01, 0x58, 0x01, 0x57, 0x01, + 0x37, 0x01, 0x35, 0x01, 0x16, 0x01, 0x15, 0x01, 0xf4, 0x00, 0xf5, 0x00, + 0xd1, 0x00, 0xd1, 0x00, 0xb3, 0x00, 0xb1, 0x00, 0x8f, 0x00, 0x91, 0x00, + 0x70, 0x00, 0x6d, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x2c, 0x00, 0x2c, 0x00, + 0x0c, 0x00, 0x0b, 0x00, 0xed, 0xff, 0xed, 0xff, 0xcc, 0xff, 0xcb, 0xff, + 0xb0, 0xff, 0xaf, 0xff, 0x91, 0xff, 0x91, 0xff, 0x76, 0xff, 0x75, 0xff, + 0x5a, 0xff, 0x5b, 0xff, 0x3f, 0xff, 0x3d, 0xff, 0x27, 0xff, 0x27, 0xff, + 0x0e, 0xff, 0x0e, 0xff, 0xf8, 0xfe, 0xf7, 0xfe, 0xe2, 0xfe, 0xe1, 0xfe, + 0xcc, 0xfe, 0xca, 0xfe, 0xb9, 0xfe, 0xb9, 0xfe, 0xa3, 0xfe, 0xa3, 0xfe, + 0x93, 0xfe, 0x93, 0xfe, 0x7f, 0xfe, 0x7d, 0xfe, 0x6d, 0xfe, 0x6d, 0xfe, + 0x5d, 0xfe, 0x5b, 0xfe, 0x4a, 0xfe, 0x4a, 0xfe, 0x3c, 0xfe, 0x3b, 0xfe, + 0x27, 0xfe, 0x26, 0xfe, 0x18, 0xfe, 0x19, 0xfe, 0x07, 0xfe, 0x07, 0xfe, + 0xf5, 0xfd, 0xf4, 0xfd, 0xe5, 0xfd, 0xe7, 0xfd, 0xd4, 0xfd, 0xd2, 0xfd, + 0xc1, 0xfd, 0xc3, 0xfd, 0xb1, 0xfd, 0xb0, 0xfd, 0x9e, 0xfd, 0x9e, 0xfd, + 0x8c, 0xfd, 0x8c, 0xfd, 0x7a, 0xfd, 0x79, 0xfd, 0x68, 0xfd, 0x69, 0xfd, + 0x56, 0xfd, 0x54, 0xfd, 0x42, 0xfd, 0x43, 0xfd, 0x32, 0xfd, 0x31, 0xfd, + 0x1f, 0xfd, 0x1d, 0xfd, 0x0e, 0xfd, 0x10, 0xfd, 0xfe, 0xfc, 0xfb, 0xfc, + 0xed, 0xfc, 0xef, 0xfc, 0xe0, 0xfc, 0xdf, 0xfc, 0xcf, 0xfc, 0xcf, 0xfc, + 0xc6, 0xfc, 0xc7, 0xfc, 0xb7, 0xfc, 0xb6, 0xfc, 0xaf, 0xfc, 0xaf, 0xfc, + 0xa5, 0xfc, 0xa5, 0xfc, 0xa0, 0xfc, 0x9e, 0xfc, 0x9a, 0xfc, 0x99, 0xfc, + 0x96, 0xfc, 0x97, 0xfc, 0x94, 0xfc, 0x93, 0xfc, 0x96, 0xfc, 0x96, 0xfc, + 0x97, 0xfc, 0x96, 0xfc, 0x9e, 0xfc, 0x9d, 0xfc, 0xa1, 0xfc, 0xa2, 0xfc, + 0xac, 0xfc, 0xab, 0xfc, 0xb5, 0xfc, 0xb5, 0xfc, 0xc0, 0xfc, 0xc0, 0xfc, + 0xd2, 0xfc, 0xd1, 0xfc, 0xdd, 0xfc, 0xdd, 0xfc, 0xf1, 0xfc, 0xf2, 0xfc, + 0x05, 0xfd, 0x02, 0xfd, 0x14, 0xfd, 0x17, 0xfd, 0x2d, 0xfd, 0x2c, 0xfd, + 0x3f, 0xfd, 0x40, 0xfd, 0x58, 0xfd, 0x57, 0xfd, 0x6e, 0xfd, 0x6f, 0xfd, + 0x87, 0xfd, 0x86, 0xfd, 0xa0, 0xfd, 0xa0, 0xfd, 0xb9, 0xfd, 0xb9, 0xfd, + 0xd3, 0xfd, 0xd2, 0xfd, 0xeb, 0xfd, 0xec, 0xfd, 0x04, 0xfe, 0x01, 0xfe, + 0x1d, 0xfe, 0x1f, 0xfe, 0x33, 0xfe, 0x33, 0xfe, 0x4d, 0xfe, 0x4e, 0xfe, + 0x64, 0xfe, 0x63, 0xfe, 0x7b, 0xfe, 0x7c, 0xfe, 0x93, 0xfe, 0x92, 0xfe, + 0xa7, 0xfe, 0xa8, 0xfe, 0xbe, 0xfe, 0xbd, 0xfe, 0xd6, 0xfe, 0xd5, 0xfe, + 0xe8, 0xfe, 0xe6, 0xfe, 0xfe, 0xfe, 0x00, 0xff, 0x11, 0xff, 0x0f, 0xff, + 0x24, 0xff, 0x28, 0xff, 0x3c, 0xff, 0x39, 0xff, 0x4c, 0xff, 0x4d, 0xff, + 0x62, 0xff, 0x63, 0xff, 0x74, 0xff, 0x74, 0xff, 0x8d, 0xff, 0x8c, 0xff, + 0x9f, 0xff, 0xa1, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0xcc, 0xff, 0xcc, 0xff, + 0xde, 0xff, 0xde, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0x0e, 0x00, 0x0d, 0x00, + 0x23, 0x00, 0x24, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x53, 0x00, 0x54, 0x00, + 0x6f, 0x00, 0x6f, 0x00, 0x85, 0x00, 0x86, 0x00, 0xa2, 0x00, 0xa1, 0x00, + 0xb7, 0x00, 0xb9, 0x00, 0xd3, 0x00, 0xd3, 0x00, 0xef, 0x00, 0xf0, 0x00, + 0x05, 0x01, 0x06, 0x01, 0x24, 0x01, 0x24, 0x01, 0x39, 0x01, 0x3b, 0x01, + 0x58, 0x01, 0x56, 0x01, 0x6f, 0x01, 0x71, 0x01, 0x87, 0x01, 0x88, 0x01, + 0xa0, 0x01, 0xa0, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xd0, 0x01, 0xcf, 0x01, + 0xe2, 0x01, 0xe2, 0x01, 0xf7, 0x01, 0xf8, 0x01, 0x0b, 0x02, 0x0a, 0x02, + 0x1b, 0x02, 0x1c, 0x02, 0x2e, 0x02, 0x2f, 0x02, 0x3c, 0x02, 0x3a, 0x02, + 0x4c, 0x02, 0x4c, 0x02, 0x59, 0x02, 0x57, 0x02, 0x62, 0x02, 0x64, 0x02, + 0x6f, 0x02, 0x6f, 0x02, 0x7b, 0x02, 0x79, 0x02, 0x81, 0x02, 0x80, 0x02, + 0x88, 0x02, 0x89, 0x02, 0x90, 0x02, 0x8f, 0x02, 0x94, 0x02, 0x94, 0x02, + 0x9d, 0x02, 0x9a, 0x02, 0x9d, 0x02, 0x9d, 0x02, 0xa2, 0x02, 0xa1, 0x02, + 0xa5, 0x02, 0xa4, 0x02, 0xa8, 0x02, 0xa7, 0x02, 0xac, 0x02, 0xab, 0x02, + 0xab, 0x02, 0xac, 0x02, 0xb1, 0x02, 0xae, 0x02, 0xb3, 0x02, 0xb2, 0x02, + 0xb4, 0x02, 0xb3, 0x02, 0xb7, 0x02, 0xb8, 0x02, 0xbb, 0x02, 0xb9, 0x02, + 0xbd, 0x02, 0xbf, 0x02, 0xc1, 0x02, 0xbe, 0x02, 0xc5, 0x02, 0xc4, 0x02, + 0xc6, 0x02, 0xc6, 0x02, 0xcc, 0x02, 0xcb, 0x02, 0xce, 0x02, 0xce, 0x02, + 0xd4, 0x02, 0xd2, 0x02, 0xd5, 0x02, 0xd7, 0x02, 0xdb, 0x02, 0xd8, 0x02, + 0xdb, 0x02, 0xdc, 0x02, 0xdf, 0x02, 0xdf, 0x02, 0xe4, 0x02, 0xe2, 0x02, + 0xe2, 0x02, 0xe3, 0x02, 0xe4, 0x02, 0xe3, 0x02, 0xe3, 0x02, 0xe3, 0x02, + 0xdf, 0x02, 0xe0, 0x02, 0xde, 0x02, 0xde, 0x02, 0xd9, 0x02, 0xd7, 0x02, + 0xd3, 0x02, 0xd3, 0x02, 0xcb, 0x02, 0xcc, 0x02, 0xc4, 0x02, 0xc1, 0x02, + 0xb7, 0x02, 0xb8, 0x02, 0xac, 0x02, 0xab, 0x02, 0x9c, 0x02, 0x9c, 0x02, + 0x8b, 0x02, 0x8a, 0x02, 0x7b, 0x02, 0x7a, 0x02, 0x63, 0x02, 0x63, 0x02, + 0x50, 0x02, 0x4f, 0x02, 0x37, 0x02, 0x37, 0x02, 0x1d, 0x02, 0x1d, 0x02, + 0x05, 0x02, 0x03, 0x02, 0xe4, 0x01, 0xe4, 0x01, 0xc8, 0x01, 0xc9, 0x01, + 0xaa, 0x01, 0xa9, 0x01, 0x89, 0x01, 0x89, 0x01, 0x6b, 0x01, 0x6a, 0x01, + 0x46, 0x01, 0x45, 0x01, 0x25, 0x01, 0x26, 0x01, 0x02, 0x01, 0x02, 0x01, + 0xe1, 0x00, 0xdf, 0x00, 0xbc, 0x00, 0xc0, 0x00, 0x9d, 0x00, 0x99, 0x00, + 0x79, 0x00, 0x79, 0x00, 0x54, 0x00, 0x56, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x14, 0x00, 0x13, 0x00, 0xf4, 0xff, 0xf4, 0xff, 0xd4, 0xff, 0xd4, 0xff, + 0xb7, 0xff, 0xb7, 0xff, 0x98, 0xff, 0x99, 0xff, 0x7e, 0xff, 0x7d, 0xff, + 0x61, 0xff, 0x62, 0xff, 0x47, 0xff, 0x46, 0xff, 0x2f, 0xff, 0x2f, 0xff, + 0x14, 0xff, 0x14, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xe9, 0xfe, 0xe7, 0xfe, + 0xd1, 0xfe, 0xd2, 0xfe, 0xbe, 0xfe, 0xbd, 0xfe, 0xa6, 0xfe, 0xa7, 0xfe, + 0x97, 0xfe, 0x96, 0xfe, 0x7f, 0xfe, 0x80, 0xfe, 0x6f, 0xfe, 0x6f, 0xfe, + 0x5a, 0xfe, 0x5b, 0xfe, 0x4a, 0xfe, 0x47, 0xfe, 0x35, 0xfe, 0x37, 0xfe, + 0x24, 0xfe, 0x23, 0xfe, 0x13, 0xfe, 0x12, 0xfe, 0xff, 0xfd, 0x00, 0xfe, + 0xf0, 0xfd, 0xef, 0xfd, 0xdc, 0xfd, 0xdd, 0xfd, 0xcb, 0xfd, 0xcc, 0xfd, + 0xbb, 0xfd, 0xb9, 0xfd, 0xa7, 0xfd, 0xa8, 0xfd, 0x98, 0xfd, 0x96, 0xfd, + 0x84, 0xfd, 0x84, 0xfd, 0x73, 0xfd, 0x74, 0xfd, 0x65, 0xfd, 0x63, 0xfd, + 0x52, 0xfd, 0x53, 0xfd, 0x44, 0xfd, 0x42, 0xfd, 0x34, 0xfd, 0x33, 0xfd, + 0x25, 0xfd, 0x25, 0xfd, 0x17, 0xfd, 0x16, 0xfd, 0x0b, 0xfd, 0x0c, 0xfd, + 0x00, 0xfd, 0xff, 0xfc, 0xf5, 0xfc, 0xf7, 0xfc, 0xee, 0xfc, 0xeb, 0xfc, + 0xe5, 0xfc, 0xe7, 0xfc, 0xe1, 0xfc, 0xdf, 0xfc, 0xdc, 0xfc, 0xdb, 0xfc, + 0xd7, 0xfc, 0xd9, 0xfc, 0xd8, 0xfc, 0xd5, 0xfc, 0xd5, 0xfc, 0xd8, 0xfc, + 0xd8, 0xfc, 0xd7, 0xfc, 0xdb, 0xfc, 0xdb, 0xfc, 0xdf, 0xfc, 0xe0, 0xfc, + 0xe5, 0xfc, 0xe4, 0xfc, 0xee, 0xfc, 0xef, 0xfc, 0xf8, 0xfc, 0xf7, 0xfc, + 0x02, 0xfd, 0x04, 0xfd, 0x10, 0xfd, 0x0f, 0xfd, 0x1d, 0xfd, 0x1c, 0xfd, + 0x2b, 0xfd, 0x2c, 0xfd, 0x39, 0xfd, 0x39, 0xfd, 0x4a, 0xfd, 0x4b, 0xfd, + 0x5b, 0xfd, 0x5b, 0xfd, 0x6b, 0xfd, 0x6d, 0xfd, 0x7d, 0xfd, 0x7c, 0xfd, + 0x90, 0xfd, 0x8f, 0xfd, 0x9f, 0xfd, 0xa0, 0xfd, 0xb3, 0xfd, 0xb4, 0xfd, + 0xc4, 0xfd, 0xc4, 0xfd, 0xd9, 0xfd, 0xd8, 0xfd, 0xe9, 0xfd, 0xea, 0xfd, + 0xfb, 0xfd, 0xfb, 0xfd, 0x0c, 0xfe, 0x0b, 0xfe, 0x1d, 0xfe, 0x1d, 0xfe, + 0x2e, 0xfe, 0x2e, 0xfe, 0x3e, 0xfe, 0x3d, 0xfe, 0x4d, 0xfe, 0x50, 0xfe, + 0x5e, 0xfe, 0x5c, 0xfe, 0x6e, 0xfe, 0x70, 0xfe, 0x7c, 0xfe, 0x7b, 0xfe, + 0x8d, 0xfe, 0x8d, 0xfe, 0x9c, 0xfe, 0x9d, 0xfe, 0xac, 0xfe, 0xab, 0xfe, + 0xbb, 0xfe, 0xbb, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, + 0xec, 0xfe, 0xec, 0xfe, 0xfc, 0xfe, 0xfd, 0xfe, 0x10, 0xff, 0x10, 0xff, + 0x22, 0xff, 0x23, 0xff, 0x36, 0xff, 0x36, 0xff, 0x4a, 0xff, 0x4a, 0xff, + 0x62, 0xff, 0x63, 0xff, 0x75, 0xff, 0x75, 0xff, 0x90, 0xff, 0x90, 0xff, + 0xa5, 0xff, 0xa6, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xda, 0xff, 0xdc, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0x11, 0x00, 0x11, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x4a, 0x00, 0x4b, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x86, 0x00, 0x86, 0x00, + 0xa3, 0x00, 0xa5, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xe3, 0x00, 0xe1, 0x00, + 0xfe, 0x00, 0xff, 0x00, 0x1e, 0x01, 0x1d, 0x01, 0x39, 0x01, 0x3a, 0x01, + 0x56, 0x01, 0x58, 0x01, 0x72, 0x01, 0x71, 0x01, 0x8b, 0x01, 0x8d, 0x01, + 0xa5, 0x01, 0xa5, 0x01, 0xbe, 0x01, 0xbd, 0x01, 0xd5, 0x01, 0xd5, 0x01, + 0xeb, 0x01, 0xea, 0x01, 0x00, 0x02, 0x00, 0x02, 0x12, 0x02, 0x11, 0x02, + 0x24, 0x02, 0x25, 0x02, 0x34, 0x02, 0x32, 0x02, 0x41, 0x02, 0x44, 0x02, + 0x50, 0x02, 0x4d, 0x02, 0x5b, 0x02, 0x5a, 0x02, 0x64, 0x02, 0x64, 0x02, + 0x6d, 0x02, 0x6c, 0x02, 0x74, 0x02, 0x74, 0x02, 0x7c, 0x02, 0x7a, 0x02, + 0x81, 0x02, 0x80, 0x02, 0x85, 0x02, 0x84, 0x02, 0x88, 0x02, 0x87, 0x02, + 0x8c, 0x02, 0x8b, 0x02, 0x8e, 0x02, 0x8c, 0x02, 0x91, 0x02, 0x90, 0x02, + 0x92, 0x02, 0x92, 0x02, 0x94, 0x02, 0x92, 0x02, 0x96, 0x02, 0x96, 0x02, + 0x97, 0x02, 0x96, 0x02, 0x98, 0x02, 0x98, 0x02, 0x9b, 0x02, 0x9a, 0x02, + 0x9c, 0x02, 0x9c, 0x02, 0xa0, 0x02, 0x9e, 0x02, 0xa2, 0x02, 0xa0, 0x02, + 0xa3, 0x02, 0xa4, 0x02, 0xa7, 0x02, 0xa5, 0x02, 0xa9, 0x02, 0xab, 0x02, + 0xae, 0x02, 0xaa, 0x02, 0xb2, 0x02, 0xb3, 0x02, 0xb3, 0x02, 0xb2, 0x02, + 0xb7, 0x02, 0xb7, 0x02, 0xba, 0x02, 0xba, 0x02, 0xbc, 0x02, 0xbb, 0x02, + 0xbf, 0x02, 0xbf, 0x02, 0xc0, 0x02, 0xbf, 0x02, 0xc1, 0x02, 0xc0, 0x02, + 0xc3, 0x02, 0xc1, 0x02, 0xc0, 0x02, 0xc0, 0x02, 0xbd, 0x02, 0xbd, 0x02, + 0xbc, 0x02, 0xba, 0x02, 0xb6, 0x02, 0xb5, 0x02, 0xb1, 0x02, 0xb1, 0x02, + 0xa9, 0x02, 0xa9, 0x02, 0x9f, 0x02, 0x9e, 0x02, 0x95, 0x02, 0x96, 0x02, + 0x88, 0x02, 0x87, 0x02, 0x7a, 0x02, 0x7c, 0x02, 0x6d, 0x02, 0x6a, 0x02, + 0x5a, 0x02, 0x5b, 0x02, 0x47, 0x02, 0x46, 0x02, 0x33, 0x02, 0x34, 0x02, + 0x20, 0x02, 0x1f, 0x02, 0x07, 0x02, 0x09, 0x02, 0xf2, 0x01, 0xf2, 0x01, + 0xd6, 0x01, 0xd6, 0x01, 0xc0, 0x01, 0xbe, 0x01, 0xa4, 0x01, 0xa4, 0x01, + 0x88, 0x01, 0x88, 0x01, 0x6c, 0x01, 0x6d, 0x01, 0x50, 0x01, 0x4f, 0x01, + 0x34, 0x01, 0x35, 0x01, 0x15, 0x01, 0x14, 0x01, 0xf8, 0x00, 0xf9, 0x00, + 0xdc, 0x00, 0xdc, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xa2, 0x00, 0xa4, 0x00, + 0x86, 0x00, 0x85, 0x00, 0x6a, 0x00, 0x6b, 0x00, 0x4f, 0x00, 0x4f, 0x00, + 0x34, 0x00, 0x33, 0x00, 0x19, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xb7, 0xff, 0xb7, 0xff, + 0x9e, 0xff, 0x9e, 0xff, 0x86, 0xff, 0x86, 0xff, 0x70, 0xff, 0x70, 0xff, + 0x57, 0xff, 0x59, 0xff, 0x42, 0xff, 0x42, 0xff, 0x2c, 0xff, 0x2c, 0xff, + 0x15, 0xff, 0x13, 0xff, 0xfe, 0xfe, 0xff, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, + 0xd2, 0xfe, 0xd2, 0xfe, 0xbb, 0xfe, 0xbb, 0xfe, 0xa4, 0xfe, 0xa3, 0xfe, + 0x8c, 0xfe, 0x8e, 0xfe, 0x76, 0xfe, 0x75, 0xfe, 0x5e, 0xfe, 0x5e, 0xfe, + 0x48, 0xfe, 0x48, 0xfe, 0x2e, 0xfe, 0x2f, 0xfe, 0x18, 0xfe, 0x17, 0xfe, + 0xff, 0xfd, 0xff, 0xfd, 0xe7, 0xfd, 0xe8, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, + 0xb7, 0xfd, 0xb7, 0xfd, 0xa0, 0xfd, 0xa0, 0xfd, 0x8c, 0xfd, 0x8b, 0xfd, + 0x74, 0xfd, 0x74, 0xfd, 0x61, 0xfd, 0x60, 0xfd, 0x48, 0xfd, 0x4a, 0xfd, + 0x3a, 0xfd, 0x38, 0xfd, 0x25, 0xfd, 0x26, 0xfd, 0x14, 0xfd, 0x13, 0xfd, + 0x06, 0xfd, 0x07, 0xfd, 0xf5, 0xfc, 0xf6, 0xfc, 0xec, 0xfc, 0xeb, 0xfc, + 0xe1, 0xfc, 0xe2, 0xfc, 0xd8, 0xfc, 0xd7, 0xfc, 0xd3, 0xfc, 0xd4, 0xfc, + 0xcb, 0xfc, 0xcb, 0xfc, 0xcb, 0xfc, 0xca, 0xfc, 0xc8, 0xfc, 0xca, 0xfc, + 0xcb, 0xfc, 0xc9, 0xfc, 0xd0, 0xfc, 0xd1, 0xfc, 0xd2, 0xfc, 0xd1, 0xfc, + 0xdc, 0xfc, 0xdc, 0xfc, 0xe1, 0xfc, 0xe1, 0xfc, 0xee, 0xfc, 0xee, 0xfc, + 0xf9, 0xfc, 0xf8, 0xfc, 0x05, 0xfd, 0x06, 0xfd, 0x18, 0xfd, 0x15, 0xfd, + 0x22, 0xfd, 0x24, 0xfd, 0x35, 0xfd, 0x36, 0xfd, 0x46, 0xfd, 0x45, 0xfd, + 0x59, 0xfd, 0x5b, 0xfd, 0x6c, 0xfd, 0x6b, 0xfd, 0x80, 0xfd, 0x81, 0xfd, + 0x93, 0xfd, 0x92, 0xfd, 0xa5, 0xfd, 0xa5, 0xfd, 0xb8, 0xfd, 0xb8, 0xfd, + 0xca, 0xfd, 0xcb, 0xfd, 0xdc, 0xfd, 0xdc, 0xfd, 0xef, 0xfd, 0xef, 0xfd, + 0xff, 0xfd, 0xff, 0xfd, 0x12, 0xfe, 0x10, 0xfe, 0x1f, 0xfe, 0x21, 0xfe, + 0x31, 0xfe, 0x31, 0xfe, 0x3f, 0xfe, 0x40, 0xfe, 0x4f, 0xfe, 0x4f, 0xfe, + 0x5d, 0xfe, 0x5d, 0xfe, 0x69, 0xfe, 0x68, 0xfe, 0x76, 0xfe, 0x78, 0xfe, + 0x83, 0xfe, 0x82, 0xfe, 0x8e, 0xfe, 0x8e, 0xfe, 0x9b, 0xfe, 0x9b, 0xfe, + 0xa8, 0xfe, 0xa8, 0xfe, 0xb2, 0xfe, 0xb4, 0xfe, 0xbf, 0xfe, 0xbe, 0xfe, + 0xcc, 0xfe, 0xcc, 0xfe, 0xd8, 0xfe, 0xd9, 0xfe, 0xe6, 0xfe, 0xe5, 0xfe, + 0xf4, 0xfe, 0xf5, 0xfe, 0x03, 0xff, 0x03, 0xff, 0x15, 0xff, 0x13, 0xff, + 0x22, 0xff, 0x24, 0xff, 0x37, 0xff, 0x35, 0xff, 0x48, 0xff, 0x49, 0xff, + 0x59, 0xff, 0x5a, 0xff, 0x70, 0xff, 0x6e, 0xff, 0x84, 0xff, 0x85, 0xff, + 0x9c, 0xff, 0x99, 0xff, 0xb1, 0xff, 0xb4, 0xff, 0xcc, 0xff, 0xca, 0xff, + 0xe3, 0xff, 0xe4, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x17, 0x00, 0x19, 0x00, + 0x36, 0x00, 0x34, 0x00, 0x4c, 0x00, 0x4e, 0x00, 0x6c, 0x00, 0x6a, 0x00, + 0x85, 0x00, 0x86, 0x00, 0xa2, 0x00, 0xa0, 0x00, 0xbd, 0x00, 0xbf, 0x00, + 0xd9, 0x00, 0xd8, 0x00, 0xf3, 0x00, 0xf2, 0x00, 0x0d, 0x01, 0x0e, 0x01, + 0x26, 0x01, 0x25, 0x01, 0x3f, 0x01, 0x3f, 0x01, 0x55, 0x01, 0x57, 0x01, + 0x70, 0x01, 0x6e, 0x01, 0x82, 0x01, 0x83, 0x01, 0x9a, 0x01, 0x99, 0x01, + 0xae, 0x01, 0xad, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xd2, 0x01, 0xd0, 0x01, + 0xe3, 0x01, 0xe5, 0x01, 0xf2, 0x01, 0xf1, 0x01, 0x01, 0x02, 0x02, 0x02, + 0x0f, 0x02, 0x0f, 0x02, 0x1a, 0x02, 0x1b, 0x02, 0x27, 0x02, 0x27, 0x02, + 0x30, 0x02, 0x32, 0x02, 0x3d, 0x02, 0x3c, 0x02, 0x47, 0x02, 0x46, 0x02, + 0x4e, 0x02, 0x4e, 0x02, 0x59, 0x02, 0x58, 0x02, 0x60, 0x02, 0x61, 0x02, + 0x6d, 0x02, 0x69, 0x02, 0x70, 0x02, 0x73, 0x02, 0x7e, 0x02, 0x79, 0x02, + 0x83, 0x02, 0x84, 0x02, 0x8c, 0x02, 0x8a, 0x02, 0x92, 0x02, 0x92, 0x02, + 0x9d, 0x02, 0x9b, 0x02, 0xa2, 0x02, 0xa2, 0x02, 0xab, 0x02, 0xab, 0x02, + 0xb3, 0x02, 0xb3, 0x02, 0xbc, 0x02, 0xba, 0x02, 0xc2, 0x02, 0xc3, 0x02, + 0xcb, 0x02, 0xc8, 0x02, 0xd1, 0x02, 0xd1, 0x02, 0xd7, 0x02, 0xd6, 0x02, + 0xde, 0x02, 0xde, 0x02, 0xe4, 0x02, 0xe3, 0x02, 0xe9, 0x02, 0xe8, 0x02, + 0xec, 0x02, 0xec, 0x02, 0xef, 0x02, 0xee, 0x02, 0xf1, 0x02, 0xf1, 0x02, + 0xf1, 0x02, 0xf0, 0x02, 0xf2, 0x02, 0xf1, 0x02, 0xed, 0x02, 0xee, 0x02, + 0xea, 0x02, 0xe9, 0x02, 0xe4, 0x02, 0xe5, 0x02, 0xdf, 0x02, 0xdd, 0x02, + 0xd6, 0x02, 0xd7, 0x02, 0xcb, 0x02, 0xca, 0x02, 0xc0, 0x02, 0xc0, 0x02, + 0xb1, 0x02, 0xb0, 0x02, 0xa3, 0x02, 0xa3, 0x02, 0x8e, 0x02, 0x8f, 0x02, + 0x7e, 0x02, 0x7d, 0x02, 0x68, 0x02, 0x68, 0x02, 0x53, 0x02, 0x52, 0x02, + 0x3b, 0x02, 0x3c, 0x02, 0x24, 0x02, 0x22, 0x02, 0x0c, 0x02, 0x0b, 0x02, + 0xf0, 0x01, 0xee, 0x01, 0xd5, 0x01, 0xd5, 0x01, 0xba, 0x01, 0xb9, 0x01, + 0x9d, 0x01, 0x9d, 0x01, 0x81, 0x01, 0x81, 0x01, 0x63, 0x01, 0x64, 0x01, + 0x48, 0x01, 0x48, 0x01, 0x2b, 0x01, 0x2b, 0x01, 0x0f, 0x01, 0x11, 0x01, + 0xf5, 0x00, 0xf5, 0x00, 0xd9, 0x00, 0xda, 0x00, 0xc1, 0x00, 0xbf, 0x00, + 0xa6, 0x00, 0xa6, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x74, 0x00, 0x73, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x47, 0x00, 0x46, 0x00, 0x31, 0x00, 0x31, 0x00, + 0x1c, 0x00, 0x1d, 0x00, 0x08, 0x00, 0x07, 0x00, 0xf2, 0xff, 0xf3, 0xff, + 0xe3, 0xff, 0xe0, 0xff, 0xcc, 0xff, 0xcd, 0xff, 0xbb, 0xff, 0xbb, 0xff, + 0xa8, 0xff, 0xa8, 0xff, 0x97, 0xff, 0x95, 0xff, 0x83, 0xff, 0x85, 0xff, + 0x73, 0xff, 0x72, 0xff, 0x60, 0xff, 0x60, 0xff, 0x4e, 0xff, 0x4d, 0xff, + 0x3a, 0xff, 0x3a, 0xff, 0x28, 0xff, 0x27, 0xff, 0x13, 0xff, 0x14, 0xff, + 0xff, 0xfe, 0xfe, 0xfe, 0xec, 0xfe, 0xea, 0xfe, 0xd4, 0xfe, 0xd3, 0xfe, + 0xc1, 0xfe, 0xc1, 0xfe, 0xa9, 0xfe, 0xa7, 0xfe, 0x91, 0xfe, 0x92, 0xfe, + 0x7c, 0xfe, 0x79, 0xfe, 0x61, 0xfe, 0x64, 0xfe, 0x4d, 0xfe, 0x49, 0xfe, + 0x31, 0xfe, 0x32, 0xfe, 0x1a, 0xfe, 0x1a, 0xfe, 0x01, 0xfe, 0x00, 0xfe, + 0xe9, 0xfd, 0xe9, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, 0xba, 0xfd, 0xb7, 0xfd, + 0xa1, 0xfd, 0xa1, 0xfd, 0x8d, 0xfd, 0x8a, 0xfd, 0x76, 0xfd, 0x76, 0xfd, + 0x62, 0xfd, 0x61, 0xfd, 0x50, 0xfd, 0x50, 0xfd, 0x3c, 0xfd, 0x3b, 0xfd, + 0x2e, 0xfd, 0x2e, 0xfd, 0x1d, 0xfd, 0x1d, 0xfd, 0x13, 0xfd, 0x12, 0xfd, + 0x07, 0xfd, 0x06, 0xfd, 0xfe, 0xfc, 0xfc, 0xfc, 0xf6, 0xfc, 0xf7, 0xfc, + 0xef, 0xfc, 0xec, 0xfc, 0xed, 0xfc, 0xf0, 0xfc, 0xec, 0xfc, 0xe9, 0xfc, + 0xeb, 0xfc, 0xec, 0xfc, 0xf0, 0xfc, 0xef, 0xfc, 0xef, 0xfc, 0xf0, 0xfc, + 0xf9, 0xfc, 0xf8, 0xfc, 0xfd, 0xfc, 0xfe, 0xfc, 0x09, 0xfd, 0x07, 0xfd, + 0x10, 0xfd, 0x11, 0xfd, 0x1c, 0xfd, 0x1a, 0xfd, 0x29, 0xfd, 0x29, 0xfd, + 0x31, 0xfd, 0x33, 0xfd, 0x44, 0xfd, 0x44, 0xfd, 0x4e, 0xfd, 0x4f, 0xfd, + 0x60, 0xfd, 0x5f, 0xfd, 0x6f, 0xfd, 0x6e, 0xfd, 0x7e, 0xfd, 0x7e, 0xfd, + 0x8e, 0xfd, 0x8f, 0xfd, 0x9f, 0xfd, 0x9b, 0xfd, 0xae, 0xfd, 0xb0, 0xfd, + 0xbc, 0xfd, 0xbb, 0xfd, 0xcb, 0xfd, 0xcc, 0xfd, 0xda, 0xfd, 0xda, 0xfd, + 0xe9, 0xfd, 0xe7, 0xfd, 0xf7, 0xfd, 0xf8, 0xfd, 0x05, 0xfe, 0x04, 0xfe, + 0x13, 0xfe, 0x13, 0xfe, 0x20, 0xfe, 0x22, 0xfe, 0x30, 0xfe, 0x2e, 0xfe, + 0x3c, 0xfe, 0x3c, 0xfe, 0x48, 0xfe, 0x48, 0xfe, 0x56, 0xfe, 0x55, 0xfe, + 0x65, 0xfe, 0x65, 0xfe, 0x71, 0xfe, 0x71, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, + 0x8e, 0xfe, 0x8c, 0xfe, 0x9d, 0xfe, 0x9c, 0xfe, 0xac, 0xfe, 0xab, 0xfe, + 0xbc, 0xfe, 0xbb, 0xfe, 0xcd, 0xfe, 0xce, 0xfe, 0xde, 0xfe, 0xde, 0xfe, + 0xf2, 0xfe, 0xf1, 0xfe, 0x05, 0xff, 0x04, 0xff, 0x19, 0xff, 0x17, 0xff, + 0x2f, 0xff, 0x2d, 0xff, 0x45, 0xff, 0x43, 0xff, 0x5a, 0xff, 0x5a, 0xff, + 0x74, 0xff, 0x72, 0xff, 0x89, 0xff, 0x88, 0xff, 0xa3, 0xff, 0xa5, 0xff, + 0xbb, 0xff, 0xb9, 0xff, 0xd5, 0xff, 0xd7, 0xff, 0xf1, 0xff, 0xef, 0xff, + 0x09, 0x00, 0x0a, 0x00, 0x27, 0x00, 0x26, 0x00, 0x3e, 0x00, 0x3f, 0x00, + 0x5a, 0x00, 0x58, 0x00, 0x72, 0x00, 0x72, 0x00, 0x8d, 0x00, 0x8d, 0x00, + 0xa5, 0x00, 0xa5, 0x00, 0xbf, 0x00, 0xbc, 0x00, 0xd4, 0x00, 0xd3, 0x00, + 0xed, 0x00, 0xea, 0x00, 0x01, 0x01, 0x01, 0x01, 0x16, 0x01, 0x15, 0x01, + 0x2b, 0x01, 0x2a, 0x01, 0x3d, 0x01, 0x3d, 0x01, 0x4f, 0x01, 0x4d, 0x01, + 0x5d, 0x01, 0x5e, 0x01, 0x70, 0x01, 0x6d, 0x01, 0x7c, 0x01, 0x7c, 0x01, + 0x8b, 0x01, 0x89, 0x01, 0x97, 0x01, 0x97, 0x01, 0xa2, 0x01, 0xa1, 0x01, + 0xaf, 0x01, 0xad, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xc3, 0x01, 0xc3, 0x01, + 0xc9, 0x01, 0xca, 0x01, 0xd4, 0x01, 0xd1, 0x01, 0xdc, 0x01, 0xde, 0x01, + 0xe4, 0x01, 0xe2, 0x01, 0xee, 0x01, 0xee, 0x01, 0xf5, 0x01, 0xf7, 0x01, + 0x00, 0x02, 0xfe, 0x01, 0x0a, 0x02, 0x0a, 0x02, 0x13, 0x02, 0x10, 0x02, + 0x1d, 0x02, 0x1c, 0x02, 0x28, 0x02, 0x28, 0x02, 0x32, 0x02, 0x31, 0x02, + 0x40, 0x02, 0x3e, 0x02, 0x4a, 0x02, 0x4a, 0x02, 0x58, 0x02, 0x57, 0x02, + 0x65, 0x02, 0x63, 0x02, 0x70, 0x02, 0x73, 0x02, 0x80, 0x02, 0x7d, 0x02, + 0x8b, 0x02, 0x8c, 0x02, 0x9c, 0x02, 0x9b, 0x02, 0xa8, 0x02, 0xa7, 0x02, + 0xb5, 0x02, 0xb5, 0x02, 0xc2, 0x02, 0xc1, 0x02, 0xcd, 0x02, 0xcd, 0x02, + 0xd8, 0x02, 0xda, 0x02, 0xe2, 0x02, 0xe0, 0x02, 0xeb, 0x02, 0xec, 0x02, + 0xf3, 0x02, 0xf3, 0x02, 0xfa, 0x02, 0xf8, 0x02, 0xfe, 0x02, 0xfe, 0x02, + 0x02, 0x03, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, + 0xff, 0x02, 0xfd, 0x02, 0xfd, 0x02, 0xfc, 0x02, 0xf5, 0x02, 0xf3, 0x02, + 0xec, 0x02, 0xec, 0x02, 0xe0, 0x02, 0xdf, 0x02, 0xd3, 0x02, 0xd4, 0x02, + 0xc6, 0x02, 0xc4, 0x02, 0xb1, 0x02, 0xb2, 0x02, 0xa1, 0x02, 0x9f, 0x02, + 0x8c, 0x02, 0x8c, 0x02, 0x76, 0x02, 0x77, 0x02, 0x5e, 0x02, 0x5d, 0x02, + 0x45, 0x02, 0x46, 0x02, 0x2c, 0x02, 0x2b, 0x02, 0x10, 0x02, 0x11, 0x02, + 0xf6, 0x01, 0xf5, 0x01, 0xd9, 0x01, 0xda, 0x01, 0xbe, 0x01, 0xbb, 0x01, + 0x9e, 0x01, 0xa0, 0x01, 0x83, 0x01, 0x82, 0x01, 0x68, 0x01, 0x66, 0x01, + 0x47, 0x01, 0x49, 0x01, 0x2f, 0x01, 0x2b, 0x01, 0x10, 0x01, 0x12, 0x01, + 0xf4, 0x00, 0xf4, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xc1, 0x00, 0xc1, 0x00, + 0xa5, 0x00, 0xa5, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x74, 0x00, 0x74, 0x00, + 0x5c, 0x00, 0x5d, 0x00, 0x48, 0x00, 0x48, 0x00, 0x2e, 0x00, 0x2f, 0x00, + 0x1d, 0x00, 0x1b, 0x00, 0x05, 0x00, 0x06, 0x00, 0xf1, 0xff, 0xf1, 0xff, + 0xdd, 0xff, 0xdd, 0xff, 0xca, 0xff, 0xc9, 0xff, 0xb8, 0xff, 0xb7, 0xff, + 0xa2, 0xff, 0xa0, 0xff, 0x8f, 0xff, 0x8e, 0xff, 0x79, 0xff, 0x78, 0xff, + 0x68, 0xff, 0x67, 0xff, 0x52, 0xff, 0x52, 0xff, 0x3e, 0xff, 0x3d, 0xff, + 0x2a, 0xff, 0x2b, 0xff, 0x14, 0xff, 0x13, 0xff, 0xff, 0xfe, 0xff, 0xfe, + 0xea, 0xfe, 0xea, 0xfe, 0xd5, 0xfe, 0xd2, 0xfe, 0xbe, 0xfe, 0xc0, 0xfe, + 0xa8, 0xfe, 0xa6, 0xfe, 0x90, 0xfe, 0x92, 0xfe, 0x7a, 0xfe, 0x78, 0xfe, + 0x63, 0xfe, 0x64, 0xfe, 0x4c, 0xfe, 0x4d, 0xfe, 0x38, 0xfe, 0x35, 0xfe, + 0x1e, 0xfe, 0x1f, 0xfe, 0x09, 0xfe, 0x09, 0xfe, 0xf5, 0xfd, 0xf5, 0xfd, + 0xe0, 0xfd, 0xe0, 0xfd, 0xcc, 0xfd, 0xcd, 0xfd, 0xb9, 0xfd, 0xb9, 0xfd, + 0xa8, 0xfd, 0xa6, 0xfd, 0x97, 0xfd, 0x95, 0xfd, 0x86, 0xfd, 0x85, 0xfd, + 0x7a, 0xfd, 0x7a, 0xfd, 0x6c, 0xfd, 0x6a, 0xfd, 0x61, 0xfd, 0x62, 0xfd, + 0x58, 0xfd, 0x56, 0xfd, 0x4e, 0xfd, 0x4d, 0xfd, 0x49, 0xfd, 0x4a, 0xfd, + 0x42, 0xfd, 0x41, 0xfd, 0x41, 0xfd, 0x42, 0xfd, 0x3e, 0xfd, 0x3e, 0xfd, + 0x3f, 0xfd, 0x3e, 0xfd, 0x3f, 0xfd, 0x3f, 0xfd, 0x43, 0xfd, 0x42, 0xfd, + 0x47, 0xfd, 0x46, 0xfd, 0x4c, 0xfd, 0x4b, 0xfd, 0x53, 0xfd, 0x53, 0xfd, + 0x5a, 0xfd, 0x59, 0xfd, 0x62, 0xfd, 0x63, 0xfd, 0x6a, 0xfd, 0x69, 0xfd, + 0x76, 0xfd, 0x74, 0xfd, 0x7c, 0xfd, 0x7d, 0xfd, 0x88, 0xfd, 0x86, 0xfd, + 0x8f, 0xfd, 0x90, 0xfd, 0x9a, 0xfd, 0x9a, 0xfd, 0xa5, 0xfd, 0xa4, 0xfd, + 0xaa, 0xfd, 0xac, 0xfd, 0xb7, 0xfd, 0xb7, 0xfd, 0xbd, 0xfd, 0xbb, 0xfd, + 0xc8, 0xfd, 0xc9, 0xfd, 0xd1, 0xfd, 0xce, 0xfd, 0xd6, 0xfd, 0xd8, 0xfd, + 0xe1, 0xfd, 0xde, 0xfd, 0xe4, 0xfd, 0xe5, 0xfd, 0xef, 0xfd, 0xef, 0xfd, + 0xf1, 0xfd, 0xf2, 0xfd, 0xfc, 0xfd, 0xfb, 0xfd, 0x02, 0xfe, 0x02, 0xfe, + 0x09, 0xfe, 0x06, 0xfe, 0x11, 0xfe, 0x14, 0xfe, 0x18, 0xfe, 0x16, 0xfe, + 0x1f, 0xfe, 0x20, 0xfe, 0x29, 0xfe, 0x28, 0xfe, 0x30, 0xfe, 0x31, 0xfe, + 0x3d, 0xfe, 0x3c, 0xfe, 0x45, 0xfe, 0x47, 0xfe, 0x55, 0xfe, 0x53, 0xfe, + 0x61, 0xfe, 0x61, 0xfe, 0x6f, 0xfe, 0x6f, 0xfe, 0x80, 0xfe, 0x7e, 0xfe, + 0x8f, 0xfe, 0x8f, 0xfe, 0xa2, 0xfe, 0xa1, 0xfe, 0xb7, 0xfe, 0xb5, 0xfe, + 0xc8, 0xfe, 0xc9, 0xfe, 0xe2, 0xfe, 0xe0, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, + 0x11, 0xff, 0x10, 0xff, 0x28, 0xff, 0x27, 0xff, 0x41, 0xff, 0x41, 0xff, + 0x5e, 0xff, 0x5f, 0xff, 0x78, 0xff, 0x77, 0xff, 0x97, 0xff, 0x97, 0xff, + 0xb0, 0xff, 0xb2, 0xff, 0xd1, 0xff, 0xcf, 0xff, 0xed, 0xff, 0xed, 0xff, + 0x0b, 0x00, 0x0a, 0x00, 0x28, 0x00, 0x26, 0x00, 0x43, 0x00, 0x41, 0x00, + 0x5f, 0x00, 0x60, 0x00, 0x7b, 0x00, 0x79, 0x00, 0x97, 0x00, 0x98, 0x00, + 0xb1, 0x00, 0xae, 0x00, 0xc7, 0x00, 0xc6, 0x00, 0xe1, 0x00, 0xe0, 0x00, + 0xf4, 0x00, 0xf3, 0x00, 0x0b, 0x01, 0x0a, 0x01, 0x1d, 0x01, 0x1c, 0x01, + 0x30, 0x01, 0x30, 0x01, 0x41, 0x01, 0x3f, 0x01, 0x50, 0x01, 0x50, 0x01, + 0x62, 0x01, 0x5f, 0x01, 0x6a, 0x01, 0x6b, 0x01, 0x7a, 0x01, 0x79, 0x01, + 0x85, 0x01, 0x84, 0x01, 0x8f, 0x01, 0x8f, 0x01, 0x9b, 0x01, 0x9b, 0x01, + 0xa2, 0x01, 0x9f, 0x01, 0xac, 0x01, 0xad, 0x01, 0xb3, 0x01, 0xb3, 0x01, + 0xbd, 0x01, 0xbc, 0x01, 0xc4, 0x01, 0xc5, 0x01, 0xcd, 0x01, 0xcc, 0x01, + 0xd4, 0x01, 0xd4, 0x01, 0xdb, 0x01, 0xdb, 0x01, 0xe4, 0x01, 0xe4, 0x01, + 0xed, 0x01, 0xec, 0x01, 0xf7, 0x01, 0xf7, 0x01, 0x02, 0x02, 0x01, 0x02, + 0x0a, 0x02, 0x09, 0x02, 0x16, 0x02, 0x17, 0x02, 0x23, 0x02, 0x20, 0x02, + 0x2d, 0x02, 0x2c, 0x02, 0x3b, 0x02, 0x3b, 0x02, 0x45, 0x02, 0x42, 0x02, + 0x51, 0x02, 0x53, 0x02, 0x60, 0x02, 0x5e, 0x02, 0x6b, 0x02, 0x6b, 0x02, + 0x7b, 0x02, 0x79, 0x02, 0x85, 0x02, 0x84, 0x02, 0x91, 0x02, 0x91, 0x02, + 0x9b, 0x02, 0x9a, 0x02, 0xa8, 0x02, 0xa6, 0x02, 0xb0, 0x02, 0xb0, 0x02, + 0xbb, 0x02, 0xba, 0x02, 0xc0, 0x02, 0xbf, 0x02, 0xc9, 0x02, 0xc8, 0x02, + 0xcc, 0x02, 0xca, 0x02, 0xd1, 0x02, 0xd3, 0x02, 0xd3, 0x02, 0xd1, 0x02, + 0xd4, 0x02, 0xd3, 0x02, 0xd3, 0x02, 0xd2, 0x02, 0xcf, 0x02, 0xcd, 0x02, + 0xcb, 0x02, 0xcb, 0x02, 0xc2, 0x02, 0xc3, 0x02, 0xbc, 0x02, 0xbd, 0x02, + 0xb2, 0x02, 0xb1, 0x02, 0xa5, 0x02, 0xa5, 0x02, 0x9a, 0x02, 0x98, 0x02, + 0x87, 0x02, 0x88, 0x02, 0x79, 0x02, 0x79, 0x02, 0x67, 0x02, 0x67, 0x02, + 0x53, 0x02, 0x53, 0x02, 0x40, 0x02, 0x40, 0x02, 0x2c, 0x02, 0x2c, 0x02, + 0x17, 0x02, 0x16, 0x02, 0x00, 0x02, 0x00, 0x02, 0xeb, 0x01, 0xea, 0x01, + 0xd1, 0x01, 0xd2, 0x01, 0xbd, 0x01, 0xbc, 0x01, 0xa5, 0x01, 0xa4, 0x01, + 0x8e, 0x01, 0x8e, 0x01, 0x76, 0x01, 0x75, 0x01, 0x5e, 0x01, 0x5e, 0x01, + 0x47, 0x01, 0x48, 0x01, 0x31, 0x01, 0x2f, 0x01, 0x1a, 0x01, 0x1c, 0x01, + 0x07, 0x01, 0x02, 0x01, 0xef, 0x00, 0xf0, 0x00, 0xdc, 0x00, 0xd9, 0x00, + 0xc3, 0x00, 0xc4, 0x00, 0xb3, 0x00, 0xb2, 0x00, 0x9a, 0x00, 0x9b, 0x00, + 0x8b, 0x00, 0x88, 0x00, 0x74, 0x00, 0x74, 0x00, 0x62, 0x00, 0x60, 0x00, + 0x4d, 0x00, 0x4e, 0x00, 0x38, 0x00, 0x37, 0x00, 0x25, 0x00, 0x24, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0xf9, 0xff, 0xf9, 0xff, 0xe4, 0xff, 0xe2, 0xff, + 0xcd, 0xff, 0xcc, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0x9e, 0xff, 0x9d, 0xff, + 0x88, 0xff, 0x89, 0xff, 0x70, 0xff, 0x6e, 0xff, 0x57, 0xff, 0x57, 0xff, + 0x3f, 0xff, 0x3d, 0xff, 0x23, 0xff, 0x23, 0xff, 0x0a, 0xff, 0x08, 0xff, + 0xef, 0xfe, 0xf0, 0xfe, 0xd3, 0xfe, 0xd2, 0xfe, 0xba, 0xfe, 0xba, 0xfe, + 0x9e, 0xfe, 0x9d, 0xfe, 0x85, 0xfe, 0x84, 0xfe, 0x69, 0xfe, 0x68, 0xfe, + 0x4f, 0xfe, 0x4e, 0xfe, 0x36, 0xfe, 0x35, 0xfe, 0x1c, 0xfe, 0x1c, 0xfe, + 0x05, 0xfe, 0x04, 0xfe, 0xef, 0xfd, 0xee, 0xfd, 0xd7, 0xfd, 0xd6, 0xfd, + 0xc4, 0xfd, 0xc4, 0xfd, 0xb1, 0xfd, 0xaf, 0xfd, 0xa0, 0xfd, 0xa0, 0xfd, + 0x91, 0xfd, 0x90, 0xfd, 0x83, 0xfd, 0x80, 0xfd, 0x75, 0xfd, 0x76, 0xfd, + 0x6c, 0xfd, 0x69, 0xfd, 0x63, 0xfd, 0x63, 0xfd, 0x5b, 0xfd, 0x5a, 0xfd, + 0x57, 0xfd, 0x56, 0xfd, 0x53, 0xfd, 0x52, 0xfd, 0x53, 0xfd, 0x51, 0xfd, + 0x54, 0xfd, 0x53, 0xfd, 0x54, 0xfd, 0x53, 0xfd, 0x5a, 0xfd, 0x57, 0xfd, + 0x5d, 0xfd, 0x5d, 0xfd, 0x64, 0xfd, 0x61, 0xfd, 0x6b, 0xfd, 0x6b, 0xfd, + 0x73, 0xfd, 0x70, 0xfd, 0x7a, 0xfd, 0x7c, 0xfd, 0x87, 0xfd, 0x83, 0xfd, + 0x8c, 0xfd, 0x8e, 0xfd, 0x9b, 0xfd, 0x98, 0xfd, 0xa2, 0xfd, 0xa2, 0xfd, + 0xae, 0xfd, 0xac, 0xfd, 0xb8, 0xfd, 0xb6, 0xfd, 0xc2, 0xfd, 0xc2, 0xfd, + 0xcb, 0xfd, 0xca, 0xfd, 0xd5, 0xfd, 0xd4, 0xfd, 0xdd, 0xfd, 0xde, 0xfd, + 0xe7, 0xfd, 0xe5, 0xfd, 0xec, 0xfd, 0xed, 0xfd, 0xf4, 0xfd, 0xf4, 0xfd, + 0xfc, 0xfd, 0xfb, 0xfd, 0x00, 0xfe, 0x00, 0xfe, 0x08, 0xfe, 0x07, 0xfe, + 0x0c, 0xfe, 0x0c, 0xfe, 0x10, 0xfe, 0x10, 0xfe, 0x15, 0xfe, 0x16, 0xfe, + 0x18, 0xfe, 0x18, 0xfe, 0x1d, 0xfe, 0x1e, 0xfe, 0x21, 0xfe, 0x22, 0xfe, + 0x28, 0xfe, 0x26, 0xfe, 0x2b, 0xfe, 0x2b, 0xfe, 0x31, 0xfe, 0x30, 0xfe, + 0x37, 0xfe, 0x39, 0xfe, 0x3e, 0xfe, 0x3d, 0xfe, 0x45, 0xfe, 0x44, 0xfe, + 0x4e, 0xfe, 0x4d, 0xfe, 0x59, 0xfe, 0x58, 0xfe, 0x63, 0xfe, 0x64, 0xfe, + 0x6f, 0xfe, 0x6f, 0xfe, 0x7d, 0xfe, 0x7b, 0xfe, 0x8b, 0xfe, 0x8c, 0xfe, + 0x9a, 0xfe, 0x99, 0xfe, 0xab, 0xfe, 0xac, 0xfe, 0xbd, 0xfe, 0xbd, 0xfe, + 0xcf, 0xfe, 0xd1, 0xfe, 0xe6, 0xfe, 0xe5, 0xfe, 0xfa, 0xfe, 0xfa, 0xfe, + 0x11, 0xff, 0x10, 0xff, 0x29, 0xff, 0x29, 0xff, 0x40, 0xff, 0x40, 0xff, + 0x5a, 0xff, 0x5a, 0xff, 0x73, 0xff, 0x74, 0xff, 0x8c, 0xff, 0x8c, 0xff, + 0xa5, 0xff, 0xa6, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xd9, 0xff, 0xda, 0xff, + 0xf2, 0xff, 0xf0, 0xff, 0x0d, 0x00, 0x0e, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x3d, 0x00, 0x3d, 0x00, 0x54, 0x00, 0x53, 0x00, 0x69, 0x00, 0x6a, 0x00, + 0x81, 0x00, 0x80, 0x00, 0x92, 0x00, 0x94, 0x00, 0xaa, 0x00, 0xaa, 0x00, + 0xbd, 0x00, 0xbc, 0x00, 0xcd, 0x00, 0xcf, 0x00, 0xe1, 0x00, 0xde, 0x00, + 0xef, 0x00, 0xf1, 0x00, 0x01, 0x01, 0xfe, 0x00, 0x0f, 0x01, 0x0e, 0x01, + 0x1e, 0x01, 0x1e, 0x01, 0x2d, 0x01, 0x2b, 0x01, 0x3a, 0x01, 0x39, 0x01, + 0x46, 0x01, 0x46, 0x01, 0x54, 0x01, 0x51, 0x01, 0x5f, 0x01, 0x5f, 0x01, + 0x6d, 0x01, 0x6b, 0x01, 0x79, 0x01, 0x79, 0x01, 0x88, 0x01, 0x85, 0x01, + 0x93, 0x01, 0x93, 0x01, 0xa0, 0x01, 0x9e, 0x01, 0xae, 0x01, 0xac, 0x01, + 0xbb, 0x01, 0xbc, 0x01, 0xc9, 0x01, 0xc9, 0x01, 0xd9, 0x01, 0xd7, 0x01, + 0xe8, 0x01, 0xe9, 0x01, 0xf7, 0x01, 0xf5, 0x01, 0x06, 0x02, 0x08, 0x02, + 0x17, 0x02, 0x15, 0x02, 0x27, 0x02, 0x27, 0x02, 0x37, 0x02, 0x35, 0x02, + 0x47, 0x02, 0x46, 0x02, 0x56, 0x02, 0x55, 0x02, 0x67, 0x02, 0x66, 0x02, + 0x75, 0x02, 0x76, 0x02, 0x86, 0x02, 0x84, 0x02, 0x93, 0x02, 0x94, 0x02, + 0xa2, 0x02, 0x9f, 0x02, 0xac, 0x02, 0xac, 0x02, 0xb8, 0x02, 0xb9, 0x02, + 0xc3, 0x02, 0xc2, 0x02, 0xca, 0x02, 0xca, 0x02, 0xd2, 0x02, 0xd1, 0x02, + 0xd7, 0x02, 0xd7, 0x02, 0xdb, 0x02, 0xda, 0x02, 0xdd, 0x02, 0xdd, 0x02, + 0xde, 0x02, 0xde, 0x02, 0xdb, 0x02, 0xdb, 0x02, 0xda, 0x02, 0xd8, 0x02, + 0xd4, 0x02, 0xd2, 0x02, 0xcc, 0x02, 0xcc, 0x02, 0xc5, 0x02, 0xc4, 0x02, + 0xb9, 0x02, 0xba, 0x02, 0xb0, 0x02, 0xad, 0x02, 0xa0, 0x02, 0xa1, 0x02, + 0x92, 0x02, 0x90, 0x02, 0x81, 0x02, 0x81, 0x02, 0x71, 0x02, 0x70, 0x02, + 0x5d, 0x02, 0x5d, 0x02, 0x4a, 0x02, 0x4a, 0x02, 0x37, 0x02, 0x35, 0x02, + 0x20, 0x02, 0x21, 0x02, 0x0e, 0x02, 0x0b, 0x02, 0xf6, 0x01, 0xf6, 0x01, + 0xe3, 0x01, 0xe1, 0x01, 0xcb, 0x01, 0xcb, 0x01, 0xb7, 0x01, 0xb6, 0x01, + 0xa1, 0x01, 0xa1, 0x01, 0x8e, 0x01, 0x8c, 0x01, 0x76, 0x01, 0x76, 0x01, + 0x67, 0x01, 0x65, 0x01, 0x4f, 0x01, 0x4e, 0x01, 0x3f, 0x01, 0x41, 0x01, + 0x2a, 0x01, 0x28, 0x01, 0x18, 0x01, 0x19, 0x01, 0x08, 0x01, 0x07, 0x01, + 0xf4, 0x00, 0xf2, 0x00, 0xe5, 0x00, 0xe5, 0x00, 0xd1, 0x00, 0xd1, 0x00, + 0xc2, 0x00, 0xc2, 0x00, 0xb4, 0x00, 0xb1, 0x00, 0xa0, 0x00, 0xa0, 0x00, + 0x93, 0x00, 0x91, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x6e, 0x00, 0x6d, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x49, 0x00, 0x48, 0x00, 0x39, 0x00, 0x38, 0x00, + 0x20, 0x00, 0x21, 0x00, 0x0f, 0x00, 0x10, 0x00, 0xf9, 0xff, 0xf8, 0xff, + 0xe4, 0xff, 0xe4, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xb6, 0xff, 0xb6, 0xff, + 0x9e, 0xff, 0x9e, 0xff, 0x84, 0xff, 0x85, 0xff, 0x6e, 0xff, 0x6c, 0xff, + 0x52, 0xff, 0x52, 0xff, 0x39, 0xff, 0x39, 0xff, 0x1e, 0xff, 0x1c, 0xff, + 0x03, 0xff, 0x03, 0xff, 0xe9, 0xfe, 0xe7, 0xfe, 0xcd, 0xfe, 0xce, 0xfe, + 0xb2, 0xfe, 0xb1, 0xfe, 0x96, 0xfe, 0x99, 0xfe, 0x7f, 0xfe, 0x7c, 0xfe, + 0x66, 0xfe, 0x66, 0xfe, 0x4d, 0xfe, 0x4c, 0xfe, 0x37, 0xfe, 0x35, 0xfe, + 0x1d, 0xfe, 0x1f, 0xfe, 0x0c, 0xfe, 0x0a, 0xfe, 0xf7, 0xfd, 0xf6, 0xfd, + 0xe4, 0xfd, 0xe4, 0xfd, 0xd4, 0xfd, 0xd2, 0xfd, 0xc3, 0xfd, 0xc4, 0xfd, + 0xb7, 0xfd, 0xb5, 0xfd, 0xa9, 0xfd, 0xaa, 0xfd, 0xa0, 0xfd, 0x9f, 0xfd, + 0x98, 0xfd, 0x99, 0xfd, 0x8f, 0xfd, 0x8f, 0xfd, 0x8c, 0xfd, 0x8c, 0xfd, + 0x87, 0xfd, 0x88, 0xfd, 0x86, 0xfd, 0x85, 0xfd, 0x84, 0xfd, 0x85, 0xfd, + 0x85, 0xfd, 0x84, 0xfd, 0x87, 0xfd, 0x88, 0xfd, 0x8a, 0xfd, 0x89, 0xfd, + 0x8c, 0xfd, 0x8e, 0xfd, 0x92, 0xfd, 0x91, 0xfd, 0x95, 0xfd, 0x95, 0xfd, + 0x9d, 0xfd, 0x9d, 0xfd, 0xa0, 0xfd, 0xa0, 0xfd, 0xa8, 0xfd, 0xa8, 0xfd, + 0xad, 0xfd, 0xad, 0xfd, 0xb4, 0xfd, 0xb3, 0xfd, 0xba, 0xfd, 0xbb, 0xfd, + 0xbf, 0xfd, 0xc0, 0xfd, 0xc6, 0xfd, 0xc6, 0xfd, 0xcc, 0xfd, 0xcb, 0xfd, + 0xce, 0xfd, 0xd0, 0xfd, 0xd5, 0xfd, 0xd6, 0xfd, 0xd7, 0xfd, 0xd7, 0xfd, + 0xdd, 0xfd, 0xde, 0xfd, 0xe0, 0xfd, 0xe1, 0xfd, 0xe2, 0xfd, 0xe2, 0xfd, + 0xe8, 0xfd, 0xe8, 0xfd, 0xe8, 0xfd, 0xe8, 0xfd, 0xed, 0xfd, 0xee, 0xfd, + 0xef, 0xfd, 0xee, 0xfd, 0xf1, 0xfd, 0xf1, 0xfd, 0xf7, 0xfd, 0xf8, 0xfd, + 0xf8, 0xfd, 0xf8, 0xfd, 0xff, 0xfd, 0x01, 0xfe, 0x03, 0xfe, 0x02, 0xfe, + 0x09, 0xfe, 0x09, 0xfe, 0x12, 0xfe, 0x12, 0xfe, 0x16, 0xfe, 0x16, 0xfe, + 0x22, 0xfe, 0x22, 0xfe, 0x28, 0xfe, 0x29, 0xfe, 0x37, 0xfe, 0x36, 0xfe, + 0x42, 0xfe, 0x44, 0xfe, 0x4f, 0xfe, 0x4e, 0xfe, 0x5e, 0xfe, 0x5e, 0xfe, + 0x6d, 0xfe, 0x6d, 0xfe, 0x7e, 0xfe, 0x7f, 0xfe, 0x92, 0xfe, 0x92, 0xfe, + 0xa4, 0xfe, 0xa4, 0xfe, 0xba, 0xfe, 0xba, 0xfe, 0xcc, 0xfe, 0xce, 0xfe, + 0xe6, 0xfe, 0xe5, 0xfe, 0xfc, 0xfe, 0xfc, 0xfe, 0x13, 0xff, 0x13, 0xff, + 0x2b, 0xff, 0x2c, 0xff, 0x42, 0xff, 0x42, 0xff, 0x5b, 0xff, 0x5c, 0xff, + 0x74, 0xff, 0x75, 0xff, 0x8c, 0xff, 0x8b, 0xff, 0xa4, 0xff, 0xa5, 0xff, + 0xbd, 0xff, 0xbd, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xec, 0xff, 0xec, 0xff, + 0x02, 0x00, 0x02, 0x00, 0x18, 0x00, 0x19, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x41, 0x00, 0x42, 0x00, 0x54, 0x00, 0x54, 0x00, 0x66, 0x00, 0x66, 0x00, + 0x78, 0x00, 0x7a, 0x00, 0x88, 0x00, 0x87, 0x00, 0x98, 0x00, 0x99, 0x00, + 0xa6, 0x00, 0xa6, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xc1, 0x00, 0xc2, 0x00, + 0xd0, 0x00, 0xcf, 0x00, 0xdc, 0x00, 0xdd, 0x00, 0xe9, 0x00, 0xe9, 0x00, + 0xf6, 0x00, 0xf5, 0x00, 0x02, 0x01, 0x03, 0x01, 0x0f, 0x01, 0x0f, 0x01, + 0x1b, 0x01, 0x1a, 0x01, 0x27, 0x01, 0x27, 0x01, 0x36, 0x01, 0x34, 0x01, + 0x41, 0x01, 0x41, 0x01, 0x51, 0x01, 0x4f, 0x01, 0x5c, 0x01, 0x5d, 0x01, + 0x6d, 0x01, 0x6c, 0x01, 0x7c, 0x01, 0x7c, 0x01, 0x8c, 0x01, 0x8b, 0x01, + 0x9d, 0x01, 0x9c, 0x01, 0xad, 0x01, 0xad, 0x01, 0xc1, 0x01, 0xbf, 0x01, + 0xd2, 0x01, 0xd2, 0x01, 0xe4, 0x01, 0xe5, 0x01, 0xf7, 0x01, 0xf6, 0x01, + 0x0b, 0x02, 0x0b, 0x02, 0x1d, 0x02, 0x1d, 0x02, 0x30, 0x02, 0x2f, 0x02, + 0x41, 0x02, 0x41, 0x02, 0x53, 0x02, 0x53, 0x02, 0x65, 0x02, 0x64, 0x02, + 0x76, 0x02, 0x75, 0x02, 0x84, 0x02, 0x85, 0x02, 0x92, 0x02, 0x91, 0x02, + 0xa1, 0x02, 0xa0, 0x02, 0xab, 0x02, 0xad, 0x02, 0xb7, 0x02, 0xb5, 0x02, + 0xbd, 0x02, 0xbf, 0x02, 0xc6, 0x02, 0xc4, 0x02, 0xc9, 0x02, 0xca, 0x02, + 0xce, 0x02, 0xce, 0x02, 0xcf, 0x02, 0xcf, 0x02, 0xcf, 0x02, 0xd0, 0x02, + 0xcd, 0x02, 0xcd, 0x02, 0xc9, 0x02, 0xca, 0x02, 0xc2, 0x02, 0xc2, 0x02, + 0xba, 0x02, 0xbc, 0x02, 0xb1, 0x02, 0xb1, 0x02, 0xa6, 0x02, 0xa7, 0x02, + 0x9a, 0x02, 0x9a, 0x02, 0x8c, 0x02, 0x8d, 0x02, 0x7e, 0x02, 0x7d, 0x02, + 0x6d, 0x02, 0x6e, 0x02, 0x5d, 0x02, 0x5c, 0x02, 0x4c, 0x02, 0x4b, 0x02, + 0x39, 0x02, 0x3a, 0x02, 0x27, 0x02, 0x26, 0x02, 0x12, 0x02, 0x14, 0x02, + 0x00, 0x02, 0xff, 0x01, 0xec, 0x01, 0xed, 0x01, 0xd8, 0x01, 0xd9, 0x01, + 0xc7, 0x01, 0xc7, 0x01, 0xb2, 0x01, 0xb2, 0x01, 0xa1, 0x01, 0xa3, 0x01, + 0x8e, 0x01, 0x8d, 0x01, 0x7c, 0x01, 0x7e, 0x01, 0x6c, 0x01, 0x6b, 0x01, + 0x59, 0x01, 0x59, 0x01, 0x4a, 0x01, 0x4a, 0x01, 0x39, 0x01, 0x38, 0x01, + 0x29, 0x01, 0x2a, 0x01, 0x1b, 0x01, 0x19, 0x01, 0x0a, 0x01, 0x0b, 0x01, + 0xfb, 0x00, 0xfa, 0x00, 0xec, 0x00, 0xec, 0x00, 0xdc, 0x00, 0xdb, 0x00, + 0xce, 0x00, 0xce, 0x00, 0xbc, 0x00, 0xbb, 0x00, 0xad, 0x00, 0xae, 0x00, + 0x9b, 0x00, 0x9b, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x78, 0x00, 0x77, 0x00, + 0x65, 0x00, 0x64, 0x00, 0x50, 0x00, 0x53, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x11, 0x00, 0x12, 0x00, 0xfa, 0xff, 0xfa, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xc9, 0xff, 0xca, 0xff, 0xb2, 0xff, 0xb1, 0xff, + 0x96, 0xff, 0x98, 0xff, 0x7c, 0xff, 0x7b, 0xff, 0x61, 0xff, 0x62, 0xff, + 0x47, 0xff, 0x46, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x12, 0xff, 0x11, 0xff, + 0xf7, 0xfe, 0xf7, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xc6, 0xfe, 0xc4, 0xfe, + 0xa8, 0xfe, 0xaa, 0xfe, 0x92, 0xfe, 0x91, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, + 0x63, 0xfe, 0x63, 0xfe, 0x4e, 0xfe, 0x4d, 0xfe, 0x39, 0xfe, 0x39, 0xfe, + 0x27, 0xfe, 0x26, 0xfe, 0x16, 0xfe, 0x16, 0xfe, 0x05, 0xfe, 0x04, 0xfe, + 0xf9, 0xfd, 0xf9, 0xfd, 0xeb, 0xfd, 0xeb, 0xfd, 0xe2, 0xfd, 0xe2, 0xfd, + 0xd9, 0xfd, 0xd9, 0xfd, 0xd0, 0xfd, 0xd2, 0xfd, 0xcd, 0xfd, 0xcb, 0xfd, + 0xc5, 0xfd, 0xc7, 0xfd, 0xc3, 0xfd, 0xc3, 0xfd, 0xc3, 0xfd, 0xc2, 0xfd, + 0xc0, 0xfd, 0xc3, 0xfd, 0xc3, 0xfd, 0xc2, 0xfd, 0xc2, 0xfd, 0xc2, 0xfd, + 0xc4, 0xfd, 0xc4, 0xfd, 0xc8, 0xfd, 0xc8, 0xfd, 0xca, 0xfd, 0xc8, 0xfd, + 0xce, 0xfd, 0xcf, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, + 0xd9, 0xfd, 0xda, 0xfd, 0xdd, 0xfd, 0xdc, 0xfd, 0xe0, 0xfd, 0xe0, 0xfd, + 0xe3, 0xfd, 0xe4, 0xfd, 0xe6, 0xfd, 0xe7, 0xfd, 0xe8, 0xfd, 0xe9, 0xfd, + 0xeb, 0xfd, 0xea, 0xfd, 0xeb, 0xfd, 0xec, 0xfd, 0xec, 0xfd, 0xed, 0xfd, + 0xef, 0xfd, 0xee, 0xfd, 0xed, 0xfd, 0xee, 0xfd, 0xee, 0xfd, 0xed, 0xfd, + 0xee, 0xfd, 0xf0, 0xfd, 0xef, 0xfd, 0xed, 0xfd, 0xee, 0xfd, 0xef, 0xfd, + 0xee, 0xfd, 0xed, 0xfd, 0xef, 0xfd, 0xee, 0xfd, 0xf0, 0xfd, 0xf0, 0xfd, + 0xef, 0xfd, 0xef, 0xfd, 0xf2, 0xfd, 0xf2, 0xfd, 0xf3, 0xfd, 0xf3, 0xfd, + 0xf9, 0xfd, 0xf9, 0xfd, 0xfb, 0xfd, 0xfc, 0xfd, 0x02, 0xfe, 0x01, 0xfe, + 0x08, 0xfe, 0x0a, 0xfe, 0x0f, 0xfe, 0x10, 0xfe, 0x1c, 0xfe, 0x1a, 0xfe, + 0x21, 0xfe, 0x24, 0xfe, 0x2f, 0xfe, 0x2f, 0xfe, 0x3e, 0xfe, 0x3d, 0xfe, + 0x4a, 0xfe, 0x4a, 0xfe, 0x5d, 0xfe, 0x5c, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, + 0x7e, 0xfe, 0x7f, 0xfe, 0x92, 0xfe, 0x91, 0xfe, 0xa5, 0xfe, 0xa6, 0xfe, + 0xbc, 0xfe, 0xbc, 0xfe, 0xd0, 0xfe, 0xcf, 0xfe, 0xe8, 0xfe, 0xea, 0xfe, + 0xfd, 0xfe, 0xfd, 0xfe, 0x15, 0xff, 0x14, 0xff, 0x2d, 0xff, 0x2c, 0xff, + 0x43, 0xff, 0x44, 0xff, 0x5c, 0xff, 0x5c, 0xff, 0x72, 0xff, 0x70, 0xff, + 0x88, 0xff, 0x89, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xb5, 0xff, 0xb4, 0xff, + 0xcb, 0xff, 0xcc, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0x04, 0x00, 0x03, 0x00, 0x17, 0x00, 0x18, 0x00, 0x28, 0x00, 0x27, 0x00, + 0x37, 0x00, 0x38, 0x00, 0x48, 0x00, 0x47, 0x00, 0x55, 0x00, 0x55, 0x00, + 0x64, 0x00, 0x65, 0x00, 0x71, 0x00, 0x6f, 0x00, 0x7e, 0x00, 0x7f, 0x00, + 0x89, 0x00, 0x89, 0x00, 0x96, 0x00, 0x95, 0x00, 0xa1, 0x00, 0xa2, 0x00, + 0xae, 0x00, 0xae, 0x00, 0xbb, 0x00, 0xba, 0x00, 0xc5, 0x00, 0xc6, 0x00, + 0xd4, 0x00, 0xd3, 0x00, 0xdd, 0x00, 0xdf, 0x00, 0xec, 0x00, 0xea, 0x00, + 0xfa, 0x00, 0xfa, 0x00, 0x07, 0x01, 0x06, 0x01, 0x17, 0x01, 0x17, 0x01, + 0x28, 0x01, 0x26, 0x01, 0x36, 0x01, 0x37, 0x01, 0x49, 0x01, 0x48, 0x01, + 0x59, 0x01, 0x59, 0x01, 0x6b, 0x01, 0x6d, 0x01, 0x7e, 0x01, 0x7d, 0x01, + 0x91, 0x01, 0x92, 0x01, 0xa6, 0x01, 0xa4, 0x01, 0xb9, 0x01, 0xb9, 0x01, + 0xcf, 0x01, 0xcd, 0x01, 0xe2, 0x01, 0xe2, 0x01, 0xf7, 0x01, 0xf6, 0x01, + 0x0a, 0x02, 0x0b, 0x02, 0x1d, 0x02, 0x1c, 0x02, 0x31, 0x02, 0x31, 0x02, + 0x40, 0x02, 0x41, 0x02, 0x55, 0x02, 0x53, 0x02, 0x64, 0x02, 0x64, 0x02, + 0x72, 0x02, 0x71, 0x02, 0x82, 0x02, 0x82, 0x02, 0x8d, 0x02, 0x8d, 0x02, + 0x98, 0x02, 0x98, 0x02, 0xa1, 0x02, 0xa2, 0x02, 0xa7, 0x02, 0xa7, 0x02, + 0xad, 0x02, 0xac, 0x02, 0xb1, 0x02, 0xb0, 0x02, 0xb1, 0x02, 0xb2, 0x02, + 0xb3, 0x02, 0xb3, 0x02, 0xb2, 0x02, 0xb1, 0x02, 0xad, 0x02, 0xad, 0x02, + 0xa8, 0x02, 0xa9, 0x02, 0xa0, 0x02, 0x9f, 0x02, 0x97, 0x02, 0x99, 0x02, + 0x8d, 0x02, 0x8c, 0x02, 0x83, 0x02, 0x84, 0x02, 0x76, 0x02, 0x76, 0x02, + 0x69, 0x02, 0x69, 0x02, 0x5a, 0x02, 0x5b, 0x02, 0x49, 0x02, 0x49, 0x02, + 0x3b, 0x02, 0x3c, 0x02, 0x2d, 0x02, 0x2b, 0x02, 0x19, 0x02, 0x1c, 0x02, + 0x0d, 0x02, 0x0d, 0x02, 0xf8, 0x01, 0xf8, 0x01, 0xea, 0x01, 0xeb, 0x01, + 0xd8, 0x01, 0xd8, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0xb8, 0x01, 0xba, 0x01, + 0xa7, 0x01, 0xa9, 0x01, 0x9c, 0x01, 0x9c, 0x01, 0x8b, 0x01, 0x8c, 0x01, + 0x7d, 0x01, 0x7c, 0x01, 0x6e, 0x01, 0x70, 0x01, 0x60, 0x01, 0x61, 0x01, + 0x53, 0x01, 0x52, 0x01, 0x46, 0x01, 0x46, 0x01, 0x36, 0x01, 0x36, 0x01, + 0x2b, 0x01, 0x2d, 0x01, 0x1d, 0x01, 0x1b, 0x01, 0x0e, 0x01, 0x0f, 0x01, + 0x00, 0x01, 0xff, 0x00, 0xf1, 0x00, 0xf0, 0x00, 0xe2, 0x00, 0xe2, 0x00, + 0xd2, 0x00, 0xd2, 0x00, 0xc0, 0x00, 0xc2, 0x00, 0xb2, 0x00, 0xb2, 0x00, + 0x9d, 0x00, 0x9d, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x77, 0x00, 0x77, 0x00, + 0x63, 0x00, 0x64, 0x00, 0x4e, 0x00, 0x4d, 0x00, 0x38, 0x00, 0x37, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x07, 0x00, 0x07, 0x00, 0xee, 0xff, 0xef, 0xff, + 0xd5, 0xff, 0xd5, 0xff, 0xbb, 0xff, 0xbc, 0xff, 0xa0, 0xff, 0xa1, 0xff, + 0x85, 0xff, 0x86, 0xff, 0x6c, 0xff, 0x6c, 0xff, 0x50, 0xff, 0x51, 0xff, + 0x38, 0xff, 0x38, 0xff, 0x1b, 0xff, 0x1c, 0xff, 0x04, 0xff, 0x04, 0xff, + 0xe8, 0xfe, 0xe9, 0xfe, 0xd1, 0xfe, 0xd2, 0xfe, 0xb9, 0xfe, 0xb9, 0xfe, + 0xa2, 0xfe, 0xa4, 0xfe, 0x90, 0xfe, 0x8e, 0xfe, 0x78, 0xfe, 0x7b, 0xfe, + 0x68, 0xfe, 0x68, 0xfe, 0x57, 0xfe, 0x58, 0xfe, 0x46, 0xfe, 0x48, 0xfe, + 0x3c, 0xfe, 0x3c, 0xfe, 0x2b, 0xfe, 0x2d, 0xfe, 0x25, 0xfe, 0x24, 0xfe, + 0x19, 0xfe, 0x19, 0xfe, 0x11, 0xfe, 0x13, 0xfe, 0x0d, 0xfe, 0x0c, 0xfe, + 0x03, 0xfe, 0x07, 0xfe, 0x07, 0xfe, 0x05, 0xfe, 0xfd, 0xfd, 0x00, 0xfe, + 0x02, 0xfe, 0x00, 0xfe, 0xfd, 0xfd, 0x00, 0xfe, 0xff, 0xfd, 0xfe, 0xfd, + 0x00, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x01, 0xfe, 0x03, 0xfe, 0x03, 0xfe, + 0x02, 0xfe, 0x03, 0xfe, 0x06, 0xfe, 0x05, 0xfe, 0x08, 0xfe, 0x08, 0xfe, + 0x07, 0xfe, 0x08, 0xfe, 0x09, 0xfe, 0x09, 0xfe, 0x09, 0xfe, 0x0b, 0xfe, + 0x0a, 0xfe, 0x09, 0xfe, 0x0c, 0xfe, 0x0b, 0xfe, 0x0a, 0xfe, 0x0a, 0xfe, + 0x08, 0xfe, 0x09, 0xfe, 0x09, 0xfe, 0x09, 0xfe, 0x05, 0xfe, 0x06, 0xfe, + 0x05, 0xfe, 0x05, 0xfe, 0x00, 0xfe, 0x02, 0xfe, 0xff, 0xfd, 0x00, 0xfe, + 0xfc, 0xfd, 0xfc, 0xfd, 0xf7, 0xfd, 0xfa, 0xfd, 0xf6, 0xfd, 0xf5, 0xfd, + 0xf2, 0xfd, 0xf2, 0xfd, 0xef, 0xfd, 0xf0, 0xfd, 0xeb, 0xfd, 0xeb, 0xfd, + 0xec, 0xfd, 0xee, 0xfd, 0xe9, 0xfd, 0xea, 0xfd, 0xea, 0xfd, 0xea, 0xfd, + 0xeb, 0xfd, 0xec, 0xfd, 0xeb, 0xfd, 0xec, 0xfd, 0xf0, 0xfd, 0xf0, 0xfd, + 0xf2, 0xfd, 0xf4, 0xfd, 0xf8, 0xfd, 0xf9, 0xfd, 0xff, 0xfd, 0x00, 0xfe, + 0x07, 0xfe, 0x08, 0xfe, 0x12, 0xfe, 0x12, 0xfe, 0x1d, 0xfe, 0x1e, 0xfe, + 0x2a, 0xfe, 0x2a, 0xfe, 0x35, 0xfe, 0x37, 0xfe, 0x44, 0xfe, 0x45, 0xfe, + 0x57, 0xfe, 0x57, 0xfe, 0x64, 0xfe, 0x67, 0xfe, 0x7b, 0xfe, 0x79, 0xfe, + 0x89, 0xfe, 0x8d, 0xfe, 0xa1, 0xfe, 0x9f, 0xfe, 0xb6, 0xfe, 0xb8, 0xfe, + 0xc8, 0xfe, 0xc8, 0xfe, 0xe2, 0xfe, 0xe2, 0xfe, 0xf4, 0xfe, 0xf5, 0xfe, + 0x0b, 0xff, 0x0c, 0xff, 0x21, 0xff, 0x22, 0xff, 0x36, 0xff, 0x36, 0xff, + 0x4d, 0xff, 0x4e, 0xff, 0x62, 0xff, 0x62, 0xff, 0x75, 0xff, 0x76, 0xff, + 0x8a, 0xff, 0x8a, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0xae, 0xff, 0xb0, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xe2, 0xff, 0xe3, 0xff, + 0xf2, 0xff, 0xf1, 0xff, 0x02, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x0f, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x37, 0x00, 0x37, 0x00, + 0x46, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x51, 0x00, 0x5f, 0x00, 0x5b, 0x00, + 0x68, 0x00, 0x6c, 0x00, 0x76, 0x00, 0x75, 0x00, 0x82, 0x00, 0x82, 0x00, + 0x8d, 0x00, 0x8d, 0x00, 0x9d, 0x00, 0x9c, 0x00, 0xa8, 0x00, 0xab, 0x00, + 0xb8, 0x00, 0xba, 0x00, 0xc9, 0x00, 0xc8, 0x00, 0xd8, 0x00, 0xd9, 0x00, + 0xe7, 0x00, 0xe9, 0x00, 0xfa, 0x00, 0xf8, 0x00, 0x0b, 0x01, 0x0e, 0x01, + 0x1f, 0x01, 0x1d, 0x01, 0x31, 0x01, 0x33, 0x01, 0x44, 0x01, 0x44, 0x01, + 0x59, 0x01, 0x5c, 0x01, 0x6e, 0x01, 0x6d, 0x01, 0x82, 0x01, 0x83, 0x01, + 0x99, 0x01, 0x99, 0x01, 0xac, 0x01, 0xae, 0x01, 0xc4, 0x01, 0xc4, 0x01, + 0xd7, 0x01, 0xd8, 0x01, 0xec, 0x01, 0xed, 0x01, 0x00, 0x02, 0x00, 0x02, + 0x12, 0x02, 0x13, 0x02, 0x25, 0x02, 0x26, 0x02, 0x36, 0x02, 0x38, 0x02, + 0x47, 0x02, 0x46, 0x02, 0x54, 0x02, 0x56, 0x02, 0x64, 0x02, 0x61, 0x02, + 0x6c, 0x02, 0x6f, 0x02, 0x79, 0x02, 0x77, 0x02, 0x7f, 0x02, 0x81, 0x02, + 0x88, 0x02, 0x86, 0x02, 0x8c, 0x02, 0x8d, 0x02, 0x8f, 0x02, 0x8f, 0x02, + 0x93, 0x02, 0x93, 0x02, 0x90, 0x02, 0x92, 0x02, 0x91, 0x02, 0x8f, 0x02, + 0x8d, 0x02, 0x8d, 0x02, 0x86, 0x02, 0x87, 0x02, 0x86, 0x02, 0x82, 0x02, + 0x79, 0x02, 0x7a, 0x02, 0x75, 0x02, 0x73, 0x02, 0x69, 0x02, 0x69, 0x02, + 0x60, 0x02, 0x60, 0x02, 0x53, 0x02, 0x52, 0x02, 0x48, 0x02, 0x49, 0x02, + 0x3d, 0x02, 0x3b, 0x02, 0x2e, 0x02, 0x2e, 0x02, 0x23, 0x02, 0x24, 0x02, + 0x15, 0x02, 0x14, 0x02, 0x07, 0x02, 0x09, 0x02, 0xfc, 0x01, 0xfb, 0x01, + 0xef, 0x01, 0xef, 0x01, 0xe3, 0x01, 0xe2, 0x01, 0xd8, 0x01, 0xd7, 0x01, + 0xc9, 0x01, 0xc8, 0x01, 0xbe, 0x01, 0xbe, 0x01, 0xb1, 0x01, 0xb1, 0x01, + 0xa6, 0x01, 0xa6, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x8e, 0x01, 0x8e, 0x01, + 0x85, 0x01, 0x85, 0x01, 0x77, 0x01, 0x77, 0x01, 0x6f, 0x01, 0x6f, 0x01, + 0x62, 0x01, 0x62, 0x01, 0x57, 0x01, 0x56, 0x01, 0x4d, 0x01, 0x4e, 0x01, + 0x3c, 0x01, 0x3d, 0x01, 0x34, 0x01, 0x33, 0x01, 0x23, 0x01, 0x24, 0x01, + 0x17, 0x01, 0x15, 0x01, 0x07, 0x01, 0x08, 0x01, 0xf6, 0x00, 0xf5, 0x00, + 0xe6, 0x00, 0xe7, 0x00, 0xd3, 0x00, 0xd2, 0x00, 0xbf, 0x00, 0xc1, 0x00, + 0xac, 0x00, 0xad, 0x00, 0x98, 0x00, 0x97, 0x00, 0x82, 0x00, 0x82, 0x00, + 0x6b, 0x00, 0x6b, 0x00, 0x54, 0x00, 0x54, 0x00, 0x3c, 0x00, 0x3d, 0x00, + 0x22, 0x00, 0x22, 0x00, 0x09, 0x00, 0x09, 0x00, 0xee, 0xff, 0xf0, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0x9f, 0xff, 0xa0, 0xff, + 0x86, 0xff, 0x86, 0xff, 0x6d, 0xff, 0x6b, 0xff, 0x50, 0xff, 0x52, 0xff, + 0x39, 0xff, 0x38, 0xff, 0x1f, 0xff, 0x1e, 0xff, 0x09, 0xff, 0x09, 0xff, + 0xf1, 0xfe, 0xf1, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, + 0xb6, 0xfe, 0xb5, 0xfe, 0xa2, 0xfe, 0xa2, 0xfe, 0x93, 0xfe, 0x92, 0xfe, + 0x84, 0xfe, 0x84, 0xfe, 0x76, 0xfe, 0x76, 0xfe, 0x6a, 0xfe, 0x6a, 0xfe, + 0x5e, 0xfe, 0x5e, 0xfe, 0x57, 0xfe, 0x56, 0xfe, 0x4d, 0xfe, 0x4d, 0xfe, + 0x45, 0xfe, 0x45, 0xfe, 0x41, 0xfe, 0x42, 0xfe, 0x3a, 0xfe, 0x3a, 0xfe, + 0x3a, 0xfe, 0x3a, 0xfe, 0x35, 0xfe, 0x34, 0xfe, 0x35, 0xfe, 0x33, 0xfe, + 0x33, 0xfe, 0x33, 0xfe, 0x32, 0xfe, 0x31, 0xfe, 0x32, 0xfe, 0x32, 0xfe, + 0x31, 0xfe, 0x30, 0xfe, 0x32, 0xfe, 0x31, 0xfe, 0x2f, 0xfe, 0x30, 0xfe, + 0x31, 0xfe, 0x30, 0xfe, 0x2d, 0xfe, 0x2f, 0xfe, 0x2e, 0xfe, 0x2d, 0xfe, + 0x2b, 0xfe, 0x2c, 0xfe, 0x2a, 0xfe, 0x2a, 0xfe, 0x29, 0xfe, 0x29, 0xfe, + 0x25, 0xfe, 0x25, 0xfe, 0x23, 0xfe, 0x23, 0xfe, 0x20, 0xfe, 0x1f, 0xfe, + 0x1a, 0xfe, 0x1a, 0xfe, 0x18, 0xfe, 0x16, 0xfe, 0x12, 0xfe, 0x13, 0xfe, + 0x0f, 0xfe, 0x0d, 0xfe, 0x08, 0xfe, 0x0c, 0xfe, 0x04, 0xfe, 0x02, 0xfe, + 0x00, 0xfe, 0x01, 0xfe, 0xfc, 0xfd, 0xfa, 0xfd, 0xf7, 0xfd, 0xf9, 0xfd, + 0xf5, 0xfd, 0xf4, 0xfd, 0xf1, 0xfd, 0xf1, 0xfd, 0xef, 0xfd, 0xee, 0xfd, + 0xeb, 0xfd, 0xed, 0xfd, 0xee, 0xfd, 0xec, 0xfd, 0xeb, 0xfd, 0xee, 0xfd, + 0xf0, 0xfd, 0xee, 0xfd, 0xf2, 0xfd, 0xf4, 0xfd, 0xf6, 0xfd, 0xf5, 0xfd, + 0xfc, 0xfd, 0xfc, 0xfd, 0x01, 0xfe, 0x01, 0xfe, 0x0a, 0xfe, 0x0b, 0xfe, + 0x13, 0xfe, 0x12, 0xfe, 0x1e, 0xfe, 0x1e, 0xfe, 0x2b, 0xfe, 0x2a, 0xfe, + 0x36, 0xfe, 0x37, 0xfe, 0x46, 0xfe, 0x45, 0xfe, 0x53, 0xfe, 0x55, 0xfe, + 0x64, 0xfe, 0x63, 0xfe, 0x74, 0xfe, 0x75, 0xfe, 0x84, 0xfe, 0x84, 0xfe, + 0x98, 0xfe, 0x99, 0xfe, 0xa9, 0xfe, 0xaa, 0xfe, 0xbb, 0xfe, 0xbd, 0xfe, + 0xd1, 0xfe, 0xd0, 0xfe, 0xe1, 0xfe, 0xe2, 0xfe, 0xf5, 0xfe, 0xf6, 0xfe, + 0x07, 0xff, 0x09, 0xff, 0x1a, 0xff, 0x1a, 0xff, 0x2c, 0xff, 0x2d, 0xff, + 0x3d, 0xff, 0x3d, 0xff, 0x4f, 0xff, 0x50, 0xff, 0x5f, 0xff, 0x60, 0xff, + 0x6f, 0xff, 0x71, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x8f, 0xff, 0x90, 0xff, + 0x9e, 0xff, 0x9c, 0xff, 0xaa, 0xff, 0xad, 0xff, 0xba, 0xff, 0xb7, 0xff, + 0xc5, 0xff, 0xc7, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xeb, 0xff, 0xed, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0x04, 0x00, 0x05, 0x00, + 0x11, 0x00, 0x0f, 0x00, 0x1d, 0x00, 0x1f, 0x00, 0x2a, 0x00, 0x2a, 0x00, + 0x37, 0x00, 0x38, 0x00, 0x45, 0x00, 0x45, 0x00, 0x54, 0x00, 0x54, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x75, 0x00, 0x73, 0x00, 0x83, 0x00, 0x86, 0x00, + 0x95, 0x00, 0x94, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xb8, 0x00, 0xb8, 0x00, + 0xcd, 0x00, 0xcd, 0x00, 0xe1, 0x00, 0xdf, 0x00, 0xf5, 0x00, 0xf8, 0x00, + 0x0c, 0x01, 0x0b, 0x01, 0x21, 0x01, 0x22, 0x01, 0x38, 0x01, 0x38, 0x01, + 0x4e, 0x01, 0x4f, 0x01, 0x64, 0x01, 0x64, 0x01, 0x78, 0x01, 0x7a, 0x01, + 0x92, 0x01, 0x91, 0x01, 0xa6, 0x01, 0xa6, 0x01, 0xbe, 0x01, 0xbe, 0x01, + 0xd1, 0x01, 0xd0, 0x01, 0xe4, 0x01, 0xe6, 0x01, 0xfa, 0x01, 0xf8, 0x01, + 0x0a, 0x02, 0x0b, 0x02, 0x1c, 0x02, 0x1c, 0x02, 0x2b, 0x02, 0x2b, 0x02, + 0x39, 0x02, 0x3a, 0x02, 0x46, 0x02, 0x45, 0x02, 0x50, 0x02, 0x50, 0x02, + 0x58, 0x02, 0x5a, 0x02, 0x63, 0x02, 0x60, 0x02, 0x68, 0x02, 0x6a, 0x02, + 0x6d, 0x02, 0x6c, 0x02, 0x70, 0x02, 0x72, 0x02, 0x70, 0x02, 0x70, 0x02, + 0x72, 0x02, 0x72, 0x02, 0x6e, 0x02, 0x6e, 0x02, 0x6c, 0x02, 0x6d, 0x02, + 0x66, 0x02, 0x66, 0x02, 0x62, 0x02, 0x63, 0x02, 0x5b, 0x02, 0x5a, 0x02, + 0x53, 0x02, 0x54, 0x02, 0x4a, 0x02, 0x4b, 0x02, 0x42, 0x02, 0x41, 0x02, + 0x37, 0x02, 0x39, 0x02, 0x2f, 0x02, 0x2c, 0x02, 0x23, 0x02, 0x25, 0x02, + 0x19, 0x02, 0x17, 0x02, 0x0e, 0x02, 0x0d, 0x02, 0x04, 0x02, 0x04, 0x02, + 0xf8, 0x01, 0xf7, 0x01, 0xed, 0x01, 0xed, 0x01, 0xe2, 0x01, 0xe3, 0x01, + 0xd8, 0x01, 0xd8, 0x01, 0xcf, 0x01, 0xce, 0x01, 0xc4, 0x01, 0xc4, 0x01, + 0xbb, 0x01, 0xbb, 0x01, 0xb1, 0x01, 0xb3, 0x01, 0xa9, 0x01, 0xa9, 0x01, + 0x9f, 0x01, 0x9f, 0x01, 0x98, 0x01, 0x97, 0x01, 0x8e, 0x01, 0x8f, 0x01, + 0x86, 0x01, 0x84, 0x01, 0x7b, 0x01, 0x7b, 0x01, 0x73, 0x01, 0x72, 0x01, + 0x67, 0x01, 0x69, 0x01, 0x5f, 0x01, 0x5d, 0x01, 0x52, 0x01, 0x53, 0x01, + 0x47, 0x01, 0x47, 0x01, 0x3c, 0x01, 0x3b, 0x01, 0x2e, 0x01, 0x2f, 0x01, + 0x21, 0x01, 0x20, 0x01, 0x10, 0x01, 0x0f, 0x01, 0x02, 0x01, 0x03, 0x01, + 0xf0, 0x00, 0xef, 0x00, 0xdd, 0x00, 0xde, 0x00, 0xcc, 0x00, 0xcb, 0x00, + 0xb7, 0x00, 0xb7, 0x00, 0xa3, 0x00, 0xa2, 0x00, 0x8c, 0x00, 0x8d, 0x00, + 0x77, 0x00, 0x76, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x47, 0x00, 0x48, 0x00, + 0x2f, 0x00, 0x2e, 0x00, 0x15, 0x00, 0x16, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xcc, 0xff, 0xce, 0xff, 0xb3, 0xff, 0xb2, 0xff, + 0x9a, 0xff, 0x9b, 0xff, 0x82, 0xff, 0x83, 0xff, 0x6a, 0xff, 0x6a, 0xff, + 0x54, 0xff, 0x55, 0xff, 0x3e, 0xff, 0x3f, 0xff, 0x29, 0xff, 0x29, 0xff, + 0x15, 0xff, 0x15, 0xff, 0x01, 0xff, 0x02, 0xff, 0xf2, 0xfe, 0xf2, 0xfe, + 0xe0, 0xfe, 0xe1, 0xfe, 0xd0, 0xfe, 0xd2, 0xfe, 0xc5, 0xfe, 0xc4, 0xfe, + 0xb6, 0xfe, 0xb8, 0xfe, 0xaf, 0xfe, 0xae, 0xfe, 0xa1, 0xfe, 0xa2, 0xfe, + 0x9a, 0xfe, 0x9c, 0xfe, 0x92, 0xfe, 0x91, 0xfe, 0x8c, 0xfe, 0x8e, 0xfe, + 0x86, 0xfe, 0x86, 0xfe, 0x80, 0xfe, 0x80, 0xfe, 0x7e, 0xfe, 0x7f, 0xfe, + 0x78, 0xfe, 0x78, 0xfe, 0x76, 0xfe, 0x77, 0xfe, 0x74, 0xfe, 0x74, 0xfe, + 0x71, 0xfe, 0x70, 0xfe, 0x70, 0xfe, 0x71, 0xfe, 0x6b, 0xfe, 0x6c, 0xfe, + 0x6a, 0xfe, 0x6a, 0xfe, 0x68, 0xfe, 0x67, 0xfe, 0x62, 0xfe, 0x63, 0xfe, + 0x63, 0xfe, 0x61, 0xfe, 0x5c, 0xfe, 0x5d, 0xfe, 0x5a, 0xfe, 0x59, 0xfe, + 0x56, 0xfe, 0x55, 0xfe, 0x4f, 0xfe, 0x4f, 0xfe, 0x49, 0xfe, 0x49, 0xfe, + 0x44, 0xfe, 0x44, 0xfe, 0x3d, 0xfe, 0x3e, 0xfe, 0x39, 0xfe, 0x37, 0xfe, + 0x2f, 0xfe, 0x30, 0xfe, 0x2b, 0xfe, 0x2a, 0xfe, 0x21, 0xfe, 0x20, 0xfe, + 0x1d, 0xfe, 0x1d, 0xfe, 0x16, 0xfe, 0x14, 0xfe, 0x10, 0xfe, 0x0f, 0xfe, + 0x09, 0xfe, 0x0a, 0xfe, 0x04, 0xfe, 0x03, 0xfe, 0xff, 0xfd, 0x00, 0xfe, + 0xfc, 0xfd, 0xfc, 0xfd, 0xf8, 0xfd, 0xf9, 0xfd, 0xf7, 0xfd, 0xf6, 0xfd, + 0xf5, 0xfd, 0xf5, 0xfd, 0xf6, 0xfd, 0xf5, 0xfd, 0xf7, 0xfd, 0xf9, 0xfd, + 0xfa, 0xfd, 0xf9, 0xfd, 0xff, 0xfd, 0xfe, 0xfd, 0x02, 0xfe, 0x04, 0xfe, + 0x0a, 0xfe, 0x0a, 0xfe, 0x12, 0xfe, 0x0f, 0xfe, 0x19, 0xfe, 0x19, 0xfe, + 0x24, 0xfe, 0x23, 0xfe, 0x2f, 0xfe, 0x2f, 0xfe, 0x3c, 0xfe, 0x3b, 0xfe, + 0x48, 0xfe, 0x48, 0xfe, 0x58, 0xfe, 0x56, 0xfe, 0x66, 0xfe, 0x68, 0xfe, + 0x76, 0xfe, 0x73, 0xfe, 0x85, 0xfe, 0x86, 0xfe, 0x95, 0xfe, 0x95, 0xfe, + 0xa7, 0xfe, 0xa6, 0xfe, 0xb5, 0xfe, 0xb6, 0xfe, 0xc8, 0xfe, 0xc7, 0xfe, + 0xd7, 0xfe, 0xd6, 0xfe, 0xe8, 0xfe, 0xe6, 0xfe, 0xf7, 0xfe, 0xf9, 0xfe, + 0x08, 0xff, 0x06, 0xff, 0x16, 0xff, 0x17, 0xff, 0x26, 0xff, 0x26, 0xff, + 0x34, 0xff, 0x33, 0xff, 0x41, 0xff, 0x43, 0xff, 0x4f, 0xff, 0x4d, 0xff, + 0x5d, 0xff, 0x5e, 0xff, 0x68, 0xff, 0x69, 0xff, 0x76, 0xff, 0x75, 0xff, + 0x80, 0xff, 0x7f, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x97, 0xff, 0x97, 0xff, + 0xa2, 0xff, 0xa1, 0xff, 0xab, 0xff, 0xac, 0xff, 0xb8, 0xff, 0xb6, 0xff, + 0xc2, 0xff, 0xc2, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xd8, 0xff, 0xd7, 0xff, + 0xe5, 0xff, 0xe6, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x3e, 0x00, 0x3d, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x62, 0x00, 0x62, 0x00, + 0x76, 0x00, 0x77, 0x00, 0x8a, 0x00, 0x89, 0x00, 0x9e, 0x00, 0x9f, 0x00, + 0xb4, 0x00, 0xb5, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xe3, 0x00, 0xe3, 0x00, + 0xf9, 0x00, 0xf9, 0x00, 0x11, 0x01, 0x10, 0x01, 0x28, 0x01, 0x28, 0x01, + 0x3f, 0x01, 0x3e, 0x01, 0x56, 0x01, 0x57, 0x01, 0x6d, 0x01, 0x6d, 0x01, + 0x84, 0x01, 0x83, 0x01, 0x99, 0x01, 0x98, 0x01, 0xac, 0x01, 0xad, 0x01, + 0xc4, 0x01, 0xc2, 0x01, 0xd5, 0x01, 0xd4, 0x01, 0xe6, 0x01, 0xe7, 0x01, + 0xf7, 0x01, 0xf5, 0x01, 0x06, 0x02, 0x07, 0x02, 0x13, 0x02, 0x12, 0x02, + 0x1f, 0x02, 0x1e, 0x02, 0x28, 0x02, 0x28, 0x02, 0x33, 0x02, 0x32, 0x02, + 0x39, 0x02, 0x39, 0x02, 0x3f, 0x02, 0x3e, 0x02, 0x43, 0x02, 0x42, 0x02, + 0x44, 0x02, 0x43, 0x02, 0x45, 0x02, 0x47, 0x02, 0x46, 0x02, 0x45, 0x02, + 0x42, 0x02, 0x42, 0x02, 0x40, 0x02, 0x42, 0x02, 0x3a, 0x02, 0x39, 0x02, + 0x39, 0x02, 0x39, 0x02, 0x2f, 0x02, 0x30, 0x02, 0x29, 0x02, 0x29, 0x02, + 0x22, 0x02, 0x22, 0x02, 0x19, 0x02, 0x1a, 0x02, 0x12, 0x02, 0x12, 0x02, + 0x07, 0x02, 0x08, 0x02, 0x00, 0x02, 0xff, 0x01, 0xf8, 0x01, 0xf7, 0x01, + 0xef, 0x01, 0xee, 0x01, 0xe6, 0x01, 0xe6, 0x01, 0xde, 0x01, 0xde, 0x01, + 0xd5, 0x01, 0xd6, 0x01, 0xcf, 0x01, 0xcf, 0x01, 0xc6, 0x01, 0xc6, 0x01, + 0xc0, 0x01, 0xc1, 0x01, 0xbb, 0x01, 0xba, 0x01, 0xb2, 0x01, 0xb2, 0x01, + 0xac, 0x01, 0xac, 0x01, 0xa3, 0x01, 0xa3, 0x01, 0x9f, 0x01, 0xa0, 0x01, + 0x98, 0x01, 0x96, 0x01, 0x91, 0x01, 0x92, 0x01, 0x89, 0x01, 0x8a, 0x01, + 0x82, 0x01, 0x82, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x73, 0x01, 0x73, 0x01, + 0x6a, 0x01, 0x6a, 0x01, 0x5e, 0x01, 0x61, 0x01, 0x56, 0x01, 0x54, 0x01, + 0x49, 0x01, 0x49, 0x01, 0x3c, 0x01, 0x3d, 0x01, 0x2f, 0x01, 0x2f, 0x01, + 0x1f, 0x01, 0x21, 0x01, 0x11, 0x01, 0x12, 0x01, 0xfe, 0x00, 0x00, 0x01, + 0xee, 0x00, 0xee, 0x00, 0xdc, 0x00, 0xdc, 0x00, 0xca, 0x00, 0xc9, 0x00, + 0xb2, 0x00, 0xb2, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0x87, 0x00, 0x8a, 0x00, + 0x72, 0x00, 0x72, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x43, 0x00, 0x44, 0x00, + 0x2d, 0x00, 0x2c, 0x00, 0x14, 0x00, 0x18, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0xe5, 0xff, 0xe6, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xba, 0xff, 0xba, 0xff, + 0xa1, 0xff, 0xa3, 0xff, 0x8d, 0xff, 0x8f, 0xff, 0x78, 0xff, 0x7a, 0xff, + 0x66, 0xff, 0x67, 0xff, 0x53, 0xff, 0x55, 0xff, 0x43, 0xff, 0x44, 0xff, + 0x33, 0xff, 0x33, 0xff, 0x23, 0xff, 0x25, 0xff, 0x14, 0xff, 0x14, 0xff, + 0x09, 0xff, 0x0d, 0xff, 0xfd, 0xfe, 0xfc, 0xfe, 0xf3, 0xfe, 0xf4, 0xfe, + 0xea, 0xfe, 0xeb, 0xfe, 0xdf, 0xfe, 0xe1, 0xfe, 0xda, 0xfe, 0xdb, 0xfe, + 0xd1, 0xfe, 0xd3, 0xfe, 0xcd, 0xfe, 0xcd, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, + 0xc0, 0xfe, 0xc2, 0xfe, 0xbe, 0xfe, 0xbd, 0xfe, 0xb7, 0xfe, 0xb9, 0xfe, + 0xb3, 0xfe, 0xb3, 0xfe, 0xb0, 0xfe, 0xb1, 0xfe, 0xa9, 0xfe, 0xab, 0xfe, + 0xa7, 0xfe, 0xa7, 0xfe, 0xa1, 0xfe, 0xa2, 0xfe, 0x9e, 0xfe, 0x9d, 0xfe, + 0x96, 0xfe, 0x97, 0xfe, 0x91, 0xfe, 0x91, 0xfe, 0x8b, 0xfe, 0x8a, 0xfe, + 0x83, 0xfe, 0x86, 0xfe, 0x7d, 0xfe, 0x7b, 0xfe, 0x73, 0xfe, 0x75, 0xfe, + 0x6d, 0xfe, 0x6c, 0xfe, 0x65, 0xfe, 0x65, 0xfe, 0x5a, 0xfe, 0x5a, 0xfe, + 0x53, 0xfe, 0x54, 0xfe, 0x48, 0xfe, 0x47, 0xfe, 0x3f, 0xfe, 0x42, 0xfe, + 0x37, 0xfe, 0x36, 0xfe, 0x2e, 0xfe, 0x2f, 0xfe, 0x25, 0xfe, 0x24, 0xfe, + 0x1f, 0xfe, 0x20, 0xfe, 0x17, 0xfe, 0x16, 0xfe, 0x11, 0xfe, 0x10, 0xfe, + 0x09, 0xfe, 0x0a, 0xfe, 0x06, 0xfe, 0x05, 0xfe, 0x01, 0xfe, 0x02, 0xfe, + 0xff, 0xfd, 0xfe, 0xfd, 0xfc, 0xfd, 0xfe, 0xfd, 0xfe, 0xfd, 0xfc, 0xfd, + 0xfe, 0xfd, 0xff, 0xfd, 0x02, 0xfe, 0x01, 0xfe, 0x04, 0xfe, 0x04, 0xfe, + 0x0a, 0xfe, 0x0a, 0xfe, 0x0f, 0xfe, 0x0e, 0xfe, 0x17, 0xfe, 0x16, 0xfe, + 0x1f, 0xfe, 0x20, 0xfe, 0x2a, 0xfe, 0x28, 0xfe, 0x32, 0xfe, 0x34, 0xfe, + 0x40, 0xfe, 0x3f, 0xfe, 0x4c, 0xfe, 0x4c, 0xfe, 0x57, 0xfe, 0x58, 0xfe, + 0x67, 0xfe, 0x68, 0xfe, 0x77, 0xfe, 0x76, 0xfe, 0x84, 0xfe, 0x85, 0xfe, + 0x94, 0xfe, 0x94, 0xfe, 0xa2, 0xfe, 0xa2, 0xfe, 0xb2, 0xfe, 0xb2, 0xfe, + 0xc0, 0xfe, 0xc0, 0xfe, 0xcf, 0xfe, 0xcf, 0xfe, 0xde, 0xfe, 0xdd, 0xfe, + 0xe9, 0xfe, 0xea, 0xfe, 0xf9, 0xfe, 0xf9, 0xfe, 0x05, 0xff, 0x04, 0xff, + 0x10, 0xff, 0x12, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x28, 0xff, 0x28, 0xff, + 0x33, 0xff, 0x34, 0xff, 0x3d, 0xff, 0x3d, 0xff, 0x49, 0xff, 0x49, 0xff, + 0x51, 0xff, 0x50, 0xff, 0x5a, 0xff, 0x5c, 0xff, 0x65, 0xff, 0x64, 0xff, + 0x6b, 0xff, 0x6c, 0xff, 0x76, 0xff, 0x78, 0xff, 0x7d, 0xff, 0x7d, 0xff, + 0x88, 0xff, 0x8b, 0xff, 0x92, 0xff, 0x92, 0xff, 0x9c, 0xff, 0x9d, 0xff, + 0xa7, 0xff, 0xa6, 0xff, 0xb1, 0xff, 0xb2, 0xff, 0xbf, 0xff, 0xbf, 0xff, + 0xc9, 0xff, 0xca, 0xff, 0xd8, 0xff, 0xd9, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x07, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x2d, 0x00, 0x2b, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x54, 0x00, 0x53, 0x00, + 0x69, 0x00, 0x69, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x96, 0x00, 0x95, 0x00, + 0xae, 0x00, 0xad, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xdc, 0x00, 0xdc, 0x00, + 0xf3, 0x00, 0xf2, 0x00, 0x0c, 0x01, 0x0c, 0x01, 0x23, 0x01, 0x23, 0x01, + 0x3a, 0x01, 0x3b, 0x01, 0x51, 0x01, 0x52, 0x01, 0x69, 0x01, 0x68, 0x01, + 0x7b, 0x01, 0x7e, 0x01, 0x94, 0x01, 0x92, 0x01, 0xa3, 0x01, 0xa5, 0x01, + 0xb8, 0x01, 0xb8, 0x01, 0xc8, 0x01, 0xc8, 0x01, 0xd9, 0x01, 0xd9, 0x01, + 0xe6, 0x01, 0xe5, 0x01, 0xf3, 0x01, 0xf4, 0x01, 0xfe, 0x01, 0x00, 0x02, + 0x09, 0x02, 0x09, 0x02, 0x10, 0x02, 0x11, 0x02, 0x16, 0x02, 0x18, 0x02, + 0x1d, 0x02, 0x1c, 0x02, 0x1f, 0x02, 0x21, 0x02, 0x25, 0x02, 0x24, 0x02, + 0x23, 0x02, 0x25, 0x02, 0x26, 0x02, 0x26, 0x02, 0x22, 0x02, 0x22, 0x02, + 0x23, 0x02, 0x24, 0x02, 0x1d, 0x02, 0x1d, 0x02, 0x1c, 0x02, 0x1d, 0x02, + 0x16, 0x02, 0x17, 0x02, 0x12, 0x02, 0x11, 0x02, 0x0c, 0x02, 0x0f, 0x02, + 0x07, 0x02, 0x05, 0x02, 0x00, 0x02, 0x04, 0x02, 0xfd, 0x01, 0xfb, 0x01, + 0xf4, 0x01, 0xf4, 0x01, 0xf1, 0x01, 0xf0, 0x01, 0xe6, 0x01, 0xe7, 0x01, + 0xe6, 0x01, 0xe4, 0x01, 0xdc, 0x01, 0xde, 0x01, 0xd9, 0x01, 0xd7, 0x01, + 0xd2, 0x01, 0xd4, 0x01, 0xcc, 0x01, 0xcc, 0x01, 0xc6, 0x01, 0xc5, 0x01, + 0xc2, 0x01, 0xc1, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xb7, 0x01, 0xb6, 0x01, + 0xb1, 0x01, 0xb2, 0x01, 0xab, 0x01, 0xa9, 0x01, 0xa5, 0x01, 0xa5, 0x01, + 0x9d, 0x01, 0x9b, 0x01, 0x96, 0x01, 0x96, 0x01, 0x8c, 0x01, 0x8d, 0x01, + 0x84, 0x01, 0x82, 0x01, 0x79, 0x01, 0x7b, 0x01, 0x70, 0x01, 0x6e, 0x01, + 0x65, 0x01, 0x66, 0x01, 0x57, 0x01, 0x55, 0x01, 0x4a, 0x01, 0x4b, 0x01, + 0x3c, 0x01, 0x3b, 0x01, 0x2c, 0x01, 0x2c, 0x01, 0x1d, 0x01, 0x1b, 0x01, + 0x0a, 0x01, 0x0b, 0x01, 0xfb, 0x00, 0xf9, 0x00, 0xe5, 0x00, 0xe5, 0x00, + 0xd1, 0x00, 0xd1, 0x00, 0xbf, 0x00, 0xbd, 0x00, 0xa6, 0x00, 0xa6, 0x00, + 0x92, 0x00, 0x94, 0x00, 0x7d, 0x00, 0x7b, 0x00, 0x63, 0x00, 0x65, 0x00, + 0x52, 0x00, 0x4f, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x24, 0x00, 0x23, 0x00, + 0x0d, 0x00, 0x0f, 0x00, 0xf8, 0xff, 0xf8, 0xff, 0xe4, 0xff, 0xe5, 0xff, + 0xce, 0xff, 0xcf, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xa9, 0xff, 0xa9, 0xff, + 0x97, 0xff, 0x99, 0xff, 0x87, 0xff, 0x85, 0xff, 0x75, 0xff, 0x79, 0xff, + 0x6b, 0xff, 0x68, 0xff, 0x5a, 0xff, 0x5e, 0xff, 0x51, 0xff, 0x50, 0xff, + 0x44, 0xff, 0x45, 0xff, 0x3c, 0xff, 0x3b, 0xff, 0x31, 0xff, 0x32, 0xff, + 0x2a, 0xff, 0x2b, 0xff, 0x23, 0xff, 0x22, 0xff, 0x1b, 0xff, 0x1c, 0xff, + 0x16, 0xff, 0x16, 0xff, 0x11, 0xff, 0x12, 0xff, 0x0d, 0xff, 0x0e, 0xff, + 0x09, 0xff, 0x09, 0xff, 0x03, 0xff, 0x03, 0xff, 0x00, 0xff, 0x00, 0xff, + 0xfb, 0xfe, 0xfc, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, 0xf3, 0xfe, 0xf3, 0xfe, + 0xeb, 0xfe, 0xec, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0xdf, 0xfe, 0xe0, 0xfe, + 0xdb, 0xfe, 0xdb, 0xfe, 0xd2, 0xfe, 0xd4, 0xfe, 0xcc, 0xfe, 0xcb, 0xfe, + 0xc3, 0xfe, 0xc4, 0xfe, 0xb8, 0xfe, 0xb9, 0xfe, 0xb1, 0xfe, 0xb1, 0xfe, + 0xa5, 0xfe, 0xa6, 0xfe, 0x9c, 0xfe, 0x9c, 0xfe, 0x90, 0xfe, 0x90, 0xfe, + 0x83, 0xfe, 0x84, 0xfe, 0x78, 0xfe, 0x79, 0xfe, 0x6b, 0xfe, 0x6a, 0xfe, + 0x60, 0xfe, 0x63, 0xfe, 0x54, 0xfe, 0x53, 0xfe, 0x48, 0xfe, 0x49, 0xfe, + 0x3c, 0xfe, 0x3d, 0xfe, 0x32, 0xfe, 0x31, 0xfe, 0x28, 0xfe, 0x2a, 0xfe, + 0x1f, 0xfe, 0x1f, 0xfe, 0x16, 0xfe, 0x18, 0xfe, 0x10, 0xfe, 0x0f, 0xfe, + 0x07, 0xfe, 0x08, 0xfe, 0x04, 0xfe, 0x04, 0xfe, 0xfe, 0xfd, 0xff, 0xfd, + 0xff, 0xfd, 0xfd, 0xfd, 0xf9, 0xfd, 0xfb, 0xfd, 0xfd, 0xfd, 0xfc, 0xfd, + 0xfa, 0xfd, 0xfd, 0xfd, 0x01, 0xfe, 0x01, 0xfe, 0x03, 0xfe, 0x04, 0xfe, + 0x0b, 0xfe, 0x0c, 0xfe, 0x10, 0xfe, 0x10, 0xfe, 0x18, 0xfe, 0x19, 0xfe, + 0x22, 0xfe, 0x23, 0xfe, 0x2c, 0xfe, 0x2c, 0xfe, 0x36, 0xfe, 0x39, 0xfe, + 0x43, 0xfe, 0x42, 0xfe, 0x4e, 0xfe, 0x51, 0xfe, 0x5c, 0xfe, 0x5b, 0xfe, + 0x68, 0xfe, 0x69, 0xfe, 0x76, 0xfe, 0x77, 0xfe, 0x83, 0xfe, 0x84, 0xfe, + 0x93, 0xfe, 0x92, 0xfe, 0x9e, 0xfe, 0xa0, 0xfe, 0xae, 0xfe, 0xad, 0xfe, + 0xbb, 0xfe, 0xbd, 0xfe, 0xc8, 0xfe, 0xc8, 0xfe, 0xd6, 0xfe, 0xd5, 0xfe, + 0xe1, 0xfe, 0xe2, 0xfe, 0xec, 0xfe, 0xee, 0xfe, 0xfb, 0xfe, 0xf9, 0xfe, + 0x02, 0xff, 0x04, 0xff, 0x11, 0xff, 0x10, 0xff, 0x19, 0xff, 0x1a, 0xff, + 0x25, 0xff, 0x26, 0xff, 0x2d, 0xff, 0x2e, 0xff, 0x39, 0xff, 0x38, 0xff, + 0x42, 0xff, 0x43, 0xff, 0x4b, 0xff, 0x4c, 0xff, 0x55, 0xff, 0x57, 0xff, + 0x5f, 0xff, 0x60, 0xff, 0x6a, 0xff, 0x69, 0xff, 0x74, 0xff, 0x75, 0xff, + 0x81, 0xff, 0x81, 0xff, 0x8b, 0xff, 0x8a, 0xff, 0x96, 0xff, 0x98, 0xff, + 0xa4, 0xff, 0xa3, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xc0, 0xff, 0xc0, 0xff, + 0xcf, 0xff, 0xcf, 0xff, 0xde, 0xff, 0xe1, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0x02, 0x00, 0x03, 0x00, 0x16, 0x00, 0x15, 0x00, 0x26, 0x00, 0x28, 0x00, + 0x3e, 0x00, 0x3e, 0x00, 0x50, 0x00, 0x51, 0x00, 0x67, 0x00, 0x68, 0x00, + 0x7b, 0x00, 0x7d, 0x00, 0x91, 0x00, 0x90, 0x00, 0xa7, 0x00, 0xa9, 0x00, + 0xbd, 0x00, 0xbd, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xeb, 0x00, 0xeb, 0x00, + 0xfe, 0x00, 0x00, 0x01, 0x17, 0x01, 0x16, 0x01, 0x28, 0x01, 0x2a, 0x01, + 0x40, 0x01, 0x41, 0x01, 0x51, 0x01, 0x51, 0x01, 0x65, 0x01, 0x66, 0x01, + 0x74, 0x01, 0x74, 0x01, 0x85, 0x01, 0x88, 0x01, 0x94, 0x01, 0x93, 0x01, + 0xa0, 0x01, 0xa2, 0x01, 0xaf, 0x01, 0xaf, 0x01, 0xba, 0x01, 0xba, 0x01, + 0xc2, 0x01, 0xc3, 0x01, 0xcc, 0x01, 0xcc, 0x01, 0xd2, 0x01, 0xd3, 0x01, + 0xda, 0x01, 0xda, 0x01, 0xdc, 0x01, 0xde, 0x01, 0xe3, 0x01, 0xe2, 0x01, + 0xe4, 0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe7, 0x01, 0xe8, 0x01, 0xe9, 0x01, + 0xe9, 0x01, 0xe7, 0x01, 0xe8, 0x01, 0xe9, 0x01, 0xe7, 0x01, 0xe8, 0x01, + 0xe5, 0x01, 0xe5, 0x01, 0xe6, 0x01, 0xe6, 0x01, 0xe1, 0x01, 0xe0, 0x01, + 0xe0, 0x01, 0xe0, 0x01, 0xdd, 0x01, 0xdd, 0x01, 0xdb, 0x01, 0xdc, 0x01, + 0xdb, 0x01, 0xda, 0x01, 0xd8, 0x01, 0xd7, 0x01, 0xd7, 0x01, 0xd8, 0x01, + 0xd5, 0x01, 0xd4, 0x01, 0xd2, 0x01, 0xd4, 0x01, 0xd2, 0x01, 0xd0, 0x01, + 0xce, 0x01, 0xd1, 0x01, 0xd0, 0x01, 0xd0, 0x01, 0xce, 0x01, 0xce, 0x01, + 0xcb, 0x01, 0xcc, 0x01, 0xcb, 0x01, 0xcd, 0x01, 0xc9, 0x01, 0xc8, 0x01, + 0xc8, 0x01, 0xca, 0x01, 0xc5, 0x01, 0xc6, 0x01, 0xc4, 0x01, 0xc4, 0x01, + 0xc0, 0x01, 0xc2, 0x01, 0xbc, 0x01, 0xbc, 0x01, 0xb8, 0x01, 0xb8, 0x01, + 0xb2, 0x01, 0xb3, 0x01, 0xad, 0x01, 0xac, 0x01, 0xa4, 0x01, 0xa6, 0x01, + 0x9c, 0x01, 0x9c, 0x01, 0x92, 0x01, 0x93, 0x01, 0x87, 0x01, 0x88, 0x01, + 0x7a, 0x01, 0x7c, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0x5e, 0x01, 0x60, 0x01, + 0x50, 0x01, 0x4f, 0x01, 0x3e, 0x01, 0x3f, 0x01, 0x2c, 0x01, 0x2d, 0x01, + 0x1a, 0x01, 0x1b, 0x01, 0x07, 0x01, 0x06, 0x01, 0xf0, 0x00, 0xf2, 0x00, + 0xdb, 0x00, 0xdb, 0x00, 0xc4, 0x00, 0xc6, 0x00, 0xae, 0x00, 0xaf, 0x00, + 0x98, 0x00, 0x97, 0x00, 0x80, 0x00, 0x81, 0x00, 0x6a, 0x00, 0x6a, 0x00, + 0x53, 0x00, 0x54, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x28, 0x00, 0x28, 0x00, + 0x10, 0x00, 0x11, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xe7, 0xff, 0xe9, 0xff, + 0xd3, 0xff, 0xd5, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xb1, 0xff, 0xb0, 0xff, + 0xa1, 0xff, 0xa2, 0xff, 0x91, 0xff, 0x92, 0xff, 0x83, 0xff, 0x82, 0xff, + 0x78, 0xff, 0x7a, 0xff, 0x6b, 0xff, 0x6b, 0xff, 0x60, 0xff, 0x61, 0xff, + 0x57, 0xff, 0x58, 0xff, 0x4e, 0xff, 0x4d, 0xff, 0x45, 0xff, 0x48, 0xff, + 0x40, 0xff, 0x3e, 0xff, 0x37, 0xff, 0x38, 0xff, 0x32, 0xff, 0x33, 0xff, + 0x2e, 0xff, 0x2d, 0xff, 0x29, 0xff, 0x2b, 0xff, 0x23, 0xff, 0x24, 0xff, + 0x20, 0xff, 0x22, 0xff, 0x1b, 0xff, 0x1b, 0xff, 0x16, 0xff, 0x17, 0xff, + 0x13, 0xff, 0x13, 0xff, 0x0d, 0xff, 0x0e, 0xff, 0x09, 0xff, 0x08, 0xff, + 0x03, 0xff, 0x03, 0xff, 0xfe, 0xfe, 0xfd, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, + 0xee, 0xfe, 0xef, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0xde, 0xfe, 0xde, 0xfe, + 0xd5, 0xfe, 0xd5, 0xfe, 0xcc, 0xfe, 0xcc, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, + 0xb7, 0xfe, 0xb8, 0xfe, 0xab, 0xfe, 0xab, 0xfe, 0xa1, 0xfe, 0xa2, 0xfe, + 0x95, 0xfe, 0x95, 0xfe, 0x8b, 0xfe, 0x8b, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, + 0x74, 0xfe, 0x74, 0xfe, 0x6b, 0xfe, 0x6a, 0xfe, 0x60, 0xfe, 0x61, 0xfe, + 0x57, 0xfe, 0x56, 0xfe, 0x4c, 0xfe, 0x4d, 0xfe, 0x45, 0xfe, 0x44, 0xfe, + 0x3c, 0xfe, 0x3e, 0xfe, 0x36, 0xfe, 0x37, 0xfe, 0x30, 0xfe, 0x2e, 0xfe, + 0x2b, 0xfe, 0x2c, 0xfe, 0x28, 0xfe, 0x29, 0xfe, 0x25, 0xfe, 0x25, 0xfe, + 0x24, 0xfe, 0x25, 0xfe, 0x24, 0xfe, 0x24, 0xfe, 0x24, 0xfe, 0x25, 0xfe, + 0x27, 0xfe, 0x25, 0xfe, 0x28, 0xfe, 0x2a, 0xfe, 0x2e, 0xfe, 0x2e, 0xfe, + 0x32, 0xfe, 0x32, 0xfe, 0x38, 0xfe, 0x37, 0xfe, 0x3e, 0xfe, 0x3f, 0xfe, + 0x45, 0xfe, 0x44, 0xfe, 0x4d, 0xfe, 0x4e, 0xfe, 0x53, 0xfe, 0x55, 0xfe, + 0x5e, 0xfe, 0x5d, 0xfe, 0x65, 0xfe, 0x66, 0xfe, 0x6e, 0xfe, 0x6d, 0xfe, + 0x79, 0xfe, 0x79, 0xfe, 0x80, 0xfe, 0x81, 0xfe, 0x8b, 0xfe, 0x8a, 0xfe, + 0x93, 0xfe, 0x94, 0xfe, 0x9c, 0xfe, 0x9b, 0xfe, 0xa5, 0xfe, 0xa7, 0xfe, + 0xad, 0xfe, 0xab, 0xfe, 0xb6, 0xfe, 0xb8, 0xfe, 0xbd, 0xfe, 0xbc, 0xfe, + 0xc5, 0xfe, 0xc6, 0xfe, 0xcd, 0xfe, 0xcd, 0xfe, 0xd5, 0xfe, 0xd4, 0xfe, + 0xdb, 0xfe, 0xdc, 0xfe, 0xe4, 0xfe, 0xe3, 0xfe, 0xea, 0xfe, 0xec, 0xfe, + 0xf2, 0xfe, 0xf3, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, 0x02, 0xff, 0x03, 0xff, + 0x0c, 0xff, 0x0c, 0xff, 0x14, 0xff, 0x15, 0xff, 0x1f, 0xff, 0x20, 0xff, + 0x29, 0xff, 0x29, 0xff, 0x32, 0xff, 0x34, 0xff, 0x42, 0xff, 0x41, 0xff, + 0x4c, 0xff, 0x4d, 0xff, 0x5c, 0xff, 0x5b, 0xff, 0x6b, 0xff, 0x6b, 0xff, + 0x7a, 0xff, 0x7a, 0xff, 0x8b, 0xff, 0x8c, 0xff, 0x9c, 0xff, 0x9b, 0xff, + 0xb0, 0xff, 0xb1, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xda, 0xff, 0xda, 0xff, + 0xef, 0xff, 0xef, 0xff, 0x05, 0x00, 0x05, 0x00, 0x1d, 0x00, 0x1e, 0x00, + 0x34, 0x00, 0x35, 0x00, 0x4d, 0x00, 0x4c, 0x00, 0x65, 0x00, 0x65, 0x00, + 0x7d, 0x00, 0x7e, 0x00, 0x96, 0x00, 0x97, 0x00, 0xae, 0x00, 0xae, 0x00, + 0xc7, 0x00, 0xc8, 0x00, 0xde, 0x00, 0xde, 0x00, 0xf5, 0x00, 0xf6, 0x00, + 0x0d, 0x01, 0x0c, 0x01, 0x1f, 0x01, 0x21, 0x01, 0x37, 0x01, 0x36, 0x01, + 0x48, 0x01, 0x4a, 0x01, 0x5c, 0x01, 0x5c, 0x01, 0x6d, 0x01, 0x6c, 0x01, + 0x7b, 0x01, 0x7c, 0x01, 0x8c, 0x01, 0x8b, 0x01, 0x96, 0x01, 0x96, 0x01, + 0xa3, 0x01, 0xa1, 0x01, 0xab, 0x01, 0xac, 0x01, 0xb3, 0x01, 0xb3, 0x01, + 0xbc, 0x01, 0xbc, 0x01, 0xc1, 0x01, 0xc0, 0x01, 0xc7, 0x01, 0xc5, 0x01, + 0xc8, 0x01, 0xc8, 0x01, 0xcc, 0x01, 0xcb, 0x01, 0xcc, 0x01, 0xcd, 0x01, + 0xcd, 0x01, 0xcd, 0x01, 0xce, 0x01, 0xcc, 0x01, 0xca, 0x01, 0xcc, 0x01, + 0xcb, 0x01, 0xca, 0x01, 0xc7, 0x01, 0xc9, 0x01, 0xc8, 0x01, 0xc5, 0x01, + 0xc1, 0x01, 0xc4, 0x01, 0xc2, 0x01, 0xc0, 0x01, 0xbd, 0x01, 0xbf, 0x01, + 0xbc, 0x01, 0xbb, 0x01, 0xb6, 0x01, 0xb9, 0x01, 0xb8, 0x01, 0xb7, 0x01, + 0xb4, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb3, 0x01, 0xb0, 0x01, 0xb2, 0x01, + 0xb3, 0x01, 0xb0, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xae, 0x01, + 0xac, 0x01, 0xad, 0x01, 0xae, 0x01, 0xac, 0x01, 0xad, 0x01, 0xaf, 0x01, + 0xad, 0x01, 0xac, 0x01, 0xad, 0x01, 0xad, 0x01, 0xae, 0x01, 0xad, 0x01, + 0xab, 0x01, 0xaa, 0x01, 0xaa, 0x01, 0xab, 0x01, 0xa7, 0x01, 0xa7, 0x01, + 0xa4, 0x01, 0xa3, 0x01, 0xa4, 0x01, 0xa2, 0x01, 0x9c, 0x01, 0x9c, 0x01, + 0x99, 0x01, 0x98, 0x01, 0x92, 0x01, 0x92, 0x01, 0x8d, 0x01, 0x8c, 0x01, + 0x83, 0x01, 0x84, 0x01, 0x7b, 0x01, 0x7b, 0x01, 0x71, 0x01, 0x70, 0x01, + 0x64, 0x01, 0x65, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x4d, 0x01, 0x4c, 0x01, + 0x3e, 0x01, 0x3f, 0x01, 0x31, 0x01, 0x2f, 0x01, 0x1d, 0x01, 0x1e, 0x01, + 0x0f, 0x01, 0x0e, 0x01, 0xfd, 0x00, 0xfd, 0x00, 0xeb, 0x00, 0xec, 0x00, + 0xdb, 0x00, 0xda, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xb7, 0x00, 0xb5, 0x00, + 0xa0, 0x00, 0xa1, 0x00, 0x90, 0x00, 0x90, 0x00, 0x7b, 0x00, 0x7a, 0x00, + 0x69, 0x00, 0x6a, 0x00, 0x58, 0x00, 0x58, 0x00, 0x44, 0x00, 0x44, 0x00, + 0x34, 0x00, 0x34, 0x00, 0x23, 0x00, 0x21, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x04, 0x00, 0x03, 0x00, 0xf4, 0xff, 0xf5, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xdb, 0xff, 0xdb, 0xff, 0xce, 0xff, 0xce, 0xff, 0xc1, 0xff, 0xc1, 0xff, + 0xb8, 0xff, 0xb9, 0xff, 0xad, 0xff, 0xac, 0xff, 0xa3, 0xff, 0xa4, 0xff, + 0x9a, 0xff, 0x99, 0xff, 0x91, 0xff, 0x93, 0xff, 0x88, 0xff, 0x8a, 0xff, + 0x83, 0xff, 0x81, 0xff, 0x79, 0xff, 0x7a, 0xff, 0x72, 0xff, 0x72, 0xff, + 0x69, 0xff, 0x6c, 0xff, 0x64, 0xff, 0x62, 0xff, 0x5c, 0xff, 0x5c, 0xff, + 0x52, 0xff, 0x52, 0xff, 0x49, 0xff, 0x4a, 0xff, 0x42, 0xff, 0x40, 0xff, + 0x35, 0xff, 0x38, 0xff, 0x30, 0xff, 0x2e, 0xff, 0x22, 0xff, 0x22, 0xff, + 0x19, 0xff, 0x19, 0xff, 0x0e, 0xff, 0x0c, 0xff, 0xff, 0xfe, 0x03, 0xff, + 0xf8, 0xfe, 0xf5, 0xfe, 0xe7, 0xfe, 0xe8, 0xfe, 0xdc, 0xfe, 0xdd, 0xfe, + 0xd0, 0xfe, 0xce, 0xfe, 0xbf, 0xfe, 0xc1, 0xfe, 0xb6, 0xfe, 0xb4, 0xfe, + 0xa6, 0xfe, 0xa7, 0xfe, 0x9b, 0xfe, 0x9b, 0xfe, 0x8d, 0xfe, 0x8d, 0xfe, + 0x80, 0xfe, 0x80, 0xfe, 0x77, 0xfe, 0x76, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, + 0x5f, 0xfe, 0x5f, 0xfe, 0x57, 0xfe, 0x55, 0xfe, 0x4a, 0xfe, 0x4c, 0xfe, + 0x48, 0xfe, 0x46, 0xfe, 0x3c, 0xfe, 0x3e, 0xfe, 0x39, 0xfe, 0x39, 0xfe, + 0x35, 0xfe, 0x34, 0xfe, 0x2e, 0xfe, 0x2e, 0xfe, 0x2f, 0xfe, 0x2f, 0xfe, + 0x2c, 0xfe, 0x2c, 0xfe, 0x2e, 0xfe, 0x2d, 0xfe, 0x2e, 0xfe, 0x2e, 0xfe, + 0x2e, 0xfe, 0x2e, 0xfe, 0x35, 0xfe, 0x35, 0xfe, 0x35, 0xfe, 0x36, 0xfe, + 0x3e, 0xfe, 0x3e, 0xfe, 0x43, 0xfe, 0x43, 0xfe, 0x4b, 0xfe, 0x4a, 0xfe, + 0x50, 0xfe, 0x51, 0xfe, 0x58, 0xfe, 0x5a, 0xfe, 0x61, 0xfe, 0x60, 0xfe, + 0x66, 0xfe, 0x69, 0xfe, 0x70, 0xfe, 0x70, 0xfe, 0x78, 0xfe, 0x7a, 0xfe, + 0x80, 0xfe, 0x80, 0xfe, 0x8a, 0xfe, 0x8a, 0xfe, 0x92, 0xfe, 0x92, 0xfe, + 0x99, 0xfe, 0x9a, 0xfe, 0xa2, 0xfe, 0xa0, 0xfe, 0xa7, 0xfe, 0xa9, 0xfe, + 0xb1, 0xfe, 0xaf, 0xfe, 0xb5, 0xfe, 0xb7, 0xfe, 0xbc, 0xfe, 0xbb, 0xfe, + 0xc1, 0xfe, 0xc1, 0xfe, 0xc7, 0xfe, 0xc8, 0xfe, 0xcd, 0xfe, 0xcd, 0xfe, + 0xd1, 0xfe, 0xd0, 0xfe, 0xd4, 0xfe, 0xd6, 0xfe, 0xdb, 0xfe, 0xda, 0xfe, + 0xde, 0xfe, 0xdf, 0xfe, 0xe2, 0xfe, 0xe4, 0xfe, 0xea, 0xfe, 0xe9, 0xfe, + 0xee, 0xfe, 0xed, 0xfe, 0xf2, 0xfe, 0xf5, 0xfe, 0xf9, 0xfe, 0xf9, 0xfe, + 0x01, 0xff, 0x01, 0xff, 0x08, 0xff, 0x09, 0xff, 0x13, 0xff, 0x12, 0xff, + 0x1b, 0xff, 0x1b, 0xff, 0x26, 0xff, 0x27, 0xff, 0x31, 0xff, 0x30, 0xff, + 0x3f, 0xff, 0x3f, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x5b, 0xff, 0x5a, 0xff, + 0x67, 0xff, 0x69, 0xff, 0x7c, 0xff, 0x7a, 0xff, 0x8a, 0xff, 0x8b, 0xff, + 0x9f, 0xff, 0x9f, 0xff, 0xb3, 0xff, 0xb2, 0xff, 0xc7, 0xff, 0xc9, 0xff, + 0xdf, 0xff, 0xde, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0x0c, 0x00, 0x0a, 0x00, + 0x20, 0x00, 0x23, 0x00, 0x3c, 0x00, 0x39, 0x00, 0x50, 0x00, 0x53, 0x00, + 0x69, 0x00, 0x68, 0x00, 0x81, 0x00, 0x82, 0x00, 0x96, 0x00, 0x97, 0x00, + 0xaf, 0x00, 0xae, 0x00, 0xc2, 0x00, 0xc6, 0x00, 0xdb, 0x00, 0xd9, 0x00, + 0xef, 0x00, 0xf1, 0x00, 0x03, 0x01, 0x02, 0x01, 0x17, 0x01, 0x18, 0x01, + 0x29, 0x01, 0x2a, 0x01, 0x3c, 0x01, 0x3a, 0x01, 0x4a, 0x01, 0x4b, 0x01, + 0x57, 0x01, 0x57, 0x01, 0x67, 0x01, 0x66, 0x01, 0x71, 0x01, 0x72, 0x01, + 0x7e, 0x01, 0x7d, 0x01, 0x85, 0x01, 0x87, 0x01, 0x91, 0x01, 0x90, 0x01, + 0x98, 0x01, 0x99, 0x01, 0x9e, 0x01, 0x9e, 0x01, 0xa4, 0x01, 0xa5, 0x01, + 0xaa, 0x01, 0xa9, 0x01, 0xad, 0x01, 0xae, 0x01, 0xb1, 0x01, 0xaf, 0x01, + 0xb3, 0x01, 0xb5, 0x01, 0xb7, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, + 0xba, 0x01, 0xba, 0x01, 0xbc, 0x01, 0xbb, 0x01, 0xba, 0x01, 0xbb, 0x01, + 0xbd, 0x01, 0xbd, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbc, 0x01, 0xbd, 0x01, + 0xbf, 0x01, 0xbe, 0x01, 0xbe, 0x01, 0xbe, 0x01, 0xbf, 0x01, 0xbf, 0x01, + 0xbf, 0x01, 0xc0, 0x01, 0xbd, 0x01, 0xbd, 0x01, 0xc1, 0x01, 0xc1, 0x01, + 0xc0, 0x01, 0xbf, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0xc0, 0x01, 0xc0, 0x01, + 0xbf, 0x01, 0xbf, 0x01, 0xbf, 0x01, 0xc0, 0x01, 0xbe, 0x01, 0xbe, 0x01, + 0xbb, 0x01, 0xbc, 0x01, 0xb8, 0x01, 0xb8, 0x01, 0xb5, 0x01, 0xb7, 0x01, + 0xb2, 0x01, 0xb2, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xa8, 0x01, 0xa8, 0x01, + 0xa2, 0x01, 0xa2, 0x01, 0x9a, 0x01, 0x9c, 0x01, 0x93, 0x01, 0x91, 0x01, + 0x89, 0x01, 0x8a, 0x01, 0x80, 0x01, 0x80, 0x01, 0x74, 0x01, 0x75, 0x01, + 0x69, 0x01, 0x68, 0x01, 0x5d, 0x01, 0x5c, 0x01, 0x4f, 0x01, 0x4f, 0x01, + 0x41, 0x01, 0x40, 0x01, 0x31, 0x01, 0x31, 0x01, 0x21, 0x01, 0x22, 0x01, + 0x13, 0x01, 0x10, 0x01, 0xff, 0x00, 0x02, 0x01, 0xf1, 0x00, 0xef, 0x00, + 0xdf, 0x00, 0xdf, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xbe, 0x00, 0xbc, 0x00, + 0xab, 0x00, 0xac, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x8b, 0x00, 0x8b, 0x00, + 0x79, 0x00, 0x7a, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x5b, 0x00, 0x5c, 0x00, + 0x4e, 0x00, 0x4e, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x27, 0x00, 0x27, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x12, 0x00, 0x11, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf0, 0xff, 0xf1, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe1, 0xff, 0xe2, 0xff, + 0xdd, 0xff, 0xdb, 0xff, 0xd5, 0xff, 0xd7, 0xff, 0xd1, 0xff, 0xcf, 0xff, + 0xcc, 0xff, 0xcc, 0xff, 0xc5, 0xff, 0xc4, 0xff, 0xbf, 0xff, 0xc0, 0xff, + 0xba, 0xff, 0xb9, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xaf, 0xff, 0xad, 0xff, + 0xa4, 0xff, 0xa4, 0xff, 0x9d, 0xff, 0x9f, 0xff, 0x95, 0xff, 0x95, 0xff, + 0x8e, 0xff, 0x8c, 0xff, 0x82, 0xff, 0x82, 0xff, 0x79, 0xff, 0x78, 0xff, + 0x6c, 0xff, 0x6d, 0xff, 0x61, 0xff, 0x60, 0xff, 0x55, 0xff, 0x54, 0xff, + 0x46, 0xff, 0x45, 0xff, 0x3a, 0xff, 0x3b, 0xff, 0x2a, 0xff, 0x29, 0xff, + 0x1c, 0xff, 0x1b, 0xff, 0x0a, 0xff, 0x0d, 0xff, 0xfd, 0xfe, 0xfa, 0xfe, + 0xed, 0xfe, 0xee, 0xfe, 0xdd, 0xfe, 0xdc, 0xfe, 0xce, 0xfe, 0xce, 0xfe, + 0xbe, 0xfe, 0xbd, 0xfe, 0xaf, 0xfe, 0xae, 0xfe, 0x9f, 0xfe, 0x9f, 0xfe, + 0x91, 0xfe, 0x92, 0xfe, 0x84, 0xfe, 0x83, 0xfe, 0x76, 0xfe, 0x77, 0xfe, + 0x6a, 0xfe, 0x6a, 0xfe, 0x60, 0xfe, 0x60, 0xfe, 0x55, 0xfe, 0x56, 0xfe, + 0x4e, 0xfe, 0x4b, 0xfe, 0x42, 0xfe, 0x44, 0xfe, 0x3e, 0xfe, 0x3d, 0xfe, + 0x39, 0xfe, 0x38, 0xfe, 0x34, 0xfe, 0x35, 0xfe, 0x31, 0xfe, 0x32, 0xfe, + 0x30, 0xfe, 0x30, 0xfe, 0x2e, 0xfe, 0x2f, 0xfe, 0x31, 0xfe, 0x2e, 0xfe, + 0x2d, 0xfe, 0x31, 0xfe, 0x33, 0xfe, 0x32, 0xfe, 0x34, 0xfe, 0x36, 0xfe, + 0x3a, 0xfe, 0x39, 0xfe, 0x3d, 0xfe, 0x40, 0xfe, 0x44, 0xfe, 0x41, 0xfe, + 0x47, 0xfe, 0x49, 0xfe, 0x4f, 0xfe, 0x50, 0xfe, 0x54, 0xfe, 0x54, 0xfe, + 0x5d, 0xfe, 0x5d, 0xfe, 0x62, 0xfe, 0x63, 0xfe, 0x6b, 0xfe, 0x69, 0xfe, + 0x71, 0xfe, 0x73, 0xfe, 0x79, 0xfe, 0x78, 0xfe, 0x7e, 0xfe, 0x81, 0xfe, + 0x87, 0xfe, 0x86, 0xfe, 0x8d, 0xfe, 0x8d, 0xfe, 0x92, 0xfe, 0x92, 0xfe, + 0x9c, 0xfe, 0x9b, 0xfe, 0xa0, 0xfe, 0xa2, 0xfe, 0xa7, 0xfe, 0xa6, 0xfe, + 0xae, 0xfe, 0xae, 0xfe, 0xb2, 0xfe, 0xb4, 0xfe, 0xbb, 0xfe, 0xba, 0xfe, + 0xc0, 0xfe, 0xc1, 0xfe, 0xc4, 0xfe, 0xc3, 0xfe, 0xce, 0xfe, 0xce, 0xfe, + 0xd2, 0xfe, 0xd3, 0xfe, 0xdc, 0xfe, 0xdd, 0xfe, 0xe4, 0xfe, 0xe5, 0xfe, + 0xec, 0xfe, 0xec, 0xfe, 0xf7, 0xfe, 0xf8, 0xfe, 0xfd, 0xfe, 0xfd, 0xfe, + 0x0c, 0xff, 0x0d, 0xff, 0x13, 0xff, 0x13, 0xff, 0x23, 0xff, 0x22, 0xff, + 0x2d, 0xff, 0x30, 0xff, 0x3d, 0xff, 0x3b, 0xff, 0x49, 0xff, 0x4b, 0xff, + 0x5b, 0xff, 0x5a, 0xff, 0x6a, 0xff, 0x6b, 0xff, 0x7c, 0xff, 0x7b, 0xff, + 0x8e, 0xff, 0x8f, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0xc7, 0xff, 0xc6, 0xff, 0xdb, 0xff, 0xda, 0xff, 0xee, 0xff, 0xee, 0xff, + 0x02, 0x00, 0x01, 0x00, 0x17, 0x00, 0x18, 0x00, 0x2c, 0x00, 0x2a, 0x00, + 0x3f, 0x00, 0x40, 0x00, 0x53, 0x00, 0x53, 0x00, 0x67, 0x00, 0x66, 0x00, + 0x7c, 0x00, 0x7c, 0x00, 0x8e, 0x00, 0x8b, 0x00, 0x9e, 0x00, 0x9f, 0x00, + 0xb3, 0x00, 0xb0, 0x00, 0xc1, 0x00, 0xc1, 0x00, 0xd3, 0x00, 0xd2, 0x00, + 0xe0, 0x00, 0xe1, 0x00, 0xf0, 0x00, 0xee, 0x00, 0xfb, 0x00, 0xfc, 0x00, + 0x0a, 0x01, 0x07, 0x01, 0x15, 0x01, 0x13, 0x01, 0x1d, 0x01, 0x1d, 0x01, + 0x2a, 0x01, 0x28, 0x01, 0x30, 0x01, 0x31, 0x01, 0x3c, 0x01, 0x39, 0x01, + 0x3f, 0x01, 0x3f, 0x01, 0x48, 0x01, 0x47, 0x01, 0x4e, 0x01, 0x4e, 0x01, + 0x53, 0x01, 0x51, 0x01, 0x58, 0x01, 0x59, 0x01, 0x5e, 0x01, 0x5d, 0x01, + 0x62, 0x01, 0x62, 0x01, 0x68, 0x01, 0x66, 0x01, 0x6c, 0x01, 0x6c, 0x01, + 0x71, 0x01, 0x71, 0x01, 0x76, 0x01, 0x75, 0x01, 0x7a, 0x01, 0x7a, 0x01, + 0x7f, 0x01, 0x7f, 0x01, 0x84, 0x01, 0x84, 0x01, 0x89, 0x01, 0x88, 0x01, + 0x8e, 0x01, 0x8f, 0x01, 0x95, 0x01, 0x94, 0x01, 0x9a, 0x01, 0x99, 0x01, + 0x9d, 0x01, 0x9f, 0x01, 0xa7, 0x01, 0xa5, 0x01, 0xa8, 0x01, 0xab, 0x01, + 0xb2, 0x01, 0xb0, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xba, 0x01, 0xb9, 0x01, + 0xbe, 0x01, 0xbf, 0x01, 0xc3, 0x01, 0xc2, 0x01, 0xc5, 0x01, 0xc6, 0x01, + 0xc8, 0x01, 0xc8, 0x01, 0xca, 0x01, 0xcb, 0x01, 0xcc, 0x01, 0xcc, 0x01, + 0xcd, 0x01, 0xcc, 0x01, 0xcd, 0x01, 0xce, 0x01, 0xca, 0x01, 0xca, 0x01, + 0xc8, 0x01, 0xc9, 0x01, 0xc4, 0x01, 0xc3, 0x01, 0xbd, 0x01, 0xbd, 0x01, + 0xb8, 0x01, 0xb8, 0x01, 0xaf, 0x01, 0xb0, 0x01, 0xa7, 0x01, 0xa7, 0x01, + 0x9e, 0x01, 0x9e, 0x01, 0x92, 0x01, 0x92, 0x01, 0x86, 0x01, 0x86, 0x01, + 0x78, 0x01, 0x79, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x5c, 0x01, 0x5b, 0x01, + 0x4b, 0x01, 0x4c, 0x01, 0x3b, 0x01, 0x3c, 0x01, 0x2b, 0x01, 0x28, 0x01, + 0x16, 0x01, 0x1a, 0x01, 0x07, 0x01, 0x05, 0x01, 0xf5, 0x00, 0xf5, 0x00, + 0xe3, 0x00, 0xe4, 0x00, 0xd2, 0x00, 0xd0, 0x00, 0xbf, 0x00, 0xc1, 0x00, + 0xb2, 0x00, 0xae, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x8c, 0x00, 0x8d, 0x00, + 0x7e, 0x00, 0x7f, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x63, 0x00, 0x61, 0x00, + 0x50, 0x00, 0x52, 0x00, 0x45, 0x00, 0x45, 0x00, 0x3b, 0x00, 0x3a, 0x00, + 0x2e, 0x00, 0x2f, 0x00, 0x25, 0x00, 0x23, 0x00, 0x1b, 0x00, 0x1d, 0x00, + 0x13, 0x00, 0x11, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x02, 0x00, 0x02, 0x00, + 0xfc, 0xff, 0xfc, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xef, 0xff, 0xee, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xdd, 0xff, 0xdd, 0xff, + 0xd6, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xcb, 0xff, 0xcb, 0xff, + 0xc5, 0xff, 0xc5, 0xff, 0xbf, 0xff, 0xbe, 0xff, 0xb4, 0xff, 0xb6, 0xff, + 0xb0, 0xff, 0xaf, 0xff, 0xa5, 0xff, 0xa7, 0xff, 0x9f, 0xff, 0x9c, 0xff, + 0x93, 0xff, 0x95, 0xff, 0x88, 0xff, 0x88, 0xff, 0x7f, 0xff, 0x80, 0xff, + 0x73, 0xff, 0x72, 0xff, 0x68, 0xff, 0x69, 0xff, 0x5b, 0xff, 0x5b, 0xff, + 0x4e, 0xff, 0x4e, 0xff, 0x42, 0xff, 0x40, 0xff, 0x34, 0xff, 0x34, 0xff, + 0x24, 0xff, 0x26, 0xff, 0x1a, 0xff, 0x19, 0xff, 0x08, 0xff, 0x0a, 0xff, + 0xfb, 0xfe, 0xfb, 0xfe, 0xee, 0xfe, 0xee, 0xfe, 0xe1, 0xfe, 0xe2, 0xfe, + 0xd5, 0xfe, 0xd3, 0xfe, 0xc6, 0xfe, 0xc8, 0xfe, 0xbb, 0xfe, 0xb9, 0xfe, + 0xaf, 0xfe, 0xaf, 0xfe, 0xa4, 0xfe, 0xa6, 0xfe, 0x9a, 0xfe, 0x9a, 0xfe, + 0x91, 0xfe, 0x92, 0xfe, 0x86, 0xfe, 0x87, 0xfe, 0x82, 0xfe, 0x82, 0xfe, + 0x79, 0xfe, 0x7a, 0xfe, 0x76, 0xfe, 0x75, 0xfe, 0x70, 0xfe, 0x70, 0xfe, + 0x6a, 0xfe, 0x6a, 0xfe, 0x69, 0xfe, 0x6a, 0xfe, 0x63, 0xfe, 0x63, 0xfe, + 0x64, 0xfe, 0x63, 0xfe, 0x62, 0xfe, 0x62, 0xfe, 0x5f, 0xfe, 0x5e, 0xfe, + 0x60, 0xfe, 0x62, 0xfe, 0x60, 0xfe, 0x5f, 0xfe, 0x62, 0xfe, 0x63, 0xfe, + 0x60, 0xfe, 0x60, 0xfe, 0x63, 0xfe, 0x63, 0xfe, 0x64, 0xfe, 0x65, 0xfe, + 0x63, 0xfe, 0x62, 0xfe, 0x67, 0xfe, 0x68, 0xfe, 0x65, 0xfe, 0x64, 0xfe, + 0x69, 0xfe, 0x6a, 0xfe, 0x68, 0xfe, 0x67, 0xfe, 0x6b, 0xfe, 0x6c, 0xfe, + 0x6c, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, 0x6d, 0xfe, 0x6f, 0xfe, + 0x70, 0xfe, 0x6e, 0xfe, 0x70, 0xfe, 0x71, 0xfe, 0x73, 0xfe, 0x72, 0xfe, + 0x73, 0xfe, 0x75, 0xfe, 0x76, 0xfe, 0x74, 0xfe, 0x78, 0xfe, 0x78, 0xfe, + 0x7a, 0xfe, 0x7b, 0xfe, 0x7d, 0xfe, 0x7c, 0xfe, 0x82, 0xfe, 0x83, 0xfe, + 0x89, 0xfe, 0x87, 0xfe, 0x8a, 0xfe, 0x8b, 0xfe, 0x94, 0xfe, 0x93, 0xfe, + 0x98, 0xfe, 0x99, 0xfe, 0xa3, 0xfe, 0xa1, 0xfe, 0xab, 0xfe, 0xac, 0xfe, + 0xb6, 0xfe, 0xb5, 0xfe, 0xc4, 0xfe, 0xc4, 0xfe, 0xce, 0xfe, 0xce, 0xfe, + 0xde, 0xfe, 0xde, 0xfe, 0xed, 0xfe, 0xee, 0xfe, 0xfc, 0xfe, 0xfd, 0xfe, + 0x10, 0xff, 0x0f, 0xff, 0x20, 0xff, 0x20, 0xff, 0x37, 0xff, 0x34, 0xff, + 0x49, 0xff, 0x4a, 0xff, 0x60, 0xff, 0x5e, 0xff, 0x75, 0xff, 0x75, 0xff, + 0x8d, 0xff, 0x8d, 0xff, 0xa3, 0xff, 0xa2, 0xff, 0xbb, 0xff, 0xbb, 0xff, + 0xd3, 0xff, 0xd1, 0xff, 0xea, 0xff, 0xeb, 0xff, 0x02, 0x00, 0x01, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x46, 0x00, 0x46, 0x00, + 0x5b, 0x00, 0x5c, 0x00, 0x72, 0x00, 0x70, 0x00, 0x83, 0x00, 0x85, 0x00, + 0x99, 0x00, 0x98, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xbb, 0x00, 0xbb, 0x00, + 0xca, 0x00, 0xca, 0x00, 0xda, 0x00, 0xda, 0x00, 0xe6, 0x00, 0xe8, 0x00, + 0xf4, 0x00, 0xf3, 0x00, 0xfc, 0x00, 0xfe, 0x00, 0x07, 0x01, 0x07, 0x01, + 0x11, 0x01, 0x10, 0x01, 0x19, 0x01, 0x1a, 0x01, 0x20, 0x01, 0x1f, 0x01, + 0x24, 0x01, 0x24, 0x01, 0x2b, 0x01, 0x2c, 0x01, 0x2f, 0x01, 0x2d, 0x01, + 0x32, 0x01, 0x35, 0x01, 0x37, 0x01, 0x34, 0x01, 0x38, 0x01, 0x3b, 0x01, + 0x3d, 0x01, 0x3b, 0x01, 0x3e, 0x01, 0x3d, 0x01, 0x42, 0x01, 0x42, 0x01, + 0x43, 0x01, 0x41, 0x01, 0x46, 0x01, 0x48, 0x01, 0x4a, 0x01, 0x48, 0x01, + 0x4d, 0x01, 0x4d, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x55, 0x01, 0x54, 0x01, + 0x58, 0x01, 0x57, 0x01, 0x5b, 0x01, 0x5b, 0x01, 0x61, 0x01, 0x62, 0x01, + 0x65, 0x01, 0x64, 0x01, 0x6b, 0x01, 0x69, 0x01, 0x71, 0x01, 0x70, 0x01, + 0x75, 0x01, 0x75, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x81, 0x01, 0x80, 0x01, + 0x87, 0x01, 0x86, 0x01, 0x8e, 0x01, 0x8d, 0x01, 0x92, 0x01, 0x92, 0x01, + 0x98, 0x01, 0x96, 0x01, 0x9c, 0x01, 0x9c, 0x01, 0x9f, 0x01, 0xa0, 0x01, + 0xa3, 0x01, 0xa2, 0x01, 0xa7, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xa7, 0x01, + 0xa8, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xa7, 0x01, + 0xa5, 0x01, 0xa3, 0x01, 0xa1, 0x01, 0xa0, 0x01, 0x9c, 0x01, 0x9d, 0x01, + 0x98, 0x01, 0x98, 0x01, 0x93, 0x01, 0x91, 0x01, 0x8a, 0x01, 0x8a, 0x01, + 0x82, 0x01, 0x80, 0x01, 0x7a, 0x01, 0x79, 0x01, 0x6e, 0x01, 0x6d, 0x01, + 0x66, 0x01, 0x65, 0x01, 0x58, 0x01, 0x58, 0x01, 0x4e, 0x01, 0x4f, 0x01, + 0x41, 0x01, 0x3f, 0x01, 0x34, 0x01, 0x35, 0x01, 0x28, 0x01, 0x25, 0x01, + 0x19, 0x01, 0x19, 0x01, 0x0e, 0x01, 0x0f, 0x01, 0xfe, 0x00, 0xfc, 0x00, + 0xf2, 0x00, 0xf3, 0x00, 0xe5, 0x00, 0xe5, 0x00, 0xd7, 0x00, 0xd7, 0x00, + 0xcc, 0x00, 0xcb, 0x00, 0xbf, 0x00, 0xbd, 0x00, 0xb5, 0x00, 0xb5, 0x00, + 0xa8, 0x00, 0xa6, 0x00, 0x9d, 0x00, 0x9f, 0x00, 0x95, 0x00, 0x93, 0x00, + 0x89, 0x00, 0x89, 0x00, 0x81, 0x00, 0x81, 0x00, 0x76, 0x00, 0x76, 0x00, + 0x6f, 0x00, 0x6e, 0x00, 0x66, 0x00, 0x66, 0x00, 0x5d, 0x00, 0x5d, 0x00, + 0x58, 0x00, 0x57, 0x00, 0x4c, 0x00, 0x4e, 0x00, 0x47, 0x00, 0x47, 0x00, + 0x3e, 0x00, 0x3e, 0x00, 0x36, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x2c, 0x00, + 0x23, 0x00, 0x25, 0x00, 0x1b, 0x00, 0x19, 0x00, 0x11, 0x00, 0x12, 0x00, + 0x05, 0x00, 0x07, 0x00, 0xfd, 0xff, 0xfc, 0xff, 0xef, 0xff, 0xf0, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xcb, 0xff, 0xca, 0xff, + 0xbd, 0xff, 0xbe, 0xff, 0xaf, 0xff, 0xae, 0xff, 0x9f, 0xff, 0xa0, 0xff, + 0x91, 0xff, 0x91, 0xff, 0x82, 0xff, 0x80, 0xff, 0x6f, 0xff, 0x72, 0xff, + 0x62, 0xff, 0x60, 0xff, 0x4f, 0xff, 0x50, 0xff, 0x41, 0xff, 0x42, 0xff, + 0x2e, 0xff, 0x2e, 0xff, 0x1f, 0xff, 0x21, 0xff, 0x10, 0xff, 0x10, 0xff, + 0x02, 0xff, 0x02, 0xff, 0xf3, 0xfe, 0xf3, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, + 0xd7, 0xfe, 0xd7, 0xfe, 0xca, 0xfe, 0xcc, 0xfe, 0xc0, 0xfe, 0xbd, 0xfe, + 0xb2, 0xfe, 0xb5, 0xfe, 0xac, 0xfe, 0xaa, 0xfe, 0xa2, 0xfe, 0xa3, 0xfe, + 0x9a, 0xfe, 0x9b, 0xfe, 0x95, 0xfe, 0x93, 0xfe, 0x8c, 0xfe, 0x8e, 0xfe, + 0x8a, 0xfe, 0x8a, 0xfe, 0x84, 0xfe, 0x86, 0xfe, 0x83, 0xfe, 0x82, 0xfe, + 0x82, 0xfe, 0x83, 0xfe, 0x80, 0xfe, 0x80, 0xfe, 0x80, 0xfe, 0x80, 0xfe, + 0x81, 0xfe, 0x82, 0xfe, 0x82, 0xfe, 0x82, 0xfe, 0x84, 0xfe, 0x85, 0xfe, + 0x85, 0xfe, 0x84, 0xfe, 0x87, 0xfe, 0x89, 0xfe, 0x88, 0xfe, 0x89, 0xfe, + 0x8d, 0xfe, 0x8b, 0xfe, 0x8e, 0xfe, 0x8f, 0xfe, 0x90, 0xfe, 0x8f, 0xfe, + 0x93, 0xfe, 0x93, 0xfe, 0x94, 0xfe, 0x92, 0xfe, 0x95, 0xfe, 0x96, 0xfe, + 0x96, 0xfe, 0x95, 0xfe, 0x95, 0xfe, 0x95, 0xfe, 0x96, 0xfe, 0x97, 0xfe, + 0x97, 0xfe, 0x95, 0xfe, 0x96, 0xfe, 0x96, 0xfe, 0x96, 0xfe, 0x96, 0xfe, + 0x91, 0xfe, 0x92, 0xfe, 0x93, 0xfe, 0x94, 0xfe, 0x90, 0xfe, 0x90, 0xfe, + 0x8e, 0xfe, 0x8e, 0xfe, 0x8c, 0xfe, 0x8d, 0xfe, 0x8a, 0xfe, 0x8a, 0xfe, + 0x89, 0xfe, 0x8a, 0xfe, 0x88, 0xfe, 0x88, 0xfe, 0x87, 0xfe, 0x88, 0xfe, + 0x88, 0xfe, 0x88, 0xfe, 0x86, 0xfe, 0x88, 0xfe, 0x8b, 0xfe, 0x8b, 0xfe, + 0x89, 0xfe, 0x8d, 0xfe, 0x90, 0xfe, 0x90, 0xfe, 0x93, 0xfe, 0x93, 0xfe, + 0x96, 0xfe, 0x97, 0xfe, 0xa0, 0xfe, 0xa1, 0xfe, 0xa5, 0xfe, 0xa5, 0xfe, + 0xaf, 0xfe, 0xb0, 0xfe, 0xbb, 0xfe, 0xb9, 0xfe, 0xc3, 0xfe, 0xc5, 0xfe, + 0xd3, 0xfe, 0xd4, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xef, 0xfe, 0xf1, 0xfe, + 0x01, 0xff, 0x01, 0xff, 0x13, 0xff, 0x13, 0xff, 0x25, 0xff, 0x25, 0xff, + 0x38, 0xff, 0x39, 0xff, 0x4e, 0xff, 0x4c, 0xff, 0x5f, 0xff, 0x64, 0xff, + 0x78, 0xff, 0x76, 0xff, 0x8c, 0xff, 0x8d, 0xff, 0xa3, 0xff, 0xa3, 0xff, + 0xb9, 0xff, 0xb9, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xe4, 0xff, 0xe6, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0x11, 0x00, 0x10, 0x00, 0x25, 0x00, 0x27, 0x00, + 0x3c, 0x00, 0x38, 0x00, 0x4d, 0x00, 0x50, 0x00, 0x62, 0x00, 0x60, 0x00, + 0x73, 0x00, 0x74, 0x00, 0x85, 0x00, 0x83, 0x00, 0x95, 0x00, 0x94, 0x00, + 0xa5, 0x00, 0xa5, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xc2, 0x00, 0xc1, 0x00, + 0xce, 0x00, 0xcf, 0x00, 0xdd, 0x00, 0xdb, 0x00, 0xe5, 0x00, 0xe6, 0x00, + 0xf0, 0x00, 0xf1, 0x00, 0xfb, 0x00, 0xfb, 0x00, 0x04, 0x01, 0x02, 0x01, + 0x0c, 0x01, 0x0c, 0x01, 0x14, 0x01, 0x12, 0x01, 0x1c, 0x01, 0x1c, 0x01, + 0x23, 0x01, 0x23, 0x01, 0x29, 0x01, 0x28, 0x01, 0x30, 0x01, 0x31, 0x01, + 0x38, 0x01, 0x36, 0x01, 0x3c, 0x01, 0x3f, 0x01, 0x44, 0x01, 0x43, 0x01, + 0x4c, 0x01, 0x4b, 0x01, 0x4f, 0x01, 0x50, 0x01, 0x57, 0x01, 0x55, 0x01, + 0x5e, 0x01, 0x5e, 0x01, 0x63, 0x01, 0x64, 0x01, 0x6a, 0x01, 0x6b, 0x01, + 0x6e, 0x01, 0x6e, 0x01, 0x79, 0x01, 0x78, 0x01, 0x7a, 0x01, 0x7a, 0x01, + 0x82, 0x01, 0x82, 0x01, 0x86, 0x01, 0x87, 0x01, 0x8d, 0x01, 0x8b, 0x01, + 0x91, 0x01, 0x92, 0x01, 0x95, 0x01, 0x94, 0x01, 0x99, 0x01, 0x9a, 0x01, + 0x9d, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0xa0, 0x01, 0xa0, 0x01, + 0xa1, 0x01, 0xa1, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa0, 0x01, 0x9f, 0x01, + 0x9d, 0x01, 0x9d, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x98, 0x01, 0x96, 0x01, + 0x92, 0x01, 0x95, 0x01, 0x8e, 0x01, 0x8c, 0x01, 0x87, 0x01, 0x87, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x78, 0x01, 0x76, 0x01, 0x6e, 0x01, 0x6f, 0x01, + 0x64, 0x01, 0x63, 0x01, 0x5c, 0x01, 0x5b, 0x01, 0x50, 0x01, 0x4f, 0x01, + 0x44, 0x01, 0x44, 0x01, 0x3b, 0x01, 0x3a, 0x01, 0x2c, 0x01, 0x2d, 0x01, + 0x24, 0x01, 0x23, 0x01, 0x16, 0x01, 0x15, 0x01, 0x0a, 0x01, 0x0b, 0x01, + 0xff, 0x00, 0xfe, 0x00, 0xf3, 0x00, 0xf2, 0x00, 0xe9, 0x00, 0xea, 0x00, + 0xdc, 0x00, 0xdc, 0x00, 0xd3, 0x00, 0xd5, 0x00, 0xca, 0x00, 0xc8, 0x00, + 0xc4, 0x00, 0xc4, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0xb5, 0x00, 0xb3, 0x00, + 0xac, 0x00, 0xae, 0x00, 0xa6, 0x00, 0xa5, 0x00, 0xa1, 0x00, 0xa2, 0x00, + 0x9a, 0x00, 0x9a, 0x00, 0x97, 0x00, 0x98, 0x00, 0x93, 0x00, 0x92, 0x00, + 0x8e, 0x00, 0x8e, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x88, 0x00, 0x86, 0x00, + 0x84, 0x00, 0x84, 0x00, 0x81, 0x00, 0x81, 0x00, 0x7c, 0x00, 0x7c, 0x00, + 0x7b, 0x00, 0x7a, 0x00, 0x75, 0x00, 0x75, 0x00, 0x70, 0x00, 0x71, 0x00, + 0x6c, 0x00, 0x6b, 0x00, 0x65, 0x00, 0x66, 0x00, 0x5e, 0x00, 0x5c, 0x00, + 0x56, 0x00, 0x59, 0x00, 0x51, 0x00, 0x4e, 0x00, 0x46, 0x00, 0x46, 0x00, + 0x3d, 0x00, 0x3d, 0x00, 0x31, 0x00, 0x2f, 0x00, 0x26, 0x00, 0x25, 0x00, + 0x18, 0x00, 0x17, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0xfd, 0xff, 0xfd, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xcd, 0xff, 0xcc, 0xff, + 0xb9, 0xff, 0xb8, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0x96, 0xff, 0x94, 0xff, + 0x84, 0xff, 0x85, 0xff, 0x71, 0xff, 0x70, 0xff, 0x60, 0xff, 0x5e, 0xff, + 0x4c, 0xff, 0x4d, 0xff, 0x3b, 0xff, 0x3a, 0xff, 0x29, 0xff, 0x29, 0xff, + 0x19, 0xff, 0x18, 0xff, 0x09, 0xff, 0x08, 0xff, 0xf7, 0xfe, 0xf6, 0xfe, + 0xe9, 0xfe, 0xe9, 0xfe, 0xdc, 0xfe, 0xdb, 0xfe, 0xce, 0xfe, 0xcc, 0xfe, + 0xc2, 0xfe, 0xc3, 0xfe, 0xb7, 0xfe, 0xb5, 0xfe, 0xad, 0xfe, 0xaf, 0xfe, + 0xa4, 0xfe, 0xa3, 0xfe, 0x9c, 0xfe, 0x9b, 0xfe, 0x95, 0xfe, 0x97, 0xfe, + 0x8e, 0xfe, 0x8b, 0xfe, 0x8a, 0xfe, 0x8c, 0xfe, 0x85, 0xfe, 0x83, 0xfe, + 0x84, 0xfe, 0x83, 0xfe, 0x7e, 0xfe, 0x7f, 0xfe, 0x80, 0xfe, 0x7e, 0xfe, + 0x7e, 0xfe, 0x7e, 0xfe, 0x7d, 0xfe, 0x7d, 0xfe, 0x80, 0xfe, 0x7e, 0xfe, + 0x7b, 0xfe, 0x7d, 0xfe, 0x7f, 0xfe, 0x7e, 0xfe, 0x7f, 0xfe, 0x81, 0xfe, + 0x7f, 0xfe, 0x7f, 0xfe, 0x82, 0xfe, 0x85, 0xfe, 0x82, 0xfe, 0x82, 0xfe, + 0x85, 0xfe, 0x84, 0xfe, 0x84, 0xfe, 0x85, 0xfe, 0x86, 0xfe, 0x86, 0xfe, + 0x85, 0xfe, 0x87, 0xfe, 0x88, 0xfe, 0x88, 0xfe, 0x87, 0xfe, 0x89, 0xfe, + 0x89, 0xfe, 0x8a, 0xfe, 0x89, 0xfe, 0x88, 0xfe, 0x89, 0xfe, 0x8a, 0xfe, + 0x8b, 0xfe, 0x8c, 0xfe, 0x8c, 0xfe, 0x8c, 0xfe, 0x8c, 0xfe, 0x8c, 0xfe, + 0x8d, 0xfe, 0x8e, 0xfe, 0x8d, 0xfe, 0x8d, 0xfe, 0x92, 0xfe, 0x92, 0xfe, + 0x90, 0xfe, 0x92, 0xfe, 0x97, 0xfe, 0x97, 0xfe, 0x98, 0xfe, 0x97, 0xfe, + 0x9c, 0xfe, 0x9c, 0xfe, 0xa1, 0xfe, 0xa0, 0xfe, 0xa4, 0xfe, 0xa8, 0xfe, + 0xae, 0xfe, 0xab, 0xfe, 0xb3, 0xfe, 0xb4, 0xfe, 0xbd, 0xfe, 0xbe, 0xfe, + 0xc5, 0xfe, 0xc5, 0xfe, 0xcf, 0xfe, 0xce, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, + 0xe5, 0xfe, 0xe3, 0xfe, 0xf0, 0xfe, 0xf1, 0xfe, 0xfc, 0xfe, 0xfb, 0xfe, + 0x0c, 0xff, 0x0a, 0xff, 0x17, 0xff, 0x18, 0xff, 0x29, 0xff, 0x27, 0xff, + 0x34, 0xff, 0x36, 0xff, 0x47, 0xff, 0x46, 0xff, 0x56, 0xff, 0x56, 0xff, + 0x67, 0xff, 0x66, 0xff, 0x77, 0xff, 0x78, 0xff, 0x8a, 0xff, 0x88, 0xff, + 0x97, 0xff, 0x9a, 0xff, 0xab, 0xff, 0xa8, 0xff, 0xb8, 0xff, 0xba, 0xff, + 0xc8, 0xff, 0xc8, 0xff, 0xd9, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x12, 0x00, + 0x1d, 0x00, 0x1f, 0x00, 0x2d, 0x00, 0x2a, 0x00, 0x36, 0x00, 0x35, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x57, 0x00, 0x56, 0x00, + 0x61, 0x00, 0x62, 0x00, 0x6c, 0x00, 0x6b, 0x00, 0x73, 0x00, 0x74, 0x00, + 0x7e, 0x00, 0x7b, 0x00, 0x84, 0x00, 0x85, 0x00, 0x8f, 0x00, 0x8d, 0x00, + 0x97, 0x00, 0x96, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa7, 0x00, 0xa8, 0x00, + 0xb3, 0x00, 0xb1, 0x00, 0xba, 0x00, 0xbb, 0x00, 0xc6, 0x00, 0xc3, 0x00, + 0xce, 0x00, 0xcd, 0x00, 0xd6, 0x00, 0xd8, 0x00, 0xe4, 0x00, 0xe2, 0x00, + 0xeb, 0x00, 0xeb, 0x00, 0xf9, 0x00, 0xf8, 0x00, 0x01, 0x01, 0x03, 0x01, + 0x10, 0x01, 0x0e, 0x01, 0x1b, 0x01, 0x1c, 0x01, 0x27, 0x01, 0x26, 0x01, + 0x34, 0x01, 0x34, 0x01, 0x40, 0x01, 0x41, 0x01, 0x4c, 0x01, 0x4c, 0x01, + 0x5a, 0x01, 0x59, 0x01, 0x63, 0x01, 0x65, 0x01, 0x73, 0x01, 0x71, 0x01, + 0x7a, 0x01, 0x7b, 0x01, 0x88, 0x01, 0x87, 0x01, 0x90, 0x01, 0x91, 0x01, + 0x9b, 0x01, 0x9b, 0x01, 0xa4, 0x01, 0xa4, 0x01, 0xac, 0x01, 0xa9, 0x01, + 0xb1, 0x01, 0xb3, 0x01, 0xb9, 0x01, 0xb7, 0x01, 0xbc, 0x01, 0xbd, 0x01, + 0xc1, 0x01, 0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0xc2, 0x01, 0xc2, 0x01, + 0xc2, 0x01, 0xc2, 0x01, 0xbf, 0x01, 0xbf, 0x01, 0xbc, 0x01, 0xbc, 0x01, + 0xb8, 0x01, 0xb7, 0x01, 0xb2, 0x01, 0xb1, 0x01, 0xac, 0x01, 0xab, 0x01, + 0xa3, 0x01, 0xa3, 0x01, 0x9b, 0x01, 0x9a, 0x01, 0x91, 0x01, 0x91, 0x01, + 0x85, 0x01, 0x86, 0x01, 0x79, 0x01, 0x78, 0x01, 0x6e, 0x01, 0x6d, 0x01, + 0x61, 0x01, 0x61, 0x01, 0x53, 0x01, 0x52, 0x01, 0x47, 0x01, 0x45, 0x01, + 0x38, 0x01, 0x38, 0x01, 0x2c, 0x01, 0x2b, 0x01, 0x1c, 0x01, 0x1c, 0x01, + 0x11, 0x01, 0x11, 0x01, 0x05, 0x01, 0x05, 0x01, 0xf7, 0x00, 0xf6, 0x00, + 0xeb, 0x00, 0xeb, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xd4, 0x00, 0xd4, 0x00, + 0xcc, 0x00, 0xcb, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xb8, 0x00, 0xb7, 0x00, + 0xae, 0x00, 0xae, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0x9e, 0x00, 0x9c, 0x00, + 0x98, 0x00, 0x99, 0x00, 0x91, 0x00, 0x90, 0x00, 0x89, 0x00, 0x8b, 0x00, + 0x86, 0x00, 0x84, 0x00, 0x7e, 0x00, 0x80, 0x00, 0x7a, 0x00, 0x79, 0x00, + 0x74, 0x00, 0x74, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x6a, 0x00, 0x6a, 0x00, + 0x62, 0x00, 0x62, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x57, 0x00, 0x56, 0x00, + 0x50, 0x00, 0x51, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x41, 0x00, 0x43, 0x00, + 0x39, 0x00, 0x39, 0x00, 0x31, 0x00, 0x32, 0x00, 0x28, 0x00, 0x27, 0x00, + 0x1d, 0x00, 0x1f, 0x00, 0x13, 0x00, 0x12, 0x00, 0x07, 0x00, 0x08, 0x00, + 0xfc, 0xff, 0xfb, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xe2, 0xff, 0xe4, 0xff, + 0xd6, 0xff, 0xd7, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xba, 0xff, 0xbc, 0xff, + 0xae, 0xff, 0xad, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0x90, 0xff, 0x92, 0xff, + 0x84, 0xff, 0x82, 0xff, 0x75, 0xff, 0x76, 0xff, 0x68, 0xff, 0x69, 0xff, + 0x5a, 0xff, 0x59, 0xff, 0x4d, 0xff, 0x50, 0xff, 0x42, 0xff, 0x41, 0xff, + 0x35, 0xff, 0x36, 0xff, 0x29, 0xff, 0x2a, 0xff, 0x20, 0xff, 0x20, 0xff, + 0x13, 0xff, 0x15, 0xff, 0x0c, 0xff, 0x0c, 0xff, 0x03, 0xff, 0x03, 0xff, + 0xfa, 0xfe, 0xfa, 0xfe, 0xf4, 0xfe, 0xf2, 0xfe, 0xeb, 0xfe, 0xea, 0xfe, + 0xe4, 0xfe, 0xe6, 0xfe, 0xe2, 0xfe, 0xdf, 0xfe, 0xd9, 0xfe, 0xda, 0xfe, + 0xd7, 0xfe, 0xd6, 0xfe, 0xd0, 0xfe, 0xd1, 0xfe, 0xcc, 0xfe, 0xcc, 0xfe, + 0xc9, 0xfe, 0xc8, 0xfe, 0xc2, 0xfe, 0xc3, 0xfe, 0xc0, 0xfe, 0xbf, 0xfe, + 0xbb, 0xfe, 0xbc, 0xfe, 0xb8, 0xfe, 0xb7, 0xfe, 0xb3, 0xfe, 0xb4, 0xfe, + 0xaf, 0xfe, 0xaf, 0xfe, 0xac, 0xfe, 0xac, 0xfe, 0xa7, 0xfe, 0xa7, 0xfe, + 0xa4, 0xfe, 0xa4, 0xfe, 0x9e, 0xfe, 0x9e, 0xfe, 0x9a, 0xfe, 0x9a, 0xfe, + 0x96, 0xfe, 0x95, 0xfe, 0x91, 0xfe, 0x90, 0xfe, 0x8d, 0xfe, 0x8d, 0xfe, + 0x8a, 0xfe, 0x88, 0xfe, 0x82, 0xfe, 0x84, 0xfe, 0x80, 0xfe, 0x7f, 0xfe, + 0x7b, 0xfe, 0x7b, 0xfe, 0x78, 0xfe, 0x78, 0xfe, 0x74, 0xfe, 0x74, 0xfe, + 0x70, 0xfe, 0x71, 0xfe, 0x6f, 0xfe, 0x6d, 0xfe, 0x6c, 0xfe, 0x6f, 0xfe, + 0x6d, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, 0x6e, 0xfe, 0x6e, 0xfe, 0x6c, 0xfe, + 0x6e, 0xfe, 0x70, 0xfe, 0x71, 0xfe, 0x70, 0xfe, 0x74, 0xfe, 0x76, 0xfe, + 0x7b, 0xfe, 0x7c, 0xfe, 0x80, 0xfe, 0x7f, 0xfe, 0x89, 0xfe, 0x8b, 0xfe, + 0x91, 0xfe, 0x91, 0xfe, 0x9c, 0xfe, 0x9c, 0xfe, 0xa5, 0xfe, 0xa6, 0xfe, + 0xb1, 0xfe, 0xb2, 0xfe, 0xbf, 0xfe, 0xc0, 0xfe, 0xcf, 0xfe, 0xcd, 0xfe, + 0xda, 0xfe, 0xdc, 0xfe, 0xee, 0xfe, 0xec, 0xfe, 0xfa, 0xfe, 0xfc, 0xfe, + 0x10, 0xff, 0x0e, 0xff, 0x1d, 0xff, 0x1f, 0xff, 0x33, 0xff, 0x34, 0xff, + 0x43, 0xff, 0x42, 0xff, 0x56, 0xff, 0x57, 0xff, 0x6a, 0xff, 0x69, 0xff, + 0x7a, 0xff, 0x7b, 0xff, 0x8e, 0xff, 0x8f, 0xff, 0x9e, 0xff, 0x9f, 0xff, + 0xb2, 0xff, 0xb2, 0xff, 0xc2, 0xff, 0xc3, 0xff, 0xd2, 0xff, 0xd1, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xef, 0xff, 0xef, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0x0b, 0x00, 0x0b, 0x00, 0x17, 0x00, 0x17, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x2d, 0x00, 0x2e, 0x00, 0x39, 0x00, 0x38, 0x00, 0x41, 0x00, 0x42, 0x00, + 0x4a, 0x00, 0x4a, 0x00, 0x51, 0x00, 0x52, 0x00, 0x59, 0x00, 0x59, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0x67, 0x00, 0x67, 0x00, 0x6b, 0x00, 0x6b, 0x00, + 0x73, 0x00, 0x72, 0x00, 0x78, 0x00, 0x77, 0x00, 0x7f, 0x00, 0x7d, 0x00, + 0x82, 0x00, 0x83, 0x00, 0x8b, 0x00, 0x8a, 0x00, 0x8f, 0x00, 0x8e, 0x00, + 0x97, 0x00, 0x96, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0xa4, 0x00, 0xa3, 0x00, + 0xaa, 0x00, 0xac, 0x00, 0xb2, 0x00, 0xb0, 0x00, 0xbb, 0x00, 0xbd, 0x00, + 0xc4, 0x00, 0xc3, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xd5, 0x00, 0xd6, 0x00, + 0xe2, 0x00, 0xdf, 0x00, 0xea, 0x00, 0xec, 0x00, 0xf5, 0x00, 0xf5, 0x00, + 0x00, 0x01, 0x00, 0x01, 0x0d, 0x01, 0x0c, 0x01, 0x16, 0x01, 0x16, 0x01, + 0x24, 0x01, 0x23, 0x01, 0x2d, 0x01, 0x2d, 0x01, 0x3a, 0x01, 0x39, 0x01, + 0x44, 0x01, 0x44, 0x01, 0x4d, 0x01, 0x4d, 0x01, 0x5a, 0x01, 0x58, 0x01, + 0x60, 0x01, 0x60, 0x01, 0x6b, 0x01, 0x6a, 0x01, 0x72, 0x01, 0x73, 0x01, + 0x78, 0x01, 0x77, 0x01, 0x80, 0x01, 0x80, 0x01, 0x84, 0x01, 0x83, 0x01, + 0x89, 0x01, 0x8a, 0x01, 0x8d, 0x01, 0x8b, 0x01, 0x8d, 0x01, 0x8e, 0x01, + 0x90, 0x01, 0x90, 0x01, 0x91, 0x01, 0x90, 0x01, 0x8f, 0x01, 0x8f, 0x01, + 0x8e, 0x01, 0x8e, 0x01, 0x8a, 0x01, 0x8a, 0x01, 0x88, 0x01, 0x88, 0x01, + 0x82, 0x01, 0x82, 0x01, 0x7f, 0x01, 0x7f, 0x01, 0x77, 0x01, 0x78, 0x01, + 0x72, 0x01, 0x73, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x65, 0x01, 0x65, 0x01, + 0x5b, 0x01, 0x5e, 0x01, 0x56, 0x01, 0x54, 0x01, 0x4d, 0x01, 0x4e, 0x01, + 0x46, 0x01, 0x46, 0x01, 0x3b, 0x01, 0x3c, 0x01, 0x36, 0x01, 0x36, 0x01, + 0x2d, 0x01, 0x2c, 0x01, 0x25, 0x01, 0x26, 0x01, 0x1d, 0x01, 0x1e, 0x01, + 0x16, 0x01, 0x16, 0x01, 0x10, 0x01, 0x10, 0x01, 0x06, 0x01, 0x06, 0x01, + 0xff, 0x00, 0x01, 0x01, 0xf8, 0x00, 0xf9, 0x00, 0xf2, 0x00, 0xf0, 0x00, + 0xec, 0x00, 0xee, 0x00, 0xe3, 0x00, 0xe2, 0x00, 0xde, 0x00, 0xdf, 0x00, + 0xd7, 0x00, 0xd6, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xca, 0x00, 0xc8, 0x00, + 0xc0, 0x00, 0xc0, 0x00, 0xbb, 0x00, 0xbb, 0x00, 0xb1, 0x00, 0xb1, 0x00, + 0xaa, 0x00, 0xaa, 0x00, 0xa1, 0x00, 0xa0, 0x00, 0x97, 0x00, 0x98, 0x00, + 0x8d, 0x00, 0x8d, 0x00, 0x82, 0x00, 0x82, 0x00, 0x77, 0x00, 0x77, 0x00, + 0x69, 0x00, 0x6b, 0x00, 0x60, 0x00, 0x5e, 0x00, 0x4e, 0x00, 0x51, 0x00, + 0x45, 0x00, 0x44, 0x00, 0x35, 0x00, 0x36, 0x00, 0x26, 0x00, 0x27, 0x00, + 0x1a, 0x00, 0x18, 0x00, 0x07, 0x00, 0x08, 0x00, 0xfa, 0xff, 0xfb, 0xff, + 0xe9, 0xff, 0xe8, 0xff, 0xda, 0xff, 0xda, 0xff, 0xc7, 0xff, 0xc9, 0xff, + 0xba, 0xff, 0xb9, 0xff, 0xa8, 0xff, 0xaa, 0xff, 0x9b, 0xff, 0x98, 0xff, + 0x8a, 0xff, 0x8c, 0xff, 0x7e, 0xff, 0x7c, 0xff, 0x6d, 0xff, 0x6f, 0xff, + 0x63, 0xff, 0x62, 0xff, 0x53, 0xff, 0x53, 0xff, 0x4b, 0xff, 0x4a, 0xff, + 0x3e, 0xff, 0x3e, 0xff, 0x35, 0xff, 0x36, 0xff, 0x2d, 0xff, 0x2d, 0xff, + 0x22, 0xff, 0x24, 0xff, 0x1f, 0xff, 0x1d, 0xff, 0x15, 0xff, 0x16, 0xff, + 0x11, 0xff, 0x11, 0xff, 0x0b, 0xff, 0x0a, 0xff, 0x06, 0xff, 0x08, 0xff, + 0x05, 0xff, 0x04, 0xff, 0x01, 0xff, 0x02, 0xff, 0xff, 0xfe, 0xfe, 0xfe, + 0xfd, 0xfe, 0xfe, 0xfe, 0xfd, 0xfe, 0xfd, 0xfe, 0xfd, 0xfe, 0xfc, 0xfe, + 0xf8, 0xfe, 0xf8, 0xfe, 0xfd, 0xfe, 0xf9, 0xfe, 0xf7, 0xfe, 0xfa, 0xfe, + 0xf8, 0xfe, 0xf7, 0xfe, 0xf8, 0xfe, 0xf7, 0xfe, 0xf2, 0xfe, 0xf5, 0xfe, + 0xf5, 0xfe, 0xf2, 0xfe, 0xef, 0xfe, 0xf0, 0xfe, 0xf1, 0xfe, 0xee, 0xfe, + 0xea, 0xfe, 0xeb, 0xfe, 0xe6, 0xfe, 0xe5, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, + 0xdf, 0xfe, 0xdc, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xd2, 0xfe, 0xd1, 0xfe, + 0xcf, 0xfe, 0xce, 0xfe, 0xc6, 0xfe, 0xc5, 0xfe, 0xc1, 0xfe, 0xc0, 0xfe, + 0xb8, 0xfe, 0xb8, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, 0xad, 0xfe, 0xab, 0xfe, + 0xa2, 0xfe, 0xa2, 0xfe, 0x9d, 0xfe, 0x9e, 0xfe, 0x97, 0xfe, 0x94, 0xfe, + 0x8f, 0xfe, 0x90, 0xfe, 0x8d, 0xfe, 0x8a, 0xfe, 0x84, 0xfe, 0x86, 0xfe, + 0x84, 0xfe, 0x80, 0xfe, 0x7c, 0xfe, 0x7d, 0xfe, 0x7d, 0xfe, 0x7b, 0xfe, + 0x78, 0xfe, 0x79, 0xfe, 0x7a, 0xfe, 0x78, 0xfe, 0x79, 0xfe, 0x7b, 0xfe, + 0x7d, 0xfe, 0x7a, 0xfe, 0x81, 0xfe, 0x82, 0xfe, 0x83, 0xfe, 0x82, 0xfe, + 0x8b, 0xfe, 0x8b, 0xfe, 0x93, 0xfe, 0x93, 0xfe, 0x9c, 0xfe, 0x9a, 0xfe, + 0xa4, 0xfe, 0xa6, 0xfe, 0xae, 0xfe, 0xae, 0xfe, 0xbc, 0xfe, 0xbc, 0xfe, + 0xc7, 0xfe, 0xc7, 0xfe, 0xd6, 0xfe, 0xd7, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, + 0xf3, 0xfe, 0xf6, 0xfe, 0x02, 0xff, 0x02, 0xff, 0x13, 0xff, 0x13, 0xff, + 0x24, 0xff, 0x25, 0xff, 0x33, 0xff, 0x34, 0xff, 0x45, 0xff, 0x46, 0xff, + 0x56, 0xff, 0x55, 0xff, 0x67, 0xff, 0x68, 0xff, 0x77, 0xff, 0x75, 0xff, + 0x86, 0xff, 0x88, 0xff, 0x98, 0xff, 0x98, 0xff, 0xa6, 0xff, 0xa7, 0xff, + 0xb6, 0xff, 0xb7, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xd2, 0xff, 0xd3, 0xff, + 0xe0, 0xff, 0xe0, 0xff, 0xec, 0xff, 0xed, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0x04, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x24, 0x00, 0x25, 0x00, 0x31, 0x00, 0x31, 0x00, 0x38, 0x00, 0x39, 0x00, + 0x44, 0x00, 0x44, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x56, 0x00, + 0x60, 0x00, 0x61, 0x00, 0x67, 0x00, 0x67, 0x00, 0x72, 0x00, 0x73, 0x00, + 0x7d, 0x00, 0x7b, 0x00, 0x84, 0x00, 0x84, 0x00, 0x90, 0x00, 0x90, 0x00, + 0x97, 0x00, 0x95, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xad, 0x00, 0xac, 0x00, + 0xb8, 0x00, 0xb9, 0x00, 0xc4, 0x00, 0xc3, 0x00, 0xce, 0x00, 0xcf, 0x00, + 0xda, 0x00, 0xd8, 0x00, 0xe4, 0x00, 0xe4, 0x00, 0xef, 0x00, 0xf0, 0x00, + 0xfa, 0x00, 0xf8, 0x00, 0x06, 0x01, 0x06, 0x01, 0x0f, 0x01, 0x10, 0x01, + 0x1a, 0x01, 0x18, 0x01, 0x25, 0x01, 0x24, 0x01, 0x2e, 0x01, 0x2e, 0x01, + 0x36, 0x01, 0x35, 0x01, 0x41, 0x01, 0x41, 0x01, 0x45, 0x01, 0x45, 0x01, + 0x51, 0x01, 0x4f, 0x01, 0x52, 0x01, 0x53, 0x01, 0x5b, 0x01, 0x59, 0x01, + 0x5e, 0x01, 0x5e, 0x01, 0x62, 0x01, 0x62, 0x01, 0x64, 0x01, 0x64, 0x01, + 0x64, 0x01, 0x66, 0x01, 0x69, 0x01, 0x66, 0x01, 0x65, 0x01, 0x66, 0x01, + 0x67, 0x01, 0x67, 0x01, 0x63, 0x01, 0x63, 0x01, 0x60, 0x01, 0x60, 0x01, + 0x5e, 0x01, 0x5c, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x54, 0x01, 0x53, 0x01, + 0x4e, 0x01, 0x51, 0x01, 0x49, 0x01, 0x47, 0x01, 0x44, 0x01, 0x45, 0x01, + 0x3f, 0x01, 0x3f, 0x01, 0x38, 0x01, 0x37, 0x01, 0x32, 0x01, 0x33, 0x01, + 0x2b, 0x01, 0x2a, 0x01, 0x25, 0x01, 0x26, 0x01, 0x20, 0x01, 0x20, 0x01, + 0x1a, 0x01, 0x19, 0x01, 0x15, 0x01, 0x16, 0x01, 0x11, 0x01, 0x10, 0x01, + 0x0d, 0x01, 0x0e, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x06, 0x01, + 0x02, 0x01, 0x03, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x01, + 0xfd, 0x00, 0xff, 0x00, 0xfe, 0x00, 0xfd, 0x00, 0xfd, 0x00, 0xfc, 0x00, + 0xfd, 0x00, 0xff, 0x00, 0xfe, 0x00, 0xfb, 0x00, 0xfb, 0x00, 0xfe, 0x00, + 0xfc, 0x00, 0xfb, 0x00, 0xfb, 0x00, 0xfb, 0x00, 0xf9, 0x00, 0xfa, 0x00, + 0xf9, 0x00, 0xf6, 0x00, 0xf5, 0x00, 0xf7, 0x00, 0xf4, 0x00, 0xf3, 0x00, + 0xee, 0x00, 0xf0, 0x00, 0xed, 0x00, 0xeb, 0x00, 0xe5, 0x00, 0xe6, 0x00, + 0xe1, 0x00, 0xde, 0x00, 0xdb, 0x00, 0xda, 0x00, 0xd0, 0x00, 0xd0, 0x00, + 0xc8, 0x00, 0xc6, 0x00, 0xbd, 0x00, 0xc0, 0x00, 0xb4, 0x00, 0xb1, 0x00, + 0xa6, 0x00, 0xa6, 0x00, 0x9a, 0x00, 0x99, 0x00, 0x89, 0x00, 0x88, 0x00, + 0x7d, 0x00, 0x7e, 0x00, 0x6e, 0x00, 0x6d, 0x00, 0x5c, 0x00, 0x5b, 0x00, + 0x4a, 0x00, 0x4b, 0x00, 0x3a, 0x00, 0x38, 0x00, 0x27, 0x00, 0x28, 0x00, + 0x13, 0x00, 0x14, 0x00, 0x03, 0x00, 0x01, 0x00, 0xef, 0xff, 0xf0, 0xff, + 0xdf, 0xff, 0xdd, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xb9, 0xff, 0xb9, 0xff, + 0xa9, 0xff, 0xa8, 0xff, 0x97, 0xff, 0x97, 0xff, 0x88, 0xff, 0x87, 0xff, + 0x79, 0xff, 0x78, 0xff, 0x68, 0xff, 0x6b, 0xff, 0x5d, 0xff, 0x5c, 0xff, + 0x50, 0xff, 0x50, 0xff, 0x42, 0xff, 0x43, 0xff, 0x39, 0xff, 0x38, 0xff, + 0x2e, 0xff, 0x2f, 0xff, 0x24, 0xff, 0x26, 0xff, 0x1f, 0xff, 0x1e, 0xff, + 0x14, 0xff, 0x16, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0a, 0xff, 0x0b, 0xff, + 0x04, 0xff, 0x04, 0xff, 0x00, 0xff, 0x01, 0xff, 0xfd, 0xfe, 0xfd, 0xfe, + 0xf8, 0xfe, 0xf8, 0xfe, 0xf7, 0xfe, 0xf7, 0xfe, 0xf4, 0xfe, 0xf5, 0xfe, + 0xf1, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe, 0xeb, 0xfe, 0xed, 0xfe, + 0xeb, 0xfe, 0xeb, 0xfe, 0xe8, 0xfe, 0xe9, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, + 0xe3, 0xfe, 0xe4, 0xfe, 0xde, 0xfe, 0xde, 0xfe, 0xdc, 0xfe, 0xdd, 0xfe, + 0xd9, 0xfe, 0xd8, 0xfe, 0xd3, 0xfe, 0xd5, 0xfe, 0xd1, 0xfe, 0xd1, 0xfe, + 0xca, 0xfe, 0xca, 0xfe, 0xc8, 0xfe, 0xc9, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, + 0xbe, 0xfe, 0xbf, 0xfe, 0xb8, 0xfe, 0xb8, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, + 0xae, 0xfe, 0xaf, 0xfe, 0xaa, 0xfe, 0xab, 0xfe, 0xa7, 0xfe, 0xa8, 0xfe, + 0xa3, 0xfe, 0xa2, 0xfe, 0x9f, 0xfe, 0xa0, 0xfe, 0x9b, 0xfe, 0x9c, 0xfe, + 0x9d, 0xfe, 0x9c, 0xfe, 0x99, 0xfe, 0x9a, 0xfe, 0x99, 0xfe, 0x98, 0xfe, + 0x99, 0xfe, 0x99, 0xfe, 0x99, 0xfe, 0x99, 0xfe, 0x9b, 0xfe, 0x9b, 0xfe, + 0x9d, 0xfe, 0x9d, 0xfe, 0xa1, 0xfe, 0xa1, 0xfe, 0xa4, 0xfe, 0xa4, 0xfe, + 0xab, 0xfe, 0xab, 0xfe, 0xb1, 0xfe, 0xb1, 0xfe, 0xb6, 0xfe, 0xb7, 0xfe, + 0xc0, 0xfe, 0xbe, 0xfe, 0xc5, 0xfe, 0xc6, 0xfe, 0xd2, 0xfe, 0xcf, 0xfe, + 0xd8, 0xfe, 0xd9, 0xfe, 0xe3, 0xfe, 0xe4, 0xfe, 0xee, 0xfe, 0xed, 0xfe, + 0xf9, 0xfe, 0xfa, 0xfe, 0x04, 0xff, 0x05, 0xff, 0x11, 0xff, 0x0f, 0xff, + 0x19, 0xff, 0x1c, 0xff, 0x28, 0xff, 0x26, 0xff, 0x30, 0xff, 0x32, 0xff, + 0x3f, 0xff, 0x40, 0xff, 0x48, 0xff, 0x47, 0xff, 0x54, 0xff, 0x56, 0xff, + 0x5d, 0xff, 0x5c, 0xff, 0x67, 0xff, 0x68, 0xff, 0x72, 0xff, 0x72, 0xff, + 0x7c, 0xff, 0x7b, 0xff, 0x85, 0xff, 0x85, 0xff, 0x8d, 0xff, 0x8d, 0xff, + 0x98, 0xff, 0x98, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xa6, 0xff, 0xa6, 0xff, + 0xae, 0xff, 0xaf, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xbd, 0xff, 0xbe, 0xff, + 0xc6, 0xff, 0xc5, 0xff, 0xcc, 0xff, 0xce, 0xff, 0xd5, 0xff, 0xd4, 0xff, + 0xdc, 0xff, 0xde, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0x02, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x0c, 0x00, + 0x16, 0x00, 0x18, 0x00, 0x23, 0x00, 0x23, 0x00, 0x2e, 0x00, 0x30, 0x00, + 0x3c, 0x00, 0x3b, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x56, 0x00, 0x56, 0x00, + 0x65, 0x00, 0x68, 0x00, 0x74, 0x00, 0x75, 0x00, 0x84, 0x00, 0x85, 0x00, + 0x94, 0x00, 0x95, 0x00, 0xa3, 0x00, 0xa5, 0x00, 0xb4, 0x00, 0xb5, 0x00, + 0xc3, 0x00, 0xc4, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xe4, 0x00, 0xe3, 0x00, + 0xf4, 0x00, 0xf5, 0x00, 0x01, 0x01, 0x03, 0x01, 0x14, 0x01, 0x14, 0x01, + 0x1f, 0x01, 0x20, 0x01, 0x2d, 0x01, 0x2e, 0x01, 0x39, 0x01, 0x39, 0x01, + 0x45, 0x01, 0x45, 0x01, 0x50, 0x01, 0x51, 0x01, 0x59, 0x01, 0x56, 0x01, + 0x61, 0x01, 0x62, 0x01, 0x68, 0x01, 0x68, 0x01, 0x6e, 0x01, 0x6f, 0x01, + 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x75, 0x01, 0x78, 0x01, 0x79, 0x01, + 0x79, 0x01, 0x7a, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x78, 0x01, 0x77, 0x01, + 0x74, 0x01, 0x77, 0x01, 0x72, 0x01, 0x72, 0x01, 0x6e, 0x01, 0x6f, 0x01, + 0x68, 0x01, 0x69, 0x01, 0x65, 0x01, 0x64, 0x01, 0x5c, 0x01, 0x5e, 0x01, + 0x58, 0x01, 0x56, 0x01, 0x50, 0x01, 0x51, 0x01, 0x49, 0x01, 0x49, 0x01, + 0x41, 0x01, 0x42, 0x01, 0x3a, 0x01, 0x3b, 0x01, 0x33, 0x01, 0x33, 0x01, + 0x2b, 0x01, 0x2d, 0x01, 0x24, 0x01, 0x24, 0x01, 0x1e, 0x01, 0x20, 0x01, + 0x18, 0x01, 0x19, 0x01, 0x11, 0x01, 0x11, 0x01, 0x0e, 0x01, 0x0e, 0x01, + 0x08, 0x01, 0x09, 0x01, 0x04, 0x01, 0x05, 0x01, 0xfe, 0x00, 0xfe, 0x00, + 0xfc, 0x00, 0xfd, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xf6, 0x00, 0xf7, 0x00, + 0xf3, 0x00, 0xf3, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xee, 0x00, 0xf0, 0x00, + 0xea, 0x00, 0xea, 0x00, 0xea, 0x00, 0xed, 0x00, 0xe7, 0x00, 0xe6, 0x00, + 0xe7, 0x00, 0xe5, 0x00, 0xe2, 0x00, 0xe5, 0x00, 0xe2, 0x00, 0xe0, 0x00, + 0xde, 0x00, 0xe0, 0x00, 0xdc, 0x00, 0xda, 0x00, 0xd5, 0x00, 0xd7, 0x00, + 0xd3, 0x00, 0xd3, 0x00, 0xce, 0x00, 0xce, 0x00, 0xc9, 0x00, 0xca, 0x00, + 0xc4, 0x00, 0xc3, 0x00, 0xbc, 0x00, 0xbe, 0x00, 0xb6, 0x00, 0xb7, 0x00, + 0xae, 0x00, 0xae, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0x9c, 0x00, 0x9d, 0x00, + 0x96, 0x00, 0x94, 0x00, 0x89, 0x00, 0x8b, 0x00, 0x80, 0x00, 0x7f, 0x00, + 0x75, 0x00, 0x76, 0x00, 0x67, 0x00, 0x69, 0x00, 0x5f, 0x00, 0x5e, 0x00, + 0x4f, 0x00, 0x51, 0x00, 0x45, 0x00, 0x45, 0x00, 0x39, 0x00, 0x3a, 0x00, + 0x2b, 0x00, 0x2c, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x11, 0x00, 0x13, 0x00, + 0x07, 0x00, 0x07, 0x00, 0xf9, 0xff, 0xfb, 0xff, 0xef, 0xff, 0xee, 0xff, + 0xe2, 0xff, 0xe4, 0xff, 0xd7, 0xff, 0xd6, 0xff, 0xcc, 0xff, 0xcd, 0xff, + 0xbe, 0xff, 0xc0, 0xff, 0xb5, 0xff, 0xb4, 0xff, 0xa9, 0xff, 0xaa, 0xff, + 0x9e, 0xff, 0x9f, 0xff, 0x95, 0xff, 0x95, 0xff, 0x8a, 0xff, 0x8d, 0xff, + 0x83, 0xff, 0x82, 0xff, 0x76, 0xff, 0x79, 0xff, 0x6f, 0xff, 0x6f, 0xff, + 0x65, 0xff, 0x65, 0xff, 0x5b, 0xff, 0x5d, 0xff, 0x52, 0xff, 0x52, 0xff, + 0x4a, 0xff, 0x4c, 0xff, 0x40, 0xff, 0x3f, 0xff, 0x36, 0xff, 0x39, 0xff, + 0x30, 0xff, 0x2d, 0xff, 0x22, 0xff, 0x25, 0xff, 0x1d, 0xff, 0x1c, 0xff, + 0x10, 0xff, 0x12, 0xff, 0x09, 0xff, 0x09, 0xff, 0xff, 0xfe, 0x01, 0xff, + 0xf5, 0xfe, 0xf6, 0xfe, 0xee, 0xfe, 0xed, 0xfe, 0xe2, 0xfe, 0xe4, 0xfe, + 0xda, 0xfe, 0xda, 0xfe, 0xd0, 0xfe, 0xd0, 0xfe, 0xc7, 0xfe, 0xc8, 0xfe, + 0xbe, 0xfe, 0xbe, 0xfe, 0xb5, 0xfe, 0xb5, 0xfe, 0xac, 0xfe, 0xad, 0xfe, + 0xa4, 0xfe, 0xa3, 0xfe, 0x9b, 0xfe, 0x9f, 0xfe, 0x95, 0xfe, 0x94, 0xfe, + 0x8e, 0xfe, 0x90, 0xfe, 0x89, 0xfe, 0x88, 0xfe, 0x83, 0xfe, 0x83, 0xfe, + 0x7f, 0xfe, 0x80, 0xfe, 0x7a, 0xfe, 0x7b, 0xfe, 0x78, 0xfe, 0x78, 0xfe, + 0x74, 0xfe, 0x75, 0xfe, 0x74, 0xfe, 0x74, 0xfe, 0x72, 0xfe, 0x74, 0xfe, + 0x75, 0xfe, 0x75, 0xfe, 0x78, 0xfe, 0x78, 0xfe, 0x79, 0xfe, 0x79, 0xfe, + 0x80, 0xfe, 0x7f, 0xfe, 0x82, 0xfe, 0x81, 0xfe, 0x89, 0xfe, 0x8b, 0xfe, + 0x8f, 0xfe, 0x90, 0xfe, 0x98, 0xfe, 0x96, 0xfe, 0xa1, 0xfe, 0xa2, 0xfe, + 0xa7, 0xfe, 0xa7, 0xfe, 0xb4, 0xfe, 0xb3, 0xfe, 0xbc, 0xfe, 0xbc, 0xfe, + 0xc7, 0xfe, 0xc7, 0xfe, 0xd3, 0xfe, 0xd1, 0xfe, 0xda, 0xfe, 0xdd, 0xfe, + 0xe9, 0xfe, 0xe8, 0xfe, 0xf4, 0xfe, 0xf5, 0xfe, 0x00, 0xff, 0x01, 0xff, + 0x0d, 0xff, 0x0c, 0xff, 0x18, 0xff, 0x18, 0xff, 0x26, 0xff, 0x25, 0xff, + 0x2f, 0xff, 0x31, 0xff, 0x3e, 0xff, 0x3c, 0xff, 0x46, 0xff, 0x48, 0xff, + 0x54, 0xff, 0x52, 0xff, 0x5d, 0xff, 0x5f, 0xff, 0x65, 0xff, 0x65, 0xff, + 0x72, 0xff, 0x71, 0xff, 0x77, 0xff, 0x79, 0xff, 0x83, 0xff, 0x82, 0xff, + 0x8a, 0xff, 0x8d, 0xff, 0x92, 0xff, 0x91, 0xff, 0x9a, 0xff, 0x9c, 0xff, + 0x9f, 0xff, 0x9f, 0xff, 0xaa, 0xff, 0xac, 0xff, 0xb0, 0xff, 0xae, 0xff, + 0xb6, 0xff, 0xb7, 0xff, 0xbd, 0xff, 0xbe, 0xff, 0xc3, 0xff, 0xc4, 0xff, + 0xcb, 0xff, 0xcd, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd7, 0xff, 0xd9, 0xff, + 0xe0, 0xff, 0xe0, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xf4, 0xff, 0xf6, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x07, 0x00, 0x06, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x22, 0x00, 0x22, 0x00, + 0x2c, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x37, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x4e, 0x00, 0x4f, 0x00, 0x5a, 0x00, 0x58, 0x00, 0x65, 0x00, 0x65, 0x00, + 0x71, 0x00, 0x72, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x8a, 0x00, 0x8b, 0x00, + 0x96, 0x00, 0x94, 0x00, 0xa2, 0x00, 0xa4, 0x00, 0xaf, 0x00, 0xad, 0x00, + 0xbb, 0x00, 0xbb, 0x00, 0xc8, 0x00, 0xc7, 0x00, 0xd2, 0x00, 0xd1, 0x00, + 0xde, 0x00, 0xe0, 0x00, 0xe9, 0x00, 0xe7, 0x00, 0xf5, 0x00, 0xf4, 0x00, + 0xfb, 0x00, 0xfe, 0x00, 0x07, 0x01, 0x04, 0x01, 0x0f, 0x01, 0x12, 0x01, + 0x17, 0x01, 0x16, 0x01, 0x21, 0x01, 0x22, 0x01, 0x27, 0x01, 0x29, 0x01, + 0x2f, 0x01, 0x2f, 0x01, 0x36, 0x01, 0x37, 0x01, 0x3a, 0x01, 0x3a, 0x01, + 0x40, 0x01, 0x40, 0x01, 0x43, 0x01, 0x44, 0x01, 0x48, 0x01, 0x47, 0x01, + 0x4a, 0x01, 0x4c, 0x01, 0x4d, 0x01, 0x4d, 0x01, 0x50, 0x01, 0x50, 0x01, + 0x52, 0x01, 0x52, 0x01, 0x54, 0x01, 0x54, 0x01, 0x52, 0x01, 0x54, 0x01, + 0x55, 0x01, 0x54, 0x01, 0x54, 0x01, 0x56, 0x01, 0x56, 0x01, 0x56, 0x01, + 0x54, 0x01, 0x53, 0x01, 0x54, 0x01, 0x55, 0x01, 0x53, 0x01, 0x52, 0x01, + 0x52, 0x01, 0x51, 0x01, 0x4e, 0x01, 0x50, 0x01, 0x51, 0x01, 0x50, 0x01, + 0x4c, 0x01, 0x4e, 0x01, 0x4b, 0x01, 0x4b, 0x01, 0x4a, 0x01, 0x4a, 0x01, + 0x47, 0x01, 0x46, 0x01, 0x45, 0x01, 0x47, 0x01, 0x42, 0x01, 0x42, 0x01, + 0x3e, 0x01, 0x40, 0x01, 0x3a, 0x01, 0x3c, 0x01, 0x35, 0x01, 0x35, 0x01, + 0x34, 0x01, 0x35, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0x29, 0x01, 0x29, 0x01, + 0x25, 0x01, 0x27, 0x01, 0x1d, 0x01, 0x1f, 0x01, 0x19, 0x01, 0x1a, 0x01, + 0x11, 0x01, 0x11, 0x01, 0x0a, 0x01, 0x0b, 0x01, 0x03, 0x01, 0x04, 0x01, + 0xfa, 0x00, 0xfa, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xe8, 0x00, 0xe9, 0x00, + 0xe0, 0x00, 0xe0, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0xca, 0x00, 0xca, 0x00, + 0xbf, 0x00, 0xc0, 0x00, 0xb4, 0x00, 0xb3, 0x00, 0xa7, 0x00, 0xa9, 0x00, + 0x9e, 0x00, 0x9c, 0x00, 0x8f, 0x00, 0x91, 0x00, 0x84, 0x00, 0x83, 0x00, + 0x78, 0x00, 0x79, 0x00, 0x6a, 0x00, 0x6b, 0x00, 0x61, 0x00, 0x60, 0x00, + 0x52, 0x00, 0x54, 0x00, 0x47, 0x00, 0x46, 0x00, 0x3b, 0x00, 0x3c, 0x00, + 0x2e, 0x00, 0x2e, 0x00, 0x24, 0x00, 0x25, 0x00, 0x19, 0x00, 0x19, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x05, 0x00, 0x03, 0x00, 0xf7, 0xff, 0xf9, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xdd, 0xff, 0xde, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xc5, 0xff, 0xc5, 0xff, + 0xbc, 0xff, 0xbe, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xaf, 0xff, 0xb0, 0xff, + 0xaa, 0xff, 0xaa, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0x9d, 0xff, + 0x97, 0xff, 0x97, 0xff, 0x90, 0xff, 0x92, 0xff, 0x8c, 0xff, 0x8b, 0xff, + 0x83, 0xff, 0x84, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x79, 0xff, 0x7a, 0xff, + 0x70, 0xff, 0x70, 0xff, 0x6a, 0xff, 0x6c, 0xff, 0x65, 0xff, 0x64, 0xff, + 0x5d, 0xff, 0x5d, 0xff, 0x54, 0xff, 0x56, 0xff, 0x4d, 0xff, 0x4c, 0xff, + 0x45, 0xff, 0x46, 0xff, 0x3c, 0xff, 0x3c, 0xff, 0x31, 0xff, 0x32, 0xff, + 0x2a, 0xff, 0x2a, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0x15, 0xff, 0x17, 0xff, + 0x0c, 0xff, 0x0c, 0xff, 0x01, 0xff, 0x02, 0xff, 0xfa, 0xfe, 0xf9, 0xfe, + 0xeb, 0xfe, 0xec, 0xfe, 0xe2, 0xfe, 0xe3, 0xfe, 0xd9, 0xfe, 0xd7, 0xfe, + 0xcc, 0xfe, 0xd1, 0xfe, 0xc5, 0xfe, 0xc4, 0xfe, 0xba, 0xfe, 0xbb, 0xfe, + 0xb1, 0xfe, 0xb2, 0xfe, 0xa9, 0xfe, 0xa8, 0xfe, 0x9f, 0xfe, 0xa2, 0xfe, + 0x9a, 0xfe, 0x99, 0xfe, 0x92, 0xfe, 0x92, 0xfe, 0x8c, 0xfe, 0x8d, 0xfe, + 0x88, 0xfe, 0x88, 0xfe, 0x7f, 0xfe, 0x82, 0xfe, 0x80, 0xfe, 0x80, 0xfe, + 0x7b, 0xfe, 0x7c, 0xfe, 0x7a, 0xfe, 0x7b, 0xfe, 0x79, 0xfe, 0x7a, 0xfe, + 0x79, 0xfe, 0x7b, 0xfe, 0x7c, 0xfe, 0x7c, 0xfe, 0x7c, 0xfe, 0x7f, 0xfe, + 0x80, 0xfe, 0x7f, 0xfe, 0x83, 0xfe, 0x85, 0xfe, 0x87, 0xfe, 0x88, 0xfe, + 0x8f, 0xfe, 0x91, 0xfe, 0x94, 0xfe, 0x94, 0xfe, 0x9d, 0xfe, 0x9f, 0xfe, + 0xa5, 0xfe, 0xa4, 0xfe, 0xab, 0xfe, 0xac, 0xfe, 0xb6, 0xfe, 0xb8, 0xfe, + 0xbf, 0xfe, 0xbf, 0xfe, 0xc8, 0xfe, 0xc9, 0xfe, 0xd4, 0xfe, 0xd5, 0xfe, + 0xde, 0xfe, 0xdd, 0xfe, 0xe9, 0xfe, 0xea, 0xfe, 0xf4, 0xfe, 0xf6, 0xfe, + 0x00, 0xff, 0xff, 0xfe, 0x0b, 0xff, 0x0d, 0xff, 0x14, 0xff, 0x14, 0xff, + 0x24, 0xff, 0x25, 0xff, 0x2d, 0xff, 0x2d, 0xff, 0x3c, 0xff, 0x3b, 0xff, + 0x45, 0xff, 0x47, 0xff, 0x50, 0xff, 0x4f, 0xff, 0x5b, 0xff, 0x5e, 0xff, + 0x67, 0xff, 0x66, 0xff, 0x73, 0xff, 0x73, 0xff, 0x7e, 0xff, 0x80, 0xff, + 0x88, 0xff, 0x86, 0xff, 0x94, 0xff, 0x94, 0xff, 0x9c, 0xff, 0x9e, 0xff, + 0xa9, 0xff, 0xa7, 0xff, 0xb2, 0xff, 0xb5, 0xff, 0xbe, 0xff, 0xbe, 0xff, + 0xcd, 0xff, 0xcc, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xe0, 0xff, + 0xe9, 0xff, 0xec, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0x02, 0x00, 0x02, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x17, 0x00, 0x18, 0x00, 0x22, 0x00, 0x22, 0x00, + 0x2b, 0x00, 0x2d, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x4f, 0x00, 0x50, 0x00, 0x58, 0x00, 0x5a, 0x00, 0x65, 0x00, 0x66, 0x00, + 0x6f, 0x00, 0x70, 0x00, 0x79, 0x00, 0x7b, 0x00, 0x84, 0x00, 0x84, 0x00, + 0x8f, 0x00, 0x90, 0x00, 0x97, 0x00, 0x97, 0x00, 0xa3, 0x00, 0xa4, 0x00, + 0xaa, 0x00, 0xa9, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xbc, 0x00, 0xbb, 0x00, + 0xc4, 0x00, 0xc4, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xd2, 0x00, 0xd2, 0x00, + 0xd9, 0x00, 0xdb, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xe4, 0x00, 0xe5, 0x00, + 0xea, 0x00, 0xea, 0x00, 0xed, 0x00, 0xed, 0x00, 0xf3, 0x00, 0xf4, 0x00, + 0xf5, 0x00, 0xf4, 0x00, 0xf9, 0x00, 0xfb, 0x00, 0xfb, 0x00, 0xfa, 0x00, + 0x00, 0x01, 0x00, 0x01, 0xff, 0x00, 0x01, 0x01, 0x04, 0x01, 0x03, 0x01, + 0x04, 0x01, 0x05, 0x01, 0x08, 0x01, 0x06, 0x01, 0x08, 0x01, 0x0b, 0x01, + 0x0a, 0x01, 0x09, 0x01, 0x0d, 0x01, 0x0f, 0x01, 0x0e, 0x01, 0x0e, 0x01, + 0x0f, 0x01, 0x0f, 0x01, 0x11, 0x01, 0x12, 0x01, 0x13, 0x01, 0x13, 0x01, + 0x16, 0x01, 0x17, 0x01, 0x17, 0x01, 0x18, 0x01, 0x1b, 0x01, 0x1c, 0x01, + 0x1f, 0x01, 0x1d, 0x01, 0x20, 0x01, 0x21, 0x01, 0x25, 0x01, 0x24, 0x01, + 0x25, 0x01, 0x27, 0x01, 0x2b, 0x01, 0x2b, 0x01, 0x2e, 0x01, 0x2d, 0x01, + 0x32, 0x01, 0x34, 0x01, 0x34, 0x01, 0x35, 0x01, 0x37, 0x01, 0x39, 0x01, + 0x3c, 0x01, 0x3d, 0x01, 0x3e, 0x01, 0x3d, 0x01, 0x43, 0x01, 0x45, 0x01, + 0x43, 0x01, 0x43, 0x01, 0x45, 0x01, 0x47, 0x01, 0x48, 0x01, 0x49, 0x01, + 0x48, 0x01, 0x49, 0x01, 0x4b, 0x01, 0x4a, 0x01, 0x47, 0x01, 0x49, 0x01, + 0x49, 0x01, 0x4a, 0x01, 0x48, 0x01, 0x48, 0x01, 0x43, 0x01, 0x45, 0x01, + 0x42, 0x01, 0x42, 0x01, 0x3b, 0x01, 0x3d, 0x01, 0x37, 0x01, 0x38, 0x01, + 0x32, 0x01, 0x31, 0x01, 0x29, 0x01, 0x2b, 0x01, 0x24, 0x01, 0x23, 0x01, + 0x18, 0x01, 0x1a, 0x01, 0x12, 0x01, 0x12, 0x01, 0x06, 0x01, 0x06, 0x01, + 0xf9, 0x00, 0xfc, 0x00, 0xf2, 0x00, 0xee, 0x00, 0xe2, 0x00, 0xe4, 0x00, + 0xd5, 0x00, 0xd5, 0x00, 0xc8, 0x00, 0xc8, 0x00, 0xb8, 0x00, 0xb9, 0x00, + 0xaa, 0x00, 0xac, 0x00, 0x9b, 0x00, 0x9b, 0x00, 0x8d, 0x00, 0x8e, 0x00, + 0x7d, 0x00, 0x7e, 0x00, 0x6d, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x62, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x40, 0x00, 0x42, 0x00, 0x32, 0x00, 0x33, 0x00, + 0x23, 0x00, 0x23, 0x00, 0x16, 0x00, 0x18, 0x00, 0x06, 0x00, 0x07, 0x00, + 0xfa, 0xff, 0xfa, 0xff, 0xef, 0xff, 0xee, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xd4, 0xff, 0xd7, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xbd, 0xff, 0xbf, 0xff, + 0xb5, 0xff, 0xb5, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xa0, 0xff, 0xa0, 0xff, + 0x95, 0xff, 0x96, 0xff, 0x8d, 0xff, 0x8c, 0xff, 0x83, 0xff, 0x85, 0xff, + 0x7d, 0xff, 0x7b, 0xff, 0x74, 0xff, 0x74, 0xff, 0x6d, 0xff, 0x6c, 0xff, + 0x66, 0xff, 0x67, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x58, 0xff, 0x58, 0xff, + 0x4e, 0xff, 0x4f, 0xff, 0x49, 0xff, 0x48, 0xff, 0x42, 0xff, 0x43, 0xff, + 0x3a, 0xff, 0x38, 0xff, 0x34, 0xff, 0x34, 0xff, 0x2d, 0xff, 0x2e, 0xff, + 0x27, 0xff, 0x25, 0xff, 0x1f, 0xff, 0x20, 0xff, 0x18, 0xff, 0x18, 0xff, + 0x11, 0xff, 0x11, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x04, 0xff, 0x03, 0xff, + 0xfc, 0xfe, 0xfd, 0xfe, 0xf9, 0xfe, 0xf6, 0xfe, 0xed, 0xfe, 0xef, 0xfe, + 0xec, 0xfe, 0xe8, 0xfe, 0xe3, 0xfe, 0xe5, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, + 0xd8, 0xfe, 0xd9, 0xfe, 0xd2, 0xfe, 0xd3, 0xfe, 0xce, 0xfe, 0xcd, 0xfe, + 0xc8, 0xfe, 0xc9, 0xfe, 0xc6, 0xfe, 0xc4, 0xfe, 0xc1, 0xfe, 0xc2, 0xfe, + 0xbd, 0xfe, 0xbd, 0xfe, 0xbc, 0xfe, 0xbc, 0xfe, 0xb8, 0xfe, 0xb8, 0xfe, + 0xb7, 0xfe, 0xb8, 0xfe, 0xb5, 0xfe, 0xb6, 0xfe, 0xb3, 0xfe, 0xb3, 0xfe, + 0xb4, 0xfe, 0xb5, 0xfe, 0xb5, 0xfe, 0xb3, 0xfe, 0xb3, 0xfe, 0xb5, 0xfe, + 0xb6, 0xfe, 0xb6, 0xfe, 0xb7, 0xfe, 0xb7, 0xfe, 0xba, 0xfe, 0xbb, 0xfe, + 0xba, 0xfe, 0xbc, 0xfe, 0xbe, 0xfe, 0xbf, 0xfe, 0xc0, 0xfe, 0xc2, 0xfe, + 0xc5, 0xfe, 0xc4, 0xfe, 0xc8, 0xfe, 0xc9, 0xfe, 0xcb, 0xfe, 0xcb, 0xfe, + 0xd0, 0xfe, 0xd0, 0xfe, 0xd3, 0xfe, 0xd4, 0xfe, 0xd7, 0xfe, 0xd8, 0xfe, + 0xdd, 0xfe, 0xde, 0xfe, 0xe0, 0xfe, 0xe1, 0xfe, 0xe5, 0xfe, 0xe5, 0xfe, + 0xea, 0xfe, 0xea, 0xfe, 0xed, 0xfe, 0xee, 0xfe, 0xf4, 0xfe, 0xf6, 0xfe, + 0xf9, 0xfe, 0xf7, 0xfe, 0xfc, 0xfe, 0xfe, 0xfe, 0x03, 0xff, 0x04, 0xff, + 0x0a, 0xff, 0x08, 0xff, 0x0e, 0xff, 0x10, 0xff, 0x15, 0xff, 0x13, 0xff, + 0x1a, 0xff, 0x1b, 0xff, 0x20, 0xff, 0x20, 0xff, 0x27, 0xff, 0x28, 0xff, + 0x30, 0xff, 0x30, 0xff, 0x36, 0xff, 0x37, 0xff, 0x40, 0xff, 0x40, 0xff, + 0x46, 0xff, 0x48, 0xff, 0x51, 0xff, 0x51, 0xff, 0x5a, 0xff, 0x5b, 0xff, + 0x62, 0xff, 0x64, 0xff, 0x70, 0xff, 0x6e, 0xff, 0x77, 0xff, 0x7a, 0xff, + 0x87, 0xff, 0x86, 0xff, 0x8f, 0xff, 0x92, 0xff, 0x9f, 0xff, 0xa0, 0xff, + 0xab, 0xff, 0xab, 0xff, 0xba, 0xff, 0xbc, 0xff, 0xc6, 0xff, 0xc7, 0xff, + 0xd7, 0xff, 0xd5, 0xff, 0xe5, 0xff, 0xe7, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0x04, 0x00, 0x04, 0x00, 0x14, 0x00, 0x16, 0x00, 0x26, 0x00, 0x22, 0x00, + 0x34, 0x00, 0x36, 0x00, 0x44, 0x00, 0x45, 0x00, 0x54, 0x00, 0x54, 0x00, + 0x63, 0x00, 0x64, 0x00, 0x73, 0x00, 0x73, 0x00, 0x80, 0x00, 0x81, 0x00, + 0x90, 0x00, 0x8f, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0xab, 0x00, 0xac, 0x00, + 0xb9, 0x00, 0xb9, 0x00, 0xc2, 0x00, 0xc4, 0x00, 0xd0, 0x00, 0xd0, 0x00, + 0xdb, 0x00, 0xdb, 0x00, 0xe3, 0x00, 0xe5, 0x00, 0xee, 0x00, 0xec, 0x00, + 0xf4, 0x00, 0xf6, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x05, 0x01, 0x04, 0x01, + 0x07, 0x01, 0x08, 0x01, 0x0f, 0x01, 0x0e, 0x01, 0x10, 0x01, 0x11, 0x01, + 0x15, 0x01, 0x17, 0x01, 0x19, 0x01, 0x18, 0x01, 0x1b, 0x01, 0x1b, 0x01, + 0x1c, 0x01, 0x1d, 0x01, 0x1e, 0x01, 0x1c, 0x01, 0x1d, 0x01, 0x1e, 0x01, + 0x1d, 0x01, 0x1d, 0x01, 0x1e, 0x01, 0x1e, 0x01, 0x1e, 0x01, 0x1e, 0x01, + 0x1c, 0x01, 0x1c, 0x01, 0x1e, 0x01, 0x1e, 0x01, 0x1a, 0x01, 0x1c, 0x01, + 0x1b, 0x01, 0x19, 0x01, 0x1b, 0x01, 0x1c, 0x01, 0x18, 0x01, 0x19, 0x01, + 0x1b, 0x01, 0x1b, 0x01, 0x17, 0x01, 0x18, 0x01, 0x18, 0x01, 0x18, 0x01, + 0x1a, 0x01, 0x1a, 0x01, 0x17, 0x01, 0x17, 0x01, 0x1b, 0x01, 0x1b, 0x01, + 0x18, 0x01, 0x1a, 0x01, 0x1b, 0x01, 0x1b, 0x01, 0x1a, 0x01, 0x1b, 0x01, + 0x1d, 0x01, 0x1c, 0x01, 0x1e, 0x01, 0x1e, 0x01, 0x1d, 0x01, 0x1e, 0x01, + 0x20, 0x01, 0x21, 0x01, 0x20, 0x01, 0x1d, 0x01, 0x21, 0x01, 0x23, 0x01, + 0x23, 0x01, 0x22, 0x01, 0x21, 0x01, 0x22, 0x01, 0x26, 0x01, 0x25, 0x01, + 0x21, 0x01, 0x22, 0x01, 0x24, 0x01, 0x24, 0x01, 0x23, 0x01, 0x25, 0x01, + 0x22, 0x01, 0x22, 0x01, 0x23, 0x01, 0x23, 0x01, 0x1e, 0x01, 0x1f, 0x01, + 0x1e, 0x01, 0x1d, 0x01, 0x1a, 0x01, 0x1c, 0x01, 0x17, 0x01, 0x15, 0x01, + 0x13, 0x01, 0x16, 0x01, 0x0d, 0x01, 0x0c, 0x01, 0x0a, 0x01, 0x0b, 0x01, + 0x03, 0x01, 0x02, 0x01, 0xfd, 0x00, 0xff, 0x00, 0xf7, 0x00, 0xf6, 0x00, + 0xee, 0x00, 0xef, 0x00, 0xe9, 0x00, 0xe8, 0x00, 0xde, 0x00, 0xde, 0x00, + 0xd7, 0x00, 0xd8, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xc4, 0x00, 0xc5, 0x00, + 0xba, 0x00, 0xbb, 0x00, 0xb3, 0x00, 0xb3, 0x00, 0xa9, 0x00, 0xa9, 0x00, + 0x9d, 0x00, 0x9e, 0x00, 0x93, 0x00, 0x91, 0x00, 0x8a, 0x00, 0x8a, 0x00, + 0x7d, 0x00, 0x7e, 0x00, 0x74, 0x00, 0x74, 0x00, 0x68, 0x00, 0x68, 0x00, + 0x5b, 0x00, 0x5b, 0x00, 0x52, 0x00, 0x53, 0x00, 0x45, 0x00, 0x44, 0x00, + 0x3b, 0x00, 0x3c, 0x00, 0x31, 0x00, 0x31, 0x00, 0x23, 0x00, 0x26, 0x00, + 0x1a, 0x00, 0x1a, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x03, 0x00, 0x03, 0x00, + 0xf6, 0xff, 0xf8, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xde, 0xff, 0xe1, 0xff, + 0xd4, 0xff, 0xd3, 0xff, 0xc5, 0xff, 0xc8, 0xff, 0xba, 0xff, 0xba, 0xff, + 0xaf, 0xff, 0xae, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0x96, 0xff, 0x96, 0xff, + 0x89, 0xff, 0x8b, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0x6e, 0xff, 0x71, 0xff, + 0x64, 0xff, 0x61, 0xff, 0x54, 0xff, 0x57, 0xff, 0x49, 0xff, 0x49, 0xff, + 0x3b, 0xff, 0x3d, 0xff, 0x2e, 0xff, 0x30, 0xff, 0x23, 0xff, 0x23, 0xff, + 0x16, 0xff, 0x18, 0xff, 0x09, 0xff, 0x09, 0xff, 0xfe, 0xfe, 0xff, 0xfe, + 0xf1, 0xfe, 0xf2, 0xfe, 0xe6, 0xfe, 0xe8, 0xfe, 0xdd, 0xfe, 0xdf, 0xfe, + 0xd3, 0xfe, 0xd3, 0xfe, 0xca, 0xfe, 0xcc, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, + 0xb8, 0xfe, 0xb8, 0xfe, 0xb2, 0xfe, 0xb4, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, + 0xa6, 0xfe, 0xa8, 0xfe, 0xa0, 0xfe, 0xa1, 0xfe, 0x9c, 0xfe, 0x9c, 0xfe, + 0x9a, 0xfe, 0x9b, 0xfe, 0x95, 0xfe, 0x96, 0xfe, 0x96, 0xfe, 0x96, 0xfe, + 0x94, 0xfe, 0x94, 0xfe, 0x95, 0xfe, 0x94, 0xfe, 0x96, 0xfe, 0x98, 0xfe, + 0x98, 0xfe, 0x99, 0xfe, 0x9c, 0xfe, 0x9d, 0xfe, 0x9e, 0xfe, 0x9e, 0xfe, + 0xa4, 0xfe, 0xa5, 0xfe, 0xa9, 0xfe, 0xaa, 0xfe, 0xae, 0xfe, 0xae, 0xfe, + 0xb6, 0xfe, 0xb5, 0xfe, 0xb6, 0xfe, 0xb8, 0xfe, 0xc2, 0xfe, 0xc0, 0xfe, + 0xc6, 0xfe, 0xc8, 0xfe, 0xcd, 0xfe, 0xce, 0xfe, 0xd5, 0xfe, 0xd6, 0xfe, + 0xdc, 0xfe, 0xdc, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, 0xec, 0xfe, 0xed, 0xfe, + 0xf2, 0xfe, 0xf1, 0xfe, 0xf9, 0xfe, 0xf9, 0xfe, 0x00, 0xff, 0x01, 0xff, + 0x04, 0xff, 0x05, 0xff, 0x0c, 0xff, 0x0d, 0xff, 0x13, 0xff, 0x12, 0xff, + 0x17, 0xff, 0x19, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0x21, 0xff, 0x23, 0xff, + 0x27, 0xff, 0x27, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x2e, 0xff, 0x2f, 0xff, + 0x34, 0xff, 0x36, 0xff, 0x36, 0xff, 0x35, 0xff, 0x3a, 0xff, 0x3e, 0xff, + 0x40, 0xff, 0x3f, 0xff, 0x41, 0xff, 0x43, 0xff, 0x47, 0xff, 0x46, 0xff, + 0x4a, 0xff, 0x4b, 0xff, 0x4f, 0xff, 0x50, 0xff, 0x53, 0xff, 0x54, 0xff, + 0x59, 0xff, 0x59, 0xff, 0x5d, 0xff, 0x5e, 0xff, 0x63, 0xff, 0x62, 0xff, + 0x69, 0xff, 0x6a, 0xff, 0x6f, 0xff, 0x6e, 0xff, 0x75, 0xff, 0x75, 0xff, + 0x7d, 0xff, 0x7d, 0xff, 0x84, 0xff, 0x85, 0xff, 0x8e, 0xff, 0x8e, 0xff, + 0x97, 0xff, 0x97, 0xff, 0x9f, 0xff, 0xa1, 0xff, 0xab, 0xff, 0xaa, 0xff, + 0xb5, 0xff, 0xb6, 0xff, 0xc0, 0xff, 0xc1, 0xff, 0xcc, 0xff, 0xcd, 0xff, + 0xd8, 0xff, 0xd9, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xf0, 0xff, 0xf1, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0x0b, 0x00, 0x0c, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x34, 0x00, 0x34, 0x00, 0x41, 0x00, 0x42, 0x00, + 0x4d, 0x00, 0x4f, 0x00, 0x5b, 0x00, 0x5a, 0x00, 0x6c, 0x00, 0x6a, 0x00, + 0x74, 0x00, 0x76, 0x00, 0x83, 0x00, 0x83, 0x00, 0x8e, 0x00, 0x91, 0x00, + 0x9c, 0x00, 0x9a, 0x00, 0xa5, 0x00, 0xa8, 0x00, 0xb0, 0x00, 0xb1, 0x00, + 0xbc, 0x00, 0xbd, 0x00, 0xc6, 0x00, 0xc8, 0x00, 0xd0, 0x00, 0xd0, 0x00, + 0xd7, 0x00, 0xdc, 0x00, 0xe3, 0x00, 0xe2, 0x00, 0xe8, 0x00, 0xec, 0x00, + 0xf3, 0x00, 0xf1, 0x00, 0xf8, 0x00, 0xfb, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x08, 0x01, 0x0a, 0x01, 0x10, 0x01, 0x10, 0x01, 0x13, 0x01, 0x15, 0x01, + 0x1b, 0x01, 0x1a, 0x01, 0x1f, 0x01, 0x21, 0x01, 0x24, 0x01, 0x25, 0x01, + 0x29, 0x01, 0x2a, 0x01, 0x2d, 0x01, 0x2f, 0x01, 0x31, 0x01, 0x31, 0x01, + 0x36, 0x01, 0x37, 0x01, 0x39, 0x01, 0x3b, 0x01, 0x3e, 0x01, 0x3e, 0x01, + 0x3f, 0x01, 0x43, 0x01, 0x43, 0x01, 0x42, 0x01, 0x48, 0x01, 0x4a, 0x01, + 0x48, 0x01, 0x47, 0x01, 0x4b, 0x01, 0x4e, 0x01, 0x4d, 0x01, 0x4d, 0x01, + 0x4f, 0x01, 0x4f, 0x01, 0x50, 0x01, 0x52, 0x01, 0x51, 0x01, 0x50, 0x01, + 0x52, 0x01, 0x52, 0x01, 0x50, 0x01, 0x50, 0x01, 0x52, 0x01, 0x52, 0x01, + 0x4f, 0x01, 0x51, 0x01, 0x4f, 0x01, 0x4e, 0x01, 0x4d, 0x01, 0x4d, 0x01, + 0x49, 0x01, 0x49, 0x01, 0x48, 0x01, 0x49, 0x01, 0x44, 0x01, 0x41, 0x01, + 0x3d, 0x01, 0x40, 0x01, 0x3d, 0x01, 0x3b, 0x01, 0x32, 0x01, 0x34, 0x01, + 0x30, 0x01, 0x30, 0x01, 0x28, 0x01, 0x27, 0x01, 0x21, 0x01, 0x22, 0x01, + 0x1a, 0x01, 0x1a, 0x01, 0x11, 0x01, 0x10, 0x01, 0x08, 0x01, 0x0b, 0x01, + 0x01, 0x01, 0xff, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0xf1, 0x00, 0xf0, 0x00, + 0xe4, 0x00, 0xe3, 0x00, 0xdb, 0x00, 0xdd, 0x00, 0xd2, 0x00, 0xd0, 0x00, + 0xc7, 0x00, 0xc9, 0x00, 0xbd, 0x00, 0xbd, 0x00, 0xb3, 0x00, 0xb3, 0x00, + 0xaa, 0x00, 0xab, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0x98, 0x00, 0x9a, 0x00, + 0x8e, 0x00, 0x8e, 0x00, 0x87, 0x00, 0x87, 0x00, 0x7d, 0x00, 0x7e, 0x00, + 0x75, 0x00, 0x75, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x65, 0x00, 0x63, 0x00, + 0x5f, 0x00, 0x60, 0x00, 0x56, 0x00, 0x55, 0x00, 0x50, 0x00, 0x4f, 0x00, + 0x48, 0x00, 0x49, 0x00, 0x44, 0x00, 0x42, 0x00, 0x3b, 0x00, 0x3b, 0x00, + 0x35, 0x00, 0x36, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x28, 0x00, 0x29, 0x00, + 0x22, 0x00, 0x21, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x15, 0x00, 0x17, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x02, 0x00, + 0xf9, 0xff, 0xfa, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xe6, 0xff, 0xe8, 0xff, + 0xe0, 0xff, 0xe0, 0xff, 0xd4, 0xff, 0xd5, 0xff, 0xcc, 0xff, 0xcc, 0xff, + 0xc0, 0xff, 0xc4, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0xab, 0xff, 0xac, 0xff, + 0x9f, 0xff, 0xa2, 0xff, 0x94, 0xff, 0x93, 0xff, 0x86, 0xff, 0x89, 0xff, + 0x79, 0xff, 0x78, 0xff, 0x6d, 0xff, 0x6e, 0xff, 0x5e, 0xff, 0x5f, 0xff, + 0x4f, 0xff, 0x4f, 0xff, 0x44, 0xff, 0x44, 0xff, 0x32, 0xff, 0x34, 0xff, + 0x2a, 0xff, 0x28, 0xff, 0x15, 0xff, 0x18, 0xff, 0x0d, 0xff, 0x0b, 0xff, + 0xfd, 0xfe, 0x00, 0xff, 0xf3, 0xfe, 0xf0, 0xfe, 0xe5, 0xfe, 0xe8, 0xfe, + 0xd7, 0xfe, 0xd8, 0xfe, 0xd1, 0xfe, 0xd1, 0xfe, 0xc2, 0xfe, 0xc3, 0xfe, + 0xbb, 0xfe, 0xbb, 0xfe, 0xb1, 0xfe, 0xb0, 0xfe, 0xa8, 0xfe, 0xab, 0xfe, + 0xa4, 0xfe, 0xa0, 0xfe, 0x99, 0xfe, 0x9c, 0xfe, 0x98, 0xfe, 0x97, 0xfe, + 0x90, 0xfe, 0x90, 0xfe, 0x8d, 0xfe, 0x8f, 0xfe, 0x8a, 0xfe, 0x89, 0xfe, + 0x8b, 0xfe, 0x8b, 0xfe, 0x88, 0xfe, 0x89, 0xfe, 0x89, 0xfe, 0x88, 0xfe, + 0x8a, 0xfe, 0x8b, 0xfe, 0x8a, 0xfe, 0x8a, 0xfe, 0x8f, 0xfe, 0x8e, 0xfe, + 0x91, 0xfe, 0x93, 0xfe, 0x95, 0xfe, 0x94, 0xfe, 0x9a, 0xfe, 0x9c, 0xfe, + 0xa0, 0xfe, 0x9f, 0xfe, 0xa4, 0xfe, 0xa4, 0xfe, 0xab, 0xfe, 0xac, 0xfe, + 0xb0, 0xfe, 0xb0, 0xfe, 0xb8, 0xfe, 0xb9, 0xfe, 0xbf, 0xfe, 0xc0, 0xfe, + 0xc4, 0xfe, 0xc6, 0xfe, 0xce, 0xfe, 0xce, 0xfe, 0xd4, 0xfe, 0xd5, 0xfe, + 0xdd, 0xfe, 0xdc, 0xfe, 0xe3, 0xfe, 0xe5, 0xfe, 0xeb, 0xfe, 0xea, 0xfe, + 0xf2, 0xfe, 0xf3, 0xfe, 0xf8, 0xfe, 0xfa, 0xfe, 0x04, 0xff, 0x02, 0xff, + 0x0a, 0xff, 0x0c, 0xff, 0x13, 0xff, 0x12, 0xff, 0x1a, 0xff, 0x1c, 0xff, + 0x23, 0xff, 0x21, 0xff, 0x2a, 0xff, 0x2c, 0xff, 0x32, 0xff, 0x31, 0xff, + 0x3a, 0xff, 0x3b, 0xff, 0x42, 0xff, 0x42, 0xff, 0x49, 0xff, 0x49, 0xff, + 0x52, 0xff, 0x53, 0xff, 0x58, 0xff, 0x57, 0xff, 0x62, 0xff, 0x64, 0xff, + 0x6a, 0xff, 0x69, 0xff, 0x73, 0xff, 0x74, 0xff, 0x7d, 0xff, 0x7c, 0xff, + 0x83, 0xff, 0x84, 0xff, 0x91, 0xff, 0x90, 0xff, 0x96, 0xff, 0x97, 0xff, + 0xa3, 0xff, 0xa2, 0xff, 0xad, 0xff, 0xae, 0xff, 0xb6, 0xff, 0xb6, 0xff, + 0xbf, 0xff, 0xc0, 0xff, 0xcc, 0xff, 0xcb, 0xff, 0xd3, 0xff, 0xd4, 0xff, + 0xdf, 0xff, 0xdf, 0xff, 0xea, 0xff, 0xea, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x08, 0x00, 0x07, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x24, 0x00, 0x25, 0x00, 0x2e, 0x00, 0x2f, 0x00, + 0x38, 0x00, 0x37, 0x00, 0x41, 0x00, 0x41, 0x00, 0x49, 0x00, 0x4a, 0x00, + 0x52, 0x00, 0x52, 0x00, 0x59, 0x00, 0x5b, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x68, 0x00, 0x69, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x76, 0x00, 0x76, 0x00, + 0x7b, 0x00, 0x7d, 0x00, 0x83, 0x00, 0x82, 0x00, 0x88, 0x00, 0x88, 0x00, + 0x8e, 0x00, 0x8e, 0x00, 0x93, 0x00, 0x95, 0x00, 0x9a, 0x00, 0x9b, 0x00, + 0x9e, 0x00, 0x9f, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xab, 0x00, 0xa9, 0x00, + 0xad, 0x00, 0xb1, 0x00, 0xb5, 0x00, 0xb2, 0x00, 0xb8, 0x00, 0xbd, 0x00, + 0xc3, 0x00, 0xbf, 0x00, 0xc3, 0x00, 0xc7, 0x00, 0xcf, 0x00, 0xce, 0x00, + 0xd1, 0x00, 0xd2, 0x00, 0xdc, 0x00, 0xdc, 0x00, 0xe0, 0x00, 0xe0, 0x00, + 0xea, 0x00, 0xeb, 0x00, 0xf3, 0x00, 0xf0, 0x00, 0xf8, 0x00, 0xfa, 0x00, + 0x02, 0x01, 0x01, 0x01, 0x07, 0x01, 0x08, 0x01, 0x11, 0x01, 0x12, 0x01, + 0x1a, 0x01, 0x18, 0x01, 0x20, 0x01, 0x24, 0x01, 0x2c, 0x01, 0x2a, 0x01, + 0x34, 0x01, 0x34, 0x01, 0x3c, 0x01, 0x3c, 0x01, 0x45, 0x01, 0x44, 0x01, + 0x4c, 0x01, 0x4e, 0x01, 0x54, 0x01, 0x52, 0x01, 0x5a, 0x01, 0x5c, 0x01, + 0x5f, 0x01, 0x5f, 0x01, 0x66, 0x01, 0x69, 0x01, 0x6b, 0x01, 0x6a, 0x01, + 0x6e, 0x01, 0x6f, 0x01, 0x73, 0x01, 0x73, 0x01, 0x75, 0x01, 0x74, 0x01, + 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x76, 0x01, 0x77, 0x01, 0x77, 0x01, + 0x74, 0x01, 0x76, 0x01, 0x73, 0x01, 0x71, 0x01, 0x6d, 0x01, 0x6f, 0x01, + 0x69, 0x01, 0x68, 0x01, 0x64, 0x01, 0x64, 0x01, 0x5d, 0x01, 0x5f, 0x01, + 0x57, 0x01, 0x56, 0x01, 0x4d, 0x01, 0x4f, 0x01, 0x45, 0x01, 0x44, 0x01, + 0x39, 0x01, 0x3a, 0x01, 0x31, 0x01, 0x31, 0x01, 0x23, 0x01, 0x24, 0x01, + 0x19, 0x01, 0x19, 0x01, 0x0c, 0x01, 0x0c, 0x01, 0xff, 0x00, 0xff, 0x00, + 0xf3, 0x00, 0xf3, 0x00, 0xe4, 0x00, 0xe5, 0x00, 0xd8, 0x00, 0xd7, 0x00, + 0xc9, 0x00, 0xca, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xaf, 0x00, 0xae, 0x00, + 0xa0, 0x00, 0xa2, 0x00, 0x96, 0x00, 0x94, 0x00, 0x86, 0x00, 0x88, 0x00, + 0x7c, 0x00, 0x7b, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x64, 0x00, 0x64, 0x00, + 0x58, 0x00, 0x59, 0x00, 0x4d, 0x00, 0x4c, 0x00, 0x44, 0x00, 0x43, 0x00, + 0x38, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x25, 0x00, 0x26, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x13, 0x00, 0x13, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x02, 0x00, 0x03, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xf1, 0xff, 0xf2, 0xff, + 0xeb, 0xff, 0xec, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xdb, 0xff, 0xdd, 0xff, + 0xd4, 0xff, 0xd2, 0xff, 0xca, 0xff, 0xcc, 0xff, 0xc4, 0xff, 0xc3, 0xff, + 0xbb, 0xff, 0xbb, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xa8, 0xff, 0xaa, 0xff, + 0xa3, 0xff, 0xa3, 0xff, 0x97, 0xff, 0x98, 0xff, 0x90, 0xff, 0x91, 0xff, + 0x86, 0xff, 0x86, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x73, 0xff, 0x74, 0xff, + 0x6d, 0xff, 0x6a, 0xff, 0x5f, 0xff, 0x61, 0xff, 0x59, 0xff, 0x57, 0xff, + 0x4e, 0xff, 0x4e, 0xff, 0x44, 0xff, 0x45, 0xff, 0x3d, 0xff, 0x3b, 0xff, + 0x30, 0xff, 0x32, 0xff, 0x2a, 0xff, 0x28, 0xff, 0x1e, 0xff, 0x21, 0xff, + 0x18, 0xff, 0x16, 0xff, 0x10, 0xff, 0x10, 0xff, 0x07, 0xff, 0x06, 0xff, + 0x02, 0xff, 0x01, 0xff, 0xf8, 0xfe, 0xf9, 0xfe, 0xf2, 0xfe, 0xf2, 0xfe, + 0xeb, 0xfe, 0xeb, 0xfe, 0xe4, 0xfe, 0xe5, 0xfe, 0xe3, 0xfe, 0xe0, 0xfe, + 0xd9, 0xfe, 0xdb, 0xfe, 0xd9, 0xfe, 0xd6, 0xfe, 0xd1, 0xfe, 0xd4, 0xfe, + 0xd2, 0xfe, 0xd1, 0xfe, 0xcc, 0xfe, 0xcc, 0xfe, 0xcb, 0xfe, 0xcb, 0xfe, + 0xc8, 0xfe, 0xc7, 0xfe, 0xc5, 0xfe, 0xc6, 0xfe, 0xc4, 0xfe, 0xc5, 0xfe, + 0xc2, 0xfe, 0xc2, 0xfe, 0xc0, 0xfe, 0xc1, 0xfe, 0xc0, 0xfe, 0xc1, 0xfe, + 0xc1, 0xfe, 0xc1, 0xfe, 0xc0, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc0, 0xfe, + 0xc0, 0xfe, 0xc1, 0xfe, 0xbf, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc0, 0xfe, + 0xc2, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, 0xc4, 0xfe, 0xc3, 0xfe, + 0xc1, 0xfe, 0xc4, 0xfe, 0xc6, 0xfe, 0xc4, 0xfe, 0xc5, 0xfe, 0xc7, 0xfe, + 0xc8, 0xfe, 0xc8, 0xfe, 0xc7, 0xfe, 0xc8, 0xfe, 0xcb, 0xfe, 0xcb, 0xfe, + 0xcb, 0xfe, 0xcd, 0xfe, 0xd0, 0xfe, 0xd1, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, + 0xd6, 0xfe, 0xd6, 0xfe, 0xda, 0xfe, 0xdb, 0xfe, 0xde, 0xfe, 0xde, 0xfe, + 0xe4, 0xfe, 0xe4, 0xfe, 0xe6, 0xfe, 0xe9, 0xfe, 0xf0, 0xfe, 0xef, 0xfe, + 0xf6, 0xfe, 0xf9, 0xfe, 0xfc, 0xfe, 0xfb, 0xfe, 0x05, 0xff, 0x08, 0xff, + 0x0d, 0xff, 0x0d, 0xff, 0x17, 0xff, 0x18, 0xff, 0x24, 0xff, 0x24, 0xff, + 0x2b, 0xff, 0x2c, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x44, 0xff, 0x45, 0xff, + 0x51, 0xff, 0x52, 0xff, 0x61, 0xff, 0x61, 0xff, 0x6c, 0xff, 0x6d, 0xff, + 0x7b, 0xff, 0x7d, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x9a, 0xff, 0x9a, 0xff, + 0xa9, 0xff, 0xaa, 0xff, 0xb8, 0xff, 0xb9, 0xff, 0xc7, 0xff, 0xca, 0xff, + 0xd8, 0xff, 0xd9, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x14, 0x00, 0x23, 0x00, 0x24, 0x00, + 0x2f, 0x00, 0x2f, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x49, 0x00, 0x4a, 0x00, + 0x55, 0x00, 0x54, 0x00, 0x60, 0x00, 0x61, 0x00, 0x6b, 0x00, 0x6c, 0x00, + 0x74, 0x00, 0x75, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x89, 0x00, 0x88, 0x00, + 0x8f, 0x00, 0x8f, 0x00, 0x97, 0x00, 0x97, 0x00, 0x9c, 0x00, 0x9e, 0x00, + 0xa1, 0x00, 0xa2, 0x00, 0xa7, 0x00, 0xa9, 0x00, 0xab, 0x00, 0xab, 0x00, + 0xb0, 0x00, 0xb0, 0x00, 0xb2, 0x00, 0xb5, 0x00, 0xb8, 0x00, 0xb6, 0x00, + 0xb7, 0x00, 0xba, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xbd, 0x00, + 0xc1, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc3, 0x00, 0xc7, 0x00, 0xc7, 0x00, + 0xc7, 0x00, 0xca, 0x00, 0xcc, 0x00, 0xc9, 0x00, 0xcd, 0x00, 0xd0, 0x00, + 0xd0, 0x00, 0xd0, 0x00, 0xd6, 0x00, 0xd5, 0x00, 0xd9, 0x00, 0xd9, 0x00, + 0xdb, 0x00, 0xdc, 0x00, 0xe3, 0x00, 0xe3, 0x00, 0xe5, 0x00, 0xe6, 0x00, + 0xed, 0x00, 0xed, 0x00, 0xf0, 0x00, 0xf1, 0x00, 0xf7, 0x00, 0xf8, 0x00, + 0xfe, 0x00, 0xfd, 0x00, 0x03, 0x01, 0x04, 0x01, 0x09, 0x01, 0x0a, 0x01, + 0x0f, 0x01, 0x0f, 0x01, 0x16, 0x01, 0x17, 0x01, 0x1c, 0x01, 0x1c, 0x01, + 0x23, 0x01, 0x23, 0x01, 0x2a, 0x01, 0x2b, 0x01, 0x2e, 0x01, 0x2f, 0x01, + 0x36, 0x01, 0x36, 0x01, 0x3a, 0x01, 0x3a, 0x01, 0x3f, 0x01, 0x3f, 0x01, + 0x44, 0x01, 0x43, 0x01, 0x47, 0x01, 0x48, 0x01, 0x4b, 0x01, 0x4a, 0x01, + 0x4e, 0x01, 0x4f, 0x01, 0x4f, 0x01, 0x4e, 0x01, 0x52, 0x01, 0x53, 0x01, + 0x51, 0x01, 0x50, 0x01, 0x52, 0x01, 0x53, 0x01, 0x51, 0x01, 0x51, 0x01, + 0x4f, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x4f, 0x01, 0x4b, 0x01, 0x4b, 0x01, + 0x48, 0x01, 0x47, 0x01, 0x43, 0x01, 0x44, 0x01, 0x3e, 0x01, 0x3e, 0x01, + 0x39, 0x01, 0x39, 0x01, 0x32, 0x01, 0x32, 0x01, 0x2e, 0x01, 0x2e, 0x01, + 0x25, 0x01, 0x26, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x18, 0x01, 0x18, 0x01, + 0x0f, 0x01, 0x0f, 0x01, 0x06, 0x01, 0x05, 0x01, 0xff, 0x00, 0x00, 0x01, + 0xf3, 0x00, 0xf3, 0x00, 0xed, 0x00, 0xec, 0x00, 0xe1, 0x00, 0xe2, 0x00, + 0xd9, 0x00, 0xd9, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xc4, 0x00, 0xc4, 0x00, + 0xbc, 0x00, 0xba, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xa5, 0x00, 0xa6, 0x00, + 0x9d, 0x00, 0x9c, 0x00, 0x91, 0x00, 0x93, 0x00, 0x87, 0x00, 0x86, 0x00, + 0x7a, 0x00, 0x7b, 0x00, 0x6f, 0x00, 0x71, 0x00, 0x66, 0x00, 0x63, 0x00, + 0x59, 0x00, 0x5b, 0x00, 0x4e, 0x00, 0x4c, 0x00, 0x40, 0x00, 0x41, 0x00, + 0x36, 0x00, 0x35, 0x00, 0x26, 0x00, 0x29, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0xf3, 0xff, + 0xe4, 0xff, 0xe4, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xc9, 0xff, 0xc9, 0xff, + 0xb9, 0xff, 0xb9, 0xff, 0xac, 0xff, 0xac, 0xff, 0x9e, 0xff, 0x9e, 0xff, + 0x8f, 0xff, 0x8f, 0xff, 0x81, 0xff, 0x81, 0xff, 0x70, 0xff, 0x71, 0xff, + 0x65, 0xff, 0x66, 0xff, 0x56, 0xff, 0x56, 0xff, 0x48, 0xff, 0x48, 0xff, + 0x39, 0xff, 0x3a, 0xff, 0x2e, 0xff, 0x2d, 0xff, 0x21, 0xff, 0x23, 0xff, + 0x16, 0xff, 0x16, 0xff, 0x0d, 0xff, 0x0c, 0xff, 0x01, 0xff, 0x03, 0xff, + 0xfa, 0xfe, 0xf8, 0xfe, 0xef, 0xfe, 0xf1, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, + 0xe2, 0xfe, 0xe2, 0xfe, 0xda, 0xfe, 0xdc, 0xfe, 0xd7, 0xfe, 0xd8, 0xfe, + 0xd1, 0xfe, 0xd0, 0xfe, 0xce, 0xfe, 0xcf, 0xfe, 0xca, 0xfe, 0xc9, 0xfe, + 0xc9, 0xfe, 0xc9, 0xfe, 0xc6, 0xfe, 0xc7, 0xfe, 0xc5, 0xfe, 0xc5, 0xfe, + 0xc8, 0xfe, 0xc8, 0xfe, 0xc7, 0xfe, 0xc8, 0xfe, 0xcb, 0xfe, 0xc8, 0xfe, + 0xca, 0xfe, 0xcb, 0xfe, 0xcf, 0xfe, 0xcd, 0xfe, 0xcf, 0xfe, 0xd0, 0xfe, + 0xd5, 0xfe, 0xd3, 0xfe, 0xd4, 0xfe, 0xd4, 0xfe, 0xdb, 0xfe, 0xd9, 0xfe, + 0xdb, 0xfe, 0xdd, 0xfe, 0xe0, 0xfe, 0xdd, 0xfe, 0xe4, 0xfe, 0xe3, 0xfe, + 0xe5, 0xfe, 0xe5, 0xfe, 0xea, 0xfe, 0xe8, 0xfe, 0xeb, 0xfe, 0xeb, 0xfe, + 0xee, 0xfe, 0xed, 0xfe, 0xf3, 0xfe, 0xf1, 0xfe, 0xf3, 0xfe, 0xf3, 0xfe, + 0xf2, 0xfe, 0xf4, 0xfe, 0xf7, 0xfe, 0xf4, 0xfe, 0xf5, 0xfe, 0xf7, 0xfe, + 0xf7, 0xfe, 0xf5, 0xfe, 0xf6, 0xfe, 0xf7, 0xfe, 0xf7, 0xfe, 0xf6, 0xfe, + 0xf6, 0xfe, 0xf5, 0xfe, 0xf8, 0xfe, 0xf8, 0xfe, 0xf5, 0xfe, 0xf6, 0xfe, + 0xf7, 0xfe, 0xf5, 0xfe, 0xf7, 0xfe, 0xf8, 0xfe, 0xf8, 0xfe, 0xf5, 0xfe, + 0xf7, 0xfe, 0xf8, 0xfe, 0xf7, 0xfe, 0xf6, 0xfe, 0xf7, 0xfe, 0xf8, 0xfe, + 0xf9, 0xfe, 0xf8, 0xfe, 0xf9, 0xfe, 0xf9, 0xfe, 0xfc, 0xfe, 0xfd, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfe, 0x02, 0xff, 0x02, 0xff, 0x05, 0xff, 0x06, 0xff, + 0x0b, 0xff, 0x0a, 0xff, 0x10, 0xff, 0x12, 0xff, 0x17, 0xff, 0x16, 0xff, + 0x1b, 0xff, 0x1d, 0xff, 0x25, 0xff, 0x26, 0xff, 0x2d, 0xff, 0x2d, 0xff, + 0x36, 0xff, 0x36, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x49, 0xff, 0x49, 0xff, + 0x54, 0xff, 0x55, 0xff, 0x61, 0xff, 0x60, 0xff, 0x6b, 0xff, 0x6b, 0xff, + 0x78, 0xff, 0x79, 0xff, 0x85, 0xff, 0x84, 0xff, 0x93, 0xff, 0x93, 0xff, + 0xa0, 0xff, 0xa1, 0xff, 0xad, 0xff, 0xac, 0xff, 0xbc, 0xff, 0xbd, 0xff, + 0xca, 0xff, 0xc8, 0xff, 0xd7, 0xff, 0xd9, 0xff, 0xe8, 0xff, 0xe6, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0x01, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x28, 0x00, 0x28, 0x00, 0x35, 0x00, 0x35, 0x00, + 0x41, 0x00, 0x40, 0x00, 0x4b, 0x00, 0x4e, 0x00, 0x5b, 0x00, 0x5a, 0x00, + 0x64, 0x00, 0x63, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x78, 0x00, 0x79, 0x00, + 0x84, 0x00, 0x84, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x97, 0x00, 0x98, 0x00, + 0xa1, 0x00, 0xa0, 0x00, 0xa8, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0xb2, 0x00, + 0xbb, 0x00, 0xbc, 0x00, 0xc4, 0x00, 0xc2, 0x00, 0xcb, 0x00, 0xcd, 0x00, + 0xd2, 0x00, 0xd2, 0x00, 0xda, 0x00, 0xdc, 0x00, 0xe1, 0x00, 0xe3, 0x00, + 0xe9, 0x00, 0xe7, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0xf8, 0x00, 0xf8, 0x00, + 0xff, 0x00, 0x00, 0x01, 0x06, 0x01, 0x06, 0x01, 0x0c, 0x01, 0x0d, 0x01, + 0x14, 0x01, 0x14, 0x01, 0x16, 0x01, 0x19, 0x01, 0x22, 0x01, 0x21, 0x01, + 0x25, 0x01, 0x27, 0x01, 0x2c, 0x01, 0x2b, 0x01, 0x30, 0x01, 0x31, 0x01, + 0x37, 0x01, 0x37, 0x01, 0x39, 0x01, 0x3a, 0x01, 0x3f, 0x01, 0x40, 0x01, + 0x42, 0x01, 0x42, 0x01, 0x45, 0x01, 0x46, 0x01, 0x4a, 0x01, 0x4a, 0x01, + 0x4a, 0x01, 0x4b, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x4e, 0x01, + 0x4e, 0x01, 0x4f, 0x01, 0x4f, 0x01, 0x4f, 0x01, 0x4e, 0x01, 0x4e, 0x01, + 0x4c, 0x01, 0x4d, 0x01, 0x4b, 0x01, 0x4a, 0x01, 0x49, 0x01, 0x4a, 0x01, + 0x45, 0x01, 0x46, 0x01, 0x43, 0x01, 0x42, 0x01, 0x3d, 0x01, 0x3f, 0x01, + 0x39, 0x01, 0x3a, 0x01, 0x35, 0x01, 0x36, 0x01, 0x2f, 0x01, 0x31, 0x01, + 0x29, 0x01, 0x29, 0x01, 0x24, 0x01, 0x25, 0x01, 0x1c, 0x01, 0x1d, 0x01, + 0x18, 0x01, 0x18, 0x01, 0x10, 0x01, 0x12, 0x01, 0x0b, 0x01, 0x0a, 0x01, + 0x03, 0x01, 0x05, 0x01, 0xfc, 0x00, 0xfc, 0x00, 0xf7, 0x00, 0xf8, 0x00, + 0xf0, 0x00, 0xef, 0x00, 0xea, 0x00, 0xeb, 0x00, 0xe2, 0x00, 0xe3, 0x00, + 0xdc, 0x00, 0xdd, 0x00, 0xd8, 0x00, 0xd8, 0x00, 0xd1, 0x00, 0xd2, 0x00, + 0xcc, 0x00, 0xcc, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc0, 0x00, 0xc1, 0x00, + 0xbb, 0x00, 0xbb, 0x00, 0xb7, 0x00, 0xb6, 0x00, 0xb1, 0x00, 0xb2, 0x00, + 0xab, 0x00, 0xab, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa1, 0x00, 0xa2, 0x00, + 0x9c, 0x00, 0x9a, 0x00, 0x97, 0x00, 0x99, 0x00, 0x91, 0x00, 0x91, 0x00, + 0x8b, 0x00, 0x8b, 0x00, 0x86, 0x00, 0x85, 0x00, 0x7c, 0x00, 0x7e, 0x00, + 0x79, 0x00, 0x79, 0x00, 0x6d, 0x00, 0x6f, 0x00, 0x68, 0x00, 0x68, 0x00, + 0x5d, 0x00, 0x5c, 0x00, 0x53, 0x00, 0x55, 0x00, 0x4c, 0x00, 0x49, 0x00, + 0x3d, 0x00, 0x3e, 0x00, 0x35, 0x00, 0x35, 0x00, 0x27, 0x00, 0x26, 0x00, + 0x1b, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xd4, 0xff, 0xd5, 0xff, + 0xc2, 0xff, 0xc4, 0xff, 0xb5, 0xff, 0xb4, 0xff, 0xa3, 0xff, 0xa5, 0xff, + 0x94, 0xff, 0x92, 0xff, 0x83, 0xff, 0x85, 0xff, 0x73, 0xff, 0x73, 0xff, + 0x63, 0xff, 0x63, 0xff, 0x54, 0xff, 0x54, 0xff, 0x43, 0xff, 0x44, 0xff, + 0x35, 0xff, 0x34, 0xff, 0x27, 0xff, 0x29, 0xff, 0x18, 0xff, 0x18, 0xff, + 0x0d, 0xff, 0x0d, 0xff, 0xff, 0xfe, 0x00, 0xff, 0xf4, 0xfe, 0xf4, 0xfe, + 0xe8, 0xfe, 0xe9, 0xfe, 0xe0, 0xfe, 0xdf, 0xfe, 0xd5, 0xfe, 0xd6, 0xfe, + 0xcc, 0xfe, 0xcd, 0xfe, 0xc7, 0xfe, 0xc4, 0xfe, 0xbe, 0xfe, 0xc1, 0xfe, + 0xb9, 0xfe, 0xb9, 0xfe, 0xb3, 0xfe, 0xb3, 0xfe, 0xaf, 0xfe, 0xb2, 0xfe, + 0xad, 0xfe, 0xad, 0xfe, 0xaa, 0xfe, 0xab, 0xfe, 0xa9, 0xfe, 0xaa, 0xfe, + 0xa8, 0xfe, 0xa7, 0xfe, 0xa8, 0xfe, 0xaa, 0xfe, 0xa7, 0xfe, 0xa8, 0xfe, + 0xa9, 0xfe, 0xac, 0xfe, 0xa9, 0xfe, 0xaa, 0xfe, 0xad, 0xfe, 0xaf, 0xfe, + 0xaf, 0xfe, 0xaf, 0xfe, 0xb1, 0xfe, 0xb4, 0xfe, 0xb7, 0xfe, 0xb7, 0xfe, + 0xb6, 0xfe, 0xb9, 0xfe, 0xbd, 0xfe, 0xbd, 0xfe, 0xbf, 0xfe, 0xc0, 0xfe, + 0xc3, 0xfe, 0xc2, 0xfe, 0xc7, 0xfe, 0xc8, 0xfe, 0xcb, 0xfe, 0xca, 0xfe, + 0xcf, 0xfe, 0xd0, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, + 0xdb, 0xfe, 0xdb, 0xfe, 0xde, 0xfe, 0xde, 0xfe, 0xe2, 0xfe, 0xe3, 0xfe, + 0xe7, 0xfe, 0xe8, 0xfe, 0xeb, 0xfe, 0xec, 0xfe, 0xf0, 0xfe, 0xef, 0xfe, + 0xf3, 0xfe, 0xf6, 0xfe, 0xf9, 0xfe, 0xf9, 0xfe, 0xfb, 0xfe, 0xfd, 0xfe, + 0x02, 0xff, 0x02, 0xff, 0x07, 0xff, 0x08, 0xff, 0x0c, 0xff, 0x0d, 0xff, + 0x12, 0xff, 0x12, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1e, 0xff, 0x20, 0xff, + 0x24, 0xff, 0x24, 0xff, 0x2c, 0xff, 0x2e, 0xff, 0x33, 0xff, 0x33, 0xff, + 0x3b, 0xff, 0x3b, 0xff, 0x41, 0xff, 0x44, 0xff, 0x4a, 0xff, 0x4b, 0xff, + 0x52, 0xff, 0x53, 0xff, 0x5c, 0xff, 0x5d, 0xff, 0x62, 0xff, 0x63, 0xff, + 0x6c, 0xff, 0x6e, 0xff, 0x74, 0xff, 0x74, 0xff, 0x7e, 0xff, 0x7f, 0xff, + 0x86, 0xff, 0x87, 0xff, 0x90, 0xff, 0x90, 0xff, 0x98, 0xff, 0x98, 0xff, + 0xa2, 0xff, 0xa3, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xb3, 0xff, 0xb3, 0xff, + 0xbb, 0xff, 0xbd, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xcf, 0xff, 0xd0, 0xff, + 0xd5, 0xff, 0xd5, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0x05, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x1b, 0x00, 0x1b, 0x00, 0x20, 0x00, 0x23, 0x00, 0x29, 0x00, 0x28, 0x00, + 0x2f, 0x00, 0x32, 0x00, 0x37, 0x00, 0x37, 0x00, 0x3c, 0x00, 0x3e, 0x00, + 0x47, 0x00, 0x46, 0x00, 0x4d, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x55, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x66, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x6f, 0x00, + 0x79, 0x00, 0x78, 0x00, 0x7f, 0x00, 0x81, 0x00, 0x8e, 0x00, 0x8b, 0x00, + 0x92, 0x00, 0x96, 0x00, 0xa2, 0x00, 0xa0, 0x00, 0xa8, 0x00, 0xaa, 0x00, + 0xb6, 0x00, 0xb6, 0x00, 0xc1, 0x00, 0xc0, 0x00, 0xcb, 0x00, 0xcd, 0x00, + 0xd9, 0x00, 0xd7, 0x00, 0xe1, 0x00, 0xe3, 0x00, 0xf0, 0x00, 0xef, 0x00, + 0xfa, 0x00, 0xfb, 0x00, 0x06, 0x01, 0x06, 0x01, 0x13, 0x01, 0x14, 0x01, + 0x1e, 0x01, 0x1e, 0x01, 0x2a, 0x01, 0x2b, 0x01, 0x32, 0x01, 0x33, 0x01, + 0x3f, 0x01, 0x3e, 0x01, 0x47, 0x01, 0x48, 0x01, 0x51, 0x01, 0x51, 0x01, + 0x59, 0x01, 0x5b, 0x01, 0x61, 0x01, 0x61, 0x01, 0x66, 0x01, 0x68, 0x01, + 0x6e, 0x01, 0x6d, 0x01, 0x72, 0x01, 0x73, 0x01, 0x77, 0x01, 0x76, 0x01, + 0x79, 0x01, 0x79, 0x01, 0x7b, 0x01, 0x7b, 0x01, 0x7d, 0x01, 0x7d, 0x01, + 0x7e, 0x01, 0x7c, 0x01, 0x7b, 0x01, 0x7d, 0x01, 0x7a, 0x01, 0x79, 0x01, + 0x77, 0x01, 0x79, 0x01, 0x75, 0x01, 0x74, 0x01, 0x70, 0x01, 0x6f, 0x01, + 0x6a, 0x01, 0x6b, 0x01, 0x63, 0x01, 0x62, 0x01, 0x5c, 0x01, 0x5e, 0x01, + 0x56, 0x01, 0x55, 0x01, 0x4c, 0x01, 0x4d, 0x01, 0x46, 0x01, 0x45, 0x01, + 0x39, 0x01, 0x3a, 0x01, 0x33, 0x01, 0x32, 0x01, 0x26, 0x01, 0x28, 0x01, + 0x1e, 0x01, 0x1f, 0x01, 0x15, 0x01, 0x16, 0x01, 0x08, 0x01, 0x08, 0x01, + 0x00, 0x01, 0x00, 0x01, 0xf3, 0x00, 0xf5, 0x00, 0xed, 0x00, 0xec, 0x00, + 0xde, 0x00, 0xe1, 0x00, 0xd7, 0x00, 0xd6, 0x00, 0xce, 0x00, 0xce, 0x00, + 0xc2, 0x00, 0xc4, 0x00, 0xbc, 0x00, 0xba, 0x00, 0xb0, 0x00, 0xb1, 0x00, + 0xa8, 0x00, 0xa8, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0x97, 0x00, 0x98, 0x00, + 0x90, 0x00, 0x8d, 0x00, 0x86, 0x00, 0x89, 0x00, 0x7f, 0x00, 0x7d, 0x00, + 0x77, 0x00, 0x77, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x67, 0x00, 0x66, 0x00, + 0x62, 0x00, 0x61, 0x00, 0x55, 0x00, 0x57, 0x00, 0x52, 0x00, 0x50, 0x00, + 0x46, 0x00, 0x47, 0x00, 0x40, 0x00, 0x3f, 0x00, 0x38, 0x00, 0x37, 0x00, + 0x2e, 0x00, 0x2f, 0x00, 0x28, 0x00, 0x24, 0x00, 0x1d, 0x00, 0x21, 0x00, + 0x14, 0x00, 0x12, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xf9, 0xff, 0xf9, 0xff, 0xee, 0xff, 0xee, 0xff, 0xe3, 0xff, 0xe4, 0xff, + 0xda, 0xff, 0xda, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xc5, 0xff, 0xc5, 0xff, + 0xb8, 0xff, 0xb9, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xa3, 0xff, 0xa4, 0xff, + 0x99, 0xff, 0x98, 0xff, 0x8c, 0xff, 0x8f, 0xff, 0x84, 0xff, 0x83, 0xff, + 0x78, 0xff, 0x7a, 0xff, 0x6f, 0xff, 0x6e, 0xff, 0x66, 0xff, 0x66, 0xff, + 0x5c, 0xff, 0x5b, 0xff, 0x51, 0xff, 0x52, 0xff, 0x49, 0xff, 0x46, 0xff, + 0x3e, 0xff, 0x40, 0xff, 0x37, 0xff, 0x37, 0xff, 0x2d, 0xff, 0x2e, 0xff, + 0x27, 0xff, 0x28, 0xff, 0x1e, 0xff, 0x1c, 0xff, 0x17, 0xff, 0x17, 0xff, + 0x10, 0xff, 0x0f, 0xff, 0x08, 0xff, 0x0a, 0xff, 0x04, 0xff, 0x02, 0xff, + 0xfb, 0xfe, 0xfe, 0xfe, 0xf9, 0xfe, 0xf8, 0xfe, 0xf1, 0xfe, 0xf2, 0xfe, + 0xed, 0xfe, 0xee, 0xfe, 0xe9, 0xfe, 0xe8, 0xfe, 0xe1, 0xfe, 0xe3, 0xfe, + 0xe1, 0xfe, 0xe0, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, + 0xd3, 0xfe, 0xd4, 0xfe, 0xce, 0xfe, 0xce, 0xfe, 0xcb, 0xfe, 0xce, 0xfe, + 0xca, 0xfe, 0xc7, 0xfe, 0xc2, 0xfe, 0xc6, 0xfe, 0xc4, 0xfe, 0xc2, 0xfe, + 0xbd, 0xfe, 0xbe, 0xfe, 0xbc, 0xfe, 0xbd, 0xfe, 0xb8, 0xfe, 0xb8, 0xfe, + 0xb8, 0xfe, 0xb8, 0xfe, 0xb5, 0xfe, 0xb5, 0xfe, 0xb3, 0xfe, 0xb4, 0xfe, + 0xb2, 0xfe, 0xb3, 0xfe, 0xb1, 0xfe, 0xb0, 0xfe, 0xb1, 0xfe, 0xb1, 0xfe, + 0xb0, 0xfe, 0xaf, 0xfe, 0xb1, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, 0xb2, 0xfe, + 0xb4, 0xfe, 0xb4, 0xfe, 0xb4, 0xfe, 0xb5, 0xfe, 0xb8, 0xfe, 0xb9, 0xfe, + 0xbd, 0xfe, 0xbc, 0xfe, 0xbf, 0xfe, 0xc0, 0xfe, 0xc4, 0xfe, 0xc5, 0xfe, + 0xc9, 0xfe, 0xca, 0xfe, 0xcd, 0xfe, 0xce, 0xfe, 0xd9, 0xfe, 0xd7, 0xfe, + 0xdd, 0xfe, 0xe0, 0xfe, 0xe7, 0xfe, 0xe6, 0xfe, 0xf0, 0xfe, 0xf1, 0xfe, + 0xf8, 0xfe, 0xf8, 0xfe, 0x05, 0xff, 0x03, 0xff, 0x0b, 0xff, 0x0e, 0xff, + 0x1a, 0xff, 0x18, 0xff, 0x25, 0xff, 0x27, 0xff, 0x31, 0xff, 0x31, 0xff, + 0x3e, 0xff, 0x41, 0xff, 0x49, 0xff, 0x48, 0xff, 0x58, 0xff, 0x5a, 0xff, + 0x65, 0xff, 0x65, 0xff, 0x72, 0xff, 0x73, 0xff, 0x80, 0xff, 0x81, 0xff, + 0x8d, 0xff, 0x8c, 0xff, 0x99, 0xff, 0x9c, 0xff, 0xa7, 0xff, 0xa5, 0xff, + 0xb2, 0xff, 0xb3, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xcb, 0xff, 0xca, 0xff, + 0xd7, 0xff, 0xd8, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xf7, 0xff, 0xf8, 0xff, 0x01, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x22, 0x00, 0x22, 0x00, + 0x2b, 0x00, 0x2b, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x37, 0x00, 0x37, 0x00, + 0x3d, 0x00, 0x3d, 0x00, 0x42, 0x00, 0x43, 0x00, 0x49, 0x00, 0x49, 0x00, + 0x4d, 0x00, 0x4e, 0x00, 0x53, 0x00, 0x54, 0x00, 0x59, 0x00, 0x58, 0x00, + 0x5f, 0x00, 0x60, 0x00, 0x62, 0x00, 0x62, 0x00, 0x68, 0x00, 0x68, 0x00, + 0x6b, 0x00, 0x6d, 0x00, 0x72, 0x00, 0x73, 0x00, 0x77, 0x00, 0x78, 0x00, + 0x7c, 0x00, 0x7d, 0x00, 0x83, 0x00, 0x83, 0x00, 0x87, 0x00, 0x8a, 0x00, + 0x90, 0x00, 0x8f, 0x00, 0x95, 0x00, 0x93, 0x00, 0x9b, 0x00, 0x9d, 0x00, + 0xa6, 0x00, 0xa4, 0x00, 0xab, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0xb4, 0x00, + 0xbc, 0x00, 0xb9, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xcd, 0x00, 0xcc, 0x00, + 0xd6, 0x00, 0xd6, 0x00, 0xdd, 0x00, 0xdc, 0x00, 0xe7, 0x00, 0xe8, 0x00, + 0xee, 0x00, 0xef, 0x00, 0xf9, 0x00, 0xf9, 0x00, 0x01, 0x01, 0x02, 0x01, + 0x0a, 0x01, 0x0b, 0x01, 0x13, 0x01, 0x14, 0x01, 0x1b, 0x01, 0x1b, 0x01, + 0x23, 0x01, 0x24, 0x01, 0x2a, 0x01, 0x2a, 0x01, 0x30, 0x01, 0x31, 0x01, + 0x39, 0x01, 0x38, 0x01, 0x3e, 0x01, 0x40, 0x01, 0x45, 0x01, 0x43, 0x01, + 0x49, 0x01, 0x4b, 0x01, 0x50, 0x01, 0x4e, 0x01, 0x50, 0x01, 0x53, 0x01, + 0x57, 0x01, 0x55, 0x01, 0x58, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x5b, 0x01, + 0x5c, 0x01, 0x5d, 0x01, 0x5c, 0x01, 0x5d, 0x01, 0x5c, 0x01, 0x5d, 0x01, + 0x5f, 0x01, 0x5e, 0x01, 0x5b, 0x01, 0x5d, 0x01, 0x5c, 0x01, 0x5c, 0x01, + 0x58, 0x01, 0x5c, 0x01, 0x58, 0x01, 0x57, 0x01, 0x54, 0x01, 0x56, 0x01, + 0x4d, 0x01, 0x4f, 0x01, 0x4c, 0x01, 0x4c, 0x01, 0x48, 0x01, 0x49, 0x01, + 0x41, 0x01, 0x42, 0x01, 0x3e, 0x01, 0x3e, 0x01, 0x37, 0x01, 0x38, 0x01, + 0x31, 0x01, 0x31, 0x01, 0x2a, 0x01, 0x2b, 0x01, 0x22, 0x01, 0x21, 0x01, + 0x1b, 0x01, 0x1c, 0x01, 0x13, 0x01, 0x11, 0x01, 0x0b, 0x01, 0x0b, 0x01, + 0x02, 0x01, 0x02, 0x01, 0xfa, 0x00, 0xfa, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0xe6, 0x00, 0xe6, 0x00, 0xdd, 0x00, 0xdc, 0x00, 0xd2, 0x00, 0xd1, 0x00, + 0xc8, 0x00, 0xc8, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xb1, 0x00, 0xaf, 0x00, + 0xa4, 0x00, 0xa4, 0x00, 0x96, 0x00, 0x97, 0x00, 0x8b, 0x00, 0x8c, 0x00, + 0x7f, 0x00, 0x7e, 0x00, 0x71, 0x00, 0x73, 0x00, 0x64, 0x00, 0x64, 0x00, + 0x56, 0x00, 0x57, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x3b, 0x00, 0x3b, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x11, 0x00, + 0x01, 0x00, 0x03, 0x00, 0xf6, 0xff, 0xf5, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xd6, 0xff, 0xd9, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xb3, 0xff, 0xb3, 0xff, 0xa4, 0xff, 0xa3, 0xff, 0x95, 0xff, 0x96, 0xff, + 0x8c, 0xff, 0x8d, 0xff, 0x80, 0xff, 0x7e, 0xff, 0x73, 0xff, 0x75, 0xff, + 0x6a, 0xff, 0x68, 0xff, 0x5e, 0xff, 0x5f, 0xff, 0x57, 0xff, 0x56, 0xff, + 0x4b, 0xff, 0x4c, 0xff, 0x44, 0xff, 0x44, 0xff, 0x3c, 0xff, 0x3d, 0xff, + 0x36, 0xff, 0x36, 0xff, 0x2f, 0xff, 0x31, 0xff, 0x29, 0xff, 0x28, 0xff, + 0x24, 0xff, 0x26, 0xff, 0x20, 0xff, 0x1f, 0xff, 0x1d, 0xff, 0x1c, 0xff, + 0x17, 0xff, 0x18, 0xff, 0x14, 0xff, 0x15, 0xff, 0x13, 0xff, 0x12, 0xff, + 0x0d, 0xff, 0x11, 0xff, 0x0f, 0xff, 0x0d, 0xff, 0x0a, 0xff, 0x0c, 0xff, + 0x0a, 0xff, 0x09, 0xff, 0x09, 0xff, 0x09, 0xff, 0x07, 0xff, 0x07, 0xff, + 0x07, 0xff, 0x06, 0xff, 0x03, 0xff, 0x05, 0xff, 0x06, 0xff, 0x04, 0xff, + 0x01, 0xff, 0x04, 0xff, 0x03, 0xff, 0x02, 0xff, 0xff, 0xfe, 0x00, 0xff, + 0xff, 0xfe, 0x00, 0xff, 0xfd, 0xfe, 0xff, 0xfe, 0xfc, 0xfe, 0xfb, 0xfe, + 0xfa, 0xfe, 0xfc, 0xfe, 0xf7, 0xfe, 0xf9, 0xfe, 0xf6, 0xfe, 0xf7, 0xfe, + 0xf3, 0xfe, 0xf5, 0xfe, 0xf0, 0xfe, 0xf1, 0xfe, 0xef, 0xfe, 0xef, 0xfe, + 0xe9, 0xfe, 0xec, 0xfe, 0xeb, 0xfe, 0xeb, 0xfe, 0xe7, 0xfe, 0xe6, 0xfe, + 0xe4, 0xfe, 0xe6, 0xfe, 0xe3, 0xfe, 0xe2, 0xfe, 0xdd, 0xfe, 0xde, 0xfe, + 0xdd, 0xfe, 0xde, 0xfe, 0xd9, 0xfe, 0xd8, 0xfe, 0xda, 0xfe, 0xdc, 0xfe, + 0xd7, 0xfe, 0xd5, 0xfe, 0xd5, 0xfe, 0xd8, 0xfe, 0xd5, 0xfe, 0xd4, 0xfe, + 0xd4, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, 0xd5, 0xfe, 0xd3, 0xfe, 0xd2, 0xfe, + 0xd6, 0xfe, 0xd7, 0xfe, 0xd4, 0xfe, 0xd7, 0xfe, 0xd9, 0xfe, 0xd7, 0xfe, + 0xdb, 0xfe, 0xdd, 0xfe, 0xde, 0xfe, 0xde, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, + 0xe7, 0xfe, 0xe9, 0xfe, 0xee, 0xfe, 0xed, 0xfe, 0xf4, 0xfe, 0xf6, 0xfe, + 0xf9, 0xfe, 0xf9, 0xfe, 0x03, 0xff, 0x03, 0xff, 0x07, 0xff, 0x08, 0xff, + 0x13, 0xff, 0x13, 0xff, 0x19, 0xff, 0x18, 0xff, 0x22, 0xff, 0x24, 0xff, + 0x2f, 0xff, 0x2d, 0xff, 0x36, 0xff, 0x37, 0xff, 0x44, 0xff, 0x44, 0xff, + 0x4e, 0xff, 0x4b, 0xff, 0x5c, 0xff, 0x5d, 0xff, 0x64, 0xff, 0x63, 0xff, + 0x73, 0xff, 0x72, 0xff, 0x7b, 0xff, 0x7d, 0xff, 0x89, 0xff, 0x89, 0xff, + 0x95, 0xff, 0x96, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xb0, 0xff, 0xb0, 0xff, + 0xba, 0xff, 0xb9, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xd5, 0xff, 0xd2, 0xff, + 0xde, 0xff, 0xe0, 0xff, 0xed, 0xff, 0xed, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0x05, 0x00, 0x06, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x1c, 0x00, 0x1e, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x34, 0x00, 0x33, 0x00, 0x41, 0x00, 0x41, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x55, 0x00, 0x56, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x6b, 0x00, 0x69, 0x00, 0x77, 0x00, 0x76, 0x00, 0x7e, 0x00, 0x7e, 0x00, + 0x8a, 0x00, 0x89, 0x00, 0x94, 0x00, 0x95, 0x00, 0x9c, 0x00, 0x9c, 0x00, + 0xa8, 0x00, 0xa6, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xb8, 0x00, 0xb9, 0x00, + 0xc2, 0x00, 0xc1, 0x00, 0xca, 0x00, 0xc8, 0x00, 0xd3, 0x00, 0xd3, 0x00, + 0xdc, 0x00, 0xd9, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0xeb, 0x00, 0xea, 0x00, + 0xf1, 0x00, 0xf1, 0x00, 0xf8, 0x00, 0xf7, 0x00, 0x00, 0x01, 0x00, 0x01, + 0x03, 0x01, 0x05, 0x01, 0x0b, 0x01, 0x09, 0x01, 0x0f, 0x01, 0x11, 0x01, + 0x13, 0x01, 0x12, 0x01, 0x1a, 0x01, 0x1c, 0x01, 0x1b, 0x01, 0x1b, 0x01, + 0x22, 0x01, 0x21, 0x01, 0x23, 0x01, 0x24, 0x01, 0x26, 0x01, 0x25, 0x01, + 0x28, 0x01, 0x2a, 0x01, 0x2b, 0x01, 0x2b, 0x01, 0x2d, 0x01, 0x2d, 0x01, + 0x2e, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0x30, 0x01, 0x31, 0x01, + 0x2f, 0x01, 0x30, 0x01, 0x2f, 0x01, 0x30, 0x01, 0x2f, 0x01, 0x30, 0x01, + 0x2e, 0x01, 0x2d, 0x01, 0x2d, 0x01, 0x2f, 0x01, 0x2e, 0x01, 0x2c, 0x01, + 0x2a, 0x01, 0x2b, 0x01, 0x2b, 0x01, 0x2b, 0x01, 0x28, 0x01, 0x27, 0x01, + 0x27, 0x01, 0x28, 0x01, 0x24, 0x01, 0x24, 0x01, 0x22, 0x01, 0x23, 0x01, + 0x20, 0x01, 0x22, 0x01, 0x1e, 0x01, 0x1e, 0x01, 0x1d, 0x01, 0x1e, 0x01, + 0x1c, 0x01, 0x1b, 0x01, 0x18, 0x01, 0x18, 0x01, 0x16, 0x01, 0x17, 0x01, + 0x13, 0x01, 0x12, 0x01, 0x12, 0x01, 0x13, 0x01, 0x0e, 0x01, 0x0d, 0x01, + 0x0a, 0x01, 0x0b, 0x01, 0x09, 0x01, 0x09, 0x01, 0x04, 0x01, 0x04, 0x01, + 0x04, 0x01, 0x02, 0x01, 0xff, 0x00, 0xff, 0x00, 0xfb, 0x00, 0xfc, 0x00, + 0xfa, 0x00, 0xf8, 0x00, 0xf3, 0x00, 0xf3, 0x00, 0xf1, 0x00, 0xf0, 0x00, + 0xea, 0x00, 0xeb, 0x00, 0xe8, 0x00, 0xe5, 0x00, 0xe0, 0x00, 0xe1, 0x00, + 0xda, 0x00, 0xd9, 0x00, 0xd4, 0x00, 0xd3, 0x00, 0xcc, 0x00, 0xcc, 0x00, + 0xc5, 0x00, 0xc4, 0x00, 0xbd, 0x00, 0xbc, 0x00, 0xb2, 0x00, 0xb3, 0x00, + 0xa9, 0x00, 0xa9, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x95, 0x00, 0x93, 0x00, + 0x89, 0x00, 0x8a, 0x00, 0x7d, 0x00, 0x7c, 0x00, 0x71, 0x00, 0x73, 0x00, + 0x64, 0x00, 0x64, 0x00, 0x58, 0x00, 0x57, 0x00, 0x4a, 0x00, 0x4b, 0x00, + 0x3a, 0x00, 0x3b, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x1b, 0x00, 0x1e, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0xff, 0xff, 0xff, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xc2, 0xff, 0xc2, 0xff, + 0xb1, 0xff, 0xb3, 0xff, 0xa3, 0xff, 0xa4, 0xff, 0x95, 0xff, 0x96, 0xff, + 0x85, 0xff, 0x87, 0xff, 0x78, 0xff, 0x78, 0xff, 0x6a, 0xff, 0x6c, 0xff, + 0x5d, 0xff, 0x5d, 0xff, 0x51, 0xff, 0x51, 0xff, 0x46, 0xff, 0x46, 0xff, + 0x38, 0xff, 0x38, 0xff, 0x2e, 0xff, 0x30, 0xff, 0x24, 0xff, 0x24, 0xff, + 0x1a, 0xff, 0x1b, 0xff, 0x12, 0xff, 0x14, 0xff, 0x09, 0xff, 0x0a, 0xff, + 0x04, 0xff, 0x03, 0xff, 0xfc, 0xfe, 0xfd, 0xfe, 0xf4, 0xfe, 0xf6, 0xfe, + 0xf2, 0xfe, 0xf2, 0xfe, 0xea, 0xfe, 0xec, 0xfe, 0xe8, 0xfe, 0xe7, 0xfe, + 0xe3, 0xfe, 0xe5, 0xfe, 0xe1, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, + 0xda, 0xfe, 0xdc, 0xfe, 0xdc, 0xfe, 0xda, 0xfe, 0xd9, 0xfe, 0xda, 0xfe, + 0xd9, 0xfe, 0xd8, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, + 0xd9, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, 0xdc, 0xfe, 0xd9, 0xfe, + 0xda, 0xfe, 0xdc, 0xfe, 0xda, 0xfe, 0xdb, 0xfe, 0xdd, 0xfe, 0xdc, 0xfe, + 0xdc, 0xfe, 0xdb, 0xfe, 0xde, 0xfe, 0xdd, 0xfe, 0xe0, 0xfe, 0xde, 0xfe, + 0xe0, 0xfe, 0xe2, 0xfe, 0xe3, 0xfe, 0xe1, 0xfe, 0xe2, 0xfe, 0xe3, 0xfe, + 0xe7, 0xfe, 0xe6, 0xfe, 0xe8, 0xfe, 0xe7, 0xfe, 0xea, 0xfe, 0xeb, 0xfe, + 0xec, 0xfe, 0xeb, 0xfe, 0xee, 0xfe, 0xee, 0xfe, 0xf0, 0xfe, 0xf1, 0xfe, + 0xf4, 0xfe, 0xf2, 0xfe, 0xf5, 0xfe, 0xf6, 0xfe, 0xf8, 0xfe, 0xf9, 0xfe, + 0xfb, 0xfe, 0xfa, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x01, 0xff, + 0x06, 0xff, 0x04, 0xff, 0x07, 0xff, 0x08, 0xff, 0x0d, 0xff, 0x0d, 0xff, + 0x0f, 0xff, 0x0f, 0xff, 0x15, 0xff, 0x16, 0xff, 0x1a, 0xff, 0x19, 0xff, + 0x1d, 0xff, 0x1c, 0xff, 0x23, 0xff, 0x23, 0xff, 0x26, 0xff, 0x26, 0xff, + 0x2e, 0xff, 0x2d, 0xff, 0x31, 0xff, 0x31, 0xff, 0x38, 0xff, 0x39, 0xff, + 0x3c, 0xff, 0x3b, 0xff, 0x42, 0xff, 0x41, 0xff, 0x46, 0xff, 0x48, 0xff, + 0x4d, 0xff, 0x4b, 0xff, 0x52, 0xff, 0x53, 0xff, 0x58, 0xff, 0x56, 0xff, + 0x5f, 0xff, 0x5f, 0xff, 0x64, 0xff, 0x65, 0xff, 0x6c, 0xff, 0x6b, 0xff, + 0x71, 0xff, 0x72, 0xff, 0x78, 0xff, 0x78, 0xff, 0x7f, 0xff, 0x7e, 0xff, + 0x85, 0xff, 0x85, 0xff, 0x8d, 0xff, 0x8c, 0xff, 0x94, 0xff, 0x93, 0xff, + 0x99, 0xff, 0x9b, 0xff, 0xa3, 0xff, 0xa2, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0xb3, 0xff, 0xb2, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xc3, 0xff, 0xc2, 0xff, + 0xcb, 0xff, 0xcc, 0xff, 0xd5, 0xff, 0xd3, 0xff, 0xdc, 0xff, 0xde, 0xff, + 0xe8, 0xff, 0xe6, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0x05, 0x00, 0x04, 0x00, 0x11, 0x00, 0x12, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x33, 0x00, 0x34, 0x00, 0x41, 0x00, 0x42, 0x00, + 0x4e, 0x00, 0x4e, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x67, 0x00, 0x69, 0x00, + 0x75, 0x00, 0x75, 0x00, 0x83, 0x00, 0x84, 0x00, 0x91, 0x00, 0x91, 0x00, + 0x9f, 0x00, 0x9f, 0x00, 0xab, 0x00, 0xad, 0x00, 0xba, 0x00, 0xba, 0x00, + 0xc7, 0x00, 0xc6, 0x00, 0xd4, 0x00, 0xd6, 0x00, 0xe3, 0x00, 0xe2, 0x00, + 0xed, 0x00, 0xef, 0x00, 0xfb, 0x00, 0xfb, 0x00, 0x08, 0x01, 0x08, 0x01, + 0x13, 0x01, 0x13, 0x01, 0x1f, 0x01, 0x1e, 0x01, 0x28, 0x01, 0x27, 0x01, + 0x31, 0x01, 0x31, 0x01, 0x3b, 0x01, 0x39, 0x01, 0x42, 0x01, 0x43, 0x01, + 0x49, 0x01, 0x49, 0x01, 0x50, 0x01, 0x51, 0x01, 0x55, 0x01, 0x54, 0x01, + 0x5a, 0x01, 0x5c, 0x01, 0x5f, 0x01, 0x5e, 0x01, 0x62, 0x01, 0x62, 0x01, + 0x64, 0x01, 0x63, 0x01, 0x64, 0x01, 0x64, 0x01, 0x64, 0x01, 0x65, 0x01, + 0x65, 0x01, 0x64, 0x01, 0x64, 0x01, 0x65, 0x01, 0x62, 0x01, 0x61, 0x01, + 0x60, 0x01, 0x62, 0x01, 0x5b, 0x01, 0x5c, 0x01, 0x5a, 0x01, 0x5a, 0x01, + 0x55, 0x01, 0x54, 0x01, 0x4f, 0x01, 0x4f, 0x01, 0x49, 0x01, 0x49, 0x01, + 0x44, 0x01, 0x43, 0x01, 0x3d, 0x01, 0x3e, 0x01, 0x39, 0x01, 0x39, 0x01, + 0x31, 0x01, 0x31, 0x01, 0x2b, 0x01, 0x2b, 0x01, 0x24, 0x01, 0x25, 0x01, + 0x1e, 0x01, 0x1d, 0x01, 0x16, 0x01, 0x17, 0x01, 0x0f, 0x01, 0x10, 0x01, + 0x09, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0xfb, 0x00, 0xfb, 0x00, + 0xf3, 0x00, 0xf3, 0x00, 0xed, 0x00, 0xed, 0x00, 0xe6, 0x00, 0xe6, 0x00, + 0xdf, 0x00, 0xdf, 0x00, 0xd9, 0x00, 0xd8, 0x00, 0xd1, 0x00, 0xd2, 0x00, + 0xcd, 0x00, 0xcc, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc0, 0x00, 0xc0, 0x00, + 0xba, 0x00, 0xb8, 0x00, 0xb3, 0x00, 0xb3, 0x00, 0xad, 0x00, 0xaa, 0x00, + 0xa6, 0x00, 0xa7, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x99, 0x00, 0x98, 0x00, + 0x91, 0x00, 0x92, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x86, 0x00, 0x82, 0x00, + 0x7a, 0x00, 0x7c, 0x00, 0x78, 0x00, 0x75, 0x00, 0x6d, 0x00, 0x6c, 0x00, + 0x67, 0x00, 0x68, 0x00, 0x5e, 0x00, 0x5c, 0x00, 0x55, 0x00, 0x54, 0x00, + 0x4e, 0x00, 0x4e, 0x00, 0x42, 0x00, 0x40, 0x00, 0x3b, 0x00, 0x3c, 0x00, + 0x31, 0x00, 0x2e, 0x00, 0x27, 0x00, 0x27, 0x00, 0x1c, 0x00, 0x1c, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x09, 0x00, 0x0a, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xf6, 0xff, 0xf4, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xe1, 0xff, 0xe0, 0xff, + 0xd5, 0xff, 0xd3, 0xff, 0xcc, 0xff, 0xce, 0xff, 0xc2, 0xff, 0xc0, 0xff, + 0xb5, 0xff, 0xb7, 0xff, 0xad, 0xff, 0xad, 0xff, 0xa2, 0xff, 0xa3, 0xff, + 0x99, 0xff, 0x98, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x83, 0xff, 0x84, 0xff, + 0x7b, 0xff, 0x7b, 0xff, 0x70, 0xff, 0x70, 0xff, 0x6a, 0xff, 0x68, 0xff, + 0x5d, 0xff, 0x5f, 0xff, 0x57, 0xff, 0x57, 0xff, 0x4d, 0xff, 0x4d, 0xff, + 0x45, 0xff, 0x45, 0xff, 0x3c, 0xff, 0x3c, 0xff, 0x34, 0xff, 0x35, 0xff, + 0x2b, 0xff, 0x2b, 0xff, 0x23, 0xff, 0x24, 0xff, 0x1d, 0xff, 0x1b, 0xff, + 0x14, 0xff, 0x13, 0xff, 0x0d, 0xff, 0x0e, 0xff, 0x06, 0xff, 0x04, 0xff, + 0xfe, 0xfe, 0xfe, 0xfe, 0xf9, 0xfe, 0xf8, 0xfe, 0xf1, 0xfe, 0xf0, 0xfe, + 0xe9, 0xfe, 0xea, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, + 0xd8, 0xfe, 0xd8, 0xfe, 0xd3, 0xfe, 0xd2, 0xfe, 0xce, 0xfe, 0xcd, 0xfe, + 0xc9, 0xfe, 0xcb, 0xfe, 0xc4, 0xfe, 0xc1, 0xfe, 0xbf, 0xfe, 0xc3, 0xfe, + 0xbc, 0xfe, 0xba, 0xfe, 0xba, 0xfe, 0xb8, 0xfe, 0xb6, 0xfe, 0xb7, 0xfe, + 0xb4, 0xfe, 0xb2, 0xfe, 0xb2, 0xfe, 0xb4, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, + 0xb1, 0xfe, 0xb2, 0xfe, 0xb1, 0xfe, 0xb1, 0xfe, 0xb2, 0xfe, 0xb2, 0xfe, + 0xb4, 0xfe, 0xb5, 0xfe, 0xb5, 0xfe, 0xb4, 0xfe, 0xb8, 0xfe, 0xba, 0xfe, + 0xbc, 0xfe, 0xba, 0xfe, 0xc0, 0xfe, 0xc1, 0xfe, 0xc4, 0xfe, 0xc5, 0xfe, + 0xc8, 0xfe, 0xc8, 0xfe, 0xd0, 0xfe, 0xd1, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, + 0xdd, 0xfe, 0xdf, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, 0xea, 0xfe, 0xed, 0xfe, + 0xf5, 0xfe, 0xf5, 0xfe, 0xfc, 0xfe, 0xfd, 0xfe, 0x07, 0xff, 0x07, 0xff, + 0x0e, 0xff, 0x0e, 0xff, 0x18, 0xff, 0x19, 0xff, 0x23, 0xff, 0x24, 0xff, + 0x2c, 0xff, 0x2d, 0xff, 0x36, 0xff, 0x38, 0xff, 0x41, 0xff, 0x3f, 0xff, + 0x4b, 0xff, 0x4e, 0xff, 0x56, 0xff, 0x55, 0xff, 0x60, 0xff, 0x61, 0xff, + 0x69, 0xff, 0x6a, 0xff, 0x73, 0xff, 0x74, 0xff, 0x7c, 0xff, 0x7d, 0xff, + 0x85, 0xff, 0x86, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x95, 0xff, 0x97, 0xff, + 0x9e, 0xff, 0x9e, 0xff, 0xa4, 0xff, 0xa5, 0xff, 0xac, 0xff, 0xab, 0xff, + 0xb3, 0xff, 0xb3, 0xff, 0xba, 0xff, 0xbb, 0xff, 0xc2, 0xff, 0xc1, 0xff, + 0xc5, 0xff, 0xc6, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xd2, 0xff, 0xd1, 0xff, + 0xd8, 0xff, 0xd8, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xe9, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xee, 0xff, 0xf6, 0xff, 0xf4, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x0f, 0x00, 0x0d, 0x00, 0x12, 0x00, 0x12, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x22, 0x00, 0x21, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x31, 0x00, 0x31, 0x00, + 0x3a, 0x00, 0x39, 0x00, 0x42, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x4b, 0x00, + 0x57, 0x00, 0x55, 0x00, 0x5d, 0x00, 0x5f, 0x00, 0x6a, 0x00, 0x67, 0x00, + 0x75, 0x00, 0x75, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x8b, 0x00, 0x8a, 0x00, + 0x92, 0x00, 0x95, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xac, 0x00, 0xad, 0x00, + 0xb6, 0x00, 0xb6, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xcf, 0x00, 0xcf, 0x00, + 0xd8, 0x00, 0xda, 0x00, 0xe6, 0x00, 0xe4, 0x00, 0xed, 0x00, 0xee, 0x00, + 0xfb, 0x00, 0xfa, 0x00, 0x04, 0x01, 0x05, 0x01, 0x0e, 0x01, 0x0e, 0x01, + 0x17, 0x01, 0x19, 0x01, 0x20, 0x01, 0x1f, 0x01, 0x29, 0x01, 0x2a, 0x01, + 0x2f, 0x01, 0x2f, 0x01, 0x38, 0x01, 0x39, 0x01, 0x3f, 0x01, 0x3e, 0x01, + 0x46, 0x01, 0x47, 0x01, 0x4b, 0x01, 0x4c, 0x01, 0x4f, 0x01, 0x50, 0x01, + 0x56, 0x01, 0x54, 0x01, 0x58, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x5b, 0x01, + 0x5f, 0x01, 0x5e, 0x01, 0x5e, 0x01, 0x5f, 0x01, 0x60, 0x01, 0x60, 0x01, + 0x60, 0x01, 0x5e, 0x01, 0x60, 0x01, 0x61, 0x01, 0x5e, 0x01, 0x5d, 0x01, + 0x60, 0x01, 0x60, 0x01, 0x5b, 0x01, 0x5b, 0x01, 0x5c, 0x01, 0x5b, 0x01, + 0x55, 0x01, 0x59, 0x01, 0x57, 0x01, 0x55, 0x01, 0x52, 0x01, 0x52, 0x01, + 0x4d, 0x01, 0x4d, 0x01, 0x48, 0x01, 0x48, 0x01, 0x43, 0x01, 0x43, 0x01, + 0x3e, 0x01, 0x3e, 0x01, 0x37, 0x01, 0x38, 0x01, 0x34, 0x01, 0x33, 0x01, + 0x2b, 0x01, 0x2c, 0x01, 0x26, 0x01, 0x25, 0x01, 0x1c, 0x01, 0x1d, 0x01, + 0x15, 0x01, 0x16, 0x01, 0x0d, 0x01, 0x0d, 0x01, 0x05, 0x01, 0x04, 0x01, + 0xfb, 0x00, 0xfb, 0x00, 0xf1, 0x00, 0xf0, 0x00, 0xe7, 0x00, 0xe9, 0x00, + 0xde, 0x00, 0xdc, 0x00, 0xd3, 0x00, 0xd3, 0x00, 0xc8, 0x00, 0xc9, 0x00, + 0xbc, 0x00, 0xbd, 0x00, 0xb4, 0x00, 0xb3, 0x00, 0xa7, 0x00, 0xa6, 0x00, + 0x9b, 0x00, 0x9c, 0x00, 0x8f, 0x00, 0x8e, 0x00, 0x82, 0x00, 0x83, 0x00, + 0x76, 0x00, 0x75, 0x00, 0x69, 0x00, 0x69, 0x00, 0x5c, 0x00, 0x5c, 0x00, + 0x4f, 0x00, 0x51, 0x00, 0x41, 0x00, 0x41, 0x00, 0x38, 0x00, 0x36, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x03, 0x00, 0xf7, 0xff, 0xf7, 0xff, 0xed, 0xff, 0xec, 0xff, + 0xdf, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xd5, 0xff, 0xcc, 0xff, 0xce, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb0, 0xff, 0xb0, 0xff, + 0xa7, 0xff, 0xa7, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x99, 0xff, 0x97, 0xff, + 0x90, 0xff, 0x90, 0xff, 0x8b, 0xff, 0x8a, 0xff, 0x82, 0xff, 0x84, 0xff, + 0x7f, 0xff, 0x7d, 0xff, 0x79, 0xff, 0x7a, 0xff, 0x73, 0xff, 0x74, 0xff, + 0x71, 0xff, 0x6f, 0xff, 0x6b, 0xff, 0x6d, 0xff, 0x68, 0xff, 0x68, 0xff, + 0x65, 0xff, 0x65, 0xff, 0x62, 0xff, 0x60, 0xff, 0x5d, 0xff, 0x5d, 0xff, + 0x5a, 0xff, 0x5a, 0xff, 0x56, 0xff, 0x57, 0xff, 0x53, 0xff, 0x52, 0xff, + 0x4f, 0xff, 0x50, 0xff, 0x4a, 0xff, 0x4b, 0xff, 0x48, 0xff, 0x48, 0xff, + 0x44, 0xff, 0x44, 0xff, 0x40, 0xff, 0x40, 0xff, 0x3d, 0xff, 0x3b, 0xff, + 0x36, 0xff, 0x37, 0xff, 0x35, 0xff, 0x32, 0xff, 0x2d, 0xff, 0x2d, 0xff, + 0x29, 0xff, 0x2a, 0xff, 0x23, 0xff, 0x20, 0xff, 0x1d, 0xff, 0x1f, 0xff, + 0x16, 0xff, 0x14, 0xff, 0x11, 0xff, 0x11, 0xff, 0x09, 0xff, 0x09, 0xff, + 0x05, 0xff, 0x05, 0xff, 0xfd, 0xfe, 0xfd, 0xfe, 0xf6, 0xfe, 0xf8, 0xfe, + 0xf1, 0xfe, 0xf1, 0xfe, 0xe9, 0xfe, 0xe9, 0xfe, 0xe4, 0xfe, 0xe5, 0xfe, + 0xdd, 0xfe, 0xdd, 0xfe, 0xd7, 0xfe, 0xd8, 0xfe, 0xd4, 0xfe, 0xd4, 0xfe, + 0xcb, 0xfe, 0xcc, 0xfe, 0xc9, 0xfe, 0xc8, 0xfe, 0xc3, 0xfe, 0xc5, 0xfe, + 0xc0, 0xfe, 0xc0, 0xfe, 0xbe, 0xfe, 0xbd, 0xfe, 0xba, 0xfe, 0xbc, 0xfe, + 0xbb, 0xfe, 0xb9, 0xfe, 0xb9, 0xfe, 0xb9, 0xfe, 0xb8, 0xfe, 0xb9, 0xfe, + 0xba, 0xfe, 0xb9, 0xfe, 0xba, 0xfe, 0xbc, 0xfe, 0xbd, 0xfe, 0xbd, 0xfe, + 0xbe, 0xfe, 0xbe, 0xfe, 0xc2, 0xfe, 0xc3, 0xfe, 0xc6, 0xfe, 0xc5, 0xfe, + 0xcb, 0xfe, 0xcc, 0xfe, 0xd0, 0xfe, 0xd0, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, + 0xdb, 0xfe, 0xdb, 0xfe, 0xe6, 0xfe, 0xe5, 0xfe, 0xed, 0xfe, 0xee, 0xfe, + 0xf5, 0xfe, 0xf6, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0x08, 0xff, 0x08, 0xff, + 0x12, 0xff, 0x14, 0xff, 0x1c, 0xff, 0x1a, 0xff, 0x25, 0xff, 0x27, 0xff, + 0x30, 0xff, 0x31, 0xff, 0x3c, 0xff, 0x3b, 0xff, 0x44, 0xff, 0x46, 0xff, + 0x52, 0xff, 0x50, 0xff, 0x5b, 0xff, 0x5c, 0xff, 0x66, 0xff, 0x66, 0xff, + 0x70, 0xff, 0x70, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x87, 0xff, 0x88, 0xff, + 0x94, 0xff, 0x93, 0xff, 0x9c, 0xff, 0x9d, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0xb3, 0xff, 0xb3, 0xff, 0xbc, 0xff, 0xbd, 0xff, 0xc9, 0xff, 0xc8, 0xff, + 0xd2, 0xff, 0xd3, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xe8, 0xff, 0xe7, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0x07, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x11, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x25, 0x00, 0x25, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x44, 0x00, 0x44, 0x00, + 0x4e, 0x00, 0x4e, 0x00, 0x58, 0x00, 0x57, 0x00, 0x5f, 0x00, 0x61, 0x00, + 0x6c, 0x00, 0x6a, 0x00, 0x73, 0x00, 0x75, 0x00, 0x7d, 0x00, 0x7c, 0x00, + 0x88, 0x00, 0x87, 0x00, 0x91, 0x00, 0x93, 0x00, 0x9b, 0x00, 0x9a, 0x00, + 0xa2, 0x00, 0xa4, 0x00, 0xac, 0x00, 0xac, 0x00, 0xb5, 0x00, 0xb5, 0x00, + 0xbc, 0x00, 0xbc, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xcc, 0x00, 0xcd, 0x00, + 0xd4, 0x00, 0xd3, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xe1, 0x00, 0xe0, 0x00, + 0xe8, 0x00, 0xea, 0x00, 0xed, 0x00, 0xed, 0x00, 0xf3, 0x00, 0xf2, 0x00, + 0xf8, 0x00, 0xf7, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x01, 0x01, 0x02, 0x01, + 0x05, 0x01, 0x05, 0x01, 0x09, 0x01, 0x09, 0x01, 0x0d, 0x01, 0x0d, 0x01, + 0x0e, 0x01, 0x0f, 0x01, 0x12, 0x01, 0x10, 0x01, 0x13, 0x01, 0x15, 0x01, + 0x17, 0x01, 0x16, 0x01, 0x17, 0x01, 0x18, 0x01, 0x1b, 0x01, 0x1a, 0x01, + 0x1b, 0x01, 0x1b, 0x01, 0x1c, 0x01, 0x1d, 0x01, 0x20, 0x01, 0x1e, 0x01, + 0x1c, 0x01, 0x1e, 0x01, 0x23, 0x01, 0x21, 0x01, 0x1f, 0x01, 0x21, 0x01, + 0x25, 0x01, 0x23, 0x01, 0x22, 0x01, 0x24, 0x01, 0x26, 0x01, 0x24, 0x01, + 0x25, 0x01, 0x27, 0x01, 0x27, 0x01, 0x27, 0x01, 0x27, 0x01, 0x27, 0x01, + 0x28, 0x01, 0x2a, 0x01, 0x2a, 0x01, 0x28, 0x01, 0x29, 0x01, 0x2a, 0x01, + 0x2b, 0x01, 0x2c, 0x01, 0x2a, 0x01, 0x2a, 0x01, 0x2c, 0x01, 0x2b, 0x01, + 0x2b, 0x01, 0x2c, 0x01, 0x2b, 0x01, 0x2a, 0x01, 0x2b, 0x01, 0x2c, 0x01, + 0x29, 0x01, 0x28, 0x01, 0x27, 0x01, 0x28, 0x01, 0x26, 0x01, 0x24, 0x01, + 0x20, 0x01, 0x21, 0x01, 0x21, 0x01, 0x20, 0x01, 0x1a, 0x01, 0x1a, 0x01, + 0x18, 0x01, 0x16, 0x01, 0x10, 0x01, 0x12, 0x01, 0x0b, 0x01, 0x0a, 0x01, + 0x07, 0x01, 0x08, 0x01, 0xfc, 0x00, 0xfc, 0x00, 0xf7, 0x00, 0xf6, 0x00, + 0xec, 0x00, 0xf0, 0x00, 0xe5, 0x00, 0xe3, 0x00, 0xda, 0x00, 0xda, 0x00, + 0xcf, 0x00, 0xd0, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xb9, 0x00, 0xb8, 0x00, + 0xaa, 0x00, 0xac, 0x00, 0x9f, 0x00, 0x9e, 0x00, 0x92, 0x00, 0x92, 0x00, + 0x82, 0x00, 0x82, 0x00, 0x75, 0x00, 0x74, 0x00, 0x65, 0x00, 0x65, 0x00, + 0x57, 0x00, 0x58, 0x00, 0x48, 0x00, 0x47, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x29, 0x00, 0x2a, 0x00, 0x19, 0x00, 0x17, 0x00, 0x0a, 0x00, 0x0d, 0x00, + 0xfc, 0xff, 0xfa, 0xff, 0xed, 0xff, 0xef, 0xff, 0xe0, 0xff, 0xdf, 0xff, + 0xcd, 0xff, 0xcf, 0xff, 0xc4, 0xff, 0xc3, 0xff, 0xb3, 0xff, 0xb5, 0xff, + 0xa9, 0xff, 0xa9, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x91, 0xff, 0x90, 0xff, + 0x87, 0xff, 0x88, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0x73, 0xff, 0x73, 0xff, + 0x6b, 0xff, 0x6b, 0xff, 0x61, 0xff, 0x62, 0xff, 0x5c, 0xff, 0x5b, 0xff, + 0x52, 0xff, 0x52, 0xff, 0x4c, 0xff, 0x4d, 0xff, 0x47, 0xff, 0x46, 0xff, + 0x40, 0xff, 0x40, 0xff, 0x3d, 0xff, 0x3e, 0xff, 0x35, 0xff, 0x34, 0xff, + 0x35, 0xff, 0x36, 0xff, 0x2e, 0xff, 0x2d, 0xff, 0x2c, 0xff, 0x2d, 0xff, + 0x2a, 0xff, 0x29, 0xff, 0x26, 0xff, 0x25, 0xff, 0x23, 0xff, 0x23, 0xff, + 0x1f, 0xff, 0x20, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x1b, 0xff, 0x1c, 0xff, + 0x16, 0xff, 0x16, 0xff, 0x16, 0xff, 0x16, 0xff, 0x12, 0xff, 0x12, 0xff, + 0x0f, 0xff, 0x10, 0xff, 0x0f, 0xff, 0x0e, 0xff, 0x0a, 0xff, 0x0b, 0xff, + 0x0a, 0xff, 0x09, 0xff, 0x06, 0xff, 0x06, 0xff, 0x05, 0xff, 0x04, 0xff, + 0x02, 0xff, 0x02, 0xff, 0x00, 0xff, 0x00, 0xff, 0xfc, 0xfe, 0xff, 0xfe, + 0xfc, 0xfe, 0xfa, 0xfe, 0xf8, 0xfe, 0xfa, 0xfe, 0xf7, 0xfe, 0xf6, 0xfe, + 0xf5, 0xfe, 0xf5, 0xfe, 0xf3, 0xfe, 0xf3, 0xfe, 0xf3, 0xfe, 0xf3, 0xfe, + 0xf0, 0xfe, 0xf1, 0xfe, 0xf0, 0xfe, 0xf0, 0xfe, 0xee, 0xfe, 0xee, 0xfe, + 0xed, 0xfe, 0xee, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0xed, 0xfe, + 0xed, 0xfe, 0xee, 0xfe, 0xf0, 0xfe, 0xee, 0xfe, 0xee, 0xfe, 0xf0, 0xfe, + 0xf0, 0xfe, 0xf0, 0xfe, 0xf3, 0xfe, 0xf4, 0xfe, 0xf1, 0xfe, 0xf2, 0xfe, + 0xf9, 0xfe, 0xf7, 0xfe, 0xf4, 0xfe, 0xf5, 0xfe, 0xfc, 0xfe, 0xf9, 0xfe, + 0xfc, 0xfe, 0xfe, 0xfe, 0xff, 0xfe, 0xfe, 0xfe, 0x05, 0xff, 0x05, 0xff, + 0x03, 0xff, 0x04, 0xff, 0x0c, 0xff, 0x0b, 0xff, 0x0b, 0xff, 0x0c, 0xff, + 0x11, 0xff, 0x10, 0xff, 0x15, 0xff, 0x15, 0xff, 0x17, 0xff, 0x18, 0xff, + 0x1e, 0xff, 0x1d, 0xff, 0x20, 0xff, 0x1f, 0xff, 0x26, 0xff, 0x27, 0xff, + 0x2a, 0xff, 0x2a, 0xff, 0x30, 0xff, 0x30, 0xff, 0x35, 0xff, 0x35, 0xff, + 0x38, 0xff, 0x39, 0xff, 0x41, 0xff, 0x40, 0xff, 0x43, 0xff, 0x44, 0xff, + 0x4a, 0xff, 0x49, 0xff, 0x51, 0xff, 0x53, 0xff, 0x56, 0xff, 0x56, 0xff, + 0x5f, 0xff, 0x60, 0xff, 0x65, 0xff, 0x65, 0xff, 0x6f, 0xff, 0x6e, 0xff, + 0x78, 0xff, 0x76, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x88, 0xff, 0x89, 0xff, + 0x93, 0xff, 0x92, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0xa6, 0xff, 0xa7, 0xff, + 0xb3, 0xff, 0xb3, 0xff, 0xbf, 0xff, 0xbe, 0xff, 0xca, 0xff, 0xcb, 0xff, + 0xd7, 0xff, 0xd8, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xf3, 0xff, 0xf5, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x10, 0x00, 0x1f, 0x00, 0x1d, 0x00, + 0x2b, 0x00, 0x2d, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x4a, 0x00, 0x4a, 0x00, + 0x5b, 0x00, 0x5a, 0x00, 0x6a, 0x00, 0x69, 0x00, 0x78, 0x00, 0x7b, 0x00, + 0x89, 0x00, 0x87, 0x00, 0x96, 0x00, 0x98, 0x00, 0xa7, 0x00, 0xa6, 0x00, + 0xb4, 0x00, 0xb3, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xce, 0x00, 0xcd, 0x00, + 0xdb, 0x00, 0xda, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xf2, 0x00, 0xf1, 0x00, + 0xfc, 0x00, 0xfd, 0x00, 0x09, 0x01, 0x08, 0x01, 0x0f, 0x01, 0x0f, 0x01, + 0x18, 0x01, 0x19, 0x01, 0x20, 0x01, 0x1e, 0x01, 0x26, 0x01, 0x26, 0x01, + 0x2b, 0x01, 0x2a, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0x32, 0x01, 0x33, 0x01, + 0x33, 0x01, 0x34, 0x01, 0x3b, 0x01, 0x39, 0x01, 0x37, 0x01, 0x38, 0x01, + 0x3d, 0x01, 0x3c, 0x01, 0x39, 0x01, 0x39, 0x01, 0x3a, 0x01, 0x3b, 0x01, + 0x39, 0x01, 0x38, 0x01, 0x38, 0x01, 0x38, 0x01, 0x36, 0x01, 0x38, 0x01, + 0x34, 0x01, 0x33, 0x01, 0x31, 0x01, 0x32, 0x01, 0x2e, 0x01, 0x2e, 0x01, + 0x2b, 0x01, 0x2a, 0x01, 0x27, 0x01, 0x27, 0x01, 0x24, 0x01, 0x25, 0x01, + 0x22, 0x01, 0x21, 0x01, 0x1c, 0x01, 0x1d, 0x01, 0x1d, 0x01, 0x1c, 0x01, + 0x18, 0x01, 0x18, 0x01, 0x15, 0x01, 0x14, 0x01, 0x13, 0x01, 0x14, 0x01, + 0x0e, 0x01, 0x0e, 0x01, 0x0e, 0x01, 0x0d, 0x01, 0x09, 0x01, 0x0a, 0x01, + 0x07, 0x01, 0x06, 0x01, 0x06, 0x01, 0x06, 0x01, 0x01, 0x01, 0x00, 0x01, + 0x00, 0x01, 0x02, 0x01, 0xfc, 0x00, 0xfa, 0x00, 0xfb, 0x00, 0xfd, 0x00, + 0xf9, 0x00, 0xf7, 0x00, 0xf5, 0x00, 0xf6, 0x00, 0xf3, 0x00, 0xf1, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0xec, 0x00, 0xec, 0x00, 0xea, 0x00, 0xeb, 0x00, + 0xe5, 0x00, 0xe4, 0x00, 0xe2, 0x00, 0xe1, 0x00, 0xdc, 0x00, 0xdc, 0x00, + 0xd8, 0x00, 0xd6, 0x00, 0xd2, 0x00, 0xd3, 0x00, 0xcc, 0x00, 0xca, 0x00, + 0xc7, 0x00, 0xc8, 0x00, 0xc2, 0x00, 0xc0, 0x00, 0xb8, 0x00, 0xb9, 0x00, + 0xb3, 0x00, 0xb3, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xa1, 0x00, 0xa2, 0x00, + 0x9b, 0x00, 0x99, 0x00, 0x90, 0x00, 0x90, 0x00, 0x89, 0x00, 0x89, 0x00, + 0x7f, 0x00, 0x7e, 0x00, 0x76, 0x00, 0x77, 0x00, 0x6b, 0x00, 0x6a, 0x00, + 0x62, 0x00, 0x61, 0x00, 0x57, 0x00, 0x57, 0x00, 0x4e, 0x00, 0x4d, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x39, 0x00, 0x37, 0x00, 0x2d, 0x00, 0x2f, 0x00, + 0x26, 0x00, 0x24, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x11, 0x00, 0x0e, 0x00, + 0x03, 0x00, 0x03, 0x00, 0xfa, 0xff, 0xfb, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xdd, 0xff, 0xdb, 0xff, 0xd1, 0xff, 0xd1, 0xff, + 0xc8, 0xff, 0xc9, 0xff, 0xbe, 0xff, 0xbf, 0xff, 0xb5, 0xff, 0xb5, 0xff, + 0xab, 0xff, 0xae, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0x99, 0xff, 0x9c, 0xff, + 0x8f, 0xff, 0x8e, 0xff, 0x87, 0xff, 0x86, 0xff, 0x7d, 0xff, 0x7e, 0xff, + 0x74, 0xff, 0x74, 0xff, 0x69, 0xff, 0x69, 0xff, 0x61, 0xff, 0x61, 0xff, + 0x57, 0xff, 0x58, 0xff, 0x4e, 0xff, 0x4e, 0xff, 0x45, 0xff, 0x46, 0xff, + 0x3b, 0xff, 0x3d, 0xff, 0x33, 0xff, 0x34, 0xff, 0x29, 0xff, 0x2b, 0xff, + 0x22, 0xff, 0x21, 0xff, 0x17, 0xff, 0x18, 0xff, 0x10, 0xff, 0x0f, 0xff, + 0x07, 0xff, 0x0a, 0xff, 0xfe, 0xfe, 0xfd, 0xfe, 0xf8, 0xfe, 0xf9, 0xfe, + 0xef, 0xfe, 0xef, 0xfe, 0xe9, 0xfe, 0xea, 0xfe, 0xe3, 0xfe, 0xe2, 0xfe, + 0xdb, 0xfe, 0xdc, 0xfe, 0xd8, 0xfe, 0xd7, 0xfe, 0xd0, 0xfe, 0xd2, 0xfe, + 0xce, 0xfe, 0xcc, 0xfe, 0xc7, 0xfe, 0xc8, 0xfe, 0xc3, 0xfe, 0xc4, 0xfe, + 0xc4, 0xfe, 0xc1, 0xfe, 0xbe, 0xfe, 0xc0, 0xfe, 0xbe, 0xfe, 0xbf, 0xfe, + 0xbe, 0xfe, 0xbd, 0xfe, 0xbc, 0xfe, 0xbd, 0xfe, 0xbf, 0xfe, 0xbe, 0xfe, + 0xbe, 0xfe, 0xc0, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, 0xc3, 0xfe, 0xc3, 0xfe, + 0xc8, 0xfe, 0xc9, 0xfe, 0xca, 0xfe, 0xcb, 0xfe, 0xcf, 0xfe, 0xcf, 0xfe, + 0xd4, 0xfe, 0xd5, 0xfe, 0xdb, 0xfe, 0xd9, 0xfe, 0xe0, 0xfe, 0xe2, 0xfe, + 0xe7, 0xfe, 0xe6, 0xfe, 0xed, 0xfe, 0xef, 0xfe, 0xf5, 0xfe, 0xf4, 0xfe, + 0xf9, 0xfe, 0xfc, 0xfe, 0x03, 0xff, 0x02, 0xff, 0x0a, 0xff, 0x0b, 0xff, + 0x0f, 0xff, 0x0f, 0xff, 0x18, 0xff, 0x1a, 0xff, 0x1d, 0xff, 0x1c, 0xff, + 0x27, 0xff, 0x26, 0xff, 0x2c, 0xff, 0x2d, 0xff, 0x33, 0xff, 0x31, 0xff, + 0x38, 0xff, 0x38, 0xff, 0x3e, 0xff, 0x3d, 0xff, 0x45, 0xff, 0x44, 0xff, + 0x48, 0xff, 0x4a, 0xff, 0x52, 0xff, 0x4e, 0xff, 0x54, 0xff, 0x53, 0xff, + 0x57, 0xff, 0x59, 0xff, 0x5e, 0xff, 0x5b, 0xff, 0x5f, 0xff, 0x60, 0xff, + 0x65, 0xff, 0x64, 0xff, 0x69, 0xff, 0x67, 0xff, 0x6a, 0xff, 0x6c, 0xff, + 0x70, 0xff, 0x70, 0xff, 0x75, 0xff, 0x73, 0xff, 0x78, 0xff, 0x79, 0xff, + 0x7d, 0xff, 0x7b, 0xff, 0x80, 0xff, 0x80, 0xff, 0x85, 0xff, 0x86, 0xff, + 0x8b, 0xff, 0x8a, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x96, 0xff, 0x96, 0xff, + 0x99, 0xff, 0x9a, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xa8, 0xff, 0xa8, 0xff, + 0xb1, 0xff, 0xb2, 0xff, 0xb7, 0xff, 0xb8, 0xff, 0xc1, 0xff, 0xc0, 0xff, + 0xcb, 0xff, 0xcb, 0xff, 0xd1, 0xff, 0xd3, 0xff, 0xde, 0xff, 0xde, 0xff, + 0xe8, 0xff, 0xeb, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x24, 0x00, 0x25, 0x00, + 0x31, 0x00, 0x30, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x4b, 0x00, 0x4d, 0x00, + 0x5d, 0x00, 0x5a, 0x00, 0x68, 0x00, 0x6b, 0x00, 0x77, 0x00, 0x75, 0x00, + 0x84, 0x00, 0x86, 0x00, 0x91, 0x00, 0x91, 0x00, 0x9e, 0x00, 0x9e, 0x00, + 0xab, 0x00, 0xac, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xc4, 0x00, 0xc5, 0x00, + 0xce, 0x00, 0xce, 0x00, 0xdb, 0x00, 0xdb, 0x00, 0xe5, 0x00, 0xe4, 0x00, + 0xef, 0x00, 0xef, 0x00, 0xf8, 0x00, 0xfa, 0x00, 0x01, 0x01, 0x02, 0x01, + 0x0c, 0x01, 0x0b, 0x01, 0x13, 0x01, 0x14, 0x01, 0x1b, 0x01, 0x1a, 0x01, + 0x22, 0x01, 0x23, 0x01, 0x26, 0x01, 0x28, 0x01, 0x2e, 0x01, 0x2d, 0x01, + 0x31, 0x01, 0x33, 0x01, 0x37, 0x01, 0x38, 0x01, 0x3d, 0x01, 0x3c, 0x01, + 0x3e, 0x01, 0x40, 0x01, 0x43, 0x01, 0x42, 0x01, 0x45, 0x01, 0x46, 0x01, + 0x49, 0x01, 0x4a, 0x01, 0x48, 0x01, 0x4a, 0x01, 0x4d, 0x01, 0x4d, 0x01, + 0x4c, 0x01, 0x4d, 0x01, 0x4d, 0x01, 0x4f, 0x01, 0x4e, 0x01, 0x4e, 0x01, + 0x4d, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x4a, 0x01, 0x4d, 0x01, + 0x4c, 0x01, 0x4c, 0x01, 0x49, 0x01, 0x4a, 0x01, 0x47, 0x01, 0x48, 0x01, + 0x48, 0x01, 0x46, 0x01, 0x41, 0x01, 0x44, 0x01, 0x42, 0x01, 0x42, 0x01, + 0x3a, 0x01, 0x3a, 0x01, 0x39, 0x01, 0x3a, 0x01, 0x32, 0x01, 0x32, 0x01, + 0x2f, 0x01, 0x2f, 0x01, 0x28, 0x01, 0x2a, 0x01, 0x23, 0x01, 0x21, 0x01, + 0x1c, 0x01, 0x1d, 0x01, 0x12, 0x01, 0x12, 0x01, 0x0e, 0x01, 0x0e, 0x01, + 0x03, 0x01, 0x06, 0x01, 0xfe, 0x00, 0xfd, 0x00, 0xf4, 0x00, 0xf4, 0x00, + 0xe8, 0x00, 0xea, 0x00, 0xe1, 0x00, 0xe1, 0x00, 0xd6, 0x00, 0xd7, 0x00, + 0xcc, 0x00, 0xcb, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xb5, 0x00, 0xb6, 0x00, + 0xaa, 0x00, 0xaa, 0x00, 0xa0, 0x00, 0x9f, 0x00, 0x92, 0x00, 0x93, 0x00, + 0x89, 0x00, 0x86, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x71, 0x00, 0x71, 0x00, + 0x65, 0x00, 0x66, 0x00, 0x5c, 0x00, 0x5a, 0x00, 0x50, 0x00, 0x51, 0x00, + 0x46, 0x00, 0x45, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x30, 0x00, 0x31, 0x00, + 0x2b, 0x00, 0x28, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x19, 0x00, 0x16, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x07, 0x00, 0x06, 0x00, 0x03, 0x00, 0x02, 0x00, + 0xf9, 0xff, 0xf9, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xef, 0xff, 0xee, 0xff, + 0xe8, 0xff, 0xea, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xdd, 0xff, 0xdd, 0xff, + 0xdb, 0xff, 0xda, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xd0, 0xff, 0xd1, 0xff, + 0xcd, 0xff, 0xcc, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc4, 0xff, 0xc4, 0xff, + 0xc0, 0xff, 0xc0, 0xff, 0xbb, 0xff, 0xb9, 0xff, 0xb7, 0xff, 0xb9, 0xff, + 0xb2, 0xff, 0xaf, 0xff, 0xad, 0xff, 0xae, 0xff, 0xa8, 0xff, 0xa9, 0xff, + 0xa2, 0xff, 0x9e, 0xff, 0x9a, 0xff, 0x9c, 0xff, 0x96, 0xff, 0x93, 0xff, + 0x8d, 0xff, 0x8f, 0xff, 0x89, 0xff, 0x87, 0xff, 0x7d, 0xff, 0x7d, 0xff, + 0x76, 0xff, 0x77, 0xff, 0x6e, 0xff, 0x6d, 0xff, 0x63, 0xff, 0x63, 0xff, + 0x5d, 0xff, 0x5e, 0xff, 0x50, 0xff, 0x51, 0xff, 0x4b, 0xff, 0x4a, 0xff, + 0x3e, 0xff, 0x3f, 0xff, 0x36, 0xff, 0x36, 0xff, 0x2b, 0xff, 0x2c, 0xff, + 0x1e, 0xff, 0x1e, 0xff, 0x18, 0xff, 0x19, 0xff, 0x0c, 0xff, 0x0c, 0xff, + 0x03, 0xff, 0x02, 0xff, 0xfb, 0xfe, 0xfd, 0xfe, 0xee, 0xfe, 0xef, 0xfe, + 0xe9, 0xfe, 0xe9, 0xfe, 0xdf, 0xfe, 0xe0, 0xfe, 0xd8, 0xfe, 0xd9, 0xfe, + 0xd2, 0xfe, 0xd2, 0xfe, 0xcb, 0xfe, 0xcc, 0xfe, 0xc6, 0xfe, 0xc6, 0xfe, + 0xc1, 0xfe, 0xc2, 0xfe, 0xbc, 0xfe, 0xbb, 0xfe, 0xba, 0xfe, 0xba, 0xfe, + 0xb6, 0xfe, 0xb6, 0xfe, 0xb4, 0xfe, 0xb5, 0xfe, 0xb4, 0xfe, 0xb4, 0xfe, + 0xb2, 0xfe, 0xb1, 0xfe, 0xb3, 0xfe, 0xb3, 0xfe, 0xb4, 0xfe, 0xb5, 0xfe, + 0xb6, 0xfe, 0xb5, 0xfe, 0xb9, 0xfe, 0xb9, 0xfe, 0xbd, 0xfe, 0xb9, 0xfe, + 0xbf, 0xfe, 0xc0, 0xfe, 0xc4, 0xfe, 0xc2, 0xfe, 0xc9, 0xfe, 0xc9, 0xfe, + 0xcc, 0xfe, 0xcb, 0xfe, 0xd4, 0xfe, 0xd2, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, + 0xde, 0xfe, 0xdc, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0xeb, 0xfe, 0xea, 0xfe, + 0xf4, 0xfe, 0xf4, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, 0x02, 0xff, 0x00, 0xff, + 0x0b, 0xff, 0x0b, 0xff, 0x13, 0xff, 0x11, 0xff, 0x19, 0xff, 0x17, 0xff, + 0x22, 0xff, 0x23, 0xff, 0x2a, 0xff, 0x28, 0xff, 0x31, 0xff, 0x32, 0xff, + 0x39, 0xff, 0x38, 0xff, 0x41, 0xff, 0x40, 0xff, 0x4a, 0xff, 0x48, 0xff, + 0x51, 0xff, 0x51, 0xff, 0x5b, 0xff, 0x5a, 0xff, 0x60, 0xff, 0x61, 0xff, + 0x6b, 0xff, 0x6a, 0xff, 0x72, 0xff, 0x74, 0xff, 0x7d, 0xff, 0x7b, 0xff, + 0x85, 0xff, 0x86, 0xff, 0x8f, 0xff, 0x8e, 0xff, 0x98, 0xff, 0x98, 0xff, + 0xa2, 0xff, 0xa1, 0xff, 0xab, 0xff, 0xab, 0xff, 0xb5, 0xff, 0xb5, 0xff, + 0xbf, 0xff, 0xbe, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xd6, 0xff, 0xd4, 0xff, + 0xdd, 0xff, 0xdf, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x21, 0x00, 0x21, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x40, 0x00, 0x41, 0x00, 0x4a, 0x00, 0x49, 0x00, 0x55, 0x00, 0x57, 0x00, + 0x60, 0x00, 0x5f, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x72, 0x00, 0x73, 0x00, + 0x7c, 0x00, 0x7c, 0x00, 0x86, 0x00, 0x87, 0x00, 0x8d, 0x00, 0x8d, 0x00, + 0x95, 0x00, 0x97, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0xa5, 0x00, 0xa7, 0x00, + 0xad, 0x00, 0xab, 0x00, 0xb1, 0x00, 0xb4, 0x00, 0xb9, 0x00, 0xb9, 0x00, + 0xbd, 0x00, 0xbf, 0x00, 0xc5, 0x00, 0xc4, 0x00, 0xc9, 0x00, 0xc9, 0x00, + 0xd0, 0x00, 0xcf, 0x00, 0xd4, 0x00, 0xd4, 0x00, 0xd9, 0x00, 0xd9, 0x00, + 0xdd, 0x00, 0xdd, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0xe4, 0x00, 0xe4, 0x00, + 0xeb, 0x00, 0xeb, 0x00, 0xec, 0x00, 0xec, 0x00, 0xf2, 0x00, 0xf3, 0x00, + 0xf4, 0x00, 0xf5, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfe, 0x00, 0xff, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x06, 0x01, 0x06, 0x01, 0x07, 0x01, 0x09, 0x01, + 0x10, 0x01, 0x0f, 0x01, 0x12, 0x01, 0x12, 0x01, 0x19, 0x01, 0x19, 0x01, + 0x1c, 0x01, 0x1c, 0x01, 0x1f, 0x01, 0x21, 0x01, 0x26, 0x01, 0x24, 0x01, + 0x29, 0x01, 0x28, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0x30, 0x01, 0x30, 0x01, + 0x36, 0x01, 0x35, 0x01, 0x38, 0x01, 0x38, 0x01, 0x3b, 0x01, 0x3b, 0x01, + 0x40, 0x01, 0x3f, 0x01, 0x40, 0x01, 0x41, 0x01, 0x42, 0x01, 0x42, 0x01, + 0x44, 0x01, 0x42, 0x01, 0x42, 0x01, 0x43, 0x01, 0x44, 0x01, 0x43, 0x01, + 0x42, 0x01, 0x42, 0x01, 0x40, 0x01, 0x42, 0x01, 0x40, 0x01, 0x3e, 0x01, + 0x3b, 0x01, 0x3c, 0x01, 0x38, 0x01, 0x35, 0x01, 0x31, 0x01, 0x34, 0x01, + 0x2d, 0x01, 0x2a, 0x01, 0x25, 0x01, 0x27, 0x01, 0x1e, 0x01, 0x1c, 0x01, + 0x15, 0x01, 0x15, 0x01, 0x0e, 0x01, 0x0d, 0x01, 0x03, 0x01, 0x03, 0x01, + 0xf8, 0x00, 0xf7, 0x00, 0xee, 0x00, 0xed, 0x00, 0xe2, 0x00, 0xe0, 0x00, + 0xd6, 0x00, 0xd7, 0x00, 0xc7, 0x00, 0xc7, 0x00, 0xbc, 0x00, 0xbc, 0x00, + 0xac, 0x00, 0xad, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x91, 0x00, 0x91, 0x00, + 0x85, 0x00, 0x85, 0x00, 0x76, 0x00, 0x75, 0x00, 0x67, 0x00, 0x68, 0x00, + 0x5c, 0x00, 0x5b, 0x00, 0x4c, 0x00, 0x4b, 0x00, 0x40, 0x00, 0x40, 0x00, + 0x32, 0x00, 0x32, 0x00, 0x26, 0x00, 0x25, 0x00, 0x1a, 0x00, 0x1c, 0x00, + 0x10, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x04, 0x00, 0xfa, 0xff, 0xfa, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xdc, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xc4, 0xff, 0xc5, 0xff, + 0xbe, 0xff, 0xbf, 0xff, 0xb7, 0xff, 0xb6, 0xff, 0xaf, 0xff, 0xb1, 0xff, + 0xab, 0xff, 0xa9, 0xff, 0xa3, 0xff, 0xa5, 0xff, 0x9e, 0xff, 0x9e, 0xff, + 0x99, 0xff, 0x99, 0xff, 0x93, 0xff, 0x94, 0xff, 0x90, 0xff, 0x8f, 0xff, + 0x89, 0xff, 0x8b, 0xff, 0x85, 0xff, 0x85, 0xff, 0x7d, 0xff, 0x81, 0xff, + 0x7a, 0xff, 0x7a, 0xff, 0x74, 0xff, 0x77, 0xff, 0x71, 0xff, 0x72, 0xff, + 0x6c, 0xff, 0x6b, 0xff, 0x65, 0xff, 0x66, 0xff, 0x60, 0xff, 0x60, 0xff, + 0x5b, 0xff, 0x5d, 0xff, 0x56, 0xff, 0x55, 0xff, 0x4e, 0xff, 0x4f, 0xff, + 0x4b, 0xff, 0x4c, 0xff, 0x44, 0xff, 0x44, 0xff, 0x3d, 0xff, 0x3f, 0xff, + 0x38, 0xff, 0x38, 0xff, 0x31, 0xff, 0x31, 0xff, 0x2b, 0xff, 0x2d, 0xff, + 0x28, 0xff, 0x27, 0xff, 0x21, 0xff, 0x22, 0xff, 0x1c, 0xff, 0x1d, 0xff, + 0x16, 0xff, 0x17, 0xff, 0x12, 0xff, 0x13, 0xff, 0x0d, 0xff, 0x0f, 0xff, + 0x09, 0xff, 0x08, 0xff, 0x05, 0xff, 0x07, 0xff, 0xff, 0xfe, 0xff, 0xfe, + 0xfe, 0xfe, 0xff, 0xfe, 0xf9, 0xfe, 0xf9, 0xfe, 0xf7, 0xfe, 0xf8, 0xfe, + 0xf5, 0xfe, 0xf4, 0xfe, 0xf1, 0xfe, 0xf3, 0xfe, 0xf1, 0xfe, 0xf2, 0xfe, + 0xee, 0xfe, 0xf0, 0xfe, 0xef, 0xfe, 0xee, 0xfe, 0xec, 0xfe, 0xee, 0xfe, + 0xec, 0xfe, 0xec, 0xfe, 0xec, 0xfe, 0xed, 0xfe, 0xeb, 0xfe, 0xea, 0xfe, + 0xec, 0xfe, 0xed, 0xfe, 0xeb, 0xfe, 0xea, 0xfe, 0xed, 0xfe, 0xed, 0xfe, + 0xeb, 0xfe, 0xeb, 0xfe, 0xed, 0xfe, 0xee, 0xfe, 0xef, 0xfe, 0xee, 0xfe, + 0xed, 0xfe, 0xee, 0xfe, 0xf1, 0xfe, 0xef, 0xfe, 0xef, 0xfe, 0xf0, 0xfe, + 0xf3, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, + 0xf5, 0xfe, 0xf5, 0xfe, 0xf9, 0xfe, 0xf8, 0xfe, 0xf9, 0xfe, 0xf8, 0xfe, + 0xfb, 0xfe, 0xfc, 0xfe, 0xfd, 0xfe, 0xfe, 0xfe, 0x00, 0xff, 0x00, 0xff, + 0x03, 0xff, 0x01, 0xff, 0x04, 0xff, 0x08, 0xff, 0x0c, 0xff, 0x0a, 0xff, + 0x0d, 0xff, 0x0f, 0xff, 0x13, 0xff, 0x14, 0xff, 0x18, 0xff, 0x18, 0xff, + 0x1e, 0xff, 0x1e, 0xff, 0x24, 0xff, 0x23, 0xff, 0x2c, 0xff, 0x2b, 0xff, + 0x32, 0xff, 0x33, 0xff, 0x3c, 0xff, 0x3b, 0xff, 0x44, 0xff, 0x44, 0xff, + 0x4f, 0xff, 0x4e, 0xff, 0x59, 0xff, 0x59, 0xff, 0x64, 0xff, 0x63, 0xff, + 0x70, 0xff, 0x70, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x8b, 0xff, 0x8a, 0xff, + 0x96, 0xff, 0x96, 0xff, 0xa6, 0xff, 0xa7, 0xff, 0xb5, 0xff, 0xb4, 0xff, + 0xc4, 0xff, 0xc6, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xe2, 0xff, + 0xf4, 0xff, 0xf6, 0xff, 0x03, 0x00, 0x01, 0x00, 0x13, 0x00, 0x14, 0x00, + 0x22, 0x00, 0x23, 0x00, 0x34, 0x00, 0x33, 0x00, 0x44, 0x00, 0x44, 0x00, + 0x51, 0x00, 0x52, 0x00, 0x64, 0x00, 0x61, 0x00, 0x70, 0x00, 0x71, 0x00, + 0x80, 0x00, 0x7f, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x97, 0x00, 0x98, 0x00, + 0xa6, 0x00, 0xa3, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xba, 0x00, 0xb9, 0x00, + 0xc4, 0x00, 0xc3, 0x00, 0xcd, 0x00, 0xcd, 0x00, 0xd5, 0x00, 0xd5, 0x00, + 0xdd, 0x00, 0xdc, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0xe8, 0x00, 0xe9, 0x00, + 0xee, 0x00, 0xed, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0xf5, 0x00, 0xf6, 0x00, + 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfd, 0x00, 0xfd, 0x00, + 0xfd, 0x00, 0xfc, 0x00, 0xfd, 0x00, 0x00, 0x01, 0x01, 0x01, 0xfe, 0x00, + 0xff, 0x00, 0x02, 0x01, 0x00, 0x01, 0xfe, 0x00, 0x01, 0x01, 0x00, 0x01, + 0xff, 0x00, 0x00, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x01, 0xff, 0x00, + 0x01, 0x01, 0x03, 0x01, 0x00, 0x01, 0xff, 0x00, 0x01, 0x01, 0x00, 0x01, + 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x01, 0x03, 0x01, + 0x02, 0x01, 0x04, 0x01, 0x07, 0x01, 0x05, 0x01, 0x06, 0x01, 0x06, 0x01, + 0x08, 0x01, 0x07, 0x01, 0x08, 0x01, 0x09, 0x01, 0x09, 0x01, 0x08, 0x01, + 0x0c, 0x01, 0x0b, 0x01, 0x0b, 0x01, 0x0d, 0x01, 0x0d, 0x01, 0x0c, 0x01, + 0x0c, 0x01, 0x0d, 0x01, 0x10, 0x01, 0x0f, 0x01, 0x0f, 0x01, 0x11, 0x01, + 0x11, 0x01, 0x10, 0x01, 0x10, 0x01, 0x0f, 0x01, 0x0f, 0x01, 0x11, 0x01, + 0x0e, 0x01, 0x0e, 0x01, 0x0e, 0x01, 0x0f, 0x01, 0x0d, 0x01, 0x0b, 0x01, + 0x09, 0x01, 0x0a, 0x01, 0x08, 0x01, 0x07, 0x01, 0x02, 0x01, 0x03, 0x01, + 0x00, 0x01, 0xff, 0x00, 0xfb, 0x00, 0xfc, 0x00, 0xf5, 0x00, 0xf5, 0x00, + 0xf1, 0x00, 0xf1, 0x00, 0xe9, 0x00, 0xe8, 0x00, 0xe4, 0x00, 0xe5, 0x00, + 0xdf, 0x00, 0xdd, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0xd0, 0x00, 0xcf, 0x00, + 0xc7, 0x00, 0xc7, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xb8, 0x00, 0xb7, 0x00, + 0xae, 0x00, 0xae, 0x00, 0xa8, 0x00, 0xa6, 0x00, 0x9c, 0x00, 0x9d, 0x00, + 0x95, 0x00, 0x94, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x83, 0x00, 0x82, 0x00, + 0x78, 0x00, 0x77, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x66, 0x00, + 0x5b, 0x00, 0x5d, 0x00, 0x54, 0x00, 0x54, 0x00, 0x4c, 0x00, 0x4d, 0x00, + 0x42, 0x00, 0x43, 0x00, 0x3c, 0x00, 0x3b, 0x00, 0x30, 0x00, 0x31, 0x00, + 0x29, 0x00, 0x28, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x1a, 0x00, 0x19, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x07, 0x00, 0x07, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0xee, 0xff, 0xee, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xdb, 0xff, 0xda, 0xff, 0xd2, 0xff, 0xd1, 0xff, 0xc7, 0xff, 0xc8, 0xff, + 0xbf, 0xff, 0xc0, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xaa, 0xff, 0xaa, 0xff, + 0xa0, 0xff, 0xa1, 0xff, 0x95, 0xff, 0x95, 0xff, 0x8b, 0xff, 0x8a, 0xff, + 0x81, 0xff, 0x81, 0xff, 0x75, 0xff, 0x74, 0xff, 0x6c, 0xff, 0x6b, 0xff, + 0x5f, 0xff, 0x60, 0xff, 0x57, 0xff, 0x54, 0xff, 0x4a, 0xff, 0x4c, 0xff, + 0x41, 0xff, 0x3f, 0xff, 0x37, 0xff, 0x37, 0xff, 0x2b, 0xff, 0x2c, 0xff, + 0x24, 0xff, 0x23, 0xff, 0x19, 0xff, 0x18, 0xff, 0x12, 0xff, 0x10, 0xff, + 0x08, 0xff, 0x0a, 0xff, 0x01, 0xff, 0x01, 0xff, 0xfa, 0xfe, 0xfa, 0xfe, + 0xf3, 0xfe, 0xf3, 0xfe, 0xeb, 0xfe, 0xeb, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, + 0xe3, 0xfe, 0xe2, 0xfe, 0xdf, 0xfe, 0xe0, 0xfe, 0xde, 0xfe, 0xde, 0xfe, + 0xdb, 0xfe, 0xd9, 0xfe, 0xdb, 0xfe, 0xdc, 0xfe, 0xdb, 0xfe, 0xd8, 0xfe, + 0xd9, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xda, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, + 0xe0, 0xfe, 0xdf, 0xfe, 0xdf, 0xfe, 0xe0, 0xfe, 0xe3, 0xfe, 0xe4, 0xfe, + 0xe6, 0xfe, 0xe7, 0xfe, 0xeb, 0xfe, 0xea, 0xfe, 0xee, 0xfe, 0xee, 0xfe, + 0xf3, 0xfe, 0xf4, 0xfe, 0xf6, 0xfe, 0xf5, 0xfe, 0xfa, 0xfe, 0xfc, 0xfe, + 0xff, 0xfe, 0xfd, 0xfe, 0x02, 0xff, 0x05, 0xff, 0x06, 0xff, 0x05, 0xff, + 0x0d, 0xff, 0x0d, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x14, 0xff, 0x13, 0xff, + 0x18, 0xff, 0x18, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1e, 0xff, 0x1e, 0xff, + 0x1d, 0xff, 0x1d, 0xff, 0x22, 0xff, 0x23, 0xff, 0x22, 0xff, 0x23, 0xff, + 0x25, 0xff, 0x24, 0xff, 0x27, 0xff, 0x28, 0xff, 0x27, 0xff, 0x25, 0xff, + 0x29, 0xff, 0x2a, 0xff, 0x29, 0xff, 0x28, 0xff, 0x2b, 0xff, 0x2b, 0xff, + 0x2c, 0xff, 0x2c, 0xff, 0x2d, 0xff, 0x2d, 0xff, 0x2f, 0xff, 0x2d, 0xff, + 0x2f, 0xff, 0x31, 0xff, 0x31, 0xff, 0x31, 0xff, 0x35, 0xff, 0x33, 0xff, + 0x34, 0xff, 0x36, 0xff, 0x3a, 0xff, 0x39, 0xff, 0x3d, 0xff, 0x3d, 0xff, + 0x42, 0xff, 0x41, 0xff, 0x45, 0xff, 0x44, 0xff, 0x4a, 0xff, 0x4b, 0xff, + 0x51, 0xff, 0x50, 0xff, 0x58, 0xff, 0x58, 0xff, 0x5f, 0xff, 0x5e, 0xff, + 0x68, 0xff, 0x68, 0xff, 0x72, 0xff, 0x71, 0xff, 0x7b, 0xff, 0x7b, 0xff, + 0x86, 0xff, 0x86, 0xff, 0x92, 0xff, 0x8f, 0xff, 0x9c, 0xff, 0x9d, 0xff, + 0xaa, 0xff, 0xa7, 0xff, 0xb6, 0xff, 0xb7, 0xff, 0xc3, 0xff, 0xc4, 0xff, + 0xd2, 0xff, 0xd1, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xeb, 0xff, 0xec, 0xff, + 0xfd, 0xff, 0xfb, 0xff, 0x09, 0x00, 0x0a, 0x00, 0x16, 0x00, 0x16, 0x00, + 0x28, 0x00, 0x26, 0x00, 0x32, 0x00, 0x32, 0x00, 0x44, 0x00, 0x44, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x5f, 0x00, 0x5e, 0x00, 0x6c, 0x00, 0x6c, 0x00, + 0x79, 0x00, 0x78, 0x00, 0x86, 0x00, 0x87, 0x00, 0x92, 0x00, 0x91, 0x00, + 0x9c, 0x00, 0x9e, 0x00, 0xa9, 0x00, 0xa8, 0x00, 0xb2, 0x00, 0xb4, 0x00, + 0xbf, 0x00, 0xbd, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xd0, 0x00, 0xd0, 0x00, + 0xd9, 0x00, 0xd8, 0x00, 0xe0, 0x00, 0xe2, 0x00, 0xe8, 0x00, 0xe7, 0x00, + 0xf0, 0x00, 0xef, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xfd, 0x00, 0xfb, 0x00, + 0xff, 0x00, 0xff, 0x00, 0x06, 0x01, 0x06, 0x01, 0x0a, 0x01, 0x0a, 0x01, + 0x10, 0x01, 0x10, 0x01, 0x16, 0x01, 0x14, 0x01, 0x18, 0x01, 0x19, 0x01, + 0x1e, 0x01, 0x1d, 0x01, 0x21, 0x01, 0x21, 0x01, 0x25, 0x01, 0x24, 0x01, + 0x29, 0x01, 0x28, 0x01, 0x2b, 0x01, 0x2a, 0x01, 0x2e, 0x01, 0x2f, 0x01, + 0x2f, 0x01, 0x2e, 0x01, 0x31, 0x01, 0x31, 0x01, 0x32, 0x01, 0x32, 0x01, + 0x33, 0x01, 0x33, 0x01, 0x35, 0x01, 0x36, 0x01, 0x35, 0x01, 0x33, 0x01, + 0x36, 0x01, 0x37, 0x01, 0x36, 0x01, 0x36, 0x01, 0x34, 0x01, 0x34, 0x01, + 0x34, 0x01, 0x34, 0x01, 0x31, 0x01, 0x31, 0x01, 0x2f, 0x01, 0x2f, 0x01, + 0x2d, 0x01, 0x2d, 0x01, 0x28, 0x01, 0x28, 0x01, 0x26, 0x01, 0x25, 0x01, + 0x20, 0x01, 0x21, 0x01, 0x1b, 0x01, 0x1a, 0x01, 0x17, 0x01, 0x18, 0x01, + 0x10, 0x01, 0x10, 0x01, 0x09, 0x01, 0x09, 0x01, 0x04, 0x01, 0x02, 0x01, + 0xfa, 0x00, 0xfb, 0x00, 0xf5, 0x00, 0xf3, 0x00, 0xea, 0x00, 0xeb, 0x00, + 0xe2, 0x00, 0xe3, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xd3, 0x00, 0xd0, 0x00, + 0xc5, 0x00, 0xc6, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xb3, 0x00, 0xb2, 0x00, + 0xa9, 0x00, 0xab, 0x00, 0xa0, 0x00, 0x9f, 0x00, 0x97, 0x00, 0x99, 0x00, + 0x8f, 0x00, 0x8e, 0x00, 0x86, 0x00, 0x86, 0x00, 0x7f, 0x00, 0x7e, 0x00, + 0x76, 0x00, 0x76, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x67, 0x00, + 0x5e, 0x00, 0x5f, 0x00, 0x5b, 0x00, 0x5a, 0x00, 0x52, 0x00, 0x53, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x47, 0x00, 0x48, 0x00, 0x46, 0x00, 0x47, 0x00, + 0x40, 0x00, 0x41, 0x00, 0x3b, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x3a, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x33, 0x00, 0x32, 0x00, 0x2b, 0x00, 0x2c, 0x00, + 0x29, 0x00, 0x2a, 0x00, 0x26, 0x00, 0x27, 0x00, 0x22, 0x00, 0x21, 0x00, + 0x1f, 0x00, 0x21, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x12, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, + 0x03, 0x00, 0x02, 0x00, 0xfb, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xdc, 0xff, 0xdb, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xca, 0xff, 0xca, 0xff, 0xbf, 0xff, 0xc0, 0xff, + 0xb6, 0xff, 0xb7, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0x9e, 0xff, 0x9e, 0xff, + 0x92, 0xff, 0x93, 0xff, 0x86, 0xff, 0x85, 0xff, 0x7b, 0xff, 0x7c, 0xff, + 0x6d, 0xff, 0x6d, 0xff, 0x63, 0xff, 0x64, 0xff, 0x55, 0xff, 0x54, 0xff, + 0x49, 0xff, 0x49, 0xff, 0x3d, 0xff, 0x3c, 0xff, 0x2f, 0xff, 0x31, 0xff, + 0x26, 0xff, 0x24, 0xff, 0x1b, 0xff, 0x1b, 0xff, 0x0d, 0xff, 0x0d, 0xff, + 0x06, 0xff, 0x06, 0xff, 0xfc, 0xfe, 0xfc, 0xfe, 0xf3, 0xfe, 0xf3, 0xfe, + 0xec, 0xfe, 0xec, 0xfe, 0xe4, 0xfe, 0xe2, 0xfe, 0xdd, 0xfe, 0xde, 0xfe, + 0xd7, 0xfe, 0xd6, 0xfe, 0xd1, 0xfe, 0xd3, 0xfe, 0xcd, 0xfe, 0xce, 0xfe, + 0xc9, 0xfe, 0xcc, 0xfe, 0xc9, 0xfe, 0xc8, 0xfe, 0xc6, 0xfe, 0xc7, 0xfe, + 0xc4, 0xfe, 0xc5, 0xfe, 0xc4, 0xfe, 0xc3, 0xfe, 0xc3, 0xfe, 0xc7, 0xfe, + 0xc6, 0xfe, 0xc5, 0xfe, 0xc4, 0xfe, 0xc7, 0xfe, 0xc9, 0xfe, 0xc8, 0xfe, + 0xc8, 0xfe, 0xc9, 0xfe, 0xcd, 0xfe, 0xcc, 0xfe, 0xcf, 0xfe, 0xcf, 0xfe, + 0xd1, 0xfe, 0xd0, 0xfe, 0xd5, 0xfe, 0xd8, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, + 0xdf, 0xfe, 0xde, 0xfe, 0xe2, 0xfe, 0xe3, 0xfe, 0xe6, 0xfe, 0xe4, 0xfe, + 0xeb, 0xfe, 0xec, 0xfe, 0xf0, 0xfe, 0xef, 0xfe, 0xf4, 0xfe, 0xf4, 0xfe, + 0xf7, 0xfe, 0xf8, 0xfe, 0xfc, 0xfe, 0xfc, 0xfe, 0x03, 0xff, 0x02, 0xff, + 0x06, 0xff, 0x07, 0xff, 0x0e, 0xff, 0x0d, 0xff, 0x11, 0xff, 0x11, 0xff, + 0x17, 0xff, 0x17, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0x22, 0xff, 0x22, 0xff, + 0x29, 0xff, 0x28, 0xff, 0x2f, 0xff, 0x30, 0xff, 0x36, 0xff, 0x34, 0xff, + 0x3c, 0xff, 0x3e, 0xff, 0x43, 0xff, 0x41, 0xff, 0x49, 0xff, 0x4b, 0xff, + 0x53, 0xff, 0x52, 0xff, 0x59, 0xff, 0x5a, 0xff, 0x61, 0xff, 0x62, 0xff, + 0x6b, 0xff, 0x6b, 0xff, 0x72, 0xff, 0x73, 0xff, 0x7e, 0xff, 0x7d, 0xff, + 0x85, 0xff, 0x85, 0xff, 0x8e, 0xff, 0x8f, 0xff, 0x99, 0xff, 0x99, 0xff, + 0xa1, 0xff, 0xa2, 0xff, 0xae, 0xff, 0xae, 0xff, 0xb7, 0xff, 0xb6, 0xff, + 0xc2, 0xff, 0xc3, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xd7, 0xff, 0xd7, 0xff, + 0xe2, 0xff, 0xe2, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0x28, 0x00, 0x27, 0x00, 0x2f, 0x00, 0x31, 0x00, + 0x3b, 0x00, 0x39, 0x00, 0x42, 0x00, 0x41, 0x00, 0x49, 0x00, 0x4a, 0x00, + 0x53, 0x00, 0x51, 0x00, 0x59, 0x00, 0x58, 0x00, 0x61, 0x00, 0x61, 0x00, + 0x68, 0x00, 0x67, 0x00, 0x6e, 0x00, 0x6d, 0x00, 0x76, 0x00, 0x76, 0x00, + 0x7a, 0x00, 0x7b, 0x00, 0x83, 0x00, 0x83, 0x00, 0x86, 0x00, 0x86, 0x00, + 0x8f, 0x00, 0x8e, 0x00, 0x92, 0x00, 0x93, 0x00, 0x9a, 0x00, 0x99, 0x00, + 0x9d, 0x00, 0x9f, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0xad, 0x00, 0xab, 0x00, + 0xad, 0x00, 0xaf, 0x00, 0xb7, 0x00, 0xb6, 0x00, 0xbc, 0x00, 0xbd, 0x00, + 0xc2, 0x00, 0xc1, 0x00, 0xca, 0x00, 0xca, 0x00, 0xcd, 0x00, 0xce, 0x00, + 0xd8, 0x00, 0xd8, 0x00, 0xdd, 0x00, 0xdd, 0x00, 0xe4, 0x00, 0xe5, 0x00, + 0xee, 0x00, 0xec, 0x00, 0xf0, 0x00, 0xf3, 0x00, 0xfd, 0x00, 0xfb, 0x00, + 0x00, 0x01, 0x02, 0x01, 0x0b, 0x01, 0x09, 0x01, 0x10, 0x01, 0x10, 0x01, + 0x18, 0x01, 0x19, 0x01, 0x1f, 0x01, 0x1d, 0x01, 0x23, 0x01, 0x25, 0x01, + 0x2d, 0x01, 0x2b, 0x01, 0x2f, 0x01, 0x30, 0x01, 0x35, 0x01, 0x35, 0x01, + 0x3a, 0x01, 0x38, 0x01, 0x3d, 0x01, 0x3f, 0x01, 0x42, 0x01, 0x41, 0x01, + 0x44, 0x01, 0x43, 0x01, 0x44, 0x01, 0x46, 0x01, 0x49, 0x01, 0x47, 0x01, + 0x47, 0x01, 0x45, 0x01, 0x47, 0x01, 0x48, 0x01, 0x43, 0x01, 0x43, 0x01, + 0x43, 0x01, 0x43, 0x01, 0x3d, 0x01, 0x3d, 0x01, 0x3b, 0x01, 0x3b, 0x01, + 0x35, 0x01, 0x34, 0x01, 0x30, 0x01, 0x2f, 0x01, 0x26, 0x01, 0x28, 0x01, + 0x23, 0x01, 0x20, 0x01, 0x18, 0x01, 0x19, 0x01, 0x10, 0x01, 0x0f, 0x01, + 0x07, 0x01, 0x06, 0x01, 0xfc, 0x00, 0xfd, 0x00, 0xf3, 0x00, 0xf2, 0x00, + 0xe7, 0x00, 0xe6, 0x00, 0xdc, 0x00, 0xde, 0x00, 0xd1, 0x00, 0xd0, 0x00, + 0xc5, 0x00, 0xc5, 0x00, 0xba, 0x00, 0xba, 0x00, 0xb1, 0x00, 0xb0, 0x00, + 0xa1, 0x00, 0xa3, 0x00, 0x9a, 0x00, 0x97, 0x00, 0x8d, 0x00, 0x8e, 0x00, + 0x81, 0x00, 0x7f, 0x00, 0x78, 0x00, 0x79, 0x00, 0x6c, 0x00, 0x6a, 0x00, + 0x62, 0x00, 0x63, 0x00, 0x59, 0x00, 0x58, 0x00, 0x50, 0x00, 0x4f, 0x00, + 0x46, 0x00, 0x47, 0x00, 0x3f, 0x00, 0x3d, 0x00, 0x36, 0x00, 0x37, 0x00, + 0x2e, 0x00, 0x2d, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x22, 0x00, 0x20, 0x00, + 0x1a, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0e, 0x00, 0x0d, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x01, 0x00, 0xfd, 0xff, 0xfd, 0xff, + 0xfa, 0xff, 0xf8, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xef, 0xff, 0xee, 0xff, + 0xe9, 0xff, 0xe7, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xdf, 0xff, 0xde, 0xff, + 0xda, 0xff, 0xd7, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xcf, 0xff, 0xcd, 0xff, + 0xc6, 0xff, 0xc6, 0xff, 0xc3, 0xff, 0xc0, 0xff, 0xb9, 0xff, 0xba, 0xff, + 0xb5, 0xff, 0xb3, 0xff, 0xae, 0xff, 0xae, 0xff, 0xa6, 0xff, 0xa5, 0xff, + 0xa1, 0xff, 0xa0, 0xff, 0x98, 0xff, 0x97, 0xff, 0x90, 0xff, 0x91, 0xff, + 0x8b, 0xff, 0x8b, 0xff, 0x81, 0xff, 0x80, 0xff, 0x7b, 0xff, 0x7c, 0xff, + 0x73, 0xff, 0x71, 0xff, 0x6c, 0xff, 0x6d, 0xff, 0x64, 0xff, 0x63, 0xff, + 0x5d, 0xff, 0x5b, 0xff, 0x55, 0xff, 0x57, 0xff, 0x4f, 0xff, 0x4d, 0xff, + 0x48, 0xff, 0x49, 0xff, 0x42, 0xff, 0x43, 0xff, 0x3a, 0xff, 0x3a, 0xff, + 0x35, 0xff, 0x35, 0xff, 0x2d, 0xff, 0x2f, 0xff, 0x2a, 0xff, 0x2a, 0xff, + 0x23, 0xff, 0x24, 0xff, 0x1d, 0xff, 0x1e, 0xff, 0x19, 0xff, 0x1a, 0xff, + 0x15, 0xff, 0x15, 0xff, 0x10, 0xff, 0x10, 0xff, 0x0c, 0xff, 0x0f, 0xff, + 0x09, 0xff, 0x06, 0xff, 0x04, 0xff, 0x06, 0xff, 0x01, 0xff, 0x00, 0xff, + 0xfe, 0xfe, 0xfe, 0xfe, 0xfa, 0xfe, 0xfb, 0xfe, 0xf9, 0xfe, 0xf8, 0xfe, + 0xf2, 0xfe, 0xf4, 0xfe, 0xf2, 0xfe, 0xf2, 0xfe, 0xee, 0xfe, 0xee, 0xfe, + 0xeb, 0xfe, 0xed, 0xfe, 0xeb, 0xfe, 0xe9, 0xfe, 0xe5, 0xfe, 0xe6, 0xfe, + 0xe7, 0xfe, 0xe7, 0xfe, 0xe4, 0xfe, 0xe3, 0xfe, 0xe1, 0xfe, 0xe2, 0xfe, + 0xe0, 0xfe, 0xe0, 0xfe, 0xdd, 0xfe, 0xdb, 0xfe, 0xde, 0xfe, 0xdf, 0xfe, + 0xda, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, 0xdb, 0xfe, 0xda, 0xfe, 0xd9, 0xfe, + 0xd9, 0xfe, 0xda, 0xfe, 0xdd, 0xfe, 0xdc, 0xfe, 0xdd, 0xfe, 0xdc, 0xfe, + 0xde, 0xfe, 0xdf, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, + 0xe4, 0xfe, 0xe5, 0xfe, 0xec, 0xfe, 0xea, 0xfe, 0xee, 0xfe, 0xee, 0xfe, + 0xf4, 0xfe, 0xf5, 0xfe, 0xfc, 0xfe, 0xfa, 0xfe, 0x01, 0xff, 0x01, 0xff, + 0x0b, 0xff, 0x0b, 0xff, 0x12, 0xff, 0x12, 0xff, 0x1c, 0xff, 0x1c, 0xff, + 0x27, 0xff, 0x26, 0xff, 0x31, 0xff, 0x32, 0xff, 0x3b, 0xff, 0x3b, 0xff, + 0x4a, 0xff, 0x47, 0xff, 0x53, 0xff, 0x55, 0xff, 0x63, 0xff, 0x61, 0xff, + 0x71, 0xff, 0x71, 0xff, 0x7d, 0xff, 0x7c, 0xff, 0x8e, 0xff, 0x8e, 0xff, + 0x9c, 0xff, 0x9a, 0xff, 0xaa, 0xff, 0xab, 0xff, 0xbb, 0xff, 0xb9, 0xff, + 0xc8, 0xff, 0xc7, 0xff, 0xd8, 0xff, 0xd9, 0xff, 0xe7, 0xff, 0xe5, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x0f, 0x00, + 0x1f, 0x00, 0x21, 0x00, 0x2d, 0x00, 0x2a, 0x00, 0x3a, 0x00, 0x3a, 0x00, + 0x46, 0x00, 0x44, 0x00, 0x50, 0x00, 0x4f, 0x00, 0x5c, 0x00, 0x5c, 0x00, + 0x66, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x7a, 0x00, 0x78, 0x00, + 0x7e, 0x00, 0x80, 0x00, 0x89, 0x00, 0x88, 0x00, 0x8e, 0x00, 0x8e, 0x00, + 0x94, 0x00, 0x94, 0x00, 0x9c, 0x00, 0x9a, 0x00, 0x9e, 0x00, 0x9e, 0x00, + 0xa4, 0x00, 0xa4, 0x00, 0xa8, 0x00, 0xa6, 0x00, 0xaa, 0x00, 0xaa, 0x00, + 0xb0, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xaf, 0x00, 0xb4, 0x00, 0xb5, 0x00, + 0xb5, 0x00, 0xb3, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xba, 0x00, 0xb9, 0x00, + 0xbd, 0x00, 0xbd, 0x00, 0xc1, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc2, 0x00, + 0xc6, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc8, 0x00, 0xc8, 0x00, + 0xcc, 0x00, 0xcb, 0x00, 0xce, 0x00, 0xcd, 0x00, 0xd1, 0x00, 0xd1, 0x00, + 0xd4, 0x00, 0xd5, 0x00, 0xd9, 0x00, 0xd9, 0x00, 0xde, 0x00, 0xdc, 0x00, + 0xe1, 0x00, 0xe0, 0x00, 0xe4, 0x00, 0xe6, 0x00, 0xe9, 0x00, 0xe8, 0x00, + 0xea, 0x00, 0xed, 0x00, 0xf0, 0x00, 0xef, 0x00, 0xf2, 0x00, 0xf3, 0x00, + 0xf9, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xff, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x06, 0x01, 0x06, 0x01, 0x07, 0x01, 0x0a, 0x01, + 0x0a, 0x01, 0x0a, 0x01, 0x0c, 0x01, 0x0d, 0x01, 0x0e, 0x01, 0x0e, 0x01, + 0x11, 0x01, 0x0e, 0x01, 0x0f, 0x01, 0x11, 0x01, 0x11, 0x01, 0x0e, 0x01, + 0x0e, 0x01, 0x11, 0x01, 0x0f, 0x01, 0x0d, 0x01, 0x0d, 0x01, 0x0f, 0x01, + 0x0a, 0x01, 0x0b, 0x01, 0x09, 0x01, 0x09, 0x01, 0x05, 0x01, 0x06, 0x01, + 0x03, 0x01, 0x03, 0x01, 0x00, 0x01, 0x01, 0x01, 0xfb, 0x00, 0xfb, 0x00, + 0xf7, 0x00, 0xf7, 0x00, 0xf2, 0x00, 0xf2, 0x00, 0xee, 0x00, 0xef, 0x00, + 0xe8, 0x00, 0xe5, 0x00, 0xe3, 0x00, 0xe4, 0x00, 0xdd, 0x00, 0xdd, 0x00, + 0xd6, 0x00, 0xd5, 0x00, 0xd3, 0x00, 0xd1, 0x00, 0xc8, 0x00, 0xc8, 0x00, + 0xc3, 0x00, 0xc3, 0x00, 0xbc, 0x00, 0xbb, 0x00, 0xb4, 0x00, 0xb4, 0x00, + 0xaf, 0x00, 0xaf, 0x00, 0xa5, 0x00, 0xa4, 0x00, 0xa1, 0x00, 0xa1, 0x00, + 0x97, 0x00, 0x96, 0x00, 0x92, 0x00, 0x92, 0x00, 0x8a, 0x00, 0x8a, 0x00, + 0x83, 0x00, 0x81, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x72, 0x00, 0x70, 0x00, + 0x6d, 0x00, 0x6c, 0x00, 0x62, 0x00, 0x61, 0x00, 0x5b, 0x00, 0x59, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x4a, 0x00, 0x47, 0x00, 0x40, 0x00, 0x3f, 0x00, + 0x35, 0x00, 0x35, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x23, 0x00, 0x22, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x03, 0x00, + 0xfd, 0xff, 0xfb, 0xff, 0xee, 0xff, 0xed, 0xff, 0xe5, 0xff, 0xe5, 0xff, + 0xda, 0xff, 0xda, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xc4, 0xff, 0xc4, 0xff, + 0xb6, 0xff, 0xb4, 0xff, 0xac, 0xff, 0xac, 0xff, 0x9f, 0xff, 0x9e, 0xff, + 0x95, 0xff, 0x94, 0xff, 0x8a, 0xff, 0x8b, 0xff, 0x80, 0xff, 0x7e, 0xff, + 0x75, 0xff, 0x76, 0xff, 0x6c, 0xff, 0x6a, 0xff, 0x61, 0xff, 0x62, 0xff, + 0x5a, 0xff, 0x58, 0xff, 0x50, 0xff, 0x4f, 0xff, 0x47, 0xff, 0x47, 0xff, + 0x40, 0xff, 0x3e, 0xff, 0x38, 0xff, 0x39, 0xff, 0x32, 0xff, 0x2f, 0xff, + 0x2c, 0xff, 0x2b, 0xff, 0x24, 0xff, 0x24, 0xff, 0x23, 0xff, 0x21, 0xff, + 0x1d, 0xff, 0x1c, 0xff, 0x19, 0xff, 0x1a, 0xff, 0x18, 0xff, 0x17, 0xff, + 0x13, 0xff, 0x13, 0xff, 0x13, 0xff, 0x13, 0xff, 0x11, 0xff, 0x10, 0xff, + 0x10, 0xff, 0x10, 0xff, 0x10, 0xff, 0x0f, 0xff, 0x0e, 0xff, 0x0f, 0xff, + 0x10, 0xff, 0x0e, 0xff, 0x0d, 0xff, 0x0f, 0xff, 0x10, 0xff, 0x0e, 0xff, + 0x10, 0xff, 0x12, 0xff, 0x11, 0xff, 0x10, 0xff, 0x14, 0xff, 0x13, 0xff, + 0x15, 0xff, 0x14, 0xff, 0x15, 0xff, 0x15, 0xff, 0x15, 0xff, 0x15, 0xff, + 0x16, 0xff, 0x16, 0xff, 0x17, 0xff, 0x16, 0xff, 0x16, 0xff, 0x15, 0xff, + 0x17, 0xff, 0x17, 0xff, 0x16, 0xff, 0x15, 0xff, 0x15, 0xff, 0x17, 0xff, + 0x15, 0xff, 0x15, 0xff, 0x13, 0xff, 0x13, 0xff, 0x12, 0xff, 0x12, 0xff, + 0x11, 0xff, 0x11, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0d, 0xff, 0x0d, 0xff, + 0x0d, 0xff, 0x0d, 0xff, 0x0a, 0xff, 0x09, 0xff, 0x08, 0xff, 0x09, 0xff, + 0x07, 0xff, 0x05, 0xff, 0x06, 0xff, 0x08, 0xff, 0x04, 0xff, 0x04, 0xff, + 0x04, 0xff, 0x04, 0xff, 0x04, 0xff, 0x04, 0xff, 0x03, 0xff, 0x03, 0xff, + 0x04, 0xff, 0x04, 0xff, 0x04, 0xff, 0x04, 0xff, 0x05, 0xff, 0x05, 0xff, + 0x08, 0xff, 0x08, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x0e, 0xff, 0x0e, 0xff, + 0x11, 0xff, 0x11, 0xff, 0x17, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1c, 0xff, + 0x22, 0xff, 0x23, 0xff, 0x2b, 0xff, 0x2a, 0xff, 0x30, 0xff, 0x30, 0xff, + 0x3b, 0xff, 0x3a, 0xff, 0x43, 0xff, 0x42, 0xff, 0x4b, 0xff, 0x4d, 0xff, + 0x58, 0xff, 0x56, 0xff, 0x62, 0xff, 0x62, 0xff, 0x6e, 0xff, 0x6c, 0xff, + 0x79, 0xff, 0x79, 0xff, 0x85, 0xff, 0x85, 0xff, 0x92, 0xff, 0x92, 0xff, + 0xa0, 0xff, 0x9f, 0xff, 0xab, 0xff, 0xac, 0xff, 0xba, 0xff, 0xb9, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xe3, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0x0b, 0x00, 0x09, 0x00, + 0x17, 0x00, 0x18, 0x00, 0x24, 0x00, 0x24, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x3c, 0x00, 0x3d, 0x00, 0x4a, 0x00, 0x49, 0x00, 0x52, 0x00, 0x52, 0x00, + 0x60, 0x00, 0x5f, 0x00, 0x69, 0x00, 0x6b, 0x00, 0x74, 0x00, 0x73, 0x00, + 0x7f, 0x00, 0x7f, 0x00, 0x87, 0x00, 0x87, 0x00, 0x93, 0x00, 0x92, 0x00, + 0x9a, 0x00, 0x9a, 0x00, 0xa3, 0x00, 0xa2, 0x00, 0xaa, 0x00, 0xaa, 0x00, + 0xb3, 0x00, 0xb2, 0x00, 0xbb, 0x00, 0xbb, 0x00, 0xc0, 0x00, 0xc0, 0x00, + 0xc9, 0x00, 0xc7, 0x00, 0xce, 0x00, 0xcd, 0x00, 0xd5, 0x00, 0xd5, 0x00, + 0xdb, 0x00, 0xda, 0x00, 0xe0, 0x00, 0xdf, 0x00, 0xe7, 0x00, 0xe6, 0x00, + 0xec, 0x00, 0xec, 0x00, 0xf2, 0x00, 0xf1, 0x00, 0xf6, 0x00, 0xf4, 0x00, + 0xfb, 0x00, 0xfb, 0x00, 0xfd, 0x00, 0xfd, 0x00, 0x03, 0x01, 0x01, 0x01, + 0x04, 0x01, 0x05, 0x01, 0x0a, 0x01, 0x07, 0x01, 0x0a, 0x01, 0x0c, 0x01, + 0x0f, 0x01, 0x0d, 0x01, 0x0f, 0x01, 0x10, 0x01, 0x11, 0x01, 0x11, 0x01, + 0x14, 0x01, 0x11, 0x01, 0x12, 0x01, 0x13, 0x01, 0x17, 0x01, 0x14, 0x01, + 0x12, 0x01, 0x12, 0x01, 0x13, 0x01, 0x14, 0x01, 0x12, 0x01, 0x10, 0x01, + 0x0f, 0x01, 0x10, 0x01, 0x0f, 0x01, 0x0f, 0x01, 0x0b, 0x01, 0x0a, 0x01, + 0x09, 0x01, 0x0a, 0x01, 0x05, 0x01, 0x04, 0x01, 0x01, 0x01, 0x02, 0x01, + 0xfd, 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xf3, 0x00, 0xf3, 0x00, + 0xee, 0x00, 0xee, 0x00, 0xea, 0x00, 0xea, 0x00, 0xe4, 0x00, 0xe5, 0x00, + 0xdf, 0x00, 0xde, 0x00, 0xd9, 0x00, 0xdb, 0x00, 0xd2, 0x00, 0xd1, 0x00, + 0xce, 0x00, 0xcf, 0x00, 0xc8, 0x00, 0xc7, 0x00, 0xc2, 0x00, 0xc3, 0x00, + 0xbe, 0x00, 0xbd, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0xb4, 0x00, 0xb4, 0x00, + 0xae, 0x00, 0xac, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xa6, 0x00, 0xa5, 0x00, + 0xa2, 0x00, 0xa2, 0x00, 0x9d, 0x00, 0x9b, 0x00, 0x9a, 0x00, 0x9c, 0x00, + 0x96, 0x00, 0x95, 0x00, 0x95, 0x00, 0x94, 0x00, 0x91, 0x00, 0x91, 0x00, + 0x8e, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x88, 0x00, 0x89, 0x00, + 0x88, 0x00, 0x87, 0x00, 0x85, 0x00, 0x86, 0x00, 0x84, 0x00, 0x83, 0x00, + 0x81, 0x00, 0x80, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x7c, 0x00, 0x7b, 0x00, + 0x77, 0x00, 0x7b, 0x00, 0x76, 0x00, 0x75, 0x00, 0x72, 0x00, 0x71, 0x00, + 0x6d, 0x00, 0x6d, 0x00, 0x68, 0x00, 0x69, 0x00, 0x65, 0x00, 0x63, 0x00, + 0x5d, 0x00, 0x5d, 0x00, 0x56, 0x00, 0x56, 0x00, 0x50, 0x00, 0x4f, 0x00, + 0x48, 0x00, 0x49, 0x00, 0x41, 0x00, 0x3e, 0x00, 0x37, 0x00, 0x39, 0x00, + 0x30, 0x00, 0x2f, 0x00, 0x24, 0x00, 0x25, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x04, 0x00, 0x03, 0x00, 0xf7, 0xff, 0xf9, 0xff, + 0xed, 0xff, 0xea, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xd3, 0xff, 0xd0, 0xff, + 0xc4, 0xff, 0xc3, 0xff, 0xb7, 0xff, 0xb8, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0x9f, 0xff, 0x9d, 0xff, 0x90, 0xff, 0x8f, 0xff, 0x84, 0xff, 0x83, 0xff, + 0x75, 0xff, 0x75, 0xff, 0x6c, 0xff, 0x6a, 0xff, 0x60, 0xff, 0x5f, 0xff, + 0x51, 0xff, 0x52, 0xff, 0x4a, 0xff, 0x49, 0xff, 0x3c, 0xff, 0x3c, 0xff, + 0x33, 0xff, 0x33, 0xff, 0x29, 0xff, 0x29, 0xff, 0x21, 0xff, 0x20, 0xff, + 0x19, 0xff, 0x18, 0xff, 0x11, 0xff, 0x10, 0xff, 0x0b, 0xff, 0x0a, 0xff, + 0x04, 0xff, 0x03, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xf9, 0xfe, 0xf9, 0xfe, + 0xf7, 0xfe, 0xf4, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe, 0xef, 0xfe, 0xed, 0xfe, + 0xec, 0xfe, 0xeb, 0xfe, 0xea, 0xfe, 0xea, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, + 0xe8, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, + 0xe9, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0xe8, 0xfe, 0xe9, 0xfe, 0xe8, 0xfe, + 0xe9, 0xfe, 0xe8, 0xfe, 0xeb, 0xfe, 0xec, 0xfe, 0xec, 0xfe, 0xea, 0xfe, + 0xec, 0xfe, 0xed, 0xfe, 0xf0, 0xfe, 0xf0, 0xfe, 0xf2, 0xfe, 0xef, 0xfe, + 0xf4, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, 0xf9, 0xfe, 0xf9, 0xfe, + 0xfb, 0xfe, 0xfc, 0xfe, 0xfd, 0xfe, 0xfc, 0xfe, 0x00, 0xff, 0x01, 0xff, + 0x02, 0xff, 0x02, 0xff, 0x07, 0xff, 0x06, 0xff, 0x08, 0xff, 0x09, 0xff, + 0x0b, 0xff, 0x0b, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x12, 0xff, 0x12, 0xff, + 0x17, 0xff, 0x17, 0xff, 0x1a, 0xff, 0x1b, 0xff, 0x21, 0xff, 0x20, 0xff, + 0x24, 0xff, 0x25, 0xff, 0x2b, 0xff, 0x2a, 0xff, 0x2e, 0xff, 0x31, 0xff, + 0x37, 0xff, 0x34, 0xff, 0x3b, 0xff, 0x3e, 0xff, 0x42, 0xff, 0x41, 0xff, + 0x48, 0xff, 0x48, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x56, 0xff, 0x57, 0xff, + 0x5d, 0xff, 0x5f, 0xff, 0x67, 0xff, 0x67, 0xff, 0x6c, 0xff, 0x6c, 0xff, + 0x75, 0xff, 0x76, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0x85, 0xff, 0x84, 0xff, + 0x8d, 0xff, 0x8e, 0xff, 0x97, 0xff, 0x95, 0xff, 0x9e, 0xff, 0x9f, 0xff, + 0xaa, 0xff, 0xa6, 0xff, 0xae, 0xff, 0xaf, 0xff, 0xb9, 0xff, 0xb9, 0xff, + 0xbe, 0xff, 0xbf, 0xff, 0xca, 0xff, 0xca, 0xff, 0xd1, 0xff, 0xd1, 0xff, + 0xd9, 0xff, 0xda, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe7, 0xff, 0xe8, 0xff, + 0xf0, 0xff, 0xef, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0x05, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x12, 0x00, + 0x1b, 0x00, 0x1b, 0x00, 0x21, 0x00, 0x21, 0x00, 0x29, 0x00, 0x29, 0x00, + 0x2f, 0x00, 0x31, 0x00, 0x36, 0x00, 0x35, 0x00, 0x3f, 0x00, 0x40, 0x00, + 0x44, 0x00, 0x44, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x53, 0x00, 0x55, 0x00, + 0x5c, 0x00, 0x5b, 0x00, 0x64, 0x00, 0x65, 0x00, 0x6b, 0x00, 0x6a, 0x00, + 0x73, 0x00, 0x75, 0x00, 0x7d, 0x00, 0x7c, 0x00, 0x84, 0x00, 0x84, 0x00, + 0x8e, 0x00, 0x8e, 0x00, 0x95, 0x00, 0x95, 0x00, 0x9e, 0x00, 0x9f, 0x00, + 0xa8, 0x00, 0xa8, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xbb, 0x00, 0xba, 0x00, + 0xc2, 0x00, 0xc3, 0x00, 0xcd, 0x00, 0xcd, 0x00, 0xd6, 0x00, 0xd7, 0x00, + 0xe0, 0x00, 0xe0, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xf0, 0x00, 0xf1, 0x00, + 0xf8, 0x00, 0xf8, 0x00, 0x01, 0x01, 0x02, 0x01, 0x07, 0x01, 0x09, 0x01, + 0x0f, 0x01, 0x0e, 0x01, 0x14, 0x01, 0x16, 0x01, 0x1b, 0x01, 0x1b, 0x01, + 0x20, 0x01, 0x22, 0x01, 0x25, 0x01, 0x24, 0x01, 0x28, 0x01, 0x2a, 0x01, + 0x2d, 0x01, 0x2c, 0x01, 0x2b, 0x01, 0x2e, 0x01, 0x30, 0x01, 0x2f, 0x01, + 0x2f, 0x01, 0x30, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0x30, 0x01, + 0x2a, 0x01, 0x2b, 0x01, 0x2c, 0x01, 0x2d, 0x01, 0x25, 0x01, 0x27, 0x01, + 0x24, 0x01, 0x25, 0x01, 0x1e, 0x01, 0x1f, 0x01, 0x18, 0x01, 0x1a, 0x01, + 0x14, 0x01, 0x14, 0x01, 0x0d, 0x01, 0x0d, 0x01, 0x07, 0x01, 0x08, 0x01, + 0x00, 0x01, 0xff, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0xee, 0x00, 0xee, 0x00, + 0xe6, 0x00, 0xe7, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xd7, 0x00, 0xd7, 0x00, + 0xcf, 0x00, 0xce, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc0, 0x00, 0xbf, 0x00, + 0xb7, 0x00, 0xb5, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xa7, 0x00, 0xa7, 0x00, + 0x9e, 0x00, 0x9f, 0x00, 0x99, 0x00, 0x99, 0x00, 0x91, 0x00, 0x90, 0x00, + 0x89, 0x00, 0x8a, 0x00, 0x84, 0x00, 0x84, 0x00, 0x7d, 0x00, 0x7d, 0x00, + 0x7a, 0x00, 0x7a, 0x00, 0x71, 0x00, 0x72, 0x00, 0x6e, 0x00, 0x6e, 0x00, + 0x66, 0x00, 0x67, 0x00, 0x66, 0x00, 0x64, 0x00, 0x5d, 0x00, 0x5e, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x56, 0x00, 0x55, 0x00, 0x51, 0x00, 0x52, 0x00, + 0x4e, 0x00, 0x4c, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x45, 0x00, 0x44, 0x00, + 0x40, 0x00, 0x3f, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x39, 0x00, 0x37, 0x00, + 0x31, 0x00, 0x32, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x28, 0x00, + 0x23, 0x00, 0x24, 0x00, 0x1e, 0x00, 0x1d, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x11, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x05, 0x00, + 0xfe, 0xff, 0xfd, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xe5, 0xff, 0xe7, 0xff, 0xe1, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xd7, 0xff, + 0xd0, 0xff, 0xcf, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xb8, 0xff, 0xb8, 0xff, 0xad, 0xff, 0xad, 0xff, 0xa6, 0xff, 0xa7, 0xff, + 0xa0, 0xff, 0x9d, 0xff, 0x93, 0xff, 0x94, 0xff, 0x8e, 0xff, 0x8d, 0xff, + 0x84, 0xff, 0x83, 0xff, 0x7d, 0xff, 0x7e, 0xff, 0x75, 0xff, 0x75, 0xff, + 0x6c, 0xff, 0x6c, 0xff, 0x67, 0xff, 0x66, 0xff, 0x5d, 0xff, 0x5d, 0xff, + 0x58, 0xff, 0x57, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x49, 0xff, 0x48, 0xff, + 0x40, 0xff, 0x40, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x34, 0xff, 0x34, 0xff, + 0x2c, 0xff, 0x2c, 0xff, 0x26, 0xff, 0x26, 0xff, 0x1f, 0xff, 0x21, 0xff, + 0x1c, 0xff, 0x19, 0xff, 0x13, 0xff, 0x15, 0xff, 0x10, 0xff, 0x0d, 0xff, + 0x08, 0xff, 0x09, 0xff, 0x03, 0xff, 0x02, 0xff, 0xfd, 0xfe, 0xfc, 0xfe, + 0xf9, 0xfe, 0xf9, 0xfe, 0xf2, 0xfe, 0xf2, 0xfe, 0xf0, 0xfe, 0xef, 0xfe, + 0xea, 0xfe, 0xea, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, + 0xdd, 0xfe, 0xde, 0xfe, 0xdf, 0xfe, 0xdd, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, + 0xd7, 0xfe, 0xd7, 0xfe, 0xd5, 0xfe, 0xd5, 0xfe, 0xd2, 0xfe, 0xd2, 0xfe, + 0xd4, 0xfe, 0xd2, 0xfe, 0xd0, 0xfe, 0xd0, 0xfe, 0xd4, 0xfe, 0xd3, 0xfe, + 0xd2, 0xfe, 0xd1, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, + 0xda, 0xfe, 0xd9, 0xfe, 0xde, 0xfe, 0xde, 0xfe, 0xe1, 0xfe, 0xe0, 0xfe, + 0xe8, 0xfe, 0xe8, 0xfe, 0xee, 0xfe, 0xed, 0xfe, 0xf5, 0xfe, 0xf3, 0xfe, + 0xfb, 0xfe, 0xfd, 0xfe, 0x04, 0xff, 0x01, 0xff, 0x0e, 0xff, 0x0f, 0xff, + 0x13, 0xff, 0x13, 0xff, 0x22, 0xff, 0x20, 0xff, 0x29, 0xff, 0x29, 0xff, + 0x35, 0xff, 0x34, 0xff, 0x42, 0xff, 0x40, 0xff, 0x4a, 0xff, 0x49, 0xff, + 0x5a, 0xff, 0x5a, 0xff, 0x63, 0xff, 0x62, 0xff, 0x71, 0xff, 0x72, 0xff, + 0x7e, 0xff, 0x7d, 0xff, 0x89, 0xff, 0x87, 0xff, 0x98, 0xff, 0x97, 0xff, + 0xa2, 0xff, 0x9f, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xbb, 0xff, 0xbb, 0xff, + 0xc8, 0xff, 0xc5, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xdf, 0xff, 0xdc, 0xff, + 0xe9, 0xff, 0xe9, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0x08, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x1d, 0x00, 0x1f, 0x00, 0x28, 0x00, 0x26, 0x00, 0x2d, 0x00, 0x2e, 0x00, + 0x32, 0x00, 0x31, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3f, 0x00, 0x3f, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4d, 0x00, 0x4d, 0x00, + 0x53, 0x00, 0x53, 0x00, 0x55, 0x00, 0x55, 0x00, 0x58, 0x00, 0x59, 0x00, + 0x5d, 0x00, 0x5e, 0x00, 0x60, 0x00, 0x60, 0x00, 0x63, 0x00, 0x65, 0x00, + 0x68, 0x00, 0x67, 0x00, 0x6a, 0x00, 0x6c, 0x00, 0x70, 0x00, 0x6f, 0x00, + 0x71, 0x00, 0x72, 0x00, 0x78, 0x00, 0x77, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0x7f, 0x00, 0x80, 0x00, 0x84, 0x00, 0x84, 0x00, 0x87, 0x00, 0x88, 0x00, + 0x91, 0x00, 0x8f, 0x00, 0x92, 0x00, 0x94, 0x00, 0x9b, 0x00, 0x98, 0x00, + 0x9e, 0x00, 0xa0, 0x00, 0xa4, 0x00, 0xa2, 0x00, 0xab, 0x00, 0xac, 0x00, + 0xb0, 0x00, 0xaf, 0x00, 0xb7, 0x00, 0xb6, 0x00, 0xbd, 0x00, 0xbc, 0x00, + 0xc2, 0x00, 0xc4, 0x00, 0xc8, 0x00, 0xc7, 0x00, 0xd0, 0x00, 0xd1, 0x00, + 0xd4, 0x00, 0xd4, 0x00, 0xdb, 0x00, 0xda, 0x00, 0xe1, 0x00, 0xe1, 0x00, + 0xe6, 0x00, 0xe5, 0x00, 0xec, 0x00, 0xec, 0x00, 0xef, 0x00, 0xee, 0x00, + 0xf5, 0x00, 0xf4, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xfc, 0x00, 0xfb, 0x00, + 0x00, 0x01, 0xff, 0x00, 0x01, 0x01, 0x01, 0x01, 0x06, 0x01, 0x05, 0x01, + 0x06, 0x01, 0x07, 0x01, 0x09, 0x01, 0x08, 0x01, 0x09, 0x01, 0x08, 0x01, + 0x0a, 0x01, 0x09, 0x01, 0x0b, 0x01, 0x09, 0x01, 0x09, 0x01, 0x09, 0x01, + 0x0b, 0x01, 0x08, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x06, 0x01, + 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0xfe, 0x00, 0xfd, 0x00, + 0xfe, 0x00, 0xfe, 0x00, 0xf8, 0x00, 0xf7, 0x00, 0xf6, 0x00, 0xf6, 0x00, + 0xf2, 0x00, 0xf1, 0x00, 0xed, 0x00, 0xec, 0x00, 0xe8, 0x00, 0xe9, 0x00, + 0xe4, 0x00, 0xe3, 0x00, 0xdf, 0x00, 0xde, 0x00, 0xd9, 0x00, 0xd9, 0x00, + 0xd3, 0x00, 0xd3, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xc9, 0x00, 0xc8, 0x00, + 0xc3, 0x00, 0xc3, 0x00, 0xbd, 0x00, 0xbd, 0x00, 0xb6, 0x00, 0xb6, 0x00, + 0xb1, 0x00, 0xb0, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xa2, 0x00, 0xa1, 0x00, + 0x9b, 0x00, 0x9c, 0x00, 0x93, 0x00, 0x93, 0x00, 0x8c, 0x00, 0x8b, 0x00, + 0x83, 0x00, 0x82, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x71, 0x00, 0x71, 0x00, + 0x69, 0x00, 0x69, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x55, 0x00, 0x56, 0x00, + 0x4e, 0x00, 0x4e, 0x00, 0x43, 0x00, 0x42, 0x00, 0x37, 0x00, 0x39, 0x00, + 0x31, 0x00, 0x2f, 0x00, 0x22, 0x00, 0x23, 0x00, 0x1b, 0x00, 0x1a, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0xf9, 0xff, 0xfb, 0xff, + 0xef, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xdb, 0xff, 0xda, 0xff, + 0xd2, 0xff, 0xd1, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xbd, 0xff, 0xbe, 0xff, + 0xb5, 0xff, 0xb3, 0xff, 0xac, 0xff, 0xac, 0xff, 0xa3, 0xff, 0xa3, 0xff, + 0x9b, 0xff, 0x9b, 0xff, 0x93, 0xff, 0x92, 0xff, 0x8d, 0xff, 0x8c, 0xff, + 0x85, 0xff, 0x85, 0xff, 0x7e, 0xff, 0x7c, 0xff, 0x79, 0xff, 0x7a, 0xff, + 0x73, 0xff, 0x72, 0xff, 0x6d, 0xff, 0x6d, 0xff, 0x68, 0xff, 0x68, 0xff, + 0x62, 0xff, 0x63, 0xff, 0x60, 0xff, 0x60, 0xff, 0x5c, 0xff, 0x5b, 0xff, + 0x58, 0xff, 0x57, 0xff, 0x54, 0xff, 0x55, 0xff, 0x52, 0xff, 0x52, 0xff, + 0x50, 0xff, 0x50, 0xff, 0x4c, 0xff, 0x4c, 0xff, 0x4b, 0xff, 0x4c, 0xff, + 0x47, 0xff, 0x47, 0xff, 0x46, 0xff, 0x48, 0xff, 0x45, 0xff, 0x42, 0xff, + 0x40, 0xff, 0x42, 0xff, 0x42, 0xff, 0x40, 0xff, 0x3c, 0xff, 0x3c, 0xff, + 0x3b, 0xff, 0x3d, 0xff, 0x38, 0xff, 0x37, 0xff, 0x36, 0xff, 0x35, 0xff, + 0x32, 0xff, 0x32, 0xff, 0x30, 0xff, 0x30, 0xff, 0x2d, 0xff, 0x2c, 0xff, + 0x28, 0xff, 0x29, 0xff, 0x26, 0xff, 0x25, 0xff, 0x24, 0xff, 0x22, 0xff, + 0x1b, 0xff, 0x1e, 0xff, 0x1b, 0xff, 0x18, 0xff, 0x16, 0xff, 0x16, 0xff, + 0x11, 0xff, 0x12, 0xff, 0x10, 0xff, 0x0d, 0xff, 0x07, 0xff, 0x09, 0xff, + 0x08, 0xff, 0x06, 0xff, 0x02, 0xff, 0x01, 0xff, 0xff, 0xfe, 0xfd, 0xfe, + 0xfa, 0xfe, 0xfb, 0xfe, 0xf9, 0xfe, 0xf7, 0xfe, 0xf4, 0xfe, 0xf6, 0xfe, + 0xf5, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe, 0xf0, 0xfe, + 0xef, 0xfe, 0xef, 0xfe, 0xef, 0xfe, 0xee, 0xfe, 0xf1, 0xfe, 0xf3, 0xfe, + 0xf0, 0xfe, 0xef, 0xfe, 0xf3, 0xfe, 0xf5, 0xfe, 0xf6, 0xfe, 0xf5, 0xfe, + 0xf7, 0xfe, 0xf7, 0xfe, 0xfd, 0xfe, 0xfc, 0xfe, 0x02, 0xff, 0x03, 0xff, + 0x07, 0xff, 0x07, 0xff, 0x0c, 0xff, 0x0c, 0xff, 0x14, 0xff, 0x16, 0xff, + 0x1a, 0xff, 0x19, 0xff, 0x23, 0xff, 0x25, 0xff, 0x2b, 0xff, 0x2a, 0xff, + 0x34, 0xff, 0x37, 0xff, 0x3e, 0xff, 0x3e, 0xff, 0x48, 0xff, 0x48, 0xff, + 0x53, 0xff, 0x54, 0xff, 0x5e, 0xff, 0x5d, 0xff, 0x69, 0xff, 0x69, 0xff, + 0x75, 0xff, 0x73, 0xff, 0x7f, 0xff, 0x80, 0xff, 0x8b, 0xff, 0x89, 0xff, + 0x96, 0xff, 0x98, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xaf, 0xff, 0xae, 0xff, + 0xbb, 0xff, 0xba, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xd4, 0xff, 0xd4, 0xff, + 0xdd, 0xff, 0xde, 0xff, 0xe9, 0xff, 0xe7, 0xff, 0xf3, 0xff, 0xf4, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x09, 0x00, 0x0b, 0x00, 0x16, 0x00, 0x13, 0x00, + 0x1e, 0x00, 0x20, 0x00, 0x2a, 0x00, 0x27, 0x00, 0x32, 0x00, 0x34, 0x00, + 0x3c, 0x00, 0x3b, 0x00, 0x46, 0x00, 0x46, 0x00, 0x4e, 0x00, 0x4f, 0x00, + 0x58, 0x00, 0x58, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x69, 0x00, 0x68, 0x00, + 0x70, 0x00, 0x71, 0x00, 0x78, 0x00, 0x77, 0x00, 0x81, 0x00, 0x81, 0x00, + 0x87, 0x00, 0x88, 0x00, 0x90, 0x00, 0x8d, 0x00, 0x96, 0x00, 0x96, 0x00, + 0x9c, 0x00, 0x9c, 0x00, 0xa4, 0x00, 0xa3, 0x00, 0xa9, 0x00, 0xa9, 0x00, + 0xb0, 0x00, 0xae, 0x00, 0xb5, 0x00, 0xb4, 0x00, 0xb9, 0x00, 0xb9, 0x00, + 0xbf, 0x00, 0xbe, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xc8, 0x00, 0xc7, 0x00, + 0xcc, 0x00, 0xcc, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd5, 0x00, 0xd3, 0x00, + 0xd5, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xd9, 0x00, 0xdc, 0x00, 0xdc, 0x00, + 0xdb, 0x00, 0xdd, 0x00, 0xe3, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, + 0xe2, 0x00, 0xe2, 0x00, 0xe3, 0x00, 0xe4, 0x00, 0xe3, 0x00, 0xe3, 0x00, + 0xe2, 0x00, 0xe3, 0x00, 0xe3, 0x00, 0xe3, 0x00, 0xe3, 0x00, 0xe2, 0x00, + 0xe2, 0x00, 0xe1, 0x00, 0xe1, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, + 0xde, 0x00, 0xde, 0x00, 0xde, 0x00, 0xdd, 0x00, 0xdc, 0x00, 0xdb, 0x00, + 0xdb, 0x00, 0xdb, 0x00, 0xd9, 0x00, 0xd8, 0x00, 0xd7, 0x00, 0xd7, 0x00, + 0xd6, 0x00, 0xd5, 0x00, 0xd1, 0x00, 0xd1, 0x00, 0xd1, 0x00, 0xd0, 0x00, + 0xcd, 0x00, 0xcd, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xca, 0x00, 0xca, 0x00, + 0xcb, 0x00, 0xcc, 0x00, 0xc9, 0x00, 0xc7, 0x00, 0xc9, 0x00, 0xc9, 0x00, + 0xc7, 0x00, 0xc7, 0x00, 0xc9, 0x00, 0xc8, 0x00, 0xc6, 0x00, 0xc9, 0x00, + 0xc8, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xc7, 0x00, 0xc6, 0x00, 0xc5, 0x00, + 0xc4, 0x00, 0xc5, 0x00, 0xc4, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xc4, 0x00, + 0xc4, 0x00, 0xc3, 0x00, 0xc2, 0x00, 0xc1, 0x00, 0xc1, 0x00, 0xc2, 0x00, + 0xc0, 0x00, 0xbf, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xbd, 0x00, 0xbe, 0x00, + 0xba, 0x00, 0xba, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xb7, 0x00, 0xb5, 0x00, + 0xb2, 0x00, 0xb2, 0x00, 0xae, 0x00, 0xae, 0x00, 0xab, 0x00, 0xaa, 0x00, + 0xa4, 0x00, 0xa5, 0x00, 0xa2, 0x00, 0x9f, 0x00, 0x99, 0x00, 0x9b, 0x00, + 0x94, 0x00, 0x93, 0x00, 0x8e, 0x00, 0x8c, 0x00, 0x84, 0x00, 0x85, 0x00, + 0x7c, 0x00, 0x7b, 0x00, 0x73, 0x00, 0x73, 0x00, 0x68, 0x00, 0x69, 0x00, + 0x62, 0x00, 0x60, 0x00, 0x55, 0x00, 0x56, 0x00, 0x4b, 0x00, 0x4a, 0x00, + 0x41, 0x00, 0x40, 0x00, 0x33, 0x00, 0x33, 0x00, 0x29, 0x00, 0x29, 0x00, + 0x1d, 0x00, 0x1b, 0x00, 0x11, 0x00, 0x10, 0x00, 0x05, 0x00, 0x04, 0x00, + 0xf8, 0xff, 0xf8, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe0, 0xff, 0xde, 0xff, + 0xd2, 0xff, 0xd2, 0xff, 0xc7, 0xff, 0xc5, 0xff, 0xbb, 0xff, 0xbb, 0xff, + 0xad, 0xff, 0xac, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0x95, 0xff, 0x96, 0xff, + 0x8e, 0xff, 0x8e, 0xff, 0x82, 0xff, 0x82, 0xff, 0x79, 0xff, 0x78, 0xff, + 0x6e, 0xff, 0x70, 0xff, 0x65, 0xff, 0x64, 0xff, 0x5e, 0xff, 0x5e, 0xff, + 0x54, 0xff, 0x55, 0xff, 0x4f, 0xff, 0x4c, 0xff, 0x45, 0xff, 0x47, 0xff, + 0x3f, 0xff, 0x3e, 0xff, 0x39, 0xff, 0x39, 0xff, 0x32, 0xff, 0x32, 0xff, + 0x2d, 0xff, 0x2c, 0xff, 0x28, 0xff, 0x27, 0xff, 0x23, 0xff, 0x22, 0xff, + 0x22, 0xff, 0x21, 0xff, 0x1b, 0xff, 0x1c, 0xff, 0x18, 0xff, 0x19, 0xff, + 0x17, 0xff, 0x16, 0xff, 0x11, 0xff, 0x13, 0xff, 0x13, 0xff, 0x10, 0xff, + 0x0d, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0d, 0xff, 0x0a, 0xff, 0x0a, 0xff, + 0x0a, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0x08, 0xff, 0x07, 0xff, 0x09, 0xff, + 0x08, 0xff, 0x07, 0xff, 0x06, 0xff, 0x06, 0xff, 0x07, 0xff, 0x07, 0xff, + 0x05, 0xff, 0x05, 0xff, 0x06, 0xff, 0x06, 0xff, 0x05, 0xff, 0x05, 0xff, + 0x06, 0xff, 0x07, 0xff, 0x08, 0xff, 0x07, 0xff, 0x08, 0xff, 0x09, 0xff, + 0x09, 0xff, 0x08, 0xff, 0x0a, 0xff, 0x0b, 0xff, 0x0d, 0xff, 0x0c, 0xff, + 0x0c, 0xff, 0x0e, 0xff, 0x11, 0xff, 0x0f, 0xff, 0x12, 0xff, 0x13, 0xff, + 0x16, 0xff, 0x14, 0xff, 0x19, 0xff, 0x18, 0xff, 0x19, 0xff, 0x19, 0xff, + 0x20, 0xff, 0x1e, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0x26, 0xff, 0x26, 0xff, + 0x27, 0xff, 0x25, 0xff, 0x2a, 0xff, 0x2b, 0xff, 0x31, 0xff, 0x30, 0xff, + 0x34, 0xff, 0x34, 0xff, 0x39, 0xff, 0x3a, 0xff, 0x3f, 0xff, 0x3e, 0xff, + 0x44, 0xff, 0x45, 0xff, 0x49, 0xff, 0x48, 0xff, 0x4e, 0xff, 0x4d, 0xff, + 0x51, 0xff, 0x53, 0xff, 0x5b, 0xff, 0x58, 0xff, 0x5c, 0xff, 0x5f, 0xff, + 0x64, 0xff, 0x61, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x70, 0xff, 0x6f, 0xff, + 0x76, 0xff, 0x75, 0xff, 0x7d, 0xff, 0x7b, 0xff, 0x81, 0xff, 0x82, 0xff, + 0x87, 0xff, 0x85, 0xff, 0x8f, 0xff, 0x8e, 0xff, 0x95, 0xff, 0x93, 0xff, + 0x9b, 0xff, 0x9a, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0xa7, 0xff, 0xa6, 0xff, + 0xae, 0xff, 0xad, 0xff, 0xb5, 0xff, 0xb4, 0xff, 0xbb, 0xff, 0xba, 0xff, + 0xc2, 0xff, 0xc1, 0xff, 0xc9, 0xff, 0xc7, 0xff, 0xce, 0xff, 0xce, 0xff, + 0xd7, 0xff, 0xd6, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xe4, 0xff, 0xe4, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0x05, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x16, 0x00, + 0x21, 0x00, 0x20, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x33, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x46, 0x00, 0x47, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x64, 0x00, 0x62, 0x00, 0x6f, 0x00, 0x70, 0x00, + 0x77, 0x00, 0x77, 0x00, 0x82, 0x00, 0x81, 0x00, 0x8c, 0x00, 0x8c, 0x00, + 0x94, 0x00, 0x95, 0x00, 0x9f, 0x00, 0x9e, 0x00, 0xa9, 0x00, 0xaa, 0x00, + 0xaf, 0x00, 0xb0, 0x00, 0xbc, 0x00, 0xba, 0x00, 0xc2, 0x00, 0xc3, 0x00, + 0xcb, 0x00, 0xcb, 0x00, 0xd2, 0x00, 0xd2, 0x00, 0xda, 0x00, 0xda, 0x00, + 0xdf, 0x00, 0xdf, 0x00, 0xe4, 0x00, 0xe6, 0x00, 0xec, 0x00, 0xe8, 0x00, + 0xef, 0x00, 0xf2, 0x00, 0xf5, 0x00, 0xf3, 0x00, 0xf7, 0x00, 0xf9, 0x00, + 0xfd, 0x00, 0xfc, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x01, 0x02, 0x01, + 0x03, 0x01, 0x01, 0x01, 0x00, 0x01, 0x04, 0x01, 0x04, 0x01, 0x01, 0x01, + 0x00, 0x01, 0x03, 0x01, 0x04, 0x01, 0x01, 0x01, 0xff, 0x00, 0x00, 0x01, + 0xff, 0x00, 0xff, 0x00, 0xfd, 0x00, 0xfc, 0x00, 0xf8, 0x00, 0xfa, 0x00, + 0xf8, 0x00, 0xf4, 0x00, 0xf2, 0x00, 0xf5, 0x00, 0xf1, 0x00, 0xf0, 0x00, + 0xed, 0x00, 0xec, 0x00, 0xe9, 0x00, 0xea, 0x00, 0xe6, 0x00, 0xe5, 0x00, + 0xe1, 0x00, 0xe1, 0x00, 0xdc, 0x00, 0xdd, 0x00, 0xd8, 0x00, 0xd8, 0x00, + 0xd4, 0x00, 0xd3, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xcc, 0x00, 0xcb, 0x00, + 0xc6, 0x00, 0xc7, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xbf, 0x00, 0xbe, 0x00, + 0xba, 0x00, 0xbb, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xb4, 0x00, 0xb4, 0x00, + 0xaf, 0x00, 0xaf, 0x00, 0xac, 0x00, 0xab, 0x00, 0xa6, 0x00, 0xa8, 0x00, + 0xa4, 0x00, 0xa3, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0x9c, 0x00, 0x9e, 0x00, + 0x9b, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x98, 0x00, 0x93, 0x00, 0x92, 0x00, + 0x90, 0x00, 0x91, 0x00, 0x8b, 0x00, 0x89, 0x00, 0x89, 0x00, 0x8b, 0x00, + 0x83, 0x00, 0x84, 0x00, 0x81, 0x00, 0x81, 0x00, 0x7d, 0x00, 0x7d, 0x00, + 0x78, 0x00, 0x78, 0x00, 0x74, 0x00, 0x74, 0x00, 0x6e, 0x00, 0x70, 0x00, + 0x6d, 0x00, 0x6c, 0x00, 0x64, 0x00, 0x66, 0x00, 0x61, 0x00, 0x62, 0x00, + 0x5d, 0x00, 0x5c, 0x00, 0x56, 0x00, 0x57, 0x00, 0x52, 0x00, 0x50, 0x00, + 0x4a, 0x00, 0x4b, 0x00, 0x43, 0x00, 0x44, 0x00, 0x3e, 0x00, 0x3d, 0x00, + 0x38, 0x00, 0x39, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x28, 0x00, 0x2b, 0x00, + 0x24, 0x00, 0x21, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x03, 0x00, 0xfc, 0xff, 0xfa, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xd9, 0xff, 0xda, 0xff, 0xd3, 0xff, 0xd1, 0xff, 0xc9, 0xff, 0xc8, 0xff, + 0xc1, 0xff, 0xc0, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0xae, 0xff, 0xad, 0xff, + 0xa7, 0xff, 0xa5, 0xff, 0x9c, 0xff, 0x9b, 0xff, 0x96, 0xff, 0x95, 0xff, + 0x8a, 0xff, 0x8a, 0xff, 0x83, 0xff, 0x83, 0xff, 0x79, 0xff, 0x77, 0xff, + 0x70, 0xff, 0x70, 0xff, 0x69, 0xff, 0x69, 0xff, 0x5f, 0xff, 0x5e, 0xff, + 0x57, 0xff, 0x56, 0xff, 0x4f, 0xff, 0x4e, 0xff, 0x45, 0xff, 0x46, 0xff, + 0x3f, 0xff, 0x3c, 0xff, 0x35, 0xff, 0x36, 0xff, 0x2f, 0xff, 0x2e, 0xff, + 0x25, 0xff, 0x26, 0xff, 0x1f, 0xff, 0x20, 0xff, 0x19, 0xff, 0x18, 0xff, + 0x12, 0xff, 0x12, 0xff, 0x0e, 0xff, 0x0d, 0xff, 0x04, 0xff, 0x04, 0xff, + 0x01, 0xff, 0x01, 0xff, 0xfb, 0xfe, 0xfa, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, + 0xf1, 0xfe, 0xf1, 0xfe, 0xee, 0xfe, 0xed, 0xfe, 0xea, 0xfe, 0xea, 0xfe, + 0xe8, 0xfe, 0xe7, 0xfe, 0xe4, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, + 0xe3, 0xfe, 0xe1, 0xfe, 0xe3, 0xfe, 0xe2, 0xfe, 0xe2, 0xfe, 0xe1, 0xfe, + 0xe3, 0xfe, 0xe2, 0xfe, 0xe3, 0xfe, 0xe4, 0xfe, 0xe6, 0xfe, 0xe4, 0xfe, + 0xe7, 0xfe, 0xe9, 0xfe, 0xea, 0xfe, 0xea, 0xfe, 0xef, 0xfe, 0xed, 0xfe, + 0xf1, 0xfe, 0xf5, 0xfe, 0xf9, 0xfe, 0xf5, 0xfe, 0xfc, 0xfe, 0xfd, 0xfe, + 0x04, 0xff, 0x02, 0xff, 0x08, 0xff, 0x08, 0xff, 0x11, 0xff, 0x11, 0xff, + 0x16, 0xff, 0x15, 0xff, 0x1f, 0xff, 0x20, 0xff, 0x26, 0xff, 0x26, 0xff, + 0x2e, 0xff, 0x2e, 0xff, 0x38, 0xff, 0x38, 0xff, 0x3f, 0xff, 0x3f, 0xff, + 0x4b, 0xff, 0x49, 0xff, 0x4f, 0xff, 0x52, 0xff, 0x5c, 0xff, 0x5a, 0xff, + 0x63, 0xff, 0x65, 0xff, 0x6d, 0xff, 0x6c, 0xff, 0x77, 0xff, 0x77, 0xff, + 0x7f, 0xff, 0x7e, 0xff, 0x88, 0xff, 0x88, 0xff, 0x90, 0xff, 0x90, 0xff, + 0x98, 0xff, 0x99, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0xa8, 0xff, 0xa9, 0xff, + 0xb0, 0xff, 0xaf, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xbe, 0xff, 0xbe, 0xff, + 0xc5, 0xff, 0xc5, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xd1, 0xff, 0xd2, 0xff, + 0xd8, 0xff, 0xd6, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xe4, 0xff, 0xe4, 0xff, + 0xe8, 0xff, 0xe9, 0xff, 0xee, 0xff, 0xed, 0xff, 0xf5, 0xff, 0xf6, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x02, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x10, 0x00, 0x11, 0x00, + 0x18, 0x00, 0x16, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x25, 0x00, 0x25, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x31, 0x00, 0x2f, 0x00, + 0x37, 0x00, 0x37, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x42, 0x00, 0x41, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x4e, 0x00, 0x4d, 0x00, 0x54, 0x00, 0x55, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x61, 0x00, 0x60, 0x00, 0x68, 0x00, 0x6b, 0x00, + 0x71, 0x00, 0x6e, 0x00, 0x75, 0x00, 0x78, 0x00, 0x7d, 0x00, 0x7b, 0x00, + 0x84, 0x00, 0x86, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x91, 0x00, 0x92, 0x00, + 0x99, 0x00, 0x99, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa7, 0x00, 0xa7, 0x00, + 0xad, 0x00, 0xac, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb9, 0x00, 0xba, 0x00, + 0xc0, 0x00, 0xbe, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xcb, 0x00, 0xca, 0x00, + 0xd1, 0x00, 0xd0, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xda, 0x00, 0xd9, 0x00, + 0xdc, 0x00, 0xde, 0x00, 0xe3, 0x00, 0xe2, 0x00, 0xe6, 0x00, 0xe7, 0x00, + 0xe9, 0x00, 0xe8, 0x00, 0xec, 0x00, 0xed, 0x00, 0xee, 0x00, 0xed, 0x00, + 0xf2, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf3, 0x00, 0xf5, 0x00, 0xf5, 0x00, + 0xf8, 0x00, 0xf9, 0x00, 0xf7, 0x00, 0xf6, 0x00, 0xfa, 0x00, 0xfb, 0x00, + 0xfa, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xfa, 0x00, 0xfb, 0x00, 0xfb, 0x00, + 0xf7, 0x00, 0xf7, 0x00, 0xf9, 0x00, 0xf9, 0x00, 0xf7, 0x00, 0xf7, 0x00, + 0xf4, 0x00, 0xf3, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0xf0, 0x00, 0xef, 0x00, + 0xef, 0x00, 0xef, 0x00, 0xeb, 0x00, 0xe9, 0x00, 0xe8, 0x00, 0xea, 0x00, + 0xe6, 0x00, 0xe5, 0x00, 0xe2, 0x00, 0xe0, 0x00, 0xdf, 0x00, 0xdf, 0x00, + 0xda, 0x00, 0xd9, 0x00, 0xd5, 0x00, 0xd4, 0x00, 0xd0, 0x00, 0xd1, 0x00, + 0xcc, 0x00, 0xca, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xbf, 0x00, 0xc0, 0x00, + 0xba, 0x00, 0xb8, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xad, 0x00, 0xac, 0x00, + 0xa6, 0x00, 0xa5, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0x97, 0x00, 0x96, 0x00, + 0x8e, 0x00, 0x8e, 0x00, 0x87, 0x00, 0x88, 0x00, 0x7d, 0x00, 0x7c, 0x00, + 0x75, 0x00, 0x76, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x65, 0x00, 0x65, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x51, 0x00, 0x51, 0x00, 0x4a, 0x00, 0x4b, 0x00, + 0x3e, 0x00, 0x3f, 0x00, 0x38, 0x00, 0x37, 0x00, 0x2d, 0x00, 0x2f, 0x00, + 0x26, 0x00, 0x25, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x14, 0x00, 0x15, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x06, 0x00, 0xfd, 0xff, 0xfd, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xed, 0xff, 0xee, 0xff, 0xe6, 0xff, 0xe7, 0xff, + 0xe1, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd2, 0xff, + 0xca, 0xff, 0xcb, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xbf, 0xff, 0xc0, 0xff, + 0xbb, 0xff, 0xba, 0xff, 0xb3, 0xff, 0xb5, 0xff, 0xb0, 0xff, 0xb0, 0xff, + 0xab, 0xff, 0xab, 0xff, 0xa5, 0xff, 0xa7, 0xff, 0xa2, 0xff, 0xa1, 0xff, + 0x9c, 0xff, 0x9e, 0xff, 0x97, 0xff, 0x96, 0xff, 0x92, 0xff, 0x92, 0xff, + 0x8d, 0xff, 0x8d, 0xff, 0x89, 0xff, 0x88, 0xff, 0x84, 0xff, 0x85, 0xff, + 0x7e, 0xff, 0x7f, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x73, 0xff, 0x75, 0xff, + 0x71, 0xff, 0x71, 0xff, 0x6b, 0xff, 0x6b, 0xff, 0x66, 0xff, 0x65, 0xff, + 0x61, 0xff, 0x63, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x56, 0xff, 0x57, 0xff, + 0x4f, 0xff, 0x4f, 0xff, 0x4b, 0xff, 0x49, 0xff, 0x42, 0xff, 0x44, 0xff, + 0x3d, 0xff, 0x3e, 0xff, 0x3a, 0xff, 0x38, 0xff, 0x31, 0xff, 0x34, 0xff, + 0x2e, 0xff, 0x2c, 0xff, 0x26, 0xff, 0x27, 0xff, 0x20, 0xff, 0x22, 0xff, + 0x1c, 0xff, 0x1b, 0xff, 0x16, 0xff, 0x18, 0xff, 0x12, 0xff, 0x12, 0xff, + 0x0c, 0xff, 0x0c, 0xff, 0x09, 0xff, 0x09, 0xff, 0x04, 0xff, 0x04, 0xff, + 0x00, 0xff, 0x03, 0xff, 0xfe, 0xfe, 0xfd, 0xfe, 0xfa, 0xfe, 0xfc, 0xfe, + 0xfa, 0xfe, 0xf9, 0xfe, 0xf4, 0xfe, 0xf6, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, + 0xf3, 0xfe, 0xf4, 0xfe, 0xf6, 0xfe, 0xf4, 0xfe, 0xf3, 0xfe, 0xf5, 0xfe, + 0xf5, 0xfe, 0xf5, 0xfe, 0xf8, 0xfe, 0xf7, 0xfe, 0xf8, 0xfe, 0xf9, 0xfe, + 0xfb, 0xfe, 0xfb, 0xfe, 0xfd, 0xfe, 0xff, 0xfe, 0x03, 0xff, 0x02, 0xff, + 0x07, 0xff, 0x08, 0xff, 0x0b, 0xff, 0x0c, 0xff, 0x11, 0xff, 0x11, 0xff, + 0x16, 0xff, 0x16, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x23, 0xff, 0x23, 0xff, + 0x2a, 0xff, 0x2c, 0xff, 0x33, 0xff, 0x33, 0xff, 0x3a, 0xff, 0x39, 0xff, + 0x42, 0xff, 0x43, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x52, 0xff, 0x53, 0xff, + 0x5b, 0xff, 0x5d, 0xff, 0x65, 0xff, 0x65, 0xff, 0x6d, 0xff, 0x6d, 0xff, + 0x76, 0xff, 0x77, 0xff, 0x81, 0xff, 0x81, 0xff, 0x88, 0xff, 0x89, 0xff, + 0x92, 0xff, 0x93, 0xff, 0x9a, 0xff, 0x9b, 0xff, 0xa5, 0xff, 0xa6, 0xff, + 0xaf, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xb5, 0xff, 0xc1, 0xff, 0xc3, 0xff, + 0xca, 0xff, 0xc9, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xde, 0xff, 0xdc, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xf1, 0xff, 0xee, 0xff, 0xf5, 0xff, 0xf6, 0xff, + 0x00, 0x00, 0xfe, 0xff, 0x06, 0x00, 0x05, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x17, 0x00, 0x16, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x28, 0x00, 0x27, 0x00, + 0x2f, 0x00, 0x2e, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3d, 0x00, 0x3e, 0x00, + 0x46, 0x00, 0x46, 0x00, 0x4c, 0x00, 0x4b, 0x00, 0x53, 0x00, 0x55, 0x00, + 0x5b, 0x00, 0x58, 0x00, 0x61, 0x00, 0x61, 0x00, 0x67, 0x00, 0x66, 0x00, + 0x6d, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x73, 0x00, 0x79, 0x00, 0x78, 0x00, + 0x7d, 0x00, 0x7c, 0x00, 0x83, 0x00, 0x83, 0x00, 0x88, 0x00, 0x88, 0x00, + 0x8d, 0x00, 0x8d, 0x00, 0x91, 0x00, 0x90, 0x00, 0x93, 0x00, 0x94, 0x00, + 0x98, 0x00, 0x98, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x9f, 0x00, 0xa0, 0x00, + 0xa2, 0x00, 0xa0, 0x00, 0xa6, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa6, 0x00, + 0xaa, 0x00, 0xab, 0x00, 0xae, 0x00, 0xad, 0x00, 0xad, 0x00, 0xad, 0x00, + 0xb4, 0x00, 0xb2, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb5, 0x00, 0xb6, 0x00, + 0xb5, 0x00, 0xb5, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xb7, 0x00, 0xb9, 0x00, + 0xb9, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0xbd, 0x00, + 0xbd, 0x00, 0xbc, 0x00, 0xc0, 0x00, 0xc2, 0x00, 0xc1, 0x00, 0xc0, 0x00, + 0xc4, 0x00, 0xc3, 0x00, 0xc2, 0x00, 0xc4, 0x00, 0xc6, 0x00, 0xc6, 0x00, + 0xc7, 0x00, 0xc6, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcb, 0x00, + 0xcc, 0x00, 0xce, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xd2, 0x00, 0xd1, 0x00, + 0xd1, 0x00, 0xd2, 0x00, 0xd6, 0x00, 0xd6, 0x00, 0xd5, 0x00, 0xd4, 0x00, + 0xd7, 0x00, 0xd8, 0x00, 0xda, 0x00, 0xd9, 0x00, 0xd9, 0x00, 0xda, 0x00, + 0xdd, 0x00, 0xde, 0x00, 0xdd, 0x00, 0xdc, 0x00, 0xdf, 0x00, 0xe2, 0x00, + 0xe0, 0x00, 0xdd, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, + 0xdf, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xdd, 0x00, 0xde, 0x00, + 0xdb, 0x00, 0xdb, 0x00, 0xd9, 0x00, 0xda, 0x00, 0xd5, 0x00, 0xd5, 0x00, + 0xd2, 0x00, 0xd2, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xca, 0x00, 0xca, 0x00, + 0xc6, 0x00, 0xc8, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xba, 0x00, 0xba, 0x00, + 0xb3, 0x00, 0xb5, 0x00, 0xae, 0x00, 0xac, 0x00, 0xa4, 0x00, 0xa6, 0x00, + 0x9d, 0x00, 0x9e, 0x00, 0x94, 0x00, 0x94, 0x00, 0x8b, 0x00, 0x8c, 0x00, + 0x82, 0x00, 0x82, 0x00, 0x78, 0x00, 0x79, 0x00, 0x6e, 0x00, 0x70, 0x00, + 0x64, 0x00, 0x64, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x4f, 0x00, 0x4f, 0x00, + 0x45, 0x00, 0x45, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x30, 0x00, + 0x25, 0x00, 0x24, 0x00, 0x19, 0x00, 0x1b, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x02, 0x00, 0x04, 0x00, 0xf9, 0xff, 0xf7, 0xff, 0xee, 0xff, 0xf0, 0xff, + 0xe5, 0xff, 0xe4, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xd1, 0xff, 0xd1, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xb6, 0xff, 0xb7, 0xff, + 0xac, 0xff, 0xab, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0x9c, 0xff, 0x9b, 0xff, + 0x96, 0xff, 0x96, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x86, 0xff, 0x85, 0xff, + 0x81, 0xff, 0x81, 0xff, 0x78, 0xff, 0x77, 0xff, 0x73, 0xff, 0x74, 0xff, + 0x6d, 0xff, 0x6c, 0xff, 0x65, 0xff, 0x66, 0xff, 0x64, 0xff, 0x63, 0xff, + 0x5b, 0xff, 0x5b, 0xff, 0x59, 0xff, 0x58, 0xff, 0x52, 0xff, 0x51, 0xff, + 0x4f, 0xff, 0x50, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x45, 0xff, 0x45, 0xff, + 0x44, 0xff, 0x43, 0xff, 0x3c, 0xff, 0x3d, 0xff, 0x3b, 0xff, 0x3d, 0xff, + 0x39, 0xff, 0x37, 0xff, 0x34, 0xff, 0x35, 0xff, 0x31, 0xff, 0x31, 0xff, + 0x2e, 0xff, 0x2f, 0xff, 0x2d, 0xff, 0x2d, 0xff, 0x2a, 0xff, 0x2b, 0xff, + 0x28, 0xff, 0x28, 0xff, 0x26, 0xff, 0x25, 0xff, 0x25, 0xff, 0x26, 0xff, + 0x23, 0xff, 0x21, 0xff, 0x20, 0xff, 0x22, 0xff, 0x22, 0xff, 0x21, 0xff, + 0x1e, 0xff, 0x1f, 0xff, 0x20, 0xff, 0x1f, 0xff, 0x1e, 0xff, 0x1d, 0xff, + 0x20, 0xff, 0x1f, 0xff, 0x1e, 0xff, 0x1c, 0xff, 0x1d, 0xff, 0x1f, 0xff, + 0x1f, 0xff, 0x1e, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0x20, 0xff, 0x20, 0xff, + 0x23, 0xff, 0x21, 0xff, 0x20, 0xff, 0x23, 0xff, 0x25, 0xff, 0x22, 0xff, + 0x25, 0xff, 0x26, 0xff, 0x28, 0xff, 0x28, 0xff, 0x2a, 0xff, 0x2a, 0xff, + 0x2c, 0xff, 0x2c, 0xff, 0x30, 0xff, 0x30, 0xff, 0x32, 0xff, 0x31, 0xff, + 0x35, 0xff, 0x36, 0xff, 0x36, 0xff, 0x37, 0xff, 0x3b, 0xff, 0x3a, 0xff, + 0x3d, 0xff, 0x3f, 0xff, 0x41, 0xff, 0x3f, 0xff, 0x45, 0xff, 0x46, 0xff, + 0x47, 0xff, 0x47, 0xff, 0x4d, 0xff, 0x4c, 0xff, 0x4f, 0xff, 0x50, 0xff, + 0x54, 0xff, 0x53, 0xff, 0x58, 0xff, 0x59, 0xff, 0x5c, 0xff, 0x5b, 0xff, + 0x62, 0xff, 0x62, 0xff, 0x65, 0xff, 0x64, 0xff, 0x6a, 0xff, 0x6b, 0xff, + 0x70, 0xff, 0x6f, 0xff, 0x74, 0xff, 0x74, 0xff, 0x7a, 0xff, 0x7a, 0xff, + 0x80, 0xff, 0x7f, 0xff, 0x83, 0xff, 0x86, 0xff, 0x8c, 0xff, 0x8a, 0xff, + 0x90, 0xff, 0x91, 0xff, 0x96, 0xff, 0x97, 0xff, 0x9f, 0xff, 0x9c, 0xff, + 0xa4, 0xff, 0xa6, 0xff, 0xab, 0xff, 0xab, 0xff, 0xb3, 0xff, 0xb3, 0xff, + 0xba, 0xff, 0xba, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xcd, 0xff, 0xcc, 0xff, + 0xd2, 0xff, 0xd3, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xe5, 0xff, 0xe5, 0xff, + 0xec, 0xff, 0xed, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x0a, 0x00, 0x0c, 0x00, 0x15, 0x00, 0x13, 0x00, 0x1e, 0x00, 0x20, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x32, 0x00, 0x32, 0x00, 0x3b, 0x00, 0x3c, 0x00, + 0x46, 0x00, 0x44, 0x00, 0x4f, 0x00, 0x4e, 0x00, 0x57, 0x00, 0x58, 0x00, + 0x62, 0x00, 0x61, 0x00, 0x69, 0x00, 0x69, 0x00, 0x73, 0x00, 0x74, 0x00, + 0x7b, 0x00, 0x79, 0x00, 0x82, 0x00, 0x86, 0x00, 0x8b, 0x00, 0x89, 0x00, + 0x92, 0x00, 0x93, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0xa1, 0x00, 0x9f, 0x00, + 0xa5, 0x00, 0xaa, 0x00, 0xad, 0x00, 0xab, 0x00, 0xb1, 0x00, 0xb3, 0x00, + 0xb6, 0x00, 0xb6, 0x00, 0xba, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbf, 0x00, + 0xc3, 0x00, 0xc3, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xc7, 0x00, 0xc8, 0x00, + 0xca, 0x00, 0xc9, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xcb, 0x00, 0xce, 0x00, + 0xce, 0x00, 0xcd, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xd0, 0x00, + 0xd0, 0x00, 0xd1, 0x00, 0xd1, 0x00, 0xcf, 0x00, 0xce, 0x00, 0xd1, 0x00, + 0xd1, 0x00, 0xd0, 0x00, 0xcd, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xcf, 0x00, + 0xcc, 0x00, 0xcc, 0x00, 0xce, 0x00, 0xce, 0x00, 0xce, 0x00, 0xcd, 0x00, + 0xcb, 0x00, 0xcc, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xc9, 0x00, 0xc8, 0x00, + 0xc9, 0x00, 0xca, 0x00, 0xc6, 0x00, 0xc5, 0x00, 0xc7, 0x00, 0xc9, 0x00, + 0xc8, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xc5, 0x00, + 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0xc3, 0x00, + 0xc1, 0x00, 0xc1, 0x00, 0xc1, 0x00, 0xc1, 0x00, 0xc0, 0x00, 0xbf, 0x00, + 0xbc, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xbe, 0x00, 0xb9, 0x00, 0xbb, 0x00, + 0xbc, 0x00, 0xbb, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0xb6, 0x00, 0xb6, 0x00, + 0xb5, 0x00, 0xb5, 0x00, 0xb2, 0x00, 0xb0, 0x00, 0xaf, 0x00, 0xb0, 0x00, + 0xac, 0x00, 0xab, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xa6, 0x00, 0xa5, 0x00, + 0xa1, 0x00, 0xa3, 0x00, 0xa2, 0x00, 0x9f, 0x00, 0x99, 0x00, 0x9a, 0x00, + 0x97, 0x00, 0x97, 0x00, 0x90, 0x00, 0x90, 0x00, 0x8d, 0x00, 0x8c, 0x00, + 0x87, 0x00, 0x87, 0x00, 0x82, 0x00, 0x82, 0x00, 0x7c, 0x00, 0x7b, 0x00, + 0x75, 0x00, 0x76, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x68, 0x00, 0x6a, 0x00, + 0x63, 0x00, 0x62, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x54, 0x00, 0x55, 0x00, + 0x51, 0x00, 0x4f, 0x00, 0x47, 0x00, 0x49, 0x00, 0x42, 0x00, 0x41, 0x00, + 0x3a, 0x00, 0x39, 0x00, 0x33, 0x00, 0x33, 0x00, 0x2c, 0x00, 0x2c, 0x00, + 0x23, 0x00, 0x22, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x03, 0x00, 0xfb, 0xff, 0xfb, 0xff, + 0xf3, 0xff, 0xf5, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xe2, 0xff, 0xe2, 0xff, + 0xd9, 0xff, 0xda, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xc8, 0xff, 0xc9, 0xff, + 0xbd, 0xff, 0xbd, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0xad, 0xff, 0xaf, 0xff, + 0xa6, 0xff, 0xa5, 0xff, 0x9c, 0xff, 0x9d, 0xff, 0x92, 0xff, 0x93, 0xff, + 0x8b, 0xff, 0x8d, 0xff, 0x82, 0xff, 0x82, 0xff, 0x79, 0xff, 0x7a, 0xff, + 0x71, 0xff, 0x71, 0xff, 0x68, 0xff, 0x68, 0xff, 0x5f, 0xff, 0x62, 0xff, + 0x59, 0xff, 0x57, 0xff, 0x4f, 0xff, 0x51, 0xff, 0x49, 0xff, 0x49, 0xff, + 0x40, 0xff, 0x41, 0xff, 0x38, 0xff, 0x3a, 0xff, 0x33, 0xff, 0x33, 0xff, + 0x29, 0xff, 0x2c, 0xff, 0x27, 0xff, 0x27, 0xff, 0x20, 0xff, 0x20, 0xff, + 0x1a, 0xff, 0x1c, 0xff, 0x15, 0xff, 0x17, 0xff, 0x11, 0xff, 0x11, 0xff, + 0x0d, 0xff, 0x0f, 0xff, 0x0c, 0xff, 0x0b, 0xff, 0x06, 0xff, 0x08, 0xff, + 0x07, 0xff, 0x06, 0xff, 0x02, 0xff, 0x04, 0xff, 0x03, 0xff, 0x04, 0xff, + 0x01, 0xff, 0x01, 0xff, 0x02, 0xff, 0x02, 0xff, 0x03, 0xff, 0x03, 0xff, + 0x00, 0xff, 0x02, 0xff, 0x05, 0xff, 0x06, 0xff, 0x04, 0xff, 0x04, 0xff, + 0x09, 0xff, 0x09, 0xff, 0x09, 0xff, 0x0c, 0xff, 0x0e, 0xff, 0x0d, 0xff, + 0x11, 0xff, 0x13, 0xff, 0x14, 0xff, 0x13, 0xff, 0x1a, 0xff, 0x1c, 0xff, + 0x1e, 0xff, 0x1d, 0xff, 0x21, 0xff, 0x22, 0xff, 0x28, 0xff, 0x29, 0xff, + 0x2b, 0xff, 0x2b, 0xff, 0x33, 0xff, 0x34, 0xff, 0x35, 0xff, 0x37, 0xff, + 0x3e, 0xff, 0x3e, 0xff, 0x41, 0xff, 0x42, 0xff, 0x46, 0xff, 0x46, 0xff, + 0x4f, 0xff, 0x4f, 0xff, 0x52, 0xff, 0x51, 0xff, 0x5b, 0xff, 0x5a, 0xff, + 0x5d, 0xff, 0x60, 0xff, 0x64, 0xff, 0x63, 0xff, 0x6a, 0xff, 0x6d, 0xff, + 0x6f, 0xff, 0x6e, 0xff, 0x76, 0xff, 0x76, 0xff, 0x7a, 0xff, 0x7b, 0xff, + 0x7f, 0xff, 0x80, 0xff, 0x86, 0xff, 0x87, 0xff, 0x89, 0xff, 0x8a, 0xff, + 0x91, 0xff, 0x91, 0xff, 0x93, 0xff, 0x95, 0xff, 0x9a, 0xff, 0x9b, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xaa, 0xff, 0xab, 0xff, + 0xaf, 0xff, 0xae, 0xff, 0xb3, 0xff, 0xb4, 0xff, 0xbb, 0xff, 0xba, 0xff, + 0xbd, 0xff, 0xbe, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xca, 0xff, + 0xcf, 0xff, 0xd0, 0xff, 0xd5, 0xff, 0xd7, 0xff, 0xda, 0xff, 0xd9, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xef, 0xff, + 0xf6, 0xff, 0xf4, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x15, 0x00, 0x18, 0x00, + 0x20, 0x00, 0x1e, 0x00, 0x23, 0x00, 0x25, 0x00, 0x2e, 0x00, 0x2b, 0x00, + 0x31, 0x00, 0x33, 0x00, 0x3a, 0x00, 0x39, 0x00, 0x40, 0x00, 0x41, 0x00, + 0x48, 0x00, 0x48, 0x00, 0x4e, 0x00, 0x50, 0x00, 0x55, 0x00, 0x55, 0x00, + 0x5b, 0x00, 0x5b, 0x00, 0x62, 0x00, 0x60, 0x00, 0x68, 0x00, 0x69, 0x00, + 0x6f, 0x00, 0x6d, 0x00, 0x74, 0x00, 0x75, 0x00, 0x7c, 0x00, 0x79, 0x00, + 0x81, 0x00, 0x81, 0x00, 0x88, 0x00, 0x85, 0x00, 0x8b, 0x00, 0x8b, 0x00, + 0x92, 0x00, 0x92, 0x00, 0x95, 0x00, 0x95, 0x00, 0x9a, 0x00, 0x9a, 0x00, + 0x9f, 0x00, 0x9f, 0x00, 0xa5, 0x00, 0xa4, 0x00, 0xaa, 0x00, 0xaa, 0x00, + 0xad, 0x00, 0xad, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb6, 0x00, 0xb5, 0x00, + 0xbb, 0x00, 0xbc, 0x00, 0xbe, 0x00, 0xbd, 0x00, 0xc0, 0x00, 0xc2, 0x00, + 0xc8, 0x00, 0xc8, 0x00, 0xc8, 0x00, 0xc7, 0x00, 0xcd, 0x00, 0xce, 0x00, + 0xce, 0x00, 0xd0, 0x00, 0xd2, 0x00, 0xd1, 0x00, 0xd5, 0x00, 0xd7, 0x00, + 0xd8, 0x00, 0xd7, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xdb, 0x00, 0xdc, 0x00, + 0xdf, 0x00, 0xde, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0xe2, 0x00, 0xe3, 0x00, + 0xe4, 0x00, 0xe4, 0x00, 0xe5, 0x00, 0xe5, 0x00, 0xe6, 0x00, 0xe5, 0x00, + 0xe3, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xe6, 0x00, 0xe5, 0x00, 0xe6, 0x00, + 0xe3, 0x00, 0xe2, 0x00, 0xe3, 0x00, 0xe5, 0x00, 0xe2, 0x00, 0xe0, 0x00, + 0xe0, 0x00, 0xe1, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xdd, 0x00, 0xdd, 0x00, + 0xda, 0x00, 0xdb, 0x00, 0xd6, 0x00, 0xd6, 0x00, 0xd4, 0x00, 0xd3, 0x00, + 0xcd, 0x00, 0xcf, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xc6, 0x00, 0xc5, 0x00, + 0xc1, 0x00, 0xc2, 0x00, 0xbb, 0x00, 0xbb, 0x00, 0xb4, 0x00, 0xb6, 0x00, + 0xb0, 0x00, 0xae, 0x00, 0xa7, 0x00, 0xa9, 0x00, 0xa3, 0x00, 0xa2, 0x00, + 0x9b, 0x00, 0x9c, 0x00, 0x95, 0x00, 0x95, 0x00, 0x8d, 0x00, 0x8e, 0x00, + 0x86, 0x00, 0x86, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x77, 0x00, 0x78, 0x00, + 0x70, 0x00, 0x70, 0x00, 0x69, 0x00, 0x69, 0x00, 0x62, 0x00, 0x63, 0x00, + 0x5b, 0x00, 0x5c, 0x00, 0x52, 0x00, 0x51, 0x00, 0x4c, 0x00, 0x4d, 0x00, + 0x44, 0x00, 0x44, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x36, 0x00, 0x37, 0x00, + 0x2f, 0x00, 0x2e, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x21, 0x00, 0x22, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x13, 0x00, 0x15, 0x00, 0x0e, 0x00, 0x0f, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x01, 0x00, 0x02, 0x00, 0xf9, 0xff, 0xf9, 0xff, + 0xf4, 0xff, 0xf5, 0xff, 0xed, 0xff, 0xed, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xe0, 0xff, 0xe2, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd4, 0xff, 0xd4, 0xff, + 0xcd, 0xff, 0xce, 0xff, 0xc8, 0xff, 0xc7, 0xff, 0xc0, 0xff, 0xc0, 0xff, + 0xba, 0xff, 0xbb, 0xff, 0xb1, 0xff, 0xb2, 0xff, 0xab, 0xff, 0xae, 0xff, + 0xa5, 0xff, 0xa4, 0xff, 0x9f, 0xff, 0xa0, 0xff, 0x96, 0xff, 0x97, 0xff, + 0x92, 0xff, 0x91, 0xff, 0x88, 0xff, 0x8a, 0xff, 0x84, 0xff, 0x83, 0xff, + 0x7b, 0xff, 0x7c, 0xff, 0x74, 0xff, 0x75, 0xff, 0x6f, 0xff, 0x6e, 0xff, + 0x66, 0xff, 0x67, 0xff, 0x61, 0xff, 0x61, 0xff, 0x5b, 0xff, 0x5b, 0xff, + 0x54, 0xff, 0x55, 0xff, 0x4e, 0xff, 0x50, 0xff, 0x48, 0xff, 0x47, 0xff, + 0x42, 0xff, 0x44, 0xff, 0x3d, 0xff, 0x3c, 0xff, 0x38, 0xff, 0x3a, 0xff, + 0x34, 0xff, 0x34, 0xff, 0x2e, 0xff, 0x2f, 0xff, 0x2c, 0xff, 0x2b, 0xff, + 0x25, 0xff, 0x29, 0xff, 0x25, 0xff, 0x22, 0xff, 0x20, 0xff, 0x22, 0xff, + 0x1d, 0xff, 0x1d, 0xff, 0x1c, 0xff, 0x1d, 0xff, 0x19, 0xff, 0x1c, 0xff, + 0x17, 0xff, 0x19, 0xff, 0x19, 0xff, 0x18, 0xff, 0x15, 0xff, 0x17, 0xff, + 0x17, 0xff, 0x16, 0xff, 0x16, 0xff, 0x18, 0xff, 0x18, 0xff, 0x16, 0xff, + 0x18, 0xff, 0x19, 0xff, 0x18, 0xff, 0x19, 0xff, 0x1a, 0xff, 0x1b, 0xff, + 0x1d, 0xff, 0x1d, 0xff, 0x1f, 0xff, 0x20, 0xff, 0x21, 0xff, 0x22, 0xff, + 0x24, 0xff, 0x24, 0xff, 0x26, 0xff, 0x29, 0xff, 0x2c, 0xff, 0x2a, 0xff, + 0x2c, 0xff, 0x2d, 0xff, 0x32, 0xff, 0x32, 0xff, 0x34, 0xff, 0x35, 0xff, + 0x38, 0xff, 0x3b, 0xff, 0x3d, 0xff, 0x3c, 0xff, 0x3e, 0xff, 0x3f, 0xff, + 0x44, 0xff, 0x44, 0xff, 0x48, 0xff, 0x49, 0xff, 0x4e, 0xff, 0x4d, 0xff, + 0x53, 0xff, 0x55, 0xff, 0x57, 0xff, 0x56, 0xff, 0x5c, 0xff, 0x5d, 0xff, + 0x62, 0xff, 0x61, 0xff, 0x65, 0xff, 0x67, 0xff, 0x6e, 0xff, 0x6d, 0xff, + 0x70, 0xff, 0x71, 0xff, 0x79, 0xff, 0x79, 0xff, 0x7d, 0xff, 0x7d, 0xff, + 0x81, 0xff, 0x84, 0xff, 0x8b, 0xff, 0x8a, 0xff, 0x8d, 0xff, 0x8f, 0xff, + 0x96, 0xff, 0x97, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0xa3, 0xff, 0xa3, 0xff, + 0xaa, 0xff, 0xaa, 0xff, 0xb0, 0xff, 0xb1, 0xff, 0xb8, 0xff, 0xb8, 0xff, + 0xbd, 0xff, 0xc0, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xcd, 0xff, 0xce, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xed, 0xff, 0xee, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0x03, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x18, 0x00, 0x19, 0x00, 0x21, 0x00, 0x21, 0x00, 0x27, 0x00, 0x26, 0x00, + 0x2e, 0x00, 0x2f, 0x00, 0x36, 0x00, 0x35, 0x00, 0x3a, 0x00, 0x3c, 0x00, + 0x42, 0x00, 0x41, 0x00, 0x47, 0x00, 0x47, 0x00, 0x4c, 0x00, 0x4d, 0x00, + 0x53, 0x00, 0x52, 0x00, 0x58, 0x00, 0x57, 0x00, 0x5d, 0x00, 0x5d, 0x00, + 0x61, 0x00, 0x61, 0x00, 0x66, 0x00, 0x66, 0x00, 0x6b, 0x00, 0x6b, 0x00, + 0x6f, 0x00, 0x70, 0x00, 0x75, 0x00, 0x74, 0x00, 0x77, 0x00, 0x78, 0x00, + 0x7b, 0x00, 0x7b, 0x00, 0x81, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, + 0x86, 0x00, 0x85, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8c, 0x00, 0x8c, 0x00, + 0x91, 0x00, 0x91, 0x00, 0x93, 0x00, 0x92, 0x00, 0x97, 0x00, 0x97, 0x00, + 0x99, 0x00, 0x99, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0xa1, 0x00, 0xa0, 0x00, + 0xa3, 0x00, 0xa3, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, + 0xaf, 0x00, 0xad, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb6, 0x00, 0xb4, 0x00, + 0xb7, 0x00, 0xb9, 0x00, 0xbe, 0x00, 0xba, 0x00, 0xbe, 0x00, 0xc1, 0x00, + 0xc4, 0x00, 0xc2, 0x00, 0xc5, 0x00, 0xc7, 0x00, 0xcc, 0x00, 0xca, 0x00, + 0xca, 0x00, 0xcb, 0x00, 0xd2, 0x00, 0xd2, 0x00, 0xd2, 0x00, 0xd0, 0x00, + 0xd5, 0x00, 0xd5, 0x00, 0xd9, 0x00, 0xd7, 0x00, 0xd9, 0x00, 0xda, 0x00, + 0xdc, 0x00, 0xdb, 0x00, 0xdd, 0x00, 0xdd, 0x00, 0xdd, 0x00, 0xdc, 0x00, + 0xde, 0x00, 0xde, 0x00, 0xde, 0x00, 0xde, 0x00, 0xde, 0x00, 0xde, 0x00, + 0xdc, 0x00, 0xde, 0x00, 0xdc, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0xdc, 0x00, + 0xda, 0x00, 0xd9, 0x00, 0xd8, 0x00, 0xd7, 0x00, 0xd5, 0x00, 0xd4, 0x00, + 0xd1, 0x00, 0xd2, 0x00, 0xcf, 0x00, 0xcd, 0x00, 0xc9, 0x00, 0xcb, 0x00, + 0xc5, 0x00, 0xc5, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xbc, 0x00, 0xbc, 0x00, + 0xb5, 0x00, 0xb7, 0x00, 0xb2, 0x00, 0xb0, 0x00, 0xac, 0x00, 0xab, 0x00, + 0xa4, 0x00, 0xa7, 0x00, 0xa0, 0x00, 0x9f, 0x00, 0x99, 0x00, 0x9a, 0x00, + 0x92, 0x00, 0x92, 0x00, 0x8b, 0x00, 0x8a, 0x00, 0x83, 0x00, 0x84, 0x00, + 0x7d, 0x00, 0x7c, 0x00, 0x76, 0x00, 0x76, 0x00, 0x6d, 0x00, 0x6e, 0x00, + 0x68, 0x00, 0x66, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x58, 0x00, 0x57, 0x00, + 0x51, 0x00, 0x50, 0x00, 0x48, 0x00, 0x48, 0x00, 0x42, 0x00, 0x41, 0x00, + 0x39, 0x00, 0x39, 0x00, 0x31, 0x00, 0x32, 0x00, 0x2d, 0x00, 0x2b, 0x00, + 0x23, 0x00, 0x23, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x04, 0x00, 0x05, 0x00, 0xfe, 0xff, 0xfc, 0xff, + 0xf4, 0xff, 0xf6, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xe6, 0xff, 0xe7, 0xff, + 0xdc, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xd0, 0xff, 0xcf, 0xff, + 0xc7, 0xff, 0xc9, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xb8, 0xff, 0xb9, 0xff, + 0xb1, 0xff, 0xb2, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xa2, 0xff, 0xa3, 0xff, + 0x99, 0xff, 0x9a, 0xff, 0x92, 0xff, 0x93, 0xff, 0x8b, 0xff, 0x8c, 0xff, + 0x84, 0xff, 0x84, 0xff, 0x7e, 0xff, 0x80, 0xff, 0x75, 0xff, 0x74, 0xff, + 0x70, 0xff, 0x72, 0xff, 0x6a, 0xff, 0x69, 0xff, 0x63, 0xff, 0x64, 0xff, + 0x5e, 0xff, 0x5d, 0xff, 0x56, 0xff, 0x58, 0xff, 0x54, 0xff, 0x53, 0xff, + 0x4c, 0xff, 0x4e, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x45, 0xff, 0x46, 0xff, + 0x40, 0xff, 0x41, 0xff, 0x3d, 0xff, 0x3d, 0xff, 0x38, 0xff, 0x3b, 0xff, + 0x36, 0xff, 0x36, 0xff, 0x35, 0xff, 0x36, 0xff, 0x32, 0xff, 0x33, 0xff, + 0x2f, 0xff, 0x31, 0xff, 0x30, 0xff, 0x31, 0xff, 0x2d, 0xff, 0x2e, 0xff, + 0x2f, 0xff, 0x30, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x2d, 0xff, 0x2e, 0xff, + 0x2e, 0xff, 0x2e, 0xff, 0x2c, 0xff, 0x2e, 0xff, 0x30, 0xff, 0x31, 0xff, + 0x2e, 0xff, 0x2c, 0xff, 0x32, 0xff, 0x33, 0xff, 0x2f, 0xff, 0x30, 0xff, + 0x34, 0xff, 0x33, 0xff, 0x34, 0xff, 0x36, 0xff, 0x35, 0xff, 0x34, 0xff, + 0x39, 0xff, 0x39, 0xff, 0x38, 0xff, 0x39, 0xff, 0x3c, 0xff, 0x3c, 0xff, + 0x3c, 0xff, 0x3d, 0xff, 0x3f, 0xff, 0x3e, 0xff, 0x41, 0xff, 0x40, 0xff, + 0x42, 0xff, 0x45, 0xff, 0x45, 0xff, 0x46, 0xff, 0x47, 0xff, 0x46, 0xff, + 0x49, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x4e, 0xff, 0x4e, 0xff, + 0x4f, 0xff, 0x50, 0xff, 0x53, 0xff, 0x52, 0xff, 0x56, 0xff, 0x57, 0xff, + 0x58, 0xff, 0x56, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x5e, 0xff, 0x60, 0xff, + 0x62, 0xff, 0x62, 0xff, 0x65, 0xff, 0x65, 0xff, 0x68, 0xff, 0x69, 0xff, + 0x6d, 0xff, 0x6c, 0xff, 0x72, 0xff, 0x73, 0xff, 0x75, 0xff, 0x75, 0xff, + 0x7b, 0xff, 0x7b, 0xff, 0x7f, 0xff, 0x82, 0xff, 0x86, 0xff, 0x85, 0xff, + 0x8a, 0xff, 0x8b, 0xff, 0x8f, 0xff, 0x93, 0xff, 0x98, 0xff, 0x94, 0xff, + 0x9a, 0xff, 0x9f, 0xff, 0xa6, 0xff, 0xa5, 0xff, 0xa8, 0xff, 0xaa, 0xff, + 0xb3, 0xff, 0xb3, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xc2, 0xff, 0xc1, 0xff, + 0xc6, 0xff, 0xc9, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd7, 0xff, 0xd7, 0xff, + 0xdd, 0xff, 0xdf, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xee, 0xff, 0xf0, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xff, 0xff, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x17, 0x00, 0x17, 0x00, 0x1b, 0x00, 0x1c, 0x00, + 0x26, 0x00, 0x27, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x32, 0x00, 0x33, 0x00, + 0x3a, 0x00, 0x38, 0x00, 0x3f, 0x00, 0x42, 0x00, 0x46, 0x00, 0x45, 0x00, + 0x4a, 0x00, 0x4c, 0x00, 0x53, 0x00, 0x51, 0x00, 0x56, 0x00, 0x56, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x61, 0x00, 0x63, 0x00, 0x68, 0x00, 0x65, 0x00, + 0x6a, 0x00, 0x6c, 0x00, 0x71, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x74, 0x00, + 0x7a, 0x00, 0x77, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x81, 0x00, 0x7f, 0x00, + 0x85, 0x00, 0x86, 0x00, 0x89, 0x00, 0x89, 0x00, 0x8e, 0x00, 0x8e, 0x00, + 0x91, 0x00, 0x91, 0x00, 0x94, 0x00, 0x95, 0x00, 0x9a, 0x00, 0x97, 0x00, + 0x9a, 0x00, 0x9d, 0x00, 0xa0, 0x00, 0x9e, 0x00, 0xa4, 0x00, 0xa4, 0x00, + 0xa5, 0x00, 0xa5, 0x00, 0xad, 0x00, 0xab, 0x00, 0xad, 0x00, 0xad, 0x00, + 0xb0, 0x00, 0xb3, 0x00, 0xb5, 0x00, 0xb3, 0x00, 0xb8, 0x00, 0xb8, 0x00, + 0xbb, 0x00, 0xbb, 0x00, 0xbf, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xc2, 0x00, + 0xc5, 0x00, 0xc4, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xca, 0x00, 0xc8, 0x00, + 0xcc, 0x00, 0xcc, 0x00, 0xce, 0x00, 0xcc, 0x00, 0xcf, 0x00, 0xcf, 0x00, + 0xd1, 0x00, 0xcf, 0x00, 0xd1, 0x00, 0xd3, 0x00, 0xd2, 0x00, 0xd2, 0x00, + 0xd4, 0x00, 0xd2, 0x00, 0xd4, 0x00, 0xd4, 0x00, 0xd2, 0x00, 0xd1, 0x00, + 0xd2, 0x00, 0xd3, 0x00, 0xd2, 0x00, 0xd2, 0x00, 0xd0, 0x00, 0xd0, 0x00, + 0xd0, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xcd, 0x00, 0xcb, 0x00, 0xcc, 0x00, + 0xca, 0x00, 0xc9, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc4, 0x00, 0xc2, 0x00, + 0xbf, 0x00, 0xc1, 0x00, 0xbe, 0x00, 0xbb, 0x00, 0xb9, 0x00, 0xb8, 0x00, + 0xb5, 0x00, 0xb4, 0x00, 0xb1, 0x00, 0xb0, 0x00, 0xaa, 0x00, 0xab, 0x00, + 0xa8, 0x00, 0xa7, 0x00, 0xa2, 0x00, 0xa1, 0x00, 0x9b, 0x00, 0x9d, 0x00, + 0x99, 0x00, 0x97, 0x00, 0x91, 0x00, 0x92, 0x00, 0x8e, 0x00, 0x8d, 0x00, + 0x86, 0x00, 0x87, 0x00, 0x81, 0x00, 0x83, 0x00, 0x7d, 0x00, 0x7c, 0x00, + 0x77, 0x00, 0x76, 0x00, 0x72, 0x00, 0x72, 0x00, 0x6b, 0x00, 0x6b, 0x00, + 0x66, 0x00, 0x65, 0x00, 0x60, 0x00, 0x61, 0x00, 0x5c, 0x00, 0x59, 0x00, + 0x54, 0x00, 0x56, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x48, 0x00, 0x48, 0x00, + 0x41, 0x00, 0x42, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x35, 0x00, 0x33, 0x00, + 0x2a, 0x00, 0x2d, 0x00, 0x27, 0x00, 0x26, 0x00, 0x20, 0x00, 0x21, 0x00, + 0x18, 0x00, 0x17, 0x00, 0x14, 0x00, 0x13, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x03, 0x00, 0x03, 0x00, 0xfb, 0xff, 0xfa, 0xff, 0xf2, 0xff, 0xf1, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xda, 0xff, 0xdb, 0xff, + 0xd3, 0xff, 0xd1, 0xff, 0xc8, 0xff, 0xc9, 0xff, 0xc2, 0xff, 0xc1, 0xff, + 0xb7, 0xff, 0xb8, 0xff, 0xb1, 0xff, 0xb0, 0xff, 0xa7, 0xff, 0xa7, 0xff, + 0xa0, 0xff, 0x9f, 0xff, 0x96, 0xff, 0x95, 0xff, 0x8e, 0xff, 0x8f, 0xff, + 0x86, 0xff, 0x86, 0xff, 0x7f, 0xff, 0x80, 0xff, 0x76, 0xff, 0x75, 0xff, + 0x71, 0xff, 0x71, 0xff, 0x6a, 0xff, 0x69, 0xff, 0x64, 0xff, 0x64, 0xff, + 0x5d, 0xff, 0x5d, 0xff, 0x56, 0xff, 0x58, 0xff, 0x50, 0xff, 0x50, 0xff, + 0x4c, 0xff, 0x4e, 0xff, 0x49, 0xff, 0x46, 0xff, 0x41, 0xff, 0x44, 0xff, + 0x3f, 0xff, 0x3f, 0xff, 0x3c, 0xff, 0x3d, 0xff, 0x3b, 0xff, 0x3a, 0xff, + 0x36, 0xff, 0x38, 0xff, 0x36, 0xff, 0x36, 0xff, 0x35, 0xff, 0x35, 0xff, + 0x32, 0xff, 0x32, 0xff, 0x32, 0xff, 0x32, 0xff, 0x32, 0xff, 0x32, 0xff, + 0x30, 0xff, 0x30, 0xff, 0x33, 0xff, 0x32, 0xff, 0x30, 0xff, 0x31, 0xff, + 0x34, 0xff, 0x32, 0xff, 0x32, 0xff, 0x34, 0xff, 0x35, 0xff, 0x34, 0xff, + 0x37, 0xff, 0x36, 0xff, 0x37, 0xff, 0x37, 0xff, 0x3b, 0xff, 0x39, 0xff, + 0x3a, 0xff, 0x3a, 0xff, 0x3d, 0xff, 0x3d, 0xff, 0x3f, 0xff, 0x3e, 0xff, + 0x42, 0xff, 0x42, 0xff, 0x43, 0xff, 0x42, 0xff, 0x45, 0xff, 0x46, 0xff, + 0x49, 0xff, 0x47, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x4b, 0xff, 0x4a, 0xff, + 0x4f, 0xff, 0x4f, 0xff, 0x50, 0xff, 0x4f, 0xff, 0x54, 0xff, 0x53, 0xff, + 0x52, 0xff, 0x53, 0xff, 0x58, 0xff, 0x57, 0xff, 0x59, 0xff, 0x58, 0xff, + 0x5c, 0xff, 0x5b, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x63, 0xff, 0x62, 0xff, + 0x64, 0xff, 0x65, 0xff, 0x69, 0xff, 0x68, 0xff, 0x6b, 0xff, 0x6b, 0xff, + 0x6d, 0xff, 0x6c, 0xff, 0x72, 0xff, 0x72, 0xff, 0x73, 0xff, 0x73, 0xff, + 0x7a, 0xff, 0x7b, 0xff, 0x7d, 0xff, 0x7b, 0xff, 0x81, 0xff, 0x83, 0xff, + 0x87, 0xff, 0x86, 0xff, 0x8a, 0xff, 0x8b, 0xff, 0x90, 0xff, 0x90, 0xff, + 0x95, 0xff, 0x96, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0xa0, 0xff, 0xa0, 0xff, + 0xa5, 0xff, 0xa6, 0xff, 0xab, 0xff, 0xab, 0xff, 0xb1, 0xff, 0xb2, 0xff, + 0xba, 0xff, 0xb7, 0xff, 0xbd, 0xff, 0xbf, 0xff, 0xc5, 0xff, 0xc4, 0xff, + 0xcc, 0xff, 0xcd, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xda, 0xff, 0xdb, 0xff, + 0xe0, 0xff, 0xdf, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xf3, 0xff, 0xf2, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x1b, 0x00, 0x1a, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x25, 0x00, 0x25, 0x00, + 0x2d, 0x00, 0x2c, 0x00, 0x30, 0x00, 0x30, 0x00, 0x38, 0x00, 0x36, 0x00, + 0x3a, 0x00, 0x3c, 0x00, 0x41, 0x00, 0x42, 0x00, 0x47, 0x00, 0x47, 0x00, + 0x4a, 0x00, 0x4c, 0x00, 0x51, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x57, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x60, 0x00, 0x60, 0x00, 0x66, 0x00, 0x66, 0x00, + 0x69, 0x00, 0x6a, 0x00, 0x70, 0x00, 0x70, 0x00, 0x73, 0x00, 0x73, 0x00, + 0x78, 0x00, 0x7a, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x82, 0x00, + 0x89, 0x00, 0x89, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x91, 0x00, 0x92, 0x00, + 0x97, 0x00, 0x96, 0x00, 0x99, 0x00, 0x9c, 0x00, 0xa1, 0x00, 0xa1, 0x00, + 0xa4, 0x00, 0xa6, 0x00, 0xac, 0x00, 0xab, 0x00, 0xae, 0x00, 0xaf, 0x00, + 0xb5, 0x00, 0xb4, 0x00, 0xb7, 0x00, 0xb9, 0x00, 0xbe, 0x00, 0xbd, 0x00, + 0xc1, 0x00, 0xc1, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc9, 0x00, 0xca, 0x00, + 0xc9, 0x00, 0xc9, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xd1, 0x00, 0xcf, 0x00, + 0xd1, 0x00, 0xd4, 0x00, 0xd6, 0x00, 0xd5, 0x00, 0xd5, 0x00, 0xd6, 0x00, + 0xda, 0x00, 0xd8, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xd9, 0x00, 0xd8, 0x00, + 0xd9, 0x00, 0xda, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xd8, 0x00, 0xd7, 0x00, + 0xd6, 0x00, 0xd6, 0x00, 0xd4, 0x00, 0xd3, 0x00, 0xd2, 0x00, 0xd2, 0x00, + 0xd0, 0x00, 0xcf, 0x00, 0xcd, 0x00, 0xcc, 0x00, 0xca, 0x00, 0xc9, 0x00, + 0xc5, 0x00, 0xc7, 0x00, 0xc2, 0x00, 0xc1, 0x00, 0xbd, 0x00, 0xbe, 0x00, + 0xb9, 0x00, 0xb8, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0xaf, 0x00, 0xb0, 0x00, + 0xab, 0x00, 0xab, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0x9f, 0x00, 0xa0, 0x00, + 0x9d, 0x00, 0x9c, 0x00, 0x94, 0x00, 0x94, 0x00, 0x92, 0x00, 0x92, 0x00, + 0x8b, 0x00, 0x8a, 0x00, 0x87, 0x00, 0x86, 0x00, 0x81, 0x00, 0x81, 0x00, + 0x7a, 0x00, 0x7a, 0x00, 0x76, 0x00, 0x76, 0x00, 0x6e, 0x00, 0x6e, 0x00, + 0x6c, 0x00, 0x6b, 0x00, 0x63, 0x00, 0x63, 0x00, 0x61, 0x00, 0x5f, 0x00, + 0x5a, 0x00, 0x5b, 0x00, 0x55, 0x00, 0x55, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x45, 0x00, 0x44, 0x00, 0x3f, 0x00, 0x40, 0x00, + 0x38, 0x00, 0x39, 0x00, 0x34, 0x00, 0x33, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x28, 0x00, 0x27, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1a, 0x00, 0x1b, 0x00, + 0x14, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xf2, 0xff, 0xf0, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xdd, 0xff, 0xdd, 0xff, + 0xd5, 0xff, 0xd5, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xc4, 0xff, 0xc5, 0xff, + 0xbf, 0xff, 0xbe, 0xff, 0xb5, 0xff, 0xb6, 0xff, 0xae, 0xff, 0xad, 0xff, + 0xa5, 0xff, 0xa7, 0xff, 0x9f, 0xff, 0xa0, 0xff, 0x9a, 0xff, 0x98, 0xff, + 0x8f, 0xff, 0x90, 0xff, 0x89, 0xff, 0x88, 0xff, 0x84, 0xff, 0x84, 0xff, + 0x79, 0xff, 0x78, 0xff, 0x76, 0xff, 0x77, 0xff, 0x6d, 0xff, 0x6d, 0xff, + 0x6a, 0xff, 0x68, 0xff, 0x62, 0xff, 0x63, 0xff, 0x5e, 0xff, 0x5e, 0xff, + 0x5a, 0xff, 0x59, 0xff, 0x53, 0xff, 0x54, 0xff, 0x51, 0xff, 0x51, 0xff, + 0x4d, 0xff, 0x4f, 0xff, 0x49, 0xff, 0x49, 0xff, 0x47, 0xff, 0x48, 0xff, + 0x44, 0xff, 0x43, 0xff, 0x42, 0xff, 0x43, 0xff, 0x40, 0xff, 0x40, 0xff, + 0x3f, 0xff, 0x3e, 0xff, 0x3d, 0xff, 0x3f, 0xff, 0x3b, 0xff, 0x3a, 0xff, + 0x3b, 0xff, 0x3c, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3b, 0xff, 0x3b, 0xff, + 0x3a, 0xff, 0x3b, 0xff, 0x3a, 0xff, 0x3c, 0xff, 0x3b, 0xff, 0x3b, 0xff, + 0x3c, 0xff, 0x3e, 0xff, 0x3d, 0xff, 0x3c, 0xff, 0x3d, 0xff, 0x3e, 0xff, + 0x3e, 0xff, 0x3e, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x40, 0xff, + 0x42, 0xff, 0x40, 0xff, 0x42, 0xff, 0x43, 0xff, 0x42, 0xff, 0x43, 0xff, + 0x46, 0xff, 0x46, 0xff, 0x46, 0xff, 0x46, 0xff, 0x4a, 0xff, 0x4a, 0xff, + 0x4a, 0xff, 0x4a, 0xff, 0x4b, 0xff, 0x4d, 0xff, 0x50, 0xff, 0x4f, 0xff, + 0x50, 0xff, 0x51, 0xff, 0x53, 0xff, 0x52, 0xff, 0x57, 0xff, 0x56, 0xff, + 0x56, 0xff, 0x56, 0xff, 0x5b, 0xff, 0x59, 0xff, 0x5a, 0xff, 0x5c, 0xff, + 0x61, 0xff, 0x5e, 0xff, 0x60, 0xff, 0x63, 0xff, 0x67, 0xff, 0x66, 0xff, + 0x6c, 0xff, 0x6b, 0xff, 0x6e, 0xff, 0x6f, 0xff, 0x73, 0xff, 0x73, 0xff, + 0x78, 0xff, 0x78, 0xff, 0x7d, 0xff, 0x7c, 0xff, 0x80, 0xff, 0x81, 0xff, + 0x88, 0xff, 0x88, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x92, 0xff, 0x92, 0xff, + 0x98, 0xff, 0x98, 0xff, 0x9f, 0xff, 0x9e, 0xff, 0xa5, 0xff, 0xa5, 0xff, + 0xaa, 0xff, 0xa9, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb8, 0xff, 0xb8, 0xff, + 0xc0, 0xff, 0xbf, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xcd, 0xff, 0xcd, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xe1, 0xff, 0xe0, 0xff, + 0xe8, 0xff, 0xe9, 0xff, 0xed, 0xff, 0xec, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0x02, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x11, 0x00, 0x12, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x1b, 0x00, 0x1c, 0x00, 0x22, 0x00, 0x23, 0x00, 0x25, 0x00, 0x26, 0x00, + 0x2b, 0x00, 0x2c, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x34, 0x00, 0x34, 0x00, + 0x38, 0x00, 0x39, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x41, 0x00, 0x42, 0x00, + 0x43, 0x00, 0x47, 0x00, 0x49, 0x00, 0x47, 0x00, 0x4f, 0x00, 0x50, 0x00, + 0x52, 0x00, 0x53, 0x00, 0x57, 0x00, 0x57, 0x00, 0x5b, 0x00, 0x5c, 0x00, + 0x60, 0x00, 0x5e, 0x00, 0x64, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, + 0x70, 0x00, 0x6d, 0x00, 0x71, 0x00, 0x74, 0x00, 0x78, 0x00, 0x75, 0x00, + 0x7b, 0x00, 0x7d, 0x00, 0x82, 0x00, 0x80, 0x00, 0x87, 0x00, 0x88, 0x00, + 0x8b, 0x00, 0x8c, 0x00, 0x91, 0x00, 0x91, 0x00, 0x96, 0x00, 0x96, 0x00, + 0x9c, 0x00, 0x9c, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0xa6, 0x00, 0xa6, 0x00, + 0xac, 0x00, 0xab, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb4, 0x00, 0xb4, 0x00, + 0xba, 0x00, 0xb9, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xc1, 0x00, 0xc0, 0x00, + 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xc8, 0x00, 0xcd, 0x00, 0xcd, 0x00, + 0xcf, 0x00, 0xd0, 0x00, 0xd2, 0x00, 0xd2, 0x00, 0xd4, 0x00, 0xd5, 0x00, + 0xd5, 0x00, 0xd4, 0x00, 0xd6, 0x00, 0xd6, 0x00, 0xd8, 0x00, 0xd8, 0x00, + 0xd7, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0xd8, 0x00, 0xd8, 0x00, 0xd6, 0x00, + 0xd6, 0x00, 0xd5, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd0, 0x00, 0xd0, 0x00, + 0xcf, 0x00, 0xcf, 0x00, 0xcc, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcb, 0x00, + 0xc5, 0x00, 0xc6, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xbe, 0x00, 0xbe, 0x00, + 0xbb, 0x00, 0xbb, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0xb2, 0x00, 0xb2, 0x00, + 0xab, 0x00, 0xad, 0x00, 0xa8, 0x00, 0xa7, 0x00, 0xa1, 0x00, 0xa2, 0x00, + 0x9d, 0x00, 0x9c, 0x00, 0x9a, 0x00, 0x99, 0x00, 0x90, 0x00, 0x93, 0x00, + 0x8f, 0x00, 0x8e, 0x00, 0x85, 0x00, 0x88, 0x00, 0x83, 0x00, 0x81, 0x00, + 0x7d, 0x00, 0x7e, 0x00, 0x76, 0x00, 0x77, 0x00, 0x73, 0x00, 0x74, 0x00, + 0x6a, 0x00, 0x6c, 0x00, 0x66, 0x00, 0x67, 0x00, 0x62, 0x00, 0x62, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x57, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x4f, 0x00, + 0x4a, 0x00, 0x4d, 0x00, 0x45, 0x00, 0x45, 0x00, 0x3d, 0x00, 0x3e, 0x00, + 0x39, 0x00, 0x3a, 0x00, 0x32, 0x00, 0x33, 0x00, 0x2c, 0x00, 0x2d, 0x00, + 0x26, 0x00, 0x27, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x11, 0x00, 0x13, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x05, 0x00, + 0xfd, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xd6, 0xff, + 0xd0, 0xff, 0xd0, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xbf, 0xff, 0xc0, 0xff, + 0xb8, 0xff, 0xb9, 0xff, 0xb1, 0xff, 0xb0, 0xff, 0xa9, 0xff, 0xaa, 0xff, + 0xa2, 0xff, 0xa3, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x95, 0xff, 0x95, 0xff, + 0x8d, 0xff, 0x8c, 0xff, 0x87, 0xff, 0x88, 0xff, 0x81, 0xff, 0x80, 0xff, + 0x7b, 0xff, 0x7b, 0xff, 0x76, 0xff, 0x76, 0xff, 0x72, 0xff, 0x72, 0xff, + 0x6c, 0xff, 0x6b, 0xff, 0x68, 0xff, 0x69, 0xff, 0x64, 0xff, 0x63, 0xff, + 0x61, 0xff, 0x61, 0xff, 0x5d, 0xff, 0x5e, 0xff, 0x5b, 0xff, 0x5a, 0xff, + 0x58, 0xff, 0x58, 0xff, 0x56, 0xff, 0x56, 0xff, 0x53, 0xff, 0x53, 0xff, + 0x53, 0xff, 0x54, 0xff, 0x51, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x4f, 0xff, 0x4d, 0xff, 0x4d, 0xff, 0x4f, 0xff, 0x4f, 0xff, + 0x4c, 0xff, 0x4d, 0xff, 0x4e, 0xff, 0x4d, 0xff, 0x4e, 0xff, 0x4e, 0xff, + 0x4c, 0xff, 0x4b, 0xff, 0x4e, 0xff, 0x4f, 0xff, 0x4d, 0xff, 0x4d, 0xff, + 0x4d, 0xff, 0x4d, 0xff, 0x4e, 0xff, 0x4e, 0xff, 0x4d, 0xff, 0x4c, 0xff, + 0x4e, 0xff, 0x4e, 0xff, 0x4d, 0xff, 0x4d, 0xff, 0x4d, 0xff, 0x4d, 0xff, + 0x4d, 0xff, 0x4e, 0xff, 0x4f, 0xff, 0x50, 0xff, 0x4e, 0xff, 0x4f, 0xff, + 0x50, 0xff, 0x4e, 0xff, 0x4e, 0xff, 0x4f, 0xff, 0x50, 0xff, 0x51, 0xff, + 0x4f, 0xff, 0x4f, 0xff, 0x50, 0xff, 0x50, 0xff, 0x52, 0xff, 0x52, 0xff, + 0x52, 0xff, 0x53, 0xff, 0x55, 0xff, 0x55, 0xff, 0x54, 0xff, 0x55, 0xff, + 0x56, 0xff, 0x57, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x5b, 0xff, + 0x5f, 0xff, 0x5e, 0xff, 0x61, 0xff, 0x61, 0xff, 0x65, 0xff, 0x64, 0xff, + 0x69, 0xff, 0x68, 0xff, 0x6b, 0xff, 0x6a, 0xff, 0x70, 0xff, 0x70, 0xff, + 0x74, 0xff, 0x74, 0xff, 0x79, 0xff, 0x79, 0xff, 0x7f, 0xff, 0x7f, 0xff, + 0x81, 0xff, 0x82, 0xff, 0x89, 0xff, 0x8a, 0xff, 0x8f, 0xff, 0x8e, 0xff, + 0x94, 0xff, 0x94, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0xa2, 0xff, 0xa0, 0xff, + 0xa8, 0xff, 0xa9, 0xff, 0xaf, 0xff, 0xae, 0xff, 0xb5, 0xff, 0xb5, 0xff, + 0xbc, 0xff, 0xbd, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xcb, 0xff, 0xca, 0xff, + 0xce, 0xff, 0xd0, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xdb, 0xff, 0xdd, 0xff, + 0xe4, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xf0, 0xff, 0xf2, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0x02, 0x00, 0x03, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x1c, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2f, 0x00, 0x30, 0x00, + 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x37, 0x00, 0x3d, 0x00, 0x3d, 0x00, + 0x41, 0x00, 0x3f, 0x00, 0x43, 0x00, 0x45, 0x00, 0x4c, 0x00, 0x4b, 0x00, + 0x4d, 0x00, 0x4e, 0x00, 0x55, 0x00, 0x54, 0x00, 0x58, 0x00, 0x58, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x63, 0x00, 0x63, 0x00, 0x65, 0x00, 0x65, 0x00, + 0x6d, 0x00, 0x6e, 0x00, 0x70, 0x00, 0x6e, 0x00, 0x76, 0x00, 0x77, 0x00, + 0x7d, 0x00, 0x7d, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x88, 0x00, 0x89, 0x00, + 0x8a, 0x00, 0x89, 0x00, 0x92, 0x00, 0x93, 0x00, 0x97, 0x00, 0x95, 0x00, + 0x9a, 0x00, 0x9b, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0xa2, 0x00, 0xa3, 0x00, + 0xad, 0x00, 0xad, 0x00, 0xad, 0x00, 0xaf, 0x00, 0xb4, 0x00, 0xb2, 0x00, + 0xb7, 0x00, 0xb9, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0xc0, 0x00, 0xbf, 0x00, + 0xc0, 0x00, 0xc1, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xc7, 0x00, 0xc6, 0x00, + 0xc7, 0x00, 0xc8, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xca, 0x00, 0xca, 0x00, + 0xcc, 0x00, 0xcd, 0x00, 0xcb, 0x00, 0xcd, 0x00, 0xcd, 0x00, 0xcb, 0x00, + 0xcb, 0x00, 0xcc, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xca, 0x00, 0xca, 0x00, + 0xc8, 0x00, 0xc8, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xc4, 0x00, 0xc5, 0x00, + 0xc1, 0x00, 0xc1, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xba, 0x00, 0xbd, 0x00, + 0xb7, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0xb7, 0x00, 0xb0, 0x00, 0xb0, 0x00, + 0xae, 0x00, 0xaf, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xa4, 0x00, 0xa5, 0x00, + 0xa1, 0x00, 0xa0, 0x00, 0x9b, 0x00, 0x9d, 0x00, 0x98, 0x00, 0x99, 0x00, + 0x95, 0x00, 0x94, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8b, 0x00, 0x8c, 0x00, + 0x85, 0x00, 0x86, 0x00, 0x83, 0x00, 0x83, 0x00, 0x7e, 0x00, 0x7f, 0x00, + 0x79, 0x00, 0x7a, 0x00, 0x74, 0x00, 0x76, 0x00, 0x70, 0x00, 0x71, 0x00, + 0x6c, 0x00, 0x6d, 0x00, 0x66, 0x00, 0x67, 0x00, 0x61, 0x00, 0x63, 0x00, + 0x5d, 0x00, 0x5f, 0x00, 0x57, 0x00, 0x56, 0x00, 0x53, 0x00, 0x56, 0x00, + 0x4c, 0x00, 0x4c, 0x00, 0x47, 0x00, 0x48, 0x00, 0x42, 0x00, 0x44, 0x00, + 0x3a, 0x00, 0x39, 0x00, 0x34, 0x00, 0x37, 0x00, 0x2e, 0x00, 0x2e, 0x00, + 0x29, 0x00, 0x2a, 0x00, 0x21, 0x00, 0x22, 0x00, 0x1a, 0x00, 0x1b, 0x00, + 0x13, 0x00, 0x14, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x03, 0x00, + 0xfc, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xd6, 0xff, 0xd5, 0xff, + 0xce, 0xff, 0xcf, 0xff, 0xc6, 0xff, 0xc5, 0xff, 0xbf, 0xff, 0xbf, 0xff, + 0xb6, 0xff, 0xb7, 0xff, 0xaf, 0xff, 0xb0, 0xff, 0xa8, 0xff, 0xa7, 0xff, + 0xa1, 0xff, 0xa1, 0xff, 0x9c, 0xff, 0x9b, 0xff, 0x95, 0xff, 0x97, 0xff, + 0x8f, 0xff, 0x8d, 0xff, 0x89, 0xff, 0x8b, 0xff, 0x85, 0xff, 0x84, 0xff, + 0x7e, 0xff, 0x7f, 0xff, 0x7b, 0xff, 0x7a, 0xff, 0x77, 0xff, 0x76, 0xff, + 0x73, 0xff, 0x72, 0xff, 0x71, 0xff, 0x70, 0xff, 0x6b, 0xff, 0x6a, 0xff, + 0x6a, 0xff, 0x6a, 0xff, 0x66, 0xff, 0x65, 0xff, 0x65, 0xff, 0x66, 0xff, + 0x63, 0xff, 0x62, 0xff, 0x61, 0xff, 0x61, 0xff, 0x62, 0xff, 0x5f, 0xff, + 0x5d, 0xff, 0x5d, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x5d, 0xff, 0x5b, 0xff, + 0x5c, 0xff, 0x5d, 0xff, 0x5e, 0xff, 0x5b, 0xff, 0x5a, 0xff, 0x5b, 0xff, + 0x5c, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x59, 0xff, 0x5a, 0xff, 0x5c, 0xff, + 0x5b, 0xff, 0x58, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x5a, 0xff, + 0x57, 0xff, 0x57, 0xff, 0x5a, 0xff, 0x59, 0xff, 0x57, 0xff, 0x59, 0xff, + 0x57, 0xff, 0x55, 0xff, 0x59, 0xff, 0x5a, 0xff, 0x56, 0xff, 0x56, 0xff, + 0x59, 0xff, 0x59, 0xff, 0x59, 0xff, 0x59, 0xff, 0x56, 0xff, 0x57, 0xff, + 0x5a, 0xff, 0x5b, 0xff, 0x57, 0xff, 0x56, 0xff, 0x57, 0xff, 0x59, 0xff, + 0x58, 0xff, 0x57, 0xff, 0x59, 0xff, 0x59, 0xff, 0x59, 0xff, 0x59, 0xff, + 0x5a, 0xff, 0x5a, 0xff, 0x59, 0xff, 0x5b, 0xff, 0x5e, 0xff, 0x5d, 0xff, + 0x5d, 0xff, 0x5e, 0xff, 0x5f, 0xff, 0x61, 0xff, 0x62, 0xff, 0x61, 0xff, + 0x64, 0xff, 0x65, 0xff, 0x68, 0xff, 0x67, 0xff, 0x6d, 0xff, 0x6c, 0xff, + 0x6d, 0xff, 0x6f, 0xff, 0x73, 0xff, 0x72, 0xff, 0x77, 0xff, 0x77, 0xff, + 0x79, 0xff, 0x7b, 0xff, 0x82, 0xff, 0x7f, 0xff, 0x85, 0xff, 0x86, 0xff, + 0x8b, 0xff, 0x8a, 0xff, 0x90, 0xff, 0x91, 0xff, 0x94, 0xff, 0x94, 0xff, + 0x9c, 0xff, 0x9c, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0xa6, 0xff, 0xa7, 0xff, + 0xae, 0xff, 0xac, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xb8, 0xff, 0xb8, 0xff, + 0xc0, 0xff, 0xbf, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xcc, 0xff, 0xcb, 0xff, + 0xd2, 0xff, 0xd3, 0xff, 0xd6, 0xff, 0xd7, 0xff, 0xe0, 0xff, 0xde, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0x01, 0x00, 0x03, 0x00, 0x08, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x14, 0x00, 0x13, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0x24, 0x00, 0x22, 0x00, 0x26, 0x00, 0x28, 0x00, + 0x2d, 0x00, 0x2b, 0x00, 0x30, 0x00, 0x30, 0x00, 0x34, 0x00, 0x35, 0x00, + 0x3b, 0x00, 0x3a, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x44, 0x00, 0x44, 0x00, + 0x4b, 0x00, 0x4b, 0x00, 0x4e, 0x00, 0x4d, 0x00, 0x55, 0x00, 0x56, 0x00, + 0x5b, 0x00, 0x59, 0x00, 0x5f, 0x00, 0x62, 0x00, 0x66, 0x00, 0x64, 0x00, + 0x69, 0x00, 0x6b, 0x00, 0x71, 0x00, 0x6f, 0x00, 0x78, 0x00, 0x78, 0x00, + 0x7b, 0x00, 0x7b, 0x00, 0x82, 0x00, 0x82, 0x00, 0x88, 0x00, 0x8a, 0x00, + 0x8d, 0x00, 0x8c, 0x00, 0x95, 0x00, 0x94, 0x00, 0x98, 0x00, 0x97, 0x00, + 0x9e, 0x00, 0x9e, 0x00, 0xa2, 0x00, 0xa1, 0x00, 0xa7, 0x00, 0xa6, 0x00, + 0xac, 0x00, 0xab, 0x00, 0xae, 0x00, 0xae, 0x00, 0xb4, 0x00, 0xb5, 0x00, + 0xb6, 0x00, 0xb6, 0x00, 0xba, 0x00, 0xb9, 0x00, 0xbb, 0x00, 0xbc, 0x00, + 0xbf, 0x00, 0xbd, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc1, 0x00, 0xc0, 0x00, + 0xc4, 0x00, 0xc4, 0x00, 0xc3, 0x00, 0xc2, 0x00, 0xc5, 0x00, 0xc5, 0x00, + 0xc4, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc3, 0x00, + 0xc1, 0x00, 0xc0, 0x00, 0xbf, 0x00, 0xc1, 0x00, 0xbe, 0x00, 0xbc, 0x00, + 0xbb, 0x00, 0xbd, 0x00, 0xb9, 0x00, 0xb8, 0x00, 0xb7, 0x00, 0xb7, 0x00, + 0xb2, 0x00, 0xb2, 0x00, 0xb2, 0x00, 0xb1, 0x00, 0xad, 0x00, 0xaf, 0x00, + 0xaa, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xa8, 0x00, 0xa4, 0x00, 0xa4, 0x00, + 0xa1, 0x00, 0xa2, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0x98, 0x00, 0x99, 0x00, + 0x98, 0x00, 0x97, 0x00, 0x92, 0x00, 0x94, 0x00, 0x90, 0x00, 0x8f, 0x00, + 0x8a, 0x00, 0x8a, 0x00, 0x87, 0x00, 0x87, 0x00, 0x85, 0x00, 0x85, 0x00, + 0x7e, 0x00, 0x7f, 0x00, 0x7c, 0x00, 0x7b, 0x00, 0x78, 0x00, 0x78, 0x00, + 0x73, 0x00, 0x74, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x6a, 0x00, 0x6c, 0x00, + 0x66, 0x00, 0x67, 0x00, 0x65, 0x00, 0x63, 0x00, 0x5d, 0x00, 0x5e, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x55, 0x00, 0x55, 0x00, 0x50, 0x00, 0x51, 0x00, + 0x4a, 0x00, 0x48, 0x00, 0x44, 0x00, 0x45, 0x00, 0x3e, 0x00, 0x3c, 0x00, + 0x38, 0x00, 0x39, 0x00, 0x33, 0x00, 0x31, 0x00, 0x2a, 0x00, 0x2c, 0x00, + 0x27, 0x00, 0x24, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x19, 0x00, 0x16, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0x07, 0x00, 0x07, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xf8, 0xff, 0xf7, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xeb, 0xff, 0xe8, 0xff, + 0xe1, 0xff, 0xe4, 0xff, 0xdb, 0xff, 0xd9, 0xff, 0xd3, 0xff, 0xd4, 0xff, + 0xcc, 0xff, 0xcc, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xb4, 0xff, 0xb4, 0xff, 0xb0, 0xff, 0xaf, 0xff, 0xa7, 0xff, 0xab, 0xff, + 0xa3, 0xff, 0xa2, 0xff, 0x9c, 0xff, 0x9b, 0xff, 0x96, 0xff, 0x97, 0xff, + 0x94, 0xff, 0x92, 0xff, 0x8d, 0xff, 0x8e, 0xff, 0x8a, 0xff, 0x8a, 0xff, + 0x86, 0xff, 0x85, 0xff, 0x82, 0xff, 0x82, 0xff, 0x7f, 0xff, 0x7e, 0xff, + 0x7b, 0xff, 0x7b, 0xff, 0x77, 0xff, 0x78, 0xff, 0x76, 0xff, 0x75, 0xff, + 0x72, 0xff, 0x74, 0xff, 0x74, 0xff, 0x70, 0xff, 0x6e, 0xff, 0x71, 0xff, + 0x6e, 0xff, 0x6d, 0xff, 0x6c, 0xff, 0x6c, 0xff, 0x6b, 0xff, 0x6a, 0xff, + 0x6a, 0xff, 0x6a, 0xff, 0x67, 0xff, 0x68, 0xff, 0x6a, 0xff, 0x68, 0xff, + 0x67, 0xff, 0x68, 0xff, 0x68, 0xff, 0x67, 0xff, 0x64, 0xff, 0x66, 0xff, + 0x65, 0xff, 0x64, 0xff, 0x65, 0xff, 0x66, 0xff, 0x62, 0xff, 0x62, 0xff, + 0x64, 0xff, 0x63, 0xff, 0x61, 0xff, 0x63, 0xff, 0x62, 0xff, 0x61, 0xff, + 0x62, 0xff, 0x62, 0xff, 0x5f, 0xff, 0x60, 0xff, 0x5f, 0xff, 0x5f, 0xff, + 0x5c, 0xff, 0x5e, 0xff, 0x5f, 0xff, 0x5d, 0xff, 0x5b, 0xff, 0x5d, 0xff, + 0x5e, 0xff, 0x5d, 0xff, 0x5a, 0xff, 0x5b, 0xff, 0x5c, 0xff, 0x5d, 0xff, + 0x5b, 0xff, 0x5b, 0xff, 0x5d, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x5c, 0xff, + 0x5d, 0xff, 0x5b, 0xff, 0x5c, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x5c, 0xff, + 0x5d, 0xff, 0x60, 0xff, 0x60, 0xff, 0x60, 0xff, 0x61, 0xff, 0x61, 0xff, + 0x64, 0xff, 0x63, 0xff, 0x64, 0xff, 0x66, 0xff, 0x6a, 0xff, 0x66, 0xff, + 0x6a, 0xff, 0x6d, 0xff, 0x6f, 0xff, 0x6d, 0xff, 0x72, 0xff, 0x73, 0xff, + 0x76, 0xff, 0x76, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x80, 0xff, 0x80, 0xff, + 0x83, 0xff, 0x84, 0xff, 0x89, 0xff, 0x88, 0xff, 0x8c, 0xff, 0x8e, 0xff, + 0x93, 0xff, 0x92, 0xff, 0x97, 0xff, 0x95, 0xff, 0x9c, 0xff, 0x9e, 0xff, + 0xa1, 0xff, 0xa0, 0xff, 0xa8, 0xff, 0xa9, 0xff, 0xac, 0xff, 0xac, 0xff, + 0xb1, 0xff, 0xb1, 0xff, 0xb7, 0xff, 0xb8, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xc4, 0xff, 0xc3, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xce, 0xff, 0xcd, 0xff, + 0xd3, 0xff, 0xd1, 0xff, 0xd5, 0xff, 0xd7, 0xff, 0xdc, 0xff, 0xda, 0xff, + 0xdf, 0xff, 0xe1, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe9, 0xff, 0xe7, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0xf7, 0xff, + 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x03, 0x00, 0x03, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x11, 0x00, 0x13, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x24, 0x00, 0x23, 0x00, 0x29, 0x00, 0x29, 0x00, 0x2e, 0x00, 0x2d, 0x00, + 0x33, 0x00, 0x35, 0x00, 0x39, 0x00, 0x39, 0x00, 0x40, 0x00, 0x40, 0x00, + 0x44, 0x00, 0x42, 0x00, 0x4c, 0x00, 0x4b, 0x00, 0x4e, 0x00, 0x50, 0x00, + 0x55, 0x00, 0x56, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x61, 0x00, 0x62, 0x00, + 0x69, 0x00, 0x69, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x75, 0x00, 0x75, 0x00, + 0x7d, 0x00, 0x7b, 0x00, 0x81, 0x00, 0x82, 0x00, 0x88, 0x00, 0x89, 0x00, + 0x8e, 0x00, 0x8e, 0x00, 0x93, 0x00, 0x94, 0x00, 0x9a, 0x00, 0x99, 0x00, + 0x9d, 0x00, 0x9d, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa7, 0x00, 0xa7, 0x00, + 0xaa, 0x00, 0xac, 0x00, 0xaf, 0x00, 0xad, 0x00, 0xb1, 0x00, 0xb3, 0x00, + 0xb6, 0x00, 0xb4, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xbb, 0x00, 0xba, 0x00, + 0xba, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbd, 0x00, 0xbd, 0x00, 0xbe, 0x00, + 0xbe, 0x00, 0xbd, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xbe, 0x00, 0xbd, 0x00, + 0xbe, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xba, 0x00, 0xbb, 0x00, + 0xbb, 0x00, 0xbb, 0x00, 0xb4, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xb6, 0x00, + 0xb3, 0x00, 0xb3, 0x00, 0xaf, 0x00, 0xb1, 0x00, 0xb1, 0x00, 0xaf, 0x00, + 0xa9, 0x00, 0xab, 0x00, 0xab, 0x00, 0xaa, 0x00, 0xa5, 0x00, 0xa7, 0x00, + 0xa2, 0x00, 0xa3, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x9a, 0x00, 0x9b, 0x00, + 0x9d, 0x00, 0x9c, 0x00, 0x95, 0x00, 0x95, 0x00, 0x94, 0x00, 0x95, 0x00, + 0x91, 0x00, 0x8f, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x89, 0x00, 0x8a, 0x00, + 0x87, 0x00, 0x86, 0x00, 0x84, 0x00, 0x84, 0x00, 0x7e, 0x00, 0x7f, 0x00, + 0x7d, 0x00, 0x7d, 0x00, 0x79, 0x00, 0x77, 0x00, 0x74, 0x00, 0x77, 0x00, + 0x73, 0x00, 0x71, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6a, 0x00, 0x69, 0x00, + 0x64, 0x00, 0x65, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x5b, 0x00, 0x5c, 0x00, + 0x55, 0x00, 0x57, 0x00, 0x54, 0x00, 0x52, 0x00, 0x4c, 0x00, 0x4d, 0x00, + 0x49, 0x00, 0x47, 0x00, 0x41, 0x00, 0x43, 0x00, 0x3b, 0x00, 0x3b, 0x00, + 0x34, 0x00, 0x35, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x27, 0x00, 0x28, 0x00, + 0x22, 0x00, 0x20, 0x00, 0x1a, 0x00, 0x1d, 0x00, 0x16, 0x00, 0x14, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x06, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0xf9, 0xff, 0xf7, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xeb, 0xff, 0xe9, 0xff, + 0xe2, 0xff, 0xe2, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xd4, 0xff, 0xd4, 0xff, + 0xce, 0xff, 0xce, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xc2, 0xff, 0xc2, 0xff, + 0xba, 0xff, 0xbb, 0xff, 0xb8, 0xff, 0xb6, 0xff, 0xaf, 0xff, 0xaf, 0xff, + 0xad, 0xff, 0xad, 0xff, 0xa6, 0xff, 0xa5, 0xff, 0xa2, 0xff, 0xa2, 0xff, + 0x9d, 0xff, 0x9e, 0xff, 0x99, 0xff, 0x97, 0xff, 0x98, 0xff, 0x98, 0xff, + 0x91, 0xff, 0x91, 0xff, 0x90, 0xff, 0x90, 0xff, 0x8c, 0xff, 0x8b, 0xff, + 0x8a, 0xff, 0x89, 0xff, 0x87, 0xff, 0x86, 0xff, 0x83, 0xff, 0x82, 0xff, + 0x82, 0xff, 0x82, 0xff, 0x81, 0xff, 0x80, 0xff, 0x7e, 0xff, 0x7e, 0xff, + 0x7e, 0xff, 0x7c, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x7a, 0xff, + 0x78, 0xff, 0x77, 0xff, 0x75, 0xff, 0x77, 0xff, 0x76, 0xff, 0x75, 0xff, + 0x73, 0xff, 0x74, 0xff, 0x72, 0xff, 0x73, 0xff, 0x70, 0xff, 0x6f, 0xff, + 0x70, 0xff, 0x71, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x6d, 0xff, 0x6c, 0xff, + 0x6b, 0xff, 0x6c, 0xff, 0x6a, 0xff, 0x69, 0xff, 0x66, 0xff, 0x67, 0xff, + 0x67, 0xff, 0x67, 0xff, 0x64, 0xff, 0x64, 0xff, 0x64, 0xff, 0x64, 0xff, + 0x62, 0xff, 0x62, 0xff, 0x5f, 0xff, 0x60, 0xff, 0x60, 0xff, 0x60, 0xff, + 0x60, 0xff, 0x5f, 0xff, 0x5d, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x5f, 0xff, + 0x5d, 0xff, 0x5d, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x5d, 0xff, + 0x5d, 0xff, 0x5e, 0xff, 0x60, 0xff, 0x61, 0xff, 0x60, 0xff, 0x61, 0xff, + 0x62, 0xff, 0x62, 0xff, 0x63, 0xff, 0x64, 0xff, 0x65, 0xff, 0x65, 0xff, + 0x66, 0xff, 0x67, 0xff, 0x6b, 0xff, 0x6b, 0xff, 0x6d, 0xff, 0x6c, 0xff, + 0x70, 0xff, 0x71, 0xff, 0x73, 0xff, 0x73, 0xff, 0x77, 0xff, 0x78, 0xff, + 0x7c, 0xff, 0x7c, 0xff, 0x7f, 0xff, 0x80, 0xff, 0x85, 0xff, 0x85, 0xff, + 0x87, 0xff, 0x88, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x90, 0xff, 0x91, 0xff, + 0x97, 0xff, 0x99, 0xff, 0x9d, 0xff, 0x9b, 0xff, 0xa0, 0xff, 0xa1, 0xff, + 0xa7, 0xff, 0xa6, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0xaf, 0xff, 0xb0, 0xff, + 0xb3, 0xff, 0xb4, 0xff, 0xb9, 0xff, 0xb8, 0xff, 0xbe, 0xff, 0xbf, 0xff, + 0xc2, 0xff, 0xc1, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xcb, 0xff, + 0xd0, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xd5, 0xff, 0xd8, 0xff, 0xd6, 0xff, + 0xdc, 0xff, 0xdd, 0xff, 0xdf, 0xff, 0xe1, 0xff, 0xe4, 0xff, 0xe3, 0xff, + 0xe9, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xf1, 0xff, 0xf0, 0xff, + 0xf1, 0xff, 0xf3, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x05, 0x00, 0x05, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x12, 0x00, 0x13, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x22, 0x00, 0x21, 0x00, 0x27, 0x00, 0x27, 0x00, + 0x2e, 0x00, 0x2d, 0x00, 0x32, 0x00, 0x32, 0x00, 0x3a, 0x00, 0x38, 0x00, + 0x3d, 0x00, 0x3e, 0x00, 0x45, 0x00, 0x46, 0x00, 0x4c, 0x00, 0x4b, 0x00, + 0x50, 0x00, 0x51, 0x00, 0x59, 0x00, 0x57, 0x00, 0x5c, 0x00, 0x5e, 0x00, + 0x65, 0x00, 0x65, 0x00, 0x69, 0x00, 0x69, 0x00, 0x71, 0x00, 0x72, 0x00, + 0x77, 0x00, 0x76, 0x00, 0x7b, 0x00, 0x7d, 0x00, 0x82, 0x00, 0x82, 0x00, + 0x86, 0x00, 0x86, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x90, 0x00, 0x8f, 0x00, + 0x96, 0x00, 0x96, 0x00, 0x98, 0x00, 0x9a, 0x00, 0x9e, 0x00, 0x9d, 0x00, + 0xa1, 0x00, 0xa2, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0xa9, 0x00, 0xa9, 0x00, + 0xa9, 0x00, 0xa9, 0x00, 0xad, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xaf, 0x00, + 0xad, 0x00, 0xae, 0x00, 0xb2, 0x00, 0xb2, 0x00, 0xb0, 0x00, 0xb0, 0x00, + 0xb2, 0x00, 0xb1, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb0, 0x00, + 0xb0, 0x00, 0xb1, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0xaf, 0x00, 0xb1, 0x00, + 0xb0, 0x00, 0xae, 0x00, 0xad, 0x00, 0xae, 0x00, 0xac, 0x00, 0xac, 0x00, + 0xac, 0x00, 0xaa, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xa8, 0x00, + 0xa5, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0xa2, 0x00, 0xa1, 0x00, + 0x9e, 0x00, 0x9f, 0x00, 0x9d, 0x00, 0x9c, 0x00, 0x99, 0x00, 0x99, 0x00, + 0x99, 0x00, 0x99, 0x00, 0x94, 0x00, 0x94, 0x00, 0x92, 0x00, 0x93, 0x00, + 0x8f, 0x00, 0x8f, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x8a, 0x00, 0x89, 0x00, + 0x86, 0x00, 0x87, 0x00, 0x84, 0x00, 0x83, 0x00, 0x80, 0x00, 0x80, 0x00, + 0x7c, 0x00, 0x7d, 0x00, 0x79, 0x00, 0x79, 0x00, 0x76, 0x00, 0x75, 0x00, + 0x70, 0x00, 0x72, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0x68, 0x00, 0x69, 0x00, + 0x64, 0x00, 0x63, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5a, 0x00, 0x5b, 0x00, + 0x55, 0x00, 0x54, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4a, 0x00, 0x4a, 0x00, + 0x41, 0x00, 0x42, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x35, 0x00, 0x36, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x23, 0x00, 0x22, 0x00, + 0x1a, 0x00, 0x1e, 0x00, 0x17, 0x00, 0x15, 0x00, 0x0b, 0x00, 0x0d, 0x00, + 0x08, 0x00, 0x08, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xfb, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe5, 0xff, 0xe7, 0xff, + 0xe0, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xce, 0xff, 0xce, 0xff, 0xc9, 0xff, 0xcb, 0xff, 0xc4, 0xff, 0xc4, 0xff, + 0xbe, 0xff, 0xbf, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xb4, 0xff, 0xb5, 0xff, + 0xb2, 0xff, 0xb2, 0xff, 0xae, 0xff, 0xac, 0xff, 0xa9, 0xff, 0xac, 0xff, + 0xa8, 0xff, 0xa5, 0xff, 0xa3, 0xff, 0xa5, 0xff, 0xa1, 0xff, 0x9f, 0xff, + 0x9e, 0xff, 0x9f, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x98, 0xff, 0x98, 0xff, + 0x96, 0xff, 0x97, 0xff, 0x96, 0xff, 0x95, 0xff, 0x91, 0xff, 0x92, 0xff, + 0x92, 0xff, 0x90, 0xff, 0x8e, 0xff, 0x90, 0xff, 0x8d, 0xff, 0x8b, 0xff, + 0x8c, 0xff, 0x8c, 0xff, 0x89, 0xff, 0x89, 0xff, 0x89, 0xff, 0x88, 0xff, + 0x85, 0xff, 0x85, 0xff, 0x85, 0xff, 0x82, 0xff, 0x82, 0xff, 0x84, 0xff, + 0x81, 0xff, 0x7f, 0xff, 0x7e, 0xff, 0x80, 0xff, 0x7d, 0xff, 0x7c, 0xff, + 0x7b, 0xff, 0x7a, 0xff, 0x79, 0xff, 0x7a, 0xff, 0x76, 0xff, 0x74, 0xff, + 0x73, 0xff, 0x74, 0xff, 0x72, 0xff, 0x72, 0xff, 0x70, 0xff, 0x71, 0xff, + 0x6e, 0xff, 0x6f, 0xff, 0x6b, 0xff, 0x6a, 0xff, 0x6b, 0xff, 0x6c, 0xff, + 0x69, 0xff, 0x69, 0xff, 0x69, 0xff, 0x67, 0xff, 0x66, 0xff, 0x67, 0xff, + 0x66, 0xff, 0x66, 0xff, 0x65, 0xff, 0x66, 0xff, 0x63, 0xff, 0x64, 0xff, + 0x64, 0xff, 0x64, 0xff, 0x63, 0xff, 0x63, 0xff, 0x62, 0xff, 0x64, 0xff, + 0x65, 0xff, 0x65, 0xff, 0x64, 0xff, 0x64, 0xff, 0x67, 0xff, 0x66, 0xff, + 0x68, 0xff, 0x68, 0xff, 0x6a, 0xff, 0x6b, 0xff, 0x6c, 0xff, 0x6c, 0xff, + 0x6f, 0xff, 0x6f, 0xff, 0x70, 0xff, 0x70, 0xff, 0x74, 0xff, 0x75, 0xff, + 0x76, 0xff, 0x75, 0xff, 0x7a, 0xff, 0x7b, 0xff, 0x7e, 0xff, 0x7c, 0xff, + 0x82, 0xff, 0x83, 0xff, 0x86, 0xff, 0x83, 0xff, 0x88, 0xff, 0x8b, 0xff, + 0x8e, 0xff, 0x8c, 0xff, 0x91, 0xff, 0x91, 0xff, 0x94, 0xff, 0x95, 0xff, + 0x9a, 0xff, 0x9a, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0xa3, 0xff, 0xa1, 0xff, + 0xa4, 0xff, 0xa8, 0xff, 0xab, 0xff, 0xa9, 0xff, 0xaf, 0xff, 0xb1, 0xff, + 0xb2, 0xff, 0xb2, 0xff, 0xb8, 0xff, 0xb9, 0xff, 0xba, 0xff, 0xba, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xc8, 0xff, + 0xcc, 0xff, 0xcd, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd5, 0xff, 0xd5, 0xff, + 0xd8, 0xff, 0xd7, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xe0, 0xff, 0xe1, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xed, 0xff, 0xed, 0xff, + 0xf2, 0xff, 0xf1, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xfb, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x05, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x0c, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x16, 0x00, 0x14, 0x00, 0x18, 0x00, 0x1a, 0x00, + 0x21, 0x00, 0x1e, 0x00, 0x25, 0x00, 0x25, 0x00, 0x29, 0x00, 0x2a, 0x00, + 0x33, 0x00, 0x32, 0x00, 0x36, 0x00, 0x36, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x47, 0x00, 0x48, 0x00, 0x50, 0x00, 0x4f, 0x00, + 0x52, 0x00, 0x54, 0x00, 0x5a, 0x00, 0x59, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x63, 0x00, 0x64, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0x6e, 0x00, 0x70, 0x00, + 0x77, 0x00, 0x76, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x7e, 0x00, 0x7e, 0x00, + 0x83, 0x00, 0x84, 0x00, 0x87, 0x00, 0x88, 0x00, 0x8c, 0x00, 0x8b, 0x00, + 0x8e, 0x00, 0x8e, 0x00, 0x93, 0x00, 0x93, 0x00, 0x93, 0x00, 0x96, 0x00, + 0x97, 0x00, 0x97, 0x00, 0x98, 0x00, 0x9b, 0x00, 0x9d, 0x00, 0x9a, 0x00, + 0x9c, 0x00, 0x9e, 0x00, 0xa1, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xa0, 0x00, + 0xa1, 0x00, 0xa1, 0x00, 0xa3, 0x00, 0xa1, 0x00, 0xa3, 0x00, 0xa2, 0x00, + 0xa3, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, + 0xa3, 0x00, 0xa2, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xa3, 0x00, + 0xa1, 0x00, 0x9f, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0x9e, 0x00, 0x9e, 0x00, + 0x9e, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0x9d, 0x00, 0x9b, 0x00, + 0x99, 0x00, 0x99, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x98, 0x00, 0x97, 0x00, + 0x95, 0x00, 0x95, 0x00, 0x94, 0x00, 0x94, 0x00, 0x93, 0x00, 0x92, 0x00, + 0x91, 0x00, 0x92, 0x00, 0x90, 0x00, 0x8f, 0x00, 0x8d, 0x00, 0x8d, 0x00, + 0x8a, 0x00, 0x8c, 0x00, 0x89, 0x00, 0x88, 0x00, 0x86, 0x00, 0x87, 0x00, + 0x82, 0x00, 0x83, 0x00, 0x81, 0x00, 0x7f, 0x00, 0x7d, 0x00, 0x7e, 0x00, + 0x79, 0x00, 0x7a, 0x00, 0x76, 0x00, 0x74, 0x00, 0x71, 0x00, 0x73, 0x00, + 0x6e, 0x00, 0x6d, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x65, 0x00, 0x66, 0x00, + 0x5f, 0x00, 0x60, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x56, 0x00, 0x55, 0x00, + 0x50, 0x00, 0x51, 0x00, 0x4b, 0x00, 0x49, 0x00, 0x44, 0x00, 0x48, 0x00, + 0x40, 0x00, 0x3e, 0x00, 0x38, 0x00, 0x39, 0x00, 0x32, 0x00, 0x32, 0x00, + 0x2b, 0x00, 0x2c, 0x00, 0x26, 0x00, 0x26, 0x00, 0x1e, 0x00, 0x1d, 0x00, + 0x19, 0x00, 0x1a, 0x00, 0x11, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x04, 0x00, 0x04, 0x00, 0xfd, 0xff, 0xfe, 0xff, 0xf6, 0xff, 0xf8, 0xff, + 0xf1, 0xff, 0xef, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xe6, 0xff, 0xe4, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xd5, 0xff, + 0xd2, 0xff, 0xd1, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xc8, 0xff, + 0xc3, 0xff, 0xc4, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xbb, 0xff, 0xbb, 0xff, + 0xb9, 0xff, 0xb7, 0xff, 0xb3, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0xb2, 0xff, + 0xab, 0xff, 0xae, 0xff, 0xad, 0xff, 0xac, 0xff, 0xa7, 0xff, 0xa8, 0xff, + 0xa6, 0xff, 0xa5, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xa0, 0xff, 0x9f, 0xff, + 0x9f, 0xff, 0xa0, 0xff, 0x9d, 0xff, 0x9b, 0xff, 0x98, 0xff, 0x9a, 0xff, + 0x99, 0xff, 0x99, 0xff, 0x95, 0xff, 0x94, 0xff, 0x93, 0xff, 0x93, 0xff, + 0x92, 0xff, 0x91, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x8d, 0xff, 0x8d, 0xff, + 0x8c, 0xff, 0x8b, 0xff, 0x88, 0xff, 0x89, 0xff, 0x87, 0xff, 0x86, 0xff, + 0x83, 0xff, 0x85, 0xff, 0x82, 0xff, 0x80, 0xff, 0x80, 0xff, 0x81, 0xff, + 0x7e, 0xff, 0x7c, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x79, 0xff, 0x78, 0xff, + 0x77, 0xff, 0x77, 0xff, 0x74, 0xff, 0x75, 0xff, 0x74, 0xff, 0x73, 0xff, + 0x71, 0xff, 0x71, 0xff, 0x71, 0xff, 0x6f, 0xff, 0x70, 0xff, 0x71, 0xff, + 0x6f, 0xff, 0x6d, 0xff, 0x6f, 0xff, 0x6e, 0xff, 0x6c, 0xff, 0x6d, 0xff, + 0x6d, 0xff, 0x6b, 0xff, 0x6c, 0xff, 0x6d, 0xff, 0x6b, 0xff, 0x6c, 0xff, + 0x6e, 0xff, 0x6d, 0xff, 0x6c, 0xff, 0x6d, 0xff, 0x6f, 0xff, 0x6d, 0xff, + 0x6e, 0xff, 0x70, 0xff, 0x71, 0xff, 0x6f, 0xff, 0x72, 0xff, 0x72, 0xff, + 0x72, 0xff, 0x71, 0xff, 0x75, 0xff, 0x75, 0xff, 0x76, 0xff, 0x74, 0xff, + 0x79, 0xff, 0x79, 0xff, 0x7b, 0xff, 0x79, 0xff, 0x7c, 0xff, 0x7d, 0xff, + 0x80, 0xff, 0x7f, 0xff, 0x82, 0xff, 0x82, 0xff, 0x84, 0xff, 0x86, 0xff, + 0x8a, 0xff, 0x88, 0xff, 0x8b, 0xff, 0x8d, 0xff, 0x8f, 0xff, 0x8e, 0xff, + 0x92, 0xff, 0x93, 0xff, 0x95, 0xff, 0x94, 0xff, 0x99, 0xff, 0x9a, 0xff, + 0x9d, 0xff, 0x9c, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xa3, 0xff, 0xa2, 0xff, + 0xa5, 0xff, 0xa6, 0xff, 0xa9, 0xff, 0xa8, 0xff, 0xac, 0xff, 0xad, 0xff, + 0xae, 0xff, 0xae, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xb8, 0xff, 0xb6, 0xff, + 0xb9, 0xff, 0xba, 0xff, 0xbe, 0xff, 0xbd, 0xff, 0xc2, 0xff, 0xc2, 0xff, + 0xc5, 0xff, 0xc4, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xcd, 0xff, 0xcc, 0xff, + 0xcf, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xd8, 0xff, 0xd8, 0xff, + 0xdd, 0xff, 0xdd, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xfd, 0xff, 0xfb, 0xff, 0x00, 0x00, 0x02, 0x00, 0x07, 0x00, 0x05, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x12, 0x00, 0x1a, 0x00, 0x19, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0x25, 0x00, 0x24, 0x00, 0x2b, 0x00, 0x2c, 0x00, + 0x33, 0x00, 0x32, 0x00, 0x38, 0x00, 0x39, 0x00, 0x40, 0x00, 0x3e, 0x00, + 0x43, 0x00, 0x45, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x51, 0x00, 0x53, 0x00, + 0x5a, 0x00, 0x58, 0x00, 0x5d, 0x00, 0x61, 0x00, 0x63, 0x00, 0x62, 0x00, + 0x69, 0x00, 0x6b, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x73, 0x00, 0x72, 0x00, + 0x77, 0x00, 0x77, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x81, 0x00, 0x81, 0x00, + 0x80, 0x00, 0x83, 0x00, 0x88, 0x00, 0x87, 0x00, 0x8a, 0x00, 0x8a, 0x00, + 0x8d, 0x00, 0x8d, 0x00, 0x92, 0x00, 0x91, 0x00, 0x91, 0x00, 0x92, 0x00, + 0x98, 0x00, 0x95, 0x00, 0x95, 0x00, 0x98, 0x00, 0x99, 0x00, 0x98, 0x00, + 0x98, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x98, 0x00, 0x9a, 0x00, + 0x9a, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9a, 0x00, 0x9b, 0x00, + 0x9a, 0x00, 0x9a, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x9a, 0x00, + 0x99, 0x00, 0x9b, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x99, 0x00, + 0x97, 0x00, 0x98, 0x00, 0x97, 0x00, 0x98, 0x00, 0x97, 0x00, 0x97, 0x00, + 0x95, 0x00, 0x96, 0x00, 0x94, 0x00, 0x94, 0x00, 0x94, 0x00, 0x94, 0x00, + 0x94, 0x00, 0x94, 0x00, 0x91, 0x00, 0x91, 0x00, 0x91, 0x00, 0x91, 0x00, + 0x8e, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x8f, 0x00, 0x8b, 0x00, 0x8c, 0x00, + 0x8d, 0x00, 0x8c, 0x00, 0x89, 0x00, 0x88, 0x00, 0x87, 0x00, 0x86, 0x00, + 0x86, 0x00, 0x86, 0x00, 0x82, 0x00, 0x83, 0x00, 0x82, 0x00, 0x7f, 0x00, + 0x7c, 0x00, 0x7e, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x77, 0x00, 0x77, 0x00, + 0x75, 0x00, 0x75, 0x00, 0x71, 0x00, 0x70, 0x00, 0x6d, 0x00, 0x6d, 0x00, + 0x69, 0x00, 0x69, 0x00, 0x64, 0x00, 0x65, 0x00, 0x60, 0x00, 0x5e, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x55, 0x00, 0x55, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x4c, 0x00, 0x4c, 0x00, 0x47, 0x00, 0x46, 0x00, 0x42, 0x00, 0x42, 0x00, + 0x3a, 0x00, 0x3d, 0x00, 0x39, 0x00, 0x35, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x2c, 0x00, 0x2c, 0x00, 0x26, 0x00, 0x23, 0x00, 0x1e, 0x00, 0x20, 0x00, + 0x1a, 0x00, 0x18, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0e, 0x00, 0x0d, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0xfd, 0xff, 0xfe, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xe0, 0xff, + 0xdc, 0xff, 0xdd, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd4, 0xff, + 0xcf, 0xff, 0xd0, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xc9, 0xff, + 0xc5, 0xff, 0xc3, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xbe, 0xff, 0xbd, 0xff, + 0xbc, 0xff, 0xbc, 0xff, 0xb7, 0xff, 0xb9, 0xff, 0xb7, 0xff, 0xb5, 0xff, + 0xb3, 0xff, 0xb5, 0xff, 0xad, 0xff, 0xae, 0xff, 0xae, 0xff, 0xae, 0xff, + 0xa8, 0xff, 0xaa, 0xff, 0xa5, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xa6, 0xff, + 0x9f, 0xff, 0x9f, 0xff, 0x9e, 0xff, 0x9d, 0xff, 0x9a, 0xff, 0x9b, 0xff, + 0x97, 0xff, 0x98, 0xff, 0x96, 0xff, 0x95, 0xff, 0x91, 0xff, 0x92, 0xff, + 0x8f, 0xff, 0x8e, 0xff, 0x8a, 0xff, 0x8c, 0xff, 0x89, 0xff, 0x87, 0xff, + 0x83, 0xff, 0x87, 0xff, 0x84, 0xff, 0x83, 0xff, 0x80, 0xff, 0x82, 0xff, + 0x7e, 0xff, 0x7d, 0xff, 0x7a, 0xff, 0x7b, 0xff, 0x79, 0xff, 0x79, 0xff, + 0x76, 0xff, 0x77, 0xff, 0x75, 0xff, 0x76, 0xff, 0x74, 0xff, 0x74, 0xff, + 0x72, 0xff, 0x72, 0xff, 0x71, 0xff, 0x72, 0xff, 0x6f, 0xff, 0x70, 0xff, + 0x6f, 0xff, 0x70, 0xff, 0x6f, 0xff, 0x6e, 0xff, 0x6c, 0xff, 0x70, 0xff, + 0x6f, 0xff, 0x6c, 0xff, 0x6e, 0xff, 0x70, 0xff, 0x6e, 0xff, 0x70, 0xff, + 0x71, 0xff, 0x71, 0xff, 0x71, 0xff, 0x72, 0xff, 0x74, 0xff, 0x74, 0xff, + 0x75, 0xff, 0x74, 0xff, 0x75, 0xff, 0x76, 0xff, 0x78, 0xff, 0x78, 0xff, + 0x7a, 0xff, 0x79, 0xff, 0x7d, 0xff, 0x7c, 0xff, 0x7e, 0xff, 0x7e, 0xff, + 0x81, 0xff, 0x82, 0xff, 0x84, 0xff, 0x82, 0xff, 0x84, 0xff, 0x87, 0xff, + 0x8a, 0xff, 0x86, 0xff, 0x8b, 0xff, 0x8c, 0xff, 0x8e, 0xff, 0x8f, 0xff, + 0x92, 0xff, 0x8f, 0xff, 0x93, 0xff, 0x94, 0xff, 0x96, 0xff, 0x95, 0xff, + 0x9a, 0xff, 0x99, 0xff, 0x9a, 0xff, 0x9c, 0xff, 0x9f, 0xff, 0x9c, 0xff, + 0xa0, 0xff, 0xa2, 0xff, 0xa4, 0xff, 0xa1, 0xff, 0xa5, 0xff, 0xa5, 0xff, + 0xa8, 0xff, 0xa9, 0xff, 0xab, 0xff, 0xa9, 0xff, 0xae, 0xff, 0xaf, 0xff, + 0xaf, 0xff, 0xaf, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb7, 0xff, 0xb6, 0xff, + 0xb8, 0xff, 0xb7, 0xff, 0xbb, 0xff, 0xbd, 0xff, 0xbf, 0xff, 0xbe, 0xff, + 0xc1, 0xff, 0xc2, 0xff, 0xc5, 0xff, 0xc2, 0xff, 0xc7, 0xff, 0xca, 0xff, + 0xcd, 0xff, 0xcb, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xd4, 0xff, + 0xd8, 0xff, 0xd7, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xe2, 0xff, + 0xe6, 0xff, 0xe7, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xf0, 0xff, + 0xf5, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0x03, 0x00, 0x03, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x15, 0x00, 0x16, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x21, 0x00, 0x21, 0x00, 0x29, 0x00, 0x2a, 0x00, + 0x2f, 0x00, 0x2e, 0x00, 0x36, 0x00, 0x38, 0x00, 0x3b, 0x00, 0x3a, 0x00, + 0x42, 0x00, 0x42, 0x00, 0x47, 0x00, 0x47, 0x00, 0x4e, 0x00, 0x4d, 0x00, + 0x53, 0x00, 0x54, 0x00, 0x59, 0x00, 0x57, 0x00, 0x5e, 0x00, 0x5d, 0x00, + 0x62, 0x00, 0x61, 0x00, 0x67, 0x00, 0x67, 0x00, 0x6a, 0x00, 0x6a, 0x00, + 0x72, 0x00, 0x71, 0x00, 0x73, 0x00, 0x73, 0x00, 0x77, 0x00, 0x78, 0x00, + 0x7a, 0x00, 0x7a, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x80, 0x00, 0x80, 0x00, + 0x84, 0x00, 0x82, 0x00, 0x85, 0x00, 0x85, 0x00, 0x87, 0x00, 0x88, 0x00, + 0x8a, 0x00, 0x88, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8c, 0x00, 0x8b, 0x00, + 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8d, 0x00, 0x8c, 0x00, + 0x8e, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x90, 0x00, + 0x90, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x92, 0x00, 0x92, 0x00, 0x90, 0x00, + 0x90, 0x00, 0x91, 0x00, 0x90, 0x00, 0x90, 0x00, 0x90, 0x00, 0x91, 0x00, + 0x8e, 0x00, 0x8f, 0x00, 0x92, 0x00, 0x92, 0x00, 0x8e, 0x00, 0x8f, 0x00, + 0x8f, 0x00, 0x90, 0x00, 0x90, 0x00, 0x90, 0x00, 0x8c, 0x00, 0x8e, 0x00, + 0x91, 0x00, 0x8f, 0x00, 0x8b, 0x00, 0x8e, 0x00, 0x8d, 0x00, 0x8c, 0x00, + 0x8a, 0x00, 0x8c, 0x00, 0x8b, 0x00, 0x8a, 0x00, 0x87, 0x00, 0x89, 0x00, + 0x88, 0x00, 0x86, 0x00, 0x84, 0x00, 0x85, 0x00, 0x84, 0x00, 0x82, 0x00, + 0x81, 0x00, 0x80, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x7b, 0x00, 0x7b, 0x00, + 0x77, 0x00, 0x76, 0x00, 0x74, 0x00, 0x75, 0x00, 0x6f, 0x00, 0x6f, 0x00, + 0x6b, 0x00, 0x6c, 0x00, 0x68, 0x00, 0x68, 0x00, 0x64, 0x00, 0x65, 0x00, + 0x5e, 0x00, 0x5e, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x54, 0x00, 0x55, 0x00, + 0x50, 0x00, 0x4f, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x45, 0x00, 0x45, 0x00, + 0x3e, 0x00, 0x3e, 0x00, 0x3b, 0x00, 0x39, 0x00, 0x32, 0x00, 0x34, 0x00, + 0x31, 0x00, 0x30, 0x00, 0x28, 0x00, 0x29, 0x00, 0x26, 0x00, 0x24, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x03, 0x00, 0x05, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xf9, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xef, 0xff, 0xf0, 0xff, 0xed, 0xff, 0xed, 0xff, 0xe8, 0xff, 0xea, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe1, 0xff, 0xe3, 0xff, + 0xe0, 0xff, 0xe0, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xdd, 0xff, + 0xd9, 0xff, 0xd9, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xd5, 0xff, + 0xd0, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd1, 0xff, 0xcb, 0xff, 0xcb, 0xff, + 0xca, 0xff, 0xcb, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xc5, 0xff, 0xc2, 0xff, + 0xc1, 0xff, 0xc4, 0xff, 0xbd, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xbb, 0xff, + 0xb7, 0xff, 0xb7, 0xff, 0xb4, 0xff, 0xb1, 0xff, 0xaf, 0xff, 0xb1, 0xff, + 0xaa, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xa3, 0xff, 0xa2, 0xff, + 0xa0, 0xff, 0x9f, 0xff, 0x9c, 0xff, 0x9e, 0xff, 0x96, 0xff, 0x97, 0xff, + 0x94, 0xff, 0x94, 0xff, 0x8f, 0xff, 0x90, 0xff, 0x8e, 0xff, 0x8c, 0xff, + 0x88, 0xff, 0x8a, 0xff, 0x85, 0xff, 0x85, 0xff, 0x82, 0xff, 0x83, 0xff, + 0x80, 0xff, 0x80, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x7b, 0xff, 0x7d, 0xff, + 0x7b, 0xff, 0x79, 0xff, 0x78, 0xff, 0x7a, 0xff, 0x79, 0xff, 0x77, 0xff, + 0x77, 0xff, 0x79, 0xff, 0x78, 0xff, 0x75, 0xff, 0x76, 0xff, 0x77, 0xff, + 0x76, 0xff, 0x74, 0xff, 0x76, 0xff, 0x76, 0xff, 0x77, 0xff, 0x76, 0xff, + 0x76, 0xff, 0x77, 0xff, 0x78, 0xff, 0x77, 0xff, 0x78, 0xff, 0x79, 0xff, + 0x7a, 0xff, 0x79, 0xff, 0x7b, 0xff, 0x7c, 0xff, 0x7d, 0xff, 0x7d, 0xff, + 0x7f, 0xff, 0x80, 0xff, 0x81, 0xff, 0x80, 0xff, 0x84, 0xff, 0x83, 0xff, + 0x85, 0xff, 0x85, 0xff, 0x85, 0xff, 0x85, 0xff, 0x87, 0xff, 0x89, 0xff, + 0x88, 0xff, 0x88, 0xff, 0x8a, 0xff, 0x8c, 0xff, 0x8e, 0xff, 0x8d, 0xff, + 0x8e, 0xff, 0x8f, 0xff, 0x92, 0xff, 0x91, 0xff, 0x91, 0xff, 0x91, 0xff, + 0x95, 0xff, 0x95, 0xff, 0x95, 0xff, 0x95, 0xff, 0x97, 0xff, 0x97, 0xff, + 0x99, 0xff, 0x9a, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x9d, 0xff, 0x9d, 0xff, + 0x9d, 0xff, 0x9e, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0xa2, 0xff, + 0xa4, 0xff, 0xa4, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xa9, 0xff, 0xa9, 0xff, + 0xad, 0xff, 0xac, 0xff, 0xae, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xb1, 0xff, + 0xb6, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xbc, 0xff, 0xbc, 0xff, + 0xc1, 0xff, 0xbf, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc9, 0xff, 0xca, 0xff, + 0xcc, 0xff, 0xcc, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xd7, 0xff, + 0xdd, 0xff, 0xdd, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xf0, 0xff, 0xf1, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0x02, 0x00, 0x03, 0x00, 0x08, 0x00, 0x07, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x14, 0x00, 0x16, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x21, 0x00, 0x22, 0x00, + 0x27, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x34, 0x00, 0x33, 0x00, + 0x39, 0x00, 0x3b, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x45, 0x00, 0x46, 0x00, + 0x48, 0x00, 0x49, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x51, 0x00, + 0x58, 0x00, 0x58, 0x00, 0x5c, 0x00, 0x5a, 0x00, 0x5d, 0x00, 0x60, 0x00, + 0x63, 0x00, 0x61, 0x00, 0x65, 0x00, 0x66, 0x00, 0x68, 0x00, 0x69, 0x00, + 0x6b, 0x00, 0x6a, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x71, 0x00, 0x71, 0x00, + 0x76, 0x00, 0x76, 0x00, 0x77, 0x00, 0x75, 0x00, 0x7a, 0x00, 0x7b, 0x00, + 0x7d, 0x00, 0x7b, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x81, 0x00, 0x81, 0x00, + 0x83, 0x00, 0x82, 0x00, 0x84, 0x00, 0x86, 0x00, 0x86, 0x00, 0x86, 0x00, + 0x89, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x89, 0x00, 0x8d, 0x00, 0x8d, 0x00, + 0x8e, 0x00, 0x8e, 0x00, 0x92, 0x00, 0x94, 0x00, 0x94, 0x00, 0x93, 0x00, + 0x95, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, + 0x9c, 0x00, 0x9d, 0x00, 0x9f, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa0, 0x00, + 0x9f, 0x00, 0xa1, 0x00, 0xa4, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xa4, 0x00, + 0xa5, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0xa5, 0x00, + 0xa4, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa4, 0x00, 0xa2, 0x00, 0xa3, 0x00, + 0xa3, 0x00, 0xa4, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0x9d, 0x00, 0x9e, 0x00, + 0x9d, 0x00, 0x9b, 0x00, 0x97, 0x00, 0x99, 0x00, 0x94, 0x00, 0x95, 0x00, + 0x93, 0x00, 0x92, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8b, 0x00, 0x8a, 0x00, + 0x83, 0x00, 0x86, 0x00, 0x80, 0x00, 0x7f, 0x00, 0x7a, 0x00, 0x7c, 0x00, + 0x74, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x6a, 0x00, 0x67, 0x00, + 0x64, 0x00, 0x65, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x58, 0x00, 0x56, 0x00, + 0x51, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x49, 0x00, 0x43, 0x00, 0x45, 0x00, + 0x3f, 0x00, 0x3d, 0x00, 0x37, 0x00, 0x39, 0x00, 0x32, 0x00, 0x31, 0x00, + 0x2c, 0x00, 0x2c, 0x00, 0x24, 0x00, 0x25, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x1b, 0x00, 0x1b, 0x00, 0x15, 0x00, 0x16, 0x00, 0x11, 0x00, 0x10, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xfc, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xf5, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xe6, 0xff, 0xe7, 0xff, + 0xe5, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xdc, 0xff, 0xdc, 0xff, + 0xd9, 0xff, 0xd7, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd0, 0xff, 0xd1, 0xff, + 0xcb, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xc2, 0xff, 0xc1, 0xff, + 0xbf, 0xff, 0xbe, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb6, 0xff, 0xb4, 0xff, + 0xb0, 0xff, 0xb1, 0xff, 0xad, 0xff, 0xab, 0xff, 0xa7, 0xff, 0xa8, 0xff, + 0xa5, 0xff, 0xa2, 0xff, 0x9e, 0xff, 0x9d, 0xff, 0x99, 0xff, 0x97, 0xff, + 0x93, 0xff, 0x93, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x8b, 0xff, 0x8a, 0xff, + 0x84, 0xff, 0x85, 0xff, 0x80, 0xff, 0x7f, 0xff, 0x7c, 0xff, 0x7b, 0xff, + 0x77, 0xff, 0x79, 0xff, 0x75, 0xff, 0x73, 0xff, 0x6d, 0xff, 0x70, 0xff, + 0x6c, 0xff, 0x6b, 0xff, 0x66, 0xff, 0x68, 0xff, 0x65, 0xff, 0x65, 0xff, + 0x61, 0xff, 0x5f, 0xff, 0x60, 0xff, 0x61, 0xff, 0x5b, 0xff, 0x5c, 0xff, + 0x5c, 0xff, 0x5b, 0xff, 0x5a, 0xff, 0x5b, 0xff, 0x57, 0xff, 0x58, 0xff, + 0x5a, 0xff, 0x59, 0xff, 0x55, 0xff, 0x57, 0xff, 0x58, 0xff, 0x57, 0xff, + 0x57, 0xff, 0x57, 0xff, 0x57, 0xff, 0x57, 0xff, 0x58, 0xff, 0x58, 0xff, + 0x59, 0xff, 0x58, 0xff, 0x59, 0xff, 0x5a, 0xff, 0x5c, 0xff, 0x5a, 0xff, + 0x5b, 0xff, 0x5d, 0xff, 0x5f, 0xff, 0x5e, 0xff, 0x60, 0xff, 0x60, 0xff, + 0x63, 0xff, 0x63, 0xff, 0x64, 0xff, 0x63, 0xff, 0x67, 0xff, 0x6a, 0xff, + 0x6b, 0xff, 0x69, 0xff, 0x6b, 0xff, 0x6c, 0xff, 0x70, 0xff, 0x6d, 0xff, + 0x71, 0xff, 0x73, 0xff, 0x75, 0xff, 0x73, 0xff, 0x77, 0xff, 0x78, 0xff, + 0x7a, 0xff, 0x79, 0xff, 0x7c, 0xff, 0x7d, 0xff, 0x81, 0xff, 0x80, 0xff, + 0x81, 0xff, 0x81, 0xff, 0x87, 0xff, 0x86, 0xff, 0x88, 0xff, 0x88, 0xff, + 0x8a, 0xff, 0x8b, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x91, 0xff, 0x91, 0xff, + 0x97, 0xff, 0x96, 0xff, 0x96, 0xff, 0x98, 0xff, 0x9d, 0xff, 0x9d, 0xff, + 0xa1, 0xff, 0xa2, 0xff, 0xa4, 0xff, 0xa5, 0xff, 0xa9, 0xff, 0xa9, 0xff, + 0xae, 0xff, 0xae, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xb7, 0xff, 0xb7, 0xff, + 0xbe, 0xff, 0xbd, 0xff, 0xbf, 0xff, 0xc2, 0xff, 0xc9, 0xff, 0xc8, 0xff, + 0xcc, 0xff, 0xcf, 0xff, 0xd6, 0xff, 0xd3, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xf0, 0xff, 0xf2, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xff, 0xff, 0x01, 0x00, 0x09, 0x00, 0x07, 0x00, + 0x0d, 0x00, 0x0f, 0x00, 0x17, 0x00, 0x16, 0x00, 0x20, 0x00, 0x21, 0x00, + 0x27, 0x00, 0x28, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x37, 0x00, 0x38, 0x00, + 0x3d, 0x00, 0x3d, 0x00, 0x45, 0x00, 0x47, 0x00, 0x4d, 0x00, 0x4e, 0x00, + 0x54, 0x00, 0x53, 0x00, 0x5a, 0x00, 0x5d, 0x00, 0x62, 0x00, 0x61, 0x00, + 0x67, 0x00, 0x68, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x71, 0x00, + 0x7a, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x82, 0x00, 0x81, 0x00, + 0x86, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x89, 0x00, 0x90, 0x00, 0x90, 0x00, + 0x8f, 0x00, 0x91, 0x00, 0x97, 0x00, 0x94, 0x00, 0x97, 0x00, 0x97, 0x00, + 0x99, 0x00, 0x98, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9b, 0x00, 0x9c, 0x00, + 0xa0, 0x00, 0x9e, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x9f, 0x00, 0xa0, 0x00, + 0xa3, 0x00, 0xa3, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa3, 0x00, + 0xa4, 0x00, 0xa3, 0x00, 0xa7, 0x00, 0xa6, 0x00, 0xa3, 0x00, 0xa3, 0x00, + 0xa7, 0x00, 0xa7, 0x00, 0xa6, 0x00, 0xa4, 0x00, 0xa8, 0x00, 0xa7, 0x00, + 0xa7, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa6, 0x00, 0xa6, 0x00, 0xa5, 0x00, + 0xa5, 0x00, 0xa4, 0x00, 0xa8, 0x00, 0xa7, 0x00, 0xa5, 0x00, 0xa4, 0x00, + 0xa5, 0x00, 0xa6, 0x00, 0xa5, 0x00, 0xa4, 0x00, 0xa3, 0x00, 0xa4, 0x00, + 0xa5, 0x00, 0xa4, 0x00, 0xa0, 0x00, 0x9f, 0x00, 0xa3, 0x00, 0xa2, 0x00, + 0x9f, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0x9d, 0x00, 0x9c, 0x00, 0x9d, 0x00, + 0x99, 0x00, 0x97, 0x00, 0x97, 0x00, 0x98, 0x00, 0x94, 0x00, 0x93, 0x00, + 0x91, 0x00, 0x91, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0x89, 0x00, 0x88, 0x00, + 0x86, 0x00, 0x87, 0x00, 0x81, 0x00, 0x80, 0x00, 0x7d, 0x00, 0x7c, 0x00, + 0x77, 0x00, 0x79, 0x00, 0x73, 0x00, 0x72, 0x00, 0x6d, 0x00, 0x6d, 0x00, + 0x67, 0x00, 0x66, 0x00, 0x60, 0x00, 0x61, 0x00, 0x5b, 0x00, 0x5a, 0x00, + 0x55, 0x00, 0x54, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x46, 0x00, 0x45, 0x00, + 0x3d, 0x00, 0x3f, 0x00, 0x39, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x31, 0x00, + 0x2c, 0x00, 0x28, 0x00, 0x20, 0x00, 0x21, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x11, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x05, 0x00, + 0xfe, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xdc, 0xff, 0xdb, 0xff, 0xd3, 0xff, 0xd7, 0xff, 0xd1, 0xff, 0xcd, 0xff, + 0xcc, 0xff, 0xcd, 0xff, 0xc3, 0xff, 0xc5, 0xff, 0xc3, 0xff, 0xc2, 0xff, + 0xbd, 0xff, 0xbd, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0xb6, 0xff, 0xb5, 0xff, + 0xaf, 0xff, 0xaf, 0xff, 0xad, 0xff, 0xad, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0xa3, 0xff, 0xa5, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0x9a, 0xff, 0x9c, 0xff, + 0x98, 0xff, 0x98, 0xff, 0x93, 0xff, 0x95, 0xff, 0x91, 0xff, 0x90, 0xff, + 0x8d, 0xff, 0x8e, 0xff, 0x89, 0xff, 0x88, 0xff, 0x85, 0xff, 0x86, 0xff, + 0x81, 0xff, 0x82, 0xff, 0x80, 0xff, 0x80, 0xff, 0x79, 0xff, 0x7b, 0xff, + 0x79, 0xff, 0x76, 0xff, 0x72, 0xff, 0x74, 0xff, 0x70, 0xff, 0x70, 0xff, + 0x6f, 0xff, 0x6e, 0xff, 0x69, 0xff, 0x6a, 0xff, 0x68, 0xff, 0x67, 0xff, + 0x64, 0xff, 0x64, 0xff, 0x63, 0xff, 0x62, 0xff, 0x61, 0xff, 0x60, 0xff, + 0x5d, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5b, 0xff, 0x5a, 0xff, + 0x59, 0xff, 0x58, 0xff, 0x58, 0xff, 0x58, 0xff, 0x58, 0xff, 0x57, 0xff, + 0x5a, 0xff, 0x58, 0xff, 0x57, 0xff, 0x58, 0xff, 0x5a, 0xff, 0x58, 0xff, + 0x5a, 0xff, 0x5b, 0xff, 0x5c, 0xff, 0x5b, 0xff, 0x5e, 0xff, 0x5e, 0xff, + 0x5f, 0xff, 0x60, 0xff, 0x64, 0xff, 0x63, 0xff, 0x64, 0xff, 0x64, 0xff, + 0x69, 0xff, 0x69, 0xff, 0x6a, 0xff, 0x6b, 0xff, 0x6f, 0xff, 0x6e, 0xff, + 0x72, 0xff, 0x74, 0xff, 0x77, 0xff, 0x75, 0xff, 0x7c, 0xff, 0x7d, 0xff, + 0x80, 0xff, 0x80, 0xff, 0x84, 0xff, 0x82, 0xff, 0x8a, 0xff, 0x8b, 0xff, + 0x8d, 0xff, 0x8d, 0xff, 0x95, 0xff, 0x95, 0xff, 0x95, 0xff, 0x97, 0xff, + 0x9d, 0xff, 0x9c, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0xa8, 0xff, 0xa6, 0xff, + 0xac, 0xff, 0xac, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xb5, 0xff, 0xb6, 0xff, + 0xb9, 0xff, 0xb8, 0xff, 0xbd, 0xff, 0xbe, 0xff, 0xc3, 0xff, 0xc2, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xca, 0xff, 0xcb, 0xff, 0xce, 0xff, 0xcd, 0xff, + 0xd2, 0xff, 0xd4, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xe0, 0xff, 0xe0, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe8, 0xff, 0xe9, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf4, 0xff, 0xf6, 0xff, + 0xf8, 0xff, 0xf6, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0x02, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x14, 0x00, 0x15, 0x00, 0x1b, 0x00, 0x19, 0x00, 0x1d, 0x00, 0x1f, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x30, 0x00, 0x2f, 0x00, + 0x35, 0x00, 0x38, 0x00, 0x3d, 0x00, 0x3b, 0x00, 0x41, 0x00, 0x43, 0x00, + 0x49, 0x00, 0x48, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x55, 0x00, 0x54, 0x00, + 0x5b, 0x00, 0x5a, 0x00, 0x60, 0x00, 0x60, 0x00, 0x66, 0x00, 0x67, 0x00, + 0x6d, 0x00, 0x6b, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x76, 0x00, 0x76, 0x00, + 0x7b, 0x00, 0x79, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x83, 0x00, 0x81, 0x00, + 0x87, 0x00, 0x88, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x8d, 0x00, 0x8f, 0x00, + 0x91, 0x00, 0x90, 0x00, 0x93, 0x00, 0x94, 0x00, 0x96, 0x00, 0x95, 0x00, + 0x97, 0x00, 0x99, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9c, 0x00, 0x9a, 0x00, + 0x9b, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9f, 0x00, 0x9e, 0x00, 0x9c, 0x00, + 0x9b, 0x00, 0x9c, 0x00, 0x9e, 0x00, 0x9d, 0x00, 0x9b, 0x00, 0x9a, 0x00, + 0x9b, 0x00, 0x9d, 0x00, 0x9b, 0x00, 0x99, 0x00, 0x96, 0x00, 0x97, 0x00, + 0x99, 0x00, 0x98, 0x00, 0x95, 0x00, 0x93, 0x00, 0x92, 0x00, 0x95, 0x00, + 0x91, 0x00, 0x8f, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x8f, 0x00, + 0x8a, 0x00, 0x89, 0x00, 0x88, 0x00, 0x89, 0x00, 0x86, 0x00, 0x87, 0x00, + 0x84, 0x00, 0x83, 0x00, 0x82, 0x00, 0x82, 0x00, 0x7e, 0x00, 0x7e, 0x00, + 0x7d, 0x00, 0x7e, 0x00, 0x7a, 0x00, 0x79, 0x00, 0x77, 0x00, 0x76, 0x00, + 0x74, 0x00, 0x75, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x6e, 0x00, + 0x6a, 0x00, 0x6a, 0x00, 0x68, 0x00, 0x67, 0x00, 0x63, 0x00, 0x63, 0x00, + 0x5f, 0x00, 0x60, 0x00, 0x5d, 0x00, 0x5c, 0x00, 0x59, 0x00, 0x5a, 0x00, + 0x55, 0x00, 0x55, 0x00, 0x51, 0x00, 0x51, 0x00, 0x4c, 0x00, 0x4c, 0x00, + 0x47, 0x00, 0x47, 0x00, 0x43, 0x00, 0x42, 0x00, 0x3e, 0x00, 0x3d, 0x00, + 0x37, 0x00, 0x37, 0x00, 0x32, 0x00, 0x31, 0x00, 0x2d, 0x00, 0x2b, 0x00, + 0x26, 0x00, 0x27, 0x00, 0x22, 0x00, 0x20, 0x00, 0x19, 0x00, 0x19, 0x00, + 0x13, 0x00, 0x12, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xdd, 0xff, 0xdf, 0xff, + 0xd8, 0xff, 0xd7, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xcd, 0xff, + 0xc7, 0xff, 0xc5, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xbb, 0xff, 0xb9, 0xff, + 0xb7, 0xff, 0xb6, 0xff, 0xb1, 0xff, 0xb2, 0xff, 0xaf, 0xff, 0xac, 0xff, + 0xa7, 0xff, 0xa9, 0xff, 0xa6, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0xa2, 0xff, + 0x9d, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x99, 0xff, 0x97, 0xff, 0x97, 0xff, + 0x96, 0xff, 0x95, 0xff, 0x91, 0xff, 0x93, 0xff, 0x91, 0xff, 0x8f, 0xff, + 0x8e, 0xff, 0x8f, 0xff, 0x8e, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0x8c, 0xff, + 0x8b, 0xff, 0x8a, 0xff, 0x88, 0xff, 0x88, 0xff, 0x8a, 0xff, 0x89, 0xff, + 0x85, 0xff, 0x86, 0xff, 0x87, 0xff, 0x86, 0xff, 0x85, 0xff, 0x85, 0xff, + 0x84, 0xff, 0x84, 0xff, 0x84, 0xff, 0x84, 0xff, 0x82, 0xff, 0x83, 0xff, + 0x83, 0xff, 0x82, 0xff, 0x80, 0xff, 0x82, 0xff, 0x81, 0xff, 0x7f, 0xff, + 0x7f, 0xff, 0x80, 0xff, 0x7f, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x7d, 0xff, + 0x7e, 0xff, 0x7d, 0xff, 0x7b, 0xff, 0x7d, 0xff, 0x7e, 0xff, 0x7c, 0xff, + 0x7c, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0x7b, 0xff, + 0x7c, 0xff, 0x7c, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x7d, 0xff, 0x7b, 0xff, + 0x7c, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x7c, 0xff, 0x7e, 0xff, 0x7c, 0xff, + 0x7e, 0xff, 0x80, 0xff, 0x81, 0xff, 0x7e, 0xff, 0x81, 0xff, 0x83, 0xff, + 0x84, 0xff, 0x83, 0xff, 0x86, 0xff, 0x86, 0xff, 0x89, 0xff, 0x89, 0xff, + 0x8a, 0xff, 0x8a, 0xff, 0x8f, 0xff, 0x90, 0xff, 0x92, 0xff, 0x92, 0xff, + 0x96, 0xff, 0x95, 0xff, 0x9a, 0xff, 0x9b, 0xff, 0x9e, 0xff, 0x9e, 0xff, + 0xa3, 0xff, 0xa4, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xad, 0xff, 0xad, 0xff, + 0xb2, 0xff, 0xb2, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xbd, 0xff, 0xbe, 0xff, + 0xc3, 0xff, 0xc2, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xce, 0xff, 0xcd, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xda, 0xff, 0xdf, 0xff, 0xe0, 0xff, + 0xe4, 0xff, 0xe3, 0xff, 0xec, 0xff, 0xea, 0xff, 0xee, 0xff, 0xf1, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x05, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0e, 0x00, 0x0f, 0x00, + 0x15, 0x00, 0x13, 0x00, 0x16, 0x00, 0x17, 0x00, 0x1d, 0x00, 0x1d, 0x00, + 0x1f, 0x00, 0x1f, 0x00, 0x24, 0x00, 0x24, 0x00, 0x26, 0x00, 0x28, 0x00, + 0x2b, 0x00, 0x2b, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 0x33, 0x00, + 0x39, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3b, 0x00, 0x3d, 0x00, 0x3b, 0x00, + 0x3f, 0x00, 0x42, 0x00, 0x42, 0x00, 0x40, 0x00, 0x46, 0x00, 0x48, 0x00, + 0x4a, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x52, 0x00, 0x52, 0x00, + 0x53, 0x00, 0x54, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5a, 0x00, + 0x5e, 0x00, 0x5f, 0x00, 0x62, 0x00, 0x63, 0x00, 0x66, 0x00, 0x64, 0x00, + 0x69, 0x00, 0x6c, 0x00, 0x6e, 0x00, 0x6b, 0x00, 0x6f, 0x00, 0x71, 0x00, + 0x73, 0x00, 0x73, 0x00, 0x78, 0x00, 0x78, 0x00, 0x79, 0x00, 0x79, 0x00, + 0x7f, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x84, 0x00, 0x83, 0x00, + 0x88, 0x00, 0x87, 0x00, 0x87, 0x00, 0x87, 0x00, 0x8b, 0x00, 0x8a, 0x00, + 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8d, 0x00, 0x8f, 0x00, 0x8e, 0x00, + 0x8e, 0x00, 0x90, 0x00, 0x90, 0x00, 0x8f, 0x00, 0x91, 0x00, 0x90, 0x00, + 0x90, 0x00, 0x91, 0x00, 0x90, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x8f, 0x00, + 0x8f, 0x00, 0x8e, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x8b, 0x00, + 0x87, 0x00, 0x87, 0x00, 0x87, 0x00, 0x87, 0x00, 0x84, 0x00, 0x85, 0x00, + 0x82, 0x00, 0x81, 0x00, 0x80, 0x00, 0x82, 0x00, 0x7a, 0x00, 0x79, 0x00, + 0x7a, 0x00, 0x7a, 0x00, 0x74, 0x00, 0x74, 0x00, 0x71, 0x00, 0x72, 0x00, + 0x6f, 0x00, 0x6e, 0x00, 0x69, 0x00, 0x69, 0x00, 0x67, 0x00, 0x67, 0x00, + 0x62, 0x00, 0x62, 0x00, 0x5e, 0x00, 0x5d, 0x00, 0x5a, 0x00, 0x5a, 0x00, + 0x55, 0x00, 0x56, 0x00, 0x52, 0x00, 0x51, 0x00, 0x4e, 0x00, 0x4f, 0x00, + 0x4a, 0x00, 0x4b, 0x00, 0x47, 0x00, 0x46, 0x00, 0x42, 0x00, 0x44, 0x00, + 0x40, 0x00, 0x41, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x39, 0x00, 0x39, 0x00, + 0x35, 0x00, 0x36, 0x00, 0x31, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2f, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x25, 0x00, 0x27, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x1d, 0x00, 0x1f, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x11, 0x00, 0x13, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x09, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xff, 0xff, 0x01, 0x00, 0xfb, 0xff, 0xfb, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xda, 0xff, 0xda, 0xff, + 0xd3, 0xff, 0xd4, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xc6, 0xff, 0xc7, 0xff, + 0xc3, 0xff, 0xc3, 0xff, 0xbb, 0xff, 0xbc, 0xff, 0xb5, 0xff, 0xb6, 0xff, + 0xb1, 0xff, 0xb2, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xa5, 0xff, 0xa7, 0xff, + 0xa0, 0xff, 0x9e, 0xff, 0x99, 0xff, 0x9c, 0xff, 0x98, 0xff, 0x95, 0xff, + 0x8f, 0xff, 0x90, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x89, 0xff, 0x87, 0xff, + 0x82, 0xff, 0x84, 0xff, 0x82, 0xff, 0x80, 0xff, 0x7c, 0xff, 0x7e, 0xff, + 0x7b, 0xff, 0x7a, 0xff, 0x78, 0xff, 0x77, 0xff, 0x75, 0xff, 0x74, 0xff, + 0x75, 0xff, 0x74, 0xff, 0x71, 0xff, 0x72, 0xff, 0x72, 0xff, 0x71, 0xff, + 0x6f, 0xff, 0x70, 0xff, 0x71, 0xff, 0x6e, 0xff, 0x6f, 0xff, 0x72, 0xff, + 0x70, 0xff, 0x6d, 0xff, 0x72, 0xff, 0x72, 0xff, 0x6f, 0xff, 0x6f, 0xff, + 0x73, 0xff, 0x72, 0xff, 0x72, 0xff, 0x74, 0xff, 0x73, 0xff, 0x73, 0xff, + 0x77, 0xff, 0x76, 0xff, 0x76, 0xff, 0x76, 0xff, 0x79, 0xff, 0x79, 0xff, + 0x7a, 0xff, 0x79, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x7e, 0xff, 0x7e, 0xff, + 0x7e, 0xff, 0x7d, 0xff, 0x80, 0xff, 0x81, 0xff, 0x84, 0xff, 0x82, 0xff, + 0x83, 0xff, 0x85, 0xff, 0x87, 0xff, 0x86, 0xff, 0x87, 0xff, 0x87, 0xff, + 0x8a, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x8b, 0xff, 0x90, 0xff, 0x8e, 0xff, + 0x8f, 0xff, 0x90, 0xff, 0x91, 0xff, 0x91, 0xff, 0x95, 0xff, 0x94, 0xff, + 0x95, 0xff, 0x96, 0xff, 0x98, 0xff, 0x9a, 0xff, 0x9b, 0xff, 0x99, 0xff, + 0x9a, 0xff, 0x9c, 0xff, 0xa0, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0xa1, 0xff, + 0xa5, 0xff, 0xa4, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xaa, 0xff, 0xab, 0xff, + 0xb0, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xb7, 0xff, 0xb8, 0xff, + 0xb9, 0xff, 0xb9, 0xff, 0xbe, 0xff, 0xc0, 0xff, 0xc6, 0xff, 0xc6, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd2, 0xff, 0xd2, 0xff, + 0xd6, 0xff, 0xd7, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xde, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xec, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x06, 0x00, 0x06, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x11, 0x00, 0x10, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x1b, 0x00, 0x1a, 0x00, 0x22, 0x00, 0x21, 0x00, 0x26, 0x00, 0x25, 0x00, + 0x2b, 0x00, 0x2b, 0x00, 0x30, 0x00, 0x30, 0x00, 0x36, 0x00, 0x34, 0x00, + 0x39, 0x00, 0x3a, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x41, 0x00, 0x42, 0x00, + 0x46, 0x00, 0x46, 0x00, 0x49, 0x00, 0x47, 0x00, 0x4d, 0x00, 0x4f, 0x00, + 0x51, 0x00, 0x4f, 0x00, 0x53, 0x00, 0x54, 0x00, 0x57, 0x00, 0x54, 0x00, + 0x57, 0x00, 0x59, 0x00, 0x5d, 0x00, 0x5b, 0x00, 0x5d, 0x00, 0x5d, 0x00, + 0x61, 0x00, 0x60, 0x00, 0x65, 0x00, 0x64, 0x00, 0x66, 0x00, 0x66, 0x00, + 0x69, 0x00, 0x68, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6b, 0x00, + 0x71, 0x00, 0x71, 0x00, 0x72, 0x00, 0x70, 0x00, 0x74, 0x00, 0x75, 0x00, + 0x78, 0x00, 0x77, 0x00, 0x78, 0x00, 0x79, 0x00, 0x7c, 0x00, 0x7a, 0x00, + 0x7d, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x7e, 0x00, 0x82, 0x00, 0x84, 0x00, + 0x83, 0x00, 0x83, 0x00, 0x87, 0x00, 0x87, 0x00, 0x89, 0x00, 0x88, 0x00, + 0x8a, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8d, 0x00, 0x8f, 0x00, 0x8f, 0x00, + 0x91, 0x00, 0x91, 0x00, 0x92, 0x00, 0x92, 0x00, 0x93, 0x00, 0x92, 0x00, + 0x95, 0x00, 0x95, 0x00, 0x96, 0x00, 0x95, 0x00, 0x97, 0x00, 0x96, 0x00, + 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x96, 0x00, 0x95, 0x00, 0x97, 0x00, + 0x97, 0x00, 0x95, 0x00, 0x94, 0x00, 0x96, 0x00, 0x93, 0x00, 0x94, 0x00, + 0x91, 0x00, 0x90, 0x00, 0x91, 0x00, 0x91, 0x00, 0x8e, 0x00, 0x8e, 0x00, + 0x8b, 0x00, 0x8a, 0x00, 0x88, 0x00, 0x88, 0x00, 0x83, 0x00, 0x83, 0x00, + 0x82, 0x00, 0x81, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7b, 0x00, 0x7a, 0x00, + 0x74, 0x00, 0x73, 0x00, 0x71, 0x00, 0x71, 0x00, 0x6a, 0x00, 0x6a, 0x00, + 0x67, 0x00, 0x65, 0x00, 0x61, 0x00, 0x62, 0x00, 0x5c, 0x00, 0x5b, 0x00, + 0x58, 0x00, 0x59, 0x00, 0x51, 0x00, 0x51, 0x00, 0x4d, 0x00, 0x4c, 0x00, + 0x48, 0x00, 0x47, 0x00, 0x42, 0x00, 0x43, 0x00, 0x3d, 0x00, 0x3b, 0x00, + 0x37, 0x00, 0x38, 0x00, 0x32, 0x00, 0x31, 0x00, 0x2d, 0x00, 0x2c, 0x00, + 0x29, 0x00, 0x29, 0x00, 0x22, 0x00, 0x20, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x14, 0x00, 0x15, 0x00, 0x11, 0x00, 0x10, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x06, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0xe2, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdb, 0xff, 0xda, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xcb, 0xff, 0xcc, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xbc, 0xff, 0xbd, 0xff, + 0xba, 0xff, 0xba, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0xb0, 0xff, 0xb0, 0xff, + 0xab, 0xff, 0xac, 0xff, 0xa5, 0xff, 0xa6, 0xff, 0xa2, 0xff, 0xa2, 0xff, + 0x9d, 0xff, 0x9d, 0xff, 0x98, 0xff, 0x98, 0xff, 0x95, 0xff, 0x97, 0xff, + 0x90, 0xff, 0x8f, 0xff, 0x8b, 0xff, 0x8d, 0xff, 0x86, 0xff, 0x86, 0xff, + 0x83, 0xff, 0x85, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7b, 0xff, 0x7c, 0xff, + 0x79, 0xff, 0x7a, 0xff, 0x74, 0xff, 0x74, 0xff, 0x73, 0xff, 0x73, 0xff, + 0x6e, 0xff, 0x6f, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x6b, 0xff, 0x6b, 0xff, + 0x68, 0xff, 0x6a, 0xff, 0x68, 0xff, 0x69, 0xff, 0x66, 0xff, 0x67, 0xff, + 0x66, 0xff, 0x66, 0xff, 0x65, 0xff, 0x65, 0xff, 0x64, 0xff, 0x67, 0xff, + 0x66, 0xff, 0x64, 0xff, 0x64, 0xff, 0x66, 0xff, 0x66, 0xff, 0x66, 0xff, + 0x66, 0xff, 0x67, 0xff, 0x68, 0xff, 0x68, 0xff, 0x69, 0xff, 0x69, 0xff, + 0x6a, 0xff, 0x6b, 0xff, 0x6b, 0xff, 0x6c, 0xff, 0x6d, 0xff, 0x6d, 0xff, + 0x6e, 0xff, 0x70, 0xff, 0x72, 0xff, 0x70, 0xff, 0x72, 0xff, 0x73, 0xff, + 0x74, 0xff, 0x76, 0xff, 0x78, 0xff, 0x76, 0xff, 0x7a, 0xff, 0x7a, 0xff, + 0x7b, 0xff, 0x7c, 0xff, 0x80, 0xff, 0x7f, 0xff, 0x82, 0xff, 0x82, 0xff, + 0x83, 0xff, 0x83, 0xff, 0x88, 0xff, 0x88, 0xff, 0x88, 0xff, 0x8b, 0xff, + 0x8e, 0xff, 0x8c, 0xff, 0x8f, 0xff, 0x91, 0xff, 0x92, 0xff, 0x93, 0xff, + 0x96, 0xff, 0x95, 0xff, 0x99, 0xff, 0x99, 0xff, 0x9c, 0xff, 0x9a, 0xff, + 0xa0, 0xff, 0xa1, 0xff, 0xa4, 0xff, 0xa1, 0xff, 0xa7, 0xff, 0xa8, 0xff, + 0xaa, 0xff, 0xaa, 0xff, 0xaf, 0xff, 0xad, 0xff, 0xb3, 0xff, 0xb4, 0xff, + 0xb6, 0xff, 0xb4, 0xff, 0xbc, 0xff, 0xbb, 0xff, 0xbd, 0xff, 0xbe, 0xff, + 0xc4, 0xff, 0xc2, 0xff, 0xc8, 0xff, 0xc9, 0xff, 0xcd, 0xff, 0xcb, 0xff, + 0xd2, 0xff, 0xd2, 0xff, 0xd5, 0xff, 0xd6, 0xff, 0xdd, 0xff, 0xdb, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xf4, 0xff, 0xf3, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0x06, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x26, 0x00, 0x28, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x33, 0x00, 0x32, 0x00, + 0x38, 0x00, 0x3b, 0x00, 0x3f, 0x00, 0x3d, 0x00, 0x44, 0x00, 0x44, 0x00, + 0x49, 0x00, 0x48, 0x00, 0x4e, 0x00, 0x4c, 0x00, 0x52, 0x00, 0x52, 0x00, + 0x58, 0x00, 0x56, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x60, 0x00, 0x5d, 0x00, + 0x61, 0x00, 0x60, 0x00, 0x66, 0x00, 0x66, 0x00, 0x68, 0x00, 0x66, 0x00, + 0x6b, 0x00, 0x6b, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x71, 0x00, 0x72, 0x00, + 0x75, 0x00, 0x74, 0x00, 0x75, 0x00, 0x75, 0x00, 0x79, 0x00, 0x79, 0x00, + 0x7a, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7c, 0x00, + 0x7f, 0x00, 0x7d, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x7e, 0x00, + 0x82, 0x00, 0x84, 0x00, 0x83, 0x00, 0x82, 0x00, 0x86, 0x00, 0x84, 0x00, + 0x84, 0x00, 0x85, 0x00, 0x88, 0x00, 0x84, 0x00, 0x88, 0x00, 0x88, 0x00, + 0x8a, 0x00, 0x87, 0x00, 0x89, 0x00, 0x88, 0x00, 0x8c, 0x00, 0x8b, 0x00, + 0x8d, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x8d, 0x00, + 0x90, 0x00, 0x90, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x92, 0x00, 0x90, 0x00, + 0x91, 0x00, 0x93, 0x00, 0x90, 0x00, 0x8f, 0x00, 0x91, 0x00, 0x91, 0x00, + 0x91, 0x00, 0x92, 0x00, 0x91, 0x00, 0x8f, 0x00, 0x93, 0x00, 0x95, 0x00, + 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x91, 0x00, 0x90, 0x00, 0x91, 0x00, + 0x8f, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x8c, 0x00, 0x8d, 0x00, + 0x8a, 0x00, 0x89, 0x00, 0x88, 0x00, 0x89, 0x00, 0x87, 0x00, 0x86, 0x00, + 0x82, 0x00, 0x83, 0x00, 0x80, 0x00, 0x81, 0x00, 0x7c, 0x00, 0x7c, 0x00, + 0x79, 0x00, 0x79, 0x00, 0x74, 0x00, 0x76, 0x00, 0x72, 0x00, 0x72, 0x00, + 0x6d, 0x00, 0x6d, 0x00, 0x69, 0x00, 0x69, 0x00, 0x66, 0x00, 0x65, 0x00, + 0x5e, 0x00, 0x60, 0x00, 0x5c, 0x00, 0x5b, 0x00, 0x56, 0x00, 0x57, 0x00, + 0x50, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x46, 0x00, 0x47, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x31, 0x00, 0x32, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x26, 0x00, 0x27, 0x00, + 0x20, 0x00, 0x20, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x0f, 0x00, 0x11, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfd, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe7, 0xff, 0xe8, 0xff, + 0xe2, 0xff, 0xe2, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xd7, 0xff, 0xd9, 0xff, + 0xd4, 0xff, 0xd3, 0xff, 0xce, 0xff, 0xcf, 0xff, 0xca, 0xff, 0xcb, 0xff, + 0xc4, 0xff, 0xc3, 0xff, 0xc0, 0xff, 0xc2, 0xff, 0xbb, 0xff, 0xba, 0xff, + 0xb6, 0xff, 0xb6, 0xff, 0xaf, 0xff, 0xb1, 0xff, 0xae, 0xff, 0xac, 0xff, + 0xa6, 0xff, 0xa7, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0x9f, 0xff, 0x9e, 0xff, + 0x99, 0xff, 0x9c, 0xff, 0x94, 0xff, 0x94, 0xff, 0x91, 0xff, 0x8f, 0xff, + 0x8a, 0xff, 0x8c, 0xff, 0x88, 0xff, 0x86, 0xff, 0x83, 0xff, 0x83, 0xff, + 0x7e, 0xff, 0x7c, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x76, 0xff, 0x75, 0xff, + 0x72, 0xff, 0x72, 0xff, 0x72, 0xff, 0x70, 0xff, 0x6b, 0xff, 0x6c, 0xff, + 0x6b, 0xff, 0x6a, 0xff, 0x67, 0xff, 0x67, 0xff, 0x66, 0xff, 0x65, 0xff, + 0x65, 0xff, 0x64, 0xff, 0x60, 0xff, 0x61, 0xff, 0x62, 0xff, 0x61, 0xff, + 0x5e, 0xff, 0x5d, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x5e, 0xff, 0x5e, 0xff, + 0x5d, 0xff, 0x5d, 0xff, 0x60, 0xff, 0x5f, 0xff, 0x5d, 0xff, 0x5c, 0xff, + 0x60, 0xff, 0x60, 0xff, 0x61, 0xff, 0x61, 0xff, 0x61, 0xff, 0x60, 0xff, + 0x65, 0xff, 0x63, 0xff, 0x62, 0xff, 0x64, 0xff, 0x69, 0xff, 0x66, 0xff, + 0x67, 0xff, 0x68, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x6e, 0xff, 0x6d, 0xff, + 0x6f, 0xff, 0x70, 0xff, 0x73, 0xff, 0x72, 0xff, 0x75, 0xff, 0x77, 0xff, + 0x77, 0xff, 0x75, 0xff, 0x7a, 0xff, 0x7c, 0xff, 0x7f, 0xff, 0x7d, 0xff, + 0x81, 0xff, 0x81, 0xff, 0x84, 0xff, 0x83, 0xff, 0x88, 0xff, 0x88, 0xff, + 0x8a, 0xff, 0x8a, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x91, 0xff, 0x91, 0xff, + 0x94, 0xff, 0x94, 0xff, 0x99, 0xff, 0x97, 0xff, 0x99, 0xff, 0x9a, 0xff, + 0x9d, 0xff, 0x9c, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0xa2, 0xff, + 0xa7, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0xa9, 0xff, 0xae, 0xff, 0xae, 0xff, + 0xb0, 0xff, 0xb1, 0xff, 0xb3, 0xff, 0xb4, 0xff, 0xb8, 0xff, 0xb8, 0xff, + 0xba, 0xff, 0xbb, 0xff, 0xbe, 0xff, 0xbf, 0xff, 0xc4, 0xff, 0xc2, 0xff, + 0xc5, 0xff, 0xc7, 0xff, 0xcb, 0xff, 0xc9, 0xff, 0xcf, 0xff, 0xd1, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0xd9, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xdd, 0xff, + 0xe1, 0xff, 0xe3, 0xff, 0xe9, 0xff, 0xe7, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xf4, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x05, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x22, 0x00, 0x21, 0x00, + 0x27, 0x00, 0x28, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x32, 0x00, 0x31, 0x00, + 0x38, 0x00, 0x3a, 0x00, 0x40, 0x00, 0x3f, 0x00, 0x43, 0x00, 0x43, 0x00, + 0x4a, 0x00, 0x4b, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x54, 0x00, + 0x57, 0x00, 0x57, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x61, 0x00, 0x62, 0x00, + 0x66, 0x00, 0x65, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x6d, 0x00, 0x6c, 0x00, + 0x72, 0x00, 0x73, 0x00, 0x75, 0x00, 0x75, 0x00, 0x78, 0x00, 0x79, 0x00, + 0x7c, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x82, 0x00, 0x82, 0x00, + 0x80, 0x00, 0x82, 0x00, 0x86, 0x00, 0x86, 0x00, 0x85, 0x00, 0x85, 0x00, + 0x88, 0x00, 0x88, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x8c, 0x00, 0x8c, 0x00, + 0x8c, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x91, 0x00, 0x91, 0x00, + 0x91, 0x00, 0x92, 0x00, 0x94, 0x00, 0x93, 0x00, 0x93, 0x00, 0x94, 0x00, + 0x95, 0x00, 0x94, 0x00, 0x96, 0x00, 0x98, 0x00, 0x96, 0x00, 0x97, 0x00, + 0x98, 0x00, 0x98, 0x00, 0x98, 0x00, 0x98, 0x00, 0x98, 0x00, 0x9a, 0x00, + 0x99, 0x00, 0x98, 0x00, 0x99, 0x00, 0x99, 0x00, 0x99, 0x00, 0x99, 0x00, + 0x99, 0x00, 0x98, 0x00, 0x98, 0x00, 0x9a, 0x00, 0x99, 0x00, 0x97, 0x00, + 0x96, 0x00, 0x99, 0x00, 0x99, 0x00, 0x97, 0x00, 0x95, 0x00, 0x97, 0x00, + 0x96, 0x00, 0x96, 0x00, 0x93, 0x00, 0x94, 0x00, 0x92, 0x00, 0x92, 0x00, + 0x92, 0x00, 0x92, 0x00, 0x91, 0x00, 0x8f, 0x00, 0x8d, 0x00, 0x8d, 0x00, + 0x8b, 0x00, 0x8b, 0x00, 0x89, 0x00, 0x88, 0x00, 0x85, 0x00, 0x85, 0x00, + 0x81, 0x00, 0x82, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0x78, 0x00, 0x77, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6e, 0x00, 0x70, 0x00, + 0x6a, 0x00, 0x68, 0x00, 0x65, 0x00, 0x66, 0x00, 0x61, 0x00, 0x62, 0x00, + 0x5b, 0x00, 0x5b, 0x00, 0x57, 0x00, 0x57, 0x00, 0x52, 0x00, 0x51, 0x00, + 0x4c, 0x00, 0x4d, 0x00, 0x48, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, + 0x3e, 0x00, 0x3f, 0x00, 0x37, 0x00, 0x36, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x2e, 0x00, 0x2d, 0x00, 0x25, 0x00, 0x27, 0x00, 0x24, 0x00, 0x24, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x19, 0x00, 0x18, 0x00, 0x13, 0x00, 0x15, 0x00, + 0x10, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xf8, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xed, 0xff, 0xee, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xe6, 0xff, 0xe6, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xdf, 0xff, + 0xd6, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xcd, 0xff, 0xcf, 0xff, + 0xce, 0xff, 0xcb, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xc1, 0xff, 0xc0, 0xff, + 0xc0, 0xff, 0xc0, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb6, 0xff, 0xb6, 0xff, + 0xae, 0xff, 0xaf, 0xff, 0xab, 0xff, 0xab, 0xff, 0xa7, 0xff, 0xa7, 0xff, + 0xa0, 0xff, 0xa1, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x96, 0xff, 0x98, 0xff, + 0x93, 0xff, 0x92, 0xff, 0x8f, 0xff, 0x8e, 0xff, 0x88, 0xff, 0x87, 0xff, + 0x84, 0xff, 0x86, 0xff, 0x81, 0xff, 0x81, 0xff, 0x7c, 0xff, 0x7c, 0xff, + 0x78, 0xff, 0x78, 0xff, 0x74, 0xff, 0x74, 0xff, 0x71, 0xff, 0x70, 0xff, + 0x6d, 0xff, 0x6e, 0xff, 0x69, 0xff, 0x69, 0xff, 0x67, 0xff, 0x68, 0xff, + 0x62, 0xff, 0x64, 0xff, 0x62, 0xff, 0x62, 0xff, 0x60, 0xff, 0x5f, 0xff, + 0x5c, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x59, 0xff, 0x5a, 0xff, + 0x5b, 0xff, 0x5c, 0xff, 0x59, 0xff, 0x59, 0xff, 0x59, 0xff, 0x5b, 0xff, + 0x59, 0xff, 0x59, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x59, 0xff, 0x5c, 0xff, + 0x5b, 0xff, 0x5a, 0xff, 0x5c, 0xff, 0x5e, 0xff, 0x5d, 0xff, 0x5e, 0xff, + 0x60, 0xff, 0x60, 0xff, 0x61, 0xff, 0x62, 0xff, 0x65, 0xff, 0x65, 0xff, + 0x66, 0xff, 0x68, 0xff, 0x6a, 0xff, 0x69, 0xff, 0x6c, 0xff, 0x6f, 0xff, + 0x6f, 0xff, 0x6e, 0xff, 0x73, 0xff, 0x74, 0xff, 0x72, 0xff, 0x74, 0xff, + 0x7a, 0xff, 0x7a, 0xff, 0x7b, 0xff, 0x7a, 0xff, 0x7f, 0xff, 0x81, 0xff, + 0x83, 0xff, 0x83, 0xff, 0x84, 0xff, 0x85, 0xff, 0x8c, 0xff, 0x8b, 0xff, + 0x8d, 0xff, 0x8f, 0xff, 0x91, 0xff, 0x92, 0xff, 0x95, 0xff, 0x95, 0xff, + 0x97, 0xff, 0x9a, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0x9f, 0xff, + 0xa2, 0xff, 0xa4, 0xff, 0xa9, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0xab, 0xff, + 0xaf, 0xff, 0xaf, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb5, 0xff, 0xb6, 0xff, + 0xbb, 0xff, 0xbb, 0xff, 0xbd, 0xff, 0xbc, 0xff, 0xc2, 0xff, 0xc4, 0xff, + 0xc6, 0xff, 0xc5, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xcf, 0xff, + 0xd3, 0xff, 0xd3, 0xff, 0xd8, 0xff, 0xd9, 0xff, 0xde, 0xff, 0xdc, 0xff, + 0xe2, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xec, 0xff, 0xea, 0xff, + 0xf0, 0xff, 0xf2, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x07, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x0d, 0x00, + 0x12, 0x00, 0x0f, 0x00, 0x16, 0x00, 0x18, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x21, 0x00, 0x21, 0x00, 0x26, 0x00, 0x27, 0x00, 0x2c, 0x00, 0x2b, 0x00, + 0x32, 0x00, 0x32, 0x00, 0x37, 0x00, 0x35, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x45, 0x00, 0x45, 0x00, 0x4b, 0x00, 0x4b, 0x00, + 0x4e, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x53, 0x00, 0x59, 0x00, 0x58, 0x00, + 0x5a, 0x00, 0x5b, 0x00, 0x62, 0x00, 0x5f, 0x00, 0x61, 0x00, 0x62, 0x00, + 0x68, 0x00, 0x67, 0x00, 0x69, 0x00, 0x69, 0x00, 0x6d, 0x00, 0x6d, 0x00, + 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x72, 0x00, 0x75, 0x00, 0x76, 0x00, + 0x78, 0x00, 0x77, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x7c, 0x00, 0x7c, 0x00, + 0x7f, 0x00, 0x7e, 0x00, 0x80, 0x00, 0x81, 0x00, 0x82, 0x00, 0x82, 0x00, + 0x84, 0x00, 0x86, 0x00, 0x87, 0x00, 0x86, 0x00, 0x89, 0x00, 0x89, 0x00, + 0x89, 0x00, 0x8a, 0x00, 0x8d, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x8e, 0x00, + 0x8e, 0x00, 0x8d, 0x00, 0x90, 0x00, 0x92, 0x00, 0x91, 0x00, 0x91, 0x00, + 0x94, 0x00, 0x94, 0x00, 0x94, 0x00, 0x95, 0x00, 0x96, 0x00, 0x95, 0x00, + 0x97, 0x00, 0x97, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x98, 0x00, + 0x99, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9b, 0x00, + 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9b, 0x00, 0x9b, 0x00, 0x9c, 0x00, + 0x9b, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9d, 0x00, 0x9a, 0x00, 0x99, 0x00, + 0x99, 0x00, 0x9a, 0x00, 0x99, 0x00, 0x98, 0x00, 0x96, 0x00, 0x97, 0x00, + 0x94, 0x00, 0x94, 0x00, 0x92, 0x00, 0x91, 0x00, 0x8f, 0x00, 0x90, 0x00, + 0x8c, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x86, 0x00, 0x85, 0x00, + 0x82, 0x00, 0x82, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0x77, 0x00, 0x77, 0x00, 0x70, 0x00, 0x70, 0x00, 0x6c, 0x00, 0x6c, 0x00, + 0x65, 0x00, 0x66, 0x00, 0x62, 0x00, 0x62, 0x00, 0x5b, 0x00, 0x5b, 0x00, + 0x57, 0x00, 0x57, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x4c, 0x00, 0x4b, 0x00, + 0x44, 0x00, 0x45, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x39, 0x00, 0x39, 0x00, + 0x31, 0x00, 0x32, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x27, 0x00, 0x27, 0x00, + 0x21, 0x00, 0x20, 0x00, 0x1b, 0x00, 0x1e, 0x00, 0x16, 0x00, 0x14, 0x00, + 0x11, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xfc, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0xf2, 0xff, 0xf5, 0xff, 0xee, 0xff, 0xee, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xdb, 0xff, 0xdd, 0xff, + 0xdb, 0xff, 0xd9, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xd1, 0xff, + 0xcb, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xc4, 0xff, 0xc5, 0xff, + 0xc1, 0xff, 0xc0, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xb8, 0xff, 0xb7, 0xff, + 0xb5, 0xff, 0xb4, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xad, 0xff, 0xac, 0xff, + 0xa9, 0xff, 0xa9, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0xa1, 0xff, 0xa1, 0xff, + 0x9e, 0xff, 0x9d, 0xff, 0x9a, 0xff, 0x99, 0xff, 0x96, 0xff, 0x96, 0xff, + 0x90, 0xff, 0x90, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x89, 0xff, 0x89, 0xff, + 0x85, 0xff, 0x84, 0xff, 0x81, 0xff, 0x80, 0xff, 0x7e, 0xff, 0x7e, 0xff, + 0x7b, 0xff, 0x7a, 0xff, 0x78, 0xff, 0x79, 0xff, 0x76, 0xff, 0x74, 0xff, + 0x72, 0xff, 0x73, 0xff, 0x70, 0xff, 0x6f, 0xff, 0x6f, 0xff, 0x6e, 0xff, + 0x6c, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x68, 0xff, 0x66, 0xff, + 0x66, 0xff, 0x66, 0xff, 0x67, 0xff, 0x65, 0xff, 0x64, 0xff, 0x64, 0xff, + 0x65, 0xff, 0x65, 0xff, 0x63, 0xff, 0x64, 0xff, 0x66, 0xff, 0x64, 0xff, + 0x66, 0xff, 0x65, 0xff, 0x65, 0xff, 0x64, 0xff, 0x66, 0xff, 0x66, 0xff, + 0x67, 0xff, 0x66, 0xff, 0x69, 0xff, 0x68, 0xff, 0x6b, 0xff, 0x6a, 0xff, + 0x6c, 0xff, 0x6b, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x6f, 0xff, 0x6d, 0xff, + 0x70, 0xff, 0x72, 0xff, 0x74, 0xff, 0x72, 0xff, 0x74, 0xff, 0x75, 0xff, + 0x7a, 0xff, 0x79, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x7f, 0xff, 0x7f, 0xff, + 0x81, 0xff, 0x7f, 0xff, 0x84, 0xff, 0x85, 0xff, 0x86, 0xff, 0x84, 0xff, + 0x8a, 0xff, 0x8a, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x90, 0xff, 0x91, 0xff, + 0x93, 0xff, 0x93, 0xff, 0x96, 0xff, 0x96, 0xff, 0x9a, 0xff, 0x99, 0xff, + 0x9d, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0x9f, 0xff, 0xa4, 0xff, 0xa4, 0xff, + 0xa4, 0xff, 0xa6, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xac, 0xff, 0xad, 0xff, + 0xb3, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xb5, 0xff, 0xbb, 0xff, 0xba, 0xff, + 0xbb, 0xff, 0xbd, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc6, 0xff, 0xc7, 0xff, + 0xcc, 0xff, 0xca, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd4, 0xff, 0xd3, 0xff, + 0xd9, 0xff, 0xd9, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xe4, 0xff, 0xe3, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x06, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x11, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x1c, 0x00, 0x1d, 0x00, 0x24, 0x00, 0x21, 0x00, 0x28, 0x00, 0x2a, 0x00, + 0x2e, 0x00, 0x2c, 0x00, 0x33, 0x00, 0x35, 0x00, 0x3a, 0x00, 0x39, 0x00, + 0x3f, 0x00, 0x3e, 0x00, 0x43, 0x00, 0x43, 0x00, 0x49, 0x00, 0x49, 0x00, + 0x4e, 0x00, 0x4c, 0x00, 0x51, 0x00, 0x52, 0x00, 0x57, 0x00, 0x57, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x5f, 0x00, 0x5e, 0x00, 0x61, 0x00, 0x62, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x69, 0x00, 0x68, 0x00, 0x69, 0x00, 0x68, 0x00, + 0x6e, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x71, 0x00, 0x71, 0x00, + 0x73, 0x00, 0x73, 0x00, 0x74, 0x00, 0x74, 0x00, 0x78, 0x00, 0x76, 0x00, + 0x76, 0x00, 0x78, 0x00, 0x79, 0x00, 0x78, 0x00, 0x7a, 0x00, 0x7b, 0x00, + 0x7c, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7d, 0x00, + 0x7e, 0x00, 0x7d, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x80, 0x00, 0x81, 0x00, + 0x81, 0x00, 0x80, 0x00, 0x81, 0x00, 0x83, 0x00, 0x83, 0x00, 0x83, 0x00, + 0x82, 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x85, 0x00, 0x86, 0x00, + 0x84, 0x00, 0x85, 0x00, 0x89, 0x00, 0x89, 0x00, 0x85, 0x00, 0x86, 0x00, + 0x8a, 0x00, 0x8b, 0x00, 0x89, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8a, 0x00, + 0x8c, 0x00, 0x8d, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x8c, 0x00, 0x8e, 0x00, + 0x8c, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x8e, 0x00, 0x8d, 0x00, 0x8c, 0x00, + 0x89, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8c, 0x00, 0x8a, 0x00, 0x8a, 0x00, + 0x89, 0x00, 0x8b, 0x00, 0x89, 0x00, 0x87, 0x00, 0x86, 0x00, 0x88, 0x00, + 0x85, 0x00, 0x85, 0x00, 0x82, 0x00, 0x84, 0x00, 0x82, 0x00, 0x82, 0x00, + 0x7e, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x79, 0x00, 0x79, 0x00, + 0x74, 0x00, 0x75, 0x00, 0x73, 0x00, 0x73, 0x00, 0x6b, 0x00, 0x6c, 0x00, + 0x6b, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x63, 0x00, 0x60, 0x00, 0x63, 0x00, + 0x5d, 0x00, 0x5a, 0x00, 0x56, 0x00, 0x59, 0x00, 0x53, 0x00, 0x52, 0x00, + 0x4c, 0x00, 0x4d, 0x00, 0x47, 0x00, 0x48, 0x00, 0x41, 0x00, 0x43, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x39, 0x00, 0x38, 0x00, 0x31, 0x00, 0x33, 0x00, + 0x2d, 0x00, 0x2c, 0x00, 0x29, 0x00, 0x28, 0x00, 0x21, 0x00, 0x22, 0x00, + 0x1f, 0x00, 0x1e, 0x00, 0x18, 0x00, 0x18, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x0e, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xf5, 0xff, 0xf6, 0xff, + 0xf4, 0xff, 0xf3, 0xff, 0xed, 0xff, 0xed, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xe3, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xdc, 0xff, 0xdb, 0xff, + 0xd8, 0xff, 0xd6, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xce, 0xff, + 0xca, 0xff, 0xca, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xc2, 0xff, 0xc1, 0xff, + 0xbe, 0xff, 0xbe, 0xff, 0xba, 0xff, 0xb9, 0xff, 0xb5, 0xff, 0xb5, 0xff, + 0xb1, 0xff, 0xb1, 0xff, 0xac, 0xff, 0xac, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0xa3, 0xff, 0xa4, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0x9a, 0xff, 0x9b, 0xff, + 0x99, 0xff, 0x98, 0xff, 0x93, 0xff, 0x93, 0xff, 0x8f, 0xff, 0x90, 0xff, + 0x89, 0xff, 0x8a, 0xff, 0x89, 0xff, 0x88, 0xff, 0x82, 0xff, 0x83, 0xff, + 0x83, 0xff, 0x82, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x7b, 0xff, + 0x7a, 0xff, 0x79, 0xff, 0x74, 0xff, 0x75, 0xff, 0x74, 0xff, 0x75, 0xff, + 0x71, 0xff, 0x6f, 0xff, 0x6f, 0xff, 0x70, 0xff, 0x6f, 0xff, 0x6e, 0xff, + 0x6d, 0xff, 0x6d, 0xff, 0x6d, 0xff, 0x6d, 0xff, 0x6c, 0xff, 0x6b, 0xff, + 0x6b, 0xff, 0x6d, 0xff, 0x6d, 0xff, 0x6c, 0xff, 0x6d, 0xff, 0x6e, 0xff, + 0x6d, 0xff, 0x6d, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x6f, 0xff, 0x71, 0xff, + 0x71, 0xff, 0x70, 0xff, 0x71, 0xff, 0x73, 0xff, 0x75, 0xff, 0x74, 0xff, + 0x75, 0xff, 0x79, 0xff, 0x78, 0xff, 0x76, 0xff, 0x79, 0xff, 0x7a, 0xff, + 0x7c, 0xff, 0x7c, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x82, 0xff, 0x82, 0xff, + 0x83, 0xff, 0x84, 0xff, 0x8a, 0xff, 0x87, 0xff, 0x88, 0xff, 0x89, 0xff, + 0x8c, 0xff, 0x8c, 0xff, 0x8f, 0xff, 0x8e, 0xff, 0x90, 0xff, 0x91, 0xff, + 0x94, 0xff, 0x93, 0xff, 0x95, 0xff, 0x95, 0xff, 0x98, 0xff, 0x99, 0xff, + 0x9a, 0xff, 0x9b, 0xff, 0x9c, 0xff, 0x9d, 0xff, 0x9f, 0xff, 0x9f, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xa5, 0xff, + 0xa6, 0xff, 0xa7, 0xff, 0xad, 0xff, 0xab, 0xff, 0xab, 0xff, 0xad, 0xff, + 0xb1, 0xff, 0xaf, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xb4, 0xff, 0xb6, 0xff, + 0xb8, 0xff, 0xb8, 0xff, 0xb9, 0xff, 0xbb, 0xff, 0xbe, 0xff, 0xbe, 0xff, + 0xc1, 0xff, 0xc2, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xca, 0xff, 0xc9, 0xff, + 0xcc, 0xff, 0xce, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xd6, 0xff, 0xd5, 0xff, + 0xd9, 0xff, 0xd9, 0xff, 0xdf, 0xff, 0xe1, 0xff, 0xe5, 0xff, 0xe3, 0xff, + 0xe8, 0xff, 0xea, 0xff, 0xef, 0xff, 0xed, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0xf9, 0xff, 0xf8, 0xff, 0xff, 0xff, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x0c, 0x00, 0x0a, 0x00, 0x11, 0x00, 0x12, 0x00, 0x17, 0x00, 0x16, 0x00, + 0x1e, 0x00, 0x1d, 0x00, 0x21, 0x00, 0x22, 0x00, 0x28, 0x00, 0x27, 0x00, + 0x2d, 0x00, 0x2d, 0x00, 0x33, 0x00, 0x33, 0x00, 0x38, 0x00, 0x39, 0x00, + 0x3e, 0x00, 0x3c, 0x00, 0x41, 0x00, 0x42, 0x00, 0x47, 0x00, 0x47, 0x00, + 0x4c, 0x00, 0x4b, 0x00, 0x50, 0x00, 0x50, 0x00, 0x56, 0x00, 0x55, 0x00, + 0x59, 0x00, 0x57, 0x00, 0x5c, 0x00, 0x5e, 0x00, 0x61, 0x00, 0x5f, 0x00, + 0x62, 0x00, 0x63, 0x00, 0x66, 0x00, 0x64, 0x00, 0x67, 0x00, 0x69, 0x00, + 0x6a, 0x00, 0x6a, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x6d, 0x00, 0x6d, 0x00, + 0x72, 0x00, 0x73, 0x00, 0x71, 0x00, 0x72, 0x00, 0x75, 0x00, 0x75, 0x00, + 0x76, 0x00, 0x76, 0x00, 0x77, 0x00, 0x77, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0x78, 0x00, 0x79, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7b, 0x00, 0x7c, 0x00, + 0x7e, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x7f, 0x00, + 0x82, 0x00, 0x82, 0x00, 0x82, 0x00, 0x81, 0x00, 0x81, 0x00, 0x82, 0x00, + 0x84, 0x00, 0x84, 0x00, 0x82, 0x00, 0x82, 0x00, 0x86, 0x00, 0x87, 0x00, + 0x85, 0x00, 0x84, 0x00, 0x87, 0x00, 0x89, 0x00, 0x89, 0x00, 0x86, 0x00, + 0x87, 0x00, 0x87, 0x00, 0x89, 0x00, 0x89, 0x00, 0x87, 0x00, 0x87, 0x00, + 0x89, 0x00, 0x8a, 0x00, 0x87, 0x00, 0x87, 0x00, 0x88, 0x00, 0x87, 0x00, + 0x86, 0x00, 0x88, 0x00, 0x88, 0x00, 0x86, 0x00, 0x87, 0x00, 0x87, 0x00, + 0x84, 0x00, 0x84, 0x00, 0x84, 0x00, 0x82, 0x00, 0x81, 0x00, 0x84, 0x00, + 0x81, 0x00, 0x7f, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x7c, 0x00, + 0x79, 0x00, 0x78, 0x00, 0x76, 0x00, 0x77, 0x00, 0x73, 0x00, 0x74, 0x00, + 0x70, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x6d, 0x00, 0x66, 0x00, 0x69, 0x00, + 0x67, 0x00, 0x66, 0x00, 0x5f, 0x00, 0x61, 0x00, 0x5c, 0x00, 0x5c, 0x00, + 0x59, 0x00, 0x59, 0x00, 0x53, 0x00, 0x55, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x4a, 0x00, 0x4c, 0x00, 0x47, 0x00, 0x47, 0x00, 0x43, 0x00, 0x43, 0x00, + 0x3d, 0x00, 0x3e, 0x00, 0x3a, 0x00, 0x39, 0x00, 0x33, 0x00, 0x36, 0x00, + 0x31, 0x00, 0x30, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x28, 0x00, 0x29, 0x00, + 0x24, 0x00, 0x23, 0x00, 0x20, 0x00, 0x22, 0x00, 0x1b, 0x00, 0x1a, 0x00, + 0x18, 0x00, 0x19, 0x00, 0x14, 0x00, 0x13, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xf4, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xdf, 0xff, 0xe0, 0xff, 0xdb, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xd8, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xcf, 0xff, 0xcc, 0xff, 0xcc, 0xff, + 0xc5, 0xff, 0xc5, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xbc, 0xff, 0xbc, 0xff, + 0xba, 0xff, 0xb8, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xb0, 0xff, 0xae, 0xff, + 0xa8, 0xff, 0xab, 0xff, 0xa8, 0xff, 0xa3, 0xff, 0xa1, 0xff, 0xa2, 0xff, + 0x9c, 0xff, 0x9b, 0xff, 0x98, 0xff, 0x96, 0xff, 0x94, 0xff, 0x96, 0xff, + 0x90, 0xff, 0x8b, 0xff, 0x8c, 0xff, 0x8e, 0xff, 0x87, 0xff, 0x85, 0xff, + 0x85, 0xff, 0x83, 0xff, 0x80, 0xff, 0x80, 0xff, 0x7d, 0xff, 0x7c, 0xff, + 0x7b, 0xff, 0x7a, 0xff, 0x77, 0xff, 0x78, 0xff, 0x78, 0xff, 0x74, 0xff, + 0x73, 0xff, 0x73, 0xff, 0x73, 0xff, 0x73, 0xff, 0x6f, 0xff, 0x6f, 0xff, + 0x72, 0xff, 0x71, 0xff, 0x6f, 0xff, 0x6f, 0xff, 0x6f, 0xff, 0x6e, 0xff, + 0x70, 0xff, 0x72, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x72, 0xff, 0x70, 0xff, + 0x6f, 0xff, 0x72, 0xff, 0x74, 0xff, 0x70, 0xff, 0x73, 0xff, 0x76, 0xff, + 0x75, 0xff, 0x74, 0xff, 0x78, 0xff, 0x78, 0xff, 0x78, 0xff, 0x79, 0xff, + 0x7b, 0xff, 0x7a, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x7d, 0xff, + 0x83, 0xff, 0x82, 0xff, 0x83, 0xff, 0x83, 0xff, 0x88, 0xff, 0x87, 0xff, + 0x89, 0xff, 0x89, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x8e, 0xff, 0x8f, 0xff, + 0x91, 0xff, 0x91, 0xff, 0x95, 0xff, 0x94, 0xff, 0x95, 0xff, 0x96, 0xff, + 0x99, 0xff, 0x98, 0xff, 0x9a, 0xff, 0x9b, 0xff, 0x9e, 0xff, 0x9e, 0xff, + 0x9f, 0xff, 0x9f, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0xa4, 0xff, 0xa4, 0xff, + 0xa7, 0xff, 0xa7, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xae, 0xff, 0xae, 0xff, + 0xae, 0xff, 0xaf, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xb3, 0xff, + 0xb7, 0xff, 0xb7, 0xff, 0xb8, 0xff, 0xbb, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xbf, 0xff, 0xc1, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc6, 0xff, + 0xca, 0xff, 0xca, 0xff, 0xcc, 0xff, 0xd0, 0xff, 0xd3, 0xff, 0xd2, 0xff, + 0xd4, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xda, 0xff, 0xe0, 0xff, 0xe0, 0xff, + 0xe3, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xfb, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x13, 0x00, 0x13, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0x23, 0x00, 0x24, 0x00, 0x28, 0x00, 0x27, 0x00, + 0x2d, 0x00, 0x2c, 0x00, 0x30, 0x00, 0x30, 0x00, 0x35, 0x00, 0x34, 0x00, + 0x38, 0x00, 0x3a, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x41, 0x00, 0x3f, 0x00, + 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x4c, 0x00, 0x4a, 0x00, + 0x4d, 0x00, 0x4e, 0x00, 0x52, 0x00, 0x51, 0x00, 0x53, 0x00, 0x53, 0x00, + 0x56, 0x00, 0x55, 0x00, 0x57, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x58, 0x00, + 0x5e, 0x00, 0x5e, 0x00, 0x60, 0x00, 0x5f, 0x00, 0x62, 0x00, 0x61, 0x00, + 0x63, 0x00, 0x64, 0x00, 0x66, 0x00, 0x64, 0x00, 0x68, 0x00, 0x69, 0x00, + 0x6a, 0x00, 0x68, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6b, 0x00, + 0x6f, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x73, 0x00, 0x72, 0x00, + 0x73, 0x00, 0x74, 0x00, 0x77, 0x00, 0x74, 0x00, 0x78, 0x00, 0x7a, 0x00, + 0x7c, 0x00, 0x7a, 0x00, 0x7d, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7e, 0x00, + 0x80, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x80, 0x00, 0x84, 0x00, 0x83, 0x00, + 0x83, 0x00, 0x82, 0x00, 0x84, 0x00, 0x86, 0x00, 0x88, 0x00, 0x86, 0x00, + 0x87, 0x00, 0x86, 0x00, 0x87, 0x00, 0x87, 0x00, 0x89, 0x00, 0x88, 0x00, + 0x88, 0x00, 0x87, 0x00, 0x89, 0x00, 0x88, 0x00, 0x87, 0x00, 0x87, 0x00, + 0x89, 0x00, 0x87, 0x00, 0x87, 0x00, 0x87, 0x00, 0x86, 0x00, 0x85, 0x00, + 0x85, 0x00, 0x85, 0x00, 0x83, 0x00, 0x81, 0x00, 0x82, 0x00, 0x81, 0x00, + 0x7d, 0x00, 0x7d, 0x00, 0x7b, 0x00, 0x7d, 0x00, 0x79, 0x00, 0x78, 0x00, + 0x74, 0x00, 0x75, 0x00, 0x72, 0x00, 0x73, 0x00, 0x6e, 0x00, 0x6d, 0x00, + 0x6c, 0x00, 0x6d, 0x00, 0x67, 0x00, 0x64, 0x00, 0x61, 0x00, 0x64, 0x00, + 0x5e, 0x00, 0x5e, 0x00, 0x59, 0x00, 0x58, 0x00, 0x52, 0x00, 0x55, 0x00, + 0x51, 0x00, 0x4e, 0x00, 0x49, 0x00, 0x4c, 0x00, 0x47, 0x00, 0x46, 0x00, + 0x42, 0x00, 0x41, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x36, 0x00, 0x37, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x2b, 0x00, 0x2b, 0x00, + 0x26, 0x00, 0x27, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1e, 0x00, 0x1f, 0x00, + 0x1a, 0x00, 0x19, 0x00, 0x15, 0x00, 0x16, 0x00, 0x13, 0x00, 0x12, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfd, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xee, 0xff, 0xeb, 0xff, 0xea, 0xff, + 0xe9, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xe1, 0xff, + 0xde, 0xff, 0xde, 0xff, 0xdb, 0xff, 0xda, 0xff, 0xd7, 0xff, 0xd6, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xcf, 0xff, 0xca, 0xff, 0xc9, 0xff, + 0xc7, 0xff, 0xc9, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xbf, 0xff, 0xbe, 0xff, + 0xbb, 0xff, 0xbb, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb3, 0xff, 0xb3, 0xff, + 0xae, 0xff, 0xaf, 0xff, 0xab, 0xff, 0xab, 0xff, 0xa7, 0xff, 0xa6, 0xff, + 0xa2, 0xff, 0xa3, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0x9a, 0xff, 0x9b, 0xff, + 0x98, 0xff, 0x98, 0xff, 0x94, 0xff, 0x93, 0xff, 0x91, 0xff, 0x91, 0xff, + 0x8f, 0xff, 0x8e, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x88, 0xff, 0x89, 0xff, + 0x87, 0xff, 0x87, 0xff, 0x85, 0xff, 0x85, 0xff, 0x84, 0xff, 0x82, 0xff, + 0x82, 0xff, 0x82, 0xff, 0x82, 0xff, 0x80, 0xff, 0x7f, 0xff, 0x81, 0xff, + 0x7f, 0xff, 0x7e, 0xff, 0x7d, 0xff, 0x7f, 0xff, 0x80, 0xff, 0x7e, 0xff, + 0x7e, 0xff, 0x7e, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x7e, 0xff, 0x7d, 0xff, + 0x81, 0xff, 0x82, 0xff, 0x80, 0xff, 0x80, 0xff, 0x81, 0xff, 0x82, 0xff, + 0x84, 0xff, 0x82, 0xff, 0x83, 0xff, 0x85, 0xff, 0x87, 0xff, 0x85, 0xff, + 0x88, 0xff, 0x89, 0xff, 0x89, 0xff, 0x88, 0xff, 0x8b, 0xff, 0x8b, 0xff, + 0x8c, 0xff, 0x8d, 0xff, 0x8c, 0xff, 0x8e, 0xff, 0x92, 0xff, 0x8f, 0xff, + 0x8f, 0xff, 0x91, 0xff, 0x94, 0xff, 0x91, 0xff, 0x94, 0xff, 0x95, 0xff, + 0x96, 0xff, 0x94, 0xff, 0x98, 0xff, 0x99, 0xff, 0x9a, 0xff, 0x99, 0xff, + 0x9c, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0x9d, 0xff, 0x9f, 0xff, 0xa0, 0xff, + 0xa1, 0xff, 0xa0, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xa7, 0xff, 0xa7, 0xff, + 0xa7, 0xff, 0xa6, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xae, 0xff, 0xad, 0xff, + 0xb0, 0xff, 0xb0, 0xff, 0xb4, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xb5, 0xff, + 0xba, 0xff, 0xba, 0xff, 0xbd, 0xff, 0xbc, 0xff, 0xbf, 0xff, 0xbf, 0xff, + 0xc4, 0xff, 0xc3, 0xff, 0xc8, 0xff, 0xc7, 0xff, 0xcb, 0xff, 0xcd, 0xff, + 0xd0, 0xff, 0xd0, 0xff, 0xd5, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xda, 0xff, + 0xdd, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe5, 0xff, 0xe7, 0xff, + 0xee, 0xff, 0xed, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf7, 0xff, 0xf6, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x10, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x21, 0x00, 0x23, 0x00, + 0x2a, 0x00, 0x28, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x35, 0x00, 0x34, 0x00, 0x38, 0x00, 0x36, 0x00, 0x3b, 0x00, 0x3b, 0x00, + 0x3e, 0x00, 0x3d, 0x00, 0x42, 0x00, 0x42, 0x00, 0x44, 0x00, 0x41, 0x00, + 0x46, 0x00, 0x46, 0x00, 0x49, 0x00, 0x46, 0x00, 0x4a, 0x00, 0x4a, 0x00, + 0x4d, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x52, 0x00, 0x51, 0x00, + 0x52, 0x00, 0x50, 0x00, 0x53, 0x00, 0x52, 0x00, 0x55, 0x00, 0x54, 0x00, + 0x55, 0x00, 0x53, 0x00, 0x56, 0x00, 0x56, 0x00, 0x58, 0x00, 0x58, 0x00, + 0x58, 0x00, 0x57, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x5d, 0x00, 0x5b, 0x00, + 0x5d, 0x00, 0x5e, 0x00, 0x60, 0x00, 0x5f, 0x00, 0x61, 0x00, 0x60, 0x00, + 0x61, 0x00, 0x61, 0x00, 0x64, 0x00, 0x64, 0x00, 0x66, 0x00, 0x64, 0x00, + 0x67, 0x00, 0x67, 0x00, 0x68, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x68, 0x00, + 0x6c, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0x6f, 0x00, 0x6e, 0x00, + 0x71, 0x00, 0x72, 0x00, 0x72, 0x00, 0x71, 0x00, 0x75, 0x00, 0x75, 0x00, + 0x76, 0x00, 0x75, 0x00, 0x77, 0x00, 0x76, 0x00, 0x78, 0x00, 0x78, 0x00, + 0x78, 0x00, 0x77, 0x00, 0x7c, 0x00, 0x7b, 0x00, 0x7a, 0x00, 0x7b, 0x00, + 0x7d, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0x7c, 0x00, 0x7c, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x79, 0x00, + 0x77, 0x00, 0x77, 0x00, 0x76, 0x00, 0x76, 0x00, 0x74, 0x00, 0x74, 0x00, + 0x72, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x70, 0x00, + 0x6b, 0x00, 0x6a, 0x00, 0x65, 0x00, 0x67, 0x00, 0x65, 0x00, 0x65, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x58, 0x00, 0x58, 0x00, + 0x56, 0x00, 0x55, 0x00, 0x51, 0x00, 0x51, 0x00, 0x4e, 0x00, 0x4d, 0x00, + 0x49, 0x00, 0x4b, 0x00, 0x46, 0x00, 0x45, 0x00, 0x41, 0x00, 0x41, 0x00, + 0x3c, 0x00, 0x3d, 0x00, 0x3a, 0x00, 0x39, 0x00, 0x33, 0x00, 0x34, 0x00, + 0x31, 0x00, 0x30, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x27, 0x00, 0x26, 0x00, + 0x24, 0x00, 0x26, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1d, 0x00, 0x1d, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x15, 0x00, 0x16, 0x00, 0x14, 0x00, 0x15, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x0a, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0xf1, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xef, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xe6, 0xff, 0xe7, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xde, 0xff, 0xde, 0xff, + 0xdc, 0xff, 0xdb, 0xff, 0xd7, 0xff, 0xd6, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xcf, 0xff, 0xd0, 0xff, 0xc9, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xc6, 0xff, + 0xc2, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xbb, 0xff, + 0xb6, 0xff, 0xb5, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xaf, 0xff, 0xb0, 0xff, + 0xaa, 0xff, 0xa9, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0xa4, 0xff, 0xa3, 0xff, + 0xa1, 0xff, 0xa0, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0x9b, 0xff, 0x9b, 0xff, + 0x98, 0xff, 0x97, 0xff, 0x95, 0xff, 0x96, 0xff, 0x94, 0xff, 0x93, 0xff, + 0x92, 0xff, 0x91, 0xff, 0x8e, 0xff, 0x90, 0xff, 0x8e, 0xff, 0x8c, 0xff, + 0x8d, 0xff, 0x8e, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x8a, 0xff, 0x8b, 0xff, + 0x8b, 0xff, 0x8b, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x8c, 0xff, 0x8c, 0xff, + 0x8a, 0xff, 0x8b, 0xff, 0x8e, 0xff, 0x8c, 0xff, 0x8b, 0xff, 0x8d, 0xff, + 0x8e, 0xff, 0x8b, 0xff, 0x8f, 0xff, 0x90, 0xff, 0x8f, 0xff, 0x8d, 0xff, + 0x92, 0xff, 0x93, 0xff, 0x92, 0xff, 0x92, 0xff, 0x93, 0xff, 0x94, 0xff, + 0x95, 0xff, 0x93, 0xff, 0x94, 0xff, 0x95, 0xff, 0x98, 0xff, 0x99, 0xff, + 0x98, 0xff, 0x97, 0xff, 0x9c, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x9b, 0xff, + 0x9d, 0xff, 0x9c, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0x9c, 0xff, + 0xa1, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0xa0, 0xff, + 0xa3, 0xff, 0xa4, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xa6, 0xff, 0xa5, 0xff, + 0xa5, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xa9, 0xff, 0xa7, 0xff, + 0xa8, 0xff, 0xab, 0xff, 0xac, 0xff, 0xab, 0xff, 0xaa, 0xff, 0xac, 0xff, + 0xae, 0xff, 0xae, 0xff, 0xad, 0xff, 0xaf, 0xff, 0xb2, 0xff, 0xb2, 0xff, + 0xb3, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xb8, 0xff, 0xb9, 0xff, + 0xbb, 0xff, 0xbb, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xc0, 0xff, 0xc0, 0xff, + 0xc3, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xc7, 0xff, 0xcc, 0xff, 0xcd, 0xff, + 0xd0, 0xff, 0xcf, 0xff, 0xd3, 0xff, 0xd5, 0xff, 0xd8, 0xff, 0xd7, 0xff, + 0xdc, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xe7, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xfc, 0xff, 0xfa, 0xff, 0xff, 0xff, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x15, 0x00, 0x14, 0x00, + 0x18, 0x00, 0x19, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x21, 0x00, 0x20, 0x00, + 0x23, 0x00, 0x24, 0x00, 0x2c, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x2c, 0x00, + 0x32, 0x00, 0x31, 0x00, 0x34, 0x00, 0x33, 0x00, 0x37, 0x00, 0x37, 0x00, + 0x3c, 0x00, 0x3b, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x41, 0x00, 0x40, 0x00, + 0x42, 0x00, 0x41, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x47, 0x00, + 0x48, 0x00, 0x49, 0x00, 0x4e, 0x00, 0x4c, 0x00, 0x4b, 0x00, 0x4e, 0x00, + 0x50, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x53, 0x00, 0x52, 0x00, + 0x53, 0x00, 0x54, 0x00, 0x56, 0x00, 0x56, 0x00, 0x58, 0x00, 0x57, 0x00, + 0x59, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5c, 0x00, + 0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x61, 0x00, 0x60, 0x00, + 0x61, 0x00, 0x65, 0x00, 0x63, 0x00, 0x61, 0x00, 0x66, 0x00, 0x67, 0x00, + 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x67, 0x00, 0x6a, 0x00, 0x6b, 0x00, + 0x6b, 0x00, 0x6b, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x6f, 0x00, + 0x70, 0x00, 0x6f, 0x00, 0x71, 0x00, 0x71, 0x00, 0x70, 0x00, 0x71, 0x00, + 0x73, 0x00, 0x74, 0x00, 0x73, 0x00, 0x72, 0x00, 0x74, 0x00, 0x74, 0x00, + 0x74, 0x00, 0x75, 0x00, 0x74, 0x00, 0x73, 0x00, 0x75, 0x00, 0x76, 0x00, + 0x72, 0x00, 0x72, 0x00, 0x74, 0x00, 0x73, 0x00, 0x70, 0x00, 0x72, 0x00, + 0x72, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x6e, 0x00, 0x6c, 0x00, + 0x6c, 0x00, 0x6c, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x68, 0x00, 0x68, 0x00, + 0x67, 0x00, 0x66, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x60, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x5a, 0x00, 0x59, 0x00, 0x57, 0x00, 0x56, 0x00, + 0x55, 0x00, 0x55, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x4c, 0x00, 0x4d, 0x00, + 0x4c, 0x00, 0x4a, 0x00, 0x47, 0x00, 0x47, 0x00, 0x43, 0x00, 0x41, 0x00, + 0x3f, 0x00, 0x41, 0x00, 0x3b, 0x00, 0x39, 0x00, 0x38, 0x00, 0x3b, 0x00, + 0x35, 0x00, 0x33, 0x00, 0x32, 0x00, 0x34, 0x00, 0x30, 0x00, 0x2f, 0x00, + 0x2c, 0x00, 0x2d, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x27, 0x00, 0x28, 0x00, + 0x24, 0x00, 0x25, 0x00, 0x22, 0x00, 0x22, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x1c, 0x00, 0x1e, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x16, 0x00, 0x18, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x12, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x10, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x09, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0xfe, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xed, 0xff, 0xee, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe5, 0xff, 0xe6, 0xff, + 0xe2, 0xff, 0xe0, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xd7, 0xff, 0xd9, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0xce, 0xff, 0xcf, 0xff, 0xcb, 0xff, 0xcb, 0xff, + 0xc6, 0xff, 0xc5, 0xff, 0xc0, 0xff, 0xc1, 0xff, 0xbe, 0xff, 0xbe, 0xff, + 0xb8, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xb0, 0xff, 0xaf, 0xff, + 0xac, 0xff, 0xad, 0xff, 0xa9, 0xff, 0xa8, 0xff, 0xa4, 0xff, 0xa5, 0xff, + 0xa1, 0xff, 0xa0, 0xff, 0x9d, 0xff, 0x9f, 0xff, 0x9b, 0xff, 0x99, 0xff, + 0x9a, 0xff, 0x9a, 0xff, 0x95, 0xff, 0x94, 0xff, 0x95, 0xff, 0x93, 0xff, + 0x90, 0xff, 0x92, 0xff, 0x91, 0xff, 0x90, 0xff, 0x90, 0xff, 0x90, 0xff, + 0x8d, 0xff, 0x8d, 0xff, 0x8f, 0xff, 0x8e, 0xff, 0x8b, 0xff, 0x8c, 0xff, + 0x91, 0xff, 0x8d, 0xff, 0x8a, 0xff, 0x8c, 0xff, 0x8f, 0xff, 0x8e, 0xff, + 0x8c, 0xff, 0x8d, 0xff, 0x8f, 0xff, 0x8e, 0xff, 0x8f, 0xff, 0x91, 0xff, + 0x92, 0xff, 0x91, 0xff, 0x92, 0xff, 0x92, 0xff, 0x93, 0xff, 0x93, 0xff, + 0x95, 0xff, 0x94, 0xff, 0x95, 0xff, 0x94, 0xff, 0x97, 0xff, 0x98, 0xff, + 0x98, 0xff, 0x97, 0xff, 0x99, 0xff, 0x9b, 0xff, 0x9c, 0xff, 0x99, 0xff, + 0x9a, 0xff, 0x9c, 0xff, 0x9f, 0xff, 0x9c, 0xff, 0x9e, 0xff, 0x9e, 0xff, + 0xa1, 0xff, 0xa0, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0xa3, 0xff, 0xa3, 0xff, + 0xa4, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xa7, 0xff, 0xa8, 0xff, + 0xa7, 0xff, 0xa4, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0xa9, 0xff, + 0xab, 0xff, 0xaa, 0xff, 0xad, 0xff, 0xac, 0xff, 0xac, 0xff, 0xad, 0xff, + 0xb0, 0xff, 0xad, 0xff, 0xb0, 0xff, 0xb1, 0xff, 0xb3, 0xff, 0xb1, 0xff, + 0xb3, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xba, 0xff, 0xb7, 0xff, + 0xbb, 0xff, 0xbc, 0xff, 0xbf, 0xff, 0xbb, 0xff, 0xbf, 0xff, 0xc0, 0xff, + 0xc4, 0xff, 0xc3, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xca, 0xff, 0xca, 0xff, + 0xcc, 0xff, 0xcc, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xd4, 0xff, + 0xd9, 0xff, 0xd9, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xe1, 0xff, 0xdf, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xf0, 0xff, 0xef, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x09, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x11, 0x00, 0x10, 0x00, + 0x14, 0x00, 0x15, 0x00, 0x19, 0x00, 0x17, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x1f, 0x00, 0x1e, 0x00, 0x21, 0x00, 0x23, 0x00, 0x25, 0x00, 0x26, 0x00, + 0x28, 0x00, 0x27, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x2c, 0x00, + 0x2f, 0x00, 0x30, 0x00, 0x34, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, + 0x39, 0x00, 0x38, 0x00, 0x37, 0x00, 0x38, 0x00, 0x3d, 0x00, 0x3c, 0x00, + 0x3d, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x3f, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x43, 0x00, 0x42, 0x00, 0x46, 0x00, 0x47, 0x00, 0x47, 0x00, 0x47, 0x00, + 0x4a, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4c, 0x00, + 0x52, 0x00, 0x52, 0x00, 0x52, 0x00, 0x53, 0x00, 0x56, 0x00, 0x56, 0x00, + 0x58, 0x00, 0x58, 0x00, 0x58, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x5c, 0x00, + 0x5e, 0x00, 0x5f, 0x00, 0x62, 0x00, 0x62, 0x00, 0x64, 0x00, 0x64, 0x00, + 0x66, 0x00, 0x66, 0x00, 0x68, 0x00, 0x68, 0x00, 0x6b, 0x00, 0x6a, 0x00, + 0x6c, 0x00, 0x6d, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x70, 0x00, 0x6d, 0x00, + 0x70, 0x00, 0x73, 0x00, 0x73, 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, + 0x74, 0x00, 0x76, 0x00, 0x75, 0x00, 0x74, 0x00, 0x74, 0x00, 0x77, 0x00, + 0x74, 0x00, 0x75, 0x00, 0x73, 0x00, 0x75, 0x00, 0x74, 0x00, 0x75, 0x00, + 0x73, 0x00, 0x73, 0x00, 0x72, 0x00, 0x73, 0x00, 0x71, 0x00, 0x72, 0x00, + 0x6e, 0x00, 0x6e, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x6a, 0x00, 0x6b, 0x00, + 0x69, 0x00, 0x6a, 0x00, 0x65, 0x00, 0x65, 0x00, 0x64, 0x00, 0x65, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x59, 0x00, 0x5a, 0x00, + 0x56, 0x00, 0x57, 0x00, 0x52, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x4f, 0x00, + 0x4a, 0x00, 0x4a, 0x00, 0x48, 0x00, 0x49, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x39, 0x00, 0x3a, 0x00, + 0x39, 0x00, 0x38, 0x00, 0x33, 0x00, 0x33, 0x00, 0x30, 0x00, 0x33, 0x00, + 0x2e, 0x00, 0x2d, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x29, 0x00, 0x29, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x22, 0x00, 0x23, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x19, 0x00, 0x1a, 0x00, + 0x17, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x04, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xee, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xeb, 0xff, 0xe6, 0xff, 0xe3, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdb, 0xff, 0xd9, 0xff, + 0xd5, 0xff, 0xd5, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xce, 0xff, 0xcd, 0xff, + 0xca, 0xff, 0xcb, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xc2, 0xff, + 0xbe, 0xff, 0xbe, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xb6, 0xff, 0xb6, 0xff, + 0xb3, 0xff, 0xb3, 0xff, 0xae, 0xff, 0xae, 0xff, 0xae, 0xff, 0xae, 0xff, + 0xa9, 0xff, 0xa8, 0xff, 0xaa, 0xff, 0xa9, 0xff, 0xa6, 0xff, 0xa4, 0xff, + 0xa2, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xa1, 0xff, 0x9f, 0xff, 0x9e, 0xff, + 0x9e, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x99, 0xff, 0x9b, 0xff, + 0x9d, 0xff, 0x9b, 0xff, 0x99, 0xff, 0x99, 0xff, 0x9b, 0xff, 0x9b, 0xff, + 0x9a, 0xff, 0x98, 0xff, 0x99, 0xff, 0x99, 0xff, 0x98, 0xff, 0x99, 0xff, + 0x9a, 0xff, 0x97, 0xff, 0x99, 0xff, 0x99, 0xff, 0x9a, 0xff, 0x98, 0xff, + 0x9a, 0xff, 0x9a, 0xff, 0x9b, 0xff, 0x99, 0xff, 0x9b, 0xff, 0x9a, 0xff, + 0x9d, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0x9b, 0xff, + 0x9d, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x9c, 0xff, 0x9e, 0xff, 0x9e, 0xff, + 0xa1, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa1, 0xff, 0xa1, 0xff, + 0xa2, 0xff, 0xa1, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0xa3, 0xff, + 0xa4, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xa4, 0xff, + 0xa7, 0xff, 0xa6, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0xaa, 0xff, 0xa8, 0xff, + 0xab, 0xff, 0xaa, 0xff, 0xac, 0xff, 0xac, 0xff, 0xae, 0xff, 0xae, 0xff, + 0xb1, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb5, 0xff, 0xb4, 0xff, + 0xb7, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xb9, 0xff, 0xbf, 0xff, 0xbd, 0xff, + 0xbe, 0xff, 0xbf, 0xff, 0xc5, 0xff, 0xc3, 0xff, 0xc7, 0xff, 0xc7, 0xff, + 0xcb, 0xff, 0xc9, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xd3, 0xff, 0xd1, 0xff, + 0xd5, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xda, 0xff, 0xde, 0xff, 0xdc, 0xff, + 0xe0, 0xff, 0xe2, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xed, 0xff, 0xef, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xfc, 0xff, 0xfa, 0xff, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0f, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x14, 0x00, 0x19, 0x00, 0x18, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x22, 0x00, 0x22, 0x00, 0x24, 0x00, 0x24, 0x00, 0x26, 0x00, 0x27, 0x00, + 0x27, 0x00, 0x28, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2b, 0x00, + 0x2e, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x31, 0x00, + 0x32, 0x00, 0x32, 0x00, 0x34, 0x00, 0x35, 0x00, 0x35, 0x00, 0x34, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x3a, 0x00, + 0x3c, 0x00, 0x3b, 0x00, 0x3e, 0x00, 0x3d, 0x00, 0x3f, 0x00, 0x40, 0x00, + 0x41, 0x00, 0x40, 0x00, 0x41, 0x00, 0x43, 0x00, 0x46, 0x00, 0x46, 0x00, + 0x47, 0x00, 0x48, 0x00, 0x4a, 0x00, 0x49, 0x00, 0x4b, 0x00, 0x4a, 0x00, + 0x4e, 0x00, 0x4e, 0x00, 0x50, 0x00, 0x50, 0x00, 0x52, 0x00, 0x53, 0x00, + 0x55, 0x00, 0x53, 0x00, 0x58, 0x00, 0x58, 0x00, 0x5a, 0x00, 0x59, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x60, 0x00, 0x5d, 0x00, + 0x63, 0x00, 0x62, 0x00, 0x64, 0x00, 0x63, 0x00, 0x66, 0x00, 0x64, 0x00, + 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x68, 0x00, 0x6a, 0x00, 0x68, 0x00, + 0x6a, 0x00, 0x6a, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x6b, 0x00, 0x6b, 0x00, + 0x6a, 0x00, 0x6a, 0x00, 0x6b, 0x00, 0x6a, 0x00, 0x69, 0x00, 0x6a, 0x00, + 0x6a, 0x00, 0x6a, 0x00, 0x69, 0x00, 0x68, 0x00, 0x68, 0x00, 0x69, 0x00, + 0x65, 0x00, 0x64, 0x00, 0x66, 0x00, 0x66, 0x00, 0x62, 0x00, 0x62, 0x00, + 0x61, 0x00, 0x62, 0x00, 0x5f, 0x00, 0x5e, 0x00, 0x5b, 0x00, 0x5d, 0x00, + 0x5c, 0x00, 0x5a, 0x00, 0x56, 0x00, 0x58, 0x00, 0x54, 0x00, 0x54, 0x00, + 0x51, 0x00, 0x52, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4a, 0x00, 0x4b, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x45, 0x00, 0x44, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x40, 0x00, 0x3f, 0x00, 0x3b, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x39, 0x00, + 0x36, 0x00, 0x37, 0x00, 0x34, 0x00, 0x35, 0x00, 0x31, 0x00, 0x32, 0x00, + 0x2e, 0x00, 0x2e, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x29, 0x00, 0x28, 0x00, + 0x26, 0x00, 0x27, 0x00, 0x24, 0x00, 0x25, 0x00, 0x21, 0x00, 0x1f, 0x00, + 0x1e, 0x00, 0x21, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1b, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x13, 0x00, 0x13, 0x00, 0x12, 0x00, 0x10, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfd, 0xff, 0xfe, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xee, 0xff, 0xed, 0xff, 0xe8, 0xff, 0xe9, 0xff, + 0xe6, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xdc, 0xff, 0xdc, 0xff, + 0xd9, 0xff, 0xd9, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd1, 0xff, 0xd1, 0xff, + 0xcf, 0xff, 0xce, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xc7, 0xff, 0xc7, 0xff, + 0xc3, 0xff, 0xc2, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xba, 0xff, 0xba, 0xff, 0xb8, 0xff, 0xb9, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0xb3, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xb1, 0xff, 0xaf, 0xff, 0xad, 0xff, + 0xae, 0xff, 0xaf, 0xff, 0xab, 0xff, 0xaa, 0xff, 0xab, 0xff, 0xab, 0xff, + 0xaa, 0xff, 0xa8, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0xa8, 0xff, 0xa7, 0xff, 0xa9, 0xff, 0xa8, 0xff, 0xa7, 0xff, 0xa6, 0xff, + 0xa9, 0xff, 0xa8, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0xa7, 0xff, 0xa9, 0xff, 0xa8, 0xff, 0xa7, 0xff, 0xaa, 0xff, 0xaa, 0xff, + 0xa8, 0xff, 0xa7, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0xaa, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xa9, 0xff, 0xab, 0xff, 0xaa, 0xff, + 0xaa, 0xff, 0xac, 0xff, 0xab, 0xff, 0xac, 0xff, 0xab, 0xff, 0xaa, 0xff, + 0xab, 0xff, 0xac, 0xff, 0xab, 0xff, 0xab, 0xff, 0xac, 0xff, 0xac, 0xff, + 0xac, 0xff, 0xad, 0xff, 0xac, 0xff, 0xac, 0xff, 0xab, 0xff, 0xad, 0xff, + 0xac, 0xff, 0xab, 0xff, 0xab, 0xff, 0xab, 0xff, 0xaa, 0xff, 0xa9, 0xff, + 0xaa, 0xff, 0xac, 0xff, 0xab, 0xff, 0xaa, 0xff, 0xad, 0xff, 0xad, 0xff, + 0xac, 0xff, 0xab, 0xff, 0xae, 0xff, 0xae, 0xff, 0xad, 0xff, 0xac, 0xff, + 0xb0, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xb2, 0xff, + 0xb3, 0xff, 0xb1, 0xff, 0xb4, 0xff, 0xb5, 0xff, 0xb7, 0xff, 0xb7, 0xff, + 0xba, 0xff, 0xb8, 0xff, 0xbb, 0xff, 0xbd, 0xff, 0xbe, 0xff, 0xbd, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xc8, 0xff, 0xc7, 0xff, + 0xca, 0xff, 0xcc, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd2, 0xff, 0xd1, 0xff, + 0xd6, 0xff, 0xd5, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xdd, 0xff, + 0xe2, 0xff, 0xe1, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xeb, 0xff, 0xea, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0b, 0x00, + 0x10, 0x00, 0x11, 0x00, 0x14, 0x00, 0x13, 0x00, 0x15, 0x00, 0x16, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x1f, 0x00, + 0x22, 0x00, 0x20, 0x00, 0x22, 0x00, 0x23, 0x00, 0x26, 0x00, 0x24, 0x00, + 0x28, 0x00, 0x27, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2b, 0x00, 0x2a, 0x00, + 0x2d, 0x00, 0x2c, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x31, 0x00, + 0x33, 0x00, 0x31, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x33, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x39, 0x00, 0x39, 0x00, 0x3c, 0x00, 0x3b, 0x00, + 0x3e, 0x00, 0x3c, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x41, 0x00, 0x41, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x44, 0x00, 0x44, 0x00, 0x47, 0x00, 0x47, 0x00, + 0x49, 0x00, 0x48, 0x00, 0x4b, 0x00, 0x49, 0x00, 0x4b, 0x00, 0x4c, 0x00, + 0x50, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x50, 0x00, 0x52, 0x00, 0x53, 0x00, + 0x56, 0x00, 0x55, 0x00, 0x56, 0x00, 0x55, 0x00, 0x57, 0x00, 0x58, 0x00, + 0x59, 0x00, 0x59, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5c, 0x00, + 0x5a, 0x00, 0x5b, 0x00, 0x5f, 0x00, 0x5e, 0x00, 0x5d, 0x00, 0x5c, 0x00, + 0x5f, 0x00, 0x60, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, + 0x5f, 0x00, 0x60, 0x00, 0x5f, 0x00, 0x5d, 0x00, 0x5f, 0x00, 0x61, 0x00, + 0x5d, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5c, 0x00, 0x5c, 0x00, + 0x5a, 0x00, 0x5b, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x58, 0x00, 0x56, 0x00, + 0x57, 0x00, 0x59, 0x00, 0x54, 0x00, 0x53, 0x00, 0x54, 0x00, 0x54, 0x00, + 0x50, 0x00, 0x51, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4d, 0x00, + 0x4a, 0x00, 0x4c, 0x00, 0x4b, 0x00, 0x49, 0x00, 0x46, 0x00, 0x47, 0x00, + 0x46, 0x00, 0x45, 0x00, 0x44, 0x00, 0x43, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x40, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3a, 0x00, 0x3a, 0x00, 0x39, 0x00, 0x38, 0x00, 0x37, 0x00, 0x35, 0x00, + 0x33, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x2f, 0x00, 0x2f, 0x00, + 0x2f, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x2b, 0x00, 0x2a, 0x00, + 0x2a, 0x00, 0x2b, 0x00, 0x28, 0x00, 0x27, 0x00, 0x24, 0x00, 0x26, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x21, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x1c, 0x00, 0x1d, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfd, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xf9, 0xff, + 0xf5, 0xff, 0xf4, 0xff, 0xef, 0xff, 0xef, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xda, 0xff, 0xdb, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xd0, 0xff, 0xcf, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xc8, 0xff, 0xc7, 0xff, + 0xc5, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xbb, 0xff, 0xbb, 0xff, 0xb7, 0xff, 0xb9, 0xff, 0xb7, 0xff, 0xb4, 0xff, + 0xb3, 0xff, 0xb5, 0xff, 0xb2, 0xff, 0xb1, 0xff, 0xaf, 0xff, 0xaf, 0xff, + 0xae, 0xff, 0xaf, 0xff, 0xac, 0xff, 0xac, 0xff, 0xac, 0xff, 0xac, 0xff, + 0xa9, 0xff, 0xab, 0xff, 0xaa, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xab, 0xff, + 0xaa, 0xff, 0xa8, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0xa9, 0xff, + 0xa9, 0xff, 0xa9, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xa9, 0xff, 0xaa, 0xff, + 0xac, 0xff, 0xac, 0xff, 0xab, 0xff, 0xab, 0xff, 0xac, 0xff, 0xac, 0xff, + 0xac, 0xff, 0xad, 0xff, 0xad, 0xff, 0xab, 0xff, 0xae, 0xff, 0xb0, 0xff, + 0xae, 0xff, 0xab, 0xff, 0xb0, 0xff, 0xb1, 0xff, 0xaf, 0xff, 0xae, 0xff, + 0xb0, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xb0, 0xff, 0xb1, 0xff, 0xb0, 0xff, + 0xb1, 0xff, 0xb3, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xb2, 0xff, 0xb3, 0xff, + 0xb1, 0xff, 0xb0, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0xb2, 0xff, 0xb3, 0xff, + 0xb6, 0xff, 0xb5, 0xff, 0xb3, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xb5, 0xff, + 0xb5, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xb8, 0xff, + 0xb7, 0xff, 0xb5, 0xff, 0xb7, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb8, 0xff, + 0xba, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xbc, 0xff, 0xbd, 0xff, 0xbb, 0xff, + 0xbe, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xbe, 0xff, 0xc3, 0xff, 0xc5, 0xff, + 0xc5, 0xff, 0xc4, 0xff, 0xc6, 0xff, 0xc7, 0xff, 0xcb, 0xff, 0xcb, 0xff, + 0xcb, 0xff, 0xcb, 0xff, 0xce, 0xff, 0xcf, 0xff, 0xd1, 0xff, 0xd1, 0xff, + 0xd5, 0xff, 0xd4, 0xff, 0xd5, 0xff, 0xd6, 0xff, 0xdb, 0xff, 0xda, 0xff, + 0xdb, 0xff, 0xdc, 0xff, 0xe1, 0xff, 0xdf, 0xff, 0xe2, 0xff, 0xe1, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xed, 0xff, 0xeb, 0xff, + 0xef, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf7, 0xff, + 0xf8, 0xff, 0xf6, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x19, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1f, 0x00, + 0x21, 0x00, 0x21, 0x00, 0x24, 0x00, 0x23, 0x00, 0x24, 0x00, 0x24, 0x00, + 0x28, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x27, 0x00, 0x2b, 0x00, 0x2f, 0x00, + 0x2e, 0x00, 0x2c, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, + 0x36, 0x00, 0x34, 0x00, 0x36, 0x00, 0x38, 0x00, 0x3b, 0x00, 0x3b, 0x00, + 0x3e, 0x00, 0x3d, 0x00, 0x40, 0x00, 0x40, 0x00, 0x43, 0x00, 0x44, 0x00, + 0x46, 0x00, 0x45, 0x00, 0x49, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x4b, 0x00, + 0x4e, 0x00, 0x4d, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x52, 0x00, 0x51, 0x00, + 0x55, 0x00, 0x54, 0x00, 0x57, 0x00, 0x57, 0x00, 0x56, 0x00, 0x57, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5e, 0x00, 0x5c, 0x00, + 0x5c, 0x00, 0x5d, 0x00, 0x5f, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5d, 0x00, + 0x60, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x5e, 0x00, 0x5d, 0x00, + 0x5e, 0x00, 0x5e, 0x00, 0x5c, 0x00, 0x5a, 0x00, 0x5c, 0x00, 0x5d, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x58, 0x00, 0x57, 0x00, + 0x57, 0x00, 0x56, 0x00, 0x55, 0x00, 0x56, 0x00, 0x53, 0x00, 0x52, 0x00, + 0x52, 0x00, 0x51, 0x00, 0x4d, 0x00, 0x4f, 0x00, 0x4c, 0x00, 0x4b, 0x00, + 0x4b, 0x00, 0x4a, 0x00, 0x47, 0x00, 0x47, 0x00, 0x46, 0x00, 0x46, 0x00, + 0x42, 0x00, 0x43, 0x00, 0x42, 0x00, 0x40, 0x00, 0x3d, 0x00, 0x41, 0x00, + 0x3d, 0x00, 0x3b, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x37, 0x00, 0x35, 0x00, 0x32, 0x00, 0x35, 0x00, 0x33, 0x00, 0x32, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x2b, 0x00, 0x2d, 0x00, + 0x2c, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x29, 0x00, 0x29, 0x00, + 0x27, 0x00, 0x26, 0x00, 0x26, 0x00, 0x27, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x23, 0x00, 0x23, 0x00, 0x21, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x20, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x19, 0x00, + 0x17, 0x00, 0x18, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x07, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xf9, 0xff, + 0xf7, 0xff, 0xf9, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xed, 0xff, 0xed, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xe4, 0xff, + 0xe1, 0xff, 0xe3, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xdb, 0xff, 0xdb, 0xff, + 0xd8, 0xff, 0xd8, 0xff, 0xd5, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xd2, 0xff, + 0xcf, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xcb, 0xff, 0xcb, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xc5, 0xff, 0xc1, 0xff, 0xc1, 0xff, + 0xc3, 0xff, 0xc2, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xbc, 0xff, 0xbd, 0xff, 0xba, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xba, 0xff, + 0xb9, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb8, 0xff, 0xb7, 0xff, + 0xb6, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xb7, 0xff, + 0xb4, 0xff, 0xb3, 0xff, 0xb7, 0xff, 0xb5, 0xff, 0xb2, 0xff, 0xb4, 0xff, + 0xb5, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0xb1, 0xff, + 0xb3, 0xff, 0xb4, 0xff, 0xb1, 0xff, 0xaf, 0xff, 0xb3, 0xff, 0xb3, 0xff, + 0xb0, 0xff, 0xb1, 0xff, 0xb3, 0xff, 0xb1, 0xff, 0xb2, 0xff, 0xb4, 0xff, + 0xb0, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xb0, 0xff, 0xb0, 0xff, + 0xb1, 0xff, 0xb1, 0xff, 0xb2, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xb0, 0xff, + 0xb3, 0xff, 0xb3, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xb2, 0xff, + 0xb3, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0xb2, 0xff, 0xb5, 0xff, 0xb5, 0xff, + 0xb3, 0xff, 0xb3, 0xff, 0xb6, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb6, 0xff, + 0xb8, 0xff, 0xb7, 0xff, 0xba, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xbb, 0xff, + 0xbc, 0xff, 0xbd, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc1, 0xff, 0xc0, 0xff, + 0xc3, 0xff, 0xc3, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xc7, 0xff, + 0xcc, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xd1, 0xff, + 0xd6, 0xff, 0xd5, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xdb, 0xff, 0xdb, 0xff, + 0xde, 0xff, 0xdd, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xe4, 0xff, + 0xe7, 0xff, 0xe4, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xeb, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf7, 0xff, 0xf5, 0xff, + 0xf7, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x07, 0x00, 0x06, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, + 0x10, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x11, 0x00, 0x10, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x15, 0x00, 0x13, 0x00, 0x13, 0x00, 0x14, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x16, 0x00, 0x16, 0x00, 0x19, 0x00, 0x17, 0x00, + 0x18, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1e, 0x00, + 0x21, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x22, 0x00, + 0x25, 0x00, 0x24, 0x00, 0x26, 0x00, 0x27, 0x00, 0x2a, 0x00, 0x29, 0x00, + 0x2c, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x31, 0x00, 0x2f, 0x00, + 0x34, 0x00, 0x34, 0x00, 0x36, 0x00, 0x35, 0x00, 0x3a, 0x00, 0x39, 0x00, + 0x3b, 0x00, 0x3a, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x41, 0x00, 0x41, 0x00, + 0x42, 0x00, 0x40, 0x00, 0x46, 0x00, 0x46, 0x00, 0x47, 0x00, 0x46, 0x00, + 0x49, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x4b, 0x00, 0x4d, 0x00, 0x4d, 0x00, + 0x50, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x50, 0x00, 0x54, 0x00, 0x51, 0x00, + 0x53, 0x00, 0x54, 0x00, 0x56, 0x00, 0x54, 0x00, 0x56, 0x00, 0x55, 0x00, + 0x56, 0x00, 0x55, 0x00, 0x59, 0x00, 0x57, 0x00, 0x55, 0x00, 0x55, 0x00, + 0x57, 0x00, 0x56, 0x00, 0x56, 0x00, 0x55, 0x00, 0x56, 0x00, 0x55, 0x00, + 0x55, 0x00, 0x54, 0x00, 0x53, 0x00, 0x54, 0x00, 0x52, 0x00, 0x51, 0x00, + 0x51, 0x00, 0x52, 0x00, 0x50, 0x00, 0x4f, 0x00, 0x4d, 0x00, 0x4d, 0x00, + 0x4e, 0x00, 0x4d, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4b, 0x00, 0x49, 0x00, + 0x46, 0x00, 0x48, 0x00, 0x46, 0x00, 0x43, 0x00, 0x43, 0x00, 0x45, 0x00, + 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x3d, 0x00, 0x3d, 0x00, + 0x3e, 0x00, 0x3c, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x39, 0x00, 0x36, 0x00, + 0x34, 0x00, 0x37, 0x00, 0x34, 0x00, 0x32, 0x00, 0x34, 0x00, 0x33, 0x00, + 0x2e, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2e, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x26, 0x00, 0x27, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x23, 0x00, 0x25, 0x00, 0x21, 0x00, 0x20, 0x00, + 0x20, 0x00, 0x21, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1a, 0x00, 0x1b, 0x00, + 0x1a, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x16, 0x00, 0x15, 0x00, 0x16, 0x00, + 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x0e, 0x00, + 0x0b, 0x00, 0x09, 0x00, 0x06, 0x00, 0x08, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xfd, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xf5, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf1, 0xff, 0xf3, 0xff, + 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xed, 0xff, 0xe6, 0xff, 0xe8, 0xff, + 0xe6, 0xff, 0xe6, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xde, 0xff, 0xe0, 0xff, + 0xde, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xd8, 0xff, + 0xd5, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd1, 0xff, 0xd1, 0xff, + 0xcf, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xcd, 0xff, + 0xcb, 0xff, 0xcb, 0xff, 0xc9, 0xff, 0xcb, 0xff, 0xc9, 0xff, 0xc8, 0xff, + 0xc8, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xc6, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xc8, 0xff, 0xc6, 0xff, + 0xc5, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc5, 0xff, + 0xc5, 0xff, 0xc3, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xc2, 0xff, + 0xc4, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc3, 0xff, + 0xc4, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc3, 0xff, + 0xc0, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xc1, 0xff, + 0xbf, 0xff, 0xc0, 0xff, 0xc1, 0xff, 0xbf, 0xff, 0xbd, 0xff, 0xbf, 0xff, + 0xbd, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xbc, 0xff, 0xba, 0xff, 0xbc, 0xff, + 0xbc, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xba, 0xff, 0xba, 0xff, 0xba, 0xff, + 0xb8, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb9, 0xff, 0xba, 0xff, 0xb8, 0xff, + 0xb7, 0xff, 0xb8, 0xff, 0xb9, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0xb7, 0xff, + 0xb9, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0xb9, 0xff, 0xb8, 0xff, 0xb7, 0xff, + 0xba, 0xff, 0xba, 0xff, 0xbb, 0xff, 0xb9, 0xff, 0xbd, 0xff, 0xbe, 0xff, + 0xbd, 0xff, 0xbd, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc1, 0xff, + 0xc5, 0xff, 0xc2, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xc7, 0xff, + 0xca, 0xff, 0xca, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xd0, 0xff, 0xcf, 0xff, + 0xd5, 0xff, 0xd4, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xdc, 0xff, 0xdb, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe3, 0xff, 0xe1, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xed, 0xff, 0xeb, 0xff, + 0xf1, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf6, 0xff, 0xf3, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xff, 0xff, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x12, 0x00, 0x13, 0x00, 0x15, 0x00, 0x13, 0x00, 0x15, 0x00, 0x16, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x1b, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x21, 0x00, 0x1f, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x24, 0x00, + 0x26, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x29, 0x00, + 0x2c, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x31, 0x00, 0x2f, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x35, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, + 0x3a, 0x00, 0x39, 0x00, 0x3b, 0x00, 0x39, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3e, 0x00, 0x3d, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, + 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x42, 0x00, 0x45, 0x00, 0x45, 0x00, + 0x45, 0x00, 0x43, 0x00, 0x46, 0x00, 0x47, 0x00, 0x47, 0x00, 0x47, 0x00, + 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x49, 0x00, 0x47, 0x00, + 0x47, 0x00, 0x48, 0x00, 0x48, 0x00, 0x47, 0x00, 0x47, 0x00, 0x47, 0x00, + 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x45, 0x00, 0x43, 0x00, 0x46, 0x00, + 0x46, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x43, 0x00, 0x42, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x41, 0x00, + 0x3f, 0x00, 0x3f, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3d, 0x00, 0x3d, 0x00, + 0x3c, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3b, 0x00, 0x3a, 0x00, 0x3b, 0x00, + 0x3a, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x39, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x37, 0x00, 0x38, 0x00, 0x37, 0x00, 0x36, 0x00, 0x35, 0x00, 0x35, 0x00, + 0x36, 0x00, 0x34, 0x00, 0x33, 0x00, 0x34, 0x00, 0x33, 0x00, 0x32, 0x00, + 0x31, 0x00, 0x32, 0x00, 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 0x2f, 0x00, + 0x2f, 0x00, 0x31, 0x00, 0x2f, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, + 0x2c, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x29, 0x00, 0x28, 0x00, + 0x27, 0x00, 0x27, 0x00, 0x25, 0x00, 0x25, 0x00, 0x23, 0x00, 0x22, 0x00, + 0x21, 0x00, 0x21, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x19, 0x00, 0x1a, 0x00, 0x17, 0x00, 0x15, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfa, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf1, 0xff, 0xef, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xea, 0xff, 0xe8, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xdc, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xd7, 0xff, 0xd8, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xd0, 0xff, + 0xd0, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xca, 0xff, 0xca, 0xff, + 0xce, 0xff, 0xcd, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xca, 0xff, + 0xcb, 0xff, 0xc9, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xc8, 0xff, + 0xc7, 0xff, 0xc8, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xc8, 0xff, + 0xc6, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xc9, 0xff, + 0xca, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xc9, 0xff, + 0xcb, 0xff, 0xc9, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xc9, 0xff, 0xc8, 0xff, + 0xc7, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc8, 0xff, + 0xc8, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xc7, 0xff, 0xc6, 0xff, + 0xc7, 0xff, 0xc6, 0xff, 0xc5, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc4, 0xff, + 0xc4, 0xff, 0xc6, 0xff, 0xc5, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc3, 0xff, + 0xc4, 0xff, 0xc3, 0xff, 0xc2, 0xff, 0xc0, 0xff, 0xc2, 0xff, 0xc4, 0xff, + 0xc2, 0xff, 0xc1, 0xff, 0xc5, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0xc1, 0xff, + 0xc2, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc2, 0xff, 0xc1, 0xff, 0xc3, 0xff, + 0xc2, 0xff, 0xc1, 0xff, 0xc2, 0xff, 0xc3, 0xff, 0xc5, 0xff, 0xc3, 0xff, + 0xc3, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xc6, 0xff, + 0xc8, 0xff, 0xc7, 0xff, 0xca, 0xff, 0xca, 0xff, 0xca, 0xff, 0xc9, 0xff, + 0xcd, 0xff, 0xce, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xd0, 0xff, + 0xd3, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd8, 0xff, 0xd7, 0xff, + 0xd8, 0xff, 0xd7, 0xff, 0xdb, 0xff, 0xda, 0xff, 0xdd, 0xff, 0xdc, 0xff, + 0xdf, 0xff, 0xdf, 0xff, 0xe3, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe3, 0xff, + 0xe6, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe9, 0xff, 0xe9, 0xff, + 0xeb, 0xff, 0xe9, 0xff, 0xec, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, + 0xf1, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfa, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x02, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x11, 0x00, 0x10, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x1d, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x22, 0x00, 0x21, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x26, 0x00, 0x26, 0x00, 0x2a, 0x00, 0x2a, 0x00, + 0x2d, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x32, 0x00, 0x31, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x37, 0x00, 0x36, 0x00, 0x37, 0x00, 0x39, 0x00, + 0x3b, 0x00, 0x3a, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x3e, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x42, 0x00, 0x41, 0x00, + 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x46, 0x00, + 0x47, 0x00, 0x45, 0x00, 0x45, 0x00, 0x48, 0x00, 0x48, 0x00, 0x44, 0x00, + 0x45, 0x00, 0x48, 0x00, 0x46, 0x00, 0x44, 0x00, 0x46, 0x00, 0x46, 0x00, + 0x43, 0x00, 0x44, 0x00, 0x43, 0x00, 0x43, 0x00, 0x43, 0x00, 0x41, 0x00, + 0x40, 0x00, 0x42, 0x00, 0x40, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x40, 0x00, + 0x3c, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3b, 0x00, 0x3b, 0x00, + 0x39, 0x00, 0x3a, 0x00, 0x39, 0x00, 0x38, 0x00, 0x36, 0x00, 0x38, 0x00, + 0x37, 0x00, 0x34, 0x00, 0x35, 0x00, 0x37, 0x00, 0x35, 0x00, 0x33, 0x00, + 0x34, 0x00, 0x33, 0x00, 0x33, 0x00, 0x32, 0x00, 0x33, 0x00, 0x32, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x32, 0x00, 0x31, 0x00, 0x2f, 0x00, 0x2e, 0x00, + 0x2f, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x2c, 0x00, 0x2e, 0x00, + 0x2d, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2c, 0x00, + 0x2b, 0x00, 0x2c, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2b, 0x00, + 0x29, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x27, 0x00, + 0x27, 0x00, 0x28, 0x00, 0x27, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, + 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x22, 0x00, 0x20, 0x00, 0x21, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1c, 0x00, 0x19, 0x00, 0x1b, 0x00, + 0x1a, 0x00, 0x18, 0x00, 0x15, 0x00, 0x16, 0x00, 0x13, 0x00, 0x12, 0x00, + 0x10, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x0b, 0x00, 0x09, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfb, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xf1, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xec, 0xff, 0xe9, 0xff, 0xea, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe3, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xdd, 0xff, 0xdd, 0xff, + 0xdc, 0xff, 0xdd, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xda, 0xff, + 0xd7, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xd4, 0xff, 0xd4, 0xff, + 0xd6, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xd3, 0xff, + 0xd2, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xd2, 0xff, + 0xd1, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xce, 0xff, + 0xcd, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xca, 0xff, + 0xca, 0xff, 0xcc, 0xff, 0xcb, 0xff, 0xca, 0xff, 0xca, 0xff, 0xca, 0xff, + 0xc8, 0xff, 0xc7, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xc7, 0xff, 0xc6, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xc5, 0xff, + 0xc4, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc3, 0xff, + 0xc3, 0xff, 0xc1, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc1, 0xff, 0xc1, 0xff, + 0xc2, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xbf, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc2, 0xff, 0xc3, 0xff, + 0xc2, 0xff, 0xc1, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc3, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xca, 0xff, 0xc8, 0xff, + 0xc8, 0xff, 0xca, 0xff, 0xcc, 0xff, 0xcb, 0xff, 0xcd, 0xff, 0xcc, 0xff, + 0xce, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xcf, 0xff, 0xd4, 0xff, 0xd5, 0xff, + 0xd4, 0xff, 0xd3, 0xff, 0xd8, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd8, 0xff, + 0xdd, 0xff, 0xdc, 0xff, 0xdd, 0xff, 0xdf, 0xff, 0xe0, 0xff, 0xdf, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe7, 0xff, 0xe5, 0xff, + 0xe6, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xec, 0xff, 0xeb, 0xff, + 0xec, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xf0, 0xff, + 0xf2, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xf5, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf8, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x0b, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x17, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x1b, 0x00, + 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x22, 0x00, 0x22, 0x00, + 0x25, 0x00, 0x24, 0x00, 0x27, 0x00, 0x27, 0x00, 0x2a, 0x00, 0x2a, 0x00, + 0x2c, 0x00, 0x2b, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x36, 0x00, 0x36, 0x00, 0x35, 0x00, 0x36, 0x00, + 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x39, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, + 0x40, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3f, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x3f, 0x00, + 0x3f, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3f, 0x00, + 0x3c, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3b, 0x00, 0x3b, 0x00, + 0x3c, 0x00, 0x3b, 0x00, 0x39, 0x00, 0x39, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x38, 0x00, 0x39, 0x00, 0x36, 0x00, 0x37, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x35, 0x00, 0x35, 0x00, 0x34, 0x00, 0x35, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x33, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x31, 0x00, 0x31, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x2f, 0x00, + 0x2e, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x2c, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2b, 0x00, 0x2a, 0x00, + 0x29, 0x00, 0x2b, 0x00, 0x29, 0x00, 0x27, 0x00, 0x27, 0x00, 0x29, 0x00, + 0x27, 0x00, 0x26, 0x00, 0x24, 0x00, 0x25, 0x00, 0x24, 0x00, 0x24, 0x00, + 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x18, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x14, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfc, 0xff, + 0xf9, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xf4, 0xff, + 0xf1, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xed, 0xff, 0xf0, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xea, 0xff, + 0xe9, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0xe5, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe4, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe2, 0xff, + 0xe2, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe1, 0xff, + 0xe0, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xe0, 0xff, + 0xdf, 0xff, 0xdf, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xde, 0xff, + 0xdd, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xdb, 0xff, + 0xdb, 0xff, 0xd9, 0xff, 0xd8, 0xff, 0xd9, 0xff, 0xda, 0xff, 0xd8, 0xff, + 0xd6, 0xff, 0xd5, 0xff, 0xd6, 0xff, 0xd7, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xd3, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd2, 0xff, 0xd1, 0xff, 0xcf, 0xff, + 0xcd, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xcb, 0xff, + 0xcb, 0xff, 0xcc, 0xff, 0xc9, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xc9, 0xff, + 0xc7, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc7, 0xff, 0xc6, 0xff, + 0xc3, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xc3, 0xff, + 0xc4, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xc3, 0xff, 0xc2, 0xff, + 0xc5, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc6, 0xff, + 0xc8, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xcb, 0xff, 0xcc, 0xff, + 0xc9, 0xff, 0xca, 0xff, 0xcf, 0xff, 0xcd, 0xff, 0xcb, 0xff, 0xce, 0xff, + 0xd1, 0xff, 0xcf, 0xff, 0xd1, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xd4, 0xff, + 0xd6, 0xff, 0xd6, 0xff, 0xd7, 0xff, 0xd9, 0xff, 0xdc, 0xff, 0xd9, 0xff, + 0xdb, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xe8, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0xf7, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfa, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x10, 0x00, 0x12, 0x00, 0x12, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x15, 0x00, 0x16, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x20, 0x00, 0x22, 0x00, 0x22, 0x00, + 0x23, 0x00, 0x25, 0x00, 0x25, 0x00, 0x23, 0x00, 0x27, 0x00, 0x29, 0x00, + 0x2b, 0x00, 0x29, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x2e, 0x00, 0x2e, 0x00, + 0x2c, 0x00, 0x2d, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2f, 0x00, 0x30, 0x00, + 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x31, 0x00, 0x33, 0x00, + 0x35, 0x00, 0x33, 0x00, 0x31, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x32, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, + 0x31, 0x00, 0x32, 0x00, 0x32, 0x00, 0x33, 0x00, 0x31, 0x00, 0x32, 0x00, + 0x32, 0x00, 0x32, 0x00, 0x31, 0x00, 0x33, 0x00, 0x2f, 0x00, 0x30, 0x00, + 0x32, 0x00, 0x32, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2f, 0x00, 0x30, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x31, 0x00, + 0x2e, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x2f, 0x00, + 0x2e, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x30, 0x00, + 0x30, 0x00, 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x2f, 0x00, 0x32, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2f, 0x00, 0x30, 0x00, + 0x30, 0x00, 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x30, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x2f, 0x00, + 0x2e, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x2d, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x29, 0x00, 0x28, 0x00, 0x28, 0x00, + 0x25, 0x00, 0x25, 0x00, 0x22, 0x00, 0x25, 0x00, 0x23, 0x00, 0x20, 0x00, + 0x1d, 0x00, 0x20, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x19, 0x00, 0x19, 0x00, + 0x17, 0x00, 0x19, 0x00, 0x15, 0x00, 0x13, 0x00, 0x10, 0x00, 0x13, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x0b, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xf6, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf1, 0xff, 0xf3, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xee, 0xff, 0xef, 0xff, 0xed, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe7, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe6, 0xff, + 0xe3, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff, + 0xe4, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe3, 0xff, 0xe1, 0xff, + 0xe3, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xe1, 0xff, + 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xdf, 0xff, + 0xde, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xd9, 0xff, + 0xd8, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xd5, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xd1, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xcd, 0xff, 0xce, 0xff, + 0xce, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xcd, 0xff, 0xcc, 0xff, + 0xcd, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xcb, 0xff, + 0xcb, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xcb, 0xff, 0xcd, 0xff, 0xcd, 0xff, + 0xcd, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xcf, 0xff, 0xcf, 0xff, + 0xd0, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd1, 0xff, 0xd2, 0xff, + 0xd1, 0xff, 0xd0, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xd7, 0xff, 0xd4, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xd9, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xd7, 0xff, + 0xdc, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xdc, 0xff, + 0xe0, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xe0, 0xff, 0xe0, 0xff, + 0xe0, 0xff, 0xe0, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xe2, 0xff, + 0xe5, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe7, 0xff, + 0xe7, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe9, 0xff, + 0xea, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xec, 0xff, + 0xec, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xee, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf4, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x10, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x13, 0x00, 0x14, 0x00, 0x16, 0x00, 0x14, 0x00, + 0x17, 0x00, 0x18, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, + 0x21, 0x00, 0x21, 0x00, 0x20, 0x00, 0x21, 0x00, 0x24, 0x00, 0x24, 0x00, + 0x25, 0x00, 0x25, 0x00, 0x27, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, + 0x2b, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x29, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x29, 0x00, 0x2c, 0x00, 0x30, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x2f, 0x00, + 0x2f, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, + 0x2d, 0x00, 0x2c, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x2c, 0x00, 0x2d, 0x00, + 0x2f, 0x00, 0x2d, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x2b, 0x00, + 0x2d, 0x00, 0x2b, 0x00, 0x29, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x29, 0x00, + 0x29, 0x00, 0x2b, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x29, 0x00, 0x28, 0x00, 0x28, 0x00, + 0x28, 0x00, 0x29, 0x00, 0x27, 0x00, 0x28, 0x00, 0x27, 0x00, 0x26, 0x00, + 0x28, 0x00, 0x2a, 0x00, 0x29, 0x00, 0x28, 0x00, 0x28, 0x00, 0x29, 0x00, + 0x27, 0x00, 0x27, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x29, 0x00, 0x29, 0x00, + 0x29, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x29, 0x00, 0x2b, 0x00, + 0x2c, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, + 0x2c, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x2b, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2b, 0x00, 0x2b, 0x00, + 0x2c, 0x00, 0x2c, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x29, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x27, 0x00, 0x27, 0x00, 0x26, 0x00, 0x25, 0x00, + 0x22, 0x00, 0x24, 0x00, 0x23, 0x00, 0x22, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x1d, 0x00, 0x1f, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1a, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x16, 0x00, 0x16, 0x00, 0x13, 0x00, 0x14, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x07, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf7, 0xff, + 0xf7, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf2, 0xff, + 0xf2, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0xef, 0xff, 0xee, 0xff, 0xef, 0xff, 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xea, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xe6, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe4, 0xff, + 0xe3, 0xff, 0xe4, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xe0, 0xff, + 0xdf, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xdc, 0xff, 0xdc, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xdb, 0xff, + 0xd6, 0xff, 0xd5, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd5, 0xff, + 0xd3, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xd2, 0xff, + 0xd3, 0xff, 0xd3, 0xff, 0xd1, 0xff, 0xd3, 0xff, 0xd1, 0xff, 0xd0, 0xff, + 0xd1, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xcf, 0xff, 0xd0, 0xff, + 0xd3, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xd2, 0xff, 0xd2, 0xff, + 0xd2, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd5, 0xff, + 0xd6, 0xff, 0xd5, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd6, 0xff, + 0xd7, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xdc, 0xff, 0xdb, 0xff, + 0xdc, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdf, 0xff, + 0xdf, 0xff, 0xdf, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xe3, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe5, 0xff, + 0xe5, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xe7, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe9, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xe8, 0xff, 0xea, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, + 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x09, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x13, 0x00, 0x12, 0x00, 0x16, 0x00, 0x15, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x1c, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1f, 0x00, 0x1f, 0x00, + 0x20, 0x00, 0x1f, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x27, 0x00, 0x27, 0x00, 0x26, 0x00, 0x25, 0x00, + 0x29, 0x00, 0x28, 0x00, 0x28, 0x00, 0x27, 0x00, 0x2a, 0x00, 0x2a, 0x00, + 0x2b, 0x00, 0x29, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x2a, 0x00, + 0x29, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x29, 0x00, + 0x27, 0x00, 0x29, 0x00, 0x29, 0x00, 0x28, 0x00, 0x26, 0x00, 0x28, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x26, 0x00, 0x28, 0x00, 0x28, 0x00, 0x27, 0x00, + 0x25, 0x00, 0x26, 0x00, 0x28, 0x00, 0x27, 0x00, 0x25, 0x00, 0x26, 0x00, + 0x27, 0x00, 0x27, 0x00, 0x25, 0x00, 0x24, 0x00, 0x27, 0x00, 0x27, 0x00, + 0x27, 0x00, 0x26, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x26, 0x00, + 0x24, 0x00, 0x25, 0x00, 0x27, 0x00, 0x26, 0x00, 0x24, 0x00, 0x25, 0x00, + 0x27, 0x00, 0x26, 0x00, 0x27, 0x00, 0x26, 0x00, 0x26, 0x00, 0x27, 0x00, + 0x27, 0x00, 0x26, 0x00, 0x26, 0x00, 0x27, 0x00, 0x27, 0x00, 0x25, 0x00, + 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x25, 0x00, 0x27, 0x00, 0x27, 0x00, + 0x26, 0x00, 0x25, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x25, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x25, 0x00, 0x24, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x22, 0x00, 0x20, 0x00, 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x1e, 0x00, 0x1d, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x1a, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x10, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xf7, 0xff, + 0xf7, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf6, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf4, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf1, 0xff, + 0xef, 0xff, 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe2, 0xff, + 0xdf, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xdd, 0xff, 0xdd, 0xff, + 0xda, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xd9, 0xff, 0xd7, 0xff, 0xd9, 0xff, + 0xd6, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd6, 0xff, 0xd3, 0xff, 0xd4, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd1, 0xff, 0xd2, 0xff, + 0xd4, 0xff, 0xd3, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xd2, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xd5, 0xff, + 0xd5, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd7, 0xff, 0xd6, 0xff, + 0xd7, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xdb, 0xff, 0xda, 0xff, + 0xdb, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xdd, 0xff, + 0xde, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe1, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe6, 0xff, 0xe5, 0xff, + 0xe5, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe9, 0xff, 0xe9, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xea, 0xff, 0xec, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xec, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xec, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xed, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xed, 0xff, 0xec, 0xff, 0xed, 0xff, 0xef, 0xff, 0xf0, 0xff, + 0xed, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf1, 0xff, + 0xef, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf3, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf6, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x1a, 0x00, 0x18, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1d, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1d, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x1f, 0x00, 0x20, 0x00, 0x1e, 0x00, 0x1d, 0x00, 0x1f, 0x00, 0x1f, 0x00, + 0x20, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x20, 0x00, + 0x20, 0x00, 0x21, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x21, 0x00, 0x22, 0x00, + 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x24, 0x00, 0x25, 0x00, 0x22, 0x00, + 0x23, 0x00, 0x26, 0x00, 0x23, 0x00, 0x23, 0x00, 0x26, 0x00, 0x25, 0x00, + 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x29, 0x00, 0x27, 0x00, + 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x28, 0x00, 0x27, 0x00, 0x27, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x2a, 0x00, + 0x28, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x2b, 0x00, + 0x29, 0x00, 0x27, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x27, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x25, 0x00, 0x25, 0x00, 0x24, 0x00, 0x26, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x22, 0x00, 0x22, 0x00, 0x20, 0x00, 0x21, 0x00, + 0x1f, 0x00, 0x1f, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0x1a, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x17, 0x00, 0x16, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x12, 0x00, 0x12, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xf7, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf5, 0xff, + 0xf3, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf2, 0xff, + 0xf1, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xef, 0xff, 0xed, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe9, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe3, 0xff, 0xe5, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xe1, 0xff, 0xe1, 0xff, + 0xdd, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xdd, 0xff, + 0xda, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xda, 0xff, 0xdb, 0xff, + 0xda, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xd8, 0xff, 0xd9, 0xff, + 0xdb, 0xff, 0xda, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xda, 0xff, 0xda, 0xff, + 0xdc, 0xff, 0xdb, 0xff, 0xd9, 0xff, 0xdb, 0xff, 0xde, 0xff, 0xdc, 0xff, + 0xdc, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdb, 0xff, 0xde, 0xff, 0xe0, 0xff, + 0xdd, 0xff, 0xdb, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xde, 0xff, 0xdd, 0xff, + 0xe1, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xe1, 0xff, 0xe2, 0xff, + 0xe1, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe1, 0xff, + 0xe3, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xe2, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xe3, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe4, 0xff, + 0xe4, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe4, 0xff, + 0xe4, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe6, 0xff, + 0xe7, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe7, 0xff, + 0xe6, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xeb, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf3, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x0d, 0x00, + 0x0d, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x13, 0x00, 0x15, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, 0x16, 0x00, + 0x15, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x17, 0x00, 0x16, 0x00, + 0x15, 0x00, 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, 0x16, 0x00, 0x16, 0x00, + 0x18, 0x00, 0x17, 0x00, 0x15, 0x00, 0x16, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x15, 0x00, 0x16, 0x00, 0x15, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x16, 0x00, 0x17, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x16, 0x00, 0x15, 0x00, 0x17, 0x00, 0x16, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x17, 0x00, 0x19, 0x00, 0x19, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1a, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1c, 0x00, + 0x1e, 0x00, 0x1b, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x22, 0x00, 0x22, 0x00, 0x20, 0x00, + 0x23, 0x00, 0x24, 0x00, 0x23, 0x00, 0x22, 0x00, 0x25, 0x00, 0x24, 0x00, + 0x25, 0x00, 0x26, 0x00, 0x24, 0x00, 0x24, 0x00, 0x29, 0x00, 0x27, 0x00, + 0x24, 0x00, 0x25, 0x00, 0x28, 0x00, 0x27, 0x00, 0x26, 0x00, 0x28, 0x00, + 0x26, 0x00, 0x24, 0x00, 0x27, 0x00, 0x28, 0x00, 0x25, 0x00, 0x25, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x24, 0x00, 0x25, 0x00, 0x24, 0x00, 0x22, 0x00, + 0x23, 0x00, 0x24, 0x00, 0x21, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x21, 0x00, + 0x20, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1c, 0x00, + 0x18, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x19, 0x00, 0x17, 0x00, 0x18, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x13, 0x00, 0x12, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x0e, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xf9, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xfa, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf6, 0xff, + 0xf3, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xee, 0xff, 0xef, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xeb, 0xff, + 0xe9, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe4, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe2, 0xff, 0xe5, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe2, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xe3, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe5, 0xff, 0xe3, 0xff, + 0xe3, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe4, 0xff, + 0xe6, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe7, 0xff, + 0xe5, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe6, 0xff, + 0xe5, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe8, 0xff, + 0xe6, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff, + 0xe4, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe6, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe1, 0xff, 0xe1, 0xff, + 0xe2, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe2, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe1, 0xff, 0xe1, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xe2, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe5, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xeb, 0xff, 0xed, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0xed, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0xf0, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf6, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x07, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x12, 0x00, 0x14, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x11, 0x00, 0x13, 0x00, 0x16, 0x00, 0x14, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x13, 0x00, 0x14, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x13, 0x00, 0x14, 0x00, 0x13, 0x00, 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, 0x15, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x19, 0x00, 0x18, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x1b, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, + 0x1f, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x1f, 0x00, + 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x1d, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x1d, 0x00, + 0x1b, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x10, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0d, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x0e, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0d, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0c, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfa, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xef, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe6, 0xff, + 0xe3, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe3, 0xff, + 0xe3, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe3, 0xff, + 0xe3, 0xff, 0xe3, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe4, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe6, 0xff, + 0xe7, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe7, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe9, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xec, 0xff, 0xea, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xe9, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe9, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe7, 0xff, + 0xe7, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe5, 0xff, + 0xe3, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe4, 0xff, + 0xe5, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe4, 0xff, + 0xe5, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xe8, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf1, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x06, 0x00, 0x05, 0x00, 0x03, 0x00, + 0x05, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x14, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x17, 0x00, 0x18, 0x00, 0x17, 0x00, 0x15, 0x00, + 0x19, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x19, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1c, 0x00, + 0x1e, 0x00, 0x1d, 0x00, 0x1f, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, + 0x20, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x20, 0x00, 0x1f, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1b, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x18, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0x00, + 0x15, 0x00, 0x16, 0x00, 0x16, 0x00, 0x17, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x14, 0x00, 0x15, 0x00, 0x13, 0x00, 0x13, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x13, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x10, 0x00, + 0x0c, 0x00, 0x0d, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0d, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0e, 0x00, + 0x0f, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x0d, 0x00, + 0x0e, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0e, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x10, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x11, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0d, 0x00, + 0x0d, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xf8, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xf4, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xf0, 0xff, + 0xf1, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xef, 0xff, 0xee, 0xff, + 0xed, 0xff, 0xed, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xeb, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xea, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe7, 0xff, + 0xe9, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe8, 0xff, + 0xe9, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe5, 0xff, + 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe5, 0xff, + 0xe2, 0xff, 0xe1, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe1, 0xff, 0xe1, 0xff, + 0xe4, 0xff, 0xe3, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0xff, + 0xe3, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xe3, 0xff, + 0xe2, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xe2, 0xff, + 0xe2, 0xff, 0xe1, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe4, 0xff, + 0xe5, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xed, 0xff, 0xed, 0xff, 0xed, 0xff, 0xed, 0xff, + 0xf0, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf0, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf6, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x12, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x16, 0x00, 0x15, 0x00, 0x16, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x16, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1c, 0x00, + 0x1e, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x1f, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x1d, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1d, 0x00, + 0x1b, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x19, 0x00, 0x19, 0x00, + 0x1a, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x18, 0x00, 0x17, 0x00, 0x1a, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x15, 0x00, 0x16, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x16, 0x00, 0x15, 0x00, 0x15, 0x00, 0x16, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x13, 0x00, 0x14, 0x00, 0x14, 0x00, 0x15, 0x00, + 0x14, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x13, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x13, 0x00, 0x14, 0x00, 0x13, 0x00, 0x14, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x11, 0x00, 0x13, 0x00, 0x15, 0x00, 0x14, 0x00, + 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, 0x12, 0x00, 0x12, 0x00, 0x11, 0x00, + 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x10, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x08, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf1, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xf1, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf0, 0xff, + 0xee, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xec, 0xff, 0xed, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xe9, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0xe5, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe3, 0xff, 0xe4, 0xff, + 0xe4, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe1, 0xff, + 0xe0, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xdf, 0xff, + 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xe0, 0xff, 0xdd, 0xff, + 0xde, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xde, 0xff, + 0xe1, 0xff, 0xe0, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdf, 0xff, + 0xe0, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe1, 0xff, + 0xe2, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe5, 0xff, 0xe3, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe8, 0xff, + 0xe8, 0xff, 0xe6, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xed, 0xff, 0xef, 0xff, 0xed, 0xff, + 0xef, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf3, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x13, 0x00, 0x14, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x15, 0x00, 0x14, 0x00, + 0x16, 0x00, 0x18, 0x00, 0x16, 0x00, 0x15, 0x00, 0x16, 0x00, 0x18, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x16, 0x00, 0x18, 0x00, + 0x1a, 0x00, 0x18, 0x00, 0x15, 0x00, 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x17, 0x00, 0x18, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x18, 0x00, 0x19, 0x00, 0x15, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x19, 0x00, 0x18, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1a, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x19, 0x00, + 0x17, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, + 0x19, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, + 0x1b, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x19, 0x00, 0x1a, 0x00, + 0x1a, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x18, 0x00, + 0x17, 0x00, 0x19, 0x00, 0x18, 0x00, 0x16, 0x00, 0x16, 0x00, 0x18, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x13, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf9, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf9, 0xff, + 0xf7, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf6, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf3, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0xf2, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf0, 0xff, + 0xee, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xed, 0xff, 0xec, 0xff, 0xeb, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xe7, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe6, 0xff, + 0xe4, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe2, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe4, 0xff, + 0xe1, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe3, 0xff, + 0xe2, 0xff, 0xdf, 0xff, 0xe2, 0xff, 0xe5, 0xff, 0xe1, 0xff, 0xe0, 0xff, + 0xe2, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe4, 0xff, + 0xe4, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe6, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xed, 0xff, 0xeb, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, + 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xed, 0xff, 0xee, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf2, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf2, 0xff, + 0xf4, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xf4, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf7, 0xff, + 0xf9, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xf9, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x02, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x07, 0x00, 0x04, 0x00, 0x05, 0x00, 0x08, 0x00, 0x09, 0x00, 0x06, 0x00, + 0x09, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x0d, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x13, 0x00, 0x12, 0x00, 0x11, 0x00, 0x12, 0x00, + 0x14, 0x00, 0x12, 0x00, 0x14, 0x00, 0x14, 0x00, 0x13, 0x00, 0x14, 0x00, + 0x16, 0x00, 0x14, 0x00, 0x13, 0x00, 0x14, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, + 0x15, 0x00, 0x13, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16, 0x00, 0x14, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, + 0x15, 0x00, 0x16, 0x00, 0x16, 0x00, 0x15, 0x00, 0x14, 0x00, 0x15, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x16, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x19, 0x00, 0x18, 0x00, 0x17, 0x00, 0x19, 0x00, 0x1a, 0x00, + 0x19, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1a, 0x00, + 0x1b, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x1b, 0x00, 0x1e, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1d, 0x00, + 0x1c, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x1b, 0x00, 0x1c, 0x00, 0x19, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x1a, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x18, 0x00, + 0x17, 0x00, 0x19, 0x00, 0x18, 0x00, 0x17, 0x00, 0x16, 0x00, 0x16, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x16, 0x00, 0x13, 0x00, 0x12, 0x00, + 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x11, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xed, 0xff, 0xef, 0xff, 0xed, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xea, 0xff, 0xec, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xea, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe8, 0xff, + 0xe5, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe6, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe5, 0xff, + 0xe4, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe4, 0xff, + 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe4, 0xff, + 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe4, 0xff, + 0xe4, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xe6, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe5, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe9, 0xff, + 0xe9, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xee, 0xff, 0xed, 0xff, 0xef, 0xff, 0xef, 0xff, 0xed, 0xff, 0xed, 0xff, + 0xf0, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xf1, 0xff, 0xee, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf2, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xf4, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x08, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, 0x12, 0x00, + 0x11, 0x00, 0x12, 0x00, 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x14, 0x00, 0x14, 0x00, 0x15, 0x00, 0x14, 0x00, + 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, 0x17, 0x00, 0x15, 0x00, 0x14, 0x00, + 0x15, 0x00, 0x17, 0x00, 0x16, 0x00, 0x16, 0x00, 0x14, 0x00, 0x15, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, + 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x18, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x17, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0x00, 0x17, 0x00, 0x19, 0x00, + 0x1a, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x19, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1a, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1a, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x18, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1c, 0x00, + 0x1a, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x1a, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x19, 0x00, 0x18, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x15, 0x00, 0x16, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x13, 0x00, 0x15, 0x00, 0x13, 0x00, 0x14, 0x00, 0x13, 0x00, 0x12, 0x00, + 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x10, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xf9, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xf8, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf6, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf2, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0xee, 0xff, 0xf0, 0xff, 0xed, 0xff, 0xed, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xeb, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe9, 0xff, + 0xe7, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xe6, 0xff, + 0xe7, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe5, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe4, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe4, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe5, 0xff, + 0xe4, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe7, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe5, 0xff, 0xe7, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xeb, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xec, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, 0xee, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xef, 0xff, 0xed, 0xff, 0xef, 0xff, 0xef, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xf0, 0xff, 0xee, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf0, 0xff, + 0xf4, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xf3, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf6, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf5, 0xff, + 0xf8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x09, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x10, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x10, 0x00, + 0x12, 0x00, 0x13, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x13, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x16, 0x00, 0x16, 0x00, 0x15, 0x00, 0x15, 0x00, 0x17, 0x00, 0x16, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x19, 0x00, 0x17, 0x00, 0x19, 0x00, 0x1a, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x1c, 0x00, + 0x1b, 0x00, 0x19, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x19, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1b, 0x00, + 0x1a, 0x00, 0x19, 0x00, 0x18, 0x00, 0x19, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x19, 0x00, 0x17, 0x00, 0x16, 0x00, 0x16, 0x00, 0x18, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x17, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x13, 0x00, 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, 0x11, 0x00, 0x13, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x0d, 0x00, 0x10, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x0c, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x07, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xf9, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0xff, + 0xf6, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0xf0, 0xff, 0xf2, 0xff, 0xef, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, 0xee, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xeb, 0xff, + 0xea, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe7, 0xff, + 0xe8, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe9, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe8, 0xff, + 0xe9, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe9, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xe9, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xea, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xed, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xed, 0xff, 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xef, 0xff, 0xee, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xee, 0xff, + 0xef, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf4, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0c, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, + 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x12, 0x00, 0x11, 0x00, 0x13, 0x00, + 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, 0x15, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x15, 0x00, 0x15, 0x00, 0x17, 0x00, + 0x16, 0x00, 0x16, 0x00, 0x14, 0x00, 0x17, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x16, 0x00, 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, 0x17, 0x00, 0x19, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x19, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x1a, 0x00, 0x19, 0x00, 0x18, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, + 0x19, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x18, 0x00, 0x19, 0x00, 0x18, 0x00, + 0x17, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x16, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x16, 0x00, 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, 0x16, 0x00, 0x16, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x16, 0x00, 0x14, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x13, 0x00, 0x12, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x13, 0x00, 0x11, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x11, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0d, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x09, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf1, 0xff, + 0xf0, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf1, 0xff, + 0xf0, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xee, 0xff, 0xec, 0xff, 0xed, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xed, 0xff, 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xec, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xec, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe9, 0xff, 0xea, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xea, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xed, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xea, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xec, 0xff, 0xec, 0xff, 0xea, 0xff, + 0xeb, 0xff, 0xec, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xeb, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xed, 0xff, 0xec, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xed, 0xff, + 0xee, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xee, 0xff, 0xef, 0xff, 0xf1, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf3, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x03, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x05, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0c, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x0f, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x11, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x11, 0x00, 0x12, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x12, 0x00, 0x12, 0x00, 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, 0x14, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x16, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, + 0x18, 0x00, 0x16, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x15, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x16, 0x00, 0x15, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x16, 0x00, 0x16, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x19, 0x00, 0x18, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x16, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x15, 0x00, 0x15, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x13, 0x00, 0x15, 0x00, 0x16, 0x00, 0x16, 0x00, 0x14, 0x00, 0x16, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x15, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x12, 0x00, 0x12, 0x00, 0x11, 0x00, 0x11, 0x00, 0x10, 0x00, 0x12, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0e, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x08, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf4, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf4, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf1, 0xff, + 0xf1, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xef, 0xff, + 0xef, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xee, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xee, 0xff, 0xef, 0xff, + 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xee, 0xff, 0xed, 0xff, 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xee, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xee, 0xff, 0xec, 0xff, + 0xe9, 0xff, 0xeb, 0xff, 0xef, 0xff, 0xed, 0xff, 0xea, 0xff, 0xec, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xee, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xee, 0xff, 0xef, 0xff, 0xee, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xee, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, + 0xee, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf0, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf1, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf9, 0xff, + 0xfb, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x09, 0x00, 0x07, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0c, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x11, 0x00, 0x0f, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x12, 0x00, 0x12, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x13, 0x00, 0x15, 0x00, 0x16, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x16, 0x00, 0x15, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x12, 0x00, 0x12, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x15, 0x00, + 0x13, 0x00, 0x11, 0x00, 0x12, 0x00, 0x12, 0x00, 0x11, 0x00, 0x12, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x12, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x0b, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0xf4, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf1, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf1, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xef, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0xef, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xef, 0xff, + 0xed, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xee, 0xff, 0xf0, 0xff, + 0xef, 0xff, 0xed, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xef, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0xee, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf1, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf2, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf4, 0xff, + 0xf4, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf5, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf7, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x09, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0b, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x11, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x10, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x10, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x10, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0c, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0c, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0e, 0x00, + 0x0c, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x0b, 0x00, 0x07, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xf6, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf7, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf6, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf7, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0xf5, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf3, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf2, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf4, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf5, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf6, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, 0x09, 0x00, 0x09, 0x00, 0x07, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, + 0x0c, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0c, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x01, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xfc, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xf9, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf9, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf7, 0xff, + 0xf7, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xf8, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x05, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfd, 0xff, + 0xff, 0xff, 0x03, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 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, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x03, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfd, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x03, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x03, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xfd, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfd, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 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, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 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, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xfd, 0xff, 0xfe, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfd, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x03, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 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, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x03, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfd, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfd, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfd, 0xff, 0x00, 0x00, 0x03, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfd, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfd, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfd, 0xff, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xfd, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xfd, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x03, 0x00, 0xff, 0xff, 0xfd, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 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, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x03, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfd, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x02, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x03, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 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, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x03, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +unsigned int med_system_alerts_melodic_01_short__TTH__wav_len = 384132; +// clang-format on + +#endif // ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_SYSTEM_ALERTS_MELODIC_01_SHORT__TTH__WAV_H_ + +} // namespace data +} // namespace audio +} // namespace resources +} // namespace applicationUtilities +} // namespace alexaClientSDK diff --git a/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_system_alerts_melodic_02._TTH_.mp3.h b/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_system_alerts_melodic_02._TTH_.mp3.h new file mode 100644 index 0000000000..6fe61d4fb4 --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_system_alerts_melodic_02._TTH_.mp3.h @@ -0,0 +1,16257 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/* + * ****************** + * ALEXA AUDIO ASSETS + * ****************** + * + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates ("Amazon"). + * All Rights Reserved. + * + * These materials are licensed to you as "Alexa Materials" under the Alexa Voice + * Service Agreement, which is currently available at + * https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/support/terms-and-agreements. + */ + +#ifndef ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_SYSTEM_ALERTS_MELODIC_02__TTH__MP3_H_ +#define ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_SYSTEM_ALERTS_MELODIC_02__TTH__MP3_H_ + +namespace alexaClientSDK { +namespace applicationUtilities { +namespace resources { +namespace audio { +namespace data { + +// clang-format off +unsigned char med_system_alerts_melodic_02__TTH__mp3[] = { + 0x49, 0x44, 0x33, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x54, 0x45, + 0x4e, 0x43, 0x00, 0x00, 0x00, 0x15, 0x20, 0x00, 0x00, 0x53, 0x6f, 0x75, + 0x6e, 0x64, 0x20, 0x47, 0x72, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x33, + 0x2e, 0x35, 0x2e, 0x36, 0x00, 0xff, 0xfb, 0xd4, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xd4, 0x40, 0x00, 0x0d, 0xf4, + 0x96, 0x5f, 0x26, 0x0b, 0x49, 0x1b, 0x72, 0x00, 0x00, 0x0d, 0x20, 0x00, + 0x00, 0x01, 0x16, 0xa1, 0x9a, 0x9c, 0x4e, 0x24, 0xcd, 0xc0, 0x00, 0x00, + 0x34, 0x80, 0x00, 0x00, 0x04, 0x40, 0x0e, 0x52, 0x22, 0x11, 0x20, 0x61, + 0xe5, 0xb3, 0x40, 0x1a, 0x43, 0xa8, 0x3a, 0xa7, 0x5d, 0x6b, 0x11, 0x9c, + 0x33, 0x87, 0x21, 0xc8, 0x72, 0x00, 0x00, 0x20, 0x08, 0x01, 0xb0, 0x4c, + 0x13, 0x0d, 0x8a, 0xc5, 0x62, 0xb1, 0x58, 0xac, 0x50, 0x28, 0x14, 0x0a, + 0x05, 0x02, 0x81, 0x40, 0xa0, 0x90, 0x36, 0x2b, 0x15, 0x8a, 0xc5, 0x62, + 0xb1, 0x58, 0xad, 0x1a, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x02, 0x04, + 0x68, 0xd1, 0xa3, 0x46, 0x8d, 0x1a, 0x34, 0x68, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x01, 0x81, 0x8b, 0x77, 0x77, 0x0e, 0x2c, 0x42, + 0x22, 0x22, 0x22, 0x20, 0xb7, 0x77, 0x77, 0x77, 0x71, 0x08, 0x88, 0x88, + 0x88, 0x8e, 0xee, 0xee, 0xee, 0xee, 0x88, 0x88, 0x88, 0x88, 0x8e, 0xee, + 0xee, 0xee, 0xee, 0x88, 0x88, 0x88, 0x88, 0x8e, 0xee, 0xee, 0xee, 0xee, + 0x88, 0x88, 0x88, 0x88, 0x8e, 0xee, 0xee, 0xee, 0xee, 0x88, 0x88, 0x88, + 0x88, 0x8e, 0xee, 0xee, 0xee, 0xee, 0x20, 0x00, 0x60, 0x38, 0x30, 0x9c, + 0xc4, 0x41, 0x12, 0xda, 0xa0, 0x05, 0x4d, 0x55, 0xcb, 0x2d, 0x67, 0x2d, + 0x65, 0xd2, 0x7d, 0x9f, 0x68, 0x7a, 0x06, 0x81, 0x81, 0xa0, 0xd0, 0x88, + 0x64, 0x64, 0x84, 0x94, 0x74, 0x74, 0x4a, 0x29, 0x2a, 0x30, 0x71, 0x66, + 0x8f, 0x8b, 0x9a, 0x44, 0x70, 0x46, 0x36, 0xa9, 0xe1, 0xc1, 0xc3, 0x24, + 0x20, 0xf8, 0x08, 0x30, 0x88, 0x7c, 0x1b, 0x09, 0x89, 0x84, 0x45, 0x08, + 0xd7, 0x8b, 0x06, 0x0c, 0x32, 0xa9, 0x72, 0x03, 0x35, 0x31, 0xe3, 0xd2, + 0x28, 0x40, 0x39, 0xf8, 0x80, 0xc1, 0x88, 0x96, 0x2c, 0x83, 0x6a, 0x63, + 0xd7, 0x46, 0x02, 0x13, 0x78, 0x20, 0x31, 0x46, 0x8b, 0x07, 0x20, 0xc9, + 0x85, 0x8f, 0x59, 0xc2, 0x01, 0x09, 0xba, 0x01, 0x03, 0x14, 0x68, 0xb0, + 0x72, 0x1d, 0x30, 0xb1, 0xeb, 0x28, 0x41, 0x02, 0x78, 0x80, 0x40, 0xc4, + 0x4b, 0x16, 0x4c, 0xcd, 0x4c, 0x2d, 0x3a, 0x28, 0x10, 0x85, 0xe1, 0x00, + 0x84, 0x24, 0xf0, 0x72, 0x71, 0x64, 0xc2, 0xd7, 0x46, 0x02, 0x10, 0xb8, + 0x20, 0x31, 0x46, 0x8b, 0x07, 0x27, 0x09, 0x85, 0x8f, 0x59, 0xc2, 0x01, + 0x0c, 0x74, 0x02, 0x06, 0x22, 0x58, 0xb0, 0x73, 0xfa, 0x61, 0x63, 0xd2, + 0x28, 0x40, 0x21, 0x9d, 0x00, 0x81, 0x88, 0x96, 0x2d, 0x31, 0x05, 0x35, + 0x14, 0xcc, 0xb8, 0xe4, 0xe0, 0xb8, 0xc9, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x60, 0x03, 0xfc, 0x1b, 0xaa, 0x41, 0x33, 0x55, 0x95, 0x83, 0xad, + 0xa4, 0xc8, 0x7e, 0x93, 0xa2, 0x28, 0xa4, 0xd3, 0xe9, 0x47, 0x19, 0xa2, + 0xa8, 0xa8, 0x7b, 0xca, 0x9d, 0x73, 0xea, 0x41, 0x3e, 0x56, 0x5b, 0x43, + 0x4f, 0xe5, 0x0c, 0x6c, 0xe9, 0xd1, 0x82, 0x67, 0xa9, 0x72, 0xc0, 0x35, + 0x64, 0xdb, 0x59, 0x6d, 0xe1, 0x7c, 0xef, 0x0d, 0x11, 0x0d, 0x52, 0x3d, + 0x67, 0x15, 0x04, 0x99, 0x0a, 0xfc, 0xbe, 0x12, 0x31, 0xe3, 0xa2, 0x92, + 0x36, 0x2b, 0x09, 0x28, 0xd4, 0x3d, 0x92, 0x27, 0x5c, 0x51, 0x26, 0x16, + 0x2a, 0x99, 0xb0, 0x64, 0x9c, 0x67, 0x8c, 0x1d, 0x4d, 0x11, 0xe1, 0x3e, + 0x3d, 0x42, 0xd8, 0x38, 0x42, 0x86, 0x61, 0x8e, 0x01, 0x33, 0x38, 0x02, + 0x70, 0x6e, 0x8b, 0x98, 0xf5, 0x04, 0xb0, 0xec, 0x17, 0x31, 0xc0, 0x5e, + 0xc2, 0x7c, 0x7d, 0x09, 0x80, 0xb6, 0x84, 0xbd, 0x76, 0x21, 0x83, 0x8c, + 0x92, 0x08, 0x81, 0x21, 0x16, 0x31, 0x26, 0x0c, 0x46, 0xc1, 0x0f, 0x21, + 0x03, 0xac, 0x3b, 0x4a, 0x21, 0x48, 0x15, 0xd0, 0xc7, 0xc8, 0x6a, 0x0b, + 0x98, 0xb4, 0x07, 0x61, 0x66, 0x2d, 0x62, 0x3c, 0x18, 0x97, 0x0d, 0x59, + 0xa0, 0x29, 0x62, 0xa8, 0xa0, 0x17, 0x81, 0xfa, 0x22, 0xed, 0x81, 0x78, + 0x75, 0x88, 0x00, 0xa1, 0x26, 0x63, 0x5c, 0x3f, 0x83, 0xf1, 0x4e, 0x17, + 0xe8, 0x60, 0x81, 0x8c, 0xe1, 0xf0, 0x2a, 0x43, 0x14, 0x4f, 0xd1, 0x01, + 0x78, 0xc6, 0x20, 0x02, 0xf4, 0x83, 0x8a, 0x20, 0xc6, 0x18, 0x07, 0x78, + 0x43, 0xe0, 0x05, 0xd8, 0xf2, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0d, 0xf9, + 0x1a, 0x67, 0xa2, 0x0b, 0xb8, 0x7b, 0x70, 0x00, 0x00, 0x0d, 0x20, 0x00, + 0x00, 0x01, 0x20, 0x2d, 0x9e, 0x90, 0x35, 0xd7, 0x80, 0x00, 0x00, 0x00, + 0x34, 0x82, 0x80, 0x00, 0x04, 0x1e, 0x81, 0x2a, 0x1b, 0x23, 0xec, 0xba, + 0x05, 0x45, 0x42, 0xe0, 0x9a, 0x8b, 0x98, 0xb5, 0x07, 0xd1, 0x28, 0x26, + 0x61, 0x57, 0x38, 0x4a, 0xcb, 0x10, 0xb0, 0x0a, 0x48, 0x82, 0x96, 0xf1, + 0xd8, 0x19, 0x8b, 0x01, 0x28, 0x32, 0x45, 0x8c, 0x3a, 0x84, 0x10, 0xd0, + 0x16, 0x70, 0xcf, 0x47, 0x84, 0xac, 0xea, 0x14, 0x80, 0xe5, 0x0f, 0xb3, + 0xac, 0x59, 0x04, 0xf1, 0x08, 0x0b, 0x84, 0xe8, 0x81, 0x88, 0x70, 0x6c, + 0x23, 0x04, 0x5c, 0x59, 0xd0, 0x70, 0x50, 0x42, 0x60, 0xb0, 0x5c, 0x02, + 0x0f, 0x17, 0x24, 0xb1, 0xbb, 0xb0, 0xf6, 0x79, 0x48, 0xd7, 0x1f, 0xf7, + 0xe9, 0xbc, 0x7c, 0x5c, 0xa7, 0x61, 0xb9, 0xe6, 0x5c, 0xce, 0x84, 0x24, + 0xd7, 0x3d, 0x0e, 0x54, 0x3c, 0xba, 0x73, 0x20, 0xcb, 0x51, 0x1b, 0x47, + 0x79, 0x7e, 0x43, 0x0b, 0xbd, 0x07, 0xf8, 0xfc, 0x3a, 0x48, 0xa2, 0xe8, + 0x3e, 0x4e, 0xb1, 0x81, 0x0c, 0xc8, 0x32, 0xd3, 0xc6, 0xa9, 0xfe, 0x5f, + 0x94, 0x04, 0xfd, 0xe1, 0xc6, 0x64, 0x29, 0x4c, 0x63, 0x90, 0xba, 0xaa, + 0xc9, 0xe3, 0x1a, 0x10, 0x58, 0xd7, 0x46, 0x29, 0xce, 0x5d, 0x96, 0x09, + 0xfa, 0xb1, 0x1e, 0x58, 0x17, 0xcb, 0xd1, 0xd0, 0x60, 0xad, 0x13, 0xc4, + 0xfa, 0x30, 0xb1, 0xae, 0x0e, 0x13, 0xac, 0xc2, 0x54, 0x97, 0xf4, 0xe2, + 0xd9, 0x78, 0x53, 0x99, 0x48, 0x41, 0x9a, 0xae, 0x2f, 0x87, 0x3b, 0x41, + 0x7b, 0x4e, 0x19, 0x27, 0x19, 0x9c, 0xad, 0x2f, 0xe7, 0x23, 0x49, 0x78, + 0x43, 0xcc, 0xa3, 0xc0, 0xd9, 0x4f, 0x1c, 0x87, 0x3b, 0x89, 0x7b, 0x43, + 0x0e, 0x94, 0x19, 0x98, 0x9d, 0x39, 0xcb, 0xe3, 0xe2, 0xf0, 0x75, 0x9a, + 0x47, 0xd1, 0x86, 0x7f, 0x21, 0x85, 0xbd, 0xe9, 0x8e, 0x74, 0x1c, 0xa8, + 0x23, 0x01, 0x12, 0x87, 0x96, 0xc6, 0xe3, 0xc0, 0xcb, 0x39, 0x8f, 0x13, + 0x7c, 0xee, 0x50, 0x16, 0xf6, 0xb3, 0xcc, 0xe0, 0x3f, 0x4f, 0x23, 0x70, + 0xed, 0x55, 0x96, 0xc5, 0xc2, 0x00, 0xe3, 0x45, 0x1c, 0x26, 0xf9, 0x9c, + 0xc8, 0x5b, 0xd4, 0xe9, 0x72, 0xf0, 0x91, 0x38, 0x8e, 0x43, 0x35, 0xcc, + 0xb6, 0x29, 0x12, 0x85, 0xed, 0x30, 0x64, 0x9c, 0xe6, 0xc3, 0x89, 0x6f, + 0x3f, 0xda, 0x4b, 0xc2, 0x4c, 0xca, 0x43, 0x0d, 0x97, 0xc5, 0xb0, 0xe4, + 0x59, 0x31, 0xd1, 0x05, 0xc5, 0x0f, 0x33, 0x18, 0x4b, 0x7a, 0x62, 0x0a, + 0x6a, 0x29, 0x99, 0x71, 0xc9, 0xc1, 0x71, 0x92, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x2b, 0x00, 0x5b, 0xca, 0x00, 0x2d, 0xd1, 0x83, 0x36, 0x20, 0x01, + 0x82, 0xa8, 0x52, 0x6f, 0xff, 0x34, 0x67, 0xab, 0x92, 0x52, 0x68, 0x8c, + 0x87, 0x7b, 0xff, 0xbc, 0xcc, 0xb3, 0xa2, 0x5b, 0x0c, 0x12, 0x30, 0xd8, + 0x75, 0xa4, 0x07, 0xd0, 0x9f, 0x10, 0x18, 0xef, 0x2f, 0xfc, 0xd1, 0x96, + 0x06, 0x2d, 0x07, 0x20, 0x18, 0xd3, 0x00, 0xc0, 0x62, 0x28, 0x13, 0xf7, + 0x74, 0x00, 0xc7, 0x28, 0x93, 0x03, 0x25, 0xa2, 0xe4, 0x0c, 0x07, 0x0b, + 0x4f, 0xd9, 0x3b, 0x81, 0x8c, 0x60, 0xb8, 0x06, 0x63, 0x05, 0x20, 0x18, + 0x73, 0x0f, 0xa0, 0x40, 0x0d, 0x01, 0x89, 0xf0, 0x4b, 0xfa, 0x16, 0x4e, + 0xe0, 0x60, 0xd0, 0x0a, 0x01, 0x82, 0x50, 0x36, 0x01, 0x40, 0x74, 0x0c, + 0x06, 0x80, 0x00, 0x30, 0x5c, 0x05, 0x00, 0xc1, 0x70, 0x14, 0xfe, 0x85, + 0x93, 0x53, 0xa0, 0x0d, 0x40, 0x78, 0x03, 0x02, 0xb0, 0x30, 0x76, 0x04, + 0xc0, 0x20, 0x09, 0x00, 0xc0, 0x14, 0x03, 0x07, 0xc0, 0x00, 0x09, 0x00, + 0xef, 0xf5, 0xb2, 0x68, 0x3a, 0x09, 0xa2, 0x06, 0x08, 0x80, 0x70, 0x05, + 0x03, 0x01, 0x63, 0x0d, 0xb0, 0x2c, 0xd8, 0x5f, 0xc1, 0x38, 0x05, 0x01, + 0x27, 0xfe, 0x9a, 0x09, 0x32, 0x68, 0xba, 0x09, 0x30, 0x36, 0xc8, 0x0c, + 0x0e, 0x00, 0x80, 0x30, 0x34, 0x01, 0x05, 0xe9, 0x2e, 0x43, 0x47, 0x10, + 0x8f, 0x06, 0x48, 0x56, 0xbf, 0xff, 0x4d, 0x17, 0x41, 0x26, 0x4d, 0x17, + 0x41, 0x4c, 0x98, 0x5b, 0x30, 0x14, 0x03, 0xe1, 0x60, 0x03, 0xdc, 0x02, + 0xc0, 0x90, 0x36, 0xe0, 0x06, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x00, 0x08, + 0x8a, 0x85, 0x2d, 0x86, 0x7e, 0xc0, 0x00, 0xba, 0x30, 0xa6, 0x15, 0xcb, + 0x58, 0x00, 0x1b, 0xbe, 0x1d, 0x1b, 0xb9, 0xfa, 0x00, 0x03, 0x7c, 0xbb, + 0x63, 0x77, 0x3f, 0x50, 0x00, 0x02, 0x80, 0x30, 0x01, 0x04, 0xf0, 0x16, + 0xc0, 0x2d, 0x80, 0xb5, 0x8a, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x06, 0xf2, 0x80, 0x08, 0x00, 0x03, 0x03, 0xc0, 0x20, 0x06, + 0x02, 0x40, 0x09, 0x00, 0xc0, 0x60, 0xa8, 0x08, 0x04, 0x00, 0x08, 0x09, + 0x01, 0x40, 0x6e, 0x78, 0x18, 0x2b, 0x01, 0xa0, 0x2c, 0x04, 0x80, 0x20, + 0x00, 0x00, 0x03, 0xc0, 0xc5, 0xa9, 0xc4, 0x03, 0x11, 0x52, 0x9f, 0xc0, + 0xf7, 0xac, 0x23, 0x03, 0xf8, 0xa6, 0x97, 0xc0, 0xf5, 0x15, 0x8e, 0x03, + 0x14, 0x27, 0xdf, 0xb8, 0x1b, 0x40, 0x36, 0xc0, 0x61, 0x74, 0x4e, 0xfe, + 0x06, 0x11, 0x02, 0xc0, 0x12, 0x17, 0x40, 0x60, 0xd0, 0x00, 0xfe, 0x06, + 0x17, 0xc1, 0xb8, 0x18, 0x81, 0x08, 0xe0, 0x10, 0x11, 0x3f, 0xf0, 0x30, + 0x94, 0x06, 0x00, 0xc5, 0x40, 0x3a, 0x03, 0x04, 0xe0, 0xac, 0x1b, 0xd0, + 0x0c, 0x20, 0x80, 0x1f, 0xff, 0x01, 0x80, 0x30, 0x06, 0x03, 0x40, 0x18, + 0x9b, 0xc4, 0x7c, 0x16, 0xc0, 0x05, 0x00, 0x27, 0xff, 0xe1, 0xed, 0x87, + 0x4e, 0x03, 0x00, 0x7c, 0x32, 0x21, 0x64, 0x14, 0x00, 0x02, 0xdd, 0xff, + 0xfe, 0x17, 0x30, 0x1c, 0x61, 0x3c, 0x2e, 0x01, 0x6c, 0x2d, 0x90, 0x41, + 0x6d, 0xff, 0xff, 0xf1, 0x5e, 0x0b, 0x28, 0x06, 0xc4, 0x0a, 0x1c, 0x40, + 0x30, 0xe5, 0xc8, 0x61, 0xe1, 0x6c, 0x22, 0xdf, 0xff, 0xff, 0xf8, 0x9d, + 0x07, 0x01, 0x70, 0x9c, 0x15, 0x43, 0x88, 0x3d, 0x41, 0x38, 0x10, 0xc1, + 0xc0, 0x1f, 0x42, 0x5c, 0x5c, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xf8, 0x9f, 0xc9, 0xc2, 0x7c, 0xa2, 0x44, 0x86, 0x60, 0x76, 0x0b, + 0xc0, 0xf5, 0x11, 0x17, 0x9b, 0x0d, 0x86, 0xc3, 0x61, 0xb1, 0xda, 0xec, + 0xee, 0x76, 0xc4, 0x91, 0x44, 0x00, 0x60, 0x68, 0x02, 0x76, 0x61, 0x7c, + 0x87, 0x56, 0x60, 0xc0, 0x03, 0x62, 0x62, 0x8d, 0xab, 0x8a, 0x60, 0x01, + 0x00, 0x30, 0x60, 0x38, 0x0d, 0x86, 0x61, 0x78, 0x82, 0x56, 0x61, 0xf0, + 0x84, 0x72, 0x70, 0xa6, 0x95, 0x5e, 0x61, 0x1d, 0x08, 0x48, 0x63, 0x88, + 0x83, 0xd4, 0x60, 0x0b, 0x81, 0x34, 0x60, 0x46, 0x80, 0x04, 0x60, 0x0f, + 0x80, 0x4e, 0x60, 0x0f, 0x01, 0x24, 0x60, 0x65, 0x81, 0x0c, 0x60, 0x2d, + 0x00, 0x04, 0xbd, 0x80, 0x62, 0x08, 0x65, 0xa0, 0x3c, 0xa0, 0x42, 0xf3, + 0x18, 0x26, 0xa1, 0x82, 0x07, 0x00, 0x85, 0xc5, 0x00, 0x02, 0xc1, 0x80, + 0x28, 0x22, 0x64, 0xd1, 0x3c, 0x3a, 0x05, 0x78, 0x5c, 0x21, 0xe1, 0x26, + 0x44, 0x17, 0x22, 0xcc, 0x3e, 0x42, 0xe0, 0xc4, 0x2a, 0x30, 0x85, 0xc0, + 0x46, 0x07, 0x2e, 0x1c, 0xa0, 0xe7, 0x91, 0x41, 0x07, 0x8e, 0x6a, 0xdc, + 0xb0, 0x4c, 0x9a, 0x9b, 0x93, 0xe6, 0x08, 0x9a, 0x8e, 0xe2, 0x70, 0xb6, + 0x44, 0x12, 0x33, 0x2e, 0xb2, 0x89, 0xe2, 0x7a, 0xe6, 0x89, 0x22, 0x6e, + 0x8b, 0xb1, 0x5c, 0xd0, 0xbe, 0x57, 0x44, 0xb8, 0x99, 0x32, 0x92, 0x69, + 0x98, 0x93, 0x36, 0xd5, 0xb5, 0xee, 0x73, 0x5a, 0xdf, 0xa4, 0x9f, 0xe9, + 0xfb, 0x29, 0x35, 0x55, 0x7a, 0x3f, 0x76, 0xff, 0xff, 0x57, 0xfb, 0xff, + 0xff, 0xd5, 0xed, 0xd3, 0xb2, 0xff, 0xff, 0xff, 0xd2, 0x64, 0xac, 0xee, + 0xb4, 0x95, 0xff, 0xff, 0xfe, 0xb4, 0xd3, 0xd2, 0x59, 0x9a, 0xbf, 0x1f, + 0x8f, 0xc7, 0xe3, 0xf3, 0xfc, 0xfd, 0x6e, 0xe5, 0x89, 0x20, 0x88, 0x00, + 0xc1, 0x16, 0x06, 0x84, 0xc3, 0xe5, 0x13, 0x2c, 0xc1, 0xfa, 0x08, 0xec, + 0xc6, 0xa9, 0x71, 0x14, 0xc0, 0x02, 0x00, 0x60, 0xc0, 0x70, 0x1b, 0x0c, + 0xc3, 0xd9, 0x06, 0x34, 0xc5, 0x11, 0x0b, 0xa4, 0xeb, 0x39, 0x37, 0x8c, + 0xc2, 0xea, 0x15, 0xa0, 0xc7, 0x11, 0x07, 0xb0, 0xc0, 0x17, 0x02, 0x68, + 0xc0, 0xbf, 0x00, 0x30, 0xc0, 0x2f, 0x00, 0xec, 0xc0, 0x2e, 0x03, 0x18, + 0xc1, 0x0f, 0x02, 0xd0, 0xc0, 0x5a, 0x00, 0x09, 0x7b, 0x00, 0x71, 0xa4, + 0x2c, 0x88, 0x0d, 0x1a, 0x0b, 0x07, 0x02, 0xc6, 0x09, 0x54, 0x06, 0x80, + 0x81, 0xea, 0x06, 0x23, 0x0c, 0x50, 0x02, 0x02, 0x00, 0x60, 0xc0, 0x14, + 0x9a, 0x27, 0x86, 0xa0, 0x84, 0x42, 0x08, 0x85, 0xd6, 0x22, 0xa1, 0x8a, + 0xc8, 0xb3, 0x12, 0xa0, 0x14, 0x03, 0x0c, 0x6a, 0x21, 0xc2, 0x3c, 0x1d, + 0x01, 0x63, 0xe1, 0x65, 0x02, 0xe3, 0x1a, 0x01, 0x85, 0xc8, 0xab, 0x26, + 0x70, 0xba, 0x51, 0x2b, 0x93, 0xe5, 0xc4, 0x51, 0x17, 0x10, 0xb8, 0x0a, + 0xc3, 0x20, 0x81, 0x99, 0x75, 0x94, 0x4f, 0x13, 0xcc, 0xa3, 0x45, 0x22, + 0x9a, 0x6e, 0x89, 0x58, 0xd0, 0xe9, 0xb3, 0x97, 0x0f, 0x90, 0x14, 0x93, + 0x4c, 0xe9, 0x76, 0xdf, 0xb3, 0xaa, 0xaa, 0x75, 0xef, 0x49, 0x3f, 0xdf, + 0xee, 0xea, 0x52, 0x1d, 0x7f, 0x76, 0x6f, 0xff, 0xea, 0xff, 0xff, 0xff, + 0xff, 0xeb, 0x7a, 0x6f, 0xff, 0xff, 0xf7, 0xd6, 0xa5, 0xee, 0xe6, 0x46, + 0x5f, 0xfd, 0x12, 0xa5, 0x83, 0xf5, 0x00, 0x00, 0x3e, 0x57, 0x1a, 0x20, + 0x03, 0x01, 0x2c, 0x0a, 0xa3, 0x02, 0xac, 0x13, 0x43, 0x01, 0x00, 0x0e, + 0xd3, 0x06, 0xd8, 0x2c, 0x13, 0x0d, 0xe8, 0x4e, 0x53, 0x27, 0xc1, 0x1f, + 0x73, 0x53, 0x59, 0x48, 0xe3, 0x15, 0x8c, 0x29, 0x43, 0x07, 0x34, 0x0c, + 0xa3, 0x01, 0xb0, 0x0f, 0x53, 0xff, 0xfb, 0xd4, 0x60, 0x17, 0x89, 0x87, + 0x62, 0x75, 0x42, 0x57, 0x7d, 0xe0, 0x00, 0x75, 0xce, 0x08, 0x12, 0xe9, + 0x14, 0x00, 0x1c, 0x8d, 0xd5, 0x06, 0x4f, 0xe9, 0x8d, 0xc1, 0x55, 0x35, + 0xe1, 0xe8, 0xd1, 0x09, 0xb9, 0x03, 0xb0, 0x13, 0x33, 0x0a, 0x40, 0x02, + 0x23, 0x04, 0x18, 0x09, 0xf3, 0x01, 0x30, 0x03, 0x30, 0x70, 0x0a, 0x2c, + 0x09, 0x61, 0xa1, 0xb4, 0x70, 0x0d, 0x2e, 0x97, 0xa2, 0x39, 0xb9, 0xc5, + 0x2e, 0xe8, 0x54, 0x35, 0x62, 0x60, 0x97, 0x9d, 0x72, 0xd3, 0xa3, 0x0b, + 0xf9, 0x6d, 0x43, 0xc9, 0x42, 0x91, 0x08, 0x50, 0x32, 0x5f, 0x53, 0x2d, + 0xd5, 0xc9, 0x56, 0xad, 0x77, 0x2e, 0x5a, 0xe1, 0x19, 0x0a, 0xe4, 0x9a, + 0xd1, 0x03, 0x51, 0xa5, 0xa3, 0xd9, 0xc5, 0xae, 0x1b, 0x33, 0x13, 0xc8, + 0x74, 0x76, 0xf7, 0xd9, 0xb6, 0x7c, 0xf7, 0xd5, 0x8e, 0xe3, 0xad, 0xbf, + 0xac, 0xb0, 0x20, 0xbf, 0xcc, 0x5b, 0x45, 0x9e, 0x0c, 0x1c, 0xc0, 0x97, + 0xc4, 0x8b, 0x03, 0xe6, 0xd2, 0x41, 0xcc, 0x6a, 0xef, 0x17, 0xde, 0xb3, + 0x06, 0xf9, 0xcc, 0xbf, 0x39, 0xa4, 0x5c, 0x5b, 0xd3, 0x19, 0xa7, 0xdf, + 0xbd, 0xe1, 0x67, 0x33, 0xea, 0x94, 0xd6, 0xad, 0xb9, 0xb5, 0xe9, 0x6c, + 0xd6, 0x26, 0x77, 0xab, 0x7c, 0xfc, 0x62, 0x98, 0xf1, 0x2d, 0x9c, 0xdf, + 0xee, 0x96, 0x8b, 0xad, 0x66, 0xbb, 0xde, 0x27, 0xd6, 0x7e, 0xe9, 0xf5, + 0x77, 0xd9, 0xd3, 0xec, 0x44, 0xac, 0x6a, 0x67, 0x52, 0xd7, 0x4d, 0xd1, + 0xa0, 0xd6, 0xb2, 0xcf, 0x3c, 0xec, 0x9a, 0xa1, 0xd0, 0xe0, 0xc4, 0x5f, + 0x57, 0x0e, 0xdb, 0x90, 0x00, 0x0b, 0x81, 0x15, 0x64, 0x8f, 0x1b, 0x1f, + 0x3c, 0x5d, 0x34, 0xb2, 0x49, 0x9c, 0x45, 0xdd, 0xd4, 0xb5, 0x73, 0x8f, + 0x91, 0xa2, 0x8f, 0x41, 0xac, 0x51, 0xcd, 0x29, 0xa4, 0x54, 0x60, 0x04, + 0xf2, 0x08, 0x30, 0xf3, 0x91, 0xc5, 0x4c, 0x47, 0x20, 0xa9, 0x4e, 0xa2, + 0xa5, 0x55, 0x3a, 0x23, 0xb5, 0xa8, 0xaa, 0x8c, 0xce, 0xe5, 0x46, 0xe6, + 0xe4, 0x49, 0x92, 0xd5, 0xb7, 0x6b, 0xe9, 0xac, 0xb2, 0x4c, 0x8c, 0xe7, + 0x55, 0x45, 0x74, 0xe9, 0x49, 0x4c, 0x88, 0x89, 0x3a, 0xa3, 0x15, 0x5d, + 0x10, 0xf2, 0xca, 0xec, 0xef, 0x5d, 0x92, 0xfc, 0x8c, 0xcd, 0xb6, 0xeb, + 0x58, 0xe1, 0x49, 0x2d, 0x63, 0x8b, 0xc5, 0x5c, 0xa2, 0x8e, 0x1d, 0x0e, + 0x0c, 0x1f, 0x13, 0x0d, 0x18, 0x24, 0x50, 0xf8, 0xf2, 0x8a, 0x88, 0x0e, + 0x85, 0x82, 0xe0, 0x10, 0x81, 0x40, 0x32, 0x30, 0x22, 0x40, 0x83, 0x30, + 0x38, 0x01, 0x1e, 0x30, 0x70, 0xc2, 0x8d, 0x30, 0xfe, 0x0f, 0xe8, 0x3b, + 0x57, 0x0c, 0x05, 0x31, 0x94, 0x82, 0xe2, 0x30, 0x7e, 0x41, 0x9b, 0x30, + 0x40, 0x41, 0x31, 0x30, 0x43, 0x81, 0x70, 0x30, 0x66, 0xc0, 0x38, 0x30, + 0x30, 0x40, 0x4d, 0x30, 0x06, 0x80, 0x12, 0x1e, 0x00, 0x15, 0x7e, 0x38, + 0xcf, 0x61, 0x99, 0xa6, 0x67, 0xc2, 0xea, 0xb5, 0x2b, 0xeb, 0x9d, 0x34, + 0xed, 0x59, 0x74, 0x75, 0x23, 0x17, 0x2a, 0xff, 0x71, 0x69, 0x2e, 0xd9, + 0xb5, 0x29, 0xa4, 0xd5, 0x24, 0xda, 0x94, 0x27, 0xc5, 0x0c, 0x2f, 0xed, + 0x52, 0x40, 0xb8, 0x67, 0x2d, 0xd4, 0x61, 0x7d, 0xb3, 0x7a, 0x98, 0x72, + 0xec, 0x07, 0x5f, 0x31, 0x92, 0x58, 0x74, 0x36, 0x41, 0xda, 0x3c, 0x8d, + 0x41, 0xcb, 0xaf, 0xd5, 0x30, 0x0b, 0x0d, 0xe2, 0x73, 0xb8, 0xc6, 0x8b, + 0x62, 0x5c, 0x98, 0x8c, 0x62, 0xac, 0xf6, 0x0d, 0x6a, 0xb3, 0x04, 0x38, + 0xf1, 0x30, 0xb0, 0xc4, 0xbc, 0xc6, 0x6c, 0xd3, 0xf5, 0xde, 0x47, 0x2d, + 0xf7, 0xdd, 0xf7, 0x2e, 0xfd, 0xf2, 0xb6, 0xca, 0xc0, 0xbf, 0xba, 0x28, + 0x66, 0xba, 0xdb, 0x2d, 0x5b, 0xe9, 0xfa, 0xb9, 0x7f, 0x65, 0x1a, 0x6e, + 0x72, 0xb4, 0x6f, 0x6f, 0xed, 0xcb, 0x16, 0xcd, 0xeb, 0x4d, 0x2d, 0xb4, + 0xfe, 0xcf, 0x7f, 0xdc, 0x9d, 0xcf, 0xfa, 0xfd, 0xe3, 0x89, 0xd9, 0xfa, + 0x42, 0xdd, 0xbd, 0xbc, 0x55, 0x46, 0x69, 0x4e, 0x3e, 0xd6, 0xbe, 0x94, + 0xa1, 0xfb, 0x51, 0x8f, 0xe5, 0xf8, 0xf5, 0x04, 0x09, 0xbe, 0x9a, 0x14, + 0xd8, 0x32, 0x6a, 0xc8, 0xda, 0x00, 0x62, 0xbd, 0x54, 0xab, 0xa4, 0xbc, + 0xe9, 0x8a, 0x2f, 0xcf, 0xd5, 0x51, 0xaa, 0xea, 0xe7, 0x59, 0x9f, 0xfb, + 0x4f, 0x98, 0xe8, 0x08, 0x5a, 0x10, 0xb4, 0x32, 0xa9, 0xcd, 0xd0, 0x33, + 0x50, 0xc1, 0x8c, 0xd4, 0x51, 0x05, 0xc8, 0xa8, 0x08, 0x63, 0x1d, 0x5d, + 0xac, 0xa4, 0x9a, 0xbd, 0x2d, 0x69, 0x51, 0xd5, 0x50, 0x8a, 0x8a, 0xcc, + 0x66, 0x54, 0xd5, 0x19, 0x2b, 0xeb, 0xb7, 0x44, 0xab, 0x7e, 0xbf, 0xff, + 0xff, 0xff, 0xfd, 0xed, 0xd2, 0x8b, 0xd1, 0x4f, 0x74, 0x0d, 0x64, 0x99, + 0xd4, 0xc2, 0x00, 0x00, 0x08, 0xaa, 0x99, 0x00, 0x03, 0x01, 0x48, 0x04, + 0xb3, 0x00, 0x4c, 0x05, 0xa3, 0x01, 0xf8, 0x09, 0x73, 0x03, 0x44, 0x10, + 0x83, 0x06, 0x78, 0x28, 0x73, 0x12, 0xbc, 0xd0, 0xe3, 0xaa, 0x45, 0x5b, + 0xd3, 0x11, 0x14, 0x26, 0x03, 0x04, 0xb8, 0x06, 0x33, 0x00, 0x64, 0x09, + 0x63, 0x03, 0x60, 0x0f, 0x53, 0x09, 0x9c, 0x0b, 0x33, 0x03, 0x0c, 0x04, + 0x82, 0x20, 0x10, 0x0b, 0xf0, 0xa5, 0xab, 0x0e, 0xa0, 0x00, 0x5e, 0xe5, + 0x6c, 0xe3, 0x59, 0xea, 0x39, 0xbb, 0x0c, 0xca, 0x5d, 0x8d, 0x97, 0xa8, + 0x30, 0xd2, 0xf6, 0xb1, 0x6a, 0x33, 0x37, 0x2d, 0xd5, 0xef, 0xc2, 0xc9, + 0x20, 0x66, 0x60, 0xce, 0xa2, 0xd0, 0x03, 0x51, 0x7f, 0x55, 0xb5, 0xb9, + 0x3f, 0xb9, 0x54, 0xc1, 0x45, 0xff, 0xfb, 0xd4, 0x60, 0x37, 0x88, 0xd7, + 0x0d, 0x6f, 0xc2, 0x53, 0xfa, 0x7b, 0x70, 0x8a, 0xae, 0x07, 0xe1, 0x60, + 0x68, 0x6e, 0x1e, 0xdd, 0xc1, 0x02, 0x4f, 0xed, 0xed, 0xc2, 0x19, 0x38, + 0x1f, 0x85, 0x83, 0x21, 0xb8, 0x9d, 0xe9, 0xcb, 0x11, 0xcb, 0xd0, 0x24, + 0x3a, 0xa3, 0x85, 0x1f, 0x22, 0xcc, 0x2f, 0x99, 0x95, 0xb4, 0x5c, 0xb9, + 0x31, 0x43, 0x93, 0x37, 0xd9, 0xc9, 0x26, 0x33, 0x5c, 0xde, 0xfa, 0xde, + 0x35, 0x00, 0xd6, 0xf4, 0xb4, 0x94, 0x9b, 0x3a, 0xad, 0xeb, 0x7b, 0x6b, + 0xfc, 0xe7, 0x56, 0xae, 0xe9, 0x06, 0x7b, 0x53, 0x3e, 0xb2, 0xe6, 0x4a, + 0x6f, 0x6b, 0xac, 0xc3, 0xfe, 0x99, 0x89, 0x4f, 0xaf, 0x8b, 0x6f, 0x78, + 0xdd, 0x37, 0x9a, 0x49, 0xf4, 0xd9, 0xad, 0xdb, 0x3b, 0x89, 0x9f, 0x4a, + 0x56, 0x90, 0xf3, 0x6a, 0xdb, 0xfa, 0xda, 0x06, 0x7e, 0x2d, 0x4f, 0xaf, + 0xf3, 0x9a, 0xfc, 0x6e, 0xdf, 0x78, 0xd5, 0xfd, 0xa9, 0xbf, 0x8d, 0xc6, + 0xae, 0xb4, 0xdf, 0x01, 0xec, 0x4b, 0xc1, 0x60, 0xce, 0x62, 0x3f, 0xc1, + 0x00, 0x19, 0x56, 0xa6, 0xf5, 0xc0, 0x95, 0x6a, 0x6a, 0xcd, 0xfa, 0x3b, + 0x36, 0xae, 0x67, 0x80, 0xca, 0xa2, 0x00, 0x18, 0x86, 0xa1, 0x55, 0xd8, + 0x8a, 0x10, 0x0a, 0xba, 0xb1, 0x98, 0x33, 0x16, 0x6a, 0x31, 0x02, 0x7a, + 0xe8, 0xc2, 0x58, 0x5f, 0x83, 0x78, 0x4d, 0x0a, 0x6a, 0x2e, 0x0f, 0x76, + 0x51, 0xb2, 0xd6, 0x69, 0xab, 0x42, 0xd6, 0x4b, 0xf4, 0xc6, 0xd6, 0xf0, + 0x32, 0x7a, 0x3e, 0xaf, 0x8a, 0xd5, 0x4b, 0x22, 0xbb, 0x78, 0x9b, 0x98, + 0x4b, 0x8a, 0x25, 0x2c, 0xba, 0x1c, 0xa3, 0xa1, 0x57, 0x48, 0xae, 0x91, + 0xc7, 0x71, 0xa5, 0xdb, 0x76, 0xac, 0xfc, 0x67, 0x3d, 0x71, 0x1d, 0x2c, + 0xf4, 0xf5, 0x34, 0xe6, 0xf0, 0x38, 0xe1, 0xb1, 0x7b, 0xa0, 0xe2, 0xa7, + 0xa8, 0x76, 0x19, 0x52, 0x3f, 0x31, 0xa0, 0x43, 0xc6, 0x83, 0x41, 0x56, + 0x13, 0x07, 0xe1, 0x00, 0x54, 0x50, 0x70, 0x80, 0x24, 0x16, 0x50, 0x98, + 0x39, 0x14, 0x18, 0x3c, 0xf2, 0x45, 0x52, 0x10, 0x00, 0xc0, 0x08, 0x01, + 0x88, 0xc0, 0x9b, 0x02, 0x74, 0xc0, 0xa0, 0x05, 0x18, 0xc1, 0x29, 0x09, + 0x34, 0xc2, 0x4a, 0x14, 0xd0, 0xc6, 0x37, 0x7c, 0x7c, 0xf6, 0x31, 0x8d, + 0xe8, 0xc7, 0x5d, 0x16, 0x04, 0xc2, 0xee, 0x0a, 0xe8, 0xc1, 0xc2, 0x06, + 0xf0, 0xc2, 0x1d, 0x06, 0x74, 0xc4, 0x1e, 0x01, 0x8c, 0xc1, 0xb0, 0x01, + 0x90, 0xc0, 0x4d, 0x00, 0x60, 0x68, 0x04, 0x84, 0x9b, 0x14, 0x0d, 0x63, + 0xc6, 0x58, 0x6e, 0x26, 0xac, 0xa2, 0x0e, 0x7c, 0x85, 0x95, 0xd2, 0xd5, + 0x5e, 0x77, 0xeb, 0xe5, 0x15, 0x01, 0x04, 0x4e, 0xd2, 0x51, 0x50, 0xbf, + 0x73, 0x94, 0xcf, 0x3f, 0x6d, 0xcd, 0x15, 0x00, 0x88, 0x80, 0x20, 0x09, + 0x3c, 0xad, 0xf0, 0x71, 0x52, 0x89, 0xef, 0x89, 0x61, 0x52, 0x79, 0x4e, + 0xea, 0xd5, 0xfa, 0x92, 0xe6, 0xe1, 0x55, 0xaa, 0x91, 0x34, 0x9e, 0x16, + 0xbb, 0x45, 0x53, 0xb0, 0xbb, 0x89, 0x97, 0xcf, 0xdc, 0x76, 0x79, 0xf7, + 0x9e, 0x1c, 0xb9, 0xfb, 0xce, 0x25, 0x5c, 0xa5, 0xfe, 0xe7, 0x87, 0x68, + 0x5a, 0x89, 0x78, 0xec, 0x66, 0x7d, 0x5f, 0x6b, 0xcd, 0x1e, 0x6f, 0x7b, + 0x39, 0x28, 0x55, 0x8c, 0x5a, 0xb4, 0x7c, 0xdf, 0xcb, 0xeb, 0xd5, 0xee, + 0xa6, 0xa6, 0x70, 0xe1, 0x16, 0x14, 0x27, 0xdb, 0xba, 0x13, 0x3d, 0xe3, + 0x38, 0x39, 0x41, 0x87, 0x1a, 0x3c, 0xf3, 0x29, 0x3b, 0xfc, 0x48, 0xf7, + 0x1b, 0x72, 0x9a, 0x24, 0x2a, 0xb0, 0x47, 0x87, 0x1e, 0xb1, 0x6b, 0x2e, + 0xb7, 0x57, 0xb1, 0xdc, 0xf6, 0xcd, 0x16, 0xf3, 0xdd, 0xdc, 0xd1, 0xae, + 0xde, 0xf6, 0x94, 0x8f, 0x56, 0xd8, 0xb0, 0xb2, 0xa9, 0xdb, 0x6f, 0x85, + 0xed, 0x58, 0x4f, 0x21, 0x27, 0xdc, 0xa3, 0xb1, 0x62, 0x68, 0x2e, 0xde, + 0xb6, 0xe4, 0x8d, 0x4c, 0xba, 0x92, 0xac, 0x4a, 0x7b, 0x3a, 0x7a, 0xb2, + 0x7e, 0x7c, 0x56, 0x92, 0xf3, 0xce, 0xce, 0x24, 0x5a, 0x70, 0x59, 0x4d, + 0x3f, 0x68, 0x94, 0x7e, 0xe2, 0x50, 0x2c, 0xe5, 0x6d, 0xdb, 0xc4, 0x35, + 0xf7, 0x74, 0xad, 0xde, 0x36, 0xad, 0xa5, 0xb6, 0x26, 0xc6, 0x19, 0x01, + 0xf9, 0x92, 0x4a, 0x51, 0xc3, 0xd2, 0x16, 0x22, 0xba, 0x87, 0xab, 0xf5, + 0xb9, 0xe2, 0xa9, 0x24, 0x64, 0x39, 0x6f, 0x57, 0xdc, 0xab, 0xbc, 0x3f, + 0xc5, 0xf0, 0xdc, 0xc2, 0x6d, 0x37, 0xee, 0xeb, 0x08, 0x44, 0xd2, 0x8f, + 0xd6, 0x46, 0x7d, 0x9b, 0xa7, 0x65, 0x17, 0xd4, 0x44, 0x2c, 0x47, 0x71, + 0x56, 0xb4, 0x39, 0xe3, 0xa8, 0x1f, 0x24, 0xaf, 0x6c, 0xef, 0x2b, 0x6e, + 0x7b, 0x20, 0xfa, 0x1e, 0x22, 0x10, 0x73, 0x6e, 0x21, 0x9b, 0x02, 0x73, + 0x10, 0xac, 0x3a, 0xbb, 0x0c, 0x92, 0x1c, 0x88, 0x02, 0x08, 0xc1, 0x00, + 0x2a, 0x1a, 0x05, 0x15, 0x00, 0x26, 0xb6, 0x40, 0x00, 0x18, 0x08, 0xa0, + 0x1d, 0x18, 0x12, 0x00, 0x31, 0x98, 0x14, 0xa0, 0x2b, 0x18, 0x22, 0x00, + 0x4e, 0x98, 0x42, 0x20, 0xbe, 0x18, 0xbf, 0xc4, 0xfc, 0x9e, 0x88, 0xc7, + 0xb0, 0x18, 0xde, 0x00, 0xaf, 0x98, 0x3b, 0x60, 0x30, 0x98, 0x0a, 0x60, + 0x80, 0x98, 0x0c, 0xe0, 0xd5, 0x18, 0x33, 0x40, 0x69, 0x18, 0x10, 0x00, + 0x32, 0x98, 0x01, 0x60, 0x20, 0x18, 0x00, 0x60, 0x05, 0xa9, 0x52, 0x0c, + 0xa2, 0x99, 0x9d, 0x6e, 0x19, 0xb8, 0x02, 0xb0, 0xc0, 0xd2, 0x98, 0x03, + 0x1a, 0xec, 0xe3, 0x92, 0xfa, 0x76, 0x34, 0x50, 0x01, 0x20, 0xa7, 0xe6, + 0x49, 0x36, 0xf2, 0x28, 0xea, 0xff, 0xfb, 0xd4, 0x60, 0x30, 0x89, 0xd6, + 0xa7, 0x6f, 0x42, 0xbb, 0xfb, 0x43, 0x72, 0x7a, 0xee, 0x08, 0x01, 0x3c, + 0x68, 0x6e, 0x1d, 0x25, 0xc1, 0x02, 0x4f, 0xf5, 0x2d, 0xc2, 0x08, 0x37, + 0xdf, 0xc9, 0x93, 0x21, 0xb8, 0xce, 0x70, 0xdb, 0x85, 0x20, 0x34, 0x40, + 0xa0, 0x22, 0x02, 0x86, 0xa6, 0xe5, 0x37, 0x9a, 0xc3, 0xc3, 0xb8, 0x9c, + 0xc4, 0x45, 0x3e, 0xa9, 0xe9, 0xec, 0x67, 0x31, 0x01, 0x42, 0xcd, 0x36, + 0x2c, 0x0a, 0x04, 0xa1, 0xc7, 0x25, 0x12, 0x87, 0xf5, 0x01, 0x5a, 0xab, + 0x8a, 0xe5, 0xaa, 0x60, 0x41, 0x2e, 0xd4, 0xa8, 0x99, 0x1f, 0xbc, 0x28, + 0x90, 0x46, 0x8e, 0x9e, 0x3a, 0x32, 0x37, 0x08, 0x26, 0xd7, 0x85, 0x89, + 0x48, 0xa1, 0x56, 0xe1, 0xa6, 0x62, 0xd2, 0x28, 0xb7, 0x78, 0x87, 0x58, + 0xd2, 0x6a, 0x6e, 0x22, 0xfa, 0xb4, 0x9f, 0x58, 0x1d, 0x33, 0xad, 0x5b, + 0xdc, 0xc2, 0xc6, 0xed, 0x7a, 0x5a, 0x2d, 0xdd, 0x35, 0xef, 0xdd, 0x76, + 0xe8, 0x49, 0x54, 0x54, 0x58, 0xd4, 0x1b, 0xdd, 0x0e, 0x2c, 0xd2, 0x87, + 0xc8, 0xa0, 0x00, 0x41, 0x02, 0x91, 0x59, 0xb5, 0x02, 0xf3, 0xe9, 0xba, + 0x98, 0xc5, 0x85, 0xe0, 0xc4, 0x9a, 0x04, 0x20, 0xf9, 0x21, 0x66, 0xa4, + 0xa4, 0x64, 0xaa, 0x43, 0x9b, 0xe2, 0xdb, 0x32, 0xe3, 0x19, 0x10, 0x44, + 0x6d, 0xc2, 0x25, 0xc6, 0x79, 0x88, 0xd6, 0x66, 0xbe, 0xaf, 0xab, 0xb8, + 0xa8, 0xe3, 0xa4, 0xda, 0xa1, 0x92, 0xa7, 0xa8, 0xea, 0x9b, 0x84, 0xb8, + 0xa7, 0x87, 0x8a, 0xb8, 0x89, 0xb6, 0xe5, 0x26, 0x69, 0xdd, 0x34, 0x66, + 0x8e, 0x7b, 0xb8, 0xa8, 0xe7, 0xb9, 0xd3, 0x1b, 0x37, 0xea, 0x95, 0x49, + 0xf3, 0xa5, 0x56, 0x64, 0xf4, 0xca, 0xb1, 0xbd, 0x26, 0xf7, 0x48, 0xf1, + 0x1d, 0x0d, 0x5a, 0x46, 0x75, 0xce, 0x73, 0x08, 0x10, 0x46, 0x1a, 0x27, + 0x39, 0xcb, 0x91, 0xe2, 0xa2, 0x15, 0x03, 0x40, 0x74, 0x1b, 0x58, 0x84, + 0x80, 0xb4, 0x91, 0x04, 0x90, 0x30, 0x14, 0x80, 0x8d, 0x30, 0x12, 0xc1, + 0x32, 0x30, 0x0d, 0x41, 0x8f, 0x30, 0x25, 0x82, 0xc4, 0x30, 0x4c, 0x46, + 0x21, 0x31, 0x16, 0xa3, 0xc8, 0x37, 0xd9, 0xb1, 0x69, 0x31, 0x0a, 0x06, + 0x6c, 0x30, 0x8d, 0x42, 0xd3, 0x30, 0x72, 0xc1, 0x5b, 0x30, 0x9e, 0x81, + 0x46, 0x31, 0x66, 0xc0, 0x04, 0x30, 0x82, 0x40, 0x23, 0x30, 0x18, 0x80, + 0x2c, 0x01, 0x02, 0x8e, 0xa7, 0x03, 0x80, 0x21, 0x83, 0x20, 0x29, 0x0c, + 0x14, 0x64, 0x20, 0x0c, 0xc6, 0xe8, 0x23, 0xea, 0x9e, 0x53, 0x59, 0xaf, + 0x48, 0xb5, 0x18, 0xa6, 0x30, 0x64, 0x03, 0xa5, 0xca, 0x6d, 0xe8, 0x72, + 0xa9, 0xdf, 0x55, 0xa9, 0x21, 0x8d, 0x5f, 0x2a, 0x80, 0x09, 0x73, 0x56, + 0x5f, 0x1b, 0x7f, 0x21, 0x6a, 0xb2, 0x19, 0x97, 0xf2, 0xdc, 0x7d, 0xbd, + 0xc2, 0x67, 0x2b, 0xfa, 0x7d, 0xe3, 0x1b, 0x36, 0x50, 0xa2, 0x1e, 0x3b, + 0x5e, 0x90, 0xb2, 0xa3, 0xe0, 0x85, 0x72, 0x6c, 0xf8, 0x8b, 0xa4, 0xe9, + 0x6e, 0x10, 0x27, 0x3f, 0x49, 0x3d, 0x9a, 0xd9, 0x42, 0x06, 0x24, 0x48, + 0x44, 0xa2, 0xa9, 0x30, 0xd4, 0xe6, 0x4f, 0x22, 0x01, 0x66, 0x72, 0xf2, + 0x97, 0x8a, 0xc8, 0x27, 0x49, 0x1a, 0xf9, 0xb0, 0x62, 0x16, 0xb3, 0xb1, + 0xb3, 0x90, 0x8a, 0x05, 0xdf, 0x46, 0xf6, 0x65, 0xb4, 0xba, 0xa5, 0xb1, + 0x69, 0x48, 0x9d, 0xc7, 0x3c, 0xa1, 0x29, 0x28, 0xec, 0xb9, 0x35, 0x3d, + 0x82, 0xcf, 0x7c, 0xb4, 0xf2, 0x69, 0xb4, 0xcc, 0xe9, 0x64, 0x97, 0x87, + 0x62, 0xe3, 0x58, 0xb5, 0xc2, 0xd7, 0x5d, 0x39, 0xb5, 0xa7, 0x5b, 0x27, + 0x22, 0x15, 0x0c, 0xd8, 0xa4, 0xc8, 0xf0, 0x14, 0x48, 0x4c, 0x07, 0xf8, + 0xfe, 0xe3, 0x2b, 0x7e, 0xa6, 0xaa, 0xd2, 0xcd, 0x6a, 0x41, 0xd8, 0x97, + 0xfb, 0xdd, 0x35, 0x65, 0x62, 0x64, 0x50, 0x96, 0xdc, 0x79, 0x2d, 0xaf, + 0x49, 0x40, 0x5d, 0x49, 0x9c, 0x60, 0xf6, 0x45, 0x03, 0x4f, 0x8d, 0xf5, + 0xa8, 0x9c, 0xec, 0x8b, 0x9e, 0x51, 0xd2, 0x83, 0x46, 0x2d, 0xdb, 0x42, + 0xa6, 0xd0, 0xb4, 0xa8, 0x90, 0xdf, 0x25, 0xcc, 0x77, 0x57, 0x13, 0x4e, + 0xcf, 0x9c, 0x9b, 0xc4, 0xd7, 0xc4, 0xff, 0x17, 0xcc, 0x5a, 0xf3, 0x17, + 0xfc, 0x29, 0xee, 0xb4, 0xcb, 0x16, 0xe9, 0xec, 0x37, 0xe6, 0x69, 0x6d, + 0xee, 0xfb, 0x76, 0xed, 0x6e, 0xe9, 0xe6, 0xd9, 0x0a, 0x6e, 0xda, 0x07, + 0xb6, 0xef, 0x33, 0xd1, 0xd7, 0x0c, 0xd5, 0xca, 0x40, 0xd7, 0x4a, 0x28, + 0x84, 0x50, 0xec, 0xeb, 0x10, 0x84, 0x40, 0xf4, 0x5a, 0x0e, 0x59, 0x15, + 0x62, 0x44, 0x40, 0xb8, 0x82, 0x68, 0x7e, 0x00, 0x00, 0x0f, 0x7f, 0xa3, + 0x24, 0x03, 0x00, 0x68, 0x00, 0x30, 0x80, 0x0d, 0xc8, 0x80, 0x89, 0x1a, + 0x04, 0x0c, 0x30, 0x20, 0xc3, 0x0d, 0xac, 0x10, 0xf3, 0x6b, 0xac, 0x0a, + 0xa3, 0x0e, 0x5c, 0x02, 0x73, 0x04, 0x00, 0x06, 0xa3, 0x01, 0x10, 0x08, + 0x83, 0x00, 0x1c, 0x0b, 0x51, 0x18, 0x09, 0x23, 0xb3, 0x15, 0x43, 0x0c, + 0x79, 0xe3, 0x4d, 0xc7, 0x98, 0xcb, 0xb8, 0x8f, 0x48, 0x3e, 0xf5, 0xfb, + 0xdd, 0xba, 0xf8, 0xda, 0xe5, 0x88, 0x89, 0xa0, 0xb4, 0x7e, 0xcc, 0x61, + 0xfc, 0x5f, 0xb3, 0x95, 0x15, 0x86, 0xbc, 0xae, 0x58, 0x28, 0x50, 0x4a, + 0x09, 0xf1, 0x78, 0x61, 0x04, 0x08, 0xd0, 0x14, 0xb1, 0xd8, 0x32, 0x87, + 0x09, 0xd2, 0xf8, 0x59, 0x94, 0x09, 0xa5, 0x03, 0x52, 0x68, 0x34, 0x90, + 0x4c, 0x2c, 0x7c, 0xe9, 0x2a, 0xe9, 0x1d, 0x7a, 0x4b, 0x4b, 0x75, 0xd0, + 0x76, 0xa6, 0xd4, 0xe8, 0x59, 0xff, 0xfb, 0xd4, 0x60, 0x41, 0x08, 0xd4, + 0xf2, 0x3c, 0xc5, 0xd3, 0xf9, 0x6a, 0xe0, 0x5b, 0x4e, 0x08, 0x32, 0x40, + 0x25, 0x6e, 0x1e, 0x91, 0xc0, 0xfe, 0x0f, 0xf1, 0x2d, 0xc2, 0x0e, 0xb8, + 0x1f, 0xc9, 0x91, 0xa1, 0xb8, 0x37, 0xa4, 0xa7, 0x41, 0x48, 0xde, 0xdd, + 0x2f, 0x7c, 0xde, 0x12, 0xcc, 0x58, 0xdd, 0xfe, 0xbc, 0xdf, 0xff, 0x55, + 0x34, 0xfa, 0x98, 0xae, 0x6d, 0xaa, 0x5a, 0x88, 0x05, 0xc9, 0x00, 0x00, + 0x1b, 0xb4, 0x9a, 0x51, 0x5d, 0x6d, 0xa0, 0xc6, 0x26, 0xeb, 0x68, 0x29, + 0xaa, 0x48, 0x5c, 0x04, 0x9b, 0x20, 0xb5, 0x34, 0x01, 0x41, 0x91, 0x9d, + 0x0c, 0x67, 0xae, 0xb4, 0x55, 0x4e, 0xba, 0x26, 0x45, 0x4f, 0xfb, 0xd7, + 0xdd, 0x55, 0x5d, 0xfb, 0xdc, 0xf9, 0xb9, 0x17, 0xcf, 0xee, 0xcb, 0xdd, + 0xa9, 0xd6, 0xd7, 0xde, 0xdf, 0x75, 0x33, 0xfd, 0x6d, 0x26, 0xf4, 0x57, + 0x69, 0x8f, 0xa3, 0xa1, 0x9a, 0x4d, 0x51, 0x98, 0xcc, 0xe2, 0x84, 0x22, + 0x90, 0x87, 0x65, 0x72, 0x9c, 0xe3, 0x48, 0x2f, 0x10, 0x15, 0x88, 0x09, + 0x83, 0x04, 0x06, 0x0d, 0x63, 0x02, 0x2c, 0x0f, 0x83, 0x01, 0xf0, 0x0f, + 0xf3, 0x02, 0x34, 0x21, 0xe3, 0x02, 0xb8, 0x3a, 0x33, 0x05, 0x84, 0x80, + 0x43, 0x15, 0x3b, 0x23, 0x73, 0x90, 0x9b, 0xed, 0x63, 0x14, 0xb0, 0x87, + 0x33, 0x02, 0x50, 0x31, 0xa3, 0x07, 0xb0, 0x08, 0xe3, 0x0c, 0xf4, 0x14, + 0xe3, 0x1c, 0x78, 0x09, 0x63, 0x0b, 0x38, 0x04, 0xb3, 0x02, 0x74, 0x04, + 0x90, 0x80, 0x1d, 0x85, 0x86, 0x60, 0x81, 0xa1, 0x00, 0x90, 0xd2, 0xbf, + 0x53, 0xab, 0x05, 0xc1, 0xc2, 0x24, 0xad, 0x7e, 0x9f, 0xaa, 0x39, 0xd5, + 0x00, 0x7f, 0x65, 0xd5, 0xa0, 0xc0, 0xa0, 0x66, 0x9a, 0x6e, 0x9e, 0xdb, + 0x50, 0x98, 0x9e, 0x91, 0xea, 0x92, 0x7d, 0x3f, 0x92, 0xe2, 0x47, 0x4d, + 0x31, 0x06, 0xb8, 0xaa, 0xfa, 0x0c, 0x9c, 0xec, 0xcd, 0x88, 0x12, 0xc4, + 0xdd, 0x5b, 0xd3, 0x6d, 0xa5, 0x95, 0xd9, 0x3e, 0xb2, 0x00, 0x45, 0x25, + 0xc9, 0x53, 0xda, 0x38, 0x4a, 0x49, 0xac, 0x96, 0x8c, 0x5c, 0x47, 0x3c, + 0x15, 0x14, 0x43, 0x14, 0x68, 0x52, 0x6a, 0x06, 0x47, 0xe4, 0xdb, 0x61, + 0x1d, 0x65, 0xc1, 0xf1, 0x3d, 0x13, 0x53, 0xa1, 0x06, 0x05, 0xb4, 0x78, + 0x65, 0x71, 0x43, 0x88, 0x97, 0x3c, 0xb2, 0x68, 0x22, 0xe7, 0xa4, 0xc2, + 0xa5, 0x4b, 0x34, 0x85, 0xe8, 0x44, 0x03, 0x4b, 0x9a, 0x8f, 0x61, 0xda, + 0xc3, 0xcd, 0x08, 0x29, 0xb4, 0x2a, 0xb2, 0xa9, 0xef, 0x36, 0xdb, 0x2c, + 0xea, 0x8e, 0x97, 0xe9, 0x2d, 0x06, 0x75, 0xe5, 0x8c, 0x18, 0x9c, 0xa0, + 0xb1, 0xf8, 0x1c, 0x57, 0x15, 0xe8, 0xd9, 0x3c, 0xe3, 0xaf, 0xc3, 0xe2, + 0x81, 0x41, 0x31, 0xb3, 0x3a, 0xa1, 0x11, 0x03, 0x61, 0x74, 0xa0, 0xab, + 0x09, 0x41, 0x01, 0x60, 0x20, 0xfe, 0x91, 0x20, 0x26, 0x21, 0x4e, 0xf1, + 0xae, 0xd4, 0x91, 0x40, 0xb5, 0xeb, 0x4e, 0xfd, 0x4d, 0x52, 0x5e, 0xb1, + 0x63, 0x82, 0x66, 0x50, 0xd5, 0xc9, 0xb3, 0x9a, 0x10, 0x31, 0x22, 0x40, + 0x05, 0xec, 0x28, 0x72, 0x00, 0x43, 0xaa, 0xeb, 0xa1, 0xb8, 0x4a, 0x0c, + 0x22, 0xe6, 0x10, 0x23, 0x0c, 0x34, 0xcd, 0x12, 0x59, 0xcf, 0xb3, 0x32, + 0x9b, 0x76, 0x69, 0x89, 0x69, 0xa4, 0xbe, 0xa2, 0xaf, 0x1f, 0xbd, 0xdd, + 0x43, 0x1e, 0xf1, 0xad, 0x63, 0xdf, 0xfb, 0x27, 0x98, 0x1e, 0xb3, 0xef, + 0x05, 0x35, 0xdb, 0xca, 0xdb, 0xc0, 0xda, 0xa6, 0x8e, 0xd5, 0xe2, 0x17, + 0x6a, 0x48, 0xed, 0xa3, 0x84, 0x5d, 0x79, 0x6b, 0x98, 0x87, 0x8b, 0xe5, + 0xfa, 0x96, 0x79, 0x7a, 0x89, 0x3e, 0x86, 0xaa, 0x31, 0x54, 0xbc, 0x10, + 0x45, 0xc0, 0x8c, 0x3c, 0x69, 0xc6, 0x1c, 0x18, 0x0e, 0xc2, 0x58, 0x11, + 0x81, 0xb0, 0xb8, 0x29, 0x3c, 0x61, 0x6e, 0x38, 0x62, 0x62, 0x0a, 0x6a, + 0x29, 0x99, 0x71, 0xc9, 0xc1, 0x71, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x00, 0x00, 0x0e, 0x5d, 0x5a, 0x20, 0x01, 0xa0, 0x04, 0xc7, 0x80, + 0x41, 0x30, 0x12, 0x40, 0x29, 0x30, 0x22, 0x80, 0x60, 0x30, 0x47, 0xc0, + 0xed, 0x30, 0xdd, 0x05, 0x7c, 0x37, 0x3f, 0x87, 0xe9, 0x30, 0xf2, 0x81, + 0x22, 0x30, 0x4b, 0x40, 0xc1, 0x30, 0x1e, 0xc0, 0xa9, 0x36, 0x4d, 0xc3, + 0xdf, 0x40, 0x33, 0xb2, 0x94, 0xd5, 0x8d, 0xbf, 0x8e, 0xfa, 0x60, 0x15, + 0x23, 0xd5, 0x56, 0x6b, 0x79, 0x4c, 0xe7, 0x51, 0xe2, 0x9e, 0x9d, 0xb7, + 0x78, 0xc6, 0x6e, 0xdb, 0x92, 0x52, 0xd1, 0x5c, 0xab, 0x22, 0xa4, 0xa4, + 0x89, 0xb1, 0xa4, 0xb0, 0x97, 0x3d, 0xf2, 0xcc, 0x21, 0x48, 0xd1, 0x8b, + 0x8b, 0x63, 0x0b, 0x10, 0xf7, 0x2f, 0x6e, 0xe5, 0xf5, 0x0c, 0x9c, 0xfb, + 0x38, 0x65, 0xba, 0x56, 0x20, 0x34, 0x55, 0xa1, 0x30, 0x10, 0xb8, 0x71, + 0x60, 0x20, 0x7d, 0xa2, 0xa6, 0x66, 0x48, 0x09, 0x96, 0x09, 0x72, 0xbe, + 0x50, 0x64, 0x8a, 0x97, 0x9d, 0x43, 0xd8, 0xa1, 0x6b, 0xd8, 0xbd, 0x2e, + 0x80, 0xd0, 0xe4, 0xb3, 0xde, 0xf6, 0x68, 0x9a, 0x78, 0xa4, 0x2a, 0xd5, + 0x3c, 0xd8, 0x99, 0x8e, 0xec, 0xde, 0x12, 0x9c, 0xb7, 0x7a, 0xc5, 0x26, + 0xed, 0xe5, 0xcc, 0x9d, 0xcd, 0x34, 0x39, 0xd6, 0xad, 0x26, 0x6b, 0x41, + 0x9c, 0xda, 0x79, 0xe6, 0x7f, 0x5f, 0x29, 0x4b, 0x2e, 0x5c, 0x5b, 0xab, + 0x29, 0x0f, 0xca, 0xdd, 0x93, 0x3a, 0xdc, 0xa4, 0x56, 0xb2, 0xd6, 0xa6, + 0xcb, 0x47, 0xa2, 0x2a, 0xaa, 0x37, 0x43, 0x25, 0xf4, 0xed, 0x67, 0xf7, + 0x45, 0x8d, 0x64, 0xa1, 0xdb, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x08, 0x94, + 0xe5, 0x23, 0x45, 0x53, 0xfb, 0xc2, 0x50, 0x68, 0xcd, 0xf8, 0x10, 0x64, + 0x65, 0x6e, 0x1b, 0x29, 0xc1, 0x06, 0x4f, 0xf1, 0x0d, 0xc2, 0x4f, 0xb8, + 0x1f, 0x99, 0xa4, 0xa1, 0xb8, 0x75, 0x6a, 0xb1, 0xe4, 0xd8, 0xac, 0xce, + 0xf3, 0x56, 0x46, 0x56, 0x65, 0x6e, 0x4a, 0x11, 0x0a, 0xed, 0x6a, 0x0d, + 0x44, 0xde, 0xac, 0x53, 0x8e, 0x22, 0x09, 0x0e, 0x48, 0x8a, 0x99, 0x43, + 0xa7, 0x53, 0x81, 0xc3, 0xc2, 0xc0, 0x51, 0x00, 0xc0, 0xb1, 0xcb, 0x20, + 0x00, 0x60, 0x30, 0x01, 0x0a, 0x60, 0x39, 0x81, 0xc0, 0x60, 0x52, 0x02, + 0x0e, 0x60, 0x80, 0x83, 0x8c, 0x60, 0xfd, 0x08, 0x0e, 0x63, 0x06, 0xaf, + 0xec, 0x7a, 0x05, 0xbf, 0x96, 0x63, 0x62, 0x88, 0x18, 0x60, 0xae, 0x02, + 0x0a, 0x60, 0x41, 0x81, 0x54, 0x60, 0xbd, 0x02, 0xc6, 0x61, 0xe0, 0x81, + 0x26, 0x60, 0xae, 0x80, 0xcc, 0x60, 0x22, 0x00, 0x7e, 0x60, 0x0d, 0x00, + 0x04, 0x34, 0x05, 0x00, 0x83, 0xc5, 0x84, 0x06, 0x34, 0x83, 0x9a, 0xac, + 0x12, 0xbd, 0x22, 0xf5, 0x21, 0x89, 0xac, 0xde, 0x3b, 0x76, 0x6b, 0xcc, + 0x01, 0x83, 0x30, 0x9a, 0x0b, 0x2f, 0x8d, 0x3c, 0xae, 0x52, 0xea, 0x53, + 0xd6, 0xb2, 0xc6, 0x96, 0xe4, 0x39, 0x6e, 0x29, 0x12, 0x7d, 0x98, 0x2e, + 0x38, 0xcb, 0xed, 0xd8, 0x7d, 0x69, 0xa9, 0xe9, 0x25, 0x33, 0x0e, 0xf3, + 0x8e, 0x26, 0x93, 0xf8, 0x74, 0x35, 0x11, 0xd4, 0x85, 0xcd, 0x41, 0xb4, + 0x42, 0x8c, 0x17, 0xc7, 0xf7, 0x3d, 0x8f, 0x62, 0xc8, 0x16, 0x48, 0x28, + 0x6a, 0x0f, 0x82, 0x0b, 0x1f, 0x6b, 0x07, 0x8c, 0x7b, 0x43, 0xc3, 0xa3, + 0xe0, 0xa8, 0x4a, 0x14, 0xef, 0x8e, 0x71, 0x83, 0x4b, 0xa4, 0x1b, 0xa1, + 0xcc, 0x6c, 0x9f, 0x55, 0x03, 0xa2, 0xa4, 0xd6, 0xa9, 0xbe, 0x8f, 0xe6, + 0x56, 0xcd, 0xd4, 0x52, 0xfd, 0xd3, 0x56, 0x61, 0xb6, 0xf2, 0xfc, 0x5a, + 0xfe, 0x60, 0xf8, 0x38, 0x6e, 0x38, 0x6d, 0x54, 0xc4, 0x0d, 0xb4, 0x58, + 0x3a, 0x49, 0x28, 0x55, 0xdc, 0x41, 0x42, 0x89, 0x76, 0x10, 0xc1, 0x48, + 0x56, 0xe0, 0x7d, 0xd6, 0xad, 0x5e, 0x92, 0x33, 0x94, 0x46, 0xcc, 0xa7, + 0x0b, 0x11, 0xa9, 0x99, 0xec, 0xb2, 0x52, 0x85, 0x21, 0x83, 0xae, 0x02, + 0xbd, 0x52, 0x97, 0xc8, 0x5c, 0xa2, 0x81, 0x99, 0xee, 0xcb, 0x5a, 0x93, + 0x51, 0xf6, 0xc3, 0x2f, 0x43, 0xac, 0xd2, 0x02, 0x21, 0x5c, 0x14, 0x1b, + 0x03, 0x08, 0xd9, 0x81, 0x43, 0xca, 0x81, 0x0d, 0xc2, 0xa8, 0x68, 0xe2, + 0x83, 0xeb, 0xec, 0x6a, 0xcb, 0x57, 0x1f, 0x29, 0x75, 0x4f, 0x5c, 0xd3, + 0xed, 0xac, 0x24, 0xd5, 0x4d, 0x2b, 0xcd, 0x50, 0xf6, 0xde, 0x07, 0xbe, + 0x73, 0x52, 0x63, 0xcd, 0xa3, 0xd9, 0xcc, 0x2c, 0x8b, 0x81, 0xf5, 0x30, + 0xf5, 0xd4, 0x12, 0x3e, 0x50, 0x6b, 0x0e, 0x7a, 0x4c, 0x75, 0x4e, 0x32, + 0x61, 0xdd, 0xe4, 0x67, 0xd4, 0xf8, 0xc6, 0x4a, 0xbf, 0x71, 0xb2, 0x5a, + 0xf7, 0x03, 0x8e, 0x3d, 0x18, 0xa1, 0x3b, 0x98, 0x4a, 0x50, 0x2a, 0x83, + 0xc5, 0xd8, 0x25, 0x59, 0x0e, 0x4b, 0x0c, 0x07, 0xc2, 0x70, 0xe0, 0x5e, + 0x47, 0x88, 0xe2, 0x74, 0xc4, 0x14, 0xd4, 0x53, 0x32, 0xe3, 0x93, 0x82, + 0xe3, 0x25, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x5a, 0x00, 0x03, 0x00, 0x24, 0x04, 0x43, 0x01, 0x9c, 0x0b, 0xb3, + 0x02, 0x70, 0x0f, 0xa3, 0x04, 0x74, 0x1c, 0xb3, 0x08, 0xc8, 0x40, 0x43, + 0x19, 0xd5, 0x72, 0x53, 0xd6, 0xbd, 0xfa, 0xa3, 0x1d, 0x14, 0x47, 0x53, + 0x0a, 0x90, 0x25, 0x03, 0x06, 0x10, 0x18, 0xe3, 0x06, 0xec, 0x1a, 0x33, + 0x0d, 0xf0, 0x09, 0x33, 0x05, 0x20, 0x06, 0x23, 0x00, 0xd4, 0x01, 0x50, + 0x70, 0x17, 0x8b, 0x5c, 0x44, 0x1e, 0x40, 0x02, 0x68, 0x07, 0xc1, 0xb7, + 0x49, 0xc3, 0x03, 0x59, 0x7c, 0xe5, 0xb6, 0xe1, 0xda, 0x2d, 0x5b, 0xb8, + 0x2c, 0x4d, 0x23, 0x9d, 0xa6, 0xe4, 0x0f, 0x7e, 0x55, 0x02, 0xcb, 0xb3, + 0xeb, 0x0a, 0x62, 0x9a, 0xbf, 0x5e, 0x6a, 0x58, 0xa1, 0x72, 0xbc, 0x26, + 0x61, 0x89, 0xe6, 0x65, 0x6e, 0xad, 0xf9, 0xf9, 0x7b, 0x3b, 0x87, 0xa5, + 0x2d, 0x59, 0xa9, 0x9d, 0x85, 0x21, 0x1a, 0x66, 0xc3, 0xe9, 0x4e, 0xcf, + 0x7a, 0xee, 0x8d, 0xa2, 0xcd, 0x8c, 0x6e, 0x65, 0xd1, 0x9b, 0x93, 0xa2, + 0x12, 0x8b, 0x94, 0x21, 0x2f, 0x07, 0xc2, 0x31, 0xb5, 0x19, 0x9d, 0xda, + 0x79, 0xb1, 0x77, 0x67, 0x66, 0xdf, 0x42, 0xba, 0x17, 0x36, 0xbd, 0x78, + 0x8f, 0xcf, 0xab, 0x2a, 0x4e, 0xbc, 0xdb, 0xcc, 0x9a, 0x2e, 0x0c, 0xb6, + 0xa8, 0x3a, 0x13, 0x88, 0x31, 0xc3, 0x5a, 0xaa, 0x4a, 0x52, 0xd2, 0x49, + 0x3a, 0xcc, 0xdb, 0xc4, 0x50, 0x25, 0xfe, 0xae, 0x4f, 0x6a, 0x35, 0x61, + 0x78, 0x16, 0xb2, 0x92, 0x35, 0x61, 0x40, 0x68, 0xa6, 0x00, 0x4f, 0x40, + 0x00, 0x31, 0xb2, 0xea, 0xb5, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x09, 0x96, + 0x9f, 0x70, 0x41, 0x93, 0xfb, 0x33, 0x70, 0x73, 0x2e, 0x08, 0x16, 0x60, + 0xc3, 0x6e, 0x17, 0xe1, 0xb9, 0x0a, 0xef, 0xec, 0x6d, 0xca, 0x12, 0xb7, + 0x9f, 0xc9, 0x94, 0x21, 0xb8, 0xbe, 0xe6, 0xae, 0xde, 0xa9, 0x96, 0x38, + 0xf3, 0x17, 0xf9, 0x93, 0x53, 0xaf, 0xeb, 0x33, 0x48, 0x57, 0xff, 0xda, + 0x29, 0x92, 0x59, 0x88, 0x15, 0x40, 0x88, 0x91, 0x73, 0xbd, 0x1e, 0xdb, + 0x87, 0xa9, 0xae, 0xa9, 0x5d, 0xa5, 0x2c, 0xa3, 0xe7, 0x4b, 0xf2, 0xdb, + 0x32, 0xf7, 0x4d, 0x50, 0xba, 0x7d, 0xcb, 0x92, 0xcc, 0xcf, 0x29, 0x73, + 0x73, 0x22, 0x4e, 0x52, 0x39, 0x4c, 0xee, 0xdc, 0x9c, 0xe8, 0xf9, 0xf2, + 0x11, 0x19, 0x7f, 0x21, 0xdf, 0x22, 0xba, 0xdc, 0xa4, 0xdb, 0xa6, 0xcd, + 0x9f, 0x39, 0x26, 0xfd, 0x21, 0x09, 0x0d, 0x2e, 0x6a, 0x2d, 0x21, 0x50, + 0xb9, 0x8c, 0x1a, 0x30, 0xa1, 0x40, 0x9c, 0x16, 0x0f, 0x00, 0x04, 0x8e, + 0x04, 0x06, 0x13, 0x01, 0x0a, 0x8c, 0x83, 0x01, 0x3c, 0x04, 0xe3, 0x02, + 0x30, 0x02, 0xd3, 0x02, 0xac, 0x06, 0xc3, 0x04, 0x50, 0x0b, 0xd3, 0x08, + 0x84, 0x1c, 0x83, 0x19, 0x80, 0xb1, 0xb3, 0xd7, 0x98, 0xf6, 0x43, 0x1d, + 0x10, 0x18, 0xf3, 0x07, 0x94, 0x05, 0x13, 0x01, 0x34, 0x10, 0x93, 0x02, + 0x04, 0x19, 0xc3, 0x06, 0x48, 0x09, 0x43, 0x02, 0x50, 0x06, 0xb3, 0x00, + 0x34, 0x02, 0xe3, 0x00, 0xa8, 0x00, 0x75, 0xa4, 0x5f, 0x54, 0x01, 0x98, + 0x96, 0xc1, 0xb0, 0x83, 0x31, 0x18, 0xb4, 0xa6, 0x5b, 0xdb, 0x0d, 0x93, + 0x3c, 0xe6, 0xed, 0x91, 0x12, 0x52, 0x61, 0x66, 0x38, 0xea, 0x43, 0x34, + 0x8e, 0xbe, 0xe6, 0x25, 0xc5, 0x50, 0x06, 0x9b, 0x1e, 0x84, 0x65, 0x2e, + 0x8a, 0xb8, 0xdd, 0xa5, 0x9f, 0xb9, 0xa8, 0x9f, 0x77, 0x4f, 0x62, 0x79, + 0xe1, 0x90, 0xa7, 0x65, 0x3a, 0x08, 0xed, 0xcc, 0xaf, 0x84, 0x95, 0x8a, + 0x91, 0xfa, 0x73, 0x87, 0x38, 0xee, 0x72, 0xb2, 0x0d, 0xee, 0x8a, 0xd3, + 0x77, 0x31, 0x8d, 0x1d, 0xb1, 0x73, 0x8c, 0x70, 0x13, 0x01, 0x87, 0x5c, + 0xdf, 0x3d, 0xa8, 0x31, 0xee, 0x93, 0x9b, 0xaa, 0x13, 0xb1, 0xaf, 0x6c, + 0x22, 0x87, 0x6b, 0xee, 0xa7, 0xaf, 0x2b, 0x97, 0x9f, 0x3d, 0x5a, 0x30, + 0x23, 0x80, 0xe9, 0x84, 0x8a, 0x3b, 0x56, 0x6b, 0x5a, 0xb8, 0x21, 0xa1, + 0xd0, 0xc3, 0xeb, 0x24, 0x00, 0xe7, 0xb5, 0x38, 0x16, 0xb4, 0x62, 0xf5, + 0xec, 0x65, 0x98, 0xf7, 0x96, 0x3f, 0x90, 0x71, 0xf7, 0x12, 0xf5, 0x72, + 0x74, 0x3f, 0xd9, 0x4a, 0xac, 0x50, 0x8c, 0x18, 0x0e, 0xd3, 0x3c, 0x72, + 0x20, 0xdb, 0x5b, 0x1f, 0x2c, 0x9a, 0x0a, 0x54, 0x44, 0xc3, 0xd7, 0xab, + 0x55, 0xfc, 0xd3, 0x42, 0x45, 0x64, 0xca, 0xd2, 0xab, 0x35, 0x67, 0xab, + 0xd5, 0xff, 0xbd, 0xcc, 0xe9, 0x55, 0x17, 0x1b, 0x1b, 0x67, 0x3d, 0xc4, + 0xdc, 0x5d, 0x55, 0x34, 0x4b, 0x8f, 0xb9, 0xaa, 0x67, 0xc6, 0xc4, 0x2a, + 0x97, 0x35, 0x2f, 0x7a, 0xd2, 0x5c, 0xd8, 0xc1, 0x8c, 0xf5, 0x5a, 0xd5, + 0xde, 0x90, 0x45, 0x4e, 0x42, 0x57, 0x76, 0x93, 0x19, 0x24, 0x32, 0x1f, + 0xbb, 0xab, 0x34, 0x0e, 0x8a, 0xa1, 0x05, 0x84, 0x51, 0x83, 0x12, 0x60, + 0x54, 0xc0, 0x84, 0x42, 0x0e, 0x82, 0x20, 0x90, 0x4b, 0x61, 0xc1, 0xb1, + 0x21, 0x18, 0x90, 0x7a, 0x62, 0x0a, 0x6a, 0x29, 0x99, 0x71, 0xc9, 0xc1, + 0x71, 0x92, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x16, 0x00, 0xbf, 0x30, 0x19, 0x40, 0xfe, 0x30, 0x0d, 0x41, + 0xcf, 0x30, 0x28, 0x83, 0x2a, 0x30, 0x55, 0x47, 0x0d, 0x30, 0xef, 0x28, + 0x78, 0x37, 0xa5, 0xb8, 0xbd, 0x31, 0x37, 0x07, 0x88, 0x30, 0x9c, 0xc3, + 0x45, 0x30, 0x84, 0x41, 0x83, 0x30, 0xb9, 0x81, 0x10, 0x31, 0xa6, 0xc0, + 0x2e, 0x30, 0x96, 0xc0, 0x2b, 0x30, 0x1f, 0x80, 0x4e, 0x30, 0x09, 0xc0, + 0x0d, 0x16, 0x08, 0x28, 0x70, 0x08, 0x4e, 0x21, 0xf5, 0x18, 0xf8, 0x38, + 0xd8, 0xe4, 0x99, 0xb4, 0x69, 0xcb, 0x4e, 0xdc, 0x6a, 0xae, 0x31, 0x20, + 0x81, 0x5d, 0xa8, 0x8c, 0xfc, 0x34, 0xf2, 0xdb, 0x88, 0xd3, 0x56, 0x97, + 0x59, 0x5b, 0x11, 0x5d, 0x4f, 0xce, 0x4c, 0xc3, 0x6a, 0xd3, 0x09, 0x8b, + 0xd9, 0xe6, 0xa0, 0xe9, 0xfc, 0x2a, 0x5b, 0x9c, 0x93, 0x44, 0x4a, 0xa5, + 0x37, 0xa3, 0x12, 0x51, 0x45, 0x24, 0x3e, 0x59, 0x35, 0x21, 0xb4, 0xd1, + 0x85, 0xdb, 0x45, 0x24, 0x8c, 0xbd, 0x3c, 0x2a, 0xf2, 0xd0, 0xd5, 0x90, + 0x39, 0x1a, 0x89, 0x96, 0x40, 0xb9, 0x19, 0x2b, 0x2d, 0x08, 0x26, 0x99, + 0x88, 0x42, 0x67, 0x62, 0x68, 0x9d, 0x54, 0xd2, 0xd9, 0x2a, 0x88, 0xf1, + 0xcd, 0x69, 0xf9, 0x16, 0x99, 0x91, 0xb7, 0x36, 0xab, 0x6e, 0x2c, 0x88, + 0x95, 0x04, 0x2b, 0xf9, 0xf5, 0xad, 0x49, 0xb3, 0x86, 0x3b, 0x6d, 0x5d, + 0x2e, 0xb2, 0x8b, 0xe9, 0x64, 0x92, 0x44, 0x75, 0xb3, 0x78, 0xd4, 0xe2, + 0xaa, 0x6c, 0x30, 0xac, 0xa1, 0x72, 0x8d, 0x24, 0x6a, 0x1b, 0x53, 0x75, + 0xf6, 0x5d, 0x23, 0x64, 0xc6, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x08, 0xc7, + 0x51, 0x70, 0x40, 0x03, 0xfc, 0x4b, 0x70, 0x77, 0x0e, 0x08, 0x02, 0x60, + 0xc5, 0x6e, 0x19, 0x5d, 0x19, 0x0e, 0xef, 0xe9, 0xeb, 0xc1, 0xe3, 0xb8, + 0x20, 0x09, 0x81, 0x99, 0xb8, 0x58, 0x55, 0x06, 0xbe, 0x60, 0xa0, 0xa1, + 0x0a, 0x6c, 0x8c, 0x8f, 0xa1, 0x10, 0x8b, 0x12, 0x80, 0x01, 0xd4, 0x13, + 0x99, 0xda, 0x87, 0xef, 0x6f, 0x78, 0x6f, 0x3e, 0x58, 0xab, 0xcb, 0x6c, + 0xf3, 0x59, 0xbb, 0xea, 0x2f, 0x7f, 0xff, 0xd2, 0xc0, 0xc8, 0x26, 0x77, + 0x2f, 0x08, 0x98, 0xcd, 0x12, 0xa9, 0xfd, 0x8a, 0x55, 0xb3, 0xeb, 0x24, + 0x8d, 0xb3, 0x9d, 0xaf, 0x42, 0xbe, 0x59, 0x64, 0x75, 0x21, 0x5d, 0x0d, + 0x4c, 0xd7, 0x32, 0x23, 0x15, 0xd4, 0xe6, 0xa5, 0xac, 0xce, 0x6e, 0x5c, + 0xcf, 0xa2, 0xda, 0x55, 0x33, 0x21, 0xda, 0x89, 0xda, 0x39, 0xff, 0x22, + 0xa3, 0x2b, 0xaa, 0x4f, 0xca, 0xf7, 0x16, 0xbb, 0x3e, 0x2c, 0xdb, 0x2c, + 0xe6, 0x9c, 0xea, 0xcc, 0xba, 0x91, 0x03, 0xaa, 0xa2, 0x4c, 0x42, 0x0f, + 0x60, 0x18, 0xc2, 0x82, 0xa3, 0xc8, 0x61, 0x40, 0x18, 0xc3, 0xc1, 0x03, + 0xe0, 0x81, 0xd4, 0x10, 0x01, 0x07, 0x85, 0x37, 0x19, 0x00, 0x03, 0x00, + 0x60, 0x00, 0x53, 0x00, 0x3c, 0x00, 0x80, 0x50, 0x14, 0x86, 0x02, 0x08, + 0x19, 0x46, 0x10, 0xc0, 0x34, 0xc6, 0x0b, 0xe8, 0xd8, 0xc7, 0x3e, 0xa9, + 0x7b, 0x46, 0x10, 0x00, 0x59, 0x46, 0x0d, 0x20, 0x0e, 0x66, 0x0a, 0xf0, + 0x19, 0x46, 0x04, 0x48, 0x20, 0xe0, 0xa0, 0x7b, 0x00, 0xc1, 0x00, 0x61, + 0xcc, 0x52, 0x80, 0x6a, 0x53, 0x02, 0x49, 0x0a, 0x0c, 0xec, 0x23, 0x40, + 0x84, 0x02, 0x00, 0xbe, 0x28, 0xb4, 0x97, 0x09, 0x7e, 0x8e, 0x88, 0x62, + 0x8d, 0x29, 0x76, 0x98, 0x02, 0x10, 0x68, 0x4c, 0x62, 0x2a, 0xbd, 0x31, + 0x15, 0xbd, 0x23, 0x55, 0x32, 0xe0, 0x54, 0xea, 0x50, 0xd1, 0xda, 0xd2, + 0xec, 0x4e, 0xb6, 0x96, 0xcf, 0x1f, 0x57, 0xb9, 0xc4, 0x61, 0x6d, 0xc2, + 0x5e, 0x8e, 0x35, 0x90, 0x81, 0xc6, 0x60, 0x24, 0x4e, 0x24, 0x61, 0xa6, + 0x14, 0x04, 0x42, 0x85, 0x6d, 0xc1, 0x3f, 0x43, 0xf5, 0xa5, 0x61, 0x91, + 0x4e, 0xa6, 0x75, 0x3b, 0x8c, 0x7a, 0x77, 0xbf, 0x5e, 0x49, 0xbc, 0x4d, + 0xe3, 0x58, 0xc5, 0x2d, 0xf1, 0xaf, 0x8f, 0x5a, 0xfd, 0xd6, 0x98, 0xa7, + 0xde, 0x77, 0x8f, 0x7d, 0xe6, 0x4f, 0xac, 0x63, 0xd3, 0x5f, 0xff, 0x7d, + 0x67, 0xef, 0x14, 0x97, 0x7e, 0x39, 0xf5, 0x21, 0x04, 0xd1, 0x12, 0xa1, + 0xa1, 0x8e, 0xd8, 0x86, 0xe4, 0x62, 0x11, 0xe2, 0x8b, 0xc4, 0x8a, 0x08, + 0x3c, 0x54, 0x10, 0x1c, 0x11, 0x06, 0xd0, 0x00, 0x3c, 0xe4, 0x19, 0xf2, + 0xc7, 0x2b, 0xf7, 0x56, 0x39, 0x4b, 0xf6, 0xf9, 0xaa, 0xca, 0x7e, 0x09, + 0x4f, 0x9c, 0xc3, 0xf7, 0x53, 0xbc, 0x62, 0xb7, 0xdd, 0xa6, 0xea, 0xe6, + 0x2c, 0xa1, 0xb9, 0x20, 0x08, 0xa2, 0xa4, 0x40, 0x45, 0x13, 0xb4, 0xa0, + 0xbb, 0x94, 0xc2, 0x90, 0xf2, 0xab, 0xba, 0xb8, 0x6f, 0x92, 0xd9, 0x4a, + 0x6f, 0x2d, 0x98, 0xff, 0x73, 0x73, 0xee, 0x7a, 0xdf, 0x99, 0x6f, 0x0d, + 0x3b, 0xeb, 0x7e, 0xed, 0xee, 0x76, 0xf7, 0xd9, 0xef, 0x7d, 0x7a, 0xff, + 0xf6, 0xd6, 0xbf, 0x9f, 0xed, 0xee, 0x67, 0xf9, 0x9f, 0x1e, 0x5f, 0x6f, + 0x1a, 0x33, 0x7b, 0xeb, 0xfa, 0x6d, 0x7f, 0x39, 0xcc, 0xb9, 0x7d, 0xcf, + 0xb6, 0x4d, 0xa8, 0xe1, 0xe9, 0xff, 0xfe, 0x00, 0xf7, 0x60, 0x3d, 0x03, + 0x90, 0x1a, 0x4b, 0xf1, 0x23, 0xd6, 0x98, 0x82, 0x9a, 0x8a, 0x66, 0x5c, + 0x72, 0x70, 0x5c, 0x65, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x18, 0xc0, 0xaa, 0x30, 0x09, 0xc0, 0xf3, 0x30, 0x15, 0x41, + 0xfe, 0x30, 0x45, 0xc1, 0x33, 0x30, 0xd7, 0x49, 0xae, 0x32, 0x53, 0x4b, + 0x1d, 0x34, 0xe8, 0x80, 0xfb, 0x33, 0x35, 0x08, 0x35, 0x30, 0x48, 0xc4, + 0x14, 0x30, 0x77, 0x81, 0x88, 0x30, 0xea, 0x41, 0xf8, 0x30, 0xbc, 0x82, + 0xd7, 0x30, 0x71, 0x80, 0x30, 0x30, 0x21, 0x40, 0x09, 0x01, 0x00, 0xe8, + 0x1b, 0x51, 0xbc, 0x29, 0x97, 0x30, 0x3a, 0xd0, 0xa8, 0xcc, 0x1d, 0x80, + 0x38, 0x6e, 0x23, 0x37, 0x4e, 0x94, 0x86, 0x67, 0xce, 0xdb, 0xf1, 0x03, + 0xab, 0x0b, 0x12, 0x8f, 0xd2, 0xc2, 0xe1, 0x76, 0xa9, 0x2b, 0xc3, 0x0f, + 0xfc, 0x56, 0x3d, 0x0a, 0x9b, 0x9c, 0xce, 0x55, 0x1c, 0x6b, 0xd3, 0xb5, + 0xa4, 0x32, 0x9a, 0x94, 0xb5, 0x69, 0xa6, 0x6d, 0x4b, 0x25, 0xd3, 0x84, + 0x83, 0x33, 0xc8, 0x25, 0x51, 0xfb, 0x0e, 0x17, 0xea, 0x5e, 0x6b, 0x62, + 0x7d, 0x01, 0x8e, 0x78, 0xa2, 0xe9, 0x0a, 0x4f, 0x92, 0x42, 0x4d, 0x4a, + 0x72, 0xd4, 0x2f, 0x94, 0xd5, 0x1c, 0x36, 0x86, 0xbc, 0xc5, 0x71, 0xb0, + 0x9e, 0x4f, 0x5e, 0x43, 0xfb, 0x92, 0x5b, 0xc4, 0x5c, 0x78, 0xd6, 0xbb, + 0xcf, 0xbb, 0x8a, 0x0e, 0x57, 0x51, 0x53, 0xc5, 0xb7, 0xca, 0x50, 0xb6, + 0xc9, 0x76, 0x0d, 0xab, 0xef, 0xbd, 0x19, 0x82, 0xc3, 0xa2, 0x29, 0x82, + 0xe5, 0x10, 0x1d, 0x9f, 0x32, 0xc3, 0xba, 0xc5, 0x99, 0x3d, 0xf4, 0x85, + 0xf4, 0xae, 0xc0, 0xb5, 0x86, 0x0b, 0x64, 0xad, 0xaa, 0xa7, 0x16, 0xc3, + 0x13, 0x1d, 0x63, 0xa3, 0x36, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0x97, + 0xe5, 0x70, 0x3f, 0x03, 0xf9, 0x63, 0x70, 0x79, 0x8e, 0x08, 0x19, 0x68, + 0xc5, 0x6e, 0x1d, 0xf5, 0xc0, 0xfc, 0x4f, 0xbd, 0x8d, 0xc1, 0xd5, 0xb8, + 0x20, 0x05, 0x91, 0xa1, 0xb8, 0x93, 0xd1, 0x42, 0x58, 0x70, 0xb2, 0xee, + 0x5a, 0xf7, 0x69, 0xe8, 0x4b, 0x69, 0x56, 0x19, 0x53, 0x0d, 0xe8, 0x68, + 0x70, 0x4c, 0x3a, 0x2a, 0x96, 0x0e, 0x4b, 0x2a, 0xc2, 0xb2, 0x43, 0x84, + 0x02, 0x88, 0x00, 0x00, 0x47, 0x40, 0x00, 0x36, 0x1a, 0x5d, 0x8d, 0x05, + 0xdc, 0x7e, 0xd6, 0xaa, 0x65, 0xda, 0xdd, 0xc7, 0x25, 0x58, 0xce, 0x6d, + 0xe7, 0x32, 0xe8, 0x79, 0xd3, 0xde, 0x22, 0xa9, 0x68, 0x9f, 0xe1, 0xcd, + 0x84, 0x5f, 0x6a, 0xaa, 0x20, 0xe4, 0x77, 0x96, 0x6e, 0x5d, 0xa5, 0xd5, + 0xdc, 0xe4, 0x5d, 0x92, 0xb9, 0x1e, 0x45, 0xb5, 0xdf, 0x4a, 0x57, 0x74, + 0xd9, 0x74, 0x46, 0x66, 0xcc, 0xa5, 0x21, 0xf6, 0xb3, 0x3d, 0x88, 0xe6, + 0xba, 0xd9, 0xd0, 0xaa, 0x55, 0x59, 0xb5, 0xd5, 0xd2, 0xac, 0x7b, 0x77, + 0x44, 0x72, 0x17, 0x3b, 0xb1, 0xe7, 0xe8, 0x72, 0x49, 0x43, 0xe8, 0x8a, + 0x52, 0x90, 0x7a, 0x9d, 0x59, 0x47, 0x91, 0x9c, 0x48, 0xb1, 0x11, 0x10, + 0x1c, 0x38, 0xc2, 0x4c, 0x10, 0x00, 0x43, 0x82, 0x83, 0x04, 0x40, 0x01, + 0x00, 0x63, 0x0b, 0xb4, 0x89, 0x4e, 0x60, 0x4d, 0x00, 0x16, 0x60, 0x2c, + 0x80, 0x7e, 0x60, 0x49, 0x01, 0x04, 0x60, 0x97, 0x82, 0x4a, 0x61, 0x8f, + 0x0f, 0x30, 0x6b, 0xc8, 0x0d, 0x92, 0x61, 0xae, 0x03, 0xd4, 0x60, 0xa4, + 0x82, 0x12, 0x60, 0x52, 0x81, 0x7a, 0x60, 0x5a, 0x01, 0x88, 0x60, 0x7d, + 0x80, 0x38, 0x60, 0x2e, 0x80, 0x56, 0x0a, 0x00, 0x31, 0x2e, 0xcd, 0x05, + 0x59, 0xd0, 0x7f, 0xa1, 0x3a, 0x9a, 0x22, 0xae, 0xf8, 0x5c, 0x2b, 0x68, + 0xcb, 0x85, 0x51, 0xda, 0x5d, 0xd0, 0xa5, 0x03, 0xf2, 0x85, 0x50, 0xfd, + 0x0e, 0x5d, 0x1b, 0x84, 0x80, 0x52, 0x96, 0x61, 0xa3, 0xe3, 0xa5, 0x18, + 0xce, 0x54, 0xa5, 0xd5, 0xd4, 0x60, 0x5c, 0x44, 0xe9, 0x24, 0x6a, 0xe5, + 0x88, 0xe1, 0xe8, 0xaa, 0xbd, 0xa9, 0xad, 0xa1, 0x12, 0x0e, 0x97, 0x9c, + 0x98, 0x41, 0x43, 0x87, 0x5b, 0x88, 0xfc, 0xf9, 0x0d, 0xf3, 0xd6, 0x51, + 0x94, 0xce, 0xcb, 0x90, 0x2f, 0x6d, 0xc3, 0xc3, 0xd4, 0xa7, 0x8c, 0x92, + 0x11, 0x9c, 0x14, 0xcc, 0x21, 0x51, 0x48, 0x4b, 0x4d, 0x1a, 0x5d, 0x4e, + 0x40, 0xc3, 0xab, 0xd5, 0x1e, 0x63, 0x2e, 0x58, 0xb5, 0x72, 0xdf, 0xac, + 0x3f, 0xbb, 0x79, 0x4d, 0x3d, 0xf9, 0x33, 0x41, 0x4f, 0x4b, 0x92, 0x9a, + 0xe6, 0x89, 0xcf, 0xde, 0x85, 0x23, 0x83, 0x14, 0xe6, 0x0f, 0xfa, 0x69, + 0xb6, 0xdb, 0x4e, 0x9e, 0xaa, 0x74, 0x25, 0x0e, 0xa9, 0x7c, 0x7d, 0x69, + 0xce, 0x98, 0x15, 0x16, 0x23, 0x3f, 0x6d, 0xbb, 0xb6, 0x76, 0xac, 0xae, + 0xea, 0x02, 0x64, 0x67, 0x6f, 0x29, 0x5e, 0x63, 0x55, 0x09, 0x8b, 0xeb, + 0xd7, 0xa4, 0xb9, 0x2a, 0x30, 0xa8, 0xb8, 0x52, 0xe4, 0x82, 0x22, 0xd2, + 0xca, 0xa1, 0x38, 0x81, 0x27, 0x4b, 0x7b, 0x31, 0x9e, 0x75, 0x69, 0x77, + 0xce, 0x5a, 0xb1, 0xdd, 0x2d, 0x55, 0x72, 0x21, 0xb0, 0xbe, 0x3c, 0x3e, + 0xbc, 0xed, 0x3e, 0x05, 0xce, 0xb9, 0x3b, 0x04, 0x18, 0x31, 0x03, 0xc8, + 0xda, 0x2d, 0x44, 0x22, 0xb9, 0xe3, 0xe7, 0x45, 0xae, 0x9f, 0xe3, 0xb9, + 0xea, 0x9e, 0x62, 0xb8, 0xb4, 0xfe, 0xe2, 0xa2, 0x6b, 0x8f, 0x91, 0xb5, + 0xcc, 0xd4, 0xb7, 0x3c, 0x24, 0x9c, 0xf3, 0xf4, 0xb5, 0xa2, 0x0c, 0xd5, + 0x3d, 0x6f, 0xbb, 0xaa, 0x99, 0xd2, 0x7b, 0x99, 0x9f, 0xf3, 0x7a, 0x99, + 0x8d, 0x21, 0xfd, 0xae, 0xf4, 0x5e, 0xa2, 0x56, 0xa5, 0x2a, 0x29, 0x7b, + 0x95, 0xfa, 0x91, 0xa4, 0xf2, 0xa3, 0x45, 0x01, 0xe3, 0x04, 0x5b, 0x43, + 0x4e, 0x0e, 0x98, 0x78, 0x7a, 0x1d, 0x88, 0x61, 0xa2, 0x0a, 0x12, 0x8b, + 0xaa, 0x64, 0x00, 0x03, 0x00, 0xa0, 0x02, 0x53, 0x02, 0x64, 0x08, 0x23, + 0x01, 0x68, 0x04, 0x53, 0x02, 0x64, 0x07, 0x83, 0x04, 0xc8, 0x12, 0xd3, + 0x0f, 0x2c, 0x5a, 0xa3, 0x77, 0xec, 0xfe, 0xf3, 0x0f, 0x5c, 0x15, 0xa0, + 0x50, 0x3c, 0x23, 0x00, 0x3f, 0x18, 0x0d, 0x80, 0x6c, 0x98, 0x34, 0x20, + 0x45, 0x98, 0x0b, 0x60, 0x18, 0x18, 0x00, 0xc0, 0x02, 0xa4, 0x32, 0x12, + 0xa6, 0x70, 0x08, 0x5a, 0xfa, 0xad, 0x96, 0xa7, 0xfe, 0x1e, 0x3e, 0x8e, + 0xa8, 0x43, 0xd4, 0x25, 0xe5, 0x47, 0x33, 0xf4, 0xa2, 0x04, 0x9d, 0x3d, + 0x51, 0xa2, 0xce, 0x21, 0x6b, 0x3f, 0x4d, 0xb3, 0xad, 0xca, 0x46, 0xc6, + 0x04, 0x20, 0xca, 0x8f, 0x19, 0xe2, 0xb9, 0x4a, 0xc8, 0xc5, 0x5c, 0xb3, + 0x27, 0x6c, 0x5c, 0x42, 0x51, 0x62, 0x99, 0x63, 0x58, 0xbb, 0x2f, 0x9d, + 0x9a, 0xb0, 0xe3, 0x6f, 0x1c, 0xc4, 0x77, 0x0a, 0xd6, 0x8d, 0x36, 0x25, + 0x85, 0xf4, 0x8b, 0xc9, 0x8f, 0xa5, 0x50, 0x4e, 0x26, 0x46, 0xeb, 0x2f, + 0x9f, 0x2f, 0x21, 0x91, 0x15, 0x98, 0x37, 0x63, 0x68, 0x27, 0x8e, 0x29, + 0x75, 0xd1, 0x36, 0xaa, 0x57, 0x1f, 0x9d, 0x92, 0xa1, 0xc3, 0x93, 0xda, + 0x22, 0x5c, 0xe1, 0x48, 0xdd, 0x39, 0xe4, 0x2c, 0x22, 0xa2, 0x6a, 0x17, + 0x13, 0xd9, 0x11, 0xcd, 0x97, 0x95, 0x26, 0xf4, 0xba, 0xc5, 0x75, 0x3b, + 0x4f, 0x42, 0xf3, 0x55, 0x8b, 0x10, 0x56, 0x2c, 0x3b, 0x71, 0x49, 0xd2, + 0xe7, 0xde, 0x62, 0x62, 0xa7, 0xdc, 0x94, 0xec, 0x3a, 0x7d, 0x0b, 0x67, + 0x4d, 0x2d, 0x4d, 0x27, 0x5f, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd7, + 0x9c, 0x70, 0x3f, 0x13, 0xef, 0x63, 0x70, 0x7a, 0x2e, 0x07, 0xf0, 0x3c, + 0x68, 0x6e, 0x1e, 0xe1, 0xc0, 0xfc, 0x4f, 0xe1, 0x8d, 0xc1, 0xbe, 0x38, + 0x20, 0x88, 0x93, 0x0d, 0xb8, 0xbd, 0x2f, 0x15, 0x0b, 0x87, 0x07, 0x00, + 0xf1, 0xb1, 0x89, 0x5d, 0x41, 0x81, 0x2d, 0x54, 0x62, 0x18, 0x44, 0x54, + 0x8b, 0x47, 0x52, 0x72, 0x31, 0xfc, 0xa9, 0x7d, 0x58, 0x90, 0xa1, 0x6e, + 0x2e, 0x6b, 0x69, 0x75, 0x51, 0x27, 0x53, 0x64, 0x65, 0x88, 0x0e, 0x24, + 0x06, 0x53, 0xc7, 0x09, 0x3e, 0xe6, 0xe4, 0x89, 0xe7, 0x18, 0x8e, 0xa9, + 0xa6, 0x71, 0xd1, 0x68, 0xcb, 0x35, 0x61, 0xd7, 0x65, 0xaa, 0x98, 0x7b, + 0x8e, 0xdd, 0x6a, 0x1b, 0x6a, 0x4a, 0xa9, 0x8d, 0x38, 0x93, 0x3e, 0x6e, + 0xb8, 0xea, 0xc6, 0xad, 0x71, 0x5f, 0x43, 0x24, 0x7f, 0x4d, 0x69, 0xdd, + 0xf5, 0x4e, 0xb7, 0x34, 0x95, 0x2c, 0xee, 0xa3, 0x7b, 0x5b, 0xbe, 0x37, + 0x1a, 0xf7, 0x09, 0x75, 0x73, 0x69, 0x6b, 0x36, 0xb6, 0x55, 0xa2, 0x5c, + 0xdb, 0xc5, 0x5b, 0xd9, 0x4e, 0x74, 0xea, 0x63, 0x34, 0xa9, 0xcc, 0x5a, + 0xcc, 0x09, 0x44, 0x13, 0x0d, 0x3c, 0xd3, 0x44, 0xa4, 0x96, 0x3c, 0x43, + 0x28, 0xb1, 0x85, 0x83, 0x50, 0xb8, 0xb9, 0x48, 0x60, 0x02, 0x80, 0x5c, + 0x60, 0x24, 0x01, 0x82, 0x60, 0x0a, 0x01, 0x3c, 0x60, 0x24, 0x82, 0x56, + 0x60, 0x57, 0x05, 0x64, 0x60, 0xe6, 0xa0, 0x96, 0x6a, 0x8a, 0xa9, 0x68, + 0x61, 0x90, 0x85, 0xba, 0x60, 0x97, 0x02, 0x8c, 0x60, 0x67, 0x01, 0x5c, + 0x60, 0x8a, 0x81, 0x56, 0x61, 0x2a, 0x00, 0xa0, 0x60, 0x6c, 0x00, 0x1c, + 0x0a, 0x00, 0xfc, 0x68, 0x01, 0x07, 0x9e, 0x89, 0xdf, 0x2c, 0x15, 0x71, + 0x52, 0x4d, 0xdf, 0xa2, 0xa7, 0xa1, 0xa6, 0xaf, 0x7a, 0x6e, 0x8a, 0x47, + 0x1b, 0xd3, 0xb3, 0x18, 0x7f, 0x1f, 0xf6, 0xb3, 0x59, 0xf9, 0xb7, 0x1f, + 0xa7, 0x9e, 0xa3, 0x83, 0x65, 0xf5, 0x25, 0x30, 0x3c, 0x4a, 0x4b, 0x1a, + 0xa6, 0xa7, 0xf8, 0x54, 0xbd, 0xde, 0xbf, 0x29, 0x96, 0xc0, 0xcd, 0xcb, + 0xb1, 0x32, 0x4d, 0xd2, 0xc2, 0xc8, 0x8f, 0xec, 0xdb, 0x55, 0x7f, 0x4f, + 0x4e, 0x5c, 0x5e, 0xd9, 0x7a, 0x05, 0xa7, 0x8c, 0x39, 0x58, 0xcd, 0xa8, + 0x76, 0xed, 0xa9, 0xc7, 0xc7, 0xeb, 0xe1, 0x50, 0x4b, 0x4d, 0x87, 0xff, + 0x90, 0x3c, 0xc8, 0xc9, 0xa5, 0x08, 0x6f, 0xa1, 0xb9, 0xec, 0xd1, 0x94, + 0x38, 0x95, 0x97, 0x16, 0xc0, 0x5a, 0x52, 0xe9, 0xf1, 0x07, 0xce, 0x8a, + 0x55, 0x3d, 0x7d, 0x21, 0x7b, 0x1d, 0x68, 0xb3, 0x26, 0x8d, 0x45, 0x02, + 0xa5, 0xa9, 0x9a, 0x46, 0x91, 0x42, 0xd4, 0x16, 0x56, 0x7a, 0x11, 0x34, + 0xe0, 0xa9, 0x09, 0x81, 0xc1, 0xfa, 0xc3, 0x88, 0x5d, 0x5a, 0xb1, 0xc6, + 0x9d, 0xf3, 0x15, 0xad, 0x96, 0xce, 0x58, 0xa2, 0xdb, 0xc4, 0xc4, 0x4a, + 0x90, 0xea, 0x52, 0x5a, 0x8c, 0xe8, 0xd8, 0x8c, 0x21, 0x1c, 0x94, 0x96, + 0xb2, 0xdb, 0x66, 0x08, 0x46, 0x75, 0x88, 0xc8, 0x74, 0xb9, 0xa8, 0x49, + 0x0a, 0x0f, 0xdc, 0x0c, 0x67, 0x4f, 0x12, 0x6d, 0x0b, 0x1b, 0x2b, 0x6f, + 0x2d, 0xe9, 0xef, 0x1f, 0xe7, 0xef, 0xb9, 0xf5, 0x64, 0xba, 0x79, 0x86, + 0xd9, 0xc8, 0xe6, 0x51, 0x5f, 0x0a, 0x6d, 0xc3, 0x59, 0x78, 0xe4, 0x11, + 0x02, 0x22, 0xa1, 0x2a, 0x36, 0x23, 0xa2, 0x08, 0x06, 0x68, 0xc8, 0x0c, + 0xc3, 0xa9, 0xb9, 0xae, 0x93, 0xfd, 0xc9, 0x3c, 0xfc, 0x8e, 0xf7, 0x92, + 0x73, 0xf2, 0xff, 0x2e, 0xee, 0xb9, 0xd7, 0xa6, 0x7e, 0x4d, 0x08, 0xf3, + 0xf8, 0xdf, 0x99, 0xf3, 0xf4, 0x23, 0x29, 0x9e, 0x64, 0x5f, 0xfc, 0xf4, + 0xf2, 0xfc, 0xbc, 0xcc, 0xb9, 0x2d, 0x22, 0xdd, 0xc2, 0xc7, 0x75, 0x04, + 0xe1, 0xc3, 0x07, 0x1c, 0xc0, 0xeb, 0x46, 0x10, 0x28, 0x60, 0x41, 0xc5, + 0x0b, 0x0c, 0x82, 0x1c, 0x3b, 0xa6, 0x20, 0xa6, 0xa2, 0xd5, 0x55, 0x55, + 0x55, 0x40, 0x0c, 0x03, 0xd0, 0x08, 0x0c, 0x02, 0xe0, 0x1b, 0x84, 0x81, + 0x32, 0x03, 0x04, 0x38, 0x61, 0x04, 0x80, 0x32, 0x63, 0x09, 0x05, 0xd4, + 0x7a, 0x1a, 0x11, 0xb4, 0x63, 0x77, 0x00, 0x44, 0x61, 0x00, 0x81, 0xb2, + 0x60, 0x4c, 0x82, 0x3a, 0x60, 0x0b, 0x03, 0x08, 0x60, 0x61, 0x01, 0x04, + 0x38, 0x03, 0x18, 0x8c, 0x01, 0x20, 0x30, 0x01, 0x2a, 0x34, 0xd1, 0x60, + 0x07, 0x04, 0xac, 0x77, 0x6d, 0xd3, 0x4b, 0xec, 0xd8, 0x8d, 0x4c, 0xc0, + 0xd1, 0x08, 0x22, 0x1c, 0xb3, 0x9c, 0x3d, 0x16, 0x6c, 0x33, 0x31, 0x1a, + 0xee, 0xe3, 0xb3, 0x04, 0x36, 0x19, 0x1c, 0x76, 0xc4, 0x72, 0xd3, 0xfa, + 0xff, 0xc7, 0xa3, 0x3a, 0xa4, 0xa9, 0x52, 0x6a, 0xa5, 0x24, 0xc4, 0xa6, + 0x33, 0x4c, 0xf9, 0x9d, 0x8a, 0x6b, 0x1b, 0x81, 0xb5, 0x76, 0x69, 0x74, + 0x06, 0x0d, 0xae, 0x8c, 0x9a, 0xad, 0x2d, 0x5a, 0x58, 0xe1, 0xeb, 0x69, + 0xe2, 0x75, 0x01, 0x42, 0xd6, 0x7f, 0x17, 0x99, 0xc2, 0x99, 0x22, 0x48, + 0x0e, 0x95, 0x40, 0xd3, 0x4e, 0x50, 0xbc, 0xf9, 0xa3, 0xa3, 0xb9, 0xd1, + 0x83, 0x8d, 0x12, 0xa8, 0xd6, 0xa5, 0x6d, 0x69, 0xce, 0x33, 0x19, 0xe9, + 0xe4, 0x5a, 0x6a, 0x70, 0xdf, 0xa5, 0x54, 0x52, 0x2b, 0x29, 0x3f, 0x85, + 0x32, 0x19, 0x9b, 0x47, 0xeb, 0x27, 0xe9, 0x63, 0x07, 0xd4, 0x99, 0x20, + 0xb8, 0xe9, 0xdb, 0xcb, 0x68, 0x28, 0x30, 0x5f, 0xcb, 0x87, 0xcd, 0x58, + 0xb9, 0x84, 0x2b, 0x1d, 0x9c, 0x2f, 0x3e, 0x7d, 0x76, 0xc6, 0xeb, 0xd1, + 0xeb, 0x8c, 0x2f, 0x65, 0xe6, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd7, + 0xa8, 0x70, 0x3f, 0x0b, 0xf8, 0x63, 0x70, 0x7b, 0xce, 0x07, 0xf1, 0x30, + 0xc8, 0x6e, 0x1d, 0x61, 0xc1, 0x02, 0x2f, 0xe5, 0x2d, 0xc1, 0xee, 0xb8, + 0x1f, 0xc1, 0x81, 0xa1, 0xb8, 0x4f, 0x0b, 0x4f, 0xac, 0x33, 0xb2, 0xd7, + 0xde, 0x2c, 0xb4, 0x5b, 0x43, 0x2f, 0x95, 0x5c, 0xd0, 0x6a, 0x22, 0xac, + 0x2f, 0x82, 0x45, 0xa1, 0xfc, 0x45, 0x20, 0x06, 0xbd, 0xb4, 0x34, 0x75, + 0x09, 0xa5, 0xcc, 0x3a, 0xbb, 0xaf, 0xc5, 0x3c, 0xb5, 0x78, 0x54, 0x5c, + 0xe5, 0x23, 0xfa, 0x5f, 0x65, 0x4b, 0x92, 0xba, 0x5f, 0xb7, 0xb0, 0xf5, + 0x09, 0x66, 0x4f, 0x66, 0xff, 0xfb, 0x86, 0xa8, 0x69, 0xa5, 0xdd, 0xb8, + 0xa5, 0x8a, 0x85, 0x86, 0x95, 0xe6, 0x12, 0x9d, 0xdb, 0x93, 0x26, 0xee, + 0x66, 0x9a, 0x1e, 0xac, 0x6d, 0xdd, 0x42, 0xc5, 0x63, 0x55, 0x1c, 0x72, + 0xfb, 0x3c, 0x5e, 0xb7, 0xfc, 0x5a, 0xc6, 0xb1, 0xd4, 0x12, 0x3b, 0xe2, + 0x75, 0xbe, 0x62, 0x3a, 0x95, 0x9e, 0xef, 0x5f, 0x99, 0x64, 0x9a, 0xfb, + 0xbf, 0xa6, 0x8d, 0xae, 0x62, 0x87, 0x63, 0x59, 0x46, 0x18, 0xd2, 0x90, + 0x3c, 0x41, 0x33, 0x3c, 0x3a, 0x5a, 0x18, 0x60, 0xc1, 0x20, 0x8c, 0x38, + 0x44, 0x77, 0x70, 0xf4, 0x47, 0x05, 0xa2, 0xe1, 0x70, 0x9a, 0x46, 0x01, + 0xf0, 0x0c, 0xa6, 0x01, 0xf8, 0x05, 0x86, 0x02, 0x60, 0x1d, 0x66, 0x05, + 0x48, 0x34, 0x86, 0x10, 0xb0, 0x35, 0xe6, 0x19, 0xc9, 0x7f, 0x06, 0x65, + 0xaa, 0x7c, 0xe6, 0x1a, 0x20, 0x85, 0x06, 0x09, 0x78, 0x43, 0xa6, 0x03, + 0xf0, 0x19, 0xc6, 0x10, 0xd0, 0x18, 0xc6, 0x13, 0x58, 0x18, 0x66, 0x06, + 0x68, 0x09, 0x86, 0x02, 0xd0, 0x05, 0x46, 0x01, 0x60, 0x06, 0x86, 0xa1, + 0x67, 0x9e, 0x67, 0x08, 0xa0, 0x81, 0x02, 0x85, 0x18, 0x80, 0x16, 0x40, + 0xb8, 0x85, 0xb4, 0x2d, 0x01, 0x72, 0x10, 0x51, 0x00, 0x69, 0x0e, 0x9d, + 0x6a, 0x06, 0x9a, 0xee, 0xdb, 0x8f, 0x18, 0x72, 0x17, 0x7b, 0x8e, 0xe5, + 0xb9, 0x71, 0xb8, 0x5d, 0x5a, 0x59, 0x63, 0x2f, 0x70, 0xd9, 0xdb, 0x5f, + 0x71, 0xe1, 0xf7, 0xfe, 0x2f, 0x96, 0xa6, 0xdf, 0xf8, 0x2d, 0xcb, 0x91, + 0x4b, 0xe8, 0xe3, 0x90, 0x29, 0x86, 0x1c, 0x86, 0x26, 0x97, 0x5d, 0x25, + 0x90, 0x20, 0x49, 0xb7, 0x4c, 0xb4, 0x24, 0xb3, 0x98, 0x40, 0x81, 0xcc, + 0x67, 0x51, 0x39, 0xa5, 0x08, 0x3b, 0xa7, 0xb4, 0xb4, 0x48, 0x13, 0xf2, + 0x59, 0xfa, 0xa1, 0x93, 0x29, 0xae, 0x66, 0x3a, 0x64, 0x50, 0x55, 0x6c, + 0x83, 0xae, 0x2c, 0xad, 0x5a, 0x8e, 0x74, 0xb4, 0x3e, 0x64, 0xa0, 0x94, + 0x35, 0x8d, 0xc6, 0x10, 0xb7, 0x0d, 0x84, 0xd7, 0x4b, 0xe6, 0xe4, 0xa7, + 0xab, 0x30, 0x81, 0x58, 0xad, 0x53, 0x41, 0x3c, 0x93, 0x74, 0xaf, 0x55, + 0x68, 0x96, 0x6b, 0x67, 0xee, 0x6b, 0xff, 0xd1, 0xc6, 0x49, 0x66, 0xa8, + 0x93, 0xda, 0xfc, 0x87, 0x50, 0xa4, 0x2c, 0xb6, 0xe9, 0x58, 0xc5, 0x02, + 0xe8, 0xc5, 0x22, 0x20, 0x58, 0xac, 0xfa, 0xa9, 0x85, 0xf9, 0x16, 0x58, + 0xda, 0xce, 0xb5, 0x7c, 0xef, 0xed, 0xf0, 0xd9, 0x83, 0x67, 0x72, 0x16, + 0x09, 0x9f, 0x23, 0x16, 0xce, 0xb1, 0x27, 0x2d, 0x3e, 0x21, 0x9b, 0x5d, + 0x72, 0xa4, 0x1c, 0xc8, 0x94, 0xdd, 0x51, 0x3b, 0x88, 0x46, 0x8b, 0xa4, + 0x58, 0x9b, 0x7f, 0x9e, 0xa6, 0x93, 0xf7, 0x85, 0xa8, 0xe2, 0xf7, 0x8a, + 0xbe, 0xb4, 0x6a, 0xb8, 0xe2, 0xba, 0x98, 0x96, 0x6a, 0x37, 0x41, 0xc9, + 0x7b, 0xbb, 0xcc, 0x6c, 0x37, 0x88, 0x84, 0xb7, 0xb1, 0xb5, 0x70, 0xac, + 0x47, 0xbd, 0xfd, 0x2f, 0xf4, 0xb6, 0xa9, 0xc7, 0xde, 0xce, 0xc6, 0xb3, + 0x1d, 0x4b, 0x15, 0x4e, 0xae, 0x83, 0x45, 0xd7, 0xc7, 0x09, 0x46, 0xcc, + 0x10, 0x2e, 0x58, 0x84, 0x40, 0x7a, 0x2e, 0x68, 0x87, 0x63, 0xd4, 0x5c, + 0x15, 0x1e, 0x22, 0x88, 0xe2, 0x20, 0x7b, 0x62, 0xe9, 0x88, 0x29, 0xa8, + 0xaa, 0x22, 0x00, 0x10, 0xc0, 0x51, 0x01, 0xd8, 0xc1, 0x5a, 0x01, 0x00, + 0xc2, 0xdf, 0x09, 0x64, 0xc0, 0xb4, 0x16, 0x98, 0xc3, 0xe9, 0x7f, 0xfc, + 0xfc, 0xf9, 0x2b, 0x48, 0xc6, 0x90, 0x19, 0xac, 0xc2, 0xfe, 0x08, 0x90, + 0xc1, 0x64, 0x04, 0x30, 0xc0, 0xc9, 0x05, 0x04, 0xc1, 0xcc, 0x00, 0x50, + 0xc0, 0xf0, 0x01, 0x18, 0xc0, 0x0f, 0x00, 0x88, 0xc0, 0x18, 0x01, 0x94, + 0xea, 0x21, 0xc0, 0x4d, 0x26, 0x22, 0x34, 0x65, 0x10, 0x81, 0x42, 0x30, + 0x28, 0x93, 0xf6, 0x82, 0x68, 0xf4, 0xbb, 0x8c, 0x85, 0x91, 0x44, 0xcb, + 0x55, 0x3a, 0x5d, 0x29, 0x5a, 0x12, 0xa0, 0x67, 0xd9, 0xcd, 0xc6, 0x49, + 0x0d, 0x2b, 0x74, 0x69, 0x23, 0x9a, 0xda, 0x09, 0xbd, 0x72, 0xc8, 0x65, + 0xb9, 0x43, 0x92, 0xe8, 0xd3, 0x95, 0x48, 0xd2, 0x66, 0x1d, 0x18, 0xe4, + 0xa6, 0x25, 0x3d, 0x4d, 0x19, 0x21, 0x30, 0x19, 0x50, 0x2a, 0xa1, 0x2a, + 0x23, 0x8d, 0xb3, 0x11, 0x4b, 0x26, 0x48, 0x5c, 0x22, 0x2e, 0x1e, 0x5d, + 0xfd, 0x98, 0x30, 0xa4, 0xc8, 0x22, 0xb2, 0xed, 0x79, 0xba, 0xa9, 0x25, + 0xa6, 0x81, 0x53, 0xf4, 0x85, 0x3c, 0x42, 0x5b, 0x0d, 0x1a, 0x83, 0x93, + 0x33, 0x49, 0xda, 0x4a, 0xee, 0x28, 0xe5, 0x84, 0xb1, 0x56, 0x32, 0x52, + 0xd1, 0x21, 0x8d, 0xcf, 0x51, 0xe2, 0xd0, 0x62, 0x2b, 0xa8, 0xcd, 0x59, + 0x3c, 0x76, 0x35, 0x70, 0x9e, 0x14, 0x35, 0x6a, 0xa0, 0x86, 0xfa, 0x9a, + 0xac, 0x24, 0xe7, 0xf5, 0x99, 0x4a, 0x12, 0x74, 0x7b, 0xee, 0x10, 0x9c, + 0x67, 0x2a, 0x8d, 0xf5, 0x8e, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd7, + 0x66, 0x70, 0x40, 0x83, 0xfb, 0x4b, 0x70, 0x77, 0xce, 0x08, 0x02, 0x24, + 0x68, 0x6e, 0x1b, 0xc5, 0xc1, 0x04, 0x4f, 0xe9, 0x8d, 0xc1, 0xec, 0xb8, + 0x1f, 0xc5, 0x81, 0xa1, 0xb8, 0x62, 0xf2, 0xb9, 0x3a, 0xd7, 0x71, 0xf7, + 0xa3, 0x5c, 0x3c, 0x8d, 0x72, 0xc7, 0x4e, 0x4d, 0x70, 0x60, 0x09, 0x00, + 0x02, 0xce, 0x28, 0x99, 0xc9, 0x23, 0x5d, 0x54, 0xcc, 0x25, 0x06, 0x51, + 0x8c, 0x50, 0x2f, 0x10, 0x26, 0x4b, 0x4b, 0x52, 0x32, 0xce, 0x45, 0x09, + 0x7c, 0xcf, 0x9a, 0xc8, 0x0b, 0x81, 0x10, 0x32, 0x04, 0xa1, 0x02, 0x13, + 0x9e, 0xb1, 0xae, 0x32, 0x85, 0x6e, 0x6e, 0xbd, 0x29, 0x2e, 0x65, 0xb4, + 0xaa, 0x68, 0xbb, 0xa9, 0x4b, 0x8a, 0xae, 0x1a, 0xe3, 0xe2, 0xed, 0x3e, + 0xaf, 0x56, 0x8b, 0xe7, 0xdb, 0xf8, 0x69, 0x8f, 0x99, 0x8f, 0xd2, 0x7b, + 0xf5, 0xab, 0x5e, 0x25, 0xad, 0xe1, 0xe2, 0x62, 0x53, 0xed, 0x7d, 0x2f, + 0xee, 0x62, 0x6a, 0x3e, 0x7e, 0x6a, 0x59, 0xc7, 0x97, 0xd4, 0x9c, 0x65, + 0x9a, 0xb5, 0x37, 0x02, 0xc6, 0xd9, 0x63, 0x60, 0x91, 0x38, 0xc2, 0x83, + 0xf3, 0x44, 0x82, 0x84, 0x88, 0x82, 0xe2, 0x60, 0x40, 0xb6, 0x90, 0xc0, + 0x8d, 0x01, 0xf8, 0xc0, 0x9e, 0x00, 0x9c, 0xc2, 0x59, 0x08, 0x50, 0xc0, + 0x6a, 0x05, 0xe4, 0xc2, 0x2f, 0x0f, 0x28, 0xc7, 0x4c, 0x50, 0x8c, 0xf2, + 0xd4, 0x62, 0x38, 0xc7, 0xb4, 0x0f, 0x3c, 0xc1, 0x7f, 0x03, 0x30, 0xc0, + 0x68, 0x03, 0x14, 0xc1, 0x5d, 0x06, 0x78, 0xc3, 0x18, 0x02, 0x78, 0xc1, + 0x38, 0x01, 0xb4, 0xc0, 0x41, 0x00, 0xf8, 0x2e, 0x00, 0x49, 0x7e, 0x96, + 0xa2, 0x61, 0x88, 0xf6, 0x19, 0x00, 0x10, 0xdd, 0x04, 0xe4, 0x2a, 0xbd, + 0xc6, 0xe1, 0x8e, 0xa9, 0x74, 0xcb, 0xb2, 0xb1, 0x6e, 0x8d, 0x9a, 0xe5, + 0x1b, 0x6f, 0xe0, 0x19, 0x44, 0x0b, 0x11, 0xbd, 0xfa, 0x96, 0x4b, 0x9f, + 0x4b, 0x11, 0x49, 0xac, 0x63, 0x5a, 0xa6, 0xa3, 0xd5, 0xa9, 0x44, 0xe3, + 0xed, 0x5a, 0xee, 0x73, 0x0d, 0x44, 0xb1, 0x0b, 0xed, 0x49, 0xb6, 0xac, + 0x62, 0x9c, 0x85, 0x6f, 0x55, 0x55, 0xeb, 0x5d, 0xe8, 0x96, 0xd9, 0x98, + 0x23, 0xea, 0x53, 0xef, 0x03, 0x2f, 0x59, 0x87, 0x2f, 0x69, 0x49, 0xbd, + 0x43, 0x8a, 0xf2, 0xf6, 0x79, 0x6d, 0x7e, 0x2c, 0xad, 0xf6, 0xae, 0x59, + 0xc7, 0xee, 0xde, 0x35, 0xd0, 0x35, 0x75, 0xae, 0x56, 0x6d, 0x68, 0x9d, + 0x44, 0xcb, 0x96, 0xcb, 0x2e, 0x6f, 0x62, 0x96, 0x69, 0x93, 0x67, 0xbf, + 0x75, 0xf5, 0xd5, 0x98, 0x2b, 0x7a, 0x7d, 0xb5, 0x45, 0x39, 0xee, 0xfb, + 0xd3, 0x6d, 0x1d, 0xae, 0xc5, 0x7d, 0xc7, 0x5b, 0x5b, 0x1b, 0x6d, 0xb0, + 0xb9, 0x63, 0xba, 0xa7, 0xa0, 0xa2, 0xc8, 0xdc, 0x4e, 0xad, 0x50, 0xd7, + 0x15, 0xc7, 0xa2, 0x91, 0x08, 0xc9, 0x33, 0x7a, 0x33, 0x3b, 0x9e, 0x7d, + 0xa4, 0xe7, 0xf7, 0x3b, 0x36, 0x48, 0x17, 0x12, 0x00, 0x0d, 0xa8, 0x85, + 0x4b, 0x2b, 0xc7, 0x4b, 0x1b, 0xd9, 0xcc, 0x11, 0x62, 0xd2, 0xc1, 0x26, + 0x14, 0x9e, 0x52, 0x29, 0x91, 0xad, 0xcc, 0x6a, 0x5f, 0xdc, 0x4f, 0x11, + 0x70, 0xca, 0x33, 0x74, 0x9b, 0xe2, 0xa6, 0xfa, 0x5e, 0xe2, 0xd2, 0xb7, + 0x67, 0xd6, 0x7a, 0xee, 0x74, 0xba, 0xaa, 0xc8, 0xa5, 0xef, 0x44, 0xaa, + 0x59, 0xe8, 0x7d, 0x73, 0x34, 0xa3, 0x7b, 0xb7, 0xbb, 0xe1, 0x47, 0x74, + 0xbf, 0x8c, 0xe3, 0x8a, 0x22, 0x2a, 0x62, 0xf4, 0xce, 0xe0, 0x6b, 0x4b, + 0xd5, 0xa4, 0xe5, 0xb6, 0xfb, 0xf9, 0xd4, 0x7d, 0x1c, 0x8c, 0xe8, 0xa1, + 0xe1, 0x84, 0x87, 0x92, 0xc2, 0xb2, 0x24, 0x1a, 0x1d, 0x08, 0x40, 0xb4, + 0x80, 0xed, 0x85, 0x4a, 0x05, 0xe0, 0xd9, 0x31, 0x05, 0x35, 0x14, 0xcc, + 0xb8, 0xe4, 0xe0, 0xb8, 0xca, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x06, 0x00, 0x02, 0x40, 0x10, 0x4c, 0x02, 0xe0, 0x57, 0x0c, 0x0b, + 0xd0, 0x4a, 0xcc, 0x13, 0x00, 0x8b, 0x8c, 0x23, 0xb1, 0x34, 0xcc, 0x53, + 0xa7, 0x2b, 0x0f, 0x6c, 0x28, 0x26, 0xcc, 0x71, 0x21, 0x4b, 0x0c, 0x2a, + 0x70, 0xa7, 0x4c, 0x1a, 0xb0, 0x6a, 0x4c, 0x1f, 0xa0, 0x6f, 0x8c, 0x3c, + 0x70, 0x01, 0x0c, 0x18, 0xf0, 0x18, 0xcc, 0x03, 0xe0, 0x07, 0x0c, 0x07, + 0x10, 0x03, 0xd8, 0x82, 0x04, 0x15, 0xb0, 0x1d, 0x48, 0xf7, 0x0a, 0x76, + 0x65, 0x51, 0x96, 0xb3, 0x3f, 0x51, 0xa9, 0xc8, 0xa3, 0x37, 0xd2, 0x94, + 0x2a, 0x16, 0x34, 0xfb, 0xca, 0x24, 0x73, 0xb5, 0x33, 0x79, 0xa4, 0x78, + 0x60, 0x87, 0xe2, 0x42, 0xe2, 0x34, 0xd3, 0x30, 0x5c, 0x62, 0x17, 0x01, + 0x46, 0x5f, 0xc9, 0x63, 0x96, 0x5f, 0xc4, 0xb1, 0x75, 0xa5, 0x90, 0x64, + 0xa5, 0xa3, 0x39, 0x7f, 0x17, 0xba, 0x76, 0x3c, 0x29, 0x8d, 0x55, 0x2d, + 0xb7, 0x41, 0x67, 0x57, 0x93, 0x13, 0xb4, 0xa2, 0x08, 0xd6, 0x38, 0xc5, + 0x55, 0x27, 0x38, 0x1d, 0x1b, 0x8a, 0xf6, 0x87, 0xeb, 0xf6, 0xc6, 0x12, + 0x0b, 0x16, 0x1d, 0xcb, 0xf1, 0xfb, 0x70, 0x73, 0xcc, 0x97, 0xd5, 0x65, + 0x92, 0xc3, 0x1b, 0x59, 0x8d, 0xbd, 0x58, 0x50, 0x98, 0x81, 0xaa, 0xfb, + 0x51, 0xe6, 0x2a, 0x4e, 0x61, 0x57, 0x5a, 0xc8, 0x5c, 0x8a, 0x95, 0xbb, + 0x6b, 0xdc, 0x4a, 0xdc, 0x75, 0xb3, 0x71, 0x3a, 0xb5, 0x2c, 0x31, 0xed, + 0x3a, 0xeb, 0xde, 0xb4, 0x5d, 0x1b, 0x06, 0x19, 0x6d, 0xf7, 0x79, 0xd8, + 0xab, 0x06, 0x4f, 0xb5, 0x15, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x08, 0xd7, + 0x8d, 0x70, 0x40, 0x93, 0xfa, 0x63, 0x70, 0x7c, 0xee, 0x07, 0xf0, 0x64, + 0xc8, 0x6e, 0x18, 0x29, 0xc1, 0x0f, 0x4f, 0xe9, 0x4d, 0xc1, 0xde, 0x38, + 0x20, 0x09, 0x83, 0x21, 0xb8, 0xa0, 0x8b, 0xda, 0x7e, 0xec, 0xb4, 0x89, + 0x1b, 0xb0, 0x22, 0x88, 0xe9, 0x3a, 0x33, 0xd5, 0x65, 0xf2, 0xe9, 0xd1, + 0x89, 0xa9, 0xf1, 0x5c, 0x54, 0xb7, 0x29, 0x31, 0xb9, 0x8f, 0xd5, 0xdd, + 0x7a, 0xb6, 0x30, 0xbb, 0x0b, 0xe6, 0xb4, 0xa8, 0x49, 0x49, 0x65, 0xc1, + 0xfb, 0x71, 0x93, 0x49, 0xb7, 0xcd, 0x98, 0xd8, 0xd3, 0xad, 0x9a, 0xdb, + 0x3c, 0x67, 0x6f, 0xbb, 0x1d, 0x1f, 0x4f, 0x13, 0x0f, 0x7f, 0x7c, 0xb7, + 0xd5, 0x34, 0x25, 0x77, 0x38, 0xe4, 0xb5, 0x8b, 0x4d, 0xf9, 0x6e, 0x5f, + 0xa9, 0x35, 0x2a, 0xf5, 0xb8, 0x9a, 0x4d, 0xaa, 0x2e, 0xee, 0xea, 0xa0, + 0x7f, 0xfd, 0xb3, 0x45, 0x3c, 0x72, 0x33, 0x89, 0x5a, 0xbb, 0x89, 0xa1, + 0xcf, 0x7c, 0x8f, 0xbe, 0x29, 0x6f, 0x8d, 0xb8, 0x3b, 0xb9, 0xe4, 0xdb, + 0x74, 0x69, 0x7a, 0x96, 0xb4, 0x2d, 0x60, 0x97, 0xb6, 0x48, 0x32, 0x06, + 0x25, 0x30, 0x76, 0x74, 0x9e, 0xa6, 0x9e, 0x24, 0x10, 0x08, 0x14, 0x0e, + 0x83, 0x46, 0x07, 0xa5, 0x92, 0x0d, 0x43, 0xc0, 0x09, 0xda, 0xd9, 0x00, + 0x03, 0x00, 0xc8, 0x02, 0xd0, 0x80, 0x2e, 0xcc, 0x07, 0x40, 0x0f, 0xcc, + 0x0b, 0xf0, 0x1d, 0x0c, 0x18, 0x00, 0x4b, 0x4c, 0x49, 0x31, 0x8c, 0x8e, + 0x78, 0xd2, 0xb1, 0xcc, 0x4e, 0x70, 0x42, 0x0c, 0x14, 0xe0, 0x0e, 0x0c, + 0x03, 0x00, 0x2d, 0x8c, 0x04, 0xc0, 0x41, 0xcc, 0x11, 0x70, 0x20, 0x4c, + 0x05, 0x30, 0x10, 0x80, 0x00, 0x0d, 0x83, 0x80, 0x5e, 0x78, 0x59, 0x92, + 0xec, 0x32, 0xba, 0xcd, 0x30, 0x38, 0xb5, 0x5a, 0x91, 0xed, 0x55, 0x5b, + 0x37, 0xa9, 0xaa, 0xc3, 0x2a, 0xea, 0x1d, 0xbd, 0x6e, 0x85, 0xab, 0xfd, + 0x1a, 0xc4, 0x6e, 0x37, 0xdd, 0x91, 0x91, 0x68, 0x13, 0x75, 0x5c, 0x49, + 0xc7, 0x25, 0xd7, 0x64, 0xd0, 0xd5, 0x06, 0x77, 0x26, 0xda, 0x4d, 0x0d, + 0x2d, 0x35, 0xcb, 0x73, 0x31, 0x61, 0xf8, 0xf0, 0xa1, 0xe0, 0xda, 0x04, + 0x25, 0x85, 0x93, 0xc7, 0xca, 0x42, 0x4d, 0x4a, 0x8f, 0x91, 0xc7, 0xea, + 0xd6, 0x77, 0xc8, 0x08, 0xb9, 0xb6, 0x67, 0xbc, 0x8c, 0xfa, 0x75, 0x52, + 0x79, 0xc6, 0x94, 0x76, 0x4d, 0x1e, 0x6e, 0x40, 0x77, 0x35, 0x2c, 0x72, + 0xb1, 0xc5, 0x99, 0x54, 0xd6, 0xa7, 0x95, 0x79, 0x3b, 0x55, 0x1d, 0x79, + 0x21, 0xe7, 0x5f, 0xa7, 0xb7, 0x74, 0xa2, 0x36, 0xa8, 0x86, 0xeb, 0x4a, + 0xee, 0xcb, 0x31, 0x8c, 0x62, 0x07, 0xae, 0x74, 0x8c, 0x60, 0x23, 0x44, + 0xb6, 0xa5, 0xda, 0xf5, 0x70, 0xdd, 0x9d, 0x6b, 0x99, 0x6b, 0xb9, 0x7e, + 0x62, 0x59, 0xf1, 0xde, 0x37, 0x6a, 0x3b, 0x64, 0xe2, 0x53, 0xcd, 0x67, + 0x8b, 0xc0, 0xa2, 0xe9, 0x34, 0x0d, 0xd4, 0xda, 0x75, 0xf2, 0x3d, 0x78, + 0x2b, 0x51, 0xd5, 0x70, 0xb3, 0x2d, 0x53, 0x72, 0x9a, 0xc4, 0xeb, 0xdd, + 0xaa, 0xac, 0xad, 0x24, 0x5a, 0xc6, 0x89, 0x4f, 0x31, 0xdf, 0x51, 0x3c, + 0xda, 0xc2, 0x57, 0xdb, 0xdf, 0x4e, 0xf5, 0x35, 0xc5, 0xbe, 0xad, 0xab, + 0x71, 0x11, 0x4f, 0x4f, 0x8e, 0xba, 0xa9, 0xfb, 0xbb, 0xf9, 0xaf, 0xe7, + 0x96, 0xd3, 0xae, 0x2b, 0xdf, 0xae, 0xd5, 0x63, 0x99, 0xb8, 0x73, 0x5c, + 0x75, 0xc5, 0x22, 0x59, 0x62, 0xe3, 0xe0, 0x46, 0x22, 0xc1, 0x63, 0xc0, + 0x82, 0x48, 0xe2, 0xd8, 0xd1, 0xa4, 0x38, 0xd2, 0x93, 0x10, 0x53, 0x51, + 0x4c, 0xcb, 0x8e, 0x4e, 0x0b, 0x8c, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x40, 0x0c, 0x06, 0xd0, 0x2d, 0x8c, 0x06, 0x80, 0x2d, 0xcc, 0x04, + 0x60, 0x76, 0x8c, 0x0b, 0x90, 0xcf, 0xcc, 0x18, 0x41, 0xcb, 0x8c, 0x3f, + 0xba, 0xb3, 0xce, 0x1b, 0x3d, 0x0b, 0x0c, 0x5b, 0x51, 0xe2, 0xcc, 0x2a, + 0x00, 0xd4, 0x8c, 0x22, 0x80, 0x67, 0x8c, 0x2e, 0x50, 0x40, 0x4c, 0x64, + 0x00, 0x04, 0x0c, 0x26, 0xc0, 0x0d, 0x0c, 0x08, 0x90, 0x20, 0xc0, 0x40, + 0x47, 0x0d, 0x08, 0xc9, 0x41, 0xa0, 0x00, 0xb1, 0x8f, 0x7f, 0x66, 0xad, + 0x14, 0xad, 0xa6, 0x63, 0x2a, 0x45, 0xdf, 0x82, 0x8b, 0xe9, 0x67, 0x55, + 0x5e, 0x01, 0xa1, 0x2d, 0x7c, 0x64, 0x33, 0x68, 0xc7, 0x37, 0x1a, 0x59, + 0xb0, 0x23, 0xbe, 0xe2, 0x90, 0x81, 0x4a, 0x00, 0x5f, 0x28, 0xc1, 0xf4, + 0x95, 0xb1, 0x48, 0x26, 0x9e, 0xdc, 0xfd, 0x0a, 0xf2, 0xfb, 0x74, 0xf2, + 0x8a, 0x8d, 0x56, 0x10, 0xba, 0x5c, 0x6f, 0x0d, 0x84, 0xd1, 0x91, 0xba, + 0x8d, 0xb0, 0x2e, 0xc9, 0x3b, 0x04, 0x2a, 0x19, 0xb1, 0xdc, 0x62, 0x47, + 0x8a, 0xc5, 0x13, 0x0e, 0x57, 0xed, 0xc5, 0xed, 0xee, 0xeb, 0xb9, 0xa2, + 0xd6, 0x25, 0xe3, 0x73, 0xf5, 0x99, 0xe5, 0xe1, 0xf6, 0xc9, 0x25, 0x8b, + 0x9c, 0x30, 0x2c, 0x43, 0x71, 0x89, 0x0e, 0x78, 0x90, 0x1e, 0xc4, 0x85, + 0x09, 0x7a, 0x2e, 0xa3, 0x4d, 0x02, 0x8c, 0xef, 0x5e, 0xb2, 0x52, 0xc9, + 0xf6, 0x4d, 0xd6, 0x8f, 0x60, 0xda, 0x3c, 0x8d, 0xb5, 0x6f, 0x55, 0x46, + 0x9f, 0x50, 0xab, 0x9d, 0xc7, 0xd3, 0xce, 0x8b, 0x75, 0x95, 0x63, 0x6c, + 0x48, 0x54, 0x8b, 0x12, 0x58, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x08, 0xc8, + 0x10, 0x70, 0x40, 0x0b, 0xfc, 0x7b, 0x70, 0x78, 0x4e, 0x08, 0x01, 0x64, + 0x65, 0x6e, 0x18, 0x15, 0xbd, 0x11, 0x4f, 0xe9, 0x0d, 0xc9, 0xbb, 0xb8, + 0x20, 0x89, 0x31, 0x95, 0xb8, 0x98, 0x65, 0x86, 0xe6, 0xc2, 0xf2, 0x48, + 0xf9, 0xbb, 0x76, 0x3c, 0x28, 0x6f, 0x33, 0x3c, 0x38, 0xdb, 0x8c, 0xc7, + 0x02, 0xd1, 0x1a, 0x5b, 0x23, 0x2c, 0xb7, 0x5a, 0x33, 0x92, 0xf2, 0x7a, + 0x0a, 0x85, 0x9d, 0xa1, 0x46, 0xac, 0x66, 0x70, 0x07, 0xe4, 0xb1, 0x47, + 0xf4, 0xbd, 0xad, 0x7b, 0x1e, 0x6e, 0xf6, 0xad, 0x75, 0xcd, 0x41, 0x05, + 0x36, 0x3b, 0x0d, 0x8a, 0xd0, 0x64, 0xb8, 0x62, 0xf9, 0x18, 0x61, 0x20, + 0xeb, 0x95, 0xac, 0x00, 0x22, 0x06, 0x89, 0x95, 0x00, 0x7c, 0x86, 0xb4, + 0x9d, 0x1c, 0xa9, 0x91, 0xd4, 0x88, 0xf2, 0x3a, 0x2a, 0xb3, 0xf9, 0xa6, + 0x25, 0x25, 0x95, 0x1d, 0xd8, 0xe2, 0x6a, 0xc6, 0x3c, 0x86, 0x22, 0xa3, + 0xd5, 0xae, 0xcd, 0x4d, 0x67, 0xf3, 0x3e, 0xad, 0xb2, 0xad, 0xae, 0xed, + 0x51, 0xce, 0x67, 0xad, 0x48, 0x66, 0x53, 0xcc, 0xb3, 0x4d, 0x55, 0xbc, + 0x4c, 0x8f, 0x75, 0x30, 0x81, 0x48, 0x85, 0xa0, 0x98, 0xc1, 0xe3, 0x44, + 0xce, 0x38, 0x78, 0x0e, 0x38, 0x54, 0x38, 0x41, 0xe0, 0x71, 0x82, 0xe1, + 0x21, 0xc2, 0x2c, 0x02, 0x87, 0x04, 0x83, 0x00, 0x29, 0xa4, 0x64, 0x00, + 0x0c, 0x02, 0x70, 0x04, 0x8c, 0x02, 0x40, 0x08, 0xc7, 0x80, 0xea, 0x0c, + 0x06, 0x50, 0xc1, 0x9d, 0x00, 0x54, 0xc4, 0xba, 0x04, 0x4c, 0xe9, 0x38, + 0x0f, 0xe0, 0xc5, 0x7c, 0x01, 0xa0, 0xc1, 0x93, 0x02, 0xdc, 0xc0, 0x81, + 0x03, 0x7c, 0xc0, 0x1e, 0x05, 0x20, 0xc0, 0x68, 0x02, 0x38, 0x2c, 0x02, + 0x39, 0x28, 0x01, 0xed, 0x3d, 0xaa, 0x0c, 0x87, 0x6b, 0x06, 0xb1, 0x28, + 0xbf, 0xb6, 0xf2, 0x7f, 0x18, 0x95, 0xea, 0x66, 0xb7, 0x49, 0x67, 0x24, + 0x76, 0x31, 0xa1, 0xd7, 0xb4, 0xae, 0x4f, 0x10, 0x45, 0xb9, 0x6b, 0xe0, + 0x8a, 0xf0, 0xd4, 0xb9, 0xf4, 0x59, 0x63, 0xc1, 0xa5, 0x32, 0x4b, 0x50, + 0x1e, 0x4e, 0x8e, 0xe4, 0x7a, 0x96, 0x46, 0xd3, 0xc6, 0x59, 0x28, 0xbb, + 0x66, 0x9a, 0x19, 0x90, 0x98, 0xa8, 0x60, 0x4a, 0x10, 0x90, 0x23, 0x8c, + 0x20, 0x47, 0xa3, 0x8d, 0x5f, 0x0e, 0xaa, 0x92, 0x2e, 0x5e, 0xbb, 0x72, + 0x07, 0xcc, 0xff, 0x5c, 0x5f, 0x02, 0x15, 0xcf, 0x7c, 0xaf, 0x3f, 0x29, + 0x57, 0x4f, 0x7f, 0xdd, 0xe4, 0xce, 0xfc, 0x5d, 0xbd, 0x7f, 0x76, 0xff, + 0xfd, 0x45, 0xed, 0x53, 0x5d, 0xcf, 0xb3, 0xd2, 0x45, 0xbc, 0xcb, 0xd7, + 0xdd, 0x45, 0xd5, 0x5f, 0xd4, 0xc4, 0x7f, 0x3f, 0xfc, 0xc7, 0x3c, 0x3d, + 0xeb, 0x49, 0x55, 0x30, 0xb0, 0xf6, 0xe5, 0xae, 0x7c, 0xa0, 0x00, 0x8f, + 0x24, 0xf9, 0xe5, 0x1e, 0x4d, 0x1d, 0x48, 0x1a, 0xad, 0x69, 0x83, 0x22, + 0xcf, 0x97, 0x48, 0x62, 0x29, 0x7b, 0x27, 0x70, 0xa6, 0xb0, 0x10, 0x0b, + 0x07, 0x16, 0x30, 0xa1, 0xc6, 0x60, 0xc3, 0x20, 0xd0, 0xcb, 0x53, 0x2c, + 0x01, 0x37, 0x57, 0xa0, 0xe5, 0x93, 0x3b, 0xa9, 0xac, 0xec, 0xae, 0x46, + 0x6a, 0x99, 0x56, 0xcd, 0xe7, 0x66, 0xf3, 0xc8, 0x86, 0x9f, 0x7a, 0xcf, + 0xd1, 0x5d, 0xa8, 0xaa, 0xc9, 0x44, 0x9b, 0x6d, 0x57, 0xa3, 0xe4, 0xb3, + 0xd3, 0x2d, 0x9a, 0x57, 0xb5, 0x4a, 0xf6, 0x43, 0x7d, 0x0e, 0xb3, 0xd5, + 0x5e, 0xc2, 0xca, 0xc2, 0xa4, 0x87, 0x05, 0x44, 0xd9, 0x14, 0x72, 0x87, + 0x00, 0xa6, 0x0f, 0x8a, 0x20, 0x70, 0x48, 0x48, 0x7b, 0x8b, 0x11, 0x31, + 0x05, 0x35, 0x14, 0xcc, 0xb8, 0xe4, 0xe0, 0xb8, 0xca, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x3b, 0x00, 0xd3, 0x30, 0x00, 0x81, 0x68, 0x30, 0x16, 0x81, + 0xf7, 0x30, 0x21, 0x43, 0x60, 0x30, 0x3c, 0x87, 0x93, 0x30, 0x85, 0xec, + 0x1a, 0x37, 0x10, 0x7c, 0xd5, 0x30, 0x93, 0x47, 0xb0, 0x30, 0x3d, 0x42, + 0xeb, 0x30, 0x71, 0x40, 0xb1, 0x12, 0x17, 0xa0, 0xc6, 0x93, 0x01, 0xa4, + 0xc2, 0x89, 0x00, 0xd0, 0xc0, 0x90, 0x02, 0x44, 0xc0, 0x6c, 0x00, 0x68, + 0x88, 0x24, 0x0b, 0x84, 0xe6, 0x01, 0x83, 0x26, 0x48, 0x43, 0x06, 0xc0, + 0x85, 0x00, 0xe0, 0x55, 0x40, 0x9d, 0xd4, 0x43, 0x72, 0x69, 0x94, 0x05, + 0xcc, 0xb5, 0x40, 0xc8, 0xcc, 0x03, 0x07, 0xad, 0xd3, 0xd0, 0xb7, 0x67, + 0xd2, 0x9a, 0x9d, 0xa1, 0x4b, 0xa1, 0xa9, 0xc6, 0x8e, 0x34, 0x01, 0x61, + 0x28, 0xa5, 0x88, 0xc5, 0x95, 0x1c, 0x01, 0x12, 0x97, 0x56, 0xa5, 0x64, + 0xf5, 0x35, 0x6a, 0xd5, 0x12, 0xd8, 0x8b, 0x5d, 0x72, 0x23, 0xec, 0x2d, + 0xa1, 0xc1, 0x8e, 0xab, 0x97, 0xb8, 0xc9, 0x55, 0x0a, 0xaa, 0x0e, 0x17, + 0x5e, 0x07, 0x5c, 0x3e, 0xe7, 0x62, 0x3a, 0x3f, 0xb9, 0xd4, 0x56, 0x8a, + 0x98, 0xcc, 0xba, 0xc1, 0x7d, 0x86, 0x29, 0x63, 0xc5, 0x30, 0x9d, 0xa6, + 0x69, 0x83, 0xe3, 0x87, 0x75, 0xc8, 0xdd, 0xaa, 0x48, 0x75, 0x97, 0x66, + 0xb2, 0xf4, 0xfc, 0x1e, 0x9f, 0x7a, 0x28, 0x61, 0xbb, 0xe9, 0xe2, 0x46, + 0xd4, 0x70, 0x45, 0x30, 0xb3, 0x4b, 0xda, 0xc7, 0xb4, 0xbd, 0x6e, 0xfa, + 0xe5, 0xbf, 0x57, 0x79, 0x63, 0x8d, 0x22, 0x75, 0x73, 0xcc, 0x5e, 0xb1, + 0x3f, 0x8f, 0x67, 0x77, 0x59, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xc7, + 0xbc, 0x70, 0x40, 0x03, 0xfd, 0x63, 0x70, 0x66, 0xcd, 0xf8, 0x32, 0x24, + 0x62, 0x6e, 0x18, 0xd9, 0xc1, 0x0c, 0x6f, 0xf0, 0xcd, 0xc1, 0xb4, 0xb8, + 0x20, 0x8c, 0xf4, 0x09, 0xb8, 0x57, 0x5a, 0x90, 0xc2, 0xe3, 0x29, 0xdf, + 0x5a, 0x76, 0xc5, 0x92, 0x2a, 0xba, 0x56, 0xec, 0xb9, 0x38, 0x74, 0x91, + 0x20, 0xc8, 0xd8, 0x5c, 0x66, 0x3e, 0x96, 0x44, 0x82, 0xf9, 0x00, 0x01, + 0x49, 0xb5, 0x4a, 0x93, 0x75, 0x35, 0xea, 0xef, 0x79, 0x65, 0xed, 0xa9, + 0x31, 0xc5, 0xcc, 0xef, 0x7b, 0x79, 0x0e, 0xa2, 0x38, 0x02, 0x00, 0x87, + 0x46, 0x53, 0x31, 0x49, 0x03, 0x41, 0xd6, 0x18, 0x92, 0x29, 0x8a, 0xcf, + 0x62, 0x91, 0x03, 0xdd, 0x16, 0xf3, 0xba, 0x79, 0x4b, 0x54, 0x5e, 0xfa, + 0xf6, 0xd1, 0x2b, 0x42, 0xce, 0xbb, 0xdd, 0x88, 0x6d, 0xce, 0x9e, 0xce, + 0x7b, 0x59, 0x2f, 0xec, 0x9a, 0xb2, 0x3e, 0xb5, 0x56, 0xbd, 0xae, 0x9a, + 0xd1, 0xb5, 0x74, 0xa5, 0xec, 0xee, 0xec, 0xce, 0xa5, 0x64, 0x72, 0x14, + 0xec, 0x38, 0x25, 0x28, 0x00, 0x18, 0xa0, 0xd0, 0x41, 0xc0, 0xc6, 0x42, + 0x90, 0x28, 0x61, 0xd4, 0x48, 0x98, 0x08, 0x80, 0x02, 0x98, 0x11, 0x20, + 0x0c, 0x98, 0x14, 0x00, 0x21, 0x18, 0x22, 0xa0, 0x4c, 0x98, 0x45, 0xc0, + 0xc7, 0x18, 0xd5, 0x65, 0x35, 0x9e, 0x77, 0xe6, 0x65, 0x18, 0xe1, 0x20, + 0xfb, 0x98, 0x43, 0x80, 0xa3, 0x18, 0x1f, 0x40, 0xa2, 0x18, 0x15, 0x60, + 0xb8, 0x98, 0x2f, 0x40, 0x5c, 0x98, 0x0c, 0x80, 0x30, 0x18, 0x00, 0x60, + 0x16, 0x84, 0x01, 0x38, 0x84, 0xf4, 0x84, 0x01, 0x03, 0xc4, 0x53, 0x20, + 0xb0, 0x41, 0xe3, 0x92, 0x4a, 0xe8, 0xa9, 0xeb, 0xbd, 0x13, 0x94, 0x96, + 0x1b, 0x81, 0x84, 0x00, 0x31, 0x59, 0x5d, 0x98, 0x69, 0x56, 0x52, 0x3e, + 0xf0, 0x14, 0x11, 0x72, 0x91, 0x59, 0x54, 0xfc, 0xae, 0xa4, 0x41, 0xf4, + 0xaf, 0x00, 0x41, 0x96, 0x2f, 0xdb, 0xf8, 0x47, 0x67, 0x77, 0xda, 0x66, + 0xe9, 0x68, 0xea, 0xbe, 0x78, 0xee, 0xd2, 0xa6, 0xa2, 0x99, 0xde, 0xa2, + 0x3b, 0xeb, 0xb3, 0x44, 0x33, 0x4d, 0x7c, 0x67, 0x67, 0x7e, 0xde, 0xcb, + 0x41, 0xdf, 0x5b, 0x5f, 0xc4, 0xd5, 0xee, 0xc7, 0xaa, 0x6a, 0x8f, 0x8e, + 0xdf, 0xd3, 0xf6, 0x8f, 0xb5, 0x38, 0xd9, 0xd9, 0xfe, 0xfa, 0x89, 0xbf, + 0xb1, 0x1f, 0xef, 0xdc, 0xed, 0xdf, 0x33, 0xfb, 0xb6, 0xff, 0x2f, 0xec, + 0xe3, 0xf9, 0x7e, 0xcf, 0xd9, 0x99, 0xf5, 0xe3, 0xc3, 0x7b, 0xc9, 0xab, + 0x63, 0x09, 0x66, 0xb9, 0x3c, 0x34, 0xe8, 0x4a, 0xc5, 0x93, 0x11, 0xa2, + 0x00, 0x00, 0x30, 0xd2, 0xcf, 0x62, 0xc7, 0xde, 0x77, 0x35, 0xf7, 0x7d, + 0xcd, 0xca, 0x77, 0xa1, 0x83, 0x23, 0xeb, 0xef, 0xe9, 0x1a, 0x22, 0x84, + 0x90, 0x1c, 0x59, 0xa4, 0x05, 0xce, 0x47, 0x71, 0xf8, 0x8c, 0x36, 0xe2, + 0x61, 0x12, 0xe6, 0x62, 0xfe, 0xa8, 0x77, 0xb5, 0x0a, 0xee, 0x53, 0xa6, + 0xa9, 0xb2, 0x36, 0xee, 0xaa, 0xbc, 0xd7, 0xab, 0x6f, 0x2f, 0x4f, 0xd5, + 0x5a, 0x57, 0x75, 0x4d, 0x91, 0x1e, 0xec, 0xaf, 0xcd, 0xdc, 0xba, 0x33, + 0xb3, 0xb6, 0x5a, 0x2f, 0x4a, 0x1d, 0xb9, 0x19, 0x8c, 0x5a, 0xb3, 0x2c, + 0xcf, 0xb8, 0x37, 0x59, 0xc8, 0x68, 0x00, 0x2d, 0xca, 0x72, 0x82, 0x63, + 0x1c, 0xc0, 0xc0, 0x01, 0x80, 0x31, 0xa1, 0x05, 0x99, 0x94, 0x33, 0xa6, + 0x20, 0xa6, 0xa2, 0x99, 0x97, 0x1c, 0x9c, 0x17, 0x19, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x50, 0x0c, 0x07, 0xd0, 0x29, 0x0c, 0x0d, 0xa0, 0x3a, 0xcc, 0x0b, + 0xb0, 0x52, 0x8c, 0x12, 0xa0, 0x89, 0xcc, 0x25, 0xb1, 0x43, 0x8c, 0x73, + 0xe8, 0x49, 0xcf, 0x49, 0xa9, 0x9e, 0x0c, 0x7a, 0xa1, 0x4c, 0xcc, 0x15, + 0xf0, 0x66, 0x8c, 0x0e, 0x80, 0x30, 0x4c, 0x1d, 0x10, 0x6b, 0x8c, 0x4a, + 0x00, 0x29, 0x8c, 0x1c, 0xa0, 0x1e, 0xcc, 0x04, 0xd0, 0x0a, 0x0c, 0x09, + 0xc0, 0x00, 0xc7, 0x80, 0x80, 0x04, 0x84, 0x45, 0x47, 0x03, 0x4c, 0x7f, + 0x81, 0x48, 0x1e, 0xcd, 0x62, 0x30, 0xbc, 0x30, 0x6d, 0xe5, 0xff, 0x2d, + 0xa8, 0x3c, 0x57, 0x2f, 0xb1, 0x4b, 0x8b, 0x66, 0xa5, 0x99, 0x63, 0x9b, + 0x94, 0xcd, 0xe0, 0xcd, 0xf1, 0xad, 0x84, 0xfc, 0xb5, 0x8e, 0x63, 0xaa, + 0xfa, 0x9e, 0x79, 0xe9, 0xee, 0x6a, 0x35, 0x16, 0x7e, 0xdd, 0x75, 0xb1, + 0x4d, 0x9b, 0xe4, 0x71, 0xf7, 0x73, 0xad, 0x84, 0xb2, 0xca, 0x22, 0xa8, + 0x2e, 0xad, 0x4d, 0x4b, 0xa2, 0xb5, 0xb9, 0x2c, 0x74, 0x57, 0x65, 0xbe, + 0x42, 0x42, 0xf8, 0x35, 0xa9, 0x5c, 0x7b, 0xb6, 0xa6, 0xf3, 0x37, 0x19, + 0xc5, 0xfd, 0xbc, 0xda, 0x49, 0x9f, 0x28, 0xa1, 0x43, 0x09, 0xdc, 0x0a, + 0xb6, 0xc6, 0x37, 0x6a, 0x5e, 0x2b, 0xab, 0xee, 0x2d, 0xea, 0x5b, 0x04, + 0x2c, 0x52, 0xf2, 0x4b, 0x6a, 0x2b, 0x90, 0xe2, 0x18, 0x55, 0x35, 0x56, + 0x94, 0x5f, 0x91, 0x8c, 0xa3, 0xf5, 0x5d, 0x41, 0x2a, 0x85, 0x6d, 0xec, + 0xd0, 0xda, 0x85, 0x9e, 0x8d, 0x73, 0x0b, 0x1e, 0x0c, 0x34, 0xcc, 0x60, + 0x89, 0x34, 0x48, 0x24, 0x2c, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd6, + 0xe9, 0x70, 0x41, 0x0b, 0xfb, 0x4b, 0x70, 0x68, 0x8d, 0xf8, 0x11, 0x3c, + 0x68, 0x6e, 0x19, 0x45, 0xc1, 0x08, 0x4f, 0xec, 0xcd, 0xc1, 0xf2, 0xb7, + 0xdf, 0xc1, 0x91, 0x99, 0xb8, 0x0e, 0x20, 0x00, 0x82, 0x6c, 0x79, 0x79, + 0xa9, 0x5b, 0xde, 0x9e, 0x14, 0x96, 0xd4, 0x2b, 0x4b, 0x8b, 0xe4, 0x92, + 0x67, 0xfe, 0xb0, 0x04, 0xd6, 0xd5, 0x23, 0x3e, 0x73, 0x7b, 0x7f, 0x3c, + 0x99, 0x67, 0x5c, 0xfd, 0x7b, 0xfd, 0xc5, 0xd5, 0xfd, 0xeb, 0xdd, 0x43, + 0x77, 0xd7, 0x5f, 0x2f, 0xd5, 0xdf, 0x6c, 0xfd, 0xee, 0xd7, 0x5f, 0xd4, + 0xda, 0xc4, 0x4e, 0xd4, 0xb1, 0x17, 0x5f, 0x6d, 0xc7, 0x0b, 0x55, 0xfe, + 0xaf, 0xcd, 0x2b, 0x57, 0x5f, 0x3f, 0x5f, 0xf3, 0xbd, 0x6d, 0x29, 0xdc, + 0x5a, 0xd2, 0x53, 0xd7, 0xdd, 0xbb, 0xca, 0xd9, 0xd8, 0xe1, 0xae, 0x92, + 0xb2, 0x9a, 0x15, 0x54, 0x6c, 0x0d, 0xb3, 0xa4, 0x87, 0x05, 0x62, 0x82, + 0xc2, 0x30, 0xbd, 0x28, 0x21, 0x00, 0x6c, 0xc0, 0x10, 0x01, 0xf8, 0xc0, + 0xa1, 0x03, 0x0c, 0xc1, 0x28, 0x05, 0xb0, 0xc2, 0x4b, 0x0c, 0xec, 0xc6, + 0xc6, 0x49, 0x30, 0xf7, 0x6a, 0x66, 0x64, 0xc7, 0x58, 0x0e, 0x68, 0xc2, + 0x8f, 0x08, 0x14, 0xc1, 0x51, 0x05, 0xfc, 0xc1, 0x66, 0x07, 0x48, 0xc2, + 0xd1, 0x02, 0x60, 0xc1, 0x01, 0x01, 0xa4, 0xc0, 0x2c, 0x01, 0x18, 0xc0, + 0x1a, 0x00, 0x35, 0x0d, 0x02, 0xa0, 0x40, 0x80, 0x63, 0x2d, 0xdf, 0x3b, + 0x40, 0x55, 0x2e, 0x8a, 0xc8, 0xd9, 0x4d, 0x34, 0xcb, 0xa3, 0x3b, 0x95, + 0xa8, 0x49, 0x89, 0x00, 0x49, 0xaa, 0xc8, 0xe0, 0x17, 0xe6, 0xfd, 0x23, + 0xeb, 0x84, 0x42, 0x55, 0x01, 0x2e, 0x29, 0x7e, 0x74, 0x70, 0x1d, 0x48, + 0x6e, 0x23, 0x66, 0xd6, 0xbe, 0x41, 0x86, 0xbe, 0xf7, 0x59, 0x9d, 0x33, + 0xb4, 0x76, 0x15, 0x56, 0xfb, 0xed, 0xe7, 0xbf, 0xc4, 0xfc, 0xef, 0x32, + 0xff, 0xe5, 0x52, 0xb1, 0x37, 0x7d, 0xca, 0x29, 0xdb, 0xc2, 0x53, 0x71, + 0xda, 0xa5, 0xde, 0x60, 0x25, 0x2e, 0x7b, 0x9c, 0xec, 0xde, 0xa5, 0x5b, + 0x06, 0xbf, 0xfd, 0xf3, 0xdb, 0x29, 0xde, 0x3c, 0x6c, 0x47, 0xca, 0x57, + 0xbc, 0x36, 0xdc, 0xed, 0xb4, 0xb3, 0xf6, 0x6e, 0x74, 0xfd, 0xc3, 0x3d, + 0x7b, 0x7b, 0x86, 0xd9, 0xc7, 0xcc, 0x7c, 0xcd, 0xa3, 0xed, 0xf6, 0x35, + 0xb1, 0x3c, 0x8d, 0x46, 0xcf, 0xd3, 0xe3, 0x81, 0x91, 0x14, 0x85, 0x96, + 0x40, 0x3c, 0xb6, 0xa3, 0x56, 0x35, 0x77, 0x93, 0x7a, 0xc2, 0xa6, 0x53, + 0x78, 0x5e, 0x95, 0x21, 0x90, 0x0b, 0x6d, 0xb3, 0x00, 0x0c, 0x50, 0x63, + 0x20, 0x86, 0x46, 0xf8, 0x52, 0x36, 0x91, 0x14, 0x94, 0xb8, 0x64, 0xc4, + 0x1c, 0x3d, 0x59, 0x33, 0x75, 0x63, 0xcf, 0xcf, 0xb1, 0xaf, 0x4f, 0x31, + 0x8c, 0xf6, 0xdd, 0xf7, 0x77, 0xe3, 0xcc, 0x6e, 0x37, 0x87, 0xd3, 0x5b, + 0xdf, 0xb8, 0xfe, 0x73, 0xbd, 0x66, 0x36, 0xb6, 0xf7, 0xb9, 0xf7, 0x35, + 0x59, 0xe6, 0x77, 0xcb, 0xdf, 0x9c, 0xc7, 0xef, 0xdf, 0xe4, 0x6e, 0xb5, + 0x15, 0xf3, 0x18, 0xee, 0xfa, 0xfe, 0x35, 0xfc, 0x36, 0xfd, 0x7c, 0xff, + 0x7b, 0xeb, 0xef, 0xce, 0xd7, 0x22, 0xc9, 0x28, 0xb6, 0x23, 0x05, 0x95, + 0xba, 0xc7, 0x95, 0xa9, 0xce, 0x82, 0xa0, 0x0c, 0x98, 0x30, 0x00, 0xe2, + 0x3c, 0x0c, 0x06, 0x90, 0x82, 0x69, 0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, + 0x27, 0x05, 0xc6, 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xf6, 0x00, 0x03, 0x01, 0x58, 0x05, 0xd3, 0x01, 0x1c, 0x04, 0x23, + 0x02, 0x78, 0x09, 0x53, 0x04, 0x1c, 0x10, 0x43, 0x08, 0x00, 0x26, 0x93, + 0x18, 0x24, 0xea, 0xe3, 0xcc, 0xcd, 0x37, 0xf3, 0x1b, 0x7c, 0x24, 0xa3, + 0x06, 0xa8, 0x01, 0x50, 0x40, 0x1c, 0x06, 0x06, 0x40, 0x2c, 0x26, 0x11, + 0x48, 0x12, 0xa6, 0x06, 0x58, 0x0c, 0x06, 0x00, 0xe0, 0x00, 0x43, 0x40, + 0x0f, 0x2e, 0x95, 0x9c, 0x0a, 0x04, 0x08, 0xe2, 0x66, 0x08, 0x07, 0xb4, + 0xaa, 0x5a, 0xd0, 0x47, 0x74, 0xf0, 0x55, 0xad, 0xd8, 0x30, 0xc1, 0x61, + 0x1b, 0x53, 0x10, 0x73, 0xee, 0xbf, 0xe3, 0x57, 0x16, 0xf4, 0x3d, 0x4d, + 0x9d, 0x23, 0x1f, 0xa1, 0xdd, 0xac, 0x6d, 0xb9, 0xd3, 0x77, 0xf1, 0xca, + 0x54, 0xff, 0x67, 0xf4, 0x57, 0xf1, 0x8a, 0xc0, 0x84, 0x47, 0xab, 0x31, + 0x9a, 0xc3, 0x64, 0x43, 0x0b, 0x99, 0xa4, 0xb2, 0xa5, 0x4e, 0xa8, 0x74, + 0x24, 0xca, 0x56, 0xa1, 0xa1, 0x22, 0xb1, 0x90, 0xcc, 0xa7, 0x42, 0xa1, + 0xc5, 0xd4, 0xa7, 0x5d, 0x0c, 0x55, 0x44, 0x46, 0x21, 0xd5, 0x2c, 0xe8, + 0xd5, 0x88, 0x3a, 0x45, 0xd4, 0xc8, 0x5d, 0x55, 0x50, 0xcc, 0x96, 0x22, + 0xde, 0x26, 0xa2, 0x4a, 0xa8, 0x23, 0x23, 0xfd, 0xf4, 0x95, 0xea, 0x95, + 0x72, 0xb1, 0xed, 0x78, 0xf1, 0x27, 0x43, 0x95, 0x9a, 0x2a, 0x1d, 0x1e, + 0x50, 0x51, 0xc2, 0x42, 0x68, 0x00, 0x0a, 0x47, 0x33, 0x34, 0x59, 0xca, + 0x96, 0x9a, 0x0a, 0x45, 0x17, 0xfd, 0x43, 0xd4, 0xa5, 0x95, 0x7a, 0xaf, + 0xa1, 0xe7, 0xa0, 0x2a, 0x74, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd6, + 0x1b, 0x70, 0x42, 0x93, 0xfc, 0x2b, 0x70, 0x60, 0x8e, 0x08, 0x21, 0x50, + 0x65, 0x6e, 0x1e, 0xa1, 0xc0, 0xfe, 0x0f, 0xf1, 0x8d, 0xc2, 0x29, 0x38, + 0x1f, 0x81, 0x91, 0xa1, 0xb8, 0xfe, 0xd3, 0x52, 0x4e, 0xed, 0xf6, 0x6d, + 0x92, 0x62, 0xdb, 0x4e, 0x9b, 0x3d, 0x99, 0x5b, 0xaa, 0x15, 0x56, 0xfa, + 0x2c, 0xfb, 0xaf, 0x7d, 0x1d, 0xfc, 0xd9, 0x55, 0xd7, 0x57, 0xa5, 0xcf, + 0x55, 0xe5, 0xea, 0x8e, 0x73, 0xf5, 0x2a, 0x74, 0x76, 0x4d, 0x08, 0x53, + 0xf4, 0x97, 0xda, 0x8d, 0x56, 0x93, 0x22, 0x9a, 0xa8, 0xf5, 0x56, 0x34, + 0xc4, 0x4a, 0x0c, 0x29, 0x83, 0x55, 0x06, 0x87, 0x4e, 0x48, 0x39, 0x90, + 0x81, 0xf0, 0xe8, 0x70, 0x3a, 0x60, 0x2d, 0x81, 0x70, 0x60, 0x41, 0x81, + 0xc2, 0x60, 0x55, 0x04, 0x14, 0x60, 0xaa, 0x87, 0x2a, 0x61, 0x4f, 0x0f, + 0xdc, 0x63, 0xb0, 0xdb, 0x32, 0x7e, 0x8c, 0xfd, 0x48, 0x64, 0x4c, 0x91, + 0x16, 0x61, 0xd6, 0x08, 0x00, 0x61, 0x49, 0x04, 0x7c, 0x61, 0xab, 0x83, + 0x76, 0x63, 0x94, 0x01, 0x4e, 0x61, 0x52, 0x00, 0xe0, 0x60, 0x4c, 0x80, + 0x58, 0x2c, 0x05, 0xb9, 0x40, 0xbc, 0x50, 0x42, 0x44, 0x34, 0x32, 0xa7, + 0x2c, 0xe3, 0xe1, 0x74, 0x90, 0x83, 0xe7, 0x10, 0xce, 0xf7, 0x5d, 0xea, + 0xd1, 0xbb, 0x10, 0x68, 0x80, 0x31, 0x2b, 0x94, 0x53, 0xd3, 0x2a, 0xf8, + 0x6a, 0x53, 0x06, 0x52, 0xd9, 0xb1, 0x61, 0x16, 0xe5, 0xfb, 0x95, 0xc0, + 0x0d, 0x1d, 0x92, 0x3b, 0x93, 0x7b, 0xd7, 0xbb, 0x3a, 0x94, 0xe1, 0x2f, + 0x8b, 0xac, 0x23, 0xea, 0x73, 0x07, 0x25, 0x68, 0xb0, 0xe5, 0x23, 0xad, + 0x7e, 0x8d, 0x61, 0xc1, 0xa1, 0x72, 0x66, 0x89, 0x94, 0x28, 0x8e, 0x26, + 0x5f, 0x3e, 0xe8, 0x0e, 0x92, 0x1f, 0x36, 0xbd, 0xa8, 0x6e, 0x92, 0x07, + 0x44, 0x6b, 0xf3, 0xe8, 0xa2, 0x58, 0xcd, 0x1f, 0xe3, 0x23, 0xb7, 0x90, + 0x63, 0x76, 0x14, 0x38, 0xda, 0xf2, 0xd7, 0x54, 0xa7, 0xe7, 0x6e, 0x40, + 0xa9, 0x96, 0x61, 0x4c, 0xb0, 0xa5, 0xca, 0x33, 0x4f, 0xde, 0xc4, 0x9b, + 0xef, 0xd5, 0x0f, 0xdf, 0x4a, 0xfc, 0x49, 0x61, 0x67, 0xce, 0x0f, 0xcf, + 0x1a, 0x73, 0xf4, 0xea, 0x35, 0x50, 0x5e, 0xbc, 0xb9, 0x2d, 0x1e, 0x58, + 0xb8, 0xed, 0xe5, 0x97, 0x5c, 0xae, 0xa4, 0xd9, 0x39, 0x8e, 0xc5, 0xb6, + 0x2c, 0xfb, 0xcf, 0x65, 0xcf, 0xe8, 0xa9, 0x23, 0xc6, 0x6f, 0x9d, 0x15, + 0x59, 0x39, 0x13, 0xae, 0xe1, 0xca, 0x13, 0x61, 0x40, 0x88, 0x6b, 0x58, + 0xfc, 0x41, 0xf8, 0xc8, 0xe5, 0x36, 0xa6, 0x2b, 0x59, 0xb1, 0x3d, 0x4f, + 0x2d, 0xc0, 0x50, 0x23, 0x0a, 0x51, 0xcd, 0xd0, 0x2f, 0x60, 0x52, 0x1c, + 0x20, 0x02, 0x98, 0x5a, 0x8a, 0xcc, 0xf4, 0x20, 0xe0, 0xd3, 0xeb, 0x43, + 0x10, 0xcd, 0x04, 0x90, 0x9b, 0x78, 0x1d, 0x4a, 0xa3, 0x99, 0x8e, 0xb8, + 0xd5, 0xf5, 0x85, 0x9e, 0xd9, 0x16, 0xe2, 0xf1, 0x93, 0x6b, 0xce, 0x6d, + 0x43, 0x55, 0xc7, 0x1d, 0xf0, 0xc8, 0x8e, 0x8d, 0x24, 0x36, 0xac, 0xf3, + 0x63, 0xa2, 0x06, 0xe3, 0x19, 0x69, 0x46, 0xf2, 0xf0, 0xcc, 0xf5, 0x6f, + 0x65, 0x41, 0x4d, 0x51, 0xbc, 0xa1, 0x77, 0x32, 0xaa, 0x42, 0xa9, 0x94, + 0xfe, 0x55, 0x55, 0xc6, 0xa3, 0xb8, 0x48, 0x2a, 0xe1, 0xae, 0x8d, 0xb9, + 0x3c, 0xa3, 0x5c, 0x83, 0x09, 0x3a, 0x8e, 0x18, 0x1f, 0x18, 0x48, 0x1a, + 0x79, 0x20, 0x50, 0x74, 0x20, 0x88, 0x85, 0x08, 0xa0, 0x34, 0x3e, 0x17, + 0x06, 0x4c, 0x17, 0x13, 0x26, 0x20, 0xa6, 0xa2, 0x99, 0x97, 0x1c, 0x9c, + 0x17, 0x19, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x00, 0x37, 0xc8, 0x00, 0x60, 0x24, 0x80, 0x48, 0x60, 0x38, 0x00, + 0x8e, 0x60, 0x4f, 0x80, 0x1c, 0x60, 0x85, 0x00, 0x42, 0x61, 0x07, 0x80, + 0xec, 0x63, 0x10, 0x07, 0x82, 0x79, 0xe1, 0x0b, 0x0c, 0x3c, 0x70, 0xa9, + 0x83, 0xf2, 0x06, 0x69, 0x81, 0x1e, 0x08, 0xc8, 0x10, 0x1a, 0x43, 0x01, + 0xc8, 0x08, 0x83, 0x00, 0x90, 0x06, 0x30, 0x48, 0x02, 0x00, 0xa0, 0x16, + 0xd5, 0x58, 0xaa, 0x12, 0xd7, 0x42, 0x0e, 0x09, 0xc3, 0x9a, 0x0c, 0xba, + 0xf4, 0xee, 0x59, 0x36, 0x1b, 0x95, 0xed, 0xe0, 0x38, 0x0f, 0x2f, 0x9a, + 0xaf, 0x28, 0x98, 0xb7, 0x71, 0xa0, 0xe3, 0x29, 0xaf, 0x1f, 0x54, 0x73, + 0x36, 0x3b, 0x4f, 0x2c, 0x4f, 0x19, 0x64, 0x4f, 0xb4, 0xd8, 0x44, 0xb7, + 0x7f, 0x77, 0xac, 0x3e, 0x0f, 0x70, 0xe1, 0x54, 0x4a, 0x1f, 0x91, 0x9c, + 0xc1, 0x19, 0xc0, 0xa4, 0x2b, 0x37, 0xc8, 0x65, 0x27, 0xb8, 0xc0, 0x94, + 0x8b, 0xa4, 0x79, 0x03, 0x12, 0xf3, 0xd5, 0xa2, 0x52, 0x71, 0x04, 0x4b, + 0x0b, 0x94, 0xf7, 0x68, 0x24, 0xaa, 0x7f, 0xf6, 0x87, 0x7c, 0xac, 0x2c, + 0xa7, 0x0e, 0xf3, 0x4c, 0xf7, 0x23, 0xf9, 0x4a, 0x92, 0x95, 0x6e, 0xff, + 0xf7, 0xa4, 0x5d, 0x73, 0x25, 0x8b, 0x51, 0x62, 0x60, 0x9c, 0x23, 0xe0, + 0x49, 0x89, 0x1c, 0x67, 0x31, 0xc5, 0x04, 0x84, 0xc8, 0x01, 0xf1, 0x2f, + 0x2c, 0xaa, 0xa5, 0xeb, 0x38, 0xda, 0xc7, 0x57, 0xf3, 0xbd, 0xbe, 0x6d, + 0x08, 0xde, 0x70, 0x8e, 0xce, 0xb6, 0x6a, 0x44, 0xe4, 0x7f, 0x5b, 0x73, + 0x5c, 0x66, 0xfe, 0x37, 0xc9, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x09, 0xd5, + 0xda, 0x6f, 0x43, 0x33, 0xfb, 0x1b, 0x72, 0x67, 0x4e, 0x08, 0x21, 0x68, + 0x65, 0x6e, 0x1d, 0x19, 0xbf, 0x02, 0x4f, 0xf1, 0x2d, 0xc2, 0x2c, 0x38, + 0x1f, 0x81, 0xa1, 0xa5, 0xb8, 0x91, 0xe4, 0xe8, 0xba, 0x12, 0xd6, 0xf4, + 0x97, 0x66, 0xac, 0xa6, 0x5c, 0xfb, 0x91, 0x6c, 0xf6, 0x6c, 0xf4, 0x99, + 0x91, 0xeb, 0xeb, 0x99, 0x11, 0xb5, 0x4a, 0xa9, 0x55, 0x6b, 0x2d, 0x13, + 0x64, 0x96, 0xab, 0xc9, 0xdb, 0x52, 0xa9, 0xa8, 0x8a, 0x57, 0xe5, 0x95, + 0x15, 0x6e, 0xaf, 0x9d, 0x46, 0x4b, 0x18, 0xce, 0x2c, 0xc7, 0x53, 0x09, + 0x3a, 0x8a, 0x8a, 0x88, 0x94, 0xc2, 0x6e, 0x20, 0xe5, 0x10, 0x15, 0x00, + 0x44, 0xd0, 0x60, 0xf4, 0x80, 0xc0, 0x90, 0x02, 0xa4, 0xc0, 0x6b, 0x05, + 0x38, 0xc0, 0x44, 0x06, 0x64, 0xc0, 0x4b, 0x0b, 0x28, 0xc0, 0x98, 0x19, + 0x1c, 0xc2, 0x69, 0x91, 0x80, 0xd6, 0x59, 0xcc, 0x24, 0xc1, 0xc9, 0x1a, + 0x40, 0xc1, 0x0d, 0x0a, 0x04, 0xc1, 0xb5, 0x02, 0xa4, 0x38, 0x54, 0x43, + 0x17, 0xdc, 0x05, 0xb3, 0x08, 0x44, 0x03, 0xa3, 0x01, 0x80, 0x04, 0xf3, + 0x01, 0xac, 0x01, 0xc3, 0x00, 0x00, 0x42, 0xe0, 0x11, 0x08, 0x1c, 0xc7, + 0x94, 0xe3, 0x69, 0x84, 0x90, 0xa5, 0x8f, 0x36, 0x8d, 0x39, 0xf4, 0x88, + 0xc0, 0x52, 0xf9, 0x64, 0x7e, 0xc1, 0x80, 0x42, 0x50, 0x03, 0xeb, 0x0a, + 0x7e, 0x17, 0xe4, 0x1f, 0x30, 0xfb, 0xc4, 0xaa, 0xea, 0x22, 0x4c, 0x06, + 0x8d, 0xcb, 0xa5, 0xf0, 0x1a, 0xd8, 0x56, 0x37, 0x2a, 0x4b, 0xcc, 0xf0, + 0x89, 0xd1, 0x76, 0xc6, 0x54, 0x31, 0xba, 0x90, 0x29, 0xa7, 0x20, 0xc2, + 0x29, 0x7d, 0xb4, 0xe0, 0xba, 0x9f, 0x6f, 0xb2, 0xe5, 0x93, 0x8f, 0x56, + 0x0c, 0x7c, 0xb6, 0xf5, 0x4e, 0xa2, 0x68, 0x9b, 0xd5, 0x0d, 0x12, 0x83, + 0xa8, 0x5d, 0x4c, 0x2b, 0x05, 0x4b, 0x1d, 0x55, 0x46, 0xd1, 0xad, 0x15, + 0x23, 0x68, 0xd5, 0xe8, 0xe6, 0x4f, 0x26, 0x9a, 0x8e, 0xd7, 0xb4, 0x6a, + 0xda, 0x51, 0x0f, 0xd4, 0x15, 0x43, 0x44, 0x13, 0x62, 0x11, 0x52, 0x4f, + 0xf3, 0xe8, 0x59, 0x69, 0x3c, 0x8d, 0xae, 0x86, 0xf2, 0x7d, 0x23, 0xd6, + 0xce, 0xa1, 0x73, 0x7a, 0x72, 0x2d, 0xd2, 0x54, 0xce, 0x34, 0xfb, 0xbb, + 0xea, 0x4b, 0x1c, 0xf4, 0x49, 0xc8, 0xd9, 0x1a, 0x08, 0xd9, 0x02, 0x32, + 0x03, 0xa5, 0xd5, 0x1b, 0x0a, 0x2b, 0x22, 0xc7, 0x8e, 0x40, 0x76, 0x9f, + 0x41, 0x0c, 0xda, 0xc6, 0x93, 0x3b, 0x5b, 0xb3, 0x94, 0xba, 0xcd, 0x30, + 0xb2, 0x44, 0x10, 0x18, 0x3b, 0xa1, 0x08, 0xc1, 0x26, 0x18, 0x5c, 0x88, + 0xcb, 0xed, 0x4b, 0x36, 0x45, 0x84, 0xc8, 0xa1, 0x76, 0x22, 0x24, 0x02, + 0x3d, 0x66, 0xc1, 0x39, 0x55, 0xc7, 0xc3, 0x63, 0x2c, 0xdb, 0x86, 0x7f, + 0x57, 0xb4, 0xb3, 0x1b, 0x4c, 0x7a, 0xdf, 0x38, 0xd4, 0x33, 0x1f, 0x95, + 0x4d, 0x46, 0xf7, 0x23, 0x39, 0x2c, 0xad, 0xcf, 0xd2, 0x4a, 0x5c, 0x6e, + 0x2b, 0x39, 0xcf, 0xc9, 0xdf, 0xbf, 0xad, 0x41, 0xb7, 0x6c, 0x32, 0xfa, + 0x2b, 0x67, 0x67, 0x5e, 0x2f, 0xa8, 0x2b, 0x9b, 0xdf, 0x9f, 0x73, 0xb7, + 0x2a, 0xbe, 0x9c, 0xeb, 0xd4, 0xe3, 0x5b, 0x28, 0xc6, 0xaf, 0x6a, 0xa5, + 0x6a, 0x4c, 0xb4, 0xbe, 0xa6, 0x84, 0xb9, 0x75, 0x10, 0xb9, 0x0a, 0x34, + 0x5a, 0xe5, 0x8b, 0x10, 0xb0, 0xe0, 0x30, 0xd9, 0xc1, 0xd0, 0xc9, 0x92, + 0x21, 0x84, 0xc6, 0x13, 0x10, 0x53, 0x51, 0x4c, 0xcb, 0x8e, 0x4e, 0x0b, + 0x8c, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x1a, 0x40, 0x00, 0x50, 0x10, 0xa6, 0x02, 0x68, 0x08, 0xa6, 0x03, + 0xb0, 0x00, 0xa6, 0x0a, 0x48, 0x20, 0xe6, 0x0f, 0xe0, 0x74, 0xc6, 0x13, + 0x50, 0xe0, 0x47, 0xa6, 0x5b, 0xb9, 0x86, 0x14, 0xc0, 0x67, 0xa6, 0x0c, + 0x88, 0x30, 0xc6, 0x0a, 0x08, 0x2e, 0x86, 0x04, 0x80, 0x2e, 0x66, 0x0e, + 0x60, 0x11, 0xe6, 0x02, 0x90, 0x05, 0xe6, 0x00, 0x98, 0x06, 0x43, 0x80, + 0x1b, 0x98, 0xa1, 0x21, 0x90, 0x87, 0x82, 0x87, 0x0c, 0xb6, 0x90, 0x1d, + 0xec, 0x63, 0x41, 0x20, 0x50, 0xc2, 0x50, 0x92, 0xf0, 0x20, 0x78, 0xf0, + 0x28, 0x40, 0x12, 0x01, 0x90, 0x65, 0x45, 0x13, 0x9c, 0x38, 0x25, 0x93, + 0x2b, 0x96, 0x1c, 0xbc, 0x54, 0x75, 0x88, 0x2f, 0x76, 0xd1, 0x6b, 0x2c, + 0x2b, 0x76, 0x66, 0x2b, 0x61, 0xd4, 0x85, 0x2f, 0xd7, 0x29, 0xe9, 0x5e, + 0x4e, 0x5b, 0xc8, 0xf7, 0x3f, 0xce, 0x8c, 0x42, 0xbc, 0xe3, 0xf7, 0x02, + 0xb9, 0x4b, 0xc6, 0x3e, 0x20, 0x07, 0xe2, 0x60, 0x78, 0x39, 0x03, 0x84, + 0x32, 0x04, 0x40, 0x88, 0x1a, 0x83, 0x60, 0x94, 0x83, 0x8c, 0x39, 0x86, + 0xa4, 0xd5, 0x93, 0xdf, 0xcc, 0xd4, 0xaa, 0xfc, 0x3a, 0xf1, 0xa1, 0x4a, + 0xcf, 0x7b, 0x53, 0xf7, 0x65, 0x3b, 0x55, 0xd0, 0xf7, 0x1b, 0x24, 0x10, + 0x92, 0xd4, 0xb7, 0x5b, 0x7d, 0x96, 0xfc, 0x48, 0xf5, 0x7a, 0xb5, 0xb4, + 0xe2, 0xbe, 0xe4, 0x57, 0x97, 0x3e, 0x65, 0x5a, 0x29, 0x29, 0x88, 0xdb, + 0xaa, 0xea, 0x75, 0x69, 0xdb, 0x87, 0x7a, 0xb4, 0x49, 0x89, 0x2d, 0x94, + 0xc1, 0x66, 0x7a, 0x3c, 0x6a, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd7, + 0x28, 0x70, 0x42, 0x13, 0xfb, 0x43, 0x70, 0x63, 0xae, 0x08, 0x22, 0x60, + 0x65, 0x6e, 0x26, 0x61, 0xc0, 0xf2, 0x0f, 0xe5, 0xed, 0xc1, 0xed, 0xb8, + 0x1f, 0xc0, 0xf1, 0xa1, 0xb8, 0x29, 0x08, 0x78, 0x70, 0x30, 0xf1, 0x50, + 0xf4, 0x41, 0x06, 0x40, 0x01, 0x78, 0xc3, 0x55, 0x75, 0x6f, 0x3b, 0xb8, + 0xf7, 0x0c, 0xf5, 0x86, 0x1a, 0x91, 0xdb, 0xfe, 0x77, 0x23, 0xdc, 0xff, + 0x7f, 0xea, 0xd3, 0x72, 0x72, 0xcc, 0x7d, 0xc3, 0xca, 0x0a, 0xea, 0x54, + 0x41, 0xf5, 0x1c, 0xac, 0x6b, 0xa9, 0x16, 0x3d, 0x9e, 0x4e, 0xba, 0x5b, + 0xea, 0xfe, 0x95, 0x76, 0x7b, 0x28, 0xa1, 0xfe, 0xb7, 0xbc, 0xdd, 0x3a, + 0xa2, 0xb6, 0x6d, 0x8f, 0xd8, 0x8c, 0xae, 0xfd, 0x6e, 0x93, 0x9b, 0x75, + 0x52, 0x68, 0xfd, 0x96, 0xdb, 0xe7, 0x21, 0x96, 0x8d, 0x52, 0x94, 0xca, + 0xca, 0x49, 0xc6, 0x94, 0xc4, 0x66, 0x3d, 0xce, 0xc2, 0x48, 0x68, 0xc1, + 0xa5, 0x31, 0x80, 0x41, 0x00, 0x21, 0x81, 0x46, 0x0a, 0xe1, 0x82, 0xec, + 0x06, 0xe9, 0x82, 0x3a, 0x0f, 0x01, 0x88, 0x14, 0x3c, 0x99, 0x81, 0x50, + 0x64, 0x41, 0x92, 0x96, 0xb6, 0x69, 0xf0, 0x70, 0x7f, 0x09, 0xac, 0x38, + 0x3c, 0x09, 0x89, 0x7a, 0x0f, 0xb1, 0x82, 0x5c, 0x14, 0xe9, 0x86, 0x8a, + 0x29, 0xc1, 0x82, 0x24, 0x17, 0xc9, 0x86, 0xb0, 0x07, 0x29, 0x81, 0xe2, + 0x02, 0x41, 0x81, 0x0c, 0x01, 0xc9, 0xf6, 0x71, 0xc8, 0x09, 0xbe, 0xd1, + 0x52, 0x43, 0x94, 0xc6, 0xeb, 0x3f, 0x0e, 0xbc, 0xf0, 0x0b, 0x65, 0x53, + 0x1c, 0x93, 0x2a, 0x09, 0x8f, 0xa9, 0xcc, 0x69, 0xf2, 0x7f, 0x56, 0x5b, + 0x1e, 0x91, 0xb9, 0x8e, 0xf2, 0xb0, 0x2e, 0xf5, 0x61, 0x68, 0x0d, 0x35, + 0xcc, 0x49, 0xf7, 0x7d, 0xb9, 0x3a, 0x50, 0x98, 0x8a, 0xe6, 0x78, 0x13, + 0xa6, 0x1a, 0x6e, 0x2e, 0xf3, 0xcf, 0x0e, 0xb4, 0xe9, 0xb6, 0xbf, 0x32, + 0xac, 0x48, 0x96, 0xa9, 0xe5, 0x62, 0x24, 0xb7, 0xa7, 0x14, 0x6c, 0x46, + 0xea, 0x1e, 0x9f, 0x39, 0xa1, 0x3d, 0x71, 0x51, 0x21, 0x86, 0x49, 0x9e, + 0x7b, 0x24, 0x5b, 0x0d, 0x03, 0xe1, 0x89, 0x18, 0xea, 0x21, 0x6d, 0x8a, + 0x60, 0x92, 0x2a, 0x1c, 0xc6, 0x6a, 0x1a, 0x98, 0x54, 0x9a, 0x25, 0xf1, + 0x89, 0x8d, 0x4c, 0x86, 0x26, 0x90, 0xe5, 0x29, 0xd4, 0xa1, 0x8c, 0x8d, + 0x38, 0x24, 0x35, 0x94, 0x04, 0xad, 0x1e, 0x29, 0xd1, 0x8a, 0xd3, 0xf9, + 0x8c, 0x7d, 0x93, 0x84, 0xca, 0xaf, 0x48, 0x63, 0xd5, 0x0a, 0x28, 0x9b, + 0x2a, 0x4b, 0x69, 0x2a, 0x2c, 0x44, 0x35, 0x58, 0xd3, 0x19, 0x57, 0x07, + 0x29, 0xd3, 0x28, 0xc4, 0x48, 0x2b, 0x4f, 0xe2, 0x7b, 0xd3, 0x6a, 0x35, + 0x0a, 0xb5, 0x70, 0xc1, 0x2a, 0x2d, 0x0a, 0x1b, 0xc8, 0x99, 0xd6, 0x53, + 0xb3, 0x40, 0x5f, 0x84, 0x8a, 0x6b, 0x5a, 0x3a, 0x11, 0x68, 0xb5, 0x93, + 0xa5, 0x38, 0xa2, 0x32, 0x90, 0xe7, 0x6a, 0xa5, 0x49, 0xa3, 0x24, 0x75, + 0xd3, 0x0b, 0x42, 0xbe, 0x63, 0xc0, 0xca, 0x43, 0x88, 0x55, 0x4c, 0x43, + 0x8d, 0x5e, 0x9f, 0x6d, 0x84, 0x1d, 0x09, 0x85, 0xf1, 0xea, 0x37, 0x0e, + 0xb6, 0x22, 0xea, 0x4c, 0x47, 0xf1, 0x16, 0xc4, 0x78, 0x81, 0x3c, 0x02, + 0xb8, 0x2c, 0xce, 0xac, 0xc6, 0x8b, 0x2c, 0x48, 0x77, 0xa3, 0xe8, 0x35, + 0x89, 0x40, 0x20, 0x42, 0xb0, 0x43, 0x01, 0x28, 0x55, 0x86, 0xb9, 0xb9, + 0x66, 0x71, 0x12, 0x1c, 0x77, 0xaa, 0x47, 0x9c, 0x52, 0xc9, 0xce, 0x45, + 0x5a, 0xea, 0x22, 0x6a, 0xe6, 0xf5, 0x68, 0xd7, 0x59, 0xda, 0x97, 0x69, + 0x79, 0x85, 0x26, 0x69, 0xe6, 0xe7, 0x75, 0xbe, 0x47, 0xc6, 0xd3, 0x7f, + 0xcd, 0x3e, 0xb3, 0x77, 0xb5, 0xaf, 0x6d, 0x6b, 0x5b, 0xb2, 0xad, 0x2f, + 0xdd, 0x7d, 0xa9, 0xbd, 0x55, 0x0d, 0xa6, 0x89, 0x69, 0x6e, 0x56, 0x92, + 0xae, 0xaf, 0x9b, 0x75, 0x76, 0xdf, 0x4c, 0x7d, 0x44, 0x24, 0x5f, 0x13, + 0x4d, 0x02, 0xc5, 0x49, 0xbc, 0xc9, 0x4d, 0x0a, 0x51, 0xc4, 0x0d, 0x09, + 0x05, 0x87, 0x29, 0xce, 0x25, 0x41, 0x51, 0x14, 0x14, 0x0b, 0x90, 0x11, + 0x0a, 0x50, 0x8a, 0x26, 0x20, 0x0c, 0x02, 0x00, 0x10, 0x4c, 0x06, 0xd0, + 0x22, 0x4c, 0x04, 0x30, 0x2a, 0x4c, 0x09, 0xa0, 0x4d, 0x0c, 0x13, 0x30, + 0xa8, 0x4c, 0x33, 0x83, 0xd6, 0x8d, 0xa6, 0x04, 0x0c, 0xcc, 0x3a, 0xe0, + 0xcf, 0x0c, 0x18, 0x70, 0x62, 0xcc, 0x10, 0x30, 0x39, 0x4c, 0x13, 0x60, + 0x35, 0x0c, 0x21, 0x70, 0x0a, 0x4c, 0x0d, 0xd0, 0x09, 0xc1, 0x40, 0x28, + 0x31, 0x33, 0x20, 0xaf, 0x50, 0x06, 0xd1, 0x74, 0x3f, 0x1b, 0x55, 0xad, + 0x08, 0xd5, 0x84, 0xeb, 0xbb, 0xb5, 0x43, 0x3f, 0x92, 0xe5, 0xcd, 0x8c, + 0xf0, 0x5c, 0x2d, 0x25, 0xcb, 0x8b, 0x22, 0xc2, 0x40, 0xe3, 0x09, 0xc3, + 0xa8, 0x63, 0x1c, 0xa7, 0xca, 0x74, 0xff, 0x1a, 0x0b, 0xe8, 0xa3, 0xfd, + 0x1c, 0xc2, 0xc3, 0xa8, 0x2a, 0xb6, 0xb4, 0x43, 0x09, 0x7e, 0x78, 0xf1, + 0x0e, 0x84, 0xf1, 0x82, 0x65, 0x82, 0x54, 0x8e, 0x65, 0x7e, 0xc8, 0xe2, + 0xa6, 0xc2, 0x80, 0xe2, 0x44, 0xb2, 0x19, 0x24, 0xf0, 0xf9, 0x67, 0x4f, + 0xa8, 0x15, 0xe8, 0x79, 0xbe, 0xde, 0xbc, 0xa3, 0x6e, 0x4e, 0x46, 0x82, + 0xe6, 0x94, 0xba, 0xb5, 0x81, 0xda, 0xba, 0x74, 0xea, 0x3a, 0x75, 0xe5, + 0xd3, 0xe3, 0xf5, 0x5a, 0xc8, 0xe6, 0xa8, 0x5d, 0x31, 0x56, 0xe9, 0xf5, + 0xc3, 0x61, 0xcc, 0x8e, 0x4e, 0xbb, 0xbc, 0x25, 0xcc, 0x8c, 0x2e, 0x27, + 0x53, 0x0a, 0x9d, 0x30, 0xaf, 0xff, 0xfb, 0xd4, 0x60, 0x60, 0x8d, 0xf8, + 0xa5, 0x70, 0x3d, 0x8b, 0xef, 0x7b, 0x70, 0x5a, 0x4d, 0xe8, 0x20, 0x48, + 0x25, 0x6e, 0x23, 0x51, 0xbe, 0xf6, 0x4f, 0xe1, 0xed, 0xc1, 0x5d, 0xb7, + 0xa0, 0x80, 0xf0, 0x95, 0xb8, 0x66, 0xe9, 0xfb, 0x3b, 0x4f, 0x28, 0x0d, + 0xd7, 0xee, 0x4c, 0x90, 0x0d, 0x0a, 0x2f, 0x3c, 0x57, 0x2c, 0xad, 0x2f, + 0xc2, 0x6a, 0x7c, 0xc4, 0xe9, 0xe3, 0x5a, 0x95, 0x92, 0xc9, 0x25, 0x5c, + 0x39, 0x1b, 0xdc, 0x58, 0x5b, 0x1b, 0xd7, 0x99, 0xd8, 0xe2, 0xaa, 0x77, + 0x0e, 0x26, 0x16, 0xd8, 0x9c, 0x95, 0xfa, 0x61, 0x62, 0x6f, 0x3f, 0x58, + 0x57, 0x16, 0x66, 0x3f, 0x13, 0xcb, 0x93, 0xfc, 0xfb, 0x44, 0xb6, 0x2d, + 0xa9, 0xce, 0xd4, 0x41, 0x20, 0x2e, 0xe5, 0xe4, 0xcf, 0x3d, 0x89, 0xc2, + 0xbc, 0xca, 0x25, 0x25, 0x58, 0x2a, 0x46, 0xcc, 0x5c, 0x35, 0x4d, 0xce, + 0x9c, 0xa0, 0xb4, 0x0e, 0x1e, 0x09, 0xa8, 0xe1, 0x14, 0x10, 0x8d, 0x75, + 0xf5, 0x41, 0xd1, 0xb7, 0x2e, 0x80, 0xfc, 0x9e, 0x9d, 0xdf, 0x7f, 0x3f, + 0x44, 0x5b, 0xeb, 0x6d, 0x7a, 0x34, 0xfd, 0x5d, 0x26, 0x6a, 0x57, 0x27, + 0x47, 0xa5, 0xdf, 0xba, 0x3e, 0x8a, 0xc8, 0xa6, 0x67, 0xe8, 0x74, 0xcc, + 0xcb, 0xd3, 0x55, 0x54, 0xad, 0x2b, 0xa3, 0xb6, 0xa9, 0xe9, 0xdd, 0xdc, + 0x88, 0x47, 0x73, 0xa5, 0x15, 0x05, 0x44, 0x18, 0x82, 0x6a, 0x1e, 0x19, + 0x1c, 0x2e, 0xa1, 0x11, 0xa2, 0x82, 0xa2, 0x20, 0xa2, 0x88, 0x26, 0xda, + 0x18, 0x03, 0x80, 0x17, 0x98, 0x07, 0xc0, 0x69, 0x18, 0x14, 0x80, 0x12, + 0x98, 0x23, 0x60, 0x26, 0x18, 0x45, 0xc0, 0x55, 0x98, 0xd3, 0xe0, 0x2c, + 0x9e, 0xcc, 0x28, 0xec, 0x98, 0xe3, 0xe0, 0x71, 0x18, 0x40, 0x40, 0x52, + 0x18, 0x10, 0x40, 0x8d, 0x18, 0x07, 0x00, 0xce, 0x98, 0x38, 0xa0, 0x63, + 0x98, 0x05, 0xe0, 0x36, 0x18, 0x00, 0x00, 0x04, 0xa3, 0x62, 0xed, 0x78, + 0x9f, 0x56, 0xb6, 0x4c, 0x59, 0x23, 0x0f, 0x75, 0x22, 0x8f, 0x7c, 0x59, + 0xf1, 0x7d, 0xe1, 0xe6, 0x86, 0xea, 0xb3, 0xb9, 0x14, 0x30, 0xa8, 0xe3, + 0x68, 0xf9, 0x3c, 0xb4, 0x9a, 0x83, 0x77, 0x4e, 0xc7, 0x49, 0xd5, 0x0e, + 0x00, 0x34, 0xeb, 0x25, 0x7c, 0x97, 0x22, 0x1f, 0x51, 0x38, 0x53, 0x29, + 0x4f, 0xb8, 0x8c, 0x07, 0x1a, 0xad, 0x01, 0x31, 0xa8, 0x05, 0xc4, 0x99, + 0x94, 0xae, 0x4f, 0x88, 0x2c, 0xb1, 0x9c, 0xd4, 0x4c, 0x8a, 0x37, 0xcc, + 0x2b, 0x29, 0xf5, 0x42, 0xe0, 0xfc, 0x32, 0x9b, 0x4b, 0x9b, 0x74, 0x8a, + 0xa5, 0x5a, 0xe1, 0xf7, 0x80, 0xf3, 0x6b, 0x84, 0x3e, 0x1b, 0x03, 0x2d, + 0x92, 0xce, 0xd2, 0xe8, 0x4b, 0x6a, 0xa1, 0x8d, 0x0e, 0x68, 0x95, 0x06, + 0xc0, 0xac, 0x61, 0x68, 0x74, 0x51, 0xce, 0xf1, 0x5d, 0x09, 0x58, 0xba, + 0xea, 0x56, 0x59, 0xa3, 0xe9, 0x65, 0x72, 0xe5, 0x97, 0x35, 0x3a, 0xef, + 0x49, 0x97, 0xf4, 0x40, 0x32, 0x31, 0x44, 0x53, 0x22, 0x58, 0x89, 0x3a, + 0xe2, 0x33, 0x6c, 0x06, 0x06, 0x0c, 0x6d, 0x88, 0xd5, 0x56, 0x2d, 0xb0, + 0x3b, 0x26, 0x90, 0xe3, 0x41, 0x3b, 0x59, 0x15, 0x08, 0xcb, 0x9f, 0xeb, + 0x98, 0x05, 0xf9, 0x91, 0x0e, 0x55, 0x9b, 0xb0, 0xd9, 0x36, 0xde, 0xa7, + 0x5b, 0x70, 0x95, 0xca, 0x8c, 0x53, 0x28, 0xae, 0xa4, 0x3f, 0x0f, 0x94, + 0xd2, 0xd9, 0x6c, 0x5c, 0x44, 0xcb, 0xa6, 0x44, 0xfb, 0xc3, 0x93, 0x6c, + 0x85, 0xb8, 0xe9, 0x8f, 0x76, 0x12, 0xf3, 0x05, 0xd2, 0xe1, 0x10, 0x90, + 0x1c, 0x04, 0xbc, 0x28, 0x93, 0x62, 0x35, 0x2c, 0x2d, 0xcf, 0x6c, 0xf9, + 0x73, 0xef, 0x4c, 0xe5, 0x0a, 0x28, 0x08, 0xd7, 0x3c, 0x3b, 0x02, 0xb0, + 0x97, 0xf1, 0xef, 0xf6, 0x67, 0xa6, 0x8b, 0xe8, 0x47, 0xa9, 0xeb, 0xb1, + 0x91, 0x0b, 0x47, 0x44, 0xea, 0xee, 0x9d, 0xb7, 0x6d, 0x5f, 0x54, 0x4d, + 0x4c, 0xe8, 0xb7, 0x49, 0x3e, 0xd5, 0x7b, 0x59, 0xf3, 0x4a, 0xa4, 0x3f, + 0xd5, 0x95, 0x7a, 0xdd, 0x2f, 0x7b, 0xbd, 0x68, 0xc9, 0xf3, 0xcc, 0x86, + 0xab, 0x33, 0xa2, 0x66, 0x76, 0x56, 0xa8, 0xd1, 0x57, 0x3b, 0x98, 0x24, + 0x42, 0x0e, 0x2a, 0x30, 0x99, 0x94, 0x08, 0x08, 0x35, 0x64, 0x00, 0x03, + 0x01, 0x8c, 0x08, 0x43, 0x02, 0xdc, 0x13, 0x53, 0x00, 0x04, 0x13, 0xe0, + 0x60, 0x46, 0xa6, 0x01, 0xa8, 0x9e, 0x06, 0x0a, 0x53, 0x97, 0x26, 0x2b, + 0xfd, 0x0e, 0x06, 0x0d, 0x38, 0xa7, 0x66, 0x09, 0x50, 0x42, 0xc6, 0x0a, + 0x60, 0x17, 0x86, 0x0f, 0xf8, 0x0b, 0x26, 0x24, 0x50, 0x1b, 0x43, 0xc1, + 0xa2, 0x98, 0x0a, 0x20, 0x01, 0x09, 0x00, 0x3a, 0x4c, 0x35, 0x68, 0x6d, + 0xc5, 0x76, 0xc5, 0x22, 0xb4, 0x51, 0x2b, 0x10, 0x05, 0x3b, 0xf7, 0x37, + 0x16, 0x5c, 0xf3, 0x09, 0xf8, 0xf9, 0xc6, 0x18, 0x7b, 0x9e, 0xe0, 0x38, + 0xa5, 0xf3, 0x53, 0x77, 0xe5, 0xd9, 0x4c, 0xf8, 0x84, 0xb5, 0xd5, 0x87, + 0x5b, 0xc4, 0x86, 0x7d, 0x22, 0xce, 0xa3, 0xa5, 0x08, 0x87, 0x28, 0x5c, + 0x79, 0xfb, 0x51, 0x67, 0xe1, 0xae, 0x3b, 0x3b, 0x7a, 0x9c, 0x4f, 0x9f, + 0x87, 0xcb, 0xc4, 0x8a, 0xc2, 0x24, 0xf8, 0x8a, 0xa6, 0x4f, 0xbe, 0x33, + 0x53, 0x87, 0xf1, 0xfe, 0xbc, 0xa1, 0x44, 0x42, 0x55, 0x2e, 0x17, 0xd3, + 0x2b, 0x88, 0xc8, 0x42, 0xe5, 0x56, 0xaa, 0x3d, 0x8e, 0x64, 0x71, 0xf9, + 0x5a, 0x37, 0xaa, 0x15, 0xa6, 0x01, 0x75, 0x73, 0x54, 0xd5, 0x80, 0xba, + 0x2e, 0xdc, 0x52, 0x2d, 0x8a, 0x75, 0x73, 0x09, 0xc5, 0x66, 0x24, 0xf3, + 0x03, 0x1b, 0xc4, 0x2d, 0x44, 0xff, 0xfb, 0xd4, 0x60, 0x5e, 0x0d, 0xd8, + 0xfe, 0x6f, 0xbd, 0x13, 0xf8, 0x7b, 0x70, 0x59, 0x4e, 0x08, 0x22, 0x0c, + 0x65, 0x6e, 0x1f, 0xbd, 0xc0, 0xfa, 0x0f, 0xe1, 0x8d, 0xc1, 0x6d, 0xb8, + 0x20, 0x80, 0x81, 0x15, 0xb8, 0x90, 0x63, 0x54, 0x76, 0x37, 0x26, 0x76, + 0xe3, 0xb5, 0x89, 0x0a, 0xa3, 0x6a, 0xa8, 0xef, 0x64, 0x21, 0x4e, 0xa3, + 0x2b, 0x8c, 0x85, 0x32, 0xa1, 0x0d, 0x36, 0xee, 0xfd, 0x45, 0xa3, 0x1d, + 0x34, 0x97, 0x5c, 0xc1, 0x3f, 0xc6, 0x73, 0xd2, 0x47, 0xa4, 0x3e, 0x46, + 0x34, 0x8c, 0x78, 0xc8, 0x5a, 0xb5, 0x56, 0x9d, 0x48, 0x9d, 0xed, 0xb3, + 0x28, 0x93, 0x8c, 0x8d, 0xd8, 0x60, 0x8e, 0xe4, 0xfc, 0xfe, 0x88, 0xbc, + 0xd4, 0xea, 0x55, 0x72, 0x79, 0x42, 0x84, 0x28, 0x92, 0x2f, 0x10, 0xb6, + 0xf5, 0x2b, 0xf3, 0xc8, 0x72, 0x98, 0x06, 0xe4, 0x16, 0xf9, 0x97, 0x4e, + 0x01, 0xc1, 0x97, 0x33, 0x90, 0x78, 0x19, 0xe4, 0xa0, 0x94, 0x00, 0x1a, + 0xc0, 0x8e, 0x03, 0x45, 0x95, 0x06, 0x81, 0xd5, 0x91, 0x8a, 0xbd, 0xeb, + 0x1d, 0xa3, 0xf4, 0xe1, 0x44, 0x22, 0xc3, 0x17, 0x7b, 0x0c, 0xef, 0xfa, + 0x5c, 0xbe, 0x5a, 0x2f, 0x9d, 0x53, 0x4b, 0xaf, 0x3e, 0x8e, 0xf6, 0x6d, + 0x36, 0x5c, 0xff, 0xbf, 0xd1, 0xba, 0x19, 0x76, 0xd5, 0x6d, 0xd3, 0x74, + 0x75, 0x5f, 0xb7, 0x75, 0x4d, 0xdb, 0xd9, 0x18, 0x8e, 0x88, 0xd5, 0xb7, + 0x5d, 0x6d, 0xd9, 0xbd, 0x9d, 0x68, 0x84, 0x9c, 0xdb, 0x3a, 0xac, 0xb1, + 0x16, 0x14, 0x16, 0x30, 0xc0, 0x2a, 0x88, 0x38, 0x1d, 0x8e, 0x2e, 0x2e, + 0x42, 0x8c, 0x30, 0x0c, 0x40, 0x06, 0x30, 0x3b, 0x80, 0x42, 0x30, 0x2e, + 0xc0, 0x53, 0x30, 0x4c, 0x80, 0xac, 0x30, 0x97, 0xc1, 0xad, 0x31, 0xb9, + 0x8b, 0x4c, 0x3f, 0x13, 0x86, 0x8d, 0x32, 0x0c, 0x01, 0xda, 0x30, 0x9f, + 0x41, 0x79, 0x30, 0x40, 0xc1, 0x6b, 0x30, 0x2e, 0x81, 0xd0, 0x30, 0x37, + 0xc0, 0x76, 0x30, 0x1d, 0xc0, 0x73, 0x04, 0x00, 0x40, 0x60, 0x05, 0x80, + 0x06, 0xc6, 0x15, 0x5d, 0xb8, 0x12, 0x45, 0x5f, 0xd2, 0xd4, 0xc2, 0x6a, + 0x8a, 0xfc, 0x7e, 0x55, 0x2e, 0xa0, 0x7f, 0x21, 0x99, 0x8a, 0xb6, 0xb3, + 0x9c, 0x7f, 0x7e, 0x0d, 0x86, 0xe2, 0x36, 0x63, 0xd2, 0x97, 0xfa, 0x86, + 0xad, 0x88, 0x25, 0xc4, 0xb6, 0xfa, 0xdb, 0x94, 0x58, 0x6a, 0xd3, 0xf4, + 0x75, 0x24, 0x14, 0xb7, 0xe8, 0xd2, 0x33, 0xa5, 0x42, 0x72, 0xc3, 0x87, + 0xbc, 0xf2, 0x39, 0x4b, 0x05, 0x20, 0xab, 0xc6, 0xa9, 0x96, 0x2f, 0x38, + 0x2f, 0x98, 0x17, 0x5a, 0x5c, 0x82, 0x22, 0x17, 0x56, 0x45, 0x1a, 0x52, + 0xf3, 0x06, 0xac, 0xa6, 0xba, 0xc8, 0x91, 0x19, 0x13, 0x55, 0x94, 0xcc, + 0x39, 0x5d, 0x1a, 0xb1, 0x3c, 0xa8, 0x84, 0x91, 0xd3, 0x25, 0x4a, 0x16, + 0x9e, 0x9b, 0xb0, 0x5a, 0x72, 0x8a, 0x28, 0x4a, 0x2d, 0xc3, 0x6b, 0x94, + 0x6f, 0xc4, 0xa2, 0x82, 0xc6, 0x99, 0x3f, 0x2e, 0xd4, 0xd1, 0x61, 0x51, + 0x72, 0x63, 0x65, 0x87, 0xe6, 0xb8, 0x7e, 0x69, 0x45, 0xc3, 0xc8, 0xec, + 0x72, 0x92, 0x35, 0x85, 0x52, 0xd2, 0xda, 0x2d, 0xa6, 0x1f, 0x43, 0x1a, + 0xb5, 0xe7, 0x32, 0x99, 0x63, 0x11, 0x3a, 0xda, 0x44, 0x1c, 0x4e, 0x7f, + 0x76, 0x47, 0xe2, 0x5b, 0x85, 0x43, 0x86, 0x4b, 0xf4, 0x84, 0xc9, 0x51, + 0x61, 0x51, 0xa9, 0x91, 0xf1, 0x60, 0xae, 0x68, 0x64, 0x98, 0xf4, 0x70, + 0x03, 0xe1, 0xc8, 0x8e, 0x0c, 0xc1, 0x16, 0xc2, 0x93, 0x34, 0x51, 0x9c, + 0x23, 0x03, 0xf7, 0x5f, 0x47, 0xb4, 0xf3, 0xb9, 0xce, 0xa8, 0x7f, 0x7d, + 0x7e, 0xd3, 0x99, 0xa4, 0xa7, 0x7d, 0x1d, 0x1a, 0xaa, 0x47, 0xa4, 0x96, + 0x79, 0xeb, 0x35, 0x5e, 0x8c, 0xbd, 0x56, 0xcc, 0xe8, 0xc8, 0xf7, 0x95, + 0xbb, 0xb3, 0xb5, 0x59, 0x95, 0xed, 0xde, 0xd2, 0x95, 0xb6, 0xb1, 0x3d, + 0xa5, 0xba, 0xed, 0xf6, 0x66, 0xb4, 0xc9, 0xb3, 0xa2, 0x26, 0x93, 0x25, + 0x4e, 0xa8, 0x7b, 0x6c, 0x52, 0xb9, 0x0e, 0x96, 0x16, 0x56, 0x90, 0x78, + 0x60, 0xf2, 0x0d, 0x0f, 0x84, 0x0e, 0x28, 0x83, 0x88, 0x20, 0x83, 0xd5, + 0x30, 0x36, 0x00, 0xd9, 0x30, 0x56, 0xc1, 0x1c, 0x30, 0x62, 0x00, 0xc3, + 0x30, 0x4a, 0xc3, 0x02, 0x31, 0x1b, 0x04, 0x57, 0x33, 0x1c, 0x49, 0xe8, + 0x3c, 0x1c, 0xe3, 0x91, 0x30, 0xdb, 0x8b, 0x68, 0x31, 0xae, 0x02, 0x74, + 0x30, 0xa3, 0x40, 0xb2, 0x30, 0x85, 0x82, 0x01, 0x31, 0x3c, 0xc1, 0x71, + 0x30, 0x20, 0x41, 0x3e, 0x30, 0x23, 0x80, 0x83, 0x30, 0x39, 0x40, 0xdf, + 0x3f, 0x1f, 0x53, 0xd7, 0xa7, 0x36, 0xb1, 0x93, 0x2d, 0x6b, 0x36, 0xb4, + 0x73, 0x33, 0x1d, 0x30, 0x10, 0x63, 0x2c, 0x3c, 0x33, 0xc2, 0x42, 0x21, + 0x53, 0x0b, 0x21, 0x32, 0x51, 0xd3, 0x1c, 0x00, 0x11, 0x81, 0x98, 0x48, + 0x79, 0x85, 0x83, 0x87, 0x05, 0xb0, 0xa3, 0x06, 0x02, 0x30, 0x80, 0x00, + 0x30, 0x22, 0x67, 0xa5, 0xe1, 0x82, 0x04, 0x18, 0x30, 0x10, 0x90, 0x20, + 0xa8, 0x19, 0x85, 0x87, 0x84, 0x09, 0xa9, 0xf5, 0xb6, 0x60, 0xa0, 0xa0, + 0x60, 0x75, 0x26, 0x91, 0x85, 0xb0, 0x40, 0x63, 0x9a, 0xd6, 0xd4, 0xd1, + 0x14, 0x19, 0xa3, 0xa6, 0xcb, 0xdd, 0x37, 0x7e, 0x49, 0x0e, 0x2a, 0x77, + 0x67, 0xe0, 0xdc, 0x4a, 0x2a, 0x8f, 0xf2, 0xde, 0xd2, 0x7f, 0x9d, 0x6b, + 0x72, 0xa9, 0x8d, 0xc2, 0x70, 0x7e, 0x73, 0x00, 0xc8, 0x6b, 0x5a, 0x63, + 0x3a, 0xd9, 0xd1, 0x47, 0x41, 0xd6, 0xc4, 0x7e, 0x28, 0x28, 0x8c, 0x6b, + 0x86, 0xdb, 0x1d, 0xfa, 0x16, 0xff, 0xfb, 0xd4, 0x60, 0x62, 0x8f, 0xd9, + 0xc6, 0x70, 0x3e, 0x83, 0xfb, 0x7b, 0x70, 0x56, 0x8e, 0x08, 0x32, 0x3c, + 0x42, 0x6e, 0x20, 0x45, 0xc1, 0x00, 0x0f, 0xed, 0x2d, 0xc1, 0x61, 0x37, + 0x20, 0x80, 0xf0, 0x95, 0xb9, 0x8f, 0x52, 0xb5, 0xa0, 0x53, 0x2a, 0x96, + 0xe5, 0x63, 0x24, 0x55, 0x1b, 0x7a, 0xb0, 0xfe, 0x6a, 0x63, 0x4e, 0x37, + 0x28, 0x14, 0x0f, 0x5b, 0x6c, 0xa3, 0x8a, 0xc6, 0xa7, 0x67, 0x8e, 0xb2, + 0xe3, 0x1b, 0x34, 0x9d, 0x61, 0xea, 0xe5, 0x97, 0x74, 0x7a, 0xc2, 0xf9, + 0x50, 0xd6, 0x81, 0xcb, 0x7b, 0x5a, 0xd5, 0xdb, 0xf6, 0xe7, 0x2b, 0x7b, + 0x0b, 0xc7, 0xab, 0xb4, 0xc3, 0x93, 0x1a, 0xa2, 0x34, 0x38, 0x0d, 0xac, + 0xcd, 0xb0, 0x29, 0x0a, 0x24, 0x1b, 0xab, 0x58, 0xd7, 0x1a, 0x56, 0xe2, + 0x59, 0xb4, 0xa9, 0x80, 0xba, 0xc3, 0xe8, 0x8a, 0x76, 0x6d, 0x38, 0xb0, + 0x39, 0x42, 0x53, 0x43, 0x7d, 0x87, 0x23, 0xfd, 0xd2, 0x7a, 0x9e, 0x29, + 0x80, 0x6f, 0xbd, 0x5c, 0x2a, 0x5b, 0xdb, 0x97, 0x9e, 0x90, 0xb3, 0xd5, + 0xb0, 0x09, 0x00, 0x08, 0xba, 0x42, 0xc7, 0xf7, 0xdc, 0x19, 0xaf, 0x27, + 0xa5, 0x90, 0x94, 0x5b, 0xb1, 0xbb, 0xde, 0xf5, 0x2b, 0x34, 0xd6, 0x7c, + 0xaf, 0x64, 0xbe, 0xa7, 0x55, 0x75, 0x0d, 0xa6, 0xef, 0x73, 0xa2, 0x31, + 0xe6, 0xaa, 0x95, 0x99, 0xdf, 0xdb, 0xfe, 0xff, 0xd1, 0x19, 0x15, 0x6e, + 0xdb, 0x13, 0xa5, 0xd6, 0xfd, 0xbe, 0x56, 0xcb, 0xbf, 0xeb, 0x4e, 0x8b, + 0xea, 0xef, 0x4b, 0x7f, 0xa9, 0x77, 0xa5, 0xdc, 0xc9, 0x9d, 0x26, 0x74, + 0x53, 0x29, 0x04, 0xa9, 0xac, 0x40, 0x8a, 0x24, 0xe8, 0xb4, 0x40, 0xe9, + 0x10, 0x06, 0x21, 0x0c, 0x00, 0x80, 0x0e, 0x80, 0xa0, 0xb7, 0x98, 0x37, + 0xa0, 0x91, 0x18, 0x44, 0xc0, 0xcc, 0x98, 0x2b, 0x00, 0xbc, 0x18, 0xc9, + 0x54, 0x8a, 0x9f, 0x7d, 0x72, 0xb2, 0x18, 0xa2, 0xe2, 0xae, 0x98, 0x68, + 0x80, 0xd1, 0x18, 0x2e, 0xc0, 0x8e, 0x18, 0x30, 0x60, 0xa9, 0x98, 0x6c, + 0x00, 0x43, 0x18, 0x29, 0xc0, 0x3c, 0x18, 0x0e, 0x20, 0x02, 0x18, 0x13, + 0xa0, 0x50, 0x1d, 0xbc, 0x91, 0xae, 0x94, 0x00, 0x8d, 0x8c, 0xd0, 0x78, + 0xa4, 0x38, 0xc9, 0x08, 0xcc, 0x48, 0x0d, 0x4d, 0x50, 0x40, 0x60, 0xe0, + 0x80, 0xa0, 0x26, 0x5c, 0xae, 0x92, 0x18, 0x04, 0x0c, 0x42, 0x02, 0xc3, + 0x6c, 0x25, 0x4a, 0xfc, 0x56, 0xe5, 0x35, 0x4e, 0x97, 0x25, 0x99, 0x22, + 0x92, 0xea, 0x61, 0xcf, 0xd8, 0x10, 0x0d, 0x75, 0x59, 0x94, 0xa6, 0x2a, + 0xc5, 0xb6, 0xdd, 0x99, 0xd2, 0x83, 0x44, 0x19, 0x75, 0x96, 0x44, 0xdb, + 0x3d, 0x2f, 0x0d, 0xea, 0x99, 0x82, 0x24, 0x84, 0x2c, 0x80, 0x61, 0x38, + 0x66, 0x8c, 0x0a, 0xa6, 0x42, 0x7b, 0xa2, 0x15, 0x6a, 0x33, 0xc1, 0x67, + 0xb4, 0x85, 0x75, 0xc9, 0x27, 0x30, 0x45, 0xc8, 0xa5, 0xd1, 0x36, 0x4c, + 0x44, 0xe5, 0x90, 0xa2, 0x44, 0x30, 0x2a, 0x4c, 0x99, 0xa6, 0xdb, 0x17, + 0x67, 0x13, 0x42, 0x25, 0x9c, 0x48, 0x17, 0x28, 0x68, 0x46, 0xc3, 0x48, + 0x2c, 0x8e, 0xd3, 0xf3, 0xf4, 0x8d, 0x76, 0x9d, 0x3c, 0x45, 0xf4, 0x95, + 0xc7, 0x54, 0x62, 0x0c, 0x34, 0xc5, 0x2a, 0x84, 0xb4, 0x54, 0x8b, 0x33, + 0x4b, 0x7d, 0x4d, 0x1a, 0xef, 0x56, 0x36, 0x5b, 0x66, 0xe8, 0x5f, 0x55, + 0x2c, 0x8b, 0x69, 0xb4, 0x81, 0xbc, 0x92, 0x34, 0x2c, 0x2d, 0x3a, 0xc5, + 0x5e, 0xc1, 0x2c, 0xc8, 0xc9, 0xcd, 0x9d, 0x48, 0x8d, 0x08, 0xfc, 0xc5, + 0x08, 0x82, 0xe2, 0x83, 0x62, 0xa3, 0x62, 0x11, 0x12, 0xa2, 0x34, 0xf3, + 0x59, 0xbc, 0xf8, 0x8b, 0x67, 0xd3, 0xd2, 0x2d, 0xb6, 0x12, 0x46, 0x3e, + 0xca, 0xdd, 0x10, 0x61, 0x57, 0x66, 0x70, 0x3a, 0x7e, 0xb2, 0x36, 0x72, + 0xe5, 0x3d, 0xed, 0x9d, 0x7a, 0x3f, 0x56, 0x3b, 0xaa, 0xfd, 0x3f, 0xef, + 0xbd, 0x19, 0xd0, 0xa7, 0x31, 0x5f, 0x9a, 0xd4, 0x9f, 0xe9, 0xf4, 0xdf, + 0x66, 0xdd, 0x91, 0x53, 0xfa, 0x21, 0xd1, 0x8a, 0x42, 0x3f, 0x92, 0x8f, + 0xb3, 0x75, 0x63, 0xd6, 0x76, 0x49, 0x4c, 0xe8, 0x26, 0x64, 0x76, 0x64, + 0x44, 0x20, 0xa8, 0x91, 0xc5, 0x54, 0x63, 0x0a, 0x8a, 0x89, 0x94, 0x04, + 0x69, 0x12, 0xae, 0x00, 0x03, 0x01, 0xbc, 0x05, 0x83, 0x01, 0x68, 0x14, + 0xf3, 0x01, 0xc8, 0x03, 0xd3, 0x06, 0x38, 0x0f, 0xf3, 0x0a, 0x34, 0x26, + 0x23, 0x1e, 0xa8, 0xbb, 0xf3, 0xde, 0x49, 0x02, 0x63, 0x21, 0x30, 0x22, + 0x13, 0x08, 0xac, 0x03, 0x93, 0x01, 0x3c, 0x12, 0xb3, 0x02, 0xd4, 0x1c, + 0xa3, 0x07, 0xa8, 0x0c, 0xa3, 0x02, 0xf8, 0x07, 0xb2, 0x60, 0x0f, 0x93, + 0x2d, 0x39, 0x97, 0x2a, 0xe7, 0x00, 0x5e, 0x07, 0x16, 0x72, 0x73, 0xaf, + 0x0b, 0xa9, 0x83, 0x3f, 0xa9, 0x22, 0xf8, 0x4a, 0x56, 0x45, 0x68, 0xaf, + 0xe3, 0x29, 0x9c, 0x9d, 0x73, 0x65, 0x34, 0x94, 0xef, 0x04, 0x81, 0xed, + 0x9b, 0x90, 0x34, 0xa8, 0xc3, 0x7f, 0x5a, 0x4d, 0x1f, 0xb5, 0x20, 0x8a, + 0xd3, 0xca, 0xa1, 0xa9, 0x4c, 0x67, 0xb8, 0xb4, 0xb1, 0xb6, 0xcc, 0xce, + 0x75, 0x4f, 0x5a, 0x32, 0x8d, 0xfe, 0xeb, 0xf3, 0x0d, 0xf5, 0x25, 0x43, + 0x62, 0xcc, 0x59, 0x75, 0x85, 0xbd, 0xa6, 0x46, 0x74, 0xe3, 0x31, 0x02, + 0x4f, 0x7b, 0x97, 0x67, 0xca, 0x56, 0x89, 0x4f, 0x85, 0x35, 0x6d, 0x78, + 0x73, 0x4a, 0xd3, 0x8d, 0x4d, 0x99, 0x74, 0x24, 0xda, 0xaa, 0x3b, 0x7d, + 0x7b, 0x88, 0x54, 0x43, 0xec, 0x7b, 0x72, 0xde, 0x31, 0x35, 0xe4, 0x16, + 0x9f, 0xbf, 0x35, 0x9d, 0x9c, 0xff, 0xfb, 0xd4, 0x60, 0x5b, 0x8d, 0x96, + 0x62, 0x70, 0x41, 0x93, 0xfa, 0x33, 0x70, 0x50, 0x6e, 0x08, 0x42, 0x40, + 0x22, 0x6e, 0x23, 0x19, 0xc0, 0xfc, 0x0f, 0xf1, 0xed, 0xc1, 0xd4, 0xb8, + 0x20, 0x59, 0x91, 0x95, 0xb8, 0xef, 0xff, 0x3e, 0xd0, 0x67, 0xbc, 0xd9, + 0xd3, 0xdd, 0x19, 0xac, 0xc2, 0x59, 0x07, 0x10, 0x51, 0x44, 0xcb, 0xaa, + 0xd3, 0x01, 0xd6, 0x40, 0x00, 0x0b, 0xe8, 0x22, 0x92, 0x07, 0x50, 0x38, + 0x9a, 0x91, 0x5d, 0x4b, 0x92, 0x9e, 0x67, 0xc2, 0x68, 0x94, 0xef, 0x31, + 0xda, 0x39, 0x8c, 0x24, 0x50, 0x82, 0xb0, 0xc7, 0x66, 0x97, 0x9d, 0x29, + 0xd5, 0x2c, 0xc9, 0xfd, 0xec, 0xd5, 0xde, 0xbe, 0xb4, 0x4a, 0xff, 0xff, + 0x73, 0xa5, 0x2b, 0xcf, 0xef, 0x74, 0xe9, 0xdd, 0xfe, 0x9f, 0x46, 0x7d, + 0xb4, 0xed, 0xdf, 0xd3, 0xd4, 0x9f, 0xce, 0xcc, 0xec, 0xa5, 0x40, 0x87, + 0x0a, 0xe3, 0x91, 0x1c, 0xc1, 0x0e, 0xa6, 0x03, 0x32, 0x0a, 0x29, 0x80, + 0x04, 0x06, 0x69, 0x81, 0xd4, 0x07, 0x71, 0x80, 0xa6, 0x11, 0x49, 0x81, + 0x78, 0x1d, 0x91, 0x83, 0x0a, 0x40, 0xb9, 0x86, 0xe1, 0x7c, 0xc1, 0xdd, + 0x55, 0xec, 0x79, 0x89, 0x80, 0x45, 0x01, 0x86, 0x62, 0x1e, 0x79, 0x84, + 0xee, 0x0e, 0xa9, 0x86, 0xa8, 0x08, 0xf1, 0x8d, 0xde, 0x05, 0x49, 0x85, + 0x7e, 0x02, 0x19, 0x81, 0x40, 0x02, 0x49, 0x80, 0x00, 0x00, 0xc0, 0xd0, + 0x54, 0x80, 0x00, 0x8d, 0x46, 0x02, 0xaa, 0x1b, 0x80, 0x7c, 0x9a, 0xeb, + 0xa6, 0x54, 0x95, 0xb2, 0x57, 0x69, 0x35, 0x5d, 0x57, 0x95, 0xb1, 0x08, + 0x40, 0xa5, 0xaa, 0x1a, 0x02, 0xb8, 0x51, 0x27, 0xf5, 0x68, 0xbb, 0x54, + 0x8b, 0x46, 0x95, 0xc7, 0x71, 0x10, 0xc8, 0x20, 0x39, 0x1c, 0x89, 0x47, + 0x65, 0x51, 0xd6, 0x83, 0x5d, 0xfd, 0x84, 0xc0, 0x2d, 0x11, 0x10, 0xd4, + 0x46, 0x2b, 0x4d, 0x17, 0xa1, 0x65, 0x6f, 0xe7, 0x86, 0xa6, 0x53, 0x9c, + 0xa1, 0xce, 0xb4, 0xf9, 0x99, 0x9e, 0x6e, 0xe2, 0xaf, 0x6d, 0x91, 0xb0, + 0x98, 0x13, 0x54, 0x2d, 0xc1, 0x34, 0xbc, 0xa6, 0xbd, 0x3c, 0x1c, 0xaa, + 0x88, 0x44, 0x75, 0x62, 0xba, 0xb2, 0x4e, 0xa0, 0x8e, 0xd4, 0xa4, 0x75, + 0x10, 0xd5, 0x56, 0xbc, 0x63, 0x78, 0xb5, 0x15, 0x70, 0xaa, 0x64, 0x95, + 0x5a, 0x5f, 0xdb, 0xa2, 0xad, 0x57, 0x7a, 0x64, 0x84, 0xc8, 0xba, 0x7a, + 0xa7, 0x47, 0xb0, 0x4f, 0x15, 0x59, 0x16, 0x12, 0xdc, 0x18, 0x6f, 0x22, + 0x9d, 0x8f, 0x61, 0xe1, 0xa9, 0x7d, 0xdc, 0xf2, 0xae, 0xe3, 0xb1, 0x58, + 0xf0, 0x7d, 0x06, 0xea, 0x59, 0x5a, 0xd8, 0x9f, 0xe6, 0xce, 0x94, 0x0a, + 0x0c, 0xbd, 0xb3, 0x84, 0x77, 0x35, 0x23, 0x8e, 0x22, 0xce, 0xc6, 0xc4, + 0xf1, 0x95, 0xfb, 0x9f, 0x78, 0xb4, 0xa4, 0x8d, 0x1e, 0x1b, 0x66, 0x97, + 0x50, 0x98, 0x14, 0x0a, 0xe7, 0x71, 0x97, 0x94, 0xee, 0x7a, 0x4d, 0x1c, + 0xae, 0x4e, 0x2f, 0x15, 0x0f, 0x90, 0xe7, 0x05, 0x98, 0x4f, 0x15, 0x64, + 0x94, 0x3e, 0xd3, 0x61, 0x1b, 0x44, 0xcf, 0x9f, 0xbb, 0x6e, 0xfe, 0x78, + 0x5e, 0xa9, 0x5b, 0x0f, 0xe6, 0xad, 0x79, 0xc5, 0x50, 0xf8, 0x25, 0x56, + 0x4c, 0xf2, 0x35, 0x28, 0x2c, 0xff, 0xde, 0x9e, 0x41, 0xd0, 0x83, 0x87, + 0x51, 0xb1, 0x04, 0x28, 0x32, 0xc1, 0xc7, 0xae, 0x4b, 0xa9, 0x64, 0x6c, + 0xee, 0x97, 0x21, 0x19, 0x3b, 0x2d, 0x69, 0xaa, 0x52, 0xf6, 0x53, 0x3d, + 0x65, 0xf6, 0x7d, 0x1c, 0xf6, 0x22, 0x15, 0x54, 0xbc, 0xb3, 0x3a, 0xcb, + 0x47, 0x44, 0x6d, 0x56, 0xc9, 0xbd, 0x99, 0xec, 0xc7, 0x55, 0x3a, 0x9d, + 0x1d, 0x8c, 0xb3, 0xbd, 0x19, 0x9d, 0xd0, 0xaa, 0xc8, 0xcf, 0x59, 0x0a, + 0x21, 0x30, 0xb9, 0xc8, 0xe2, 0x2a, 0x88, 0x20, 0xec, 0xe2, 0xe2, 0x00, + 0xe2, 0xaa, 0x2a, 0x26, 0x20, 0x02, 0x02, 0x07, 0xc7, 0x80, 0x42, 0xc1, + 0xc4, 0xc4, 0x14, 0xd4, 0x53, 0x32, 0xe3, 0x93, 0x82, 0xe3, 0x2a, 0xaa, + 0xaa, 0x00, 0x00, 0x0d, 0x59, 0x11, 0x00, 0x03, 0x00, 0x90, 0x00, 0xd3, + 0x01, 0xdc, 0x02, 0xe0, 0xc0, 0x3e, 0x49, 0x81, 0xb7, 0x16, 0x0d, 0x60, + 0xc5, 0x1d, 0x06, 0x5c, 0xeb, 0x73, 0x0c, 0x34, 0xc5, 0xf9, 0x00, 0x94, + 0xc1, 0x9e, 0x02, 0xc0, 0xc0, 0x76, 0x03, 0x88, 0xc0, 0x0f, 0x05, 0x44, + 0xc0, 0x23, 0x02, 0x14, 0x2e, 0x02, 0x60, 0x88, 0x01, 0x70, 0x10, 0x09, + 0x8b, 0xe4, 0x90, 0x05, 0x19, 0x8f, 0x24, 0x4e, 0x76, 0x15, 0x4b, 0x7e, + 0x1a, 0xc2, 0x81, 0x3b, 0xa2, 0xf9, 0x46, 0xdd, 0x91, 0xa0, 0x17, 0xa9, + 0xbb, 0x25, 0x63, 0xf2, 0x7a, 0x05, 0x0b, 0x90, 0xc9, 0xa3, 0x71, 0x82, + 0x81, 0xb5, 0xa3, 0x12, 0xc7, 0xa6, 0xd2, 0xfd, 0x8d, 0xd6, 0x7e, 0xaf, + 0x44, 0x95, 0xba, 0x18, 0x9d, 0x95, 0x4c, 0xc4, 0xdf, 0xf8, 0x3a, 0xa2, + 0xa0, 0xf0, 0x27, 0x96, 0x48, 0xeb, 0x2a, 0xcb, 0xe4, 0x80, 0x3e, 0xd2, + 0xa2, 0x62, 0xa6, 0xe1, 0x0c, 0x06, 0x2b, 0xab, 0x98, 0xaa, 0x9e, 0x84, + 0xbf, 0xb4, 0x4e, 0xe4, 0x5e, 0xaf, 0xfc, 0x5d, 0xfe, 0x9d, 0x3f, 0xdc, + 0x46, 0x9c, 0x6f, 0x2d, 0xd5, 0xcc, 0x3c, 0x7c, 0x42, 0x40, 0xc7, 0xfe, + 0xb8, 0x8a, 0x1b, 0xf6, 0xcd, 0x35, 0x11, 0xdc, 0x8f, 0xe1, 0x1f, 0xbf, + 0x9e, 0x3e, 0x2e, 0x6a, 0x7e, 0x7e, 0x96, 0xe2, 0xe2, 0xfe, 0xa6, 0x61, + 0x18, 0xea, 0x30, 0x00, 0xac, 0x80, 0x00, 0x7a, 0xa9, 0xf7, 0x5f, 0x0b, + 0xb9, 0xe3, 0x4d, 0xca, 0xf7, 0x70, 0xb5, 0xfc, 0xe9, 0x37, 0x49, 0x0c, + 0xc1, 0xe2, 0x66, 0x3a, 0x65, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x08, 0x96, + 0x0e, 0x70, 0x43, 0xd3, 0xfa, 0x43, 0x70, 0x64, 0xad, 0xf8, 0x26, 0x60, + 0x62, 0x6e, 0x21, 0x1d, 0xc0, 0xfe, 0x0f, 0xf1, 0xed, 0xc2, 0x2d, 0xb8, + 0x1f, 0x81, 0xa3, 0x21, 0xb8, 0x0e, 0x7b, 0xd8, 0xc2, 0x48, 0xdf, 0x58, + 0x50, 0x68, 0x5f, 0x58, 0xa1, 0x94, 0xf5, 0x6d, 0xf6, 0x75, 0x6d, 0x9b, + 0xeb, 0xbb, 0x96, 0xb4, 0x56, 0xd5, 0x9e, 0xaa, 0x8e, 0xd7, 0xad, 0x59, + 0x13, 0x6a, 0xdf, 0x6e, 0x46, 0x95, 0x2b, 0xec, 0xb4, 0xbd, 0x09, 0x54, + 0x9e, 0xeb, 0x64, 0xae, 0xba, 0xfb, 0x68, 0xac, 0xcc, 0xa6, 0xa3, 0xdc, + 0xfd, 0x24, 0xbb, 0x3a, 0x8a, 0x21, 0x44, 0x82, 0x20, 0xb0, 0x64, 0x02, + 0x20, 0x72, 0x4e, 0x20, 0xc7, 0x0e, 0x10, 0xa6, 0x04, 0xf8, 0x1c, 0x86, + 0x07, 0x70, 0x3a, 0xa6, 0x03, 0x48, 0x45, 0xc6, 0x03, 0x70, 0x79, 0xe6, + 0x06, 0xf9, 0x0e, 0x86, 0x19, 0x86, 0x42, 0x26, 0xeb, 0x77, 0xd7, 0x86, + 0x08, 0xa1, 0x12, 0xe6, 0x0a, 0x50, 0x6b, 0x86, 0x10, 0x80, 0x1d, 0x86, + 0x1a, 0xa8, 0x00, 0x86, 0x3c, 0x50, 0x1e, 0x06, 0x17, 0x00, 0x05, 0xe6, + 0x04, 0x58, 0x09, 0x02, 0xc1, 0x02, 0x0f, 0x01, 0xc4, 0x41, 0x63, 0x03, + 0x09, 0x0d, 0x8f, 0xf5, 0x35, 0x70, 0xe4, 0x0c, 0x12, 0x59, 0xab, 0xb8, + 0x60, 0x03, 0x28, 0x74, 0xc4, 0x60, 0x1b, 0x72, 0x8a, 0x77, 0xb8, 0xc0, + 0xa0, 0x17, 0x22, 0x4d, 0xc9, 0x6a, 0xcf, 0x9c, 0x8f, 0xbb, 0xd3, 0x52, + 0xf9, 0x4b, 0xfe, 0x50, 0x14, 0xa6, 0x96, 0x4a, 0x1d, 0x88, 0xd2, 0x93, + 0xce, 0xd5, 0x1c, 0x31, 0x65, 0x39, 0x71, 0x82, 0x2d, 0x5b, 0x90, 0x33, + 0xc8, 0xbb, 0x3a, 0xe2, 0x2b, 0x50, 0xe7, 0x22, 0xb0, 0xdc, 0xa0, 0x78, + 0x91, 0x80, 0xbc, 0xe6, 0xac, 0x60, 0x53, 0x8b, 0x83, 0x9b, 0xc5, 0x6d, + 0x59, 0x99, 0x23, 0xbd, 0x6a, 0xcc, 0x64, 0x92, 0x9e, 0xf8, 0x55, 0x77, + 0xec, 0x72, 0xc3, 0xa4, 0x5b, 0x9f, 0x5b, 0x72, 0x99, 0xcd, 0xf5, 0xe2, + 0xbc, 0x95, 0x99, 0xe3, 0xe3, 0xeb, 0x70, 0x60, 0xc3, 0x73, 0xaa, 0xba, + 0x16, 0x2e, 0xf0, 0x90, 0x5a, 0xb2, 0x52, 0x3b, 0x8d, 0x6a, 0xe5, 0x6a, + 0xe9, 0xa6, 0x56, 0x4a, 0x3a, 0x91, 0x96, 0x05, 0x6e, 0xe5, 0x47, 0x23, + 0xe9, 0x5d, 0x8a, 0xc6, 0x9a, 0x7d, 0x41, 0x89, 0x3b, 0x33, 0x03, 0x9d, + 0xbc, 0x5d, 0xc7, 0x89, 0xb9, 0x19, 0xa0, 0x9b, 0xef, 0x98, 0x1f, 0x45, + 0x91, 0xfb, 0x6b, 0x8c, 0x6b, 0x67, 0x51, 0xaa, 0xf5, 0xfe, 0xf2, 0xc8, + 0xfe, 0x34, 0x3a, 0x39, 0x27, 0x63, 0x25, 0x58, 0xe3, 0x4d, 0x4f, 0x0e, + 0xcd, 0xd0, 0xb0, 0xda, 0xca, 0x83, 0x51, 0x22, 0x0e, 0xb1, 0xa5, 0x38, + 0xa0, 0xbc, 0xe5, 0xde, 0xcb, 0x78, 0x49, 0xa1, 0x98, 0xf6, 0x37, 0xf0, + 0x4d, 0x26, 0x18, 0xf2, 0xd9, 0x45, 0x10, 0x2f, 0x6e, 0x31, 0x9c, 0xcf, + 0xfd, 0xa7, 0x86, 0x24, 0xf4, 0xca, 0xf7, 0x2c, 0xed, 0x99, 0xb3, 0x91, + 0x12, 0xea, 0x30, 0xab, 0xed, 0xc6, 0xd3, 0xcc, 0x2b, 0x45, 0xed, 0x72, + 0xba, 0xc2, 0xc6, 0xfd, 0xe3, 0xd2, 0x51, 0x64, 0x62, 0x3c, 0x98, 0xc7, + 0xac, 0x35, 0xef, 0x63, 0x92, 0xab, 0x99, 0x4a, 0x99, 0xda, 0x7b, 0x9a, + 0x93, 0x23, 0xa2, 0x52, 0x4e, 0xb2, 0x39, 0x44, 0x5e, 0xa4, 0xe4, 0x54, + 0x93, 0x2d, 0x7b, 0xa7, 0x67, 0x65, 0xdd, 0x16, 0xe6, 0xd2, 0xcc, 0xcb, + 0xea, 0xe6, 0x1b, 0xa6, 0x1a, 0x8c, 0x29, 0x6f, 0x1d, 0x13, 0x6c, 0x40, + 0xf1, 0x70, 0xd8, 0x70, 0x1d, 0x0a, 0x88, 0x60, 0xb8, 0x3b, 0x10, 0x05, + 0x46, 0x4a, 0x80, 0xd0, 0x81, 0x41, 0x58, 0x42, 0x11, 0x00, 0x38, 0x12, + 0x0f, 0x84, 0xc1, 0x32, 0x62, 0x0a, 0x6a, 0x29, 0x99, 0x71, 0xc9, 0xc1, + 0x71, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x00, 0x2a, 0x36, 0x40, 0x00, 0x18, 0x04, 0x20, 0x00, 0x18, 0x06, + 0x40, 0x24, 0x18, 0x10, 0xa0, 0x22, 0x98, 0x1e, 0x00, 0x49, 0x18, 0x3b, + 0x20, 0xb6, 0x98, 0xac, 0x03, 0xce, 0x1d, 0xdf, 0x83, 0xeb, 0x98, 0xc7, + 0x80, 0xd9, 0x18, 0x3d, 0xa0, 0x97, 0x98, 0x18, 0xa0, 0x8b, 0x98, 0x14, + 0x00, 0xa9, 0x18, 0x18, 0xe0, 0x4a, 0x18, 0x0b, 0xa0, 0x2a, 0x98, 0x00, + 0x00, 0x1d, 0x18, 0x06, 0x00, 0x00, 0xa8, 0x01, 0x7b, 0xc0, 0x00, 0x00, + 0x8f, 0x93, 0x4f, 0x0b, 0x80, 0xb1, 0xa9, 0x2a, 0xc2, 0xeb, 0x91, 0x8d, + 0xea, 0x90, 0x48, 0xf0, 0xb5, 0x7c, 0x2b, 0xcd, 0x38, 0xd4, 0x90, 0xea, + 0x66, 0x38, 0x12, 0x88, 0xda, 0x54, 0xa2, 0x4d, 0x4c, 0x22, 0xb2, 0xf8, + 0xcb, 0x3a, 0x7c, 0x2a, 0x5d, 0xbb, 0x06, 0x35, 0x39, 0xeb, 0x1a, 0xa5, + 0xa5, 0x78, 0x32, 0x90, 0xa7, 0x13, 0x17, 0x2e, 0x6b, 0xc8, 0x78, 0xd1, + 0x7b, 0xa6, 0x66, 0xaa, 0xcc, 0xee, 0xe8, 0xac, 0xae, 0xeb, 0x30, 0x49, + 0xda, 0x95, 0x57, 0x32, 0xa8, 0xd1, 0x4b, 0x4d, 0x66, 0x66, 0x62, 0x39, + 0x4a, 0x84, 0x98, 0xa2, 0xae, 0x79, 0x85, 0x19, 0x11, 0x49, 0x56, 0x9a, + 0x56, 0xa9, 0xa8, 0xf3, 0xe5, 0xf2, 0xb9, 0x69, 0xd5, 0xf5, 0x46, 0x57, + 0x62, 0xaa, 0x96, 0xaa, 0xc8, 0xac, 0xe4, 0x2b, 0x14, 0xfc, 0xc2, 0x0c, + 0x63, 0x11, 0xec, 0x30, 0xac, 0x34, 0x01, 0xe4, 0x60, 0x16, 0x4c, 0x10, + 0x65, 0x3e, 0x62, 0xb4, 0xa6, 0x46, 0x86, 0x44, 0xd3, 0x6a, 0x03, 0x41, + 0x03, 0x59, 0x9d, 0xb3, 0x44, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x09, 0xd6, + 0x26, 0x70, 0x43, 0xbb, 0xfb, 0x2b, 0x70, 0x6c, 0x0e, 0x08, 0x10, 0x48, + 0x25, 0x6e, 0x1c, 0x21, 0xc1, 0x04, 0x4f, 0xf1, 0x2d, 0xc2, 0x0b, 0x37, + 0xdf, 0xc9, 0xa3, 0x21, 0xb8, 0x4b, 0x19, 0x85, 0x98, 0x4c, 0xcd, 0x9e, + 0x88, 0xf1, 0x16, 0x53, 0x99, 0x15, 0x28, 0xde, 0xd4, 0x62, 0x13, 0x44, + 0x49, 0xed, 0x5b, 0x21, 0xd6, 0x97, 0x3b, 0x29, 0xca, 0xd5, 0x42, 0x22, + 0x25, 0x50, 0xac, 0xd3, 0x91, 0x24, 0x33, 0x4e, 0x4e, 0xdd, 0x11, 0xd5, + 0x31, 0x3c, 0xa8, 0x46, 0x9f, 0x4d, 0x1f, 0x55, 0x4a, 0xd7, 0x33, 0x31, + 0x66, 0xab, 0x3a, 0x48, 0x71, 0x14, 0x49, 0xe6, 0x41, 0x63, 0xce, 0x44, + 0x1e, 0x34, 0x60, 0xc3, 0x8a, 0x8c, 0x0e, 0x0c, 0x0d, 0x20, 0xe1, 0xa2, + 0xc2, 0xa2, 0x01, 0xc0, 0xc0, 0x04, 0x84, 0x30, 0x26, 0x00, 0xb7, 0x30, + 0x1e, 0x40, 0x8e, 0x30, 0x2d, 0x01, 0x61, 0x30, 0x43, 0x42, 0x68, 0x30, + 0x86, 0x05, 0x79, 0x31, 0x84, 0xdf, 0xb2, 0x3d, 0xcc, 0x6b, 0x41, 0x31, + 0x88, 0x45, 0x56, 0x30, 0x46, 0x81, 0x9f, 0x30, 0x3d, 0x40, 0x76, 0x30, + 0x80, 0x81, 0x7f, 0x31, 0x27, 0x40, 0xa1, 0x30, 0x72, 0xc0, 0x64, 0x30, + 0x16, 0x80, 0x52, 0x30, 0x02, 0xc0, 0x05, 0x1e, 0x06, 0x18, 0x0c, 0x5e, + 0x50, 0x29, 0x33, 0x83, 0x8c, 0x35, 0x3c, 0x94, 0x0d, 0x49, 0xf9, 0x4e, + 0xfa, 0x2a, 0x8b, 0x9a, 0x4f, 0x4f, 0x7e, 0x88, 0x98, 0x69, 0x8d, 0x8d, + 0x4d, 0x29, 0xa4, 0xb6, 0x24, 0xba, 0x6a, 0x53, 0x47, 0x64, 0x08, 0xc3, + 0x4d, 0x52, 0x86, 0x0b, 0x7d, 0x5b, 0x49, 0xac, 0x26, 0xaa, 0xd7, 0x6a, + 0x36, 0x65, 0xb9, 0x4b, 0xa2, 0xee, 0x1c, 0xf1, 0x9d, 0x56, 0x8e, 0x18, + 0xaa, 0xf3, 0x75, 0x29, 0x36, 0x1b, 0x8b, 0xad, 0x4f, 0xc9, 0xf3, 0xca, + 0x6e, 0x8a, 0xc9, 0xb7, 0x0f, 0xef, 0xbb, 0x25, 0x09, 0x26, 0x28, 0xf0, + 0xba, 0xd4, 0x68, 0x10, 0x4a, 0x13, 0x82, 0xc9, 0xd4, 0x98, 0xc9, 0xda, + 0x3a, 0x55, 0x97, 0x27, 0x5d, 0x6a, 0xfb, 0x36, 0x15, 0x50, 0xeb, 0x2a, + 0x3e, 0x48, 0xb1, 0x2f, 0x71, 0xf0, 0x42, 0x86, 0x27, 0x31, 0x54, 0xb6, + 0xa9, 0xce, 0x6e, 0x51, 0x8c, 0xe1, 0x2f, 0x93, 0xdb, 0x8d, 0x66, 0xa3, + 0xc8, 0x64, 0x9e, 0xa4, 0x17, 0xc9, 0x52, 0x0d, 0x94, 0x8f, 0xcb, 0xbe, + 0x64, 0x64, 0x32, 0x73, 0xcd, 0xef, 0x18, 0x23, 0x5f, 0x43, 0xd3, 0x30, + 0x42, 0xa8, 0xa0, 0xa4, 0x39, 0xa2, 0x5e, 0xe9, 0x9f, 0x95, 0x44, 0xb5, + 0x5e, 0x3f, 0x6e, 0x5f, 0x6f, 0x2f, 0xc2, 0x18, 0x94, 0xab, 0x7e, 0x27, + 0x9d, 0x2f, 0xdb, 0x2c, 0xb7, 0x8c, 0xb5, 0xa8, 0xe2, 0x2c, 0x95, 0x0c, + 0xd4, 0x43, 0x05, 0x1b, 0xa3, 0x88, 0xbf, 0x18, 0xdb, 0xb9, 0x6c, 0xc5, + 0x7b, 0x8f, 0xbf, 0xc5, 0xa5, 0xe2, 0x1f, 0xb7, 0xbf, 0x49, 0xaa, 0xbe, + 0x5b, 0x9e, 0x29, 0x07, 0xd5, 0xb5, 0xcc, 0xd4, 0xc4, 0x50, 0xdb, 0x7b, + 0xe1, 0xf9, 0x8b, 0xab, 0xe5, 0x55, 0x65, 0x61, 0x21, 0xda, 0x52, 0x75, + 0x9e, 0xbd, 0x6e, 0x5e, 0x5a, 0x17, 0x9a, 0xb7, 0x9d, 0xaf, 0xa5, 0x6a, + 0xe8, 0x7d, 0xa4, 0x2c, 0x4e, 0xb5, 0x2f, 0x5f, 0x1a, 0xc4, 0x73, 0xca, + 0xf0, 0x2f, 0x05, 0x1c, 0x94, 0x81, 0x32, 0x07, 0x0a, 0xc2, 0x22, 0x88, + 0xc2, 0x00, 0x8e, 0x24, 0x10, 0xc4, 0x73, 0x4f, 0x38, 0x40, 0x0e, 0xc3, + 0x42, 0x74, 0xc4, 0x14, 0xd4, 0x53, 0x32, 0xe3, 0x93, 0x82, 0xe3, 0x25, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x79, 0x00, 0x03, 0x00, 0x00, 0x01, 0x23, 0x01, 0x44, 0x00, 0xd3, + 0x02, 0x70, 0x0b, 0x23, 0x04, 0x5c, 0x14, 0x13, 0x08, 0xc0, 0x2e, 0x03, + 0x1a, 0xa5, 0x2f, 0x53, 0xcd, 0x3d, 0x6e, 0xc3, 0x1b, 0x8c, 0x32, 0x13, + 0x0a, 0x30, 0x1f, 0x23, 0x04, 0x80, 0x15, 0xe3, 0x05, 0x3c, 0x1a, 0x93, + 0x0a, 0xd8, 0x0c, 0x53, 0x03, 0x98, 0x06, 0x23, 0x00, 0x84, 0x01, 0xc0, + 0x50, 0x06, 0xcd, 0x9c, 0x08, 0x02, 0x21, 0x0b, 0x35, 0xce, 0x83, 0xa1, + 0x0c, 0x47, 0xd7, 0x9a, 0x01, 0x98, 0xa7, 0xb4, 0xd8, 0x69, 0xed, 0xd4, + 0x82, 0x82, 0x05, 0xe9, 0xa7, 0x6d, 0xc6, 0x93, 0xc2, 0x30, 0xdd, 0x98, + 0x9c, 0x9e, 0x6e, 0x02, 0x86, 0xd5, 0x6e, 0x54, 0x14, 0x93, 0x92, 0x47, + 0x46, 0x1b, 0xde, 0x57, 0xe8, 0xe0, 0x7e, 0xdc, 0xbb, 0xf4, 0x6f, 0x1d, + 0xab, 0xef, 0x46, 0x46, 0xcb, 0x4e, 0x61, 0x91, 0x2b, 0xca, 0x76, 0x87, + 0x62, 0xe1, 0xd8, 0x97, 0x6d, 0xf8, 0xd4, 0xda, 0x53, 0xf7, 0xb7, 0x8b, + 0xc8, 0x7e, 0xf7, 0x7b, 0x32, 0x3b, 0xbd, 0xbb, 0xb6, 0xb7, 0x87, 0xe5, + 0x66, 0x15, 0x2d, 0x9d, 0xea, 0x2f, 0x73, 0x7b, 0xf8, 0x66, 0x9f, 0x99, + 0xf3, 0xfa, 0xc8, 0x67, 0x6f, 0x19, 0x70, 0x5b, 0x77, 0x7c, 0x77, 0x67, + 0xfb, 0x7f, 0xbf, 0x79, 0x76, 0xea, 0xa8, 0xaa, 0x2a, 0xf2, 0x32, 0xa7, + 0x75, 0x8a, 0x7e, 0x75, 0xde, 0x66, 0x51, 0xff, 0x93, 0x10, 0x40, 0x1a, + 0xd4, 0xe5, 0x50, 0x5b, 0xb7, 0x6f, 0x78, 0x63, 0x9d, 0x2e, 0xb1, 0xcb, + 0x79, 0x11, 0x0a, 0x33, 0x3e, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd6, + 0x47, 0x70, 0x42, 0x93, 0xfb, 0x33, 0x70, 0x6c, 0xed, 0xd8, 0x11, 0x60, + 0x65, 0x6e, 0x19, 0x21, 0xc1, 0x0a, 0x4f, 0xf0, 0xcd, 0xc2, 0x10, 0xb8, + 0x1f, 0xc5, 0x83, 0x21, 0xb8, 0x15, 0x27, 0xf8, 0x4a, 0x4f, 0x25, 0xf3, + 0x28, 0xe3, 0x1b, 0x37, 0x4a, 0x74, 0xea, 0x16, 0x5f, 0x49, 0x53, 0xa3, + 0xdb, 0x55, 0x45, 0x4b, 0xcd, 0x79, 0x96, 0x87, 0xab, 0x55, 0x19, 0xff, + 0x31, 0x48, 0xe8, 0x66, 0x2a, 0xa2, 0x3d, 0x5d, 0xd3, 0xd3, 0x64, 0xcb, + 0x39, 0x51, 0xd0, 0xf5, 0x65, 0x45, 0x3a, 0x2c, 0xac, 0x8d, 0x6a, 0x56, + 0xce, 0xc8, 0xe6, 0xa5, 0x6c, 0xf4, 0x76, 0xb9, 0x5d, 0x2a, 0x42, 0x4a, + 0x8c, 0x46, 0x63, 0x2a, 0xa9, 0x87, 0x8c, 0x18, 0xae, 0x30, 0x61, 0x98, + 0xe1, 0xc1, 0x30, 0xd0, 0xf0, 0x0a, 0xe1, 0x46, 0x06, 0x30, 0x77, 0xe8, + 0x30, 0x16, 0x40, 0x66, 0x30, 0x1a, 0x80, 0xa9, 0x30, 0x29, 0x40, 0xac, + 0x30, 0x40, 0x01, 0x29, 0x30, 0x7e, 0xc2, 0x7e, 0x31, 0xa8, 0x92, 0x4d, + 0x3c, 0xac, 0x95, 0x8e, 0x31, 0xce, 0x02, 0xc1, 0x30, 0x61, 0xc0, 0x08, + 0x04, 0x81, 0xb6, 0x60, 0x74, 0x83, 0x10, 0x61, 0x46, 0x01, 0x48, 0x60, + 0x79, 0x00, 0xda, 0x60, 0x12, 0x80, 0x60, 0x60, 0x1a, 0x80, 0x06, 0x85, + 0x48, 0xf8, 0x60, 0x90, 0x09, 0x84, 0x66, 0xc6, 0x18, 0x0a, 0x3c, 0x6f, + 0xb6, 0xe4, 0x54, 0xb5, 0x60, 0xeb, 0xd8, 0xd8, 0x67, 0xa2, 0x81, 0x69, + 0x6e, 0x50, 0xd7, 0xaf, 0xc7, 0xda, 0x2e, 0xbf, 0xee, 0x4a, 0xe1, 0x69, + 0xea, 0xe6, 0xd2, 0x6b, 0x08, 0x32, 0x34, 0xb3, 0xe5, 0x72, 0x9a, 0x7b, + 0x95, 0xe2, 0x95, 0x26, 0x2c, 0x65, 0x7a, 0x2b, 0x08, 0x9c, 0x79, 0x20, + 0xfd, 0x1f, 0x8d, 0x09, 0x4f, 0xbc, 0x35, 0xbd, 0xce, 0x79, 0xbd, 0x3b, + 0xbf, 0xd6, 0xd9, 0x8d, 0xee, 0xcf, 0x25, 0xd7, 0xee, 0xbc, 0xd7, 0xf5, + 0xb6, 0x54, 0x33, 0xd7, 0xae, 0xd1, 0x1d, 0xdd, 0xaf, 0x73, 0x77, 0x0d, + 0xcd, 0xcb, 0x96, 0xa4, 0x74, 0xbf, 0xe7, 0x6f, 0xd3, 0x4e, 0x54, 0x57, + 0xbe, 0x85, 0x67, 0xbb, 0x9c, 0xbd, 0x79, 0xd6, 0xf9, 0x9b, 0x2e, 0xf9, + 0x99, 0x0f, 0xf1, 0x24, 0xde, 0x2d, 0x9d, 0xae, 0x3e, 0xe5, 0x4e, 0xc9, + 0x08, 0xb1, 0x1e, 0x09, 0xb1, 0x85, 0x00, 0xed, 0x00, 0xa7, 0xbf, 0xf1, + 0xfa, 0x7c, 0x68, 0xe9, 0xef, 0x61, 0x77, 0x57, 0xec, 0xd8, 0xad, 0x48, + 0x6b, 0xb6, 0xe7, 0x0e, 0x6a, 0x1d, 0xa6, 0xfe, 0x46, 0xfa, 0x26, 0xa6, + 0x93, 0x1e, 0x23, 0x6b, 0x27, 0x7d, 0xff, 0x89, 0x29, 0xbb, 0xb6, 0x3e, + 0xe4, 0x69, 0x6d, 0x32, 0xed, 0xbc, 0x3d, 0xf3, 0x2f, 0xde, 0x8d, 0x2f, + 0xc4, 0x4b, 0xdc, 0xea, 0xf1, 0xc2, 0x6d, 0x3d, 0x75, 0x16, 0x3d, 0x90, + 0x75, 0x71, 0x68, 0x32, 0xb2, 0x57, 0x4a, 0x88, 0x55, 0x9b, 0x8e, 0x18, + 0x73, 0xc4, 0x4c, 0x0e, 0x81, 0xb1, 0x15, 0x37, 0xa5, 0x25, 0x0c, 0x98, + 0x65, 0x48, 0x4e, 0xa3, 0x49, 0x4a, 0x97, 0x14, 0x3f, 0x79, 0xb5, 0x53, + 0x47, 0xb2, 0x3b, 0x48, 0xd1, 0x6a, 0x74, 0x3c, 0x41, 0x26, 0x46, 0x8a, + 0xc0, 0x3a, 0x26, 0x29, 0x0c, 0x1e, 0x38, 0x54, 0x40, 0x3c, 0x1d, 0x2c, + 0xa0, 0x74, 0x80, 0x20, 0x58, 0xd1, 0x7b, 0x1c, 0x98, 0x82, 0x9a, 0x8a, + 0x66, 0x5c, 0x72, 0x70, 0x5c, 0x64, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xf0, 0x0c, 0x03, 0xe0, 0x19, 0xcc, 0x05, 0xc0, 0x43, 0x8c, 0x09, + 0x30, 0x55, 0x4c, 0x11, 0x40, 0x98, 0x8c, 0x22, 0xd1, 0x55, 0xcc, 0x65, + 0x67, 0xa3, 0x0f, 0x31, 0x6a, 0x9d, 0xcc, 0x72, 0x61, 0x70, 0x0c, 0x2c, + 0xf0, 0xb2, 0xcc, 0x1d, 0x30, 0x6b, 0x4c, 0x23, 0xc0, 0x6c, 0x8c, 0x4a, + 0x10, 0x22, 0x8c, 0x1b, 0x90, 0x16, 0xc3, 0x00, 0x9c, 0x1e, 0x04, 0x7d, + 0x4e, 0x08, 0x46, 0x03, 0x04, 0x8d, 0x2f, 0x80, 0x4f, 0xd1, 0x3c, 0xe0, + 0xea, 0x75, 0x6d, 0x97, 0xe9, 0x60, 0xa8, 0xf9, 0x66, 0x30, 0x04, 0x11, + 0xfa, 0x7a, 0xf0, 0x1c, 0xcd, 0x1d, 0xd7, 0x52, 0x5d, 0xcc, 0x96, 0xca, + 0xb4, 0x48, 0xb0, 0xd4, 0x4d, 0xf1, 0x8e, 0x45, 0xa9, 0xaa, 0xc8, 0x6a, + 0xc9, 0xe8, 0xa7, 0x6e, 0x4c, 0xd2, 0xaf, 0x08, 0x04, 0x8e, 0x5a, 0xbd, + 0x37, 0x92, 0x8c, 0x64, 0xe3, 0xd1, 0xd4, 0xfa, 0x09, 0xcf, 0x64, 0xa2, + 0xe9, 0xcb, 0xd4, 0xe3, 0x6b, 0x93, 0x93, 0xe3, 0x18, 0xa9, 0xc7, 0xe2, + 0x4c, 0x54, 0x2e, 0xb3, 0x32, 0xc9, 0x6a, 0x2c, 0x90, 0xd5, 0x2f, 0xa9, + 0x42, 0xea, 0x76, 0x87, 0xdd, 0x2d, 0x1b, 0x9b, 0x12, 0xe9, 0xdb, 0xce, + 0x55, 0x5c, 0xd6, 0xf3, 0x86, 0x10, 0xa2, 0xc5, 0x62, 0xb5, 0x2c, 0xe8, + 0xa9, 0x8d, 0x78, 0x4a, 0xf1, 0x89, 0x55, 0xdd, 0xa6, 0x95, 0xee, 0xad, + 0x9a, 0xcb, 0x33, 0x53, 0x14, 0x9c, 0x67, 0x2d, 0x45, 0x1f, 0x1b, 0x71, + 0x8d, 0xc6, 0x35, 0x65, 0x48, 0x55, 0x3d, 0x09, 0x64, 0x50, 0x41, 0xea, + 0xac, 0x3a, 0x8c, 0x5d, 0x75, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x09, 0xf6, + 0xce, 0x70, 0x41, 0x0b, 0xfb, 0x4b, 0x70, 0x68, 0xee, 0x08, 0x10, 0x64, + 0x65, 0x6e, 0x18, 0x75, 0xc1, 0x0c, 0xcf, 0xec, 0xcd, 0xc1, 0xfb, 0x37, + 0xdf, 0xc1, 0xa1, 0xa1, 0xb8, 0xd5, 0xdc, 0x32, 0xcb, 0x59, 0xf7, 0x9a, + 0xef, 0xda, 0xd3, 0x36, 0xea, 0x85, 0x86, 0x6a, 0x9e, 0xef, 0x26, 0xff, + 0x1e, 0x1c, 0xbd, 0x22, 0xd3, 0x78, 0x79, 0xd3, 0xe6, 0xdb, 0x6e, 0xae, + 0xc8, 0xb2, 0x22, 0x15, 0xdd, 0x69, 0x5c, 0xa6, 0x44, 0x64, 0xe4, 0xd7, + 0x5a, 0x19, 0xaa, 0x96, 0x92, 0xe6, 0x4b, 0xd9, 0x6a, 0x6b, 0x48, 0xb5, + 0x34, 0xa4, 0xf2, 0xb7, 0xa2, 0x6c, 0xf4, 0x7b, 0x99, 0x19, 0xd4, 0xb5, + 0x67, 0x74, 0x46, 0xb8, 0x8b, 0x55, 0xb2, 0xce, 0x95, 0x66, 0x45, 0x63, + 0x6e, 0xea, 0xa8, 0x73, 0xb8, 0x8c, 0x87, 0x30, 0x52, 0x07, 0x45, 0xc1, + 0xd8, 0x60, 0x9a, 0x90, 0x70, 0x82, 0x8f, 0x0c, 0x41, 0x31, 0x00, 0x90, + 0x7f, 0xd3, 0x01, 0x78, 0x03, 0x50, 0x30, 0x20, 0x46, 0x05, 0x10, 0x06, + 0xe6, 0x08, 0x68, 0x0c, 0x46, 0x10, 0x80, 0x20, 0xa6, 0x31, 0xb8, 0xda, + 0x87, 0xa1, 0xc9, 0x21, 0x26, 0x38, 0x98, 0x15, 0x86, 0x0f, 0x80, 0x14, + 0x46, 0x03, 0xd0, 0x22, 0x46, 0x01, 0x20, 0x30, 0xe6, 0x06, 0x68, 0x13, + 0x26, 0x02, 0x88, 0x0c, 0xc0, 0x40, 0x0d, 0xcc, 0x01, 0xd0, 0x01, 0x96, + 0x49, 0x08, 0x42, 0x9d, 0x19, 0x1b, 0x38, 0x48, 0x6a, 0xbe, 0x8a, 0xda, + 0x80, 0x2b, 0xd2, 0xbc, 0x7a, 0x9a, 0xb7, 0x4a, 0x61, 0xa1, 0x12, 0xb9, + 0xfd, 0xbf, 0xad, 0xb5, 0xcd, 0x3c, 0xba, 0xa6, 0xb0, 0xbe, 0x55, 0xa6, + 0x2f, 0x7a, 0x5d, 0x25, 0xb8, 0xad, 0x0f, 0xa4, 0x1f, 0x5e, 0x49, 0x8b, + 0xf3, 0x56, 0xd5, 0x15, 0x9b, 0x4b, 0x9a, 0x0f, 0xa8, 0x85, 0x1f, 0x5d, + 0xa2, 0x8b, 0x3a, 0x69, 0xfb, 0xea, 0xdb, 0xee, 0x6f, 0x8c, 0xaf, 0x13, + 0xed, 0xa3, 0x2b, 0x65, 0xde, 0xc0, 0xbb, 0x7f, 0x1b, 0x1b, 0x17, 0x3a, + 0x9d, 0xd4, 0xb5, 0x4e, 0xf9, 0xfa, 0xec, 0xed, 0xdb, 0xff, 0x5f, 0x19, + 0xc9, 0xce, 0x34, 0x53, 0x6f, 0x98, 0xba, 0xfb, 0xfe, 0xf8, 0xd9, 0x6d, + 0xce, 0xed, 0xac, 0xd5, 0xda, 0x29, 0xbe, 0x65, 0xa5, 0xff, 0x8f, 0x59, + 0xdd, 0xb7, 0xb4, 0x77, 0xcf, 0xbd, 0xf7, 0x77, 0xef, 0x42, 0x20, 0xc7, + 0xc2, 0xb5, 0x03, 0x8a, 0xee, 0xb9, 0x38, 0x4e, 0x55, 0x9c, 0xfa, 0xfa, + 0xc6, 0xc5, 0x9a, 0x9f, 0xa1, 0x06, 0xcc, 0x66, 0x07, 0x58, 0x42, 0x90, + 0xaa, 0xa0, 0x9a, 0x9b, 0x06, 0x58, 0x78, 0x84, 0x13, 0x49, 0xc1, 0x58, + 0x6f, 0x46, 0x32, 0x88, 0xa6, 0x44, 0x5f, 0xdd, 0x53, 0xd1, 0x77, 0x48, + 0xeb, 0xdd, 0xef, 0x11, 0xd4, 0x53, 0x74, 0xf1, 0x2d, 0xd4, 0x9d, 0xd3, + 0xa5, 0x6d, 0x7b, 0xdb, 0x5c, 0x5d, 0x5d, 0xee, 0xb1, 0x2a, 0x39, 0xea, + 0xaa, 0x5d, 0xbf, 0xda, 0xee, 0xe1, 0xa0, 0xf8, 0x63, 0xf8, 0x89, 0x19, + 0x17, 0xf5, 0xdd, 0xc5, 0xbb, 0xf6, 0x9b, 0xa7, 0x03, 0xe7, 0x77, 0xed, + 0xb6, 0x99, 0xab, 0xc6, 0xe9, 0x34, 0x5a, 0xa0, 0xd9, 0xb9, 0x17, 0x0f, + 0xe5, 0x0f, 0x20, 0xa1, 0x61, 0x63, 0xd0, 0xa1, 0x38, 0x82, 0x22, 0x03, + 0xa4, 0x1c, 0x0d, 0x09, 0x3c, 0x3d, 0x10, 0x86, 0x8a, 0x8e, 0x4c, 0x41, + 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x14, 0xc0, 0xc0, 0x30, 0x28, 0x01, 0x03, 0x30, 0x04, 0x41, + 0xec, 0x30, 0x03, 0x43, 0x59, 0x30, 0x13, 0x87, 0x70, 0x30, 0x18, 0x6b, + 0x1b, 0x30, 0x7b, 0x7b, 0x48, 0x30, 0x5e, 0xc7, 0xd5, 0x30, 0x72, 0x83, + 0x2c, 0x30, 0x7f, 0x01, 0x22, 0x30, 0xc0, 0xc0, 0x13, 0x22, 0x37, 0x50, + 0x88, 0x50, 0x13, 0x02, 0x1c, 0x05, 0x93, 0x01, 0x20, 0x00, 0x61, 0x60, + 0x9a, 0x0c, 0x18, 0x40, 0x14, 0x61, 0xff, 0xb9, 0xa3, 0x04, 0x69, 0x7c, + 0xce, 0x63, 0x49, 0x96, 0xfa, 0x48, 0xdc, 0x98, 0x45, 0x4a, 0xf4, 0xa0, + 0x61, 0x2d, 0x88, 0x22, 0x22, 0xfc, 0x37, 0xd3, 0xd2, 0x46, 0xbf, 0x35, + 0xc8, 0x7d, 0x9e, 0xa9, 0xe9, 0x44, 0x67, 0x50, 0xeb, 0x76, 0x89, 0xc1, + 0x56, 0x35, 0xba, 0x67, 0xaa, 0x2b, 0xdd, 0x4a, 0xaf, 0x39, 0x76, 0x8e, + 0x35, 0xca, 0x5e, 0xba, 0x2b, 0xa6, 0xb5, 0x12, 0xd9, 0x24, 0x96, 0x46, + 0x64, 0xe1, 0x3c, 0x56, 0x92, 0x53, 0x51, 0xc5, 0xa6, 0xd3, 0x26, 0xf1, + 0xa4, 0xcf, 0x38, 0xa4, 0xa1, 0xa4, 0xd0, 0x45, 0x85, 0x14, 0x51, 0x13, + 0x64, 0x79, 0x46, 0x53, 0x26, 0x49, 0xe7, 0x5a, 0xf9, 0xd2, 0x5f, 0x4f, + 0xb5, 0xd0, 0x39, 0x8b, 0x5f, 0x2f, 0x4a, 0x9e, 0x9c, 0x8a, 0x46, 0xaa, + 0x0e, 0x53, 0x18, 0x88, 0xfc, 0x22, 0x9f, 0x2e, 0x79, 0xc8, 0x15, 0x41, + 0x26, 0xe6, 0xca, 0xec, 0xbd, 0x44, 0xd2, 0xbb, 0x34, 0xcc, 0xe2, 0xda, + 0xb8, 0xb2, 0x4d, 0xe2, 0x94, 0x7d, 0x26, 0xd9, 0xc9, 0x55, 0x40, 0x86, + 0x52, 0x64, 0x86, 0x46, 0x40, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x09, 0xd7, + 0x4c, 0x70, 0x40, 0x03, 0xfc, 0x4b, 0x70, 0x6a, 0xed, 0xf8, 0x11, 0x3c, + 0x65, 0x6e, 0x16, 0x6d, 0xc1, 0x0c, 0xef, 0xec, 0x6d, 0xc1, 0xd6, 0xb8, + 0x20, 0x05, 0x93, 0x21, 0xb8, 0x5d, 0x1a, 0xb2, 0x6a, 0x24, 0x30, 0x19, + 0x09, 0xd1, 0xb6, 0x40, 0x3a, 0xe2, 0x87, 0x00, 0x57, 0x0d, 0x17, 0xcd, + 0xb3, 0x39, 0x7f, 0x7b, 0xdf, 0x35, 0xf4, 0xa0, 0xfe, 0xee, 0x23, 0xd5, + 0xc5, 0x11, 0xa1, 0x6e, 0xbb, 0x3c, 0x18, 0xd2, 0x91, 0x59, 0xc6, 0x7c, + 0xd9, 0x48, 0x5d, 0x5f, 0x91, 0x6f, 0xa3, 0xab, 0x9b, 0xb3, 0x3b, 0xa2, + 0xa1, 0x1d, 0xf6, 0x53, 0x15, 0x4a, 0x8f, 0x9c, 0xf5, 0x66, 0x67, 0x63, + 0x57, 0x6d, 0x91, 0x58, 0xe9, 0xeb, 0xdd, 0x55, 0xd9, 0x58, 0xb2, 0xe4, + 0x4d, 0x57, 0xd8, 0xac, 0x45, 0x76, 0xde, 0xcd, 0x57, 0xb9, 0x9e, 0xd5, + 0x7c, 0xac, 0x85, 0xba, 0x3a, 0x33, 0x31, 0xdd, 0x4c, 0x86, 0x1e, 0x56, + 0xab, 0x8a, 0x1c, 0xc2, 0xe2, 0xe2, 0x04, 0x13, 0x38, 0xf1, 0x81, 0xa2, + 0xe6, 0x47, 0x88, 0x38, 0xd1, 0xc1, 0x51, 0x20, 0x02, 0x01, 0xc8, 0x88, + 0x06, 0x43, 0x02, 0x6c, 0x03, 0x73, 0x04, 0x38, 0x07, 0xe3, 0x08, 0x4c, + 0x12, 0xf3, 0x18, 0xb0, 0x6e, 0x23, 0xcf, 0xe8, 0x94, 0x13, 0x1c, 0x28, + 0x19, 0xa3, 0x08, 0x9c, 0x14, 0x13, 0x03, 0x6c, 0x13, 0x73, 0x02, 0x70, + 0x1a, 0x63, 0x03, 0xdc, 0x08, 0x63, 0x01, 0x2c, 0x06, 0x30, 0x80, 0x00, + 0x02, 0x00, 0x3d, 0x53, 0x02, 0xf3, 0x86, 0x02, 0x18, 0x05, 0xf8, 0x09, + 0xfd, 0xfc, 0x9b, 0xa9, 0x45, 0x9e, 0x0d, 0x82, 0xdd, 0xaa, 0xf7, 0x86, + 0x85, 0xb5, 0x85, 0x04, 0x01, 0x08, 0x87, 0x5f, 0xd6, 0x0d, 0x52, 0x4d, + 0x23, 0x67, 0xee, 0x6e, 0x17, 0x29, 0x24, 0x99, 0x34, 0x2a, 0xd1, 0xdc, + 0xf2, 0xb5, 0x04, 0xda, 0xc2, 0xb6, 0x3b, 0x6c, 0x78, 0x35, 0x58, 0x1d, + 0x0a, 0xfa, 0x11, 0x93, 0x77, 0xd6, 0xdd, 0xf6, 0xff, 0xfa, 0x93, 0xc9, + 0x50, 0xf0, 0x64, 0x6f, 0x50, 0xc9, 0x48, 0xec, 0x23, 0x6e, 0x7d, 0x28, + 0x86, 0xb5, 0x0f, 0xa6, 0x99, 0x39, 0x4c, 0x16, 0x8b, 0x35, 0x85, 0xf4, + 0x9f, 0x23, 0x97, 0xcb, 0x87, 0x1f, 0xe6, 0xc9, 0xfe, 0x5e, 0x79, 0x07, + 0x5d, 0xac, 0x27, 0xf8, 0x6d, 0x17, 0x26, 0x2c, 0x98, 0x41, 0xc7, 0xaf, + 0x47, 0x50, 0x6e, 0xc0, 0xda, 0x82, 0x6c, 0x3a, 0x74, 0xf7, 0xa2, 0x1c, + 0x94, 0x55, 0xc2, 0x96, 0xbd, 0x8e, 0x61, 0xee, 0x52, 0x7d, 0x31, 0x36, + 0xcf, 0x36, 0xd0, 0x93, 0x94, 0x7f, 0x7a, 0x96, 0xe8, 0x7a, 0xed, 0x9b, + 0xbd, 0x26, 0x7c, 0xb7, 0x8e, 0x7e, 0x7f, 0x58, 0xcc, 0xc9, 0x15, 0x5f, + 0x32, 0xf3, 0x5c, 0xa7, 0x31, 0x6e, 0xb5, 0x5f, 0xed, 0xf3, 0x51, 0x15, + 0xb4, 0x4d, 0xb4, 0xa7, 0xeb, 0x73, 0xaf, 0x1d, 0xf3, 0x51, 0x55, 0x1d, + 0xbc, 0x72, 0xb1, 0xf7, 0xcc, 0xaa, 0x24, 0x5c, 0xbd, 0x4a, 0x76, 0xb7, + 0xbe, 0x9d, 0x55, 0x18, 0x4f, 0x8e, 0x7f, 0xbf, 0x5a, 0xa6, 0xb8, 0xe7, + 0x8a, 0x97, 0x4e, 0x4d, 0x98, 0x6b, 0xb2, 0xa9, 0x12, 0x54, 0xda, 0xd2, + 0xf3, 0x1c, 0x70, 0xf0, 0x92, 0xe5, 0x28, 0x57, 0x3c, 0x27, 0x40, 0x68, + 0x26, 0x41, 0xc9, 0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x27, 0x05, 0xc6, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x28, 0x80, 0xaf, 0x30, 0x0b, 0xc0, 0xf8, 0x30, 0x28, 0x81, + 0x7f, 0x30, 0x42, 0x42, 0xa2, 0x30, 0x87, 0x85, 0xe3, 0x31, 0xb6, 0xe1, + 0xda, 0x3e, 0xf0, 0x6f, 0x71, 0x31, 0xea, 0x46, 0x4a, 0x30, 0x8b, 0x81, + 0xb7, 0x30, 0x26, 0x01, 0x50, 0x30, 0x71, 0x82, 0x2f, 0x31, 0x5f, 0x40, + 0x47, 0x30, 0x69, 0x40, 0xa0, 0x30, 0x14, 0x80, 0x4d, 0x0e, 0x00, 0xd4, + 0xc4, 0x41, 0x60, 0x00, 0x44, 0x10, 0x0d, 0x32, 0xf2, 0x4c, 0xe2, 0xa1, + 0x34, 0xc8, 0x2c, 0x82, 0x7a, 0x8b, 0x01, 0xd8, 0xc2, 0x0a, 0x30, 0xb4, + 0x1c, 0x5f, 0x6b, 0x5d, 0x72, 0x0d, 0x0a, 0x1e, 0x38, 0x1d, 0x94, 0x38, + 0x8a, 0x59, 0x21, 0x74, 0xe1, 0xc7, 0x62, 0xcc, 0xae, 0xca, 0x84, 0xcd, + 0x52, 0x4e, 0xbf, 0xef, 0xab, 0xb1, 0x43, 0x4f, 0x52, 0x57, 0x10, 0x70, + 0x29, 0xf2, 0xb1, 0x61, 0xf7, 0x81, 0x71, 0xe4, 0x0a, 0xa3, 0x68, 0x90, + 0x95, 0xea, 0xea, 0x6b, 0x62, 0xed, 0x41, 0x51, 0x8b, 0x6e, 0x07, 0x99, + 0x8c, 0x63, 0x15, 0xb1, 0x83, 0x4d, 0x27, 0xd7, 0x7b, 0x2a, 0x2b, 0x4a, + 0x44, 0x32, 0x47, 0x34, 0x7a, 0x81, 0x44, 0x25, 0x88, 0x70, 0xdb, 0x42, + 0xb2, 0x79, 0xaf, 0x49, 0x2d, 0x8d, 0xbd, 0x8c, 0x89, 0x0a, 0x89, 0xf6, + 0x52, 0x79, 0x58, 0x96, 0x8c, 0x26, 0xd2, 0xd4, 0xc3, 0x73, 0x47, 0x91, + 0xe9, 0xa5, 0x02, 0x94, 0xdd, 0x41, 0xa5, 0x2d, 0xa5, 0x3d, 0x69, 0x8d, + 0x59, 0xf4, 0x86, 0x2c, 0x29, 0x06, 0xb1, 0x85, 0x17, 0x93, 0x6e, 0xb5, + 0xda, 0x6e, 0xf1, 0xba, 0x8b, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xc7, + 0x79, 0x70, 0x40, 0x83, 0xfc, 0x4b, 0x70, 0x6b, 0x8e, 0x08, 0x10, 0x64, + 0x67, 0x6e, 0x1f, 0x1d, 0xc1, 0x02, 0x0f, 0xed, 0x2d, 0xc1, 0x68, 0x36, + 0x21, 0x0d, 0x01, 0x89, 0xb8, 0x4c, 0x1b, 0x39, 0x4c, 0x29, 0x8f, 0x27, + 0x4d, 0x0c, 0xa6, 0x29, 0x64, 0x77, 0x29, 0xa3, 0xc8, 0x60, 0x6e, 0x0a, + 0x02, 0xd9, 0x77, 0xa4, 0xf2, 0x9b, 0xb3, 0x9d, 0xc6, 0xd6, 0x36, 0xac, + 0xf7, 0xf8, 0x66, 0x2a, 0x74, 0xa9, 0x92, 0xc9, 0x71, 0xc8, 0xdf, 0xbd, + 0x38, 0x7c, 0xcf, 0xca, 0x26, 0x0e, 0x3f, 0xf7, 0x33, 0x9d, 0x1d, 0xa3, + 0xb7, 0x47, 0x53, 0x97, 0xa5, 0x9f, 0x33, 0x9c, 0xdc, 0xd6, 0x46, 0xd9, + 0xab, 0x9c, 0xd7, 0x5a, 0xd1, 0xba, 0xa2, 0x55, 0x11, 0x33, 0x2a, 0x8a, + 0xcc, 0x79, 0xaf, 0x45, 0x6a, 0xd9, 0xab, 0x4e, 0x79, 0x87, 0xd1, 0xb5, + 0x53, 0x1d, 0x3b, 0xbd, 0x15, 0x5b, 0x4a, 0x21, 0x5e, 0x62, 0xdd, 0xe8, + 0x63, 0x39, 0x83, 0xe4, 0x87, 0x15, 0xca, 0xba, 0x8b, 0x8f, 0x1e, 0x24, + 0x0e, 0x84, 0xc4, 0x8d, 0x26, 0x69, 0x01, 0x20, 0x6e, 0x4c, 0x64, 0xa9, + 0x80, 0xac, 0x00, 0x51, 0x81, 0x5e, 0x01, 0x89, 0x81, 0x8c, 0x07, 0x31, + 0x81, 0x5a, 0x0e, 0x39, 0x83, 0x62, 0x0d, 0x91, 0x8b, 0x48, 0x0e, 0xe1, + 0xf9, 0x03, 0x96, 0xf1, 0x97, 0xee, 0x3b, 0x89, 0x8b, 0xcc, 0x0d, 0x91, + 0x85, 0xf0, 0x05, 0x79, 0x81, 0xee, 0x09, 0x19, 0x86, 0xb4, 0x0e, 0x09, + 0x81, 0x8c, 0x02, 0x59, 0x81, 0x08, 0x02, 0x69, 0x80, 0x3e, 0x03, 0x80, + 0xf5, 0xb9, 0xa7, 0x2c, 0x99, 0x00, 0x21, 0x61, 0xb8, 0xea, 0x5c, 0x8c, + 0xcc, 0x28, 0x90, 0x3c, 0xc6, 0x83, 0x47, 0x00, 0x8c, 0x44, 0x10, 0x80, + 0x1c, 0xc3, 0x80, 0xc4, 0x00, 0xe1, 0xc1, 0xa8, 0x34, 0x06, 0x02, 0x4d, + 0xf4, 0x45, 0x2f, 0x73, 0x57, 0x2f, 0x6b, 0x42, 0x4b, 0xd7, 0x51, 0x53, + 0x3f, 0xe9, 0x13, 0x18, 0x65, 0xcc, 0xc5, 0x75, 0x4c, 0xb1, 0x1a, 0x90, + 0xa6, 0x52, 0xe2, 0xb6, 0x27, 0xe9, 0xfe, 0x8b, 0x41, 0xb1, 0x58, 0xd3, + 0xfd, 0x11, 0x8a, 0xb3, 0xe7, 0xe4, 0x03, 0x0f, 0x0c, 0x8e, 0x88, 0x87, + 0xc1, 0x5c, 0x0a, 0xc0, 0x98, 0x4e, 0x85, 0x82, 0x2d, 0x84, 0x8c, 0x66, + 0xce, 0x2f, 0xed, 0x63, 0xe2, 0x85, 0xf3, 0x66, 0x34, 0xac, 0xd9, 0xbd, + 0x82, 0xca, 0x2d, 0x7e, 0xbc, 0x64, 0xfb, 0x58, 0xa3, 0x23, 0x59, 0x19, + 0x91, 0x2e, 0x77, 0x18, 0x21, 0x39, 0x51, 0xb8, 0x30, 0x8e, 0x4d, 0x7d, + 0xc6, 0x13, 0x69, 0x02, 0x4b, 0xa0, 0x85, 0xba, 0x2c, 0xf8, 0x75, 0x26, + 0x9a, 0xf3, 0x57, 0x76, 0x48, 0x9a, 0xce, 0x5a, 0xe5, 0x49, 0xc9, 0xea, + 0xbf, 0x19, 0xf0, 0x29, 0x52, 0x7a, 0xc9, 0xa5, 0x99, 0x67, 0x7c, 0x7b, + 0x29, 0x2f, 0xd2, 0xa4, 0xf1, 0x36, 0x7b, 0x44, 0xb4, 0xd8, 0xac, 0x98, + 0x81, 0x11, 0x46, 0x60, 0xa0, 0xa6, 0x9f, 0x31, 0x72, 0x1c, 0x64, 0x80, + 0x01, 0xc3, 0xa0, 0x5e, 0x75, 0x33, 0x9b, 0xa0, 0x92, 0x4c, 0x9f, 0xef, + 0x0d, 0x3b, 0xfe, 0x77, 0xa5, 0x52, 0xcf, 0xf2, 0xc9, 0x45, 0x40, 0x12, + 0x55, 0x0b, 0x03, 0xa0, 0x37, 0x21, 0x2b, 0x29, 0xb9, 0xc2, 0xaa, 0xa2, + 0x0e, 0x0b, 0x24, 0x84, 0x7b, 0xa5, 0xf7, 0x4a, 0xbb, 0x59, 0xd7, 0xe4, + 0xbe, 0x95, 0x64, 0xad, 0x3b, 0x5f, 0xef, 0xab, 0xef, 0xa5, 0x29, 0xe8, + 0xfe, 0xed, 0x7f, 0x4b, 0xdf, 0x64, 0x5b, 0xed, 0xd6, 0xbf, 0xe8, 0xf7, + 0xd4, 0xc6, 0x24, 0xe9, 0x9d, 0xce, 0x55, 0x20, 0x87, 0x22, 0x19, 0xc0, + 0xe0, 0xd1, 0x14, 0xc4, 0x14, 0xd4, 0x53, 0x32, 0xe3, 0x93, 0x82, 0xe3, + 0x25, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x2f, 0x41, 0x24, 0x30, 0x84, 0x01, 0xeb, 0x30, 0x80, 0xc3, + 0x20, 0x30, 0x3b, 0x83, 0x89, 0x30, 0xa9, 0x47, 0xb6, 0x30, 0xe1, 0x14, + 0x69, 0x3f, 0xa0, 0x90, 0xd3, 0x34, 0x88, 0x01, 0xd9, 0x31, 0x4e, 0xc1, + 0x23, 0x30, 0x37, 0x42, 0xf5, 0x30, 0x3e, 0x44, 0x78, 0x30, 0x54, 0xc0, + 0x8f, 0x30, 0x88, 0x01, 0x21, 0x30, 0x19, 0xc0, 0x76, 0x30, 0x03, 0x00, + 0x29, 0x33, 0xf0, 0x40, 0x74, 0x66, 0x24, 0xc0, 0x7b, 0x93, 0x86, 0x24, + 0xd7, 0x1e, 0xc7, 0xb1, 0x97, 0x41, 0x10, 0xd4, 0x0d, 0x0d, 0xb5, 0xe6, + 0x54, 0xcf, 0x9d, 0xc6, 0xca, 0xf2, 0x35, 0x54, 0xaa, 0x7a, 0x97, 0x5c, + 0x85, 0x6a, 0xac, 0x65, 0xb4, 0x91, 0x94, 0x10, 0x75, 0x96, 0x79, 0x2f, + 0xb2, 0xdc, 0xad, 0xae, 0xc6, 0xba, 0xd9, 0x59, 0x2b, 0x7b, 0x2b, 0x88, + 0x41, 0x0e, 0xb4, 0x62, 0x55, 0x02, 0x39, 0x6d, 0x2e, 0x32, 0xd6, 0x9c, + 0x88, 0x8a, 0xe6, 0x82, 0x60, 0x89, 0x14, 0xe3, 0x75, 0x6b, 0x92, 0xd6, + 0x49, 0xd9, 0x34, 0xae, 0x2f, 0x0d, 0xd8, 0x71, 0x1a, 0x73, 0x7c, 0xfb, + 0x43, 0x6c, 0x9e, 0x0e, 0x9e, 0xc6, 0x52, 0xef, 0x35, 0xc6, 0x41, 0x4d, + 0x38, 0xf1, 0xb2, 0xcb, 0x12, 0x39, 0xd8, 0x86, 0x0d, 0x02, 0x2c, 0xfe, + 0x5b, 0x9b, 0x76, 0x68, 0xa9, 0x62, 0x70, 0x5d, 0x33, 0xb3, 0x14, 0x6e, + 0x8d, 0x8e, 0x47, 0x03, 0x52, 0x33, 0xe6, 0xa2, 0xd6, 0x1a, 0xd5, 0x1c, + 0xa1, 0xfa, 0x9c, 0x76, 0x63, 0x71, 0x48, 0x9c, 0xe5, 0x5e, 0xb3, 0x47, + 0xa1, 0xd1, 0x8a, 0x5a, 0x81, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd9, + 0xc7, 0x70, 0x3c, 0x83, 0xf8, 0xc3, 0x70, 0x67, 0x6e, 0x08, 0x22, 0x3c, + 0x65, 0x6e, 0x23, 0xd9, 0xc0, 0xf4, 0x0f, 0xe1, 0xed, 0xc1, 0x6b, 0x36, + 0xe0, 0x80, 0x91, 0x95, 0xb9, 0xa1, 0xa8, 0x84, 0x8d, 0xb9, 0xb9, 0xed, + 0xdd, 0x7d, 0x3b, 0x50, 0x23, 0x2b, 0xb4, 0xd2, 0x32, 0x8b, 0x37, 0xb0, + 0x35, 0x67, 0xa1, 0xe4, 0x7c, 0x5d, 0x25, 0x3b, 0x81, 0xde, 0x47, 0xc6, + 0x19, 0xae, 0xba, 0xe5, 0xef, 0xdc, 0x14, 0xb8, 0xd9, 0xdc, 0x39, 0x69, + 0xb8, 0xbb, 0xd7, 0x9b, 0x04, 0xa3, 0x37, 0xfa, 0x0c, 0x7a, 0x5f, 0x7a, + 0xf7, 0x62, 0x53, 0x71, 0xe7, 0xd6, 0x05, 0x64, 0x9b, 0xac, 0xca, 0x6e, + 0x3e, 0x4e, 0x23, 0x65, 0x6e, 0xb1, 0x7b, 0x4d, 0x31, 0xf8, 0x62, 0x4e, + 0xf5, 0x3b, 0x90, 0xe4, 0x38, 0x8c, 0x8d, 0x29, 0x96, 0xab, 0xf6, 0x42, + 0x65, 0xde, 0xb2, 0x00, 0x03, 0xf7, 0x75, 0x6a, 0xbf, 0x79, 0xef, 0x5c, + 0x79, 0x2f, 0xf8, 0xfd, 0xda, 0xc3, 0x52, 0xd7, 0x8b, 0x0c, 0xee, 0xac, + 0x59, 0x91, 0x8a, 0x06, 0x48, 0xbb, 0x99, 0xf9, 0x8b, 0x23, 0x6b, 0xe8, + 0x77, 0x2f, 0xa2, 0x15, 0x93, 0x44, 0xd0, 0x96, 0x65, 0x2c, 0x84, 0x90, + 0xdd, 0x18, 0x9a, 0x37, 0x5d, 0xd9, 0xac, 0xee, 0x92, 0xa2, 0x3a, 0x35, + 0x9e, 0xda, 0x23, 0xd6, 0x97, 0x64, 0xd8, 0xc9, 0x32, 0x33, 0x2b, 0x67, + 0x55, 0xfd, 0x8f, 0xfa, 0x59, 0x53, 0xa6, 0x89, 0x32, 0x1f, 0x75, 0x20, + 0xba, 0x09, 0x0c, 0x71, 0x63, 0xb8, 0xc1, 0x14, 0x22, 0x89, 0x00, 0xec, + 0x1e, 0x15, 0x18, 0x91, 0xa2, 0x82, 0x82, 0x43, 0x44, 0x0c, 0x04, 0x60, + 0x14, 0x4c, 0x0d, 0xb0, 0x4c, 0x04, 0x20, 0x6f, 0x98, 0x06, 0x00, 0xc5, + 0x18, 0x0e, 0xe1, 0xba, 0x98, 0x20, 0x89, 0xab, 0x19, 0xbb, 0xcc, 0x34, + 0x98, 0x40, 0x41, 0xec, 0x18, 0x23, 0x20, 0xd1, 0x98, 0x1f, 0x60, 0x58, + 0x98, 0x2e, 0x80, 0x34, 0x18, 0x5d, 0x60, 0x54, 0x86, 0x04, 0x7e, 0x24, + 0x03, 0x60, 0x70, 0x06, 0x6b, 0xa1, 0x95, 0xc2, 0x46, 0x0c, 0xf3, 0x4d, + 0xc8, 0x69, 0x60, 0xa9, 0x2c, 0xa9, 0x79, 0x4c, 0xcb, 0xa1, 0x8b, 0xcc, + 0xe6, 0x06, 0x96, 0x35, 0xda, 0x37, 0x99, 0xe6, 0x5f, 0x0a, 0xdc, 0xf1, + 0xb6, 0x37, 0x8a, 0x06, 0x6a, 0x7d, 0x81, 0xa4, 0x31, 0x77, 0xee, 0x1d, + 0x9a, 0x6e, 0x90, 0xcd, 0x24, 0x34, 0xc8, 0x9e, 0x28, 0x02, 0x57, 0x7e, + 0xcc, 0xae, 0x2f, 0xb6, 0xe3, 0x04, 0xef, 0x6c, 0x34, 0x74, 0xfd, 0x1e, + 0xbb, 0x45, 0xa1, 0x2b, 0x70, 0x97, 0x07, 0xf9, 0x78, 0x7e, 0xdc, 0xa3, + 0x3c, 0x22, 0x23, 0xe6, 0x7a, 0x68, 0xac, 0x2f, 0xac, 0xa1, 0x08, 0xe5, + 0x32, 0x57, 0xb5, 0xaa, 0x8b, 0x71, 0xa4, 0xe6, 0x86, 0x1f, 0x4f, 0x54, + 0xa6, 0x02, 0x75, 0x22, 0x73, 0x29, 0x54, 0x6d, 0x44, 0xfd, 0x6c, 0xe6, + 0xca, 0x11, 0xf0, 0x8b, 0x34, 0xe2, 0x31, 0x50, 0x9f, 0xa5, 0x5a, 0xd5, + 0xf1, 0x16, 0x98, 0x95, 0xec, 0x89, 0xf2, 0x64, 0x5b, 0xd7, 0x24, 0x2d, + 0x58, 0x85, 0xf3, 0x21, 0x56, 0x6c, 0xbc, 0x3d, 0x15, 0xce, 0x2a, 0x44, + 0xc9, 0xbd, 0x19, 0x9e, 0x46, 0x25, 0x13, 0x2b, 0x22, 0x14, 0xaf, 0xda, + 0x1d, 0x18, 0xea, 0xcb, 0x0a, 0x41, 0xe2, 0xd2, 0x18, 0xba, 0x7e, 0x71, + 0x21, 0x68, 0xf4, 0x7a, 0xe9, 0x79, 0x10, 0xda, 0xb6, 0xea, 0xca, 0x96, + 0x55, 0xb5, 0x49, 0xce, 0xae, 0x4d, 0xad, 0xb7, 0xa1, 0x84, 0xa1, 0xad, + 0x8e, 0x57, 0x6b, 0x05, 0xc1, 0xc5, 0x78, 0x83, 0xb2, 0xc7, 0x3a, 0xc5, + 0xdd, 0x39, 0x20, 0x9e, 0x13, 0xa4, 0x3d, 0x3a, 0x4d, 0x4f, 0x23, 0x60, + 0xb8, 0x90, 0xf1, 0x28, 0x38, 0x43, 0xfc, 0xe9, 0x06, 0xb7, 0x3f, 0xf8, + 0xba, 0x5a, 0x93, 0xf6, 0x35, 0x08, 0x96, 0xc5, 0x3c, 0x6e, 0x5f, 0x27, + 0xbe, 0x5e, 0x44, 0x7a, 0x17, 0x96, 0x79, 0x70, 0xe9, 0x1a, 0xd3, 0x2b, + 0xde, 0xf4, 0xfa, 0x5f, 0xb5, 0xd7, 0xb3, 0x6b, 0x4d, 0x6f, 0x4e, 0xe4, + 0xec, 0xfd, 0xdd, 0x3a, 0xea, 0xd5, 0xd9, 0x74, 0x59, 0xd8, 0xa8, 0x55, + 0x76, 0x5d, 0x1a, 0x46, 0x64, 0x7b, 0x6a, 0x8e, 0xf2, 0x2d, 0x5d, 0x9b, + 0x4b, 0xb9, 0x37, 0xad, 0x52, 0x8a, 0xd2, 0x1a, 0x79, 0xc4, 0x0a, 0xa6, + 0x57, 0x09, 0x89, 0x9c, 0xa3, 0x45, 0x06, 0x8c, 0x1a, 0x43, 0xb8, 0xb9, + 0x45, 0xe6, 0x99, 0x30, 0x0b, 0x00, 0x19, 0x30, 0x05, 0x80, 0xd5, 0x30, + 0x2a, 0x80, 0x28, 0x30, 0x4c, 0xc0, 0x77, 0x30, 0x98, 0x81, 0x38, 0x31, + 0xb9, 0xca, 0x3b, 0x3e, 0xda, 0x47, 0x7d, 0x31, 0xfb, 0x41, 0x1f, 0x30, + 0x97, 0x81, 0x3c, 0x30, 0x37, 0x01, 0x58, 0x30, 0x1c, 0x41, 0xc7, 0x30, + 0x1c, 0xc0, 0x91, 0x30, 0x12, 0x80, 0x6e, 0x10, 0x80, 0x3a, 0x60, 0x02, + 0x80, 0x00, 0x8c, 0xee, 0x83, 0xfe, 0x54, 0x42, 0x16, 0x48, 0xe3, 0x30, + 0x87, 0xce, 0x1b, 0x7f, 0xa1, 0x98, 0x6a, 0x55, 0x39, 0x46, 0xce, 0x9f, + 0x6f, 0x83, 0xe4, 0xb3, 0xef, 0xd5, 0x23, 0xe4, 0xd6, 0x9b, 0x48, 0xac, + 0xf4, 0xfb, 0x47, 0x8f, 0xb8, 0xaf, 0xfc, 0xb6, 0x31, 0x0b, 0x8e, 0xb8, + 0x74, 0x31, 0x89, 0x7b, 0xe3, 0x7a, 0x21, 0x29, 0x7e, 0x63, 0xce, 0xfc, + 0x06, 0x23, 0x9c, 0xe2, 0x88, 0xf1, 0x74, 0x9a, 0x64, 0x66, 0x4d, 0xad, + 0xb3, 0xaa, 0x28, 0xc2, 0xee, 0x39, 0xfa, 0xcd, 0xb6, 0xc4, 0x35, 0x22, + 0xdc, 0x8b, 0x57, 0x1a, 0x0d, 0xaa, 0xe6, 0xaa, 0x2a, 0x95, 0xcc, 0x32, + 0x5d, 0x60, 0xeb, 0x81, 0x3b, 0xff, 0xfb, 0xd4, 0x60, 0x4f, 0x0f, 0xd8, + 0xd6, 0x70, 0x3d, 0x83, 0xf8, 0x7b, 0x70, 0x5a, 0x0e, 0x08, 0x32, 0x14, + 0x65, 0x6e, 0x23, 0x39, 0xc0, 0xf4, 0x0f, 0xe1, 0xed, 0xc1, 0x53, 0x37, + 0xe0, 0xc8, 0x81, 0x89, 0xb8, 0x24, 0x25, 0x0a, 0xe1, 0xbd, 0x10, 0x90, + 0x4f, 0xae, 0xd8, 0x13, 0x8a, 0xe5, 0x33, 0x32, 0x7d, 0x6d, 0x3e, 0x7b, + 0x92, 0xc5, 0x76, 0x12, 0x67, 0x9b, 0x1b, 0x26, 0x27, 0xea, 0x75, 0x62, + 0x7d, 0x91, 0x3d, 0x01, 0x50, 0xb9, 0x57, 0x37, 0xa7, 0x18, 0x5f, 0x19, + 0x0b, 0x53, 0xc1, 0x63, 0x43, 0x8c, 0x28, 0xe9, 0x37, 0x90, 0x5f, 0x18, + 0x30, 0x23, 0x98, 0x0d, 0x29, 0xf8, 0xcd, 0xaa, 0x64, 0x3a, 0x34, 0x76, + 0xd5, 0xa9, 0x5a, 0x13, 0xe9, 0x57, 0x88, 0xb4, 0x8b, 0x83, 0x79, 0xf6, + 0x9f, 0xd3, 0x51, 0x7e, 0x51, 0xb2, 0x37, 0x29, 0x97, 0x4c, 0x27, 0x9c, + 0x89, 0xfb, 0x64, 0xd3, 0x53, 0x3d, 0x6a, 0x53, 0xa4, 0x89, 0xe2, 0x91, + 0x85, 0x42, 0xc4, 0x9c, 0x48, 0x1c, 0x8b, 0xa3, 0x9c, 0x71, 0x0d, 0x22, + 0x78, 0x73, 0xbc, 0x7a, 0x18, 0x2e, 0x4e, 0xd2, 0x44, 0x20, 0x64, 0x00, + 0x03, 0x72, 0x07, 0x85, 0x22, 0x0e, 0xd1, 0x2b, 0xa1, 0xd9, 0x93, 0x3f, + 0xff, 0x7d, 0x23, 0x7b, 0xe4, 0x4a, 0x6d, 0x3d, 0x9f, 0x06, 0x83, 0x53, + 0x62, 0x22, 0xa6, 0x7d, 0x3a, 0x76, 0x6d, 0x5b, 0x3e, 0x8b, 0xbf, 0xfa, + 0x73, 0xba, 0xda, 0x55, 0xd1, 0x8a, 0x76, 0xee, 0xfc, 0xb7, 0xa7, 0x9f, + 0xff, 0xed, 0xbf, 0x3f, 0x6d, 0xf5, 0x4b, 0x6b, 0x9d, 0xd2, 0xfa, 0xfb, + 0x52, 0x76, 0xde, 0xb2, 0x5c, 0xe5, 0x56, 0x72, 0x96, 0x21, 0x72, 0x09, + 0xab, 0x38, 0xb0, 0x74, 0x88, 0x1e, 0x30, 0xa8, 0x3b, 0x08, 0x00, 0x05, + 0x18, 0x30, 0x5c, 0x34, 0xc0, 0x7b, 0x02, 0x58, 0x28, 0x02, 0x91, 0x80, + 0xfa, 0x09, 0xc1, 0x81, 0x84, 0x10, 0x99, 0x83, 0x1a, 0x25, 0xd1, 0x8a, + 0x34, 0xd6, 0xe9, 0xc8, 0xe5, 0x53, 0x61, 0x88, 0x80, 0x28, 0x39, 0x80, + 0xc6, 0x0d, 0x21, 0x81, 0xf0, 0x00, 0x59, 0x83, 0xc2, 0x07, 0x21, 0x89, + 0x60, 0x08, 0x81, 0x83, 0x20, 0x02, 0x28, 0xd0, 0x15, 0xc8, 0x42, 0x9e, + 0x4d, 0x01, 0x89, 0xb6, 0xe4, 0x5c, 0x9c, 0x98, 0xed, 0x77, 0x36, 0xa5, + 0x89, 0x44, 0x5d, 0xce, 0x74, 0x5f, 0xd7, 0xd6, 0x39, 0x09, 0x93, 0xb4, + 0xd8, 0xab, 0xa0, 0xd2, 0xe5, 0x7c, 0x99, 0xcd, 0xf7, 0x66, 0x0c, 0xf1, + 0x95, 0x44, 0xe9, 0x61, 0xc8, 0x4c, 0xae, 0x01, 0x67, 0x6e, 0x43, 0xe9, + 0x2b, 0x6b, 0xf0, 0x44, 0x7a, 0x38, 0xc8, 0xdf, 0xc7, 0x06, 0x77, 0xf1, + 0xcf, 0x97, 0x7b, 0x47, 0x31, 0xa4, 0xd5, 0xee, 0xd8, 0x5b, 0x0c, 0xe5, + 0x61, 0xcb, 0x22, 0xbd, 0x0b, 0x54, 0x37, 0x17, 0xd4, 0x4a, 0x04, 0xf2, + 0x66, 0x8a, 0x86, 0xaa, 0xd5, 0x4f, 0x5d, 0xbf, 0x78, 0x4f, 0xe4, 0x24, + 0x8d, 0x88, 0x8d, 0xbe, 0x2f, 0xaa, 0xd7, 0xfb, 0x53, 0x2e, 0xce, 0x86, + 0x12, 0xe0, 0x7f, 0xab, 0xcd, 0x36, 0x72, 0x76, 0x79, 0x2c, 0xab, 0xd5, + 0xc8, 0x12, 0xe2, 0x6a, 0x6b, 0x4a, 0x36, 0x55, 0xbc, 0xa7, 0x5d, 0x1f, + 0x47, 0xfa, 0xca, 0x39, 0xd9, 0xf8, 0xa6, 0x71, 0x4c, 0x2a, 0x10, 0xf7, + 0xa9, 0x32, 0x72, 0xa9, 0x88, 0xbb, 0xc2, 0xa9, 0xc9, 0x85, 0x69, 0x3c, + 0xc0, 0xce, 0x97, 0x6e, 0x59, 0x64, 0x42, 0x66, 0x71, 0x2e, 0x87, 0x5c, + 0x27, 0xaa, 0xb5, 0xc3, 0x41, 0xf8, 0xf2, 0xe9, 0x55, 0x41, 0xd1, 0x02, + 0x2a, 0x8d, 0x34, 0xc6, 0xc6, 0xad, 0x51, 0xa1, 0xf1, 0x14, 0x0e, 0x08, + 0x17, 0x95, 0xad, 0x54, 0x85, 0x1a, 0xa0, 0xdc, 0x6e, 0x7b, 0x43, 0x9d, + 0x90, 0xfd, 0x80, 0xc2, 0x7e, 0x1f, 0x8a, 0xe2, 0xda, 0x57, 0xab, 0xce, + 0x86, 0x46, 0x05, 0xe4, 0x72, 0x20, 0x8e, 0x4f, 0x8c, 0x32, 0x90, 0x2d, + 0xcd, 0x44, 0x1f, 0x12, 0x35, 0xa6, 0x67, 0x7e, 0xe9, 0x7f, 0xbe, 0x65, + 0xdf, 0x4f, 0xdf, 0x1d, 0xb3, 0x76, 0x30, 0x47, 0xbb, 0xa4, 0x2e, 0x75, + 0x91, 0x5d, 0xcd, 0x96, 0xea, 0xce, 0xa4, 0x7a, 0xd5, 0x2b, 0xba, 0xd1, + 0xa9, 0xb7, 0x5e, 0x9e, 0xfb, 0xd5, 0x77, 0x54, 0xb6, 0x66, 0x6a, 0x7f, + 0x74, 0xd9, 0xb7, 0x44, 0xfc, 0xf7, 0xdf, 0xaa, 0x2d, 0xd1, 0x3b, 0xfd, + 0xf4, 0xa5, 0x7a, 0xec, 0x9b, 0xe8, 0xa6, 0x56, 0x74, 0x31, 0x4a, 0x63, + 0x9c, 0x71, 0xca, 0x30, 0x72, 0x20, 0x51, 0x4f, 0x30, 0x61, 0xd5, 0x30, + 0x0e, 0x40, 0x29, 0x30, 0x1c, 0x00, 0x75, 0x30, 0x2d, 0x40, 0xcb, 0x30, + 0x4f, 0x01, 0x76, 0x30, 0x9c, 0xc3, 0x59, 0x31, 0xbc, 0x14, 0x5a, 0x3f, + 0x8e, 0x16, 0x0b, 0x32, 0x2a, 0x83, 0x9e, 0x30, 0xb4, 0xc2, 0x1f, 0x30, + 0x59, 0x41, 0xa5, 0x30, 0x5a, 0x81, 0xf6, 0x30, 0xa7, 0xc0, 0x3a, 0x30, + 0x42, 0xc0, 0x71, 0x30, 0x09, 0x00, 0x06, 0x41, 0x3a, 0x28, 0x34, 0xf6, + 0x58, 0x3a, 0xb4, 0xa0, 0x80, 0x25, 0x30, 0x1c, 0x8e, 0x7d, 0xc6, 0x6e, + 0xd0, 0x5d, 0xab, 0x6f, 0xb3, 0x5a, 0x8b, 0xc3, 0xed, 0x92, 0xec, 0x3d, + 0x31, 0x05, 0xcb, 0xa5, 0x11, 0x88, 0x47, 0x58, 0x75, 0x0c, 0x8e, 0x45, + 0x23, 0x81, 0x98, 0xb4, 0xb2, 0x45, 0x29, 0xa3, 0xb7, 0x0f, 0x42, 0x22, + 0x30, 0x3e, 0x50, 0xcf, 0x1e, 0x45, 0xdd, 0x51, 0x8a, 0x95, 0x5a, 0xbc, + 0xf8, 0x6c, 0x4e, 0x49, 0x53, 0xa2, 0xf6, 0x86, 0xe0, 0x97, 0x52, 0x46, + 0xf0, 0x9e, 0xaa, 0x54, 0x29, 0xdb, 0x6d, 0x76, 0xd4, 0xcc, 0x88, 0x7a, + 0xe6, 0xb0, 0xc9, 0x24, 0x38, 0xff, 0xfb, 0xd4, 0x60, 0x4b, 0x0c, 0xd8, + 0x83, 0x70, 0x3e, 0x03, 0xf8, 0x7b, 0x70, 0x5a, 0xad, 0xe8, 0x32, 0x2c, + 0x65, 0x6e, 0x67, 0x55, 0xc1, 0x02, 0x4f, 0xf1, 0xed, 0xc1, 0x47, 0xb8, + 0x20, 0xc0, 0xd0, 0x95, 0xb8, 0x2c, 0xde, 0xef, 0x0e, 0xd6, 0x77, 0x07, + 0x14, 0x2d, 0x26, 0xe7, 0x3b, 0x34, 0x92, 0x37, 0x44, 0x34, 0x19, 0x15, + 0xab, 0x6d, 0x4c, 0xce, 0x2a, 0x28, 0x2c, 0x4a, 0xf4, 0x9d, 0x15, 0x8a, + 0x35, 0x13, 0xa5, 0x8c, 0xc0, 0x42, 0x0b, 0x83, 0x82, 0xd3, 0x82, 0x75, + 0x52, 0xa9, 0x6d, 0x61, 0x82, 0x7f, 0x46, 0x7c, 0xb8, 0x75, 0xa7, 0x35, + 0x7b, 0x99, 0xcb, 0x15, 0xea, 0x91, 0x0f, 0x57, 0x23, 0xd7, 0x2e, 0x2a, + 0x36, 0x66, 0xf7, 0xaa, 0xe4, 0x36, 0x03, 0x93, 0xe6, 0x76, 0x26, 0xa5, + 0x4a, 0xbd, 0xeb, 0x45, 0xdc, 0x1c, 0xb3, 0xe7, 0x4b, 0x5d, 0x89, 0xc9, + 0x5e, 0xd4, 0xc3, 0x96, 0xc8, 0x0b, 0xb7, 0x2b, 0xc6, 0x5d, 0xaa, 0x94, + 0x88, 0x61, 0xd2, 0xaf, 0x3e, 0xf4, 0xc6, 0xbc, 0xd0, 0xd7, 0x1c, 0xf7, + 0x2f, 0xad, 0xc4, 0xf9, 0xb0, 0x70, 0x9a, 0x24, 0x80, 0x00, 0x24, 0xf8, + 0x6a, 0x2c, 0xdf, 0x6f, 0x4a, 0xdb, 0x99, 0x1b, 0xb3, 0x9b, 0x1d, 0xe7, + 0xc0, 0x7a, 0xde, 0x05, 0x78, 0xd1, 0x85, 0xaf, 0xe4, 0x5e, 0xd5, 0x0a, + 0x43, 0xff, 0x52, 0xbd, 0x51, 0x57, 0xff, 0x91, 0x8c, 0xee, 0xf5, 0xf6, + 0x7a, 0x55, 0x7b, 0x33, 0x56, 0x86, 0xfd, 0xbb, 0x24, 0xee, 0xb7, 0xbe, + 0x9d, 0xb4, 0xdb, 0xcf, 0xe6, 0x5e, 0xa6, 0xd9, 0x55, 0xab, 0x5a, 0xb2, + 0xb5, 0x51, 0x35, 0xa6, 0xf7, 0x7e, 0xf5, 0xbb, 0xa1, 0x0a, 0x2e, 0x41, + 0x51, 0x62, 0x89, 0x8b, 0x31, 0x88, 0x26, 0x51, 0xca, 0xe0, 0x3b, 0x09, + 0x89, 0x09, 0x1b, 0xd0, 0x03, 0x02, 0xa8, 0x0e, 0x93, 0x03, 0x64, 0x1e, + 0x03, 0x0a, 0x60, 0x0c, 0x13, 0x14, 0xcc, 0x72, 0x33, 0x1a, 0x2c, 0x5a, + 0xf3, 0x15, 0x94, 0x90, 0xa3, 0x8d, 0xa5, 0x06, 0x73, 0x10, 0xa4, 0x23, + 0x83, 0x07, 0x08, 0x05, 0xa3, 0x04, 0x48, 0x29, 0x63, 0x0a, 0x70, 0x38, + 0x13, 0x2e, 0xfd, 0x31, 0x73, 0x5c, 0xad, 0x4f, 0x73, 0x39, 0xfc, 0x7a, + 0x73, 0x0e, 0xfc, 0x29, 0xf3, 0xab, 0xcb, 0x8f, 0xac, 0xbe, 0x37, 0x1b, + 0xec, 0xcc, 0x87, 0x13, 0x28, 0x86, 0xcc, 0x08, 0x42, 0x32, 0x50, 0x50, + 0xc0, 0xe1, 0x52, 0xa8, 0x88, 0xc7, 0x02, 0x00, 0xb8, 0x8c, 0x88, 0x6e, + 0x62, 0xf1, 0xb9, 0x82, 0xc5, 0x06, 0x5e, 0x33, 0x18, 0xd0, 0x1e, 0x65, + 0xb3, 0xa9, 0x97, 0x43, 0x66, 0x16, 0x1c, 0x07, 0x13, 0x0c, 0x26, 0x1d, + 0x05, 0x0f, 0x4c, 0x4e, 0x25, 0x0c, 0x05, 0x18, 0x30, 0x04, 0x8d, 0xa0, + 0xe0, 0x1a, 0x47, 0x01, 0x80, 0x09, 0xa2, 0x60, 0xe0, 0x01, 0x50, 0x12, + 0x60, 0xf0, 0x28, 0xa0, 0x20, 0x68, 0x18, 0x0d, 0x00, 0xa5, 0xd0, 0x10, + 0x04, 0xab, 0x4b, 0x70, 0xc5, 0x00, 0x20, 0x34, 0xaa, 0x01, 0x00, 0x13, + 0xdc, 0x20, 0x0e, 0x8e, 0x85, 0xc4, 0x46, 0xc2, 0x1a, 0x10, 0x32, 0x9c, + 0x5b, 0x07, 0xe8, 0x55, 0xaa, 0xc1, 0xb0, 0x32, 0x81, 0xa0, 0x9d, 0x0c, + 0xb1, 0x80, 0x2e, 0x08, 0xb5, 0xb2, 0x50, 0x79, 0x1a, 0x18, 0x53, 0xae, + 0x0e, 0x86, 0xf5, 0x5c, 0x8a, 0xb6, 0x06, 0x85, 0xdb, 0x7b, 0x23, 0xd6, + 0x3b, 0x33, 0xd1, 0x81, 0x85, 0xbd, 0x81, 0xd3, 0x5c, 0x90, 0xdc, 0x98, + 0x21, 0x3b, 0x80, 0xac, 0xac, 0xf0, 0xeb, 0x02, 0x66, 0x37, 0x27, 0x95, + 0x5c, 0xc5, 0x55, 0xc2, 0x6c, 0x7b, 0x1f, 0xc2, 0x57, 0xcd, 0x0e, 0x1b, + 0x07, 0x9f, 0xac, 0xc1, 0xad, 0x5c, 0xd9, 0x9d, 0x36, 0xcf, 0x12, 0xac, + 0x13, 0x47, 0x92, 0x48, 0xac, 0xfe, 0x66, 0x0a, 0x5f, 0x70, 0x2f, 0xb9, + 0x22, 0x5e, 0x0e, 0xa7, 0x74, 0xf3, 0x37, 0x6e, 0xb6, 0xb1, 0x7a, 0x44, + 0x8a, 0xf7, 0xe3, 0xdb, 0x51, 0xa6, 0x9e, 0x0c, 0xd9, 0x78, 0xe5, 0x0f, + 0x36, 0xdc, 0x47, 0x09, 0xbc, 0x4b, 0xc9, 0x0a, 0xed, 0x96, 0x72, 0xb5, + 0x72, 0xc2, 0xa3, 0xc3, 0x08, 0xa2, 0xe9, 0xa4, 0xee, 0xe9, 0x98, 0x27, + 0x74, 0xf6, 0x96, 0x72, 0x22, 0x34, 0xdd, 0x85, 0x3c, 0xdc, 0x44, 0x49, + 0x37, 0xb3, 0xb9, 0x3f, 0xe1, 0xad, 0x2e, 0xcc, 0xd5, 0x59, 0xfa, 0xfd, + 0xde, 0x89, 0x5b, 0xfe, 0xfb, 0xbd, 0x75, 0x27, 0x75, 0x74, 0x4d, 0xd6, + 0x99, 0x79, 0x37, 0xb6, 0xf6, 0xeb, 0xbf, 0xd1, 0xdf, 0xa9, 0xea, 0xcd, + 0xa6, 0x8e, 0xf5, 0xa2, 0x9a, 0x9f, 0x4c, 0xaa, 0xd4, 0xd4, 0xf6, 0x52, + 0x4c, 0x8a, 0x8a, 0xe2, 0x43, 0x27, 0x0e, 0x0e, 0x28, 0x78, 0x40, 0x3c, + 0x13, 0x41, 0x55, 0x30, 0x56, 0x81, 0x23, 0x30, 0xa3, 0x41, 0xda, 0x32, + 0xc2, 0x1c, 0xdc, 0x3c, 0x1e, 0x1b, 0x9e, 0x31, 0x86, 0xc5, 0x08, 0x31, + 0x41, 0x4d, 0x77, 0x34, 0xbc, 0xd4, 0x8a, 0x30, 0x99, 0xc2, 0x55, 0x30, + 0x33, 0x81, 0x5a, 0x30, 0x5d, 0x02, 0x0c, 0x30, 0xcd, 0xc2, 0x4d, 0x31, + 0x89, 0x0b, 0xe5, 0x36, 0xb3, 0xbe, 0x2e, 0x32, 0xa1, 0x47, 0xc8, 0x30, + 0xf2, 0xc0, 0x8d, 0x38, 0x81, 0x8c, 0xc0, 0x02, 0x13, 0x0b, 0x97, 0x8c, + 0x9a, 0x96, 0x34, 0x20, 0x34, 0x2c, 0x1b, 0x30, 0xa4, 0x60, 0xc1, 0x04, + 0x31, 0xa2, 0x29, 0x08, 0x68, 0x30, 0xbc, 0x60, 0x20, 0xb9, 0x80, 0x08, + 0x66, 0x99, 0x08, 0x97, 0x60, 0xc4, 0x62, 0x63, 0x0f, 0x8f, 0x87, 0x01, + 0xe6, 0x0a, 0x01, 0x8e, 0x82, 0x92, 0x09, 0xc6, 0x30, 0x30, 0x15, 0xdb, + 0x6b, 0x05, 0xca, 0x7f, 0xda, 0xff, 0xfb, 0xd4, 0x60, 0x3d, 0x0f, 0xd8, + 0x12, 0x70, 0x40, 0x83, 0xfc, 0x4b, 0x70, 0x4e, 0xad, 0xe8, 0x41, 0x20, + 0x42, 0x6e, 0xde, 0x7d, 0xc1, 0x02, 0x0f, 0xf1, 0x2d, 0xc1, 0x4e, 0x37, + 0x60, 0xc4, 0xd0, 0x89, 0xb8, 0xec, 0x81, 0x75, 0x3e, 0x8e, 0x34, 0x1b, + 0x26, 0x70, 0xad, 0x40, 0x2f, 0xc3, 0xfd, 0x62, 0x02, 0x8d, 0xc3, 0x31, + 0xc8, 0x6a, 0x53, 0x3b, 0x0d, 0x68, 0xd1, 0x62, 0x11, 0x82, 0x22, 0x6b, + 0x89, 0x2b, 0x05, 0xad, 0x53, 0x49, 0x17, 0x65, 0x3b, 0xdd, 0x42, 0x89, + 0xb4, 0xce, 0xba, 0x2b, 0x1a, 0xc6, 0x0e, 0x76, 0x5e, 0xb2, 0x4c, 0x4c, + 0xc2, 0x85, 0x99, 0x94, 0x28, 0xb6, 0xd3, 0x09, 0x76, 0x99, 0x6a, 0x13, + 0x2a, 0xaa, 0x44, 0x24, 0x8a, 0x25, 0xed, 0x78, 0x35, 0xd8, 0xc8, 0x1c, + 0x84, 0x59, 0x5a, 0xd4, 0x44, 0x93, 0xbb, 0x04, 0x2a, 0x6c, 0xd0, 0x4e, + 0x93, 0x69, 0xa6, 0x23, 0x0d, 0xd5, 0x20, 0x8d, 0x27, 0x6c, 0xf5, 0x72, + 0x14, 0xf6, 0x11, 0x29, 0x26, 0x3c, 0x6d, 0x77, 0xc2, 0x0d, 0x2b, 0x14, + 0x50, 0xf2, 0xc8, 0x39, 0xf5, 0xe7, 0x8b, 0x47, 0x4d, 0x26, 0xac, 0xe9, + 0x67, 0x20, 0xb5, 0x85, 0x65, 0x29, 0x42, 0x35, 0x86, 0x0c, 0x00, 0x48, + 0x44, 0x42, 0x0b, 0x1b, 0x74, 0x9a, 0xdf, 0x68, 0xea, 0x89, 0x2d, 0x17, + 0x9b, 0x56, 0x77, 0xbf, 0x74, 0x47, 0x95, 0xae, 0xea, 0xc4, 0x06, 0x6e, + 0xad, 0x32, 0x52, 0xde, 0xb4, 0xff, 0x69, 0xee, 0x8d, 0x5a, 0xe8, 0xee, + 0xdd, 0xa9, 0xfd, 0xae, 0x44, 0x9a, 0xb6, 0xff, 0x47, 0xda, 0xfa, 0x2a, + 0xff, 0xec, 0xfe, 0xdd, 0x6b, 0xf6, 0x2f, 0xa7, 0xa5, 0x2a, 0xec, 0xdd, + 0x99, 0x5b, 0x42, 0x33, 0xb3, 0xa2, 0x4d, 0x82, 0x06, 0x14, 0xc6, 0x01, + 0x74, 0x58, 0x66, 0x24, 0x60, 0x58, 0x01, 0x00, 0x60, 0xe3, 0x83, 0x52, + 0x62, 0x8c, 0x71, 0x24, 0x76, 0xbe, 0x22, 0xbe, 0x62, 0x82, 0x05, 0x48, + 0x61, 0x7f, 0x07, 0x1a, 0x73, 0xa3, 0x01, 0x30, 0x62, 0x5d, 0x00, 0x76, + 0x60, 0x4b, 0x81, 0xda, 0x60, 0x7f, 0x83, 0x4a, 0x60, 0x5b, 0x85, 0xc8, + 0x61, 0x51, 0x10, 0x76, 0x73, 0xb9, 0xe8, 0xd2, 0x61, 0xb2, 0x08, 0x1e, + 0x60, 0x41, 0x02, 0x44, 0x68, 0xca, 0xa9, 0x8f, 0x41, 0x06, 0x2c, 0x07, + 0x19, 0xcf, 0x1a, 0x64, 0x61, 0xb8, 0x04, 0x00, 0x60, 0x29, 0x41, 0x82, + 0x40, 0xc2, 0x00, 0x3a, 0x8b, 0x21, 0xf1, 0x10, 0x50, 0x08, 0x49, 0x31, + 0x70, 0xd1, 0xc7, 0x48, 0xe3, 0x01, 0x06, 0x60, 0x48, 0x25, 0xaa, 0xc4, + 0x1b, 0xb0, 0x80, 0x28, 0xd8, 0x1c, 0xb6, 0xbf, 0x19, 0xb1, 0x28, 0xbf, + 0x15, 0x80, 0xea, 0xd3, 0x44, 0xa4, 0x13, 0x15, 0x25, 0xd1, 0xba, 0xb8, + 0x6e, 0xc6, 0xfb, 0x72, 0x55, 0x69, 0xd3, 0x93, 0x73, 0x1b, 0x6c, 0xb2, + 0x52, 0x52, 0x6f, 0x41, 0x4d, 0xaf, 0x3b, 0x93, 0x49, 0x64, 0xc9, 0xfa, + 0xc8, 0x22, 0xfd, 0x69, 0x82, 0x7c, 0x30, 0x54, 0xbb, 0x25, 0x0e, 0x22, + 0xeb, 0x41, 0x3d, 0xeb, 0x65, 0x49, 0x83, 0x52, 0x9c, 0x5b, 0xe9, 0x49, + 0x12, 0xc6, 0x94, 0x55, 0x9f, 0x38, 0x35, 0x35, 0xd7, 0x9c, 0xa3, 0x0c, + 0x81, 0x6b, 0xd8, 0x66, 0xf5, 0x64, 0xca, 0x3b, 0x99, 0x49, 0xce, 0xa1, + 0x07, 0x79, 0x41, 0x75, 0x5b, 0x95, 0x32, 0x95, 0xb6, 0xb3, 0x52, 0x56, + 0xda, 0x94, 0x12, 0xc6, 0x7b, 0x11, 0xcb, 0x73, 0x4a, 0x7f, 0x7d, 0x62, + 0x82, 0x25, 0x76, 0xa6, 0x85, 0xa2, 0xe5, 0x13, 0x44, 0xda, 0xc8, 0x04, + 0xa9, 0x95, 0x64, 0x02, 0xc0, 0x85, 0x70, 0x18, 0x80, 0x55, 0x28, 0x19, + 0xa2, 0xa9, 0xa9, 0xca, 0xd0, 0x5e, 0x79, 0xb0, 0x36, 0x48, 0x63, 0x15, + 0x73, 0x23, 0xe5, 0x11, 0x73, 0x36, 0xaa, 0x79, 0x71, 0xa7, 0xcb, 0xa5, + 0x24, 0xcf, 0x4e, 0x52, 0xbd, 0x37, 0x2d, 0x9f, 0xd2, 0xaa, 0xcc, 0xda, + 0x16, 0x5e, 0x8d, 0xcc, 0xe9, 0x54, 0xfe, 0x9e, 0xec, 0xdb, 0x55, 0xa5, + 0xf7, 0xbe, 0x9b, 0x19, 0x77, 0x76, 0x6a, 0x48, 0xfb, 0x74, 0xd1, 0x7d, + 0x11, 0xab, 0xe8, 0xe8, 0x97, 0x21, 0x94, 0x58, 0x30, 0x62, 0x4e, 0x0c, + 0x18, 0x23, 0x80, 0xb1, 0x5c, 0x21, 0xc0, 0xd5, 0x30, 0x0c, 0x0a, 0xf0, + 0x5a, 0x8c, 0x0a, 0x40, 0xe5, 0x4c, 0x23, 0xbd, 0xaf, 0x0d, 0x0c, 0x52, + 0xfb, 0xcc, 0x12, 0x30, 0x53, 0x0c, 0x08, 0x52, 0x8b, 0x0c, 0x9b, 0xb3, + 0xf1, 0xcc, 0x0d, 0x70, 0x4f, 0x0c, 0x05, 0xd0, 0x0a, 0x0c, 0x10, 0xf0, + 0x59, 0x8c, 0x1a, 0x60, 0x42, 0xcc, 0x2f, 0x10, 0xdf, 0x0f, 0x4d, 0x8a, + 0xb6, 0x0c, 0x44, 0x70, 0xae, 0x8c, 0x11, 0xa0, 0x60, 0x4c, 0x5a, 0xbe, + 0x31, 0x39, 0x6c, 0xca, 0x41, 0x63, 0x5a, 0x24, 0xc3, 0xaf, 0xe6, 0x1c, + 0x07, 0x98, 0x16, 0x40, 0x22, 0x08, 0x85, 0x80, 0x4c, 0x09, 0x2e, 0x0b, + 0xc6, 0x04, 0x0c, 0x1c, 0x98, 0x98, 0x34, 0x19, 0x58, 0x73, 0x1a, 0x80, + 0xae, 0x3a, 0xa5, 0xae, 0xa4, 0x90, 0x18, 0x64, 0x12, 0xd0, 0x29, 0x9f, + 0x49, 0x6d, 0x2a, 0xfb, 0x66, 0xf1, 0xb8, 0x26, 0x45, 0x3a, 0xf0, 0xda, + 0xd4, 0xaa, 0xbc, 0xb2, 0x9a, 0x13, 0x52, 0x62, 0x45, 0xcc, 0xe5, 0x52, + 0x22, 0x12, 0xce, 0x4a, 0x2c, 0x2a, 0x9f, 0x64, 0xaa, 0xd3, 0x85, 0xeb, + 0x8a, 0x7c, 0x6d, 0xf3, 0x44, 0xb1, 0xd6, 0xfd, 0x96, 0x64, 0xaa, 0x18, + 0x28, 0xf4, 0x55, 0x48, 0xf2, 0x4b, 0xf8, 0xc5, 0x59, 0xb7, 0x3b, 0xf9, + 0x73, 0xb9, 0xde, 0x3b, 0x48, 0xcc, 0xc1, 0x27, 0xa9, 0x1a, 0x8d, 0xd4, + 0x77, 0x9b, 0xc3, 0x91, 0x8a, 0xff, 0xfb, 0xd4, 0x60, 0x5e, 0x8f, 0xd7, + 0x9a, 0x70, 0x41, 0x0b, 0xfc, 0x4b, 0x70, 0x54, 0x6d, 0xe8, 0x31, 0x3c, + 0x22, 0x6e, 0x5b, 0x59, 0xc1, 0x08, 0x0f, 0xf0, 0xcd, 0xd1, 0xae, 0xb7, + 0xe0, 0x41, 0x80, 0xa1, 0xb8, 0xfb, 0x8c, 0xce, 0xe3, 0x2b, 0x4d, 0x59, + 0x2d, 0x2b, 0x74, 0x24, 0x9a, 0x29, 0x49, 0x29, 0x3e, 0x14, 0x93, 0x2b, + 0xbd, 0x25, 0xed, 0xff, 0x2e, 0x28, 0x63, 0x15, 0xe7, 0x6c, 0xda, 0xd0, + 0x56, 0xd4, 0xdf, 0x9b, 0xed, 0x0c, 0x4c, 0x44, 0x3d, 0x24, 0x97, 0x55, + 0x33, 0xe4, 0x84, 0xa8, 0x82, 0xb4, 0x2a, 0x68, 0xf1, 0xa6, 0x06, 0x88, + 0x00, 0x45, 0xa8, 0x22, 0xe2, 0x0d, 0xaa, 0xfe, 0xb7, 0xdd, 0xeb, 0x8d, + 0x0d, 0xb6, 0xdb, 0x0f, 0x60, 0x39, 0xe6, 0xa6, 0x7e, 0x24, 0xac, 0xd1, + 0x39, 0xd2, 0xf9, 0x99, 0xff, 0xd1, 0x9f, 0xad, 0x3d, 0x15, 0x39, 0x19, + 0x1a, 0xae, 0xce, 0xcd, 0xd9, 0x89, 0x91, 0xdf, 0xd6, 0xdb, 0xb2, 0x7a, + 0x79, 0xaa, 0x96, 0xfc, 0xcb, 0xa6, 0xdc, 0xad, 0xdf, 0xeb, 0x4a, 0x26, + 0xad, 0x2e, 0x62, 0x4b, 0x45, 0x79, 0xef, 0x45, 0x35, 0x43, 0xab, 0xa1, + 0x0e, 0x82, 0x8e, 0x84, 0x58, 0xa6, 0x08, 0x00, 0x12, 0x08, 0x04, 0x91, + 0x81, 0x82, 0x08, 0xb1, 0x82, 0xd0, 0x12, 0x79, 0x88, 0xeb, 0x14, 0xf1, + 0xcc, 0x6e, 0x38, 0xa9, 0x84, 0x7e, 0x10, 0x61, 0x83, 0x72, 0x1b, 0x09, + 0xa9, 0x1a, 0x3c, 0xd1, 0x85, 0x6a, 0x06, 0x19, 0x81, 0xe4, 0x02, 0x41, + 0x82, 0xb8, 0x03, 0x49, 0x83, 0x3a, 0x08, 0xc1, 0x87, 0xbc, 0x23, 0xc9, + 0xe4, 0x5a, 0x6a, 0xa9, 0x8a, 0x80, 0x16, 0x09, 0x84, 0xb6, 0x06, 0xd1, + 0xb3, 0x0a, 0x06, 0x69, 0x1d, 0x18, 0xa0, 0x22, 0x62, 0xea, 0x70, 0x28, + 0x3c, 0x88, 0xc4, 0x2c, 0x02, 0x24, 0x30, 0x90, 0x3e, 0x1d, 0x7a, 0xc3, + 0x01, 0xe1, 0x44, 0x91, 0x9e, 0x87, 0xe0, 0x60, 0x64, 0xb8, 0x58, 0xf8, + 0xd4, 0x65, 0xa2, 0x41, 0x19, 0x66, 0x46, 0x06, 0x1b, 0xa2, 0xdc, 0x25, + 0xd3, 0xb1, 0xa7, 0xb1, 0xa9, 0xbb, 0xfb, 0x79, 0x2a, 0xaf, 0x9d, 0x48, + 0xb6, 0xaf, 0xbe, 0xe4, 0x46, 0xfc, 0xdb, 0x48, 0xbd, 0x29, 0xc6, 0x30, + 0x71, 0xaf, 0xad, 0xdf, 0x37, 0x0f, 0xfd, 0xf4, 0xda, 0xa5, 0xd4, 0x79, + 0xbb, 0xb5, 0x19, 0xef, 0xe6, 0x7e, 0x60, 0xb2, 0x71, 0x37, 0x27, 0xe6, + 0x74, 0xa9, 0x55, 0xbf, 0x76, 0xbc, 0xb6, 0xa2, 0xb4, 0x2f, 0xd3, 0x59, + 0xf9, 0xbd, 0x1c, 0xf8, 0x7a, 0xb1, 0x9d, 0xad, 0x1c, 0xcf, 0xdf, 0xbc, + 0x3e, 0xba, 0xdd, 0xf6, 0x0b, 0xa6, 0xad, 0x92, 0xf4, 0xe9, 0xca, 0x98, + 0x3a, 0x9b, 0xd7, 0xd7, 0x72, 0x2d, 0x9c, 0xaf, 0xbe, 0xb5, 0xee, 0x1a, + 0xf3, 0x94, 0xbd, 0x74, 0x3d, 0x69, 0x52, 0xb6, 0x4d, 0xc1, 0x6a, 0x84, + 0x03, 0x17, 0x83, 0x4b, 0xb3, 0x2d, 0x8d, 0xd3, 0x5d, 0xcb, 0x3d, 0x52, + 0x52, 0x57, 0xee, 0x35, 0x4c, 0xcb, 0x38, 0xc6, 0x22, 0x9d, 0x04, 0x44, + 0x96, 0xe4, 0x14, 0x28, 0x47, 0x2b, 0x8c, 0x98, 0xee, 0x5b, 0x01, 0xda, + 0xbe, 0xdc, 0xeb, 0xcd, 0xbf, 0xf1, 0x5e, 0xfe, 0xf4, 0xf2, 0xef, 0x5f, + 0x5b, 0xc6, 0xfd, 0xd5, 0x5d, 0x7d, 0x54, 0xff, 0xd3, 0xf5, 0x7d, 0x4c, + 0xdf, 0xc5, 0x5c, 0xcb, 0x4f, 0x33, 0x4f, 0x17, 0xf5, 0x71, 0x7e, 0xd6, + 0xb1, 0xcb, 0xbf, 0xa3, 0xba, 0xe9, 0xab, 0xc9, 0x0f, 0x7d, 0xf5, 0x1a, + 0x3c, 0x5f, 0x50, 0x95, 0x16, 0xcf, 0x70, 0x92, 0x3e, 0xc9, 0x1b, 0xa4, + 0xc9, 0x56, 0xe3, 0x06, 0xb0, 0xb0, 0x8c, 0xd9, 0xc7, 0x59, 0x01, 0x83, + 0x89, 0x15, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x0c, 0x00, 0x03, 0x03, 0x24, 0x0c, 0x83, 0x06, 0x58, 0x13, 0xf3, + 0x17, 0x0d, 0x2a, 0xe3, 0xc6, 0x5c, 0x34, 0xd3, 0x0e, 0x3c, 0x15, 0x63, + 0x09, 0xd8, 0x6d, 0x73, 0x41, 0x08, 0x7d, 0x43, 0x09, 0x08, 0x13, 0x53, + 0x02, 0xcc, 0x03, 0xe0, 0xe0, 0x55, 0xcc, 0x13, 0x00, 0x1d, 0x8c, 0x2c, + 0x50, 0x16, 0x0f, 0x38, 0xa6, 0x6a, 0xcc, 0xb3, 0x30, 0x6a, 0x0c, 0x1f, + 0x40, 0x01, 0xce, 0x1a, 0x1e, 0x35, 0xa0, 0xc0, 0xd0, 0x61, 0x91, 0xa9, + 0x79, 0x9e, 0x82, 0x08, 0x7a, 0x60, 0x13, 0xc1, 0xa8, 0xc0, 0xa2, 0x40, + 0x07, 0xf4, 0x88, 0x0a, 0x09, 0x0c, 0x18, 0x64, 0x80, 0x73, 0xb2, 0xda, + 0x0f, 0x29, 0x89, 0x92, 0x42, 0xae, 0x8c, 0xb0, 0xba, 0x6e, 0x32, 0x13, + 0x8c, 0x3c, 0x74, 0x4c, 0x29, 0x2c, 0x07, 0x85, 0x62, 0x00, 0x02, 0xaf, + 0x80, 0xa7, 0xa3, 0x33, 0x0a, 0x26, 0xa6, 0x16, 0xb2, 0x9c, 0xab, 0xab, + 0xf5, 0xf3, 0x8f, 0xfd, 0x6c, 0xaa, 0xf2, 0x1d, 0x65, 0x77, 0x4f, 0x61, + 0xd4, 0xe7, 0x2a, 0xb5, 0xe3, 0xdb, 0x75, 0xeb, 0x45, 0x3d, 0x30, 0x8e, + 0x87, 0x71, 0x13, 0x58, 0xe9, 0xc2, 0x75, 0x47, 0xd6, 0x7a, 0xce, 0xd9, + 0x35, 0xf2, 0x35, 0x32, 0xa2, 0x4b, 0x4d, 0xdd, 0x9a, 0x22, 0xd2, 0x92, + 0xab, 0xdd, 0xb6, 0x7d, 0x69, 0xe5, 0xa7, 0xbd, 0x55, 0x3d, 0x54, 0xda, + 0xf9, 0x87, 0x7c, 0xc4, 0x3d, 0xbd, 0x63, 0x17, 0xfd, 0x66, 0xe3, 0xc7, + 0xfb, 0xfb, 0xef, 0x9f, 0x4a, 0x8c, 0xf5, 0x28, 0x52, 0x1b, 0x5c, 0xe4, + 0x20, 0x34, 0xb4, 0x8c, 0x4a, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd6, + 0xef, 0x6f, 0xc2, 0x13, 0xfc, 0x33, 0x70, 0x6a, 0x6d, 0xd8, 0x10, 0x48, + 0x68, 0x6e, 0x1c, 0x91, 0xc1, 0x08, 0x2f, 0xf1, 0x0d, 0xd1, 0xf4, 0xb5, + 0x5f, 0xc5, 0x81, 0xa1, 0xb8, 0x1e, 0x96, 0x08, 0xf0, 0x9f, 0x26, 0x51, + 0x7d, 0x6a, 0x35, 0x34, 0x49, 0x69, 0x26, 0xac, 0x1a, 0xc0, 0x64, 0xa6, + 0x66, 0x6a, 0x7e, 0xdf, 0x0b, 0xd0, 0x89, 0xcc, 0xa3, 0xfe, 0x4b, 0x7a, + 0xd6, 0x9f, 0xd2, 0x72, 0xf4, 0xf8, 0xba, 0x4a, 0xe3, 0x9d, 0x29, 0xd6, + 0xeb, 0xe2, 0xb9, 0xa6, 0xbe, 0xee, 0x5a, 0xb5, 0x9b, 0xa6, 0xf8, 0x94, + 0x4f, 0xbe, 0xe7, 0x85, 0xe5, 0xe2, 0xad, 0xfb, 0xad, 0x12, 0x3b, 0x8f, + 0xfe, 0x21, 0x6f, 0xaf, 0xe6, 0xbe, 0x3e, 0x6b, 0x4a, 0xf7, 0xb9, 0x9b, + 0x74, 0xe3, 0x94, 0x8b, 0x8e, 0xf5, 0xb9, 0x9a, 0xa4, 0x7b, 0x88, 0xd6, + 0xca, 0x47, 0x34, 0xc1, 0x2c, 0xa1, 0xb6, 0x61, 0x40, 0xb0, 0xa7, 0x92, + 0xac, 0x47, 0x30, 0x71, 0xc3, 0x88, 0x60, 0x4b, 0x80, 0x00, 0x60, 0xc8, + 0x01, 0x5c, 0x62, 0xcb, 0x94, 0x6e, 0x78, 0xdc, 0x86, 0x74, 0x61, 0xb0, + 0x82, 0xaa, 0x61, 0x15, 0x0d, 0x3c, 0x64, 0xcd, 0x13, 0xae, 0x60, 0xcc, + 0x02, 0xd4, 0x60, 0x5d, 0x81, 0x9e, 0x60, 0x07, 0x80, 0x5e, 0x60, 0x67, + 0x80, 0x66, 0x61, 0x5c, 0x09, 0xf0, 0x77, 0xb3, 0xe7, 0xd0, 0x64, 0xe0, + 0x01, 0xe8, 0x61, 0x02, 0x81, 0x92, 0x35, 0xbc, 0x33, 0x79, 0x9c, 0xc7, + 0x06, 0x23, 0x13, 0x46, 0xcc, 0x2a, 0x23, 0x65, 0x06, 0x0d, 0x01, 0x1b, + 0xac, 0x0e, 0x06, 0x01, 0x3f, 0x83, 0x40, 0x54, 0x2c, 0x30, 0x4a, 0x64, + 0xe8, 0xe4, 0xe0, 0x10, 0x4d, 0x7a, 0x99, 0x00, 0x68, 0xb5, 0x74, 0x40, + 0x0e, 0x8a, 0xb8, 0x81, 0xc9, 0xe1, 0xe2, 0x2a, 0xe2, 0x74, 0x64, 0x72, + 0xa2, 0x10, 0x22, 0xcc, 0xa6, 0x8b, 0x4a, 0x2d, 0xb3, 0x36, 0xbb, 0xaa, + 0x47, 0x36, 0xae, 0x57, 0xb7, 0x93, 0x62, 0xbd, 0x86, 0x39, 0x0f, 0x3e, + 0xd8, 0x30, 0xf5, 0x23, 0xae, 0x04, 0x44, 0xc5, 0x66, 0x9f, 0x78, 0x26, + 0xb3, 0x0d, 0x69, 0xd0, 0x73, 0x28, 0xbc, 0x8e, 0x12, 0x8d, 0x98, 0x30, + 0x88, 0xaa, 0x35, 0xd3, 0x91, 0x8a, 0x49, 0xbb, 0xcb, 0xa4, 0xda, 0xd0, + 0xcb, 0x3f, 0xa1, 0x86, 0x5a, 0xa5, 0x24, 0x47, 0xdd, 0xb4, 0x31, 0xfd, + 0x21, 0x28, 0x63, 0x33, 0x16, 0x84, 0xd7, 0x51, 0x9b, 0x7c, 0x6f, 0x0f, + 0x10, 0xf1, 0x54, 0x3d, 0x79, 0xdd, 0xeb, 0x77, 0xce, 0x47, 0x8b, 0x91, + 0xaf, 0x0c, 0xb0, 0x64, 0xc2, 0x09, 0x49, 0x20, 0x40, 0x83, 0x87, 0x55, + 0x88, 0xb1, 0x6a, 0x34, 0x44, 0x20, 0x63, 0x45, 0x93, 0x5d, 0x95, 0xc7, + 0xab, 0x4e, 0x49, 0xeb, 0x52, 0xcf, 0x50, 0xe3, 0x7a, 0xa9, 0x83, 0x0e, + 0xf3, 0xb9, 0x30, 0x22, 0x67, 0x1c, 0x37, 0x87, 0x3e, 0x20, 0x3e, 0x18, + 0x33, 0x78, 0xcb, 0x9b, 0x0c, 0x28, 0x3b, 0x9a, 0x98, 0x1d, 0x0c, 0xe4, + 0x8e, 0x64, 0x4e, 0x8c, 0x21, 0x2e, 0x2f, 0x6e, 0x35, 0x64, 0xcf, 0xd6, + 0x79, 0x8a, 0x4b, 0x79, 0xa8, 0x7b, 0x73, 0xa5, 0x9b, 0x96, 0xee, 0x5f, + 0xd4, 0x75, 0x4a, 0xad, 0x58, 0xdb, 0x5a, 0x9b, 0x15, 0x9b, 0xe1, 0x6d, + 0x96, 0xd2, 0xe4, 0x61, 0x1a, 0xd0, 0xc9, 0x96, 0xb5, 0x4a, 0xff, 0xbe, + 0x52, 0x28, 0xea, 0xb8, 0x5f, 0x8b, 0x9e, 0xe2, 0xe6, 0x56, 0x2e, 0x07, + 0xcf, 0x77, 0x03, 0x48, 0xa9, 0xb2, 0x99, 0xac, 0x81, 0xb0, 0x13, 0xb8, + 0xb4, 0x88, 0x63, 0xcb, 0x10, 0x04, 0x70, 0xe5, 0x01, 0x78, 0x3c, 0x98, + 0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x70, 0x5c, 0x64, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x0a, 0x00, 0xde, 0x60, 0x5f, 0x03, 0x4c, 0x61, 0xd1, 0xb0, 0x12, + 0x71, 0x41, 0x8b, 0x4c, 0x60, 0xe3, 0x82, 0xa2, 0x60, 0x9c, 0x83, 0x10, + 0x02, 0x78, 0x38, 0xc2, 0x03, 0x00, 0x2c, 0x38, 0x12, 0x03, 0x00, 0x74, + 0x07, 0x33, 0x02, 0x60, 0x17, 0xe3, 0x05, 0xf4, 0x5c, 0x53, 0x70, 0x93, + 0xf4, 0x73, 0x1f, 0x2c, 0x43, 0x93, 0x04, 0xa8, 0x13, 0x23, 0x41, 0xb5, + 0xcc, 0x8c, 0x3e, 0x31, 0x29, 0x1c, 0xca, 0x42, 0xc3, 0x1a, 0x82, 0x15, + 0x5c, 0x02, 0x5b, 0x38, 0x08, 0x04, 0x94, 0x06, 0xad, 0xcd, 0x68, 0xc3, + 0x41, 0xd3, 0x0c, 0x27, 0x4d, 0xf0, 0x88, 0x0c, 0x10, 0xa3, 0xd1, 0x85, + 0xc8, 0x2f, 0xf4, 0x06, 0x84, 0x96, 0xf5, 0x32, 0x4c, 0x00, 0xab, 0x03, + 0x0a, 0xdd, 0x86, 0x67, 0x47, 0x79, 0xd2, 0x49, 0x88, 0x32, 0xad, 0x4a, + 0x93, 0x75, 0xb0, 0xeb, 0xdd, 0xdb, 0xf4, 0xff, 0x9b, 0xa7, 0x63, 0x95, + 0xad, 0xe8, 0x2c, 0x48, 0xa1, 0x97, 0xff, 0xa5, 0x46, 0x25, 0xad, 0x19, + 0x76, 0x42, 0x6a, 0x9b, 0x7e, 0x33, 0x9f, 0x3b, 0xdc, 0x09, 0x9b, 0x27, + 0x5b, 0x76, 0x9b, 0x97, 0x1e, 0xf7, 0x2d, 0xaf, 0xc6, 0xc8, 0x13, 0xdb, + 0x7f, 0xea, 0x8b, 0x9d, 0xdc, 0x65, 0xff, 0xef, 0x7e, 0x6b, 0x4d, 0x65, + 0x37, 0xc9, 0xb2, 0x9b, 0xeb, 0xe5, 0xe5, 0x53, 0xda, 0xa1, 0xee, 0x69, + 0xe5, 0xf9, 0x8c, 0xff, 0xd7, 0x8b, 0x9c, 0x9c, 0x6d, 0xa6, 0x7d, 0xa3, + 0x7e, 0xec, 0xf6, 0x36, 0x75, 0xfa, 0x50, 0x8b, 0xe2, 0x1a, 0x82, 0x48, + 0x16, 0x36, 0xd8, 0x7a, 0xf4, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xc6, + 0xbf, 0x70, 0x42, 0x83, 0xfc, 0x33, 0x70, 0x64, 0xae, 0x08, 0x20, 0x60, + 0x25, 0x6e, 0x17, 0xe8, 0xfd, 0x18, 0x6f, 0x7e, 0x2b, 0x81, 0xe8, 0xb5, + 0x5f, 0xc9, 0xa3, 0x19, 0xb8, 0xf5, 0xdd, 0x73, 0x5a, 0xc2, 0xef, 0x33, + 0xe7, 0x42, 0x14, 0x46, 0x46, 0x68, 0x69, 0x6b, 0x13, 0x46, 0x94, 0xd1, + 0x73, 0x76, 0x4c, 0x6a, 0x25, 0x62, 0x19, 0xa9, 0xab, 0xab, 0x9d, 0x6b, + 0xf9, 0x55, 0xab, 0x45, 0x29, 0x92, 0xb4, 0x7e, 0xa9, 0xca, 0x8a, 0x8d, + 0xe5, 0xa2, 0x29, 0xec, 0x74, 0xa3, 0x99, 0x6f, 0x75, 0x3e, 0x88, 0xd7, + 0xa5, 0x9d, 0xcc, 0xfd, 0xf5, 0xb0, 0xad, 0x0c, 0xbd, 0x11, 0xbb, 0x56, + 0xa9, 0xb6, 0x94, 0xdb, 0x49, 0x8a, 0xa4, 0x44, 0x31, 0x94, 0xc3, 0xc5, + 0x90, 0x70, 0x88, 0xa8, 0x92, 0x08, 0xa0, 0xb8, 0xa1, 0x65, 0x13, 0x17, + 0x0a, 0x12, 0x61, 0x70, 0x88, 0xe4, 0x6f, 0xad, 0x10, 0x0c, 0x05, 0x80, + 0xec, 0xc0, 0x08, 0x2f, 0x0c, 0x23, 0x71, 0xac, 0xda, 0x9c, 0xa9, 0x8c, + 0x12, 0x41, 0xf4, 0xc1, 0x14, 0x7f, 0x4c, 0x53, 0x8a, 0xa0, 0x20, 0x46, + 0x4c, 0x0a, 0xc0, 0x18, 0x54, 0x15, 0x82, 0x81, 0x3a, 0x60, 0x18, 0x59, + 0xc6, 0x03, 0x43, 0x91, 0x86, 0x07, 0x60, 0x33, 0x86, 0x00, 0xf8, 0x11, + 0xa6, 0x00, 0x00, 0x09, 0x06, 0x00, 0x28, 0x02, 0xe0, 0x20, 0x05, 0x08, + 0x00, 0x66, 0x70, 0x19, 0x28, 0x54, 0x03, 0xb2, 0x20, 0x2b, 0x9b, 0xb4, + 0x10, 0xf3, 0x3e, 0x00, 0x80, 0x03, 0x8c, 0x09, 0x00, 0x00, 0xd6, 0xe2, + 0xef, 0x18, 0x00, 0x72, 0xd4, 0x95, 0x15, 0xe1, 0x4d, 0x68, 0xc0, 0x18, + 0x00, 0xb8, 0x78, 0x00, 0xa8, 0xac, 0x7f, 0x2c, 0x5e, 0x30, 0x5e, 0x92, + 0x85, 0x31, 0xb0, 0x53, 0x21, 0xe2, 0x7d, 0x2e, 0x92, 0xa2, 0x58, 0x44, + 0xc9, 0xf1, 0x43, 0x91, 0x71, 0xa4, 0x16, 0xe0, 0x51, 0x09, 0xc1, 0xf6, + 0x4f, 0x96, 0x8c, 0x8b, 0x51, 0xf9, 0x04, 0x8c, 0x4d, 0x4e, 0x14, 0x89, + 0xb3, 0x73, 0x64, 0x16, 0xb4, 0x72, 0xc9, 0xba, 0xd1, 0x7a, 0xda, 0xa7, + 0x52, 0xaf, 0x2f, 0xd3, 0xd0, 0x5e, 0xaa, 0xb4, 0x74, 0xd6, 0xeb, 0xf3, + 0x39, 0x25, 0x1f, 0x75, 0x3f, 0xa3, 0xfd, 0x4b, 0x7f, 0xf5, 0x76, 0x77, + 0xde, 0x2a, 0x60, 0x6e, 0x58, 0x1d, 0x40, 0x01, 0x66, 0xd2, 0x8a, 0xc6, + 0xb0, 0x83, 0x6c, 0x57, 0x96, 0xda, 0xb1, 0x62, 0x72, 0xc5, 0x9b, 0x79, + 0xe6, 0x95, 0xef, 0x9b, 0x6d, 0xdf, 0x77, 0xff, 0x65, 0xfc, 0xad, 0xdc, + 0xf7, 0x75, 0xb4, 0x1c, 0xfd, 0x29, 0xa0, 0xa4, 0x25, 0x3a, 0xb2, 0x52, + 0x53, 0xcc, 0x5e, 0xb1, 0x87, 0x37, 0xf8, 0xaf, 0xe1, 0xde, 0x5e, 0x37, + 0x5f, 0xff, 0xa4, 0x22, 0xf6, 0x1e, 0x3b, 0x6e, 0xc3, 0x78, 0xdf, 0x5f, + 0x3e, 0xfd, 0xdd, 0x67, 0xd9, 0x8f, 0x39, 0xdf, 0x77, 0xa4, 0x93, 0x45, + 0x3f, 0xcf, 0x0e, 0xfb, 0xdd, 0xb6, 0x19, 0xdb, 0xbe, 0x7d, 0xdd, 0xdf, + 0x9b, 0x12, 0xee, 0x86, 0x65, 0x35, 0x3e, 0x67, 0xf0, 0xfb, 0xbf, 0xc3, + 0xf3, 0x91, 0xcb, 0x47, 0x75, 0xab, 0xd3, 0x8c, 0x22, 0xb1, 0x03, 0x01, + 0xb1, 0xd3, 0x0b, 0x05, 0xc9, 0x0b, 0x12, 0x98, 0x82, 0x9a, 0x8a, 0x66, + 0x5c, 0x72, 0x70, 0x5c, 0x65, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x0a, 0x40, 0x03, 0x01, 0xc0, 0x09, 0xf3, 0x01, 0xc4, 0x19, 0xa3, + 0x05, 0x21, 0x7d, 0x33, 0x2a, 0x78, 0x50, 0x23, 0x02, 0xb0, 0x14, 0x13, + 0x03, 0x90, 0x13, 0xf3, 0x0e, 0xa0, 0x2e, 0xd3, 0x02, 0x48, 0x09, 0xa2, + 0x50, 0x18, 0xcc, 0x08, 0xc0, 0x36, 0xcc, 0x0a, 0x30, 0x66, 0x8c, 0x18, + 0x21, 0x54, 0xcd, 0x75, 0xbc, 0xec, 0xcc, 0x40, 0xa0, 0xc7, 0x4c, 0x11, + 0x90, 0x48, 0x0d, 0x42, 0x2c, 0xc7, 0x56, 0x85, 0x43, 0xcd, 0x75, 0x34, + 0xd9, 0x00, 0x41, 0xc2, 0xc2, 0x0a, 0x90, 0x95, 0xa2, 0xd5, 0xb6, 0x83, + 0xc1, 0x66, 0x36, 0x08, 0x61, 0x30, 0xc6, 0xca, 0xde, 0x5f, 0xe5, 0x29, + 0x43, 0xf8, 0x4b, 0xd0, 0x8a, 0x11, 0xb6, 0x10, 0x64, 0xed, 0xc1, 0x86, + 0x8f, 0xdc, 0xa7, 0x56, 0x91, 0x7d, 0xb3, 0x5f, 0xbc, 0x9e, 0x15, 0xb6, + 0xee, 0x63, 0xc6, 0x73, 0x5a, 0x55, 0x0c, 0x55, 0xeb, 0x5b, 0xb3, 0xcc, + 0x65, 0x23, 0x42, 0x03, 0x5c, 0x29, 0x1d, 0x25, 0x38, 0x3b, 0x8a, 0x33, + 0xb3, 0xe3, 0x1e, 0xf6, 0xd6, 0x74, 0x42, 0xc8, 0x02, 0x2f, 0x2e, 0xc6, + 0x3a, 0xb2, 0x15, 0x77, 0x47, 0x22, 0x23, 0x07, 0x08, 0xfc, 0xf2, 0xb1, + 0xca, 0x93, 0xa2, 0x1c, 0xef, 0x7a, 0xb2, 0x1a, 0x9a, 0xa9, 0xd5, 0x2c, + 0x8a, 0xce, 0xdd, 0xed, 0xbd, 0x96, 0xb6, 0x69, 0xd7, 0xec, 0xaa, 0xc9, + 0xea, 0x99, 0x8c, 0xa2, 0x2c, 0xa8, 0x3e, 0xe5, 0x5c, 0xa3, 0x85, 0x07, + 0x08, 0x00, 0x3f, 0x42, 0xbe, 0x9f, 0xb5, 0x30, 0xc6, 0xa7, 0x77, 0x96, + 0x18, 0x72, 0x97, 0xd2, 0xbb, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xc6, + 0x59, 0x70, 0x43, 0x93, 0xfb, 0x2b, 0x70, 0x63, 0xee, 0x08, 0x21, 0x60, + 0x65, 0x6e, 0x9b, 0x5d, 0xc1, 0x0a, 0x4f, 0xf0, 0xcd, 0xc1, 0xe7, 0xb5, + 0xe0, 0x4d, 0x94, 0x15, 0xb8, 0xaf, 0x9f, 0xf6, 0xff, 0x17, 0xe7, 0xc4, + 0xa6, 0xe7, 0x1a, 0x3b, 0xd1, 0xc8, 0xcf, 0xa2, 0xdb, 0x2f, 0x65, 0xbb, + 0x55, 0x95, 0xd5, 0x5e, 0xcd, 0x7a, 0x35, 0x2d, 0x9e, 0xd6, 0x74, 0x79, + 0x37, 0x5b, 0x6d, 0x26, 0xb5, 0xda, 0x88, 0x8b, 0xb3, 0xe8, 0xe9, 0xd5, + 0x1a, 0xf4, 0x4d, 0x11, 0xd3, 0x7d, 0x9b, 0x5d, 0x1a, 0xcb, 0x42, 0xa5, + 0xd0, 0xe6, 0x39, 0x51, 0x6d, 0x66, 0x66, 0x69, 0x50, 0xae, 0x65, 0x21, + 0x4d, 0x52, 0xb9, 0x45, 0x0e, 0x80, 0x57, 0x11, 0x44, 0x10, 0x38, 0x90, + 0xd0, 0x61, 0x52, 0x0f, 0x49, 0x0c, 0x0c, 0xa0, 0x30, 0xcc, 0x10, 0x70, + 0x63, 0x8c, 0x38, 0xa6, 0x0d, 0x4d, 0xe7, 0xe1, 0x3b, 0x0c, 0x20, 0xe0, + 0x4b, 0xcc, 0x0b, 0x30, 0x40, 0x4c, 0x17, 0x30, 0x13, 0x07, 0x40, 0x69, + 0x30, 0x1c, 0xc0, 0x72, 0x30, 0x41, 0xc0, 0xda, 0x30, 0x54, 0x81, 0xa5, + 0x30, 0xd0, 0xc5, 0x36, 0x3c, 0x2e, 0x32, 0x52, 0x32, 0x7d, 0xc3, 0x2a, + 0x30, 0x89, 0x00, 0xff, 0x37, 0x49, 0xe8, 0xcd, 0x02, 0xf0, 0x31, 0xf8, + 0xc2, 0x92, 0x32, 0x22, 0x71, 0x40, 0x04, 0x1b, 0x03, 0x34, 0x08, 0x69, + 0x70, 0x38, 0x6c, 0x40, 0xb0, 0x03, 0x30, 0x98, 0x4c, 0xf4, 0xe1, 0xc1, + 0xe1, 0x9a, 0xad, 0x40, 0x64, 0xda, 0xf2, 0x5b, 0xeb, 0x0a, 0x84, 0xd3, + 0x1a, 0xac, 0xc0, 0xc5, 0x16, 0xbc, 0xdc, 0x65, 0x94, 0x45, 0x80, 0x3b, + 0x27, 0xc5, 0x90, 0x33, 0x99, 0x6c, 0xb9, 0x62, 0xde, 0xa1, 0x5f, 0xd6, + 0x39, 0x0d, 0x55, 0xdb, 0xb9, 0x49, 0xdc, 0x2c, 0xc8, 0x94, 0xd3, 0x10, + 0x3a, 0x70, 0xe8, 0x22, 0x76, 0xa7, 0xef, 0x5f, 0xbd, 0x3f, 0xed, 0x72, + 0x9f, 0x6b, 0xfe, 0xfb, 0x83, 0xc5, 0x33, 0xdf, 0xea, 0xcc, 0xf8, 0xff, + 0xed, 0x63, 0xdf, 0x7a, 0x62, 0x5a, 0xef, 0x1b, 0x0f, 0x5a, 0x7f, 0x6f, + 0xfe, 0x3f, 0xde, 0xff, 0x3b, 0xf7, 0xc7, 0x8a, 0x9f, 0x2f, 0x11, 0xaf, + 0x11, 0xeb, 0xe6, 0x63, 0x5f, 0x89, 0xfa, 0xdb, 0x59, 0x18, 0xcf, 0xae, + 0xcf, 0x12, 0xdb, 0xff, 0xdf, 0x3f, 0x10, 0x97, 0xb9, 0x5d, 0x24, 0x5a, + 0x35, 0x53, 0x80, 0xec, 0x78, 0xb4, 0x94, 0x01, 0xad, 0x00, 0x01, 0xe2, + 0x2b, 0x7d, 0x8c, 0x4b, 0xb5, 0x68, 0x29, 0x75, 0x4f, 0x87, 0x2d, 0xf3, + 0x1c, 0xd6, 0xae, 0x18, 0xae, 0x29, 0xb5, 0xda, 0xfb, 0xe2, 0x13, 0xba, + 0xab, 0x7b, 0x41, 0xf3, 0x6f, 0x0d, 0x0c, 0x78, 0x37, 0x06, 0xa2, 0x81, + 0x28, 0x38, 0x25, 0x08, 0x04, 0x53, 0x48, 0x38, 0x61, 0x04, 0xce, 0x30, + 0x20, 0xae, 0x10, 0x0f, 0x5c, 0x2d, 0xce, 0x34, 0x55, 0x1c, 0x7a, 0x25, + 0x8c, 0xa8, 0x51, 0xae, 0xcf, 0x98, 0x8a, 0x4c, 0x8d, 0x64, 0xdd, 0x6b, + 0x56, 0x5a, 0xae, 0xab, 0x4c, 0xc7, 0x45, 0x35, 0x28, 0x93, 0x56, 0xf6, + 0x45, 0x54, 0x7d, 0x1d, 0xe9, 0xf4, 0x31, 0xd1, 0x51, 0x9f, 0xd9, 0x59, + 0xf5, 0x22, 0x44, 0xdd, 0x50, 0xd4, 0x88, 0xd6, 0x3c, 0x5c, 0xa1, 0xd6, + 0x0f, 0x20, 0x74, 0x51, 0x83, 0x80, 0x38, 0x44, 0x41, 0x31, 0x05, 0x35, + 0x14, 0xcc, 0xb8, 0xe4, 0xe0, 0xb8, 0xc9, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0xe2, 0xeb, 0x1a, 0x00, 0xc0, 0xa0, 0x05, 0xcc, 0x16, 0x40, 0xc8, + 0xc5, 0xc8, 0xfa, 0x4f, 0x5a, 0x02, 0x70, 0x0c, 0x33, 0x26, 0x08, 0x20, + 0xd5, 0x2d, 0x30, 0x0f, 0x01, 0xc3, 0x00, 0xe0, 0x0b, 0x30, 0x2e, 0x01, + 0x13, 0x06, 0xd0, 0x24, 0x31, 0x38, 0x0f, 0x33, 0x50, 0x9c, 0x6c, 0x33, + 0x0f, 0x10, 0x06, 0x10, 0x10, 0x31, 0x42, 0xc0, 0x54, 0x83, 0x80, 0x4f, + 0x08, 0x00, 0x20, 0xc0, 0x18, 0x00, 0x70, 0x38, 0x02, 0x37, 0x40, 0x94, + 0x04, 0xd4, 0x50, 0x8d, 0x56, 0x6a, 0xc9, 0xc2, 0x30, 0x01, 0x59, 0x80, + 0x00, 0x01, 0x23, 0xea, 0x0d, 0x00, 0x10, 0x78, 0x01, 0x65, 0xc8, 0x48, + 0x00, 0x5b, 0xc9, 0xca, 0x73, 0x00, 0x18, 0x01, 0x52, 0x20, 0x01, 0xec, + 0x67, 0x7b, 0x38, 0xe8, 0x1e, 0xdb, 0xda, 0x82, 0xed, 0xe3, 0x62, 0x11, + 0x33, 0xd1, 0x00, 0x8d, 0x43, 0x0d, 0x95, 0x56, 0x5a, 0xc4, 0x9d, 0x49, + 0x37, 0x6b, 0x7d, 0x23, 0x63, 0x9d, 0xa5, 0x89, 0x24, 0x79, 0xbd, 0x31, + 0xf5, 0x8a, 0x69, 0x77, 0x17, 0x3b, 0xcf, 0xa4, 0x2d, 0xda, 0x25, 0xf1, + 0xad, 0xe2, 0x25, 0xbf, 0xad, 0x69, 0xaa, 0xfd, 0xeb, 0x3f, 0x59, 0xff, + 0xfd, 0xeb, 0xfc, 0xca, 0xd3, 0x59, 0x0f, 0xff, 0xb7, 0xff, 0xff, 0xfd, + 0x45, 0xe1, 0xe1, 0x20, 0xf0, 0x1e, 0xb1, 0x22, 0x00, 0x6d, 0xc3, 0xd2, + 0x9b, 0x41, 0xaa, 0xa9, 0xb4, 0xf7, 0xd3, 0xff, 0xff, 0xd5, 0xb2, 0x39, + 0x59, 0x90, 0x18, 0x40, 0x22, 0x30, 0x34, 0x5c, 0xe2, 0x20, 0xb1, 0x56, + 0x30, 0xb8, 0xa0, 0xba, 0xc6, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xc5, + 0xbc, 0x3f, 0x46, 0x9b, 0xdf, 0x7a, 0xe0, 0x52, 0x8d, 0x98, 0x73, 0x4c, + 0xa5, 0x6e, 0x5c, 0xd1, 0xbd, 0x08, 0x0f, 0xf1, 0x0d, 0xc2, 0x65, 0xb8, + 0x1f, 0x45, 0xa3, 0x31, 0xb8, 0x29, 0x05, 0x01, 0x86, 0xdd, 0x4e, 0x51, + 0xaa, 0x8c, 0x4a, 0x29, 0x33, 0xad, 0x5b, 0x46, 0xdd, 0xed, 0xb5, 0x59, + 0x5e, 0x99, 0xfa, 0x51, 0x75, 0x67, 0x4f, 0xfe, 0xbf, 0xfe, 0x88, 0xdf, + 0xff, 0x4f, 0xff, 0xef, 0xad, 0x2b, 0x9f, 0x5b, 0xc7, 0x23, 0xbb, 0xa9, + 0x86, 0x89, 0x15, 0x30, 0x24, 0x00, 0x0f, 0x30, 0x4f, 0x40, 0xc3, 0x31, + 0x2f, 0x0c, 0x44, 0x3a, 0xa2, 0x02, 0xf5, 0x30, 0xac, 0x00, 0x72, 0x30, + 0x36, 0xc2, 0x05, 0x30, 0xa2, 0x01, 0x0a, 0x30, 0x0e, 0x40, 0x8f, 0x30, + 0x00, 0x80, 0x80, 0x30, 0x0f, 0x40, 0x14, 0x30, 0x59, 0x80, 0xca, 0x31, + 0x01, 0xc4, 0x79, 0x3f, 0xa3, 0xa3, 0x4d, 0x33, 0x2c, 0xc2, 0xbb, 0x30, + 0xa2, 0x00, 0xbc, 0x3a, 0x69, 0xc4, 0xd8, 0x05, 0x63, 0x35, 0x98, 0x4c, + 0xa6, 0xf6, 0x31, 0xd0, 0xd8, 0xc0, 0x60, 0x13, 0x04, 0x41, 0x4d, 0xb0, + 0x16, 0x30, 0x00, 0x3d, 0x32, 0x96, 0xba, 0x6f, 0x0d, 0x0f, 0x4f, 0xac, + 0x01, 0x2b, 0x13, 0x25, 0x98, 0x58, 0x02, 0xe3, 0xb4, 0xd1, 0x40, 0x0b, + 0x12, 0x11, 0x81, 0x8c, 0x34, 0xe4, 0x31, 0x08, 0x19, 0x86, 0xd3, 0x35, + 0x69, 0x14, 0x3a, 0x50, 0x02, 0x83, 0x64, 0xac, 0x9a, 0xfc, 0x4a, 0x4b, + 0x67, 0x27, 0x2e, 0xe5, 0xd9, 0x6d, 0x3d, 0x33, 0xcb, 0x86, 0x34, 0x1b, + 0xb4, 0x32, 0x46, 0x82, 0x64, 0xc5, 0xcc, 0x08, 0x23, 0xe8, 0x68, 0xd8, + 0x5d, 0x4c, 0x65, 0x1b, 0x59, 0x0b, 0xdd, 0xe7, 0xdb, 0x50, 0x76, 0x44, + 0x40, 0xf6, 0x6a, 0x52, 0xe1, 0x26, 0xf9, 0x8f, 0x8a, 0xf8, 0x28, 0x30, + 0x38, 0x7a, 0x44, 0x9f, 0xde, 0x62, 0xcf, 0x3a, 0x94, 0x2e, 0x6c, 0x8d, + 0x22, 0xa2, 0x87, 0xa1, 0x31, 0x30, 0x89, 0x03, 0xfd, 0x78, 0x96, 0x1d, + 0x77, 0x97, 0x92, 0x3f, 0x4e, 0x5e, 0x87, 0xd1, 0xe6, 0xd6, 0x8d, 0x6b, + 0x8d, 0xbb, 0xac, 0xa4, 0x6e, 0xc6, 0x23, 0xa9, 0x54, 0x92, 0x70, 0xd1, + 0x44, 0x3e, 0xce, 0x4b, 0xb1, 0x51, 0x00, 0x0f, 0x29, 0x4a, 0xdc, 0xb9, + 0xdc, 0xe0, 0x69, 0x44, 0xd4, 0x11, 0x66, 0x7a, 0xb5, 0x25, 0x8d, 0x98, + 0x22, 0x11, 0xac, 0x4b, 0x69, 0x28, 0xdd, 0x39, 0x95, 0x0a, 0x74, 0x32, + 0xb2, 0x4e, 0x27, 0xfe, 0x4c, 0x4b, 0xa4, 0xd5, 0x72, 0x4a, 0x10, 0x64, + 0xc1, 0x89, 0x26, 0x06, 0x26, 0xed, 0x5b, 0x41, 0xd3, 0x0f, 0x53, 0xfa, + 0xf0, 0xda, 0xb1, 0x5e, 0x69, 0xd3, 0xe9, 0xa6, 0x2f, 0xcb, 0x59, 0xc8, + 0xb6, 0xd9, 0x99, 0xdd, 0xd4, 0xb6, 0xcc, 0x36, 0xbb, 0xd6, 0x72, 0x2d, + 0xfa, 0xfe, 0x7b, 0xd3, 0xf3, 0xd7, 0xaf, 0x73, 0x39, 0xd3, 0x7b, 0x52, + 0x94, 0xbd, 0xf7, 0x6b, 0x7b, 0xd7, 0x25, 0x9a, 0x51, 0x87, 0x6d, 0x7a, + 0x5f, 0x2f, 0xce, 0xef, 0xac, 0x7b, 0x20, 0xbb, 0x5f, 0x58, 0xac, 0xfd, + 0xbf, 0xe1, 0xd9, 0x97, 0xa0, 0xe6, 0x25, 0x8b, 0xc3, 0x4a, 0x38, 0xbe, + 0x9f, 0x73, 0xd5, 0xad, 0xeb, 0x4b, 0xa1, 0x26, 0x99, 0xea, 0x98, 0x8b, + 0xaa, 0xdc, 0x4e, 0xf2, 0xa8, 0x8f, 0x49, 0xed, 0x8d, 0x04, 0x00, 0xe9, + 0x78, 0x50, 0x82, 0x98, 0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x70, 0x5c, + 0x64, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x00, 0x90, 0xdd, 0x5a, 0x20, 0x08, 0x80, 0x60, 0xc0, 0xcc, 0x20, + 0x4c, 0x4a, 0xa4, 0x70, 0xed, 0xa0, 0x7d, 0xcc, 0x29, 0x01, 0x60, 0xc0, + 0x9c, 0x20, 0x8c, 0x02, 0x41, 0xb4, 0xc0, 0x08, 0x02, 0x87, 0x80, 0x0c, + 0x08, 0x04, 0x46, 0x02, 0x58, 0x15, 0xe6, 0x07, 0xe0, 0x52, 0x86, 0x85, + 0xea, 0xee, 0x06, 0x1b, 0x10, 0x31, 0xc6, 0x06, 0x68, 0x0e, 0xe6, 0x02, + 0x50, 0x07, 0x86, 0x01, 0x28, 0x03, 0x26, 0x00, 0xc0, 0x02, 0x81, 0x80, + 0x03, 0x98, 0x01, 0x80, 0x00, 0xad, 0x01, 0x40, 0x0a, 0xc4, 0x80, 0xbc, + 0x77, 0x34, 0xdf, 0xa7, 0x98, 0xa8, 0x05, 0x80, 0x90, 0x0b, 0xdb, 0x93, + 0x82, 0x38, 0x00, 0x53, 0xea, 0xc2, 0x01, 0xa0, 0x04, 0x46, 0xe1, 0xc3, + 0x56, 0x21, 0xea, 0x20, 0x7b, 0x13, 0x97, 0xa0, 0x82, 0x83, 0xa6, 0x5f, + 0x14, 0xf8, 0x96, 0xbe, 0xd1, 0x8b, 0xf1, 0x35, 0x14, 0x89, 0x5a, 0x59, + 0x54, 0x34, 0x89, 0xa5, 0x31, 0x7a, 0x9a, 0xdd, 0xb9, 0x54, 0xee, 0xaa, + 0xbd, 0xd8, 0xe1, 0x52, 0xf5, 0xb9, 0x1e, 0x5d, 0xe7, 0xf7, 0xbc, 0xc2, + 0xa6, 0x64, 0x81, 0x71, 0x10, 0xab, 0xda, 0x26, 0x22, 0xa4, 0x35, 0x66, + 0xe2, 0x8d, 0x8e, 0x41, 0x9c, 0xef, 0xe9, 0x47, 0xa4, 0xa5, 0xbf, 0xa7, + 0xff, 0xf5, 0x68, 0x6c, 0xa8, 0xb9, 0x50, 0x7a, 0x00, 0x00, 0xa1, 0x99, + 0xca, 0x57, 0x76, 0xad, 0x75, 0x7b, 0x6f, 0x3b, 0xea, 0x5b, 0xd2, 0x28, + 0xa7, 0x2e, 0x79, 0x7e, 0x94, 0x8f, 0xcc, 0xbe, 0xe7, 0xa1, 0x14, 0x20, + 0x65, 0x50, 0x89, 0x87, 0xa3, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x08, 0xc5, + 0xcc, 0x2b, 0x46, 0x3b, 0xdf, 0xca, 0x60, 0x5c, 0x4d, 0xe8, 0x32, 0x3c, + 0x62, 0x6e, 0x1b, 0x85, 0xc1, 0x0c, 0x0f, 0xf0, 0xad, 0xc2, 0x48, 0x38, + 0x1f, 0x41, 0xa3, 0x21, 0xb8, 0xe9, 0x9c, 0xe3, 0xd8, 0xc7, 0x9d, 0xc8, + 0x40, 0xf6, 0x36, 0x84, 0x0a, 0xaa, 0x28, 0xc5, 0x4a, 0xdf, 0xff, 0xda, + 0xb7, 0x62, 0x5a, 0xb4, 0xa3, 0xb3, 0xd3, 0xdb, 0xa2, 0xdf, 0x5d, 0x52, + 0xff, 0xd2, 0xd3, 0x7e, 0xdf, 0xd5, 0xbf, 0x7d, 0xad, 0x62, 0x51, 0x94, + 0xe6, 0x29, 0x81, 0xa0, 0x83, 0xab, 0x91, 0x44, 0x95, 0xaa, 0x39, 0x50, + 0x21, 0x8a, 0x08, 0xc0, 0x33, 0x02, 0x58, 0xc0, 0x0b, 0x06, 0x9c, 0xc0, + 0xf2, 0x63, 0x48, 0xca, 0x4c, 0x15, 0x94, 0xc0, 0x7c, 0x04, 0xc8, 0xc0, + 0x43, 0x04, 0x4c, 0xc1, 0xeb, 0x01, 0xb0, 0x14, 0x09, 0xb9, 0x80, 0xb8, + 0x02, 0xe9, 0x80, 0xcc, 0x08, 0x99, 0x83, 0x56, 0x07, 0xb9, 0x83, 0x1e, + 0x2c, 0xa9, 0xa1, 0x15, 0xf4, 0x69, 0x88, 0xfe, 0x33, 0xd9, 0x84, 0x3a, + 0x0c, 0x71, 0xc4, 0x02, 0x46, 0x7c, 0x65, 0x19, 0x80, 0x20, 0x61, 0x36, + 0x18, 0x38, 0x80, 0x60, 0x61, 0x41, 0x11, 0x70, 0xe3, 0x00, 0x61, 0x60, + 0xa0, 0x8c, 0x06, 0x09, 0x00, 0x97, 0xac, 0x38, 0x14, 0x74, 0x90, 0x91, + 0x86, 0xc0, 0xe5, 0x97, 0x30, 0x58, 0x35, 0x53, 0xb4, 0xe5, 0x60, 0x45, + 0x00, 0x28, 0x3c, 0xc2, 0xea, 0x30, 0x50, 0xe5, 0xcf, 0x78, 0x17, 0x43, + 0x5c, 0x46, 0x46, 0x86, 0xec, 0x35, 0x86, 0x39, 0x14, 0xb9, 0x03, 0xcb, + 0xe1, 0xf7, 0xa6, 0x31, 0x56, 0x7e, 0x6e, 0x36, 0xfb, 0xdf, 0xd5, 0x48, + 0xd8, 0x7c, 0x3e, 0x07, 0x72, 0x85, 0x0a, 0x11, 0xc4, 0x18, 0x20, 0x3a, + 0xca, 0x61, 0x06, 0x67, 0x2a, 0x9c, 0x7b, 0x98, 0xb7, 0x47, 0x64, 0x53, + 0x84, 0x37, 0x74, 0x4b, 0x2a, 0x2c, 0xd3, 0xb6, 0xe8, 0x85, 0x21, 0x84, + 0x54, 0xfc, 0xd7, 0xad, 0x1e, 0x51, 0xea, 0xe9, 0x5e, 0x89, 0x79, 0xdd, + 0x0e, 0x53, 0xb3, 0x3a, 0x25, 0xc9, 0x22, 0x1f, 0x9f, 0xb7, 0x44, 0xdf, + 0x6b, 0xa5, 0x08, 0x75, 0x4a, 0x14, 0xa5, 0x16, 0x3b, 0x87, 0x0b, 0x22, + 0xa8, 0xa8, 0xc2, 0x95, 0xc5, 0x0b, 0x1a, 0x03, 0x4b, 0x05, 0xd5, 0x94, + 0x4c, 0xd0, 0x44, 0x1d, 0x68, 0xc4, 0xa6, 0xc4, 0xa2, 0xbf, 0x2f, 0x4b, + 0x0f, 0x4b, 0x04, 0xa4, 0xc4, 0x49, 0xa0, 0x9b, 0x2e, 0x4b, 0x38, 0x82, + 0x5c, 0x89, 0x09, 0xe6, 0x56, 0xf3, 0x5d, 0x34, 0x69, 0x06, 0x30, 0x95, + 0xbb, 0xb5, 0xf7, 0xdb, 0x94, 0x91, 0xec, 0x65, 0x8f, 0xea, 0x59, 0x4d, + 0x6b, 0x8c, 0xbe, 0xd2, 0x66, 0xa0, 0xf9, 0x96, 0x5b, 0x1c, 0x41, 0x0e, + 0x3e, 0xe6, 0xad, 0x1c, 0xa8, 0x73, 0xe9, 0xec, 0x6a, 0x47, 0x76, 0x53, + 0xb5, 0x0c, 0x86, 0x7e, 0x19, 0xb5, 0x6a, 0x85, 0x86, 0x58, 0x5e, 0x26, + 0x95, 0xb9, 0x58, 0x22, 0x19, 0xaa, 0xc6, 0xa0, 0xc5, 0xe9, 0xab, 0xd1, + 0xe2, 0xe6, 0xb3, 0xe7, 0xa8, 0xa4, 0xe8, 0x70, 0xea, 0x2e, 0x1a, 0x29, + 0x5e, 0xa4, 0xe2, 0x44, 0xa2, 0x1c, 0x8d, 0x43, 0xc0, 0x70, 0x3a, 0x12, + 0x87, 0x67, 0x83, 0x52, 0x64, 0x39, 0x38, 0xb0, 0x56, 0x40, 0x0a, 0x07, + 0x24, 0x04, 0xc1, 0xf8, 0x90, 0x3a, 0x06, 0xc0, 0x2a, 0x98, 0x82, 0x9a, + 0x8a, 0x66, 0x5c, 0x72, 0x70, 0x5c, 0x65, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x3e, 0xc1, 0x5e, 0x30, 0x48, 0x03, 0x2f, 0x30, 0xc4, 0xee, + 0x6c, 0x36, 0x84, 0xca, 0x0f, 0x30, 0x86, 0xc2, 0x52, 0x30, 0x42, 0x02, + 0x37, 0x30, 0xd4, 0x01, 0xe2, 0x30, 0x55, 0x81, 0x83, 0x30, 0x3c, 0xc2, + 0x2c, 0x30, 0x22, 0x81, 0xa3, 0x31, 0x2d, 0x04, 0x5f, 0x31, 0x31, 0x4c, + 0x12, 0x36, 0xa4, 0x7e, 0x20, 0x38, 0xbd, 0x4c, 0x84, 0x30, 0xbc, 0x42, + 0xf8, 0x3d, 0x85, 0x16, 0x34, 0xa0, 0xa9, 0x31, 0x81, 0x3b, 0x33, 0x34, + 0xcc, 0x34, 0x34, 0xde, 0x07, 0x16, 0xe6, 0x1b, 0x11, 0x66, 0x65, 0x16, + 0x26, 0x3e, 0x0c, 0x26, 0x28, 0x07, 0x26, 0x17, 0x02, 0xa4, 0x21, 0x81, + 0x88, 0x83, 0x79, 0x8b, 0x01, 0x39, 0x85, 0x00, 0xaa, 0xe4, 0x2f, 0x31, + 0x81, 0x60, 0xa1, 0x82, 0xa0, 0x91, 0x82, 0x20, 0x01, 0x80, 0xe0, 0x31, + 0x6e, 0x4c, 0x1a, 0x0a, 0xcc, 0x1a, 0x00, 0x44, 0x20, 0x31, 0x80, 0xe0, + 0x13, 0x36, 0x78, 0x69, 0x1b, 0x8a, 0xc3, 0x2e, 0xa8, 0x6d, 0x68, 0xa6, + 0x0a, 0xed, 0x65, 0xaf, 0x42, 0x73, 0x2c, 0x55, 0x05, 0x53, 0x56, 0xf6, + 0x50, 0xc3, 0x96, 0x33, 0x94, 0xef, 0x5e, 0x80, 0x4a, 0x02, 0x40, 0x48, + 0xb4, 0xb4, 0xc4, 0xc4, 0x72, 0x27, 0x1f, 0x18, 0xa1, 0x9c, 0x98, 0x95, + 0x5d, 0x5a, 0x62, 0x72, 0x49, 0x12, 0x75, 0xb5, 0xcf, 0xdd, 0xba, 0x43, + 0x2d, 0x9e, 0x6c, 0x3a, 0xa9, 0xab, 0x5a, 0x25, 0xb6, 0x31, 0x66, 0x2c, + 0x65, 0xff, 0xf7, 0x5f, 0x5e, 0xa8, 0xca, 0x9b, 0xb1, 0xbe, 0x7a, 0x7d, + 0x13, 0x10, 0xfc, 0x58, 0x8e, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xc8, + 0xdf, 0x70, 0x40, 0x83, 0xfd, 0x63, 0x70, 0x54, 0xad, 0x88, 0x63, 0x40, + 0x42, 0x6e, 0x5c, 0x75, 0xc1, 0x00, 0x0f, 0xed, 0x2d, 0xc1, 0xaa, 0xb8, + 0x20, 0x41, 0xa1, 0x15, 0xb8, 0x5e, 0xb6, 0x4b, 0xb3, 0x97, 0x5c, 0xeb, + 0x0c, 0xfc, 0x30, 0x4b, 0xb5, 0xa5, 0x52, 0x36, 0xc2, 0xf2, 0xf2, 0xee, + 0xa3, 0xb4, 0x8e, 0xef, 0xf4, 0xde, 0xac, 0xac, 0x5f, 0xf7, 0xe8, 0xfe, + 0xd9, 0xcf, 0x45, 0x66, 0xe5, 0x09, 0xab, 0x2b, 0x69, 0xc8, 0x11, 0xb3, + 0x77, 0x0e, 0xdf, 0x6e, 0xd9, 0x72, 0xe7, 0x24, 0x80, 0xe6, 0x52, 0x3f, + 0xca, 0xdd, 0xf2, 0xac, 0x0b, 0x1f, 0x50, 0x70, 0x78, 0x03, 0x96, 0x34, + 0x80, 0x05, 0x67, 0xcd, 0x52, 0x30, 0x73, 0x26, 0x55, 0x7f, 0xeb, 0xdf, + 0xd3, 0xff, 0xd7, 0x24, 0xae, 0xaa, 0xae, 0x46, 0x04, 0xb3, 0x52, 0x86, + 0x69, 0x4c, 0x72, 0x09, 0x0c, 0x71, 0x24, 0x94, 0x21, 0x54, 0xe4, 0x94, + 0x11, 0x5d, 0x4c, 0xa5, 0x2a, 0x9e, 0x0c, 0xe6, 0x7a, 0x5f, 0x65, 0x96, + 0x46, 0x9c, 0x8c, 0xd9, 0x25, 0x97, 0x5e, 0xcc, 0xfd, 0xd9, 0xd3, 0x46, + 0x4e, 0x64, 0xf2, 0x7f, 0x4b, 0xff, 0xff, 0xd7, 0xfd, 0x7f, 0x65, 0x7a, + 0x34, 0xa9, 0x2b, 0x23, 0x2d, 0x07, 0x10, 0x60, 0x3a, 0x33, 0x05, 0x2c, + 0x16, 0x23, 0x07, 0xb8, 0x2d, 0x53, 0x1a, 0x66, 0x7f, 0x83, 0xe6, 0x84, + 0x89, 0x13, 0x0f, 0x74, 0x1d, 0x43, 0x05, 0xc8, 0x0f, 0x23, 0x06, 0xe0, + 0x23, 0xb3, 0x01, 0x28, 0x08, 0xa3, 0x00, 0x18, 0x06, 0x53, 0x04, 0x68, + 0x0a, 0xd3, 0x04, 0xe4, 0x14, 0x03, 0x0b, 0x70, 0x5c, 0x13, 0x34, 0x75, + 0x14, 0x53, 0x06, 0x34, 0x20, 0xa3, 0x06, 0x04, 0x08, 0xd3, 0xd0, 0x40, + 0x37, 0x92, 0x93, 0x42, 0x2a, 0x31, 0x07, 0x43, 0x0b, 0x01, 0x53, 0x49, + 0x6c, 0x62, 0x07, 0x76, 0x34, 0xec, 0xb3, 0x11, 0xe0, 0x9a, 0xdf, 0x3f, + 0x2a, 0xca, 0x72, 0x92, 0x9a, 0x57, 0x14, 0xc2, 0x0b, 0x95, 0xdb, 0xb1, + 0x2c, 0xce, 0xd6, 0x15, 0xf1, 0xbf, 0x94, 0xb3, 0x53, 0x52, 0xf8, 0xcd, + 0x6a, 0x5a, 0xf3, 0x57, 0xec, 0xe6, 0x72, 0x2b, 0x42, 0x09, 0xa1, 0x41, + 0x08, 0x63, 0x6f, 0xb6, 0xd5, 0x5e, 0x88, 0x23, 0x54, 0xa1, 0x37, 0x84, + 0xbb, 0x74, 0xc2, 0xa2, 0xfa, 0x86, 0x2c, 0x2a, 0x45, 0x09, 0x5e, 0xdc, + 0x0a, 0xc9, 0x35, 0x4e, 0xb0, 0x87, 0x93, 0x25, 0x58, 0x92, 0x54, 0xaa, + 0x8d, 0x96, 0x83, 0x6c, 0x25, 0xcc, 0xb0, 0xbc, 0x9a, 0x6d, 0x04, 0x1c, + 0xbb, 0xd2, 0x7f, 0xd6, 0x62, 0x8e, 0x09, 0xac, 0xce, 0xc9, 0x89, 0xb0, + 0xe9, 0x48, 0x8f, 0x3f, 0x5d, 0x05, 0xa4, 0xf6, 0x18, 0x55, 0x02, 0x23, + 0x6f, 0xf6, 0xb3, 0x19, 0x8c, 0x39, 0xa8, 0xb3, 0xb1, 0x53, 0x58, 0x89, + 0x31, 0x35, 0x25, 0x68, 0xd8, 0xc4, 0xe4, 0xb2, 0x08, 0x4d, 0xb5, 0x16, + 0x45, 0xf0, 0x2e, 0xa2, 0x36, 0x58, 0x02, 0x4b, 0x0b, 0x82, 0xc5, 0x42, + 0xed, 0xd7, 0xde, 0xf9, 0x52, 0x9f, 0x0e, 0xeb, 0x59, 0x54, 0xb8, 0xa0, + 0x4a, 0xcc, 0x8d, 0x73, 0xb9, 0xd1, 0xdd, 0x3f, 0x39, 0x5b, 0xc5, 0xb1, + 0x35, 0x59, 0xd1, 0x69, 0x57, 0x27, 0x46, 0x47, 0x2a, 0x22, 0x33, 0xb1, + 0x1e, 0x4b, 0x3e, 0xad, 0x92, 0xb2, 0xa7, 0x90, 0xf6, 0xef, 0xbf, 0x62, + 0xaa, 0xde, 0x8d, 0xb6, 0x79, 0xdd, 0x15, 0x1a, 0xcf, 0x39, 0x1d, 0xdd, + 0xdb, 0x72, 0x31, 0x59, 0xe8, 0xad, 0x56, 0x21, 0x33, 0xad, 0x59, 0x0a, + 0xae, 0x7c, 0xdb, 0x15, 0x4d, 0x5b, 0x2a, 0xa1, 0x0a, 0xab, 0x10, 0x33, + 0xa4, 0x22, 0x24, 0x1f, 0x63, 0x18, 0x38, 0xe5, 0x0b, 0x28, 0x78, 0x60, + 0xa8, 0xb0, 0x74, 0xe1, 0xd2, 0x9c, 0x70, 0x71, 0x31, 0x05, 0x35, 0x14, + 0xcc, 0xb8, 0xe4, 0xe0, 0xb8, 0xc9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x43, 0x40, 0xb8, 0x30, 0x7f, 0x81, 0x01, 0x31, 0xbd, 0x4d, + 0x0c, 0x3f, 0x5a, 0x42, 0x9f, 0x30, 0xfd, 0xc0, 0x8c, 0x30, 0x4d, 0x80, + 0x8d, 0x31, 0x03, 0x40, 0x50, 0x30, 0x07, 0x80, 0x2b, 0x01, 0x01, 0x0e, + 0x06, 0x02, 0x58, 0xc0, 0x80, 0x02, 0x1c, 0xc1, 0x69, 0x07, 0x88, 0xd3, + 0x7e, 0x1f, 0x80, 0xc3, 0xa9, 0x05, 0x78, 0xc0, 0xd4, 0x01, 0x84, 0xe9, + 0x96, 0x05, 0x41, 0x4e, 0x20, 0x12, 0x31, 0x62, 0x11, 0x15, 0x52, 0xaf, + 0x5a, 0xb4, 0x0b, 0x3f, 0x16, 0x65, 0x77, 0xee, 0xc8, 0xf9, 0x1f, 0xcf, + 0x74, 0xf4, 0x9b, 0x94, 0x4e, 0x4b, 0xab, 0xcc, 0x55, 0xb7, 0x3f, 0x26, + 0x95, 0xe1, 0x7b, 0x2a, 0x7b, 0xdf, 0x3d, 0x43, 0x85, 0xef, 0x9f, 0xbd, + 0x96, 0x08, 0x10, 0x4a, 0x09, 0x33, 0x25, 0xee, 0x95, 0x39, 0x39, 0x54, + 0xa5, 0x7b, 0x37, 0x33, 0x0d, 0x4d, 0x35, 0xe5, 0xab, 0xe9, 0x04, 0xd2, + 0x84, 0x57, 0x2a, 0xa1, 0xd3, 0x4c, 0x2b, 0x2d, 0xca, 0x38, 0xbd, 0xba, + 0xda, 0x4c, 0x89, 0x88, 0xa2, 0x20, 0x7c, 0x67, 0x8f, 0x67, 0x1d, 0x92, + 0x34, 0xab, 0x2a, 0x66, 0xbf, 0x3b, 0x90, 0x2a, 0xd1, 0xba, 0x38, 0x2b, + 0x91, 0xc9, 0x99, 0xf8, 0xa3, 0xe5, 0xd2, 0x8d, 0x32, 0xea, 0x49, 0xed, + 0xb5, 0xde, 0xc6, 0xb1, 0x33, 0xe7, 0xdd, 0x69, 0xad, 0xda, 0x53, 0xba, + 0x49, 0xce, 0xb6, 0x37, 0x49, 0xd2, 0xf4, 0xb5, 0xcf, 0xc8, 0x52, 0x27, + 0xf0, 0x8a, 0x73, 0xe4, 0x92, 0x9c, 0xc8, 0x09, 0x05, 0x42, 0x86, 0x90, + 0x86, 0x86, 0x04, 0x01, 0x5e, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd6, + 0xca, 0x70, 0x40, 0x83, 0xfa, 0x4b, 0x70, 0x6d, 0xce, 0x08, 0x11, 0x3c, + 0x65, 0x6e, 0x1b, 0x39, 0xbf, 0x02, 0x0f, 0xed, 0x2d, 0xc1, 0xda, 0xb8, + 0x20, 0x04, 0xf1, 0xa1, 0xb8, 0x65, 0x8d, 0x57, 0x3a, 0xdb, 0x14, 0xb4, + 0x1a, 0x5e, 0x7e, 0xd7, 0x58, 0xae, 0xa8, 0xad, 0x0f, 0xee, 0x85, 0xf1, + 0xaf, 0x99, 0xda, 0x79, 0xa9, 0xfa, 0x1a, 0xbd, 0x0e, 0xf3, 0x06, 0x63, + 0x98, 0x95, 0x99, 0x19, 0x1a, 0x5a, 0xde, 0xd9, 0xd0, 0xaa, 0x44, 0x96, + 0x8c, 0x76, 0xa9, 0x8c, 0xd2, 0xd5, 0x16, 0xed, 0x56, 0xa6, 0xee, 0x74, + 0x4b, 0x3a, 0x11, 0x51, 0xb4, 0x67, 0x21, 0x5b, 0x65, 0x75, 0xce, 0x4a, + 0x6a, 0xe4, 0x49, 0x7b, 0xbb, 0xbb, 0x6d, 0x9f, 0xa1, 0x26, 0x52, 0xf7, + 0x46, 0xab, 0x4e, 0xc4, 0x33, 0x9e, 0xc7, 0x74, 0x15, 0x72, 0x09, 0x01, + 0x04, 0x87, 0x0e, 0x0f, 0x89, 0x84, 0x80, 0x61, 0x01, 0x52, 0x00, 0xe4, + 0x0e, 0x87, 0x4a, 0x1e, 0x01, 0x02, 0xce, 0x60, 0xd9, 0x02, 0x88, 0x63, + 0x4c, 0xab, 0x6e, 0x7d, 0x65, 0x89, 0x80, 0x61, 0xe5, 0x81, 0xba, 0x60, + 0xba, 0x00, 0x5a, 0x60, 0x61, 0x02, 0x9c, 0x60, 0x41, 0x00, 0x94, 0x60, + 0x18, 0x80, 0xce, 0x60, 0x26, 0x80, 0x86, 0x60, 0x51, 0x80, 0x14, 0x60, + 0xe9, 0x01, 0x08, 0x6a, 0xd8, 0x9e, 0x74, 0x63, 0x38, 0x00, 0x22, 0x44, + 0x14, 0x19, 0xc3, 0x00, 0x1a, 0x58, 0x39, 0x93, 0x09, 0x0a, 0x27, 0x80, + 0x41, 0xd7, 0xc3, 0xd4, 0x84, 0x72, 0x8b, 0x6d, 0x5a, 0x91, 0xb1, 0x94, + 0x11, 0x4b, 0xab, 0xcf, 0x55, 0x9b, 0x82, 0x2c, 0x5a, 0xbd, 0xab, 0x5a, + 0xcf, 0x95, 0xb1, 0x94, 0xca, 0xe6, 0x6b, 0xd2, 0xea, 0xf5, 0x6b, 0x96, + 0xb9, 0x5e, 0xbd, 0xef, 0x9c, 0xa3, 0xd5, 0x33, 0x1d, 0x3c, 0x9d, 0xc8, + 0xda, 0x16, 0x15, 0x7e, 0x54, 0x9a, 0x47, 0x72, 0x65, 0x7c, 0x62, 0x99, + 0xc9, 0x2f, 0x36, 0xe4, 0x69, 0x94, 0x09, 0xc3, 0x55, 0x45, 0xd3, 0x3a, + 0xa4, 0x17, 0x57, 0x1d, 0x34, 0x9b, 0x6e, 0x32, 0x6b, 0x63, 0x8d, 0x2f, + 0xef, 0x3e, 0x44, 0xdb, 0x7d, 0x7a, 0x7b, 0x2c, 0x2d, 0x38, 0xb6, 0x8a, + 0x4b, 0x4d, 0x26, 0xeb, 0x5b, 0xb3, 0x88, 0x95, 0x6a, 0x53, 0x43, 0xb9, + 0x39, 0xb9, 0xd6, 0xb5, 0xa1, 0xfb, 0xf1, 0x85, 0x7c, 0x9e, 0x8a, 0x5f, + 0x68, 0x8a, 0x2b, 0xc1, 0x28, 0x41, 0xc9, 0x35, 0xa8, 0xf1, 0xc8, 0x6d, + 0x64, 0xad, 0xdf, 0x1a, 0xd2, 0x64, 0xcd, 0x6c, 0x11, 0x10, 0xbc, 0x52, + 0x90, 0x75, 0x3b, 0x6c, 0xb0, 0x86, 0x02, 0xd2, 0xe0, 0xf2, 0x8b, 0x88, + 0xef, 0xa5, 0x8c, 0xe1, 0x0f, 0x6f, 0xaf, 0x4c, 0x30, 0x55, 0x48, 0x88, + 0x4c, 0x5e, 0x58, 0xb0, 0x07, 0xa0, 0x14, 0xa4, 0xd7, 0x6c, 0x3c, 0x2f, + 0x3c, 0x85, 0x69, 0x0e, 0xd6, 0xc9, 0x0d, 0x29, 0x29, 0x5e, 0xfa, 0xaa, + 0xb7, 0x8e, 0x6b, 0xfb, 0x7f, 0x6e, 0x75, 0x89, 0xea, 0x69, 0xd5, 0x96, + 0x3b, 0x7a, 0xfa, 0x6a, 0x86, 0xb9, 0xea, 0x1b, 0x58, 0xa8, 0xed, 0x66, + 0x5b, 0x86, 0xe5, 0xa7, 0x89, 0x88, 0xee, 0xef, 0x8a, 0xc8, 0x1e, 0xe8, + 0xb3, 0xcd, 0x8f, 0x5e, 0xe7, 0xe2, 0xfb, 0xd9, 0x9e, 0xb7, 0xbd, 0x67, + 0x4b, 0x83, 0xf4, 0x5e, 0xf4, 0xba, 0x4a, 0xb1, 0x03, 0xac, 0x61, 0xa6, + 0x8e, 0x10, 0x05, 0x47, 0xd1, 0x63, 0x4c, 0x10, 0xc1, 0xf1, 0x30, 0x28, + 0x18, 0x51, 0x27, 0x87, 0x29, 0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x27, + 0x05, 0xc6, 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x06, 0x02, 0x7a, 0x60, 0xda, 0x07, 0xa0, 0x63, 0x85, 0xf4, 0xca, + 0x7f, 0xce, 0x99, 0x9c, 0x62, 0x14, 0x85, 0xc2, 0x60, 0xd2, 0x02, 0xc0, + 0x61, 0xb3, 0x03, 0xfe, 0x60, 0x54, 0x00, 0xd8, 0x06, 0x01, 0x4c, 0xc0, + 0x65, 0x01, 0x44, 0xc0, 0xe4, 0x05, 0x30, 0xc2, 0x79, 0x14, 0x2c, 0xd7, + 0x94, 0xc2, 0x84, 0xc9, 0x13, 0x0b, 0x1c, 0xc1, 0xe0, 0x04, 0x20, 0xf1, + 0xe3, 0xcd, 0xd1, 0x28, 0xd4, 0xd2, 0x4c, 0x20, 0xec, 0xc9, 0x44, 0x11, + 0xed, 0x98, 0x06, 0x37, 0xcb, 0x95, 0x45, 0x66, 0xbb, 0xa2, 0x00, 0x33, + 0x1e, 0x14, 0x67, 0x2e, 0xec, 0xce, 0xa9, 0x9e, 0x37, 0x86, 0x3e, 0xe3, + 0xc0, 0xf2, 0xc9, 0x0e, 0x5c, 0x81, 0x37, 0x0d, 0x42, 0x64, 0x59, 0x4c, + 0x76, 0x76, 0x57, 0x73, 0xe8, 0x79, 0x5a, 0x86, 0x1a, 0xa4, 0x9b, 0xca, + 0x00, 0x84, 0xf8, 0xb7, 0xc7, 0xb1, 0xae, 0x34, 0x69, 0x33, 0xcf, 0x32, + 0x92, 0xd7, 0x27, 0xa6, 0x2e, 0xd6, 0x13, 0xbd, 0x6d, 0x0d, 0x6c, 0xb2, + 0x71, 0x75, 0x2c, 0xc6, 0x5a, 0x74, 0xf1, 0x31, 0xc9, 0x3d, 0x94, 0xef, + 0x28, 0x5c, 0x60, 0x8e, 0xea, 0xb6, 0xeb, 0x72, 0x90, 0xa5, 0x54, 0x7a, + 0x3a, 0x36, 0xb9, 0x13, 0xc9, 0xc7, 0x77, 0xbd, 0x51, 0x3e, 0x60, 0x3c, + 0x4a, 0x92, 0x04, 0x3b, 0x6b, 0xb5, 0xaa, 0xa3, 0xb5, 0x86, 0x47, 0x09, + 0xce, 0x4b, 0x4b, 0xd3, 0x4a, 0xd6, 0x23, 0x3c, 0x43, 0x69, 0x7f, 0xc7, + 0x8a, 0x5b, 0x84, 0xb0, 0xc3, 0xbf, 0x29, 0x92, 0xaa, 0x30, 0x3b, 0x33, + 0x84, 0xd8, 0xe5, 0x59, 0x97, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd8, + 0x02, 0x70, 0x3f, 0x03, 0xfb, 0x63, 0x70, 0x6a, 0x8d, 0xc8, 0x11, 0x3c, + 0x45, 0x6e, 0x1e, 0xad, 0xc0, 0xfe, 0x0f, 0xed, 0x8d, 0xc1, 0x9b, 0xb7, + 0xe0, 0x88, 0x93, 0x15, 0xb8, 0x30, 0xc2, 0x1b, 0x02, 0x74, 0x51, 0x9d, + 0x95, 0x0c, 0xa7, 0x8a, 0xe9, 0xc9, 0x08, 0xce, 0xe2, 0x56, 0x95, 0x68, + 0xe0, 0xb7, 0x2c, 0x7d, 0x41, 0xd5, 0x34, 0x44, 0x93, 0xd3, 0x03, 0x53, + 0xf0, 0xf4, 0x7d, 0x20, 0x94, 0x08, 0x02, 0x4f, 0x16, 0xf8, 0x8c, 0xac, + 0x85, 0x1a, 0x6b, 0x62, 0x4d, 0xe3, 0x95, 0xbb, 0x98, 0x88, 0x41, 0x08, + 0xcb, 0x3b, 0x42, 0x74, 0x57, 0x5d, 0xd8, 0x2b, 0x21, 0x0f, 0x60, 0x5e, + 0x5d, 0x8c, 0x77, 0x2b, 0x2d, 0xcf, 0xb9, 0xb2, 0x19, 0x2b, 0x45, 0x5e, + 0xca, 0xef, 0xc8, 0xca, 0xb4, 0x74, 0x6a, 0x1a, 0xec, 0xd4, 0x5e, 0xef, + 0xcd, 0x6a, 0x35, 0x50, 0xb6, 0x69, 0x51, 0x50, 0xac, 0x9e, 0xa9, 0x75, + 0x45, 0x58, 0xb5, 0x11, 0x23, 0xd9, 0xc8, 0x7d, 0x6e, 0xe7, 0xca, 0x8e, + 0xf6, 0x91, 0x1a, 0x8b, 0x2b, 0x8e, 0x2a, 0xaa, 0x5d, 0x8c, 0x22, 0x2e, + 0x51, 0x52, 0x8b, 0x0c, 0x12, 0x0e, 0x04, 0x4c, 0x1c, 0x70, 0xf0, 0x98, + 0x80, 0x18, 0x5c, 0x30, 0xc0, 0xd6, 0x06, 0x84, 0xc0, 0x2b, 0x10, 0xc8, + 0xc1, 0x99, 0xf4, 0x3c, 0xd1, 0x35, 0x35, 0x38, 0xc0, 0xf3, 0x0b, 0xec, + 0xc0, 0x0a, 0x07, 0x98, 0xc3, 0x29, 0x06, 0x54, 0xc0, 0x3e, 0x02, 0x18, + 0xc0, 0x85, 0x00, 0x3c, 0xc0, 0x36, 0x02, 0xa0, 0xc0, 0x40, 0x07, 0x64, + 0xc0, 0x4a, 0x1a, 0x10, 0xc6, 0xea, 0xde, 0x08, 0xc3, 0x54, 0x0f, 0xc0, + 0xc0, 0x75, 0x05, 0x9c, 0xce, 0x2d, 0x8c, 0xbd, 0x9c, 0xca, 0x0c, 0x0d, + 0x13, 0x38, 0x89, 0x78, 0x48, 0x90, 0x02, 0x16, 0x50, 0xfe, 0xc4, 0xd8, + 0x4b, 0xfb, 0x23, 0x25, 0x04, 0x03, 0x40, 0xb5, 0x1a, 0xf1, 0x48, 0x72, + 0x32, 0xe1, 0x52, 0xc6, 0x1b, 0x87, 0xd9, 0x68, 0x93, 0x36, 0x2d, 0x4e, + 0xea, 0x62, 0xd4, 0xd4, 0xc4, 0x86, 0x73, 0xbf, 0x85, 0x89, 0x4c, 0x66, + 0x6e, 0x55, 0x49, 0x2a, 0x94, 0x67, 0x6d, 0x50, 0xe9, 0x71, 0x72, 0x2b, + 0xbb, 0x17, 0xca, 0xd3, 0xa7, 0x1f, 0x71, 0xed, 0xc7, 0x58, 0x4c, 0xfb, + 0xac, 0x27, 0x48, 0x57, 0x75, 0xd5, 0xb0, 0xbc, 0xb7, 0xab, 0xf5, 0x65, + 0xb5, 0x4f, 0x61, 0x9a, 0xe8, 0x7c, 0x8d, 0xa7, 0x1b, 0x06, 0x3d, 0xeb, + 0xa1, 0x79, 0x1b, 0x2c, 0xa2, 0x86, 0xcd, 0xa6, 0x89, 0x7f, 0x24, 0xd4, + 0x8f, 0x59, 0x85, 0xad, 0x57, 0x4c, 0x7a, 0xeb, 0xd7, 0xa6, 0x61, 0x7b, + 0x34, 0x8e, 0x3d, 0x71, 0xa8, 0xa4, 0xfd, 0xdd, 0x58, 0xdb, 0x28, 0xe1, + 0x3e, 0x93, 0xc4, 0xd6, 0x59, 0x01, 0xea, 0xae, 0x6e, 0x87, 0x0d, 0xbe, + 0xcb, 0x16, 0x43, 0xaa, 0xb8, 0x1d, 0x77, 0xce, 0xe7, 0x98, 0x31, 0x5f, + 0xe9, 0x51, 0xb3, 0x02, 0x32, 0x9b, 0x67, 0xac, 0x90, 0x0e, 0xdd, 0x42, + 0xc5, 0xb7, 0x24, 0x88, 0x7a, 0xb0, 0xc0, 0x4c, 0x28, 0xd7, 0x20, 0x34, + 0xb1, 0x03, 0x99, 0xdc, 0xbc, 0x67, 0x7c, 0x6e, 0x1b, 0xec, 0xe3, 0xfb, + 0x86, 0x6c, 0xfd, 0x8d, 0x9d, 0x62, 0x12, 0xf6, 0xa8, 0x77, 0x35, 0x92, + 0xdb, 0xe7, 0x5c, 0x0f, 0xa3, 0x51, 0x7c, 0xf9, 0xfd, 0x31, 0xf1, 0x67, + 0x67, 0x72, 0xaa, 0x3c, 0xfa, 0xba, 0xb7, 0xbd, 0x51, 0x5d, 0xb7, 0x6b, + 0xb1, 0x9a, 0x8f, 0xf3, 0xd7, 0xb4, 0xeb, 0xaa, 0x68, 0x94, 0x3d, 0x3b, + 0x22, 0x15, 0x52, 0xfb, 0xab, 0xda, 0xad, 0xd1, 0xad, 0x4a, 0x68, 0xb4, + 0x3b, 0xd1, 0x6f, 0xee, 0xae, 0xac, 0x8e, 0x89, 0x3b, 0x16, 0xaa, 0x62, + 0x08, 0xba, 0xa8, 0x80, 0xb8, 0xb9, 0x8a, 0xa8, 0x2c, 0x22, 0x0c, 0xe5, + 0x32, 0x0a, 0x0b, 0x0f, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, + 0x2e, 0x32, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x0a, 0x00, 0x85, 0x30, 0x0a, 0xc1, 0x98, 0x30, 0x12, 0x6c, + 0xd7, 0x38, 0x2b, 0x0f, 0xf4, 0x32, 0xb5, 0x85, 0xae, 0x30, 0x57, 0x01, + 0x3d, 0x30, 0x67, 0xc1, 0x1c, 0x0a, 0x00, 0x2e, 0x60, 0x1b, 0x80, 0xda, + 0x60, 0x79, 0x82, 0x02, 0x61, 0x73, 0x08, 0x2c, 0x63, 0x69, 0xad, 0x02, + 0x76, 0xad, 0xf7, 0x42, 0x6a, 0x1b, 0x97, 0x76, 0x60, 0x9c, 0x08, 0x84, + 0x6b, 0x0f, 0xe9, 0xa0, 0xe1, 0x86, 0x40, 0x36, 0x99, 0xad, 0x0a, 0x2a, + 0x2c, 0x31, 0x30, 0x04, 0xc7, 0x24, 0x73, 0x18, 0x8c, 0x41, 0x48, 0xb3, + 0x15, 0x01, 0x8c, 0x22, 0x1f, 0x40, 0xf3, 0x10, 0x0d, 0x8c, 0x56, 0x17, + 0x30, 0xc1, 0x48, 0xc5, 0xc2, 0x33, 0x27, 0x85, 0x4c, 0x60, 0x32, 0x19, + 0x0c, 0x92, 0x03, 0x8b, 0x2a, 0x0a, 0x0e, 0x18, 0x10, 0x54, 0x62, 0x80, + 0x42, 0x83, 0xa6, 0x83, 0x01, 0x81, 0x95, 0x95, 0x33, 0xd4, 0xdd, 0x40, + 0x19, 0xfb, 0x74, 0x6c, 0x6e, 0x33, 0x66, 0x8b, 0xb2, 0xc7, 0xd2, 0x3b, + 0x0d, 0x3a, 0x2d, 0xfc, 0x22, 0x0f, 0x87, 0x20, 0x38, 0xeb, 0xc2, 0x27, + 0xc7, 0x47, 0xca, 0x11, 0xa8, 0x4c, 0x3a, 0x3e, 0x40, 0x46, 0x1e, 0x4c, + 0x88, 0xc3, 0x28, 0xc5, 0x0b, 0xa2, 0x3c, 0x44, 0x78, 0xdb, 0x42, 0x84, + 0xda, 0x14, 0x9c, 0x8b, 0x45, 0x35, 0xb6, 0x6d, 0xe8, 0x11, 0x98, 0x46, + 0x84, 0xe2, 0xef, 0x62, 0x70, 0x25, 0x6a, 0xcc, 0xa4, 0xc1, 0x3a, 0x45, + 0x5a, 0x42, 0x65, 0x1a, 0x98, 0x72, 0x2b, 0x2c, 0xf6, 0xd2, 0x72, 0xef, + 0x7e, 0x2e, 0x28, 0x82, 0xa9, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xc8, + 0x85, 0x70, 0x40, 0x83, 0xfc, 0x4b, 0x70, 0x59, 0x4d, 0xf8, 0x43, 0x18, + 0x42, 0x6e, 0x1f, 0x85, 0xc1, 0x02, 0x0f, 0xf1, 0x2d, 0xc1, 0x7e, 0x38, + 0x20, 0xc9, 0x32, 0x89, 0xb8, 0xeb, 0x79, 0x72, 0x57, 0x3a, 0x36, 0xf5, + 0x5c, 0x8c, 0x2e, 0x14, 0x99, 0x55, 0xb1, 0x75, 0x55, 0x40, 0x51, 0x59, + 0x6a, 0xbf, 0x6c, 0xe2, 0xf4, 0x87, 0x21, 0x08, 0xaf, 0x3d, 0x8d, 0x44, + 0xf1, 0xcb, 0x1e, 0xd6, 0x91, 0x4a, 0xda, 0xc7, 0xf5, 0x58, 0x46, 0x92, + 0x68, 0x2d, 0x88, 0x10, 0x1d, 0x25, 0x99, 0x00, 0x60, 0xf8, 0x0e, 0xb6, + 0x40, 0x00, 0x97, 0x27, 0x3e, 0x17, 0xcd, 0x27, 0xfe, 0x7e, 0xf4, 0x97, + 0x9b, 0xf7, 0x5f, 0x5a, 0x7e, 0x39, 0x81, 0x09, 0x23, 0x18, 0xe0, 0x63, + 0x80, 0x83, 0x10, 0x2a, 0x38, 0x82, 0x4a, 0x62, 0xc8, 0x8e, 0x52, 0x59, + 0x6e, 0xa7, 0x02, 0x28, 0xb3, 0x9f, 0x3a, 0x90, 0xe7, 0x24, 0x3a, 0x75, + 0x95, 0x53, 0xba, 0xa5, 0x9f, 0xf7, 0x6d, 0x2e, 0x7f, 0xab, 0x57, 0xd2, + 0x6e, 0xdf, 0xba, 0x7f, 0xbe, 0x9d, 0xe8, 0xd9, 0x9d, 0xff, 0xdd, 0xf7, + 0x47, 0x7d, 0x7b, 0x28, 0x9e, 0x80, 0x73, 0x98, 0x0c, 0x33, 0xba, 0xa0, + 0x96, 0x23, 0x8c, 0x60, 0x53, 0x80, 0x84, 0x18, 0x10, 0xc1, 0x8d, 0x0b, + 0xab, 0xe9, 0x8d, 0xbe, 0x82, 0x29, 0x8a, 0x7c, 0x0d, 0x19, 0x80, 0x40, + 0x07, 0xf9, 0x85, 0x1c, 0x03, 0xd9, 0x81, 0x34, 0x00, 0x81, 0x81, 0x22, + 0x00, 0x01, 0x80, 0x8c, 0x07, 0x01, 0x81, 0xe4, 0x00, 0x89, 0x80, 0xd2, + 0x37, 0x49, 0xf8, 0xfd, 0xdc, 0x61, 0xa1, 0xde, 0x40, 0xf1, 0x85, 0xd8, + 0x11, 0x89, 0x8c, 0xe0, 0x43, 0x88, 0xd0, 0x41, 0xd8, 0xe4, 0x90, 0x01, + 0xa4, 0x31, 0x8a, 0x00, 0x86, 0x03, 0x54, 0x9a, 0xe0, 0x88, 0x1c, 0x0b, + 0x70, 0x40, 0xa0, 0x99, 0x71, 0x8d, 0xd3, 0xc7, 0x35, 0x48, 0xa3, 0x01, + 0x81, 0x40, 0x43, 0x21, 0x51, 0x20, 0xaa, 0xd6, 0x30, 0x80, 0x11, 0x9f, + 0x37, 0x03, 0x06, 0x98, 0xc0, 0x44, 0x99, 0x72, 0x82, 0x60, 0xd6, 0x55, + 0x51, 0xb7, 0x8f, 0xd6, 0x97, 0x3e, 0xaf, 0xc3, 0xaf, 0x0f, 0x4a, 0xa2, + 0xf5, 0x37, 0x5e, 0x5d, 0x16, 0xa3, 0xfd, 0x58, 0xc8, 0xa2, 0x2b, 0x22, + 0x9d, 0x52, 0x35, 0x0f, 0xbe, 0x2a, 0xae, 0x3d, 0x1e, 0xc5, 0xf4, 0x2b, + 0x45, 0x49, 0x48, 0xea, 0x52, 0x9a, 0x01, 0x51, 0x06, 0x75, 0x48, 0x5a, + 0x49, 0xb4, 0x47, 0xe1, 0x04, 0x94, 0x2d, 0x19, 0x37, 0x18, 0x23, 0x52, + 0x49, 0x2a, 0x80, 0x53, 0xdb, 0x28, 0xd7, 0xb5, 0x1e, 0x1e, 0xb5, 0x23, + 0x3c, 0x61, 0x47, 0x49, 0x45, 0xda, 0x59, 0x48, 0x93, 0x4f, 0x13, 0xc7, + 0xc5, 0xe6, 0x25, 0x09, 0xc1, 0x1c, 0x77, 0x48, 0xe8, 0xc4, 0xda, 0x4a, + 0x12, 0x4e, 0xd9, 0xc9, 0xc6, 0x2a, 0x67, 0x4e, 0xe5, 0x86, 0x96, 0xa8, + 0x22, 0xd6, 0x58, 0x37, 0xaa, 0x5c, 0x52, 0x5d, 0x34, 0xde, 0x71, 0x3a, + 0x82, 0x35, 0x4b, 0x92, 0xa2, 0x40, 0x72, 0x04, 0x08, 0x51, 0x0a, 0x46, + 0xc8, 0x8c, 0x1f, 0x0f, 0x40, 0x00, 0x0b, 0x1b, 0xa6, 0x75, 0x03, 0x74, + 0xcf, 0x2a, 0x9a, 0xdb, 0x53, 0x9e, 0xb5, 0x5f, 0xad, 0x34, 0x7b, 0xb5, + 0x5d, 0x1a, 0xe5, 0x15, 0x01, 0x2c, 0xb1, 0x62, 0x09, 0xb9, 0x8e, 0xe3, + 0xc8, 0xe4, 0x39, 0x2f, 0x05, 0x45, 0xa5, 0x2c, 0xff, 0xf7, 0x9d, 0xbb, + 0xb3, 0x75, 0xf4, 0x2b, 0x26, 0x9b, 0xb5, 0xb3, 0xab, 0x50, 0xcd, 0xf5, + 0x66, 0x74, 0x55, 0xf5, 0xfe, 0xe8, 0xad, 0x5a, 0xeb, 0x67, 0xa2, 0xd9, + 0x4e, 0x5d, 0x8f, 0xe9, 0x6f, 0x65, 0x32, 0xab, 0xcc, 0xca, 0x62, 0x19, + 0x88, 0x84, 0x72, 0x80, 0x0a, 0x0a, 0x08, 0xa2, 0x44, 0x0c, 0x6b, 0x0b, + 0x23, 0xa8, 0x44, 0xc4, 0x14, 0xd4, 0x53, 0x32, 0xe3, 0x93, 0x82, 0xe3, + 0x2a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x14, 0x80, 0xdd, 0x30, 0x05, 0x42, 0x0e, 0x30, 0xa9, 0x35, + 0x2b, 0x35, 0xce, 0x8d, 0xca, 0x30, 0x51, 0x42, 0x6d, 0x30, 0x13, 0x02, + 0xc2, 0x30, 0x5d, 0xc1, 0x37, 0x06, 0x81, 0xbc, 0x60, 0x14, 0x01, 0xd6, + 0x60, 0x79, 0x01, 0xca, 0x60, 0xe3, 0x83, 0x90, 0x61, 0x64, 0x09, 0xd6, + 0x7e, 0x3f, 0xab, 0xb6, 0x63, 0x88, 0x03, 0x9a, 0x60, 0xb7, 0x80, 0x30, + 0x6e, 0xe2, 0x29, 0x9d, 0xc2, 0x81, 0xc8, 0x83, 0x41, 0xd5, 0x8c, 0xf8, + 0x01, 0x30, 0x08, 0x18, 0xc0, 0xc5, 0xf0, 0xcf, 0x6a, 0x6a, 0x8a, 0x83, + 0xd1, 0xa1, 0x01, 0x86, 0x19, 0x39, 0x9c, 0xe4, 0x60, 0x4c, 0x2e, 0x72, + 0x15, 0x25, 0x25, 0xa1, 0x90, 0x2c, 0x41, 0xad, 0x98, 0x38, 0x46, 0x4c, + 0x03, 0x93, 0x2b, 0x5c, 0xdd, 0x32, 0xb2, 0x59, 0xa0, 0x83, 0xeb, 0xf6, + 0x61, 0xb7, 0x98, 0xce, 0x97, 0x39, 0x5c, 0x2a, 0xa6, 0x12, 0xce, 0x56, + 0xa3, 0xb3, 0xb1, 0x4e, 0x28, 0x93, 0x56, 0x4c, 0x4f, 0x2d, 0x34, 0xcb, + 0xdf, 0x7c, 0x57, 0xf3, 0x83, 0x31, 0x86, 0x47, 0x26, 0x98, 0x8d, 0x44, + 0x10, 0x79, 0x44, 0x35, 0x34, 0xe7, 0xe0, 0x86, 0xbc, 0x20, 0xd2, 0x93, + 0xef, 0xaa, 0xb4, 0xa2, 0xe5, 0x0b, 0xc9, 0x43, 0xf7, 0x0d, 0x44, 0xdd, + 0xb9, 0x12, 0xea, 0xd1, 0x1b, 0x2f, 0x5d, 0xa4, 0x91, 0xd1, 0x22, 0x35, + 0x9d, 0x25, 0x21, 0xe5, 0x0b, 0x4e, 0x2b, 0x3a, 0x4d, 0xae, 0xb5, 0xaf, + 0xf6, 0x93, 0x84, 0x23, 0x4d, 0x30, 0xef, 0x35, 0x6a, 0x52, 0x92, 0x99, + 0x3c, 0x4e, 0x3e, 0x2f, 0xac, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd7, + 0x77, 0x70, 0x41, 0x03, 0xfc, 0x4b, 0x70, 0x68, 0x8e, 0x08, 0x11, 0x44, + 0x65, 0x6e, 0x9d, 0x1d, 0xc1, 0x06, 0x0f, 0xf1, 0x2d, 0xc1, 0xcf, 0x35, + 0x5f, 0xc5, 0x81, 0xa1, 0xb8, 0x6a, 0x29, 0x7b, 0xcb, 0x51, 0xfa, 0xa3, + 0xa5, 0xa7, 0xe2, 0x28, 0x26, 0x6e, 0x90, 0x0a, 0x8c, 0x0c, 0x9d, 0x3c, + 0x20, 0x01, 0xfc, 0x43, 0xd4, 0xe7, 0xca, 0x27, 0xcd, 0x34, 0x11, 0x32, + 0x44, 0xe9, 0x1b, 0xb7, 0x61, 0x91, 0x22, 0xfb, 0xce, 0x1f, 0x08, 0xd3, + 0x88, 0x57, 0xd4, 0xa1, 0xd3, 0x7d, 0x21, 0xd1, 0x66, 0xe1, 0x84, 0x67, + 0xaa, 0x98, 0xb7, 0xfc, 0x99, 0xa7, 0x73, 0xa9, 0x69, 0x22, 0xbf, 0x91, + 0x0b, 0x47, 0x53, 0x13, 0x23, 0xd4, 0xb6, 0x6a, 0x35, 0x0e, 0xcf, 0xa3, + 0x22, 0xaa, 0xf5, 0x2f, 0x4a, 0xda, 0x8f, 0xe7, 0x2a, 0x32, 0x25, 0x97, + 0xcb, 0x4b, 0x2d, 0x14, 0xce, 0x4f, 0x66, 0x9a, 0xb7, 0x42, 0x0c, 0x44, + 0x21, 0x05, 0xce, 0xcc, 0x81, 0xfa, 0xc5, 0xce, 0x88, 0xe8, 0x1c, 0x75, + 0x03, 0x09, 0x87, 0xc8, 0x11, 0x0a, 0x73, 0x80, 0x66, 0x08, 0x30, 0x25, + 0x66, 0x0c, 0xc8, 0x4c, 0x46, 0x2b, 0x84, 0xc4, 0x27, 0x7b, 0x50, 0xed, + 0x46, 0x19, 0x00, 0x35, 0xa6, 0x09, 0x78, 0x29, 0x26, 0x0a, 0x50, 0x18, + 0xc6, 0x00, 0x08, 0x0a, 0x26, 0x00, 0x68, 0x04, 0x06, 0x09, 0x58, 0x0c, + 0x86, 0x09, 0x90, 0x15, 0x26, 0x12, 0x38, 0x57, 0xe7, 0xd2, 0x02, 0x14, + 0xa6, 0x5d, 0xe8, 0x20, 0xa6, 0x0e, 0x60, 0x02, 0x81, 0x9d, 0x73, 0x39, + 0x04, 0x83, 0x8f, 0x66, 0x83, 0xc4, 0x93, 0x25, 0x53, 0x64, 0x00, 0x29, + 0x38, 0xc0, 0x79, 0xf9, 0x65, 0x63, 0x40, 0xc0, 0xc1, 0xa9, 0x85, 0x95, + 0xa6, 0x74, 0x45, 0x03, 0x80, 0xad, 0x78, 0xba, 0xf1, 0x68, 0x88, 0x40, + 0x4a, 0x3c, 0xbe, 0x81, 0x06, 0xa1, 0x60, 0x24, 0xdb, 0x89, 0x2b, 0xac, + 0xd1, 0x97, 0xa4, 0x92, 0xbd, 0x8c, 0xa0, 0xc7, 0xbe, 0xb5, 0xab, 0x34, + 0x53, 0x32, 0x6c, 0xf7, 0x1b, 0xcb, 0x5b, 0xdd, 0x16, 0xa8, 0xc9, 0x98, + 0x1c, 0xbd, 0x99, 0xbd, 0x9c, 0x99, 0x40, 0xa4, 0xe4, 0x94, 0xb5, 0xa6, + 0x20, 0xc2, 0x69, 0xba, 0x6c, 0xbf, 0x35, 0xcb, 0xa6, 0xde, 0xae, 0xc3, + 0xb3, 0xea, 0x4e, 0x66, 0x1a, 0xa7, 0x8b, 0x0d, 0x5f, 0x4a, 0x9a, 0x73, + 0x28, 0x77, 0x15, 0xa7, 0x25, 0xd9, 0xc9, 0xf8, 0x53, 0x32, 0x4e, 0x33, + 0xcc, 0x49, 0x9f, 0xca, 0xb9, 0x36, 0xe1, 0x97, 0x2d, 0x82, 0x70, 0x67, + 0xc6, 0x69, 0x4a, 0x39, 0x14, 0xad, 0xdd, 0xac, 0x6a, 0xeb, 0xc3, 0x56, + 0x9b, 0xe1, 0x95, 0xb1, 0x9c, 0xa1, 0xe5, 0x8a, 0xa9, 0x2a, 0xcc, 0xbd, + 0xc6, 0x5b, 0x5d, 0xd1, 0x49, 0x38, 0x38, 0x81, 0x66, 0x09, 0xc4, 0xe4, + 0x27, 0xc8, 0x66, 0xda, 0x9f, 0xb3, 0x47, 0xab, 0x91, 0x8a, 0x5a, 0x0a, + 0x5b, 0xd5, 0x3b, 0x57, 0xa1, 0xc1, 0xae, 0xc6, 0xc0, 0x91, 0x2e, 0xa1, + 0x7d, 0x4a, 0xdf, 0x3e, 0x2c, 0x90, 0xd6, 0x94, 0xdb, 0x0c, 0x0d, 0xfc, + 0xb9, 0x4e, 0xc4, 0x48, 0x41, 0x93, 0x9b, 0x6d, 0x51, 0x52, 0xbc, 0xc5, + 0xc3, 0xbc, 0xef, 0x5b, 0xad, 0xcd, 0x4d, 0x0d, 0xbe, 0xaa, 0xe2, 0xd9, + 0xe6, 0xc8, 0xb5, 0xc6, 0xfd, 0xc2, 0x7d, 0x75, 0x1e, 0xb3, 0x28, 0xeb, + 0xd2, 0xa4, 0x0e, 0xb8, 0x9d, 0x59, 0xeb, 0x4d, 0xd9, 0xee, 0xfd, 0x7b, + 0xb6, 0xa9, 0x6d, 0xa2, 0x28, 0xae, 0xdf, 0x2e, 0xb8, 0x1b, 0x35, 0x53, + 0x3f, 0x8d, 0xb7, 0xb8, 0x1c, 0xf6, 0x2c, 0xaf, 0x36, 0x60, 0x34, 0x3c, + 0x30, 0x0d, 0x04, 0x72, 0x44, 0x41, 0x41, 0x1c, 0x40, 0x4c, 0x41, 0x4d, + 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x35, 0x00, 0xb5, 0x30, 0x76, 0x41, 0x10, 0x31, 0xa3, 0x13, + 0x01, 0x3e, 0x87, 0x82, 0x92, 0x30, 0xf1, 0x00, 0x8b, 0x30, 0x4f, 0xc1, + 0xd4, 0x30, 0x15, 0x01, 0x33, 0x30, 0x12, 0x40, 0x68, 0x1e, 0x02, 0x10, + 0xc0, 0x38, 0x01, 0x10, 0xc1, 0x41, 0x05, 0xbc, 0xc4, 0x92, 0x0b, 0x60, + 0xf7, 0xb5, 0xb8, 0x20, 0xc6, 0x82, 0x09, 0x80, 0xc2, 0x19, 0x03, 0x14, + 0xe3, 0x86, 0x23, 0x52, 0x99, 0x4c, 0xcc, 0x48, 0x36, 0xa2, 0x0c, 0xd2, + 0x22, 0x53, 0x04, 0x01, 0x0b, 0xdc, 0x12, 0x78, 0x43, 0x55, 0x66, 0x12, + 0x01, 0x2b, 0x69, 0x10, 0x60, 0xf4, 0x00, 0x82, 0xb1, 0x42, 0xa2, 0x0c, + 0x00, 0x6e, 0x60, 0x48, 0x48, 0xd4, 0x1a, 0x01, 0x90, 0x47, 0x61, 0x80, + 0x97, 0xea, 0x82, 0x45, 0x51, 0x5b, 0xd4, 0x62, 0x6b, 0x39, 0xce, 0xcc, + 0x2f, 0xfb, 0x57, 0xa2, 0xd7, 0xb1, 0x90, 0x57, 0x97, 0xcb, 0x27, 0x6c, + 0x5d, 0x9a, 0xc4, 0x72, 0x58, 0x43, 0x86, 0x1e, 0x7c, 0x9e, 0x77, 0x4b, + 0xa9, 0xae, 0xe2, 0x01, 0x65, 0x8a, 0x8a, 0x5a, 0x2b, 0x58, 0xa0, 0x92, + 0x4c, 0xe4, 0x0c, 0x99, 0x93, 0x45, 0x2d, 0x7a, 0x5c, 0xae, 0x26, 0xcd, + 0x39, 0x6a, 0xdc, 0x59, 0x4e, 0xbb, 0x8a, 0x3c, 0x69, 0x55, 0x4c, 0xea, + 0xb5, 0xca, 0x4d, 0x7b, 0xdc, 0x8f, 0x51, 0xbe, 0xa9, 0x39, 0xe3, 0x17, + 0x20, 0x78, 0xab, 0x91, 0x30, 0xd0, 0x31, 0xd6, 0x54, 0x63, 0xb4, 0xc1, + 0x83, 0xa9, 0x12, 0xdb, 0x6b, 0x2a, 0x1e, 0xa7, 0xd2, 0x16, 0xa8, 0xe4, + 0x62, 0x12, 0xcb, 0x13, 0x84, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd7, + 0x20, 0x6f, 0xc1, 0x83, 0xfc, 0x43, 0x70, 0x65, 0x8e, 0x08, 0x22, 0x64, + 0x25, 0x6e, 0x1b, 0x2d, 0xc1, 0x0a, 0x4f, 0xf0, 0xcd, 0xc1, 0xe7, 0x37, + 0xe0, 0x09, 0x91, 0xa1, 0xb8, 0xc1, 0xe8, 0xf4, 0x59, 0x34, 0x6a, 0x14, + 0x1a, 0x06, 0x00, 0x01, 0xb5, 0xdb, 0xea, 0xbb, 0xaf, 0x7f, 0x1c, 0xf5, + 0xcf, 0xd6, 0x7c, 0xc4, 0x9d, 0xb2, 0x94, 0x73, 0x30, 0x96, 0x81, 0x37, + 0x37, 0xe3, 0x02, 0x01, 0xaa, 0x10, 0x98, 0x08, 0x87, 0x69, 0x96, 0x55, + 0x55, 0x4a, 0x2d, 0xeb, 0x69, 0x7b, 0x3d, 0x59, 0x2e, 0x9a, 0x11, 0x5b, + 0xf6, 0x25, 0xaf, 0x67, 0xdc, 0x8d, 0x57, 0xad, 0xd0, 0xf5, 0xd7, 0x47, + 0x56, 0x9c, 0xa4, 0xb5, 0xd2, 0xf3, 0x25, 0x5e, 0xa9, 0x5b, 0x3b, 0xa1, + 0x9e, 0xe8, 0x8b, 0x75, 0x2e, 0x8a, 0x6b, 0x39, 0x59, 0x4d, 0x18, 0xec, + 0x47, 0xa1, 0x84, 0x1b, 0x41, 0xc3, 0xce, 0x77, 0x19, 0x16, 0xb0, 0x78, + 0x87, 0x1e, 0x87, 0x71, 0x70, 0x88, 0xd0, 0xd0, 0x1c, 0x07, 0x09, 0x82, + 0x6e, 0x05, 0x59, 0x89, 0x7c, 0x54, 0x11, 0xd7, 0x18, 0x18, 0x39, 0x85, + 0x58, 0x04, 0x31, 0x82, 0x1e, 0x09, 0x69, 0x80, 0xc0, 0x06, 0xe1, 0x81, + 0x0a, 0x02, 0xe9, 0x80, 0xa4, 0x02, 0x21, 0x80, 0xc4, 0x01, 0xb9, 0x81, + 0x40, 0x0a, 0xa1, 0x84, 0x3a, 0x20, 0x69, 0xc0, 0xed, 0xa6, 0xa9, 0x8a, + 0xb2, 0x0b, 0x49, 0x83, 0x54, 0x06, 0xb1, 0xa9, 0x4e, 0x66, 0x5c, 0x23, + 0x19, 0x04, 0x96, 0x22, 0x8a, 0x05, 0xc4, 0x05, 0xdf, 0x30, 0x11, 0x50, + 0x06, 0x01, 0x75, 0x19, 0x02, 0x04, 0xc4, 0x85, 0x42, 0x04, 0xe1, 0x9e, + 0x8d, 0x60, 0xe0, 0x04, 0x06, 0x88, 0xf2, 0x9a, 0xe0, 0x90, 0x2d, 0xe7, + 0xdc, 0xc3, 0x05, 0x32, 0xb0, 0x6c, 0x83, 0x0b, 0x5b, 0x43, 0xbb, 0x5d, + 0x91, 0x5d, 0x81, 0x25, 0x90, 0x52, 0xa2, 0x94, 0x4c, 0xcc, 0x5c, 0xca, + 0xc5, 0xce, 0xbb, 0x74, 0xb4, 0x92, 0x9b, 0x3a, 0x25, 0x2f, 0x33, 0xfb, + 0x3b, 0xd3, 0x59, 0x6d, 0x3b, 0xed, 0xb2, 0x57, 0x98, 0x5f, 0x29, 0xf9, + 0xd1, 0x75, 0x45, 0xd6, 0xb6, 0x3c, 0x54, 0xeb, 0xb5, 0xf9, 0xbe, 0x8e, + 0x67, 0x33, 0x59, 0x80, 0xcc, 0xa3, 0x36, 0xa7, 0xbc, 0xe6, 0xbe, 0x4f, + 0xa7, 0xf9, 0xb6, 0xfd, 0x4d, 0x9e, 0xf7, 0xab, 0xb6, 0x4b, 0xf8, 0xe5, + 0x43, 0xbf, 0x6b, 0xdc, 0xdf, 0xef, 0x73, 0xd7, 0xbd, 0x76, 0x6d, 0xd7, + 0x69, 0xee, 0xcd, 0xb3, 0xad, 0x31, 0x8b, 0x76, 0x96, 0x25, 0xa8, 0x27, + 0x20, 0x42, 0x8e, 0xe9, 0x1e, 0x59, 0xe6, 0x96, 0x12, 0x0f, 0xce, 0xe5, + 0xc0, 0x33, 0x37, 0x67, 0xab, 0x4c, 0x52, 0x5f, 0xa9, 0x77, 0x1f, 0xb4, + 0x55, 0xfd, 0xcc, 0x45, 0x48, 0x11, 0x14, 0x6a, 0x45, 0x27, 0xba, 0x4a, + 0xa7, 0x85, 0x37, 0x0a, 0x86, 0x83, 0x98, 0x73, 0x8a, 0x44, 0x81, 0x69, + 0xa5, 0x5f, 0x3c, 0x2f, 0x13, 0x3e, 0xb5, 0x4d, 0xae, 0xb5, 0xc2, 0xb3, + 0xc5, 0xcd, 0xb3, 0x45, 0xdc, 0xf1, 0x5c, 0x55, 0x58, 0xeb, 0x6b, 0x8e, + 0x3b, 0x9e, 0x9a, 0xda, 0xa5, 0xd9, 0xf4, 0x9a, 0x5e, 0x6c, 0xb9, 0x1d, + 0xdf, 0x1f, 0x52, 0xd7, 0x13, 0x14, 0x9c, 0x4a, 0xb2, 0xd5, 0x43, 0xcb, + 0x73, 0xad, 0x3d, 0xdb, 0x8c, 0xaa, 0x65, 0xf7, 0xd2, 0x38, 0xd8, 0x75, + 0xdc, 0xa5, 0xac, 0xac, 0x0d, 0x16, 0x61, 0xa9, 0x42, 0xa5, 0x9a, 0x2a, + 0xc2, 0xa5, 0x12, 0x2d, 0x44, 0x90, 0x16, 0x61, 0x41, 0x2a, 0x62, 0x0a, + 0x6a, 0x29, 0x99, 0x71, 0xc9, 0xc1, 0x71, 0x95, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0xb0, 0x0c, 0x00, 0x80, 0x17, 0x8c, 0x0b, 0x30, 0x59, 0x4c, 0x31, + 0xa5, 0x64, 0x0d, 0xdd, 0x61, 0x34, 0x4c, 0x1b, 0x40, 0x3f, 0x82, 0x00, + 0xd7, 0x30, 0x21, 0x00, 0x19, 0x30, 0x07, 0x80, 0x07, 0x30, 0x09, 0x40, + 0x12, 0x30, 0x01, 0x00, 0x70, 0x30, 0x11, 0xc1, 0x77, 0x30, 0x45, 0x05, + 0x96, 0x33, 0xc4, 0x77, 0x1a, 0x30, 0xee, 0x02, 0x4e, 0x0b, 0x81, 0xc2, + 0x65, 0x03, 0xd1, 0x8c, 0x47, 0x26, 0x1a, 0x18, 0x19, 0x4c, 0x3c, 0x06, + 0x3a, 0xae, 0x40, 0xb1, 0xd0, 0x7b, 0x5b, 0x20, 0xe2, 0xb7, 0x86, 0x02, + 0x8c, 0x2a, 0x56, 0x38, 0x68, 0xec, 0x68, 0x0c, 0x8e, 0x21, 0x00, 0x0b, + 0xd0, 0x1a, 0xda, 0x5e, 0xca, 0x2c, 0x60, 0xe3, 0xa3, 0x32, 0x96, 0xc1, + 0x52, 0xff, 0x4e, 0xd4, 0x9b, 0x94, 0xcd, 0x45, 0x75, 0x34, 0xbd, 0xed, + 0x5d, 0x7e, 0x6d, 0x5a, 0x99, 0xe6, 0x9b, 0x4b, 0x7f, 0x76, 0xdc, 0x00, + 0x1d, 0xb8, 0x99, 0x18, 0x3e, 0x49, 0x69, 0xde, 0xd8, 0x4b, 0x2b, 0x5c, + 0x81, 0xbf, 0x54, 0x01, 0x1e, 0x1b, 0x9c, 0x34, 0xda, 0xbb, 0x1c, 0xaf, + 0xa9, 0x99, 0xd0, 0x8e, 0x75, 0x91, 0xb8, 0x7f, 0x2e, 0x47, 0x4c, 0xf9, + 0x57, 0x35, 0x23, 0x87, 0xa6, 0xb0, 0xcb, 0xcc, 0xb9, 0x50, 0xe3, 0xdf, + 0xba, 0x2d, 0x9b, 0xb9, 0xac, 0x22, 0xa9, 0x7e, 0x97, 0x29, 0x91, 0x9c, + 0xe9, 0x28, 0x56, 0xa4, 0x10, 0x30, 0xbc, 0x18, 0x20, 0xc3, 0x2c, 0x09, + 0x19, 0x00, 0x00, 0xf0, 0xdf, 0xab, 0x35, 0x32, 0xdf, 0xea, 0xf6, 0x5b, + 0xd7, 0x37, 0x7d, 0xc4, 0x11, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xc6, + 0x4e, 0x6f, 0x43, 0x0b, 0xfc, 0x1b, 0x74, 0x5d, 0x4d, 0xf8, 0x43, 0x64, + 0xa2, 0x6e, 0x18, 0x45, 0xc1, 0x0e, 0x4f, 0xec, 0x6d, 0xc2, 0x0d, 0x37, + 0xe0, 0x09, 0x84, 0x19, 0xb8, 0x36, 0x49, 0xd3, 0x75, 0xaf, 0x5f, 0x5a, + 0xb3, 0x10, 0xe8, 0x41, 0x66, 0x8e, 0x16, 0x41, 0xc1, 0xe0, 0xe8, 0x63, + 0x99, 0x83, 0xc0, 0x36, 0x28, 0x74, 0x39, 0xa6, 0x38, 0x46, 0x0e, 0x2d, + 0xac, 0xaf, 0x66, 0xb2, 0xd5, 0x74, 0xe9, 0xff, 0xf4, 0x66, 0x7c, 0xf6, + 0xf9, 0x1b, 0xf7, 0x6b, 0xa7, 0x92, 0xfb, 0xfa, 0xfa, 0x74, 0x5d, 0xf7, + 0xfe, 0xbb, 0x22, 0xfd, 0xe5, 0x95, 0x1d, 0x2a, 0xe6, 0x9a, 0x53, 0x2a, + 0x3e, 0xea, 0x82, 0xea, 0x56, 0x2a, 0xa3, 0x84, 0x46, 0x0c, 0x02, 0x30, + 0x23, 0x8c, 0x01, 0x10, 0x62, 0x4c, 0x12, 0x46, 0x01, 0x8c, 0xd0, 0xa1, + 0x42, 0x4c, 0x08, 0x80, 0x43, 0x8c, 0x04, 0xb0, 0x0f, 0x4c, 0x03, 0x90, + 0x0c, 0x8c, 0x05, 0xf0, 0x01, 0xcc, 0x06, 0x00, 0x09, 0x4c, 0x01, 0xc0, + 0x23, 0xcc, 0x03, 0x50, 0x50, 0x0c, 0x0d, 0x41, 0x2f, 0xcc, 0xaa, 0x9c, + 0xec, 0xcc, 0x09, 0x10, 0x85, 0xcc, 0x0a, 0x20, 0x3b, 0x06, 0x1d, 0x44, + 0x47, 0x06, 0x06, 0x12, 0x60, 0x3c, 0x20, 0xa0, 0x54, 0x09, 0x83, 0x23, + 0x01, 0xe9, 0xb1, 0x86, 0xb6, 0xcd, 0x12, 0xc0, 0x02, 0xae, 0x7d, 0xa6, + 0x4b, 0xfd, 0xe4, 0x22, 0x0b, 0x96, 0x3d, 0x41, 0x80, 0x12, 0x57, 0xe4, + 0xcd, 0xc0, 0xc8, 0x8c, 0x20, 0xf9, 0x45, 0x1f, 0xcb, 0x15, 0xaa, 0xec, + 0xaa, 0x47, 0xad, 0x3f, 0x56, 0xad, 0x3b, 0xf7, 0xb2, 0x94, 0x67, 0x93, + 0x5b, 0xfe, 0x50, 0x62, 0x40, 0xc8, 0xd4, 0x6d, 0x56, 0xd1, 0x9e, 0x52, + 0x83, 0x46, 0x9b, 0xc3, 0xe3, 0xfc, 0xae, 0xd3, 0x70, 0x59, 0x5f, 0xe3, + 0x19, 0x97, 0x52, 0xec, 0x53, 0xf6, 0x72, 0x73, 0xdf, 0x39, 0xcd, 0xcf, + 0x32, 0xf9, 0xfd, 0x4f, 0xd3, 0x06, 0x86, 0xfc, 0x39, 0x9b, 0x5e, 0x4e, + 0x6c, 0x7d, 0x7b, 0x9c, 0x2a, 0x72, 0xeb, 0xb9, 0x5c, 0xf7, 0x35, 0xe4, + 0xff, 0xdb, 0x54, 0x09, 0xb8, 0x16, 0xf6, 0xe4, 0x10, 0x49, 0x05, 0xc0, + 0x00, 0x87, 0xce, 0xad, 0x3c, 0xf5, 0x79, 0xa9, 0xb9, 0xca, 0x5b, 0x18, + 0xeb, 0x1a, 0xb5, 0x73, 0x1d, 0xe2, 0xaf, 0x6b, 0xb6, 0xed, 0xe3, 0xa8, + 0x6a, 0x1b, 0x93, 0xe3, 0xd2, 0xe0, 0x9b, 0x24, 0x44, 0x77, 0x73, 0x0d, + 0x12, 0x9b, 0x98, 0x1e, 0x89, 0x41, 0xe1, 0x21, 0x85, 0x9a, 0x5a, 0x75, + 0x26, 0xcd, 0xd3, 0x95, 0x9a, 0x53, 0xe4, 0x3f, 0x9a, 0x6d, 0xfd, 0xff, + 0xff, 0x5d, 0xdb, 0x1d, 0x9b, 0xe3, 0xfe, 0xef, 0xf7, 0x7b, 0x57, 0x8f, + 0x95, 0x4d, 0x1f, 0x3b, 0x7d, 0xf9, 0x6f, 0x4d, 0x8e, 0xd9, 0xeb, 0x23, + 0x7b, 0x14, 0xbf, 0x7f, 0xdc, 0x3f, 0xdf, 0xf7, 0x21, 0xff, 0x7f, 0xfe, + 0x66, 0xfd, 0xc8, 0xdd, 0xd6, 0xce, 0x51, 0x8c, 0xec, 0xcd, 0xd3, 0xac, + 0xbc, 0x31, 0xcb, 0xd4, 0x8f, 0x59, 0xb8, 0x71, 0x32, 0x26, 0x86, 0x90, + 0xcb, 0x18, 0x29, 0x32, 0xe4, 0x44, 0x06, 0x13, 0x80, 0x69, 0x88, 0x29, + 0xa8, 0xa6, 0x65, 0xc7, 0x27, 0x05, 0xc6, 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x0e, 0x00, 0x03, 0x00, 0x94, 0x0b, 0xa3, 0x01, 0xd8, 0x1c, 0x13, + 0x05, 0x6d, 0xb6, 0xc3, 0x2a, 0xec, 0x58, 0xb3, 0x03, 0x24, 0x12, 0xa3, + 0x01, 0x98, 0x13, 0x73, 0x00, 0xd8, 0x0a, 0xc3, 0x01, 0x58, 0x06, 0x53, + 0x01, 0x1c, 0x07, 0xc3, 0x02, 0x04, 0x0d, 0xe3, 0x02, 0x30, 0x1c, 0x53, + 0x07, 0x54, 0x59, 0x23, 0x7c, 0xfb, 0x61, 0x03, 0x0c, 0xac, 0x2a, 0x03, + 0x05, 0xe0, 0x13, 0x93, 0x97, 0x8c, 0x34, 0x23, 0xf5, 0xbc, 0x6d, 0x87, + 0x86, 0xae, 0x18, 0x60, 0x80, 0xe3, 0x1a, 0xc1, 0x25, 0xac, 0x89, 0xf7, + 0x0e, 0x00, 0x05, 0x18, 0x80, 0x26, 0xce, 0x59, 0x60, 0xb5, 0xaf, 0xd1, + 0x40, 0x0d, 0xfb, 0xe5, 0xfb, 0x94, 0xb6, 0x53, 0x18, 0x89, 0x0e, 0x17, + 0x87, 0x25, 0x52, 0xe9, 0xe1, 0xc0, 0x05, 0xbf, 0x13, 0x95, 0xa6, 0x7b, + 0xfd, 0x09, 0x4c, 0xfa, 0x8f, 0xfc, 0x92, 0x76, 0x9e, 0x8f, 0xe6, 0x1b, + 0x4c, 0xa9, 0x63, 0x96, 0xb0, 0x11, 0x88, 0x3c, 0xf8, 0x50, 0x01, 0x4f, + 0x2b, 0x61, 0x01, 0xa9, 0xe8, 0x80, 0xbe, 0xaa, 0x54, 0x39, 0x21, 0x0b, + 0xdb, 0xe9, 0xec, 0xcf, 0xc6, 0x85, 0xb1, 0x3a, 0x09, 0x2d, 0x3a, 0x7e, + 0x7c, 0x78, 0x44, 0x44, 0x9b, 0x34, 0x57, 0x23, 0x32, 0xb1, 0x23, 0xd3, + 0xeb, 0x18, 0x5c, 0x73, 0x29, 0xe7, 0x78, 0x5d, 0xe1, 0x91, 0x4b, 0xa5, + 0x69, 0x96, 0x98, 0x97, 0xfc, 0x1d, 0x9f, 0x06, 0x69, 0x73, 0x34, 0xc1, + 0x0d, 0x72, 0x05, 0x03, 0x40, 0x00, 0x7a, 0x2f, 0x2d, 0x1d, 0x7a, 0x5a, + 0xb6, 0xb2, 0xab, 0xbe, 0x6f, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xd6, + 0x70, 0x6d, 0xc3, 0x13, 0xfb, 0x1b, 0x72, 0x61, 0x8d, 0xf8, 0x32, 0x64, + 0xa2, 0x6e, 0x18, 0x94, 0xfd, 0x14, 0x6f, 0x7d, 0xeb, 0x82, 0x0f, 0xb6, + 0x9f, 0x81, 0xa1, 0xa1, 0xb8, 0x59, 0xf9, 0x1d, 0x0e, 0x6d, 0xea, 0x35, + 0x2c, 0xf4, 0x7b, 0x6a, 0x5e, 0xe9, 0xbc, 0xb9, 0xdc, 0x55, 0x83, 0xac, + 0xa3, 0x94, 0x5c, 0x30, 0x78, 0xa2, 0x2b, 0x2c, 0xc7, 0x62, 0xbe, 0x77, + 0xdd, 0xbe, 0x77, 0xa3, 0xac, 0xfb, 0x2f, 0x2f, 0xa4, 0x97, 0xd3, 0xed, + 0xab, 0xcb, 0x3a, 0xfd, 0x99, 0x6c, 0xf4, 0x7a, 0xa7, 0x6d, 0xa6, 0x4b, + 0xab, 0x4b, 0xc8, 0xb4, 0xf2, 0x6a, 0xff, 0x5e, 0xee, 0x5b, 0xa1, 0xca, + 0xa4, 0x64, 0x55, 0x98, 0x18, 0x53, 0x4c, 0x14, 0xa7, 0x06, 0x74, 0x00, + 0x08, 0xca, 0x85, 0x28, 0x68, 0x35, 0x88, 0x80, 0x0c, 0x09, 0x41, 0x38, + 0xc1, 0xd0, 0x32, 0x4c, 0x6b, 0x74, 0x88, 0xfc, 0x0c, 0x9f, 0x4c, 0x3b, + 0x42, 0x00, 0xc0, 0xf8, 0x25, 0x0c, 0x07, 0x41, 0x4c, 0xc0, 0x04, 0x07, + 0x0c, 0x08, 0x00, 0x7c, 0xc1, 0xa8, 0x14, 0x4c, 0x22, 0x42, 0x18, 0xc6, + 0x28, 0x96, 0xcd, 0x95, 0x56, 0x6d, 0xcc, 0x40, 0x20, 0x6e, 0xcc, 0x0d, + 0x10, 0x21, 0x8c, 0x05, 0xa0, 0x0b, 0xcc, 0x01, 0xf0, 0x03, 0x8b, 0x7a, + 0x60, 0x03, 0x80, 0xf8, 0x4c, 0x00, 0xa3, 0x9e, 0x38, 0x03, 0xb0, 0x40, + 0x09, 0xb0, 0x2c, 0x72, 0x37, 0x00, 0x89, 0x00, 0x00, 0x3c, 0x0c, 0x8a, + 0x2c, 0x28, 0x88, 0xb0, 0x02, 0x54, 0xc9, 0xa2, 0xbd, 0x59, 0x73, 0x02, + 0x30, 0x03, 0x00, 0x4a, 0x42, 0xa8, 0xcc, 0xaa, 0xde, 0x9a, 0x30, 0x20, + 0x0f, 0xc1, 0x77, 0x08, 0xd4, 0x35, 0x50, 0xfe, 0x6e, 0xa0, 0x64, 0xda, + 0x19, 0xd2, 0xb4, 0xf8, 0x49, 0xdc, 0xe9, 0x0d, 0x54, 0xe0, 0xf1, 0x50, + 0xc8, 0xbe, 0xeb, 0x70, 0x2f, 0xdb, 0x19, 0x6b, 0x17, 0x78, 0xcd, 0xa6, + 0xbd, 0x67, 0xce, 0xad, 0x9b, 0xeb, 0x7f, 0x5f, 0xff, 0x78, 0xf8, 0xd7, + 0xaf, 0xdf, 0xff, 0xfc, 0x63, 0x3f, 0xff, 0x6d, 0x7f, 0xaf, 0x08, 0xdd, + 0xbb, 0xa9, 0x1c, 0xcf, 0x17, 0x29, 0x65, 0x9d, 0xea, 0xfd, 0xe5, 0xdb, + 0x24, 0x46, 0x74, 0x0f, 0x3a, 0x84, 0xde, 0x2a, 0xb5, 0x8d, 0xc1, 0x98, + 0xab, 0x43, 0x00, 0xcd, 0x4e, 0xdd, 0xdc, 0xba, 0xbc, 0x72, 0xdd, 0xbb, + 0x94, 0x00, 0x64, 0x51, 0x27, 0x88, 0x3b, 0x80, 0x13, 0x38, 0x25, 0x07, + 0xb9, 0xcb, 0x45, 0xbe, 0xb2, 0x93, 0x17, 0x90, 0xa6, 0x6f, 0x55, 0x3a, + 0xe3, 0x27, 0x05, 0x9a, 0xdc, 0x38, 0xe6, 0x71, 0xda, 0xa5, 0x12, 0xe8, + 0xb7, 0x2e, 0x51, 0x9b, 0x17, 0x0f, 0x5b, 0xdc, 0xf6, 0x9f, 0x63, 0x91, + 0x7a, 0x96, 0x97, 0xf1, 0xb2, 0xad, 0x2d, 0x29, 0x69, 0x7e, 0x58, 0xb5, + 0x5d, 0xc1, 0xca, 0x39, 0x2a, 0x0c, 0x9a, 0x2b, 0xf7, 0x77, 0x41, 0xee, + 0x53, 0xa2, 0x5d, 0x59, 0x2d, 0xb9, 0x3c, 0x0d, 0x1c, 0x8f, 0x2e, 0x72, + 0xcc, 0xf4, 0x32, 0xb8, 0x1d, 0x4d, 0x2e, 0x35, 0x84, 0x4b, 0x56, 0x3e, + 0x84, 0x00, 0xfc, 0x89, 0x24, 0xf5, 0x24, 0x60, 0x82, 0xc0, 0xb4, 0x3a, + 0x11, 0x05, 0x01, 0xf6, 0x10, 0x81, 0xc0, 0xe4, 0x19, 0x4c, 0x41, 0x4d, + 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x90, 0x0c, 0x07, 0x50, 0x1a, 0x0c, 0x0f, 0x80, 0x2d, 0xcc, 0x39, + 0xb3, 0x00, 0x0e, 0x06, 0xf0, 0x7f, 0xcc, 0x20, 0x50, 0x14, 0x8c, 0x0b, + 0x60, 0x67, 0x4c, 0x0a, 0x90, 0x39, 0x0c, 0x04, 0x80, 0x1e, 0xcc, 0x06, + 0x10, 0x14, 0x8c, 0x09, 0x30, 0x1a, 0x0c, 0x13, 0xc0, 0x2a, 0xcc, 0x34, + 0x30, 0x57, 0x8f, 0x1f, 0x24, 0x60, 0x8c, 0x9f, 0xb0, 0x60, 0x8c, 0x22, + 0xc0, 0x19, 0xcf, 0xcc, 0x28, 0xe0, 0x01, 0x0d, 0x1c, 0x24, 0xd8, 0x65, + 0x4d, 0x28, 0x10, 0x64, 0x04, 0x57, 0x70, 0xcc, 0xc3, 0xdb, 0xb3, 0xaa, + 0x4c, 0x24, 0x02, 0x26, 0x06, 0xcb, 0x12, 0x41, 0xa5, 0x23, 0x19, 0x2e, + 0xcb, 0xc6, 0xb0, 0x12, 0xca, 0xac, 0x30, 0xd0, 0x56, 0x86, 0x98, 0x20, + 0x79, 0x63, 0x7f, 0x38, 0xdc, 0x95, 0x66, 0x15, 0xdb, 0x4f, 0xaf, 0x17, + 0xfa, 0xcd, 0xbe, 0x39, 0x47, 0x33, 0xb1, 0x08, 0xb5, 0xf4, 0x36, 0xa8, + 0x2b, 0x11, 0x04, 0x77, 0x32, 0x98, 0x7b, 0x99, 0x48, 0xa2, 0xaf, 0x18, + 0x67, 0x32, 0x30, 0x9a, 0xbc, 0xe3, 0x74, 0x82, 0x12, 0x66, 0x42, 0xc5, + 0xcc, 0xea, 0x6b, 0xa1, 0xd1, 0xd1, 0xce, 0xd8, 0x7d, 0xe5, 0x64, 0x51, + 0xed, 0x22, 0xee, 0xcf, 0x69, 0x6f, 0x2a, 0x34, 0xbb, 0x3b, 0x15, 0xdd, + 0x14, 0xf2, 0x23, 0xba, 0x64, 0x3b, 0xa3, 0xba, 0x3d, 0xf2, 0x51, 0xe6, + 0x66, 0x59, 0x53, 0x2a, 0xc5, 0x29, 0x4d, 0xa8, 0xa5, 0x51, 0x21, 0xb1, + 0x72, 0xb8, 0x90, 0x74, 0x3e, 0x2e, 0x03, 0x60, 0x99, 0x95, 0xce, 0x53, + 0x57, 0xce, 0xbd, 0x06, 0x1c, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd6, + 0x7f, 0x70, 0x43, 0x0b, 0xfb, 0x2b, 0x70, 0x69, 0x0d, 0xf8, 0x10, 0x64, + 0x68, 0x6e, 0x1b, 0x99, 0xc1, 0x0c, 0x4f, 0xf1, 0x6d, 0xc1, 0xf9, 0xb8, + 0x1f, 0xc5, 0x81, 0xa1, 0xb8, 0xd7, 0x3b, 0x24, 0xa4, 0x42, 0x45, 0x70, + 0x8f, 0x7a, 0xe7, 0xbf, 0x63, 0x9f, 0x9c, 0x35, 0x2e, 0xfa, 0x4e, 0xfb, + 0xfe, 0x7a, 0x2c, 0xc5, 0x4c, 0xed, 0x5f, 0xf5, 0xa7, 0x9a, 0xd0, 0xdc, + 0xc7, 0x5f, 0x33, 0xbb, 0x73, 0x75, 0xff, 0x15, 0xf3, 0x17, 0xac, 0x47, + 0x57, 0x6f, 0x3f, 0x3d, 0x32, 0xd5, 0xa5, 0xc3, 0x37, 0xbc, 0xce, 0xdc, + 0xda, 0x7f, 0xfa, 0x4a, 0x4b, 0x7c, 0xff, 0x51, 0x1f, 0x3d, 0xf1, 0xf3, + 0x71, 0x6f, 0xb5, 0x7f, 0xdc, 0xc4, 0xd4, 0x43, 0xbc, 0x56, 0x64, 0xd9, + 0xe3, 0x14, 0xd2, 0xc9, 0x7c, 0xf8, 0x63, 0x46, 0x84, 0x26, 0xca, 0x8b, + 0x58, 0x72, 0x97, 0x18, 0x0c, 0xa0, 0x08, 0x18, 0x1d, 0x40, 0x24, 0x18, + 0x72, 0x63, 0x2c, 0x9c, 0x1b, 0xe0, 0xcf, 0x18, 0x40, 0xa0, 0x15, 0x98, + 0x17, 0x80, 0xc3, 0x18, 0x04, 0x80, 0x5d, 0x98, 0x0a, 0x00, 0x3b, 0x18, + 0x01, 0x60, 0x30, 0x98, 0x07, 0x00, 0x0e, 0x98, 0x22, 0x60, 0x3b, 0x98, + 0x63, 0xc1, 0x02, 0x1e, 0x19, 0xac, 0xcb, 0x19, 0x32, 0xc0, 0xf1, 0x18, + 0x3f, 0x60, 0x43, 0x9b, 0xc0, 0x94, 0x68, 0xb2, 0x29, 0x94, 0x88, 0x06, + 0x4c, 0x4c, 0x98, 0xdc, 0x3e, 0x80, 0x00, 0xaa, 0xd0, 0xd5, 0xa0, 0xb5, + 0xec, 0xc6, 0x63, 0x09, 0x14, 0x61, 0x30, 0x40, 0x0d, 0x7e, 0x3c, 0x2a, + 0x55, 0xa0, 0x50, 0x34, 0x25, 0xbe, 0x2f, 0xf3, 0x11, 0x42, 0x69, 0x84, + 0xd5, 0xe0, 0x60, 0x8c, 0x35, 0x29, 0x7b, 0xba, 0xfb, 0x94, 0x03, 0x66, + 0x1f, 0x04, 0xf9, 0xca, 0x6e, 0x25, 0xda, 0x55, 0x00, 0xad, 0xee, 0xd4, + 0x87, 0xd6, 0x7f, 0x37, 0x19, 0xf6, 0x1b, 0x8e, 0x5a, 0x52, 0x31, 0x4d, + 0x67, 0x41, 0xf1, 0xdc, 0x6f, 0x0e, 0xe2, 0x7d, 0xf5, 0x1a, 0xf5, 0x2f, + 0xdd, 0xb2, 0xdd, 0x12, 0x5c, 0xde, 0xdc, 0xd7, 0x6d, 0x65, 0x55, 0xbb, + 0x8d, 0xae, 0x6d, 0x4f, 0x70, 0x71, 0x69, 0xbf, 0x8f, 0xa7, 0x55, 0xb6, + 0x63, 0xbe, 0xf9, 0xe9, 0xf5, 0x55, 0x51, 0x71, 0x77, 0xde, 0xde, 0x3d, + 0xb5, 0xb7, 0x8d, 0x9c, 0xba, 0x9b, 0x13, 0x17, 0x57, 0xb9, 0x97, 0x0d, + 0x8e, 0x67, 0xaa, 0x8d, 0x34, 0x37, 0xbe, 0x1d, 0xb5, 0xa7, 0x54, 0xa8, + 0x38, 0xf8, 0x94, 0x10, 0xb2, 0x41, 0xb0, 0x82, 0x76, 0xea, 0xc5, 0xa2, + 0x55, 0xa7, 0xf1, 0x9f, 0xb9, 0x66, 0x6e, 0xd7, 0xd0, 0xf4, 0x4e, 0xa4, + 0x50, 0x20, 0x96, 0xa6, 0x42, 0x1c, 0x1a, 0x02, 0x82, 0xb9, 0xab, 0x29, + 0x34, 0xa6, 0x21, 0x68, 0x11, 0x36, 0x4a, 0x42, 0x08, 0x7e, 0x47, 0x12, + 0xb7, 0xb3, 0x50, 0xf7, 0x79, 0xa7, 0xda, 0xb8, 0xbc, 0x6d, 0x6d, 0x1a, + 0xa5, 0xfb, 0x5f, 0xb9, 0xed, 0x2e, 0x83, 0x6e, 0xbf, 0xb9, 0xbb, 0xb8, + 0xba, 0x9e, 0x17, 0xee, 0x5f, 0x8e, 0xda, 0x78, 0x45, 0xe2, 0xf2, 0x25, + 0x99, 0x56, 0x62, 0xde, 0x1e, 0xe1, 0xd7, 0x14, 0x87, 0xda, 0xa3, 0xe1, + 0xaa, 0xa6, 0xb9, 0xd6, 0x3a, 0x87, 0x87, 0x1d, 0x63, 0x6f, 0xca, 0xb4, + 0xa6, 0xbb, 0xc7, 0x07, 0x25, 0x34, 0x8b, 0x8e, 0x11, 0x45, 0x85, 0x2c, + 0xb3, 0x90, 0x40, 0x1e, 0x21, 0x9c, 0x2e, 0x0e, 0x97, 0x74, 0x74, 0x1e, + 0x19, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x06, 0x00, 0x03, 0x00, 0x4c, 0x04, 0x53, 0x02, 0x98, 0x11, 0x63, + 0x0b, 0x6d, 0x1d, 0x33, 0x6b, 0xb4, 0x3d, 0x03, 0x06, 0x6c, 0x0d, 0x13, + 0x01, 0xd0, 0x0d, 0x73, 0x02, 0x14, 0x01, 0xe3, 0x00, 0xc4, 0x01, 0xd1, + 0x20, 0x0e, 0x4c, 0x03, 0x70, 0x1c, 0x4c, 0x0b, 0x60, 0x59, 0x0c, 0x26, + 0x31, 0x73, 0x4e, 0x60, 0x2c, 0x6f, 0x4c, 0x7d, 0xf0, 0xe0, 0xcc, 0x1c, + 0xe0, 0x48, 0x8f, 0x0e, 0x74, 0xdc, 0x95, 0x8d, 0x1d, 0x4c, 0xc2, 0x94, + 0x8c, 0x64, 0x58, 0x2e, 0x02, 0x60, 0x2d, 0x80, 0x3e, 0xb6, 0x5d, 0x0f, + 0x91, 0x00, 0x02, 0x88, 0x45, 0x20, 0xcc, 0xf6, 0x01, 0x54, 0x63, 0xc4, + 0x00, 0x74, 0x0c, 0xfd, 0x09, 0x35, 0x1c, 0x73, 0x3a, 0x35, 0x0e, 0x73, + 0x68, 0x12, 0xf9, 0x17, 0x53, 0xfd, 0x66, 0xd0, 0x44, 0x19, 0x3f, 0x62, + 0x33, 0xf8, 0xcd, 0x2f, 0x1d, 0xe9, 0xb2, 0xcb, 0x2e, 0xb4, 0xdc, 0x39, + 0x43, 0x66, 0x47, 0x08, 0xd0, 0xa1, 0xad, 0xaa, 0x96, 0xaa, 0x5d, 0xaa, + 0x1a, 0xc4, 0x11, 0xd1, 0xef, 0x27, 0xf0, 0x89, 0x35, 0x56, 0x22, 0x25, + 0x32, 0x5c, 0xd3, 0xd2, 0xd4, 0xdf, 0xc6, 0xfd, 0xdc, 0xcc, 0x9c, 0x8f, + 0x09, 0x56, 0xca, 0xb3, 0x1a, 0x1e, 0xb1, 0x47, 0x4c, 0x5d, 0xf7, 0xcc, + 0x8c, 0x96, 0x4b, 0x5b, 0xa9, 0xaf, 0x6b, 0xae, 0xeb, 0xdf, 0x86, 0xef, + 0xe3, 0xae, 0xa2, 0x6a, 0x6e, 0x34, 0x8e, 0x66, 0x27, 0xaa, 0xda, 0x5a, + 0x92, 0xc8, 0x76, 0x1f, 0x75, 0x88, 0x09, 0x33, 0x26, 0x0c, 0x01, 0xc6, + 0x88, 0x00, 0x1b, 0x25, 0x2b, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xc6, + 0xa8, 0x70, 0x43, 0x13, 0xfb, 0x43, 0x70, 0x5c, 0x2e, 0x08, 0x43, 0x34, + 0x45, 0x6e, 0x15, 0x40, 0xfd, 0x1c, 0x6f, 0x7d, 0xeb, 0x82, 0x0a, 0xb7, + 0x5f, 0x85, 0x91, 0xa1, 0xb8, 0xa2, 0x7c, 0xc9, 0x14, 0x54, 0xee, 0xb6, + 0x99, 0x1b, 0x5f, 0x22, 0x5f, 0xd5, 0x7e, 0xbd, 0x43, 0xab, 0xb9, 0x1d, + 0x18, 0x72, 0x19, 0x88, 0xa4, 0x53, 0x0c, 0x3b, 0x3b, 0x18, 0xee, 0xe5, + 0x70, 0xf3, 0xb1, 0xe6, 0xba, 0x23, 0xbd, 0xde, 0x66, 0x6c, 0x8e, 0x92, + 0x72, 0xbd, 0xd5, 0x11, 0x91, 0xcf, 0x74, 0xad, 0xf6, 0xba, 0xdd, 0x7d, + 0x2e, 0x8d, 0xfd, 0xbe, 0xfb, 0x75, 0x5f, 0xff, 0xf6, 0xf6, 0xeb, 0xf2, + 0x6d, 0xb1, 0x0f, 0x44, 0x2b, 0x90, 0x81, 0x44, 0x57, 0x89, 0x0e, 0x3c, + 0x48, 0x8a, 0x71, 0x62, 0x88, 0x06, 0x61, 0xf6, 0x8d, 0x00, 0x0c, 0x01, + 0xb0, 0x20, 0x39, 0x18, 0x38, 0xc2, 0x89, 0xa9, 0xb8, 0xd5, 0x18, 0x18, + 0x82, 0x49, 0x80, 0x50, 0x1a, 0x21, 0x2c, 0x1c, 0x07, 0x80, 0xe0, 0x36, + 0x30, 0x01, 0x03, 0x02, 0xc0, 0x4d, 0x98, 0x14, 0x13, 0x21, 0x8c, 0x1e, + 0xae, 0xe1, 0x82, 0x8c, 0x0a, 0x71, 0x80, 0x52, 0x03, 0x99, 0x80, 0x18, + 0x01, 0x81, 0x80, 0x02, 0x00, 0x88, 0x00, 0x00, 0x22, 0x40, 0x0c, 0x3a, + 0xde, 0x33, 0x72, 0x80, 0x25, 0xa4, 0x75, 0x31, 0x8a, 0xa6, 0x28, 0x70, + 0x18, 0x8d, 0x45, 0x08, 0x8c, 0x00, 0x00, 0x03, 0x19, 0x73, 0x05, 0x07, + 0x00, 0x16, 0x98, 0x50, 0x10, 0xa0, 0x05, 0x4d, 0x7b, 0x1c, 0xfb, 0xf0, + 0x69, 0x8a, 0xf1, 0x5a, 0x17, 0x49, 0x74, 0x4a, 0x36, 0xd0, 0x04, 0xcb, + 0x51, 0x1a, 0x15, 0x77, 0x27, 0xcf, 0x2f, 0x05, 0xc2, 0x90, 0x94, 0x18, + 0x6a, 0x2f, 0x31, 0xdd, 0xc9, 0x3c, 0x8a, 0xda, 0xe2, 0x04, 0xdb, 0xff, + 0xd3, 0xef, 0x76, 0xb5, 0x37, 0x8c, 0xff, 0xeb, 0xfd, 0xa2, 0xef, 0xff, + 0x8f, 0xfe, 0xff, 0xd6, 0x3f, 0xdf, 0xae, 0x3d, 0x7e, 0xa0, 0xeb, 0x25, + 0x4f, 0xff, 0x4f, 0xff, 0xff, 0xfe, 0x89, 0xf4, 0x88, 0x07, 0x43, 0xd4, + 0x96, 0xef, 0x56, 0x96, 0xcb, 0xab, 0x52, 0xc6, 0x37, 0x49, 0x66, 0xf6, + 0x61, 0x81, 0x09, 0xa3, 0xca, 0x74, 0x84, 0x2d, 0x82, 0x0a, 0xa1, 0x87, + 0x6a, 0x1e, 0xca, 0x13, 0x54, 0xa2, 0x4a, 0x8a, 0x17, 0x58, 0x83, 0x10, + 0x61, 0x22, 0x9b, 0x14, 0xa5, 0x5c, 0x45, 0x6e, 0x90, 0xf3, 0xea, 0xb7, + 0x48, 0xb0, 0x97, 0xcd, 0x45, 0xf1, 0xa1, 0x57, 0xc3, 0xa4, 0x75, 0x30, + 0x32, 0xa1, 0x79, 0xd6, 0xf7, 0x5b, 0x6b, 0xeb, 0x63, 0xb8, 0xfe, 0xdc, + 0x98, 0xab, 0x2b, 0x3c, 0xb2, 0xd8, 0xdb, 0x62, 0x0e, 0xaa, 0x3e, 0xaf, + 0x6d, 0x6d, 0xe8, 0xaa, 0x7d, 0x66, 0x87, 0x44, 0xa2, 0xc4, 0x59, 0x43, + 0x75, 0x61, 0xf2, 0xd1, 0x0d, 0xb5, 0xc2, 0x76, 0x45, 0xc4, 0x2d, 0xa8, + 0x89, 0x72, 0x2b, 0x20, 0xe4, 0x07, 0x02, 0x27, 0x27, 0x83, 0x82, 0xa8, + 0x21, 0x1a, 0x26, 0x0e, 0x41, 0xa8, 0x65, 0x31, 0x05, 0x35, 0x14, 0xcc, + 0xb8, 0xe4, 0xe0, 0xb8, 0xca, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x46, 0x5d, 0x10, 0x00, 0xc0, 0x50, 0x0b, 0xcc, 0x04, 0x42, 0x48, + 0xc1, 0x2a, 0x75, 0xcc, 0xbb, 0x07, 0xd8, 0xc0, 0xa0, 0x13, 0xc1, 0xa0, + 0x78, 0x01, 0x04, 0x73, 0x00, 0x90, 0x20, 0x30, 0x0a, 0x01, 0xd3, 0x02, + 0x60, 0x49, 0x26, 0x04, 0x08, 0xc0, 0x8c, 0x04, 0x8c, 0xc5, 0x75, 0x5e, + 0xa4, 0xc2, 0xb2, 0x07, 0xf4, 0xc1, 0x6d, 0x00, 0xfc, 0x50, 0x03, 0xf1, + 0xe0, 0x1b, 0x80, 0xc0, 0x00, 0x18, 0x02, 0x20, 0x10, 0x83, 0x00, 0x0b, + 0x05, 0x00, 0x1e, 0x01, 0x00, 0x8c, 0x78, 0x09, 0x64, 0xc7, 0x8b, 0xb8, + 0xce, 0xb0, 0xc0, 0x04, 0x00, 0x40, 0x0c, 0x50, 0x1e, 0x5b, 0x74, 0x37, + 0xbe, 0xe8, 0x21, 0x31, 0x31, 0x11, 0xec, 0xfa, 0x41, 0x32, 0x52, 0x4e, + 0x43, 0x10, 0xe3, 0xfa, 0xec, 0x32, 0xf7, 0x8d, 0x96, 0x3b, 0x8e, 0x23, + 0x38, 0x71, 0x21, 0x85, 0x9b, 0x28, 0x72, 0x15, 0xb1, 0xac, 0x3b, 0x8e, + 0x0c, 0xdc, 0xae, 0x1f, 0x71, 0x1d, 0xc8, 0xc3, 0xf2, 0xfb, 0xc6, 0xde, + 0xb7, 0x7e, 0x1f, 0x9c, 0x9b, 0x95, 0xbb, 0x70, 0xfc, 0xbf, 0x2c, 0xb9, + 0x5e, 0xdd, 0x79, 0x57, 0x7b, 0xcc, 0x30, 0xfc, 0xb0, 0xb0, 0x17, 0x73, + 0x04, 0x8e, 0x5d, 0x2e, 0xb3, 0xee, 0xea, 0xff, 0xff, 0xff, 0xff, 0xdb, + 0xdd, 0xe9, 0x00, 0xc8, 0xc9, 0x00, 0x03, 0x92, 0x75, 0x23, 0x33, 0xa9, + 0x3a, 0xdd, 0xd9, 0xd0, 0x7b, 0xab, 0x32, 0xeb, 0x63, 0x7c, 0x8c, 0xdd, + 0x7f, 0x3d, 0x77, 0x5b, 0xa9, 0x5a, 0x0c, 0xee, 0xc6, 0x19, 0x18, 0x04, + 0xc2, 0x51, 0xd4, 0xe0, 0xcc, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xd5, + 0xa8, 0x2f, 0x46, 0x9b, 0xdf, 0xc2, 0x60, 0x57, 0x6d, 0xa8, 0x53, 0x40, + 0x42, 0x6e, 0x67, 0xe9, 0xc0, 0xfc, 0x0f, 0xf5, 0xed, 0xc1, 0xfa, 0xb7, + 0xa0, 0x8c, 0xf4, 0xa1, 0xb8, 0x1c, 0x71, 0x4a, 0xc4, 0x43, 0x32, 0x2e, + 0x44, 0x5b, 0x98, 0xe6, 0xf7, 0xdd, 0x91, 0x2e, 0xea, 0x99, 0x2d, 0xa7, + 0xa3, 0xd9, 0xf3, 0x23, 0x56, 0xdf, 0x77, 0xd6, 0xdf, 0xff, 0xfa, 0x5a, + 0x94, 0x6e, 0xdf, 0xf4, 0xe9, 0x22, 0xbb, 0x67, 0x55, 0xa1, 0x9d, 0x24, + 0x3b, 0xab, 0xb8, 0x28, 0x71, 0x06, 0x0c, 0x10, 0x3c, 0xe6, 0x11, 0xe8, + 0x7f, 0xc6, 0x38, 0x97, 0x52, 0x27, 0xf0, 0x81, 0x8d, 0xc6, 0x1f, 0xe0, + 0x5f, 0xa6, 0x03, 0x38, 0x1e, 0xe6, 0x0b, 0x70, 0x05, 0xc6, 0x05, 0xb0, + 0x48, 0x66, 0x0a, 0xd0, 0x30, 0xa6, 0x1b, 0x78, 0x61, 0xc6, 0x01, 0xd8, + 0xad, 0x46, 0x71, 0x49, 0xb9, 0x86, 0x37, 0x05, 0x73, 0x06, 0xaf, 0xa8, + 0xbb, 0xe6, 0x40, 0x90, 0x3b, 0xa6, 0x6c, 0xd7, 0x67, 0xa0, 0x29, 0xa6, + 0x5f, 0x3e, 0x66, 0x7b, 0x93, 0xe6, 0x0e, 0x96, 0xc6, 0x36, 0x84, 0x06, + 0x13, 0x81, 0xe6, 0x25, 0x0f, 0x26, 0x44, 0x0e, 0x66, 0x32, 0x0c, 0xe6, + 0x34, 0x0a, 0x26, 0x13, 0x0a, 0xa6, 0x4a, 0xa2, 0x06, 0xa3, 0x9f, 0xc6, + 0x43, 0x83, 0x06, 0x01, 0x02, 0xa6, 0x0c, 0x04, 0x66, 0x16, 0x04, 0xe6, + 0x0d, 0x01, 0xa6, 0x0a, 0x03, 0xe0, 0xa0, 0xc4, 0xc0, 0xc1, 0x04, 0xc7, + 0x82, 0x34, 0xc6, 0xc0, 0xe4, 0xc0, 0x80, 0x14, 0xc0, 0x80, 0x1c, 0x04, + 0x04, 0xa3, 0x8c, 0x7a, 0x02, 0x2f, 0xa9, 0x80, 0x80, 0x29, 0x6c, 0x51, + 0x45, 0x13, 0x56, 0x2b, 0x3a, 0x52, 0xa2, 0xe5, 0x29, 0xab, 0x05, 0x7b, + 0x5d, 0xa4, 0xae, 0x53, 0x66, 0x24, 0xcb, 0x9f, 0x6a, 0xaa, 0x62, 0x74, + 0x2b, 0xc5, 0x88, 0xe2, 0x4f, 0x2e, 0xc9, 0x6a, 0x79, 0x0e, 0x3a, 0x94, + 0x4c, 0xed, 0xa5, 0xf4, 0xd1, 0x54, 0xc2, 0x6a, 0x6d, 0x6b, 0x4a, 0x32, + 0xc2, 0x79, 0x0e, 0x33, 0x5c, 0xcd, 0xee, 0x04, 0xa6, 0x24, 0x8f, 0xe1, + 0x9d, 0x29, 0x17, 0x1b, 0xcc, 0xe2, 0xf6, 0xcd, 0x69, 0xdd, 0xb5, 0xb8, + 0x43, 0x6c, 0x8c, 0xa0, 0x89, 0x07, 0xca, 0xa8, 0x56, 0x3e, 0xb4, 0x46, + 0x44, 0x7b, 0x1b, 0x5d, 0x1a, 0xee, 0xf7, 0x6f, 0xba, 0xbd, 0x56, 0xc7, + 0xbf, 0x34, 0xf3, 0x29, 0xed, 0x33, 0xc8, 0x35, 0x60, 0xb3, 0xb7, 0xf2, + 0xbd, 0x8c, 0xa7, 0x95, 0xeb, 0xe6, 0x45, 0xf7, 0x0d, 0x36, 0x40, 0x71, + 0xdc, 0x56, 0xba, 0x62, 0x3a, 0xd3, 0xc6, 0xc7, 0xb1, 0x9b, 0xd8, 0xe7, + 0x75, 0x16, 0xfa, 0x88, 0xc2, 0xca, 0xff, 0x18, 0x8a, 0xd2, 0xc1, 0x3f, + 0x5c, 0x35, 0x9f, 0xd8, 0x6f, 0x7c, 0xc5, 0x96, 0x3a, 0xc1, 0x7f, 0x64, + 0xe5, 0x56, 0xd3, 0xe5, 0xf6, 0x87, 0x72, 0x62, 0x2b, 0x39, 0x86, 0xf9, + 0xd0, 0x1b, 0x50, 0x56, 0x33, 0x62, 0x4b, 0x37, 0xd6, 0xb0, 0xb3, 0xa6, + 0xcb, 0xe6, 0xf9, 0xf2, 0x31, 0xba, 0x87, 0xff, 0x33, 0xfa, 0xf9, 0x5e, + 0xb2, 0xb2, 0x5b, 0x2a, 0xe2, 0x34, 0x05, 0xd8, 0x6c, 0xfd, 0x03, 0xc2, + 0x30, 0x5a, 0x09, 0x71, 0xe8, 0x93, 0x00, 0xc4, 0x26, 0x80, 0x9a, 0x10, + 0xc3, 0xd3, 0x04, 0x50, 0xe8, 0x30, 0xe7, 0x8d, 0x0b, 0x40, 0x35, 0x1f, + 0x23, 0x89, 0x27, 0xb2, 0xae, 0x87, 0xbd, 0x39, 0xe9, 0xcf, 0x5f, 0x1d, + 0x22, 0x4d, 0xaf, 0x35, 0xf0, 0xb5, 0xdf, 0xc4, 0xac, 0x71, 0x7a, 0xf5, + 0xca, 0x5c, 0xb4, 0xcf, 0xac, 0x47, 0xdd, 0x24, 0x71, 0x17, 0x4c, 0xeb, + 0x72, 0x92, 0xff, 0xc4, 0x43, 0xeb, 0x0f, 0xa7, 0x55, 0xce, 0xff, 0xcf, + 0xc5, 0xf2, 0x9d, 0xed, 0xcb, 0x6a, 0xd4, 0xae, 0xa3, 0x49, 0x91, 0x82, + 0xa8, 0x7b, 0x0a, 0x0c, 0x36, 0xd6, 0xc5, 0x13, 0x10, 0x53, 0x51, 0x4c, + 0xcb, 0x8e, 0x4e, 0x0b, 0x8c, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x38, 0x00, 0xe7, 0x30, 0x74, 0x41, 0x98, 0x31, 0x98, 0x16, + 0xfb, 0x3e, 0x40, 0x84, 0xa0, 0x30, 0xe7, 0x80, 0xf9, 0x30, 0x56, 0x40, + 0xc4, 0x30, 0x2d, 0x80, 0x79, 0x30, 0x1a, 0x40, 0x4c, 0x30, 0x16, 0x80, + 0x03, 0x42, 0xc3, 0x03, 0x24, 0x03, 0xe3, 0x08, 0xa8, 0x2a, 0xd3, 0x39, + 0xd4, 0x5b, 0xf3, 0x04, 0xf4, 0x10, 0x83, 0x02, 0xdc, 0x06, 0x33, 0xb8, + 0xc0, 0xdd, 0x9f, 0x34, 0x84, 0x0c, 0xb3, 0x00, 0x71, 0x75, 0xd1, 0x05, + 0xc5, 0x69, 0xa3, 0x53, 0xd6, 0x23, 0x76, 0xaf, 0x4d, 0xf3, 0x3e, 0xce, + 0x6b, 0x57, 0x75, 0x8d, 0x2d, 0xdc, 0xa7, 0xe8, 0x2c, 0x4e, 0x5d, 0x95, + 0xdb, 0x96, 0xd4, 0xb9, 0x23, 0xaf, 0x8f, 0x25, 0x57, 0xe9, 0xe5, 0xb8, + 0x5b, 0xce, 0xe2, 0x75, 0x0a, 0xc2, 0x95, 0x13, 0x6a, 0x0c, 0xb2, 0x66, + 0x37, 0xaa, 0x96, 0x9a, 0x29, 0xe2, 0xc9, 0x57, 0x5d, 0xc4, 0x73, 0x60, + 0x45, 0x38, 0xdc, 0x1e, 0x21, 0x7c, 0xfc, 0xe4, 0x82, 0x48, 0x62, 0xc5, + 0xb7, 0x6d, 0xc1, 0x79, 0x35, 0xbe, 0x34, 0xc6, 0xa3, 0xc5, 0xad, 0x06, + 0xaa, 0x7e, 0x09, 0xf9, 0x2d, 0x99, 0x1d, 0xee, 0x53, 0x16, 0x9a, 0xab, + 0x29, 0xa9, 0xca, 0x49, 0x46, 0x75, 0x15, 0x15, 0xc5, 0xb1, 0xa1, 0x1d, + 0x54, 0x53, 0x68, 0x8d, 0x59, 0xb4, 0xd3, 0xf5, 0xb8, 0x33, 0x55, 0x2c, + 0x49, 0x35, 0xd7, 0xc9, 0xd7, 0x4e, 0xda, 0x4d, 0x86, 0x65, 0x1c, 0x5a, + 0x5f, 0x55, 0x2e, 0x5d, 0x52, 0xc8, 0x92, 0x51, 0x1a, 0xe2, 0x62, 0x70, + 0xa8, 0x88, 0xba, 0xc8, 0x00, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd6, + 0xcd, 0x6f, 0xc0, 0x83, 0xfa, 0x4b, 0x70, 0x67, 0xed, 0xc8, 0x12, 0x3c, + 0x63, 0x6e, 0x1b, 0xa5, 0xc1, 0x02, 0x0f, 0xe9, 0x2d, 0xc1, 0xfb, 0x37, + 0x1f, 0xc9, 0x83, 0x21, 0xb8, 0x02, 0x3b, 0x1a, 0x5d, 0x32, 0x55, 0x99, + 0xde, 0xa3, 0x66, 0x0d, 0xe9, 0x5c, 0x11, 0xa1, 0xa5, 0x04, 0xea, 0xc6, + 0x91, 0x57, 0xa5, 0xc7, 0xe2, 0x98, 0xe5, 0xd4, 0x90, 0x18, 0xd8, 0x3a, + 0x67, 0xc0, 0xdb, 0xf3, 0x5c, 0x8b, 0x36, 0x2e, 0xe4, 0x72, 0xaf, 0x39, + 0x75, 0xa5, 0x08, 0xe3, 0xfa, 0x16, 0xe7, 0x1a, 0x7e, 0xbf, 0xe5, 0xc4, + 0x34, 0x9e, 0x7a, 0x17, 0x91, 0x15, 0xf9, 0x36, 0xdf, 0xef, 0x36, 0xbf, + 0x9e, 0xdf, 0xf9, 0x9c, 0x32, 0x23, 0xd0, 0xa9, 0x49, 0xd2, 0x33, 0x43, + 0x8f, 0x1c, 0xf2, 0x86, 0x45, 0xd8, 0x68, 0x0e, 0x83, 0xd2, 0x6e, 0x88, + 0xa8, 0xc2, 0x14, 0x2a, 0x28, 0x84, 0x09, 0x83, 0x08, 0x38, 0x53, 0x02, + 0xf0, 0x04, 0x13, 0x07, 0x2c, 0x05, 0xb3, 0x1a, 0x88, 0x9a, 0x63, 0xef, + 0x50, 0x21, 0x93, 0x0f, 0x08, 0x05, 0x43, 0x05, 0xac, 0x0a, 0x13, 0x02, + 0x78, 0x05, 0x43, 0x01, 0x7c, 0x04, 0xb3, 0x00, 0x30, 0x06, 0x83, 0x00, + 0x98, 0x06, 0x43, 0x02, 0x08, 0x04, 0x93, 0x06, 0x0c, 0x04, 0xe3, 0x46, + 0x10, 0x90, 0x33, 0x13, 0xc4, 0x0a, 0xa3, 0x03, 0xf0, 0x01, 0xb0, 0x5c, + 0x61, 0x2c, 0x86, 0x4c, 0x18, 0x15, 0x30, 0x18, 0x63, 0x75, 0x87, 0xd8, + 0x25, 0xb7, 0x82, 0x6e, 0x7a, 0x30, 0x3c, 0x12, 0x6e, 0x9f, 0x2e, 0x76, + 0x1d, 0xc7, 0x39, 0x46, 0xe9, 0x66, 0xb9, 0x5e, 0x5b, 0xdb, 0x33, 0xf7, + 0xad, 0x5d, 0xcb, 0x51, 0x2e, 0xeb, 0x0b, 0x94, 0x19, 0xc5, 0x27, 0x29, + 0xb5, 0xa4, 0xd3, 0x9d, 0x17, 0x9a, 0xa6, 0x92, 0x27, 0xde, 0xf8, 0xd5, + 0x3d, 0x46, 0x2d, 0x2a, 0x47, 0xbd, 0x29, 0xcf, 0x23, 0x32, 0x28, 0xa4, + 0x9f, 0x25, 0x21, 0x3f, 0x57, 0xce, 0x20, 0xbb, 0x4a, 0x4c, 0x4d, 0x78, + 0x26, 0xbe, 0x40, 0xba, 0x49, 0x26, 0xfb, 0x61, 0x54, 0x4a, 0x5a, 0x49, + 0x79, 0x26, 0x43, 0x09, 0xe3, 0xde, 0xa2, 0x26, 0x26, 0xd7, 0x8a, 0xf2, + 0x59, 0x38, 0xc7, 0x25, 0x6b, 0x9f, 0x85, 0x5d, 0x21, 0x85, 0x36, 0x9b, + 0xef, 0x11, 0xe6, 0x28, 0x95, 0x29, 0x1b, 0x60, 0xb4, 0x95, 0x9c, 0x25, + 0x07, 0xde, 0xdc, 0xf3, 0x29, 0x38, 0xb2, 0xd0, 0xa1, 0x2e, 0x29, 0xb2, + 0x81, 0xf2, 0x04, 0xda, 0x69, 0x74, 0x95, 0x70, 0x3c, 0x1a, 0x22, 0x19, + 0x20, 0xe7, 0x00, 0x2a, 0xc0, 0x1a, 0x88, 0xdd, 0x7e, 0x40, 0x52, 0x6a, + 0x79, 0xbb, 0x74, 0x3d, 0xa4, 0xa9, 0x63, 0x37, 0x7b, 0x66, 0xfd, 0xad, + 0x76, 0xfa, 0xd8, 0x9f, 0xa7, 0xd5, 0x5f, 0x48, 0xa9, 0xa3, 0xb5, 0xea, + 0xf9, 0xb6, 0x51, 0x01, 0x8a, 0x67, 0x55, 0xf9, 0xfa, 0xee, 0x75, 0x43, + 0x48, 0xfe, 0xd6, 0xc6, 0x2e, 0x62, 0xe7, 0x7f, 0x03, 0x6b, 0xbe, 0xbb, + 0x66, 0x88, 0x5d, 0x5e, 0x61, 0xa2, 0xc6, 0xd5, 0x70, 0x68, 0xf8, 0x97, + 0x8b, 0xe9, 0x29, 0xa5, 0x1e, 0x2a, 0x10, 0xef, 0xa6, 0x96, 0xf9, 0xea, + 0x92, 0xe1, 0x59, 0xf8, 0x8d, 0x6a, 0x36, 0x9b, 0x9b, 0x8e, 0xeb, 0x95, + 0xfe, 0x25, 0xc7, 0xa3, 0xa4, 0x66, 0x50, 0xd6, 0x66, 0xee, 0xea, 0x59, + 0x55, 0xc3, 0xf8, 0x0f, 0x84, 0x23, 0xd0, 0x44, 0x61, 0x11, 0x07, 0x16, + 0xc8, 0x0d, 0x41, 0x62, 0x0b, 0x88, 0xa3, 0x8b, 0x53, 0xc3, 0x69, 0x88, + 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x27, 0x05, 0xc6, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x20, 0x00, 0x8a, 0x30, 0x63, 0xc2, 0x3f, 0x31, 0x94, 0xa4, + 0x38, 0x3e, 0x69, 0x07, 0xa7, 0x30, 0xe9, 0x01, 0xaa, 0x30, 0x50, 0xc0, + 0x4f, 0x30, 0x31, 0x80, 0x26, 0x30, 0x12, 0xc0, 0x09, 0x30, 0x0c, 0x80, + 0x16, 0x30, 0x28, 0x00, 0x12, 0x30, 0x28, 0xc0, 0xa3, 0x30, 0x72, 0x02, + 0xb4, 0x34, 0x3b, 0xdd, 0xa6, 0x31, 0xad, 0x01, 0x54, 0x30, 0x56, 0x40, + 0x7d, 0x39, 0x03, 0xa3, 0x51, 0x25, 0x32, 0x82, 0x20, 0x08, 0xe8, 0x00, + 0x1d, 0x60, 0x21, 0x91, 0xe1, 0xcb, 0x8c, 0x62, 0x96, 0xfa, 0x8b, 0x24, + 0xfd, 0x34, 0x71, 0xf2, 0xa5, 0xb8, 0xfd, 0x5a, 0xb3, 0x18, 0xbb, 0x33, + 0x2f, 0xa7, 0xce, 0x92, 0xbd, 0x1c, 0xbf, 0xbc, 0x9a, 0xb1, 0x76, 0x3d, + 0x1b, 0x97, 0xc3, 0x56, 0x72, 0xee, 0x79, 0x65, 0x5a, 0x5e, 0x75, 0x0a, + 0x6d, 0x76, 0x27, 0xd4, 0x9a, 0x14, 0x33, 0x50, 0xdd, 0xb6, 0x63, 0x11, + 0xb1, 0xaa, 0x5b, 0x6d, 0x32, 0x99, 0xa3, 0xf0, 0x1b, 0xd6, 0x3b, 0x6c, + 0x5c, 0x90, 0x24, 0xa6, 0xea, 0xa9, 0xba, 0x51, 0x69, 0x5c, 0x5d, 0x1c, + 0x4f, 0x3e, 0xa9, 0x1b, 0x1d, 0x42, 0xce, 0x8a, 0xc4, 0x72, 0x96, 0xad, + 0x6b, 0xd3, 0x6b, 0x24, 0x8a, 0x8c, 0xa3, 0xab, 0xc6, 0xce, 0x13, 0x12, + 0xb3, 0x9a, 0xab, 0x0d, 0x6d, 0x20, 0x29, 0x19, 0x30, 0x86, 0x11, 0x5e, + 0x47, 0xb1, 0x76, 0x14, 0x82, 0x14, 0x33, 0xa7, 0x4c, 0xc1, 0x66, 0xc8, + 0x7d, 0x5e, 0xbf, 0x35, 0x94, 0xd7, 0x79, 0x2a, 0x6c, 0xd6, 0xa9, 0x8c, + 0xb5, 0x82, 0xa2, 0xe8, 0x30, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xf7, + 0x3a, 0x70, 0x40, 0x03, 0xfb, 0x4b, 0x70, 0x6c, 0x2e, 0x08, 0x11, 0x64, + 0x68, 0x6e, 0x1f, 0x2d, 0xc0, 0xfe, 0x0f, 0xed, 0x8d, 0xc1, 0xd3, 0xb8, + 0x20, 0x01, 0x91, 0x95, 0xb8, 0x54, 0x81, 0x09, 0x34, 0x0a, 0x23, 0x25, + 0x2c, 0x29, 0x1f, 0x07, 0xd8, 0x02, 0x33, 0x27, 0x6f, 0xd6, 0xdc, 0xb2, + 0xe4, 0xec, 0xc7, 0xcb, 0x37, 0xac, 0x6c, 0x27, 0xf7, 0x22, 0x68, 0x44, + 0x75, 0xff, 0x74, 0x4e, 0x90, 0x2d, 0x08, 0x8c, 0xec, 0x2a, 0x44, 0xae, + 0x7f, 0x25, 0xa5, 0x1f, 0x78, 0x5c, 0x75, 0xff, 0xdf, 0xe9, 0xc7, 0xff, + 0x5b, 0x54, 0x55, 0x45, 0x2b, 0xa7, 0x11, 0x4f, 0xdf, 0xf4, 0xde, 0xd3, + 0xa4, 0x4e, 0xef, 0x0d, 0xd5, 0x47, 0xef, 0xf3, 0x15, 0x7d, 0x5b, 0xcd, + 0x57, 0xd7, 0x0b, 0x71, 0xfd, 0xd4, 0x2f, 0xc7, 0x55, 0xdf, 0x7c, 0x71, + 0xed, 0x52, 0x9c, 0x34, 0x37, 0x13, 0x1b, 0x4c, 0x4f, 0x16, 0x51, 0x56, + 0x36, 0x0c, 0x34, 0x3f, 0x38, 0xc8, 0x2c, 0xfc, 0x94, 0x10, 0xaf, 0x83, + 0x78, 0x24, 0x35, 0x42, 0xe6, 0x02, 0x48, 0x2a, 0x06, 0x06, 0x18, 0x76, + 0x66, 0x20, 0x77, 0x14, 0x47, 0x32, 0x91, 0x7d, 0xe6, 0x13, 0x20, 0x53, + 0x06, 0x06, 0xd8, 0x28, 0x26, 0x02, 0xb0, 0x17, 0x46, 0x04, 0xe8, 0x0f, + 0x66, 0x04, 0x70, 0x01, 0xa6, 0x00, 0x78, 0x12, 0xe0, 0x50, 0x5b, 0x8c, + 0x0f, 0xb1, 0x60, 0x4c, 0x02, 0x9c, 0x3a, 0xcc, 0x51, 0x50, 0xd3, 0x4c, + 0x0c, 0x40, 0x4b, 0x0d, 0x6e, 0x54, 0xce, 0x95, 0x8c, 0xbc, 0xc4, 0xc2, + 0xe8, 0xdd, 0xe4, 0x83, 0x0b, 0x03, 0x11, 0x26, 0x48, 0x58, 0x13, 0xb9, + 0x79, 0x81, 0x8d, 0x3b, 0xbe, 0x73, 0x92, 0x6a, 0xd9, 0xb1, 0xd8, 0xc5, + 0x0b, 0xc2, 0xde, 0xc6, 0x21, 0xce, 0x45, 0xdc, 0xa8, 0xfc, 0x6a, 0xc4, + 0xaa, 0x55, 0x3d, 0x72, 0xa4, 0xd4, 0xee, 0x59, 0xce, 0xd0, 0x55, 0xbd, + 0x35, 0x2f, 0x9a, 0xb7, 0xa7, 0xc9, 0x4e, 0x92, 0x1e, 0xd8, 0xe5, 0xba, + 0x32, 0xf9, 0x79, 0x87, 0xd1, 0x2c, 0xa4, 0x52, 0xa3, 0x9e, 0xb2, 0xc5, + 0xb5, 0x3d, 0x44, 0x7c, 0xe4, 0x70, 0xfb, 0x05, 0x74, 0xa6, 0x85, 0xb7, + 0xed, 0x04, 0xb4, 0xbd, 0x72, 0x92, 0xa2, 0x36, 0x97, 0x9e, 0x32, 0x96, + 0x33, 0xbd, 0x52, 0x4e, 0x6a, 0x2b, 0xda, 0x03, 0x23, 0xf3, 0x88, 0x96, + 0xa4, 0x44, 0x7c, 0x53, 0x50, 0x86, 0x91, 0xe8, 0x15, 0xfd, 0x5a, 0x2a, + 0xbc, 0xf5, 0x53, 0x74, 0xa5, 0x6a, 0xb7, 0x39, 0x5b, 0x0a, 0xd5, 0x97, + 0x71, 0x87, 0xd9, 0x85, 0xd7, 0xf9, 0xb8, 0xd3, 0xb0, 0xa5, 0x7d, 0x36, + 0x06, 0x14, 0xae, 0x7b, 0x14, 0xbe, 0xec, 0x11, 0x37, 0x74, 0xb0, 0x3c, + 0x5e, 0x3b, 0x5e, 0xb9, 0x95, 0x73, 0xa5, 0xa6, 0x0a, 0xac, 0xb0, 0x4b, + 0xfb, 0x17, 0x5c, 0x64, 0xa6, 0x62, 0xbb, 0x15, 0x9d, 0x1c, 0x93, 0x07, + 0xe0, 0xb0, 0x0e, 0x8c, 0xaa, 0x72, 0xdd, 0xc8, 0xd4, 0xe7, 0xe3, 0x9f, + 0xe5, 0xf6, 0xb4, 0x0e, 0xa6, 0xc3, 0x25, 0x23, 0x21, 0xf2, 0x7c, 0x04, + 0x9d, 0x82, 0x02, 0x5b, 0x86, 0xb4, 0x4e, 0x85, 0x1c, 0x76, 0x56, 0x5e, + 0xbc, 0xca, 0xfe, 0xf1, 0x14, 0x99, 0x9d, 0x96, 0x8a, 0x47, 0xb5, 0x09, + 0x2a, 0x3d, 0x8e, 0x8a, 0x8f, 0xa3, 0xab, 0xf3, 0x22, 0x53, 0x63, 0x1e, + 0xcc, 0xc9, 0x5a, 0x39, 0xee, 0xce, 0xc8, 0xaf, 0xa3, 0x0c, 0x25, 0xf4, + 0x35, 0x90, 0xaf, 0x55, 0x74, 0x54, 0x5d, 0x26, 0x71, 0x35, 0x56, 0xb2, + 0xd0, 0xa9, 0x4e, 0xca, 0x76, 0xd0, 0xe8, 0x88, 0xc7, 0x31, 0x91, 0x0e, + 0x22, 0x28, 0xa3, 0xc5, 0x14, 0x86, 0x03, 0x2a, 0x01, 0x08, 0x2c, 0x34, + 0x4c, 0x44, 0x3e, 0x34, 0x04, 0x0e, 0x94, 0x38, 0x02, 0xb8, 0x6a, 0x62, + 0x0a, 0x6a, 0x29, 0x99, 0x71, 0xc9, 0xc1, 0x71, 0x92, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x3b, 0x41, 0xaa, 0x30, 0x37, 0x04, 0x07, 0x30, 0x7a, 0xfb, + 0xde, 0x33, 0xf0, 0xcc, 0x9d, 0x30, 0x3f, 0xc2, 0xc4, 0x30, 0x17, 0x01, + 0xc7, 0x30, 0x03, 0xc1, 0x02, 0x30, 0x1b, 0x80, 0xa1, 0x30, 0x19, 0x40, + 0xa8, 0x30, 0x33, 0xc0, 0xf8, 0x30, 0x1f, 0x81, 0xc9, 0x30, 0x5b, 0xc6, + 0x36, 0x36, 0x8f, 0xb2, 0xac, 0x30, 0xd7, 0xc4, 0x16, 0x30, 0x2b, 0x01, + 0x65, 0x34, 0xfb, 0x23, 0x14, 0x5f, 0x0b, 0x0a, 0x1a, 0x82, 0xa0, 0x0a, + 0xb8, 0x48, 0x74, 0x42, 0x40, 0x24, 0x6b, 0xc7, 0x69, 0x42, 0x1e, 0x51, + 0x80, 0x93, 0x10, 0x1a, 0x83, 0x61, 0xa8, 0x76, 0xbd, 0xa5, 0x3f, 0x4b, + 0x42, 0xac, 0xb2, 0xeb, 0x0e, 0x97, 0xd9, 0x90, 0x52, 0x55, 0x9a, 0xbf, + 0x47, 0xf3, 0xd1, 0x38, 0x9e, 0xe5, 0x1a, 0x9f, 0xb5, 0x5e, 0x93, 0x2a, + 0x49, 0xba, 0x9b, 0x67, 0x6d, 0x5e, 0xe6, 0x6c, 0x62, 0xeb, 0xcd, 0x59, + 0xbb, 0x15, 0xd2, 0xa4, 0x65, 0x00, 0xb0, 0xd5, 0xe3, 0x2d, 0x25, 0x42, + 0xab, 0x6a, 0x89, 0x86, 0xd1, 0xa4, 0xe2, 0x71, 0xd3, 0x1e, 0x7e, 0x71, + 0x1a, 0xe6, 0x1d, 0x75, 0xb6, 0x14, 0x2c, 0xb1, 0xc3, 0xae, 0xb0, 0xf3, + 0xef, 0x59, 0x65, 0x5d, 0xfa, 0xdb, 0xb1, 0xa7, 0x20, 0xbc, 0x37, 0x72, + 0xc7, 0xc5, 0xc5, 0xcc, 0x39, 0x7f, 0x38, 0x79, 0x2d, 0x97, 0xae, 0xe6, + 0x2c, 0x99, 0xf5, 0x90, 0xe1, 0xd2, 0x19, 0xe1, 0xf4, 0xab, 0x72, 0x99, + 0x77, 0x1f, 0x47, 0x5d, 0x79, 0xda, 0xae, 0x66, 0x29, 0x54, 0x60, 0x87, + 0xad, 0xbe, 0xb9, 0x75, 0x0d, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd7, + 0xbd, 0x70, 0x3f, 0x83, 0xfb, 0x63, 0x70, 0x6b, 0x0d, 0xe8, 0x11, 0x3c, + 0x65, 0x6e, 0x1f, 0xdd, 0xc0, 0xfc, 0x0f, 0xed, 0x2d, 0xc1, 0xb3, 0x37, + 0xa0, 0x49, 0x83, 0x15, 0xb8, 0x13, 0x2a, 0x39, 0x4b, 0x52, 0xd5, 0x1f, + 0x7f, 0x61, 0x66, 0x22, 0xa1, 0xbb, 0x6a, 0x89, 0x4d, 0x24, 0x61, 0xb1, + 0xb1, 0xe0, 0x4e, 0xd2, 0x11, 0x50, 0x8c, 0xc9, 0xc9, 0x00, 0x1d, 0x10, + 0xd9, 0x56, 0xde, 0x40, 0xad, 0x2d, 0x89, 0xbc, 0x6c, 0x51, 0x1b, 0x79, + 0x12, 0xa2, 0xa3, 0x5f, 0xb9, 0xc3, 0xb2, 0x52, 0xcc, 0x94, 0x49, 0x8d, + 0x4c, 0x9c, 0x3f, 0xcb, 0xe7, 0x3e, 0x96, 0xd4, 0x75, 0x74, 0x32, 0x25, + 0xee, 0xe5, 0x76, 0xb5, 0xe8, 0xfd, 0x0e, 0xd4, 0xd1, 0x55, 0xd3, 0x63, + 0x2b, 0xb1, 0x09, 0x9a, 0xba, 0xb9, 0x29, 0x44, 0x44, 0x66, 0x32, 0x19, + 0x4f, 0x4b, 0x18, 0x8a, 0xbb, 0x39, 0xec, 0xaa, 0xb6, 0xde, 0xfd, 0xee, + 0x85, 0x33, 0xd5, 0x5e, 0x56, 0x75, 0x98, 0xe6, 0x67, 0x29, 0xaf, 0x98, + 0xad, 0x43, 0x98, 0xa2, 0x83, 0x07, 0x28, 0x94, 0x1c, 0xa0, 0xa4, 0x0e, + 0x08, 0x07, 0x14, 0x28, 0x15, 0x00, 0x70, 0xe1, 0x82, 0xda, 0x0e, 0x81, + 0x84, 0x5c, 0x1e, 0xd9, 0x8d, 0xc3, 0xcd, 0x21, 0xf9, 0x4a, 0x6a, 0x29, + 0x89, 0xc2, 0x15, 0xd1, 0x83, 0xa8, 0x03, 0x21, 0x81, 0xfe, 0x01, 0xd9, + 0x80, 0x70, 0x01, 0x61, 0x80, 0xc0, 0x01, 0x59, 0x82, 0x3c, 0x04, 0xd9, + 0x82, 0x96, 0x07, 0xe1, 0x86, 0x78, 0x19, 0x49, 0xdc, 0xa7, 0x27, 0x59, + 0x99, 0x54, 0x17, 0x69, 0x84, 0xd6, 0x08, 0x61, 0xf9, 0x2d, 0x9b, 0x68, + 0x81, 0x9b, 0x00, 0x05, 0x77, 0x83, 0x08, 0x51, 0xa8, 0x44, 0x60, 0x10, + 0x0f, 0x0f, 0x34, 0x95, 0xfa, 0xeb, 0x12, 0x00, 0x1b, 0x20, 0x4a, 0xac, + 0x6e, 0x4f, 0xd4, 0x4d, 0xfa, 0x54, 0x90, 0x4c, 0xb5, 0x94, 0x43, 0xdc, + 0x6b, 0x30, 0xd5, 0xf8, 0x72, 0x92, 0xc6, 0x50, 0xef, 0x67, 0xe1, 0xb9, + 0x55, 0x49, 0x4c, 0xba, 0xab, 0xb9, 0x7a, 0x19, 0x9d, 0xbb, 0x52, 0x31, + 0x74, 0xe3, 0xdc, 0x0b, 0x8a, 0x13, 0x12, 0x64, 0x57, 0x0c, 0x0a, 0xd6, + 0x38, 0x81, 0x62, 0xeb, 0x26, 0x30, 0xa2, 0xac, 0x28, 0xa2, 0x22, 0x53, + 0x44, 0xae, 0x46, 0x58, 0x87, 0x92, 0xf7, 0x91, 0x2c, 0xda, 0x22, 0xa5, + 0x10, 0x9d, 0x2e, 0x3a, 0xa9, 0x41, 0x09, 0x0a, 0xe5, 0xc9, 0x20, 0xa1, + 0xe5, 0x95, 0x1b, 0x48, 0x81, 0x04, 0x21, 0x39, 0xe9, 0x95, 0x51, 0xbd, + 0x40, 0xa1, 0xb1, 0x59, 0x63, 0xc1, 0xb2, 0x8c, 0x8d, 0x53, 0x88, 0x62, + 0x79, 0xc6, 0x51, 0xa2, 0x22, 0x91, 0x1b, 0xad, 0xec, 0xa0, 0x58, 0xe9, + 0x15, 0xe3, 0x2d, 0x32, 0x30, 0x61, 0x94, 0xc6, 0xad, 0xa7, 0x92, 0x36, + 0x48, 0x5d, 0x3c, 0x9a, 0xff, 0x59, 0xf2, 0xb6, 0xc9, 0x5b, 0x78, 0xf0, + 0x08, 0xd4, 0xec, 0x32, 0x93, 0x66, 0x0f, 0xa3, 0xb1, 0x44, 0x56, 0x40, + 0x4b, 0x01, 0x00, 0x89, 0x40, 0xf0, 0x64, 0x70, 0x05, 0xb1, 0x75, 0xe0, + 0x6b, 0x15, 0x66, 0x27, 0x7b, 0x3b, 0x9d, 0xac, 0xa5, 0x53, 0x35, 0x7f, + 0x3c, 0x9e, 0xb3, 0xba, 0x0d, 0xff, 0xff, 0x29, 0xe3, 0x4a, 0x66, 0xa8, + 0x56, 0x47, 0x33, 0xea, 0x69, 0x43, 0x0f, 0x8a, 0x2a, 0xe8, 0xc8, 0x46, + 0xba, 0x74, 0xd5, 0x37, 0xcc, 0xe9, 0xad, 0x16, 0x88, 0x69, 0xd0, 0xc9, + 0x75, 0x96, 0x45, 0x94, 0xf4, 0x73, 0x2f, 0xbf, 0x14, 0x32, 0xef, 0x46, + 0x4e, 0xf5, 0x63, 0x74, 0x69, 0x9d, 0x67, 0x5b, 0x5a, 0xe5, 0x63, 0x37, + 0x2b, 0x95, 0x0b, 0x2a, 0x3d, 0x6c, 0xef, 0xe8, 0x6e, 0xce, 0xf3, 0x1a, + 0x8f, 0x42, 0x47, 0xab, 0x22, 0x11, 0x98, 0xc4, 0x39, 0x05, 0x5c, 0x71, + 0xd0, 0xe2, 0x91, 0xc2, 0x21, 0xae, 0x22, 0x65, 0x0d, 0xb1, 0xc2, 0xd3, + 0x10, 0x53, 0x51, 0x4c, 0xcb, 0x8e, 0x4e, 0x0b, 0x8c, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x42, 0x40, 0xea, 0x30, 0x82, 0x81, 0x77, 0x31, 0xcb, 0x59, + 0x64, 0x3f, 0xa6, 0xc3, 0x45, 0x31, 0x17, 0xc0, 0xc4, 0x30, 0x66, 0x01, + 0x59, 0x30, 0x2f, 0xc0, 0xb8, 0x30, 0x18, 0x00, 0x5b, 0x30, 0x16, 0xc0, + 0x0c, 0x30, 0x09, 0xc0, 0x11, 0x30, 0x3c, 0x80, 0x60, 0x30, 0xa1, 0x41, + 0xb7, 0x39, 0x33, 0x8b, 0x9b, 0x32, 0x3d, 0x41, 0x25, 0x30, 0x7a, 0x00, + 0x6c, 0x3d, 0xb3, 0xf3, 0x7c, 0x32, 0x34, 0x52, 0x73, 0x4b, 0x45, 0x34, + 0x20, 0x82, 0xf1, 0x90, 0x8a, 0x11, 0x23, 0xcf, 0xbd, 0x6e, 0xe3, 0x7c, + 0x23, 0x08, 0x32, 0x10, 0x78, 0x6a, 0x7e, 0x5d, 0x39, 0x44, 0xd2, 0xf5, + 0x9a, 0xb2, 0x5a, 0xa8, 0xfe, 0x5b, 0x97, 0x46, 0xb5, 0x41, 0x4b, 0xba, + 0x4c, 0x2d, 0x49, 0xe8, 0x6a, 0xc7, 0xb5, 0xcc, 0xec, 0x63, 0x85, 0x8a, + 0x3b, 0x87, 0x76, 0xb4, 0xc1, 0xd7, 0x3d, 0x5b, 0x0c, 0x1b, 0x0d, 0xfd, + 0x53, 0x78, 0xbe, 0x16, 0x32, 0x16, 0x6a, 0xca, 0x15, 0x78, 0xea, 0xe7, + 0x6f, 0xcb, 0xcb, 0x57, 0x21, 0x2b, 0xb3, 0x53, 0x67, 0x1e, 0xf7, 0x9c, + 0xed, 0xe7, 0x63, 0xbd, 0x39, 0x13, 0x2b, 0x32, 0xe9, 0xe2, 0x30, 0x43, + 0xad, 0x4d, 0x16, 0x73, 0xf7, 0xcb, 0x18, 0xc2, 0xeb, 0xf0, 0x5d, 0xc6, + 0x25, 0xbb, 0xb3, 0x5f, 0xa1, 0x2e, 0x03, 0xe2, 0xba, 0xa8, 0x9e, 0x83, + 0xd7, 0xda, 0x25, 0x49, 0x93, 0x6d, 0xd0, 0xb5, 0xcd, 0x66, 0x5f, 0x96, + 0x98, 0x76, 0xbd, 0x76, 0xad, 0x4a, 0xdd, 0xc7, 0x6d, 0xb3, 0x67, 0x9e, + 0xea, 0xf2, 0xb5, 0x99, 0x68, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xf7, + 0x60, 0x70, 0x40, 0x03, 0xfb, 0x63, 0x70, 0x6e, 0x0d, 0xf8, 0x10, 0x64, + 0x68, 0x6e, 0x1d, 0x75, 0xc1, 0x00, 0x0f, 0xed, 0x2d, 0xc1, 0xc9, 0x38, + 0x20, 0x01, 0x91, 0xa1, 0xb8, 0x8f, 0xf9, 0xb6, 0x1a, 0xa2, 0xc3, 0x64, + 0x27, 0x69, 0x45, 0xe2, 0x9c, 0x38, 0x4a, 0x74, 0x36, 0x29, 0x27, 0x3c, + 0x39, 0x9f, 0x25, 0x76, 0x77, 0x39, 0x62, 0xed, 0xfb, 0x7e, 0x84, 0x29, + 0x2a, 0xd8, 0x98, 0xf5, 0x32, 0x50, 0x70, 0xae, 0x79, 0xe4, 0xe6, 0x7c, + 0xfe, 0x52, 0xcc, 0xc1, 0xcf, 0x3e, 0x7b, 0x6b, 0xc5, 0xf4, 0xfd, 0x76, + 0xd5, 0x7f, 0xf1, 0xcf, 0xd7, 0xfd, 0x5d, 0x4d, 0x6d, 0x15, 0x5a, 0xaf, + 0xdb, 0xaa, 0xdc, 0x45, 0x77, 0x1d, 0x45, 0xaf, 0xcc, 0x27, 0x10, 0x97, + 0xc5, 0xed, 0x1c, 0x2d, 0x4d, 0x6f, 0xf1, 0x55, 0xb2, 0xdc, 0x55, 0xcc, + 0xd4, 0xc7, 0x11, 0x76, 0xd3, 0x7c, 0x45, 0xbd, 0x4d, 0xfa, 0xf1, 0xfc, + 0x42, 0x7d, 0xb0, 0xea, 0x1f, 0xe6, 0x16, 0x1c, 0xb1, 0x8a, 0x3d, 0x28, + 0x54, 0x4e, 0x2c, 0x10, 0x08, 0x21, 0xe4, 0x29, 0xe5, 0x8a, 0x0e, 0x30, + 0x2b, 0xc0, 0x0a, 0x30, 0x73, 0x80, 0xf4, 0x31, 0xb6, 0x49, 0xff, 0x3f, + 0x51, 0x44, 0x78, 0x30, 0xf8, 0xc0, 0xd1, 0x30, 0x59, 0x81, 0x16, 0x30, + 0x36, 0xc0, 0x99, 0x30, 0x2a, 0x00, 0x56, 0x30, 0x1b, 0x40, 0x4d, 0x30, + 0x13, 0x40, 0x0e, 0x30, 0x1c, 0xc1, 0x13, 0x30, 0x6d, 0x84, 0x3c, 0x37, + 0x0c, 0xe3, 0x38, 0x31, 0x84, 0x02, 0xa8, 0x30, 0x4f, 0x41, 0x01, 0x39, + 0x67, 0xa3, 0x55, 0x4f, 0x33, 0xc3, 0xa3, 0x24, 0x4f, 0x30, 0xd0, 0xf2, + 0xf8, 0x32, 0x61, 0xe5, 0x2a, 0x77, 0x8d, 0x9a, 0xcb, 0x54, 0x5c, 0xc7, + 0xc1, 0xa0, 0x69, 0xa9, 0xed, 0x58, 0x83, 0x27, 0xec, 0x52, 0x4b, 0x62, + 0xf5, 0xe6, 0x63, 0xd4, 0x18, 0x4b, 0xae, 0xfd, 0x15, 0x2e, 0x35, 0x30, + 0x94, 0x57, 0x98, 0xb5, 0x95, 0x35, 0x2d, 0x5a, 0xb1, 0x6a, 0xa3, 0xa8, + 0xd7, 0xa4, 0x6f, 0x47, 0x18, 0xaf, 0x76, 0x93, 0x91, 0x97, 0x32, 0xbc, + 0xa2, 0x41, 0x6b, 0xdb, 0x2c, 0x2a, 0x89, 0xc4, 0x09, 0x10, 0xce, 0x38, + 0xbe, 0x44, 0xe3, 0x0b, 0x46, 0x33, 0x42, 0xbc, 0x5a, 0x9c, 0x21, 0x88, + 0xd7, 0x22, 0x60, 0x9d, 0xe9, 0x61, 0xef, 0x22, 0x39, 0x20, 0x96, 0xa1, + 0x44, 0xec, 0x96, 0x16, 0x41, 0x8a, 0x35, 0x71, 0x49, 0x01, 0x7c, 0x99, + 0xec, 0x69, 0x9a, 0x48, 0xc6, 0xb2, 0xeb, 0xc4, 0x9a, 0x34, 0xf8, 0x22, + 0x60, 0x91, 0x87, 0xd6, 0xde, 0x46, 0x67, 0x90, 0x22, 0x34, 0xba, 0xd2, + 0xd5, 0x69, 0x99, 0x28, 0x9a, 0x48, 0xac, 0xa1, 0x17, 0x41, 0x28, 0x41, + 0xa4, 0x61, 0xe3, 0xe9, 0xbd, 0x26, 0x59, 0x25, 0x07, 0x64, 0x51, 0xe8, + 0x12, 0x38, 0xd1, 0x29, 0x23, 0xc0, 0x30, 0xb8, 0xb4, 0x73, 0x32, 0x2d, + 0xf2, 0x82, 0x9f, 0xf9, 0x45, 0x4f, 0xfa, 0xd0, 0x90, 0x1b, 0x04, 0x3e, + 0x10, 0xeb, 0xa6, 0xa8, 0x59, 0xc3, 0x04, 0x39, 0x3d, 0xcb, 0x86, 0xb2, + 0x19, 0x29, 0x94, 0xbb, 0x13, 0x9e, 0x45, 0x12, 0xe6, 0xd3, 0xf8, 0x49, + 0xa8, 0x88, 0xbb, 0xb9, 0xb8, 0xbe, 0x2d, 0x3b, 0xa8, 0x78, 0x6b, 0xe6, + 0x9f, 0xe1, 0x6a, 0x2a, 0xe2, 0xbf, 0x78, 0xe2, 0xa6, 0xaa, 0xd5, 0xb9, + 0x3e, 0x67, 0xee, 0x1d, 0xe5, 0x23, 0x7b, 0xea, 0x76, 0xe7, 0xe2, 0xb7, + 0xa9, 0xd5, 0x17, 0xbd, 0x7e, 0xea, 0xbf, 0xe6, 0xed, 0xe2, 0xd7, 0xfe, + 0x54, 0xed, 0xef, 0x4a, 0xdc, 0x6b, 0xb2, 0x14, 0x2e, 0x45, 0x8e, 0x16, + 0xa4, 0x17, 0x45, 0x4b, 0x20, 0x1d, 0xb1, 0x53, 0x85, 0xc4, 0x3a, 0x60, + 0x6a, 0x98, 0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x70, 0x5c, 0x65, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x0d, 0xc0, 0xf1, 0x30, 0x61, 0x82, 0xfe, 0x31, 0x9d, 0x68, + 0x99, 0x3f, 0x4d, 0x4a, 0x7e, 0x30, 0xe5, 0x42, 0x3b, 0x30, 0x51, 0x00, + 0xbe, 0x30, 0x1f, 0xc0, 0x6d, 0x21, 0x01, 0xc8, 0xc0, 0x26, 0x01, 0xd4, + 0x70, 0x0d, 0x33, 0x00, 0x14, 0x1d, 0xa3, 0x01, 0x04, 0x69, 0xf3, 0x3c, + 0x93, 0x73, 0xb3, 0x00, 0x58, 0x40, 0xf1, 0x00, 0x2e, 0xc6, 0x13, 0x82, + 0x62, 0x8c, 0x46, 0x36, 0x7a, 0x28, 0x1a, 0x85, 0x45, 0x01, 0xc3, 0x80, + 0x62, 0x47, 0xd2, 0xb6, 0x43, 0x18, 0x87, 0x50, 0x42, 0x0e, 0x5c, 0x96, + 0xc2, 0xe1, 0xa9, 0x24, 0xbd, 0x9e, 0xbd, 0x8f, 0xd2, 0xfb, 0x8c, 0xce, + 0xbf, 0x32, 0x99, 0xab, 0x12, 0x1a, 0x68, 0x8c, 0x46, 0x82, 0xd5, 0x98, + 0x32, 0xd7, 0xc5, 0x6d, 0xcd, 0x43, 0xb1, 0xb9, 0xc9, 0xaa, 0xf3, 0x91, + 0xb2, 0x77, 0xde, 0x86, 0x97, 0x5d, 0xc5, 0x72, 0xfc, 0x05, 0x92, 0xd3, + 0xe9, 0x0f, 0xba, 0xce, 0x97, 0xa5, 0xd4, 0x47, 0x12, 0xfa, 0x56, 0x62, + 0x3c, 0x41, 0x42, 0x5e, 0xb8, 0xe1, 0xb2, 0x72, 0xe5, 0x38, 0x5e, 0x3f, + 0x47, 0x02, 0xd2, 0xcc, 0x34, 0x61, 0x71, 0x24, 0xd5, 0xb5, 0x54, 0x80, + 0xe1, 0xc3, 0x9d, 0x3a, 0xb1, 0x38, 0xe2, 0xad, 0xa1, 0xa6, 0x3a, 0x54, + 0xdb, 0x47, 0xd6, 0x8e, 0x26, 0x13, 0x2f, 0x8e, 0x15, 0xe7, 0x6b, 0xff, + 0x2e, 0x44, 0xf8, 0x4c, 0x36, 0xba, 0x89, 0x54, 0x08, 0xef, 0xc9, 0x23, + 0x81, 0x11, 0xa5, 0x35, 0x0e, 0x4f, 0xd9, 0x43, 0x97, 0x15, 0x2a, 0x61, + 0x22, 0x76, 0x0e, 0x5f, 0x72, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd7, + 0xdf, 0x70, 0x3f, 0x03, 0xfb, 0x63, 0x70, 0x68, 0xee, 0x08, 0x12, 0x30, + 0x63, 0x6e, 0x21, 0x2d, 0xc0, 0xfa, 0x0f, 0xed, 0x8d, 0xc1, 0xb6, 0xb7, + 0xe0, 0x44, 0xf2, 0x95, 0xba, 0xf4, 0x3c, 0xa5, 0xe0, 0x8e, 0x91, 0x7f, + 0x27, 0xa2, 0xc2, 0x18, 0xf4, 0xda, 0xa7, 0x51, 0x50, 0xed, 0x2a, 0x73, + 0xe3, 0x63, 0x73, 0xed, 0x88, 0xed, 0x68, 0x9a, 0x14, 0x88, 0x61, 0x58, + 0x72, 0x30, 0x00, 0x00, 0x99, 0xf3, 0x30, 0x44, 0xa6, 0xbc, 0xb1, 0xde, + 0xb5, 0x65, 0xea, 0xce, 0xa7, 0x56, 0x09, 0x39, 0x4c, 0x89, 0x54, 0xc8, + 0xe0, 0x09, 0x68, 0xec, 0x94, 0x49, 0xa3, 0xd0, 0xcc, 0x6a, 0xee, 0x7d, + 0xce, 0x77, 0xcf, 0x5a, 0x5d, 0x33, 0xd2, 0xd2, 0xaf, 0xfa, 0x67, 0x3c, + 0xce, 0x73, 0x26, 0xb0, 0xe4, 0xf8, 0x5f, 0x32, 0x85, 0x16, 0x26, 0xac, + 0x7e, 0xfd, 0x78, 0x4c, 0xf0, 0x8e, 0x1f, 0x1b, 0x37, 0x3e, 0x5c, 0xe7, + 0xcd, 0x72, 0x28, 0x67, 0x13, 0x42, 0xe7, 0x99, 0xff, 0x9a, 0xf3, 0x4f, + 0xb3, 0x3a, 0x7c, 0x76, 0xc1, 0x19, 0x9a, 0x91, 0x92, 0x36, 0xf8, 0xbc, + 0x09, 0x00, 0x42, 0x3b, 0x2a, 0x0c, 0x14, 0x60, 0x1c, 0x00, 0xc0, 0xa0, + 0x06, 0x6c, 0xc0, 0x30, 0x10, 0xd0, 0xc2, 0xcb, 0xed, 0xac, 0xe1, 0x97, + 0x36, 0x88, 0xc1, 0x45, 0x0c, 0x0c, 0xc0, 0x80, 0x03, 0xe8, 0xc0, 0x5f, + 0x02, 0x94, 0xc0, 0x9e, 0x00, 0x80, 0xc0, 0xb7, 0x01, 0x08, 0xc0, 0x95, + 0x03, 0x60, 0xc1, 0x14, 0x07, 0x14, 0xc2, 0x1d, 0x19, 0x58, 0xd3, 0x0a, + 0xd9, 0xc0, 0xc7, 0xb1, 0x0e, 0x80, 0xc1, 0x78, 0x05, 0x3c, 0xe8, 0x67, + 0x0d, 0x19, 0x34, 0xc0, 0x40, 0x80, 0x0d, 0x46, 0x4e, 0x0c, 0x1c, 0x0a, + 0x0d, 0x0d, 0x4c, 0x2c, 0xdf, 0x59, 0x7c, 0x1e, 0x94, 0xc6, 0x10, 0x13, + 0x0c, 0x4f, 0x4c, 0xfd, 0xe6, 0x55, 0x1b, 0xdd, 0x97, 0x1e, 0xe3, 0xb9, + 0x1a, 0x95, 0xd1, 0x48, 0x21, 0x70, 0x45, 0xbc, 0x68, 0x1f, 0x99, 0xf7, + 0xee, 0x56, 0xe8, 0xc7, 0x9f, 0x59, 0x65, 0x8a, 0x48, 0x84, 0xba, 0x55, + 0x5d, 0x6a, 0xa6, 0x9e, 0x3e, 0x2f, 0x84, 0xce, 0x49, 0xaa, 0xda, 0xd4, + 0xa6, 0x3f, 0x2f, 0x69, 0xb3, 0x03, 0xb6, 0xa1, 0x59, 0x43, 0x88, 0x10, + 0x94, 0x1d, 0xb8, 0xc9, 0x59, 0x87, 0xbe, 0xc3, 0xa5, 0xc7, 0x05, 0x64, + 0xa3, 0x61, 0xcc, 0xd3, 0x55, 0xd2, 0x35, 0xe7, 0x0e, 0x19, 0x98, 0xb9, + 0x8f, 0x17, 0x87, 0x35, 0x85, 0x79, 0x3c, 0x30, 0x4e, 0x74, 0xad, 0x08, + 0x82, 0xed, 0xbc, 0xac, 0xa4, 0xe6, 0xad, 0x2e, 0x42, 0x5e, 0x34, 0x2e, + 0x42, 0x12, 0x17, 0xcd, 0x50, 0xd6, 0xac, 0x85, 0x63, 0x29, 0xcb, 0x05, + 0x33, 0x56, 0x7c, 0x9e, 0xa9, 0x63, 0x2f, 0xc6, 0x6a, 0x79, 0xeb, 0x0f, + 0xdb, 0x46, 0x99, 0x41, 0xe3, 0xa8, 0x79, 0xcd, 0x1b, 0x42, 0x86, 0xfb, + 0xeb, 0xb8, 0xaa, 0xfb, 0x45, 0xb2, 0xdb, 0x8f, 0xa7, 0x21, 0x1c, 0x92, + 0x50, 0x0c, 0xd6, 0xc2, 0x3a, 0x33, 0xab, 0xee, 0x3a, 0x79, 0x91, 0x54, + 0x1b, 0x12, 0xc5, 0x21, 0xc8, 0xbc, 0xaa, 0x05, 0x0f, 0x58, 0x28, 0x90, + 0x08, 0xf7, 0xc6, 0x1f, 0xde, 0x33, 0x8d, 0x6b, 0x0a, 0x5c, 0x6b, 0x4a, + 0x66, 0x62, 0xd1, 0x05, 0xc4, 0x5d, 0xcd, 0xd1, 0x5d, 0x1a, 0xae, 0xd5, + 0x48, 0xa8, 0xf1, 0x40, 0xc1, 0x12, 0x94, 0xc7, 0xad, 0x52, 0x74, 0x25, + 0x1b, 0x27, 0x6f, 0x44, 0xd9, 0x54, 0x9f, 0x9d, 0x11, 0xca, 0xcd, 0xde, + 0xb6, 0x3b, 0xb3, 0xa9, 0x53, 0x76, 0x33, 0xcc, 0xab, 0x94, 0x63, 0x1d, + 0xde, 0x8e, 0x93, 0x75, 0x52, 0xb2, 0x19, 0xac, 0x86, 0x5a, 0xb3, 0xa5, + 0x4e, 0x8e, 0x8a, 0xaf, 0x5b, 0xa6, 0x4b, 0xba, 0x95, 0x4e, 0xaa, 0xee, + 0xda, 0xad, 0x0a, 0xa5, 0xdc, 0xce, 0x65, 0x3c, 0xa2, 0x83, 0x0e, 0xa8, + 0x40, 0xe2, 0x0a, 0x00, 0xc1, 0xf0, 0x80, 0x80, 0x28, 0x61, 0xcc, 0x30, + 0x35, 0x30, 0x4d, 0x01, 0xb1, 0x30, 0x55, 0xc3, 0xf4, 0x30, 0xea, 0xba, + 0x3f, 0x36, 0x2d, 0x8c, 0x38, 0x30, 0x95, 0x02, 0xad, 0x30, 0x37, 0xc1, + 0xfc, 0x30, 0x13, 0x00, 0xff, 0x30, 0x14, 0xc0, 0xc0, 0x30, 0x11, 0x00, + 0x99, 0x30, 0x2c, 0x80, 0xad, 0x30, 0x44, 0xc0, 0xe0, 0x30, 0xad, 0x03, + 0x73, 0x38, 0x6c, 0x5f, 0x83, 0x32, 0x76, 0x81, 0x7f, 0x30, 0x82, 0xc0, + 0x8e, 0x3e, 0xa3, 0x50, 0x37, 0x91, 0x98, 0x05, 0x18, 0x09, 0x71, 0x8d, + 0x05, 0x97, 0x38, 0x44, 0x1a, 0x8b, 0x10, 0x2b, 0x3d, 0x8d, 0x4b, 0x97, + 0x91, 0x41, 0xfc, 0x0f, 0x13, 0x9c, 0x8b, 0xc3, 0xf0, 0x1d, 0x0f, 0xb3, + 0x88, 0x1d, 0xf6, 0x76, 0xe7, 0x2a, 0x41, 0x94, 0xb4, 0x50, 0x04, 0x42, + 0x6e, 0x18, 0x86, 0xed, 0xc3, 0xd2, 0xcd, 0xc8, 0x29, 0xe4, 0x73, 0xf5, + 0x2c, 0xd5, 0xe7, 0x1e, 0xd9, 0x79, 0xb5, 0x5b, 0x11, 0x8d, 0xe3, 0x23, + 0xd4, 0x2e, 0x2c, 0x46, 0x19, 0x9a, 0xa1, 0xb8, 0xb8, 0xa9, 0xe6, 0x70, + 0x7d, 0x19, 0xc6, 0x6c, 0xb9, 0x43, 0x6b, 0x88, 0x8b, 0x54, 0x32, 0xa6, + 0x1b, 0x58, 0x9d, 0x38, 0xc3, 0xb2, 0x59, 0xa5, 0x89, 0xbd, 0xc1, 0x86, + 0x0d, 0x20, 0x2d, 0xce, 0xb2, 0x9e, 0xd2, 0xa2, 0x8d, 0xac, 0x8a, 0xe7, + 0x4f, 0xd5, 0x11, 0x54, 0xad, 0x87, 0x4b, 0x33, 0x92, 0xe9, 0x77, 0x17, + 0x72, 0xbd, 0x82, 0xe5, 0x78, 0x4c, 0xe9, 0x04, 0x31, 0xbe, 0x47, 0x8f, + 0xde, 0x47, 0x99, 0xf4, 0xcc, 0xf6, 0x9d, 0xaa, 0x0a, 0xb1, 0x99, 0x4d, + 0x24, 0x46, 0x57, 0x4b, 0xa8, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xf8, + 0x6f, 0x6f, 0xbe, 0x83, 0xfb, 0x7b, 0x70, 0x6a, 0x8e, 0x08, 0x10, 0x60, + 0x65, 0x6e, 0x21, 0xfd, 0xc0, 0xf8, 0x0f, 0xed, 0x8d, 0xc1, 0xa2, 0xb8, + 0x20, 0x40, 0x90, 0x95, 0xb8, 0x8b, 0xfa, 0x89, 0x19, 0xeb, 0x2b, 0x7b, + 0x4b, 0x7b, 0xe8, 0xce, 0x19, 0x4d, 0xbc, 0x72, 0xba, 0xad, 0x87, 0x37, + 0x4f, 0xbf, 0xbd, 0xa6, 0x7c, 0xf9, 0xba, 0x22, 0xa9, 0xd3, 0xdb, 0xb8, + 0x37, 0x55, 0x39, 0x19, 0xe4, 0x6d, 0x66, 0x21, 0xd0, 0x97, 0x4b, 0x32, + 0x96, 0x13, 0xbf, 0x9c, 0x63, 0x85, 0x3e, 0x1e, 0x2c, 0xf5, 0x6f, 0x2f, + 0xc3, 0x18, 0xdc, 0xee, 0xf0, 0xdf, 0x30, 0x25, 0xb7, 0x10, 0x25, 0x89, + 0x75, 0x78, 0xcf, 0x9d, 0x7c, 0x7c, 0xfd, 0x73, 0x7e, 0xcc, 0x8d, 0x2e, + 0x4d, 0xe5, 0xd9, 0xdb, 0xdd, 0xdd, 0xdd, 0xd4, 0xea, 0x66, 0x47, 0x5d, + 0xea, 0xc9, 0xdb, 0x74, 0x65, 0x54, 0x2b, 0xdd, 0x0a, 0xcd, 0xad, 0x19, + 0x92, 0x44, 0xb9, 0x8b, 0xa1, 0xde, 0xad, 0x33, 0xd5, 0x9c, 0xff, 0xb3, + 0x26, 0xa9, 0x54, 0x79, 0x92, 0x44, 0x64, 0x74, 0x7c, 0xc4, 0x64, 0x6b, + 0x55, 0xba, 0xea, 0xa4, 0x22, 0x22, 0xa2, 0x23, 0x8d, 0x32, 0xb0, 0xa9, + 0xd0, 0xae, 0x35, 0x02, 0x23, 0x8a, 0xe7, 0x71, 0x68, 0xb8, 0x7c, 0xe1, + 0xc4, 0x0e, 0x05, 0x88, 0x00, 0x86, 0x0c, 0x20, 0x34, 0xe6, 0x12, 0x98, + 0x6a, 0x06, 0x3c, 0xe6, 0x69, 0x27, 0xf0, 0x91, 0x2f, 0x06, 0x24, 0x70, + 0x46, 0x66, 0x0c, 0xf8, 0x0b, 0x64, 0xc1, 0x0c, 0x98, 0x0f, 0xa0, 0x1c, + 0x98, 0x02, 0x80, 0x14, 0x18, 0x16, 0x20, 0x13, 0x18, 0x24, 0xc0, 0x18, + 0x18, 0x59, 0xa0, 0xe2, 0x9d, 0x0a, 0x44, 0xca, 0x99, 0x47, 0x20, 0xc7, + 0x98, 0x48, 0x00, 0x40, 0x1f, 0xda, 0x69, 0xc6, 0x1c, 0x1a, 0x79, 0x89, + 0x90, 0xba, 0x99, 0x00, 0x62, 0x19, 0xac, 0x52, 0x62, 0x18, 0x11, 0xf7, + 0x90, 0xe2, 0xaa, 0x65, 0x50, 0x0c, 0x25, 0x95, 0xe5, 0x92, 0x35, 0x4c, + 0xf8, 0xd8, 0x87, 0x33, 0x72, 0x61, 0x97, 0xfd, 0xa2, 0x5f, 0x77, 0x59, + 0xdb, 0xf3, 0x2a, 0x86, 0xa1, 0x88, 0xcb, 0xef, 0x05, 0xc3, 0x14, 0x8f, + 0xa4, 0xa3, 0x74, 0xf6, 0x69, 0x1f, 0xe9, 0xab, 0x02, 0x72, 0x95, 0xe4, + 0xd3, 0x97, 0x8c, 0xca, 0xc8, 0xc7, 0x6e, 0x24, 0x95, 0xce, 0x03, 0x69, + 0x2c, 0x9a, 0x28, 0x38, 0x8c, 0xee, 0x03, 0xd1, 0xdd, 0xa2, 0x68, 0x8c, + 0x98, 0x50, 0x13, 0x89, 0xe7, 0xe5, 0x61, 0xc3, 0xae, 0x13, 0xa5, 0x26, + 0xd4, 0x4f, 0x71, 0x62, 0x33, 0x1a, 0xae, 0x65, 0x01, 0xc5, 0x71, 0x9e, + 0x49, 0xda, 0xe6, 0x16, 0xae, 0xb9, 0x3d, 0x50, 0x92, 0xc9, 0xdb, 0x67, + 0xeb, 0x58, 0xb2, 0x32, 0xa9, 0xbd, 0xe4, 0x90, 0xaa, 0xa4, 0xb2, 0xb9, + 0x7d, 0xc4, 0x83, 0xd1, 0xbb, 0xaa, 0x8f, 0xca, 0xcf, 0xa0, 0xbc, 0xc6, + 0x0f, 0xf1, 0xae, 0x13, 0xae, 0x3b, 0x30, 0xf2, 0x56, 0x60, 0x3d, 0x3c, + 0x44, 0xb0, 0xf9, 0x69, 0x8a, 0x6e, 0x2c, 0xa0, 0x54, 0xe4, 0x4e, 0xcd, + 0xda, 0x97, 0x8a, 0xa8, 0x4b, 0x97, 0x0f, 0x8b, 0x47, 0x31, 0xfc, 0x95, + 0x21, 0xf2, 0xc8, 0x95, 0x9f, 0x2c, 0x62, 0x33, 0x37, 0x22, 0x1c, 0x88, + 0xfa, 0x43, 0x3d, 0x35, 0x12, 0x51, 0x8e, 0xe1, 0x08, 0x1a, 0x0a, 0x93, + 0x94, 0x44, 0x0c, 0xc1, 0xad, 0x46, 0xd4, 0x5f, 0x55, 0xe9, 0x1f, 0x18, + 0x08, 0x2c, 0xd3, 0x1b, 0x39, 0x45, 0x9b, 0x13, 0x18, 0x9e, 0x3c, 0xf4, + 0x11, 0x05, 0x88, 0x4e, 0xd8, 0xcd, 0xb9, 0xd9, 0xdb, 0xae, 0xac, 0xb1, + 0xca, 0x8c, 0x55, 0x42, 0x3b, 0xd5, 0xdb, 0x36, 0xf2, 0x33, 0x25, 0xe5, + 0x74, 0x9e, 0x9e, 0x86, 0x67, 0x4a, 0x15, 0x9d, 0x9d, 0xfd, 0x9d, 0xe5, + 0x4a, 0x22, 0xfd, 0x88, 0x46, 0x2b, 0x2a, 0x1d, 0x32, 0x4c, 0xac, 0xe6, + 0x3b, 0xb2, 0xbb, 0x2d, 0x5d, 0x11, 0x64, 0xad, 0x6a, 0xf8, 0x95, 0x15, + 0xa6, 0x38, 0xe1, 0x22, 0x87, 0x54, 0x78, 0x9a, 0x0b, 0x20, 0x70, 0x5c, + 0x26, 0xec, 0x2a, 0x05, 0x20, 0xa1, 0x8c, 0x20, 0x1f, 0x1c, 0x30, 0x38, + 0x80, 0xb9, 0x30, 0x78, 0xc0, 0xf6, 0x31, 0xac, 0x13, 0x45, 0x3e, 0x72, + 0x01, 0xce, 0x30, 0xf9, 0x80, 0x6b, 0x30, 0x5a, 0xc0, 0xce, 0x30, 0x21, + 0x80, 0x53, 0x30, 0x12, 0x40, 0x1a, 0x30, 0x08, 0x80, 0x1c, 0x30, 0x02, + 0x80, 0x6a, 0x30, 0x1e, 0x40, 0xf9, 0x30, 0x5d, 0x03, 0xb4, 0x35, 0xec, + 0x5b, 0xde, 0x31, 0x2f, 0x82, 0x40, 0x30, 0x43, 0xc0, 0xd7, 0x38, 0x27, + 0x43, 0x53, 0x4b, 0x33, 0xc3, 0x20, 0x72, 0xc1, 0x93, 0x85, 0x97, 0x82, + 0x75, 0x14, 0x5f, 0x68, 0x75, 0x9b, 0xcc, 0x4a, 0x04, 0x80, 0x6d, 0xcb, + 0x28, 0xab, 0x44, 0x21, 0x9a, 0x7d, 0x5b, 0xab, 0x52, 0xa6, 0x4f, 0xf5, + 0xda, 0xb6, 0xe0, 0xba, 0x1a, 0x38, 0xe4, 0x6a, 0x47, 0x11, 0xa4, 0x8f, + 0xbd, 0x56, 0x33, 0x97, 0xc6, 0xac, 0xcc, 0x5c, 0xc1, 0xd9, 0xfe, 0xb9, + 0x78, 0xee, 0x56, 0x67, 0xb1, 0x61, 0xc1, 0xbb, 0x67, 0x7b, 0x0a, 0x7a, + 0xb6, 0xc9, 0x3d, 0x23, 0xcb, 0xd6, 0xe0, 0xc3, 0x8f, 0x48, 0x53, 0xda, + 0x1a, 0x8d, 0xff, 0x87, 0xaa, 0x9f, 0x0f, 0x14, 0xee, 0x30, 0xa0, 0xab, + 0x11, 0x2b, 0x6d, 0x4a, 0xa9, 0xdf, 0xed, 0x96, 0x1c, 0x4c, 0x36, 0xa9, + 0x9c, 0x22, 0x33, 0xcc, 0xe4, 0xdb, 0x78, 0x4c, 0x71, 0x98, 0xe3, 0x59, + 0xe3, 0x0a, 0x7d, 0x5b, 0xbd, 0xd5, 0xf5, 0x31, 0x09, 0xe3, 0xf8, 0x09, + 0x78, 0xaa, 0x7b, 0x51, 0x99, 0xff, 0xfb, 0xd4, 0x60, 0x63, 0x8f, 0xd8, + 0x31, 0x70, 0x3f, 0x03, 0xfb, 0x7b, 0x70, 0x62, 0x2e, 0x08, 0x21, 0x2c, + 0x65, 0x6e, 0x21, 0xb9, 0xc0, 0xfa, 0x0f, 0xf1, 0x8d, 0xc1, 0xa2, 0x37, + 0xa0, 0x41, 0x81, 0x95, 0xb8, 0xfa, 0xf3, 0x54, 0x35, 0x6b, 0x8c, 0x07, + 0x6b, 0x87, 0x4e, 0x10, 0x76, 0xd4, 0xc2, 0xf6, 0x2d, 0x20, 0x6a, 0xd0, + 0xd8, 0x20, 0xb3, 0x43, 0xc4, 0x18, 0x0d, 0x8a, 0xc8, 0xd8, 0x72, 0x70, + 0x7b, 0x19, 0xfc, 0x36, 0x78, 0xcc, 0xee, 0x2b, 0x32, 0xb9, 0x4e, 0xaa, + 0xea, 0x77, 0x6c, 0x6c, 0xad, 0x2b, 0x94, 0xd4, 0x76, 0x43, 0xbd, 0x91, + 0x28, 0x2d, 0x31, 0x55, 0x85, 0xe5, 0x0c, 0x47, 0x30, 0x00, 0x13, 0x6f, + 0x97, 0xab, 0x4f, 0xb7, 0x1d, 0x88, 0xeb, 0xe1, 0xb4, 0x74, 0xc9, 0x2a, + 0x34, 0x33, 0xfb, 0xc2, 0x48, 0x2b, 0x85, 0x00, 0x2d, 0xf4, 0xa7, 0x3c, + 0xa2, 0x97, 0xd2, 0x59, 0x51, 0x19, 0x68, 0x9a, 0x5d, 0x2d, 0x66, 0xec, + 0x9d, 0xd5, 0x65, 0xbd, 0xfd, 0xa9, 0xb3, 0x7a, 0x59, 0xde, 0x57, 0x47, + 0xa2, 0x7e, 0x42, 0x6d, 0x7c, 0xa8, 0xee, 0x8a, 0x88, 0x42, 0x67, 0x56, + 0x69, 0x8b, 0x59, 0x5a, 0xec, 0x5d, 0x74, 0x2b, 0xb3, 0x74, 0xdd, 0x11, + 0x4b, 0x62, 0xbb, 0xc6, 0xbb, 0x8b, 0x92, 0xca, 0x71, 0xc1, 0xf1, 0x10, + 0xf0, 0x18, 0x78, 0x71, 0x0e, 0x30, 0x70, 0x41, 0xc4, 0x43, 0x4c, 0x09, + 0xc0, 0x07, 0x8c, 0x1c, 0x90, 0x53, 0x4c, 0x6d, 0xe3, 0xd8, 0x8f, 0xde, + 0x61, 0x61, 0xcc, 0x3e, 0x20, 0x42, 0x8c, 0x16, 0x50, 0x24, 0xc1, 0xc0, + 0xe6, 0x18, 0x14, 0xe0, 0x22, 0x18, 0x0e, 0x00, 0x3b, 0x98, 0x0a, 0x40, + 0x65, 0x98, 0x11, 0xc0, 0x93, 0x18, 0x3b, 0x61, 0x4a, 0x9a, 0x51, 0x0e, + 0xd9, 0x99, 0x6e, 0xc0, 0x41, 0x18, 0x56, 0x20, 0x52, 0x1d, 0x21, 0x7e, + 0x68, 0x74, 0xc0, 0xe1, 0x7c, 0x38, 0xc4, 0x62, 0xe0, 0x69, 0x87, 0xc4, + 0x04, 0x81, 0x30, 0x50, 0x40, 0x30, 0x3c, 0x60, 0x80, 0x29, 0x28, 0x10, + 0xb6, 0xe2, 0x40, 0x62, 0xfa, 0xa8, 0xb2, 0x97, 0xa4, 0x0a, 0x81, 0x2c, + 0x98, 0x21, 0x5d, 0x35, 0xe7, 0x85, 0x82, 0x2f, 0x65, 0x92, 0xc2, 0x24, + 0xae, 0xeb, 0xed, 0x39, 0x22, 0xaa, 0xf8, 0x43, 0x70, 0x73, 0xf4, 0xc8, + 0x70, 0x96, 0x4d, 0x43, 0x78, 0xd3, 0x55, 0x95, 0x51, 0xce, 0xff, 0x83, + 0x6a, 0x94, 0x57, 0x98, 0xe2, 0x02, 0x33, 0x3c, 0x3f, 0x44, 0x78, 0x52, + 0x38, 0x8e, 0x54, 0x33, 0x42, 0x9b, 0x05, 0x61, 0xd2, 0x2b, 0xcb, 0xb4, + 0xd5, 0x66, 0x81, 0x39, 0xcb, 0xe9, 0xd4, 0xa8, 0xe3, 0x86, 0x68, 0xb8, + 0xb5, 0xf4, 0x43, 0x33, 0x35, 0x33, 0x3f, 0x5f, 0x30, 0xbf, 0x6e, 0x3c, + 0x80, 0xb8, 0x99, 0xb5, 0x88, 0x45, 0x84, 0xc4, 0x63, 0xd8, 0x12, 0x19, + 0x9e, 0x1c, 0x9c, 0x95, 0xcc, 0x4e, 0x58, 0x4c, 0x72, 0xeb, 0xe5, 0xc3, + 0xc5, 0xca, 0x1f, 0x43, 0x3f, 0x2e, 0x9e, 0x2f, 0xc7, 0x84, 0xd4, 0x8d, + 0x7b, 0x84, 0xa5, 0x78, 0xa1, 0x65, 0xcf, 0xd0, 0x58, 0x74, 0xea, 0xea, + 0xbb, 0x1b, 0x86, 0xef, 0xbd, 0x8a, 0x9e, 0x54, 0xc4, 0x0c, 0x51, 0xd8, + 0x4f, 0xd4, 0x94, 0x0c, 0xae, 0xbc, 0xf8, 0xb4, 0xa1, 0x76, 0x22, 0x44, + 0x95, 0xc0, 0xfe, 0x5a, 0xb1, 0xf1, 0x68, 0xb2, 0x5f, 0x74, 0x84, 0xe9, + 0x20, 0x38, 0x32, 0x31, 0x22, 0x37, 0x6b, 0xd9, 0xca, 0xde, 0x76, 0x7b, + 0x87, 0x6d, 0xd9, 0xde, 0x01, 0x0c, 0xab, 0xa2, 0xea, 0x9f, 0xb2, 0x96, + 0x71, 0x1b, 0x23, 0x3f, 0x9c, 0xb7, 0xec, 0xee, 0xcf, 0xf9, 0x42, 0xe1, + 0x9a, 0x73, 0x22, 0xea, 0xc4, 0x73, 0x3a, 0x4a, 0xaf, 0xea, 0x88, 0x8b, + 0x44, 0x35, 0xca, 0x5b, 0xcd, 0x29, 0xec, 0x88, 0xba, 0xb3, 0xba, 0xb9, + 0xac, 0x93, 0x36, 0xe7, 0x45, 0x2a, 0xd1, 0x6e, 0x76, 0xb3, 0x39, 0x13, + 0x23, 0x16, 0x8c, 0xba, 0x1a, 0x44, 0x3e, 0xe9, 0x92, 0x85, 0xbb, 0x91, + 0xd5, 0x9d, 0x51, 0x15, 0x8d, 0x42, 0xd1, 0x19, 0x2b, 0x50, 0xf1, 0x4c, + 0x2c, 0xc7, 0x12, 0x89, 0x18, 0x5d, 0xc4, 0x62, 0x25, 0x20, 0xa8, 0x28, + 0xea, 0x30, 0x0b, 0x81, 0x10, 0x30, 0x59, 0x43, 0x51, 0x31, 0x86, 0xad, + 0x10, 0x3e, 0xb1, 0x0b, 0x5d, 0x30, 0xd6, 0x02, 0x68, 0x30, 0x4b, 0x41, + 0x11, 0x30, 0x1d, 0x00, 0xba, 0x30, 0x0e, 0x40, 0x9b, 0x30, 0x00, 0x00, + 0x7e, 0x30, 0x05, 0xc0, 0x82, 0x30, 0x20, 0x80, 0xfd, 0x30, 0x48, 0xc3, + 0x90, 0x30, 0xbe, 0x48, 0xe4, 0x30, 0x71, 0xc1, 0x15, 0x30, 0x4b, 0x80, + 0x16, 0x05, 0x95, 0x82, 0xa3, 0x0c, 0x8c, 0x24, 0xb9, 0x63, 0x80, 0x4a, + 0x3a, 0xda, 0xeb, 0x27, 0xd6, 0x4f, 0x0a, 0x8e, 0x2e, 0xb7, 0x6d, 0xbd, + 0x90, 0xcc, 0xcf, 0xc7, 0x21, 0x57, 0x5a, 0x44, 0x17, 0x14, 0x71, 0xe3, + 0x90, 0x34, 0x92, 0x0b, 0xa1, 0x95, 0xc1, 0x94, 0xb3, 0xfd, 0x77, 0xe9, + 0xb9, 0x2b, 0x81, 0x1e, 0x98, 0xfb, 0x22, 0xa6, 0x87, 0xe1, 0x72, 0xa7, + 0xe5, 0x5f, 0x09, 0x4e, 0xd6, 0x73, 0x2a, 0x39, 0x8c, 0xe0, 0xe5, 0x19, + 0x52, 0xf5, 0xf3, 0x3a, 0xb0, 0x9a, 0xa6, 0x5b, 0x67, 0x9d, 0x02, 0xba, + 0x52, 0xb0, 0xb4, 0x26, 0x2e, 0xce, 0x5e, 0x66, 0x49, 0xc8, 0xd9, 0x11, + 0x9d, 0xb5, 0x22, 0x9f, 0x85, 0x1e, 0x75, 0xf4, 0x5a, 0x25, 0x40, 0xde, + 0xad, 0x62, 0x9c, 0xfc, 0x50, 0x27, 0xe2, 0x46, 0x72, 0x66, 0x4e, 0x3c, + 0x57, 0x31, 0xa1, 0x28, 0xd2, 0x78, 0xc8, 0xc3, 0xb6, 0x94, 0x52, 0x4d, + 0xeb, 0x82, 0x33, 0x28, 0x5b, 0xff, 0xfb, 0xd4, 0x60, 0x62, 0x0d, 0xd8, + 0xdd, 0x70, 0x3d, 0x83, 0xfb, 0x7b, 0x70, 0x5b, 0x2d, 0xc8, 0x32, 0x24, + 0x62, 0x6e, 0x62, 0xdd, 0xc0, 0xf6, 0x4f, 0xe1, 0xed, 0xc1, 0x64, 0xb8, + 0x20, 0x84, 0xc0, 0x95, 0xb8, 0xda, 0xca, 0x74, 0x48, 0x63, 0xb3, 0x33, + 0x2a, 0x9a, 0x1c, 0x14, 0xc9, 0xe6, 0xcd, 0x39, 0x3e, 0x54, 0x1f, 0xca, + 0x65, 0x0a, 0xf2, 0x39, 0x26, 0x8b, 0xbc, 0xa9, 0x75, 0xca, 0xcb, 0x8a, + 0x41, 0xe6, 0x62, 0x17, 0xd7, 0x25, 0xca, 0x75, 0x5a, 0xca, 0xc8, 0xb4, + 0xee, 0xf2, 0xb4, 0xed, 0x72, 0xa9, 0x5b, 0x7c, 0xb3, 0xe2, 0xe2, 0x73, + 0x1d, 0x8e, 0x02, 0xd2, 0xa4, 0xed, 0x52, 0x94, 0x2f, 0x4a, 0x04, 0x21, + 0x70, 0xa6, 0x88, 0xcf, 0x10, 0xef, 0x67, 0x4f, 0x9e, 0x46, 0x89, 0x7a, + 0x2f, 0x26, 0xf8, 0x18, 0x0f, 0x42, 0x72, 0x02, 0xf0, 0xc0, 0x00, 0x01, + 0x46, 0x69, 0x3d, 0x49, 0x9b, 0xf1, 0x8d, 0xd4, 0x72, 0xdf, 0x4b, 0x3a, + 0x57, 0xd0, 0xf9, 0xf9, 0x39, 0x79, 0xad, 0xa5, 0xd7, 0x16, 0x32, 0x61, + 0x4b, 0x6f, 0x22, 0xe7, 0x2a, 0xd7, 0x59, 0x16, 0x95, 0x7d, 0x52, 0xfb, + 0xb5, 0xf9, 0x3b, 0x2e, 0xc8, 0xbb, 0x2a, 0xdd, 0x3a, 0x55, 0x91, 0x59, + 0x3a, 0x95, 0xbb, 0x5b, 0x6f, 0x4e, 0xf7, 0x7b, 0x21, 0xde, 0xdc, 0xbf, + 0xa7, 0x29, 0x55, 0xc9, 0x45, 0x9b, 0xd6, 0x8b, 0xaa, 0xb1, 0x50, 0x1c, + 0xc5, 0x20, 0x63, 0x0b, 0x0c, 0x1c, 0xa7, 0x3a, 0x84, 0xba, 0x01, 0x94, + 0x61, 0x60, 0x6e, 0x84, 0x60, 0x30, 0x27, 0xc1, 0x80, 0x30, 0x07, 0x03, + 0xd5, 0x30, 0x66, 0x36, 0xb0, 0x35, 0xde, 0x0c, 0x59, 0x30, 0x22, 0x02, + 0xb4, 0x30, 0x0a, 0xc1, 0x33, 0x30, 0x07, 0x00, 0xaa, 0x30, 0x09, 0x40, + 0x61, 0x30, 0x0c, 0x80, 0x1e, 0x4e, 0x13, 0x01, 0x04, 0x01, 0xc3, 0x01, + 0x68, 0x0c, 0x33, 0x13, 0xac, 0x4d, 0xb3, 0x03, 0x08, 0x05, 0x13, 0x00, + 0x7c, 0x00, 0x42, 0x68, 0xac, 0x66, 0x69, 0x46, 0xf6, 0xcd, 0xb1, 0x88, + 0x94, 0x0d, 0x15, 0x7d, 0x1f, 0xd9, 0x45, 0x25, 0xc7, 0x0a, 0x7a, 0xdb, + 0x1b, 0xd4, 0xb6, 0x19, 0xac, 0xfc, 0x30, 0x37, 0xd5, 0xa0, 0x61, 0x0d, + 0x3a, 0x88, 0x05, 0x52, 0x2e, 0xda, 0xee, 0x7e, 0x17, 0xe4, 0xcb, 0x3f, + 0x98, 0x84, 0x5d, 0x9a, 0x8d, 0x44, 0xe4, 0x0f, 0x07, 0x62, 0xd5, 0x55, + 0x6e, 0x93, 0xf1, 0xe3, 0x33, 0x42, 0x55, 0xa4, 0xb6, 0xae, 0x6e, 0x57, + 0x16, 0xd6, 0x98, 0x68, 0x53, 0x76, 0xda, 0xcf, 0xd5, 0xc1, 0xe8, 0xf5, + 0x44, 0x8c, 0x5f, 0x53, 0x1c, 0x88, 0x4a, 0xa6, 0x0a, 0x79, 0x91, 0xa6, + 0x13, 0x3c, 0xd0, 0x51, 0x2c, 0xc8, 0xf6, 0xf7, 0x27, 0x89, 0xa7, 0x05, + 0x62, 0x3d, 0x0e, 0x4b, 0xc6, 0xa2, 0x56, 0x3a, 0xa5, 0x5e, 0xc3, 0x1d, + 0x0a, 0x5f, 0xb4, 0xe7, 0xb3, 0x0e, 0x8f, 0x45, 0x75, 0x14, 0x8c, 0x6a, + 0x56, 0xb2, 0xec, 0xaa, 0x39, 0xe5, 0x4c, 0x38, 0xc1, 0x32, 0x6d, 0x0d, + 0xd3, 0x71, 0xec, 0xa9, 0xcc, 0x54, 0xea, 0x2d, 0xb9, 0xda, 0xda, 0xe9, + 0xb2, 0x56, 0xe9, 0xd7, 0x6e, 0x11, 0xb3, 0xb7, 0x4f, 0x34, 0xa8, 0x4f, + 0x3f, 0x5d, 0x2f, 0xa8, 0xe3, 0x2a, 0x6c, 0xc9, 0x3a, 0x4a, 0x8d, 0xeb, + 0x38, 0x80, 0xb2, 0xd6, 0xd3, 0x14, 0x95, 0xd5, 0x5c, 0xad, 0x4f, 0x32, + 0xaa, 0x21, 0x9d, 0x86, 0xa3, 0x1c, 0xe7, 0xa0, 0xe8, 0x47, 0xa0, 0x55, + 0x27, 0x42, 0x84, 0xdf, 0x46, 0x25, 0x88, 0x62, 0x60, 0xbd, 0xac, 0x25, + 0xc6, 0x01, 0x22, 0x4f, 0xa4, 0x87, 0x19, 0x06, 0x0e, 0x34, 0xfd, 0x93, + 0x73, 0x36, 0xff, 0xda, 0x5e, 0xc9, 0x4d, 0xa8, 0xb2, 0x30, 0x07, 0x91, + 0xba, 0xc9, 0x12, 0x69, 0x8c, 0xc8, 0xc4, 0x31, 0x49, 0x07, 0xce, 0x69, + 0x7b, 0x29, 0x0b, 0x55, 0x91, 0xbd, 0x51, 0x7e, 0xfa, 0xd7, 0xd2, 0xdd, + 0xf4, 0xaa, 0xb5, 0x59, 0xcb, 0x99, 0x19, 0x27, 0x6f, 0xad, 0xdb, 0xde, + 0xfa, 0x4e, 0xde, 0xac, 0x9e, 0xca, 0xa6, 0xaa, 0x11, 0xf3, 0xce, 0x97, + 0xf4, 0xaa, 0x34, 0xe9, 0xb1, 0x19, 0x1c, 0xe4, 0x63, 0x31, 0xd4, 0x97, + 0x28, 0x9a, 0x04, 0x4a, 0x20, 0x80, 0x57, 0x62, 0xbb, 0x9d, 0x4a, 0x3a, + 0x70, 0x0c, 0x11, 0x70, 0x5f, 0x8c, 0x15, 0x40, 0xdd, 0xcc, 0x3f, 0x1c, + 0xe6, 0x0d, 0xc8, 0x52, 0xa7, 0xcc, 0x27, 0x10, 0x97, 0x0c, 0x0d, 0x40, + 0x4a, 0x4c, 0x06, 0x10, 0x25, 0x8c, 0x01, 0xe0, 0x15, 0xca, 0x80, 0x16, + 0x18, 0x00, 0xa0, 0x04, 0x38, 0xa6, 0x02, 0xa8, 0x02, 0x46, 0x31, 0xe0, + 0x19, 0x66, 0x0d, 0x68, 0x02, 0x80, 0x60, 0x21, 0x4a, 0xde, 0x8b, 0x0e, + 0x1a, 0x8d, 0xb2, 0xc7, 0xdd, 0x99, 0xbf, 0x90, 0xf4, 0x55, 0xfe, 0x93, + 0xc0, 0x4f, 0xc6, 0x51, 0x8b, 0x6f, 0x85, 0x0b, 0x5a, 0x69, 0x6d, 0xd9, + 0x97, 0xd6, 0x95, 0xc0, 0xaf, 0x94, 0x8d, 0x92, 0x55, 0x7d, 0x96, 0x2b, + 0x62, 0x7f, 0xdd, 0xfa, 0x35, 0xdc, 0xdc, 0x21, 0xf9, 0x2c, 0x62, 0x22, + 0xc4, 0x60, 0x28, 0xd4, 0x9e, 0x24, 0xfd, 0x43, 0x67, 0x3a, 0x28, 0xe4, + 0xba, 0xdc, 0xac, 0xce, 0xce, 0x34, 0x39, 0x50, 0x81, 0x4e, 0x35, 0x58, + 0xbd, 0x65, 0xb1, 0xce, 0x22, 0x3d, 0x88, 0xe5, 0x4c, 0x93, 0xe8, 0x7b, + 0x3b, 0xee, 0xda, 0xc4, 0xb8, 0x38, 0xdf, 0xb0, 0x17, 0x66, 0xa7, 0x48, + 0x4b, 0x3c, 0xd0, 0x93, 0xe7, 0xd9, 0xf5, 0x2a, 0x75, 0xf1, 0xf0, 0x7a, + 0xb6, 0x37, 0x2d, 0x32, 0xc0, 0x5c, 0x26, 0x12, 0x07, 0xf4, 0x79, 0xdf, + 0xb1, 0x1b, 0xb3, 0x46, 0x7e, 0xff, 0xfb, 0xd4, 0x60, 0x5c, 0x8d, 0x88, + 0xcf, 0x70, 0x3d, 0x8b, 0xf8, 0x7b, 0x70, 0x57, 0x4e, 0x08, 0x31, 0x34, + 0x25, 0x6e, 0x23, 0x81, 0xc0, 0xf4, 0x0f, 0xe1, 0xed, 0xc1, 0x5d, 0x38, + 0x21, 0x18, 0xb1, 0x89, 0xb8, 0xb2, 0xa1, 0x9c, 0xbe, 0x1f, 0xca, 0x35, + 0x0b, 0xf8, 0x31, 0xd2, 0xcd, 0xd1, 0x15, 0xe8, 0xa5, 0x63, 0xc7, 0x36, + 0x77, 0x89, 0x36, 0xe7, 0xb0, 0x62, 0xb8, 0xc6, 0x50, 0x31, 0x34, 0x20, + 0x1a, 0xa0, 0x30, 0x1f, 0xec, 0x34, 0x42, 0x5e, 0x6d, 0x09, 0x42, 0x61, + 0x3b, 0x54, 0x2a, 0x9f, 0xa9, 0x54, 0xca, 0x02, 0x68, 0xea, 0x67, 0x95, + 0x48, 0x41, 0x2c, 0x70, 0xd5, 0x69, 0x86, 0x06, 0x24, 0x26, 0x1a, 0x1e, + 0xc3, 0x5b, 0x29, 0xce, 0x9b, 0xb0, 0x32, 0x36, 0x3b, 0x42, 0x15, 0x8b, + 0x42, 0x66, 0x8e, 0x27, 0x6e, 0xd0, 0xa8, 0x62, 0xca, 0xa1, 0x1a, 0xea, + 0xe1, 0xe0, 0x8c, 0x4f, 0x80, 0xba, 0xc0, 0x07, 0x84, 0x65, 0xc6, 0x34, + 0x63, 0x66, 0x65, 0x26, 0xc8, 0x33, 0x72, 0xd9, 0x21, 0x16, 0x44, 0x7c, + 0x2e, 0x2d, 0xb2, 0x8a, 0x42, 0x31, 0x88, 0x5a, 0x98, 0xf3, 0x2d, 0xab, + 0x7a, 0x56, 0x76, 0x9c, 0xc9, 0x62, 0x51, 0x3a, 0xd1, 0x4a, 0xcf, 0xed, + 0xba, 0x6b, 0xd6, 0xd6, 0xb3, 0xb7, 0x7b, 0x5d, 0x37, 0xcb, 0xad, 0x5e, + 0x9b, 0x79, 0x3c, 0x97, 0xea, 0xcf, 0x59, 0xa6, 0xd8, 0x89, 0xec, 0xdd, + 0x16, 0x94, 0xbb, 0xdd, 0x66, 0x9c, 0xe4, 0x41, 0x72, 0x22, 0x10, 0x48, + 0x4d, 0x9e, 0x40, 0xb0, 0xe3, 0x3d, 0x8e, 0x39, 0x87, 0x98, 0x2e, 0x60, + 0xb1, 0x18, 0x45, 0x41, 0x5d, 0x98, 0xe6, 0xf5, 0x9a, 0x1f, 0x70, 0xe3, + 0xd3, 0x98, 0x89, 0x20, 0xe0, 0x18, 0x31, 0x40, 0x55, 0x98, 0x1a, 0x20, + 0x2a, 0x18, 0x0e, 0x00, 0x06, 0x8d, 0x00, 0xbc, 0x06, 0x00, 0xf4, 0xc0, + 0x1d, 0x00, 0x2c, 0xc0, 0x62, 0x03, 0x00, 0xc6, 0x11, 0x1e, 0xe8, 0xc1, + 0xc8, 0x01, 0xb8, 0xc0, 0x43, 0x00, 0x6c, 0xd0, 0xa0, 0x71, 0xd1, 0x51, + 0x15, 0x18, 0x1c, 0x0a, 0xee, 0x4a, 0xdc, 0x4c, 0xef, 0x46, 0xe2, 0xec, + 0x05, 0x98, 0xc8, 0xe7, 0xe5, 0x52, 0x68, 0x94, 0x0e, 0xb9, 0x9e, 0xf7, + 0xf5, 0xd4, 0xa9, 0x16, 0x7d, 0x9c, 0xc7, 0x05, 0xea, 0x83, 0x60, 0x38, + 0xe3, 0x59, 0xa6, 0x8a, 0x3a, 0x97, 0x9f, 0xf9, 0x7d, 0x04, 0x61, 0x34, + 0xa9, 0x66, 0x2a, 0xc2, 0x9e, 0x64, 0xea, 0xcc, 0x05, 0x85, 0x84, 0xac, + 0xe7, 0xf2, 0x51, 0xa9, 0x8a, 0x23, 0x7a, 0xa5, 0x06, 0xe0, 0xaf, 0x5d, + 0x1d, 0xaf, 0x15, 0xf6, 0x3d, 0x1b, 0x0d, 0x03, 0x14, 0xbb, 0xbe, 0x63, + 0x82, 0xb6, 0x92, 0xab, 0x4b, 0x62, 0x16, 0xcf, 0xb5, 0x72, 0x36, 0x2a, + 0xed, 0xc9, 0x08, 0x9d, 0x76, 0x71, 0xb0, 0xa4, 0x52, 0x35, 0x31, 0xcb, + 0x7a, 0xb2, 0x8e, 0x6a, 0x25, 0xb6, 0x05, 0x99, 0x0c, 0x75, 0x32, 0xc3, + 0x71, 0x77, 0x7c, 0x72, 0xae, 0x8e, 0x66, 0x35, 0xb8, 0x4e, 0x90, 0x51, + 0x58, 0x55, 0x29, 0x16, 0xd9, 0xd5, 0x4a, 0x05, 0x6e, 0x8e, 0xc8, 0xd2, + 0x47, 0x4f, 0x21, 0xb7, 0x57, 0x97, 0x2e, 0xbc, 0x5f, 0x9b, 0x4e, 0x13, + 0xde, 0x2e, 0x0b, 0xdb, 0x2a, 0x29, 0xe2, 0x30, 0xf2, 0x70, 0x5d, 0xa7, + 0xd8, 0x5e, 0x9a, 0x2c, 0x4c, 0x6a, 0x17, 0x09, 0x5f, 0xb4, 0xa7, 0x9c, + 0xd7, 0x0e, 0xdd, 0xab, 0x99, 0xb4, 0xc3, 0x11, 0x65, 0x4c, 0xd8, 0x70, + 0x17, 0x94, 0xea, 0x59, 0x4e, 0xc8, 0x9e, 0x82, 0x8f, 0x71, 0x33, 0x0c, + 0x61, 0xc1, 0x12, 0x21, 0xe0, 0xc6, 0x2d, 0x8b, 0x92, 0xbd, 0x50, 0xaf, + 0x39, 0x96, 0x43, 0x52, 0x7f, 0x0e, 0xf9, 0x40, 0x02, 0xd5, 0x0b, 0x9e, + 0x49, 0xb2, 0xa4, 0x3f, 0x3d, 0xb9, 0x69, 0x71, 0x0e, 0x99, 0x44, 0x40, + 0x5d, 0x6a, 0x24, 0x84, 0x0e, 0x44, 0x2e, 0xc5, 0xb9, 0x83, 0x6f, 0xa6, + 0xcb, 0xa0, 0xbe, 0xd4, 0x25, 0x69, 0x97, 0xbb, 0x69, 0xde, 0xab, 0x2e, + 0x88, 0xcf, 0x22, 0x99, 0x5e, 0xdf, 0xf5, 0xfd, 0xf7, 0xbe, 0x8b, 0xc8, + 0xd6, 0xdf, 0xdb, 0x47, 0xb6, 0xf6, 0xf5, 0xb7, 0xf5, 0xff, 0xa9, 0xf7, + 0x7f, 0xec, 0xbd, 0xd1, 0xf5, 0x32, 0x3b, 0xb9, 0x4e, 0x18, 0x29, 0x19, + 0x5d, 0x9a, 0x50, 0x31, 0xdc, 0x3b, 0x16, 0x08, 0xb5, 0x30, 0x3d, 0x40, + 0x9e, 0x30, 0x7a, 0x80, 0xa5, 0x31, 0xb9, 0xcf, 0x72, 0x3f, 0x00, 0xc0, + 0x5b, 0x30, 0xff, 0xc0, 0x28, 0x30, 0x5d, 0x00, 0x0d, 0x1e, 0x05, 0xa8, + 0xc0, 0x5e, 0x00, 0x28, 0xc0, 0x2f, 0x00, 0x94, 0x44, 0x01, 0xd8, 0x58, + 0x04, 0x80, 0xb8, 0x22, 0x26, 0x0f, 0x81, 0x2c, 0xe6, 0x03, 0x58, 0x12, + 0xa6, 0x00, 0x00, 0x05, 0x04, 0x0b, 0x4a, 0x85, 0x03, 0x6f, 0xdd, 0xc8, + 0x57, 0x74, 0xfa, 0x48, 0x9f, 0xb7, 0x2d, 0xc5, 0x97, 0x4a, 0x60, 0xa7, + 0x12, 0x01, 0x91, 0xc7, 0xa1, 0xdb, 0xaf, 0xeb, 0xc1, 0x1a, 0x9c, 0x87, + 0xbb, 0x12, 0x8a, 0x31, 0xbb, 0x8e, 0x5c, 0xb7, 0xb4, 0xd2, 0xea, 0x36, + 0xc7, 0x06, 0xb4, 0xd8, 0x75, 0xf5, 0x75, 0xdf, 0xfc, 0xe4, 0xd1, 0x28, + 0x93, 0x2c, 0x16, 0x47, 0xf1, 0x59, 0x61, 0x29, 0x18, 0x5b, 0xdc, 0x29, + 0xd8, 0x1b, 0x99, 0x5f, 0xa6, 0xcf, 0xc8, 0xf0, 0xd3, 0x4e, 0x2e, 0xd3, + 0xed, 0xd1, 0x52, 0x2d, 0xcb, 0x0b, 0x85, 0xdc, 0x8f, 0x18, 0x18, 0x10, + 0x83, 0xa5, 0x16, 0xc6, 0x72, 0x18, 0x90, 0xd9, 0x4e, 0x56, 0x84, 0x79, + 0xe6, 0x6f, 0x69, 0x06, 0x8a, 0x84, 0x90, 0x8c, 0x8f, 0x8f, 0xb4, 0x5c, + 0x79, 0x0e, 0x07, 0xc8, 0xd5, 0xff, 0xfb, 0xd4, 0x60, 0x58, 0x0d, 0xf8, + 0x8a, 0x70, 0x3d, 0x83, 0xf8, 0x7b, 0x70, 0x59, 0x0e, 0x08, 0x31, 0x20, + 0x25, 0x6e, 0x23, 0x25, 0xc0, 0xf6, 0x2f, 0xe1, 0xed, 0xc1, 0x5a, 0x37, + 0xa0, 0xc0, 0xf1, 0x15, 0xb9, 0x95, 0xeb, 0xc6, 0x61, 0x6e, 0x90, 0xe7, + 0x62, 0x45, 0xc2, 0xa2, 0x25, 0xda, 0xf3, 0x92, 0xe5, 0xb5, 0x30, 0xd7, + 0x0b, 0x2a, 0x17, 0xaf, 0x10, 0xdc, 0xc4, 0x4c, 0xce, 0xae, 0x42, 0x99, + 0xd8, 0x93, 0xf4, 0x55, 0x1d, 0x51, 0x0f, 0x54, 0x02, 0x10, 0xc6, 0xc2, + 0x9f, 0x63, 0x56, 0x45, 0x80, 0x7d, 0xbd, 0x48, 0x2e, 0x23, 0xb2, 0xb8, + 0x46, 0x39, 0x70, 0xa9, 0x64, 0x61, 0x6d, 0x4c, 0x4e, 0xe4, 0xc3, 0x67, + 0x25, 0xf5, 0x2a, 0xb1, 0x7d, 0x89, 0x5e, 0x7f, 0xa3, 0x0c, 0x15, 0x2c, + 0xe8, 0x98, 0x5a, 0x36, 0x52, 0xcd, 0xc7, 0x22, 0x26, 0xa3, 0xc4, 0xe5, + 0x4a, 0xa2, 0x82, 0x1e, 0x72, 0xa9, 0x38, 0x00, 0x1b, 0x72, 0x45, 0x64, + 0x1e, 0x36, 0x86, 0x6d, 0xd2, 0x28, 0xc8, 0xa6, 0x52, 0xe9, 0xb4, 0x9b, + 0x34, 0x36, 0x8b, 0x4c, 0xbc, 0x91, 0x16, 0x4c, 0x06, 0x7d, 0xed, 0x6d, + 0x29, 0xbd, 0x55, 0x4a, 0x9a, 0x5b, 0x96, 0xab, 0x7a, 0x7d, 0xed, 0x7a, + 0xd5, 0x76, 0xf4, 0xae, 0x7d, 0xfd, 0xdd, 0xa9, 0xf6, 0x59, 0x56, 0xea, + 0x8c, 0xa8, 0xa5, 0xdb, 0xdb, 0x21, 0x3d, 0xab, 0x22, 0x25, 0x8d, 0x62, + 0x11, 0x8b, 0x57, 0x5b, 0x11, 0x99, 0x10, 0xc2, 0xee, 0xa4, 0x18, 0x61, + 0xa1, 0x11, 0xc5, 0x30, 0x44, 0x50, 0x78, 0xea, 0x28, 0x93, 0x84, 0x88, + 0x60, 0x38, 0x80, 0x5a, 0x60, 0xc3, 0x02, 0xd4, 0x62, 0xfa, 0xa3, 0xbe, + 0x7b, 0x26, 0x8b, 0x5c, 0x61, 0xaf, 0x82, 0x42, 0x60, 0x99, 0x00, 0xe4, + 0x60, 0x55, 0x80, 0x82, 0x60, 0x34, 0x00, 0x54, 0x60, 0x23, 0x80, 0x4a, + 0x0e, 0x01, 0xfc, 0xc0, 0x22, 0x00, 0x64, 0xc0, 0x41, 0x03, 0xb8, 0xc3, + 0x8c, 0x22, 0x80, 0xc1, 0x09, 0x02, 0x30, 0xc0, 0x24, 0x00, 0x6c, 0xda, + 0x65, 0x29, 0xae, 0xa8, 0x5d, 0xa7, 0x4a, 0x0d, 0xb5, 0x0d, 0xc3, 0x0d, + 0x7e, 0x8e, 0x2c, 0xfe, 0x3b, 0x6f, 0xfb, 0x70, 0x7a, 0xdf, 0x9b, 0x8e, + 0x2d, 0xb9, 0xda, 0x90, 0x14, 0x22, 0x24, 0xd3, 0x5c, 0x98, 0x7a, 0x69, + 0xc1, 0x8d, 0x36, 0x8e, 0xc4, 0x75, 0xa1, 0x3e, 0xf3, 0x2e, 0xe3, 0xfd, + 0x07, 0xc6, 0xa0, 0x59, 0x96, 0xef, 0x94, 0x42, 0x09, 0xaa, 0xbe, 0xf9, + 0x49, 0x29, 0x0e, 0x66, 0xcc, 0x9e, 0x2f, 0x57, 0x68, 0x86, 0x57, 0xb1, + 0xd5, 0x33, 0xb3, 0x22, 0x74, 0xae, 0x78, 0xf9, 0x1b, 0xb3, 0xea, 0xb1, + 0x97, 0xd3, 0x17, 0x64, 0x4e, 0xa3, 0xee, 0x68, 0xc0, 0x7a, 0xce, 0xd6, + 0xa6, 0x48, 0xb6, 0xc6, 0x50, 0x36, 0x40, 0x71, 0x36, 0x9e, 0x1d, 0xaa, + 0xed, 0x3f, 0x99, 0xa1, 0x56, 0x88, 0x4b, 0xb4, 0x2a, 0x21, 0x1e, 0x72, + 0xbf, 0x3f, 0x23, 0xbb, 0x53, 0xae, 0x52, 0x90, 0xd4, 0xc8, 0xd5, 0x2a, + 0xa6, 0x2b, 0xc7, 0x4e, 0x48, 0x62, 0xa4, 0xed, 0x82, 0xc0, 0xc2, 0xf1, + 0xdb, 0x72, 0x26, 0x8a, 0x63, 0xa1, 0x2b, 0x33, 0xc5, 0x66, 0x5b, 0x1c, + 0x9f, 0xab, 0x32, 0xa2, 0x57, 0xd2, 0x3b, 0x1b, 0x72, 0x91, 0xb9, 0x36, + 0xc8, 0xad, 0x63, 0x84, 0xf5, 0xae, 0x46, 0x27, 0x25, 0x62, 0x1c, 0xad, + 0x7e, 0x9f, 0x82, 0xee, 0x2a, 0x96, 0x3a, 0x41, 0x70, 0x58, 0x64, 0x2f, + 0x06, 0x89, 0x73, 0x6d, 0x8e, 0x5d, 0x0c, 0xb6, 0xe3, 0xf0, 0x9f, 0x42, + 0x42, 0xcf, 0xd2, 0xf6, 0x79, 0x29, 0x92, 0xe5, 0xf0, 0xb7, 0x1c, 0x88, + 0xe4, 0xa1, 0x33, 0x2d, 0xe4, 0x54, 0x6c, 0xde, 0x5f, 0x49, 0x2b, 0x68, + 0xb9, 0xd6, 0x32, 0x6c, 0xcf, 0xcb, 0xb3, 0x12, 0xa7, 0x2b, 0xb1, 0xe5, + 0x3d, 0x8d, 0x1c, 0xcd, 0x4d, 0xa8, 0x55, 0xb7, 0xd1, 0xba, 0xaa, 0x33, + 0x5a, 0xab, 0x56, 0x5a, 0x7b, 0x76, 0xeb, 0xd7, 0xa3, 0x55, 0xfd, 0x19, + 0xd0, 0x9f, 0xda, 0xb9, 0x2c, 0xed, 0xa6, 0xed, 0x5e, 0xe7, 0xbe, 0x9b, + 0xbd, 0x2a, 0x8f, 0xb3, 0x74, 0xd5, 0x95, 0x7f, 0x4f, 0x57, 0x6a, 0x5d, + 0x9f, 0x75, 0x43, 0x88, 0xb0, 0x50, 0x90, 0xab, 0x48, 0x1e, 0x02, 0xa3, + 0x18, 0x8e, 0x26, 0x2a, 0x2e, 0x00, 0x50, 0x30, 0x08, 0x00, 0xcb, 0x30, + 0x32, 0x02, 0x64, 0x30, 0xf1, 0xe1, 0x43, 0x39, 0x62, 0x48, 0x2a, 0x30, + 0x81, 0x41, 0xb7, 0x30, 0x2e, 0x00, 0xdc, 0x30, 0x16, 0x40, 0x77, 0x30, + 0x0f, 0x00, 0x50, 0x30, 0x08, 0x40, 0x31, 0x30, 0x03, 0x40, 0x19, 0x06, + 0x80, 0x38, 0x60, 0x2b, 0x00, 0xce, 0x62, 0xfb, 0x89, 0x92, 0x60, 0xd0, + 0x00, 0x76, 0x60, 0x23, 0x80, 0x00, 0x36, 0xd4, 0xd6, 0x55, 0x89, 0x9c, + 0xaf, 0x62, 0xd0, 0x13, 0x5e, 0x86, 0x5a, 0x0e, 0xa8, 0x69, 0xe5, 0x4f, + 0xd3, 0xa3, 0x09, 0x97, 0xc2, 0xa2, 0x76, 0x65, 0x0c, 0xce, 0xec, 0xb5, + 0xd2, 0xaf, 0x51, 0xf6, 0x66, 0x10, 0x97, 0xe1, 0xca, 0x9c, 0x65, 0x0d, + 0x31, 0xab, 0x51, 0xdd, 0xb8, 0xfe, 0x66, 0xfa, 0x46, 0xa1, 0x8a, 0xb6, + 0xde, 0x07, 0x54, 0xf4, 0x49, 0xbd, 0x73, 0x58, 0x59, 0x55, 0x45, 0x3f, + 0x8e, 0x79, 0xfb, 0x7c, 0x29, 0xa7, 0xba, 0xd2, 0x86, 0x09, 0xcc, 0xae, + 0x36, 0xd0, 0xae, 0xda, 0xf5, 0xb9, 0x10, 0xf1, 0x89, 0xb9, 0xfa, 0x1a, + 0x9f, 0x2f, 0x0e, 0x0b, 0x96, 0x04, 0xe3, 0x7a, 0xbd, 0x3e, 0x8c, 0x5f, + 0x9d, 0xc9, 0xc5, 0x14, 0x78, 0x2b, 0xd5, 0xea, 0xf6, 0xf3, 0xaa, 0x13, + 0x7a, 0x91, 0xa3, 0x4e, 0x4a, 0xff, 0xfb, 0xd4, 0x60, 0x59, 0x0d, 0xd8, + 0xce, 0x70, 0x3d, 0x83, 0xf8, 0x7b, 0x70, 0x54, 0x0e, 0x08, 0x31, 0x2c, + 0x22, 0x6e, 0x23, 0x11, 0xc0, 0xf6, 0x4f, 0xe1, 0xed, 0xc1, 0x6e, 0x38, + 0x20, 0x80, 0x90, 0x95, 0xb8, 0xe5, 0x69, 0xca, 0xa4, 0x55, 0x9c, 0xad, + 0x8a, 0xf5, 0x01, 0xd4, 0xa3, 0x41, 0xb3, 0x9e, 0xcb, 0xf7, 0x54, 0x21, + 0xe6, 0x9d, 0xd3, 0x88, 0x6b, 0x72, 0xb1, 0x32, 0xb4, 0xd8, 0xe1, 0xb4, + 0x21, 0x5c, 0xc2, 0xda, 0x6e, 0xce, 0x87, 0x40, 0x84, 0xa2, 0x76, 0xe1, + 0x3b, 0x36, 0x18, 0x9b, 0x1e, 0x9f, 0xb3, 0xa3, 0x5b, 0xd2, 0x31, 0x93, + 0x0f, 0x1c, 0xa2, 0xb1, 0x21, 0x4a, 0xd7, 0x26, 0x15, 0x72, 0xa5, 0xbd, + 0x4a, 0xf9, 0x65, 0xb6, 0x13, 0x23, 0x43, 0xd4, 0xf2, 0xca, 0x17, 0x55, + 0xca, 0x49, 0xad, 0x96, 0x19, 0x96, 0x6d, 0xbb, 0x4c, 0xb1, 0x17, 0x64, + 0x99, 0x02, 0x3f, 0x1f, 0x31, 0x99, 0x07, 0x0a, 0xbd, 0x56, 0x5b, 0x04, + 0xc9, 0x80, 0x19, 0x67, 0x0f, 0x4b, 0x52, 0x4c, 0xfa, 0x8a, 0x26, 0xcf, + 0x6d, 0x88, 0xc6, 0x05, 0xb2, 0xb3, 0x00, 0x4c, 0xec, 0x65, 0xb5, 0x03, + 0x40, 0x29, 0x04, 0x38, 0xcf, 0x05, 0xb2, 0xeb, 0xea, 0x69, 0x93, 0xdd, + 0x51, 0x64, 0xd5, 0x54, 0x9f, 0xb6, 0xbd, 0xfd, 0x1b, 0xa2, 0xe5, 0xd0, + 0xf6, 0x4b, 0xad, 0xaf, 0x7d, 0xbe, 0xc8, 0xfc, 0xdb, 0xf4, 0xec, 0x5d, + 0x57, 0xb3, 0x26, 0x85, 0xbb, 0x74, 0xbd, 0x93, 0xce, 0xed, 0x31, 0x18, + 0xaa, 0xa9, 0x32, 0x0c, 0x12, 0xc6, 0x46, 0x20, 0x61, 0xb3, 0x82, 0x67, + 0x1d, 0x20, 0x30, 0x1f, 0x01, 0x0f, 0x30, 0x10, 0xc2, 0xa2, 0x30, 0x11, + 0x66, 0x5d, 0x32, 0xbb, 0xc8, 0x84, 0x30, 0x06, 0x01, 0xd9, 0x04, 0x81, + 0x78, 0x32, 0x03, 0x58, 0x30, 0x03, 0x23, 0x00, 0x34, 0x00, 0xf4, 0x47, + 0x03, 0x00, 0xa8, 0x60, 0x31, 0x80, 0x9e, 0x63, 0x0e, 0x05, 0x2e, 0x60, + 0xd0, 0x80, 0x6e, 0x60, 0x22, 0x00, 0x08, 0x77, 0x08, 0x70, 0x13, 0x0d, + 0xcb, 0x70, 0x1f, 0xb6, 0xbe, 0xff, 0xcb, 0xe5, 0xad, 0xce, 0xc5, 0x3b, + 0x1c, 0x7f, 0x9e, 0x39, 0x0b, 0x76, 0x60, 0x90, 0xfb, 0x20, 0x88, 0x43, + 0x6b, 0xbd, 0xf7, 0x61, 0xf2, 0xb9, 0xb6, 0x0e, 0x93, 0xea, 0xb1, 0x6f, + 0x46, 0xa4, 0x2d, 0x21, 0xc8, 0x47, 0xa4, 0x99, 0x7c, 0x25, 0x70, 0xdc, + 0x45, 0xa5, 0xb7, 0x48, 0xcc, 0x9a, 0x28, 0xe2, 0xc3, 0x68, 0x6b, 0x6a, + 0xf2, 0xb5, 0x44, 0x9f, 0x5c, 0x36, 0xd1, 0x52, 0xca, 0xbe, 0xad, 0x6a, + 0x57, 0xc5, 0xca, 0xe9, 0x1e, 0xb7, 0x01, 0x73, 0x01, 0x4a, 0xde, 0xd4, + 0x92, 0x95, 0xdb, 0x13, 0x22, 0x10, 0xaf, 0x3c, 0x63, 0xed, 0xd9, 0xfc, + 0xe6, 0xf9, 0x44, 0x9f, 0xab, 0xc9, 0x4d, 0x06, 0x75, 0xd2, 0xfc, 0xf0, + 0x94, 0xae, 0x69, 0xf5, 0x71, 0xb0, 0xa3, 0x6a, 0x8a, 0xb8, 0x4e, 0x3c, + 0x64, 0x69, 0x7e, 0xb0, 0xad, 0xcb, 0x0a, 0xa9, 0xe3, 0x8a, 0x88, 0xfe, + 0x69, 0x56, 0x1d, 0x6b, 0xf8, 0x5b, 0x45, 0xa7, 0x17, 0x0a, 0x4d, 0x17, + 0x75, 0x0a, 0xaa, 0x2a, 0xb9, 0x99, 0xfb, 0x4c, 0x74, 0x44, 0x06, 0x06, + 0xf6, 0x89, 0xac, 0xf2, 0xeb, 0x96, 0xd8, 0x28, 0xc6, 0x76, 0x07, 0x8e, + 0x6a, 0xe3, 0x9d, 0xe4, 0x43, 0x9e, 0x56, 0x45, 0x73, 0x8a, 0xc1, 0x7b, + 0x6b, 0x53, 0x37, 0x26, 0x5b, 0x50, 0xba, 0x26, 0x5b, 0xe8, 0xc2, 0xe6, + 0xac, 0x4e, 0x9f, 0x2b, 0x98, 0xaf, 0xe1, 0x1f, 0x68, 0x7a, 0xb5, 0x1b, + 0x19, 0x99, 0x0f, 0x45, 0x9b, 0xe9, 0xe2, 0xda, 0xaa, 0x1b, 0x87, 0x33, + 0xe4, 0x8a, 0x1c, 0xa9, 0x3d, 0x81, 0xab, 0x93, 0x99, 0x7b, 0x1b, 0xf5, + 0xce, 0xce, 0xf6, 0xdb, 0x21, 0x10, 0x1c, 0x47, 0xad, 0xba, 0x92, 0x35, + 0x8d, 0xbc, 0xa5, 0x91, 0x51, 0x4a, 0x81, 0x42, 0x6a, 0xb9, 0xcc, 0xe9, + 0xad, 0xdc, 0xab, 0xd9, 0x91, 0x6b, 0x6d, 0xad, 0x4d, 0x5d, 0x68, 0xd5, + 0xad, 0xd5, 0x3f, 0x4f, 0x74, 0x3e, 0xf6, 0x47, 0xbe, 0xf5, 0xe7, 0xd2, + 0xcf, 0xe9, 0x57, 0x46, 0xd9, 0x6d, 0x49, 0x26, 0x35, 0x34, 0x39, 0xdd, + 0xb7, 0xaa, 0x16, 0x8a, 0x61, 0x21, 0xa8, 0x35, 0x46, 0x38, 0xa8, 0x98, + 0x72, 0x22, 0xe1, 0xb0, 0x31, 0x04, 0x84, 0x00, 0x61, 0x21, 0x12, 0x18, + 0x46, 0x60, 0x0c, 0x0b, 0xa0, 0x3f, 0x4c, 0x10, 0x10, 0x93, 0x0c, 0x31, + 0x68, 0xb5, 0xcd, 0x79, 0xa1, 0xc2, 0x0c, 0x1e, 0x20, 0x62, 0x4c, 0x0a, + 0x30, 0x2e, 0x0c, 0x04, 0x40, 0x17, 0xcc, 0x00, 0xf0, 0x0a, 0x09, 0x00, + 0x03, 0x69, 0x03, 0x00, 0x15, 0x98, 0x06, 0x00, 0x5a, 0x18, 0x89, 0x63, + 0x49, 0x18, 0x1a, 0x40, 0x37, 0x18, 0x04, 0xe0, 0x0f, 0x99, 0x8c, 0x80, + 0x76, 0x80, 0xd2, 0x1b, 0x67, 0x52, 0x00, 0x76, 0xad, 0xdb, 0x9e, 0x77, + 0x25, 0x33, 0xf1, 0xb9, 0xd7, 0x79, 0xb6, 0x9a, 0xb3, 0x34, 0xdb, 0x40, + 0x8f, 0xc3, 0x5e, 0xa8, 0xf7, 0xbb, 0x70, 0x64, 0xf4, 0x30, 0xd9, 0x98, + 0x1b, 0x49, 0x65, 0xb3, 0x50, 0xb7, 0x2e, 0xa3, 0xf1, 0x7a, 0x7a, 0x96, + 0xa5, 0x98, 0xad, 0x57, 0x83, 0x8c, 0x07, 0x7b, 0xc8, 0x86, 0xf3, 0x3e, + 0xd5, 0x2f, 0xc9, 0xd9, 0xcb, 0x0d, 0x50, 0xb8, 0x55, 0x21, 0xe7, 0x52, + 0x6e, 0x23, 0xb7, 0x68, 0x96, 0x08, 0xa7, 0x22, 0x71, 0xea, 0x98, 0xc9, + 0x46, 0x23, 0x21, 0xac, 0x37, 0x42, 0x51, 0xb3, 0xc0, 0x61, 0x86, 0x6e, + 0xc2, 0x39, 0x0e, 0x68, 0xa8, 0xa6, 0xe5, 0x03, 0x6c, 0xd0, 0x90, 0xe6, + 0xf6, 0x84, 0x6c, 0x25, 0x6c, 0xff, 0xfb, 0xd4, 0x60, 0x56, 0x0d, 0xd8, + 0xa3, 0x70, 0x3d, 0x8b, 0xf8, 0x7b, 0x70, 0x57, 0xee, 0x08, 0x32, 0x18, + 0x65, 0x6e, 0x22, 0xe5, 0xc0, 0xf4, 0x0f, 0xe1, 0xed, 0xc1, 0x54, 0x37, + 0xa0, 0xc4, 0x31, 0x89, 0xb9, 0x6a, 0xdc, 0x9f, 0x32, 0xb3, 0xae, 0xcc, + 0x0c, 0xa9, 0xd9, 0x50, 0xcd, 0x29, 0x55, 0xce, 0x26, 0x0d, 0x57, 0x68, + 0x53, 0x4c, 0xc7, 0xd9, 0xe6, 0xad, 0x51, 0xbe, 0xea, 0x55, 0x7b, 0x8b, + 0xa3, 0x99, 0x5c, 0x74, 0x30, 0x2e, 0x13, 0xe9, 0x96, 0xc5, 0xa8, 0x6e, + 0x0a, 0x13, 0x29, 0x95, 0xf3, 0x45, 0xd6, 0x9b, 0x4f, 0xf6, 0x65, 0xe5, + 0x76, 0x60, 0x40, 0x65, 0x49, 0xc7, 0x78, 0xfd, 0xea, 0xc5, 0x9f, 0x29, + 0x9c, 0x58, 0x98, 0xdb, 0xd3, 0xf0, 0xea, 0xfa, 0x22, 0xc3, 0x71, 0xbe, + 0xbb, 0x43, 0x14, 0x2b, 0xec, 0x70, 0x95, 0x4b, 0x68, 0x62, 0xfa, 0x9e, + 0x29, 0x6f, 0x3c, 0xcb, 0x36, 0x73, 0x6c, 0x97, 0xe8, 0xe8, 0x2f, 0xf1, + 0x97, 0x04, 0x80, 0x00, 0x3f, 0xc9, 0x34, 0xb5, 0x26, 0x6e, 0xb7, 0xb7, + 0xfa, 0x29, 0xfd, 0x33, 0xea, 0x97, 0xdc, 0xff, 0x34, 0x54, 0x09, 0x65, + 0x2a, 0xf7, 0x63, 0x5e, 0x64, 0x79, 0x77, 0xe7, 0x59, 0xa8, 0xdf, 0xd8, + 0x96, 0xad, 0xd5, 0x7d, 0x95, 0x2f, 0xa5, 0xf4, 0x55, 0xbd, 0xdd, 0x5a, + 0x7d, 0x6c, 0xad, 0xde, 0xfc, 0xa9, 0xfb, 0x3d, 0xfc, 0xf6, 0xd6, 0xbb, + 0xea, 0xdb, 0xf9, 0xf5, 0xfa, 0x36, 0xba, 0x9c, 0x8e, 0xce, 0x44, 0x42, + 0x51, 0x9e, 0xce, 0xc7, 0x12, 0x2b, 0x90, 0x22, 0xe3, 0x45, 0xe2, 0x61, + 0xd1, 0xaa, 0x1e, 0x28, 0x79, 0xcc, 0x0d, 0xc0, 0x37, 0xcc, 0x18, 0x30, + 0x6a, 0x8c, 0x52, 0x86, 0xe5, 0xce, 0xb5, 0xe1, 0x28, 0x0c, 0x30, 0xe0, + 0x41, 0xcc, 0x11, 0x50, 0x1a, 0x0c, 0x09, 0x40, 0x0b, 0x4c, 0x05, 0x30, + 0x03, 0x85, 0x80, 0x49, 0x76, 0xc4, 0x20, 0x11, 0x0c, 0x01, 0xc2, 0x60, + 0x82, 0x10, 0xf6, 0x60, 0x23, 0x01, 0x02, 0x17, 0x00, 0xa0, 0x61, 0xab, + 0x21, 0x97, 0xb6, 0xce, 0xec, 0xb5, 0xdf, 0x83, 0x64, 0xad, 0x59, 0x9e, + 0xd1, 0xc0, 0x2f, 0x25, 0xb6, 0x93, 0x18, 0x94, 0xc3, 0x17, 0xe5, 0xd2, + 0xd7, 0x75, 0xbc, 0x56, 0x18, 0x84, 0x25, 0xdf, 0xa8, 0xf0, 0x39, 0x50, + 0x3b, 0xb1, 0x18, 0x7b, 0xde, 0x1a, 0xcc, 0xa1, 0x97, 0xc7, 0xa4, 0xd0, + 0x53, 0xbc, 0xc0, 0xde, 0x7a, 0x27, 0x5e, 0x39, 0x0a, 0x6e, 0x4f, 0x92, + 0x84, 0xa3, 0x5d, 0x94, 0x44, 0xf9, 0x22, 0xd8, 0xc0, 0xe1, 0x0d, 0xc2, + 0x2a, 0x9d, 0xa1, 0x42, 0xa2, 0x88, 0xcd, 0x96, 0x83, 0xd1, 0x48, 0xa8, + 0x59, 0x91, 0x48, 0xd0, 0x85, 0x9f, 0xca, 0xb6, 0xb4, 0xc2, 0x4d, 0x8d, + 0x47, 0x11, 0x3f, 0x11, 0x9d, 0x7e, 0x22, 0xb1, 0xc5, 0x2a, 0xb2, 0xa2, + 0xca, 0x18, 0x5f, 0xe1, 0xa3, 0xd1, 0x0e, 0x30, 0xd5, 0xc9, 0xe6, 0xdb, + 0x96, 0xf6, 0x19, 0x13, 0x85, 0xc9, 0xea, 0x51, 0x8d, 0xe9, 0x90, 0x8b, + 0x48, 0x1d, 0x99, 0x40, 0xd4, 0xfb, 0x84, 0xa4, 0x5c, 0xbe, 0x38, 0x5b, + 0xd5, 0xeb, 0x95, 0x6b, 0x54, 0x44, 0xaa, 0x9d, 0x91, 0x75, 0x09, 0x70, + 0x75, 0xc0, 0x52, 0x15, 0xca, 0xf4, 0x63, 0x33, 0x1b, 0x9a, 0xa9, 0x40, + 0xd6, 0xe0, 0xff, 0x0c, 0x8a, 0xa5, 0x12, 0x6d, 0x91, 0x25, 0x1d, 0xc1, + 0x2f, 0xe4, 0x69, 0x6d, 0x53, 0x3a, 0xab, 0x22, 0x5f, 0xaf, 0xd5, 0x70, + 0x91, 0x47, 0xec, 0x9b, 0xb2, 0x17, 0xf5, 0xa7, 0x87, 0x42, 0xec, 0x78, + 0x9f, 0x86, 0x4b, 0x73, 0x4a, 0xd9, 0x8c, 0xad, 0x1c, 0x09, 0x41, 0x2a, + 0x5f, 0x87, 0x44, 0x88, 0x83, 0xa4, 0xc9, 0x24, 0x5e, 0x67, 0x20, 0xb1, + 0x54, 0x50, 0x20, 0xc1, 0x21, 0xd9, 0xce, 0xc9, 0x9a, 0x6f, 0x7f, 0x41, + 0x91, 0xe5, 0x52, 0x97, 0xd6, 0x67, 0x09, 0xf5, 0x5b, 0x5d, 0x96, 0x97, + 0x7e, 0x2f, 0x66, 0xd0, 0x95, 0x64, 0x37, 0x9a, 0x99, 0x1c, 0xea, 0xeb, + 0x45, 0xcd, 0xcf, 0xd2, 0xe7, 0x5a, 0xfb, 0x59, 0xd3, 0x97, 0x4f, 0x4d, + 0xe8, 0xce, 0xba, 0xdf, 0xd9, 0x29, 0x5f, 0xd2, 0x9e, 0xcc, 0xf5, 0x7b, + 0x55, 0xf9, 0xd9, 0x6e, 0xd4, 0xab, 0x41, 0xb1, 0x28, 0xb2, 0x03, 0x06, + 0xc4, 0x20, 0xa8, 0x08, 0xa9, 0x94, 0xe4, 0x1a, 0x36, 0x55, 0x40, 0x0c, + 0x08, 0xc0, 0x12, 0x4c, 0x14, 0x70, 0x08, 0x0c, 0x4b, 0xc1, 0xd5, 0x4e, + 0x9c, 0x40, 0x3b, 0x4c, 0x2b, 0x80, 0x01, 0x8c, 0x0f, 0x30, 0x03, 0x41, + 0xc0, 0x78, 0x18, 0x08, 0x20, 0x05, 0x98, 0x03, 0x40, 0x0f, 0x02, 0x40, + 0x22, 0x02, 0x00, 0x56, 0x60, 0x1c, 0x81, 0x14, 0x61, 0x7e, 0x0b, 0x84, + 0x60, 0x7f, 0x80, 0x9c, 0x60, 0x0e, 0x00, 0x22, 0x00, 0xd1, 0x09, 0x34, + 0xb6, 0x71, 0x2e, 0xe3, 0x9b, 0xf2, 0x97, 0x13, 0x9d, 0x7d, 0x14, 0xd8, + 0x97, 0x41, 0x45, 0x54, 0x9d, 0xce, 0xd3, 0x8d, 0x8c, 0xca, 0x76, 0x75, + 0x29, 0x3f, 0x55, 0x1c, 0x49, 0xad, 0xb3, 0xca, 0xaa, 0x50, 0xb0, 0xa8, + 0x17, 0x7d, 0x1c, 0x9e, 0x3f, 0x56, 0xdb, 0x61, 0x45, 0x44, 0x2b, 0x14, + 0xe8, 0xa3, 0xf9, 0x3e, 0x4a, 0x52, 0x28, 0x88, 0xcb, 0x84, 0x39, 0x65, + 0x44, 0xab, 0x81, 0x2a, 0x24, 0xe8, 0x3f, 0xd6, 0x93, 0xed, 0xee, 0xa4, + 0x82, 0xbe, 0xd8, 0x9d, 0x6d, 0x56, 0xaa, 0x92, 0xf6, 0x25, 0x54, 0x66, + 0xa6, 0x5c, 0x54, 0x29, 0x52, 0xf4, 0x96, 0x2f, 0x39, 0x32, 0x26, 0x4f, + 0xaa, 0x3b, 0x1a, 0x1d, 0x27, 0x51, 0xb4, 0x37, 0xb3, 0xcf, 0x32, 0x45, + 0x8a, 0x65, 0x6a, 0x14, 0xce, 0xff, 0xfb, 0xd4, 0x60, 0x57, 0x8d, 0xd8, + 0x93, 0x70, 0x3d, 0x8b, 0xef, 0x7b, 0x70, 0x5b, 0x6e, 0x08, 0x20, 0x18, + 0x25, 0x6e, 0x22, 0xb1, 0xc0, 0xf6, 0x0f, 0xe1, 0xed, 0xc1, 0x4e, 0xb7, + 0x20, 0xc8, 0x61, 0x09, 0xb9, 0xa2, 0x73, 0x5c, 0xb7, 0x3f, 0x4e, 0xb3, + 0x30, 0x5e, 0x02, 0x16, 0xac, 0x4f, 0xa1, 0x2c, 0x2b, 0x95, 0xe2, 0x7a, + 0x5f, 0xdb, 0xdc, 0xc8, 0x53, 0x3c, 0x76, 0x28, 0x27, 0x7b, 0x8a, 0xed, + 0xb1, 0x73, 0x0f, 0x6b, 0xa4, 0xea, 0x8e, 0xc8, 0xe5, 0x32, 0xd2, 0x9e, + 0xb1, 0xd8, 0x55, 0x92, 0xc5, 0x62, 0x3b, 0xd5, 0xea, 0x2a, 0x2c, 0x2f, + 0xa5, 0x90, 0xe8, 0x2c, 0xad, 0xcf, 0x5b, 0xaa, 0xb5, 0xf0, 0x91, 0x6a, + 0x4c, 0x5d, 0x5d, 0x10, 0xd3, 0xba, 0x2c, 0xcc, 0xac, 0x28, 0x9c, 0xea, + 0x5e, 0x14, 0xa4, 0xb1, 0xda, 0xb4, 0x70, 0x9c, 0x47, 0x0b, 0x89, 0xc4, + 0x2c, 0x22, 0x3c, 0x4c, 0xc8, 0x10, 0xec, 0x20, 0xe3, 0xf6, 0x0b, 0xa8, + 0x31, 0xa3, 0xee, 0x43, 0x1d, 0x0c, 0x31, 0xc1, 0x03, 0x3c, 0x09, 0x85, + 0x0f, 0x91, 0xce, 0x15, 0xcc, 0xb8, 0x5a, 0x21, 0x89, 0x80, 0x5e, 0x4d, + 0x7b, 0xae, 0xdb, 0x25, 0x76, 0xab, 0xeb, 0x64, 0xb4, 0x94, 0x75, 0xd1, + 0x51, 0x95, 0x52, 0xae, 0x94, 0x73, 0xda, 0x64, 0xdf, 0xda, 0xd6, 0x6c, + 0x87, 0x36, 0xda, 0xd9, 0x5d, 0xcf, 0x36, 0xba, 0xa5, 0x2d, 0x57, 0x66, + 0x4a, 0x99, 0xf6, 0xbe, 0x8d, 0xb2, 0xaa, 0xf3, 0x59, 0x08, 0x1f, 0x53, + 0x08, 0x87, 0xc4, 0x84, 0xd9, 0x90, 0x10, 0x48, 0x3c, 0x36, 0x20, 0x60, + 0x42, 0x07, 0x84, 0x5c, 0xc0, 0x3a, 0x00, 0xd0, 0xc0, 0xf7, 0x04, 0x7c, + 0xc3, 0xea, 0x3b, 0x48, 0xe4, 0x56, 0x11, 0x64, 0xc2, 0x32, 0x03, 0x70, + 0xc0, 0xc3, 0x01, 0x24, 0xc0, 0x66, 0x00, 0xc0, 0xc0, 0x31, 0x00, 0x5c, + 0xc0, 0x22, 0x00, 0x58, 0x04, 0x01, 0xe0, 0x70, 0x06, 0xe6, 0x02, 0x40, + 0x03, 0xe6, 0x21, 0xf8, 0x49, 0x20, 0x60, 0x9d, 0x43, 0x80, 0x46, 0x26, + 0xea, 0xbf, 0x83, 0xa5, 0x90, 0x6c, 0xaa, 0x5d, 0x0b, 0x8d, 0xba, 0x77, + 0xa9, 0xe2, 0xee, 0xeb, 0x44, 0x8b, 0x41, 0xf4, 0x33, 0xd2, 0x98, 0x8d, + 0xf8, 0x2e, 0x43, 0x02, 0xbf, 0x8f, 0x1b, 0x64, 0x7d, 0x6d, 0x6a, 0xa3, + 0xd4, 0xd1, 0xef, 0x51, 0x4d, 0xc3, 0x56, 0x70, 0x91, 0xcb, 0x9d, 0xf9, + 0x45, 0x48, 0xbd, 0x67, 0x2a, 0x2f, 0x67, 0xce, 0x94, 0x09, 0xe4, 0xe2, + 0x8a, 0x57, 0xee, 0x10, 0x55, 0x6b, 0x4d, 0xef, 0xd9, 0xce, 0x53, 0xf8, + 0xfe, 0x62, 0x47, 0x28, 0xa1, 0x1e, 0xaa, 0xa7, 0xe7, 0x4a, 0x75, 0xf2, + 0xd2, 0x09, 0x89, 0xb1, 0xec, 0x65, 0x32, 0x42, 0xe9, 0x47, 0x04, 0x92, + 0xc2, 0x19, 0x34, 0x66, 0x77, 0x70, 0xdd, 0x38, 0x1c, 0x05, 0xd5, 0xd4, + 0x54, 0x42, 0x8d, 0xad, 0xfc, 0x06, 0x72, 0xe3, 0x65, 0x7c, 0xb2, 0x1d, + 0x0f, 0x94, 0x6e, 0x4d, 0xd4, 0x38, 0xd5, 0xe8, 0x7a, 0x95, 0x54, 0xbc, + 0xaa, 0x82, 0xad, 0x88, 0xad, 0x82, 0xed, 0xf9, 0xe9, 0x46, 0xa1, 0xd3, + 0x75, 0x1c, 0x36, 0xf5, 0x02, 0x32, 0x3a, 0x31, 0xfa, 0xb5, 0xe9, 0xfe, + 0xc4, 0xf5, 0x12, 0x85, 0xbd, 0x66, 0x7c, 0x9c, 0x47, 0xa9, 0x17, 0x0c, + 0x8a, 0x89, 0x8e, 0xe4, 0xc2, 0x75, 0xda, 0x75, 0xd2, 0x95, 0x11, 0x19, + 0xb2, 0x24, 0xaa, 0xe4, 0xba, 0x05, 0x26, 0xe0, 0xa9, 0x5c, 0x8f, 0xd4, + 0x31, 0x76, 0xe2, 0x7a, 0x1b, 0xcb, 0xa1, 0xca, 0x69, 0x27, 0xcf, 0x75, + 0x2d, 0x94, 0xaa, 0x36, 0x93, 0xdc, 0xbe, 0x1d, 0x4a, 0x72, 0xe2, 0x86, + 0x9c, 0x67, 0x21, 0x84, 0x46, 0xc9, 0x03, 0x3d, 0x4a, 0x00, 0x67, 0xb7, + 0x77, 0xc7, 0xb7, 0x6f, 0x7b, 0x03, 0xb3, 0xba, 0x25, 0x8c, 0x92, 0x48, + 0x41, 0xdc, 0x4a, 0xa5, 0x68, 0xe6, 0x57, 0xa3, 0xcb, 0x26, 0xad, 0x66, + 0xbe, 0xaf, 0xc8, 0x84, 0x4e, 0xfd, 0x3b, 0x7a, 0x32, 0xd9, 0x7f, 0xbe, + 0x88, 0xfd, 0x3e, 0x55, 0xd7, 0x65, 0xa4, 0xa9, 0x55, 0x6f, 0xa2, 0x53, + 0xf5, 0xdb, 0x7e, 0xee, 0xee, 0xfd, 0xfe, 0x93, 0xa2, 0x5b, 0x79, 0x12, + 0x66, 0x39, 0x0c, 0xd4, 0x06, 0x86, 0x20, 0xa8, 0x54, 0x40, 0x8a, 0x8c, + 0x60, 0x4e, 0x32, 0x97, 0x18, 0x30, 0x01, 0x40, 0x90, 0x30, 0x19, 0x41, + 0xb1, 0x30, 0x91, 0x98, 0x34, 0x35, 0xe0, 0x05, 0xcd, 0x30, 0x4a, 0x01, + 0x30, 0x30, 0x17, 0xc0, 0x91, 0x30, 0x0c, 0x80, 0x48, 0x30, 0x07, 0xc0, + 0x2f, 0x30, 0x04, 0x80, 0x16, 0x0c, 0x00, 0x91, 0x2f, 0x0c, 0x02, 0x10, + 0x10, 0x4c, 0x3e, 0x00, 0xa8, 0xcc, 0x0d, 0xb0, 0x0c, 0xc1, 0x40, 0x12, + 0x04, 0x2d, 0x66, 0x36, 0xf0, 0x5b, 0xa9, 0x13, 0x86, 0xe7, 0x19, 0x6b, + 0x5c, 0x7d, 0xa5, 0xcd, 0x96, 0x1b, 0x82, 0x64, 0x8e, 0xdb, 0x63, 0x95, + 0x43, 0x6e, 0x5c, 0x3d, 0x49, 0x2a, 0x93, 0x4c, 0x47, 0xa6, 0x65, 0xf0, + 0x43, 0xed, 0x4d, 0x17, 0x94, 0x30, 0xe9, 0x73, 0xdb, 0x2a, 0x9f, 0x6e, + 0x51, 0x6b, 0xb4, 0x92, 0x1a, 0x07, 0xed, 0xb6, 0x86, 0xdf, 0x83, 0x95, + 0x72, 0x84, 0x41, 0x3a, 0x97, 0x2b, 0x86, 0x55, 0x49, 0xb8, 0xa5, 0x7d, + 0x01, 0x99, 0x69, 0xc6, 0x66, 0x16, 0x94, 0x4d, 0xd1, 0x07, 0xc9, 0xfc, + 0xd6, 0xe7, 0x78, 0xf2, 0x12, 0xd5, 0x5a, 0x76, 0x1d, 0x30, 0xb9, 0x62, + 0xc4, 0x8d, 0xc7, 0xc3, 0x2a, 0x82, 0x76, 0x15, 0xdb, 0x32, 0x31, 0x1e, + 0x9c, 0x54, 0x42, 0xd1, 0xe0, 0xfd, 0x18, 0xc8, 0xb9, 0x60, 0x99, 0x0a, + 0x88, 0xca, 0x86, 0xaa, 0x91, 0xff, 0xfb, 0xd4, 0x60, 0x5a, 0x0d, 0xd8, + 0xbe, 0x70, 0x3d, 0x83, 0xf8, 0x7b, 0x70, 0x5a, 0xae, 0x08, 0x22, 0x20, + 0x65, 0x6e, 0x22, 0xf5, 0xc0, 0xf6, 0x4f, 0xbd, 0xed, 0xc1, 0x59, 0xb8, + 0x20, 0xc4, 0x30, 0x89, 0xb8, 0x29, 0xd6, 0x86, 0x2a, 0x45, 0x55, 0xa8, + 0x5c, 0x4e, 0x48, 0x11, 0x16, 0x19, 0x1a, 0x8e, 0x46, 0x47, 0x34, 0xab, + 0x1b, 0xe4, 0xd4, 0x56, 0x4a, 0xa3, 0xe1, 0x3f, 0xe5, 0xee, 0x67, 0x87, + 0xec, 0xca, 0x35, 0x79, 0xfe, 0xd6, 0xb4, 0xf6, 0x3b, 0x73, 0x63, 0xc7, + 0x37, 0xd1, 0x55, 0x6b, 0xea, 0x15, 0x0c, 0x14, 0xe2, 0x79, 0xcd, 0x27, + 0x1e, 0x2b, 0x5b, 0x5a, 0xbd, 0x0c, 0x77, 0x2a, 0x99, 0xeb, 0x21, 0xfe, + 0x84, 0x35, 0x28, 0x0e, 0x93, 0xbe, 0x58, 0xa9, 0x96, 0xd3, 0xa5, 0x0d, + 0x3c, 0x09, 0x70, 0xff, 0x66, 0x53, 0x0f, 0x62, 0xc2, 0x67, 0x85, 0x61, + 0x05, 0x4d, 0x0a, 0xc2, 0xfe, 0x84, 0x0e, 0x03, 0x88, 0x90, 0x00, 0x01, + 0x1c, 0x89, 0x14, 0x9a, 0xb6, 0xb8, 0x83, 0xad, 0x73, 0xd8, 0x9e, 0xf0, + 0xfa, 0x71, 0x2e, 0xd9, 0xe6, 0x5d, 0x82, 0x44, 0x09, 0xcb, 0x22, 0x7d, + 0x8c, 0xb2, 0xee, 0x69, 0xb5, 0x5e, 0xb5, 0x74, 0x55, 0xfa, 0x23, 0xcd, + 0x4f, 0x76, 0xa9, 0xad, 0xff, 0x44, 0x44, 0x57, 0xa6, 0xb5, 0xb2, 0xd7, + 0x73, 0x7d, 0x3d, 0xea, 0xb6, 0xbd, 0x8f, 0x46, 0xdd, 0x9a, 0x95, 0x5d, + 0x53, 0xeb, 0x62, 0xb5, 0xbb, 0xed, 0x34, 0x96, 0xab, 0xc8, 0x44, 0xd4, + 0x59, 0x8a, 0x3d, 0x45, 0x90, 0x41, 0x54, 0xb2, 0x31, 0x86, 0x98, 0x3a, + 0xa2, 0x81, 0xa2, 0x24, 0x81, 0x80, 0xa2, 0x05, 0x81, 0x80, 0x84, 0x0e, + 0x59, 0x80, 0xc6, 0xd5, 0x71, 0x86, 0x18, 0x2e, 0x59, 0x80, 0xb6, 0x09, + 0xb1, 0x80, 0x14, 0x03, 0xf8, 0x14, 0x04, 0x21, 0x90, 0x08, 0xcb, 0x00, + 0x00, 0x2e, 0xe3, 0x00, 0x34, 0x03, 0x33, 0x00, 0xec, 0x01, 0x93, 0x0a, + 0xd4, 0x45, 0x83, 0x01, 0x20, 0x08, 0x03, 0x00, 0x50, 0x00, 0x93, 0x28, + 0x02, 0x36, 0x22, 0x56, 0x35, 0x9e, 0x16, 0xc6, 0xb4, 0x5c, 0xea, 0xa2, + 0xec, 0xbe, 0x75, 0xa0, 0x14, 0xca, 0x94, 0x2c, 0xc3, 0x46, 0x2b, 0x14, + 0x03, 0x7c, 0x59, 0x57, 0x02, 0x2e, 0x6e, 0x8f, 0x50, 0x6a, 0xd7, 0x02, + 0xdc, 0x5d, 0xe4, 0x3c, 0x8d, 0xd6, 0x15, 0xa5, 0xd1, 0x2c, 0x38, 0xd5, + 0xad, 0x51, 0xd0, 0x95, 0x7a, 0x7e, 0x63, 0xf9, 0x10, 0x6f, 0x55, 0x6f, + 0xae, 0x92, 0x87, 0x3b, 0x1a, 0x85, 0x99, 0xbd, 0xd3, 0x1b, 0x89, 0xa6, + 0x85, 0x29, 0x58, 0x13, 0x2d, 0xc7, 0xc6, 0x89, 0xdb, 0x23, 0x9b, 0x43, + 0xc8, 0x48, 0x7a, 0x81, 0x25, 0x34, 0x36, 0x44, 0xe3, 0x22, 0x91, 0xb5, + 0xcd, 0x44, 0xb2, 0xce, 0xab, 0x8c, 0xbb, 0x60, 0x80, 0xcc, 0xc2, 0x89, + 0x62, 0x4b, 0x38, 0x76, 0x78, 0x6c, 0xd3, 0x55, 0x99, 0x58, 0x93, 0x64, + 0x2f, 0x8c, 0xcd, 0x88, 0x4b, 0x71, 0x86, 0x5b, 0xcf, 0xf5, 0xa4, 0x5b, + 0x2b, 0x2a, 0x82, 0x86, 0x83, 0xd5, 0x65, 0x98, 0x1b, 0xd1, 0xec, 0x73, + 0xd9, 0x81, 0x08, 0x57, 0x4e, 0xfd, 0x8d, 0x28, 0x85, 0xab, 0xe0, 0x21, + 0xab, 0xa2, 0xad, 0x19, 0x2d, 0x15, 0x3a, 0x66, 0x65, 0x4f, 0xa2, 0x26, + 0x67, 0x51, 0x3d, 0x64, 0x8c, 0xd4, 0xda, 0xed, 0xa6, 0x32, 0xb9, 0x86, + 0x2b, 0xd6, 0xa8, 0x0c, 0x89, 0x35, 0x7b, 0x62, 0xa9, 0xeb, 0x83, 0x72, + 0xe0, 0xce, 0x3f, 0xd0, 0xe5, 0x03, 0x3b, 0x4a, 0x21, 0x0b, 0x26, 0x47, + 0x31, 0x3f, 0x4c, 0x27, 0x10, 0xe5, 0xf6, 0xb4, 0x5a, 0x39, 0x00, 0x2e, + 0x47, 0x59, 0x40, 0x3f, 0x85, 0x84, 0xa9, 0xe0, 0x53, 0x77, 0xc4, 0x19, + 0x07, 0x73, 0xb0, 0x90, 0x9d, 0x88, 0xc0, 0x20, 0xde, 0xf2, 0x67, 0x11, + 0x94, 0x46, 0x2a, 0x4d, 0x51, 0x2a, 0xc3, 0x33, 0x2c, 0x9a, 0xaa, 0x3d, + 0xad, 0xe9, 0x44, 0xb5, 0x34, 0x75, 0xfb, 0x3b, 0x21, 0xea, 0xff, 0xba, + 0x7d, 0x7e, 0x95, 0xcd, 0x66, 0x47, 0x7d, 0x1d, 0xf2, 0x22, 0x4e, 0xd7, + 0xfb, 0xd8, 0xb4, 0xdd, 0xad, 0x54, 0xd6, 0xf5, 0x5f, 0xbb, 0x53, 0xdd, + 0x37, 0x83, 0x39, 0x5d, 0x02, 0xb5, 0x05, 0x94, 0x4b, 0x10, 0x39, 0x07, + 0x0c, 0x08, 0x61, 0x63, 0x8e, 0x73, 0x09, 0x20, 0xa0, 0xd5, 0x48, 0x00, + 0x03, 0x01, 0xbc, 0x0a, 0x43, 0x02, 0xe0, 0x17, 0xd3, 0x09, 0x75, 0x74, + 0xe3, 0x4a, 0xcc, 0x48, 0xf3, 0x05, 0xa4, 0x0f, 0x83, 0x01, 0xd0, 0x06, + 0x53, 0x00, 0x8c, 0x02, 0xa3, 0x00, 0x28, 0x00, 0xf8, 0xa5, 0x90, 0x50, + 0x03, 0x46, 0x02, 0x40, 0x16, 0xe6, 0x09, 0x30, 0x38, 0xa6, 0x06, 0x50, + 0x02, 0xa6, 0x01, 0x78, 0x01, 0x90, 0xca, 0xf3, 0xdc, 0xbf, 0x26, 0x5b, + 0x50, 0x48, 0xe6, 0x54, 0xfb, 0xe5, 0x78, 0xf5, 0x27, 0x89, 0xe0, 0x61, + 0x16, 0xe2, 0xc0, 0x82, 0x25, 0xb0, 0xe2, 0x3e, 0x79, 0x55, 0xc1, 0xde, + 0xbc, 0xce, 0x7c, 0xb6, 0x88, 0x50, 0x3b, 0x14, 0x26, 0xf1, 0x88, 0x4d, + 0x85, 0x8e, 0x3b, 0x7c, 0x57, 0x87, 0x77, 0x4c, 0x30, 0x12, 0xf4, 0x9b, + 0x82, 0xa0, 0xf8, 0x8c, 0x9d, 0xac, 0xea, 0x75, 0x4a, 0xb0, 0xb7, 0x33, + 0x33, 0x31, 0xbd, 0x2f, 0x4e, 0x0c, 0xf6, 0x4f, 0x1f, 0xaa, 0x3d, 0xb9, + 0xad, 0x44, 0x49, 0xad, 0x28, 0xdb, 0x1c, 0xf4, 0xbd, 0x05, 0xb9, 0x79, + 0x08, 0x3d, 0xe1, 0x2a, 0xce, 0xe5, 0xaa, 0xbb, 0x49, 0x1c, 0xd4, 0x7a, + 0x9e, 0x34, 0x5a, 0x94, 0x65, 0x82, 0x0a, 0x60, 0xd2, 0x61, 0x67, 0x63, + 0xac, 0xea, 0x8a, 0xaf, 0xc2, 0xff, 0xfb, 0xd4, 0x60, 0x57, 0x8d, 0xd8, + 0x8f, 0x70, 0x3d, 0x93, 0xef, 0x7b, 0x70, 0x58, 0x2e, 0x08, 0x32, 0x1c, + 0x65, 0x6e, 0x22, 0x49, 0xc0, 0xf6, 0x4f, 0xbd, 0xed, 0xc1, 0x7c, 0xb7, + 0xa0, 0x84, 0x51, 0x15, 0xbb, 0x99, 0x1d, 0x09, 0x16, 0x79, 0x4e, 0xd8, + 0x72, 0x32, 0x9b, 0xf3, 0x28, 0x6a, 0x8a, 0x74, 0xbe, 0xce, 0xd1, 0x0d, + 0xf2, 0x1c, 0xfd, 0x17, 0x22, 0x10, 0x87, 0xb7, 0xcb, 0x19, 0x67, 0x49, + 0x77, 0x4a, 0x48, 0xae, 0x94, 0xab, 0x28, 0xe9, 0x15, 0x49, 0x84, 0x74, + 0x27, 0x16, 0xb3, 0x45, 0x50, 0xac, 0x88, 0x87, 0xdd, 0x9e, 0xce, 0xd5, + 0x87, 0x82, 0x86, 0xd0, 0x1f, 0x41, 0x70, 0x8e, 0xe6, 0xc8, 0x90, 0x7a, + 0xd8, 0xce, 0xb9, 0x5d, 0x36, 0xab, 0x50, 0xe5, 0xd2, 0xfa, 0x30, 0x7e, + 0x46, 0x70, 0x27, 0x65, 0x89, 0x52, 0xd8, 0x28, 0x8c, 0x22, 0xc6, 0xf5, + 0x32, 0xde, 0x4a, 0xcf, 0x63, 0x49, 0x81, 0x50, 0xb2, 0x00, 0x00, 0x96, + 0xc4, 0x47, 0xda, 0xf8, 0xf9, 0x64, 0x7a, 0xea, 0xe7, 0x2a, 0x5f, 0x87, + 0xe6, 0x51, 0x0c, 0xac, 0x05, 0xe5, 0x89, 0x77, 0x31, 0x26, 0x21, 0xa9, + 0xd6, 0x38, 0x75, 0x19, 0x32, 0xfa, 0x6d, 0xd5, 0x9e, 0xad, 0x3e, 0xf4, + 0xab, 0xe8, 0x9f, 0x4b, 0xba, 0xb7, 0x64, 0x96, 0xff, 0xd7, 0xb2, 0x39, + 0xeb, 0xe8, 0xc5, 0xf7, 0xff, 0x4f, 0x72, 0x7b, 0x59, 0x72, 0x7e, 0x8c, + 0xd6, 0xb3, 0xe4, 0x6f, 0x74, 0x94, 0x96, 0x31, 0x14, 0x70, 0xe5, 0x43, + 0x0a, 0x39, 0xc2, 0xce, 0x24, 0xa2, 0x02, 0xf3, 0x0a, 0x01, 0x96, 0x06, + 0x2c, 0x0c, 0x07, 0x50, 0x1b, 0x8c, 0x0e, 0x20, 0x36, 0x4c, 0x33, 0x33, + 0xca, 0x8d, 0xb6, 0x30, 0x96, 0x4c, 0x1d, 0xf0, 0x1f, 0x0c, 0x0a, 0x40, + 0x0b, 0xcc, 0x04, 0x90, 0x03, 0x03, 0x00, 0x3d, 0x1e, 0x00, 0x3d, 0x5b, + 0x5b, 0x41, 0x08, 0x00, 0x06, 0x01, 0xd0, 0x0e, 0xce, 0xb0, 0x60, 0x00, + 0x27, 0x33, 0x04, 0x04, 0xca, 0x17, 0x19, 0x12, 0x5c, 0x55, 0x48, 0x52, + 0x7d, 0x0d, 0x25, 0xc9, 0x57, 0x6f, 0x55, 0x89, 0xf6, 0x83, 0x41, 0x65, + 0x5e, 0x23, 0xe7, 0xd8, 0xa7, 0x0c, 0xa8, 0x27, 0x50, 0x9f, 0x8b, 0x11, + 0x3d, 0x0d, 0x01, 0x96, 0x40, 0x89, 0xb1, 0x22, 0x1d, 0x65, 0x51, 0xa6, + 0xa0, 0x72, 0x35, 0x58, 0x0e, 0x75, 0x22, 0x14, 0xb4, 0xc2, 0x7a, 0xa7, + 0x95, 0x09, 0xe6, 0x29, 0x91, 0x92, 0x20, 0x98, 0xa0, 0x3c, 0x53, 0xa6, + 0x9c, 0x21, 0x6d, 0x6d, 0xf9, 0xfa, 0x68, 0x2b, 0x55, 0x2a, 0x83, 0xf5, + 0x09, 0x4c, 0x24, 0xdf, 0xa3, 0x5e, 0x29, 0xd9, 0x1f, 0x40, 0x3d, 0x4b, + 0x8b, 0x2a, 0xca, 0x24, 0xb6, 0xce, 0xf1, 0x0d, 0x67, 0x94, 0xe6, 0x57, + 0x21, 0x0a, 0x35, 0x65, 0x12, 0x28, 0x41, 0xc9, 0x24, 0x37, 0x74, 0x3e, + 0xec, 0xd4, 0xf4, 0xd3, 0x70, 0x68, 0xc1, 0xf6, 0xe8, 0xe6, 0xaa, 0xb2, + 0x62, 0x91, 0x02, 0xa0, 0x4a, 0x29, 0x50, 0x07, 0x9d, 0x97, 0x6c, 0x4c, + 0x6e, 0x2e, 0x6d, 0xa6, 0x82, 0x2e, 0x2c, 0x25, 0x43, 0x42, 0xa5, 0x1a, + 0xb4, 0xe0, 0xed, 0xa1, 0x16, 0x61, 0x21, 0xc8, 0xa7, 0xcc, 0x4f, 0x93, + 0x3a, 0x5f, 0x2f, 0xa9, 0x49, 0x0f, 0xf6, 0xdd, 0x9d, 0x31, 0xde, 0x21, + 0xe9, 0x16, 0xd4, 0x3d, 0xdd, 0x99, 0x36, 0xfe, 0x12, 0xa2, 0x3b, 0x74, + 0x56, 0x24, 0xb1, 0xa2, 0xad, 0x5c, 0x1c, 0xd7, 0x78, 0x77, 0x2e, 0x21, + 0x93, 0xe4, 0x81, 0x94, 0x4a, 0x1b, 0x10, 0xc5, 0x70, 0xf4, 0xa0, 0xcb, + 0x24, 0xea, 0x1e, 0xac, 0x5f, 0x42, 0x18, 0xc8, 0xc0, 0x47, 0x48, 0x1b, + 0xa8, 0x70, 0xaa, 0x11, 0x15, 0xd0, 0xf4, 0x0b, 0xc2, 0xa1, 0x4d, 0x45, + 0x6c, 0xaa, 0xfa, 0x3d, 0x88, 0xba, 0xc8, 0xc7, 0x0a, 0x41, 0x54, 0x5b, + 0xdb, 0x35, 0xb7, 0x5d, 0xd3, 0xaa, 0x21, 0xce, 0xe4, 0x63, 0x16, 0x67, + 0xd9, 0x9a, 0xb5, 0xbd, 0x11, 0x5d, 0x92, 0xb4, 0xa2, 0x35, 0x8c, 0xcd, + 0x33, 0x3e, 0x8d, 0x6d, 0x34, 0x23, 0x67, 0x7b, 0x6a, 0xaf, 0x4b, 0xb3, + 0xad, 0xd2, 0x92, 0x51, 0x5e, 0xbb, 0xe9, 0x33, 0x59, 0x3b, 0x76, 0x54, + 0x62, 0x63, 0x19, 0xb7, 0x38, 0xca, 0x9e, 0x63, 0xab, 0x88, 0x91, 0x8c, + 0x1f, 0x28, 0xe0, 0xe2, 0x09, 0x8f, 0x1a, 0x40, 0xa2, 0xca, 0x30, 0x18, + 0xc0, 0x20, 0x30, 0x3d, 0x80, 0x0a, 0x30, 0xeb, 0xc2, 0x96, 0x38, 0x35, + 0x41, 0x58, 0x30, 0x86, 0x40, 0x27, 0x30, 0x2e, 0x00, 0x0c, 0x03, 0x01, + 0x5e, 0x60, 0x19, 0x00, 0x00, 0x60, 0x0c, 0x80, 0x0e, 0x3a, 0x00, 0x7a, + 0x98, 0x27, 0x29, 0x81, 0x1e, 0x01, 0x49, 0x58, 0x02, 0x8b, 0xd8, 0x6e, + 0x97, 0xd7, 0xd9, 0x4d, 0xa9, 0x47, 0xb1, 0x05, 0x54, 0xcf, 0x0d, 0xe9, + 0x2f, 0x7a, 0x76, 0x41, 0x62, 0x2f, 0xcf, 0xdb, 0x23, 0x30, 0x1f, 0xaa, + 0xa3, 0xb0, 0xcb, 0xcb, 0x49, 0xd4, 0x4a, 0xce, 0x85, 0xd2, 0xe8, 0xb8, + 0xb2, 0x0f, 0xb6, 0xc1, 0xf2, 0x5e, 0x08, 0x31, 0x9c, 0x7e, 0xa0, 0x90, + 0xa3, 0xfc, 0xc0, 0x61, 0xd2, 0x1a, 0x8d, 0x74, 0x75, 0x6e, 0x66, 0xc4, + 0x25, 0x34, 0x67, 0x39, 0xb7, 0x4e, 0xab, 0x24, 0x19, 0x51, 0x1d, 0x47, + 0x72, 0x95, 0xa4, 0xef, 0x48, 0x34, 0x35, 0x35, 0x18, 0x70, 0xaf, 0x29, + 0x70, 0x88, 0x7a, 0x26, 0xf7, 0x1b, 0x48, 0x4b, 0xb4, 0x43, 0x93, 0x5a, + 0x7e, 0x2a, 0xa9, 0x42, 0xfd, 0x4f, 0x09, 0x81, 0x95, 0x99, 0xb1, 0x76, + 0xee, 0x24, 0x36, 0x64, 0x2d, 0xb1, 0x3e, 0xd4, 0x5c, 0xd6, 0x9e, 0x40, + 0x60, 0x8c, 0x94, 0x55, 0xc1, 0xff, 0xfb, 0xd4, 0x60, 0x57, 0x8f, 0xd8, + 0x8e, 0x70, 0x3d, 0x03, 0xef, 0x7b, 0x70, 0x60, 0xae, 0x08, 0x21, 0x18, + 0x65, 0x6e, 0x21, 0xfd, 0xc0, 0xf6, 0x0f, 0xbd, 0xed, 0xc1, 0x7c, 0xb8, + 0x20, 0xc8, 0x31, 0x95, 0xb8, 0x7b, 0x00, 0xe4, 0x43, 0xd1, 0x57, 0x68, + 0x56, 0xad, 0xa5, 0x47, 0x7a, 0x4c, 0xb8, 0x17, 0x04, 0xe9, 0xf6, 0xac, + 0x54, 0xc4, 0x56, 0x21, 0xac, 0x86, 0x5a, 0xb1, 0x99, 0xc1, 0xf9, 0xfc, + 0xf9, 0x4a, 0x8a, 0x43, 0xd0, 0x87, 0xef, 0xa0, 0xe9, 0x95, 0xcd, 0x64, + 0xe6, 0x42, 0x1b, 0x4d, 0xc6, 0x37, 0x25, 0xe7, 0x06, 0x87, 0x68, 0xe5, + 0x4a, 0xa1, 0x12, 0x9f, 0x71, 0x4e, 0xab, 0x97, 0x4d, 0x8c, 0xd0, 0x4f, + 0xa5, 0x4b, 0xa4, 0x52, 0xbe, 0x52, 0x61, 0x09, 0xad, 0x84, 0xe4, 0x27, + 0x87, 0xd1, 0xe0, 0x64, 0xa3, 0x99, 0x52, 0x04, 0xa0, 0x97, 0xab, 0x4b, + 0xf1, 0xd4, 0x3d, 0xc4, 0xf1, 0xec, 0x43, 0x2d, 0x40, 0x25, 0xcb, 0x14, + 0x5d, 0xa7, 0x04, 0x49, 0x4f, 0xf7, 0x93, 0x23, 0x17, 0x53, 0x79, 0xd3, + 0x58, 0x85, 0x94, 0x2b, 0x4e, 0x09, 0xb6, 0xc2, 0xcf, 0x7d, 0xbb, 0x4c, + 0x82, 0x98, 0xd8, 0x27, 0xac, 0x95, 0x7a, 0xa3, 0x2c, 0xb4, 0xca, 0xf6, + 0xce, 0x5d, 0x51, 0xe9, 0x4f, 0xa3, 0x48, 0x63, 0x99, 0x10, 0x41, 0x19, + 0xa7, 0x5a, 0x5d, 0x97, 0xbe, 0x77, 0xb2, 0xa5, 0x2b, 0xa5, 0x75, 0xd1, + 0x5b, 0x44, 0xdf, 0xdb, 0x76, 0x5f, 0x56, 0xa2, 0x1e, 0xf4, 0xea, 0x73, + 0xa9, 0xe7, 0x66, 0x3a, 0x4a, 0xb5, 0x63, 0x15, 0x87, 0x88, 0x1c, 0xe8, + 0x28, 0xc8, 0x2c, 0x40, 0x62, 0x39, 0xca, 0xa2, 0xa6, 0x00, 0xc8, 0x05, + 0x26, 0x04, 0x90, 0x1a, 0x86, 0x14, 0x49, 0x78, 0xa6, 0xc0, 0xa8, 0x67, + 0xc6, 0x0b, 0x18, 0x14, 0x26, 0x03, 0x80, 0x06, 0xc6, 0x01, 0xb8, 0x02, + 0xe6, 0x00, 0xc0, 0x01, 0x46, 0x00, 0x38, 0x01, 0x26, 0x00, 0x58, 0x00, + 0x2a, 0xc0, 0x84, 0xb3, 0x01, 0xe0, 0x06, 0xd2, 0x60, 0x0b, 0xe4, 0xc4, + 0x99, 0x56, 0x7f, 0x34, 0xa1, 0xcf, 0xd7, 0x6a, 0x14, 0x61, 0x79, 0x42, + 0xe3, 0x97, 0xd5, 0xe6, 0x32, 0xfe, 0xb2, 0x54, 0x2e, 0x8a, 0x65, 0x79, + 0x3d, 0x66, 0x24, 0xc8, 0x49, 0x7b, 0x3a, 0xce, 0xb6, 0xe5, 0x59, 0xdc, + 0x63, 0xab, 0x94, 0x2a, 0xdc, 0x25, 0xd8, 0x8b, 0xba, 0x7d, 0x24, 0x9b, + 0x37, 0xdb, 0x4c, 0xb5, 0xcb, 0x22, 0x1b, 0x54, 0x25, 0xc2, 0xea, 0x03, + 0xb1, 0x7e, 0x53, 0xb1, 0x54, 0x88, 0x76, 0xd4, 0x8d, 0x54, 0xa1, 0xa9, + 0x99, 0x59, 0x57, 0xd0, 0xe3, 0xc1, 0x85, 0x48, 0xbe, 0x8b, 0xaa, 0x35, + 0xad, 0x5e, 0xc3, 0x74, 0x6e, 0x19, 0x54, 0x7b, 0x57, 0x47, 0x4b, 0x24, + 0x55, 0x0c, 0x2c, 0x2b, 0x6b, 0xbb, 0x9f, 0xaa, 0xe8, 0xce, 0x91, 0xaf, + 0xe0, 0x43, 0x3c, 0xd7, 0xdc, 0xd8, 0xa2, 0xc1, 0x73, 0xad, 0x20, 0xb1, + 0x2a, 0xd1, 0x87, 0x32, 0xb5, 0x57, 0x15, 0x95, 0x6d, 0x72, 0x71, 0xa8, + 0xa4, 0x72, 0x8a, 0xd7, 0x2a, 0xb9, 0xfb, 0x03, 0x21, 0x7f, 0x71, 0x57, + 0x43, 0x72, 0x6f, 0x5d, 0x46, 0x37, 0x51, 0x08, 0xe5, 0xc3, 0xc6, 0xa5, + 0x2c, 0x8d, 0xea, 0xd5, 0xa5, 0x03, 0x01, 0xd3, 0x1d, 0xc5, 0x79, 0xb1, + 0xb2, 0x67, 0x4b, 0x95, 0x5a, 0x91, 0x99, 0x6d, 0x72, 0xa0, 0xa6, 0xd2, + 0x8c, 0xeb, 0xe9, 0xc6, 0x17, 0xb2, 0x46, 0x90, 0xc3, 0x79, 0x11, 0x79, + 0x5a, 0x9f, 0x5d, 0xa2, 0x94, 0x50, 0xd5, 0xe8, 0xe8, 0x23, 0xe4, 0x5d, + 0xdb, 0xd0, 0x43, 0x81, 0x08, 0x18, 0x8d, 0x22, 0x9c, 0x4f, 0x14, 0x8c, + 0x85, 0x8c, 0xdf, 0x43, 0xdb, 0x01, 0x7a, 0x4a, 0x0a, 0x03, 0x0c, 0x18, + 0xc8, 0x6b, 0xe8, 0xd5, 0x0e, 0xa2, 0x65, 0xcc, 0xdf, 0x68, 0x75, 0xc7, + 0x1e, 0x43, 0x5c, 0x58, 0xb1, 0x83, 0x0c, 0x8c, 0x14, 0x11, 0x75, 0x0f, + 0xbe, 0xfc, 0xb4, 0xfb, 0x9f, 0x7b, 0x93, 0xdb, 0x57, 0xbe, 0xab, 0xbf, + 0xa5, 0x93, 0x39, 0x17, 0x55, 0x5b, 0xef, 0x25, 0xa9, 0xa2, 0xaa, 0x5c, + 0xce, 0xb7, 0x2d, 0xaa, 0x8e, 0xbd, 0x2e, 0x54, 0x47, 0x56, 0xae, 0xf6, + 0xe6, 0x4e, 0xbf, 0xb3, 0xd2, 0xdf, 0x47, 0x94, 0x51, 0x88, 0xb1, 0x71, + 0x51, 0x61, 0x76, 0x13, 0x76, 0x1e, 0xe5, 0x38, 0x82, 0x08, 0x0b, 0x0d, + 0x51, 0x00, 0xb1, 0xd5, 0x30, 0x04, 0x00, 0x73, 0x30, 0x0c, 0x81, 0x5a, + 0x30, 0x5e, 0xd3, 0xd7, 0x34, 0x18, 0xc4, 0xaa, 0x30, 0x2f, 0x40, 0xf5, + 0x30, 0x0f, 0x80, 0x66, 0x30, 0x04, 0xc0, 0x3b, 0x30, 0x02, 0x80, 0x16, + 0x30, 0x02, 0x40, 0x05, 0x05, 0x00, 0x1e, 0xab, 0x47, 0x40, 0x06, 0x30, + 0x0f, 0x40, 0xee, 0x07, 0x00, 0x19, 0x0f, 0x8f, 0x12, 0x4a, 0x85, 0x47, + 0x70, 0x6e, 0x2e, 0x07, 0x30, 0xe2, 0x47, 0x1f, 0xa4, 0xd9, 0x4e, 0xa7, + 0x2f, 0xc7, 0xb9, 0xae, 0xbb, 0x2d, 0xe7, 0xf9, 0x07, 0x32, 0x8c, 0x59, + 0x08, 0x49, 0xc6, 0xa7, 0x50, 0xb8, 0x96, 0xe5, 0xbc, 0x0a, 0xe1, 0xfc, + 0x4c, 0xce, 0xb3, 0x3a, 0x53, 0x44, 0xea, 0x8e, 0xfd, 0x3a, 0x8a, 0x43, + 0x94, 0xc8, 0x43, 0x8c, 0x43, 0x7a, 0x33, 0x51, 0x8a, 0xf4, 0xce, 0x4c, + 0x3f, 0x5b, 0x5c, 0xa2, 0x5f, 0xa2, 0x94, 0x0f, 0xdb, 0x1c, 0x6a, 0xd7, + 0x1a, 0x57, 0xe6, 0x92, 0x18, 0x73, 0x4e, 0xd6, 0xd6, 0xa3, 0x57, 0xc0, + 0x57, 0xc8, 0xa5, 0x4a, 0xa8, 0x4d, 0xe4, 0xab, 0x42, 0x61, 0xc5, 0x09, + 0x73, 0x70, 0x4b, 0xa9, 0xca, 0xb7, 0xea, 0xe7, 0x4a, 0x53, 0x9d, 0x43, + 0x15, 0x4c, 0x76, 0x30, 0xa1, 0xff, 0xfb, 0xd4, 0x60, 0x54, 0x88, 0x88, + 0xba, 0x70, 0x3d, 0x03, 0xef, 0x7b, 0x70, 0x58, 0x0e, 0x08, 0x32, 0x20, + 0x65, 0x6e, 0x1f, 0xf1, 0xc0, 0xfb, 0x4f, 0x61, 0x8d, 0xc1, 0x43, 0x38, + 0x21, 0x68, 0x83, 0x09, 0xb8, 0xce, 0x4f, 0x5c, 0xd0, 0xf2, 0xde, 0xa5, + 0x47, 0xce, 0x7c, 0xb1, 0xaa, 0x90, 0x08, 0x42, 0xa5, 0xeb, 0x1c, 0x02, + 0xfe, 0xdd, 0x19, 0xad, 0x0b, 0x4c, 0x2a, 0x0e, 0xc3, 0x29, 0x5a, 0x9f, + 0x6d, 0xb2, 0x1b, 0x31, 0xcc, 0xb3, 0x45, 0x31, 0xa2, 0xe2, 0x78, 0x2f, + 0xaf, 0x8f, 0xcc, 0xc1, 0x66, 0x81, 0x53, 0xb8, 0xac, 0x53, 0xb9, 0x36, + 0xb6, 0xaa, 0x5f, 0x32, 0xd6, 0x0b, 0xc5, 0x3a, 0x55, 0x5d, 0x79, 0x9e, + 0x4a, 0xe4, 0xc9, 0x11, 0xb8, 0xfe, 0x83, 0x3b, 0xb8, 0xaa, 0xd5, 0x49, + 0x88, 0x86, 0xa5, 0x47, 0x69, 0x24, 0x50, 0xa2, 0x54, 0x49, 0x03, 0x44, + 0x84, 0x0f, 0x51, 0xdc, 0x87, 0xab, 0xd5, 0x43, 0xc8, 0xbb, 0x90, 0x81, + 0x36, 0x39, 0xe3, 0x20, 0x41, 0x90, 0x5d, 0x9a, 0x00, 0x00, 0x09, 0xec, + 0x23, 0xcb, 0xc6, 0x3a, 0xd1, 0x89, 0xd2, 0x52, 0x33, 0xc9, 0x7d, 0x0a, + 0x7f, 0x2c, 0xdb, 0x1f, 0x52, 0xb4, 0x72, 0x7a, 0x92, 0xd0, 0xc9, 0xfe, + 0x59, 0xfe, 0xdb, 0x3e, 0x6d, 0xfe, 0x4e, 0xf6, 0xa6, 0xbb, 0xae, 0xb4, + 0x75, 0xe6, 0x39, 0x74, 0xe5, 0x6d, 0x16, 0xd6, 0xef, 0xa7, 0x5e, 0xca, + 0xf5, 0xb3, 0x16, 0xc7, 0x54, 0xbb, 0xfa, 0x68, 0xed, 0xf7, 0xdd, 0xe8, + 0xea, 0xb4, 0xd7, 0xd4, 0xda, 0xd3, 0x75, 0xa1, 0xd3, 0x31, 0xd8, 0x4c, + 0x55, 0x45, 0x0e, 0x26, 0x62, 0xb8, 0x9b, 0x0b, 0x85, 0x87, 0x84, 0x80, + 0x67, 0x6b, 0x44, 0x00, 0x0c, 0x0a, 0x81, 0x44, 0xc0, 0x94, 0x39, 0x8c, + 0x1a, 0xb8, 0x94, 0xc7, 0x58, 0xbf, 0x0c, 0x11, 0x02, 0x54, 0xc0, 0x24, + 0x0d, 0x82, 0x80, 0x2e, 0x38, 0x00, 0x8f, 0x5c, 0x16, 0xb5, 0x11, 0x94, + 0xc0, 0x6c, 0x26, 0xd4, 0x16, 0x5d, 0x23, 0x7c, 0x1f, 0xe8, 0x66, 0x31, + 0x71, 0x97, 0x40, 0x39, 0x47, 0x9c, 0x1f, 0x7d, 0x9e, 0x49, 0xc9, 0x34, + 0xbf, 0x34, 0xdd, 0x8f, 0xd6, 0x2e, 0xb2, 0xc8, 0x47, 0x67, 0x05, 0xac, + 0x8b, 0x48, 0xbf, 0x84, 0xc0, 0x15, 0x2a, 0x29, 0xac, 0xb4, 0xbd, 0x44, + 0x42, 0xd8, 0x97, 0x75, 0x15, 0x48, 0x54, 0xb9, 0xdf, 0x46, 0xee, 0xad, + 0x8f, 0xbb, 0x6a, 0xce, 0x9c, 0xc8, 0x35, 0x96, 0x38, 0x40, 0xd0, 0x46, + 0x06, 0x6e, 0xbe, 0x20, 0x00, 0x80, 0xe0, 0x7f, 0x80, 0xa6, 0x3d, 0x02, + 0x05, 0xd1, 0xe9, 0x38, 0x52, 0x88, 0xb6, 0x4d, 0x4a, 0x47, 0x1c, 0xc3, + 0x82, 0xa2, 0xd9, 0x56, 0x72, 0x66, 0x8c, 0x7e, 0x79, 0x78, 0xf6, 0x55, + 0x7d, 0xd2, 0x59, 0x9a, 0xf5, 0x94, 0x79, 0x6a, 0xe7, 0x56, 0x50, 0xe0, + 0xe9, 0x0d, 0xc4, 0x28, 0xb1, 0x65, 0xd9, 0x7d, 0x1b, 0x6c, 0x8e, 0x47, + 0x6f, 0x30, 0x76, 0x75, 0xaa, 0x0e, 0x10, 0x5f, 0x54, 0xb5, 0x21, 0x7c, + 0xe0, 0xf9, 0xd3, 0x96, 0x59, 0xa3, 0x86, 0x27, 0xe7, 0xb5, 0x38, 0x60, + 0xfc, 0xea, 0x3b, 0xad, 0x3d, 0x78, 0x9c, 0x25, 0x1c, 0x1f, 0x34, 0xa5, + 0xf7, 0x4b, 0xb1, 0x2d, 0x4e, 0x7f, 0x85, 0x51, 0xf9, 0x29, 0xe1, 0x83, + 0x2e, 0xba, 0x5b, 0x2f, 0x5e, 0x23, 0xd8, 0x32, 0x96, 0x3b, 0x84, 0xb0, + 0xd3, 0xe5, 0x52, 0xc2, 0xda, 0x32, 0x39, 0x23, 0x24, 0xc6, 0x5e, 0x75, + 0x2a, 0x82, 0xf2, 0x09, 0x60, 0xaa, 0x51, 0x3d, 0x1b, 0x18, 0x8c, 0xc7, + 0xe3, 0xc1, 0x18, 0x06, 0x75, 0xc2, 0x40, 0x00, 0x2d, 0xd3, 0x10, 0xa9, + 0x3f, 0xd5, 0x56, 0xdf, 0x7b, 0xbb, 0xef, 0xf5, 0xff, 0xfe, 0xbb, 0x6e, + 0x14, 0x99, 0x0e, 0x0c, 0x6a, 0x47, 0xaf, 0x27, 0x1e, 0xe7, 0x73, 0x36, + 0xfb, 0x91, 0x26, 0x61, 0xbc, 0xd6, 0xf4, 0xdf, 0x4f, 0xad, 0xda, 0x89, + 0x4f, 0xfd, 0xb7, 0xb2, 0xef, 0x6f, 0xfd, 0xfd, 0x7f, 0xfb, 0xff, 0x45, + 0xdf, 0xc8, 0xbf, 0xff, 0xff, 0xd3, 0x7b, 0xeb, 0xce, 0x87, 0x67, 0x75, + 0xd1, 0xd0, 0x8e, 0xcc, 0x43, 0xe6, 0x45, 0x21, 0x58, 0x91, 0x70, 0x05, + 0x30, 0x18, 0x00, 0x7b, 0x30, 0x25, 0x41, 0x14, 0x30, 0x80, 0x11, 0x91, + 0x34, 0x19, 0x83, 0x5a, 0x30, 0x4b, 0x80, 0xb3, 0x30, 0x17, 0xc0, 0x46, + 0x30, 0x09, 0x00, 0x1f, 0x01, 0x00, 0x14, 0xdd, 0x60, 0x44, 0xe9, 0x42, + 0x71, 0x81, 0x1c, 0x04, 0x70, 0x60, 0x05, 0xcd, 0x84, 0x94, 0x21, 0x8c, + 0x0a, 0xc4, 0x2d, 0x46, 0x59, 0xd4, 0xf6, 0x64, 0x60, 0x13, 0x3b, 0x25, + 0x55, 0xa8, 0x5a, 0x1c, 0xad, 0x52, 0x92, 0x5b, 0x2b, 0xd4, 0x53, 0x21, + 0x36, 0x67, 0x58, 0x7a, 0xa0, 0x4f, 0xb3, 0xa1, 0x0b, 0x83, 0xe0, 0xbf, + 0x4c, 0x87, 0xbd, 0x42, 0xd0, 0xab, 0x1b, 0xa7, 0x3a, 0xca, 0x85, 0x5f, + 0xd9, 0xcb, 0xe2, 0xfa, 0xa1, 0xbd, 0x74, 0x4e, 0x53, 0x64, 0xe5, 0x78, + 0xdc, 0x80, 0x6b, 0xc4, 0xd1, 0xda, 0x5f, 0xd9, 0x10, 0xc3, 0x91, 0xb1, + 0xb8, 0xb1, 0xb9, 0x27, 0x0b, 0xfa, 0xc9, 0x4e, 0xda, 0x8a, 0x4a, 0xa4, + 0xe0, 0xab, 0xa3, 0xdc, 0xce, 0x82, 0x76, 0xd9, 0x4a, 0xde, 0xe2, 0xa5, + 0xde, 0x94, 0x88, 0x43, 0xe2, 0xe0, 0x9f, 0x30, 0x12, 0x8a, 0x96, 0x17, + 0xc4, 0x2d, 0x2c, 0xdc, 0x84, 0xa1, 0xe8, 0x51, 0x77, 0x67, 0x7c, 0x8c, + 0x3f, 0xcd, 0xf4, 0x39, 0x49, 0x09, 0xc1, 0x3f, 0x95, 0x88, 0x45, 0xf9, + 0x7b, 0x48, 0x62, 0x5d, 0x38, 0xd0, 0xa6, 0x3f, 0x94, 0x8d, 0x4a, 0xb6, + 0x33, 0x99, 0x58, 0x87, 0xa6, 0xff, 0xfb, 0xd4, 0x60, 0x62, 0x8f, 0xd8, + 0x6f, 0x70, 0x3d, 0x03, 0xef, 0x7b, 0x70, 0x56, 0x0d, 0xf8, 0x32, 0x18, + 0x42, 0x6e, 0x28, 0x59, 0xc0, 0xec, 0x0f, 0xe3, 0x0d, 0xc1, 0xa8, 0xb8, + 0x20, 0x44, 0x61, 0x95, 0xb8, 0x1c, 0xd5, 0x2c, 0xaa, 0x96, 0xa6, 0x55, + 0x73, 0xe7, 0x8a, 0x33, 0x71, 0xcd, 0xc5, 0x0b, 0x5e, 0x58, 0x56, 0xed, + 0x0d, 0x4a, 0x62, 0x67, 0x26, 0xf3, 0xa5, 0x4d, 0x0e, 0x04, 0x27, 0xc9, + 0x65, 0x33, 0xc7, 0xc5, 0xc1, 0x8a, 0xef, 0x95, 0x49, 0x75, 0x7c, 0xca, + 0xb4, 0x91, 0xc8, 0x8c, 0xb2, 0xad, 0x26, 0xf9, 0x4f, 0x08, 0xfc, 0x36, + 0x0e, 0xa4, 0x20, 0xcb, 0x7c, 0x38, 0xce, 0x52, 0xcc, 0xdc, 0x23, 0xc4, + 0x05, 0x4a, 0x49, 0xcf, 0xd1, 0x41, 0x2a, 0x00, 0x11, 0xd9, 0x12, 0x03, + 0x87, 0xa5, 0xc8, 0x1b, 0x7f, 0x72, 0x86, 0x6d, 0x59, 0x7b, 0xac, 0x81, + 0x66, 0xbb, 0x82, 0x74, 0x2f, 0xdd, 0x0b, 0xcc, 0xcf, 0xdd, 0x06, 0x2a, + 0x6b, 0x46, 0xda, 0x56, 0xbf, 0xd9, 0xd2, 0xcb, 0xdf, 0x6f, 0xe9, 0xd2, + 0x44, 0x79, 0x2b, 0xb7, 0x7d, 0x52, 0x9e, 0xfd, 0x3d, 0xd3, 0x7d, 0x51, + 0x14, 0xa8, 0x65, 0xdb, 0x6b, 0xff, 0xd3, 0x22, 0x2b, 0xdb, 0xfe, 0x5b, + 0x8e, 0xec, 0xa4, 0x40, 0xc4, 0x63, 0x94, 0x14, 0x61, 0x0a, 0x39, 0x85, + 0x14, 0x4a, 0x03, 0x18, 0x30, 0xa0, 0xc0, 0xc8, 0x60, 0x4d, 0x01, 0x26, + 0x60, 0x9d, 0x81, 0xf8, 0x62, 0x2f, 0x23, 0xbe, 0x72, 0xbb, 0x05, 0x00, + 0x61, 0x44, 0x01, 0x22, 0x60, 0x71, 0x80, 0x58, 0x60, 0x38, 0x00, 0x26, + 0x60, 0x17, 0x80, 0x1c, 0x0e, 0x00, 0x61, 0x13, 0x84, 0x20, 0x01, 0x97, + 0x30, 0xc1, 0x2b, 0x01, 0x08, 0x88, 0x06, 0xc7, 0x9c, 0xbe, 0x70, 0xe4, + 0x08, 0xc9, 0x98, 0x2b, 0x88, 0x30, 0x47, 0xf5, 0xa6, 0x2b, 0x52, 0x7c, + 0xb5, 0xf6, 0x2a, 0xe1, 0x3a, 0xad, 0xbc, 0xa1, 0x3d, 0x50, 0xbd, 0x82, + 0x40, 0xcb, 0x71, 0xac, 0xc2, 0x91, 0xb1, 0x82, 0x30, 0xb7, 0x22, 0x34, + 0xfa, 0xa8, 0xa2, 0xbf, 0x6d, 0x1d, 0x7a, 0x76, 0xac, 0xa0, 0x4d, 0x09, + 0xa9, 0xa9, 0x6b, 0x4d, 0x7c, 0xe8, 0xd2, 0x15, 0xdd, 0x65, 0x72, 0x85, + 0x7c, 0xa6, 0xcd, 0x9d, 0x86, 0x17, 0xe6, 0xbb, 0xe8, 0xd9, 0x5a, 0xbc, + 0x51, 0xdb, 0xca, 0x3f, 0x09, 0x94, 0x27, 0xca, 0x66, 0xae, 0xf6, 0x85, + 0x1e, 0x75, 0xa8, 0x5d, 0x57, 0xbe, 0xf4, 0x65, 0x58, 0xd7, 0x62, 0xde, + 0x57, 0x74, 0x8c, 0x00, 0x68, 0x2e, 0xf2, 0x75, 0x40, 0x0e, 0xe3, 0xe6, + 0xd2, 0xd4, 0x31, 0x47, 0xdf, 0xb7, 0x46, 0xab, 0xff, 0x11, 0x53, 0x26, + 0x5f, 0x4e, 0xbd, 0x24, 0xd2, 0x15, 0x84, 0x4c, 0xb7, 0xae, 0x91, 0x53, + 0x45, 0x20, 0x26, 0xc2, 0xd6, 0x1a, 0x0a, 0x1b, 0xbe, 0xed, 0x0d, 0x77, + 0xb1, 0x25, 0x72, 0xff, 0x24, 0xea, 0x7d, 0x40, 0x6a, 0x7d, 0xbc, 0x96, + 0xa6, 0x43, 0xbd, 0x4c, 0xa5, 0x2c, 0x05, 0x83, 0xb0, 0xf8, 0x31, 0x73, + 0x25, 0xe3, 0xff, 0xb5, 0xa0, 0xad, 0xcb, 0xf9, 0xc5, 0x62, 0x05, 0xed, + 0x85, 0x49, 0xdd, 0x75, 0x73, 0x4e, 0xc3, 0x1a, 0x73, 0x01, 0x58, 0xcf, + 0x1a, 0xcc, 0x47, 0xe8, 0x2d, 0xf6, 0x75, 0x1e, 0x18, 0x7e, 0xec, 0x02, + 0xd1, 0x98, 0xb3, 0x25, 0x58, 0x07, 0xc6, 0x02, 0x6a, 0xef, 0xab, 0x22, + 0xa7, 0x6d, 0x94, 0xb5, 0xfc, 0x76, 0xa3, 0x6a, 0xfe, 0x16, 0xa7, 0x9f, + 0xa9, 0x4b, 0x03, 0x76, 0x5f, 0x79, 0xf7, 0xd1, 0x7d, 0x40, 0x10, 0x86, + 0x7a, 0x97, 0xeb, 0x45, 0x58, 0x1f, 0xf5, 0x48, 0x1d, 0x75, 0x0f, 0x67, + 0x69, 0x8c, 0xc0, 0x58, 0xe1, 0x6f, 0x52, 0xea, 0x24, 0xef, 0x2f, 0x98, + 0x6c, 0x49, 0x25, 0xe5, 0xa5, 0x1b, 0x13, 0x94, 0xc5, 0x14, 0x14, 0x89, + 0xc9, 0xa0, 0x87, 0xf9, 0x36, 0x1a, 0x45, 0x88, 0xad, 0x4d, 0xfd, 0xc8, + 0x8e, 0x77, 0x1f, 0xd0, 0x11, 0xd0, 0x64, 0x4c, 0x97, 0x92, 0x09, 0x25, + 0x4f, 0x07, 0x5d, 0xcd, 0xaa, 0xd4, 0x72, 0x5e, 0x63, 0xab, 0x2a, 0xde, + 0x6e, 0xc5, 0xba, 0x1a, 0xe4, 0x99, 0x4e, 0xe4, 0x52, 0xf9, 0x48, 0x74, + 0x2f, 0xa2, 0x2b, 0x74, 0x91, 0xd9, 0xe6, 0x56, 0x97, 0xfa, 0x1d, 0xed, + 0x62, 0x73, 0xb2, 0xac, 0xed, 0xbb, 0x2a, 0xcd, 0x4b, 0x39, 0x4a, 0xa8, + 0xca, 0x46, 0x44, 0x5a, 0xe7, 0x22, 0x98, 0xe1, 0xe5, 0x34, 0xc7, 0x90, + 0x58, 0x5d, 0x80, 0xae, 0x1e, 0x03, 0x8a, 0x8b, 0x2a, 0x87, 0x04, 0xdd, + 0x66, 0x13, 0x20, 0x7c, 0x5d, 0x03, 0x00, 0xb2, 0x60, 0x4e, 0x80, 0x56, + 0x61, 0x3b, 0x02, 0xe8, 0x6b, 0x3b, 0x02, 0x8e, 0x60, 0xaf, 0x00, 0x58, + 0x60, 0x3d, 0x80, 0x06, 0x60, 0x1a, 0x00, 0x00, 0x60, 0x0c, 0x80, 0x0a, + 0x60, 0x03, 0x00, 0x08, 0x55, 0x00, 0x02, 0x03, 0x58, 0x33, 0x01, 0xc8, + 0x0a, 0x50, 0x80, 0x03, 0xd7, 0xe0, 0x71, 0x2c, 0x46, 0x54, 0x28, 0xd4, + 0xe9, 0x14, 0x4a, 0x14, 0xbe, 0xe2, 0xaf, 0x70, 0x6f, 0x33, 0x9d, 0x96, + 0xf3, 0xd0, 0x7d, 0xa3, 0xcc, 0xb2, 0x12, 0xa9, 0x47, 0x8e, 0xa6, 0x41, + 0x6c, 0x84, 0x75, 0x31, 0x95, 0x69, 0xa5, 0x73, 0xe4, 0x73, 0x74, 0x25, + 0x12, 0xa4, 0xc5, 0x42, 0xbc, 0x14, 0x9b, 0x9b, 0x92, 0xbd, 0xc9, 0x12, + 0xe9, 0x4a, 0xba, 0x5f, 0x60, 0x43, 0x52, 0xe9, 0xd5, 0x09, 0xf8, 0xc4, + 0xaf, 0x47, 0x75, 0x35, 0x9e, 0x1a, 0x8a, 0x82, 0xfe, 0xe7, 0x3a, 0xb2, + 0x12, 0xa1, 0x16, 0xb3, 0x02, 0x2a, 0xd5, 0x0e, 0xe4, 0xab, 0x86, 0xd4, + 0x5a, 0xe7, 0xf4, 0xec, 0x52, 0xff, 0xfb, 0xd4, 0x60, 0x48, 0x0d, 0xd8, + 0x7e, 0x70, 0x3d, 0x03, 0xef, 0x7b, 0x70, 0x5c, 0xae, 0x08, 0x21, 0x18, + 0x45, 0x6e, 0x21, 0x95, 0xc0, 0xf6, 0x4f, 0x3d, 0xed, 0xc1, 0x55, 0xb7, + 0x60, 0xc8, 0x31, 0x95, 0xb9, 0x2e, 0x18, 0x14, 0xed, 0x6a, 0xb4, 0xe9, + 0xc8, 0xac, 0x43, 0x15, 0x4a, 0x77, 0xaa, 0x16, 0x04, 0x81, 0xa2, 0xaa, + 0x53, 0xbd, 0x5f, 0x46, 0xc7, 0x4c, 0x58, 0xbf, 0xd1, 0x4a, 0xcf, 0x15, + 0x8d, 0xe3, 0x93, 0x32, 0xe1, 0x0a, 0x88, 0x7f, 0xe1, 0x56, 0x86, 0xb6, + 0x21, 0x6a, 0x72, 0x6b, 0x2a, 0x91, 0xf3, 0x1c, 0x64, 0xf3, 0x32, 0xae, + 0x43, 0xf3, 0x0f, 0xd5, 0xa9, 0xda, 0xb9, 0xbe, 0x61, 0x2d, 0x4f, 0x45, + 0x02, 0x1c, 0xa0, 0x54, 0xae, 0x57, 0xa3, 0xc2, 0x70, 0x43, 0x0f, 0xf6, + 0x26, 0x83, 0x35, 0xa1, 0x48, 0x62, 0xa0, 0x17, 0x71, 0x15, 0xf1, 0x0d, + 0x08, 0xea, 0xf8, 0x89, 0xc2, 0x6d, 0x0e, 0x0b, 0x2b, 0x41, 0xc6, 0x84, + 0x9b, 0x6c, 0x4a, 0x03, 0x21, 0x14, 0x5e, 0xe3, 0x20, 0x97, 0x66, 0x01, + 0x87, 0x91, 0xce, 0x7e, 0x0b, 0xb1, 0x2e, 0x18, 0x45, 0xf4, 0x6f, 0x83, + 0xd6, 0xc0, 0xff, 0x92, 0x93, 0x0c, 0x60, 0xac, 0x53, 0xd4, 0xcd, 0x1b, + 0x62, 0xa3, 0x19, 0xe7, 0xaa, 0x6e, 0x3d, 0xd2, 0xdf, 0x75, 0xf7, 0x7b, + 0x23, 0x2a, 0xc4, 0x94, 0xa4, 0x66, 0x2d, 0x74, 0xb3, 0xdb, 0x9b, 0x57, + 0x74, 0x4d, 0xf9, 0xaf, 0x5d, 0xd2, 0xcc, 0x63, 0xea, 0xab, 0x55, 0x2d, + 0xf2, 0x2b, 0x52, 0x88, 0x4e, 0x4b, 0x94, 0xa5, 0xb5, 0x6f, 0x6a, 0x26, + 0xc7, 0x75, 0xb3, 0xec, 0xe9, 0x64, 0xda, 0x7e, 0xef, 0x57, 0x4e, 0x8d, + 0xbe, 0x94, 0x3a, 0xf9, 0x19, 0x10, 0xa4, 0x28, 0x74, 0x7b, 0x28, 0x28, + 0xc1, 0x44, 0x41, 0x20, 0xe1, 0x4a, 0x2c, 0x2e, 0x30, 0xeb, 0x01, 0x80, + 0x20, 0x0f, 0x18, 0x29, 0x84, 0xd9, 0x8c, 0xd4, 0x87, 0x1f, 0xe3, 0x12, + 0xe9, 0x86, 0xd0, 0x37, 0x18, 0x21, 0x81, 0x19, 0x80, 0xa0, 0x0a, 0x18, + 0x06, 0x80, 0x18, 0x50, 0x00, 0x81, 0x40, 0x08, 0xb9, 0xd2, 0x50, 0xc0, + 0x1c, 0x2b, 0x18, 0x54, 0xb4, 0x39, 0x5b, 0x13, 0xb0, 0x54, 0x0c, 0x66, + 0x2b, 0x32, 0xe9, 0x85, 0x89, 0x0e, 0x33, 0x08, 0x12, 0x54, 0x43, 0x82, + 0xac, 0x39, 0xda, 0xae, 0x57, 0x9f, 0xab, 0xc6, 0x8a, 0xed, 0x4a, 0xae, + 0x35, 0xc9, 0x62, 0xf9, 0x37, 0x1e, 0x94, 0x28, 0x79, 0x8d, 0x01, 0x3d, + 0x52, 0x29, 0x65, 0x4f, 0x35, 0xa7, 0x8f, 0xc8, 0xd1, 0xdc, 0xb4, 0x91, + 0x4a, 0x23, 0xd0, 0xa7, 0x4c, 0xc8, 0x72, 0x65, 0x5a, 0xce, 0x6b, 0xad, + 0xa9, 0xce, 0x96, 0x74, 0x31, 0x96, 0xb5, 0x94, 0xea, 0x59, 0x4b, 0xa4, + 0x11, 0x6a, 0x15, 0x72, 0xe0, 0xbf, 0xb5, 0xa9, 0x0e, 0xb3, 0x98, 0xea, + 0x94, 0xe4, 0x56, 0xab, 0x1c, 0xde, 0xa9, 0x1b, 0x0e, 0xc3, 0xed, 0x8e, + 0x36, 0x10, 0xa8, 0x4a, 0x46, 0x45, 0xb5, 0x41, 0xc6, 0xf2, 0x87, 0xf1, + 0xfb, 0x19, 0x59, 0x54, 0x30, 0xdc, 0x25, 0x2a, 0x65, 0x6b, 0xd4, 0xd5, + 0x9a, 0x16, 0x94, 0xec, 0xaa, 0x85, 0xa5, 0xe6, 0xc4, 0x82, 0x2d, 0x59, + 0x57, 0xd3, 0xa9, 0x5a, 0x54, 0x87, 0x8b, 0x69, 0xfd, 0x3a, 0xb5, 0x7e, + 0x32, 0xbd, 0x34, 0x86, 0xb5, 0x2c, 0x2a, 0xb4, 0x8e, 0x51, 0x30, 0xa7, + 0x55, 0xa9, 0x85, 0x49, 0xdc, 0xeb, 0x67, 0x99, 0xde, 0xa0, 0x4e, 0x2e, + 0x68, 0x77, 0xad, 0x33, 0xa2, 0x18, 0x1a, 0xdb, 0x5a, 0x98, 0x18, 0x50, + 0xa4, 0x31, 0xb2, 0x15, 0x74, 0x8a, 0x8f, 0x12, 0xca, 0xd8, 0x0d, 0x48, + 0xa6, 0x73, 0x29, 0x70, 0x85, 0x90, 0x65, 0x29, 0x4c, 0xae, 0x3f, 0x92, + 0x68, 0xe8, 0x67, 0x93, 0xf3, 0xa9, 0x18, 0xd2, 0x5e, 0x97, 0xcc, 0x83, + 0xc0, 0xe9, 0x19, 0x0b, 0x81, 0x16, 0x53, 0x00, 0xa3, 0x7d, 0x86, 0xe4, + 0xb4, 0xb3, 0x35, 0x52, 0x2d, 0xf2, 0x3e, 0xb9, 0x91, 0x29, 0x7b, 0xc5, + 0xb0, 0xc1, 0x31, 0x92, 0xeb, 0xfe, 0x6a, 0xff, 0xbd, 0x39, 0xaf, 0x92, + 0xf4, 0x27, 0x66, 0xf5, 0xdd, 0x66, 0xaa, 0x3b, 0x59, 0xe6, 0xff, 0x27, + 0x37, 0x9d, 0x90, 0xe8, 0xed, 0x75, 0xd9, 0xf2, 0xd7, 0x6f, 0x47, 0x27, + 0x7d, 0xfe, 0xb9, 0xfc, 0x9a, 0xaf, 0x7d, 0x0d, 0x63, 0x58, 0xe7, 0x77, + 0x72, 0x32, 0xd9, 0xc6, 0x31, 0x59, 0xca, 0x2a, 0xc1, 0xe6, 0x10, 0x30, + 0xe1, 0x70, 0xd8, 0x4a, 0x40, 0x0c, 0x01, 0xc1, 0x28, 0xc0, 0x24, 0x3b, + 0x4c, 0x33, 0xb8, 0x80, 0xe6, 0xc8, 0xce, 0xcc, 0x17, 0x02, 0x90, 0xc0, + 0x2c, 0x11, 0xc0, 0x00, 0x2c, 0x01, 0x00, 0x54, 0x84, 0x2b, 0x00, 0x85, + 0x24, 0x5d, 0xd3, 0x03, 0xf0, 0x9d, 0x0e, 0x01, 0x56, 0x9c, 0x6b, 0x2c, + 0x23, 0x8f, 0xf4, 0x2c, 0xc8, 0x2d, 0xc3, 0xae, 0x03, 0xd6, 0x15, 0x12, + 0x5a, 0x31, 0xb9, 0x02, 0x10, 0xfc, 0x45, 0x2b, 0x1a, 0xcc, 0x58, 0x45, + 0x60, 0xa2, 0x05, 0x7b, 0x29, 0x3b, 0x45, 0x30, 0x20, 0xcb, 0xf3, 0x12, + 0x1e, 0xae, 0x72, 0x0d, 0x32, 0xf8, 0x8c, 0x3b, 0x52, 0x2d, 0xc7, 0x32, + 0xca, 0x79, 0x9c, 0xde, 0x2e, 0x1b, 0x92, 0x01, 0xc8, 0xf0, 0xc3, 0xd9, + 0xfa, 0x95, 0x57, 0x22, 0x94, 0xe5, 0xde, 0x32, 0x57, 0x9a, 0x67, 0x5b, + 0xf6, 0xcb, 0x2b, 0xe1, 0xcc, 0xac, 0x4f, 0x39, 0xa2, 0x55, 0xca, 0x97, + 0xf1, 0x26, 0x63, 0x89, 0x44, 0x1b, 0x69, 0xb6, 0xcf, 0x34, 0x15, 0xcc, + 0x67, 0x87, 0x74, 0x46, 0x63, 0x91, 0x95, 0xbd, 0x0c, 0x2b, 0x8e, 0xb8, + 0xca, 0xf3, 0x9f, 0x69, 0x13, 0xff, 0xfb, 0xd4, 0x60, 0x4e, 0x8d, 0xd8, + 0x53, 0x70, 0x3d, 0x0b, 0xcf, 0x7b, 0x70, 0x58, 0x2d, 0xe8, 0x32, 0x18, + 0x62, 0x6e, 0x62, 0x0d, 0xc0, 0xf4, 0x0f, 0x3f, 0x0d, 0xc1, 0x7f, 0x38, + 0x20, 0x88, 0x81, 0x95, 0xb8, 0xd5, 0x42, 0x5e, 0x14, 0xae, 0x99, 0x15, + 0xec, 0xe7, 0x53, 0x89, 0xc4, 0x85, 0xc8, 0xdf, 0x0e, 0x77, 0x69, 0x44, + 0xf9, 0xd5, 0x32, 0xa8, 0xff, 0x30, 0xdc, 0x56, 0xe2, 0x12, 0xe5, 0x1a, + 0x05, 0xc1, 0x91, 0x8e, 0x11, 0xe7, 0x22, 0x35, 0xb0, 0xf0, 0x32, 0x90, + 0xc6, 0x35, 0x12, 0xb6, 0x3a, 0xed, 0x84, 0xe5, 0x67, 0x9d, 0x55, 0x00, + 0xff, 0x6f, 0x95, 0xbd, 0x5a, 0xce, 0xf8, 0xc4, 0x69, 0x73, 0x51, 0x32, + 0xfc, 0x2f, 0x31, 0xb5, 0xc6, 0x43, 0xe3, 0x40, 0x4a, 0x1f, 0xaa, 0x94, + 0x03, 0xd5, 0x93, 0xbc, 0xe6, 0x39, 0x15, 0x04, 0x2a, 0x29, 0x80, 0xcc, + 0xb4, 0x5d, 0x51, 0x26, 0x92, 0xb4, 0xcb, 0x24, 0x22, 0xdc, 0xa9, 0x1b, + 0xe8, 0x22, 0xdd, 0xa1, 0x77, 0x26, 0xd5, 0x20, 0x01, 0x7d, 0xd9, 0x65, + 0x06, 0x92, 0x3b, 0x28, 0xa5, 0x0e, 0x51, 0xfb, 0xb2, 0xf7, 0xf9, 0xf0, + 0x61, 0x76, 0x7a, 0x9d, 0x86, 0x2d, 0xc5, 0x1d, 0x28, 0x6a, 0xc5, 0x9d, + 0x3f, 0x29, 0xfb, 0x7a, 0x27, 0x4b, 0x68, 0x7a, 0x29, 0x34, 0x4b, 0x2b, + 0xef, 0xd5, 0x1f, 0xad, 0xdf, 0x4a, 0xaa, 0x36, 0x9f, 0xdb, 0xdf, 0xac, + 0xe6, 0x74, 0xa5, 0x3e, 0x76, 0x6b, 0xf6, 0xb5, 0x2a, 0xab, 0x46, 0x26, + 0x89, 0xe4, 0x54, 0xd9, 0xd0, 0xbb, 0x29, 0xa6, 0x44, 0x4c, 0xab, 0x50, + 0x44, 0x15, 0x29, 0x0c, 0x10, 0x39, 0x4c, 0x43, 0x90, 0x4a, 0x03, 0x02, + 0x30, 0x56, 0x30, 0x34, 0x0e, 0x53, 0x0a, 0x5e, 0x56, 0x34, 0x33, 0x2f, + 0x93, 0x06, 0x30, 0x9a, 0x30, 0x12, 0x03, 0x91, 0x90, 0x14, 0x2d, 0xcc, + 0x10, 0xff, 0xb9, 0x70, 0xc1, 0x83, 0x80, 0x18, 0x14, 0x00, 0x9c, 0x74, + 0x54, 0xa7, 0x13, 0x89, 0xe8, 0xef, 0x44, 0xdd, 0xc1, 0xb4, 0xf9, 0x46, + 0xb3, 0x1d, 0xa7, 0x1a, 0x49, 0x12, 0x4c, 0x70, 0x1d, 0x4a, 0xf6, 0x55, + 0x31, 0xe4, 0xa5, 0x34, 0x4e, 0x25, 0xed, 0x2b, 0x55, 0x24, 0xa1, 0x4c, + 0x5e, 0xdc, 0x96, 0x4e, 0xf4, 0xfa, 0x12, 0x48, 0x1c, 0x8d, 0xe3, 0x49, + 0xe2, 0xbd, 0x34, 0x62, 0x12, 0xf5, 0xc3, 0x05, 0x03, 0x91, 0x2f, 0x9a, + 0xb8, 0xee, 0x33, 0xa9, 0x64, 0xe5, 0xf9, 0x0c, 0x56, 0xbb, 0xcb, 0x18, + 0x81, 0x21, 0x8a, 0xb1, 0x97, 0x8d, 0xf8, 0x7e, 0x62, 0xb2, 0x9c, 0x7a, + 0xfb, 0x48, 0xdf, 0xba, 0x39, 0x73, 0xcb, 0x2d, 0x8b, 0x53, 0x4a, 0xa7, + 0xda, 0xcc, 0xeb, 0x7f, 0x62, 0x45, 0xf3, 0xb2, 0xf7, 0x73, 0x29, 0x7c, + 0x7e, 0xe3, 0xef, 0x17, 0xa7, 0x97, 0x51, 0xc8, 0x5a, 0xfc, 0x07, 0x1c, + 0x78, 0x22, 0x72, 0x78, 0x69, 0xc7, 0x88, 0x45, 0x9d, 0xd7, 0x5e, 0xc3, + 0xa7, 0x1f, 0xec, 0xbd, 0xe6, 0xa8, 0xe6, 0xc3, 0x52, 0x87, 0xbb, 0x52, + 0xf9, 0x88, 0x0e, 0xbb, 0xcb, 0x2a, 0xa4, 0xa3, 0x82, 0x69, 0xe3, 0x11, + 0xe9, 0xc7, 0x2a, 0x4e, 0xfd, 0xb7, 0x68, 0x53, 0x46, 0x78, 0x2c, 0xbe, + 0xf7, 0x22, 0x92, 0xd8, 0xb4, 0x4a, 0x0f, 0x9d, 0x83, 0xe3, 0x30, 0xf5, + 0x34, 0x31, 0x14, 0xbe, 0xfe, 0xd4, 0x80, 0x1c, 0x19, 0x4c, 0x86, 0xed, + 0x79, 0x0c, 0x4e, 0x82, 0x4d, 0x19, 0x7f, 0xa2, 0x2e, 0x8d, 0xfa, 0x2a, + 0x08, 0x5c, 0xb9, 0xf8, 0x8c, 0xad, 0x28, 0x1d, 0x9f, 0xca, 0xe9, 0x28, + 0xad, 0xc0, 0x8e, 0xac, 0x36, 0xed, 0xb3, 0x08, 0x72, 0xcc, 0x59, 0x87, + 0xb6, 0xea, 0xed, 0xd7, 0x2c, 0x16, 0x16, 0xd2, 0x08, 0xda, 0x41, 0xa8, + 0x12, 0x97, 0x99, 0x67, 0xbc, 0x9c, 0x5e, 0x5c, 0x3e, 0xc6, 0x2e, 0x91, + 0x28, 0xf2, 0x91, 0x98, 0x74, 0x33, 0x65, 0x26, 0xd6, 0xb4, 0x32, 0xd4, + 0x9b, 0xc8, 0x8e, 0x47, 0x74, 0xd1, 0xdf, 0xad, 0x54, 0xf6, 0xf5, 0xdb, + 0xa9, 0x97, 0xb2, 0x59, 0x65, 0xb7, 0xec, 0xb4, 0x6a, 0xd0, 0x84, 0xb6, + 0xfb, 0x97, 0x4d, 0xee, 0x74, 0xef, 0x1f, 0x31, 0x75, 0x65, 0xce, 0x6d, + 0x12, 0x8f, 0x5b, 0x2f, 0xae, 0xee, 0x99, 0xd5, 0x09, 0xd5, 0x04, 0xcf, + 0x90, 0x82, 0xce, 0x63, 0x9c, 0x7b, 0x9c, 0x3a, 0x70, 0x14, 0x3b, 0x23, + 0x8b, 0xa2, 0x0a, 0x87, 0xcc, 0x60, 0xfd, 0x20, 0x0c, 0x06, 0x40, 0xb8, + 0xc1, 0x18, 0x1f, 0x4c, 0x46, 0xe3, 0x68, 0xe5, 0xfc, 0x65, 0x4c, 0x27, + 0x41, 0x28, 0xc0, 0x98, 0x06, 0x40, 0x40, 0x34, 0x9f, 0x0c, 0x4a, 0x3d, + 0x2e, 0x68, 0x06, 0x08, 0xa0, 0x48, 0x8e, 0x10, 0x08, 0x8f, 0x2a, 0x12, + 0x1e, 0xaa, 0x13, 0x94, 0xbc, 0x75, 0x51, 0x55, 0x60, 0x51, 0x31, 0x97, + 0x4a, 0xc1, 0xf1, 0x28, 0xa8, 0x40, 0x34, 0x1e, 0x44, 0xb2, 0x68, 0x88, + 0x39, 0x93, 0xc9, 0xc1, 0x8a, 0xe2, 0xd9, 0x91, 0x30, 0x7e, 0x39, 0x41, + 0x0e, 0x56, 0x24, 0x4c, 0x4c, 0x34, 0x79, 0xf8, 0x7b, 0xb0, 0x2d, 0xe8, + 0xc4, 0x93, 0x39, 0x9a, 0x08, 0xc4, 0xaa, 0x58, 0xe0, 0xc9, 0x6e, 0x5c, + 0x9c, 0x82, 0xe7, 0x25, 0xb0, 0xdd, 0x68, 0x72, 0x5f, 0x00, 0xdb, 0x8e, + 0x65, 0x5e, 0x96, 0x55, 0x53, 0x72, 0xa8, 0x5d, 0x3c, 0xb2, 0x2f, 0x4f, + 0x43, 0x2c, 0xa0, 0xca, 0xac, 0xb2, 0x1b, 0x87, 0x20, 0x08, 0xc4, 0x0f, + 0x2a, 0xbf, 0x29, 0xa4, 0x9e, 0x9a, 0xb1, 0x25, 0x95, 0x52, 0x51, 0x44, + 0xa5, 0x93, 0xd5, 0xdf, 0xa8, 0xc4, 0x42, 0x18, 0xce, 0x7e, 0x76, 0x45, + 0x3f, 0x1c, 0x96, 0x47, 0x20, 0xff, 0xfb, 0xd4, 0x60, 0x53, 0x0d, 0xd8, + 0x4b, 0x74, 0xbe, 0x0b, 0xcc, 0xc3, 0x70, 0x61, 0xcd, 0xe8, 0x22, 0x18, + 0x65, 0x6e, 0x61, 0x31, 0xc0, 0xf4, 0x0f, 0x3d, 0xed, 0xc1, 0x87, 0x38, + 0x20, 0x84, 0x31, 0x95, 0xb8, 0x88, 0xd4, 0xd3, 0xeb, 0x4b, 0x5f, 0x2d, + 0xcf, 0xcd, 0xd8, 0xcb, 0x6d, 0xbc, 0xb6, 0x49, 0x19, 0x7e, 0x65, 0x72, + 0xaa, 0x09, 0x7e, 0x3c, 0xa9, 0x31, 0x47, 0x76, 0x47, 0x2c, 0xbd, 0x17, + 0xb3, 0x18, 0x7e, 0xaa, 0x5e, 0xbf, 0x1c, 0xb7, 0x23, 0x91, 0xcf, 0x61, + 0x1e, 0xb5, 0x01, 0xd7, 0xaf, 0x2b, 0xbb, 0x6a, 0x62, 0x6e, 0x52, 0xfc, + 0xc3, 0x17, 0x26, 0x22, 0xb2, 0x7a, 0xb1, 0x38, 0x8d, 0x3c, 0x30, 0xf6, + 0xcb, 0xea, 0x43, 0x11, 0xa6, 0xc7, 0x1f, 0x69, 0x72, 0xb9, 0x89, 0x4c, + 0x6a, 0x1d, 0x87, 0x1e, 0x96, 0x82, 0xce, 0x19, 0xdb, 0x0e, 0xa9, 0x0e, + 0x34, 0x12, 0xd9, 0x31, 0x4b, 0x4d, 0x04, 0xac, 0xec, 0xa0, 0x00, 0xdf, + 0xa3, 0xa7, 0x07, 0x86, 0x23, 0xf3, 0x6d, 0x11, 0x18, 0x22, 0x87, 0xc8, + 0xa7, 0xb2, 0xa6, 0xa8, 0x6a, 0x77, 0x06, 0x70, 0xc4, 0x3b, 0x16, 0xb3, + 0x68, 0xf9, 0x6c, 0x6f, 0x38, 0x9e, 0x99, 0x1e, 0xaa, 0x49, 0x37, 0x52, + 0xfd, 0x95, 0x53, 0x64, 0xde, 0x52, 0xb5, 0x73, 0x23, 0xdc, 0x96, 0xbe, + 0x8f, 0x77, 0xcc, 0xd4, 0x4a, 0x67, 0xf4, 0x66, 0xbd, 0x55, 0x5a, 0xe6, + 0x25, 0xab, 0x47, 0x7c, 0xef, 0xe9, 0x9e, 0x95, 0xeb, 0xa3, 0x48, 0x95, + 0x74, 0x44, 0x5a, 0x9c, 0x70, 0xa3, 0x1d, 0x9c, 0x44, 0x78, 0x88, 0xb8, + 0xe2, 0x1e, 0xce, 0x1f, 0x98, 0x3e, 0x22, 0xc0, 0xc3, 0x61, 0x18, 0x12, + 0x81, 0x01, 0x83, 0x80, 0x21, 0x98, 0xe0, 0xb2, 0x21, 0xfd, 0x78, 0x59, + 0x98, 0x7e, 0x81, 0x00, 0xb0, 0x48, 0x84, 0x01, 0xd0, 0x90, 0x00, 0xb3, + 0x74, 0xcd, 0x69, 0x09, 0x92, 0x60, 0x64, 0x0e, 0xaa, 0xc6, 0xe6, 0x8b, + 0x61, 0x6d, 0x43, 0x1e, 0xc1, 0x4c, 0x92, 0xb6, 0x66, 0xc6, 0x16, 0xe3, + 0xf0, 0xf6, 0x8a, 0x5f, 0x25, 0x45, 0xa3, 0x57, 0x06, 0xe2, 0xe1, 0x22, + 0xba, 0x6e, 0x2e, 0xac, 0xa6, 0xed, 0x53, 0x4f, 0xb0, 0xe6, 0x56, 0xb2, + 0x2a, 0x4b, 0xd2, 0x71, 0xc5, 0x12, 0xd9, 0x01, 0x50, 0xa4, 0x6c, 0xb2, + 0x89, 0x38, 0x5d, 0x14, 0x26, 0x6c, 0x76, 0x13, 0x25, 0x3c, 0xdc, 0x66, + 0xc0, 0x39, 0xa3, 0x1d, 0xab, 0x49, 0xe5, 0x0a, 0xb9, 0x0e, 0x64, 0x55, + 0x2d, 0x2a, 0x8e, 0xb3, 0xc9, 0xc9, 0xb5, 0xf2, 0x75, 0xcd, 0x0d, 0x34, + 0xd2, 0xa7, 0x09, 0xcf, 0x75, 0x42, 0x98, 0xee, 0x41, 0x8f, 0xe8, 0x67, + 0x82, 0xc4, 0xc7, 0x6a, 0x2a, 0x1e, 0x16, 0x0c, 0xda, 0xce, 0xa7, 0x3f, + 0x94, 0xc9, 0x73, 0xf9, 0x74, 0x62, 0x22, 0xe1, 0x2d, 0x26, 0x09, 0x9b, + 0x2c, 0x18, 0x32, 0x1f, 0x8c, 0x2b, 0x27, 0xf1, 0x7e, 0x66, 0x24, 0xef, + 0x51, 0x4e, 0x47, 0xf1, 0xf9, 0x2a, 0xd1, 0x6d, 0x57, 0xc7, 0x6f, 0x6d, + 0x91, 0xd2, 0xa9, 0x5c, 0x74, 0x1e, 0x49, 0x2b, 0x2a, 0x5c, 0xd4, 0x4c, + 0xe3, 0x34, 0xae, 0x3f, 0xc9, 0xfb, 0x2a, 0x81, 0x0c, 0x3f, 0x4e, 0xf3, + 0xd9, 0x95, 0x4c, 0xad, 0x6d, 0x4e, 0x22, 0x5c, 0x9c, 0x53, 0x50, 0x50, + 0x2b, 0x96, 0x5c, 0x39, 0xbc, 0x39, 0x0c, 0xf3, 0xcc, 0xe9, 0x42, 0x1a, + 0xdb, 0xd0, 0x86, 0xa8, 0xf1, 0xe0, 0x9d, 0x27, 0xeb, 0x4a, 0x60, 0x58, + 0x11, 0x03, 0xfa, 0x3a, 0x81, 0x7d, 0x5a, 0xbc, 0x88, 0x16, 0x14, 0x2c, + 0xd2, 0x6a, 0x50, 0x22, 0x86, 0xeb, 0x19, 0x8c, 0x41, 0x5e, 0x0a, 0xef, + 0x8b, 0xa1, 0x95, 0x83, 0xb0, 0x03, 0xb2, 0x20, 0x4a, 0xe4, 0x26, 0xf9, + 0x45, 0x7f, 0xa5, 0x0c, 0xf2, 0x8c, 0xc4, 0xe4, 0x86, 0x67, 0x58, 0x9c, + 0xd8, 0xec, 0xcb, 0x4d, 0x0f, 0x2c, 0x93, 0x52, 0x5f, 0x6c, 0x52, 0xb4, + 0x46, 0x44, 0xfa, 0x9f, 0xba, 0xaa, 0x6e, 0x9c, 0x93, 0x77, 0x7d, 0xdd, + 0x51, 0x51, 0xd7, 0x56, 0x45, 0xca, 0x96, 0xd6, 0xe5, 0x7b, 0x2d, 0xde, + 0x87, 0x25, 0xf7, 0xb3, 0x3c, 0x97, 0x6d, 0xb7, 0x45, 0x3d, 0x5e, 0x8d, + 0x69, 0x0a, 0xf2, 0x59, 0xd5, 0xdd, 0x19, 0x16, 0xf5, 0x1a, 0x2a, 0x62, + 0xa0, 0x08, 0x28, 0x20, 0x38, 0x71, 0x18, 0x10, 0x18, 0x54, 0xee, 0x2c, + 0x3c, 0xaa, 0x59, 0x00, 0x02, 0x60, 0x1a, 0x30, 0x4e, 0x02, 0x03, 0x16, + 0xd2, 0x2d, 0x3d, 0x5f, 0x0f, 0x23, 0x0c, 0x30, 0x17, 0x03, 0x03, 0xe0, + 0x70, 0x0f, 0x87, 0x00, 0x21, 0x77, 0xd5, 0x45, 0xb4, 0x67, 0x66, 0x02, + 0x20, 0x6c, 0x18, 0x04, 0xca, 0x70, 0x5b, 0xdc, 0xc9, 0xf3, 0x19, 0x4e, + 0xa6, 0x17, 0x03, 0xdf, 0x68, 0xe5, 0x62, 0x18, 0x5e, 0x1e, 0x45, 0x3a, + 0x86, 0x20, 0xda, 0x90, 0x9d, 0xa9, 0x8f, 0xbc, 0x9d, 0x0a, 0x92, 0xee, + 0xb8, 0x13, 0xd1, 0x98, 0xdc, 0x74, 0x8b, 0x31, 0x56, 0x84, 0x9c, 0xc7, + 0x20, 0xb5, 0x97, 0x75, 0x31, 0x31, 0x3b, 0xa7, 0x86, 0x6e, 0xa7, 0x09, + 0xf9, 0xcc, 0xd9, 0x19, 0x42, 0x5f, 0x8e, 0x43, 0xc6, 0x22, 0x8e, 0x69, + 0xd0, 0xc5, 0x0b, 0x9a, 0x92, 0x78, 0xca, 0xf3, 0x96, 0x12, 0xe5, 0x9a, + 0x26, 0x14, 0x4f, 0x98, 0xe7, 0x3b, 0x6a, 0x71, 0xc8, 0xa0, 0x53, 0x47, + 0x41, 0x21, 0x35, 0x68, 0x7a, 0x75, 0x42, 0x8a, 0x8d, 0x53, 0xa9, 0xd3, + 0x2c, 0xf2, 0x39, 0xc4, 0x42, 0x15, 0x88, 0xc4, 0x29, 0x40, 0x75, 0x2c, + 0xb6, 0xb8, 0x33, 0x74, 0x39, 0x51, 0x75, 0x86, 0x29, 0x4b, 0x1a, 0x1c, + 0x9e, 0x91, 0x1d, 0x0a, 0x5a, 0xff, 0xfb, 0xd4, 0x60, 0x55, 0x8d, 0xd8, + 0x1e, 0x70, 0x3d, 0x93, 0xcf, 0x7b, 0x70, 0x6e, 0xae, 0x08, 0x01, 0x24, + 0x68, 0x6e, 0x1f, 0x1d, 0xc0, 0xf6, 0x0f, 0x3d, 0xed, 0xc1, 0xb0, 0xb8, + 0x20, 0x44, 0x61, 0xa1, 0xb8, 0xb2, 0xba, 0x8c, 0xd2, 0xa8, 0x8c, 0x5d, + 0x50, 0xa4, 0x35, 0x50, 0xf9, 0xf9, 0xdc, 0x96, 0x56, 0x2d, 0x2e, 0x5f, + 0x23, 0xa2, 0xb0, 0x4b, 0x05, 0xbd, 0x86, 0xf1, 0x24, 0x43, 0x4e, 0x28, + 0x49, 0x07, 0xaf, 0x15, 0x0c, 0x71, 0x98, 0x5a, 0x98, 0x91, 0x6f, 0x1a, + 0xe2, 0xc1, 0x5e, 0x47, 0x2b, 0xa2, 0x41, 0xb3, 0xf5, 0x7b, 0xfa, 0x2b, + 0xd5, 0x17, 0x54, 0xe9, 0xf2, 0xa1, 0xb5, 0x4a, 0xf5, 0xfa, 0x31, 0x94, + 0xf0, 0x54, 0xb9, 0x37, 0xa7, 0x61, 0x37, 0x92, 0xc4, 0xf9, 0xb4, 0x76, + 0xa3, 0xd4, 0x4a, 0xf2, 0x84, 0xfd, 0x42, 0x97, 0x25, 0x8d, 0x80, 0x77, + 0x59, 0x4e, 0x13, 0x36, 0x2a, 0xa8, 0x3c, 0x66, 0x8c, 0xa9, 0xd7, 0x26, + 0x2a, 0xb4, 0x43, 0xaa, 0x7b, 0x91, 0xc3, 0x4e, 0x11, 0xab, 0xba, 0x9a, + 0x0c, 0xe5, 0x77, 0x2b, 0xa2, 0x11, 0x39, 0xf2, 0xdd, 0x57, 0x47, 0x90, + 0xd1, 0x51, 0x48, 0xb2, 0xcd, 0x1f, 0x49, 0xc2, 0x5d, 0x4d, 0x3a, 0xcc, + 0x57, 0x5c, 0xf1, 0xdf, 0x15, 0xf7, 0xe9, 0xda, 0x75, 0xfd, 0xcf, 0xfc, + 0x35, 0x5f, 0x11, 0x72, 0x9f, 0x4b, 0xef, 0x51, 0x09, 0xb4, 0xc5, 0x7c, + 0x32, 0x7c, 0x3a, 0xbf, 0x09, 0xd7, 0x1f, 0xdb, 0xdf, 0x33, 0x8d, 0xb8, + 0xfd, 0x68, 0x7a, 0xda, 0x50, 0xe6, 0x2a, 0x5f, 0x46, 0x1a, 0x71, 0xe4, + 0x2e, 0x0e, 0xd3, 0x88, 0xa2, 0x94, 0x0b, 0x05, 0xe8, 0x34, 0x72, 0x9e, + 0xc2, 0x10, 0x11, 0x30, 0x28, 0x06, 0x83, 0x0f, 0xd6, 0xcd, 0x3a, 0x37, + 0x1a, 0xe3, 0x07, 0x90, 0x4f, 0x30, 0x24, 0x01, 0x40, 0x10, 0x03, 0x96, + 0xa1, 0x22, 0xd0, 0xae, 0x39, 0x11, 0x74, 0xe1, 0xd8, 0xc9, 0x44, 0xc6, + 0x99, 0x57, 0x2a, 0x53, 0xe4, 0xe9, 0xc0, 0xcd, 0x4a, 0xb6, 0x18, 0x8a, + 0xf7, 0x33, 0x1c, 0xfd, 0xca, 0x4c, 0xb9, 0x1d, 0x05, 0xd1, 0x5e, 0xaf, + 0x49, 0x28, 0xa0, 0x19, 0x0a, 0xcc, 0x9b, 0xc7, 0x92, 0x76, 0x8d, 0x6d, + 0xcd, 0xf2, 0x29, 0x2c, 0xac, 0x3a, 0xd5, 0x4c, 0xca, 0xd5, 0x72, 0x95, + 0x22, 0x6e, 0xac, 0x42, 0x67, 0x8c, 0xa9, 0x76, 0xcb, 0x0a, 0x1b, 0x33, + 0x75, 0xd4, 0xaf, 0x57, 0x28, 0x16, 0xeb, 0xd6, 0x34, 0x37, 0x06, 0x65, + 0x3b, 0x09, 0x94, 0xf1, 0x69, 0x9d, 0x79, 0x91, 0xc9, 0xc7, 0xc7, 0x82, + 0x71, 0x45, 0x62, 0x37, 0x22, 0x2e, 0xce, 0x25, 0x0b, 0x2c, 0xca, 0x96, + 0xbb, 0xb0, 0x34, 0x30, 0x26, 0xdc, 0x16, 0x94, 0x29, 0xc4, 0x45, 0x57, + 0x07, 0xaa, 0xb6, 0xce, 0x2b, 0x0f, 0xd9, 0x62, 0x92, 0xa3, 0xc9, 0x72, + 0x9c, 0x43, 0x1c, 0x94, 0x69, 0xf4, 0xe2, 0x72, 0x78, 0x4d, 0xc5, 0xf0, + 0xbf, 0x46, 0xaa, 0xbd, 0x55, 0x21, 0xf2, 0x5c, 0x17, 0x6b, 0x4e, 0x16, + 0x74, 0xb9, 0x70, 0xa1, 0xfa, 0xa7, 0x47, 0x23, 0x14, 0xcc, 0xcf, 0xd5, + 0xd1, 0x56, 0x55, 0x4c, 0x0a, 0x0a, 0x27, 0xe3, 0xbb, 0x50, 0x38, 0x2b, + 0xd1, 0x67, 0xe3, 0x09, 0xd1, 0x3f, 0xe8, 0x76, 0x9c, 0x1c, 0x58, 0x1b, + 0x50, 0x98, 0x8c, 0xee, 0x2a, 0xf6, 0xf7, 0x04, 0x8a, 0x23, 0x4a, 0x66, + 0x54, 0x29, 0xcc, 0x94, 0x1e, 0xcf, 0x18, 0x59, 0x9c, 0x59, 0x94, 0x27, + 0x02, 0xe8, 0xee, 0x90, 0x9a, 0x16, 0xc1, 0xf0, 0x4f, 0xb5, 0x9d, 0xac, + 0x09, 0x1a, 0x92, 0x04, 0x70, 0xc2, 0xf0, 0xc6, 0x3d, 0x4a, 0x26, 0x50, + 0x65, 0x35, 0xd8, 0x3b, 0x9e, 0x80, 0x40, 0xb3, 0x9d, 0x3f, 0x89, 0x95, + 0x2a, 0x31, 0x3b, 0x32, 0x68, 0xf3, 0xdb, 0xba, 0x6d, 0xe7, 0x86, 0x8e, + 0xd6, 0xfb, 0x4f, 0xae, 0x7e, 0x76, 0xe6, 0x66, 0x61, 0x65, 0x56, 0x7f, + 0x4b, 0xba, 0xbe, 0x17, 0xde, 0xbe, 0xa2, 0xa3, 0xbb, 0xfe, 0x23, 0x9b, + 0x48, 0xbb, 0xf8, 0xaa, 0xef, 0x7e, 0xbf, 0xdb, 0x8a, 0x9f, 0x6a, 0xaf, + 0x97, 0xd6, 0x12, 0xbe, 0x12, 0xe9, 0xee, 0x6a, 0xd6, 0xda, 0x15, 0xe3, + 0x27, 0x56, 0x66, 0x72, 0x45, 0x85, 0x03, 0x80, 0xd1, 0x66, 0x30, 0xac, + 0x0c, 0x58, 0x30, 0xa7, 0x41, 0x31, 0x25, 0x16, 0x82, 0xf5, 0xe0, 0x01, + 0x80, 0x2a, 0x38, 0x0c, 0x06, 0x06, 0xad, 0x66, 0x67, 0x5a, 0x2e, 0xc6, + 0x00, 0xa0, 0x86, 0x20, 0x00, 0xc4, 0x97, 0x5b, 0x50, 0x3b, 0x26, 0x86, + 0x21, 0xe7, 0x11, 0xde, 0x9c, 0x40, 0x43, 0x12, 0x0e, 0x78, 0xb4, 0x7a, + 0x55, 0x40, 0x2f, 0x5d, 0x95, 0xaf, 0xa1, 0x97, 0x4e, 0x19, 0x34, 0x29, + 0x99, 0x13, 0x48, 0xad, 0x83, 0x50, 0x20, 0xfc, 0x23, 0xf0, 0xfe, 0x6e, + 0x50, 0x74, 0xd9, 0x92, 0xab, 0x00, 0xd9, 0x12, 0x95, 0xb1, 0x28, 0x46, + 0xe1, 0xab, 0x6b, 0xcc, 0x1b, 0x9e, 0xbd, 0x6c, 0x50, 0x55, 0xcf, 0x70, + 0xda, 0xdc, 0x58, 0x95, 0x6c, 0x8a, 0xd7, 0x4a, 0x46, 0xe5, 0xd5, 0xa1, + 0xe5, 0xeb, 0x63, 0x0e, 0x1e, 0xa7, 0x17, 0x6b, 0x98, 0xdb, 0xb3, 0x9c, + 0x39, 0xa1, 0x24, 0xaa, 0xe3, 0x12, 0x34, 0x0a, 0xb3, 0xbd, 0x64, 0x82, + 0xae, 0x69, 0x6d, 0x99, 0x95, 0x4c, 0xf2, 0xb9, 0x74, 0xc2, 0x7e, 0xb9, + 0xab, 0xac, 0xed, 0x9e, 0x14, 0x7c, 0xab, 0xd9, 0xd6, 0x3c, 0x14, 0x0e, + 0x5f, 0xea, 0xee, 0xe6, 0x52, 0x3f, 0x60, 0x67, 0x89, 0x09, 0x8f, 0x0d, + 0x8f, 0xd9, 0x18, 0x32, 0xa9, 0x65, 0xda, 0x95, 0xc5, 0xfe, 0x20, 0x46, + 0x56, 0xbb, 0x57, 0xa1, 0x6f, 0xff, 0xfb, 0xd4, 0x60, 0x57, 0x8d, 0xd7, + 0x69, 0x74, 0xbe, 0x8b, 0xcc, 0x7b, 0x70, 0x6f, 0xad, 0xe8, 0x12, 0x0c, + 0x65, 0x6e, 0x5f, 0x59, 0xd4, 0xf8, 0x0f, 0x3d, 0xed, 0xc1, 0xaa, 0x38, + 0x20, 0x44, 0x61, 0x9d, 0xb8, 0xe6, 0x6e, 0x96, 0x46, 0x58, 0x8f, 0xe5, + 0x6e, 0x72, 0x6f, 0x8e, 0xb8, 0x97, 0x0c, 0xcf, 0x1f, 0xcc, 0xad, 0xab, + 0x03, 0x23, 0xa6, 0x08, 0x4f, 0xdb, 0x1b, 0x19, 0xd5, 0xb5, 0x6d, 0x7f, + 0x0d, 0x46, 0xae, 0x62, 0x69, 0x63, 0x82, 0xfa, 0x0a, 0xb5, 0xa9, 0x99, + 0x0c, 0x58, 0x42, 0x8b, 0x16, 0xd9, 0x0b, 0x1a, 0x20, 0xf1, 0x49, 0xa1, + 0xc5, 0xc9, 0x0b, 0x48, 0x12, 0x70, 0x67, 0x32, 0x00, 0x01, 0xeb, 0x19, + 0x19, 0x86, 0x61, 0x6e, 0x4a, 0x33, 0x3f, 0x30, 0x74, 0xda, 0xe6, 0xb9, + 0x71, 0x55, 0xb1, 0x8c, 0x80, 0xca, 0x04, 0x0e, 0x50, 0x82, 0xcd, 0x06, + 0x72, 0x7e, 0x94, 0x5e, 0x77, 0xb5, 0xe8, 0x46, 0x64, 0x4b, 0x53, 0xef, + 0x9d, 0x9d, 0xda, 0xf3, 0xa2, 0x5d, 0x0a, 0xa6, 0x92, 0x8a, 0xca, 0x4e, + 0x8a, 0xf4, 0x97, 0x32, 0xaa, 0x14, 0xf2, 0xd9, 0x98, 0x8c, 0x46, 0x3d, + 0x16, 0x55, 0x42, 0x23, 0x5c, 0x71, 0x1e, 0xec, 0xc8, 0x76, 0x44, 0x77, + 0xab, 0xbb, 0x32, 0x29, 0x1c, 0xd2, 0xaa, 0xa3, 0xd5, 0xca, 0x75, 0x3b, + 0x29, 0x05, 0xc6, 0xba, 0xaa, 0x89, 0x94, 0x68, 0x53, 0x84, 0x95, 0x8c, + 0x1a, 0x34, 0xc6, 0x13, 0x01, 0xc2, 0xd0, 0x4c, 0x78, 0x74, 0x2c, 0xc0, + 0x38, 0x07, 0xcc, 0x04, 0xc1, 0xa0, 0xc1, 0x81, 0xdd, 0x4c, 0xcb, 0x85, + 0xe8, 0xc0, 0xd0, 0x0f, 0xcc, 0x00, 0xc0, 0x49, 0x39, 0x58, 0x54, 0x6d, + 0xbc, 0x6d, 0x65, 0x4c, 0x0a, 0x1d, 0xae, 0x3f, 0x9e, 0x44, 0xcb, 0xe6, + 0xa5, 0xc6, 0xa2, 0x9c, 0x2d, 0xcf, 0x15, 0x2d, 0x67, 0xe2, 0x31, 0x0b, + 0x72, 0x3d, 0x61, 0x38, 0xbd, 0x4e, 0x28, 0x5b, 0x22, 0xc5, 0x52, 0xa7, + 0x97, 0xd7, 0x8c, 0xb7, 0x99, 0x44, 0x33, 0xa2, 0x94, 0x2f, 0x9d, 0xe8, + 0xe8, 0x66, 0x8a, 0xad, 0x5d, 0x35, 0xb1, 0x29, 0x57, 0xe9, 0x15, 0x8e, + 0xca, 0x64, 0x73, 0x82, 0xad, 0xb2, 0x46, 0x35, 0x79, 0xf9, 0x33, 0xc8, + 0x8a, 0xea, 0xa1, 0x56, 0x50, 0x29, 0xa9, 0x16, 0x0a, 0x3d, 0xeb, 0x9b, + 0x2d, 0xa0, 0x38, 0x55, 0xa2, 0x23, 0x23, 0x02, 0xfb, 0x3a, 0xa5, 0x9d, + 0x5a, 0xc8, 0x98, 0x3e, 0x1d, 0x5e, 0x64, 0x93, 0x26, 0x2a, 0xc2, 0xf1, + 0x44, 0xce, 0x89, 0x74, 0xe0, 0xba, 0x66, 0x57, 0x1c, 0x90, 0x13, 0x2c, + 0xca, 0xc5, 0x53, 0x94, 0x27, 0xcf, 0xe1, 0xb8, 0xac, 0xb5, 0x41, 0x8e, + 0xa8, 0x57, 0x46, 0x62, 0x9a, 0x46, 0x49, 0x2f, 0x25, 0x57, 0x51, 0x92, + 0x4c, 0xea, 0x28, 0xb6, 0x40, 0xb6, 0xbe, 0x88, 0xba, 0x51, 0xa8, 0x9c, + 0xe1, 0x24, 0xd8, 0x95, 0xad, 0x33, 0xe5, 0x69, 0x0f, 0x82, 0xbd, 0x15, + 0xda, 0xad, 0xc2, 0xed, 0x6d, 0x4f, 0x15, 0xcc, 0x39, 0x74, 0xe6, 0xad, + 0x4c, 0x2a, 0x17, 0x06, 0xfb, 0x93, 0x1a, 0x9d, 0xaa, 0x1c, 0x8f, 0x65, + 0x84, 0xae, 0x78, 0x7c, 0x2f, 0xb2, 0xa9, 0x4d, 0x36, 0x15, 0x75, 0x4e, + 0x37, 0x21, 0x3a, 0x20, 0x49, 0xe8, 0x06, 0x01, 0x94, 0x6a, 0xa8, 0x82, + 0xf8, 0x20, 0xe2, 0x6c, 0x45, 0x1a, 0xe1, 0x8c, 0x12, 0xcf, 0x76, 0x3e, + 0xcb, 0x18, 0x08, 0x61, 0xe1, 0xb2, 0x16, 0x53, 0x89, 0x2f, 0xf7, 0x77, + 0x4e, 0xa7, 0xb3, 0x32, 0x02, 0x4f, 0xec, 0x62, 0x77, 0xd4, 0xe9, 0x65, + 0xc3, 0x2c, 0x62, 0x16, 0x70, 0xdf, 0x31, 0x8e, 0xad, 0xe9, 0x4b, 0xad, + 0xd5, 0xf9, 0xc7, 0xdd, 0xdd, 0xe7, 0xdc, 0xc3, 0x34, 0x75, 0x32, 0x99, + 0xf7, 0x75, 0xb2, 0x1e, 0xaa, 0xa7, 0xee, 0xdd, 0x8e, 0x5f, 0x45, 0x44, + 0xab, 0xaf, 0xb2, 0x24, 0xfc, 0xfd, 0x1e, 0xbe, 0x76, 0xeb, 0x7a, 0xbb, + 0xdd, 0x28, 0xe9, 0xb2, 0xb8, 0xea, 0x4b, 0x22, 0x9e, 0x62, 0x8f, 0x22, + 0x9a, 0xc6, 0x21, 0x82, 0x38, 0xb8, 0xc2, 0x25, 0x8c, 0x24, 0x23, 0x8e, + 0x0a, 0xce, 0x17, 0xa9, 0x00, 0x84, 0x47, 0x1d, 0x30, 0x24, 0x02, 0xf3, + 0x04, 0xd0, 0x74, 0x31, 0x34, 0x87, 0xf3, 0xa6, 0x41, 0x7a, 0x30, 0xb0, + 0x04, 0x13, 0x03, 0x70, 0x10, 0x01, 0x00, 0x6a, 0xae, 0x76, 0x53, 0xde, + 0x1d, 0x79, 0xc5, 0x00, 0x1d, 0x5b, 0xe4, 0x47, 0x82, 0xf2, 0x21, 0x56, + 0x63, 0x1c, 0xc2, 0x2e, 0x58, 0xc5, 0xc1, 0x3c, 0xd4, 0x9c, 0x33, 0x0d, + 0xc4, 0xf9, 0x79, 0x72, 0x49, 0xe8, 0xfa, 0x32, 0x8a, 0x71, 0xd0, 0x41, + 0x10, 0x26, 0x99, 0x74, 0x5d, 0x2a, 0x4b, 0xaa, 0x14, 0x37, 0xd2, 0x07, + 0x32, 0x14, 0x5d, 0x4e, 0x42, 0x58, 0x91, 0x38, 0x4c, 0xa6, 0x36, 0x43, + 0xf1, 0x43, 0x97, 0xe9, 0xe6, 0xe8, 0x36, 0x66, 0x71, 0xf9, 0x94, 0xc3, + 0x2d, 0x46, 0xc5, 0x67, 0xef, 0x16, 0xe1, 0x84, 0xdb, 0x66, 0x86, 0x5e, + 0xf7, 0x21, 0xf3, 0x94, 0xc9, 0xdd, 0x18, 0xe4, 0x1f, 0x02, 0x44, 0x7b, + 0x2f, 0x87, 0x21, 0xd9, 0xf5, 0x93, 0x51, 0xa1, 0xd3, 0xbb, 0x54, 0x0c, + 0x71, 0xd5, 0x8e, 0x3e, 0xf2, 0x19, 0x5b, 0xb5, 0x6f, 0x50, 0x0c, 0xaa, + 0x44, 0xe0, 0x3a, 0xd6, 0xa2, 0x13, 0x4b, 0xb6, 0xbc, 0x41, 0xfd, 0x9b, + 0x94, 0xbc, 0x2d, 0xce, 0x62, 0xa4, 0x2a, 0x25, 0x2f, 0x7a, 0xde, 0xb7, + 0x85, 0x5d, 0xc9, 0x28, 0xec, 0x44, 0xef, 0x41, 0xf2, 0x7d, 0xd0, 0x40, + 0xd3, 0x4d, 0xc6, 0x18, 0x75, 0x2b, 0xb8, 0x70, 0x1c, 0x47, 0x3b, 0x94, + 0x10, 0x34, 0x76, 0x8b, 0x28, 0xff, 0xfb, 0xd4, 0x60, 0x64, 0x8f, 0xd9, + 0x0e, 0x74, 0xbc, 0x83, 0xcf, 0xc3, 0x70, 0x7c, 0xed, 0xe7, 0xf0, 0x18, + 0x6b, 0x6e, 0x5f, 0x2d, 0xd2, 0xf8, 0x0f, 0x3d, 0xed, 0xc1, 0xb0, 0x38, + 0x20, 0x48, 0x61, 0x95, 0xb8, 0xe5, 0xca, 0xed, 0x72, 0x95, 0xf3, 0xb0, + 0xfc, 0x53, 0x46, 0x63, 0x71, 0x56, 0x9f, 0x2c, 0xa2, 0x96, 0x5b, 0x85, + 0x43, 0xf2, 0xfc, 0xe3, 0xb3, 0x31, 0x07, 0x7e, 0x0f, 0x82, 0xe5, 0x12, + 0x2b, 0x70, 0x0b, 0x58, 0x96, 0x45, 0xa9, 0x1a, 0xf4, 0x96, 0x43, 0x4c, + 0xb0, 0xb2, 0xe8, 0xc4, 0xb1, 0x71, 0xc1, 0x70, 0xa5, 0xf0, 0xfa, 0x2f, + 0xc5, 0x4e, 0xb0, 0xc9, 0x9c, 0xa7, 0x4e, 0xcc, 0x69, 0xa4, 0xd3, 0xc7, + 0xa1, 0x68, 0x88, 0xae, 0xd9, 0x40, 0x90, 0x94, 0xce, 0x28, 0xaa, 0x43, + 0x00, 0x99, 0x5e, 0xe5, 0xc4, 0x4a, 0xe1, 0x64, 0x12, 0x9d, 0xd8, 0xb4, + 0x47, 0x66, 0x8c, 0xd1, 0x86, 0x15, 0x95, 0x88, 0xa2, 0x87, 0x1d, 0x50, + 0x76, 0x3e, 0x92, 0x92, 0x9b, 0x98, 0x3a, 0x2c, 0xbb, 0x8c, 0x40, 0xd5, + 0x81, 0xce, 0x02, 0x22, 0xe3, 0xb2, 0x7d, 0x7f, 0xea, 0x2e, 0x27, 0x8f, + 0x6f, 0xd3, 0x6d, 0x96, 0xce, 0x19, 0x27, 0xe1, 0xb5, 0x7c, 0xac, 0xcd, + 0x17, 0xbf, 0x87, 0xdb, 0xa6, 0xa6, 0x23, 0x74, 0x47, 0x13, 0x7c, 0xc4, + 0x28, 0xee, 0xe2, 0xed, 0x47, 0x71, 0xfc, 0xb3, 0x56, 0x69, 0xd1, 0x76, + 0xd6, 0x35, 0x95, 0xc1, 0xe6, 0xb9, 0xb1, 0x6f, 0x39, 0x52, 0x71, 0x46, + 0xd3, 0xe6, 0x1c, 0xf5, 0xb9, 0x98, 0xb6, 0xb9, 0xfb, 0x7e, 0xe2, 0xa7, + 0x45, 0xb6, 0xac, 0xbd, 0xb3, 0x66, 0x83, 0xe3, 0x4c, 0x15, 0x2e, 0xcd, + 0x5c, 0x52, 0x78, 0x38, 0xd4, 0x47, 0x40, 0xef, 0x32, 0xb4, 0xd4, 0x31, + 0x2c, 0x54, 0xa0, 0x08, 0x05, 0x4c, 0x0b, 0xc0, 0x28, 0xc3, 0x90, 0xad, + 0x4e, 0x1b, 0x80, 0x80, 0x1c, 0x1e, 0xa4, 0x40, 0x6e, 0x44, 0x00, 0x09, + 0x9e, 0xfc, 0x34, 0x29, 0x1c, 0x06, 0xa1, 0x95, 0x67, 0x89, 0xba, 0x18, + 0x9d, 0x4b, 0xd9, 0xda, 0x10, 0xac, 0x67, 0x57, 0xb8, 0xa4, 0x53, 0xe6, + 0x8a, 0x6d, 0x0f, 0x37, 0xcd, 0xb9, 0x1d, 0x1f, 0x4a, 0x38, 0xd7, 0x70, + 0x47, 0xdd, 0x06, 0xa6, 0x52, 0x2b, 0xd1, 0xa9, 0xe5, 0xcb, 0x1b, 0x25, + 0x91, 0xae, 0xd1, 0x28, 0xe5, 0x2b, 0x9c, 0x26, 0xf5, 0x01, 0xe1, 0x78, + 0x6d, 0xe9, 0x18, 0x89, 0x78, 0x6b, 0x0a, 0x3c, 0x1c, 0x98, 0x5c, 0xa7, + 0xd5, 0xcc, 0x4d, 0x4d, 0x6b, 0x4d, 0xe9, 0x0b, 0x2f, 0x31, 0xa7, 0x36, + 0x9d, 0x62, 0x57, 0xbe, 0x92, 0x91, 0x5b, 0x54, 0x44, 0xfd, 0x52, 0x99, + 0x42, 0xa5, 0x7e, 0xc9, 0x75, 0xd3, 0xd5, 0x49, 0xfd, 0xde, 0xc6, 0x52, + 0x37, 0xb7, 0x2b, 0x9e, 0xa2, 0x0f, 0xf5, 0xdb, 0x0b, 0x94, 0x35, 0xca, + 0xb1, 0x9f, 0x0d, 0xd7, 0x54, 0x36, 0x3e, 0xba, 0xa6, 0xd6, 0x5c, 0xbe, + 0x99, 0x9d, 0x9d, 0x5e, 0xc0, 0xa3, 0xee, 0x94, 0x2b, 0xa6, 0xa4, 0xb2, + 0xb0, 0xf6, 0x38, 0x9b, 0x1e, 0xaf, 0x1d, 0x6d, 0xea, 0x5a, 0xb6, 0xa9, + 0xcf, 0xb9, 0xa0, 0x25, 0x99, 0x5c, 0x6e, 0x8d, 0x52, 0xbc, 0x75, 0x15, + 0xc1, 0x65, 0x65, 0x87, 0x0f, 0xf6, 0xc6, 0xca, 0xeb, 0x76, 0x89, 0x19, + 0xed, 0x9f, 0x45, 0x56, 0xcb, 0xec, 0xa3, 0x44, 0xb5, 0x1c, 0x0a, 0xc5, + 0x4a, 0x75, 0x4b, 0x0d, 0x85, 0xb9, 0x75, 0x1c, 0x9b, 0x1e, 0x12, 0xb9, + 0xae, 0xcd, 0x04, 0x61, 0xf0, 0x8b, 0x5a, 0x90, 0xc8, 0x3d, 0xd0, 0x19, + 0x4d, 0x1b, 0x88, 0xf5, 0x70, 0xb5, 0x1b, 0xa0, 0x29, 0x0b, 0xe0, 0xb7, + 0x66, 0x3b, 0x49, 0xc8, 0x91, 0x2b, 0x9a, 0xa0, 0x25, 0xba, 0x12, 0x46, + 0x45, 0xbb, 0xab, 0x43, 0x35, 0x53, 0x9e, 0xc7, 0x0a, 0xa3, 0x88, 0x64, + 0xb2, 0x74, 0xb3, 0x47, 0x02, 0x06, 0x18, 0x88, 0x08, 0xe9, 0x8c, 0x8f, + 0x7c, 0x8a, 0x88, 0xe9, 0x53, 0xbd, 0xd9, 0xdd, 0xe8, 0xdd, 0x1d, 0xd7, + 0x54, 0xe7, 0x65, 0xdf, 0xbe, 0xee, 0x79, 0xcc, 0x9b, 0xa3, 0xd1, 0xce, + 0x55, 0xa2, 0xab, 0x1a, 0x8e, 0x86, 0x76, 0x49, 0xcd, 0x2c, 0xbe, 0xed, + 0x65, 0x47, 0x72, 0xd1, 0x51, 0x36, 0xb3, 0xb2, 0x99, 0x28, 0xae, 0xea, + 0xfa, 0x33, 0xa1, 0x67, 0x61, 0x11, 0x04, 0x1c, 0xc2, 0xea, 0x40, 0xfd, + 0x5c, 0xc7, 0x13, 0x1b, 0x1e, 0x14, 0x2c, 0x36, 0x10, 0x09, 0x8e, 0x13, + 0x45, 0x83, 0x02, 0x10, 0x13, 0x30, 0xc6, 0x1e, 0xc3, 0x7e, 0x20, 0xa1, + 0x30, 0x66, 0x01, 0x00, 0x70, 0x17, 0xa1, 0x40, 0x60, 0x01, 0xb9, 0x0f, + 0x03, 0x5d, 0x81, 0x18, 0x7c, 0xa6, 0xc0, 0x90, 0x5d, 0x2a, 0x95, 0x4e, + 0x4f, 0xcc, 0x8a, 0xe7, 0x61, 0xf0, 0xf8, 0xa0, 0x17, 0x2b, 0xbc, 0xb5, + 0xf5, 0x92, 0x70, 0x7a, 0x91, 0xb5, 0xe6, 0xc1, 0xdd, 0x1e, 0x13, 0xc9, + 0xc3, 0x51, 0x5d, 0x75, 0x4e, 0x54, 0x1f, 0x9f, 0x0e, 0xb4, 0x43, 0x5c, + 0x92, 0x46, 0xc5, 0x84, 0x22, 0x61, 0xf3, 0x3a, 0xed, 0x0a, 0xa3, 0xd5, + 0x7b, 0x7d, 0x76, 0xb4, 0xe1, 0x16, 0x45, 0x13, 0x95, 0x67, 0xea, 0xde, + 0xfe, 0x24, 0x43, 0xaa, 0xb1, 0x5b, 0x55, 0x8e, 0x29, 0xc6, 0xa4, 0x31, + 0x96, 0x33, 0x6a, 0x72, 0x8d, 0x6a, 0x67, 0xec, 0x72, 0xb0, 0x21, 0xcd, + 0xc9, 0xf2, 0xfb, 0x4a, 0xc7, 0x64, 0x99, 0xb1, 0x65, 0x0f, 0x46, 0xca, + 0xd8, 0xc8, 0xe2, 0xad, 0x47, 0x38, 0x37, 0xa9, 0x9e, 0xda, 0x12, 0x9b, + 0x4d, 0xca, 0xf6, 0xd5, 0xca, 0x76, 0x2b, 0x65, 0x15, 0xe9, 0xc5, 0xca, + 0x79, 0xc9, 0x4c, 0xaf, 0x56, 0xff, 0xfb, 0xd4, 0x60, 0x50, 0x8f, 0x87, + 0xb4, 0x74, 0x3e, 0x03, 0xcc, 0x7b, 0x70, 0x78, 0x4d, 0xf8, 0x2a, 0x0c, + 0xc5, 0x6e, 0x1f, 0x39, 0xd0, 0xf8, 0x0f, 0x31, 0xed, 0xc1, 0xc3, 0x38, + 0x20, 0x58, 0x61, 0x95, 0xb8, 0xb5, 0x3b, 0x64, 0x64, 0x5b, 0x56, 0x46, + 0x7e, 0x93, 0x57, 0x9d, 0xcd, 0x8a, 0xcc, 0x4b, 0xd0, 0xc6, 0x26, 0x64, + 0x25, 0x9b, 0x2c, 0x6a, 0xe9, 0x62, 0x42, 0x51, 0x38, 0x3c, 0x99, 0x5c, + 0xa0, 0x96, 0x22, 0xb9, 0x38, 0x90, 0x5b, 0x57, 0xb3, 0x42, 0x7e, 0xaf, + 0x62, 0x4f, 0x48, 0xac, 0x78, 0xb9, 0x58, 0x63, 0x51, 0x44, 0x55, 0xa4, + 0xd0, 0xf5, 0x6c, 0x45, 0x02, 0x99, 0x22, 0x4c, 0x4f, 0x99, 0x90, 0xe5, + 0xb5, 0x32, 0xd3, 0xc2, 0xee, 0x8e, 0x10, 0x95, 0x2c, 0x64, 0x38, 0x5b, + 0x11, 0x29, 0x24, 0x09, 0x7e, 0x0e, 0xd0, 0x00, 0x00, 0x9a, 0x8d, 0x10, + 0x00, 0x1e, 0x28, 0x80, 0x16, 0x71, 0x4a, 0xfa, 0x91, 0x89, 0x89, 0x79, + 0xa6, 0x79, 0xff, 0x0c, 0xbe, 0x41, 0x22, 0x24, 0x70, 0xa3, 0x99, 0x2d, + 0x41, 0x52, 0xe6, 0x8b, 0xb8, 0x84, 0xca, 0x71, 0x00, 0x64, 0x23, 0x5e, + 0x2b, 0x64, 0xd5, 0x4b, 0x5d, 0x9c, 0x64, 0xe7, 0x23, 0x28, 0x83, 0xba, + 0xbb, 0x91, 0x55, 0xd5, 0x9d, 0xfd, 0x13, 0xa7, 0xa2, 0x3b, 0xcd, 0xe9, + 0x65, 0x76, 0x73, 0x9d, 0xd1, 0x9b, 0x29, 0x55, 0x2e, 0xd5, 0x64, 0xd1, + 0x98, 0xfa, 0xe8, 0xca, 0xd6, 0x5a, 0x3d, 0x65, 0x5f, 0x29, 0x6b, 0x65, + 0x67, 0x2a, 0xa2, 0xd5, 0x4a, 0xae, 0xee, 0x97, 0x6b, 0x92, 0x73, 0x89, + 0x89, 0x94, 0x48, 0x79, 0x05, 0xc4, 0x08, 0x2a, 0x1d, 0x71, 0x13, 0x83, + 0x90, 0x44, 0x3c, 0x51, 0x00, 0x14, 0x50, 0x90, 0x00, 0x0c, 0x02, 0x40, + 0xec, 0xc1, 0xf9, 0x19, 0x8d, 0x6c, 0x84, 0x24, 0xc0, 0xe8, 0x09, 0x00, + 0x20, 0x02, 0x80, 0x05, 0xde, 0xc8, 0x06, 0x80, 0x11, 0xd3, 0x9d, 0x5d, + 0x34, 0x12, 0xe1, 0x3c, 0xd5, 0x79, 0x5d, 0x85, 0x65, 0xd4, 0x44, 0x43, + 0x14, 0x94, 0x2f, 0x07, 0xe5, 0x83, 0x83, 0xb3, 0x94, 0xa5, 0x51, 0xc1, + 0xf4, 0xc8, 0x57, 0x1d, 0xcb, 0xc5, 0x48, 0xba, 0x34, 0xb5, 0x46, 0x52, + 0x41, 0x50, 0x7e, 0x8c, 0xec, 0x9c, 0xd1, 0xe1, 0x24, 0x88, 0x55, 0x60, + 0xa4, 0x66, 0x8e, 0x4a, 0x9c, 0xd0, 0x61, 0xb6, 0xad, 0x38, 0xbf, 0x60, + 0x4e, 0x65, 0xa9, 0x5e, 0xf9, 0x0a, 0x52, 0x5e, 0x46, 0xe9, 0x12, 0x91, + 0x96, 0x9e, 0xc2, 0x7a, 0xda, 0xb4, 0xbc, 0xd8, 0xce, 0xb9, 0x55, 0x30, + 0x65, 0xe2, 0x1e, 0xb4, 0xfd, 0x52, 0xd8, 0xf1, 0x28, 0xca, 0xa8, 0x80, + 0xf5, 0x81, 0xab, 0xad, 0x33, 0xbe, 0x8c, 0xdb, 0x05, 0x73, 0xa4, 0xfa, + 0x79, 0x4e, 0xda, 0x94, 0x67, 0x53, 0x3d, 0x6c, 0x5d, 0xae, 0x95, 0x89, + 0xf4, 0x62, 0x2d, 0x3d, 0x48, 0xb0, 0x0e, 0x26, 0x26, 0xe6, 0x66, 0x68, + 0x8c, 0x12, 0x41, 0x52, 0xad, 0x4f, 0xb6, 0xa8, 0x4e, 0x4e, 0x2d, 0x4a, + 0x55, 0x5b, 0xc5, 0x12, 0xb1, 0x50, 0x85, 0x29, 0x32, 0x9b, 0xdb, 0x6b, + 0x1b, 0x45, 0x9b, 0x9d, 0xa7, 0x21, 0x27, 0xa1, 0xc5, 0x63, 0x52, 0x3f, + 0x92, 0xb7, 0x8e, 0xe4, 0xcd, 0x56, 0x05, 0xe8, 0x4a, 0x6b, 0x1b, 0xca, + 0x86, 0x25, 0x21, 0x88, 0xa1, 0x3f, 0x57, 0x4b, 0xb7, 0x47, 0x9a, 0xa8, + 0xfb, 0x80, 0xe4, 0xab, 0x4e, 0x18, 0xf1, 0x0c, 0xd2, 0xfc, 0x73, 0x99, + 0x87, 0x79, 0xa6, 0x5f, 0x4d, 0x51, 0x9a, 0x38, 0x87, 0x59, 0x82, 0x71, + 0x97, 0x51, 0x23, 0x12, 0x30, 0xcc, 0x80, 0x03, 0x6e, 0x0a, 0x4b, 0xc2, + 0x8d, 0xc5, 0xcc, 0xe4, 0x9a, 0xe5, 0x55, 0x84, 0x5c, 0x18, 0x16, 0xc2, + 0x11, 0x5c, 0x38, 0xc0, 0x1d, 0x5c, 0x8e, 0x54, 0x16, 0x6c, 0xf1, 0x0c, + 0x3c, 0xd5, 0x69, 0xd4, 0xf6, 0x72, 0x9a, 0xd7, 0x2c, 0xca, 0xc5, 0x52, + 0x3f, 0x77, 0x59, 0x9a, 0xeb, 0x73, 0x1d, 0x33, 0x11, 0xf6, 0xec, 0xcd, + 0xa5, 0xf4, 0x93, 0x92, 0x97, 0x55, 0xc4, 0x5d, 0x5a, 0xf4, 0x5b, 0xb7, + 0x95, 0xd5, 0xd5, 0xec, 0xec, 0xa8, 0xed, 0x42, 0x11, 0x10, 0xef, 0x3a, + 0xd5, 0xec, 0x8e, 0xab, 0xab, 0x22, 0xdc, 0xa4, 0x63, 0x15, 0x4e, 0x30, + 0x78, 0xc4, 0x30, 0xf1, 0x01, 0x01, 0x51, 0x12, 0x10, 0x70, 0x99, 0xc2, + 0x94, 0x4c, 0x34, 0x48, 0x38, 0x11, 0x10, 0x39, 0x05, 0x55, 0x04, 0x80, + 0x80, 0xe0, 0x2a, 0x98, 0x09, 0x30, 0xb1, 0x93, 0xe0, 0xa7, 0x8a, 0x01, + 0xd1, 0x20, 0x05, 0xb0, 0xa7, 0xc6, 0x16, 0xb4, 0x64, 0x52, 0xa5, 0x32, + 0x97, 0x4e, 0x1b, 0x8c, 0x4b, 0xea, 0x8a, 0xa9, 0x0b, 0xb2, 0xb2, 0x13, + 0x0a, 0x09, 0x5c, 0x60, 0x61, 0x3a, 0xf5, 0x99, 0x1c, 0x4c, 0xec, 0xe6, + 0x6e, 0x14, 0x47, 0xf2, 0xaa, 0x86, 0xba, 0xb1, 0xb9, 0xbd, 0x36, 0x74, + 0xb0, 0xcc, 0xdb, 0x96, 0x45, 0x6a, 0xa1, 0xe9, 0xd2, 0xf0, 0xff, 0x4e, + 0xa1, 0x8d, 0x45, 0xb1, 0x49, 0x75, 0x32, 0xe9, 0x86, 0x42, 0xfe, 0x9e, + 0x7e, 0x82, 0x57, 0xaa, 0x9f, 0xbf, 0x57, 0x2a, 0xd6, 0xd9, 0x62, 0x96, + 0x93, 0x44, 0x61, 0x62, 0x8f, 0xa8, 0x4c, 0xad, 0x65, 0xf9, 0xfe, 0x5a, + 0xda, 0x36, 0xd4, 0xc9, 0x00, 0xb6, 0x37, 0xa8, 0xd9, 0x1f, 0x3f, 0x54, + 0x32, 0xa2, 0x18, 0x8b, 0x9a, 0xb5, 0x0d, 0x8a, 0xed, 0xca, 0x14, 0x14, + 0xd4, 0x58, 0xf0, 0xd4, 0x2d, 0x4c, 0xcf, 0x5a, 0x1f, 0x45, 0x52, 0x2b, + 0x18, 0xf4, 0xae, 0x37, 0x91, 0xec, 0xbc, 0xf8, 0xac, 0xac, 0xc8, 0x63, + 0x93, 0x26, 0x10, 0xe5, 0xa5, 0xff, 0xfb, 0xd4, 0x60, 0x51, 0x8d, 0x97, + 0xd3, 0x73, 0xbd, 0x83, 0xcf, 0x7b, 0x70, 0x72, 0x6e, 0x08, 0x16, 0x18, + 0xc8, 0x6e, 0x1e, 0x4d, 0xd2, 0xfa, 0x2f, 0x31, 0xed, 0xc1, 0xaf, 0xb8, + 0x20, 0x98, 0x23, 0x15, 0xb8, 0x22, 0xa1, 0x39, 0x2c, 0x23, 0xbd, 0xad, + 0x99, 0x8d, 0x95, 0x20, 0x98, 0x6f, 0x70, 0x8d, 0x93, 0xf1, 0xee, 0xb2, + 0x68, 0xce, 0x77, 0x16, 0x25, 0x54, 0x58, 0x67, 0x4b, 0x43, 0x5b, 0xb3, + 0x72, 0x34, 0xb4, 0x5d, 0x28, 0x9d, 0x2c, 0xa2, 0x5e, 0x9d, 0x2e, 0x98, + 0x25, 0x57, 0xab, 0x16, 0x50, 0xf8, 0xb9, 0x5b, 0x43, 0x96, 0xce, 0x96, + 0x33, 0x30, 0xff, 0x54, 0x38, 0x43, 0x1b, 0xa9, 0xfb, 0xab, 0x90, 0xf9, + 0xe2, 0x93, 0xf2, 0xa5, 0x2a, 0x49, 0x8e, 0x01, 0x90, 0x6f, 0x39, 0x1f, + 0x86, 0xf1, 0x9e, 0x44, 0x17, 0x64, 0x58, 0x0b, 0x00, 0x05, 0x34, 0x00, + 0x33, 0xf4, 0xc4, 0x21, 0x90, 0x49, 0xce, 0xa7, 0xe6, 0x39, 0x16, 0x87, + 0x69, 0x92, 0x9e, 0xf1, 0x33, 0x27, 0x26, 0x59, 0xb7, 0x33, 0x3e, 0xef, + 0xc6, 0x06, 0x34, 0x45, 0x12, 0x68, 0xd8, 0x46, 0x5a, 0x9b, 0x1b, 0x1d, + 0x0f, 0x4d, 0xa7, 0x8e, 0x6a, 0x67, 0xef, 0xff, 0xd3, 0xdb, 0x4d, 0xa2, + 0x38, 0x8f, 0xef, 0x1f, 0x33, 0x37, 0x53, 0xc5, 0x6b, 0xc7, 0x5a, 0xbf, + 0x7f, 0xad, 0xd2, 0xf5, 0xb7, 0xd7, 0x93, 0x0b, 0xfd, 0x75, 0xd5, 0xcd, + 0xcf, 0x70, 0xf7, 0x77, 0x33, 0xbe, 0xcf, 0x7c, 0x4f, 0x4b, 0x11, 0x49, + 0xcd, 0x4f, 0x11, 0x4b, 0x7c, 0xf1, 0x34, 0x91, 0x22, 0xd5, 0xa1, 0x67, + 0xb5, 0x04, 0x65, 0x0a, 0x0f, 0x47, 0xb2, 0x07, 0x52, 0x03, 0x51, 0xc3, + 0x43, 0xc1, 0x19, 0xc0, 0x10, 0x06, 0x30, 0x04, 0x03, 0x33, 0x03, 0xf4, + 0x60, 0x32, 0x6b, 0x0d, 0x13, 0x01, 0xb0, 0x18, 0x2d, 0x4a, 0x55, 0x3e, + 0xb0, 0xc3, 0x16, 0xb1, 0x3e, 0xb2, 0xe8, 0x23, 0x80, 0x02, 0x0d, 0xca, + 0xe5, 0x42, 0xd1, 0xe9, 0x6c, 0x80, 0x94, 0xbe, 0x62, 0xe8, 0x33, 0x5e, + 0x48, 0xb8, 0x94, 0xd0, 0xe2, 0x4d, 0x12, 0x89, 0xc6, 0xef, 0x93, 0x47, + 0x40, 0x5a, 0x33, 0x52, 0xe1, 0x2d, 0xd5, 0xe5, 0xc5, 0xe3, 0xfb, 0xc3, + 0xa2, 0x11, 0xc0, 0xf6, 0xb1, 0xe5, 0xc2, 0x41, 0x50, 0xb2, 0x3c, 0xb8, + 0x89, 0x62, 0x39, 0x74, 0x92, 0x86, 0xa9, 0x72, 0x7b, 0x87, 0x2b, 0xe2, + 0x33, 0xaa, 0x47, 0x52, 0x31, 0xb0, 0xbc, 0x82, 0xaa, 0x89, 0x01, 0x9a, + 0x32, 0x96, 0x26, 0x20, 0x44, 0x42, 0xdc, 0x56, 0x60, 0xb0, 0x32, 0xc1, + 0x84, 0xd9, 0x09, 0xea, 0x89, 0xc9, 0x86, 0x32, 0xfa, 0xf3, 0x55, 0xd1, + 0xac, 0x8c, 0x76, 0x57, 0xe1, 0x59, 0x11, 0x5e, 0xcf, 0x12, 0x0b, 0xa7, + 0x18, 0xaf, 0x9f, 0x3f, 0x56, 0x31, 0x39, 0x2a, 0xdb, 0x1b, 0x74, 0xfd, + 0xbb, 0x2b, 0xbc, 0xc3, 0x58, 0x78, 0xe4, 0xc4, 0xfa, 0x03, 0x0a, 0xed, + 0x76, 0xcc, 0xd2, 0xc4, 0xe5, 0x8c, 0xb3, 0x3e, 0xa2, 0xbd, 0x7d, 0xba, + 0x46, 0x97, 0x6e, 0xa2, 0xd5, 0xd4, 0x37, 0x3d, 0x2a, 0x59, 0x17, 0x31, + 0x1c, 0x76, 0xa2, 0x82, 0xe9, 0xec, 0x76, 0xbd, 0x6e, 0x1a, 0xd3, 0xf5, + 0x4c, 0xb8, 0xc3, 0xe6, 0xfa, 0xa8, 0x65, 0x52, 0xd2, 0x44, 0xf2, 0x55, + 0x81, 0xcd, 0x65, 0x8d, 0x30, 0xb8, 0x27, 0xd1, 0x96, 0x8e, 0x54, 0x38, + 0xfc, 0x7c, 0x72, 0x99, 0x2a, 0x65, 0x79, 0xce, 0x8f, 0x3d, 0x4b, 0xca, + 0x84, 0x9f, 0x89, 0xa0, 0x76, 0x0e, 0xe9, 0xdd, 0x83, 0x89, 0x11, 0x23, + 0x09, 0x11, 0x65, 0xff, 0xbb, 0x34, 0xa5, 0xae, 0xf3, 0xe7, 0xa1, 0x29, + 0x37, 0xc0, 0x31, 0x89, 0x61, 0xa9, 0x77, 0x62, 0x1d, 0x9f, 0x5f, 0x3a, + 0x0c, 0x9b, 0x6e, 0xbd, 0x45, 0xc1, 0x0b, 0x7b, 0x32, 0x3a, 0x21, 0x66, + 0x53, 0xb9, 0x88, 0xee, 0xbd, 0x9d, 0xd2, 0xda, 0x27, 0x33, 0x48, 0x94, + 0x75, 0x55, 0x5e, 0x86, 0x65, 0xad, 0x0e, 0x8b, 0xd2, 0xf4, 0x7b, 0x3d, + 0x69, 0x39, 0x72, 0x32, 0x96, 0xeb, 0x33, 0xd1, 0x17, 0x66, 0x66, 0x97, + 0xab, 0xf6, 0xb9, 0x7b, 0xe4, 0x3b, 0x10, 0x88, 0xc4, 0x98, 0x41, 0x07, + 0x8e, 0x3a, 0x0e, 0x73, 0x98, 0x8a, 0x2a, 0x10, 0x16, 0x18, 0x51, 0x30, + 0x8b, 0xba, 0x0c, 0x12, 0x10, 0x30, 0x01, 0x00, 0x43, 0x01, 0x60, 0x21, + 0x30, 0x87, 0x3a, 0x03, 0x51, 0x70, 0x8b, 0x30, 0x45, 0x01, 0x00, 0x80, + 0x09, 0x53, 0xed, 0x26, 0x9a, 0x29, 0x76, 0xdb, 0x48, 0xe3, 0xee, 0x06, + 0x92, 0x34, 0xb9, 0x32, 0x02, 0x01, 0xec, 0x47, 0x65, 0xa2, 0x4a, 0x19, + 0x14, 0x6a, 0x4c, 0x66, 0x06, 0x8a, 0x68, 0xc1, 0xa1, 0x20, 0x72, 0x1e, + 0x9a, 0x44, 0x5e, 0x1e, 0x06, 0x68, 0x4a, 0x4f, 0x87, 0x7f, 0x13, 0x8e, + 0x4e, 0x63, 0x5a, 0xd9, 0xbe, 0x32, 0xeb, 0xe3, 0xb2, 0x33, 0xa5, 0xed, + 0xac, 0x29, 0xc7, 0xd1, 0xe9, 0x23, 0x73, 0x1c, 0x04, 0x62, 0x1a, 0xca, + 0xe2, 0xfe, 0x3b, 0xb4, 0xec, 0x89, 0x75, 0x75, 0xdc, 0x62, 0xa7, 0x24, + 0x45, 0xe1, 0x79, 0x5c, 0xba, 0xae, 0x55, 0x8a, 0x36, 0x94, 0x36, 0x39, + 0xf8, 0x99, 0x88, 0xf9, 0x2b, 0x0a, 0xec, 0x4d, 0xcd, 0xd1, 0x4f, 0xeb, + 0xb5, 0x3e, 0xaa, 0x2e, 0xcd, 0xaa, 0x67, 0xb8, 0x86, 0x89, 0xac, 0x56, + 0x07, 0x34, 0x44, 0x69, 0xdf, 0xb6, 0x20, 0x98, 0x21, 0xbd, 0x4b, 0xac, + 0x23, 0x20, 0x38, 0xb3, 0xaf, 0xa4, 0x9c, 0xd5, 0xd6, 0x6c, 0x64, 0x71, + 0x9d, 0xd4, 0x39, 0x9a, 0xda, 0x97, 0x70, 0xa3, 0x1c, 0x8c, 0x55, 0x91, + 0x39, 0x22, 0x46, 0x55, 0x5a, 0xff, 0xfb, 0xd4, 0x60, 0x5a, 0x0d, 0x97, + 0xad, 0x75, 0x3e, 0x03, 0xcc, 0x7b, 0x70, 0x6d, 0xae, 0x08, 0x12, 0x18, + 0x65, 0x6e, 0x1f, 0x9d, 0xd0, 0xf8, 0x4f, 0x3d, 0xed, 0xc1, 0xaf, 0x38, + 0x20, 0x58, 0x91, 0xa1, 0xb8, 0xb1, 0x59, 0x45, 0x14, 0x36, 0x34, 0x0a, + 0xb5, 0xc5, 0xc9, 0x70, 0xea, 0xf3, 0xc5, 0x72, 0x51, 0x51, 0x3d, 0x23, + 0x52, 0xaa, 0xea, 0x85, 0x5e, 0xef, 0x01, 0x15, 0x16, 0x54, 0xc9, 0xc8, + 0xb0, 0xb4, 0xc5, 0xb3, 0x0d, 0x74, 0xd8, 0xf4, 0xfe, 0x4d, 0x96, 0xf5, + 0x7b, 0x73, 0x92, 0x0d, 0xa9, 0x70, 0x3f, 0xc5, 0xd0, 0x7c, 0x96, 0x04, + 0x40, 0xf9, 0x18, 0x2e, 0x05, 0xc9, 0x3a, 0xb9, 0x37, 0x46, 0xd9, 0x48, + 0x00, 0x76, 0xcc, 0x2e, 0x8a, 0x15, 0xa8, 0x2f, 0x6d, 0x69, 0x9c, 0x8b, + 0xb1, 0xe4, 0x67, 0x0a, 0x5d, 0xf5, 0xba, 0x8e, 0x63, 0xbb, 0x02, 0x23, + 0x59, 0x22, 0x00, 0x81, 0x08, 0x73, 0x55, 0xed, 0xa3, 0x7b, 0x6b, 0xa9, + 0x2c, 0xc6, 0x45, 0xcc, 0xbb, 0xad, 0x91, 0x48, 0xa8, 0xae, 0xf4, 0x21, + 0xda, 0x8d, 0x6b, 0x13, 0x22, 0xbc, 0xc6, 0xb0, 0xc5, 0x9a, 0xd4, 0x6a, + 0x51, 0x91, 0x65, 0x69, 0xd2, 0xd4, 0x4f, 0x67, 0xe5, 0x45, 0xaa, 0x59, + 0x0b, 0x67, 0x66, 0x59, 0xe4, 0x8c, 0x3f, 0x52, 0xa3, 0x9a, 0x89, 0x48, + 0xd7, 0x39, 0x47, 0x19, 0xdc, 0xc8, 0x1e, 0x77, 0x15, 0x16, 0x40, 0xb1, + 0x87, 0x81, 0x00, 0x30, 0x33, 0x80, 0xcc, 0x80, 0x83, 0xc0, 0xe3, 0x45, + 0x86, 0x44, 0x16, 0x0c, 0x02, 0xd3, 0x09, 0x51, 0x64, 0x22, 0xba, 0xa2, + 0x60, 0x92, 0x22, 0x01, 0x54, 0x62, 0x87, 0x60, 0xf4, 0x45, 0x74, 0x9a, + 0x5b, 0x37, 0x8a, 0x4d, 0x21, 0x2a, 0x08, 0x93, 0x29, 0x53, 0xc6, 0x5e, + 0xcf, 0xf8, 0x0d, 0x6b, 0x85, 0xcd, 0x1b, 0x15, 0xaf, 0x8a, 0x23, 0x25, + 0xa9, 0x5a, 0x6a, 0x13, 0xd2, 0x64, 0x86, 0x2b, 0x61, 0x9c, 0xa6, 0xea, + 0x5c, 0xea, 0x5b, 0x21, 0x27, 0x42, 0x10, 0x5c, 0x8c, 0xa2, 0x78, 0xf5, + 0x3b, 0x0c, 0xb9, 0x2e, 0x8e, 0xb2, 0xd8, 0x75, 0x1c, 0x6a, 0x33, 0x99, + 0x44, 0xa7, 0x5d, 0x24, 0xfa, 0x7d, 0x0e, 0x71, 0x6a, 0x4b, 0x39, 0x33, + 0xb0, 0xb2, 0xb9, 0xbf, 0x86, 0x89, 0x6c, 0x60, 0x5d, 0x38, 0xa6, 0x36, + 0xcc, 0xd4, 0x77, 0xb4, 0xb3, 0x62, 0x69, 0x98, 0x94, 0x2c, 0x4a, 0x56, + 0x47, 0x53, 0xc1, 0x5d, 0x29, 0xe1, 0x9f, 0x11, 0x13, 0xea, 0x38, 0x2a, + 0x85, 0x4c, 0x43, 0x22, 0x03, 0x2b, 0x34, 0xa9, 0x06, 0xa7, 0xd7, 0x82, + 0xb5, 0x09, 0x40, 0xf1, 0x4f, 0x11, 0x8e, 0x53, 0x89, 0xbd, 0x8d, 0x69, + 0xfb, 0x2b, 0x12, 0xe9, 0xc5, 0xe2, 0x51, 0x45, 0xb7, 0x4e, 0x68, 0x72, + 0x91, 0xc1, 0xb5, 0x5c, 0xce, 0xe2, 0xca, 0xe4, 0xf1, 0x53, 0x3b, 0xdb, + 0xac, 0x53, 0x4d, 0x8c, 0x4a, 0xfa, 0x55, 0x61, 0xdb, 0x82, 0xbd, 0xca, + 0x5c, 0x1d, 0xa9, 0xe8, 0x91, 0x55, 0x8d, 0xb0, 0x56, 0x6a, 0xac, 0x6c, + 0x99, 0xd2, 0x93, 0x4c, 0xc8, 0xe6, 0x06, 0x05, 0x89, 0x91, 0x54, 0x3b, + 0x59, 0xde, 0x29, 0xd3, 0xa8, 0x6a, 0x16, 0xc6, 0x69, 0xb0, 0x2d, 0x42, + 0x70, 0x3a, 0x1d, 0x2b, 0x08, 0x33, 0x81, 0x3c, 0x54, 0x8d, 0xcd, 0x9f, + 0xc1, 0xc6, 0x09, 0xb5, 0xe1, 0x25, 0x29, 0xc5, 0x94, 0xbd, 0x8d, 0x50, + 0x91, 0x84, 0x68, 0xce, 0xb6, 0x95, 0x17, 0x7a, 0xa9, 0xa2, 0x39, 0x5f, + 0x1c, 0xb9, 0x14, 0xa5, 0x3a, 0xc4, 0xe0, 0x81, 0x9a, 0x2e, 0xe6, 0xe4, + 0x44, 0x5d, 0xd0, 0x34, 0x81, 0x73, 0xd6, 0x04, 0x09, 0x54, 0xc5, 0x91, + 0x0b, 0x39, 0xf5, 0x7b, 0xd7, 0xae, 0xe7, 0x9d, 0x79, 0xeb, 0xf8, 0xbe, + 0xbb, 0xe2, 0x74, 0xb9, 0xff, 0xe7, 0x7e, 0x25, 0xfa, 0xe9, 0xe1, 0x2e, + 0x6f, 0x6f, 0xd8, 0x8f, 0xbe, 0x67, 0xea, 0xee, 0x39, 0x9e, 0xb8, 0xbd, + 0xd2, 0xe5, 0xaa, 0xfe, 0x7e, 0x7e, 0x12, 0x38, 0x64, 0xee, 0xbe, 0xee, + 0xfa, 0xa5, 0xa5, 0x6f, 0x87, 0xb4, 0xe3, 0x9e, 0x07, 0x6e, 0xe2, 0x99, + 0xf1, 0x44, 0x18, 0x34, 0x85, 0x2d, 0x68, 0x5a, 0xa0, 0x1e, 0x2c, 0x60, + 0x88, 0xe0, 0x1f, 0xb3, 0x00, 0x60, 0x06, 0x30, 0x6b, 0x17, 0x93, 0x49, + 0x50, 0x66, 0x30, 0x2f, 0x00, 0x31, 0x60, 0x08, 0x5c, 0xef, 0xf2, 0xd3, + 0x58, 0x7c, 0xf2, 0x60, 0xb4, 0x76, 0x15, 0xbe, 0xe3, 0xb6, 0x6c, 0xe4, + 0xb8, 0x4c, 0x8d, 0x3a, 0x50, 0x9b, 0x1c, 0x11, 0xd3, 0x18, 0x8f, 0x67, + 0x48, 0x06, 0xe2, 0xa3, 0x20, 0xec, 0x04, 0x11, 0xc1, 0x92, 0x62, 0xc2, + 0xf5, 0x2b, 0xde, 0x70, 0xab, 0x0e, 0xad, 0x44, 0x7c, 0x19, 0x24, 0x5b, + 0xaa, 0x09, 0x7f, 0x65, 0x35, 0x5c, 0x2b, 0x13, 0x71, 0x11, 0x31, 0xe0, + 0x37, 0x43, 0x5c, 0xc4, 0x64, 0x4a, 0xd6, 0xec, 0x2e, 0x99, 0x9a, 0x22, + 0x5a, 0x67, 0xea, 0x66, 0xe5, 0xd4, 0x2a, 0x39, 0xf5, 0x03, 0x23, 0xe7, + 0xaa, 0xe5, 0x03, 0x94, 0xba, 0xab, 0x59, 0xfe, 0x9c, 0x87, 0x02, 0x55, + 0x3b, 0x8b, 0x6c, 0xf9, 0x62, 0x6f, 0x83, 0x26, 0x21, 0x31, 0xa7, 0x18, + 0xeb, 0x09, 0x44, 0xd1, 0x68, 0xaf, 0x69, 0x2b, 0x84, 0xd3, 0xc5, 0x52, + 0x2d, 0xe6, 0xb1, 0x1c, 0x5b, 0x60, 0xbd, 0x73, 0x6a, 0x84, 0xe3, 0x17, + 0xe9, 0xb1, 0xe3, 0x3b, 0x23, 0x1b, 0x73, 0x2b, 0x83, 0xc8, 0x89, 0xe7, + 0x28, 0x4a, 0xa8, 0xf1, 0xa4, 0x95, 0x42, 0xfd, 0xfc, 0x55, 0x26, 0xa8, + 0xd2, 0xa7, 0x8d, 0x2d, 0x90, 0x6f, 0x29, 0x2a, 0xae, 0x90, 0xd5, 0x0e, + 0xed, 0x02, 0x86, 0x9b, 0x4b, 0xff, 0xfb, 0xd4, 0x60, 0x62, 0x0d, 0x97, + 0x3a, 0x74, 0xbe, 0x8b, 0xcc, 0x7b, 0x70, 0x71, 0x8d, 0xf8, 0x12, 0x0c, + 0xc8, 0x6e, 0x24, 0x65, 0xd0, 0xf2, 0x2f, 0x3f, 0x0d, 0xc2, 0x08, 0xb8, + 0x1f, 0xd8, 0x93, 0x21, 0xb8, 0x6b, 0xe5, 0x5a, 0xbd, 0x99, 0x3d, 0x34, + 0x6b, 0x22, 0x22, 0x97, 0xd7, 0x24, 0x93, 0xd5, 0x1a, 0x96, 0x12, 0xd3, + 0x3a, 0x09, 0xc1, 0x10, 0x36, 0x0b, 0xe9, 0xee, 0xfa, 0x09, 0x22, 0x6f, + 0x1c, 0x05, 0xfc, 0x2d, 0xe1, 0x80, 0x00, 0xb3, 0x67, 0x0e, 0x1d, 0xc1, + 0x12, 0x80, 0x3d, 0xf7, 0x65, 0xfb, 0x3d, 0x67, 0x63, 0xbb, 0xe6, 0x9b, + 0x2c, 0xd1, 0x5b, 0xf3, 0xb3, 0xbc, 0xe2, 0x59, 0x8c, 0x57, 0x83, 0xf3, + 0xe1, 0x49, 0x9d, 0xb6, 0x3d, 0x09, 0x8a, 0xf5, 0x8b, 0xff, 0xfe, 0x1d, + 0xa7, 0xea, 0xeb, 0xaa, 0xf5, 0x8e, 0x27, 0x98, 0xfb, 0x98, 0x8f, 0xee, + 0x7d, 0x22, 0x27, 0xfb, 0xa4, 0xe7, 0x99, 0x64, 0xae, 0x22, 0xe6, 0x26, + 0x6e, 0x2a, 0xea, 0x25, 0x3e, 0xbf, 0xab, 0x88, 0xa8, 0xee, 0xee, 0x66, + 0x16, 0xae, 0xee, 0xa6, 0x13, 0x74, 0x6a, 0xdb, 0xe2, 0x62, 0x7a, 0xa8, + 0x8a, 0xa1, 0x82, 0xd1, 0x9c, 0x27, 0xb9, 0x1a, 0xc2, 0x3c, 0x3b, 0x05, + 0xda, 0x83, 0xe0, 0xf0, 0x44, 0x2a, 0x07, 0x0e, 0x43, 0xd9, 0xc3, 0x80, + 0x0a, 0x60, 0x04, 0x08, 0x46, 0x0d, 0xe9, 0x86, 0x6a, 0xa2, 0x23, 0x46, + 0x05, 0xa0, 0x56, 0x60, 0x00, 0x01, 0x08, 0xf6, 0xf4, 0x23, 0xda, 0x17, + 0xb2, 0x76, 0x98, 0xd0, 0x9c, 0x68, 0x20, 0x4c, 0x0c, 0xd2, 0x9d, 0x36, + 0xc8, 0x6a, 0x8b, 0xb1, 0xfe, 0x8f, 0x4d, 0x16, 0x03, 0x08, 0xbb, 0x19, + 0xa7, 0xf9, 0x1d, 0x46, 0x14, 0xcb, 0x3a, 0xc8, 0xd5, 0x37, 0x49, 0x09, + 0xec, 0x9f, 0x3b, 0x44, 0x05, 0x5a, 0x4c, 0x0c, 0x91, 0x25, 0x13, 0x06, + 0x02, 0x1e, 0x7c, 0x92, 0xa1, 0xea, 0x53, 0x0b, 0x7a, 0xe0, 0xa4, 0x27, + 0xaf, 0x8f, 0xd3, 0xa1, 0xc8, 0xc0, 0x44, 0xd6, 0x95, 0xe6, 0xfb, 0xc3, + 0xd1, 0x2a, 0x90, 0x2b, 0xce, 0xca, 0x60, 0x67, 0x42, 0x1d, 0xbe, 0xf3, + 0xc3, 0x2c, 0xc6, 0x1e, 0x97, 0x4b, 0xd7, 0x24, 0xdb, 0xa1, 0x18, 0x87, + 0x9d, 0xe8, 0x94, 0xa9, 0xd8, 0xac, 0xed, 0x7b, 0x96, 0xe9, 0x29, 0x0c, + 0x3e, 0x9e, 0x37, 0x29, 0xbe, 0xe5, 0xc0, 0x8f, 0x3d, 0x13, 0x5e, 0x81, + 0xdd, 0x08, 0x7e, 0x26, 0xee, 0x36, 0x08, 0xec, 0x6d, 0xc0, 0x69, 0x34, + 0x0c, 0xa1, 0xc4, 0x7e, 0x65, 0x51, 0x19, 0x5b, 0xcb, 0x72, 0x2c, 0xf0, + 0xcb, 0x21, 0xb8, 0x02, 0x19, 0x73, 0xdb, 0xc8, 0x45, 0x3c, 0xba, 0x92, + 0x9a, 0x96, 0x13, 0x0d, 0xd6, 0x7e, 0x68, 0xe3, 0x6f, 0x85, 0x5a, 0x58, + 0x3f, 0x8f, 0x54, 0xae, 0x2f, 0x3f, 0x25, 0x81, 0xa0, 0xa9, 0x23, 0xf1, + 0x4d, 0x28, 0x86, 0x9e, 0xb7, 0x5a, 0x95, 0xe9, 0xa2, 0x9f, 0x71, 0x2c, + 0x53, 0x59, 0x87, 0xa0, 0x77, 0x16, 0x5b, 0x23, 0x6e, 0xef, 0x75, 0x3b, + 0xad, 0x1e, 0x96, 0x47, 0xbe, 0x6d, 0xdb, 0x70, 0xae, 0x43, 0x0d, 0xb3, + 0x02, 0x84, 0x45, 0xa0, 0x07, 0x8e, 0x8d, 0xa5, 0xc9, 0xa1, 0x98, 0x26, + 0x1d, 0x8c, 0x4b, 0x1b, 0x0a, 0xef, 0x6e, 0x09, 0x9a, 0xcc, 0xe5, 0xd0, + 0xdb, 0x1a, 0x6c, 0x5d, 0x12, 0x42, 0xcb, 0x42, 0x4b, 0x0d, 0x2f, 0x12, + 0x7b, 0x35, 0xe2, 0x51, 0xc4, 0x04, 0x73, 0x0e, 0xe3, 0xe8, 0xd2, 0x0a, + 0xd2, 0x15, 0x91, 0xde, 0x28, 0x5a, 0x1b, 0x33, 0x15, 0x6c, 0xf1, 0x43, + 0xed, 0x2f, 0xfa, 0x9b, 0xc5, 0x64, 0x6a, 0x09, 0x14, 0x61, 0x48, 0x7a, + 0xa5, 0x5a, 0x0d, 0x05, 0xb9, 0x7b, 0x98, 0x6a, 0x73, 0x22, 0x24, 0x73, + 0x92, 0xd9, 0x89, 0xd8, 0xb6, 0xfc, 0xc7, 0x34, 0x70, 0xc6, 0x5d, 0x22, + 0x63, 0x8e, 0x8a, 0x5a, 0x85, 0x85, 0x48, 0xe5, 0xa5, 0x19, 0xa2, 0x5b, + 0x48, 0xbe, 0x36, 0x49, 0x9a, 0x96, 0x86, 0xbe, 0x1e, 0xe1, 0xb9, 0x99, + 0xd9, 0x68, 0x64, 0x71, 0xc5, 0xac, 0xc4, 0x4d, 0xcc, 0xaa, 0xae, 0x91, + 0x37, 0xd2, 0xd2, 0x56, 0x8f, 0x23, 0x5e, 0x47, 0x27, 0x2d, 0x10, 0xaa, + 0xd4, 0xa7, 0xfc, 0x72, 0x9b, 0xe7, 0x70, 0x2b, 0x49, 0x0e, 0x84, 0xbd, + 0x83, 0x70, 0xfe, 0x2c, 0x85, 0x15, 0x1e, 0x1d, 0x08, 0x02, 0xc1, 0xdc, + 0x00, 0xb0, 0xd3, 0x43, 0xa1, 0xa2, 0x30, 0xe4, 0x09, 0x44, 0x54, 0x59, + 0x00, 0x04, 0x26, 0x8e, 0x84, 0x03, 0x39, 0xa9, 0x99, 0xa4, 0xf0, 0x50, + 0x09, 0x51, 0xa6, 0x7b, 0x06, 0x5f, 0x86, 0x63, 0xb1, 0x29, 0xbb, 0x98, + 0x1c, 0xee, 0xdb, 0x96, 0xe4, 0x6a, 0x6d, 0x5e, 0x91, 0x5d, 0x83, 0xce, + 0x54, 0x61, 0xe4, 0xd6, 0x8e, 0x43, 0xe1, 0xa6, 0x8c, 0x96, 0xd6, 0xd6, + 0x65, 0xa6, 0xf5, 0x12, 0xac, 0xec, 0x22, 0x0d, 0xd5, 0xd2, 0xc9, 0x92, + 0xab, 0x46, 0x2b, 0x32, 0x89, 0x3c, 0xd0, 0xe7, 0x27, 0x27, 0x8a, 0x33, + 0x95, 0x6d, 0x76, 0xf2, 0x23, 0x34, 0xec, 0x09, 0x3c, 0x69, 0x9e, 0x6d, + 0xb7, 0x40, 0x9d, 0x1e, 0xae, 0x50, 0x59, 0x5f, 0x94, 0x4c, 0x54, 0x6a, + 0xe5, 0x81, 0x92, 0x47, 0x73, 0xc0, 0x66, 0x64, 0x57, 0x3e, 0x8f, 0x68, + 0x10, 0x23, 0xc4, 0x67, 0x4e, 0xac, 0x52, 0x1b, 0xe6, 0xe6, 0xec, 0x47, + 0x7d, 0x76, 0xb5, 0x7b, 0xf8, 0xca, 0x5b, 0x5d, 0x8a, 0x33, 0x0b, 0xa8, + 0xed, 0x2e, 0xd8, 0x97, 0x49, 0xf8, 0x50, 0xda, 0xe2, 0x55, 0x92, 0x91, + 0x59, 0xa1, 0x2a, 0x1c, 0x56, 0xe1, 0x2e, 0x59, 0x9c, 0xe3, 0x36, 0x3c, + 0x6b, 0xf1, 0x1b, 0xe2, 0x6a, 0xff, 0xfb, 0xd4, 0x60, 0x51, 0x0d, 0x97, + 0x63, 0x75, 0x3e, 0x93, 0xaf, 0x7b, 0x70, 0x7b, 0xae, 0x68, 0x19, 0x18, + 0xc8, 0x6e, 0x1e, 0xd5, 0xd0, 0xf8, 0x4e, 0xbd, 0xed, 0xc1, 0xb4, 0x38, + 0x20, 0x98, 0x63, 0x15, 0xb8, 0x2c, 0x35, 0xce, 0xd4, 0x6b, 0x85, 0x02, + 0xaa, 0x0c, 0x17, 0x0c, 0x3e, 0xac, 0x27, 0xcc, 0x6d, 0x11, 0x60, 0xaa, + 0xa4, 0x96, 0xf1, 0xb1, 0x46, 0xea, 0x49, 0x2b, 0xb7, 0x37, 0x4a, 0x55, + 0x74, 0x45, 0x64, 0x89, 0xc6, 0x58, 0x2f, 0x5f, 0xd5, 0xfd, 0x95, 0xb2, + 0x28, 0xd6, 0xda, 0x99, 0x54, 0x59, 0x55, 0x3d, 0x21, 0x4a, 0x65, 0xdb, + 0x22, 0x60, 0xdc, 0x1d, 0x87, 0x71, 0xec, 0x5d, 0x8c, 0xf5, 0x71, 0x3c, + 0x3f, 0x09, 0x76, 0x85, 0xdc, 0xbd, 0x91, 0xe0, 0x00, 0x01, 0x3d, 0x20, + 0x06, 0x3a, 0xc7, 0xa8, 0x94, 0x81, 0x4d, 0x65, 0x8e, 0x41, 0x8b, 0xdd, + 0x76, 0x68, 0x6d, 0xe7, 0x11, 0xb3, 0xc6, 0xbb, 0x3f, 0x4f, 0x72, 0x0b, + 0xb2, 0x0e, 0x49, 0x5b, 0x24, 0x09, 0x2e, 0x60, 0xcf, 0x70, 0x77, 0x2b, + 0xe4, 0xd7, 0xf1, 0x11, 0x70, 0xb0, 0x93, 0x23, 0xee, 0xaa, 0xea, 0x2f, + 0xda, 0xe5, 0x26, 0xeb, 0x7e, 0x7a, 0xd3, 0x9b, 0x1d, 0xdc, 0xef, 0x3f, + 0x57, 0x7b, 0xf7, 0x3f, 0x2d, 0x4d, 0xf7, 0x4f, 0x35, 0x51, 0xd5, 0xac, + 0x5f, 0x70, 0xbb, 0x3e, 0xfd, 0xf5, 0xfc, 0xac, 0x6e, 0xf3, 0x7f, 0xaa, + 0x47, 0xdf, 0x15, 0x33, 0x0b, 0xdf, 0x56, 0xbc, 0x3d, 0xaf, 0xc5, 0x24, + 0x68, 0xb0, 0x64, 0x41, 0xe3, 0xef, 0x0e, 0x84, 0x41, 0xa2, 0x88, 0x34, + 0x5d, 0x51, 0x60, 0xe0, 0x52, 0x7c, 0x54, 0xba, 0x38, 0x74, 0x19, 0x48, + 0x0b, 0x52, 0x01, 0x07, 0x8c, 0x32, 0xd3, 0xce, 0x3c, 0x25, 0x0c, 0x12, + 0x03, 0x53, 0xa9, 0xdd, 0x7a, 0xa1, 0x86, 0x49, 0x26, 0x7f, 0x1b, 0x25, + 0x1d, 0x54, 0x53, 0x56, 0x55, 0x11, 0x51, 0x89, 0xe4, 0x3a, 0x8c, 0xa9, + 0xc5, 0x63, 0x6b, 0xb5, 0x57, 0x20, 0xe6, 0x41, 0xfc, 0x74, 0x2c, 0x9a, + 0x6b, 0xb2, 0xe1, 0x01, 0xad, 0xf2, 0x35, 0xbc, 0xb1, 0xce, 0x37, 0x0e, + 0x61, 0xea, 0x34, 0x4f, 0x23, 0x10, 0xe6, 0x5c, 0xb6, 0xb9, 0xad, 0xbd, + 0xcb, 0xc5, 0x7b, 0x5b, 0x13, 0x9b, 0x53, 0x7a, 0xb5, 0x46, 0x96, 0x76, + 0x8a, 0x67, 0xc3, 0x34, 0xcf, 0x1a, 0x96, 0xe3, 0xa9, 0x9e, 0xa1, 0x8a, + 0xd8, 0x8e, 0x32, 0x52, 0x22, 0x15, 0x78, 0xef, 0xd2, 0x88, 0x6b, 0x3b, + 0x03, 0x1e, 0x53, 0xce, 0xe2, 0xa9, 0x2d, 0x05, 0x3a, 0xe1, 0x55, 0xed, + 0xa7, 0x97, 0xe5, 0x73, 0x52, 0x33, 0xc4, 0x39, 0x4f, 0x13, 0xc9, 0x89, + 0x16, 0x87, 0x37, 0xe9, 0x92, 0x23, 0x3b, 0x1a, 0xba, 0x75, 0x5e, 0xae, + 0x9d, 0x4d, 0x2f, 0xa1, 0xed, 0xe9, 0xc5, 0x3e, 0x64, 0x9e, 0xab, 0x85, + 0x7c, 0x05, 0xa5, 0x87, 0x37, 0x95, 0x6f, 0x6a, 0x88, 0xb8, 0x7a, 0xab, + 0xbb, 0xb4, 0x93, 0x36, 0xa2, 0xb0, 0xb7, 0xb9, 0x1c, 0xa8, 0x94, 0x3b, + 0x0f, 0x61, 0x59, 0x3e, 0xcc, 0x87, 0xb8, 0x35, 0xbc, 0x53, 0xa2, 0x18, + 0xfd, 0x63, 0xaa, 0xdc, 0x60, 0x4e, 0xac, 0x4e, 0xaa, 0xdd, 0x34, 0xab, + 0x10, 0xd6, 0x25, 0x5f, 0x5d, 0x2d, 0xb0, 0xaa, 0xcc, 0xb2, 0x52, 0xad, + 0x42, 0xe1, 0xb1, 0xe5, 0xe1, 0x75, 0x3f, 0xca, 0x64, 0x92, 0x31, 0x32, + 0xc6, 0x9e, 0x30, 0xd2, 0xc5, 0xfd, 0x50, 0x25, 0x4b, 0x10, 0xb7, 0x99, + 0xa8, 0xf1, 0xde, 0x2c, 0xc5, 0xa8, 0x7f, 0x9e, 0xe6, 0x14, 0x99, 0x10, + 0x77, 0x05, 0x56, 0x9f, 0x8c, 0xd9, 0xa6, 0xff, 0x8d, 0xfe, 0x35, 0x33, + 0xdb, 0x10, 0x23, 0x25, 0x44, 0x97, 0xb2, 0x9d, 0xaf, 0x90, 0x92, 0x87, + 0xa2, 0x91, 0x64, 0x8c, 0xdd, 0x6e, 0x52, 0x9a, 0xe4, 0xfc, 0xb3, 0x32, + 0xa3, 0x16, 0xaa, 0xe3, 0x0d, 0x57, 0x56, 0xdd, 0x6d, 0x62, 0xa2, 0xd1, + 0x8a, 0xd9, 0xf6, 0x76, 0xaa, 0x31, 0x65, 0xd0, 0xe8, 0xcd, 0xb3, 0x7f, + 0x4b, 0x5d, 0x76, 0x57, 0x6f, 0x64, 0x54, 0xd2, 0xe8, 0x4f, 0xb4, 0x8a, + 0xce, 0x5f, 0x3b, 0x4b, 0x33, 0x35, 0xa8, 0xc5, 0x3b, 0x23, 0x29, 0x98, + 0xa7, 0x46, 0x32, 0xa3, 0x47, 0x0b, 0x0a, 0xce, 0x2e, 0xaa, 0x51, 0x23, + 0x9c, 0x59, 0x85, 0x82, 0x02, 0x50, 0xf5, 0xf0, 0x12, 0x24, 0xc0, 0x30, + 0x10, 0xc4, 0x87, 0xdc, 0xf3, 0x00, 0xf8, 0x04, 0x1e, 0xa6, 0x73, 0x11, + 0x8b, 0x32, 0xb7, 0x2e, 0x55, 0x4d, 0x25, 0xc6, 0x40, 0x0d, 0x55, 0xc6, + 0x88, 0xa0, 0xff, 0x44, 0xa4, 0x7b, 0x5a, 0x78, 0x4a, 0xad, 0xd1, 0xac, + 0x00, 0xab, 0x04, 0x62, 0x99, 0x4d, 0x82, 0xc1, 0xb9, 0x1c, 0x73, 0x14, + 0x89, 0x41, 0x7d, 0x40, 0xe1, 0x25, 0x00, 0xf4, 0xbc, 0x9e, 0xa5, 0x63, + 0xf6, 0xcb, 0xc3, 0xa1, 0x6d, 0x29, 0xc2, 0xf1, 0xa8, 0x44, 0x66, 0x65, + 0x53, 0xaf, 0x35, 0x52, 0x47, 0xad, 0xec, 0x6c, 0xb3, 0xac, 0xad, 0xcc, + 0xef, 0x2f, 0xd5, 0xd1, 0x9d, 0xa9, 0xf7, 0x4d, 0xed, 0x3a, 0xc4, 0xa9, + 0x42, 0x9c, 0x25, 0xbc, 0x8f, 0xa9, 0x17, 0x4d, 0x2c, 0x4a, 0x65, 0x3a, + 0xb5, 0x99, 0x4e, 0xd0, 0xaa, 0x53, 0xb0, 0xb2, 0xeb, 0x6c, 0x2b, 0xa6, + 0xe7, 0x53, 0xd6, 0x3b, 0x2b, 0xb5, 0x4c, 0xc9, 0xa8, 0xf0, 0xd3, 0x8a, + 0xba, 0x47, 0x56, 0x44, 0xca, 0x41, 0xa1, 0x8a, 0xb1, 0xdf, 0xbf, 0xdb, + 0x3a, 0xc2, 0xf3, 0xf6, 0x3a, 0xac, 0x36, 0x31, 0x38, 0x5e, 0x58, 0x0f, + 0xa1, 0xda, 0x1b, 0x04, 0x99, 0x82, 0xaf, 0xe8, 0x7b, 0x92, 0xd4, 0x47, + 0x28, 0x1a, 0x89, 0xb8, 0xec, 0xff, 0xfb, 0xd4, 0x60, 0x59, 0x0d, 0x97, + 0x55, 0x75, 0x3e, 0x8b, 0xac, 0x7b, 0x70, 0x6e, 0xee, 0x08, 0x16, 0x18, + 0x65, 0x6e, 0x22, 0xed, 0xd2, 0xf4, 0x0f, 0x3f, 0x0d, 0xc1, 0xe5, 0x38, + 0x20, 0x08, 0x93, 0x21, 0xb8, 0x52, 0x4c, 0xd7, 0x47, 0x1c, 0xbd, 0x73, + 0x65, 0x8e, 0xde, 0xdb, 0x7d, 0x2b, 0x53, 0x09, 0x67, 0xcb, 0x8c, 0x3c, + 0x93, 0x4b, 0xf1, 0x99, 0x99, 0x18, 0xa8, 0x8e, 0x45, 0xe8, 0xc4, 0x4c, + 0x48, 0xa0, 0x54, 0x9e, 0xe5, 0x13, 0x5a, 0xd1, 0x24, 0x24, 0xc7, 0x11, + 0x2d, 0x9d, 0x10, 0x93, 0x53, 0x03, 0x6c, 0x81, 0x81, 0x68, 0x3e, 0x1b, + 0xcb, 0xe8, 0x01, 0x66, 0x00, 0x0f, 0xd8, 0x19, 0x3c, 0x48, 0x9e, 0x13, + 0x8a, 0x5e, 0xfd, 0x10, 0xd6, 0x1e, 0x61, 0xa8, 0x79, 0xe0, 0xbc, 0x2c, + 0xa3, 0x12, 0x18, 0x81, 0xdc, 0xe0, 0x81, 0x36, 0x06, 0x04, 0xc4, 0x0e, + 0x50, 0xcd, 0xb1, 0x8e, 0x41, 0x2d, 0x67, 0x7d, 0xdd, 0xe8, 0x5c, 0xd2, + 0x93, 0x4a, 0x66, 0x6a, 0xb3, 0xd1, 0x5b, 0xe6, 0x6a, 0xad, 0x68, 0xba, + 0xba, 0x91, 0xab, 0x25, 0xd2, 0xd4, 0xa2, 0xee, 0xf3, 0xd7, 0x46, 0xa4, + 0xca, 0xd2, 0xdd, 0x68, 0x67, 0x46, 0x77, 0x64, 0x6b, 0x66, 0x69, 0xd9, + 0x18, 0x8d, 0x6d, 0xdc, 0xed, 0x51, 0x77, 0x32, 0x1c, 0x63, 0xb0, 0xd1, + 0x07, 0x00, 0x45, 0x00, 0x82, 0xe0, 0x61, 0x06, 0x71, 0xe7, 0x18, 0x70, + 0xf1, 0xb1, 0x11, 0x50, 0xb4, 0xd5, 0x22, 0x01, 0xe3, 0x08, 0x00, 0xcf, + 0x35, 0x34, 0x00, 0x71, 0xa0, 0x88, 0x2b, 0x00, 0x35, 0x5b, 0x6e, 0x90, + 0x78, 0x00, 0xb1, 0x77, 0x1e, 0xd8, 0x21, 0xd2, 0x0a, 0xeb, 0xa6, 0x89, + 0xea, 0xf3, 0x69, 0xa2, 0x76, 0x2e, 0x9c, 0x18, 0x4f, 0xc8, 0x2b, 0x6a, + 0x73, 0xc1, 0x34, 0x72, 0x99, 0xc4, 0xb1, 0x20, 0xaa, 0x72, 0x60, 0x20, + 0x8c, 0x10, 0x5c, 0x4d, 0x43, 0xb8, 0xea, 0x52, 0x14, 0xa5, 0xc4, 0x9c, + 0xa9, 0x52, 0xef, 0xd0, 0x0b, 0x2c, 0x46, 0x51, 0xa2, 0x92, 0x32, 0x5a, + 0x51, 0xed, 0xad, 0x90, 0xcb, 0xf9, 0x5e, 0x06, 0x7e, 0x9f, 0xa5, 0x87, + 0x80, 0xdd, 0x87, 0xc5, 0xfc, 0x82, 0x60, 0x0c, 0x21, 0xf9, 0xbc, 0x9f, + 0x55, 0xa8, 0xeb, 0xdf, 0x81, 0xde, 0xe8, 0xd4, 0x86, 0x19, 0xa9, 0x02, + 0x45, 0x25, 0x8f, 0xbd, 0x34, 0x56, 0x29, 0x26, 0xca, 0x07, 0x8e, 0x56, + 0x7c, 0xa3, 0xd1, 0xb9, 0x7c, 0x6e, 0xe4, 0xc3, 0xce, 0xd3, 0xe3, 0xb1, + 0x37, 0x56, 0x17, 0x0c, 0xc3, 0x93, 0x8f, 0x13, 0xf3, 0x1b, 0xb5, 0x0c, + 0xbc, 0xf2, 0xf6, 0xb9, 0x5d, 0xda, 0x77, 0x71, 0xce, 0x43, 0x01, 0x38, + 0x11, 0xb9, 0x6d, 0x2b, 0xf1, 0x62, 0x45, 0x00, 0xd7, 0x76, 0xa0, 0xa8, + 0x7a, 0x43, 0x35, 0x25, 0x74, 0x5f, 0x8b, 0xb2, 0x5b, 0x4f, 0xbc, 0x0b, + 0x3b, 0x46, 0xff, 0x4f, 0x46, 0x23, 0xf2, 0x18, 0x2b, 0xb2, 0xa8, 0xe4, + 0x69, 0xe1, 0x83, 0xa5, 0xf4, 0xcf, 0x8b, 0x97, 0x28, 0x7d, 0x6a, 0x3f, + 0x76, 0x5e, 0x67, 0xea, 0x57, 0x18, 0x86, 0xdd, 0x97, 0x9a, 0x76, 0x43, + 0x7b, 0x38, 0x3a, 0x31, 0x84, 0xec, 0x7d, 0xf4, 0x98, 0x75, 0x5a, 0xe3, + 0xbf, 0x61, 0x74, 0xc4, 0x24, 0x72, 0xe8, 0xc3, 0xcf, 0x1d, 0x7e, 0xa2, + 0x8f, 0x53, 0x3f, 0x86, 0xa2, 0xed, 0x21, 0xc6, 0xaa, 0xea, 0xb3, 0xb7, + 0xe5, 0x2a, 0x63, 0x4c, 0xa9, 0x43, 0x9a, 0x42, 0xd2, 0x52, 0xf2, 0x22, + 0xae, 0xf4, 0x01, 0x88, 0xcc, 0xc8, 0x8a, 0xc9, 0x4a, 0xe7, 0x5c, 0x8d, + 0x25, 0x02, 0xca, 0x95, 0x29, 0xd4, 0x82, 0x5b, 0x34, 0x6e, 0xd3, 0x61, + 0x65, 0x2b, 0x13, 0xdf, 0xe0, 0xe4, 0x47, 0x73, 0x5b, 0x52, 0x50, 0xc9, + 0x66, 0x79, 0x95, 0x44, 0x5a, 0x13, 0xe8, 0xc4, 0x27, 0x95, 0x6f, 0x66, + 0x99, 0x16, 0x57, 0x25, 0x46, 0xaa, 0xa9, 0x17, 0x4a, 0xa6, 0xdd, 0x5a, + 0x3c, 0xd7, 0x09, 0x32, 0x9d, 0x47, 0xa7, 0x5f, 0xcd, 0x3e, 0x7b, 0xd7, + 0xed, 0x3f, 0x1b, 0x73, 0x1f, 0x09, 0x55, 0x6a, 0x95, 0x5f, 0x13, 0xdc, + 0xc2, 0x5f, 0x95, 0x34, 0xba, 0xa5, 0xa4, 0xd0, 0xe9, 0xd5, 0xbb, 0xb9, + 0xae, 0x2a, 0x6a, 0xa3, 0xff, 0xab, 0xf5, 0x1b, 0x68, 0x6c, 0xf6, 0x96, + 0xd4, 0x86, 0x8a, 0x61, 0xf2, 0xf6, 0x20, 0x08, 0x54, 0xe3, 0x05, 0xc6, + 0x86, 0x83, 0xfc, 0x43, 0xa1, 0x50, 0x81, 0x8e, 0x12, 0xaa, 0x00, 0x3e, + 0x03, 0xb8, 0x05, 0x00, 0xcc, 0x46, 0x57, 0x0f, 0x70, 0x14, 0xc0, 0x42, + 0x42, 0x1b, 0xbc, 0x92, 0xf6, 0x60, 0x91, 0x17, 0x27, 0x26, 0x5f, 0x6b, + 0xc5, 0x63, 0x84, 0x77, 0x16, 0xb5, 0xb3, 0x48, 0xe8, 0x7e, 0xe5, 0x47, + 0x32, 0xa5, 0x42, 0xaf, 0x48, 0x4c, 0xc8, 0x21, 0xcc, 0x29, 0xc3, 0x78, + 0xdd, 0x51, 0x33, 0xbf, 0x7a, 0x94, 0x3f, 0x0b, 0x19, 0x88, 0x6e, 0x1c, + 0xe8, 0xc5, 0x51, 0x8a, 0x9e, 0x26, 0xb3, 0x23, 0x57, 0x46, 0x4e, 0xcb, + 0xa1, 0xb6, 0x89, 0x5f, 0x61, 0x96, 0x2c, 0x79, 0x67, 0x6b, 0x4c, 0x27, + 0xa5, 0x52, 0x46, 0x53, 0xa9, 0x5d, 0x23, 0x57, 0x2d, 0x6d, 0xeb, 0xcf, + 0xa2, 0xb2, 0xc0, 0x7c, 0xc4, 0xf9, 0x55, 0xb5, 0xd5, 0x14, 0x11, 0xae, + 0xe6, 0xe4, 0xd7, 0x45, 0x35, 0x58, 0x3a, 0x61, 0xe3, 0x72, 0xec, 0xae, + 0x80, 0x7a, 0x37, 0xbc, 0x66, 0x49, 0x35, 0x3b, 0xa3, 0xc7, 0x6b, 0xd0, + 0x55, 0x74, 0xab, 0x84, 0x78, 0x2a, 0x04, 0xb2, 0x9d, 0x3b, 0x4b, 0x44, + 0x46, 0x27, 0x13, 0xa8, 0x73, 0x62, 0xb1, 0x6a, 0x12, 0xbd, 0x7d, 0x22, + 0xf9, 0x13, 0x9b, 0x49, 0x16, 0xff, 0xfb, 0xd4, 0x60, 0x51, 0x89, 0x87, + 0xba, 0x75, 0x3e, 0x2b, 0xaf, 0x7b, 0x70, 0x69, 0xae, 0xa8, 0x36, 0x0c, + 0x65, 0x6e, 0x1d, 0x35, 0xd6, 0xfa, 0x2e, 0x31, 0xed, 0xc1, 0xa8, 0xba, + 0x60, 0xe4, 0x63, 0x09, 0xb8, 0x3c, 0x75, 0x24, 0x07, 0x8e, 0x7a, 0x8e, + 0x7e, 0x34, 0x2b, 0xaa, 0xad, 0x5c, 0x2f, 0xab, 0x56, 0x57, 0x4a, 0xa3, + 0xce, 0x12, 0x3a, 0x1b, 0xe6, 0x3d, 0xc6, 0x60, 0x4e, 0xc1, 0x79, 0x32, + 0xca, 0xca, 0x8d, 0xe4, 0xea, 0x08, 0x4e, 0x95, 0x7a, 0xcc, 0x47, 0xcd, + 0x30, 0xd7, 0x98, 0xde, 0xaa, 0x1a, 0xa7, 0x3e, 0x54, 0x3d, 0x52, 0xb9, + 0x48, 0x13, 0xa4, 0x6b, 0x32, 0x90, 0x97, 0x0b, 0x81, 0xb4, 0xf4, 0xc6, + 0x27, 0xaa, 0x62, 0x56, 0x72, 0x2d, 0xa5, 0xa0, 0x1b, 0xad, 0x25, 0x00, + 0x4a, 0x89, 0x99, 0x3f, 0x36, 0x80, 0x3f, 0xbc, 0x00, 0x7b, 0x21, 0x30, + 0x57, 0x05, 0x68, 0xef, 0xaa, 0x29, 0x02, 0xb5, 0xe4, 0x2a, 0x57, 0x44, + 0x06, 0x8a, 0x18, 0x82, 0x18, 0x91, 0x1d, 0xd4, 0xe4, 0x62, 0x9d, 0xd9, + 0xb0, 0xb8, 0x80, 0x8a, 0xb0, 0x91, 0x14, 0xca, 0xee, 0x7c, 0x5a, 0x75, + 0xa7, 0x9a, 0x9b, 0xe5, 0x54, 0x76, 0xfb, 0x4c, 0xda, 0x7d, 0x7d, 0xfd, + 0x8b, 0x4b, 0x22, 0xa2, 0xde, 0xa8, 0xf7, 0xd3, 0xab, 0x5a, 0x97, 0xe8, + 0xc8, 0xb6, 0xfb, 0x22, 0x50, 0x96, 0xf7, 0x3a, 0xf7, 0x45, 0xdd, 0x6a, + 0xc5, 0x72, 0x94, 0x44, 0xaa, 0x8f, 0x12, 0x15, 0x21, 0x9c, 0x60, 0xa1, + 0x47, 0x08, 0x39, 0x45, 0x0c, 0x22, 0xf0, 0xa2, 0x0b, 0x89, 0x86, 0x0b, + 0x8c, 0x15, 0x1d, 0xa6, 0xec, 0x32, 0x0b, 0x30, 0xa7, 0xe8, 0xfc, 0x46, + 0x53, 0x03, 0x00, 0x16, 0x3b, 0x70, 0xce, 0x3c, 0x85, 0xb2, 0xca, 0xf6, + 0xa4, 0x71, 0x41, 0xfc, 0xd8, 0xb4, 0x55, 0x27, 0xb1, 0x1f, 0x17, 0x5e, + 0x4e, 0xa4, 0x79, 0x35, 0x3d, 0x3c, 0x09, 0xcb, 0x65, 0x12, 0xe8, 0x96, + 0x3a, 0x86, 0xec, 0x95, 0x09, 0xe9, 0xd2, 0x2d, 0x1f, 0xce, 0x87, 0xc3, + 0x41, 0x0a, 0x13, 0x63, 0x62, 0x31, 0xf8, 0x44, 0xe3, 0x00, 0x75, 0xe4, + 0x41, 0x03, 0xab, 0x57, 0xab, 0xdb, 0x7a, 0xe9, 0x99, 0xba, 0x1b, 0xe6, + 0xc8, 0xed, 0x91, 0x64, 0x7c, 0xd6, 0x75, 0xce, 0xc3, 0x2c, 0x44, 0xe2, + 0xbf, 0x4b, 0xf0, 0x94, 0x6e, 0x35, 0x7a, 0xfd, 0x2f, 0x1d, 0xd2, 0xcc, + 0x56, 0x25, 0x2b, 0x2c, 0xd2, 0x38, 0x43, 0x67, 0x99, 0xa1, 0x85, 0xd2, + 0x79, 0x5a, 0xaa, 0xa6, 0x20, 0x1a, 0x69, 0xed, 0x45, 0x7c, 0xc8, 0xf5, + 0xb6, 0x3f, 0x65, 0xd3, 0x62, 0xb5, 0x31, 0x0d, 0xcd, 0xf6, 0xa0, 0xe9, + 0x57, 0x88, 0xd6, 0x43, 0x57, 0x36, 0x79, 0x19, 0x95, 0x85, 0x85, 0x6a, + 0x39, 0xdf, 0x01, 0x91, 0x55, 0x5a, 0xc6, 0x54, 0x46, 0x85, 0x1a, 0x02, + 0x18, 0xe3, 0x16, 0x91, 0xdd, 0x9f, 0xb7, 0x65, 0xbb, 0xa8, 0xb3, 0xab, + 0xfa, 0x95, 0x75, 0xac, 0xc9, 0x23, 0xed, 0x2e, 0x22, 0x43, 0x6e, 0xc2, + 0xe5, 0xe4, 0x48, 0x4c, 0x0c, 0xce, 0x0b, 0xb6, 0x25, 0x31, 0xe9, 0x44, + 0xd3, 0x33, 0x3d, 0x96, 0xe1, 0x29, 0xce, 0xb5, 0x7d, 0x54, 0xca, 0x27, + 0x33, 0xbb, 0x0a, 0x93, 0x68, 0xf8, 0x87, 0x10, 0x83, 0x48, 0xa9, 0x49, + 0x9d, 0x71, 0x97, 0x8b, 0x98, 0x93, 0x94, 0xa8, 0xa0, 0x1f, 0xaf, 0x80, + 0x33, 0xc9, 0xc5, 0xa8, 0x59, 0x4e, 0xcf, 0xe3, 0x63, 0x77, 0x3e, 0xec, + 0x2f, 0xc8, 0x19, 0x4f, 0x95, 0x54, 0xc6, 0xa9, 0x36, 0xa2, 0x5e, 0xa9, + 0x99, 0xe3, 0xf7, 0x66, 0x96, 0x7e, 0x55, 0x62, 0x10, 0xf2, 0x6a, 0x68, + 0xc6, 0x12, 0x14, 0x8a, 0x82, 0x1c, 0x49, 0xc2, 0x1d, 0xda, 0xda, 0xac, + 0xa6, 0x84, 0x43, 0xb0, 0x9d, 0x7e, 0x9b, 0x4d, 0xfb, 0xb4, 0xeb, 0xeb, + 0xbf, 0xd9, 0xeb, 0x6b, 0x37, 0x57, 0xbf, 0x9e, 0xf5, 0xa7, 0xa7, 0xda, + 0xfe, 0x6f, 0xd1, 0x2a, 0x56, 0x67, 0xa2, 0x6a, 0x66, 0x76, 0x06, 0xc8, + 0xe5, 0x28, 0x79, 0x91, 0x0a, 0xec, 0x0c, 0x23, 0x85, 0x28, 0x00, 0xce, + 0x0c, 0x31, 0x07, 0x31, 0x40, 0x8c, 0x3d, 0x30, 0x10, 0x14, 0x28, 0x10, + 0x85, 0x74, 0x63, 0x0f, 0x0a, 0x31, 0x90, 0x21, 0x4b, 0xe1, 0xe7, 0x9e, + 0x09, 0x4c, 0xf9, 0x8a, 0xf0, 0x7c, 0x6e, 0x9d, 0x42, 0xca, 0xf6, 0x04, + 0x23, 0xa0, 0xb6, 0x39, 0x46, 0x78, 0xc0, 0x72, 0x90, 0x15, 0x39, 0x6f, + 0x38, 0xc9, 0xaa, 0xa0, 0xca, 0x2c, 0x2d, 0x0d, 0x85, 0xf1, 0x22, 0x8f, + 0x3d, 0x19, 0x4d, 0x23, 0xad, 0x60, 0xb0, 0x20, 0x8b, 0xc3, 0x81, 0x96, + 0x29, 0x05, 0xb1, 0xb9, 0x18, 0xaa, 0x58, 0x54, 0x33, 0x9b, 0x07, 0x2c, + 0xea, 0xa2, 0xb7, 0x32, 0x27, 0xe2, 0xac, 0xb6, 0x11, 0x2c, 0x65, 0x92, + 0xc6, 0xe3, 0x0a, 0xb9, 0x5a, 0x26, 0xef, 0x3c, 0xd9, 0x43, 0xf4, 0x6f, + 0xd4, 0x3e, 0xd8, 0x25, 0xd1, 0xd7, 0x82, 0x08, 0x7f, 0x21, 0x8b, 0xae, + 0xac, 0x35, 0x40, 0xeb, 0x57, 0x8a, 0x40, 0xee, 0x9c, 0xa1, 0xae, 0xc3, + 0x6d, 0xa4, 0xaf, 0x74, 0xd3, 0x12, 0x5c, 0x64, 0x51, 0x97, 0x9a, 0x5f, + 0x11, 0x91, 0x29, 0xf6, 0xb7, 0x2c, 0xb7, 0x10, 0x90, 0xd3, 0x54, 0x82, + 0xa1, 0x8a, 0x69, 0x14, 0xb6, 0x17, 0x01, 0x49, 0x70, 0x80, 0x21, 0xc8, + 0x7a, 0xac, 0xb7, 0xee, 0x4b, 0x25, 0xd0, 0xfb, 0xf1, 0x4c, 0xe5, 0xbc, + 0xd4, 0x31, 0xf8, 0xd4, 0x63, 0x70, 0x2b, 0xe3, 0x18, 0xa5, 0x97, 0x3f, + 0x0f, 0x5c, 0xb6, 0x53, 0x37, 0x33, 0x0e, 0x35, 0xf8, 0x3a, 0x66, 0x1c, + 0x85, 0x3c, 0xcf, 0xcc, 0x42, 0xff, 0xfb, 0xd4, 0x60, 0x65, 0x0d, 0x88, + 0xa7, 0x75, 0xbd, 0x0b, 0xaf, 0xc3, 0x70, 0x7f, 0xee, 0x78, 0x02, 0x20, + 0xc8, 0x6e, 0x1f, 0x41, 0xd4, 0xf8, 0x2e, 0xbd, 0xed, 0xc1, 0x9e, 0x3a, + 0x60, 0xe8, 0x33, 0x15, 0xb8, 0x00, 0x91, 0xcd, 0xd3, 0x37, 0x19, 0xf9, + 0x2d, 0x49, 0x74, 0x42, 0x55, 0x3c, 0xfa, 0x76, 0x9d, 0xe2, 0x93, 0x3c, + 0x76, 0x23, 0xf5, 0x71, 0x77, 0xa5, 0x52, 0xb8, 0x76, 0x51, 0x02, 0x44, + 0xdc, 0x8a, 0xd3, 0xf1, 0x55, 0xd2, 0xf9, 0xce, 0x37, 0x69, 0x5b, 0x37, + 0x89, 0x4a, 0x9d, 0xc6, 0x3e, 0xe5, 0xad, 0x0a, 0xd1, 0xb5, 0xd4, 0xec, + 0xaf, 0x94, 0x50, 0x69, 0x6b, 0xea, 0x64, 0x15, 0x36, 0x9e, 0xe7, 0x3a, + 0xa5, 0xed, 0x4a, 0xc4, 0x55, 0x44, 0xd6, 0xae, 0x1c, 0x00, 0x1e, 0x33, + 0x28, 0x27, 0x0f, 0x90, 0x74, 0x4b, 0xb2, 0x4e, 0xa6, 0xe9, 0x74, 0x9f, + 0x51, 0xbb, 0xcb, 0x2e, 0x1f, 0x1b, 0xfa, 0xcc, 0x8c, 0x6d, 0xec, 0x7a, + 0x20, 0xab, 0x1f, 0x69, 0x9a, 0xeb, 0x3c, 0x9d, 0xe5, 0x23, 0x27, 0xd1, + 0x6d, 0x53, 0x13, 0x1b, 0xdd, 0x71, 0xc7, 0x0f, 0x5b, 0x6f, 0x8c, 0xfb, + 0x9e, 0xa6, 0x2e, 0xb7, 0xd6, 0xe2, 0x35, 0x86, 0xf1, 0x9f, 0xd5, 0x74, + 0xfc, 0x2d, 0xfc, 0xcc, 0xba, 0xaf, 0x77, 0xd8, 0xa7, 0x37, 0xdf, 0x6f, + 0x11, 0x44, 0xbf, 0x2d, 0x31, 0x53, 0xc6, 0x97, 0xcd, 0x52, 0x90, 0x6f, + 0x0e, 0xb3, 0x1c, 0xf0, 0x95, 0xc4, 0xbd, 0x5d, 0x55, 0x2a, 0x9f, 0xe6, + 0x13, 0x52, 0x54, 0xb2, 0x14, 0x7b, 0x0a, 0x1f, 0x87, 0xc3, 0xcf, 0x1c, + 0x39, 0x43, 0x91, 0x18, 0x46, 0x30, 0x44, 0x15, 0x18, 0x38, 0x61, 0xce, + 0x48, 0x40, 0x68, 0x9c, 0x4a, 0x64, 0x14, 0x02, 0xcc, 0x21, 0x89, 0x8d, + 0xbd, 0x15, 0xcc, 0x09, 0x00, 0x1b, 0x47, 0x21, 0x65, 0xb5, 0xa4, 0x4b, + 0x97, 0x3c, 0x30, 0x35, 0x15, 0xd3, 0x28, 0xe4, 0x71, 0x32, 0xd4, 0x46, + 0xf9, 0x26, 0x43, 0x14, 0x65, 0xb9, 0x1a, 0xb4, 0xb4, 0xcd, 0x39, 0xd7, + 0x2a, 0x8d, 0x40, 0x6a, 0x1e, 0x4b, 0x94, 0xd1, 0xba, 0x8a, 0x3a, 0x23, + 0xbd, 0x44, 0x97, 0xe6, 0xe9, 0x09, 0x5b, 0xf7, 0xa9, 0x86, 0xf5, 0x7a, + 0x81, 0x14, 0x96, 0x4d, 0xbc, 0x82, 0x97, 0x30, 0xd3, 0xa6, 0xf1, 0xd8, + 0xde, 0xe0, 0xf1, 0x9d, 0x82, 0x0a, 0x51, 0x71, 0x2a, 0x35, 0x4c, 0x87, + 0x47, 0x8e, 0xc6, 0xf6, 0x05, 0x11, 0xf0, 0xb0, 0xde, 0xe3, 0x95, 0xe9, + 0x1a, 0xd9, 0x21, 0x58, 0xe9, 0xae, 0x53, 0xa7, 0x6a, 0xdc, 0x45, 0x22, + 0xed, 0x52, 0xdf, 0x15, 0xb2, 0x22, 0x3d, 0x4b, 0x19, 0x99, 0xeb, 0x92, + 0x4d, 0x2b, 0x23, 0x24, 0x57, 0x69, 0x65, 0xe8, 0xb1, 0x72, 0xe2, 0xe6, + 0xde, 0xb2, 0xa4, 0x64, 0x42, 0x1a, 0xe0, 0xa9, 0xda, 0x8d, 0x1c, 0x29, + 0x9d, 0x56, 0x2a, 0x94, 0xef, 0xba, 0xb9, 0xc9, 0x72, 0x97, 0x39, 0x5b, + 0xeb, 0x09, 0xfb, 0x93, 0x3f, 0x80, 0xd2, 0x72, 0xd9, 0xeb, 0x72, 0x76, + 0x12, 0x71, 0x9d, 0x22, 0xa9, 0xac, 0x76, 0x46, 0x05, 0x7b, 0x32, 0xe1, + 0xea, 0xed, 0x76, 0xca, 0xae, 0x56, 0x6d, 0x4e, 0xe5, 0xa6, 0xd9, 0xe1, + 0x31, 0x28, 0x5b, 0xa3, 0xa7, 0x18, 0x19, 0x1f, 0xb6, 0xa9, 0x55, 0xd0, + 0x17, 0x50, 0x1b, 0x20, 0xac, 0x3e, 0x6a, 0x66, 0x50, 0xc8, 0xbc, 0xa4, + 0x39, 0x11, 0x64, 0xa1, 0x76, 0x7e, 0xa5, 0x50, 0x94, 0xe1, 0x3b, 0x54, + 0x08, 0x42, 0x29, 0x52, 0xfc, 0x9a, 0xc8, 0x12, 0x58, 0xe1, 0x05, 0x0d, + 0x23, 0xd0, 0x06, 0x26, 0x24, 0x40, 0x03, 0xdd, 0x85, 0x87, 0x68, 0x43, + 0xb3, 0xdd, 0x37, 0x7b, 0xef, 0x6f, 0x1b, 0xda, 0xb0, 0xe7, 0x7f, 0x6e, + 0xd3, 0x3a, 0xf8, 0xfe, 0x0b, 0x4e, 0x08, 0x78, 0x99, 0x0d, 0x3b, 0xac, + 0xd8, 0xdf, 0xe2, 0x08, 0x65, 0x12, 0xc9, 0x2e, 0xe3, 0xce, 0x63, 0x5f, + 0xd9, 0x12, 0xef, 0x45, 0xbd, 0x5b, 0xd7, 0xcf, 0xd6, 0x6a, 0x35, 0xa9, + 0x65, 0xfd, 0x7c, 0xd7, 0x66, 0xba, 0x74, 0xfd, 0x99, 0x53, 0x5c, 0xa9, + 0xd7, 0xa2, 0xe9, 0xea, 0x9d, 0x09, 0xd1, 0x94, 0xa5, 0x2b, 0xb4, 0xec, + 0x73, 0x8f, 0x48, 0xa2, 0x3b, 0x95, 0x05, 0x99, 0x85, 0x03, 0xe2, 0x6e, + 0x57, 0x01, 0x4e, 0x2d, 0x30, 0x70, 0x69, 0xc4, 0x04, 0x15, 0x52, 0x00, + 0x05, 0x8c, 0x5b, 0x53, 0x0d, 0x55, 0xa3, 0xa3, 0xc2, 0x12, 0x20, 0x7c, + 0xbf, 0x30, 0xdd, 0x1d, 0x67, 0xf2, 0x92, 0x58, 0xe9, 0xe7, 0x1b, 0x38, + 0x34, 0x4a, 0xea, 0x9b, 0x81, 0x52, 0x4a, 0x0a, 0xe3, 0xc3, 0x87, 0x4a, + 0x85, 0x60, 0x5c, 0x1a, 0x0f, 0xe0, 0x68, 0x44, 0x0f, 0x5f, 0x06, 0x61, + 0xd1, 0x98, 0x54, 0x5a, 0x0e, 0x47, 0x15, 0x85, 0x52, 0x55, 0x71, 0x22, + 0xb6, 0x49, 0x81, 0x18, 0x12, 0x7c, 0x1e, 0x06, 0x01, 0xd9, 0x98, 0xf8, + 0x0c, 0xc3, 0x83, 0xe5, 0x72, 0x9d, 0x93, 0x0a, 0xa7, 0x4a, 0x15, 0x01, + 0xca, 0xe0, 0xfd, 0xf2, 0x1a, 0x88, 0x6f, 0x74, 0xe4, 0xfa, 0x1d, 0x1c, + 0xd5, 0xad, 0x6e, 0x28, 0xa7, 0x79, 0x7c, 0xf9, 0x0e, 0x52, 0xb0, 0xaa, + 0x62, 0x9d, 0x50, 0x7b, 0x36, 0x60, 0x2a, 0xce, 0x39, 0x95, 0xc7, 0x9a, + 0xfa, 0xd2, 0x81, 0x4d, 0x11, 0xc5, 0x95, 0x21, 0xb8, 0x4c, 0x2e, 0xdb, + 0x70, 0xc8, 0xed, 0xb1, 0xeb, 0x72, 0x75, 0x5a, 0xf1, 0x99, 0x4a, 0xc6, + 0x74, 0x30, 0xa5, 0xac, 0xe7, 0x00, 0xe9, 0x56, 0xb9, 0xc2, 0x56, 0x29, + 0xdb, 0x55, 0x2c, 0xd1, 0x6a, 0xc2, 0xf9, 0x89, 0x4c, 0x8a, 0x56, 0x4e, + 0xa3, 0x56, 0xb8, 0xa5, 0xd7, 0xff, 0xfb, 0xd4, 0x60, 0x57, 0x8d, 0x97, + 0xc2, 0x75, 0xbe, 0x13, 0xac, 0x7b, 0x70, 0x6f, 0xee, 0xa8, 0x3a, 0x18, + 0xc5, 0x6e, 0x1e, 0xd1, 0xd8, 0xf8, 0x2e, 0xbd, 0xed, 0xc1, 0xc4, 0xba, + 0x20, 0xa4, 0x23, 0x15, 0xb8, 0x4f, 0x9b, 0x94, 0xf0, 0xd3, 0xf3, 0xcb, + 0x01, 0xa6, 0x03, 0xf7, 0x4f, 0xde, 0xb4, 0x36, 0xb0, 0x6e, 0xd6, 0xbb, + 0x64, 0x49, 0x6e, 0xcc, 0xb4, 0xff, 0xa7, 0xd5, 0x56, 0x59, 0x6e, 0x65, + 0x36, 0x18, 0x4b, 0x8b, 0x8b, 0xf4, 0xc2, 0x1e, 0x8c, 0x42, 0x9a, 0x51, + 0x71, 0x14, 0x13, 0x37, 0x9c, 0x4b, 0x69, 0x7c, 0x14, 0x28, 0x6a, 0x7c, + 0xe9, 0x53, 0x39, 0x1a, 0x07, 0x00, 0xb1, 0x87, 0x03, 0x60, 0xdc, 0x39, + 0x05, 0x29, 0x69, 0x4c, 0x6c, 0xa6, 0xc0, 0x00, 0x07, 0x6e, 0x34, 0x40, + 0x03, 0xfb, 0x3c, 0xb8, 0x60, 0xee, 0xc6, 0x67, 0xbf, 0x8f, 0xba, 0xdd, + 0xab, 0xf7, 0xb3, 0x17, 0x0e, 0x55, 0xe0, 0x65, 0x9b, 0x0f, 0x58, 0x72, + 0xc8, 0xae, 0xc3, 0x39, 0x70, 0xb4, 0xfe, 0x24, 0x45, 0x27, 0xcd, 0xc7, + 0xfd, 0x05, 0x1d, 0x4a, 0xf5, 0x99, 0x87, 0x20, 0xea, 0xbc, 0xa9, 0x73, + 0xbb, 0x4b, 0x9f, 0xdd, 0x7d, 0xef, 0xd1, 0xeb, 0xa3, 0xbe, 0xdd, 0x5f, + 0xf5, 0xb7, 0xd7, 0xea, 0xeb, 0x5a, 0x3a, 0xbe, 0x95, 0xa6, 0xcd, 0x99, + 0xd7, 0x73, 0xad, 0x34, 0x76, 0xbf, 0x53, 0xb2, 0x23, 0x65, 0x65, 0x54, + 0x38, 0x80, 0xa0, 0x81, 0x46, 0xdc, 0xc1, 0xd2, 0x11, 0x55, 0xd6, 0x20, + 0x66, 0x15, 0x14, 0x29, 0x45, 0x18, 0x30, 0xa3, 0xc5, 0xc6, 0xd9, 0xd6, + 0x4e, 0x03, 0x0c, 0xc1, 0x63, 0xac, 0x40, 0x01, 0x60, 0x7d, 0x5e, 0x36, + 0xec, 0x12, 0x30, 0xa5, 0xb2, 0xf8, 0xec, 0x72, 0x7a, 0x85, 0x61, 0x46, + 0xa4, 0x96, 0x47, 0x02, 0xa9, 0x89, 0x52, 0xe9, 0x79, 0x10, 0xf1, 0x61, + 0x70, 0xc2, 0xf8, 0xda, 0x46, 0xa3, 0x14, 0x6c, 0xac, 0x26, 0x89, 0xe1, + 0x11, 0x9d, 0x42, 0x7a, 0xa0, 0xce, 0xcc, 0xc4, 0x5b, 0x7b, 0x1d, 0x94, + 0xb7, 0xc3, 0x5e, 0x32, 0x95, 0xaf, 0x15, 0x4a, 0x86, 0x43, 0x2b, 0x9a, + 0x4d, 0x09, 0x23, 0xb3, 0x2d, 0xe9, 0xa5, 0xa6, 0xd6, 0x64, 0x83, 0xb8, + 0x4d, 0xdb, 0x66, 0x60, 0x3f, 0x92, 0xaa, 0x59, 0x13, 0xa7, 0xea, 0xb9, + 0x4a, 0x68, 0x33, 0xa9, 0xd8, 0xe3, 0x33, 0xc7, 0x99, 0x78, 0xf6, 0x7c, + 0x5d, 0xd2, 0x51, 0x9e, 0xe1, 0x48, 0xfe, 0x78, 0x52, 0xa2, 0x97, 0x2c, + 0x8c, 0x67, 0xfb, 0x74, 0x15, 0x34, 0x66, 0x46, 0xd6, 0x38, 0x4f, 0x69, + 0x33, 0x23, 0x1a, 0xc2, 0x62, 0x3b, 0x8c, 0x34, 0x3e, 0x23, 0xe9, 0x21, + 0x39, 0xa7, 0x5f, 0x2a, 0x93, 0x88, 0x6a, 0xf2, 0x4a, 0x3b, 0x7c, 0x7b, + 0x45, 0xdd, 0xee, 0xd2, 0xda, 0xe7, 0x77, 0x71, 0x61, 0x28, 0x19, 0xdb, + 0x76, 0xb1, 0x32, 0xca, 0x9d, 0x82, 0x66, 0x04, 0x1b, 0xf8, 0x96, 0x78, + 0xa1, 0x5a, 0x34, 0xfc, 0x59, 0xb0, 0x84, 0xb5, 0xc4, 0x6d, 0x49, 0x49, + 0x34, 0x17, 0xf7, 0x62, 0x5a, 0x57, 0x4e, 0xce, 0x7e, 0xab, 0x15, 0x27, + 0x73, 0x53, 0x64, 0x74, 0x81, 0x98, 0xa8, 0x46, 0x35, 0xa9, 0x18, 0x55, + 0x0d, 0xe6, 0x42, 0xa6, 0x2a, 0x85, 0xad, 0x3a, 0xbc, 0x69, 0x16, 0xe2, + 0x74, 0x84, 0x87, 0x21, 0x6a, 0x9f, 0x12, 0xa4, 0x14, 0x3e, 0xe5, 0x0d, + 0x90, 0x61, 0x8f, 0xf4, 0xd8, 0x25, 0xfd, 0x56, 0x15, 0x46, 0xc3, 0x9a, + 0x73, 0x06, 0x6d, 0xff, 0x93, 0x3f, 0x71, 0xb9, 0xd7, 0xc7, 0x4a, 0x9a, + 0xcd, 0x34, 0xe4, 0x98, 0xc7, 0xaa, 0x36, 0x09, 0x9b, 0x87, 0x9a, 0xf6, + 0xe4, 0xf6, 0x27, 0x29, 0x33, 0x9b, 0x3f, 0x28, 0xa0, 0x8b, 0x99, 0x58, + 0x8c, 0x65, 0x18, 0xa6, 0xd4, 0xe8, 0xb4, 0x4d, 0x65, 0x67, 0x4f, 0xd2, + 0xd2, 0xcc, 0xd6, 0x5c, 0xe9, 0x7d, 0xe6, 0xf3, 0x52, 0x8e, 0xfd, 0xd7, + 0xb4, 0x9a, 0xd0, 0xf9, 0x8c, 0xac, 0xbb, 0xa5, 0x1d, 0xb9, 0xab, 0x5b, + 0xd2, 0xbf, 0x73, 0xb1, 0xd6, 0xcd, 0x54, 0x1e, 0x20, 0x5a, 0x4a, 0xe3, + 0xce, 0x26, 0x62, 0x8f, 0x20, 0xf1, 0xe8, 0x60, 0x90, 0xf1, 0x40, 0xf8, + 0x81, 0x84, 0x44, 0x87, 0x29, 0x8e, 0x3c, 0xaa, 0x26, 0x39, 0x00, 0x21, + 0x20, 0x00, 0x01, 0x05, 0x86, 0x05, 0xcc, 0x12, 0xc1, 0x3e, 0x69, 0x20, + 0xc1, 0xe1, 0x70, 0x70, 0x1d, 0xaf, 0xcb, 0x9d, 0x9e, 0xbd, 0xf5, 0xa2, + 0xb0, 0xdf, 0xb2, 0x68, 0x7e, 0x96, 0x4b, 0x49, 0x11, 0xee, 0xae, 0x94, + 0x47, 0x97, 0x56, 0xf8, 0xef, 0xa4, 0x77, 0x56, 0xb4, 0x2a, 0x03, 0x61, + 0x2b, 0x39, 0x9f, 0xac, 0xe5, 0xc8, 0xbb, 0x13, 0x83, 0x88, 0xc4, 0x4f, + 0x2f, 0x27, 0x96, 0x95, 0x0a, 0x55, 0xb5, 0xe6, 0x8a, 0xaf, 0xa9, 0x61, + 0x2e, 0x1c, 0x5b, 0x5b, 0xd8, 0x4d, 0x28, 0x0b, 0x0d, 0x58, 0x7c, 0xbe, + 0xdb, 0x8d, 0xd9, 0xb9, 0x93, 0x6e, 0x4d, 0x2b, 0xcc, 0x4f, 0x9d, 0x25, + 0xde, 0xb9, 0xb2, 0x30, 0xc7, 0x87, 0x3c, 0x28, 0xaa, 0xea, 0xc9, 0xe0, + 0x3e, 0x7d, 0x15, 0x3b, 0x66, 0x16, 0xb6, 0x26, 0x08, 0x69, 0xc8, 0x30, + 0x97, 0x76, 0x86, 0xdf, 0x31, 0xd5, 0x02, 0x3c, 0x66, 0x56, 0x47, 0xec, + 0x08, 0x52, 0x89, 0x75, 0x05, 0xba, 0x8a, 0x38, 0xf1, 0x1c, 0xa0, 0x2f, + 0x4e, 0xd6, 0xf1, 0x4d, 0x19, 0x4a, 0xa3, 0x6c, 0x79, 0x15, 0x48, 0xce, + 0xe4, 0x7a, 0xc5, 0x9a, 0x0e, 0xde, 0x2b, 0xdf, 0xc4, 0x7e, 0xa9, 0x73, + 0x81, 0x76, 0x0c, 0xb6, 0xc6, 0x8d, 0x32, 0x9a, 0x33, 0x3b, 0x5b, 0xb5, + 0x03, 0x6c, 0x04, 0x2d, 0xc5, 0xff, 0xfb, 0xd4, 0x60, 0x5d, 0x80, 0x07, + 0x7b, 0x76, 0x3e, 0xb5, 0x71, 0xe0, 0x00, 0x62, 0x0e, 0x78, 0x5d, 0xa1, + 0x94, 0x00, 0x29, 0x52, 0x14, 0xfc, 0xd9, 0xed, 0x80, 0x02, 0x4a, 0xc2, + 0xa0, 0x43, 0x12, 0x80, 0x00, 0xcf, 0x50, 0xa2, 0xab, 0x1a, 0x9b, 0xd3, + 0xd1, 0x9b, 0x62, 0x41, 0x87, 0xf3, 0x64, 0x44, 0x1c, 0x9a, 0x50, 0xa2, + 0x55, 0xeb, 0x54, 0x18, 0xd6, 0x3a, 0xbb, 0x70, 0xe5, 0x81, 0x3a, 0xdb, + 0x5d, 0x14, 0xd6, 0x33, 0xee, 0xa0, 0x37, 0xd7, 0xc5, 0x48, 0xe6, 0x24, + 0xe7, 0x50, 0xed, 0x8c, 0x04, 0xb0, 0xd4, 0x33, 0x13, 0xa0, 0x00, 0x09, + 0x05, 0xc6, 0xdd, 0x6c, 0x80, 0x3d, 0x5d, 0x16, 0xb7, 0x5c, 0x3b, 0x9c, + 0xfe, 0xee, 0x34, 0xca, 0x50, 0xf5, 0x04, 0x05, 0x66, 0x14, 0x23, 0x08, + 0x23, 0x9c, 0x5d, 0x0a, 0x76, 0x41, 0x1e, 0x52, 0x91, 0x04, 0x8a, 0x08, + 0x83, 0x86, 0x30, 0xb8, 0xa3, 0xaa, 0xb0, 0xf5, 0x7b, 0xca, 0x88, 0xce, + 0xc6, 0xb6, 0xce, 0x72, 0xd0, 0xee, 0xc5, 0x11, 0x75, 0xbb, 0x6f, 0xae, + 0xd6, 0xeb, 0xd1, 0x7e, 0x9a, 0x7a, 0x77, 0xfd, 0x3d, 0x7f, 0xd7, 0xda, + 0xdf, 0x4f, 0xf5, 0xe9, 0xfa, 0x56, 0x9d, 0xee, 0xcb, 0x95, 0x51, 0x90, + 0xf9, 0x98, 0xaf, 0x51, 0x0a, 0x28, 0xbb, 0xb8, 0xa1, 0x0a, 0x28, 0x80, + 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x0c, 0x8a, 0x19, 0x89, 0x68, 0x03, + 0x08, 0x45, 0x54, 0x14, 0x37, 0xe6, 0x22, 0xa8, 0x68, 0x6e, 0xec, 0xc5, + 0xcf, 0xd4, 0xb8, 0xc0, 0x94, 0x03, 0xc2, 0x01, 0x54, 0xcc, 0x20, 0x3b, + 0x8d, 0x7a, 0x11, 0xfa, 0x19, 0x8c, 0x18, 0x22, 0x82, 0x58, 0x08, 0x11, + 0xcc, 0xe6, 0x03, 0x08, 0xc9, 0xc4, 0x53, 0x69, 0x5b, 0x91, 0x41, 0xb0, + 0x28, 0x80, 0xd8, 0x69, 0x8c, 0xaa, 0x3d, 0xde, 0x5f, 0xce, 0xe9, 0x69, + 0xc3, 0x01, 0xe0, 0x03, 0x32, 0x64, 0x1e, 0x41, 0x33, 0x90, 0xc6, 0xcc, + 0xe4, 0x4a, 0x54, 0x11, 0xb5, 0x71, 0x8a, 0xcc, 0x8d, 0x10, 0xdc, 0xcb, + 0x53, 0xa1, 0x9a, 0x8f, 0xcb, 0xfd, 0x19, 0x2e, 0x00, 0x90, 0x02, 0x8e, + 0xd7, 0x95, 0x18, 0x53, 0x69, 0x8e, 0x28, 0x99, 0xd1, 0x61, 0x9a, 0x92, + 0x99, 0x08, 0x13, 0xbb, 0x72, 0x00, 0xa4, 0x97, 0xcf, 0x40, 0x6f, 0xf3, + 0x2f, 0x86, 0x38, 0xf3, 0x06, 0x04, 0xa0, 0x98, 0x2a, 0x00, 0x9e, 0xe9, + 0x80, 0x8a, 0x32, 0xea, 0xb2, 0x2a, 0x49, 0x64, 0x7e, 0x47, 0x6a, 0x29, + 0x34, 0xef, 0xbf, 0x0f, 0xb5, 0x32, 0x63, 0x2a, 0x54, 0xa9, 0x70, 0x17, + 0x3c, 0x1e, 0xc9, 0x37, 0x07, 0x40, 0xb2, 0x0e, 0x3e, 0x98, 0x46, 0xe6, + 0x67, 0xed, 0x7e, 0x0e, 0xf5, 0x0c, 0xeb, 0xfc, 0xc3, 0x9b, 0x0a, 0xc4, + 0x77, 0x5d, 0x27, 0x51, 0x9c, 0xc6, 0x6d, 0xc7, 0xa2, 0x4f, 0xe4, 0x11, + 0x26, 0x95, 0x71, 0xf3, 0x7f, 0x20, 0x5a, 0xd3, 0x4e, 0x9d, 0x3e, 0x71, + 0xa9, 0x75, 0x97, 0xd9, 0xfb, 0xfb, 0x12, 0x99, 0xe9, 0x96, 0xe5, 0x1b, + 0x9a, 0x94, 0xc3, 0xf4, 0xd1, 0xe8, 0xff, 0xd5, 0x85, 0x43, 0xd6, 0x2f, + 0xdc, 0xc5, 0xfd, 0xa2, 0x9a, 0x90, 0xf1, 0xfa, 0x90, 0x54, 0x79, 0x5f, + 0x6a, 0x3b, 0x78, 0xc4, 0x68, 0xae, 0x44, 0x61, 0xd8, 0x6d, 0xc6, 0x9f, + 0x7d, 0x60, 0xfa, 0xee, 0x3c, 0x86, 0xcc, 0xae, 0x4f, 0x17, 0xca, 0x2c, + 0xe9, 0xb5, 0xd4, 0xf6, 0x53, 0x25, 0x4f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x49, 0x2a, 0x8c, 0x41, 0x91, 0xc9, + 0x6c, 0x99, 0xf0, 0x94, 0xdc, 0x6f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, 0x1d, 0xaa, 0xae, 0xdc, 0x3e, 0xe3, + 0xc6, 0xef, 0x3f, 0x4e, 0x83, 0x80, 0xa8, 0xab, 0x31, 0x28, 0x60, 0xbe, + 0x03, 0x64, 0x8d, 0x2c, 0xba, 0x18, 0x90, 0xf2, 0x0d, 0xc7, 0x0d, 0x4b, + 0x19, 0x2b, 0x6c, 0x6a, 0x35, 0x4b, 0x39, 0x66, 0x8c, 0x86, 0x1c, 0xfb, + 0xc4, 0x3c, 0xb8, 0xc8, 0x38, 0x65, 0x8d, 0x19, 0x76, 0xb1, 0x8e, 0xa8, + 0x45, 0xbf, 0x19, 0x69, 0x6f, 0x37, 0x66, 0xa3, 0xbb, 0x5d, 0xdd, 0x45, + 0x28, 0xeb, 0x42, 0xad, 0x47, 0x25, 0x5b, 0x47, 0x35, 0x3b, 0xd9, 0x13, + 0x72, 0xd6, 0x3c, 0xd8, 0x26, 0x57, 0xd3, 0xab, 0x47, 0x81, 0xfe, 0x6a, + 0xac, 0x5d, 0x50, 0xe8, 0xb9, 0x46, 0x93, 0xae, 0x69, 0x86, 0x56, 0xd1, + 0x63, 0x52, 0x08, 0xb2, 0xea, 0x88, 0x31, 0x8d, 0xaa, 0x4b, 0x9b, 0x8d, + 0x19, 0x8c, 0x64, 0x75, 0xdd, 0x0c, 0x31, 0x79, 0x15, 0x11, 0x83, 0xb3, + 0x07, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x28, 0x34, 0x1a, 0x08, 0xe2, + 0x41, 0x00, 0x48, 0x2c, 0x09, 0x0b, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xfb, + 0xb1, 0x8c, 0xc4, 0x84, 0x96, 0x0f, 0x89, 0x80, 0xc5, 0x30, 0x3c, 0x44, + 0x08, 0x30, 0x85, 0x4c, 0x44, 0x30, 0x26, 0x42, 0x68, 0x31, 0x65, 0x16, + 0x52, 0x30, 0x51, 0x41, 0x2f, 0x31, 0x37, 0xa5, 0x46, 0x3c, 0xc9, 0x10, + 0x1a, 0x30, 0x84, 0x45, 0x2f, 0x3f, 0x98, 0x89, 0x0f, 0x30, 0x31, 0x05, + 0x83, 0x3a, 0x4e, 0x8a, 0xc5, 0x30, 0x2b, 0x82, 0xdf, 0x30, 0x64, 0x00, + 0x72, 0x30, 0x40, 0xc0, 0xc6, 0x30, 0x68, 0xc0, 0x7f, 0x30, 0x06, 0x40, + 0x4c, 0x30, 0xca, 0xc0, 0x49, 0x30, 0x08, 0x80, 0x03, 0x34, 0x16, 0x83, + 0x22, 0x9a, 0x24, 0x6c, 0x40, 0x7a, 0x93, 0xce, 0x5e, 0x60, 0xa9, 0xc2, + 0x84, 0x30, 0x1b, 0x70, 0x52, 0xa7, 0x75, 0xdc, 0x77, 0xc8, 0x89, 0xb4, + 0x25, 0xea, 0xbd, 0x9f, 0x67, 0xff, 0xfb, 0xd4, 0x60, 0x34, 0x00, 0x09, + 0xb2, 0x85, 0x40, 0x86, 0x7f, 0x40, 0x00, 0x5a, 0xd0, 0xa8, 0x60, 0xc7, + 0x88, 0x00, 0x23, 0xb9, 0xd6, 0xfc, 0xbd, 0xfc, 0x00, 0x01, 0x4d, 0xb4, + 0x61, 0xeb, 0x90, 0x50, 0x01, 0x6a, 0x9e, 0xf4, 0x60, 0xc1, 0x85, 0x0c, + 0x02, 0xd1, 0x94, 0x7c, 0xbf, 0xae, 0x9d, 0x35, 0x46, 0xbb, 0x0d, 0x3f, + 0x70, 0xa8, 0xec, 0x5a, 0x7d, 0x51, 0xb3, 0x88, 0xcb, 0x07, 0x69, 0x90, + 0xf5, 0x69, 0x54, 0x07, 0x32, 0xd3, 0x65, 0x54, 0x91, 0x27, 0xea, 0x9e, + 0x3f, 0x77, 0x6d, 0xe3, 0x9f, 0x62, 0x47, 0x7e, 0x4d, 0x94, 0xc4, 0xb2, + 0x82, 0x1e, 0x7d, 0x68, 0x72, 0xaf, 0x06, 0xcd, 0x4e, 0xe1, 0x4b, 0x56, + 0xa4, 0x62, 0x8e, 0x51, 0xba, 0x28, 0xed, 0xe8, 0x0a, 0x31, 0x72, 0x53, + 0x97, 0x21, 0x12, 0x39, 0x65, 0xd9, 0x1d, 0x1c, 0xa2, 0x57, 0xdd, 0xd7, + 0xed, 0x3d, 0x5a, 0x29, 0x03, 0xf5, 0x24, 0xc6, 0x5b, 0x33, 0x4f, 0x97, + 0x33, 0xe6, 0x73, 0x55, 0x65, 0x53, 0x34, 0x16, 0xae, 0xe3, 0x9d, 0x4b, + 0x94, 0xbd, 0x8d, 0x48, 0xa9, 0xa7, 0xe3, 0x57, 0x6b, 0x51, 0x72, 0xa5, + 0x5a, 0x92, 0x89, 0x1c, 0xd5, 0x4c, 0x2d, 0x5e, 0x97, 0x6a, 0x92, 0x8e, + 0x39, 0x2a, 0xd4, 0xbe, 0x57, 0x4d, 0xf4, 0xb2, 0xaa, 0xf3, 0xd3, 0x1b, + 0xed, 0x5a, 0xd9, 0xca, 0x75, 0x1e, 0xbd, 0x1e, 0xa0, 0x8a, 0x57, 0x89, + 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xee, + 0xb5, 0xda, 0x7a, 0x6c, 0xe6, 0xe1, 0xab, 0x56, 0x2f, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0x57, 0x9a, 0xbb, + 0x1e, 0xb9, 0x66, 0x01, 0xa4, 0x99, 0x86, 0x37, 0x73, 0xc3, 0x63, 0x36, + 0x16, 0xfe, 0xb2, 0xf3, 0x35, 0xc6, 0x33, 0x4b, 0xbc, 0xd3, 0x9d, 0x75, + 0x76, 0xbd, 0x6c, 0x6a, 0xdf, 0x93, 0xfa, 0x1d, 0xcb, 0xa3, 0x17, 0xf3, + 0xf7, 0x73, 0x5a, 0xcd, 0xdf, 0x7a, 0x77, 0x47, 0x6e, 0x89, 0x46, 0xe4, + 0xa6, 0xcc, 0x96, 0xd1, 0x79, 0xfb, 0xd6, 0x6d, 0xbd, 0x16, 0xbb, 0x75, + 0x4e, 0x8d, 0x23, 0x18, 0xec, 0xa8, 0xbd, 0x37, 0x54, 0x55, 0x6b, 0x59, + 0xa8, 0xee, 0x8e, 0xbd, 0x46, 0x71, 0x0a, 0x25, 0xcd, 0xff, 0xff, 0xfa, + 0x2b, 0x96, 0x0e, 0x78, 0x73, 0x7f, 0xff, 0xff, 0xbb, 0x1c, 0x12, 0x9c, + 0x73, 0x87, 0x00, 0x25, 0x01, 0x81, 0xa0, 0x0a, 0xa9, 0x81, 0x78, 0x10, + 0x09, 0x85, 0xec, 0x14, 0x69, 0x82, 0x7e, 0x26, 0xd1, 0x8c, 0x7a, 0x49, + 0xd1, 0xa6, 0xc3, 0x14, 0xf1, 0xe1, 0x93, 0x7f, 0x89, 0x92, 0x84, 0x20, + 0x29, 0x87, 0x7c, 0x0b, 0x29, 0x81, 0xa2, 0x0f, 0xd1, 0x83, 0x4e, 0x11, + 0x01, 0x8b, 0xb6, 0x09, 0xd9, 0x84, 0x86, 0x0b, 0x21, 0x81, 0x62, 0x03, + 0x21, 0x81, 0x0a, 0x00, 0xc2, 0x08, 0x4b, 0x4a, 0x8f, 0x89, 0xde, 0x77, + 0x44, 0xe3, 0x87, 0x0c, 0xf6, 0x1b, 0xb6, 0xc1, 0x21, 0x10, 0xe5, 0x87, + 0x4d, 0xad, 0x37, 0x07, 0xe2, 0x2f, 0x11, 0xca, 0x3f, 0x03, 0x4a, 0xe9, + 0xb3, 0x76, 0x29, 0x99, 0xbe, 0x50, 0x3c, 0x7a, 0x34, 0xe4, 0xaf, 0x07, + 0x47, 0x17, 0x7e, 0xb3, 0xee, 0xf9, 0xbc, 0x10, 0xe5, 0xa8, 0xbc, 0xa6, + 0x9e, 0x47, 0xd9, 0xbc, 0x5e, 0x08, 0x93, 0x23, 0x8f, 0x49, 0xeb, 0x61, + 0x1a, 0xa9, 0x66, 0x19, 0xc6, 0x9e, 0xb4, 0x5e, 0x1c, 0xdd, 0x2e, 0x74, + 0x38, 0x5e, 0xb1, 0x53, 0xb4, 0x32, 0x88, 0x1f, 0x19, 0x6d, 0x04, 0xc4, + 0xc5, 0x78, 0x66, 0x9a, 0xc5, 0xd8, 0xb5, 0xde, 0x47, 0xa5, 0x77, 0x66, + 0xe9, 0x33, 0xa1, 0x81, 0xff, 0x39, 0x67, 0xd3, 0x56, 0xa9, 0x31, 0x2a, + 0xe5, 0x5e, 0xdd, 0x91, 0x41, 0x31, 0x1b, 0xd5, 0x37, 0x2a, 0xb7, 0x8d, + 0x69, 0xa8, 0x85, 0xd9, 0xbb, 0x96, 0x6c, 0xda, 0x8c, 0x50, 0xca, 0x66, + 0xab, 0x4f, 0x46, 0xa7, 0x25, 0x37, 0xe8, 0x29, 0xea, 0x67, 0x5a, 0xe4, + 0xc5, 0xfe, 0x51, 0xd9, 0xa6, 0x87, 0xfb, 0x6e, 0x39, 0xf5, 0xad, 0xc8, + 0xef, 0x4f, 0xea, 0xbd, 0xf9, 0xdc, 0xe5, 0x53, 0x34, 0xb5, 0xf5, 0x84, + 0xf6, 0x12, 0x9b, 0xd7, 0xb7, 0xdd, 0xe7, 0x3f, 0x3f, 0x5e, 0x39, 0x95, + 0x79, 0xac, 0xab, 0xcf, 0xca, 0xab, 0xbd, 0x4f, 0xae, 0xe9, 0xa1, 0x98, + 0x7e, 0x4a, 0xec, 0xbf, 0x2f, 0xdb, 0x22, 0xa1, 0x53, 0xd4, 0xed, 0x2d, + 0xd3, 0xa7, 0x7e, 0x5d, 0xb5, 0x56, 0x4b, 0xb6, 0x92, 0x86, 0xcc, 0xa4, + 0x00, 0x06, 0xa9, 0x9b, 0x8d, 0x10, 0x00, 0x1d, 0x6b, 0x29, 0x6e, 0x3a, + 0xdf, 0xfb, 0xe6, 0xfa, 0x12, 0x5f, 0x23, 0x08, 0x4f, 0x16, 0x53, 0x94, + 0x0c, 0x80, 0x01, 0x93, 0x75, 0xb2, 0x55, 0x4a, 0x99, 0xf9, 0x15, 0x23, + 0x56, 0xa5, 0x91, 0x4e, 0x66, 0xdb, 0xa9, 0x35, 0x64, 0x2b, 0x95, 0xba, + 0xfb, 0x25, 0x1d, 0xca, 0x96, 0xd7, 0xff, 0x97, 0xbf, 0xb7, 0xff, 0xff, + 0xff, 0xfd, 0xbf, 0xfd, 0xb6, 0xd9, 0xa9, 0xac, 0xaf, 0x56, 0x72, 0xd9, + 0x5c, 0x64, 0xcb, 0x22, 0x74, 0xc6, 0x8c, 0x83, 0x04, 0x9c, 0xd3, 0x2a, + 0x1a, 0x40, 0x03, 0x00, 0x30, 0x00, 0x63, 0x00, 0x20, 0x0a, 0x53, 0x02, + 0xa8, 0x07, 0xa3, 0x01, 0xb4, 0x16, 0x53, 0x08, 0xe0, 0x2e, 0x23, 0x1a, + 0x25, 0x3d, 0xb3, 0xdb, 0xdd, 0x2a, 0x03, 0x1a, 0x3c, 0x32, 0xd3, 0x09, + 0xa0, 0x1d, 0x63, 0x04, 0xb8, 0x16, 0xc3, 0x05, 0x24, 0x19, 0xb3, 0x08, + 0xd0, 0x02, 0x93, 0x04, 0x08, 0x06, 0x03, 0x00, 0x9c, 0x03, 0x12, 0xcb, + 0x2b, 0x1c, 0x10, 0x88, 0xe6, 0xff, 0xfb, 0xd4, 0x60, 0x20, 0x88, 0xd7, + 0x55, 0x70, 0x41, 0x13, 0xfa, 0x7b, 0x70, 0x4f, 0xee, 0x08, 0x31, 0x20, + 0x22, 0x6e, 0x19, 0xed, 0xc1, 0x0d, 0x4f, 0xe9, 0x6d, 0xc1, 0x56, 0xb7, + 0xa0, 0xc5, 0x80, 0x95, 0xb9, 0x33, 0xd0, 0x30, 0x0b, 0x29, 0xb3, 0x61, + 0xca, 0x96, 0xea, 0x3d, 0x22, 0xad, 0x19, 0x49, 0xd1, 0x50, 0x4d, 0x76, + 0xbd, 0x16, 0x11, 0x7a, 0xb2, 0xa8, 0x7a, 0x6a, 0x7b, 0xa3, 0xa1, 0x49, + 0x00, 0x5b, 0x8a, 0x58, 0xd4, 0x5d, 0xe4, 0x9d, 0x99, 0x8b, 0x63, 0x42, + 0x14, 0x14, 0xec, 0xc5, 0x28, 0xa6, 0x65, 0x8d, 0xce, 0x72, 0x3e, 0x5c, + 0xf0, 0x7a, 0x8c, 0x08, 0xd0, 0xf7, 0x0f, 0x12, 0xb8, 0xb3, 0xf8, 0x1b, + 0x2f, 0x8c, 0x71, 0x6e, 0xfa, 0x04, 0x1d, 0xda, 0x16, 0x71, 0x63, 0xf1, + 0xfb, 0xec, 0x62, 0x27, 0x9f, 0x17, 0xde, 0xd4, 0xf1, 0x22, 0x63, 0x7e, + 0xfa, 0xc3, 0xad, 0xfc, 0x3c, 0xb6, 0xb5, 0x9d, 0xf6, 0xfa, 0xcf, 0x13, + 0x12, 0xc4, 0xac, 0x3f, 0xf3, 0x88, 0x1a, 0xce, 0x1e, 0xc4, 0x8d, 0x4d, + 0xe6, 0xf1, 0xef, 0x67, 0xd9, 0xc6, 0x5c, 0x27, 0x8d, 0x5d, 0xcf, 0x16, + 0x1c, 0xda, 0x9a, 0x97, 0x93, 0x3b, 0xf0, 0xe2, 0x7f, 0x1e, 0xd0, 0xbc, + 0xdb, 0xbd, 0x25, 0xfd, 0xdd, 0x7d, 0x75, 0x15, 0xed, 0x6d, 0x16, 0x35, + 0x2f, 0x8f, 0x1b, 0x4f, 0xde, 0x44, 0x79, 0x3b, 0x9e, 0xaa, 0xe1, 0x58, + 0x8c, 0x8f, 0x71, 0x05, 0xd2, 0xdb, 0x74, 0x80, 0x0b, 0x8b, 0x44, 0x36, + 0xe9, 0x50, 0xc4, 0x84, 0x95, 0xa5, 0x81, 0xc5, 0x93, 0x22, 0x19, 0x6c, + 0x7b, 0xad, 0x7c, 0xce, 0x4c, 0xa3, 0x52, 0xe9, 0x6b, 0xad, 0x2f, 0x99, + 0xef, 0xbf, 0x7f, 0xef, 0x6b, 0x5d, 0x91, 0x59, 0x36, 0xd5, 0x7a, 0xd1, + 0x7d, 0x9e, 0x96, 0xab, 0xf6, 0xa7, 0xff, 0x65, 0x4a, 0x4a, 0xfa, 0x7f, + 0x73, 0x6a, 0xea, 0xb7, 0x6d, 0x18, 0x8c, 0x6a, 0x65, 0xa3, 0x33, 0x55, + 0x27, 0x56, 0x54, 0x96, 0x80, 0xd0, 0xa1, 0x9d, 0x47, 0x01, 0x87, 0x2c, + 0x10, 0x08, 0x70, 0x0d, 0xbc, 0xd2, 0x00, 0x03, 0x00, 0xfc, 0x03, 0xa3, + 0x00, 0x80, 0x01, 0xf3, 0x01, 0x84, 0x07, 0x03, 0x04, 0x00, 0x0c, 0x73, + 0x05, 0x74, 0x1b, 0x83, 0x11, 0xb0, 0xb2, 0x13, 0x91, 0x59, 0x04, 0x03, + 0x12, 0xd8, 0x1e, 0x33, 0x04, 0x14, 0x03, 0xc3, 0x00, 0x20, 0x08, 0x53, + 0x02, 0x9c, 0x0e, 0x83, 0x07, 0x30, 0x08, 0xe3, 0x02, 0x50, 0x03, 0xb1, + 0xa0, 0x08, 0xd1, 0x15, 0x83, 0x32, 0xc6, 0x86, 0x08, 0xdc, 0x65, 0x80, + 0x4a, 0xf5, 0x8d, 0x5f, 0xb2, 0xad, 0xf6, 0xac, 0x44, 0xda, 0x68, 0xb2, + 0x1c, 0x3b, 0xd9, 0x24, 0xdc, 0xbe, 0xf3, 0xf9, 0x8c, 0xbe, 0xe1, 0x20, + 0x94, 0x02, 0xb7, 0xca, 0xd9, 0x00, 0x36, 0x1c, 0x8b, 0x5e, 0xf7, 0x47, + 0xea, 0x56, 0x83, 0x57, 0xdd, 0x3d, 0xdb, 0x71, 0x49, 0xf7, 0xde, 0x10, + 0xae, 0xd6, 0x0f, 0x21, 0x65, 0xad, 0xec, 0x62, 0x08, 0xc3, 0x53, 0x5c, + 0x13, 0xd6, 0x3b, 0x46, 0x29, 0x2b, 0x64, 0xd6, 0xb1, 0x54, 0x06, 0x1b, + 0xb6, 0xba, 0x69, 0x96, 0xda, 0x35, 0x5e, 0x9f, 0xb6, 0x9d, 0xb6, 0xf8, + 0x39, 0x5d, 0x56, 0xb3, 0x9d, 0x55, 0x98, 0xdb, 0x69, 0xb7, 0x0f, 0x86, + 0xcb, 0x73, 0xfc, 0xdd, 0x6c, 0xae, 0xad, 0xd3, 0x54, 0xcd, 0xdf, 0xd7, + 0x74, 0x72, 0x1f, 0x73, 0x5c, 0xc3, 0x66, 0x14, 0xa6, 0xf4, 0xce, 0xb6, + 0xb5, 0x90, 0xdb, 0xa9, 0x86, 0xb3, 0xdd, 0x51, 0x31, 0x08, 0xe7, 0x9f, + 0x74, 0xbe, 0xea, 0xbc, 0xd7, 0x3e, 0xe0, 0x78, 0xe5, 0xd8, 0xd6, 0xad, + 0x9f, 0x79, 0x9e, 0x1c, 0xcf, 0x99, 0xec, 0x24, 0x86, 0x0a, 0x22, 0x64, + 0x32, 0x26, 0x91, 0x02, 0x88, 0x6d, 0xb2, 0x7b, 0xa6, 0xb8, 0xe3, 0xf0, + 0xc1, 0x4f, 0x56, 0xbe, 0xec, 0xdf, 0xb6, 0xae, 0xcf, 0x47, 0x6b, 0x7d, + 0x96, 0xef, 0xe7, 0xad, 0xe5, 0xbb, 0xcf, 0x6e, 0x8a, 0xbf, 0xf4, 0x5f, + 0xbe, 0x75, 0x27, 0xee, 0x8d, 0xbe, 0x57, 0xea, 0x5a, 0xaa, 0xd1, 0x9e, + 0x97, 0xf2, 0x6d, 0x2b, 0xce, 0x85, 0xcc, 0xca, 0xe8, 0xe6, 0x64, 0x0d, + 0x21, 0x8a, 0x03, 0x0f, 0x63, 0x09, 0x22, 0x1a, 0x00, 0x2d, 0x44, 0x40, + 0x00, 0x18, 0x03, 0x00, 0x27, 0x98, 0x0b, 0x80, 0x30, 0x18, 0x10, 0x60, + 0x7b, 0x98, 0x2e, 0xc1, 0x0d, 0x18, 0x41, 0x22, 0x69, 0x98, 0xce, 0xcf, + 0x06, 0x1e, 0x0d, 0x10, 0xba, 0x98, 0xec, 0xc2, 0x81, 0x18, 0x53, 0xa1, + 0x41, 0x98, 0x33, 0xe0, 0xc8, 0x98, 0x3d, 0xc0, 0xba, 0x18, 0x7e, 0xa0, + 0x24, 0x18, 0x33, 0x20, 0x2b, 0x81, 0x80, 0x95, 0x28, 0x00, 0x75, 0x3c, + 0x47, 0x43, 0x92, 0xf0, 0xcd, 0xd9, 0x03, 0xd9, 0x18, 0xfc, 0x0b, 0x03, + 0xb6, 0x0a, 0x3b, 0x4c, 0x42, 0x86, 0x8e, 0x71, 0xaf, 0x00, 0x8d, 0xe2, + 0xb2, 0x0c, 0x99, 0x93, 0xe4, 0xf3, 0x3f, 0x8f, 0x2c, 0xec, 0x6a, 0x9c, + 0x64, 0x7c, 0xa0, 0x1d, 0x97, 0xb8, 0xaf, 0xcc, 0x09, 0x58, 0x98, 0x5a, + 0x03, 0x72, 0xa1, 0x10, 0x7c, 0x7d, 0x19, 0x2b, 0x5c, 0x7f, 0x33, 0xb4, + 0xf0, 0x4f, 0xb9, 0xcc, 0xb7, 0x2b, 0x68, 0xd4, 0xd3, 0x6d, 0xe8, 0xb8, + 0x6b, 0x60, 0x96, 0x3d, 0x9f, 0x99, 0x31, 0xab, 0x35, 0xa1, 0xfb, 0xd5, + 0xca, 0x36, 0xd1, 0x0c, 0xb9, 0x87, 0x03, 0xc7, 0xcc, 0x4c, 0xda, 0xd0, + 0x8c, 0x0b, 0x6b, 0x31, 0xa7, 0xcd, 0x63, 0x4f, 0x34, 0xf3, 0xb9, 0xd7, + 0x76, 0xbd, 0xbf, 0xdd, 0xf5, 0x0e, 0x1c, 0xfe, 0xd7, 0x60, 0xa6, 0x5f, + 0xcb, 0x1d, 0x96, 0x92, 0x39, 0xff, 0xfb, 0xd4, 0x60, 0x5e, 0x8d, 0x87, + 0xac, 0x6f, 0x41, 0x3b, 0xfb, 0x7b, 0x72, 0x56, 0xed, 0xf8, 0x31, 0x4c, + 0x65, 0x6e, 0x19, 0xbd, 0xbd, 0x0a, 0x4f, 0xed, 0x0d, 0xc9, 0x64, 0x37, + 0xa1, 0x5c, 0xb3, 0x09, 0xb9, 0x53, 0x19, 0x85, 0xa9, 0xa0, 0xd6, 0x4d, + 0x29, 0xe6, 0xd4, 0x8f, 0xf7, 0x69, 0xe2, 0xc6, 0xd4, 0xb2, 0xb3, 0x45, + 0xae, 0x7f, 0xf4, 0xd6, 0x3e, 0x22, 0x3d, 0xc6, 0xe2, 0x4b, 0xbb, 0xee, + 0x15, 0x77, 0x7a, 0x6e, 0x93, 0x6a, 0x68, 0x11, 0xe3, 0x57, 0x12, 0x59, + 0xf6, 0xde, 0xe5, 0x79, 0xae, 0xcc, 0x94, 0x95, 0x86, 0x22, 0x95, 0xeb, + 0x58, 0xe9, 0x00, 0x0b, 0xa8, 0xae, 0x68, 0x78, 0xd5, 0x96, 0xec, 0x95, + 0xd6, 0xe8, 0xb6, 0xe4, 0x0f, 0x3b, 0x4a, 0xac, 0x7f, 0x4a, 0x78, 0xf0, + 0xfb, 0xd7, 0xbf, 0x3f, 0x2f, 0xe1, 0x65, 0xcd, 0xa2, 0x7e, 0x9d, 0x3e, + 0xd9, 0x56, 0xb4, 0xbf, 0xee, 0x66, 0xf2, 0xab, 0x69, 0x65, 0xe9, 0x7d, + 0x4f, 0x57, 0xa6, 0xfd, 0x13, 0xe8, 0xaf, 0x77, 0x56, 0xf7, 0xf4, 0xd7, + 0x7a, 0x3f, 0xbd, 0x58, 0xd6, 0xa5, 0x53, 0xf2, 0x57, 0x55, 0x19, 0x52, + 0x39, 0x1c, 0x79, 0xc5, 0xc7, 0xbb, 0x99, 0xc4, 0x4e, 0x1c, 0x51, 0xce, + 0x38, 0x5c, 0x60, 0x44, 0xb7, 0xc9, 0x80, 0x98, 0x02, 0x59, 0x81, 0x02, + 0x03, 0x80, 0x38, 0x15, 0xd3, 0x04, 0x14, 0x08, 0x03, 0x08, 0xe8, 0x14, + 0xd3, 0x1b, 0x1c, 0xa7, 0x43, 0xde, 0x04, 0xf7, 0x93, 0x1d, 0xa4, 0x10, + 0xa3, 0x07, 0xf8, 0x08, 0x83, 0x01, 0xa8, 0x11, 0x83, 0x01, 0x30, 0x1c, + 0x33, 0x06, 0x7c, 0x0c, 0x93, 0x01, 0xdc, 0x06, 0xe3, 0x00, 0x38, 0x02, + 0x33, 0x00, 0xe0, 0x00, 0xa4, 0x85, 0x1d, 0x06, 0x41, 0xc3, 0x31, 0xd9, + 0x01, 0x6a, 0xaf, 0x68, 0xac, 0x8a, 0x01, 0x9e, 0xc5, 0xee, 0xa3, 0xd6, + 0x4d, 0xcc, 0x98, 0x9f, 0x28, 0x72, 0xe5, 0xa5, 0xf9, 0xd7, 0x89, 0xb7, + 0x86, 0xe5, 0x36, 0x11, 0x75, 0xab, 0xcb, 0x21, 0x37, 0x1e, 0xa9, 0xc5, + 0x79, 0x5a, 0x4f, 0x6a, 0x8e, 0x3a, 0xd3, 0x73, 0x9e, 0xe4, 0xdd, 0xe6, + 0xc1, 0x3d, 0x50, 0x61, 0xa0, 0xe8, 0x30, 0x45, 0xe2, 0x2b, 0x1c, 0xcc, + 0x37, 0x24, 0x3e, 0xf1, 0xeb, 0x52, 0xad, 0x2a, 0x41, 0x47, 0x52, 0xde, + 0x9a, 0xf0, 0xd2, 0xf0, 0xac, 0x35, 0x1e, 0x31, 0xd5, 0xc0, 0x5a, 0xe2, + 0x78, 0xae, 0x56, 0x46, 0x07, 0x58, 0xe9, 0x2e, 0xe2, 0x9e, 0x0a, 0xb6, + 0x1c, 0xd1, 0x4c, 0x76, 0xad, 0xbc, 0x9b, 0x6d, 0x91, 0x33, 0x2b, 0x54, + 0xf9, 0x13, 0x13, 0x4b, 0xcb, 0xa3, 0xbc, 0xa7, 0x35, 0xd5, 0xca, 0x69, + 0xae, 0x3b, 0xa2, 0x52, 0x1b, 0x1f, 0x63, 0x95, 0x5a, 0x25, 0xc6, 0x8a, + 0x8d, 0x18, 0x41, 0x27, 0x51, 0x42, 0x06, 0xa4, 0x8d, 0x10, 0x00, 0x1b, + 0xb8, 0xb7, 0xaf, 0x12, 0xfa, 0x77, 0xcd, 0xbf, 0xfd, 0xb3, 0xc7, 0x9d, + 0xd6, 0xdd, 0xcf, 0xf3, 0xb9, 0xce, 0x28, 0x97, 0x47, 0x0d, 0xf4, 0x54, + 0xcb, 0xc5, 0xe6, 0x7b, 0x59, 0x50, 0xc7, 0x3b, 0xcb, 0x32, 0x8a, 0x3a, + 0x22, 0x29, 0x6d, 0x3d, 0xdc, 0x99, 0xed, 0xa1, 0x3b, 0xdd, 0xf6, 0xe4, + 0x3e, 0x94, 0x57, 0xfd, 0x3b, 0xff, 0x62, 0x69, 0xfb, 0xff, 0xaa, 0xf6, + 0x35, 0x7d, 0x9d, 0x3f, 0xf7, 0x5f, 0xb7, 0xd6, 0xd9, 0xeb, 0x2a, 0x16, + 0xc7, 0xbc, 0x54, 0x32, 0x18, 0xa1, 0x12, 0x14, 0x86, 0x30, 0xc8, 0x53, + 0x10, 0x53, 0x51, 0x4c, 0xcb, 0x8e, 0x4e, 0x0b, 0x8c, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x23, 0x40, 0xc4, 0x30, 0x02, 0x81, 0x87, 0x30, 0x0d, 0x02, + 0x42, 0x30, 0x30, 0x43, 0x61, 0x30, 0x52, 0x87, 0x8c, 0x30, 0xc8, 0x6a, + 0x85, 0x36, 0xe7, 0x7a, 0x6a, 0x31, 0x59, 0x47, 0xa1, 0x30, 0x9f, 0x83, + 0x56, 0x30, 0x89, 0x01, 0x8e, 0x30, 0xbd, 0x41, 0x7d, 0x31, 0xa3, 0x80, + 0x13, 0x30, 0x9b, 0x80, 0x22, 0x30, 0x1e, 0xc0, 0x1a, 0x03, 0x02, 0xf2, + 0x24, 0x01, 0x26, 0x59, 0x83, 0xc0, 0x41, 0x80, 0x33, 0x88, 0x34, 0x2d, + 0x4a, 0x48, 0xeb, 0xec, 0xb6, 0x29, 0xa9, 0xd3, 0xb6, 0x41, 0x2f, 0xad, + 0x32, 0x10, 0x26, 0x45, 0x65, 0x16, 0x22, 0x73, 0x38, 0xd1, 0x39, 0xf4, + 0x74, 0x38, 0x27, 0x7c, 0xe4, 0xb6, 0x63, 0x72, 0xb8, 0xc3, 0x41, 0x6c, + 0x53, 0xf7, 0xbb, 0x71, 0xbf, 0xbf, 0x7e, 0x93, 0x2a, 0x48, 0xdd, 0xf3, + 0xda, 0xd9, 0x8c, 0x2b, 0xe2, 0x7c, 0x79, 0x53, 0xef, 0x33, 0x5b, 0x3d, + 0x0c, 0x46, 0x5e, 0xcf, 0xff, 0x3f, 0xe9, 0x8f, 0x23, 0x58, 0x7f, 0x77, + 0x17, 0xfb, 0x97, 0x79, 0x5d, 0xce, 0xc7, 0x9b, 0x23, 0xa2, 0x55, 0xae, + 0xc2, 0xe3, 0xd0, 0xd2, 0x06, 0x19, 0xe9, 0x8c, 0x94, 0xed, 0xdd, 0x66, + 0xeb, 0xf0, 0xb5, 0xfe, 0xce, 0x52, 0xdb, 0x55, 0xfc, 0xe3, 0xd6, 0xc3, + 0xe8, 0x4a, 0x71, 0xbe, 0xc1, 0xb4, 0xe2, 0xea, 0xc0, 0xeb, 0x0f, 0x41, + 0x8f, 0xaf, 0x95, 0xcd, 0xbf, 0xff, 0xd1, 0x7c, 0x31, 0xad, 0x8a, 0x8b, + 0xd2, 0xad, 0xd5, 0xab, 0xf9, 0xd6, 0xa0, 0x65, 0xf7, 0x54, 0x64, 0xab, + 0xc7, 0x6b, 0x48, 0xeb, 0x90, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x08, 0xd7, + 0x68, 0x70, 0x40, 0x03, 0xfd, 0x63, 0x70, 0x6d, 0xae, 0x08, 0x10, 0x4c, + 0x65, 0x6e, 0x12, 0x68, 0xaf, 0x1b, 0xaf, 0xef, 0x09, 0x81, 0xc2, 0x38, + 0x20, 0x05, 0x81, 0xa1, 0xba, 0x3a, 0xbe, 0x0e, 0x5e, 0xdd, 0x93, 0x1d, + 0xa0, 0xaf, 0x8d, 0x51, 0x75, 0x38, 0xec, 0xa0, 0xdc, 0x28, 0x00, 0x32, + 0x2a, 0x9a, 0x4c, 0xb5, 0xb1, 0xa2, 0xcf, 0xa2, 0x78, 0xeb, 0x84, 0x52, + 0x3a, 0x58, 0xa3, 0x41, 0x06, 0x91, 0xd6, 0x31, 0xae, 0xf7, 0x69, 0xcf, + 0xee, 0x97, 0x63, 0x33, 0xff, 0x25, 0x9d, 0x1d, 0x52, 0xce, 0x55, 0x33, + 0x4b, 0x64, 0x55, 0x75, 0x35, 0x1e, 0xfb, 0x2e, 0xa8, 0xa4, 0x67, 0x4f, + 0x47, 0xe5, 0xbb, 0xae, 0xdb, 0x49, 0xd5, 0x15, 0x4c, 0xec, 0x8f, 0x45, + 0x79, 0xaa, 0x59, 0x94, 0xca, 0x8e, 0x5a, 0xae, 0xe5, 0x43, 0x31, 0xe4, + 0x54, 0x6e, 0x87, 0x47, 0x53, 0xd4, 0xec, 0x55, 0x72, 0xca, 0xe7, 0x3d, + 0x0c, 0xca, 0x39, 0x8f, 0x28, 0x88, 0x71, 0xc4, 0x03, 0xe2, 0x23, 0x18, + 0x50, 0x3c, 0x20, 0x31, 0xc2, 0xc6, 0xb0, 0xc1, 0x31, 0x41, 0x70, 0xe0, + 0x00, 0x5d, 0xfe, 0x91, 0x22, 0x01, 0xc0, 0x0d, 0x04, 0x00, 0x68, 0x0e, + 0x01, 0x88, 0x1c, 0x05, 0x01, 0x81, 0x9a, 0x00, 0xa9, 0x84, 0xbc, 0x0a, + 0xa1, 0xaa, 0x9c, 0x08, 0x69, 0x85, 0xa8, 0x02, 0x11, 0x81, 0x92, 0x02, + 0xc9, 0x80, 0x72, 0x03, 0x59, 0x87, 0x44, 0x18, 0x49, 0xd0, 0xc8, 0xc9, + 0x20, 0x32, 0x9a, 0xc7, 0x17, 0xdc, 0x20, 0xc1, 0x0a, 0xc6, 0x91, 0xe4, + 0x19, 0x7e, 0x7f, 0xb6, 0xb1, 0x8c, 0xba, 0xc3, 0xc0, 0x62, 0x60, 0xae, + 0xb5, 0x4e, 0x47, 0x67, 0xfb, 0x01, 0xc2, 0x32, 0xc2, 0xe1, 0x21, 0x68, + 0x68, 0x67, 0x26, 0x1f, 0xd7, 0xfd, 0x3c, 0xa1, 0xea, 0x4b, 0x9d, 0xb0, + 0xf2, 0xd8, 0xd5, 0x9b, 0x39, 0xb3, 0xf9, 0xec, 0xb5, 0xfd, 0xed, 0xfe, + 0xe7, 0x52, 0xce, 0x7b, 0xb9, 0xae, 0x5f, 0xfb, 0x18, 0x5b, 0xff, 0xba, + 0x5c, 0x2e, 0x0e, 0x99, 0xd5, 0x97, 0x70, 0xf7, 0xad, 0x73, 0xa8, 0x5e, + 0xe3, 0x8c, 0x4f, 0xa9, 0x9f, 0xac, 0xef, 0xff, 0xfb, 0xf7, 0xee, 0x14, + 0x79, 0xf4, 0xd4, 0x80, 0xd6, 0xc5, 0x6a, 0xda, 0x97, 0xd4, 0xce, 0xc6, + 0x51, 0x3a, 0x5a, 0x6d, 0x5d, 0xf7, 0x6e, 0xe2, 0xeb, 0x94, 0xf6, 0xce, + 0xec, 0xf8, 0x76, 0x40, 0x94, 0x04, 0x4b, 0x99, 0x31, 0xa5, 0x86, 0x9c, + 0x26, 0xfd, 0x0a, 0x9e, 0xb5, 0xd4, 0xfd, 0x37, 0x71, 0x70, 0x9c, 0xa2, + 0xf3, 0x34, 0xbd, 0x37, 0x3d, 0xf2, 0xf3, 0xd3, 0xfd, 0xf3, 0xef, 0x7a, + 0xa3, 0xd7, 0x1c, 0xd3, 0xaf, 0x0b, 0x5a, 0x6b, 0x09, 0xcf, 0x31, 0xef, + 0x51, 0xd4, 0x75, 0x54, 0x8d, 0xf3, 0xad, 0xc4, 0x70, 0xbd, 0xfb, 0x35, + 0x52, 0xde, 0xdb, 0xd3, 0xec, 0xaa, 0xf1, 0xfe, 0x93, 0x3d, 0x37, 0x39, + 0x72, 0x20, 0xd9, 0xd2, 0xd0, 0x98, 0x28, 0x52, 0x83, 0xa1, 0xe7, 0x08, + 0x87, 0x92, 0x1f, 0x58, 0xf2, 0x68, 0xa1, 0xc9, 0x88, 0x29, 0xa8, 0xa6, + 0x65, 0xc7, 0x27, 0x05, 0xc6, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x2b, 0x80, 0xc3, 0x30, 0x2d, 0xc0, 0xee, 0x30, 0x22, 0x01, + 0xc5, 0x30, 0x52, 0xc3, 0x44, 0x30, 0x63, 0x07, 0x69, 0x31, 0x26, 0x6b, + 0x0a, 0x39, 0xbd, 0x79, 0x3f, 0x31, 0x48, 0x47, 0x68, 0x30, 0x02, 0x42, + 0xa7, 0x30, 0x68, 0x40, 0x39, 0x30, 0xb5, 0x81, 0x61, 0x31, 0xa1, 0xc0, + 0x81, 0x30, 0x9e, 0x40, 0x50, 0x30, 0x20, 0x00, 0x48, 0x01, 0x01, 0x36, + 0x18, 0x1c, 0x06, 0x8b, 0xc8, 0x02, 0xe6, 0x80, 0xb1, 0x1d, 0x74, 0x14, + 0x24, 0x11, 0x57, 0x4f, 0xcb, 0x4c, 0xb1, 0x82, 0xea, 0x75, 0xa8, 0xb0, + 0x8e, 0x8c, 0x07, 0x23, 0x34, 0x16, 0x27, 0x27, 0xb7, 0x61, 0xa0, 0x4c, + 0xd7, 0xb8, 0x93, 0xaf, 0x74, 0xf5, 0x0c, 0xb9, 0xb2, 0x4c, 0xbb, 0x4f, + 0x1c, 0x82, 0x43, 0x8e, 0x2f, 0x35, 0x4b, 0x93, 0xd7, 0xe8, 0xa5, 0x2d, + 0x00, 0xf4, 0x32, 0xe6, 0x27, 0x49, 0x74, 0x4e, 0x83, 0x93, 0x2c, 0xd6, + 0xd2, 0xe8, 0x97, 0x6d, 0x0b, 0x69, 0xb2, 0x4f, 0x48, 0xae, 0x44, 0x78, + 0x9a, 0xe9, 0x14, 0xfa, 0x29, 0x72, 0x08, 0x83, 0x88, 0x90, 0xab, 0x23, + 0x89, 0xb7, 0x25, 0x1a, 0x37, 0x40, 0x6f, 0xa3, 0x9b, 0x36, 0xa1, 0x84, + 0x99, 0xeb, 0x4c, 0x60, 0xcb, 0x1c, 0xa5, 0x13, 0x90, 0xcd, 0x3c, 0x6d, + 0x12, 0xca, 0xbc, 0xff, 0x82, 0x29, 0xac, 0x5d, 0x54, 0x2c, 0xb4, 0x81, + 0x35, 0x4e, 0xaa, 0xba, 0x68, 0x0d, 0xce, 0x4b, 0xce, 0x52, 0x52, 0x59, + 0x0f, 0x05, 0xf4, 0xe4, 0x7a, 0x45, 0xe0, 0xa2, 0x50, 0x97, 0x88, 0xa1, + 0x6a, 0xcd, 0x22, 0x5c, 0x88, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x08, 0xd7, + 0x71, 0x70, 0x40, 0x03, 0xfc, 0x4b, 0x70, 0x72, 0x0e, 0x08, 0x00, 0x60, + 0x68, 0x6e, 0x16, 0xc5, 0xc1, 0x10, 0xef, 0xec, 0x4d, 0xc1, 0xca, 0xb7, + 0xe0, 0x05, 0x91, 0x95, 0xb8, 0xf1, 0x62, 0x74, 0xb1, 0xd1, 0x42, 0x5e, + 0x25, 0xe4, 0x65, 0xa8, 0x23, 0x36, 0x27, 0x0e, 0x09, 0x50, 0x90, 0x82, + 0xfe, 0xd9, 0xf1, 0x95, 0x44, 0x69, 0x73, 0xa6, 0x9b, 0xdd, 0xdb, 0x1c, + 0xd7, 0x88, 0x36, 0x0f, 0xa9, 0x19, 0x98, 0x60, 0x92, 0x5a, 0x08, 0xc8, + 0x73, 0xe6, 0x7e, 0xbe, 0x5b, 0x77, 0x29, 0x09, 0xbb, 0x9b, 0x6b, 0xf1, + 0x5a, 0xc6, 0xcd, 0x3f, 0x53, 0x55, 0x53, 0xba, 0x4f, 0xff, 0x12, 0x9a, + 0xad, 0x35, 0xd7, 0x6b, 0x5f, 0x9b, 0x37, 0x5f, 0x75, 0xf5, 0x8f, 0x4d, + 0xbe, 0x1a, 0xe9, 0xa9, 0xb9, 0xa9, 0xf1, 0xb1, 0xea, 0xde, 0xd0, 0x9f, + 0xd5, 0x57, 0xfd, 0xdd, 0x2a, 0x73, 0x7e, 0xf7, 0xeb, 0x75, 0x3c, 0xac, + 0xcd, 0x4f, 0x2b, 0x4e, 0x90, 0xab, 0xe3, 0xd0, 0xc1, 0x61, 0x82, 0x02, + 0x8f, 0x2b, 0xa5, 0x11, 0xca, 0x73, 0xc4, 0xee, 0x0d, 0x4b, 0x1a, 0x83, + 0x81, 0xdc, 0xb0, 0x50, 0x1f, 0x85, 0xdd, 0x52, 0x00, 0x02, 0xb0, 0x0a, + 0x81, 0x40, 0x1f, 0x98, 0x0c, 0x80, 0x21, 0x18, 0x1b, 0xa0, 0x4b, 0x98, + 0x2f, 0x40, 0xb4, 0x18, 0x8d, 0xe4, 0x26, 0x9c, 0xac, 0xa5, 0xf3, 0x18, + 0x9f, 0xa0, 0xd6, 0x98, 0x32, 0xc0, 0x88, 0x18, 0x16, 0x80, 0x73, 0x18, + 0x13, 0xe0, 0x96, 0x98, 0x29, 0x00, 0x2e, 0x98, 0x0c, 0x00, 0x1e, 0x0d, + 0x00, 0x16, 0x24, 0x00, 0xf3, 0x2f, 0x6f, 0x0b, 0x8e, 0x20, 0xb8, 0x01, + 0x19, 0x44, 0x6b, 0x5d, 0x89, 0x73, 0xe0, 0xbd, 0x6f, 0x1a, 0xc1, 0x60, + 0xbb, 0xd6, 0xed, 0xca, 0x1d, 0x68, 0xfb, 0xbd, 0x1f, 0x97, 0xd2, 0x45, + 0x89, 0x41, 0x57, 0xf4, 0x3d, 0x02, 0x3b, 0x30, 0xbb, 0x64, 0xc3, 0x29, + 0xeb, 0x06, 0xc4, 0xf5, 0x24, 0x50, 0x1b, 0x9f, 0xb9, 0x54, 0x6d, 0x4a, + 0x19, 0x88, 0xee, 0xca, 0xa1, 0x08, 0x53, 0x09, 0x0a, 0xa4, 0x12, 0xc2, + 0x84, 0x85, 0x74, 0x0c, 0xc9, 0x32, 0x0c, 0x75, 0x08, 0xd7, 0xb7, 0xe6, + 0x25, 0xd1, 0xae, 0xd4, 0x56, 0x76, 0xe6, 0xa3, 0xf4, 0xe4, 0x43, 0x26, + 0xab, 0x66, 0xf2, 0xa5, 0x28, 0x69, 0x73, 0x33, 0xdd, 0x56, 0xed, 0xaf, + 0x3e, 0x76, 0xb9, 0xb6, 0xf4, 0x6a, 0xd3, 0x4e, 0x94, 0x45, 0x31, 0x1d, + 0xdd, 0xd1, 0x9d, 0x8e, 0xc4, 0x1c, 0xc0, 0x90, 0x1b, 0x36, 0x5b, 0xa0, + 0xc2, 0x47, 0xf6, 0x29, 0x2f, 0xe7, 0x97, 0x73, 0xb1, 0x41, 0x1b, 0x98, + 0x86, 0x62, 0x43, 0xea, 0x91, 0xf7, 0x90, 0x38, 0x42, 0x12, 0xc6, 0x00, + 0xa5, 0x37, 0x6d, 0x27, 0x69, 0x28, 0xae, 0xf9, 0xe7, 0x75, 0xd1, 0x92, + 0x59, 0x4a, 0xc7, 0x46, 0x66, 0x4a, 0x76, 0x99, 0xd6, 0x88, 0x87, 0x67, + 0x52, 0xa1, 0xdd, 0x18, 0xd4, 0x7b, 0x18, 0xa7, 0xb7, 0x23, 0xb2, 0x56, + 0x74, 0x95, 0x26, 0x73, 0xcc, 0xeb, 0x3e, 0x72, 0x2b, 0x16, 0x7a, 0x1e, + 0xef, 0x54, 0x3b, 0xdd, 0xdd, 0x1d, 0xaf, 0x4b, 0xae, 0x86, 0x4a, 0x3a, + 0xd5, 0x1e, 0x67, 0x2c, 0xe2, 0x6e, 0xc4, 0x72, 0x8e, 0x20, 0x08, 0x28, + 0x70, 0xb8, 0xbb, 0x08, 0x83, 0x0b, 0x0a, 0x06, 0x81, 0xc5, 0x43, 0xa3, + 0x90, 0x3c, 0x98, 0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x70, 0x5c, 0x64, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xbd, 0x00, 0x03, 0x01, 0x84, 0x06, 0xc3, 0x01, 0x28, 0x0a, 0x93, + 0x02, 0x74, 0x0b, 0xe3, 0x03, 0x28, 0x17, 0xd3, 0x07, 0x9c, 0x37, 0x23, + 0x17, 0x41, 0x49, 0xb3, 0xc6, 0x71, 0xb9, 0x03, 0x1a, 0x70, 0x36, 0x73, + 0x05, 0xac, 0x0b, 0xa3, 0x01, 0x38, 0x0b, 0x53, 0x04, 0xec, 0x15, 0x23, + 0x0c, 0xa0, 0x09, 0x03, 0x04, 0x98, 0x05, 0xf3, 0x00, 0xe4, 0x00, 0xc0, + 0x70, 0x0a, 0x68, 0xc4, 0x04, 0x01, 0x07, 0x05, 0xcc, 0x3b, 0x02, 0x33, + 0xb0, 0x29, 0x9d, 0xd2, 0x57, 0x80, 0xf7, 0x62, 0x76, 0x76, 0xd7, 0x23, + 0x66, 0x0b, 0x05, 0x4f, 0xcb, 0x70, 0x82, 0x99, 0xc4, 0x66, 0x16, 0xcd, + 0xed, 0xcb, 0x69, 0x88, 0x40, 0x2f, 0x35, 0x2d, 0x88, 0x7a, 0x26, 0xfc, + 0x37, 0x1a, 0xf3, 0xf4, 0x94, 0x34, 0x2f, 0x87, 0x75, 0xbb, 0x7b, 0x7c, + 0x21, 0x77, 0x0b, 0x03, 0x83, 0xde, 0xec, 0x75, 0x15, 0x29, 0x3b, 0xa3, + 0x4a, 0xdb, 0x0c, 0xa9, 0x48, 0x4e, 0x95, 0xdf, 0xb8, 0x58, 0x74, 0xb1, + 0x82, 0x2c, 0x13, 0xd4, 0x52, 0x4c, 0xda, 0x9a, 0x34, 0x64, 0xd0, 0xef, + 0x8d, 0x34, 0x1d, 0xf7, 0x3b, 0x35, 0xd4, 0x76, 0x77, 0x31, 0x63, 0xab, + 0xfb, 0x41, 0x79, 0xd6, 0x56, 0x5c, 0xa8, 0xd6, 0x75, 0xa6, 0x18, 0xb5, + 0x77, 0xec, 0xd5, 0x63, 0xd2, 0xf6, 0x57, 0xde, 0xb9, 0xf5, 0x5b, 0x2c, + 0xa9, 0xcb, 0x30, 0xb7, 0x31, 0xd8, 0xfa, 0x0f, 0x56, 0x0c, 0x12, 0x20, + 0x4e, 0x69, 0x47, 0x32, 0x40, 0xbb, 0x8c, 0xdc, 0xce, 0xb5, 0x9b, 0xd4, + 0x53, 0xdd, 0xc6, 0xaf, 0x09, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xf6, + 0x6b, 0x70, 0x42, 0x13, 0xfc, 0x43, 0x70, 0x74, 0x0d, 0xd8, 0x00, 0x60, + 0x66, 0x6e, 0x19, 0x91, 0xc1, 0x06, 0x4f, 0xec, 0xcd, 0xc2, 0x09, 0xb8, + 0x1f, 0xc1, 0x91, 0xad, 0xb8, 0x43, 0x92, 0xa0, 0xb4, 0xcf, 0x05, 0x32, + 0x34, 0x68, 0x82, 0xae, 0xb9, 0xb1, 0xd4, 0xa9, 0x9f, 0x37, 0xd3, 0xb3, + 0x32, 0x24, 0xfb, 0x6d, 0x6b, 0xdd, 0x6f, 0x7f, 0x8f, 0xdf, 0x5d, 0xfd, + 0xfb, 0x7f, 0x2d, 0x3e, 0xde, 0x76, 0xa5, 0x1d, 0xe5, 0x37, 0x97, 0xed, + 0xad, 0xf6, 0xb3, 0xfc, 0x7a, 0xd9, 0x6d, 0xb6, 0xff, 0xb5, 0xfd, 0xc8, + 0x7f, 0xf7, 0xdd, 0x54, 0xf7, 0x8d, 0xae, 0x87, 0xdc, 0xe5, 0xb3, 0x3e, + 0x6f, 0x7f, 0xaf, 0x2f, 0x9f, 0xff, 0x1b, 0xb9, 0xfe, 0x6d, 0x78, 0xaf, + 0x96, 0xeb, 0xc8, 0xe5, 0xbb, 0x16, 0x65, 0x42, 0x8c, 0x4a, 0x8c, 0x06, + 0x34, 0x0c, 0x81, 0x49, 0xca, 0xd2, 0x17, 0x1a, 0x71, 0x7d, 0x6c, 0xa1, + 0x80, 0x42, 0x02, 0x69, 0x80, 0xe0, 0x05, 0x41, 0x81, 0x26, 0x09, 0xb9, + 0x81, 0xf8, 0x0f, 0x61, 0x84, 0x3a, 0x22, 0x29, 0x8c, 0x38, 0xc3, 0x51, + 0xe6, 0x69, 0x0f, 0x59, 0x8e, 0x3c, 0x25, 0xa1, 0x85, 0x3a, 0x13, 0x09, + 0x83, 0x16, 0x0c, 0x59, 0x83, 0xa4, 0x0c, 0x41, 0x87, 0x8a, 0x04, 0x41, + 0x82, 0xba, 0x02, 0xe8, 0x40, 0x0f, 0x24, 0xc0, 0x45, 0xaa, 0x01, 0x18, + 0x82, 0x69, 0x19, 0xd8, 0x80, 0xbd, 0xaa, 0xae, 0x83, 0xa7, 0x9f, 0xc9, + 0xfc, 0x9b, 0xb5, 0x1d, 0x6b, 0xbd, 0x01, 0x0c, 0xd4, 0xc2, 0xfd, 0x66, + 0x81, 0x9c, 0xdc, 0xe5, 0xad, 0x48, 0x52, 0x96, 0x9a, 0xf5, 0x24, 0x6e, + 0x53, 0x69, 0x71, 0x53, 0x5a, 0xc6, 0x55, 0x9c, 0x37, 0x2c, 0xad, 0x31, + 0x9c, 0x42, 0x1f, 0xc4, 0xd6, 0xc9, 0xd0, 0x54, 0xdb, 0x77, 0x60, 0xd9, + 0x4b, 0x25, 0x68, 0xdc, 0x67, 0x5d, 0x5e, 0x1b, 0x13, 0x48, 0xcc, 0x15, + 0x89, 0xed, 0x54, 0x60, 0x1a, 0x6c, 0xa7, 0x3a, 0xf7, 0x7d, 0x17, 0xe8, + 0x76, 0x91, 0x8f, 0x53, 0x33, 0x7d, 0x8d, 0xfa, 0xf4, 0x8a, 0xb5, 0xf6, + 0x63, 0xe5, 0xda, 0x67, 0xc3, 0x5b, 0x1b, 0x70, 0x4a, 0x2f, 0x64, 0xa6, + 0x64, 0xab, 0xcb, 0xdb, 0x66, 0xb7, 0xbd, 0xaf, 0x25, 0x90, 0x96, 0xef, + 0x45, 0xc6, 0xe5, 0xef, 0x8a, 0x45, 0xd2, 0xcc, 0x7d, 0x32, 0x2b, 0xdd, + 0x98, 0x40, 0x73, 0x1e, 0x6b, 0x06, 0x4c, 0x10, 0x74, 0x0f, 0x26, 0x07, + 0x15, 0xed, 0x95, 0x57, 0x81, 0xaf, 0x63, 0x73, 0x1c, 0x6e, 0xcd, 0x7f, + 0x6f, 0x03, 0x1f, 0xb9, 0x9f, 0x95, 0x4c, 0x42, 0x88, 0xf5, 0xad, 0x61, + 0xa1, 0x6c, 0x89, 0x07, 0x57, 0xfa, 0x84, 0xc4, 0x7a, 0x6f, 0xd9, 0x31, + 0xba, 0x5b, 0xbd, 0x1e, 0x6d, 0xf1, 0x33, 0x0c, 0xbb, 0x55, 0x47, 0xc3, + 0x2d, 0xad, 0xa7, 0x5b, 0xe3, 0xbe, 0x2d, 0xef, 0xb8, 0xe2, 0x26, 0xee, + 0x2b, 0xdd, 0xf7, 0x32, 0xf8, 0x79, 0xc9, 0x8a, 0xab, 0x8a, 0x75, 0xba, + 0x7f, 0xb7, 0x5e, 0xed, 0xb7, 0x36, 0xf6, 0xbd, 0xef, 0x87, 0x54, 0x43, + 0xd9, 0xda, 0x75, 0x5f, 0x3b, 0x25, 0x87, 0x59, 0xaf, 0x2c, 0x87, 0x43, + 0x6d, 0xf5, 0x56, 0x82, 0x96, 0xc7, 0xc4, 0xc2, 0xae, 0x79, 0xf3, 0xea, + 0x14, 0x9e, 0x2b, 0x1d, 0x69, 0x13, 0x03, 0xf1, 0xb2, 0x44, 0x0c, 0x91, + 0x13, 0x07, 0xce, 0xbc, 0x7a, 0x20, 0xce, 0x17, 0x13, 0x93, 0x10, 0x53, + 0x51, 0x4c, 0xcb, 0x8e, 0x4e, 0x0b, 0x8c, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x00, 0x2e, 0x34, 0x00, 0x00, 0x18, 0x06, 0x40, 0x17, 0x98, 0x10, + 0x20, 0x1d, 0x18, 0x13, 0x00, 0x37, 0x98, 0x1e, 0xe0, 0x48, 0x18, 0x3e, + 0x00, 0xaf, 0x98, 0xba, 0xa4, 0x4e, 0x1e, 0x34, 0x66, 0x2c, 0x98, 0xd4, + 0xe0, 0x8e, 0x18, 0x38, 0x80, 0x35, 0x18, 0x0a, 0xc0, 0x7b, 0x18, 0x0a, + 0x40, 0xc1, 0x98, 0x26, 0xe0, 0x41, 0x98, 0x0d, 0xe0, 0x2f, 0x18, 0x00, + 0xc0, 0x18, 0x8a, 0x80, 0x08, 0xad, 0xa3, 0xa0, 0x0a, 0x00, 0x62, 0xb3, + 0x60, 0xac, 0xd6, 0x9d, 0x15, 0xa6, 0xb5, 0xce, 0xcb, 0xf9, 0xae, 0xda, + 0x0e, 0x2e, 0x97, 0x43, 0x1d, 0x82, 0xe2, 0x92, 0x49, 0xd6, 0x99, 0xa8, + 0xd3, 0xb8, 0x8e, 0xbd, 0x9d, 0xd5, 0x59, 0x65, 0xd6, 0xc1, 0x28, 0xca, + 0xad, 0x5e, 0xc6, 0x2f, 0xf6, 0xd6, 0x55, 0x5b, 0x1d, 0x38, 0xae, 0x94, + 0x33, 0xbf, 0x56, 0xaa, 0x66, 0x1f, 0xfc, 0xd2, 0x6a, 0xb2, 0x2f, 0xd3, + 0x3d, 0x8c, 0x19, 0x90, 0x3b, 0x91, 0xb6, 0x45, 0xec, 0x81, 0x9e, 0xf7, + 0x62, 0x06, 0xe7, 0xb1, 0xa3, 0xb9, 0x26, 0xf9, 0x64, 0xac, 0xe7, 0x6c, + 0x92, 0xeb, 0xde, 0x9a, 0xd9, 0x39, 0x76, 0xcc, 0xd4, 0xcb, 0xbe, 0x53, + 0x5c, 0xc8, 0x8a, 0xcd, 0xf3, 0x94, 0xb4, 0xd0, 0x99, 0xd7, 0x43, 0x19, + 0xf0, 0x2a, 0x0c, 0xc1, 0x9e, 0xd0, 0x3a, 0x15, 0x00, 0xe0, 0x0a, 0xd1, + 0xf9, 0x7e, 0xaa, 0x52, 0x61, 0x5b, 0x77, 0xb2, 0xde, 0x5c, 0x24, 0x49, + 0x51, 0xa4, 0xba, 0x95, 0x96, 0x9b, 0x5b, 0x68, 0x99, 0x18, 0x59, 0xc5, + 0xda, 0xaa, 0xcd, 0x88, 0xd1, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x09, 0xd5, + 0xd4, 0x6f, 0x43, 0x3b, 0xfb, 0x1b, 0x72, 0x76, 0x8e, 0x08, 0x01, 0x60, + 0x68, 0x6e, 0x1f, 0xad, 0xc1, 0x00, 0x0f, 0xf1, 0x8d, 0xc2, 0x18, 0x38, + 0x1f, 0x81, 0x81, 0xa1, 0xb8, 0x5c, 0x25, 0x02, 0x60, 0x7c, 0x2d, 0xb5, + 0xc1, 0x15, 0x15, 0x2b, 0x5a, 0x5f, 0x53, 0xb3, 0x54, 0x75, 0xf3, 0xa5, + 0xd5, 0xc4, 0xdc, 0xdc, 0xc6, 0xbc, 0xc7, 0x07, 0xf3, 0x17, 0xaf, 0x74, + 0xd1, 0x16, 0xb1, 0x1d, 0x25, 0x4d, 0x54, 0x4e, 0xdf, 0x37, 0xf1, 0x74, + 0xf1, 0xdf, 0xf4, 0x97, 0x57, 0xcd, 0xbd, 0x2c, 0x4b, 0x4a, 0x4a, 0x5d, + 0xb7, 0xa5, 0x5c, 0xf3, 0xe9, 0x17, 0x4b, 0x5c, 0xab, 0x0d, 0x93, 0xae, + 0x8b, 0x17, 0x75, 0x14, 0x34, 0x06, 0x38, 0xa8, 0x82, 0x30, 0xf1, 0x81, + 0x8a, 0x4b, 0x0e, 0x14, 0x3d, 0x15, 0x30, 0x0f, 0xc0, 0x88, 0x30, 0x14, + 0x81, 0x17, 0x30, 0x17, 0x81, 0x84, 0x30, 0x24, 0xc3, 0x2b, 0x30, 0x60, + 0x87, 0x52, 0x30, 0xcb, 0x69, 0xe7, 0x35, 0x12, 0xfa, 0xc4, 0x30, 0xd7, + 0x48, 0x91, 0x30, 0x0a, 0x83, 0x12, 0x30, 0x0c, 0xc0, 0xb9, 0x30, 0xb8, + 0xc0, 0x8a, 0x31, 0xd2, 0x00, 0x30, 0x30, 0x96, 0x80, 0x13, 0x30, 0x2e, + 0xc0, 0x85, 0x0c, 0x02, 0x30, 0xc2, 0x43, 0x43, 0x17, 0x04, 0x8a, 0x05, + 0xa6, 0x14, 0xe8, 0x98, 0xd0, 0x52, 0x61, 0xb0, 0xa8, 0xb0, 0x4c, 0x2c, + 0x04, 0x0c, 0x08, 0x30, 0xd0, 0x28, 0x05, 0x0c, 0xd4, 0x3c, 0xbc, 0x6d, + 0xf2, 0x80, 0x0f, 0x10, 0x1f, 0x15, 0x07, 0x83, 0xd9, 0x42, 0x29, 0xb9, + 0x4c, 0x02, 0x44, 0xca, 0xd8, 0x9d, 0x86, 0x62, 0xc5, 0x1e, 0x87, 0x72, + 0xcd, 0xb8, 0x7d, 0x2e, 0x1f, 0x4b, 0x31, 0xf9, 0xdd, 0xbe, 0x75, 0xa5, + 0x11, 0x8c, 0x22, 0x6e, 0x4b, 0xdb, 0x2b, 0xd2, 0x34, 0x88, 0x7f, 0x7c, + 0xe0, 0xce, 0xe5, 0x86, 0x17, 0xa7, 0xda, 0x3f, 0xab, 0x5a, 0x78, 0xb7, + 0x0d, 0x28, 0xda, 0xcb, 0xfa, 0xcb, 0xca, 0xc5, 0xab, 0xef, 0x1a, 0xe4, + 0x50, 0xfd, 0x4c, 0x4e, 0x55, 0xb2, 0xb3, 0x16, 0x2d, 0xe8, 0xeb, 0xbc, + 0x30, 0x79, 0x88, 0xd4, 0x35, 0x57, 0x23, 0xe6, 0xb9, 0x15, 0x58, 0x8a, + 0x3b, 0xae, 0x86, 0xed, 0xf5, 0x16, 0x4a, 0x11, 0x6f, 0xe7, 0x4e, 0xee, + 0xe6, 0x7b, 0xfd, 0x54, 0xf1, 0x4c, 0x2c, 0xaf, 0xf4, 0x37, 0x90, 0xee, + 0xd5, 0x0f, 0x2a, 0xb6, 0xcd, 0x28, 0x3f, 0xe5, 0x88, 0x47, 0x39, 0x14, + 0x0c, 0xea, 0xfd, 0xf9, 0xa2, 0x3a, 0xd7, 0xe8, 0xe1, 0xca, 0xd5, 0xae, + 0xe1, 0x65, 0xa5, 0xed, 0x55, 0xda, 0xa3, 0x75, 0x92, 0x01, 0xe2, 0xa6, + 0x2a, 0xc1, 0x38, 0xb8, 0x38, 0x17, 0x49, 0x60, 0x3e, 0xc3, 0xd0, 0x1c, + 0xdc, 0xee, 0xee, 0x4e, 0xe5, 0x49, 0x67, 0x94, 0x94, 0xd2, 0xd2, 0x11, + 0x84, 0x33, 0x68, 0x08, 0x1c, 0x4c, 0x94, 0x75, 0xa6, 0x16, 0x31, 0x63, + 0x1a, 0x9c, 0x5f, 0x69, 0x71, 0x72, 0xb9, 0x54, 0x68, 0x15, 0x9f, 0x8a, + 0x85, 0x9a, 0x18, 0xdd, 0x42, 0xb3, 0xef, 0xbf, 0xa7, 0x4d, 0x90, 0xf4, + 0x9a, 0x53, 0x75, 0xbc, 0xb5, 0x5d, 0xe5, 0x51, 0xb2, 0xf6, 0x8a, 0xcd, + 0x11, 0x63, 0x69, 0x93, 0x67, 0x1f, 0x02, 0x8d, 0xcf, 0xdd, 0x23, 0x42, + 0x0a, 0x92, 0xba, 0xc4, 0x4e, 0x44, 0xd1, 0x07, 0x1b, 0x36, 0x6d, 0x7d, + 0xc1, 0x16, 0x3e, 0x2a, 0xf9, 0xaf, 0x8d, 0xd6, 0x66, 0x6e, 0x87, 0x4c, + 0x90, 0x3c, 0xc8, 0x2a, 0xc5, 0x4a, 0xb5, 0x31, 0x20, 0x79, 0xec, 0x92, + 0x68, 0x80, 0xa2, 0x41, 0x04, 0x36, 0x0a, 0xc1, 0xd0, 0x80, 0x38, 0x11, + 0xcd, 0x05, 0x21, 0x10, 0x88, 0x1e, 0x80, 0xd2, 0xc4, 0xe9, 0x88, 0x29, + 0xa8, 0xa6, 0x65, 0xc7, 0x27, 0x05, 0xc6, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x16, 0x40, 0x24, 0x30, 0x0d, 0x80, 0x00, 0x12, 0x05, 0x08, + 0xc0, 0xdc, 0x07, 0x4c, 0xc1, 0xc7, 0x13, 0xf0, 0xc3, 0x50, 0x68, 0xf4, + 0xfd, 0xca, 0x8d, 0x0c, 0xc8, 0xb2, 0x13, 0xf8, 0xc5, 0x1b, 0x02, 0x98, + 0xc1, 0x83, 0x01, 0x80, 0xc1, 0x09, 0x08, 0x28, 0xc2, 0x0d, 0x01, 0x70, + 0xc1, 0x08, 0x03, 0x94, 0xc0, 0x24, 0x00, 0xf0, 0xc0, 0x3f, 0x01, 0x08, + 0xdc, 0x84, 0x34, 0x13, 0x48, 0xc8, 0x9c, 0xcf, 0x67, 0x30, 0xe8, 0x80, + 0x01, 0x93, 0x28, 0x06, 0x2c, 0xa3, 0xe6, 0x20, 0x4a, 0x50, 0x83, 0x45, + 0x01, 0x82, 0xaf, 0x02, 0xc9, 0x20, 0x09, 0xa5, 0xa0, 0xab, 0xb8, 0x8a, + 0xcb, 0x79, 0x4c, 0x94, 0xd9, 0xdf, 0x61, 0xaf, 0xcb, 0xa4, 0xbb, 0xa0, + 0x95, 0x35, 0x77, 0xa4, 0xae, 0x4d, 0x97, 0xfa, 0x15, 0x13, 0x7f, 0x67, + 0x62, 0x2e, 0xcc, 0x26, 0x35, 0x16, 0xaa, 0xfe, 0xce, 0xba, 0x50, 0xeb, + 0x01, 0x66, 0xd5, 0x25, 0x20, 0x15, 0x34, 0x91, 0x34, 0x53, 0x16, 0xb4, + 0xb5, 0x32, 0x28, 0x4d, 0x98, 0x24, 0xa2, 0x51, 0xd9, 0x63, 0x54, 0xd7, + 0xa6, 0x1d, 0x90, 0xd4, 0x7d, 0x24, 0x9f, 0xad, 0xab, 0x51, 0xaf, 0x2c, + 0x81, 0x64, 0x4e, 0xa6, 0xe7, 0x59, 0xd8, 0xba, 0x9e, 0xac, 0xb5, 0xee, + 0x4e, 0x6d, 0x76, 0x17, 0xf9, 0x93, 0x7c, 0x9f, 0x1c, 0xca, 0x94, 0xa5, + 0x34, 0x4c, 0xde, 0x21, 0x51, 0x28, 0xbf, 0x31, 0xa6, 0x64, 0xe8, 0xc5, + 0xa5, 0xad, 0x85, 0xe0, 0x86, 0x70, 0x93, 0x90, 0xc9, 0xb7, 0xd6, 0x49, + 0x6a, 0xdc, 0x84, 0x17, 0xcf, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd7, + 0x57, 0x70, 0x41, 0x03, 0xfa, 0x4b, 0x70, 0x76, 0x4e, 0x08, 0x12, 0x64, + 0xc8, 0x6e, 0x21, 0x01, 0xc0, 0xfa, 0x2f, 0xbd, 0xed, 0xc1, 0xef, 0xb7, + 0xe0, 0x09, 0xa3, 0x21, 0xb8, 0x3c, 0x4e, 0xd6, 0x73, 0x79, 0x04, 0x8e, + 0xea, 0x5e, 0xb4, 0xa1, 0x65, 0x87, 0x9a, 0x3c, 0x2f, 0x00, 0x07, 0x31, + 0x53, 0xf2, 0x79, 0xdc, 0x2c, 0x6f, 0x7b, 0xe6, 0x16, 0xaf, 0x6b, 0x8d, + 0x5d, 0xb3, 0xf7, 0xbe, 0xc8, 0x7f, 0xf2, 0x7c, 0xfe, 0x8d, 0xee, 0x18, + 0xec, 0xd7, 0x17, 0xef, 0xb3, 0xf3, 0x6b, 0xd5, 0x0d, 0x95, 0x9d, 0x08, + 0xbd, 0x20, 0xc9, 0xb8, 0x88, 0x2f, 0x19, 0xcd, 0x37, 0x0b, 0x73, 0x1d, + 0x5c, 0xdf, 0xd7, 0x3f, 0xfb, 0x7c, 0xbe, 0x91, 0x1b, 0xdf, 0xb6, 0xed, + 0x53, 0x5f, 0x7d, 0xf7, 0xd4, 0x4f, 0xd5, 0x7d, 0xef, 0xd6, 0xf7, 0x11, + 0xcb, 0xad, 0x5e, 0xd2, 0x94, 0xbf, 0x5c, 0x7c, 0x77, 0x14, 0xbd, 0xe3, + 0xa6, 0xb9, 0xa9, 0x7d, 0xe2, 0x64, 0x70, 0xc2, 0x6f, 0x99, 0xd1, 0x2c, + 0xa9, 0xb1, 0x5a, 0x11, 0xcf, 0x31, 0x8c, 0x85, 0x2c, 0x40, 0x70, 0x68, + 0x0b, 0x46, 0x92, 0x22, 0x55, 0x8b, 0xa0, 0x10, 0x04, 0xa9, 0x80, 0x58, + 0x03, 0xc1, 0x80, 0x26, 0x09, 0x29, 0x82, 0x18, 0x0d, 0x91, 0x80, 0x32, + 0x23, 0xa9, 0x87, 0xa8, 0x40, 0xd1, 0xa4, 0x42, 0x3b, 0xf9, 0x8f, 0x76, + 0x1f, 0xf1, 0x82, 0x74, 0x0b, 0x29, 0x81, 0x92, 0x03, 0xf1, 0x83, 0x38, + 0x0d, 0x49, 0x83, 0x22, 0x08, 0x71, 0x82, 0x9a, 0x01, 0xb1, 0x80, 0xa4, + 0x00, 0xc9, 0x80, 0x1e, 0x00, 0x20, 0x16, 0x4e, 0x22, 0xe2, 0x9f, 0x1d, + 0xea, 0x06, 0x45, 0xcc, 0x0c, 0x5d, 0xa9, 0x4c, 0xec, 0xa8, 0xb1, 0xe5, + 0x31, 0xd4, 0x7f, 0x46, 0x47, 0x29, 0x26, 0x65, 0x56, 0x27, 0x1a, 0xd1, + 0x8a, 0x05, 0x64, 0xad, 0x6b, 0x88, 0xef, 0xa5, 0x5a, 0x61, 0xb2, 0x1a, + 0x9e, 0x78, 0x69, 0x44, 0x60, 0x8a, 0x5c, 0x91, 0xec, 0x4f, 0xdd, 0xcb, + 0x95, 0x2d, 0x55, 0x6a, 0x57, 0x6c, 0xe8, 0x74, 0x48, 0x70, 0x2b, 0x12, + 0x33, 0xd4, 0x42, 0xed, 0x81, 0x77, 0x22, 0x89, 0xae, 0x48, 0x59, 0x61, + 0x7e, 0xf5, 0xb5, 0x4a, 0xe1, 0x1d, 0xb1, 0x58, 0xb4, 0xf1, 0xc2, 0x12, + 0x8f, 0x75, 0x5d, 0xbc, 0xab, 0xc6, 0xe6, 0xd5, 0x5b, 0xb4, 0x4b, 0x7d, + 0x54, 0x6d, 0xea, 0x96, 0xa4, 0xea, 0x72, 0x54, 0x36, 0x56, 0xa6, 0xe5, + 0x63, 0x2c, 0x37, 0xad, 0x33, 0x27, 0xa0, 0xa8, 0xde, 0x36, 0xd3, 0x0e, + 0x71, 0x1d, 0xbc, 0x56, 0xb7, 0x2c, 0x42, 0x70, 0x84, 0xa5, 0x66, 0xbc, + 0x15, 0xd3, 0xb5, 0x42, 0xee, 0x1a, 0xb5, 0x9d, 0xe3, 0x23, 0x03, 0xf9, + 0x18, 0xe0, 0x38, 0xa9, 0xd0, 0xd8, 0x4f, 0xa0, 0xbc, 0x7c, 0xa4, 0x62, + 0xdc, 0x06, 0xf6, 0xd6, 0x48, 0xb1, 0x30, 0xe2, 0xaf, 0x62, 0x7e, 0xce, + 0xfa, 0x34, 0x48, 0x4a, 0xdd, 0xa3, 0xd8, 0x1c, 0xa4, 0x73, 0x6e, 0x8c, + 0x84, 0x9d, 0x0d, 0xba, 0x6c, 0x5e, 0x37, 0x09, 0x62, 0x90, 0xf1, 0x55, + 0x9f, 0xaa, 0x41, 0x5d, 0x7e, 0x51, 0xb6, 0x80, 0x70, 0x34, 0x99, 0xe1, + 0x41, 0x7b, 0xb9, 0xee, 0x43, 0xbc, 0xbb, 0x73, 0x8f, 0x5b, 0xce, 0xaf, + 0x97, 0xb9, 0x9b, 0xb3, 0x2c, 0x79, 0xad, 0xec, 0x91, 0x8c, 0x7b, 0x7c, + 0x50, 0x29, 0x33, 0x68, 0x08, 0xb0, 0x25, 0xb5, 0x46, 0xb6, 0x69, 0x9b, + 0xca, 0xb5, 0x8b, 0x88, 0xbe, 0x62, 0xa7, 0xab, 0xb8, 0x99, 0x69, 0x7f, + 0xa9, 0x94, 0xa7, 0x59, 0xba, 0xa6, 0x7f, 0xa1, 0xff, 0xed, 0x10, 0x8f, + 0x53, 0x0c, 0xbf, 0x57, 0x3a, 0xed, 0xdc, 0x5f, 0xdf, 0x5c, 0x4c, 0xaa, + 0x5c, 0x2a, 0x4d, 0xdd, 0x2b, 0xf2, 0x3b, 0xab, 0x76, 0x9f, 0xb4, 0xe3, + 0x9e, 0xb5, 0x9e, 0x6b, 0x79, 0xa6, 0x6b, 0x9e, 0x4b, 0xb6, 0xa5, 0xfc, + 0xda, 0xa5, 0x63, 0x85, 0x44, 0xcc, 0x78, 0xc1, 0x21, 0x81, 0xf8, 0xf1, + 0x38, 0x84, 0x50, 0x9c, 0x4b, 0x62, 0xb6, 0x19, 0x14, 0xca, 0x64, 0x00, + 0x03, 0x00, 0x6c, 0x00, 0xe3, 0x01, 0x24, 0x04, 0x63, 0x00, 0xd8, 0x08, + 0x03, 0x00, 0x34, 0x09, 0x93, 0x03, 0x58, 0x15, 0xc3, 0x09, 0x54, 0x93, + 0x33, 0x57, 0x24, 0x72, 0x23, 0x0c, 0x44, 0x18, 0xd3, 0x04, 0x00, 0x0d, + 0x23, 0x02, 0x00, 0x09, 0x03, 0x02, 0x2c, 0x0a, 0x53, 0x03, 0x98, 0x00, + 0x43, 0x01, 0xa0, 0x01, 0x81, 0x20, 0x01, 0xda, 0x02, 0xb9, 0x96, 0x56, + 0xc2, 0x9a, 0x22, 0x1c, 0x9d, 0x86, 0xab, 0x6e, 0x51, 0xc0, 0x81, 0x01, + 0x8d, 0xc4, 0xff, 0x36, 0x9e, 0xa0, 0x09, 0xc8, 0x85, 0x16, 0x37, 0x05, + 0x71, 0xfc, 0xbe, 0x84, 0xb6, 0x21, 0xd6, 0x7e, 0xc2, 0xac, 0x91, 0xf3, + 0x1b, 0xb6, 0x35, 0x22, 0x9f, 0x4f, 0x9e, 0xc5, 0x67, 0x9a, 0x8f, 0xef, + 0x88, 0xba, 0xec, 0xac, 0xec, 0xef, 0xfc, 0x78, 0x13, 0xb7, 0xaa, 0x60, + 0xbf, 0x85, 0x1d, 0xdc, 0x07, 0x50, 0xab, 0x23, 0xb6, 0xaa, 0x66, 0x35, + 0xa5, 0x8b, 0xa8, 0xd1, 0x60, 0x36, 0x66, 0x13, 0x24, 0x78, 0x51, 0x61, + 0xad, 0x55, 0xc6, 0x69, 0x20, 0xab, 0x2e, 0xe7, 0x02, 0x3c, 0x16, 0xd7, + 0x70, 0x5c, 0x67, 0x58, 0x8f, 0x66, 0xf7, 0xa9, 0x18, 0xb8, 0x7a, 0xea, + 0xf1, 0xa7, 0x89, 0x46, 0x38, 0xd4, 0x62, 0x92, 0xd2, 0x5a, 0xbd, 0xc3, + 0x70, 0x9f, 0x31, 0x44, 0x88, 0xf5, 0xb6, 0x58, 0xb0, 0x94, 0x0d, 0x91, + 0x6f, 0xbb, 0xee, 0xf0, 0xa6, 0x72, 0xea, 0xf6, 0xd7, 0x50, 0xdc, 0xe6, + 0x89, 0x01, 0xb6, 0x03, 0xfd, 0xff, 0xfb, 0xd4, 0x60, 0x69, 0x8d, 0xd7, + 0x97, 0x70, 0x3f, 0x93, 0xef, 0x7b, 0x70, 0x77, 0xae, 0x08, 0x02, 0x3c, + 0x68, 0x6e, 0x1f, 0x51, 0xc0, 0xfa, 0x0f, 0xe1, 0x8d, 0xc1, 0xe6, 0x38, + 0x20, 0x09, 0x11, 0xa1, 0xb8, 0xc4, 0xd5, 0x1f, 0xb8, 0xe2, 0x66, 0x77, + 0x70, 0xa9, 0x2c, 0x6c, 0xc5, 0x6b, 0xdc, 0x06, 0xde, 0xa9, 0x8a, 0xcc, + 0xc5, 0x3b, 0x5c, 0x26, 0x6f, 0x00, 0xe8, 0x84, 0x8c, 0x35, 0x09, 0x81, + 0xd2, 0x32, 0x00, 0x00, 0x61, 0x55, 0x4b, 0x3b, 0x2b, 0x15, 0xbe, 0xe8, + 0xd5, 0x8d, 0x52, 0x3a, 0x8b, 0x42, 0xf4, 0x04, 0x53, 0xd6, 0x65, 0xf9, + 0x1e, 0x81, 0x22, 0x3e, 0x08, 0xc3, 0x44, 0x0e, 0x04, 0x25, 0x08, 0x18, + 0x97, 0xad, 0xca, 0x44, 0xbc, 0xd4, 0x6f, 0xca, 0x3b, 0xbd, 0xf7, 0x72, + 0xb5, 0xab, 0xda, 0xa7, 0xba, 0x2a, 0x75, 0xc7, 0x4f, 0x3d, 0xd3, 0xe7, + 0x4f, 0x28, 0xdc, 0x24, 0xfe, 0x96, 0x93, 0xf7, 0x5d, 0x5c, 0x6f, 0x70, + 0x50, 0xb7, 0x52, 0xbb, 0x73, 0x17, 0x0d, 0xc2, 0x42, 0xfa, 0xdc, 0x5c, + 0xdf, 0x31, 0x3d, 0x55, 0xc5, 0xee, 0xd3, 0x37, 0xff, 0xc5, 0x39, 0x93, + 0xd2, 0xfb, 0x6b, 0x21, 0xc5, 0x66, 0x8e, 0x15, 0x2b, 0x20, 0xc2, 0x44, + 0xe7, 0x80, 0xb1, 0xa5, 0x48, 0x14, 0x10, 0xb9, 0x21, 0xea, 0x08, 0xe2, + 0x73, 0x00, 0xec, 0x03, 0x83, 0x01, 0xc8, 0x0d, 0x53, 0x01, 0xf4, 0x0b, + 0x23, 0x03, 0xe8, 0x0a, 0x13, 0x06, 0x7c, 0x15, 0xc3, 0x13, 0xe0, 0x69, + 0x93, 0xa0, 0x31, 0x2d, 0x23, 0x14, 0x70, 0x18, 0xb0, 0x30, 0x54, 0x66, + 0x00, 0x98, 0x16, 0xa6, 0x03, 0xf8, 0x24, 0x86, 0x0f, 0x90, 0x15, 0x06, + 0x03, 0x60, 0x09, 0x26, 0x00, 0x68, 0x01, 0x8a, 0x2e, 0xe1, 0x3e, 0xb2, + 0xb2, 0x01, 0x43, 0xd0, 0x04, 0xe4, 0xa6, 0xa3, 0xf3, 0x6d, 0xfe, 0x87, + 0x61, 0xb7, 0x6e, 0x42, 0xce, 0xa0, 0x7a, 0xed, 0xb5, 0x3c, 0x46, 0x92, + 0x21, 0x2d, 0x97, 0x4c, 0xc3, 0x92, 0x49, 0x46, 0x72, 0x3a, 0x18, 0x97, + 0x5f, 0x99, 0x27, 0x6c, 0xf1, 0xdf, 0x94, 0x48, 0x62, 0x32, 0xab, 0x10, + 0x0b, 0xcd, 0x4e, 0x99, 0x13, 0x6b, 0xc7, 0x42, 0xfa, 0xe7, 0x6c, 0xf2, + 0xe2, 0x6b, 0x66, 0x51, 0x8f, 0x25, 0x83, 0xb7, 0xc9, 0x6b, 0x95, 0x2e, + 0xb7, 0x1c, 0x37, 0x11, 0xc1, 0xe5, 0x4b, 0x47, 0xcd, 0xd0, 0x95, 0x2f, + 0xa1, 0x72, 0x21, 0x20, 0x79, 0x84, 0xfd, 0xea, 0xd4, 0xed, 0xc6, 0xdb, + 0x8d, 0xc2, 0xcb, 0xc4, 0x05, 0xf8, 0x65, 0x0b, 0xd2, 0xf1, 0xc1, 0x5d, + 0x44, 0x08, 0x44, 0xe4, 0x8b, 0xaa, 0xbd, 0x6a, 0x85, 0x2d, 0x1d, 0x19, + 0x89, 0x4e, 0xc5, 0x35, 0x52, 0x67, 0x68, 0x17, 0x38, 0x25, 0xaf, 0x2b, + 0xaa, 0x3f, 0x6e, 0x4b, 0x92, 0xf4, 0x69, 0x49, 0x4e, 0x54, 0xd5, 0x00, + 0xfa, 0x2b, 0x71, 0x6c, 0xe4, 0xdc, 0x88, 0xb9, 0x11, 0x70, 0xcd, 0x19, + 0xf9, 0x31, 0x9c, 0x80, 0xac, 0x77, 0x1b, 0x31, 0x2a, 0x4b, 0xd4, 0x2e, + 0x2c, 0x66, 0x29, 0x3d, 0x78, 0xa8, 0xc8, 0xfe, 0x53, 0x3a, 0x64, 0x73, + 0x72, 0xc9, 0xcd, 0xd2, 0x07, 0x81, 0x01, 0x78, 0x64, 0x90, 0x2e, 0x09, + 0x01, 0xe8, 0xb6, 0xc8, 0x96, 0x0d, 0xd0, 0x4c, 0xdd, 0x35, 0x1b, 0xb5, + 0x13, 0x67, 0x14, 0x2a, 0xba, 0x66, 0x6c, 0x4c, 0xae, 0xb1, 0x8e, 0x17, + 0x64, 0xbe, 0x11, 0xc3, 0x07, 0x0e, 0x20, 0x0c, 0x48, 0xa6, 0x12, 0x41, + 0xee, 0x01, 0xb9, 0x5a, 0xa5, 0x9e, 0x2d, 0xa6, 0x3d, 0xea, 0x6b, 0xb8, + 0x8a, 0x45, 0xe1, 0x92, 0xfe, 0xf8, 0xae, 0x62, 0xe2, 0x39, 0x7b, 0x54, + 0xe5, 0x69, 0xfa, 0xde, 0x69, 0xeb, 0xe6, 0xef, 0x88, 0x8e, 0xaf, 0x8f, + 0x6e, 0xae, 0x36, 0xbd, 0x7b, 0xa1, 0xcd, 0x09, 0x7f, 0x2e, 0x3d, 0x2a, + 0xaf, 0x9b, 0xef, 0xbe, 0xa7, 0xba, 0xae, 0x28, 0x52, 0x59, 0xf5, 0x5b, + 0x30, 0xa9, 0x65, 0xb6, 0x8e, 0xbc, 0x75, 0x07, 0x6e, 0x4c, 0x88, 0xc6, + 0x10, 0x68, 0x0d, 0x2c, 0x70, 0x0a, 0xad, 0x09, 0x06, 0x88, 0x42, 0x30, + 0xf5, 0x30, 0x05, 0x00, 0x3d, 0x14, 0x03, 0x80, 0xc0, 0x15, 0x01, 0xa4, + 0xc0, 0x2e, 0x05, 0x08, 0xc0, 0x99, 0x0b, 0xe4, 0xc1, 0x8a, 0x47, 0x00, + 0xd2, 0xfe, 0x5e, 0x5c, 0xc2, 0xd6, 0x0c, 0xa8, 0xc1, 0x2b, 0x05, 0x8c, + 0xc0, 0xdf, 0x02, 0xac, 0xc1, 0x32, 0x02, 0x70, 0xc2, 0xa3, 0x01, 0x54, + 0xc0, 0xf3, 0x00, 0x14, 0x68, 0x04, 0x41, 0xa0, 0x0b, 0xd6, 0x63, 0x8f, + 0x18, 0x20, 0x53, 0x51, 0x83, 0xa7, 0xa4, 0xd8, 0xf2, 0xcc, 0xb2, 0x03, + 0x95, 0x4e, 0x57, 0x87, 0x7e, 0xf4, 0x3f, 0x2f, 0x7b, 0xa0, 0xb8, 0xdb, + 0xf9, 0x62, 0x73, 0x98, 0xce, 0xcd, 0xda, 0x86, 0xb1, 0xa8, 0xdb, 0x5f, + 0xed, 0xd7, 0xd2, 0x9e, 0x1a, 0x94, 0x5c, 0xa7, 0xb1, 0x4f, 0x0f, 0xf2, + 0x34, 0x16, 0x38, 0x4f, 0x22, 0xcc, 0xc3, 0x11, 0xc5, 0xc5, 0xfc, 0xd8, + 0x6c, 0x64, 0x87, 0x1d, 0xb9, 0x92, 0x03, 0xa6, 0x96, 0x26, 0x38, 0x7b, + 0x5e, 0x79, 0x3b, 0xf7, 0xac, 0x4e, 0x2b, 0x1b, 0xd6, 0x95, 0xb7, 0x6b, + 0x54, 0x2e, 0xd5, 0x72, 0xd5, 0xe4, 0x67, 0x8a, 0xfa, 0x25, 0xf6, 0xf6, + 0x0b, 0x03, 0xc8, 0x0f, 0x22, 0x6e, 0x1c, 0xf3, 0xc4, 0x54, 0xb6, 0x3c, + 0x7e, 0xd6, 0xc6, 0xf9, 0xdb, 0xf8, 0x57, 0xad, 0x1a, 0x9e, 0x35, 0xb5, + 0xb4, 0x6a, 0x35, 0x58, 0x1a, 0x9b, 0x21, 0x6a, 0x33, 0x94, 0x2b, 0xc3, + 0x54, 0x45, 0x57, 0x77, 0x3a, 0x2f, 0xd5, 0xdb, 0xe8, 0xaf, 0xe1, 0x63, + 0xe5, 0x81, 0x5a, 0xb5, 0x88, 0xff, 0xfb, 0xd4, 0x60, 0x68, 0x0f, 0xd7, + 0xbb, 0x70, 0x3f, 0x03, 0xf8, 0x7b, 0x70, 0x74, 0x2e, 0x08, 0x00, 0x3c, + 0x68, 0x6e, 0x1e, 0x75, 0xc0, 0xfc, 0x0f, 0xe1, 0x8d, 0xc1, 0xdc, 0xb8, + 0x20, 0x08, 0xc3, 0x21, 0xb8, 0x79, 0x6d, 0x5b, 0x6b, 0x57, 0xb1, 0x49, + 0x2b, 0xa8, 0x71, 0x9e, 0xc4, 0xa3, 0x93, 0xfa, 0xa7, 0x2a, 0xe1, 0x33, + 0x44, 0x05, 0xe8, 0xcd, 0xfd, 0xb5, 0x47, 0x0a, 0x0b, 0x44, 0x6b, 0x23, + 0xcf, 0x2c, 0x3b, 0x6a, 0x3c, 0xc8, 0x64, 0x67, 0x41, 0xbc, 0xff, 0xb8, + 0x37, 0x46, 0xae, 0x64, 0x96, 0xaf, 0x33, 0xac, 0x48, 0xc2, 0x45, 0x94, + 0x22, 0x52, 0x67, 0xd4, 0x39, 0xfe, 0xc4, 0x64, 0xb6, 0x1b, 0xd8, 0xaf, + 0x21, 0x24, 0xab, 0x78, 0xbd, 0x2d, 0x2e, 0xe5, 0xe5, 0xb4, 0x59, 0x75, + 0x49, 0xa5, 0x8e, 0xb9, 0xeb, 0x7d, 0x75, 0xa9, 0xa4, 0xd9, 0xe1, 0x26, + 0xda, 0xa1, 0x7d, 0xea, 0x1a, 0xaf, 0xa7, 0xa7, 0x8a, 0xb6, 0x35, 0x17, + 0x69, 0x9e, 0xe3, 0xae, 0xa9, 0x77, 0xfe, 0x78, 0x74, 0xda, 0xee, 0xe7, + 0xa8, 0xa8, 0xa7, 0xe5, 0x91, 0xe6, 0x23, 0x9f, 0xd6, 0x07, 0xf7, 0x5d, + 0x44, 0xfc, 0x5a, 0xb7, 0x6e, 0x39, 0x1c, 0x78, 0xb0, 0xf1, 0x14, 0x71, + 0xea, 0x5b, 0x87, 0xb3, 0x62, 0x84, 0x83, 0xe2, 0x80, 0xdc, 0xb3, 0x90, + 0x4e, 0x28, 0x78, 0xc1, 0x73, 0x00, 0x90, 0x02, 0x33, 0x02, 0x2c, 0x07, + 0xf3, 0x02, 0x98, 0x04, 0xe3, 0x05, 0x4c, 0x03, 0xb3, 0x08, 0xd0, 0x08, + 0x63, 0x1a, 0x14, 0x4e, 0x73, 0xdf, 0xb4, 0x5f, 0x73, 0x1e, 0x24, 0x0a, + 0x93, 0x08, 0xb8, 0x10, 0x83, 0x02, 0xe0, 0x13, 0x83, 0x01, 0x14, 0x1a, + 0x93, 0x01, 0x94, 0x08, 0x53, 0x00, 0x20, 0x06, 0xa2, 0xc0, 0x04, 0x21, + 0x70, 0x00, 0x17, 0xcb, 0x30, 0x69, 0x68, 0xec, 0x3c, 0xc7, 0xba, 0xa5, + 0x4b, 0xb1, 0x69, 0x6d, 0x9c, 0xea, 0x5d, 0x9c, 0x8d, 0x43, 0x35, 0xeb, + 0x43, 0xd2, 0xab, 0xb4, 0xd0, 0xcc, 0x66, 0xc6, 0x37, 0xe9, 0xe2, 0x77, + 0xbe, 0x76, 0x6e, 0x37, 0x62, 0xed, 0x9a, 0x7a, 0x48, 0x66, 0xf5, 0x89, + 0x17, 0x2d, 0xd0, 0xca, 0x1a, 0x81, 0x7f, 0x21, 0xad, 0x75, 0xaa, 0xb7, + 0xfa, 0xfc, 0x43, 0xd6, 0xfd, 0x1b, 0x35, 0x64, 0xe5, 0x8b, 0x14, 0xd6, + 0x21, 0xdd, 0xe8, 0x54, 0xc5, 0x83, 0xb3, 0x06, 0x8a, 0xf3, 0x1c, 0x74, + 0xe8, 0x4f, 0x37, 0x74, 0xe2, 0x23, 0x98, 0xce, 0x8c, 0x8d, 0x70, 0xe8, + 0xd0, 0x46, 0x50, 0x3e, 0xdd, 0x3a, 0x55, 0x88, 0x6d, 0x1d, 0xbe, 0xa1, + 0x69, 0xba, 0xea, 0x40, 0xdc, 0x08, 0x46, 0x6c, 0x10, 0x65, 0xc7, 0x6e, + 0x48, 0x3d, 0x58, 0xa5, 0xb4, 0xed, 0x2e, 0x58, 0x8c, 0xe5, 0xb6, 0x13, + 0xe5, 0xfd, 0x70, 0x92, 0xbd, 0x62, 0xc7, 0x96, 0xd1, 0x0a, 0xbe, 0x5e, + 0x84, 0xce, 0xc9, 0x07, 0x35, 0xe9, 0xd4, 0x22, 0x65, 0x96, 0xdf, 0x61, + 0x9c, 0x6a, 0xc5, 0xd6, 0x0a, 0xb3, 0x03, 0xe5, 0xb3, 0xd5, 0xd1, 0x21, + 0x07, 0x6a, 0x52, 0x2b, 0x26, 0x30, 0x76, 0x4b, 0x3e, 0x3f, 0x5c, 0x7d, + 0xac, 0x13, 0x04, 0x02, 0xc9, 0x18, 0xb2, 0x3b, 0x8c, 0x00, 0x09, 0x5d, + 0x33, 0x75, 0x22, 0xeb, 0xf1, 0xeb, 0x97, 0xfc, 0xdd, 0x9d, 0xe7, 0x63, + 0x77, 0xf7, 0x39, 0xba, 0xfb, 0xfb, 0xeb, 0x26, 0x5c, 0xdd, 0x97, 0xd4, + 0x88, 0x45, 0x41, 0xda, 0x43, 0x73, 0x75, 0xab, 0x73, 0xfe, 0xf2, 0x95, + 0xbf, 0x5c, 0xcf, 0x13, 0xef, 0x3d, 0xdf, 0x30, 0xb3, 0x3d, 0x71, 0xa5, + 0xd5, 0xcf, 0xb5, 0xbc, 0xcf, 0xdc, 0xf4, 0x95, 0xc0, 0xef, 0xd6, 0x66, + 0xa9, 0x67, 0xe2, 0xaa, 0x20, 0xa5, 0x46, 0xf8, 0xf8, 0x69, 0xa5, 0xfc, + 0x7f, 0xae, 0xb6, 0x3e, 0x5b, 0xae, 0x6e, 0x2f, 0xaa, 0x9f, 0xab, 0xcc, + 0x61, 0xf9, 0x17, 0x0e, 0xdf, 0x09, 0x6f, 0xdd, 0x8b, 0x48, 0xeb, 0x34, + 0x60, 0x8e, 0x2a, 0x3c, 0x60, 0x98, 0x61, 0xb4, 0x10, 0x28, 0xd7, 0xb1, + 0x23, 0x93, 0x22, 0xc2, 0x43, 0x49, 0x09, 0xd5, 0x10, 0x0c, 0x09, 0xf0, + 0x28, 0x8c, 0x0c, 0xc0, 0x16, 0xcc, 0x0f, 0x10, 0x06, 0x8c, 0x12, 0xd0, + 0xab, 0xcc, 0x07, 0x62, 0x33, 0x8c, 0xe4, 0xa1, 0x15, 0xcd, 0xea, 0x08, + 0x46, 0x0c, 0x58, 0xc0, 0x39, 0xcc, 0x3f, 0x60, 0xeb, 0x81, 0x80, 0xad, + 0x18, 0x09, 0xa0, 0xdd, 0x18, 0x88, 0xc0, 0xdd, 0x18, 0x34, 0x40, 0x1c, + 0x18, 0x0c, 0xe0, 0x5b, 0x98, 0x13, 0x60, 0x06, 0x1b, 0x6a, 0x08, 0x68, + 0xc0, 0xa9, 0x94, 0x42, 0x66, 0x1b, 0x09, 0x98, 0x90, 0x34, 0x60, 0x71, + 0xe8, 0x08, 0x9c, 0x0a, 0x26, 0x18, 0x8c, 0x46, 0x30, 0x1c, 0x30, 0x50, + 0x2c, 0xc4, 0x20, 0x73, 0x02, 0x83, 0x42, 0x81, 0x62, 0x60, 0xe2, 0x2d, + 0x98, 0x08, 0x00, 0xb2, 0x51, 0x2d, 0x15, 0x18, 0x4a, 0x16, 0x17, 0x0d, + 0x37, 0x91, 0x24, 0xc0, 0xa0, 0x11, 0xc0, 0x22, 0x60, 0x94, 0x00, 0x8c, + 0x04, 0x08, 0x2e, 0x12, 0x96, 0x82, 0x80, 0xe5, 0xcc, 0x55, 0x55, 0x7e, + 0x97, 0x8b, 0xed, 0x36, 0x64, 0x69, 0xb8, 0x9c, 0x10, 0x3b, 0x48, 0x5d, + 0xad, 0xfc, 0x00, 0xe5, 0xb4, 0xd0, 0xfc, 0x98, 0x13, 0xae, 0x0a, 0x2e, + 0x48, 0x3c, 0xa3, 0xa6, 0xc5, 0x81, 0xcc, 0xa4, 0xe8, 0x56, 0x74, 0x0f, + 0x0c, 0x4e, 0xd3, 0x13, 0x49, 0x66, 0x8c, 0x9d, 0x9d, 0x93, 0x8f, 0x23, + 0x61, 0x00, 0xec, 0xa8, 0x89, 0x7a, 0x0c, 0x10, 0x99, 0x1c, 0x95, 0xe3, + 0x85, 0x56, 0x2b, 0x56, 0x87, 0x63, 0xa3, 0x94, 0xca, 0xd6, 0x56, 0x03, + 0xc3, 0xb2, 0xe4, 0xf9, 0x47, 0xff, 0xfb, 0xd4, 0x60, 0x6a, 0x8d, 0xd9, + 0x1e, 0x70, 0x3f, 0x8b, 0xfc, 0x63, 0x70, 0x6f, 0x2e, 0x08, 0x11, 0x3c, + 0x65, 0x6e, 0x1c, 0x7d, 0xc1, 0x06, 0x4f, 0xe9, 0x0d, 0xc1, 0x80, 0xb7, + 0xe0, 0x85, 0x31, 0x95, 0xba, 0xcc, 0x61, 0x62, 0x89, 0xce, 0x99, 0x91, + 0x2c, 0x98, 0xe9, 0xd2, 0x11, 0x4d, 0x8c, 0x75, 0xce, 0x71, 0x52, 0xca, + 0xa7, 0xe1, 0xcc, 0xc3, 0x66, 0x9e, 0x91, 0xc5, 0x85, 0x57, 0x9b, 0x26, + 0xda, 0x03, 0x96, 0x18, 0xe6, 0x29, 0x56, 0x2e, 0xb1, 0xf8, 0x94, 0x21, + 0x72, 0xc8, 0xa5, 0x7f, 0x2c, 0xc4, 0x91, 0x38, 0xec, 0x65, 0x78, 0xd8, + 0xaa, 0xaa, 0xf4, 0x10, 0xa0, 0x21, 0x30, 0xc2, 0x09, 0x5e, 0xa5, 0xf4, + 0x12, 0xe9, 0x2c, 0x60, 0xea, 0xf2, 0xb1, 0xfc, 0x2a, 0xc1, 0x31, 0xcc, + 0x40, 0x07, 0x86, 0xa4, 0x9a, 0x4c, 0xcf, 0xaa, 0xc0, 0x8f, 0x1e, 0xd4, + 0xa6, 0x4b, 0x41, 0x21, 0x69, 0x2e, 0xc3, 0xf0, 0xf2, 0x23, 0x99, 0xb6, + 0x59, 0x79, 0x91, 0xec, 0xd8, 0x2f, 0x7e, 0x69, 0x22, 0x21, 0x59, 0x6c, + 0xec, 0xda, 0x92, 0x8a, 0xae, 0xc7, 0x65, 0xaa, 0x2a, 0x3b, 0xab, 0x6b, + 0x24, 0x95, 0x90, 0xd6, 0x96, 0xbe, 0xa5, 0x96, 0xb9, 0x15, 0x99, 0xdd, + 0x74, 0x77, 0x5e, 0x55, 0x2a, 0xa3, 0x19, 0xad, 0x62, 0x5d, 0xda, 0x89, + 0x54, 0x32, 0x2f, 0xd1, 0xab, 0x66, 0x20, 0xd1, 0x57, 0x45, 0x72, 0xd9, + 0x8c, 0x84, 0x2b, 0xa9, 0xd0, 0x8a, 0xc2, 0x62, 0x23, 0xc3, 0x86, 0x77, + 0x82, 0x0f, 0x0f, 0x84, 0x81, 0x45, 0x45, 0x85, 0x00, 0x60, 0xe8, 0x79, + 0x46, 0x07, 0x4c, 0x14, 0x98, 0x03, 0x60, 0x02, 0x98, 0x06, 0x80, 0x69, + 0x18, 0x1d, 0x01, 0x06, 0x98, 0x09, 0x40, 0xc3, 0x18, 0x41, 0x60, 0x5a, + 0x83, 0x12, 0x8e, 0x3d, 0x16, 0x16, 0x01, 0x32, 0x31, 0x81, 0x17, 0x30, + 0x14, 0x41, 0xb3, 0x30, 0x39, 0xc0, 0xdf, 0x30, 0x26, 0x01, 0x5c, 0x30, + 0x71, 0xc0, 0x3a, 0x30, 0x30, 0x40, 0x35, 0x30, 0x00, 0x00, 0x09, 0x30, + 0x10, 0x80, 0x41, 0x37, 0x40, 0x4c, 0x49, 0x43, 0x06, 0x00, 0xb1, 0xcc, + 0x0d, 0xc5, 0x63, 0x40, 0x2b, 0x49, 0x5d, 0xc0, 0xae, 0x14, 0xb6, 0x07, + 0x88, 0x32, 0xe6, 0x62, 0xd4, 0x21, 0x96, 0x1b, 0x02, 0xdc, 0x7f, 0xa7, + 0xe5, 0x31, 0x29, 0x74, 0x91, 0x77, 0x39, 0x4c, 0x3a, 0x89, 0xaf, 0x49, + 0xe4, 0xb0, 0xf3, 0xb2, 0xfc, 0x43, 0xce, 0xcc, 0xfb, 0xf3, 0x38, 0xd2, + 0x5d, 0x59, 0x6c, 0x86, 0x59, 0x39, 0x34, 0x58, 0x70, 0x0a, 0x81, 0x50, + 0x0b, 0x05, 0x9c, 0xd1, 0x43, 0xa4, 0xa9, 0x10, 0x65, 0x8d, 0x1c, 0x68, + 0xd1, 0x56, 0x74, 0x2a, 0x5d, 0x86, 0x08, 0xd1, 0xa7, 0x75, 0x43, 0x58, + 0x7c, 0xb1, 0x2d, 0xd0, 0xaa, 0xa9, 0x8b, 0x62, 0xa8, 0xaa, 0x45, 0x74, + 0x70, 0xd2, 0xa6, 0x4b, 0x82, 0xad, 0x13, 0x38, 0x9c, 0xdb, 0xd4, 0x6d, + 0x44, 0xab, 0x3a, 0x29, 0xd4, 0x43, 0x14, 0x53, 0xe3, 0xc7, 0xda, 0x21, + 0xf2, 0x36, 0xd1, 0x87, 0x54, 0xa3, 0x9b, 0x24, 0xbd, 0x0c, 0x7a, 0x5c, + 0x5e, 0x8a, 0x69, 0x1a, 0xc4, 0x46, 0xa3, 0x6e, 0x9a, 0x0b, 0x62, 0xd4, + 0xd1, 0x18, 0x69, 0x30, 0xec, 0x38, 0xa0, 0xf8, 0xf2, 0x68, 0xc2, 0x03, + 0xe1, 0xe0, 0xd0, 0x80, 0x06, 0xb2, 0x78, 0xb8, 0x6c, 0x6e, 0xa6, 0x9d, + 0x40, 0xcd, 0x56, 0x5d, 0x42, 0x2f, 0x1c, 0x98, 0xcf, 0x5f, 0x3e, 0xef, + 0xe8, 0x46, 0x59, 0xe1, 0x11, 0x1d, 0x9d, 0x91, 0xaf, 0x4f, 0xec, 0x92, + 0x6a, 0xab, 0x76, 0x67, 0x3a, 0xde, 0xf3, 0x27, 0xf3, 0xe9, 0xdf, 0xbb, + 0x64, 0x25, 0xaa, 0x5d, 0x9a, 0x9b, 0x26, 0x8a, 0x8d, 0xa3, 0x99, 0x7b, + 0xef, 0x42, 0x6a, 0xea, 0xad, 0x4c, 0xfb, 0x5e, 0x6d, 0xbe, 0xb7, 0x77, + 0x6a, 0x2d, 0x6a, 0x57, 0xee, 0xdb, 0x11, 0x10, 0xe4, 0x48, 0xd1, 0xa5, + 0x1a, 0x50, 0x30, 0xe1, 0x23, 0x89, 0x94, 0xc1, 0x32, 0x1c, 0xa3, 0x06, + 0xb9, 0xce, 0x26, 0x99, 0x00, 0x03, 0x02, 0x20, 0x07, 0xd3, 0x02, 0x54, + 0x1a, 0x00, 0xa8, 0x12, 0x26, 0x0a, 0xd8, 0x31, 0xc6, 0x12, 0xa0, 0x70, + 0x26, 0x33, 0x4a, 0x2b, 0x87, 0xaf, 0x9b, 0x52, 0xa6, 0x3d, 0x68, 0x70, + 0x86, 0x0f, 0xb0, 0x0f, 0xa6, 0x01, 0x98, 0x1f, 0x86, 0x09, 0xc0, 0x37, + 0x26, 0x19, 0x28, 0x1c, 0xa6, 0x09, 0x28, 0x0f, 0x86, 0x01, 0xf0, 0x04, + 0x66, 0x01, 0x50, 0x00, 0x85, 0xc5, 0x42, 0xb5, 0xa8, 0x61, 0x7f, 0x84, + 0x3b, 0x5d, 0x91, 0xdc, 0xe3, 0x13, 0xfd, 0x81, 0xa4, 0xf0, 0xcc, 0xd2, + 0xc4, 0x10, 0x01, 0x77, 0xec, 0xc6, 0x62, 0x32, 0x3a, 0x3a, 0x57, 0x92, + 0x35, 0x2b, 0xb6, 0xdd, 0x26, 0x2b, 0x43, 0xb7, 0x33, 0x87, 0x9a, 0x3d, + 0xf9, 0x9e, 0xd0, 0xc6, 0x25, 0xb2, 0xf9, 0x7f, 0x66, 0x6e, 0xca, 0x2c, + 0x2e, 0xcc, 0x11, 0xb6, 0x58, 0xf2, 0x72, 0x63, 0x35, 0x7a, 0xc4, 0xa3, + 0x66, 0x16, 0xda, 0x7b, 0x56, 0xa2, 0x3c, 0x6f, 0xb2, 0x82, 0xfe, 0xd3, + 0xba, 0x50, 0x8d, 0x8c, 0xc6, 0x1b, 0x9d, 0xb5, 0x3c, 0x8c, 0x12, 0x56, + 0xc6, 0x7b, 0x29, 0x74, 0xe5, 0xf6, 0xf6, 0x30, 0x6d, 0x5e, 0x45, 0xb2, + 0x51, 0xce, 0x2f, 0x54, 0xf6, 0x14, 0x82, 0x7f, 0x10, 0xaf, 0xb2, 0x8a, + 0x8d, 0xf9, 0x6b, 0x57, 0x17, 0x2e, 0xc2, 0x71, 0x74, 0xd8, 0x7c, 0xbc, + 0xf2, 0x2e, 0x74, 0x65, 0x0a, 0x7d, 0xde, 0x25, 0x24, 0x7b, 0x36, 0xe2, + 0xf5, 0xa7, 0x38, 0x2e, 0x8b, 0x2c, 0xef, 0xc8, 0x30, 0x54, 0x3d, 0x64, + 0xc8, 0x13, 0x9b, 0xe7, 0x1f, 0xff, 0xfb, 0xd4, 0x60, 0x6d, 0x0c, 0xd6, + 0xda, 0x70, 0x41, 0x13, 0xfa, 0x4b, 0x70, 0x75, 0xae, 0x08, 0x01, 0x64, + 0x68, 0x6e, 0x1c, 0x15, 0xc1, 0x08, 0x6f, 0xe9, 0x6d, 0xc1, 0xe6, 0x38, + 0x1f, 0xc0, 0xf1, 0xa1, 0xb8, 0x88, 0x10, 0x00, 0x5a, 0x50, 0x1c, 0x6a, + 0xf6, 0xa7, 0xa7, 0x70, 0xc2, 0x72, 0x8a, 0xdd, 0x9f, 0xff, 0x10, 0xd1, + 0x2d, 0x25, 0x08, 0xda, 0xa5, 0x73, 0xb7, 0x15, 0xab, 0x11, 0x37, 0xc2, + 0x42, 0xb4, 0xaa, 0x84, 0x46, 0xdc, 0x8e, 0x51, 0x53, 0x2a, 0xb4, 0xb1, + 0xf2, 0xdd, 0xa6, 0xde, 0xa3, 0x2b, 0x89, 0xfa, 0x9f, 0xe2, 0x25, 0xda, + 0xa5, 0x23, 0x86, 0xee, 0x5f, 0xbb, 0xe9, 0xc6, 0x24, 0xf7, 0x75, 0x16, + 0xbe, 0xfc, 0xd3, 0x57, 0x51, 0x55, 0xfc, 0x4f, 0x51, 0x17, 0x74, 0x9d, + 0xc4, 0xec, 0x97, 0xcc, 0x47, 0x7e, 0x89, 0x1f, 0x34, 0xf0, 0x44, 0xdb, + 0x2c, 0x73, 0xc6, 0xd4, 0xde, 0xb3, 0xc3, 0x18, 0x85, 0xd9, 0xa3, 0x84, + 0xe6, 0xa0, 0x8a, 0x40, 0xf0, 0xa8, 0xb1, 0xe4, 0x88, 0x21, 0xd9, 0x61, + 0xf1, 0x95, 0x94, 0x2e, 0xd5, 0x68, 0x80, 0x01, 0x80, 0x08, 0x01, 0x91, + 0x80, 0xc6, 0x05, 0x79, 0x80, 0xbc, 0x06, 0x61, 0x81, 0x7a, 0x0c, 0x09, + 0x82, 0xec, 0x1a, 0x91, 0x88, 0xde, 0xa8, 0x79, 0xc9, 0x36, 0xce, 0xa1, + 0x88, 0xce, 0x1c, 0x59, 0x83, 0xb0, 0x0d, 0xd1, 0x82, 0x40, 0x08, 0xc1, + 0x82, 0xce, 0x08, 0x18, 0x90, 0xb1, 0x26, 0x08, 0xd0, 0x06, 0x80, 0xe0, + 0x11, 0x86, 0x80, 0x9c, 0x71, 0xd8, 0x4a, 0xa6, 0x31, 0xc9, 0x40, 0x7b, + 0xd7, 0xec, 0x46, 0x40, 0xeb, 0x54, 0xd3, 0x75, 0xa2, 0x9e, 0x95, 0x31, + 0xe3, 0x24, 0x00, 0x78, 0x53, 0xfd, 0x35, 0x61, 0xe6, 0xbf, 0x24, 0x78, + 0xec, 0xc1, 0x31, 0x81, 0x51, 0x06, 0x48, 0x1b, 0x93, 0x1b, 0x64, 0xac, + 0xa1, 0xef, 0x44, 0xb7, 0xe9, 0xe0, 0x89, 0xc9, 0x16, 0x08, 0x46, 0x05, + 0xd8, 0xa6, 0x8e, 0xe7, 0x23, 0x6e, 0x8d, 0xbb, 0x16, 0x71, 0x49, 0x90, + 0x36, 0x3e, 0x1a, 0xa7, 0xef, 0x48, 0xdd, 0x63, 0xd6, 0x20, 0x87, 0xd6, + 0x1e, 0x8f, 0x35, 0x7d, 0x45, 0x0f, 0x24, 0xe3, 0xe8, 0xb5, 0x8c, 0x7e, + 0xf9, 0xec, 0x7b, 0x65, 0x36, 0x59, 0x15, 0x4d, 0xab, 0x40, 0xc8, 0xd9, + 0x95, 0x12, 0x93, 0x9c, 0xe7, 0xc1, 0x81, 0xac, 0x47, 0xf7, 0x59, 0xdb, + 0x38, 0xac, 0x9e, 0xba, 0x41, 0xea, 0x36, 0x5f, 0x08, 0x3d, 0xaf, 0x8a, + 0x44, 0xf4, 0x55, 0x7f, 0x17, 0x31, 0x27, 0x69, 0xb3, 0x54, 0xb9, 0xfb, + 0xaa, 0x85, 0x25, 0x8f, 0x93, 0xaf, 0x7b, 0xad, 0xb5, 0x3c, 0x36, 0xe9, + 0xa9, 0xad, 0x6c, 0x3b, 0x6d, 0xa6, 0x26, 0xad, 0xb9, 0x7b, 0x35, 0x83, + 0x50, 0x5e, 0x61, 0x89, 0x5f, 0x03, 0x75, 0x81, 0x87, 0x91, 0xbd, 0xaf, + 0x0f, 0x02, 0x5e, 0xc3, 0x1d, 0xf2, 0xe5, 0x63, 0x41, 0x35, 0x4f, 0xc6, + 0x7b, 0x11, 0x4e, 0x1a, 0x32, 0xa2, 0xd2, 0x5d, 0xd0, 0xd6, 0x31, 0x18, + 0xd9, 0xa9, 0x7a, 0x95, 0xd2, 0x6b, 0xba, 0xe4, 0x75, 0xbc, 0xb5, 0x9d, + 0x4a, 0x8c, 0xc8, 0xf3, 0x73, 0x49, 0x2b, 0x08, 0xd5, 0x35, 0x31, 0x37, + 0xd7, 0x8f, 0x68, 0xe9, 0x26, 0xf1, 0x90, 0x3c, 0x65, 0xde, 0x90, 0xb1, + 0x17, 0x03, 0xf9, 0xb6, 0x48, 0x48, 0x6d, 0xe1, 0x6e, 0xae, 0xe6, 0xbe, + 0x6f, 0xb6, 0x69, 0xa6, 0x93, 0x67, 0x75, 0x59, 0xb4, 0x6f, 0xef, 0xbc, + 0xdc, 0x9c, 0x76, 0x64, 0x3f, 0xe9, 0x45, 0x9a, 0x71, 0x27, 0xa0, 0x8e, + 0x2e, 0x28, 0x70, 0xc1, 0x70, 0x25, 0x21, 0xb4, 0x0c, 0x82, 0xb9, 0x34, + 0x1d, 0x16, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x00, 0x2d, 0xc4, 0x40, 0x00, 0x18, 0x09, 0xa0, 0x1d, 0x18, 0x15, + 0x00, 0x0c, 0x98, 0x15, 0xa0, 0x21, 0x18, 0x23, 0x80, 0x45, 0x98, 0x45, + 0x20, 0x99, 0x18, 0xd2, 0x04, 0x16, 0x9e, 0xca, 0x86, 0x93, 0x18, 0xee, + 0xc0, 0xa7, 0x98, 0x3d, 0x20, 0x39, 0x98, 0x0c, 0xa0, 0x86, 0x98, 0x0c, + 0x60, 0xce, 0x18, 0x28, 0xc0, 0x62, 0x18, 0x0d, 0xc0, 0x35, 0x98, 0x01, + 0x20, 0x25, 0x18, 0x03, 0xc0, 0x03, 0xa8, 0x72, 0x0c, 0xb3, 0x73, 0x2e, + 0x90, 0x01, 0x47, 0x32, 0xd9, 0xea, 0xb0, 0xef, 0x36, 0xb4, 0x29, 0x6a, + 0x7b, 0xc8, 0x0c, 0x01, 0xbf, 0x7a, 0x01, 0x68, 0x91, 0x59, 0x0f, 0x54, + 0xe6, 0x9a, 0xcd, 0x72, 0x00, 0x44, 0x0c, 0xa4, 0x79, 0xde, 0xc8, 0x19, + 0xeb, 0x5b, 0x0d, 0x96, 0x76, 0xb7, 0x25, 0xcd, 0x93, 0x54, 0x5f, 0x4b, + 0xc9, 0x54, 0xb8, 0x2a, 0x83, 0xe8, 0x78, 0x07, 0x65, 0x1f, 0x56, 0x4a, + 0x5d, 0xb2, 0x84, 0xa3, 0xf5, 0x7a, 0x6a, 0xa9, 0x84, 0x24, 0xc5, 0xb6, + 0x8e, 0xe2, 0xba, 0x44, 0x2d, 0x5d, 0x22, 0x6a, 0x5a, 0x9c, 0xa8, 0x61, + 0xcb, 0x9a, 0xf3, 0x13, 0x32, 0x5a, 0x6a, 0xdc, 0xd4, 0x2d, 0xbe, 0x23, + 0x46, 0xc6, 0x42, 0xd3, 0x72, 0xa5, 0x4f, 0xf3, 0x3d, 0xef, 0x18, 0xff, + 0x5a, 0xa4, 0xaf, 0xe1, 0x6f, 0xd2, 0xab, 0xb9, 0x3e, 0x65, 0x24, 0xd4, + 0x64, 0x29, 0x22, 0x64, 0x61, 0x24, 0x33, 0xcb, 0x21, 0x10, 0x2a, 0x46, + 0xf4, 0x60, 0xa1, 0x25, 0x80, 0x13, 0x64, 0x00, 0x00, 0x13, 0x79, 0x2d, + 0x55, 0x93, 0xba, 0x2d, 0xb6, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x09, 0x96, + 0x79, 0x70, 0x42, 0xbb, 0xfb, 0x43, 0x70, 0x69, 0xce, 0x08, 0x26, 0x2c, + 0xc5, 0x6e, 0x21, 0x5d, 0xc0, 0xfe, 0x0f, 0xf5, 0xed, 0xc2, 0x05, 0xb8, + 0x1f, 0xc1, 0x91, 0xa1, 0xb8, 0xef, 0x67, 0x55, 0xf7, 0x2f, 0xe3, 0xdb, + 0x63, 0xe4, 0xfd, 0xf7, 0xf8, 0x44, 0x20, 0x2e, 0xa7, 0x6b, 0x7c, 0xfc, + 0xaf, 0xdb, 0x5d, 0xa8, 0xf6, 0xd4, 0xb4, 0xc3, 0x08, 0xec, 0x8f, 0xcc, + 0x4c, 0x8f, 0x75, 0x74, 0xae, 0xbd, 0x27, 0x54, 0x46, 0xdb, 0xd6, 0xbe, + 0xaa, 0xf5, 0x57, 0x79, 0x36, 0x62, 0xaa, 0x3a, 0xd2, 0xac, 0x8e, 0xde, + 0xbb, 0xa3, 0xf7, 0x77, 0x5a, 0xcb, 0xe8, 0xc8, 0x75, 0xad, 0xa8, 0x9a, + 0xbd, 0x6b, 0xbb, 0x6a, 0xc4, 0x31, 0x92, 0x45, 0x13, 0x11, 0x98, 0x71, + 0xcf, 0x09, 0xb8, 0xe0, 0x51, 0x61, 0x30, 0x93, 0x1c, 0x34, 0x41, 0xc3, + 0xae, 0x20, 0x60, 0x44, 0x01, 0xb2, 0x60, 0x62, 0x82, 0x90, 0x60, 0x1f, + 0x84, 0x82, 0x60, 0x6b, 0x07, 0xa8, 0x60, 0xc9, 0x91, 0x32, 0x62, 0xba, + 0x68, 0xe0, 0x71, 0x90, 0x7a, 0xe6, 0x63, 0x34, 0x11, 0x88, 0x61, 0x7d, + 0x87, 0xc2, 0x61, 0x39, 0x83, 0x9a, 0x61, 0xb9, 0x02, 0xd8, 0x63, 0xc2, + 0x80, 0x6e, 0x61, 0x73, 0x80, 0x6e, 0x60, 0x51, 0x01, 0x5c, 0x60, 0x2b, + 0x80, 0x26, 0x3c, 0x0c, 0x0e, 0x01, 0x46, 0x07, 0x81, 0xa6, 0x29, 0x54, + 0x06, 0x63, 0x09, 0x08, 0x16, 0xc2, 0xa3, 0xe5, 0xfe, 0x82, 0xeb, 0x23, + 0xfc, 0x72, 0x5b, 0xc2, 0xfb, 0x91, 0x07, 0x4f, 0xdc, 0xb6, 0x59, 0x30, + 0xd5, 0xa9, 0x9b, 0xac, 0x01, 0x1d, 0xad, 0x36, 0x2a, 0x05, 0x22, 0xc4, + 0xa2, 0x8e, 0x50, 0xdc, 0x65, 0x2b, 0x32, 0x8b, 0x38, 0xa5, 0xc8, 0x69, + 0x60, 0x6c, 0x6e, 0x57, 0x76, 0x89, 0x8d, 0xc5, 0x27, 0xa3, 0xf9, 0x0e, + 0x51, 0xe4, 0xe2, 0xc8, 0xa6, 0x4e, 0x33, 0x42, 0xb3, 0x6c, 0x5d, 0xb0, + 0x0a, 0x72, 0x9d, 0x73, 0x96, 0x68, 0xce, 0xf6, 0xaf, 0xb3, 0xd6, 0xbd, + 0x96, 0x1c, 0xc3, 0xb2, 0xbf, 0x0c, 0xfe, 0xd4, 0x57, 0xb3, 0x8d, 0x25, + 0x66, 0x9b, 0x2b, 0x15, 0x9b, 0xc3, 0x70, 0x6b, 0xdb, 0x82, 0x8a, 0x2e, + 0x1f, 0xb5, 0x3e, 0x95, 0x73, 0xad, 0x4c, 0xda, 0x6f, 0xc7, 0xac, 0x26, + 0x18, 0x32, 0xb5, 0xb7, 0x44, 0xab, 0xbc, 0x2a, 0x36, 0xf1, 0x81, 0x83, + 0x36, 0x92, 0x3b, 0xb7, 0x70, 0xcd, 0x88, 0xcc, 0xb0, 0x22, 0xcb, 0x79, + 0xa1, 0xc3, 0xdd, 0x5c, 0x0f, 0xaa, 0x41, 0x6b, 0xdb, 0xe7, 0xaf, 0xdf, + 0x5a, 0x0c, 0x64, 0xcd, 0x25, 0x87, 0x76, 0x79, 0x2d, 0x56, 0x4e, 0xd5, + 0x97, 0x26, 0x18, 0x5b, 0x7b, 0x1e, 0x1b, 0xe9, 0x97, 0x11, 0x16, 0x95, + 0xae, 0x9e, 0x32, 0x5d, 0xe2, 0xfb, 0xd7, 0x6a, 0x17, 0x4d, 0x4c, 0xc9, + 0xd6, 0xa6, 0x63, 0x59, 0x90, 0x7c, 0xb7, 0xba, 0x53, 0x2b, 0xb3, 0x9d, + 0x2e, 0x79, 0xd0, 0xd2, 0xe5, 0x76, 0xdf, 0x1d, 0xcc, 0xc2, 0x1f, 0x1a, + 0x0b, 0x33, 0xa3, 0xb9, 0x88, 0x35, 0xa9, 0x88, 0xcf, 0x33, 0xda, 0x72, + 0xa4, 0x39, 0x23, 0x79, 0x81, 0xd2, 0x92, 0xf7, 0xcb, 0x57, 0xb4, 0x0d, + 0xb5, 0x92, 0x6a, 0x7b, 0x5b, 0xaa, 0x69, 0xcf, 0x75, 0xaa, 0x1b, 0x0f, + 0x59, 0xba, 0xe9, 0x17, 0x0d, 0x34, 0xdc, 0xca, 0xf3, 0xf5, 0x6d, 0x13, + 0x13, 0xeb, 0xa5, 0xe5, 0x45, 0x4d, 0xcb, 0x7c, 0x4d, 0x75, 0x09, 0x11, + 0x23, 0x96, 0x2a, 0xe6, 0x20, 0x56, 0x6f, 0x98, 0x22, 0xde, 0xe5, 0x6c, + 0x7f, 0xa8, 0xea, 0xca, 0x22, 0x1d, 0xa0, 0xf9, 0x81, 0x43, 0xc7, 0xc9, + 0xc6, 0x9e, 0x30, 0x7f, 0x8c, 0x25, 0x45, 0x04, 0x21, 0x71, 0xa1, 0x80, + 0x6d, 0x01, 0xe8, 0x86, 0xe1, 0xe9, 0x01, 0x41, 0x04, 0x41, 0x14, 0x11, + 0x85, 0xc6, 0xa6, 0x20, 0xa6, 0xa2, 0x99, 0x97, 0x1c, 0x9c, 0x17, 0x19, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x00, 0x00, 0x00, 0x02, 0x4b, 0xb4, 0x48, 0x00, 0x60, 0x0a, 0x00, + 0x06, 0x44, 0x00, 0xd1, 0x30, 0x12, 0x00, 0x20, 0x41, 0xcc, 0x11, 0x80, + 0x07, 0x8c, 0x37, 0xb0, 0x1a, 0x8d, 0xcc, 0x30, 0x6c, 0x4c, 0x3b, 0xb0, + 0x16, 0xcc, 0x10, 0xc0, 0x1f, 0x0c, 0x05, 0x20, 0x24, 0x0c, 0x01, 0xb0, + 0x32, 0x4c, 0x02, 0x50, 0x13, 0xc7, 0x14, 0x32, 0x22, 0x84, 0xce, 0x9a, + 0x3a, 0x3a, 0xe6, 0x35, 0x70, 0x7a, 0xc9, 0x1d, 0x8e, 0xd2, 0xf6, 0xf3, + 0x4d, 0x8a, 0xe5, 0xd6, 0xe2, 0x60, 0x83, 0x4e, 0xd6, 0xde, 0x97, 0xae, + 0xa7, 0x18, 0xa5, 0x2c, 0x6a, 0x52, 0xd8, 0x01, 0xd0, 0xb6, 0xe6, 0x86, + 0x16, 0x4b, 0x82, 0xee, 0x50, 0x2c, 0xb6, 0x27, 0x9f, 0x0b, 0xe7, 0x92, + 0x3d, 0x48, 0x2b, 0x47, 0x6c, 0xbe, 0x0d, 0x7c, 0x69, 0xf1, 0x12, 0x2d, + 0x20, 0xef, 0xc0, 0xb7, 0xb4, 0x1a, 0x63, 0xfd, 0x53, 0x18, 0xb6, 0x37, + 0xbf, 0xfe, 0xab, 0xf5, 0xf1, 0xf7, 0xa8, 0x75, 0x78, 0x18, 0xa3, 0x1e, + 0x6d, 0xdf, 0x7d, 0xe3, 0x5e, 0x9a, 0x7d, 0x42, 0xfd, 0x7a, 0xbb, 0x2d, + 0xd9, 0xad, 0x74, 0x8b, 0x9d, 0x62, 0xc2, 0x82, 0x88, 0xa4, 0xb0, 0x04, + 0xc4, 0x95, 0xfb, 0x85, 0x74, 0xfe, 0x14, 0x4d, 0xd3, 0x7f, 0x34, 0x24, + 0x25, 0x05, 0x5b, 0x94, 0xd2, 0x37, 0x4c, 0xff, 0x0f, 0x1b, 0x3c, 0x8e, + 0xeb, 0x73, 0xfd, 0xa9, 0xf3, 0x37, 0xdb, 0xb8, 0xba, 0xa9, 0x9a, 0x8b, + 0xbe, 0x75, 0x6e, 0x5b, 0x9e, 0xe7, 0xfb, 0xa9, 0xe6, 0x2f, 0x55, 0x8f, + 0xff, 0x89, 0xfe, 0xfa, 0x88, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x08, 0xd5, + 0x2d, 0x36, 0x45, 0xeb, 0xfa, 0x7a, 0xe0, 0x6a, 0x8d, 0xf8, 0x10, 0x3c, + 0x68, 0x6e, 0x1e, 0x31, 0xc1, 0x00, 0x0f, 0xf1, 0x8d, 0xc2, 0x45, 0xb8, + 0x1f, 0x45, 0xa3, 0x25, 0xb8, 0x98, 0xaf, 0x89, 0xe7, 0xaa, 0xdb, 0xdb, + 0x6a, 0xfa, 0x5b, 0xb9, 0xe3, 0xfb, 0x8b, 0xff, 0x59, 0xff, 0x4b, 0xea, + 0xd2, 0xeb, 0xae, 0xd2, 0x6e, 0x38, 0xd6, 0x12, 0x3d, 0x37, 0x57, 0x9a, + 0x85, 0x1c, 0x4b, 0x10, 0x9c, 0x0f, 0x16, 0x71, 0x58, 0x14, 0x1e, 0x1d, + 0x1e, 0x41, 0x80, 0xa8, 0xe1, 0x42, 0x4a, 0x36, 0x47, 0x98, 0x14, 0xe0, + 0x77, 0x12, 0x02, 0x42, 0x60, 0x36, 0x84, 0x00, 0x60, 0x5f, 0x06, 0xea, + 0x60, 0x92, 0x8f, 0xa0, 0x62, 0x81, 0x58, 0xfa, 0x73, 0x11, 0x77, 0xdc, + 0x61, 0x7f, 0x0f, 0x9a, 0x60, 0x69, 0x05, 0xe0, 0x60, 0xdf, 0x01, 0x44, + 0x61, 0x82, 0x81, 0x1c, 0x63, 0x47, 0x00, 0xd8, 0x61, 0x4b, 0x00, 0x7a, + 0x60, 0x4e, 0x80, 0x40, 0x24, 0x0b, 0x90, 0xf0, 0xbc, 0x40, 0x30, 0x14, + 0x08, 0x1a, 0x5f, 0x66, 0x79, 0xc1, 0xe8, 0x28, 0x24, 0xc9, 0x59, 0x52, + 0x1e, 0x49, 0xe5, 0x45, 0x50, 0x25, 0xac, 0x2a, 0xc1, 0x43, 0x81, 0xfb, + 0x53, 0xd2, 0xc6, 0xe7, 0x3b, 0x51, 0xe0, 0x7f, 0x68, 0x6d, 0xcc, 0xa4, + 0xe3, 0x35, 0xce, 0x1e, 0x96, 0xd3, 0x59, 0x59, 0xf7, 0xe1, 0xcb, 0x75, + 0x2f, 0xba, 0xb6, 0xf0, 0xfe, 0xcf, 0xbb, 0x10, 0x92, 0xc2, 0xa3, 0xc5, + 0xa4, 0x22, 0x2c, 0x5f, 0x8c, 0xc2, 0xea, 0x88, 0x22, 0xf8, 0x4b, 0x91, + 0x45, 0xf1, 0x36, 0xef, 0xbd, 0x75, 0xab, 0xd9, 0x44, 0xc4, 0xbc, 0xb1, + 0x62, 0x8d, 0x61, 0x6a, 0x36, 0x4b, 0xef, 0x44, 0x7e, 0xc7, 0x52, 0x51, + 0x30, 0xfb, 0xa8, 0x6a, 0x91, 0x55, 0xf6, 0xdc, 0x31, 0x66, 0x23, 0x85, + 0x8c, 0x1c, 0x7e, 0x2c, 0x7e, 0xab, 0x7d, 0x65, 0x16, 0xb8, 0xba, 0x04, + 0xfd, 0xe7, 0x1b, 0xb5, 0x46, 0xb4, 0x49, 0xe8, 0x6e, 0x91, 0x97, 0x33, + 0xad, 0x58, 0x24, 0xdd, 0xf6, 0x96, 0x3f, 0x44, 0xf6, 0x6f, 0x18, 0x7f, + 0x6e, 0xeb, 0x2c, 0xd9, 0x88, 0x39, 0x7e, 0x32, 0xc9, 0x8e, 0xff, 0x44, + 0xed, 0xd6, 0xa4, 0x65, 0xe2, 0xc1, 0x4a, 0x07, 0x0a, 0xcf, 0x38, 0x95, + 0x51, 0x56, 0xdb, 0x2b, 0x0e, 0xa9, 0x7b, 0x12, 0x06, 0x62, 0x2a, 0x03, + 0xfc, 0xb6, 0x18, 0x5f, 0xc6, 0x67, 0x23, 0x79, 0x56, 0xc2, 0xe5, 0x89, + 0xba, 0xde, 0xa3, 0xac, 0x02, 0x52, 0x24, 0x88, 0x5a, 0x0e, 0xac, 0xbb, + 0x69, 0xbd, 0xd9, 0x29, 0xb1, 0x7c, 0xe9, 0x30, 0x33, 0xd4, 0x25, 0x7b, + 0xd7, 0x9e, 0x69, 0x04, 0x2f, 0xbf, 0x43, 0xb9, 0x99, 0xe2, 0x7d, 0x79, + 0xf4, 0x3d, 0x3b, 0xe9, 0x5a, 0x3d, 0xb9, 0xb9, 0xfa, 0x93, 0x29, 0x62, + 0x6f, 0x4e, 0x52, 0xfe, 0xeb, 0x16, 0xa4, 0xe8, 0xea, 0x3c, 0xb7, 0x7e, + 0xbc, 0x72, 0x49, 0x74, 0xbc, 0xbb, 0x17, 0xeb, 0x2d, 0x57, 0x6c, 0x95, + 0xa8, 0xad, 0x91, 0x8c, 0x33, 0xb3, 0x5a, 0xc6, 0xc5, 0x76, 0xb3, 0x12, + 0xad, 0xfe, 0xea, 0x2b, 0x4a, 0xd9, 0xbb, 0xab, 0x8d, 0x45, 0xb6, 0x3d, + 0x46, 0x1a, 0xc3, 0xf3, 0x5a, 0x7a, 0x98, 0xd5, 0x4b, 0x50, 0x6a, 0x04, + 0x91, 0x1c, 0x6d, 0xaa, 0xa7, 0x16, 0x11, 0xea, 0xf0, 0x43, 0x46, 0xc4, + 0x84, 0xa0, 0x0e, 0xae, 0xc0, 0x46, 0x83, 0x51, 0x0a, 0xa3, 0x30, 0x1a, + 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x00, 0x37, 0x40, 0x00, 0x2c, 0x02, 0x10, 0xf0, 0x20, 0x06, 0x04, + 0xf8, 0x09, 0xe6, 0x08, 0xf0, 0x16, 0xc6, 0x10, 0xb8, 0x30, 0x66, 0x30, + 0xe1, 0x65, 0x87, 0x9e, 0xd1, 0xb5, 0x66, 0x36, 0x30, 0x3e, 0x06, 0x11, + 0x78, 0x29, 0xe6, 0x08, 0x58, 0x28, 0xa6, 0x06, 0xd0, 0x33, 0x06, 0x0c, + 0xe8, 0x18, 0x06, 0x04, 0x08, 0x0c, 0xa1, 0x00, 0x0c, 0x03, 0x80, 0x87, + 0x53, 0xa5, 0x8e, 0x5c, 0x41, 0x04, 0xb4, 0x2c, 0x0f, 0x67, 0x90, 0x6c, + 0xba, 0x57, 0x76, 0x8e, 0x5f, 0x0d, 0x52, 0xda, 0x86, 0x40, 0x41, 0x66, + 0x9f, 0x02, 0x4a, 0xe5, 0x6e, 0x3c, 0x39, 0x26, 0x66, 0xf0, 0xc5, 0x24, + 0xf2, 0xa9, 0x3a, 0x9c, 0xce, 0xcc, 0x96, 0x03, 0x75, 0x21, 0xbc, 0x2d, + 0xd4, 0xa7, 0x79, 0xb3, 0xbf, 0xcb, 0x74, 0xcc, 0xc3, 0x3a, 0x77, 0x8b, + 0x23, 0x91, 0x39, 0xe7, 0x57, 0x7e, 0xfc, 0x24, 0x91, 0x18, 0xad, 0xf3, + 0x94, 0xcf, 0x08, 0x24, 0xd3, 0xf3, 0x9a, 0x19, 0x41, 0x39, 0x1c, 0x87, + 0x58, 0xda, 0x4a, 0x44, 0xf9, 0x54, 0xef, 0xf0, 0xe1, 0x4f, 0x85, 0x27, + 0x77, 0xbf, 0x1e, 0x97, 0x96, 0x70, 0x8f, 0xe7, 0x99, 0x7f, 0xe6, 0x64, + 0x7d, 0xf6, 0xf3, 0x36, 0xe4, 0x5b, 0x5d, 0xc6, 0xac, 0x5f, 0x5d, 0x4c, + 0x73, 0x02, 0x22, 0x80, 0x01, 0xb3, 0x12, 0xbd, 0x7a, 0x9a, 0xb6, 0x7b, + 0xa9, 0x52, 0x9b, 0x3b, 0xbf, 0x71, 0x31, 0xda, 0xc4, 0xc7, 0xcf, 0xbe, + 0xb6, 0x5d, 0x81, 0x84, 0x60, 0xd4, 0x0f, 0xcb, 0xdc, 0x98, 0xcb, 0x28, + 0x59, 0x1e, 0x99, 0x57, 0xe6, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x09, 0xd5, + 0xaf, 0x6f, 0x43, 0x33, 0xfc, 0x1b, 0x72, 0x6b, 0x0d, 0xf8, 0x11, 0x60, + 0x67, 0x6e, 0x1c, 0x71, 0xc1, 0x02, 0x0f, 0xf1, 0x2d, 0xc2, 0x2a, 0xb8, + 0x1f, 0x81, 0x91, 0xa1, 0xb8, 0xa2, 0xd7, 0x4a, 0x4f, 0xea, 0xaa, 0xa7, + 0xb6, 0xce, 0x89, 0xae, 0xac, 0xee, 0xd5, 0x9d, 0x4b, 0x6d, 0xd6, 0xe9, + 0x64, 0xb3, 0x59, 0x73, 0xac, 0x77, 0x59, 0x8a, 0x93, 0x2a, 0x79, 0x66, + 0x47, 0xb3, 0xd1, 0x9b, 0x77, 0xd2, 0xec, 0xc6, 0x6c, 0xd4, 0x57, 0x7c, + 0xe9, 0xee, 0xaa, 0xe6, 0xac, 0xd3, 0x50, 0x9a, 0xb9, 0x43, 0xc4, 0xb1, + 0xf4, 0x12, 0x4d, 0x24, 0x85, 0x68, 0x41, 0x8e, 0x43, 0x8a, 0x85, 0x86, + 0xaa, 0x30, 0x60, 0x62, 0x01, 0x7e, 0x60, 0x74, 0x82, 0x84, 0x60, 0x72, + 0x02, 0xd6, 0x60, 0xa9, 0x84, 0xfc, 0x61, 0x63, 0x0c, 0x0a, 0x63, 0xf2, + 0xc6, 0x98, 0x7f, 0xda, 0xda, 0xae, 0x64, 0x70, 0x8b, 0x2c, 0x60, 0xf3, + 0x03, 0x56, 0x60, 0x6c, 0x81, 0x90, 0x61, 0x16, 0x04, 0x26, 0x62, 0xaa, + 0x81, 0x96, 0x61, 0x00, 0x81, 0x14, 0x60, 0x34, 0x00, 0xf6, 0x60, 0x34, + 0x80, 0x34, 0x24, 0x15, 0x30, 0x28, 0x94, 0x48, 0x7a, 0x67, 0x08, 0x09, + 0xca, 0x42, 0x65, 0xf8, 0x6c, 0xef, 0x6b, 0x34, 0xce, 0x75, 0x5b, 0x62, + 0xbb, 0xec, 0x3a, 0x44, 0x31, 0xcb, 0x50, 0x44, 0x02, 0xd0, 0xf1, 0xb0, + 0xe7, 0x7e, 0x5b, 0xb4, 0xab, 0x23, 0x37, 0x69, 0x31, 0xb2, 0xb3, 0x68, + 0x5f, 0xfb, 0x13, 0xbc, 0x7b, 0x7f, 0x1f, 0xce, 0xf5, 0x48, 0x51, 0xf8, + 0x34, 0x5c, 0xe3, 0x08, 0x6a, 0x14, 0x6b, 0xdc, 0xe1, 0x88, 0x76, 0xd5, + 0x82, 0x17, 0x3f, 0x69, 0x79, 0x29, 0x2f, 0x57, 0x06, 0x56, 0x55, 0x29, + 0xb0, 0x89, 0x73, 0x86, 0x54, 0x45, 0x32, 0x0c, 0x27, 0x3f, 0x14, 0x2d, + 0x10, 0x00, 0x78, 0x6f, 0xa8, 0xc9, 0xaa, 0x7d, 0xa3, 0x8b, 0xe2, 0x8e, + 0x58, 0x67, 0x70, 0xcd, 0x1b, 0x4e, 0x9d, 0xd7, 0x50, 0xc9, 0x2f, 0xc3, + 0x29, 0x41, 0x36, 0xe3, 0x7d, 0x54, 0xa7, 0x36, 0x6d, 0x65, 0xdd, 0x3f, + 0x16, 0x35, 0x27, 0x32, 0x95, 0xdc, 0xfa, 0xad, 0xb6, 0xbb, 0x33, 0x7d, + 0xb1, 0x29, 0x4e, 0x59, 0xa8, 0xd8, 0xef, 0x7d, 0xc1, 0xae, 0x88, 0xa5, + 0x1b, 0x3e, 0xb0, 0x5d, 0xa1, 0xd1, 0x19, 0x42, 0x4b, 0x64, 0x13, 0x01, + 0x05, 0x20, 0xba, 0xe1, 0x17, 0x61, 0xc9, 0x7c, 0x33, 0x8c, 0xc7, 0xd3, + 0xde, 0x9a, 0x8d, 0xcd, 0x58, 0x06, 0x2c, 0x43, 0xa4, 0x1d, 0x00, 0xa0, + 0x60, 0x82, 0x82, 0x3c, 0x23, 0x81, 0xd2, 0x3a, 0x89, 0x6c, 0x29, 0x04, + 0xe1, 0x7e, 0x3d, 0x83, 0x67, 0x42, 0x44, 0xcb, 0x68, 0x44, 0xf7, 0xb7, + 0x96, 0x4a, 0xe0, 0xd1, 0x88, 0x9c, 0x22, 0xdd, 0x4b, 0x0d, 0x96, 0x99, + 0x75, 0x9b, 0xa8, 0x69, 0x9f, 0x22, 0x18, 0x68, 0xf6, 0x47, 0x52, 0x5f, + 0x5a, 0x85, 0x15, 0xaa, 0xbb, 0x3d, 0xcf, 0xbe, 0x25, 0x28, 0x6c, 0xdf, + 0x48, 0xdc, 0x51, 0x74, 0xdd, 0xee, 0x8a, 0x60, 0xf9, 0x5e, 0x53, 0xef, + 0xc6, 0x41, 0x4a, 0x72, 0x71, 0xdc, 0xd9, 0x0f, 0x03, 0xa9, 0x2a, 0xde, + 0x16, 0x49, 0x1c, 0xb6, 0x30, 0xf3, 0x8b, 0x0e, 0x0b, 0xb1, 0x0e, 0xc3, + 0x91, 0xa1, 0xc0, 0x88, 0x0b, 0x87, 0x81, 0x41, 0xfe, 0x21, 0x04, 0x00, + 0x5a, 0x88, 0x81, 0x10, 0x2f, 0x12, 0x9c, 0x26, 0x4c, 0x41, 0x4d, 0x45, + 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x65, 0x00, 0x03, 0x00, 0x50, 0x01, 0xa3, 0x00, 0xb4, 0x0a, 0x93, + 0x02, 0x70, 0x0d, 0x83, 0x04, 0x94, 0x18, 0x33, 0x08, 0xd0, 0x36, 0x43, + 0x19, 0xc5, 0x3b, 0x33, 0xd5, 0x95, 0xb8, 0xa3, 0x1d, 0xd4, 0x3d, 0x33, + 0x0a, 0x38, 0x21, 0x43, 0x05, 0x70, 0x18, 0x03, 0x05, 0xec, 0x1c, 0x53, + 0x0b, 0xd8, 0x09, 0x53, 0x04, 0x38, 0x06, 0x63, 0x00, 0xac, 0x04, 0xd3, + 0x00, 0x90, 0x00, 0xa5, 0x37, 0x0b, 0x03, 0x85, 0xc0, 0xcc, 0xd2, 0x80, + 0xf0, 0x41, 0x94, 0xb5, 0xde, 0x90, 0xb5, 0xaf, 0xa8, 0xdc, 0x37, 0x5e, + 0xcc, 0xc0, 0xb0, 0xdd, 0xbd, 0xcd, 0xce, 0x3f, 0x52, 0xd8, 0xbb, 0x99, + 0x1f, 0xa7, 0xb2, 0xfe, 0x31, 0xdf, 0xc7, 0x93, 0x51, 0x07, 0x5f, 0x2c, + 0xa8, 0x6f, 0xea, 0x35, 0x7a, 0xb6, 0x33, 0xb9, 0x37, 0x78, 0xf1, 0x1b, + 0x5d, 0x27, 0x6d, 0x97, 0x2b, 0xda, 0xc4, 0x4a, 0xc3, 0x3d, 0x4d, 0xd1, + 0x57, 0x37, 0x5b, 0x75, 0x89, 0xcf, 0xac, 0x86, 0x76, 0x2d, 0x2f, 0xfd, + 0x43, 0x9b, 0xa5, 0x4e, 0xcd, 0x25, 0x3b, 0x29, 0xcd, 0x3d, 0x39, 0xde, + 0xe9, 0xf0, 0xa6, 0x9b, 0xce, 0x92, 0x38, 0xfd, 0x7a, 0x54, 0xe3, 0x57, + 0x6b, 0x74, 0xf1, 0x2c, 0xcb, 0xb3, 0xf3, 0x4b, 0x43, 0xed, 0xae, 0x76, + 0x32, 0xcf, 0xa7, 0xbc, 0x3b, 0xfa, 0xd6, 0x89, 0x39, 0xff, 0x2d, 0xf9, + 0x55, 0x2c, 0xbb, 0xc0, 0x3f, 0x92, 0xb4, 0x0c, 0x35, 0xd2, 0x53, 0x3a, + 0x46, 0x9a, 0x10, 0xa0, 0x38, 0x78, 0x5d, 0x9a, 0x97, 0xf7, 0xf8, 0x65, + 0x85, 0x4f, 0xde, 0xb0, 0x13, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x09, 0xd6, + 0x74, 0x70, 0x42, 0x13, 0xfb, 0x33, 0x70, 0x67, 0x4e, 0x08, 0x10, 0x68, + 0x25, 0x6e, 0x18, 0x81, 0xc1, 0x0a, 0xcf, 0xf0, 0xcd, 0xc1, 0xfd, 0xb8, + 0x1f, 0xc9, 0x91, 0xa1, 0xb8, 0x31, 0xcd, 0x8a, 0x71, 0x98, 0x4e, 0x49, + 0x9d, 0x30, 0x05, 0x14, 0x0c, 0x4f, 0x00, 0x7d, 0xc9, 0x51, 0xdb, 0x9c, + 0xe8, 0xf7, 0x35, 0xad, 0x65, 0x67, 0xb9, 0x2f, 0x33, 0xbf, 0x65, 0xd1, + 0x90, 0x9d, 0x29, 0xb2, 0x5c, 0xcf, 0xa3, 0x15, 0x99, 0x88, 0xf5, 0x55, + 0xd6, 0xe8, 0xc9, 0x7b, 0x95, 0xb2, 0xa9, 0xc8, 0xce, 0xbc, 0xc4, 0xb2, + 0xf7, 0xa3, 0x2a, 0x3e, 0xb5, 0x77, 0x74, 0x2d, 0x4c, 0x4a, 0xd8, 0xaa, + 0xa8, 0xca, 0x97, 0x98, 0x82, 0x83, 0xd4, 0x46, 0xc1, 0xd3, 0x0f, 0x67, + 0x16, 0x0e, 0x31, 0x85, 0x9c, 0x56, 0x08, 0x2e, 0x38, 0x70, 0x44, 0x36, + 0xa1, 0x80, 0xbe, 0x02, 0xa1, 0x80, 0xd4, 0x01, 0x29, 0x81, 0x52, 0x04, + 0x71, 0x82, 0x14, 0x07, 0x89, 0x84, 0x3a, 0x11, 0xc1, 0x8c, 0xac, 0x6d, + 0xd9, 0xeb, 0x4c, 0x94, 0xb1, 0x8e, 0x54, 0x10, 0x29, 0x83, 0xa2, 0x00, + 0x39, 0x80, 0x3e, 0x07, 0xd9, 0x81, 0x5e, 0x0c, 0x01, 0x83, 0xe4, 0x04, + 0xe1, 0x81, 0x74, 0x03, 0x48, 0x90, 0x05, 0x41, 0x00, 0x42, 0xb0, 0xe5, + 0x05, 0x2d, 0x19, 0x81, 0x20, 0x86, 0x2f, 0x04, 0x35, 0x98, 0x6b, 0x18, + 0x37, 0xb8, 0x3f, 0x54, 0xd4, 0xb8, 0xd5, 0x01, 0x05, 0x22, 0x33, 0xd2, + 0xa8, 0x62, 0x43, 0x4a, 0xee, 0x32, 0x58, 0xe4, 0x3b, 0x75, 0xb9, 0x37, + 0x94, 0xd3, 0xfa, 0x9b, 0xc5, 0xe6, 0xa6, 0xe5, 0x4c, 0x7b, 0x0c, 0xeb, + 0x1b, 0xb7, 0xb5, 0x06, 0xc8, 0x76, 0x2e, 0xb5, 0xff, 0xc3, 0xab, 0xdb, + 0x7a, 0x6c, 0xfb, 0xbb, 0x17, 0xb2, 0xfa, 0x6f, 0xc9, 0xff, 0xe6, 0xce, + 0x33, 0x61, 0x68, 0x6f, 0xef, 0xb6, 0xdf, 0xb5, 0x0d, 0xb2, 0xf1, 0xcb, + 0xec, 0xec, 0x6d, 0x36, 0x7d, 0xca, 0xb5, 0x17, 0xf3, 0xfd, 0xec, 0xdf, + 0x5f, 0x5b, 0x36, 0x9b, 0xea, 0x0d, 0x38, 0xfb, 0x53, 0xba, 0xfd, 0x3f, + 0xb7, 0x79, 0xb6, 0xda, 0xd7, 0xf1, 0xd1, 0xde, 0xd8, 0xf3, 0x0c, 0xbe, + 0xd1, 0x07, 0x76, 0x86, 0xf1, 0x27, 0xb9, 0xea, 0x7f, 0xaf, 0x2f, 0x65, + 0x08, 0x79, 0x28, 0x90, 0x3d, 0xda, 0xd4, 0xb2, 0x8f, 0x09, 0x9a, 0x7b, + 0xf1, 0xbe, 0x6a, 0xa6, 0x3c, 0xd5, 0x60, 0xaa, 0xa2, 0xc2, 0x34, 0x04, + 0xca, 0xf4, 0xd0, 0x9f, 0x36, 0x41, 0x43, 0x23, 0xee, 0x59, 0x18, 0xd0, + 0x3b, 0xa9, 0x42, 0x39, 0x53, 0x3f, 0xeb, 0x91, 0xbb, 0x3c, 0xcc, 0x6a, + 0x9c, 0xc2, 0x5d, 0xe2, 0xd2, 0xad, 0xf7, 0x8b, 0x39, 0x33, 0xdf, 0xbf, + 0x51, 0x33, 0xc9, 0xfc, 0x65, 0x44, 0xac, 0xdf, 0xda, 0x77, 0x4f, 0x7c, + 0x53, 0x4c, 0xe7, 0xd4, 0x27, 0x56, 0xd2, 0xd7, 0x48, 0xc8, 0x37, 0x54, + 0xbe, 0xd1, 0xee, 0xb8, 0x99, 0xe3, 0xbb, 0x52, 0xe1, 0xa6, 0xbb, 0x98, + 0x17, 0x74, 0xe0, 0x68, 0xcc, 0x78, 0xce, 0x26, 0x84, 0x31, 0x90, 0x38, + 0xe3, 0xed, 0x09, 0x61, 0xa8, 0x70, 0x88, 0x6a, 0x8b, 0x8b, 0x84, 0xe6, + 0x90, 0x81, 0xe0, 0x36, 0x28, 0x21, 0x34, 0xda, 0x16, 0x13, 0xa6, 0x20, + 0xa6, 0xa2, 0x99, 0x97, 0x1c, 0x9c, 0x17, 0x19, 0x2a, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x18, 0x00, 0x03, 0x01, 0xa0, 0x08, 0xd0, 0x40, 0x13, 0xc6, 0x03, + 0x38, 0x33, 0x26, 0x06, 0x60, 0x5a, 0x46, 0x0d, 0xf8, 0xc9, 0x66, 0x27, + 0x84, 0x80, 0xc7, 0x47, 0xb6, 0x3d, 0xa6, 0x31, 0x40, 0xd9, 0x46, 0x15, + 0x38, 0x62, 0x66, 0x0f, 0xe8, 0x33, 0xa6, 0x14, 0xf0, 0x26, 0x86, 0x2e, + 0x58, 0x0c, 0x46, 0x10, 0xa8, 0x08, 0x66, 0x03, 0xa0, 0x02, 0x80, 0x60, + 0x29, 0x49, 0x82, 0x83, 0xa0, 0xa0, 0xe0, 0xf9, 0x89, 0x71, 0x06, 0xa0, + 0x08, 0x31, 0x39, 0x67, 0x54, 0x52, 0xdd, 0x2a, 0xa8, 0xca, 0x2d, 0xd9, + 0xb8, 0x05, 0x03, 0xd0, 0x6a, 0xc6, 0x6c, 0x72, 0x96, 0x08, 0x6f, 0xe3, + 0x32, 0xf9, 0xe6, 0xe8, 0x50, 0x01, 0x86, 0x22, 0x55, 0x62, 0x2a, 0xa6, + 0x8d, 0x10, 0x44, 0x63, 0x2e, 0xca, 0xa0, 0xcb, 0x99, 0xca, 0xb5, 0x4a, + 0xe8, 0x75, 0xcb, 0xd2, 0xad, 0xb5, 0x7b, 0x4c, 0xa3, 0x6e, 0xcf, 0x47, + 0x2e, 0xf3, 0xd1, 0xcb, 0x34, 0xd7, 0x2d, 0x6a, 0x7a, 0xed, 0xac, 0xf3, + 0xd2, 0xe4, 0x53, 0x96, 0x64, 0x6b, 0x5e, 0xed, 0x2b, 0x8f, 0x35, 0x74, + 0xce, 0x35, 0x13, 0x05, 0xba, 0xeb, 0x6b, 0x69, 0x6b, 0x57, 0xef, 0x96, + 0x7b, 0x76, 0x3d, 0x8a, 0xb4, 0x83, 0xb2, 0x97, 0x42, 0x8e, 0x07, 0x1e, + 0x95, 0xed, 0xcf, 0xc1, 0x57, 0x73, 0xe5, 0xfb, 0xbd, 0x5f, 0xf8, 0x2e, + 0x71, 0x13, 0x73, 0xeb, 0x32, 0xd0, 0xcb, 0x93, 0x8f, 0x75, 0xf2, 0xb5, + 0xbc, 0xb7, 0xff, 0x03, 0x53, 0xb0, 0xc7, 0xd3, 0x15, 0x5c, 0xb1, 0x93, + 0xab, 0x96, 0xaf, 0x88, 0xf9, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x09, 0xd7, + 0x34, 0x70, 0x40, 0x93, 0xfc, 0x63, 0x70, 0x67, 0x2d, 0xf8, 0x21, 0x60, + 0x67, 0x6e, 0x95, 0xf9, 0xc1, 0x0c, 0xcf, 0xec, 0x6d, 0xc1, 0xdc, 0xb8, + 0x20, 0x05, 0x91, 0xa1, 0xb8, 0x86, 0xd5, 0xad, 0x22, 0x20, 0x8d, 0x89, + 0x27, 0x07, 0x25, 0x06, 0x00, 0x5c, 0x6d, 0xa5, 0xbe, 0x59, 0xd5, 0x4c, + 0xf7, 0x9d, 0x37, 0x71, 0xe7, 0x31, 0x8b, 0x5b, 0x6e, 0x33, 0x79, 0x4a, + 0xa4, 0xf7, 0x1f, 0x15, 0xac, 0xd4, 0x3a, 0x30, 0xb5, 0x12, 0xba, 0x6e, + 0x88, 0x48, 0x7b, 0xbc, 0xa9, 0xd7, 0x77, 0xa3, 0xa3, 0x18, 0xf7, 0xea, + 0xb5, 0xb3, 0x9b, 0x65, 0x69, 0xeb, 0x74, 0x54, 0x65, 0xfe, 0xeb, 0x3a, + 0x95, 0xb3, 0xa5, 0x1f, 0xd3, 0x5d, 0x98, 0xc3, 0xdf, 0x77, 0xdd, 0xbf, + 0x6e, 0xfa, 0xfa, 0x9d, 0xda, 0xd4, 0xcc, 0x35, 0x77, 0x74, 0x31, 0xe8, + 0xb6, 0x73, 0x4d, 0x31, 0x5c, 0xe7, 0x20, 0x61, 0xa5, 0x1c, 0xcb, 0x8a, + 0xc2, 0xa6, 0x09, 0x25, 0xc4, 0xb1, 0xb8, 0x92, 0x85, 0x9c, 0xb8, 0x7f, + 0x43, 0x01, 0x60, 0x02, 0x13, 0x01, 0x64, 0x04, 0x00, 0x50, 0x27, 0xa3, + 0x41, 0x15, 0x18, 0x43, 0x00, 0x08, 0x98, 0xc7, 0x60, 0xcf, 0x1e, 0x9b, + 0xa1, 0x78, 0x98, 0xe0, 0xa0, 0x34, 0x98, 0x41, 0x40, 0x74, 0x18, 0x14, + 0x40, 0x92, 0x18, 0x05, 0x20, 0xd4, 0x98, 0x06, 0xa0, 0x44, 0x98, 0x00, + 0xa0, 0x32, 0x31, 0x10, 0xe0, 0x09, 0x18, 0x49, 0x00, 0x43, 0x1e, 0x31, + 0xb2, 0x81, 0xf0, 0x86, 0xa5, 0x3b, 0xf4, 0xfd, 0xc1, 0xf4, 0xe5, 0xea, + 0xf2, 0x50, 0xb0, 0x84, 0xed, 0xfc, 0xa6, 0x5f, 0x59, 0x54, 0xec, 0xab, + 0x94, 0x1a, 0x6e, 0xcb, 0xf6, 0xa5, 0xa9, 0x4d, 0x59, 0x53, 0x11, 0xa6, + 0xe5, 0xef, 0xc2, 0x27, 0xbf, 0xc3, 0x97, 0x1e, 0x0b, 0x0e, 0x74, 0x7f, + 0xa5, 0x52, 0x3b, 0xf9, 0x72, 0xac, 0x23, 0x3b, 0x7d, 0x48, 0xe5, 0x36, + 0xe4, 0x2f, 0xaa, 0x3f, 0x09, 0x88, 0x88, 0x8f, 0xc0, 0x9d, 0x8c, 0xfd, + 0xbc, 0xf6, 0xbb, 0x68, 0x84, 0xb9, 0xb1, 0x93, 0x17, 0x5c, 0xa1, 0x15, + 0x52, 0x2a, 0xe9, 0x0a, 0x75, 0x39, 0xd2, 0x24, 0x3c, 0xeb, 0xfe, 0x94, + 0xb2, 0xc9, 0x33, 0x29, 0x1c, 0x46, 0x5b, 0xe4, 0x6f, 0x20, 0x7c, 0xa6, + 0x7b, 0x1d, 0x1d, 0xb2, 0x71, 0x20, 0x08, 0x27, 0x09, 0xbc, 0xb3, 0x5a, + 0x76, 0xa5, 0x06, 0x51, 0xfd, 0x61, 0x5f, 0xe9, 0xb4, 0x24, 0x8b, 0x1e, + 0x9e, 0x08, 0x18, 0x35, 0x72, 0xdc, 0xc6, 0x3c, 0xa0, 0x0d, 0x0d, 0x8e, + 0x40, 0xd6, 0x7a, 0x53, 0x22, 0x3b, 0xa9, 0x7f, 0xd9, 0xe9, 0x1a, 0x71, + 0x55, 0xe3, 0xe6, 0x61, 0xa7, 0x85, 0xe6, 0x86, 0xbf, 0x17, 0x1a, 0x72, + 0x3a, 0xea, 0xba, 0xea, 0x6b, 0x9f, 0xae, 0x6a, 0x23, 0xd2, 0xa5, 0x26, + 0xb4, 0xe7, 0xbb, 0xb5, 0xba, 0xb6, 0xe1, 0xf3, 0x17, 0x9e, 0x7a, 0x8a, + 0x56, 0xee, 0x9a, 0x6e, 0xfb, 0xa7, 0x94, 0xbb, 0x4e, 0x5a, 0x92, 0x99, + 0xa6, 0x9a, 0x2e, 0x2e, 0x6b, 0xd1, 0x3b, 0x29, 0x9d, 0xbe, 0x43, 0xf3, + 0x60, 0xfa, 0x93, 0x8c, 0x36, 0x1a, 0x8b, 0x08, 0x01, 0x78, 0xb0, 0xc3, + 0xc4, 0x41, 0x35, 0x82, 0xa1, 0x44, 0xc4, 0x14, 0xd4, 0x53, 0x32, 0xe3, + 0x93, 0x82, 0xe3, 0x2a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x12, 0xc0, 0x88, 0x20, 0x04, 0xb4, 0xc0, 0x03, 0x05, 0x18, + 0xc0, 0x7f, 0x0a, 0x1c, 0xc1, 0xc0, 0x1e, 0xc8, 0xc1, 0x22, 0xad, 0x7c, + 0xe3, 0xa2, 0xee, 0xf0, 0xc8, 0xb4, 0x16, 0xa4, 0x1c, 0x1f, 0x71, 0x86, + 0x50, 0x11, 0x11, 0x80, 0x9a, 0x12, 0xa0, 0x28, 0xda, 0xd3, 0x09, 0xb8, + 0x01, 0x43, 0x01, 0x24, 0x05, 0xa3, 0x00, 0x04, 0x03, 0xd3, 0x1c, 0x89, + 0x4c, 0x52, 0x11, 0x08, 0x2b, 0x98, 0xd6, 0x1a, 0x74, 0xc1, 0xc1, 0x8b, + 0x04, 0xc6, 0x16, 0x07, 0x18, 0x30, 0x18, 0x0a, 0x10, 0x16, 0xb1, 0x30, + 0x15, 0x42, 0x02, 0x76, 0x1a, 0x42, 0x36, 0x05, 0x00, 0x68, 0x38, 0x8a, + 0x88, 0x04, 0x45, 0x00, 0x80, 0x3a, 0x43, 0xa9, 0xbb, 0x77, 0x62, 0x6e, + 0xdb, 0x96, 0xbe, 0x9e, 0xca, 0x77, 0xdd, 0xff, 0x9e, 0x79, 0x91, 0xfd, + 0xf7, 0x80, 0xdd, 0xf7, 0xf1, 0xf8, 0x71, 0x26, 0x22, 0x95, 0x64, 0x91, + 0x09, 0x13, 0xde, 0x80, 0xea, 0x02, 0x01, 0xc0, 0x40, 0x90, 0x18, 0x00, + 0xe4, 0x67, 0xc3, 0x62, 0xb3, 0x76, 0xba, 0xe4, 0x96, 0x61, 0x13, 0x4d, + 0x21, 0xc3, 0xc8, 0x11, 0x18, 0x2f, 0x94, 0xcb, 0x96, 0x85, 0xa1, 0x3d, + 0x1f, 0x21, 0x13, 0x25, 0x53, 0x1c, 0x72, 0xd9, 0x25, 0x50, 0x2c, 0xe0, + 0x23, 0x2a, 0x64, 0x69, 0xa3, 0x40, 0xc1, 0x59, 0x7b, 0x46, 0xc4, 0x91, + 0x2a, 0xbd, 0x2c, 0xd2, 0x1d, 0x57, 0xa3, 0x39, 0xd6, 0x45, 0x08, 0x91, + 0x11, 0xf4, 0xea, 0x04, 0x48, 0xda, 0xed, 0x45, 0x98, 0x5b, 0x6a, 0x45, + 0x4e, 0x84, 0xe9, 0x7d, 0x57, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd7, + 0xf5, 0x70, 0x40, 0x03, 0xfc, 0x4b, 0x70, 0x5e, 0xee, 0x08, 0x21, 0x64, + 0x65, 0x6e, 0x9f, 0x7d, 0xc1, 0x02, 0x0f, 0xed, 0x2d, 0xc1, 0xbe, 0xb8, + 0x20, 0x49, 0x93, 0x15, 0xb8, 0x23, 0xae, 0x9a, 0xe4, 0x69, 0x43, 0x17, + 0x8c, 0x19, 0x7b, 0x2d, 0xa2, 0xb8, 0xb4, 0xd9, 0x85, 0x9e, 0xe5, 0x51, + 0x07, 0xb4, 0xec, 0x10, 0xe3, 0xcd, 0x15, 0x3c, 0xe2, 0x35, 0x10, 0x8d, + 0x93, 0x21, 0x68, 0xf1, 0x00, 0x26, 0x3e, 0x53, 0xb6, 0x70, 0xe6, 0x18, + 0xf2, 0xe6, 0x79, 0x73, 0x9b, 0xbb, 0xa4, 0xa7, 0xb6, 0xa4, 0xc9, 0x08, + 0xfb, 0x7e, 0xb7, 0xd2, 0xc6, 0x22, 0xdc, 0x28, 0x66, 0xea, 0xd3, 0xcb, + 0xbc, 0x7d, 0xa5, 0x74, 0x47, 0x4d, 0x88, 0x5d, 0x34, 0xd9, 0xb7, 0x7a, + 0x75, 0xb7, 0x37, 0xa3, 0xdb, 0x36, 0xdf, 0x57, 0x46, 0x32, 0xf7, 0xd9, + 0x91, 0xfc, 0x9d, 0xe9, 0x5e, 0xe9, 0x5c, 0xf7, 0xb9, 0x98, 0x8c, 0x96, + 0x93, 0x3d, 0xec, 0xfd, 0xdd, 0xbd, 0xd5, 0x9e, 0x53, 0x99, 0xd8, 0x70, + 0xb9, 0x20, 0x22, 0x8b, 0x0c, 0x13, 0x17, 0x08, 0xb3, 0x34, 0x30, 0x14, + 0x3e, 0x61, 0x23, 0x00, 0x9c, 0x00, 0x83, 0x02, 0xb0, 0x05, 0xa3, 0x03, + 0x64, 0x06, 0x93, 0x08, 0x40, 0x17, 0x23, 0x14, 0xb4, 0x27, 0x03, 0x27, + 0x31, 0x91, 0xd3, 0xe7, 0xc2, 0xa4, 0x93, 0x45, 0x70, 0x3b, 0x13, 0x03, + 0x34, 0x1f, 0x33, 0x02, 0xb4, 0x21, 0x73, 0x05, 0xf0, 0x1a, 0xe3, 0x0b, + 0x84, 0x12, 0x83, 0x02, 0xa0, 0x10, 0x73, 0x02, 0x48, 0x03, 0xb3, 0x01, + 0x00, 0x05, 0x73, 0x46, 0x2f, 0x31, 0xe1, 0xb3, 0x10, 0x12, 0x35, 0x29, + 0x33, 0x8c, 0x55, 0x32, 0x20, 0x93, 0x08, 0x07, 0x01, 0x04, 0x98, 0x10, + 0x09, 0x82, 0x02, 0x98, 0x20, 0x29, 0x82, 0x06, 0x98, 0x18, 0x21, 0x81, + 0x80, 0x01, 0x80, 0x80, 0x40, 0x46, 0x0a, 0x00, 0x82, 0xcc, 0x1a, 0x2d, + 0x4f, 0x0d, 0x3b, 0xcd, 0x69, 0x95, 0x35, 0xa5, 0xcc, 0xd6, 0x98, 0x92, + 0xee, 0x6b, 0x2f, 0xeb, 0xab, 0x2d, 0x99, 0xbf, 0x4b, 0xcc, 0xa5, 0xf2, + 0x9f, 0xab, 0x4a, 0xe0, 0xcb, 0x61, 0x96, 0x42, 0xfd, 0x02, 0x44, 0x42, + 0x20, 0xb0, 0x98, 0x5d, 0xa5, 0x71, 0xb6, 0x1e, 0xfe, 0x68, 0xd6, 0xc6, + 0x26, 0x10, 0xa6, 0x86, 0x4a, 0xdd, 0x4e, 0xec, 0x7e, 0x0d, 0x38, 0xd4, + 0xdb, 0x52, 0x7d, 0x76, 0x66, 0xb4, 0x12, 0xec, 0xc6, 0xe4, 0xf3, 0x4c, + 0x50, 0x9e, 0x2d, 0x6c, 0xd8, 0x6a, 0xd3, 0x91, 0x45, 0x28, 0x8c, 0xdc, + 0xa7, 0x53, 0xc4, 0x18, 0x71, 0x7f, 0x24, 0x0d, 0x20, 0xd8, 0xc5, 0xb4, + 0xd3, 0x5e, 0x3b, 0x28, 0x15, 0x56, 0xa0, 0xcd, 0xed, 0x27, 0x29, 0x41, + 0x1c, 0xf5, 0x56, 0xdb, 0xa8, 0x9a, 0x9c, 0xed, 0x7a, 0x32, 0x77, 0x9c, + 0x5f, 0x62, 0xc3, 0x50, 0x69, 0x45, 0xcc, 0x54, 0x3d, 0xe4, 0x8a, 0x99, + 0x7b, 0x2f, 0x40, 0x2a, 0x49, 0x53, 0x50, 0x40, 0xf1, 0x1b, 0x60, 0xe3, + 0x66, 0x85, 0x01, 0x20, 0x1f, 0x6a, 0x9a, 0xbb, 0x76, 0xae, 0x35, 0x72, + 0xee, 0xf0, 0xc3, 0xef, 0x6b, 0xeb, 0x3c, 0xd7, 0xec, 0xd0, 0xd7, 0xfc, + 0x36, 0x16, 0xff, 0xfd, 0x88, 0xfa, 0xa5, 0xcd, 0x0d, 0x3f, 0xb2, 0x5b, + 0x1a, 0xa5, 0xb5, 0x3d, 0xd7, 0x27, 0x4d, 0x94, 0x9d, 0x4a, 0xcc, 0x88, + 0xc7, 0x20, 0xb6, 0x86, 0xbd, 0x5e, 0x43, 0x3b, 0xa5, 0xda, 0xcf, 0xa3, + 0x3a, 0x32, 0x22, 0x24, 0xd2, 0xad, 0x59, 0x0c, 0x8c, 0xac, 0xb4, 0x6a, + 0xee, 0xfd, 0xe8, 0xde, 0x63, 0x3d, 0x58, 0xca, 0x72, 0xc9, 0xf2, 0xd0, + 0xf9, 0xae, 0xcd, 0xb9, 0x04, 0x56, 0xda, 0xa9, 0xd0, 0x8c, 0xca, 0x8a, + 0xec, 0x0c, 0x48, 0x08, 0x3c, 0x78, 0xa0, 0x91, 0x0a, 0x2e, 0x2a, 0x34, + 0x82, 0xe2, 0xa2, 0x42, 0x25, 0x0a, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, + 0x39, 0x38, 0x2e, 0x32, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x42, 0x00, 0xff, 0x30, 0x7b, 0x40, 0x2a, 0x30, 0x52, 0x82, + 0x15, 0x30, 0x69, 0x43, 0xc2, 0x30, 0x7a, 0x07, 0x81, 0x30, 0x70, 0x50, + 0x18, 0x3e, 0xbf, 0xce, 0x09, 0x33, 0xe5, 0xc4, 0xd4, 0x30, 0xf0, 0x80, + 0xdd, 0x30, 0x14, 0xc2, 0x0e, 0x30, 0x80, 0x83, 0xab, 0x30, 0x8b, 0xc0, + 0x80, 0x30, 0x86, 0xc0, 0xdc, 0x30, 0x20, 0x80, 0x4d, 0x30, 0x0e, 0x40, + 0x1e, 0x39, 0x25, 0x00, 0xcd, 0x2c, 0x92, 0xe4, 0x49, 0xa0, 0x67, 0xad, + 0xbc, 0x65, 0xc7, 0x61, 0x4a, 0xfd, 0x6a, 0x2d, 0x18, 0xd2, 0x6f, 0x26, + 0xa2, 0xf9, 0x7f, 0x1d, 0x16, 0x70, 0xde, 0x32, 0xc6, 0xb9, 0x02, 0x3b, + 0x50, 0x0b, 0x95, 0x0d, 0xaf, 0xf9, 0x3c, 0xba, 0x41, 0x08, 0x8b, 0xa5, + 0x63, 0xfe, 0xa0, 0x90, 0xc3, 0x30, 0x89, 0xb7, 0x3e, 0x39, 0x2d, 0x65, + 0xff, 0x83, 0x16, 0x05, 0x87, 0x1d, 0xa6, 0xf2, 0x35, 0xf2, 0x08, 0xb7, + 0x0a, 0x43, 0x8d, 0x0f, 0x00, 0x6d, 0x23, 0x96, 0x09, 0x98, 0x54, 0x21, + 0x05, 0xf8, 0x4c, 0xc4, 0xd0, 0xd5, 0x64, 0x27, 0xc8, 0x61, 0xb4, 0x6f, + 0x85, 0x91, 0x64, 0x86, 0x12, 0x85, 0x96, 0x43, 0x90, 0xb3, 0x37, 0xd0, + 0x91, 0x6d, 0x55, 0x9b, 0x44, 0x38, 0x9f, 0x8f, 0x19, 0xce, 0x23, 0x45, + 0x7c, 0xd5, 0x42, 0xc9, 0x79, 0x2e, 0x55, 0x1f, 0xac, 0xf2, 0x9f, 0xa7, + 0x31, 0x0a, 0x2f, 0x23, 0xf0, 0x9d, 0x9c, 0xa1, 0x5a, 0x7a, 0xa3, 0xc9, + 0x63, 0x91, 0x63, 0x57, 0x27, 0x44, 0x1c, 0xbc, 0xa6, 0x25, 0x2e, 0x0e, + 0x2a, 0x41, 0xd6, 0xe6, 0x38, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd9, + 0xf6, 0x6f, 0xbb, 0x83, 0xf8, 0x7b, 0x70, 0x69, 0x8d, 0xf8, 0x10, 0x3c, + 0x25, 0x6e, 0x24, 0x6d, 0xc0, 0xf4, 0x2f, 0xe1, 0xed, 0xc1, 0x5d, 0xb7, + 0xe0, 0xc8, 0xf1, 0x95, 0xb8, 0x4b, 0x79, 0xf4, 0xab, 0x6e, 0x27, 0x25, + 0xee, 0x01, 0x56, 0x6b, 0x09, 0xea, 0x00, 0xde, 0x1c, 0x2c, 0x48, 0x55, + 0x87, 0x52, 0x57, 0x67, 0x51, 0x6d, 0x4c, 0xa7, 0xc6, 0xea, 0xe1, 0x46, + 0x9d, 0x6c, 0x96, 0x0a, 0x91, 0x4a, 0x49, 0x8e, 0x13, 0xc5, 0xf1, 0x86, + 0x86, 0x97, 0x05, 0x01, 0xc4, 0x67, 0x0e, 0x04, 0x4a, 0x18, 0x87, 0x23, + 0x0e, 0x52, 0xf6, 0xf4, 0x82, 0x11, 0x82, 0xda, 0x4f, 0x0f, 0x65, 0x13, + 0x23, 0x09, 0x2f, 0x40, 0x17, 0x54, 0xd0, 0x74, 0x8c, 0x62, 0x06, 0x7c, + 0x85, 0x70, 0xf0, 0x25, 0x44, 0xfc, 0xec, 0x29, 0x36, 0xa4, 0x18, 0xc1, + 0x19, 0x1a, 0x6d, 0xe5, 0x98, 0xf8, 0x03, 0x5c, 0x60, 0x23, 0x5f, 0x30, + 0xd3, 0x6c, 0x6d, 0x95, 0x96, 0x77, 0xb5, 0xaf, 0xa0, 0x95, 0x13, 0x61, + 0x19, 0x8c, 0x2a, 0x64, 0x8b, 0x8a, 0x58, 0x71, 0x29, 0x24, 0xc8, 0xa4, + 0xef, 0xd5, 0x66, 0xb5, 0xc8, 0xe9, 0x2b, 0x1a, 0xa6, 0xbb, 0x3b, 0xa3, + 0xd5, 0x59, 0xac, 0xf6, 0xf4, 0x5d, 0x95, 0x4a, 0xe9, 0x92, 0x84, 0x69, + 0xe5, 0x65, 0x22, 0xb3, 0xa8, 0xbb, 0xb5, 0xed, 0xd6, 0x97, 0xb6, 0x93, + 0x95, 0x25, 0x62, 0xb2, 0x33, 0xa1, 0x91, 0x51, 0x24, 0x6e, 0xfb, 0x67, + 0x41, 0x77, 0x96, 0x84, 0x38, 0xf6, 0x1e, 0xc7, 0x31, 0x4a, 0xab, 0x70, + 0x98, 0x70, 0x54, 0x4d, 0xdc, 0x80, 0xc2, 0xa2, 0x21, 0xc5, 0x39, 0x05, + 0x80, 0x41, 0x50, 0xf3, 0x87, 0x10, 0x30, 0x02, 0x41, 0x81, 0xd0, 0x01, + 0x59, 0x80, 0x5c, 0x06, 0x41, 0x80, 0xb2, 0x0c, 0x49, 0x82, 0x30, 0x1b, + 0x61, 0x85, 0x8e, 0xa9, 0x39, 0xbc, 0xee, 0xb2, 0x01, 0x88, 0xea, 0x1d, + 0x89, 0x83, 0x5c, 0x0d, 0xd1, 0x82, 0x2c, 0x07, 0xe1, 0x82, 0xd2, 0x07, + 0xd9, 0x85, 0x60, 0x04, 0x31, 0x82, 0x38, 0x01, 0x31, 0x80, 0x5e, 0x00, + 0x48, 0x80, 0x00, 0x04, 0x4b, 0x67, 0x2f, 0xf1, 0x02, 0x55, 0x1e, 0x0d, + 0xae, 0x2d, 0xce, 0x42, 0xce, 0xf2, 0x81, 0xd9, 0x9c, 0xa6, 0x8d, 0x45, + 0x67, 0x95, 0xb1, 0x84, 0xab, 0x4b, 0x99, 0x55, 0xac, 0xa8, 0x23, 0x02, + 0x76, 0xa8, 0x5a, 0x0b, 0x7c, 0xfd, 0xdf, 0x87, 0x17, 0x93, 0x4f, 0x9d, + 0x82, 0xaa, 0xc1, 0x97, 0xf3, 0x64, 0x51, 0xba, 0x49, 0x97, 0x29, 0xa6, + 0x46, 0xe1, 0x38, 0x39, 0xd5, 0xcd, 0xe8, 0x49, 0xc0, 0x72, 0x1d, 0xca, + 0xb1, 0x61, 0x88, 0xd2, 0x98, 0x40, 0x11, 0x87, 0xc5, 0x1a, 0xb5, 0x0f, + 0x3e, 0x93, 0x28, 0xb2, 0x76, 0x60, 0x19, 0x0c, 0x26, 0xba, 0x14, 0xbb, + 0x3f, 0x4d, 0xf3, 0x1a, 0x48, 0xad, 0xe5, 0xc7, 0x47, 0x72, 0x09, 0x95, + 0x9f, 0x6c, 0xd7, 0x64, 0x56, 0xab, 0xcb, 0xe1, 0x78, 0x5b, 0x59, 0x22, + 0x50, 0x98, 0xa4, 0x2c, 0xee, 0x3f, 0xd9, 0x8f, 0x43, 0xb6, 0x1a, 0x80, + 0xff, 0x4b, 0x2e, 0x8b, 0x6b, 0x6c, 0xef, 0x28, 0x79, 0x97, 0x76, 0xc3, + 0xdd, 0x6c, 0xf3, 0x32, 0x54, 0x50, 0x9c, 0x9b, 0xe0, 0xa4, 0x0a, 0x94, + 0x8a, 0xbd, 0x10, 0xea, 0x45, 0xb4, 0x19, 0x6e, 0x7e, 0x9c, 0x94, 0xb7, + 0x34, 0xaf, 0xb6, 0x97, 0x53, 0xa9, 0x96, 0x55, 0xcb, 0x8a, 0x82, 0xa8, + 0xb8, 0xae, 0x6c, 0x4a, 0xf7, 0xc7, 0xc4, 0xe7, 0x0a, 0x81, 0x86, 0x12, + 0x2b, 0xb7, 0x4c, 0xd1, 0x19, 0xbe, 0x45, 0x6a, 0xc9, 0xad, 0x16, 0xcc, + 0xc7, 0x6a, 0x35, 0x0d, 0x6c, 0x47, 0x22, 0x90, 0xf5, 0xa7, 0x89, 0x74, + 0x43, 0x91, 0x8a, 0x46, 0xd6, 0x54, 0x82, 0x48, 0xa2, 0x24, 0x25, 0x88, + 0xaf, 0x1f, 0x03, 0x05, 0xb1, 0x9c, 0x6f, 0x09, 0xd2, 0xc0, 0x07, 0x99, + 0xbd, 0x1e, 0xcd, 0x27, 0xae, 0x2f, 0xf7, 0x8a, 0x13, 0x3d, 0x5b, 0x3c, + 0xfe, 0x1e, 0x6c, 0x57, 0x72, 0x59, 0xa5, 0xe6, 0xe4, 0x18, 0x42, 0xca, + 0x5f, 0x7f, 0xe4, 0x99, 0x2b, 0xad, 0x76, 0x6c, 0xf4, 0xeb, 0x64, 0x5b, + 0xfa, 0xd1, 0xfc, 0x87, 0x91, 0xfa, 0x55, 0xd3, 0xf7, 0xbb, 0x92, 0xaf, + 0x77, 0xea, 0x9b, 0x33, 0xf6, 0xf6, 0xd3, 0x23, 0x59, 0x9b, 0xad, 0x6b, + 0xe6, 0x27, 0xff, 0x4d, 0x16, 0xf4, 0x53, 0x98, 0xa5, 0x73, 0x0e, 0x3b, + 0x08, 0xa8, 0xb9, 0xd0, 0x82, 0xac, 0xa3, 0xc4, 0x45, 0x45, 0x4b, 0x04, + 0x30, 0x0f, 0x40, 0x28, 0x30, 0x1b, 0x40, 0x21, 0x30, 0x2c, 0xc0, 0x16, + 0x30, 0x51, 0x00, 0x27, 0x30, 0x9b, 0xc0, 0x66, 0x31, 0xd6, 0x02, 0x12, + 0x3f, 0x44, 0x10, 0xd0, 0x32, 0x02, 0x80, 0x9f, 0x30, 0x93, 0xc0, 0xd9, + 0x30, 0x28, 0x41, 0x43, 0x30, 0x01, 0xc1, 0xcc, 0x30, 0x68, 0x80, 0xc8, + 0x30, 0x07, 0x80, 0x77, 0x00, 0x80, 0x1c, 0x5b, 0x96, 0xc4, 0xc2, 0x61, + 0xd7, 0x54, 0xa0, 0xd3, 0xd7, 0xa1, 0xd9, 0x66, 0x70, 0xf4, 0x23, 0x6f, + 0x05, 0xd8, 0x43, 0x28, 0x87, 0x9a, 0xec, 0x5e, 0x4a, 0xd8, 0x2e, 0x4b, + 0x6f, 0xb2, 0x87, 0xa2, 0x8e, 0x6d, 0xcb, 0x8a, 0xca, 0xee, 0x3f, 0xef, + 0xe3, 0x95, 0x4f, 0x7a, 0x0f, 0x9f, 0xb1, 0x66, 0x59, 0x84, 0x46, 0x29, + 0x67, 0x0e, 0x33, 0xb6, 0x99, 0xdb, 0x3d, 0x95, 0x69, 0x73, 0xe9, 0x85, + 0x6c, 0xf0, 0x6a, 0x3f, 0x15, 0x18, 0x7a, 0xf5, 0x3a, 0x50, 0x43, 0x70, + 0x73, 0x9d, 0xc1, 0x72, 0x75, 0x2d, 0x30, 0xc7, 0x7a, 0xd4, 0xa7, 0x6e, + 0x63, 0x5f, 0x7e, 0xe8, 0xc8, 0xff, 0xfb, 0xd4, 0x60, 0x4a, 0x8d, 0xf8, + 0xa4, 0x70, 0x3d, 0x83, 0xf8, 0x7b, 0x70, 0x5f, 0x2e, 0x08, 0x20, 0x24, + 0x67, 0x6e, 0x23, 0xad, 0xc0, 0xf6, 0x4f, 0xe1, 0xed, 0xc1, 0x6e, 0x38, + 0x20, 0x80, 0xf1, 0x95, 0xb8, 0x56, 0x1d, 0x69, 0xb5, 0x1b, 0x3b, 0x73, + 0x7b, 0x42, 0xa1, 0x06, 0xd8, 0xae, 0x78, 0xb4, 0xda, 0xc6, 0x9c, 0x60, + 0x53, 0xad, 0x1e, 0x8a, 0x15, 0x3a, 0xd3, 0x0c, 0x48, 0xd1, 0x93, 0x96, + 0x52, 0x1c, 0xab, 0x94, 0xce, 0x94, 0x8a, 0x05, 0x0b, 0xe8, 0x48, 0x36, + 0x7c, 0x2b, 0xd4, 0x13, 0xb7, 0x17, 0xd6, 0xd4, 0x31, 0x65, 0x50, 0xfd, + 0xca, 0x4a, 0xb2, 0x4e, 0x86, 0x3c, 0x43, 0x10, 0xf6, 0x78, 0x91, 0x50, + 0xa5, 0x3e, 0x98, 0x98, 0x9a, 0x21, 0xa5, 0xd8, 0x1b, 0xce, 0x66, 0xc4, + 0xfb, 0xa5, 0x54, 0x75, 0xa9, 0xdb, 0xd1, 0x8a, 0xd6, 0x35, 0xa5, 0x34, + 0x64, 0x81, 0xd0, 0x9f, 0x45, 0x2a, 0x28, 0xd6, 0x9d, 0x36, 0x34, 0x89, + 0x54, 0xaa, 0x5f, 0x31, 0xb8, 0xae, 0xdb, 0x4d, 0xf3, 0x0c, 0xbe, 0x41, + 0x2b, 0x94, 0xb0, 0x16, 0x8f, 0xe3, 0x98, 0x3a, 0x87, 0x30, 0xb2, 0x8c, + 0x61, 0x1b, 0xe9, 0x44, 0x15, 0xd3, 0x45, 0x3f, 0x1c, 0xae, 0xac, 0xc1, + 0x2c, 0x73, 0x3f, 0x46, 0x5f, 0x96, 0x66, 0xf3, 0x75, 0x97, 0xf3, 0xce, + 0x7e, 0x5b, 0x95, 0x92, 0x9c, 0x76, 0x47, 0x66, 0xb2, 0x74, 0x57, 0xa2, + 0xdb, 0xa6, 0xe9, 0x7e, 0x77, 0x3a, 0x96, 0xd5, 0xeb, 0xba, 0xd6, 0x89, + 0xcf, 0xb3, 0xab, 0x3b, 0xbd, 0x51, 0x51, 0x34, 0xb2, 0xa6, 0xc9, 0x7b, + 0x1a, 0xe7, 0xb2, 0xaf, 0xfa, 0xa1, 0xbf, 0xbe, 0xaa, 0x69, 0xe9, 0x55, + 0x4b, 0xdd, 0x11, 0x51, 0x11, 0x87, 0x58, 0x79, 0x94, 0xe2, 0x44, 0x8c, + 0x9a, 0x41, 0x8a, 0x9e, 0xe0, 0xc2, 0xa6, 0x0b, 0x89, 0xbc, 0xb8, 0xcb, + 0x28, 0x60, 0x22, 0x01, 0x06, 0x60, 0x4f, 0x00, 0xfc, 0x60, 0x0e, 0x02, + 0x5a, 0x60, 0x17, 0x84, 0x28, 0x60, 0x36, 0x09, 0x3e, 0x60, 0xfa, 0xb5, + 0x8c, 0x64, 0x0e, 0xcd, 0x82, 0x60, 0x01, 0x09, 0xc8, 0x60, 0x6d, 0x83, + 0xc2, 0x60, 0x94, 0x81, 0x22, 0x0e, 0x0e, 0xd0, 0xc4, 0x53, 0x03, 0x14, + 0xc1, 0x89, 0x00, 0x18, 0x14, 0x05, 0x0a, 0xc3, 0x13, 0x21, 0x7f, 0xdc, + 0x0b, 0x59, 0x35, 0x9f, 0xc6, 0xbe, 0xd9, 0xa5, 0xb0, 0x55, 0xb6, 0xc3, + 0x0c, 0x69, 0xd4, 0x70, 0x11, 0x4d, 0xaa, 0x45, 0xe3, 0xae, 0xe3, 0x36, + 0x6e, 0x49, 0x02, 0x9c, 0xed, 0xc1, 0x76, 0x8b, 0x0d, 0xca, 0x9f, 0x7b, + 0xe9, 0xd6, 0x83, 0x31, 0x6a, 0xac, 0xb5, 0xbb, 0x40, 0x56, 0xde, 0xd7, + 0x95, 0x86, 0xb1, 0x96, 0xbb, 0x10, 0x7e, 0x9c, 0xf5, 0x2a, 0x66, 0x6d, + 0xf4, 0x5a, 0x44, 0x9d, 0xee, 0x6a, 0x9c, 0x3d, 0x37, 0x61, 0x3d, 0xd1, + 0xe6, 0xdd, 0xb7, 0xea, 0x83, 0x4d, 0x32, 0xed, 0xec, 0x15, 0x03, 0x14, + 0x14, 0x26, 0x8a, 0x25, 0xc1, 0xba, 0x87, 0x20, 0x50, 0xf5, 0x44, 0x05, + 0x4a, 0x75, 0x40, 0xad, 0x73, 0x70, 0xd2, 0xad, 0xe3, 0x72, 0xbd, 0x12, + 0xa6, 0x45, 0xb1, 0xb7, 0x28, 0x72, 0x72, 0x9d, 0x8b, 0xb5, 0xb4, 0xdc, + 0x54, 0xc3, 0xa5, 0xdb, 0xd7, 0x24, 0x84, 0x46, 0x76, 0x03, 0xe9, 0x30, + 0xc8, 0x85, 0x27, 0xd0, 0xa4, 0x91, 0xf8, 0x5b, 0x99, 0x14, 0x2a, 0xd8, + 0xe6, 0x53, 0xd9, 0x55, 0x09, 0xd8, 0x0d, 0xab, 0x2b, 0x2d, 0x67, 0x5a, + 0xa5, 0x79, 0xcd, 0x9d, 0xae, 0xcc, 0x09, 0x77, 0x2c, 0x27, 0x5e, 0x36, + 0xf5, 0x61, 0xfe, 0xa4, 0x9d, 0x54, 0x78, 0x47, 0x51, 0x28, 0x55, 0xe9, + 0x03, 0xa6, 0x22, 0x79, 0x47, 0x98, 0xad, 0xb2, 0x42, 0x7a, 0x8c, 0xaa, + 0x89, 0x65, 0x5b, 0x09, 0x89, 0x70, 0xbd, 0x57, 0x27, 0x06, 0xa6, 0x14, + 0x2c, 0xee, 0x82, 0xf8, 0x84, 0xab, 0x47, 0xc1, 0xe4, 0x72, 0x45, 0x56, + 0xaa, 0xd8, 0x14, 0xc5, 0xd4, 0xbd, 0x84, 0x90, 0xed, 0x07, 0x5e, 0x3b, + 0x8c, 0x58, 0xf0, 0x64, 0xd5, 0xab, 0x1f, 0x5f, 0x61, 0x5e, 0xef, 0xc6, + 0x95, 0x5e, 0x35, 0xfa, 0xbe, 0x70, 0xbc, 0x8b, 0x87, 0xde, 0xf2, 0x37, + 0xfe, 0x4f, 0xfa, 0x5d, 0x64, 0x77, 0xdd, 0x15, 0x6a, 0x8c, 0xbd, 0x66, + 0xd7, 0x47, 0x93, 0xd4, 0x99, 0x5e, 0xf9, 0xd7, 0x46, 0xfc, 0xbd, 0xd3, + 0x54, 0xe8, 0xce, 0xc7, 0x4f, 0xb6, 0xdd, 0x2e, 0xfb, 0xdd, 0xd3, 0xfd, + 0x59, 0x99, 0x5d, 0x8b, 0x7b, 0xde, 0x6d, 0x2f, 0x56, 0x3a, 0x3c, 0x78, + 0xf5, 0x0e, 0x06, 0x94, 0xae, 0x61, 0x20, 0x80, 0x88, 0xe0, 0x00, 0x79, + 0x8f, 0x50, 0x30, 0xd0, 0xba, 0x1e, 0x00, 0xa0, 0xc0, 0xe1, 0x00, 0xb8, + 0xc0, 0xc0, 0x01, 0xb0, 0xc1, 0x45, 0x03, 0x7c, 0xc2, 0x6e, 0x08, 0x50, + 0xc7, 0x35, 0x35, 0x4c, 0xfe, 0xa7, 0x2b, 0x28, 0xc8, 0x95, 0x09, 0x14, + 0xc2, 0xac, 0x06, 0x90, 0xc1, 0x2c, 0x06, 0x00, 0xc0, 0xf1, 0x07, 0xb4, + 0xc1, 0x64, 0x01, 0xac, 0xc0, 0x8a, 0x01, 0xc0, 0x12, 0x00, 0x58, 0x90, + 0x04, 0x0d, 0xba, 0xd4, 0x47, 0xf2, 0x5a, 0x33, 0x47, 0x81, 0xd5, 0x85, + 0xaf, 0x46, 0xa5, 0x29, 0x82, 0x9a, 0x7c, 0x01, 0x3f, 0x10, 0x8a, 0x3d, + 0xef, 0x2b, 0xfe, 0xf1, 0x3b, 0xcf, 0xe3, 0x97, 0x04, 0x4b, 0x22, 0x92, + 0x07, 0xfa, 0xb4, 0x62, 0x5c, 0xfc, 0x4b, 0xec, 0x3f, 0x2f, 0xed, 0x34, + 0xba, 0xe3, 0xd5, 0x72, 0x5b, 0x1e, 0x83, 0x2d, 0xd3, 0xc6, 0xa1, 0xf3, + 0xda, 0x33, 0x82, 0x55, 0x16, 0xd7, 0xa4, 0x83, 0x5a, 0xb9, 0xb5, 0xd2, + 0xbd, 0x81, 0xf3, 0x3b, 0x82, 0xff, 0xfb, 0xd4, 0x60, 0x42, 0x0f, 0xd8, + 0x40, 0x70, 0x3e, 0x83, 0xf8, 0x7b, 0x70, 0x5b, 0xce, 0x08, 0x20, 0x3c, + 0x45, 0x6e, 0x26, 0x35, 0xc0, 0xfc, 0x0f, 0xf1, 0x8d, 0xc1, 0x4c, 0x38, + 0x20, 0xc4, 0x30, 0x95, 0xb8, 0x73, 0x6a, 0xc5, 0xcb, 0x24, 0xb1, 0x52, + 0xd5, 0x6c, 0x7b, 0x0e, 0x12, 0x9a, 0x76, 0x44, 0x4a, 0x89, 0x81, 0xbe, + 0x06, 0x26, 0x8a, 0xa5, 0x8e, 0xe4, 0xc2, 0xc9, 0x1d, 0x8d, 0xdb, 0x83, + 0xda, 0x55, 0xba, 0x0a, 0xae, 0x0b, 0xb5, 0x27, 0x78, 0xc4, 0xc4, 0xed, + 0xcd, 0x49, 0x96, 0x7a, 0xae, 0xe3, 0xce, 0xde, 0xa2, 0x7a, 0xaf, 0x76, + 0xfa, 0x1c, 0x55, 0x73, 0x04, 0x68, 0x8a, 0x93, 0xc1, 0x58, 0xf2, 0x4a, + 0xe5, 0x14, 0xa2, 0x82, 0x8d, 0x85, 0x88, 0xed, 0xf4, 0x79, 0x33, 0x2b, + 0x53, 0xc6, 0x36, 0xe9, 0xd9, 0xe3, 0xcb, 0xa6, 0xc8, 0x6d, 0x70, 0x29, + 0x0e, 0x2e, 0xbe, 0x17, 0x11, 0x70, 0xe5, 0x98, 0x4e, 0x4d, 0x53, 0x42, + 0x7a, 0xde, 0xe9, 0xec, 0x26, 0x56, 0x45, 0xcc, 0x68, 0xab, 0x9b, 0x1f, + 0xcd, 0x91, 0x1f, 0xa9, 0x31, 0x0d, 0x5c, 0xc4, 0xad, 0x19, 0x66, 0x99, + 0x3d, 0x3d, 0xc9, 0x59, 0x3f, 0x0f, 0x53, 0x6a, 0x0c, 0x4a, 0xd3, 0xe9, + 0x9e, 0x6c, 0xef, 0xee, 0x51, 0xea, 0xd4, 0x25, 0xde, 0x57, 0xea, 0xe8, + 0xe6, 0x2c, 0xde, 0xae, 0xb6, 0xfb, 0x5a, 0x84, 0x65, 0xe6, 0xb7, 0xea, + 0x4c, 0xaf, 0xdf, 0x2a, 0xf6, 0x56, 0x49, 0x9d, 0x0d, 0xd1, 0x5d, 0xbd, + 0x96, 0xf6, 0x4f, 0x4a, 0xa5, 0x1d, 0xbd, 0xbf, 0x65, 0x7b, 0x9e, 0xb4, + 0xa1, 0x1f, 0x53, 0x5e, 0xac, 0xa5, 0xf5, 0x66, 0x54, 0x29, 0x28, 0xe8, + 0x88, 0x8d, 0xd1, 0xec, 0x88, 0xc6, 0x88, 0x0e, 0x55, 0x34, 0xcc, 0x39, + 0x04, 0x82, 0x88, 0x49, 0xc3, 0xc2, 0xe3, 0x46, 0xa8, 0x88, 0xd3, 0x89, + 0x18, 0xc0, 0x87, 0x02, 0x18, 0xc0, 0xca, 0x03, 0xdc, 0xc0, 0x7e, 0x0b, + 0xe0, 0xc3, 0x46, 0x06, 0x3c, 0xc4, 0x11, 0x13, 0x28, 0xcf, 0x98, 0x21, + 0x10, 0xfc, 0x22, 0xbe, 0xa8, 0xd5, 0x48, 0x17, 0xa8, 0xc2, 0xb7, 0x0b, + 0x44, 0xc0, 0xbe, 0x0a, 0x64, 0xc1, 0x1b, 0x0e, 0x00, 0xc5, 0x2e, 0x08, + 0x20, 0xc1, 0xd2, 0x00, 0x0c, 0xc0, 0xcd, 0x01, 0x78, 0xc1, 0x64, 0x02, + 0x00, 0xe7, 0x70, 0x93, 0x39, 0x29, 0x8c, 0x42, 0x3b, 0x06, 0x1f, 0x0d, + 0x54, 0x22, 0x30, 0x98, 0xc8, 0xc6, 0x42, 0x33, 0x01, 0x90, 0x8c, 0x08, + 0x2d, 0x0b, 0x0b, 0x0c, 0x06, 0x23, 0x30, 0x70, 0x68, 0xc2, 0x00, 0xc2, + 0x80, 0xd9, 0x87, 0x80, 0x05, 0xbe, 0x22, 0x10, 0x17, 0x08, 0x78, 0x12, + 0x4c, 0x06, 0x45, 0x92, 0x60, 0x68, 0xf0, 0x08, 0x58, 0x0a, 0x0e, 0x03, + 0x02, 0x82, 0x26, 0x03, 0x00, 0x00, 0x01, 0x20, 0xa0, 0x31, 0x50, 0x16, + 0x08, 0x01, 0x90, 0x02, 0x8a, 0x80, 0x12, 0x50, 0x12, 0x37, 0xa4, 0x62, + 0x27, 0xa5, 0xe2, 0x63, 0xc0, 0x6a, 0x08, 0xb0, 0xec, 0x71, 0x7b, 0xbd, + 0x8d, 0xf3, 0x7a, 0xe3, 0x35, 0x21, 0xc4, 0x1b, 0x09, 0xe7, 0x40, 0x2d, + 0x70, 0xac, 0x78, 0x44, 0x57, 0x30, 0x1d, 0xcb, 0x0a, 0xc7, 0xc2, 0x30, + 0x7a, 0x0e, 0x96, 0xc7, 0x31, 0x99, 0x74, 0x7a, 0x84, 0x90, 0x49, 0x2b, + 0xb4, 0x57, 0x7c, 0xae, 0x24, 0x17, 0x8f, 0x0f, 0xd7, 0x98, 0x58, 0x8a, + 0xc3, 0xa0, 0xd1, 0x29, 0x79, 0xa6, 0x58, 0x5a, 0x60, 0x4f, 0x2b, 0x23, + 0x2c, 0xca, 0xf1, 0xe6, 0xc8, 0x90, 0x99, 0x40, 0x4e, 0xa0, 0xac, 0x72, + 0xd3, 0x85, 0xc5, 0x09, 0x99, 0x42, 0x6e, 0x37, 0xd8, 0x58, 0x6f, 0x02, + 0x2b, 0x43, 0x03, 0x6f, 0xb3, 0xd2, 0xdd, 0xcf, 0xcb, 0x08, 0x44, 0xc6, + 0xcf, 0xde, 0x3c, 0x74, 0xe8, 0xd7, 0xcf, 0x6a, 0x55, 0x71, 0xa7, 0x10, + 0x69, 0xed, 0x39, 0xe9, 0x68, 0xad, 0xb7, 0x70, 0xad, 0x46, 0xfe, 0xcf, + 0xaf, 0x85, 0x6a, 0x6f, 0x3a, 0x7e, 0xe7, 0x15, 0x5a, 0xf9, 0xe4, 0x31, + 0x1f, 0xb8, 0x56, 0x27, 0x21, 0x9c, 0x21, 0x29, 0xa5, 0x54, 0x89, 0x07, + 0x4b, 0xca, 0x8b, 0x89, 0x26, 0xe7, 0xe1, 0x0d, 0x4d, 0xa6, 0x19, 0x8d, + 0x9d, 0x45, 0x4c, 0x99, 0xf8, 0xba, 0xe5, 0x12, 0x95, 0x85, 0x6b, 0xbe, + 0xcd, 0x79, 0x16, 0x7d, 0x36, 0x33, 0xd8, 0x9a, 0xaf, 0x5a, 0xd7, 0xdf, + 0x26, 0x6d, 0x17, 0xe8, 0x93, 0x26, 0xcb, 0x95, 0x74, 0xfa, 0x23, 0x33, + 0x2b, 0x67, 0x35, 0x74, 0x97, 0xb5, 0xee, 0xdf, 0x26, 0xec, 0xcd, 0xb3, + 0xda, 0x8b, 0xd6, 0xa8, 0x8b, 0x44, 0x4d, 0x5a, 0xf3, 0x1d, 0x54, 0x5d, + 0x45, 0xca, 0x21, 0x0d, 0x75, 0x3a, 0x07, 0xce, 0x24, 0x22, 0x56, 0x11, + 0x38, 0xa0, 0xbd, 0x04, 0x82, 0x15, 0x70, 0x06, 0x40, 0x31, 0x0a, 0x80, + 0x1c, 0x61, 0x34, 0x81, 0xe0, 0x60, 0x6a, 0x01, 0x64, 0x2a, 0x22, 0xa9, + 0x86, 0xf8, 0xb3, 0x51, 0xe7, 0x54, 0xfa, 0xf9, 0x94, 0xac, 0x0f, 0xa1, + 0x84, 0xb2, 0x08, 0x59, 0x81, 0xae, 0x08, 0xc9, 0x81, 0x84, 0x0f, 0xe1, + 0x85, 0xfe, 0x02, 0xc1, 0x82, 0x46, 0x02, 0x19, 0x80, 0x4c, 0x02, 0x01, + 0x80, 0x1e, 0x00, 0xa0, 0x39, 0x32, 0x9a, 0x88, 0xc2, 0x01, 0x4e, 0x9c, + 0xc1, 0xe8, 0x2a, 0xf6, 0xe5, 0x05, 0xcf, 0x64, 0xd2, 0xe1, 0xd9, 0x4c, + 0x76, 0xcb, 0x40, 0x8e, 0x39, 0x4e, 0xf4, 0x5f, 0x98, 0xc4, 0x9e, 0x67, + 0xa9, 0xda, 0x6b, 0xd0, 0xb9, 0xea, 0x94, 0x70, 0xf4, 0xba, 0xfd, 0x8b, + 0xb3, 0xba, 0xad, 0x12, 0xa9, 0x5a, 0x45, 0x0f, 0x52, 0xc5, 0x20, 0x3a, + 0xcd, 0x96, 0x49, 0x39, 0x32, 0xff, 0xfb, 0xd4, 0x60, 0x3b, 0x89, 0xd6, + 0xd1, 0x70, 0x41, 0x0b, 0xfa, 0x4b, 0x70, 0x56, 0x4e, 0x08, 0x20, 0x18, + 0x25, 0x6e, 0x19, 0x31, 0xc1, 0x08, 0xcf, 0xe8, 0xcd, 0xc1, 0x50, 0x38, + 0x20, 0xc8, 0xd1, 0x89, 0xb8, 0xe6, 0x7d, 0xbf, 0x2d, 0x54, 0xe6, 0x4b, + 0xe5, 0xb1, 0xbe, 0xee, 0x91, 0xd7, 0x30, 0xe6, 0xe6, 0x55, 0x7c, 0x86, + 0x17, 0x82, 0x95, 0x1a, 0x42, 0xbb, 0x0a, 0xc3, 0x12, 0xbd, 0xd6, 0xd1, + 0x27, 0x08, 0xa0, 0x6a, 0xe3, 0xad, 0x23, 0x41, 0x7a, 0x5e, 0xed, 0xf6, + 0x94, 0x5a, 0xef, 0xd4, 0xa1, 0xb1, 0x86, 0x77, 0xe3, 0x92, 0x8c, 0xe3, + 0x0a, 0x7d, 0xba, 0x1a, 0x54, 0xab, 0x7b, 0x18, 0xf5, 0x31, 0x4d, 0x9b, + 0x9f, 0xbb, 0x29, 0x42, 0x7a, 0xf8, 0xa6, 0x9c, 0xbc, 0x59, 0x9e, 0x4a, + 0x71, 0xdd, 0x92, 0xac, 0x45, 0xd1, 0x9a, 0x15, 0x59, 0x5d, 0xc9, 0x4d, + 0xea, 0x24, 0xb1, 0x23, 0x24, 0xe5, 0xcb, 0x0f, 0x88, 0xac, 0x1d, 0x68, + 0xb4, 0xe3, 0x7f, 0x8e, 0xe0, 0x42, 0xb8, 0x90, 0x09, 0x08, 0xa6, 0x62, + 0x73, 0x9e, 0xbd, 0x04, 0xea, 0xa1, 0x9a, 0x9f, 0x60, 0x0f, 0x93, 0xbe, + 0xe9, 0x6f, 0x4e, 0x94, 0xba, 0xec, 0xae, 0x95, 0x25, 0xbe, 0xbb, 0x77, + 0xdd, 0x76, 0x3b, 0xa6, 0xa8, 0x74, 0xef, 0x6d, 0x2e, 0xfd, 0x77, 0x25, + 0xf4, 0x36, 0xbd, 0xb6, 0x5e, 0xec, 0xb7, 0x44, 0xfe, 0x77, 0x52, 0xa2, + 0x31, 0x9d, 0x95, 0x33, 0x8d, 0x71, 0x70, 0xd1, 0x33, 0x88, 0x0b, 0x18, + 0x44, 0x58, 0x44, 0x4c, 0x58, 0x61, 0x10, 0x8e, 0xa2, 0xe2, 0x81, 0xde, + 0x0c, 0x04, 0x40, 0x10, 0x43, 0x80, 0x46, 0x30, 0x2a, 0x80, 0x95, 0x30, + 0x42, 0x40, 0xcc, 0x30, 0x82, 0x82, 0x11, 0x31, 0x6c, 0xc9, 0x8a, 0x3c, + 0x64, 0x51, 0xb1, 0x31, 0xc8, 0xc1, 0xa6, 0x30, 0x74, 0x80, 0x2a, 0x30, + 0x0f, 0x81, 0x04, 0x30, 0x24, 0x81, 0x81, 0x30, 0x79, 0xc0, 0xc9, 0x30, + 0x27, 0x40, 0x6a, 0x26, 0x00, 0xb4, 0x20, 0x02, 0x25, 0x01, 0x67, 0x4a, + 0x90, 0xc9, 0xe3, 0x19, 0x02, 0xd7, 0xa5, 0xb2, 0x77, 0x42, 0xdd, 0x3b, + 0xb1, 0x45, 0x28, 0xb0, 0x84, 0xc6, 0x4f, 0x13, 0x7f, 0xe2, 0x6f, 0xbc, + 0xfe, 0x58, 0xc0, 0xf5, 0x7e, 0x56, 0xce, 0xde, 0xe7, 0x1e, 0xec, 0x17, + 0x2f, 0x91, 0xbb, 0xd0, 0x0c, 0x52, 0xad, 0x3d, 0x3c, 0xf4, 0x31, 0x39, + 0x4b, 0xda, 0xb4, 0x33, 0x90, 0xff, 0x10, 0x07, 0x0b, 0x74, 0x32, 0x62, + 0x1f, 0x09, 0xe5, 0x85, 0xa7, 0xe7, 0x34, 0xbc, 0xf9, 0x8e, 0xdc, 0xb5, + 0x41, 0x5f, 0x1a, 0xda, 0xdd, 0x27, 0xf5, 0x32, 0x9f, 0xdc, 0xef, 0x8c, + 0x83, 0x4f, 0x2b, 0x2b, 0xce, 0x9a, 0xd7, 0xa4, 0x22, 0x61, 0xe9, 0xfa, + 0xdc, 0x9d, 0xeb, 0xaf, 0x6f, 0x21, 0xa3, 0x54, 0xa3, 0x1d, 0x34, 0xa3, + 0x32, 0x9f, 0xbe, 0xb3, 0x6f, 0xba, 0xaf, 0x0d, 0xb6, 0xba, 0xe8, 0x35, + 0x4d, 0xc7, 0xee, 0x61, 0x57, 0xe6, 0xcb, 0xce, 0xcd, 0x75, 0xa4, 0x47, + 0x2e, 0x93, 0x4e, 0xef, 0xa8, 0x5b, 0xce, 0x20, 0xb0, 0x04, 0xed, 0x23, + 0x89, 0x19, 0x18, 0xad, 0x37, 0xde, 0xa5, 0x5d, 0xcc, 0x8b, 0x9b, 0x29, + 0x27, 0x7d, 0x4d, 0x58, 0xbf, 0xbb, 0xe6, 0x6a, 0x8e, 0xb8, 0x47, 0x26, + 0xfb, 0xfb, 0x9e, 0xfd, 0xaf, 0x5f, 0x76, 0xb7, 0x6c, 0xeb, 0x5e, 0x97, + 0xd3, 0x46, 0xda, 0x95, 0xd3, 0x6a, 0xf5, 0xff, 0x72, 0xaf, 0x9a, 0x8c, + 0xf6, 0x7a, 0xd2, 0xfd, 0x74, 0x7a, 0xfb, 0x7a, 0x7a, 0x7b, 0x1b, 0xe8, + 0xc4, 0xab, 0x58, 0xa7, 0x32, 0xb3, 0x31, 0xd4, 0xc4, 0x08, 0x28, 0x97, + 0x28, 0xa1, 0x21, 0xce, 0xf2, 0x9c, 0xc7, 0x14, 0x98, 0x82, 0x9a, 0x8a, + 0x66, 0x5c, 0x72, 0x70, 0x5c, 0x64, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x21, 0x00, 0x03, 0x00, 0xe4, 0x0a, 0xa3, 0x01, 0xb4, 0x06, 0x53, + 0x01, 0x50, 0x19, 0xc3, 0x03, 0x04, 0x2f, 0xd3, 0x06, 0xe0, 0x68, 0xe3, + 0x15, 0x6e, 0x74, 0xf3, 0xa6, 0x3f, 0x2b, 0x23, 0x17, 0xec, 0x68, 0x93, + 0x0a, 0x40, 0x32, 0x03, 0x07, 0xf8, 0x19, 0x83, 0x0a, 0x34, 0x12, 0x53, + 0x16, 0x78, 0x04, 0x63, 0x08, 0xa8, 0x03, 0xe0, 0x70, 0x1c, 0xc1, 0x00, + 0x55, 0x91, 0x05, 0x93, 0x74, 0x74, 0x14, 0x49, 0x19, 0x01, 0x5f, 0x98, + 0x43, 0xbd, 0x03, 0x22, 0x9f, 0x2a, 0x2e, 0xe7, 0x7a, 0xcc, 0xa9, 0x09, + 0xc0, 0xe0, 0x8a, 0xdc, 0x99, 0x98, 0xac, 0x90, 0x50, 0xb7, 0x75, 0x86, + 0x38, 0x70, 0x23, 0xa6, 0xcd, 0x0a, 0x01, 0xd1, 0xba, 0x79, 0x6d, 0x04, + 0xaf, 0x3c, 0x61, 0xa9, 0x9b, 0x54, 0x25, 0xc2, 0x75, 0xe3, 0x32, 0xba, + 0x4b, 0x94, 0xab, 0xf0, 0xcd, 0x34, 0x51, 0x06, 0xa1, 0x81, 0xb2, 0x13, + 0x96, 0x30, 0x65, 0x87, 0x20, 0x68, 0xc0, 0x29, 0x2d, 0x46, 0xfc, 0x5e, + 0xb5, 0x84, 0xee, 0x31, 0xa3, 0x51, 0x5d, 0x4f, 0xd4, 0xe5, 0xe5, 0xb1, + 0xcf, 0x5b, 0x8e, 0x04, 0xa5, 0x88, 0x9d, 0x72, 0x25, 0xab, 0x6a, 0x9e, + 0x44, 0xb2, 0x11, 0xf4, 0x4f, 0xab, 0x8e, 0xc8, 0xce, 0x9c, 0x66, 0x83, + 0xf9, 0xab, 0xab, 0x53, 0x44, 0xf2, 0xef, 0xe4, 0x26, 0xcb, 0xe9, 0x77, + 0x23, 0x8d, 0x5e, 0x9f, 0xb6, 0x7d, 0xac, 0x97, 0x2c, 0x95, 0x5d, 0xaa, + 0xb6, 0x35, 0xf1, 0x2e, 0x8d, 0xa5, 0xb3, 0x8b, 0x75, 0xd8, 0x63, 0xad, + 0x0e, 0x61, 0x7f, 0x25, 0x6b, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x08, 0xd7, + 0xcc, 0x70, 0x40, 0x13, 0xfc, 0x63, 0x70, 0x65, 0xce, 0x08, 0x11, 0x3c, + 0x65, 0x6e, 0x14, 0x0d, 0x09, 0x19, 0xaf, 0xe1, 0xeb, 0x81, 0xc1, 0x38, + 0x20, 0x44, 0xc1, 0xa1, 0xb8, 0xf6, 0x8e, 0xa7, 0x7f, 0x4f, 0x43, 0xf5, + 0x2f, 0xaf, 0x97, 0xa0, 0x9a, 0x2e, 0x9d, 0x7c, 0xf6, 0x1c, 0x7f, 0xee, + 0x89, 0x01, 0x19, 0xd8, 0xe6, 0x54, 0xa1, 0xf1, 0x15, 0x7a, 0x76, 0x00, + 0x7c, 0x2d, 0xc9, 0x47, 0x38, 0xf4, 0x6b, 0xd5, 0x31, 0x5b, 0xeb, 0xd7, + 0x78, 0x23, 0x07, 0x35, 0x50, 0x7e, 0x6d, 0xcd, 0xce, 0xff, 0xd5, 0xf3, + 0xb4, 0x52, 0x2d, 0x9f, 0xe6, 0x7c, 0x32, 0xe4, 0xe8, 0xad, 0x99, 0x53, + 0x4b, 0xaf, 0xd5, 0x5d, 0x1b, 0x65, 0xdd, 0x28, 0x94, 0x21, 0x17, 0x59, + 0x92, 0xaa, 0x97, 0x2b, 0xe4, 0xda, 0xd2, 0x2a, 0x2e, 0x85, 0x59, 0x1c, + 0xf5, 0x74, 0x56, 0x2e, 0x8b, 0xd1, 0xf3, 0xaf, 0x54, 0xa6, 0xa5, 0x57, + 0x9d, 0x17, 0x4e, 0x88, 0x76, 0x2d, 0x86, 0x33, 0x94, 0x88, 0x2a, 0x40, + 0x42, 0xc7, 0x9c, 0x3a, 0x2c, 0xe1, 0xe3, 0x30, 0x0e, 0x71, 0xaa, 0x28, + 0x0b, 0x17, 0x08, 0x07, 0x80, 0x02, 0x7f, 0xb5, 0x89, 0x00, 0x59, 0x23, + 0x00, 0x98, 0x01, 0xb0, 0xe0, 0x1c, 0x83, 0x00, 0xd5, 0x30, 0x39, 0x40, + 0x02, 0x30, 0xb1, 0x00, 0xb5, 0x35, 0xd3, 0x02, 0xaa, 0x01, 0x0c, 0x5a, + 0x60, 0x69, 0x80, 0x96, 0x60, 0x17, 0x80, 0xde, 0x38, 0x05, 0x71, 0x80, + 0x50, 0x02, 0x10, 0x33, 0xab, 0x98, 0x5a, 0x70, 0x13, 0x47, 0xb8, 0x8c, + 0x25, 0x3b, 0x93, 0x5a, 0xe5, 0xef, 0xb6, 0xa7, 0x75, 0x33, 0xb3, 0x40, + 0x71, 0x3c, 0xcc, 0x46, 0x1c, 0x82, 0x2b, 0xe7, 0x20, 0x54, 0x0f, 0x1d, + 0x23, 0x3b, 0x51, 0xe0, 0x6b, 0xb5, 0xad, 0xb2, 0x39, 0xb0, 0x14, 0xaf, + 0x27, 0xdc, 0x8a, 0x62, 0x5a, 0xf2, 0x2e, 0xa5, 0x58, 0x3f, 0x1c, 0x5c, + 0xf7, 0x4c, 0xc1, 0x4d, 0x47, 0xdc, 0xf2, 0xcb, 0x2e, 0x6b, 0xbb, 0xe1, + 0x75, 0x5a, 0x6e, 0x6f, 0x59, 0x22, 0x66, 0xb4, 0x91, 0x6f, 0xfc, 0x67, + 0xe7, 0x59, 0xcf, 0xf0, 0xa6, 0xc7, 0xc7, 0xff, 0x1f, 0x74, 0xfa, 0xa5, + 0xff, 0xc7, 0xcf, 0xfa, 0xd4, 0xa2, 0x61, 0x86, 0xbb, 0xfe, 0xca, 0xfa, + 0x7f, 0x57, 0xdb, 0x49, 0x5f, 0xcc, 0x52, 0x27, 0x4a, 0x01, 0x12, 0x72, + 0xd6, 0x1d, 0x45, 0xd1, 0x51, 0xd9, 0xa4, 0x3d, 0x0a, 0xbc, 0xd0, 0x88, + 0x8f, 0x65, 0x1b, 0x1c, 0x15, 0x04, 0x73, 0x33, 0x76, 0x04, 0x54, 0x79, + 0x23, 0x27, 0xde, 0x52, 0x22, 0x33, 0x85, 0xba, 0xfc, 0x54, 0x4f, 0x7f, + 0xc4, 0xdf, 0xdb, 0x7d, 0xd5, 0x5f, 0x6b, 0x7d, 0x5c, 0xde, 0x9d, 0xfc, + 0x4c, 0x57, 0xdf, 0x16, 0x36, 0x22, 0x26, 0xe5, 0xa6, 0x5e, 0x52, 0xed, + 0xae, 0x3e, 0x1e, 0x38, 0xa8, 0x86, 0x9a, 0xf8, 0xaf, 0x5b, 0xff, 0xd6, + 0x5f, 0xb8, 0xe5, 0x6e, 0x78, 0xbd, 0x22, 0xb8, 0x9e, 0x2b, 0x7d, 0xef, + 0xab, 0xb5, 0xab, 0xd0, 0x6b, 0x8f, 0xbc, 0x74, 0x9d, 0x75, 0x42, 0xc1, + 0xb1, 0x86, 0xe2, 0xa2, 0x19, 0xc2, 0x86, 0x40, 0x36, 0xa9, 0x2c, 0x38, + 0x1a, 0x98, 0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x70, 0x5c, 0x65, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x26, 0x00, 0xe1, 0x30, 0x1c, 0x41, 0xba, 0x30, 0x0d, 0x01, + 0xf5, 0x30, 0x00, 0x43, 0x6e, 0x30, 0x0c, 0x87, 0xaf, 0x15, 0xbe, 0xc0, + 0xcc, 0xe7, 0xe0, 0xbc, 0xc0, 0x10, 0x1f, 0xb0, 0xc1, 0x97, 0x0c, 0xa4, + 0xc2, 0x03, 0x04, 0x44, 0xc3, 0x12, 0x03, 0x00, 0xc6, 0xa5, 0x02, 0xac, + 0xc2, 0x9d, 0x00, 0x40, 0xc0, 0x80, 0x01, 0xf4, 0x48, 0x19, 0x62, 0x20, + 0x30, 0x84, 0x05, 0x30, 0x24, 0x0d, 0x32, 0x9a, 0x2c, 0x31, 0x5c, 0x2c, + 0x03, 0x00, 0x2b, 0xa9, 0xd5, 0x42, 0x2a, 0x7c, 0x0b, 0xd9, 0x6e, 0xc5, + 0x32, 0x33, 0xa2, 0x74, 0x0f, 0x1b, 0xb7, 0x0f, 0x40, 0x92, 0x16, 0xc9, + 0x0e, 0xd9, 0x92, 0xe2, 0x30, 0x01, 0x21, 0x7c, 0xae, 0x01, 0xac, 0xf4, + 0xcd, 0x37, 0x39, 0x16, 0x7b, 0xad, 0x11, 0x57, 0xd1, 0x7a, 0x59, 0x5e, + 0x59, 0x33, 0x28, 0x5b, 0xdd, 0x37, 0xbb, 0x43, 0xc8, 0x6c, 0x9b, 0x80, + 0xc0, 0xf5, 0xc2, 0xea, 0xdd, 0xe1, 0xbc, 0xa1, 0x70, 0x9e, 0x03, 0x85, + 0xb2, 0xc0, 0xe1, 0x88, 0xb4, 0x71, 0x2f, 0x4c, 0xd3, 0x43, 0x7a, 0xcd, + 0x16, 0x6d, 0xc8, 0xf9, 0xb0, 0xdf, 0x8f, 0x05, 0xcb, 0x6d, 0xd1, 0x20, + 0xd7, 0x4c, 0xd5, 0x43, 0x99, 0x2b, 0xad, 0x31, 0xf8, 0xfe, 0x76, 0x48, + 0x4d, 0x46, 0x44, 0x28, 0x54, 0xb3, 0xea, 0x61, 0xf6, 0x31, 0x68, 0x09, + 0x4f, 0x87, 0x6f, 0xa5, 0xcc, 0x6a, 0x6e, 0x14, 0x05, 0x36, 0xdd, 0xc6, + 0x68, 0x83, 0x2b, 0x5e, 0x33, 0xbc, 0xbc, 0x68, 0x60, 0x89, 0x16, 0x04, + 0x2b, 0x46, 0x85, 0x1f, 0x11, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x09, 0xd8, + 0x02, 0x70, 0x40, 0x03, 0xfd, 0x7b, 0x70, 0x66, 0xad, 0xe8, 0x22, 0x64, + 0x65, 0x6e, 0x18, 0x91, 0xbd, 0x0c, 0xcf, 0xf0, 0xad, 0xc9, 0xa4, 0x37, + 0x20, 0x44, 0xf1, 0x95, 0xb9, 0x54, 0xee, 0x15, 0x93, 0x7e, 0x2b, 0x5c, + 0x99, 0x6c, 0xb4, 0xaa, 0x68, 0xf6, 0xd3, 0xf7, 0x28, 0x3a, 0x53, 0xdb, + 0x5b, 0x64, 0x7c, 0xf9, 0xbd, 0x4c, 0xe7, 0x88, 0xd0, 0x3a, 0xbf, 0xc5, + 0x88, 0xc2, 0xda, 0xad, 0x34, 0x11, 0x80, 0x00, 0x9c, 0xb9, 0x64, 0xb6, + 0xee, 0x38, 0xf3, 0x79, 0x54, 0xb3, 0xdb, 0xf9, 0x6b, 0x4f, 0x2c, 0x51, + 0xdb, 0x5d, 0x33, 0x60, 0xbd, 0xf7, 0xe1, 0x27, 0x73, 0xda, 0x11, 0x91, + 0x1a, 0x55, 0x2c, 0xe3, 0x85, 0x88, 0x95, 0x4a, 0xb3, 0xb7, 0xd2, 0xca, + 0x67, 0x74, 0xd1, 0x9b, 0x4e, 0xae, 0xcf, 0x5e, 0xce, 0xc4, 0xd0, 0xd9, + 0xdf, 0xd5, 0x37, 0x6b, 0x2a, 0x26, 0x8f, 0x75, 0x6b, 0x2a, 0x55, 0x89, + 0xfb, 0xa2, 0x58, 0xaf, 0x55, 0xb3, 0x5f, 0x57, 0x59, 0x55, 0x4e, 0x97, + 0x3d, 0x5d, 0xd9, 0xc6, 0x23, 0x95, 0x16, 0x47, 0x2b, 0x90, 0x82, 0x02, + 0x91, 0x72, 0x38, 0x48, 0xc6, 0x1b, 0x1c, 0xd0, 0xf8, 0xe2, 0x0c, 0x18, + 0x17, 0xb4, 0xc0, 0x26, 0x00, 0x0c, 0xc0, 0x6b, 0x01, 0x3c, 0xc0, 0xa6, + 0x01, 0x00, 0xc1, 0x1d, 0x02, 0x3c, 0xc2, 0x34, 0x05, 0x18, 0xc6, 0xe3, + 0x1a, 0xbc, 0xf7, 0x49, 0x1f, 0x70, 0xc7, 0x11, 0x06, 0xa4, 0xc2, 0x36, + 0x05, 0x38, 0xc0, 0xe2, 0x05, 0x18, 0xc0, 0xa3, 0x05, 0xc4, 0xc0, 0xe0, + 0x02, 0x9c, 0xc0, 0x52, 0x01, 0xa0, 0x02, 0x02, 0xa9, 0x80, 0x0a, 0x00, + 0x92, 0x95, 0x85, 0x80, 0xc6, 0x09, 0x00, 0x98, 0x2e, 0x20, 0x67, 0xa0, + 0x33, 0x97, 0xaa, 0xb0, 0x25, 0xfc, 0x9d, 0xf9, 0x15, 0x2f, 0xcb, 0x08, + 0x83, 0x95, 0xaa, 0xd1, 0x64, 0xa7, 0xa8, 0x63, 0x6c, 0x7b, 0xea, 0xe2, + 0xac, 0xca, 0xbe, 0xad, 0x3d, 0x1b, 0xd5, 0x2b, 0x75, 0xa2, 0x74, 0xd2, + 0xe8, 0xb4, 0xbd, 0x9c, 0x52, 0xca, 0xac, 0xc5, 0xae, 0xc2, 0xe1, 0xe3, + 0x91, 0x18, 0xad, 0x32, 0xa1, 0x10, 0xe4, 0x24, 0xa0, 0x32, 0xab, 0x21, + 0xd4, 0x8e, 0x4b, 0x3b, 0xab, 0x88, 0x90, 0xb6, 0x43, 0x19, 0xd1, 0xfe, + 0xa8, 0x36, 0x51, 0x8a, 0x38, 0xb7, 0x3a, 0xcb, 0xa1, 0xa7, 0x4a, 0x9a, + 0xac, 0x54, 0x76, 0xa9, 0x5f, 0x44, 0xa2, 0xa3, 0x45, 0x09, 0x2a, 0x3c, + 0x56, 0x76, 0x46, 0x6d, 0x13, 0x64, 0x92, 0x67, 0xb1, 0x2d, 0xa5, 0x99, + 0xd2, 0xcb, 0x9c, 0x42, 0x3d, 0xc4, 0x84, 0xd4, 0x60, 0x98, 0x89, 0x04, + 0x50, 0x87, 0x13, 0x3b, 0x08, 0x01, 0x29, 0x66, 0xcc, 0xec, 0xd5, 0x72, + 0xd5, 0x36, 0xf2, 0x0e, 0x21, 0xc1, 0x4c, 0xe6, 0x4e, 0xe6, 0x72, 0xf9, + 0x9e, 0xf0, 0x8e, 0x21, 0x63, 0x59, 0xc4, 0xcf, 0xff, 0x34, 0xe2, 0x5b, + 0xe8, 0xed, 0x76, 0x49, 0xd3, 0x98, 0xc6, 0x6e, 0xd6, 0x63, 0x98, 0x9c, + 0x8f, 0x57, 0x44, 0x65, 0x54, 0x3a, 0x33, 0xdf, 0x3b, 0xd9, 0xb6, 0x56, + 0xe6, 0x54, 0xd9, 0xb4, 0x67, 0xa6, 0x73, 0x35, 0x57, 0x62, 0xd5, 0x29, + 0xa5, 0x95, 0xa7, 0xb1, 0x77, 0x33, 0x8f, 0xd1, 0x95, 0xa6, 0x2b, 0x35, + 0x86, 0xb2, 0xcc, 0x55, 0x73, 0x0d, 0x77, 0x47, 0x2a, 0x1e, 0x2a, 0x78, + 0x1c, 0x3e, 0x26, 0x39, 0x00, 0x46, 0x08, 0x30, 0xc2, 0x80, 0xa1, 0x00, + 0xc1, 0x69, 0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x27, 0x05, 0xc6, 0x4a, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x60, 0x0c, 0x08, 0x90, 0x31, 0x0c, 0x0a, 0x80, 0x29, 0x4c, 0x09, + 0xf0, 0x5d, 0x8c, 0x0e, 0x20, 0xa2, 0x4c, 0x1c, 0x71, 0x6c, 0x0c, 0x68, + 0xa8, 0x2f, 0xcf, 0x30, 0x8a, 0xd5, 0x0c, 0x5c, 0x61, 0x6d, 0x4c, 0x0b, + 0x70, 0x76, 0x8c, 0x12, 0x00, 0x0f, 0xcc, 0x22, 0xd0, 0x60, 0x8c, 0x4e, + 0x00, 0x25, 0x0c, 0x1e, 0x60, 0x16, 0xcc, 0x05, 0xd0, 0x12, 0x44, 0x80, + 0xe8, 0x1e, 0x01, 0x80, 0x05, 0x81, 0xc1, 0x63, 0x3a, 0x9a, 0x83, 0x4f, + 0x23, 0xc1, 0x25, 0x8b, 0x16, 0x61, 0x57, 0x2c, 0xa5, 0xac, 0x66, 0x8f, + 0x53, 0xe1, 0x83, 0x3a, 0xd2, 0xd9, 0x75, 0x0c, 0x85, 0xf4, 0x83, 0x5f, + 0xed, 0xda, 0xc5, 0x47, 0x10, 0xba, 0x66, 0x8e, 0x76, 0x35, 0x4a, 0xc3, + 0x21, 0x99, 0xee, 0x61, 0xd7, 0x2e, 0xc5, 0xda, 0xdb, 0xb6, 0xd8, 0xf1, + 0x69, 0x5c, 0x9a, 0x46, 0xab, 0x22, 0x97, 0x9a, 0xb0, 0x5f, 0x69, 0x34, + 0xa5, 0x2a, 0x5a, 0x2e, 0x66, 0xb3, 0x35, 0x19, 0xb4, 0x7a, 0xab, 0x0f, + 0x53, 0x20, 0x9f, 0x18, 0xf8, 0x83, 0xdb, 0xad, 0x9d, 0x5e, 0x74, 0x76, + 0x3d, 0x6b, 0x4f, 0xcd, 0xa6, 0x13, 0x83, 0xab, 0x6a, 0xd2, 0xb7, 0x64, + 0xe6, 0xce, 0x25, 0x4a, 0x41, 0x4d, 0x9c, 0xab, 0x61, 0x1c, 0xfb, 0x77, + 0x0c, 0x83, 0x7e, 0x30, 0x83, 0x70, 0x38, 0x86, 0x34, 0xbd, 0xee, 0x6a, + 0xa8, 0xaa, 0x1b, 0xac, 0x47, 0xc2, 0xe2, 0xeb, 0xc9, 0x5c, 0x12, 0x60, + 0xca, 0x50, 0xdc, 0x5d, 0x33, 0xe8, 0xe0, 0xda, 0xb8, 0x85, 0x54, 0x48, + 0xcb, 0xb4, 0xa1, 0x64, 0xe2, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x09, 0xd6, + 0xe8, 0x70, 0x41, 0x0b, 0xfc, 0x4b, 0x70, 0x68, 0x0d, 0xf8, 0x11, 0x60, + 0x45, 0x6e, 0x18, 0x9d, 0xbf, 0x0c, 0xef, 0xec, 0xad, 0xc1, 0xf2, 0xb7, + 0xdf, 0xc1, 0x81, 0xa1, 0xb8, 0x19, 0x20, 0x0d, 0xa5, 0x81, 0xe6, 0x6c, + 0x63, 0xbb, 0x18, 0x63, 0x67, 0x78, 0x6b, 0x59, 0x9c, 0xc5, 0x33, 0xec, + 0x25, 0x89, 0xad, 0xfa, 0x35, 0x5f, 0xa5, 0x8f, 0x45, 0x29, 0x88, 0x77, + 0x37, 0xbd, 0x1b, 0xd2, 0xaf, 0xdc, 0x9e, 0x84, 0x4a, 0x1f, 0x54, 0x3b, + 0x92, 0xde, 0xaf, 0x66, 0x4a, 0x33, 0xbb, 0xd5, 0xe6, 0x66, 0xc9, 0xaa, + 0xaa, 0xcf, 0x54, 0xb9, 0x14, 0x8f, 0xb2, 0x2b, 0xbb, 0x50, 0x75, 0x52, + 0x9a, 0xa4, 0xea, 0xc9, 0x6d, 0x8a, 0xcc, 0x53, 0xe7, 0xbd, 0x9e, 0x4a, + 0x31, 0x8d, 0x3a, 0x2c, 0x89, 0x66, 0x72, 0x28, 0x60, 0x88, 0x32, 0x0b, + 0x9c, 0x68, 0x40, 0x54, 0x7a, 0x8c, 0x10, 0x21, 0xce, 0x52, 0x8b, 0x0c, + 0x13, 0x0b, 0x0b, 0x71, 0x10, 0xb8, 0x00, 0xe6, 0x01, 0x50, 0x01, 0xc6, + 0x04, 0x68, 0x11, 0xa6, 0x07, 0x90, 0x1e, 0xc6, 0x10, 0xa8, 0x4e, 0x26, + 0x2c, 0x31, 0xe0, 0x07, 0x7f, 0xf2, 0x44, 0x66, 0x35, 0x50, 0x60, 0x06, + 0x10, 0x98, 0x36, 0x26, 0x07, 0xc8, 0x29, 0xa6, 0x07, 0xf0, 0x34, 0x86, + 0x10, 0xa8, 0x16, 0x86, 0x06, 0x08, 0x0a, 0x60, 0xe0, 0x11, 0x43, 0x80, + 0x59, 0x45, 0x82, 0xf1, 0x17, 0xb0, 0xca, 0x7e, 0xcd, 0x80, 0x3d, 0x58, + 0xa0, 0x58, 0xbc, 0x76, 0xbc, 0xa1, 0xe0, 0x8f, 0xc6, 0x2f, 0xaf, 0x93, + 0x04, 0x0a, 0x86, 0x67, 0xe2, 0x90, 0x5d, 0x34, 0xed, 0x3b, 0x69, 0x52, + 0x9d, 0xc2, 0x49, 0xc5, 0x25, 0x2e, 0x9f, 0x80, 0x1e, 0x36, 0x10, 0xa8, + 0x5e, 0x49, 0xfe, 0x61, 0x9c, 0xa3, 0x1b, 0xd5, 0x29, 0xeb, 0x3f, 0xb8, + 0x06, 0x39, 0xcc, 0xa6, 0x16, 0x3b, 0xa9, 0x04, 0x46, 0xb1, 0x1d, 0x91, + 0xe6, 0x66, 0xbb, 0xa5, 0xd4, 0xec, 0xaa, 0xc6, 0xd0, 0xf6, 0x32, 0x21, + 0xd8, 0xa5, 0x49, 0x4c, 0xd8, 0xf2, 0x0f, 0x74, 0x54, 0x90, 0xc5, 0xc9, + 0x75, 0xca, 0x86, 0x76, 0x2a, 0xb9, 0xd8, 0x8c, 0x64, 0x95, 0xe9, 0x67, + 0x63, 0x23, 0x3a, 0x9c, 0xac, 0xfb, 0x2e, 0xb2, 0x16, 0x8a, 0x8c, 0xab, + 0xaa, 0x29, 0xa7, 0xea, 0x66, 0x23, 0xa2, 0x8d, 0x56, 0x62, 0x0b, 0x33, + 0x2b, 0x21, 0xd0, 0x2c, 0x70, 0x70, 0x3c, 0x01, 0x14, 0x3f, 0x76, 0x21, + 0x72, 0x97, 0x59, 0xdf, 0xad, 0xba, 0x4e, 0x73, 0x02, 0x74, 0x45, 0x10, + 0x62, 0x07, 0x1c, 0xd5, 0xa3, 0x1e, 0x28, 0xcd, 0x2c, 0x84, 0x62, 0xe1, + 0x94, 0x3a, 0x45, 0x74, 0x2c, 0x82, 0xd7, 0x7e, 0x77, 0xb9, 0x98, 0xab, + 0xb7, 0xfb, 0x9f, 0xe6, 0xe2, 0x22, 0x16, 0x7e, 0x76, 0xd2, 0xa1, 0xf6, + 0xfd, 0x99, 0xac, 0x7d, 0x5d, 0x4d, 0xca, 0xbd, 0x6d, 0x55, 0x49, 0xb4, + 0xaa, 0xd9, 0x17, 0x0a, 0xfc, 0xd7, 0x0f, 0x48, 0x5f, 0x53, 0xda, 0x53, + 0xc5, 0x3d, 0xa2, 0x51, 0x09, 0x37, 0x3f, 0x09, 0xae, 0x55, 0xab, 0xcd, + 0xcb, 0x0e, 0x7a, 0x97, 0xb4, 0x1d, 0xd0, 0xa7, 0x1c, 0x0b, 0x0b, 0x0c, + 0x85, 0xc8, 0x0e, 0x51, 0x85, 0x84, 0xe4, 0x12, 0x24, 0x07, 0x41, 0xd1, + 0x7f, 0x06, 0xc1, 0x23, 0x88, 0x81, 0xd9, 0x24, 0x8a, 0x08, 0xe2, 0x74, + 0xc4, 0x14, 0xd4, 0x53, 0x32, 0xe3, 0x93, 0x82, 0xe3, 0x2a, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x59, 0x00, 0x03, 0x02, 0x90, 0x06, 0xf3, 0x01, 0x54, 0x0b, 0x63, + 0x02, 0xd0, 0x0d, 0xb3, 0x04, 0x94, 0x17, 0x43, 0x09, 0x28, 0x38, 0xd3, + 0x1a, 0x85, 0x4f, 0xa3, 0xda, 0xa5, 0xba, 0xf3, 0x1c, 0xf4, 0x30, 0xa3, + 0x06, 0xf8, 0x07, 0x13, 0x00, 0x6c, 0x0f, 0x03, 0x04, 0x60, 0x18, 0x13, + 0x0c, 0x8c, 0x0a, 0xd3, 0x04, 0xa4, 0x06, 0xe3, 0x00, 0xe8, 0x01, 0x50, + 0x50, 0x11, 0x03, 0x40, 0x12, 0xcd, 0x82, 0x84, 0x06, 0x1c, 0x9e, 0x99, + 0x8c, 0x1e, 0xdd, 0x28, 0x66, 0x9c, 0x0e, 0xe3, 0x0f, 0x48, 0xa5, 0x72, + 0xfa, 0x40, 0xb0, 0x1f, 0x3d, 0xe7, 0x13, 0x81, 0xef, 0xdc, 0x75, 0x67, + 0xab, 0x60, 0xb6, 0xa7, 0xff, 0xb5, 0xec, 0x45, 0x97, 0xfd, 0x04, 0xa3, + 0x2d, 0xd5, 0x95, 0xe7, 0x5b, 0x2b, 0x78, 0x36, 0x48, 0x41, 0x6c, 0x56, + 0xa7, 0x4c, 0x9e, 0x5f, 0x90, 0x5a, 0x5a, 0x4b, 0x8e, 0x8b, 0x5a, 0x8a, + 0x5c, 0x75, 0xd6, 0x5f, 0x14, 0x33, 0x78, 0xab, 0x10, 0x4c, 0xbe, 0x1a, + 0x9d, 0x5d, 0x50, 0xd0, 0xd5, 0xd8, 0xbd, 0xf1, 0xd2, 0x99, 0xf6, 0x90, + 0x94, 0x8b, 0x11, 0x7d, 0xb8, 0xde, 0xff, 0x79, 0x65, 0x6d, 0x68, 0xce, + 0xf6, 0x6a, 0x23, 0xaa, 0xab, 0xb8, 0xad, 0x52, 0xcd, 0x91, 0xf5, 0xda, + 0x5f, 0x6f, 0xdd, 0xee, 0x88, 0x35, 0x20, 0xc5, 0x11, 0x8a, 0xb9, 0x39, + 0x85, 0x0e, 0x16, 0x71, 0xa5, 0x6b, 0x51, 0x9e, 0x32, 0x03, 0xb5, 0x60, + 0x0a, 0x58, 0xab, 0xbc, 0xde, 0x1e, 0x75, 0x2d, 0x6b, 0xef, 0xa8, 0xd2, + 0x1e, 0x17, 0x23, 0x93, 0x45, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd6, + 0x50, 0x70, 0x42, 0x13, 0xfc, 0x43, 0x70, 0x6a, 0x4d, 0xf8, 0x11, 0x3c, + 0x68, 0x6e, 0x1a, 0x9d, 0xc1, 0x06, 0x0f, 0xed, 0x0d, 0xc2, 0x0d, 0x37, + 0xdf, 0xc4, 0xf3, 0x21, 0xba, 0xab, 0x5b, 0x6c, 0xc5, 0xe8, 0x8d, 0x96, + 0x5d, 0x0a, 0x6e, 0x4d, 0x7b, 0xe4, 0x49, 0x0b, 0xbd, 0xf7, 0x2d, 0xeb, + 0xcf, 0xf3, 0x13, 0x5a, 0x54, 0xc7, 0x5f, 0x17, 0xe9, 0x15, 0xdc, 0x77, + 0xf5, 0xf5, 0x39, 0x33, 0x5d, 0x73, 0xac, 0xff, 0xdf, 0x35, 0x11, 0xc4, + 0xf1, 0x4b, 0x31, 0x53, 0x31, 0x7d, 0x57, 0xc7, 0x6f, 0xf0, 0xbd, 0x44, + 0x4f, 0xd4, 0xf7, 0xf3, 0xff, 0x09, 0x5c, 0x2d, 0x5b, 0xd7, 0x7e, 0xba, + 0x0e, 0x1c, 0x49, 0xea, 0x85, 0x6c, 0x51, 0xec, 0xcc, 0x34, 0xb4, 0xa1, + 0xc8, 0x14, 0x2e, 0x44, 0xe3, 0x89, 0x34, 0xb5, 0x0e, 0xcc, 0x01, 0xa0, + 0x10, 0x0c, 0x07, 0xb0, 0x2f, 0xcc, 0x09, 0x00, 0x48, 0x0c, 0x10, 0x90, + 0x82, 0x4c, 0x21, 0x81, 0x22, 0x8c, 0x60, 0x96, 0x96, 0xcf, 0x16, 0x99, + 0x17, 0x8c, 0x73, 0xd1, 0x40, 0x4c, 0x2a, 0x00, 0x9e, 0x8c, 0x19, 0xc0, + 0x63, 0x0c, 0x1f, 0x10, 0x61, 0xcc, 0x3f, 0xe0, 0x23, 0x4c, 0x17, 0x60, + 0x16, 0x0c, 0x04, 0x10, 0x02, 0x06, 0x80, 0xb1, 0x55, 0xe3, 0x02, 0x68, + 0x49, 0x34, 0x27, 0x12, 0x7b, 0xe5, 0x10, 0x81, 0xe4, 0x2e, 0x75, 0xec, + 0x54, 0xee, 0xa5, 0x3f, 0x63, 0x26, 0x12, 0x09, 0x47, 0x39, 0x7a, 0x50, + 0xdb, 0x67, 0x05, 0x48, 0xea, 0x77, 0x4a, 0x3c, 0xfd, 0xc5, 0x6f, 0xbf, + 0xb1, 0x08, 0xfa, 0xa2, 0xaf, 0x14, 0xbb, 0x47, 0x84, 0x31, 0x76, 0x6a, + 0xd5, 0x4b, 0xad, 0xc9, 0xff, 0x1f, 0x65, 0x58, 0x73, 0xf4, 0x97, 0x74, + 0xa8, 0xb0, 0xd2, 0xa3, 0xec, 0x60, 0xad, 0x89, 0xa4, 0x9a, 0xa7, 0xd0, + 0xf4, 0xce, 0xee, 0xc9, 0x3c, 0x78, 0x82, 0x3c, 0xa6, 0xbe, 0x50, 0xe7, + 0xc6, 0x87, 0x07, 0x15, 0x63, 0x5c, 0xd7, 0x87, 0x3d, 0x29, 0x9e, 0x61, + 0x46, 0xc5, 0xbd, 0xdd, 0x49, 0x04, 0x44, 0xd3, 0x10, 0x3b, 0x3b, 0x71, + 0xd4, 0x7b, 0x4c, 0x1c, 0xea, 0xce, 0x3f, 0xbd, 0x1c, 0x7d, 0x54, 0x0e, + 0x3e, 0x51, 0x1d, 0x91, 0x26, 0x56, 0x37, 0x82, 0x90, 0xd8, 0x65, 0x3c, + 0x47, 0x1c, 0x3e, 0x09, 0x18, 0x43, 0xc5, 0xcd, 0x96, 0x3c, 0x5c, 0x73, + 0x12, 0x05, 0x8d, 0xb4, 0x10, 0x87, 0xa0, 0x0d, 0x25, 0x34, 0x35, 0x63, + 0x7b, 0xec, 0x6b, 0x49, 0xe8, 0xb0, 0x22, 0x6e, 0x48, 0x75, 0x13, 0x2e, + 0xe0, 0xa3, 0xd0, 0x55, 0xd4, 0x54, 0xe4, 0xe4, 0x53, 0x0f, 0x09, 0x48, + 0x33, 0x64, 0x43, 0xde, 0x2a, 0x22, 0x1e, 0xee, 0x9e, 0xe1, 0x2f, 0x57, + 0x0e, 0x8a, 0xd1, 0x15, 0x15, 0x51, 0x1f, 0x63, 0x96, 0x25, 0x65, 0xab, + 0x58, 0xbe, 0xe3, 0x65, 0x97, 0x8e, 0xe0, 0x6b, 0x70, 0x37, 0xaa, 0x97, + 0x89, 0xe6, 0xe9, 0x5a, 0xf8, 0xbd, 0x60, 0x75, 0x4f, 0x8c, 0x35, 0xf7, + 0x87, 0xb8, 0x7e, 0x7b, 0xb8, 0x1c, 0xfd, 0xaf, 0x7c, 0x54, 0x3e, 0xd7, + 0x51, 0x4c, 0x3f, 0xa9, 0x59, 0xae, 0xee, 0xdf, 0xba, 0x65, 0x1e, 0x4d, + 0xdb, 0xaa, 0xc0, 0xac, 0xc4, 0xfb, 0xb8, 0x9d, 0x44, 0x21, 0x71, 0x73, + 0x60, 0x39, 0x16, 0x11, 0x44, 0x15, 0x61, 0x04, 0x3c, 0x07, 0x81, 0xb8, + 0x82, 0x1f, 0x94, 0x1f, 0x83, 0xc9, 0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, + 0x27, 0x05, 0xc6, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x7e, 0x00, 0x03, 0x01, 0x7c, 0x03, 0x23, 0x02, 0x28, 0x02, 0xf3, + 0x02, 0x84, 0x04, 0x63, 0x04, 0x30, 0x07, 0xd3, 0x08, 0x34, 0x13, 0xe3, + 0x18, 0x90, 0x84, 0x53, 0xd0, 0x00, 0xb4, 0x03, 0x1b, 0xa8, 0x0e, 0xd3, + 0x07, 0x8c, 0x08, 0x93, 0x01, 0xac, 0x10, 0x73, 0x01, 0x04, 0x19, 0x23, + 0x04, 0x30, 0x09, 0x43, 0x01, 0x98, 0x06, 0x53, 0x00, 0x14, 0x03, 0xc1, + 0x00, 0x01, 0x2a, 0xac, 0x38, 0x0a, 0xb4, 0xcc, 0x7a, 0x30, 0x15, 0xe4, + 0xc9, 0x62, 0xd4, 0xb4, 0xbf, 0x9c, 0x31, 0x4b, 0xbc, 0x6f, 0x07, 0x00, + 0xd9, 0xfa, 0xf2, 0x8b, 0xf7, 0xa9, 0x5f, 0xab, 0x31, 0x5b, 0x2a, 0xc8, + 0xf3, 0x4e, 0xe7, 0x2c, 0x97, 0x45, 0x55, 0xe4, 0x47, 0x0f, 0xaf, 0x29, + 0x85, 0xd5, 0xee, 0x3f, 0xdc, 0x20, 0x6c, 0x98, 0xb4, 0xfe, 0xe6, 0x47, + 0xcd, 0x6e, 0x9b, 0xe9, 0x2a, 0x19, 0x1d, 0x46, 0x7b, 0x96, 0x31, 0x1d, + 0x15, 0x77, 0xbe, 0xb7, 0xaa, 0x0b, 0xff, 0xcc, 0xa9, 0xd8, 0x0f, 0x3e, + 0x79, 0x7a, 0x9b, 0x6e, 0x7a, 0xe1, 0x8f, 0x27, 0x4c, 0x4d, 0xa7, 0xe8, + 0xac, 0x39, 0x92, 0xc3, 0x3e, 0x16, 0x4b, 0x92, 0x16, 0xdc, 0xfa, 0xc4, + 0xb9, 0xf6, 0x7b, 0xbd, 0xb0, 0x85, 0x11, 0xd6, 0x5e, 0x12, 0x0a, 0xc1, + 0x41, 0x00, 0x80, 0x86, 0x5a, 0x39, 0x3a, 0xf2, 0x6b, 0x6e, 0x92, 0xcd, + 0x07, 0x58, 0xc6, 0x15, 0x57, 0x25, 0xfa, 0xb0, 0xbb, 0x3b, 0x0c, 0x7e, + 0x69, 0xc3, 0xef, 0x9d, 0x84, 0x5e, 0xf6, 0x37, 0xef, 0xbb, 0x3b, 0xa1, + 0xaa, 0x93, 0x55, 0x59, 0xcc, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xf5, + 0xb2, 0x70, 0x43, 0x13, 0xfb, 0x1b, 0x70, 0x69, 0x0d, 0xf8, 0x10, 0x3c, + 0x65, 0x6e, 0x1d, 0x55, 0xc1, 0x00, 0x0f, 0xf1, 0x8d, 0xc2, 0x3f, 0xb7, + 0xdf, 0x41, 0x93, 0x21, 0xb8, 0xa9, 0xee, 0x59, 0x69, 0x49, 0x14, 0xd9, + 0xdd, 0x1a, 0x92, 0x3e, 0x8b, 0x29, 0xf4, 0x5b, 0xd5, 0x15, 0x98, 0xca, + 0xec, 0x73, 0x6b, 0x35, 0xcc, 0xb5, 0x90, 0xda, 0xa6, 0x89, 0x5b, 0x3c, + 0xaa, 0xec, 0x8e, 0x87, 0x62, 0xa1, 0xa4, 0x91, 0x93, 0x4b, 0x9d, 0x98, + 0xc8, 0x52, 0x91, 0x0c, 0x52, 0xa0, 0x9b, 0x15, 0xdd, 0x88, 0x36, 0x35, + 0x46, 0xb8, 0xa9, 0x45, 0x4c, 0x68, 0xc1, 0x76, 0x03, 0x09, 0x88, 0x07, + 0x82, 0xe0, 0x68, 0x98, 0x14, 0x60, 0xa3, 0x0c, 0x83, 0xde, 0x60, 0x28, + 0x06, 0xc8, 0x60, 0x64, 0x8f, 0x0e, 0x61, 0x07, 0x56, 0x40, 0x67, 0xd5, + 0x77, 0x56, 0x61, 0x9c, 0x10, 0x00, 0x61, 0x10, 0x86, 0xa6, 0x61, 0x09, + 0x82, 0xb2, 0x61, 0x8a, 0x01, 0x84, 0x63, 0x85, 0x80, 0x08, 0x61, 0x42, + 0x80, 0x0a, 0x60, 0x42, 0x00, 0x8c, 0x02, 0x04, 0x7c, 0x68, 0x10, 0xcf, + 0xcc, 0x2a, 0x09, 0x30, 0x47, 0xf0, 0xc8, 0x62, 0xa5, 0x55, 0x8d, 0x41, + 0x28, 0xed, 0x57, 0xab, 0x99, 0xcf, 0x94, 0xca, 0x7a, 0x2c, 0x2e, 0xb7, + 0x8c, 0x56, 0x99, 0xa0, 0xd3, 0xe1, 0x09, 0x8a, 0xda, 0x7f, 0x18, 0x43, + 0x9f, 0x6a, 0x7a, 0xd4, 0x96, 0x38, 0xbf, 0x65, 0x72, 0xb8, 0x9d, 0xd9, + 0x53, 0xbb, 0x4b, 0xd9, 0xaf, 0xba, 0xa7, 0x70, 0xea, 0xf5, 0x4c, 0x3c, + 0x85, 0x17, 0x33, 0x8d, 0xf4, 0x05, 0x25, 0xea, 0x93, 0x30, 0xc4, 0x5f, + 0x9c, 0xc3, 0xcb, 0xaf, 0x68, 0x9c, 0x72, 0xac, 0xea, 0x86, 0x5d, 0x7a, + 0xcf, 0x3d, 0xec, 0x05, 0x8a, 0x5a, 0x8e, 0xcb, 0xb5, 0xb7, 0x31, 0xc6, + 0x59, 0x3c, 0x5e, 0xef, 0x92, 0x60, 0x73, 0x13, 0xed, 0x9c, 0xbb, 0x48, + 0x68, 0xf5, 0xd5, 0x10, 0x63, 0x1f, 0xcc, 0xc5, 0x4e, 0x6d, 0x61, 0xd1, + 0xff, 0x2c, 0x39, 0xa3, 0x9d, 0xec, 0xa1, 0x36, 0xd3, 0x3f, 0x45, 0x31, + 0xb5, 0xbe, 0xad, 0x83, 0xb7, 0x76, 0x1b, 0xcd, 0xd9, 0xbb, 0x15, 0x6b, + 0x23, 0xea, 0x53, 0xbe, 0x03, 0xea, 0x59, 0xf9, 0x71, 0x67, 0xb7, 0x47, + 0x63, 0x94, 0x8a, 0x49, 0x09, 0x0e, 0x51, 0x18, 0x96, 0x4e, 0x90, 0xa9, + 0xc5, 0xf3, 0xfc, 0x94, 0x12, 0x90, 0x5a, 0x27, 0x93, 0x2d, 0x87, 0xe2, + 0x94, 0x9c, 0x94, 0x6b, 0x52, 0xa9, 0x75, 0x89, 0x1e, 0x1b, 0x79, 0xd6, + 0xa8, 0x43, 0x39, 0xfa, 0x26, 0x75, 0x15, 0x93, 0x6a, 0x2d, 0x52, 0x65, + 0x18, 0xcb, 0x5d, 0x1e, 0xb7, 0xbd, 0xa7, 0x29, 0x7f, 0x6f, 0x6d, 0x51, + 0xd2, 0x86, 0x32, 0xa9, 0x06, 0x51, 0xe2, 0x75, 0x16, 0x22, 0x50, 0xfa, + 0x58, 0xb4, 0xbe, 0x69, 0xe6, 0xee, 0xe4, 0xe8, 0x4a, 0x92, 0x29, 0x2a, + 0x5e, 0xe7, 0xa5, 0x9c, 0x72, 0xb7, 0x48, 0x5a, 0x1c, 0xc3, 0x76, 0x8e, + 0x3e, 0xad, 0x0d, 0x62, 0xb2, 0x6a, 0xde, 0x47, 0x36, 0xb0, 0x8f, 0x98, + 0xf0, 0x33, 0x97, 0xd6, 0x6d, 0x5a, 0x51, 0x54, 0xa2, 0x0b, 0xb9, 0x41, + 0x64, 0xac, 0xa8, 0x25, 0x1a, 0x18, 0xb7, 0x51, 0xa4, 0x55, 0xd0, 0xa0, + 0xda, 0x17, 0x34, 0xf6, 0x71, 0x83, 0x01, 0xb0, 0xb0, 0xe2, 0x59, 0xc3, + 0xf0, 0xec, 0x14, 0x87, 0xc0, 0xb4, 0x17, 0x06, 0x41, 0xd0, 0x68, 0x1e, + 0x82, 0xe0, 0xfc, 0x6b, 0x03, 0xe0, 0x31, 0x31, 0x05, 0x35, 0x14, 0xcc, + 0xb8, 0xe4, 0xe0, 0xb8, 0xc9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x00, 0x2a, 0x34, 0x40, 0x00, 0x08, 0x00, 0x09, 0x30, 0x0e, 0xc0, + 0x13, 0x30, 0x27, 0x80, 0x28, 0x30, 0x45, 0x40, 0x6b, 0x30, 0x87, 0x00, + 0xfe, 0x31, 0x91, 0x45, 0xb3, 0x3d, 0x4a, 0x47, 0xb2, 0x31, 0xc2, 0x41, + 0x67, 0x30, 0x8a, 0x01, 0x34, 0x30, 0x34, 0x01, 0x38, 0x30, 0x22, 0x41, + 0x9b, 0x30, 0x2d, 0x00, 0x89, 0x30, 0x0e, 0x00, 0x64, 0x02, 0x80, 0x22, + 0x02, 0x01, 0x49, 0x5b, 0xc4, 0x40, 0x42, 0x40, 0x66, 0x13, 0x54, 0x0e, + 0xa4, 0x7e, 0xec, 0x67, 0x1f, 0xcb, 0x26, 0xe7, 0x67, 0x94, 0xb7, 0x47, + 0x85, 0x23, 0x34, 0x5b, 0xaa, 0xc3, 0x70, 0xac, 0xe4, 0xc0, 0xb2, 0xba, + 0x8b, 0x61, 0xa9, 0x46, 0x62, 0xd6, 0xac, 0xc9, 0x15, 0xae, 0x76, 0xc6, + 0x5c, 0xce, 0x02, 0xd6, 0x3f, 0x5a, 0x7e, 0x01, 0xa5, 0x11, 0x59, 0x07, + 0x89, 0x1c, 0xc5, 0x2a, 0x4c, 0x59, 0x7b, 0xec, 0xfd, 0x39, 0x77, 0xed, + 0xc1, 0xf9, 0x34, 0x6c, 0x35, 0x43, 0x30, 0x5d, 0x8f, 0xc2, 0x22, 0xc9, + 0x1d, 0x61, 0xd6, 0x90, 0xa1, 0x2b, 0xa2, 0x21, 0xcd, 0x97, 0x2e, 0x3e, + 0xdd, 0xf4, 0x9f, 0x2b, 0x66, 0xca, 0x59, 0xd1, 0xaf, 0x33, 0xd2, 0x19, + 0x91, 0x7d, 0xeb, 0x19, 0xfe, 0x65, 0x7f, 0x29, 0x73, 0xe6, 0xe8, 0x60, + 0x06, 0x21, 0xba, 0x62, 0x98, 0x12, 0x63, 0x00, 0x05, 0x7e, 0x41, 0x09, + 0x62, 0xde, 0x83, 0x56, 0x6e, 0xb7, 0x53, 0x25, 0x45, 0x2a, 0xce, 0x87, + 0x77, 0xf2, 0xe3, 0xf6, 0x13, 0x99, 0x19, 0x61, 0xb3, 0xd7, 0xb4, 0xcc, + 0xd3, 0x38, 0x21, 0x38, 0xe6, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x09, 0xf5, + 0xcc, 0x6f, 0x43, 0x3b, 0xfb, 0x1b, 0x72, 0x6b, 0x0e, 0x08, 0x11, 0x4c, + 0x65, 0x6e, 0x21, 0x5d, 0xc1, 0x00, 0x0f, 0xf1, 0x8d, 0xc2, 0x22, 0xb8, + 0x1f, 0x81, 0xa1, 0xad, 0xb8, 0xa3, 0xcc, 0x8e, 0xc9, 0x35, 0x9d, 0x18, + 0xe8, 0xba, 0x11, 0x98, 0xee, 0x88, 0xd6, 0x6e, 0xc7, 0xcc, 0x64, 0x5f, + 0xa2, 0xcd, 0xcc, 0xe8, 0xd6, 0xb5, 0x59, 0x0e, 0xce, 0x8e, 0xad, 0xba, + 0x9b, 0x3f, 0x2a, 0xb2, 0x34, 0x9b, 0x29, 0x3e, 0xf7, 0x72, 0x3e, 0x49, + 0x58, 0xca, 0x8e, 0x92, 0xb2, 0xb1, 0x09, 0xaa, 0x08, 0x16, 0xc8, 0xe2, + 0x94, 0x13, 0x52, 0x89, 0x04, 0x0e, 0x10, 0x20, 0x90, 0x78, 0xc3, 0x4e, + 0x1f, 0x12, 0x1e, 0xe2, 0xa1, 0xc3, 0x02, 0x7c, 0x0b, 0x63, 0x00, 0x00, + 0x0a, 0x93, 0x01, 0xac, 0x16, 0xa3, 0x04, 0x38, 0x16, 0x73, 0x04, 0x58, + 0x5f, 0x63, 0x06, 0x26, 0xcf, 0xb3, 0xf1, 0x2b, 0x8c, 0xc3, 0x3b, 0x48, + 0x2c, 0xe3, 0x10, 0xe8, 0x40, 0x63, 0x08, 0x8c, 0x1a, 0x93, 0x09, 0x7c, + 0x13, 0x03, 0x14, 0xd0, 0x0c, 0x53, 0x09, 0xb0, 0x07, 0xe3, 0x01, 0x88, + 0x09, 0x03, 0x01, 0x40, 0x06, 0xa2, 0x21, 0xa1, 0x85, 0x43, 0x26, 0x59, + 0x06, 0x99, 0x7c, 0x7c, 0x74, 0x00, 0x90, 0x24, 0x16, 0x61, 0x91, 0x29, + 0x87, 0xc1, 0x6b, 0x04, 0x60, 0x00, 0x81, 0x84, 0x02, 0x01, 0x01, 0xc5, + 0x90, 0x60, 0x20, 0x50, 0x18, 0x18, 0xa5, 0x86, 0x17, 0x00, 0x82, 0x40, + 0x28, 0x0f, 0x77, 0x96, 0x10, 0x0c, 0x07, 0x4f, 0xb7, 0x89, 0x8c, 0x2b, + 0x86, 0xa2, 0xe9, 0xb4, 0xf1, 0x60, 0x1b, 0xaa, 0xc3, 0xd8, 0x9c, 0x0d, + 0x69, 0x6d, 0x35, 0xc8, 0x62, 0x1b, 0x72, 0x24, 0xce, 0xdc, 0x16, 0xfd, + 0xc3, 0xef, 0xe3, 0x5c, 0x5a, 0x14, 0x47, 0x00, 0x70, 0x99, 0x55, 0xe3, + 0x33, 0xfc, 0x12, 0xfd, 0x19, 0x70, 0xf1, 0xa2, 0x5a, 0x7c, 0x43, 0x4e, + 0xbe, 0x8b, 0x52, 0x33, 0x1c, 0x6c, 0x5a, 0xf6, 0xea, 0xc7, 0x62, 0xc2, + 0xf5, 0x8d, 0x1d, 0xb9, 0xac, 0x9d, 0xac, 0x82, 0xb6, 0xf4, 0x77, 0x9a, + 0xae, 0xa5, 0xc4, 0xa5, 0x2f, 0xad, 0xfa, 0xb3, 0xda, 0xbe, 0x07, 0x9f, + 0x3e, 0xb3, 0x90, 0xbe, 0xbc, 0xed, 0xfc, 0xd5, 0x97, 0x59, 0xc7, 0x0d, + 0xdb, 0xe6, 0xf4, 0x61, 0x7f, 0x35, 0xce, 0xde, 0x0b, 0x1c, 0xac, 0x45, + 0xd4, 0x4b, 0x07, 0xfb, 0x8f, 0xd5, 0xd6, 0xb1, 0x63, 0xcb, 0x98, 0x75, + 0xfa, 0x3c, 0xdc, 0x73, 0x45, 0x11, 0x2d, 0x7f, 0x6b, 0x15, 0xd0, 0xb5, + 0xe4, 0xe9, 0x14, 0xea, 0xab, 0xad, 0x81, 0x24, 0x54, 0x60, 0xbb, 0x01, + 0xf1, 0xf7, 0x17, 0x0b, 0x77, 0x59, 0x54, 0x66, 0x27, 0xcc, 0x94, 0xaa, + 0x8a, 0x27, 0x52, 0x5b, 0x6a, 0xc5, 0xac, 0x35, 0x5f, 0x0a, 0x4c, 0xcc, + 0x21, 0x06, 0x80, 0x6f, 0x68, 0x60, 0xf5, 0x02, 0x75, 0x29, 0x8d, 0x0d, + 0x9a, 0x38, 0xf5, 0x82, 0x0c, 0xcd, 0x56, 0x1b, 0xd1, 0x43, 0xb8, 0x33, + 0xa6, 0x6f, 0xdd, 0xc5, 0x44, 0x46, 0xf9, 0x7b, 0xfb, 0x66, 0xc7, 0x7c, + 0xc4, 0x44, 0xbe, 0xe7, 0x56, 0x6d, 0xbe, 0xdb, 0x6c, 0x35, 0xef, 0x9a, + 0xba, 0xa7, 0x3b, 0xb3, 0x8d, 0x49, 0x4a, 0xd9, 0x4d, 0xdb, 0x1b, 0x7a, + 0x5a, 0x5f, 0x6f, 0xfd, 0x0a, 0xb7, 0xd4, 0x1c, 0x40, 0xd2, 0x6a, 0x6d, + 0x1a, 0x9d, 0xef, 0xce, 0x3e, 0x1a, 0xc8, 0x84, 0x76, 0x67, 0x9f, 0x5b, + 0x99, 0xc4, 0x4c, 0xd2, 0xed, 0x8b, 0x65, 0x43, 0xbd, 0xf5, 0xae, 0x79, + 0x76, 0xad, 0x24, 0xa7, 0x9e, 0x3e, 0x4e, 0xb2, 0x08, 0x7b, 0x34, 0x37, + 0x64, 0x02, 0x78, 0xf8, 0x40, 0x95, 0x97, 0x87, 0x0e, 0x13, 0x98, 0x48, + 0x33, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x09, 0xc0, 0x0d, 0x30, 0x34, 0x80, 0x07, 0x30, 0x36, 0xc0, + 0x9d, 0x30, 0x0f, 0x02, 0x7e, 0x30, 0x94, 0x46, 0xd1, 0x34, 0x4a, 0x9b, + 0x51, 0x3e, 0x7c, 0x2d, 0x89, 0x34, 0x9a, 0x01, 0xef, 0x30, 0x5f, 0x43, + 0x3f, 0x30, 0x72, 0x42, 0x01, 0x30, 0x5d, 0x02, 0xd6, 0x31, 0x18, 0x42, + 0x24, 0x30, 0x0c, 0x81, 0x0d, 0x30, 0x1c, 0x80, 0x0c, 0x30, 0x08, 0xc0, + 0x1e, 0x37, 0xf7, 0x0e, 0xdc, 0x43, 0x5f, 0x10, 0xe3, 0x5d, 0x1a, 0xf8, + 0x6a, 0x52, 0x11, 0x0e, 0x0a, 0x05, 0x31, 0x42, 0xc1, 0x41, 0x55, 0x90, + 0xc0, 0x8c, 0x01, 0x05, 0x57, 0x2a, 0xdc, 0x0a, 0x04, 0x5f, 0x29, 0xe5, + 0x31, 0x2f, 0xea, 0x3e, 0xcb, 0x96, 0x8a, 0x80, 0xb2, 0x59, 0x43, 0x0e, + 0x55, 0x67, 0xba, 0x9e, 0x54, 0xff, 0x51, 0xc1, 0x2d, 0x25, 0x8a, 0xb6, + 0x27, 0x79, 0xe6, 0xaa, 0xff, 0x3d, 0x10, 0x35, 0x58, 0xcb, 0x93, 0x8b, + 0x4a, 0x77, 0x42, 0x24, 0x81, 0x62, 0x21, 0xe1, 0x48, 0x64, 0x11, 0x45, + 0x05, 0x70, 0x61, 0x21, 0x56, 0x2a, 0x90, 0xf0, 0xd9, 0xe7, 0x24, 0xb1, + 0x34, 0x90, 0x18, 0xc4, 0x42, 0xc9, 0x19, 0xa5, 0xd0, 0x26, 0xca, 0xcc, + 0xa2, 0x1a, 0x80, 0xa5, 0x6a, 0x16, 0x80, 0x85, 0xa3, 0xca, 0x96, 0x4c, + 0x8d, 0x72, 0x08, 0x24, 0xf3, 0x08, 0xc4, 0xeb, 0xc4, 0x7a, 0xaa, 0x53, + 0x73, 0x8b, 0xc3, 0x11, 0x91, 0x09, 0x6b, 0xf9, 0x9c, 0x27, 0x23, 0x37, + 0x34, 0x91, 0x26, 0xda, 0xb8, 0xc2, 0x34, 0x46, 0xbd, 0xe9, 0xbc, 0x48, + 0x2a, 0x29, 0xd9, 0x92, 0x1a, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd8, + 0x31, 0x70, 0x3f, 0x83, 0xfa, 0x4b, 0x70, 0x6b, 0xce, 0x08, 0x22, 0x60, + 0x65, 0x6e, 0x26, 0x9d, 0xc0, 0xf0, 0x0f, 0xe1, 0xed, 0xc1, 0xa8, 0xb8, + 0x20, 0x40, 0x90, 0x95, 0xb8, 0x0f, 0x52, 0x6e, 0x1f, 0x59, 0x1c, 0x11, + 0xa0, 0x5d, 0xda, 0x2b, 0xa4, 0x4c, 0x28, 0x4e, 0xd4, 0xf9, 0x49, 0x2c, + 0x65, 0x88, 0xb6, 0xbc, 0x67, 0x32, 0x09, 0x26, 0x0b, 0x9a, 0x21, 0x42, + 0x01, 0x8d, 0x00, 0xe1, 0xd1, 0x5b, 0xc6, 0x5b, 0x27, 0x02, 0x0f, 0xb4, + 0x00, 0x01, 0x43, 0xa1, 0x33, 0x54, 0xb4, 0xb5, 0x7b, 0x57, 0x1a, 0x4e, + 0xf7, 0x5c, 0xc9, 0x1a, 0x6c, 0x4e, 0xc6, 0x7c, 0xca, 0x22, 0xc5, 0x9c, + 0x14, 0xe9, 0x2b, 0xc4, 0x3c, 0x02, 0x8c, 0x67, 0x7a, 0x5c, 0x29, 0xe5, + 0x76, 0x56, 0xb3, 0xd1, 0x56, 0x88, 0xac, 0xe4, 0xa9, 0xdc, 0xca, 0xee, + 0x67, 0x5d, 0xca, 0x94, 0x7d, 0xec, 0x46, 0x45, 0x46, 0xb3, 0xc8, 0xe8, + 0xc7, 0x5d, 0xf6, 0x4a, 0xfd, 0x11, 0x1d, 0x10, 0xc9, 0x7b, 0xb4, 0xc9, + 0xab, 0xd5, 0x95, 0x2e, 0xfd, 0x6f, 0xd5, 0x1f, 0xe9, 0x4b, 0xb9, 0x51, + 0x65, 0x63, 0x10, 0x98, 0x9a, 0x87, 0xce, 0x76, 0x51, 0xe2, 0x45, 0x1d, + 0x40, 0xfb, 0xa0, 0x0e, 0xce, 0x16, 0x1d, 0x38, 0x70, 0x1c, 0x20, 0x60, + 0x58, 0x01, 0x52, 0x60, 0xa8, 0x84, 0x1c, 0x60, 0x74, 0x02, 0x4e, 0x60, + 0xb9, 0x83, 0xf4, 0x61, 0x51, 0x09, 0x06, 0x62, 0xcf, 0x92, 0x54, 0x7c, + 0xc5, 0x9b, 0x62, 0x65, 0xff, 0x84, 0x14, 0x61, 0xb0, 0x01, 0x24, 0x60, + 0x3b, 0x03, 0xc8, 0x60, 0x6c, 0x05, 0xc6, 0x60, 0xc0, 0x81, 0x2a, 0x60, + 0x9a, 0x81, 0x7c, 0x60, 0x20, 0x00, 0x92, 0x2a, 0x00, 0xc0, 0x30, 0x29, + 0x2c, 0xe4, 0x8a, 0x8d, 0x18, 0x58, 0x73, 0x61, 0x5d, 0x50, 0x15, 0xb7, + 0xf9, 0x62, 0x5c, 0x6a, 0x4c, 0x9a, 0xe2, 0xa5, 0x67, 0x33, 0x8e, 0x5b, + 0xa2, 0xc3, 0x60, 0x86, 0x78, 0xda, 0x2c, 0x13, 0x8a, 0xd8, 0x91, 0x7d, + 0xe4, 0x64, 0x0c, 0x42, 0xa3, 0x6b, 0x55, 0x60, 0x5d, 0xb6, 0xe3, 0x13, + 0xa1, 0x7b, 0x99, 0x73, 0xa0, 0x8d, 0xca, 0x1a, 0xce, 0x19, 0x63, 0x71, + 0x7e, 0x8d, 0xb2, 0xea, 0xdc, 0x2c, 0xe6, 0x31, 0x96, 0x8e, 0x50, 0x2d, + 0x8f, 0x93, 0x4d, 0x04, 0x8e, 0x56, 0x36, 0x1f, 0x4c, 0x6a, 0xf5, 0x1a, + 0xe5, 0x46, 0x26, 0x8a, 0xa5, 0x33, 0x90, 0x98, 0xc2, 0x38, 0x5b, 0x14, + 0x08, 0x59, 0xe4, 0xcc, 0x72, 0x24, 0xce, 0x74, 0x22, 0x12, 0x0c, 0xda, + 0x33, 0x89, 0x2b, 0x8e, 0x94, 0x66, 0x09, 0xc6, 0x78, 0x9f, 0xca, 0x63, + 0xc9, 0x10, 0xac, 0x72, 0x73, 0x4e, 0x25, 0xd4, 0x45, 0x88, 0xde, 0x1e, + 0x68, 0xa2, 0xb8, 0x82, 0xb3, 0x0f, 0x52, 0x71, 0xfb, 0x89, 0x90, 0x76, + 0xcf, 0xb3, 0xd1, 0xcc, 0xf0, 0x78, 0xae, 0x27, 0x07, 0xbb, 0x2b, 0x1b, + 0x83, 0x29, 0xea, 0x7f, 0xaa, 0x48, 0x3a, 0xb0, 0xdd, 0x52, 0x85, 0xf9, + 0xf8, 0x6e, 0x9c, 0x76, 0x5e, 0x68, 0x43, 0x8c, 0xd5, 0x29, 0xde, 0x39, + 0xc7, 0xa5, 0x0b, 0x43, 0x05, 0x90, 0xa0, 0x33, 0x09, 0x4a, 0x16, 0xab, + 0x45, 0xa5, 0x55, 0x8e, 0x65, 0x86, 0x43, 0x38, 0xe5, 0x74, 0x60, 0xaf, + 0x1e, 0xe8, 0x61, 0x78, 0xe7, 0x6a, 0xe5, 0x50, 0x75, 0x97, 0xd5, 0xf5, + 0x2b, 0x5c, 0x86, 0x71, 0x48, 0x4f, 0x0b, 0xb9, 0xd0, 0x7e, 0xa2, 0x27, + 0x48, 0x18, 0xc6, 0xa2, 0x70, 0xae, 0x2d, 0x04, 0x04, 0x95, 0xb0, 0x08, + 0xe1, 0xa1, 0xa5, 0x21, 0xbe, 0x6c, 0x83, 0xd8, 0x0a, 0x33, 0x24, 0xdd, + 0x5a, 0xde, 0x46, 0x39, 0xda, 0xaa, 0x00, 0x84, 0xcc, 0x90, 0x1a, 0x85, + 0x82, 0xc8, 0xfe, 0x29, 0x99, 0xf2, 0x50, 0xce, 0xa4, 0xd4, 0x83, 0x73, + 0x1e, 0x56, 0xaa, 0xa1, 0x10, 0xa9, 0xab, 0xd1, 0x9e, 0xcc, 0xc8, 0xad, + 0xe6, 0xcd, 0x53, 0xa2, 0x5c, 0x8c, 0xe8, 0x85, 0x2b, 0x2e, 0xf3, 0xd9, + 0xf5, 0x76, 0xcf, 0x57, 0xb4, 0xf3, 0x4f, 0xa5, 0x91, 0x10, 0x96, 0x25, + 0x59, 0x92, 0x86, 0x46, 0x67, 0x29, 0x4f, 0x46, 0xa3, 0x9c, 0xf7, 0xa1, + 0x79, 0x51, 0x94, 0xc2, 0xc7, 0x76, 0x1c, 0x20, 0x78, 0xb0, 0x79, 0xcc, + 0x50, 0xb1, 0x88, 0x71, 0xc3, 0x03, 0x87, 0x28, 0x78, 0x10, 0x44, 0x38, + 0x2a, 0x1e, 0x0f, 0x98, 0x3c, 0x1a, 0x60, 0x0c, 0x00, 0x70, 0x10, 0x0c, + 0x03, 0x60, 0x53, 0x4c, 0x00, 0x80, 0x32, 0x0c, 0x02, 0xd0, 0x5c, 0x4c, + 0x05, 0xe0, 0xd1, 0x0c, 0x0c, 0xd4, 0xed, 0xcd, 0x12, 0x75, 0xf7, 0x8c, + 0x2a, 0x70, 0xdc, 0xcc, 0x12, 0x20, 0x60, 0x8c, 0x0f, 0x20, 0x2b, 0x8c, + 0x15, 0x30, 0x24, 0x4c, 0x2c, 0x20, 0x29, 0x8c, 0x11, 0x00, 0x01, 0x09, + 0x80, 0x63, 0x22, 0x00, 0xb1, 0x33, 0xde, 0x46, 0x86, 0x32, 0x5c, 0x6a, + 0xc6, 0x65, 0xee, 0xc3, 0xc9, 0x33, 0x6a, 0x2f, 0x04, 0xc5, 0x60, 0x46, + 0xc7, 0x2a, 0x68, 0xd0, 0xe4, 0xe3, 0x05, 0x6e, 0x2c, 0xdd, 0xcb, 0x72, + 0x55, 0xf3, 0x22, 0x58, 0x16, 0xf1, 0xef, 0x83, 0xa7, 0x5c, 0x28, 0xd3, + 0x86, 0xd4, 0xdf, 0xe8, 0x21, 0xd7, 0x88, 0x49, 0x65, 0x6c, 0xae, 0x8a, + 0xd3, 0xca, 0xfb, 0x35, 0xb7, 0x03, 0x5a, 0x02, 0xb9, 0xc2, 0x31, 0x3e, + 0x5d, 0x17, 0xf8, 0x8d, 0x88, 0x63, 0x26, 0x17, 0x07, 0x14, 0x8f, 0x5e, + 0xb6, 0x1c, 0x2e, 0x70, 0xd4, 0x6a, 0x12, 0x70, 0x86, 0x2b, 0x90, 0xd5, + 0xc4, 0xc9, 0x65, 0x4b, 0x23, 0x63, 0xd8, 0x88, 0x5b, 0x0b, 0xb8, 0x69, + 0x78, 0x13, 0x9c, 0x8f, 0x1c, 0xff, 0xfb, 0xd4, 0x60, 0x53, 0x8d, 0xd8, + 0xf5, 0x70, 0x3d, 0x8b, 0xf8, 0x7b, 0x70, 0x5b, 0x0e, 0x08, 0x32, 0x24, + 0x42, 0x6e, 0x21, 0x79, 0xc0, 0xf8, 0x0f, 0xe1, 0xed, 0xc1, 0x5f, 0xb7, + 0xe0, 0x84, 0xb0, 0x89, 0xb8, 0xd7, 0x0d, 0xaf, 0x55, 0xdb, 0x2e, 0x2a, + 0x54, 0x39, 0x58, 0x95, 0x5c, 0xc0, 0x61, 0x3f, 0x0e, 0x5c, 0x19, 0x6c, + 0x4d, 0x8a, 0x28, 0xe6, 0x03, 0xc5, 0x29, 0x8e, 0x8c, 0x70, 0x8e, 0xed, + 0x9d, 0xd2, 0x8e, 0x21, 0xe0, 0xa9, 0x4e, 0xc1, 0x3c, 0x4f, 0xc4, 0xba, + 0xb6, 0x2c, 0x46, 0x36, 0xd5, 0x93, 0x70, 0xeb, 0x80, 0xa1, 0xa4, 0x43, + 0xc3, 0x0e, 0x0e, 0x50, 0x15, 0x90, 0xd9, 0x97, 0x07, 0xe1, 0xf9, 0x94, + 0x39, 0x09, 0x5d, 0x38, 0x17, 0xe7, 0x26, 0x56, 0x74, 0x35, 0x9d, 0x4c, + 0xa6, 0x56, 0x1b, 0xb7, 0x61, 0x8b, 0xb5, 0x53, 0xb9, 0xe3, 0xb7, 0x9f, + 0xa7, 0x03, 0x0b, 0x3a, 0xa9, 0x70, 0x86, 0xc8, 0xb9, 0x50, 0x97, 0x85, + 0x62, 0x0d, 0x2c, 0xe0, 0x70, 0x8f, 0xa3, 0x39, 0xb5, 0x3c, 0x72, 0x8d, + 0x15, 0x5c, 0x08, 0x27, 0xd8, 0xc0, 0x00, 0x0e, 0x65, 0x18, 0x93, 0x55, + 0xed, 0x2c, 0x4a, 0x50, 0xac, 0xd4, 0x2d, 0xca, 0x8a, 0x95, 0xbb, 0xa5, + 0x24, 0x9e, 0xcf, 0x94, 0x2d, 0x98, 0xf2, 0x15, 0x75, 0xbe, 0x74, 0xa7, + 0xa5, 0x72, 0xb5, 0x8f, 0x5d, 0x57, 0xfe, 0x8e, 0x64, 0x6a, 0x3e, 0xec, + 0xaf, 0x4f, 0x43, 0xdc, 0x8d, 0xa5, 0x9d, 0xb4, 0x4e, 0xe7, 0x6f, 0x25, + 0x35, 0xad, 0x56, 0x92, 0x74, 0xbd, 0x96, 0xeb, 0x65, 0x7b, 0x2d, 0x50, + 0xe8, 0xab, 0xed, 0x75, 0x3d, 0x59, 0x11, 0x1c, 0xe8, 0x54, 0x6c, 0xc4, + 0x04, 0xc2, 0x85, 0x10, 0x59, 0x18, 0x76, 0x20, 0xea, 0x74, 0x1c, 0x59, + 0x80, 0x7e, 0x00, 0xd1, 0x80, 0xe4, 0x06, 0x81, 0x81, 0x5e, 0x00, 0x89, + 0x82, 0x48, 0x02, 0x21, 0x84, 0x86, 0x06, 0x99, 0x8d, 0x60, 0x3e, 0x11, + 0xf2, 0x14, 0x41, 0x01, 0x8f, 0x44, 0x06, 0x21, 0x84, 0x7a, 0x08, 0xd9, + 0x81, 0x8e, 0x0a, 0x19, 0x80, 0xa8, 0x0d, 0x71, 0x81, 0x20, 0x04, 0x81, + 0x80, 0x56, 0x03, 0x69, 0x20, 0x03, 0xc0, 0x00, 0x01, 0x54, 0x79, 0xc1, + 0x7f, 0x06, 0x02, 0x3c, 0x78, 0xb3, 0x85, 0x24, 0x91, 0x5b, 0x9e, 0x9c, + 0x7a, 0xa3, 0x50, 0xde, 0x4b, 0xd6, 0xb4, 0x39, 0x1c, 0x86, 0x25, 0x52, + 0x28, 0x7e, 0x07, 0x8a, 0x40, 0xf0, 0xd4, 0x65, 0xd8, 0xab, 0x8b, 0xb1, + 0xd6, 0x83, 0xb7, 0xda, 0x76, 0x86, 0x5f, 0x43, 0x17, 0xec, 0x8a, 0x96, + 0x01, 0x8d, 0x4a, 0x5a, 0x73, 0xb5, 0xc2, 0x6d, 0x4a, 0x85, 0xa8, 0xf6, + 0x96, 0x71, 0x65, 0x42, 0x1a, 0x95, 0xf7, 0x79, 0x19, 0x28, 0xa3, 0x3b, + 0x2d, 0xd9, 0x15, 0xf1, 0x16, 0x19, 0x27, 0x7d, 0xee, 0xce, 0xb5, 0x3a, + 0xed, 0x7a, 0x65, 0x73, 0x66, 0x95, 0xf1, 0x18, 0xd8, 0x11, 0xce, 0xce, + 0xf6, 0x7e, 0x77, 0x31, 0x38, 0xdd, 0xec, 0x03, 0x97, 0x11, 0x94, 0x88, + 0x63, 0xc6, 0x27, 0xaf, 0x51, 0x4c, 0x10, 0x53, 0xeb, 0xa5, 0xa7, 0x90, + 0xde, 0xb3, 0x40, 0x56, 0x3d, 0x53, 0xc6, 0x65, 0xb5, 0x1f, 0x2b, 0x5b, + 0xd4, 0x11, 0x53, 0xf3, 0xaa, 0x2c, 0xa4, 0x78, 0xf5, 0xea, 0x45, 0xdb, + 0x3e, 0xa9, 0x01, 0x24, 0xed, 0x9a, 0x3b, 0xc4, 0x22, 0xb0, 0x63, 0x27, + 0x59, 0x2f, 0x2a, 0xe1, 0xbd, 0x54, 0xd9, 0x4d, 0x26, 0xce, 0x45, 0x4b, + 0xa7, 0xad, 0x70, 0x14, 0x97, 0x8b, 0x0d, 0x3c, 0xe6, 0xa8, 0xcc, 0x91, + 0xd8, 0x29, 0x2b, 0xc7, 0xa8, 0xd5, 0x72, 0x4d, 0x0d, 0x70, 0x46, 0x2c, + 0x2a, 0x90, 0xd4, 0xe9, 0x84, 0x82, 0x3f, 0x4b, 0x61, 0x39, 0x33, 0x88, + 0x31, 0x09, 0x1f, 0x44, 0x06, 0x6b, 0x56, 0xa4, 0xfb, 0x1f, 0x5c, 0xcb, + 0x26, 0x24, 0xdb, 0xb1, 0xc5, 0x01, 0x12, 0xb5, 0x20, 0x15, 0x32, 0xc8, + 0x6b, 0x02, 0x53, 0x10, 0x39, 0x14, 0xcd, 0x72, 0xdc, 0xcd, 0xac, 0xf6, + 0xba, 0xaa, 0xfd, 0x4d, 0x7a, 0x36, 0x94, 0x9a, 0xdd, 0x57, 0xba, 0x33, + 0xfd, 0xca, 0xb6, 0x45, 0xfa, 0xbd, 0xdd, 0x56, 0xd4, 0xec, 0xbd, 0x19, + 0x93, 0x69, 0x7d, 0x51, 0x2b, 0x9e, 0x56, 0x42, 0x3b, 0x51, 0x0a, 0xfd, + 0xea, 0xc8, 0xb3, 0x20, 0x90, 0xc4, 0x04, 0x21, 0xd9, 0x68, 0xa4, 0x52, + 0x80, 0x31, 0x4c, 0x30, 0xb3, 0xc0, 0x20, 0xaa, 0x30, 0x25, 0x00, 0x9b, + 0x30, 0x2d, 0xc0, 0x39, 0x30, 0x1f, 0x81, 0x57, 0x30, 0x2c, 0xc2, 0x4c, + 0x30, 0x60, 0x05, 0x27, 0x31, 0x35, 0x5d, 0x82, 0x38, 0x9a, 0xed, 0x79, + 0x30, 0xf5, 0xc5, 0x7e, 0x30, 0x06, 0x01, 0xdd, 0x08, 0x09, 0x0c, 0xc2, + 0x10, 0x03, 0x74, 0xc5, 0x13, 0x04, 0x34, 0xc1, 0xb9, 0x01, 0x00, 0x78, + 0x0b, 0x41, 0xa0, 0x0d, 0x88, 0x9a, 0xc5, 0xdf, 0x86, 0x58, 0x19, 0x6c, + 0x30, 0x98, 0x7a, 0x68, 0x1f, 0xb7, 0x6a, 0x39, 0x20, 0x76, 0x20, 0x68, + 0xb4, 0x1f, 0x1b, 0x8b, 0xb9, 0xae, 0xb4, 0x49, 0xc5, 0x5d, 0x0e, 0x4b, + 0xc5, 0x3f, 0x19, 0xb0, 0xf2, 0xc4, 0x64, 0xf1, 0x5a, 0xcd, 0x75, 0xde, + 0x82, 0x5f, 0x99, 0xb6, 0x81, 0x06, 0xc7, 0x21, 0x32, 0xd9, 0x03, 0x0c, + 0x6b, 0x31, 0x96, 0x75, 0xa6, 0xd4, 0x51, 0xaf, 0x01, 0x76, 0x7e, 0x1a, + 0xab, 0xb7, 0x8e, 0xdc, 0x56, 0x24, 0x80, 0xb0, 0xfe, 0x45, 0x7a, 0xe5, + 0xc6, 0x1e, 0x91, 0xc7, 0xda, 0xc3, 0x02, 0x2a, 0x29, 0x88, 0x87, 0xbc, + 0x3c, 0xea, 0x7f, 0x9d, 0x25, 0xd1, 0x5a, 0xc6, 0x4e, 0x4f, 0xf3, 0xd9, + 0xe2, 0xd2, 0xba, 0x72, 0x51, 0xff, 0xfb, 0xd4, 0x60, 0x52, 0x8d, 0xd8, + 0xf6, 0x70, 0x3d, 0x03, 0xf8, 0x7b, 0x70, 0x5f, 0x4d, 0xc8, 0x22, 0x2c, + 0xa3, 0x6e, 0x63, 0x3d, 0xc0, 0xfc, 0x2f, 0xf1, 0x8d, 0xd1, 0x73, 0x38, + 0x20, 0x80, 0x60, 0x95, 0xb8, 0x66, 0xf2, 0x6e, 0x78, 0xa3, 0x99, 0x91, + 0x2e, 0x28, 0x4c, 0x13, 0xf0, 0xcd, 0x78, 0x74, 0x2b, 0x16, 0x15, 0xf6, + 0x5c, 0x32, 0xce, 0x61, 0xa7, 0xd4, 0xee, 0x05, 0xd4, 0x95, 0x3d, 0x56, + 0x3e, 0x57, 0x17, 0xf3, 0x99, 0x0d, 0x8e, 0xc6, 0xaa, 0x5d, 0x17, 0x04, + 0xb2, 0xe1, 0x56, 0x58, 0x1c, 0x55, 0x0a, 0x16, 0x83, 0x05, 0xac, 0x74, + 0x23, 0x1e, 0x2a, 0x50, 0xb6, 0x74, 0xc4, 0x46, 0x8d, 0x38, 0xaf, 0xdd, + 0x5a, 0x9e, 0xd2, 0x4d, 0x54, 0xd0, 0xa0, 0x4f, 0x3f, 0x5c, 0xaa, 0xd4, + 0xd9, 0x64, 0x66, 0x6e, 0x5d, 0x27, 0xd8, 0x99, 0x25, 0x57, 0x5e, 0x54, + 0xa1, 0xfe, 0x72, 0x9c, 0x91, 0x19, 0x63, 0xb7, 0x97, 0x02, 0x78, 0x4f, + 0x18, 0x14, 0x26, 0xc9, 0x28, 0x54, 0xb3, 0x9d, 0x2d, 0x07, 0x1a, 0x99, + 0x5a, 0x21, 0x64, 0xac, 0x19, 0x42, 0xf4, 0x90, 0x00, 0x04, 0xf7, 0x0f, + 0x5c, 0xd2, 0xd9, 0xba, 0xad, 0xf1, 0x2c, 0x76, 0x5c, 0xd1, 0x8a, 0xc4, + 0xa2, 0x56, 0xb6, 0x10, 0x77, 0x64, 0x34, 0x26, 0x65, 0x72, 0x0f, 0x72, + 0x5d, 0x1e, 0xcb, 0x45, 0xa6, 0x19, 0xfd, 0x65, 0xd3, 0x87, 0xdd, 0xb9, + 0x9f, 0xcf, 0xe7, 0x4b, 0x69, 0xcd, 0xb9, 0x3b, 0x3e, 0x5b, 0x4b, 0xcf, + 0x9a, 0x1d, 0xf4, 0x3b, 0xf3, 0xec, 0x2e, 0x7f, 0xc2, 0x2e, 0xf3, 0xe7, + 0x99, 0xff, 0x91, 0xe5, 0xaf, 0x5b, 0x99, 0x19, 0xcf, 0xa7, 0x3e, 0xcc, + 0xbd, 0xe1, 0x23, 0x26, 0x70, 0xcd, 0xec, 0x54, 0xcc, 0x11, 0x11, 0x58, + 0x28, 0x05, 0x47, 0x81, 0x48, 0x89, 0x21, 0x80, 0x4c, 0x00, 0xa1, 0x80, + 0x0c, 0x02, 0x01, 0x80, 0xdc, 0x03, 0xe1, 0x81, 0xe6, 0x07, 0x49, 0x84, + 0x20, 0x13, 0x71, 0x8b, 0xde, 0x7c, 0xd9, 0xe7, 0x72, 0x86, 0xc1, 0x8e, + 0x1a, 0x15, 0x79, 0x84, 0xb0, 0x0e, 0xb1, 0x82, 0xa0, 0x11, 0x31, 0x81, + 0x6e, 0x15, 0xa9, 0x81, 0x6c, 0x06, 0xa1, 0x85, 0x1c, 0x05, 0x71, 0x84, + 0x1a, 0x0b, 0xf9, 0x82, 0x64, 0x0e, 0x50, 0x02, 0xce, 0x6d, 0x74, 0x71, + 0xb2, 0x89, 0x46, 0x52, 0x4c, 0x18, 0x78, 0x86, 0x65, 0x30, 0xd8, 0x80, + 0x2c, 0x62, 0x20, 0x50, 0x34, 0x2e, 0x3c, 0x27, 0x30, 0x40, 0x60, 0x28, + 0x03, 0x30, 0xc0, 0x00, 0xc0, 0x61, 0x50, 0xb8, 0x38, 0x98, 0x52, 0x61, + 0x50, 0x68, 0x10, 0x2c, 0x60, 0x40, 0x08, 0x28, 0x3e, 0x16, 0x00, 0x2b, + 0xa4, 0xc0, 0x61, 0x6f, 0xd3, 0x4c, 0x70, 0xdd, 0x29, 0x97, 0xa5, 0xdb, + 0x5a, 0x4a, 0x00, 0xb0, 0x2b, 0x79, 0x80, 0x24, 0xbc, 0xbd, 0xf4, 0xc6, + 0x53, 0x40, 0xd8, 0xa5, 0x32, 0x29, 0x89, 0x64, 0xbe, 0x84, 0xf8, 0xf0, + 0x92, 0x72, 0xe1, 0x55, 0xa7, 0x49, 0x06, 0xc8, 0x45, 0x85, 0x29, 0x8c, + 0x16, 0x42, 0x6f, 0xf0, 0xc3, 0x02, 0x85, 0x64, 0xa4, 0x27, 0xd3, 0x7b, + 0x59, 0x0e, 0x18, 0xb9, 0x91, 0x9e, 0x5c, 0xb5, 0x87, 0x30, 0x1e, 0xb2, + 0x7c, 0xf0, 0x90, 0x94, 0xcc, 0xc8, 0xf6, 0xcb, 0xcc, 0x50, 0xd5, 0x2e, + 0x86, 0xe5, 0x26, 0xa4, 0xdc, 0xad, 0x19, 0x5d, 0xd4, 0x8f, 0xbc, 0xb2, + 0xc8, 0xaf, 0x74, 0xc5, 0x32, 0x54, 0x1a, 0xd8, 0x95, 0x75, 0x45, 0x7d, + 0x7d, 0x79, 0xfa, 0x09, 0x8b, 0x27, 0x50, 0x27, 0x57, 0x78, 0x9d, 0x71, + 0xd1, 0x15, 0xc6, 0x56, 0x34, 0xdd, 0x92, 0x25, 0x5f, 0x5d, 0x76, 0x2c, + 0x4a, 0x85, 0xb2, 0x9e, 0xae, 0x46, 0xf5, 0x58, 0x6d, 0xcc, 0xb3, 0x11, + 0x96, 0x1d, 0x63, 0xcf, 0x0e, 0x7a, 0x02, 0x61, 0x3a, 0x32, 0x49, 0x51, + 0x83, 0x77, 0x90, 0x79, 0x00, 0xec, 0xa4, 0x61, 0x01, 0x31, 0x78, 0x48, + 0x09, 0x99, 0x19, 0xd8, 0xf0, 0x7d, 0xca, 0x46, 0xd8, 0x41, 0x9a, 0x61, + 0x0b, 0x41, 0x41, 0x8b, 0x6f, 0x90, 0x0d, 0x91, 0xed, 0x04, 0x6a, 0xb2, + 0x3a, 0x2a, 0x3d, 0x5f, 0x47, 0x75, 0xec, 0xb5, 0xba, 0xa2, 0xae, 0x44, + 0xef, 0xed, 0xa2, 0x23, 0x3d, 0x51, 0x9e, 0xfa, 0x36, 0xba, 0x99, 0x6a, + 0xba, 0x94, 0x8e, 0xd4, 0x5d, 0xdb, 0xf5, 0xb5, 0x18, 0x95, 0x7b, 0xa9, + 0x56, 0x6a, 0x7d, 0x12, 0x97, 0x44, 0x56, 0x29, 0x13, 0x64, 0xab, 0xb4, + 0xf5, 0x78, 0x80, 0xe7, 0x28, 0x7d, 0x44, 0x2c, 0xf8, 0x38, 0x4c, 0x55, + 0x84, 0x50, 0x72, 0x87, 0x8a, 0x1c, 0x28, 0x68, 0xad, 0x30, 0x34, 0x80, + 0x94, 0x30, 0xa3, 0x43, 0x65, 0x31, 0x75, 0x91, 0xee, 0x36, 0xee, 0x9d, + 0x4e, 0x35, 0x13, 0x06, 0x78, 0x30, 0x79, 0xd1, 0x7d, 0x3d, 0x0a, 0x97, + 0xea, 0x31, 0x3b, 0x81, 0x89, 0x30, 0x98, 0x40, 0xc8, 0x30, 0xa8, 0xc3, + 0x3e, 0x30, 0x4f, 0x44, 0x0b, 0x33, 0x2d, 0x85, 0x44, 0x3a, 0x2e, 0xfd, + 0xd7, 0x3a, 0x50, 0x40, 0x44, 0x32, 0x3d, 0x04, 0x3d, 0x37, 0xcf, 0x48, + 0xeb, 0xb1, 0x43, 0x07, 0x50, 0x4e, 0xc2, 0xd7, 0x24, 0x6a, 0x98, 0xf8, + 0x84, 0x63, 0xb7, 0xe1, 0xb2, 0x82, 0x86, 0x72, 0x10, 0x98, 0xd4, 0xf0, + 0x60, 0xb1, 0x69, 0x8f, 0x05, 0xa6, 0x07, 0x4d, 0x98, 0xfd, 0x1e, 0x6a, + 0xd3, 0xe1, 0x8f, 0x16, 0xa6, 0x5a, 0x68, 0x19, 0x8c, 0x56, 0x66, 0x81, + 0xe9, 0x82, 0x49, 0x46, 0x2d, 0x07, 0x98, 0xc4, 0x10, 0x61, 0x52, 0x18, + 0x28, 0x30, 0x60, 0xf0, 0x60, 0xc0, 0x55, 0x66, 0x01, 0x82, 0x40, 0x00, + 0x38, 0x80, 0x04, 0x2c, 0x09, 0xff, 0xfb, 0xd4, 0x60, 0x46, 0x0d, 0xda, + 0x39, 0x70, 0x3f, 0x03, 0xfc, 0x7b, 0x70, 0x4c, 0xee, 0x08, 0x42, 0x3c, + 0x22, 0x6e, 0x1d, 0x79, 0xc1, 0x04, 0x4f, 0xf1, 0x2d, 0xc1, 0x46, 0x38, + 0x20, 0xc4, 0xd1, 0x09, 0xb8, 0x02, 0x82, 0x04, 0x20, 0x30, 0xe0, 0x29, + 0x6e, 0x90, 0x7d, 0x01, 0xa3, 0xa0, 0x05, 0x33, 0x4b, 0xa4, 0x6d, 0x6a, + 0x8b, 0xa9, 0x04, 0xac, 0x81, 0x49, 0x23, 0xca, 0xb6, 0x2d, 0x51, 0xf4, + 0x4f, 0xd0, 0x24, 0x18, 0xdf, 0x35, 0x09, 0x51, 0xde, 0x65, 0x12, 0x53, + 0xf0, 0xb1, 0x16, 0xd5, 0xd2, 0x16, 0x5f, 0x54, 0x8e, 0x04, 0x19, 0x22, + 0xb0, 0x5f, 0x8f, 0x94, 0x01, 0x7e, 0x4f, 0xad, 0x2c, 0x9c, 0x87, 0xd9, + 0xfb, 0x01, 0x2c, 0x72, 0xb1, 0x2b, 0x57, 0x48, 0xbb, 0xa7, 0xac, 0xd8, + 0xfd, 0x26, 0x97, 0x3f, 0x57, 0x5b, 0x54, 0xbe, 0x66, 0x59, 0x72, 0xa2, + 0xf3, 0xd7, 0x88, 0x53, 0xd7, 0xb1, 0xcf, 0xf8, 0xea, 0xd8, 0xec, 0x28, + 0x6f, 0x76, 0xad, 0x80, 0xa9, 0xc3, 0x7d, 0x93, 0xcc, 0x30, 0x18, 0xd3, + 0xfb, 0x74, 0xb8, 0x87, 0x56, 0xc6, 0x4a, 0xa9, 0x22, 0xc7, 0x6d, 0x6b, + 0x7c, 0xd7, 0x2d, 0x55, 0xb1, 0x9b, 0x58, 0xe0, 0x62, 0x8a, 0xd8, 0x28, + 0xad, 0x6e, 0x23, 0xd8, 0xd5, 0x73, 0x86, 0xbb, 0x73, 0xb4, 0x2b, 0x32, + 0x35, 0x4f, 0x02, 0x8e, 0x11, 0xd9, 0x6d, 0x1d, 0xc6, 0x58, 0x3a, 0x71, + 0xb6, 0x58, 0xd9, 0x5f, 0x3c, 0x84, 0xc1, 0x05, 0x8a, 0x1a, 0x95, 0xcd, + 0x06, 0xc0, 0x92, 0x6d, 0x4e, 0xe9, 0x8d, 0xaa, 0x13, 0xc2, 0xfa, 0x74, + 0x00, 0xc0, 0x00, 0x80, 0x4d, 0x7e, 0xe5, 0x8b, 0xc1, 0xdc, 0x0f, 0x4f, + 0x7c, 0x81, 0xef, 0xfd, 0x99, 0x7a, 0xd3, 0xbc, 0x5d, 0x2d, 0x53, 0x29, + 0x59, 0x22, 0x72, 0x42, 0x54, 0xee, 0xb9, 0x4e, 0xff, 0xae, 0x55, 0xd7, + 0xef, 0x5b, 0xdf, 0x4f, 0xeb, 0xab, 0x3d, 0x29, 0xaf, 0xf7, 0xfe, 0xb9, + 0xb7, 0xfb, 0x5e, 0xea, 0x86, 0x5b, 0xff, 0xd8, 0xbd, 0xfe, 0xff, 0x35, + 0x58, 0xaa, 0xda, 0xa2, 0x18, 0xa8, 0xa5, 0x0e, 0x77, 0x3b, 0x16, 0x51, + 0x50, 0xc0, 0x8c, 0x73, 0x0a, 0x29, 0x0c, 0x00, 0x90, 0x3c, 0x8c, 0x0d, + 0xb0, 0xc4, 0xcc, 0x70, 0x47, 0xd7, 0x0c, 0xa5, 0x76, 0x62, 0x4c, 0x6c, + 0x00, 0x24, 0xcc, 0x12, 0x62, 0xc4, 0x8d, 0x25, 0x44, 0x68, 0x4c, 0x25, + 0xc0, 0x8e, 0x0c, 0x0d, 0x70, 0x1d, 0xcc, 0x05, 0x30, 0x2c, 0x02, 0x80, + 0x02, 0x18, 0x4b, 0x63, 0xe5, 0x19, 0xb8, 0x9b, 0x68, 0x18, 0xab, 0xe2, + 0x44, 0x18, 0x1c, 0xe0, 0xbd, 0x8c, 0xd4, 0x06, 0x4c, 0x66, 0x19, 0x18, + 0x03, 0xa5, 0x00, 0xeb, 0x52, 0x46, 0x02, 0x81, 0xc0, 0x2f, 0xe8, 0x28, + 0x2a, 0x23, 0x02, 0x09, 0x00, 0x81, 0x00, 0x43, 0x02, 0x0f, 0xcc, 0x2c, + 0x3e, 0x8c, 0xc0, 0x65, 0x80, 0xcc, 0x11, 0xd6, 0x2f, 0x4a, 0x9f, 0xa6, + 0x0e, 0x05, 0xae, 0x77, 0xa9, 0x29, 0x27, 0xe6, 0xdb, 0xfb, 0x91, 0x0a, + 0xcf, 0x7d, 0x2c, 0x30, 0xea, 0x53, 0x52, 0xcf, 0x55, 0xa6, 0xa0, 0xbb, + 0x2d, 0x7e, 0xe9, 0xfe, 0x49, 0x6e, 0x32, 0x9b, 0x70, 0x92, 0x6c, 0x49, + 0x27, 0x29, 0x2a, 0x7a, 0x5b, 0x56, 0xbe, 0x5b, 0x99, 0xf3, 0xd5, 0xa0, + 0xae, 0xc1, 0x14, 0x90, 0x40, 0x89, 0x33, 0x50, 0x62, 0x4c, 0x3d, 0x5d, + 0x9d, 0xaa, 0x85, 0x3a, 0xaf, 0x9a, 0xbd, 0x9e, 0xd4, 0x08, 0x63, 0xb2, + 0x9a, 0x95, 0x14, 0x55, 0x4e, 0xd8, 0x6e, 0xb5, 0x4a, 0xed, 0x65, 0x25, + 0x7e, 0x0b, 0x57, 0xe8, 0xd8, 0x5d, 0x35, 0x31, 0x73, 0x77, 0x59, 0xf7, + 0xcd, 0x56, 0x29, 0x44, 0x98, 0x9c, 0x0e, 0x2d, 0x50, 0x47, 0xdc, 0xef, + 0xf5, 0x58, 0xd4, 0xa1, 0x8d, 0xec, 0xea, 0xd1, 0xd4, 0xca, 0xa6, 0x74, + 0x40, 0xc2, 0xcb, 0x9e, 0x83, 0xa0, 0xe3, 0xa9, 0xba, 0x68, 0x95, 0x15, + 0xbc, 0xc0, 0x3f, 0xa4, 0x63, 0x63, 0x88, 0xd9, 0x48, 0x29, 0x26, 0x98, + 0xe9, 0xec, 0xd5, 0x36, 0x96, 0x75, 0xf2, 0xcd, 0xdd, 0x46, 0xd5, 0xd1, + 0x27, 0x23, 0xa6, 0xba, 0xec, 0xc7, 0x3f, 0xe9, 0xe7, 0xa5, 0xbd, 0x57, + 0xeb, 0x5a, 0xde, 0x92, 0xbd, 0x48, 0xbd, 0x57, 0xee, 0xb6, 0x7d, 0x7d, + 0xff, 0x64, 0xfb, 0xb5, 0x9f, 0xdf, 0x64, 0x6a, 0xbe, 0xbf, 0xde, 0xa9, + 0xa6, 0xac, 0xaa, 0x94, 0xe3, 0x3d, 0x0d, 0x24, 0x1b, 0x99, 0x88, 0x20, + 0xc2, 0x86, 0x51, 0x00, 0x21, 0x04, 0x90, 0x53, 0x38, 0xa1, 0x95, 0x0d, + 0x00, 0x03, 0x04, 0x3c, 0x11, 0xe3, 0x05, 0x10, 0x23, 0x93, 0x14, 0x0d, + 0xcd, 0x63, 0xde, 0x7c, 0x78, 0x33, 0x0d, 0x24, 0x1a, 0x63, 0x0a, 0x34, + 0x35, 0x63, 0x74, 0xac, 0x18, 0x73, 0x0f, 0xb4, 0x02, 0x63, 0x05, 0x50, + 0x00, 0x23, 0x05, 0xa8, 0x0b, 0xb3, 0x00, 0x8c, 0x0b, 0xe3, 0x02, 0xac, + 0x7d, 0x93, 0x86, 0x4e, 0xc8, 0x73, 0x0e, 0xdc, 0x2a, 0x13, 0x04, 0x24, + 0x15, 0xc3, 0x17, 0xaf, 0xcc, 0x84, 0x38, 0x31, 0xa8, 0xdc, 0xc2, 0x14, + 0xa3, 0x14, 0x07, 0x1b, 0x91, 0x78, 0x00, 0x5b, 0xc5, 0x82, 0x55, 0x27, + 0x49, 0x1e, 0xcc, 0x18, 0x20, 0x36, 0x00, 0x58, 0x98, 0x02, 0xa9, 0xcc, + 0x0e, 0x08, 0x83, 0xdc, 0x04, 0x70, 0x94, 0xb6, 0x00, 0x20, 0x49, 0xa0, + 0x57, 0x93, 0xd9, 0x97, 0x43, 0x8d, 0xe4, 0x21, 0x96, 0x40, 0xf1, 0x26, + 0x1f, 0x09, 0x9d, 0x86, 0xac, 0x59, 0x98, 0x90, 0xfd, 0x2c, 0xb3, 0x3d, + 0xd7, 0xd8, 0xba, 0x4c, 0x94, 0x85, 0x3b, 0xb9, 0x4c, 0xc6, 0x27, 0x03, + 0x54, 0xdb, 0x16, 0x78, 0xe5, 0xff, 0xfb, 0xd4, 0x60, 0x4b, 0x0d, 0xd7, + 0x4f, 0x70, 0x41, 0x93, 0xfc, 0x43, 0x70, 0x57, 0x2d, 0xf8, 0x31, 0x44, + 0x22, 0x6e, 0x9a, 0xd1, 0xc1, 0x08, 0x4f, 0xec, 0xcd, 0xc1, 0x4d, 0x38, + 0x21, 0x08, 0xf1, 0x95, 0xb8, 0x6a, 0xca, 0x3d, 0xa9, 0xe5, 0x24, 0x70, + 0xbd, 0x68, 0xc7, 0x0c, 0x2c, 0xbb, 0x43, 0x09, 0x56, 0x83, 0xc7, 0x09, + 0x0d, 0xd5, 0x81, 0xb4, 0xdd, 0x8d, 0x14, 0xed, 0xda, 0x5f, 0x32, 0x04, + 0x25, 0x59, 0x4a, 0x1d, 0x67, 0x76, 0x38, 0xe2, 0xa1, 0xc7, 0x8a, 0xd0, + 0xd6, 0x79, 0x41, 0x4d, 0x07, 0xa8, 0xe8, 0x44, 0x89, 0x10, 0x46, 0x0d, + 0xa5, 0xbd, 0x45, 0xea, 0x1a, 0x84, 0x6a, 0xbe, 0xc9, 0xba, 0xb5, 0xd4, + 0x88, 0x41, 0x8b, 0x07, 0x18, 0x58, 0x81, 0x12, 0xe2, 0xa3, 0xcd, 0x93, + 0x5d, 0x0a, 0x11, 0x28, 0x34, 0x40, 0x01, 0xd0, 0x82, 0x67, 0xd2, 0x3e, + 0x68, 0x69, 0x49, 0x36, 0xb2, 0xb2, 0x5d, 0x79, 0xba, 0x08, 0xc4, 0xc0, + 0x53, 0xa0, 0x89, 0x8e, 0x30, 0x0d, 0x44, 0x74, 0xab, 0x72, 0x2d, 0xcc, + 0xee, 0xf6, 0xb2, 0x74, 0xa5, 0xbb, 0x7f, 0xae, 0xe4, 0xa6, 0xf4, 0x5b, + 0x55, 0x51, 0xbe, 0xac, 0xaf, 0xd5, 0xee, 0xef, 0xbb, 0x7d, 0xb6, 0x4f, + 0xf5, 0x46, 0xfb, 0x31, 0x51, 0xee, 0xac, 0xde, 0xdd, 0x5d, 0xac, 0xda, + 0x51, 0x59, 0xd9, 0x88, 0xc4, 0x32, 0xa1, 0x60, 0x88, 0x0d, 0x85, 0x30, + 0x70, 0x00, 0xc9, 0x0e, 0x14, 0xc0, 0xc4, 0x86, 0x06, 0x0c, 0x0e, 0xb0, + 0x20, 0x8c, 0x1c, 0x80, 0x10, 0xcc, 0x62, 0x10, 0xa4, 0x8f, 0x6b, 0x10, + 0x42, 0x0c, 0x3a, 0xb0, 0x5b, 0x0c, 0x17, 0xc2, 0x3d, 0xcc, 0x57, 0xe3, + 0x0f, 0x8c, 0x12, 0x00, 0x6b, 0x4c, 0x04, 0x90, 0x1c, 0x8c, 0x0f, 0x10, + 0x26, 0x8c, 0x01, 0xc0, 0x5d, 0x4c, 0x0b, 0x71, 0x17, 0x0e, 0xa3, 0xe8, + 0xf5, 0x0c, 0x7c, 0xb0, 0x9c, 0x0c, 0x13, 0xc0, 0x3b, 0xcc, 0xfc, 0xc4, + 0xc5, 0x8e, 0x4c, 0x68, 0x90, 0x3b, 0xcc, 0x7b, 0x85, 0x3b, 0xd4, 0xb0, + 0x27, 0x44, 0x84, 0x0e, 0x3e, 0xa6, 0x63, 0x40, 0x64, 0x0e, 0x06, 0xb8, + 0xa2, 0xa0, 0x11, 0x20, 0x32, 0xec, 0x11, 0x00, 0x23, 0xdd, 0x57, 0xf4, + 0xc5, 0xc4, 0x50, 0xb6, 0xd3, 0x58, 0xbb, 0x71, 0xb9, 0x35, 0x1c, 0x25, + 0x52, 0x3d, 0xc1, 0xb0, 0xac, 0x74, 0xdb, 0xd1, 0xc7, 0xa4, 0xf6, 0xea, + 0x42, 0x28, 0x31, 0xef, 0x74, 0xec, 0xa8, 0xda, 0x41, 0xe1, 0x31, 0xdb, + 0xda, 0x7b, 0xb1, 0x46, 0x6f, 0xd8, 0xef, 0x68, 0x6d, 0x1e, 0x83, 0x4f, + 0x59, 0x49, 0x6e, 0xb1, 0x5b, 0xf5, 0xbe, 0x3e, 0xea, 0xf2, 0x90, 0xf7, + 0x78, 0xa0, 0x72, 0x9e, 0xb3, 0x79, 0xce, 0xd7, 0x4c, 0xb8, 0xfe, 0x67, + 0x5d, 0x72, 0xfe, 0x2f, 0x5e, 0x4a, 0xfa, 0xf9, 0xbb, 0xed, 0xf9, 0x2b, + 0x9d, 0x2e, 0x67, 0xe4, 0xde, 0x5b, 0x6e, 0xbe, 0xbb, 0x64, 0x3e, 0xbb, + 0x63, 0x46, 0xef, 0xc8, 0xf9, 0xa7, 0x4b, 0x4e, 0xea, 0x5a, 0xc4, 0xa5, + 0x68, 0x1f, 0x16, 0x51, 0x84, 0x4b, 0x90, 0x90, 0x92, 0xa3, 0x58, 0xa2, + 0xc0, 0xbd, 0xbd, 0x33, 0x7c, 0x6f, 0x16, 0x04, 0x8f, 0xd9, 0xeb, 0x6a, + 0x6b, 0x3b, 0x99, 0x72, 0x7f, 0xac, 0x1e, 0xcc, 0xd3, 0x2b, 0xf3, 0x96, + 0x73, 0xdb, 0xf7, 0xd3, 0x7e, 0xff, 0xab, 0xbc, 0xeb, 0x5b, 0x51, 0xfe, + 0xb5, 0xd6, 0x8d, 0xfd, 0xbf, 0xe9, 0xbc, 0x8f, 0xf5, 0x64, 0xae, 0xd9, + 0x1f, 0x65, 0x6c, 0xed, 0xf5, 0xeb, 0xd6, 0x95, 0xbd, 0x18, 0xd7, 0x3b, + 0x4a, 0x66, 0xeb, 0x3d, 0x08, 0x86, 0x62, 0x94, 0x58, 0x71, 0x94, 0xe8, + 0x45, 0x0e, 0x90, 0x50, 0x48, 0x35, 0x31, 0x05, 0x35, 0x14, 0xcc, 0xb8, + 0xe4, 0xe0, 0xb8, 0xc9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x09, 0x00, 0x03, 0x01, 0x84, 0x05, 0x93, 0x05, 0x08, 0x1b, 0x03, + 0x14, 0xf5, 0x7f, 0x93, 0xbc, 0x3c, 0x5f, 0xe3, 0x0d, 0x6c, 0x1a, 0x53, + 0x0c, 0x30, 0x49, 0xc3, 0x50, 0x88, 0x75, 0xf3, 0x0b, 0x38, 0x14, 0x03, + 0x02, 0x8c, 0x0e, 0x73, 0x00, 0xf0, 0x0d, 0x73, 0x03, 0x84, 0x1b, 0x43, + 0x07, 0xa8, 0x0e, 0xc3, 0xcf, 0xcd, 0x11, 0x93, 0x1a, 0x20, 0x05, 0xd3, + 0x07, 0x5c, 0x05, 0xa3, 0x7d, 0x12, 0x43, 0xab, 0x46, 0x68, 0x0b, 0x18, + 0x32, 0x5a, 0x60, 0x71, 0x88, 0x04, 0x10, 0x38, 0x30, 0x12, 0xcc, 0x05, + 0x81, 0x84, 0x00, 0x16, 0xa0, 0x05, 0x0a, 0x18, 0x6c, 0x8c, 0x71, 0x92, + 0xc8, 0x60, 0xb9, 0xe5, 0x01, 0x23, 0xdb, 0xe6, 0xe2, 0x83, 0xd8, 0x2f, + 0x33, 0x0b, 0x0e, 0xc2, 0x04, 0xef, 0xe3, 0xfd, 0x02, 0x58, 0x5f, 0x6d, + 0xe5, 0x36, 0x74, 0xd0, 0xd3, 0x47, 0x60, 0xf2, 0xe8, 0x26, 0x82, 0x5f, + 0xb9, 0xea, 0x7c, 0x1e, 0x7b, 0x14, 0x56, 0x69, 0x78, 0xb4, 0x8a, 0x7b, + 0x33, 0xdd, 0x96, 0x0e, 0x67, 0x6d, 0xd5, 0xee, 0x1e, 0x9b, 0xde, 0x2b, + 0x3f, 0x49, 0xcf, 0x5a, 0x15, 0x62, 0xda, 0x71, 0x9b, 0xe2, 0x05, 0x45, + 0x6d, 0xe5, 0xb5, 0xad, 0xef, 0x23, 0xf2, 0xb6, 0xcd, 0xe8, 0x33, 0x23, + 0x9d, 0x25, 0x7d, 0x5b, 0x35, 0xe3, 0xb9, 0x6d, 0xe1, 0xfe, 0x33, 0xce, + 0x64, 0xc1, 0x97, 0xe2, 0x36, 0x2b, 0xc4, 0x3b, 0xbc, 0x66, 0x78, 0xc9, + 0x72, 0x9e, 0xcf, 0x8d, 0x57, 0xb7, 0xf3, 0x9a, 0xde, 0xbd, 0x56, 0x59, + 0xc5, 0xcd, 0xa2, 0x81, 0xf9, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd7, + 0x16, 0x70, 0x42, 0x13, 0xfc, 0x33, 0x70, 0x67, 0xad, 0xf8, 0x21, 0x60, + 0x65, 0x6e, 0x1c, 0x29, 0xbf, 0x08, 0x0f, 0xf0, 0xcd, 0xc1, 0xdf, 0x38, + 0x20, 0x05, 0xa1, 0xa1, 0xb8, 0x4c, 0xe7, 0xe7, 0xd0, 0xa4, 0x0d, 0x3c, + 0xc0, 0x17, 0xa4, 0x9a, 0x21, 0x72, 0x9e, 0xcc, 0xd5, 0xda, 0xfb, 0xb9, + 0xfa, 0xcb, 0xf3, 0xe2, 0xc8, 0x7a, 0xed, 0xdd, 0xa1, 0xe4, 0xb9, 0x7f, + 0xf1, 0x4c, 0x19, 0x42, 0x31, 0xe3, 0xbb, 0xae, 0x7f, 0xdf, 0x75, 0x45, + 0x25, 0x5d, 0x55, 0x91, 0x1d, 0x99, 0x6e, 0x7f, 0x55, 0x52, 0xa1, 0x5a, + 0xed, 0xca, 0xbf, 0xef, 0x54, 0xcc, 0x97, 0xa2, 0x3e, 0x9c, 0xea, 0xc8, + 0x8c, 0xcc, 0xab, 0x53, 0x4b, 0x52, 0xd0, 0xb5, 0x56, 0xba, 0x15, 0x0d, + 0x72, 0xd7, 0xcf, 0xcf, 0x3c, 0x8f, 0x6a, 0xf3, 0x3b, 0xb1, 0xcc, 0x54, + 0x2b, 0x08, 0xb3, 0x28, 0x90, 0x8a, 0xb9, 0x58, 0x78, 0xb3, 0x98, 0x48, + 0x48, 0x1c, 0x54, 0x50, 0x68, 0x82, 0x80, 0xe6, 0x01, 0x30, 0x1d, 0xe6, + 0x04, 0x40, 0x4d, 0xc6, 0x17, 0x3c, 0x75, 0xe6, 0xe9, 0x99, 0x05, 0x86, + 0x0a, 0x38, 0x4b, 0xa6, 0x0a, 0x28, 0xad, 0x46, 0x7c, 0xe8, 0xf3, 0xe6, + 0x0e, 0xc8, 0x15, 0xc6, 0x00, 0x30, 0x03, 0xc6, 0x04, 0xe8, 0x09, 0xc6, + 0x0c, 0x90, 0x17, 0xe6, 0x1d, 0x48, 0x3e, 0x87, 0xb4, 0xf3, 0x27, 0x26, + 0x42, 0xd8, 0x0d, 0xc2, 0x42, 0x36, 0x1b, 0xe4, 0xe4, 0x67, 0x01, 0x31, + 0x94, 0xc8, 0xa6, 0x70, 0x17, 0x19, 0x7c, 0x44, 0x60, 0x00, 0x78, 0x01, + 0x14, 0x68, 0x40, 0x2a, 0xb3, 0xaf, 0x31, 0x62, 0x21, 0x78, 0x4c, 0x1a, + 0x95, 0x39, 0x39, 0x28, 0x20, 0x66, 0xc1, 0x0c, 0x98, 0x1a, 0x7b, 0x65, + 0x03, 0x40, 0xd8, 0x92, 0xa9, 0x18, 0x89, 0x0c, 0x5f, 0x67, 0xe6, 0x6a, + 0x05, 0x9d, 0x2a, 0x81, 0xf1, 0xa1, 0x7f, 0x63, 0x32, 0x16, 0x7f, 0x06, + 0x51, 0xc7, 0x19, 0xa5, 0xbf, 0x9c, 0xdf, 0x5c, 0x89, 0xdc, 0x65, 0x7b, + 0x3e, 0x1d, 0xc0, 0xc9, 0xad, 0x07, 0xd0, 0x36, 0x3d, 0x7b, 0xce, 0x5e, + 0x98, 0x53, 0xce, 0x42, 0xa9, 0x3a, 0x78, 0x2a, 0xd1, 0xcd, 0x06, 0x8b, + 0xba, 0xd5, 0x23, 0x17, 0xec, 0xa9, 0x7b, 0x2d, 0xc4, 0xcc, 0xa7, 0x19, + 0x29, 0xcc, 0x23, 0xdf, 0x23, 0x7f, 0x66, 0x6c, 0xe4, 0xbf, 0xf7, 0xd3, + 0x6d, 0x1f, 0xe1, 0xbc, 0xa8, 0xbd, 0x57, 0x33, 0xef, 0xf9, 0x87, 0x94, + 0xf3, 0x19, 0xf3, 0xdb, 0xe4, 0xc5, 0x79, 0xce, 0x5b, 0xde, 0xff, 0x79, + 0xe2, 0xf9, 0x4f, 0xab, 0x2b, 0x95, 0x45, 0xac, 0x79, 0xa7, 0xe1, 0xa5, + 0xed, 0xc2, 0xa7, 0xa8, 0x88, 0x83, 0xe8, 0x53, 0xeb, 0x19, 0x55, 0xee, + 0x65, 0x7e, 0x97, 0x96, 0xfb, 0x7a, 0xa4, 0xe8, 0x55, 0x44, 0x6a, 0x2c, + 0xc8, 0xd9, 0xf2, 0xa6, 0x90, 0xab, 0x82, 0x33, 0x75, 0xad, 0x09, 0x50, + 0xa1, 0x7a, 0x05, 0x8e, 0x08, 0xab, 0x7c, 0x54, 0x4d, 0xa8, 0xca, 0x68, + 0xf6, 0xe1, 0xa2, 0xee, 0xbe, 0xfd, 0xe8, 0x65, 0x54, 0xcb, 0x55, 0xcf, + 0xc4, 0x3b, 0xc2, 0x75, 0xf7, 0x77, 0x37, 0x51, 0x13, 0x30, 0xf1, 0xdf, + 0xcd, 0xac, 0xa3, 0xcf, 0x31, 0x7d, 0x57, 0x7c, 0xc4, 0xf0, 0xf5, 0xa6, + 0x8b, 0x6b, 0xcf, 0xe9, 0xce, 0xfd, 0xaf, 0xad, 0xad, 0x8e, 0xa7, 0xfe, + 0x23, 0xa5, 0x95, 0xda, 0x71, 0x96, 0x71, 0x6f, 0x87, 0x83, 0x44, 0x31, + 0xa2, 0xe6, 0x8c, 0x6a, 0x34, 0xe0, 0x2e, 0x04, 0xe1, 0x10, 0x86, 0x1e, + 0x58, 0x8e, 0x1f, 0x01, 0x69, 0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, 0x27, + 0x05, 0xc6, 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x09, 0x00, 0x03, 0x02, 0xf0, 0x0f, 0x33, 0x02, 0x44, 0x29, 0xa3, + 0x04, 0x0a, 0x66, 0xd3, 0x14, 0x08, 0x82, 0xe3, 0x03, 0x80, 0x11, 0x13, + 0x05, 0x04, 0x45, 0x33, 0x28, 0x9c, 0x8f, 0xe3, 0x04, 0xc4, 0x0b, 0x93, + 0x01, 0x98, 0x02, 0x03, 0x02, 0x98, 0x06, 0xe3, 0x04, 0xdc, 0x0d, 0xd3, + 0x0b, 0x30, 0x46, 0x03, 0xc6, 0x3f, 0x42, 0x43, 0x25, 0x98, 0x24, 0x63, + 0x09, 0xac, 0x0c, 0xb3, 0x74, 0x2c, 0x0c, 0xde, 0x37, 0x31, 0x20, 0xc0, + 0x47, 0x40, 0x22, 0x08, 0xbb, 0xc0, 0x86, 0x21, 0x81, 0x01, 0x61, 0x01, + 0x42, 0xf3, 0x11, 0x02, 0x4c, 0x48, 0x19, 0x30, 0xf2, 0xa4, 0xe1, 0x08, + 0xe3, 0x02, 0x00, 0xd1, 0xe8, 0xc7, 0xa3, 0xd7, 0x1d, 0xb2, 0x09, 0x01, + 0x9d, 0x95, 0xd2, 0x65, 0x50, 0x08, 0xd1, 0x36, 0x07, 0x84, 0xbe, 0x52, + 0xb4, 0x3d, 0x12, 0x03, 0xb9, 0x72, 0x9a, 0x69, 0xf6, 0x8f, 0x05, 0xde, + 0xa4, 0x6b, 0x77, 0x33, 0xa1, 0xa7, 0xae, 0xbb, 0xec, 0xdd, 0x9c, 0x9e, + 0x80, 0xe8, 0x63, 0x84, 0xaf, 0x05, 0x0f, 0xb2, 0xd3, 0x6b, 0x8f, 0x38, + 0x5c, 0xf1, 0xc5, 0x27, 0x63, 0x28, 0xa4, 0x3d, 0xa9, 0x4b, 0xcb, 0x3a, + 0x1d, 0xde, 0x07, 0x9f, 0x29, 0xb5, 0xca, 0xc9, 0x93, 0x69, 0x5a, 0xe2, + 0xa3, 0x59, 0xc7, 0xb6, 0x66, 0xd1, 0x26, 0xf7, 0xb0, 0xf3, 0x2d, 0x65, + 0x9f, 0x31, 0x13, 0x26, 0xdc, 0xda, 0x1c, 0x6a, 0x66, 0xe4, 0xcd, 0x5b, + 0x3b, 0xa1, 0x13, 0x37, 0x39, 0xb0, 0xe2, 0xda, 0x5c, 0xd5, 0x97, 0x0f, + 0x43, 0x06, 0x56, 0xad, 0xca, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xc7, + 0x4f, 0x6f, 0xc2, 0x13, 0xfc, 0x43, 0x70, 0x63, 0x0d, 0xf8, 0x43, 0x4c, + 0xa5, 0x6e, 0x18, 0x0c, 0xff, 0x14, 0x6f, 0x7e, 0x4b, 0x81, 0xc4, 0x35, + 0xe0, 0x49, 0x81, 0x95, 0xb8, 0x9d, 0x75, 0xdd, 0x48, 0xcb, 0xc6, 0x33, + 0x8b, 0xd0, 0xa0, 0xb0, 0x72, 0x45, 0x10, 0x02, 0xad, 0x90, 0x00, 0x03, + 0xc4, 0x9e, 0x31, 0x49, 0x8e, 0x2f, 0xa4, 0x95, 0x15, 0x2d, 0xcc, 0x4b, + 0xd7, 0xca, 0xf6, 0xed, 0x2b, 0xdb, 0xcc, 0x46, 0x39, 0xed, 0x20, 0x7c, + 0xe1, 0xd1, 0x61, 0x10, 0xa5, 0x20, 0x40, 0x6b, 0x20, 0x89, 0xce, 0x8c, + 0x55, 0x32, 0x9d, 0x52, 0x71, 0x16, 0x33, 0x87, 0x12, 0x1f, 0x33, 0x29, + 0x0a, 0xba, 0xb2, 0xab, 0xaf, 0xd2, 0xca, 0xb7, 0xff, 0xa3, 0x27, 0x79, + 0xab, 0x7a, 0xbe, 0xd5, 0xf4, 0xfd, 0xbf, 0xfe, 0xa8, 0xdb, 0x5b, 0x74, + 0x4e, 0xe9, 0x5b, 0xcb, 0x54, 0x64, 0xa4, 0x71, 0xd0, 0x8e, 0x61, 0x8a, + 0x2c, 0x64, 0x51, 0x61, 0x89, 0x50, 0x72, 0x09, 0x8c, 0x1a, 0x04, 0xad, + 0x00, 0x01, 0x83, 0x00, 0x34, 0x98, 0x36, 0x87, 0x41, 0x8c, 0xd7, 0x87, + 0x9f, 0x21, 0x18, 0x41, 0x86, 0x20, 0x49, 0x98, 0x3a, 0x08, 0x79, 0xbc, + 0x70, 0x07, 0x18, 0x65, 0x00, 0x69, 0x80, 0x58, 0x0d, 0x85, 0x41, 0x84, + 0xc0, 0xe8, 0x35, 0x8c, 0x47, 0xcc, 0xac, 0xcf, 0x9e, 0x85, 0xec, 0xc3, + 0x2d, 0x03, 0x3c, 0xc0, 0x94, 0x02, 0x48, 0xc0, 0x51, 0x01, 0x84, 0xc0, + 0x32, 0x00, 0x90, 0xc0, 0x23, 0x00, 0x2c, 0xc0, 0x3f, 0x01, 0x84, 0x68, + 0x05, 0x84, 0xfb, 0x14, 0x01, 0x70, 0x0c, 0x03, 0x5b, 0xb4, 0xcc, 0x15, + 0xa9, 0x60, 0x81, 0x00, 0x0c, 0x18, 0x18, 0x40, 0x06, 0xa5, 0x63, 0xfe, + 0x00, 0x00, 0x4a, 0xdc, 0xae, 0x92, 0x75, 0xbb, 0x82, 0x00, 0x4f, 0x4e, + 0x3a, 0xda, 0x93, 0x5f, 0x94, 0x03, 0xec, 0x81, 0x94, 0xc4, 0xfe, 0x78, + 0x67, 0x47, 0x29, 0x89, 0x50, 0xe5, 0x8b, 0x8b, 0x21, 0x16, 0x44, 0xc4, + 0x08, 0x48, 0x31, 0xb1, 0xba, 0xd1, 0x2e, 0xb9, 0x44, 0xae, 0x9a, 0x96, + 0x6a, 0x99, 0x69, 0xcc, 0xd7, 0x7b, 0x31, 0xd7, 0x49, 0x9d, 0x24, 0x97, + 0x45, 0x69, 0xea, 0x73, 0x96, 0xed, 0xef, 0x6f, 0xf6, 0x75, 0x1c, 0xb2, + 0x90, 0xdb, 0xcc, 0xc7, 0xba, 0xd3, 0xac, 0xbb, 0x7b, 0xd1, 0x1f, 0xdc, + 0xc6, 0xf6, 0x69, 0xb7, 0x74, 0xd1, 0x40, 0xe9, 0x02, 0xc4, 0x81, 0xe4, + 0x00, 0xe4, 0x27, 0x7a, 0x2d, 0x2d, 0x8b, 0x46, 0xef, 0xf6, 0x96, 0x96, + 0xce, 0x38, 0xff, 0xbb, 0x1d, 0xe0, 0x15, 0xcb, 0xce, 0xec, 0x64, 0x48, + 0xdb, 0x6b, 0x29, 0xeb, 0x31, 0xf9, 0x48, 0xdc, 0x0c, 0x68, 0x1c, 0x30, + 0x11, 0xb2, 0xc1, 0xe3, 0x98, 0x4d, 0xa7, 0x11, 0x89, 0x88, 0x88, 0x29, + 0x2c, 0x93, 0x3b, 0x21, 0x58, 0xe8, 0xdd, 0x12, 0x46, 0xba, 0x2a, 0xbe, + 0x67, 0x5f, 0x25, 0x0c, 0x96, 0x2a, 0xee, 0x88, 0x8d, 0x4a, 0xb1, 0x88, + 0x44, 0xba, 0xb9, 0xb4, 0xd7, 0x65, 0x91, 0x68, 0x5b, 0x2b, 0x92, 0xa9, + 0xb2, 0xad, 0x9e, 0x95, 0x3b, 0x1f, 0x2a, 0x91, 0x9d, 0x08, 0x87, 0x86, + 0x9c, 0x88, 0x61, 0x1a, 0x07, 0x44, 0x08, 0x12, 0x38, 0x7c, 0x78, 0xa0, + 0xa1, 0xc5, 0x03, 0x13, 0x10, 0x53, 0x51, 0x4c, 0xcb, 0x8e, 0x4e, 0x0b, + 0x8c, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x0a, 0x40, 0x03, 0x01, 0xe0, 0x07, 0x93, 0x03, 0xc4, 0x0e, 0xa3, + 0x0d, 0x70, 0xd8, 0x73, 0x76, 0x58, 0x28, 0xc3, 0x07, 0xb0, 0x10, 0xb3, + 0x03, 0xa4, 0x39, 0x83, 0x07, 0x2c, 0x3d, 0xf3, 0x05, 0x18, 0x06, 0x83, + 0x02, 0x7c, 0x01, 0xe3, 0x02, 0xac, 0x0c, 0x03, 0x01, 0x78, 0x17, 0x53, + 0x01, 0x3c, 0x54, 0xe3, 0x08, 0x27, 0x74, 0x23, 0x05, 0xb8, 0x2d, 0xe3, + 0x00, 0xc8, 0x10, 0x93, 0x16, 0x7e, 0x30, 0x35, 0xf3, 0x2c, 0x36, 0x34, + 0x4a, 0xf0, 0x54, 0xfa, 0x16, 0x8e, 0x53, 0x02, 0xd0, 0xd2, 0x36, 0x1c, + 0x40, 0x98, 0x61, 0xb1, 0x82, 0xc7, 0x1a, 0xbb, 0x8a, 0x55, 0x40, 0xa4, + 0xa2, 0xab, 0x86, 0x5e, 0x28, 0x02, 0xd7, 0x94, 0xc8, 0xcc, 0x97, 0x04, + 0x8e, 0x9f, 0x9a, 0x36, 0xf6, 0x91, 0x3b, 0x13, 0x8a, 0x53, 0x06, 0xa9, + 0xfc, 0xe0, 0x18, 0x8c, 0xbe, 0xdb, 0x51, 0xa9, 0x7e, 0x08, 0xb3, 0x93, + 0x27, 0xa2, 0xb5, 0x43, 0xa5, 0x20, 0xb9, 0xc2, 0x2f, 0x31, 0x91, 0x0e, + 0x57, 0x54, 0x39, 0xb0, 0x84, 0xa7, 0x25, 0x51, 0x99, 0x66, 0x73, 0xb0, + 0x9d, 0x99, 0x8c, 0x6a, 0x8f, 0x2b, 0x5e, 0x5b, 0x59, 0xc8, 0xb5, 0x13, + 0x2b, 0x56, 0x96, 0xb5, 0x97, 0x6d, 0xb3, 0xa3, 0xaa, 0x27, 0x7f, 0x59, + 0x57, 0xba, 0x3a, 0xa3, 0x6d, 0xec, 0xec, 0xae, 0xcb, 0xae, 0x8c, 0xf2, + 0x5d, 0x8f, 0x77, 0x39, 0xce, 0x34, 0xcb, 0x2b, 0x3b, 0x3a, 0x28, 0x93, + 0x8b, 0x0b, 0xe4, 0x00, 0x1b, 0x49, 0x63, 0x13, 0x62, 0xfa, 0xcc, 0x34, + 0xed, 0x45, 0x43, 0x76, 0xaa, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xc6, + 0x60, 0x6e, 0xc3, 0x93, 0xfb, 0x2b, 0x72, 0x57, 0x4e, 0x08, 0x42, 0x40, + 0x42, 0x6e, 0x1a, 0x51, 0xc1, 0x0e, 0x6f, 0xf0, 0xad, 0xc2, 0x2c, 0x38, + 0x1f, 0x85, 0xb1, 0xa1, 0xb8, 0xf6, 0x35, 0xeb, 0xd9, 0xfb, 0x6e, 0xec, + 0xc7, 0x95, 0x19, 0x19, 0x44, 0xba, 0x19, 0x2d, 0x44, 0x42, 0x11, 0xdc, + 0xf9, 0x11, 0x0a, 0x74, 0x74, 0x9a, 0xec, 0x84, 0x71, 0xe8, 0x63, 0x35, + 0xd9, 0x39, 0xbb, 0xbe, 0x89, 0xd3, 0xb3, 0xeb, 0x6f, 0xba, 0xa3, 0xff, + 0xbf, 0xff, 0xfb, 0x51, 0x9f, 0xd5, 0x2c, 0xf4, 0x6a, 0x64, 0xff, 0xb5, + 0x15, 0xc8, 0x8c, 0x8f, 0x47, 0xa4, 0xc7, 0x56, 0x04, 0x0c, 0xf7, 0x75, + 0x06, 0x61, 0x06, 0x61, 0x88, 0x84, 0x98, 0x0a, 0xc0, 0x0e, 0x98, 0x1d, + 0x60, 0x17, 0x98, 0x6f, 0x01, 0x99, 0x1b, 0xe1, 0x40, 0x90, 0x98, 0x40, + 0x80, 0x07, 0x18, 0x20, 0x20, 0x90, 0x18, 0x26, 0x20, 0x96, 0x18, 0x17, + 0x20, 0x02, 0x98, 0x12, 0xc0, 0x08, 0x98, 0x16, 0xc0, 0x4a, 0x98, 0x17, + 0xe0, 0xc5, 0x18, 0x29, 0xc2, 0xf0, 0x9a, 0xeb, 0x7a, 0x08, 0x98, 0x72, + 0xc1, 0x9c, 0x98, 0x1b, 0x20, 0x81, 0x19, 0x61, 0x0e, 0x61, 0x51, 0xd1, + 0x83, 0x84, 0xa6, 0x30, 0x41, 0x0b, 0x16, 0x9b, 0x38, 0x04, 0xf8, 0x6d, + 0x90, 0x08, 0x84, 0x0d, 0x05, 0xd6, 0x59, 0x20, 0xe0, 0xf8, 0x3d, 0x14, + 0x50, 0x23, 0x6a, 0x08, 0xf1, 0x75, 0xe0, 0x04, 0x80, 0x1b, 0xe5, 0xf0, + 0x62, 0x53, 0x70, 0x41, 0x02, 0x5f, 0x10, 0x8a, 0xdf, 0x45, 0xe8, 0x72, + 0xda, 0x6f, 0xb2, 0x09, 0x63, 0x82, 0xa6, 0x93, 0x75, 0x9e, 0x7c, 0x73, + 0x95, 0xde, 0xc1, 0xf9, 0xe6, 0xac, 0xe0, 0x61, 0x21, 0xe8, 0x16, 0x67, + 0x30, 0xe7, 0x71, 0x71, 0xec, 0xe4, 0x8e, 0x2d, 0xdd, 0x44, 0x54, 0x45, + 0x67, 0x62, 0xa1, 0xe8, 0x80, 0x23, 0x8e, 0x6b, 0x56, 0xa6, 0x98, 0xc7, + 0x56, 0x6e, 0xca, 0x88, 0x1c, 0x5d, 0x36, 0x49, 0xfd, 0x0a, 0xea, 0x8a, + 0xce, 0x9a, 0x59, 0xdd, 0x55, 0x7e, 0x42, 0x67, 0x55, 0x76, 0x33, 0xae, + 0xd6, 0xd8, 0xce, 0x73, 0x77, 0xd5, 0xda, 0xce, 0xe4, 0xa2, 0xb9, 0x50, + 0xac, 0x2a, 0xee, 0x51, 0x66, 0x31, 0xc5, 0xd1, 0x84, 0xc8, 0x38, 0x40, + 0x39, 0x91, 0x97, 0x1e, 0x29, 0x0d, 0x55, 0x99, 0xa4, 0x96, 0xcb, 0x28, + 0xa9, 0xeb, 0xd2, 0xd5, 0xa4, 0x15, 0xaa, 0x15, 0x08, 0xa8, 0x33, 0x70, + 0x60, 0xc0, 0xa8, 0x3a, 0x4a, 0xe8, 0x09, 0xc1, 0xb8, 0xe7, 0x6d, 0x22, + 0x37, 0x43, 0x84, 0xce, 0xf0, 0x5b, 0x26, 0xa3, 0x86, 0x5b, 0x4e, 0xdd, + 0xda, 0x96, 0x4e, 0xb4, 0xfb, 0x45, 0x29, 0xd1, 0x51, 0x3d, 0xcc, 0x24, + 0x12, 0xc5, 0x0e, 0x69, 0x54, 0x55, 0x9a, 0x7f, 0x77, 0xb7, 0xbe, 0xd6, + 0xea, 0xaf, 0xaa, 0x77, 0x95, 0xea, 0x13, 0xca, 0xe6, 0x8b, 0x41, 0xed, + 0x68, 0x31, 0x9a, 0x32, 0xcc, 0xa6, 0x95, 0x25, 0xe7, 0x4f, 0x6b, 0x20, + 0x50, 0x6c, 0xda, 0xe3, 0x91, 0xf6, 0x9b, 0x4a, 0xdd, 0x99, 0x93, 0x6b, + 0xa1, 0x42, 0x8b, 0xf1, 0xa7, 0xd9, 0x60, 0xb8, 0xf1, 0x01, 0xc9, 0x10, + 0x10, 0x24, 0x1c, 0x02, 0xc3, 0x05, 0x60, 0x3f, 0x06, 0x41, 0xa0, 0x48, + 0x48, 0x54, 0x07, 0x82, 0xa1, 0x05, 0x31, 0x05, 0x35, 0x14, 0xcc, 0xb8, + 0xe4, 0xe0, 0xb8, 0xca, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x11, 0x80, 0x64, 0x30, 0x3e, 0xc1, 0x6f, 0x31, 0x0c, 0x96, + 0xd6, 0x39, 0x9b, 0x05, 0x41, 0x30, 0x99, 0x81, 0x06, 0x30, 0x2b, 0xc2, + 0x11, 0x30, 0x5d, 0x00, 0xe8, 0x30, 0x16, 0x80, 0xcd, 0x30, 0x22, 0xc0, + 0xac, 0x30, 0x2b, 0xc0, 0xfa, 0x30, 0x59, 0x81, 0xdf, 0x30, 0xd6, 0xc5, + 0xa6, 0x3d, 0xd4, 0xb9, 0x10, 0x32, 0xb7, 0xc3, 0x98, 0x30, 0x86, 0x01, + 0x41, 0x38, 0x7a, 0x68, 0xd1, 0xc1, 0x93, 0x1e, 0x82, 0xcc, 0x7f, 0x02, + 0x31, 0x10, 0xa8, 0xc0, 0x40, 0xb3, 0x0a, 0x93, 0x07, 0xe0, 0x66, 0x07, + 0x01, 0xe6, 0x1c, 0x24, 0x0e, 0x2c, 0x18, 0x29, 0x9e, 0x60, 0xe5, 0xc0, + 0x88, 0x0a, 0xcc, 0x92, 0x8a, 0x51, 0x01, 0x03, 0x80, 0x0c, 0xb4, 0x28, + 0x03, 0x31, 0xdb, 0x44, 0xc6, 0x00, 0x37, 0x29, 0xfc, 0xa4, 0x96, 0x0e, + 0x81, 0x97, 0xe4, 0xe5, 0x75, 0xb9, 0x2c, 0xb3, 0x0e, 0xd8, 0xaa, 0xf4, + 0x65, 0xb8, 0x06, 0x9f, 0x4e, 0xd5, 0x8f, 0xd4, 0xe3, 0x1e, 0x88, 0x12, + 0x9b, 0x72, 0xf1, 0x25, 0x18, 0xd1, 0x50, 0x74, 0x58, 0x76, 0x51, 0xfe, + 0x40, 0xd7, 0x19, 0xa1, 0x14, 0xdc, 0x87, 0x64, 0xb4, 0x4c, 0x91, 0x59, + 0x3d, 0x5a, 0x59, 0xb4, 0xf7, 0x8d, 0xb3, 0x9a, 0x43, 0xfe, 0x5d, 0x0a, + 0x98, 0x4f, 0x97, 0x9b, 0x46, 0xd4, 0x63, 0x5a, 0x25, 0xdb, 0x56, 0xb1, + 0x50, 0xed, 0x69, 0x12, 0xc8, 0xc9, 0x8e, 0x43, 0x76, 0xa2, 0xa0, 0x97, + 0x9b, 0x55, 0xab, 0x45, 0x84, 0x97, 0xb2, 0x2e, 0x99, 0xa6, 0x50, 0xc7, + 0x30, 0xba, 0xab, 0xa5, 0x76, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xc7, + 0x20, 0x70, 0x42, 0x03, 0xfc, 0x43, 0x70, 0x3f, 0x84, 0xa8, 0xa3, 0x34, + 0x05, 0x4b, 0x1a, 0x61, 0xb5, 0x0a, 0x0f, 0xf1, 0x0d, 0xca, 0x32, 0xb6, + 0xdf, 0x85, 0x83, 0x31, 0xba, 0xcd, 0xa3, 0x0c, 0x24, 0xba, 0x2f, 0xa2, + 0xc8, 0x02, 0xd8, 0xc8, 0x00, 0x07, 0x51, 0x7e, 0x82, 0x5b, 0xdb, 0xff, + 0xf2, 0x32, 0x11, 0x15, 0x99, 0xca, 0xd3, 0x8c, 0x91, 0x51, 0x86, 0x94, + 0xad, 0x2c, 0x1e, 0xe2, 0x40, 0xc2, 0x56, 0x55, 0x73, 0xe5, 0x84, 0x42, + 0xa0, 0x9c, 0x3e, 0xd3, 0x07, 0x8f, 0x85, 0x0e, 0x29, 0xb4, 0xd5, 0x45, + 0xab, 0x6f, 0x4a, 0x45, 0x08, 0xa7, 0x4b, 0xf6, 0x7f, 0xff, 0xf6, 0xa1, + 0x4e, 0xb1, 0xa7, 0x98, 0xb3, 0x00, 0xa4, 0x09, 0xa3, 0x01, 0x54, 0x1d, + 0xf3, 0x07, 0xc1, 0xbf, 0x03, 0x4d, 0x00, 0x62, 0x33, 0x04, 0x18, 0x15, + 0x83, 0x01, 0x44, 0x1b, 0xa3, 0x04, 0x20, 0x0b, 0x93, 0x00, 0x8c, 0x06, + 0x83, 0x01, 0x50, 0x07, 0x33, 0x02, 0x78, 0x08, 0xb3, 0x05, 0xdc, 0x09, + 0x83, 0x0e, 0xb8, 0x16, 0xb3, 0xe4, 0xe5, 0x30, 0xb3, 0x2d, 0xf8, 0x08, + 0xf3, 0x09, 0xfc, 0x06, 0xa3, 0x93, 0x06, 0xca, 0x27, 0x46, 0x30, 0x19, + 0x18, 0xec, 0xfa, 0x65, 0x21, 0x38, 0x5c, 0x10, 0x15, 0x22, 0x83, 0xd1, + 0x4e, 0x6a, 0x64, 0x36, 0x5a, 0x73, 0x08, 0x00, 0xc5, 0xe8, 0x04, 0xc2, + 0xd5, 0xbe, 0x84, 0x99, 0x13, 0x75, 0x2e, 0x5d, 0x46, 0x06, 0x64, 0xa3, + 0xa8, 0x71, 0xfd, 0xb4, 0x80, 0xa7, 0x38, 0xcf, 0x92, 0x82, 0x3d, 0x05, + 0x3b, 0xba, 0xc2, 0x04, 0xed, 0xc7, 0xf7, 0x2c, 0x21, 0x8c, 0xb6, 0xfa, + 0xe3, 0xcb, 0x98, 0xe3, 0x42, 0x88, 0x34, 0x44, 0x8a, 0xab, 0xb1, 0x4a, + 0xb4, 0xeb, 0x59, 0x32, 0xda, 0x66, 0xa7, 0x5d, 0xd3, 0x89, 0xb1, 0x21, + 0x35, 0x55, 0x97, 0x53, 0x8f, 0xa9, 0xe0, 0x95, 0xe5, 0x60, 0xff, 0x41, + 0x28, 0xc5, 0xa5, 0xf8, 0x9d, 0xc7, 0x8f, 0xd6, 0x2a, 0xba, 0x8f, 0xb8, + 0xf4, 0xb1, 0xd6, 0xbf, 0x90, 0xaf, 0x72, 0xb3, 0x59, 0x32, 0x9c, 0xc4, + 0xf2, 0xbd, 0x5a, 0x4d, 0x77, 0xcb, 0x74, 0xda, 0x4d, 0xc7, 0x70, 0xcf, + 0x72, 0x3c, 0x85, 0x94, 0x86, 0x76, 0x3c, 0x75, 0x9f, 0x1d, 0x3c, 0x01, + 0x00, 0x2f, 0xb7, 0xfe, 0x04, 0x90, 0xc7, 0x22, 0xb1, 0xbf, 0xa9, 0xdc, + 0xaf, 0xd8, 0xbd, 0x9b, 0x39, 0x44, 0x73, 0x16, 0xd1, 0xa6, 0x98, 0x65, + 0x7d, 0x97, 0x47, 0xf7, 0xf1, 0xa7, 0xbf, 0xcf, 0x99, 0x15, 0x19, 0x59, + 0xc1, 0x0c, 0x44, 0x50, 0x52, 0xb8, 0x18, 0xfa, 0xae, 0xc5, 0xd9, 0x9d, + 0x0e, 0x6d, 0x3f, 0x33, 0xa3, 0xce, 0xa7, 0x3e, 0xcf, 0xe4, 0xcc, 0xdb, + 0xb3, 0x77, 0xbe, 0xdb, 0x3d, 0x6c, 0xdc, 0x7e, 0x2b, 0xfc, 0xcf, 0xf3, + 0xd5, 0x76, 0xff, 0x4b, 0x35, 0x3f, 0x36, 0xbe, 0x6d, 0xdc, 0xad, 0x23, + 0xf7, 0x1d, 0xb7, 0xcd, 0xd9, 0x9d, 0xfa, 0x63, 0x74, 0xed, 0xa5, 0x72, + 0x2a, 0x67, 0xfd, 0xf5, 0xde, 0xea, 0xd7, 0x6b, 0x04, 0xf5, 0x3a, 0x99, + 0x05, 0x2b, 0x78, 0xb2, 0x5e, 0xfe, 0x75, 0xda, 0xf6, 0xda, 0xb3, 0x0b, + 0x97, 0xab, 0xd4, 0x5b, 0x47, 0x2c, 0xbd, 0x62, 0xf7, 0xcd, 0xd7, 0xeb, + 0x6c, 0x1c, 0x1f, 0x9f, 0x9c, 0x38, 0x29, 0x21, 0xa6, 0x20, 0xa6, 0xa2, + 0x99, 0x97, 0x1c, 0x9c, 0x17, 0x19, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x26, 0xc0, 0xe8, 0x30, 0x21, 0x02, 0x39, 0x30, 0x4d, 0x61, + 0x5e, 0x32, 0x5d, 0x47, 0x2f, 0x30, 0x2b, 0x41, 0x72, 0x10, 0x84, 0x7a, + 0x61, 0x13, 0x80, 0x90, 0x60, 0x32, 0x81, 0x6a, 0x14, 0x02, 0x00, 0xc0, + 0xab, 0x00, 0x88, 0xc1, 0x7a, 0x03, 0xd8, 0xc3, 0xe1, 0x0f, 0xa4, 0xfd, + 0xe8, 0x90, 0xf4, 0xcd, 0x1f, 0x07, 0xcc, 0xc3, 0x1a, 0x03, 0x48, 0xea, + 0x68, 0x33, 0x5e, 0x11, 0x8c, 0xf2, 0x45, 0x2a, 0x4b, 0xcc, 0x26, 0x0a, + 0x50, 0x33, 0x02, 0xaf, 0xce, 0x56, 0x16, 0x1e, 0x05, 0x26, 0xa0, 0xb0, + 0xbc, 0x20, 0x7e, 0x21, 0x5c, 0x18, 0x69, 0x7a, 0x42, 0x0a, 0x6e, 0xa4, + 0x80, 0x69, 0x97, 0x25, 0x8a, 0x30, 0x61, 0x08, 0x18, 0xc4, 0x4d, 0xe3, + 0x13, 0x80, 0x17, 0x4a, 0xfa, 0xa7, 0xc9, 0xe3, 0x28, 0x00, 0x4a, 0x25, + 0x4b, 0x3f, 0xb2, 0x8a, 0xfc, 0xc9, 0x7b, 0x61, 0x84, 0xaa, 0x5b, 0x71, + 0xa3, 0x59, 0xed, 0x4e, 0xc8, 0xa1, 0x36, 0x34, 0x10, 0xbb, 0x1b, 0x34, + 0x1c, 0xc5, 0xda, 0xb4, 0xc6, 0x12, 0x45, 0xca, 0x51, 0x17, 0xde, 0x4d, + 0x5b, 0x40, 0x94, 0x69, 0x83, 0x4d, 0x7a, 0x67, 0x66, 0x77, 0x9e, 0x9f, + 0xb3, 0xe9, 0xae, 0xc9, 0x0e, 0x9d, 0x2e, 0xd8, 0x62, 0x54, 0x44, 0xb9, + 0x97, 0x56, 0xc8, 0x74, 0x2a, 0x42, 0x45, 0x0f, 0xba, 0x36, 0x1b, 0xe9, + 0xc8, 0x26, 0xed, 0x8c, 0x75, 0xa4, 0xc7, 0xf7, 0x08, 0x9d, 0x42, 0x3d, + 0xaa, 0x71, 0x5a, 0xa8, 0xf2, 0x12, 0xed, 0x07, 0x94, 0xff, 0x30, 0xf1, + 0x16, 0x70, 0xd7, 0x98, 0x71, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd7, + 0x10, 0x70, 0x42, 0x03, 0xfc, 0x43, 0x70, 0x69, 0xed, 0xa8, 0x11, 0x60, + 0x25, 0x6e, 0x1b, 0x0d, 0xc1, 0x0a, 0x0f, 0xf1, 0x0d, 0xc1, 0xd8, 0xb7, + 0xe0, 0x04, 0xf1, 0xa1, 0xb8, 0x95, 0x24, 0x0d, 0x81, 0x00, 0x26, 0x18, + 0x03, 0x2c, 0xeb, 0x4d, 0xe5, 0x6e, 0x57, 0x72, 0xe6, 0x3b, 0xd7, 0x7f, + 0x76, 0xb1, 0x0c, 0x69, 0x33, 0x10, 0xc4, 0x90, 0xc8, 0x99, 0x39, 0x99, + 0x63, 0x22, 0xa1, 0x12, 0xdb, 0x18, 0xc6, 0x46, 0xc9, 0xa4, 0x9d, 0x52, + 0x71, 0x14, 0x55, 0x43, 0x91, 0x55, 0x91, 0x49, 0x7f, 0xdd, 0xfd, 0xda, + 0x8e, 0x75, 0xa6, 0x8c, 0xf3, 0xd9, 0xc9, 0x23, 0x3b, 0x19, 0x2b, 0xd4, + 0xef, 0x5a, 0x15, 0xc7, 0xbb, 0xba, 0xd1, 0xb7, 0x52, 0x48, 0x65, 0xbb, + 0xba, 0xab, 0x9d, 0x98, 0xe2, 0xec, 0x8a, 0xd9, 0x0a, 0x8d, 0x72, 0x91, + 0xc8, 0xca, 0xd3, 0xae, 0xec, 0x52, 0x9a, 0x42, 0x4d, 0x61, 0xa3, 0x58, + 0x54, 0x61, 0xd8, 0x40, 0x87, 0x08, 0x9f, 0x1c, 0x1a, 0x60, 0x56, 0x81, + 0x90, 0x60, 0x6f, 0x03, 0x4e, 0x61, 0x82, 0xb0, 0xb4, 0x6d, 0x2c, 0x8a, + 0x42, 0x60, 0xda, 0x82, 0x68, 0x60, 0x55, 0x00, 0x38, 0x60, 0x59, 0x82, + 0x5c, 0x60, 0x3d, 0x00, 0x2c, 0x60, 0x2f, 0x80, 0x10, 0x60, 0x21, 0x01, + 0x18, 0x60, 0x6f, 0x83, 0x1a, 0x61, 0x5e, 0x0d, 0x50, 0x74, 0x7a, 0xf6, + 0x34, 0x64, 0x79, 0x07, 0x68, 0x60, 0xdd, 0x82, 0xde, 0x6e, 0x05, 0xf1, + 0xa2, 0x51, 0x26, 0x70, 0x27, 0x1a, 0x09, 0x64, 0x67, 0x90, 0x39, 0x84, + 0x80, 0x06, 0x01, 0x6f, 0x9a, 0x0c, 0x28, 0x42, 0x03, 0x67, 0xee, 0x02, + 0x4e, 0x00, 0x85, 0x40, 0xf8, 0xf9, 0x10, 0xd9, 0x66, 0x81, 0x40, 0x70, + 0xcb, 0x54, 0x72, 0xa9, 0xd9, 0xc1, 0x90, 0x4c, 0xc1, 0x88, 0x86, 0xdd, + 0xd8, 0x6d, 0xe8, 0x93, 0x6d, 0x5a, 0x6e, 0x47, 0x5e, 0x6d, 0xcc, 0x51, + 0x67, 0xc6, 0xf3, 0x2c, 0x63, 0xfd, 0xb2, 0xff, 0xe3, 0xcb, 0x9d, 0x52, + 0x82, 0xcc, 0x81, 0x4a, 0x6a, 0xb4, 0x2c, 0xee, 0x23, 0xa6, 0x1d, 0x74, + 0xd3, 0x50, 0x32, 0x55, 0x50, 0x65, 0x54, 0x65, 0x89, 0xef, 0x97, 0xa8, + 0xf5, 0x99, 0xd9, 0x91, 0x56, 0xa9, 0x2d, 0x90, 0xb3, 0xde, 0x2b, 0x46, + 0x89, 0x1e, 0xf1, 0xbb, 0xf2, 0xff, 0x17, 0x49, 0xcd, 0x4c, 0x8e, 0xba, + 0x95, 0xeb, 0x31, 0x9a, 0x65, 0xaa, 0xe2, 0xee, 0xd3, 0xa5, 0xf8, 0x8d, + 0x2d, 0x7b, 0xe2, 0x86, 0x44, 0x45, 0xf5, 0xb5, 0xde, 0xf1, 0xca, 0xb9, + 0x9c, 0x97, 0x27, 0x98, 0x30, 0x72, 0x0a, 0x39, 0xa3, 0xc4, 0x18, 0x49, + 0xd7, 0x34, 0xab, 0xf8, 0x4d, 0xf0, 0x20, 0xb6, 0xb6, 0x77, 0xd6, 0xbe, + 0x33, 0xb1, 0x18, 0x30, 0x4a, 0x0a, 0x67, 0x9b, 0x73, 0x40, 0xb4, 0xdc, + 0x1d, 0xb7, 0xb3, 0xa7, 0xbc, 0xdb, 0xac, 0x75, 0x86, 0x3a, 0xb7, 0x1f, + 0x2f, 0x71, 0x7f, 0x3d, 0xf7, 0x6b, 0x34, 0xba, 0x5d, 0x0c, 0xbc, 0x6c, + 0x27, 0x3d, 0xac, 0xdc, 0x2f, 0xcc, 0xf5, 0x5a, 0x55, 0x4c, 0x4e, 0xb4, + 0x3b, 0x9d, 0x1f, 0x99, 0xee, 0xe6, 0xee, 0x7c, 0x65, 0x75, 0xc5, 0x75, + 0x6b, 0xac, 0x24, 0xdb, 0xd4, 0xa4, 0xab, 0xc7, 0xc2, 0xfd, 0xcc, 0x3c, + 0xd7, 0x56, 0x9d, 0x35, 0x2d, 0x55, 0x5d, 0xf4, 0xc3, 0xa4, 0x86, 0x79, + 0xb4, 0x34, 0x4e, 0x1e, 0xc8, 0xc1, 0x63, 0x84, 0x74, 0x25, 0x98, 0x61, + 0x27, 0xb2, 0x0b, 0x09, 0x43, 0xe2, 0x03, 0x49, 0x88, 0x29, 0xa8, 0xa6, + 0x65, 0xc7, 0x27, 0x05, 0xc6, 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x01, 0x48, 0x88, 0x00, 0xc0, 0x43, 0x00, 0xd8, 0xc0, 0x8c, 0x01, + 0xb4, 0xc2, 0x0d, 0x1b, 0xc0, 0xd2, 0x71, 0x05, 0x24, 0xc1, 0x19, 0x01, + 0x50, 0xc0, 0x80, 0x00, 0x6c, 0xc1, 0x10, 0x02, 0x1c, 0x30, 0x05, 0x63, + 0x00, 0x38, 0x01, 0xf3, 0x00, 0xa4, 0x10, 0xb3, 0x03, 0x6c, 0x18, 0x23, + 0x0e, 0x00, 0x3d, 0xe3, 0x37, 0x32, 0x24, 0x13, 0x0f, 0x80, 0x08, 0xf3, + 0x04, 0xb0, 0x1b, 0x43, 0x02, 0xc8, 0x09, 0xf3, 0x02, 0xb4, 0x02, 0xf3, + 0x00, 0x30, 0x02, 0xc3, 0x01, 0x94, 0x04, 0xa3, 0x00, 0xa8, 0x01, 0xe4, + 0x21, 0x30, 0x02, 0xc0, 0x77, 0x30, 0x08, 0x00, 0x2a, 0x05, 0x00, 0x58, + 0x60, 0x00, 0x80, 0x0e, 0xa6, 0xe0, 0x60, 0x01, 0x02, 0xa0, 0x1f, 0x82, + 0x00, 0x50, 0x20, 0x00, 0x05, 0x26, 0xcb, 0x90, 0xd9, 0x57, 0xba, 0x8a, + 0x34, 0xd4, 0x00, 0x0c, 0x00, 0x82, 0x2c, 0x01, 0x83, 0x91, 0x19, 0x6d, + 0xe3, 0x8d, 0x64, 0xfd, 0x46, 0x8b, 0x79, 0x38, 0x46, 0x21, 0xe7, 0x51, + 0xd0, 0xd6, 0x19, 0x62, 0xe6, 0x67, 0x11, 0x25, 0xbd, 0x1c, 0x1a, 0x04, + 0xfd, 0x2e, 0x5f, 0x0d, 0xe3, 0x10, 0xbf, 0xa1, 0xca, 0x85, 0x3a, 0x9c, + 0xe4, 0x56, 0xaa, 0x1b, 0xdf, 0x22, 0x17, 0x6c, 0x70, 0x25, 0x8f, 0x0f, + 0xc0, 0x6b, 0xb6, 0xb1, 0x7c, 0x5b, 0x39, 0xbe, 0xed, 0x9f, 0xf1, 0x49, + 0xdd, 0x15, 0x70, 0xa9, 0xa3, 0xad, 0x75, 0x82, 0xe6, 0x87, 0x68, 0x65, + 0x0c, 0xcd, 0x54, 0x84, 0xfd, 0x75, 0xb1, 0xf7, 0xab, 0x45, 0xbe, 0xd3, + 0x85, 0x8d, 0x2d, 0xe3, 0x67, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xd6, + 0xf4, 0x33, 0x45, 0x1b, 0xff, 0x7a, 0xe0, 0x68, 0x2d, 0xf8, 0x21, 0x64, + 0x65, 0x6e, 0x21, 0x19, 0xbf, 0x02, 0x0f, 0xf5, 0x2d, 0xc1, 0xf1, 0x38, + 0x1f, 0xc1, 0x91, 0xa1, 0xb8, 0x40, 0x62, 0x20, 0x80, 0xf9, 0x26, 0x41, + 0x6a, 0x53, 0x4d, 0x6e, 0xb7, 0xf7, 0x1b, 0x78, 0xeb, 0x9b, 0xcb, 0x71, + 0xcf, 0xa5, 0x14, 0xce, 0xb7, 0xdb, 0x99, 0xb9, 0x6f, 0x9e, 0xb9, 0x92, + 0xcf, 0x99, 0x65, 0x9d, 0x23, 0x63, 0x94, 0xb4, 0x47, 0x38, 0xe2, 0x31, + 0xd5, 0x9e, 0xbe, 0xb4, 0x45, 0xae, 0xac, 0x65, 0xd6, 0x6b, 0x56, 0x9d, + 0x0c, 0xb5, 0x72, 0xb9, 0xb7, 0x9d, 0xdb, 0xe6, 0x45, 0x7f, 0xa2, 0xd6, + 0xa6, 0xbe, 0x8b, 0x4b, 0x99, 0x52, 0x8a, 0xcb, 0x76, 0xa2, 0xad, 0xd9, + 0xea, 0xce, 0xe7, 0x74, 0x91, 0x19, 0x0e, 0x87, 0x69, 0x4a, 0xea, 0x67, + 0x9c, 0x4c, 0xcc, 0x3c, 0xe2, 0xe4, 0x30, 0x78, 0x58, 0x6d, 0xca, 0x1f, + 0x16, 0x38, 0xa8, 0x61, 0x81, 0xc2, 0x01, 0xc1, 0x83, 0xa4, 0x04, 0xe1, + 0x8d, 0xea, 0x65, 0x09, 0xfb, 0xba, 0x16, 0x51, 0x87, 0xee, 0x05, 0xe9, + 0x82, 0xc4, 0x0a, 0x70, 0x61, 0x17, 0x46, 0x02, 0x00, 0x25, 0xa2, 0x80, + 0x0c, 0x98, 0x33, 0x60, 0x2a, 0x98, 0x7c, 0x81, 0x62, 0x99, 0x01, 0x68, + 0x5e, 0x1a, 0x5d, 0xf2, 0x07, 0x19, 0x81, 0xa2, 0x9c, 0x98, 0xd7, 0x40, + 0xc7, 0x9d, 0x62, 0xb5, 0x19, 0x3c, 0x14, 0x98, 0x06, 0x4c, 0x98, 0x3e, + 0x64, 0x84, 0x23, 0x86, 0x11, 0x86, 0xc6, 0x07, 0x88, 0xa6, 0x3c, 0x0a, + 0x20, 0x80, 0x78, 0xc2, 0x50, 0x20, 0x2c, 0x0a, 0x98, 0x4c, 0x07, 0x98, + 0x34, 0x2d, 0x98, 0xe4, 0x1d, 0x8a, 0x00, 0x88, 0x23, 0x46, 0x80, 0x30, + 0x0c, 0x8b, 0xe0, 0x60, 0x54, 0x0a, 0x01, 0x05, 0x41, 0x00, 0x50, 0x06, + 0x60, 0xa0, 0x22, 0xa6, 0x88, 0xac, 0xff, 0xc4, 0x6a, 0x47, 0x5d, 0xa7, + 0xad, 0xd5, 0x6e, 0x50, 0xf5, 0x2c, 0xa2, 0x06, 0x6b, 0x31, 0xb8, 0x76, + 0x51, 0x3c, 0xfe, 0xcc, 0x49, 0xe9, 0x65, 0x96, 0x52, 0x26, 0x42, 0xa1, + 0x32, 0x66, 0x12, 0x38, 0x6c, 0x84, 0xf2, 0xcf, 0x32, 0x8a, 0x52, 0x2b, + 0x21, 0x53, 0x4a, 0xb6, 0x4f, 0x26, 0x56, 0x2c, 0x7d, 0xb8, 0x35, 0x91, + 0x71, 0x31, 0xe6, 0xad, 0x1b, 0x70, 0xa8, 0x2c, 0x50, 0xe3, 0xb1, 0x55, + 0x26, 0xae, 0xcd, 0x8b, 0x5a, 0xb4, 0x85, 0xa2, 0xca, 0xf5, 0xd6, 0x44, + 0x89, 0x86, 0x59, 0x24, 0x51, 0x69, 0x44, 0xe3, 0xfa, 0xd3, 0x5e, 0x75, + 0x25, 0x24, 0xa3, 0x70, 0x51, 0x85, 0x59, 0x5d, 0xfb, 0x0b, 0xc6, 0xf4, + 0xd2, 0xf4, 0x80, 0x83, 0x22, 0xe6, 0xd8, 0x9b, 0xe4, 0x57, 0x20, 0xb4, + 0xe0, 0x83, 0xb1, 0x38, 0x25, 0xaa, 0xaa, 0x6e, 0xd0, 0xd1, 0x13, 0xa7, + 0x26, 0x89, 0xd2, 0x51, 0x35, 0x0e, 0x26, 0xa8, 0xdd, 0xa6, 0x44, 0x91, + 0xc4, 0x65, 0x01, 0x04, 0x47, 0xcb, 0xd4, 0xb2, 0xae, 0x4a, 0xa3, 0x9c, + 0x97, 0x7d, 0x35, 0x5b, 0x3d, 0xb7, 0x89, 0x84, 0xec, 0xa8, 0xf0, 0x1d, + 0xc5, 0x93, 0xdf, 0x84, 0x8a, 0x8d, 0x1b, 0xec, 0x34, 0x7c, 0xab, 0x40, + 0x4d, 0x47, 0xa8, 0xe7, 0x0f, 0x2e, 0x78, 0x9b, 0xa8, 0x1b, 0xc4, 0x32, + 0x2b, 0x1c, 0xa9, 0x33, 0x71, 0x37, 0xa0, 0xd9, 0x1e, 0x97, 0x31, 0xf6, + 0x36, 0xff, 0xed, 0x59, 0xe2, 0xcf, 0xb9, 0xa7, 0x96, 0x67, 0xea, 0xae, + 0x89, 0x76, 0xbb, 0x25, 0xd9, 0xa7, 0xd3, 0x44, 0x2d, 0x63, 0x75, 0xed, + 0x20, 0xf8, 0xb8, 0xaa, 0x3d, 0x52, 0xed, 0xc7, 0xdc, 0x67, 0x24, 0x75, + 0x77, 0xb7, 0xc7, 0x5f, 0x69, 0x2e, 0x3b, 0x98, 0xb4, 0x3e, 0xea, 0x13, + 0x70, 0xfe, 0x4a, 0x38, 0x5f, 0xaa, 0x0b, 0x95, 0x43, 0x05, 0xc3, 0x91, + 0x04, 0x02, 0x07, 0x66, 0x18, 0x1e, 0x09, 0x81, 0x62, 0x62, 0x0a, 0x6a, + 0x29, 0x99, 0x71, 0xc9, 0xc1, 0x71, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x19, 0xc0, 0xab, 0x30, 0x67, 0x82, 0x80, 0x31, 0x98, 0x67, + 0x89, 0x3e, 0x65, 0x48, 0xaa, 0x30, 0xed, 0x41, 0xbb, 0x30, 0x4c, 0x80, + 0x33, 0x30, 0x92, 0xc1, 0xc0, 0x0b, 0x00, 0xbc, 0x60, 0x0a, 0x00, 0x8a, + 0x05, 0x01, 0x9c, 0xc0, 0x95, 0x03, 0xb0, 0xc1, 0x82, 0x10, 0x1c, 0xd0, + 0x7d, 0x48, 0xcc, 0xc0, 0x3b, 0x03, 0x9c, 0xc0, 0xab, 0x01, 0x10, 0xee, + 0x11, 0x12, 0xa4, 0x1c, 0x20, 0x51, 0xc9, 0x67, 0xd9, 0x54, 0x14, 0xbf, + 0x2d, 0x4d, 0x4e, 0x6a, 0x02, 0x7a, 0xfb, 0x33, 0x62, 0xa5, 0x89, 0xff, + 0xec, 0x7a, 0xde, 0x36, 0x69, 0x2a, 0xd0, 0x6b, 0x39, 0x6f, 0x29, 0xb3, + 0xce, 0xc5, 0x49, 0x6e, 0x71, 0x1c, 0x32, 0xca, 0x8a, 0x62, 0xf5, 0xca, + 0x47, 0xce, 0x2c, 0x5c, 0x4d, 0x5b, 0x3a, 0xd4, 0xbb, 0xae, 0x54, 0xf6, + 0x0b, 0x4a, 0xd5, 0x0c, 0xb1, 0x9f, 0x13, 0x67, 0x96, 0x7e, 0xe8, 0x99, + 0xad, 0xae, 0xb1, 0x88, 0x0e, 0xac, 0xd3, 0x3c, 0xe3, 0x71, 0x2e, 0x48, + 0xcb, 0x75, 0x6a, 0x58, 0x7d, 0x4d, 0x61, 0x4c, 0xe9, 0xce, 0xc0, 0xeb, + 0x70, 0xc6, 0xe9, 0xfc, 0x1f, 0xcc, 0x45, 0x5a, 0xaf, 0x71, 0x4d, 0x5a, + 0x34, 0x89, 0xe9, 0x4d, 0x4c, 0x85, 0x73, 0x6b, 0x59, 0x80, 0xea, 0x95, + 0x83, 0x56, 0xf3, 0x6f, 0x47, 0x65, 0x35, 0xf3, 0x2e, 0xdd, 0x47, 0x9d, + 0x15, 0x9a, 0xba, 0x67, 0x55, 0x30, 0xbe, 0x5c, 0x85, 0x97, 0x97, 0xac, + 0xc7, 0xa8, 0xf7, 0xe5, 0x72, 0x1f, 0xb3, 0xb4, 0xb9, 0xe1, 0x7e, 0x8c, + 0xf2, 0xd8, 0x90, 0x57, 0x58, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd7, + 0x0b, 0x70, 0x40, 0x03, 0xfa, 0x63, 0x70, 0x6b, 0xed, 0xd8, 0x12, 0x64, + 0x65, 0x6e, 0x1e, 0x31, 0xc0, 0xfe, 0x0f, 0xed, 0x2d, 0xc1, 0xec, 0x37, + 0x9f, 0xc1, 0x91, 0x99, 0xb8, 0xf4, 0x70, 0x39, 0x2e, 0x86, 0xcc, 0x80, + 0x00, 0x4e, 0x8c, 0x1d, 0x4d, 0x9c, 0x37, 0x7a, 0x9e, 0x8b, 0x75, 0xf3, + 0xdf, 0x7b, 0xe0, 0x74, 0x87, 0xb0, 0xf6, 0xac, 0xc6, 0xe4, 0x8d, 0x4e, + 0xa7, 0x50, 0x53, 0x1c, 0x08, 0x1c, 0x97, 0x91, 0x67, 0xd9, 0x4c, 0xcf, + 0x23, 0x33, 0x51, 0x69, 0x32, 0x52, 0x57, 0x54, 0x57, 0x7f, 0x5d, 0xfd, + 0x29, 0x3d, 0x35, 0xbf, 0x7c, 0xa9, 0xbb, 0x15, 0xcd, 0x7d, 0x5e, 0x4f, + 0x67, 0x32, 0x22, 0xa3, 0x23, 0x9d, 0xe9, 0x55, 0x92, 0xc9, 0x74, 0x44, + 0xb2, 0x35, 0xee, 0x8a, 0x6a, 0x2a, 0x91, 0xe7, 0xa5, 0x94, 0x8c, 0x5d, + 0x34, 0x45, 0x94, 0xc6, 0x17, 0x10, 0x1a, 0x41, 0x84, 0x1e, 0x30, 0x10, + 0x58, 0xc2, 0x42, 0xe1, 0xf0, 0x10, 0x38, 0x63, 0x23, 0x07, 0xcc, 0x08, + 0x40, 0x5e, 0x4c, 0x07, 0xc1, 0x04, 0x0c, 0x38, 0xfe, 0xe3, 0x4e, 0x1c, + 0x53, 0x3f, 0x0c, 0x22, 0x90, 0xb7, 0x4c, 0x0f, 0x80, 0x1b, 0x0c, 0x45, + 0x60, 0x2b, 0xcc, 0x0d, 0xe0, 0x0b, 0x0c, 0x09, 0xd0, 0x00, 0x80, 0x20, + 0x2d, 0x18, 0x1c, 0xc0, 0x55, 0x98, 0x3a, 0xa1, 0x1f, 0x1b, 0x7d, 0xc4, + 0xdc, 0x18, 0xbf, 0x60, 0xe4, 0x18, 0x28, 0x40, 0x48, 0x9c, 0x89, 0x81, + 0xa1, 0x0c, 0x8d, 0x11, 0x99, 0x00, 0x91, 0x91, 0x82, 0x2a, 0x55, 0x0e, + 0x1e, 0x1c, 0x8e, 0x3d, 0x6f, 0x95, 0xe6, 0x16, 0x44, 0x57, 0xf1, 0x99, + 0x05, 0x24, 0x6a, 0x59, 0x79, 0xfe, 0xd4, 0xa6, 0x59, 0x66, 0x65, 0xff, + 0x7f, 0xe7, 0x6b, 0xfd, 0x59, 0x1d, 0xbb, 0x57, 0xa9, 0x3b, 0x37, 0x29, + 0xa1, 0x88, 0xca, 0x64, 0x36, 0x62, 0xf5, 0x71, 0x55, 0x65, 0xda, 0x19, + 0x3e, 0xb0, 0xfb, 0x87, 0xc9, 0xc9, 0x99, 0x5a, 0x92, 0x64, 0x89, 0x94, + 0x1b, 0xe2, 0xba, 0xc4, 0xa3, 0x91, 0x9c, 0xe4, 0x60, 0x68, 0x9d, 0x78, + 0x0f, 0xa2, 0x11, 0x69, 0x56, 0x91, 0x3b, 0x79, 0x83, 0xe8, 0x9c, 0x71, + 0x44, 0x73, 0x91, 0x4b, 0x14, 0x3c, 0xa1, 0x2c, 0xad, 0xf1, 0x51, 0x01, + 0xe8, 0xbf, 0x26, 0x9a, 0x35, 0xf6, 0x36, 0x69, 0x49, 0xaa, 0x74, 0x56, + 0x9c, 0xb4, 0xd4, 0x4a, 0x9f, 0x5c, 0xf7, 0x34, 0x99, 0xb2, 0xc2, 0x2c, + 0x3c, 0x4c, 0xc6, 0x28, 0x80, 0xab, 0x7b, 0x12, 0x01, 0x86, 0x51, 0xd2, + 0x38, 0xbc, 0xae, 0x41, 0xa3, 0x53, 0x82, 0x8e, 0x21, 0x22, 0x15, 0x23, + 0x52, 0xa9, 0xa2, 0x62, 0x3a, 0x38, 0x7d, 0x09, 0xf3, 0x4a, 0x0a, 0xc8, + 0xd8, 0x73, 0x42, 0xab, 0x2d, 0x3c, 0x01, 0x46, 0x91, 0x3c, 0x3e, 0x70, + 0x35, 0x99, 0xae, 0xd2, 0x4c, 0xdf, 0x8c, 0x63, 0xf2, 0xeb, 0x7d, 0xd5, + 0x26, 0x8c, 0x74, 0x20, 0x70, 0x84, 0xb0, 0xe1, 0x30, 0x64, 0x2d, 0x9c, + 0x93, 0xe6, 0x2c, 0xd1, 0x84, 0xaa, 0x94, 0xf6, 0x52, 0x2e, 0x16, 0xa4, + 0x81, 0x51, 0x23, 0xf7, 0xe9, 0xe5, 0x64, 0xaf, 0xc6, 0x6c, 0x6b, 0xbc, + 0xc1, 0x9b, 0xdd, 0xf3, 0x1e, 0x9f, 0x7e, 0xe5, 0xbb, 0xdf, 0xf1, 0x2f, + 0xcd, 0xcd, 0xc6, 0xed, 0xf7, 0xec, 0xdb, 0x4f, 0x76, 0x66, 0xf5, 0xff, + 0xfd, 0xa5, 0x9f, 0x3b, 0x33, 0xc7, 0xd8, 0xbc, 0x56, 0xe3, 0x9e, 0xde, + 0x9a, 0x31, 0xbd, 0xef, 0xea, 0x8b, 0x67, 0xc6, 0x7b, 0xcf, 0xe7, 0x7f, + 0xd3, 0xd1, 0xbe, 0xf0, 0xcf, 0xe3, 0x97, 0xf0, 0xf9, 0x07, 0x72, 0x60, + 0x83, 0xcd, 0x1a, 0x91, 0x21, 0x62, 0xa1, 0x31, 0xc2, 0x0f, 0x4c, 0x88, + 0x49, 0xda, 0x1d, 0x31, 0x05, 0x35, 0x14, 0xcc, 0xb8, 0xe4, 0xe0, 0xb8, + 0xc9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x4b, 0x01, 0xc1, 0x30, 0x47, 0xc4, 0x26, 0x30, 0xc2, 0x3c, + 0xb3, 0x36, 0x53, 0x0d, 0x34, 0x30, 0x70, 0x02, 0xf5, 0x30, 0x25, 0x42, + 0xde, 0x30, 0x5a, 0xc2, 0x9d, 0x30, 0x03, 0xc0, 0xda, 0x30, 0x01, 0x40, + 0x8d, 0x30, 0x22, 0x80, 0x65, 0x30, 0x30, 0x40, 0x23, 0x30, 0x90, 0x01, + 0xa0, 0x37, 0x7b, 0xd7, 0x18, 0x32, 0x26, 0x80, 0x40, 0x30, 0x75, 0x40, + 0x25, 0x3c, 0xa1, 0xa3, 0x69, 0x13, 0x33, 0xa1, 0x83, 0x0e, 0xaa, 0x2c, + 0x8b, 0x30, 0x1c, 0x10, 0x26, 0x1d, 0x94, 0xb8, 0x6c, 0x73, 0x24, 0x3d, + 0x30, 0x20, 0x6a, 0x5c, 0x9d, 0x49, 0x74, 0x95, 0x93, 0xfe, 0x4f, 0xfd, + 0x2c, 0x82, 0x5d, 0x85, 0x24, 0xe5, 0x48, 0xd4, 0xa2, 0x3f, 0x5d, 0xf9, + 0xb3, 0xc8, 0x7f, 0x1c, 0x29, 0x68, 0x25, 0x17, 0x25, 0xfc, 0xa0, 0xaf, + 0xf2, 0x74, 0x18, 0x29, 0x4b, 0xb2, 0x2a, 0x2a, 0x93, 0x48, 0x4f, 0x96, + 0x40, 0x70, 0x9c, 0x4d, 0x37, 0x24, 0xbb, 0x2a, 0x90, 0xb5, 0x19, 0xb4, + 0x81, 0xaa, 0xa8, 0x23, 0x88, 0xd2, 0x64, 0x78, 0x41, 0x1c, 0x83, 0x64, + 0x54, 0x1b, 0xc4, 0xa5, 0x84, 0x05, 0xc8, 0xdb, 0x6c, 0x49, 0x8a, 0x12, + 0x11, 0x90, 0x0f, 0x94, 0xa1, 0x93, 0x52, 0x14, 0xaa, 0xa7, 0x4c, 0xa9, + 0xb2, 0x9d, 0x76, 0x04, 0xe4, 0x48, 0x69, 0x84, 0xe8, 0x8d, 0xf8, 0xaa, + 0x38, 0x32, 0x9b, 0x30, 0xd2, 0x38, 0xac, 0xbb, 0x48, 0x96, 0x5a, 0x7a, + 0x88, 0x7d, 0x73, 0xe5, 0x53, 0x99, 0x19, 0x0c, 0xe4, 0xc3, 0x6b, 0x34, + 0x69, 0x12, 0xdb, 0xad, 0x3c, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd7, + 0xad, 0x6f, 0xbf, 0x83, 0xfb, 0x4b, 0x70, 0x6d, 0x4e, 0x08, 0x10, 0x3c, + 0x65, 0x6e, 0x1e, 0xa1, 0xc0, 0xfe, 0x0f, 0xed, 0x2d, 0xc1, 0xbb, 0x37, + 0x20, 0x05, 0x91, 0xa1, 0xb8, 0x84, 0xbc, 0x45, 0x12, 0x44, 0x41, 0x65, + 0x6a, 0x43, 0x88, 0x04, 0x6f, 0x06, 0xd4, 0x21, 0x2a, 0xa0, 0x90, 0x50, + 0x3a, 0x34, 0x16, 0x07, 0x81, 0x90, 0xa0, 0x53, 0xa1, 0x51, 0x6e, 0xd5, + 0x0a, 0x23, 0x8c, 0x37, 0xf1, 0x61, 0xea, 0x16, 0x52, 0xc4, 0xdd, 0xdd, + 0xf5, 0xfa, 0x60, 0xfa, 0x45, 0xa7, 0xa4, 0xcc, 0xe4, 0x24, 0xa6, 0xf9, + 0xf9, 0x5b, 0x49, 0x78, 0xc5, 0x6e, 0xda, 0x6e, 0xce, 0xab, 0xe5, 0x57, + 0x3f, 0x57, 0x76, 0xb5, 0x2b, 0x56, 0x98, 0xee, 0x88, 0xa5, 0x53, 0xb4, + 0xe3, 0x2a, 0xb2, 0x5c, 0xf2, 0x99, 0x4f, 0x56, 0x3a, 0x64, 0x53, 0x37, + 0x47, 0x2a, 0x29, 0x9d, 0x89, 0x64, 0xbd, 0x94, 0xe4, 0x67, 0x67, 0xd9, + 0x79, 0x4a, 0x62, 0x2a, 0x92, 0xcb, 0xd1, 0x22, 0x42, 0x6e, 0xec, 0x70, + 0xee, 0x61, 0x50, 0xd4, 0x0f, 0x06, 0x95, 0x41, 0x80, 0x52, 0x31, 0xc8, + 0x82, 0xa2, 0x62, 0x62, 0x41, 0x01, 0x3c, 0x38, 0x60, 0xc5, 0x03, 0x3a, + 0x61, 0x11, 0x86, 0xf4, 0x63, 0x76, 0x61, 0x26, 0x7e, 0x17, 0x15, 0x04, + 0x62, 0x09, 0x04, 0x9e, 0x60, 0xd7, 0x80, 0x12, 0x61, 0x49, 0x82, 0x20, + 0x34, 0x0d, 0xf9, 0x80, 0xe4, 0x01, 0x29, 0x81, 0x52, 0x02, 0xb9, 0x81, + 0x44, 0x09, 0x71, 0x83, 0xa2, 0x27, 0x69, 0xa9, 0x61, 0x70, 0x39, 0x8f, + 0xf6, 0x17, 0x49, 0x82, 0xf8, 0x07, 0xf1, 0xd8, 0xc5, 0x9b, 0x63, 0x21, + 0xa2, 0x9c, 0x9a, 0xfa, 0x29, 0xac, 0x01, 0x04, 0x09, 0x88, 0x89, 0x18, + 0x8c, 0x21, 0x47, 0x61, 0x98, 0x6d, 0x1d, 0x06, 0x9e, 0x61, 0x14, 0xcf, + 0xc5, 0xdc, 0x5a, 0x65, 0x6a, 0x35, 0xe7, 0x0a, 0x88, 0x38, 0x33, 0x32, + 0xdc, 0xa5, 0x52, 0x88, 0x23, 0x92, 0xab, 0x96, 0x6c, 0x53, 0xf6, 0xd5, + 0x25, 0xca, 0x59, 0xaa, 0xbf, 0xa9, 0x6c, 0xac, 0xd2, 0x1e, 0x93, 0x78, + 0x7a, 0x94, 0x6e, 0x99, 0x0d, 0x2c, 0xdd, 0x28, 0x81, 0x87, 0xb6, 0xe2, + 0xc7, 0xe4, 0x4f, 0xb0, 0x9a, 0xe6, 0x83, 0xe5, 0x46, 0xe2, 0xa5, 0x28, + 0xd3, 0x6c, 0x22, 0x3e, 0xdf, 0x32, 0x4c, 0xbc, 0x09, 0x08, 0xc8, 0xd6, + 0x61, 0x56, 0x10, 0x2e, 0x4a, 0x7c, 0xf4, 0xa8, 0x57, 0x6c, 0xd2, 0xf3, + 0xb2, 0x33, 0x88, 0xf1, 0xb6, 0x87, 0x58, 0x34, 0x4c, 0x4c, 0x71, 0x64, + 0xee, 0x0c, 0x90, 0x96, 0x40, 0x4b, 0x34, 0x47, 0xd6, 0x2b, 0x36, 0x88, + 0xd0, 0x10, 0xbd, 0x53, 0x9a, 0x51, 0x7a, 0x43, 0x01, 0xb5, 0xad, 0xd0, + 0x55, 0x95, 0xed, 0x42, 0xc8, 0x11, 0x25, 0x14, 0x2d, 0x42, 0x9e, 0x8e, + 0x27, 0x9a, 0x46, 0xa3, 0xc4, 0xa8, 0xc4, 0x87, 0x66, 0x8e, 0x24, 0xb4, + 0x54, 0xb1, 0x30, 0xad, 0x00, 0x39, 0x73, 0x44, 0x61, 0x12, 0xe0, 0x08, + 0x42, 0xc0, 0xfc, 0xde, 0x7b, 0x35, 0xab, 0x42, 0xfb, 0x52, 0xe6, 0xee, + 0x58, 0xbf, 0xaf, 0x43, 0x37, 0x26, 0xe3, 0x9b, 0x22, 0xb1, 0xb3, 0xd9, + 0x48, 0x13, 0x19, 0x3c, 0x1c, 0x33, 0x8b, 0xc7, 0xa3, 0x4d, 0x78, 0x8a, + 0x5b, 0x3a, 0xcb, 0xc7, 0xff, 0xaf, 0xf4, 0x74, 0x43, 0x4b, 0x36, 0x8f, + 0x17, 0xdb, 0xbb, 0xc5, 0x3f, 0x29, 0xfc, 0xf2, 0xeb, 0xd4, 0x59, 0xdc, + 0x42, 0x54, 0xc7, 0x5c, 0x57, 0xda, 0x3b, 0x75, 0x0b, 0xef, 0x4b, 0xb5, + 0xbd, 0xea, 0xaf, 0xbd, 0x4f, 0x1c, 0x77, 0x3d, 0x71, 0x0f, 0xf0, 0xdf, + 0xd4, 0x75, 0x55, 0x6d, 0xca, 0x26, 0xb4, 0xd1, 0x17, 0xd9, 0x71, 0xe8, + 0xe8, 0xa2, 0x08, 0xf6, 0x30, 0x33, 0x6e, 0x23, 0xa2, 0x8e, 0x20, 0x81, + 0x41, 0x78, 0xa1, 0x3a, 0x62, 0x0a, 0x6a, 0x29, 0x99, 0x71, 0xc9, 0xc1, + 0x71, 0x92, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x42, 0x00, 0xcb, 0x30, 0x79, 0xc1, 0x1a, 0x31, 0xad, 0x11, + 0xcb, 0x3e, 0xf1, 0x03, 0xb6, 0x30, 0xd7, 0x81, 0x6d, 0x30, 0x45, 0xc0, + 0x8e, 0x30, 0xaa, 0x00, 0xcc, 0x30, 0x0a, 0x80, 0x3d, 0x30, 0x37, 0x40, + 0x67, 0x30, 0x35, 0x01, 0x64, 0x30, 0x64, 0x44, 0x79, 0x30, 0xb7, 0xc6, + 0x5a, 0x32, 0x9f, 0xad, 0xd4, 0x30, 0x45, 0x01, 0xc9, 0x30, 0xde, 0xc1, + 0x0f, 0x3f, 0xe6, 0xd8, 0xc4, 0x80, 0x93, 0x52, 0x1f, 0x0c, 0xb8, 0x0f, + 0x30, 0x40, 0x70, 0xca, 0x42, 0xe2, 0x40, 0x21, 0x88, 0xc2, 0x66, 0x13, + 0x0b, 0x98, 0x54, 0x2a, 0x90, 0x63, 0x00, 0x43, 0x12, 0x83, 0x4c, 0x7e, + 0x15, 0x30, 0x30, 0x98, 0xc5, 0x41, 0x82, 0x50, 0xa9, 0x88, 0xc3, 0x64, + 0x40, 0xf4, 0x8c, 0x30, 0x20, 0x00, 0xbf, 0x69, 0x90, 0x5d, 0xc6, 0xd5, + 0xdb, 0x60, 0xf7, 0xd5, 0xb1, 0xd8, 0x8f, 0x2e, 0xc6, 0x49, 0x5d, 0xad, + 0xb3, 0xb9, 0xe7, 0x72, 0x1c, 0x9a, 0x86, 0x29, 0x29, 0xdf, 0xf8, 0xdf, + 0xc3, 0x92, 0x89, 0x81, 0x43, 0x93, 0x0b, 0xae, 0xa1, 0x00, 0xb5, 0x20, + 0x62, 0xa7, 0x67, 0x09, 0x0c, 0xb0, 0xa2, 0x05, 0xde, 0x55, 0x32, 0x48, + 0xb4, 0xa4, 0x91, 0x97, 0x15, 0x96, 0x62, 0x64, 0x2e, 0x50, 0xf1, 0x3e, + 0xb5, 0x05, 0x1c, 0x41, 0x25, 0xd3, 0xd4, 0xd4, 0x54, 0xc1, 0x02, 0xef, + 0x95, 0xb0, 0x51, 0x32, 0x44, 0xaa, 0x18, 0xaa, 0x06, 0x2b, 0xf4, 0x6a, + 0x9b, 0x6a, 0x0e, 0xc4, 0x92, 0x5d, 0x88, 0xcd, 0x01, 0x96, 0x99, 0x32, + 0xb4, 0x26, 0xd1, 0x0a, 0x05, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xc8, + 0x3b, 0x70, 0x40, 0x83, 0xfc, 0x4b, 0x70, 0x67, 0xae, 0x08, 0x10, 0x60, + 0x65, 0x6e, 0x1b, 0x70, 0xc5, 0x14, 0x6f, 0x7d, 0xeb, 0x81, 0x2a, 0x97, + 0xa2, 0x0c, 0xd0, 0x99, 0x30, 0xea, 0x19, 0x53, 0x52, 0x0c, 0xcd, 0x99, + 0x24, 0x8a, 0x69, 0xb6, 0xc9, 0xdb, 0xb4, 0x92, 0x3b, 0x45, 0xa3, 0x78, + 0xdc, 0xe4, 0xb5, 0x5a, 0xb8, 0x92, 0x19, 0x76, 0xe5, 0x25, 0x57, 0xa3, + 0x24, 0x04, 0xd2, 0x8a, 0x17, 0xc5, 0x86, 0xd9, 0xc0, 0xa0, 0x99, 0xc4, + 0xa1, 0xa6, 0xad, 0x94, 0xa7, 0x71, 0xab, 0xd4, 0xb4, 0x96, 0x3b, 0xcc, + 0x2c, 0xde, 0x49, 0xe1, 0xff, 0x63, 0x32, 0x07, 0xd6, 0xc8, 0xed, 0xbf, + 0xde, 0xd6, 0xec, 0xcd, 0xa9, 0xdb, 0x54, 0xa4, 0x5b, 0xcb, 0xee, 0xd7, + 0x62, 0xb9, 0x68, 0xab, 0x6c, 0xf2, 0x35, 0x48, 0xc8, 0xcf, 0xba, 0xb5, + 0x19, 0xac, 0x3d, 0x8b, 0x2c, 0xf3, 0x76, 0x74, 0x53, 0xb5, 0x1d, 0x6b, + 0xaa, 0xa4, 0xbf, 0xaf, 0x4b, 0x2b, 0x36, 0x46, 0x95, 0x24, 0xa2, 0xbc, + 0xeb, 0x52, 0xb3, 0xe6, 0x65, 0x5a, 0x9d, 0x2b, 0x7b, 0xca, 0xf7, 0x12, + 0x11, 0x39, 0x14, 0x5c, 0x85, 0xc5, 0x02, 0x9c, 0x61, 0x2e, 0xc2, 0x05, + 0x10, 0x14, 0x28, 0xa8, 0xa4, 0x44, 0x00, 0x10, 0x2e, 0x58, 0xc8, 0x00, + 0x60, 0x02, 0xc6, 0x01, 0xc0, 0xc2, 0xc8, 0x2c, 0x8f, 0x79, 0x9e, 0xfc, + 0xc8, 0x64, 0x6e, 0x0c, 0x10, 0xc0, 0x10, 0xc3, 0x10, 0x2f, 0x4c, 0x0d, + 0x80, 0x44, 0xc0, 0x80, 0x05, 0x8c, 0x0f, 0x02, 0xd4, 0xc3, 0x70, 0x39, + 0x4c, 0x6e, 0x00, 0xf4, 0xd1, 0x4d, 0x5c, 0x7c, 0xc2, 0xdb, 0x06, 0xa8, + 0xc1, 0x63, 0x03, 0xb0, 0xc0, 0x39, 0x01, 0x04, 0x30, 0x05, 0xd3, 0x00, + 0x60, 0x02, 0xf1, 0xc0, 0x0d, 0x0b, 0x20, 0x81, 0x10, 0x60, 0x04, 0xa6, + 0x01, 0x78, 0x03, 0x2d, 0xa2, 0x99, 0x27, 0xd3, 0xb4, 0x0c, 0x00, 0x4c, + 0x0c, 0x04, 0x58, 0x28, 0x01, 0xa1, 0x00, 0x02, 0x26, 0x00, 0xa0, 0x01, + 0xa9, 0x3c, 0x02, 0x00, 0x09, 0x1c, 0x9a, 0xa9, 0x30, 0x00, 0x42, 0xa0, + 0x20, 0x09, 0x00, 0x72, 0xb0, 0xac, 0x15, 0xd6, 0x64, 0xcc, 0x08, 0x4c, + 0x41, 0x4c, 0x79, 0x89, 0xa8, 0x98, 0x9c, 0x26, 0x50, 0xb1, 0x3e, 0x19, + 0x62, 0x64, 0x83, 0x25, 0x21, 0xa9, 0x88, 0x7b, 0x12, 0x65, 0x51, 0x7d, + 0x34, 0xa1, 0xa7, 0x55, 0xae, 0x0a, 0xe4, 0x3a, 0x74, 0xea, 0x89, 0xcd, + 0xeb, 0x44, 0x47, 0xd1, 0x9c, 0x9e, 0xc6, 0x76, 0xf6, 0x2e, 0x2c, 0xc5, + 0x68, 0x31, 0xac, 0xf5, 0x87, 0x50, 0xa3, 0x6c, 0x24, 0x0c, 0x8c, 0x22, + 0x2e, 0x1c, 0x00, 0x96, 0x0a, 0xc0, 0xa0, 0xa9, 0x1c, 0x94, 0x54, 0xea, + 0x18, 0xc6, 0xad, 0x6b, 0x34, 0xad, 0x28, 0xde, 0x66, 0xd2, 0x6f, 0xb7, + 0x45, 0xec, 0xaa, 0xab, 0xce, 0x86, 0x5e, 0x68, 0x18, 0x01, 0x56, 0xa0, + 0xee, 0xd1, 0xa4, 0x03, 0xda, 0x34, 0x5d, 0x46, 0x75, 0x27, 0x3d, 0xf5, + 0xa3, 0xff, 0xfb, 0x37, 0xb6, 0xcc, 0x7b, 0xbd, 0xe7, 0x6e, 0xa6, 0xd6, + 0x86, 0xf7, 0x64, 0x0c, 0xb5, 0x87, 0x30, 0xfb, 0x23, 0x88, 0x5e, 0xa3, + 0x2e, 0xb9, 0x3e, 0xb7, 0xe3, 0xfd, 0xc8, 0x6e, 0xf8, 0xca, 0xc1, 0x8a, + 0xb5, 0x64, 0x5b, 0x5a, 0x2a, 0xfd, 0x56, 0xa1, 0x65, 0x51, 0xa1, 0x7e, + 0xcf, 0xfd, 0x0c, 0xab, 0xd6, 0x96, 0x38, 0x58, 0x32, 0xb3, 0xa1, 0x66, + 0x9b, 0x11, 0x26, 0x20, 0xa6, 0xa2, 0x99, 0x97, 0x1c, 0x9c, 0x17, 0x19, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x10, 0x80, 0xd3, 0x30, 0x03, 0xc2, 0x26, 0x30, 0xe0, 0xc8, + 0x3f, 0x3f, 0x1c, 0x95, 0x28, 0x30, 0xc2, 0x42, 0xbd, 0x30, 0x44, 0x01, + 0x4f, 0x30, 0xc2, 0x41, 0x44, 0x30, 0x15, 0x80, 0x5b, 0x30, 0x26, 0xc0, + 0xd6, 0x30, 0x5b, 0xc0, 0xe6, 0x30, 0x7b, 0x82, 0x8d, 0x31, 0x1c, 0x47, + 0xd6, 0x3e, 0xe6, 0xb4, 0xe6, 0x32, 0xfa, 0xc1, 0x49, 0x30, 0x9d, 0x00, + 0xbd, 0x3a, 0x1a, 0x00, 0xd5, 0x01, 0xf3, 0x2d, 0x81, 0x8d, 0xa7, 0xad, + 0x0e, 0x42, 0x02, 0x81, 0xa6, 0x0d, 0x6c, 0x9b, 0x3c, 0x55, 0x07, 0x08, + 0x41, 0x2e, 0x61, 0x83, 0x00, 0x66, 0x15, 0x42, 0x9c, 0xe4, 0xe4, 0x89, + 0x70, 0xc2, 0xc0, 0x44, 0xa1, 0x46, 0x11, 0x03, 0x2e, 0xd1, 0x10, 0x0c, + 0xc0, 0xe4, 0x51, 0xe1, 0xab, 0xbc, 0xc1, 0x5d, 0x68, 0x75, 0x45, 0x5c, + 0xdd, 0x48, 0xa2, 0x94, 0xcc, 0xca, 0x17, 0x76, 0x53, 0x53, 0xfe, 0x29, + 0x43, 0x29, 0x7d, 0x65, 0xb3, 0x77, 0x31, 0xd4, 0x51, 0x7d, 0xc5, 0x08, + 0x79, 0xa4, 0x3c, 0xcd, 0x27, 0x2c, 0x71, 0x14, 0xe5, 0x0a, 0x99, 0xa4, + 0x28, 0x62, 0xcc, 0x7b, 0x4b, 0x43, 0xeb, 0xd3, 0x9d, 0xd2, 0xad, 0x64, + 0x1d, 0x14, 0xe1, 0x2e, 0x44, 0x9a, 0x6c, 0x3e, 0x3e, 0x2e, 0x95, 0x2d, + 0xb2, 0x8e, 0x20, 0xf0, 0x33, 0x0d, 0x7b, 0x2b, 0x51, 0x48, 0x17, 0x60, + 0xb2, 0xec, 0xca, 0x49, 0xb6, 0xed, 0x8c, 0xa7, 0x24, 0x92, 0x61, 0x75, + 0x5d, 0x0f, 0x0f, 0x4e, 0x2c, 0x59, 0x96, 0x26, 0x63, 0xb4, 0x56, 0x79, + 0x7a, 0x92, 0xf2, 0x8b, 0x58, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd7, + 0xb6, 0x70, 0x40, 0x83, 0xfc, 0x4b, 0x70, 0x6b, 0x0d, 0xf8, 0x12, 0x44, + 0x65, 0x6e, 0x1b, 0x31, 0xc1, 0x08, 0x2f, 0xec, 0xcd, 0xd1, 0xbe, 0x38, + 0x20, 0x45, 0x91, 0xa1, 0xb8, 0xc7, 0x9f, 0x56, 0x88, 0x7e, 0x2d, 0x71, + 0xf0, 0x87, 0x59, 0x95, 0x31, 0x93, 0xc8, 0xd1, 0xaa, 0xd2, 0x11, 0x0c, + 0x00, 0x2a, 0x43, 0xa4, 0x05, 0x01, 0x90, 0x3c, 0x24, 0x00, 0x01, 0x9c, + 0x8b, 0xdd, 0x22, 0xe2, 0x94, 0x5c, 0xa4, 0xe7, 0x56, 0xdb, 0x79, 0x23, + 0x6c, 0xc7, 0xd8, 0x84, 0x87, 0xd0, 0x9e, 0x53, 0x33, 0xa8, 0x1c, 0xf2, + 0x30, 0xb0, 0x3d, 0x7b, 0x99, 0x37, 0x82, 0x34, 0xa7, 0x91, 0xba, 0xd5, + 0xda, 0xe7, 0x97, 0x39, 0x57, 0xa7, 0xb9, 0xe4, 0x5a, 0x0e, 0xdc, 0xc5, + 0xda, 0x7b, 0xba, 0x19, 0x55, 0x2e, 0xf5, 0x7b, 0x19, 0x5c, 0x9a, 0xd2, + 0xea, 0xaa, 0xc6, 0x21, 0x64, 0x74, 0x36, 0xef, 0x5c, 0x84, 0xcb, 0x2a, + 0x29, 0xbb, 0x5d, 0x2d, 0xcf, 0x49, 0xad, 0x38, 0x80, 0xf3, 0x0b, 0x09, + 0x23, 0x0f, 0x38, 0xc0, 0x1c, 0x4c, 0xc2, 0xa0, 0x71, 0x30, 0xb8, 0x4c, + 0x68, 0x2b, 0xa1, 0xc3, 0x0a, 0x28, 0x34, 0x86, 0x04, 0xa0, 0x08, 0x66, + 0x0b, 0x28, 0x0a, 0x26, 0x2a, 0x91, 0x34, 0x87, 0xb7, 0x70, 0x38, 0x26, + 0x1c, 0x90, 0x02, 0x46, 0x09, 0x68, 0x2e, 0x86, 0x0d, 0x50, 0x10, 0x66, + 0x02, 0xc8, 0x08, 0x42, 0xc0, 0x74, 0x98, 0x21, 0x80, 0x27, 0x98, 0x21, + 0xe0, 0x86, 0x18, 0x55, 0xc2, 0x80, 0x9e, 0x40, 0xa7, 0xd5, 0x98, 0x8b, + 0xc0, 0xfd, 0x98, 0x36, 0xe0, 0x42, 0x1e, 0xc1, 0x09, 0xb8, 0x82, 0x99, + 0xd0, 0x41, 0xca, 0x57, 0x9b, 0x48, 0xc8, 0x58, 0x00, 0xc1, 0xf3, 0xc3, + 0xa2, 0xd7, 0xba, 0xf9, 0x2d, 0xe0, 0x38, 0x84, 0x10, 0xe2, 0x75, 0xc9, + 0x45, 0xad, 0x65, 0xca, 0x6f, 0x1a, 0x88, 0x91, 0x08, 0x3e, 0x53, 0x46, + 0x14, 0x4e, 0x85, 0xf3, 0x8c, 0xba, 0xd5, 0xb6, 0x36, 0xe1, 0xc6, 0xe3, + 0xb4, 0xd0, 0xb5, 0x3a, 0x6a, 0x53, 0xf5, 0x29, 0x2b, 0x65, 0x26, 0xca, + 0xcf, 0x6f, 0x5c, 0xbd, 0xb6, 0x17, 0x13, 0x8b, 0x62, 0x36, 0xa7, 0xdb, + 0xc8, 0xeb, 0x20, 0xe9, 0xb7, 0x29, 0x0b, 0xfb, 0x76, 0x56, 0x5e, 0x49, + 0x0e, 0xc4, 0x17, 0xbc, 0x93, 0x7d, 0x8c, 0x99, 0x6c, 0xc6, 0x6f, 0x48, + 0x44, 0xa6, 0xab, 0xdd, 0x66, 0xaa, 0xcf, 0xb2, 0x5e, 0xc1, 0x4f, 0x13, + 0x45, 0xa9, 0xb3, 0x11, 0xb4, 0x95, 0x73, 0x3f, 0x36, 0xdd, 0xfd, 0xe2, + 0x53, 0x9b, 0x8f, 0xe0, 0xa4, 0x55, 0x47, 0x3b, 0xba, 0x2f, 0x9b, 0xb1, + 0xe5, 0x9a, 0xb7, 0xd7, 0xc7, 0xaf, 0x97, 0x8f, 0xab, 0xda, 0x43, 0x3a, + 0x12, 0xf9, 0x48, 0xa9, 0x13, 0xb8, 0x91, 0xe4, 0xc8, 0x0b, 0x12, 0x05, + 0x9e, 0xa4, 0x89, 0xcd, 0xef, 0x55, 0xf3, 0xa7, 0xfb, 0xd9, 0xdc, 0x53, + 0x10, 0x08, 0xcb, 0x2b, 0x91, 0x5d, 0xb4, 0x24, 0xbd, 0xf8, 0x99, 0x57, + 0x46, 0xb4, 0xa3, 0xdb, 0x9b, 0xf5, 0x3b, 0x17, 0xb9, 0xb8, 0xb9, 0x7a, + 0xd2, 0x12, 0x79, 0x9f, 0x9e, 0x23, 0xa9, 0x8f, 0x45, 0xb8, 0x5e, 0x3b, + 0xeb, 0xdb, 0xbb, 0xf8, 0xee, 0x6a, 0xa5, 0xeb, 0xa7, 0xae, 0xba, 0x7b, + 0xfb, 0x95, 0x7b, 0x57, 0x8b, 0x99, 0xaf, 0xf4, 0x88, 0x5e, 0xfa, 0xdf, + 0xe3, 0xeb, 0xef, 0x49, 0xb8, 0xe2, 0x53, 0x9b, 0xd3, 0x59, 0xd2, 0x5e, + 0x1d, 0x56, 0x14, 0xe9, 0x55, 0x26, 0x86, 0x58, 0xb8, 0xf6, 0x3c, 0x72, + 0x8e, 0xc4, 0xd8, 0x88, 0x20, 0x3c, 0x59, 0xa3, 0x90, 0x16, 0x1e, 0x31, + 0x31, 0x05, 0x35, 0x14, 0xcc, 0xb8, 0xe4, 0xe0, 0xb8, 0xc9, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x0e, 0x80, 0x90, 0x30, 0x55, 0xc2, 0x25, 0x31, 0x5c, 0xa0, + 0x1a, 0x3d, 0x01, 0x87, 0x89, 0x30, 0xc6, 0x01, 0x7e, 0x30, 0x4d, 0x42, + 0x2b, 0x30, 0x2c, 0x40, 0x50, 0x30, 0x19, 0xc0, 0x9f, 0x18, 0x01, 0xb8, + 0xc0, 0x10, 0x00, 0xb8, 0xc1, 0x58, 0x04, 0x18, 0xc2, 0xff, 0x01, 0x10, + 0xfb, 0xae, 0x64, 0xfc, 0xcc, 0x15, 0x05, 0xf0, 0xc1, 0xbe, 0x01, 0x5c, + 0x05, 0xe6, 0x34, 0x80, 0x10, 0xc6, 0xa4, 0xf3, 0x20, 0x62, 0x0c, 0x76, + 0x32, 0x14, 0x02, 0x98, 0x06, 0x1e, 0x08, 0x0e, 0x32, 0x75, 0xd8, 0x92, + 0x6a, 0x5e, 0x62, 0x62, 0x81, 0xe5, 0x05, 0x24, 0xc1, 0x46, 0x3e, 0x2c, + 0x00, 0x85, 0x41, 0x06, 0x01, 0x04, 0xf5, 0x27, 0x0c, 0x1c, 0x7c, 0x5d, + 0x51, 0xd6, 0x53, 0x4f, 0xd5, 0x15, 0x51, 0x99, 0x7d, 0xd9, 0x1e, 0x70, + 0x13, 0xdd, 0xbc, 0x64, 0x57, 0x28, 0x39, 0x49, 0xf2, 0x9c, 0x71, 0xfb, + 0x54, 0x6e, 0xd1, 0x64, 0x90, 0xb4, 0xcd, 0x20, 0xb8, 0x2c, 0xde, 0x5c, + 0x86, 0x83, 0x30, 0xf2, 0x67, 0xbc, 0xad, 0xdc, 0xb0, 0x33, 0xec, 0x9e, + 0x07, 0x2a, 0x8b, 0xc7, 0x36, 0x88, 0xed, 0xdc, 0xa3, 0x70, 0xec, 0xd3, + 0x0c, 0x8a, 0x72, 0x79, 0x9a, 0xdb, 0x5a, 0x42, 0xf7, 0xa3, 0x57, 0x71, + 0x5b, 0xcc, 0x66, 0x7c, 0x66, 0xaf, 0xad, 0xb7, 0x44, 0xbf, 0x86, 0x6b, + 0xbe, 0xe6, 0x6c, 0x7a, 0xa3, 0x66, 0xe4, 0xcd, 0x7b, 0x3b, 0x9a, 0xa9, + 0x4e, 0x1e, 0xd9, 0xee, 0xf0, 0xb6, 0x7e, 0x99, 0x77, 0x78, 0x86, 0x9e, + 0x5c, 0x5b, 0x65, 0xf2, 0xe3, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xc6, + 0xff, 0x6f, 0xc1, 0x83, 0xfc, 0x33, 0x70, 0x6b, 0x2d, 0xf8, 0x10, 0x60, + 0x65, 0x6e, 0x1d, 0xcd, 0xc1, 0x04, 0x0f, 0xf1, 0x2d, 0xc1, 0xb8, 0x36, + 0x20, 0x8d, 0x83, 0x15, 0xb8, 0xf0, 0xf0, 0x0a, 0x10, 0x7e, 0x4c, 0x6a, + 0x8a, 0xa4, 0x9a, 0xdd, 0x27, 0x69, 0xeb, 0xdb, 0xbb, 0x52, 0xa6, 0xb2, + 0x05, 0x39, 0x78, 0x97, 0x37, 0xe2, 0x99, 0x3e, 0xd9, 0x1f, 0x78, 0x79, + 0xfe, 0x85, 0xda, 0xce, 0x86, 0x5c, 0xcc, 0x88, 0x73, 0x33, 0x3d, 0x8a, + 0xad, 0x4a, 0x5b, 0x39, 0x5a, 0xab, 0x4a, 0xd0, 0xe7, 0x66, 0x46, 0x76, + 0x65, 0xad, 0x75, 0xd4, 0xa7, 0xd1, 0x9b, 0xb0, 0xe9, 0xd5, 0x94, 0xfd, + 0x8d, 0xba, 0x9c, 0x84, 0x31, 0x29, 0x5b, 0xb2, 0xa5, 0xd6, 0xee, 0x4b, + 0x2a, 0xca, 0x8b, 0x7a, 0x5f, 0x42, 0xbc, 0xf2, 0xf4, 0x42, 0xa2, 0x32, + 0x0c, 0x16, 0xba, 0x89, 0x0b, 0x8a, 0x90, 0x51, 0x4c, 0x28, 0x22, 0x41, + 0x60, 0xb4, 0x40, 0xf8, 0xf7, 0x61, 0x86, 0x12, 0x30, 0x22, 0xc1, 0x32, + 0x30, 0x1d, 0xc3, 0x4b, 0x30, 0xcb, 0x31, 0x30, 0x38, 0x64, 0x8a, 0xa5, + 0x30, 0x6b, 0x02, 0x62, 0x30, 0x15, 0xc0, 0xe6, 0x30, 0x29, 0x80, 0xf8, + 0x04, 0x00, 0x58, 0x60, 0x10, 0x00, 0x92, 0x28, 0x00, 0x51, 0x83, 0xc6, + 0x04, 0xf9, 0x85, 0x3c, 0x40, 0x71, 0xfb, 0xf7, 0xde, 0xb1, 0x9a, 0x9c, + 0x1e, 0x51, 0x84, 0xfe, 0x07, 0x79, 0xc4, 0x90, 0x86, 0x95, 0x1e, 0x99, + 0x70, 0xa0, 0x6a, 0xb5, 0x31, 0xa4, 0x01, 0xe8, 0xb8, 0x60, 0x8a, 0x59, + 0xa0, 0x04, 0x12, 0x65, 0x6c, 0x12, 0x23, 0x86, 0x18, 0x8c, 0x26, 0xf4, + 0x21, 0x56, 0x98, 0x2c, 0x0c, 0xbe, 0x4a, 0x01, 0x70, 0xec, 0x48, 0x12, + 0x0e, 0x76, 0x5e, 0x43, 0x28, 0x88, 0x47, 0x8a, 0x0d, 0xf5, 0x78, 0x55, + 0xe5, 0x28, 0x45, 0xba, 0xf2, 0xb8, 0x02, 0x95, 0xb2, 0x29, 0xcd, 0xea, + 0x1e, 0x54, 0xca, 0x8f, 0x1c, 0x22, 0xd4, 0xb7, 0xec, 0x57, 0x90, 0x2d, + 0x5d, 0xe4, 0xcf, 0x2f, 0x26, 0xf4, 0xff, 0x41, 0x2c, 0x57, 0x58, 0xa8, + 0xa0, 0x66, 0x19, 0x12, 0x99, 0x6b, 0xbd, 0x0e, 0xb3, 0x5c, 0x91, 0xba, + 0xc6, 0x63, 0x09, 0x24, 0xba, 0xaf, 0x8c, 0x66, 0x93, 0x31, 0x7d, 0xfa, + 0x8a, 0xab, 0x14, 0x61, 0xf3, 0x53, 0x29, 0x85, 0xd0, 0x25, 0x9b, 0x8b, + 0xa0, 0x65, 0xbd, 0x55, 0x4c, 0x85, 0xbe, 0x19, 0x09, 0x2a, 0xf5, 0xad, + 0x16, 0x3a, 0x37, 0x49, 0x75, 0x25, 0x0c, 0xd9, 0x52, 0xab, 0x62, 0x4f, + 0x59, 0xea, 0x49, 0x2c, 0x4f, 0x6a, 0x32, 0xb9, 0xe5, 0x1f, 0x52, 0x2f, + 0x8b, 0xa6, 0x92, 0x9e, 0xa3, 0x1e, 0xf6, 0xd2, 0x6e, 0xcb, 0xaa, 0xba, + 0x89, 0xd0, 0x6c, 0xeb, 0xd2, 0x92, 0x60, 0x38, 0xc8, 0x00, 0x1d, 0xa1, + 0x09, 0xc6, 0x86, 0xb5, 0xfc, 0x2b, 0x5e, 0xb5, 0x7a, 0xfd, 0x7e, 0x75, + 0xf3, 0x33, 0xde, 0x46, 0xbe, 0x4e, 0x67, 0xff, 0xbb, 0xec, 0xe3, 0xed, + 0xb6, 0x62, 0x24, 0x51, 0x0a, 0x07, 0x9d, 0xc3, 0xcf, 0xc2, 0x8f, 0x22, + 0x14, 0x4a, 0x10, 0x13, 0xcc, 0x61, 0x72, 0x07, 0x0c, 0x8a, 0x2c, 0x24, + 0x73, 0xb0, 0xa3, 0x10, 0x65, 0x77, 0x4f, 0x66, 0x31, 0x37, 0x39, 0x3a, + 0x55, 0x15, 0x79, 0x9f, 0x4a, 0x53, 0x42, 0x7b, 0xb5, 0x39, 0x19, 0x7b, + 0x32, 0xd3, 0x42, 0xaa, 0x68, 0x72, 0xea, 0xb4, 0x94, 0x97, 0x90, 0x87, + 0x57, 0xee, 0xfd, 0x75, 0x44, 0xba, 0x2a, 0xb3, 0xa2, 0xea, 0xbb, 0x0a, + 0xa0, 0x08, 0x51, 0x54, 0x18, 0x20, 0x1d, 0x41, 0xe9, 0x88, 0x29, 0xa8, + 0xa6, 0x65, 0xc7, 0x27, 0x05, 0xc6, 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x0d, 0x00, 0x03, 0x02, 0x34, 0x0c, 0x83, 0x01, 0xa8, 0x1f, 0x33, + 0x04, 0x75, 0xe4, 0x03, 0x1d, 0x9c, 0x62, 0x33, 0x02, 0xc4, 0x14, 0xc3, + 0x00, 0x08, 0x12, 0x10, 0x80, 0x18, 0x4c, 0x03, 0x70, 0x16, 0xcc, 0x04, + 0x00, 0x07, 0x8c, 0x03, 0xd0, 0x0d, 0xcc, 0x0a, 0xa0, 0x4b, 0x0c, 0x18, + 0xf0, 0xdf, 0xcd, 0xae, 0x6c, 0x78, 0x4c, 0x42, 0xd0, 0xda, 0xcc, 0x0f, + 0xe0, 0x35, 0x0d, 0x1a, 0x75, 0x32, 0x51, 0x10, 0xc7, 0x21, 0xd3, 0x13, + 0xc8, 0xc2, 0x07, 0x28, 0x94, 0x38, 0xb3, 0x12, 0x8e, 0x30, 0x5a, 0xef, + 0xaa, 0x61, 0x18, 0x2c, 0x30, 0x73, 0x70, 0x98, 0xd0, 0xa9, 0xb5, 0x53, + 0x89, 0x6c, 0xbc, 0x1c, 0x01, 0x9d, 0x7a, 0xcc, 0x18, 0x63, 0x08, 0x03, + 0xcb, 0x1e, 0x3f, 0xc9, 0x17, 0x1b, 0x15, 0xfa, 0xf0, 0x99, 0xf7, 0x81, + 0xcf, 0xbf, 0x5a, 0x5b, 0x53, 0x74, 0xfb, 0xb9, 0x00, 0xe7, 0xf7, 0x7c, + 0xa0, 0x38, 0x89, 0x9d, 0xe5, 0x16, 0x39, 0x5e, 0x54, 0x3b, 0x08, 0x31, + 0x5e, 0xeb, 0x20, 0xb1, 0x09, 0x38, 0x41, 0x6d, 0x78, 0xf5, 0x2a, 0xd1, + 0xd5, 0x95, 0x0f, 0x33, 0xcc, 0xa8, 0x87, 0x74, 0x39, 0x55, 0xde, 0xed, + 0x65, 0xa5, 0x9a, 0x96, 0x7b, 0xa2, 0x3a, 0x1a, 0x4a, 0xcf, 0x67, 0x2d, + 0x16, 0x4d, 0x12, 0xa4, 0x76, 0x54, 0xd1, 0x1d, 0x48, 0x74, 0x59, 0x9a, + 0x86, 0xf5, 0x55, 0x39, 0x72, 0x10, 0x38, 0x20, 0x71, 0xc2, 0x00, 0x86, + 0x3c, 0x64, 0x5c, 0xa8, 0x34, 0x69, 0x95, 0x1b, 0x99, 0x65, 0xdf, 0xcb, + 0x54, 0x5b, 0xa9, 0xda, 0xda, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xf6, + 0x85, 0x70, 0x43, 0x13, 0xfc, 0x2b, 0x70, 0x69, 0x0d, 0xe8, 0x10, 0x64, + 0x28, 0x6e, 0x17, 0xe1, 0xbf, 0x10, 0x4f, 0xec, 0xad, 0xc2, 0x07, 0xb8, + 0x1f, 0xc1, 0x83, 0x21, 0xb8, 0xca, 0xa5, 0x76, 0x6d, 0x08, 0x14, 0x46, + 0x82, 0x3a, 0x42, 0x60, 0x33, 0x19, 0x10, 0x54, 0xea, 0x26, 0x72, 0x9c, + 0xaa, 0x44, 0x71, 0xe5, 0x12, 0x23, 0x88, 0x99, 0xbf, 0xef, 0x8f, 0x6f, + 0xf5, 0xaf, 0x9f, 0xeb, 0xbe, 0xf8, 0xd3, 0xe2, 0x2a, 0x92, 0x56, 0xea, + 0x56, 0xbf, 0xd7, 0x9d, 0x2a, 0x6a, 0x92, 0xab, 0xd9, 0x21, 0x2b, 0xd7, + 0x4a, 0x4f, 0x8f, 0x88, 0xb9, 0xaa, 0xda, 0x3e, 0x74, 0xe2, 0xab, 0xe2, + 0x53, 0xae, 0x56, 0x91, 0x62, 0xa2, 0xa1, 0xda, 0x9e, 0xad, 0x62, 0x63, + 0x8a, 0x22, 0xca, 0x21, 0x6a, 0x99, 0x45, 0x1c, 0x78, 0x2c, 0x08, 0x07, + 0xb9, 0xb2, 0x5a, 0x5c, 0x60, 0x3b, 0x81, 0x04, 0x60, 0x53, 0x02, 0x6e, + 0x61, 0x1d, 0xa7, 0x2c, 0x69, 0xae, 0x87, 0x7e, 0x60, 0xa0, 0x81, 0x94, + 0x60, 0x40, 0x00, 0x5a, 0x60, 0x57, 0x80, 0xcc, 0x60, 0x21, 0x00, 0x0e, + 0x60, 0x1c, 0x80, 0x54, 0x38, 0x03, 0x71, 0x80, 0x1e, 0x06, 0x69, 0x80, + 0x88, 0x21, 0x31, 0x8f, 0x9f, 0x64, 0x41, 0x84, 0x8c, 0x11, 0x51, 0x81, + 0x9e, 0x06, 0x89, 0x96, 0x32, 0x18, 0xba, 0x19, 0x8b, 0x0a, 0x1b, 0x21, + 0x00, 0xf4, 0xd8, 0xf0, 0x21, 0x2b, 0x78, 0x99, 0x05, 0x89, 0x1a, 0xe1, + 0x1e, 0x05, 0x10, 0xb3, 0x9c, 0x89, 0xb2, 0x29, 0xc3, 0x09, 0xc5, 0x53, + 0x65, 0xf3, 0x6d, 0x98, 0x11, 0x8a, 0x2a, 0x28, 0x35, 0x2c, 0xde, 0x7a, + 0x51, 0xe5, 0x59, 0x41, 0x71, 0xe5, 0xec, 0xc3, 0x53, 0xbf, 0x8b, 0xf7, + 0x8f, 0x66, 0x35, 0x65, 0xfe, 0xef, 0xd5, 0xab, 0x14, 0x1c, 0x2d, 0x03, + 0xb9, 0x0e, 0xe5, 0x12, 0x1a, 0x62, 0xa3, 0x8e, 0x62, 0x21, 0x4a, 0xaf, + 0x1a, 0xd3, 0x11, 0xca, 0xa9, 0x14, 0x47, 0xdd, 0x91, 0x9d, 0xab, 0x36, + 0xbc, 0xed, 0x61, 0xcd, 0x57, 0xad, 0x16, 0xb6, 0x46, 0xd8, 0x96, 0xb1, + 0x90, 0xdc, 0x82, 0x5d, 0x92, 0xe7, 0xf6, 0xbb, 0x6a, 0xdb, 0xec, 0x95, + 0x6f, 0xef, 0x54, 0x25, 0x1a, 0x97, 0x47, 0x77, 0x5d, 0x4b, 0x74, 0x95, + 0x94, 0x71, 0xdf, 0x0e, 0xf4, 0x56, 0xf4, 0xbe, 0xa5, 0xd9, 0x4c, 0x6a, + 0x57, 0x4f, 0x9d, 0x35, 0x4f, 0x04, 0x4f, 0x3e, 0x91, 0xe5, 0xe3, 0x7b, + 0xd7, 0x36, 0x0a, 0x25, 0x79, 0x7b, 0x95, 0x96, 0xfd, 0x79, 0x08, 0x35, + 0x9e, 0xa6, 0x36, 0xa7, 0x48, 0xd3, 0xb7, 0x77, 0xbb, 0xb6, 0x93, 0xdb, + 0xd1, 0xe9, 0x75, 0xaf, 0x98, 0x91, 0xd1, 0x3f, 0x51, 0xa2, 0x75, 0x74, + 0x95, 0x3d, 0xd6, 0x68, 0xeb, 0x6b, 0x51, 0xd1, 0x15, 0x6a, 0xb1, 0xda, + 0xc0, 0xc9, 0x4f, 0x8b, 0xb9, 0x99, 0xbe, 0xb6, 0xa5, 0x55, 0x35, 0x92, + 0x1c, 0x6b, 0xd7, 0xcc, 0x6e, 0xdf, 0x70, 0x93, 0x15, 0x1d, 0x4f, 0x67, + 0x8f, 0x9b, 0xbd, 0x55, 0xe3, 0x4b, 0x64, 0x8a, 0xb3, 0x8e, 0x46, 0x81, + 0x71, 0x8a, 0xb3, 0xe1, 0xe8, 0x82, 0x24, 0x34, 0x36, 0x76, 0x48, 0x84, + 0x2b, 0x34, 0x21, 0x1a, 0x3c, 0x30, 0x15, 0x19, 0x07, 0x07, 0x42, 0x64, + 0xc4, 0x14, 0xd4, 0x53, 0x32, 0xe3, 0x93, 0x82, 0xe3, 0x2a, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x07, 0x00, 0x03, 0x01, 0xbc, 0x07, 0x23, 0x03, 0xa0, 0x0c, 0x93, + 0x0d, 0x54, 0xd8, 0x03, 0x77, 0x2c, 0x23, 0xf3, 0x07, 0x9c, 0x07, 0x43, + 0x02, 0x30, 0x03, 0x83, 0x02, 0x78, 0x01, 0xb3, 0x00, 0x34, 0x01, 0x63, + 0x00, 0xd8, 0x03, 0xd3, 0x01, 0xe8, 0x09, 0xd3, 0x00, 0x7c, 0x18, 0x83, + 0x00, 0x50, 0x55, 0x13, 0x3e, 0xef, 0x3d, 0x53, 0x0d, 0x20, 0x30, 0xb3, + 0x03, 0x4c, 0x0e, 0x22, 0xc4, 0x18, 0x59, 0x18, 0x2a, 0x3e, 0x65, 0x39, + 0xc0, 0x63, 0x04, 0x92, 0x30, 0x45, 0x92, 0x9a, 0x89, 0x2c, 0x9d, 0x5c, + 0x02, 0x84, 0x4c, 0x39, 0x9c, 0xf7, 0x90, 0x13, 0xe5, 0xde, 0x40, 0x6c, + 0xbb, 0x01, 0x40, 0x2a, 0xee, 0x21, 0x9b, 0x88, 0x0d, 0x18, 0xcf, 0x43, + 0x37, 0x2f, 0x45, 0xd4, 0x62, 0x92, 0x21, 0x62, 0xbf, 0x65, 0xd6, 0xae, + 0xb8, 0x57, 0x29, 0x22, 0x76, 0x65, 0xe9, 0xcb, 0x4d, 0x73, 0x53, 0xce, + 0x08, 0x8a, 0x3b, 0x6b, 0xd1, 0x24, 0x6f, 0x91, 0xa1, 0x4f, 0x5a, 0x40, + 0xf4, 0x47, 0x0f, 0xbf, 0x05, 0x17, 0xfd, 0x4f, 0xfb, 0x57, 0x6d, 0xe7, + 0xd9, 0x1a, 0x43, 0x76, 0x05, 0xb9, 0x4b, 0xe6, 0xe7, 0x96, 0x9b, 0x27, + 0xc2, 0x23, 0x6c, 0xf9, 0x91, 0x95, 0xf2, 0xab, 0x2d, 0x6a, 0xe7, 0x97, + 0x2f, 0xf3, 0xef, 0x7c, 0xe4, 0x97, 0x25, 0x2e, 0xb1, 0x3e, 0x67, 0x91, + 0xfb, 0x13, 0x88, 0x99, 0xa8, 0x31, 0x00, 0x24, 0xe6, 0xae, 0x91, 0xac, + 0x95, 0x7d, 0x1e, 0x07, 0x8e, 0xef, 0x1b, 0xc1, 0xad, 0x6c, 0xfa, 0xab, + 0x4f, 0x6d, 0x8f, 0x55, 0x4d, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd6, + 0x24, 0x70, 0x43, 0x93, 0xfb, 0x1b, 0x70, 0x66, 0xed, 0x78, 0x11, 0x3c, + 0x65, 0x6e, 0x19, 0xb1, 0xc1, 0x0c, 0x2f, 0xf0, 0xad, 0xc2, 0x1d, 0xb7, + 0xdf, 0x81, 0x93, 0x21, 0xb8, 0xba, 0xb9, 0xfb, 0xfe, 0x4f, 0xf5, 0x5d, + 0x57, 0x30, 0xc2, 0x59, 0x19, 0xb5, 0x54, 0x57, 0x2e, 0xa4, 0xba, 0x55, + 0xea, 0x73, 0x95, 0xe5, 0x47, 0xee, 0xcc, 0xb2, 0xb2, 0x3a, 0xdf, 0x5e, + 0x7d, 0x48, 0xea, 0x72, 0xcc, 0xc8, 0x46, 0x4b, 0x52, 0x62, 0xe8, 0x76, + 0x76, 0xaa, 0x48, 0x45, 0x49, 0x3d, 0xd5, 0x74, 0x6a, 0x22, 0xbb, 0x37, + 0xb1, 0xdd, 0xa5, 0x45, 0xce, 0xca, 0x61, 0xea, 0x36, 0x71, 0x86, 0x43, + 0x90, 0x41, 0x45, 0x02, 0x23, 0x59, 0xc3, 0xa2, 0x61, 0x40, 0x79, 0xc2, + 0x76, 0x30, 0x10, 0xc0, 0x20, 0x30, 0x41, 0x00, 0x1c, 0x30, 0xf7, 0xc3, + 0x21, 0x38, 0xdb, 0xc1, 0x4c, 0x30, 0x8b, 0xc0, 0x3b, 0x30, 0x36, 0x80, + 0xe7, 0x0c, 0x09, 0xd8, 0xc0, 0x64, 0x00, 0xb4, 0xc0, 0x79, 0x00, 0x48, + 0xc0, 0xcd, 0x02, 0xf0, 0xc0, 0xa6, 0x04, 0x94, 0xc1, 0x67, 0x0e, 0x68, + 0xe2, 0xa8, 0xd1, 0xe8, 0xc3, 0xb5, 0x0b, 0x38, 0xc0, 0xc4, 0x03, 0x94, + 0xd2, 0xe9, 0x63, 0x03, 0x06, 0x40, 0x20, 0x83, 0x2f, 0x9a, 0x43, 0x8a, + 0x15, 0x05, 0x07, 0xe2, 0x61, 0x04, 0x91, 0x6e, 0x8c, 0xb9, 0x1a, 0xcc, + 0x08, 0x4e, 0x3a, 0x20, 0x7c, 0x68, 0x20, 0xd0, 0xcb, 0xc5, 0x29, 0xc5, + 0x39, 0x5b, 0x32, 0x8d, 0x98, 0x19, 0x42, 0x0e, 0x03, 0xc9, 0x1e, 0xba, + 0xd4, 0xa5, 0x50, 0x0b, 0x41, 0xb1, 0x30, 0xe5, 0xe7, 0x1c, 0x6a, 0x53, + 0xd7, 0x1b, 0xdb, 0x57, 0xe5, 0x39, 0xe9, 0xda, 0xcf, 0x52, 0xae, 0x31, + 0x15, 0x44, 0x01, 0xcd, 0x32, 0xc1, 0x11, 0x1a, 0x43, 0xbb, 0x0d, 0x5c, + 0xee, 0x47, 0x43, 0xc8, 0x2e, 0x7b, 0xb0, 0xc5, 0xca, 0x4a, 0xa1, 0xf9, + 0xde, 0x6a, 0x25, 0xb0, 0x89, 0x2a, 0x6b, 0x17, 0x72, 0x2a, 0xbd, 0x91, + 0x28, 0xd2, 0x8e, 0x75, 0x21, 0xd1, 0xc8, 0x88, 0x74, 0x91, 0x33, 0xd9, + 0xd0, 0xc5, 0x4d, 0xe7, 0x4b, 0x4e, 0xce, 0xd5, 0x47, 0x2a, 0x31, 0xd5, + 0xb5, 0x6d, 0x91, 0x0f, 0x73, 0x15, 0x56, 0xe3, 0x45, 0xcc, 0xea, 0x2e, + 0x56, 0x18, 0x70, 0x84, 0xbf, 0x63, 0x9f, 0x84, 0xe5, 0x1c, 0x8a, 0xdd, + 0xe8, 0xc7, 0x6b, 0xd6, 0xe8, 0x72, 0xdf, 0xb3, 0x8f, 0xc3, 0xdc, 0xad, + 0xdd, 0x7d, 0xfd, 0x5f, 0x4c, 0x89, 0x37, 0x1a, 0xa0, 0xb1, 0x22, 0x50, + 0xa2, 0xb6, 0xd2, 0xb2, 0xda, 0x29, 0x17, 0x35, 0xe7, 0x5c, 0x74, 0x4a, + 0x3e, 0xc8, 0x45, 0x58, 0xfe, 0xe2, 0x26, 0x39, 0x5e, 0x51, 0xda, 0x51, + 0xe6, 0x75, 0x42, 0x2d, 0xe1, 0x11, 0x66, 0x86, 0xc4, 0xca, 0x34, 0x71, + 0x5f, 0x68, 0x88, 0xf7, 0x68, 0x89, 0x43, 0xac, 0xc8, 0x93, 0x92, 0x3d, + 0x69, 0x48, 0x44, 0x85, 0x7b, 0x69, 0x4a, 0x6e, 0x2a, 0x47, 0xcf, 0xa2, + 0xb6, 0xeb, 0x4a, 0x51, 0xeb, 0x66, 0x5d, 0x55, 0x3c, 0x63, 0xad, 0xa5, + 0x20, 0x6d, 0x95, 0x18, 0xd2, 0x0f, 0x43, 0x50, 0x59, 0x85, 0x54, 0x38, + 0x0e, 0x44, 0x01, 0x0c, 0x71, 0xe2, 0xc2, 0x3c, 0x00, 0x39, 0xe1, 0x71, + 0x41, 0x51, 0x65, 0x17, 0x07, 0x13, 0x10, 0x53, 0x51, 0x4c, 0xcb, 0x8e, + 0x4e, 0x0b, 0x8c, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x81, 0xc6, 0x80, 0x00, 0x0a, 0x01, 0x09, 0x80, 0xf0, 0x05, 0x71, + 0x84, 0x42, 0x5b, 0xd9, 0xa8, 0xaa, 0x14, 0x21, 0x82, 0x5a, 0x03, 0x79, + 0x80, 0xb0, 0x07, 0xb0, 0x08, 0x08, 0x51, 0x18, 0x09, 0x86, 0x01, 0x10, + 0x09, 0x66, 0x02, 0x30, 0x0c, 0xa6, 0x05, 0xd8, 0x18, 0x46, 0x0e, 0x20, + 0x5d, 0xe6, 0xf5, 0x2b, 0x32, 0xa6, 0x2c, 0xb0, 0x29, 0x26, 0x0a, 0x68, + 0x10, 0x87, 0x00, 0x5a, 0x0a, 0x82, 0x05, 0x16, 0x18, 0xa3, 0xb9, 0x83, + 0x83, 0xae, 0x60, 0x20, 0x01, 0x1b, 0x44, 0xb3, 0x69, 0x36, 0x10, 0x14, + 0x0d, 0x5a, 0x33, 0xf4, 0xf5, 0x02, 0x41, 0x29, 0x83, 0x05, 0xc4, 0xd4, + 0x7c, 0xc3, 0x41, 0x52, 0xf9, 0x95, 0x19, 0x01, 0xc0, 0xf1, 0x34, 0x56, + 0x57, 0x7b, 0x35, 0x1d, 0x75, 0xf9, 0x29, 0x4f, 0x2c, 0xec, 0x4a, 0xa7, + 0x2a, 0x2a, 0x7d, 0x64, 0xf8, 0x5a, 0xbe, 0xb2, 0x6d, 0xce, 0xd4, 0xa3, + 0x3c, 0x88, 0x26, 0x78, 0x98, 0x6e, 0xa8, 0x72, 0x8a, 0x0c, 0x34, 0xc2, + 0x6d, 0x69, 0xe2, 0x82, 0xe3, 0xe7, 0x29, 0x32, 0x8a, 0x63, 0x1a, 0x99, + 0xb7, 0xe7, 0xdd, 0xe8, 0x8b, 0xa5, 0x9d, 0x15, 0xfc, 0xc3, 0xd9, 0x91, + 0x0c, 0xa2, 0x51, 0x39, 0x95, 0x4d, 0x36, 0x7f, 0x5e, 0xb6, 0x6b, 0xda, + 0x75, 0x5f, 0x53, 0x6e, 0xb7, 0x6b, 0xa1, 0xca, 0xfe, 0x94, 0xd7, 0x6b, + 0x4c, 0x7b, 0xdd, 0x91, 0xa4, 0x74, 0x3d, 0xb2, 0x62, 0x00, 0xb9, 0xa1, + 0x30, 0xa1, 0xdd, 0xb6, 0x58, 0xb4, 0xd5, 0xf7, 0x69, 0x33, 0x00, 0x8e, + 0x48, 0xb3, 0x4c, 0xf4, 0x06, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0c, 0xc6, + 0x3b, 0x70, 0x44, 0x9b, 0xfb, 0x3b, 0x70, 0x65, 0x0e, 0x08, 0x21, 0x3c, + 0x27, 0x6e, 0x19, 0x81, 0xbf, 0x0c, 0x2f, 0xf1, 0x0d, 0xc1, 0xd1, 0xb8, + 0x21, 0x0c, 0x84, 0x21, 0xb8, 0x28, 0x67, 0xa6, 0x07, 0x75, 0x9d, 0xb1, + 0x44, 0x08, 0xc0, 0x8a, 0x8d, 0xd5, 0xf6, 0x57, 0x7b, 0xd9, 0x5d, 0x5d, + 0x95, 0x9d, 0xef, 0x47, 0x36, 0xe7, 0x55, 0x5a, 0x95, 0x5d, 0x9d, 0x1d, + 0xb6, 0xfe, 0xb4, 0x37, 0xb4, 0xeb, 0x2f, 0xaf, 0x9d, 0xbb, 0xa9, 0xda, + 0x9a, 0x9e, 0xaa, 0x69, 0xf3, 0x52, 0x6e, 0x7a, 0x98, 0xcc, 0x8f, 0x7f, + 0x64, 0x6d, 0xe4, 0x8f, 0xbb, 0x92, 0x9c, 0x71, 0x57, 0x38, 0x6a, 0x60, + 0xea, 0x93, 0x2a, 0x3c, 0x4c, 0x50, 0x40, 0x74, 0xd0, 0xd1, 0xe2, 0x81, + 0xf2, 0xd6, 0x00, 0x00, 0x08, 0x13, 0x01, 0x28, 0x18, 0x63, 0x07, 0x4d, + 0x81, 0xd3, 0x49, 0xf4, 0x50, 0xe3, 0x03, 0xdc, 0x12, 0x13, 0x01, 0x38, + 0x12, 0x13, 0x00, 0x8c, 0x05, 0x93, 0x00, 0xa0, 0x04, 0xb3, 0x01, 0x24, + 0x05, 0x43, 0x02, 0x2c, 0x05, 0xe3, 0x04, 0xe8, 0x06, 0x91, 0xa1, 0x7d, + 0xcf, 0x25, 0x21, 0x68, 0x80, 0x49, 0x8b, 0x98, 0x47, 0xc0, 0x05, 0x8b, + 0x7f, 0x8d, 0x10, 0x00, 0x32, 0x18, 0xcc, 0xc5, 0xc6, 0x63, 0x1c, 0x88, + 0x06, 0x00, 0xa0, 0x03, 0xf1, 0xbc, 0x80, 0x6d, 0x01, 0x60, 0xd6, 0x23, + 0x94, 0x61, 0x90, 0x09, 0xd8, 0xc1, 0x84, 0xc2, 0xa5, 0x58, 0x17, 0x04, + 0x58, 0x74, 0x0b, 0x79, 0x16, 0x4e, 0xc3, 0x13, 0xa4, 0x81, 0xc3, 0x87, + 0x1e, 0x66, 0x77, 0xab, 0x25, 0x28, 0xe5, 0xf0, 0x0c, 0x63, 0xf1, 0x75, + 0xaf, 0x5d, 0x7c, 0x2f, 0xea, 0x9e, 0x77, 0x17, 0xc3, 0x3c, 0xf7, 0x94, + 0x90, 0x75, 0xa0, 0x5f, 0xf4, 0x61, 0x7d, 0xa5, 0xe5, 0xef, 0x61, 0xd1, + 0x4d, 0x70, 0x32, 0xa5, 0x6e, 0x36, 0xb0, 0xf6, 0xab, 0xf8, 0x7a, 0xd6, + 0xae, 0xbd, 0xb9, 0x59, 0x5e, 0x68, 0xf6, 0xb9, 0x7a, 0xa5, 0xe5, 0x74, + 0x69, 0xde, 0x6a, 0xe5, 0x1d, 0x66, 0x22, 0x3e, 0xe3, 0xd3, 0xdd, 0x1b, + 0xa7, 0xde, 0x3a, 0xb9, 0x8b, 0x8d, 0xf8, 0xb5, 0xe7, 0xfe, 0x2f, 0x7e, + 0x65, 0xde, 0x66, 0x65, 0x3b, 0x9d, 0x21, 0xb8, 0x46, 0x1d, 0x3a, 0xae, + 0x51, 0x60, 0x3d, 0x62, 0x44, 0x00, 0x98, 0x5d, 0x99, 0xd8, 0x75, 0x0d, + 0xd5, 0x6f, 0x49, 0xee, 0x97, 0xb7, 0xbb, 0xdb, 0x5f, 0xfb, 0xf8, 0xfa, + 0xef, 0xdd, 0x8f, 0x6a, 0x1d, 0x2d, 0x63, 0x03, 0xc1, 0x85, 0x85, 0xe4, + 0x20, 0x0e, 0x84, 0x51, 0x10, 0xe4, 0x11, 0x54, 0x4a, 0x95, 0xe1, 0x69, + 0x1c, 0xc3, 0x8d, 0xb1, 0x31, 0xe4, 0xaa, 0x24, 0x8c, 0x17, 0x81, 0xa3, + 0xe9, 0x44, 0x0a, 0xb8, 0xb5, 0xbe, 0xa5, 0xbf, 0x89, 0x7f, 0xe6, 0xa3, + 0xea, 0x23, 0xfe, 0x5c, 0xc8, 0xfa, 0x8f, 0x88, 0x8e, 0x1e, 0xfb, 0xe3, + 0xfe, 0x13, 0xe6, 0xaa, 0xa3, 0x84, 0x95, 0xe3, 0xbf, 0x8e, 0xea, 0x3b, + 0xf6, 0x8e, 0x7f, 0xab, 0x8f, 0xdb, 0xaa, 0xe2, 0xfa, 0xb8, 0xb7, 0xd0, + 0xd8, 0x21, 0xf4, 0xb6, 0x14, 0x1d, 0x90, 0xc8, 0x5e, 0x3d, 0x31, 0x05, + 0x35, 0x14, 0xcc, 0xb8, 0xe4, 0xe0, 0xb8, 0xca, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x27, 0x00, 0xd9, 0x30, 0x17, 0x42, 0x30, 0x30, 0x2e, 0xa1, + 0x9f, 0x31, 0x1c, 0x86, 0xe4, 0x30, 0x1d, 0x01, 0x6b, 0x30, 0x01, 0xc2, + 0x28, 0x30, 0x34, 0xc0, 0x4b, 0x30, 0x0c, 0x80, 0xa8, 0x30, 0x06, 0xc0, + 0x69, 0x08, 0x04, 0xe0, 0xc1, 0x4b, 0x04, 0x84, 0xc3, 0xb2, 0x14, 0xe8, + 0xfc, 0x97, 0xaf, 0x80, 0xcc, 0x3c, 0x08, 0x50, 0xc2, 0xd3, 0x04, 0x24, + 0xe7, 0xc9, 0x03, 0x59, 0x96, 0x4c, 0xd0, 0x4e, 0x00, 0xc6, 0x0c, 0x24, + 0x0b, 0x4c, 0x01, 0xc7, 0xa1, 0xb4, 0x83, 0xa8, 0xf0, 0xd3, 0xca, 0x04, + 0x06, 0x20, 0x01, 0x98, 0x19, 0x8a, 0x62, 0x45, 0x80, 0xe0, 0x15, 0xad, + 0x12, 0x03, 0x74, 0xcf, 0x97, 0xf2, 0xed, 0x40, 0x49, 0x90, 0xd6, 0xe0, + 0x63, 0xca, 0xf6, 0x80, 0x5c, 0x4a, 0xb0, 0xe2, 0x2d, 0xc6, 0xe5, 0xaa, + 0xb2, 0xed, 0x0d, 0x3e, 0x36, 0x1a, 0x6e, 0xf5, 0x00, 0xdf, 0xe3, 0x77, + 0xd5, 0xf9, 0x5d, 0xbc, 0xb0, 0xa5, 0x61, 0x6d, 0xd6, 0xcf, 0x39, 0x60, + 0xaa, 0x61, 0x83, 0x70, 0x9d, 0x62, 0x79, 0xf6, 0x89, 0x0e, 0xd6, 0x87, + 0x50, 0x2e, 0x6a, 0xb7, 0x7b, 0xb6, 0x89, 0xdd, 0x07, 0x48, 0xc9, 0xe9, + 0x8f, 0x58, 0xb1, 0x53, 0x60, 0x79, 0x6c, 0x7b, 0x51, 0xae, 0xee, 0x8e, + 0xc3, 0x22, 0x8b, 0x95, 0x94, 0xec, 0x75, 0x2d, 0xcb, 0x25, 0x27, 0x0b, + 0x0c, 0xce, 0xfc, 0xdd, 0xf3, 0x70, 0xf5, 0x6d, 0xc5, 0xf6, 0xf6, 0x3d, + 0x6e, 0xd2, 0xde, 0x56, 0x6b, 0x86, 0xee, 0x5a, 0xe6, 0x22, 0x26, 0xdc, + 0xd9, 0x32, 0xc4, 0x96, 0x79, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd6, + 0xf7, 0x70, 0x42, 0x03, 0xfc, 0x43, 0x70, 0x67, 0xed, 0xf8, 0x10, 0x3c, + 0x65, 0x6e, 0x1a, 0x3d, 0xc1, 0x0a, 0x0f, 0xf1, 0x0d, 0xc1, 0xe7, 0xb8, + 0x20, 0x05, 0x91, 0xa1, 0xb8, 0x83, 0x1c, 0x4c, 0x00, 0xb0, 0xbd, 0xae, + 0x23, 0xcf, 0xb8, 0xb7, 0x6e, 0x9a, 0xd6, 0xc6, 0xf7, 0xd7, 0x7e, 0x34, + 0x2f, 0x3c, 0x62, 0xee, 0xda, 0x7e, 0xa8, 0xef, 0x22, 0x67, 0xcb, 0xe5, + 0xe7, 0x6f, 0x50, 0xd1, 0x51, 0x6c, 0x46, 0xd4, 0xab, 0x6b, 0xb2, 0xbe, + 0x8b, 0x5d, 0x9d, 0x5d, 0xd1, 0xeb, 0xef, 0xa9, 0x24, 0x6a, 0x48, 0x87, + 0xca, 0x47, 0x25, 0x67, 0xdd, 0xbd, 0x8c, 0xa9, 0x46, 0xb5, 0x91, 0x1e, + 0xca, 0x8e, 0x52, 0xae, 0x46, 0xbb, 0x48, 0x79, 0xce, 0xf3, 0x31, 0x8d, + 0x75, 0xd1, 0x9e, 0xb6, 0x72, 0x35, 0xcb, 0x39, 0x0c, 0xca, 0x23, 0x62, + 0x38, 0xa1, 0x09, 0x0e, 0x88, 0x80, 0xc1, 0xc2, 0x08, 0x98, 0x2c, 0x07, + 0x01, 0x05, 0x8c, 0x38, 0xc0, 0x70, 0x03, 0x2c, 0xc0, 0xcf, 0x06, 0xa0, + 0xc2, 0xa6, 0x66, 0xf4, 0xd7, 0x42, 0x14, 0xa8, 0xc1, 0x78, 0x04, 0x9c, + 0xc0, 0x91, 0x02, 0xe4, 0xc1, 0x30, 0x00, 0x94, 0xc0, 0x77, 0x00, 0x64, + 0xc0, 0x56, 0x00, 0x5c, 0xc0, 0x0f, 0x02, 0xa4, 0xc0, 0xae, 0x07, 0x20, + 0xc2, 0x2d, 0x1b, 0x54, 0xe5, 0x68, 0xf8, 0x64, 0xc7, 0x8f, 0x0d, 0xf4, + 0xc1, 0x60, 0x05, 0xd8, 0xd8, 0x6c, 0x73, 0x3c, 0x21, 0x0c, 0xb6, 0x49, + 0x33, 0xdb, 0x1c, 0x0c, 0xdc, 0x03, 0x09, 0xc1, 0x8e, 0x83, 0x02, 0x06, + 0x64, 0x2f, 0x83, 0x6e, 0xba, 0x45, 0x85, 0xa1, 0xf0, 0xd2, 0x21, 0x62, + 0xce, 0x2e, 0x04, 0x69, 0xb2, 0xc4, 0x64, 0xcb, 0xcc, 0xc6, 0xc9, 0x30, + 0xc3, 0x3b, 0xf9, 0x36, 0xde, 0x66, 0x9b, 0x4a, 0xd7, 0x2b, 0x92, 0x4a, + 0x6f, 0xd2, 0xc6, 0xae, 0x62, 0xd0, 0xb0, 0xf9, 0x45, 0xbc, 0xdf, 0xcf, + 0xd5, 0x0e, 0x14, 0x48, 0x8b, 0x0c, 0x1b, 0xb5, 0xe5, 0xc3, 0xc8, 0x78, + 0xbd, 0x3b, 0xad, 0xd3, 0x87, 0xce, 0x81, 0xf3, 0x4f, 0xd0, 0x7a, 0x5f, + 0x34, 0xc8, 0xfc, 0xd5, 0xdc, 0x47, 0xd7, 0x3a, 0xf2, 0xa1, 0xd5, 0xca, + 0x90, 0xdf, 0xcc, 0xaa, 0xd5, 0x3a, 0x0c, 0xeb, 0x9e, 0xa2, 0x6a, 0xaf, + 0x27, 0xd5, 0xe1, 0x91, 0x2a, 0x1b, 0x8a, 0xd2, 0xa3, 0xab, 0xe6, 0x66, + 0xe2, 0xb1, 0x4f, 0xf8, 0xfa, 0x89, 0x78, 0xea, 0xb1, 0xcd, 0xc2, 0xe3, + 0x68, 0xab, 0xaa, 0x44, 0x88, 0x5a, 0x24, 0x5c, 0x5c, 0x78, 0x85, 0xc4, + 0x9b, 0x9e, 0xb4, 0xfc, 0xd2, 0x61, 0x8c, 0xb2, 0xf4, 0x8e, 0xd4, 0xd7, + 0x3a, 0x4a, 0x1b, 0x1a, 0x84, 0x32, 0x6c, 0x10, 0x55, 0x06, 0xa4, 0xcc, + 0x6a, 0x22, 0x47, 0x0b, 0x7b, 0x4f, 0xa6, 0x76, 0x14, 0x0a, 0xe1, 0x67, + 0x45, 0xff, 0x5c, 0xdd, 0x5a, 0xd5, 0x5d, 0xdc, 0x43, 0x54, 0xdd, 0x5f, + 0xab, 0x75, 0xb3, 0x47, 0x06, 0x55, 0xf0, 0xbc, 0xc5, 0xd5, 0xbc, 0x23, + 0xde, 0xcf, 0x52, 0xf1, 0x12, 0xd2, 0xfc, 0xf3, 0x35, 0xbc, 0xdd, 0x5f, + 0x2a, 0xde, 0xeb, 0x10, 0xb2, 0xf5, 0xd3, 0x72, 0x3b, 0x47, 0x4f, 0x57, + 0x59, 0xaa, 0x4e, 0xb5, 0xf9, 0x6d, 0x93, 0x89, 0xff, 0xa5, 0x1d, 0xdd, + 0xb5, 0x59, 0x67, 0x38, 0xd9, 0x12, 0x1d, 0x47, 0x16, 0x8e, 0x50, 0x76, + 0x28, 0x27, 0x14, 0x69, 0x0d, 0x96, 0x11, 0x59, 0x47, 0x05, 0x03, 0xb4, + 0xc4, 0x14, 0xd4, 0x53, 0x32, 0xe3, 0x93, 0x82, 0xe3, 0x2a, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xb8, 0x0c, 0x04, 0x40, 0x18, 0xcc, 0x0c, 0x70, 0x32, 0x8c, 0x2d, + 0x83, 0x2d, 0x4d, 0x9c, 0x00, 0x9a, 0x8c, 0x19, 0x80, 0x1d, 0xcc, 0x07, + 0xb0, 0x14, 0x8c, 0x09, 0xb0, 0x05, 0x43, 0x00, 0x7d, 0x30, 0x15, 0xc0, + 0x36, 0x30, 0x1c, 0xc0, 0xbe, 0x30, 0x06, 0x81, 0xc3, 0x30, 0x19, 0x06, + 0x3e, 0x31, 0xcc, 0xf7, 0xa4, 0x30, 0x72, 0x03, 0x9a, 0x30, 0x13, 0x41, + 0x45, 0x31, 0x6a, 0x63, 0x17, 0x65, 0x32, 0x23, 0x83, 0x40, 0x77, 0x05, + 0x3f, 0x8b, 0x06, 0x80, 0x66, 0x0d, 0xcc, 0x35, 0xaf, 0x45, 0x51, 0x6c, + 0x20, 0x58, 0x2e, 0xd8, 0x15, 0x6f, 0x50, 0xe6, 0xe2, 0x97, 0x76, 0x60, + 0x12, 0x00, 0x16, 0x5c, 0xa5, 0x46, 0x38, 0xe4, 0x10, 0x7c, 0xee, 0xc6, + 0xa1, 0x39, 0x2b, 0x24, 0x0d, 0x76, 0xfa, 0xdf, 0xed, 0x5a, 0xbb, 0xbc, + 0xda, 0x6f, 0x38, 0x2b, 0x1c, 0xe1, 0xfb, 0xd9, 0xd5, 0xc0, 0x83, 0x05, + 0xd0, 0x2c, 0x1d, 0xda, 0x30, 0x48, 0x71, 0x09, 0x33, 0xba, 0x10, 0x41, + 0xa5, 0x65, 0x52, 0x9b, 0x18, 0x52, 0x1d, 0x82, 0x8c, 0xee, 0xd5, 0x2d, + 0x1a, 0xfa, 0x9e, 0x95, 0x67, 0x47, 0x3e, 0x89, 0x4c, 0xeb, 0xac, 0xc2, + 0xca, 0xd4, 0x2f, 0x65, 0x72, 0x11, 0x93, 0xb5, 0xf3, 0xaa, 0x73, 0x6c, + 0xa6, 0xb2, 0x96, 0x7f, 0xdd, 0xac, 0x47, 0x42, 0xee, 0xcc, 0xee, 0x25, + 0x2b, 0x10, 0x8e, 0x22, 0x84, 0x23, 0x39, 0xd0, 0x74, 0xeb, 0x80, 0xb4, + 0x68, 0x80, 0x01, 0x86, 0x47, 0x45, 0x6e, 0x7d, 0x49, 0xdd, 0x2d, 0x2f, + 0xa3, 0x7e, 0xfb, 0x75, 0x4f, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xc6, + 0x49, 0x6e, 0x43, 0x8b, 0xfb, 0x2b, 0x72, 0x54, 0x2e, 0x08, 0x63, 0x34, + 0xa2, 0x6e, 0x1f, 0xbd, 0xc1, 0x08, 0x0f, 0xf1, 0x0d, 0xc2, 0x3b, 0x38, + 0x1f, 0x81, 0xa3, 0x2d, 0xb8, 0xee, 0xfa, 0xcd, 0x56, 0x00, 0x03, 0xce, + 0x1f, 0x10, 0x17, 0x03, 0x87, 0x02, 0x86, 0x8e, 0x06, 0x68, 0x6a, 0x95, + 0x51, 0x91, 0xd6, 0x4b, 0x22, 0xb2, 0xa5, 0xa9, 0x21, 0x4a, 0x65, 0x6b, + 0xfa, 0x23, 0x32, 0x1f, 0xa2, 0x7f, 0x62, 0xf6, 0xe6, 0x7e, 0x46, 0xff, + 0x7f, 0xfe, 0xdf, 0xff, 0xfb, 0xff, 0xfe, 0xed, 0x53, 0xec, 0xec, 0xc8, + 0x8e, 0x47, 0x77, 0x67, 0x8b, 0x57, 0x73, 0xb6, 0x09, 0xa1, 0x8c, 0x07, + 0xe0, 0x0c, 0xcc, 0x13, 0x90, 0x00, 0x0c, 0x49, 0x80, 0x56, 0x0e, 0x96, + 0x20, 0x2a, 0x4c, 0x29, 0x20, 0x18, 0x0c, 0x0d, 0xd0, 0x22, 0x0c, 0x06, + 0x80, 0x3a, 0xcc, 0x09, 0x70, 0x43, 0x8c, 0x12, 0x00, 0x20, 0x4c, 0x22, + 0x20, 0x01, 0x8c, 0x36, 0x90, 0xa4, 0xcc, 0x6b, 0xa3, 0x37, 0x8c, 0xa3, + 0xbe, 0xdf, 0x4d, 0xa5, 0x41, 0xb0, 0x0c, 0x3d, 0x50, 0xba, 0xcd, 0xed, + 0x96, 0x24, 0x84, 0x99, 0x25, 0x40, 0x66, 0xf7, 0x81, 0x81, 0x07, 0x64, + 0x4d, 0x23, 0x28, 0x33, 0x8e, 0x5a, 0x02, 0x32, 0x30, 0xa8, 0xc4, 0xa2, + 0xf3, 0x07, 0x0a, 0x80, 0x21, 0x53, 0x07, 0x1a, 0x0e, 0x7e, 0xae, 0x30, + 0xd0, 0x5c, 0xc2, 0x20, 0x43, 0x0b, 0x01, 0xc2, 0x02, 0xc2, 0x40, 0xd3, + 0x0c, 0x80, 0x88, 0x82, 0x00, 0xe1, 0x81, 0x9d, 0x4d, 0x80, 0xc0, 0x08, + 0xd0, 0x1d, 0x07, 0x11, 0xbd, 0x55, 0x1a, 0xf2, 0xc3, 0x2a, 0xb2, 0xb6, + 0xad, 0x26, 0x72, 0xd4, 0x9a, 0x8b, 0x52, 0x71, 0x18, 0x3b, 0x7e, 0xe2, + 0x32, 0xf7, 0x71, 0xad, 0xba, 0x8f, 0xbc, 0x01, 0x05, 0xc0, 0x20, 0x50, + 0x94, 0x01, 0x83, 0x93, 0x82, 0x10, 0xf8, 0x45, 0x0f, 0x44, 0x71, 0x14, + 0x23, 0x13, 0x1e, 0x61, 0xe4, 0x18, 0x58, 0xc9, 0x61, 0x2d, 0x4c, 0x0d, + 0x44, 0x9a, 0x8a, 0x43, 0xdc, 0x40, 0x1e, 0x32, 0x92, 0x6a, 0xb7, 0xae, + 0x8a, 0x79, 0x65, 0x78, 0x68, 0xd5, 0xc4, 0xa7, 0x91, 0x36, 0xbe, 0xcb, + 0x50, 0xe5, 0xc0, 0xd8, 0x18, 0x96, 0x2e, 0x6e, 0x7d, 0x9d, 0xbb, 0x21, + 0x85, 0x99, 0x52, 0xd3, 0x45, 0xbe, 0xb3, 0x7f, 0x47, 0xd4, 0xb1, 0x96, + 0x93, 0x3e, 0x9a, 0xbd, 0xc5, 0xae, 0xd5, 0xb5, 0x44, 0xca, 0x17, 0x57, + 0x19, 0x70, 0xac, 0xd1, 0x73, 0xde, 0x83, 0x04, 0x22, 0x44, 0x71, 0x84, + 0x1c, 0xb2, 0x4f, 0xfd, 0x25, 0x48, 0x5c, 0xba, 0xa5, 0x04, 0x4f, 0x39, + 0xad, 0xe1, 0x72, 0xc3, 0x81, 0x3a, 0x47, 0x9c, 0xd1, 0x09, 0x97, 0x69, + 0x33, 0xc3, 0xd3, 0xe6, 0xf8, 0x76, 0x9a, 0xac, 0x2a, 0x8d, 0x5e, 0xdb, + 0xd9, 0x5a, 0xd1, 0xf5, 0xdf, 0x5e, 0xda, 0x0e, 0xd3, 0x75, 0x3e, 0xae, + 0x75, 0x6b, 0xa6, 0x6c, 0xbd, 0xad, 0x3f, 0x0c, 0x6b, 0x3a, 0x75, 0x3a, + 0x9e, 0x9c, 0x3d, 0xdf, 0x2c, 0x61, 0xe8, 0xb7, 0xd4, 0xd3, 0x29, 0x8e, + 0x61, 0xf7, 0xe6, 0xdc, 0x73, 0x3b, 0x65, 0xac, 0xe0, 0xf4, 0xfc, 0x28, + 0xe6, 0x31, 0xe6, 0x92, 0xc5, 0x55, 0x74, 0xba, 0x61, 0x8d, 0x7d, 0x4b, + 0x78, 0x67, 0x67, 0x99, 0xc4, 0x9c, 0xd9, 0x12, 0xf8, 0x3e, 0x68, 0x79, + 0x6c, 0xeb, 0xde, 0xe5, 0x58, 0x8d, 0x25, 0xa4, 0xf4, 0x94, 0x7e, 0x9c, + 0x16, 0x9a, 0x9d, 0x28, 0x20, 0xd8, 0x6e, 0x98, 0xc4, 0xd1, 0xd4, 0x4d, + 0x21, 0x88, 0x62, 0xe3, 0xa0, 0x80, 0x09, 0x44, 0x09, 0x60, 0xf0, 0x98, + 0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x70, 0x5c, 0x65, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x23, 0x80, 0x52, 0x30, 0x6e, 0x41, 0xf7, 0x31, 0xb1, 0xa0, + 0xa4, 0x3f, 0x7c, 0x06, 0xf9, 0x31, 0x02, 0x01, 0x36, 0x30, 0x42, 0xc1, + 0x1b, 0x30, 0x0d, 0x41, 0x7e, 0x30, 0x04, 0x41, 0x8b, 0x30, 0x0b, 0x41, + 0x38, 0x30, 0x3d, 0xc0, 0xf8, 0x30, 0xbd, 0x01, 0x79, 0x31, 0xd1, 0x4a, + 0x3e, 0x32, 0x69, 0x8d, 0xca, 0x31, 0x34, 0x07, 0xbd, 0x30, 0xdd, 0x02, + 0xb4, 0x38, 0x2d, 0x73, 0x35, 0x41, 0x04, 0x33, 0xac, 0xe3, 0x32, 0x5c, + 0x55, 0x31, 0x08, 0x7a, 0x30, 0xe4, 0x2b, 0x30, 0x00, 0x2e, 0x0e, 0x18, + 0x82, 0x01, 0x50, 0x48, 0x00, 0x20, 0x00, 0xe0, 0x03, 0x00, 0x41, 0x02, + 0xa8, 0x1e, 0x1c, 0x12, 0xb1, 0x2b, 0x32, 0xb8, 0x92, 0xd1, 0x66, 0x94, + 0x05, 0xb1, 0x67, 0x8d, 0xbb, 0x98, 0xd4, 0xa1, 0x99, 0x8b, 0x94, 0x73, + 0xf4, 0x91, 0x6a, 0x5e, 0x5e, 0x95, 0x4d, 0xca, 0x72, 0xcf, 0x19, 0x4e, + 0x12, 0xee, 0xfc, 0xa8, 0xae, 0x90, 0x22, 0x37, 0xa8, 0x04, 0x14, 0x85, + 0x27, 0xb2, 0xa2, 0xe9, 0x45, 0x65, 0xe5, 0x04, 0xba, 0x68, 0x5d, 0x47, + 0x0c, 0x1c, 0x58, 0x2f, 0xb2, 0xfa, 0x9d, 0xab, 0x1e, 0x9c, 0x92, 0x99, + 0xf2, 0x04, 0x65, 0xa0, 0x79, 0xb9, 0xb4, 0x9b, 0xe6, 0x95, 0xb0, 0x8a, + 0xea, 0x0d, 0xa2, 0x14, 0x1d, 0x31, 0x3b, 0x40, 0x28, 0x61, 0x11, 0x79, + 0xf6, 0xb6, 0x06, 0xf5, 0x75, 0xd8, 0x5d, 0x12, 0x45, 0x0d, 0x4a, 0x2e, + 0x59, 0x94, 0x0d, 0x4c, 0xc1, 0x46, 0xf5, 0x62, 0x59, 0x92, 0x25, 0x0b, + 0x21, 0x57, 0x18, 0x8e, 0xe5, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd7, + 0xeb, 0x70, 0x40, 0x03, 0xfd, 0x4b, 0x70, 0x6d, 0xed, 0xf8, 0x10, 0x60, + 0x65, 0x6e, 0x1f, 0x29, 0xbe, 0xfc, 0x0f, 0xe9, 0x8d, 0xc1, 0xb2, 0x37, + 0xa0, 0x45, 0x81, 0x95, 0xb8, 0x52, 0x26, 0x27, 0xab, 0xb9, 0x89, 0x36, + 0xab, 0x37, 0x08, 0xf4, 0x27, 0x95, 0x3a, 0x99, 0x64, 0x70, 0x89, 0x52, + 0x46, 0xd3, 0x60, 0xa0, 0xf0, 0xd8, 0x5c, 0x08, 0x60, 0x99, 0x65, 0x51, + 0x17, 0x00, 0xe1, 0x90, 0x6d, 0x7b, 0x6b, 0x09, 0x9b, 0xf3, 0x16, 0xea, + 0x56, 0xd6, 0xf3, 0xc4, 0xcf, 0xeb, 0x3a, 0x90, 0x31, 0xa7, 0x53, 0xd1, + 0xd2, 0x19, 0x7b, 0x93, 0x1b, 0x49, 0x33, 0x87, 0xd2, 0x22, 0xcc, 0x9d, + 0xd2, 0x23, 0xb3, 0x2c, 0xa4, 0xab, 0xbe, 0xd4, 0xbb, 0x11, 0x49, 0xa2, + 0xba, 0x11, 0xd5, 0x99, 0x11, 0xa9, 0xa2, 0xaa, 0xea, 0x92, 0xa7, 0x72, + 0x59, 0xce, 0x45, 0x35, 0x11, 0xdb, 0x1a, 0xd7, 0xb8, 0xcb, 0x90, 0xb5, + 0xa2, 0x4e, 0x63, 0x1e, 0x9a, 0xa1, 0x9d, 0x3f, 0x3b, 0xd9, 0x4c, 0xdb, + 0x3b, 0xba, 0xf2, 0x99, 0x8e, 0xd1, 0x37, 0x3a, 0x88, 0x8f, 0x28, 0xab, + 0xb2, 0x0b, 0x08, 0x8d, 0x31, 0xaf, 0x10, 0x13, 0x02, 0x85, 0x03, 0x09, + 0x88, 0x8b, 0x03, 0x84, 0x0c, 0x06, 0x30, 0x5e, 0x0c, 0x13, 0x51, 0x06, + 0xcc, 0x59, 0x8f, 0xb7, 0x8f, 0x47, 0x03, 0x4f, 0xcc, 0x34, 0x40, 0xbc, + 0x0c, 0x11, 0x70, 0x35, 0xcc, 0x0d, 0xe0, 0x28, 0x0c, 0x07, 0xd0, 0x0d, + 0xcc, 0x07, 0x20, 0x0f, 0x4c, 0x04, 0xe0, 0x19, 0x4c, 0x0f, 0x90, 0x21, + 0x0c, 0x22, 0x40, 0xbb, 0xcd, 0x7d, 0xf1, 0x63, 0xcc, 0x37, 0x80, 0x43, + 0x4c, 0x0f, 0xd0, 0x0d, 0x81, 0x7a, 0x48, 0xc1, 0x99, 0x61, 0x06, 0x25, + 0x29, 0x84, 0x0e, 0xb0, 0x4c, 0x2d, 0x44, 0x67, 0x9b, 0x05, 0x34, 0x81, + 0x68, 0x14, 0x08, 0xa7, 0x8f, 0x52, 0x4e, 0x72, 0x17, 0x94, 0xbe, 0xec, + 0xba, 0x9a, 0x45, 0x66, 0x55, 0x76, 0x1e, 0xaf, 0x4f, 0x94, 0xdc, 0x2a, + 0x86, 0x92, 0x72, 0x8e, 0x7e, 0x55, 0x0c, 0xcd, 0xc8, 0x69, 0x2b, 0xc5, + 0x2d, 0xd2, 0x96, 0x97, 0x2e, 0xa7, 0x2a, 0x5e, 0x68, 0xb6, 0x04, 0xb5, + 0x3d, 0xd4, 0xce, 0xfb, 0x2d, 0xf9, 0xca, 0x5b, 0x52, 0x03, 0x18, 0xdf, + 0x71, 0xd8, 0x09, 0x3d, 0xdc, 0xb1, 0x31, 0x6d, 0x1a, 0x76, 0x21, 0x1e, + 0x97, 0xfa, 0x48, 0x63, 0x3d, 0x94, 0xd6, 0x3d, 0x61, 0xe5, 0x68, 0x55, + 0xc6, 0xd7, 0x17, 0x90, 0xd2, 0xa1, 0x2f, 0xac, 0x2f, 0xd1, 0x6d, 0x35, + 0xa1, 0x3d, 0x95, 0x05, 0xaf, 0x5d, 0x74, 0x35, 0xa7, 0x4d, 0x89, 0x7e, + 0xd2, 0x65, 0xc9, 0x44, 0x89, 0x4c, 0xea, 0x65, 0xdc, 0xc9, 0x59, 0x9b, + 0xa5, 0x42, 0xeb, 0x52, 0x2d, 0x5e, 0xb5, 0x21, 0xac, 0x28, 0x8b, 0xd6, + 0xb9, 0xea, 0xcb, 0x5d, 0x1d, 0x18, 0x29, 0x95, 0xbd, 0x0c, 0xd9, 0xd4, + 0x98, 0xec, 0x76, 0x7a, 0x23, 0xa8, 0x0b, 0xe3, 0x43, 0x8b, 0xdf, 0x39, + 0xb1, 0x44, 0x78, 0x2c, 0x11, 0x4a, 0x83, 0xc3, 0x28, 0x87, 0x93, 0xc5, + 0xc3, 0x76, 0x04, 0x36, 0x63, 0x57, 0xaa, 0xcb, 0xed, 0x58, 0xad, 0x7a, + 0xaf, 0x6c, 0xe3, 0x60, 0xaa, 0x94, 0xa6, 0x68, 0x15, 0x08, 0x1f, 0x95, + 0x9d, 0xd4, 0xc6, 0x78, 0x2e, 0xac, 0xab, 0xa6, 0x6b, 0x35, 0xb0, 0xbc, + 0x9b, 0xed, 0x56, 0x5e, 0xe5, 0x74, 0xb2, 0x99, 0x68, 0x65, 0x8f, 0x49, + 0x1d, 0x95, 0xd8, 0x92, 0xdd, 0x91, 0xfa, 0x51, 0x75, 0x4d, 0x53, 0x46, + 0xb3, 0x34, 0xe7, 0x54, 0x5a, 0x91, 0x37, 0x9d, 0x0c, 0x66, 0x79, 0x5e, + 0xc9, 0xd9, 0x4a, 0x62, 0x57, 0x57, 0x56, 0x56, 0x5b, 0x16, 0x4f, 0xa9, + 0xf2, 0xf6, 0x44, 0x7a, 0xab, 0x09, 0xab, 0x0f, 0x38, 0x80, 0xd1, 0x52, + 0x84, 0xc4, 0x88, 0x60, 0xf0, 0x70, 0x3c, 0x11, 0x13, 0x20, 0x74, 0xc8, + 0x30, 0x06, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, + 0x55, 0x30, 0x34, 0xc1, 0xac, 0x30, 0x26, 0x84, 0x13, 0x30, 0x26, 0xfc, + 0xfa, 0x30, 0x85, 0x4c, 0xc7, 0x30, 0x13, 0xc2, 0xc6, 0x21, 0x06, 0xe4, + 0xc0, 0x16, 0x03, 0x18, 0xc0, 0x0b, 0x02, 0xac, 0xc0, 0x10, 0x01, 0xf8, + 0xc0, 0xb9, 0x01, 0x58, 0x1c, 0x09, 0x89, 0x83, 0xae, 0x07, 0xe9, 0xae, + 0x78, 0x9b, 0xa8, 0x28, 0xf3, 0x21, 0xa0, 0xbe, 0x0e, 0x74, 0x14, 0xd5, + 0x00, 0x0c, 0xac, 0x34, 0x65, 0xc4, 0x1c, 0x3c, 0xcf, 0x4a, 0x80, 0x6b, + 0xda, 0x95, 0x47, 0xa2, 0xef, 0xf3, 0xd0, 0x84, 0xfc, 0x66, 0xb7, 0x18, + 0x98, 0x6b, 0x13, 0x99, 0x5f, 0xa4, 0xb7, 0x4b, 0x62, 0xb5, 0xfa, 0xb7, + 0xe9, 0x6d, 0xcb, 0xea, 0xea, 0x59, 0x73, 0x39, 0x77, 0xd8, 0xaf, 0x24, + 0x95, 0xcf, 0x52, 0xde, 0xc7, 0x97, 0x26, 0x59, 0x88, 0xaf, 0x48, 0xab, + 0xab, 0xbc, 0xba, 0x9d, 0x22, 0x4b, 0x9c, 0x97, 0xe1, 0xa3, 0x2f, 0xae, + 0x5f, 0x0e, 0xd4, 0xc1, 0x61, 0x97, 0x3e, 0xf4, 0x3e, 0x70, 0xd1, 0xd5, + 0x9d, 0x9a, 0xee, 0x1e, 0x9e, 0xf9, 0xf3, 0x0f, 0x51, 0xda, 0x1c, 0x42, + 0x64, 0xb0, 0xed, 0x98, 0x5d, 0xbd, 0x92, 0xb7, 0x1a, 0xfa, 0xf4, 0x14, + 0x56, 0xc3, 0x8f, 0xc2, 0x94, 0xb1, 0x02, 0xde, 0x83, 0x64, 0xb5, 0x27, + 0xaa, 0x12, 0x9c, 0x25, 0x50, 0xcb, 0x06, 0x19, 0xa8, 0x90, 0xd1, 0x7b, + 0xdb, 0x13, 0x5b, 0xd7, 0xb3, 0xed, 0xbd, 0x91, 0x59, 0x0b, 0x60, 0x7f, + 0xa9, 0x68, 0xec, 0x84, 0x65, 0x45, 0xea, 0xd2, 0xba, 0xa6, 0xe8, 0x6d, + 0x52, 0x28, 0x68, 0xa5, 0xf3, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd7, + 0x53, 0x6f, 0xbf, 0x83, 0xfb, 0x63, 0x70, 0x6c, 0xed, 0xe8, 0x11, 0x3c, + 0x68, 0x6e, 0x1f, 0xc1, 0xc0, 0xfc, 0x0f, 0xed, 0x2d, 0xc1, 0xdc, 0xb8, + 0x20, 0x01, 0x81, 0x99, 0xb8, 0x08, 0xf5, 0x31, 0x6c, 0xb7, 0x86, 0x66, + 0xc9, 0x0d, 0xd4, 0x09, 0xe1, 0x2a, 0xd4, 0x68, 0x00, 0xeb, 0x8e, 0xe0, + 0xfe, 0xd1, 0x5e, 0xbf, 0x79, 0x7c, 0xff, 0x36, 0xd9, 0x49, 0x6f, 0x91, + 0xfc, 0xd2, 0x7b, 0x5e, 0xc3, 0x00, 0x66, 0x5b, 0x9e, 0x4a, 0x5d, 0xcb, + 0x3b, 0xe6, 0x77, 0x23, 0xa7, 0x77, 0x9e, 0xa6, 0xba, 0xba, 0xe9, 0x39, + 0xe6, 0xea, 0xfa, 0x95, 0x9f, 0xef, 0xfb, 0x6b, 0xee, 0x51, 0x75, 0x9e, + 0x7f, 0x5b, 0x66, 0x6a, 0xe6, 0x91, 0x37, 0xa8, 0x9e, 0xdf, 0xfe, 0x62, + 0xe3, 0x9e, 0xed, 0x22, 0x15, 0xbe, 0xe7, 0xe4, 0x7d, 0x4a, 0xcc, 0x5a, + 0x56, 0xba, 0x5d, 0xa5, 0xf5, 0xde, 0xdc, 0x56, 0xd7, 0x71, 0xdb, 0xe6, + 0xf2, 0x32, 0x2d, 0x91, 0xec, 0x56, 0x94, 0xb1, 0x71, 0x1d, 0x04, 0x06, + 0xa5, 0x0f, 0x4e, 0x0e, 0x09, 0x18, 0x23, 0x06, 0x8c, 0x14, 0xd0, 0x79, + 0x0c, 0x1f, 0x41, 0x0f, 0x4c, 0x61, 0xbf, 0x82, 0x0f, 0x54, 0x53, 0x40, + 0x4c, 0x39, 0x10, 0xba, 0x8c, 0x14, 0xc0, 0x3e, 0x4c, 0x10, 0xd0, 0x2d, + 0x0c, 0x07, 0xe0, 0x06, 0xcc, 0x01, 0xd0, 0x10, 0x8c, 0x07, 0xe0, 0x1f, + 0x8c, 0x0b, 0x70, 0x48, 0xcc, 0x1f, 0xa1, 0x2e, 0x8d, 0x25, 0x5b, 0x6e, + 0x8c, 0x82, 0xe0, 0xaf, 0x0c, 0x19, 0x70, 0x3b, 0xce, 0xd2, 0x00, 0xda, + 0xd4, 0xcd, 0x10, 0xd0, 0xd6, 0x21, 0x81, 0x51, 0x61, 0x80, 0x82, 0x31, + 0x14, 0xe8, 0x9e, 0x55, 0x06, 0x81, 0x38, 0x91, 0xe4, 0x4c, 0xf1, 0x6b, + 0x2f, 0xfd, 0x4c, 0x1a, 0xde, 0x17, 0x9f, 0x08, 0xae, 0x71, 0x6e, 0x57, + 0x8a, 0xd2, 0xcc, 0x3e, 0x13, 0xdc, 0x89, 0x4b, 0x6b, 0xcb, 0xaa, 0x5a, + 0xb9, 0x85, 0x9c, 0xa9, 0xa5, 0x92, 0xab, 0x38, 0x19, 0x27, 0x28, 0x11, + 0x13, 0x16, 0x46, 0x46, 0xd7, 0x5d, 0x69, 0x95, 0x1d, 0x4e, 0x04, 0xac, + 0xf6, 0x52, 0x24, 0x59, 0x0c, 0x49, 0x3b, 0x49, 0x45, 0x6d, 0x11, 0x93, + 0x1a, 0x14, 0x07, 0x90, 0x40, 0x88, 0x84, 0x06, 0x21, 0xef, 0x4f, 0x51, + 0x20, 0xb2, 0x35, 0x88, 0xc6, 0x05, 0xcf, 0x89, 0x4e, 0x16, 0x87, 0x0a, + 0xa0, 0x46, 0x6c, 0xb1, 0x0c, 0x11, 0x0a, 0x17, 0x48, 0x36, 0x4a, 0x81, + 0x83, 0xfa, 0x8e, 0x21, 0xa2, 0x82, 0xb1, 0x3b, 0x61, 0xa9, 0x92, 0xb4, + 0x6c, 0x2f, 0x24, 0x4a, 0xde, 0x09, 0x26, 0x7d, 0xf2, 0x88, 0xa2, 0x03, + 0x5f, 0x4f, 0x45, 0x01, 0xa6, 0x08, 0x31, 0x09, 0x43, 0x6b, 0x41, 0x74, + 0x2c, 0xc6, 0x3d, 0x66, 0x88, 0xd2, 0x0f, 0x23, 0x5c, 0x4a, 0x44, 0xc7, + 0x34, 0xd1, 0x86, 0x0b, 0x4c, 0x1e, 0x1d, 0x36, 0x3a, 0x16, 0x35, 0x33, + 0xe2, 0x21, 0x30, 0x32, 0x1b, 0x19, 0x04, 0x17, 0x0b, 0x86, 0x49, 0xed, + 0x47, 0x2e, 0xce, 0x62, 0x47, 0x8d, 0x3f, 0x72, 0xe7, 0x2d, 0xd5, 0xe9, + 0x23, 0x03, 0xc5, 0x91, 0x51, 0x66, 0x98, 0xea, 0xed, 0x48, 0xb2, 0x28, + 0x74, 0xca, 0x77, 0x3a, 0xca, 0x5c, 0x23, 0x64, 0x37, 0x3b, 0x0e, 0x1b, + 0xf6, 0xfb, 0x9d, 0xa3, 0x10, 0x76, 0x7a, 0x9d, 0x7e, 0xbc, 0xf4, 0xf4, + 0xdd, 0x9f, 0xb6, 0xb5, 0xb6, 0xef, 0x6f, 0x5e, 0xe7, 0xb7, 0x6f, 0x9f, + 0x3c, 0xef, 0xcd, 0xd6, 0xc6, 0xd6, 0xb9, 0xd7, 0xf9, 0xbe, 0x2d, 0xb3, + 0x4a, 0xac, 0x8d, 0xc6, 0xf3, 0x93, 0xba, 0x54, 0xfd, 0xed, 0x74, 0xfe, + 0x0c, 0x9f, 0xbd, 0x9b, 0xde, 0xfd, 0xba, 0xc9, 0xdb, 0xff, 0xf8, 0xba, + 0xed, 0x16, 0xfa, 0x8d, 0x23, 0x69, 0xb3, 0x14, 0xa2, 0x12, 0x36, 0x08, + 0xbc, 0x9e, 0x45, 0x62, 0x53, 0x30, 0x18, 0x28, 0x69, 0xe9, 0x88, 0x29, + 0xa8, 0xa6, 0x65, 0xc7, 0x27, 0x05, 0xc6, 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x30, 0x47, 0xc1, 0x2c, 0x30, 0x81, 0x02, 0x37, 0x31, 0xbb, 0x5f, + 0x84, 0x3f, 0x61, 0xc6, 0x95, 0x30, 0xff, 0xc1, 0x70, 0x30, 0x5a, 0x80, + 0x73, 0x06, 0x80, 0x70, 0x60, 0x0b, 0x00, 0x02, 0x22, 0x00, 0xb4, 0xc0, + 0xae, 0x02, 0xf4, 0xc0, 0x13, 0x05, 0xc0, 0xc0, 0x05, 0x15, 0x24, 0xc9, + 0x2f, 0xb5, 0x7c, 0xc2, 0xaf, 0x0c, 0x9c, 0xc0, 0x88, 0x04, 0x88, 0xc8, + 0xe5, 0x4c, 0x69, 0x68, 0xc7, 0xcc, 0x4c, 0xa5, 0xa8, 0x04, 0xe0, 0x44, + 0x0e, 0x5c, 0xd1, 0x63, 0x4c, 0x60, 0x85, 0xf9, 0x2d, 0x18, 0x03, 0x30, + 0xc0, 0xc9, 0xd8, 0xb4, 0x1f, 0x8d, 0x2b, 0x72, 0xbd, 0x4f, 0x37, 0x66, + 0x31, 0x29, 0x8a, 0xd3, 0x59, 0xc6, 0x7a, 0x1a, 0xab, 0x6b, 0x1b, 0x78, + 0x5a, 0xb1, 0x5b, 0x3a, 0x0c, 0xf3, 0xa9, 0x6a, 0x92, 0x6a, 0x38, 0x9d, + 0x44, 0xa1, 0xd4, 0x68, 0x45, 0x69, 0xfb, 0x91, 0xaa, 0x68, 0xf6, 0xb1, + 0x6b, 0x13, 0x2c, 0x91, 0xdd, 0x49, 0x24, 0x54, 0x3d, 0x34, 0x35, 0xd8, + 0xb2, 0xe5, 0x24, 0x57, 0x5b, 0x93, 0x63, 0x7b, 0x49, 0xaa, 0x93, 0x6b, + 0x59, 0xf1, 0x85, 0x12, 0x34, 0xfd, 0x9d, 0x22, 0x61, 0xd7, 0x08, 0xb2, + 0xac, 0x99, 0x81, 0xa9, 0xc5, 0x83, 0xaa, 0x20, 0x93, 0x4a, 0x4c, 0xfd, + 0xcd, 0x58, 0xb0, 0xca, 0xa7, 0x6c, 0x81, 0x04, 0xb7, 0xa9, 0x01, 0x76, + 0x28, 0x86, 0x92, 0x8b, 0x59, 0xff, 0x43, 0x08, 0xda, 0x7b, 0x5b, 0x0a, + 0xb6, 0x51, 0xba, 0xe2, 0x9a, 0xd2, 0xac, 0x6d, 0x48, 0x1c, 0xde, 0x9c, + 0x50, 0xe3, 0x04, 0xcc, 0xc8, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0xd7, + 0x2a, 0x6f, 0xc0, 0x03, 0xfb, 0x4b, 0x70, 0x6c, 0xce, 0x08, 0x11, 0x60, + 0x65, 0x6e, 0x1a, 0xc1, 0xbf, 0x04, 0x2f, 0xe9, 0x0d, 0xc1, 0xd7, 0xb8, + 0x20, 0x04, 0xf1, 0x95, 0xb8, 0xeb, 0xa2, 0x91, 0x00, 0x1e, 0x42, 0x38, + 0x48, 0x93, 0xd0, 0x01, 0x23, 0x4e, 0x52, 0xd8, 0xa1, 0xb3, 0x41, 0x6a, + 0xf6, 0x1f, 0x95, 0xdd, 0xe8, 0xd4, 0x98, 0x84, 0x13, 0xd5, 0xcd, 0x92, + 0xe5, 0xe9, 0xb2, 0x13, 0xa0, 0xbd, 0xd3, 0xfc, 0xfc, 0xcf, 0x8d, 0x7d, + 0x7c, 0x92, 0x64, 0xac, 0xee, 0x87, 0x64, 0x9e, 0x6e, 0xe8, 0xf6, 0x42, + 0x2a, 0xb9, 0xce, 0xcd, 0xb3, 0x4c, 0xfb, 0xcc, 0x99, 0xca, 0xca, 0x5f, + 0xbb, 0xad, 0xff, 0xb1, 0xdd, 0x77, 0x43, 0xa3, 0xaa, 0x2d, 0xec, 0x75, + 0x32, 0x99, 0x11, 0xa9, 0xe6, 0xd6, 0xa4, 0x53, 0x12, 0x7b, 0xb6, 0x26, + 0xc5, 0x65, 0x49, 0xa6, 0x72, 0xc5, 0x4c, 0xc5, 0x16, 0x10, 0x51, 0x84, + 0x08, 0x07, 0x9c, 0x08, 0x70, 0xc1, 0x41, 0x23, 0xb3, 0x8a, 0x08, 0x21, + 0x00, 0xcc, 0x1f, 0x61, 0x81, 0x6a, 0x03, 0x31, 0x83, 0x30, 0x01, 0x59, + 0x8b, 0xb6, 0x01, 0x68, 0x7d, 0x2a, 0x46, 0x19, 0xf8, 0x06, 0x06, 0x0a, + 0x70, 0x11, 0x23, 0xc1, 0x0f, 0x18, 0x10, 0xc0, 0x0d, 0x8b, 0x01, 0xae, + 0x60, 0x48, 0x80, 0xac, 0x60, 0x4e, 0x01, 0xca, 0x60, 0x82, 0x87, 0xc4, + 0x6a, 0xe3, 0x40, 0x9c, 0x61, 0xfc, 0x84, 0xc4, 0x60, 0x7f, 0x01, 0x96, + 0x76, 0xec, 0x19, 0x44, 0xa0, 0x50, 0x06, 0x3d, 0xa8, 0x92, 0x05, 0x3d, + 0x34, 0x45, 0x12, 0x66, 0x06, 0x7e, 0x6f, 0xa6, 0x40, 0x45, 0x19, 0xc8, + 0x2d, 0xe6, 0xde, 0x0f, 0xad, 0x34, 0xad, 0x29, 0xe3, 0x76, 0x20, 0x09, + 0x99, 0x04, 0x7e, 0x51, 0x6e, 0x5f, 0x28, 0x91, 0xe1, 0x76, 0xfd, 0x5b, + 0x3a, 0xb3, 0x66, 0xe6, 0xa8, 0x77, 0x56, 0x86, 0x9e, 0x06, 0xb0, 0xa9, + 0x03, 0x12, 0xe5, 0x18, 0x63, 0xb8, 0x8a, 0x2d, 0x28, 0xa7, 0xea, 0x61, + 0xae, 0x86, 0x34, 0x26, 0x2b, 0x96, 0x83, 0x5e, 0xe9, 0x8c, 0x87, 0xc7, + 0xe7, 0xbd, 0x64, 0x90, 0x93, 0x32, 0x82, 0x0b, 0xb1, 0x46, 0x8f, 0x5b, + 0x91, 0x85, 0x8a, 0x25, 0x0b, 0x1a, 0xb3, 0x27, 0x30, 0xe6, 0xa8, 0x93, + 0xc8, 0xa1, 0xc5, 0xac, 0xa9, 0x14, 0x8d, 0x24, 0x1b, 0x43, 0x68, 0x6c, + 0x0f, 0xba, 0x62, 0x99, 0xc4, 0x08, 0xe2, 0x2e, 0x3a, 0xb4, 0x38, 0x9a, + 0x52, 0xcb, 0x48, 0xe0, 0x65, 0x18, 0xa7, 0x9d, 0x25, 0x0a, 0xda, 0xb9, + 0xe1, 0xc5, 0x42, 0x87, 0x81, 0xda, 0x30, 0xe1, 0x10, 0x79, 0x14, 0x58, + 0x29, 0x20, 0x25, 0xd6, 0x61, 0x3e, 0x85, 0x1d, 0xf6, 0x62, 0xb9, 0x35, + 0xd3, 0x70, 0xee, 0x1c, 0x51, 0x70, 0xec, 0x3a, 0x58, 0x32, 0x32, 0xba, + 0x1a, 0xd3, 0xcd, 0x72, 0x28, 0x74, 0x80, 0x67, 0x69, 0x15, 0x45, 0x24, + 0xcf, 0x33, 0x99, 0x9d, 0xdb, 0x21, 0x24, 0x4b, 0x9c, 0x8e, 0x5e, 0xaf, + 0x3f, 0x75, 0x47, 0x32, 0x22, 0x76, 0xa1, 0x27, 0x57, 0xcc, 0x47, 0x61, + 0x13, 0x4a, 0x96, 0x11, 0xbb, 0x96, 0xe8, 0xd7, 0xca, 0xa8, 0xc8, 0xeb, + 0x66, 0xb3, 0xa8, 0xf6, 0x3d, 0x15, 0x04, 0x8c, 0xcc, 0x7b, 0x1e, 0xf4, + 0x32, 0x9d, 0x11, 0x75, 0x3a, 0x15, 0x1c, 0xe8, 0x79, 0x11, 0x5c, 0x85, + 0x77, 0x51, 0xa0, 0x65, 0x33, 0x8a, 0x8e, 0x17, 0x07, 0x17, 0x08, 0x40, + 0x21, 0xe7, 0x63, 0x0a, 0xb2, 0x07, 0x40, 0x72, 0x87, 0xdc, 0x08, 0x98, + 0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x70, 0x5c, 0x65, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x1c, 0x40, 0x75, 0x30, 0x67, 0x82, 0x0c, 0x31, 0x91, 0xde, + 0xe7, 0x3f, 0x13, 0x48, 0x40, 0x30, 0xeb, 0x41, 0xc3, 0x30, 0x62, 0x81, + 0x6c, 0x30, 0x0d, 0xc0, 0x99, 0x30, 0x17, 0x00, 0x9c, 0x06, 0x81, 0x3a, + 0x55, 0x01, 0xdc, 0xc1, 0x01, 0x03, 0x00, 0xc2, 0x8a, 0x05, 0x2c, 0xe4, + 0xeb, 0x4b, 0xe4, 0xc9, 0x9e, 0x04, 0x8c, 0xc1, 0xfb, 0x01, 0xb0, 0x17, + 0x4a, 0x1e, 0x06, 0x66, 0x43, 0xc6, 0x34, 0xea, 0x60, 0x62, 0xa8, 0x22, + 0x1c, 0x06, 0x0e, 0x4d, 0x9c, 0x6e, 0xf0, 0x23, 0xf4, 0x23, 0x0c, 0x32, + 0xf0, 0x76, 0x5c, 0xf0, 0xca, 0x67, 0x21, 0x96, 0x75, 0x52, 0x7e, 0x86, + 0x2f, 0x76, 0x37, 0x4b, 0x66, 0xaf, 0x62, 0x2f, 0x5c, 0x4e, 0xdd, 0x0d, + 0x25, 0x15, 0xf9, 0x99, 0xdc, 0x65, 0xf2, 0xab, 0x92, 0xbb, 0x5a, 0xad, + 0x49, 0xe2, 0xb2, 0x59, 0xe4, 0x48, 0x39, 0x29, 0xc6, 0x9c, 0xbb, 0x8f, + 0x9e, 0x40, 0x7d, 0xc6, 0xee, 0x4e, 0xba, 0xa1, 0x6d, 0xa5, 0x9e, 0x55, + 0xfa, 0x5d, 0x82, 0x83, 0x44, 0x6d, 0xa8, 0xa5, 0xda, 0xd1, 0xd3, 0x08, + 0x57, 0xa8, 0x4b, 0x94, 0x8c, 0x95, 0x27, 0x24, 0xc7, 0xaa, 0x44, 0xde, + 0x4b, 0xde, 0x32, 0xbc, 0x4a, 0x10, 0x40, 0xe2, 0x38, 0x1b, 0x5d, 0xea, + 0x46, 0x24, 0x4c, 0xb7, 0xf3, 0x4f, 0xa4, 0x4d, 0x59, 0x7d, 0x13, 0x52, + 0x41, 0x38, 0x20, 0x44, 0x8e, 0x8a, 0xae, 0x58, 0xbc, 0xd9, 0xae, 0x79, + 0x80, 0xc4, 0x55, 0xb8, 0xc9, 0x24, 0x1f, 0x53, 0x37, 0xad, 0xaa, 0x81, + 0x69, 0x23, 0xf3, 0x25, 0x20, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xc7, + 0x59, 0x70, 0x40, 0x03, 0xfb, 0x4b, 0x70, 0x64, 0x6d, 0xf8, 0x33, 0x20, + 0xc5, 0x6e, 0x1f, 0xf5, 0xc0, 0xfc, 0x0f, 0xf1, 0x8d, 0xc1, 0xcd, 0xb7, + 0xa0, 0x01, 0x91, 0xa1, 0xb8, 0xd2, 0xcb, 0x38, 0x44, 0x50, 0x95, 0x1a, + 0x45, 0x92, 0x1d, 0x24, 0x01, 0x45, 0x08, 0x4a, 0xa9, 0x19, 0x20, 0x00, + 0x02, 0x53, 0x76, 0xd2, 0x4d, 0x3a, 0xbb, 0x21, 0xf5, 0xbd, 0xf3, 0xfc, + 0xde, 0xcf, 0x9f, 0xfe, 0xd1, 0x3a, 0xf6, 0x30, 0xb9, 0xf6, 0x45, 0x34, + 0xb8, 0x2b, 0x05, 0x9e, 0x63, 0x32, 0xe2, 0x72, 0x6d, 0x0c, 0x4b, 0x24, + 0xb4, 0xa9, 0x17, 0xba, 0x11, 0x29, 0x57, 0x76, 0x22, 0xce, 0xd3, 0xce, + 0xc8, 0xcc, 0x49, 0xb4, 0xfb, 0xf7, 0xfb, 0x17, 0xd9, 0x57, 0xf6, 0x7e, + 0xbb, 0x35, 0xff, 0x45, 0x45, 0xab, 0xf7, 0xd3, 0x4a, 0x35, 0x50, 0x8b, + 0x54, 0xfd, 0xd5, 0xf3, 0x54, 0xa8, 0x45, 0x21, 0xce, 0x20, 0x31, 0x94, + 0xe4, 0x89, 0x8a, 0x9c, 0x5d, 0xc6, 0xb9, 0xd0, 0xe3, 0xcc, 0x2e, 0xa0, + 0x53, 0x02, 0x68, 0x18, 0x13, 0x03, 0x08, 0x42, 0x03, 0x11, 0x7f, 0x9e, + 0xf3, 0xb9, 0x1c, 0xda, 0xe3, 0x09, 0x4c, 0x30, 0xf1, 0x60, 0x64, 0x0c, + 0x06, 0xb0, 0x2a, 0xc0, 0xc0, 0x18, 0x18, 0x06, 0xa0, 0x14, 0x18, 0x0d, + 0x60, 0x03, 0x98, 0x29, 0x40, 0x7d, 0x18, 0x6d, 0xe1, 0xdc, 0x9d, 0xa7, + 0x8d, 0xa9, 0x99, 0x56, 0xe1, 0x3b, 0x98, 0x47, 0xc0, 0x65, 0x1c, 0x3c, + 0xce, 0x69, 0xc2, 0x11, 0x96, 0xc9, 0x6d, 0xe9, 0x89, 0x43, 0xc2, 0x10, + 0x29, 0x20, 0xa0, 0x20, 0x0b, 0x22, 0x58, 0x34, 0xa1, 0x93, 0x0c, 0x80, + 0x4c, 0x72, 0x14, 0x7d, 0x9e, 0x38, 0x44, 0x7a, 0x95, 0x7e, 0xef, 0x24, + 0xdc, 0x75, 0xa3, 0x2e, 0xcd, 0xf9, 0x5f, 0x2a, 0x4d, 0xd9, 0x97, 0xc9, + 0xe6, 0x6f, 0xc5, 0x67, 0xe9, 0x24, 0x9a, 0x8d, 0xe3, 0x22, 0x8a, 0x5f, + 0x92, 0xc7, 0x69, 0x0b, 0x6a, 0x6b, 0x1a, 0xfb, 0x7b, 0x29, 0x5a, 0x3c, + 0x46, 0xbd, 0xb2, 0xf1, 0xc1, 0x3e, 0xcf, 0x9c, 0x92, 0x1b, 0xb1, 0x3e, + 0xa7, 0x73, 0x02, 0xaa, 0x22, 0x5d, 0x77, 0x7e, 0x15, 0x47, 0x2a, 0x6f, + 0x0a, 0x55, 0xeb, 0x27, 0xf4, 0xe0, 0xfc, 0x97, 0x54, 0x23, 0x86, 0x6c, + 0x55, 0x69, 0x6c, 0x95, 0xad, 0x0a, 0x46, 0x8d, 0xe1, 0x50, 0xda, 0x1e, + 0x35, 0x1a, 0xfb, 0x92, 0xd7, 0xa8, 0x7a, 0xa9, 0x51, 0x2a, 0x27, 0x24, + 0x48, 0xc9, 0x81, 0xf2, 0xc6, 0xce, 0xa3, 0x3a, 0x29, 0xae, 0x5e, 0xd2, + 0xe3, 0x98, 0x9f, 0x49, 0xec, 0xa6, 0xc6, 0xea, 0x95, 0x06, 0xd6, 0x50, + 0x8b, 0x9e, 0x5c, 0xd3, 0x45, 0x78, 0x35, 0x86, 0xca, 0x8f, 0xb1, 0x7d, + 0x65, 0x0c, 0xdd, 0x6a, 0x95, 0xb6, 0x7d, 0xb6, 0xdf, 0x58, 0xf2, 0x62, + 0x4b, 0xe9, 0x9f, 0x1c, 0xcc, 0x95, 0x08, 0x10, 0x89, 0xa4, 0xeb, 0x29, + 0x4c, 0xe0, 0x90, 0x24, 0x8d, 0x99, 0x2b, 0x9a, 0xa1, 0xa3, 0x9c, 0xc2, + 0x6f, 0x3a, 0xb8, 0x61, 0x8e, 0x5a, 0x86, 0xb8, 0x0a, 0x8b, 0xc5, 0xb4, + 0xd5, 0x41, 0x93, 0x52, 0xb6, 0x67, 0x51, 0xaa, 0x5c, 0xd1, 0xb3, 0x7a, + 0xe9, 0xac, 0xdc, 0xf3, 0x44, 0xee, 0x26, 0xea, 0xe7, 0xe7, 0xbe, 0xd6, + 0xf8, 0xe2, 0xf7, 0xf7, 0x8d, 0x6f, 0x6a, 0x84, 0xea, 0x79, 0xb8, 0xb1, + 0xfd, 0xa4, 0x4a, 0x41, 0x51, 0x51, 0xc6, 0xea, 0xda, 0xc7, 0xad, 0x2a, + 0x75, 0xdc, 0x7f, 0x4b, 0x1b, 0x4a, 0x7b, 0x4c, 0x7b, 0xd3, 0x23, 0x59, + 0xb1, 0x7e, 0xed, 0xbf, 0xf6, 0xcf, 0x5a, 0x27, 0x2c, 0x97, 0x68, 0x99, + 0x78, 0xc1, 0x95, 0x06, 0xc5, 0x17, 0x02, 0x34, 0x9d, 0x23, 0x85, 0xc1, + 0x71, 0x27, 0x90, 0x59, 0x42, 0xe7, 0x94, 0x1e, 0x84, 0xe2, 0x28, 0xe4, + 0xc4, 0x14, 0xd4, 0x53, 0x32, 0xe3, 0x93, 0x82, 0xe3, 0x25, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x48, 0x01, 0xc7, 0x30, 0x41, 0x44, 0x2c, 0x30, 0x92, 0x3c, + 0xc9, 0x32, 0x95, 0x0d, 0x1c, 0x30, 0x65, 0x82, 0xd9, 0x30, 0x21, 0xc1, + 0xe6, 0x30, 0x0f, 0xc0, 0xaf, 0x30, 0x16, 0x00, 0x88, 0x30, 0x1b, 0xc0, + 0x29, 0x30, 0x07, 0x80, 0x70, 0x30, 0x12, 0xc1, 0xaf, 0x30, 0x77, 0x06, + 0x28, 0x37, 0xb2, 0xf2, 0x5c, 0x31, 0x71, 0x03, 0xf6, 0x30, 0x4f, 0xc1, + 0x5f, 0x39, 0x6b, 0xc3, 0x5b, 0x6d, 0x34, 0x44, 0x03, 0x1a, 0xaa, 0x0e, + 0x4b, 0x1e, 0x10, 0x0b, 0x8d, 0x07, 0x0f, 0xc8, 0x98, 0x4b, 0x5d, 0x71, + 0x48, 0x00, 0x42, 0x1d, 0x1f, 0x98, 0xfc, 0xae, 0x4d, 0x7d, 0x7b, 0x40, + 0x50, 0xd3, 0x02, 0x8c, 0x42, 0x9e, 0x2a, 0x4d, 0x55, 0x93, 0xdd, 0xa6, + 0xa9, 0x4f, 0x00, 0xc5, 0x2e, 0x67, 0x31, 0x49, 0x66, 0x4d, 0x62, 0x33, + 0x52, 0x5d, 0x4e, 0xf7, 0xc6, 0xac, 0xc9, 0x55, 0x65, 0x19, 0x5a, 0xb4, + 0xf1, 0x99, 0x46, 0xce, 0xdb, 0x3c, 0x92, 0x41, 0x6e, 0x71, 0x70, 0x8a, + 0xd5, 0x96, 0x5b, 0x44, 0x78, 0xc5, 0xb7, 0x94, 0x7b, 0x3a, 0xc4, 0x95, + 0x63, 0x6b, 0xa3, 0xf7, 0x93, 0xbb, 0x7b, 0x1d, 0x57, 0x1d, 0xcd, 0xb5, + 0x9b, 0x7d, 0x7e, 0x2a, 0xdb, 0x2a, 0xc4, 0xd6, 0xcb, 0xc9, 0x52, 0x73, + 0xca, 0xdb, 0x0d, 0x72, 0xd9, 0x87, 0x19, 0x63, 0x43, 0x71, 0xae, 0x1b, + 0x1e, 0xb0, 0x51, 0x4c, 0xdf, 0x67, 0x8c, 0x2d, 0x6c, 0x4e, 0x32, 0xb5, + 0xc5, 0x5f, 0x55, 0xb9, 0x33, 0x36, 0xe2, 0xd1, 0x95, 0x30, 0xa0, 0xe1, + 0xf3, 0xd5, 0x14, 0x05, 0x24, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd8, + 0x59, 0x70, 0x3f, 0x03, 0xfb, 0x7b, 0x70, 0x6a, 0x8e, 0x08, 0x11, 0x60, + 0x65, 0x6e, 0x20, 0xe9, 0xc0, 0xfa, 0x0f, 0xed, 0x8d, 0xc1, 0x8f, 0xb7, + 0xe0, 0x88, 0x91, 0x95, 0xb8, 0xd0, 0xdb, 0x1b, 0x26, 0x65, 0x8c, 0xc1, + 0x0e, 0x13, 0x8b, 0x7c, 0xf0, 0x63, 0xc3, 0x71, 0x9a, 0xd0, 0x9f, 0xaa, + 0x58, 0x99, 0x29, 0x02, 0x48, 0x2c, 0x12, 0x75, 0x62, 0xea, 0x25, 0x96, + 0x59, 0xd5, 0xcc, 0x50, 0xd2, 0x6c, 0x2a, 0xf8, 0xb0, 0x30, 0x9e, 0x38, + 0x58, 0x09, 0x98, 0xbb, 0x10, 0x02, 0xe5, 0x8d, 0x6f, 0x0b, 0x38, 0x4a, + 0x29, 0x75, 0x7f, 0x7c, 0xbf, 0x67, 0x25, 0xa6, 0x64, 0xc8, 0x22, 0x67, + 0xaf, 0x10, 0x8a, 0xef, 0x93, 0x93, 0x76, 0xa3, 0x3c, 0xf3, 0x93, 0x9d, + 0x35, 0x3f, 0x43, 0xdc, 0x63, 0x2c, 0xb2, 0x79, 0x9c, 0xcb, 0x45, 0xab, + 0x7d, 0xf2, 0x10, 0xee, 0x67, 0xb5, 0x2e, 0x76, 0x65, 0xba, 0x96, 0x9c, + 0xeb, 0xf6, 0x42, 0x79, 0x13, 0xa1, 0xd0, 0x89, 0x97, 0x47, 0x64, 0x6b, + 0x2d, 0x2c, 0xc8, 0x7b, 0xd2, 0x69, 0xd6, 0xa8, 0x8c, 0xcf, 0xa2, 0xad, + 0x18, 0x82, 0xe9, 0x72, 0x10, 0x65, 0x27, 0x10, 0x12, 0x87, 0x08, 0x30, + 0x1c, 0x70, 0x8c, 0x08, 0x73, 0x38, 0xb8, 0xc0, 0xc0, 0x10, 0x44, 0x70, + 0x78, 0x68, 0x81, 0x82, 0xe4, 0x0e, 0x49, 0x84, 0x6a, 0x1e, 0x81, 0x8d, + 0xf1, 0xcd, 0xe9, 0xee, 0xd0, 0x59, 0x81, 0x88, 0x68, 0x14, 0x29, 0x83, + 0x1a, 0x08, 0xd1, 0x82, 0x88, 0x06, 0xd9, 0x81, 0x9a, 0x03, 0x91, 0x81, + 0x48, 0x04, 0x79, 0x80, 0xa4, 0x07, 0xc9, 0x80, 0xea, 0x10, 0x31, 0x81, + 0x74, 0x3a, 0x69, 0x8d, 0x41, 0xed, 0x29, 0x86, 0xec, 0x23, 0xa9, 0x81, + 0x1a, 0x0c, 0xd1, 0x94, 0x67, 0x90, 0x3b, 0x18, 0xd9, 0x99, 0xa5, 0x83, + 0x95, 0xad, 0x0b, 0x0d, 0x05, 0x81, 0x8a, 0x14, 0xe3, 0x4a, 0x2f, 0x5e, + 0x1a, 0x2c, 0x01, 0x18, 0x20, 0x6c, 0x6b, 0x70, 0x2c, 0x01, 0x3a, 0xac, + 0x3a, 0x83, 0xde, 0xbc, 0x23, 0xb0, 0x6e, 0x18, 0xc4, 0xdd, 0xe8, 0x79, + 0xc0, 0x81, 0x32, 0x93, 0x40, 0xb6, 0xe8, 0xeb, 0xc4, 0x60, 0x0b, 0xf7, + 0xa9, 0x26, 0x26, 0xe9, 0x69, 0x6f, 0xd8, 0x74, 0x42, 0x97, 0xd5, 0x1a, + 0x2e, 0x53, 0xb1, 0x1b, 0x22, 0xaa, 0xb8, 0x10, 0x9d, 0x4e, 0xd7, 0x3c, + 0x9d, 0x71, 0x60, 0xfa, 0xd2, 0xbe, 0x16, 0x8e, 0x0b, 0x68, 0x77, 0x2b, + 0xc4, 0x89, 0x0e, 0x1f, 0x55, 0x45, 0x89, 0x2e, 0xd4, 0x6d, 0x20, 0x95, + 0x6c, 0x6d, 0x00, 0xe4, 0x62, 0xa0, 0x9c, 0x46, 0x3a, 0x26, 0x2e, 0x2c, + 0x19, 0xb0, 0xc2, 0xd2, 0xdd, 0x6b, 0x30, 0x21, 0xb1, 0xe5, 0x56, 0x65, + 0xf4, 0xcd, 0x09, 0x0d, 0xb4, 0x6c, 0xae, 0x07, 0x10, 0xee, 0xe1, 0x95, + 0x58, 0x7a, 0x33, 0xd4, 0xaf, 0xf9, 0x50, 0xf9, 0x01, 0x61, 0xc9, 0x60, + 0xbe, 0x76, 0xc2, 0xc7, 0x59, 0x93, 0x1a, 0x34, 0x62, 0x5e, 0x52, 0x72, + 0xda, 0xee, 0x89, 0x4a, 0x88, 0x8b, 0x2d, 0x3a, 0x76, 0x9c, 0xbc, 0xf2, + 0xc4, 0x30, 0xa0, 0xf4, 0x75, 0x89, 0xf4, 0x47, 0xc4, 0x21, 0xec, 0xd0, + 0xcc, 0xdd, 0x61, 0x73, 0x0c, 0x41, 0xa3, 0x83, 0xd1, 0x67, 0x84, 0x01, + 0xfc, 0x83, 0x28, 0x00, 0x73, 0xf1, 0x7f, 0x6e, 0x36, 0x96, 0x30, 0x83, + 0xee, 0x37, 0xac, 0xbe, 0x46, 0x0d, 0x59, 0x2d, 0x07, 0x04, 0x81, 0xb1, + 0x3b, 0x6f, 0x1c, 0xf7, 0x33, 0x84, 0x63, 0xb6, 0xed, 0x61, 0x1f, 0xfa, + 0x32, 0x33, 0x25, 0xb7, 0x77, 0x4a, 0x3b, 0xbb, 0x4c, 0x6d, 0x2f, 0x77, + 0xdf, 0xa1, 0xb7, 0xbe, 0x99, 0xa6, 0x99, 0xff, 0x25, 0x15, 0x66, 0x56, + 0x73, 0x91, 0xed, 0xd2, 0xb4, 0x9d, 0x26, 0x5f, 0x4a, 0xab, 0x35, 0xad, + 0x5d, 0x8a, 0xb6, 0xd2, 0xa9, 0xd1, 0xe5, 0x6a, 0x64, 0x2b, 0xb2, 0xc3, + 0xc6, 0x41, 0x51, 0xe2, 0xe3, 0x86, 0x94, 0x71, 0x87, 0x0c, 0x1a, 0x70, + 0x50, 0x41, 0x32, 0x10, 0x48, 0x45, 0x30, 0x41, 0x80, 0xe3, 0x30, 0x7b, + 0x41, 0x82, 0x31, 0xad, 0x9a, 0x67, 0x3e, 0x4b, 0x03, 0xc0, 0x30, 0xfc, + 0x00, 0xe7, 0x30, 0x59, 0x40, 0x35, 0x30, 0x16, 0x80, 0x2a, 0x30, 0x09, + 0x40, 0x45, 0x30, 0x06, 0x40, 0x68, 0x30, 0x29, 0xc0, 0xc0, 0x30, 0x32, + 0x01, 0x3d, 0x30, 0x78, 0x44, 0x22, 0x34, 0xcf, 0x25, 0x16, 0x31, 0xaa, + 0xc2, 0x6e, 0x30, 0x55, 0x80, 0xd5, 0x39, 0x16, 0x03, 0x3c, 0x21, 0x07, + 0x0b, 0x08, 0x15, 0x58, 0x72, 0x60, 0xb5, 0xf1, 0x62, 0x2a, 0x58, 0x26, + 0x96, 0x20, 0xf0, 0x13, 0x1b, 0x3d, 0xf5, 0x25, 0xd3, 0x17, 0x9f, 0xb8, + 0xb4, 0xb6, 0x86, 0xc4, 0x99, 0xf8, 0x8c, 0xc4, 0x77, 0xf3, 0xf6, 0xa6, + 0x73, 0x96, 0x72, 0x55, 0x4b, 0x28, 0xce, 0x41, 0x47, 0x0d, 0xdb, 0xb3, + 0x8e, 0x70, 0xbd, 0x5a, 0x3a, 0x5a, 0x09, 0xbe, 0x62, 0x83, 0x84, 0x56, + 0xab, 0xa9, 0x56, 0x60, 0x41, 0xb7, 0x88, 0x31, 0x58, 0xb0, 0xb1, 0xf9, + 0x9b, 0x51, 0xe8, 0x96, 0x10, 0x8c, 0x8f, 0x64, 0x0c, 0x80, 0xa8, 0x91, + 0xa6, 0x85, 0x1b, 0x66, 0x04, 0x8a, 0xa8, 0x4c, 0xc0, 0xac, 0x85, 0x56, + 0x4b, 0x21, 0x93, 0xca, 0x1f, 0xa5, 0x94, 0x8b, 0xd0, 0x37, 0x92, 0x36, + 0x82, 0x71, 0x2b, 0x07, 0xd2, 0x03, 0x30, 0x89, 0x6a, 0x22, 0x5c, 0x36, + 0x23, 0x58, 0xd1, 0x52, 0x16, 0x1b, 0x84, 0xcd, 0x2e, 0x28, 0x71, 0x88, + 0x26, 0xb3, 0x6a, 0x16, 0x7a, 0x91, 0x7a, 0x80, 0xd2, 0xc5, 0xe0, 0x56, + 0x28, 0x14, 0xa8, 0xa1, 0x72, 0xff, 0xfb, 0xd4, 0x60, 0x6b, 0x8f, 0xd7, + 0x98, 0x70, 0x3f, 0x83, 0xfb, 0x4b, 0x70, 0x6b, 0x8e, 0x08, 0x10, 0x40, + 0x68, 0x6e, 0x1d, 0xad, 0xbe, 0xfe, 0x0f, 0xed, 0x2d, 0xc1, 0xa8, 0xb7, + 0xe0, 0x44, 0x91, 0xa1, 0xb8, 0x99, 0xad, 0x27, 0x4b, 0x71, 0x52, 0x21, + 0x47, 0x13, 0x18, 0x73, 0x2c, 0x9d, 0x15, 0xc4, 0x18, 0x25, 0x29, 0x30, + 0x0e, 0x1a, 0x98, 0x2c, 0x29, 0x1b, 0x01, 0x45, 0x2f, 0x02, 0xf3, 0x1a, + 0x39, 0xaa, 0x2b, 0x49, 0x94, 0x5a, 0x43, 0x51, 0xc5, 0x2f, 0xae, 0xb2, + 0x1e, 0x0e, 0x72, 0x42, 0x22, 0xf4, 0x8a, 0x5f, 0x4c, 0xb5, 0x2b, 0xd3, + 0x9a, 0x7e, 0x57, 0xd7, 0xed, 0x7b, 0xf7, 0xbf, 0xbe, 0xd4, 0x6e, 0xd0, + 0x97, 0xc7, 0x29, 0x1a, 0x45, 0xd4, 0x7f, 0xcc, 0xdf, 0x1d, 0xdf, 0xd3, + 0xdb, 0xc3, 0x45, 0x25, 0x42, 0x35, 0xec, 0xb1, 0xd5, 0xc5, 0xc5, 0x77, + 0xc7, 0x73, 0x15, 0xaf, 0x57, 0x30, 0x90, 0xbf, 0xf3, 0xc4, 0xa7, 0x7b, + 0xfc, 0x54, 0x53, 0xbe, 0xdd, 0xef, 0x6d, 0x69, 0x2f, 0xc9, 0xd7, 0x93, + 0xb1, 0x67, 0x99, 0x7a, 0x8d, 0x91, 0xec, 0x2a, 0x50, 0x88, 0x1e, 0x92, + 0x78, 0x85, 0x01, 0xf0, 0xf3, 0x01, 0xdc, 0x58, 0x83, 0x03, 0x10, 0x02, + 0x93, 0x06, 0xdc, 0x0a, 0x33, 0x19, 0xc8, 0x54, 0x23, 0xe5, 0xc0, 0x39, + 0x13, 0x0e, 0xc8, 0x0a, 0xc3, 0x05, 0x6c, 0x08, 0xe3, 0x03, 0x70, 0x01, + 0xf3, 0x01, 0xe4, 0x01, 0xe1, 0x60, 0x33, 0x4c, 0x0a, 0x00, 0x08, 0xcc, + 0x0d, 0xd0, 0x1a, 0x8c, 0x24, 0xe0, 0x60, 0xcd, 0xb1, 0x74, 0x33, 0x4c, + 0x77, 0xa0, 0x2e, 0xcc, 0x19, 0x90, 0x08, 0x82, 0x57, 0x41, 0x56, 0x66, + 0x58, 0x14, 0x02, 0x30, 0x30, 0xb0, 0x36, 0x14, 0x9f, 0xe9, 0xc5, 0x22, + 0x74, 0x6c, 0xc9, 0x99, 0xfa, 0xc8, 0x90, 0x76, 0x86, 0xf4, 0x4a, 0x05, + 0xdd, 0x0c, 0x26, 0xbd, 0x34, 0x92, 0x7a, 0x65, 0xf5, 0x95, 0x61, 0x33, + 0x4d, 0x3d, 0x5a, 0x96, 0x7f, 0x1a, 0x49, 0xca, 0xf2, 0x19, 0x5d, 0x2d, + 0xfa, 0x97, 0xa3, 0x92, 0x99, 0x52, 0x34, 0xac, 0xfa, 0x69, 0x14, 0x5a, + 0x06, 0x10, 0x7c, 0xb5, 0x89, 0x50, 0x12, 0x36, 0x54, 0x82, 0xf2, 0xd1, + 0x2d, 0x8b, 0x78, 0x60, 0xfa, 0xe3, 0x2c, 0x0c, 0xe2, 0x1d, 0x24, 0x74, + 0xca, 0x9a, 0x24, 0xed, 0x1f, 0x3a, 0xbb, 0x8e, 0x37, 0x3d, 0x68, 0xa6, + 0x20, 0x2d, 0x48, 0x60, 0xda, 0x4b, 0xaf, 0x05, 0x10, 0xa1, 0x7f, 0x68, + 0xe1, 0x2d, 0xc2, 0xf6, 0xb6, 0x8a, 0x96, 0x07, 0xc8, 0x6d, 0x74, 0x65, + 0x0f, 0xc9, 0x23, 0x6b, 0x9f, 0x9c, 0x65, 0x35, 0x10, 0xcd, 0x43, 0x2a, + 0x34, 0x3a, 0x40, 0x2a, 0x26, 0x27, 0x32, 0xcb, 0xcd, 0x4e, 0x8a, 0x93, + 0x9d, 0x59, 0xa8, 0xa0, 0xee, 0xa9, 0x23, 0x6d, 0x06, 0x22, 0x61, 0x50, + 0xf3, 0x3c, 0x44, 0x29, 0x95, 0xa4, 0x7d, 0xb1, 0xc1, 0x05, 0x88, 0x80, + 0x32, 0x8c, 0x0a, 0x40, 0x70, 0x00, 0xc0, 0x61, 0x34, 0x88, 0x5d, 0x15, + 0x51, 0xed, 0xda, 0xae, 0x74, 0xb5, 0xdc, 0xb0, 0x4a, 0x90, 0xcc, 0xfe, + 0x93, 0xfb, 0x07, 0xdb, 0x48, 0xf1, 0xd1, 0x2f, 0x98, 0xa2, 0xbe, 0x4a, + 0xb5, 0x88, 0xf8, 0xb5, 0x89, 0x87, 0xe6, 0xea, 0x7e, 0xb6, 0xf4, 0x73, + 0xab, 0x8b, 0xb7, 0x4e, 0xe3, 0xe7, 0xe2, 0xaf, 0x45, 0xf9, 0xb1, 0xbe, + 0xff, 0x55, 0x2f, 0xd4, 0x7f, 0x7f, 0x11, 0x51, 0xf3, 0x5f, 0xdd, 0x7a, + 0xcd, 0xa3, 0xbb, 0x52, 0x2c, 0xb5, 0x57, 0x55, 0xc7, 0x15, 0x5f, 0xd5, + 0xd7, 0x5c, 0x27, 0x4d, 0xd7, 0x5f, 0xe9, 0xd3, 0xca, 0xbd, 0xbd, 0x1d, + 0x1b, 0x8d, 0xc9, 0x35, 0x50, 0x43, 0x1a, 0x51, 0x60, 0xe4, 0x87, 0x63, + 0x46, 0x8d, 0xcd, 0x16, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, + 0x2e, 0x32, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x30, 0x13, 0x00, 0xbc, 0x30, 0x62, 0x42, 0xa1, 0x31, 0x94, 0x23, + 0x44, 0x3e, 0xd3, 0x89, 0x59, 0x30, 0xe0, 0x01, 0xec, 0x30, 0x4f, 0x41, + 0x9f, 0x30, 0x29, 0x00, 0xc2, 0x30, 0x22, 0xc0, 0x9d, 0x30, 0x12, 0x00, + 0x64, 0x0c, 0x00, 0x30, 0xc0, 0xbe, 0x02, 0x78, 0xc2, 0x83, 0x0a, 0x6c, + 0xe1, 0x60, 0x48, 0xcc, 0xc7, 0xe5, 0x07, 0x7c, 0xc1, 0xa0, 0x02, 0x90, + 0xf1, 0x55, 0xcd, 0xc0, 0xe0, 0xcf, 0xcd, 0xcc, 0x54, 0x28, 0x2c, 0x24, + 0x8f, 0x69, 0x92, 0xe2, 0x50, 0x52, 0xcf, 0x4e, 0x41, 0x61, 0xc4, 0x38, + 0xcb, 0xe9, 0x9a, 0xd4, 0xa5, 0xc7, 0x83, 0xe2, 0x50, 0x45, 0xd9, 0x34, + 0x9a, 0x4b, 0xf2, 0xb6, 0xbf, 0x03, 0x4a, 0xea, 0xd4, 0x9f, 0x87, 0x27, + 0x69, 0xab, 0x50, 0xca, 0xa8, 0xdf, 0x7c, 0xa4, 0xf6, 0x69, 0x63, 0x72, + 0xb5, 0x49, 0x8f, 0x07, 0x64, 0xae, 0xb4, 0xf5, 0x2c, 0x64, 0x49, 0x8d, + 0x72, 0x37, 0xd6, 0xba, 0x7a, 0xed, 0x57, 0x94, 0x9f, 0xc5, 0x85, 0x97, + 0x4b, 0x2b, 0x0c, 0x04, 0xb4, 0x05, 0x23, 0xcb, 0x05, 0x3a, 0xbb, 0x98, + 0xa5, 0x12, 0xd7, 0x95, 0x9c, 0x9c, 0x34, 0x70, 0x53, 0x5c, 0xa9, 0x79, + 0x48, 0x84, 0x52, 0x2c, 0xaa, 0x3f, 0x27, 0x1a, 0x70, 0x33, 0xfb, 0xab, + 0x12, 0xd8, 0x6a, 0xfe, 0x48, 0x39, 0x82, 0x8b, 0x4e, 0xfd, 0xb5, 0xa7, + 0x87, 0x18, 0x67, 0x12, 0xc3, 0xad, 0x2c, 0x23, 0x6c, 0x3e, 0x3c, 0x25, + 0xa3, 0x5c, 0x92, 0xe6, 0xfe, 0x7f, 0x5b, 0x94, 0xac, 0x9e, 0xc8, 0x49, + 0x4f, 0xd0, 0x4a, 0x87, 0xb0, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd8, + 0x2d, 0x70, 0x3e, 0x83, 0xfb, 0x63, 0x70, 0x68, 0x4d, 0xc8, 0x11, 0x3c, + 0x65, 0x6e, 0x25, 0xc5, 0xc0, 0xf6, 0x0f, 0xf1, 0xed, 0xc1, 0xa9, 0xb8, + 0x20, 0x44, 0xc1, 0x95, 0xba, 0xaa, 0x8b, 0x1b, 0x40, 0x7d, 0x62, 0xe3, + 0xb5, 0x85, 0x8e, 0x75, 0x01, 0xc8, 0xd9, 0x3d, 0x4e, 0xd9, 0xa7, 0x1b, + 0x28, 0x1b, 0x4a, 0x01, 0xa9, 0x04, 0xe9, 0x35, 0x07, 0xc2, 0x60, 0x86, + 0xe0, 0xe4, 0xbd, 0x19, 0x3c, 0xc0, 0x28, 0x04, 0x0f, 0x40, 0x33, 0x00, + 0x0d, 0x5d, 0xbf, 0xf8, 0x9a, 0x8f, 0xb7, 0x16, 0xb9, 0xbd, 0xa4, 0x27, + 0x74, 0x96, 0x6e, 0x7b, 0xb9, 0x95, 0x4e, 0xc4, 0x1b, 0x97, 0x08, 0x0e, + 0x8f, 0x0c, 0xf1, 0x4d, 0xad, 0xfd, 0xdc, 0xd3, 0xe2, 0x2a, 0xa5, 0x9e, + 0x59, 0x5b, 0x2d, 0xd7, 0x6b, 0x17, 0xdc, 0xb7, 0x44, 0xca, 0x4d, 0xde, + 0xe6, 0x33, 0xe6, 0x46, 0xd4, 0xfd, 0x29, 0x29, 0xd7, 0x69, 0xeb, 0x44, + 0xd9, 0x50, 0x46, 0xee, 0xaf, 0xd1, 0xd5, 0xb2, 0xf2, 0xa5, 0x2e, 0x79, + 0x67, 0x7b, 0x99, 0xca, 0x2e, 0x94, 0x21, 0xde, 0xa5, 0x73, 0x8e, 0x75, + 0x3b, 0xaa, 0x39, 0xc3, 0x82, 0x41, 0xf2, 0x8e, 0x1e, 0xe2, 0xe4, 0x03, + 0x20, 0x1d, 0x84, 0x06, 0x87, 0xcc, 0x18, 0x60, 0x53, 0x83, 0x54, 0x60, + 0x39, 0x88, 0xc6, 0x61, 0xd2, 0x7b, 0x44, 0x74, 0x6a, 0x1c, 0x9e, 0x60, + 0xe6, 0x06, 0x3c, 0x60, 0x60, 0x81, 0xc2, 0x60, 0x18, 0x01, 0xd8, 0x60, + 0x03, 0x01, 0x5a, 0x60, 0x1b, 0x80, 0xcc, 0x60, 0x28, 0x81, 0xac, 0x60, + 0x0b, 0x03, 0x92, 0x60, 0xbd, 0x83, 0xd8, 0x6f, 0x8b, 0xd9, 0xa4, 0x63, + 0x6d, 0x0d, 0x70, 0x61, 0x1d, 0x00, 0x42, 0x6d, 0x89, 0xb0, 0x0a, 0x00, + 0x66, 0xe3, 0x70, 0x92, 0x0c, 0xc6, 0xe2, 0x33, 0x03, 0x87, 0xcc, 0x3e, + 0x27, 0x30, 0x08, 0x44, 0xc1, 0x60, 0xf3, 0x07, 0x82, 0x4c, 0x1a, 0x03, + 0x2d, 0x78, 0x20, 0x1c, 0xdb, 0xb8, 0x0f, 0x95, 0x4b, 0x4f, 0x63, 0x59, + 0x92, 0xa7, 0x22, 0xd4, 0x5e, 0x8c, 0x41, 0x38, 0x13, 0x51, 0xfc, 0x61, + 0x8c, 0x81, 0x99, 0xb0, 0xf7, 0x5e, 0x2f, 0x03, 0xb4, 0xe8, 0xdb, 0xcb, + 0x4a, 0xf3, 0x36, 0xed, 0xf5, 0x4a, 0x49, 0x24, 0xcc, 0x66, 0x01, 0x84, + 0xa1, 0x4f, 0x90, 0xf7, 0x67, 0xd3, 0xf5, 0x1b, 0x92, 0xca, 0xb9, 0x50, + 0x84, 0xaa, 0x54, 0xab, 0x6a, 0xe8, 0xee, 0x0d, 0xa9, 0xd4, 0x2e, 0x33, + 0x66, 0xd0, 0x2a, 0x47, 0xe8, 0x62, 0x89, 0xea, 0xf6, 0x91, 0x6a, 0x65, + 0x52, 0xb9, 0xe2, 0x2a, 0xcd, 0xcc, 0xb0, 0xec, 0xf1, 0xeb, 0x53, 0x6a, + 0x14, 0xe9, 0xc5, 0x75, 0x1d, 0x8e, 0xaf, 0xb1, 0x96, 0x65, 0x62, 0xed, + 0x39, 0x54, 0x31, 0x16, 0x76, 0x24, 0x58, 0x0e, 0x15, 0x12, 0x11, 0x86, + 0x38, 0x6c, 0xed, 0xf1, 0x1a, 0x91, 0xee, 0x8e, 0x98, 0x8d, 0x2f, 0x55, + 0x06, 0xf3, 0x13, 0x31, 0xce, 0xb9, 0x2e, 0xfa, 0x6e, 0x61, 0x45, 0x3d, + 0x56, 0xa3, 0x0f, 0xc4, 0x81, 0x23, 0x7c, 0x94, 0x5c, 0x34, 0x2b, 0x59, + 0xf4, 0xaf, 0xf3, 0x2b, 0x4f, 0xf4, 0x5a, 0xfc, 0x6c, 0xc3, 0x52, 0xb0, + 0xa7, 0x65, 0x73, 0x5f, 0x5c, 0x65, 0x44, 0xd2, 0xae, 0x80, 0x71, 0x21, + 0xac, 0x06, 0x9a, 0xbd, 0x35, 0x47, 0xac, 0xab, 0xa3, 0xae, 0x1c, 0x08, + 0xa4, 0x16, 0x4d, 0x99, 0x65, 0xc9, 0x65, 0x14, 0x2d, 0x66, 0xb2, 0xe0, + 0xaf, 0x29, 0x1f, 0x13, 0xe2, 0x12, 0x23, 0xa1, 0x2c, 0x20, 0xbd, 0xf7, + 0x5c, 0x5b, 0x05, 0x97, 0xe3, 0x4d, 0xd6, 0xd9, 0xcb, 0xcf, 0x58, 0xd4, + 0xcd, 0x8a, 0x75, 0x3c, 0xfe, 0xda, 0xab, 0x76, 0xc5, 0x33, 0x1d, 0x01, + 0xe7, 0x7b, 0x23, 0x66, 0x56, 0xe7, 0x32, 0xd5, 0x54, 0xc5, 0x32, 0x99, + 0x51, 0x2e, 0x74, 0x4b, 0x74, 0x66, 0x46, 0x53, 0xdc, 0x92, 0x55, 0x49, + 0xb3, 0x4e, 0x31, 0xaf, 0xad, 0xee, 0x97, 0x63, 0x31, 0xd9, 0x34, 0x6c, + 0xec, 0xbb, 0x67, 0x76, 0x2a, 0x98, 0xa9, 0x67, 0xba, 0xa5, 0xd9, 0xd1, + 0xea, 0xf5, 0x73, 0xd9, 0xec, 0xab, 0x6d, 0x90, 0xb4, 0x90, 0xa4, 0x34, + 0xe6, 0x61, 0x32, 0x8b, 0x09, 0xb0, 0xc2, 0x09, 0x31, 0x00, 0x71, 0x21, + 0x11, 0x00, 0xe3, 0xb8, 0x78, 0x35, 0x42, 0x0a, 0x60, 0x0c, 0x10, 0x90, + 0x66, 0x0c, 0x11, 0x80, 0xee, 0x4c, 0x2d, 0xfd, 0xa1, 0x8d, 0x1b, 0x92, + 0xe4, 0xcc, 0x1d, 0x70, 0xa3, 0x0c, 0x0a, 0xa0, 0x53, 0x4c, 0x00, 0x20, + 0x1d, 0x8c, 0x04, 0x30, 0x04, 0x8c, 0x01, 0x00, 0x14, 0x8c, 0x0d, 0x20, + 0x43, 0xcc, 0x02, 0x00, 0x24, 0xcc, 0x3c, 0xc2, 0x19, 0x4c, 0xf3, 0x45, + 0x75, 0xcc, 0xbd, 0x41, 0x1f, 0xcc, 0x09, 0xc0, 0x1d, 0xce, 0x58, 0xcd, + 0x31, 0x00, 0x84, 0xca, 0x03, 0x33, 0x0b, 0x85, 0x12, 0xf8, 0xc2, 0x20, + 0x87, 0x7e, 0x01, 0x68, 0xae, 0xeb, 0x25, 0x55, 0x54, 0x8a, 0x03, 0x00, + 0x83, 0x80, 0x45, 0xee, 0x40, 0x32, 0xc6, 0x44, 0x25, 0x62, 0x5d, 0x4a, + 0x62, 0xa6, 0x2c, 0x35, 0xd1, 0x87, 0x1d, 0xd7, 0x83, 0xaf, 0xf2, 0x42, + 0xc1, 0xee, 0x2c, 0x16, 0xe2, 0xba, 0xac, 0x05, 0x7c, 0xc6, 0x66, 0x29, + 0x2d, 0xd3, 0xc6, 0x2b, 0x43, 0xef, 0x1d, 0x78, 0xf1, 0x6e, 0x3b, 0x14, + 0x52, 0x5e, 0x2a, 0xb8, 0xe3, 0x7c, 0xa9, 0xb2, 0x43, 0x49, 0x75, 0xa7, + 0xca, 0x94, 0xac, 0x26, 0x55, 0xcb, 0xa6, 0x4d, 0x31, 0xb9, 0x51, 0x4c, + 0xd0, 0xd6, 0xb2, 0x76, 0x28, 0x9e, 0x66, 0x55, 0x7a, 0xb9, 0x0c, 0x60, + 0x99, 0xf3, 0x3b, 0x54, 0x37, 0xff, 0xfb, 0xd4, 0x60, 0x58, 0x8d, 0xd9, + 0x05, 0x70, 0x3e, 0x0b, 0xfc, 0x7b, 0x70, 0x57, 0xce, 0x08, 0x32, 0x2c, + 0xa5, 0x6e, 0x23, 0xbd, 0xc0, 0xf4, 0x0f, 0xe5, 0xed, 0xc1, 0x72, 0xb8, + 0x20, 0x80, 0xb0, 0x95, 0xb8, 0x28, 0x67, 0x6b, 0xf6, 0x75, 0xca, 0xa2, + 0x3a, 0x9e, 0x0b, 0x4a, 0xb2, 0xab, 0x65, 0xf6, 0x1d, 0x19, 0xdf, 0x38, + 0x1e, 0xb3, 0xc7, 0x79, 0x01, 0xc9, 0xb5, 0xcd, 0x85, 0x5b, 0x93, 0x94, + 0xe3, 0x8b, 0x09, 0x2e, 0xdc, 0xac, 0x6c, 0xab, 0x22, 0x19, 0x45, 0x3a, + 0x81, 0x3d, 0xb8, 0xea, 0xf7, 0xeb, 0x49, 0xf5, 0xc3, 0x3f, 0x88, 0x86, + 0xcc, 0xa4, 0x9f, 0x4c, 0xcc, 0x8c, 0x18, 0x56, 0x38, 0xa8, 0xef, 0x67, + 0x16, 0x76, 0x06, 0x77, 0xf6, 0x5b, 0x97, 0x6d, 0x6c, 0x3b, 0x8f, 0x01, + 0x50, 0xce, 0xab, 0x99, 0xa1, 0xcd, 0xd3, 0xd8, 0xc5, 0xca, 0x22, 0x12, + 0x75, 0xed, 0x30, 0xe2, 0xaa, 0x5d, 0x22, 0x55, 0xe8, 0x25, 0xda, 0xaa, + 0x9b, 0x55, 0x28, 0x87, 0x31, 0x7e, 0x53, 0x0b, 0x3a, 0xe8, 0x00, 0x07, + 0x5c, 0xf3, 0x69, 0x6b, 0x5b, 0x52, 0x93, 0x67, 0x86, 0x29, 0xd5, 0x6f, + 0x32, 0x36, 0x8a, 0xae, 0xcb, 0x56, 0x57, 0x67, 0x74, 0xb1, 0x18, 0x19, + 0x87, 0x46, 0x9a, 0xf5, 0xee, 0x8e, 0x45, 0x5a, 0xb3, 0x3e, 0x9e, 0xb7, + 0xdb, 0x6e, 0xbd, 0x3e, 0x74, 0x4d, 0x27, 0x77, 0xd7, 0xf7, 0x36, 0x9f, + 0xee, 0xbe, 0xbe, 0x4e, 0x89, 0xa9, 0xd9, 0x69, 0xda, 0xcf, 0x6e, 0xcf, + 0x27, 0xab, 0xfb, 0x51, 0x91, 0xd5, 0xb7, 0x67, 0xa6, 0x57, 0x2b, 0x09, + 0x55, 0xe2, 0x40, 0x57, 0x71, 0xca, 0x3c, 0x4a, 0x52, 0x30, 0x78, 0xa2, + 0x66, 0x0c, 0x48, 0x39, 0x06, 0x13, 0x30, 0x75, 0xe6, 0x3d, 0xaf, 0x10, + 0x07, 0xf1, 0x59, 0x54, 0xa6, 0x25, 0x08, 0x4c, 0xc6, 0x0d, 0x80, 0x24, + 0xa6, 0x07, 0x78, 0x14, 0x46, 0x04, 0x20, 0x0b, 0xa6, 0x01, 0xe8, 0x06, + 0x41, 0x40, 0x09, 0x0c, 0x03, 0x20, 0x18, 0x4c, 0x08, 0xd0, 0x77, 0x0c, + 0x2c, 0x41, 0xd1, 0x0c, 0x02, 0x70, 0x12, 0x4a, 0x00, 0xf1, 0x27, 0xf8, + 0x4a, 0x00, 0x50, 0x69, 0x4e, 0xfa, 0x38, 0xae, 0x44, 0x10, 0xea, 0x4a, + 0x3b, 0x2d, 0x6e, 0xf3, 0x32, 0x57, 0xd9, 0xf9, 0xdc, 0x89, 0xa7, 0x30, + 0x59, 0x7c, 0x37, 0x18, 0x7d, 0x65, 0x59, 0xb2, 0x57, 0x8d, 0xc5, 0x78, + 0x64, 0x92, 0x29, 0x53, 0xc3, 0x20, 0x90, 0xc4, 0xe1, 0xf7, 0x4e, 0x2b, + 0x04, 0xc4, 0xdf, 0x58, 0x76, 0x47, 0x55, 0xca, 0x8b, 0x21, 0x6a, 0x44, + 0xd2, 0x18, 0xdd, 0xcd, 0xd5, 0xf6, 0x07, 0xa8, 0xd7, 0x24, 0x39, 0x4e, + 0x6e, 0x1d, 0xa7, 0xba, 0x58, 0xfc, 0x99, 0xb6, 0x76, 0xb4, 0x3a, 0x2a, + 0x1f, 0x05, 0x36, 0x69, 0x9e, 0x2d, 0xaa, 0x44, 0xaa, 0x76, 0x04, 0xce, + 0x88, 0x21, 0xa4, 0xc3, 0xd7, 0x06, 0x8b, 0x11, 0xfc, 0x82, 0x52, 0x27, + 0x26, 0x34, 0xdc, 0xdc, 0xe3, 0x9f, 0xea, 0xf6, 0x04, 0xed, 0xa6, 0x60, + 0x52, 0x9a, 0x0a, 0xf4, 0x3d, 0xa4, 0x74, 0x22, 0x95, 0x73, 0x38, 0x32, + 0x21, 0xf3, 0x25, 0x54, 0x53, 0x47, 0x57, 0xce, 0x5b, 0xd9, 0x8d, 0x15, + 0x13, 0xea, 0x38, 0x1c, 0x4a, 0x44, 0x3a, 0x12, 0x69, 0xbc, 0xd0, 0x59, + 0x45, 0x41, 0x53, 0xaf, 0x9e, 0x69, 0x17, 0x29, 0x54, 0xef, 0x56, 0x19, + 0x97, 0x46, 0x5a, 0xc6, 0xcc, 0xb5, 0x0b, 0x1c, 0x35, 0x73, 0xf7, 0xac, + 0x8b, 0xb5, 0x01, 0xe5, 0x02, 0x74, 0x94, 0x35, 0x22, 0xc3, 0x4b, 0xd2, + 0x01, 0x34, 0x89, 0xd4, 0x7b, 0x0a, 0x1c, 0xe6, 0x89, 0x56, 0x36, 0xb1, + 0x24, 0xd9, 0xd8, 0xcc, 0x85, 0x79, 0xe6, 0x72, 0x98, 0xf0, 0xd4, 0x89, + 0xe3, 0x94, 0x8c, 0xb8, 0xbd, 0x13, 0x22, 0xe4, 0x51, 0xa6, 0x80, 0xd5, + 0x9c, 0x5b, 0xbc, 0xd2, 0x1f, 0x31, 0x2e, 0xcd, 0x16, 0x8a, 0x89, 0x91, + 0x97, 0x1a, 0x08, 0xce, 0xa5, 0x22, 0x32, 0x2b, 0x2e, 0xd5, 0x04, 0x8f, + 0x26, 0xac, 0x8f, 0x6b, 0xb2, 0x36, 0xef, 0xa3, 0xf7, 0xd1, 0x8e, 0x45, + 0x22, 0x34, 0xcc, 0x8f, 0xfb, 0x50, 0xba, 0x1e, 0x4b, 0x29, 0x95, 0x9b, + 0xbc, 0xf3, 0xec, 0x4a, 0xba, 0xe4, 0x23, 0xa6, 0xbd, 0x91, 0x51, 0x09, + 0x69, 0xbf, 0x4d, 0xe7, 0x67, 0xbb, 0x11, 0xa8, 0xfb, 0xd5, 0xbb, 0x49, + 0x33, 0x0f, 0x2a, 0x33, 0xb1, 0x44, 0x98, 0x60, 0xe5, 0x14, 0x38, 0x8b, + 0x98, 0xe0, 0x31, 0x04, 0xca, 0x24, 0x2b, 0x30, 0x44, 0xc0, 0xc4, 0x30, + 0x7e, 0x81, 0x41, 0x31, 0xc0, 0xd7, 0x56, 0x3f, 0x0d, 0x42, 0xc3, 0x31, + 0x06, 0xc0, 0xaa, 0x30, 0x5f, 0x00, 0x29, 0x30, 0x2e, 0xc0, 0x06, 0x30, + 0x19, 0x00, 0x04, 0x30, 0x0c, 0x40, 0x1f, 0x30, 0x04, 0x80, 0x35, 0x30, + 0x02, 0x40, 0x2a, 0x30, 0x11, 0x80, 0x7b, 0x31, 0x3a, 0xc3, 0x5b, 0x30, + 0x45, 0x00, 0x45, 0x30, 0x08, 0xc0, 0x04, 0x07, 0x35, 0x6f, 0x3d, 0x92, + 0xa9, 0x3d, 0x3b, 0x97, 0x39, 0x9c, 0x8a, 0x2d, 0x09, 0x8e, 0x40, 0x92, + 0x28, 0xdd, 0xf9, 0x45, 0xe8, 0xd3, 0x6e, 0xda, 0x41, 0xf2, 0x88, 0x71, + 0x98, 0x41, 0x71, 0xaa, 0xb4, 0x77, 0xa1, 0xf9, 0xc9, 0x64, 0xfb, 0x7c, + 0xf8, 0x5e, 0x8e, 0x49, 0xdc, 0x59, 0xfa, 0x49, 0xbb, 0x73, 0x39, 0x56, + 0x79, 0x01, 0xac, 0x48, 0x44, 0xc6, 0x18, 0xbb, 0xec, 0x1e, 0x9f, 0x8c, + 0x4f, 0x51, 0xaf, 0x13, 0xd8, 0x55, 0x6c, 0x42, 0x3a, 0xa1, 0xf1, 0x6d, + 0x3a, 0x72, 0x3a, 0x1a, 0xf3, 0x86, 0xe8, 0xeb, 0x66, 0x4e, 0xa1, 0x10, + 0xc2, 0x54, 0xa5, 0x63, 0x57, 0xff, 0xfb, 0xd4, 0x60, 0x4d, 0x0f, 0xd8, + 0x37, 0x6f, 0xbe, 0x03, 0xf8, 0x63, 0x70, 0x4f, 0xce, 0x08, 0x42, 0x3c, + 0x62, 0x6e, 0x21, 0x55, 0xc0, 0xf8, 0x0f, 0xe1, 0xed, 0xc1, 0x62, 0x37, + 0x20, 0xc8, 0x81, 0x95, 0xb9, 0x0c, 0x48, 0xc5, 0xea, 0x1d, 0x95, 0xc3, + 0xd4, 0x88, 0x08, 0x7a, 0x84, 0x7c, 0xb9, 0x83, 0x93, 0xfd, 0x7c, 0xc8, + 0x94, 0xd3, 0x0c, 0xa9, 0xb2, 0x48, 0xa0, 0x20, 0x59, 0x67, 0xc6, 0x8d, + 0x59, 0x68, 0x7b, 0x92, 0xd8, 0x96, 0xb8, 0xb2, 0xe4, 0x28, 0x10, 0x17, + 0xe3, 0x12, 0x0c, 0x9b, 0x32, 0x27, 0xb6, 0xc8, 0xe9, 0x73, 0x82, 0x21, + 0x69, 0xe4, 0x4e, 0xd9, 0x59, 0xd8, 0x96, 0x5d, 0x53, 0x62, 0xb9, 0xe5, + 0x99, 0x1f, 0x8b, 0x67, 0xb7, 0x43, 0x1d, 0x12, 0x16, 0x9a, 0x29, 0x9c, + 0x93, 0xa3, 0x25, 0x95, 0x0e, 0xaa, 0x37, 0x48, 0x27, 0x6f, 0xd8, 0xfc, + 0x4d, 0xe2, 0xa0, 0x8e, 0x47, 0x40, 0x11, 0x41, 0x91, 0xf1, 0x14, 0xb2, + 0x59, 0x1e, 0x0f, 0x47, 0x80, 0x18, 0xb0, 0x00, 0x03, 0x6a, 0x98, 0xbc, + 0x9a, 0xb4, 0x1a, 0xd7, 0x54, 0xc5, 0x31, 0x48, 0xd4, 0xbf, 0xf2, 0xb7, + 0x3e, 0xc8, 0x86, 0x7c, 0x6b, 0xd8, 0xbb, 0x71, 0x86, 0x97, 0xff, 0xfd, + 0x3b, 0xad, 0xb4, 0xed, 0xf3, 0xcd, 0xaf, 0xb6, 0xdd, 0x6b, 0xb6, 0xcb, + 0xfd, 0xbf, 0xbb, 0x7f, 0x6d, 0xe9, 0xfa, 0xb5, 0x7f, 0x5d, 0xb4, 0xfe, + 0xf5, 0xfa, 0xff, 0xde, 0x88, 0x99, 0x0d, 0x33, 0x3a, 0xd0, 0x84, 0x2a, + 0xa9, 0x4c, 0x14, 0x73, 0x98, 0x82, 0x47, 0x20, 0xb3, 0x01, 0x8b, 0x0e, + 0x1c, 0x10, 0x28, 0x1a, 0x23, 0x06, 0xd0, 0x0f, 0xa3, 0x19, 0xec, 0xad, + 0x93, 0xe8, 0xac, 0x48, 0xe3, 0x0e, 0xcc, 0x0d, 0xf3, 0x05, 0x50, 0x03, + 0xc3, 0x02, 0xc4, 0x02, 0xd3, 0x01, 0x98, 0x02, 0x03, 0x00, 0xfc, 0x02, + 0xf3, 0x00, 0xdc, 0x01, 0xf3, 0x00, 0x88, 0x01, 0x03, 0x01, 0x5c, 0x02, + 0xb3, 0x15, 0xe8, 0x2c, 0x93, 0x06, 0x24, 0x00, 0x11, 0x60, 0x1e, 0x03, + 0xd6, 0x8e, 0x0a, 0xfe, 0x16, 0xfe, 0x3c, 0xf0, 0x9c, 0xa6, 0x69, 0xa1, + 0xc9, 0x3c, 0xd4, 0xcb, 0xff, 0xbc, 0xe9, 0xe5, 0x1d, 0xe4, 0x61, 0xae, + 0xcb, 0xa5, 0x91, 0x97, 0xf9, 0xb1, 0x34, 0xb8, 0x2a, 0x25, 0x76, 0x66, + 0x76, 0x37, 0x6e, 0xe3, 0xf5, 0x75, 0xdc, 0xa0, 0xab, 0x0d, 0xd8, 0x96, + 0x41, 0x4e, 0x14, 0x33, 0x18, 0x76, 0xd8, 0xee, 0x02, 0x01, 0x1f, 0x11, + 0x5e, 0xe9, 0xaa, 0x3b, 0xf5, 0x7e, 0x18, 0x5b, 0x4f, 0xd7, 0xac, 0xac, + 0xd1, 0xb0, 0xe3, 0x1e, 0x1c, 0x65, 0xb3, 0xf0, 0xc4, 0x64, 0x8c, 0xfd, + 0xa1, 0xbe, 0xf1, 0x9a, 0xa3, 0x4b, 0x67, 0xb1, 0x1c, 0x97, 0x09, 0x55, + 0x6d, 0x93, 0xaa, 0x55, 0xb5, 0x1b, 0xc7, 0x06, 0x4d, 0x44, 0x53, 0xa1, + 0xd0, 0xd5, 0x2d, 0xed, 0xcb, 0xeb, 0x98, 0xcf, 0x12, 0x87, 0x91, 0xb4, + 0xe0, 0xa4, 0x67, 0x51, 0x23, 0x2a, 0xc8, 0xc4, 0x92, 0x4e, 0x31, 0xa7, + 0xe2, 0x36, 0x34, 0xc4, 0x82, 0x73, 0xac, 0x43, 0xb3, 0x97, 0x5d, 0xad, + 0x30, 0xb2, 0x42, 0x5f, 0x8b, 0xd5, 0xd1, 0xe8, 0xe2, 0x9d, 0x55, 0xb5, + 0xb1, 0xb2, 0xaa, 0x5e, 0xb3, 0x2d, 0x56, 0x2b, 0x82, 0xae, 0x35, 0xd3, + 0x4d, 0x51, 0xd3, 0x95, 0x61, 0x7c, 0xa9, 0x62, 0x80, 0xd3, 0x46, 0x57, + 0xcf, 0x9c, 0xdf, 0xae, 0x9e, 0xbb, 0xdd, 0x8c, 0xe6, 0x86, 0x38, 0x05, + 0x81, 0x24, 0xa2, 0x55, 0x93, 0xe9, 0x23, 0x25, 0x43, 0xad, 0x4d, 0x22, + 0xc9, 0x9c, 0xaf, 0x36, 0x89, 0x00, 0x85, 0xb4, 0x7e, 0xa5, 0x28, 0x71, + 0x07, 0x4c, 0x97, 0x4c, 0xe5, 0x44, 0xee, 0x79, 0xe6, 0x65, 0xf5, 0x86, + 0x60, 0xf1, 0x07, 0x23, 0x33, 0x52, 0x7a, 0x47, 0xe7, 0x9c, 0xe7, 0xdf, + 0x76, 0xfe, 0xa9, 0x4c, 0x9d, 0x9d, 0xec, 0xe8, 0x97, 0x5f, 0x7a, 0xed, + 0xf2, 0x76, 0xb3, 0x56, 0xfd, 0x51, 0x26, 0xba, 0x3a, 0x5e, 0x5d, 0xfb, + 0xaa, 0x7e, 0xab, 0x7d, 0xbd, 0xfe, 0x8e, 0xcd, 0xd5, 0x7b, 0x91, 0x34, + 0x42, 0x15, 0xcd, 0x3a, 0xa0, 0x74, 0x7c, 0xc5, 0x0e, 0x94, 0x86, 0x33, + 0x88, 0x08, 0x18, 0xa1, 0xd0, 0x44, 0x06, 0x0b, 0xa5, 0x58, 0x00, 0x03, + 0x00, 0x74, 0x0b, 0xd3, 0x04, 0xe0, 0x28, 0xc3, 0x15, 0x16, 0x2a, 0xf3, + 0xc9, 0x2c, 0x8e, 0xa3, 0x0b, 0x94, 0x1e, 0x13, 0x04, 0x18, 0x0e, 0x43, + 0x02, 0x24, 0x08, 0x53, 0x01, 0x70, 0x05, 0x03, 0x01, 0x0c, 0x03, 0x50, + 0x10, 0x0f, 0xe0, 0x80, 0x03, 0x4c, 0x03, 0x80, 0x30, 0x8c, 0x48, 0x31, + 0xfe, 0x8c, 0x14, 0xa0, 0x20, 0x0c, 0x02, 0xf0, 0x06, 0xcc, 0xc6, 0x2f, + 0x7b, 0x0c, 0x56, 0x08, 0x6d, 0xdd, 0x75, 0xaf, 0xc8, 0x1e, 0xac, 0xb6, + 0xd8, 0xe0, 0x58, 0x84, 0x09, 0x18, 0x79, 0x9a, 0xd6, 0x69, 0x9d, 0x4b, + 0x1b, 0x78, 0x9c, 0x68, 0x7e, 0x3c, 0xc0, 0x1a, 0x2a, 0x1b, 0xcb, 0x16, + 0xac, 0x0f, 0x13, 0x6b, 0x52, 0xb7, 0x8a, 0x0a, 0x89, 0x3c, 0xd1, 0xd7, + 0xe6, 0x08, 0x96, 0xc3, 0x10, 0xcb, 0xe7, 0x2a, 0xbc, 0xa8, 0xd1, 0x30, + 0x50, 0xb8, 0xbb, 0x43, 0x54, 0xcc, 0xec, 0xec, 0x17, 0x42, 0xdd, 0xaa, + 0xdb, 0x1b, 0x9f, 0xa5, 0x63, 0xc8, 0x79, 0xd9, 0x56, 0xc6, 0x73, 0x18, + 0xc7, 0xe2, 0x51, 0xf9, 0xca, 0x7a, 0x2c, 0xa6, 0x5f, 0xad, 0x1d, 0xc8, + 0x46, 0x67, 0x65, 0x67, 0x50, 0x28, 0xd8, 0x18, 0x11, 0x6c, 0x4b, 0xe9, + 0x26, 0xa5, 0xd3, 0x64, 0x6a, 0xa9, 0x51, 0x0a, 0x48, 0x0b, 0x85, 0x1a, + 0x7c, 0xbf, 0xac, 0x5d, 0xba, 0xff, 0xfb, 0xd4, 0x60, 0x5e, 0x0d, 0xd8, + 0xcf, 0x70, 0x3d, 0x93, 0xf8, 0x7b, 0x70, 0x5a, 0x0e, 0x08, 0x43, 0x2c, + 0xa2, 0x6e, 0x21, 0xd9, 0xc0, 0xf8, 0x2f, 0xe1, 0xed, 0xc1, 0x70, 0x38, + 0x20, 0x80, 0xf0, 0x95, 0xb8, 0x05, 0x96, 0x9b, 0x5e, 0x79, 0x24, 0x52, + 0x27, 0x14, 0x10, 0x4e, 0xb5, 0xc3, 0x7c, 0xec, 0xcc, 0x2f, 0xe1, 0xdd, + 0x52, 0xab, 0x73, 0x91, 0x73, 0xd5, 0x46, 0x93, 0x12, 0x1e, 0xb0, 0xa4, + 0x6a, 0x52, 0x26, 0xd8, 0xf5, 0x1e, 0x44, 0xb3, 0x1d, 0x9f, 0x29, 0x9e, + 0x1f, 0xcf, 0x73, 0x1e, 0x13, 0x93, 0x8b, 0x94, 0x26, 0x86, 0x45, 0xc3, + 0x71, 0xf8, 0xb4, 0xf1, 0x46, 0xba, 0x43, 0x11, 0x69, 0xb9, 0xe3, 0x28, + 0x17, 0x08, 0x44, 0x45, 0x24, 0x26, 0xb9, 0x3c, 0xe9, 0x03, 0x79, 0x88, + 0x70, 0x89, 0x13, 0x21, 0xc8, 0x7c, 0x88, 0x4b, 0x81, 0xf8, 0x37, 0x0b, + 0xec, 0x02, 0x10, 0xd4, 0x24, 0x00, 0x00, 0x1b, 0xeb, 0xce, 0x2e, 0xa3, + 0x1d, 0x0e, 0x95, 0xa5, 0x59, 0xdb, 0x9d, 0xa4, 0x63, 0x60, 0x71, 0xa2, + 0x4b, 0x16, 0x57, 0x53, 0xb2, 0x58, 0xe2, 0x01, 0xfb, 0x07, 0xc5, 0x1c, + 0x3a, 0x8e, 0x46, 0xa9, 0x9b, 0xd7, 0x67, 0x3e, 0xf6, 0xf4, 0xdf, 0xae, + 0xcb, 0xbf, 0xfe, 0xb9, 0xb9, 0x69, 0xeb, 0x7a, 0xda, 0xdb, 0xfe, 0xa9, + 0x7e, 0xdf, 0xa7, 0xd5, 0xaf, 0x46, 0xd7, 0x2d, 0x75, 0xc8, 0x95, 0xab, + 0x7a, 0x19, 0x1a, 0xeb, 0x47, 0x33, 0x4a, 0xa0, 0x88, 0xa8, 0xa8, 0xf2, + 0xa8, 0x51, 0x0a, 0x39, 0x03, 0x1c, 0x28, 0x46, 0x14, 0xc3, 0x01, 0xf0, + 0x10, 0x73, 0x00, 0x08, 0x2a, 0xc3, 0x06, 0x5e, 0x67, 0xb3, 0x51, 0x34, + 0x8c, 0x23, 0x02, 0x9c, 0x1e, 0x33, 0x00, 0xc8, 0x0d, 0x43, 0x00, 0x34, + 0x07, 0x93, 0x00, 0x10, 0x04, 0x43, 0x00, 0x1c, 0x02, 0x11, 0x80, 0x05, + 0xcc, 0x00, 0x20, 0x0d, 0x02, 0xa0, 0x71, 0x81, 0x48, 0x51, 0x30, 0x04, + 0x80, 0x91, 0x2a, 0x00, 0x38, 0x38, 0xb4, 0x8c, 0x5a, 0x71, 0x17, 0x52, + 0x56, 0xdc, 0x65, 0x70, 0x9b, 0x7f, 0x18, 0x77, 0x70, 0x84, 0xc5, 0x18, + 0x24, 0x6e, 0x1e, 0x9e, 0x91, 0xbf, 0x8f, 0xf3, 0xca, 0xfa, 0x56, 0x83, + 0x9a, 0xc3, 0xaf, 0x2d, 0xb1, 0x1d, 0x78, 0x5d, 0xe9, 0x54, 0x66, 0x38, + 0xff, 0x5e, 0x81, 0x5f, 0x7a, 0x79, 0x75, 0x99, 0x64, 0x17, 0x72, 0x92, + 0x91, 0x20, 0xca, 0xc4, 0xc0, 0xed, 0xb6, 0x75, 0x3c, 0x8d, 0x8c, 0x2d, + 0x2c, 0x34, 0x72, 0x71, 0x4d, 0xbc, 0x55, 0x45, 0x51, 0x4c, 0x76, 0x2a, + 0x97, 0xd0, 0xe4, 0xac, 0x05, 0x26, 0x93, 0x6a, 0x46, 0xf7, 0x09, 0xd5, + 0xae, 0x6f, 0xb4, 0xb0, 0xc9, 0x1a, 0x25, 0xb4, 0xf6, 0x3b, 0x02, 0x85, + 0x4e, 0xac, 0x60, 0x55, 0x17, 0x68, 0xab, 0x95, 0x15, 0xda, 0xd2, 0xbb, + 0x38, 0x58, 0x11, 0x8a, 0xa7, 0xcb, 0x95, 0x94, 0x31, 0x58, 0xca, 0x7a, + 0x1d, 0x51, 0x55, 0x8d, 0x0a, 0x65, 0x73, 0x92, 0x8a, 0x33, 0x9d, 0xd6, + 0xa5, 0x4e, 0x1f, 0xd0, 0xd1, 0x0b, 0x97, 0x70, 0x90, 0xa9, 0x5e, 0x21, + 0x89, 0xdf, 0xa6, 0x46, 0xc6, 0x68, 0x8f, 0xf2, 0x87, 0x29, 0x58, 0xe2, + 0xe1, 0xc1, 0xae, 0x33, 0xeb, 0x2d, 0xbe, 0x61, 0x59, 0x56, 0x5e, 0x45, + 0xd4, 0x8d, 0x89, 0x16, 0x48, 0x0a, 0xd5, 0xe7, 0x37, 0x17, 0x6a, 0x79, + 0xec, 0xa3, 0x99, 0x12, 0x9b, 0x88, 0xc4, 0xd0, 0x65, 0xa5, 0xdf, 0x47, + 0x69, 0x71, 0x27, 0x88, 0xb3, 0x9d, 0x1a, 0x4b, 0x5e, 0x22, 0x0b, 0x19, + 0x01, 0x63, 0x04, 0xf9, 0x26, 0xfb, 0xb4, 0xb2, 0x52, 0xf7, 0xc5, 0x27, + 0xdc, 0xdc, 0xaa, 0x4b, 0x66, 0x20, 0x56, 0xae, 0x79, 0xb2, 0x09, 0xa6, + 0x67, 0x44, 0x76, 0x80, 0x40, 0x65, 0xa4, 0x5b, 0x93, 0xfb, 0x27, 0x99, + 0x5d, 0x48, 0xca, 0xab, 0x23, 0x56, 0x62, 0x4c, 0x88, 0x9d, 0x96, 0xe7, + 0xb3, 0xec, 0xa4, 0x79, 0x5a, 0xd4, 0x5b, 0x59, 0x5a, 0x46, 0xb3, 0x79, + 0xd6, 0xa4, 0xf2, 0xa2, 0xfe, 0xf6, 0x5f, 0x45, 0xbb, 0x64, 0xeb, 0xdd, + 0x91, 0xde, 0x8d, 0x31, 0xea, 0x51, 0x88, 0x70, 0xf3, 0x9c, 0x73, 0xa1, + 0x42, 0x6a, 0x43, 0x0b, 0x14, 0x51, 0xd4, 0x82, 0x43, 0xc6, 0xb8, 0xaa, + 0x30, 0x38, 0x81, 0x39, 0x30, 0x3e, 0xc2, 0xda, 0x30, 0xb3, 0xaa, 0x81, + 0x34, 0xe2, 0x08, 0xd8, 0x30, 0x72, 0x01, 0xf5, 0x30, 0x27, 0x40, 0xce, + 0x30, 0x10, 0x00, 0x71, 0x04, 0x80, 0x60, 0x60, 0x06, 0x80, 0x0a, 0x60, + 0x02, 0x80, 0x08, 0x60, 0x18, 0x00, 0x5e, 0x60, 0x2a, 0x81, 0xb0, 0x62, + 0x48, 0x0f, 0x50, 0x60, 0xa8, 0x80, 0xec, 0x60, 0x17, 0x00, 0x36, 0x6b, + 0x32, 0x9a, 0xd3, 0x28, 0x1c, 0x35, 0x2d, 0x61, 0x0e, 0x03, 0xf8, 0xf7, + 0xc6, 0x23, 0xf6, 0x27, 0x6d, 0x40, 0xd0, 0xdd, 0x56, 0xe3, 0x3b, 0x0d, + 0x65, 0x08, 0x79, 0x1d, 0xe9, 0x6b, 0xa9, 0x12, 0x74, 0x63, 0x2e, 0x04, + 0x5a, 0x49, 0x21, 0x86, 0x62, 0x2e, 0x0c, 0x85, 0xe3, 0x81, 0xee, 0xb5, + 0xb8, 0x1b, 0xe7, 0xe3, 0xd1, 0x0b, 0x32, 0x75, 0x1b, 0xf7, 0x36, 0x04, + 0x44, 0x08, 0x13, 0x1d, 0xf1, 0x99, 0xd5, 0x8c, 0x8c, 0xaa, 0xd4, 0x2c, + 0xeb, 0x7c, 0x8f, 0x4e, 0x5b, 0x32, 0xaa, 0x8d, 0x96, 0x64, 0xb2, 0xb6, + 0xcc, 0x58, 0x7b, 0x34, 0x54, 0x13, 0xcc, 0x31, 0x48, 0x94, 0x91, 0x50, + 0xe1, 0x0c, 0xe9, 0x91, 0x74, 0xf5, 0x66, 0xda, 0x80, 0xc0, 0xaf, 0x57, + 0xb2, 0x3f, 0x66, 0x6c, 0x2d, 0xa9, 0x4c, 0x3f, 0x3f, 0x67, 0x57, 0x4c, + 0xda, 0xcc, 0x87, 0xb1, 0xa7, 0xff, 0xfb, 0xd4, 0x60, 0x5c, 0x8d, 0xd8, + 0x91, 0x70, 0x3d, 0x83, 0xf8, 0x7b, 0x70, 0x56, 0xae, 0x08, 0x31, 0x18, + 0x25, 0x6e, 0x22, 0xf9, 0xc0, 0xf6, 0x4f, 0xe1, 0xed, 0xc1, 0x6e, 0xb8, + 0x20, 0x84, 0x91, 0x15, 0xb8, 0x3d, 0x0f, 0xf5, 0xe6, 0xd5, 0xf3, 0xa1, + 0x75, 0x77, 0x37, 0x87, 0xab, 0x44, 0xa7, 0x5b, 0x6a, 0x78, 0xe0, 0x57, + 0x51, 0x5d, 0x16, 0x3e, 0xe6, 0x82, 0xfd, 0x5c, 0xb8, 0x70, 0x70, 0x9b, + 0xd9, 0xc5, 0x1c, 0x80, 0x57, 0xc4, 0x53, 0x24, 0x55, 0xac, 0x90, 0x5d, + 0x21, 0x8c, 0xd7, 0xb3, 0x8a, 0x10, 0xca, 0xf9, 0x4e, 0x8b, 0x5f, 0x78, + 0xa7, 0xa4, 0x15, 0x12, 0x1e, 0xa7, 0x84, 0xa0, 0x64, 0x27, 0x77, 0x74, + 0xcb, 0x15, 0x91, 0x0c, 0x3a, 0x89, 0x79, 0xfa, 0x73, 0x9f, 0xe7, 0x91, + 0xf8, 0x60, 0xbb, 0x7c, 0x54, 0xa6, 0x54, 0x23, 0xcc, 0x6d, 0xb8, 0x0a, + 0x99, 0xf1, 0x1b, 0xed, 0x06, 0x1c, 0xfa, 0x44, 0xb7, 0x1e, 0x86, 0x64, + 0x23, 0x31, 0x23, 0xd4, 0xf7, 0x22, 0x18, 0x0a, 0xec, 0xda, 0x12, 0x6d, + 0x0a, 0x80, 0x69, 0x4e, 0xa8, 0xde, 0xb4, 0x75, 0x64, 0x45, 0xe6, 0x37, + 0xfa, 0x37, 0xd5, 0xda, 0xaf, 0xad, 0x79, 0x56, 0x95, 0x9b, 0xa5, 0xf9, + 0x92, 0xde, 0xed, 0x54, 0x26, 0xb6, 0x53, 0x5e, 0xab, 0x6d, 0xd5, 0x9d, + 0xae, 0xba, 0x16, 0x6f, 0x4b, 0xbe, 0x97, 0x9d, 0xe4, 0x1a, 0x88, 0xe1, + 0xc4, 0x39, 0xcc, 0xf4, 0x31, 0x51, 0xdc, 0xe2, 0x68, 0x1c, 0x02, 0xca, + 0x35, 0x64, 0x30, 0x3d, 0x81, 0x01, 0x30, 0x5e, 0xc2, 0x08, 0x31, 0x3c, + 0x20, 0x67, 0x3a, 0x27, 0x85, 0xe0, 0x30, 0xbb, 0x81, 0x4d, 0x30, 0x41, + 0xc0, 0xa8, 0x30, 0x20, 0x80, 0x4d, 0x30, 0x10, 0xc0, 0x22, 0x30, 0x05, + 0x00, 0x01, 0x79, 0x04, 0x80, 0x2e, 0x30, 0x18, 0x80, 0x2f, 0x31, 0x8d, + 0x42, 0xef, 0x30, 0x6a, 0x00, 0x19, 0x1a, 0x02, 0x38, 0x9e, 0x28, 0xb6, + 0xa4, 0x1e, 0x09, 0x03, 0xdc, 0xef, 0xc5, 0xdf, 0xc8, 0xa3, 0x59, 0x7e, + 0xd7, 0x94, 0xec, 0xa1, 0x32, 0x60, 0xe8, 0x84, 0xa1, 0x88, 0xca, 0x19, + 0xc4, 0x83, 0xe5, 0xb1, 0xf6, 0x7a, 0xb0, 0xcf, 0x94, 0xc3, 0x55, 0x66, + 0x29, 0x6a, 0xc3, 0x69, 0x20, 0xa5, 0x89, 0x1e, 0x6e, 0x6f, 0x3d, 0x56, + 0x95, 0x2e, 0xa2, 0x8d, 0x3a, 0x70, 0x13, 0xcb, 0x2f, 0x39, 0x59, 0x5b, + 0x5c, 0xdf, 0xca, 0x69, 0xc6, 0x27, 0x50, 0x5d, 0x1f, 0xed, 0x4c, 0xca, + 0x16, 0x09, 0x10, 0xe9, 0x92, 0xed, 0x16, 0x78, 0x73, 0xc7, 0x46, 0x21, + 0xf6, 0x66, 0x56, 0x6e, 0x3a, 0xb9, 0x90, 0xe7, 0xc9, 0xf8, 0x7f, 0xb8, + 0x2a, 0x50, 0xe4, 0x25, 0x65, 0xa1, 0x86, 0x2a, 0x29, 0x04, 0xb6, 0x6f, + 0xbc, 0x8d, 0xa6, 0x88, 0x94, 0x76, 0xa4, 0x3d, 0x5a, 0x55, 0xd1, 0x66, + 0x8c, 0xd0, 0xa7, 0x8e, 0xc2, 0x7f, 0x98, 0x73, 0x48, 0xd0, 0x7f, 0x97, + 0xd7, 0xcb, 0xa8, 0xca, 0xe8, 0x6a, 0xf7, 0x8b, 0x82, 0xf6, 0xab, 0x78, + 0xa1, 0x99, 0x76, 0xcc, 0x80, 0x8c, 0x89, 0x91, 0x68, 0xf8, 0x65, 0x54, + 0xbd, 0x86, 0x7e, 0x4c, 0xb8, 0x56, 0x94, 0xaa, 0x77, 0x6d, 0x2a, 0xb6, + 0x97, 0x35, 0xe4, 0x86, 0x18, 0x5d, 0xc4, 0x52, 0x5d, 0x74, 0xc6, 0xe9, + 0x54, 0xfa, 0x2d, 0x67, 0x51, 0x28, 0xd9, 0x92, 0x4a, 0xc8, 0x8b, 0x95, + 0xd3, 0x4a, 0x8d, 0x0d, 0x4e, 0xd2, 0x02, 0x96, 0x22, 0x1e, 0x5f, 0x4c, + 0x54, 0x14, 0x54, 0x5b, 0xc2, 0xf8, 0x9e, 0x5c, 0xb4, 0x32, 0x0d, 0x37, + 0xc0, 0xc4, 0x31, 0x0e, 0x62, 0x03, 0x75, 0x92, 0xdb, 0x51, 0xbe, 0xe4, + 0xb7, 0x2d, 0x86, 0xea, 0x91, 0x28, 0x93, 0x27, 0xba, 0xbf, 0xdf, 0x53, + 0x90, 0x94, 0x75, 0x32, 0xd3, 0xa2, 0xd0, 0xe8, 0xd5, 0xdd, 0x1d, 0x3a, + 0x36, 0x99, 0x98, 0xed, 0xb3, 0xd1, 0xae, 0xfb, 0x26, 0x6a, 0x59, 0x17, + 0x74, 0x67, 0xee, 0xdf, 0xdc, 0xed, 0x4f, 0xe7, 0x3b, 0x5d, 0xe5, 0x6d, + 0x2a, 0xf6, 0xde, 0x9d, 0x29, 0xad, 0xf7, 0x96, 0xc5, 0xb2, 0x65, 0x72, + 0x9d, 0x16, 0x84, 0xca, 0xec, 0xca, 0x61, 0x21, 0xa2, 0x05, 0x18, 0x1d, + 0x0f, 0x09, 0x45, 0xce, 0x51, 0xc1, 0xc1, 0x79, 0x81, 0x84, 0xc2, 0x87, + 0x55, 0x60, 0x0c, 0x0c, 0xa0, 0x21, 0xcc, 0x18, 0xb0, 0x2e, 0x0c, 0x59, + 0x23, 0xc7, 0xcf, 0x05, 0x20, 0x4b, 0x8c, 0x33, 0xc0, 0x12, 0x47, 0x82, + 0x46, 0x12, 0x04, 0x94, 0xc0, 0x5b, 0x00, 0x04, 0xc0, 0x30, 0x00, 0x50, + 0x64, 0x01, 0x40, 0xc0, 0x00, 0x0c, 0x05, 0xd0, 0x1e, 0x4c, 0x5a, 0xc1, + 0x12, 0x4c, 0x16, 0xb0, 0x0f, 0x4c, 0x03, 0x60, 0x01, 0x81, 0xef, 0x2e, + 0x82, 0x6b, 0xa9, 0x7b, 0x90, 0xbb, 0xe0, 0x88, 0x75, 0xdb, 0x6b, 0x37, + 0x29, 0x59, 0xa4, 0x03, 0x2c, 0x8a, 0x37, 0x0d, 0x47, 0x9a, 0xed, 0xf8, + 0x7d, 0x6a, 0xa9, 0x72, 0x68, 0x24, 0x3b, 0xb4, 0xc6, 0x57, 0xb3, 0xca, + 0xe5, 0xb9, 0xab, 0xf2, 0x27, 0x36, 0xcd, 0x58, 0x9a, 0xf1, 0x65, 0xd6, + 0x9c, 0x26, 0xcf, 0x00, 0xc3, 0x17, 0x1d, 0xc8, 0xfc, 0xab, 0x25, 0x16, + 0x14, 0x6d, 0x11, 0xfc, 0x55, 0x2e, 0x88, 0xdb, 0x06, 0xdc, 0x66, 0x3c, + 0xa6, 0x3e, 0x12, 0xab, 0x73, 0x2a, 0xd1, 0xc4, 0xe2, 0x0c, 0x56, 0x63, + 0x9e, 0x65, 0x5b, 0x9d, 0x94, 0x89, 0x49, 0x17, 0x2e, 0x93, 0xab, 0x6f, + 0x1c, 0x15, 0x29, 0xe5, 0xc2, 0x19, 0x86, 0xda, 0x36, 0xab, 0x5c, 0x13, + 0xab, 0x97, 0x23, 0xf1, 0x77, 0x63, 0x95, 0xc5, 0x9c, 0xe2, 0x6b, 0x63, + 0x44, 0x1d, 0x6d, 0xfa, 0x53, 0xff, 0xfb, 0xd4, 0x60, 0x5c, 0x0d, 0xf8, + 0xb9, 0x70, 0x3d, 0x8b, 0xf8, 0x7b, 0x70, 0x57, 0xed, 0xe8, 0x31, 0x3c, + 0x65, 0x6e, 0x61, 0xc9, 0xc0, 0xf8, 0x4f, 0xbd, 0xed, 0xc1, 0x5e, 0xb7, + 0xa0, 0xc0, 0x80, 0x95, 0xb9, 0x22, 0x9b, 0x9a, 0x8b, 0x7c, 0x64, 0x43, + 0x83, 0xd6, 0xd6, 0xe5, 0x0a, 0xe5, 0x91, 0x85, 0xeb, 0xe6, 0x23, 0x51, + 0xc9, 0x14, 0x9f, 0x50, 0x61, 0x5f, 0x54, 0xf9, 0x62, 0x55, 0x39, 0x31, + 0xb0, 0x1d, 0xec, 0xb0, 0xa7, 0x6d, 0x7e, 0xe5, 0x15, 0x58, 0xe6, 0xcb, + 0x32, 0x39, 0x19, 0x74, 0x7a, 0xb0, 0xed, 0x56, 0xab, 0xaa, 0x8d, 0x37, + 0x10, 0xe6, 0xe4, 0x66, 0x24, 0x53, 0xb4, 0xb8, 0x43, 0x7e, 0xa9, 0x6b, + 0x59, 0x42, 0x14, 0x30, 0x6e, 0xda, 0xe6, 0x9f, 0x63, 0x2a, 0x1c, 0xdb, + 0xec, 0x88, 0x53, 0x1f, 0x4a, 0x24, 0x93, 0x0a, 0xa9, 0xaa, 0x3a, 0x4a, + 0x03, 0xf1, 0xc4, 0x6d, 0xb8, 0x05, 0x75, 0xed, 0x4f, 0x78, 0x5a, 0xd6, + 0x66, 0x87, 0x8c, 0xf3, 0xc8, 0x7b, 0x9f, 0xee, 0x4e, 0x8e, 0x45, 0xcc, + 0xd0, 0xfa, 0x8c, 0x46, 0x8c, 0x50, 0xb9, 0x3b, 0x1d, 0xeb, 0xe6, 0x67, + 0x1d, 0xa8, 0xbd, 0x13, 0x6f, 0x49, 0x95, 0xf9, 0x1d, 0x29, 0x6f, 0xa7, + 0xbf, 0x5e, 0xfc, 0xfd, 0x6e, 0xb4, 0x5a, 0xd3, 0x25, 0xed, 0xa7, 0xce, + 0xde, 0xfa, 0x36, 0xfd, 0x1f, 0xe9, 0x5d, 0x35, 0xad, 0xcd, 0xdd, 0xd1, + 0x66, 0x8d, 0x19, 0x47, 0x89, 0x89, 0x39, 0x8e, 0x52, 0x0e, 0x17, 0x95, + 0xcc, 0x12, 0x28, 0x81, 0x85, 0xc5, 0x05, 0x18, 0x85, 0x0c, 0x06, 0x60, + 0x00, 0x0c, 0x11, 0xb0, 0x36, 0xcc, 0x45, 0x42, 0xa9, 0x0e, 0x77, 0x20, + 0xea, 0xcc, 0x27, 0x40, 0x2b, 0x8c, 0x0d, 0xb0, 0x0e, 0x4c, 0x06, 0x60, + 0x08, 0x8c, 0x03, 0x30, 0x07, 0x4c, 0x01, 0xc0, 0x07, 0x8c, 0x00, 0xc0, + 0x07, 0x00, 0x20, 0x13, 0x98, 0x04, 0x00, 0x5d, 0x18, 0x5e, 0xa3, 0x1a, + 0x18, 0x0e, 0x40, 0x36, 0x18, 0x00, 0x60, 0x0b, 0x80, 0x58, 0x2d, 0xe5, + 0xc1, 0x69, 0x4e, 0xc0, 0xf8, 0xc9, 0x6c, 0x51, 0x23, 0xd5, 0x4a, 0x58, + 0xea, 0x04, 0x78, 0xd1, 0x37, 0x07, 0x29, 0x7c, 0x38, 0x55, 0xe3, 0xb7, + 0x4a, 0xdb, 0xb6, 0x9e, 0xbb, 0x55, 0x1e, 0x8a, 0xb4, 0x52, 0x27, 0x4a, + 0x85, 0x4b, 0x23, 0x7a, 0x2c, 0xb9, 0xa8, 0x4b, 0xfb, 0xd3, 0x59, 0xb8, + 0x71, 0x2e, 0xe4, 0xbc, 0xcc, 0xaa, 0x98, 0x8d, 0xca, 0x58, 0xe9, 0xe5, + 0xd2, 0xd2, 0xa1, 0x85, 0xb6, 0x75, 0xcb, 0x12, 0x85, 0x8f, 0x2d, 0xba, + 0x54, 0xb6, 0xbf, 0x6a, 0x61, 0x6d, 0x83, 0x16, 0x13, 0xbd, 0xae, 0x17, + 0x08, 0x5b, 0xa4, 0x25, 0x5c, 0xa6, 0x61, 0x69, 0x6e, 0x4e, 0xdd, 0xf3, + 0x2c, 0xac, 0x68, 0xa7, 0x50, 0x9a, 0xe1, 0x43, 0x67, 0x3f, 0x52, 0x09, + 0x65, 0x73, 0x0c, 0x07, 0xcb, 0xa6, 0xc6, 0xd6, 0x2b, 0xb2, 0xc6, 0x7f, + 0x24, 0xca, 0x97, 0x27, 0xd1, 0xde, 0x9d, 0xcd, 0x51, 0xd7, 0x2b, 0x97, + 0xaa, 0xc5, 0xb5, 0x33, 0x0e, 0xe4, 0x6a, 0x6d, 0x3a, 0x5e, 0xa3, 0xd9, + 0xd7, 0x0c, 0x6a, 0xc8, 0x1d, 0x61, 0x1a, 0xc2, 0x91, 0x38, 0x9b, 0x18, + 0x7a, 0xa9, 0xa5, 0x6f, 0x7b, 0x66, 0x54, 0xe1, 0x89, 0x66, 0x2b, 0x6b, + 0x5b, 0x63, 0x83, 0x1a, 0x42, 0x0c, 0x7d, 0xb6, 0xe5, 0x85, 0x2a, 0xa9, + 0x5f, 0x91, 0x0f, 0x6f, 0x8c, 0xe5, 0x0d, 0x58, 0xdb, 0x19, 0xa9, 0x5a, + 0x74, 0x51, 0xe3, 0x32, 0x8d, 0x42, 0x59, 0x31, 0x13, 0xe6, 0x0b, 0xa1, + 0x91, 0x59, 0x81, 0x97, 0xa3, 0x8c, 0x11, 0x4c, 0x77, 0x6b, 0xe9, 0x3a, + 0x61, 0x6d, 0x73, 0xcf, 0xa2, 0xd8, 0xd9, 0xc4, 0x8c, 0x07, 0x05, 0xb1, + 0x54, 0x8c, 0x2d, 0xb2, 0x19, 0x23, 0x25, 0xf7, 0x27, 0xbf, 0xd6, 0xb9, + 0xf6, 0x6b, 0x75, 0x59, 0x2c, 0xff, 0xdf, 0x74, 0xef, 0x75, 0x3f, 0xa3, + 0x4a, 0xd4, 0xdb, 0x3b, 0x6d, 0x75, 0x57, 0xbd, 0xba, 0x7d, 0xaa, 0xd5, + 0x6a, 0x2b, 0x2d, 0x58, 0xb9, 0xa8, 0xac, 0xfa, 0xdc, 0xc8, 0xcf, 0x76, + 0x53, 0x09, 0x30, 0xb1, 0x94, 0x7c, 0x70, 0xa9, 0x8e, 0x1c, 0x71, 0x70, + 0x88, 0x99, 0x40, 0x51, 0x72, 0x28, 0x0b, 0x81, 0x24, 0x60, 0x59, 0x83, + 0xae, 0x61, 0xa5, 0x33, 0x98, 0x70, 0x30, 0x0c, 0xda, 0x60, 0xe2, 0x02, + 0xac, 0x60, 0x4e, 0x81, 0x2a, 0x60, 0x26, 0x00, 0x9c, 0x60, 0x1c, 0x80, + 0x56, 0x60, 0x13, 0x00, 0x2c, 0x3c, 0x02, 0x81, 0x80, 0x22, 0x00, 0xb1, + 0x80, 0x1c, 0x06, 0x89, 0x81, 0xb6, 0x38, 0xc9, 0x81, 0x40, 0x03, 0xa9, + 0x80, 0x06, 0x00, 0xe0, 0xa0, 0xd6, 0x55, 0x2c, 0x5e, 0x2b, 0x44, 0xc0, + 0x59, 0x36, 0x0e, 0xb4, 0x7d, 0xe9, 0x77, 0x71, 0x88, 0x36, 0x49, 0xfb, + 0x0c, 0xe6, 0x5a, 0xfb, 0xc8, 0xdd, 0x78, 0xe6, 0xef, 0xc2, 0x1f, 0xf7, + 0x99, 0xff, 0x79, 0x9b, 0x9c, 0x62, 0x2f, 0x0e, 0x59, 0x6b, 0x33, 0x14, + 0xf0, 0xba, 0xb7, 0xe8, 0x22, 0x53, 0x70, 0x1b, 0xfd, 0x3f, 0x18, 0x3d, + 0x65, 0xa9, 0xde, 0xe6, 0x97, 0x56, 0x69, 0x0b, 0x4e, 0x39, 0x1c, 0x2a, + 0x26, 0x78, 0x0f, 0x09, 0xd9, 0xce, 0x8b, 0x34, 0x37, 0x1e, 0xa5, 0x93, + 0xea, 0xa1, 0xe8, 0x79, 0xce, 0x69, 0xb0, 0x1c, 0x2f, 0x5f, 0xbf, 0x8a, + 0x98, 0x70, 0x51, 0x39, 0x1c, 0xd1, 0x64, 0x53, 0x31, 0x44, 0x42, 0xdb, + 0x9b, 0xf1, 0x34, 0x47, 0x4e, 0xda, 0x9b, 0x97, 0x36, 0x56, 0x5d, 0x46, + 0xf5, 0x21, 0x2c, 0x35, 0xa7, 0xcc, 0x2a, 0x08, 0x6c, 0xca, 0x26, 0x74, + 0xc2, 0xfb, 0x8b, 0xb5, 0x69, 0xff, 0xfb, 0xd4, 0x60, 0x5f, 0x8d, 0xd8, + 0xa4, 0x70, 0x3d, 0x83, 0xf8, 0x7b, 0x70, 0x50, 0xae, 0x08, 0x31, 0x18, + 0x25, 0x6e, 0x26, 0x31, 0xc0, 0xf0, 0x4f, 0xe1, 0xed, 0xc1, 0x91, 0x38, + 0x20, 0x84, 0x91, 0x95, 0xb8, 0xcc, 0xd4, 0xc7, 0x75, 0x0d, 0x15, 0x06, + 0xd2, 0xb4, 0xf1, 0x4f, 0xc4, 0x46, 0x4c, 0xf5, 0xa8, 0xe8, 0x8b, 0x44, + 0xfa, 0x1c, 0x88, 0x3e, 0xe5, 0x9d, 0x13, 0x53, 0x2a, 0xca, 0xd7, 0x95, + 0x7f, 0x1c, 0xe7, 0x54, 0x3b, 0xde, 0x9e, 0x37, 0x2d, 0xa2, 0xcf, 0xf5, + 0x94, 0x92, 0x35, 0x82, 0x57, 0x25, 0x7a, 0xe5, 0x89, 0x24, 0xd3, 0x76, + 0x15, 0x5b, 0xf6, 0x64, 0xfa, 0x48, 0xfc, 0x57, 0x69, 0xcc, 0xb3, 0x4b, + 0x16, 0xd2, 0x04, 0x8e, 0x1d, 0x0a, 0xb5, 0x69, 0x1a, 0x43, 0x48, 0x51, + 0x4e, 0x5d, 0xc7, 0x40, 0xe6, 0x14, 0xbe, 0x00, 0x46, 0x42, 0x8a, 0xd9, + 0x4e, 0xa3, 0xbb, 0x1b, 0xd1, 0xf9, 0xb1, 0x8c, 0xa2, 0xd3, 0x12, 0x22, + 0x90, 0x53, 0x35, 0xf0, 0xbc, 0xb9, 0xf5, 0xb4, 0xca, 0xc5, 0xf4, 0x6c, + 0xea, 0xbb, 0xfb, 0xf5, 0x73, 0x5d, 0xaf, 0xde, 0x8c, 0xcb, 0x35, 0x59, + 0xdf, 0xfd, 0x25, 0xf4, 0x54, 0x7e, 0xd4, 0xa5, 0x9a, 0x4b, 0x7e, 0xb5, + 0xe6, 0x7e, 0xc5, 0x5b, 0xa3, 0x2f, 0x3f, 0xd9, 0x2a, 0xf6, 0xd8, 0xbb, + 0xf6, 0x76, 0x21, 0x91, 0xcc, 0x53, 0x3a, 0x10, 0xa8, 0x41, 0x81, 0xa6, + 0x0d, 0x38, 0xc3, 0xb2, 0x86, 0x04, 0xa8, 0x28, 0x06, 0x01, 0x20, 0x65, + 0xa6, 0x08, 0x95, 0xb4, 0x06, 0x8e, 0xc1, 0x48, 0x66, 0x01, 0xc0, 0x47, + 0x46, 0x00, 0x68, 0x22, 0x60, 0x40, 0x26, 0x80, 0x20, 0x2b, 0x98, 0x02, + 0x80, 0x18, 0x05, 0x40, 0x10, 0x21, 0x00, 0xac, 0xc0, 0x3d, 0x03, 0x08, + 0xc5, 0x44, 0x1c, 0xa0, 0xc1, 0xa1, 0x01, 0x78, 0xc0, 0x40, 0x00, 0x6c, + 0xe7, 0x04, 0x89, 0x60, 0xd1, 0x96, 0x6e, 0xe4, 0xa8, 0x63, 0x2d, 0x83, + 0xba, 0xbc, 0xdc, 0xa6, 0x64, 0xcb, 0x15, 0xda, 0xb1, 0xa9, 0xd2, 0x01, + 0x51, 0xc9, 0x3e, 0x22, 0x80, 0xe3, 0x2a, 0x83, 0x4b, 0x49, 0xd6, 0xad, + 0x08, 0x2f, 0xaa, 0x42, 0x30, 0x27, 0x62, 0x4c, 0xe0, 0xb3, 0x39, 0x02, + 0xb2, 0x3b, 0x50, 0xb4, 0xa4, 0x7f, 0x5c, 0x34, 0x83, 0x77, 0xc2, 0xa1, + 0x70, 0x1a, 0x53, 0x58, 0x50, 0x38, 0x99, 0xc8, 0x78, 0xc4, 0x21, 0x50, + 0x91, 0x4b, 0x63, 0xcd, 0x4f, 0x75, 0x0a, 0x2d, 0x44, 0x75, 0x1a, 0x6c, + 0x88, 0x53, 0xa1, 0xba, 0x4c, 0x95, 0x65, 0x89, 0x5d, 0x19, 0x3d, 0x29, + 0x39, 0x52, 0xa7, 0xce, 0xd5, 0x01, 0xe0, 0x4e, 0xe4, 0x46, 0x68, 0xb1, + 0x92, 0x37, 0x33, 0xd4, 0xda, 0x70, 0x45, 0x1e, 0x44, 0xec, 0xf9, 0x88, + 0x6e, 0xe4, 0x58, 0x58, 0x4b, 0x83, 0x42, 0xa4, 0xe8, 0x6a, 0x4f, 0xc2, + 0x3c, 0x90, 0x4d, 0xc6, 0x8a, 0x11, 0x46, 0xa1, 0xbe, 0x4f, 0x14, 0x85, + 0xc0, 0xd3, 0x88, 0x79, 0xb6, 0xad, 0xa8, 0x1f, 0xac, 0xa9, 0x4d, 0x76, + 0xd4, 0xb4, 0xc9, 0x8a, 0x1a, 0x42, 0xea, 0xe6, 0x42, 0x91, 0xa9, 0x48, + 0x68, 0xb2, 0x70, 0x77, 0x97, 0xe7, 0xa5, 0xb6, 0xef, 0x55, 0x8a, 0x24, + 0x2d, 0xb8, 0xb7, 0x44, 0x17, 0x76, 0xc8, 0x50, 0x1b, 0x94, 0x4e, 0x24, + 0xc2, 0x65, 0x32, 0x65, 0x08, 0x8a, 0x3d, 0x06, 0x4b, 0xb8, 0x2a, 0x93, + 0x7c, 0xcb, 0x3f, 0x49, 0x6d, 0x4f, 0x35, 0xa4, 0x52, 0x10, 0x5d, 0xed, + 0x57, 0x37, 0x36, 0x22, 0x7e, 0x0d, 0xa3, 0x11, 0x10, 0x61, 0x0d, 0xc0, + 0xae, 0x90, 0x42, 0x05, 0x2c, 0xee, 0x34, 0x11, 0x02, 0xea, 0x93, 0x17, + 0x22, 0xda, 0x5d, 0x19, 0x04, 0x54, 0x76, 0x09, 0x13, 0x07, 0x7e, 0x97, + 0x27, 0x7d, 0xad, 0x53, 0x51, 0xf2, 0x94, 0xcc, 0x88, 0xde, 0xf9, 0x52, + 0x2b, 0x17, 0xad, 0xe6, 0x15, 0x08, 0xca, 0xee, 0x53, 0x91, 0xcd, 0x7c, + 0xe4, 0x49, 0xdc, 0xd2, 0xda, 0x4e, 0x88, 0x6a, 0x37, 0x5d, 0x8b, 0xba, + 0x35, 0x11, 0x14, 0xee, 0xdf, 0x22, 0x59, 0xde, 0xe7, 0x66, 0x56, 0xd7, + 0x67, 0x6b, 0xbc, 0x9b, 0xaa, 0xac, 0x8a, 0xf5, 0x74, 0x5e, 0x7a, 0x2d, + 0x1e, 0xb5, 0x9a, 0xfd, 0x1f, 0x4a, 0x68, 0x64, 0x44, 0x43, 0xd5, 0x54, + 0xaa, 0xec, 0x34, 0xaa, 0xb9, 0x59, 0x10, 0x82, 0x44, 0x41, 0x12, 0xa0, + 0xa3, 0x2b, 0x90, 0x60, 0xc5, 0x1f, 0x40, 0x11, 0x50, 0x04, 0x07, 0x1a, + 0x29, 0x60, 0x0c, 0x08, 0x70, 0x33, 0x8c, 0x0b, 0xe0, 0x79, 0x4c, 0x24, + 0x57, 0x32, 0x8d, 0x0e, 0x31, 0x77, 0xcc, 0x16, 0x10, 0x50, 0x8c, 0x07, + 0x00, 0x20, 0x4c, 0x02, 0xd0, 0x0f, 0x0c, 0x00, 0x40, 0x08, 0x47, 0x00, + 0x02, 0x96, 0x82, 0x80, 0x3e, 0x30, 0x12, 0x00, 0x00, 0x31, 0x10, 0x40, + 0xa1, 0x16, 0x09, 0x10, 0x48, 0x05, 0x21, 0xe6, 0xa4, 0x9c, 0x1c, 0xda, + 0x5b, 0x9e, 0x8d, 0xbb, 0xd3, 0xb0, 0x34, 0x56, 0x7a, 0x1e, 0xa6, 0x82, + 0xe0, 0x9a, 0x47, 0xed, 0xa2, 0xd9, 0x66, 0xb2, 0x95, 0x2e, 0x8c, 0x52, + 0xc3, 0xa9, 0xee, 0xcb, 0x5a, 0xbc, 0x52, 0x32, 0xea, 0xc9, 0x22, 0x50, + 0xb6, 0xae, 0xff, 0x40, 0xd4, 0xb4, 0xee, 0xa4, 0xd4, 0x52, 0xb4, 0xec, + 0xba, 0x35, 0xc8, 0x75, 0x89, 0x02, 0xa3, 0x34, 0x4f, 0x64, 0xa3, 0xf5, + 0x34, 0xe9, 0xf6, 0x24, 0xf2, 0x39, 0x0d, 0x52, 0xca, 0x89, 0x2d, 0xec, + 0x97, 0x78, 0xf1, 0x89, 0x2c, 0x96, 0x94, 0xfd, 0x3d, 0x14, 0x88, 0xc3, + 0xf1, 0x7c, 0xfc, 0x6f, 0x3f, 0xec, 0x87, 0xaf, 0x2e, 0x98, 0xd3, 0xd8, + 0x6a, 0x4e, 0x35, 0xa9, 0x55, 0xff, 0xfb, 0xd4, 0x60, 0x50, 0x0d, 0xf8, + 0x7d, 0x70, 0x3d, 0x8b, 0xf8, 0x7b, 0x70, 0x5a, 0x8e, 0x08, 0x32, 0x20, + 0x65, 0x6e, 0x22, 0xed, 0xc0, 0xf4, 0x0f, 0xe1, 0xed, 0xc1, 0x56, 0xb8, + 0x20, 0xc0, 0x80, 0x95, 0xb8, 0xca, 0x36, 0xe6, 0xd2, 0xfe, 0x49, 0x9b, + 0xa7, 0x73, 0x77, 0x85, 0x6f, 0x3a, 0xd4, 0x1a, 0x39, 0x1c, 0x90, 0x97, + 0xe5, 0xd1, 0x42, 0x89, 0x78, 0xb1, 0x1d, 0x3a, 0xa6, 0x68, 0x57, 0xae, + 0xa2, 0x45, 0x68, 0x89, 0x01, 0x58, 0xea, 0x1a, 0x25, 0x3f, 0x3a, 0xea, + 0x46, 0xf5, 0xc3, 0x2d, 0x21, 0x28, 0xd8, 0xe8, 0xad, 0x3d, 0xe3, 0xd9, + 0x8d, 0xb5, 0xb5, 0x5d, 0x13, 0x5a, 0xb2, 0xaa, 0xa8, 0x7a, 0xd2, 0x46, + 0x16, 0x99, 0x92, 0x14, 0x61, 0xec, 0x2d, 0x6d, 0x8d, 0xb1, 0xa5, 0xa9, + 0xf0, 0xa5, 0x95, 0xc2, 0x2b, 0xa7, 0x25, 0x41, 0xea, 0xaf, 0xdc, 0x68, + 0xd5, 0x6d, 0x44, 0x99, 0x0a, 0xda, 0x30, 0x1d, 0x04, 0x41, 0x0f, 0x4c, + 0x2c, 0x18, 0xad, 0xc9, 0x43, 0x68, 0x5c, 0x87, 0x93, 0x20, 0x00, 0x04, + 0x1a, 0x07, 0x19, 0x07, 0xc1, 0x28, 0xf5, 0x12, 0xbb, 0xaf, 0x94, 0x77, + 0xef, 0x2f, 0x69, 0xd8, 0x49, 0x8b, 0x38, 0x8c, 0x6e, 0x7f, 0xdd, 0x29, + 0x72, 0xea, 0x47, 0xff, 0xee, 0xc7, 0xaf, 0x67, 0xd1, 0x7b, 0xad, 0xcc, + 0xfb, 0xa9, 0x0c, 0xfd, 0x19, 0x7a, 0x72, 0x35, 0x96, 0xda, 0xb1, 0x6d, + 0xa6, 0xdd, 0x1a, 0xd4, 0x6b, 0x1b, 0xbd, 0xca, 0x85, 0xbd, 0x7b, 0xb9, + 0x98, 0xeb, 0x44, 0x4b, 0x2f, 0x75, 0xd9, 0x3d, 0x1b, 0x54, 0x49, 0x96, + 0x95, 0xa9, 0x48, 0x73, 0x8b, 0xca, 0x72, 0x9c, 0x6a, 0x8c, 0x21, 0x07, + 0x04, 0x58, 0x6a, 0x18, 0x15, 0xe0, 0x59, 0x18, 0x25, 0x80, 0xb9, 0x98, + 0x81, 0xab, 0xe0, 0x1c, 0x3d, 0x62, 0x0f, 0x98, 0x4c, 0x60, 0x73, 0x18, + 0x1a, 0x40, 0x36, 0x98, 0x0b, 0x60, 0x14, 0x18, 0x05, 0xc0, 0x02, 0x8b, + 0x00, 0x24, 0x94, 0xa1, 0x60, 0x06, 0x8c, 0x03, 0x70, 0x1d, 0x4c, 0x3f, + 0xc0, 0xfc, 0x4c, 0x0e, 0x10, 0x0e, 0xc5, 0x80, 0x38, 0x0c, 0x3a, 0x9a, + 0x29, 0x9e, 0x4f, 0xe3, 0x3a, 0x56, 0x0a, 0x29, 0x7b, 0xb5, 0x4b, 0x28, + 0x5f, 0x6d, 0xe4, 0x77, 0x09, 0xb7, 0x5a, 0x2b, 0x17, 0xc6, 0x21, 0x6d, + 0xb3, 0x48, 0x9f, 0x9b, 0x34, 0xce, 0x8c, 0x5e, 0x2d, 0x3a, 0xc9, 0xe4, + 0x94, 0x14, 0xd3, 0x0d, 0xfd, 0x96, 0x41, 0x24, 0x83, 0x24, 0x72, 0x7b, + 0xf2, 0x26, 0x57, 0x25, 0xa0, 0x55, 0xa5, 0x99, 0x89, 0xc2, 0x09, 0x85, + 0x9e, 0xe8, 0xd5, 0xcc, 0x04, 0xf3, 0xe5, 0x74, 0x87, 0x56, 0xcb, 0xe2, + 0x4d, 0xca, 0x76, 0x63, 0xa5, 0x7a, 0x1b, 0x3a, 0xbd, 0x56, 0xa1, 0x53, + 0x5d, 0x12, 0xbb, 0xbb, 0x39, 0x8e, 0xc8, 0xc1, 0x11, 0x26, 0x84, 0xab, + 0x72, 0xb0, 0x8c, 0x4c, 0x30, 0xaa, 0x5b, 0x62, 0x30, 0x14, 0xeb, 0x27, + 0x02, 0x91, 0x9c, 0xe6, 0x47, 0xc1, 0x5b, 0x73, 0x64, 0x3a, 0xd3, 0xd5, + 0x86, 0x7e, 0x96, 0xd5, 0x1a, 0xe1, 0x09, 0x2f, 0xc5, 0xdd, 0x39, 0x53, + 0x92, 0x3b, 0x79, 0xf4, 0x4c, 0x55, 0x8f, 0xd2, 0x92, 0xdd, 0x4c, 0x99, + 0x3a, 0x52, 0x4e, 0x0a, 0xe6, 0xd5, 0xd3, 0x23, 0xb4, 0x26, 0x8c, 0x8f, + 0x34, 0x84, 0xe8, 0xb8, 0xb2, 0x2b, 0xae, 0xad, 0x8c, 0x78, 0x29, 0x95, + 0xcb, 0x27, 0x22, 0x39, 0x95, 0xf2, 0x61, 0xfb, 0x7c, 0x74, 0xc2, 0xb5, + 0xd2, 0xcb, 0x6b, 0x93, 0x2a, 0x12, 0xce, 0xad, 0x3c, 0xde, 0xab, 0xd8, + 0x4c, 0xb7, 0xcc, 0x68, 0xb4, 0x49, 0xcc, 0xb4, 0xa7, 0x36, 0x50, 0xe3, + 0xac, 0xa4, 0x20, 0xa8, 0xa2, 0x48, 0xa7, 0x94, 0xd9, 0x5f, 0x41, 0x18, + 0xaa, 0x34, 0x2d, 0x56, 0x68, 0x13, 0x10, 0x46, 0x2c, 0xf8, 0x31, 0x61, + 0x9a, 0xea, 0x39, 0x9d, 0xb2, 0x18, 0x2d, 0x5e, 0x19, 0xb4, 0x47, 0x08, + 0xd4, 0x42, 0x73, 0x04, 0x08, 0x6b, 0x09, 0x9a, 0x3d, 0xd4, 0xe9, 0xaa, + 0xad, 0x24, 0x55, 0xb3, 0x2d, 0xd6, 0xed, 0xd3, 0x37, 0x75, 0xea, 0xbc, + 0xad, 0xda, 0xd2, 0xbd, 0xff, 0x7b, 0x95, 0x27, 0x47, 0xb6, 0xe9, 0x46, + 0xae, 0x96, 0x99, 0xb6, 0xf2, 0xab, 0xd7, 0xa2, 0xaf, 0x4b, 0x54, 0x94, + 0xad, 0x55, 0x9e, 0x44, 0xf4, 0x4b, 0x14, 0xf8, 0x89, 0x47, 0x1c, 0x29, + 0x09, 0x15, 0x0c, 0x8a, 0xb9, 0x07, 0x20, 0xf2, 0x2a, 0x59, 0x00, 0x03, + 0x01, 0xdc, 0x04, 0x63, 0x04, 0x18, 0x04, 0x33, 0x0f, 0x4c, 0x7f, 0x23, + 0x87, 0x04, 0x00, 0xe0, 0x81, 0x18, 0x8a, 0x01, 0x80, 0x26, 0x03, 0x08, + 0x20, 0x05, 0x80, 0x70, 0x05, 0xe9, 0x12, 0x98, 0x66, 0x01, 0x10, 0x05, + 0xc6, 0x13, 0x58, 0x78, 0x06, 0x09, 0x68, 0x03, 0xa6, 0x01, 0x60, 0x00, + 0x01, 0x3e, 0x11, 0x21, 0xd4, 0xae, 0x98, 0xd0, 0x3c, 0x90, 0xc4, 0xb2, + 0xa4, 0xfe, 0x44, 0xab, 0xee, 0x79, 0xb3, 0x93, 0xc6, 0xc3, 0x04, 0xb1, + 0xd5, 0x4a, 0x48, 0x0f, 0x77, 0x5b, 0x39, 0x6e, 0x4f, 0x0b, 0xb0, 0xba, + 0x94, 0xe2, 0x4b, 0x10, 0xb8, 0x15, 0xc6, 0x32, 0x1c, 0x39, 0x18, 0xcd, + 0x33, 0x1a, 0xf0, 0x4f, 0x37, 0x23, 0xb8, 0x5a, 0x8a, 0xb5, 0xa7, 0xf2, + 0x19, 0x19, 0x65, 0x69, 0xc1, 0xd0, 0x8a, 0x5c, 0x97, 0xf4, 0x8c, 0x26, + 0xc3, 0xcd, 0xfb, 0x14, 0xc9, 0x77, 0x4d, 0xce, 0x97, 0xd9, 0xb0, 0xc8, + 0x92, 0x2f, 0x4f, 0x0f, 0x63, 0x02, 0x2a, 0xa9, 0xc0, 0xc2, 0x7e, 0x88, + 0x5a, 0xb2, 0x69, 0x72, 0x84, 0x2b, 0x8e, 0x66, 0x03, 0xfe, 0x2a, 0x2d, + 0x1c, 0xd4, 0xd0, 0xd4, 0x9e, 0xff, 0xfb, 0xd4, 0x60, 0x52, 0x0d, 0xd8, + 0x8b, 0x70, 0x3d, 0x93, 0xef, 0x7b, 0x70, 0x5e, 0x0e, 0x08, 0x20, 0x18, + 0x25, 0x6e, 0x21, 0x89, 0xc0, 0xf6, 0x2f, 0xbd, 0xed, 0xc1, 0x55, 0x38, + 0x20, 0xc4, 0x60, 0x89, 0xb8, 0x56, 0xa5, 0x1b, 0x98, 0x98, 0x58, 0x18, + 0x57, 0x4d, 0x55, 0x3c, 0x51, 0xc8, 0x4b, 0x63, 0x22, 0xa9, 0x2e, 0xa5, + 0x30, 0x59, 0x5e, 0x9b, 0xc8, 0xe3, 0xab, 0x71, 0xdf, 0xab, 0x97, 0x94, + 0x68, 0xa7, 0x8c, 0x26, 0xcb, 0x2d, 0xda, 0xd9, 0x20, 0x9a, 0x4b, 0x84, + 0x3c, 0xec, 0x3c, 0x99, 0x21, 0x2b, 0xa1, 0x9d, 0x4c, 0xce, 0x6a, 0x8a, + 0x2b, 0x4f, 0xe7, 0xaa, 0x74, 0xda, 0xb5, 0xfe, 0xa3, 0x42, 0x2f, 0x2e, + 0x97, 0x6c, 0xb3, 0xa3, 0xa8, 0x9d, 0x5c, 0x29, 0x93, 0xe9, 0x89, 0x95, + 0x8f, 0x2b, 0x5d, 0xc2, 0x71, 0x79, 0x44, 0x26, 0x32, 0x3a, 0x38, 0xbd, + 0x63, 0x22, 0x11, 0xf2, 0x9d, 0x25, 0x85, 0x0d, 0x56, 0xca, 0x90, 0x6f, + 0x1f, 0x45, 0xf9, 0xc0, 0xe3, 0x12, 0x85, 0xe9, 0xaa, 0xe6, 0x0a, 0xa3, + 0x69, 0x1a, 0xf5, 0xb0, 0x36, 0x46, 0x70, 0xb0, 0x02, 0x61, 0x0a, 0x03, + 0x5c, 0x14, 0x47, 0xb3, 0x37, 0xcd, 0x48, 0xe7, 0x26, 0xd5, 0x24, 0x75, + 0x6a, 0x55, 0xb6, 0x47, 0xca, 0x6f, 0xa9, 0xb6, 0x74, 0xce, 0x8c, 0xf7, + 0xa5, 0xf6, 0x97, 0x67, 0x4d, 0xae, 0xe9, 0x54, 0xb9, 0xcb, 0x54, 0xa7, + 0x47, 0xca, 0xbb, 0x33, 0x74, 0x7e, 0xd5, 0x6f, 0x64, 0x6f, 0x23, 0x1d, + 0x2d, 0x64, 0x7a, 0x2b, 0xd9, 0x52, 0x41, 0x1b, 0x9c, 0x48, 0x85, 0x51, + 0xa2, 0xe5, 0x34, 0xa0, 0xa8, 0x12, 0x2b, 0x87, 0xca, 0x28, 0x22, 0x62, + 0x00, 0xe0, 0xa0, 0xa1, 0x84, 0x30, 0x0e, 0x40, 0x13, 0x30, 0x32, 0x80, + 0xca, 0x30, 0xd0, 0xca, 0x89, 0x37, 0x8c, 0x43, 0x3e, 0x30, 0x73, 0xc0, + 0x9b, 0x30, 0x27, 0x80, 0x38, 0x30, 0x13, 0x40, 0x21, 0x30, 0x0a, 0x00, + 0x0c, 0x30, 0x02, 0xc0, 0x1b, 0x02, 0x80, 0x1e, 0x42, 0x00, 0x50, 0x10, + 0x04, 0x93, 0x01, 0x28, 0x0d, 0x73, 0x00, 0x90, 0x00, 0x40, 0x70, 0x03, + 0xe4, 0xb4, 0xae, 0x56, 0xe9, 0xc5, 0xa1, 0x77, 0x44, 0x5a, 0xa5, 0xca, + 0x12, 0xea, 0x19, 0xa5, 0x1c, 0x9c, 0x1c, 0xaf, 0x4e, 0x36, 0xc5, 0x42, + 0xa8, 0xdc, 0x66, 0x3f, 0x57, 0x10, 0x0e, 0xf1, 0xcc, 0xab, 0x34, 0x0f, + 0xa5, 0x22, 0xb4, 0xcc, 0x9d, 0xc5, 0x19, 0x32, 0xe9, 0x3c, 0xc4, 0xa9, + 0x3c, 0x25, 0x68, 0x8e, 0xcf, 0x3c, 0x45, 0xe7, 0xd6, 0x4c, 0x2a, 0x63, + 0xb1, 0x22, 0xd9, 0x0d, 0x26, 0xc4, 0xe2, 0x6d, 0x31, 0x1d, 0x80, 0xee, + 0x3a, 0x1b, 0xce, 0x78, 0xca, 0x4e, 0xce, 0x88, 0x49, 0xa1, 0x8d, 0x55, + 0x51, 0x2c, 0xa1, 0xe9, 0xe7, 0xb2, 0xaa, 0x60, 0xa2, 0x14, 0x4b, 0xce, + 0x94, 0x88, 0xa7, 0x52, 0xb8, 0xc7, 0x4d, 0xac, 0xbd, 0x54, 0xbc, 0x80, + 0x97, 0x85, 0x09, 0x0c, 0x6c, 0x5f, 0x6e, 0x52, 0x75, 0x22, 0x1f, 0x05, + 0x3e, 0x8e, 0x8a, 0xad, 0x74, 0x84, 0xab, 0xda, 0xd5, 0x49, 0x06, 0x18, + 0x58, 0x51, 0x59, 0x9b, 0x2b, 0x2d, 0x0d, 0xd6, 0x4b, 0xc4, 0x73, 0x7e, + 0xcd, 0x01, 0x8d, 0x0a, 0x39, 0x23, 0xae, 0x95, 0x15, 0x57, 0xd9, 0xf4, + 0xce, 0x70, 0x5b, 0xd7, 0x77, 0x6b, 0x7a, 0xf1, 0x4e, 0xe9, 0xb9, 0x57, + 0x1d, 0x8d, 0xc1, 0x8e, 0x44, 0xea, 0xd6, 0x9f, 0xab, 0xe2, 0x4a, 0xe9, + 0xa5, 0xe2, 0x16, 0xd4, 0xac, 0x43, 0x9a, 0x8d, 0x7c, 0xc1, 0xa9, 0xec, + 0x9f, 0x51, 0xb4, 0x44, 0x57, 0x14, 0x15, 0x39, 0xd1, 0xc5, 0xc9, 0x60, + 0xe1, 0x2c, 0x06, 0x4b, 0x02, 0xb0, 0x18, 0x07, 0x1f, 0x09, 0x76, 0x6c, + 0x81, 0x2f, 0x95, 0x3e, 0x4e, 0x83, 0x08, 0xcc, 0xcb, 0x14, 0x8a, 0x41, + 0x02, 0x98, 0x00, 0xc6, 0x60, 0x1a, 0x32, 0xf9, 0x05, 0x1f, 0x5d, 0xb3, + 0xf9, 0xdb, 0xbf, 0xcb, 0xaf, 0xd5, 0x1b, 0xbd, 0x95, 0xdf, 0x5a, 0x9d, + 0x69, 0x6f, 0x6b, 0x6e, 0xca, 0x99, 0x6c, 0x92, 0x33, 0xfd, 0xfb, 0x64, + 0xf7, 0x5b, 0xe4, 0x4f, 0x4e, 0xe4, 0xbb, 0x6d, 0xbb, 0x2e, 0xb7, 0xd4, + 0xa6, 0x73, 0xb1, 0x67, 0x44, 0x95, 0x0a, 0x87, 0xb9, 0xc8, 0x57, 0x1d, + 0xc1, 0x08, 0x0c, 0xc4, 0x12, 0x24, 0x20, 0xb0, 0xae, 0x01, 0x00, 0x2e, + 0x01, 0x80, 0x18, 0x03, 0x49, 0x80, 0xbc, 0x0a, 0x71, 0x84, 0x02, 0x97, + 0x19, 0xa8, 0xfe, 0x24, 0xa1, 0x82, 0x12, 0x07, 0x69, 0x80, 0xa8, 0x02, + 0xf1, 0x80, 0x3e, 0x01, 0x69, 0x80, 0x1c, 0x00, 0xf1, 0x80, 0x12, 0x00, + 0x58, 0x28, 0x01, 0xf2, 0x20, 0x00, 0x13, 0x08, 0xc0, 0x60, 0x01, 0x91, + 0x33, 0x99, 0x69, 0x9c, 0xca, 0xf1, 0x72, 0xc0, 0xd0, 0x4f, 0x8e, 0xab, + 0x46, 0x39, 0x4b, 0x81, 0x26, 0x32, 0xd3, 0xc6, 0x5a, 0xe8, 0xee, 0x2c, + 0xd4, 0x0b, 0x6c, 0x4f, 0x15, 0x69, 0x02, 0x6e, 0x7e, 0x1d, 0x24, 0x68, + 0xcd, 0x4f, 0xa1, 0xec, 0x28, 0xa5, 0xc1, 0xca, 0xca, 0x5c, 0x94, 0x11, + 0x93, 0xc8, 0xf4, 0x2d, 0x15, 0x09, 0x0f, 0x52, 0xa7, 0x15, 0xbb, 0xd2, + 0x2d, 0x5a, 0xbe, 0xe0, 0x9c, 0x54, 0x2a, 0x57, 0x68, 0x5a, 0xe5, 0x6e, + 0x22, 0x78, 0xdc, 0x8a, 0xb8, 0x69, 0x59, 0x3a, 0xe7, 0x39, 0x18, 0xd8, + 0xcd, 0x06, 0x67, 0xa8, 0x75, 0x4e, 0x18, 0xa7, 0x13, 0x92, 0x1c, 0xe4, + 0xc0, 0x85, 0xac, 0x9b, 0x8a, 0xe4, 0x73, 0x5a, 0x89, 0x70, 0xcc, 0xad, + 0x71, 0x8d, 0x19, 0x0d, 0x8a, 0xe6, 0xc3, 0x09, 0x48, 0xba, 0x66, 0x5f, + 0x85, 0x31, 0xea, 0xbe, 0xa2, 0xff, 0xfb, 0xd4, 0x60, 0x57, 0x8d, 0xd8, + 0x8f, 0x70, 0x3d, 0xab, 0xef, 0x7b, 0x70, 0x60, 0xae, 0x08, 0x21, 0x18, + 0x45, 0x6e, 0x21, 0x3d, 0xc0, 0xf6, 0x4f, 0xbd, 0xed, 0xc1, 0x59, 0xb8, + 0x20, 0xc4, 0x20, 0x95, 0xb8, 0x8c, 0xfd, 0x4c, 0xb9, 0x63, 0x42, 0x6b, + 0x19, 0x95, 0x2f, 0x02, 0x45, 0x2d, 0x55, 0xeb, 0xa4, 0xe2, 0x73, 0x31, + 0x18, 0x0d, 0x56, 0xf6, 0x04, 0xe3, 0xb4, 0xbb, 0x81, 0xe4, 0x8b, 0x8a, + 0xaf, 0x52, 0x4e, 0xfd, 0x5b, 0x3a, 0x4e, 0x0b, 0x7b, 0x01, 0xa0, 0x86, + 0x4a, 0x8e, 0x34, 0x61, 0xa7, 0x17, 0xf2, 0x89, 0x91, 0x61, 0x52, 0xda, + 0xa6, 0x67, 0x30, 0x91, 0xf3, 0x43, 0x54, 0xc6, 0x70, 0x48, 0x25, 0xa4, + 0x50, 0xab, 0x16, 0x5c, 0x62, 0xb1, 0x76, 0xc5, 0x73, 0x9a, 0x19, 0x01, + 0xfc, 0x53, 0xe9, 0xc1, 0x09, 0x30, 0x4c, 0x75, 0x3c, 0x68, 0x28, 0xe6, + 0x44, 0x28, 0x52, 0x02, 0x08, 0x3d, 0x61, 0x86, 0xc0, 0x5f, 0xa1, 0xe6, + 0xf9, 0x20, 0x76, 0x2a, 0xae, 0xf8, 0xb6, 0x74, 0x52, 0xe8, 0xce, 0xc8, + 0xea, 0xca, 0x7e, 0x46, 0x95, 0xdc, 0xb4, 0x90, 0xf6, 0x0f, 0x34, 0xcf, + 0xe9, 0xfb, 0xd9, 0x66, 0x7b, 0x11, 0xdb, 0xaf, 0x75, 0x99, 0x6f, 0xa3, + 0xdb, 0xed, 0xb1, 0x55, 0x9d, 0xd1, 0x9f, 0x75, 0x54, 0x49, 0xea, 0xad, + 0x47, 0xa1, 0xfb, 0x11, 0x29, 0x93, 0x49, 0xec, 0x55, 0x7b, 0x23, 0xb3, + 0x31, 0xe7, 0x62, 0xbe, 0x4d, 0x33, 0xb7, 0xd9, 0x9d, 0x34, 0x53, 0xba, + 0x87, 0x2d, 0x29, 0x04, 0x18, 0xce, 0xea, 0xc0, 0xc2, 0x62, 0xa4, 0x13, + 0x05, 0x1c, 0x43, 0x8a, 0x9c, 0x50, 0x87, 0x41, 0x5b, 0x94, 0xc0, 0x4e, + 0x02, 0x24, 0xc0, 0x1f, 0x05, 0xb8, 0x55, 0x58, 0x73, 0x14, 0xc4, 0x4b, + 0x63, 0x00, 0x50, 0x0f, 0x71, 0x90, 0x1a, 0x0b, 0x00, 0x19, 0x8e, 0x00, + 0x28, 0x5d, 0x76, 0x56, 0xac, 0x0f, 0x90, 0x40, 0x20, 0xc4, 0xc0, 0x14, + 0x41, 0x84, 0x04, 0xe2, 0x39, 0xec, 0x9e, 0x38, 0x93, 0xea, 0x5c, 0x22, + 0x5c, 0x90, 0xc5, 0x5c, 0x63, 0xdc, 0xde, 0x0e, 0x75, 0xb0, 0x60, 0x11, + 0x44, 0xbc, 0xb1, 0x0f, 0xc2, 0x06, 0x17, 0xe3, 0x9c, 0x11, 0x05, 0x80, + 0x54, 0x12, 0x42, 0xa5, 0xf3, 0x1a, 0x55, 0x48, 0x2d, 0x42, 0x74, 0x5d, + 0xd1, 0x85, 0xc0, 0x84, 0x88, 0xfb, 0x62, 0x0d, 0xfb, 0x89, 0xea, 0x64, + 0xa7, 0x93, 0xf1, 0x1b, 0xd5, 0x2a, 0xc2, 0xf8, 0x9b, 0x51, 0x2f, 0x22, + 0x4b, 0xb9, 0xfa, 0xa2, 0x31, 0xa7, 0x71, 0x4a, 0xc7, 0x9d, 0x6e, 0x02, + 0x18, 0xce, 0x9e, 0x5a, 0x78, 0xe9, 0x16, 0xbb, 0x7a, 0xa6, 0x49, 0xc6, + 0x8a, 0xc8, 0xc4, 0xf9, 0x72, 0x9a, 0x53, 0x34, 0xad, 0xac, 0x33, 0x48, + 0x76, 0xb8, 0x2b, 0x70, 0xb0, 0xae, 0x42, 0x13, 0x6a, 0x84, 0xf3, 0xc7, + 0x39, 0xda, 0x98, 0x6e, 0x86, 0x3e, 0x4f, 0xab, 0x15, 0x67, 0x1a, 0x91, + 0x28, 0xd6, 0x87, 0xa9, 0x2a, 0x5f, 0x4e, 0x36, 0x74, 0x29, 0x5a, 0xc2, + 0xa0, 0x50, 0x1f, 0x88, 0x52, 0xad, 0x54, 0xc4, 0xa5, 0x2f, 0xa9, 0xf5, + 0x06, 0x14, 0xcb, 0xeb, 0xbc, 0x28, 0xa0, 0x29, 0xdf, 0xef, 0x4b, 0xd0, + 0x5c, 0x93, 0x7a, 0x83, 0x43, 0x22, 0xcb, 0x4c, 0x07, 0xb3, 0x2b, 0x0b, + 0x6b, 0x1b, 0x3d, 0xa3, 0xda, 0x57, 0x4f, 0xa5, 0x56, 0x28, 0x21, 0xb1, + 0x45, 0x8a, 0xda, 0x5b, 0xdb, 0x91, 0xcb, 0x86, 0xa5, 0x58, 0xf3, 0xc3, + 0x7a, 0x21, 0x2c, 0xb2, 0x7b, 0x76, 0x65, 0x62, 0xc9, 0x34, 0x19, 0x48, + 0x85, 0x72, 0x28, 0xb0, 0x97, 0x72, 0xc6, 0x92, 0x71, 0x20, 0x2e, 0x1a, + 0xce, 0x38, 0x99, 0x2e, 0xee, 0xae, 0xe2, 0x24, 0x88, 0x93, 0x93, 0x46, + 0x45, 0x94, 0xde, 0x68, 0x6c, 0xcc, 0x2f, 0x9a, 0xaa, 0x1b, 0x64, 0xec, + 0xc4, 0x56, 0xad, 0x8c, 0x9e, 0xbd, 0x9f, 0xbb, 0x4f, 0x56, 0xd5, 0xba, + 0x6e, 0xca, 0x5f, 0xbb, 0x5d, 0x16, 0xbf, 0xcc, 0xf7, 0xde, 0x5f, 0x5f, + 0xfe, 0x96, 0x46, 0x54, 0x5b, 0xeb, 0xbd, 0x27, 0xbf, 0xbb, 0xba, 0x77, + 0x6b, 0xb4, 0xa6, 0x21, 0x2c, 0x66, 0x79, 0x84, 0x8a, 0x62, 0x81, 0xd4, + 0x48, 0x4c, 0x56, 0x1c, 0x29, 0x91, 0x84, 0x86, 0x0f, 0x61, 0x8a, 0x30, + 0x55, 0x30, 0x1f, 0x80, 0x9b, 0x30, 0x27, 0xc1, 0x66, 0x30, 0x80, 0x16, + 0x09, 0x33, 0xea, 0x84, 0x62, 0x30, 0x4d, 0x00, 0xed, 0x30, 0x19, 0x40, + 0x5a, 0x30, 0x09, 0x00, 0x27, 0x30, 0x01, 0x40, 0x0c, 0x51, 0x36, 0x68, + 0xae, 0x4b, 0x8e, 0x60, 0x3d, 0x01, 0x5e, 0x2c, 0x01, 0xdb, 0x50, 0x19, + 0x53, 0xb2, 0x1f, 0xe5, 0xb9, 0x5a, 0xc8, 0x8f, 0x31, 0x98, 0xcd, 0x54, + 0x89, 0xd2, 0xc2, 0xd6, 0x3b, 0x0e, 0x06, 0xe3, 0x7c, 0x51, 0xab, 0xb0, + 0x8f, 0x3a, 0x97, 0xa0, 0x99, 0x4c, 0xec, 0x27, 0x29, 0xe0, 0x8c, 0x46, + 0xa9, 0x5b, 0xcd, 0xc7, 0x8d, 0xec, 0x4c, 0x6e, 0xd4, 0xd2, 0xa8, 0x8d, + 0x83, 0xf5, 0x36, 0xe6, 0x88, 0x4c, 0x2a, 0xd1, 0x47, 0x92, 0x30, 0xc2, + 0x63, 0x73, 0x45, 0xa9, 0x55, 0xe9, 0x14, 0xe2, 0x39, 0x7a, 0x03, 0x14, + 0x04, 0x38, 0x92, 0x17, 0xf4, 0x6a, 0xb9, 0x79, 0xf1, 0x90, 0xe6, 0xae, + 0x52, 0x35, 0x24, 0x5f, 0xb7, 0xaa, 0xd7, 0x0c, 0x2b, 0xf9, 0x6b, 0x73, + 0x65, 0x6c, 0x40, 0x6d, 0x81, 0x85, 0x4f, 0xb2, 0x7c, 0xa2, 0x51, 0xbf, + 0xa9, 0x76, 0x3e, 0xd8, 0x19, 0x58, 0x97, 0x29, 0xe4, 0x61, 0x71, 0x2f, + 0x07, 0xda, 0x5d, 0x62, 0x01, 0x82, 0xac, 0x37, 0xd9, 0x58, 0xe0, 0x12, + 0xd6, 0x34, 0x31, 0x0e, 0x2e, 0xff, 0xfb, 0xd4, 0x60, 0x5c, 0x0f, 0xd8, + 0x91, 0x70, 0x3d, 0x03, 0xef, 0x7b, 0x70, 0x58, 0x8e, 0x08, 0x32, 0x0c, + 0x65, 0x6e, 0x22, 0xf5, 0xc0, 0xf2, 0x0f, 0xbd, 0xed, 0xc1, 0x7c, 0x38, + 0x20, 0x84, 0x31, 0x95, 0xb8, 0x90, 0x98, 0x11, 0xe5, 0x65, 0x53, 0xe7, + 0x22, 0xe5, 0xb9, 0x54, 0xbc, 0x83, 0x3b, 0x8b, 0xf9, 0xf0, 0x9f, 0x8c, + 0xd2, 0xc0, 0xcc, 0x74, 0x3b, 0x7b, 0x15, 0x72, 0xa0, 0x47, 0x42, 0x46, + 0x1a, 0xc6, 0xfb, 0x0a, 0x13, 0x01, 0xb1, 0x58, 0xaf, 0x53, 0xb7, 0x17, + 0xf4, 0xe2, 0xb1, 0x4c, 0x79, 0xed, 0x5e, 0x99, 0x61, 0xb2, 0xa1, 0xaa, + 0x58, 0x4d, 0xae, 0x31, 0x9b, 0x8f, 0x73, 0xa4, 0xb8, 0x30, 0xb2, 0x29, + 0x18, 0xe3, 0x2f, 0xab, 0x13, 0xa4, 0x24, 0xa8, 0x3c, 0x07, 0xea, 0xea, + 0x01, 0xb2, 0xa8, 0x25, 0x87, 0xd9, 0x7b, 0x2d, 0x0f, 0xb0, 0x94, 0xb4, + 0x80, 0x05, 0xc5, 0xb0, 0xb6, 0x54, 0xac, 0xc4, 0x0e, 0xda, 0x8f, 0x2e, + 0x7d, 0xed, 0xec, 0x32, 0xca, 0x63, 0xc6, 0x07, 0xd3, 0xde, 0x8a, 0x48, + 0x19, 0x88, 0xbe, 0x3f, 0x7e, 0x65, 0x7a, 0x7b, 0x5d, 0x88, 0x77, 0xa6, + 0x97, 0xa5, 0x5d, 0x69, 0x4d, 0x5a, 0xdb, 0x69, 0x67, 0xdd, 0x2a, 0xdf, + 0xb2, 0x9d, 0xd8, 0xbd, 0xbe, 0x59, 0x8c, 0xed, 0xde, 0xee, 0x65, 0xaf, + 0x5f, 0xb7, 0xeb, 0xaa, 0xf6, 0x54, 0x25, 0x66, 0xb2, 0x3b, 0xed, 0x1e, + 0x88, 0x59, 0xdd, 0x63, 0x85, 0x90, 0x61, 0x86, 0xbc, 0x12, 0x16, 0x60, + 0xf2, 0xb2, 0x1c, 0x69, 0x81, 0x1c, 0x03, 0xf9, 0x81, 0xda, 0x07, 0xf1, + 0x86, 0x98, 0x89, 0x39, 0xb7, 0xf0, 0x16, 0x41, 0x83, 0xdc, 0x04, 0xb9, + 0x81, 0x5a, 0x01, 0xc1, 0x80, 0x98, 0x00, 0x68, 0x60, 0x09, 0xc3, 0xc0, + 0x06, 0xb0, 0xe1, 0x40, 0x00, 0xc9, 0x40, 0x16, 0x30, 0x05, 0xc1, 0x20, + 0x2d, 0xe3, 0x45, 0x95, 0x8a, 0xc3, 0xc4, 0xb0, 0xb1, 0x16, 0xa2, 0xea, + 0xbe, 0x7e, 0xc2, 0x39, 0x8e, 0x02, 0x16, 0x8e, 0x22, 0x11, 0x63, 0x4c, + 0x7d, 0x0f, 0x43, 0x01, 0x92, 0x7e, 0x28, 0xd8, 0x47, 0xa2, 0xba, 0x70, + 0x42, 0x97, 0x08, 0x41, 0x72, 0x3c, 0x4c, 0x62, 0x68, 0xe2, 0xa9, 0x33, + 0xcd, 0x1d, 0x17, 0x46, 0x1e, 0x83, 0x41, 0x36, 0xb1, 0x17, 0xf2, 0x82, + 0x3a, 0x49, 0x81, 0x95, 0xe3, 0xc5, 0xa4, 0x35, 0x2e, 0xa8, 0x3b, 0x11, + 0x49, 0xb1, 0x97, 0x31, 0xe6, 0xe0, 0xda, 0x70, 0xa4, 0x0b, 0x9c, 0x89, + 0xc6, 0x2a, 0x25, 0x55, 0x52, 0x1d, 0x46, 0x02, 0xfa, 0x3d, 0xc1, 0xc9, + 0x12, 0x7e, 0x1e, 0x29, 0xf6, 0x54, 0x5a, 0xb5, 0x84, 0x3a, 0x0b, 0x04, + 0x54, 0x25, 0xbe, 0x69, 0x12, 0x69, 0x57, 0xe9, 0xd5, 0xcb, 0x41, 0x7f, + 0x20, 0xef, 0x91, 0x65, 0xdc, 0xba, 0xc6, 0x52, 0xa1, 0xbf, 0x2b, 0xc6, + 0x93, 0xf2, 0x00, 0xc2, 0xac, 0xe9, 0xc5, 0x63, 0x2c, 0xea, 0xe3, 0x20, + 0xb0, 0xa2, 0xcb, 0x62, 0xd2, 0x12, 0x53, 0xc6, 0x60, 0x60, 0x65, 0x2d, + 0xcb, 0xb7, 0xa6, 0x8a, 0xb9, 0x5e, 0x73, 0x29, 0x19, 0xce, 0x22, 0x9d, + 0x3e, 0x9d, 0x5c, 0x18, 0xa7, 0x43, 0x59, 0xfc, 0xc0, 0xb8, 0x58, 0x39, + 0x49, 0xc9, 0xe6, 0x9a, 0x39, 0xcf, 0xf3, 0xf1, 0x86, 0x19, 0xce, 0xc4, + 0xda, 0xaf, 0x4f, 0xbd, 0x3f, 0x9b, 0xce, 0x74, 0xb6, 0xee, 0x78, 0x26, + 0x99, 0x0d, 0x74, 0xbe, 0x25, 0x4f, 0x93, 0x05, 0x48, 0x49, 0x98, 0xea, + 0x43, 0xc5, 0x3d, 0x4c, 0x77, 0xa8, 0x88, 0x39, 0x90, 0xda, 0xdc, 0x95, + 0x2f, 0xc0, 0xe3, 0x04, 0x5a, 0x70, 0x4d, 0x1c, 0x1b, 0x27, 0x10, 0x14, + 0x13, 0x00, 0x9a, 0xaa, 0x2e, 0xa4, 0x79, 0xd3, 0xe0, 0x22, 0x96, 0xb4, + 0xdf, 0x38, 0x86, 0x50, 0xdd, 0xd4, 0x41, 0x11, 0x79, 0x35, 0x4b, 0xc4, + 0xcf, 0x73, 0x5f, 0xf4, 0x93, 0x36, 0xc9, 0x22, 0xfd, 0x36, 0xd6, 0xca, + 0xed, 0x53, 0xbd, 0x74, 0x63, 0xbe, 0x96, 0x77, 0x9c, 0xb5, 0x4d, 0xfb, + 0x51, 0xec, 0x76, 0x54, 0x74, 0xbb, 0x37, 0xde, 0x96, 0x4f, 0xb3, 0xb9, + 0x6c, 0xeb, 0xaa, 0x3e, 0x8e, 0x93, 0x6e, 0xcc, 0xea, 0xee, 0xcc, 0xe2, + 0x08, 0xe6, 0x43, 0x0b, 0x02, 0x1c, 0x81, 0x31, 0x52, 0x44, 0x4e, 0x22, + 0x1e, 0x61, 0x3a, 0xc7, 0x29, 0xc5, 0x95, 0x68, 0x00, 0x03, 0x01, 0x50, + 0x02, 0x70, 0x70, 0x31, 0x46, 0x17, 0xd0, 0x80, 0x26, 0xd4, 0xe0, 0x17, + 0x26, 0x0d, 0x60, 0x00, 0x84, 0xc0, 0x93, 0x8f, 0x01, 0x20, 0x02, 0x01, + 0x2c, 0x14, 0x00, 0xe2, 0x7f, 0x22, 0x7a, 0x09, 0x4c, 0x05, 0x70, 0x37, + 0x41, 0xc0, 0x06, 0xb3, 0x61, 0x32, 0x59, 0x8b, 0x1d, 0xb1, 0x0a, 0x56, + 0xd8, 0xdc, 0x37, 0x8d, 0xb4, 0xf1, 0x3e, 0x3f, 0x51, 0xa7, 0x99, 0x10, + 0x4a, 0x66, 0x18, 0x03, 0xd4, 0x2b, 0x45, 0x24, 0xb7, 0x01, 0xaa, 0x5b, + 0x4b, 0xd8, 0x1b, 0x94, 0x03, 0x90, 0x23, 0xc5, 0xe9, 0x3c, 0x39, 0xc4, + 0xb9, 0x7d, 0x16, 0xe4, 0x02, 0x6d, 0x4e, 0x86, 0x13, 0x42, 0xcc, 0xfd, + 0xa6, 0xcf, 0x63, 0xa8, 0xfd, 0x51, 0x1a, 0x0a, 0x6d, 0x69, 0xf4, 0x13, + 0xfd, 0x12, 0xae, 0x43, 0x11, 0x8a, 0xc5, 0xd4, 0x44, 0x42, 0x24, 0xf3, + 0x62, 0x33, 0x56, 0x5d, 0x3e, 0x52, 0xb8, 0xa2, 0x9b, 0x14, 0xf1, 0xd8, + 0x08, 0x64, 0x33, 0xa9, 0x5c, 0xdc, 0x72, 0x1e, 0x2f, 0x34, 0xde, 0xd8, + 0xc0, 0xab, 0x43, 0x50, 0x95, 0x73, 0x9a, 0xb4, 0xc9, 0x8c, 0xe0, 0x9c, + 0x3b, 0x55, 0xb1, 0xd4, 0x69, 0x34, 0xc8, 0xf0, 0x39, 0xd1, 0x0c, 0x8a, + 0xb5, 0xf3, 0xf9, 0x5e, 0x79, 0xff, 0xfb, 0xd4, 0x60, 0x59, 0x0d, 0xf8, + 0xbf, 0x70, 0x3d, 0x13, 0xef, 0x7b, 0x70, 0x55, 0x0e, 0x08, 0x32, 0x0c, + 0x45, 0x6e, 0x21, 0xed, 0xc0, 0xf6, 0x4f, 0xbd, 0xed, 0xc1, 0x56, 0xb7, + 0xa0, 0xc0, 0x31, 0x95, 0xb9, 0x26, 0x58, 0x53, 0xc7, 0xf2, 0xb1, 0x71, + 0xa5, 0x31, 0xc0, 0x82, 0x8a, 0x33, 0xe1, 0x9d, 0xa9, 0x46, 0x53, 0x9d, + 0x12, 0x8b, 0x91, 0x9f, 0x6c, 0x07, 0x32, 0x9d, 0x0a, 0x3d, 0x1c, 0x06, + 0x0b, 0x52, 0x9a, 0x43, 0x48, 0xca, 0x44, 0xc0, 0x4b, 0x3d, 0x56, 0xa7, + 0x58, 0xd7, 0x2b, 0xb3, 0x99, 0x2c, 0xfc, 0xe7, 0x34, 0x61, 0xa9, 0x93, + 0xaf, 0x1f, 0x2b, 0x17, 0x09, 0xec, 0xb8, 0xb8, 0x3a, 0x79, 0x14, 0xf3, + 0x5b, 0x72, 0x56, 0x2a, 0x60, 0x1e, 0x89, 0xd6, 0x94, 0xda, 0x15, 0x64, + 0x19, 0x70, 0x2f, 0xe4, 0xf5, 0x3b, 0x1e, 0x22, 0xa8, 0x81, 0xcc, 0x8e, + 0x39, 0xc9, 0xe1, 0xc8, 0x1c, 0x4b, 0x90, 0xaa, 0x0e, 0x71, 0x98, 0xd2, + 0x00, 0x02, 0x6b, 0x0b, 0x41, 0xc0, 0x00, 0x04, 0x10, 0x09, 0x11, 0x19, + 0xe7, 0x26, 0xd5, 0xd3, 0xa5, 0xad, 0xa3, 0x9e, 0x45, 0x4b, 0xa8, 0xa9, + 0x25, 0x35, 0x55, 0x6a, 0xe8, 0x6f, 0xb7, 0xa6, 0xaf, 0x7c, 0x8f, 0xae, + 0x92, 0x57, 0x9f, 0x4f, 0xf4, 0x7a, 0x92, 0xfc, 0xfb, 0x6f, 0xfa, 0xbf, + 0xfa, 0xa7, 0xd7, 0xd3, 0x7e, 0xf6, 0x49, 0x5d, 0xb6, 0xda, 0xb2, 0x6a, + 0xdd, 0x11, 0x74, 0x57, 0x22, 0xb2, 0x35, 0x48, 0x56, 0x12, 0xa1, 0x46, + 0x0f, 0x74, 0x5a, 0x20, 0xa8, 0xc6, 0x10, 0x10, 0x0d, 0x01, 0xc3, 0xee, + 0xb0, 0x18, 0x01, 0x00, 0x09, 0x18, 0x0f, 0x60, 0x4c, 0x98, 0x43, 0x84, + 0x4d, 0x1a, 0x83, 0x01, 0x39, 0x98, 0x24, 0xc0, 0x35, 0x18, 0x0c, 0x20, + 0x14, 0x98, 0x04, 0x40, 0x04, 0x18, 0x02, 0xe0, 0x06, 0x98, 0x00, 0xc0, + 0x02, 0x16, 0x71, 0x97, 0xa6, 0x51, 0x81, 0x0c, 0x02, 0x51, 0x30, 0x05, + 0x72, 0xd3, 0x11, 0xa9, 0x77, 0x56, 0xa8, 0x45, 0x54, 0x14, 0xa2, 0x61, + 0x69, 0x72, 0x61, 0xab, 0x95, 0xa6, 0xe9, 0x62, 0x32, 0xe7, 0x39, 0x89, + 0x26, 0xce, 0xa4, 0x91, 0x64, 0xc2, 0xbe, 0x47, 0x0f, 0xc4, 0xc1, 0x7b, + 0x3c, 0x0e, 0x11, 0x3b, 0x1c, 0x0e, 0x61, 0x7c, 0x23, 0x0b, 0xd1, 0x90, + 0x88, 0xa6, 0x9b, 0x34, 0x32, 0xdb, 0x3a, 0x89, 0x5e, 0x97, 0x7c, 0x65, + 0xb1, 0x9d, 0xa7, 0xab, 0xc4, 0x36, 0x96, 0x50, 0xa9, 0x52, 0xca, 0x46, + 0x75, 0x5a, 0x85, 0x76, 0xed, 0x1a, 0xa6, 0x43, 0x2c, 0xa3, 0x6d, 0x60, + 0x47, 0x97, 0x54, 0x72, 0x2d, 0xf9, 0xc1, 0x1d, 0x44, 0xd8, 0xae, 0x38, + 0x58, 0xdb, 0x17, 0x4e, 0x95, 0x2c, 0xaa, 0x29, 0x1b, 0x11, 0x0b, 0x08, + 0x43, 0xd6, 0x65, 0x73, 0x4e, 0xe3, 0x44, 0x3f, 0x93, 0xa9, 0x43, 0xf5, + 0x8a, 0x09, 0x06, 0x71, 0xbe, 0x96, 0x18, 0xd0, 0xba, 0x1c, 0x46, 0xf2, + 0xb5, 0xcd, 0x7a, 0x19, 0x7d, 0x57, 0x2b, 0xe5, 0x3e, 0x61, 0xb3, 0x9d, + 0x2f, 0xd7, 0x99, 0x5f, 0xa1, 0x0a, 0x85, 0x73, 0x63, 0x7a, 0xed, 0xab, + 0x96, 0xe4, 0xf9, 0xff, 0x13, 0x51, 0xec, 0xdb, 0xe6, 0x6d, 0x95, 0x5c, + 0xad, 0x3d, 0x5e, 0x33, 0x2a, 0x67, 0x58, 0x64, 0x42, 0x98, 0xb0, 0x75, + 0xcc, 0x8d, 0x52, 0x2e, 0x52, 0xcd, 0x08, 0x7a, 0x72, 0x33, 0x5a, 0x81, + 0xd2, 0x71, 0xe2, 0x7d, 0x9d, 0x38, 0xcc, 0xad, 0x5c, 0x6a, 0x03, 0x41, + 0xbc, 0x41, 0x88, 0x53, 0xa3, 0x74, 0xbd, 0xa8, 0xd0, 0xd6, 0x03, 0xb0, + 0xfc, 0x70, 0x3b, 0xc7, 0x21, 0x54, 0x36, 0xc5, 0xe1, 0x50, 0x28, 0x08, + 0xea, 0xa2, 0x20, 0xba, 0x56, 0x12, 0x29, 0x90, 0xb9, 0x99, 0xdc, 0xf5, + 0x7a, 0x90, 0x81, 0xad, 0x0b, 0xe6, 0x10, 0x1f, 0xad, 0xac, 0xd3, 0xbb, + 0xd3, 0x28, 0x62, 0x76, 0x55, 0xab, 0x7a, 0x2f, 0x2d, 0x96, 0xad, 0x46, + 0xb6, 0x7f, 0xad, 0x19, 0xb5, 0x2e, 0xeb, 0xbe, 0x5f, 0x3f, 0xd1, 0xbb, + 0xdb, 0xfd, 0x37, 0x6e, 0x84, 0xef, 0xf3, 0xfd, 0xab, 0xec, 0xff, 0x65, + 0xfd, 0xcb, 0x33, 0xa0, 0xc2, 0xea, 0x52, 0xd0, 0xe4, 0x1a, 0x28, 0xca, + 0x0e, 0x08, 0xc3, 0x47, 0x1c, 0x3e, 0xe3, 0x4a, 0x00, 0x30, 0x0d, 0x05, + 0x23, 0x03, 0x31, 0x0d, 0x31, 0x5a, 0xf9, 0x43, 0xe8, 0x03, 0xb1, 0x30, + 0xa4, 0x0b, 0xa3, 0x03, 0x30, 0x49, 0x30, 0x10, 0x02, 0x60, 0x48, 0x07, + 0x96, 0x70, 0x20, 0x05, 0x16, 0xf9, 0x70, 0x0c, 0x27, 0x41, 0x70, 0x88, + 0x0e, 0x1a, 0xf9, 0x73, 0x53, 0x23, 0xd4, 0x4c, 0xa9, 0xa3, 0x7c, 0xce, + 0x32, 0xcf, 0x37, 0x22, 0x02, 0x38, 0xd0, 0xb5, 0xe8, 0x2e, 0x65, 0xb9, + 0x1c, 0xa5, 0x7e, 0x2d, 0xc7, 0x21, 0xf0, 0xb0, 0x8d, 0x8c, 0x58, 0x15, + 0x48, 0xe6, 0x85, 0x4e, 0xcb, 0xe2, 0x30, 0xbf, 0x33, 0x1f, 0xac, 0xc8, + 0x6b, 0xf5, 0xd3, 0xb4, 0xfa, 0x7d, 0xe8, 0xec, 0x44, 0x2b, 0x73, 0x57, + 0x25, 0x6d, 0x91, 0xca, 0x42, 0xd4, 0xa2, 0x50, 0x1a, 0x68, 0x84, 0x51, + 0xb9, 0x0a, 0x14, 0x48, 0x6c, 0x8f, 0xdc, 0x19, 0xdd, 0x1a, 0x0a, 0x05, + 0xda, 0x40, 0xc2, 0x3a, 0xa4, 0x6a, 0x69, 0x57, 0x1b, 0x8a, 0x94, 0x41, + 0xb8, 0xf4, 0xf8, 0x69, 0x45, 0x20, 0x91, 0x28, 0x37, 0x28, 0x08, 0x96, + 0x76, 0x39, 0xce, 0x28, 0xaa, 0xf5, 0x39, 0xbe, 0xf1, 0x18, 0xa5, 0x4e, + 0x2e, 0x21, 0x2b, 0x96, 0x0f, 0xf4, 0x7a, 0x19, 0x04, 0xc1, 0x45, 0x17, + 0xe6, 0xe9, 0x95, 0xc7, 0x9a, 0x1e, 0x93, 0x54, 0xe1, 0x96, 0xcb, 0x4d, + 0x8e, 0xd4, 0xaf, 0x0e, 0x84, 0xff, 0xfb, 0xd4, 0x60, 0x5e, 0x0d, 0xd8, + 0x56, 0x70, 0x3d, 0x03, 0xcf, 0x7b, 0x70, 0x60, 0x2d, 0x98, 0x22, 0x20, + 0x65, 0x6e, 0x62, 0x05, 0xc0, 0xf4, 0x2f, 0xbd, 0xed, 0xd1, 0x7a, 0x38, + 0x20, 0xc8, 0x31, 0x89, 0xb8, 0xea, 0x8e, 0x0a, 0x4d, 0x0e, 0x66, 0x6b, + 0x5c, 0xb7, 0xaf, 0x9d, 0x69, 0x17, 0xda, 0x3f, 0x19, 0x0f, 0x68, 0x2a, + 0x78, 0xea, 0x96, 0xe4, 0xed, 0x98, 0x56, 0x18, 0x53, 0xcf, 0xd2, 0x4c, + 0x68, 0x4b, 0xc5, 0x1b, 0x6c, 0xef, 0xd4, 0x4b, 0xcf, 0x90, 0xd5, 0x72, + 0x79, 0x28, 0xd4, 0x8b, 0x44, 0x3c, 0x76, 0xa2, 0x4b, 0xcc, 0xf5, 0x48, + 0x59, 0x42, 0x34, 0xd4, 0x89, 0x26, 0x42, 0x08, 0xc1, 0x3b, 0x3a, 0x91, + 0xcc, 0xba, 0x22, 0x43, 0x7c, 0x6e, 0x04, 0x00, 0xf1, 0x27, 0xa4, 0x81, + 0xa0, 0x00, 0x02, 0xdc, 0x51, 0x84, 0x42, 0x1c, 0x3d, 0xf7, 0xfb, 0xd6, + 0xe6, 0xb2, 0xab, 0x70, 0x86, 0x2a, 0x55, 0x4e, 0xe3, 0x28, 0x36, 0x08, + 0xf1, 0x68, 0x66, 0x3a, 0xdf, 0xe7, 0x1b, 0xf9, 0x33, 0x52, 0x4a, 0x4c, + 0x9b, 0xd3, 0xb3, 0xa3, 0x3d, 0x6f, 0xbd, 0xb6, 0xdd, 0x59, 0x7a, 0xa7, + 0x44, 0x77, 0x56, 0x6b, 0x9e, 0x8f, 0x59, 0x55, 0xc9, 0x66, 0xa9, 0x9d, + 0x2c, 0x44, 0xd9, 0xac, 0xad, 0x76, 0x79, 0x19, 0x1b, 0x4a, 0x56, 0xf5, + 0x5f, 0x44, 0xa5, 0xec, 0xdb, 0xd2, 0x57, 0x31, 0x12, 0xa1, 0xe1, 0x77, + 0xce, 0x08, 0x30, 0x70, 0x7d, 0x05, 0x83, 0xc3, 0xc5, 0x48, 0x94, 0x86, + 0x43, 0x00, 0xe4, 0x06, 0x63, 0x00, 0x98, 0x11, 0x93, 0x01, 0x45, 0x0f, + 0x63, 0x03, 0xa0, 0x3a, 0x53, 0x00, 0xfc, 0x0c, 0x03, 0x00, 0x08, 0x04, + 0xb1, 0xd0, 0x08, 0x08, 0x00, 0x0f, 0x64, 0x14, 0x2c, 0x38, 0xa8, 0x00, + 0x19, 0x80, 0xa0, 0x05, 0xc9, 0x67, 0xe2, 0x83, 0x81, 0x1b, 0x22, 0x7a, + 0x12, 0x14, 0x8c, 0x8e, 0x58, 0xd9, 0x3a, 0xd2, 0xb5, 0x5e, 0x5f, 0x4f, + 0xc3, 0x3d, 0xad, 0x3c, 0x5a, 0x19, 0x8a, 0x52, 0x6d, 0x3a, 0xb8, 0x42, + 0x91, 0xb1, 0x49, 0xe9, 0x90, 0x2f, 0x19, 0xcd, 0xc3, 0x1d, 0x94, 0x6a, + 0xa1, 0xc3, 0x00, 0xf4, 0x3c, 0x1a, 0x89, 0xe2, 0x5d, 0x12, 0x86, 0x1c, + 0xe7, 0x7a, 0x66, 0x21, 0xfe, 0xc6, 0xd8, 0x7c, 0x22, 0x0d, 0x84, 0xc2, + 0x3d, 0x58, 0xc2, 0xbc, 0xa4, 0x2f, 0x8c, 0xae, 0x86, 0xf1, 0x5a, 0xf5, + 0x52, 0x71, 0xa4, 0x8d, 0x74, 0xf2, 0x21, 0x55, 0x46, 0x42, 0xbd, 0x90, + 0xce, 0x94, 0xfd, 0x5d, 0xa9, 0x30, 0x86, 0x97, 0x41, 0xfe, 0xe6, 0x62, + 0x2a, 0xfb, 0x72, 0xb8, 0xd3, 0x52, 0xa3, 0xd8, 0x53, 0xe7, 0x52, 0xb9, + 0x76, 0x87, 0xaa, 0x1b, 0x10, 0xa3, 0x55, 0x5e, 0x61, 0xb1, 0x2a, 0xe1, + 0xa7, 0x8a, 0xc6, 0x14, 0xb3, 0x31, 0xe4, 0xc1, 0x15, 0x00, 0xab, 0x2a, + 0x4e, 0x14, 0x53, 0xb3, 0xd5, 0x4c, 0xde, 0xac, 0xc9, 0xc1, 0x19, 0x8d, + 0xcc, 0xd3, 0x3f, 0x4f, 0x08, 0x29, 0x68, 0x50, 0x21, 0xb9, 0xb1, 0xcc, + 0xfe, 0x64, 0x3d, 0x68, 0x85, 0xe5, 0x95, 0x9d, 0x5a, 0xcc, 0x84, 0x28, + 0x5f, 0xa2, 0x98, 0xe2, 0xb6, 0xa8, 0x13, 0xb3, 0x40, 0x82, 0x7f, 0xab, + 0xd9, 0xce, 0xa8, 0xad, 0xe8, 0xd5, 0x09, 0x2f, 0x9e, 0x34, 0xe9, 0x65, + 0x54, 0x07, 0x4a, 0xe3, 0x39, 0x56, 0xda, 0xb4, 0xc1, 0x0e, 0x52, 0xc4, + 0x92, 0x60, 0x52, 0x3d, 0x76, 0xc6, 0xa2, 0x25, 0x64, 0xce, 0x52, 0xc8, + 0x24, 0x4d, 0xa4, 0xc4, 0x30, 0x02, 0x24, 0xa9, 0x5e, 0x13, 0x82, 0x55, + 0x40, 0xc8, 0x38, 0xb5, 0xeb, 0xfb, 0xcd, 0xbc, 0xaf, 0xfa, 0xe5, 0x0d, + 0x8d, 0x23, 0x19, 0x15, 0xcc, 0x1a, 0x8a, 0x0c, 0xd8, 0x30, 0x8c, 0xb9, + 0x90, 0xe8, 0x0c, 0x41, 0xc1, 0x95, 0xd4, 0xf7, 0x4b, 0xf7, 0x56, 0xae, + 0xb4, 0x7b, 0x26, 0xda, 0x34, 0xc9, 0x7a, 0x59, 0x6b, 0xa9, 0x28, 0xea, + 0x9d, 0xf6, 0x45, 0xd1, 0x1d, 0x79, 0xb7, 0x7f, 0xf5, 0x7b, 0xb2, 0xff, + 0x4e, 0x88, 0xea, 0x8a, 0xed, 0xb7, 0xeb, 0x45, 0x99, 0xb3, 0xaa, 0xb3, + 0xac, 0xc0, 0x47, 0x3c, 0x20, 0x01, 0x5d, 0x41, 0x1c, 0xec, 0x30, 0x8b, + 0x0c, 0x04, 0x18, 0x0c, 0x18, 0x20, 0x3a, 0x30, 0x16, 0xc0, 0x6e, 0x30, + 0x1f, 0x81, 0x09, 0x30, 0x6e, 0x50, 0xb2, 0x33, 0x7f, 0x43, 0x37, 0x30, + 0x40, 0xc0, 0xaa, 0x30, 0x15, 0x80, 0x3d, 0x30, 0x08, 0x40, 0x1e, 0x05, + 0x00, 0x0a, 0xc6, 0x93, 0xea, 0x5e, 0x40, 0x00, 0x10, 0x58, 0x0d, 0xe4, + 0xea, 0x96, 0x8e, 0x72, 0xec, 0x85, 0xb1, 0x3d, 0x3a, 0xcb, 0x12, 0x44, + 0xba, 0x37, 0xa1, 0xcc, 0x83, 0x21, 0x48, 0x75, 0xa6, 0x5b, 0x08, 0x41, + 0x3a, 0x11, 0x03, 0x10, 0x9d, 0x99, 0x47, 0x4c, 0x85, 0x49, 0x28, 0x13, + 0x71, 0x6d, 0x57, 0x9c, 0xe9, 0xf2, 0x72, 0x58, 0x50, 0xc5, 0x33, 0x2c, + 0x27, 0x27, 0xe8, 0xe8, 0x49, 0x83, 0xc9, 0x58, 0xad, 0x72, 0x3a, 0x14, + 0xeb, 0x45, 0xc8, 0xca, 0x6a, 0x3c, 0x4f, 0x93, 0xa0, 0xdd, 0x5c, 0x37, + 0x48, 0xe6, 0xe9, 0x2c, 0x72, 0x18, 0x05, 0xd5, 0x74, 0xd2, 0xb4, 0xae, + 0x34, 0xe7, 0x41, 0x3d, 0x57, 0xac, 0x46, 0x84, 0xbb, 0x8e, 0x7e, 0xa7, + 0x18, 0x4c, 0x87, 0xaf, 0x6e, 0xba, 0x3c, 0x6a, 0xc2, 0xb0, 0x64, 0x21, + 0x8c, 0xe8, 0xa9, 0x54, 0xe8, 0x4b, 0x12, 0x94, 0xad, 0x42, 0x97, 0x48, + 0xc6, 0x96, 0xb8, 0xb7, 0x92, 0x2a, 0x13, 0xa6, 0x47, 0x11, 0xc6, 0xb0, + 0x7e, 0x99, 0x28, 0x92, 0x84, 0xd3, 0x7c, 0xa3, 0x42, 0x91, 0x90, 0x4b, + 0xd3, 0x03, 0x19, 0xfb, 0x10, 0xff, 0xfb, 0xd4, 0x60, 0x5f, 0x0f, 0x98, + 0x9d, 0x70, 0x3c, 0x83, 0xef, 0x7b, 0x70, 0x60, 0x8e, 0x08, 0x36, 0x20, + 0xc5, 0x6e, 0x21, 0x39, 0xc0, 0xf4, 0x0f, 0xbd, 0xed, 0xc1, 0x75, 0x38, + 0x20, 0xc8, 0x31, 0x95, 0xb8, 0xef, 0x33, 0xd1, 0x83, 0xf5, 0xa4, 0xe0, + 0x56, 0xa1, 0x28, 0x7a, 0x7c, 0xd4, 0xd1, 0x84, 0x92, 0x3d, 0x65, 0x4e, + 0x17, 0xc4, 0xfa, 0x21, 0x5a, 0xba, 0x8a, 0x99, 0x5a, 0x4f, 0x16, 0x15, + 0x2d, 0x06, 0x31, 0x63, 0x3d, 0x97, 0x10, 0xcf, 0xc2, 0x89, 0x65, 0x51, + 0x94, 0x72, 0x92, 0xa6, 0x34, 0xea, 0xf7, 0x25, 0x88, 0xa7, 0x04, 0x05, + 0x7e, 0xd3, 0xb6, 0x16, 0xc4, 0x30, 0x9e, 0xaa, 0xd5, 0xf1, 0xd4, 0x8b, + 0xe7, 0x31, 0x3c, 0x4f, 0x2d, 0x9e, 0xca, 0x74, 0x1b, 0xb3, 0x50, 0xba, + 0x12, 0x35, 0x42, 0x08, 0x29, 0x0b, 0x80, 0x01, 0x6d, 0x40, 0x00, 0xd6, + 0xf0, 0x26, 0x33, 0x44, 0x89, 0x87, 0x87, 0xfd, 0xeb, 0x5f, 0xf6, 0x67, + 0xdd, 0x9f, 0x1b, 0xf3, 0x25, 0x93, 0x99, 0xcc, 0xee, 0x98, 0xe7, 0x62, + 0x91, 0xc5, 0xde, 0xd9, 0xd1, 0x8f, 0xdd, 0xb3, 0x07, 0x2b, 0x2d, 0xce, + 0xca, 0x8d, 0x64, 0xab, 0x5f, 0xae, 0xea, 0x95, 0x7a, 0xd3, 0x7b, 0xff, + 0xa3, 0xb6, 0x95, 0x5d, 0x49, 0x76, 0xea, 0x4b, 0x54, 0xbb, 0xdf, 0xf2, + 0x24, 0xda, 0xae, 0xbf, 0x4f, 0xe8, 0xab, 0x4e, 0xf6, 0xdf, 0x75, 0xef, + 0xd0, 0x41, 0x46, 0x0a, 0x31, 0xd0, 0xe8, 0xa2, 0xcc, 0x2e, 0x20, 0x62, + 0xb8, 0xb4, 0x30, 0x50, 0x58, 0x59, 0xc7, 0x18, 0x08, 0x60, 0x1e, 0x18, + 0x10, 0xc0, 0x3d, 0x98, 0x40, 0x64, 0xab, 0x1a, 0x32, 0xa0, 0xaf, 0x98, + 0x24, 0xe0, 0x1f, 0x18, 0x0b, 0x80, 0x04, 0x81, 0x80, 0x4a, 0x1a, 0x00, + 0x65, 0x20, 0xd4, 0xf3, 0x32, 0x2f, 0xe9, 0x80, 0xa6, 0x04, 0x09, 0x10, + 0x01, 0xac, 0x7c, 0x98, 0x2c, 0xab, 0x13, 0xca, 0xd4, 0x24, 0xe5, 0x54, + 0xb0, 0xab, 0x64, 0x84, 0xa6, 0x2e, 0x4f, 0xe3, 0xa2, 0x8d, 0xf6, 0x94, + 0xd1, 0x71, 0x2f, 0xc5, 0x76, 0x59, 0x54, 0x49, 0xf3, 0xcc, 0xf9, 0x64, + 0x82, 0x4f, 0x6e, 0x9b, 0x4f, 0xa9, 0x36, 0xa5, 0x3b, 0xde, 0x12, 0x33, + 0xad, 0x1e, 0x68, 0xa1, 0xcd, 0x08, 0x59, 0xc4, 0x87, 0x2e, 0xe2, 0xb5, + 0x19, 0x2e, 0x9a, 0xab, 0x05, 0x2e, 0xac, 0x8a, 0x70, 0x39, 0xe1, 0x3a, + 0xec, 0xf6, 0x52, 0x33, 0xa3, 0x52, 0xca, 0xd7, 0xc8, 0xf6, 0x04, 0xea, + 0x71, 0x62, 0x99, 0x3f, 0x14, 0xb8, 0x78, 0x7e, 0xa7, 0x0e, 0x33, 0x71, + 0xe1, 0xe6, 0xdc, 0xc4, 0xaa, 0x3f, 0x90, 0x0b, 0x95, 0x21, 0xe4, 0xad, + 0x70, 0x58, 0x4f, 0x30, 0x64, 0xc5, 0x63, 0x39, 0x54, 0x44, 0xf5, 0x09, + 0x4d, 0xa5, 0x59, 0x97, 0x26, 0xf2, 0xb1, 0x92, 0x19, 0xe6, 0x52, 0xb3, + 0xaa, 0x50, 0x04, 0xb1, 0xfa, 0xe1, 0x51, 0x13, 0x06, 0xe2, 0x4c, 0xe5, + 0x57, 0x62, 0x0a, 0x20, 0xf7, 0x54, 0xc8, 0xb9, 0x6d, 0x54, 0xa1, 0x91, + 0x28, 0xd4, 0xae, 0x5e, 0x75, 0x0e, 0x0b, 0x2d, 0xdd, 0xae, 0xda, 0x37, + 0xe2, 0x34, 0x94, 0x09, 0xf5, 0x7c, 0x76, 0x0a, 0x31, 0xa1, 0x69, 0x55, + 0xa7, 0x47, 0x22, 0xbf, 0x53, 0x3c, 0x57, 0xb3, 0xb5, 0x32, 0xb3, 0x31, + 0xa1, 0xee, 0x09, 0x4a, 0x19, 0x68, 0x13, 0x71, 0x79, 0x04, 0xa8, 0x32, + 0x4e, 0x23, 0x29, 0x2c, 0xb8, 0x32, 0x8f, 0x30, 0xd4, 0x69, 0xad, 0x28, + 0x5c, 0x01, 0x7a, 0x8a, 0x48, 0x0e, 0x54, 0x51, 0xf6, 0xdc, 0xdd, 0x81, + 0x04, 0x0c, 0x38, 0x61, 0xc4, 0x43, 0xb3, 0xfa, 0x4a, 0x31, 0x15, 0x7c, + 0xa4, 0xca, 0x5b, 0x71, 0xde, 0x48, 0xcf, 0x84, 0x40, 0x07, 0x14, 0x26, + 0x86, 0x28, 0x60, 0xb3, 0x38, 0x68, 0x19, 0xa4, 0x44, 0x3a, 0x22, 0x31, + 0xd4, 0xaa, 0xc8, 0xbd, 0xfe, 0xfd, 0xbf, 0xb1, 0xeb, 0xa6, 0x85, 0x77, + 0xd1, 0x6b, 0xbb, 0x33, 0x77, 0xa2, 0xd5, 0xef, 0x5b, 0xff, 0x4b, 0x7c, + 0xb6, 0xa3, 0xec, 0xfa, 0x39, 0x75, 0x2f, 0x23, 0xf6, 0xb3, 0x1d, 0x2e, + 0xda, 0x3a, 0xb1, 0x1a, 0x87, 0xb6, 0x81, 0x46, 0x70, 0x88, 0xe1, 0xe2, + 0x04, 0xb0, 0xb8, 0xa8, 0x49, 0x46, 0x55, 0x30, 0x0d, 0x40, 0x06, 0x30, + 0x24, 0x00, 0x0c, 0x30, 0x92, 0xc0, 0xf0, 0x35, 0x35, 0xc0, 0xee, 0x30, + 0x51, 0xc0, 0x0b, 0x30, 0x1a, 0x80, 0x00, 0x08, 0x01, 0x5c, 0x58, 0x03, + 0x00, 0x30, 0x00, 0x60, 0x80, 0x02, 0x54, 0x11, 0x97, 0x98, 0x10, 0x00, + 0x04, 0x11, 0x00, 0x54, 0xe0, 0x19, 0xaa, 0x45, 0x51, 0xb8, 0xa5, 0x2c, + 0x28, 0xa3, 0xa5, 0x78, 0xb9, 0x2e, 0xd4, 0x00, 0xcf, 0x62, 0x8e, 0x2d, + 0x8c, 0xf1, 0xd4, 0xca, 0x13, 0x24, 0xc3, 0x46, 0x17, 0xdb, 0x21, 0x45, + 0x12, 0x18, 0x64, 0x1e, 0xae, 0x25, 0x04, 0x54, 0xe2, 0xb1, 0xc0, 0xfe, + 0x69, 0x5d, 0x2f, 0xa5, 0xdd, 0x9c, 0xab, 0xea, 0x61, 0x85, 0x55, 0xd3, + 0x62, 0x8c, 0xb9, 0x99, 0x4d, 0xc8, 0x7a, 0x84, 0xb6, 0x19, 0xc9, 0xf4, + 0x25, 0x40, 0x70, 0x30, 0x27, 0x9d, 0xac, 0x9d, 0x8c, 0xa7, 0x7a, 0xa8, + 0x96, 0xb2, 0xad, 0xa4, 0x4c, 0x04, 0x59, 0xba, 0xc0, 0xa4, 0x91, 0x7a, + 0x54, 0x30, 0xe4, 0x56, 0x35, 0x20, 0x48, 0x35, 0x62, 0xaa, 0xcf, 0x16, + 0xf5, 0x3c, 0x08, 0xaa, 0x55, 0x1a, 0x00, 0xef, 0x28, 0x51, 0x14, 0x8c, + 0x5b, 0x4d, 0x84, 0x61, 0xf9, 0x2a, 0xa9, 0x66, 0x10, 0xb9, 0xa3, 0x8f, + 0x62, 0x89, 0x53, 0x01, 0x1c, 0xd4, 0xdf, 0x0c, 0xca, 0x66, 0xba, 0xbd, + 0x4e, 0x51, 0x6c, 0xcc, 0x3f, 0xff, 0xfb, 0xd4, 0x60, 0x5f, 0x0f, 0xd8, + 0xa9, 0x70, 0x3c, 0x83, 0xef, 0x7b, 0x70, 0x57, 0x2e, 0x08, 0x32, 0x0c, + 0x62, 0x6e, 0x21, 0x71, 0xc0, 0xf4, 0x0f, 0x3d, 0xed, 0xc1, 0x8b, 0xb8, + 0x20, 0x88, 0x31, 0x95, 0xb8, 0x99, 0xd0, 0xd4, 0x9a, 0xb2, 0x3a, 0xca, + 0x28, 0xd7, 0x33, 0xd3, 0xef, 0xd2, 0xeb, 0x64, 0x26, 0x34, 0x91, 0xd1, + 0xb2, 0xaf, 0x93, 0x78, 0x45, 0xfd, 0x30, 0x73, 0x9d, 0xcb, 0xca, 0x76, + 0x53, 0x7c, 0xe9, 0x57, 0x29, 0xd3, 0x89, 0x75, 0x4b, 0x12, 0xee, 0x32, + 0xc2, 0xe9, 0x02, 0xd8, 0xa4, 0x46, 0x3b, 0x84, 0xaf, 0x47, 0x1c, 0x39, + 0xbb, 0x0a, 0x7d, 0x1e, 0x8f, 0x43, 0x53, 0xa4, 0xac, 0xe5, 0x25, 0xe7, + 0x9a, 0xdb, 0xd1, 0xac, 0x1d, 0x0d, 0xe5, 0xe9, 0x72, 0x4c, 0x5f, 0xaf, + 0x26, 0x0b, 0xdb, 0x6a, 0x71, 0x9c, 0xe4, 0x54, 0xb4, 0x80, 0x00, 0xfe, + 0x51, 0x92, 0xa3, 0x38, 0x87, 0x8c, 0xfd, 0xee, 0x7e, 0x46, 0xd9, 0x45, + 0x76, 0xf6, 0x0a, 0x45, 0x49, 0x77, 0x34, 0xca, 0x42, 0x33, 0x7d, 0x56, + 0x1c, 0xa5, 0xbf, 0x69, 0x9f, 0xce, 0x8b, 0x56, 0xdb, 0x5b, 0xa5, 0x57, + 0xee, 0xcc, 0xba, 0x7a, 0x6c, 0xfa, 0xb1, 0x69, 0xdb, 0x7d, 0x5e, 0xd5, + 0xa3, 0x7f, 0xbd, 0x93, 0x4b, 0x26, 0x87, 0xac, 0xde, 0x5a, 0x33, 0x7c, + 0xc5, 0xbb, 0x5e, 0x64, 0x2f, 0x55, 0x77, 0x72, 0x31, 0xa5, 0x63, 0x31, + 0xcc, 0x09, 0xc7, 0xb0, 0xb3, 0xe6, 0x12, 0x10, 0x58, 0x21, 0x21, 0x8c, + 0x00, 0x40, 0x4c, 0xc1, 0x40, 0x20, 0x0c, 0x63, 0x5e, 0xc4, 0xfc, 0x5c, + 0x83, 0x0c, 0x34, 0x41, 0x5c, 0xc1, 0x00, 0x07, 0x0c, 0x05, 0xc0, 0x44, + 0x14, 0x03, 0x06, 0x00, 0xa0, 0x12, 0x18, 0x01, 0x6a, 0x92, 0x8c, 0xc1, + 0x4c, 0x14, 0x92, 0x82, 0x22, 0x58, 0x90, 0xf3, 0x40, 0xea, 0x8d, 0x14, + 0xff, 0x7c, 0xcc, 0x9f, 0x69, 0x4a, 0x3e, 0x42, 0x95, 0xe6, 0x99, 0x7d, + 0x56, 0x0f, 0xb2, 0xc3, 0x05, 0x30, 0x49, 0x62, 0x35, 0x93, 0x55, 0x29, + 0x71, 0x21, 0x6b, 0x6d, 0x24, 0x3d, 0x74, 0xca, 0xa7, 0x3d, 0xde, 0x12, + 0xbb, 0xaa, 0x50, 0x93, 0x3e, 0x02, 0xad, 0x42, 0x86, 0xb3, 0x9a, 0x2e, + 0x90, 0x83, 0xcc, 0xc1, 0x55, 0x9d, 0xce, 0x2e, 0x29, 0xe3, 0x24, 0xfb, + 0x51, 0xb5, 0x36, 0xd5, 0x60, 0xc4, 0x72, 0x27, 0xd2, 0x36, 0x27, 0xd0, + 0xe7, 0x3d, 0xb7, 0x41, 0x39, 0x88, 0x6b, 0x79, 0x86, 0xb8, 0x42, 0x36, + 0xce, 0x6f, 0x2b, 0x9e, 0xc4, 0x72, 0x87, 0x3b, 0xd8, 0x10, 0xcd, 0x38, + 0x27, 0xd2, 0x3d, 0x0b, 0x37, 0xdc, 0x51, 0x07, 0x14, 0xe7, 0x0b, 0x81, + 0x75, 0x3b, 0x49, 0xe5, 0xd4, 0xd4, 0x5a, 0x39, 0xcd, 0x13, 0xea, 0x3e, + 0xd4, 0x6a, 0xe3, 0xc3, 0x67, 0x9b, 0x82, 0x2d, 0xfb, 0x3c, 0xce, 0x48, + 0x5a, 0xb2, 0x66, 0x28, 0x0a, 0xe5, 0x6c, 0xe7, 0x53, 0x04, 0x03, 0x99, + 0x0e, 0x6f, 0x82, 0xc0, 0xc1, 0x09, 0x49, 0xce, 0x06, 0x68, 0x6a, 0x1c, + 0x3f, 0x73, 0x5e, 0x57, 0x96, 0x38, 0x4d, 0xca, 0x96, 0x64, 0x59, 0x90, + 0x7e, 0x32, 0xa3, 0x9f, 0xab, 0x22, 0xa9, 0x66, 0x6f, 0x95, 0x3b, 0x39, + 0xdd, 0x45, 0xa3, 0xc5, 0x48, 0xb9, 0x43, 0x10, 0xe6, 0x17, 0x18, 0xcb, + 0x94, 0xf1, 0xed, 0x29, 0x6e, 0x2f, 0x64, 0x8d, 0x72, 0xb9, 0x16, 0x41, + 0xf8, 0x58, 0xd4, 0x83, 0x04, 0xac, 0x42, 0x4e, 0xd0, 0x86, 0x98, 0x88, + 0xb4, 0x4a, 0x24, 0x94, 0x6d, 0x63, 0x2b, 0x8e, 0x34, 0x13, 0xb8, 0x16, + 0xd5, 0x85, 0x43, 0x47, 0xd8, 0xaa, 0x71, 0x76, 0xb3, 0xa6, 0x06, 0x41, + 0xa0, 0xda, 0xa9, 0x48, 0xf3, 0x4e, 0x67, 0x91, 0x12, 0xf1, 0x8c, 0xac, + 0x56, 0x74, 0x3d, 0x33, 0x2b, 0xb6, 0x94, 0xa3, 0xbd, 0xd1, 0xae, 0x75, + 0xe9, 0x2a, 0xcb, 0xd5, 0x7d, 0xf9, 0x7a, 0x9e, 0x43, 0x19, 0x52, 0xd4, + 0xdd, 0x9e, 0xaa, 0xaa, 0x95, 0x99, 0xab, 0x47, 0x52, 0x3b, 0x67, 0x69, + 0x24, 0x6a, 0xbf, 0x9a, 0xde, 0xee, 0xd6, 0xb1, 0xb3, 0x8d, 0x29, 0xaf, + 0x39, 0x86, 0x09, 0xa4, 0x44, 0x48, 0x49, 0x44, 0x85, 0x4c, 0x26, 0x26, + 0x11, 0x10, 0x64, 0x0b, 0x78, 0xba, 0x60, 0x0c, 0x01, 0x00, 0xd4, 0xc0, + 0x30, 0x2d, 0x8c, 0x2f, 0xec, 0x8c, 0xe3, 0x14, 0xa3, 0x8c, 0x15, 0x41, + 0xe4, 0xc0, 0x60, 0x08, 0x80, 0xa0, 0x1e, 0x82, 0x46, 0x06, 0x9e, 0x70, + 0xc3, 0xc8, 0x60, 0x54, 0x0e, 0xa9, 0x3e, 0xe7, 0x8e, 0x96, 0x04, 0x7a, + 0x70, 0xe2, 0x70, 0x42, 0x0c, 0xdb, 0x2a, 0x50, 0x96, 0x62, 0xf8, 0x73, + 0x3d, 0x3d, 0xd4, 0x27, 0x50, 0x8b, 0xbd, 0x29, 0xd2, 0x61, 0x18, 0x72, + 0x38, 0x11, 0x67, 0xa9, 0x68, 0x7c, 0x9a, 0x67, 0x33, 0x0a, 0xda, 0x38, + 0x91, 0x1f, 0x2b, 0x07, 0x12, 0x1d, 0x18, 0xd8, 0xab, 0xf3, 0xc5, 0x40, + 0x79, 0x1f, 0x85, 0xb9, 0xb4, 0xff, 0x5a, 0xa2, 0x6d, 0x28, 0x7d, 0x13, + 0x7b, 0x31, 0x23, 0x54, 0xec, 0x86, 0x89, 0xda, 0x9d, 0x52, 0xa7, 0xe0, + 0x21, 0x8e, 0x47, 0x3b, 0x12, 0x85, 0x4e, 0x95, 0x2e, 0x6a, 0x04, 0xe2, + 0x80, 0x99, 0x94, 0x2c, 0xe6, 0x89, 0xe9, 0x78, 0x48, 0x6a, 0x7c, 0xf5, + 0x67, 0x37, 0xe0, 0x23, 0x1b, 0x53, 0xe7, 0x3a, 0x41, 0x0c, 0x6d, 0x4d, + 0xab, 0x93, 0x8a, 0xa3, 0x09, 0x2a, 0x93, 0x3f, 0x4e, 0xc3, 0xfd, 0x12, + 0xae, 0x54, 0xe5, 0x5e, 0xe0, 0xb6, 0x98, 0x6c, 0x33, 0xea, 0xce, 0x87, + 0xbb, 0x50, 0x1a, 0x0c, 0x0b, 0xd7, 0x57, 0x42, 0x42, 0x0e, 0x13, 0xfc, + 0xda, 0x3a, 0x10, 0xb5, 0x09, 0xff, 0xfb, 0xd4, 0x60, 0x5f, 0x8d, 0xd8, + 0x6e, 0x70, 0x3d, 0x0b, 0xcf, 0x7b, 0x70, 0x61, 0x4e, 0x08, 0x22, 0x18, + 0x65, 0x6e, 0x20, 0x35, 0xc0, 0xf6, 0x2f, 0x3d, 0xed, 0xc1, 0xd3, 0xb8, + 0x20, 0x04, 0x61, 0x99, 0xb8, 0x36, 0x86, 0x81, 0x79, 0x02, 0xca, 0xc4, + 0x51, 0x62, 0x39, 0x92, 0x5a, 0x71, 0x73, 0x47, 0x30, 0xa1, 0x0e, 0x2f, + 0x55, 0x47, 0xdb, 0x0b, 0x23, 0x64, 0x8c, 0x6c, 0x09, 0x05, 0x23, 0x63, + 0x8a, 0x85, 0x8d, 0xe3, 0x85, 0x11, 0xad, 0x68, 0x7c, 0xe5, 0xf0, 0x9c, + 0xb3, 0xa1, 0xce, 0x6b, 0x9a, 0x41, 0x61, 0x37, 0xde, 0x2a, 0xc9, 0xe4, + 0x36, 0xf2, 0x89, 0xcc, 0xc8, 0x28, 0x54, 0x69, 0xd1, 0xba, 0xde, 0x71, + 0x25, 0x8b, 0x1a, 0x78, 0xb9, 0x10, 0x43, 0x7c, 0x8f, 0x0a, 0x12, 0x81, + 0xe4, 0x00, 0x31, 0xcc, 0x60, 0x25, 0x2a, 0x0d, 0xb7, 0xcc, 0x6a, 0xf3, + 0x79, 0x1f, 0x2c, 0xad, 0x3d, 0xf2, 0x4c, 0x82, 0x28, 0x8c, 0x94, 0x65, + 0xda, 0x8e, 0xee, 0xf5, 0xbb, 0xce, 0x17, 0x57, 0x4d, 0xbe, 0xc9, 0xb2, + 0xe8, 0xeb, 0x6a, 0x22, 0x3e, 0xe5, 0xa3, 0x12, 0xd6, 0xe4, 0xa9, 0x52, + 0xd7, 0x45, 0x7a, 0x51, 0x9d, 0x59, 0x7d, 0x11, 0x2f, 0x5b, 0x76, 0xaa, + 0x1d, 0x90, 0xe8, 0xb3, 0x21, 0xf5, 0x6d, 0x28, 0xdf, 0x6f, 0x56, 0xa2, + 0xe7, 0x5d, 0x9c, 0xa9, 0x63, 0xb8, 0x82, 0xb2, 0xd5, 0x87, 0x89, 0x09, + 0x35, 0x0a, 0xf4, 0x16, 0x07, 0x10, 0x30, 0xb8, 0xb8, 0xc1, 0x04, 0x18, + 0x1c, 0x41, 0x80, 0xb0, 0x1a, 0x98, 0x0a, 0x84, 0xe1, 0x82, 0x85, 0x1a, + 0x98, 0xe5, 0x10, 0xc1, 0x81, 0x30, 0x33, 0x88, 0x40, 0xa8, 0x50, 0x03, + 0xc4, 0x00, 0x00, 0xe7, 0x40, 0x4c, 0x51, 0x4a, 0x81, 0x20, 0x1c, 0x92, + 0x53, 0xaf, 0xd5, 0x6b, 0xb4, 0xb2, 0x84, 0x9d, 0x1d, 0x5a, 0x43, 0x97, + 0xec, 0xaf, 0x2d, 0xc8, 0x14, 0x24, 0x99, 0xa7, 0x13, 0x08, 0x04, 0xc4, + 0x76, 0x11, 0x8a, 0xa1, 0x90, 0xf1, 0x3f, 0x0d, 0x76, 0x04, 0x43, 0x53, + 0x89, 0xdc, 0xd8, 0x8c, 0x3d, 0x19, 0x30, 0x7a, 0x25, 0x0c, 0xb2, 0xfb, + 0x23, 0x44, 0x62, 0x71, 0x74, 0x38, 0xe4, 0x30, 0xa6, 0x71, 0x5c, 0x28, + 0x4b, 0xd3, 0xe5, 0xc1, 0xc1, 0x01, 0x58, 0x78, 0xa1, 0xca, 0x87, 0x47, + 0xc3, 0x3a, 0xb2, 0x12, 0xb9, 0xcd, 0xa9, 0xf4, 0x05, 0xe4, 0x25, 0xb5, + 0xe3, 0x11, 0x71, 0x7c, 0x5f, 0xcf, 0xd7, 0x25, 0x42, 0xe9, 0x1b, 0x56, + 0x24, 0x6b, 0xec, 0x30, 0x9f, 0x6a, 0x97, 0xcd, 0xa7, 0xfb, 0x92, 0x25, + 0xf9, 0xba, 0xba, 0x6f, 0x71, 0x71, 0x40, 0x39, 0xae, 0xac, 0x4e, 0x10, + 0xe7, 0x4c, 0xae, 0x08, 0xc6, 0x77, 0xea, 0xb6, 0x64, 0xeb, 0x1b, 0x4c, + 0x29, 0x97, 0x2c, 0xb2, 0x21, 0xd0, 0xda, 0x20, 0xa1, 0xc7, 0x0a, 0xc2, + 0xa9, 0x15, 0xd4, 0x2c, 0xc8, 0x4b, 0x13, 0x22, 0x9f, 0x09, 0xb8, 0x0b, + 0xb3, 0xf5, 0x4a, 0x77, 0x1f, 0xea, 0x43, 0xfd, 0x48, 0x92, 0x6b, 0x5d, + 0x42, 0x3d, 0xd0, 0xd7, 0xa8, 0x99, 0x9c, 0xd9, 0x15, 0x29, 0x44, 0x1a, + 0xfc, 0xf0, 0x1c, 0x9a, 0x91, 0x5b, 0x5c, 0xa7, 0xe0, 0x1f, 0x1d, 0xe2, + 0xb5, 0x5a, 0xcf, 0x0d, 0x8d, 0xb1, 0x62, 0xc6, 0x79, 0xda, 0xe2, 0x2f, + 0x09, 0x65, 0xdc, 0x61, 0x3e, 0x25, 0x87, 0xfa, 0x29, 0x00, 0x5c, 0x8c, + 0x46, 0xc4, 0x11, 0x0a, 0x27, 0xc4, 0x7d, 0x06, 0xf3, 0xac, 0x31, 0x31, + 0x00, 0x3c, 0x24, 0xc6, 0xa6, 0x93, 0x84, 0x71, 0x75, 0x23, 0x20, 0x24, + 0xc3, 0x82, 0xeb, 0x84, 0x43, 0x32, 0xfb, 0xf6, 0x99, 0xac, 0x76, 0xcc, + 0x06, 0x65, 0x63, 0xe9, 0x9c, 0xad, 0xb9, 0x51, 0xdb, 0x33, 0xe5, 0x33, + 0x6f, 0xcf, 0xde, 0x7e, 0x6e, 0xfc, 0xa6, 0xd9, 0xf1, 0x3d, 0xf2, 0x9f, + 0xd3, 0xf7, 0xbf, 0x72, 0xfa, 0xfe, 0xbf, 0xd6, 0x6f, 0xe5, 0x9b, 0x72, + 0xff, 0xda, 0x76, 0x6c, 0x89, 0xed, 0x0f, 0x11, 0xff, 0xf5, 0x52, 0xfb, + 0xde, 0xa7, 0xbc, 0xbf, 0xf5, 0xbb, 0x7a, 0xfb, 0x8f, 0xdb, 0x1e, 0xed, + 0xfe, 0x46, 0x4f, 0xfd, 0x8f, 0xf3, 0x73, 0xe9, 0x45, 0x38, 0xf4, 0x51, + 0x5a, 0x8a, 0x7a, 0x4c, 0x90, 0x7d, 0x4c, 0xb0, 0x90, 0xe0, 0x3d, 0xa3, + 0x82, 0x70, 0xf0, 0xaa, 0x20, 0x0c, 0x07, 0x00, 0xb4, 0xc0, 0xec, 0x1d, + 0x8c, 0x3c, 0xa1, 0xd4, 0xe0, 0xc0, 0x63, 0x0c, 0x22, 0x01, 0x24, 0xc0, + 0x8c, 0x03, 0x80, 0xc0, 0x02, 0xd7, 0x9f, 0x54, 0xe9, 0x87, 0x61, 0xf6, + 0x77, 0x95, 0xd5, 0x85, 0xf5, 0x13, 0x6d, 0x18, 0x50, 0xd5, 0x51, 0xfd, + 0x08, 0xd4, 0x43, 0x8c, 0xd6, 0x55, 0x79, 0x90, 0x81, 0x64, 0x1c, 0x70, + 0x58, 0x11, 0x28, 0xb9, 0xd4, 0xe1, 0xd0, 0xf0, 0xdc, 0x7c, 0x5c, 0x53, + 0xc7, 0x38, 0x92, 0x27, 0x10, 0x96, 0x25, 0xe5, 0x4a, 0x71, 0x21, 0xb7, + 0x35, 0xd9, 0x86, 0xa2, 0x55, 0xb3, 0x44, 0x60, 0x43, 0xd3, 0xca, 0xf6, + 0x48, 0x09, 0xf5, 0xa5, 0xc2, 0x55, 0x4a, 0x9e, 0x55, 0xac, 0x28, 0x94, + 0x2e, 0x4d, 0x6a, 0xce, 0xa3, 0xca, 0xad, 0x20, 0x8d, 0x46, 0x75, 0x5b, + 0xe5, 0x99, 0x18, 0x34, 0x84, 0xc1, 0xaa, 0x7c, 0xf1, 0x62, 0xda, 0xad, + 0x4c, 0xe6, 0xf8, 0xe5, 0x60, 0x62, 0x4f, 0xe2, 0x4b, 0x2a, 0xd0, 0xe4, + 0x33, 0x2d, 0xe9, 0xfd, 0x46, 0x7e, 0x8d, 0x54, 0x2a, 0x16, 0x0f, 0xf4, + 0x9c, 0xed, 0x70, 0x99, 0x16, 0x1a, 0x2d, 0x68, 0x36, 0x6f, 0x84, 0xe0, + 0x87, 0x2a, 0x4b, 0xea, 0x8c, 0xe7, 0x50, 0x29, 0x8f, 0x05, 0x56, 0x50, + 0xb7, 0x19, 0xac, 0x7f, 0xee, 0xff, 0xfb, 0xd4, 0x60, 0x5a, 0x8d, 0xd7, + 0xdd, 0x70, 0x3d, 0x8b, 0xcf, 0x7b, 0x70, 0x6c, 0xee, 0x08, 0x12, 0x18, + 0x65, 0x6e, 0x20, 0x3d, 0xc0, 0xf4, 0x0f, 0x3d, 0xed, 0xc1, 0xa9, 0x38, + 0x20, 0x48, 0x61, 0x95, 0xb8, 0x2c, 0xca, 0x18, 0xea, 0xa5, 0x62, 0xdb, + 0xf6, 0x66, 0x15, 0xdb, 0x1b, 0x39, 0xde, 0x7a, 0x55, 0x44, 0x8e, 0x59, + 0x61, 0x82, 0xa0, 0x4c, 0xb1, 0xb9, 0x39, 0x2d, 0xb1, 0x2e, 0xde, 0x26, + 0x0d, 0xf5, 0xe5, 0x14, 0x08, 0x67, 0x2b, 0xf5, 0xa5, 0xd3, 0x0a, 0xa9, + 0xb2, 0xaf, 0xd0, 0xd5, 0xb2, 0x7e, 0x72, 0x36, 0x14, 0x36, 0x2c, 0x29, + 0xd5, 0x71, 0x71, 0x2e, 0x64, 0x35, 0x69, 0x5a, 0xcc, 0x6f, 0x99, 0x46, + 0x08, 0x36, 0x09, 0x6b, 0x40, 0x00, 0x7f, 0x55, 0x78, 0x26, 0xd8, 0x9c, + 0xa2, 0x96, 0xc1, 0xa9, 0x48, 0xdb, 0x39, 0x4a, 0x4d, 0xc3, 0x71, 0x81, + 0x51, 0xd1, 0x43, 0x52, 0x31, 0x84, 0x10, 0x72, 0x9b, 0xb7, 0xa9, 0xb1, + 0x95, 0xec, 0xb9, 0xd2, 0x55, 0x44, 0xde, 0xe7, 0xb3, 0x75, 0x22, 0xc8, + 0x43, 0x3b, 0x3b, 0xaa, 0x4b, 0x96, 0xab, 0xb1, 0x56, 0xa7, 0xe4, 0xda, + 0x97, 0xd7, 0xd9, 0x16, 0xac, 0xe6, 0xf6, 0xb5, 0x90, 0x94, 0x54, 0x6d, + 0x1a, 0xe8, 0xee, 0x47, 0xed, 0x66, 0x4a, 0x39, 0xf4, 0x76, 0x22, 0x32, + 0x90, 0x62, 0x32, 0xb9, 0xd5, 0x15, 0xc8, 0x83, 0x06, 0x8e, 0x77, 0x04, + 0x70, 0xe0, 0x7c, 0x03, 0x12, 0x09, 0x07, 0xc0, 0xce, 0xa2, 0x83, 0x04, + 0xc3, 0x02, 0x41, 0xf1, 0x33, 0x01, 0xe0, 0x19, 0x30, 0x55, 0x03, 0xc3, + 0x16, 0x05, 0xa7, 0x3c, 0x72, 0x0b, 0x43, 0x0c, 0x40, 0x15, 0x01, 0x03, + 0x90, 0xb0, 0x16, 0xa6, 0xca, 0x70, 0x36, 0xce, 0x1b, 0x9e, 0xb7, 0x5e, + 0x88, 0x48, 0x77, 0x9f, 0xe7, 0x69, 0x61, 0x3d, 0xda, 0x0b, 0xb1, 0x85, + 0x22, 0x09, 0xf9, 0xc0, 0x87, 0xd1, 0x91, 0x1a, 0x53, 0x21, 0x07, 0xc9, + 0xd8, 0xa8, 0xd9, 0xcc, 0x37, 0x55, 0xca, 0xe7, 0x48, 0x51, 0x92, 0x5f, + 0xb8, 0x75, 0x38, 0x30, 0xa9, 0xd3, 0x2d, 0x6a, 0xe2, 0xe8, 0x79, 0x42, + 0x48, 0xa8, 0xd3, 0xe8, 0x72, 0x85, 0x2e, 0x93, 0x53, 0x46, 0x5c, 0x2b, + 0xa1, 0x2c, 0x2b, 0xd1, 0x05, 0x23, 0xf5, 0x0a, 0xbd, 0xb5, 0x0c, 0x33, + 0x17, 0xad, 0x19, 0x89, 0x48, 0xd8, 0x3e, 0x5f, 0x1e, 0xaf, 0xd7, 0xd5, + 0xa8, 0xc4, 0x6e, 0x64, 0x8c, 0x7f, 0x76, 0xc7, 0x3e, 0xb9, 0x43, 0xb0, + 0x78, 0x21, 0xa7, 0x82, 0xe5, 0xc1, 0x89, 0x94, 0xf5, 0x84, 0x73, 0x2e, + 0x61, 0x69, 0x5b, 0x9c, 0x69, 0x08, 0x60, 0x6a, 0x4e, 0x2e, 0x53, 0x27, + 0xd5, 0xe1, 0xbf, 0x56, 0x24, 0x09, 0xea, 0xf9, 0x74, 0x45, 0x33, 0xa2, + 0x4c, 0x43, 0x95, 0x3e, 0xb8, 0x42, 0x14, 0x91, 0x4f, 0x95, 0xc2, 0x98, + 0xb0, 0x97, 0x16, 0xd2, 0xf0, 0xa6, 0xba, 0x29, 0x17, 0xa3, 0xf9, 0x20, + 0xb9, 0x99, 0x58, 0x7a, 0x19, 0xf5, 0x7a, 0x73, 0x37, 0x2a, 0x54, 0x26, + 0xc4, 0x46, 0xb9, 0xe1, 0xaf, 0x26, 0x9a, 0x8f, 0x09, 0x30, 0x69, 0x40, + 0x46, 0xa7, 0x14, 0x90, 0x8d, 0xd4, 0xe2, 0x2a, 0x8b, 0x4c, 0xd1, 0xdd, + 0xa4, 0x8c, 0x48, 0xe8, 0xe5, 0x4a, 0x61, 0xd2, 0x35, 0x55, 0x61, 0x17, + 0x34, 0x18, 0x93, 0x45, 0xb0, 0xba, 0x94, 0x8f, 0xce, 0x31, 0x48, 0x30, + 0x11, 0xe7, 0xe2, 0x00, 0x2d, 0x45, 0x13, 0x58, 0xec, 0x23, 0x69, 0x22, + 0xfc, 0x16, 0x05, 0xce, 0xcb, 0x60, 0xc6, 0x13, 0x68, 0xfa, 0x31, 0x23, + 0x66, 0xe4, 0xf5, 0xb5, 0x1a, 0xaa, 0x23, 0x78, 0xfe, 0x69, 0x04, 0xbb, + 0x80, 0xc2, 0x68, 0x86, 0xc5, 0xad, 0xd2, 0x09, 0x75, 0x4a, 0x5a, 0x8b, + 0xbd, 0xd4, 0xe5, 0x3b, 0x96, 0x7a, 0xdd, 0x52, 0x8b, 0xbf, 0x3c, 0xc5, + 0x7e, 0xa8, 0xe3, 0x2f, 0x77, 0x4d, 0x8e, 0xa6, 0xda, 0xa8, 0xc3, 0x99, + 0x3e, 0xcd, 0x3b, 0x39, 0x0d, 0x7b, 0x6d, 0xde, 0xe4, 0xdd, 0x48, 0xca, + 0x63, 0xb6, 0x5d, 0x90, 0x88, 0xec, 0xd2, 0x11, 0x14, 0xaf, 0x9c, 0xf8, + 0xbb, 0x8b, 0xc6, 0x90, 0x3c, 0x81, 0x43, 0x50, 0x69, 0x14, 0x3e, 0x61, + 0x33, 0x90, 0x24, 0x22, 0x1f, 0x0e, 0xa0, 0x74, 0x65, 0x00, 0x2b, 0x00, + 0x00, 0x34, 0x01, 0xa6, 0x06, 0x20, 0x0a, 0x61, 0xfc, 0x1b, 0x07, 0x32, + 0x81, 0x06, 0x61, 0x0c, 0x00, 0x01, 0x80, 0x7e, 0x8c, 0x2a, 0xc6, 0x95, + 0x0e, 0xb3, 0xb7, 0x6d, 0x61, 0xa0, 0x2d, 0x9f, 0x1a, 0x56, 0x29, 0x96, + 0x99, 0xd2, 0x7a, 0x45, 0x99, 0x08, 0x59, 0xce, 0x81, 0x1e, 0xa4, 0xf3, + 0x3b, 0x3b, 0x3b, 0xf2, 0x81, 0xb9, 0x4c, 0xb8, 0x50, 0xaf, 0x36, 0xb7, + 0xb5, 0x2f, 0x47, 0x16, 0x14, 0x24, 0x2a, 0x8d, 0x14, 0xf1, 0xda, 0x4f, + 0xb2, 0x95, 0x7e, 0xcc, 0xaf, 0x95, 0xaa, 0x2a, 0xcc, 0x0e, 0xee, 0xcd, + 0x89, 0x4d, 0xcb, 0x56, 0xa1, 0xf9, 0xb8, 0x7a, 0x27, 0xb9, 0xfa, 0x49, + 0xd9, 0x88, 0xec, 0x5e, 0x43, 0x21, 0x88, 0xc0, 0xf1, 0x39, 0xc9, 0x6e, + 0x52, 0xa8, 0xb5, 0xad, 0xc7, 0x26, 0xad, 0xd7, 0xab, 0x29, 0x83, 0xed, + 0x56, 0xa4, 0x96, 0xcd, 0x49, 0xe9, 0x60, 0x6a, 0xf4, 0x91, 0x99, 0x54, + 0xa2, 0x45, 0x12, 0x92, 0x48, 0xe4, 0x56, 0x67, 0xa9, 0x64, 0x6f, 0x85, + 0x5a, 0x4a, 0xf9, 0xcb, 0x2b, 0xcd, 0x5f, 0x8c, 0xc8, 0xa5, 0xb2, 0x0a, + 0x1a, 0x59, 0x1c, 0x09, 0x4d, 0x4f, 0x3b, 0x2c, 0x86, 0x65, 0x31, 0x9a, + 0x58, 0x3e, 0x9e, 0x03, 0xa0, 0xac, 0xf2, 0xc6, 0x6d, 0x4b, 0x65, 0x72, + 0xca, 0x3a, 0x58, 0x79, 0xe7, 0xff, 0xfb, 0xd4, 0x60, 0x5e, 0x09, 0x98, + 0x13, 0x72, 0xbe, 0x33, 0xcf, 0xc3, 0x70, 0x72, 0x4e, 0x08, 0x16, 0x0c, + 0x65, 0x6e, 0x1d, 0xd9, 0xce, 0xfa, 0x2f, 0x3d, 0xed, 0xc1, 0xd0, 0x38, + 0x20, 0x04, 0x91, 0xa1, 0xb8, 0x88, 0xe1, 0x03, 0xc1, 0x51, 0x7b, 0x16, + 0xbb, 0x4d, 0x4b, 0x41, 0x43, 0x1b, 0x82, 0x7e, 0x71, 0xfa, 0x96, 0xe1, + 0xd8, 0x6a, 0x53, 0x85, 0x49, 0x74, 0xaa, 0x0a, 0xc6, 0x66, 0xdf, 0xd3, + 0x5c, 0x8c, 0x67, 0x6b, 0x73, 0xdb, 0xec, 0x39, 0x2c, 0xa2, 0x8e, 0xb9, + 0x13, 0xd2, 0x49, 0x35, 0x0d, 0x77, 0x26, 0x54, 0xd7, 0xe5, 0xcf, 0x85, + 0x2c, 0x5d, 0xf7, 0x66, 0x4a, 0x05, 0x46, 0xfc, 0x06, 0x11, 0xc0, 0x60, + 0x2d, 0xd4, 0xbf, 0xc0, 0x05, 0x64, 0x00, 0x05, 0x6c, 0x04, 0x0c, 0x61, + 0x2c, 0x82, 0xdc, 0x77, 0x70, 0xb4, 0x8d, 0x68, 0x5e, 0x31, 0xa8, 0x62, + 0x04, 0x3a, 0x41, 0x35, 0x59, 0x6d, 0xeb, 0x0b, 0x31, 0x80, 0x3c, 0x32, + 0x92, 0x90, 0x63, 0xb8, 0xf8, 0xd2, 0x0e, 0x56, 0xa0, 0xfb, 0x33, 0x1d, + 0x11, 0x52, 0xb7, 0xa3, 0x2d, 0xb7, 0x29, 0x91, 0xaf, 0x6a, 0xf4, 0x43, + 0x14, 0xcb, 0xcb, 0xde, 0xfa, 0xdd, 0xda, 0x31, 0x9d, 0x8a, 0xd6, 0xdd, + 0xcf, 0xa6, 0xea, 0xff, 0x75, 0x23, 0xa1, 0x25, 0x45, 0x47, 0xa9, 0xdc, + 0x8a, 0x65, 0x7a, 0xb1, 0x50, 0xb2, 0x13, 0x39, 0xc8, 0x45, 0xb0, 0xf9, + 0x08, 0xf1, 0xa0, 0xb1, 0x71, 0xe2, 0xca, 0xe2, 0x8e, 0x34, 0xa6, 0x0b, + 0x41, 0x50, 0xf8, 0x59, 0x06, 0x8b, 0x8a, 0x20, 0x30, 0x3f, 0x11, 0x90, + 0xc0, 0x4c, 0x0c, 0xcc, 0x27, 0x0f, 0xc0, 0xda, 0x78, 0x3e, 0x4c, 0x12, + 0x80, 0x90, 0x04, 0x03, 0x69, 0xd0, 0xa4, 0xd7, 0x22, 0xad, 0xb7, 0x15, + 0x51, 0xfa, 0xf8, 0xa3, 0x6a, 0xc6, 0xc8, 0xe7, 0x0d, 0x08, 0x5a, 0xaf, + 0x6f, 0x64, 0x48, 0x31, 0x25, 0x11, 0x06, 0x12, 0xd3, 0x02, 0x3d, 0x08, + 0x3a, 0x5b, 0xd4, 0x4d, 0xc4, 0xbc, 0x7c, 0x37, 0x9e, 0xa7, 0xb1, 0xc6, + 0x79, 0x30, 0x99, 0x0a, 0xc6, 0x76, 0xd9, 0x66, 0x65, 0x9d, 0x47, 0x3b, + 0x1b, 0x52, 0xd3, 0xf6, 0x06, 0xb6, 0xd7, 0x35, 0xc4, 0xaf, 0x0e, 0x46, + 0x5e, 0x8b, 0x68, 0x3d, 0xdf, 0x3c, 0xd3, 0xc6, 0x4b, 0x21, 0x5b, 0x42, + 0xa4, 0x53, 0xae, 0x98, 0x14, 0x2e, 0x0e, 0x2a, 0x86, 0xe6, 0x67, 0x6d, + 0x99, 0x7a, 0xe0, 0xba, 0x72, 0x66, 0x6d, 0x6f, 0x65, 0xaa, 0x69, 0xbd, + 0x5c, 0xab, 0x73, 0x95, 0x81, 0x9e, 0x23, 0x7e, 0x5d, 0xa2, 0x57, 0x4e, + 0x17, 0x73, 0x56, 0x62, 0x1a, 0xe1, 0x4f, 0x23, 0x02, 0x9a, 0xb1, 0x56, + 0xaa, 0x9c, 0x8b, 0x16, 0x65, 0x7c, 0x79, 0x95, 0x4e, 0x9f, 0x4a, 0xca, + 0xf6, 0x14, 0x38, 0x2a, 0x18, 0x13, 0xce, 0xe7, 0x4d, 0x41, 0x5c, 0xb0, + 0x47, 0x70, 0x8d, 0x86, 0x69, 0xe4, 0x58, 0x60, 0x3b, 0x1c, 0x62, 0xbb, + 0xfa, 0x5d, 0x4a, 0xcb, 0xb7, 0x8d, 0x7a, 0x83, 0x2a, 0xd3, 0xa6, 0xb6, + 0xa8, 0x6f, 0x1b, 0x19, 0xbd, 0xe1, 0xa9, 0xd5, 0xec, 0x6c, 0x5b, 0x57, + 0x21, 0xef, 0x18, 0xd8, 0x9d, 0xb5, 0xc3, 0x96, 0x31, 0x8a, 0xd6, 0x85, + 0xaa, 0x25, 0x86, 0xcc, 0x68, 0xa1, 0xa7, 0xb2, 0x38, 0xbe, 0x23, 0x92, + 0x4c, 0x07, 0xe9, 0xf6, 0x02, 0xf9, 0x6f, 0x1b, 0x6e, 0xfe, 0x52, 0x1c, + 0x1c, 0x27, 0x67, 0x9a, 0x82, 0x6d, 0xec, 0x83, 0x0a, 0xba, 0x93, 0xa2, + 0x20, 0xef, 0x44, 0x43, 0xd6, 0xd7, 0x07, 0x46, 0x16, 0x83, 0xd0, 0xd8, + 0x9a, 0xe0, 0x97, 0x26, 0x21, 0x66, 0xac, 0x8b, 0x01, 0x96, 0x70, 0xc6, + 0x4e, 0xde, 0x38, 0xeb, 0x8b, 0xa9, 0xfb, 0xd2, 0x3e, 0xd7, 0xab, 0xb9, + 0x7e, 0x3e, 0xab, 0x87, 0xf9, 0xad, 0x2b, 0x7f, 0x88, 0x7b, 0x9e, 0x22, + 0xea, 0x2f, 0xf9, 0xbe, 0x59, 0x38, 0x97, 0xfb, 0xc7, 0x55, 0xbd, 0x45, + 0x5a, 0xf5, 0x2b, 0xdd, 0x52, 0x42, 0xcc, 0xcc, 0x77, 0x5d, 0xd2, 0x4b, + 0xc6, 0x9c, 0xed, 0x69, 0x37, 0x56, 0xf4, 0x9d, 0xd9, 0x75, 0xb1, 0x82, + 0xb6, 0xc1, 0x57, 0x93, 0x4c, 0x38, 0xc0, 0xa0, 0xe1, 0x82, 0x81, 0x2c, + 0x84, 0x12, 0xe1, 0xd1, 0x6a, 0x0a, 0x80, 0x80, 0x8c, 0x15, 0x4c, 0x0f, + 0x98, 0x38, 0xcf, 0xa8, 0x55, 0x4c, 0x04, 0x00, 0xe8, 0x2e, 0x01, 0x23, + 0x80, 0x04, 0xc8, 0xde, 0xc5, 0x69, 0x86, 0xaf, 0x27, 0x24, 0x46, 0x80, + 0x93, 0x2a, 0xcf, 0x15, 0x11, 0xfc, 0x9c, 0x7c, 0xe1, 0x95, 0x02, 0xad, + 0x99, 0x2e, 0xa0, 0x65, 0x61, 0x3a, 0x19, 0xdc, 0xce, 0x25, 0x64, 0xea, + 0xd8, 0x05, 0xe2, 0xc7, 0x9c, 0x86, 0xf3, 0x52, 0xa5, 0x9a, 0x45, 0x23, + 0x4a, 0xe6, 0x88, 0xcb, 0xd9, 0x4d, 0x46, 0xc7, 0x87, 0xf2, 0x95, 0x15, + 0x0d, 0x5f, 0xb4, 0xfe, 0x6b, 0x8a, 0x28, 0x54, 0x6f, 0x15, 0x36, 0xbc, + 0x26, 0x5a, 0x5f, 0x6d, 0xb9, 0x54, 0xc5, 0x54, 0xb1, 0xc3, 0x86, 0xf2, + 0xae, 0x58, 0x5b, 0x76, 0xa3, 0xbb, 0x73, 0x0c, 0xd4, 0x6d, 0x4c, 0xd5, + 0x09, 0x55, 0x6d, 0xfb, 0xa8, 0x89, 0x28, 0x11, 0xd9, 0xa3, 0x29, 0x60, + 0x2e, 0xec, 0x7c, 0x3c, 0x73, 0x7a, 0xa5, 0xa3, 0x3b, 0xd5, 0x5c, 0x45, + 0xad, 0x40, 0xb2, 0x18, 0x9d, 0x3a, 0xaa, 0xfd, 0x8a, 0xae, 0xe3, 0x2b, + 0x55, 0x8f, 0x5b, 0xe3, 0xb9, 0xcc, 0x9d, 0x5b, 0x71, 0x61, 0x82, 0xce, + 0xc8, 0x8e, 0x87, 0x15, 0xe6, 0xa0, 0x1d, 0x28, 0xf4, 0xeb, 0x1c, 0xf1, + 0x6f, 0x01, 0xfb, 0x3a, 0x1d, 0x1a, 0x55, 0x5a, 0xdc, 0x07, 0x69, 0xdd, + 0x4a, 0xae, 0x7c, 0xba, 0x81, 0xff, 0xfb, 0xd4, 0x60, 0x60, 0x0f, 0xd7, + 0x82, 0x74, 0x3e, 0x03, 0xcf, 0x7b, 0x70, 0x70, 0x2e, 0x08, 0x12, 0x0c, + 0x68, 0x6e, 0x24, 0xdd, 0xd0, 0xf2, 0x0f, 0x3f, 0x0d, 0xc2, 0x06, 0x38, + 0x1f, 0xc8, 0x63, 0x21, 0xb8, 0x06, 0xcf, 0xb0, 0xf9, 0x5d, 0x5d, 0x25, + 0xdc, 0xea, 0x92, 0x52, 0xe5, 0x2a, 0x8c, 0x7e, 0xfd, 0x4a, 0xa3, 0x56, + 0x1d, 0x68, 0x4b, 0x89, 0xd8, 0x8f, 0x53, 0xab, 0x54, 0x2d, 0xc5, 0xe1, + 0x15, 0x2f, 0x63, 0x73, 0x4e, 0x88, 0xdc, 0x03, 0x64, 0x2b, 0x44, 0x41, + 0x36, 0x07, 0x33, 0xcc, 0x2d, 0xda, 0x00, 0x03, 0xcc, 0x54, 0x02, 0x16, + 0x29, 0x87, 0x0a, 0x3b, 0xb9, 0xd4, 0xc1, 0x5c, 0xd4, 0xe1, 0x15, 0x3c, + 0x99, 0xcc, 0x41, 0xd7, 0x14, 0xa1, 0x2d, 0x14, 0x80, 0xc2, 0x40, 0x8c, + 0x28, 0x58, 0xf9, 0x19, 0xce, 0x5c, 0xde, 0x3f, 0xb8, 0xaf, 0xff, 0x6e, + 0x27, 0xb6, 0x98, 0x9a, 0xf6, 0xe0, 0x74, 0x4f, 0xe8, 0x9e, 0xf1, 0x17, + 0x33, 0x14, 0xf3, 0x09, 0x13, 0xdf, 0x13, 0x1d, 0xf5, 0xcc, 0xfd, 0x7d, + 0xd7, 0x37, 0xd5, 0x2a, 0x5d, 0x77, 0xf0, 0xff, 0xc7, 0x72, 0x90, 0xd3, + 0x71, 0x0c, 0xe9, 0x5c, 0xc3, 0x27, 0xfe, 0xfc, 0xc7, 0xb4, 0xe9, 0x24, + 0x5e, 0x92, 0x97, 0x1b, 0x9a, 0xcc, 0x5d, 0x8c, 0x24, 0x70, 0xf2, 0xe8, + 0x92, 0xcf, 0x14, 0x10, 0x83, 0x22, 0x39, 0x04, 0x17, 0x26, 0x02, 0x60, + 0x58, 0x60, 0x30, 0x10, 0xe6, 0x0c, 0xb2, 0x0c, 0x65, 0xee, 0x3a, 0xe6, + 0x07, 0xa0, 0xa8, 0x60, 0x00, 0x04, 0x68, 0x7c, 0x58, 0x00, 0x57, 0x95, + 0x8b, 0xba, 0x2c, 0xc4, 0xb6, 0x6a, 0x59, 0x26, 0x16, 0x88, 0x8d, 0xa4, + 0xfc, 0xf9, 0x38, 0xd6, 0x5c, 0x4e, 0xd3, 0x30, 0xf4, 0x6a, 0x1c, 0x26, + 0x53, 0xd5, 0x41, 0x48, 0x72, 0x8b, 0x7b, 0xd3, 0x9c, 0x5b, 0x5c, 0xe4, + 0x2d, 0xe8, 0x49, 0x72, 0x1b, 0x26, 0x22, 0x99, 0x09, 0x78, 0x9d, 0x45, + 0x0f, 0xf1, 0x84, 0x76, 0x97, 0x38, 0x45, 0xfc, 0xe0, 0x80, 0x64, 0x42, + 0x4a, 0x95, 0x2c, 0x84, 0xb1, 0x5d, 0x8b, 0xc1, 0x05, 0xbf, 0x90, 0x5d, + 0x2c, 0xae, 0x86, 0xcb, 0xea, 0xee, 0xbf, 0xd4, 0xf9, 0x43, 0x71, 0xb8, + 0xc4, 0x3f, 0x0e, 0x33, 0xda, 0x77, 0x2e, 0x49, 0x46, 0xdd, 0xe7, 0x5b, + 0xd7, 0xf2, 0x5d, 0x15, 0x7d, 0x20, 0xa7, 0x21, 0xde, 0x9d, 0x6e, 0xed, + 0x85, 0x96, 0xb6, 0x19, 0x5d, 0x23, 0x71, 0x7f, 0x1a, 0x13, 0xec, 0xd6, + 0x5d, 0x6a, 0x09, 0xa6, 0xc4, 0xb5, 0xa5, 0xaf, 0xb3, 0xef, 0x08, 0x5a, + 0x0d, 0x7e, 0xdc, 0xa2, 0x38, 0xee, 0x3d, 0x30, 0x24, 0x3d, 0x2e, 0x97, + 0x38, 0xaf, 0xfd, 0x1f, 0xb8, 0x8f, 0x3c, 0x0b, 0x1b, 0x7c, 0x25, 0x70, + 0x3b, 0x95, 0xd9, 0x3c, 0x71, 0xb0, 0xbb, 0x51, 0x29, 0x7a, 0xb0, 0x3f, + 0xae, 0x9c, 0x3d, 0x0c, 0xc6, 0xa4, 0xd0, 0xb6, 0x5a, 0xd7, 0x56, 0x0e, + 0x3f, 0x2e, 0x67, 0x16, 0xda, 0xfb, 0xf7, 0x1f, 0x81, 0xa1, 0x87, 0xb6, + 0x19, 0x87, 0x68, 0x66, 0x22, 0x33, 0xaf, 0x3d, 0x78, 0xe4, 0x67, 0x28, + 0x7a, 0xb3, 0x88, 0xdb, 0x3e, 0x71, 0xf7, 0x32, 0x1c, 0x95, 0xb6, 0x2a, + 0xd2, 0xf7, 0xc1, 0xf7, 0xa1, 0x90, 0xf7, 0x6d, 0x61, 0xff, 0x6e, 0x4f, + 0xa4, 0x23, 0x90, 0x5b, 0x78, 0x9a, 0xcd, 0xca, 0x03, 0x86, 0x5e, 0x76, + 0x84, 0xa6, 0x2d, 0x25, 0x39, 0xd5, 0x7a, 0x6e, 0x55, 0x67, 0x0e, 0xe2, + 0x1c, 0x1d, 0x86, 0x64, 0xad, 0x61, 0x62, 0xa1, 0x90, 0xa8, 0x94, 0xa9, + 0x24, 0x15, 0x39, 0x59, 0x94, 0x94, 0xfe, 0x12, 0x27, 0x7c, 0x12, 0x50, + 0x24, 0x92, 0x68, 0xf2, 0xb0, 0x94, 0xd9, 0x7c, 0xbb, 0x2d, 0x16, 0xf3, + 0x36, 0x63, 0x30, 0xeb, 0xaf, 0x6e, 0xe7, 0xa3, 0x78, 0xf7, 0xaf, 0xfe, + 0x9f, 0x26, 0x8d, 0x4f, 0x4c, 0x18, 0x83, 0x64, 0x1e, 0x4e, 0x42, 0x24, + 0xc5, 0xf7, 0xa0, 0xdb, 0x6e, 0xe6, 0xea, 0xe3, 0x67, 0xb8, 0x91, 0xf6, + 0xf5, 0xa4, 0x73, 0x4a, 0x91, 0x1f, 0xd5, 0x76, 0xcf, 0x2c, 0x8f, 0x51, + 0x18, 0xd9, 0x8b, 0x5a, 0x63, 0xde, 0x6c, 0x61, 0x0d, 0x11, 0xcc, 0xb4, + 0xb5, 0xd2, 0xa2, 0x54, 0xbd, 0xe9, 0x6b, 0xd4, 0x35, 0x7c, 0x52, 0xfa, + 0x5b, 0xc5, 0xd0, 0xf7, 0xe2, 0x56, 0xde, 0xf4, 0x1b, 0xdd, 0x96, 0x35, + 0x49, 0x9e, 0xda, 0x14, 0x28, 0x55, 0x1e, 0x68, 0x34, 0x12, 0x07, 0x31, + 0x00, 0xf0, 0x94, 0x45, 0x10, 0x07, 0x05, 0x83, 0xfa, 0x0f, 0x05, 0x01, + 0xf1, 0x1a, 0x40, 0x0c, 0x03, 0x40, 0x48, 0xc0, 0x88, 0x10, 0xcc, 0x2a, + 0xd5, 0xf0, 0xd8, 0x74, 0x3b, 0xcc, 0x17, 0x40, 0x88, 0xc0, 0x20, 0x00, + 0x50, 0x0c, 0xad, 0xac, 0x61, 0xfe, 0x9a, 0x93, 0x34, 0x99, 0x1c, 0x64, + 0x93, 0xbb, 0xe8, 0x72, 0xe6, 0x54, 0xc4, 0xa6, 0x51, 0xa6, 0xd1, 0x95, + 0x88, 0xf0, 0x1b, 0x52, 0x4e, 0x28, 0x52, 0x71, 0x06, 0x2e, 0x88, 0x23, + 0x6d, 0x5a, 0x76, 0x97, 0x62, 0x74, 0x5f, 0xc7, 0xa1, 0x3e, 0x62, 0x90, + 0xa3, 0x8d, 0xbd, 0x0e, 0x42, 0x97, 0x0a, 0xf3, 0x85, 0xea, 0x3a, 0x34, + 0x47, 0x33, 0xbd, 0xe3, 0x1b, 0x5f, 0x61, 0x94, 0x9c, 0x35, 0xb6, 0x6d, + 0xfe, 0x11, 0xcc, 0x50, 0x63, 0x31, 0xa7, 0x9e, 0x2c, 0x4d, 0x56, 0xa8, + 0xd1, 0xd2, 0xcb, 0xa5, 0x02, 0xb9, 0x20, 0xa3, 0x62, 0xa4, 0x47, 0x37, + 0xb3, 0xa6, 0x9a, 0x58, 0xd4, 0x56, 0x45, 0xab, 0xd9, 0xd5, 0x4a, 0x78, + 0x8b, 0xcf, 0x27, 0x88, 0xa3, 0x2d, 0x85, 0x81, 0x0c, 0x6d, 0x46, 0xaa, + 0x57, 0x45, 0xf4, 0xb9, 0x26, 0xff, 0xfb, 0xd4, 0x60, 0x49, 0x8d, 0x97, + 0xc7, 0x70, 0xbd, 0x8b, 0xcf, 0x7b, 0x70, 0x68, 0xce, 0x08, 0x29, 0x08, + 0xc3, 0x6e, 0x1e, 0x99, 0xce, 0xf8, 0x0f, 0x3d, 0xed, 0xc1, 0xb7, 0x38, + 0x20, 0x48, 0x61, 0x95, 0xb8, 0x16, 0x24, 0x56, 0x47, 0x45, 0x36, 0xb1, + 0x2b, 0xe2, 0x1a, 0x8d, 0x69, 0xc3, 0xfe, 0xd7, 0x38, 0x21, 0x97, 0xf2, + 0x92, 0x29, 0x22, 0x78, 0xf9, 0x1c, 0xca, 0xc6, 0x86, 0xe0, 0xb0, 0xdd, + 0x3e, 0x7b, 0x30, 0xc7, 0x8b, 0x22, 0x73, 0x2f, 0x59, 0x18, 0x1f, 0xb5, + 0x59, 0xc1, 0x1c, 0xe7, 0x4d, 0xb1, 0xa9, 0x30, 0xd5, 0x15, 0x4a, 0xed, + 0x9e, 0x45, 0x33, 0x95, 0x9d, 0xa9, 0xe4, 0x51, 0x29, 0x20, 0x96, 0xf5, + 0xcc, 0x8d, 0x2b, 0xec, 0x8f, 0xd6, 0xe3, 0x9e, 0x2a, 0xb7, 0xee, 0x6a, + 0x45, 0x44, 0x05, 0x11, 0xa2, 0x93, 0x6b, 0x7e, 0x74, 0x1a, 0x27, 0x73, + 0x8b, 0xe3, 0x79, 0x3e, 0x4d, 0xe6, 0x4b, 0x37, 0x97, 0xe1, 0x5a, 0x00, + 0x00, 0x14, 0xdc, 0x00, 0x1a, 0xe1, 0x82, 0x02, 0x70, 0x88, 0xe7, 0x05, + 0xb3, 0x57, 0x67, 0xf9, 0xf7, 0xbf, 0x92, 0xc8, 0xec, 0xd9, 0x9b, 0xaf, + 0xfb, 0x24, 0xd9, 0x0d, 0xda, 0x21, 0x99, 0xdd, 0xc8, 0x6b, 0xd3, 0xe8, + 0xa3, 0xa2, 0x70, 0xa8, 0x31, 0x12, 0x54, 0x53, 0x84, 0xd3, 0x3f, 0xec, + 0x9c, 0xb2, 0xdc, 0x9f, 0xcb, 0xbd, 0xef, 0x96, 0xf0, 0xb7, 0x9e, 0x6e, + 0x59, 0xf7, 0x3b, 0xaa, 0xdf, 0x33, 0x3b, 0x13, 0xdc, 0x8d, 0x8b, 0xbe, + 0xec, 0x7c, 0xe2, 0xf4, 0xff, 0x39, 0xe6, 0x7f, 0xf9, 0x5d, 0x8b, 0xef, + 0x7d, 0x4a, 0x9f, 0x96, 0xf0, 0xf1, 0x06, 0x96, 0x08, 0x88, 0x4d, 0x86, + 0xd5, 0x09, 0x5e, 0xb0, 0x30, 0xc3, 0x80, 0xb0, 0x18, 0x02, 0x8c, 0x07, + 0x80, 0x24, 0xc2, 0xcc, 0xa0, 0x0d, 0xad, 0xc0, 0xe4, 0x20, 0x2e, 0x87, + 0x80, 0x81, 0x0a, 0x97, 0x03, 0x6e, 0xa7, 0x13, 0x56, 0x14, 0xea, 0xcc, + 0x58, 0x7e, 0x38, 0x69, 0xeb, 0x1d, 0x92, 0x6e, 0x2b, 0xb8, 0xa4, 0xe6, + 0xed, 0x86, 0xf4, 0x88, 0x15, 0x0a, 0x7d, 0xa1, 0x1c, 0xdc, 0xe6, 0xbc, + 0xc2, 0xbe, 0x74, 0x33, 0x9d, 0xaa, 0xed, 0x31, 0xb1, 0xb7, 0x42, 0x78, + 0xfa, 0x65, 0xa9, 0xdb, 0x8f, 0xc8, 0x6a, 0x28, 0xcf, 0x61, 0x47, 0x6c, + 0x80, 0x4f, 0x53, 0x6c, 0xec, 0x14, 0x61, 0x8a, 0xe1, 0x12, 0x12, 0x69, + 0x54, 0xba, 0x8a, 0xcb, 0xb9, 0x54, 0xf0, 0xd1, 0x8a, 0xe6, 0xfa, 0x3c, + 0x7e, 0xd8, 0x9f, 0x55, 0x18, 0xe9, 0xe7, 0x88, 0x98, 0xad, 0xcd, 0x4f, + 0xd2, 0x5a, 0x82, 0xa5, 0x60, 0x57, 0x3f, 0x5c, 0xab, 0x18, 0x58, 0xe8, + 0x8f, 0x86, 0x9f, 0x64, 0x55, 0xb0, 0xc1, 0x5e, 0x66, 0x6e, 0xcc, 0x66, + 0xc4, 0xf3, 0x83, 0x83, 0xfb, 0x4a, 0xa2, 0x51, 0xa9, 0x15, 0x8b, 0x0e, + 0xd3, 0xf2, 0x2c, 0xb1, 0x35, 0x39, 0xa3, 0x5c, 0x10, 0xa3, 0xdd, 0x6d, + 0xa9, 0x65, 0xa9, 0x3e, 0xd4, 0x5f, 0xaa, 0xb7, 0x95, 0x98, 0x93, 0x51, + 0xb6, 0xca, 0xd6, 0x9d, 0x32, 0x3d, 0xc3, 0x8b, 0x83, 0x33, 0x56, 0x24, + 0x99, 0x95, 0x69, 0xc5, 0x59, 0x21, 0xea, 0xa3, 0xcb, 0x93, 0xf6, 0x15, + 0x87, 0x24, 0x5a, 0xb9, 0x5a, 0xe9, 0x42, 0xa6, 0x84, 0xc3, 0x45, 0x73, + 0xa7, 0xca, 0x27, 0xa8, 0x25, 0x95, 0x98, 0x25, 0xc0, 0xd1, 0x55, 0x9d, + 0x4a, 0x79, 0x8d, 0xf5, 0x96, 0xb3, 0xf6, 0x11, 0x24, 0x40, 0x33, 0x18, + 0xf7, 0x32, 0xcc, 0x50, 0x62, 0x0f, 0x58, 0x73, 0x89, 0x60, 0xc5, 0x18, + 0x53, 0x07, 0xef, 0x04, 0x46, 0x1e, 0x16, 0x44, 0xb2, 0xaa, 0x29, 0xc3, + 0x18, 0x94, 0x89, 0x7a, 0xf0, 0xe4, 0x23, 0x50, 0x48, 0x02, 0x3b, 0xaa, + 0x89, 0xdc, 0x59, 0x0b, 0x5a, 0xf4, 0x1b, 0x6a, 0x93, 0x7e, 0xf2, 0x6a, + 0x8d, 0xb4, 0xaa, 0x3e, 0xaa, 0x45, 0x3a, 0xd1, 0xbb, 0x6a, 0xa9, 0xa2, + 0x90, 0xcc, 0x8c, 0x44, 0xf3, 0xb5, 0x8a, 0x66, 0x37, 0x5a, 0x31, 0x15, + 0x88, 0x89, 0xb9, 0x5f, 0xda, 0x47, 0x3d, 0x08, 0xe8, 0x8f, 0x42, 0x15, + 0x11, 0xcd, 0x33, 0x26, 0xba, 0xeb, 0x23, 0x22, 0x3b, 0x68, 0xe9, 0x64, + 0xec, 0x53, 0xee, 0xaf, 0x30, 0x99, 0xa2, 0x80, 0xe2, 0x21, 0xf3, 0x29, + 0xc2, 0x63, 0xc6, 0x89, 0x04, 0x05, 0x50, 0x03, 0x18, 0xea, 0x51, 0x20, + 0xf0, 0xbb, 0xd5, 0x59, 0x00, 0x05, 0x0a, 0x30, 0x16, 0x00, 0x23, 0x0a, + 0x31, 0x27, 0x36, 0x71, 0x06, 0xc0, 0x70, 0x51, 0x8f, 0x00, 0xe2, 0x5d, + 0xad, 0xc5, 0x37, 0x72, 0x5d, 0xa8, 0xfa, 0x95, 0xce, 0xc4, 0x59, 0xd4, + 0x10, 0x19, 0x94, 0xad, 0xe6, 0x42, 0x83, 0xb8, 0xa1, 0xcc, 0xcb, 0x69, + 0xa5, 0x4c, 0x43, 0x41, 0x22, 0x7f, 0x1f, 0xaa, 0xa2, 0xc0, 0x7e, 0xa4, + 0x89, 0xaa, 0x04, 0xff, 0x8c, 0xa2, 0x13, 0xa1, 0xea, 0x27, 0x8a, 0xe4, + 0x09, 0x08, 0x57, 0x2a, 0x45, 0xdd, 0xcc, 0xcb, 0x39, 0x15, 0x46, 0x52, + 0xb9, 0x5c, 0xd2, 0x70, 0x9c, 0x86, 0x33, 0x14, 0xcb, 0x2d, 0xea, 0x88, + 0x6c, 0xd1, 0x9f, 0x33, 0x28, 0x1c, 0x5d, 0xbc, 0x65, 0x60, 0x5d, 0x37, + 0xf4, 0xeb, 0x24, 0x69, 0xd9, 0x64, 0x8f, 0x2f, 0x8a, 0x9a, 0x9d, 0xec, + 0x77, 0x92, 0xbd, 0x65, 0x78, 0xf5, 0xd2, 0xb2, 0x24, 0x3c, 0xd5, 0xca, + 0xce, 0x50, 0x9b, 0x5e, 0xc6, 0xa3, 0x6b, 0x39, 0x54, 0x7b, 0xd0, 0xe2, + 0x84, 0xaa, 0x8b, 0x0d, 0x2c, 0xba, 0x6f, 0x70, 0x7a, 0xda, 0xb2, 0x5e, + 0x9c, 0xe0, 0x2d, 0xaa, 0x17, 0xd8, 0xce, 0xe7, 0x38, 0x30, 0x1a, 0x57, + 0x8e, 0x06, 0x53, 0xf0, 0xeb, 0xff, 0xfb, 0xd4, 0x60, 0x55, 0x0d, 0xd7, + 0xbe, 0x74, 0x3e, 0x13, 0xcf, 0x7b, 0x70, 0x74, 0x4e, 0x08, 0x02, 0x24, + 0x68, 0x6e, 0x1d, 0xf9, 0xd0, 0xfa, 0x2f, 0x3d, 0xed, 0xc1, 0xc4, 0xb8, + 0x20, 0x04, 0x61, 0xa1, 0xb8, 0x5b, 0x63, 0x5d, 0x3a, 0x51, 0x38, 0xa3, + 0xe1, 0x2e, 0x94, 0x6c, 0x79, 0x4f, 0xbe, 0x85, 0x09, 0x66, 0xaf, 0x20, + 0xac, 0xab, 0xde, 0xc7, 0x4a, 0x4c, 0xb2, 0xb2, 0xe9, 0xe2, 0x95, 0x2a, + 0xba, 0x83, 0xac, 0xb0, 0x32, 0xed, 0xb2, 0x1b, 0x75, 0xde, 0xb8, 0xe1, + 0x5e, 0x87, 0x21, 0xef, 0xdb, 0xd1, 0xd6, 0xca, 0x71, 0x7e, 0x89, 0x05, + 0xcc, 0x35, 0x69, 0x4d, 0x57, 0x9b, 0x20, 0xca, 0x38, 0x75, 0x9d, 0xea, + 0xdb, 0xe4, 0x61, 0x6e, 0x49, 0x18, 0x6b, 0xf9, 0x12, 0xc2, 0xb4, 0x90, + 0x00, 0x37, 0xf3, 0x8b, 0x31, 0xc5, 0xed, 0x53, 0x2c, 0x20, 0x9c, 0x86, + 0xa0, 0x0c, 0x6f, 0xa9, 0x5f, 0x35, 0x3e, 0x47, 0xd4, 0x58, 0x60, 0x11, + 0x62, 0x09, 0x86, 0x07, 0xa0, 0xa1, 0xa3, 0x85, 0x2e, 0x11, 0x1a, 0x72, + 0xb7, 0x30, 0x3e, 0xe1, 0x67, 0xbe, 0xae, 0x7b, 0xd2, 0xb8, 0x96, 0xb5, + 0xbb, 0x5b, 0x7e, 0x7a, 0xae, 0x9e, 0xf9, 0x88, 0x9a, 0xd6, 0x2a, 0x52, + 0xf9, 0xb5, 0x88, 0x8a, 0x99, 0xfe, 0xfb, 0xef, 0x9b, 0xe2, 0xab, 0xae, + 0x78, 0x8b, 0x79, 0x97, 0x9b, 0x99, 0x4a, 0x99, 0x9f, 0x9b, 0x99, 0x88, + 0xba, 0xd9, 0x9a, 0xb6, 0x8b, 0xaf, 0xed, 0x7e, 0x25, 0xed, 0x3c, 0x95, + 0x6a, 0xba, 0xaa, 0x18, 0x69, 0x27, 0xa9, 0x85, 0xb0, 0x36, 0x65, 0x70, + 0x27, 0x48, 0xa0, 0xe8, 0xe2, 0xc8, 0x14, 0xb2, 0xdb, 0x30, 0x00, 0x01, + 0xe3, 0x05, 0x92, 0xeb, 0x34, 0x3f, 0x0a, 0xe3, 0x02, 0x70, 0x0d, 0x05, + 0x00, 0x23, 0xef, 0x28, 0x65, 0x69, 0xf7, 0x2a, 0x9c, 0x72, 0x2e, 0xf4, + 0xde, 0x65, 0x59, 0x61, 0x88, 0x9d, 0x47, 0x4e, 0xa4, 0x52, 0x36, 0xa3, + 0x17, 0x6e, 0x49, 0x27, 0xe6, 0xa2, 0x24, 0xc2, 0x31, 0x9f, 0x36, 0xec, + 0xfc, 0x65, 0x58, 0x39, 0x9a, 0x5a, 0x50, 0x84, 0x21, 0x48, 0x6f, 0xce, + 0xac, 0x5b, 0x8c, 0xaf, 0x6b, 0x38, 0x07, 0xf2, 0x32, 0x02, 0x45, 0xfb, + 0x19, 0xc2, 0xa2, 0x54, 0x3e, 0x4e, 0xd3, 0xa9, 0xa6, 0x86, 0x8b, 0x55, + 0x21, 0xaa, 0x37, 0x90, 0x55, 0xca, 0x48, 0x13, 0xb2, 0x29, 0x67, 0x7c, + 0xb4, 0xea, 0x31, 0x91, 0xec, 0xcc, 0xf1, 0x5a, 0xe3, 0x3c, 0x25, 0x4c, + 0x55, 0xb8, 0x2b, 0x96, 0xb7, 0x06, 0xa6, 0xb5, 0x7c, 0x66, 0xb6, 0x78, + 0xa8, 0xf8, 0xa9, 0xaa, 0xa7, 0x1d, 0xb9, 0xb8, 0x31, 0x26, 0x68, 0xde, + 0xc2, 0xe2, 0xbb, 0x80, 0xd7, 0x32, 0xa5, 0xce, 0x46, 0xb7, 0x8f, 0x17, + 0x0f, 0x1c, 0xa1, 0x28, 0x6f, 0xb8, 0x71, 0x5f, 0xc5, 0xa6, 0x20, 0xc6, + 0x6a, 0x71, 0xcb, 0xc7, 0x92, 0x46, 0xcb, 0x66, 0x13, 0x52, 0xab, 0x13, + 0xe9, 0x37, 0x06, 0x57, 0x2d, 0x65, 0x82, 0xce, 0x6a, 0xd9, 0x22, 0xb0, + 0x6d, 0x41, 0x11, 0x62, 0x34, 0x6d, 0xc0, 0xdb, 0x7d, 0xe5, 0xd4, 0x2c, + 0xc0, 0x82, 0xe0, 0xac, 0x62, 0x98, 0xe7, 0x5d, 0xbd, 0x2f, 0x8f, 0xde, + 0x2c, 0x9d, 0x4f, 0xf6, 0x9f, 0x67, 0x8c, 0x4e, 0x98, 0x0b, 0xcc, 0x24, + 0xf3, 0x3b, 0x01, 0xd9, 0x0d, 0x0b, 0x64, 0x37, 0x89, 0x52, 0xe9, 0x7c, + 0x85, 0xd4, 0xb8, 0xa3, 0xdb, 0xc4, 0xf0, 0xdb, 0xc0, 0x86, 0x85, 0x96, + 0xa3, 0x6e, 0x9a, 0x22, 0xd4, 0x45, 0x70, 0x43, 0x02, 0x72, 0x49, 0xe6, + 0x5a, 0x17, 0x13, 0x63, 0x32, 0xcc, 0xab, 0x90, 0xa5, 0x1a, 0xae, 0x6c, + 0x25, 0x99, 0x14, 0x29, 0xdb, 0x7d, 0xff, 0x5b, 0xf2, 0x9c, 0xe9, 0x9b, + 0x63, 0xeb, 0x8e, 0x9e, 0xf4, 0xbd, 0xfd, 0x97, 0xb8, 0x65, 0x64, 0x5e, + 0xe7, 0xbb, 0x95, 0x71, 0xeb, 0xff, 0x1f, 0xc5, 0xd5, 0x47, 0x48, 0x95, + 0x55, 0x3a, 0x5f, 0x35, 0x0d, 0x2e, 0xf5, 0x36, 0xf4, 0x9c, 0xb4, 0x55, + 0xf4, 0xd1, 0x6b, 0x30, 0x97, 0xf0, 0xbf, 0x77, 0x1d, 0x53, 0x52, 0x10, + 0x7a, 0x17, 0x3c, 0x52, 0xfe, 0x79, 0x43, 0x99, 0x45, 0x44, 0x41, 0x71, + 0x76, 0x07, 0x11, 0x05, 0x8e, 0xbc, 0xf1, 0x3a, 0x0b, 0x1a, 0x1f, 0x9a, + 0x65, 0x00, 0x02, 0xfa, 0x95, 0x02, 0x83, 0x03, 0x7b, 0x33, 0x77, 0xcc, + 0x40, 0xa8, 0x2a, 0x83, 0x4c, 0xfe, 0x1a, 0x92, 0x3c, 0x50, 0x8a, 0x68, + 0x1a, 0x53, 0x55, 0xeb, 0x3b, 0x8b, 0xc8, 0xa9, 0x65, 0x0e, 0x20, 0xa6, + 0x63, 0x2a, 0x11, 0xb3, 0xc6, 0x3e, 0x4a, 0x37, 0x07, 0x68, 0xf3, 0x80, + 0xbe, 0x9c, 0x88, 0x61, 0xfa, 0x5b, 0x94, 0xca, 0xa4, 0xa3, 0x8b, 0x0b, + 0xc7, 0x39, 0xd0, 0xa5, 0x42, 0x55, 0x74, 0x7f, 0xb6, 0x5d, 0x11, 0x24, + 0x65, 0x42, 0xa9, 0xad, 0x5f, 0x01, 0x79, 0x6d, 0xc5, 0x69, 0xc3, 0x4f, + 0x4f, 0xe7, 0xee, 0x2d, 0x6e, 0x70, 0xf2, 0xdc, 0xa1, 0x65, 0x9b, 0x6f, + 0xdc, 0x16, 0x54, 0xb6, 0x5d, 0xb0, 0x59, 0xb2, 0x67, 0x8a, 0xf6, 0xd7, + 0xee, 0x0c, 0x6c, 0x3d, 0xf2, 0xad, 0x0f, 0x5c, 0xc7, 0xd4, 0x17, 0x8f, + 0xa0, 0xb3, 0x62, 0xcf, 0x62, 0x55, 0xb1, 0xb2, 0x77, 0x23, 0x21, 0x14, + 0xa3, 0x8e, 0xf5, 0x7e, 0x77, 0x50, 0xd3, 0xed, 0x6c, 0x07, 0x23, 0x9b, + 0x6b, 0x93, 0xa9, 0xe3, 0x43, 0x57, 0x42, 0x52, 0xea, 0x2b, 0x9b, 0x82, + 0xe2, 0x03, 0x35, 0x98, 0x98, 0xe2, 0x2b, 0xe0, 0x35, 0x6a, 0x6e, 0xda, + 0x9d, 0x66, 0x6e, 0x88, 0xcc, 0xf9, 0x51, 0x56, 0x1a, 0x3c, 0x4e, 0xe3, + 0xbc, 0x88, 0xc9, 0x09, 0xa2, 0xff, 0xfb, 0xd4, 0x60, 0x5c, 0x8d, 0xf7, + 0x81, 0x75, 0x3e, 0x93, 0xaf, 0x7b, 0x70, 0x70, 0xce, 0x08, 0x01, 0x18, + 0x65, 0x6e, 0x21, 0x11, 0xd4, 0xf6, 0x2f, 0x3d, 0xed, 0xc1, 0xf8, 0xb8, + 0x1f, 0xc0, 0x31, 0xa1, 0xb8, 0xf1, 0x60, 0x27, 0x60, 0xb3, 0xca, 0xca, + 0xcc, 0xc4, 0xc6, 0xed, 0x82, 0xee, 0x94, 0xcf, 0x9a, 0x63, 0xaf, 0xf8, + 0x71, 0x54, 0x6f, 0x98, 0x53, 0xef, 0x95, 0x2a, 0xc2, 0x66, 0xb0, 0xb9, + 0x8f, 0x14, 0xdf, 0x31, 0x15, 0xc5, 0x86, 0xe5, 0xf9, 0x50, 0xd0, 0x47, + 0x29, 0x8f, 0x02, 0xec, 0x67, 0x8a, 0x58, 0xda, 0x1e, 0xb1, 0x84, 0x6d, + 0x98, 0x1b, 0xf4, 0x2d, 0x78, 0x7e, 0x2d, 0x72, 0xc6, 0x37, 0x24, 0x10, + 0x77, 0x28, 0x10, 0x8b, 0x38, 0xe6, 0x45, 0xe4, 0x44, 0x0d, 0xc9, 0x52, + 0xaa, 0x46, 0x58, 0x45, 0x83, 0x78, 0xe7, 0x58, 0x5b, 0x44, 0x7a, 0xfd, + 0x8d, 0x55, 0x2b, 0xb3, 0xa3, 0x95, 0x9a, 0xc7, 0xea, 0x74, 0x94, 0xa8, + 0xb6, 0xa5, 0x18, 0x8e, 0x7e, 0x54, 0x4b, 0x48, 0x77, 0x3e, 0xce, 0x54, + 0xe5, 0x69, 0x12, 0xd4, 0x6b, 0xa6, 0x62, 0x90, 0xed, 0x45, 0x45, 0xc4, + 0x2f, 0xf6, 0x95, 0x5e, 0xcc, 0x52, 0xa1, 0xae, 0xf7, 0x44, 0x55, 0x9d, + 0xc5, 0xd8, 0xc2, 0x43, 0x9a, 0xa6, 0x71, 0x53, 0x8c, 0x14, 0x11, 0x11, + 0x09, 0x80, 0xa2, 0x00, 0xa1, 0xc1, 0x01, 0x10, 0x50, 0x88, 0x00, 0x04, + 0x0f, 0x01, 0x55, 0x05, 0x0f, 0xe0, 0x00, 0x04, 0x98, 0x01, 0x81, 0xb1, + 0x81, 0xb2, 0x55, 0x99, 0x10, 0x07, 0x21, 0x80, 0xf0, 0x0f, 0x96, 0xc9, + 0x62, 0xb5, 0xa6, 0xb4, 0xd3, 0x55, 0xc5, 0x65, 0x31, 0x71, 0x2e, 0x20, + 0x98, 0x9c, 0x58, 0x97, 0x28, 0x50, 0xae, 0x1f, 0x11, 0xd5, 0x0d, 0x08, + 0x7a, 0x10, 0xa3, 0x84, 0x7e, 0x8f, 0x52, 0x9c, 0xc2, 0x42, 0x49, 0xe1, + 0x60, 0x73, 0x46, 0x9a, 0xe6, 0x98, 0xfb, 0x2e, 0x8d, 0x07, 0x81, 0x62, + 0x2d, 0x8c, 0xca, 0xd5, 0x94, 0x62, 0x5d, 0x22, 0x48, 0x50, 0x29, 0x72, + 0xb4, 0xc0, 0x3f, 0x4e, 0x52, 0xf6, 0xc2, 0x49, 0x0b, 0x0a, 0x95, 0x8a, + 0x12, 0x5e, 0x17, 0x9d, 0x9d, 0xcd, 0x91, 0x82, 0xb9, 0xec, 0xca, 0x48, + 0xad, 0x0e, 0x08, 0x7a, 0x5d, 0x14, 0x74, 0x39, 0xce, 0xb8, 0x56, 0x1d, + 0x28, 0x71, 0x8a, 0xa8, 0x53, 0xe6, 0x0a, 0x7d, 0x16, 0xdf, 0x11, 0xfb, + 0x7b, 0x14, 0x43, 0x7e, 0x0c, 0x25, 0x09, 0xc8, 0xa6, 0x4c, 0x3c, 0x7c, + 0x84, 0xba, 0x53, 0x61, 0xd6, 0x55, 0xb3, 0x76, 0xb4, 0xe2, 0x81, 0x9c, + 0xa0, 0x86, 0xb4, 0xbe, 0xa6, 0x6b, 0x91, 0x46, 0x69, 0x19, 0xce, 0x4f, + 0xd5, 0x6c, 0xb3, 0x99, 0x2a, 0xe6, 0x2c, 0xa9, 0x52, 0x4c, 0x59, 0x65, + 0x4e, 0x28, 0x54, 0xaa, 0x58, 0x9b, 0x3b, 0xb6, 0xa3, 0x6f, 0x3d, 0xda, + 0xa1, 0xb1, 0xb7, 0xaa, 0x21, 0x27, 0xd0, 0xf7, 0xc9, 0xc6, 0x74, 0x9c, + 0xc9, 0x35, 0x7c, 0x24, 0x2d, 0xf3, 0x91, 0xa0, 0xd8, 0x8f, 0x7a, 0xb8, + 0x65, 0x53, 0xc2, 0x4c, 0x43, 0x5b, 0x72, 0x45, 0xb0, 0x3d, 0x8a, 0xe0, + 0xfd, 0x72, 0xf0, 0x8d, 0x45, 0x96, 0x2a, 0xe4, 0x9d, 0x28, 0xe8, 0xba, + 0x91, 0x79, 0x10, 0xe6, 0x5f, 0x09, 0xd1, 0xa6, 0x4f, 0x96, 0xcc, 0x41, + 0x88, 0xb4, 0x9d, 0x2c, 0x44, 0xf9, 0x84, 0x8c, 0x1e, 0x41, 0xde, 0x23, + 0x60, 0x0f, 0xc1, 0xa0, 0x20, 0x87, 0x87, 0x19, 0x9e, 0x01, 0x82, 0x0e, + 0x20, 0x0c, 0x56, 0x6d, 0x59, 0xc1, 0x08, 0xa1, 0x48, 0x42, 0x8b, 0x57, + 0xb1, 0x3b, 0xcc, 0x82, 0x6e, 0xaf, 0x54, 0x83, 0x0c, 0xf0, 0x28, 0xd3, + 0x61, 0x71, 0xeb, 0xc0, 0x37, 0x87, 0x9b, 0xd5, 0xcd, 0xfd, 0xdc, 0xd4, + 0x4c, 0x0d, 0x68, 0xa3, 0x6d, 0x31, 0xcc, 0xb5, 0xed, 0x13, 0x0f, 0x72, + 0x38, 0xb2, 0xd7, 0xed, 0xbd, 0x06, 0xc7, 0x6f, 0xff, 0x7a, 0x5d, 0xc7, + 0x76, 0x57, 0xcd, 0xa4, 0x25, 0xe8, 0x67, 0x51, 0x8d, 0x89, 0x86, 0x46, + 0xae, 0xee, 0x98, 0x98, 0x4d, 0xd8, 0x84, 0x54, 0xbf, 0x8a, 0x56, 0x4e, + 0xd9, 0xf1, 0x79, 0xed, 0xa6, 0x48, 0x2a, 0x5c, 0xb1, 0xe2, 0x0d, 0xe7, + 0x38, 0x38, 0x43, 0x0c, 0x1b, 0x02, 0xe0, 0xf8, 0xc1, 0x10, 0x2c, 0x48, + 0x8a, 0x78, 0x90, 0x70, 0x4c, 0x40, 0x90, 0x54, 0xd1, 0xe4, 0x02, 0xba, + 0x70, 0x0b, 0x92, 0x60, 0x38, 0x20, 0x62, 0xa5, 0x62, 0x7b, 0x50, 0xc0, + 0x02, 0x13, 0x50, 0x04, 0xe8, 0xc0, 0xd2, 0x98, 0x06, 0xad, 0x9c, 0xe6, + 0xdf, 0xf5, 0x4b, 0xd9, 0x55, 0x6d, 0xd4, 0x43, 0xee, 0xf6, 0x34, 0x24, + 0xa1, 0xe4, 0xab, 0x48, 0xc3, 0x8a, 0xda, 0xb8, 0x4d, 0xe1, 0x16, 0x8a, + 0x31, 0x19, 0x8f, 0x46, 0x87, 0x07, 0xc9, 0x44, 0xd3, 0xc4, 0x78, 0xe0, + 0x39, 0xd1, 0x28, 0x33, 0x29, 0x4b, 0x01, 0x2c, 0x85, 0x4d, 0x88, 0x92, + 0x3b, 0x60, 0xd7, 0xa3, 0xe7, 0xd5, 0x6d, 0x71, 0x51, 0xbd, 0xca, 0xb1, + 0x2f, 0x67, 0x51, 0xd8, 0x95, 0xf0, 0x9c, 0x22, 0xa6, 0x1e, 0xbc, 0x88, + 0xe0, 0xcf, 0x76, 0xa6, 0x55, 0xf8, 0x53, 0xe1, 0x2e, 0xd7, 0x47, 0x36, + 0x5a, 0xb3, 0x42, 0x67, 0x74, 0xcc, 0xc1, 0xa8, 0xb5, 0x5a, 0x8c, 0xf5, + 0xcb, 0xd1, 0xb2, 0x91, 0x92, 0x2b, 0x72, 0xb1, 0xbd, 0xa5, 0xec, 0x93, + 0x63, 0x79, 0x06, 0x07, 0x4f, 0xb6, 0xd3, 0x0b, 0x9b, 0xb6, 0x40, 0x87, + 0x1d, 0xf3, 0x7a, 0x69, 0x51, 0x88, 0x0d, 0xf0, 0x50, 0xb6, 0x39, 0xd3, + 0x2f, 0x56, 0x59, 0x1a, 0xd6, 0xe1, 0x4d, 0x0b, 0x12, 0x5e, 0x65, 0xf4, + 0xfb, 0x63, 0x76, 0x5a, 0xe0, 0xff, 0xfb, 0xd4, 0x60, 0x56, 0x8d, 0xd7, + 0x4d, 0x75, 0x3e, 0x8b, 0xaf, 0x7b, 0x70, 0x77, 0x0e, 0x08, 0x01, 0x18, + 0xc8, 0x6e, 0x9f, 0x41, 0xd0, 0xf8, 0x0f, 0x3f, 0x0d, 0xc1, 0x96, 0x37, + 0xa0, 0x44, 0x61, 0x95, 0xb9, 0xc4, 0xb2, 0x92, 0x22, 0x75, 0x91, 0x77, + 0x09, 0xdc, 0x17, 0x35, 0xe9, 0x1d, 0xd6, 0x5b, 0xab, 0xda, 0x57, 0x6e, + 0x4e, 0xa2, 0x65, 0x10, 0xa4, 0x62, 0x4f, 0xaf, 0xc0, 0x6d, 0x59, 0x4f, + 0xa7, 0x1a, 0x8e, 0x83, 0x99, 0x35, 0x22, 0xe8, 0xc1, 0x68, 0x37, 0xd9, + 0x5f, 0xbf, 0x45, 0x17, 0x53, 0x81, 0x94, 0xd9, 0x4b, 0x0a, 0xf0, 0xa5, + 0x8d, 0x82, 0xe4, 0x3d, 0x26, 0x06, 0x01, 0xbc, 0xde, 0x24, 0x18, 0x97, + 0x41, 0x89, 0xa6, 0x68, 0x6c, 0x93, 0x7f, 0xde, 0x86, 0x6c, 0xf8, 0x7d, + 0xc6, 0xb4, 0xcc, 0x03, 0xda, 0xcb, 0x34, 0xf3, 0x93, 0x0a, 0xbf, 0x91, + 0xbd, 0xeb, 0x69, 0xff, 0x7f, 0xf7, 0xef, 0x4d, 0xfe, 0xb6, 0xaf, 0xd6, + 0xa2, 0xfa, 0xab, 0x9e, 0x96, 0xe0, 0xee, 0x21, 0xe2, 0x75, 0x46, 0x9a, + 0x98, 0xb9, 0xbc, 0xdf, 0x9e, 0x53, 0xea, 0x63, 0x49, 0xac, 0x60, 0xf7, + 0x98, 0xee, 0xea, 0x9d, 0x2a, 0xd7, 0xdd, 0xa2, 0xa2, 0xef, 0x49, 0xaa, + 0x8d, 0x56, 0x2a, 0x36, 0xfd, 0x4f, 0xe9, 0x15, 0x3b, 0xb5, 0xa7, 0x4b, + 0x6b, 0xe2, 0xf8, 0xda, 0xae, 0x2b, 0x18, 0x82, 0xd3, 0x0e, 0x21, 0x08, + 0xe0, 0xf0, 0x94, 0x98, 0x96, 0x20, 0x41, 0x17, 0x2a, 0xd8, 0x66, 0x12, + 0x1f, 0x60, 0xac, 0x4e, 0x5a, 0x3e, 0x84, 0x00, 0xd1, 0x83, 0x80, 0xaf, + 0x81, 0xa5, 0x20, 0x78, 0x1a, 0x48, 0x80, 0x49, 0xd5, 0x71, 0xa7, 0x5f, + 0x36, 0xb7, 0x2e, 0x82, 0x2e, 0x46, 0xca, 0x77, 0xe6, 0xed, 0x18, 0x5c, + 0x91, 0xae, 0x4b, 0x0c, 0xf9, 0x62, 0x86, 0xed, 0xea, 0xb5, 0x13, 0x14, + 0xef, 0x53, 0x1b, 0xd4, 0x87, 0x08, 0xdf, 0x47, 0x46, 0x43, 0x55, 0xe9, + 0x66, 0xe3, 0x24, 0xe8, 0x90, 0xeb, 0x52, 0xb2, 0xbd, 0x63, 0x53, 0x76, + 0x0f, 0x87, 0x05, 0x62, 0xde, 0xdc, 0x23, 0x57, 0x75, 0x06, 0xea, 0x5f, + 0x1f, 0x94, 0x54, 0x74, 0x2f, 0x4b, 0xe2, 0x73, 0x10, 0xf4, 0x72, 0x96, + 0x39, 0x0e, 0xc6, 0xe8, 0xa9, 0x9d, 0x2b, 0x2f, 0xd5, 0xee, 0x40, 0x13, + 0x36, 0x62, 0xf0, 0x45, 0xb9, 0xb8, 0x16, 0x18, 0xce, 0x5f, 0x8c, 0x7e, + 0xd6, 0xa7, 0x2e, 0x76, 0xe4, 0x5a, 0x43, 0x5b, 0x8e, 0x54, 0xba, 0x92, + 0x45, 0xaa, 0xb2, 0xa7, 0xf1, 0xf6, 0x8b, 0x65, 0x6e, 0x6a, 0xc4, 0x46, + 0x07, 0x90, 0x4a, 0xaf, 0x45, 0x65, 0x72, 0xb8, 0x3a, 0xde, 0x50, 0x5f, + 0x28, 0xe9, 0xfb, 0x62, 0x0f, 0xb9, 0x49, 0x5e, 0x72, 0x49, 0x3b, 0x49, + 0xa9, 0x55, 0x59, 0xed, 0xc5, 0x61, 0x30, 0x0c, 0x4e, 0xdd, 0xa9, 0xc9, + 0x45, 0x89, 0xa8, 0xd4, 0x01, 0x09, 0x8d, 0x45, 0x1f, 0x59, 0x74, 0x62, + 0x1b, 0xbd, 0x4b, 0x2b, 0x9a, 0x9f, 0x8d, 0x4b, 0xa5, 0xb3, 0xb4, 0x33, + 0x91, 0xbb, 0x33, 0x93, 0x72, 0xc8, 0x06, 0x5f, 0x6a, 0x92, 0x6e, 0x7d, + 0xea, 0xb1, 0x28, 0x72, 0xe8, 0x23, 0x4e, 0x8c, 0x4e, 0x57, 0x29, 0x8f, + 0xde, 0x6d, 0x58, 0x2c, 0x30, 0xd2, 0x9c, 0xa9, 0x54, 0x5d, 0xb1, 0xd0, + 0xbf, 0x73, 0xb1, 0xbe, 0x35, 0xf8, 0xdb, 0x07, 0xea, 0x13, 0x98, 0x41, + 0x00, 0x99, 0x56, 0xbf, 0x98, 0x05, 0x36, 0x04, 0x83, 0xa1, 0x90, 0xc7, + 0xa5, 0xc4, 0x9b, 0xc6, 0x38, 0xf9, 0x57, 0x04, 0xc0, 0x87, 0x06, 0x25, + 0x69, 0xc8, 0xea, 0xa5, 0xfb, 0x4f, 0x23, 0xb4, 0xce, 0x11, 0x38, 0x3c, + 0xa8, 0xe8, 0xfe, 0xcc, 0xd6, 0x6d, 0x5c, 0xf7, 0xb5, 0xa7, 0x73, 0x5b, + 0x53, 0x6c, 0x94, 0x74, 0xbf, 0xb9, 0x19, 0x35, 0x3a, 0x3c, 0xfd, 0x5b, + 0x7a, 0x68, 0xfd, 0x48, 0x49, 0x64, 0xc4, 0x8e, 0xeb, 0x67, 0x55, 0x8e, + 0x34, 0xd3, 0x2a, 0xa3, 0x53, 0x69, 0x8d, 0x33, 0x33, 0x4f, 0x2c, 0xca, + 0xea, 0xcb, 0x99, 0x4a, 0x63, 0x09, 0x81, 0x43, 0xc2, 0x46, 0x18, 0xa5, + 0x31, 0x61, 0xa3, 0x54, 0x41, 0x90, 0x28, 0xf4, 0x55, 0x59, 0x86, 0x01, + 0xe0, 0x0e, 0x61, 0x10, 0x2e, 0xc6, 0xb3, 0x80, 0xe6, 0x60, 0x7c, 0x02, + 0x02, 0x40, 0x1e, 0xb3, 0x23, 0xa9, 0x68, 0xca, 0x1c, 0xf9, 0xf6, 0xec, + 0xff, 0x3e, 0xc2, 0x00, 0xa1, 0x3b, 0x93, 0x32, 0x28, 0x9d, 0x9d, 0x47, + 0xfc, 0xca, 0x95, 0x01, 0xda, 0x5e, 0x4e, 0x52, 0xe4, 0x87, 0xb6, 0xa7, + 0xdd, 0x1a, 0x4b, 0xcb, 0x93, 0x9c, 0xb1, 0x25, 0x8d, 0x43, 0xad, 0x1e, + 0xf0, 0xde, 0x41, 0x96, 0xc2, 0x7c, 0xb9, 0x62, 0xdb, 0x2a, 0x2c, 0xc7, + 0x7f, 0x09, 0x18, 0x86, 0xa4, 0x53, 0xea, 0xa5, 0xfa, 0xb1, 0x1d, 0xef, + 0x18, 0x50, 0xb8, 0x2c, 0x48, 0xa4, 0x8b, 0xf7, 0xe9, 0xc5, 0x63, 0x0b, + 0x19, 0xba, 0xc9, 0x18, 0xa1, 0x52, 0xa9, 0x8e, 0xa6, 0x52, 0xfa, 0x64, + 0x3e, 0x59, 0x50, 0x33, 0xa9, 0x14, 0x8c, 0xef, 0x61, 0xad, 0x37, 0xa7, + 0xd1, 0x0a, 0xd7, 0x8c, 0x8d, 0x8a, 0xe5, 0x6a, 0x00, 0xc9, 0x7c, 0x9f, + 0x39, 0xd9, 0x52, 0x87, 0x61, 0xe0, 0x51, 0xc1, 0x24, 0x8c, 0x26, 0x2b, + 0x33, 0xc5, 0xca, 0x28, 0x9d, 0xab, 0x93, 0xa5, 0xbd, 0x76, 0xd4, 0x75, + 0x9f, 0xe7, 0x4a, 0x09, 0x4a, 0xd9, 0x42, 0x7a, 0x5f, 0x93, 0x6b, 0xa4, + 0xe3, 0x9b, 0xe6, 0x83, 0x85, 0x44, 0x71, 0x2e, 0xa6, 0x8a, 0xae, 0x43, + 0xd8, 0xe2, 0xad, 0xa7, 0x15, 0xc9, 0xb8, 0xc8, 0x49, 0xfa, 0xed, 0x70, + 0x92, 0x66, 0x69, 0x7c, 0x5e, 0xff, 0xfb, 0xd4, 0x60, 0x64, 0x0d, 0x98, + 0x72, 0x74, 0x3d, 0x03, 0xcf, 0x7b, 0x70, 0x84, 0x6e, 0x97, 0xf1, 0x18, + 0x68, 0x6e, 0x1e, 0xb9, 0xd2, 0xf8, 0x4e, 0xb1, 0xed, 0xc1, 0x94, 0x38, + 0x20, 0x98, 0x61, 0x89, 0xb8, 0x15, 0x4b, 0xd0, 0x89, 0x89, 0x88, 0x83, + 0x55, 0x32, 0x2e, 0x2a, 0x79, 0xbe, 0x6d, 0x51, 0xc2, 0x76, 0x72, 0xc4, + 0x8a, 0xb6, 0xb0, 0xf1, 0x0b, 0x57, 0x2e, 0xa1, 0x9c, 0x44, 0xc5, 0xe1, + 0x34, 0x3f, 0x90, 0x83, 0x59, 0xc1, 0x11, 0x15, 0xb5, 0x3a, 0x75, 0xc0, + 0x13, 0x15, 0x29, 0xcc, 0xca, 0x26, 0xa6, 0x18, 0x75, 0x28, 0xcb, 0x1a, + 0x84, 0x3a, 0x76, 0x56, 0x89, 0x18, 0xdc, 0x51, 0x23, 0x44, 0x9c, 0x4c, + 0x08, 0x90, 0x1e, 0xfc, 0x0e, 0xd8, 0x38, 0x20, 0x78, 0xd4, 0x83, 0x11, + 0x07, 0x0e, 0x69, 0xa3, 0xc2, 0x1b, 0x33, 0xad, 0x0f, 0x51, 0x45, 0x90, + 0x62, 0x3a, 0xc1, 0x18, 0x33, 0x2a, 0x01, 0x19, 0x35, 0x48, 0x2c, 0x1d, + 0x0e, 0x58, 0x91, 0x1a, 0x06, 0x6c, 0x58, 0xa1, 0x3c, 0xc6, 0xeb, 0xcb, + 0xc2, 0xf6, 0xa9, 0xef, 0x8d, 0x77, 0xed, 0xae, 0xa6, 0xfe, 0x63, 0xaa, + 0x56, 0xe6, 0x7d, 0xbf, 0xb8, 0x99, 0xb8, 0x9e, 0xec, 0xbd, 0x38, 0xea, + 0x91, 0x88, 0xfd, 0x2a, 0xb7, 0x65, 0xd2, 0xc7, 0xf1, 0x1d, 0xb6, 0xf4, + 0xea, 0xad, 0x1f, 0x51, 0xce, 0x5b, 0xea, 0xd3, 0x2d, 0x49, 0xdf, 0x7f, + 0x53, 0x72, 0x93, 0x24, 0x3d, 0x6f, 0x36, 0x87, 0x99, 0x02, 0xa3, 0x04, + 0x5b, 0xb8, 0x20, 0xeb, 0x0e, 0x4e, 0x17, 0x0e, 0x45, 0x9c, 0x69, 0x22, + 0xc5, 0x07, 0x63, 0x48, 0x07, 0x04, 0x94, 0x1e, 0x0f, 0xb1, 0xa2, 0xb8, + 0x0a, 0x06, 0xc1, 0x48, 0xc8, 0xc6, 0x02, 0xa0, 0xa9, 0x86, 0x93, 0x81, + 0xe1, 0xc4, 0x49, 0x82, 0x00, 0x22, 0x29, 0xab, 0x33, 0xf7, 0x10, 0x66, + 0x8c, 0xf5, 0xba, 0x3e, 0xfc, 0x86, 0x4b, 0xa7, 0x88, 0x69, 0xeb, 0x00, + 0x9e, 0x3c, 0x0f, 0xc5, 0xc4, 0x23, 0x77, 0x75, 0xc3, 0x82, 0xd5, 0x53, + 0x38, 0x6e, 0x0a, 0x94, 0x07, 0xa2, 0x88, 0xee, 0x64, 0x7c, 0xb4, 0x44, + 0x2f, 0x93, 0xc3, 0xe4, 0x89, 0x07, 0x40, 0x6e, 0x24, 0x82, 0x80, 0x6c, + 0xb6, 0x0f, 0x90, 0x43, 0x36, 0x09, 0x48, 0x07, 0x06, 0x2d, 0xef, 0x91, + 0x72, 0x28, 0xdb, 0x62, 0x46, 0x48, 0x37, 0xdc, 0xeb, 0x62, 0x8a, 0xb8, + 0xbb, 0x93, 0xb4, 0xab, 0xf7, 0x99, 0x6a, 0x85, 0x46, 0x85, 0x6b, 0xc6, + 0xd5, 0x86, 0x19, 0x6c, 0xc7, 0x11, 0x54, 0xce, 0x70, 0x39, 0xaa, 0x1f, + 0x3a, 0x6a, 0x39, 0x22, 0x34, 0xab, 0x21, 0xe4, 0xfe, 0x72, 0x86, 0xa8, + 0x61, 0x62, 0x2f, 0xf3, 0x32, 0x41, 0x49, 0xb7, 0x2d, 0xb9, 0x6d, 0xb5, + 0x89, 0x8e, 0x67, 0x1d, 0xbd, 0x4e, 0x44, 0x67, 0xba, 0x71, 0xec, 0x1b, + 0xcb, 0x44, 0xf1, 0xf2, 0xad, 0x68, 0x4e, 0x34, 0x17, 0xc6, 0xc8, 0x53, + 0x3e, 0x7b, 0x15, 0x70, 0xde, 0xca, 0xba, 0x64, 0x3b, 0xde, 0xc5, 0x6a, + 0x62, 0x57, 0xab, 0x23, 0xbc, 0x89, 0x76, 0xe6, 0x26, 0x07, 0xcc, 0x0b, + 0x8c, 0x30, 0xa8, 0xd5, 0xea, 0xad, 0xab, 0xdb, 0x21, 0x5d, 0xca, 0x32, + 0x65, 0xe2, 0xc4, 0x46, 0xb8, 0x2f, 0x9c, 0xd0, 0xe5, 0xd3, 0xda, 0xa1, + 0x69, 0x35, 0x5a, 0x82, 0x1b, 0x43, 0x79, 0x6d, 0x70, 0x78, 0x60, 0x2e, + 0x0c, 0x19, 0x9f, 0xa5, 0xb0, 0x7e, 0x96, 0x13, 0xa0, 0xe0, 0x19, 0x63, + 0x90, 0x63, 0x99, 0x00, 0x27, 0x8f, 0x91, 0x2c, 0x23, 0x81, 0xfa, 0x77, + 0xb5, 0x03, 0x41, 0xd2, 0x6c, 0x1b, 0x39, 0x4d, 0xbb, 0x66, 0xf9, 0x17, + 0x88, 0xb7, 0x05, 0x03, 0x07, 0x50, 0x00, 0x48, 0x6c, 0x42, 0xf1, 0x75, + 0x1a, 0x0b, 0x84, 0x48, 0x80, 0x44, 0x46, 0x36, 0xab, 0x2a, 0x29, 0x9c, + 0xac, 0x9d, 0x74, 0x5d, 0x72, 0x74, 0xba, 0x33, 0xf6, 0x72, 0xe5, 0x5c, + 0xea, 0xb7, 0xa6, 0xbf, 0x7b, 0x94, 0xa8, 0x67, 0x57, 0x6b, 0xbe, 0xea, + 0x42, 0x33, 0x6f, 0xad, 0xdb, 0x7d, 0xd5, 0x7e, 0xf2, 0xea, 0x5d, 0x19, + 0x76, 0x7a, 0x15, 0x4c, 0xee, 0xc6, 0x69, 0x51, 0x24, 0x44, 0x3b, 0x31, + 0x58, 0x83, 0x9d, 0x80, 0xdc, 0x34, 0x00, 0x38, 0x08, 0x32, 0xa0, 0xca, + 0x85, 0x16, 0xaa, 0x00, 0x00, 0x0a, 0xa9, 0x00, 0x15, 0x58, 0x90, 0x15, + 0x0b, 0x51, 0x86, 0x75, 0x10, 0x25, 0x80, 0x11, 0xbb, 0xc1, 0x90, 0x4b, + 0xff, 0x1f, 0xa3, 0x88, 0xc1, 0xb6, 0xa8, 0xcf, 0xec, 0xf7, 0x15, 0x73, + 0xa8, 0x0e, 0x0f, 0x13, 0x6e, 0xd5, 0xc2, 0xc8, 0x93, 0x56, 0x96, 0xd5, + 0x91, 0x70, 0x1b, 0xa4, 0xdc, 0xec, 0x54, 0x27, 0x45, 0xa1, 0x42, 0x39, + 0x24, 0x18, 0x6f, 0x8b, 0xba, 0xb2, 0xc5, 0x04, 0xc4, 0xf9, 0x46, 0x83, + 0x68, 0x5c, 0x90, 0x56, 0x75, 0x12, 0x08, 0xc5, 0x86, 0x71, 0x20, 0x54, + 0x08, 0xa6, 0xf4, 0x7c, 0x45, 0x6d, 0x9a, 0x51, 0x4a, 0x48, 0xcd, 0xe7, + 0x41, 0xfc, 0xde, 0x8a, 0x8c, 0xe5, 0xb6, 0x56, 0xd7, 0x08, 0xab, 0x9b, + 0x36, 0x59, 0xd2, 0x92, 0xbe, 0xcd, 0xea, 0xb8, 0x4d, 0xaa, 0xed, 0x1c, + 0xb0, 0x7d, 0xdd, 0x32, 0x97, 0x46, 0x87, 0xac, 0xf0, 0x15, 0x31, 0xdf, + 0x31, 0xae, 0x99, 0xe7, 0x6e, 0x50, 0x31, 0xaa, 0x52, 0x2d, 0xec, 0xd1, + 0x18, 0x1d, 0xac, 0xee, 0x8a, 0xd5, 0x6b, 0x1c, 0x16, 0xd5, 0x7a, 0xc3, + 0x5c, 0x0e, 0xa5, 0x60, 0x86, 0xdf, 0x05, 0x86, 0x8f, 0x9e, 0x2a, 0x17, + 0x48, 0x63, 0x0b, 0x53, 0xae, 0xd8, 0xe2, 0xc1, 0x15, 0x5c, 0xba, 0x72, + 0x75, 0xd8, 0x95, 0xee, 0xee, 0xff, 0xfb, 0xd4, 0x60, 0x5b, 0x09, 0x87, + 0xc4, 0x75, 0xbe, 0xcb, 0xaf, 0x7b, 0x70, 0x73, 0x8e, 0x88, 0x29, 0x0c, + 0xc7, 0x6e, 0x1e, 0x19, 0xd4, 0xfa, 0x4e, 0xbd, 0xed, 0xc1, 0x6a, 0xb7, + 0x21, 0x74, 0x23, 0x09, 0xb9, 0x91, 0x4e, 0x51, 0xe2, 0xcf, 0x65, 0x64, + 0xf1, 0x66, 0xc1, 0xd6, 0x8b, 0xa2, 0xe9, 0x8e, 0xf5, 0xc3, 0x0b, 0xd7, + 0xcc, 0x91, 0x99, 0xd4, 0x8c, 0x8b, 0x6d, 0x8d, 0xf0, 0x8b, 0x0b, 0x1c, + 0x08, 0x91, 0xd7, 0x67, 0x44, 0x25, 0x2a, 0xe9, 0x38, 0xc4, 0x86, 0xb7, + 0xc6, 0x55, 0x44, 0x5c, 0x2e, 0x0c, 0xd5, 0x0b, 0x00, 0xb0, 0x92, 0xd2, + 0xe2, 0x3f, 0xd3, 0x43, 0x8c, 0xba, 0x88, 0x19, 0x0b, 0x25, 0x69, 0xb0, + 0x00, 0x00, 0xb6, 0x90, 0x03, 0xe0, 0x50, 0xe1, 0x06, 0xc2, 0x22, 0xc3, + 0xd1, 0x79, 0x4c, 0xff, 0xf6, 0x69, 0x78, 0x94, 0x8e, 0x2c, 0x81, 0x01, + 0x6b, 0xbe, 0xcc, 0xf7, 0x91, 0x9b, 0x7b, 0x1d, 0x9a, 0x17, 0xfd, 0x61, + 0x54, 0xb4, 0x48, 0x55, 0x1d, 0x4d, 0x5e, 0xac, 0xcb, 0xda, 0xfd, 0x53, + 0x7b, 0x5d, 0xba, 0x9c, 0x9d, 0x3b, 0xb2, 0x53, 0x35, 0xf9, 0xe6, 0x9c, + 0xbb, 0x53, 0xd0, 0xd4, 0xbb, 0x99, 0x73, 0xd7, 0x3a, 0xca, 0xd9, 0xf4, + 0x7a, 0x9c, 0xe8, 0x95, 0x5a, 0x73, 0xce, 0xe7, 0x2a, 0xd1, 0x54, 0xef, + 0xb2, 0x9c, 0x6f, 0x55, 0x30, 0x89, 0xa3, 0xe4, 0x08, 0x20, 0xe0, 0xd8, + 0x74, 0x7c, 0x94, 0x6e, 0x22, 0x21, 0x85, 0x5c, 0xb1, 0xc2, 0x09, 0x72, + 0x20, 0xe1, 0x98, 0x6e, 0x5d, 0x8f, 0x18, 0x95, 0x12, 0xf8, 0x2c, 0x07, + 0x98, 0x33, 0x2e, 0x1a, 0xba, 0x32, 0x80, 0x80, 0x26, 0xea, 0xe5, 0x40, + 0xd1, 0x24, 0xbb, 0xa1, 0xce, 0xa5, 0x8b, 0x2c, 0x31, 0xd5, 0x4e, 0x69, + 0xd6, 0x3b, 0xb1, 0xa8, 0x57, 0xd7, 0x4a, 0xba, 0x3d, 0x70, 0x17, 0x25, + 0x2a, 0x88, 0xef, 0x2e, 0x46, 0x42, 0x80, 0xe0, 0x54, 0xb0, 0x1e, 0x12, + 0x97, 0x03, 0x49, 0x8f, 0x05, 0xd8, 0xcf, 0x60, 0x2f, 0x27, 0x32, 0x35, + 0x4c, 0xd2, 0xa2, 0x45, 0xa0, 0x5b, 0xd8, 0xd7, 0x4c, 0xc8, 0xc9, 0xd4, + 0xeb, 0x85, 0xcc, 0x4b, 0x28, 0xa1, 0x30, 0x9f, 0xed, 0x6a, 0x3b, 0x22, + 0x70, 0x9f, 0x8e, 0x94, 0xbc, 0xcc, 0x5b, 0x72, 0xef, 0xa0, 0xb7, 0xbf, + 0x7d, 0x24, 0x16, 0xd6, 0x47, 0x08, 0xcd, 0x4c, 0xf1, 0xd1, 0x0a, 0xa9, + 0x52, 0x70, 0x1a, 0x93, 0xac, 0x6e, 0x19, 0x6f, 0x71, 0x87, 0x45, 0x5a, + 0xbe, 0x1b, 0x1e, 0xdc, 0xac, 0xce, 0xb9, 0x6f, 0x72, 0x63, 0x58, 0x79, + 0x19, 0x81, 0x96, 0xd2, 0xc1, 0x6c, 0xac, 0xda, 0x62, 0x6c, 0x6d, 0x96, + 0xe9, 0xc6, 0x38, 0x0c, 0x32, 0x2c, 0x45, 0xa2, 0x89, 0x9a, 0x03, 0x1b, + 0x4b, 0x23, 0x74, 0x79, 0x9a, 0xae, 0x87, 0x23, 0x90, 0xe3, 0xe1, 0xeb, + 0xb7, 0x50, 0xb2, 0xa3, 0x60, 0xf2, 0xd9, 0xdc, 0x06, 0x46, 0xe6, 0xb9, + 0xd0, 0x88, 0x3a, 0x89, 0x45, 0x54, 0x34, 0x32, 0x68, 0xc8, 0xca, 0xc3, + 0x57, 0x34, 0xb5, 0x4e, 0xa3, 0xed, 0x12, 0x35, 0x2b, 0x59, 0xa4, 0x57, + 0xb6, 0x45, 0x56, 0x97, 0x02, 0xdc, 0xca, 0xec, 0xec, 0x56, 0x9d, 0x68, + 0x54, 0xcb, 0x83, 0xf9, 0x89, 0x64, 0xb9, 0x04, 0x60, 0x9f, 0x24, 0x08, + 0x31, 0x07, 0x04, 0x68, 0x58, 0x4c, 0x13, 0xe8, 0x02, 0x64, 0x8a, 0x36, + 0x48, 0x1d, 0x42, 0x51, 0x4e, 0x8e, 0xbf, 0xfd, 0x6e, 0xdd, 0xfe, 0x15, + 0x88, 0x05, 0xa4, 0xb4, 0xcf, 0x24, 0x86, 0xdb, 0xd2, 0x8d, 0xd6, 0xf3, + 0x9f, 0xe6, 0x45, 0xdc, 0xca, 0x71, 0x8e, 0xea, 0x45, 0x0c, 0x32, 0x11, + 0x90, 0xc7, 0x39, 0xac, 0xf5, 0x77, 0x51, 0xfb, 0xd8, 0x84, 0x39, 0xa1, + 0xdd, 0xeb, 0xad, 0x2e, 0x46, 0x7f, 0xd4, 0xea, 0x8b, 0x67, 0x66, 0xfd, + 0xd5, 0x97, 0xa7, 0xd6, 0xff, 0xff, 0xaf, 0xe8, 0xcb, 0x6f, 0x5f, 0xdf, + 0xaa, 0x3f, 0x4d, 0x99, 0xd6, 0x4f, 0x46, 0x69, 0x1e, 0x34, 0xb2, 0x08, + 0x44, 0xa1, 0x15, 0x70, 0x0b, 0x24, 0x60, 0x18, 0x02, 0xa6, 0x0d, 0x65, + 0xc8, 0x68, 0x6e, 0x0d, 0xa0, 0x20, 0x62, 0x03, 0x00, 0x0a, 0xea, 0x95, + 0xba, 0x4a, 0x3c, 0xc1, 0x5c, 0x87, 0xf6, 0x25, 0x79, 0x30, 0x76, 0xb0, + 0x2e, 0x0e, 0x95, 0x44, 0x45, 0x12, 0x90, 0x7f, 0x9b, 0x6a, 0x12, 0x7b, + 0x14, 0xf0, 0x53, 0x2d, 0x0b, 0x52, 0x44, 0x9e, 0xa1, 0x28, 0x10, 0xfe, + 0x0d, 0xb1, 0x00, 0x38, 0x05, 0xb1, 0x95, 0x32, 0x67, 0x06, 0x08, 0x48, + 0xc9, 0x71, 0xe6, 0x2e, 0x45, 0x89, 0xf8, 0xe9, 0x0a, 0xde, 0x30, 0x90, + 0x81, 0x86, 0x1c, 0x06, 0x01, 0xb9, 0xa0, 0xd3, 0x2a, 0xe9, 0xe9, 0x20, + 0xf8, 0xb3, 0xdf, 0x21, 0x67, 0x4d, 0x8a, 0x3d, 0xc7, 0xfe, 0x03, 0x8c, + 0x48, 0x58, 0x7b, 0x4f, 0xa1, 0x79, 0x60, 0xa6, 0x77, 0x8b, 0x2f, 0xa8, + 0xe9, 0xb9, 0x11, 0x1c, 0x60, 0x77, 0xed, 0xf6, 0x69, 0xf4, 0x6d, 0x65, + 0x9b, 0xdb, 0x72, 0x9f, 0x4b, 0x1a, 0x65, 0xf0, 0xde, 0x4d, 0x3d, 0xf4, + 0x65, 0x14, 0x73, 0x10, 0xdc, 0x35, 0x28, 0xcd, 0xcb, 0x8d, 0xc3, 0x2e, + 0x92, 0xe7, 0x8c, 0x57, 0x6b, 0xab, 0x0c, 0xfe, 0x3f, 0x2f, 0xfd, 0x8f, + 0x78, 0x63, 0xce, 0x55, 0xa8, 0xdc, 0x31, 0x2d, 0xca, 0x3d, 0x05, 0x5f, + 0x85, 0xbb, 0x6d, 0xca, 0x29, 0x01, 0xfb, 0xed, 0x7a, 0x18, 0x7d, 0xdb, + 0xc8, 0x06, 0xd4, 0xaa, 0x51, 0x1c, 0x65, 0x4c, 0x2e, 0x2d, 0x3f, 0x41, + 0x41, 0x75, 0xf0, 0x78, 0x95, 0x81, 0xff, 0x81, 0x61, 0xb8, 0x06, 0xcb, + 0x6f, 0x34, 0xf9, 0x40, 0x58, 0xff, 0xfb, 0xd4, 0x60, 0x6d, 0x0d, 0x89, + 0x23, 0x75, 0xbc, 0x8b, 0xcf, 0xc3, 0x70, 0x81, 0xee, 0x27, 0xf2, 0x24, + 0xc8, 0x6e, 0x1d, 0x09, 0xd8, 0xfa, 0x4e, 0xb1, 0xed, 0xc1, 0xa0, 0xba, + 0xa1, 0x28, 0x33, 0x15, 0xb8, 0xc3, 0xef, 0xd4, 0x35, 0x39, 0x22, 0x6b, + 0x73, 0x12, 0xe9, 0x3c, 0x08, 0xf4, 0xc7, 0xdf, 0x57, 0x2e, 0xa4, 0x6d, + 0xe7, 0x95, 0x3d, 0xd4, 0xd3, 0x54, 0x11, 0xc6, 0x71, 0x04, 0xc5, 0x9a, + 0xe5, 0x69, 0x6b, 0x37, 0x8e, 0xdc, 0x7e, 0xde, 0x17, 0x8e, 0x30, 0xe7, + 0x3a, 0xed, 0x35, 0x8c, 0xbc, 0xea, 0x32, 0xbe, 0xd7, 0x9b, 0x0b, 0x6d, + 0xd2, 0x31, 0x22, 0x59, 0xc2, 0x09, 0xd4, 0xf0, 0x40, 0x93, 0xa2, 0x79, + 0x79, 0x21, 0x6a, 0x81, 0x81, 0x46, 0x8f, 0xe3, 0x20, 0x01, 0x95, 0x8c, + 0xa5, 0xa8, 0x88, 0x82, 0x84, 0x92, 0x32, 0x82, 0x11, 0x57, 0xe8, 0xf6, + 0xdf, 0x19, 0xa5, 0x97, 0x73, 0xdd, 0xbe, 0xf2, 0x69, 0x49, 0x26, 0xd4, + 0x9c, 0xa3, 0xfb, 0x58, 0x6a, 0xa5, 0x11, 0x65, 0x63, 0x20, 0xbe, 0xc7, + 0x27, 0x0d, 0xa4, 0xd5, 0x47, 0x55, 0x71, 0x51, 0xc4, 0x5e, 0x74, 0x4a, + 0x3c, 0x48, 0xc9, 0xe1, 0x37, 0x8d, 0x79, 0x48, 0xee, 0xee, 0x91, 0xee, + 0x29, 0xeb, 0x51, 0xb7, 0xc3, 0x26, 0xeb, 0xd4, 0xdc, 0x74, 0x8e, 0xad, + 0x3c, 0x53, 0xa6, 0xaf, 0x2b, 0x0d, 0x6b, 0x66, 0xc4, 0xc3, 0xbd, 0xa4, + 0xdd, 0x45, 0xb5, 0xbd, 0x2e, 0xd0, 0x75, 0x47, 0x0a, 0xf8, 0xf9, 0x61, + 0xc9, 0x6e, 0xc3, 0x26, 0x4b, 0x73, 0x0c, 0x20, 0x93, 0x96, 0x4f, 0x1c, + 0x69, 0xe3, 0x50, 0xd2, 0x44, 0xf4, 0x07, 0x04, 0x08, 0x79, 0xe5, 0x09, + 0x1c, 0x09, 0x90, 0x12, 0x06, 0xd9, 0x07, 0x19, 0x33, 0x4c, 0x3b, 0x23, + 0x86, 0xd9, 0x21, 0xe0, 0xdd, 0x6a, 0xbe, 0x70, 0xe4, 0x36, 0xbd, 0x5d, + 0xe7, 0x1f, 0x2b, 0x71, 0xf8, 0x86, 0x85, 0xa5, 0x2a, 0x3a, 0x3f, 0x29, + 0x2b, 0x16, 0x03, 0x9f, 0x33, 0x5b, 0x18, 0x7c, 0x38, 0x29, 0x1c, 0xce, + 0x1f, 0x2b, 0x08, 0x84, 0xc0, 0xac, 0x42, 0x03, 0x09, 0x82, 0x48, 0xd1, + 0x20, 0x97, 0x0a, 0x85, 0x20, 0x0a, 0x82, 0x5d, 0x3e, 0x52, 0x44, 0x28, + 0x15, 0x8f, 0xd7, 0x38, 0xea, 0x18, 0x99, 0xd9, 0x11, 0x3b, 0xeb, 0xa7, + 0x0f, 0x3a, 0x16, 0xfd, 0xe4, 0x08, 0x6f, 0x58, 0xd8, 0x1c, 0x1e, 0x34, + 0xb6, 0xb3, 0x2b, 0xd2, 0x1a, 0x7a, 0xc4, 0xe2, 0xe9, 0xaa, 0x2e, 0xe1, + 0xc3, 0xbe, 0x19, 0x6f, 0x02, 0xac, 0x4c, 0xd5, 0x72, 0xa2, 0x92, 0x0c, + 0x2c, 0xa7, 0x7b, 0xa6, 0xc7, 0xee, 0x95, 0xca, 0xd5, 0x87, 0xca, 0x85, + 0xdb, 0x7a, 0xcc, 0x27, 0x6c, 0xd1, 0x19, 0xd7, 0x14, 0xd4, 0x34, 0xd4, + 0x8f, 0x57, 0x6c, 0x6f, 0x94, 0x8a, 0xb8, 0x4d, 0xba, 0x61, 0x56, 0xad, + 0x6d, 0xb1, 0x4f, 0xa5, 0x66, 0x19, 0x9b, 0xac, 0xd9, 0x19, 0xbd, 0xb7, + 0x6c, 0x71, 0x10, 0xa7, 0x91, 0xeb, 0x1d, 0x82, 0xf9, 0x83, 0x97, 0x28, + 0xd2, 0x46, 0x70, 0x7f, 0x13, 0x4e, 0xdb, 0xfa, 0xe2, 0x35, 0xa7, 0x7b, + 0xb7, 0xcc, 0xe8, 0x64, 0xac, 0x6d, 0x8e, 0x52, 0x36, 0x6a, 0xed, 0x4c, + 0x3a, 0x6c, 0x88, 0xf1, 0xeb, 0x9a, 0x1a, 0xda, 0xd8, 0x95, 0x56, 0xb9, + 0x21, 0x28, 0x42, 0x12, 0xe4, 0x5b, 0x81, 0x9a, 0xdc, 0xb9, 0x22, 0x4d, + 0x30, 0xf2, 0x77, 0xb0, 0x07, 0x00, 0x5e, 0xd2, 0x89, 0xb0, 0x5e, 0x56, + 0xda, 0x00, 0x0f, 0xb0, 0x5b, 0xc6, 0xca, 0x68, 0xe6, 0xdf, 0xb1, 0x75, + 0x71, 0xfd, 0xd4, 0xde, 0x13, 0x1e, 0x4a, 0x36, 0x0a, 0x25, 0xd4, 0x98, + 0x39, 0x8e, 0x9d, 0x2e, 0x1c, 0xcf, 0x3f, 0xa6, 0xd5, 0x59, 0x8f, 0x66, + 0x71, 0x53, 0x82, 0xa3, 0x38, 0xe2, 0x29, 0x90, 0xa7, 0x66, 0x62, 0xa1, + 0x5a, 0x67, 0x99, 0x39, 0xd5, 0x75, 0xd1, 0x99, 0xbf, 0xd3, 0xfb, 0xa5, + 0x37, 0x4a, 0x56, 0xdf, 0xd3, 0xee, 0x9e, 0xe7, 0xe9, 0x5f, 0xa5, 0x5a, + 0x8b, 0xdb, 0x6a, 0xb2, 0xfe, 0x65, 0xab, 0xba, 0xaa, 0x1f, 0x2f, 0x71, + 0x24, 0x20, 0xa9, 0x22, 0x82, 0x8e, 0x2a, 0xe6, 0x21, 0xce, 0xe3, 0xaa, + 0x26, 0xc2, 0x48, 0x3c, 0x54, 0x62, 0x61, 0x00, 0x08, 0xda, 0x01, 0x0c, + 0x37, 0x3b, 0x4e, 0xd1, 0x10, 0x0c, 0x17, 0x01, 0x50, 0xa1, 0x49, 0xa4, + 0x2b, 0x96, 0xdd, 0x63, 0x8f, 0x36, 0x6d, 0xd6, 0x94, 0xe2, 0x3a, 0xa1, + 0xa5, 0xa2, 0xaa, 0x54, 0xa8, 0xa3, 0xc8, 0xf7, 0x67, 0x7d, 0x2b, 0xd2, + 0xc8, 0x85, 0x17, 0x13, 0x24, 0xe7, 0x1f, 0x46, 0x98, 0xb3, 0x25, 0xd9, + 0xa2, 0x99, 0x0c, 0xa6, 0x4a, 0xb5, 0x50, 0xe2, 0x5b, 0x11, 0xc8, 0x73, + 0x49, 0xc3, 0x01, 0xf2, 0xa9, 0x7c, 0xdf, 0x5b, 0x8e, 0xbb, 0x43, 0x9c, + 0x0e, 0xbd, 0xbd, 0x89, 0x68, 0x77, 0x61, 0x95, 0x52, 0xc7, 0x3c, 0x64, + 0x93, 0x2b, 0x02, 0x16, 0xa9, 0x76, 0x5f, 0xd8, 0x1b, 0xd9, 0xd4, 0x38, + 0xb2, 0x75, 0x8d, 0x2b, 0x66, 0x44, 0xf5, 0x68, 0xdc, 0xa8, 0x93, 0x70, + 0x60, 0xa7, 0x90, 0xb8, 0x4a, 0xf6, 0x36, 0x48, 0xf1, 0xe4, 0x59, 0x63, + 0x87, 0x22, 0xb1, 0x74, 0xe3, 0x02, 0x2b, 0x5a, 0x89, 0x0e, 0x64, 0x4f, + 0xaa, 0xf7, 0x0d, 0x52, 0xa8, 0x8c, 0xa4, 0xd1, 0xf8, 0xc5, 0x87, 0xed, + 0x90, 0xe9, 0x32, 0xf4, 0x38, 0x8d, 0x68, 0xf7, 0x91, 0x58, 0x90, 0xb6, + 0x59, 0xa0, 0xa2, 0x0d, 0x07, 0xad, 0x6d, 0xca, 0x58, 0xae, 0xdf, 0x1d, + 0x4e, 0x4c, 0xd0, 0x1c, 0x5f, 0xad, 0xb8, 0x4c, 0xcc, 0x60, 0xa7, 0x15, + 0xf0, 0xa7, 0x8d, 0x2c, 0xee, 0xff, 0xfb, 0xd4, 0x60, 0x5f, 0x8d, 0x07, + 0xde, 0x76, 0x3e, 0x13, 0xaf, 0x7b, 0x70, 0x67, 0x6e, 0x78, 0x4a, 0x0c, + 0x62, 0x6e, 0x22, 0x6d, 0xd6, 0xf4, 0x2e, 0xbf, 0x0d, 0xc2, 0x0a, 0x3a, + 0xa0, 0x18, 0x91, 0xa1, 0xb8, 0x59, 0x7c, 0xc4, 0xa7, 0x60, 0x86, 0xf1, + 0x85, 0xc1, 0x5b, 0x3b, 0x92, 0x46, 0x1b, 0xe5, 0x3e, 0x54, 0xf0, 0x55, + 0x11, 0x5c, 0x24, 0x59, 0x54, 0xa8, 0x4c, 0x93, 0x4c, 0xea, 0x2f, 0xeb, + 0x31, 0x17, 0x95, 0xa8, 0x74, 0x47, 0x24, 0x74, 0x37, 0x05, 0x33, 0x91, + 0x61, 0x2e, 0x42, 0x02, 0x4b, 0x53, 0x2a, 0x03, 0x44, 0xa3, 0x09, 0x23, + 0xc1, 0x38, 0x1f, 0xc7, 0x2a, 0x68, 0x00, 0x50, 0x64, 0xdc, 0x68, 0x80, + 0x3d, 0x4a, 0x98, 0xa0, 0x4a, 0x63, 0x31, 0x25, 0x89, 0xfc, 0xc1, 0x6f, + 0xc0, 0x4e, 0x59, 0x56, 0x7a, 0x90, 0x60, 0x91, 0xa0, 0x28, 0x4c, 0x86, + 0x2c, 0x30, 0xc1, 0x00, 0xe1, 0x0e, 0x21, 0x42, 0x0b, 0xcc, 0x2b, 0x87, + 0x57, 0x57, 0x14, 0x41, 0xcb, 0x76, 0x21, 0x9b, 0x64, 0x52, 0xca, 0x87, + 0xb2, 0x4d, 0x64, 0x45, 0xbe, 0x5d, 0xcd, 0x32, 0xd9, 0xb4, 0xfd, 0x3e, + 0xd7, 0x47, 0xd2, 0xf5, 0x9a, 0xc8, 0xdf, 0xbf, 0x9b, 0xf7, 0xf7, 0xfb, + 0x3d, 0x3a, 0x7f, 0xdc, 0xf5, 0xee, 0x8e, 0xca, 0x81, 0x10, 0x85, 0x0e, + 0x77, 0x28, 0x80, 0x20, 0x44, 0x16, 0xac, 0x42, 0x20, 0xa2, 0x30, 0x91, + 0x03, 0x39, 0x98, 0x88, 0x01, 0x03, 0x09, 0x64, 0x73, 0x9e, 0x47, 0xa3, + 0x02, 0xc0, 0x36, 0x40, 0xba, 0xdd, 0x46, 0x58, 0xac, 0x4f, 0x44, 0x22, + 0xfc, 0x18, 0xdc, 0x50, 0xc3, 0x08, 0xcd, 0x83, 0x0d, 0xe1, 0xa0, 0xae, + 0x4f, 0x10, 0x93, 0xfa, 0x62, 0x99, 0x6d, 0xc4, 0xe5, 0x47, 0xab, 0x4b, + 0x01, 0xe6, 0xa8, 0x1c, 0x49, 0x72, 0x74, 0x17, 0xaa, 0x23, 0xa0, 0xb1, + 0x17, 0x52, 0xc6, 0x9d, 0x2f, 0xea, 0xd7, 0xa7, 0x4a, 0xf8, 0xe7, 0x54, + 0x12, 0xc3, 0x4d, 0x61, 0x4e, 0xed, 0x98, 0xfb, 0x34, 0x13, 0xa9, 0xc4, + 0x64, 0x53, 0xb2, 0xab, 0xb6, 0x67, 0x69, 0x5e, 0xb6, 0x79, 0x2b, 0x94, + 0xf5, 0xda, 0x85, 0x3a, 0x94, 0xf0, 0xcd, 0xa9, 0x65, 0x0c, 0x53, 0x71, + 0x56, 0x7f, 0x05, 0x31, 0x19, 0x47, 0xca, 0x64, 0xb1, 0x09, 0x96, 0xd2, + 0x01, 0x7d, 0xa2, 0xce, 0x25, 0x33, 0x76, 0x93, 0x45, 0xeb, 0x49, 0x60, + 0x46, 0xeb, 0x0e, 0xba, 0x6f, 0x6b, 0xf9, 0x0e, 0x45, 0x21, 0x86, 0xe9, + 0x4a, 0xeb, 0xc6, 0xe9, 0x27, 0x29, 0xed, 0x49, 0x33, 0xa7, 0x70, 0x26, + 0x67, 0x63, 0x74, 0xff, 0x43, 0x00, 0x4e, 0x43, 0xae, 0xa4, 0x10, 0xfe, + 0x59, 0x99, 0xb8, 0xcb, 0x61, 0xb9, 0xd8, 0xb5, 0x99, 0x03, 0x61, 0x86, + 0xeb, 0xbe, 0x96, 0xb3, 0x8e, 0xcf, 0x3e, 0xd1, 0xca, 0xb1, 0x68, 0x94, + 0x33, 0x44, 0xeb, 0xdb, 0x6e, 0xd1, 0x09, 0x99, 0x43, 0xe9, 0x18, 0x95, + 0x46, 0x61, 0x11, 0x98, 0xbc, 0xa6, 0x6e, 0x82, 0x1a, 0xd4, 0x66, 0x3f, + 0x39, 0x69, 0x85, 0x53, 0x48, 0x29, 0x67, 0x61, 0xf9, 0x54, 0x2e, 0xde, + 0xe5, 0x32, 0x28, 0x3e, 0x3b, 0x0b, 0xa1, 0x9e, 0xa9, 0x10, 0xa3, 0x79, + 0xda, 0xcb, 0x5f, 0x6f, 0xaf, 0x40, 0x90, 0x63, 0x58, 0x7f, 0x60, 0xd9, + 0xab, 0xaa, 0xe9, 0x49, 0xb5, 0x27, 0xd1, 0x1c, 0xe2, 0xea, 0x52, 0xd0, + 0xeb, 0x97, 0xf5, 0x33, 0x83, 0x23, 0x25, 0x54, 0x4b, 0x41, 0x4b, 0x1c, + 0x00, 0x02, 0x32, 0x00, 0x19, 0xe3, 0x30, 0x69, 0x65, 0x47, 0x97, 0xc2, + 0x6d, 0x97, 0x73, 0xb3, 0x5a, 0xc2, 0x53, 0x34, 0x10, 0x14, 0x50, 0x55, + 0x22, 0x15, 0xca, 0xcf, 0x5d, 0xc6, 0xdd, 0x02, 0x0b, 0xa3, 0x33, 0x33, + 0x53, 0x63, 0x32, 0x56, 0x79, 0xac, 0x4d, 0x4b, 0x4d, 0x45, 0xf5, 0xdd, + 0x5f, 0x51, 0x6f, 0x37, 0x1c, 0x53, 0xc7, 0x33, 0x13, 0x4c, 0x95, 0x5a, + 0x3a, 0x45, 0xc3, 0x7b, 0x2f, 0xf3, 0x51, 0x71, 0x5d, 0xff, 0x3e, 0xb5, + 0x53, 0xff, 0x5c, 0xc2, 0x47, 0xb7, 0x37, 0xbd, 0xbd, 0xdc, 0xd4, 0x4f, + 0x51, 0x57, 0x5c, 0xf4, 0x97, 0xf5, 0xd6, 0xaf, 0x76, 0x8d, 0x13, 0x55, + 0xb3, 0xd1, 0x24, 0x4e, 0xc8, 0xe3, 0x8c, 0x38, 0x43, 0x3c, 0xa2, 0xd0, + 0x68, 0x98, 0x40, 0x17, 0x24, 0x46, 0x50, 0xf0, 0x45, 0x10, 0x8b, 0x24, + 0x17, 0x88, 0x87, 0x40, 0x8c, 0xc4, 0x07, 0xaa, 0x3c, 0x4a, 0x26, 0x00, + 0x2b, 0x40, 0x00, 0xe0, 0x92, 0x80, 0x0b, 0x18, 0x13, 0x22, 0x8f, 0x93, + 0xb6, 0x0c, 0x73, 0xa7, 0xe5, 0x1c, 0xf8, 0x7e, 0x0a, 0xbb, 0x59, 0x56, + 0xea, 0x3c, 0xf3, 0xb0, 0x65, 0xfd, 0xd8, 0xdb, 0x11, 0xf3, 0x2c, 0x9f, + 0x8d, 0x8c, 0xa4, 0x5b, 0x02, 0x39, 0xb1, 0x3a, 0xa8, 0x4f, 0x30, 0x1b, + 0xea, 0xd4, 0x31, 0x4a, 0xa2, 0x43, 0x23, 0x18, 0xaa, 0xd6, 0x44, 0xec, + 0x43, 0xad, 0xb5, 0x72, 0xae, 0x28, 0x97, 0x4a, 0x58, 0xe8, 0x4b, 0x11, + 0x5e, 0xfa, 0x3c, 0x4b, 0xbf, 0x64, 0x9d, 0x70, 0xde, 0xde, 0xf9, 0xc5, + 0xad, 0xd5, 0xf7, 0x15, 0x81, 0xb5, 0x4f, 0x98, 0x0a, 0x47, 0xca, 0xe5, + 0x88, 0x31, 0xd8, 0xaf, 0x5d, 0x45, 0x8a, 0xe9, 0x59, 0xba, 0x4b, 0x1e, + 0x2c, 0x45, 0x88, 0x50, 0xe9, 0x25, 0x17, 0xd8, 0xe5, 0x83, 0x05, 0x5c, + 0xc9, 0x0b, 0xcf, 0x07, 0x6f, 0x5e, 0xb2, 0xcc, 0xc2, 0xcb, 0x19, 0xc1, + 0x4f, 0x87, 0x74, 0xcb, 0xf8, 0x0d, 0x4d, 0xcd, 0xb3, 0xb8, 0x28, 0x37, + 0x89, 0xae, 0x74, 0x62, 0x2c, 0xd1, 0xa3, 0x2b, 0x56, 0x20, 0xe2, 0x8d, + 0x5b, 0x6b, 0x9d, 0xce, 0x3b, 0xff, 0xfb, 0xd4, 0x60, 0x51, 0x0d, 0x97, + 0x42, 0x76, 0x3f, 0x33, 0x8f, 0x7b, 0x70, 0x69, 0x2e, 0x78, 0x39, 0x0c, + 0x62, 0x6e, 0x1d, 0x0d, 0xd6, 0xfa, 0x4e, 0x31, 0xed, 0xc1, 0xa4, 0xba, + 0xa0, 0xe8, 0x33, 0x09, 0xb8, 0xd6, 0xb7, 0x26, 0xe6, 0x28, 0x9b, 0x8c, + 0xf5, 0x55, 0x87, 0x28, 0x30, 0xea, 0xa8, 0x7b, 0x02, 0x2b, 0xcd, 0x5e, + 0x2b, 0xd8, 0x2f, 0xe0, 0x3a, 0x7c, 0xfe, 0x48, 0xbb, 0x8e, 0xac, 0x56, + 0x28, 0xa2, 0xce, 0xa6, 0x72, 0x89, 0xd2, 0x66, 0x12, 0x91, 0x3c, 0xe4, + 0xd2, 0xb0, 0x95, 0x65, 0x57, 0x28, 0x19, 0x50, 0xa3, 0x4d, 0x42, 0x5e, + 0x94, 0xc5, 0xd4, 0xf7, 0xb2, 0x40, 0xe4, 0x0d, 0x14, 0x40, 0x22, 0x83, + 0x88, 0xb0, 0xae, 0x40, 0x01, 0x0b, 0xab, 0x94, 0x0f, 0x2e, 0xc6, 0x55, + 0x55, 0x80, 0x9e, 0x95, 0x87, 0x68, 0x02, 0x1c, 0x12, 0x42, 0xc6, 0x14, + 0xc2, 0x96, 0x68, 0xa4, 0xcd, 0x04, 0x74, 0xac, 0xae, 0xee, 0xa6, 0xd9, + 0xd0, 0x51, 0x66, 0x92, 0xa4, 0x24, 0xee, 0x96, 0x32, 0x19, 0x35, 0x58, + 0x6a, 0xbb, 0xae, 0xc8, 0xd5, 0x54, 0xdd, 0x36, 0xb3, 0x9d, 0xa8, 0x67, + 0x4c, 0x8a, 0x9d, 0xdb, 0x57, 0xd2, 0xf6, 0x54, 0xbc, 0x8a, 0xfd, 0xef, + 0xf4, 0xaa, 0x3a, 0xfb, 0x56, 0xa9, 0xab, 0x2a, 0xb3, 0xd4, 0xa9, 0xec, + 0x8c, 0x6e, 0xba, 0x9d, 0x99, 0x67, 0xea, 0xce, 0x04, 0x08, 0x31, 0xc8, + 0x08, 0x50, 0x20, 0xb0, 0x24, 0x01, 0x04, 0x09, 0x85, 0x87, 0x03, 0x40, + 0x62, 0xc3, 0x0d, 0x2f, 0xb1, 0x82, 0xb1, 0x67, 0x12, 0x1c, 0x20, 0x06, + 0x2c, 0xba, 0x6f, 0xd3, 0x3d, 0xb0, 0x8b, 0xb3, 0x97, 0x6a, 0xb5, 0x51, + 0x20, 0xfd, 0x97, 0xd7, 0x1c, 0x19, 0xdc, 0x77, 0x24, 0x95, 0x40, 0xb9, + 0xc4, 0x49, 0x0c, 0x12, 0x08, 0x74, 0x58, 0xbc, 0x8a, 0x62, 0x1c, 0x2e, + 0x3c, 0x0a, 0x0a, 0x6b, 0xd2, 0xae, 0xf0, 0x9d, 0xf3, 0xa0, 0xd4, 0xe0, + 0x0a, 0x0e, 0xa0, 0xf9, 0xa1, 0xd0, 0xc4, 0x58, 0x72, 0x04, 0x13, 0x1a, + 0xb3, 0x45, 0x43, 0x95, 0x9a, 0x56, 0xa9, 0x1c, 0xe7, 0x71, 0xac, 0x58, + 0xcb, 0x4a, 0x95, 0x6e, 0x1b, 0x54, 0x19, 0xeb, 0x6c, 0x51, 0x1f, 0x69, + 0xb1, 0xfc, 0x27, 0x77, 0xb2, 0x85, 0xea, 0x29, 0xd4, 0xf4, 0x71, 0x88, + 0xd5, 0x48, 0xab, 0x6b, 0x98, 0xac, 0x4f, 0x15, 0xef, 0x58, 0xd3, 0xf0, + 0xea, 0xb7, 0x2b, 0x1c, 0x06, 0x25, 0x75, 0x9f, 0x2f, 0xb7, 0xf5, 0xa6, + 0x05, 0x7c, 0x66, 0x2c, 0x31, 0x44, 0x62, 0x6a, 0x6d, 0x56, 0xb3, 0xb4, + 0x43, 0x7c, 0xed, 0xc5, 0x95, 0xea, 0x55, 0x81, 0x69, 0xce, 0x98, 0x5c, + 0xa9, 0x1b, 0x76, 0xed, 0xbe, 0x0c, 0xe9, 0x34, 0xa5, 0xd0, 0x89, 0x25, + 0x63, 0xb2, 0xea, 0x03, 0xb9, 0x27, 0x92, 0x02, 0xbd, 0x82, 0x05, 0xac, + 0xa9, 0x8c, 0xd8, 0xaa, 0x5d, 0x32, 0x30, 0xda, 0x23, 0xc5, 0xc6, 0xa7, + 0x88, 0xf9, 0x54, 0xed, 0x6e, 0xeb, 0xd1, 0x23, 0x65, 0x56, 0xa0, 0x88, + 0x5f, 0xdc, 0x56, 0x98, 0xe2, 0x28, 0x55, 0x92, 0x30, 0x32, 0xb6, 0x2b, + 0x11, 0x4c, 0x85, 0xb5, 0xc4, 0xd0, 0x0d, 0xe4, 0x82, 0x74, 0x8c, 0x18, + 0x24, 0x10, 0x1f, 0xa4, 0x88, 0x0b, 0x71, 0xc5, 0xcc, 0xdd, 0xdc, 0xc6, + 0xe1, 0x83, 0x97, 0xc3, 0x37, 0x76, 0x26, 0x96, 0xb4, 0xac, 0xd4, 0xbb, + 0x3a, 0x42, 0xb1, 0xcc, 0xe4, 0x6b, 0x53, 0xd7, 0x8d, 0x56, 0xad, 0x29, + 0xdb, 0x93, 0x8f, 0xed, 0x48, 0x70, 0x8b, 0x3b, 0xba, 0x52, 0x7a, 0xc8, + 0x39, 0xd5, 0x93, 0x64, 0x22, 0x29, 0x4c, 0x8f, 0xd0, 0x8a, 0xbd, 0x2a, + 0xab, 0xde, 0x62, 0xd9, 0x77, 0xde, 0xa6, 0x76, 0x76, 0xdd, 0x7f, 0x27, + 0xb7, 0x45, 0x6b, 0x22, 0x75, 0xbb, 0xde, 0x9e, 0xbd, 0x73, 0x97, 0x79, + 0x33, 0xaa, 0xdf, 0x91, 0xd1, 0xc6, 0x47, 0x64, 0x39, 0x8a, 0x24, 0x58, + 0x10, 0x20, 0x22, 0x18, 0xe5, 0x7e, 0x75, 0x66, 0x59, 0x98, 0x28, 0xa6, + 0x52, 0x8f, 0x00, 0x33, 0x4a, 0x00, 0xb1, 0x4b, 0x4c, 0x61, 0xb3, 0x1e, + 0x74, 0xf0, 0x50, 0x2c, 0x14, 0xbb, 0xee, 0xdb, 0x2e, 0x93, 0xa3, 0x5d, + 0x0c, 0x82, 0x79, 0xe3, 0x8a, 0x16, 0x18, 0xc9, 0xf5, 0x02, 0xf3, 0xc2, + 0xf5, 0x75, 0x23, 0xe2, 0xfa, 0x6e, 0xae, 0x4e, 0xa3, 0x4c, 0x48, 0x50, + 0xe2, 0x42, 0xc2, 0x6e, 0x11, 0x09, 0x02, 0x12, 0x43, 0x4e, 0x82, 0xe6, + 0x4d, 0x02, 0x54, 0x71, 0x99, 0x82, 0xbe, 0x36, 0x0f, 0xd3, 0xac, 0x59, + 0x0b, 0xd0, 0x9e, 0x12, 0x54, 0x19, 0xdc, 0x9a, 0x14, 0xc3, 0x19, 0x5c, + 0xe4, 0x57, 0x09, 0x09, 0xb0, 0xcf, 0x06, 0x44, 0x62, 0x32, 0xed, 0x43, + 0x0f, 0x84, 0x0d, 0x49, 0x13, 0xa2, 0x81, 0xe0, 0x38, 0x7e, 0x1f, 0xa7, + 0x94, 0x45, 0x9a, 0xf4, 0x29, 0xda, 0x67, 0x6b, 0xd2, 0x51, 0x59, 0x9c, + 0xbb, 0x49, 0xbe, 0xc6, 0x9b, 0xd8, 0x02, 0x72, 0xdd, 0x47, 0xf2, 0xc7, + 0x5f, 0xb9, 0x2d, 0xc9, 0xd8, 0x69, 0xb0, 0xc3, 0x52, 0x28, 0x0a, 0x1a, + 0x70, 0xe1, 0x36, 0xd9, 0x84, 0x3f, 0x52, 0x53, 0x18, 0x7d, 0x1d, 0x4b, + 0xaf, 0x64, 0xbe, 0x28, 0xeb, 0x72, 0x4f, 0x1d, 0xec, 0x1f, 0x4d, 0x27, + 0x69, 0x54, 0x71, 0x19, 0xea, 0x7a, 0x09, 0x5c, 0x61, 0xb8, 0xc3, 0x6e, + 0xf3, 0xbc, 0xd2, 0x25, 0x90, 0x4c, 0xaa, 0x61, 0x91, 0x40, 0xb2, 0xa9, + 0x33, 0xfd, 0x94, 0xae, 0x45, 0x2f, 0x66, 0xf0, 0x26, 0x17, 0x2e, 0xd3, + 0x40, 0x51, 0x07, 0x51, 0xdf, 0x87, 0x2b, 0x41, 0x6f, 0xdc, 0xe4, 0x0d, + 0x0d, 0x4c, 0x49, 0xa0, 0x28, 0xff, 0xfb, 0xd4, 0x60, 0x6d, 0x88, 0xd8, + 0xf0, 0x75, 0xbd, 0x33, 0xaf, 0xc3, 0x70, 0x8c, 0x8e, 0xa7, 0xf2, 0x18, + 0xc8, 0x6e, 0x1e, 0x15, 0xd6, 0xf8, 0x2e, 0xbd, 0xed, 0xc1, 0xce, 0x3a, + 0xa0, 0x48, 0x31, 0xa1, 0xb8, 0x53, 0xbf, 0x25, 0x89, 0xb6, 0x67, 0xe7, + 0x2a, 0x69, 0x75, 0xad, 0xbe, 0xd3, 0xf3, 0x39, 0xd2, 0xd9, 0x95, 0xc3, + 0x91, 0x57, 0xaa, 0x19, 0x86, 0x99, 0xbb, 0xe3, 0x3d, 0x00, 0xce, 0x47, + 0x1c, 0xb8, 0xab, 0x8e, 0xff, 0xd2, 0xbb, 0x8e, 0x8a, 0xfa, 0x8d, 0x2f, + 0xf4, 0x34, 0x67, 0xed, 0xe3, 0xc4, 0xeb, 0xd3, 0x10, 0x0e, 0x03, 0x47, + 0x35, 0x30, 0x0a, 0x95, 0x9f, 0xba, 0xea, 0xe5, 0x4d, 0x56, 0x11, 0xc8, + 0x86, 0x00, 0x0d, 0x63, 0x8b, 0x22, 0xe3, 0x93, 0x02, 0xe8, 0xea, 0x34, + 0x91, 0xc6, 0x1a, 0xc7, 0x29, 0xd2, 0xcc, 0x57, 0x7b, 0xc6, 0x20, 0x1c, + 0x60, 0x92, 0xee, 0x65, 0x9e, 0xe2, 0x13, 0x72, 0xd9, 0x9a, 0xae, 0x4e, + 0x37, 0x7a, 0x53, 0x70, 0x7b, 0x92, 0x61, 0xf1, 0xf4, 0xb1, 0xb5, 0x4e, + 0x87, 0xaf, 0xa2, 0x5d, 0x93, 0x7b, 0x6f, 0x5c, 0xca, 0xb5, 0xef, 0xad, + 0xec, 0x5c, 0xdf, 0x23, 0x95, 0x39, 0x25, 0x52, 0x23, 0x54, 0x6e, 0x91, + 0xbf, 0xbe, 0x32, 0x2a, 0x56, 0x06, 0x8e, 0xa4, 0xee, 0x46, 0x5f, 0x55, + 0x15, 0x17, 0xdd, 0xdf, 0xb3, 0x59, 0xf0, 0x3b, 0x45, 0xa5, 0x85, 0x4a, + 0xb8, 0xdd, 0xda, 0xa5, 0x60, 0x8f, 0x26, 0xb7, 0xca, 0x92, 0x07, 0xdd, + 0x07, 0xa3, 0xac, 0x42, 0x1e, 0x21, 0x0a, 0x03, 0xa8, 0x0e, 0x82, 0xc1, + 0x00, 0x5a, 0x83, 0xd3, 0xc9, 0x11, 0x24, 0x4c, 0x0a, 0x0d, 0x07, 0x4d, + 0x28, 0x40, 0xa1, 0x04, 0x25, 0x16, 0x10, 0x43, 0x9e, 0x02, 0x05, 0x5c, + 0x46, 0x13, 0x07, 0x60, 0xf1, 0x34, 0x98, 0x18, 0x57, 0x6e, 0xec, 0x36, + 0xfa, 0x32, 0x68, 0x0e, 0x51, 0x21, 0xd7, 0x55, 0x4a, 0x96, 0xb6, 0x68, + 0xaa, 0x74, 0xec, 0x73, 0xf3, 0x2d, 0xca, 0xc3, 0x91, 0xa5, 0xe2, 0x89, + 0xa5, 0xe9, 0xc8, 0x31, 0x8f, 0x56, 0x32, 0x5a, 0xca, 0x5c, 0x57, 0x4e, + 0x8d, 0x34, 0x64, 0xa7, 0x94, 0xe7, 0xbb, 0x52, 0x85, 0x48, 0xde, 0xbc, + 0x8c, 0x64, 0x73, 0x76, 0x97, 0xee, 0x09, 0xc6, 0xa6, 0x05, 0x73, 0xe7, + 0xaa, 0x86, 0xd7, 0xb0, 0xdd, 0xc8, 0xcc, 0x94, 0x43, 0x95, 0x8a, 0x37, + 0xb6, 0x55, 0xc5, 0x66, 0x6e, 0xb5, 0xbd, 0xe2, 0x96, 0xd4, 0xaa, 0xc9, + 0xf9, 0x45, 0x96, 0x58, 0x1b, 0x6c, 0xbb, 0xe6, 0x08, 0x2f, 0xa3, 0x27, + 0x24, 0x6e, 0x5f, 0x6c, 0x57, 0x2a, 0xd6, 0x0c, 0x18, 0xe9, 0xf6, 0x86, + 0x58, 0x0a, 0xf8, 0x6b, 0x08, 0x7b, 0x45, 0x98, 0xec, 0xdf, 0xd4, 0x6d, + 0x12, 0xb5, 0xa6, 0x9e, 0x51, 0x9a, 0x03, 0x1b, 0x13, 0x92, 0x5d, 0x9e, + 0x12, 0x99, 0x72, 0x7a, 0x31, 0xb2, 0xb2, 0xae, 0xdf, 0xb8, 0xd9, 0x16, + 0xe0, 0xe2, 0xdc, 0xae, 0xcc, 0x08, 0x48, 0xc9, 0xf6, 0xd6, 0xe6, 0xb3, + 0x34, 0x34, 0xf4, 0x68, 0x28, 0x63, 0x8a, 0x01, 0xcd, 0xd3, 0x8d, 0xd9, + 0xf0, 0xcc, 0xa2, 0x7c, 0xc4, 0xf2, 0xcf, 0x2d, 0x23, 0xe6, 0x24, 0xb3, + 0x84, 0xaf, 0x54, 0x4b, 0x0a, 0x88, 0xaa, 0xc9, 0x1e, 0xbf, 0x6e, 0x50, + 0xc6, 0x65, 0x55, 0x28, 0xe1, 0x98, 0xa5, 0xf1, 0x2e, 0x7f, 0xbf, 0x73, + 0x3b, 0x99, 0x14, 0xc8, 0xe3, 0x95, 0xbe, 0x43, 0x48, 0xb5, 0x14, 0xa4, + 0x69, 0xd6, 0x99, 0x66, 0x71, 0x41, 0x03, 0x00, 0x7e, 0x4b, 0x3c, 0x1d, + 0x08, 0x58, 0x7a, 0x30, 0x80, 0xd4, 0x66, 0x2b, 0x50, 0xe4, 0xbd, 0x8f, + 0xc8, 0xfa, 0xa6, 0x86, 0x44, 0x5a, 0xc1, 0xd8, 0xce, 0x92, 0x91, 0xb5, + 0xd1, 0x08, 0x92, 0x18, 0x85, 0xaa, 0xcd, 0x08, 0x9d, 0xff, 0xdc, 0x73, + 0xfd, 0xa4, 0xcb, 0xcf, 0x4b, 0x7f, 0x5d, 0xde, 0xab, 0x1c, 0x7e, 0xd3, + 0xc4, 0xdc, 0xa4, 0xef, 0xdd, 0xdb, 0x73, 0xcd, 0xd7, 0xa7, 0x53, 0x7d, + 0x57, 0x51, 0xf3, 0xf3, 0xfc, 0x3d, 0x7f, 0x7f, 0x7c, 0xc7, 0xd4, 0xcc, + 0xdf, 0x3b, 0xfd, 0xda, 0x47, 0xc5, 0xdf, 0x30, 0xfa, 0xc0, 0xbd, 0xf3, + 0x03, 0x4e, 0x19, 0x96, 0x65, 0x92, 0x4e, 0x4d, 0x88, 0x63, 0x85, 0x49, + 0x28, 0x50, 0x73, 0x09, 0x0e, 0x40, 0x69, 0x02, 0xc3, 0xc7, 0xc0, 0xb8, + 0xa0, 0xb8, 0x2b, 0x20, 0x62, 0xa9, 0x00, 0x09, 0x62, 0x99, 0x98, 0x71, + 0x78, 0x7d, 0x21, 0x09, 0x7c, 0x12, 0x4d, 0xb5, 0x64, 0xf3, 0x8f, 0x64, + 0x3f, 0x18, 0xbb, 0x27, 0x95, 0x9f, 0x58, 0x5a, 0x54, 0xed, 0x45, 0x10, + 0xde, 0x43, 0xd2, 0xf0, 0x93, 0xcb, 0xba, 0xb7, 0x93, 0xe5, 0x79, 0xa2, + 0x4e, 0x13, 0xca, 0x63, 0x9d, 0x88, 0x95, 0xa7, 0x8a, 0xc6, 0x74, 0xf3, + 0x3a, 0x56, 0x1a, 0xb5, 0x12, 0x77, 0xd5, 0x98, 0xe9, 0x9c, 0xbc, 0x18, + 0x78, 0x70, 0x56, 0x37, 0x2f, 0x97, 0xe5, 0x0a, 0x95, 0x69, 0x6c, 0xf1, + 0x61, 0x6e, 0x52, 0xed, 0xca, 0x13, 0x8a, 0xb6, 0x88, 0xba, 0x35, 0xe6, + 0x13, 0xf9, 0xe3, 0x37, 0x2e, 0x15, 0x4c, 0x91, 0x3e, 0xda, 0x57, 0x48, + 0xb8, 0xcf, 0x99, 0x98, 0xdc, 0x23, 0xb2, 0xe1, 0xeb, 0x82, 0x1f, 0x95, + 0x56, 0x58, 0xa3, 0xad, 0x32, 0x39, 0xf6, 0x45, 0x7a, 0xe5, 0xce, 0xd0, + 0xdc, 0x9a, 0xb0, 0x9e, 0x63, 0xc2, 0x35, 0x8d, 0xa9, 0x99, 0x95, 0xcd, + 0xcd, 0xc1, 0x5a, 0xcc, 0xe5, 0x11, 0xf2, 0xb2, 0x06, 0x1f, 0xb1, 0x45, + 0x57, 0x38, 0x4c, 0xb4, 0x8a, 0x56, 0x37, 0x36, 0xaf, 0x6e, 0xf6, 0xcb, + 0x1a, 0x8b, 0xae, 0xb0, 0xe1, 0xff, 0xfb, 0xd4, 0x60, 0x54, 0x0d, 0x87, + 0x9f, 0x76, 0x3e, 0x13, 0x8f, 0x7b, 0x70, 0x70, 0xae, 0x98, 0x3a, 0x0c, + 0xc5, 0x6e, 0x1e, 0xa9, 0xd8, 0xf8, 0x2e, 0x3d, 0xed, 0xc1, 0xa3, 0xba, + 0x20, 0xe4, 0x21, 0x95, 0xb8, 0x58, 0x71, 0xd4, 0xee, 0x2c, 0x6d, 0x89, + 0x27, 0xca, 0xe7, 0xec, 0x4a, 0xf3, 0xbd, 0xf4, 0x28, 0x08, 0x6b, 0x42, + 0x71, 0x6d, 0x52, 0xb9, 0x6d, 0x42, 0x9a, 0x25, 0x7e, 0x87, 0x4c, 0xd7, + 0xed, 0x76, 0xd6, 0x35, 0x7c, 0x36, 0x16, 0x35, 0x3a, 0x7b, 0xb8, 0xa0, + 0x15, 0xc7, 0xd4, 0x8c, 0x68, 0x59, 0x52, 0x4a, 0xcd, 0xf5, 0x63, 0xb4, + 0x12, 0xa5, 0x2a, 0x95, 0xd8, 0xf5, 0x07, 0x01, 0x9e, 0x4d, 0x09, 0x68, + 0x43, 0x94, 0xe4, 0x00, 0x96, 0x8d, 0xe9, 0xb0, 0xd0, 0x00, 0x02, 0x33, + 0x91, 0x24, 0x40, 0x1f, 0xc2, 0x37, 0x85, 0x2b, 0x9d, 0x18, 0x9c, 0xe3, + 0x66, 0x3c, 0x7e, 0x93, 0xbc, 0x5b, 0x46, 0x9d, 0x5c, 0xa6, 0x46, 0x2c, + 0x92, 0x8a, 0x1d, 0x04, 0x60, 0xb7, 0x64, 0xcd, 0xdc, 0x67, 0xb7, 0xed, + 0xaf, 0x47, 0x32, 0x8e, 0x53, 0x9d, 0xe2, 0x4e, 0xa4, 0x34, 0x85, 0x34, + 0x8c, 0xc5, 0x29, 0x8a, 0xaa, 0xb3, 0xa9, 0x65, 0x6b, 0xee, 0xa4, 0x4d, + 0x9d, 0x51, 0x93, 0xd3, 0xda, 0xeb, 0xdd, 0xde, 0x7f, 0xfd, 0x3d, 0x9f, + 0xde, 0x4b, 0x75, 0x47, 0xfc, 0xae, 0xd7, 0x51, 0xff, 0xd6, 0x75, 0x3a, + 0x9d, 0x58, 0xa7, 0xbd, 0x85, 0x04, 0x1c, 0xc6, 0x3b, 0x89, 0x28, 0xe3, + 0x30, 0xaa, 0x18, 0x50, 0x8e, 0x42, 0x87, 0x45, 0x07, 0x98, 0x1c, 0xe1, + 0x71, 0x0d, 0xc1, 0x49, 0x2e, 0x60, 0x09, 0xb1, 0xc7, 0x87, 0x28, 0xa0, + 0xef, 0xbf, 0x56, 0xa2, 0xef, 0x64, 0x2e, 0xd4, 0xfb, 0xed, 0x25, 0x2c, + 0x6a, 0xf6, 0x78, 0x6c, 0x71, 0x1b, 0xde, 0x31, 0x4e, 0xc8, 0x87, 0x34, + 0x18, 0x67, 0x40, 0xf5, 0x94, 0x47, 0x30, 0x9f, 0x20, 0x90, 0xc9, 0x57, + 0x67, 0x79, 0xce, 0x6a, 0xa5, 0xd5, 0xe9, 0x44, 0xfa, 0x1c, 0xf5, 0x53, + 0x0d, 0xb6, 0x22, 0x59, 0x0f, 0x52, 0x18, 0x66, 0xf2, 0xc9, 0xa2, 0x87, + 0x50, 0x7a, 0x15, 0x9a, 0x44, 0xb3, 0xa1, 0xa8, 0x79, 0xd2, 0x69, 0x1d, + 0xc8, 0x36, 0xa4, 0x0e, 0x93, 0x69, 0xa3, 0xe5, 0x94, 0xf2, 0x62, 0x45, + 0x44, 0x6f, 0x67, 0x61, 0x72, 0x7a, 0xbd, 0x67, 0x08, 0x9b, 0x51, 0xcb, + 0x0d, 0x42, 0xe6, 0xb9, 0x6a, 0x50, 0x9d, 0x0f, 0x94, 0x0e, 0x7e, 0xf4, + 0x43, 0xed, 0x19, 0xe3, 0x13, 0xa4, 0x21, 0x79, 0x44, 0xe1, 0x05, 0x89, + 0x5c, 0xc4, 0xd0, 0xed, 0x95, 0x5a, 0xda, 0xa4, 0x76, 0xac, 0xd2, 0xf9, + 0xd0, 0x9f, 0x62, 0x45, 0x32, 0x40, 0x61, 0x95, 0xa9, 0x08, 0x6d, 0x95, + 0x95, 0xaa, 0x24, 0xae, 0x4f, 0xa0, 0x35, 0x55, 0x9e, 0x8f, 0x60, 0xab, + 0x21, 0xb6, 0xb9, 0xc2, 0xca, 0x9d, 0x5f, 0x66, 0xe3, 0x2e, 0x66, 0xf6, + 0x69, 0xf0, 0x9e, 0x8a, 0xe9, 0xbe, 0x32, 0xf2, 0xbd, 0xfc, 0x77, 0xb2, + 0xc9, 0x5c, 0xb6, 0xd1, 0xce, 0xeb, 0x0f, 0x5a, 0x33, 0x11, 0x4a, 0xc3, + 0x1d, 0x61, 0xe1, 0xe9, 0x02, 0x55, 0x7d, 0x58, 0x68, 0xb8, 0x54, 0xaa, + 0x5a, 0x54, 0x68, 0x69, 0xd8, 0xc2, 0xb4, 0xf3, 0x24, 0x65, 0x5e, 0xe3, + 0x16, 0x42, 0xdc, 0x26, 0x44, 0xe4, 0x21, 0x45, 0xd4, 0x16, 0xa6, 0x44, + 0x13, 0x58, 0x47, 0x09, 0x72, 0x75, 0xa0, 0x02, 0xbb, 0xd0, 0x0e, 0x09, + 0x0c, 0x09, 0xc2, 0x88, 0x24, 0x29, 0xa9, 0xe9, 0xdb, 0x4a, 0xd0, 0xc0, + 0x8a, 0x42, 0xa3, 0xe4, 0x11, 0x63, 0xe3, 0x0a, 0x1d, 0xf2, 0x35, 0x42, + 0x38, 0x28, 0x00, 0x3c, 0x66, 0x12, 0xbd, 0x32, 0x3b, 0x30, 0xc2, 0x43, + 0xe6, 0x46, 0x17, 0x46, 0x91, 0x3a, 0x92, 0xe7, 0x3f, 0x26, 0xf7, 0xb7, + 0xd3, 0xd2, 0xca, 0xa6, 0xec, 0x9e, 0x9e, 0xa8, 0x97, 0xfb, 0x7a, 0x51, + 0x93, 0x46, 0x96, 0xcf, 0xcb, 0xf4, 0x4b, 0x73, 0xef, 0x2b, 0x75, 0x91, + 0x56, 0xcd, 0x68, 0xb9, 0xdc, 0x72, 0x18, 0x61, 0x85, 0xd8, 0x44, 0xc5, + 0x69, 0x4c, 0x82, 0xe7, 0xa0, 0xba, 0x8d, 0x61, 0x63, 0x0b, 0x98, 0x40, + 0x06, 0x14, 0x38, 0xb5, 0x00, 0x2b, 0x30, 0x01, 0x01, 0x26, 0xe8, 0xcc, + 0x98, 0x40, 0x2b, 0x66, 0x4d, 0xc6, 0x35, 0x4c, 0xe7, 0x43, 0xef, 0xec, + 0x92, 0x9e, 0x62, 0x5c, 0x5f, 0x3c, 0xf0, 0x58, 0x5b, 0xf3, 0xd8, 0x0e, + 0xb8, 0x4e, 0x95, 0x27, 0x22, 0x5d, 0xcd, 0x58, 0xa2, 0x39, 0x8b, 0x81, + 0x7a, 0x56, 0x99, 0x28, 0x62, 0x79, 0x52, 0xa8, 0x5d, 0xa6, 0x8f, 0xe1, + 0xf4, 0xaf, 0x57, 0x95, 0x70, 0xc9, 0x69, 0xf2, 0xa2, 0x4e, 0xb3, 0x24, + 0x52, 0xeb, 0x4e, 0x4e, 0x3b, 0x2f, 0x89, 0xd6, 0x05, 0x0b, 0x5a, 0x79, + 0x4d, 0x32, 0x64, 0xd5, 0x73, 0x54, 0x8c, 0x24, 0x35, 0xe2, 0x2c, 0xbe, + 0xb2, 0x41, 0xb5, 0xa0, 0xb6, 0x28, 0xfa, 0xd4, 0x0b, 0x21, 0xef, 0x61, + 0x2e, 0x18, 0x73, 0x2b, 0x1e, 0xab, 0x99, 0x56, 0xd8, 0x18, 0x23, 0x3f, + 0x78, 0xd9, 0x0e, 0x1c, 0x15, 0x86, 0xe4, 0xfb, 0xe6, 0xea, 0x32, 0xae, + 0x57, 0x4a, 0xf9, 0xe0, 0xd6, 0x32, 0x92, 0x3b, 0x2a, 0xb2, 0x68, 0xea, + 0x46, 0x97, 0xb9, 0xb3, 0x69, 0xff, 0x5a, 0xc4, 0x78, 0xed, 0x45, 0xb8, + 0xcd, 0x07, 0x76, 0x54, 0x0b, 0xa7, 0xb0, 0x18, 0x76, 0xce, 0xb4, 0xd7, + 0x77, 0x4d, 0xc9, 0x5c, 0x3e, 0x84, 0xd5, 0x6e, 0xf9, 0x9d, 0x6e, 0x67, + 0x8a, 0x66, 0x67, 0xcd, 0xd6, 0x72, 0x67, 0x8f, 0xa6, 0xde, 0xcd, 0x7d, + 0x5d, 0xdc, 0xd3, 0xc5, 0x99, 0xff, 0xfb, 0xd4, 0x60, 0x60, 0x89, 0x87, + 0x79, 0x75, 0xbe, 0xb3, 0x8f, 0x7b, 0x70, 0x72, 0xee, 0xa8, 0x29, 0x08, + 0x63, 0x6e, 0x22, 0xc9, 0xd6, 0xf2, 0x0e, 0x3f, 0x0d, 0xc2, 0x04, 0x3a, + 0xa0, 0x18, 0x63, 0x21, 0xb8, 0xf3, 0xba, 0x39, 0xbf, 0x99, 0x8d, 0x89, + 0x16, 0xf5, 0xc2, 0x1d, 0xdc, 0xd5, 0xe5, 0xe9, 0x3f, 0x2a, 0xda, 0x55, + 0xf9, 0xee, 0x5b, 0x4b, 0x42, 0xf6, 0xfc, 0xd9, 0x45, 0xbd, 0x57, 0x1e, + 0xc3, 0xe4, 0xf8, 0x3a, 0x8f, 0xf3, 0x9c, 0x9e, 0x89, 0xf0, 0xe7, 0x32, + 0x83, 0x88, 0xb0, 0x80, 0x00, 0x13, 0x35, 0x20, 0x15, 0x1c, 0xca, 0x38, + 0x1d, 0x85, 0x85, 0x10, 0x33, 0x48, 0x3b, 0xe6, 0x42, 0xc6, 0x20, 0xc7, + 0xc2, 0x28, 0x65, 0xba, 0xd7, 0x76, 0x63, 0xf0, 0x48, 0x8c, 0x3c, 0x45, + 0x06, 0x47, 0x0c, 0x29, 0x1a, 0x68, 0x31, 0x03, 0xc4, 0x83, 0xa7, 0x48, + 0xd0, 0xc0, 0x41, 0x4a, 0x45, 0x1d, 0xb2, 0x53, 0x22, 0x8f, 0xf7, 0x9f, + 0x4d, 0xb2, 0x8c, 0x76, 0x64, 0x7e, 0x77, 0x4b, 0xf9, 0x73, 0x3c, 0x8f, + 0xfc, 0xfc, 0xb2, 0xf3, 0xfa, 0x9e, 0x5d, 0xe7, 0x1a, 0xfc, 0x28, 0x79, + 0xed, 0xe6, 0x7a, 0x1e, 0x47, 0x48, 0xa9, 0x99, 0x7f, 0x16, 0xa1, 0x63, + 0x91, 0x88, 0xd7, 0x38, 0x48, 0x46, 0x60, 0xc9, 0x80, 0x85, 0x24, 0x04, + 0xf4, 0x93, 0x33, 0x63, 0x14, 0xa0, 0xc2, 0x0c, 0x42, 0xc6, 0x5c, 0xc1, + 0x60, 0x19, 0x85, 0x76, 0xc7, 0x73, 0x1e, 0x98, 0x1c, 0x05, 0x00, 0xea, + 0x16, 0xda, 0xa4, 0x14, 0x45, 0xd5, 0x7d, 0x5f, 0x97, 0x89, 0x43, 0x1d, + 0x59, 0x15, 0xc9, 0x1a, 0x63, 0x41, 0x4a, 0xa6, 0x4b, 0x61, 0x74, 0x49, + 0x25, 0xe2, 0x19, 0x06, 0x21, 0xbf, 0x13, 0x2c, 0xd6, 0x61, 0xd1, 0x94, + 0x4e, 0x95, 0xe6, 0x3c, 0xca, 0x43, 0x0c, 0x9b, 0x90, 0xc3, 0xac, 0xe7, + 0x3c, 0xc5, 0x2d, 0x9d, 0x0d, 0x1f, 0x2b, 0x83, 0x1c, 0xbc, 0x8f, 0x06, + 0xc2, 0xc4, 0xfd, 0xd1, 0xba, 0xed, 0x42, 0x69, 0x5b, 0x84, 0xfb, 0xdf, + 0x7e, 0x59, 0x2a, 0xdc, 0x91, 0x6b, 0x40, 0x94, 0xd6, 0xaf, 0x51, 0x4b, + 0xe1, 0xda, 0x5a, 0x78, 0x15, 0xb7, 0x7f, 0x9d, 0x87, 0xfa, 0xc3, 0xcc, + 0xcd, 0xed, 0x3f, 0x8f, 0xbb, 0xde, 0xcf, 0x9f, 0x79, 0x55, 0x34, 0x7a, + 0x76, 0x4b, 0x69, 0xfb, 0x82, 0xa5, 0x6c, 0x26, 0x1d, 0x7e, 0x60, 0x8b, + 0x70, 0xf4, 0xf3, 0xb5, 0x01, 0xe9, 0xab, 0x3d, 0x2f, 0x84, 0xaa, 0x1a, + 0x6e, 0x19, 0x5e, 0x89, 0xc8, 0xa3, 0xcc, 0xb3, 0x19, 0x44, 0x11, 0x94, + 0x14, 0xff, 0x51, 0xb2, 0x98, 0x76, 0x86, 0x95, 0xaf, 0x3e, 0xf0, 0x2c, + 0x75, 0xba, 0xb8, 0x90, 0x54, 0x51, 0xff, 0x62, 0x0e, 0xbc, 0x62, 0xdc, + 0x4a, 0x21, 0x52, 0x16, 0xf7, 0x48, 0xe2, 0x71, 0x89, 0x1c, 0x42, 0x6d, + 0xcb, 0x9b, 0x98, 0x88, 0x53, 0xba, 0xf2, 0xdf, 0xaf, 0x08, 0x92, 0xff, + 0x20, 0x7a, 0xf1, 0xa7, 0x4a, 0x3a, 0xc5, 0xf3, 0xbf, 0x2c, 0x8c, 0x4c, + 0xbc, 0x12, 0xcb, 0x35, 0x61, 0xd9, 0x7b, 0x6c, 0xfc, 0xd2, 0xb6, 0x69, + 0x44, 0x14, 0xcd, 0x28, 0x99, 0xbb, 0x9c, 0xf5, 0x2c, 0x49, 0x5b, 0x5e, + 0x87, 0x1c, 0x7a, 0xaf, 0x0a, 0xe8, 0x5b, 0x0c, 0xb1, 0x9a, 0xc1, 0x2f, + 0x83, 0xcf, 0x0d, 0x3f, 0xa8, 0x4b, 0x62, 0xcc, 0xac, 0x88, 0x6b, 0x54, + 0x94, 0x05, 0x9b, 0x79, 0xd2, 0x90, 0xe6, 0x36, 0x0c, 0x68, 0x49, 0x6d, + 0x85, 0x42, 0x80, 0x1d, 0xd5, 0xcd, 0x1a, 0xe4, 0xa0, 0xac, 0x26, 0xab, + 0x3f, 0xcf, 0x2e, 0x6c, 0xe8, 0x3b, 0xf9, 0xa6, 0xcc, 0x35, 0x27, 0x05, + 0xc9, 0xc5, 0x4f, 0x44, 0xcd, 0x79, 0xf4, 0xfd, 0xbb, 0x2d, 0xd6, 0xe5, + 0x59, 0xbe, 0xf2, 0xd5, 0x3d, 0x46, 0x29, 0x06, 0xda, 0xcc, 0x3f, 0x5e, + 0xb3, 0xdf, 0x30, 0xb0, 0xf1, 0x29, 0xd7, 0xca, 0xd2, 0xd2, 0x55, 0x53, + 0xfa, 0x24, 0x25, 0xcf, 0x7d, 0x7d, 0xea, 0xb5, 0x3e, 0xdd, 0x55, 0x3b, + 0xf7, 0xdf, 0x6d, 0x33, 0x0f, 0x31, 0x31, 0x35, 0x1c, 0x77, 0x3f, 0x5d, + 0x6d, 0x90, 0xfd, 0xd4, 0xcd, 0x4d, 0x55, 0x4c, 0xcd, 0x53, 0x44, 0x42, + 0x73, 0xbe, 0xbc, 0x16, 0xc6, 0x1c, 0x50, 0xe3, 0x25, 0xa9, 0xc9, 0x17, + 0x28, 0x68, 0xc3, 0x49, 0x14, 0x06, 0xa2, 0xe2, 0x28, 0x80, 0xa2, 0x38, + 0xb1, 0x61, 0xd8, 0x8a, 0x1a, 0x34, 0x3d, 0x61, 0x42, 0x95, 0x00, 0x30, + 0xa8, 0x01, 0x0f, 0x35, 0xd3, 0x05, 0xa4, 0x8e, 0x66, 0x01, 0x57, 0xd2, + 0x08, 0xf4, 0x79, 0xd0, 0x70, 0x25, 0xd6, 0x21, 0xf8, 0x29, 0xed, 0x2a, + 0x30, 0x49, 0x71, 0xc3, 0x93, 0x14, 0xa6, 0xe7, 0xe8, 0x43, 0x30, 0x2d, + 0x57, 0x83, 0xa2, 0x49, 0x0c, 0x47, 0x3a, 0x02, 0x02, 0x59, 0x18, 0x82, + 0x39, 0x1b, 0x21, 0x2e, 0x3f, 0x1d, 0x22, 0x18, 0x16, 0x82, 0x65, 0x84, + 0xa6, 0x03, 0xa4, 0x87, 0x84, 0xfa, 0x12, 0x09, 0xd1, 0x12, 0x96, 0x13, + 0x82, 0x63, 0xd4, 0x62, 0xa4, 0x66, 0x5e, 0xb3, 0xb8, 0xcb, 0xed, 0xe8, + 0x46, 0xe0, 0xab, 0x17, 0x4f, 0x96, 0x9e, 0xcd, 0x64, 0x39, 0x11, 0x7d, + 0x2c, 0x26, 0xd5, 0xef, 0x1a, 0xa3, 0xb2, 0xf5, 0x65, 0x94, 0xea, 0xb7, + 0x8e, 0x31, 0x61, 0xbf, 0x5c, 0x33, 0xc8, 0xaf, 0x7f, 0x01, 0xb1, 0x15, + 0x2a, 0x6f, 0x0f, 0x65, 0xa2, 0xaa, 0x22, 0x92, 0x1c, 0x37, 0x08, 0xcf, + 0xeb, 0x1d, 0xeb, 0x04, 0x18, 0xba, 0x6d, 0x6f, 0x56, 0x43, 0x61, 0x54, + 0x4e, 0xbb, 0x77, 0x32, 0xdb, 0xed, 0xa1, 0xd3, 0xc1, 0x79, 0x0e, 0x22, + 0xfb, 0xec, 0xb7, 0xb8, 0x49, 0xff, 0xfb, 0xd4, 0x60, 0x51, 0x89, 0x07, + 0x7a, 0x76, 0x3e, 0xb3, 0x8c, 0x7b, 0x70, 0x65, 0x6e, 0x68, 0x5d, 0x0c, + 0xc2, 0x6e, 0x5e, 0x75, 0xd8, 0xf8, 0x2e, 0x3d, 0xed, 0xc1, 0xdc, 0x3a, + 0x20, 0x64, 0x61, 0xa1, 0xb8, 0x8d, 0x45, 0x46, 0x31, 0x3c, 0xbb, 0x93, + 0xe8, 0x2c, 0xec, 0x10, 0x3d, 0x1c, 0x15, 0x6a, 0x45, 0x73, 0xd5, 0xe6, + 0xb5, 0x33, 0x2c, 0x77, 0x07, 0x37, 0x91, 0x9b, 0x5f, 0x42, 0x56, 0xc8, + 0x86, 0x2e, 0x61, 0x5d, 0xfb, 0x9c, 0x77, 0x08, 0xb0, 0x15, 0x38, 0x82, + 0xc0, 0xb2, 0xf6, 0x3b, 0x93, 0x59, 0x7b, 0x97, 0x11, 0x5d, 0x40, 0x66, + 0x3a, 0x0c, 0x97, 0x8a, 0xd3, 0xac, 0x77, 0x96, 0x32, 0xd6, 0xc1, 0x1f, + 0x3a, 0x45, 0xcd, 0xc0, 0x2a, 0x01, 0xe8, 0x47, 0x26, 0x80, 0x04, 0x92, + 0x4b, 0x96, 0x46, 0xd9, 0x20, 0x7d, 0x13, 0x4c, 0x08, 0x71, 0x89, 0x97, + 0x3b, 0x4a, 0x6c, 0xfc, 0xdb, 0x82, 0x7c, 0xc2, 0xd0, 0x38, 0xe8, 0x07, + 0x02, 0x26, 0x6e, 0x9e, 0xb3, 0xf5, 0x14, 0xd8, 0xa7, 0xb6, 0xdc, 0xb8, + 0x7f, 0xb0, 0x53, 0x27, 0x5f, 0xd7, 0x52, 0x91, 0x66, 0xc8, 0x93, 0x32, + 0x9c, 0x8c, 0xaa, 0xc8, 0x76, 0x32, 0x1a, 0xee, 0xc9, 0x4f, 0xb3, 0xf4, + 0xdf, 0x7f, 0xbf, 0xf2, 0xdb, 0xf4, 0x56, 0xa5, 0x29, 0xdd, 0x1a, 0xdf, + 0xd3, 0xef, 0xb7, 0xf5, 0x4f, 0xff, 0xaf, 0xcf, 0xa2, 0x23, 0x2b, 0x84, + 0x74, 0x64, 0x32, 0xdc, 0x64, 0x14, 0x38, 0x92, 0x99, 0xd5, 0x18, 0x71, + 0x6e, 0x24, 0x4c, 0xe7, 0x9d, 0x41, 0x21, 0x10, 0x1d, 0xc4, 0x8d, 0x6e, + 0xe7, 0x5c, 0xd9, 0x89, 0x04, 0x05, 0x0d, 0x51, 0x45, 0x21, 0x8c, 0xaf, + 0xa7, 0xf6, 0x86, 0xe5, 0xe7, 0x3f, 0x9a, 0x99, 0x9b, 0x92, 0xee, 0xb4, + 0x7b, 0x22, 0x54, 0xe6, 0xb9, 0xb4, 0x5c, 0x0d, 0x27, 0x23, 0xc4, 0xed, + 0x38, 0xa3, 0xe9, 0x43, 0x12, 0xed, 0x8b, 0xb6, 0x16, 0xd5, 0x59, 0xef, + 0x1a, 0x72, 0xee, 0xa1, 0x82, 0xbb, 0x3f, 0x99, 0x4e, 0xb4, 0x2c, 0x99, + 0xa7, 0xc9, 0xe2, 0x1e, 0xd8, 0xa5, 0x41, 0x22, 0x91, 0x2c, 0xcb, 0x84, + 0x1a, 0x79, 0x16, 0x64, 0x21, 0x4d, 0x6a, 0x86, 0xca, 0x3f, 0x54, 0xd6, + 0x46, 0xd8, 0x10, 0x94, 0xef, 0xd5, 0xc8, 0x9a, 0x59, 0x53, 0x11, 0x77, + 0x19, 0xa1, 0xf4, 0x58, 0x9a, 0x5c, 0x1f, 0xed, 0xa8, 0x49, 0xfe, 0xac, + 0x67, 0x67, 0x54, 0x3e, 0x48, 0x31, 0xa1, 0x70, 0xb0, 0xb3, 0x24, 0x66, + 0x3a, 0x30, 0x29, 0x9c, 0x17, 0x4a, 0x17, 0x8a, 0xf6, 0x83, 0x91, 0xc1, + 0x8e, 0x32, 0xe6, 0x0a, 0x90, 0xe4, 0x39, 0xdd, 0x3b, 0x95, 0xfe, 0xa1, + 0x69, 0x99, 0xc1, 0xc1, 0xbe, 0xec, 0x2d, 0xca, 0x79, 0x5c, 0x66, 0x8d, + 0x15, 0xb9, 0x26, 0xf5, 0x6e, 0x06, 0x1f, 0x3c, 0x61, 0x50, 0xde, 0xfd, + 0xad, 0x83, 0x6a, 0xd6, 0xa8, 0xb0, 0x9e, 0xa4, 0x9a, 0x60, 0x41, 0x62, + 0x65, 0x7f, 0x57, 0xb1, 0x61, 0x33, 0x2c, 0xa9, 0x70, 0xc2, 0x9d, 0x77, + 0x84, 0x5b, 0xc4, 0x12, 0x7d, 0x50, 0xa4, 0x67, 0x7e, 0x9b, 0x46, 0xb4, + 0x9c, 0x64, 0xbd, 0x38, 0xbb, 0x88, 0x8d, 0x34, 0x56, 0xcb, 0xe0, 0xf3, + 0x3a, 0xcc, 0x44, 0x31, 0x4c, 0x5d, 0xc9, 0x08, 0x48, 0x8d, 0x03, 0x30, + 0xe1, 0x07, 0xd1, 0xb8, 0xa8, 0x3e, 0x80, 0x00, 0x02, 0x79, 0x10, 0x0f, + 0xe4, 0x41, 0x40, 0x64, 0x91, 0x8b, 0x89, 0x76, 0x62, 0x35, 0xd4, 0x14, + 0xa3, 0x6e, 0xee, 0x18, 0xe9, 0x97, 0x40, 0x80, 0x80, 0x18, 0x48, 0x5a, + 0x46, 0x86, 0x08, 0x08, 0x80, 0xb7, 0x5f, 0x20, 0xa9, 0x7e, 0xc2, 0x9f, + 0xea, 0xa1, 0xa3, 0xf9, 0x95, 0xb7, 0x59, 0x8a, 0xd9, 0x52, 0x69, 0x73, + 0x35, 0x7e, 0x2a, 0x7f, 0xa4, 0xf9, 0xba, 0xa9, 0xa8, 0xa4, 0xa8, 0xfb, + 0x99, 0x8f, 0xff, 0xa8, 0xda, 0xb9, 0xfd, 0x7a, 0x8e, 0xe1, 0x38, 0x98, + 0xff, 0xed, 0x27, 0xb8, 0xff, 0xef, 0x89, 0xaf, 0xb9, 0xfa, 0xfd, 0xbe, + 0x6a, 0x55, 0x59, 0x13, 0x88, 0x95, 0x4a, 0x91, 0x4e, 0x1a, 0x0b, 0x1a, + 0x3c, 0xc2, 0x03, 0xcb, 0x61, 0x6a, 0x0e, 0x44, 0x17, 0xba, 0x29, 0x04, + 0x33, 0x05, 0x70, 0x98, 0x59, 0x15, 0x00, 0x38, 0x05, 0x76, 0x90, 0x60, + 0x74, 0x49, 0xc9, 0x42, 0x49, 0x5e, 0xdd, 0x9f, 0xf6, 0xc1, 0x1f, 0x55, + 0xef, 0xe4, 0xa6, 0xcc, 0xaa, 0x1f, 0x57, 0x2b, 0xfe, 0x16, 0xcb, 0xe4, + 0xeb, 0x2a, 0x46, 0x72, 0xf8, 0x53, 0x9c, 0xea, 0x13, 0x89, 0xeb, 0x3b, + 0xf2, 0x56, 0x70, 0xbb, 0x52, 0x39, 0x9d, 0xe7, 0x0b, 0xd6, 0x23, 0xed, + 0x0e, 0x8e, 0xda, 0xa1, 0xb9, 0xc0, 0xee, 0x14, 0xc9, 0x05, 0x6a, 0x80, + 0xe4, 0x73, 0xd2, 0xba, 0xe8, 0x69, 0x7e, 0x67, 0xc3, 0x7a, 0xcb, 0x5c, + 0xc6, 0xe2, 0x8d, 0xfc, 0x06, 0x04, 0x8b, 0x0a, 0xfc, 0x57, 0xcc, 0x18, + 0x5d, 0x41, 0x57, 0x3f, 0x55, 0x1f, 0x4d, 0xa7, 0xa3, 0x7a, 0xca, 0xeb, + 0x4e, 0x0e, 0x73, 0x53, 0x4c, 0xae, 0x65, 0xd5, 0x58, 0x70, 0x24, 0xdc, + 0x9a, 0xda, 0xf1, 0x02, 0x69, 0xdc, 0xd5, 0x92, 0x44, 0x37, 0x69, 0x01, + 0xad, 0x58, 0x96, 0x47, 0xab, 0x5c, 0xd5, 0xf0, 0xd9, 0x61, 0x38, 0x36, + 0xba, 0x6f, 0x43, 0xa5, 0x6f, 0x51, 0x6c, 0xe6, 0x65, 0x63, 0x5e, 0x5f, + 0x76, 0xc5, 0x67, 0xf7, 0xc3, 0x2d, 0xa3, 0xa8, 0xa5, 0x4f, 0xc0, 0x6e, + 0x6e, 0xcb, 0x2c, 0x48, 0x09, 0x77, 0xca, 0x35, 0x72, 0x9e, 0x4a, 0xb5, + 0xc8, 0xaa, 0x56, 0x2c, 0xb6, 0xab, 0xa1, 0xab, 0xdb, 0x9b, 0x35, 0x1d, + 0x8d, 0xad, 0xf2, 0xbd, 0x4b, 0xff, 0xfb, 0xd4, 0x60, 0x5f, 0x89, 0x07, + 0xba, 0x76, 0x3e, 0x2b, 0x8f, 0x7b, 0x70, 0x64, 0xae, 0x38, 0x5a, 0x0d, + 0x02, 0x6e, 0x63, 0x49, 0xd6, 0xf2, 0x2e, 0x3f, 0x0d, 0xc2, 0x1a, 0xba, + 0xa0, 0x24, 0x63, 0x21, 0xb8, 0x1d, 0x40, 0xce, 0xd6, 0xf6, 0x2b, 0x2c, + 0x34, 0x2a, 0x23, 0xf6, 0x6d, 0x51, 0x52, 0x83, 0x51, 0x28, 0xd2, 0xec, + 0xd0, 0xd4, 0xee, 0x0f, 0x5c, 0x95, 0x88, 0xb6, 0x83, 0x70, 0xe5, 0x52, + 0xc4, 0x3c, 0x8e, 0x48, 0x88, 0x32, 0x10, 0x42, 0x12, 0xe8, 0x48, 0x6f, + 0x1b, 0x84, 0x8c, 0x85, 0x92, 0xb0, 0xc2, 0x2f, 0x85, 0xd8, 0x61, 0x9c, + 0x6e, 0x80, 0x06, 0x4e, 0x9a, 0x46, 0xd1, 0x03, 0xf6, 0x14, 0xf0, 0x8f, + 0x45, 0x4a, 0x12, 0x15, 0x3e, 0xa0, 0x7d, 0x4b, 0xf3, 0x2e, 0x7b, 0x4f, + 0x63, 0xe9, 0x03, 0x40, 0x2d, 0x61, 0x38, 0x84, 0xca, 0xf0, 0xb2, 0xbb, + 0x6a, 0xe5, 0x24, 0x51, 0xa5, 0x49, 0xac, 0x88, 0x5d, 0x8e, 0x64, 0x24, + 0xcf, 0x16, 0x8a, 0xc7, 0x57, 0x19, 0xd7, 0x54, 0x45, 0x3e, 0xb3, 0x32, + 0xda, 0x62, 0x68, 0xc4, 0xf6, 0xf7, 0xfa, 0xd2, 0xae, 0x6d, 0xff, 0x47, + 0xff, 0x7a, 0x5f, 0xd2, 0xb4, 0x7d, 0x7d, 0x1f, 0xd2, 0xff, 0xa6, 0xde, + 0xa4, 0x6b, 0x24, 0xf7, 0xaa, 0x91, 0x81, 0x18, 0xd0, 0x67, 0x62, 0xb1, + 0x9c, 0xac, 0x0d, 0x12, 0x95, 0xce, 0x48, 0x05, 0x27, 0x00, 0xb4, 0x33, + 0x7c, 0x8c, 0x11, 0x5d, 0x08, 0xe5, 0x0d, 0x71, 0xbd, 0x16, 0x01, 0x3a, + 0x13, 0x8b, 0xf6, 0x22, 0xed, 0x97, 0x16, 0x02, 0xcc, 0x9c, 0x97, 0xa2, + 0x0c, 0xa5, 0x2f, 0x25, 0x85, 0x09, 0x38, 0xcc, 0x92, 0x04, 0x64, 0xae, + 0xc8, 0x4a, 0xb9, 0x84, 0xff, 0x46, 0x8c, 0x88, 0x03, 0xb8, 0x9c, 0xa1, + 0xe9, 0x12, 0x18, 0xd1, 0xb0, 0xcc, 0x21, 0xe3, 0xc8, 0xe6, 0x20, 0x4a, + 0xe3, 0x1d, 0x4c, 0x5d, 0xd0, 0xa4, 0xb2, 0xad, 0x6d, 0xc9, 0xfa, 0x34, + 0xbf, 0xad, 0xbb, 0x56, 0xc5, 0x62, 0x2f, 0x65, 0x58, 0x19, 0xc4, 0xb9, + 0x1f, 0x6d, 0x16, 0xa3, 0x5d, 0xaf, 0x7f, 0x74, 0xef, 0x14, 0xb5, 0xb4, + 0x97, 0xd3, 0x4a, 0x61, 0xd8, 0xe3, 0xb9, 0x61, 0xb1, 0xcb, 0x63, 0xf1, + 0x39, 0x55, 0xe6, 0xf2, 0x1c, 0x96, 0xd1, 0xd4, 0x80, 0x9b, 0xda, 0x68, + 0x12, 0x5e, 0xf6, 0x47, 0xad, 0xc1, 0x2d, 0xd9, 0xcf, 0x81, 0x6a, 0x5c, + 0xa4, 0x7d, 0x60, 0x67, 0x91, 0xb7, 0x91, 0xcc, 0x58, 0x8f, 0x41, 0x8f, + 0x1b, 0xdd, 0x22, 0x99, 0x93, 0x40, 0xf7, 0x19, 0x1b, 0x38, 0xb7, 0x3b, + 0x11, 0x60, 0xb2, 0x96, 0xc7, 0x4b, 0x18, 0x84, 0x3c, 0x78, 0x4b, 0x24, + 0x51, 0x49, 0x7c, 0x9a, 0x72, 0x11, 0x00, 0xc3, 0x72, 0xe7, 0xc6, 0x7e, + 0x2e, 0xf6, 0xc5, 0xea, 0x40, 0x11, 0x78, 0x3e, 0x1d, 0x8d, 0xdd, 0x97, + 0xc6, 0xe5, 0xb2, 0xd8, 0xdc, 0x1d, 0x02, 0xb9, 0xcf, 0x7c, 0x3d, 0x2b, + 0x7d, 0x27, 0xa4, 0x8f, 0x04, 0xd5, 0xa8, 0x0a, 0x0e, 0x99, 0x79, 0xa7, + 0xa9, 0xa1, 0xf9, 0x04, 0x56, 0x3d, 0x19, 0x86, 0xa7, 0x69, 0xdf, 0x57, + 0x15, 0xdd, 0x7b, 0x5c, 0x79, 0x1c, 0xb5, 0xf6, 0x87, 0xe2, 0x6a, 0xc4, + 0xe5, 0x40, 0x94, 0x4f, 0xd3, 0xdc, 0x91, 0x71, 0x06, 0x86, 0xa2, 0x72, + 0xd6, 0xbf, 0x04, 0xa9, 0x7b, 0xa6, 0xc0, 0x13, 0x75, 0x5c, 0x23, 0x92, + 0xcd, 0x8d, 0xa9, 0x68, 0x38, 0xac, 0x34, 0xbc, 0xec, 0xa9, 0xec, 0x8e, + 0x00, 0x00, 0x04, 0xae, 0x80, 0x1f, 0xe1, 0x10, 0x82, 0x20, 0x25, 0x38, + 0x5c, 0x92, 0x2d, 0x79, 0x55, 0xde, 0xe6, 0x6e, 0x65, 0x0b, 0x51, 0x0a, + 0x93, 0x8b, 0xa5, 0x9e, 0xda, 0xa4, 0xf9, 0xd8, 0xac, 0xef, 0xa9, 0x33, + 0xb3, 0x8d, 0x36, 0xd4, 0x68, 0x32, 0x68, 0xa0, 0x4e, 0x2a, 0xb1, 0xa4, + 0xa5, 0xd5, 0x25, 0xf1, 0x1d, 0x7f, 0x51, 0xad, 0xfa, 0x4d, 0xc3, 0x71, + 0x75, 0x13, 0xcd, 0xf1, 0xdc, 0xbe, 0xe9, 0x31, 0x57, 0x31, 0x5a, 0xd3, + 0xb5, 0xf7, 0xc3, 0xd4, 0xd4, 0xdf, 0x0b, 0xf5, 0xd7, 0xd3, 0xbc, 0x57, + 0xcd, 0xd5, 0xdc, 0xcc, 0x77, 0x7c, 0x7c, 0xcd, 0xa7, 0x1b, 0xdc, 0x77, + 0xc2, 0xb7, 0xf4, 0x3d, 0x10, 0x74, 0xdd, 0x5d, 0xb5, 0x5c, 0x8f, 0x41, + 0x94, 0x87, 0x41, 0x65, 0x87, 0xc7, 0x9a, 0x0b, 0x04, 0x59, 0x11, 0x24, + 0x47, 0x1e, 0x0f, 0x16, 0x69, 0x02, 0x85, 0x08, 0xa2, 0xf4, 0x28, 0x78, + 0xa8, 0x86, 0x39, 0x18, 0x00, 0x08, 0x8b, 0x3e, 0x18, 0xdb, 0x31, 0x41, + 0xa5, 0x4a, 0xee, 0x47, 0x2e, 0x43, 0xce, 0xa6, 0x71, 0x4a, 0x2b, 0x12, + 0xd3, 0xcd, 0x91, 0xeb, 0x14, 0x16, 0x25, 0xc6, 0x61, 0x43, 0x4a, 0xac, + 0x2e, 0x1d, 0xa8, 0xe0, 0x9d, 0x48, 0xc6, 0x52, 0xe1, 0x3b, 0x59, 0x86, + 0x4d, 0xd0, 0x87, 0x67, 0x82, 0x1a, 0x9f, 0x45, 0xa4, 0x8d, 0xe3, 0xbd, + 0x2e, 0x67, 0x93, 0xc6, 0x25, 0x6b, 0x2c, 0x48, 0xac, 0xce, 0x73, 0x41, + 0x52, 0xaa, 0x19, 0x5e, 0xbe, 0x33, 0x98, 0x61, 0x32, 0x23, 0x92, 0x52, + 0xa9, 0x1a, 0x94, 0x8c, 0x4f, 0x0b, 0x64, 0x66, 0x95, 0x1c, 0xf8, 0xdb, + 0x65, 0xa1, 0xbf, 0xf3, 0xaa, 0x98, 0x98, 0xe6, 0x52, 0x50, 0xfe, 0x76, + 0xd8, 0xd6, 0xcc, 0xa6, 0x91, 0x48, 0xf2, 0xee, 0x9f, 0x39, 0x2e, 0x5a, + 0xdc, 0x1b, 0x99, 0xa3, 0xa8, 0xd7, 0x2d, 0xf2, 0xb9, 0x40, 0x8a, 0xf5, + 0xc5, 0x92, 0x21, 0xc0, 0x73, 0x33, 0xa9, 0x25, 0x70, 0x78, 0x94, 0x65, + 0x3a, 0x64, 0x8c, 0xe4, 0x93, 0x80, 0xea, 0x63, 0x09, 0x55, 0x69, 0xda, + 0x58, 0xd0, 0xf7, 0x28, 0xd4, 0xff, 0xfb, 0xd4, 0x60, 0x4f, 0x09, 0x07, + 0x8b, 0x76, 0x3e, 0x13, 0x6f, 0x7b, 0x70, 0x6d, 0x0e, 0xb8, 0x3d, 0x0d, + 0x02, 0x6e, 0x1d, 0xdd, 0xd8, 0xf8, 0xad, 0xbd, 0xed, 0xc1, 0xb0, 0x3a, + 0x21, 0x74, 0x24, 0x89, 0xb9, 0x5c, 0x2f, 0x38, 0x28, 0xd4, 0xad, 0x6a, + 0xa7, 0xc9, 0xe5, 0x03, 0x25, 0xae, 0xc3, 0x45, 0x22, 0xbe, 0x2c, 0x05, + 0xde, 0x95, 0xb0, 0x28, 0xe0, 0xdd, 0x15, 0xca, 0x2e, 0xdb, 0x74, 0xa5, + 0x72, 0xd5, 0x58, 0x55, 0xd3, 0xab, 0xa0, 0x46, 0x95, 0xb6, 0x0c, 0x77, + 0x34, 0x9b, 0xe7, 0x47, 0x64, 0x25, 0x2e, 0x6c, 0xa6, 0x78, 0xad, 0x41, + 0x3c, 0x65, 0x56, 0xc8, 0x7f, 0xa7, 0x9f, 0x36, 0x22, 0xca, 0xa4, 0x25, + 0x12, 0x67, 0x14, 0xc5, 0x09, 0x5a, 0x4e, 0x0c, 0x96, 0x40, 0x6f, 0x09, + 0x20, 0xb6, 0x9d, 0x4d, 0x00, 0x00, 0x00, 0x05, 0x46, 0xa3, 0x28, 0x80, + 0x3e, 0xa0, 0xc2, 0x84, 0x10, 0x21, 0x6c, 0x8b, 0x9d, 0x7c, 0xee, 0x90, + 0x32, 0xc1, 0x71, 0x61, 0xc5, 0x95, 0x4a, 0x8e, 0x30, 0x70, 0xd7, 0xde, + 0x2f, 0x6e, 0x2d, 0x10, 0x91, 0x62, 0x4e, 0x2c, 0xd1, 0xb1, 0x32, 0x42, + 0x35, 0x4b, 0x59, 0xa4, 0xdd, 0x1d, 0xf4, 0x57, 0xad, 0x54, 0xda, 0xac, + 0xa9, 0xba, 0x1d, 0x4d, 0xd1, 0x4c, 0x55, 0x75, 0x4b, 0x2f, 0xf7, 0xff, + 0x5f, 0xeb, 0xeb, 0xf3, 0xd3, 0xe6, 0x72, 0xb7, 0x91, 0x53, 0xa6, 0x74, + 0x46, 0xe8, 0xaf, 0xd3, 0x3e, 0x8e, 0xa9, 0xb3, 0x01, 0x10, 0x8a, 0xc5, + 0x04, 0x76, 0x08, 0x75, 0x19, 0x46, 0x41, 0x21, 0x55, 0xd9, 0x0c, 0x0c, + 0x28, 0xb4, 0x52, 0x3c, 0x00, 0x81, 0x64, 0x65, 0xc2, 0x04, 0x59, 0x9d, + 0x50, 0x72, 0xe9, 0x78, 0x19, 0xac, 0xe3, 0xd6, 0xa9, 0x60, 0xe8, 0x9c, + 0xaa, 0x9e, 0x2a, 0x67, 0x64, 0xbb, 0xc6, 0x8e, 0xf0, 0xba, 0xcd, 0x15, + 0xac, 0xc7, 0x35, 0x5b, 0x55, 0x86, 0x8a, 0x1e, 0xf4, 0xfc, 0x8f, 0x0d, + 0x12, 0xa8, 0x86, 0x5f, 0x4d, 0x21, 0xd6, 0xc4, 0x62, 0x1f, 0xaa, 0xa5, + 0x88, 0xa3, 0xe5, 0xaa, 0x24, 0x17, 0x24, 0x53, 0x0e, 0xd0, 0xe7, 0x6a, + 0x78, 0x53, 0x45, 0x75, 0xb3, 0xf9, 0xcd, 0xc3, 0x10, 0x17, 0xb4, 0xb0, + 0xba, 0x74, 0xdc, 0xf2, 0x0a, 0xcc, 0x95, 0x7e, 0xde, 0xf9, 0xa9, 0x43, + 0x04, 0xe9, 0x9d, 0xc5, 0x6e, 0x76, 0x48, 0x4b, 0x10, 0xd9, 0x5b, 0xf6, + 0x74, 0x61, 0x5e, 0xc7, 0xa7, 0x3c, 0x4f, 0x11, 0x7d, 0x62, 0x3e, 0x58, + 0xd5, 0xc9, 0xf4, 0x92, 0x16, 0xe5, 0x23, 0xf7, 0xaf, 0x56, 0x59, 0x61, + 0xa2, 0xd7, 0xd9, 0x56, 0xe0, 0x3e, 0x65, 0x5d, 0x31, 0x37, 0xb1, 0x6d, + 0xeb, 0x9c, 0x15, 0x7d, 0xd5, 0x09, 0x08, 0xb0, 0xa7, 0x89, 0xa5, 0x4e, + 0x9e, 0x35, 0xcc, 0xe6, 0xc0, 0xa5, 0x9d, 0x16, 0xe2, 0xa8, 0xc1, 0xc7, + 0x0d, 0xd2, 0xdb, 0x87, 0x54, 0x59, 0x93, 0x1b, 0x6d, 0x64, 0x74, 0xe7, + 0x78, 0x1b, 0xb4, 0x4d, 0xa5, 0x2a, 0xb9, 0xd2, 0x95, 0x52, 0xa0, 0x66, + 0x82, 0xcf, 0x19, 0x75, 0x65, 0x64, 0xce, 0xd5, 0x4c, 0xca, 0xc7, 0xaa, + 0x27, 0x06, 0x59, 0xd4, 0x8b, 0x82, 0xe8, 0x5f, 0x74, 0x8a, 0x48, 0x2c, + 0xa9, 0x59, 0x59, 0x1b, 0x0e, 0x84, 0x83, 0xf3, 0x91, 0x30, 0x74, 0x13, + 0xa0, 0xe7, 0x44, 0x2f, 0x96, 0x30, 0x59, 0x01, 0xbc, 0xe6, 0x39, 0x8b, + 0xf0, 0x90, 0x14, 0x8e, 0x80, 0x04, 0x82, 0x52, 0x9a, 0x4a, 0xda, 0x20, + 0x6c, 0xe2, 0x9c, 0x0c, 0xc0, 0x83, 0xb3, 0x66, 0xaf, 0x2b, 0xf3, 0xad, + 0xcf, 0x32, 0x6a, 0x7c, 0x05, 0x04, 0x04, 0xc2, 0x04, 0xd9, 0x94, 0x16, + 0xb8, 0xbd, 0x37, 0xe4, 0xa5, 0xe5, 0x2a, 0xd7, 0x4e, 0x0d, 0x2d, 0x72, + 0x66, 0x6b, 0xa6, 0xc3, 0xa8, 0x9d, 0x50, 0xcc, 0xa6, 0x53, 0xa7, 0xdc, + 0x48, 0xa6, 0x33, 0x38, 0x32, 0xba, 0x15, 0xa4, 0x39, 0x55, 0xf6, 0xca, + 0xe6, 0x44, 0x79, 0xbb, 0x75, 0x65, 0xfe, 0xb4, 0x5b, 0x7a, 0xb5, 0x17, + 0xff, 0xff, 0xff, 0xfe, 0x9a, 0x67, 0xd2, 0x9e, 0x8e, 0x46, 0xd2, 0xac, + 0x75, 0x44, 0x04, 0xb9, 0x01, 0x8c, 0x73, 0x90, 0x05, 0x0a, 0x21, 0x9d, + 0x01, 0x92, 0x60, 0x43, 0x15, 0xf8, 0x25, 0xaf, 0xd1, 0x81, 0x2d, 0x86, + 0xea, 0x29, 0x17, 0x46, 0x9a, 0x9a, 0x4a, 0xe7, 0xc5, 0xe3, 0x57, 0x1f, + 0x2e, 0x2b, 0xd7, 0x97, 0x28, 0x45, 0x9f, 0x1d, 0x93, 0x14, 0x30, 0x93, + 0x0c, 0x87, 0x2b, 0x7a, 0xed, 0x20, 0x8f, 0x5f, 0x27, 0x27, 0xeb, 0xe2, + 0x78, 0xd6, 0x72, 0xa6, 0x54, 0xf2, 0xa9, 0x4e, 0x94, 0xf4, 0x14, 0x6c, + 0x29, 0x97, 0x5e, 0x3c, 0xcb, 0x85, 0xa8, 0x69, 0xb6, 0x06, 0xc4, 0x25, + 0xbe, 0x0a, 0x24, 0xb1, 0xae, 0x57, 0x70, 0x2b, 0x01, 0x3c, 0x5f, 0x94, + 0x8b, 0x96, 0x95, 0x6b, 0x2b, 0x22, 0x32, 0x77, 0x1e, 0x88, 0x57, 0x48, + 0xa5, 0x83, 0x05, 0xd6, 0xe6, 0x5d, 0xe6, 0x8c, 0x93, 0xc3, 0x3f, 0x95, + 0x6b, 0x71, 0x60, 0x28, 0xd5, 0x4a, 0x23, 0xee, 0x4c, 0x67, 0x39, 0xab, + 0x03, 0x4c, 0x38, 0x07, 0x54, 0x7b, 0x42, 0xac, 0x78, 0xcf, 0x96, 0x18, + 0xdb, 0xdc, 0x1c, 0x6a, 0xc2, 0xc7, 0x2b, 0x93, 0x2b, 0x0b, 0x82, 0xdb, + 0xf6, 0x17, 0x1c, 0x69, 0xed, 0xe7, 0x5b, 0x4f, 0xaa, 0xdf, 0x6d, 0x4f, + 0x1d, 0x6c, 0xdf, 0xbb, 0x0e, 0xd4, 0x2a, 0xfc, 0x4a, 0xba, 0x6f, 0x3a, + 0x53, 0xca, 0xdd, 0xad, 0x2b, 0x5e, 0xe5, 0x5d, 0xa6, 0x39, 0x17, 0x70, + 0x9e, 0xbe, 0x6a, 0x50, 0x2a, 0xd6, 0x98, 0xa3, 0x55, 0x5e, 0xe5, 0x34, + 0x79, 0x22, 0xaa, 0x6d, 0xe3, 0xff, 0xfb, 0xd4, 0x60, 0x60, 0x0d, 0x87, + 0x73, 0x76, 0x3e, 0x0b, 0x6f, 0x7b, 0x70, 0x75, 0x0e, 0x88, 0x3a, 0x0d, + 0x23, 0x6e, 0x22, 0x89, 0xd8, 0xf2, 0x0e, 0x3f, 0x0d, 0xc2, 0x16, 0xba, + 0xe0, 0x1c, 0x34, 0x21, 0xb8, 0x47, 0x70, 0x55, 0x31, 0xce, 0xa8, 0x3e, + 0x97, 0x2a, 0x76, 0x35, 0x96, 0x53, 0xa5, 0xda, 0xb5, 0x12, 0x94, 0x7c, + 0x5f, 0x8f, 0xa4, 0xa9, 0xda, 0x7a, 0xb1, 0xa0, 0x08, 0x21, 0xec, 0x19, + 0xc3, 0xc4, 0xd9, 0x0c, 0xc3, 0xf0, 0xdc, 0x16, 0xf5, 0xb1, 0xca, 0x52, + 0x1a, 0xcb, 0x98, 0x00, 0x00, 0x4f, 0x37, 0x9b, 0x44, 0x01, 0xe1, 0x00, + 0x89, 0x55, 0x48, 0x1b, 0xeb, 0x52, 0x08, 0x94, 0x86, 0xac, 0x99, 0x3b, + 0x48, 0x6b, 0x2a, 0x71, 0x51, 0xda, 0xf9, 0x5b, 0xa6, 0xce, 0xe2, 0x09, + 0x3a, 0x4e, 0x14, 0x9c, 0x14, 0x88, 0x91, 0x0f, 0xef, 0x8c, 0x76, 0xe6, + 0xac, 0xee, 0x12, 0x78, 0x45, 0x0d, 0xd1, 0x56, 0xd1, 0x81, 0x21, 0xdf, + 0x90, 0xed, 0x20, 0x7b, 0x9b, 0xaa, 0xaf, 0x7b, 0xda, 0x9c, 0xd6, 0xe4, + 0x72, 0x7f, 0x9e, 0x7f, 0xff, 0xdf, 0x3f, 0x9f, 0x96, 0xfd, 0xf2, 0x9d, + 0xef, 0x7f, 0xd3, 0xcd, 0xbf, 0x87, 0xfc, 0xbb, 0x76, 0x79, 0xe5, 0xe8, + 0x46, 0x79, 0xcb, 0x91, 0x53, 0xe8, 0x38, 0x4d, 0x9e, 0xca, 0xc1, 0xc4, + 0xfa, 0xb0, 0x57, 0x45, 0x12, 0x04, 0x30, 0x08, 0x41, 0x48, 0x59, 0xb0, + 0xd6, 0x5d, 0x73, 0x07, 0x04, 0x83, 0xd9, 0xaa, 0x13, 0x0b, 0x5f, 0xb1, + 0xc7, 0x15, 0x75, 0xca, 0xb4, 0xe2, 0x2e, 0x68, 0x64, 0xb7, 0x2b, 0xd1, + 0x69, 0xd2, 0xc0, 0x74, 0x9f, 0x27, 0x2a, 0x38, 0x76, 0x1d, 0x89, 0xc3, + 0x70, 0xfb, 0x2f, 0xf2, 0xaa, 0x8c, 0x83, 0x29, 0x26, 0x7f, 0x9d, 0x07, + 0xc9, 0xc2, 0xd8, 0x94, 0x43, 0x53, 0xb0, 0x51, 0x67, 0x59, 0x4a, 0x53, + 0x31, 0x9b, 0xa7, 0x1c, 0x73, 0xe5, 0xc4, 0xf7, 0x55, 0x37, 0xbd, 0x24, + 0x05, 0xe9, 0xbd, 0x74, 0xac, 0x44, 0x41, 0xb2, 0xf6, 0xc5, 0x17, 0x82, + 0xdf, 0x97, 0xb3, 0x06, 0xef, 0x4c, 0xfe, 0x6e, 0x04, 0x76, 0x2b, 0x37, + 0x27, 0x43, 0x09, 0xb7, 0x6a, 0x23, 0x11, 0x8c, 0xbe, 0x33, 0x50, 0x5c, + 0x05, 0x6a, 0x7a, 0x2a, 0xee, 0xba, 0x18, 0xc0, 0x13, 0xf5, 0x21, 0x53, + 0x11, 0x49, 0xa9, 0x43, 0xe9, 0x01, 0xdc, 0x89, 0x53, 0x41, 0xb7, 0xdd, + 0xd9, 0x53, 0xfe, 0xf2, 0x45, 0x63, 0xae, 0x5f, 0x5b, 0x83, 0x33, 0x87, + 0xd8, 0x83, 0xdb, 0x1c, 0x9a, 0x93, 0xd5, 0x83, 0x5d, 0xca, 0x93, 0x76, + 0x1f, 0xe6, 0x8c, 0xe2, 0xe0, 0xce, 0xa4, 0xad, 0x6e, 0x2d, 0x0f, 0x31, + 0x0a, 0x57, 0x6e, 0xab, 0xd1, 0x31, 0x08, 0xbd, 0x01, 0x5e, 0xa4, 0x75, + 0x5e, 0x48, 0x62, 0x92, 0x6d, 0xa4, 0xb5, 0x29, 0x44, 0x05, 0x05, 0x4b, + 0xe7, 0xe5, 0xd4, 0xb1, 0xb7, 0xd2, 0x1a, 0xe5, 0x69, 0x5c, 0x8a, 0x0d, + 0xd5, 0x3b, 0x4f, 0x6d, 0x21, 0x13, 0x0d, 0x76, 0x6e, 0x57, 0x21, 0x98, + 0x89, 0x5a, 0x9b, 0x9b, 0x96, 0x4b, 0x7b, 0x25, 0x83, 0x23, 0x94, 0x56, + 0x21, 0xc6, 0x98, 0xf1, 0x37, 0x38, 0xe4, 0x96, 0x71, 0xf5, 0x5a, 0x53, + 0xd2, 0xd9, 0x98, 0x26, 0x1a, 0x97, 0xbe, 0x2c, 0x01, 0xc4, 0x48, 0x56, + 0x70, 0xe3, 0xd1, 0x2c, 0x2c, 0xad, 0x16, 0x91, 0xad, 0xa6, 0x08, 0x44, + 0x99, 0xb1, 0x46, 0xd9, 0x12, 0x58, 0x18, 0xd2, 0x86, 0x14, 0x93, 0x10, + 0x08, 0x9c, 0x24, 0x10, 0x00, 0xe2, 0x88, 0x30, 0xc4, 0x10, 0x82, 0xe6, + 0xb1, 0xd7, 0x92, 0x29, 0x0d, 0x67, 0x94, 0x65, 0x7a, 0x08, 0xe8, 0xa4, + 0x14, 0x90, 0x12, 0x24, 0xc3, 0xc4, 0x4c, 0x50, 0xd7, 0x7b, 0x9e, 0x6a, + 0x87, 0x12, 0x39, 0xf9, 0xbb, 0x5a, 0x4e, 0xea, 0x51, 0xf9, 0xbf, 0xee, + 0x66, 0x1e, 0x22, 0xfd, 0x5d, 0x1c, 0x62, 0xca, 0x58, 0xde, 0x3b, 0xe6, + 0x17, 0x1b, 0x73, 0xb2, 0xf4, 0xb7, 0x3f, 0x2d, 0xa4, 0xac, 0xca, 0x71, + 0xcc, 0xca, 0xc9, 0xbf, 0xdc, 0xc3, 0xd6, 0xcb, 0x3a, 0xc4, 0xfd, 0x69, + 0xcd, 0x44, 0xa4, 0xf0, 0xd3, 0x37, 0x55, 0x1a, 0xa4, 0xf3, 0x27, 0x73, + 0x11, 0xf3, 0x0b, 0xc7, 0xca, 0xc1, 0xad, 0x25, 0x28, 0xa1, 0xf6, 0x86, + 0x88, 0xa1, 0xa8, 0x1a, 0x34, 0x4b, 0x60, 0x20, 0x1d, 0x88, 0x62, 0x39, + 0xa1, 0xf8, 0xf4, 0x16, 0x25, 0x06, 0x48, 0x84, 0xa2, 0xc7, 0xc8, 0x88, + 0x34, 0x5a, 0x95, 0x00, 0x33, 0x28, 0x01, 0x84, 0x4c, 0x18, 0xa0, 0x73, + 0x00, 0xb1, 0x4c, 0xe0, 0x67, 0xca, 0xcb, 0xc9, 0x21, 0x7e, 0xe8, 0x25, + 0x31, 0x84, 0xed, 0x11, 0x0c, 0xfb, 0xb3, 0x62, 0x95, 0x79, 0x1c, 0xd6, + 0x86, 0xa2, 0xd7, 0x26, 0x03, 0xc3, 0xcd, 0x0b, 0x3f, 0x94, 0xd9, 0x43, + 0x52, 0xad, 0xf3, 0x2b, 0x9c, 0x8e, 0xc5, 0x41, 0x86, 0x90, 0x6b, 0xa3, + 0xd6, 0x05, 0x6b, 0xc1, 0xca, 0x72, 0x22, 0xd5, 0x6d, 0x6c, 0xd3, 0xed, + 0x58, 0x5f, 0x93, 0x9a, 0x66, 0x50, 0xaa, 0xd4, 0xad, 0x66, 0xe3, 0x59, + 0xf5, 0x09, 0x56, 0xb4, 0xe0, 0x84, 0x28, 0x26, 0x8e, 0xe6, 0xf9, 0x85, + 0x67, 0xa9, 0x2a, 0xe0, 0xf2, 0xb1, 0xa2, 0xa7, 0x1e, 0x40, 0x57, 0xea, + 0xef, 0x5a, 0xe2, 0xb4, 0x33, 0x3a, 0x53, 0xae, 0xa3, 0x6e, 0x2b, 0x9a, + 0xb9, 0x4e, 0xca, 0xbe, 0xa0, 0x64, 0x8b, 0x19, 0x99, 0x5b, 0xe7, 0xd4, + 0x06, 0x27, 0x26, 0xb7, 0x0b, 0xab, 0x5f, 0xc4, 0x8f, 0x05, 0x54, 0xe2, + 0xdd, 0x68, 0xf1, 0x75, 0x95, 0x7c, 0x2b, 0x5a, 0x0f, 0x85, 0x2c, 0x95, + 0x4a, 0xb9, 0x29, 0x9e, 0xc0, 0xff, 0xfb, 0xd4, 0x60, 0x4f, 0x0d, 0x07, + 0x4d, 0x75, 0xbe, 0xb3, 0x6f, 0x7b, 0x70, 0x75, 0x2e, 0xb8, 0x2a, 0x18, + 0x65, 0x6e, 0x1d, 0x79, 0xd8, 0xf8, 0x2d, 0xb1, 0xed, 0xc1, 0xb4, 0xb9, + 0xe1, 0x34, 0x23, 0x09, 0xb9, 0x5c, 0x32, 0xcd, 0x16, 0x77, 0x14, 0xfc, + 0x16, 0xd7, 0x3d, 0x55, 0xb9, 0xdc, 0xea, 0xa9, 0xd7, 0x0a, 0xbb, 0x5d, + 0x85, 0x51, 0x5b, 0x59, 0x66, 0x91, 0x1d, 0x30, 0x39, 0xcf, 0x65, 0x3a, + 0xbe, 0x33, 0x1c, 0xaa, 0x88, 0x93, 0x3e, 0x56, 0xc1, 0x44, 0xc1, 0xc3, + 0x2b, 0x32, 0xb1, 0x91, 0x92, 0xee, 0xaa, 0xf4, 0xf0, 0x77, 0x53, 0x9c, + 0xf3, 0x6b, 0x28, 0x1f, 0x2a, 0x2e, 0x38, 0xcd, 0xe2, 0xf4, 0x19, 0x62, + 0xc6, 0x63, 0x1e, 0xc2, 0xe0, 0x8d, 0x23, 0x47, 0xd0, 0x02, 0x03, 0x29, + 0x46, 0x49, 0x00, 0x7e, 0xf8, 0x69, 0xd0, 0x00, 0x09, 0x4b, 0x29, 0xfe, + 0x33, 0x63, 0x40, 0xa1, 0x10, 0x16, 0xf9, 0x82, 0xf8, 0x6b, 0x05, 0x66, + 0x36, 0xc1, 0xb1, 0x89, 0x04, 0xb8, 0x10, 0x81, 0xc5, 0x89, 0xc8, 0x40, + 0x58, 0xca, 0xf0, 0xc3, 0x5d, 0x07, 0x99, 0x1f, 0x9d, 0x48, 0xfc, 0xa4, + 0x5b, 0xb9, 0xef, 0xd1, 0xde, 0xa8, 0xed, 0x62, 0x95, 0xd1, 0x33, 0x1a, + 0x72, 0x27, 0x7d, 0xff, 0x5e, 0xcd, 0x54, 0x7d, 0xec, 0xb6, 0xd7, 0x64, + 0xb2, 0x19, 0xb6, 0xfe, 0xbd, 0x55, 0xec, 0x52, 0xdf, 0xac, 0x89, 0x54, + 0x3a, 0x3a, 0xa1, 0x4e, 0xae, 0x31, 0x55, 0x46, 0xc5, 0x87, 0x11, 0x8e, + 0x61, 0x43, 0x81, 0xc7, 0x87, 0x80, 0xae, 0x0c, 0x28, 0x29, 0x62, 0x38, + 0x74, 0x7b, 0xa8, 0xb9, 0x85, 0x52, 0xf5, 0x9e, 0xb2, 0x48, 0xa3, 0x4c, + 0x0b, 0x80, 0x22, 0x6f, 0xfa, 0xfe, 0x59, 0x71, 0x9a, 0x90, 0x54, 0x15, + 0x62, 0x90, 0x3e, 0x80, 0xc1, 0x42, 0x17, 0x93, 0x16, 0x42, 0xca, 0xf7, + 0x8c, 0xc4, 0x32, 0xa0, 0xe8, 0x12, 0x8b, 0x47, 0x51, 0x51, 0x00, 0x8c, + 0xb8, 0xdd, 0x5b, 0xc4, 0xf2, 0x70, 0xbc, 0x66, 0x82, 0x41, 0x3f, 0xf0, + 0xa8, 0x74, 0x10, 0xe0, 0x33, 0x26, 0x88, 0x07, 0xe6, 0x44, 0x75, 0x94, + 0x29, 0x8e, 0xa7, 0x2c, 0x87, 0x23, 0x22, 0x1e, 0xab, 0x63, 0xaa, 0x35, + 0x13, 0xb4, 0x74, 0xca, 0x66, 0xc4, 0x93, 0x0b, 0x1c, 0x08, 0x6b, 0xec, + 0x4d, 0x4e, 0x9b, 0x9a, 0x98, 0x59, 0x61, 0x2b, 0xe3, 0xba, 0x59, 0x8e, + 0xe6, 0x79, 0x37, 0x38, 0xe1, 0x59, 0x23, 0x2a, 0x2b, 0x2c, 0x50, 0xd8, + 0xd6, 0x9f, 0x9b, 0x4a, 0x18, 0xa7, 0xeb, 0x53, 0x0e, 0xd6, 0x25, 0x83, + 0x76, 0x17, 0xa9, 0xc5, 0x32, 0x79, 0xea, 0xb9, 0x7e, 0x22, 0xbd, 0xf2, + 0xf4, 0x29, 0x22, 0xc2, 0x8c, 0xe5, 0xef, 0xaa, 0x2a, 0x6c, 0xbf, 0x3a, + 0xb5, 0xc9, 0xfa, 0x19, 0xb7, 0xab, 0xfa, 0x37, 0x1b, 0x9a, 0x2b, 0x7b, + 0xbd, 0xea, 0xe8, 0x6e, 0x9b, 0x62, 0x56, 0x66, 0x5a, 0x22, 0x6e, 0x91, + 0x54, 0xc0, 0x4f, 0x77, 0x8a, 0x26, 0xf6, 0xc7, 0xa9, 0x26, 0x24, 0x31, + 0x42, 0xb9, 0x80, 0xd7, 0x01, 0x48, 0xad, 0xc1, 0xd6, 0xa8, 0x3c, 0x95, + 0xb2, 0x45, 0x8d, 0x66, 0x26, 0xb9, 0xd7, 0x4f, 0x1e, 0x39, 0xbd, 0xda, + 0xa9, 0x65, 0x58, 0xaa, 0x4f, 0x2e, 0x0a, 0x0d, 0x94, 0x46, 0x61, 0x07, + 0x48, 0x87, 0x6a, 0xe9, 0x88, 0xee, 0x82, 0x1a, 0x92, 0x14, 0x33, 0x4e, + 0xe6, 0x50, 0x08, 0x05, 0x12, 0x64, 0xd2, 0x46, 0x88, 0x1d, 0x41, 0x00, + 0x55, 0x71, 0x01, 0x85, 0x17, 0xbe, 0xef, 0xb6, 0xc6, 0xd2, 0x96, 0x74, + 0x96, 0xc9, 0x0e, 0x69, 0xb7, 0x0f, 0x6e, 0x8a, 0x47, 0x16, 0x5f, 0xeb, + 0xc9, 0xdb, 0x7a, 0xc4, 0xd8, 0xbb, 0xc3, 0x4f, 0x49, 0x8a, 0x66, 0x18, + 0xc2, 0x54, 0xea, 0x53, 0x9c, 0xb6, 0x31, 0x95, 0x47, 0x53, 0x14, 0x41, + 0x0a, 0x3b, 0xd9, 0x7b, 0x6d, 0x33, 0xde, 0x59, 0x48, 0xce, 0xcf, 0x5b, + 0x39, 0x19, 0xbd, 0x5d, 0xe6, 0x75, 0x7b, 0x53, 0xe9, 0xd3, 0xfb, 0xff, + 0x6f, 0xff, 0xd7, 0xd5, 0xb6, 0xd2, 0xd5, 0xa4, 0x84, 0x9e, 0x57, 0x70, + 0x00, 0x88, 0x80, 0x90, 0xb4, 0x71, 0x46, 0x40, 0x34, 0x29, 0x41, 0x18, + 0xb7, 0x0d, 0x92, 0xf8, 0x2b, 0x3c, 0x24, 0x30, 0xc6, 0x42, 0x12, 0xe5, + 0x36, 0x8e, 0xbb, 0x37, 0x8f, 0xb2, 0x77, 0x7a, 0xc4, 0x9e, 0x37, 0x23, + 0x3b, 0x2b, 0x8f, 0xc4, 0x92, 0xbe, 0x94, 0x5d, 0x2f, 0x3f, 0x25, 0x3a, + 0xae, 0x1c, 0xd3, 0x8f, 0x64, 0x42, 0x6b, 0xe1, 0xd9, 0x80, 0xac, 0x4c, + 0x0f, 0x56, 0x32, 0x5b, 0x27, 0x02, 0x2b, 0x4b, 0x23, 0xe2, 0x82, 0x88, + 0x46, 0x60, 0x70, 0x80, 0x4c, 0x24, 0x21, 0x13, 0x57, 0x01, 0xd1, 0xf6, + 0xa0, 0xf1, 0x51, 0x81, 0x09, 0x6f, 0x3b, 0xd9, 0x61, 0xf6, 0x57, 0x26, + 0x56, 0xa4, 0x3c, 0xf0, 0x67, 0x43, 0x15, 0xb1, 0x19, 0xd8, 0x59, 0xd3, + 0xb0, 0x57, 0x4b, 0xa4, 0x72, 0xdb, 0x9c, 0x19, 0x19, 0x1b, 0x5b, 0x1e, + 0x3d, 0x65, 0x6e, 0x71, 0x4d, 0x41, 0x95, 0xad, 0x85, 0x2b, 0xb6, 0x04, + 0xea, 0x77, 0x4f, 0xea, 0x92, 0x56, 0xbd, 0x63, 0x66, 0x5f, 0x86, 0xaf, + 0x3f, 0x1e, 0x4a, 0xa4, 0x73, 0xbc, 0x46, 0xa5, 0x22, 0x7d, 0x56, 0xe4, + 0xa3, 0x88, 0xd2, 0xbe, 0xde, 0xdf, 0x01, 0x0e, 0xa3, 0xf5, 0x3b, 0x6b, + 0x6b, 0x7c, 0xb2, 0xf9, 0xa6, 0xbb, 0x71, 0xf6, 0xcc, 0xe2, 0xab, 0x6f, + 0x70, 0x51, 0x5a, 0x2b, 0xcb, 0x2b, 0x30, 0xbd, 0x01, 0x08, 0x6f, 0x53, + 0xe5, 0xa8, 0xc4, 0x91, 0x39, 0x2a, 0x5f, 0x34, 0x99, 0x4e, 0xa6, 0x6d, + 0x67, 0xa4, 0xe9, 0xb5, 0x8b, 0xff, 0xfb, 0xd4, 0x60, 0x61, 0x09, 0x07, + 0x87, 0x76, 0x3e, 0x0b, 0x6c, 0x7b, 0x70, 0x72, 0x6e, 0xa8, 0x3d, 0x18, + 0xc5, 0x6e, 0x63, 0x05, 0xd6, 0xf2, 0xad, 0xbd, 0xed, 0xc2, 0x03, 0x3a, + 0xdf, 0xd4, 0x61, 0xa1, 0xb8, 0x28, 0x33, 0x75, 0x03, 0x8a, 0x3a, 0x1b, + 0x23, 0x0b, 0x5b, 0x5c, 0x28, 0x4f, 0xda, 0x99, 0x5f, 0xad, 0xab, 0x17, + 0xd9, 0xd4, 0x6b, 0x65, 0xc5, 0x69, 0x8d, 0x48, 0x60, 0xaa, 0xd4, 0x0c, + 0xc9, 0xb3, 0x00, 0xb8, 0x2b, 0xcb, 0x81, 0xb0, 0x48, 0x93, 0xe7, 0x51, + 0x84, 0xa7, 0x73, 0x74, 0x00, 0x20, 0x14, 0x9c, 0x71, 0xb4, 0x88, 0x03, + 0xfa, 0xc9, 0xa9, 0x15, 0xf7, 0x1c, 0xf7, 0x7e, 0xb4, 0xba, 0x2c, 0x45, + 0x88, 0x9a, 0x29, 0x00, 0x96, 0x3f, 0x9a, 0xf6, 0xd5, 0xcf, 0xd4, 0xc2, + 0x57, 0x65, 0xa2, 0xbe, 0x33, 0xf6, 0x5e, 0xf4, 0xd2, 0xad, 0xa6, 0x76, + 0x97, 0x53, 0xd1, 0x4b, 0x49, 0x59, 0xac, 0xcc, 0xe5, 0x8b, 0x39, 0x0e, + 0xb6, 0x54, 0x53, 0xaa, 0x3b, 0x91, 0x2b, 0xd8, 0xd3, 0x9f, 0xaa, 0xa6, + 0xfe, 0x6a, 0xe5, 0xe9, 0x7a, 0xf7, 0x5b, 0xa3, 0xc9, 0xad, 0x9b, 0xd3, + 0xfe, 0x99, 0x0c, 0x94, 0xf4, 0xfd, 0x9a, 0xdc, 0xeb, 0x42, 0x55, 0xcc, + 0x88, 0x53, 0x30, 0x99, 0x06, 0x94, 0x58, 0x40, 0x58, 0xac, 0x2a, 0x24, + 0x10, 0x13, 0x98, 0x6c, 0xa2, 0x73, 0x9c, 0xe5, 0x1a, 0x69, 0xc4, 0xa9, + 0x53, 0x82, 0x17, 0xae, 0x29, 0x43, 0x1a, 0x1e, 0x2e, 0x2a, 0x60, 0xbb, + 0x2a, 0x64, 0xdc, 0xd0, 0xd6, 0x7e, 0x36, 0xff, 0xbf, 0xc2, 0x64, 0x49, + 0x87, 0x31, 0xca, 0x4e, 0x59, 0x49, 0x61, 0x79, 0x2f, 0xc2, 0x3e, 0xa6, + 0x57, 0x37, 0x95, 0xa3, 0x74, 0x8e, 0x3d, 0x8e, 0xb1, 0x84, 0x38, 0x8d, + 0x73, 0x00, 0x15, 0x26, 0x09, 0x0d, 0x25, 0x83, 0x74, 0xbf, 0x1b, 0x4a, + 0x08, 0xc6, 0xb2, 0x1e, 0x5b, 0xd6, 0x08, 0x49, 0x93, 0x31, 0x07, 0x1e, + 0xa4, 0xba, 0xf9, 0x44, 0x88, 0x3b, 0x49, 0x4a, 0x8c, 0xa9, 0x3b, 0x8b, + 0xdb, 0x7a, 0x0f, 0x64, 0xa0, 0xfa, 0x30, 0x49, 0xf9, 0xfc, 0xb4, 0x5e, + 0x9d, 0x13, 0x04, 0x3c, 0xdf, 0x7c, 0x77, 0x10, 0x69, 0x16, 0x92, 0x88, + 0x5c, 0x56, 0x66, 0xd4, 0x31, 0x5c, 0xb9, 0x73, 0x2e, 0xe8, 0x42, 0xb9, + 0x5a, 0x62, 0x38, 0xab, 0xd4, 0x0b, 0x98, 0xac, 0xca, 0x96, 0x54, 0x24, + 0xac, 0x3a, 0x4a, 0x54, 0xe2, 0x2c, 0xb8, 0xac, 0xab, 0xcc, 0x92, 0xc4, + 0x78, 0x3e, 0x5f, 0x7a, 0xf0, 0xed, 0x5d, 0x8c, 0x93, 0x15, 0x3c, 0xaf, + 0x45, 0x1d, 0x68, 0x52, 0xcb, 0x12, 0x66, 0xe9, 0xe6, 0x74, 0x29, 0x46, + 0xaa, 0x74, 0x4f, 0x14, 0x48, 0xf4, 0x82, 0x61, 0x5c, 0xa8, 0x54, 0xa9, + 0x55, 0x27, 0x5a, 0xa5, 0x08, 0x38, 0x91, 0x87, 0x39, 0x30, 0x32, 0x92, + 0x07, 0x42, 0xb5, 0x74, 0x35, 0x10, 0x2f, 0x3a, 0x99, 0x48, 0x65, 0x17, + 0xf4, 0x8c, 0x06, 0xa4, 0x22, 0x21, 0xe2, 0xd7, 0x59, 0xa3, 0x46, 0x68, + 0x72, 0x6b, 0x31, 0xce, 0xe5, 0x4a, 0x69, 0x0d, 0x53, 0x43, 0x61, 0x57, + 0xc4, 0x9c, 0xd7, 0x56, 0x17, 0x76, 0x3b, 0xf1, 0xce, 0x97, 0x21, 0x24, + 0x21, 0xb5, 0x3c, 0x9e, 0x43, 0x09, 0xea, 0x28, 0x23, 0x66, 0x8a, 0xa0, + 0x15, 0x23, 0x88, 0x64, 0x9c, 0x72, 0x86, 0x31, 0x06, 0x5e, 0x68, 0x0f, + 0xa4, 0x35, 0xbc, 0x29, 0x82, 0x68, 0x93, 0x0d, 0x50, 0x83, 0x21, 0x41, + 0x1b, 0x25, 0x60, 0x05, 0x60, 0xfc, 0xea, 0x29, 0x49, 0x28, 0x2c, 0x60, + 0xdd, 0x6f, 0x0f, 0x40, 0xf2, 0xae, 0x65, 0x8a, 0xd9, 0x37, 0x74, 0x1c, + 0xf2, 0x2e, 0xe6, 0x24, 0x94, 0xe1, 0x9a, 0xda, 0x61, 0x82, 0x88, 0x48, + 0xc1, 0xc2, 0xb0, 0xaf, 0x3b, 0x3f, 0x19, 0xaa, 0xda, 0xb3, 0x4c, 0xc3, + 0x44, 0x2f, 0xf3, 0x4f, 0xbd, 0x48, 0xd8, 0x8d, 0xe6, 0x39, 0x88, 0xfe, + 0x5e, 0xe9, 0xc7, 0xcc, 0xdc, 0x3c, 0xff, 0x44, 0x56, 0xcd, 0x03, 0xeb, + 0xae, 0xda, 0xb6, 0xbe, 0x63, 0x88, 0xd6, 0xae, 0x66, 0x57, 0x84, 0xee, + 0x3c, 0xdf, 0xfa, 0x75, 0xae, 0xb7, 0xe1, 0xe2, 0x57, 0x48, 0x5e, 0x3b, + 0x55, 0x8c, 0x72, 0x3b, 0xb5, 0x8a, 0x0d, 0x25, 0x49, 0x81, 0x73, 0x0b, + 0x5c, 0xc2, 0x05, 0x6a, 0x47, 0x07, 0x01, 0x0b, 0x82, 0x90, 0xe0, 0x4a, + 0x1f, 0x84, 0x24, 0xa4, 0x8e, 0x0e, 0x46, 0x50, 0x8e, 0x1e, 0x8b, 0x55, + 0x00, 0x2d, 0x05, 0x34, 0x64, 0x12, 0x90, 0x12, 0xb6, 0xd7, 0xa4, 0xcf, + 0xc5, 0xee, 0xb2, 0x49, 0x14, 0x3d, 0x2f, 0x94, 0x46, 0x5f, 0x9f, 0xe9, + 0x28, 0x48, 0x53, 0x11, 0xbd, 0x15, 0x5c, 0xa1, 0x31, 0xd2, 0x8d, 0x25, + 0xd8, 0xf0, 0xdb, 0x8a, 0xea, 0x54, 0x3d, 0x0e, 0x32, 0x94, 0x8a, 0x46, + 0xe2, 0xde, 0x50, 0xc5, 0x6c, 0x2e, 0x2c, 0x05, 0xf2, 0xe8, 0x42, 0xb5, + 0xc1, 0xc0, 0x94, 0x31, 0x9f, 0x86, 0x92, 0xda, 0x71, 0xaa, 0x34, 0x26, + 0x34, 0x4b, 0x6a, 0x12, 0x4a, 0x50, 0x83, 0xb9, 0x50, 0x90, 0x54, 0xb4, + 0xb0, 0xb9, 0x31, 0xab, 0x55, 0x08, 0xa4, 0x5a, 0xa9, 0x96, 0xa7, 0xea, + 0xa5, 0x7b, 0x4c, 0xd0, 0x9e, 0x49, 0x65, 0x04, 0x38, 0xca, 0x84, 0x89, + 0xfc, 0xe4, 0x89, 0x5b, 0x5a, 0x2d, 0xe8, 0xeb, 0x32, 0x1d, 0xea, 0x95, + 0x96, 0x3b, 0xbb, 0x42, 0x6b, 0x64, 0x64, 0x5a, 0x43, 0x71, 0xe9, 0x55, + 0x43, 0xe7, 0xc7, 0xc1, 0xb7, 0x48, 0xcc, 0x91, 0x9b, 0x90, 0xf6, 0x28, + 0x72, 0x3d, 0x6d, 0x80, 0x91, 0x77, 0x82, 0xff, 0x22, 0xde, 0x1b, 0xd9, + 0x1d, 0xce, 0xf1, 0xeb, 0x7b, 0xff, 0xfb, 0xd4, 0x60, 0x50, 0x89, 0x07, + 0xcc, 0x76, 0xbd, 0xab, 0x6f, 0x7b, 0x70, 0x6f, 0xae, 0x38, 0x6d, 0x09, + 0x22, 0x6e, 0x5e, 0x25, 0xd8, 0xf9, 0x2d, 0xb1, 0xed, 0xc1, 0xc2, 0x3a, + 0x61, 0x34, 0x34, 0x09, 0xb8, 0x4b, 0xc4, 0x63, 0xe6, 0x25, 0xcc, 0xc7, + 0xf1, 0xd6, 0xda, 0x7a, 0xac, 0xb8, 0x2e, 0xd0, 0xc7, 0x33, 0x84, 0xe6, + 0x87, 0x35, 0xce, 0x84, 0x3d, 0x0e, 0x50, 0xaa, 0xd8, 0x20, 0xb6, 0x30, + 0xa7, 0xa9, 0x01, 0x20, 0xdd, 0xd3, 0xaf, 0x9e, 0xb8, 0xb1, 0x3d, 0x74, + 0xa1, 0x61, 0xcb, 0xfe, 0xce, 0xa0, 0xa4, 0xea, 0x56, 0x58, 0x66, 0x6a, + 0x8a, 0x53, 0x9c, 0xe6, 0x60, 0x34, 0x64, 0x70, 0x43, 0x66, 0x30, 0xc5, + 0x75, 0xd9, 0xb8, 0x41, 0xe8, 0xf0, 0xb6, 0x8c, 0xf0, 0xff, 0x38, 0xcb, + 0x61, 0x9c, 0x2b, 0x84, 0x28, 0x13, 0xa4, 0x19, 0x96, 0x60, 0x10, 0x01, + 0x96, 0xa7, 0x77, 0x58, 0xd1, 0x1c, 0xc2, 0x81, 0x16, 0xce, 0xb1, 0x80, + 0x1b, 0xee, 0x64, 0x13, 0x9c, 0x61, 0xb0, 0x31, 0x88, 0x12, 0x11, 0x81, + 0x05, 0x46, 0x99, 0x21, 0xca, 0xdf, 0x91, 0x56, 0x70, 0x41, 0x18, 0x9e, + 0x5d, 0xb9, 0x7c, 0x93, 0x28, 0xcc, 0xb6, 0x3b, 0x04, 0x64, 0x86, 0x0b, + 0x60, 0xa1, 0x43, 0x95, 0x04, 0x8e, 0x55, 0x2b, 0x9d, 0x0a, 0xc2, 0x4d, + 0x68, 0xba, 0x1a, 0x62, 0x90, 0x8e, 0xb2, 0xdc, 0xf3, 0x26, 0x8e, 0x3a, + 0x54, 0x2c, 0xb2, 0xcc, 0x49, 0xd3, 0xe8, 0xf2, 0x69, 0x64, 0xef, 0xfd, + 0x15, 0xb4, 0xfa, 0xff, 0xe8, 0xdf, 0xff, 0xff, 0xba, 0x6a, 0xe8, 0x5a, + 0xcd, 0x3c, 0x49, 0xc4, 0x9c, 0x3b, 0x65, 0x54, 0x96, 0x1c, 0x43, 0x70, + 0x84, 0x00, 0x42, 0x97, 0x67, 0x14, 0xe4, 0x9c, 0xca, 0x45, 0x4b, 0x2b, + 0x81, 0x63, 0x6e, 0xab, 0xbd, 0x02, 0xc3, 0x33, 0xf0, 0xfe, 0xbd, 0x84, + 0xd3, 0x27, 0x08, 0x26, 0x26, 0x29, 0xc6, 0x91, 0x33, 0x3d, 0x45, 0x85, + 0xc3, 0xb0, 0xdd, 0x13, 0xea, 0xcb, 0x41, 0xd0, 0x8c, 0x39, 0x8b, 0x92, + 0x55, 0x70, 0x36, 0x2e, 0x8d, 0x03, 0x52, 0xd0, 0xc9, 0x00, 0xed, 0xe4, + 0x02, 0xb1, 0x5d, 0x42, 0x35, 0x91, 0x8e, 0xa7, 0xc4, 0x64, 0xf1, 0xc8, + 0x61, 0x8f, 0x35, 0x52, 0x78, 0xaf, 0x2f, 0x86, 0x99, 0xf7, 0x21, 0xcc, + 0x75, 0x9d, 0x51, 0xdd, 0xdd, 0xce, 0x56, 0x69, 0x21, 0x2b, 0xd8, 0x28, + 0xf1, 0x8e, 0xeb, 0x47, 0xd2, 0xa9, 0xec, 0xf1, 0x95, 0x6c, 0xcf, 0x58, + 0x15, 0x36, 0x72, 0x50, 0xb3, 0xcc, 0xa1, 0x6b, 0x9d, 0xa2, 0x33, 0x4b, + 0x9a, 0xb5, 0x5d, 0x11, 0x59, 0x06, 0x1c, 0x6b, 0x2c, 0xb9, 0x40, 0x79, + 0xb4, 0xe4, 0x4b, 0x32, 0xb3, 0x30, 0x2c, 0xbf, 0x73, 0x57, 0x6a, 0xaa, + 0xf5, 0xb5, 0x0b, 0x9a, 0xd2, 0xed, 0xad, 0x4d, 0x47, 0x48, 0x53, 0x62, + 0xe1, 0x70, 0xe2, 0xaf, 0x43, 0x95, 0xd3, 0x5d, 0x73, 0x06, 0xcc, 0xcc, + 0x6a, 0xd5, 0x0a, 0x63, 0x57, 0x56, 0xa4, 0x59, 0x90, 0x86, 0x75, 0x6c, + 0x26, 0x47, 0xd2, 0x65, 0x82, 0x0c, 0x37, 0x9e, 0x33, 0x0d, 0xa2, 0x6f, + 0x0a, 0x46, 0x06, 0x36, 0x86, 0xb7, 0xc7, 0x62, 0x86, 0xeb, 0xb9, 0xd5, + 0x6c, 0x69, 0x0b, 0x21, 0xe9, 0x46, 0x9d, 0xaf, 0x1c, 0x27, 0xba, 0x99, + 0xce, 0x65, 0x63, 0x21, 0x2e, 0x3c, 0x07, 0x79, 0xe4, 0x18, 0x64, 0x80, + 0x48, 0x98, 0x14, 0xc5, 0x80, 0x5a, 0xc5, 0xac, 0xc3, 0x16, 0x41, 0xb6, + 0x7c, 0xa6, 0x80, 0x00, 0x84, 0x5b, 0xae, 0x36, 0xda, 0x20, 0x7d, 0x4b, + 0xa6, 0x0c, 0xcd, 0x05, 0x0a, 0x3b, 0x4c, 0x50, 0xd2, 0xc3, 0xf6, 0x8d, + 0x02, 0x71, 0x71, 0xe2, 0x07, 0x0f, 0x43, 0x9c, 0x85, 0x29, 0x4d, 0x91, + 0xa3, 0x95, 0x19, 0xaa, 0x69, 0x16, 0xac, 0xa3, 0x2a, 0x07, 0x8d, 0xd1, + 0xc8, 0x04, 0x44, 0x4d, 0x01, 0x19, 0x1d, 0x8f, 0x19, 0xec, 0xf2, 0x81, + 0xc8, 0x64, 0x21, 0x84, 0x95, 0x19, 0xa7, 0x91, 0x9c, 0xee, 0xaf, 0xdd, + 0x2a, 0x88, 0xea, 0xab, 0xce, 0x6b, 0xeb, 0xb5, 0xbe, 0x9f, 0xea, 0xeb, + 0xff, 0xef, 0xbf, 0xf9, 0xbd, 0xe6, 0xd3, 0x55, 0xec, 0x8e, 0xa8, 0x86, + 0x67, 0x39, 0x59, 0x54, 0xfa, 0x14, 0xe3, 0xa8, 0x50, 0x60, 0x23, 0x9c, + 0x21, 0x98, 0x41, 0x14, 0x80, 0xa6, 0x19, 0x00, 0x43, 0x06, 0x72, 0x81, + 0x1a, 0xf0, 0x7e, 0xa6, 0x06, 0xc3, 0xa0, 0x3f, 0x94, 0xbc, 0xd4, 0xd2, + 0x48, 0x4c, 0xec, 0x53, 0x4b, 0x67, 0xe7, 0x84, 0x82, 0xe8, 0x52, 0xac, + 0xa8, 0x40, 0x11, 0x21, 0x1c, 0x89, 0x0b, 0x84, 0xa3, 0x01, 0xf8, 0x76, + 0x22, 0xad, 0x52, 0xd8, 0x9c, 0xb1, 0x29, 0x55, 0x48, 0x50, 0x15, 0x79, + 0x9c, 0x25, 0xa2, 0x59, 0x3c, 0xbc, 0x88, 0x7f, 0x41, 0x26, 0x15, 0x84, + 0xa2, 0x79, 0x00, 0x9a, 0x7e, 0x5c, 0x2f, 0x97, 0xc4, 0xf3, 0x52, 0x41, + 0x5a, 0x7f, 0x19, 0x4b, 0xb2, 0x7e, 0x99, 0x3a, 0xd7, 0xd9, 0x91, 0x0a, + 0xc4, 0x3e, 0x1a, 0xd3, 0x7d, 0x91, 0xc7, 0x32, 0xa5, 0xeb, 0xc4, 0x29, + 0x66, 0x2a, 0xbd, 0x56, 0xf1, 0x85, 0x55, 0x05, 0xf2, 0x89, 0x91, 0x6d, + 0x69, 0x5d, 0x01, 0xa5, 0x8d, 0x51, 0x22, 0x51, 0xc1, 0x09, 0x87, 0x8d, + 0x47, 0x8c, 0xaa, 0x88, 0xcf, 0x01, 0x8d, 0x08, 0x57, 0xc5, 0x83, 0x0d, + 0x08, 0xce, 0x99, 0x5a, 0xdb, 0x1c, 0x1d, 0xc6, 0xc2, 0xb9, 0x91, 0x4e, + 0x8a, 0x8c, 0xe6, 0x90, 0x86, 0x95, 0x53, 0x49, 0x10, 0xfe, 0x79, 0x0d, + 0xd3, 0xe7, 0x89, 0x89, 0xe8, 0xb6, 0xf5, 0x82, 0x1a, 0xb9, 0xb5, 0x86, + 0x0a, 0xe2, 0x2e, 0x2e, 0x9f, 0xff, 0xfb, 0xd4, 0x60, 0x59, 0x09, 0x17, + 0xa8, 0x75, 0xbe, 0x2b, 0x4c, 0x7b, 0x70, 0x73, 0x2e, 0x18, 0x4d, 0x0d, + 0x62, 0x6e, 0x5e, 0xc9, 0xda, 0xf6, 0x0d, 0x31, 0xed, 0xc1, 0xbb, 0xb9, + 0xe1, 0x34, 0x63, 0x0d, 0xb9, 0x7d, 0x19, 0xf3, 0x23, 0xa5, 0x2a, 0xba, + 0x1b, 0xf6, 0x36, 0x38, 0xd1, 0x7c, 0x57, 0x4c, 0xf6, 0x8c, 0xe2, 0xd7, + 0x06, 0x92, 0x41, 0x84, 0x7f, 0xb4, 0xab, 0xa6, 0x3f, 0x21, 0x17, 0x66, + 0xc3, 0xb5, 0x40, 0xd4, 0x8d, 0x91, 0x28, 0xa1, 0x7c, 0xce, 0x69, 0x1d, + 0x04, 0x05, 0x0f, 0x5c, 0xdc, 0x99, 0x33, 0x8b, 0x0a, 0x89, 0x3a, 0xce, + 0x41, 0x17, 0x45, 0xb4, 0x4c, 0x41, 0xf6, 0x45, 0xaa, 0xc3, 0xe4, 0xae, + 0x00, 0x00, 0x12, 0x2e, 0x6e, 0xe3, 0x68, 0x91, 0xf4, 0x51, 0x0e, 0xa1, + 0x48, 0x33, 0x55, 0x1c, 0xac, 0xfb, 0x3d, 0xdd, 0x23, 0xbc, 0xa1, 0xd0, + 0x81, 0xc0, 0x89, 0xa9, 0xb1, 0x06, 0x43, 0x92, 0xc0, 0x7e, 0x68, 0xaa, + 0x27, 0x48, 0xa3, 0x64, 0xc3, 0x77, 0xde, 0xfb, 0x3c, 0xac, 0x26, 0xee, + 0x6b, 0x63, 0x80, 0xa0, 0xe9, 0x22, 0x82, 0x63, 0x2a, 0x3b, 0xb1, 0x95, + 0x98, 0xf5, 0xa2, 0xa9, 0x9c, 0xc7, 0xb3, 0x94, 0xb6, 0x55, 0xac, 0xeb, + 0xa2, 0x25, 0xf6, 0xe8, 0xec, 0xf4, 0xe9, 0x4a, 0x35, 0x35, 0xf4, 0xa5, + 0xdc, 0xcc, 0xab, 0x46, 0x46, 0x4f, 0xf6, 0x96, 0x9f, 0xff, 0xa6, 0xc8, + 0xa6, 0xd5, 0x8a, 0x77, 0x57, 0x05, 0xa2, 0x3a, 0x99, 0xd0, 0x31, 0xde, + 0xb7, 0x1c, 0x59, 0xd6, 0x1a, 0x26, 0xec, 0x5d, 0x8e, 0x0e, 0xdd, 0x38, + 0x20, 0xa9, 0xef, 0x36, 0x79, 0x7b, 0xf4, 0xc5, 0xd9, 0xfb, 0x91, 0x21, + 0xb5, 0x34, 0x34, 0x9f, 0x1c, 0x28, 0xba, 0x35, 0xc6, 0x27, 0x29, 0x49, + 0xa9, 0xe0, 0x0d, 0x41, 0xb1, 0x70, 0x77, 0xd5, 0xc0, 0xc8, 0xbc, 0x23, + 0x07, 0xe3, 0x98, 0xeb, 0xa6, 0xa7, 0x08, 0x24, 0xa4, 0x21, 0xfc, 0x54, + 0x76, 0x7b, 0x02, 0x32, 0x0a, 0x74, 0x63, 0xfd, 0x44, 0xb9, 0x02, 0xe1, + 0x21, 0x91, 0xb9, 0xea, 0x95, 0x0a, 0x7c, 0xac, 0x4b, 0x2e, 0x98, 0xa5, + 0x66, 0x3f, 0x5b, 0xdb, 0x51, 0x8e, 0x0c, 0x53, 0x3e, 0x57, 0xae, 0xd9, + 0xd5, 0x4a, 0x53, 0xaf, 0x4b, 0x70, 0x11, 0x07, 0x2e, 0x9a, 0x67, 0x47, + 0x21, 0x10, 0x20, 0xc0, 0x35, 0x3b, 0x3b, 0xc6, 0x46, 0xf3, 0xf5, 0x65, + 0xf2, 0x6d, 0x5e, 0xdc, 0xc5, 0xa4, 0xe2, 0xae, 0x05, 0xab, 0x19, 0x4c, + 0xde, 0x87, 0xb6, 0x2d, 0x33, 0x33, 0x3d, 0x64, 0x3f, 0x9c, 0x16, 0x98, + 0x17, 0x6f, 0x14, 0x31, 0x66, 0x84, 0x72, 0x5d, 0x34, 0xf1, 0x47, 0x77, + 0x35, 0x2b, 0xc7, 0xc7, 0xba, 0xc1, 0xa4, 0x9f, 0x70, 0x82, 0xba, 0x53, + 0x2e, 0x55, 0x2e, 0x8e, 0x98, 0xce, 0x30, 0xda, 0x94, 0xf3, 0x23, 0x15, + 0x0a, 0x5a, 0x33, 0x22, 0x22, 0x33, 0xc3, 0x86, 0xca, 0xda, 0xc4, 0xf1, + 0xa9, 0x3a, 0xe3, 0x1e, 0x76, 0x55, 0x0c, 0xae, 0x6f, 0x91, 0xe8, 0x44, + 0x07, 0x16, 0xe5, 0x2a, 0xa9, 0xfa, 0xfa, 0x90, 0xde, 0x74, 0x74, 0x31, + 0x30, 0x2c, 0xa5, 0x98, 0x9f, 0xd4, 0xba, 0x1f, 0xcc, 0xc8, 0xc6, 0xb3, + 0x68, 0xdb, 0x5b, 0x57, 0xa8, 0xee, 0xca, 0x34, 0x58, 0x42, 0x5e, 0x70, + 0x9e, 0xa6, 0xf8, 0xe4, 0x16, 0xf1, 0x3d, 0x19, 0x40, 0x25, 0x89, 0x9b, + 0x44, 0xe0, 0x10, 0x09, 0x2d, 0x44, 0xe3, 0x7f, 0xf2, 0xc2, 0x4f, 0x79, + 0xd2, 0xc9, 0xbe, 0xe4, 0x4f, 0xe0, 0x87, 0xdd, 0xe6, 0xd1, 0x18, 0x24, + 0xda, 0xd1, 0x0d, 0xbe, 0x4b, 0xeb, 0x2a, 0xfe, 0xd2, 0x36, 0xa5, 0xb5, + 0xa3, 0x73, 0x2c, 0xc5, 0x4c, 0xfd, 0xcb, 0xdc, 0x3a, 0xf3, 0x0c, 0x34, + 0xcc, 0xdf, 0xf4, 0xcd, 0x83, 0x6f, 0xab, 0xd3, 0x91, 0x2e, 0x49, 0xd7, + 0x4e, 0x4f, 0x36, 0xbf, 0x3c, 0xa3, 0x77, 0xcf, 0x66, 0x3a, 0x7c, 0x5f, + 0x2e, 0x34, 0x87, 0xb7, 0xff, 0xa9, 0x7f, 0xf7, 0x33, 0x69, 0xfe, 0x70, + 0xf2, 0xff, 0xd3, 0x3f, 0x2f, 0x3f, 0xd7, 0xe4, 0xef, 0x29, 0x9c, 0xb4, + 0xb4, 0x0a, 0x0c, 0x74, 0x47, 0x3a, 0x00, 0x26, 0x82, 0x30, 0x9d, 0x68, + 0xaf, 0x28, 0x50, 0x19, 0xd5, 0x00, 0x5d, 0x05, 0x58, 0xf1, 0x25, 0x32, + 0xea, 0x41, 0x7c, 0x66, 0x8f, 0xbd, 0x1c, 0x22, 0x08, 0xca, 0x9a, 0x96, + 0xc0, 0x4d, 0x8a, 0x4f, 0x4a, 0xa7, 0xe5, 0xd0, 0x2c, 0xe0, 0xd0, 0xd9, + 0x7d, 0xa1, 0xe8, 0xbe, 0x6c, 0x74, 0x48, 0x34, 0x03, 0x08, 0xc7, 0xc1, + 0x25, 0x29, 0xf9, 0x16, 0x0b, 0xdc, 0xaa, 0x39, 0x9c, 0xaf, 0x4e, 0x53, + 0x35, 0x31, 0x61, 0x61, 0xf8, 0xf0, 0x90, 0xe1, 0xb7, 0xd2, 0x99, 0x95, + 0x4d, 0x98, 0xd0, 0xf4, 0x3d, 0x42, 0x83, 0x3b, 0xe0, 0x33, 0x9d, 0x68, + 0xa4, 0x12, 0x1e, 0xab, 0x4e, 0x28, 0x99, 0xa9, 0x57, 0xcb, 0xe7, 0x4a, + 0xa3, 0x0e, 0x94, 0x0a, 0xbd, 0x36, 0x6e, 0x45, 0x3a, 0xc4, 0x55, 0x7b, + 0xb7, 0x14, 0x43, 0x7a, 0xe9, 0x7e, 0x13, 0x2a, 0x91, 0x56, 0x75, 0x40, + 0x65, 0x91, 0x57, 0x75, 0x73, 0x32, 0x2d, 0x50, 0xcb, 0x77, 0x4a, 0x96, + 0xf6, 0x78, 0x88, 0x6a, 0xb9, 0x5d, 0x99, 0x54, 0x71, 0xde, 0x2d, 0x46, + 0x5c, 0xb0, 0x59, 0x3a, 0xe4, 0xee, 0x98, 0x71, 0x62, 0x78, 0x84, 0xb8, + 0xc8, 0x9e, 0x8c, 0xc8, 0xe3, 0x09, 0x0b, 0x86, 0xe7, 0x1b, 0x30, 0x63, + 0x4e, 0x84, 0xb8, 0xc6, 0xb3, 0x0a, 0x2d, 0x22, 0xc8, 0xcc, 0xd5, 0x5a, + 0xdd, 0x4e, 0xb5, 0x02, 0x58, 0x19, 0x56, 0x1f, 0xaa, 0x78, 0x33, 0x39, + 0xb1, 0x37, 0x9f, 0xcf, 0x68, 0xff, 0xfb, 0xd4, 0x60, 0x60, 0x09, 0x87, + 0x85, 0x76, 0x3e, 0x2b, 0x4c, 0x7b, 0x70, 0x77, 0x4e, 0xa8, 0x4d, 0x0c, + 0xc3, 0x6e, 0x62, 0x09, 0xd6, 0xf2, 0x0d, 0x3d, 0xed, 0xc1, 0xd0, 0x39, + 0xa0, 0xf0, 0x64, 0x15, 0xb9, 0xad, 0x61, 0x6f, 0xc3, 0x64, 0x06, 0x4c, + 0xaa, 0x5c, 0x51, 0xeb, 0xf3, 0x35, 0x1c, 0x11, 0xa4, 0x49, 0xb9, 0x2b, + 0x8e, 0x46, 0x34, 0x30, 0xed, 0x48, 0xab, 0xe5, 0x50, 0x4c, 0xaa, 0x45, + 0x8c, 0x45, 0x7a, 0xb8, 0x46, 0xc3, 0x80, 0xbb, 0x84, 0x88, 0x74, 0x12, + 0xc3, 0x8c, 0x0b, 0xc3, 0x86, 0x18, 0x00, 0x80, 0x52, 0x92, 0x5a, 0xe3, + 0x44, 0x8f, 0x52, 0xb4, 0x28, 0x11, 0xf2, 0x1c, 0x88, 0x45, 0xf2, 0xd4, + 0x1c, 0x32, 0x87, 0x61, 0x88, 0x99, 0x54, 0x48, 0x8b, 0x36, 0x8a, 0x22, + 0x74, 0xd9, 0x64, 0x31, 0x02, 0x47, 0x04, 0x9a, 0x51, 0x4a, 0x48, 0xd5, + 0xdd, 0x66, 0xe2, 0x75, 0x0e, 0x4c, 0x10, 0x0e, 0x32, 0xb4, 0x52, 0x72, + 0x90, 0x89, 0xfb, 0x91, 0x4c, 0x45, 0x84, 0x16, 0xc5, 0x24, 0x69, 0x55, + 0xea, 0x7c, 0x89, 0x49, 0x8f, 0xf3, 0xff, 0x28, 0x46, 0xfc, 0x2d, 0xfc, + 0xfe, 0xfc, 0x8f, 0x5c, 0xce, 0x97, 0xfe, 0x7f, 0xfe, 0xb3, 0x2e, 0xf9, + 0x7f, 0xff, 0xdf, 0x3b, 0x3f, 0x3b, 0x7e, 0x7a, 0xff, 0xbe, 0xab, 0x90, + 0x2a, 0x0d, 0x35, 0x08, 0xf1, 0x03, 0x43, 0x04, 0xae, 0x42, 0xc2, 0x0c, + 0x78, 0xac, 0x20, 0x75, 0x1b, 0x4b, 0x0d, 0x0e, 0x6d, 0x3d, 0x80, 0x10, + 0x03, 0x1d, 0x7e, 0x57, 0x0b, 0x4c, 0x44, 0x89, 0x25, 0x35, 0x78, 0x69, + 0xc5, 0x3b, 0x56, 0xcb, 0x93, 0xc3, 0xbd, 0x44, 0x63, 0x21, 0x68, 0xe5, + 0x41, 0xd0, 0x5c, 0x4e, 0x05, 0x01, 0xde, 0x7a, 0xa7, 0x90, 0x94, 0x30, + 0xf1, 0x2b, 0x01, 0x98, 0x8e, 0x5a, 0x4e, 0x9c, 0x05, 0x21, 0x72, 0x43, + 0xb6, 0x9d, 0x82, 0xbc, 0x81, 0x43, 0x55, 0x46, 0xf6, 0x8d, 0x22, 0xc0, + 0x74, 0x21, 0xc6, 0xa1, 0x6d, 0x65, 0x67, 0x1d, 0x89, 0x42, 0x91, 0xcc, + 0xeb, 0x1d, 0xa7, 0x71, 0xc4, 0x66, 0xa7, 0xcd, 0x03, 0x8c, 0xa8, 0x88, + 0xe0, 0x5d, 0xcf, 0x25, 0x93, 0xf5, 0x81, 0x49, 0x73, 0x4d, 0x5c, 0x9f, + 0x39, 0x10, 0xf4, 0x7d, 0x93, 0xaa, 0xb6, 0x37, 0x38, 0x06, 0xf2, 0x3c, + 0xd7, 0x56, 0xec, 0xfc, 0x8c, 0x64, 0x2a, 0x9e, 0xae, 0x15, 0xa9, 0xf4, + 0x29, 0x47, 0x05, 0x1f, 0xa3, 0x7d, 0x10, 0xe7, 0x95, 0x11, 0x9c, 0x7f, + 0x29, 0x93, 0xca, 0x16, 0x26, 0x33, 0xd2, 0x2b, 0xa3, 0xa4, 0xbb, 0x9f, + 0xe6, 0x84, 0xef, 0x5a, 0x96, 0xd7, 0x25, 0x71, 0x68, 0xf0, 0xe4, 0x4a, + 0xa1, 0xc8, 0x61, 0x7e, 0x95, 0x4a, 0x71, 0x90, 0xd4, 0xca, 0xad, 0x70, + 0xc2, 0x38, 0xc8, 0x01, 0x4e, 0x91, 0x86, 0xab, 0x33, 0x93, 0xaa, 0x56, + 0xa5, 0xa7, 0x12, 0xa5, 0x48, 0x97, 0x45, 0x38, 0x2b, 0x10, 0xd3, 0x38, + 0xf2, 0x8a, 0xca, 0xb4, 0x9d, 0x43, 0xde, 0xab, 0x1c, 0x18, 0x61, 0xad, + 0x9b, 0x90, 0x13, 0x8c, 0x65, 0xfe, 0x1d, 0xcf, 0x25, 0x31, 0x3e, 0x72, + 0x7c, 0xd8, 0x69, 0xa2, 0x9b, 0x91, 0xc6, 0x93, 0x5a, 0x95, 0x5c, 0x83, + 0x38, 0xd8, 0xd3, 0xa5, 0xc4, 0x0f, 0x26, 0x4a, 0x88, 0xbf, 0x93, 0x12, + 0x72, 0x73, 0x99, 0x62, 0x00, 0x45, 0x1a, 0x40, 0xab, 0x35, 0x85, 0x88, + 0x42, 0x03, 0x30, 0x57, 0xc3, 0x44, 0x80, 0x06, 0x20, 0x12, 0xcc, 0x0c, + 0x33, 0xb4, 0xd4, 0x6e, 0xb5, 0x0f, 0xfb, 0x1d, 0x86, 0xca, 0x0d, 0x9c, + 0x39, 0x23, 0x0c, 0xac, 0xa1, 0xe4, 0x95, 0x5b, 0x12, 0x11, 0xc9, 0x46, + 0x55, 0x47, 0xdc, 0x54, 0xb5, 0xde, 0xd9, 0x29, 0x0e, 0x7a, 0xd8, 0xdb, + 0x99, 0xaa, 0xdf, 0xf9, 0x42, 0x11, 0xd5, 0xd0, 0xc6, 0x65, 0x67, 0x29, + 0xcc, 0x84, 0x13, 0x53, 0x54, 0xe4, 0x1c, 0x26, 0x51, 0x13, 0x89, 0x74, + 0x7a, 0x3e, 0xce, 0xaf, 0x95, 0x56, 0xae, 0xc4, 0xb4, 0xe6, 0x54, 0x6e, + 0xac, 0xa4, 0x57, 0x2f, 0x6f, 0x6b, 0x53, 0xa2, 0xb6, 0x9b, 0xeb, 0xef, + 0x75, 0xa2, 0xfb, 0xf6, 0x74, 0x6b, 0xba, 0xd2, 0xe8, 0x57, 0x42, 0x1c, + 0xee, 0x63, 0x1c, 0xc2, 0xc2, 0x21, 0x93, 0x90, 0xa2, 0xd6, 0x16, 0x64, + 0x15, 0x96, 0x71, 0x30, 0xe8, 0xb0, 0x80, 0x5d, 0x2b, 0x2a, 0x70, 0x31, + 0xbe, 0x16, 0x46, 0x47, 0x56, 0x23, 0x18, 0x6f, 0xa4, 0x6d, 0x3d, 0xbf, + 0x76, 0x64, 0x32, 0x58, 0xf4, 0x59, 0xb5, 0x9a, 0x36, 0x9b, 0x10, 0x2a, + 0xb6, 0x64, 0x71, 0xfe, 0xca, 0x69, 0x4a, 0xaf, 0x55, 0xe4, 0xf1, 0x42, + 0x99, 0x9e, 0x1a, 0x63, 0xd9, 0x5a, 0x84, 0xb2, 0x13, 0x31, 0xec, 0x6f, + 0x9d, 0xe8, 0xe8, 0x78, 0x48, 0xa5, 0xce, 0x95, 0xe6, 0xc4, 0xab, 0x82, + 0xe0, 0xe9, 0x4f, 0x37, 0x38, 0x17, 0x42, 0xfe, 0xa1, 0x39, 0x9a, 0x0d, + 0x34, 0x25, 0x56, 0xca, 0xe2, 0x8b, 0x6a, 0x57, 0x33, 0x3b, 0x76, 0xce, + 0x77, 0xae, 0x59, 0xd3, 0x4f, 0x15, 0xee, 0x7a, 0x72, 0x79, 0x8b, 0x2b, + 0x56, 0x99, 0x92, 0xf6, 0x2f, 0xcd, 0x8e, 0x2a, 0x94, 0x26, 0xaf, 0x58, + 0x75, 0x12, 0x39, 0xcd, 0x0a, 0x04, 0xd9, 0x80, 0xb3, 0xa6, 0x54, 0x39, + 0xdd, 0x14, 0xa9, 0x77, 0x3a, 0xa8, 0x5c, 0xa6, 0x71, 0x8a, 0x69, 0x4e, + 0xc6, 0xda, 0xcb, 0x53, 0x9c, 0xe5, 0x64, 0x76, 0x78, 0x41, 0x53, 0x31, + 0xab, 0xce, 0xe6, 0x08, 0x71, 0xd0, 0x6c, 0xeb, 0x73, 0xa2, 0xd8, 0xcc, + 0x58, 0xac, 0x8b, 0x98, 0x6f, 0xa2, 0xee, 0x45, 0x5b, 0x74, 0x8c, 0x11, + 0xe2, 0x29, 0xa6, 0xb2, 0x55, 0xff, 0xfb, 0xd4, 0x60, 0x57, 0x88, 0x87, + 0xb1, 0x76, 0x3d, 0x8b, 0x4f, 0x7b, 0x70, 0x70, 0x0e, 0xa8, 0x3d, 0x0c, + 0xc5, 0x6e, 0x5d, 0x15, 0xd8, 0xfc, 0xcc, 0xbd, 0xed, 0xc1, 0xd2, 0xba, + 0xe0, 0xa4, 0x33, 0x21, 0xb8, 0x95, 0xea, 0xcb, 0x13, 0x43, 0x94, 0x08, + 0x58, 0x53, 0xa5, 0x93, 0xca, 0xad, 0xc6, 0x5c, 0x28, 0xb7, 0x16, 0x03, + 0x3b, 0x3c, 0xaa, 0x58, 0xb3, 0xb0, 0x42, 0x48, 0xda, 0x3b, 0x34, 0x78, + 0xe6, 0xc3, 0x2a, 0x95, 0x2c, 0xd7, 0x65, 0x09, 0xec, 0x5d, 0x54, 0x88, + 0x73, 0x5a, 0x14, 0x4f, 0x5e, 0x23, 0xc7, 0x59, 0x7d, 0x1c, 0xe3, 0x65, + 0x0a, 0x21, 0x56, 0x0b, 0x92, 0xe2, 0x5c, 0x85, 0x10, 0x75, 0x43, 0x17, + 0x11, 0x78, 0x76, 0x33, 0x00, 0x00, 0x08, 0x17, 0x2a, 0x69, 0x22, 0x40, + 0xf6, 0x05, 0xbc, 0x2b, 0x92, 0x38, 0x08, 0x4f, 0xbd, 0x99, 0x95, 0x87, + 0x91, 0x62, 0x27, 0xc8, 0xb1, 0x25, 0x11, 0x08, 0x61, 0x57, 0x39, 0x31, + 0x39, 0xfd, 0x95, 0x8e, 0xe4, 0x5d, 0xde, 0xfe, 0x6b, 0x4d, 0xbc, 0xf6, + 0x69, 0xd9, 0x94, 0xf7, 0x45, 0x2d, 0x19, 0x69, 0x32, 0x1d, 0x99, 0xdd, + 0xc8, 0xf7, 0xd8, 0xce, 0x7b, 0x33, 0x90, 0xcf, 0x77, 0xa4, 0xda, 0x35, + 0x1b, 0x44, 0x23, 0x73, 0xaa, 0x3a, 0x57, 0xfd, 0xff, 0x9a, 0x95, 0x5b, + 0x56, 0xfa, 0x35, 0xe6, 0xef, 0xb3, 0x5f, 0xf4, 0xa5, 0x24, 0x2b, 0x2b, + 0x30, 0x8d, 0xc5, 0x04, 0x7a, 0x20, 0x91, 0x81, 0xae, 0xc8, 0x2a, 0xe7, + 0x73, 0x99, 0x9d, 0x44, 0x18, 0x50, 0x82, 0x6b, 0x3f, 0xef, 0xd0, 0x3f, + 0x36, 0x18, 0x37, 0xac, 0x6e, 0xac, 0xbb, 0x18, 0xc5, 0xba, 0x78, 0x5c, + 0x8a, 0xd5, 0xe5, 0x24, 0x16, 0x58, 0x26, 0xe2, 0x10, 0xd6, 0x5d, 0x98, + 0x1a, 0x98, 0x5c, 0x54, 0x35, 0x3c, 0x24, 0x30, 0xc4, 0x51, 0x56, 0x9d, + 0x45, 0x21, 0xe4, 0xec, 0x4c, 0x0c, 0x92, 0xf8, 0x87, 0x31, 0x3a, 0x3f, + 0x91, 0xc9, 0x64, 0xe1, 0x82, 0xda, 0xd8, 0x8b, 0x5b, 0x3f, 0xd1, 0x28, + 0xf4, 0x41, 0x7f, 0x84, 0x65, 0x24, 0x56, 0xe6, 0x42, 0x14, 0x86, 0x62, + 0x90, 0x7f, 0x9e, 0x05, 0xc8, 0xf4, 0x95, 0xa1, 0x2e, 0x6c, 0xb3, 0xc8, + 0x2d, 0x83, 0xa8, 0xe1, 0x3d, 0x4e, 0xa3, 0x8d, 0x58, 0x60, 0x2b, 0x09, + 0xc9, 0x39, 0x76, 0x63, 0x1f, 0xc8, 0xc8, 0x02, 0xda, 0x8d, 0x61, 0x95, + 0xce, 0x13, 0x7c, 0x35, 0x4b, 0x6c, 0x47, 0x08, 0x6f, 0x17, 0xd2, 0x8e, + 0x4e, 0x0a, 0x88, 0xef, 0xd8, 0x53, 0xd2, 0xc3, 0xb4, 0xba, 0x6a, 0x80, + 0xdb, 0x49, 0xb0, 0xfd, 0xf5, 0x5b, 0x60, 0x35, 0xba, 0x6d, 0xb3, 0x95, + 0x5c, 0xa0, 0xcf, 0x1d, 0xfe, 0x9b, 0x1d, 0xc3, 0x99, 0xaa, 0x1b, 0x75, + 0x15, 0xb8, 0x6c, 0x67, 0x87, 0x6d, 0xee, 0x33, 0xc4, 0x83, 0xb6, 0x07, + 0x5a, 0x88, 0xd4, 0xf6, 0x7d, 0xe2, 0x4c, 0xe9, 0xee, 0xdc, 0xf3, 0x0b, + 0x5d, 0x5f, 0xb8, 0x31, 0x29, 0x47, 0x19, 0x1c, 0x9d, 0x66, 0x1c, 0xf3, + 0x3c, 0xb3, 0x1a, 0xb9, 0xf6, 0x1e, 0xb3, 0xba, 0x84, 0xde, 0xf3, 0x49, + 0xa7, 0x8e, 0x0f, 0xda, 0x5c, 0x8d, 0xa6, 0xb3, 0xfc, 0xe9, 0xa3, 0x23, + 0x3f, 0x56, 0x63, 0x66, 0x72, 0x44, 0xde, 0x52, 0x39, 0xa4, 0x17, 0xa6, + 0x99, 0x1f, 0xab, 0xe4, 0x0f, 0x40, 0x81, 0x06, 0x35, 0xa2, 0x2a, 0x51, + 0x29, 0xe2, 0xf3, 0xe1, 0x84, 0x76, 0x48, 0x18, 0x3e, 0x4e, 0xa5, 0x14, + 0xde, 0x37, 0xfd, 0xbc, 0x5d, 0xfd, 0xbb, 0xd6, 0xc7, 0x68, 0xcb, 0x44, + 0xf6, 0xd9, 0xa7, 0xa1, 0x56, 0x41, 0x41, 0xb6, 0x3c, 0x9b, 0x51, 0x90, + 0x36, 0xaa, 0xdf, 0x75, 0x86, 0xf5, 0x23, 0x3b, 0xfa, 0x99, 0xf5, 0x7e, + 0xa1, 0x62, 0xb9, 0x69, 0x8e, 0x79, 0xe3, 0xa8, 0xff, 0xea, 0xfe, 0x2f, + 0xae, 0xfb, 0xeb, 0x88, 0xf9, 0xe3, 0xfe, 0xbf, 0x5f, 0xea, 0xa7, 0xfb, + 0xb8, 0xff, 0x9f, 0xbe, 0x39, 0xff, 0xfa, 0xa6, 0xea, 0x2d, 0x2f, 0xa5, + 0xe1, 0x26, 0xa4, 0x74, 0x8f, 0x1a, 0x84, 0xc7, 0x53, 0xb3, 0x1e, 0x41, + 0x32, 0x4a, 0x48, 0x91, 0xc9, 0x83, 0x42, 0xac, 0x2a, 0xd5, 0xd5, 0x71, + 0x13, 0x40, 0x9b, 0x2b, 0xb1, 0x93, 0xe9, 0xdb, 0x65, 0xed, 0x35, 0x7a, + 0x43, 0x71, 0x58, 0x0e, 0x95, 0xf9, 0xbe, 0x73, 0x32, 0xb9, 0x99, 0x44, + 0xf1, 0xb9, 0x0d, 0x6b, 0x4e, 0xa7, 0xe5, 0x3f, 0xd9, 0x92, 0xd5, 0x26, + 0xa5, 0xb1, 0x12, 0x41, 0x96, 0x1f, 0x8b, 0xf2, 0xc0, 0xd5, 0xd0, 0x4a, + 0x76, 0xf5, 0xd4, 0xb7, 0x53, 0x1f, 0xf6, 0x66, 0x42, 0x52, 0xee, 0xd4, + 0x91, 0xd1, 0x8e, 0x47, 0xa3, 0x0a, 0x39, 0x26, 0xf5, 0x52, 0x60, 0x25, + 0xdd, 0x21, 0xaa, 0xf5, 0x49, 0xca, 0xa3, 0x80, 0xad, 0x71, 0x55, 0x23, + 0x95, 0x10, 0x9b, 0x93, 0x6d, 0x0a, 0x62, 0xfe, 0xda, 0x8c, 0x49, 0xa4, + 0x56, 0xa2, 0x99, 0xaa, 0xd3, 0x4d, 0x29, 0x08, 0xe8, 0x44, 0x99, 0x6b, + 0xc9, 0x62, 0xe6, 0xf9, 0x4b, 0x32, 0xa1, 0x98, 0xfc, 0x8c, 0x9f, 0x71, + 0x91, 0x50, 0xa2, 0x5e, 0x4a, 0x9d, 0x8a, 0x85, 0x7a, 0xec, 0xf5, 0x54, + 0x2f, 0x21, 0x6e, 0x48, 0xe9, 0x98, 0x8e, 0x36, 0x46, 0x26, 0x36, 0xf7, + 0xc4, 0xed, 0x89, 0x1a, 0x86, 0x51, 0x7d, 0x96, 0x87, 0xf2, 0x75, 0x47, + 0x04, 0xaf, 0x3b, 0x95, 0x08, 0x6a, 0x65, 0x54, 0x7d, 0xb2, 0x33, 0xaa, + 0x9f, 0xae, 0x94, 0xc7, 0x5a, 0xb4, 0xfc, 0x5b, 0x4e, 0x1c, 0x27, 0x94, + 0x23, 0x34, 0xee, 0x49, 0x2b, 0x6c, 0xb3, 0x06, 0x55, 0x4a, 0x9c, 0xeb, + 0x4f, 0xae, 0x2d, 0x4e, 0xa9, 0xff, 0xfb, 0xd4, 0x60, 0x63, 0x88, 0x08, + 0x37, 0x76, 0xbc, 0x83, 0x4f, 0x7b, 0x70, 0x80, 0x0e, 0xb8, 0x1d, 0x19, + 0x25, 0x6e, 0x1d, 0x45, 0xda, 0xfb, 0x2c, 0xbd, 0xed, 0xc1, 0xab, 0x3a, + 0x60, 0xf4, 0x33, 0x09, 0xb9, 0xbc, 0x24, 0x3c, 0xd5, 0x6d, 0x80, 0xf9, + 0x40, 0x7d, 0xad, 0x9c, 0x86, 0x63, 0x4a, 0x41, 0x1c, 0xac, 0x50, 0x9b, + 0xe7, 0x71, 0xf0, 0x6f, 0x1a, 0x69, 0xa3, 0xe0, 0x52, 0x1f, 0x9c, 0xa7, + 0x71, 0x44, 0x23, 0x04, 0xe0, 0xc6, 0x0c, 0x12, 0x47, 0x32, 0x09, 0x74, + 0x2d, 0x66, 0x2b, 0x1a, 0x16, 0xcc, 0x48, 0x81, 0x7a, 0x17, 0x63, 0x7c, + 0x78, 0x00, 0xa2, 0x66, 0x83, 0x1c, 0x7d, 0xbb, 0x76, 0x00, 0x00, 0x80, + 0x4c, 0x0f, 0x14, 0x88, 0x03, 0xfd, 0x4d, 0x4e, 0x3f, 0x68, 0x89, 0xe8, + 0xb7, 0xf2, 0xd9, 0x5b, 0xe1, 0x2e, 0x95, 0xb8, 0x9d, 0x90, 0x68, 0x9f, + 0xbf, 0x77, 0xf3, 0xd4, 0xba, 0xd1, 0x5d, 0x64, 0xca, 0x02, 0xa0, 0x04, + 0x8e, 0x40, 0x10, 0x1d, 0x1b, 0x4a, 0x98, 0xca, 0xfb, 0xfe, 0x78, 0xbb, + 0xa8, 0x82, 0x3a, 0x5f, 0x47, 0x75, 0x74, 0x72, 0x8b, 0xba, 0x91, 0xd4, + 0x71, 0x47, 0x2a, 0x18, 0xcd, 0xbb, 0xb9, 0xdf, 0x3d, 0xc8, 0x89, 0x32, + 0xf7, 0x2d, 0x9f, 0x65, 0x74, 0x36, 0xeb, 0x7b, 0xdb, 0xa6, 0xdd, 0x9e, + 0xca, 0x9e, 0xf3, 0xed, 0xff, 0x7a, 0xb2, 0xbb, 0xc9, 0x91, 0xaa, 0xcc, + 0x84, 0x52, 0x95, 0xaa, 0xa8, 0x47, 0x2b, 0x07, 0x41, 0x45, 0xdc, 0x58, + 0x69, 0x06, 0x06, 0xb9, 0x86, 0x8b, 0x88, 0x09, 0x61, 0x8c, 0x1e, 0x72, + 0xc3, 0xe3, 0xd5, 0x85, 0x4c, 0x0d, 0x55, 0x50, 0x06, 0xb6, 0x54, 0x88, + 0x14, 0xcd, 0x6e, 0xe3, 0x49, 0x17, 0xa1, 0x87, 0x37, 0xcb, 0x37, 0x99, + 0xb6, 0x8d, 0x3f, 0xd4, 0x0a, 0x68, 0x06, 0x82, 0xb5, 0x9d, 0xc5, 0xd9, + 0x9c, 0xa3, 0x5d, 0x3a, 0x55, 0x38, 0x15, 0x07, 0xf2, 0xa5, 0x42, 0x2f, + 0x50, 0xf3, 0xb9, 0xfa, 0x84, 0xca, 0xa2, 0x95, 0x15, 0xd5, 0x8a, 0x13, + 0x1c, 0xe0, 0x2d, 0xe8, 0xd5, 0xc3, 0x62, 0x71, 0x02, 0xd2, 0x49, 0x15, + 0xa7, 0x91, 0xbe, 0x9e, 0x6c, 0x60, 0x74, 0x68, 0xc1, 0x25, 0x69, 0x14, + 0x22, 0x29, 0xc5, 0xa2, 0xe1, 0x19, 0x8c, 0xff, 0x68, 0x82, 0xca, 0x67, + 0xa9, 0xcb, 0xcb, 0xb4, 0x59, 0x7b, 0x4d, 0x9a, 0x03, 0xb5, 0x4e, 0xd8, + 0xa0, 0x66, 0x66, 0xac, 0x29, 0x1f, 0x41, 0x7b, 0x16, 0x91, 0xd5, 0xd0, + 0x5c, 0x15, 0xb4, 0xc3, 0xf9, 0xe0, 0xdf, 0xc2, 0xdb, 0x93, 0x1e, 0xe9, + 0xa8, 0xd0, 0x5a, 0xdb, 0x18, 0xd8, 0x7c, 0x6d, 0xaf, 0x30, 0xba, 0x6f, + 0x83, 0x0f, 0x67, 0x24, 0x77, 0x1b, 0xab, 0x22, 0xc6, 0x8b, 0x02, 0x2b, + 0x54, 0xac, 0xcb, 0x8d, 0xb7, 0xb3, 0x39, 0x65, 0xc5, 0xbb, 0x0c, 0xd1, + 0x98, 0x1d, 0xb6, 0xc2, 0xde, 0x21, 0xcf, 0x75, 0x64, 0x38, 0xb1, 0x65, + 0x89, 0x57, 0xf1, 0x22, 0x51, 0xc2, 0x69, 0xbd, 0xa5, 0xac, 0x6c, 0xc6, + 0x95, 0x99, 0xf3, 0x3e, 0x19, 0xa5, 0xc2, 0xb9, 0xa9, 0xfb, 0xe8, 0xab, + 0x2a, 0xf8, 0x90, 0xb4, 0x86, 0xa4, 0x53, 0x15, 0x43, 0x11, 0x69, 0x35, + 0x51, 0xdc, 0x7b, 0x74, 0x38, 0xee, 0x36, 0x4f, 0x22, 0xec, 0x71, 0x1a, + 0x66, 0xeb, 0x41, 0x8c, 0x5b, 0x88, 0x68, 0x92, 0x19, 0x0d, 0xda, 0x00, + 0x02, 0x52, 0x2a, 0x48, 0xa4, 0x64, 0x81, 0xf4, 0x8c, 0x1a, 0xd1, 0x88, + 0x04, 0x48, 0x7a, 0xd5, 0x8f, 0xf5, 0xb9, 0xee, 0xfa, 0x15, 0xc9, 0x33, + 0xb9, 0x02, 0xc9, 0x49, 0x92, 0xc8, 0x22, 0x51, 0x1b, 0xdb, 0xf8, 0xf9, + 0xeb, 0x10, 0x2c, 0xe7, 0x87, 0x74, 0x34, 0xd9, 0x10, 0xf1, 0x06, 0x74, + 0x53, 0x1c, 0x22, 0x8a, 0x04, 0xac, 0xcf, 0x75, 0x2a, 0xc8, 0xa3, 0x19, + 0x6c, 0x9f, 0xec, 0x9b, 0x6d, 0x55, 0xf7, 0x35, 0x95, 0x1d, 0x57, 0xe9, + 0xb7, 0xbf, 0xff, 0xfe, 0x99, 0xfe, 0xda, 0x7f, 0xb7, 0x5a, 0xeb, 0x53, + 0x74, 0x3f, 0x74, 0x39, 0x90, 0xea, 0x82, 0x98, 0xc4, 0x18, 0xa5, 0x0a, + 0x18, 0x22, 0xa9, 0x03, 0x88, 0x39, 0x87, 0x9a, 0x0a, 0x3d, 0x00, 0x29, + 0x05, 0x69, 0x92, 0x59, 0xc6, 0x4c, 0x1b, 0xa4, 0xee, 0xbb, 0x52, 0x69, + 0xa5, 0xde, 0xee, 0xbf, 0xf8, 0x46, 0xa3, 0xce, 0x6a, 0x9a, 0x21, 0xcc, + 0xa8, 0x4e, 0x10, 0x66, 0x6c, 0x42, 0xef, 0x72, 0x7a, 0x65, 0x2a, 0x4f, + 0x45, 0x4a, 0xba, 0xc5, 0x5a, 0xbc, 0x97, 0x40, 0x37, 0xd0, 0x24, 0x8d, + 0x0f, 0x5c, 0x13, 0xa3, 0x95, 0x58, 0x7f, 0x21, 0x29, 0x75, 0x63, 0x33, + 0x29, 0x72, 0x4e, 0xb0, 0x29, 0x11, 0x06, 0x82, 0x91, 0xc0, 0xc9, 0x5d, + 0x32, 0xa1, 0x4e, 0x6c, 0x0a, 0xdc, 0x77, 0x04, 0x32, 0xbd, 0x43, 0xef, + 0x9b, 0xf7, 0x4a, 0xef, 0xd3, 0xc9, 0x60, 0x38, 0x6a, 0x2f, 0x12, 0x98, + 0x87, 0xa3, 0x72, 0x8d, 0xbc, 0xaf, 0xcd, 0x03, 0xb8, 0xd0, 0xe8, 0xe4, + 0x50, 0xdb, 0xfc, 0xf1, 0x4a, 0x63, 0x70, 0x74, 0x7e, 0x40, 0xfb, 0x4a, + 0xe5, 0x96, 0xbb, 0x01, 0xc8, 0x64, 0x16, 0xb2, 0x97, 0x59, 0x76, 0xa5, + 0x71, 0x9b, 0xef, 0x7d, 0x58, 0xab, 0xdf, 0xc8, 0x95, 0x0b, 0xcf, 0x00, + 0x47, 0x5d, 0xe9, 0x5c, 0xaa, 0x7a, 0x25, 0x47, 0x24, 0x93, 0xbf, 0x92, + 0x66, 0xc1, 0x3b, 0x30, 0xd7, 0x25, 0x4c, 0x46, 0x23, 0x0f, 0xc8, 0xa2, + 0xf4, 0x6f, 0xf3, 0x95, 0x04, 0x43, 0xf4, 0xf0, 0x54, 0xba, 0x45, 0x2e, + 0x91, 0xc6, 0xe5, 0xef, 0xc7, 0x29, 0x9d, 0xfc, 0xa3, 0xd0, 0x9d, 0x48, + 0x67, 0xe4, 0x4f, 0x1d, 0x87, 0xff, 0xfb, 0xd4, 0x60, 0x63, 0x88, 0x08, + 0x99, 0x76, 0xbc, 0xab, 0x4f, 0xc3, 0x70, 0x7c, 0xee, 0xb7, 0xf6, 0x24, + 0x68, 0x6e, 0x1c, 0x9d, 0xda, 0xfb, 0x2c, 0x3d, 0xed, 0xc1, 0xe8, 0xb9, + 0x60, 0x64, 0x33, 0x21, 0xb9, 0xfa, 0xd4, 0x7e, 0x0c, 0x9b, 0xac, 0xd7, + 0xe2, 0x31, 0xd8, 0xe5, 0x36, 0xa9, 0x1f, 0xe8, 0xac, 0x96, 0x85, 0xfe, + 0x70, 0x25, 0x8f, 0x16, 0xe6, 0x5c, 0xb8, 0xdb, 0x46, 0x8c, 0x43, 0xf0, + 0x2b, 0xfc, 0xfb, 0xaf, 0xe8, 0xa5, 0x1b, 0x12, 0x71, 0xde, 0x97, 0x79, + 0x85, 0x3f, 0xd6, 0x1b, 0xe7, 0xed, 0x7e, 0xad, 0x56, 0xea, 0xf4, 0x32, + 0x96, 0x38, 0xef, 0xda, 0x67, 0x41, 0x04, 0x41, 0xf5, 0xf0, 0x20, 0x0a, + 0x93, 0x46, 0x84, 0x0f, 0x12, 0xaa, 0x5b, 0x43, 0x78, 0x00, 0x29, 0x29, + 0x00, 0xf5, 0x05, 0xd5, 0x15, 0x83, 0x08, 0x99, 0x91, 0x8c, 0x42, 0xdc, + 0x18, 0x21, 0x4e, 0xd6, 0x11, 0xc5, 0x9d, 0x32, 0x0e, 0x2d, 0x59, 0xf6, + 0x9d, 0x9f, 0x48, 0xa3, 0x3d, 0x81, 0x55, 0x82, 0xb9, 0x03, 0xb9, 0x02, + 0x1d, 0x8d, 0x8e, 0xcf, 0xa4, 0x71, 0xac, 0x6c, 0x1d, 0x69, 0x3a, 0xc5, + 0x13, 0x4f, 0x4c, 0xd1, 0xcc, 0xc4, 0xff, 0x1b, 0x7f, 0xf5, 0xfd, 0x55, + 0xcb, 0xdd, 0x54, 0x57, 0xf7, 0xaf, 0x4d, 0xf6, 0x77, 0xf5, 0x5d, 0xc7, + 0x31, 0x75, 0xf5, 0x33, 0xcd, 0xfc, 0xf5, 0xc3, 0xf5, 0xdd, 0x75, 0x5d, + 0xca, 0xc7, 0x3c, 0x7f, 0x34, 0xca, 0xfd, 0xfc, 0x1d, 0xc4, 0x2a, 0x61, + 0xc9, 0xe9, 0x87, 0x02, 0x20, 0x9a, 0xce, 0x7e, 0xc1, 0xd8, 0x10, 0x85, + 0xc5, 0xa4, 0x4c, 0x7c, 0x08, 0x26, 0x8b, 0x8e, 0xb1, 0x40, 0x7c, 0xa3, + 0xac, 0xa5, 0x04, 0xab, 0xb8, 0x03, 0x58, 0x8e, 0xd0, 0x6e, 0xf3, 0xd0, + 0x5c, 0xf5, 0x69, 0x99, 0xa8, 0xee, 0x19, 0x4a, 0xec, 0x3c, 0x84, 0xea, + 0x33, 0x44, 0x1a, 0xdd, 0x85, 0xb5, 0x60, 0xd6, 0x38, 0xd5, 0xaa, 0x62, + 0x4a, 0x95, 0x46, 0xe5, 0x9d, 0x7c, 0xc3, 0xb1, 0x38, 0x6d, 0x6f, 0x76, + 0xbe, 0x7b, 0x9e, 0xc4, 0x18, 0xe8, 0x80, 0x74, 0xb5, 0x9f, 0xad, 0xa7, + 0xf2, 0x1a, 0x8a, 0x60, 0x52, 0x22, 0x15, 0x2b, 0x6e, 0xd5, 0xa9, 0x93, + 0x4d, 0x3a, 0xb9, 0x70, 0xb3, 0x82, 0x34, 0xe0, 0x3b, 0x0b, 0xe2, 0x1c, + 0x72, 0x9c, 0x88, 0xe9, 0x63, 0x3f, 0x4e, 0x3e, 0x4b, 0xed, 0x54, 0xa9, + 0x8e, 0xca, 0xad, 0x85, 0x84, 0x59, 0xaa, 0x6e, 0x42, 0x99, 0x82, 0x23, + 0x95, 0x61, 0xd5, 0x5a, 0xe6, 0xf5, 0xdb, 0x23, 0x92, 0xe2, 0x14, 0x0f, + 0x01, 0xba, 0x75, 0xc4, 0x3a, 0xc2, 0x8f, 0x02, 0x9b, 0xa4, 0xf0, 0xb3, + 0x0a, 0x1d, 0xa3, 0x5d, 0x63, 0xc6, 0x87, 0x0d, 0xc1, 0x89, 0xdc, 0x8f, + 0x32, 0xc6, 0xe7, 0x3d, 0x6c, 0xf6, 0x68, 0xb5, 0x8b, 0x39, 0xee, 0xfb, + 0x1b, 0xb3, 0x93, 0xee, 0xc2, 0xf6, 0xce, 0x33, 0x4f, 0xb5, 0xf7, 0x8e, + 0x0d, 0xd6, 0x99, 0x9a, 0x0c, 0x77, 0x15, 0xb6, 0xbb, 0xb9, 0xed, 0xae, + 0x3a, 0xfd, 0x6c, 0xcc, 0xa4, 0x8b, 0x15, 0xa9, 0xfc, 0x25, 0x72, 0x8d, + 0xeb, 0xfc, 0xb0, 0xa9, 0xbb, 0x42, 0xe9, 0x85, 0x38, 0x97, 0xac, 0xb1, + 0x22, 0x2e, 0xd4, 0x34, 0x72, 0x3d, 0x55, 0xea, 0xb4, 0xf0, 0xff, 0x61, + 0x74, 0xf5, 0xb5, 0x60, 0xa0, 0x40, 0xa4, 0xd0, 0xb3, 0xf1, 0x4c, 0x48, + 0xd0, 0xb9, 0xb4, 0x00, 0x90, 0xf7, 0xff, 0x20, 0x7b, 0x83, 0x10, 0x02, + 0x06, 0xc0, 0x41, 0x09, 0x00, 0x45, 0xa7, 0xec, 0xc9, 0xa8, 0xe4, 0x2d, + 0x1d, 0xc5, 0xa2, 0xee, 0x52, 0x7d, 0xf2, 0x71, 0x84, 0x37, 0x28, 0xfd, + 0x6a, 0xdc, 0x7e, 0xff, 0xea, 0x5d, 0xe1, 0xf1, 0xb4, 0x91, 0xf4, 0x3d, + 0x2c, 0x81, 0xee, 0x76, 0xb4, 0x45, 0x25, 0xcd, 0xfb, 0x3c, 0xf1, 0x33, + 0x57, 0x6a, 0xb1, 0x5f, 0xc7, 0x0d, 0xf7, 0xc5, 0xdf, 0x5f, 0xf3, 0x2f, + 0xf1, 0x15, 0x13, 0xdf, 0xfc, 0xc4, 0xfc, 0x2c, 0xdf, 0x35, 0xf7, 0xff, + 0xff, 0x5f, 0x3f, 0xcf, 0x35, 0xfd, 0x46, 0x9f, 0x7c, 0xa5, 0x2c, 0xd7, + 0x73, 0xbf, 0x5a, 0x47, 0xad, 0xcc, 0x24, 0x0d, 0xa1, 0xea, 0x41, 0xa2, + 0x94, 0x30, 0x6a, 0x82, 0xe8, 0x2a, 0xea, 0x8f, 0x30, 0x60, 0xd1, 0xb0, + 0x38, 0x92, 0x87, 0x06, 0x15, 0x00, 0x00, 0x25, 0xc4, 0xda, 0x20, 0x0f, + 0xe2, 0x6f, 0x14, 0x9e, 0xf7, 0xb2, 0xd8, 0x02, 0x76, 0x33, 0x12, 0x8c, + 0x46, 0xf9, 0x5e, 0xd3, 0x7d, 0xa2, 0x49, 0x0a, 0xc8, 0xf7, 0xe5, 0xcc, + 0xbe, 0x2e, 0xa7, 0x66, 0x43, 0x0f, 0x63, 0x0c, 0xba, 0x92, 0x32, 0xc0, + 0x91, 0x49, 0x9c, 0x8b, 0xc5, 0xe8, 0xc0, 0xec, 0xc7, 0x82, 0xd2, 0xe5, + 0x71, 0x96, 0x66, 0xe7, 0xa6, 0x92, 0xf2, 0x12, 0x7a, 0x97, 0x61, 0xf2, + 0x33, 0x92, 0x15, 0x99, 0x3c, 0x5f, 0x09, 0x82, 0x1c, 0xb4, 0xc6, 0x72, + 0xa0, 0x4f, 0xd6, 0x86, 0xe5, 0x39, 0x7c, 0x80, 0xa4, 0x39, 0x87, 0xa0, + 0xde, 0xab, 0x96, 0xe3, 0x24, 0xd8, 0xd5, 0xca, 0x6c, 0x2b, 0x0d, 0x45, + 0x22, 0xbd, 0x2c, 0x67, 0x27, 0x1f, 0xc2, 0x88, 0x89, 0xa3, 0xf6, 0x1c, + 0xc0, 0x3b, 0x1c, 0x12, 0x47, 0x9b, 0x6a, 0xaa, 0x77, 0x17, 0x35, 0x5c, + 0x16, 0x3d, 0x38, 0x6e, 0x9d, 0x9a, 0xf0, 0xd5, 0xd6, 0x67, 0x77, 0xb7, + 0x09, 0x14, 0x4b, 0xf3, 0x3d, 0x92, 0x04, 0x47, 0xd7, 0xc3, 0x55, 0x16, + 0xde, 0xd1, 0xb3, 0x11, 0xa3, 0x39, 0xbd, 0x80, 0xba, 0xac, 0x08, 0x76, + 0x7c, 0xac, 0x89, 0x56, 0xf6, 0x68, 0xaa, 0xfd, 0x2c, 0xb8, 0x56, 0x9a, + 0x7b, 0x9d, 0x55, 0xb2, 0x3c, 0xff, 0xfb, 0xd4, 0x60, 0x5a, 0x08, 0x07, + 0x61, 0x76, 0xbe, 0xd3, 0x2f, 0x7b, 0x70, 0x77, 0x6e, 0xa8, 0x1a, 0x18, + 0x65, 0x6e, 0x5d, 0xd1, 0xd8, 0xf6, 0xac, 0xbd, 0xed, 0xc1, 0xc0, 0x3a, + 0x60, 0xa8, 0x31, 0x8d, 0xb9, 0x07, 0xfe, 0x90, 0x20, 0xc0, 0x95, 0x81, + 0xfb, 0x95, 0x23, 0x40, 0xc6, 0xae, 0xc9, 0x0a, 0x1b, 0x8a, 0xe6, 0x2d, + 0xa2, 0xaa, 0x25, 0x7c, 0xfe, 0x32, 0xed, 0x4d, 0x32, 0xb5, 0x91, 0x3e, + 0xd8, 0xd2, 0x8a, 0x60, 0x3e, 0x5d, 0x25, 0x36, 0x5f, 0x5c, 0x9a, 0x2c, + 0xca, 0xa9, 0x71, 0x39, 0x5b, 0xcd, 0x42, 0xc6, 0x9c, 0x24, 0xe7, 0xfc, + 0x4b, 0x80, 0x02, 0x14, 0xe2, 0x4d, 0x10, 0x07, 0xfb, 0x11, 0x80, 0x86, + 0x66, 0x77, 0x83, 0x4c, 0x7b, 0xf9, 0x33, 0x02, 0xe9, 0x11, 0xd3, 0x4a, + 0x74, 0x44, 0x07, 0x46, 0x1d, 0xe3, 0x12, 0x18, 0xf2, 0x97, 0x32, 0x53, + 0x88, 0xcb, 0x16, 0x8a, 0xa8, 0x74, 0x70, 0x74, 0x4c, 0x48, 0xd1, 0x83, + 0xcc, 0x72, 0xec, 0x88, 0x55, 0xa2, 0x3d, 0x99, 0x0d, 0xc8, 0x74, 0x74, + 0x74, 0x73, 0xa4, 0x8d, 0x4e, 0x8e, 0x9b, 0xd1, 0x7d, 0xec, 0x4e, 0xfd, + 0xb5, 0x64, 0xb2, 0x99, 0x32, 0x1e, 0x9f, 0xda, 0x56, 0x4c, 0x92, 0x7d, + 0x64, 0x15, 0x5d, 0x1c, 0xc4, 0xaa, 0xed, 0x98, 0xca, 0x51, 0xf2, 0x1c, + 0xed, 0x0f, 0xba, 0x88, 0xa0, 0x80, 0x4c, 0x40, 0x14, 0x44, 0x22, 0x20, + 0x81, 0xc3, 0x98, 0xc2, 0x43, 0x4c, 0x28, 0x24, 0xe1, 0x00, 0xe8, 0xb8, + 0xf0, 0xd0, 0x1f, 0x82, 0xab, 0x93, 0xe5, 0x01, 0xb7, 0x08, 0x7e, 0x00, + 0x82, 0x5d, 0x18, 0x0e, 0x59, 0x13, 0xce, 0x38, 0xb3, 0x06, 0x22, 0x82, + 0x3a, 0x99, 0x48, 0xe0, 0xaa, 0x8e, 0x8d, 0x74, 0x42, 0x64, 0x66, 0x2f, + 0x49, 0x17, 0xc6, 0x42, 0x44, 0xf2, 0x2e, 0x0b, 0x2f, 0x59, 0x4f, 0x45, + 0xc2, 0xb3, 0x30, 0xca, 0x77, 0x33, 0xa9, 0xf9, 0x94, 0x69, 0x40, 0x4b, + 0xa3, 0xd9, 0x17, 0x4a, 0x7d, 0xa9, 0x0e, 0x9d, 0x2d, 0xbf, 0xad, 0x54, + 0x2d, 0x73, 0x59, 0x5a, 0x84, 0xaf, 0xab, 0x5f, 0xbd, 0x40, 0x32, 0xb9, + 0xd5, 0x9d, 0x73, 0x05, 0x3b, 0x66, 0x34, 0xa4, 0x73, 0xad, 0xf4, 0x65, + 0x63, 0x0e, 0x4b, 0x62, 0xa6, 0x05, 0x24, 0x89, 0x46, 0x47, 0xca, 0x6c, + 0x22, 0xe2, 0x42, 0x5c, 0x26, 0xe5, 0x3a, 0xd9, 0x9c, 0x96, 0x94, 0x11, + 0xdd, 0x47, 0x43, 0x96, 0xbb, 0xbb, 0xab, 0x1b, 0x19, 0xaf, 0xb6, 0xd7, + 0xf1, 0x96, 0x59, 0xd9, 0x12, 0xcc, 0x10, 0x21, 0xcb, 0x57, 0x04, 0xe4, + 0x15, 0x24, 0x45, 0x4d, 0x73, 0x22, 0xf3, 0x1a, 0x95, 0xf2, 0x89, 0x0c, + 0xdb, 0x8b, 0xa8, 0xd0, 0x52, 0xf3, 0xb8, 0xb8, 0x47, 0x7e, 0xb8, 0x3a, + 0x1c, 0x96, 0x51, 0x0c, 0x4b, 0xa5, 0x0b, 0x02, 0xf3, 0x3b, 0xc7, 0xb2, + 0x42, 0x8a, 0xf5, 0x95, 0x3d, 0x96, 0xea, 0xc0, 0x9e, 0xd1, 0xa9, 0x0a, + 0x1a, 0x71, 0x86, 0x2e, 0xe3, 0xaa, 0x9a, 0x99, 0x94, 0xb2, 0x21, 0x8f, + 0x94, 0xa5, 0xbc, 0xc5, 0x62, 0x7e, 0xb6, 0xc8, 0x4a, 0xd5, 0xc5, 0xf5, + 0x85, 0x0f, 0x3a, 0x59, 0x4c, 0xd3, 0xb0, 0x69, 0x0c, 0x64, 0x29, 0x32, + 0x65, 0x2b, 0x4f, 0x00, 0xe4, 0x2d, 0x07, 0x81, 0xa4, 0xa1, 0x6c, 0x00, + 0x16, 0xbc, 0xa6, 0xe2, 0x40, 0x0f, 0x96, 0x84, 0x50, 0x49, 0x00, 0xd5, + 0x45, 0xd0, 0xc2, 0xfd, 0x81, 0x02, 0x09, 0x12, 0x83, 0x73, 0x5f, 0xd4, + 0xb5, 0x55, 0x7e, 0x1f, 0x4f, 0x1d, 0x07, 0x44, 0x58, 0x62, 0xce, 0x22, + 0x92, 0x04, 0x16, 0x21, 0xd0, 0x80, 0xcc, 0x60, 0x33, 0x06, 0xf4, 0x84, + 0x9c, 0x23, 0x9c, 0x29, 0x47, 0xad, 0x08, 0xa9, 0x13, 0xcd, 0xb2, 0x79, + 0xb6, 0xbc, 0xb7, 0x6f, 0x9f, 0xe9, 0xcb, 0xcb, 0xff, 0x67, 0xf7, 0xfe, + 0xff, 0xf6, 0xff, 0xf9, 0xff, 0x99, 0xf7, 0xf5, 0x85, 0x32, 0x2f, 0x84, + 0x5f, 0x7f, 0xff, 0xfe, 0x1e, 0x8f, 0x69, 0x90, 0x75, 0x16, 0x0d, 0x91, + 0x01, 0x62, 0x19, 0x9d, 0x80, 0x80, 0x55, 0xc4, 0xc9, 0x23, 0xa3, 0xa8, + 0x71, 0x63, 0x15, 0x42, 0x90, 0x0d, 0xcc, 0x0c, 0xc2, 0x4f, 0x5a, 0x97, + 0xc4, 0x9b, 0xa3, 0xf9, 0x09, 0x59, 0x6f, 0xf3, 0xdf, 0x93, 0xf0, 0xf0, + 0x36, 0xdd, 0xe4, 0x36, 0xa6, 0x85, 0x2c, 0x6c, 0xac, 0x27, 0x52, 0x67, + 0x72, 0x99, 0x0d, 0x38, 0x8b, 0xab, 0x62, 0x21, 0x07, 0x6c, 0x9e, 0x6a, + 0x44, 0x51, 0xe5, 0x3b, 0x09, 0xd2, 0x86, 0x37, 0x9a, 0x08, 0x03, 0x9c, + 0xc1, 0x32, 0x23, 0x17, 0xa2, 0xe0, 0xcf, 0x18, 0xd5, 0x7a, 0x69, 0x17, + 0xa3, 0xb4, 0x39, 0x50, 0xe6, 0x57, 0x56, 0x7d, 0xf9, 0x8d, 0x37, 0x75, + 0x96, 0xf1, 0x40, 0xf1, 0xc7, 0xfa, 0x79, 0xf2, 0x70, 0x65, 0x8e, 0xd3, + 0xac, 0xad, 0x91, 0xa9, 0x43, 0x8e, 0xe8, 0xc3, 0x90, 0xf3, 0x86, 0xf1, + 0xb5, 0xb7, 0xbd, 0xa7, 0x40, 0xaf, 0xfc, 0x65, 0xde, 0x74, 0x28, 0xa3, + 0x70, 0x45, 0x0c, 0x8a, 0xed, 0xaa, 0x0a, 0x66, 0x0b, 0x1c, 0x9d, 0x69, + 0x30, 0x14, 0x7b, 0x38, 0xec, 0x3f, 0x1a, 0xdc, 0xdb, 0xe9, 0x4f, 0xa8, + 0xeb, 0x81, 0x3d, 0x66, 0x27, 0x31, 0x24, 0xa0, 0x90, 0xc3, 0x2e, 0xbd, + 0x89, 0x7b, 0x8d, 0x4e, 0xfa, 0xb8, 0x3d, 0xb3, 0xa8, 0xb4, 0x31, 0x9d, + 0x24, 0x02, 0xdd, 0x5f, 0xf8, 0xc5, 0xd7, 0xd5, 0xdc, 0x9f, 0x78, 0x20, + 0xf8, 0xb5, 0x49, 0x0b, 0xb1, 0x2a, 0x72, 0xf5, 0x3f, 0x10, 0x87, 0x2a, + 0xc3, 0x31, 0x29, 0x88, 0x75, 0xdb, 0x82, 0x1f, 0x08, 0x72, 0x6e, 0x4b, + 0x4a, 0xec, 0x5e, 0x8e, 0xc0, 0xff, 0xfb, 0xd4, 0x60, 0x67, 0x0d, 0x18, + 0x82, 0x76, 0xbc, 0x93, 0x2f, 0xc3, 0x70, 0x7e, 0x0e, 0xa8, 0x1a, 0x19, + 0x25, 0x6e, 0x5f, 0x61, 0xd6, 0xf4, 0x2c, 0xbd, 0xed, 0xc9, 0xa6, 0xb9, + 0xe0, 0x64, 0x61, 0x95, 0xb9, 0x39, 0xcb, 0xb2, 0xc1, 0xf9, 0x8c, 0xc7, + 0xbe, 0x9e, 0x11, 0x66, 0xbd, 0x1d, 0x3c, 0x72, 0xcc, 0xfb, 0x96, 0xfa, + 0xd5, 0x88, 0xca, 0xda, 0x03, 0x35, 0x8f, 0x3b, 0xf0, 0x6c, 0x3e, 0xf4, + 0x4b, 0x19, 0x43, 0xb6, 0xfb, 0xc7, 0x5d, 0x74, 0x71, 0x91, 0xc1, 0x8d, + 0x21, 0xe4, 0x8d, 0xc0, 0xeb, 0xb1, 0xfe, 0x8d, 0x28, 0x62, 0x12, 0x1b, + 0x91, 0x60, 0x2a, 0xf5, 0x1f, 0x44, 0xac, 0xee, 0x46, 0x1d, 0x1c, 0x80, + 0x01, 0x26, 0xab, 0x46, 0x88, 0x03, 0xf6, 0x70, 0xfa, 0x51, 0x69, 0x19, + 0xfb, 0xa0, 0x8c, 0x27, 0xad, 0x22, 0x57, 0x25, 0x51, 0x59, 0xb4, 0x0c, + 0xc0, 0xd8, 0xd9, 0xa2, 0x0c, 0x43, 0x28, 0x65, 0xd2, 0x73, 0xe2, 0xb8, + 0x38, 0x52, 0x88, 0xbb, 0xc5, 0x21, 0x36, 0xa6, 0xda, 0x4d, 0xc5, 0x93, + 0x88, 0xcd, 0x50, 0xf5, 0x3b, 0xa9, 0xc4, 0x1c, 0x60, 0xc4, 0x74, 0x1c, + 0x61, 0xe3, 0x90, 0x96, 0xf6, 0xbb, 0x8e, 0xb5, 0xac, 0xce, 0xd9, 0x15, + 0x56, 0xaa, 0xe6, 0xd1, 0xd7, 0xaf, 0xa1, 0xef, 0xff, 0x98, 0xe9, 0xfc, + 0xf5, 0xf7, 0xaf, 0x26, 0xd5, 0xbf, 0x5a, 0x69, 0xb5, 0x1e, 0xcb, 0x64, + 0xe8, 0x8a, 0xa8, 0xa8, 0x2e, 0x66, 0x71, 0x31, 0xc5, 0x38, 0x99, 0x04, + 0x47, 0xa0, 0xe1, 0x07, 0x18, 0x1f, 0x71, 0xc1, 0x01, 0xe6, 0x23, 0x94, + 0x55, 0x83, 0xc3, 0x03, 0xa3, 0x05, 0x8d, 0x62, 0x5a, 0x4a, 0x0e, 0x67, + 0xae, 0x73, 0x4e, 0x71, 0x64, 0x10, 0xb6, 0x4d, 0x26, 0x7c, 0x9d, 0x18, + 0xc6, 0xcf, 0x23, 0xf1, 0x0b, 0xb5, 0xdb, 0xd0, 0x87, 0x23, 0xc5, 0x98, + 0x9e, 0x1d, 0x69, 0x34, 0xe2, 0x95, 0xc4, 0xf2, 0x42, 0x4b, 0xf1, 0xa6, + 0x4c, 0xcf, 0xf4, 0x2c, 0xbf, 0x9f, 0x49, 0x76, 0x95, 0x6e, 0xe7, 0xd1, + 0x10, 0xca, 0xe1, 0xa4, 0x92, 0xa0, 0xca, 0x3f, 0x5a, 0xdb, 0x95, 0xac, + 0xa5, 0xb0, 0xf8, 0x2e, 0x8c, 0x4a, 0x05, 0x3e, 0xe1, 0xaa, 0xa1, 0x29, + 0x19, 0x94, 0x0d, 0x27, 0x41, 0x9a, 0xc0, 0x75, 0x28, 0x17, 0x4b, 0x5a, + 0x56, 0x2d, 0x1c, 0xcb, 0x4a, 0x25, 0x09, 0xd0, 0xf5, 0xb1, 0x75, 0x09, + 0x88, 0xe8, 0x5e, 0x9c, 0xcb, 0x8a, 0x5e, 0x54, 0x97, 0x5a, 0xab, 0x13, + 0xe3, 0xf1, 0x1c, 0xe9, 0xbd, 0x40, 0xf2, 0x23, 0x82, 0xd1, 0xfc, 0x7c, + 0x35, 0xd5, 0x40, 0xe6, 0xe6, 0x8c, 0x57, 0xbc, 0x5b, 0x87, 0x1d, 0x23, + 0x0a, 0x2b, 0x85, 0x22, 0x9c, 0xca, 0xd8, 0xf4, 0xa3, 0xd5, 0xd4, 0x34, + 0xbc, 0xc9, 0xb4, 0x63, 0x63, 0x7b, 0x89, 0x71, 0x56, 0xa6, 0x1e, 0xb2, + 0xc0, 0xba, 0xc2, 0xca, 0xdc, 0x57, 0xd0, 0xe0, 0xdd, 0x2d, 0x2a, 0x61, + 0x50, 0xc6, 0xc4, 0xa6, 0x68, 0x56, 0x2b, 0xa0, 0x2a, 0x10, 0xa4, 0xb2, + 0xa1, 0x5e, 0xdc, 0xa6, 0x60, 0x88, 0xf9, 0x48, 0x91, 0x52, 0xb1, 0xbb, + 0xc3, 0xc9, 0xd1, 0xb4, 0x62, 0x52, 0xf6, 0x16, 0xc7, 0x8d, 0x69, 0xa6, + 0x19, 0x19, 0x22, 0x3d, 0x2e, 0x31, 0x49, 0x4a, 0x59, 0x91, 0x7c, 0xb1, + 0x18, 0x09, 0xd3, 0xa8, 0xf1, 0x27, 0x24, 0x14, 0x7f, 0xa6, 0x87, 0xf9, + 0x94, 0x6b, 0x13, 0x43, 0x34, 0x28, 0x88, 0x70, 0x17, 0x4d, 0x30, 0x8d, + 0x58, 0x48, 0x8c, 0x5c, 0x40, 0x11, 0x97, 0x8e, 0xbf, 0xe0, 0x55, 0x92, + 0xa2, 0x29, 0x34, 0xa3, 0x38, 0x04, 0x04, 0x9c, 0xca, 0x9c, 0x04, 0x10, + 0xc2, 0x8b, 0x07, 0x85, 0x93, 0x9f, 0x97, 0xe1, 0x5c, 0x40, 0x65, 0x0c, + 0xc8, 0x87, 0x5e, 0x96, 0xb1, 0xbf, 0xb3, 0x11, 0xa7, 0x76, 0x34, 0xb9, + 0x51, 0x54, 0xe7, 0x1e, 0x20, 0xb4, 0x42, 0xb1, 0xb3, 0x6b, 0x56, 0x9f, + 0x6a, 0x5c, 0xbb, 0xd5, 0x9b, 0xee, 0x9d, 0xb5, 0xcb, 0x7a, 0xfe, 0x86, + 0xe8, 0xed, 0x6a, 0xd7, 0xbe, 0xad, 0xee, 0x4b, 0xfc, 0xfe, 0xe7, 0xa5, + 0xea, 0xc6, 0x18, 0x8a, 0x55, 0x67, 0x71, 0xe4, 0x20, 0xa8, 0x44, 0x40, + 0xad, 0x71, 0xa2, 0xe3, 0x05, 0x85, 0x59, 0x86, 0x89, 0x1c, 0xc7, 0x62, + 0x08, 0xae, 0x00, 0x36, 0x86, 0x3d, 0x2a, 0xe4, 0x79, 0x19, 0x36, 0x56, + 0xec, 0xc0, 0xab, 0xdf, 0xa3, 0xbf, 0x4b, 0x6e, 0x57, 0xb7, 0x16, 0x35, + 0x4b, 0xd8, 0xbf, 0x2b, 0x83, 0x75, 0x38, 0x77, 0x99, 0x25, 0xc8, 0xeb, + 0x56, 0x37, 0xaf, 0x10, 0xc4, 0x29, 0x71, 0x02, 0x02, 0x9e, 0x04, 0x15, + 0x32, 0x22, 0x09, 0xe8, 0xe7, 0x19, 0x61, 0x65, 0xcd, 0xfa, 0x48, 0xd2, + 0x57, 0x22, 0x09, 0x4a, 0x16, 0x94, 0x46, 0xa6, 0xd3, 0x14, 0x56, 0x49, + 0x64, 0xba, 0x09, 0xce, 0x0b, 0x1b, 0x9c, 0x35, 0x34, 0x18, 0x6a, 0x78, + 0xd1, 0x97, 0x8d, 0x14, 0x31, 0x3e, 0xa4, 0x32, 0x90, 0xc5, 0x32, 0xb3, + 0x2d, 0xad, 0xf0, 0xd4, 0x0f, 0x8c, 0xe5, 0xb5, 0xe6, 0x28, 0x4f, 0xa4, + 0x52, 0x44, 0x75, 0x56, 0x15, 0x4a, 0xb1, 0x4a, 0xc5, 0x9b, 0xc4, 0x7a, + 0xe9, 0x81, 0xbe, 0x34, 0x4f, 0x05, 0xfb, 0xa9, 0xe2, 0xa1, 0x6c, 0xb0, + 0xd5, 0xaa, 0xf7, 0xac, 0x2c, 0x70, 0xe5, 0x66, 0x3a, 0xd8, 0x61, 0xa5, + 0x97, 0x33, 0xb2, 0xbb, 0x51, 0xc7, 0x2e, 0x88, 0x7e, 0xa1, 0x39, 0xc1, + 0x52, 0xbf, 0x47, 0x4c, 0xb4, 0xb5, 0x47, 0x08, 0xca, 0xe7, 0xce, 0x29, + 0x88, 0xf0, 0x14, 0x6d, 0x2a, 0x89, 0x18, 0xe3, 0xaf, 0x35, 0x3f, 0x91, + 0x3a, 0xb8, 0xe9, 0x17, 0xe9, 0xff, 0xfb, 0xd4, 0x60, 0x5b, 0x89, 0x17, + 0x8f, 0x76, 0xbd, 0xab, 0x0f, 0x7b, 0x70, 0x72, 0x0e, 0x98, 0x1a, 0x08, + 0xc5, 0x6e, 0x5e, 0x25, 0xd8, 0xf6, 0xcc, 0x3d, 0xed, 0xc1, 0xc0, 0x3a, + 0xe0, 0x64, 0x24, 0x15, 0xb8, 0x07, 0xcb, 0xd0, 0x5f, 0x3a, 0xa2, 0x01, + 0xf3, 0x31, 0xef, 0x1a, 0xae, 0x2a, 0xe7, 0x38, 0xcf, 0xa7, 0x64, 0x8a, + 0xed, 0x61, 0x06, 0x90, 0x3a, 0x91, 0x0d, 0xea, 0xe8, 0x0f, 0x61, 0xaa, + 0xd3, 0x8b, 0x27, 0x9b, 0xe4, 0x0b, 0x1a, 0x16, 0x5c, 0x0d, 0xb6, 0xf4, + 0xe0, 0xe9, 0x57, 0x9d, 0x2a, 0xe5, 0x48, 0x7d, 0x88, 0xb0, 0x84, 0x88, + 0x79, 0x6f, 0x55, 0x4c, 0x00, 0x02, 0x42, 0xa9, 0x24, 0x40, 0x19, 0x03, + 0x0e, 0x22, 0xa2, 0xd0, 0x4b, 0x69, 0xf6, 0xb3, 0xe5, 0xc7, 0xcc, 0xfb, + 0xeb, 0x6e, 0xd0, 0xc6, 0xd3, 0x4b, 0x04, 0xe4, 0x0d, 0x23, 0x8d, 0xcd, + 0xff, 0xdc, 0xc6, 0xbe, 0x6b, 0xcc, 0xb9, 0x78, 0x8c, 0xd4, 0x1d, 0x6c, + 0x8a, 0x7b, 0x99, 0x15, 0x2c, 0x21, 0x75, 0x39, 0x8a, 0x45, 0x33, 0x93, + 0x45, 0x77, 0x2d, 0x99, 0x91, 0xfd, 0xf5, 0xf7, 0xd3, 0xa7, 0x6e, 0x96, + 0x4e, 0xdd, 0xed, 0x5b, 0x75, 0xb9, 0xfd, 0xff, 0x43, 0x2b, 0xb9, 0x6d, + 0x67, 0xda, 0xb9, 0x1d, 0x2e, 0xe9, 0x20, 0xc6, 0x16, 0x13, 0x20, 0xb1, + 0x45, 0x85, 0x50, 0x63, 0x85, 0x89, 0x3c, 0x54, 0x10, 0xaa, 0x24, 0xe1, + 0x62, 0xa2, 0x91, 0x10, 0x18, 0x69, 0x43, 0xe3, 0x8a, 0x0c, 0x20, 0x87, + 0x9d, 0x20, 0x68, 0xfc, 0x22, 0x50, 0x54, 0x5d, 0xbc, 0x7b, 0x62, 0xf6, + 0xde, 0xe8, 0x8d, 0x4c, 0xd8, 0xed, 0xe4, 0x57, 0x33, 0x17, 0xc4, 0x2d, + 0x48, 0xbb, 0x65, 0x4f, 0x28, 0x96, 0xda, 0x8a, 0x14, 0x2a, 0x3b, 0x9c, + 0xea, 0x94, 0xe1, 0xd1, 0x56, 0x45, 0x4c, 0xc7, 0xf2, 0xb9, 0xb0, 0xb6, + 0xb0, 0xa2, 0x90, 0xd2, 0x4c, 0xa1, 0x39, 0x64, 0x49, 0x3d, 0xc5, 0x90, + 0xaa, 0x21, 0x4d, 0x88, 0x59, 0xfe, 0xe2, 0xba, 0x2f, 0x46, 0x83, 0xb4, + 0x5a, 0x1c, 0xc0, 0xad, 0x72, 0xa9, 0xda, 0xaf, 0x62, 0xea, 0xc6, 0xd6, + 0xac, 0xe9, 0x4e, 0xd8, 0x76, 0xab, 0x52, 0xb6, 0x5f, 0x3f, 0x95, 0xcd, + 0x87, 0xe2, 0x09, 0x4d, 0x09, 0x8d, 0x52, 0xa0, 0x5d, 0xe5, 0x9d, 0xf3, + 0x05, 0x63, 0x77, 0x26, 0x26, 0xa3, 0xf0, 0xec, 0xda, 0xb1, 0x5a, 0xdc, + 0x71, 0x40, 0x9d, 0xd3, 0x2a, 0xd4, 0x1b, 0xb4, 0x2d, 0x25, 0x91, 0x30, + 0xa8, 0xe4, 0x9a, 0x52, 0xb7, 0x44, 0x64, 0x67, 0x63, 0x6c, 0x55, 0xcd, + 0x31, 0xfa, 0xfd, 0xbd, 0x9d, 0x19, 0xb8, 0xce, 0x6c, 0x28, 0x4a, 0xfe, + 0xcf, 0xf5, 0xa6, 0x28, 0xaf, 0x99, 0xa0, 0xc2, 0xd4, 0x55, 0xc3, 0xf5, + 0x76, 0x91, 0x27, 0xfa, 0xa9, 0x5e, 0xc7, 0x11, 0xb9, 0xb5, 0x40, 0xc6, + 0xd4, 0xca, 0xc8, 0xe6, 0xaf, 0x87, 0x0a, 0x58, 0x4f, 0x57, 0x13, 0xea, + 0x59, 0x95, 0x30, 0xb7, 0x3e, 0xd8, 0xd2, 0x89, 0xf9, 0x94, 0x33, 0xa9, + 0xa1, 0x2c, 0xa8, 0x94, 0x2a, 0xc5, 0x19, 0x60, 0x37, 0x9d, 0xbb, 0x25, + 0x67, 0x3a, 0x9d, 0x51, 0x00, 0xee, 0x5d, 0x15, 0x83, 0x74, 0x30, 0x55, + 0xa4, 0xb8, 0xbb, 0x88, 0xb0, 0xe5, 0x3c, 0xd5, 0xe9, 0x27, 0x57, 0x01, + 0x41, 0x7d, 0xab, 0xab, 0x9d, 0x02, 0x80, 0x89, 0x00, 0x03, 0xde, 0x91, + 0x11, 0x32, 0xc4, 0xc0, 0x86, 0x12, 0x20, 0xe9, 0x3b, 0xae, 0x9e, 0xee, + 0x16, 0xaa, 0x4b, 0x9d, 0xa9, 0xdc, 0xfd, 0xe7, 0xb7, 0xde, 0x96, 0x92, + 0x2a, 0xc8, 0x28, 0xaa, 0x73, 0x14, 0xec, 0x5b, 0x94, 0x45, 0x87, 0x21, + 0x94, 0xa7, 0x31, 0xd2, 0x91, 0x42, 0xbb, 0x3a, 0xf7, 0x9b, 0xff, 0x7b, + 0xa3, 0xdc, 0xd4, 0x4b, 0x7b, 0x27, 0x6d, 0x2f, 0xbb, 0x2e, 0xaf, 0xea, + 0xea, 0xfb, 0xfe, 0x9b, 0x51, 0x3b, 0xae, 0xb7, 0xbd, 0x09, 0x2d, 0xdd, + 0xa4, 0x5d, 0x8a, 0xa8, 0xca, 0xc2, 0xc8, 0xaa, 0xee, 0x11, 0x11, 0x16, + 0x1f, 0x16, 0x0f, 0x09, 0x00, 0xe7, 0x0f, 0x0d, 0x96, 0x26, 0x20, 0x3c, + 0x4c, 0xc2, 0x84, 0x14, 0x39, 0x5d, 0x0c, 0x49, 0xc2, 0x62, 0xbb, 0xd8, + 0x84, 0xfc, 0x8a, 0x1a, 0xa3, 0x76, 0x22, 0x76, 0x5d, 0xf4, 0x72, 0xae, + 0x22, 0xe5, 0xb4, 0xc0, 0x48, 0x18, 0xe7, 0x22, 0x22, 0x0b, 0x22, 0xe0, + 0xdb, 0x48, 0xa7, 0xd4, 0x28, 0x42, 0xa9, 0x8d, 0x9c, 0xb9, 0x1d, 0x47, + 0x39, 0x2d, 0x74, 0x5e, 0xc9, 0x2a, 0x31, 0x5a, 0x38, 0x0a, 0x93, 0xb1, + 0x25, 0x66, 0x52, 0x70, 0x7f, 0x9d, 0xa6, 0x49, 0xa2, 0x42, 0x0f, 0x82, + 0xec, 0x7a, 0x0f, 0x42, 0xc1, 0x92, 0x5b, 0xe9, 0x25, 0x1d, 0x5e, 0xb1, + 0xe7, 0x79, 0xec, 0x97, 0xc3, 0x6f, 0x23, 0x82, 0xfd, 0xd3, 0xbf, 0x8d, + 0x6f, 0x17, 0x0e, 0x71, 0xbf, 0x8d, 0x43, 0xce, 0x4b, 0xb3, 0x32, 0xd0, + 0x2b, 0xc3, 0xae, 0x42, 0x8e, 0xba, 0x72, 0xd7, 0x4a, 0x85, 0x9b, 0x3c, + 0xd0, 0xc4, 0xae, 0xcd, 0xf6, 0x8d, 0x03, 0xdd, 0x95, 0xd1, 0xb2, 0xfa, + 0x48, 0x02, 0x1f, 0x79, 0xa4, 0x0e, 0x5b, 0x60, 0x95, 0xc3, 0x50, 0x33, + 0xf7, 0x02, 0xc6, 0xac, 0xc3, 0x8e, 0x15, 0x5b, 0x52, 0x9a, 0x8f, 0xf4, + 0x5e, 0x04, 0x8c, 0x41, 0x0c, 0xe2, 0x5f, 0x45, 0x02, 0x35, 0xe6, 0xc3, + 0x03, 0x46, 0x1e, 0x16, 0x1d, 0x2c, 0x8d, 0xc9, 0xe3, 0x74, 0xd1, 0x16, + 0x66, 0xfe, 0x35, 0xd6, 0x57, 0x0e, 0xdc, 0xb9, 0x33, 0x59, 0xea, 0xb4, + 0xdc, 0x5f, 0x87, 0xf6, 0x31, 0x16, 0x7f, 0xda, 0x7b, 0xfa, 0xf2, 0xda, + 0xaf, 0x33, 0x36, 0xd2, 0x2b, 0xff, 0xfb, 0xd4, 0x60, 0x67, 0x0c, 0x08, + 0xa6, 0x76, 0x3c, 0x0b, 0x4f, 0xc3, 0x70, 0x77, 0xae, 0xa8, 0x0a, 0x18, + 0xc5, 0x6e, 0x5e, 0xc9, 0xd8, 0xf6, 0x4c, 0x3d, 0xed, 0xc1, 0xc6, 0xba, + 0xa0, 0xa8, 0x63, 0x15, 0xb9, 0x46, 0x22, 0xb3, 0xb5, 0x5d, 0xd9, 0x88, + 0x7a, 0x0d, 0xb3, 0x8b, 0xe3, 0x52, 0xec, 0x4e, 0x07, 0x91, 0xca, 0x66, + 0x23, 0xaf, 0xbb, 0x31, 0xa5, 0x96, 0xb5, 0xd7, 0xd6, 0x3b, 0x39, 0x9d, + 0x33, 0xd4, 0xff, 0x2f, 0xc8, 0x83, 0xd3, 0x82, 0xcb, 0x68, 0x6a, 0x5e, + 0xd9, 0xf4, 0xf8, 0x2c, 0x33, 0xdd, 0x14, 0x7b, 0x65, 0xca, 0x9b, 0x35, + 0xb8, 0x97, 0xeb, 0x95, 0xe8, 0x69, 0xcd, 0xac, 0x56, 0xba, 0x47, 0x99, + 0xcc, 0x5e, 0x18, 0x1c, 0x00, 0x06, 0xaa, 0x4a, 0x28, 0x80, 0x3b, 0x9a, + 0xf4, 0x16, 0xeb, 0xa9, 0x7c, 0xef, 0x97, 0xb8, 0x74, 0x26, 0xad, 0x33, + 0x0a, 0x82, 0xf6, 0x0b, 0xd7, 0x02, 0x07, 0x4b, 0x5a, 0xad, 0xdb, 0x7f, + 0x66, 0x7d, 0xd6, 0xaa, 0xbf, 0xdb, 0x1f, 0x55, 0x39, 0xd5, 0x2c, 0xd5, + 0xd9, 0x0c, 0xcc, 0x86, 0x37, 0x3b, 0x3b, 0x5b, 0x71, 0xe7, 0xaa, 0xad, + 0xd5, 0x19, 0x16, 0x4b, 0xec, 0x89, 0x66, 0x67, 0xee, 0x52, 0x7e, 0x97, + 0xd6, 0xff, 0x25, 0xcb, 0x5a, 0x37, 0xee, 0xca, 0x9d, 0x3e, 0xcf, 0xad, + 0x15, 0x96, 0xec, 0xb4, 0x21, 0x4b, 0x49, 0xc4, 0x24, 0x89, 0x0a, 0xb8, + 0xd0, 0x81, 0x8c, 0x24, 0x1f, 0x18, 0xe3, 0xcc, 0x0c, 0x2e, 0x42, 0x88, + 0x09, 0x07, 0x5c, 0x81, 0xe0, 0x20, 0x4c, 0x25, 0x1a, 0x3c, 0x14, 0x70, + 0xf1, 0x01, 0x41, 0x08, 0xc8, 0x01, 0xfb, 0x61, 0x02, 0x78, 0x77, 0x1e, + 0xf9, 0x7b, 0xc0, 0xe4, 0x40, 0xee, 0x5b, 0x2b, 0x77, 0xf1, 0x77, 0x0d, + 0xc4, 0xc2, 0x55, 0x81, 0x91, 0x90, 0xc8, 0x7e, 0x9b, 0x67, 0x38, 0xdf, + 0xb1, 0xae, 0xd5, 0x86, 0xf6, 0xd2, 0x84, 0x08, 0xda, 0x3f, 0xd2, 0x0d, + 0x88, 0x53, 0x69, 0xbe, 0xa5, 0x86, 0x8c, 0x3b, 0x0f, 0x35, 0x52, 0x58, + 0x62, 0x21, 0x28, 0x42, 0xb5, 0xf4, 0x62, 0x50, 0x38, 0x89, 0x8a, 0x14, + 0x88, 0x4d, 0x9d, 0x0d, 0xce, 0x6b, 0x0e, 0xd4, 0xca, 0x15, 0x1c, 0xab, + 0xb6, 0x34, 0xb3, 0xd5, 0xa4, 0x1a, 0x45, 0xc5, 0x99, 0x53, 0x15, 0xcd, + 0xc1, 0x3c, 0xfe, 0x03, 0xc9, 0x93, 0x6f, 0x22, 0xc3, 0x43, 0x10, 0xc5, + 0x7b, 0x86, 0x1c, 0x23, 0xa8, 0x23, 0xa8, 0xdf, 0xc7, 0x4f, 0xa9, 0x1b, + 0xe0, 0x32, 0xb8, 0x31, 0x27, 0x51, 0xca, 0xd6, 0x06, 0xdc, 0xc6, 0x55, + 0xa3, 0xde, 0x47, 0x54, 0xab, 0xd8, 0x63, 0xc0, 0x74, 0x99, 0x62, 0x55, + 0xbe, 0x4a, 0x35, 0x29, 0x19, 0xe1, 0xa9, 0x97, 0x29, 0x08, 0x4d, 0x09, + 0xc8, 0xb0, 0x9b, 0x1c, 0x68, 0xf9, 0xec, 0x38, 0xee, 0x34, 0x49, 0xb0, + 0xa4, 0xe3, 0xd3, 0x6f, 0x68, 0xe1, 0x33, 0xa6, 0xc6, 0xb9, 0x98, 0x5e, + 0x2a, 0x55, 0x9b, 0x75, 0xdc, 0x58, 0x91, 0xca, 0x05, 0xac, 0x28, 0xe1, + 0x47, 0x7b, 0xd8, 0xde, 0xbd, 0x6b, 0xb5, 0x94, 0xad, 0x8a, 0x48, 0x8e, + 0xaa, 0xe7, 0x15, 0x0e, 0xd1, 0xe9, 0xd3, 0xea, 0x26, 0x98, 0xad, 0xc7, + 0x0b, 0x61, 0xc2, 0x72, 0x25, 0xd1, 0xa9, 0x58, 0xe7, 0x90, 0xd1, 0x3e, + 0x85, 0xfb, 0x72, 0x1a, 0x4c, 0x0f, 0xf6, 0x75, 0x5c, 0x32, 0x90, 0x31, + 0x85, 0xe8, 0x0e, 0x6a, 0xd3, 0x88, 0x16, 0x03, 0xa2, 0x08, 0x02, 0x48, + 0xe5, 0x37, 0x1a, 0x20, 0x7f, 0x10, 0xf3, 0xa6, 0x0d, 0x49, 0xb4, 0xf5, + 0xbb, 0x3f, 0xed, 0x8c, 0xd8, 0xda, 0xe3, 0x14, 0xb6, 0xdd, 0xde, 0xfb, + 0xf6, 0xa5, 0xf6, 0xc7, 0xd3, 0x9e, 0xc9, 0x46, 0xe9, 0xbd, 0x38, 0x67, + 0x9d, 0xb9, 0xe8, 0xaa, 0x82, 0x01, 0xe1, 0x55, 0x12, 0x58, 0xf2, 0x3c, + 0x52, 0x28, 0x32, 0xc7, 0x42, 0x0d, 0x31, 0x99, 0xaf, 0x38, 0xc9, 0xcb, + 0x5b, 0xa3, 0xa6, 0x88, 0xe7, 0xde, 0x76, 0x49, 0xf9, 0x29, 0xec, 0xce, + 0xf5, 0xf7, 0xfd, 0xd7, 0xfc, 0x9f, 0x6f, 0xef, 0xff, 0x4e, 0xfd, 0x3b, + 0xa1, 0x0e, 0xc8, 0x61, 0xc8, 0xce, 0x43, 0x11, 0x07, 0x87, 0x86, 0x95, + 0x84, 0x47, 0x08, 0xc6, 0x09, 0x09, 0x31, 0x4a, 0x50, 0xa0, 0xe0, 0xa1, + 0xd4, 0x4c, 0x82, 0x6a, 0x00, 0xc3, 0x86, 0x20, 0x9c, 0xc5, 0xdc, 0x23, + 0xa2, 0x84, 0x70, 0x8d, 0xa5, 0x02, 0x6d, 0x4c, 0x4e, 0xc9, 0xe9, 0xc3, + 0x87, 0x52, 0x20, 0x8f, 0x22, 0x48, 0x4c, 0x3b, 0x0a, 0x8b, 0xc8, 0x51, + 0x93, 0x44, 0xb2, 0x79, 0x82, 0x90, 0x05, 0x56, 0x98, 0x42, 0x56, 0x6a, + 0xb0, 0x1b, 0x85, 0x4a, 0x14, 0x44, 0x86, 0xb0, 0x78, 0x65, 0x49, 0x18, + 0x70, 0x54, 0x4b, 0x2d, 0x8e, 0xc7, 0xc2, 0x5b, 0x8b, 0x4e, 0x57, 0x30, + 0x5c, 0x0a, 0xf0, 0xe6, 0xa2, 0x79, 0x5c, 0xc0, 0xf5, 0x91, 0x16, 0x5b, + 0xd5, 0x2b, 0x2a, 0x88, 0x4c, 0x67, 0xfd, 0xe0, 0x26, 0x2c, 0xe6, 0x9b, + 0x57, 0xaa, 0x90, 0xd9, 0xd1, 0xcd, 0x0b, 0x0f, 0x99, 0x8e, 0x08, 0x8c, + 0x2f, 0x22, 0xb0, 0x38, 0x33, 0x37, 0x29, 0xd5, 0x8a, 0x78, 0x6e, 0xcc, + 0xb6, 0x59, 0x61, 0x41, 0x3d, 0x5e, 0x59, 0x82, 0x22, 0x9e, 0x8e, 0x72, + 0x26, 0x19, 0xdc, 0xe2, 0xbe, 0x58, 0x7b, 0x0a, 0x4b, 0xac, 0x3f, 0x82, + 0xe6, 0x8e, 0x7c, 0xad, 0x79, 0x09, 0x76, 0xbc, 0xfa, 0x03, 0x6c, 0x75, + 0xca, 0xad, 0x44, 0xac, 0x70, 0x6f, 0x5d, 0x21, 0xea, 0xdd, 0xab, 0xdd, + 0x37, 0x29, 0xec, 0xa8, 0xdc, 0x17, 0x29, 0x60, 0x45, 0xb4, 0x65, 0xa7, + 0xe7, 0xea, 0x3f, 0x4a, 0xc8, 0xff, 0xfb, 0xd4, 0x60, 0x5a, 0x89, 0x07, + 0x8f, 0x76, 0xbd, 0xa9, 0xec, 0x7b, 0x70, 0x67, 0x25, 0xf8, 0x4d, 0x0c, + 0xcc, 0x4c, 0x22, 0x91, 0xda, 0xf1, 0x06, 0x3d, 0xed, 0xc2, 0x02, 0xba, + 0x9f, 0xe4, 0x63, 0x21, 0xb9, 0x1b, 0xca, 0xd4, 0x76, 0xc5, 0xdb, 0x6c, + 0x69, 0x55, 0xaf, 0xa0, 0x33, 0x38, 0x69, 0x93, 0x6e, 0xd7, 0x6a, 0x69, + 0xd8, 0x5c, 0x61, 0xa8, 0x1b, 0x51, 0x4c, 0x4a, 0x38, 0xef, 0x9f, 0x42, + 0x7c, 0xa8, 0x3d, 0x5a, 0xa1, 0xb6, 0xb5, 0x9d, 0x2b, 0x4b, 0x84, 0xaa, + 0xfa, 0x40, 0x7d, 0x3f, 0x1b, 0xeb, 0x04, 0xe4, 0xb9, 0x14, 0xc1, 0x23, + 0x1e, 0x81, 0x6a, 0x37, 0x59, 0x2e, 0x00, 0x09, 0xb6, 0xa3, 0xd1, 0xfb, + 0x12, 0x23, 0xe1, 0xc2, 0x58, 0x03, 0x2c, 0xc8, 0x27, 0xae, 0x66, 0xe7, + 0xec, 0x89, 0x4f, 0x5c, 0xc6, 0xd6, 0x4c, 0x25, 0x5c, 0x83, 0xdd, 0x4b, + 0x39, 0x69, 0xfa, 0xe5, 0xeb, 0x33, 0xbd, 0x24, 0xb3, 0xd3, 0x15, 0x70, + 0x8a, 0x0e, 0x71, 0xb3, 0xc8, 0x5b, 0xff, 0xdb, 0xad, 0x5b, 0xcd, 0x5e, + 0xd1, 0x51, 0xbb, 0x67, 0xb7, 0xd2, 0xd5, 0xaf, 0x4e, 0xfc, 0xff, 0x6e, + 0xb5, 0xb6, 0x8b, 0xd2, 0xe1, 0xed, 0x5c, 0xd6, 0x7e, 0xc0, 0xa7, 0xf7, + 0xfd, 0xce, 0xfb, 0xd6, 0xd5, 0xa7, 0x31, 0x9b, 0x1e, 0x7d, 0xe5, 0x1e, + 0xf3, 0x01, 0xa0, 0xf0, 0xe0, 0x79, 0xc1, 0xa1, 0x0b, 0x43, 0xa6, 0x4d, + 0x93, 0x04, 0xb7, 0x30, 0x9c, 0x97, 0x88, 0xa0, 0x24, 0x7e, 0x2a, 0xb6, + 0x3d, 0x91, 0x84, 0xef, 0x10, 0x10, 0xd8, 0x9c, 0x11, 0x67, 0xf2, 0x3d, + 0x62, 0x23, 0xf5, 0x82, 0xd8, 0xd4, 0x48, 0x82, 0xf4, 0x5c, 0x58, 0xda, + 0x68, 0x39, 0x4a, 0x62, 0x1a, 0x43, 0x81, 0xee, 0x5f, 0x8a, 0x40, 0xf9, + 0x1d, 0x65, 0xc5, 0x38, 0x4a, 0x8f, 0xc2, 0xee, 0xcc, 0x3a, 0xd2, 0x87, + 0xf9, 0xa3, 0x01, 0x00, 0x7e, 0x24, 0xb2, 0xaf, 0x3c, 0x91, 0x04, 0x19, + 0x3a, 0x21, 0xe6, 0x98, 0x76, 0x2a, 0x67, 0x41, 0x90, 0x51, 0x68, 0x1e, + 0x29, 0x55, 0xab, 0x2c, 0x30, 0x06, 0x01, 0xb4, 0x61, 0x16, 0xa7, 0xf2, + 0x4c, 0x92, 0x1e, 0x87, 0xa1, 0x77, 0x46, 0x0b, 0xe2, 0x44, 0xa0, 0x62, + 0x27, 0xa4, 0x08, 0xe4, 0x39, 0x49, 0xb2, 0x2d, 0x88, 0xbb, 0x2b, 0x36, + 0x64, 0xf7, 0x52, 0xb1, 0x25, 0x14, 0xcc, 0x67, 0xf3, 0xc3, 0xd4, 0xe3, + 0x45, 0x16, 0xc5, 0xe4, 0x42, 0x10, 0x9f, 0x8d, 0x77, 0x25, 0x43, 0x11, + 0x77, 0x6d, 0x3b, 0xce, 0xf3, 0xf5, 0x12, 0xbb, 0x2d, 0xa8, 0x63, 0xd3, + 0xb6, 0xc4, 0xe0, 0x87, 0x1d, 0x66, 0x5a, 0x85, 0x78, 0xb9, 0x4c, 0xe6, + 0xa6, 0x8c, 0xa6, 0x1b, 0xc7, 0xf9, 0xda, 0x6f, 0x97, 0xb4, 0xa5, 0x11, + 0xec, 0x6e, 0x6a, 0xe6, 0x23, 0xa4, 0xe5, 0x25, 0xed, 0x26, 0xa8, 0xa6, + 0x9c, 0x0a, 0x13, 0x46, 0x02, 0xb1, 0x4e, 0x9e, 0x82, 0xa0, 0x60, 0x38, + 0xd3, 0x10, 0xb9, 0x3b, 0x89, 0x83, 0xfd, 0x2a, 0x89, 0x8a, 0x4a, 0xd7, + 0x67, 0xf2, 0xda, 0xd9, 0xd0, 0xc0, 0x9b, 0x84, 0x8e, 0x48, 0x28, 0x0b, + 0x02, 0x8d, 0xe3, 0xc4, 0xd9, 0xa6, 0x9d, 0x98, 0xea, 0x2e, 0x53, 0x97, + 0xe4, 0x71, 0x71, 0x15, 0x65, 0x30, 0xad, 0x4e, 0x19, 0xa5, 0xbc, 0xf8, + 0x1a, 0x24, 0xa0, 0xa4, 0x33, 0x44, 0x78, 0xe7, 0x17, 0x80, 0x1c, 0x8d, + 0xf2, 0xc4, 0x03, 0x78, 0x18, 0x43, 0x34, 0x01, 0xa0, 0x82, 0x92, 0x23, + 0xa6, 0x70, 0x04, 0x06, 0x80, 0xa5, 0x03, 0xb2, 0x49, 0xee, 0x85, 0xc8, + 0x51, 0x02, 0x97, 0x70, 0xa8, 0xe6, 0x32, 0xa8, 0x90, 0x22, 0x6d, 0x65, + 0x6b, 0xce, 0x3b, 0x46, 0x63, 0x66, 0xbf, 0x8f, 0xff, 0xfb, 0xf5, 0xdf, + 0x7d, 0xbc, 0x36, 0xfa, 0xc2, 0xd6, 0xed, 0x5b, 0x6b, 0x55, 0x49, 0x7c, + 0xc2, 0xcd, 0xd5, 0x71, 0x5a, 0xed, 0x15, 0xc5, 0x55, 0xf0, 0xb3, 0x2e, + 0xed, 0xb5, 0x3d, 0x5c, 0x77, 0x1c, 0xcd, 0xac, 0x74, 0x9f, 0x53, 0xdf, + 0xc5, 0x7e, 0xfd, 0xff, 0xcd, 0xf0, 0xf7, 0xcd, 0xf1, 0x74, 0xf3, 0x54, + 0xbd, 0x45, 0x5e, 0xf7, 0x53, 0x3f, 0x15, 0xd5, 0x55, 0x37, 0xbc, 0xc3, + 0xf3, 0xdd, 0x57, 0x55, 0x22, 0xe2, 0x65, 0x17, 0x55, 0x2b, 0x17, 0x1c, + 0x17, 0x17, 0x11, 0xcb, 0x10, 0xc5, 0x49, 0xa1, 0x0d, 0x03, 0x02, 0x19, + 0x06, 0x8a, 0x8a, 0x41, 0xc7, 0x9e, 0xc3, 0x03, 0xf3, 0x21, 0xd5, 0x00, + 0x00, 0x0b, 0xd0, 0xf6, 0x46, 0x24, 0xa2, 0x61, 0x49, 0x82, 0x41, 0x35, + 0x91, 0xae, 0x16, 0x46, 0xba, 0x77, 0x1d, 0x93, 0x0c, 0x4f, 0x5c, 0x6e, + 0xcc, 0x3b, 0x09, 0xc1, 0xf2, 0x1c, 0x85, 0xcd, 0x08, 0x4e, 0x2b, 0x9a, + 0x10, 0xf5, 0x79, 0x07, 0x47, 0x42, 0x88, 0x8d, 0x67, 0x5b, 0x45, 0x0f, + 0xc8, 0xdb, 0x2f, 0x68, 0x6b, 0x29, 0xc6, 0x72, 0x28, 0x55, 0xa9, 0x0d, + 0x3a, 0x50, 0x24, 0xa2, 0xb1, 0x9d, 0x4a, 0x5d, 0x3d, 0x6f, 0x59, 0x8c, + 0x98, 0x8c, 0xe4, 0xc6, 0xc0, 0x76, 0xc4, 0xad, 0xdc, 0x17, 0x6c, 0x8c, + 0x68, 0x43, 0x52, 0xa5, 0x65, 0xb9, 0x8d, 0x54, 0xba, 0x3b, 0x12, 0x50, + 0xd0, 0xb5, 0x8c, 0xa8, 0x68, 0xb1, 0x19, 0xe4, 0xd5, 0x37, 0xbd, 0x56, + 0xd9, 0x24, 0x70, 0x57, 0xb8, 0xfa, 0xb0, 0xc3, 0x62, 0x5a, 0x8f, 0x1a, + 0x15, 0x95, 0x18, 0x62, 0x84, 0xd6, 0xb9, 0xdc, 0x35, 0x6c, 0x18, 0x2e, + 0x39, 0x67, 0x62, 0x81, 0x15, 0x65, 0x67, 0xb7, 0xb8, 0xb0, 0xbc, 0x45, + 0xb9, 0xc4, 0xb2, 0xb1, 0xaa, 0x66, 0xf7, 0xca, 0xa7, 0x3a, 0x38, 0xb6, + 0x37, 0x5d, 0x91, 0x42, 0xed, 0xff, 0xfb, 0xd4, 0x60, 0x51, 0x08, 0x07, + 0x53, 0x76, 0xbd, 0xc1, 0x2f, 0x7b, 0x70, 0x76, 0x4e, 0x98, 0x19, 0x18, + 0xc5, 0x6e, 0x5d, 0x1d, 0xda, 0xf9, 0x24, 0xbd, 0xed, 0xc1, 0x57, 0x92, + 0xe1, 0xf4, 0x64, 0x8d, 0x2c, 0x8d, 0xbe, 0xf5, 0x6f, 0x5c, 0x4a, 0xa0, + 0x7a, 0xe1, 0xb6, 0xd5, 0xdc, 0x45, 0xa8, 0x2f, 0x5d, 0xc3, 0x5f, 0x8d, + 0xdc, 0xb1, 0x16, 0x34, 0x77, 0x26, 0x9d, 0x4d, 0x3b, 0xe8, 0xaa, 0x65, + 0x8a, 0xaf, 0x2b, 0x10, 0x93, 0x2e, 0x2a, 0x94, 0x9b, 0x3f, 0x43, 0xde, + 0x3a, 0xcb, 0x19, 0xcc, 0x90, 0x1f, 0x08, 0x43, 0xd5, 0x6a, 0xa8, 0xac, + 0x3a, 0x17, 0xcb, 0x14, 0x22, 0xd8, 0x5e, 0x8e, 0x14, 0xc0, 0x5e, 0x08, + 0x88, 0x1f, 0xa6, 0xc2, 0x77, 0x00, 0x24, 0xd7, 0x5d, 0x5c, 0x87, 0xf0, + 0x88, 0x59, 0x44, 0x33, 0xe8, 0x90, 0xa9, 0x2a, 0xd4, 0xf7, 0x2f, 0x1a, + 0x0f, 0x77, 0xed, 0x93, 0xfc, 0xa6, 0xbf, 0xda, 0x25, 0xb5, 0x9e, 0xb2, + 0x6d, 0xde, 0xaf, 0x4a, 0xf9, 0x39, 0x89, 0xee, 0xb7, 0xba, 0x95, 0xde, + 0xae, 0xb4, 0x42, 0xd9, 0x8e, 0x41, 0x07, 0x30, 0xe4, 0x61, 0x13, 0x08, + 0xba, 0x90, 0x86, 0x99, 0xdd, 0x5c, 0xea, 0x4b, 0x2c, 0xee, 0xa5, 0x64, + 0xd5, 0xee, 0xf5, 0x65, 0xbc, 0xea, 0x39, 0x51, 0x59, 0x3d, 0xf4, 0x46, + 0xeb, 0xf4, 0x4b, 0xf7, 0x5a, 0xbf, 0xbd, 0x77, 0xeb, 0x6e, 0x9d, 0x5d, + 0xd1, 0x9d, 0xce, 0xd7, 0x30, 0xc1, 0x58, 0xb9, 0xc6, 0xa4, 0x82, 0x47, + 0x08, 0xb9, 0x05, 0x83, 0xc2, 0x4e, 0xa1, 0x20, 0x58, 0xa2, 0x0a, 0x8d, + 0x20, 0xf1, 0x58, 0x7a, 0x0c, 0x34, 0xc0, 0x1e, 0xc5, 0x02, 0x95, 0x82, + 0xa1, 0xa1, 0x20, 0x64, 0xb8, 0xdb, 0x40, 0x72, 0x25, 0xdb, 0x1c, 0x55, + 0x6e, 0x70, 0x20, 0x31, 0xe9, 0x5d, 0x15, 0x4f, 0x45, 0xca, 0xf1, 0xca, + 0xdc, 0xa3, 0x5f, 0x4e, 0x28, 0x94, 0xc7, 0x7a, 0x79, 0x02, 0x8a, 0x7a, + 0xcf, 0x29, 0xca, 0x9b, 0x2b, 0x9b, 0x11, 0x68, 0x24, 0x94, 0x43, 0x9c, + 0xd7, 0x67, 0x3c, 0xd7, 0x45, 0xf9, 0x42, 0xce, 0x76, 0xaa, 0x99, 0x14, + 0x88, 0x7a, 0xb2, 0x76, 0x66, 0x19, 0x9b, 0xdd, 0x40, 0x6b, 0x7a, 0x89, + 0x32, 0x9c, 0xd9, 0x0c, 0x33, 0xdc, 0xc2, 0x65, 0x25, 0x4e, 0x45, 0xf9, + 0xb1, 0x0a, 0x74, 0xd4, 0x6e, 0x19, 0x23, 0xfd, 0x10, 0xaf, 0x57, 0xb3, + 0xc7, 0xb4, 0x57, 0xb0, 0x15, 0xaa, 0x6c, 0x30, 0x42, 0xb4, 0xee, 0xf6, + 0xa9, 0x53, 0xb9, 0x2a, 0x20, 0xb1, 0xaa, 0x6b, 0x15, 0xe5, 0xde, 0x77, + 0xaa, 0xf6, 0x5c, 0x35, 0x2d, 0xb1, 0xb1, 0x32, 0x3c, 0x85, 0x05, 0xd4, + 0x8b, 0x16, 0x95, 0x2a, 0xd8, 0xd9, 0xbc, 0x33, 0xc3, 0xca, 0x3a, 0xb3, + 0x31, 0x4b, 0x11, 0x8d, 0xca, 0x8e, 0x2e, 0x6a, 0x57, 0x17, 0xf3, 0x4e, + 0xcd, 0x4a, 0xc3, 0x56, 0xd9, 0x71, 0x23, 0x76, 0x6e, 0xae, 0x6b, 0x96, + 0x48, 0xd0, 0xe9, 0x37, 0x5d, 0xab, 0xa1, 0x32, 0x31, 0x48, 0xc2, 0xac, + 0x8c, 0xc3, 0x6a, 0xcb, 0x48, 0xbb, 0xa5, 0xb0, 0xd0, 0xc6, 0xb9, 0xb2, + 0xdb, 0xab, 0xab, 0x97, 0x31, 0x11, 0x66, 0xf4, 0x1e, 0x78, 0x32, 0x37, + 0x1e, 0x66, 0x52, 0x1e, 0xc6, 0x5c, 0xd5, 0x42, 0x9a, 0xf0, 0xdf, 0x16, + 0xc2, 0x70, 0x89, 0x27, 0xc3, 0xa1, 0x10, 0xe3, 0xb0, 0x5c, 0x96, 0x59, + 0x73, 0x76, 0xc6, 0x40, 0x1f, 0xb7, 0x40, 0xd5, 0x00, 0x24, 0x88, 0x89, + 0xe8, 0x37, 0xe5, 0x2d, 0x37, 0xc3, 0xcd, 0x68, 0x1a, 0x5f, 0x6a, 0x53, + 0x45, 0xa6, 0x79, 0xdf, 0x24, 0x90, 0x5d, 0x37, 0x23, 0x50, 0xb0, 0xc2, + 0x3b, 0x06, 0xd7, 0xa4, 0xe2, 0x8c, 0x2a, 0x09, 0xd8, 0x2b, 0x8c, 0x53, + 0x9e, 0x06, 0xb0, 0x91, 0x2c, 0xde, 0x6d, 0x42, 0xf2, 0xdd, 0x24, 0xd7, + 0x5f, 0xb3, 0x7e, 0x86, 0xde, 0xcf, 0xff, 0xff, 0xee, 0x09, 0x19, 0x70, + 0x90, 0x22, 0x80, 0x39, 0x32, 0x40, 0xc8, 0xc4, 0x89, 0x03, 0xe9, 0x88, + 0x2a, 0x00, 0x61, 0x4c, 0x01, 0xf2, 0x69, 0x1e, 0xf2, 0xa8, 0x00, 0xd7, + 0x51, 0x22, 0x94, 0xa4, 0xbd, 0x52, 0x92, 0x46, 0xa0, 0xd4, 0xd0, 0xd5, + 0xef, 0x59, 0x45, 0xbc, 0xbd, 0xa1, 0x09, 0x63, 0x58, 0xcc, 0x67, 0x44, + 0x90, 0xa2, 0xe4, 0x46, 0x0d, 0xc3, 0xa0, 0xd3, 0x70, 0x53, 0x90, 0x52, + 0xec, 0xc4, 0x4a, 0xd7, 0x06, 0x6a, 0x1c, 0x8a, 0x51, 0x00, 0xc4, 0x1d, + 0x23, 0x75, 0x3e, 0x33, 0xce, 0x82, 0xc4, 0x85, 0xa2, 0x82, 0x08, 0x29, + 0x47, 0x51, 0x3b, 0x07, 0x38, 0xb4, 0x3a, 0x1e, 0x23, 0x15, 0xf1, 0x3a, + 0x36, 0x54, 0x48, 0xd3, 0x78, 0xdc, 0x72, 0x2f, 0x28, 0x20, 0xe4, 0xa2, + 0x29, 0x2c, 0x90, 0x56, 0x9d, 0xe4, 0x84, 0xcb, 0x1f, 0x6a, 0x3b, 0x87, + 0x40, 0x73, 0x17, 0x92, 0xc4, 0x4d, 0x50, 0x92, 0x78, 0x5b, 0x14, 0x47, + 0xea, 0x3e, 0x21, 0xcc, 0x68, 0xaa, 0x22, 0x95, 0xea, 0xb7, 0x05, 0x8a, + 0x9e, 0x2e, 0x2d, 0xe6, 0x02, 0x88, 0x98, 0xa0, 0x90, 0x0f, 0x1a, 0x0b, + 0x69, 0x62, 0x2e, 0xa4, 0xe1, 0x0f, 0x52, 0xb2, 0xa6, 0xd2, 0xcc, 0x89, + 0x56, 0x14, 0x41, 0x6d, 0x26, 0x67, 0x03, 0xe3, 0xf5, 0xa0, 0xdf, 0x3b, + 0xa3, 0xa7, 0x15, 0x08, 0xb3, 0xed, 0xb4, 0xea, 0x57, 0x12, 0xc6, 0xe4, + 0x1b, 0x0a, 0x05, 0x48, 0xa0, 0x1c, 0xcf, 0x8f, 0xdc, 0x1a, 0xe8, 0x95, + 0x01, 0xca, 0xe2, 0x9b, 0x7a, 0x85, 0x47, 0x86, 0xf9, 0x85, 0x24, 0xdb, + 0x3f, 0x3b, 0xd4, 0xcd, 0xca, 0xd9, 0x1f, 0x27, 0x17, 0x2c, 0x68, 0xa4, + 0xf2, 0x86, 0x87, 0xbb, 0x12, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x08, 0x08, + 0xbb, 0x76, 0xbc, 0x31, 0xef, 0x7b, 0x70, 0x8b, 0x0e, 0xb7, 0xd8, 0x24, + 0xc8, 0x6e, 0x5e, 0xad, 0xda, 0xf2, 0x07, 0xbd, 0xed, 0xc1, 0xbb, 0x3a, + 0xa0, 0x64, 0x31, 0x89, 0xb9, 0x59, 0x59, 0x2a, 0x59, 0xbd, 0x94, 0xc1, + 0x59, 0x45, 0x95, 0x28, 0xd4, 0x8e, 0x07, 0xfa, 0x75, 0x52, 0x94, 0x66, + 0x3b, 0xce, 0xb2, 0xa1, 0x44, 0x5e, 0xcb, 0x6b, 0x00, 0x3f, 0xd4, 0x04, + 0xb1, 0xa0, 0xba, 0x8d, 0xf6, 0x31, 0xc4, 0x3e, 0x02, 0xd0, 0x5c, 0xc8, + 0x49, 0xf4, 0x2e, 0x6d, 0xe6, 0x08, 0x0b, 0x86, 0x91, 0x73, 0x23, 0x85, + 0xc9, 0x55, 0x05, 0x97, 0x00, 0x00, 0x03, 0x18, 0x1f, 0xd8, 0x94, 0xd9, + 0xd2, 0x56, 0xd6, 0xd5, 0xe5, 0x29, 0xb0, 0x81, 0x52, 0xa8, 0x59, 0x47, + 0x26, 0x44, 0x95, 0x6e, 0x82, 0xc1, 0x4c, 0xf3, 0xda, 0xef, 0x96, 0xf9, + 0x8d, 0x94, 0xf1, 0x4f, 0x72, 0x53, 0x41, 0xc6, 0x95, 0x9d, 0x1b, 0x6a, + 0x96, 0xb6, 0xbb, 0xb5, 0xa6, 0x97, 0x6d, 0x39, 0xd7, 0x6a, 0xa7, 0xa9, + 0xeb, 0xeb, 0x5e, 0x24, 0x67, 0x35, 0x35, 0x6b, 0x1a, 0xc2, 0x70, 0x44, + 0x52, 0x27, 0x53, 0xa6, 0xd7, 0xc6, 0xd3, 0xc3, 0x5d, 0x5d, 0xcd, 0x22, + 0xf5, 0x69, 0x11, 0xff, 0x11, 0x13, 0xd5, 0x5c, 0x2f, 0x28, 0x97, 0x7a, + 0x6c, 0xd6, 0xa8, 0xcf, 0xc4, 0xb2, 0xe7, 0x5d, 0x5c, 0x96, 0xdb, 0xa0, + 0xaa, 0xd0, 0xdb, 0x0f, 0x83, 0xa0, 0x5c, 0x38, 0xa1, 0x1c, 0x83, 0x84, + 0x71, 0xa0, 0xb8, 0x39, 0x63, 0xce, 0x12, 0x08, 0x01, 0x81, 0xa3, 0x85, + 0x9c, 0x58, 0x0f, 0x38, 0x28, 0x2c, 0xf6, 0x07, 0x88, 0x84, 0x54, 0xbe, + 0x55, 0x51, 0x72, 0x11, 0xf2, 0x68, 0x2f, 0x05, 0xd1, 0xd1, 0xfc, 0xab, + 0x5a, 0x45, 0x13, 0x93, 0xa9, 0x54, 0xc2, 0xc0, 0xfe, 0x72, 0x51, 0x08, + 0xe9, 0x6c, 0x88, 0x74, 0x30, 0x98, 0x8c, 0xe5, 0xf1, 0x0e, 0x42, 0x12, + 0x8a, 0xd3, 0x75, 0x91, 0x4a, 0xcd, 0x62, 0x6c, 0x8b, 0x78, 0x84, 0x22, + 0x10, 0xd3, 0x22, 0xa9, 0xb8, 0xa5, 0xce, 0x46, 0x84, 0x64, 0xab, 0x6c, + 0x6a, 0x46, 0x5b, 0x44, 0x7c, 0xe8, 0x97, 0xe0, 0xb8, 0x1e, 0x6f, 0x8b, + 0x9d, 0x0f, 0x75, 0x84, 0x7b, 0xf3, 0xae, 0x03, 0xb3, 0xf1, 0x08, 0x36, + 0xa1, 0xb8, 0xad, 0xba, 0xc3, 0x23, 0x6a, 0xa6, 0xf0, 0x4d, 0xd6, 0xc4, + 0xea, 0x18, 0xe6, 0xdf, 0x94, 0x7a, 0x52, 0xce, 0x2b, 0x09, 0x05, 0x32, + 0x99, 0xcd, 0x1d, 0x95, 0xc6, 0x89, 0x52, 0xc9, 0xbe, 0x9c, 0x3d, 0x23, + 0xed, 0x95, 0x3e, 0xc4, 0xf6, 0x01, 0xf8, 0x84, 0xaa, 0xdf, 0x35, 0x21, + 0x72, 0xa2, 0xf5, 0x15, 0xa1, 0x52, 0x87, 0xb2, 0x36, 0x3c, 0xdb, 0x79, + 0xff, 0x11, 0xf9, 0xd6, 0xe7, 0x89, 0x94, 0xb8, 0x6b, 0x96, 0x8b, 0xa5, + 0x4c, 0x33, 0xf5, 0xda, 0x17, 0x18, 0xe5, 0xdb, 0x3c, 0xa9, 0x88, 0x0a, + 0xd6, 0x47, 0xae, 0x06, 0x44, 0x07, 0x95, 0x2d, 0xce, 0x0c, 0xa5, 0xff, + 0x1e, 0xeb, 0xe8, 0xe4, 0x1b, 0x16, 0xa0, 0x59, 0xc5, 0x47, 0x59, 0xd8, + 0x5a, 0xe1, 0x33, 0x38, 0x40, 0x6c, 0x70, 0x75, 0x06, 0xc9, 0x75, 0x42, + 0x25, 0x81, 0xe2, 0x98, 0xe6, 0x2d, 0xee, 0xc9, 0x6a, 0xb1, 0x1a, 0xbe, + 0x7e, 0x12, 0x93, 0xac, 0x9b, 0x9b, 0x88, 0xa2, 0xc0, 0xa1, 0x0a, 0x1a, + 0xa4, 0x2b, 0x54, 0x04, 0x58, 0xb4, 0x02, 0x36, 0x01, 0x52, 0x1e, 0x4b, + 0x43, 0x76, 0x7c, 0xb7, 0x58, 0x01, 0x56, 0xea, 0xba, 0x90, 0xf7, 0xa6, + 0xc4, 0x28, 0x3b, 0x0f, 0x05, 0x82, 0x69, 0x4c, 0x62, 0x0c, 0x64, 0x25, + 0xc5, 0x93, 0xa8, 0xa7, 0xc9, 0x98, 0x8e, 0x91, 0xaf, 0xf2, 0xa9, 0x6e, + 0xac, 0xe1, 0x68, 0x22, 0x4a, 0x88, 0xf9, 0x3b, 0x18, 0xb4, 0x3b, 0xb9, + 0xa8, 0x72, 0x33, 0x8e, 0xed, 0xaa, 0xe4, 0x66, 0x5c, 0xb5, 0x05, 0x23, + 0x92, 0xc2, 0x8c, 0xc6, 0x57, 0x21, 0x16, 0x56, 0x75, 0x62, 0xe4, 0xa6, + 0xfa, 0xbd, 0x58, 0xde, 0xfb, 0x5a, 0xb6, 0xeb, 0xbf, 0x46, 0xd5, 0x35, + 0xef, 0xa7, 0xf2, 0xfb, 0xe7, 0x27, 0xb3, 0x80, 0x48, 0x29, 0xc3, 0x1c, + 0xa8, 0x15, 0x47, 0x04, 0x16, 0x15, 0x45, 0xb9, 0xc2, 0xa8, 0x60, 0x6a, + 0x60, 0x42, 0xc8, 0x38, 0x41, 0x41, 0x1a, 0x4a, 0x00, 0x42, 0xc0, 0x01, + 0xe5, 0x3f, 0x55, 0xa7, 0x46, 0x94, 0xed, 0xc2, 0xe4, 0xa6, 0x70, 0x52, + 0x2b, 0x9d, 0xe3, 0xbb, 0x62, 0x60, 0x7e, 0xc0, 0xa6, 0x55, 0xb1, 0x29, + 0xe1, 0x28, 0xdf, 0xd8, 0xc1, 0x67, 0x3d, 0x90, 0x84, 0xe3, 0x6a, 0xac, + 0xbd, 0x24, 0xd1, 0x2c, 0xe5, 0xaa, 0x89, 0xab, 0x0a, 0xa3, 0xb1, 0x72, + 0xcd, 0x01, 0x85, 0x14, 0x53, 0x98, 0x85, 0xb8, 0xbe, 0x12, 0x34, 0xec, + 0xcc, 0x4b, 0xa5, 0x19, 0xc9, 0x94, 0xed, 0xb8, 0x3b, 0x38, 0x06, 0x2d, + 0x0e, 0xd4, 0x97, 0x45, 0xe5, 0x1a, 0x99, 0x96, 0xc6, 0x65, 0x35, 0xae, + 0x43, 0xb1, 0xf8, 0xdc, 0xa2, 0x6e, 0x24, 0xed, 0xca, 0xae, 0x32, 0x86, + 0xfb, 0x38, 0xd4, 0xdc, 0x26, 0x57, 0x0e, 0xcd, 0x65, 0x31, 0x15, 0xb8, + 0xea, 0xc6, 0x5b, 0x66, 0x5f, 0x19, 0x7d, 0x77, 0x62, 0x0f, 0x80, 0xa5, + 0x91, 0xe9, 0x7c, 0x5a, 0x31, 0x21, 0xad, 0x7a, 0x43, 0x8c, 0x46, 0xb5, + 0xcd, 0xda, 0xb1, 0x3b, 0x2a, 0x81, 0x23, 0xcf, 0xf5, 0xce, 0xba, 0x16, + 0xac, 0x38, 0x8e, 0x6c, 0x92, 0x76, 0x8a, 0x59, 0x2e, 0xf9, 0xfe, 0xb4, + 0xb8, 0x02, 0x99, 0xc6, 0x91, 0xcc, 0x46, 0xed, 0xd6, 0xdc, 0xbe, 0xec, + 0x67, 0x29, 0x44, 0x18, 0xec, 0xff, 0xfb, 0xd4, 0x60, 0x58, 0x89, 0x08, + 0x0b, 0x77, 0x3d, 0x31, 0xef, 0xc3, 0x70, 0x63, 0xe6, 0xe8, 0x7d, 0x1c, + 0x43, 0x5d, 0x1f, 0x81, 0xd8, 0xf2, 0x07, 0xbd, 0xed, 0xc1, 0xbd, 0x39, + 0xe0, 0xe8, 0x31, 0x8d, 0xb9, 0xce, 0x41, 0x10, 0x0d, 0x3c, 0x38, 0xf2, + 0x76, 0x49, 0x01, 0xc5, 0xe4, 0xcf, 0xf5, 0xfa, 0xae, 0xad, 0x3c, 0x72, + 0x5b, 0x66, 0x23, 0x25, 0x95, 0x59, 0xab, 0x5e, 0xf4, 0x83, 0x5d, 0x87, + 0x63, 0x92, 0xfb, 0x14, 0xd1, 0x8f, 0xa7, 0x82, 0xac, 0x44, 0x5d, 0xca, + 0x78, 0xc3, 0xee, 0xf9, 0xca, 0xa3, 0xec, 0xfe, 0x0f, 0xe3, 0x26, 0x86, + 0x99, 0x94, 0x00, 0x9e, 0xd3, 0x11, 0xda, 0x76, 0x38, 0x91, 0x4e, 0x40, + 0x54, 0x0c, 0x3c, 0xb7, 0xa0, 0x92, 0xac, 0x14, 0x07, 0x1b, 0xa7, 0xbf, + 0x7b, 0xa0, 0xb5, 0x5c, 0xb5, 0xe9, 0x5d, 0xad, 0x12, 0x35, 0x8e, 0x0d, + 0x5d, 0x43, 0x41, 0x4b, 0x62, 0x5c, 0x11, 0x0a, 0x29, 0x96, 0xee, 0x38, + 0x88, 0xf6, 0xc8, 0x8a, 0x18, 0x18, 0x42, 0x4e, 0xc2, 0x3c, 0x8a, 0x4e, + 0xf7, 0x32, 0x51, 0xd6, 0x61, 0x69, 0x0c, 0x46, 0x05, 0x00, 0x01, 0x0b, + 0x12, 0x58, 0x4a, 0xda, 0x92, 0xb2, 0xca, 0x5b, 0xac, 0x25, 0xf7, 0x04, + 0x6b, 0xc1, 0x54, 0x11, 0x74, 0x3b, 0x38, 0x5c, 0xc4, 0x60, 0xba, 0x00, + 0xad, 0x13, 0xa4, 0xb2, 0xc6, 0x85, 0x24, 0x58, 0xb9, 0x55, 0xb8, 0xf3, + 0x85, 0xd6, 0xef, 0xff, 0xd3, 0xdc, 0x55, 0x40, 0x03, 0x86, 0x08, 0xb9, + 0xa7, 0x0d, 0x31, 0xea, 0x62, 0x35, 0x97, 0x94, 0x4c, 0xb1, 0x29, 0x43, + 0xa4, 0x7f, 0x18, 0x25, 0x8c, 0xe3, 0x58, 0x54, 0x3e, 0x73, 0x3e, 0x98, + 0x9c, 0x36, 0x72, 0x29, 0x0a, 0xd7, 0xc5, 0xb0, 0xc2, 0x53, 0xa4, 0x99, + 0x4e, 0x7a, 0x97, 0x53, 0xc1, 0x56, 0x70, 0xb7, 0xbf, 0x5e, 0x47, 0x18, + 0x0d, 0x5d, 0xb8, 0xe9, 0x2f, 0xa6, 0x5a, 0x1c, 0xe0, 0xbc, 0x86, 0xc1, + 0x6f, 0x62, 0x23, 0x5b, 0x7e, 0xab, 0x75, 0x14, 0xce, 0x6c, 0x71, 0x54, + 0x96, 0x3b, 0xa9, 0x95, 0xe7, 0x1c, 0x35, 0x3a, 0x7e, 0xeb, 0x85, 0x2a, + 0xa9, 0xe1, 0xc6, 0x8c, 0x66, 0x4a, 0xa1, 0x92, 0x2e, 0xcd, 0xe6, 0x35, + 0xb7, 0xed, 0x48, 0x6a, 0xa1, 0xae, 0x1a, 0xb1, 0x2e, 0xda, 0xee, 0x2a, + 0x29, 0x0b, 0x72, 0x69, 0x84, 0xa5, 0x5d, 0xb8, 0xac, 0x36, 0x23, 0xdd, + 0x21, 0x3a, 0x46, 0x9b, 0xa7, 0x5b, 0x52, 0x9f, 0x2a, 0x66, 0x34, 0x29, + 0x24, 0x8b, 0x46, 0x2d, 0x2b, 0x59, 0xd6, 0x2c, 0x8b, 0x72, 0x6c, 0x52, + 0x34, 0xc2, 0x42, 0xa8, 0x90, 0x89, 0x23, 0x12, 0x56, 0xe8, 0x5a, 0x31, + 0x6d, 0x76, 0xa6, 0xc2, 0x2c, 0xbf, 0xad, 0xa1, 0x95, 0x82, 0x77, 0xa0, + 0xb4, 0x9d, 0x4a, 0xac, 0x2b, 0xdb, 0x95, 0x47, 0xdb, 0x34, 0x8a, 0x1d, + 0xaa, 0x9e, 0xb3, 0xc2, 0x82, 0xf1, 0xc9, 0x3a, 0x87, 0x41, 0x92, 0x13, + 0x12, 0x1c, 0xce, 0xa7, 0x52, 0xa4, 0x0f, 0xd5, 0x6d, 0xd1, 0xeb, 0xb9, + 0xa3, 0xa7, 0x21, 0xb8, 0x2b, 0x20, 0xab, 0x92, 0xa7, 0x6a, 0x7d, 0x16, + 0xba, 0x56, 0x1d, 0x6a, 0x84, 0x72, 0x54, 0xe5, 0x50, 0xbc, 0x59, 0x18, + 0xc6, 0x79, 0x33, 0x2b, 0x84, 0xd5, 0x4c, 0x4f, 0xc7, 0xa9, 0xf4, 0x10, + 0x2a, 0x21, 0x28, 0xa0, 0x6e, 0x8c, 0x31, 0x2c, 0x3a, 0x84, 0xf5, 0x0a, + 0x23, 0xc0, 0x55, 0x11, 0xe9, 0x40, 0x6a, 0xff, 0x4d, 0xc9, 0x1a, 0x43, + 0xdd, 0xda, 0x0a, 0xc5, 0x20, 0x71, 0xd8, 0x1e, 0x26, 0x07, 0x1f, 0xa4, + 0xa5, 0x01, 0x06, 0x53, 0x73, 0x4d, 0x3a, 0xd9, 0xca, 0x81, 0x3c, 0xd8, + 0x8f, 0x47, 0x4c, 0x39, 0x7e, 0xac, 0x09, 0x24, 0x39, 0x44, 0x8a, 0x2a, + 0x29, 0xd4, 0x9d, 0x85, 0x91, 0x62, 0x77, 0x7a, 0x13, 0xae, 0xae, 0xeb, + 0xf1, 0x10, 0x8a, 0x6b, 0xc6, 0x4d, 0x48, 0xd5, 0xa7, 0xe4, 0x5a, 0xac, + 0xf8, 0x5f, 0xa6, 0xe5, 0xc2, 0x27, 0xba, 0xcf, 0x4a, 0x73, 0xfb, 0x49, + 0x32, 0x25, 0xf2, 0x9f, 0xff, 0xff, 0xf7, 0xff, 0x2f, 0xff, 0xa4, 0x57, + 0xcf, 0xb6, 0x99, 0x31, 0xbd, 0x7a, 0x21, 0x81, 0x9d, 0x06, 0x20, 0xca, + 0x08, 0x1d, 0xa2, 0x89, 0x2d, 0x82, 0xb2, 0x30, 0x9a, 0x20, 0x3e, 0x49, + 0x01, 0x92, 0xe4, 0x49, 0x4c, 0x32, 0xf6, 0x5f, 0x8e, 0xb5, 0x83, 0xb5, + 0x44, 0x86, 0xae, 0xcf, 0x84, 0xe2, 0x79, 0xfc, 0x33, 0xf1, 0x80, 0x96, + 0xb3, 0xb0, 0x20, 0x4b, 0xe1, 0xba, 0xa1, 0x6b, 0x57, 0x98, 0x2c, 0x70, + 0x5e, 0xa8, 0xd5, 0x0e, 0x2c, 0xaa, 0x42, 0xc9, 0x33, 0x43, 0xbe, 0x66, + 0x53, 0xf8, 0x96, 0xc4, 0x49, 0xa3, 0x28, 0xa4, 0x92, 0x01, 0xfe, 0x99, + 0x3c, 0x58, 0x23, 0x45, 0x55, 0x26, 0x5a, 0xa3, 0x93, 0x34, 0x81, 0x86, + 0x8b, 0x72, 0x72, 0x65, 0x79, 0x08, 0xe9, 0xb5, 0xd6, 0x98, 0x52, 0x8d, + 0xf2, 0x66, 0x1c, 0x15, 0x56, 0x54, 0x8a, 0xc8, 0x10, 0x21, 0xc7, 0x49, + 0x3c, 0x76, 0xa5, 0x62, 0xca, 0x8d, 0x52, 0xf9, 0xea, 0x75, 0xb6, 0x03, + 0x13, 0x63, 0x7a, 0xa5, 0x54, 0xec, 0xec, 0x72, 0x69, 0x56, 0xca, 0xab, + 0x65, 0xba, 0x3a, 0x22, 0x13, 0x06, 0x67, 0x70, 0x58, 0x28, 0x84, 0x28, + 0xe0, 0x36, 0x2c, 0x29, 0x5d, 0x39, 0x9c, 0x8b, 0xed, 0xef, 0x33, 0x3a, + 0xd9, 0xf8, 0xa9, 0x6f, 0x7d, 0x09, 0xa9, 0x45, 0x15, 0xcd, 0x4b, 0x96, + 0x42, 0xe6, 0xdb, 0x19, 0x4c, 0x8a, 0x6e, 0x56, 0xb7, 0x30, 0xed, 0x9d, + 0x12, 0xd6, 0xb0, 0xc1, 0x55, 0x1a, 0x49, 0x3d, 0x2c, 0x59, 0x9e, 0xa1, + 0xe8, 0xe7, 0xf0, 0x14, 0x2e, 0xff, 0xfb, 0xd4, 0x60, 0x5e, 0x08, 0x07, + 0xab, 0x76, 0xbd, 0x09, 0xef, 0x7b, 0x70, 0x5e, 0x45, 0xf8, 0x8d, 0x19, + 0x23, 0x4d, 0x25, 0x79, 0xd8, 0xec, 0xa7, 0xbf, 0x0d, 0xca, 0x17, 0xba, + 0xdf, 0xe4, 0x61, 0xa1, 0xb8, 0x96, 0xec, 0xac, 0x63, 0x78, 0xbc, 0xf9, + 0x85, 0x8f, 0x4f, 0x9c, 0x94, 0x18, 0x5c, 0xa4, 0xf0, 0xa0, 0x43, 0x72, + 0x87, 0x9c, 0x87, 0xb3, 0x7a, 0x9d, 0xb9, 0x20, 0x9d, 0x3f, 0xdf, 0x90, + 0x34, 0x20, 0xb8, 0xa7, 0x11, 0x8d, 0xe7, 0x2a, 0xa8, 0xc2, 0x5a, 0x2a, + 0xc6, 0xb9, 0xfe, 0x48, 0x05, 0xc5, 0xcc, 0x8f, 0x05, 0xe8, 0x32, 0x46, + 0x72, 0x9b, 0x21, 0x49, 0x6e, 0x96, 0x6d, 0x6c, 0x95, 0x12, 0x3f, 0xf8, + 0x3c, 0x9c, 0x07, 0x59, 0x23, 0x50, 0x17, 0x55, 0x0c, 0xf6, 0xe5, 0x1a, + 0xaf, 0x1e, 0x93, 0x76, 0xce, 0x62, 0x75, 0x89, 0xa8, 0x60, 0x97, 0x35, + 0x68, 0x69, 0x4b, 0x4d, 0x7b, 0xb9, 0x65, 0x73, 0x6d, 0xc8, 0x5f, 0x8d, + 0x90, 0x65, 0x06, 0xd8, 0xcc, 0x82, 0x43, 0x2b, 0x20, 0x94, 0x16, 0x06, + 0x03, 0x9f, 0x8a, 0x5a, 0x50, 0x44, 0x55, 0x73, 0x07, 0x05, 0x69, 0x70, + 0x1a, 0x21, 0x6b, 0x51, 0x96, 0xe8, 0x6e, 0xc6, 0x87, 0x9e, 0x11, 0x31, + 0xff, 0xff, 0xba, 0x34, 0xa3, 0x88, 0x49, 0xb4, 0x6a, 0xd8, 0x15, 0xa4, + 0x60, 0x69, 0x0f, 0x2a, 0x98, 0xa0, 0x02, 0x41, 0x10, 0xca, 0x09, 0xb2, + 0x14, 0x4a, 0x0a, 0x32, 0xf6, 0x75, 0xa1, 0x84, 0x1c, 0xb6, 0x98, 0x88, + 0x83, 0xc4, 0xb4, 0x45, 0xa9, 0x55, 0xaa, 0xe5, 0x11, 0xc1, 0x62, 0x90, + 0xc2, 0x60, 0x17, 0x13, 0x90, 0x93, 0x2e, 0xd0, 0xc0, 0xb3, 0x14, 0xd1, + 0x5f, 0x0d, 0xf4, 0x3d, 0x52, 0x55, 0x22, 0x4f, 0x8a, 0x11, 0x90, 0xb6, + 0x29, 0x1c, 0x0b, 0x61, 0xba, 0xa3, 0x1a, 0x61, 0x88, 0x9c, 0x35, 0x4d, + 0xf2, 0x06, 0xa6, 0x03, 0x39, 0xcc, 0xaf, 0xb8, 0xc9, 0x87, 0xd8, 0x7b, + 0x72, 0x77, 0xa0, 0xf8, 0x39, 0xab, 0x40, 0x8b, 0xe2, 0x48, 0xb6, 0x5f, + 0x38, 0xd3, 0xb6, 0xca, 0xe1, 0x49, 0x86, 0xe4, 0x2a, 0xa3, 0x24, 0x4d, + 0x48, 0x2d, 0x6a, 0xa5, 0x92, 0x65, 0xc2, 0x99, 0x55, 0x1b, 0xa4, 0xd2, + 0x9e, 0x79, 0x23, 0x38, 0x72, 0xe1, 0x10, 0xda, 0xd0, 0x64, 0x4c, 0x16, + 0x9a, 0x1d, 0xa6, 0xa9, 0x0e, 0x2d, 0x4b, 0xd2, 0xf7, 0xc9, 0xb1, 0xbb, + 0xb1, 0xca, 0x47, 0xda, 0x0a, 0x98, 0x67, 0x50, 0x96, 0x50, 0xa2, 0xf4, + 0x6d, 0x05, 0xde, 0x69, 0x75, 0xda, 0xe4, 0x36, 0xcd, 0xa1, 0x6d, 0xbc, + 0xd3, 0xfa, 0xef, 0xab, 0xe7, 0xd5, 0xaf, 0xbe, 0x4d, 0x99, 0x7c, 0x2e, + 0xb6, 0x78, 0xe3, 0xb4, 0x28, 0x6d, 0x55, 0x5a, 0xf4, 0x0b, 0x0c, 0xc0, + 0x11, 0x99, 0x3b, 0xe7, 0x05, 0xbe, 0xd6, 0x58, 0xe4, 0x33, 0x62, 0x0f, + 0x81, 0xd9, 0x7b, 0xda, 0xca, 0x9f, 0xb6, 0xbe, 0xf8, 0x3b, 0xab, 0xf6, + 0xbb, 0xbe, 0xe0, 0xb2, 0xc7, 0x6e, 0x29, 0x49, 0x8d, 0x0b, 0x66, 0x85, + 0x42, 0xe9, 0x56, 0xd5, 0xa8, 0x62, 0x2b, 0xd8, 0x61, 0xd2, 0x81, 0x1e, + 0x88, 0xf3, 0xd9, 0x2f, 0x81, 0x99, 0xdb, 0x4d, 0x67, 0x12, 0xcc, 0x5e, + 0x16, 0xfd, 0xb6, 0x6b, 0x8f, 0x6a, 0x97, 0xc9, 0x1f, 0x94, 0xc9, 0x4e, + 0x27, 0x5d, 0x69, 0xc0, 0x6a, 0x72, 0xa5, 0x8a, 0x0f, 0x62, 0x05, 0x55, + 0x25, 0x01, 0x46, 0xf1, 0x62, 0x83, 0x4e, 0xd4, 0xcb, 0xa9, 0x18, 0x07, + 0x69, 0x01, 0x64, 0x26, 0x52, 0x68, 0xce, 0x6b, 0x19, 0x70, 0xde, 0xf1, + 0xc0, 0x00, 0x0d, 0x55, 0x32, 0x07, 0xe5, 0x9e, 0xac, 0x68, 0x10, 0x78, + 0x6c, 0xff, 0xe6, 0x42, 0xce, 0x8a, 0x8c, 0x0c, 0x40, 0x6a, 0x4c, 0x0c, + 0x78, 0x38, 0x47, 0x0d, 0x30, 0x43, 0x13, 0x07, 0xb8, 0xf1, 0x05, 0xee, + 0x32, 0x99, 0x38, 0x2d, 0x21, 0x9b, 0xbd, 0x52, 0x2c, 0xfd, 0xdb, 0xc2, + 0x4c, 0x2d, 0x93, 0x2c, 0x91, 0x35, 0x3c, 0x67, 0xdb, 0xc8, 0xdd, 0xde, + 0xee, 0xe6, 0x48, 0x48, 0xea, 0x2a, 0x3a, 0xa8, 0x9e, 0xee, 0x51, 0xba, + 0x9b, 0x8f, 0xe3, 0xeb, 0xff, 0x9e, 0x78, 0xae, 0x7b, 0x97, 0xaf, 0x99, + 0xbe, 0xbd, 0xfe, 0xed, 0xa5, 0x9b, 0xe2, 0xfe, 0xf5, 0x86, 0x54, 0xa6, + 0xab, 0x45, 0x86, 0x41, 0x91, 0x32, 0x70, 0xd8, 0x1e, 0xae, 0xe3, 0x1a, + 0x90, 0x60, 0xa8, 0x36, 0x06, 0xc2, 0x23, 0x17, 0x8a, 0x08, 0xc2, 0xc2, + 0x21, 0x62, 0x38, 0x3e, 0x48, 0x7c, 0x23, 0x1a, 0x1e, 0x9e, 0x48, 0x81, + 0x01, 0x52, 0xaa, 0x00, 0x29, 0x00, 0x01, 0xe5, 0x82, 0x9e, 0x63, 0x5c, + 0x2b, 0x8c, 0x94, 0xe9, 0xda, 0x52, 0x1f, 0xcb, 0x0c, 0xa9, 0x78, 0xcd, + 0x08, 0x7d, 0x54, 0xe8, 0x6a, 0x9a, 0xaa, 0xb2, 0x5a, 0xa5, 0x53, 0x98, + 0x4a, 0xd3, 0xa4, 0xe5, 0x65, 0x95, 0x48, 0x83, 0x67, 0x28, 0x09, 0x82, + 0x55, 0xd9, 0xf8, 0x8f, 0x72, 0x30, 0xd4, 0x69, 0xa3, 0x7d, 0x10, 0x71, + 0xa2, 0x57, 0x09, 0x95, 0x05, 0x51, 0xc8, 0x93, 0x8e, 0x7b, 0xb5, 0x21, + 0x89, 0x06, 0xfb, 0xb2, 0xd9, 0x76, 0xe5, 0x94, 0x49, 0xba, 0x76, 0x21, + 0xaf, 0xde, 0xaa, 0x1f, 0x43, 0x4f, 0xa5, 0xad, 0xde, 0x2a, 0xaa, 0xe6, + 0xa6, 0x5b, 0x74, 0x90, 0xba, 0x99, 0x91, 0x99, 0x5c, 0xcc, 0xe2, 0xe4, + 0xcc, 0x87, 0x32, 0x2a, 0x4e, 0x65, 0xc5, 0x95, 0x28, 0x5b, 0xc8, 0xd1, + 0x5d, 0x38, 0x2c, 0x32, 0xab, 0xd4, 0x8c, 0xac, 0x10, 0x55, 0xf5, 0x89, + 0x05, 0x1c, 0xa4, 0x54, 0xb2, 0x5a, 0x02, 0xe6, 0x22, 0x86, 0x67, 0x07, + 0x27, 0x17, 0x5a, 0x66, 0x50, 0xff, 0xfb, 0xd4, 0x60, 0x49, 0x08, 0x87, + 0xb5, 0x76, 0xbd, 0x31, 0xef, 0x7b, 0x70, 0x75, 0xae, 0x48, 0x2d, 0x25, + 0x02, 0x6e, 0x5d, 0x31, 0xda, 0xfb, 0x24, 0xbd, 0xed, 0xc1, 0xc7, 0x38, + 0xe0, 0x64, 0x61, 0x95, 0xb9, 0xac, 0x37, 0xc1, 0x78, 0xa0, 0x53, 0x9b, + 0xee, 0x15, 0xab, 0x02, 0x46, 0x2a, 0xdc, 0xac, 0x4c, 0xd0, 0x95, 0x4f, + 0x57, 0x53, 0x2c, 0xbb, 0x56, 0x44, 0x92, 0xae, 0x66, 0x02, 0xbd, 0x33, + 0x79, 0x62, 0xbf, 0x66, 0x5d, 0x36, 0xd9, 0x5e, 0xe6, 0xde, 0xd7, 0x88, + 0x0e, 0x31, 0x60, 0x3b, 0x82, 0xd7, 0x31, 0xf2, 0x96, 0x9a, 0x59, 0xd8, + 0x9f, 0x29, 0x95, 0x6f, 0x89, 0xea, 0x59, 0x13, 0x1d, 0x8d, 0x2a, 0x98, + 0x2f, 0xa7, 0x12, 0xe8, 0x96, 0x97, 0x39, 0x4d, 0x15, 0x49, 0x66, 0xe4, + 0x2e, 0x66, 0x28, 0x47, 0x45, 0xf9, 0x44, 0xf9, 0x48, 0x30, 0x81, 0x66, + 0xad, 0x26, 0xa5, 0x80, 0x9c, 0x86, 0x11, 0x6d, 0x66, 0xa0, 0x01, 0x24, + 0x8b, 0x8d, 0xf8, 0xdb, 0x48, 0x8f, 0xe2, 0xf8, 0x76, 0x44, 0xa7, 0x13, + 0x49, 0x52, 0x24, 0xed, 0x57, 0x30, 0xa7, 0x30, 0x82, 0x77, 0x6a, 0x4c, + 0x9e, 0x12, 0x28, 0x28, 0x51, 0x21, 0xc8, 0x13, 0x10, 0x45, 0x01, 0xe3, + 0xc7, 0x87, 0x87, 0xec, 0xba, 0xf6, 0xeb, 0x13, 0x3a, 0x55, 0xaa, 0x95, + 0xc8, 0xf7, 0x24, 0xa7, 0x57, 0x62, 0x14, 0xd3, 0x98, 0x28, 0xe4, 0x47, + 0x2b, 0x54, 0x82, 0xc8, 0xa8, 0x95, 0x3a, 0xde, 0x8e, 0xb5, 0xda, 0xce, + 0xfb, 0xbe, 0xa8, 0xcd, 0x91, 0x36, 0x62, 0xe9, 0x59, 0xba, 0xb3, 0x3d, + 0x1b, 0x63, 0xd4, 0xf7, 0xff, 0xaf, 0xf7, 0x66, 0xfe, 0x5e, 0x63, 0x3a, + 0x91, 0xe6, 0x19, 0xca, 0x8e, 0x57, 0x63, 0x21, 0x16, 0x26, 0x0e, 0x29, + 0x11, 0xc8, 0x51, 0x60, 0x60, 0x80, 0xa8, 0x56, 0xab, 0xef, 0x90, 0xf6, + 0xa0, 0x69, 0x91, 0x2b, 0x42, 0x93, 0x68, 0xc2, 0x78, 0xb2, 0x84, 0x8d, + 0x30, 0xdc, 0x58, 0x9f, 0x9f, 0xe7, 0x5d, 0x14, 0x2a, 0x14, 0x6a, 0xb8, + 0xe8, 0x3d, 0xd5, 0x99, 0x32, 0x52, 0xca, 0xa3, 0xb0, 0xcb, 0x3f, 0xdf, + 0xa0, 0x4b, 0xb0, 0xb3, 0xc7, 0x30, 0xd1, 0xc9, 0x62, 0x34, 0xca, 0x70, + 0x2b, 0x1c, 0x95, 0x50, 0xd4, 0x6d, 0x31, 0x90, 0xe5, 0x1b, 0xc3, 0x9c, + 0xfb, 0x7f, 0x01, 0x5c, 0x66, 0x9c, 0x4d, 0xaa, 0x42, 0xec, 0xd2, 0xa2, + 0x4f, 0xa7, 0x52, 0x2c, 0x64, 0xec, 0xc7, 0x84, 0x79, 0x3f, 0x4f, 0xa1, + 0xac, 0x08, 0x96, 0xb7, 0xec, 0x02, 0xea, 0x74, 0x31, 0x32, 0x9f, 0xca, + 0xe4, 0x51, 0xd6, 0xa2, 0x56, 0x31, 0x21, 0xac, 0x9d, 0x58, 0xc8, 0xfd, + 0xce, 0x78, 0x2d, 0xca, 0xd3, 0xad, 0xda, 0x91, 0xe1, 0xcc, 0x85, 0x2b, + 0x94, 0x37, 0xb4, 0x88, 0x62, 0x59, 0xfc, 0xd1, 0xb0, 0xcc, 0xfd, 0xeb, + 0xa8, 0xd7, 0x54, 0x34, 0x31, 0xb1, 0xbd, 0x7b, 0x05, 0x8b, 0x16, 0x7a, + 0xa9, 0x78, 0xe0, 0xfd, 0xe5, 0xe3, 0xe7, 0xce, 0xe2, 0xdb, 0xa6, 0xe7, + 0x91, 0x17, 0x11, 0x56, 0x9b, 0x22, 0xbc, 0xcc, 0x18, 0x5d, 0xc5, 0xa6, + 0xd1, 0xb1, 0x34, 0x64, 0x3a, 0x0c, 0xfb, 0xb5, 0x1b, 0x1b, 0x6e, 0xe5, + 0x12, 0x04, 0x59, 0x1c, 0x21, 0xd6, 0x4f, 0x67, 0x94, 0xaa, 0x81, 0xdb, + 0x24, 0x16, 0x08, 0x54, 0x79, 0x67, 0x8d, 0xcb, 0x4e, 0x48, 0xbc, 0x36, + 0xd5, 0x8f, 0x9f, 0xad, 0x09, 0xb5, 0x62, 0x65, 0x5e, 0x97, 0x2d, 0xd0, + 0x8e, 0xb2, 0x72, 0x80, 0x3d, 0xd3, 0x07, 0x3a, 0xe0, 0x93, 0x9f, 0xf3, + 0x6d, 0x5e, 0xad, 0xf9, 0x4f, 0xe7, 0x51, 0x30, 0x02, 0x69, 0x31, 0xc4, + 0x4f, 0xda, 0xba, 0x08, 0x8e, 0x8e, 0x14, 0x04, 0x83, 0xee, 0xc7, 0x14, + 0xcd, 0xc5, 0x17, 0xa2, 0x00, 0x9a, 0x18, 0x20, 0x52, 0xd5, 0x60, 0xcd, + 0xf4, 0xa1, 0xd5, 0x22, 0xcc, 0x6b, 0xb3, 0x0d, 0x76, 0x28, 0xbb, 0xd2, + 0x62, 0x1f, 0x57, 0x33, 0x25, 0x5f, 0x28, 0xd3, 0x18, 0x95, 0x3a, 0x64, + 0x67, 0xdd, 0x1d, 0xf6, 0x44, 0x56, 0xd3, 0x76, 0x91, 0x57, 0x47, 0x2d, + 0x2e, 0xaf, 0xec, 0x73, 0xec, 0xac, 0xa5, 0xd5, 0x7a, 0x25, 0x6f, 0xe9, + 0xbb, 0xaf, 0xa5, 0x91, 0x9d, 0x3b, 0xa7, 0x45, 0x51, 0x02, 0x39, 0x43, + 0xb7, 0x38, 0x08, 0x57, 0x31, 0x00, 0x8e, 0x83, 0x83, 0xc2, 0xa0, 0x87, + 0x1a, 0x26, 0x14, 0xb3, 0x9f, 0x1a, 0x7a, 0x00, 0x42, 0x04, 0xc9, 0x55, + 0xe1, 0x71, 0x2c, 0xe5, 0xe4, 0x86, 0x25, 0x92, 0x90, 0x3a, 0x8e, 0xa8, + 0x7b, 0xbb, 0x65, 0xa6, 0xce, 0x27, 0x6a, 0x91, 0x65, 0x3e, 0xf2, 0x1c, + 0xe4, 0x99, 0x08, 0x55, 0xae, 0x52, 0x4d, 0x47, 0x89, 0xec, 0x8d, 0x38, + 0x17, 0x87, 0x0b, 0x2a, 0x9a, 0x76, 0x48, 0xce, 0x27, 0x0b, 0x7a, 0xb9, + 0x60, 0xe8, 0x92, 0x14, 0x04, 0x35, 0x1c, 0xa6, 0x6e, 0x56, 0xa2, 0x90, + 0xde, 0xc3, 0xb9, 0x7c, 0xcd, 0x78, 0xec, 0x7e, 0xbd, 0x04, 0x6e, 0x07, + 0x9a, 0x81, 0x27, 0xaa, 0xc1, 0xba, 0xe5, 0x24, 0xe4, 0x72, 0xa5, 0x59, + 0x24, 0xd4, 0xdd, 0x8c, 0x6c, 0x6a, 0x95, 0xfc, 0x8d, 0xd7, 0xc7, 0xb2, + 0x2b, 0x10, 0x35, 0xf8, 0xdc, 0x26, 0xcd, 0x87, 0xd2, 0x55, 0x23, 0x8d, + 0x4b, 0xa2, 0x10, 0xdd, 0x88, 0xbc, 0xaf, 0x1a, 0x59, 0x7c, 0x37, 0xc8, + 0x1a, 0xd5, 0x4a, 0x5b, 0x51, 0x4a, 0x3e, 0x4c, 0xc0, 0xef, 0xb3, 0xf9, + 0x84, 0x5e, 0x41, 0x4f, 0x1d, 0x9a, 0xad, 0x1d, 0x8c, 0x43, 0x97, 0xa2, + 0x2d, 0x1a, 0xa4, 0xde, 0xe6, 0xa5, 0x73, 0xd1, 0x2c, 0xbe, 0x96, 0x1b, + 0xd4, 0xbe, 0x6e, 0x8d, 0xff, 0xff, 0xfb, 0xd4, 0x60, 0x53, 0x0d, 0x07, + 0xc9, 0x76, 0xbd, 0x29, 0x8f, 0xc3, 0x70, 0x62, 0xc5, 0xb8, 0x7d, 0x24, + 0xc3, 0x4d, 0x1f, 0x91, 0xd8, 0xf4, 0x47, 0xbf, 0x0d, 0xc9, 0xc8, 0x39, + 0xa0, 0xa8, 0x51, 0x8d, 0xb9, 0x89, 0x67, 0x10, 0xdc, 0x3d, 0x56, 0xcc, + 0x52, 0x67, 0x09, 0x0c, 0x3d, 0x49, 0x72, 0x7a, 0x62, 0x37, 0x4f, 0x29, + 0xc7, 0x08, 0xd4, 0x86, 0x0c, 0x9f, 0x96, 0xcb, 0x2c, 0x7c, 0x33, 0x1b, + 0xb5, 0x10, 0x95, 0x76, 0x9e, 0xa4, 0x55, 0xe0, 0x9b, 0x74, 0xe3, 0xad, + 0x8a, 0x82, 0x8d, 0xad, 0x4b, 0x23, 0x72, 0x9c, 0x1d, 0xa6, 0x9a, 0xfc, + 0x45, 0xa2, 0x0e, 0xeb, 0x98, 0xb9, 0x99, 0x24, 0x85, 0x6a, 0xbf, 0x8b, + 0xe9, 0x01, 0x4d, 0x35, 0x0e, 0xcd, 0x65, 0x54, 0xd0, 0x98, 0x16, 0x1b, + 0x93, 0x1a, 0x6d, 0xac, 0x03, 0x2d, 0x9a, 0xdd, 0x15, 0x96, 0xc4, 0x48, + 0xfe, 0xf9, 0xb2, 0x50, 0x1d, 0x22, 0x25, 0xf6, 0x08, 0x90, 0x02, 0x3c, + 0x86, 0xa5, 0x28, 0x85, 0x43, 0xce, 0xeb, 0xd3, 0xff, 0x9e, 0x38, 0x11, + 0x58, 0xb1, 0x0b, 0x2a, 0x8c, 0x70, 0xf7, 0x58, 0x4e, 0xe6, 0x1d, 0x91, + 0x28, 0x61, 0x2a, 0x06, 0x84, 0x10, 0x3b, 0x8c, 0x2d, 0x8c, 0x62, 0x43, + 0x5d, 0x5d, 0x2c, 0x83, 0x03, 0xd4, 0x84, 0x0a, 0x0b, 0x80, 0x50, 0x86, + 0xa4, 0xeb, 0x4c, 0xc6, 0x4a, 0xa9, 0x28, 0x09, 0xde, 0xb3, 0x8e, 0x36, + 0x5c, 0x60, 0xad, 0x58, 0x65, 0xff, 0xff, 0xf4, 0xc5, 0x5c, 0x52, 0xa9, + 0xd4, 0x00, 0x45, 0x1c, 0x6c, 0x52, 0x2c, 0x84, 0x7c, 0xc7, 0x43, 0xe2, + 0x13, 0x24, 0x31, 0x91, 0xc9, 0x5c, 0x8d, 0x8f, 0x11, 0x38, 0xac, 0x8c, + 0xaa, 0x61, 0x6d, 0x45, 0x32, 0xed, 0xb6, 0x24, 0x77, 0x3c, 0x2a, 0xb6, + 0x7d, 0x92, 0x83, 0xbd, 0x65, 0xe9, 0xde, 0x4e, 0x94, 0x8b, 0x65, 0x14, + 0x46, 0x63, 0xf1, 0x12, 0x94, 0x44, 0xa8, 0xce, 0xc5, 0x22, 0xa8, 0xd3, + 0x53, 0xca, 0x87, 0x17, 0xd3, 0x75, 0x5c, 0xce, 0x7e, 0x06, 0xf3, 0x0a, + 0xe6, 0x09, 0xd8, 0x94, 0xa0, 0xb3, 0x6a, 0x41, 0x4b, 0xd8, 0x3a, 0x59, + 0x76, 0x37, 0x3b, 0x0d, 0x4c, 0xc3, 0x10, 0xfc, 0x8d, 0xda, 0x87, 0xa5, + 0xf9, 0xba, 0x16, 0x61, 0x99, 0xd9, 0xcb, 0x36, 0xf1, 0x9d, 0x9f, 0xb3, + 0x29, 0xa4, 0x81, 0xe5, 0x33, 0x58, 0x46, 0xa1, 0xb7, 0xde, 0x13, 0x5a, + 0x5d, 0x03, 0xc3, 0x19, 0x45, 0x30, 0x8f, 0x41, 0xf9, 0x40, 0xd2, 0x4c, + 0x79, 0x52, 0xb4, 0x31, 0x39, 0x27, 0xc2, 0x7a, 0xe5, 0x7a, 0xd4, 0xd6, + 0x70, 0xa6, 0xa4, 0xce, 0xc3, 0xff, 0x14, 0x7d, 0x5d, 0xbb, 0x56, 0x27, + 0x9f, 0xca, 0x48, 0xc4, 0xb5, 0xf9, 0x98, 0x7f, 0xa9, 0xec, 0x59, 0x9c, + 0xb1, 0x7e, 0x9a, 0x6e, 0x76, 0xac, 0x89, 0xff, 0xd4, 0x0d, 0x04, 0xea, + 0x39, 0x02, 0xca, 0x23, 0x72, 0x99, 0xe9, 0x1d, 0x48, 0x9c, 0xaa, 0x9e, + 0xa5, 0xb9, 0x0e, 0xa9, 0x35, 0x2d, 0x86, 0xef, 0x49, 0x2a, 0x50, 0x4d, + 0x4e, 0xd4, 0x94, 0xc3, 0x8e, 0x14, 0xd4, 0x3f, 0x4f, 0x43, 0x5a, 0xed, + 0x78, 0x05, 0xf7, 0x75, 0x9d, 0x9c, 0x64, 0xb6, 0x59, 0xfc, 0x4e, 0x23, + 0x37, 0x4e, 0xf2, 0xbb, 0x91, 0x57, 0x15, 0x99, 0x41, 0xac, 0xa1, 0xbe, + 0x90, 0xc2, 0x5a, 0x23, 0x5d, 0x60, 0x4a, 0x9e, 0x04, 0x61, 0x20, 0x42, + 0x35, 0xe6, 0x18, 0xb3, 0x9e, 0x19, 0x62, 0x80, 0x42, 0xf6, 0xa4, 0x9b, + 0x8d, 0x11, 0xdd, 0xa5, 0x08, 0xe3, 0xd1, 0x59, 0x40, 0xc5, 0x28, 0x68, + 0x24, 0xc1, 0xa1, 0x4d, 0xee, 0x08, 0x14, 0x64, 0xae, 0x67, 0x1f, 0x6e, + 0xcb, 0xd4, 0xe6, 0x82, 0x99, 0x89, 0xc8, 0x3c, 0x05, 0x5f, 0x69, 0xbb, + 0x56, 0x81, 0x75, 0xc1, 0x0b, 0x0a, 0x48, 0x92, 0xc0, 0x43, 0xa0, 0x47, + 0x32, 0x00, 0x53, 0x37, 0x7b, 0xad, 0x70, 0x44, 0x6e, 0x74, 0x13, 0xec, + 0x49, 0xd7, 0xcb, 0x3d, 0x13, 0xe6, 0xde, 0x3d, 0xb2, 0xf7, 0xff, 0xfe, + 0x1f, 0xa7, 0xfd, 0xfc, 0xed, 0xef, 0xfe, 0x73, 0x2c, 0xf2, 0xff, 0xff, + 0x3c, 0x91, 0x9a, 0xf0, 0x2d, 0x3d, 0x4d, 0x5e, 0x88, 0x78, 0x05, 0x8c, + 0xa8, 0xa1, 0x20, 0x91, 0xda, 0x8c, 0x62, 0xfa, 0x30, 0x57, 0x12, 0x09, + 0x0f, 0x55, 0x00, 0x00, 0x65, 0x60, 0x9d, 0x24, 0xa2, 0x5a, 0x29, 0x07, + 0x4e, 0xc7, 0x40, 0xf8, 0x92, 0x59, 0x12, 0xdb, 0x28, 0x2b, 0x18, 0x5c, + 0x95, 0xcd, 0x8a, 0x91, 0x37, 0x5d, 0x9a, 0x87, 0x2b, 0x1b, 0x31, 0x35, + 0x78, 0x6e, 0xac, 0x28, 0x5e, 0x1e, 0x0b, 0x0f, 0xcf, 0x25, 0x01, 0xce, + 0x70, 0x31, 0x95, 0x87, 0xc3, 0x7b, 0xa9, 0x0c, 0x93, 0xbd, 0x2c, 0xfe, + 0x2d, 0x1c, 0xde, 0xaa, 0x58, 0xd7, 0xd8, 0x4b, 0x73, 0x29, 0x94, 0xa7, + 0x8a, 0x86, 0x44, 0x25, 0x78, 0x32, 0x49, 0x4b, 0xf9, 0x5e, 0x9a, 0x4d, + 0x0d, 0x4b, 0x1c, 0x48, 0x2a, 0x19, 0x86, 0x1a, 0x65, 0xb8, 0x07, 0xbb, + 0x8f, 0xcb, 0x68, 0x25, 0x90, 0xe5, 0xac, 0xbb, 0x39, 0x6a, 0x2d, 0x7a, + 0x08, 0x95, 0x5b, 0x80, 0xb1, 0x96, 0xbd, 0x37, 0x65, 0x52, 0xe9, 0x4d, + 0x1d, 0x35, 0x4b, 0x2f, 0x14, 0x39, 0x1b, 0xa5, 0xb1, 0x3b, 0x18, 0xfa, + 0x0b, 0x9b, 0xa7, 0xbf, 0x43, 0x9d, 0x9a, 0xb1, 0xe9, 0x3c, 0x5e, 0x0c, + 0x9a, 0xa0, 0xc2, 0x1e, 0x87, 0xa0, 0x7a, 0x69, 0x54, 0xd3, 0xbb, 0x37, + 0x49, 0x3f, 0x71, 0xeb, 0x95, 0x3d, 0xb6, 0x29, 0x23, 0x14, 0xd7, 0xa2, + 0xd4, 0x77, 0x32, 0x97, 0xca, 0x34, 0xec, 0x72, 0x86, 0x0a, 0x88, 0x43, + 0x94, 0xd8, 0x4e, 0x44, 0x29, 0xff, 0xfb, 0xd4, 0x60, 0x5b, 0x88, 0x08, + 0x03, 0x76, 0x3d, 0x41, 0x8f, 0xc3, 0x70, 0x6e, 0xce, 0x78, 0x3d, 0x18, + 0xc2, 0x6e, 0x5e, 0x69, 0xda, 0xf4, 0xa7, 0xbd, 0xed, 0xc1, 0xb2, 0xb7, + 0xe1, 0xfc, 0x63, 0x09, 0xbd, 0x9d, 0x4e, 0xd9, 0x8c, 0xc9, 0xaf, 0x63, + 0x5e, 0x1f, 0x84, 0x3f, 0x33, 0xf3, 0x73, 0x73, 0x4f, 0x73, 0xcb, 0x19, + 0xb9, 0x2c, 0xab, 0x1c, 0xa4, 0xbb, 0x45, 0x29, 0x96, 0xc0, 0x6e, 0x8b, + 0xbb, 0x0f, 0x4f, 0xd2, 0xc6, 0xaf, 0x4d, 0xcd, 0x61, 0x20, 0xca, 0x51, + 0x19, 0x82, 0xe5, 0x70, 0x35, 0xc8, 0x1d, 0x1e, 0x95, 0x86, 0x47, 0x1e, + 0x6a, 0x4d, 0x71, 0x3e, 0xc2, 0xc4, 0x2f, 0xb3, 0x59, 0x6e, 0x6c, 0x56, + 0x1f, 0x46, 0x66, 0xa3, 0x06, 0x3d, 0xa0, 0x22, 0x42, 0x72, 0x46, 0xa4, + 0x8d, 0xa4, 0x3f, 0x6a, 0x34, 0x04, 0x72, 0xeb, 0x7b, 0xf4, 0xbe, 0xca, + 0x89, 0x27, 0x7a, 0x31, 0xda, 0x9d, 0xf9, 0x36, 0xed, 0x35, 0xe7, 0xcb, + 0x77, 0xfa, 0xd7, 0x99, 0x93, 0x5f, 0x12, 0x76, 0xcc, 0x74, 0xb0, 0xd3, + 0xe5, 0x03, 0x31, 0x0c, 0x39, 0x58, 0x84, 0x3c, 0xa4, 0x32, 0x9d, 0x15, + 0x49, 0x47, 0x49, 0x8c, 0x8a, 0x42, 0x5c, 0x92, 0x19, 0x08, 0x84, 0x66, + 0x79, 0x95, 0x36, 0xdf, 0x4f, 0xda, 0x72, 0x2a, 0x95, 0xda, 0x8b, 0xae, + 0xc6, 0x7e, 0xdd, 0xac, 0xac, 0x7f, 0xef, 0xff, 0xd5, 0xfb, 0xff, 0x3a, + 0x21, 0x50, 0x8d, 0x21, 0xee, 0x50, 0xe5, 0x09, 0x5b, 0x20, 0x02, 0x10, + 0xab, 0x74, 0x08, 0xe0, 0x00, 0x69, 0x98, 0x32, 0xcc, 0x0b, 0x70, 0xfd, + 0x4a, 0xc2, 0x4d, 0xcb, 0x89, 0x94, 0xca, 0xfa, 0x0b, 0x09, 0xe4, 0xa7, + 0x5c, 0x2a, 0x97, 0x11, 0x26, 0x57, 0xb7, 0x46, 0x88, 0x5d, 0xde, 0xdb, + 0x4b, 0x50, 0x0d, 0x25, 0x4b, 0x23, 0x19, 0x0d, 0x46, 0xab, 0xe3, 0x92, + 0x86, 0x03, 0xf5, 0x1b, 0x00, 0x9d, 0xb4, 0x27, 0xd6, 0x58, 0xd4, 0x8a, + 0x44, 0x62, 0x90, 0x76, 0x73, 0x70, 0xeb, 0x8e, 0xdd, 0xa6, 0x02, 0xdc, + 0x85, 0xc4, 0x57, 0x1a, 0x6a, 0x95, 0x73, 0xa3, 0xf4, 0xfc, 0x8e, 0xf1, + 0xc5, 0x89, 0xe1, 0xe0, 0x89, 0x70, 0x55, 0xa2, 0x53, 0xaa, 0xd4, 0x29, + 0xaa, 0x77, 0xac, 0x4f, 0xca, 0xa6, 0x59, 0xce, 0x82, 0xfc, 0x84, 0x3e, + 0x4e, 0x3d, 0x84, 0x5f, 0xd9, 0xa1, 0x9c, 0x8e, 0x95, 0x11, 0xdb, 0xdb, + 0x6c, 0xfd, 0x72, 0xe7, 0x1a, 0x32, 0xfa, 0xba, 0x03, 0x65, 0x12, 0x0c, + 0x90, 0xee, 0x9f, 0x57, 0xb8, 0xb7, 0x52, 0xd1, 0xdc, 0xa4, 0x7c, 0xbc, + 0xd2, 0xce, 0xca, 0xde, 0xca, 0x9b, 0x61, 0x57, 0x4e, 0xc9, 0x11, 0xc3, + 0x0c, 0xc8, 0xf8, 0xb7, 0x54, 0xc6, 0x80, 0xb4, 0xa5, 0x46, 0x2b, 0x23, + 0x32, 0x9e, 0x25, 0xf9, 0x89, 0xea, 0x39, 0x52, 0xc8, 0xaa, 0x6c, 0xab, + 0x53, 0x9a, 0xa1, 0x74, 0xf9, 0x1b, 0x13, 0x29, 0xf7, 0x95, 0x88, 0xee, + 0x68, 0x77, 0xc6, 0x57, 0x31, 0xe2, 0x2e, 0xa0, 0x3d, 0x92, 0x8e, 0x30, + 0xdb, 0x5b, 0x55, 0x27, 0xfc, 0x89, 0x29, 0xd5, 0xf1, 0x53, 0x8e, 0x6f, + 0x56, 0x9b, 0x14, 0xe9, 0x16, 0xe5, 0x32, 0xb5, 0x90, 0x76, 0xa1, 0x67, + 0x2a, 0x85, 0x5a, 0xac, 0x2f, 0xe3, 0xa4, 0x5b, 0xc6, 0x72, 0x5c, 0x9f, + 0xba, 0x20, 0xc1, 0x05, 0x11, 0xf4, 0x3c, 0x9e, 0x10, 0xc3, 0xd1, 0xc3, + 0x60, 0x48, 0x8a, 0xaa, 0xaa, 0xf1, 0xac, 0x75, 0xa4, 0x47, 0xfc, 0xa1, + 0xc9, 0x13, 0x40, 0xe2, 0x05, 0xae, 0x8b, 0xe8, 0x66, 0x1f, 0x98, 0x98, + 0x73, 0xc3, 0x20, 0x90, 0x20, 0x82, 0x65, 0x12, 0x94, 0xc0, 0x51, 0xbe, + 0x94, 0x5c, 0xce, 0x56, 0xdc, 0x1a, 0xf1, 0xff, 0xf1, 0x93, 0xad, 0xeb, + 0x19, 0x8a, 0x72, 0x14, 0x88, 0x1c, 0xe5, 0x0a, 0x22, 0x47, 0x04, 0xac, + 0x8f, 0x32, 0xb6, 0x6a, 0x16, 0xdd, 0xac, 0xee, 0xec, 0xac, 0xc8, 0x72, + 0x35, 0x59, 0x1c, 0x76, 0x46, 0x33, 0x2a, 0x65, 0x2a, 0x23, 0x18, 0x85, + 0x4b, 0x3f, 0x5d, 0x74, 0x23, 0xea, 0xcc, 0xf6, 0xbb, 0x7f, 0xff, 0xff, + 0xff, 0xfd, 0x74, 0xa1, 0x5f, 0xbb, 0xba, 0x3a, 0xf8, 0x9d, 0xbd, 0x05, + 0xa8, 0x00, 0x43, 0x87, 0xe2, 0xb0, 0x14, 0x1f, 0x05, 0x01, 0xa4, 0x4c, + 0xb4, 0x1f, 0x09, 0x03, 0x1a, 0x24, 0x32, 0xfe, 0xf7, 0x0d, 0x10, 0x4c, + 0xcd, 0x2a, 0x90, 0xae, 0x53, 0x39, 0x54, 0xa9, 0x48, 0x1f, 0x7c, 0xbe, + 0x58, 0x30, 0x29, 0x8f, 0xe0, 0x58, 0x92, 0x3d, 0x2c, 0x5a, 0xb5, 0x60, + 0x3e, 0x16, 0x91, 0xd7, 0x9e, 0xab, 0x29, 0x01, 0xd0, 0xb4, 0xa0, 0xfa, + 0xa1, 0x70, 0x8c, 0x78, 0x1f, 0x9c, 0x95, 0x91, 0xad, 0x6b, 0x51, 0x94, + 0xcc, 0xae, 0x29, 0x95, 0xd9, 0xe0, 0x86, 0xb8, 0x9d, 0x29, 0xb5, 0x6c, + 0x74, 0x42, 0xda, 0xa1, 0x0b, 0x5c, 0xb5, 0xf2, 0x74, 0xc2, 0xd9, 0x1c, + 0xc0, 0x2e, 0xe6, 0x2c, 0xeb, 0x7a, 0x5f, 0x48, 0xbd, 0x8c, 0xae, 0x75, + 0x19, 0x8e, 0x3d, 0xdf, 0x9e, 0x6c, 0x0c, 0xac, 0x09, 0x44, 0x6e, 0x98, + 0xdc, 0x10, 0xc5, 0x6a, 0x71, 0x80, 0xff, 0x51, 0xa3, 0xda, 0x5b, 0x15, + 0x68, 0x52, 0xe6, 0x02, 0x14, 0xe4, 0x70, 0xb1, 0x59, 0xcd, 0x1a, 0x8b, + 0x4a, 0x2e, 0xd9, 0x17, 0x4a, 0x85, 0x76, 0x1e, 0x40, 0x55, 0x36, 0x3d, + 0x62, 0x6b, 0x64, 0x74, 0xa1, 0x72, 0x52, 0xb2, 0x2d, 0xb3, 0x28, 0x18, + 0x12, 0xa7, 0x25, 0x35, 0xa5, 0x31, 0x62, 0x7c, 0xa6, 0x55, 0x2f, 0x43, + 0xb2, 0xda, 0x91, 0xfb, 0x6b, 0x5d, 0x6e, 0xae, 0x6e, 0x49, 0x46, 0x66, + 0x74, 0xc3, 0x11, 0x44, 0x84, 0xff, 0xfb, 0xd4, 0x60, 0x62, 0x08, 0x07, + 0xa9, 0x76, 0xbd, 0x29, 0x2c, 0x7b, 0x70, 0x71, 0x4e, 0x98, 0x2c, 0x08, + 0x63, 0x6e, 0x63, 0x19, 0xda, 0xee, 0xa7, 0xbf, 0x0d, 0xc2, 0x17, 0xbb, + 0x1f, 0xe8, 0x63, 0x19, 0xb8, 0x29, 0x34, 0xe7, 0x24, 0x65, 0xe6, 0x35, + 0x5e, 0xdf, 0xad, 0x14, 0x8b, 0xec, 0x30, 0x1a, 0xda, 0xcf, 0x88, 0xa6, + 0xf1, 0xf6, 0x9d, 0x82, 0x7b, 0xaa, 0x8f, 0xe8, 0xa9, 0xf1, 0xc8, 0xc8, + 0xe4, 0x4b, 0x0e, 0xe1, 0x0a, 0x27, 0x63, 0x94, 0xb6, 0x86, 0x98, 0xb7, + 0x8a, 0x33, 0x4d, 0x86, 0x33, 0xfc, 0x80, 0x4a, 0x4d, 0xb7, 0x2e, 0xff, + 0x93, 0x08, 0x0d, 0x81, 0xb9, 0x82, 0x04, 0x16, 0x2c, 0x01, 0x01, 0x04, + 0xa0, 0x98, 0x31, 0x55, 0x05, 0x90, 0x73, 0xab, 0x35, 0x3a, 0x6e, 0x80, + 0x4a, 0x66, 0xe1, 0xb2, 0xe7, 0x02, 0xda, 0x4b, 0x46, 0xd1, 0x16, 0x92, + 0xb5, 0x3d, 0xcf, 0x98, 0x2d, 0x75, 0x9a, 0x1a, 0x9b, 0x66, 0x6b, 0x76, + 0x28, 0x6d, 0xab, 0x1d, 0x4d, 0x77, 0x28, 0x48, 0x28, 0x56, 0x87, 0x7b, + 0x99, 0x1c, 0xcf, 0xd4, 0xb3, 0x28, 0x5d, 0xfe, 0x58, 0xbf, 0x94, 0x3f, + 0xfb, 0x64, 0xf2, 0xe2, 0x7f, 0x7f, 0x9f, 0xcf, 0xfb, 0x33, 0xff, 0xef, + 0xf7, 0x96, 0x11, 0x51, 0x39, 0x1b, 0xab, 0x43, 0x08, 0x10, 0x55, 0x06, + 0xe4, 0x8a, 0x6c, 0x4e, 0xb4, 0xc0, 0xc2, 0xa5, 0x22, 0x06, 0x40, 0xc3, + 0x20, 0x35, 0x95, 0xc8, 0xde, 0x30, 0x05, 0xc9, 0x48, 0xad, 0x0e, 0x9b, + 0x19, 0xeb, 0xca, 0xb7, 0xcc, 0x84, 0x99, 0x1c, 0x58, 0x4b, 0xd2, 0xb8, + 0xef, 0x21, 0x86, 0x92, 0x00, 0xa6, 0x5d, 0x96, 0xf6, 0x34, 0x35, 0xd3, + 0x68, 0xf5, 0xa1, 0xca, 0xa1, 0xd0, 0x7e, 0x21, 0x66, 0x92, 0xe8, 0xab, + 0x52, 0x1a, 0x27, 0x83, 0x1b, 0x00, 0xd4, 0x35, 0xd3, 0x27, 0x68, 0x98, + 0x99, 0x2f, 0x51, 0x44, 0x68, 0x5d, 0x1b, 0x0e, 0x99, 0x19, 0x91, 0x62, + 0xee, 0x75, 0x37, 0x20, 0x2d, 0x3e, 0x50, 0x4b, 0xee, 0xe9, 0xc6, 0xa6, + 0x22, 0xb1, 0x76, 0x92, 0xf0, 0xb4, 0x1a, 0x48, 0xe3, 0x29, 0x69, 0x6c, + 0xa2, 0x79, 0x5d, 0x39, 0x19, 0x58, 0x78, 0x9a, 0x5b, 0xe5, 0x04, 0x4b, + 0xa0, 0x66, 0x37, 0x21, 0xa0, 0x87, 0x21, 0xa8, 0xe4, 0xbd, 0xfe, 0xa3, + 0x9e, 0x90, 0xc3, 0x72, 0x1b, 0xf4, 0x50, 0x7c, 0x67, 0x93, 0x6d, 0x27, + 0x1a, 0x17, 0x5f, 0x6c, 0xde, 0x6a, 0x6e, 0x69, 0xc6, 0x6f, 0xa1, 0x6f, + 0xbb, 0x9a, 0xfd, 0x63, 0x35, 0x2f, 0x69, 0xb0, 0xdb, 0x28, 0x86, 0x6a, + 0xc5, 0xa5, 0x73, 0xb5, 0xe0, 0x98, 0x26, 0x24, 0xe2, 0xbc, 0xfa, 0x5b, + 0x2d, 0x05, 0xbd, 0x88, 0x4b, 0xa0, 0xa9, 0x74, 0x11, 0x55, 0xb0, 0xc3, + 0x2d, 0x62, 0x35, 0x16, 0x6b, 0x95, 0xa7, 0xa4, 0x4e, 0x5c, 0x03, 0x04, + 0xb9, 0x4e, 0x9c, 0xa7, 0xae, 0x95, 0x7c, 0xde, 0xb6, 0xf2, 0x09, 0x86, + 0x22, 0x2d, 0x31, 0xdd, 0x9e, 0x8d, 0xdf, 0x77, 0x32, 0x77, 0x1d, 0xb8, + 0x54, 0x29, 0xc8, 0xdc, 0x69, 0xbb, 0xbd, 0x6c, 0x9d, 0xc6, 0xb3, 0x00, + 0x3c, 0x8e, 0xdc, 0x71, 0xab, 0xb3, 0x86, 0x7d, 0x05, 0x4f, 0x43, 0x11, + 0x96, 0xdd, 0x61, 0x13, 0xed, 0xf1, 0xa0, 0x88, 0x37, 0x57, 0x19, 0xb8, + 0xad, 0x56, 0xd5, 0x8a, 0x2f, 0x56, 0x8c, 0xc8, 0x21, 0x6f, 0xeb, 0xe0, + 0xf9, 0x3b, 0x68, 0x0c, 0x67, 0x02, 0x10, 0xab, 0x68, 0x11, 0x4a, 0x4a, + 0x0f, 0xa1, 0x94, 0xce, 0x00, 0x20, 0xad, 0x51, 0x29, 0x20, 0x07, 0xe7, + 0x14, 0x0c, 0x10, 0x46, 0xca, 0x1b, 0x3d, 0xb3, 0x9f, 0x4e, 0xed, 0x5d, + 0x2c, 0x6c, 0x04, 0x05, 0xda, 0x5c, 0x04, 0x84, 0x2d, 0x15, 0x4c, 0x65, + 0x65, 0x3b, 0xef, 0x78, 0x6f, 0x6d, 0xf2, 0x26, 0x7a, 0x5f, 0xfd, 0xf0, + 0x91, 0x6d, 0xbf, 0x1f, 0x24, 0xb2, 0x8f, 0xd7, 0x8a, 0x2a, 0xbe, 0xc6, + 0x4e, 0xa5, 0x0f, 0x55, 0x4e, 0x94, 0x43, 0x5a, 0xb4, 0xc3, 0x21, 0x9c, + 0xab, 0xef, 0x35, 0x9a, 0xce, 0xd8, 0xda, 0xff, 0x23, 0xf6, 0xed, 0xfe, + 0xfd, 0x6c, 0xff, 0x23, 0xdc, 0xe7, 0x6f, 0x77, 0xfe, 0xef, 0x6f, 0xff, + 0xbf, 0xfe, 0xbf, 0xcf, 0x59, 0x5f, 0xff, 0xb9, 0xff, 0x8f, 0xf5, 0xb3, + 0xec, 0x43, 0x46, 0x1d, 0xee, 0xb4, 0xb2, 0x8a, 0xc7, 0x38, 0xb1, 0xc9, + 0xa9, 0x72, 0x78, 0xee, 0x4c, 0xd3, 0xc3, 0xcf, 0x04, 0x32, 0x52, 0x18, + 0x0b, 0xd4, 0x36, 0x86, 0x98, 0xa6, 0x00, 0x00, 0x97, 0x20, 0x99, 0x84, + 0x73, 0x07, 0x88, 0x00, 0x31, 0xb2, 0xe1, 0x65, 0xe5, 0x83, 0x31, 0xf0, + 0x84, 0xe3, 0x5a, 0x12, 0x91, 0xde, 0xc8, 0xc3, 0x29, 0xfc, 0x86, 0x1f, + 0xd0, 0x14, 0xad, 0xcc, 0xe6, 0xe3, 0x51, 0xd0, 0xc0, 0xe4, 0xa8, 0x3e, + 0x0d, 0x35, 0x73, 0xb6, 0xd5, 0x1a, 0x28, 0xba, 0x27, 0x15, 0x64, 0x2d, + 0x6c, 0xfd, 0x65, 0x76, 0xb7, 0x15, 0x85, 0x91, 0x7f, 0x6c, 0x2f, 0x5b, + 0xab, 0x46, 0xf3, 0xc5, 0x5c, 0xd2, 0x65, 0xb8, 0x1c, 0x4f, 0x6b, 0x11, + 0xad, 0x24, 0x8f, 0x7a, 0xbd, 0x1e, 0x1b, 0x2a, 0xdb, 0xca, 0xa9, 0x51, + 0xe9, 0xd8, 0x2a, 0x57, 0x08, 0x2d, 0xe5, 0xfe, 0xef, 0xdc, 0x9b, 0x58, + 0x56, 0x22, 0x21, 0x77, 0x5a, 0x84, 0xc6, 0x78, 0x37, 0x21, 0xd5, 0x9f, + 0x2e, 0x11, 0x94, 0xa8, 0x6f, 0xbc, 0x63, 0xf9, 0x5d, 0x47, 0x6c, 0x6c, + 0x8a, 0xc5, 0x9b, 0x3b, 0xf0, 0xdc, 0xd8, 0xe9, 0x09, 0x75, 0x16, 0x56, + 0x66, 0x69, 0xa1, 0x44, 0x99, 0x92, 0x2b, 0xe6, 0xbd, 0xd5, 0x47, 0xb7, + 0x6c, 0x72, 0xb9, 0x55, 0x81, 0xff, 0xfb, 0xd4, 0x60, 0x4d, 0x88, 0x07, + 0x5b, 0x76, 0xbd, 0xc1, 0x8f, 0x7b, 0x70, 0x76, 0xce, 0x38, 0x1a, 0x18, + 0x65, 0x6e, 0x5f, 0x01, 0xda, 0xf4, 0x27, 0xbd, 0xed, 0xc1, 0xbf, 0xba, + 0xe1, 0x34, 0x64, 0x0d, 0xb8, 0x5c, 0xd9, 0x68, 0x38, 0x71, 0x92, 0x03, + 0x7a, 0x95, 0xdb, 0xb8, 0x31, 0xd4, 0xd1, 0xd5, 0xfa, 0x61, 0x5f, 0x63, + 0xdc, 0x58, 0xd0, 0xf5, 0x68, 0x5a, 0x67, 0xa3, 0x12, 0x91, 0x69, 0x85, + 0x38, 0xfe, 0x3c, 0x6a, 0xa3, 0x7a, 0xed, 0x85, 0x5b, 0x15, 0xb5, 0xe3, + 0xf5, 0xd3, 0x22, 0xa5, 0xcd, 0x9d, 0x59, 0x15, 0x4e, 0x7b, 0xab, 0x5b, + 0xcb, 0xda, 0x2d, 0x79, 0xf9, 0xc0, 0x84, 0x14, 0xa2, 0x94, 0x6a, 0x29, + 0xe5, 0x17, 0xcf, 0x41, 0x5e, 0xa7, 0x1f, 0x40, 0xd2, 0x1b, 0xe6, 0x5a, + 0x77, 0x40, 0x35, 0x3f, 0x94, 0xd1, 0x89, 0x11, 0xfe, 0xae, 0xcc, 0x0b, + 0x38, 0xd1, 0xc5, 0x85, 0x1e, 0x79, 0x00, 0x62, 0x85, 0x20, 0x40, 0x36, + 0x71, 0x40, 0x5a, 0x02, 0x08, 0xc5, 0x3b, 0x5f, 0x5b, 0x78, 0xce, 0x2c, + 0x20, 0xae, 0x42, 0x71, 0xd0, 0xe9, 0x3d, 0x22, 0xb5, 0x1d, 0x3e, 0xa6, + 0x77, 0x79, 0x28, 0x96, 0x1a, 0x28, 0xe8, 0x30, 0x50, 0xb1, 0xe6, 0x96, + 0x35, 0x8e, 0x87, 0x3b, 0x36, 0x42, 0xd5, 0xd1, 0x4e, 0xf5, 0x22, 0x32, + 0x3d, 0x64, 0x32, 0x99, 0xf3, 0xb9, 0xb3, 0x76, 0x47, 0xb9, 0x19, 0x5a, + 0x76, 0x92, 0xad, 0x77, 0xff, 0xf5, 0xf9, 0x7e, 0xd7, 0xa4, 0xae, 0xdd, + 0xca, 0x88, 0x24, 0x20, 0xe2, 0x21, 0x4e, 0x24, 0x34, 0x86, 0x28, 0x58, + 0x9a, 0x28, 0xea, 0x8c, 0x40, 0xe1, 0x89, 0x1a, 0x21, 0x19, 0x5e, 0x83, + 0x0e, 0x1f, 0x10, 0x4f, 0xa3, 0x12, 0x43, 0xa0, 0x9b, 0x19, 0x47, 0xa9, + 0xc2, 0x7e, 0xb5, 0x31, 0xa2, 0x9c, 0x99, 0x15, 0x8c, 0x0c, 0x0f, 0x57, + 0x91, 0x89, 0x55, 0x52, 0x1c, 0xb1, 0x0a, 0x11, 0x96, 0xf5, 0x7c, 0xd2, + 0x3f, 0x15, 0x4a, 0xd5, 0xf2, 0xc6, 0x9c, 0x53, 0x41, 0x46, 0x1e, 0xc4, + 0xfd, 0xdc, 0x34, 0x20, 0xfe, 0x3b, 0x94, 0x08, 0x1d, 0xb3, 0x32, 0x9c, + 0xf1, 0x06, 0x7a, 0x57, 0x68, 0x51, 0xbc, 0x73, 0x1e, 0x2e, 0x70, 0xa2, + 0x9f, 0x2a, 0x2a, 0xdd, 0x34, 0xe4, 0xc4, 0xe3, 0x11, 0x0c, 0x4a, 0x9f, + 0xe8, 0x69, 0xc4, 0xb4, 0x78, 0x0b, 0x82, 0x7a, 0x2b, 0xf3, 0xf4, 0xb8, + 0xb3, 0x19, 0x72, 0x23, 0xa2, 0x9f, 0xed, 0xd1, 0x1a, 0x9c, 0xdb, 0x23, + 0x46, 0x76, 0xde, 0x75, 0xad, 0xa8, 0x5b, 0x63, 0x33, 0x21, 0x8e, 0x9e, + 0xb4, 0xab, 0x9c, 0x6f, 0x97, 0x90, 0x54, 0x6c, 0x8c, 0xeb, 0x6a, 0x65, + 0x73, 0x2b, 0xf5, 0x84, 0x3d, 0x95, 0x99, 0x73, 0x23, 0xf7, 0x38, 0xf3, + 0x2b, 0x1b, 0x32, 0xcc, 0x86, 0x2e, 0x1e, 0x97, 0x23, 0x7e, 0x09, 0xea, + 0xc8, 0xd8, 0xd8, 0xcc, 0xab, 0x63, 0x7e, 0xba, 0x56, 0xc1, 0x5a, 0x5f, + 0x51, 0x69, 0x8a, 0x2a, 0x5a, 0x47, 0x6a, 0x57, 0xac, 0xca, 0xeb, 0x44, + 0x6d, 0x6a, 0x8b, 0x02, 0x25, 0x5c, 0xdc, 0xe2, 0xb9, 0xaa, 0x5c, 0x61, + 0x2b, 0x60, 0x38, 0x26, 0x9b, 0xd1, 0x0a, 0xb5, 0x22, 0xda, 0x5d, 0xa2, + 0x19, 0xc2, 0xdb, 0xb7, 0x35, 0xf7, 0x14, 0xe2, 0x1b, 0x44, 0xf1, 0xe1, + 0x97, 0x33, 0x98, 0x99, 0x2e, 0xd2, 0xc5, 0xf0, 0xf4, 0x4f, 0xee, 0xe9, + 0xe2, 0x54, 0x71, 0x16, 0xe1, 0x3e, 0x01, 0x40, 0xd5, 0x5d, 0x11, 0x4f, + 0x08, 0x48, 0xa3, 0x16, 0x65, 0x96, 0xe5, 0x9c, 0x80, 0xa3, 0x6d, 0xcb, + 0x22, 0xb2, 0x46, 0xd8, 0xfd, 0x9a, 0x8b, 0x1a, 0x12, 0x2d, 0x51, 0xa7, + 0x93, 0x3e, 0x64, 0x64, 0xa2, 0x8c, 0x0a, 0xd9, 0x48, 0xbd, 0x0d, 0x33, + 0x55, 0xbb, 0xba, 0x9a, 0x9d, 0x71, 0x67, 0xae, 0x06, 0xd1, 0xc8, 0xec, + 0xb3, 0x52, 0xd5, 0x17, 0xc8, 0xb1, 0x0c, 0x89, 0xce, 0xda, 0xc7, 0x49, + 0x19, 0xf8, 0x2d, 0x63, 0x1e, 0xd4, 0xa9, 0x5f, 0x99, 0xa2, 0x91, 0x4d, + 0x5e, 0x7a, 0x52, 0x3f, 0xee, 0xf9, 0x72, 0xae, 0x85, 0x0a, 0x1c, 0x5b, + 0xbf, 0x4e, 0x37, 0x08, 0xad, 0xfa, 0xdf, 0xe4, 0xd9, 0xf7, 0xff, 0xff, + 0xff, 0x9f, 0x7f, 0xff, 0xc9, 0x6d, 0x29, 0x33, 0x53, 0x52, 0xdd, 0xec, + 0x1e, 0xaa, 0xa5, 0x41, 0x47, 0x43, 0x57, 0xce, 0xc8, 0xf5, 0xee, 0x34, + 0x00, 0x01, 0x20, 0x40, 0x9c, 0x8c, 0xd4, 0x33, 0x26, 0xbe, 0x20, 0x2b, + 0x0f, 0xdf, 0x54, 0x9e, 0x12, 0xb9, 0x14, 0x42, 0x2c, 0x28, 0x5b, 0x02, + 0xc6, 0x14, 0x82, 0xd1, 0x89, 0x0d, 0x15, 0xdd, 0x27, 0x3e, 0x3d, 0x88, + 0x60, 0x76, 0x10, 0xa4, 0x8c, 0x88, 0x7a, 0x19, 0x22, 0x3b, 0x12, 0xca, + 0xc2, 0x09, 0xab, 0x6d, 0x0a, 0x61, 0x40, 0x30, 0x38, 0x10, 0x84, 0xf0, + 0x6e, 0xa1, 0x16, 0x87, 0xf0, 0xac, 0x80, 0xfd, 0x39, 0xdb, 0xb5, 0x23, + 0x4a, 0xb1, 0x4e, 0xac, 0xbb, 0x21, 0xf8, 0xa7, 0x67, 0xa2, 0xe6, 0x22, + 0xd3, 0x8c, 0x8a, 0xc4, 0xc4, 0x24, 0x0a, 0x82, 0x57, 0x37, 0x24, 0xeb, + 0x64, 0x54, 0x7c, 0x09, 0x94, 0x8c, 0xaa, 0xb6, 0x13, 0xde, 0xaa, 0xf7, + 0x29, 0x57, 0xd2, 0xcc, 0x55, 0x73, 0x9d, 0xad, 0x85, 0x5e, 0xd0, 0xe5, + 0x01, 0xc1, 0x3f, 0x23, 0x62, 0x35, 0x8d, 0x5c, 0xe4, 0xa5, 0x85, 0x39, + 0xdc, 0xde, 0xa8, 0x7c, 0xff, 0x47, 0xec, 0x06, 0xa6, 0x06, 0x16, 0xd6, + 0x44, 0x2c, 0xb9, 0x47, 0x7f, 0x22, 0xa1, 0xc5, 0x49, 0x02, 0x90, 0x1b, + 0x98, 0x57, 0x95, 0x0c, 0xab, 0x2b, 0xb6, 0x66, 0x28, 0xeb, 0xee, 0x67, + 0xfd, 0xd1, 0xfb, 0x43, 0x95, 0xff, 0xfb, 0xd4, 0x60, 0x56, 0x80, 0x07, + 0x7e, 0x76, 0xbd, 0x41, 0x8c, 0x7b, 0x70, 0x6d, 0x0d, 0xf8, 0x5f, 0x25, + 0x62, 0x6e, 0x5a, 0xe1, 0xd9, 0x07, 0xa6, 0x31, 0xed, 0xc1, 0xb3, 0xa0, + 0xe1, 0xf4, 0x91, 0x99, 0x74, 0xac, 0xf1, 0x29, 0x19, 0x2d, 0x22, 0x59, + 0x9e, 0x0b, 0xe5, 0x5b, 0x03, 0x6c, 0xee, 0x68, 0x44, 0x2d, 0xc8, 0x9c, + 0x83, 0x03, 0x72, 0xb5, 0xc7, 0x6a, 0x57, 0xc3, 0x7c, 0xf1, 0xe3, 0xe6, + 0x63, 0xc3, 0x04, 0xd9, 0xad, 0x0a, 0x41, 0x32, 0x38, 0x9e, 0x27, 0x2a, + 0xbc, 0xfe, 0x98, 0x9f, 0x9c, 0x32, 0x22, 0xc3, 0x50, 0xe0, 0x90, 0x2c, + 0x40, 0xb9, 0x60, 0x1f, 0xa8, 0x41, 0x10, 0x3d, 0x2f, 0xe3, 0xb3, 0x60, + 0x05, 0x10, 0xcd, 0x4d, 0x1a, 0x24, 0xb6, 0x4a, 0xd8, 0xfe, 0xf0, 0x52, + 0x60, 0xd0, 0xa9, 0xee, 0xd8, 0x09, 0x4d, 0x79, 0xda, 0xc6, 0xc9, 0x83, + 0x8d, 0x09, 0x47, 0x83, 0xc8, 0xdc, 0x44, 0x12, 0xb9, 0x8c, 0x8e, 0x39, + 0xb9, 0xfb, 0xbb, 0xce, 0x5d, 0x24, 0x6b, 0x33, 0x0c, 0x59, 0x8e, 0xa7, + 0x4c, 0x3a, 0x6c, 0xa0, 0xea, 0xce, 0xea, 0x7b, 0x3d, 0x4d, 0xb9, 0xe8, + 0x84, 0x22, 0xa9, 0x2a, 0x38, 0x26, 0xb9, 0x64, 0xb1, 0x6a, 0x61, 0x8a, + 0x12, 0x70, 0x4d, 0x2b, 0x6d, 0xb2, 0x50, 0x8c, 0xca, 0xbf, 0x5e, 0x8c, + 0x7d, 0x1e, 0x89, 0xae, 0xdf, 0x7f, 0xff, 0xff, 0xfb, 0x7f, 0xe9, 0xa6, + 0xa9, 0xbb, 0x19, 0x55, 0x0a, 0xcc, 0xce, 0x19, 0xd3, 0xb9, 0xc9, 0x28, + 0x9c, 0x18, 0xe4, 0xb2, 0xcb, 0x64, 0xbb, 0x58, 0xc4, 0xce, 0xba, 0x1f, + 0x80, 0xd2, 0x32, 0x86, 0xc7, 0x53, 0xf3, 0xc0, 0xa8, 0x9a, 0x5f, 0xd4, + 0xe7, 0x8a, 0xd4, 0x8f, 0x87, 0xa7, 0x64, 0xf4, 0xa6, 0x41, 0x40, 0xfa, + 0x48, 0x12, 0x8d, 0x87, 0x42, 0x58, 0xfc, 0x3b, 0x8a, 0x4a, 0xc4, 0xe5, + 0xf1, 0x2e, 0x3c, 0x25, 0x1c, 0x81, 0xe2, 0xd1, 0x3c, 0x41, 0x26, 0x32, + 0x72, 0xb9, 0x60, 0x30, 0x4a, 0x48, 0x2d, 0x42, 0x26, 0x22, 0x69, 0x09, + 0x2a, 0x63, 0xcc, 0xc9, 0x41, 0x9b, 0xca, 0xc6, 0x23, 0xf8, 0xf9, 0x4c, + 0x33, 0x8e, 0xe5, 0x74, 0x62, 0xe0, 0xa2, 0x52, 0x9e, 0x28, 0x4c, 0xcb, + 0x2a, 0x86, 0xec, 0x1c, 0xcf, 0x96, 0x51, 0x69, 0x85, 0xcc, 0xc7, 0xfb, + 0x83, 0x1c, 0x19, 0x74, 0xc9, 0x76, 0x16, 0xb5, 0x29, 0x74, 0x39, 0x4c, + 0xbd, 0xc6, 0x62, 0x76, 0xca, 0x90, 0x80, 0xd8, 0xc3, 0x23, 0x1c, 0x7f, + 0x2e, 0x61, 0xc1, 0x65, 0x52, 0xc7, 0x6e, 0x84, 0xc6, 0xe2, 0xd2, 0xe9, + 0x9d, 0x61, 0x52, 0xb4, 0xf1, 0xae, 0x14, 0xac, 0xf4, 0x84, 0xd4, 0xb8, + 0xc5, 0xa3, 0x3e, 0xc6, 0x9c, 0x93, 0xd0, 0xaf, 0x36, 0xde, 0xc5, 0xb3, + 0xf7, 0xd3, 0x7b, 0xef, 0xfd, 0xff, 0xbb, 0xfc, 0xfb, 0xdf, 0x58, 0xc7, + 0xdf, 0xc7, 0xc7, 0xd5, 0x6f, 0x9d, 0x6b, 0xeb, 0x59, 0xdc, 0x6f, 0xad, + 0xf9, 0x33, 0x8b, 0xde, 0x07, 0xd6, 0x29, 0x9a, 0xc6, 0xad, 0x15, 0xfe, + 0x8c, 0xf4, 0x69, 0x62, 0x56, 0xb7, 0x3d, 0x63, 0x5a, 0x45, 0xb9, 0xe4, + 0x3b, 0x75, 0xb3, 0x3d, 0x9c, 0x72, 0xb4, 0x47, 0xf4, 0x84, 0x24, 0x16, + 0x60, 0x3e, 0x46, 0x05, 0x52, 0x62, 0xd8, 0x51, 0x52, 0x08, 0x72, 0x43, + 0x37, 0x0e, 0x11, 0x91, 0x42, 0x0b, 0x21, 0x85, 0x9f, 0x92, 0x14, 0x3c, + 0xb8, 0xce, 0xff, 0x76, 0x7d, 0xff, 0xdb, 0x6e, 0x3e, 0x7d, 0x99, 0xc5, + 0x44, 0xb9, 0xad, 0x79, 0x6e, 0x51, 0x6a, 0xd9, 0x24, 0xc3, 0x9c, 0xe4, + 0x9a, 0x3f, 0xc9, 0x65, 0x7a, 0x35, 0x9f, 0x0a, 0xbe, 0xde, 0x0d, 0x9d, + 0xd7, 0xcd, 0x8f, 0x9b, 0xbe, 0xa3, 0x3e, 0x23, 0x02, 0x16, 0xb8, 0x17, + 0x08, 0xd8, 0x04, 0x0f, 0x0a, 0x31, 0xea, 0x2a, 0x0c, 0x3b, 0xff, 0xfe, + 0xc5, 0xdc, 0x30, 0x5f, 0x60, 0x96, 0x64, 0x0e, 0x70, 0xb8, 0x9c, 0xc0, + 0xa2, 0x62, 0x0a, 0x6a, 0x29, 0x99, 0x71, 0xc9, 0xc1, 0x71, 0x92, 0xaa, + 0xaa, 0xf4, 0x5d, 0xa3, 0x03, 0x50, 0x23, 0x87, 0x00, 0x6e, 0x99, 0x40, + 0x2b, 0x24, 0xc2, 0x41, 0x15, 0x12, 0x5b, 0x49, 0x38, 0x9f, 0x0c, 0xe9, + 0xa3, 0x1f, 0x2e, 0x8b, 0xf9, 0x07, 0x4b, 0x21, 0x30, 0x0f, 0x12, 0x0a, + 0x92, 0x36, 0x1a, 0x15, 0x68, 0xf1, 0xbc, 0x86, 0x8a, 0xf1, 0x70, 0x16, + 0x62, 0x68, 0x3d, 0x24, 0xdc, 0x84, 0xa2, 0x03, 0xa4, 0xe3, 0x3a, 0x4a, + 0xc4, 0x2b, 0x23, 0x78, 0x7d, 0xab, 0x4c, 0x41, 0x86, 0xbf, 0x14, 0x9d, + 0x9a, 0x3c, 0x9c, 0xa1, 0xe5, 0x8a, 0x2b, 0xe6, 0xee, 0xba, 0xef, 0x8b, + 0x5c, 0x67, 0x2d, 0x32, 0x28, 0xe3, 0xc3, 0x8c, 0xae, 0x5e, 0xe4, 0xcc, + 0xb5, 0x1a, 0x3b, 0x58, 0xc3, 0x31, 0xd8, 0x95, 0x2b, 0x9e, 0xf9, 0xb2, + 0xdb, 0x33, 0xad, 0x5d, 0xb3, 0x49, 0x20, 0x37, 0xba, 0xed, 0xd6, 0x49, + 0x36, 0xef, 0xbb, 0x53, 0xb5, 0xd8, 0x5a, 0xc7, 0x6d, 0xea, 0x5b, 0x8c, + 0xd3, 0xb5, 0xf7, 0xce, 0x45, 0x95, 0x0b, 0x5b, 0xa6, 0x80, 0x5a, 0x74, + 0x41, 0x9c, 0x35, 0x18, 0x43, 0x6e, 0xfe, 0x4b, 0x66, 0x21, 0xb7, 0xaa, + 0x69, 0x7c, 0x43, 0xae, 0xdc, 0x26, 0x06, 0x7e, 0x1e, 0xc8, 0x69, 0x48, + 0x2e, 0x49, 0xd6, 0xfd, 0xe5, 0xa7, 0xd4, 0x85, 0xee, 0x97, 0x33, 0xa8, + 0x02, 0x36, 0xee, 0xcb, 0xe6, 0xa9, 0x5b, 0x49, 0x6b, 0xb6, 0xd7, 0x9e, + 0x86, 0xeb, 0x21, 0x96, 0x3b, 0xaf, 0xfc, 0xd6, 0x98, 0x83, 0x3c, 0x72, + 0x1f, 0x65, 0x31, 0xc9, 0x8e, 0xbf, 0x4c, 0x45, 0xfd, 0x82, 0x63, 0xf4, + 0x4f, 0xf4, 0x7a, 0x28, 0xf7, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x08, 0x08, + 0xf8, 0x76, 0xbb, 0x01, 0xef, 0xc3, 0x70, 0x91, 0xae, 0xc7, 0xea, 0x25, + 0x28, 0x6e, 0x1e, 0x01, 0xda, 0xf4, 0xa7, 0xbd, 0xed, 0xc1, 0xeb, 0x39, + 0xe0, 0xf4, 0x94, 0x89, 0xb9, 0x51, 0x33, 0x58, 0xc4, 0xec, 0x56, 0x29, + 0x0f, 0xc0, 0x4d, 0xda, 0x1f, 0xa2, 0xb2, 0xce, 0x9f, 0xc7, 0xff, 0x34, + 0xeb, 0x74, 0xe5, 0xeb, 0x95, 0x4e, 0x63, 0x8f, 0xd4, 0x6d, 0x40, 0x14, + 0x2a, 0xea, 0x0b, 0x40, 0x2c, 0x95, 0xc9, 0x10, 0x81, 0xd5, 0xb4, 0xdf, + 0xa2, 0x63, 0x0b, 0x8a, 0x2b, 0x12, 0x4a, 0xb9, 0xc5, 0x96, 0x0e, 0x6a, + 0x1c, 0x88, 0x0e, 0xe5, 0x16, 0xe5, 0x29, 0x96, 0xd3, 0x9a, 0xf9, 0x5a, + 0x01, 0x10, 0xa8, 0x03, 0x52, 0x40, 0x0f, 0x49, 0x11, 0x4d, 0xe4, 0x48, + 0xdb, 0x5d, 0xb0, 0xd5, 0x4a, 0x33, 0xaa, 0x42, 0xa3, 0xda, 0x4d, 0x0c, + 0x15, 0x23, 0x83, 0x84, 0xb1, 0xb8, 0x3b, 0xfc, 0xff, 0x2f, 0xee, 0xdd, + 0xcd, 0xde, 0xee, 0x52, 0x46, 0x18, 0x26, 0xa3, 0x02, 0xa5, 0xe2, 0x11, + 0x15, 0x97, 0x48, 0x93, 0x0e, 0x96, 0xc9, 0x98, 0x33, 0x53, 0xd8, 0x6d, + 0x32, 0xb4, 0x35, 0xa5, 0x1b, 0x38, 0xd5, 0xb4, 0x66, 0xa9, 0x85, 0x93, + 0xa9, 0xd2, 0x0e, 0x85, 0x9b, 0x56, 0x97, 0xfb, 0xbf, 0xa9, 0x88, 0xfe, + 0xec, 0x77, 0x29, 0x3d, 0x77, 0x1f, 0x54, 0xf7, 0xbf, 0xc5, 0xff, 0xff, + 0x77, 0xb7, 0x5f, 0xf5, 0x5d, 0xc4, 0x5d, 0xd8, 0xf6, 0xfa, 0xa9, 0x7b, + 0x58, 0x7c, 0x97, 0x7a, 0x32, 0xdc, 0x68, 0xc6, 0x17, 0xb4, 0x08, 0x8a, + 0x34, 0x82, 0x84, 0x01, 0x61, 0x28, 0xc1, 0x71, 0x18, 0xf0, 0x10, 0xca, + 0x28, 0x43, 0x06, 0xb0, 0xa6, 0x08, 0x03, 0x83, 0xa2, 0x44, 0x00, 0x5e, + 0x1d, 0xd1, 0x17, 0x0f, 0xd3, 0x2a, 0xa1, 0x32, 0x3c, 0xcc, 0x15, 0x5a, + 0x50, 0xc3, 0x2c, 0x2c, 0xd0, 0x52, 0x6d, 0x70, 0x92, 0x0d, 0xac, 0x07, + 0xdb, 0xa6, 0x26, 0x76, 0x3e, 0x9f, 0x4b, 0x17, 0x54, 0x4b, 0x6b, 0x02, + 0x79, 0x3e, 0xac, 0x3f, 0xd6, 0x0a, 0xa8, 0x46, 0x49, 0xa2, 0xc9, 0x2b, + 0x2a, 0x49, 0x24, 0xc2, 0xd8, 0xda, 0xa3, 0x54, 0x14, 0xcf, 0x3a, 0x91, + 0xeb, 0x3c, 0x12, 0xe8, 0xda, 0x78, 0x28, 0x0b, 0xeb, 0x3c, 0x4d, 0xae, + 0xe2, 0x38, 0x41, 0x43, 0x54, 0xd3, 0xa0, 0x58, 0x93, 0x84, 0x1d, 0xf2, + 0xea, 0xaa, 0x49, 0x9e, 0xdc, 0xfe, 0x1c, 0x6e, 0x25, 0x42, 0x95, 0xa9, + 0x37, 0x11, 0xad, 0x0c, 0x2d, 0xf0, 0x94, 0x0c, 0x4c, 0x92, 0xa3, 0x23, + 0xe1, 0xb2, 0xa9, 0xc5, 0xcb, 0x83, 0xb5, 0x79, 0xcb, 0x02, 0x65, 0x35, + 0x1e, 0x30, 0x5a, 0x13, 0x3c, 0x25, 0xf5, 0x04, 0x77, 0x07, 0x26, 0x57, + 0x8a, 0x13, 0x4d, 0x42, 0x85, 0xe1, 0x91, 0x8d, 0x72, 0xba, 0xcb, 0x8c, + 0x25, 0x26, 0xd3, 0x91, 0x5a, 0xbc, 0xca, 0x0b, 0xc6, 0x32, 0x20, 0x3f, + 0x3b, 0xe0, 0x27, 0x17, 0x52, 0x5f, 0x6c, 0xa8, 0x5b, 0xe6, 0xc8, 0xd1, + 0x5c, 0xa3, 0xbc, 0x7c, 0xc8, 0xfd, 0xc1, 0xea, 0xa9, 0xfc, 0x36, 0x3b, + 0x51, 0x5e, 0xdc, 0xc1, 0x2b, 0x24, 0x8a, 0xfa, 0xcc, 0xa3, 0x4f, 0xa8, + 0x63, 0x31, 0xee, 0xed, 0xd7, 0x65, 0x45, 0x1f, 0xec, 0x1d, 0x48, 0x85, + 0xb1, 0x3c, 0x34, 0x98, 0x67, 0x3b, 0x0f, 0x55, 0xa6, 0x6a, 0xb0, 0x2b, + 0x8e, 0x74, 0x38, 0xa2, 0x27, 0x0d, 0xc5, 0xc1, 0x0d, 0x0e, 0x26, 0x43, + 0x5c, 0x7a, 0x99, 0xe3, 0x93, 0xb1, 0xe2, 0x75, 0x92, 0xf1, 0x56, 0x67, + 0xbf, 0xd8, 0x0d, 0xb6, 0xec, 0xae, 0x7f, 0xdb, 0x69, 0x0f, 0xf6, 0x01, + 0xf2, 0xc9, 0x0c, 0x0a, 0x53, 0x47, 0x04, 0xf1, 0xc4, 0x04, 0x6a, 0x21, + 0xa6, 0x12, 0xc6, 0xe5, 0x29, 0xca, 0xf1, 0xb5, 0x3c, 0x93, 0x81, 0x28, + 0xff, 0x14, 0x99, 0x91, 0xe6, 0xb9, 0x10, 0x1d, 0x60, 0x92, 0xe6, 0x10, + 0x40, 0xb0, 0xa2, 0x94, 0x00, 0x8d, 0x18, 0x2f, 0x23, 0x62, 0x9d, 0xd0, + 0xeb, 0x62, 0x39, 0x98, 0xc3, 0x74, 0x56, 0x96, 0x8f, 0x47, 0x47, 0x6a, + 0x3d, 0x9a, 0x82, 0x4a, 0x1c, 0xc7, 0x6d, 0xa8, 0x6a, 0xae, 0xb4, 0x9d, + 0xd3, 0xd2, 0x56, 0x5d, 0x2e, 0x56, 0x4f, 0x57, 0x2b, 0xdf, 0xac, 0xda, + 0xdb, 0xf5, 0xfe, 0xdf, 0xfd, 0x56, 0xaa, 0x67, 0xb5, 0x9c, 0x96, 0x65, + 0x20, 0x71, 0x82, 0x18, 0xa1, 0x0c, 0xc8, 0x08, 0x1b, 0xb2, 0x9c, 0xd1, + 0x95, 0xc8, 0x25, 0x41, 0x75, 0x00, 0x04, 0xa1, 0x45, 0x90, 0x3f, 0x65, + 0x5d, 0x2b, 0x9a, 0xb6, 0x4d, 0x52, 0xcf, 0xd9, 0xd2, 0x2d, 0xcd, 0x65, + 0x85, 0xc5, 0x69, 0x46, 0xc4, 0x78, 0x29, 0x99, 0x53, 0x84, 0xc9, 0x1f, + 0x21, 0xf4, 0xab, 0xca, 0xe5, 0x0d, 0x32, 0x16, 0xd2, 0x89, 0xd3, 0x3b, + 0x4b, 0x65, 0xbd, 0x1c, 0xb9, 0x49, 0xb6, 0x0c, 0x66, 0x54, 0xba, 0xda, + 0xb1, 0xd2, 0x1a, 0x92, 0x56, 0x23, 0xda, 0x4f, 0x44, 0x29, 0xb8, 0xb8, + 0x29, 0x1c, 0x99, 0x14, 0x4e, 0x0a, 0x87, 0x8f, 0x13, 0x85, 0xce, 0xea, + 0x98, 0x08, 0x84, 0x28, 0xdc, 0x72, 0x4e, 0x22, 0xce, 0x65, 0x4a, 0x16, + 0xc2, 0xc5, 0x94, 0x92, 0x10, 0xbc, 0xc6, 0x68, 0x9f, 0x4a, 0xe2, 0xf6, + 0xcc, 0xf4, 0xe8, 0x63, 0x8a, 0xa1, 0x3e, 0xd5, 0x4b, 0xbb, 0x26, 0x2f, + 0xa5, 0x4a, 0xaa, 0x23, 0x2c, 0x23, 0x2d, 0x61, 0xc4, 0xec, 0x3f, 0x50, + 0xcb, 0x4d, 0xda, 0x61, 0xc4, 0x6d, 0x88, 0xa4, 0x72, 0xb6, 0x10, 0xa5, + 0x6d, 0x1f, 0xad, 0x44, 0x48, 0x43, 0xb4, 0x65, 0xf6, 0x46, 0x69, 0xe0, + 0xc0, 0x3f, 0xb4, 0x93, 0x7a, 0xff, 0xfb, 0xd4, 0x60, 0x4e, 0x08, 0x07, + 0x96, 0x76, 0xbd, 0xc9, 0xef, 0x7b, 0x70, 0x74, 0x6e, 0xb8, 0x3c, 0x24, + 0xc3, 0x6e, 0x1f, 0x41, 0xda, 0xf3, 0x07, 0xbd, 0xed, 0xc1, 0xda, 0x3a, + 0xa0, 0xf4, 0xc3, 0x09, 0xb9, 0xd8, 0xdb, 0xb6, 0xc5, 0x74, 0x6b, 0x4c, + 0xd7, 0xd8, 0xaa, 0x9d, 0x71, 0x81, 0x11, 0x3d, 0x23, 0x24, 0x75, 0x7b, + 0xfa, 0x3f, 0x99, 0x81, 0xcb, 0x18, 0xdc, 0x48, 0xdb, 0x62, 0x79, 0x0d, + 0xb1, 0x39, 0x4c, 0x76, 0x09, 0x76, 0xf9, 0x5e, 0x72, 0xca, 0xf9, 0x9d, + 0x59, 0x68, 0xb3, 0xb9, 0xb2, 0xbf, 0x77, 0x19, 0x9e, 0x34, 0x69, 0x57, + 0x48, 0x42, 0xbe, 0xa8, 0x83, 0xd1, 0x09, 0x2e, 0x71, 0x4b, 0xb9, 0xd4, + 0x1c, 0x29, 0xc2, 0x14, 0x6d, 0x23, 0x09, 0x82, 0xa8, 0xe0, 0x4e, 0x25, + 0x40, 0x61, 0x06, 0xa1, 0x8c, 0xa5, 0x5c, 0x58, 0x14, 0xda, 0x6e, 0x49, + 0xff, 0xff, 0x9f, 0xe4, 0xd0, 0x36, 0xe1, 0xa5, 0xf6, 0xeb, 0x2e, 0x28, + 0x4a, 0x15, 0xa2, 0xde, 0xdd, 0x8d, 0x32, 0x25, 0x6c, 0x8c, 0x34, 0x25, + 0x56, 0xde, 0x3b, 0xdc, 0xf8, 0xed, 0xf1, 0xea, 0x9b, 0xf6, 0xfd, 0xbd, + 0x2c, 0xe5, 0xb1, 0x02, 0x3f, 0x29, 0x66, 0xee, 0x70, 0x8c, 0x89, 0xa1, + 0x87, 0x88, 0x71, 0xf8, 0x25, 0x92, 0x7b, 0x3d, 0x2b, 0xc2, 0xc8, 0x91, + 0x5a, 0x3d, 0xfc, 0xf3, 0x35, 0xea, 0x96, 0x4b, 0x9d, 0x48, 0x90, 0x8f, + 0xc2, 0xa1, 0x02, 0x63, 0x85, 0x95, 0x28, 0xda, 0x92, 0x5f, 0xff, 0xfc, + 0xfb, 0x7f, 0xfc, 0xff, 0xbf, 0xae, 0x7f, 0xbc, 0x43, 0x55, 0xcd, 0x07, + 0x36, 0x36, 0xc1, 0x20, 0x36, 0xb8, 0x16, 0x30, 0x20, 0x44, 0xc6, 0x1d, + 0xc4, 0x84, 0x90, 0x29, 0xa2, 0xc3, 0x07, 0xcb, 0x3a, 0xf9, 0xa0, 0xa8, + 0x3d, 0x49, 0xb8, 0xd7, 0x24, 0x27, 0x82, 0xac, 0xd2, 0x3c, 0x55, 0xf0, + 0x9d, 0xbc, 0x3c, 0x54, 0x4d, 0x51, 0x9b, 0x09, 0x82, 0xbd, 0xb0, 0xc1, + 0x47, 0xb9, 0x89, 0xf9, 0xfa, 0xcc, 0x9d, 0x66, 0x2f, 0xef, 0x1a, 0x19, + 0x8e, 0x53, 0x24, 0xef, 0x52, 0xbe, 0x78, 0xaa, 0x63, 0x4c, 0x39, 0x9d, + 0x45, 0xbe, 0x19, 0x8e, 0xa0, 0x25, 0xec, 0x28, 0x82, 0xe1, 0x32, 0x91, + 0xf1, 0xf2, 0xce, 0x94, 0x26, 0x8e, 0x30, 0x97, 0xfc, 0x64, 0x30, 0x94, + 0x19, 0x45, 0xf8, 0xca, 0x2d, 0x88, 0xe8, 0xf3, 0xaa, 0xe2, 0xbc, 0x67, + 0x75, 0x0d, 0xed, 0xd4, 0x8d, 0x89, 0xa6, 0xd4, 0xdb, 0x2a, 0x45, 0xf2, + 0xca, 0x39, 0x80, 0xfd, 0x60, 0x8b, 0x2b, 0x0a, 0xa5, 0x77, 0x3b, 0xc7, + 0x2a, 0x32, 0x22, 0x1c, 0x12, 0xa9, 0xf6, 0x46, 0x19, 0xe2, 0xae, 0xd2, + 0x0c, 0x07, 0xfb, 0x92, 0x18, 0xa6, 0x69, 0x4a, 0x3c, 0x81, 0x98, 0xc7, + 0xe3, 0x22, 0x96, 0x20, 0xfb, 0x64, 0x9d, 0x36, 0xa5, 0x56, 0xba, 0xda, + 0x1a, 0xf6, 0x0b, 0xcb, 0x39, 0xb3, 0xaa, 0x90, 0x87, 0xb3, 0xac, 0x32, + 0xa6, 0x4f, 0x45, 0xf3, 0xf7, 0x68, 0x14, 0x2f, 0x31, 0x74, 0xbd, 0x19, + 0x18, 0xda, 0xaa, 0x3b, 0x8d, 0xd5, 0x4b, 0xb6, 0x17, 0x6d, 0x76, 0x56, + 0x9f, 0xcb, 0x11, 0x1f, 0x2b, 0x59, 0x4e, 0x9a, 0x3f, 0x7e, 0xb9, 0x39, + 0x7d, 0x11, 0x08, 0xde, 0xd4, 0x72, 0x2b, 0xe5, 0x24, 0x9d, 0x9c, 0xa8, + 0x4f, 0x2f, 0x69, 0x10, 0xf3, 0x28, 0xf4, 0xb4, 0x73, 0x5d, 0x10, 0xe0, + 0x74, 0x97, 0x83, 0x21, 0x5c, 0x95, 0x12, 0x47, 0xe5, 0x19, 0x6f, 0x03, + 0x18, 0xb0, 0xab, 0x88, 0x68, 0xc6, 0x68, 0x53, 0x03, 0xf0, 0x97, 0x21, + 0xaa, 0x4d, 0x02, 0xec, 0x6d, 0xc8, 0x9c, 0x52, 0x38, 0xd0, 0x99, 0xc5, + 0x88, 0x8a, 0xc0, 0x50, 0x0f, 0x49, 0x3d, 0x13, 0xd4, 0x73, 0xa9, 0xf9, + 0x36, 0xb2, 0x52, 0x5f, 0xcc, 0x68, 0xc8, 0xfd, 0xf6, 0x10, 0x2a, 0x84, + 0x36, 0xf8, 0xf7, 0xfe, 0x6f, 0xee, 0x8e, 0xc1, 0xb7, 0x13, 0x15, 0xf8, + 0x20, 0xca, 0x41, 0x41, 0x42, 0xb1, 0x8b, 0x20, 0x43, 0x9e, 0xc9, 0x33, + 0x3a, 0x54, 0xb5, 0x9e, 0xa6, 0x16, 0xa0, 0x88, 0x54, 0x56, 0x38, 0xa5, + 0x29, 0xc8, 0xac, 0xd2, 0xb9, 0x52, 0xac, 0x51, 0xd7, 0xe5, 0xbd, 0x91, + 0x57, 0x7b, 0x98, 0xe5, 0x4b, 0x9e, 0xe5, 0xbe, 0x4e, 0xdf, 0xdb, 0xff, + 0xdf, 0xcf, 0xeb, 0x25, 0x73, 0x4c, 0x8a, 0x77, 0xac, 0x2b, 0x8a, 0x67, + 0x62, 0x12, 0x90, 0xae, 0x70, 0x48, 0x74, 0x63, 0xba, 0x07, 0x03, 0x08, + 0xaa, 0x00, 0x00, 0x65, 0x59, 0x50, 0x3c, 0xb1, 0x90, 0xc6, 0x32, 0xcd, + 0xb9, 0x75, 0x77, 0x16, 0x1c, 0x44, 0x95, 0xca, 0x13, 0x24, 0x54, 0x3d, + 0xf2, 0xe5, 0x88, 0x9c, 0xb1, 0x25, 0x90, 0xe6, 0xa6, 0x05, 0x84, 0x44, + 0xd1, 0x10, 0xb5, 0xf5, 0x62, 0x0d, 0x0d, 0x55, 0x1c, 0x11, 0xce, 0x23, + 0xa1, 0xad, 0x9c, 0xb8, 0xa7, 0x20, 0x97, 0x97, 0x06, 0x46, 0x34, 0x62, + 0x8d, 0x91, 0xd3, 0x98, 0xbc, 0x6e, 0x37, 0x5a, 0xd4, 0x08, 0x59, 0xe6, + 0x7e, 0x29, 0xd5, 0xe6, 0x09, 0xb5, 0x78, 0x51, 0x63, 0x2a, 0xd3, 0xcc, + 0xc9, 0x06, 0x45, 0xe7, 0x69, 0x74, 0xab, 0x05, 0x18, 0xdb, 0x15, 0x4b, + 0xe7, 0xec, 0x03, 0x99, 0x83, 0x09, 0xf4, 0x7c, 0x55, 0x2b, 0x24, 0x28, + 0xcc, 0xf3, 0xb6, 0x38, 0x32, 0x2e, 0xa8, 0x7e, 0xcc, 0xa8, 0x8c, 0xff, + 0x4a, 0xc4, 0x14, 0x93, 0xb1, 0xde, 0xcd, 0x0f, 0xe1, 0xc9, 0xb9, 0x2e, + 0xc8, 0xbe, 0xa3, 0x7d, 0xb9, 0x95, 0xee, 0x39, 0x56, 0x41, 0x63, 0x81, + 0x77, 0x05, 0x05, 0x5c, 0xe2, 0xb6, 0xb7, 0x37, 0x40, 0x3b, 0x55, 0xdd, + 0x9d, 0x5b, 0x33, 0xc6, 0xe8, 0xff, 0xfb, 0xd4, 0x60, 0x50, 0x09, 0x07, + 0x86, 0x76, 0xbd, 0xc9, 0xef, 0x7b, 0x70, 0x6e, 0xcd, 0x58, 0x5d, 0x24, + 0xc2, 0x6e, 0x5d, 0x85, 0xda, 0xf7, 0x06, 0x3d, 0xed, 0xc2, 0x01, 0x3a, + 0x20, 0xf4, 0x64, 0x8d, 0xb9, 0x6c, 0xef, 0x5c, 0x19, 0xe6, 0x53, 0x61, + 0xfb, 0x5b, 0x86, 0x99, 0x21, 0xb2, 0x38, 0xc3, 0xab, 0xc6, 0x68, 0xce, + 0xe6, 0x82, 0xe1, 0x49, 0x56, 0x59, 0x14, 0xd1, 0xa8, 0xca, 0xf5, 0xfc, + 0x8f, 0x63, 0xa5, 0x1e, 0x3b, 0x67, 0x76, 0xaf, 0x8a, 0x86, 0xb9, 0xc7, + 0x88, 0xb4, 0x75, 0x17, 0x34, 0x73, 0x6b, 0x09, 0xec, 0x7b, 0x2e, 0x91, + 0x6d, 0x2b, 0xa2, 0x4e, 0x75, 0xa1, 0x8c, 0x8a, 0xb2, 0x08, 0x9d, 0x13, + 0x20, 0xd3, 0x67, 0x51, 0x0d, 0x9c, 0x0f, 0xa0, 0xc2, 0x03, 0x91, 0x01, + 0x56, 0xe8, 0x19, 0x24, 0xb7, 0x6d, 0x64, 0x96, 0xd9, 0x07, 0xf6, 0xc8, + 0x52, 0x73, 0x5c, 0x91, 0x89, 0x92, 0x12, 0xdd, 0xa8, 0x32, 0x44, 0x07, + 0xb9, 0x21, 0xac, 0x04, 0x0f, 0xf6, 0xd0, 0x49, 0x02, 0x0c, 0x7c, 0x4f, + 0xd7, 0x86, 0xdf, 0xdf, 0x5b, 0xfc, 0xbf, 0xb9, 0x1f, 0xe6, 0x6d, 0x7c, + 0x34, 0x29, 0xd0, 0x59, 0x16, 0x8c, 0xab, 0x12, 0x76, 0xcc, 0xae, 0xce, + 0x82, 0x9c, 0xf6, 0x0f, 0x59, 0x9a, 0x93, 0x94, 0xac, 0xa0, 0xe8, 0xa7, + 0x62, 0x12, 0x77, 0x79, 0x6d, 0x67, 0x62, 0x14, 0xc7, 0x75, 0xb8, 0xd4, + 0x91, 0xdc, 0xb7, 0x33, 0x1f, 0x4a, 0x94, 0xc5, 0x5c, 0x85, 0xbf, 0xff, + 0xff, 0xfe, 0xff, 0x6f, 0xc8, 0x4a, 0x51, 0x0d, 0x16, 0x41, 0xe1, 0x35, + 0xae, 0xce, 0x3c, 0x61, 0x41, 0x85, 0x73, 0xad, 0x17, 0x93, 0x87, 0x0d, + 0x16, 0xec, 0x13, 0xa8, 0x40, 0x8a, 0xe7, 0xf2, 0x9d, 0x27, 0x51, 0xbc, + 0x8c, 0x4e, 0x2d, 0xae, 0x1b, 0xd5, 0xa5, 0xe8, 0xe1, 0x9d, 0x26, 0xbc, + 0x62, 0x36, 0x3d, 0x42, 0x8f, 0x48, 0x84, 0x29, 0x85, 0x42, 0xc9, 0x29, + 0xc2, 0xf5, 0x53, 0xa9, 0x91, 0x09, 0x85, 0xc4, 0xc9, 0x84, 0xd3, 0x1b, + 0x08, 0xfc, 0x52, 0x2b, 0x90, 0xe8, 0x18, 0x7c, 0xc7, 0x46, 0x49, 0x93, + 0xca, 0xf6, 0x46, 0x15, 0x2a, 0x8d, 0x50, 0xcb, 0xd1, 0x92, 0xb9, 0x9e, + 0xcd, 0xdb, 0x5a, 0x62, 0x61, 0x42, 0x97, 0x0e, 0x11, 0x5b, 0xe1, 0xb7, + 0x23, 0x16, 0x9f, 0xa7, 0x94, 0xa8, 0x54, 0x63, 0x9d, 0x3c, 0xee, 0x57, + 0x17, 0x6c, 0xad, 0xac, 0x0b, 0x8f, 0xb5, 0x2a, 0x3d, 0xda, 0x57, 0x0c, + 0x6e, 0x95, 0xcd, 0x4c, 0xab, 0xb8, 0x90, 0x5c, 0x25, 0xdc, 0x15, 0x72, + 0xc2, 0x3e, 0x23, 0x12, 0x72, 0x3b, 0x9a, 0x7d, 0x6a, 0x8d, 0x4e, 0x0b, + 0x33, 0x59, 0xf3, 0x56, 0x53, 0xf9, 0x85, 0x55, 0xe8, 0x51, 0x74, 0xd8, + 0xfe, 0x2c, 0x06, 0x28, 0x6b, 0x49, 0xd9, 0xd7, 0x2a, 0xa7, 0xc9, 0xfb, + 0xbd, 0x67, 0x6e, 0x50, 0x4f, 0x1d, 0xf3, 0x8b, 0x93, 0xc8, 0x10, 0x1b, + 0xa5, 0x79, 0x97, 0xd2, 0xa9, 0xb6, 0xc6, 0xd1, 0x01, 0x76, 0xc5, 0x19, + 0x58, 0xe3, 0x68, 0xac, 0x34, 0x4f, 0xca, 0xa5, 0x65, 0x62, 0x9d, 0xcc, + 0xf2, 0x41, 0xb8, 0xa3, 0x11, 0xe8, 0x51, 0xd6, 0x4d, 0xd4, 0x46, 0xe2, + 0xa2, 0x87, 0xea, 0x08, 0x95, 0x97, 0x04, 0x8b, 0xf3, 0x4e, 0xc6, 0x09, + 0x79, 0x32, 0x03, 0xbc, 0xeb, 0x13, 0xd1, 0xf4, 0x05, 0xa1, 0x82, 0xe3, + 0x38, 0x29, 0xb7, 0x5a, 0xaf, 0xb9, 0x6d, 0x6d, 0x8f, 0xca, 0xe1, 0x0c, + 0x10, 0x14, 0x92, 0xad, 0x87, 0x82, 0x11, 0x66, 0xe5, 0xb3, 0x9e, 0x9c, + 0x2a, 0x66, 0xf3, 0x2f, 0xae, 0x4f, 0x11, 0x22, 0xa9, 0xaf, 0xbf, 0xfa, + 0xdf, 0x24, 0x10, 0x9f, 0xf0, 0xb7, 0xb8, 0xda, 0xd5, 0x32, 0x44, 0x70, + 0xe6, 0x96, 0x04, 0x20, 0x16, 0xca, 0xe2, 0x2d, 0x0c, 0x0c, 0x30, 0x40, + 0xe1, 0xc3, 0x98, 0x71, 0xe0, 0x41, 0x68, 0x06, 0x80, 0x71, 0x16, 0x1d, + 0xca, 0x9c, 0x63, 0x36, 0xa5, 0xc3, 0x87, 0xe6, 0x7e, 0x48, 0xf5, 0x32, + 0x2f, 0x29, 0xff, 0x91, 0x49, 0x1d, 0x4e, 0x91, 0x1f, 0x57, 0x92, 0x14, + 0x24, 0x38, 0xd3, 0x3f, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0xff, + 0x38, 0xdd, 0x04, 0x0b, 0x47, 0x0f, 0xe6, 0x50, 0x30, 0x90, 0xa8, 0xaf, + 0x50, 0x0e, 0x16, 0x14, 0x10, 0x5d, 0x08, 0x79, 0xf7, 0x02, 0x3f, 0x87, + 0xeb, 0x28, 0x28, 0x63, 0xa4, 0xe6, 0x38, 0x8a, 0xd3, 0xd1, 0xf1, 0x98, + 0xc6, 0x72, 0xb2, 0x8f, 0xa5, 0xc2, 0x12, 0x95, 0x6b, 0x8f, 0xcd, 0xd5, + 0x58, 0x56, 0x02, 0x51, 0x07, 0x47, 0xa3, 0xb0, 0x7c, 0x62, 0x20, 0x0b, + 0x63, 0x1e, 0x07, 0x62, 0xba, 0x09, 0x30, 0xcd, 0x54, 0x41, 0xe8, 0x50, + 0x70, 0x55, 0x3d, 0x38, 0x39, 0xa9, 0x56, 0xae, 0x81, 0x72, 0xdd, 0x8c, + 0x07, 0xe4, 0xe2, 0x31, 0xc7, 0xaa, 0xd7, 0xd8, 0xd5, 0x4c, 0x2d, 0xee, + 0x0d, 0xe8, 0x33, 0x26, 0x23, 0xb6, 0x33, 0xf1, 0x6d, 0x9d, 0xd3, 0xd3, + 0x82, 0x3a, 0x79, 0xb5, 0x96, 0x11, 0xd4, 0xca, 0xce, 0x85, 0x4c, 0xa7, + 0x30, 0x21, 0x3f, 0x97, 0x0c, 0x6d, 0x09, 0xe8, 0xcc, 0x50, 0xa2, 0xc7, + 0x4e, 0xb3, 0xc2, 0x93, 0x57, 0x5b, 0x8a, 0xd4, 0x87, 0x23, 0xd8, 0x9d, + 0x65, 0x70, 0xbf, 0x11, 0x48, 0xa8, 0x59, 0x37, 0xa0, 0xad, 0x59, 0xeb, + 0xe8, 0xae, 0x4b, 0x87, 0xb7, 0x57, 0xb3, 0x2e, 0xa3, 0x43, 0x6e, 0x52, + 0x1f, 0x8b, 0x4e, 0x77, 0x65, 0x6c, 0x9d, 0x52, 0x7f, 0xae, 0x8e, 0x28, + 0xb0, 0x54, 0x76, 0xa6, 0x14, 0x0c, 0x8c, 0xcf, 0x58, 0x21, 0x4c, 0x9c, + 0x71, 0xac, 0xb0, 0xd1, 0xac, 0xff, 0xfb, 0xd4, 0x60, 0x58, 0x00, 0x07, + 0x7a, 0x76, 0xbd, 0x29, 0xec, 0x7b, 0x70, 0x71, 0x08, 0x98, 0x6d, 0x30, + 0xc6, 0x5d, 0x1e, 0x0d, 0xd8, 0xf7, 0x26, 0x3d, 0xed, 0xc1, 0xdf, 0xb9, + 0x61, 0x34, 0xc3, 0x15, 0xbd, 0x4e, 0xe1, 0xbb, 0xba, 0x41, 0x44, 0xa2, + 0x79, 0x68, 0x92, 0xb0, 0xb5, 0x45, 0x44, 0x4b, 0x9d, 0xbd, 0xa2, 0xb2, + 0x59, 0x1b, 0xd8, 0x1b, 0xe1, 0xb9, 0xbe, 0x34, 0x5c, 0xdb, 0x16, 0xd5, + 0x0c, 0xe3, 0xe9, 0x6c, 0xe0, 0x53, 0x1e, 0x39, 0x56, 0x89, 0xab, 0xf8, + 0x2f, 0xcb, 0xfa, 0xa4, 0x21, 0xc4, 0x99, 0x26, 0x74, 0x8d, 0xd2, 0x0e, + 0x4a, 0xd5, 0xe2, 0x42, 0x34, 0x8d, 0xa4, 0xb6, 0xc3, 0x76, 0xed, 0xbf, + 0x96, 0x69, 0x1a, 0x24, 0x4c, 0xc6, 0xd5, 0x19, 0x4c, 0x84, 0x6e, 0x60, + 0x2e, 0x46, 0x24, 0xf0, 0x22, 0x55, 0x03, 0x83, 0x88, 0x11, 0x16, 0x42, + 0xe5, 0x9a, 0x0f, 0x14, 0x95, 0x91, 0x7d, 0xad, 0xf3, 0xbf, 0x01, 0x0e, + 0x22, 0x8a, 0x34, 0x62, 0xd7, 0xb5, 0xed, 0xf7, 0x5d, 0x2a, 0x5e, 0xc1, + 0x3c, 0x85, 0x2f, 0x52, 0xed, 0x93, 0xbe, 0xf2, 0x9a, 0xff, 0x7f, 0x36, + 0xfe, 0xb6, 0xaf, 0x22, 0xf5, 0xa6, 0xf2, 0x5d, 0x29, 0xfb, 0xdd, 0xa3, + 0x76, 0xbf, 0x6f, 0xfb, 0x7f, 0x9a, 0xcc, 0xee, 0xde, 0x19, 0x38, 0x7c, + 0x3e, 0x58, 0x90, 0x6d, 0x01, 0x31, 0x12, 0xe8, 0x34, 0xff, 0xff, 0xee, + 0xde, 0xd0, 0xc9, 0xa5, 0x06, 0x88, 0x1e, 0x24, 0x92, 0x12, 0x6a, 0x11, + 0x08, 0x40, 0x40, 0x65, 0x14, 0xa4, 0x09, 0x95, 0x55, 0xbd, 0xc0, 0x08, + 0x08, 0x95, 0xe8, 0x34, 0x9c, 0x97, 0x28, 0x7e, 0xf1, 0x95, 0x20, 0x3e, + 0x60, 0xb4, 0x9c, 0xea, 0xa5, 0x22, 0x1c, 0xd0, 0xd0, 0x5c, 0x12, 0xc8, + 0x67, 0x61, 0x4a, 0xb3, 0xbf, 0x3a, 0xd5, 0x89, 0xa5, 0x69, 0x7c, 0x37, + 0xdc, 0x99, 0x59, 0x5c, 0x13, 0x87, 0xd1, 0xcd, 0x53, 0xf5, 0x5f, 0x1b, + 0x4c, 0x4e, 0x6d, 0xb1, 0xa9, 0x59, 0x20, 0xae, 0x62, 0x1f, 0x4e, 0xe6, + 0x30, 0x9d, 0xb2, 0xe0, 0xc7, 0x64, 0x42, 0xa2, 0xa3, 0x95, 0xe5, 0xc5, + 0xc9, 0x85, 0x89, 0x24, 0x75, 0x21, 0x8b, 0xb2, 0xc2, 0xa8, 0x3c, 0x22, + 0x2b, 0x57, 0xdb, 0x17, 0x6d, 0x4a, 0xaa, 0x5a, 0x66, 0xa5, 0x43, 0x9c, + 0x26, 0x16, 0x57, 0xea, 0xe5, 0xd1, 0xbe, 0x89, 0x4d, 0x2b, 0x93, 0xad, + 0xad, 0x97, 0x61, 0x99, 0x72, 0xf9, 0x85, 0x49, 0x11, 0xe2, 0xa1, 0x81, + 0x5b, 0x65, 0xcb, 0x02, 0xb1, 0x5a, 0xfe, 0x2c, 0xeb, 0x95, 0x5e, 0x98, + 0x9e, 0x28, 0x23, 0xc5, 0x71, 0x61, 0x55, 0xc5, 0x62, 0xd3, 0xb8, 0x8f, + 0x65, 0x84, 0xe0, 0xc2, 0xd4, 0xe4, 0xde, 0xe6, 0xd9, 0x24, 0x74, 0x27, + 0x6c, 0x2c, 0x33, 0xe1, 0x89, 0xd4, 0x58, 0x91, 0x64, 0x70, 0x9d, 0x9d, + 0x8e, 0x12, 0xed, 0xd4, 0x18, 0xf5, 0x81, 0x19, 0x85, 0x6d, 0xce, 0x3f, + 0xab, 0x33, 0x56, 0xe8, 0xfe, 0x76, 0x4a, 0xad, 0x21, 0x87, 0x69, 0xa6, + 0xaf, 0x61, 0x7c, 0xd4, 0xd2, 0xc6, 0x9e, 0x43, 0x60, 0x27, 0x9e, 0x1e, + 0xef, 0xce, 0x64, 0xc1, 0xe2, 0x74, 0xa3, 0x11, 0x87, 0x01, 0x70, 0x14, + 0x84, 0x58, 0xcf, 0x23, 0xc8, 0xd0, 0x74, 0x0b, 0x34, 0x50, 0xfa, 0x85, + 0x54, 0xd0, 0x2e, 0x49, 0x35, 0xad, 0x39, 0x1b, 0x20, 0x09, 0x9e, 0x4f, + 0x88, 0xc5, 0xa2, 0x61, 0xe3, 0xf0, 0x9c, 0xb2, 0x75, 0x60, 0x60, 0xa2, + 0xcc, 0x10, 0x48, 0x6e, 0x06, 0x27, 0xaf, 0x8d, 0x74, 0xd3, 0xb5, 0x6f, + 0xe2, 0x61, 0x8f, 0xe6, 0x1a, 0x99, 0x6b, 0xe7, 0x61, 0xd7, 0x1a, 0x81, + 0x84, 0x1f, 0x4e, 0xf2, 0xf3, 0x0f, 0x3a, 0x23, 0xd8, 0x48, 0xa5, 0xa1, + 0xc6, 0x3b, 0xa0, 0x42, 0x47, 0x47, 0x11, 0x61, 0x53, 0x9f, 0x47, 0x33, + 0xd8, 0x40, 0xcc, 0xca, 0x7b, 0x9d, 0x0c, 0x94, 0xd7, 0x74, 0x63, 0x9d, + 0xcf, 0x61, 0x1f, 0x2a, 0x2a, 0x29, 0xb6, 0x75, 0x79, 0x28, 0x92, 0x2e, + 0xdd, 0xdd, 0xbf, 0xff, 0xff, 0xfa, 0xd9, 0xad, 0x24, 0xeb, 0x3e, 0xa6, + 0x71, 0x6a, 0x1c, 0x74, 0x7a, 0x29, 0x87, 0xb0, 0x82, 0x55, 0x45, 0x51, + 0x40, 0x65, 0x05, 0x6b, 0xba, 0x9a, 0xa9, 0x27, 0x4b, 0xb2, 0xf0, 0x7a, + 0x44, 0x24, 0x36, 0x88, 0x3c, 0x84, 0x42, 0x24, 0x10, 0xc7, 0x21, 0x24, + 0x49, 0x3a, 0x2b, 0x95, 0x8c, 0x84, 0xc1, 0x2c, 0x84, 0x44, 0x7d, 0x22, + 0x08, 0x9e, 0xbd, 0xf1, 0x92, 0xc1, 0x39, 0x4a, 0xd3, 0x92, 0xf9, 0x34, + 0xa8, 0x46, 0x3c, 0x10, 0xd0, 0xd8, 0x23, 0xbc, 0x9d, 0xc2, 0xbd, 0x0c, + 0x5f, 0xe1, 0x58, 0x17, 0x1f, 0x47, 0xe3, 0x53, 0x26, 0x06, 0x95, 0xea, + 0xc5, 0x06, 0x1d, 0x9d, 0x6a, 0xdc, 0xb0, 0x1d, 0x73, 0x99, 0x68, 0x6b, + 0x83, 0x93, 0xf5, 0x64, 0x37, 0xaf, 0xb0, 0xa3, 0x86, 0xd6, 0x4a, 0x93, + 0xb0, 0x0d, 0x3c, 0x30, 0x65, 0x5e, 0xe7, 0x7c, 0x9a, 0x6a, 0xbb, 0x29, + 0x90, 0xc2, 0x5c, 0xe2, 0x87, 0xb7, 0xb7, 0x2a, 0x11, 0xea, 0xa5, 0x1b, + 0x6c, 0x49, 0x55, 0xcc, 0x70, 0x14, 0xcc, 0x8a, 0x28, 0xca, 0x78, 0x4d, + 0xcf, 0x19, 0x57, 0x29, 0xf5, 0xc9, 0xc6, 0x86, 0xf4, 0x2c, 0xd3, 0x56, + 0x29, 0xd8, 0x19, 0xdc, 0xe3, 0xb4, 0xb9, 0xbb, 0x9a, 0x44, 0x73, 0xba, + 0xed, 0x53, 0xb6, 0xe3, 0xb2, 0xb0, 0x70, 0xd4, 0xcb, 0x56, 0x39, 0xe2, + 0x41, 0xbc, 0x5c, 0x62, 0x0e, 0x5b, 0xe4, 0xad, 0x1f, 0xcd, 0xb8, 0x1a, + 0x8f, 0x76, 0x78, 0xb9, 0xdc, 0x5b, 0x43, 0x9f, 0x6d, 0xf1, 0x72, 0xf2, + 0xef, 0x21, 0xc6, 0x78, 0xe3, 0xff, 0xfb, 0xd4, 0x60, 0x61, 0x80, 0x07, + 0x40, 0x75, 0xbe, 0xc9, 0x8c, 0x7b, 0x72, 0x81, 0xee, 0xa8, 0x3d, 0x19, + 0x25, 0x6e, 0x21, 0x99, 0xda, 0xf1, 0x07, 0xb1, 0xed, 0xc1, 0xf7, 0x38, + 0x60, 0xf4, 0xc3, 0x0d, 0xb9, 0x09, 0xea, 0xee, 0xef, 0xe6, 0x7f, 0x19, + 0x63, 0x4c, 0x49, 0x84, 0xdb, 0x63, 0xc4, 0x83, 0x6b, 0x69, 0xc9, 0xa5, + 0x23, 0xb3, 0x88, 0xf9, 0x2f, 0x0c, 0x0d, 0x27, 0xf9, 0x6d, 0x20, 0x6a, + 0x92, 0x40, 0x8e, 0x43, 0x1e, 0x0a, 0x05, 0xa6, 0xdc, 0xbb, 0x49, 0xdc, + 0x8e, 0x21, 0xfe, 0x91, 0x18, 0x9d, 0x31, 0x84, 0xa9, 0x05, 0x0b, 0x41, + 0xa4, 0x46, 0xe4, 0x6c, 0x99, 0x41, 0x72, 0xe0, 0xe1, 0xb0, 0x75, 0x99, + 0xcb, 0xc1, 0x79, 0x2e, 0xc2, 0x77, 0xf5, 0xc9, 0x39, 0x84, 0x46, 0x55, + 0x30, 0x30, 0x36, 0x85, 0x92, 0xc9, 0x6d, 0x42, 0xb7, 0xd5, 0xfb, 0x39, + 0x8e, 0x51, 0xec, 0x45, 0x11, 0x9c, 0x4d, 0x8b, 0x30, 0x9a, 0x8d, 0x53, + 0x45, 0x90, 0xe4, 0x6b, 0x1c, 0x96, 0x93, 0x4b, 0xa3, 0x15, 0x98, 0xce, + 0x9b, 0x08, 0x91, 0x04, 0x1c, 0x8e, 0xad, 0x3a, 0xa0, 0x83, 0x9a, 0xb2, + 0x1c, 0x45, 0xb2, 0xd1, 0x91, 0xae, 0x56, 0xb2, 0x6e, 0xf7, 0x26, 0xb5, + 0xff, 0xf6, 0xff, 0xba, 0x6b, 0x69, 0x0f, 0x4c, 0x8f, 0x74, 0x38, 0xe2, + 0x9d, 0x14, 0xf1, 0x99, 0x94, 0x45, 0xc1, 0x45, 0x0e, 0x26, 0x2e, 0xac, + 0x57, 0x72, 0x08, 0x50, 0x00, 0x08, 0x14, 0x51, 0xae, 0x68, 0x19, 0x66, + 0x48, 0x5f, 0xbc, 0x26, 0xa4, 0x1c, 0xb4, 0x4f, 0xce, 0x5b, 0x50, 0xf7, + 0x76, 0x48, 0x4a, 0x09, 0x05, 0x62, 0x40, 0xac, 0x73, 0x13, 0x82, 0xa0, + 0x6e, 0x27, 0x18, 0xab, 0x3c, 0x11, 0x44, 0x61, 0xcc, 0x94, 0x0d, 0x04, + 0xa2, 0x78, 0x1d, 0x18, 0x95, 0x9c, 0x11, 0x00, 0xa8, 0xe8, 0x33, 0x11, + 0x80, 0x99, 0x29, 0x51, 0xa1, 0x00, 0xb0, 0x1e, 0x8e, 0xef, 0x8a, 0x43, + 0xc3, 0xd2, 0x5a, 0x25, 0x43, 0xb0, 0x9c, 0x39, 0x23, 0xd5, 0x70, 0x98, + 0x4a, 0xc7, 0xef, 0x0f, 0x94, 0xf2, 0x1b, 0x08, 0x99, 0x16, 0x04, 0xe3, + 0xcc, 0x47, 0x52, 0x21, 0xcb, 0x4d, 0xeb, 0x2e, 0x98, 0x63, 0xb1, 0x2e, + 0x19, 0x90, 0x84, 0xc1, 0x76, 0x43, 0xd3, 0x52, 0x38, 0x96, 0xd2, 0xf8, + 0xc8, 0x68, 0x1f, 0x28, 0x60, 0x48, 0xd0, 0xe3, 0xc0, 0xf1, 0x8e, 0xc0, + 0x91, 0x80, 0xb8, 0x5a, 0x31, 0x1d, 0x46, 0xc3, 0x52, 0x80, 0xfe, 0x3b, + 0x90, 0x84, 0xfc, 0x46, 0x88, 0x8a, 0x6b, 0xb3, 0xb2, 0xab, 0x17, 0x6b, + 0x98, 0x44, 0xd6, 0x43, 0x45, 0x6f, 0x68, 0x83, 0x99, 0xea, 0x8d, 0x89, + 0x99, 0xad, 0x58, 0xbc, 0xc6, 0x51, 0x23, 0x0f, 0x04, 0xe1, 0x63, 0x27, + 0xe7, 0x9c, 0xab, 0xa4, 0xeb, 0x13, 0xf6, 0x36, 0x06, 0x05, 0x6b, 0x0e, + 0x55, 0x49, 0x55, 0x63, 0x53, 0x8a, 0xe8, 0xe9, 0x65, 0x8c, 0x92, 0x44, + 0xaa, 0x11, 0x48, 0xd7, 0x15, 0x41, 0xd6, 0x9e, 0x27, 0x85, 0xd1, 0x72, + 0xc6, 0xd2, 0xb8, 0x3f, 0x14, 0xca, 0x94, 0x9e, 0x8f, 0x03, 0x99, 0x0e, + 0x37, 0x4e, 0x96, 0x67, 0x6f, 0xd2, 0x0a, 0x53, 0xf0, 0xec, 0x63, 0x24, + 0xc1, 0xcc, 0x64, 0x92, 0x84, 0x71, 0x18, 0x26, 0x47, 0x82, 0x25, 0xc0, + 0xa6, 0x1f, 0x07, 0xd0, 0x71, 0x29, 0x43, 0x81, 0xac, 0x85, 0x0a, 0x71, + 0x71, 0x02, 0x64, 0x58, 0x89, 0xfa, 0x3d, 0x95, 0xd8, 0x2e, 0x57, 0x6c, + 0x5e, 0xc5, 0x2c, 0x8d, 0x89, 0x9a, 0xd1, 0x73, 0x42, 0xa3, 0x41, 0x78, + 0xf0, 0xb3, 0x8a, 0x87, 0x46, 0xe5, 0x13, 0x59, 0x12, 0xbd, 0x7e, 0xd6, + 0x3c, 0x14, 0x93, 0xd6, 0x10, 0x72, 0x04, 0xb3, 0x5d, 0x02, 0x8b, 0x4c, + 0xe9, 0xff, 0x63, 0x1b, 0xdb, 0x3f, 0xaf, 0xd9, 0x9f, 0x70, 0x60, 0x63, + 0xfa, 0x39, 0x25, 0x31, 0x18, 0x6c, 0x3d, 0x12, 0xa5, 0x13, 0x0e, 0xd7, + 0x2f, 0x8c, 0xee, 0x1f, 0x30, 0xd2, 0x41, 0x62, 0x85, 0xb6, 0x49, 0x4c, + 0x3d, 0x7f, 0x9f, 0xb1, 0x99, 0x12, 0xea, 0xf9, 0x97, 0xf1, 0xd2, 0x33, + 0xe5, 0x17, 0xd8, 0xe4, 0x2b, 0x92, 0xe5, 0x94, 0x5f, 0xff, 0xfc, 0xbf, + 0xbf, 0xff, 0xff, 0x91, 0x39, 0xa1, 0x74, 0xba, 0x9b, 0x25, 0xf3, 0x27, + 0x06, 0x14, 0x5a, 0x8a, 0x4c, 0x42, 0x05, 0x61, 0x6a, 0x02, 0x58, 0x14, + 0x9d, 0x01, 0x2a, 0x03, 0xf0, 0xc4, 0xc1, 0x01, 0x88, 0x54, 0x08, 0xae, + 0x1d, 0x4a, 0xe9, 0xcf, 0x49, 0x65, 0x32, 0x68, 0xe2, 0xa5, 0x3a, 0x5f, + 0x42, 0x43, 0xd5, 0xad, 0x29, 0x4a, 0xc5, 0x3d, 0x8c, 0xd4, 0x39, 0x74, + 0xa2, 0x4d, 0x28, 0xd2, 0xc5, 0xa9, 0x68, 0xcb, 0x2c, 0xae, 0x9e, 0xa8, + 0x9b, 0x9a, 0xd4, 0x08, 0x95, 0x7d, 0xd0, 0xc4, 0xf4, 0xaf, 0xd4, 0xca, + 0x85, 0x5b, 0xf3, 0x99, 0x89, 0x3e, 0xbc, 0xed, 0x1d, 0x23, 0x7c, 0x46, + 0x08, 0x6c, 0xc9, 0x55, 0x95, 0x97, 0x22, 0xf6, 0xf1, 0x5a, 0xd3, 0x09, + 0xc1, 0x10, 0xa0, 0x42, 0x1d, 0xae, 0x1f, 0x49, 0x56, 0x47, 0x23, 0x21, + 0x10, 0xc2, 0xad, 0x86, 0x81, 0xb4, 0x23, 0xf2, 0x2a, 0x18, 0xaf, 0xcc, + 0x04, 0xeb, 0x3b, 0x0a, 0xda, 0xcb, 0xf6, 0xa7, 0xca, 0x45, 0xca, 0x75, + 0xcd, 0x40, 0x83, 0x71, 0x65, 0xba, 0x71, 0x92, 0x34, 0x8f, 0x57, 0xe1, + 0x37, 0x3e, 0x53, 0xea, 0x22, 0x89, 0x95, 0xf2, 0x02, 0x45, 0x17, 0x62, + 0x8e, 0xe1, 0xa5, 0x01, 0xe1, 0x16, 0x6d, 0x32, 0xcc, 0x9e, 0x6c, 0x53, + 0xe9, 0xfe, 0xe3, 0x1f, 0xd1, 0x6e, 0xb0, 0xb8, 0x56, 0x9e, 0xa8, 0xb6, + 0x38, 0x6a, 0xf6, 0x67, 0x0a, 0xff, 0xfb, 0xd4, 0x60, 0x55, 0x08, 0x07, + 0x78, 0x76, 0x3d, 0x29, 0x8f, 0x7b, 0x70, 0x7b, 0xee, 0x78, 0x3d, 0x31, + 0x23, 0x6e, 0x5e, 0xe9, 0xda, 0xf5, 0x26, 0x3d, 0xed, 0xc1, 0xf4, 0x39, + 0xa0, 0xf4, 0x94, 0x15, 0xb9, 0xbb, 0x5a, 0xbc, 0xac, 0xac, 0x4c, 0xcc, + 0x10, 0xae, 0xd7, 0x1e, 0x1d, 0x56, 0xe9, 0x3e, 0x5c, 0x54, 0xb0, 0x9e, + 0xc6, 0x52, 0x51, 0x81, 0x1a, 0xbb, 0x5c, 0x39, 0x39, 0xb2, 0xbe, 0x50, + 0xc4, 0x42, 0x91, 0xf0, 0x8d, 0x2b, 0x1e, 0x87, 0xe4, 0x12, 0x02, 0xca, + 0x4e, 0x8b, 0x04, 0x16, 0x21, 0xb4, 0xa9, 0x3f, 0x0e, 0x88, 0x26, 0x42, + 0x9a, 0x39, 0x74, 0x2c, 0x82, 0xe6, 0x80, 0xb8, 0x46, 0x18, 0x24, 0x98, + 0xfd, 0x72, 0x05, 0xc9, 0x23, 0x8d, 0xbe, 0xdc, 0xb1, 0xb1, 0x33, 0x8d, + 0x73, 0xcb, 0xc2, 0x53, 0xa5, 0x2a, 0x18, 0x81, 0x7b, 0x0d, 0xfa, 0x9b, + 0xd9, 0xb4, 0xb7, 0x76, 0x2d, 0xbe, 0x79, 0xea, 0x1d, 0xc4, 0x42, 0xc2, + 0xe1, 0x57, 0x36, 0xa0, 0xfb, 0x10, 0xcf, 0x9b, 0x29, 0xde, 0xe6, 0xfb, + 0xf9, 0x5f, 0x75, 0xe1, 0x04, 0xa3, 0x83, 0x24, 0xd1, 0x50, 0x81, 0x84, + 0x70, 0xac, 0x60, 0xb3, 0xc8, 0xc6, 0x0e, 0x41, 0x41, 0x15, 0x90, 0x82, + 0x86, 0x99, 0xa3, 0x75, 0x13, 0x3d, 0xf8, 0xb9, 0x9d, 0x2f, 0x9c, 0x6c, + 0xe7, 0x9e, 0xd4, 0xbb, 0xd4, 0xfd, 0x0d, 0xf5, 0xac, 0x71, 0x59, 0x21, + 0x90, 0xf0, 0xbf, 0xff, 0xff, 0xfc, 0xbc, 0xff, 0xcd, 0xbe, 0x97, 0xcd, + 0x76, 0x73, 0x8b, 0xbf, 0x24, 0x50, 0x74, 0x5a, 0x18, 0xa5, 0x85, 0x15, + 0x95, 0xac, 0x40, 0x74, 0x67, 0x48, 0x54, 0xc8, 0xaa, 0x84, 0xc0, 0xe8, + 0x44, 0x4e, 0x2d, 0x11, 0x4e, 0x43, 0xc3, 0xe5, 0x8a, 0x20, 0x53, 0x54, + 0xba, 0xb0, 0xdd, 0x37, 0x8e, 0x65, 0xfc, 0x29, 0x93, 0xca, 0x38, 0x87, + 0x1c, 0xe6, 0xc1, 0xf0, 0xc0, 0xce, 0x84, 0x2b, 0x62, 0x93, 0x33, 0x9c, + 0xde, 0x2e, 0x6d, 0x28, 0x4b, 0x41, 0x2e, 0x57, 0x1d, 0x6e, 0x93, 0xac, + 0xeb, 0x2d, 0xac, 0x29, 0xd5, 0xd9, 0xd8, 0xa6, 0x42, 0x97, 0x0c, 0x26, + 0xf3, 0xa8, 0x29, 0x8b, 0x9d, 0x15, 0x7a, 0xf8, 0xf0, 0x52, 0xa9, 0xaa, + 0xcc, 0xfa, 0xa7, 0x03, 0xd7, 0x05, 0x5b, 0x69, 0xcc, 0x8c, 0x43, 0xdb, + 0x4e, 0xa5, 0x85, 0xf2, 0x9a, 0x8a, 0xc5, 0x79, 0xd8, 0xd4, 0xba, 0x48, + 0x32, 0x2d, 0x19, 0x8a, 0x15, 0x49, 0xf2, 0xf1, 0xdb, 0xa6, 0xbd, 0xb8, + 0x3e, 0x54, 0xa8, 0xdc, 0x5e, 0x2a, 0x8d, 0x2a, 0xa7, 0x10, 0x07, 0xa6, + 0x27, 0x66, 0x5c, 0xbd, 0x43, 0x12, 0x28, 0xa4, 0x4d, 0x63, 0xa3, 0x97, + 0x2e, 0x50, 0x97, 0x2a, 0xc5, 0x14, 0x16, 0xb7, 0x8b, 0xb5, 0xc4, 0xce, + 0x70, 0x67, 0x6c, 0x3c, 0xa0, 0x3d, 0x92, 0x14, 0x78, 0x2e, 0x56, 0x50, + 0x27, 0x18, 0xd3, 0xd1, 0x98, 0x55, 0xf0, 0x55, 0x10, 0x5d, 0xc6, 0x62, + 0x62, 0x52, 0xa7, 0xa0, 0xd1, 0x5f, 0xb7, 0x51, 0xad, 0x65, 0x72, 0x62, + 0x33, 0x2a, 0xd3, 0x92, 0x8d, 0xd2, 0x7d, 0xa1, 0x5a, 0xc6, 0xf2, 0x06, + 0xe3, 0xc4, 0x67, 0x6b, 0x6d, 0x63, 0xb9, 0xf8, 0xa1, 0x5a, 0x60, 0x91, + 0x3a, 0xa7, 0x75, 0x54, 0x21, 0xc5, 0x18, 0x5f, 0xda, 0x4c, 0x53, 0xa9, + 0x09, 0x6a, 0x1c, 0x45, 0x5b, 0x5b, 0x9a, 0xa5, 0x7d, 0x3e, 0x50, 0x05, + 0xc2, 0xb0, 0xbf, 0x98, 0x62, 0xb8, 0x12, 0x31, 0x96, 0x78, 0xa9, 0x9a, + 0x63, 0x82, 0xdb, 0x72, 0x4d, 0x63, 0x73, 0x48, 0xd0, 0xff, 0x57, 0x14, + 0xb6, 0x4a, 0xe5, 0x5c, 0x6d, 0x57, 0x08, 0x13, 0x30, 0x1b, 0x15, 0x32, + 0xa2, 0x30, 0xa8, 0x3e, 0x40, 0xab, 0xa5, 0x44, 0x44, 0x2a, 0x0d, 0xef, + 0x7a, 0x5d, 0x78, 0x8b, 0xd2, 0xf4, 0x8c, 0xc4, 0x77, 0x83, 0x62, 0x18, + 0x0a, 0x16, 0x3c, 0x44, 0x28, 0x07, 0x20, 0xa8, 0x74, 0x50, 0x82, 0x27, + 0x09, 0x55, 0x79, 0xc4, 0x06, 0xab, 0x14, 0x97, 0x9c, 0x7c, 0xae, 0x8a, + 0x43, 0x8b, 0x92, 0x72, 0xdc, 0xe7, 0x43, 0xa2, 0x9e, 0x8d, 0x44, 0x42, + 0x50, 0xcc, 0x8c, 0x6e, 0xb3, 0xba, 0x23, 0x23, 0xcb, 0xcb, 0x4a, 0x15, + 0xa6, 0xd8, 0xa5, 0x7f, 0xfe, 0xdf, 0xff, 0x2e, 0x99, 0x10, 0x49, 0x91, + 0x9c, 0x8a, 0xb8, 0x8e, 0xe3, 0x5e, 0xc6, 0x68, 0xf3, 0x33, 0x9c, 0xc4, + 0x30, 0x88, 0x99, 0xc3, 0xd5, 0x04, 0x55, 0x00, 0x05, 0x18, 0xf8, 0x98, + 0x07, 0xf2, 0xb9, 0x39, 0x68, 0xf2, 0x48, 0x1d, 0x50, 0x52, 0x80, 0x80, + 0x54, 0x35, 0x25, 0x15, 0xf0, 0xf8, 0x92, 0x9c, 0xb4, 0x34, 0x9c, 0x14, + 0x02, 0x21, 0xf1, 0x04, 0x77, 0x60, 0x10, 0x52, 0x34, 0xfa, 0xe7, 0x07, + 0x71, 0xc9, 0x41, 0x64, 0xb3, 0xeb, 0x0f, 0x4c, 0xc7, 0x82, 0x81, 0x50, + 0xa7, 0x47, 0xc7, 0x43, 0x71, 0x08, 0xbe, 0x5c, 0x33, 0x1d, 0x4b, 0x45, + 0x61, 0x4a, 0x90, 0x5c, 0x51, 0x43, 0xa9, 0x2a, 0x84, 0xb5, 0xce, 0xa5, + 0x8c, 0xb6, 0xe6, 0x6b, 0x49, 0x10, 0xf9, 0x52, 0xb1, 0xb2, 0xb2, 0x59, + 0x48, 0x72, 0x9d, 0x7b, 0x5a, 0x49, 0x2a, 0x53, 0xe8, 0x97, 0x34, 0x31, + 0xbb, 0x44, 0x15, 0xb1, 0x46, 0xb6, 0x8a, 0x5d, 0xa3, 0x94, 0xcd, 0xad, + 0xac, 0xaa, 0xf5, 0x4a, 0x1c, 0x8c, 0x5c, 0x2a, 0x15, 0x28, 0x62, 0xaa, + 0x02, 0xea, 0x06, 0xd5, 0xeb, 0xb8, 0x50, 0x11, 0xca, 0x86, 0x45, 0x52, + 0xf5, 0xd6, 0x18, 0xd6, 0x9b, 0x21, 0xc5, 0x76, 0xe9, 0x5a, 0xe0, 0xf5, + 0xfb, 0x0b, 0x9a, 0xfb, 0x83, 0x33, 0x9b, 0x35, 0x94, 0xcf, 0x19, 0x94, + 0xd1, 0x1a, 0x58, 0x20, 0x4c, 0xff, 0xfb, 0xd4, 0x60, 0x53, 0x00, 0x07, + 0xb0, 0x76, 0xbd, 0x41, 0x8c, 0x7b, 0x70, 0x7e, 0x8e, 0xb8, 0x3d, 0x25, + 0x63, 0x6e, 0x1c, 0x29, 0xd6, 0xfd, 0x47, 0xbd, 0x8d, 0xc9, 0xc8, 0xa0, + 0x61, 0xb4, 0xb5, 0x8d, 0x74, 0x8b, 0x55, 0x30, 0x2a, 0x13, 0xaa, 0x88, + 0x6d, 0xfd, 0xed, 0x9e, 0x27, 0xa2, 0xe9, 0xb5, 0xc5, 0x81, 0x4c, 0xdc, + 0xab, 0x8c, 0xe5, 0x2b, 0x93, 0x0b, 0xbe, 0xc3, 0x66, 0x08, 0x2b, 0x50, + 0x1c, 0xaa, 0xd4, 0x76, 0x69, 0xc1, 0x99, 0x91, 0x2e, 0xaf, 0x49, 0xb9, + 0x9c, 0x4a, 0x5f, 0x05, 0x17, 0x19, 0x2e, 0xad, 0x7d, 0x1c, 0xec, 0x66, + 0x27, 0xc6, 0xbd, 0x11, 0xa9, 0x79, 0xd4, 0x84, 0xed, 0x40, 0x78, 0x0a, + 0x59, 0x6e, 0x46, 0xb2, 0x08, 0x60, 0x80, 0x1c, 0x00, 0xa8, 0x1e, 0x88, + 0x14, 0x05, 0xc6, 0x2c, 0xb2, 0xce, 0xdd, 0x72, 0x31, 0xfb, 0x96, 0x50, + 0xd9, 0xe1, 0x48, 0x9a, 0xbf, 0x00, 0xc2, 0xee, 0x3c, 0x96, 0xc3, 0xf1, + 0x2c, 0x69, 0xa1, 0xbd, 0xd3, 0x6d, 0x23, 0x66, 0xec, 0xb2, 0xf3, 0x02, + 0x58, 0xcd, 0x62, 0x7d, 0x91, 0x29, 0xca, 0x5c, 0x6f, 0xed, 0xd7, 0x17, + 0xb3, 0xdd, 0x58, 0x3e, 0x18, 0x64, 0x04, 0x1e, 0xd0, 0xa3, 0x08, 0x13, + 0x9e, 0x48, 0x71, 0x02, 0x5f, 0x39, 0xcd, 0x50, 0x82, 0x14, 0x14, 0x35, + 0xc9, 0x9e, 0x6a, 0x54, 0xc6, 0x67, 0x4c, 0xe5, 0x04, 0x29, 0x75, 0xa0, + 0xab, 0x66, 0x14, 0x7b, 0x61, 0xe7, 0xe6, 0xba, 0xf4, 0xcd, 0x55, 0xf3, + 0x1d, 0xd2, 0x2f, 0x70, 0xbf, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xfe, + 0x5b, 0x12, 0x72, 0x9b, 0xb4, 0x8b, 0x42, 0xde, 0x04, 0x87, 0x9a, 0x0c, + 0x8a, 0xbb, 0x82, 0xb5, 0x4c, 0x4a, 0x06, 0x50, 0x6a, 0xab, 0x9b, 0x6d, + 0xc6, 0x90, 0xfe, 0x68, 0xca, 0xd7, 0x4c, 0x11, 0xd8, 0x4e, 0xb7, 0x12, + 0xd6, 0x11, 0xd2, 0xe3, 0x1e, 0x33, 0xe9, 0x66, 0x8e, 0x43, 0xe2, 0x3d, + 0x30, 0x24, 0x53, 0x99, 0x8e, 0x6b, 0x84, 0x4a, 0x7d, 0x72, 0xb9, 0x2f, + 0x05, 0xe9, 0x92, 0xec, 0xaa, 0xd4, 0x4a, 0x1e, 0x93, 0x4f, 0xbc, 0x43, + 0x8f, 0x95, 0x9c, 0xa9, 0x9c, 0x49, 0x3b, 0x43, 0xa5, 0xda, 0xbd, 0xf2, + 0xb5, 0x74, 0x8a, 0x73, 0x42, 0xcb, 0xea, 0x58, 0x5a, 0x6e, 0x3b, 0x83, + 0x50, 0x6c, 0x87, 0xc8, 0x46, 0xc3, 0xa4, 0x6b, 0x0e, 0xc4, 0xa3, 0x83, + 0x21, 0x18, 0x2e, 0x06, 0x45, 0xe3, 0xb2, 0xc8, 0x6e, 0x23, 0x10, 0x0f, + 0x8f, 0x0f, 0xd1, 0xb4, 0x91, 0x23, 0x60, 0x54, 0xaa, 0x58, 0x3f, 0x32, + 0xf8, 0xd6, 0x89, 0x22, 0x92, 0xfb, 0x89, 0x5d, 0x3c, 0x54, 0x73, 0x41, + 0x2a, 0xa7, 0x88, 0x2b, 0xb9, 0x98, 0xe3, 0x71, 0x40, 0xea, 0xc2, 0x95, + 0xab, 0x09, 0xa3, 0xc9, 0xd0, 0xf1, 0xa4, 0xc2, 0xfa, 0xe7, 0x07, 0x34, + 0xc7, 0xe9, 0x62, 0xb6, 0xbc, 0x59, 0x39, 0xa9, 0x7c, 0xb2, 0xe1, 0xf0, + 0x90, 0x59, 0xf7, 0x44, 0x26, 0x0b, 0x17, 0x36, 0x2c, 0x45, 0x4b, 0xd6, + 0xd4, 0x58, 0xbd, 0x77, 0xb6, 0xcc, 0xb1, 0x48, 0x21, 0x98, 0xd7, 0xa8, + 0xfe, 0x95, 0xcf, 0xe7, 0xc7, 0xd6, 0xe5, 0x94, 0x7d, 0xe7, 0x57, 0x34, + 0x73, 0x12, 0xe8, 0xcb, 0x77, 0x5a, 0xdc, 0x63, 0xd4, 0x47, 0xb0, 0x30, + 0xb3, 0xd9, 0x2a, 0xb2, 0x27, 0x1d, 0x1a, 0x99, 0x05, 0x6d, 0xa0, 0x1e, + 0x81, 0xf3, 0xd7, 0xaa, 0x34, 0x3b, 0x65, 0xbb, 0xe9, 0x65, 0x6e, 0x34, + 0x47, 0xaa, 0xd1, 0x00, 0x3e, 0x89, 0xf3, 0xa8, 0xd9, 0x91, 0x9a, 0x50, + 0xa9, 0x9a, 0x01, 0xe0, 0x53, 0x3f, 0x9c, 0xd0, 0x89, 0xea, 0xcd, 0x57, + 0xb8, 0xb8, 0x3b, 0xc5, 0x47, 0x38, 0x57, 0x57, 0x0b, 0x82, 0x28, 0x71, + 0x6e, 0x0b, 0xe5, 0x23, 0x96, 0xa9, 0x6c, 0xe2, 0x5f, 0x72, 0x00, 0x80, + 0x74, 0xaf, 0x55, 0x40, 0xc5, 0x84, 0x10, 0xde, 0x21, 0xb8, 0x21, 0x51, + 0x19, 0x82, 0x8c, 0x47, 0x0f, 0x21, 0x43, 0xcb, 0x72, 0x23, 0x27, 0x67, + 0x30, 0x68, 0x54, 0x00, 0x09, 0xb8, 0x68, 0x9c, 0x24, 0x89, 0x53, 0xce, + 0x84, 0xda, 0x80, 0x91, 0xcf, 0xff, 0xd1, 0x8b, 0x1c, 0x02, 0x0c, 0x26, + 0x3d, 0x6d, 0x12, 0x06, 0xc0, 0x4c, 0x09, 0xbc, 0x59, 0xaf, 0x1e, 0x00, + 0x05, 0x87, 0xd8, 0x9c, 0x5c, 0x7e, 0xbd, 0x09, 0x38, 0x17, 0x16, 0x3a, + 0xf9, 0xa9, 0xf1, 0xea, 0x52, 0xb1, 0x15, 0xe0, 0x68, 0x39, 0x8f, 0x87, + 0xca, 0xfc, 0xc0, 0x88, 0x58, 0x05, 0x8c, 0x59, 0x33, 0x8c, 0x41, 0x09, + 0x89, 0xa6, 0x61, 0x2f, 0x08, 0x20, 0xb1, 0x2c, 0x7d, 0x0a, 0xcb, 0x7c, + 0x53, 0x39, 0x5c, 0x54, 0x4c, 0x55, 0x24, 0x9c, 0x90, 0x14, 0x0c, 0x84, + 0x91, 0xf8, 0xb2, 0xa8, 0xcc, 0xd8, 0xaa, 0x4f, 0x5d, 0xc2, 0x56, 0xaf, + 0xd5, 0x8d, 0x3a, 0xd9, 0x3b, 0x3a, 0x91, 0x76, 0xad, 0x69, 0x4d, 0x2e, + 0x7b, 0xc2, 0xfc, 0xde, 0x86, 0xaa, 0xd0, 0xd5, 0x6a, 0xa6, 0xa9, 0xf5, + 0x74, 0x90, 0x0f, 0x64, 0x3d, 0xd2, 0x55, 0x5e, 0xc2, 0x5e, 0x50, 0x84, + 0xa3, 0x7c, 0x55, 0x2b, 0x6d, 0xda, 0x8b, 0xd2, 0xb1, 0xb5, 0xfb, 0x6b, + 0x6b, 0x0d, 0x1e, 0xb2, 0x9f, 0xb0, 0xdf, 0xed, 0xf2, 0xfc, 0x5c, 0xdd, + 0xc2, 0x54, 0x83, 0x52, 0x79, 0xf3, 0x04, 0x25, 0x5a, 0xe2, 0xb2, 0xb3, + 0x28, 0x1f, 0xb1, 0x58, 0xec, 0x67, 0x50, 0x39, 0x45, 0x99, 0xa5, 0x72, + 0xae, 0x6e, 0x63, 0x50, 0xc4, 0x67, 0x8c, 0xfa, 0x46, 0x62, 0xfd, 0x89, + 0x16, 0x97, 0x50, 0xa7, 0x6d, 0x61, 0x5c, 0x28, 0x26, 0x67, 0x89, 0x32, + 0xed, 0xf3, 0x23, 0xf8, 0xed, 0xff, 0xfb, 0xd4, 0x60, 0x5d, 0x08, 0x07, + 0x85, 0x76, 0x3d, 0x41, 0x8c, 0x7b, 0x70, 0x75, 0x47, 0x58, 0x6f, 0x25, + 0x26, 0x5d, 0x1d, 0xd9, 0xda, 0xf7, 0x26, 0x31, 0xed, 0xc1, 0xdf, 0xa8, + 0xe1, 0xfc, 0x94, 0x99, 0x7c, 0x2b, 0x96, 0x27, 0x79, 0xce, 0xdc, 0x9c, + 0x17, 0x2a, 0x49, 0x21, 0xaf, 0x35, 0x39, 0xb4, 0x23, 0x9d, 0x3d, 0xb3, + 0x17, 0x42, 0x18, 0xce, 0x25, 0x78, 0xfd, 0x2b, 0x9c, 0xd0, 0x82, 0x14, + 0x7d, 0x21, 0xea, 0xc7, 0x52, 0x32, 0xa9, 0x5c, 0x0a, 0x12, 0x14, 0x7d, + 0x1f, 0xe3, 0xcd, 0x72, 0x82, 0x2a, 0x4e, 0x16, 0xc2, 0x5e, 0x9f, 0xd0, + 0x22, 0x2a, 0x2b, 0x33, 0x43, 0xc7, 0x6b, 0x89, 0x11, 0xfa, 0x81, 0xe9, + 0xae, 0x90, 0x35, 0x2d, 0x1f, 0x34, 0x28, 0x9c, 0xe4, 0xcb, 0x8e, 0xde, + 0x09, 0x51, 0x02, 0xa2, 0xe3, 0x86, 0xb4, 0xc3, 0xd3, 0xc8, 0x53, 0x2a, + 0x6c, 0x33, 0xdd, 0xf9, 0x1f, 0xf1, 0xf4, 0xbc, 0x1c, 0x78, 0x66, 0x79, + 0xa3, 0xdd, 0x12, 0x3b, 0x6d, 0x3a, 0xcf, 0x33, 0x98, 0xf5, 0xcd, 0x3a, + 0x6e, 0xda, 0x23, 0x50, 0x79, 0x7c, 0x7b, 0xf7, 0x7b, 0x07, 0x36, 0x63, + 0xfd, 0x7c, 0xf5, 0x9a, 0xcd, 0x47, 0x3b, 0x20, 0x68, 0x06, 0x24, 0x36, + 0xb0, 0x22, 0xc4, 0x65, 0xc3, 0xcc, 0x71, 0xb0, 0xd9, 0xd7, 0x13, 0x34, + 0x74, 0x20, 0x40, 0x08, 0x40, 0x53, 0xff, 0xf9, 0x4a, 0x17, 0x4b, 0xa8, + 0x48, 0x64, 0x32, 0x07, 0x22, 0x05, 0x0b, 0x5a, 0x2e, 0xd2, 0x42, 0xb2, + 0xa4, 0xcb, 0x65, 0xb1, 0x3d, 0x60, 0xe6, 0x54, 0x3b, 0xc5, 0xef, 0x0f, + 0x41, 0xca, 0x11, 0xb9, 0x5d, 0x38, 0x88, 0x7e, 0x7a, 0x33, 0x38, 0x4e, + 0x7c, 0xcd, 0x47, 0x0a, 0x91, 0x00, 0xbd, 0x07, 0xd2, 0xf8, 0x0c, 0x28, + 0x41, 0x54, 0x7a, 0x6c, 0x64, 0x76, 0x38, 0x88, 0xa3, 0xfb, 0xc2, 0x31, + 0xb8, 0xd2, 0xab, 0xd4, 0x17, 0xc6, 0x83, 0x98, 0x4b, 0x0b, 0x41, 0x02, + 0xc9, 0x68, 0xe4, 0xac, 0x6e, 0x9e, 0x4d, 0x91, 0xd0, 0xf4, 0xbc, 0x6c, + 0x42, 0x45, 0xaa, 0x64, 0x25, 0x0f, 0x18, 0x58, 0xdc, 0x90, 0xd7, 0x06, + 0x44, 0x2d, 0x3e, 0xa5, 0x80, 0xa6, 0x6e, 0x25, 0x34, 0x5a, 0x49, 0xaa, + 0x54, 0xa8, 0x7b, 0x62, 0x81, 0x89, 0x55, 0x57, 0x38, 0x75, 0x63, 0x68, + 0x56, 0x56, 0x2b, 0x7a, 0xed, 0x96, 0x33, 0x5c, 0x46, 0xc5, 0x33, 0x24, + 0x36, 0xc9, 0xd4, 0x0e, 0x2d, 0x29, 0xf5, 0x0b, 0xf7, 0x56, 0x9e, 0xce, + 0x6c, 0x0a, 0x97, 0xcb, 0x67, 0x42, 0x3c, 0xd0, 0x56, 0x2f, 0xbd, 0x58, + 0x58, 0x47, 0xc0, 0x86, 0x9d, 0x59, 0x47, 0xab, 0x9b, 0xd8, 0x10, 0xcc, + 0xbf, 0x42, 0xd9, 0xdc, 0x61, 0x26, 0x1b, 0x53, 0x71, 0xb4, 0xc3, 0x02, + 0x3b, 0xa5, 0x7a, 0xa5, 0x40, 0xf9, 0xa5, 0xd4, 0x3b, 0xc7, 0x8e, 0xb7, + 0xb7, 0xd2, 0x3e, 0xa4, 0xf7, 0x60, 0x5c, 0x37, 0x37, 0x37, 0xfd, 0xe6, + 0xea, 0xd8, 0x50, 0x9b, 0xdc, 0xd4, 0xb2, 0x3c, 0x6c, 0x4e, 0x40, 0x63, + 0x53, 0x46, 0x30, 0x5e, 0xc6, 0x82, 0x72, 0x9d, 0x6d, 0xca, 0x75, 0x22, + 0xc1, 0x6d, 0x66, 0x47, 0x9f, 0x64, 0xa1, 0x78, 0x75, 0xa9, 0xce, 0x34, + 0xf9, 0x80, 0x0f, 0x32, 0xc2, 0x9e, 0x5f, 0xd0, 0x1a, 0xab, 0x2b, 0x34, + 0x3c, 0x6d, 0xad, 0x8d, 0xa1, 0xfc, 0x74, 0x81, 0x20, 0x4b, 0x15, 0x25, + 0x6d, 0x01, 0x3a, 0x90, 0x56, 0x52, 0x23, 0x01, 0xc5, 0x24, 0xd1, 0x3d, + 0x42, 0x14, 0x62, 0x12, 0x36, 0x51, 0xc3, 0x51, 0x27, 0x38, 0x29, 0x46, + 0x67, 0xb4, 0x8b, 0x1c, 0x77, 0xa1, 0x61, 0x99, 0xc6, 0x92, 0x49, 0xbf, + 0xd2, 0xa7, 0xcb, 0x24, 0x13, 0x4a, 0x29, 0x68, 0x15, 0xae, 0x49, 0xb5, + 0x4e, 0xf9, 0x91, 0x96, 0xde, 0x9b, 0xeb, 0xe3, 0x4b, 0x3d, 0x47, 0x7f, + 0x4d, 0x99, 0xdd, 0xef, 0xb5, 0xd6, 0x6e, 0xed, 0xaf, 0x4e, 0x9c, 0x4b, + 0xbb, 0x97, 0x79, 0x5a, 0x82, 0x4d, 0x5b, 0xd5, 0xda, 0xfb, 0x66, 0xbe, + 0x7e, 0xd3, 0x79, 0xb9, 0x98, 0xec, 0xa1, 0xff, 0xff, 0xc6, 0x7e, 0xa4, + 0x4e, 0x83, 0x4a, 0xbc, 0x2c, 0x10, 0x26, 0xaa, 0x01, 0x10, 0x07, 0xc4, + 0xa4, 0xad, 0x1a, 0x2b, 0xe2, 0x00, 0x51, 0x43, 0x46, 0x32, 0x23, 0x91, + 0xae, 0x0c, 0xaa, 0x07, 0x85, 0xe6, 0x2b, 0x4b, 0xa5, 0x33, 0xf3, 0xdd, + 0x3e, 0xad, 0x37, 0x19, 0x50, 0xe2, 0xf8, 0x9d, 0x26, 0x47, 0x3a, 0x4c, + 0xe1, 0x66, 0x57, 0x21, 0xcf, 0x0b, 0xfa, 0x46, 0x74, 0x25, 0x2e, 0xc8, + 0x72, 0x43, 0x34, 0x53, 0xaa, 0xb4, 0x8a, 0xad, 0x40, 0xe4, 0x97, 0x91, + 0x40, 0xab, 0xda, 0xee, 0x30, 0x8d, 0x27, 0x9b, 0x65, 0x54, 0xb8, 0x46, + 0xa1, 0xc6, 0x5d, 0x25, 0x81, 0x24, 0x31, 0xb7, 0xc6, 0x3d, 0x1c, 0x96, + 0x50, 0xbb, 0x17, 0xdc, 0x9a, 0xb1, 0x59, 0xe8, 0xdb, 0x95, 0x2f, 0x97, + 0xf1, 0xf5, 0xa5, 0x7d, 0x1c, 0x29, 0x8e, 0xc9, 0xe6, 0xa3, 0x36, 0xa9, + 0x29, 0x21, 0x7c, 0x91, 0xcc, 0xcf, 0xd2, 0x3e, 0x59, 0xcb, 0xe1, 0x12, + 0x38, 0xa3, 0x5f, 0xd4, 0x86, 0x11, 0x28, 0x9f, 0x8c, 0x63, 0xf2, 0xb8, + 0x0a, 0x59, 0x11, 0x83, 0xa1, 0x98, 0x8b, 0x99, 0x1a, 0xbf, 0x00, 0x3d, + 0xf0, 0x34, 0x5e, 0x15, 0x66, 0x08, 0x8c, 0x4b, 0xe8, 0x69, 0x5f, 0xde, + 0xc3, 0xf2, 0x5a, 0x48, 0x8d, 0x8a, 0x1a, 0xf3, 0x2e, 0xd3, 0xfd, 0x4b, + 0x05, 0x57, 0x82, 0xa6, 0x1d, 0xa9, 0xe8, 0x7e, 0x3d, 0x3c, 0xfb, 0x4b, + 0xe9, 0x28, 0x6b, 0x4c, 0x63, 0x62, 0x9a, 0x35, 0xb9, 0xc8, 0x8d, 0xca, + 0xb0, 0xcb, 0xcd, 0x72, 0x55, 0xff, 0xfb, 0xd4, 0x60, 0x64, 0x88, 0x08, + 0x3e, 0x76, 0xbc, 0x29, 0xef, 0xc3, 0x70, 0x8a, 0x4e, 0x88, 0x1c, 0x25, + 0x85, 0x6e, 0x5d, 0x31, 0xd8, 0xf7, 0x24, 0xb1, 0xed, 0xc1, 0xec, 0x3a, + 0x60, 0xb4, 0x93, 0x0d, 0xb9, 0x2d, 0xa4, 0x8a, 0x65, 0x37, 0x71, 0xf5, + 0x8b, 0xb3, 0xe8, 0xb3, 0xf5, 0xf6, 0x5f, 0x6a, 0xaf, 0x83, 0xdd, 0x2a, + 0x90, 0xb6, 0x27, 0xea, 0x00, 0x8a, 0xc7, 0xfa, 0xe8, 0x43, 0xcc, 0xee, + 0x48, 0xfb, 0x43, 0x93, 0x0c, 0x81, 0x62, 0xbb, 0x4d, 0xe3, 0xb6, 0xc3, + 0x1a, 0xac, 0x14, 0x8c, 0x08, 0x62, 0xc5, 0x12, 0xdd, 0x84, 0x3a, 0x63, + 0x2a, 0x30, 0x19, 0x82, 0x3e, 0x8c, 0x92, 0x88, 0x12, 0xdc, 0x72, 0x5f, + 0xd7, 0xfd, 0x1f, 0xb5, 0x88, 0xe9, 0xb4, 0x01, 0x96, 0xc4, 0x68, 0x92, + 0x6a, 0xf1, 0xd4, 0x34, 0x3c, 0x4a, 0xc9, 0xe2, 0x83, 0xa0, 0x10, 0x54, + 0x2a, 0x11, 0x89, 0x30, 0xbb, 0xb0, 0xbb, 0x4f, 0xd9, 0xcc, 0xb5, 0x68, + 0xc7, 0xfe, 0x7c, 0xfe, 0x7d, 0x39, 0xea, 0x7f, 0xaa, 0xcc, 0x66, 0xee, + 0x22, 0x63, 0x91, 0x4a, 0x1f, 0x34, 0x41, 0x54, 0x4c, 0x61, 0x51, 0xdc, + 0x71, 0x0a, 0x36, 0x1f, 0x72, 0x6a, 0x8a, 0x68, 0xae, 0x84, 0x21, 0x95, + 0x90, 0xe3, 0x48, 0x63, 0xb1, 0x58, 0x8e, 0xd3, 0xba, 0x13, 0x43, 0x23, + 0xba, 0xee, 0x84, 0x39, 0xa5, 0xae, 0x86, 0x73, 0x4d, 0x97, 0x74, 0x3e, + 0xae, 0xe5, 0xfd, 0x36, 0xa2, 0x36, 0xf3, 0xfd, 0x99, 0x1d, 0x14, 0xd7, + 0x61, 0x12, 0xa8, 0x81, 0x90, 0x5e, 0x73, 0x14, 0x71, 0xd0, 0x54, 0x46, + 0x43, 0x07, 0x48, 0x28, 0x34, 0x41, 0xd0, 0x29, 0x84, 0xc5, 0x86, 0x8f, + 0x72, 0x5b, 0x6b, 0x56, 0x56, 0x43, 0xd1, 0x71, 0x80, 0x91, 0x2a, 0x25, + 0x13, 0x38, 0xd1, 0x08, 0xe2, 0x2c, 0x22, 0x18, 0xc2, 0x59, 0x75, 0x29, + 0x5c, 0x18, 0x8c, 0x9d, 0x2e, 0xda, 0xd0, 0x88, 0x07, 0x6b, 0xb0, 0xc0, + 0x6a, 0x06, 0x86, 0xc0, 0xb8, 0xd2, 0x1e, 0x1f, 0x9e, 0x15, 0xc7, 0x83, + 0x01, 0xc4, 0x48, 0x10, 0x0a, 0x8b, 0x0c, 0x87, 0x10, 0x60, 0x69, 0xa3, + 0xc1, 0x34, 0x89, 0xa5, 0x31, 0x04, 0xb6, 0x28, 0x65, 0x5e, 0xc7, 0x1e, + 0xa8, 0x66, 0xa3, 0xa2, 0xd4, 0x76, 0x54, 0x28, 0x15, 0xae, 0x2c, 0x59, + 0x51, 0x2c, 0xc0, 0x62, 0xd2, 0x10, 0xcb, 0x45, 0x1c, 0x8c, 0xef, 0xee, + 0xda, 0x9f, 0x54, 0x98, 0xea, 0x45, 0x11, 0xd5, 0x15, 0xbd, 0x3e, 0xc2, + 0xf1, 0xb5, 0x58, 0x8e, 0x78, 0xda, 0xce, 0x5b, 0x54, 0x6d, 0x91, 0x60, + 0x1d, 0xcc, 0x2e, 0x50, 0xb2, 0xa7, 0x64, 0x74, 0xc2, 0xda, 0xac, 0x7f, + 0x0a, 0x2a, 0x1a, 0x9f, 0x86, 0xa8, 0x3b, 0x58, 0x59, 0x5c, 0x9b, 0xee, + 0xe6, 0xc8, 0xc6, 0xcd, 0x17, 0x50, 0xdc, 0xf2, 0xd6, 0xfd, 0x4e, 0xb6, + 0xcb, 0xec, 0xb6, 0xe2, 0xc0, 0x88, 0x8e, 0xf9, 0x9d, 0x5a, 0xf2, 0x0b, + 0x9c, 0x26, 0x3f, 0x3a, 0x99, 0xb9, 0xeb, 0x65, 0x1f, 0xcb, 0x5c, 0xbd, + 0x60, 0xa4, 0x0c, 0xcf, 0x1e, 0x3c, 0x37, 0x3a, 0xbb, 0xcb, 0x7c, 0x78, + 0x4e, 0xfb, 0xc8, 0x6f, 0x50, 0x95, 0x96, 0xf4, 0xe3, 0x02, 0x29, 0x58, + 0xb6, 0xd0, 0x78, 0xbb, 0x86, 0x8d, 0x5b, 0x2d, 0xac, 0xea, 0x06, 0xa6, + 0x41, 0xff, 0x44, 0x8e, 0x49, 0xd1, 0x82, 0x3a, 0x49, 0x09, 0x28, 0x35, + 0x87, 0xf5, 0x0b, 0xe0, 0x48, 0xc9, 0xdc, 0x40, 0x4a, 0x4d, 0xb9, 0x23, + 0x51, 0xc9, 0x1b, 0x1f, 0xb3, 0x99, 0x02, 0xa4, 0x2c, 0x32, 0x23, 0x43, + 0xda, 0xa6, 0xa9, 0x49, 0xc6, 0x97, 0x24, 0x01, 0x32, 0xe0, 0x84, 0xa9, + 0x0b, 0x2f, 0x2f, 0x7e, 0xbb, 0x6f, 0x6c, 0x36, 0xa8, 0x8d, 0x61, 0x15, + 0xd4, 0x34, 0xb6, 0x17, 0xf6, 0x67, 0x52, 0x05, 0xc3, 0x16, 0xae, 0x24, + 0x82, 0xac, 0xaf, 0x43, 0x21, 0xc2, 0x75, 0x54, 0xcd, 0x81, 0xdf, 0xe3, + 0x42, 0x31, 0xa8, 0x6c, 0x95, 0x88, 0xc1, 0xb4, 0xdb, 0xe1, 0xb6, 0x57, + 0x38, 0xfa, 0xfe, 0x39, 0xa3, 0xf5, 0x4f, 0x2d, 0x58, 0x3b, 0x9c, 0xda, + 0x45, 0x06, 0x19, 0x8e, 0xd8, 0x7c, 0xff, 0xff, 0xff, 0x2f, 0x2f, 0xff, + 0xbd, 0xcd, 0x61, 0x7c, 0x46, 0xbe, 0xfc, 0x1f, 0x26, 0x02, 0x09, 0xaa, + 0x08, 0x08, 0x42, 0x59, 0x38, 0x4e, 0x19, 0x5d, 0xcc, 0x51, 0x7a, 0x00, + 0xa6, 0x93, 0x91, 0x46, 0x5b, 0x6d, 0xa1, 0x38, 0x94, 0xa4, 0x3a, 0x1a, + 0x17, 0xc3, 0xf0, 0xf0, 0x18, 0xab, 0x41, 0x38, 0x4c, 0x4d, 0x54, 0xa1, + 0x49, 0xf2, 0xf0, 0x80, 0x6c, 0x26, 0x46, 0x9d, 0x1b, 0x93, 0xfb, 0x80, + 0xdc, 0xa7, 0x5d, 0x1c, 0xc9, 0xa2, 0xf4, 0x72, 0x1c, 0xca, 0x74, 0x7a, + 0x21, 0xb6, 0x34, 0x85, 0xb1, 0xe2, 0x61, 0x3b, 0x1d, 0xbd, 0xe7, 0x70, + 0x91, 0x65, 0xa2, 0x2b, 0x0c, 0x47, 0x13, 0xf6, 0xaa, 0x95, 0xe7, 0x33, + 0xde, 0x26, 0xc9, 0x02, 0x40, 0x3e, 0x7c, 0x64, 0xbc, 0x8a, 0x68, 0xb4, + 0x3c, 0x3c, 0x2f, 0x09, 0x23, 0xf4, 0x03, 0xd3, 0xf2, 0xb2, 0x56, 0xaa, + 0x7d, 0xc1, 0x24, 0xd4, 0xc8, 0xfc, 0x7a, 0x2b, 0xbe, 0x5e, 0x65, 0x1a, + 0x19, 0x46, 0x12, 0xb2, 0xc2, 0x12, 0x86, 0xcf, 0x48, 0x6a, 0xd9, 0x2a, + 0x2a, 0xa1, 0x6c, 0x9a, 0xea, 0x52, 0x61, 0x90, 0x50, 0xac, 0xf4, 0x1a, + 0x22, 0x4e, 0x48, 0x2f, 0x25, 0x32, 0x70, 0xec, 0x9e, 0x4c, 0x29, 0x30, + 0x48, 0x79, 0x81, 0x6a, 0xd8, 0x15, 0xe9, 0xa1, 0xd3, 0x10, 0xb1, 0x1a, + 0x73, 0x31, 0x8d, 0x2e, 0x78, 0xe3, 0x48, 0x8f, 0x92, 0x1b, 0x23, 0x73, + 0x60, 0xbb, 0x15, 0x69, 0xc5, 0xff, 0xfb, 0xd4, 0x60, 0x57, 0x00, 0x07, + 0x03, 0x75, 0xbf, 0x69, 0x8f, 0x63, 0x70, 0x72, 0xca, 0x08, 0x8f, 0x31, + 0x23, 0x5f, 0x22, 0xc9, 0xda, 0xec, 0x07, 0xbf, 0x0d, 0xc2, 0x29, 0x3a, + 0xa0, 0xf4, 0x64, 0xa1, 0xb9, 0xcd, 0x2f, 0xad, 0xad, 0x55, 0xdb, 0x66, + 0xdc, 0xac, 0xb3, 0xaa, 0x7e, 0x09, 0xcb, 0x39, 0xa9, 0x5a, 0x62, 0x8b, + 0x60, 0x29, 0x62, 0x67, 0x93, 0xed, 0x17, 0x3c, 0xeb, 0xfa, 0x64, 0xe9, + 0xe3, 0xce, 0xa4, 0x26, 0x09, 0x03, 0xa8, 0x08, 0x26, 0x16, 0x07, 0xb3, + 0x35, 0xe1, 0xca, 0xd3, 0x6d, 0x04, 0x89, 0xa0, 0x8e, 0xed, 0x10, 0xf2, + 0xef, 0xad, 0xd2, 0xc6, 0xc4, 0xcc, 0x09, 0x06, 0x68, 0xcc, 0x56, 0x2f, + 0xca, 0x88, 0x66, 0x1a, 0x59, 0x34, 0xdc, 0x1a, 0x0b, 0x30, 0x76, 0x6e, + 0x7a, 0xcc, 0x20, 0x6e, 0x52, 0x4d, 0x86, 0x72, 0xae, 0x1f, 0xca, 0xb6, + 0xe9, 0xf7, 0xb2, 0xbf, 0x73, 0x0c, 0x1d, 0xe2, 0xc4, 0x03, 0x21, 0xf5, + 0xb8, 0x24, 0x43, 0xcc, 0xd8, 0xdb, 0x5e, 0x8b, 0x24, 0x6d, 0xa8, 0xd1, + 0xa8, 0x61, 0x46, 0x28, 0x49, 0x0b, 0x21, 0xe2, 0x86, 0x5b, 0xc0, 0x4a, + 0xaa, 0xca, 0xa6, 0xeb, 0x15, 0x41, 0xdc, 0xd2, 0x06, 0x52, 0x4a, 0xb6, + 0x1a, 0x19, 0xd5, 0xe9, 0x27, 0x84, 0x73, 0xcc, 0x5b, 0xe7, 0x21, 0x09, + 0x0a, 0x02, 0x0e, 0xff, 0xff, 0xea, 0x1d, 0x0b, 0x8e, 0x97, 0x53, 0x03, + 0xa4, 0xb4, 0x76, 0xe4, 0x38, 0x73, 0x8b, 0x6b, 0x22, 0x98, 0x40, 0x44, + 0xc8, 0x3f, 0x56, 0x49, 0x12, 0xd1, 0x37, 0x37, 0xd9, 0x63, 0x93, 0x05, + 0x21, 0x6f, 0x82, 0xdc, 0xa5, 0x55, 0xba, 0x51, 0x1d, 0x04, 0x11, 0xcc, + 0x60, 0x0d, 0xc2, 0x16, 0x97, 0x1e, 0x4b, 0xec, 0xa5, 0x59, 0xec, 0xc2, + 0x68, 0x72, 0xe2, 0x78, 0x13, 0xe2, 0xf6, 0x8f, 0x3f, 0xd1, 0xd4, 0x24, + 0x09, 0x44, 0xaa, 0x9c, 0xfa, 0x33, 0xcd, 0x42, 0x16, 0x3f, 0x09, 0x99, + 0x66, 0x6f, 0x0b, 0xb9, 0x0c, 0x6d, 0x9f, 0x6f, 0x69, 0x61, 0x88, 0xf3, + 0xc8, 0xf9, 0x3e, 0x4c, 0x66, 0x13, 0x1e, 0x87, 0xd9, 0xe3, 0x6f, 0x5d, + 0xbd, 0xa5, 0x82, 0x65, 0xb4, 0xb4, 0xee, 0xbc, 0x2e, 0x0f, 0x8a, 0x43, + 0x54, 0xb2, 0x87, 0x06, 0x8e, 0x1e, 0x8d, 0x57, 0xa7, 0x6e, 0x2f, 0x5d, + 0x2d, 0x14, 0x51, 0xd2, 0x83, 0x29, 0xe1, 0xed, 0x41, 0x6b, 0xcf, 0xe8, + 0xdd, 0x59, 0x44, 0xbe, 0x56, 0xd8, 0x5a, 0x13, 0xba, 0xec, 0x51, 0xa9, + 0x55, 0xd8, 0x1e, 0xa4, 0x7a, 0x59, 0x3e, 0xfb, 0xc0, 0xae, 0xe4, 0x9e, + 0x22, 0xf0, 0xd0, 0xcc, 0xb3, 0x9a, 0x18, 0x22, 0xfc, 0x37, 0x00, 0xc6, + 0x24, 0xae, 0x16, 0x53, 0xd6, 0xe1, 0xf6, 0x3f, 0x08, 0x6b, 0xad, 0xca, + 0x1e, 0x7d, 0x66, 0x64, 0x90, 0xd3, 0x31, 0x6d, 0xa8, 0x1a, 0x6d, 0xaa, + 0x26, 0xc8, 0xca, 0x1f, 0xb7, 0xb9, 0xf0, 0x97, 0xc3, 0x90, 0x65, 0x2b, + 0xd8, 0xf4, 0x52, 0x3f, 0xb1, 0x27, 0xbe, 0xb4, 0xf4, 0x3f, 0x15, 0x61, + 0x55, 0x72, 0xbf, 0xcb, 0x30, 0xb7, 0x55, 0x83, 0x4a, 0x7d, 0xc9, 0x71, + 0x7d, 0xf4, 0xad, 0x49, 0x33, 0x21, 0x52, 0x4d, 0x81, 0x4f, 0x3b, 0x72, + 0xf5, 0xae, 0xce, 0x1d, 0x46, 0x50, 0xc5, 0xe4, 0x6e, 0xec, 0x75, 0x92, + 0xc0, 0xb9, 0x33, 0xc9, 0xf5, 0x7c, 0xc8, 0x94, 0x0d, 0x2f, 0xc1, 0xc4, + 0x5d, 0xa9, 0xe4, 0x5f, 0x49, 0x6c, 0x68, 0xbe, 0x6a, 0x76, 0x36, 0x44, + 0xe6, 0x65, 0xad, 0xd3, 0xa0, 0x37, 0x25, 0xdb, 0xf9, 0x23, 0x7e, 0x46, + 0x3f, 0xeb, 0x38, 0xc0, 0x08, 0xd1, 0x03, 0xd6, 0x33, 0x54, 0x48, 0x1c, + 0x30, 0x02, 0xa6, 0x44, 0x28, 0x0a, 0x8a, 0x80, 0x29, 0x1f, 0x48, 0x46, + 0xb6, 0x33, 0x09, 0xdd, 0x6c, 0xc9, 0x2e, 0xff, 0x94, 0x12, 0x8c, 0xf2, + 0x69, 0x64, 0x5a, 0xb9, 0xd7, 0xbc, 0xdd, 0x9d, 0xe5, 0xdc, 0xfe, 0x89, + 0x6d, 0x09, 0xb8, 0x3c, 0x17, 0x24, 0x81, 0x80, 0xa0, 0xf1, 0x56, 0x03, + 0x43, 0x81, 0xc1, 0x40, 0xe6, 0x43, 0xf0, 0xf7, 0x88, 0xbe, 0xab, 0xb3, + 0x9e, 0x2b, 0x92, 0xe6, 0x74, 0x81, 0xa3, 0x49, 0x5a, 0xaf, 0x74, 0x9a, + 0x78, 0xe2, 0xa2, 0xb5, 0xbe, 0x9f, 0xb7, 0x39, 0x46, 0x46, 0xcd, 0x75, + 0xc4, 0xeb, 0xbc, 0xd5, 0xcd, 0xdf, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xf3, + 0xf7, 0x11, 0xdd, 0x75, 0xcd, 0xdb, 0xeb, 0x4e, 0x75, 0xc3, 0x92, 0xf5, + 0xc4, 0x46, 0x88, 0x3d, 0xd6, 0x6a, 0x86, 0xd6, 0x49, 0x52, 0xb5, 0x07, + 0x3f, 0xa7, 0xc2, 0x91, 0xb0, 0xd6, 0x27, 0xc7, 0x7a, 0x92, 0x52, 0xb8, + 0xe4, 0x95, 0xb2, 0x09, 0xa5, 0x12, 0x43, 0xd2, 0x99, 0x2d, 0x49, 0x49, + 0x21, 0xe2, 0x67, 0x97, 0xa7, 0x88, 0x40, 0x1d, 0x49, 0xa1, 0xe0, 0x48, + 0x5a, 0x2c, 0x9c, 0x88, 0xe1, 0xb2, 0x92, 0x69, 0x01, 0x58, 0xa4, 0xe8, + 0x82, 0xad, 0x63, 0xa1, 0xf8, 0x58, 0x4a, 0x2b, 0x13, 0x82, 0x91, 0x1f, + 0x9c, 0x3c, 0x1c, 0xcc, 0xc4, 0x63, 0xb3, 0xa3, 0xf9, 0x95, 0xc6, 0x66, + 0xd6, 0x65, 0xc2, 0xd2, 0xfa, 0xc2, 0xea, 0x35, 0x94, 0x2a, 0x26, 0x14, + 0x5a, 0x1e, 0xd6, 0xe2, 0xa6, 0x80, 0xa3, 0xa3, 0xe3, 0xf5, 0xa2, 0x12, + 0x9d, 0xcd, 0xbd, 0x95, 0x35, 0x0d, 0x54, 0xe2, 0xa2, 0x85, 0x0d, 0xd5, + 0xac, 0xa4, 0xb4, 0x17, 0x14, 0x64, 0x8d, 0xb0, 0x5f, 0x3d, 0x46, 0x40, + 0x7e, 0xd1, 0x09, 0xce, 0x43, 0xfd, 0x95, 0xa5, 0x89, 0xd2, 0xa9, 0xc1, + 0xfa, 0x1a, 0xab, 0x7a, 0x97, 0x4f, 0xac, 0xb3, 0x28, 0xac, 0xfe, 0x12, + 0x89, 0x5f, 0x1d, 0x85, 0x43, 0xff, 0xfb, 0xd4, 0x60, 0x4b, 0x00, 0x07, + 0x85, 0x76, 0xbd, 0x29, 0xec, 0x7b, 0x70, 0x76, 0xed, 0xa8, 0x6d, 0x31, + 0x22, 0x6f, 0x5e, 0x65, 0xda, 0xf5, 0x27, 0xbd, 0xed, 0xc1, 0xed, 0x3a, + 0x60, 0xf4, 0x94, 0x8d, 0xb9, 0x01, 0x40, 0xa7, 0x64, 0x49, 0xc4, 0x30, + 0x9c, 0xdc, 0xe8, 0x8d, 0x95, 0x44, 0xaf, 0x2d, 0xb1, 0xe3, 0xcd, 0x6e, + 0xf9, 0x95, 0x6d, 0xdb, 0x06, 0x63, 0xa5, 0x58, 0x17, 0x0f, 0x5a, 0xd9, + 0x9f, 0xbd, 0xd2, 0xb7, 0xbf, 0x7a, 0x7f, 0xa8, 0x1d, 0x37, 0xcb, 0x56, + 0xd6, 0x69, 0x28, 0xe3, 0x22, 0xbe, 0x02, 0x85, 0xce, 0x87, 0xfb, 0x54, + 0x78, 0x32, 0xcd, 0x1d, 0x80, 0x9f, 0xb0, 0xc7, 0x13, 0x56, 0x22, 0x72, + 0xb8, 0x4d, 0xa8, 0x10, 0xf4, 0xf0, 0x8f, 0x16, 0x47, 0x70, 0x7f, 0x1e, + 0x65, 0x84, 0x6a, 0x9f, 0xa3, 0xb4, 0xe0, 0x04, 0xf1, 0x05, 0x81, 0x38, + 0x7a, 0xeb, 0x74, 0xfa, 0xcb, 0x24, 0x49, 0x09, 0x9a, 0x60, 0x56, 0x89, + 0x4b, 0xc2, 0x69, 0xd3, 0x29, 0x60, 0xad, 0x75, 0x43, 0x48, 0x9a, 0xd5, + 0x84, 0x45, 0x4b, 0x99, 0xcb, 0x9a, 0x25, 0x75, 0x05, 0x79, 0x2b, 0x2e, + 0xeb, 0x5e, 0xef, 0x6d, 0xaa, 0xd5, 0xb2, 0x3b, 0x75, 0x5e, 0x9f, 0x73, + 0x93, 0xa0, 0xa5, 0x0c, 0x14, 0x4a, 0xe0, 0xc8, 0x5c, 0x28, 0xce, 0x24, + 0x4b, 0x22, 0x38, 0x39, 0x5c, 0xce, 0xc2, 0x94, 0xf4, 0x31, 0xce, 0xa4, + 0xc5, 0x2b, 0x6a, 0xad, 0x57, 0x0c, 0x69, 0x42, 0x18, 0xaa, 0xc5, 0x2f, + 0x23, 0xba, 0xd1, 0x4e, 0x0f, 0x57, 0x79, 0x8a, 0x63, 0x91, 0x0c, 0xe8, + 0x69, 0x94, 0x8c, 0x61, 0x62, 0x5d, 0xff, 0xff, 0xff, 0xff, 0xb7, 0xab, + 0x74, 0x6f, 0x99, 0xf0, 0xae, 0xcd, 0x00, 0x41, 0x97, 0x6e, 0xb0, 0x05, + 0x4a, 0x9a, 0x54, 0x13, 0xc9, 0x18, 0xf7, 0x6d, 0x43, 0x96, 0xd6, 0x54, + 0x03, 0xc0, 0xec, 0x3f, 0x58, 0xde, 0x51, 0x64, 0xd5, 0x54, 0x9f, 0x88, + 0x86, 0x74, 0x7b, 0x43, 0xf6, 0x91, 0xdc, 0x71, 0xac, 0xb0, 0x28, 0xcd, + 0x28, 0x0e, 0x95, 0x51, 0x90, 0xa3, 0x98, 0xf0, 0x43, 0x55, 0x70, 0x1c, + 0x94, 0xee, 0x2b, 0xa3, 0x45, 0x46, 0xf5, 0x41, 0x63, 0xb9, 0x36, 0x62, + 0x1a, 0xef, 0x5a, 0x51, 0x8a, 0x07, 0x8a, 0xf4, 0xfd, 0x18, 0x60, 0xac, + 0xc7, 0xdc, 0x56, 0x45, 0x2a, 0x9a, 0x88, 0x5a, 0xfd, 0x4f, 0x65, 0xf6, + 0x57, 0x8c, 0xe8, 0xa8, 0x34, 0x52, 0x54, 0xe7, 0x8c, 0x7c, 0x29, 0xe6, + 0x57, 0x33, 0xa8, 0x5a, 0x5e, 0x3e, 0x82, 0xe2, 0xc3, 0x19, 0xdb, 0x9a, + 0xa1, 0xad, 0x8e, 0x8d, 0xc9, 0x57, 0xab, 0x4b, 0x3e, 0x0a, 0xa9, 0x3c, + 0xb3, 0x0d, 0x6e, 0xd7, 0x85, 0x1d, 0xbf, 0x0d, 0x4f, 0x5c, 0xe2, 0x55, + 0xf2, 0xed, 0x95, 0x2d, 0x3b, 0xed, 0xa9, 0x1c, 0x1f, 0x2e, 0x4e, 0xa4, + 0x35, 0x0c, 0x63, 0x65, 0x53, 0x23, 0xe0, 0x68, 0xe1, 0xe9, 0x03, 0x49, + 0x65, 0x89, 0x28, 0xc8, 0xf9, 0x5a, 0xa8, 0x5d, 0x44, 0x3a, 0x54, 0xef, + 0x54, 0xed, 0xad, 0x97, 0x65, 0x8c, 0xd6, 0xfd, 0xdb, 0x5c, 0x18, 0x55, + 0x8b, 0x3a, 0xb5, 0xeb, 0x2b, 0x9e, 0x2e, 0xd7, 0x01, 0x9f, 0x49, 0xb5, + 0xe7, 0x4e, 0x53, 0x29, 0xac, 0xf1, 0xcd, 0x50, 0xe5, 0x85, 0x64, 0x65, + 0x0a, 0x75, 0x88, 0xe3, 0x5a, 0x42, 0xa2, 0xa7, 0x4e, 0x62, 0xe1, 0x54, + 0xb2, 0x76, 0x0b, 0x02, 0x71, 0xc0, 0xe6, 0x40, 0xb4, 0xa1, 0xac, 0x0b, + 0xb3, 0xa0, 0xd4, 0x21, 0x23, 0x04, 0x12, 0x60, 0x25, 0x94, 0x89, 0x03, + 0x8d, 0xd8, 0x2d, 0xc9, 0x65, 0x97, 0xd9, 0xdc, 0x71, 0x8f, 0xeb, 0xae, + 0x8a, 0x2b, 0xd0, 0x12, 0x22, 0x58, 0x9c, 0xc2, 0xd6, 0xb4, 0xe5, 0x63, + 0x98, 0x82, 0x0b, 0x28, 0x8a, 0x6d, 0x2b, 0xc4, 0x2f, 0x44, 0x28, 0x27, + 0x26, 0x52, 0x39, 0x2f, 0x28, 0x5e, 0xe4, 0x7e, 0x52, 0xaf, 0x2a, 0x8c, + 0xb3, 0xf4, 0x18, 0x31, 0x00, 0xf1, 0x21, 0x1b, 0x45, 0xa8, 0x4b, 0xc2, + 0x4c, 0x91, 0xe6, 0xac, 0x1d, 0x5c, 0xc3, 0x22, 0xcc, 0x91, 0xff, 0x3c, + 0xef, 0xad, 0xed, 0x78, 0x6f, 0xe5, 0xdf, 0xc6, 0x6c, 0x9b, 0x31, 0x91, + 0x11, 0xdd, 0x39, 0x66, 0x65, 0x2b, 0x74, 0xf3, 0xdc, 0x97, 0x35, 0xe6, + 0x6e, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xf3, 0xcb, + 0x27, 0x9b, 0x9c, 0xb9, 0x10, 0x93, 0x75, 0xe0, 0xa0, 0x74, 0x96, 0x0c, + 0x6b, 0x19, 0x03, 0x89, 0x10, 0x00, 0x0a, 0xa6, 0x9a, 0x94, 0x3e, 0x96, + 0x42, 0x40, 0xaf, 0x3c, 0x40, 0xb0, 0x65, 0x51, 0x75, 0x44, 0x08, 0x23, + 0x21, 0x82, 0x22, 0xb1, 0x09, 0x41, 0xa1, 0x6a, 0xd3, 0x96, 0x03, 0xb7, + 0x8a, 0x67, 0x1b, 0x33, 0x33, 0x3c, 0xb1, 0xd0, 0x7e, 0xa0, 0x24, 0x56, + 0xb5, 0x6c, 0xad, 0x66, 0x43, 0x55, 0xd0, 0xe2, 0x27, 0x97, 0x4f, 0x63, + 0x33, 0x29, 0x50, 0xd4, 0xc4, 0x43, 0xb1, 0x18, 0x7c, 0x45, 0x86, 0x7e, + 0xce, 0x9c, 0x79, 0x88, 0x88, 0x44, 0xa5, 0x14, 0x26, 0xc5, 0x4a, 0x80, + 0xc3, 0x73, 0x9a, 0xcf, 0x57, 0x27, 0x59, 0xc6, 0xde, 0x8d, 0x8a, 0xa1, + 0x6d, 0x3a, 0x9c, 0x1a, 0xde, 0x3b, 0x6f, 0x52, 0xe1, 0x50, 0xd4, 0x91, + 0xa5, 0xe3, 0x59, 0x54, 0xf1, 0xb1, 0xe3, 0xd9, 0x17, 0x6d, 0xcb, 0x76, + 0x68, 0x8a, 0x75, 0x66, 0xe7, 0xea, 0x95, 0x3c, 0xe6, 0xf1, 0xb9, 0x53, + 0x0e, 0x65, 0x5d, 0xda, 0xa0, 0x35, 0x9c, 0x8d, 0xa8, 0x62, 0x42, 0x49, + 0xfc, 0xaa, 0xd6, 0x27, 0x27, 0xf2, 0xcc, 0xf5, 0xc2, 0x04, 0x29, 0xa0, + 0x62, 0x8e, 0x31, 0x21, 0x78, 0xff, 0xfb, 0xd4, 0x60, 0x4e, 0x00, 0x07, + 0x44, 0x75, 0xbd, 0xc9, 0x2f, 0x7b, 0x72, 0x84, 0xce, 0xa8, 0x2d, 0x2d, + 0x83, 0x6e, 0x1a, 0xdd, 0xd2, 0xff, 0xa6, 0x31, 0x8d, 0xca, 0x1c, 0x39, + 0xe1, 0x34, 0x94, 0x15, 0xb8, 0xcc, 0xb1, 0x63, 0xbb, 0xbf, 0x72, 0xbb, + 0xf8, 0x09, 0xd9, 0xde, 0xbe, 0xc7, 0x54, 0xb3, 0x59, 0xb1, 0xf4, 0x28, + 0xed, 0xd2, 0xd9, 0xad, 0xa9, 0xb2, 0x93, 0x33, 0x45, 0x4e, 0x3c, 0x7f, + 0x12, 0x48, 0x8c, 0xac, 0x6c, 0x6d, 0xac, 0xcc, 0xf8, 0x61, 0x4f, 0x33, + 0x2b, 0x11, 0x4f, 0x98, 0xdb, 0x11, 0xee, 0x8d, 0xf2, 0x78, 0xb2, 0x58, + 0x56, 0x4e, 0x73, 0x4c, 0xd9, 0x50, 0x13, 0xf4, 0x61, 0x78, 0x2e, 0xc3, + 0xd0, 0x22, 0xa6, 0xe0, 0xb7, 0xc0, 0x24, 0xe7, 0xfa, 0x30, 0x93, 0x8e, + 0xe9, 0x76, 0x9a, 0x5b, 0x1a, 0x1e, 0xa2, 0x25, 0x9c, 0x0b, 0x0f, 0x8f, + 0xac, 0x38, 0x68, 0x36, 0x20, 0x2b, 0x28, 0x9d, 0x39, 0x2b, 0xe5, 0x75, + 0x1f, 0x2e, 0x97, 0x23, 0x52, 0x86, 0xec, 0x4c, 0x28, 0x7e, 0x0a, 0x75, + 0x69, 0xd9, 0x79, 0x8e, 0xd1, 0x33, 0x5b, 0x9d, 0x1f, 0x24, 0xcf, 0xd9, + 0xa5, 0xf2, 0xfb, 0x05, 0x84, 0x61, 0x6a, 0x88, 0x71, 0xa9, 0x50, 0x42, + 0x58, 0x23, 0xb9, 0x8c, 0x20, 0x2a, 0x28, 0x76, 0x02, 0x4a, 0xb4, 0x27, + 0x14, 0x97, 0x17, 0x08, 0x5d, 0xa6, 0x2e, 0x91, 0xce, 0xaf, 0x97, 0xd2, + 0x89, 0xb8, 0x82, 0xb2, 0x31, 0xb9, 0xbe, 0x44, 0x85, 0x67, 0xf3, 0xfc, + 0xd7, 0xb5, 0x4c, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xc9, + 0x2f, 0x99, 0x2c, 0x84, 0xd0, 0x8d, 0xa2, 0xb1, 0x8a, 0x10, 0x96, 0x38, + 0x63, 0x1b, 0x04, 0x2c, 0x33, 0x2b, 0x1f, 0x83, 0x81, 0xa2, 0x00, 0x49, + 0xb8, 0xe4, 0x8e, 0x39, 0x24, 0x6c, 0x4c, 0xe6, 0x1d, 0x0d, 0x23, 0x90, + 0xa6, 0xc2, 0x00, 0xe7, 0x41, 0x38, 0x19, 0x16, 0x1e, 0x4a, 0xb8, 0x92, + 0x7c, 0x34, 0x0f, 0x83, 0xe0, 0x24, 0x3f, 0x87, 0x50, 0xa4, 0x2a, 0x89, + 0x63, 0xf1, 0x4d, 0xf1, 0xa8, 0x79, 0x1c, 0x04, 0x22, 0xb0, 0xfe, 0x49, + 0x14, 0xb4, 0x39, 0x14, 0xcf, 0xc4, 0x25, 0x47, 0x47, 0xc7, 0x43, 0xca, + 0x84, 0xe2, 0x28, 0xe6, 0x84, 0x25, 0x71, 0x5d, 0x71, 0x41, 0x38, 0x4a, + 0x66, 0x3d, 0xac, 0x39, 0x12, 0x89, 0x86, 0x47, 0x03, 0xec, 0x0f, 0x27, + 0x46, 0x77, 0x12, 0xa2, 0x79, 0xc9, 0x68, 0x79, 0x40, 0x7b, 0x89, 0xeb, + 0xce, 0xd0, 0x05, 0x92, 0x86, 0x84, 0x66, 0xbc, 0x3e, 0x20, 0x81, 0x63, + 0x43, 0xfa, 0x16, 0x04, 0xe2, 0xd3, 0x03, 0x81, 0x51, 0xd3, 0xb3, 0x03, + 0x72, 0xc1, 0xd4, 0x8f, 0x64, 0xd6, 0x4f, 0xec, 0xa5, 0x29, 0xfb, 0xf6, + 0x6c, 0xb1, 0x77, 0x5d, 0x58, 0x74, 0x75, 0x2f, 0x1d, 0xd1, 0xc4, 0x6b, + 0x84, 0x94, 0x1a, 0xa9, 0x2b, 0xb3, 0x13, 0xcf, 0x92, 0x10, 0x94, 0xa9, + 0x5b, 0x7b, 0x9d, 0x33, 0x15, 0x9f, 0x12, 0xb1, 0xcb, 0x5d, 0xea, 0xcd, + 0x63, 0xf7, 0xbe, 0x2c, 0xad, 0x33, 0xaf, 0x4a, 0x5a, 0xb9, 0xf4, 0x99, + 0xf6, 0x7f, 0x2b, 0x34, 0xbf, 0x4c, 0x5b, 0xa8, 0x54, 0x95, 0x97, 0x67, + 0x8c, 0xda, 0x7e, 0x1a, 0x28, 0xca, 0x22, 0x49, 0x76, 0x4f, 0xcc, 0x1f, + 0x3a, 0x74, 0xd0, 0x6a, 0x3a, 0x32, 0x2b, 0x5c, 0xcd, 0x04, 0xec, 0xb7, + 0x69, 0xf4, 0x97, 0x5b, 0x60, 0xff, 0xa8, 0xfd, 0x21, 0x26, 0xa4, 0x46, + 0x8c, 0x24, 0x19, 0x82, 0x07, 0x27, 0x9c, 0x10, 0x93, 0x42, 0x0a, 0x0d, + 0x30, 0x92, 0xe1, 0x0f, 0xa0, 0xe8, 0x3a, 0x91, 0x9b, 0xbc, 0x42, 0x4d, + 0xd0, 0xd1, 0x9d, 0x21, 0x39, 0xf2, 0x77, 0x2e, 0xda, 0x5c, 0x20, 0xa0, + 0x90, 0xd0, 0xe8, 0xc3, 0x09, 0x19, 0x85, 0xc4, 0x08, 0x2e, 0x1e, 0x2a, + 0x0e, 0x17, 0x4c, 0x59, 0x1c, 0x84, 0x2b, 0x1c, 0xf1, 0x53, 0xa2, 0x89, + 0x0a, 0xce, 0xce, 0x32, 0x75, 0x15, 0x64, 0x2a, 0x9e, 0x64, 0x71, 0x30, + 0xe8, 0x75, 0x18, 0x40, 0xc2, 0xa5, 0xc4, 0xd9, 0xe1, 0x07, 0x20, 0xc5, + 0x43, 0xab, 0x33, 0x1c, 0x8c, 0x54, 0x56, 0x5d, 0x2d, 0x2d, 0xdc, 0xdf, + 0xff, 0xaf, 0xf5, 0xf6, 0xa2, 0xdb, 0xb2, 0xd1, 0x90, 0x95, 0x57, 0x21, + 0x54, 0xec, 0x47, 0x33, 0xcc, 0x71, 0x44, 0x61, 0xe5, 0x67, 0x1f, 0x0c, + 0x55, 0x00, 0x56, 0x9d, 0xaa, 0xa5, 0x3f, 0x98, 0xa8, 0x17, 0x24, 0x60, + 0x4e, 0x44, 0x26, 0x5c, 0xd0, 0x5a, 0x02, 0x92, 0x49, 0x04, 0x28, 0xc4, + 0xc7, 0xeb, 0x98, 0x48, 0x41, 0x1a, 0xc1, 0x83, 0x04, 0x50, 0xe0, 0x8e, + 0x7f, 0xa4, 0xb2, 0x12, 0x72, 0x99, 0x59, 0x80, 0x70, 0xb8, 0xe1, 0xb9, + 0xf9, 0x60, 0xcc, 0x69, 0x36, 0x24, 0x09, 0x05, 0x72, 0x69, 0x4d, 0x39, + 0x48, 0x2c, 0x39, 0x21, 0x2b, 0x2a, 0xba, 0x21, 0x2c, 0x5a, 0xf9, 0x68, + 0xf0, 0xac, 0x74, 0x88, 0x9b, 0xca, 0x97, 0x98, 0x92, 0x06, 0xe5, 0xab, + 0x15, 0x57, 0x95, 0x4d, 0x00, 0xd5, 0x8c, 0xcd, 0xdf, 0x2b, 0xb8, 0x57, + 0x1f, 0x16, 0x13, 0x8c, 0x5e, 0x3b, 0x12, 0x42, 0x82, 0x21, 0x78, 0xf0, + 0x48, 0x20, 0xb0, 0x74, 0xee, 0x5f, 0x8f, 0xa0, 0xb1, 0xf1, 0x68, 0xf0, + 0xf5, 0xb1, 0x24, 0xb6, 0xe9, 0x89, 0x5a, 0xa5, 0x12, 0xbb, 0x4a, 0xd3, + 0x1b, 0x09, 0x06, 0x67, 0x26, 0xf4, 0x50, 0x6c, 0x3d, 0x94, 0xc8, 0xaa, + 0x12, 0xad, 0x46, 0x95, 0x69, 0xf6, 0x36, 0xf1, 0xb2, 0xe5, 0xa5, 0x84, + 0x77, 0x72, 0x2b, 0xf9, 0xd1, 0xc4, 0x6b, 0x89, 0x29, 0xdb, 0x3d, 0x66, + 0x05, 0x4c, 0xa1, 0x7a, 0x68, 0xff, 0xfb, 0xd4, 0x60, 0x56, 0x00, 0x07, + 0x22, 0x76, 0xbd, 0xc9, 0x2c, 0x63, 0x70, 0x79, 0x27, 0x38, 0x5f, 0x19, + 0x26, 0x5c, 0x1d, 0x3d, 0xda, 0xf5, 0x26, 0x3d, 0xed, 0xc1, 0xff, 0xba, + 0xa0, 0xb4, 0x84, 0x8d, 0xb9, 0xa1, 0x8b, 0x1c, 0x7f, 0xdb, 0xa3, 0x74, + 0x81, 0x65, 0x1f, 0x3f, 0x9a, 0x9c, 0x58, 0xfb, 0x21, 0x89, 0x11, 0x4a, + 0xa9, 0x89, 0x63, 0xda, 0xe3, 0x52, 0x61, 0x69, 0x04, 0x96, 0x48, 0xd8, + 0x89, 0x01, 0xc1, 0xb1, 0x23, 0xcb, 0x63, 0xf8, 0xbc, 0x7c, 0x02, 0xc1, + 0xf9, 0x30, 0xf8, 0x3a, 0x58, 0x4f, 0x30, 0x1c, 0x41, 0x98, 0x72, 0x5a, + 0x6f, 0xc0, 0xd5, 0x55, 0x95, 0x9e, 0x1a, 0xef, 0xbe, 0xd2, 0x0f, 0xda, + 0xc0, 0x41, 0x40, 0xa3, 0x85, 0x9e, 0x89, 0xaa, 0xbf, 0x1e, 0x4a, 0xe2, + 0x72, 0x63, 0x83, 0x01, 0xa3, 0xe6, 0x9c, 0xca, 0x34, 0x19, 0x73, 0xda, + 0x9c, 0xee, 0x55, 0xb2, 0x61, 0x96, 0x72, 0xf0, 0x80, 0x92, 0xc1, 0x90, + 0x29, 0x34, 0x48, 0xda, 0xc7, 0xbc, 0x21, 0xa9, 0x11, 0x4f, 0x4a, 0x5a, + 0x0b, 0xe8, 0xac, 0xd2, 0xce, 0x5f, 0x82, 0xf9, 0xf9, 0x31, 0x99, 0x13, + 0x1e, 0xd0, 0xba, 0x3a, 0xf3, 0x3b, 0x1a, 0xad, 0x7d, 0xd9, 0x44, 0x0e, + 0x88, 0x3a, 0x82, 0x91, 0xae, 0x28, 0x21, 0xc6, 0x21, 0xa1, 0x2b, 0x85, + 0x46, 0x00, 0x43, 0x6e, 0x41, 0x74, 0x24, 0xca, 0x7f, 0xf6, 0x51, 0xcb, + 0x4e, 0x11, 0x71, 0x24, 0x28, 0x08, 0x60, 0x46, 0x64, 0x1f, 0x03, 0xb5, + 0xa3, 0x03, 0xc0, 0x08, 0xcb, 0x2a, 0xd4, 0x84, 0xca, 0xd3, 0x51, 0x49, + 0xb9, 0xd1, 0x50, 0x2b, 0x88, 0xfd, 0x88, 0xf8, 0xf8, 0x85, 0xb2, 0x1d, + 0xd0, 0x57, 0x12, 0x24, 0x55, 0xf0, 0x95, 0xcf, 0xd4, 0x84, 0x90, 0xb9, + 0x2e, 0x58, 0x10, 0xe8, 0x8e, 0xd1, 0x0a, 0x15, 0xe5, 0x3c, 0xca, 0x34, + 0x62, 0xaa, 0xed, 0x88, 0x8a, 0x27, 0xd7, 0x29, 0x44, 0xea, 0xa9, 0x12, + 0xaa, 0x42, 0xdc, 0xe3, 0xa1, 0xd0, 0x58, 0x14, 0x4a, 0x74, 0x92, 0x5b, + 0x6e, 0x4a, 0x1d, 0xa5, 0x13, 0xec, 0x66, 0x13, 0xc3, 0xb5, 0xea, 0x7d, + 0x09, 0x55, 0x48, 0x4f, 0x90, 0xe7, 0x38, 0xef, 0x95, 0x67, 0x2b, 0xf6, + 0x26, 0x56, 0xbb, 0x47, 0x7f, 0x31, 0x70, 0x45, 0xa1, 0xb3, 0xa7, 0x9f, + 0x9d, 0x30, 0x17, 0x6f, 0x1e, 0x2d, 0xb7, 0x33, 0xb2, 0x4e, 0x7f, 0xac, + 0xab, 0x4f, 0xec, 0xac, 0xc9, 0x0b, 0xb0, 0x2a, 0x2d, 0x09, 0x0f, 0x37, + 0x51, 0x89, 0xb9, 0xa7, 0x50, 0xa3, 0xd7, 0xb0, 0x91, 0x83, 0x05, 0x3a, + 0x85, 0x2e, 0x59, 0x18, 0x18, 0xdd, 0xc4, 0x6c, 0x79, 0x69, 0xdb, 0x5b, + 0x1b, 0x60, 0x33, 0xaf, 0x62, 0x5d, 0xb5, 0xc3, 0xf9, 0x7d, 0x47, 0x09, + 0x27, 0xdc, 0x27, 0x1b, 0x39, 0x62, 0x13, 0xd7, 0x39, 0xb2, 0xd7, 0x05, + 0x73, 0xbd, 0xe3, 0x16, 0x8e, 0xd9, 0xdc, 0x61, 0xc2, 0x91, 0x66, 0x91, + 0xe7, 0xd5, 0xa0, 0x43, 0x64, 0x68, 0xcc, 0x26, 0x96, 0x86, 0x76, 0xa3, + 0x45, 0x54, 0x83, 0x3c, 0x5b, 0x60, 0x9c, 0xd0, 0xa4, 0x7a, 0x68, 0x26, + 0x60, 0x28, 0xc7, 0xdb, 0x62, 0x89, 0x80, 0x87, 0x89, 0x61, 0x69, 0x78, + 0xb4, 0x8d, 0x5d, 0xae, 0x86, 0x49, 0xad, 0x36, 0xc1, 0x8d, 0xbb, 0x66, + 0x7d, 0xc9, 0x2d, 0x6c, 0x7b, 0xa0, 0x08, 0x04, 0x22, 0x53, 0x49, 0x69, + 0x50, 0xfd, 0x0b, 0x36, 0x3a, 0xc4, 0x67, 0x64, 0xe4, 0x01, 0x41, 0x8d, + 0x6d, 0x8d, 0x8b, 0x68, 0x45, 0x9a, 0xa5, 0xe1, 0x71, 0xcf, 0x9b, 0x3a, + 0xf7, 0x0d, 0x43, 0x8b, 0xcd, 0xab, 0x61, 0x9f, 0xbe, 0xb3, 0xe5, 0x76, + 0x28, 0xc3, 0x5a, 0xe2, 0xe3, 0x50, 0xc2, 0x43, 0x3b, 0x8d, 0x18, 0x40, + 0x40, 0x4c, 0xb0, 0x4d, 0x10, 0x1d, 0x48, 0xc5, 0x05, 0x27, 0x27, 0x11, + 0xed, 0xd8, 0xc6, 0x99, 0xa1, 0x7d, 0xa8, 0x6d, 0x9d, 0x9b, 0xa1, 0xc5, + 0xb9, 0x5a, 0xa7, 0x54, 0x64, 0x62, 0x88, 0x9b, 0xfe, 0xf7, 0x29, 0x97, + 0xff, 0xcf, 0xff, 0xbf, 0xff, 0x3f, 0xfc, 0xbe, 0x79, 0xbf, 0x0b, 0xdb, + 0x0c, 0x6b, 0x41, 0x39, 0x72, 0x82, 0x06, 0xf4, 0x86, 0x40, 0x6d, 0xf5, + 0x81, 0xa4, 0x08, 0x8a, 0x2a, 0x03, 0xb5, 0x34, 0xa1, 0x3a, 0xfa, 0xf1, + 0xd5, 0x28, 0x7c, 0x16, 0x1d, 0x35, 0x00, 0xf4, 0x66, 0x8c, 0x42, 0x6c, + 0x94, 0xe9, 0x28, 0xa4, 0x64, 0xb4, 0xf0, 0x80, 0x76, 0x6a, 0x3c, 0x62, + 0xe3, 0x34, 0xa9, 0x48, 0x45, 0xdd, 0x75, 0xd2, 0xc9, 0xe0, 0x54, 0xf0, + 0xaf, 0x8a, 0x85, 0x47, 0x4d, 0x44, 0x21, 0xfc, 0xb0, 0x7e, 0x03, 0x46, + 0x2b, 0x9b, 0x23, 0x2f, 0x17, 0x1a, 0xd1, 0x59, 0x30, 0x7d, 0x21, 0xb8, + 0x2a, 0x5b, 0x14, 0xc6, 0xf1, 0xe8, 0xbb, 0x51, 0x39, 0xb9, 0x2a, 0x55, + 0xcc, 0x0f, 0x6c, 0xdf, 0x88, 0xca, 0x04, 0x6b, 0xd3, 0xdd, 0xc5, 0xe9, + 0xc0, 0x46, 0xcb, 0x8b, 0x12, 0x8c, 0xdc, 0x27, 0xc8, 0xfb, 0xbd, 0x69, + 0xca, 0x1a, 0xdb, 0x5d, 0x5d, 0x30, 0x8a, 0x73, 0x82, 0xc1, 0x15, 0x38, + 0xe6, 0xcc, 0xaa, 0x56, 0x51, 0xc5, 0x16, 0x9d, 0x6e, 0x60, 0x88, 0x9d, + 0x72, 0x62, 0x87, 0x06, 0x57, 0x05, 0xf7, 0x36, 0x36, 0x85, 0x79, 0xce, + 0x85, 0xfb, 0x4c, 0xe2, 0xc0, 0xcf, 0x99, 0xd3, 0xac, 0xec, 0x2d, 0xf8, + 0x7c, 0xb8, 0x89, 0xa9, 0xea, 0xde, 0xc7, 0xe0, 0xb1, 0x31, 0xbf, 0x63, + 0x66, 0x8a, 0xd4, 0xd8, 0xf9, 0xdb, 0x25, 0x9e, 0x2a, 0x9b, 0x98, 0x9c, + 0xf5, 0x77, 0x1b, 0xee, 0x0e, 0x1c, 0xa0, 0xb0, 0x39, 0xb6, 0x35, 0xcf, + 0x35, 0x9a, 0x94, 0x92, 0x32, 0xff, 0xfb, 0xd4, 0x60, 0x60, 0x00, 0x07, + 0x58, 0x76, 0x3c, 0xb1, 0x8c, 0x7b, 0x70, 0x7d, 0xae, 0x58, 0x3d, 0x18, + 0xc5, 0x6e, 0x5d, 0x35, 0xd6, 0xf5, 0x26, 0x3d, 0xed, 0xca, 0x1b, 0x3a, + 0xa0, 0x34, 0x93, 0x0d, 0xb9, 0x37, 0xd9, 0x9d, 0xd3, 0x8c, 0x07, 0x6a, + 0x0b, 0x9d, 0x2c, 0x0b, 0x48, 0xd4, 0x3d, 0x60, 0xda, 0x5c, 0x9e, 0x28, + 0x44, 0x28, 0x32, 0x17, 0xf7, 0xe6, 0x81, 0xe6, 0x84, 0x0b, 0x6a, 0x04, + 0x7a, 0x4e, 0xb1, 0xf6, 0xc4, 0x29, 0xaa, 0xc1, 0x82, 0x87, 0xbf, 0x5a, + 0x09, 0xc9, 0x2d, 0xb3, 0x6b, 0x2e, 0x96, 0x41, 0xf9, 0x7a, 0x0a, 0x36, + 0x81, 0x98, 0x00, 0x14, 0x44, 0xf2, 0x03, 0x20, 0xd2, 0xfa, 0x25, 0x34, + 0x11, 0x45, 0x1a, 0x3d, 0xaa, 0x88, 0x3d, 0x9e, 0xa3, 0x71, 0xb9, 0x58, + 0xe5, 0x6f, 0x67, 0xff, 0x25, 0x39, 0xb0, 0xc4, 0x04, 0xf4, 0x58, 0xd3, + 0x59, 0x8d, 0x60, 0xf9, 0x0e, 0x51, 0xc2, 0x6b, 0x30, 0x9b, 0x2b, 0xcb, + 0x53, 0x9c, 0xa4, 0x2d, 0x90, 0x88, 0x71, 0xee, 0x84, 0x0a, 0x9a, 0x2e, + 0x3a, 0x42, 0x8b, 0x34, 0xac, 0x65, 0x21, 0x26, 0xb2, 0xcc, 0x3d, 0x9d, + 0x90, 0xb5, 0x2a, 0x38, 0x7d, 0x27, 0x10, 0x47, 0x18, 0x42, 0x8f, 0x2b, + 0xa1, 0x7e, 0xa8, 0x4d, 0x1d, 0x9f, 0xff, 0xa7, 0xff, 0xfd, 0xdf, 0xaa, + 0x5e, 0x66, 0xa1, 0x08, 0x46, 0x42, 0x14, 0xc6, 0x35, 0x84, 0x31, 0x73, + 0x22, 0x8a, 0x8e, 0x20, 0x78, 0x30, 0x02, 0x3d, 0x4f, 0xd5, 0x29, 0x32, + 0xe4, 0x45, 0x92, 0x79, 0x2f, 0x03, 0x63, 0xea, 0x44, 0xa8, 0x93, 0x11, + 0x21, 0x34, 0x0e, 0xe3, 0x44, 0xbe, 0xc7, 0x52, 0x2b, 0x98, 0x14, 0xcb, + 0x84, 0xba, 0x5d, 0x2e, 0x85, 0xa9, 0x95, 0xea, 0xd5, 0x06, 0x13, 0x68, + 0x35, 0xd3, 0x3b, 0x72, 0x8d, 0x5a, 0x7f, 0x9f, 0xd0, 0x0e, 0x85, 0x33, + 0xa7, 0x03, 0xed, 0xc1, 0xc8, 0xcb, 0x72, 0x50, 0xb8, 0x9f, 0x8a, 0x96, + 0x03, 0x99, 0x6d, 0x0f, 0x82, 0xa9, 0x6a, 0x68, 0x1f, 0xcb, 0xb6, 0x63, + 0xa5, 0x90, 0xe5, 0xed, 0x6c, 0x6d, 0x08, 0x73, 0x7b, 0x93, 0xb4, 0x39, + 0x3c, 0x9c, 0x80, 0xcc, 0x9b, 0x5a, 0x5f, 0x45, 0x2b, 0x5a, 0xd8, 0x53, + 0xcb, 0x74, 0x56, 0xa8, 0x91, 0x13, 0xb1, 0xce, 0x86, 0xbc, 0x46, 0x31, + 0x53, 0x10, 0x1d, 0xb0, 0xab, 0xda, 0xe3, 0x47, 0xb3, 0x1b, 0x8b, 0x1d, + 0xa3, 0x62, 0x1b, 0x34, 0x79, 0x1f, 0x5a, 0x13, 0xfb, 0xb7, 0x5d, 0xb2, + 0x04, 0x45, 0x3c, 0xc8, 0x7c, 0x6b, 0x37, 0x1a, 0x4a, 0xf7, 0x96, 0x42, + 0xd9, 0x97, 0x71, 0x1b, 0x54, 0xd7, 0x6c, 0x3c, 0x1b, 0x9a, 0x9c, 0x99, + 0x9b, 0x6a, 0xbc, 0xc5, 0x0e, 0xf8, 0x9e, 0x3b, 0x03, 0x34, 0x2c, 0x52, + 0x5b, 0xc4, 0xbd, 0x21, 0xd7, 0x7b, 0xd4, 0x7a, 0xc4, 0xd4, 0x7d, 0xd2, + 0xb9, 0x43, 0xa0, 0xe5, 0xed, 0x62, 0xc6, 0x83, 0x15, 0xdb, 0xa3, 0xbe, + 0x1b, 0xd6, 0xf6, 0x06, 0x56, 0x95, 0xc2, 0x93, 0x6e, 0xdb, 0x15, 0x6c, + 0x75, 0xa1, 0xe6, 0x8f, 0x3d, 0x0e, 0xa4, 0x4c, 0x23, 0x80, 0xb7, 0x0e, + 0x04, 0x41, 0x24, 0x4d, 0x21, 0xc5, 0xfd, 0x5e, 0x58, 0x53, 0xc3, 0xc1, + 0x29, 0xb8, 0xe4, 0x96, 0x58, 0xe4, 0x6c, 0x7e, 0xc9, 0x05, 0xc9, 0x7d, + 0x40, 0xaa, 0x11, 0x86, 0x43, 0xa2, 0x63, 0xd7, 0x58, 0x28, 0x00, 0x79, + 0x12, 0x20, 0x0a, 0x5d, 0x96, 0x93, 0x80, 0x84, 0x2d, 0x20, 0x34, 0x68, + 0xd9, 0xe6, 0x94, 0x91, 0xe6, 0xb3, 0x6c, 0xad, 0xd7, 0x1b, 0x7a, 0x8c, + 0xb1, 0x69, 0x9e, 0x60, 0x45, 0x9a, 0x95, 0x45, 0xa4, 0x60, 0xd2, 0x91, + 0x2a, 0x28, 0x6b, 0x08, 0x05, 0x98, 0x33, 0x8b, 0xb4, 0x50, 0x90, 0xfb, + 0xb7, 0x9c, 0x81, 0x04, 0xc6, 0x8b, 0x86, 0xb0, 0x22, 0x3d, 0xcd, 0x8c, + 0x8c, 0x8f, 0x7c, 0xf2, 0x54, 0xe3, 0x43, 0x74, 0x52, 0x14, 0x11, 0x2b, + 0xc3, 0x29, 0x9d, 0xa9, 0x94, 0x41, 0xbf, 0xbf, 0xfe, 0x7f, 0x3f, 0xfb, + 0xbf, 0x67, 0xfd, 0x46, 0x53, 0x18, 0x77, 0x64, 0x79, 0x72, 0xc8, 0x35, + 0x04, 0xc2, 0xb3, 0x61, 0xcc, 0x28, 0x5d, 0x44, 0x61, 0x42, 0x20, 0xce, + 0x11, 0x94, 0x00, 0x05, 0x95, 0xa9, 0x94, 0x27, 0x39, 0x01, 0x70, 0xb4, + 0xb6, 0xf0, 0x92, 0xb6, 0xae, 0x21, 0x9f, 0xa6, 0x17, 0x16, 0x47, 0x01, + 0xec, 0xae, 0x7a, 0xf9, 0x31, 0x20, 0x86, 0x7c, 0x0d, 0x98, 0x3e, 0x50, + 0x16, 0x9f, 0xba, 0x78, 0x5d, 0x35, 0x60, 0x0f, 0x17, 0x98, 0x88, 0x13, + 0x1f, 0x0b, 0x3a, 0x5f, 0x46, 0x2d, 0x5a, 0x1b, 0x96, 0x10, 0x0d, 0xc2, + 0xf6, 0x50, 0xb4, 0x96, 0x38, 0x0f, 0xe0, 0xf8, 0x31, 0x4c, 0x5f, 0x95, + 0xc5, 0xf3, 0x3d, 0x15, 0x0c, 0xe9, 0x56, 0xa5, 0x6f, 0x64, 0x56, 0x38, + 0x36, 0xc5, 0x9d, 0xf3, 0x33, 0x72, 0x7e, 0x02, 0xde, 0x99, 0x5f, 0x36, + 0x9b, 0xc8, 0x7a, 0x63, 0x51, 0x55, 0x92, 0x48, 0xe9, 0x71, 0x2c, 0x45, + 0x8d, 0xbe, 0x84, 0xd6, 0xfd, 0xb0, 0xf4, 0x69, 0xba, 0xa5, 0x5a, 0xc8, + 0xbc, 0xc2, 0xf9, 0x1e, 0xde, 0x85, 0x51, 0xfb, 0x5b, 0x62, 0xb2, 0x3a, + 0x1a, 0xc5, 0x6b, 0xc7, 0x63, 0x64, 0x60, 0xc5, 0x65, 0x79, 0x35, 0xd8, + 0x31, 0x19, 0xaf, 0xab, 0x9d, 0xd5, 0xc6, 0x33, 0x34, 0x39, 0x55, 0x74, + 0xdc, 0x1f, 0x2d, 0xa3, 0xd2, 0x0c, 0xd2, 0x6d, 0xba, 0x2c, 0x28, 0x93, + 0x29, 0x9e, 0xb9, 0xdf, 0x0f, 0x60, 0xc9, 0x87, 0x72, 0xaa, 0xac, 0xe7, + 0x9f, 0x16, 0x1a, 0xea, 0x2c, 0xed, 0x0c, 0xed, 0xb0, 0x5f, 0x4d, 0x2c, + 0xcf, 0xe4, 0x7c, 0xe0, 0x56, 0xff, 0xfb, 0xd4, 0x60, 0x61, 0x88, 0x07, + 0x12, 0x75, 0xbc, 0xc9, 0x8c, 0x7b, 0x72, 0x7e, 0x0e, 0x78, 0x2d, 0x19, + 0x23, 0x6e, 0x5f, 0xf5, 0xdc, 0xec, 0xa7, 0xb3, 0x0d, 0xc2, 0x53, 0xba, + 0xdf, 0xb4, 0x94, 0xa1, 0xb8, 0xa7, 0xe9, 0x2c, 0xea, 0xc4, 0xca, 0xc4, + 0x32, 0xbd, 0x0b, 0x3f, 0x8a, 0x35, 0x5e, 0xce, 0x53, 0x21, 0x06, 0x94, + 0x4b, 0xb3, 0x96, 0x4c, 0xb0, 0x4b, 0x69, 0x39, 0x63, 0x2e, 0x69, 0xf5, + 0xc2, 0x51, 0xbb, 0x5e, 0xfe, 0x4d, 0x6c, 0x6c, 0x7f, 0x20, 0x7d, 0x02, + 0x4d, 0x1b, 0xb4, 0x40, 0x14, 0xf2, 0xe8, 0x1d, 0x53, 0xb3, 0x4c, 0x90, + 0x13, 0x12, 0x04, 0x91, 0x2c, 0x16, 0x27, 0x21, 0x55, 0x00, 0xca, 0x53, + 0xdc, 0xbf, 0x1f, 0x2f, 0x77, 0x09, 0xa6, 0xdf, 0x49, 0x6d, 0x92, 0x4a, + 0xa5, 0x37, 0x2b, 0x38, 0x88, 0x66, 0x20, 0x74, 0x00, 0x5d, 0x0b, 0x4c, + 0x84, 0x0c, 0x8f, 0x0f, 0xeb, 0x03, 0x83, 0x1a, 0xb0, 0x72, 0x3a, 0xb1, + 0xe2, 0x39, 0x9a, 0x0c, 0x75, 0x8c, 0xfe, 0x94, 0x7e, 0x2d, 0x48, 0xfe, + 0x4d, 0x54, 0xcc, 0xa9, 0x1c, 0x2f, 0xcc, 0xa7, 0x27, 0x4d, 0xe1, 0xfd, + 0xcc, 0xab, 0xdd, 0xbf, 0xf3, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x2f, 0x9e, + 0x76, 0xf6, 0xe8, 0x88, 0xa5, 0x95, 0x0a, 0x18, 0x43, 0x32, 0xd7, 0x3b, + 0xf8, 0x19, 0x1e, 0xa0, 0xa2, 0x56, 0x0d, 0x10, 0x6b, 0x65, 0xd8, 0xe3, + 0x2a, 0xd5, 0xc5, 0xfe, 0x19, 0x7d, 0x2f, 0x07, 0xe3, 0xa3, 0xc8, 0xe6, + 0x88, 0x5a, 0x5b, 0xc5, 0xe7, 0x86, 0xbf, 0x06, 0xe9, 0x04, 0xf4, 0xaa, + 0x4b, 0x82, 0xe1, 0x69, 0x29, 0x2a, 0x70, 0x9d, 0xc2, 0xe0, 0x72, 0x25, + 0x80, 0x72, 0x31, 0x38, 0xd8, 0x1a, 0x15, 0x54, 0xab, 0x25, 0xc0, 0xc1, + 0x89, 0xf8, 0x35, 0x2f, 0x9d, 0x95, 0x92, 0x96, 0x88, 0x01, 0xc1, 0x89, + 0xf1, 0x5c, 0x9c, 0xcc, 0x39, 0x28, 0xaf, 0x33, 0x09, 0x86, 0x5c, 0x69, + 0x0c, 0x12, 0xf1, 0xc3, 0x90, 0x4d, 0x3c, 0xb7, 0x18, 0xdd, 0x13, 0xe9, + 0x43, 0xaa, 0x1a, 0x19, 0xf8, 0x53, 0xd3, 0x56, 0x25, 0x15, 0xb5, 0x24, + 0xa0, 0xc1, 0xee, 0x89, 0x3f, 0x92, 0xa9, 0xec, 0xe6, 0x61, 0xfc, 0x26, + 0xe0, 0xb9, 0x6d, 0x89, 0x14, 0x37, 0x43, 0x3f, 0x35, 0xc9, 0x45, 0x4b, + 0x51, 0xf9, 0x6c, 0x09, 0x4f, 0x2a, 0x8d, 0xe5, 0x9f, 0xf3, 0xe1, 0xda, + 0x16, 0x9f, 0x15, 0x8d, 0xe5, 0x56, 0x9b, 0x29, 0x4b, 0xc9, 0x4d, 0x72, + 0x21, 0x33, 0x22, 0x91, 0x41, 0x94, 0x30, 0xb9, 0x88, 0x76, 0x15, 0x0c, + 0xc3, 0x51, 0x0a, 0x0b, 0x12, 0xb8, 0x9d, 0x1e, 0x37, 0xa0, 0x58, 0x03, + 0x94, 0xbf, 0x9d, 0x5d, 0x50, 0xc4, 0x25, 0xbb, 0xbf, 0x2e, 0xa0, 0x89, + 0x58, 0xca, 0x9f, 0x95, 0x25, 0x74, 0xb2, 0xea, 0x93, 0xae, 0x55, 0x24, + 0xb7, 0x08, 0xdc, 0x56, 0xdd, 0xaa, 0x78, 0xbe, 0xe3, 0x6f, 0xab, 0xa1, + 0x49, 0x0d, 0x43, 0x2e, 0xec, 0xa5, 0x9b, 0xb0, 0xe6, 0xfd, 0x53, 0xad, + 0x48, 0xb3, 0xa0, 0xd6, 0xa9, 0xa6, 0xd6, 0x15, 0xcb, 0x8e, 0xc5, 0x61, + 0x10, 0x6a, 0x91, 0x50, 0x46, 0x6c, 0xd1, 0x92, 0x8d, 0xc8, 0x6b, 0xc1, + 0x44, 0x15, 0x06, 0x82, 0xec, 0xa5, 0xfa, 0x87, 0xe8, 0xf8, 0x01, 0x45, + 0x27, 0x2d, 0xcf, 0x49, 0x1a, 0x23, 0xf5, 0x76, 0xd7, 0x12, 0x05, 0x9f, + 0x4c, 0x41, 0x65, 0xa7, 0x12, 0xcd, 0x0a, 0x88, 0xd3, 0x78, 0x60, 0x94, + 0x50, 0x08, 0x82, 0xc1, 0x5d, 0x2a, 0x8d, 0x32, 0x71, 0x08, 0x4d, 0x7b, + 0xd5, 0x18, 0xc8, 0xe5, 0x99, 0x9a, 0xba, 0x42, 0x4e, 0x25, 0x50, 0x2b, + 0x6c, 0xaf, 0x49, 0x9b, 0xa4, 0x55, 0x94, 0x4a, 0x50, 0x95, 0x4f, 0x08, + 0xd8, 0xf7, 0x81, 0xd9, 0x5a, 0x87, 0x6e, 0x33, 0x30, 0xd2, 0x87, 0x88, + 0x42, 0x89, 0x43, 0x2a, 0xb5, 0x74, 0x7f, 0x95, 0x9a, 0x58, 0x73, 0x46, + 0x8e, 0x36, 0x1d, 0xa6, 0x6e, 0x2e, 0xe6, 0xbb, 0x22, 0xd5, 0xbb, 0xf4, + 0x8e, 0x6f, 0xf8, 0xa9, 0x98, 0xae, 0x62, 0xfe, 0x7b, 0xe7, 0xfa, 0xef, + 0xfb, 0x9f, 0xff, 0xd3, 0xa9, 0xae, 0x66, 0x69, 0xa7, 0x7b, 0xb1, 0xef, + 0x32, 0x8f, 0x1a, 0xb0, 0xc3, 0x98, 0x54, 0x60, 0xb0, 0xf0, 0xfc, 0xb5, + 0x73, 0xa4, 0x50, 0x4f, 0xf3, 0x68, 0x58, 0xfb, 0x11, 0x2c, 0xd2, 0x58, + 0x45, 0x72, 0x5a, 0x00, 0xc2, 0xca, 0x81, 0x30, 0x90, 0x97, 0x02, 0x63, + 0xc0, 0x9e, 0x0d, 0x0b, 0xc3, 0xd0, 0xfd, 0x1c, 0x26, 0xaa, 0x91, 0x95, + 0x0c, 0x23, 0x03, 0xe7, 0xe4, 0xb5, 0xc9, 0xc3, 0x13, 0x93, 0x15, 0xc7, + 0x5a, 0x7a, 0xd2, 0x45, 0xa3, 0xee, 0x16, 0x02, 0x11, 0x1d, 0x59, 0x78, + 0x0c, 0x36, 0x25, 0x99, 0x19, 0x14, 0x43, 0xb5, 0x10, 0x20, 0xa5, 0x22, + 0x01, 0x21, 0xd4, 0xb4, 0x17, 0x2f, 0x58, 0x7c, 0x43, 0x11, 0x47, 0xd3, + 0x63, 0xaa, 0x24, 0x8b, 0xca, 0x67, 0x36, 0xf7, 0xac, 0x4f, 0xd0, 0x94, + 0xb2, 0x29, 0xca, 0xea, 0x48, 0xf3, 0xba, 0x55, 0x51, 0x4a, 0x85, 0x44, + 0x68, 0x66, 0x52, 0x21, 0xa4, 0xa9, 0x0f, 0x7e, 0x5f, 0x54, 0xb8, 0x64, + 0x52, 0xa7, 0xec, 0xa4, 0x54, 0xb8, 0x3d, 0xac, 0xcf, 0x2b, 0xdb, 0x4e, + 0xb6, 0xf4, 0xab, 0x6e, 0x75, 0x79, 0xf1, 0x2b, 0x84, 0x04, 0x8c, 0x8c, + 0x6a, 0x09, 0x16, 0x2d, 0x97, 0xde, 0xcc, 0x15, 0x74, 0xc8, 0xf5, 0xca, + 0x1c, 0x26, 0xd9, 0x96, 0x71, 0x01, 0x50, 0xe2, 0xa4, 0x68, 0x95, 0xa9, + 0x87, 0x51, 0x57, 0x6f, 0xe4, 0x80, 0xf5, 0x9d, 0x8e, 0x94, 0x83, 0x05, + 0x4d, 0x8d, 0x6a, 0x7d, 0xd6, 0xff, 0xfb, 0xd4, 0x60, 0x55, 0x00, 0x07, + 0x5a, 0x76, 0xbb, 0xb1, 0x8c, 0x7b, 0x70, 0x7d, 0x6e, 0x58, 0x2d, 0x25, + 0x25, 0x6e, 0x5a, 0x41, 0xd8, 0xf5, 0x24, 0xb1, 0x8d, 0xc2, 0x15, 0xb9, + 0xa0, 0xbc, 0x94, 0x95, 0xb9, 0x2a, 0x9a, 0x1b, 0x74, 0xf7, 0x79, 0x16, + 0x1b, 0xa6, 0x0b, 0xc5, 0x72, 0x4f, 0x33, 0x56, 0x3b, 0x6b, 0x84, 0x4c, + 0xa5, 0x1a, 0x10, 0xd6, 0x37, 0x15, 0x64, 0x55, 0xca, 0x60, 0xfd, 0x51, + 0x1e, 0x91, 0xdb, 0xcf, 0x96, 0xd3, 0xd5, 0x99, 0x3c, 0x76, 0xa9, 0x6a, + 0x70, 0x99, 0xe6, 0x22, 0xa4, 0x5b, 0xdc, 0x88, 0x0a, 0xa8, 0xf2, 0x01, + 0x78, 0x75, 0x8b, 0x61, 0x56, 0x83, 0x1e, 0xa3, 0xa6, 0x1e, 0xc2, 0x6d, + 0xd9, 0x26, 0xda, 0x5d, 0xa5, 0x8c, 0x7f, 0x68, 0xd6, 0x32, 0x55, 0x0c, + 0x24, 0x58, 0x44, 0xcd, 0x6c, 0xab, 0x9b, 0x3d, 0xa8, 0x62, 0x36, 0x8c, + 0xc1, 0x03, 0x4d, 0x1a, 0x92, 0xb9, 0xac, 0xea, 0x50, 0xed, 0x4e, 0x35, + 0x25, 0x6f, 0x25, 0xdd, 0x34, 0x9b, 0x94, 0xe2, 0xb5, 0xac, 0x88, 0xfa, + 0x0e, 0x64, 0x63, 0x9c, 0x69, 0x62, 0x65, 0x1a, 0x82, 0xe3, 0x54, 0x3f, + 0x2b, 0x90, 0xb5, 0x69, 0x95, 0x19, 0xd9, 0x1d, 0xd1, 0xd0, 0x54, 0x69, + 0x4d, 0x39, 0xd9, 0xe8, 0xc3, 0x42, 0xcc, 0x2e, 0x59, 0x1a, 0xb1, 0xea, + 0x49, 0xe6, 0x73, 0x09, 0x22, 0xc5, 0x10, 0xeb, 0xf6, 0x2b, 0x5a, 0x94, + 0x7a, 0xef, 0xb5, 0xdb, 0xff, 0xff, 0xfe, 0xbd, 0x54, 0xf4, 0x47, 0x31, + 0xf3, 0x2b, 0x50, 0x51, 0x10, 0x68, 0xe3, 0x8c, 0x96, 0xf9, 0xd5, 0x9c, + 0x40, 0xb2, 0x3c, 0x80, 0x02, 0xaf, 0x7f, 0x5d, 0x29, 0xfb, 0x05, 0x41, + 0x7e, 0x70, 0x84, 0x80, 0xa3, 0x40, 0x6c, 0x12, 0x48, 0x9e, 0x38, 0x9a, + 0x3b, 0x58, 0x78, 0x84, 0x7d, 0x64, 0x33, 0x13, 0x8b, 0x08, 0xa2, 0x09, + 0xb4, 0x69, 0x84, 0x21, 0x18, 0x40, 0x0a, 0xcb, 0x44, 0xf2, 0xb0, 0x9e, + 0x07, 0xc6, 0x81, 0x20, 0x9b, 0x8f, 0x99, 0x20, 0x57, 0xdf, 0x5e, 0x67, + 0x24, 0xa1, 0x29, 0xf1, 0x08, 0x78, 0x68, 0xdd, 0xb2, 0x61, 0x98, 0x9e, + 0x55, 0x4a, 0x7a, 0x59, 0x32, 0xc5, 0xec, 0xae, 0x2f, 0xab, 0x68, 0xc8, + 0x82, 0xa4, 0xec, 0x9e, 0xe0, 0xf1, 0x55, 0x87, 0xa2, 0x41, 0x3c, 0x9e, + 0x94, 0xb6, 0x5c, 0x58, 0xf1, 0x62, 0xb5, 0x12, 0x9c, 0xa1, 0x8a, 0x18, + 0xf3, 0x02, 0xdd, 0x2f, 0xb6, 0x7c, 0x48, 0x4b, 0x65, 0x2b, 0x12, 0x73, + 0x04, 0xdb, 0xbe, 0x3a, 0xb2, 0x48, 0x84, 0xd9, 0x72, 0x93, 0xc5, 0x67, + 0x0c, 0x52, 0xe9, 0x16, 0xfc, 0x71, 0xd9, 0x08, 0xfd, 0x82, 0xf3, 0xd7, + 0x5e, 0xa1, 0x69, 0xd6, 0xb6, 0xa7, 0x9b, 0xc8, 0xdc, 0x66, 0x1d, 0x5f, + 0x1c, 0x55, 0xe8, 0x69, 0x0d, 0xa6, 0xcd, 0xc7, 0xfa, 0xe3, 0x56, 0x6a, + 0x16, 0xdc, 0x76, 0x93, 0x38, 0xe6, 0xd6, 0xd1, 0x27, 0x9c, 0x3c, 0xb2, + 0x9e, 0x63, 0x97, 0x96, 0x4b, 0x47, 0x0f, 0x5c, 0xe9, 0xe4, 0xc5, 0x2e, + 0x8c, 0x8c, 0x62, 0xb9, 0xa2, 0x91, 0x71, 0x09, 0xd8, 0xac, 0x0d, 0x48, + 0xa1, 0x79, 0xc2, 0x08, 0x37, 0x0f, 0xc3, 0x76, 0xef, 0x08, 0x02, 0x2a, + 0x22, 0xb2, 0xbc, 0x7d, 0xf7, 0xd6, 0x31, 0xff, 0xba, 0x46, 0x0a, 0xae, + 0xc6, 0x20, 0x13, 0x8e, 0x25, 0x01, 0xc3, 0xc5, 0xf5, 0x9a, 0x6c, 0xc0, + 0xf0, 0x39, 0xc1, 0xf1, 0x01, 0xd2, 0x04, 0x47, 0xd1, 0xa3, 0x6c, 0xd2, + 0x35, 0x64, 0x74, 0x8e, 0x0c, 0xa5, 0x21, 0x5d, 0xc5, 0xe5, 0xc9, 0x19, + 0xa9, 0xc9, 0x0e, 0x27, 0xbd, 0x2e, 0xbf, 0x28, 0x74, 0xc4, 0x40, 0x0c, + 0x3c, 0x02, 0xb0, 0x99, 0x9c, 0x78, 0x41, 0x0c, 0x1e, 0x0f, 0x28, 0xa1, + 0x15, 0xca, 0x20, 0x22, 0x2e, 0x31, 0x4e, 0x47, 0x1a, 0x51, 0x63, 0xa5, + 0x8a, 0x22, 0xa5, 0x41, 0x02, 0xca, 0x21, 0xaa, 0xcf, 0x54, 0x67, 0x5d, + 0x19, 0xa7, 0x95, 0xcc, 0xc7, 0xa3, 0xe9, 0xd3, 0xe9, 0x2b, 0x67, 0x46, + 0x6a, 0xff, 0xff, 0xff, 0xaa, 0xef, 0x57, 0xf7, 0x56, 0x49, 0xcc, 0xaf, + 0x21, 0xb5, 0x3a, 0x2a, 0x0d, 0x46, 0xbd, 0x4c, 0x71, 0x94, 0x14, 0x00, + 0x12, 0x11, 0x4e, 0x77, 0xfc, 0x84, 0xe2, 0x62, 0xa3, 0x4a, 0xc2, 0x56, + 0xdf, 0x2d, 0x7b, 0x06, 0x62, 0x4d, 0x26, 0xe9, 0x78, 0x92, 0xa8, 0x7a, + 0x3c, 0x4c, 0x24, 0x88, 0x43, 0x24, 0x83, 0xe0, 0x36, 0x76, 0x12, 0x9a, + 0x2b, 0xaf, 0x5e, 0x2b, 0x24, 0xa7, 0x1a, 0xce, 0x50, 0x30, 0xba, 0x0a, + 0xaf, 0x0a, 0xa4, 0xc4, 0xc5, 0x91, 0x1e, 0x90, 0xb4, 0xd9, 0x28, 0xb6, + 0xbb, 0x47, 0xc1, 0x2c, 0xc6, 0x01, 0x79, 0xf8, 0xb0, 0xa8, 0x29, 0x3b, + 0x5d, 0x0c, 0x40, 0x9a, 0xf3, 0x2a, 0x3e, 0x6a, 0x46, 0x29, 0x13, 0xcb, + 0x29, 0x04, 0xf2, 0xea, 0x13, 0x89, 0xc4, 0xa3, 0x12, 0x4b, 0xc8, 0x6b, + 0xae, 0x5a, 0x5a, 0x99, 0x7a, 0x0a, 0x76, 0x8e, 0x6e, 0x72, 0x72, 0x62, + 0x85, 0x0b, 0xc9, 0x6e, 0xf2, 0x25, 0xab, 0x16, 0xba, 0xdd, 0xdf, 0x2a, + 0x36, 0xce, 0xae, 0x6d, 0x85, 0x8a, 0x1c, 0x86, 0x53, 0x26, 0x86, 0x5c, + 0x69, 0x63, 0x54, 0xe4, 0x2c, 0x3d, 0xd7, 0x92, 0xc5, 0x65, 0xbe, 0xce, + 0xfd, 0x5f, 0x63, 0xff, 0xb3, 0x90, 0xe5, 0xcf, 0xbe, 0xd3, 0xdf, 0xc6, + 0xde, 0xaf, 0x7a, 0x8e, 0xa4, 0x17, 0x8a, 0xdf, 0x16, 0xc1, 0x4a, 0x6c, + 0x9f, 0x3b, 0xa7, 0x95, 0x2f, 0xbd, 0x6d, 0xab, 0xe7, 0xcc, 0xca, 0xa6, + 0x53, 0xc7, 0x53, 0x32, 0xb8, 0xe5, 0x73, 0x98, 0xfc, 0x97, 0xa9, 0x81, + 0x63, 0x35, 0xc5, 0xf2, 0x31, 0xff, 0xfb, 0xd4, 0x60, 0x63, 0x00, 0x06, + 0x57, 0x75, 0xbd, 0x61, 0x8c, 0x63, 0x72, 0x86, 0x4e, 0xa8, 0x0d, 0x21, + 0x83, 0x6e, 0x21, 0x45, 0xda, 0xe6, 0xa7, 0xbd, 0xed, 0xc2, 0x69, 0xba, + 0x9e, 0xa4, 0x93, 0x25, 0xb9, 0xb0, 0x2a, 0x6a, 0xee, 0x4a, 0x08, 0x71, + 0xc9, 0x2f, 0xdb, 0x4b, 0x63, 0x63, 0xd2, 0x78, 0x28, 0xe0, 0x50, 0x03, + 0xca, 0x96, 0x38, 0x6b, 0xb8, 0xb9, 0xcb, 0x5c, 0xc6, 0xa7, 0x5a, 0x43, + 0x20, 0x26, 0x0a, 0x93, 0x34, 0xa9, 0x6d, 0xd3, 0x1c, 0xb8, 0xc9, 0x92, + 0xc5, 0xf7, 0x71, 0x7b, 0x3a, 0xf1, 0x91, 0xdb, 0x50, 0x4b, 0xbb, 0x48, + 0xa6, 0x95, 0xc6, 0xfd, 0xab, 0x8e, 0x0c, 0x0c, 0x58, 0xa0, 0x05, 0x56, + 0x21, 0x16, 0x06, 0x77, 0x55, 0x10, 0x14, 0x45, 0x21, 0x03, 0x83, 0x8c, + 0x18, 0x04, 0xc4, 0x96, 0x39, 0xe9, 0x0f, 0x94, 0x68, 0x59, 0x11, 0x5f, + 0xef, 0x9c, 0x73, 0xca, 0x56, 0x4b, 0xbe, 0x79, 0x93, 0x19, 0x74, 0xfb, + 0xcb, 0x73, 0x95, 0xe4, 0xf3, 0x3b, 0xcf, 0xfe, 0x7f, 0xff, 0xff, 0xff, + 0xf9, 0x93, 0x9d, 0x8c, 0x45, 0x54, 0xca, 0xa2, 0x04, 0xa4, 0x43, 0x4a, + 0x46, 0xaf, 0xa5, 0x63, 0xe0, 0x88, 0x32, 0x34, 0x30, 0x63, 0x8a, 0x54, + 0x00, 0x21, 0x43, 0x52, 0x1c, 0x89, 0x42, 0x00, 0x26, 0x2a, 0x74, 0x08, + 0x7c, 0xbf, 0x2e, 0xc7, 0xf2, 0xad, 0x24, 0x6b, 0x9f, 0xe4, 0x09, 0x58, + 0x9f, 0x53, 0xa5, 0x8f, 0xe3, 0x2c, 0xb0, 0x28, 0xd7, 0x4d, 0xc9, 0xf4, + 0x82, 0xf0, 0xf7, 0x58, 0x6f, 0x31, 0x4c, 0x44, 0x82, 0x3d, 0x72, 0x35, + 0x0b, 0x68, 0xfa, 0x30, 0xe3, 0x2e, 0x09, 0xb3, 0xc5, 0xb3, 0x50, 0x7e, + 0x34, 0x9b, 0xaa, 0x03, 0xf5, 0x30, 0x79, 0x2a, 0xc9, 0x4a, 0x14, 0x67, + 0xc6, 0x16, 0xb6, 0x23, 0x8d, 0x38, 0xf9, 0x92, 0x76, 0x73, 0x21, 0xf2, + 0xdb, 0x63, 0x2a, 0x12, 0x8d, 0x86, 0xaf, 0x27, 0x68, 0xb1, 0x84, 0x9a, + 0x4e, 0x96, 0xf5, 0x3b, 0x12, 0x1a, 0x8b, 0x3b, 0x10, 0x86, 0x56, 0xe5, + 0x7d, 0x8d, 0x01, 0xe8, 0x42, 0x61, 0x17, 0x94, 0x8c, 0x25, 0x53, 0xb5, + 0x14, 0x13, 0xc2, 0x01, 0xb8, 0x60, 0xc4, 0x57, 0xa7, 0x58, 0x5b, 0xdc, + 0x8e, 0xf2, 0xda, 0xfd, 0x72, 0x97, 0x4e, 0x2e, 0x8d, 0x2a, 0xb1, 0x9c, + 0xb1, 0xd7, 0x97, 0x70, 0x55, 0xea, 0x44, 0xae, 0x59, 0xd5, 0x07, 0xa5, + 0x1d, 0x2e, 0x94, 0x26, 0xd3, 0xb4, 0x59, 0x98, 0xe7, 0x63, 0x9c, 0xeb, + 0x65, 0xca, 0x7a, 0x8b, 0x96, 0xf7, 0x0e, 0x42, 0x17, 0x0a, 0xa4, 0x31, + 0x0e, 0x63, 0x23, 0x57, 0x73, 0x67, 0x88, 0x69, 0x26, 0xb2, 0x9e, 0x59, + 0xb9, 0xf1, 0x11, 0xb5, 0x56, 0xd9, 0x32, 0xfa, 0xdb, 0xe6, 0x36, 0x55, + 0x7b, 0x53, 0x5f, 0x60, 0x88, 0xb2, 0x6f, 0x36, 0xa5, 0xdf, 0xb9, 0xc2, + 0xba, 0xa1, 0x94, 0xf4, 0x2c, 0x84, 0x52, 0x39, 0x37, 0x58, 0x5e, 0x20, + 0xa3, 0x40, 0xc8, 0x33, 0xa3, 0xaa, 0xd2, 0x49, 0x21, 0x62, 0x45, 0x1d, + 0x62, 0xce, 0xc4, 0x69, 0x9a, 0x43, 0x68, 0xdf, 0x2e, 0x64, 0xac, 0x90, + 0x17, 0x60, 0x18, 0xc2, 0x34, 0x10, 0x71, 0x0f, 0x03, 0x44, 0x65, 0x9a, + 0xe8, 0x75, 0xc0, 0x42, 0x99, 0x8a, 0xa4, 0x0f, 0xe2, 0x99, 0x08, 0xa5, + 0x18, 0xae, 0x22, 0x66, 0x66, 0x46, 0x0d, 0xa8, 0x33, 0x28, 0xa3, 0xd1, + 0x2d, 0x66, 0x83, 0xd9, 0xa4, 0x48, 0xc2, 0xf9, 0x9a, 0x8d, 0x6b, 0x7f, + 0xfc, 0x74, 0x0f, 0x09, 0x31, 0x38, 0xb3, 0x8e, 0xff, 0x10, 0x4e, 0x0a, + 0x39, 0x7b, 0x38, 0xae, 0x2c, 0xbb, 0xe4, 0xcc, 0x51, 0x41, 0xc9, 0x41, + 0x8b, 0x97, 0xad, 0x4a, 0x5a, 0xfd, 0x9c, 0xe2, 0xdd, 0x5c, 0x9f, 0xb0, + 0xf0, 0xf9, 0x69, 0x62, 0x49, 0xa0, 0xba, 0x8f, 0x52, 0x51, 0xc8, 0xd4, + 0x61, 0x57, 0x9b, 0xf2, 0xef, 0x27, 0xe1, 0x75, 0x77, 0x3f, 0x1e, 0x97, + 0xaa, 0x86, 0x4b, 0x21, 0xbf, 0x6f, 0x7d, 0x67, 0xbf, 0xe1, 0x79, 0x9f, + 0xf8, 0x5d, 0xf8, 0xfb, 0xf7, 0x3a, 0xa9, 0xfc, 0x85, 0x5f, 0xf3, 0xce, + 0x92, 0xdd, 0xa4, 0xd5, 0xb6, 0x11, 0x20, 0x58, 0xf3, 0x06, 0x0e, 0xaa, + 0x38, 0x60, 0x17, 0x54, 0x90, 0x81, 0x65, 0x5a, 0x46, 0x1b, 0x06, 0xca, + 0xe8, 0x2c, 0xb1, 0x11, 0x85, 0x4c, 0x8a, 0x83, 0x62, 0x82, 0x42, 0x94, + 0xa5, 0x03, 0xf2, 0xb2, 0x81, 0x30, 0x1d, 0x2f, 0x2f, 0x20, 0xfa, 0xf5, + 0x22, 0x28, 0xe4, 0xc8, 0x7e, 0x49, 0x30, 0x41, 0x60, 0xdd, 0x7a, 0xa2, + 0xda, 0xc3, 0x83, 0x31, 0x2a, 0x31, 0x2c, 0xf0, 0xd0, 0x9e, 0x86, 0x6a, + 0x70, 0x14, 0x11, 0xec, 0x70, 0x2d, 0x38, 0x4c, 0x98, 0x7b, 0x4a, 0x76, + 0xa5, 0xfa, 0x2e, 0x14, 0x16, 0x4a, 0x26, 0x29, 0xaa, 0x89, 0xe3, 0x85, + 0xbb, 0xe7, 0x31, 0x08, 0xa5, 0xc5, 0x43, 0x53, 0xe6, 0x63, 0xa5, 0x4c, + 0xdd, 0x95, 0x43, 0x7a, 0x91, 0x77, 0x0d, 0x49, 0xd9, 0x15, 0x2a, 0x66, + 0x24, 0xa3, 0x7a, 0x82, 0x8d, 0xeb, 0x4e, 0x39, 0x51, 0xc3, 0x4a, 0x2a, + 0xa2, 0x2b, 0xa1, 0xa7, 0x97, 0x4a, 0xd8, 0x2a, 0xc8, 0xd1, 0x5a, 0xa7, + 0x77, 0x09, 0x09, 0x7c, 0xfe, 0x55, 0x23, 0x12, 0x6a, 0x1d, 0x9f, 0xb0, + 0xcc, 0xf6, 0x2c, 0x2d, 0x3e, 0xd4, 0x28, 0x71, 0xe3, 0x61, 0xf6, 0xdf, + 0xb4, 0xcd, 0x78, 0xb6, 0x8d, 0x0d, 0xc6, 0xd7, 0x57, 0xe1, 0xd6, 0xdf, + 0x46, 0xc4, 0x08, 0x6b, 0x0f, 0xf5, 0x02, 0xb9, 0xbe, 0x54, 0xf6, 0x83, + 0xb9, 0x21, 0xcc, 0xde, 0xcd, 0x1a, 0xf0, 0x7b, 0x63, 0x7b, 0xc8, 0x32, + 0xea, 0x3b, 0x7c, 0x2a, 0x45, 0xff, 0xfb, 0xd4, 0x60, 0x56, 0x08, 0x06, + 0xf8, 0x76, 0xbb, 0xb1, 0x8c, 0x7b, 0x70, 0x84, 0x4d, 0xf8, 0x2d, 0x25, + 0x85, 0x6e, 0x5b, 0xb1, 0xda, 0xef, 0x26, 0x3d, 0xed, 0xc1, 0xf4, 0xba, + 0x60, 0x74, 0x94, 0x95, 0xb9, 0x83, 0x6c, 0xd6, 0x13, 0x3b, 0x1d, 0xe9, + 0x16, 0x1c, 0x65, 0x53, 0xb4, 0xda, 0xb2, 0x16, 0xdb, 0x59, 0xa9, 0x09, + 0xc9, 0x69, 0xb8, 0xe7, 0x6c, 0x38, 0xd4, 0x69, 0xa4, 0x25, 0x64, 0xeb, + 0x90, 0xfc, 0x37, 0xd0, 0x83, 0x18, 0xe1, 0x34, 0x23, 0xa9, 0xd0, 0x68, + 0x31, 0xb8, 0x33, 0xd4, 0xe8, 0x05, 0xe8, 0xf9, 0x09, 0xc9, 0x35, 0xdf, + 0x7f, 0xbf, 0xba, 0xc1, 0xfc, 0x55, 0x8c, 0xc8, 0x59, 0x40, 0xec, 0x50, + 0x4a, 0x0d, 0x6d, 0xd5, 0x5d, 0x9b, 0x70, 0xc4, 0xcd, 0x6a, 0x1f, 0x2f, + 0x39, 0xb3, 0x45, 0xd4, 0xb1, 0x3f, 0xcf, 0x55, 0x9b, 0x29, 0x3c, 0x55, + 0x14, 0x38, 0x70, 0xe3, 0x7d, 0x4a, 0xb5, 0xab, 0x21, 0x62, 0xab, 0x9d, + 0x6b, 0x55, 0x2b, 0x75, 0x47, 0x0a, 0x88, 0xb8, 0xa9, 0xa3, 0x04, 0x81, + 0x44, 0x48, 0xea, 0xea, 0x89, 0x75, 0x35, 0x8a, 0xe5, 0x13, 0x30, 0xe1, + 0x8e, 0x2a, 0xa6, 0x16, 0x3d, 0x0e, 0x63, 0x99, 0x94, 0x63, 0x09, 0x0a, + 0x31, 0x58, 0x3c, 0x87, 0x42, 0x9c, 0xce, 0x63, 0x2b, 0x91, 0x8c, 0x21, + 0x43, 0x14, 0xd4, 0x76, 0x4b, 0x22, 0x23, 0x4e, 0xeb, 0xa1, 0x93, 0xbd, + 0x53, 0xff, 0xff, 0xbf, 0xfe, 0xba, 0x3b, 0xf4, 0xaa, 0x27, 0x18, 0x59, + 0x19, 0x51, 0xe8, 0x36, 0x3a, 0x46, 0x7e, 0x89, 0xc5, 0x69, 0x6a, 0x00, + 0x99, 0x21, 0x10, 0xd2, 0x19, 0x01, 0x28, 0xd7, 0x95, 0x88, 0xa8, 0x65, + 0xef, 0x84, 0xea, 0x3a, 0xa0, 0xb7, 0x30, 0xc3, 0xb3, 0x33, 0x74, 0x54, + 0x43, 0x23, 0xc8, 0x88, 0xea, 0x1f, 0x99, 0x59, 0x3e, 0x5b, 0x55, 0xf1, + 0xd2, 0x8c, 0x4b, 0x2f, 0xde, 0x4e, 0x87, 0x25, 0x10, 0xa5, 0xd3, 0xf7, + 0x8f, 0x15, 0x90, 0x5e, 0x0f, 0x09, 0x4b, 0xc1, 0xdc, 0x77, 0xbb, 0x70, + 0x61, 0x91, 0x4a, 0xa8, 0x4d, 0x39, 0x2f, 0x2a, 0x9c, 0xde, 0xa3, 0x53, + 0xab, 0xa4, 0x76, 0x51, 0x4a, 0x0c, 0xa2, 0xd5, 0x26, 0xfc, 0x27, 0xec, + 0x6d, 0xee, 0x4b, 0x6c, 0x0c, 0x8e, 0x4c, 0x89, 0x9d, 0xb4, 0xc9, 0x05, + 0xc2, 0x33, 0x5b, 0xc6, 0xf7, 0xaf, 0xd9, 0xa3, 0xbf, 0x7a, 0xfa, 0x6d, + 0xb6, 0xb2, 0x4c, 0xe5, 0x1a, 0x35, 0x2e, 0xf5, 0xa7, 0x6d, 0x13, 0xcc, + 0xfa, 0x2b, 0x2a, 0xbd, 0xbf, 0x33, 0xdf, 0x52, 0x3d, 0xec, 0x32, 0x43, + 0x9b, 0x31, 0x69, 0x3d, 0xe3, 0xbd, 0xa7, 0x51, 0xc0, 0xdb, 0x3c, 0x17, + 0x2d, 0xc0, 0x9d, 0xc6, 0x48, 0x2d, 0x71, 0x60, 0x37, 0x4b, 0x96, 0x4c, + 0xea, 0xf0, 0xfc, 0x3c, 0xfa, 0x56, 0x36, 0xe3, 0x32, 0xef, 0x1b, 0x8c, + 0xfe, 0x66, 0x57, 0xb9, 0xce, 0x1a, 0xa6, 0x70, 0x92, 0x25, 0x95, 0xd1, + 0x61, 0xac, 0xb3, 0x2a, 0x6d, 0x3c, 0xcb, 0x08, 0xd6, 0x54, 0x44, 0xe9, + 0x53, 0x85, 0x5c, 0xb8, 0x20, 0xe8, 0xb1, 0xc0, 0xa1, 0x61, 0x57, 0x9e, + 0x0c, 0x87, 0xba, 0xc1, 0x3d, 0x3a, 0x2a, 0x66, 0x16, 0xd1, 0xf6, 0x85, + 0xb9, 0x68, 0x19, 0x1c, 0x92, 0xed, 0xbc, 0xb3, 0x58, 0xc7, 0xf3, 0xe1, + 0x41, 0x58, 0x60, 0xeb, 0x3a, 0xbb, 0x12, 0x51, 0x25, 0xa3, 0x8e, 0xeb, + 0x58, 0xc3, 0x62, 0xee, 0x4f, 0x2a, 0x67, 0x49, 0x56, 0x6d, 0xad, 0x59, + 0x9a, 0xd2, 0xa5, 0xc9, 0x04, 0xcf, 0xc6, 0xa7, 0x75, 0x99, 0x7e, 0x29, + 0x28, 0xde, 0x66, 0x7f, 0x0b, 0x48, 0xc5, 0x2d, 0x37, 0x2b, 0x8b, 0x20, + 0xba, 0xc2, 0x63, 0x86, 0x39, 0x55, 0x18, 0x40, 0xc2, 0x46, 0x2b, 0x0a, + 0xce, 0xea, 0x2a, 0xee, 0x26, 0x74, 0x61, 0xc4, 0x23, 0xd2, 0xac, 0x86, + 0x24, 0xe4, 0x9e, 0x39, 0xd0, 0x49, 0xea, 0x49, 0x1b, 0x7a, 0x3b, 0xb5, + 0xf4, 0x69, 0xce, 0x8b, 0x55, 0xf2, 0xff, 0xff, 0xff, 0xa3, 0xf3, 0x7a, + 0xd2, 0x95, 0x2a, 0x39, 0x8b, 0x99, 0x18, 0x48, 0xe6, 0x55, 0x38, 0xf1, + 0xac, 0xaa, 0x2e, 0xc2, 0x2a, 0x36, 0x1e, 0x00, 0x00, 0x48, 0x4a, 0x34, + 0xf2, 0x87, 0xc0, 0xfa, 0x82, 0xe6, 0x20, 0x88, 0x50, 0x68, 0x0b, 0x40, + 0x25, 0x12, 0x94, 0xb5, 0x6a, 0x89, 0x10, 0xec, 0xb2, 0xeb, 0xc9, 0xe0, + 0x14, 0xf7, 0xce, 0x8b, 0x7c, 0x7f, 0x02, 0x7b, 0x9f, 0x23, 0x2b, 0xc6, + 0x1c, 0x1c, 0x1c, 0x34, 0x9c, 0x9d, 0xc6, 0x0e, 0x97, 0xcb, 0xec, 0xd2, + 0xcd, 0x9f, 0x1f, 0xbc, 0xa1, 0x45, 0x15, 0x34, 0x95, 0xd6, 0xc7, 0x11, + 0xc0, 0xae, 0x5d, 0xa9, 0x5c, 0xa6, 0x85, 0x11, 0xc7, 0x9e, 0xa4, 0x3e, + 0x38, 0xf7, 0x34, 0xe1, 0x95, 0x88, 0xf6, 0x71, 0xe4, 0x27, 0xcc, 0xef, + 0xad, 0x52, 0xf4, 0x65, 0xf7, 0xb2, 0xb0, 0x96, 0x7b, 0x19, 0x7d, 0x98, + 0x4d, 0xab, 0x74, 0xee, 0x35, 0x76, 0x9a, 0x6e, 0xae, 0x2f, 0x5a, 0x5f, + 0x89, 0x6e, 0x42, 0xf3, 0x08, 0x96, 0x6c, 0x7d, 0x4e, 0x86, 0x8c, 0xfd, + 0x22, 0x89, 0xeb, 0x26, 0xae, 0x63, 0x0b, 0x3f, 0xfe, 0xcb, 0xde, 0x7d, + 0xdb, 0x67, 0xc1, 0x2c, 0xd3, 0x5d, 0x7e, 0x96, 0xad, 0xa9, 0x49, 0xc9, + 0xf6, 0x29, 0xfd, 0x65, 0xed, 0xd3, 0x6e, 0xb1, 0x63, 0xf0, 0x24, 0x38, + 0x61, 0x42, 0xfa, 0x13, 0x4f, 0xdd, 0x5c, 0x53, 0x50, 0xb5, 0xc3, 0x04, + 0x22, 0xaa, 0x12, 0x0f, 0x01, 0x35, 0xc2, 0xfa, 0x81, 0xd2, 0xa2, 0x25, + 0x04, 0xad, 0x09, 0x8b, 0x08, 0xae, 0x1a, 0x93, 0x57, 0x23, 0x00, 0xf2, + 0xd4, 0x01, 0x30, 0x79, 0x9a, 0xff, 0xfb, 0xd4, 0x40, 0x65, 0x00, 0x06, + 0x18, 0x76, 0x3c, 0x61, 0x2c, 0x63, 0x70, 0xc0, 0x0e, 0xc7, 0x76, 0x31, + 0x2c, 0x6e, 0x15, 0x89, 0xd8, 0xf7, 0xa4, 0xa5, 0x2d, 0xc2, 0xae, 0xba, + 0x9e, 0xe8, 0x94, 0xa5, 0xb9, 0x31, 0xf5, 0x78, 0xf6, 0x62, 0x14, 0x96, + 0x0c, 0xa1, 0x7e, 0x32, 0x83, 0x6a, 0x22, 0x30, 0x3c, 0xcc, 0x46, 0xc5, + 0x68, 0x4b, 0x03, 0x06, 0x07, 0xe4, 0x09, 0xa4, 0x09, 0xa3, 0x44, 0x47, + 0xad, 0x80, 0x88, 0xa6, 0x66, 0xf1, 0x76, 0x50, 0x8c, 0x97, 0xdc, 0x48, + 0x4a, 0xdc, 0xd8, 0x24, 0x1d, 0x50, 0xd4, 0x03, 0x37, 0xc7, 0x64, 0x09, + 0x66, 0x91, 0x9b, 0xc1, 0x5b, 0xcc, 0x56, 0x5e, 0x80, 0x74, 0x55, 0x40, + 0x1d, 0x19, 0xa2, 0xec, 0x38, 0x95, 0xe4, 0xc6, 0x63, 0x4f, 0x1d, 0xed, + 0x79, 0x8d, 0xe5, 0xce, 0xb8, 0xdc, 0x53, 0x7e, 0x82, 0x15, 0xa8, 0xeb, + 0xf7, 0x75, 0x87, 0xfc, 0xe9, 0xc8, 0x38, 0xfd, 0x96, 0xf9, 0x16, 0x55, + 0xea, 0x2d, 0x8a, 0x63, 0x9a, 0x52, 0xac, 0x25, 0xa3, 0x11, 0x44, 0x8f, + 0x17, 0x4b, 0xce, 0xb8, 0xe7, 0x4d, 0x9a, 0xb3, 0xef, 0xd5, 0xf6, 0x2d, + 0x69, 0x6e, 0x06, 0xea, 0x8f, 0xbf, 0x9e, 0x8a, 0xb4, 0xef, 0xdb, 0x2e, + 0x7d, 0x9b, 0x59, 0xaa, 0x52, 0x15, 0x8c, 0x40, 0xb9, 0x31, 0x08, 0xb2, + 0x56, 0x1a, 0xac, 0x55, 0x3c, 0x3c, 0x54, 0xf2, 0xb2, 0x70, 0x72, 0x4f, + 0x13, 0xaa, 0x99, 0x18, 0x95, 0xf1, 0xae, 0x06, 0x4b, 0xe8, 0xf0, 0x1c, + 0x17, 0xab, 0x70, 0xf8, 0x01, 0x0f, 0x04, 0x73, 0x56, 0x9f, 0x00, 0x22, + 0x52, 0x51, 0xa5, 0x13, 0x88, 0x91, 0xeb, 0xeb, 0x49, 0x01, 0xe1, 0x47, + 0x21, 0x11, 0x94, 0x06, 0x9c, 0x81, 0x54, 0x3f, 0x20, 0x84, 0x3c, 0x60, + 0x50, 0x19, 0x42, 0xa1, 0x1a, 0x02, 0x74, 0x44, 0x62, 0x59, 0x90, 0x20, + 0x79, 0xa1, 0x42, 0x86, 0x0c, 0x12, 0x3c, 0x90, 0xb9, 0xb3, 0x0a, 0x80, + 0xe0, 0x53, 0x13, 0x60, 0xd3, 0x6e, 0xb4, 0xdb, 0x6c, 0xbb, 0x1d, 0x56, + 0x9a, 0x30, 0x2a, 0x69, 0xa2, 0xe4, 0xee, 0x59, 0xe9, 0xce, 0x48, 0xca, + 0x8a, 0x04, 0x69, 0xb4, 0x92, 0x6e, 0x15, 0x8c, 0x13, 0x21, 0xb3, 0xe1, + 0xa4, 0x2f, 0xcf, 0x7e, 0xed, 0xd0, 0x24, 0xb6, 0x90, 0x38, 0xa4, 0xed, + 0x56, 0xf3, 0x52, 0x4b, 0xc7, 0xdc, 0x99, 0x9e, 0xa7, 0x92, 0xf2, 0x94, + 0xa1, 0x1d, 0xf1, 0x9b, 0x6b, 0x4a, 0x28, 0xa7, 0x51, 0x97, 0xb4, 0xb2, + 0xaf, 0xde, 0xa1, 0x5e, 0xbe, 0x31, 0xfe, 0xfa, 0xad, 0xdf, 0x18, 0x42, + 0x57, 0x0d, 0x8e, 0xec, 0xf6, 0x4d, 0xc3, 0xe4, 0xb1, 0x6f, 0x9f, 0x37, + 0x29, 0x92, 0xda, 0x62, 0x56, 0x89, 0x7c, 0xdb, 0xc6, 0x24, 0xde, 0xa2, + 0xe9, 0x29, 0x50, 0x92, 0x06, 0x96, 0x59, 0x40, 0xa1, 0x11, 0x54, 0xce, + 0xa2, 0x67, 0x41, 0x0a, 0x3e, 0x4d, 0xb7, 0x11, 0x23, 0xf5, 0x4a, 0x89, + 0x91, 0x34, 0x45, 0x5c, 0x4e, 0x30, 0x09, 0x20, 0x31, 0x77, 0x68, 0x0f, + 0x10, 0xae, 0x4a, 0x80, 0xfb, 0x19, 0x65, 0x26, 0x5b, 0x18, 0x91, 0xc7, + 0x2c, 0x05, 0x0a, 0x1c, 0x10, 0x30, 0x28, 0x27, 0x39, 0xd1, 0x5c, 0xd1, + 0x84, 0x95, 0x4d, 0x90, 0x49, 0x09, 0x95, 0xde, 0x6c, 0x7d, 0xb2, 0x49, + 0xaa, 0xde, 0xa6, 0x2a, 0x91, 0xb3, 0xa9, 0x9e, 0xb3, 0x91, 0x89, 0x29, + 0x19, 0xb1, 0x41, 0x1a, 0x34, 0x68, 0x93, 0x14, 0x1f, 0x71, 0xa2, 0x14, + 0xcd, 0x9c, 0xc5, 0xd2, 0x96, 0x4a, 0x71, 0x43, 0x48, 0x21, 0x84, 0x8c, + 0x2d, 0x71, 0xf1, 0x76, 0x2c, 0xb6, 0xc3, 0x27, 0x56, 0x7d, 0xb9, 0xf8, + 0x5c, 0xfe, 0x52, 0xbb, 0xee, 0xb7, 0x76, 0x2d, 0x5c, 0x6d, 0xa4, 0xfd, + 0x46, 0xe7, 0xb7, 0x14, 0x33, 0xa5, 0x75, 0x4c, 0xaa, 0xcf, 0x57, 0xb0, + 0xba, 0xba, 0xb8, 0x37, 0x1d, 0xdd, 0xf5, 0x2b, 0xaf, 0xe1, 0x04, 0xef, + 0x6a, 0x31, 0xb2, 0x4b, 0xa2, 0x3c, 0x26, 0x39, 0x04, 0x0c, 0xa4, 0xf2, + 0x72, 0x1b, 0x8a, 0xcb, 0x48, 0x20, 0x4d, 0x22, 0x28, 0x9b, 0x1a, 0xc2, + 0x13, 0xc9, 0x13, 0xb1, 0x17, 0xcf, 0x00, 0x04, 0x69, 0x28, 0x9a, 0x20, + 0x0f, 0xe6, 0x08, 0x36, 0xa0, 0xcc, 0x56, 0x7b, 0x6a, 0x35, 0x02, 0x1d, + 0x49, 0x51, 0x4d, 0xc5, 0xb6, 0x00, 0x44, 0x78, 0x70, 0xf8, 0xa4, 0x9c, + 0x50, 0x1f, 0x12, 0x10, 0x88, 0xd0, 0x94, 0x89, 0x32, 0xe8, 0x41, 0x20, + 0x48, 0x90, 0xaa, 0x21, 0xc3, 0x5a, 0xb0, 0x05, 0x12, 0x08, 0x49, 0x3b, + 0xe0, 0x49, 0xad, 0x1c, 0x15, 0x0a, 0x50, 0x2c, 0x34, 0x12, 0x11, 0xbd, + 0x08, 0x52, 0x24, 0xa7, 0x5e, 0xf9, 0xf3, 0x25, 0x7e, 0xb5, 0xb2, 0xfc, + 0xea, 0xe3, 0xbb, 0x29, 0xd3, 0x8d, 0x3c, 0x65, 0xed, 0xac, 0x1c, 0xcb, + 0xd0, 0x25, 0x6e, 0xbc, 0xed, 0x51, 0x30, 0x85, 0x47, 0x9d, 0xb5, 0x73, + 0x1d, 0x82, 0x8e, 0xf7, 0x7c, 0xc2, 0x73, 0x3f, 0x07, 0xde, 0x1c, 0xba, + 0x16, 0xcf, 0x42, 0xc5, 0xb9, 0x13, 0xcf, 0xdb, 0x5a, 0x67, 0x3d, 0xbd, + 0xbe, 0x38, 0xfc, 0x4c, 0x52, 0xad, 0x44, 0xfd, 0xed, 0xd6, 0x89, 0xed, + 0xa2, 0xd9, 0xee, 0xcd, 0xaf, 0x33, 0x97, 0x75, 0x66, 0xd2, 0xcf, 0xaf, + 0x6e, 0xad, 0xfa, 0xed, 0x48, 0xb9, 0xb6, 0x0f, 0x95, 0x3d, 0xa6, 0x08, + 0x26, 0xc6, 0x09, 0xec, 0x72, 0x3f, 0xac, 0x53, 0xa5, 0xf1, 0x52, 0xd6, + 0xd0, 0x85, 0x9a, 0x68, 0x66, 0x9c, 0xb2, 0xa9, 0x7a, 0x70, 0x2c, 0x58, + 0x5d, 0x51, 0x00, 0x36, 0xde, 0x97, 0x5d, 0xb7, 0xde, 0xc8, 0x3f, 0x6b, + 0x24, 0x26, 0xe8, 0xb2, 0x8d, 0xff, 0xfb, 0xd4, 0x40, 0x65, 0x88, 0x05, + 0xe3, 0x75, 0xbc, 0x51, 0x29, 0x63, 0x72, 0xa7, 0x8e, 0x88, 0x0d, 0x19, + 0x8b, 0x6e, 0x59, 0x85, 0xda, 0xec, 0xc6, 0x31, 0xed, 0xc3, 0x25, 0x3b, + 0x5d, 0xe4, 0xc6, 0x3d, 0xb8, 0xe0, 0xa0, 0xe4, 0x56, 0xb7, 0x0f, 0x29, + 0xa9, 0xd1, 0x6d, 0x62, 0x22, 0xf5, 0x91, 0xf2, 0x32, 0x42, 0xf1, 0xf0, + 0xf4, 0x7b, 0x60, 0xa4, 0x5b, 0x4c, 0xb2, 0xc2, 0x30, 0xa9, 0x65, 0xfa, + 0xe4, 0xe7, 0xd1, 0x3a, 0xb6, 0xe9, 0x5d, 0x6d, 0x7a, 0xd6, 0x10, 0x50, + 0x0e, 0xb8, 0xf0, 0x76, 0x2c, 0x50, 0x6c, 0xd4, 0x07, 0x48, 0xda, 0x6e, + 0x62, 0x95, 0x3d, 0x31, 0x02, 0xb9, 0xe3, 0x33, 0xea, 0x1a, 0x17, 0x93, + 0x89, 0xc6, 0x4a, 0x0b, 0x0d, 0x87, 0xb3, 0x52, 0x76, 0x8a, 0x47, 0x25, + 0xec, 0x6b, 0xcf, 0xb0, 0xfd, 0xb9, 0x44, 0xa9, 0x0a, 0x3c, 0x8c, 0x24, + 0xb2, 0x50, 0x8e, 0xcd, 0xd2, 0x8b, 0x24, 0xe2, 0xef, 0x6a, 0x99, 0xb7, + 0x34, 0x89, 0x53, 0xe8, 0xe1, 0xe4, 0xd9, 0x7c, 0x9d, 0x5d, 0xec, 0x7c, + 0xa0, 0x6e, 0x71, 0xc8, 0xa2, 0xa5, 0x7c, 0x7d, 0x5d, 0xff, 0xfc, 0xd7, + 0xff, 0xf1, 0x7b, 0xfe, 0xbe, 0xa1, 0xd5, 0x17, 0x0f, 0x63, 0x7d, 0x95, + 0x2f, 0xa7, 0xb6, 0x7d, 0xca, 0x9c, 0xcf, 0x9d, 0xaa, 0x6c, 0xb5, 0xa8, + 0x44, 0x13, 0x3e, 0x99, 0x00, 0xed, 0x3d, 0x56, 0x48, 0x56, 0x1d, 0x0d, + 0x64, 0xc2, 0xa4, 0x9e, 0x99, 0x0e, 0x89, 0xa7, 0x8e, 0x13, 0xec, 0x4a, + 0xb9, 0x72, 0x72, 0xcd, 0x1b, 0xa1, 0x3c, 0xf0, 0x1a, 0x1c, 0x43, 0x52, + 0x6a, 0x14, 0x69, 0x06, 0xa5, 0x30, 0x38, 0xba, 0x13, 0xc2, 0xb9, 0x79, + 0xa4, 0xea, 0x4b, 0x0a, 0x8a, 0xc9, 0xab, 0x03, 0x48, 0x56, 0x4f, 0x0a, + 0x23, 0xa7, 0xea, 0x47, 0x71, 0xac, 0xe0, 0xa9, 0x61, 0x6a, 0x81, 0xe3, + 0xc1, 0xb5, 0xa3, 0x3f, 0x8e, 0xe7, 0x2b, 0x03, 0x35, 0xed, 0x3c, 0xf9, + 0x6a, 0x71, 0xa6, 0xb3, 0x09, 0xc2, 0x7f, 0x16, 0x1c, 0x3d, 0xdd, 0xbe, + 0xf0, 0xb3, 0x98, 0xda, 0x89, 0x12, 0x78, 0x90, 0x2f, 0x9a, 0x61, 0xb2, + 0xda, 0x66, 0x60, 0xb5, 0xa3, 0xd5, 0xae, 0x0b, 0xbd, 0x3f, 0x81, 0x25, + 0xb5, 0x6d, 0x40, 0x6d, 0xb3, 0x6d, 0x63, 0x4b, 0x22, 0xb6, 0x98, 0x85, + 0x8c, 0x5e, 0xd8, 0x87, 0x1e, 0x24, 0x38, 0xf1, 0x5a, 0xf3, 0x12, 0x24, + 0x7e, 0xf7, 0x5a, 0x9e, 0xb8, 0xf1, 0xd5, 0x74, 0xdc, 0x3f, 0x8a, 0xed, + 0xb5, 0xae, 0x8d, 0x96, 0x8e, 0xde, 0xea, 0xcf, 0xd6, 0xad, 0x3b, 0x93, + 0x0b, 0xcc, 0xcb, 0x3c, 0xce, 0x0d, 0x8c, 0x71, 0x91, 0x31, 0x8f, 0x26, + 0x55, 0x23, 0x01, 0xfe, 0x73, 0xae, 0x99, 0x14, 0xc8, 0x72, 0x71, 0x85, + 0x0b, 0xc0, 0xe4, 0x56, 0x1c, 0x2c, 0x24, 0xf9, 0x70, 0x3e, 0x13, 0xac, + 0xce, 0x1a, 0x00, 0x40, 0xa6, 0x6a, 0x90, 0x26, 0x57, 0x9f, 0x25, 0x3c, + 0x65, 0x28, 0x7a, 0x22, 0x1b, 0xac, 0x5a, 0xfa, 0xe6, 0x1b, 0xd0, 0x62, + 0x86, 0xbc, 0xe8, 0x39, 0x2d, 0x52, 0x3b, 0xfb, 0x86, 0xca, 0x07, 0xad, + 0xbb, 0x87, 0xb8, 0xb0, 0xc8, 0x9d, 0x14, 0xd5, 0x4b, 0x6e, 0x13, 0xda, + 0x3a, 0xad, 0xd1, 0x17, 0xc5, 0x4b, 0xaa, 0xdd, 0x4a, 0x48, 0x25, 0x36, + 0xcb, 0x09, 0x19, 0xe2, 0x49, 0xab, 0x3c, 0x61, 0x71, 0x64, 0xac, 0xf0, + 0xeb, 0x0e, 0x3b, 0xe9, 0xdc, 0x9a, 0x6c, 0xc1, 0x1e, 0x04, 0xf6, 0xa3, + 0xd5, 0x72, 0x75, 0xb2, 0x6d, 0xc2, 0x75, 0x86, 0x67, 0xb0, 0xf7, 0x59, + 0xe1, 0xb1, 0x5a, 0xb3, 0x3b, 0xb4, 0x56, 0xa8, 0xd5, 0xb4, 0x68, 0x1f, + 0xe3, 0xe1, 0xf3, 0xc9, 0xad, 0x79, 0xab, 0x88, 0xf4, 0xd4, 0x68, 0x11, + 0xad, 0x48, 0x50, 0x21, 0xfa, 0xf9, 0x21, 0xc2, 0x7b, 0xe1, 0x42, 0xac, + 0x2a, 0xe5, 0xf3, 0xf8, 0xf1, 0x21, 0xbf, 0xac, 0xb5, 0xd4, 0xd0, 0xe1, + 0x53, 0x59, 0xb6, 0x71, 0x79, 0x63, 0xc0, 0xde, 0x31, 0x02, 0xf6, 0xf5, + 0xd4, 0x58, 0x9e, 0x04, 0xf1, 0x22, 0x65, 0xcd, 0x75, 0x33, 0x1a, 0xe1, + 0xaa, 0x03, 0x61, 0xdc, 0xad, 0x67, 0x87, 0xb2, 0xfa, 0xc0, 0x8b, 0x85, + 0x24, 0x1d, 0x2b, 0xd5, 0x0a, 0xe6, 0x85, 0x54, 0x03, 0xa5, 0xb6, 0x2b, + 0x75, 0xcf, 0x12, 0xc2, 0x5e, 0x89, 0x31, 0xe8, 0xb9, 0x9d, 0xd5, 0x55, + 0x00, 0x00, 0x19, 0xaa, 0x80, 0x3b, 0x61, 0x1f, 0x07, 0x54, 0xc3, 0x41, + 0x08, 0xad, 0xa3, 0xc1, 0x55, 0xfb, 0xdf, 0x12, 0xb3, 0x78, 0x55, 0x32, + 0x5d, 0x3c, 0x31, 0x4e, 0x17, 0x16, 0x89, 0x09, 0xc7, 0xb4, 0x37, 0x53, + 0x99, 0x96, 0x20, 0x2d, 0x1e, 0x8b, 0x44, 0x0c, 0x0f, 0xd0, 0x04, 0xbd, + 0x2a, 0x0e, 0x6b, 0x82, 0x52, 0xfc, 0x0d, 0x08, 0x06, 0xa6, 0x2f, 0x96, + 0x44, 0x13, 0x54, 0x66, 0x07, 0x43, 0xd9, 0x40, 0xf8, 0x25, 0x5c, 0x27, + 0x9c, 0x58, 0xbe, 0xb8, 0xaa, 0x9a, 0x0a, 0x1e, 0x47, 0x25, 0xb2, 0x7c, + 0x2b, 0xca, 0xa4, 0xd3, 0x23, 0x8a, 0x38, 0x9c, 0x68, 0x2b, 0x12, 0x4b, + 0xb9, 0x64, 0x35, 0x2b, 0x76, 0x2d, 0xda, 0x51, 0x85, 0xd5, 0xa5, 0x55, + 0xa5, 0x72, 0x90, 0x6a, 0xe6, 0x95, 0xb7, 0x0c, 0x51, 0x21, 0x3e, 0xba, + 0x15, 0x6d, 0xa3, 0x58, 0xcd, 0xd3, 0x5f, 0x1a, 0xac, 0x77, 0xe5, 0x97, + 0x7d, 0x9a, 0x45, 0x1e, 0x65, 0x1b, 0xa3, 0x51, 0x4b, 0xa7, 0x0e, 0xaa, + 0x48, 0x8f, 0x67, 0xfa, 0x27, 0x9a, 0x77, 0xf6, 0x97, 0x6a, 0x26, 0x97, + 0x3e, 0xdc, 0x6e, 0xd9, 0xea, 0x7e, 0x40, 0xfc, 0x4c, 0xb5, 0x64, 0xc7, + 0xeb, 0x13, 0xe1, 0xf9, 0xbe, 0xff, 0xfb, 0xd4, 0x60, 0x56, 0x88, 0x06, + 0x8c, 0x76, 0xbb, 0x49, 0x8c, 0x63, 0x70, 0x73, 0x85, 0xf8, 0x0d, 0x0d, + 0x26, 0x4d, 0x1d, 0x79, 0xda, 0xe8, 0xc7, 0xbd, 0xed, 0xc2, 0x73, 0xbb, + 0x1e, 0x74, 0x94, 0xa1, 0xb8, 0x92, 0x92, 0x9c, 0xc2, 0x5c, 0xb9, 0x5c, + 0x9c, 0x88, 0x39, 0x10, 0x8e, 0x00, 0x71, 0x38, 0x96, 0x21, 0x12, 0x50, + 0xc7, 0x8b, 0x8e, 0xe0, 0xa8, 0xea, 0x45, 0x09, 0x05, 0x0c, 0x85, 0x0d, + 0x07, 0x03, 0xca, 0x67, 0x5e, 0xe0, 0x54, 0x6e, 0xdb, 0xec, 0xd7, 0x48, + 0x48, 0x1f, 0x1e, 0x89, 0x01, 0x72, 0xe3, 0xa1, 0xa0, 0xb1, 0x86, 0x90, + 0xc5, 0x54, 0x4d, 0x22, 0x17, 0x1e, 0x08, 0x18, 0x25, 0x52, 0x31, 0x7d, + 0x29, 0x35, 0x64, 0xe6, 0x02, 0x00, 0x63, 0x49, 0x23, 0x4c, 0x47, 0x40, + 0x94, 0x7a, 0x74, 0x69, 0xa4, 0x55, 0xa6, 0x13, 0x02, 0x59, 0xa9, 0xa9, + 0x88, 0xd9, 0x76, 0xe8, 0x26, 0xa3, 0x4a, 0x59, 0x49, 0x98, 0xd8, 0xc5, + 0xe1, 0xeb, 0xba, 0x5e, 0x2d, 0xe8, 0xd5, 0x8a, 0x8d, 0x7d, 0xe2, 0x60, + 0x98, 0x3b, 0x22, 0x46, 0xa0, 0xa2, 0x0b, 0x01, 0x47, 0x0a, 0xd8, 0x70, + 0x69, 0x8a, 0xb2, 0x85, 0x18, 0x13, 0x59, 0xff, 0xff, 0xd1, 0xd6, 0x55, + 0x69, 0x00, 0x05, 0x82, 0x03, 0x16, 0x17, 0x14, 0x93, 0x03, 0x9f, 0x1c, + 0x10, 0x1c, 0xf4, 0x80, 0x6a, 0x56, 0x07, 0xa6, 0xa2, 0x78, 0xa6, 0x6d, + 0x5c, 0xb7, 0xa8, 0xd1, 0x2d, 0x68, 0xc6, 0x16, 0xd6, 0x66, 0x38, 0xce, + 0x6f, 0xf2, 0x6e, 0x2b, 0xa1, 0xc8, 0xc9, 0xd7, 0x95, 0x64, 0xf8, 0x8c, + 0x6e, 0x65, 0x62, 0xf2, 0x10, 0xa1, 0x48, 0x9c, 0x88, 0xc5, 0xcb, 0x13, + 0x6a, 0x90, 0xca, 0x4b, 0x30, 0xed, 0x5a, 0x5b, 0x4e, 0x62, 0x81, 0x0c, + 0x88, 0xa5, 0x4f, 0x9c, 0x71, 0x0e, 0x07, 0xf5, 0x73, 0x56, 0x1c, 0xea, + 0x67, 0xc7, 0x61, 0x93, 0x1d, 0xb4, 0xb9, 0x40, 0x3c, 0x94, 0xe8, 0xe6, + 0xf7, 0x26, 0x44, 0x2a, 0x1a, 0x8b, 0x10, 0xa0, 0x3b, 0x68, 0x54, 0x9c, + 0x89, 0xf5, 0x6a, 0xda, 0x8a, 0xad, 0x15, 0xbc, 0xf1, 0x74, 0xe4, 0xe9, + 0xaf, 0x10, 0x15, 0xf5, 0x75, 0x0e, 0x2e, 0xe0, 0xbd, 0x9d, 0xfc, 0x0d, + 0xc4, 0x43, 0xed, 0x11, 0xf2, 0xd4, 0xd9, 0x5a, 0x8b, 0x0a, 0x67, 0xed, + 0xcd, 0xd2, 0xc5, 0xd3, 0x7b, 0x0b, 0xf7, 0x09, 0x20, 0xb3, 0xac, 0xaa, + 0xe4, 0x82, 0xe4, 0xd8, 0xb9, 0x73, 0x63, 0x62, 0x7e, 0xaf, 0x71, 0x57, + 0x2b, 0xe9, 0x35, 0x1b, 0x75, 0x3b, 0x76, 0x95, 0xd1, 0x5b, 0x1b, 0x97, + 0x30, 0x6a, 0x9d, 0xcc, 0xad, 0xd1, 0x17, 0xdb, 0x6c, 0xe1, 0x35, 0x1b, + 0x9f, 0x42, 0x4d, 0xb2, 0xb6, 0xb1, 0xcc, 0xf5, 0x15, 0x05, 0x9a, 0x95, + 0xdb, 0xf8, 0xea, 0x59, 0x21, 0xec, 0xe0, 0x57, 0x34, 0x27, 0xa3, 0x2b, + 0x61, 0x9d, 0xad, 0x8a, 0x23, 0xb9, 0x24, 0xd2, 0x37, 0x4e, 0x52, 0xf0, + 0x87, 0x96, 0x22, 0x66, 0x46, 0x0f, 0x18, 0x6b, 0x87, 0x44, 0xfc, 0x65, + 0xa1, 0xc0, 0x26, 0x83, 0x11, 0x5a, 0xf9, 0x59, 0x18, 0x00, 0x49, 0x48, + 0xab, 0x1d, 0x4d, 0x10, 0x07, 0xaa, 0xc2, 0xb4, 0x22, 0x27, 0x32, 0x68, + 0x93, 0x44, 0xe9, 0x91, 0x9f, 0x51, 0x0f, 0x83, 0x6e, 0x86, 0x48, 0x03, + 0x83, 0x69, 0x87, 0x41, 0xe1, 0x99, 0x19, 0x3b, 0x12, 0x12, 0x2d, 0x9d, + 0x41, 0x19, 0x02, 0x00, 0x5b, 0x42, 0x85, 0x49, 0x71, 0xea, 0xac, 0x75, + 0xc8, 0x5d, 0xdf, 0x71, 0x94, 0x30, 0xd1, 0x0d, 0x85, 0xe2, 0x0d, 0x24, + 0xa8, 0x82, 0xd0, 0x56, 0x84, 0xf1, 0x63, 0x37, 0x5d, 0x50, 0x69, 0x6e, + 0xa2, 0xe9, 0x50, 0xf7, 0x29, 0xbe, 0x5b, 0xca, 0x26, 0xd9, 0x0f, 0x33, + 0x3f, 0x1f, 0x73, 0xf5, 0xdd, 0xf1, 0x7e, 0xf0, 0x9b, 0xfd, 0xeb, 0xc7, + 0xcf, 0xc4, 0xf1, 0xe8, 0x8b, 0x4b, 0x1c, 0xc5, 0xbd, 0x47, 0xc5, 0xec, + 0x9c, 0x45, 0x55, 0xcf, 0x0c, 0x7f, 0x73, 0xad, 0xdc, 0x1c, 0x53, 0x84, + 0xa7, 0x88, 0x82, 0x10, 0xd1, 0xec, 0xa3, 0x04, 0x00, 0x74, 0x1c, 0xa0, + 0x5e, 0x2a, 0x50, 0x8e, 0x62, 0xb1, 0x21, 0xe0, 0xf0, 0xf9, 0x47, 0x8f, + 0x0c, 0x03, 0x51, 0x71, 0x28, 0x70, 0x1d, 0x89, 0x07, 0x5a, 0x00, 0x94, + 0x8a, 0x32, 0x6d, 0x2c, 0x89, 0x11, 0xda, 0xc9, 0x01, 0xa2, 0x20, 0xf1, + 0x00, 0x60, 0xe7, 0x56, 0x4a, 0xea, 0x35, 0xf1, 0xea, 0xb3, 0xd6, 0x8c, + 0x09, 0x9a, 0x51, 0x54, 0x59, 0x12, 0x4a, 0x8a, 0x8e, 0xc1, 0xf0, 0xc5, + 0x62, 0xe5, 0x82, 0x11, 0x34, 0x56, 0xbb, 0xd9, 0x4c, 0xb0, 0xd7, 0xcb, + 0x87, 0xee, 0x98, 0xba, 0x74, 0x20, 0x1e, 0x07, 0xea, 0x8c, 0x0e, 0x8f, + 0x1f, 0x6a, 0x09, 0x91, 0x1f, 0x1f, 0x2e, 0x91, 0x5b, 0xc6, 0x10, 0xb4, + 0xa9, 0x06, 0xea, 0xc4, 0x47, 0x65, 0x16, 0xcb, 0xb4, 0x48, 0xd1, 0x02, + 0x84, 0x99, 0x3b, 0xc8, 0x7f, 0x56, 0xac, 0xed, 0x85, 0x25, 0x06, 0x30, + 0xac, 0xa2, 0xd2, 0x8c, 0xcb, 0xdc, 0xe1, 0x6f, 0xf3, 0x7c, 0x72, 0x28, + 0xd3, 0x8a, 0x0a, 0x52, 0x1f, 0xd6, 0xde, 0x7a, 0xda, 0x8d, 0x52, 0x74, + 0xa4, 0x23, 0xb2, 0xdd, 0xf1, 0xa9, 0xba, 0xfd, 0xe6, 0x56, 0x4e, 0x75, + 0xbe, 0x1b, 0xf3, 0xed, 0x47, 0xd6, 0xfa, 0xdc, 0xd4, 0x9f, 0xd2, 0xf1, + 0xad, 0x8e, 0xff, 0x3a, 0x48, 0xa2, 0xc8, 0x90, 0xbd, 0x2e, 0x61, 0x6c, + 0xd5, 0x31, 0x26, 0x0c, 0xee, 0x8f, 0x95, 0x68, 0x84, 0xc2, 0x63, 0xb2, + 0x24, 0x00, 0x8c, 0xf9, 0x89, 0xb4, 0x80, 0x1e, 0xda, 0x37, 0x72, 0x1d, + 0x38, 0x98, 0x95, 0xa9, 0xcc, 0xff, 0xfb, 0xd4, 0x40, 0x5d, 0x80, 0x05, + 0x57, 0x75, 0x3d, 0xe8, 0xcc, 0x4b, 0x72, 0xb1, 0xae, 0xb7, 0x8a, 0x25, + 0x89, 0x6e, 0x17, 0xed, 0xd6, 0xeb, 0x24, 0xb1, 0x8d, 0xca, 0xdb, 0xbb, + 0x1d, 0xa4, 0x94, 0xb1, 0xb8, 0x46, 0xe8, 0x04, 0xe3, 0x2c, 0x8f, 0x4b, + 0x6b, 0xcb, 0x0b, 0x52, 0x03, 0x41, 0x1c, 0xe2, 0x15, 0x32, 0x7d, 0x29, + 0x56, 0x07, 0x83, 0xc1, 0x82, 0x45, 0xe6, 0x31, 0x9d, 0x55, 0xa9, 0x8b, + 0x14, 0xaf, 0x44, 0xeb, 0xaa, 0xcc, 0x0e, 0xcf, 0xd7, 0x9e, 0x56, 0xcb, + 0x4f, 0x96, 0x26, 0x18, 0x90, 0xb9, 0x19, 0x10, 0x65, 0x0b, 0xbc, 0xe6, + 0x29, 0x49, 0xa6, 0xa9, 0x12, 0xad, 0x52, 0x65, 0x50, 0xb0, 0xb4, 0x25, + 0x06, 0x28, 0xda, 0x04, 0x08, 0xda, 0x44, 0x84, 0x8d, 0x1a, 0xac, 0x10, + 0x2a, 0x59, 0x86, 0x15, 0x6e, 0x1a, 0xa2, 0xb9, 0xfc, 0xea, 0xf3, 0xf7, + 0xdc, 0xfc, 0xf2, 0x34, 0x89, 0x24, 0xb7, 0xad, 0xe7, 0x5d, 0x2d, 0xb8, + 0x7f, 0x38, 0x43, 0xc5, 0x79, 0x6d, 0xea, 0xb0, 0x9b, 0x19, 0x9b, 0x99, + 0x0a, 0xd9, 0xca, 0xb6, 0xb2, 0x17, 0x2d, 0xbc, 0x94, 0xbe, 0xd4, 0x5c, + 0xb2, 0x89, 0x96, 0x9b, 0x48, 0x62, 0x86, 0x10, 0x60, 0xf2, 0xed, 0xc8, + 0x1c, 0x1a, 0x38, 0xf3, 0x07, 0x85, 0x33, 0x57, 0x66, 0x21, 0x36, 0x80, + 0x94, 0x90, 0xe8, 0xb8, 0x5f, 0xb8, 0xe0, 0x23, 0x3a, 0x38, 0xe0, 0x00, + 0x10, 0xaa, 0x64, 0x03, 0x29, 0x18, 0x4c, 0x44, 0x06, 0x11, 0x21, 0x25, + 0x46, 0x28, 0x93, 0x58, 0x84, 0x72, 0x42, 0x8a, 0x79, 0x7c, 0xda, 0x1a, + 0xae, 0x24, 0x9c, 0x95, 0x52, 0xaa, 0x09, 0x4f, 0x0e, 0xd6, 0x90, 0x63, + 0x4a, 0x76, 0x6a, 0xa1, 0x93, 0x35, 0x48, 0xd2, 0x36, 0x4a, 0xf2, 0xfc, + 0x08, 0x64, 0xc2, 0xba, 0x04, 0x6b, 0x1c, 0x5c, 0xbd, 0x72, 0xd7, 0xd2, + 0xc4, 0xb0, 0xcd, 0x2a, 0xdc, 0x65, 0xd4, 0xc4, 0xc8, 0xd6, 0x4b, 0x0b, + 0x15, 0xcc, 0x27, 0x8f, 0x6a, 0x83, 0xf7, 0xaf, 0x8e, 0x9f, 0x3b, 0xb3, + 0xb5, 0xbb, 0x73, 0x58, 0x51, 0x31, 0x3a, 0xdb, 0x6f, 0x2e, 0xd8, 0x32, + 0x6a, 0xd5, 0x75, 0x75, 0x69, 0x03, 0xd1, 0x7b, 0x3f, 0x7b, 0x64, 0x30, + 0xcb, 0x67, 0x37, 0xb6, 0x43, 0xee, 0xd9, 0x8d, 0x7d, 0xe5, 0xae, 0x5d, + 0xaf, 0x82, 0x18, 0xdd, 0x62, 0x37, 0xae, 0xbf, 0x3a, 0x91, 0x45, 0x8b, + 0x36, 0x5f, 0xb4, 0xcc, 0xdf, 0xe2, 0x7e, 0x7b, 0x66, 0xd8, 0xbe, 0x8b, + 0xe9, 0x30, 0xdb, 0xab, 0x06, 0xad, 0xb3, 0xf1, 0xb5, 0x52, 0x39, 0x78, + 0x7c, 0x1c, 0x8f, 0xdc, 0x2b, 0x89, 0x64, 0xe4, 0x18, 0xde, 0x38, 0x28, + 0x97, 0x07, 0x93, 0x95, 0xc4, 0x01, 0xbb, 0xac, 0x89, 0x45, 0x43, 0x22, + 0x18, 0xe0, 0x4c, 0x52, 0x07, 0xc8, 0x66, 0xa7, 0xed, 0xca, 0x00, 0x00, + 0x4d, 0x54, 0x80, 0x7b, 0x25, 0x40, 0x4a, 0x68, 0x84, 0xb0, 0x60, 0x24, + 0xe3, 0xae, 0x40, 0xfd, 0x2c, 0xba, 0x89, 0x76, 0xb9, 0x90, 0x0a, 0x44, + 0x43, 0x61, 0xf1, 0x5b, 0x63, 0x2e, 0x0d, 0x95, 0x05, 0x45, 0x58, 0xab, + 0x23, 0x33, 0x1b, 0x6c, 0x81, 0x01, 0x60, 0x29, 0x45, 0x49, 0x11, 0xc5, + 0x78, 0xaa, 0x60, 0xfc, 0x97, 0x0b, 0x18, 0x1e, 0x51, 0x72, 0x22, 0x52, + 0x1a, 0x14, 0x25, 0x86, 0xf1, 0xa3, 0x27, 0xe1, 0x3c, 0x42, 0xdb, 0xcb, + 0xb5, 0xc7, 0x63, 0x8f, 0x6f, 0xc7, 0xd4, 0xe4, 0x9d, 0xb2, 0xcc, 0x15, + 0x6f, 0xba, 0x26, 0x71, 0xb7, 0xe7, 0xf2, 0xf6, 0xe6, 0xac, 0xf2, 0xec, + 0xa3, 0x53, 0x4a, 0xb2, 0xff, 0xff, 0xc3, 0xbf, 0x53, 0xdb, 0xda, 0x53, + 0xf3, 0x3d, 0x32, 0xfd, 0xdd, 0xc6, 0xed, 0x77, 0x9b, 0x6d, 0x14, 0x53, + 0x9b, 0x94, 0x75, 0x8e, 0x8a, 0x94, 0xda, 0xee, 0x76, 0xbd, 0xf7, 0x7f, + 0xfa, 0x1a, 0x3a, 0xd4, 0xee, 0xef, 0xd7, 0x76, 0xd9, 0x68, 0xdb, 0xfb, + 0x5d, 0xc7, 0x49, 0x66, 0xcb, 0x17, 0x96, 0x09, 0x85, 0x62, 0x30, 0x96, + 0x12, 0x15, 0x1d, 0xa0, 0xa4, 0xa2, 0xb4, 0x3c, 0x7d, 0x1d, 0xcc, 0x86, + 0xa8, 0xd7, 0x03, 0xc5, 0xe5, 0xc2, 0xd5, 0xe1, 0x2a, 0x86, 0xcb, 0xaa, + 0xbe, 0x00, 0x02, 0x0a, 0x0e, 0x46, 0xe4, 0x44, 0x01, 0xfa, 0xf0, 0x3d, + 0x19, 0x94, 0x38, 0x0d, 0xa2, 0x9a, 0x25, 0x11, 0x2e, 0x0d, 0x27, 0x95, + 0xa4, 0x29, 0xb8, 0x48, 0x74, 0xb4, 0x42, 0x82, 0x25, 0xf0, 0x56, 0x36, + 0xa9, 0x32, 0xe8, 0x80, 0x83, 0x87, 0xa9, 0xf0, 0x21, 0x68, 0x28, 0x9a, + 0xc4, 0x51, 0xa7, 0xcd, 0x71, 0x01, 0x53, 0xa8, 0x01, 0x77, 0x68, 0x99, + 0x38, 0x48, 0x99, 0x94, 0x63, 0xe5, 0x11, 0xc5, 0x09, 0x82, 0x01, 0x01, + 0xc3, 0xcb, 0x6b, 0x25, 0x2e, 0x6c, 0x2e, 0xf6, 0xf5, 0xee, 0x6e, 0x17, + 0xd6, 0xc4, 0xbe, 0x53, 0x51, 0x95, 0x33, 0x8a, 0xfe, 0xdc, 0xb1, 0x8f, + 0x3f, 0xf2, 0x35, 0x77, 0x1b, 0xf9, 0x52, 0xc9, 0x5e, 0xd4, 0x25, 0xf6, + 0xf6, 0x15, 0x57, 0xbf, 0xfb, 0x84, 0x3b, 0xfc, 0xfd, 0xe6, 0x5d, 0x78, + 0xdc, 0x2a, 0x50, 0xd8, 0xde, 0x47, 0x76, 0x55, 0x28, 0xd2, 0x0a, 0x95, + 0x6b, 0xdf, 0x3b, 0x4b, 0x32, 0x12, 0xda, 0xf7, 0x91, 0x5d, 0x45, 0x56, + 0x58, 0x98, 0xbb, 0x90, 0x4a, 0x29, 0x51, 0xb6, 0x44, 0xd0, 0x34, 0x26, + 0x46, 0x74, 0x52, 0x6c, 0x17, 0x25, 0x0a, 0x87, 0xc4, 0x80, 0xe1, 0x71, + 0x09, 0xa4, 0xf4, 0x58, 0x00, 0x03, 0x55, 0xf4, 0x01, 0xf9, 0x07, 0x1f, + 0x42, 0x2b, 0x1b, 0x56, 0x02, 0x05, 0xe1, 0x29, 0x4a, 0xa6, 0xda, 0x56, + 0xd9, 0xe8, 0xbe, 0x12, 0xb3, 0xff, 0xfb, 0xd4, 0x40, 0x62, 0x00, 0x85, + 0x55, 0x75, 0xbc, 0x69, 0x29, 0x4b, 0x72, 0xa8, 0xae, 0xc7, 0x79, 0x25, + 0x89, 0x6e, 0x19, 0x75, 0xda, 0xe8, 0xc6, 0x31, 0xed, 0xc2, 0xfc, 0x3b, + 0x1d, 0x18, 0xf6, 0x31, 0xb8, 0x10, 0xb6, 0xc4, 0x2a, 0x95, 0xaf, 0x7c, + 0x82, 0x92, 0xe7, 0x46, 0x0b, 0xba, 0xe7, 0xe8, 0x46, 0x27, 0xc2, 0x02, + 0x28, 0x9a, 0x70, 0xc2, 0xc8, 0x5e, 0x99, 0xfa, 0xe9, 0x05, 0x95, 0x47, + 0xd7, 0x4e, 0x25, 0x9b, 0x8a, 0xa5, 0x27, 0x1d, 0xdf, 0x54, 0xe8, 0x26, + 0xc9, 0xc2, 0x76, 0xa0, 0xa9, 0x33, 0x4e, 0x47, 0x02, 0x68, 0x4a, 0x7d, + 0x34, 0x9b, 0x95, 0x52, 0xb2, 0xac, 0xf7, 0x5f, 0x6a, 0xef, 0xda, 0xd1, + 0xc8, 0xd5, 0x6c, 0x6b, 0x65, 0xb2, 0x9f, 0x9a, 0x89, 0x42, 0xa3, 0x7b, + 0x39, 0x6e, 0xc5, 0xb6, 0xab, 0xec, 0x75, 0xb7, 0xe4, 0xe3, 0xe3, 0xea, + 0xae, 0xeb, 0xc3, 0xca, 0x4e, 0x57, 0x7c, 0xe5, 0x92, 0xd8, 0xf8, 0x63, + 0xfe, 0xca, 0xaf, 0xb5, 0x9f, 0x36, 0xe0, 0xdc, 0xb5, 0x9d, 0xc8, 0xa8, + 0x26, 0xc8, 0xa3, 0x14, 0x21, 0x0a, 0x93, 0x38, 0x52, 0x76, 0xc1, 0x50, + 0xa3, 0x24, 0x40, 0x29, 0x01, 0x10, 0xf1, 0x09, 0x08, 0x6d, 0x49, 0x82, + 0x63, 0xc7, 0xcb, 0xbe, 0xc0, 0x18, 0xd4, 0x80, 0x74, 0xa2, 0x3a, 0xb3, + 0x27, 0x89, 0x04, 0xd2, 0x65, 0x35, 0x76, 0x55, 0xe4, 0xad, 0x57, 0x9e, + 0x8d, 0xc8, 0x8b, 0x50, 0xb4, 0xc9, 0x5d, 0x51, 0xd4, 0x17, 0x39, 0x80, + 0xe9, 0xb2, 0x30, 0x5a, 0x7f, 0x03, 0x6b, 0x34, 0xfc, 0xa3, 0x63, 0x15, + 0xeb, 0xa8, 0x4d, 0x3d, 0x79, 0xd2, 0xfa, 0xc4, 0xe7, 0x4c, 0x2d, 0x2f, + 0x32, 0x76, 0x9a, 0x66, 0x87, 0x11, 0xeb, 0xfb, 0x4c, 0x7e, 0xe5, 0x4b, + 0x67, 0xcc, 0x4c, 0xef, 0x1f, 0x42, 0x81, 0x1a, 0xce, 0x4b, 0xa8, 0xec, + 0xac, 0x51, 0xa1, 0x40, 0xcc, 0x1a, 0xbd, 0x9a, 0x34, 0x2d, 0x4f, 0x03, + 0x54, 0x7d, 0x0b, 0x2f, 0x66, 0x77, 0x1b, 0x7f, 0x35, 0xbc, 0xd2, 0xda, + 0x0c, 0xf7, 0x56, 0xea, 0xd1, 0xb7, 0x5d, 0xd2, 0x1c, 0x07, 0x77, 0x80, + 0xe7, 0x68, 0x33, 0xd6, 0x25, 0xe2, 0x44, 0x88, 0xe7, 0xa8, 0x6d, 0xb1, + 0xe0, 0xf9, 0xa7, 0xcd, 0x75, 0x9d, 0x62, 0x04, 0x2d, 0x6d, 0xdb, 0xef, + 0x86, 0xd7, 0x9e, 0xb9, 0xc3, 0x94, 0xef, 0xab, 0x58, 0x51, 0x2c, 0xdb, + 0x1e, 0x98, 0xa4, 0x3c, 0xc1, 0x9d, 0xe5, 0x6e, 0xfd, 0xe3, 0x53, 0x1e, + 0x9b, 0x98, 0xd8, 0x76, 0xac, 0xd2, 0x30, 0xe6, 0x64, 0x57, 0x32, 0x9a, + 0x38, 0x57, 0xa1, 0xc9, 0x24, 0xf9, 0x3e, 0x7f, 0x1c, 0xed, 0x2f, 0xa4, + 0xf0, 0x99, 0xa0, 0x21, 0xab, 0x92, 0x48, 0xc2, 0xb9, 0x58, 0x4f, 0x11, + 0x69, 0x37, 0x71, 0xf4, 0x16, 0xe8, 0x00, 0xf9, 0x7e, 0xde, 0x64, 0x12, + 0x76, 0xcc, 0xae, 0xa2, 0xc8, 0xab, 0x80, 0xb9, 0x86, 0xb9, 0x73, 0xf6, + 0xca, 0xe3, 0xb2, 0xae, 0x44, 0xeb, 0x6a, 0xf4, 0x28, 0xda, 0x77, 0x87, + 0xa4, 0x34, 0x22, 0x0a, 0x75, 0xc8, 0x69, 0x13, 0x1b, 0x8b, 0xc4, 0xa6, + 0x8b, 0xf4, 0x3e, 0xaa, 0xfb, 0xe9, 0xb9, 0xc2, 0xd8, 0x12, 0x2f, 0x3c, + 0x57, 0x72, 0x61, 0x91, 0x51, 0xa2, 0xba, 0xa3, 0xb6, 0x0a, 0x0a, 0xac, + 0xba, 0x34, 0x74, 0xca, 0x2e, 0xf8, 0xdd, 0x8e, 0xaf, 0xf4, 0xab, 0xc6, + 0x3e, 0xaa, 0x19, 0xea, 0x3d, 0x99, 0xcd, 0x54, 0xbc, 0x9b, 0x9c, 0xa3, + 0xcb, 0xa3, 0x5f, 0xf7, 0x7d, 0xde, 0x81, 0xbd, 0xf7, 0x6d, 0x68, 0xb5, + 0x9b, 0x52, 0xbe, 0xa9, 0x7a, 0x65, 0xd4, 0xac, 0x7d, 0xde, 0xc7, 0x29, + 0x7f, 0x8e, 0xd3, 0xde, 0xf5, 0x8b, 0xd6, 0xad, 0xbd, 0x2b, 0xb4, 0xda, + 0x35, 0x6f, 0x43, 0xba, 0x59, 0xd8, 0x72, 0xbe, 0xdd, 0x91, 0x37, 0x57, + 0x35, 0x0e, 0x1a, 0x35, 0xaf, 0x4c, 0x2b, 0xd7, 0x69, 0x8b, 0x6e, 0x6b, + 0xa2, 0x72, 0x1c, 0x45, 0x54, 0x35, 0xc7, 0x45, 0xc7, 0xcc, 0xdb, 0x43, + 0x24, 0x17, 0xc0, 0xcb, 0x06, 0xc0, 0xce, 0xe4, 0x82, 0x60, 0xfc, 0x3c, + 0xa8, 0x0d, 0x56, 0x93, 0x1e, 0x2d, 0x96, 0x52, 0x0f, 0x05, 0xb0, 0x1a, + 0x2a, 0x35, 0x5d, 0x00, 0x71, 0xa6, 0xd0, 0x00, 0x67, 0x9f, 0x11, 0x1e, + 0x0a, 0x8e, 0x09, 0x11, 0xca, 0x68, 0x65, 0x5d, 0xd2, 0x4d, 0xeb, 0xe6, + 0xa2, 0x49, 0xf3, 0x6d, 0xb2, 0x60, 0x06, 0x30, 0x3e, 0x59, 0xed, 0x23, + 0x32, 0x42, 0x89, 0xcc, 0x1b, 0x48, 0xf2, 0xc6, 0xe6, 0x3e, 0x94, 0x58, + 0x14, 0x14, 0xed, 0x4c, 0x44, 0x1f, 0x54, 0x77, 0x2d, 0x29, 0x93, 0x91, + 0x2e, 0x26, 0x25, 0x10, 0xae, 0x6a, 0x68, 0x66, 0x8c, 0x91, 0x72, 0x87, + 0x18, 0x9c, 0xea, 0xe4, 0x82, 0xd4, 0x4d, 0x29, 0x13, 0x2d, 0x6d, 0xfa, + 0xf5, 0x51, 0x4f, 0x3e, 0xef, 0x84, 0xa6, 0xff, 0x2b, 0xf5, 0x9e, 0xaf, + 0x32, 0x7e, 0xb7, 0x63, 0xbf, 0x67, 0x2c, 0xc8, 0xe4, 0xbe, 0xc3, 0xfc, + 0x84, 0xab, 0x24, 0x9f, 0xa9, 0xc6, 0x30, 0xdf, 0x97, 0xaa, 0xdc, 0xef, + 0x61, 0x7f, 0x7e, 0xb3, 0x29, 0xed, 0x5d, 0xe5, 0x5f, 0x4b, 0xeb, 0x33, + 0x84, 0x2a, 0x51, 0x42, 0x6a, 0x52, 0x75, 0x1c, 0x5e, 0x45, 0xe6, 0xee, + 0x85, 0x01, 0xc1, 0xc1, 0x44, 0xc4, 0x45, 0x4b, 0xc4, 0x52, 0xe2, 0x06, + 0x97, 0xa2, 0xa0, 0x7a, 0xaa, 0x9e, 0x21, 0x2c, 0x21, 0x11, 0x08, 0x8c, + 0xbb, 0x41, 0x4d, 0xa7, 0x2e, 0xda, 0xff, 0xec, 0x6c, 0x71, 0x02, 0x08, + 0x20, 0x28, 0x08, 0x69, 0xa7, 0x26, 0xa7, 0x91, 0x5d, 0x0a, 0xa6, 0x96, + 0x46, 0xc0, 0x78, 0x9c, 0x98, 0xff, 0xfb, 0xd4, 0x40, 0x61, 0x08, 0x05, + 0x32, 0x76, 0xbb, 0xb9, 0x29, 0x4b, 0x70, 0x8e, 0x4e, 0x77, 0xed, 0x09, + 0x28, 0x6e, 0x5a, 0xdd, 0xd8, 0xe4, 0xc6, 0x31, 0xed, 0xc3, 0x5b, 0xbb, + 0x1c, 0x44, 0xf6, 0x3d, 0xb8, 0x54, 0x4d, 0x73, 0x22, 0x1e, 0x42, 0x7d, + 0x0b, 0x24, 0xd2, 0x39, 0x13, 0x82, 0x5d, 0x9a, 0x8d, 0x88, 0x9b, 0x66, + 0x51, 0x25, 0x3e, 0xb2, 0xba, 0x4e, 0xc3, 0x6f, 0x0f, 0x0d, 0x72, 0x82, + 0xe5, 0x07, 0x21, 0x38, 0x84, 0x04, 0x8f, 0x15, 0x0f, 0x0f, 0x26, 0xa0, + 0x53, 0xb9, 0x38, 0xc1, 0x39, 0xe3, 0x84, 0x05, 0x52, 0x45, 0x8e, 0xdf, + 0x39, 0x74, 0x1e, 0xb1, 0x6c, 0xd9, 0x0c, 0x44, 0xc5, 0xfc, 0x2f, 0x46, + 0x93, 0xf2, 0x97, 0x73, 0xdc, 0x4c, 0xcd, 0xdb, 0xa4, 0xf7, 0x3b, 0x6d, + 0xf0, 0xbc, 0x77, 0xd7, 0x35, 0xcc, 0x8d, 0xff, 0xff, 0xf8, 0xff, 0xff, + 0xff, 0xae, 0x3e, 0xea, 0x66, 0x67, 0x65, 0x99, 0x8b, 0x88, 0x48, 0x1e, + 0xc3, 0x1d, 0x9b, 0xb4, 0xa7, 0x67, 0x99, 0x44, 0x71, 0xc4, 0xd0, 0xa0, + 0xac, 0x20, 0x07, 0x6d, 0x0c, 0x57, 0x04, 0xa8, 0x63, 0x89, 0x78, 0x70, + 0x3e, 0x21, 0x13, 0x4b, 0x87, 0x64, 0xf1, 0x1d, 0x61, 0xc2, 0x62, 0xc3, + 0x05, 0x6d, 0x27, 0xa3, 0x3e, 0x73, 0x9c, 0x29, 0xe0, 0x9c, 0x8d, 0x43, + 0x66, 0x05, 0x78, 0x4b, 0x65, 0xb5, 0x17, 0x70, 0xb4, 0x3e, 0x12, 0x82, + 0x9e, 0xc7, 0x8b, 0x05, 0x97, 0xf1, 0x88, 0xe4, 0xb0, 0xb5, 0xd6, 0x9f, + 0xa4, 0x34, 0xd2, 0xb7, 0x2d, 0x4a, 0x7b, 0x42, 0xdb, 0x8c, 0x63, 0xf2, + 0x75, 0x34, 0xd1, 0x65, 0x6e, 0x81, 0x3c, 0xfe, 0xdb, 0x87, 0x95, 0x6e, + 0xa9, 0x79, 0x99, 0xe2, 0xb8, 0x45, 0x8f, 0x6a, 0xea, 0x98, 0x8b, 0x8a, + 0xa8, 0x65, 0x80, 0xe6, 0xf1, 0xeb, 0x9e, 0x21, 0x52, 0xd4, 0x8d, 0x3c, + 0x19, 0x23, 0x4c, 0xf2, 0x3e, 0xf2, 0xcf, 0x0d, 0xc6, 0x0c, 0x2b, 0x37, + 0x2a, 0x9b, 0x22, 0xe1, 0x58, 0xc9, 0x97, 0xd1, 0xa2, 0x6d, 0xaa, 0x1b, + 0x9d, 0x9b, 0x99, 0xed, 0x86, 0xa8, 0xd1, 0xa0, 0xb7, 0xcc, 0xc7, 0x0e, + 0x8d, 0xcc, 0x2d, 0xd0, 0x25, 0xac, 0x1d, 0xe9, 0x86, 0xaf, 0x19, 0xb7, + 0x78, 0xed, 0xac, 0x70, 0x23, 0x42, 0x8d, 0x09, 0x76, 0xf2, 0xd6, 0x65, + 0x9d, 0x5c, 0xf5, 0xc9, 0xfa, 0xe1, 0xec, 0xc7, 0xe4, 0x74, 0x3a, 0x7b, + 0x1f, 0x51, 0x4d, 0x16, 0x86, 0x74, 0x25, 0x03, 0x55, 0x0b, 0xb2, 0x24, + 0xcf, 0x3f, 0xcd, 0xd3, 0x30, 0xbd, 0x31, 0x29, 0x8d, 0x13, 0xd8, 0x5f, + 0x1d, 0x83, 0x7d, 0x42, 0x8e, 0x4b, 0x27, 0x4e, 0xb6, 0x38, 0xd6, 0x07, + 0xea, 0x42, 0xc0, 0x23, 0x2c, 0x0e, 0x65, 0x51, 0x90, 0x8f, 0x57, 0xd8, + 0xea, 0x63, 0x56, 0xab, 0x2b, 0x18, 0xa4, 0x2e, 0x1c, 0x22, 0x52, 0x3d, + 0x9b, 0x1f, 0xfd, 0x53, 0x30, 0xc2, 0x10, 0x70, 0x72, 0x91, 0x49, 0x58, + 0xfd, 0xd3, 0xb3, 0xb7, 0x16, 0xfe, 0x9c, 0x2e, 0x1e, 0x6c, 0x2a, 0x54, + 0x9c, 0xbe, 0x4a, 0x80, 0xb6, 0xb9, 0x25, 0xca, 0xb4, 0x46, 0x79, 0x12, + 0xc6, 0x74, 0xf3, 0x4d, 0xaf, 0xa2, 0x46, 0xb5, 0xd4, 0x8e, 0x56, 0xcd, + 0x6b, 0x02, 0x03, 0xf6, 0x7b, 0x57, 0x7e, 0xeb, 0x0e, 0x17, 0x8f, 0x7c, + 0x3d, 0x91, 0xad, 0xdb, 0x53, 0x56, 0x35, 0x98, 0x90, 0x22, 0xbd, 0x95, + 0xe4, 0xef, 0x55, 0xb1, 0xb4, 0xc4, 0xac, 0x60, 0x9a, 0x46, 0x35, 0xdd, + 0xa3, 0x38, 0x40, 0x66, 0x76, 0xe5, 0x1b, 0x35, 0xdb, 0x4c, 0x67, 0x25, + 0x73, 0xdd, 0xe9, 0x91, 0x11, 0x07, 0x74, 0xc2, 0xcb, 0x03, 0x7d, 0xaa, + 0xe3, 0x1e, 0x34, 0x06, 0xe9, 0xd9, 0xf7, 0x78, 0xf0, 0xdb, 0x5e, 0x2e, + 0xa0, 0xe5, 0x91, 0xda, 0xb2, 0x9f, 0xb5, 0xdd, 0x83, 0x18, 0xfa, 0x71, + 0x87, 0x11, 0xce, 0x0a, 0xd6, 0x65, 0x6e, 0xbd, 0xd1, 0xf1, 0x23, 0x2f, + 0xd1, 0x4e, 0xde, 0xb7, 0x44, 0xab, 0x51, 0xd4, 0xa8, 0x73, 0x73, 0x2b, + 0x53, 0xaf, 0x0f, 0x81, 0xd2, 0x2e, 0x27, 0x81, 0x8c, 0x6d, 0x0c, 0x96, + 0xa6, 0x14, 0xba, 0x1c, 0xd8, 0x4f, 0xa1, 0xab, 0xc8, 0xa4, 0xb3, 0x31, + 0x7b, 0x34, 0x48, 0x09, 0xe4, 0x5e, 0x54, 0x4c, 0x30, 0x95, 0x00, 0x12, + 0x13, 0x72, 0xed, 0xb5, 0x88, 0x91, 0xfb, 0x93, 0x12, 0x88, 0x74, 0x40, + 0xb5, 0xb9, 0xe6, 0xa5, 0x65, 0x88, 0x74, 0x50, 0xbb, 0x90, 0xca, 0xb0, + 0x9f, 0xb2, 0x80, 0x6c, 0x9d, 0xc4, 0xe4, 0xa2, 0xf9, 0x0e, 0xc4, 0xa6, + 0x0c, 0x81, 0x05, 0x8f, 0xbe, 0x62, 0xf2, 0xe7, 0x8f, 0x97, 0x1c, 0x93, + 0x8a, 0xc0, 0xda, 0xb1, 0xb8, 0x90, 0xac, 0x24, 0xb3, 0x12, 0x52, 0xaa, + 0x19, 0x66, 0x88, 0x44, 0x88, 0x22, 0xe3, 0xce, 0x18, 0x20, 0x39, 0x61, + 0x2d, 0xa1, 0x83, 0x53, 0x1c, 0x23, 0xe3, 0x15, 0x28, 0x7b, 0x30, 0xb8, + 0x70, 0x3d, 0x62, 0xc7, 0x95, 0x7a, 0x4f, 0xe7, 0x3f, 0x4b, 0x8d, 0x48, + 0xe6, 0xef, 0xe6, 0xda, 0xbe, 0xef, 0x6e, 0x7e, 0x2f, 0x6a, 0xb8, 0xe6, + 0x63, 0xa9, 0xbd, 0x39, 0xb5, 0xa5, 0x99, 0x96, 0xb7, 0x8f, 0x99, 0xeb, + 0x8e, 0xaf, 0xe5, 0x6f, 0x8e, 0xad, 0x22, 0xa2, 0xe2, 0xe6, 0x93, 0x96, + 0x8a, 0x34, 0x41, 0x20, 0xeb, 0x81, 0xde, 0xd1, 0x67, 0xc1, 0xee, 0x72, + 0x0b, 0x9e, 0x39, 0x6b, 0xab, 0x0f, 0xcc, 0x1a, 0x54, 0x28, 0x00, 0x0c, + 0xdc, 0x6e, 0x34, 0x00, 0x1f, 0x9e, 0x30, 0x06, 0x1d, 0x0b, 0x26, 0x24, + 0x99, 0x0a, 0x1c, 0xb2, 0x36, 0x57, 0x59, 0x0d, 0xa8, 0x97, 0x5c, 0xc9, + 0x0f, 0x34, 0x7c, 0xf1, 0xa1, 0xff, 0xfb, 0xd4, 0x40, 0x5d, 0x80, 0x84, + 0xdf, 0x75, 0x3d, 0x68, 0xcc, 0x43, 0x72, 0xa7, 0x0e, 0xd7, 0x7a, 0x19, + 0x29, 0x6e, 0x18, 0x09, 0xd8, 0xe6, 0xc6, 0x31, 0x8d, 0xc2, 0xe6, 0xbb, + 0x5d, 0x24, 0x94, 0xb1, 0xb8, 0xc6, 0x81, 0x58, 0x1b, 0x12, 0x22, 0x1c, + 0x39, 0x85, 0x50, 0xb5, 0xe6, 0x89, 0x02, 0x68, 0xc9, 0xc8, 0x84, 0x92, + 0x38, 0x80, 0x40, 0x08, 0x93, 0x82, 0xc2, 0x99, 0x99, 0x6d, 0x02, 0x24, + 0x1d, 0x0d, 0x10, 0xa8, 0xa3, 0x32, 0xa7, 0x56, 0x45, 0x05, 0x61, 0x79, + 0x4a, 0x52, 0xd9, 0x44, 0xda, 0x33, 0xd2, 0x53, 0x75, 0xf5, 0x73, 0x86, + 0x78, 0x7a, 0xf3, 0xc9, 0xde, 0xb7, 0x5d, 0x5f, 0xfd, 0x27, 0x0c, 0xb4, + 0xe1, 0x5e, 0x9a, 0xc8, 0xe7, 0x97, 0xd9, 0x4a, 0xd8, 0xd9, 0xc7, 0x3d, + 0x6c, 0xa9, 0x2f, 0x1d, 0xb8, 0xdf, 0xbb, 0xdd, 0x7f, 0xfe, 0xa7, 0xe1, + 0xee, 0x59, 0xfe, 0xdd, 0xf4, 0xa1, 0x77, 0x79, 0xab, 0x46, 0x72, 0x69, + 0x8c, 0x4b, 0x5b, 0x55, 0x1c, 0xe4, 0x4c, 0x6d, 0x62, 0x73, 0x0a, 0xd9, + 0x05, 0xb0, 0x6d, 0x2b, 0x0d, 0x24, 0x80, 0xf2, 0x34, 0x6c, 0x90, 0x0e, + 0x91, 0xa2, 0x87, 0x50, 0x46, 0x23, 0x22, 0x65, 0xfa, 0x00, 0x6b, 0x90, + 0x03, 0xb1, 0xa0, 0x54, 0x45, 0xc8, 0xc8, 0xa5, 0x22, 0x19, 0x38, 0xd4, + 0xe5, 0x97, 0x97, 0xb8, 0x86, 0x70, 0xb1, 0x73, 0x19, 0x89, 0xd3, 0x4b, + 0xe7, 0xe8, 0x47, 0x06, 0x06, 0x25, 0xa2, 0xf1, 0x91, 0xea, 0xb2, 0xa1, + 0x2e, 0xcb, 0x55, 0x38, 0x28, 0xa8, 0xea, 0x76, 0x62, 0x43, 0x2a, 0x9b, + 0x95, 0x59, 0xd7, 0x1e, 0x55, 0x57, 0x53, 0x8f, 0xc7, 0x85, 0x9b, 0xaf, + 0x69, 0xeb, 0xe3, 0xa9, 0xf9, 0x62, 0x57, 0x63, 0xab, 0x8f, 0x5a, 0x95, + 0x66, 0xe7, 0x2e, 0xae, 0x5d, 0x68, 0x35, 0x6b, 0x37, 0xcf, 0x76, 0x2e, + 0xe6, 0x3f, 0x17, 0xac, 0xea, 0xdb, 0xde, 0x8d, 0x8a, 0xd6, 0x8f, 0x64, + 0xf2, 0x4a, 0x34, 0xf5, 0x1e, 0x5d, 0x9f, 0x91, 0xbc, 0xb2, 0xd1, 0x3b, + 0x6f, 0xcb, 0xf5, 0x5d, 0x77, 0x1e, 0xfd, 0xf4, 0x8e, 0x33, 0x45, 0xb0, + 0xdd, 0xfb, 0xe7, 0xb7, 0x66, 0xf5, 0x9a, 0x2d, 0xdf, 0x5d, 0x34, 0xfa, + 0xd5, 0x63, 0x4f, 0x45, 0x1a, 0x1a, 0xcc, 0x7e, 0x15, 0xd2, 0xc4, 0xd7, + 0xcb, 0x94, 0x2f, 0xf3, 0x4e, 0x3d, 0xd4, 0x41, 0x4a, 0x3b, 0x60, 0x82, + 0x53, 0x17, 0x17, 0xd2, 0x9a, 0x9b, 0xa1, 0x11, 0x44, 0xa1, 0xe4, 0x75, + 0x58, 0x35, 0x05, 0x02, 0xf0, 0x38, 0x0c, 0x4c, 0x83, 0x81, 0xa2, 0xac, + 0x98, 0x2d, 0x33, 0x42, 0x3c, 0x34, 0x00, 0xe2, 0x5e, 0x00, 0x4d, 0x70, + 0x01, 0xec, 0xb0, 0xe8, 0xac, 0x22, 0x2b, 0x15, 0xb2, 0x46, 0x3c, 0x4f, + 0x05, 0x95, 0x3b, 0x36, 0xca, 0xda, 0xde, 0xa5, 0x02, 0x94, 0x58, 0x1a, + 0x69, 0x31, 0x43, 0x26, 0xd9, 0x28, 0x0c, 0xb6, 0x0a, 0x11, 0xa1, 0x78, + 0x99, 0x01, 0x15, 0x0a, 0x5a, 0x32, 0xbc, 0x89, 0xc8, 0xcd, 0x81, 0xb5, + 0x45, 0xce, 0x20, 0x40, 0x48, 0xd9, 0x20, 0x65, 0x4a, 0x33, 0xeb, 0x99, + 0xb8, 0xf5, 0x8a, 0x89, 0x8e, 0x4e, 0x54, 0xa6, 0xe8, 0xe9, 0x3a, 0xcc, + 0x3b, 0x56, 0x1a, 0xb2, 0xeb, 0xd6, 0xb2, 0xf4, 0x6e, 0x53, 0xa9, 0xac, + 0xe6, 0xb9, 0x0d, 0x6f, 0x94, 0x8f, 0xe8, 0xf5, 0x7e, 0xd4, 0xb3, 0x1f, + 0xcb, 0xaa, 0xd5, 0xa1, 0xf8, 0x3d, 0xba, 0xd9, 0x8d, 0xcb, 0x52, 0xb3, + 0x6c, 0x8a, 0x27, 0xb4, 0xf5, 0x75, 0xa9, 0x1d, 0x96, 0x74, 0xc3, 0x46, + 0x98, 0xa5, 0x8f, 0xd9, 0xc6, 0x1d, 0x6f, 0x15, 0x3b, 0x4f, 0xea, 0xd7, + 0x9a, 0xb6, 0x43, 0xd6, 0x97, 0xbf, 0xba, 0xd7, 0x6a, 0x09, 0xa4, 0x33, + 0x6f, 0xab, 0x88, 0xec, 0x3f, 0x0f, 0xef, 0xa8, 0x1e, 0xcc, 0x0c, 0xdc, + 0x5e, 0x62, 0xed, 0xc5, 0x44, 0xa2, 0x7b, 0xc5, 0x91, 0x24, 0xb2, 0x64, + 0x60, 0x60, 0x6c, 0x9a, 0xc5, 0xa1, 0x2a, 0x40, 0xa0, 0x34, 0x21, 0x83, + 0x73, 0x38, 0xf9, 0x86, 0x50, 0x0e, 0x94, 0xea, 0x07, 0xa0, 0x4e, 0xc5, + 0x55, 0xe9, 0x5b, 0x8f, 0x4e, 0xa0, 0x81, 0x69, 0xed, 0x5d, 0x8b, 0x5b, + 0x89, 0x1f, 0x2c, 0x6e, 0xdb, 0xa5, 0x59, 0x2c, 0x1c, 0xaa, 0x75, 0xd3, + 0x1a, 0xad, 0xd8, 0xe8, 0x26, 0x7f, 0x42, 0x9a, 0x89, 0x89, 0x89, 0xde, + 0x3f, 0x41, 0x40, 0x4a, 0x54, 0xab, 0x82, 0x48, 0x92, 0x63, 0x0a, 0x26, + 0xa0, 0xd7, 0xee, 0x33, 0xf7, 0xd5, 0x43, 0xaa, 0xc0, 0xe6, 0xc4, 0xe6, + 0xfa, 0x1b, 0x85, 0xdf, 0xc4, 0x8f, 0x16, 0xb1, 0x60, 0x44, 0x77, 0x07, + 0xb0, 0x47, 0x83, 0x99, 0xeb, 0x68, 0x7b, 0x8b, 0x47, 0x9b, 0xbd, 0xf7, + 0x3d, 0x6d, 0x7c, 0x57, 0x1e, 0xd0, 0xb5, 0xba, 0x7a, 0xd3, 0x50, 0x23, + 0x66, 0x0e, 0xf7, 0x7d, 0x46, 0xa4, 0x68, 0xf8, 0x7d, 0x2d, 0x6b, 0x3c, + 0x9e, 0x96, 0x7b, 0x5a, 0xc3, 0x87, 0x13, 0xc0, 0x79, 0xa9, 0xad, 0x5b, + 0xaf, 0x6a, 0x2d, 0x6d, 0xb7, 0x3c, 0xef, 0x6e, 0x5e, 0x1d, 0x6d, 0xba, + 0x6e, 0xcf, 0xad, 0x1f, 0x51, 0x1d, 0x62, 0x0c, 0x4d, 0xcb, 0xa8, 0xb8, + 0x96, 0x12, 0x9e, 0x2d, 0xe0, 0x1f, 0x2e, 0x28, 0x66, 0x1c, 0x1d, 0xa2, + 0xd8, 0x4f, 0x18, 0xcf, 0xa1, 0x18, 0x44, 0xe6, 0x2a, 0x59, 0x0f, 0x52, + 0x9d, 0x06, 0x2b, 0x71, 0x8a, 0xdc, 0x54, 0xa5, 0xcf, 0xb3, 0x19, 0x09, + 0x2f, 0x4d, 0xb1, 0xa0, 0x81, 0x38, 0x92, 0x44, 0x00, 0x3f, 0x2a, 0x12, + 0x21, 0x09, 0x00, 0x43, 0x05, 0x4c, 0xaa, 0x88, 0x0b, 0x15, 0x29, 0x44, + 0x51, 0x44, 0x7b, 0x35, 0x4c, 0xff, 0xfb, 0xd4, 0x40, 0x6d, 0x09, 0x86, + 0x09, 0x76, 0x39, 0x91, 0x8c, 0x7b, 0x70, 0xb8, 0xce, 0x97, 0x47, 0x25, + 0x8c, 0x6e, 0x56, 0x45, 0xd4, 0xe8, 0xc6, 0x31, 0x8d, 0xca, 0xfa, 0xbb, + 0x5c, 0xd8, 0x94, 0xbd, 0xb8, 0xa0, 0xb9, 0xeb, 0xe1, 0x54, 0xe2, 0x33, + 0x12, 0xd8, 0x50, 0x3c, 0x94, 0x3a, 0x3a, 0xfc, 0x4d, 0x16, 0xca, 0x85, + 0x83, 0x23, 0xdf, 0x4c, 0xa2, 0x12, 0xcd, 0x64, 0xe5, 0xc5, 0x2d, 0xc6, + 0x61, 0x65, 0xab, 0x51, 0x1f, 0x28, 0x68, 0xf6, 0x3e, 0x54, 0x5e, 0x7d, + 0x4f, 0xa1, 0x1c, 0x9c, 0x3f, 0x63, 0xfb, 0x5e, 0xed, 0x4a, 0xe7, 0xdd, + 0xae, 0x9c, 0x4b, 0x55, 0xac, 0xc7, 0x79, 0xfb, 0x40, 0xe2, 0xfa, 0x59, + 0x6d, 0xdb, 0xdb, 0x5a, 0x8c, 0x7d, 0x9c, 0xaf, 0x75, 0x9c, 0xac, 0xc5, + 0xb1, 0x32, 0xe7, 0xcd, 0x77, 0xeb, 0x0b, 0x0e, 0x5a, 0xdc, 0xd5, 0x5c, + 0x86, 0xbb, 0x31, 0x59, 0x16, 0x2d, 0xbb, 0x34, 0x9d, 0xa7, 0xc5, 0xfc, + 0xcf, 0xe5, 0x3b, 0xff, 0xfa, 0xb3, 0xf0, 0x37, 0x91, 0xc3, 0x9b, 0x46, + 0xab, 0xf5, 0xf8, 0x18, 0x63, 0x7d, 0x7d, 0x25, 0x01, 0x7f, 0x23, 0x39, + 0x80, 0x96, 0xf2, 0x16, 0xba, 0x5b, 0x2e, 0xa7, 0x56, 0x7e, 0x40, 0x6e, + 0xa6, 0x63, 0xcc, 0x27, 0x6a, 0xdf, 0x26, 0x93, 0x07, 0xe5, 0x04, 0x10, + 0x40, 0x0d, 0x87, 0x02, 0x11, 0x4c, 0x77, 0x00, 0x1e, 0x36, 0x9b, 0xa4, + 0xaa, 0x2c, 0x12, 0xc9, 0x06, 0x2c, 0x12, 0x1e, 0x27, 0xc6, 0xd2, 0x64, + 0x90, 0xc0, 0xfb, 0x51, 0x9c, 0xd0, 0x9c, 0xf3, 0x97, 0xc8, 0x6d, 0x02, + 0xdb, 0x2f, 0x5c, 0x68, 0x5d, 0x8c, 0x50, 0x7a, 0x6a, 0x4b, 0x79, 0x3d, + 0x15, 0x29, 0x8d, 0x33, 0xf2, 0x74, 0xe2, 0x89, 0x66, 0xe9, 0x9a, 0x61, + 0xcb, 0xad, 0x44, 0xeb, 0xfe, 0xea, 0x64, 0x3d, 0x65, 0xec, 0x7d, 0x0c, + 0xf9, 0xa4, 0xae, 0xe3, 0xd5, 0x46, 0xb6, 0xd4, 0xdf, 0xe3, 0x9b, 0xae, + 0x89, 0x7c, 0x78, 0xfd, 0x66, 0xb5, 0xeb, 0x4e, 0xfc, 0xc7, 0x65, 0xfb, + 0x8f, 0xd7, 0xd9, 0x87, 0xad, 0xf6, 0xb6, 0x55, 0xd9, 0x76, 0x7a, 0x09, + 0xab, 0x31, 0x6e, 0xe5, 0xde, 0xd7, 0x63, 0x6d, 0xd7, 0xa0, 0xa3, 0xce, + 0x65, 0xe7, 0xa7, 0xab, 0xcd, 0x34, 0xf6, 0x6b, 0x14, 0xf9, 0x63, 0x69, + 0xb0, 0x63, 0xce, 0x2c, 0x7b, 0x50, 0x5a, 0xac, 0xec, 0xef, 0xed, 0x6c, + 0xd5, 0xef, 0x5b, 0x31, 0xeb, 0xe8, 0x53, 0x3b, 0x76, 0x1a, 0xd4, 0xcd, + 0x74, 0x07, 0x6b, 0x45, 0x05, 0x22, 0x49, 0xc9, 0x64, 0xa4, 0x60, 0x5b, + 0x2a, 0x23, 0x70, 0x42, 0x23, 0x1e, 0x97, 0x8c, 0xd8, 0x35, 0x06, 0x45, + 0x46, 0x86, 0xe7, 0xce, 0x93, 0x1e, 0x04, 0x0d, 0x50, 0x00, 0x7a, 0x5c, + 0x7c, 0x90, 0x56, 0x08, 0x8a, 0x71, 0x18, 0x5c, 0x9c, 0x34, 0x31, 0xa6, + 0x36, 0xca, 0xcd, 0x94, 0x11, 0x4d, 0x88, 0xac, 0x4c, 0xf9, 0x1b, 0x80, + 0xf3, 0x62, 0x84, 0x04, 0xa8, 0x26, 0x15, 0xb1, 0x50, 0x84, 0x30, 0x27, + 0x14, 0x21, 0x6d, 0x14, 0x08, 0x80, 0x44, 0x0d, 0xd0, 0xba, 0x02, 0xdd, + 0x66, 0x71, 0x0b, 0x36, 0x85, 0x48, 0xb3, 0xcb, 0xbb, 0x5b, 0x14, 0xc6, + 0x77, 0x59, 0x24, 0xa7, 0x8b, 0xe0, 0x41, 0x9f, 0xcb, 0x97, 0xd9, 0xdf, + 0x96, 0xb9, 0xab, 0xdb, 0xe9, 0xf5, 0xe9, 0x7c, 0xc7, 0xbc, 0xda, 0xd5, + 0x29, 0xba, 0x5f, 0x78, 0x7b, 0x24, 0xfb, 0xb4, 0x98, 0xbe, 0xda, 0xb1, + 0x7d, 0xb5, 0xc1, 0xde, 0x35, 0x79, 0xe6, 0x9a, 0xed, 0x70, 0x73, 0xf1, + 0x24, 0xd0, 0x73, 0xf5, 0xfd, 0xab, 0xb9, 0x29, 0x0a, 0xda, 0xc5, 0xe0, + 0x40, 0xcf, 0x89, 0x0b, 0x72, 0x5a, 0xce, 0xe5, 0x8f, 0x24, 0x4c, 0xc8, + 0xf2, 0x3e, 0xe8, 0xc2, 0xf9, 0x5f, 0x26, 0x9e, 0xc5, 0x7f, 0xa7, 0x16, + 0xf7, 0x16, 0x09, 0x1e, 0x3f, 0x51, 0xac, 0x26, 0xd7, 0xe1, 0x30, 0xb9, + 0x38, 0xac, 0xae, 0xb5, 0x00, 0xd2, 0x86, 0xb0, 0xf8, 0xf1, 0x70, 0x1d, + 0x6d, 0xe9, 0x17, 0xc5, 0xe1, 0x79, 0x2e, 0x4e, 0x1d, 0x28, 0xd4, 0x46, + 0x99, 0x68, 0x63, 0x24, 0x64, 0xda, 0x00, 0x00, 0x1a, 0xfa, 0x00, 0x32, + 0x84, 0x24, 0x43, 0x7a, 0x75, 0x62, 0x11, 0x10, 0xa1, 0x1c, 0xfa, 0x05, + 0xd2, 0xab, 0xdb, 0x69, 0x76, 0x26, 0x07, 0xa8, 0x70, 0x2a, 0xd8, 0x95, + 0xa6, 0x19, 0x98, 0xbb, 0x69, 0x19, 0x46, 0x98, 0x28, 0x3c, 0x0f, 0x24, + 0x80, 0x2a, 0xc1, 0x61, 0xf2, 0x32, 0x70, 0xb2, 0xef, 0x6a, 0x70, 0xc4, + 0xcb, 0x36, 0x0e, 0xa9, 0x0a, 0x73, 0xa4, 0x26, 0xb9, 0x1b, 0xab, 0x90, + 0xde, 0x2f, 0x9d, 0xc0, 0xd3, 0x57, 0xca, 0xda, 0xf5, 0x79, 0x7d, 0xed, + 0x91, 0x77, 0xfb, 0x33, 0x69, 0xb4, 0xd7, 0xa7, 0x98, 0x99, 0x98, 0x73, + 0x32, 0x28, 0x29, 0x6a, 0x33, 0xd9, 0xd3, 0x7c, 0xfa, 0xc7, 0x68, 0x62, + 0xe8, 0xb6, 0xb7, 0xc6, 0x29, 0x9f, 0x1a, 0xed, 0xac, 0x3c, 0xc7, 0x5a, + 0x8e, 0x63, 0x99, 0xee, 0x45, 0xb4, 0x98, 0xbb, 0x2d, 0x13, 0xcc, 0xb9, + 0x9f, 0xcf, 0x55, 0x89, 0xcd, 0xbf, 0xe6, 0x41, 0x36, 0x6d, 0x95, 0xb9, + 0x7a, 0x4d, 0x6a, 0xfe, 0x73, 0x96, 0x8b, 0x8a, 0xc4, 0xf3, 0x02, 0x4e, + 0xb2, 0xc3, 0x47, 0xe4, 0x27, 0x51, 0x18, 0x23, 0x61, 0x80, 0xed, 0x38, + 0xea, 0xb8, 0x9c, 0xbc, 0x05, 0x1b, 0x91, 0xcc, 0x11, 0x26, 0x51, 0x29, + 0x95, 0x90, 0x94, 0xe8, 0x00, 0x00, 0xcd, 0xa8, 0x90, 0x00, 0x7f, 0x16, + 0x2e, 0x00, 0x0c, 0xda, 0x65, 0xd9, 0x81, 0x01, 0x56, 0x47, 0xd2, 0xeb, + 0x90, 0x72, 0x2a, 0x30, 0xb9, 0xff, 0xfb, 0xd4, 0x40, 0x65, 0x88, 0x85, + 0x8d, 0x76, 0x3a, 0x49, 0x29, 0x63, 0x70, 0xb2, 0xee, 0xc7, 0x4a, 0x25, + 0x2c, 0x6e, 0x16, 0xa5, 0xd8, 0xe8, 0xc4, 0xa5, 0x8d, 0xc2, 0xe9, 0xbb, + 0x5c, 0x88, 0xc4, 0xb1, 0xb8, 0xdc, 0x20, 0x2e, 0x98, 0x0a, 0x43, 0x08, + 0xb3, 0x22, 0x7c, 0x25, 0x36, 0x8a, 0x41, 0x62, 0x50, 0x30, 0xc1, 0x1c, + 0x48, 0x0d, 0x30, 0x7c, 0xb8, 0x05, 0x68, 0x2e, 0x81, 0x10, 0x32, 0x9b, + 0x67, 0x40, 0x29, 0xc7, 0xce, 0xac, 0xd4, 0x7a, 0x9a, 0xe7, 0x5a, 0xb9, + 0x94, 0xe9, 0xbe, 0x87, 0xcd, 0xd2, 0x04, 0x33, 0x85, 0x51, 0xbf, 0x0c, + 0x07, 0xae, 0xb4, 0x72, 0xde, 0xcd, 0x72, 0x69, 0x9d, 0xb4, 0xfc, 0x98, + 0x7d, 0xfc, 0xab, 0x5e, 0xf3, 0x0f, 0x65, 0x23, 0xea, 0xf7, 0xcd, 0x1e, + 0xda, 0x76, 0xc3, 0x57, 0xb7, 0x2e, 0xcf, 0xe5, 0xb2, 0x16, 0xe6, 0x65, + 0xe8, 0x98, 0xee, 0x6b, 0x18, 0x62, 0x16, 0xa6, 0xdf, 0x4e, 0xd9, 0xfb, + 0x2e, 0xad, 0x37, 0x76, 0x66, 0x7e, 0x9b, 0x34, 0xf9, 0x8a, 0xb5, 0xbd, + 0xe7, 0x9d, 0x6f, 0x9a, 0x71, 0xc7, 0xac, 0x71, 0x75, 0xa6, 0x97, 0x79, + 0xf6, 0x93, 0x30, 0xc9, 0x82, 0x43, 0xf5, 0xa3, 0xb9, 0xe9, 0x92, 0xb8, + 0x54, 0xc6, 0xda, 0x52, 0xd0, 0x3c, 0x79, 0xb1, 0x0f, 0x85, 0x74, 0x17, + 0x8e, 0x1c, 0xd0, 0xfd, 0xc8, 0x06, 0x52, 0x16, 0xc0, 0x38, 0x90, 0x30, + 0x4a, 0xc0, 0x5c, 0xfe, 0xaa, 0x48, 0x55, 0x0d, 0x93, 0x4e, 0xa4, 0xe6, + 0xc8, 0xb0, 0xaa, 0x13, 0x3a, 0x64, 0xa0, 0x3a, 0x65, 0x00, 0x2c, 0x4a, + 0x08, 0x91, 0x98, 0xa9, 0x99, 0x24, 0x15, 0x02, 0x54, 0x90, 0x91, 0x86, + 0x35, 0x09, 0x2a, 0x04, 0xd6, 0x60, 0x88, 0x53, 0x24, 0x0d, 0x03, 0x07, + 0x9c, 0x6a, 0x13, 0xc4, 0x3d, 0x2a, 0xa8, 0x56, 0xe1, 0xc9, 0xc2, 0x78, + 0x63, 0xba, 0x25, 0xdb, 0x0c, 0xf4, 0x5a, 0xfa, 0xd7, 0x54, 0xf2, 0xfb, + 0x5e, 0xd9, 0xdb, 0x4a, 0xc6, 0xc3, 0xb7, 0xec, 0xbb, 0x13, 0xb7, 0xba, + 0xde, 0xc8, 0xfe, 0x94, 0x9c, 0x7f, 0xeb, 0x95, 0xd9, 0xdd, 0x9f, 0x5d, + 0x56, 0x2f, 0x89, 0x29, 0x3f, 0xec, 0x62, 0xda, 0xdb, 0xa3, 0xca, 0x6c, + 0xb3, 0x1d, 0x6f, 0x57, 0x7e, 0x95, 0x8f, 0x26, 0x76, 0x1c, 0xbe, 0xda, + 0x59, 0x63, 0xbf, 0x22, 0xe8, 0xe3, 0x98, 0xb6, 0xbb, 0xb6, 0x9e, 0x5b, + 0xad, 0x24, 0xb3, 0x47, 0x2c, 0x2d, 0x50, 0x4c, 0x4e, 0x54, 0x3f, 0x5e, + 0x63, 0xe7, 0x43, 0xe2, 0x0d, 0x47, 0xe5, 0x46, 0x0c, 0x93, 0x90, 0xcc, + 0x1d, 0x2b, 0x95, 0x4f, 0xc0, 0xf9, 0xe1, 0x7c, 0xbe, 0x57, 0x54, 0x7c, + 0x3e, 0x1b, 0x25, 0xa5, 0x4a, 0x00, 0x4c, 0xe9, 0x28, 0x13, 0x84, 0x80, + 0x44, 0x1f, 0x0e, 0x0b, 0x4c, 0xb8, 0x92, 0x3b, 0x3a, 0xb1, 0x01, 0x02, + 0x18, 0x41, 0x36, 0x52, 0xde, 0xad, 0xd2, 0xa2, 0xc3, 0xe7, 0x08, 0x10, + 0x88, 0x48, 0x54, 0xa4, 0x62, 0x42, 0xc6, 0xe7, 0x21, 0x66, 0x26, 0x2b, + 0x10, 0x23, 0x94, 0x90, 0x2a, 0xc9, 0xe4, 0x6e, 0x42, 0x20, 0x49, 0x61, + 0xf1, 0xfa, 0xe4, 0x33, 0x84, 0x38, 0xcc, 0x9e, 0x5a, 0x9b, 0x56, 0xfc, + 0x2c, 0x74, 0x7f, 0x15, 0xe8, 0x7d, 0xf5, 0x8a, 0x7e, 0xff, 0x47, 0x9a, + 0xda, 0x45, 0x97, 0x73, 0x3e, 0xdb, 0xd6, 0x71, 0x2b, 0xed, 0xc5, 0x5e, + 0x98, 0xb7, 0x2a, 0xe6, 0xe3, 0x2e, 0x45, 0x0e, 0x34, 0xe4, 0x7f, 0x1b, + 0xb0, 0x31, 0x66, 0xbe, 0x66, 0xce, 0xe2, 0xd9, 0x8d, 0x77, 0xd6, 0xa9, + 0xa8, 0xc9, 0xdf, 0xed, 0x31, 0x74, 0x11, 0xab, 0x7b, 0xbd, 0xfd, 0xbb, + 0xf5, 0xcb, 0x37, 0xe9, 0xb7, 0x1c, 0x6f, 0xfe, 0x54, 0x4d, 0xf2, 0x26, + 0xb5, 0xa2, 0xea, 0x12, 0x13, 0x1a, 0xb0, 0xbf, 0x1a, 0x44, 0x86, 0xe7, + 0xa5, 0x21, 0x0c, 0x1a, 0x84, 0xa9, 0xd8, 0x64, 0xaa, 0x9c, 0x0b, 0x84, + 0xc5, 0xf2, 0x89, 0x08, 0x84, 0x1d, 0xa1, 0x0f, 0x9e, 0x09, 0x0f, 0x81, + 0x1a, 0x47, 0x9e, 0x2f, 0x83, 0x42, 0xa1, 0x20, 0xf1, 0xce, 0x00, 0xa2, + 0x9c, 0x57, 0x6d, 0xbd, 0xad, 0x11, 0xf9, 0x58, 0xac, 0x03, 0x35, 0xcb, + 0x85, 0x07, 0xc1, 0xc9, 0x96, 0x41, 0xfd, 0x4c, 0x1c, 0x26, 0x28, 0x4d, + 0x33, 0x21, 0x96, 0x5b, 0x60, 0xe1, 0xb1, 0x51, 0xf4, 0x89, 0x03, 0xe1, + 0xc1, 0xe2, 0x5e, 0x36, 0x3e, 0x46, 0x2a, 0x12, 0x9b, 0x51, 0x09, 0x01, + 0x40, 0xba, 0xe2, 0x14, 0x04, 0xc3, 0x2d, 0xa3, 0x59, 0x18, 0xa8, 0x54, + 0x0e, 0x14, 0x51, 0x62, 0x99, 0x31, 0x63, 0x0d, 0x45, 0x01, 0x45, 0xc5, + 0xc5, 0xd8, 0x63, 0x82, 0x18, 0x38, 0xa2, 0x82, 0xa3, 0x45, 0x85, 0xaa, + 0x35, 0x77, 0x65, 0x16, 0x15, 0x21, 0xcc, 0xa6, 0x24, 0x45, 0xcb, 0x66, + 0x7b, 0xee, 0xae, 0x75, 0xd6, 0xac, 0xa6, 0x63, 0xed, 0xb3, 0x7a, 0xf6, + 0xdd, 0xee, 0xca, 0xff, 0xfd, 0x12, 0x9f, 0x67, 0x36, 0xae, 0xc4, 0xd5, + 0x3b, 0x29, 0x56, 0xa4, 0x29, 0x95, 0x98, 0x6a, 0xa1, 0x0a, 0xe4, 0x14, + 0x33, 0x8a, 0x88, 0x1c, 0x68, 0xa8, 0xd3, 0xc5, 0x72, 0x9c, 0x00, 0xd3, + 0x28, 0x04, 0xe8, 0xfc, 0x8d, 0x04, 0x5c, 0x45, 0x1d, 0x4e, 0x80, 0xda, + 0x23, 0xb3, 0xf3, 0x2b, 0x2d, 0xf4, 0xed, 0x3e, 0xdb, 0xa5, 0x65, 0xbc, + 0x60, 0x53, 0x85, 0x12, 0xe3, 0x14, 0xe2, 0xa3, 0xa4, 0x24, 0xae, 0xa2, + 0x3c, 0xc5, 0xd6, 0x39, 0x2f, 0xa7, 0x5e, 0x84, 0x24, 0xb3, 0x01, 0x66, + 0xce, 0x1c, 0x93, 0xf2, 0x79, 0x7b, 0x45, 0xd6, 0x68, 0x7e, 0xd9, 0xba, + 0x46, 0x8b, 0xf6, 0x5d, 0x4b, 0xff, 0xfb, 0xd4, 0x40, 0x69, 0x80, 0x84, + 0x7e, 0x73, 0xbd, 0xe8, 0xc9, 0x2b, 0x72, 0xc0, 0x8e, 0xd7, 0x26, 0x31, + 0x8c, 0x6e, 0x18, 0xf9, 0xd6, 0xe2, 0x47, 0xa5, 0xed, 0xcb, 0x25, 0x3a, + 0xdc, 0x48, 0xc4, 0xbd, 0xb9, 0xd1, 0xf6, 0xd7, 0x4b, 0x4d, 0xa6, 0x61, + 0x7a, 0xd4, 0x8b, 0xd4, 0xfa, 0x2b, 0x2c, 0x5f, 0xa9, 0x9e, 0xcf, 0x3f, + 0x7e, 0xd5, 0x5d, 0xf3, 0x1d, 0x9a, 0xaa, 0x39, 0xb2, 0xca, 0xa9, 0x72, + 0x29, 0xbb, 0x50, 0x3e, 0xfd, 0xf6, 0xfb, 0x90, 0xd5, 0xb8, 0x2e, 0xee, + 0xf7, 0x47, 0xe7, 0xf9, 0x45, 0xce, 0xb3, 0x48, 0x53, 0xcb, 0x50, 0xc5, + 0x39, 0xec, 0xea, 0xe7, 0x21, 0x6d, 0xf7, 0x1f, 0xa4, 0xbd, 0xb7, 0x9a, + 0x74, 0xfc, 0x0d, 0x65, 0xf5, 0x0a, 0xcc, 0xd2, 0x1a, 0xd5, 0xd4, 0xd0, + 0x41, 0x5d, 0xa4, 0xd6, 0x25, 0xe9, 0x14, 0x9c, 0xae, 0x44, 0x72, 0xa4, + 0xcc, 0x7a, 0x1f, 0xdc, 0xc0, 0xe1, 0x73, 0x60, 0x49, 0x91, 0xd4, 0x46, + 0x10, 0x8b, 0xaf, 0x88, 0x21, 0x48, 0xf2, 0x9d, 0xa7, 0x9e, 0x74, 0x92, + 0xb8, 0xdc, 0x41, 0x1f, 0x07, 0x11, 0x20, 0x4b, 0x3b, 0x73, 0xe5, 0x80, + 0x03, 0x58, 0x60, 0x56, 0xa3, 0x86, 0x89, 0x31, 0x63, 0x4b, 0x47, 0x53, + 0x37, 0x2e, 0x9e, 0x31, 0x23, 0x20, 0x58, 0xc9, 0x85, 0x55, 0x79, 0xbf, + 0x23, 0xcd, 0x61, 0x30, 0x0e, 0x28, 0x98, 0xa0, 0x64, 0x9c, 0x48, 0xb9, + 0x75, 0x47, 0x94, 0x12, 0xa1, 0x14, 0x23, 0x22, 0x12, 0x23, 0x55, 0x12, + 0x03, 0x42, 0x21, 0x50, 0x19, 0x0d, 0x05, 0x11, 0x0c, 0xcc, 0x09, 0x27, + 0x76, 0x6b, 0x36, 0xdf, 0xee, 0x6a, 0x46, 0x96, 0xf1, 0x1f, 0x43, 0x7b, + 0x6a, 0x45, 0x83, 0x58, 0xd0, 0xf4, 0xe3, 0x0e, 0xd3, 0x40, 0x91, 0xe4, + 0xb8, 0xcc, 0xb6, 0x87, 0x0f, 0x50, 0x2f, 0x1d, 0xed, 0x7e, 0xe3, 0x59, + 0xc2, 0x1c, 0x48, 0x9e, 0x5f, 0x7b, 0xbe, 0xc4, 0x91, 0xf3, 0x26, 0xb1, + 0x3c, 0x5b, 0xf6, 0x4a, 0xd6, 0x2c, 0xcd, 0xba, 0xac, 0xb2, 0xcd, 0x56, + 0xf8, 0x11, 0x37, 0xb6, 0xa8, 0x39, 0xd7, 0xb7, 0xd5, 0xad, 0x11, 0xc1, + 0x63, 0x34, 0xd4, 0x1d, 0x3f, 0x96, 0x6d, 0xe6, 0xb0, 0x69, 0x9b, 0x47, + 0x89, 0x98, 0xbf, 0x53, 0x6e, 0x2c, 0x9a, 0xa4, 0xac, 0xef, 0x60, 0xc3, + 0x65, 0xd6, 0x1d, 0x5b, 0x48, 0xa8, 0x70, 0x59, 0x64, 0x95, 0x81, 0x0c, + 0x39, 0x65, 0x6e, 0x90, 0xd1, 0x24, 0x85, 0xb9, 0x96, 0xcd, 0x87, 0x0c, + 0x93, 0xc1, 0x38, 0x15, 0xcb, 0x46, 0xf3, 0x50, 0xc6, 0x2f, 0xeb, 0x66, + 0x5a, 0x18, 0xad, 0x4f, 0x32, 0x8c, 0x95, 0x40, 0x09, 0x43, 0x26, 0x8d, + 0x20, 0x45, 0x52, 0x07, 0xab, 0x1e, 0xc6, 0x82, 0x51, 0x91, 0xfb, 0x26, + 0x89, 0x16, 0x3c, 0x65, 0xb3, 0xb1, 0x2c, 0xb0, 0xc2, 0x06, 0xcb, 0x4c, + 0x9c, 0x54, 0x38, 0x81, 0x08, 0xc0, 0xad, 0x53, 0xa3, 0x21, 0x27, 0x0e, + 0x15, 0x84, 0x48, 0x90, 0x22, 0x40, 0x4a, 0x08, 0xa8, 0xf4, 0x46, 0x4d, + 0x41, 0xb4, 0x5a, 0x19, 0x15, 0x90, 0xe5, 0xbd, 0xee, 0x58, 0xf7, 0x0d, + 0x85, 0x45, 0x0d, 0x97, 0x0d, 0xcc, 0xf2, 0xeb, 0x75, 0x7b, 0xb8, 0xf9, + 0xdb, 0xfa, 0xd2, 0x0d, 0xa6, 0x70, 0xac, 0xd9, 0x87, 0x27, 0x71, 0xcc, + 0x09, 0x73, 0x87, 0x08, 0xf1, 0x6b, 0xba, 0x4e, 0xe5, 0x02, 0x59, 0x68, + 0xee, 0xea, 0x6b, 0x3c, 0x87, 0xde, 0x47, 0x92, 0x2f, 0xc5, 0xe6, 0xbd, + 0xb4, 0xdb, 0x36, 0x35, 0xd7, 0x31, 0x20, 0x62, 0x03, 0x7c, 0xae, 0xfc, + 0xda, 0x83, 0x68, 0x9e, 0x93, 0xc1, 0xbc, 0xf2, 0x79, 0x20, 0xe6, 0x2e, + 0x61, 0x45, 0x9e, 0x91, 0xf7, 0x0a, 0x7c, 0xc6, 0x89, 0xa9, 0x5f, 0x53, + 0x57, 0xcc, 0x97, 0x96, 0x90, 0xa8, 0xae, 0x6d, 0xac, 0x78, 0x4d, 0xec, + 0x6f, 0xa7, 0x55, 0xc6, 0x56, 0xc5, 0x50, 0xbf, 0x8a, 0xd5, 0x73, 0xfd, + 0xb1, 0x62, 0x46, 0x26, 0x56, 0x93, 0x35, 0x0c, 0x5c, 0x1a, 0x04, 0x8e, + 0x39, 0xf4, 0x9c, 0x39, 0x53, 0xab, 0x84, 0x89, 0xd6, 0xad, 0x5f, 0x70, + 0x37, 0x55, 0x42, 0x6a, 0x00, 0x00, 0x1a, 0xfe, 0x40, 0x31, 0x85, 0x17, + 0xcd, 0x19, 0x27, 0x20, 0x16, 0x4c, 0x14, 0x82, 0x98, 0xd9, 0xb3, 0x18, + 0x89, 0xdf, 0x8d, 0x41, 0x96, 0x56, 0x1e, 0x51, 0x63, 0xdd, 0x52, 0x72, + 0x79, 0x0a, 0x88, 0x4e, 0x0d, 0x2e, 0x85, 0x00, 0x39, 0x47, 0x43, 0xe8, + 0x26, 0x21, 0x50, 0x99, 0x0a, 0x47, 0xc4, 0x80, 0xb2, 0x4a, 0x93, 0xc5, + 0x75, 0xcd, 0xd1, 0xb7, 0x1d, 0xe5, 0x51, 0x5e, 0x5d, 0x3a, 0x41, 0xb3, + 0x4f, 0x52, 0xf7, 0x6a, 0xae, 0x2c, 0xbd, 0x65, 0x6c, 0x16, 0xf9, 0xe7, + 0x2b, 0xfd, 0xd9, 0x9f, 0x4a, 0xf5, 0x3f, 0xbe, 0x93, 0x93, 0xff, 0xd7, + 0xe4, 0x9f, 0xf6, 0x9a, 0x6f, 0xcb, 0x35, 0xfa, 0xfd, 0xaf, 0x37, 0xd9, + 0xff, 0x9a, 0x39, 0x59, 0xfe, 0xf9, 0xb7, 0x77, 0xce, 0xf4, 0x75, 0x7a, + 0x2d, 0xf6, 0xed, 0xdb, 0x05, 0xaf, 0xd5, 0x98, 0x32, 0x37, 0x27, 0xa7, + 0xe7, 0x3e, 0xd7, 0xe8, 0xa6, 0xd1, 0x77, 0x6a, 0xeb, 0x3d, 0x2a, 0xa1, + 0x4e, 0xb5, 0xc4, 0xa6, 0x49, 0x0f, 0x30, 0xf1, 0x34, 0x06, 0x6f, 0xa8, + 0x70, 0xac, 0xc2, 0xb6, 0xae, 0xd9, 0xc9, 0x0b, 0xc9, 0x18, 0x2e, 0x38, + 0x56, 0x21, 0x95, 0x4f, 0x5a, 0x8f, 0xc0, 0x00, 0x02, 0xab, 0x40, 0x0f, + 0xc5, 0x02, 0x36, 0x45, 0x62, 0x14, 0x45, 0xd0, 0xa3, 0x25, 0x32, 0xf2, + 0x75, 0x36, 0x62, 0x5a, 0x59, 0x0a, 0x8d, 0x5b, 0x0b, 0x0b, 0x68, 0xb5, + 0x21, 0x48, 0xe1, 0x62, 0xd5, 0xff, 0xfb, 0xd4, 0x40, 0x66, 0x8d, 0x95, + 0x52, 0x76, 0xba, 0x48, 0xc9, 0x63, 0x70, 0xb3, 0x6e, 0xc7, 0x39, 0x25, + 0x8c, 0x6e, 0x16, 0x79, 0xd8, 0xe6, 0x64, 0xb1, 0x8d, 0xc2, 0xfd, 0x3b, + 0x5c, 0x58, 0xf6, 0x31, 0xb8, 0x47, 0xa8, 0x08, 0x4c, 0xa2, 0x52, 0x5e, + 0xd3, 0xd6, 0xb9, 0xf3, 0xb2, 0xce, 0x25, 0x2f, 0x16, 0x4e, 0x2e, 0x5e, + 0xe3, 0xa5, 0x8c, 0x9d, 0x2f, 0x19, 0x40, 0x7c, 0xf5, 0x3a, 0x6a, 0xaa, + 0xb8, 0xe2, 0x5b, 0xab, 0xcb, 0x66, 0xf5, 0xff, 0x20, 0x61, 0xa9, 0x97, + 0x5c, 0xdb, 0xd1, 0xdf, 0xa7, 0x75, 0x5a, 0xd8, 0x29, 0x57, 0x7b, 0xba, + 0xf0, 0x74, 0xdf, 0x37, 0xd8, 0x86, 0x94, 0xbd, 0x66, 0x2d, 0x63, 0x36, + 0xfe, 0xc5, 0xaf, 0x39, 0x7d, 0x7f, 0x1d, 0xcb, 0x5a, 0x58, 0x86, 0x96, + 0xfe, 0xae, 0xd9, 0xcb, 0xbb, 0xd7, 0x6b, 0xbd, 0x73, 0x37, 0xbb, 0x77, + 0xcf, 0xaa, 0xfc, 0xcc, 0xbc, 0xfd, 0x36, 0x9f, 0x68, 0x69, 0x46, 0x69, + 0x5b, 0xef, 0xae, 0x89, 0xa3, 0x44, 0xf4, 0xaf, 0xad, 0x4c, 0x90, 0xaf, + 0xe5, 0x73, 0xe1, 0xd5, 0xa4, 0x62, 0x79, 0x70, 0x13, 0x5c, 0x76, 0x59, + 0x34, 0x20, 0xc6, 0x8d, 0x51, 0x28, 0x49, 0x6c, 0x7f, 0xc2, 0x04, 0x8d, + 0x48, 0x62, 0x48, 0x88, 0x60, 0xf3, 0x92, 0x2c, 0xeb, 0x0e, 0x0c, 0x02, + 0x62, 0xe2, 0x50, 0x10, 0x60, 0x95, 0x77, 0x9a, 0x7b, 0x8e, 0x5e, 0xd2, + 0xd4, 0x52, 0xc1, 0x11, 0x32, 0x77, 0x87, 0xdb, 0x4b, 0xb0, 0x0f, 0x4a, + 0x59, 0x2f, 0x8f, 0x65, 0x51, 0xe0, 0xc9, 0x95, 0xe7, 0x88, 0x84, 0xa0, + 0x6a, 0x7a, 0x7a, 0x21, 0x1f, 0x21, 0x21, 0x0f, 0x82, 0xf3, 0x62, 0xa9, + 0x50, 0x7d, 0x1f, 0xcc, 0x4a, 0x84, 0x33, 0xe8, 0x5d, 0x4c, 0xc3, 0x0b, + 0x2f, 0x1b, 0xb6, 0x58, 0xd2, 0xc8, 0x6a, 0xc5, 0x76, 0xce, 0xda, 0x16, + 0x1b, 0x8e, 0x0e, 0xbe, 0x5f, 0xff, 0xa5, 0x56, 0x5f, 0x3f, 0x6b, 0x5e, + 0x86, 0xbe, 0xf4, 0xdf, 0xe9, 0x57, 0xb5, 0xff, 0x8a, 0x93, 0x36, 0x9b, + 0x5f, 0x27, 0xeb, 0xb7, 0x87, 0x6f, 0xf4, 0x98, 0x1a, 0xa4, 0xde, 0xf7, + 0xb5, 0x2b, 0x68, 0x39, 0xbe, 0x7b, 0xaf, 0xb0, 0xd6, 0x6d, 0x57, 0xf7, + 0x29, 0xf0, 0xd6, 0x9b, 0x93, 0x4e, 0xea, 0xdb, 0xd8, 0x6b, 0x6b, 0xb5, + 0x86, 0xec, 0xf7, 0x1f, 0xdf, 0x6c, 0x83, 0x1c, 0x0a, 0x37, 0xd8, 0xc0, + 0xe9, 0xda, 0x0e, 0x4f, 0x39, 0x0a, 0xe5, 0x29, 0xdc, 0x26, 0x9a, 0x3a, + 0x72, 0x81, 0xb0, 0x25, 0x26, 0x8f, 0x68, 0x88, 0xc3, 0xac, 0x60, 0xc4, + 0xec, 0xe4, 0xcc, 0xa8, 0xa2, 0xe1, 0x6a, 0x7e, 0x10, 0xe7, 0xa3, 0xb9, + 0x98, 0xb8, 0xb0, 0xb7, 0x9d, 0xd9, 0x7e, 0xa8, 0x5d, 0xd1, 0x7e, 0x51, + 0xed, 0x26, 0x36, 0x7c, 0xb5, 0x61, 0x6c, 0xbe, 0x25, 0xac, 0x79, 0xe7, + 0xcb, 0x87, 0x1e, 0x89, 0x92, 0x9d, 0x4f, 0x8f, 0x8b, 0x6e, 0xb2, 0xc2, + 0x30, 0xef, 0x11, 0x2b, 0x2b, 0x2b, 0x28, 0x28, 0x2b, 0x2b, 0x2c, 0x10, + 0x50, 0x97, 0x3a, 0x47, 0x6d, 0x6a, 0xf4, 0x23, 0xe6, 0xcb, 0xf5, 0xe3, + 0x7e, 0xd8, 0xec, 0x7b, 0x15, 0x10, 0xbe, 0x17, 0x6b, 0x7e, 0xad, 0xd9, + 0x8e, 0x06, 0x7a, 0xf4, 0xaf, 0x32, 0xf6, 0x5f, 0x23, 0x7d, 0xd8, 0xce, + 0x59, 0xad, 0xbe, 0x97, 0x7d, 0x4b, 0xb5, 0x47, 0x3b, 0xdf, 0x8f, 0xaf, + 0xcd, 0xe7, 0xbe, 0x5a, 0x8d, 0x99, 0x86, 0xfa, 0xb2, 0xed, 0xd7, 0x1f, + 0xe8, 0xa3, 0xf8, 0x5d, 0x7c, 0xe2, 0xbe, 0xcd, 0x1f, 0xbd, 0x61, 0x9f, + 0x81, 0x95, 0x7f, 0x6b, 0x5a, 0x9e, 0xc6, 0x5a, 0x9b, 0xef, 0x56, 0x2d, + 0x51, 0xff, 0x46, 0x59, 0x6c, 0xfd, 0x66, 0x76, 0xc0, 0xa1, 0x6a, 0xe3, + 0xf3, 0x4a, 0x28, 0x3a, 0x74, 0xb2, 0xa2, 0xa2, 0x11, 0xc9, 0x2c, 0xc5, + 0x60, 0x97, 0xc5, 0x83, 0x03, 0x43, 0xb0, 0x22, 0x22, 0x28, 0x20, 0x85, + 0x61, 0xc2, 0x84, 0x31, 0x1c, 0x1b, 0x81, 0x01, 0x0c, 0x4c, 0x37, 0x2a, + 0x89, 0xa8, 0x08, 0x51, 0xfd, 0x56, 0x00, 0x0c, 0xba, 0x0b, 0x00, 0x31, + 0x00, 0xa5, 0xf0, 0x08, 0xa4, 0x80, 0x12, 0xd6, 0x18, 0x6a, 0x68, 0x29, + 0x96, 0x21, 0x97, 0x37, 0x76, 0x4c, 0x1d, 0x65, 0x43, 0x45, 0x8a, 0x48, + 0xf1, 0x61, 0x13, 0xa6, 0x69, 0x1a, 0x48, 0xc5, 0x38, 0xf6, 0xd0, 0x41, + 0x62, 0x44, 0x43, 0x8a, 0xa4, 0x92, 0x12, 0x55, 0xca, 0xa1, 0x81, 0x06, + 0x5d, 0xc0, 0xac, 0x1d, 0x5a, 0x91, 0x6e, 0xdb, 0x9c, 0xcf, 0x9b, 0x5a, + 0x5c, 0x67, 0x32, 0x4f, 0xf7, 0x03, 0x59, 0xb5, 0xe4, 0x67, 0xb4, 0x98, + 0xad, 0xa2, 0x52, 0xd6, 0x9a, 0xfe, 0x93, 0x4b, 0x25, 0x63, 0xc2, 0xce, + 0xa7, 0x7f, 0x1d, 0xec, 0x57, 0xef, 0x75, 0xe9, 0xa8, 0x10, 0x9c, 0x34, + 0xe1, 0xa7, 0x92, 0xe7, 0x79, 0x96, 0x34, 0x7d, 0x7b, 0xb5, 0x66, 0xba, + 0x7d, 0x5f, 0x36, 0xeb, 0x12, 0x1e, 0xf1, 0xf7, 0x0a, 0xd6, 0x95, 0xd4, + 0x8f, 0x6b, 0x7f, 0x3c, 0xf4, 0xcb, 0xdf, 0x58, 0x50, 0x60, 0xc5, 0xc4, + 0x6b, 0x4b, 0x24, 0x48, 0x73, 0x3a, 0xbc, 0xd8, 0xea, 0xf9, 0x9c, 0x1d, + 0x4e, 0xd2, 0xaa, 0x7f, 0x01, 0x1a, 0xf0, 0xc9, 0x62, 0xb3, 0x52, 0xea, + 0x85, 0xfc, 0xe6, 0x69, 0x56, 0x21, 0x68, 0x82, 0xfc, 0xb2, 0x53, 0x20, + 0x17, 0x04, 0xe1, 0x34, 0x9c, 0x78, 0x6f, 0x36, 0x3c, 0x84, 0xdb, 0x1b, + 0x40, 0x06, 0xd9, 0x00, 0x27, 0x22, 0x70, 0x47, 0x0a, 0xc7, 0x63, 0xf1, + 0xfc, 0x70, 0x29, 0x0f, 0xca, 0xec, 0xb3, 0xc6, 0x46, 0x97, 0x6d, 0xb6, + 0x53, 0x7b, 0x67, 0xd5, 0x3c, 0xff, 0xfb, 0xd4, 0x40, 0x6c, 0x09, 0x95, + 0xdb, 0x76, 0x38, 0x91, 0x29, 0x7b, 0x70, 0xb3, 0xae, 0xc7, 0x26, 0x31, + 0x2c, 0x6e, 0x17, 0x61, 0xd8, 0xe2, 0xc4, 0xa5, 0xed, 0xc2, 0xc7, 0xbb, + 0x1c, 0x48, 0xc4, 0xb1, 0xb8, 0x75, 0x52, 0xc4, 0x03, 0x90, 0x7c, 0x03, + 0x21, 0xb0, 0xb1, 0xc4, 0x48, 0xc4, 0x8c, 0x13, 0x2a, 0xb8, 0x59, 0x1c, + 0x14, 0x34, 0x49, 0x0a, 0x82, 0xc8, 0x68, 0xdb, 0x36, 0x81, 0x62, 0xf5, + 0xb9, 0x77, 0xb6, 0x8b, 0x28, 0x7b, 0xc9, 0x69, 0xeb, 0x9a, 0xbd, 0x1b, + 0xd8, 0x56, 0xc1, 0xf3, 0x66, 0xb1, 0xbc, 0x6d, 0x8f, 0xe6, 0xa0, 0x87, + 0x2b, 0x46, 0xb6, 0xb8, 0xfb, 0x1d, 0x78, 0x28, 0xfd, 0x36, 0x5c, 0xe8, + 0x9e, 0x75, 0x98, 0xa9, 0x6f, 0xe6, 0xae, 0xcb, 0x75, 0xae, 0x32, 0xcd, + 0xaf, 0x7b, 0x5f, 0xb3, 0xbf, 0x99, 0xbe, 0xd6, 0x7a, 0x6f, 0x0d, 0x36, + 0xf7, 0x7f, 0xd8, 0x9b, 0xef, 0xfd, 0xde, 0x6a, 0x69, 0x6a, 0xf4, 0x6b, + 0x59, 0xd9, 0xb3, 0x53, 0x8d, 0x34, 0xf4, 0x34, 0xe3, 0xee, 0x3d, 0x59, + 0xec, 0xb0, 0xf2, 0xd7, 0x60, 0x58, 0x7a, 0x94, 0xa6, 0x56, 0x36, 0x1e, + 0x09, 0xa7, 0x86, 0x76, 0x38, 0x5a, 0x74, 0x55, 0x27, 0x58, 0x5a, 0x22, + 0x30, 0x48, 0x10, 0xcc, 0x83, 0xd3, 0xaf, 0x55, 0x12, 0xf2, 0x5a, 0xff, + 0x0b, 0x52, 0xea, 0x24, 0x02, 0x01, 0xc5, 0x50, 0x8d, 0x72, 0x16, 0x68, + 0x12, 0x13, 0xb6, 0x76, 0x90, 0xa6, 0x8d, 0x56, 0x10, 0x9b, 0x67, 0x08, + 0x60, 0x48, 0xae, 0x90, 0x15, 0x54, 0x31, 0x25, 0xd5, 0xd0, 0x74, 0x8c, + 0x92, 0x20, 0xca, 0x47, 0x99, 0x44, 0x88, 0x94, 0xd9, 0xa1, 0x11, 0x0a, + 0xa8, 0x07, 0x85, 0x83, 0xe7, 0x50, 0xae, 0xb4, 0x5e, 0xc6, 0x79, 0x3d, + 0xe6, 0xae, 0xb3, 0x88, 0x0f, 0xb1, 0x66, 0x3a, 0x5a, 0x25, 0xb1, 0x8f, + 0x02, 0x6c, 0x63, 0xbe, 0xae, 0x3d, 0x23, 0x7d, 0xc2, 0xd6, 0xa0, 0xeb, + 0x5a, 0xa5, 0xab, 0x6a, 0x7d, 0xe7, 0x76, 0xd5, 0xb0, 0xff, 0xbd, 0xd6, + 0xef, 0x8c, 0x44, 0xb4, 0x39, 0x65, 0xb4, 0x08, 0x8e, 0x72, 0xd2, 0xf1, + 0xdc, 0xe6, 0xfa, 0x87, 0x59, 0xa9, 0x5a, 0x52, 0x91, 0xb4, 0xcb, 0xaf, + 0x8c, 0xf9, 0x2b, 0x6d, 0xc2, 0x78, 0xf9, 0xb3, 0x50, 0x33, 0x02, 0xb8, + 0xbe, 0xf1, 0xac, 0xc7, 0xf9, 0xf6, 0x6e, 0x89, 0xed, 0x69, 0x3d, 0xb5, + 0x23, 0x74, 0x76, 0xcb, 0x38, 0xc5, 0xb4, 0x48, 0x30, 0x64, 0x65, 0xb3, + 0xe4, 0xc1, 0xef, 0x73, 0x41, 0xa4, 0x96, 0x1f, 0x4a, 0xa6, 0x48, 0x84, + 0x84, 0xb8, 0x1c, 0x6c, 0x2d, 0x85, 0xb9, 0x30, 0xcc, 0x70, 0x17, 0x2a, + 0x3b, 0x67, 0x51, 0xb7, 0xa1, 0x4c, 0x3b, 0x9e, 0x26, 0x05, 0x41, 0x01, + 0x61, 0x80, 0xd8, 0xf8, 0x60, 0x94, 0x50, 0xdd, 0x8c, 0xcf, 0x16, 0x69, + 0x75, 0x9f, 0x16, 0x48, 0x6e, 0xd3, 0xc5, 0x29, 0x10, 0x69, 0x31, 0x7a, + 0x22, 0x34, 0x8d, 0x31, 0x38, 0x9c, 0x55, 0xd1, 0x12, 0x0a, 0x9a, 0x3a, + 0x4e, 0x04, 0x1a, 0x15, 0x22, 0x54, 0x2b, 0x5c, 0xb8, 0x60, 0x56, 0x4e, + 0xa3, 0xda, 0x74, 0xd9, 0x33, 0x5e, 0xe4, 0xdb, 0x9e, 0xfb, 0xe6, 0xdb, + 0x5a, 0xb9, 0xf5, 0xbe, 0xb6, 0x89, 0xaf, 0x9c, 0xff, 0xf7, 0xad, 0xba, + 0xc4, 0x53, 0x77, 0x3a, 0xf2, 0xdf, 0x7b, 0xb4, 0x9b, 0xdf, 0xd6, 0xd6, + 0x57, 0xf5, 0x9a, 0xc9, 0xcb, 0x75, 0xa5, 0xda, 0xde, 0xab, 0x21, 0xd7, + 0x3d, 0xdf, 0x62, 0xed, 0xf3, 0x3a, 0xc5, 0x1d, 0xb4, 0x58, 0xcd, 0x2b, + 0x56, 0xae, 0xba, 0xce, 0xbd, 0x9b, 0x9b, 0x4a, 0x5b, 0x72, 0xf9, 0xfd, + 0x06, 0x59, 0x9a, 0xd2, 0xef, 0x46, 0xc5, 0xbd, 0x09, 0xea, 0x2d, 0x65, + 0xb8, 0x4d, 0x54, 0x29, 0x2e, 0x43, 0x2e, 0xc2, 0x8d, 0x6b, 0x01, 0xe1, + 0xc1, 0xc0, 0xbe, 0x32, 0xdb, 0xa3, 0x03, 0xe5, 0x45, 0x51, 0xf0, 0xc9, + 0x51, 0x20, 0x6e, 0x60, 0x57, 0x24, 0x0f, 0xe9, 0x04, 0x21, 0x18, 0x9b, + 0xe7, 0x41, 0x33, 0xf7, 0x52, 0x00, 0x3f, 0x20, 0x01, 0x94, 0x16, 0x0d, + 0x02, 0x05, 0xd7, 0x40, 0x19, 0x66, 0x00, 0x42, 0x16, 0x91, 0x49, 0x78, + 0x4a, 0x68, 0x6b, 0x11, 0xb2, 0x5c, 0x56, 0xc1, 0xe3, 0xa2, 0x82, 0x82, + 0x80, 0xf8, 0xe9, 0x11, 0x30, 0x2a, 0x70, 0x3c, 0x46, 0x69, 0x30, 0x4c, + 0xec, 0x4c, 0xc8, 0xaa, 0xa1, 0xbf, 0xe6, 0xda, 0x25, 0xd8, 0x4a, 0x5d, + 0x22, 0x46, 0x9b, 0xc7, 0xe0, 0x82, 0xf4, 0xde, 0xea, 0xde, 0xac, 0xc5, + 0x76, 0x3f, 0xad, 0x48, 0x76, 0x6e, 0xc3, 0x48, 0x56, 0xe6, 0xe0, 0xcb, + 0x55, 0xa8, 0xf6, 0x66, 0x28, 0x1d, 0xe8, 0x36, 0xb6, 0x6f, 0xad, 0x36, + 0x98, 0x5b, 0x6a, 0xd5, 0xad, 0xa9, 0xef, 0xdb, 0xbf, 0x67, 0x65, 0x6d, + 0x9f, 0x65, 0xb8, 0x9d, 0xa3, 0x73, 0x1c, 0xf4, 0x14, 0xde, 0x9d, 0xbe, + 0xdb, 0xbd, 0xa9, 0xeb, 0x37, 0x57, 0x5c, 0x8f, 0xd6, 0x31, 0x8f, 0xe4, + 0x7f, 0x93, 0xf3, 0x1e, 0xd6, 0x66, 0x1b, 0xcd, 0x20, 0x45, 0xdd, 0x66, + 0xe2, 0x58, 0xb5, 0x60, 0xe0, 0xa9, 0xca, 0xc0, 0xda, 0xce, 0x5e, 0x38, + 0x0f, 0x03, 0xe9, 0xc2, 0xb3, 0xb2, 0x19, 0x2e, 0x03, 0x64, 0x45, 0xf1, + 0x50, 0x9c, 0x18, 0x2a, 0x43, 0x1f, 0x46, 0xb3, 0x92, 0x43, 0xa2, 0x01, + 0x91, 0xfa, 0x38, 0x6e, 0x00, 0x6f, 0xa0, 0x03, 0xd1, 0x70, 0xeb, 0x84, + 0x40, 0x9b, 0x60, 0xd1, 0x32, 0x22, 0x43, 0x33, 0x7c, 0xd5, 0xcc, 0x27, + 0x6d, 0xb5, 0x8f, 0x58, 0xa6, 0x8b, 0x18, 0x8c, 0x4d, 0x2c, 0x5d, 0x09, + 0x30, 0xc8, 0x6c, 0xb3, 0x24, 0xff, 0xfb, 0xd4, 0x40, 0x6c, 0x09, 0xd5, + 0x97, 0x76, 0x38, 0xb1, 0x29, 0x63, 0x70, 0xb0, 0xae, 0xc7, 0x26, 0x25, + 0x2c, 0x6e, 0x16, 0xdd, 0xd8, 0xe0, 0x47, 0xa5, 0x8d, 0xc3, 0x0a, 0xbb, + 0x1c, 0x08, 0xc4, 0xbd, 0xb8, 0xd0, 0x21, 0x51, 0xb6, 0xac, 0x88, 0x3f, + 0x4f, 0x15, 0x93, 0x14, 0x5c, 0x1a, 0x5b, 0x91, 0x34, 0xda, 0x65, 0x11, + 0x2f, 0x5e, 0x67, 0xc7, 0xab, 0xdc, 0x3f, 0x5a, 0xc9, 0x8a, 0xc6, 0xba, + 0xd4, 0xe6, 0xfb, 0xab, 0xbd, 0x0e, 0xd2, 0x29, 0xe7, 0x3a, 0x66, 0x72, + 0x97, 0xa4, 0xcd, 0xab, 0xb5, 0xcc, 0xef, 0xf8, 0xf3, 0x7b, 0x6c, 0xec, + 0x75, 0xd7, 0x63, 0x9f, 0x98, 0xed, 0xf7, 0x98, 0xaa, 0xb6, 0x6f, 0xbf, + 0xd5, 0xaf, 0x4d, 0xfe, 0xb9, 0xbb, 0x31, 0x76, 0x5a, 0xb1, 0x37, 0x6b, + 0xad, 0xdf, 0xe8, 0xab, 0x1f, 0xf3, 0xdd, 0xff, 0x1c, 0xc1, 0x0f, 0xde, + 0xdf, 0x8b, 0x2d, 0x94, 0x98, 0x3a, 0xab, 0xe2, 0xf5, 0xf5, 0xa6, 0x7a, + 0xec, 0x3b, 0x10, 0x99, 0x52, 0x75, 0x45, 0x81, 0xd9, 0x99, 0xf9, 0x81, + 0xf9, 0xba, 0x95, 0xe9, 0xca, 0xa5, 0x64, 0x32, 0xb8, 0xc8, 0x3c, 0xa9, + 0x39, 0x71, 0x64, 0x4f, 0x2c, 0x1d, 0x92, 0x0f, 0x09, 0x60, 0x91, 0x35, + 0xfa, 0x52, 0x6f, 0x09, 0xb8, 0x99, 0x46, 0x53, 0xae, 0xd3, 0x67, 0x2a, + 0xa1, 0x89, 0x99, 0x4d, 0x79, 0xaf, 0x69, 0x96, 0x44, 0x44, 0xe5, 0x25, + 0xf1, 0x56, 0xc9, 0x49, 0x10, 0x0f, 0x0f, 0x83, 0x2c, 0x64, 0x8a, 0x89, + 0xec, 0x14, 0x12, 0x30, 0xf4, 0xc8, 0xb4, 0xf1, 0x12, 0x84, 0x44, 0xa2, + 0x9a, 0x82, 0x31, 0x47, 0x32, 0x9a, 0x09, 0x15, 0xbc, 0x59, 0xbf, 0x73, + 0xab, 0xe7, 0xd5, 0x95, 0xb7, 0xbc, 0x55, 0xda, 0x3f, 0xbd, 0xd4, 0x87, + 0x1c, 0xcb, 0xd7, 0xdb, 0xae, 0xf3, 0x5d, 0x04, 0x35, 0x7e, 0x18, 0x5f, + 0xb4, 0xc2, 0xdd, 0xec, 0xdc, 0xd2, 0x3f, 0x6d, 0xfc, 0xc5, 0xbc, 0xb3, + 0xf1, 0x14, 0xb1, 0x37, 0x66, 0x8f, 0x3f, 0x7b, 0x5e, 0x06, 0xbd, 0x9a, + 0x7a, 0xc5, 0xd4, 0xaf, 0x41, 0x76, 0x23, 0x65, 0xf5, 0xae, 0x5c, 0xf6, + 0x3c, 0x96, 0xf5, 0x87, 0x5e, 0xd8, 0xad, 0x4b, 0x75, 0x25, 0x2e, 0x34, + 0xca, 0x7b, 0x47, 0x1f, 0x59, 0xd3, 0xbf, 0xad, 0x2f, 0x64, 0x8a, 0xcd, + 0xa3, 0x2d, 0x15, 0x11, 0x38, 0xbd, 0x6a, 0x92, 0xb6, 0xaf, 0x31, 0x05, + 0x9f, 0xb8, 0x4a, 0x44, 0x2e, 0x8e, 0x67, 0x51, 0x9d, 0x84, 0x50, 0x9b, + 0x8a, 0x01, 0x46, 0x89, 0x41, 0xb1, 0x88, 0x52, 0x1c, 0x8e, 0xa7, 0x89, + 0x40, 0x90, 0x93, 0xf5, 0x44, 0xe1, 0x4c, 0x28, 0x3a, 0x01, 0xc5, 0x25, + 0x0a, 0x5a, 0x38, 0x6a, 0x22, 0xa1, 0x58, 0xbc, 0xc8, 0xc9, 0xc9, 0x4f, + 0x0a, 0x24, 0xf4, 0xc1, 0xc1, 0x08, 0x81, 0xb1, 0x29, 0x82, 0x01, 0x19, + 0x60, 0x33, 0x14, 0x08, 0xce, 0x89, 0x46, 0xe8, 0x04, 0xb9, 0x8d, 0x16, + 0x12, 0x0a, 0x51, 0x93, 0x14, 0x30, 0x2b, 0x22, 0x45, 0x48, 0x99, 0x16, + 0x3c, 0x20, 0x27, 0x22, 0xb4, 0xb5, 0xc6, 0x6b, 0x8c, 0x56, 0x35, 0xab, + 0xb8, 0xb1, 0x35, 0x77, 0x56, 0x9d, 0xf6, 0x1e, 0xbc, 0xb4, 0x0b, 0x37, + 0x5e, 0x04, 0x7a, 0xfb, 0x52, 0x98, 0x92, 0xb9, 0x83, 0x36, 0x6d, 0xbd, + 0x66, 0x1f, 0xf9, 0xad, 0xa3, 0x65, 0xbe, 0xfa, 0x93, 0x36, 0xa5, 0xfe, + 0x66, 0xf1, 0x26, 0x96, 0x66, 0x2a, 0xd7, 0x73, 0xbc, 0xdc, 0x06, 0xb9, + 0xad, 0x01, 0xca, 0x78, 0x30, 0x21, 0xc9, 0x5d, 0x6e, 0x1b, 0xdd, 0xd3, + 0x1a, 0x89, 0x12, 0x35, 0x67, 0xa6, 0xbe, 0xfe, 0xed, 0x17, 0x71, 0x22, + 0x57, 0x70, 0x60, 0xed, 0xfe, 0x69, 0x7a, 0x40, 0xcb, 0xd7, 0xb0, 0x2c, + 0xfe, 0xec, 0x51, 0x3d, 0xee, 0xe0, 0xbb, 0x9d, 0x97, 0x0d, 0xee, 0xdb, + 0x91, 0xea, 0x76, 0xa5, 0x5c, 0x54, 0x79, 0x98, 0xa4, 0x53, 0xa3, 0xe2, + 0x25, 0x55, 0xb3, 0x1e, 0x4f, 0x8e, 0xf2, 0xe2, 0x2d, 0xa5, 0xa4, 0x71, + 0x8a, 0xa8, 0x30, 0x99, 0xa0, 0xba, 0x09, 0x00, 0x09, 0xb3, 0x0a, 0x1b, + 0x01, 0xc4, 0x47, 0xa0, 0xc7, 0xcd, 0xb0, 0xe4, 0x4d, 0xda, 0x99, 0x0d, + 0xa7, 0x09, 0x0d, 0x0a, 0xb0, 0xb2, 0xea, 0xf4, 0xb2, 0x18, 0x55, 0x35, + 0x69, 0xb7, 0x2c, 0x78, 0x94, 0x96, 0xd4, 0x30, 0x8c, 0xc8, 0x30, 0x3e, + 0xab, 0x42, 0x82, 0xa1, 0x90, 0xa1, 0x76, 0x01, 0xf1, 0x4a, 0xf3, 0x3d, + 0x24, 0x44, 0xa5, 0x7f, 0xa2, 0xa7, 0x4a, 0xeb, 0x7b, 0x4d, 0x59, 0xdf, + 0x62, 0x8e, 0x3d, 0xcb, 0x19, 0xba, 0xf6, 0xfa, 0x77, 0x7d, 0xbd, 0x86, + 0xdc, 0xeb, 0x8f, 0xab, 0xb3, 0x33, 0xd2, 0xe4, 0x4f, 0x7f, 0x7f, 0xae, + 0x9a, 0x44, 0xeb, 0x74, 0x8e, 0x76, 0xab, 0xf1, 0x6e, 0x23, 0x6f, 0xe6, + 0xf0, 0xff, 0xb0, 0x53, 0xe6, 0x74, 0xb4, 0xe6, 0x3f, 0x7f, 0xf7, 0x6e, + 0xdc, 0xba, 0xee, 0xac, 0x8d, 0xf8, 0x62, 0xa7, 0xdd, 0x87, 0xe0, 0xeb, + 0x2a, 0x83, 0xb6, 0xeb, 0x5a, 0xcb, 0x59, 0xf9, 0xbd, 0x25, 0x63, 0xb6, + 0x89, 0x42, 0xcb, 0xb4, 0x76, 0x9d, 0x86, 0x0e, 0x8e, 0xd9, 0x68, 0x5d, + 0x72, 0xb8, 0x94, 0x51, 0x2a, 0x88, 0xe4, 0x60, 0x2e, 0x64, 0x3b, 0xb0, + 0x40, 0x25, 0x02, 0xc8, 0xe3, 0x4c, 0x53, 0x09, 0x40, 0x14, 0x3c, 0x11, + 0x8b, 0x05, 0xd0, 0x66, 0x70, 0x15, 0x83, 0x87, 0x62, 0x50, 0xfc, 0x0a, + 0x89, 0x07, 0x8a, 0x96, 0x40, 0x03, 0xf2, 0xeb, 0x0e, 0xa2, 0x2c, 0x30, + 0x29, 0x50, 0x1b, 0x15, 0x21, 0x26, 0x35, 0x1b, 0x5d, 0xb4, 0x73, 0x69, + 0x78, 0x1f, 0x9c, 0xa9, 0x38, 0xff, 0xfb, 0xd4, 0x40, 0x6b, 0x8d, 0x95, + 0xea, 0x76, 0x37, 0x91, 0xe9, 0x63, 0x70, 0xbf, 0xce, 0xb7, 0x02, 0x25, + 0x2f, 0x6e, 0x55, 0xe5, 0xd6, 0xe0, 0x44, 0xb1, 0x8d, 0xca, 0xa3, 0xbb, + 0x1c, 0x58, 0x94, 0xb1, 0xb8, 0x8e, 0x1a, 0x99, 0x31, 0x1a, 0x16, 0x92, + 0x50, 0xc2, 0x86, 0x66, 0x7c, 0x4a, 0x04, 0x96, 0x3c, 0xd1, 0xc5, 0x0e, + 0x91, 0x9b, 0x42, 0xb9, 0xe4, 0x0a, 0xd4, 0x51, 0x14, 0x9d, 0x21, 0xd6, + 0xed, 0xb2, 0xe5, 0xe5, 0x77, 0xb8, 0xf0, 0x71, 0x8c, 0x52, 0x2c, 0x07, + 0xba, 0xd5, 0xa0, 0x40, 0xa5, 0x1d, 0xd2, 0xf2, 0xc9, 0xbb, 0x6a, 0xcd, + 0x9e, 0xb3, 0x6e, 0x5a, 0xc4, 0x92, 0x5d, 0xc4, 0x82, 0xf6, 0x07, 0xd3, + 0x56, 0x61, 0xbe, 0xac, 0x4b, 0x5b, 0x71, 0x26, 0x85, 0x9a, 0xfb, 0x4f, + 0x3d, 0x37, 0xe2, 0x6a, 0xd5, 0x81, 0x57, 0xd1, 0x37, 0x89, 0xe9, 0x0a, + 0xf6, 0x7d, 0x16, 0xf0, 0x9b, 0xef, 0x07, 0x1a, 0xbc, 0xb9, 0x8d, 0x4d, + 0x39, 0xdf, 0xf7, 0xf5, 0x87, 0x3d, 0x71, 0xa9, 0x35, 0x47, 0xd4, 0x84, + 0xf6, 0xf7, 0xdc, 0x1f, 0x67, 0x92, 0x45, 0xdd, 0x1f, 0x2e, 0x70, 0x93, + 0x91, 0x64, 0xea, 0x42, 0x97, 0x4a, 0xf8, 0x27, 0xeb, 0x6a, 0x06, 0x39, + 0xce, 0x87, 0x29, 0x91, 0xe8, 0x41, 0xb0, 0xe6, 0xa0, 0x24, 0x6d, 0xca, + 0x03, 0xc2, 0x39, 0xdc, 0xaa, 0x32, 0xd9, 0x0d, 0xe3, 0x40, 0x91, 0xb7, + 0xa3, 0x1b, 0x17, 0xe9, 0x1d, 0xca, 0x18, 0x0f, 0x93, 0x98, 0x27, 0x15, + 0x9e, 0x67, 0x71, 0x73, 0x74, 0x56, 0x7e, 0xb5, 0x67, 0xb0, 0xc1, 0xa5, + 0xa1, 0x9e, 0xe5, 0xe0, 0x80, 0x76, 0x1e, 0xf1, 0x9a, 0x75, 0xad, 0xaa, + 0x2d, 0x94, 0xec, 0xd7, 0x40, 0xbb, 0x5d, 0x52, 0xa4, 0xb2, 0xc9, 0x76, + 0xa9, 0x19, 0xad, 0x3b, 0xaa, 0xea, 0xc7, 0xfd, 0x0a, 0xd5, 0xa5, 0xaf, + 0x37, 0x57, 0x96, 0xdb, 0xb3, 0x36, 0xb9, 0xeb, 0x6d, 0x6a, 0x5f, 0xe8, + 0x6f, 0x6b, 0x5d, 0xcf, 0x82, 0x6b, 0xbd, 0xad, 0x7a, 0xb6, 0xd9, 0x83, + 0x29, 0x4f, 0xc8, 0x29, 0x4a, 0x52, 0xb3, 0x75, 0xbf, 0x67, 0x79, 0xfc, + 0xca, 0x23, 0xe5, 0xd6, 0x76, 0xd6, 0xb3, 0x5f, 0x77, 0x91, 0xe3, 0xd4, + 0xed, 0xec, 0xad, 0xfd, 0x93, 0xe8, 0x79, 0x24, 0x1f, 0x0e, 0x74, 0x30, + 0xcd, 0x3b, 0x32, 0xb3, 0xb7, 0xc6, 0x69, 0x4d, 0x96, 0x5f, 0xcf, 0xf6, + 0x1d, 0x63, 0x5a, 0x5b, 0xf5, 0xb3, 0x19, 0x02, 0xf5, 0xe5, 0x4f, 0x34, + 0xa3, 0x86, 0x06, 0xd1, 0x2d, 0x19, 0x01, 0xa2, 0xc3, 0xa6, 0x02, 0x1c, + 0x65, 0xda, 0x30, 0x2a, 0x00, 0x75, 0x4b, 0xc0, 0xd1, 0x7d, 0xd3, 0x91, + 0xc5, 0x00, 0x71, 0x0f, 0x4a, 0xe4, 0x01, 0xf1, 0xe6, 0x44, 0x05, 0xa4, + 0xf6, 0x88, 0x98, 0x74, 0xa8, 0xd3, 0x02, 0x51, 0x09, 0x21, 0x43, 0xe5, + 0x1a, 0x47, 0x34, 0x9e, 0xa3, 0x3d, 0x67, 0x46, 0x94, 0x45, 0xa6, 0x92, + 0xb8, 0xa1, 0x7c, 0x8e, 0x93, 0xad, 0x33, 0xa4, 0xb1, 0x3f, 0x2e, 0xaa, + 0xe2, 0x89, 0xb6, 0x1e, 0x51, 0xba, 0x23, 0x41, 0xea, 0xe4, 0xa4, 0xb6, + 0xdd, 0x04, 0x5b, 0x33, 0xb9, 0xb9, 0xd7, 0x86, 0xf7, 0xcf, 0x76, 0xfe, + 0xf5, 0x1d, 0xb2, 0xda, 0x7c, 0xd2, 0x9d, 0xff, 0xd9, 0x5a, 0x6f, 0x31, + 0xb0, 0xe5, 0x2a, 0xcb, 0x1f, 0x06, 0xd7, 0xad, 0x4e, 0x99, 0x9b, 0x5a, + 0xf9, 0x90, 0x4b, 0x73, 0x66, 0xb9, 0xbe, 0xeb, 0x55, 0xfc, 0x6a, 0xbd, + 0x14, 0x2e, 0x3f, 0x34, 0xbb, 0xfc, 0xf6, 0xcf, 0x6b, 0xfc, 0xd6, 0x5e, + 0xf3, 0x6b, 0x47, 0x9f, 0xfd, 0x4d, 0xbd, 0x98, 0xcc, 0xab, 0x8c, 0xfc, + 0x57, 0xae, 0xd6, 0xb5, 0x71, 0x67, 0x3d, 0x2b, 0xce, 0xd6, 0xa2, 0x48, + 0xf3, 0x71, 0x13, 0x8b, 0x95, 0x4e, 0x78, 0x5a, 0x24, 0x1d, 0x94, 0x50, + 0x4e, 0x83, 0x81, 0xf0, 0x7b, 0x3c, 0x11, 0xd6, 0x14, 0xd7, 0x9c, 0x83, + 0x41, 0x29, 0x92, 0x61, 0xf0, 0x12, 0x35, 0x80, 0x7a, 0x83, 0xa2, 0x4c, + 0x41, 0x29, 0x00, 0x08, 0xa5, 0xb6, 0x49, 0x02, 0x21, 0x64, 0xe0, 0xae, + 0x5d, 0x1f, 0xce, 0x84, 0x91, 0x93, 0x8b, 0x3b, 0x2d, 0x13, 0x70, 0x7a, + 0x39, 0x94, 0x8d, 0x05, 0x72, 0x71, 0x52, 0xa1, 0x68, 0x85, 0xd1, 0x90, + 0x30, 0x44, 0x3a, 0x14, 0x27, 0x27, 0x55, 0xf2, 0x3c, 0x58, 0xf8, 0x8e, + 0xc9, 0x98, 0x14, 0x40, 0xdd, 0x37, 0x34, 0x13, 0xbe, 0x6f, 0x4a, 0xc3, + 0xa4, 0x48, 0xb0, 0xf5, 0x6a, 0xea, 0xf8, 0x67, 0xae, 0xbb, 0xaa, 0xc6, + 0xdc, 0x29, 0xf7, 0xbc, 0x4d, 0x1e, 0x34, 0x2c, 0xdf, 0x78, 0xc3, 0xfa, + 0x7b, 0xea, 0x16, 0xfb, 0xda, 0xde, 0x5c, 0xdf, 0xc9, 0xac, 0x46, 0x7d, + 0x0a, 0x3c, 0xb1, 0x21, 0x7c, 0x6a, 0xfa, 0xf5, 0xcc, 0x0d, 0x56, 0x25, + 0x73, 0x47, 0xcd, 0xd7, 0xee, 0x4e, 0xde, 0xea, 0x79, 0xab, 0x69, 0x23, + 0xc6, 0xa4, 0x2a, 0xdf, 0xef, 0x73, 0x6b, 0x2c, 0x5b, 0x82, 0xff, 0x7b, + 0x70, 0xbf, 0xf0, 0xf3, 0x7a, 0x3d, 0xac, 0x46, 0xa8, 0xd1, 0xad, 0x7b, + 0x61, 0xf6, 0xde, 0x40, 0xa2, 0xd4, 0x68, 0x6c, 0xea, 0x37, 0x53, 0xbc, + 0x5e, 0x3d, 0x94, 0xaa, 0xa8, 0x24, 0xad, 0x99, 0x00, 0xc8, 0xb2, 0xc2, + 0xad, 0x4c, 0xa1, 0x25, 0x8d, 0xa9, 0x4e, 0x99, 0xc1, 0x52, 0x8b, 0xb9, + 0x2a, 0x43, 0x49, 0x29, 0x31, 0x25, 0x49, 0x72, 0xfe, 0x7a, 0xad, 0x47, + 0x59, 0x00, 0x0f, 0xd7, 0xe3, 0x2d, 0x19, 0x4d, 0xc4, 0xd2, 0x33, 0x31, + 0x96, 0xf9, 0x5b, 0x03, 0x08, 0x51, 0x14, 0xb6, 0x5c, 0xb8, 0x98, 0xdb, + 0x48, 0x15, 0x52, 0x8c, 0x8e, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0f, 0xd5, + 0xf8, 0x76, 0x37, 0x91, 0x89, 0x7b, 0x70, 0xbe, 0x0e, 0xb6, 0xf2, 0x3d, + 0x2f, 0x6e, 0x57, 0x81, 0xda, 0xde, 0x06, 0x25, 0xed, 0xc2, 0xa0, 0xbb, + 0x1c, 0x08, 0xc4, 0xb1, 0xb8, 0x4a, 0x64, 0x50, 0x52, 0x21, 0x2b, 0x8b, + 0x09, 0x30, 0xd0, 0x5c, 0x42, 0xf6, 0xc8, 0x81, 0xe3, 0x02, 0x8e, 0x21, + 0x63, 0x13, 0x25, 0x61, 0xa7, 0xa2, 0x71, 0x49, 0x63, 0xdd, 0xec, 0x0f, + 0xf7, 0x7c, 0x7b, 0x6e, 0x03, 0xdb, 0xc3, 0xbe, 0xad, 0x34, 0xb2, 0xc7, + 0x92, 0x7b, 0x56, 0x2d, 0xe0, 0x6e, 0xb1, 0x75, 0xfc, 0x90, 0xd8, 0x69, + 0xeb, 0x0b, 0x19, 0x6b, 0xdd, 0xb1, 0x35, 0xa9, 0xe0, 0x42, 0x96, 0x25, + 0xe3, 0x47, 0xd4, 0x0a, 0x56, 0x93, 0x6d, 0xf7, 0x85, 0x8b, 0xd3, 0x5a, + 0xae, 0xa3, 0x3e, 0xc5, 0xeb, 0x67, 0xb3, 0x49, 0x78, 0x56, 0x85, 0xb8, + 0xf2, 0x62, 0x8f, 0xa6, 0x7f, 0x69, 0x3e, 0xad, 0x88, 0xd1, 0x2d, 0x4c, + 0x45, 0xf1, 0xde, 0xd7, 0xbd, 0xa6, 0x5c, 0x64, 0xdc, 0x59, 0x99, 0x63, + 0x3f, 0xce, 0x64, 0x87, 0xd8, 0x55, 0xfb, 0x55, 0xb7, 0xb6, 0xa8, 0xd8, + 0xd5, 0x07, 0xb4, 0x32, 0xde, 0xb4, 0x8c, 0x3c, 0xd8, 0x46, 0x3b, 0xd7, + 0xe5, 0xb7, 0x2d, 0xdb, 0x54, 0x38, 0x24, 0x99, 0x59, 0x1f, 0xa2, 0x89, + 0xa5, 0x98, 0x14, 0xa7, 0x69, 0xca, 0x8f, 0x46, 0xb1, 0x0f, 0x8a, 0x53, + 0x61, 0x28, 0x44, 0x1f, 0xc5, 0x97, 0x23, 0xc2, 0x7a, 0x42, 0x56, 0xc4, + 0xda, 0x30, 0x75, 0x49, 0xb4, 0xb1, 0x81, 0x0a, 0x02, 0x66, 0x51, 0xb4, + 0xcc, 0xee, 0x09, 0x64, 0x0a, 0x82, 0x4a, 0x06, 0x47, 0x1e, 0xc1, 0x40, + 0xf5, 0xa1, 0x88, 0x84, 0x54, 0x29, 0x24, 0x38, 0x29, 0xc4, 0x2b, 0x5a, + 0x18, 0xa0, 0x27, 0x45, 0x69, 0xed, 0x7a, 0xe6, 0x7b, 0x6b, 0xbd, 0xc5, + 0x61, 0x5a, 0xf0, 0xe3, 0xf7, 0xdb, 0xa3, 0xc9, 0x3d, 0xe3, 0x31, 0x6e, + 0x3f, 0x9f, 0x59, 0xf9, 0xfb, 0xc6, 0x60, 0xd6, 0x0c, 0x09, 0xf1, 0x49, + 0x71, 0x6a, 0xc9, 0xfe, 0x69, 0x89, 0xa2, 0x5a, 0x78, 0x9e, 0x13, 0x1e, + 0x61, 0x5b, 0x5b, 0xac, 0x48, 0x14, 0x8d, 0x7b, 0xdf, 0xfa, 0x4d, 0xb8, + 0xd6, 0x89, 0x97, 0x59, 0xbc, 0x78, 0xd7, 0x87, 0x03, 0x19, 0x9e, 0x04, + 0xce, 0x30, 0x73, 0x59, 0x20, 0xcf, 0x12, 0x06, 0xf0, 0xfe, 0x15, 0x33, + 0x69, 0x75, 0x02, 0xd4, 0x8d, 0x19, 0xb9, 0xc6, 0x8f, 0xe9, 0xbe, 0xf5, + 0x96, 0x92, 0x2e, 0x99, 0xd5, 0x33, 0x3f, 0x39, 0xb2, 0xc7, 0x01, 0x5f, + 0x44, 0xba, 0x51, 0x38, 0x49, 0x65, 0x8e, 0x49, 0x17, 0x2a, 0x87, 0x5e, + 0x29, 0x4a, 0xba, 0x52, 0x1e, 0xc4, 0xa0, 0xca, 0x43, 0x95, 0x8e, 0x99, + 0x53, 0xa7, 0x3a, 0xfb, 0xb8, 0xfb, 0x79, 0x27, 0x4f, 0xf0, 0x0b, 0xb8, + 0x20, 0xb2, 0x5d, 0x23, 0xda, 0xf1, 0xc1, 0xe5, 0x5c, 0xe9, 0xa7, 0x51, + 0x8b, 0x17, 0x48, 0x15, 0x85, 0x21, 0x3f, 0xa9, 0xac, 0x81, 0xe8, 0x12, + 0x11, 0x87, 0x85, 0x88, 0x81, 0x2e, 0x1e, 0x61, 0x56, 0x51, 0x34, 0x5a, + 0xa4, 0xca, 0x08, 0xf6, 0x8a, 0xc6, 0x6b, 0xb5, 0x6a, 0x74, 0x51, 0x65, + 0xab, 0x97, 0xa5, 0xa7, 0xaf, 0x6b, 0x33, 0x7a, 0xff, 0xc1, 0xb6, 0xdc, + 0xec, 0x6f, 0x27, 0x9d, 0xbb, 0x57, 0xcc, 0xa3, 0x2b, 0x66, 0x3c, 0xbd, + 0x6b, 0x35, 0xa7, 0x6d, 0xba, 0x5e, 0xe7, 0x7d, 0x8c, 0xbd, 0x2b, 0x6f, + 0x97, 0xe8, 0xde, 0x67, 0xff, 0xae, 0x7a, 0xfb, 0x4b, 0x67, 0xf6, 0x56, + 0x9d, 0x3d, 0x8f, 0x6f, 0xcd, 0xf2, 0xb7, 0xa3, 0x37, 0xb7, 0xd3, 0xa9, + 0x68, 0xe9, 0x7a, 0x76, 0xad, 0xa6, 0x3b, 0x9d, 0xdb, 0xee, 0x45, 0xb7, + 0xb2, 0xeb, 0x21, 0x6d, 0x98, 0x2a, 0x93, 0x87, 0xc4, 0xa6, 0x34, 0x12, + 0xd3, 0xb6, 0x3a, 0x17, 0x90, 0x99, 0x09, 0x9f, 0x3a, 0x46, 0x55, 0x61, + 0x82, 0xc9, 0x6c, 0x70, 0x12, 0x47, 0xd1, 0x29, 0x7b, 0x69, 0xcc, 0x43, + 0xe3, 0x55, 0xc5, 0x73, 0x74, 0xf1, 0xd5, 0xe0, 0x1d, 0x7a, 0x68, 0x0f, + 0x02, 0xc9, 0xc2, 0x22, 0x95, 0x81, 0xf4, 0xd1, 0x5a, 0xa8, 0x50, 0x17, + 0x28, 0xa0, 0x58, 0xdb, 0x91, 0xad, 0x19, 0x90, 0xd9, 0xb7, 0x94, 0x06, + 0xc8, 0x14, 0x99, 0x52, 0x28, 0x52, 0x4c, 0x28, 0x44, 0x8b, 0x51, 0x1e, + 0xea, 0x0c, 0x09, 0xf6, 0x17, 0xd8, 0x43, 0xe1, 0x36, 0x17, 0x5a, 0x94, + 0xcc, 0x0b, 0xc5, 0x6b, 0x6f, 0xc4, 0x59, 0x5f, 0xb2, 0xfb, 0xcf, 0x48, + 0x34, 0x83, 0x1a, 0x26, 0xb5, 0x8a, 0x4b, 0x33, 0x2c, 0x58, 0x97, 0x96, + 0x25, 0xb6, 0xf3, 0x50, 0xb5, 0x0a, 0x4e, 0xe2, 0xe5, 0xa9, 0x1b, 0x2f, + 0x03, 0x71, 0xe1, 0xc0, 0x7d, 0x0d, 0xed, 0x9f, 0x63, 0x31, 0x77, 0xab, + 0xbb, 0xa3, 0xdb, 0xcb, 0x25, 0x26, 0xcd, 0x7f, 0xc7, 0x7b, 0x87, 0xd9, + 0xcd, 0xeb, 0x8b, 0x76, 0xd9, 0xb1, 0x03, 0x13, 0xda, 0x98, 0x9a, 0x34, + 0x59, 0xde, 0xea, 0x4b, 0xcb, 0x9c, 0x49, 0x12, 0x90, 0xdc, 0xe1, 0xb3, + 0x4e, 0xea, 0xb1, 0x60, 0xd6, 0x58, 0x5a, 0x79, 0xe1, 0xd9, 0xc1, 0x75, + 0x55, 0xdb, 0x31, 0xc0, 0xe4, 0xa1, 0x8d, 0x09, 0x5f, 0x11, 0x44, 0xc4, + 0xd4, 0xe6, 0x88, 0x44, 0x13, 0xf5, 0x99, 0xd1, 0xa2, 0xde, 0x55, 0xa7, + 0xd1, 0x8a, 0xc4, 0x34, 0xc6, 0x3b, 0x9a, 0x10, 0xe6, 0xca, 0xbd, 0x3f, + 0x12, 0x27, 0x1a, 0x5a, 0x13, 0x24, 0x0d, 0x0c, 0x00, 0x04, 0xc9, 0x60, + 0x26, 0x56, 0x3a, 0x3e, 0x4a, 0x2c, 0x0f, 0xa7, 0xb0, 0x42, 0x7c, 0xd3, + 0x0e, 0x26, 0xc8, 0xac, 0xbd, 0xff, 0xfb, 0xd4, 0x40, 0x6b, 0x09, 0xd6, + 0x01, 0x76, 0x37, 0x09, 0x29, 0x7b, 0x70, 0xc4, 0x0e, 0xb6, 0xe2, 0x31, + 0x8f, 0x6e, 0x53, 0x3d, 0xd6, 0xe2, 0xc4, 0xa5, 0x0d, 0xca, 0x71, 0x3a, + 0x9c, 0x48, 0x94, 0xad, 0xb9, 0x53, 0x8f, 0x3c, 0x7e, 0x78, 0xd3, 0x0a, + 0x4e, 0x1b, 0x52, 0xd5, 0xa8, 0xd9, 0x53, 0x0f, 0x2d, 0x5a, 0xba, 0x66, + 0xdb, 0x50, 0x3a, 0x35, 0x16, 0xdb, 0x78, 0xdb, 0x58, 0x6f, 0x68, 0xc5, + 0xac, 0xf7, 0xd3, 0x5b, 0x5d, 0x63, 0xaf, 0xe2, 0x91, 0x23, 0xc7, 0x82, + 0xbb, 0x89, 0xe4, 0xb3, 0x93, 0xda, 0x62, 0x97, 0xcb, 0xec, 0xcd, 0x58, + 0xf4, 0xce, 0x62, 0x46, 0x9b, 0x53, 0x6e, 0x06, 0x61, 0xcf, 0x6d, 0x45, + 0xd4, 0x0f, 0x3e, 0xa5, 0xb3, 0xfd, 0xcf, 0x58, 0x90, 0x20, 0xd7, 0xbe, + 0xac, 0x3c, 0xeb, 0x37, 0x65, 0x8d, 0x1e, 0x0e, 0xe2, 0xe7, 0x56, 0xdb, + 0xa7, 0xb1, 0x3d, 0x7e, 0x71, 0x17, 0x2f, 0x6d, 0x3d, 0x77, 0xe3, 0x5e, + 0x2c, 0x67, 0x39, 0x75, 0x25, 0x20, 0xc6, 0xbd, 0x35, 0x98, 0xb7, 0xb4, + 0xd1, 0x23, 0xd7, 0x2f, 0xa2, 0x44, 0x8d, 0xe1, 0x41, 0x88, 0xdf, 0x0f, + 0x0b, 0x4d, 0xd7, 0x64, 0x95, 0x91, 0x95, 0x52, 0xa6, 0x64, 0x70, 0x70, + 0x73, 0x4a, 0x5c, 0xea, 0x2f, 0xe8, 0x7c, 0x24, 0x9b, 0x32, 0x1a, 0x64, + 0xe4, 0xd4, 0x3c, 0xdc, 0xda, 0x8f, 0xb2, 0xe4, 0x5c, 0x07, 0xc9, 0x48, + 0x5c, 0x5b, 0xa2, 0xcc, 0x5d, 0x4e, 0xa4, 0x20, 0x97, 0x27, 0x44, 0x06, + 0xb4, 0x75, 0xc4, 0xe1, 0xa3, 0x25, 0x10, 0x82, 0x04, 0x36, 0x61, 0xa6, + 0x9a, 0x37, 0x2c, 0xc5, 0x17, 0x6a, 0xd9, 0x7a, 0x24, 0x58, 0x47, 0x4a, + 0x95, 0x2a, 0x92, 0xc8, 0x2a, 0xb1, 0x24, 0x2a, 0x43, 0x11, 0x0d, 0x32, + 0x27, 0x50, 0x53, 0xa7, 0xd5, 0x39, 0x8b, 0x24, 0x89, 0x89, 0x6a, 0x71, + 0x9a, 0x8d, 0x7c, 0x6a, 0xe9, 0x35, 0xed, 0x7f, 0xa5, 0x74, 0xb1, 0xaf, + 0x5a, 0x5c, 0xb4, 0xdb, 0xee, 0x64, 0x35, 0x0d, 0xa7, 0x1a, 0x94, 0x8d, + 0x6d, 0x2d, 0x7e, 0xf0, 0xaf, 0x03, 0xc8, 0x69, 0x62, 0x1b, 0x86, 0xed, + 0xe3, 0x1f, 0x6c, 0x73, 0xf1, 0xc4, 0xf3, 0x16, 0x74, 0x53, 0x3f, 0x48, + 0xcb, 0xb3, 0xba, 0x25, 0x0e, 0xb9, 0x78, 0x49, 0x46, 0xbe, 0xa5, 0x56, + 0xb2, 0x23, 0x44, 0x71, 0x21, 0x4d, 0x01, 0xc9, 0x22, 0x10, 0xd1, 0x38, + 0x94, 0xf1, 0x1d, 0x83, 0xd2, 0x81, 0x78, 0xa8, 0x68, 0x68, 0x3e, 0x40, + 0x70, 0x1c, 0x85, 0x81, 0xb0, 0x36, 0x52, 0x49, 0x2c, 0x91, 0x80, 0x19, + 0x02, 0x20, 0x8c, 0x43, 0x0c, 0x87, 0xc2, 0x86, 0x0b, 0x7d, 0x3d, 0x49, + 0xb3, 0x36, 0x06, 0xb1, 0x0b, 0xcd, 0xa0, 0x68, 0x99, 0xd2, 0x99, 0x87, + 0x20, 0x6a, 0x6c, 0xa9, 0xe3, 0x4b, 0x49, 0x8d, 0x81, 0x8b, 0x5a, 0x03, + 0x81, 0x76, 0x26, 0xcb, 0x69, 0x0a, 0x59, 0x25, 0x4c, 0xe8, 0x2a, 0x29, + 0x47, 0xac, 0xc3, 0x56, 0xf2, 0x55, 0x58, 0xc7, 0x50, 0x3f, 0x84, 0x6d, + 0xdd, 0x5c, 0xc4, 0x2f, 0xc3, 0xae, 0x6a, 0x19, 0x5c, 0xdb, 0xea, 0x6d, + 0xce, 0x6b, 0x38, 0xb5, 0x16, 0x88, 0xb6, 0xfc, 0xce, 0xcd, 0x5a, 0x3e, + 0x94, 0xab, 0x70, 0xdf, 0x96, 0x31, 0xdb, 0xaa, 0xaf, 0x74, 0xcb, 0x99, + 0x31, 0x6e, 0x73, 0xe9, 0xbb, 0x6d, 0x9e, 0x79, 0xe7, 0xea, 0xdb, 0x52, + 0xda, 0x96, 0xfb, 0xd9, 0x54, 0xbf, 0x3d, 0xc4, 0x36, 0xea, 0x66, 0x36, + 0x67, 0x5f, 0xdb, 0x11, 0x86, 0xa7, 0xac, 0x6c, 0x6c, 0x82, 0x86, 0x84, + 0x21, 0xc3, 0x12, 0x00, 0xf2, 0x26, 0xc1, 0xed, 0x71, 0xac, 0x9c, 0x09, + 0x43, 0x41, 0x40, 0x23, 0x91, 0x57, 0x28, 0x2b, 0x20, 0x07, 0xc1, 0xdc, + 0x19, 0x9c, 0x5c, 0x66, 0xf2, 0xf2, 0xe2, 0x32, 0x65, 0x93, 0x10, 0x53, + 0x51, 0x4c, 0xcb, 0x8e, 0x4e, 0x0b, 0x8c, 0x95, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x9a, 0xaa, 0xc4, 0xe1, 0xac, 0x5d, 0x8c, 0x21, 0xb8, 0x8c, 0x6e, + 0x3f, 0xa2, 0xb5, 0xc0, 0x80, 0xb8, 0xaa, 0xd6, 0x83, 0x00, 0xb9, 0x59, + 0x1f, 0x1a, 0x3e, 0xfb, 0x44, 0xe6, 0xe0, 0xab, 0xcd, 0x97, 0x61, 0x76, + 0x0f, 0xb9, 0xa7, 0x1b, 0xc9, 0xa7, 0x19, 0xb2, 0xbb, 0xd6, 0xf3, 0x68, + 0xae, 0x2f, 0x18, 0x32, 0xdd, 0xab, 0x0f, 0xc1, 0x87, 0x76, 0x67, 0xb3, + 0xc3, 0x97, 0x31, 0x99, 0xd5, 0xdb, 0xce, 0xde, 0xee, 0x17, 0x8c, 0xf2, + 0x6d, 0x6e, 0x0c, 0x1d, 0x4f, 0x69, 0xe1, 0x6e, 0x3c, 0x5d, 0x45, 0xce, + 0x73, 0xad, 0xc0, 0x89, 0x99, 0x2f, 0x96, 0xe8, 0x91, 0xa3, 0x47, 0x8d, + 0xa9, 0xa1, 0x47, 0xf3, 0x61, 0x93, 0x33, 0x61, 0xe4, 0x6d, 0xc1, 0xed, + 0xbe, 0xd5, 0x81, 0x75, 0x99, 0xf1, 0xbd, 0xdb, 0x55, 0xbd, 0x1c, 0xef, + 0x33, 0xdf, 0x49, 0x2d, 0x13, 0x17, 0xb4, 0x47, 0xb0, 0x24, 0xf0, 0x35, + 0x9a, 0xc7, 0xfe, 0xf4, 0x6c, 0xcd, 0x77, 0xb9, 0xdc, 0xed, 0x1f, 0x36, + 0x7f, 0x05, 0xeb, 0xe9, 0x15, 0x4a, 0xe7, 0xcc, 0x4f, 0x6c, 0x96, 0x68, + 0xad, 0x8f, 0x75, 0x43, 0x91, 0x71, 0x46, 0x10, 0xe3, 0xf5, 0x0b, 0x2d, + 0xaa, 0xe6, 0x13, 0xb8, 0xca, 0x6d, 0x7a, 0xb0, 0x77, 0x28, 0xd1, 0xf0, + 0x82, 0xac, 0x7a, 0x97, 0xcb, 0xdb, 0x3b, 0x79, 0x3b, 0x3f, 0x4b, 0x12, + 0x26, 0x36, 0xfd, 0x23, 0x2d, 0xb6, 0x0d, 0xf6, 0x45, 0x30, 0xb1, 0xb5, + 0xc6, 0x42, 0x8e, 0xf5, 0x43, 0x50, 0xbd, 0x05, 0xf7, 0xd0, 0xb5, 0xd4, + 0x51, 0x1f, 0xa2, 0x70, 0xc3, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0d, 0xd6, + 0x0a, 0x76, 0xb6, 0x81, 0xe9, 0x7b, 0x70, 0xc5, 0xee, 0xc6, 0xc0, 0x3d, + 0x8f, 0x6e, 0x13, 0xe1, 0xd6, 0xde, 0x46, 0x25, 0x2d, 0xca, 0x7f, 0xbb, + 0x1c, 0x08, 0xc4, 0xad, 0xb8, 0x7e, 0xea, 0x0c, 0x1d, 0x23, 0xc5, 0x57, + 0x61, 0x70, 0xbc, 0xe4, 0x5f, 0x58, 0x95, 0x9d, 0xd5, 0x1f, 0xd0, 0xf5, + 0x62, 0x46, 0xe8, 0xfd, 0xe7, 0x27, 0x3e, 0x16, 0xb2, 0xf2, 0xed, 0xaf, + 0xe9, 0x0f, 0xcf, 0x05, 0x93, 0x0a, 0xf8, 0x14, 0x66, 0xdc, 0x68, 0xff, + 0x4c, 0x1e, 0xb0, 0x76, 0xd4, 0xf6, 0x49, 0xe3, 0x3f, 0x8b, 0x86, 0xa7, + 0xec, 0x2f, 0x55, 0xd0, 0x9b, 0x73, 0x6d, 0x37, 0xbd, 0x6c, 0xd4, 0x68, + 0x53, 0x5a, 0x65, 0x6f, 0x7b, 0x8c, 0xd7, 0xee, 0x05, 0xb7, 0x6d, 0x46, + 0xbb, 0xde, 0xfe, 0x1c, 0x47, 0x39, 0x60, 0x6a, 0x98, 0xd6, 0xbb, 0xe7, + 0xbd, 0xfc, 0x2d, 0xc9, 0xe2, 0xc9, 0x47, 0x2e, 0xe1, 0xa6, 0x58, 0x15, + 0x7b, 0x35, 0x7b, 0xfd, 0x43, 0x9a, 0x7b, 0xbc, 0x66, 0x79, 0x8a, 0xb4, + 0x76, 0x35, 0x2b, 0xe7, 0x92, 0xd1, 0x81, 0x9e, 0xae, 0xe4, 0x78, 0xc2, + 0xa4, 0x84, 0xed, 0xe9, 0xb8, 0xae, 0x26, 0x28, 0x6a, 0xf2, 0x51, 0xb1, + 0x48, 0x9c, 0x7a, 0xa9, 0x46, 0x27, 0xd0, 0x6a, 0x28, 0xea, 0xb1, 0x98, + 0x7c, 0x98, 0x03, 0x19, 0xb1, 0x74, 0x72, 0xd5, 0x36, 0x62, 0x97, 0x85, + 0x69, 0xcd, 0x0d, 0xb8, 0x80, 0x2b, 0xdf, 0xac, 0x30, 0x11, 0x40, 0xb8, + 0xb4, 0x64, 0x24, 0x0c, 0x09, 0x5e, 0x56, 0x8d, 0x71, 0x84, 0x2e, 0x5a, + 0xb4, 0xaa, 0xb5, 0x8b, 0xa2, 0x6a, 0xd0, 0x6f, 0xa3, 0x8f, 0x3e, 0xba, + 0x69, 0x5a, 0x11, 0x69, 0xa3, 0x51, 0xcb, 0xec, 0xb3, 0xfb, 0x8c, 0x22, + 0x8f, 0xf9, 0x47, 0x75, 0x9f, 0x4d, 0xf8, 0xd4, 0x37, 0x5a, 0x92, 0x49, + 0x4b, 0xca, 0x53, 0x7b, 0xa6, 0xde, 0x97, 0x84, 0x29, 0xdb, 0x2f, 0x91, + 0xa8, 0x79, 0x4a, 0xe1, 0x1f, 0x2f, 0x5b, 0x39, 0xc1, 0x89, 0x64, 0xa5, + 0x8f, 0xbf, 0xe5, 0xb7, 0xe3, 0x34, 0xe5, 0x71, 0x9d, 0x55, 0x2a, 0xa7, + 0xf5, 0x09, 0xc6, 0x5b, 0x92, 0xd9, 0x4f, 0x63, 0x9a, 0xab, 0x12, 0x5a, + 0xee, 0xf3, 0xed, 0xc7, 0xf9, 0xff, 0x99, 0xb2, 0xa7, 0xcb, 0xb2, 0x43, + 0x92, 0xc4, 0xbc, 0xe4, 0xcd, 0xdc, 0x11, 0x49, 0x1b, 0x02, 0xa3, 0x70, + 0x2e, 0xc5, 0x3c, 0x57, 0xec, 0xda, 0xa2, 0x92, 0xa0, 0x1b, 0x8a, 0xc0, + 0xe1, 0x32, 0xfa, 0x3c, 0x8c, 0x74, 0x3e, 0x39, 0x46, 0xc1, 0x13, 0xa2, + 0xb2, 0x84, 0x22, 0x40, 0x36, 0x22, 0x0b, 0x83, 0x22, 0xe7, 0x46, 0xbc, + 0x93, 0x86, 0x07, 0x86, 0x21, 0xb2, 0x03, 0x0b, 0x1f, 0x2d, 0x38, 0xcc, + 0x55, 0x61, 0x6d, 0x59, 0x69, 0x46, 0x33, 0xee, 0xd2, 0x36, 0xab, 0x5f, + 0x2b, 0x3a, 0x93, 0x61, 0x44, 0x29, 0xac, 0x27, 0x30, 0x34, 0xa7, 0xa2, + 0xcb, 0x96, 0x38, 0x44, 0x45, 0x78, 0xbe, 0xc6, 0xb9, 0x89, 0x24, 0x85, + 0xd5, 0xb6, 0xe6, 0x5e, 0xf3, 0x5f, 0xbb, 0x6c, 0x6f, 0xb4, 0x16, 0xdc, + 0xd6, 0x32, 0xff, 0x56, 0xaa, 0x36, 0xbd, 0xe7, 0x27, 0x87, 0xbc, 0xf4, + 0x6c, 0xd6, 0x6e, 0x8c, 0xf7, 0xa2, 0xcb, 0xa7, 0xb1, 0xd4, 0x9c, 0xd4, + 0xb2, 0xea, 0xe9, 0xcf, 0x89, 0x9e, 0xa1, 0xd4, 0xee, 0xa2, 0x9d, 0x33, + 0x4a, 0xb5, 0xb1, 0x2e, 0xe3, 0x44, 0xf7, 0xa4, 0xda, 0x5e, 0x98, 0xc6, + 0x44, 0xc5, 0xdd, 0x1d, 0x74, 0x1c, 0xbb, 0xe9, 0x8e, 0x49, 0x8f, 0x45, + 0x21, 0xb5, 0x22, 0x6b, 0x07, 0x69, 0x28, 0xfa, 0x49, 0x8a, 0x05, 0x05, + 0x43, 0xd9, 0x24, 0x40, 0x1b, 0x0e, 0xc3, 0x85, 0x6f, 0x71, 0x02, 0x3e, + 0x85, 0x24, 0x53, 0x41, 0xd4, 0x28, 0x98, 0x10, 0x8b, 0x1b, 0x90, 0xc9, + 0x8e, 0xa3, 0x5b, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, + 0x32, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x45, 0x02, 0x18, 0x1c, 0x1d, 0x4b, 0x65, 0x05, 0x46, 0x43, 0xe0, + 0x92, 0x24, 0x6d, 0xcb, 0x85, 0x64, 0xf6, 0xd3, 0x32, 0xa1, 0x79, 0x05, + 0x48, 0x52, 0x31, 0x06, 0x13, 0x7c, 0x57, 0x21, 0x40, 0x82, 0x0a, 0xc0, + 0x53, 0xe9, 0x78, 0xca, 0x0d, 0x46, 0x37, 0x35, 0xcc, 0x41, 0x26, 0x35, + 0x1d, 0xb1, 0x19, 0xc6, 0xd5, 0x9e, 0xd6, 0x7f, 0x96, 0xbb, 0x51, 0xee, + 0xe6, 0x8f, 0x68, 0x1e, 0x7c, 0xcb, 0x56, 0xba, 0xbf, 0x9a, 0x90, 0xef, + 0x02, 0x0d, 0x22, 0x6e, 0x90, 0xa1, 0x5e, 0x48, 0xd8, 0x8c, 0xfa, 0x78, + 0xd7, 0x96, 0x0d, 0x24, 0x8f, 0x1b, 0x30, 0x62, 0xbf, 0xad, 0x58, 0x71, + 0x34, 0xb7, 0x8f, 0xb6, 0xc9, 0x62, 0xc2, 0x81, 0x2c, 0xd8, 0x7d, 0x3c, + 0x97, 0xf1, 0x23, 0x4f, 0x99, 0x21, 0x57, 0x2c, 0xcd, 0x52, 0xde, 0x5a, + 0x63, 0x72, 0x40, 0x86, 0xc1, 0x4c, 0xd7, 0x34, 0x8f, 0x1b, 0x52, 0x51, + 0xec, 0x28, 0xba, 0xc5, 0x71, 0x4a, 0x4f, 0x0b, 0x7e, 0x8e, 0x50, 0x1e, + 0xdd, 0xff, 0x72, 0x79, 0xb7, 0xce, 0x5b, 0x8a, 0xaa, 0x30, 0x99, 0x5b, + 0x19, 0x97, 0x68, 0x63, 0x23, 0xe5, 0xc1, 0x3c, 0x7e, 0x7f, 0x2a, 0x95, + 0xc6, 0x6a, 0x8c, 0xf4, 0x8a, 0x6d, 0x24, 0x16, 0x61, 0x20, 0x86, 0x12, + 0x9c, 0xc8, 0x2c, 0x6d, 0xc7, 0x29, 0x0b, 0x57, 0x19, 0x93, 0xae, 0x95, + 0x6d, 0xf3, 0x20, 0x1f, 0xa3, 0xaa, 0xd1, 0x1d, 0x89, 0x50, 0x32, 0x0f, + 0xc4, 0xd3, 0x1b, 0x0d, 0xd9, 0xce, 0x44, 0x42, 0x5b, 0x10, 0x45, 0x51, + 0x40, 0xa4, 0xf2, 0x6a, 0xb0, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0f, 0xd6, + 0x09, 0x76, 0x36, 0x01, 0x89, 0x7b, 0x70, 0xc1, 0x2e, 0xd6, 0xc1, 0x3d, + 0x2f, 0x6e, 0x17, 0x35, 0xd6, 0xd8, 0x06, 0x19, 0xed, 0xca, 0xb3, 0x3a, + 0xdb, 0x44, 0x94, 0xb1, 0xb9, 0x4c, 0x81, 0xa7, 0xcf, 0x52, 0x2a, 0xba, + 0x38, 0x98, 0x6d, 0x74, 0x53, 0x79, 0x49, 0xce, 0x4c, 0xdf, 0x52, 0x71, + 0x69, 0xc4, 0x6c, 0x2b, 0x65, 0x72, 0x58, 0x6d, 0x6d, 0x90, 0xd8, 0xde, + 0x41, 0x63, 0x81, 0x59, 0xbc, 0xd0, 0x71, 0x06, 0xb5, 0x8f, 0x16, 0x34, + 0xf1, 0xb7, 0x9c, 0x42, 0x8b, 0x1e, 0x34, 0xb0, 0x69, 0x98, 0x39, 0xd4, + 0x78, 0x90, 0x9b, 0x23, 0x43, 0x83, 0xfc, 0x5f, 0x5a, 0xc0, 0xd6, 0x29, + 0x16, 0xb9, 0x95, 0xed, 0xa0, 0x52, 0xf0, 0x20, 0x3e, 0xf3, 0x63, 0x5e, + 0x77, 0xb4, 0xcb, 0xd7, 0x96, 0x85, 0x3b, 0xf7, 0x4f, 0x7e, 0x31, 0x99, + 0x25, 0x81, 0x16, 0xf6, 0xad, 0xdf, 0x66, 0xb2, 0xea, 0xae, 0x75, 0x81, + 0xb7, 0x95, 0x6c, 0xf9, 0x7b, 0x13, 0x54, 0xab, 0x04, 0xd7, 0xdf, 0x89, + 0x16, 0x0c, 0xd1, 0x9e, 0xd2, 0xee, 0xf7, 0x65, 0xe9, 0xdc, 0x4e, 0x58, + 0x2a, 0x1e, 0xa8, 0x55, 0xb7, 0x9e, 0xce, 0x4b, 0xa3, 0xfa, 0x39, 0xb8, + 0xc4, 0xaf, 0x8c, 0xb5, 0x1c, 0xb6, 0x18, 0x34, 0x5b, 0x76, 0x69, 0x8a, + 0x93, 0x1c, 0xb8, 0x1d, 0x5b, 0x49, 0x8e, 0x22, 0xf4, 0x3a, 0xce, 0x83, + 0xdd, 0xa6, 0x25, 0xd1, 0x79, 0xe1, 0x31, 0x58, 0xe2, 0x27, 0xa7, 0x15, + 0xa4, 0x64, 0x84, 0xb4, 0xc6, 0x32, 0x09, 0x8b, 0x2a, 0x28, 0x93, 0x28, + 0xd4, 0x16, 0x2c, 0xa0, 0x3e, 0xa3, 0xc7, 0xa4, 0x79, 0x21, 0xba, 0x83, + 0x9c, 0xb4, 0x43, 0x2a, 0x43, 0x98, 0xb9, 0xa3, 0x88, 0xa4, 0x5a, 0x3a, + 0xc8, 0x1f, 0xb7, 0x33, 0xf8, 0xef, 0xd9, 0x33, 0x7c, 0xd6, 0xf4, 0xf7, + 0xdc, 0xd6, 0x85, 0x0e, 0x79, 0xda, 0xab, 0xab, 0xc9, 0x6c, 0xe6, 0xd2, + 0x7b, 0x35, 0xe5, 0xf6, 0x2f, 0x67, 0xf6, 0xc4, 0xf0, 0x27, 0xc6, 0xbe, + 0x3f, 0x81, 0x2d, 0x20, 0x41, 0xbc, 0x37, 0xcf, 0xfc, 0x17, 0x55, 0xdf, + 0xd6, 0x24, 0x88, 0xc6, 0xc1, 0x02, 0x4a, 0xcd, 0x19, 0xaa, 0xb2, 0x4f, + 0xbb, 0x3a, 0xd6, 0xb1, 0x48, 0x34, 0xb4, 0x26, 0x2a, 0x62, 0x9a, 0xad, + 0x60, 0x5b, 0x54, 0xdb, 0xc8, 0x30, 0x25, 0x9e, 0xbf, 0x30, 0xb3, 0x1f, + 0x0c, 0x38, 0x8b, 0xf3, 0x4a, 0xc7, 0x71, 0x9b, 0x19, 0xec, 0x90, 0x1e, + 0x36, 0xa7, 0x14, 0x8a, 0x56, 0x76, 0x08, 0x88, 0x6b, 0x81, 0xc0, 0x84, + 0x38, 0xbd, 0xa3, 0x53, 0x31, 0x6d, 0x6b, 0x2f, 0xe6, 0xa9, 0x94, 0x84, + 0x9c, 0x13, 0xd8, 0x6c, 0xa1, 0x67, 0x29, 0xb8, 0xd4, 0xaa, 0x42, 0x13, + 0xb6, 0x16, 0x23, 0xec, 0xca, 0x59, 0x4b, 0x36, 0xc9, 0x0f, 0x64, 0x00, + 0xa9, 0x30, 0x4c, 0x03, 0x86, 0x90, 0x00, 0x36, 0x14, 0x25, 0x11, 0xa6, + 0x27, 0x51, 0x01, 0xb3, 0xc5, 0xdc, 0x54, 0x74, 0xde, 0x17, 0x68, 0x82, + 0x2e, 0x14, 0xa6, 0x81, 0x92, 0x16, 0x77, 0xb2, 0x6d, 0x25, 0x13, 0x8f, + 0xda, 0x96, 0x42, 0x9a, 0x65, 0xb8, 0x2b, 0x92, 0x4d, 0xce, 0x5b, 0xee, + 0x75, 0x14, 0xc7, 0x0f, 0xe4, 0xda, 0x8b, 0xb7, 0xa0, 0xfe, 0xdf, 0xb3, + 0xf9, 0xf5, 0x7b, 0x16, 0xe3, 0x50, 0xd7, 0x7e, 0x93, 0xec, 0xaf, 0x6b, + 0xe7, 0x2b, 0xb0, 0xdb, 0xe8, 0xeb, 0x72, 0xc2, 0xce, 0xad, 0xa5, 0xa4, + 0xff, 0x58, 0x58, 0x8e, 0x8e, 0xad, 0xcc, 0x72, 0x9d, 0x8e, 0x5b, 0xac, + 0xd7, 0xc4, 0xdb, 0x10, 0xe5, 0xde, 0xff, 0xce, 0x6d, 0x6b, 0x0c, 0x5b, + 0xd8, 0xc3, 0x8c, 0x67, 0x7b, 0x77, 0xd8, 0x95, 0xdf, 0x5c, 0xb7, 0x5e, + 0xbd, 0x8b, 0x1d, 0x52, 0x97, 0x9a, 0xbf, 0xb0, 0xf7, 0xbe, 0x92, 0x36, + 0x4f, 0xcb, 0x50, 0x1b, 0x44, 0xc2, 0xf4, 0x6a, 0xc4, 0xc1, 0x6d, 0x81, + 0x61, 0x50, 0x8e, 0x58, 0x4a, 0x45, 0xa7, 0xad, 0x02, 0xa5, 0x58, 0xcb, + 0xa5, 0x00, 0xb5, 0xe1, 0x20, 0xb2, 0xbc, 0xae, 0x4b, 0x29, 0x21, 0x1d, + 0xbe, 0xa2, 0x45, 0x08, 0x84, 0x8c, 0x08, 0x2d, 0x16, 0x02, 0x49, 0x8b, + 0x22, 0x48, 0xee, 0xbd, 0x6e, 0xa0, 0x89, 0x54, 0x4a, 0x89, 0xcf, 0xc9, + 0x35, 0x07, 0xd5, 0x84, 0x04, 0x93, 0xc4, 0x46, 0x1e, 0x92, 0x8c, 0x63, + 0x86, 0x4a, 0x41, 0x26, 0xd0, 0xea, 0xea, 0xad, 0xb7, 0x54, 0x55, 0x1d, + 0x90, 0x2e, 0xe5, 0x96, 0x8c, 0xfe, 0x6f, 0x35, 0xe1, 0x62, 0x15, 0xad, + 0x12, 0x69, 0x25, 0xd6, 0x1f, 0xe2, 0x77, 0x17, 0x97, 0xab, 0x35, 0xa3, + 0xf7, 0xde, 0xcf, 0xa9, 0x99, 0x3e, 0x62, 0x35, 0xc9, 0x0f, 0x72, 0x63, + 0x35, 0x91, 0xb7, 0x56, 0xd4, 0xd2, 0x44, 0xa7, 0xf7, 0x8f, 0xac, 0xfa, + 0x5a, 0x04, 0x09, 0x98, 0xe7, 0x72, 0xc7, 0x85, 0x3e, 0xa3, 0x3b, 0xcc, + 0xb9, 0xbc, 0x07, 0xb9, 0x91, 0xe4, 0x7f, 0x56, 0xa8, 0x91, 0xa5, 0x7f, + 0xb8, 0xd0, 0x5f, 0xc4, 0xcc, 0x26, 0xa6, 0x79, 0x5f, 0xce, 0xf2, 0x3b, + 0x75, 0x67, 0x9a, 0x03, 0x54, 0x08, 0xdd, 0xc6, 0xf2, 0x63, 0x32, 0x3f, + 0xa3, 0xc9, 0xe2, 0x3d, 0xb3, 0x03, 0x94, 0xf0, 0x4f, 0xd5, 0x89, 0x21, + 0xc3, 0x50, 0x2e, 0x25, 0x51, 0xbd, 0x39, 0x61, 0x27, 0xd8, 0x95, 0xa7, + 0x29, 0xb0, 0xe4, 0xc4, 0x93, 0x26, 0xa8, 0xf4, 0xf1, 0xc8, 0x61, 0x27, + 0x14, 0x0e, 0x0f, 0x8f, 0xc3, 0xa1, 0x17, 0x57, 0x02, 0xd8, 0x92, 0x4d, + 0xb5, 0xcd, 0xa4, 0x02, 0x61, 0x2b, 0x16, 0xc5, 0x82, 0x29, 0x54, 0x25, + 0x3d, 0x00, 0xa5, 0xd6, 0x84, 0xff, 0xfb, 0xd4, 0x40, 0x67, 0x8f, 0xd6, + 0x04, 0x76, 0xb5, 0x81, 0x89, 0x7b, 0x70, 0xbf, 0xee, 0xd6, 0xb1, 0x31, + 0x2f, 0x6e, 0x13, 0xe9, 0xda, 0xda, 0x06, 0x19, 0x8d, 0xc2, 0x61, 0x3a, + 0xdb, 0x84, 0x93, 0x31, 0xb8, 0x32, 0x83, 0xa1, 0xf0, 0x14, 0x41, 0x26, + 0x22, 0x83, 0x60, 0x5d, 0xa5, 0x5c, 0x7a, 0x49, 0xfd, 0x72, 0xaa, 0x36, + 0x88, 0xf0, 0xa4, 0x62, 0x3c, 0xfa, 0x96, 0x92, 0x18, 0x22, 0x5e, 0x69, + 0x7c, 0x5a, 0xf6, 0x99, 0xd3, 0x4d, 0x43, 0xde, 0x3d, 0x6d, 0x89, 0x33, + 0x7c, 0xc4, 0x8e, 0xf2, 0x2e, 0xb5, 0x23, 0xe7, 0x1a, 0x56, 0x24, 0xbe, + 0xf8, 0x89, 0x69, 0xed, 0x5b, 0x45, 0x83, 0x89, 0x64, 0x71, 0x91, 0xe5, + 0xe7, 0x7b, 0x24, 0x8f, 0x2f, 0x6c, 0xe7, 0x71, 0x67, 0xa4, 0xb5, 0xa6, + 0xf3, 0x1b, 0x73, 0xd5, 0x82, 0x4b, 0x78, 0xf5, 0x8f, 0x7d, 0x62, 0x1c, + 0x49, 0xa9, 0x0f, 0x71, 0x61, 0x59, 0xf4, 0x5b, 0xe3, 0x73, 0x59, 0xdd, + 0x23, 0x5a, 0x1d, 0xa6, 0x84, 0xfa, 0x0c, 0x58, 0xf7, 0x7b, 0xf5, 0x8a, + 0xea, 0x69, 0x21, 0xea, 0x1b, 0x7a, 0x46, 0x57, 0xb4, 0x87, 0xdd, 0xcf, + 0x12, 0xd6, 0x9b, 0x55, 0x70, 0x86, 0xe3, 0x06, 0x3a, 0x21, 0xf2, 0x78, + 0xef, 0x54, 0xa3, 0x60, 0xc5, 0x25, 0xa3, 0x84, 0xea, 0x4d, 0x30, 0xa0, + 0xcc, 0xb8, 0x66, 0x12, 0xf9, 0xe4, 0xaf, 0x53, 0xa4, 0xc9, 0x89, 0x74, + 0x76, 0x5c, 0xe0, 0x22, 0xb0, 0x85, 0xa5, 0xaa, 0xe1, 0x44, 0xc2, 0x2b, + 0x79, 0x9b, 0x51, 0x43, 0x2b, 0x85, 0x84, 0xa5, 0x6d, 0xb8, 0x91, 0x01, + 0x1c, 0xd7, 0x46, 0x3f, 0x3b, 0xa5, 0x65, 0x30, 0x7a, 0x77, 0x2f, 0x04, + 0xcb, 0x07, 0x0d, 0xa1, 0xd6, 0x55, 0xf3, 0x24, 0xee, 0x99, 0xe8, 0xdf, + 0x41, 0xda, 0x48, 0xaa, 0xb3, 0xd9, 0xbf, 0xe5, 0xdc, 0xda, 0x4f, 0xec, + 0xfe, 0x6d, 0x69, 0xf9, 0xf7, 0xac, 0xfc, 0x4d, 0x3d, 0x5c, 0x6b, 0x1f, + 0xeb, 0x5e, 0x7a, 0x29, 0xa5, 0x59, 0xcf, 0xee, 0xdc, 0xbe, 0x52, 0x66, + 0xf3, 0x4e, 0xe8, 0x32, 0xbb, 0x6a, 0xc1, 0x7c, 0xae, 0x4d, 0xab, 0x93, + 0x68, 0xff, 0x3f, 0xdb, 0xd5, 0xac, 0xcd, 0xbe, 0x92, 0xb2, 0xdd, 0x8f, + 0xb3, 0x36, 0xe7, 0xaf, 0x5e, 0xeb, 0xd3, 0xb6, 0xeb, 0x9d, 0xad, 0x2f, + 0x8b, 0xb9, 0xe8, 0xe1, 0xc7, 0xfe, 0x2a, 0x31, 0x78, 0x7f, 0x9d, 0x79, + 0xc7, 0xaa, 0x9d, 0xb8, 0xfe, 0xa7, 0xbc, 0xda, 0xf6, 0x63, 0xa1, 0x5d, + 0xf6, 0x0e, 0x05, 0xc7, 0xa6, 0x64, 0xf2, 0x71, 0x38, 0x75, 0x74, 0x5c, + 0x9d, 0x38, 0x92, 0x46, 0x2b, 0xa6, 0x1f, 0xc8, 0xa6, 0x85, 0x92, 0xa9, + 0xe1, 0x58, 0x2d, 0x8f, 0x51, 0xf1, 0xbf, 0x25, 0x2a, 0xa8, 0x71, 0x81, + 0x46, 0x01, 0xc7, 0xf8, 0xae, 0xa7, 0xc8, 0x97, 0x6c, 0x53, 0xd6, 0x59, + 0x3d, 0xdf, 0x16, 0x66, 0xed, 0x51, 0x45, 0x59, 0x18, 0x33, 0xa5, 0xaf, + 0xf0, 0xf9, 0xd1, 0x5c, 0xa4, 0x6f, 0xeb, 0xf0, 0x34, 0xac, 0xde, 0xea, + 0xe5, 0x2d, 0xd7, 0x99, 0xd9, 0x9c, 0x6e, 0xf6, 0xda, 0x7f, 0x77, 0xde, + 0x6f, 0xcf, 0xcf, 0x67, 0xeb, 0xff, 0xdf, 0xff, 0x06, 0x4d, 0xdf, 0xff, + 0x8f, 0xef, 0x9f, 0xb9, 0x7e, 0xcb, 0xcf, 0x76, 0x75, 0xef, 0x3b, 0x56, + 0x22, 0xef, 0xcb, 0xbd, 0x95, 0xbe, 0x74, 0xe5, 0x7f, 0xb3, 0xf6, 0x09, + 0xad, 0x73, 0xb6, 0x99, 0x1f, 0x5a, 0x66, 0x77, 0x65, 0x9a, 0xf6, 0xe5, + 0x66, 0x3f, 0xfc, 0xfe, 0xbb, 0x5b, 0x1d, 0xed, 0x46, 0x21, 0x82, 0xaf, + 0xc1, 0x77, 0x69, 0x65, 0xb2, 0xa6, 0x23, 0xd3, 0xc1, 0x08, 0xbe, 0x72, + 0x59, 0x26, 0xe3, 0x63, 0xf0, 0x86, 0xfa, 0x47, 0x8c, 0x94, 0x03, 0xab, + 0x49, 0x64, 0x90, 0xad, 0x61, 0xc8, 0xfa, 0xac, 0xad, 0x0f, 0xac, 0x70, + 0xa0, 0x84, 0x98, 0x82, 0x9a, 0x8a, 0x66, 0x5c, 0x72, 0x70, 0x5c, 0x65, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x70, 0x11, 0x4b, 0x02, 0x1c, 0x42, 0x83, 0x41, 0x88, 0xe5, 0x62, + 0xdd, 0x19, 0x8d, 0x76, 0x2a, 0x93, 0x07, 0x1d, 0x48, 0xc5, 0x71, 0x30, + 0xe3, 0x0b, 0xac, 0x69, 0x36, 0x98, 0x63, 0x0a, 0x0f, 0x30, 0x2b, 0x68, + 0xab, 0x0a, 0x28, 0x76, 0x33, 0x44, 0xf7, 0x6a, 0x68, 0x82, 0x8c, 0xbb, + 0xa1, 0x44, 0x48, 0x89, 0xcc, 0x53, 0x78, 0x81, 0x07, 0x35, 0x92, 0x25, + 0xfe, 0x22, 0xd2, 0x24, 0x7a, 0xcb, 0x8d, 0x49, 0x99, 0xe9, 0xb9, 0xeb, + 0xe1, 0x3c, 0x81, 0x68, 0x5e, 0x16, 0x77, 0x24, 0x58, 0x8f, 0xf7, 0x16, + 0xde, 0x34, 0x1b, 0x66, 0x3e, 0x22, 0xbf, 0x7f, 0x58, 0xf1, 0x27, 0x89, + 0x3f, 0xd7, 0xf1, 0xeb, 0x3e, 0x2d, 0x98, 0x33, 0xdf, 0x16, 0x8b, 0x12, + 0x1e, 0xa6, 0xcc, 0x2d, 0xd2, 0x6b, 0xe2, 0xb5, 0x75, 0x02, 0x35, 0x27, + 0x83, 0x57, 0xb4, 0x9a, 0xef, 0xaf, 0x6d, 0xdf, 0x11, 0x6f, 0x79, 0xe3, + 0xda, 0xb2, 0x46, 0x83, 0x1d, 0xf5, 0xa1, 0xd3, 0x57, 0xf5, 0xbc, 0x6f, + 0x0e, 0x1b, 0x72, 0xce, 0x95, 0xec, 0xd1, 0x63, 0x1e, 0x88, 0x34, 0xf2, + 0xa5, 0xf2, 0x9d, 0x38, 0x6f, 0x21, 0xa3, 0x75, 0x3a, 0x88, 0x24, 0xa7, + 0xaa, 0x18, 0xd0, 0x9d, 0x8c, 0x7e, 0xa1, 0xa1, 0x7c, 0xd6, 0xa0, 0x44, + 0x1c, 0x65, 0xf0, 0xad, 0x88, 0x61, 0x92, 0x96, 0x22, 0xd5, 0x8e, 0x3c, + 0xba, 0x96, 0x23, 0x1c, 0x48, 0x84, 0x74, 0x13, 0x90, 0xa3, 0x1f, 0x2e, + 0xb8, 0x99, 0xe0, 0xc1, 0x4b, 0x47, 0x89, 0x8c, 0x11, 0x23, 0xfb, 0x2e, + 0x57, 0x83, 0xc2, 0x98, 0x19, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0d, 0xd6, + 0x00, 0x76, 0xb5, 0x89, 0x89, 0x7b, 0x70, 0xc6, 0xae, 0xd6, 0xa0, 0x31, + 0x8f, 0x6e, 0x14, 0xa9, 0xd8, 0xda, 0x04, 0x99, 0xed, 0xc2, 0x81, 0x3b, + 0x1b, 0x48, 0xc3, 0x31, 0xb8, 0x8a, 0xf4, 0xf4, 0x08, 0xcc, 0x69, 0xd4, + 0x52, 0xb9, 0x32, 0x37, 0xa9, 0x68, 0xb6, 0x6f, 0x76, 0x8e, 0x99, 0x58, + 0x76, 0xe1, 0xcd, 0x66, 0x91, 0xef, 0x12, 0x4c, 0xd5, 0xda, 0x32, 0x67, + 0xaf, 0x34, 0xfb, 0x79, 0x78, 0xc1, 0x58, 0x7a, 0x8f, 0x8a, 0xef, 0x5b, + 0x81, 0x1f, 0x71, 0xb3, 0xe3, 0xd2, 0xb9, 0xae, 0x65, 0xdc, 0x08, 0x4e, + 0x2d, 0xd0, 0xe8, 0xf6, 0x90, 0xf5, 0x17, 0xea, 0x15, 0xa8, 0xf5, 0x9a, + 0xcf, 0x9a, 0x9b, 0xdf, 0x59, 0xba, 0x98, 0x73, 0x7e, 0xce, 0xdb, 0x13, + 0x73, 0xc0, 0x97, 0x2f, 0x5c, 0xde, 0x30, 0xc8, 0xd7, 0x1e, 0xdb, 0xa3, + 0x5c, 0x1b, 0xd2, 0x34, 0x89, 0xf9, 0x7c, 0xde, 0x4d, 0xde, 0x05, 0xec, + 0xcd, 0xde, 0x32, 0x44, 0xd6, 0xe9, 0x67, 0xfa, 0xb3, 0xc8, 0xb2, 0xd3, + 0x50, 0xdb, 0x1d, 0x51, 0x92, 0x67, 0x27, 0xcb, 0x0e, 0xdd, 0x4f, 0x56, + 0xd3, 0xf0, 0xc1, 0x40, 0x35, 0x22, 0x59, 0x95, 0x2c, 0xc6, 0xda, 0x71, + 0x1e, 0xe6, 0x4d, 0x17, 0x06, 0x58, 0x78, 0x4e, 0xa1, 0x17, 0x38, 0xe1, + 0xaa, 0x4e, 0x09, 0x4b, 0x28, 0xac, 0xca, 0x44, 0xb1, 0x38, 0x0d, 0x4a, + 0x00, 0x82, 0x17, 0x72, 0xea, 0x8e, 0x73, 0xd1, 0xee, 0x5c, 0x84, 0x14, + 0x0b, 0xac, 0x6c, 0xbb, 0x04, 0xf0, 0x14, 0x69, 0x12, 0x22, 0x55, 0xc8, + 0x25, 0x09, 0x91, 0x56, 0x56, 0x3f, 0xaf, 0x72, 0xaa, 0x2d, 0xe5, 0x2f, + 0x96, 0x71, 0xb9, 0x93, 0x3f, 0x52, 0x84, 0x27, 0x76, 0x67, 0x5e, 0xb5, + 0xb7, 0x1b, 0xdf, 0x51, 0xdc, 0x7e, 0x3d, 0x22, 0x49, 0x9d, 0x47, 0xd6, + 0x71, 0x1f, 0x56, 0xae, 0xa9, 0x07, 0x52, 0x7c, 0x7c, 0x56, 0x95, 0xdd, + 0x61, 0xeb, 0xd2, 0x91, 0xe2, 0xee, 0xf1, 0xab, 0x9d, 0xd6, 0xf0, 0x26, + 0xf8, 0xc6, 0xe1, 0x67, 0x14, 0x85, 0x5c, 0xea, 0xba, 0xf5, 0xdd, 0xad, + 0x1e, 0xaf, 0x69, 0xfe, 0xa9, 0x8d, 0x66, 0x05, 0xe0, 0x6f, 0x76, 0xde, + 0xfe, 0x69, 0x59, 0x61, 0x52, 0x34, 0x1b, 0xd2, 0x9f, 0x15, 0xfa, 0x8f, + 0x1f, 0x78, 0xc5, 0xf1, 0xaf, 0x7f, 0x5b, 0xda, 0xf4, 0x8b, 0x57, 0xf8, + 0x9b, 0xba, 0x78, 0xcc, 0xd7, 0x05, 0x52, 0x86, 0xae, 0xe3, 0xaf, 0x4c, + 0xfd, 0x38, 0xe2, 0xb7, 0x12, 0x32, 0xf3, 0x72, 0xab, 0x29, 0xe5, 0x30, + 0xf0, 0x4c, 0x24, 0xd1, 0x50, 0x13, 0x8e, 0x12, 0xed, 0x70, 0xc6, 0x8d, + 0x3f, 0x3b, 0xa6, 0xe9, 0xb0, 0xb0, 0x4f, 0x97, 0x83, 0xa2, 0xd0, 0xfa, + 0x57, 0x5b, 0x3c, 0x89, 0x22, 0x9d, 0x31, 0x61, 0x8a, 0xbc, 0x9c, 0x2d, + 0x02, 0xf0, 0xb7, 0x98, 0x58, 0x26, 0xa2, 0x7e, 0x8c, 0x89, 0xa1, 0x51, + 0x81, 0xc1, 0xd6, 0x45, 0x12, 0x65, 0xae, 0xcf, 0x6b, 0xd6, 0xc6, 0x9c, + 0x6f, 0x59, 0x32, 0x87, 0x34, 0xa5, 0xdc, 0x8a, 0xb5, 0x7e, 0xb7, 0x9f, + 0xe6, 0x2d, 0xdb, 0xbb, 0xf3, 0x78, 0xf6, 0x1c, 0x8e, 0x7f, 0x72, 0xae, + 0xda, 0x66, 0x2a, 0xf3, 0xb9, 0xb9, 0x7d, 0xfe, 0x9b, 0xcf, 0xac, 0xcf, + 0xbc, 0x73, 0x2b, 0x58, 0xca, 0x53, 0x7b, 0x36, 0x66, 0xf9, 0x7c, 0x7e, + 0x90, 0xfe, 0x57, 0x6f, 0x36, 0x8f, 0xe9, 0x33, 0x7e, 0xa7, 0x5d, 0x89, + 0xaf, 0xcb, 0xdf, 0x94, 0xeb, 0x3e, 0xb6, 0x93, 0x3f, 0x6a, 0xb0, 0xfe, + 0x7b, 0x0f, 0xc6, 0xfb, 0x7f, 0x6e, 0xcb, 0xad, 0x2b, 0x65, 0x5e, 0x51, + 0x66, 0x8e, 0xcf, 0x6f, 0x0b, 0x45, 0x94, 0x47, 0x85, 0x41, 0xf4, 0x8b, + 0x01, 0x55, 0x38, 0xd5, 0x56, 0x8f, 0x88, 0x65, 0x83, 0x22, 0xe1, 0xb0, + 0xe6, 0xfb, 0x45, 0xe0, 0x99, 0x71, 0x6c, 0xf5, 0xab, 0xa6, 0x20, 0xa6, + 0xa2, 0x99, 0x97, 0x1c, 0x9c, 0x17, 0x19, 0x2a, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x68, 0x87, 0x21, 0x1b, 0x35, 0x51, 0x4b, 0x85, 0x31, 0x63, 0x4e, + 0x33, 0x17, 0xd5, 0x24, 0xb9, 0xe1, 0x84, 0x49, 0xcd, 0xcf, 0x30, 0xed, + 0x4a, 0x72, 0xf1, 0x9c, 0x2b, 0x90, 0xa8, 0x83, 0xa7, 0xcc, 0x22, 0xda, + 0x55, 0xdb, 0x31, 0x76, 0x94, 0x4c, 0xd0, 0xd3, 0xdd, 0x49, 0x77, 0x97, + 0x9d, 0x75, 0x1c, 0x75, 0xba, 0xb1, 0x31, 0xa2, 0xbe, 0x8d, 0x65, 0x7b, + 0xaf, 0x3c, 0x46, 0x4d, 0xde, 0xd3, 0xda, 0x04, 0x4b, 0x45, 0x7a, 0xc7, + 0x89, 0x22, 0x6e, 0x33, 0x14, 0xba, 0x6f, 0xaf, 0xd5, 0x37, 0x3d, 0xe3, + 0x4d, 0xae, 0xf6, 0xf1, 0xe0, 0xc1, 0x8b, 0x3c, 0x76, 0x77, 0x5f, 0x59, + 0xb7, 0x9a, 0x3d, 0xe5, 0xa5, 0x5e, 0xcf, 0xaa, 0xfc, 0x38, 0xb1, 0x4c, + 0xf6, 0x2a, 0xbe, 0x14, 0xd2, 0xed, 0x8b, 0x6e, 0x71, 0xa8, 0xa5, 0x66, + 0x8b, 0x1a, 0x25, 0x6c, 0xe4, 0xe3, 0x23, 0x1e, 0xb1, 0x1d, 0xee, 0x34, + 0xc5, 0x0d, 0xaa, 0x77, 0x16, 0x48, 0x1a, 0xda, 0xf4, 0x67, 0x4f, 0x62, + 0x76, 0xca, 0x33, 0x37, 0xb1, 0xc7, 0xb6, 0xe9, 0x99, 0xd0, 0xf7, 0x73, + 0xa9, 0xcf, 0x8c, 0x41, 0x73, 0x99, 0x3c, 0xda, 0x8b, 0x31, 0xcc, 0xf7, + 0x15, 0x71, 0xba, 0x5e, 0x61, 0x8b, 0x52, 0x31, 0x12, 0x85, 0x38, 0xbb, + 0x3d, 0xda, 0x14, 0x2a, 0xa2, 0xa8, 0x86, 0xbe, 0x4a, 0xec, 0x74, 0xa8, + 0xcb, 0x12, 0x85, 0xc8, 0xbe, 0x1c, 0x08, 0x48, 0xfe, 0x39, 0x6d, 0x34, + 0x78, 0xf8, 0x42, 0x84, 0x24, 0x7c, 0x36, 0x3f, 0x4e, 0x96, 0x68, 0x59, + 0x42, 0x0d, 0xa4, 0x65, 0xe8, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0f, 0xf6, + 0x4f, 0x76, 0x34, 0x81, 0xec, 0x7b, 0x70, 0xc0, 0x8e, 0xb6, 0xa0, 0x31, + 0x2f, 0x6e, 0x54, 0x49, 0xd8, 0xd8, 0x06, 0x19, 0x8d, 0xc2, 0x90, 0xba, + 0xdb, 0x00, 0xc4, 0x31, 0xb8, 0x9c, 0x07, 0x9b, 0x14, 0x94, 0x34, 0x93, + 0x14, 0x49, 0x3e, 0xc9, 0x12, 0xd0, 0xab, 0x55, 0x59, 0x90, 0xad, 0xda, + 0xb8, 0xc5, 0xa7, 0x4a, 0x6f, 0x55, 0xea, 0xd9, 0xa4, 0xe0, 0x65, 0x96, + 0x22, 0x65, 0xde, 0x1c, 0xaf, 0x6a, 0x4b, 0x6b, 0xbd, 0x8d, 0xbd, 0xc4, + 0xd4, 0xdf, 0x58, 0x99, 0xb2, 0x2c, 0x59, 0x34, 0xf6, 0xf8, 0xf9, 0xd2, + 0xfe, 0x5c, 0x67, 0x81, 0x6d, 0xc7, 0x89, 0xb9, 0x69, 0xbd, 0x4d, 0x0f, + 0xd2, 0x3c, 0x4d, 0xed, 0x9a, 0x6a, 0x42, 0xb5, 0x21, 0xda, 0x3e, 0xe0, + 0xd5, 0xef, 0xba, 0xea, 0xf1, 0xf3, 0x57, 0xb6, 0xbd, 0x67, 0x96, 0xbb, + 0xd3, 0xec, 0x4f, 0x12, 0x4f, 0x6f, 0x87, 0x98, 0xa6, 0x75, 0x79, 0xe0, + 0x6e, 0xd5, 0x84, 0xc5, 0x8b, 0xba, 0xdd, 0xa4, 0x7f, 0x06, 0x2d, 0xe6, + 0x76, 0xc3, 0x1f, 0x11, 0x9e, 0x38, 0x6f, 0x74, 0x96, 0x12, 0xb9, 0xf4, + 0x06, 0x58, 0x69, 0x15, 0x42, 0xad, 0xc5, 0x4c, 0xe1, 0x74, 0xc3, 0x3a, + 0x81, 0xc4, 0x92, 0xbd, 0x43, 0xcd, 0x13, 0x40, 0x50, 0xa5, 0x0e, 0xc2, + 0x6c, 0x6c, 0x92, 0x12, 0xde, 0x78, 0x8f, 0x49, 0x2b, 0x32, 0x07, 0x3b, + 0xb2, 0x70, 0x5e, 0x57, 0x24, 0x80, 0x7c, 0x33, 0x9d, 0x6a, 0xf1, 0xc8, + 0xb5, 0xe2, 0x3b, 0x62, 0xc0, 0xec, 0xd9, 0x4a, 0x9f, 0x33, 0x5d, 0x04, + 0x60, 0x6e, 0x15, 0xb0, 0xe3, 0x05, 0xd0, 0xab, 0xa4, 0x54, 0x8c, 0xb2, + 0xec, 0xea, 0x68, 0x83, 0x25, 0xb6, 0xf4, 0xab, 0x59, 0xef, 0x2f, 0xd4, + 0x9f, 0x80, 0x69, 0xa7, 0x7c, 0xab, 0x3d, 0x4b, 0x4c, 0x76, 0xea, 0xe6, + 0x73, 0x93, 0x33, 0xd7, 0xd6, 0xad, 0x6d, 0xdc, 0x87, 0xb5, 0xe5, 0xd5, + 0xf9, 0x72, 0xac, 0xef, 0xd2, 0x1f, 0x76, 0xee, 0xec, 0xda, 0x3f, 0xa6, + 0xe6, 0x4c, 0x3b, 0xf6, 0xea, 0xeb, 0xd0, 0xe5, 0xf3, 0xf7, 0x22, 0x66, + 0xd5, 0xc9, 0x98, 0xf6, 0xf7, 0xf7, 0xab, 0x5d, 0xf5, 0x8e, 0xd7, 0xf6, + 0xdb, 0x37, 0xb5, 0xf5, 0x7c, 0x76, 0x98, 0x2d, 0xb3, 0x2e, 0xf5, 0xe7, + 0x2d, 0x5a, 0xef, 0x6d, 0x9d, 0xb5, 0x36, 0x4f, 0x71, 0x53, 0x08, 0x9a, + 0xf5, 0xee, 0x30, 0xe9, 0x49, 0x29, 0x78, 0x80, 0x21, 0x8f, 0x10, 0x34, + 0xa8, 0xb2, 0x24, 0xa9, 0x2a, 0xb4, 0x0b, 0x03, 0x72, 0x61, 0xc8, 0xd8, + 0x9f, 0x75, 0x2c, 0x0f, 0x86, 0x44, 0x11, 0x00, 0x3a, 0x32, 0x17, 0x85, + 0xa9, 0x90, 0x4c, 0x8f, 0x18, 0xac, 0xc0, 0xb0, 0xe8, 0x13, 0x2e, 0x3b, + 0x56, 0x90, 0x94, 0x1b, 0x6e, 0xb0, 0x1b, 0x20, 0xa8, 0x21, 0x51, 0x98, + 0xe0, 0xe8, 0xe1, 0x73, 0xd4, 0xa1, 0x83, 0x8b, 0xb7, 0xa9, 0xbb, 0xb1, + 0xc7, 0xcb, 0x31, 0x3c, 0x52, 0x5a, 0x72, 0x87, 0x2b, 0x97, 0x51, 0x51, + 0x93, 0x44, 0x4c, 0xcd, 0x2b, 0x49, 0xa4, 0x1c, 0xd3, 0xd5, 0xca, 0x65, + 0xe1, 0x99, 0x82, 0x99, 0x2e, 0x5f, 0x9f, 0x98, 0x67, 0xe9, 0x66, 0xf9, + 0xea, 0x6f, 0xbd, 0x5a, 0xfd, 0xbe, 0x67, 0x39, 0xfe, 0x77, 0xfe, 0xcf, + 0x5a, 0x7d, 0xd9, 0x6f, 0x17, 0xeb, 0xb3, 0x93, 0xbc, 0xfc, 0x14, 0xb3, + 0xbf, 0xd6, 0xac, 0xe5, 0x36, 0xdd, 0x30, 0xff, 0x6b, 0xd3, 0x4a, 0x41, + 0x13, 0x4e, 0x4c, 0xcd, 0x72, 0x29, 0x83, 0xdf, 0x6e, 0x8d, 0x6f, 0xc5, + 0x79, 0xae, 0xb0, 0xc4, 0x5c, 0xf2, 0x86, 0x9a, 0x38, 0x2b, 0xdc, 0xbb, + 0x23, 0xa3, 0xa9, 0x0a, 0xef, 0x89, 0xe0, 0x7d, 0x79, 0x4a, 0x33, 0xf5, + 0xcb, 0xd2, 0x92, 0x20, 0x10, 0x87, 0xd1, 0x00, 0xc0, 0xb4, 0x03, 0xcf, + 0xc5, 0x22, 0x28, 0xec, 0xdd, 0x03, 0xa1, 0xe4, 0x4b, 0x2f, 0x3a, 0x22, + 0x18, 0x21, 0x31, 0x05, 0x35, 0x14, 0xcc, 0xb8, 0xe4, 0xe0, 0xb8, 0xca, + 0xaa, 0x24, 0x00, 0x06, 0x8e, 0xdc, 0x9e, 0x54, 0xc6, 0x1f, 0xe4, 0xd9, + 0xc5, 0x48, 0xb9, 0x42, 0xcb, 0xeb, 0xbb, 0x2a, 0x45, 0x87, 0x49, 0x53, + 0x22, 0x90, 0xcc, 0x14, 0x6f, 0x56, 0xb2, 0xab, 0xf6, 0x36, 0x0c, 0x13, + 0x90, 0x89, 0x89, 0xce, 0x83, 0x20, 0x88, 0x8c, 0x7b, 0x62, 0x89, 0x98, + 0x0a, 0xcc, 0xb9, 0xa3, 0xb7, 0x28, 0x47, 0x0a, 0xea, 0x6e, 0x73, 0x42, + 0xf1, 0x31, 0xb8, 0x72, 0x3f, 0xde, 0xa2, 0xea, 0xf2, 0x44, 0x8f, 0x5a, + 0x61, 0xab, 0x79, 0x83, 0x0b, 0x6c, 0x8d, 0x72, 0x6a, 0xbd, 0x8f, 0x5a, + 0xf0, 0x2f, 0xa8, 0x0d, 0x97, 0xc3, 0xff, 0xde, 0xe6, 0x06, 0x28, 0xfe, + 0x16, 0xe2, 0xd2, 0x78, 0xbb, 0xff, 0x38, 0xcc, 0x28, 0xb9, 0xdd, 0xf7, + 0x2b, 0xe8, 0x12, 0x3e, 0x92, 0x58, 0xf0, 0x69, 0x98, 0xb1, 0xe3, 0x53, + 0xe2, 0x0c, 0x9b, 0xc4, 0x7c, 0x7b, 0x62, 0xd4, 0x92, 0x24, 0x18, 0x39, + 0x9e, 0x2d, 0x23, 0x62, 0x9b, 0x66, 0x92, 0x24, 0xd5, 0xd6, 0x2d, 0x8b, + 0x46, 0xc3, 0x36, 0x26, 0x92, 0xea, 0xce, 0xe5, 0xbb, 0xa2, 0x9f, 0x2c, + 0xf5, 0x97, 0x8b, 0x7a, 0x64, 0x70, 0x50, 0x2a, 0x15, 0x2e, 0xea, 0x89, + 0x57, 0xa1, 0x6b, 0xa3, 0xf4, 0xee, 0x43, 0x8d, 0x44, 0x4a, 0x51, 0x0a, + 0x56, 0xab, 0x0d, 0xa6, 0xc2, 0x64, 0x74, 0xb9, 0x19, 0x66, 0x38, 0xbc, + 0x8d, 0x96, 0xcc, 0x80, 0x15, 0x19, 0x00, 0x00, 0x3d, 0x97, 0x8f, 0xf2, + 0x34, 0x4f, 0x18, 0x0f, 0x28, 0x0a, 0xb6, 0xd5, 0x0b, 0x6e, 0x19, 0xe1, + 0xb1, 0x5f, 0x72, 0xb6, 0xc7, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0d, 0x96, + 0x11, 0x76, 0xb5, 0x11, 0xe9, 0x7b, 0x70, 0xc3, 0xee, 0xb6, 0xb7, 0x3d, + 0xef, 0x6e, 0x14, 0x31, 0xd6, 0xd8, 0x06, 0x19, 0x8d, 0xca, 0x83, 0xba, + 0xdb, 0x00, 0x94, 0xb1, 0xb8, 0x91, 0x5f, 0x97, 0xf5, 0x97, 0x31, 0xe0, + 0x2b, 0x63, 0x3e, 0x50, 0x28, 0x19, 0xd4, 0xe4, 0x91, 0xac, 0xe0, 0x4d, + 0xbd, 0x3c, 0x4d, 0xd5, 0x7b, 0x1c, 0x8c, 0x28, 0x53, 0xe5, 0xda, 0xcb, + 0xb8, 0xb9, 0xac, 0x48, 0xb1, 0xa0, 0xda, 0x13, 0x6c, 0x5b, 0xe2, 0x6a, + 0x40, 0x9b, 0x74, 0x9b, 0xd2, 0xb6, 0xf1, 0x33, 0xa9, 0xa0, 0xe7, 0x5e, + 0xfa, 0xdd, 0xe8, 0xf6, 0xdd, 0xfe, 0x6f, 0x34, 0x5b, 0x53, 0x32, 0xf8, + 0x94, 0x83, 0x1a, 0xb0, 0x6b, 0x98, 0xfb, 0x8b, 0xbd, 0x3d, 0x92, 0x5c, + 0x5e, 0x92, 0xcd, 0x58, 0x31, 0x69, 0xbd, 0x66, 0x05, 0x25, 0xf7, 0x81, + 0xe3, 0xd2, 0xfb, 0xc4, 0xaf, 0xb7, 0x59, 0x22, 0xed, 0xdf, 0xac, 0xb6, + 0xb4, 0x3f, 0x6a, 0x7a, 0x31, 0xd7, 0x54, 0x81, 0x17, 0x76, 0x89, 0x79, + 0xf1, 0x1b, 0x3d, 0xae, 0x3b, 0xda, 0xda, 0xfa, 0x81, 0xa7, 0xb3, 0x44, + 0x96, 0xef, 0xe2, 0xb2, 0x4e, 0xed, 0x73, 0x19, 0x9e, 0x78, 0xad, 0x47, + 0x22, 0x18, 0x93, 0x47, 0x51, 0x85, 0x91, 0x99, 0xe4, 0x26, 0x96, 0x33, + 0x51, 0x1a, 0xa6, 0xdb, 0x23, 0x19, 0xfc, 0xf8, 0x7d, 0x9e, 0xa9, 0x35, + 0x5c, 0x0b, 0x34, 0x28, 0xf6, 0xa5, 0x72, 0x45, 0x88, 0x41, 0x48, 0xf8, + 0xe9, 0x55, 0xd2, 0xb1, 0xe9, 0xa1, 0xf2, 0xe8, 0x97, 0xd8, 0x2a, 0x78, + 0x8c, 0x1d, 0x64, 0x0f, 0x36, 0x0a, 0x7d, 0x45, 0x93, 0x66, 0xdf, 0x67, + 0x92, 0x65, 0x30, 0xce, 0x83, 0xb2, 0x25, 0x29, 0xbd, 0xff, 0xce, 0xbb, + 0x63, 0xbd, 0x4e, 0x43, 0x4d, 0x8f, 0x6e, 0xf6, 0x43, 0x4f, 0xaf, 0x53, + 0xed, 0xd9, 0x95, 0xbc, 0x7e, 0xe7, 0x4e, 0x4e, 0xd2, 0xde, 0xff, 0xc5, + 0x6c, 0x9d, 0x9e, 0x98, 0x62, 0x76, 0xf3, 0x78, 0xe7, 0xf3, 0xf2, 0xd0, + 0xfe, 0xcd, 0x63, 0x7f, 0xd8, 0xb7, 0x6c, 0x59, 0x1f, 0x37, 0x49, 0xad, + 0x9d, 0xad, 0x1d, 0xa7, 0x64, 0xf7, 0x52, 0x8c, 0xf7, 0xff, 0x7c, 0x1d, + 0x3d, 0x4d, 0xc9, 0x8e, 0xbf, 0x7b, 0x4d, 0xaf, 0x3b, 0xac, 0x66, 0xce, + 0x75, 0x6d, 0x7a, 0xef, 0xd5, 0x65, 0x25, 0xb3, 0xfb, 0x2e, 0x7c, 0xcd, + 0x81, 0x2c, 0xdd, 0x63, 0x03, 0xc9, 0x80, 0x52, 0x3a, 0x8f, 0x0a, 0x95, + 0xa8, 0x25, 0xb8, 0x07, 0xc7, 0xb5, 0x61, 0xe1, 0x44, 0x94, 0x0c, 0x8a, + 0xe7, 0xe5, 0x86, 0xc9, 0x6a, 0x04, 0x80, 0xf8, 0xac, 0x94, 0x8c, 0x95, + 0x6e, 0x9a, 0x4f, 0x44, 0x54, 0x64, 0x0a, 0xe4, 0xe5, 0xe6, 0xb0, 0xd1, + 0x16, 0xe2, 0xe1, 0xf5, 0x4d, 0x5a, 0x06, 0x23, 0x36, 0x53, 0x9e, 0x62, + 0xc9, 0x98, 0xcc, 0x92, 0x07, 0xb2, 0xb3, 0xd8, 0x5a, 0x4a, 0x35, 0x36, + 0x61, 0x19, 0x4d, 0x7b, 0xdb, 0xf1, 0xa8, 0xce, 0x4e, 0x7f, 0xaf, 0x6a, + 0x64, 0xcb, 0x7f, 0x39, 0x9b, 0xdd, 0x55, 0xf0, 0xf5, 0xe5, 0x8f, 0xc8, + 0xbf, 0x69, 0xad, 0x52, 0x59, 0xea, 0xe5, 0xbb, 0xa1, 0xfb, 0x75, 0x36, + 0x76, 0x63, 0x77, 0x18, 0xde, 0xad, 0xbf, 0x20, 0x8e, 0x09, 0xc9, 0xcb, + 0x2f, 0x9b, 0xec, 0xd9, 0xbd, 0xce, 0xac, 0xed, 0x26, 0x6a, 0xcc, 0xf5, + 0x9c, 0x6d, 0x66, 0xfd, 0x3e, 0xb6, 0x67, 0xb6, 0x7f, 0xf7, 0xeb, 0xb3, + 0x90, 0x5a, 0x94, 0xf6, 0xb7, 0x9c, 0xbd, 0x76, 0xbf, 0x47, 0x2e, 0xba, + 0xfc, 0xca, 0x4b, 0xbd, 0x02, 0xe5, 0xaa, 0x79, 0x59, 0xcd, 0x01, 0x44, + 0xa4, 0xc2, 0xe1, 0xfa, 0x49, 0x3b, 0x3e, 0x22, 0x8d, 0x06, 0x65, 0xc3, + 0x21, 0x81, 0x19, 0x28, 0x48, 0x57, 0x26, 0x0f, 0xa5, 0xb3, 0x64, 0x25, + 0xa4, 0x93, 0x07, 0x61, 0x8d, 0x09, 0x88, 0x29, 0xa8, 0xa6, 0x65, 0xc7, + 0x27, 0x05, 0xc6, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x20, 0x10, 0x31, 0x04, 0x19, 0x34, 0x1c, 0x0e, 0xc2, 0xe2, 0xd8, + 0xac, 0xc1, 0x0c, 0x9c, 0xf6, 0x30, 0x54, 0x8e, 0x23, 0x74, 0x8c, 0xa7, + 0x3f, 0xae, 0x6d, 0x48, 0x62, 0x4c, 0x28, 0x30, 0xdb, 0x6e, 0xf4, 0xac, + 0x19, 0xd3, 0xf8, 0x75, 0x85, 0x88, 0x96, 0x54, 0x16, 0x61, 0x24, 0x6c, + 0xbc, 0xb2, 0x3d, 0x64, 0xfc, 0x21, 0xb3, 0xb5, 0x3d, 0x85, 0x89, 0x73, + 0x7a, 0xc6, 0xa5, 0x99, 0x60, 0xc9, 0x3d, 0x63, 0x49, 0x7d, 0x31, 0x3e, + 0x7b, 0x0e, 0x0f, 0x8a, 0xfb, 0x39, 0xcd, 0x60, 0xb0, 0xef, 0xc3, 0x9e, + 0xd8, 0xb4, 0xb7, 0x85, 0x06, 0x1e, 0xdf, 0x62, 0x0b, 0x05, 0x5a, 0xe4, + 0x87, 0x68, 0xcf, 0x33, 0xb8, 0x31, 0x22, 0x62, 0x36, 0x2b, 0x59, 0x2f, + 0x8f, 0x02, 0x0f, 0xc3, 0x9b, 0x56, 0x64, 0xb3, 0x7b, 0x76, 0x6b, 0x0b, + 0x12, 0x6a, 0x4d, 0x41, 0x8a, 0xd7, 0x6d, 0x30, 0x66, 0x8f, 0x62, 0x52, + 0x8d, 0x71, 0xa1, 0xc4, 0xcb, 0xd8, 0x3e, 0x04, 0x69, 0xfb, 0x2c, 0x29, + 0x2b, 0x02, 0x0c, 0x3d, 0x43, 0x9e, 0x0c, 0x56, 0xf7, 0x33, 0xbd, 0xe3, + 0x61, 0xf8, 0x9a, 0x99, 0x95, 0x39, 0x08, 0xc0, 0x51, 0x98, 0x08, 0x51, + 0xa4, 0x5f, 0xd6, 0xd4, 0xea, 0xa5, 0x6a, 0x24, 0xf8, 0x34, 0xe3, 0xb3, + 0xa5, 0x49, 0x13, 0x7a, 0x08, 0x4a, 0x2f, 0xa6, 0x55, 0x47, 0x33, 0x45, + 0xd5, 0x8d, 0xe7, 0x59, 0xf8, 0xa8, 0x8e, 0xc0, 0x78, 0x2e, 0x2a, 0xb7, + 0x12, 0x08, 0xae, 0x5d, 0xa7, 0x85, 0xc9, 0x94, 0xcb, 0x69, 0x7a, 0xf7, + 0x56, 0x44, 0x1a, 0xa8, 0x93, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0d, 0xd6, + 0x2f, 0x76, 0x34, 0x89, 0x89, 0x7b, 0x70, 0xc4, 0xce, 0xd6, 0x91, 0x3d, + 0x2f, 0x6e, 0x14, 0xd1, 0xd8, 0xd6, 0x04, 0x99, 0xed, 0xc2, 0x60, 0xba, + 0xdb, 0x04, 0x93, 0x31, 0xb8, 0xc8, 0x85, 0x27, 0xb2, 0xbb, 0x45, 0x0f, + 0x32, 0x67, 0x51, 0x90, 0xea, 0x80, 0x5a, 0x65, 0x66, 0x80, 0x5c, 0x23, + 0x2a, 0xa4, 0x6f, 0xb6, 0xd6, 0x91, 0xe3, 0x50, 0x59, 0x3d, 0x53, 0x65, + 0x2d, 0x59, 0xbf, 0xab, 0xf5, 0x0a, 0x69, 0xa3, 0xc7, 0xbd, 0xa2, 0xcd, + 0x68, 0x34, 0xbd, 0xe2, 0xcb, 0xbb, 0xdb, 0x50, 0xa0, 0x40, 0x6c, 0x6d, + 0x9a, 0x49, 0xa6, 0x79, 0x13, 0x53, 0x46, 0x89, 0x0a, 0x0c, 0xb6, 0xb6, + 0xa7, 0xaf, 0x88, 0xda, 0xf5, 0xdc, 0x3a, 0x6e, 0x2b, 0x7c, 0xd1, 0x59, + 0xe0, 0x4b, 0x02, 0xaf, 0xa9, 0x1f, 0xde, 0xdb, 0xc6, 0xa0, 0x41, 0xb5, + 0x62, 0xc9, 0x2b, 0x8d, 0xb5, 0x2c, 0x6a, 0x43, 0xcb, 0x3d, 0xb1, 0x13, + 0x2c, 0x5a, 0x87, 0x47, 0x0a, 0xea, 0xcf, 0x21, 0x65, 0xee, 0xe2, 0x47, + 0xd4, 0x3c, 0xdb, 0x70, 0x61, 0xe7, 0x77, 0xad, 0xb4, 0xfa, 0x4a, 0xd9, + 0x62, 0x03, 0xdf, 0x95, 0x75, 0xdc, 0x4f, 0xe6, 0x03, 0x3d, 0x02, 0xd8, + 0xa8, 0x73, 0x3c, 0x87, 0x04, 0x15, 0x21, 0x72, 0x83, 0x08, 0x85, 0xa9, + 0x96, 0x11, 0xe9, 0xf3, 0x3c, 0xfc, 0xd2, 0xdb, 0x48, 0xf8, 0x54, 0x96, + 0xd8, 0x2b, 0x86, 0xb4, 0x03, 0x8a, 0x9d, 0x3c, 0x80, 0x5c, 0x45, 0xd9, + 0xec, 0xd0, 0x16, 0x01, 0xf1, 0x52, 0xe0, 0xc8, 0x0c, 0x90, 0x28, 0x81, + 0x69, 0xd6, 0x84, 0x72, 0x6e, 0xaf, 0x68, 0x71, 0xb4, 0xe6, 0xba, 0x04, + 0x33, 0xdb, 0x29, 0x0a, 0xd7, 0x6a, 0x22, 0x89, 0xf5, 0x39, 0x99, 0x9e, + 0x66, 0x16, 0xe6, 0x3a, 0xc9, 0x5e, 0x2f, 0x9c, 0xe2, 0x97, 0x79, 0xba, + 0x62, 0x16, 0xab, 0xe9, 0x06, 0xfa, 0x96, 0xdf, 0x7e, 0xd3, 0xfa, 0xe6, + 0xd8, 0xf7, 0xa4, 0x2f, 0x9c, 0xc4, 0xf0, 0x61, 0xe7, 0x31, 0x31, 0x57, + 0xbb, 0x87, 0x37, 0xc6, 0xb1, 0xf1, 0xb9, 0xb3, 0xad, 0xd7, 0xf8, 0xbe, + 0x0c, 0x96, 0xbd, 0x35, 0x49, 0xfc, 0x5b, 0xe7, 0x7b, 0xf5, 0xae, 0xeb, + 0x13, 0x75, 0xcd, 0xf3, 0xe9, 0x8c, 0xc1, 0xb6, 0x25, 0xfb, 0xf1, 0x27, + 0x8f, 0x98, 0xb9, 0xd7, 0xfa, 0xa6, 0x6f, 0xdf, 0x4f, 0x07, 0x18, 0x91, + 0xcf, 0xcf, 0x6a, 0xb2, 0xeb, 0x6f, 0x99, 0xa1, 0x44, 0x7a, 0xf5, 0x37, + 0x15, 0x9e, 0x2a, 0x1c, 0xde, 0x69, 0x3e, 0x3e, 0x57, 0x51, 0xd0, 0xc6, + 0x47, 0xaf, 0x39, 0xcc, 0xdc, 0xdc, 0x2e, 0x6c, 0x77, 0x59, 0x80, 0x83, + 0x5a, 0x82, 0xa5, 0x6f, 0x3c, 0x2c, 0x78, 0xa9, 0x1c, 0x21, 0x23, 0xf7, + 0xcc, 0x9a, 0x6d, 0xc0, 0x46, 0x4e, 0x40, 0x95, 0x49, 0x2a, 0x2a, 0xa5, + 0x0b, 0x8b, 0x92, 0xe2, 0x7c, 0xfa, 0x2f, 0xa1, 0x6a, 0x51, 0x12, 0x90, + 0x3c, 0x61, 0x45, 0x95, 0xb3, 0x99, 0xb0, 0xf5, 0x58, 0xdb, 0x4b, 0x32, + 0xfb, 0x95, 0xff, 0xd5, 0xcd, 0xb7, 0xcc, 0x5f, 0x3b, 0x49, 0xe9, 0xc9, + 0x71, 0xb8, 0x3f, 0x33, 0x2d, 0xd3, 0xb6, 0xcd, 0xa5, 0x73, 0x6d, 0x96, + 0xec, 0xcd, 0xed, 0x9e, 0xfe, 0x9c, 0xfc, 0x66, 0x96, 0x63, 0x23, 0x5d, + 0x68, 0x76, 0xbb, 0x9f, 0x05, 0xba, 0xdb, 0x4b, 0xed, 0xb3, 0x3b, 0xb2, + 0x7a, 0xf4, 0x62, 0xbd, 0xf7, 0xe7, 0xb7, 0xa6, 0xf7, 0xf9, 0xc9, 0xaf, + 0xdb, 0xef, 0x69, 0xcf, 0xb5, 0x2d, 0xf6, 0x97, 0xef, 0x77, 0x76, 0xf5, + 0x8e, 0x96, 0x96, 0x33, 0x96, 0x24, 0xf3, 0xfa, 0x3c, 0x5f, 0x3d, 0x43, + 0x2b, 0x59, 0xd3, 0x02, 0x6c, 0x25, 0xa3, 0xd6, 0xcb, 0x06, 0x49, 0x50, + 0x95, 0xd8, 0x0a, 0x89, 0x23, 0xd0, 0x96, 0x90, 0x42, 0xd2, 0x48, 0xfa, + 0x7b, 0x10, 0x4c, 0xad, 0xd3, 0xc6, 0x13, 0x10, 0x53, 0x51, 0x4c, 0xcb, + 0x8e, 0x4e, 0x0b, 0x8c, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x60, 0x10, 0x20, 0x1a, 0xec, 0xa4, 0x3e, 0x1e, 0x4c, 0xc7, 0x44, + 0xc3, 0x85, 0x60, 0x42, 0x46, 0xa9, 0x62, 0x08, 0x05, 0x85, 0x90, 0xa8, + 0xa1, 0x0c, 0x36, 0x48, 0x11, 0x23, 0x4c, 0xfc, 0xba, 0xaa, 0xb0, 0xd2, + 0x68, 0x1e, 0x69, 0x02, 0x30, 0x89, 0x1a, 0xc8, 0xd5, 0x5a, 0x73, 0x46, + 0xc5, 0x3c, 0xfa, 0x34, 0x13, 0x4e, 0x39, 0x34, 0xd7, 0xc6, 0xa1, 0xc0, + 0xb5, 0x37, 0x03, 0x5b, 0xc6, 0xe1, 0x65, 0xeb, 0x83, 0xe9, 0x71, 0x1f, + 0x6d, 0xda, 0x9a, 0x68, 0x0d, 0x70, 0x1e, 0x5f, 0x19, 0x8d, 0xb8, 0x91, + 0x31, 0xa7, 0xb3, 0xc8, 0xd6, 0xcd, 0x25, 0x6d, 0x99, 0xf7, 0x0b, 0x55, + 0xab, 0x74, 0x38, 0xb5, 0xbd, 0x73, 0xbb, 0x79, 0xf7, 0x88, 0x2f, 0xb1, + 0x9d, 0x42, 0x7f, 0x06, 0x69, 0x2b, 0x87, 0x50, 0x9f, 0x5d, 0xfe, 0x20, + 0xcd, 0x6f, 0x58, 0x50, 0x35, 0x48, 0x93, 0xd6, 0x3d, 0x6b, 0x9f, 0x3d, + 0xb5, 0x58, 0x2d, 0x9b, 0x7a, 0xe1, 0x4a, 0xc2, 0xc3, 0xed, 0xbf, 0xf2, + 0x41, 0x78, 0xe1, 0x09, 0x5c, 0xcc, 0xf3, 0x3e, 0x03, 0x26, 0x14, 0xa9, + 0xb9, 0xd3, 0xea, 0xf5, 0x62, 0xf1, 0xb8, 0x88, 0x62, 0x6d, 0x84, 0x5f, + 0x0b, 0xea, 0xed, 0xeb, 0xd3, 0x05, 0x76, 0xc0, 0xa2, 0x76, 0x6f, 0x45, + 0x5b, 0x38, 0x4e, 0x62, 0x30, 0x64, 0x20, 0x58, 0x51, 0xaf, 0x92, 0xa8, + 0x82, 0x54, 0x84, 0xc4, 0x99, 0x00, 0x0a, 0xa4, 0xc9, 0x51, 0x80, 0xc4, + 0xcb, 0x00, 0x87, 0xc8, 0xc2, 0x87, 0x48, 0x57, 0xb2, 0x97, 0x1b, 0x38, + 0x30, 0x89, 0x9f, 0x5b, 0x1d, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0d, 0xd6, + 0x18, 0x76, 0x34, 0x89, 0x89, 0x7b, 0x70, 0xc1, 0x0e, 0xa6, 0x92, 0x25, + 0x8f, 0x6e, 0x54, 0xe9, 0xda, 0xd4, 0x24, 0xa5, 0x8d, 0xc2, 0x7d, 0xbb, + 0x1a, 0xc0, 0x94, 0xb1, 0xb8, 0x62, 0x3b, 0x50, 0x0e, 0x09, 0x46, 0xce, + 0x99, 0x24, 0x95, 0x0f, 0x3b, 0xaf, 0x52, 0x26, 0xce, 0x97, 0xc2, 0x58, + 0x5c, 0xa1, 0xf5, 0x0f, 0x5c, 0xba, 0x7b, 0x4a, 0xb3, 0xce, 0x64, 0x70, + 0xe9, 0x79, 0x3d, 0xa2, 0x47, 0x9a, 0x58, 0x38, 0xbd, 0x2b, 0x5a, 0xc4, + 0xf2, 0xc1, 0xd4, 0xfa, 0xd5, 0x31, 0xac, 0xe3, 0x3a, 0x89, 0x8d, 0x52, + 0x78, 0x91, 0xe1, 0xee, 0x0c, 0xae, 0xbc, 0x2c, 0x44, 0xdd, 0x2d, 0x88, + 0x73, 0x5a, 0xaf, 0x6f, 0x12, 0x0c, 0xf0, 0x26, 0xb6, 0x69, 0x1f, 0x70, + 0x65, 0xdb, 0xc8, 0xba, 0x62, 0x8f, 0x48, 0x12, 0xe6, 0x7c, 0xc4, 0xb5, + 0xe9, 0xaa, 0x66, 0xd6, 0xf4, 0xdc, 0x28, 0x95, 0x87, 0x17, 0x70, 0x5e, + 0xc9, 0x0a, 0x5a, 0xc7, 0xf7, 0x8b, 0x56, 0x3b, 0xc7, 0xad, 0x2f, 0xd8, + 0x62, 0x5f, 0x38, 0x83, 0x66, 0xe8, 0x4e, 0x3d, 0xfc, 0x57, 0x8e, 0x2e, + 0x11, 0x97, 0x0a, 0xa5, 0x4b, 0x23, 0x62, 0x75, 0x18, 0x6a, 0xb3, 0xb5, + 0x48, 0x5f, 0x8c, 0xf5, 0x33, 0x63, 0x89, 0x60, 0x54, 0x1a, 0x4e, 0x95, + 0x47, 0x41, 0x44, 0xfc, 0xae, 0x39, 0x4d, 0xdc, 0x97, 0x22, 0x10, 0xc8, + 0x7c, 0x1f, 0x6f, 0x5e, 0x09, 0xe0, 0xb5, 0x10, 0x90, 0x02, 0x80, 0x9a, + 0x38, 0xa0, 0x75, 0x0a, 0x17, 0x16, 0x49, 0xa3, 0x9f, 0xa9, 0x51, 0x9c, + 0xe6, 0xa2, 0xac, 0xcd, 0xb9, 0x3c, 0x6a, 0x28, 0x96, 0xb3, 0x4e, 0x95, + 0x30, 0x94, 0xda, 0x61, 0x83, 0x25, 0x55, 0x69, 0xfe, 0x13, 0x7e, 0x4d, + 0x4e, 0xe7, 0x41, 0xa7, 0xe0, 0xea, 0xbe, 0xd2, 0xb6, 0x33, 0xaf, 0xb8, + 0xf4, 0xf5, 0xfe, 0x5b, 0xbf, 0xd7, 0xe2, 0xfe, 0x9b, 0xfd, 0x3d, 0x8e, + 0xbc, 0xce, 0xe4, 0xc5, 0x67, 0x2f, 0x6a, 0xb3, 0x93, 0x93, 0x3d, 0xfd, + 0xcd, 0xf3, 0x75, 0xdd, 0x63, 0xbe, 0x6b, 0x91, 0x7b, 0x7d, 0x66, 0x53, + 0x5f, 0xa6, 0x9d, 0x3d, 0x9d, 0x2e, 0x3e, 0x71, 0xf5, 0x9a, 0xcd, 0x96, + 0xf5, 0x75, 0xde, 0xbe, 0x7d, 0x10, 0xb1, 0xfc, 0xa5, 0x19, 0xbd, 0x27, + 0x31, 0xb7, 0x31, 0x75, 0x6f, 0x15, 0x9a, 0xbb, 0x72, 0xfa, 0x96, 0xd5, + 0xa6, 0x3f, 0x54, 0x7b, 0x19, 0x7c, 0xd0, 0x7b, 0x25, 0x68, 0xf0, 0xa0, + 0xa8, 0x07, 0x54, 0x15, 0x0f, 0x0e, 0xce, 0x84, 0x83, 0xe3, 0xb5, 0x0a, + 0x9a, 0x14, 0x0a, 0x11, 0x93, 0x0e, 0x02, 0x42, 0x55, 0x5c, 0x42, 0x25, + 0x08, 0x89, 0x9d, 0x73, 0xbd, 0x11, 0x88, 0x8a, 0x84, 0x8c, 0x05, 0xc6, + 0x1c, 0xe3, 0x62, 0x6d, 0x58, 0x84, 0x40, 0x51, 0xcb, 0x5d, 0xb3, 0xb1, + 0xc9, 0x32, 0xaa, 0xef, 0x66, 0x14, 0x81, 0x99, 0x76, 0xdf, 0x3a, 0xac, + 0x8b, 0x4f, 0x6b, 0x6f, 0x21, 0x59, 0xe5, 0x4c, 0x5c, 0x71, 0x4f, 0x1f, + 0xbd, 0x94, 0x5b, 0xb1, 0xd9, 0xcd, 0xff, 0xa7, 0xdf, 0xe1, 0xdd, 0xb6, + 0x7f, 0x7b, 0xf0, 0xf7, 0xf6, 0x6f, 0x64, 0x35, 0xe8, 0x66, 0x0d, 0xcf, + 0x63, 0x29, 0xf3, 0xf3, 0xb3, 0xd6, 0xde, 0xfb, 0x4d, 0x3f, 0xe5, 0x89, + 0xa7, 0x57, 0x97, 0xdf, 0xf7, 0x6d, 0xb1, 0xe7, 0x57, 0xe9, 0x99, 0x4f, + 0x9a, 0x35, 0x5d, 0xfb, 0xde, 0xf9, 0x7a, 0x38, 0xd5, 0x6d, 0xb4, 0xc9, + 0x7e, 0xbf, 0x3f, 0xf2, 0xd5, 0xe6, 0xe7, 0xd7, 0xdb, 0x52, 0x1c, 0xde, + 0xee, 0x6f, 0xd7, 0xd5, 0xe4, 0x8b, 0x17, 0xa1, 0x3c, 0x80, 0x7e, 0xf1, + 0x29, 0x1b, 0xcb, 0xcf, 0x46, 0x47, 0xa5, 0x24, 0xcb, 0x44, 0xa0, 0x68, + 0x3c, 0x88, 0x4b, 0x8b, 0x61, 0x40, 0x93, 0x0a, 0x73, 0xc2, 0xc0, 0x24, + 0xa0, 0x7e, 0x02, 0xcb, 0x11, 0x10, 0xd5, 0xe2, 0x62, 0x0a, 0x6a, 0x29, + 0x99, 0x71, 0xc9, 0xc1, 0x71, 0x92, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x70, 0x0a, 0x13, 0xc2, 0xb0, 0xb8, 0x36, 0x2d, 0xba, 0x68, 0x68, + 0x3a, 0x88, 0x51, 0x19, 0xa1, 0xe4, 0x9e, 0xaa, 0x91, 0x81, 0xd9, 0x48, + 0xe9, 0x60, 0xba, 0x8d, 0x47, 0x14, 0x99, 0x36, 0xe9, 0x47, 0xba, 0x05, + 0xcd, 0x15, 0x69, 0xae, 0x89, 0xb4, 0x3d, 0xa8, 0xbc, 0x99, 0x1a, 0xb8, + 0x66, 0x4d, 0x28, 0x85, 0x0d, 0xe4, 0xc5, 0x5e, 0x31, 0x40, 0x99, 0xef, + 0xb4, 0x3a, 0x62, 0x68, 0xf1, 0xe2, 0xda, 0x0c, 0x58, 0x13, 0xdb, 0x35, + 0xdd, 0x99, 0xbe, 0xe2, 0x3d, 0xf1, 0xa2, 0x49, 0x23, 0x33, 0x8e, 0x15, + 0xd4, 0x67, 0x7b, 0x9c, 0x6a, 0x47, 0xde, 0x2d, 0x75, 0xe3, 0xe6, 0x25, + 0x2d, 0x98, 0x55, 0xce, 0x5b, 0x70, 0xf3, 0xeb, 0x76, 0x93, 0x2e, 0x0d, + 0x5e, 0x05, 0x1b, 0x24, 0x8b, 0x7b, 0x7c, 0xd2, 0xcf, 0xf7, 0x2c, 0xf3, + 0xc7, 0xd3, 0xec, 0xd9, 0xa5, 0xce, 0x23, 0x8d, 0x2f, 0x78, 0x72, 0x67, + 0x72, 0x3c, 0xbc, 0x4c, 0x6f, 0xcc, 0xd7, 0x96, 0x78, 0x91, 0xde, 0x46, + 0x9f, 0xb6, 0xb0, 0x49, 0x34, 0x16, 0xf5, 0xe7, 0xcc, 0x29, 0xce, 0xdc, + 0x5c, 0x95, 0x6d, 0xcf, 0x54, 0x86, 0xf9, 0x78, 0xca, 0x40, 0xb8, 0x18, + 0x85, 0xc4, 0xf6, 0x0e, 0x08, 0xc7, 0x82, 0x40, 0xe7, 0x3d, 0x4c, 0x26, + 0x32, 0x4f, 0x00, 0xba, 0x0c, 0x65, 0xda, 0xec, 0xc1, 0x43, 0x51, 0x67, + 0x1a, 0xc4, 0x90, 0xf6, 0x90, 0x00, 0x1d, 0xe4, 0xb0, 0x24, 0x01, 0x03, + 0xc3, 0x92, 0x38, 0xcc, 0x7b, 0x56, 0xd9, 0x6c, 0x7b, 0x1a, 0xc8, 0x46, + 0xdd, 0x35, 0xc5, 0x6f, 0x3a, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0d, 0xd6, + 0x17, 0x76, 0xb4, 0x09, 0x89, 0x7b, 0x70, 0xc2, 0x0e, 0xc6, 0x82, 0x31, + 0x2f, 0x6e, 0x14, 0x89, 0xd8, 0xd4, 0x46, 0x25, 0x8d, 0xc2, 0x7a, 0xba, + 0x5a, 0x80, 0xf3, 0x31, 0xb9, 0xe4, 0x91, 0x13, 0xa2, 0xd5, 0xd6, 0x5c, + 0x96, 0xf0, 0x56, 0x7d, 0x03, 0x50, 0x45, 0x13, 0x86, 0xc2, 0x86, 0x0d, + 0x93, 0x10, 0x28, 0x4c, 0x0f, 0x9c, 0x66, 0xbe, 0xc4, 0xfb, 0x3a, 0xc5, + 0xe5, 0xa9, 0xab, 0xc7, 0x73, 0x79, 0x9d, 0xc0, 0x6f, 0xbe, 0xe9, 0x4f, + 0x3e, 0xfc, 0xb3, 0x4d, 0x1f, 0x37, 0x8d, 0x46, 0x76, 0xd8, 0x90, 0x21, + 0x78, 0xb3, 0x46, 0xf2, 0xc1, 0xbc, 0x6a, 0x4d, 0x8c, 0xc0, 0xbc, 0x91, + 0x9f, 0x5b, 0x5b, 0xb4, 0x7c, 0xc5, 0xbc, 0xff, 0xc1, 0x89, 0xeb, 0x4f, + 0x06, 0x04, 0x0a, 0xc7, 0x8a, 0xfa, 0x35, 0x71, 0x67, 0xde, 0xf5, 0xb5, + 0x61, 0xff, 0x5f, 0x1f, 0x37, 0x85, 0x13, 0x71, 0x65, 0xb7, 0x97, 0x13, + 0x57, 0x7a, 0x89, 0x06, 0xef, 0xed, 0xe1, 0xe7, 0x6c, 0x38, 0xf0, 0xab, + 0x4d, 0xdd, 0x73, 0x3e, 0x74, 0xd5, 0x77, 0x2b, 0xb2, 0xb1, 0xb5, 0xa1, + 0x8c, 0xac, 0x6c, 0x4e, 0x4f, 0x53, 0xd1, 0xcd, 0xc3, 0x91, 0x61, 0x4a, + 0x8a, 0x39, 0x61, 0x1b, 0xea, 0x36, 0x33, 0x7c, 0xbb, 0x1c, 0x6b, 0xce, + 0x6b, 0x65, 0xfd, 0x40, 0x4c, 0xac, 0x75, 0x90, 0x59, 0x50, 0x84, 0xf9, + 0x61, 0x61, 0x72, 0x42, 0x58, 0xb2, 0x52, 0x20, 0x69, 0xc0, 0xa9, 0x92, + 0xc1, 0x65, 0xb7, 0x92, 0x96, 0x48, 0x2c, 0xc6, 0xe3, 0xb1, 0x05, 0xb9, + 0xd0, 0x96, 0xeb, 0xb2, 0x2c, 0xca, 0x7e, 0x4f, 0x86, 0x09, 0x45, 0x2f, + 0x32, 0xe4, 0x14, 0x6f, 0x22, 0xa2, 0xe3, 0xf4, 0x20, 0x46, 0x55, 0x0c, + 0x73, 0x51, 0xbb, 0xf8, 0xe4, 0x3b, 0x3d, 0x1d, 0xba, 0x8d, 0x3b, 0x3f, + 0xf6, 0xb3, 0x15, 0xbd, 0xb2, 0xb5, 0xbe, 0xf5, 0x26, 0xcc, 0x45, 0x33, + 0x35, 0xdb, 0x43, 0x39, 0x5a, 0xb3, 0x5f, 0xcb, 0x7f, 0x6d, 0xf2, 0x93, + 0x3b, 0xd1, 0x45, 0xb6, 0x82, 0xb3, 0x6a, 0xc1, 0xd5, 0x66, 0xbd, 0xb6, + 0xf5, 0xf5, 0xdd, 0xff, 0xbd, 0x97, 0x56, 0xf6, 0x62, 0xb9, 0x5f, 0xcb, + 0xcf, 0xd7, 0xbb, 0xe2, 0xd9, 0xcd, 0x55, 0xdd, 0x4a, 0xd7, 0x29, 0x90, + 0x53, 0x6b, 0x4c, 0xad, 0x18, 0xe6, 0xfa, 0xf0, 0x47, 0x7d, 0xab, 0x4b, + 0x21, 0x64, 0xb5, 0x11, 0x05, 0x3e, 0x97, 0xd6, 0x13, 0x95, 0x38, 0x23, + 0x0f, 0x10, 0xea, 0x23, 0xb2, 0x28, 0xa4, 0x77, 0x3f, 0xe2, 0xb0, 0x9c, + 0x3c, 0xb2, 0x62, 0x44, 0x14, 0x27, 0x64, 0x47, 0x29, 0x2c, 0x41, 0x42, + 0x56, 0xdf, 0x7f, 0x08, 0x91, 0x9a, 0x04, 0x19, 0xb5, 0x48, 0xc4, 0xea, + 0x13, 0xe6, 0x56, 0xd4, 0xfb, 0x3c, 0xb2, 0x3c, 0x33, 0xc6, 0xf2, 0x48, + 0xa4, 0x29, 0x34, 0x08, 0x39, 0x47, 0x94, 0xc4, 0xb4, 0xf9, 0x8a, 0x41, + 0x18, 0x8d, 0xbc, 0xd8, 0xf3, 0x8d, 0xa6, 0xe4, 0xa1, 0xc8, 0x7f, 0x39, + 0xf9, 0x1d, 0x7f, 0xff, 0x29, 0x8c, 0xfd, 0xf2, 0x1d, 0xa6, 0xdb, 0x57, + 0xc7, 0x45, 0x31, 0xca, 0xcd, 0x99, 0xee, 0xc5, 0x9d, 0x36, 0xe9, 0xa7, + 0xda, 0xf7, 0xac, 0xbd, 0x3a, 0xee, 0x4c, 0xf7, 0x4d, 0x69, 0x6b, 0x6d, + 0x9c, 0xa5, 0xf9, 0xff, 0xda, 0x43, 0xf1, 0x43, 0xd4, 0xef, 0x62, 0x97, + 0xea, 0xcf, 0x47, 0xb6, 0xd7, 0x66, 0xb4, 0xcc, 0xfb, 0x7f, 0x7d, 0xdc, + 0xbb, 0x78, 0xfd, 0x2a, 0xcc, 0x33, 0x76, 0x7b, 0x9c, 0xa6, 0xd6, 0x6c, + 0x9d, 0x6d, 0x39, 0xde, 0x6b, 0x8a, 0xed, 0x25, 0x31, 0xf5, 0x49, 0x14, + 0xad, 0x5a, 0xb6, 0xa7, 0xb1, 0x95, 0x30, 0x44, 0x35, 0x68, 0xd4, 0xbc, + 0x38, 0x81, 0x92, 0xd8, 0x2d, 0x1c, 0x21, 0x40, 0x74, 0x5f, 0x8d, 0x79, + 0x18, 0x9f, 0x66, 0x74, 0x01, 0x31, 0x05, 0x35, 0x14, 0xcc, 0xb8, 0xe4, + 0xe0, 0xb8, 0xca, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0x68, 0xea, 0xf3, 0xb4, 0x5f, 0xc4, 0x5e, 0x2e, 0x28, 0xc6, 0x37, + 0xb1, 0x53, 0x88, 0x88, 0xfe, 0x9c, 0x3d, 0x72, 0x91, 0xdc, 0xdd, 0x79, + 0x29, 0x75, 0x37, 0xda, 0x43, 0x3c, 0x4e, 0xb9, 0xd8, 0x16, 0xd6, 0x0e, + 0xa4, 0x16, 0xeb, 0x33, 0x6a, 0xeb, 0xed, 0xe9, 0xfa, 0xcf, 0x79, 0xe5, + 0x27, 0x3a, 0xa9, 0x3a, 0x14, 0x53, 0xe6, 0x24, 0x5d, 0x7b, 0xed, 0xdc, + 0x57, 0x3a, 0xc1, 0x75, 0x4c, 0xed, 0xbe, 0x5a, 0x65, 0x8e, 0x68, 0x4f, + 0x60, 0x47, 0xcd, 0x22, 0x46, 0xd5, 0x19, 0xa9, 0x49, 0xf0, 0xf6, 0x3c, + 0x78, 0xf2, 0x4b, 0x1e, 0x2c, 0xf6, 0x8d, 0xe4, 0xdd, 0xbc, 0xbe, 0x1d, + 0x6f, 0xb8, 0xcd, 0xb2, 0x3c, 0x95, 0x77, 0x2c, 0x5b, 0xce, 0xf2, 0xb4, + 0x7b, 0x09, 0xfb, 0xed, 0xbe, 0x73, 0xb6, 0x62, 0x41, 0xff, 0xe2, 0xdb, + 0x7f, 0x0e, 0x5a, 0xe1, 0xae, 0x57, 0xef, 0x22, 0xde, 0xba, 0x81, 0x8d, + 0x46, 0xc5, 0x2f, 0x5a, 0xdd, 0xbd, 0xeb, 0xc8, 0x94, 0xb4, 0x19, 0x9f, + 0x56, 0xee, 0x3b, 0x78, 0xa9, 0x70, 0x8a, 0xf9, 0x82, 0x14, 0x38, 0x27, + 0x93, 0x32, 0x41, 0x4a, 0xe2, 0x9c, 0x21, 0x2b, 0x4b, 0x07, 0x89, 0x7c, + 0x4e, 0x32, 0x09, 0x99, 0xf6, 0xb8, 0x2d, 0x84, 0xa2, 0x24, 0x72, 0x0a, + 0x38, 0x87, 0x1b, 0x49, 0xa6, 0x84, 0xa3, 0x1b, 0x0e, 0xa4, 0x44, 0x51, + 0x8c, 0xfd, 0x79, 0x55, 0x06, 0x66, 0x8f, 0x01, 0x32, 0x51, 0x1a, 0x24, + 0x01, 0x4e, 0x73, 0x15, 0x67, 0x53, 0x3b, 0x0b, 0x54, 0x33, 0x94, 0x69, + 0x0b, 0x4d, 0x9f, 0x06, 0x26, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xd6, + 0x24, 0x76, 0x33, 0x81, 0xec, 0x7b, 0x70, 0xc7, 0x4e, 0xd6, 0x70, 0x3d, + 0x2f, 0x6e, 0x13, 0xb5, 0xda, 0xd4, 0x04, 0x99, 0x8d, 0xc2, 0x8f, 0x3a, + 0xda, 0x84, 0x93, 0x3d, 0xb8, 0x22, 0x18, 0x56, 0x65, 0xa6, 0xa9, 0x69, + 0xd2, 0x68, 0x05, 0x6d, 0x21, 0x43, 0xa8, 0xde, 0xae, 0xaa, 0x8d, 0x0b, + 0x14, 0x9c, 0xca, 0x4d, 0xb9, 0x6b, 0xa2, 0xa3, 0x13, 0x50, 0xa3, 0xc9, + 0x73, 0x2c, 0x7d, 0xcb, 0x1d, 0xf3, 0x34, 0xb0, 0xbc, 0x4a, 0xc3, 0x6f, + 0x8d, 0x5d, 0x48, 0xc5, 0x26, 0xed, 0x7a, 0x59, 0xaa, 0xde, 0x0e, 0x95, + 0xf3, 0xd2, 0x79, 0xde, 0x3e, 0x83, 0x4c, 0x3f, 0xf6, 0xac, 0x2b, 0x53, + 0x70, 0xe2, 0x5a, 0x34, 0x7a, 0x55, 0xb6, 0xdb, 0x8f, 0x15, 0xc2, 0x67, + 0xdb, 0xb6, 0xa6, 0xa4, 0x5d, 0xda, 0xb6, 0xac, 0xb7, 0x92, 0x15, 0xe2, + 0xda, 0x25, 0xe4, 0xc4, 0x06, 0xb9, 0x63, 0x46, 0xac, 0x7b, 0xdb, 0x3a, + 0x84, 0xfb, 0x4e, 0x56, 0x81, 0x9b, 0x4d, 0x37, 0x96, 0x0c, 0x29, 0xe0, + 0xf8, 0x4f, 0x6f, 0x47, 0x27, 0x70, 0x1c, 0x1d, 0xd9, 0xaa, 0x2c, 0x18, + 0xcf, 0xdc, 0x11, 0x31, 0x0f, 0xc4, 0x8b, 0xf6, 0x06, 0xd6, 0xd4, 0xf1, + 0x01, 0x7e, 0x9c, 0x36, 0xd4, 0xa5, 0xf5, 0x16, 0x4a, 0x79, 0x7d, 0x5d, + 0x2b, 0xd0, 0x06, 0x9c, 0xa5, 0x8c, 0x6f, 0x0f, 0xf6, 0x03, 0x3c, 0x8c, + 0x1c, 0xca, 0xd3, 0x88, 0x53, 0xc7, 0x91, 0x28, 0x34, 0xd5, 0xcf, 0x63, + 0xe8, 0xf7, 0x30, 0x1b, 0x00, 0xa4, 0xe9, 0x06, 0x45, 0x71, 0xc3, 0x52, + 0x42, 0xb6, 0x49, 0xb4, 0xc5, 0xc9, 0x35, 0xba, 0x93, 0xd3, 0x80, 0xcd, + 0x78, 0x76, 0xf4, 0x06, 0x7a, 0xae, 0xb9, 0x90, 0x5d, 0xff, 0x5b, 0x33, + 0x0d, 0x11, 0x1f, 0x2d, 0x1b, 0x87, 0x7b, 0x32, 0x1b, 0xdb, 0x6d, 0x1f, + 0xce, 0xd6, 0xbd, 0xff, 0x2e, 0xf3, 0x73, 0x1d, 0xb2, 0xef, 0x4e, 0xd5, + 0xef, 0xbb, 0x5b, 0x7a, 0xf7, 0x4d, 0x1b, 0xca, 0x39, 0x39, 0x6b, 0x5a, + 0xf7, 0xfa, 0x66, 0x73, 0x15, 0x9a, 0xc1, 0xb9, 0x7b, 0x4d, 0x3a, 0x97, + 0xdb, 0xbb, 0xd4, 0x8e, 0x67, 0xa7, 0xfa, 0xdf, 0x69, 0xb5, 0x36, 0x6f, + 0x5a, 0x65, 0xf3, 0x2d, 0x34, 0xe8, 0xfa, 0xde, 0xe6, 0xc2, 0xde, 0x75, + 0xd8, 0xa4, 0xd3, 0x7b, 0xaf, 0xd7, 0xfa, 0xd9, 0xad, 0xf4, 0x28, 0x58, + 0x62, 0x13, 0xfa, 0x21, 0x15, 0xc9, 0x11, 0x95, 0xcf, 0x04, 0x05, 0x06, + 0x63, 0x8b, 0x2b, 0x07, 0x05, 0x48, 0x97, 0x21, 0x1e, 0xc0, 0x8a, 0x14, + 0x02, 0x85, 0x56, 0x9b, 0x8c, 0x81, 0xd1, 0xa8, 0xbc, 0x55, 0x1c, 0x8d, + 0xd3, 0xbb, 0xe8, 0x3d, 0x4a, 0xe8, 0x28, 0xbc, 0x07, 0xc8, 0x97, 0x25, + 0x34, 0x42, 0xba, 0x85, 0xe1, 0x12, 0xa8, 0xf4, 0x48, 0x74, 0x0d, 0xda, + 0x63, 0xdf, 0x9c, 0x9e, 0x36, 0x22, 0x60, 0x5d, 0x5b, 0x91, 0xb6, 0x98, + 0xdd, 0x76, 0x74, 0x1d, 0x98, 0xcd, 0xdc, 0xcd, 0xbc, 0x65, 0xf7, 0xb5, + 0x63, 0xee, 0xd8, 0xb5, 0x3e, 0x2d, 0xe0, 0xc7, 0x7b, 0x4d, 0x47, 0xae, + 0x6b, 0x6b, 0xd7, 0x78, 0xcd, 0xf7, 0x5f, 0x0b, 0x5a, 0xc6, 0x2d, 0xad, + 0x53, 0x79, 0xcd, 0x6b, 0xaa, 0xee, 0xb8, 0xd5, 0x7e, 0xb2, 0xff, 0x11, + 0xa6, 0xf1, 0xa9, 0x7a, 0x6f, 0xde, 0xbe, 0x3d, 0xb5, 0x5a, 0x78, 0x7f, + 0x18, 0xc6, 0xe3, 0x52, 0xb6, 0xbd, 0xf3, 0xf7, 0xad, 0xe3, 0x7f, 0xea, + 0xb6, 0xad, 0xb1, 0x9b, 0xe7, 0x3f, 0x1a, 0xa5, 0x77, 0x6d, 0xef, 0x1f, + 0xf8, 0x15, 0x84, 0xf2, 0x46, 0xa8, 0x7e, 0x16, 0xe2, 0xa9, 0x61, 0x4d, + 0xb5, 0x13, 0x63, 0xa8, 0x6f, 0x50, 0xe5, 0xcb, 0x2b, 0xa5, 0xc3, 0x6a, + 0xbd, 0x42, 0xf1, 0xc6, 0x29, 0x5c, 0xaa, 0x56, 0xd2, 0x2b, 0x41, 0xb6, + 0x8f, 0x65, 0x5f, 0x7a, 0x9c, 0xba, 0x76, 0xaa, 0x16, 0x24, 0xa6, 0x20, + 0xa6, 0xa2, 0x99, 0x97, 0x1c, 0x9c, 0x17, 0x19, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x20, 0x06, 0x30, 0x2b, 0x7e, 0xc2, 0x78, 0x0c, 0x06, 0xa5, 0xa0, + 0x68, 0x5f, 0x41, 0xab, 0x04, 0xa3, 0x02, 0x84, 0x04, 0x82, 0x02, 0x36, + 0x24, 0x1f, 0xea, 0x09, 0x22, 0xe2, 0x54, 0xb4, 0x8b, 0x53, 0x51, 0xb6, + 0x50, 0xac, 0xc7, 0xd3, 0x67, 0xcd, 0x28, 0x99, 0x8c, 0x40, 0x8c, 0x97, + 0x4c, 0x11, 0xac, 0x98, 0x38, 0xb2, 0x0a, 0x76, 0xfb, 0x41, 0x81, 0xe9, + 0xad, 0x40, 0x8f, 0xf3, 0x0a, 0x58, 0x77, 0xcd, 0x30, 0xf6, 0x0d, 0xdd, + 0xde, 0xd0, 0x6f, 0x4b, 0x47, 0x83, 0xbd, 0x4d, 0x4f, 0xbb, 0xbe, 0x92, + 0xf7, 0xfb, 0x89, 0x0a, 0x0c, 0xd5, 0x8b, 0x8d, 0x52, 0xd0, 0xb7, 0x4b, + 0xeb, 0x71, 0x5e, 0xe5, 0xe6, 0x2d, 0x7d, 0xdf, 0x1d, 0xf3, 0xa6, 0xb6, + 0xda, 0xd6, 0xb1, 0x23, 0x38, 0xc1, 0xde, 0x33, 0x48, 0xce, 0xef, 0x7b, + 0xe6, 0xd7, 0xb6, 0xac, 0xc3, 0xad, 0x47, 0xdc, 0xde, 0x2e, 0x6b, 0xa8, + 0xf0, 0xe7, 0xf6, 0x81, 0x48, 0x51, 0xe0, 0xc6, 0xb4, 0x59, 0xa1, 0xe2, + 0x59, 0xa9, 0x12, 0x1c, 0x18, 0xf7, 0x70, 0x57, 0xc6, 0x7c, 0xe6, 0xd4, + 0xf2, 0xc7, 0x2a, 0xba, 0x64, 0x6a, 0x8d, 0x0c, 0x44, 0x1e, 0x64, 0x26, + 0x33, 0x11, 0x6e, 0x2c, 0x31, 0xcb, 0x0c, 0x15, 0x49, 0xfc, 0xb4, 0xdc, + 0x4e, 0x15, 0x69, 0xd3, 0x74, 0x92, 0x13, 0xe4, 0x5b, 0x64, 0x43, 0x95, + 0x45, 0x86, 0x40, 0x00, 0xd7, 0x7a, 0xa2, 0x1d, 0xcc, 0xa6, 0x29, 0x7f, + 0x35, 0x10, 0x26, 0x52, 0xcb, 0x0b, 0x1a, 0xc0, 0xa5, 0x31, 0x52, 0x63, + 0xdc, 0x94, 0xa1, 0x91, 0x5c, 0xff, 0xfb, 0xd4, 0x40, 0x6e, 0x0f, 0xd6, + 0x04, 0x76, 0x33, 0x89, 0x89, 0x7b, 0x70, 0xc5, 0xce, 0xd6, 0x72, 0x3d, + 0x2f, 0x6e, 0x14, 0xa1, 0xd8, 0xd0, 0x04, 0x99, 0x8d, 0xc2, 0x83, 0xbb, + 0x1a, 0x44, 0xc3, 0x31, 0xb8, 0x4a, 0x93, 0x22, 0x4c, 0x6c, 0x95, 0x29, + 0x12, 0x9f, 0x03, 0xd2, 0x3a, 0xa0, 0x59, 0xa5, 0x4a, 0x1b, 0x8a, 0xa7, + 0x24, 0x25, 0x9c, 0xd2, 0xa3, 0x0c, 0x27, 0x68, 0x72, 0x4a, 0xd4, 0x31, + 0x8f, 0xf5, 0x2c, 0x3b, 0x59, 0xeb, 0xbb, 0x33, 0x52, 0x46, 0x28, 0x34, + 0x93, 0x59, 0x6d, 0xc5, 0x29, 0xeb, 0xb9, 0x31, 0xb8, 0xb3, 0xd6, 0x14, + 0x79, 0x2d, 0xab, 0xbe, 0xd4, 0xd5, 0xbe, 0x1e, 0x56, 0xb6, 0x88, 0xd5, + 0x8c, 0xcc, 0xd9, 0x3f, 0xdd, 0xa1, 0xdf, 0x0d, 0xf4, 0x87, 0x9f, 0x02, + 0x24, 0x1d, 0x46, 0x8b, 0x59, 0xbd, 0xeb, 0x5a, 0x5d, 0x4f, 0xa6, 0xf7, + 0x9b, 0x9a, 0x4c, 0x5a, 0x49, 0xb7, 0x16, 0x4c, 0xf8, 0xaf, 0x61, 0x77, + 0x78, 0xaf, 0xae, 0xad, 0x9a, 0xc0, 0x77, 0x36, 0xe0, 0x69, 0xc6, 0x9b, + 0xbb, 0x07, 0x8f, 0x3d, 0x62, 0x35, 0x65, 0x9d, 0xc2, 0x8c, 0x2a, 0xf5, + 0x1b, 0x0d, 0xd5, 0xd6, 0x55, 0x1c, 0x88, 0x71, 0xd2, 0xe2, 0xa6, 0x99, + 0x2e, 0xa5, 0x27, 0xca, 0x84, 0x28, 0xd1, 0x66, 0x5b, 0x43, 0x4f, 0xc6, + 0x04, 0xc2, 0xb9, 0x02, 0x72, 0xbe, 0x29, 0x4e, 0xd2, 0x7e, 0x85, 0x1f, + 0x86, 0x21, 0x21, 0x26, 0x07, 0x83, 0x96, 0x03, 0x9a, 0x98, 0x12, 0xa9, + 0xb0, 0x44, 0x90, 0x02, 0x33, 0x43, 0x11, 0x3a, 0x29, 0x35, 0x41, 0x8b, + 0xe8, 0xaf, 0x0a, 0xa7, 0x2a, 0x6d, 0x9e, 0xb1, 0x32, 0xcf, 0xc3, 0x89, + 0xa7, 0xb2, 0xe4, 0x1d, 0x26, 0x01, 0xf3, 0xcf, 0x72, 0x06, 0x7f, 0x89, + 0xd2, 0x45, 0x20, 0x51, 0xdd, 0x1f, 0x5a, 0xf3, 0x44, 0x2c, 0x9a, 0xee, + 0xde, 0xbc, 0xe4, 0x0c, 0x66, 0xd6, 0x6d, 0x5e, 0xad, 0x7e, 0x5b, 0xd8, + 0xe9, 0x9d, 0x79, 0xc7, 0x26, 0x8d, 0x6e, 0x5a, 0xbd, 0x66, 0x58, 0xf4, + 0x29, 0x7f, 0x3b, 0x9b, 0xea, 0xd6, 0xba, 0xe5, 0x37, 0xdc, 0x69, 0x6f, + 0xe5, 0x1d, 0xb4, 0xb5, 0x8f, 0xf3, 0xf6, 0xbd, 0xe3, 0xa6, 0x76, 0xd2, + 0xad, 0x41, 0xef, 0xfd, 0xad, 0x5b, 0xd6, 0x67, 0xef, 0x37, 0xad, 0x6b, + 0x2c, 0x2c, 0xae, 0xd3, 0x3d, 0xdd, 0x63, 0x3b, 0xf5, 0x88, 0x50, 0xd6, + 0xb0, 0xd1, 0x99, 0x74, 0xe1, 0xd7, 0x4f, 0xe4, 0x8e, 0xbc, 0x6e, 0x27, + 0x7b, 0xee, 0x17, 0x4b, 0x02, 0x40, 0xe8, 0x52, 0x0a, 0x4a, 0x42, 0x52, + 0x41, 0x19, 0xb3, 0x03, 0xc2, 0xb5, 0xd2, 0x27, 0x42, 0x1c, 0xfc, 0xa0, + 0xbe, 0x11, 0x1c, 0xef, 0xdd, 0x32, 0xf1, 0xf9, 0xfa, 0xc1, 0x41, 0xd9, + 0xda, 0xf4, 0xaa, 0x22, 0x78, 0xec, 0x6d, 0xb4, 0x7c, 0xc4, 0x9c, 0x0e, + 0x52, 0x30, 0x4b, 0x5e, 0x20, 0xcb, 0x83, 0x13, 0xd9, 0xa2, 0x65, 0x3a, + 0x39, 0x84, 0x8a, 0x37, 0x26, 0x28, 0x1b, 0xb8, 0x19, 0x0a, 0xc4, 0x2c, + 0xff, 0x8b, 0x72, 0xfb, 0x7a, 0x6f, 0x53, 0x32, 0xfb, 0x69, 0xb6, 0xf7, + 0xd5, 0xa8, 0xfa, 0x1a, 0x55, 0x8a, 0xd3, 0x3d, 0xcf, 0x5d, 0x9b, 0x6f, + 0xb5, 0x6d, 0xd6, 0xa3, 0x4c, 0x4c, 0xd6, 0xb5, 0xbe, 0x7d, 0xf2, 0xb5, + 0xed, 0xfc, 0xbd, 0xb7, 0x36, 0xf4, 0x59, 0x68, 0xeb, 0x37, 0xee, 0xbf, + 0x65, 0xb2, 0x7e, 0xfb, 0xd9, 0x79, 0x9e, 0xb7, 0xef, 0xd3, 0xfd, 0xe9, + 0xec, 0xf7, 0xfe, 0xff, 0xde, 0xfb, 0x1d, 0x2d, 0x4f, 0x66, 0x35, 0x95, + 0x43, 0xdc, 0x79, 0x6a, 0x03, 0x76, 0xb4, 0x4c, 0x9e, 0xb2, 0xbd, 0x5a, + 0xc4, 0xa2, 0x11, 0xdf, 0xab, 0x06, 0xc2, 0x29, 0x81, 0x0c, 0xd8, 0x7b, + 0x22, 0x0b, 0x43, 0xd3, 0xf4, 0x27, 0x0b, 0xe9, 0x4c, 0x0a, 0xc7, 0xa2, + 0x4b, 0xf1, 0x8f, 0xc6, 0x25, 0x83, 0xc4, 0x14, 0x3a, 0x26, 0x20, 0xa6, + 0xa2, 0x99, 0x97, 0x1c, 0x9c, 0x17, 0x19, 0x2a, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xf0, 0x13, 0x58, 0x64, 0x35, 0x56, 0xdc, 0xc6, 0xf2, 0x10, 0x3e, + 0x26, 0x49, 0xcc, 0xb0, 0xfc, 0xe9, 0x04, 0x9b, 0x07, 0x02, 0x08, 0xd2, + 0x00, 0x56, 0x12, 0x45, 0x2c, 0xb2, 0xc8, 0x22, 0x48, 0xb0, 0x54, 0x03, + 0x9b, 0x69, 0x8d, 0x12, 0x78, 0x4b, 0x56, 0x13, 0x21, 0xa4, 0xbd, 0x81, + 0x98, 0x12, 0x14, 0x89, 0xf0, 0xc1, 0x21, 0x9b, 0x1f, 0x52, 0x59, 0xdd, + 0xc0, 0x83, 0x4a, 0xea, 0x3c, 0xf1, 0x29, 0x79, 0xfc, 0x4c, 0x33, 0x4d, + 0x03, 0x5a, 0xec, 0x90, 0xa3, 0x61, 0xbf, 0x57, 0x7b, 0x2e, 0x33, 0x1f, + 0x4f, 0x67, 0xab, 0xcc, 0xc1, 0xdc, 0x6d, 0x3a, 0xd5, 0xe6, 0xad, 0x29, + 0x16, 0x77, 0xd0, 0x37, 0x6c, 0x6d, 0x86, 0x37, 0x92, 0x34, 0x28, 0xf1, + 0xa0, 0x43, 0x84, 0xf6, 0x8c, 0x99, 0xcd, 0xe7, 0x99, 0xec, 0x6b, 0xdf, + 0xea, 0x77, 0x6c, 0x90, 0xe0, 0xe1, 0xfb, 0x5e, 0x20, 0x6f, 0x10, 0x9e, + 0x5a, 0x2c, 0x08, 0x18, 0x91, 0xec, 0x0a, 0xc3, 0x96, 0xd1, 0xb1, 0x96, + 0x3a, 0xcb, 0x78, 0x51, 0xec, 0xe6, 0xdf, 0x58, 0xb4, 0x55, 0xbc, 0xcb, + 0xa5, 0x0b, 0x32, 0xb5, 0x5d, 0x15, 0x85, 0x61, 0xf4, 0x15, 0x31, 0xa4, + 0xf8, 0xba, 0x93, 0x54, 0xf1, 0x62, 0x46, 0x20, 0xd9, 0xc9, 0x51, 0xcc, + 0x54, 0xab, 0x48, 0xa4, 0xd9, 0xdc, 0x35, 0xcf, 0x53, 0x59, 0x9d, 0xf1, + 0xbe, 0x4f, 0x5c, 0x4a, 0xc3, 0x29, 0x14, 0xe2, 0xf7, 0x00, 0x06, 0x50, + 0x00, 0x10, 0x35, 0x1b, 0x86, 0x41, 0x29, 0xca, 0x41, 0x6a, 0xb3, 0xd5, + 0xab, 0x68, 0x49, 0x50, 0xba, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0d, 0x96, + 0x43, 0x76, 0xb3, 0x09, 0xe6, 0x7b, 0x70, 0xb8, 0x6e, 0xb6, 0x76, 0x31, + 0x2f, 0x6e, 0x57, 0x29, 0xda, 0xcc, 0x07, 0x99, 0xed, 0xc2, 0xda, 0x3b, + 0x59, 0xc8, 0xc4, 0xbd, 0xb8, 0x01, 0xc5, 0x8d, 0x28, 0x86, 0x24, 0xcc, + 0x3d, 0x93, 0x0b, 0xa2, 0x21, 0x42, 0x7d, 0x53, 0xa7, 0xf5, 0x59, 0xcb, + 0xba, 0x47, 0x10, 0x4e, 0xdb, 0x45, 0x68, 0x64, 0xc2, 0x65, 0x95, 0x9c, + 0x27, 0x76, 0x9e, 0x39, 0x6e, 0x91, 0x63, 0xc2, 0xd4, 0x4b, 0x49, 0x3c, + 0x68, 0x93, 0xc8, 0xed, 0xb9, 0xf6, 0xb3, 0x0f, 0xfb, 0x5a, 0xba, 0xae, + 0xe5, 0xce, 0xe9, 0xe9, 0x26, 0xb7, 0xa9, 0x26, 0xf1, 0xb1, 0x58, 0x33, + 0x52, 0x4c, 0x5f, 0x33, 0x5f, 0x17, 0xa7, 0xaf, 0xb7, 0xc4, 0xfa, 0xd5, + 0x6d, 0xef, 0xef, 0x3d, 0x3d, 0x3c, 0x8f, 0xaf, 0x5b, 0x47, 0x7f, 0x4a, + 0xde, 0x27, 0xce, 0xae, 0xfa, 0x1e, 0x6b, 0x6a, 0xd6, 0x36, 0xa2, 0xda, + 0xb5, 0x78, 0xd9, 0x68, 0x70, 0x60, 0xe6, 0xd4, 0xf7, 0xc7, 0xc5, 0xa1, + 0x63, 0x1a, 0x96, 0x5a, 0xc4, 0x63, 0x65, 0x80, 0xea, 0xf5, 0x75, 0x05, + 0xc3, 0x4b, 0x48, 0x73, 0x2a, 0x9d, 0x91, 0x76, 0xb8, 0x3a, 0xa3, 0x26, + 0xcc, 0x57, 0x18, 0x4a, 0xa5, 0xf2, 0x70, 0x2e, 0x50, 0xd5, 0xce, 0x30, + 0x56, 0x54, 0xb1, 0x97, 0x08, 0xb4, 0x5c, 0x35, 0xb2, 0xe0, 0xf0, 0xe5, + 0x66, 0x51, 0x35, 0xce, 0xa2, 0x66, 0x4a, 0x95, 0x70, 0xe8, 0xc0, 0xa3, + 0x84, 0x79, 0x38, 0x65, 0x3e, 0x0a, 0x34, 0x41, 0x89, 0x8d, 0xb7, 0x08, + 0x30, 0x19, 0x23, 0x4c, 0x25, 0xd6, 0x76, 0x1c, 0x9b, 0xd7, 0x63, 0x11, + 0x61, 0x64, 0x22, 0x42, 0xb1, 0x89, 0x6e, 0xa2, 0x7b, 0x20, 0x6d, 0xee, + 0xa3, 0xab, 0x89, 0x77, 0xb2, 0x57, 0x50, 0xb1, 0x48, 0x33, 0x42, 0xc6, + 0xa2, 0xe5, 0xb6, 0x9a, 0x8d, 0x6c, 0xbd, 0x96, 0x16, 0x21, 0x47, 0xf4, + 0x96, 0x79, 0xa0, 0xeb, 0x75, 0x6c, 0x7d, 0xb8, 0xb3, 0xc9, 0x5a, 0xdf, + 0xd7, 0x3e, 0x1e, 0x7e, 0xac, 0xf7, 0xda, 0x2e, 0x63, 0x5e, 0x04, 0x3d, + 0x6f, 0xcf, 0x7b, 0xde, 0x2d, 0x7d, 0x5b, 0x77, 0x6a, 0xc6, 0x6d, 0x85, + 0xab, 0x45, 0xad, 0xaf, 0xac, 0x5a, 0x8f, 0xb1, 0x17, 0x5b, 0xbf, 0xee, + 0xe3, 0x56, 0xba, 0xf4, 0x85, 0x6a, 0xc0, 0x72, 0x8b, 0x48, 0x10, 0x71, + 0x47, 0xf4, 0xc7, 0x85, 0x78, 0xf5, 0x5e, 0x7d, 0x76, 0xbc, 0xb8, 0x46, + 0x6f, 0x50, 0xb6, 0x1f, 0x0b, 0xb4, 0xf3, 0x2a, 0xee, 0x32, 0xed, 0x0b, + 0x2b, 0x1d, 0xab, 0xd3, 0xa9, 0xc3, 0xb1, 0xc9, 0x98, 0xcc, 0x94, 0xeb, + 0x44, 0x32, 0x9c, 0x45, 0xbc, 0xe8, 0x44, 0xa4, 0x89, 0xd5, 0xaa, 0xc2, + 0x4d, 0x4b, 0xb2, 0x1e, 0xea, 0x48, 0xfa, 0x64, 0x10, 0x25, 0x70, 0x44, + 0x5f, 0x4d, 0x01, 0xa1, 0x08, 0x64, 0x5c, 0x7d, 0x6c, 0xa2, 0x46, 0xd0, + 0x95, 0xc8, 0xe6, 0xf8, 0x52, 0x34, 0x93, 0x38, 0xc3, 0xcf, 0x0e, 0xcc, + 0x81, 0x35, 0xc4, 0xca, 0xa0, 0x11, 0x26, 0x54, 0x9d, 0xd1, 0x9a, 0x91, + 0xc5, 0x44, 0x48, 0x19, 0x52, 0x19, 0x1c, 0x87, 0x4a, 0x09, 0x33, 0x4c, + 0x7f, 0x98, 0xb6, 0xa6, 0xf1, 0x4d, 0x6f, 0x7e, 0xd7, 0xbe, 0x77, 0xe2, + 0xe6, 0x6d, 0x7c, 0x47, 0xf1, 0x6b, 0xb9, 0xaf, 0x68, 0xf4, 0x9a, 0xba, + 0xb5, 0x60, 0x63, 0x77, 0x83, 0x8a, 0x5a, 0xdf, 0x16, 0xcc, 0xd0, 0x37, + 0xa8, 0xb0, 0x60, 0x6b, 0x3b, 0x7f, 0xb6, 0xaf, 0xf3, 0xaf, 0xaa, 0xd1, + 0x96, 0xff, 0x1a, 0xc6, 0xe4, 0xbe, 0x66, 0x87, 0x4d, 0x6b, 0x7b, 0xbe, + 0x75, 0x02, 0xb5, 0x87, 0xe9, 0x0b, 0x31, 0xe1, 0x49, 0x02, 0x26, 0xf3, + 0x68, 0x99, 0x96, 0x5c, 0x52, 0xb9, 0xac, 0xd6, 0x8d, 0x2b, 0xe8, 0x54, + 0xd6, 0x5c, 0x23, 0x32, 0x3f, 0x83, 0x75, 0xb8, 0xee, 0x6d, 0xcd, 0xa7, + 0x4a, 0x75, 0xa1, 0x2c, 0xfc, 0xe9, 0xa3, 0x09, 0x21, 0x46, 0xdd, 0x0c, + 0x8c, 0xfd, 0x48, 0x99, 0x5c, 0x9b, 0xa7, 0x3a, 0x44, 0xe6, 0x4d, 0x33, + 0x20, 0x5b, 0xda, 0x4e, 0x95, 0x39, 0x7e, 0x54, 0xcf, 0xba, 0x18, 0x00, + 0x04, 0xd5, 0x4f, 0xd9, 0x54, 0x24, 0xda, 0x3c, 0xb1, 0x9c, 0x62, 0x30, + 0x36, 0xb5, 0x51, 0x87, 0x22, 0x80, 0x18, 0x00, 0xeb, 0x37, 0xba, 0xd0, + 0x41, 0x2b, 0xf8, 0x92, 0x7a, 0xe9, 0xc0, 0x22, 0xe4, 0x1f, 0x49, 0x84, + 0xe0, 0xd4, 0xd5, 0x60, 0xc4, 0xf3, 0x30, 0xc2, 0xe4, 0x89, 0x1c, 0x78, + 0xa7, 0xc5, 0x94, 0x86, 0xfe, 0xaa, 0x7e, 0x66, 0xd9, 0x6b, 0xb7, 0x58, + 0x97, 0xe6, 0x7d, 0x73, 0x6d, 0x1d, 0xe3, 0xb3, 0x5f, 0x2e, 0x56, 0x5a, + 0xce, 0xc8, 0x6d, 0xae, 0xdb, 0xe0, 0xc8, 0x66, 0xef, 0xd3, 0xbe, 0x0a, + 0xbf, 0x2d, 0x33, 0xf5, 0x77, 0xd9, 0x85, 0xaa, 0xc4, 0xb6, 0xb1, 0xcb, + 0x3f, 0x93, 0x6e, 0xbc, 0xce, 0xf6, 0x33, 0x91, 0x3d, 0x1b, 0x0f, 0x3f, + 0x5c, 0xc6, 0x9f, 0xd7, 0xa0, 0x6e, 0xf9, 0x3d, 0x4f, 0x8b, 0xa2, 0x97, + 0xd9, 0xac, 0x1f, 0xb2, 0xb9, 0xf7, 0xa3, 0xa6, 0xd1, 0xff, 0x68, 0xda, + 0x03, 0x66, 0xd2, 0x8d, 0x91, 0x55, 0xe1, 0x38, 0x74, 0x68, 0x41, 0x2c, + 0x83, 0x83, 0x89, 0xf8, 0xf0, 0x59, 0x0f, 0x4d, 0x9a, 0x1c, 0xc0, 0x61, + 0x6c, 0x9d, 0xc5, 0x25, 0xa7, 0x82, 0x78, 0xd4, 0x51, 0x58, 0x91, 0x58, + 0x2c, 0x54, 0x50, 0xa4, 0x39, 0x61, 0x65, 0x42, 0xe7, 0x11, 0x80, 0x82, + 0xe4, 0xe5, 0xe3, 0x22, 0x17, 0x13, 0xc9, 0x17, 0x90, 0x5c, 0xc9, 0x54, + 0x4c, 0x36, 0x60, 0xda, 0x18, 0xff, 0xfb, 0xd4, 0x60, 0x63, 0x8d, 0x95, + 0x6e, 0x76, 0x33, 0x11, 0xe6, 0x63, 0x70, 0xa9, 0x4e, 0xc6, 0x60, 0x25, + 0x2c, 0x6e, 0x19, 0x61, 0xd4, 0xc8, 0x46, 0x31, 0xed, 0xca, 0xc8, 0xba, + 0x59, 0x98, 0x94, 0xbd, 0xb9, 0x6d, 0xa0, 0x9a, 0x05, 0xe4, 0x63, 0xb4, + 0x95, 0x2c, 0x8a, 0xdb, 0x9a, 0x6a, 0x37, 0x34, 0xf4, 0xec, 0x17, 0x21, + 0x8f, 0xb9, 0xca, 0x6b, 0x37, 0x4c, 0xfb, 0x57, 0xa9, 0xca, 0xae, 0xb2, + 0xb7, 0x62, 0xdb, 0x1f, 0xd1, 0xca, 0x66, 0x52, 0x9f, 0x94, 0xa5, 0xaa, + 0xcf, 0x62, 0xde, 0xbd, 0xf3, 0xf7, 0x68, 0xca, 0x57, 0x31, 0xfb, 0x59, + 0xe8, 0x2d, 0x5e, 0x66, 0x68, 0xee, 0x5e, 0x1d, 0xa5, 0x1a, 0xbd, 0x5d, + 0xfd, 0xa6, 0xd2, 0xd7, 0x76, 0x6f, 0xb5, 0x77, 0x17, 0x66, 0xfd, 0x2e, + 0xd3, 0xad, 0xf4, 0xb0, 0xfd, 0xbd, 0xba, 0x5a, 0x1d, 0xf5, 0xf7, 0x7a, + 0x1e, 0x96, 0x67, 0x29, 0x99, 0xed, 0x43, 0x47, 0x6f, 0x97, 0x86, 0xcb, + 0xfd, 0x44, 0xeb, 0x77, 0x64, 0xb2, 0xb0, 0xfd, 0xd6, 0x9f, 0x24, 0x07, + 0x30, 0x08, 0xa6, 0xe2, 0x5a, 0xc3, 0xa7, 0x84, 0x57, 0x8c, 0x1c, 0xb1, + 0xd4, 0x48, 0x09, 0x88, 0x46, 0x8e, 0x83, 0x22, 0x80, 0x8c, 0x33, 0x18, + 0xa0, 0x15, 0x4a, 0x8a, 0x23, 0x24, 0x06, 0x30, 0x3c, 0x06, 0x80, 0xa1, + 0x31, 0x91, 0xd4, 0x90, 0x2f, 0x25, 0xae, 0x36, 0x31, 0x1f, 0xcb, 0x69, + 0x0e, 0xe1, 0xbb, 0x46, 0x0a, 0xcc, 0x1a, 0x55, 0x74, 0x5a, 0xc6, 0xb3, + 0x5f, 0x5e, 0xb0, 0xac, 0x74, 0x72, 0x5d, 0x14, 0x03, 0x75, 0x84, 0xb2, + 0xb3, 0xe8, 0x47, 0x94, 0x4a, 0xb1, 0x5d, 0x29, 0x7e, 0x8c, 0xd2, 0xd0, + 0xd3, 0x1b, 0xc8, 0xd1, 0xed, 0x97, 0x71, 0xa6, 0x77, 0x88, 0x33, 0x47, + 0xdc, 0x9b, 0xd3, 0x74, 0xd5, 0x81, 0x59, 0xbe, 0xa0, 0xc8, 0xd5, 0x1d, + 0x5b, 0x48, 0xf1, 0x5e, 0x36, 0xb8, 0x5a, 0x34, 0xfb, 0x61, 0xbc, 0x18, + 0xb6, 0x81, 0x03, 0x37, 0x9e, 0x9b, 0x73, 0x9a, 0x15, 0x99, 0xa9, 0x1a, + 0x3c, 0x08, 0xfe, 0x1a, 0xce, 0x1f, 0xf6, 0xbb, 0xc3, 0x79, 0x34, 0x90, + 0x9a, 0x9e, 0x6a, 0x14, 0x0a, 0x56, 0xd1, 0xaf, 0x02, 0x33, 0xda, 0xee, + 0x04, 0x27, 0x91, 0xb3, 0x4a, 0xe5, 0xf5, 0x1e, 0x49, 0x89, 0xaf, 0x0e, + 0x35, 0xf3, 0xe1, 0xb7, 0x42, 0x77, 0x0b, 0x70, 0xa1, 0xb9, 0x66, 0xac, + 0xb3, 0x35, 0xb6, 0x4f, 0x0e, 0xac, 0x59, 0x84, 0xc7, 0x15, 0xd4, 0x45, + 0x76, 0x94, 0x8c, 0x44, 0xfa, 0x8d, 0x85, 0x53, 0xd3, 0x86, 0x29, 0x7d, + 0x27, 0x8a, 0x71, 0xbc, 0xe2, 0x54, 0x8f, 0x27, 0xe9, 0x45, 0x11, 0x12, + 0x9d, 0x2a, 0x0e, 0xf4, 0x72, 0xa9, 0x52, 0xdc, 0x5f, 0x18, 0x63, 0xa9, + 0x5b, 0x9c, 0x9e, 0x11, 0x0b, 0x20, 0x2d, 0x14, 0x85, 0x44, 0x24, 0x02, + 0x82, 0x52, 0x76, 0xc3, 0x92, 0x6c, 0xbc, 0x68, 0x8d, 0x55, 0x6c, 0xa0, + 0xac, 0x5e, 0x6a, 0x13, 0xc4, 0x9c, 0x9e, 0x47, 0xd3, 0x69, 0x34, 0x0f, + 0x11, 0x8b, 0xc1, 0x14, 0x52, 0x43, 0x27, 0xce, 0x6a, 0xd2, 0xbb, 0x92, + 0x8d, 0xb7, 0x4c, 0x78, 0xc5, 0x4d, 0x95, 0xb1, 0xaa, 0x5a, 0x91, 0xa9, + 0x59, 0xad, 0x9d, 0xc1, 0x7b, 0x3e, 0x77, 0x5d, 0x67, 0x7f, 0x79, 0xc5, + 0xf7, 0x11, 0xc6, 0xf4, 0xc4, 0x5c, 0xea, 0xf2, 0xf8, 0x78, 0x87, 0x6b, + 0xe3, 0x13, 0xf9, 0xe2, 0xda, 0xf1, 0xf3, 0x59, 0xb7, 0x49, 0xef, 0x7a, + 0x7c, 0xef, 0x7b, 0xcf, 0x8b, 0x26, 0x7d, 0xbd, 0xf7, 0x8c, 0x57, 0x75, + 0xf5, 0x8f, 0x5d, 0x43, 0xc4, 0x6d, 0x42, 0xa4, 0xfb, 0x9b, 0x71, 0xef, + 0x4b, 0x63, 0x10, 0xb1, 0x6f, 0x8a, 0xcd, 0x17, 0x34, 0x97, 0xea, 0x3c, + 0xb0, 0x6b, 0x98, 0xbf, 0x35, 0xc6, 0xe6, 0x61, 0xae, 0xa3, 0x37, 0xbe, + 0x65, 0x59, 0x61, 0x8c, 0xc6, 0xa8, 0x6b, 0x57, 0xc5, 0x9d, 0x90, 0xe7, + 0x53, 0xc5, 0x7b, 0x22, 0xcb, 0xd3, 0xb1, 0x66, 0x65, 0xc2, 0x86, 0x32, + 0x35, 0x22, 0xae, 0x6b, 0x47, 0x39, 0x28, 0x09, 0x21, 0x34, 0x2f, 0x8a, + 0x99, 0x06, 0x55, 0x19, 0x00, 0x04, 0xd7, 0x5c, 0xbf, 0x3e, 0x8f, 0x48, + 0x03, 0x71, 0x84, 0xb7, 0x39, 0xad, 0x35, 0x32, 0xb9, 0x9e, 0x2b, 0x90, + 0x7a, 0x07, 0xb0, 0x9a, 0x1e, 0x9a, 0x13, 0x10, 0x9a, 0xaa, 0xd4, 0x55, + 0x75, 0x35, 0xf1, 0xb7, 0x92, 0x36, 0x48, 0xc0, 0x91, 0xb4, 0x24, 0x8d, + 0xac, 0x59, 0x87, 0x2c, 0xd3, 0x1e, 0x71, 0x39, 0xbd, 0x48, 0xb3, 0x66, + 0x72, 0x7f, 0x20, 0xa3, 0xd4, 0xae, 0x4e, 0xd9, 0xd7, 0x29, 0x46, 0xe1, + 0x5e, 0xe2, 0xdc, 0xca, 0xc5, 0x0b, 0x77, 0xa7, 0xfd, 0xbe, 0x60, 0xca, + 0x43, 0xf9, 0x67, 0x3b, 0xa9, 0x1e, 0xb3, 0xb9, 0x77, 0x72, 0x6f, 0x0b, + 0x5c, 0x8d, 0xae, 0xfb, 0x7a, 0xf9, 0xbb, 0xd5, 0x9d, 0xce, 0x75, 0x7d, + 0xe6, 0x90, 0x4c, 0xc3, 0x56, 0xe0, 0x9c, 0xb3, 0xdb, 0x2b, 0x1f, 0xe9, + 0xb4, 0x13, 0x36, 0x9a, 0x5a, 0x18, 0x6f, 0xd4, 0xc6, 0x91, 0xd2, 0xab, + 0x1d, 0x62, 0x7c, 0xfe, 0x95, 0x38, 0xb5, 0xd6, 0x2f, 0x59, 0x03, 0x6f, + 0x9f, 0x19, 0x2f, 0xa1, 0xda, 0x85, 0x2d, 0x9e, 0x8e, 0x05, 0xd3, 0xf0, + 0xe4, 0x91, 0x68, 0x07, 0x13, 0xd0, 0x6a, 0x03, 0xca, 0x67, 0xc3, 0xc7, + 0x96, 0x4a, 0x66, 0xcd, 0x84, 0x87, 0xf8, 0x62, 0xbb, 0x8a, 0x19, 0x11, + 0xd1, 0x98, 0xca, 0x86, 0xe4, 0xe4, 0xe9, 0x88, 0x02, 0x3a, 0x3e, 0x42, + 0xa4, 0xdb, 0x98, 0x84, 0xdc, 0x53, 0x84, 0x13, 0x65, 0xe4, 0x73, 0x44, + 0x8d, 0xf9, 0xd3, 0xbd, 0x43, 0xff, 0xfb, 0xd4, 0x60, 0x67, 0x0d, 0xd5, + 0x72, 0x76, 0x32, 0x91, 0xe9, 0x63, 0x70, 0xaa, 0xce, 0xd6, 0x50, 0x31, + 0x2c, 0x6e, 0x18, 0x91, 0xda, 0xc6, 0x47, 0xa5, 0xed, 0xc3, 0x1a, 0xbb, + 0x58, 0xc8, 0xf4, 0xbd, 0xb8, 0x49, 0xcd, 0x26, 0x22, 0xc3, 0xe6, 0xc5, + 0xd2, 0x1b, 0x41, 0x18, 0x76, 0x27, 0x14, 0x95, 0x73, 0x0f, 0x4f, 0xbe, + 0xfe, 0xa5, 0x6f, 0xad, 0xb8, 0xf5, 0xb1, 0x0f, 0x27, 0x72, 0x6f, 0x66, + 0xe9, 0x8c, 0xdb, 0x2d, 0xf5, 0xef, 0x83, 0x5d, 0x8a, 0xd5, 0x8f, 0x69, + 0x7d, 0xea, 0xcb, 0xf3, 0x9b, 0x77, 0x3e, 0xb1, 0x39, 0x96, 0xdb, 0xdf, + 0x1d, 0xf6, 0xde, 0xf7, 0x6e, 0xd3, 0x55, 0xcd, 0x7e, 0xdc, 0xfb, 0x5b, + 0xf0, 0xf6, 0xfb, 0xef, 0xf7, 0xfd, 0x36, 0x97, 0xd6, 0x6e, 0xd6, 0x40, + 0xec, 0x17, 0x9c, 0x69, 0xe5, 0x91, 0xc1, 0xf8, 0xd7, 0x5d, 0xcb, 0x57, + 0x97, 0xf5, 0xd9, 0x57, 0xc7, 0x56, 0x60, 0xf1, 0x74, 0x62, 0x4d, 0x09, + 0x44, 0x9f, 0x89, 0xa7, 0x8d, 0xd5, 0x0e, 0x4b, 0x4b, 0x46, 0xe3, 0xe0, + 0xef, 0x10, 0x5e, 0x35, 0x26, 0x3b, 0x5e, 0xa4, 0x2d, 0x15, 0x25, 0x35, + 0x56, 0x56, 0x08, 0x44, 0xa6, 0x08, 0xe0, 0x74, 0x44, 0x38, 0x71, 0xcf, + 0x24, 0x0d, 0xac, 0xb3, 0x90, 0xe1, 0xe9, 0x38, 0x54, 0x86, 0x59, 0xfc, + 0xa8, 0x91, 0xfb, 0x2c, 0x68, 0x04, 0xd8, 0x66, 0x06, 0xe6, 0xb9, 0xd4, + 0x2e, 0x5b, 0x44, 0x61, 0x5a, 0x5d, 0x13, 0x02, 0xad, 0x42, 0x6c, 0xca, + 0x62, 0x00, 0x40, 0x3e, 0xc8, 0x87, 0xb3, 0x32, 0x82, 0x9c, 0x15, 0x9b, + 0x73, 0x66, 0x55, 0x96, 0xd2, 0x26, 0x65, 0x2d, 0x8f, 0x0d, 0xd6, 0xa3, + 0x79, 0x62, 0x46, 0x89, 0x87, 0x27, 0xfe, 0xd5, 0x83, 0x9b, 0x5a, 0xad, + 0xd4, 0x75, 0xbd, 0x62, 0x69, 0x6b, 0x4c, 0xc3, 0x8c, 0xdf, 0xf0, 0xfe, + 0xf8, 0x83, 0x36, 0x61, 0xe3, 0x1e, 0x2e, 0xb7, 0x0f, 0xc7, 0x65, 0x87, + 0x58, 0x11, 0x1e, 0xef, 0x6f, 0x60, 0x4b, 0x68, 0x55, 0x97, 0x71, 0x64, + 0xa4, 0x5a, 0x41, 0xbd, 0xb5, 0x5a, 0x45, 0xc3, 0xfa, 0x42, 0x85, 0x7c, + 0x43, 0x8d, 0x3c, 0x90, 0x21, 0xd7, 0x50, 0x68, 0xdb, 0x02, 0x15, 0x71, + 0xba, 0xea, 0x2b, 0xfc, 0x46, 0xac, 0x28, 0x36, 0x67, 0x9b, 0x71, 0xf5, + 0x13, 0x18, 0xcb, 0x6b, 0xf6, 0xa9, 0x70, 0xde, 0xf9, 0xaa, 0x64, 0xbd, + 0x6d, 0x96, 0x45, 0xdb, 0x6a, 0x65, 0x48, 0xa9, 0x23, 0x0c, 0x84, 0xaa, + 0x56, 0x76, 0x48, 0x4e, 0x0e, 0x66, 0x9b, 0x62, 0x34, 0xec, 0x56, 0x4e, + 0x86, 0xa1, 0x88, 0x51, 0x1d, 0xc9, 0xa1, 0xaa, 0x42, 0xa3, 0x29, 0x8c, + 0xf4, 0x13, 0xea, 0xcb, 0xb6, 0x40, 0xda, 0x91, 0x8d, 0x6c, 0xec, 0x1d, + 0xa9, 0xb9, 0x8f, 0x66, 0xcc, 0x41, 0x56, 0x1d, 0x6e, 0x70, 0x5d, 0xe8, + 0x4a, 0x89, 0x13, 0x44, 0xd4, 0xeb, 0x53, 0x15, 0x17, 0x6d, 0x61, 0xa2, + 0x78, 0x98, 0x54, 0x4e, 0x34, 0x91, 0xf0, 0x1d, 0x19, 0x13, 0x71, 0xea, + 0x25, 0x34, 0x88, 0x47, 0x5b, 0x83, 0x89, 0x57, 0x45, 0x17, 0x1a, 0x51, + 0xa8, 0x31, 0xae, 0xd5, 0xbd, 0x5a, 0x49, 0xe5, 0xac, 0x0a, 0x5a, 0x59, + 0x22, 0xeb, 0x5b, 0xce, 0x62, 0x5e, 0x1c, 0x6a, 0xf6, 0xc7, 0xfb, 0xbd, + 0x31, 0x49, 0x6d, 0x88, 0xcf, 0xed, 0x58, 0x14, 0xad, 0x37, 0x5b, 0xb2, + 0xd5, 0xfe, 0xa1, 0x66, 0xf9, 0x67, 0x8f, 0x4b, 0x3e, 0x8d, 0x8a, 0x52, + 0x68, 0x58, 0xbd, 0x6d, 0x02, 0x2e, 0xab, 0x25, 0x20, 0x41, 0x8b, 0x4c, + 0xda, 0x14, 0x29, 0x2f, 0x4b, 0x42, 0xcc, 0x5f, 0x16, 0x14, 0x68, 0x71, + 0xa8, 0xfb, 0x75, 0x87, 0x0d, 0xb2, 0x1d, 0x68, 0xcb, 0xab, 0x47, 0xa2, + 0x9b, 0x5b, 0x83, 0x2d, 0x1b, 0xe2, 0xc3, 0x62, 0x6e, 0x8b, 0x4d, 0xbc, + 0x77, 0x15, 0xaa, 0x25, 0xda, 0x58, 0x21, 0xc0, 0x61, 0xb3, 0x3a, 0xc3, + 0x02, 0xbd, 0x19, 0x18, 0x91, 0xa0, 0x1c, 0x90, 0x09, 0x44, 0xf9, 0x71, + 0x55, 0x30, 0x1f, 0xa4, 0xcd, 0x98, 0xf6, 0x38, 0x92, 0xc7, 0xd8, 0x9b, + 0x93, 0xb9, 0x4e, 0x22, 0xdc, 0x50, 0x9e, 0x07, 0x6a, 0xd4, 0x0d, 0xaa, + 0x18, 0xe2, 0x52, 0x7a, 0x10, 0x70, 0x72, 0xa1, 0xad, 0x4a, 0x0b, 0x5f, + 0x2a, 0x6c, 0xd2, 0x08, 0xed, 0x4c, 0xc1, 0xa8, 0x14, 0x62, 0x0e, 0x87, + 0x2d, 0x67, 0xd6, 0x29, 0x38, 0x20, 0x86, 0x4d, 0x5e, 0xfc, 0xa0, 0xec, + 0x73, 0x9d, 0x36, 0xde, 0xd2, 0x84, 0x7a, 0x16, 0x19, 0x59, 0x5b, 0x53, + 0xbf, 0xe0, 0xed, 0xd6, 0xaf, 0x5e, 0xeb, 0xd2, 0xf0, 0xd6, 0x9a, 0xfd, + 0xae, 0xdf, 0xfe, 0x7c, 0x10, 0x4c, 0xef, 0xef, 0x2d, 0xfa, 0x47, 0x94, + 0xbd, 0x19, 0xcb, 0xe7, 0x43, 0x3f, 0x4e, 0xbf, 0xe6, 0x7e, 0xdd, 0x8c, + 0xbc, 0xc3, 0xf9, 0x6b, 0x4d, 0x7d, 0x75, 0xda, 0x8e, 0x77, 0xa8, 0xf2, + 0xc9, 0xcb, 0x43, 0xf5, 0x99, 0x81, 0xa7, 0x6b, 0x6a, 0xe5, 0x5a, 0x8a, + 0xb6, 0x65, 0xd9, 0xb3, 0x97, 0xb3, 0x75, 0x8d, 0xcd, 0xb2, 0x7b, 0x7e, + 0x3b, 0xee, 0xde, 0xab, 0x1c, 0x75, 0xb7, 0x60, 0x8c, 0xa4, 0x60, 0x3e, + 0x94, 0x16, 0xa1, 0x20, 0x98, 0x20, 0xaf, 0x2a, 0xdc, 0xf1, 0x81, 0xc4, + 0xd5, 0xa2, 0xf1, 0x18, 0x0d, 0x27, 0x5c, 0x24, 0xae, 0x0f, 0x46, 0x90, + 0x04, 0x48, 0x80, 0xce, 0x2a, 0x80, 0x0d, 0xbd, 0x74, 0x57, 0x74, 0x28, + 0xee, 0x3b, 0x32, 0x7a, 0x55, 0x27, 0x04, 0xd1, 0x80, 0x45, 0x81, 0xec, + 0xd1, 0x02, 0xa1, 0x09, 0x58, 0x16, 0x82, 0xa6, 0x24, 0x1e, 0x10, 0x20, + 0x29, 0x0e, 0x83, 0x27, 0x44, 0xff, 0xfb, 0xd4, 0x60, 0x62, 0x8d, 0xd5, + 0x07, 0x75, 0x32, 0x01, 0x86, 0x63, 0x72, 0x98, 0xae, 0xc6, 0x51, 0x30, + 0x6b, 0x6e, 0x1a, 0x79, 0xda, 0xc0, 0x27, 0xa5, 0xed, 0xc3, 0x12, 0x3b, + 0x18, 0x40, 0xf4, 0xbd, 0xb8, 0x0f, 0xc1, 0x35, 0xd9, 0x8f, 0x76, 0x2a, + 0xfa, 0x49, 0x89, 0x5c, 0xc3, 0x92, 0x75, 0xd2, 0x3c, 0x55, 0xef, 0x46, + 0x38, 0x51, 0xb1, 0x37, 0xa6, 0x7e, 0xea, 0xdd, 0x30, 0xd9, 0x88, 0x7a, + 0x7d, 0x6c, 0x7f, 0xff, 0xbd, 0xb2, 0xd6, 0xa5, 0x15, 0x7b, 0x1b, 0xc2, + 0x4c, 0x72, 0x5b, 0x66, 0x5f, 0x0e, 0x56, 0x9d, 0x6f, 0x73, 0xb5, 0xdd, + 0xba, 0x96, 0x3e, 0x76, 0xe7, 0x65, 0x6d, 0xe7, 0xb7, 0xb7, 0x6b, 0xea, + 0xdd, 0x28, 0xb2, 0x12, 0xdf, 0xcb, 0x12, 0x93, 0xb0, 0x6d, 0x8f, 0xe8, + 0xcc, 0xad, 0x06, 0x03, 0x7b, 0x5e, 0x40, 0x91, 0xd3, 0x50, 0xac, 0x41, + 0x13, 0x87, 0xb2, 0x29, 0x59, 0xb3, 0x43, 0xe4, 0x90, 0x44, 0xf0, 0x45, + 0x10, 0x27, 0xc9, 0x20, 0xec, 0x40, 0x8d, 0xa1, 0xc2, 0xd2, 0x81, 0xd6, + 0x4b, 0xa4, 0x0d, 0xa9, 0x0e, 0x75, 0x31, 0xce, 0x4e, 0x4e, 0x13, 0xe9, + 0x2a, 0xf9, 0x5c, 0xa3, 0x6f, 0x73, 0xa6, 0x32, 0xa0, 0x58, 0x03, 0x21, + 0x24, 0x31, 0x86, 0x4f, 0x30, 0x61, 0x0a, 0xc2, 0xa2, 0x54, 0x2c, 0x21, + 0x78, 0x9a, 0xc5, 0x22, 0xb6, 0xe6, 0x44, 0x84, 0x54, 0xc9, 0x93, 0x12, + 0x25, 0x64, 0x91, 0x3e, 0xc4, 0xad, 0xd1, 0x26, 0x42, 0xc9, 0x92, 0xf1, + 0xfb, 0xb8, 0xaf, 0x59, 0x1b, 0x5b, 0xe2, 0x40, 0x96, 0x59, 0x29, 0xa9, + 0x1c, 0x2f, 0xa8, 0x97, 0x74, 0xbd, 0x1f, 0x4f, 0x5d, 0x7a, 0xb1, 0xed, + 0x9e, 0x2d, 0xb1, 0x2c, 0xfa, 0x5e, 0x85, 0xaf, 0x66, 0x5b, 0x3e, 0x92, + 0x67, 0x07, 0xf0, 0x1e, 0xee, 0xad, 0xba, 0x6f, 0xea, 0xde, 0xda, 0xe1, + 0xb6, 0xd8, 0x4e, 0x53, 0xc9, 0xe2, 0x5e, 0x75, 0xe7, 0x1f, 0x02, 0xfa, + 0xa6, 0x99, 0x71, 0x76, 0xc7, 0xf7, 0xd3, 0x96, 0xde, 0x39, 0x6a, 0xda, + 0x85, 0x5a, 0x57, 0x5a, 0x9e, 0x79, 0x1e, 0x39, 0x3c, 0xce, 0xd8, 0x1a, + 0x98, 0x9e, 0xc0, 0x7f, 0x09, 0xba, 0x0c, 0x27, 0xf3, 0x41, 0x65, 0x99, + 0x9a, 0x8c, 0xec, 0x0a, 0xf6, 0x0c, 0xb3, 0x33, 0x31, 0xbc, 0x88, 0xe4, + 0x7d, 0x27, 0x4b, 0xa1, 0x76, 0x43, 0x14, 0xf0, 0x4f, 0xe3, 0xc8, 0xba, + 0x0b, 0x92, 0x35, 0x88, 0xb0, 0x12, 0x30, 0xd5, 0x12, 0xc8, 0x22, 0xbc, + 0x53, 0x1d, 0xae, 0x28, 0xb2, 0xfd, 0x08, 0xdc, 0x45, 0x97, 0x32, 0x8c, + 0x34, 0x50, 0xb3, 0x50, 0xef, 0x1c, 0x87, 0x83, 0x9e, 0x08, 0xea, 0xa5, + 0x51, 0x66, 0xfa, 0x05, 0x4a, 0xb8, 0x68, 0x66, 0x4e, 0xb5, 0x19, 0x50, + 0xdd, 0xc4, 0x0f, 0x24, 0x51, 0x11, 0x62, 0xb3, 0xaf, 0xd5, 0x2e, 0xaa, + 0x49, 0x14, 0x91, 0x1a, 0x8c, 0x91, 0xc1, 0x7b, 0x4d, 0xc8, 0x0b, 0xac, + 0xc1, 0x55, 0x14, 0xbe, 0xd5, 0x96, 0x86, 0x45, 0x0d, 0xbd, 0xcd, 0x29, + 0x0d, 0x6e, 0x33, 0xef, 0x9d, 0xf9, 0x1b, 0x69, 0x98, 0xaf, 0xeb, 0xdc, + 0xd8, 0xe2, 0xbd, 0xad, 0x2f, 0xa8, 0x59, 0xcd, 0x20, 0x3d, 0x7b, 0x8b, + 0x3d, 0x7e, 0xd9, 0x24, 0xb3, 0xda, 0x4b, 0x56, 0xf0, 0xa1, 0xb6, 0xeb, + 0x11, 0x23, 0x31, 0x33, 0x66, 0x57, 0xd7, 0x79, 0xdb, 0xed, 0x9c, 0xc3, + 0x9a, 0x5e, 0xe4, 0xc4, 0xf3, 0x31, 0x6f, 0x34, 0x7d, 0xf8, 0xcf, 0x99, + 0xa3, 0xe5, 0xc9, 0xf6, 0x2c, 0xf2, 0x48, 0x11, 0xa0, 0x4f, 0x58, 0x91, + 0xa1, 0xcb, 0xba, 0xc0, 0x83, 0x12, 0x95, 0x92, 0x34, 0x79, 0xe9, 0x12, + 0x3d, 0xf1, 0x5c, 0x43, 0x9e, 0x3c, 0x08, 0xd8, 0x89, 0x3d, 0xa3, 0x36, + 0xb1, 0x3d, 0x81, 0x2b, 0x6b, 0xf6, 0x15, 0x22, 0xd1, 0xf6, 0xee, 0x36, + 0x2a, 0xca, 0xdc, 0xa7, 0x43, 0xd6, 0x14, 0x29, 0xc2, 0x94, 0xf5, 0x6c, + 0x5c, 0x1c, 0x67, 0x6b, 0x19, 0x66, 0xa6, 0x43, 0xd2, 0x8a, 0x43, 0xc1, + 0x46, 0x30, 0x8e, 0x63, 0x58, 0xeb, 0x27, 0x24, 0xe1, 0x5a, 0xb4, 0x87, + 0xb3, 0xe6, 0x1b, 0x50, 0xdb, 0x60, 0x9c, 0xa7, 0x5a, 0x24, 0xe3, 0x2f, + 0x4f, 0x64, 0x79, 0x09, 0x44, 0xbc, 0x6d, 0x93, 0x26, 0x4e, 0x32, 0x2b, + 0x5c, 0x40, 0x8e, 0xcb, 0xde, 0xac, 0x75, 0xc5, 0x75, 0x6c, 0x42, 0x54, + 0x4d, 0x08, 0xb2, 0xcc, 0x97, 0x59, 0x02, 0x04, 0xd8, 0x83, 0x90, 0xd1, + 0xb8, 0x22, 0x83, 0x46, 0x90, 0x94, 0x55, 0xd0, 0xe4, 0x71, 0xed, 0x65, + 0x7b, 0x2f, 0xa9, 0x75, 0xe7, 0xef, 0x31, 0x35, 0x0e, 0xa7, 0x76, 0x38, + 0xd0, 0xa9, 0xd7, 0x7d, 0x93, 0xda, 0xbb, 0xed, 0xd2, 0x28, 0xb9, 0x99, + 0xaa, 0x48, 0x62, 0x62, 0x2b, 0x5a, 0xfd, 0x5c, 0x89, 0x2c, 0x49, 0x7a, + 0x04, 0x24, 0x73, 0xbb, 0x1f, 0xdd, 0x8a, 0xb0, 0xc5, 0x1d, 0xa3, 0xbd, + 0x48, 0x2b, 0xad, 0x41, 0xf9, 0x5e, 0xa6, 0xaf, 0xf7, 0xe8, 0xcc, 0x15, + 0xdd, 0x8b, 0x97, 0x1e, 0xa3, 0x89, 0xbc, 0xab, 0x0c, 0x7c, 0x2d, 0xee, + 0xaf, 0x9d, 0xa1, 0xd3, 0x51, 0xf3, 0xec, 0x42, 0x9d, 0x71, 0x84, 0x5c, + 0x48, 0x7d, 0x13, 0xa9, 0xf5, 0x73, 0x8f, 0x11, 0x0e, 0xcd, 0xd6, 0x95, + 0xc7, 0x60, 0xa0, 0x3b, 0x38, 0x31, 0x1f, 0x57, 0x15, 0xd5, 0x8e, 0x63, + 0xbb, 0xb5, 0x26, 0x19, 0x19, 0x05, 0xc2, 0x48, 0xa8, 0x30, 0x2e, 0x9a, + 0x29, 0x08, 0x42, 0x41, 0x81, 0x2c, 0xfe, 0x0e, 0x1a, 0xb2, 0x1f, 0x0e, + 0x6f, 0xc6, 0x83, 0x5b, 0x33, 0x42, 0x98, 0xba, 0xb4, 0x30, 0x2f, 0x33, + 0x01, 0xa6, 0x34, 0x99, 0x21, 0xff, 0xfb, 0xd4, 0x60, 0x67, 0x8d, 0xf5, + 0xd0, 0x76, 0xb0, 0x01, 0xe9, 0x63, 0x70, 0xb8, 0x4e, 0xc6, 0x10, 0x3c, + 0xcf, 0x6e, 0x16, 0xed, 0xd8, 0xc0, 0x27, 0xa5, 0xed, 0xc2, 0xb6, 0x3b, + 0x18, 0x00, 0xf4, 0xb1, 0xb8, 0x52, 0x7d, 0xa5, 0x23, 0x14, 0xd1, 0xa7, + 0xac, 0xfb, 0x36, 0x1f, 0xd2, 0x3b, 0x4d, 0x6a, 0xf6, 0x5f, 0x0e, 0x94, + 0x69, 0xf3, 0xa4, 0x5c, 0xd2, 0x3e, 0x23, 0xf9, 0xbc, 0xb0, 0xfb, 0xed, + 0x56, 0xb1, 0xb7, 0xbb, 0xd1, 0xf4, 0x08, 0xb2, 0x6e, 0xfe, 0x3d, 0xa3, + 0xda, 0xb0, 0x24, 0x83, 0xbc, 0x43, 0x9f, 0x50, 0xb3, 0xf4, 0xe3, 0x5b, + 0xc2, 0x85, 0xe2, 0xcc, 0xcb, 0x9c, 0x6e, 0x4c, 0xd2, 0x35, 0x71, 0x99, + 0x22, 0xea, 0x0e, 0xf1, 0x9d, 0x3f, 0x89, 0xac, 0xe2, 0xf8, 0x92, 0xec, + 0x9b, 0xd4, 0x09, 0xab, 0x48, 0x73, 0xb9, 0xc5, 0x95, 0x91, 0xf4, 0x6c, + 0xb9, 0xd6, 0x7a, 0x52, 0x0c, 0x67, 0x91, 0x33, 0x88, 0x30, 0x35, 0xe2, + 0x47, 0xd5, 0x64, 0x8d, 0x59, 0xbd, 0x6f, 0x25, 0xe2, 0x5b, 0x1b, 0xb5, + 0x69, 0x3d, 0xf5, 0x1d, 0x81, 0x9e, 0xaf, 0x6e, 0xee, 0x13, 0x0b, 0x45, + 0xcf, 0xd4, 0xe9, 0x7c, 0x57, 0xaa, 0x53, 0x86, 0x92, 0x12, 0x92, 0x56, + 0xa9, 0x4e, 0x67, 0x03, 0xad, 0x61, 0x0e, 0x8c, 0xb8, 0x42, 0x54, 0x66, + 0xe2, 0x40, 0xbf, 0x9f, 0xce, 0x92, 0xe9, 0x74, 0x38, 0x77, 0x9e, 0x71, + 0x50, 0x36, 0xa4, 0x44, 0x6d, 0x1c, 0xdf, 0x24, 0x73, 0xa1, 0x5d, 0x46, + 0xa5, 0x4c, 0x79, 0x90, 0x8b, 0x52, 0x33, 0x84, 0xe2, 0x4d, 0x28, 0x3e, + 0x67, 0x52, 0x2c, 0x48, 0x7d, 0x1a, 0xad, 0x34, 0x81, 0xed, 0x95, 0x4e, + 0x48, 0xe3, 0xa9, 0x4d, 0x8c, 0x95, 0x2e, 0x85, 0xd0, 0x7c, 0x32, 0xad, + 0x53, 0xd3, 0x99, 0x48, 0xf8, 0xcc, 0x3a, 0x45, 0xcc, 0x98, 0x9b, 0x14, + 0xd7, 0xb4, 0xf8, 0x89, 0xac, 0xfb, 0xb5, 0xe6, 0x26, 0xa3, 0xc0, 0xfa, + 0xf2, 0x46, 0xdc, 0xaf, 0x9c, 0x22, 0xe2, 0x4d, 0x4b, 0x9f, 0xac, 0x62, + 0xf1, 0xa0, 0xc9, 0x86, 0xe8, 0x37, 0xbd, 0x2a, 0xd5, 0x5b, 0xd7, 0x53, + 0xef, 0x71, 0xa3, 0x52, 0xd5, 0x8d, 0xaf, 0x9b, 0xe6, 0x96, 0x8b, 0x7f, + 0x67, 0xb0, 0xbf, 0x83, 0x1e, 0x3e, 0xe6, 0xc5, 0x2b, 0x4f, 0xa8, 0x9e, + 0xd9, 0x9e, 0xbe, 0x9f, 0x50, 0x29, 0x49, 0xa9, 0x0a, 0x26, 0xad, 0xef, + 0xe3, 0x57, 0x51, 0x2d, 0x77, 0xf6, 0x85, 0x23, 0x12, 0x8e, 0x06, 0x20, + 0xb4, 0x3d, 0x7b, 0x09, 0x5c, 0xa7, 0x6a, 0x61, 0x6d, 0x65, 0x27, 0xae, + 0x95, 0x8f, 0xd2, 0xe9, 0xe7, 0xcc, 0x27, 0xcb, 0xd5, 0x01, 0x60, 0x16, + 0x93, 0xc8, 0xca, 0x1f, 0xe9, 0x28, 0x4d, 0xb0, 0x66, 0x42, 0x9a, 0x11, + 0x25, 0xc1, 0x39, 0x38, 0xa9, 0x88, 0xe5, 0x2a, 0x99, 0x4f, 0x11, 0xea, + 0x6e, 0x02, 0xad, 0xf6, 0x5d, 0xb0, 0x8c, 0xab, 0x6a, 0x30, 0x99, 0xc2, + 0x28, 0x93, 0x39, 0x4d, 0x62, 0xdc, 0xca, 0x90, 0x54, 0xef, 0xb3, 0xb2, + 0x6d, 0x0c, 0x11, 0x51, 0x46, 0x9b, 0x65, 0x12, 0xdb, 0x39, 0xee, 0x42, + 0x9d, 0xd7, 0x43, 0x4a, 0x47, 0x0b, 0xdb, 0x4e, 0xaf, 0xcd, 0x57, 0x47, + 0x04, 0x5b, 0x5b, 0x3f, 0x35, 0xb7, 0xda, 0x9a, 0xec, 0x7f, 0x02, 0xe5, + 0xda, 0xb7, 0xe9, 0xcc, 0xfc, 0x3c, 0xdc, 0xd5, 0xb9, 0xe6, 0x79, 0x4c, + 0x5f, 0x91, 0x33, 0xec, 0xdb, 0x0e, 0x5b, 0xaa, 0x78, 0xdd, 0x8e, 0x7d, + 0xa9, 0x86, 0x2b, 0x33, 0x9b, 0x58, 0x25, 0xb6, 0x66, 0xac, 0xd7, 0x29, + 0xd7, 0x6b, 0x16, 0xdb, 0x56, 0xce, 0x3f, 0xb5, 0x81, 0xaa, 0x6d, 0xb7, + 0xf6, 0x57, 0x7d, 0x5d, 0xfe, 0xb3, 0xcb, 0x5d, 0xdb, 0xfc, 0xbd, 0xf1, + 0xbc, 0xd2, 0x87, 0x95, 0xc6, 0xc2, 0xd4, 0x36, 0xc4, 0x92, 0xad, 0x4f, + 0x0e, 0x21, 0x2a, 0x94, 0x56, 0x0f, 0x06, 0x78, 0x9c, 0x50, 0x54, 0x26, + 0x9f, 0xbc, 0x0d, 0x8e, 0x16, 0x18, 0x9e, 0x38, 0x0b, 0xb0, 0x1d, 0x1f, + 0x09, 0x22, 0x28, 0x20, 0x98, 0xb2, 0x55, 0x7a, 0xb1, 0xd5, 0x06, 0xab, + 0x6b, 0x04, 0x73, 0xb6, 0x64, 0x8a, 0x56, 0x63, 0xc1, 0xf3, 0x76, 0x63, + 0xae, 0x91, 0x36, 0x44, 0x81, 0xa5, 0xe7, 0x21, 0x30, 0xa4, 0xe4, 0x8c, + 0x93, 0x11, 0x54, 0x20, 0x9e, 0x21, 0x5e, 0xb5, 0x76, 0x0c, 0xde, 0xdc, + 0x92, 0x37, 0x1b, 0x5a, 0x2d, 0xa2, 0x57, 0x51, 0x4d, 0x0b, 0x08, 0xf1, + 0x3b, 0xad, 0xa4, 0xdc, 0x08, 0xd1, 0x69, 0x97, 0x92, 0x52, 0xf2, 0x7a, + 0x5e, 0x34, 0xf5, 0xbe, 0x1f, 0x40, 0x7d, 0xbb, 0x6e, 0xcf, 0x60, 0x41, + 0x89, 0x2c, 0x0d, 0x67, 0x31, 0x2f, 0x1f, 0xd2, 0xda, 0x89, 0xdb, 0xf3, + 0x1e, 0xdf, 0x3b, 0x8b, 0xed, 0x1e, 0x2b, 0x95, 0x6f, 0xb9, 0xa4, 0xbd, + 0xf7, 0x25, 0xe3, 0xc2, 0xcd, 0xb3, 0x5c, 0xf8, 0x77, 0x85, 0x6a, 0x49, + 0x5a, 0xfa, 0x42, 0xd4, 0x91, 0x6d, 0x66, 0xa8, 0x0f, 0xab, 0x78, 0xb4, + 0xbd, 0x33, 0x3c, 0xd9, 0xc4, 0xdb, 0xaf, 0x85, 0x1a, 0xf4, 0xbe, 0x23, + 0x49, 0xdf, 0x31, 0xda, 0x3c, 0x19, 0x1b, 0x23, 0xef, 0x34, 0xc2, 0x7a, + 0x8c, 0x4b, 0xce, 0x91, 0x2d, 0x67, 0x03, 0x21, 0xbe, 0x60, 0x99, 0x2c, + 0x2d, 0xce, 0x08, 0x52, 0x75, 0x40, 0x6c, 0x13, 0x46, 0x53, 0xf5, 0xc5, + 0x2c, 0x6f, 0x20, 0x94, 0xcb, 0x27, 0x1a, 0x85, 0xcc, 0x85, 0x26, 0x5e, + 0x52, 0x3a, 0x1a, 0xae, 0x18, 0x00, 0x01, 0x11, 0x7a, 0xb0, 0x74, 0xab, + 0x59, 0x8e, 0x75, 0x63, 0xb7, 0x4a, 0x57, 0x6c, 0xd2, 0xcd, 0x33, 0xc5, + 0x8c, 0x51, 0x57, 0xa0, 0x6c, 0xff, 0xfb, 0xd4, 0x60, 0x69, 0x8d, 0xd5, + 0xd0, 0x75, 0xaf, 0x01, 0xe9, 0x7b, 0x70, 0xb7, 0xae, 0x95, 0xf2, 0x3d, + 0x2f, 0x6e, 0x56, 0x9d, 0xd8, 0xba, 0x27, 0xa5, 0xed, 0xc2, 0xdb, 0xbb, + 0x17, 0x01, 0x86, 0x31, 0xb8, 0xf4, 0xd4, 0xa6, 0x14, 0x43, 0xd9, 0x95, + 0x21, 0x11, 0xa1, 0x22, 0x8a, 0x90, 0x11, 0x2e, 0x89, 0xf4, 0x42, 0x15, + 0xd2, 0x87, 0x08, 0xd6, 0x67, 0x3e, 0xba, 0x10, 0x6e, 0xbb, 0xea, 0x42, + 0xbc, 0xd4, 0xbf, 0x81, 0x58, 0xb1, 0x75, 0xbf, 0x02, 0x5a, 0xd7, 0x3b, + 0x81, 0x68, 0xf5, 0xcc, 0xb6, 0x9b, 0x5a, 0x8d, 0x6c, 0xc9, 0xaf, 0x06, + 0x04, 0xf9, 0xa6, 0xeb, 0x98, 0x53, 0x66, 0xce, 0x50, 0x66, 0x7b, 0x8c, + 0x40, 0x9a, 0xd5, 0xa7, 0x83, 0x5a, 0xc5, 0xb6, 0x62, 0xd3, 0x71, 0x64, + 0x83, 0xf5, 0xe9, 0x3d, 0xed, 0xb9, 0x22, 0x5f, 0x39, 0xc5, 0xfc, 0x2c, + 0xea, 0x97, 0xb4, 0x08, 0xba, 0xac, 0x1d, 0x57, 0x1b, 0xcd, 0xa6, 0x9b, + 0x52, 0xc1, 0x8d, 0x88, 0x39, 0xd6, 0xed, 0xac, 0x5e, 0x5b, 0xeb, 0x13, + 0x46, 0x83, 0x19, 0xf5, 0x77, 0x05, 0xb2, 0x34, 0x68, 0x93, 0x3d, 0x63, + 0x70, 0x78, 0xdc, 0xa1, 0x3f, 0x9d, 0xb4, 0xbe, 0x42, 0x95, 0x82, 0xbc, + 0x89, 0x6a, 0x47, 0xbe, 0xc2, 0xba, 0x1a, 0xb5, 0x86, 0x5b, 0xb5, 0x17, + 0xd5, 0xa4, 0xd9, 0xe4, 0x5c, 0xa3, 0x4f, 0x33, 0x81, 0xe2, 0xa6, 0x64, + 0x50, 0x21, 0xcb, 0x6d, 0xcd, 0x78, 0x52, 0xaa, 0x10, 0xe4, 0xec, 0x29, + 0xcb, 0x2f, 0x18, 0xa1, 0x8c, 0x05, 0x4c, 0x27, 0x0c, 0xc8, 0x13, 0x71, + 0xf4, 0x52, 0x4e, 0x22, 0x68, 0xa1, 0x46, 0x52, 0xe4, 0x4c, 0x87, 0xb2, + 0xac, 0x62, 0x66, 0x30, 0x54, 0xf9, 0xf8, 0x20, 0x83, 0x52, 0x97, 0xf6, + 0x87, 0xa8, 0xbb, 0xcc, 0x18, 0x30, 0xe9, 0xf5, 0x16, 0x7a, 0x56, 0xaf, + 0x73, 0xf5, 0x7c, 0x52, 0x14, 0x0b, 0xee, 0x1e, 0x29, 0x8a, 0xd6, 0x0e, + 0x27, 0xac, 0xd1, 0x5e, 0xe7, 0x55, 0xdd, 0x35, 0xa9, 0x73, 0x02, 0x6d, + 0xc0, 0xc5, 0x69, 0x1a, 0x4c, 0x6e, 0x5c, 0xd2, 0xfe, 0xb5, 0xd4, 0xd3, + 0x46, 0x7d, 0x8a, 0xef, 0x5a, 0xce, 0x69, 0x5f, 0x7b, 0x6e, 0xb2, 0xcb, + 0x07, 0x7b, 0xf1, 0xb5, 0x37, 0xdf, 0xc4, 0xb5, 0x96, 0x3d, 0x29, 0x9d, + 0x62, 0xff, 0x50, 0x68, 0xff, 0x30, 0xab, 0xeb, 0x8f, 0xe6, 0x6e, 0x99, + 0xec, 0x96, 0x8f, 0x34, 0x49, 0xdc, 0x21, 0xcc, 0xa4, 0x51, 0x31, 0x33, + 0x3f, 0x84, 0x87, 0x28, 0x63, 0x3d, 0xaa, 0xae, 0x89, 0x25, 0x09, 0x30, + 0x78, 0xae, 0x4b, 0x39, 0xb2, 0xad, 0xe0, 0xb7, 0x32, 0xb1, 0xa3, 0x10, + 0x95, 0x22, 0x95, 0xa1, 0x44, 0xc4, 0xa6, 0x8b, 0x52, 0x62, 0x45, 0x9a, + 0x45, 0x7a, 0x58, 0xfb, 0x84, 0xed, 0xc2, 0x9f, 0x57, 0x36, 0x20, 0xfd, + 0x35, 0xa8, 0xc9, 0xd0, 0x70, 0x41, 0x37, 0x42, 0x77, 0x0c, 0xa8, 0xd5, + 0x4b, 0x36, 0x71, 0xd7, 0x11, 0xaa, 0xbc, 0x55, 0x56, 0xcd, 0x61, 0xad, + 0x91, 0x9f, 0x52, 0x8f, 0xea, 0x27, 0xbe, 0xcb, 0x2f, 0xb8, 0xb9, 0x25, + 0x10, 0x9b, 0x86, 0x16, 0x18, 0x86, 0xd1, 0xda, 0xfe, 0xeb, 0xec, 0xbe, + 0xdd, 0x69, 0x48, 0xb2, 0x2b, 0x45, 0xf6, 0x48, 0xf2, 0xfb, 0xeb, 0x0d, + 0xc3, 0xdd, 0x0d, 0x62, 0xb6, 0xde, 0xee, 0xad, 0xfd, 0x81, 0xda, 0x55, + 0x6d, 0xab, 0x48, 0x3a, 0x53, 0xfd, 0xdb, 0x73, 0x5b, 0xbb, 0x53, 0xb1, + 0xd5, 0x0d, 0xdb, 0x7b, 0xc7, 0x2c, 0xa9, 0x5b, 0x8b, 0x21, 0xeb, 0x6f, + 0x5b, 0x2b, 0xb6, 0xe9, 0x9b, 0xda, 0xb7, 0x5a, 0xd4, 0x1e, 0xba, 0x7d, + 0x8b, 0xe3, 0x11, 0x6d, 0x9a, 0xe8, 0xda, 0x7f, 0x6d, 0x1b, 0xb0, 0xa4, + 0xb4, 0xc0, 0x7d, 0x90, 0x59, 0xf7, 0xdd, 0x79, 0x65, 0xd6, 0xb0, 0x55, + 0x3c, 0x5c, 0x39, 0xa1, 0x9d, 0x1a, 0x17, 0x17, 0x24, 0x3e, 0x2b, 0x9d, + 0x89, 0x73, 0x72, 0xd5, 0x4c, 0x41, 0x89, 0xc3, 0x71, 0x2d, 0x6d, 0x94, + 0x33, 0x11, 0x24, 0x42, 0x08, 0x86, 0xe3, 0x13, 0xc1, 0x28, 0xc6, 0x8a, + 0x6e, 0x00, 0x02, 0x2a, 0xc8, 0x23, 0x56, 0xef, 0x3a, 0xac, 0xa9, 0xbe, + 0x8e, 0x5e, 0x7a, 0xe1, 0xaa, 0x29, 0x15, 0x02, 0xa5, 0x7e, 0x5a, 0x25, + 0x0f, 0xa6, 0x6e, 0xa4, 0x3e, 0x4f, 0xe9, 0x9b, 0x68, 0xe4, 0xbc, 0xb4, + 0x93, 0x92, 0x5a, 0x5a, 0xd9, 0xe2, 0x48, 0x87, 0x92, 0xd8, 0x5c, 0x68, + 0x54, 0x12, 0x82, 0xa0, 0x58, 0xbc, 0xb9, 0x82, 0xb1, 0xd0, 0x93, 0xeb, + 0xc9, 0x2e, 0xa9, 0x5e, 0x3c, 0xc6, 0xb9, 0xb6, 0x14, 0x47, 0x09, 0x4d, + 0x94, 0x6d, 0x19, 0x26, 0x7d, 0x64, 0xd8, 0x45, 0x36, 0xe5, 0x98, 0x8f, + 0x9f, 0x84, 0xef, 0x24, 0x44, 0xcb, 0xeb, 0x20, 0xd3, 0x33, 0x9b, 0x6d, + 0xed, 0x34, 0x65, 0x6a, 0xc6, 0x2c, 0xf2, 0x8c, 0xa2, 0xc5, 0x6b, 0x72, + 0x52, 0x7d, 0xba, 0x36, 0xc3, 0x52, 0x45, 0x39, 0x32, 0x6f, 0x69, 0xec, + 0x77, 0x23, 0x86, 0x4e, 0x32, 0x66, 0x79, 0x18, 0x34, 0x8a, 0x29, 0x46, + 0x3e, 0x1e, 0x96, 0xc5, 0xe6, 0xb4, 0x1a, 0x65, 0x15, 0x21, 0x56, 0x53, + 0x4a, 0x98, 0x2a, 0xac, 0x8d, 0x78, 0xce, 0x59, 0x04, 0x12, 0x15, 0x09, + 0x12, 0xd2, 0x09, 0x85, 0xcd, 0xb4, 0xa0, 0xa1, 0x7d, 0x90, 0x60, 0xc9, + 0x66, 0xd7, 0x14, 0x9e, 0x26, 0x22, 0x05, 0xac, 0xd0, 0x32, 0x0f, 0x12, + 0x8c, 0x0a, 0x84, 0xf0, 0x5c, 0xce, 0x17, 0x78, 0xc8, 0x00, 0x24, 0x09, + 0x22, 0x44, 0x32, 0x00, 0x4c, 0xa2, 0x44, 0xa1, 0xa8, 0x00, 0x61, 0xe8, + 0xf5, 0x4a, 0x06, 0x52, 0x15, 0xff, 0xfb, 0xd4, 0x40, 0x68, 0x8d, 0xd5, + 0xdd, 0x75, 0xad, 0x93, 0x0c, 0x4b, 0x70, 0xbf, 0x8e, 0xb5, 0x62, 0x25, + 0x2c, 0x6e, 0x14, 0x35, 0xd6, 0xaa, 0x07, 0xa1, 0x2d, 0xc2, 0x69, 0xb0, + 0x0e, 0xc4, 0x96, 0x25, 0xb8, 0x1a, 0x21, 0x49, 0x18, 0x22, 0x19, 0x59, + 0x14, 0x91, 0x5c, 0x0a, 0xb9, 0x11, 0x2a, 0x4d, 0xa1, 0x43, 0x02, 0xa6, + 0x41, 0x50, 0x28, 0x42, 0x01, 0x4c, 0xcd, 0x98, 0x8d, 0x13, 0x82, 0x53, + 0x42, 0x4b, 0x1a, 0x22, 0x15, 0x36, 0x6b, 0x97, 0x32, 0x72, 0x63, 0xd3, + 0x0a, 0xe4, 0xc2, 0x53, 0xf0, 0x2e, 0x7b, 0x79, 0x98, 0x8e, 0x9e, 0x3a, + 0x7e, 0x96, 0xb3, 0x57, 0x31, 0x26, 0xd1, 0x0e, 0x28, 0xea, 0xd4, 0x75, + 0xad, 0x4a, 0xa7, 0xba, 0xeb, 0x4f, 0x33, 0xde, 0x72, 0x4d, 0x39, 0x52, + 0xeb, 0x5f, 0xf5, 0xcb, 0x42, 0x7b, 0x8f, 0x72, 0xe8, 0x7b, 0x6a, 0xed, + 0x59, 0x3d, 0xc3, 0x98, 0x99, 0xa5, 0xaa, 0xc9, 0x8c, 0x4c, 0xf6, 0xe5, + 0xed, 0x5e, 0x6b, 0xf1, 0x0d, 0x4c, 0x2f, 0x4e, 0xf4, 0xf3, 0x27, 0xb0, + 0xbd, 0x8b, 0xa5, 0xab, 0x59, 0xa7, 0xe3, 0x31, 0x8b, 0x17, 0x5e, 0xab, + 0x49, 0x27, 0xcc, 0xd2, 0xdf, 0x27, 0x48, 0xce, 0x4f, 0x9a, 0x3e, 0x2a, + 0xa9, 0xae, 0x6a, 0x11, 0xeb, 0xb2, 0x55, 0x26, 0x98, 0xba, 0xc9, 0x08, + 0x9b, 0x51, 0xc4, 0x08, 0x93, 0x49, 0x22, 0x2c, 0x43, 0xd1, 0x37, 0x19, + 0x31, 0x12, 0x4c, 0x49, 0xae, 0x95, 0x94, 0x82, 0xc8, 0x03, 0x22, 0x14, + 0xa2, 0x62, 0x39, 0x95, 0x50, 0x6b, 0x09, 0xad, 0x0d, 0x9a, 0x58, 0xb8, + 0x82, 0x02, 0xae, 0x38, 0x15, 0x04, 0x58, 0x74, 0x0d, 0x83, 0xeb, 0xd5, + 0x55, 0x62, 0xd5, 0x7d, 0x69, 0x83, 0xa0, 0xf9, 0xe9, 0x7c, 0x93, 0x62, + 0xe1, 0x96, 0x2d, 0x55, 0x69, 0x49, 0x16, 0x7a, 0xac, 0xcb, 0x63, 0x1b, + 0x44, 0xf6, 0x6a, 0xd0, 0xc6, 0xb5, 0x64, 0x48, 0xa7, 0x1a, 0x95, 0xa1, + 0x9e, 0x78, 0xc5, 0x56, 0x56, 0xde, 0xb2, 0x24, 0x48, 0x91, 0x35, 0xaa, + 0xcb, 0xc7, 0x3f, 0x91, 0x10, 0xa9, 0x99, 0x4b, 0xac, 0xd6, 0xff, 0xfd, + 0xc7, 0x3c, 0x72, 0xe5, 0x2d, 0xeb, 0x4d, 0x0e, 0x6c, 0x91, 0x22, 0xde, + 0xb2, 0x29, 0x7d, 0x8c, 0x7f, 0xb8, 0xe7, 0xfe, 0x39, 0xee, 0x91, 0x5d, + 0xb3, 0x97, 0xef, 0x25, 0x7e, 0x31, 0xc5, 0x91, 0x6f, 0x8c, 0xa5, 0x68, + 0x50, 0xc5, 0x61, 0x51, 0x34, 0x11, 0x22, 0x0b, 0x00, 0x21, 0x31, 0x52, + 0x55, 0x92, 0x26, 0x54, 0x95, 0x20, 0x48, 0x12, 0x04, 0x85, 0x51, 0xea, + 0x8a, 0x5d, 0x25, 0x69, 0x12, 0x18, 0x22, 0x54, 0x52, 0x85, 0x98, 0xa1, + 0x68, 0xc1, 0x63, 0xaa, 0x4e, 0x95, 0x22, 0x19, 0x0f, 0x07, 0x88, 0xd4, + 0x9d, 0x2a, 0x99, 0x2a, 0x44, 0x8b, 0xe9, 0xb9, 0x56, 0xa1, 0x63, 0xad, + 0xbd, 0xf3, 0x36, 0x5a, 0x72, 0x84, 0xdd, 0x2f, 0x8c, 0x9d, 0x0f, 0x23, + 0xc9, 0x00, 0xed, 0x63, 0x6d, 0x15, 0x47, 0xa1, 0x48, 0xd2, 0x3c, 0x1d, + 0xac, 0x6d, 0x31, 0x54, 0x7a, 0x1a, 0x44, 0xd2, 0x04, 0x70, 0xb5, 0x8a, + 0x8d, 0x07, 0xcb, 0xa0, 0x9d, 0x5c, 0x95, 0x49, 0x79, 0xe5, 0x7c, 0x95, + 0xe4, 0x91, 0x2a, 0x94, 0xe1, 0xe4, 0xa9, 0x10, 0x88, 0xea, 0x93, 0x85, + 0xac, 0x21, 0x1a, 0x1a, 0x1b, 0x40, 0xbd, 0x2a, 0x44, 0x21, 0x07, 0x81, + 0xe2, 0x34, 0x13, 0xa5, 0x48, 0x86, 0x43, 0xc1, 0xe2, 0x38, 0x4e, 0x95, + 0x58, 0xa9, 0x45, 0x1b, 0xcf, 0xb1, 0xa9, 0xc1, 0x95, 0xae, 0x1b, 0xfa, + 0xc8, 0x48, 0x4e, 0x2f, 0x09, 0xd2, 0xa4, 0x42, 0x11, 0x92, 0x88, 0xd4, + 0xb5, 0x8a, 0x88, 0x81, 0xd0, 0x74, 0x61, 0x1c, 0x2d, 0x62, 0x11, 0x10, + 0x3a, 0x1f, 0x20, 0x47, 0x0b, 0x58, 0xa8, 0xd0, 0x7c, 0xba, 0x09, 0xa6, + 0x20, 0xa6, 0xa2, 0x99, 0x97, 0x1c, 0x9c, 0x17, 0x19, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0xff, 0xfb, 0xd4, 0x60, 0x6e, 0x0f, 0xf0, + 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0d, 0x20, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x01, 0xa4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x34, 0x80, 0x00, 0x00, 0x04, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x4c, 0x41, 0x4d, 0x45, 0x33, 0x2e, 0x39, 0x38, 0x2e, 0x32, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, + 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x41, 0x47, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff +}; +unsigned int med_system_alerts_melodic_02__TTH__mp3_len = 194473; +// clang-format on + +#endif // ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_SYSTEM_ALERTS_MELODIC_02__TTH__MP3_H_ + +} // namespace data +} // namespace audio +} // namespace resources +} // namespace applicationUtilities +} // namespace alexaClientSDK diff --git a/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_system_alerts_melodic_02_short._TTH_.wav.h b/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_system_alerts_melodic_02_short._TTH_.wav.h new file mode 100644 index 0000000000..e6c9b735d7 --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/include/Audio/Data/med_system_alerts_melodic_02_short._TTH_.wav.h @@ -0,0 +1,32054 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/* + * ****************** + * ALEXA AUDIO ASSETS + * ****************** + * + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates ("Amazon"). + * All Rights Reserved. + * + * These materials are licensed to you as "Alexa Materials" under the Alexa Voice + * Service Agreement, which is currently available at + * https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/support/terms-and-agreements. + */ + +#ifndef ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_SYSTEM_ALERTS_MELODIC_02_SHORT__TTH__WAV_H_ +#define ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_SYSTEM_ALERTS_MELODIC_02_SHORT__TTH__WAV_H_ + +namespace alexaClientSDK { +namespace applicationUtilities { +namespace resources { +namespace audio { +namespace data { + +// clang-format off +unsigned char med_system_alerts_melodic_02_short__TTH__wav[] = { + 0x52, 0x49, 0x46, 0x46, 0x24, 0xdc, 0x05, 0x00, 0x57, 0x41, 0x56, 0x45, + 0x66, 0x6d, 0x74, 0x20, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x80, 0xbb, 0x00, 0x00, 0x00, 0xee, 0x02, 0x00, 0x04, 0x00, 0x10, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0xdc, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x03, 0x00, + 0xff, 0xff, 0xfd, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfd, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfd, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x01, 0x00, 0x03, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 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, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfd, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 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, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xf8, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xee, 0xff, 0xef, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xef, 0xff, + 0xf0, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x01, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x08, 0x00, 0x0c, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x19, 0x00, + 0x1f, 0x00, 0x1c, 0x00, 0x25, 0x00, 0x28, 0x00, 0x31, 0x00, 0x2f, 0x00, + 0x38, 0x00, 0x39, 0x00, 0x45, 0x00, 0x45, 0x00, 0x4d, 0x00, 0x4d, 0x00, + 0x55, 0x00, 0x56, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x64, 0x00, 0x63, 0x00, + 0x6b, 0x00, 0x6b, 0x00, 0x70, 0x00, 0x71, 0x00, 0x74, 0x00, 0x74, 0x00, + 0x76, 0x00, 0x77, 0x00, 0x79, 0x00, 0x78, 0x00, 0x79, 0x00, 0x7a, 0x00, + 0x76, 0x00, 0x77, 0x00, 0x75, 0x00, 0x74, 0x00, 0x71, 0x00, 0x71, 0x00, + 0x67, 0x00, 0x68, 0x00, 0x62, 0x00, 0x62, 0x00, 0x54, 0x00, 0x55, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x3a, 0x00, 0x39, 0x00, 0x27, 0x00, 0x28, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x04, 0x00, 0x03, 0x00, 0xef, 0xff, 0xf0, 0xff, + 0xdb, 0xff, 0xdb, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xad, 0xff, 0xae, 0xff, + 0x9a, 0xff, 0x99, 0xff, 0x82, 0xff, 0x82, 0xff, 0x6c, 0xff, 0x6b, 0xff, + 0x54, 0xff, 0x54, 0xff, 0x3c, 0xff, 0x3c, 0xff, 0x26, 0xff, 0x28, 0xff, + 0x0f, 0xff, 0x0e, 0xff, 0xfb, 0xfe, 0xfc, 0xfe, 0xe6, 0xfe, 0xe6, 0xfe, + 0xd1, 0xfe, 0xd1, 0xfe, 0xc0, 0xfe, 0xc1, 0xfe, 0xaf, 0xfe, 0xb0, 0xfe, + 0x9e, 0xfe, 0xa0, 0xfe, 0x92, 0xfe, 0x92, 0xfe, 0x85, 0xfe, 0x84, 0xfe, + 0x79, 0xfe, 0x7a, 0xfe, 0x71, 0xfe, 0x70, 0xfe, 0x66, 0xfe, 0x66, 0xfe, + 0x63, 0xfe, 0x64, 0xfe, 0x5b, 0xfe, 0x5b, 0xfe, 0x5b, 0xfe, 0x5c, 0xfe, + 0x5b, 0xfe, 0x5b, 0xfe, 0x5c, 0xfe, 0x5c, 0xfe, 0x63, 0xfe, 0x64, 0xfe, + 0x67, 0xfe, 0x68, 0xfe, 0x75, 0xfe, 0x75, 0xfe, 0x7e, 0xfe, 0x7f, 0xfe, + 0x91, 0xfe, 0x92, 0xfe, 0xa2, 0xfe, 0xa3, 0xfe, 0xba, 0xfe, 0xba, 0xfe, + 0xd2, 0xfe, 0xd4, 0xfe, 0xf1, 0xfe, 0xee, 0xfe, 0x0d, 0xff, 0x13, 0xff, + 0x33, 0xff, 0x2f, 0xff, 0x57, 0xff, 0x59, 0xff, 0x80, 0xff, 0x80, 0xff, + 0xae, 0xff, 0xab, 0xff, 0xd8, 0xff, 0xdb, 0xff, 0x0b, 0x00, 0x09, 0x00, + 0x3d, 0x00, 0x3e, 0x00, 0x71, 0x00, 0x71, 0x00, 0xaa, 0x00, 0xa9, 0x00, + 0xdf, 0x00, 0xdf, 0x00, 0x19, 0x01, 0x19, 0x01, 0x51, 0x01, 0x50, 0x01, + 0x8a, 0x01, 0x8b, 0x01, 0xc4, 0x01, 0xc3, 0x01, 0xf9, 0x01, 0xfa, 0x01, + 0x33, 0x02, 0x30, 0x02, 0x64, 0x02, 0x65, 0x02, 0x9c, 0x02, 0x9a, 0x02, + 0xc7, 0x02, 0xc7, 0x02, 0xf7, 0x02, 0xf7, 0x02, 0x22, 0x03, 0x23, 0x03, + 0x46, 0x03, 0x46, 0x03, 0x6c, 0x03, 0x6b, 0x03, 0x85, 0x03, 0x84, 0x03, + 0xa3, 0x03, 0xa4, 0x03, 0xb7, 0x03, 0xb6, 0x03, 0xc6, 0x03, 0xc6, 0x03, + 0xd4, 0x03, 0xd3, 0x03, 0xd6, 0x03, 0xd7, 0x03, 0xdb, 0x03, 0xda, 0x03, + 0xd3, 0x03, 0xd3, 0x03, 0xc9, 0x03, 0xca, 0x03, 0xba, 0x03, 0xbb, 0x03, + 0xa5, 0x03, 0xa4, 0x03, 0x8c, 0x03, 0x8c, 0x03, 0x6c, 0x03, 0x6b, 0x03, + 0x47, 0x03, 0x48, 0x03, 0x1f, 0x03, 0x1f, 0x03, 0xf2, 0x02, 0xf0, 0x02, + 0xbe, 0x02, 0xc1, 0x02, 0x8b, 0x02, 0x89, 0x02, 0x4e, 0x02, 0x50, 0x02, + 0x12, 0x02, 0x13, 0x02, 0xd3, 0x01, 0xd2, 0x01, 0x8a, 0x01, 0x8b, 0x01, + 0x46, 0x01, 0x46, 0x01, 0xfb, 0x00, 0xfa, 0x00, 0xb1, 0x00, 0xb1, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x11, 0x00, 0x11, 0x00, 0xc0, 0xff, 0xc1, 0xff, + 0x73, 0xff, 0x70, 0xff, 0x23, 0xff, 0x24, 0xff, 0xd5, 0xfe, 0xd4, 0xfe, + 0x88, 0xfe, 0x88, 0xfe, 0x3d, 0xfe, 0x3d, 0xfe, 0xef, 0xfd, 0xee, 0xfd, + 0xa4, 0xfd, 0xa5, 0xfd, 0x59, 0xfd, 0x57, 0xfd, 0x10, 0xfd, 0x11, 0xfd, + 0xcb, 0xfc, 0xca, 0xfc, 0x85, 0xfc, 0x85, 0xfc, 0x46, 0xfc, 0x45, 0xfc, + 0x08, 0xfc, 0x09, 0xfc, 0xce, 0xfb, 0xce, 0xfb, 0x98, 0xfb, 0x99, 0xfb, + 0x69, 0xfb, 0x6a, 0xfb, 0x3d, 0xfb, 0x3d, 0xfb, 0x16, 0xfb, 0x16, 0xfb, + 0xf6, 0xfa, 0xf5, 0xfa, 0xda, 0xfa, 0xda, 0xfa, 0xc7, 0xfa, 0xc8, 0xfa, + 0xb9, 0xfa, 0xb8, 0xfa, 0xb0, 0xfa, 0xb3, 0xfa, 0xb3, 0xfa, 0xb2, 0xfa, + 0xb7, 0xfa, 0xb8, 0xfa, 0xc8, 0xfa, 0xca, 0xfa, 0xde, 0xfa, 0xdb, 0xfa, + 0xf9, 0xfa, 0xfd, 0xfa, 0x1f, 0xfb, 0x1e, 0xfb, 0x4a, 0xfb, 0x4d, 0xfb, + 0x7d, 0xfb, 0x7b, 0xfb, 0xb7, 0xfb, 0xb8, 0xfb, 0xf6, 0xfb, 0xf4, 0xfb, + 0x3d, 0xfc, 0x3d, 0xfc, 0x88, 0xfc, 0x89, 0xfc, 0xd9, 0xfc, 0xda, 0xfc, + 0x31, 0xfd, 0x31, 0xfd, 0x8c, 0xfd, 0x8b, 0xfd, 0xec, 0xfd, 0xee, 0xfd, + 0x4f, 0xfe, 0x4f, 0xfe, 0xb8, 0xfe, 0xb8, 0xfe, 0x28, 0xff, 0x2a, 0xff, + 0x94, 0xff, 0x95, 0xff, 0xff, 0xff, 0x00, 0x00, 0x64, 0x00, 0x63, 0x00, + 0xc5, 0x00, 0xc7, 0x00, 0x26, 0x01, 0x25, 0x01, 0x86, 0x01, 0x86, 0x01, + 0xdf, 0x01, 0xe1, 0x01, 0x3d, 0x02, 0x3f, 0x02, 0x95, 0x02, 0x95, 0x02, + 0xed, 0x02, 0xec, 0x02, 0x3f, 0x03, 0x40, 0x03, 0x91, 0x03, 0x90, 0x03, + 0xdb, 0x03, 0xde, 0x03, 0x24, 0x04, 0x22, 0x04, 0x65, 0x04, 0x6a, 0x04, + 0xa7, 0x04, 0xa5, 0x04, 0xdd, 0x04, 0xe0, 0x04, 0x13, 0x05, 0x11, 0x05, + 0x3e, 0x05, 0x3f, 0x05, 0x66, 0x05, 0x67, 0x05, 0x88, 0x05, 0x88, 0x05, + 0xa0, 0x05, 0xa1, 0x05, 0xb5, 0x05, 0xb6, 0x05, 0xc0, 0x05, 0xc2, 0x05, + 0xc7, 0x05, 0xc7, 0x05, 0xc6, 0x05, 0xc6, 0x05, 0xbb, 0x05, 0xba, 0x05, + 0xac, 0x05, 0xae, 0x05, 0x92, 0x05, 0x92, 0x05, 0x76, 0x05, 0x76, 0x05, + 0x4e, 0x05, 0x4d, 0x05, 0x22, 0x05, 0x22, 0x05, 0xee, 0x04, 0xed, 0x04, + 0xb1, 0x04, 0xb3, 0x04, 0x70, 0x04, 0x6e, 0x04, 0x26, 0x04, 0x29, 0x04, + 0xd8, 0x03, 0xd7, 0x03, 0x84, 0x03, 0x85, 0x03, 0x2a, 0x03, 0x2a, 0x03, + 0xca, 0x02, 0xc9, 0x02, 0x67, 0x02, 0x68, 0x02, 0x00, 0x02, 0xfe, 0x01, + 0x92, 0x01, 0x92, 0x01, 0x25, 0x01, 0x24, 0x01, 0xaf, 0x00, 0xb0, 0x00, + 0x3d, 0x00, 0x3d, 0x00, 0xc3, 0xff, 0xc2, 0xff, 0x4e, 0xff, 0x4d, 0xff, + 0xd9, 0xfe, 0xd7, 0xfe, 0x68, 0xfe, 0x68, 0xfe, 0xfc, 0xfd, 0xfb, 0xfd, + 0x8d, 0xfd, 0x8f, 0xfd, 0x26, 0xfd, 0x25, 0xfd, 0xbc, 0xfc, 0xbd, 0xfc, + 0x57, 0xfc, 0x57, 0xfc, 0xf6, 0xfb, 0xf5, 0xfb, 0x95, 0xfb, 0x97, 0xfb, + 0x3e, 0xfb, 0x3d, 0xfb, 0xe7, 0xfa, 0xe8, 0xfa, 0x99, 0xfa, 0x99, 0xfa, + 0x50, 0xfa, 0x50, 0xfa, 0x0b, 0xfa, 0x0b, 0xfa, 0xd0, 0xf9, 0xd1, 0xf9, + 0x9a, 0xf9, 0x9a, 0xf9, 0x6d, 0xf9, 0x6b, 0xf9, 0x45, 0xf9, 0x46, 0xf9, + 0x27, 0xf9, 0x26, 0xf9, 0x0f, 0xf9, 0x10, 0xf9, 0x01, 0xf9, 0xff, 0xf8, + 0xf8, 0xf8, 0xfa, 0xf8, 0xfb, 0xf8, 0xfb, 0xf8, 0x06, 0xf9, 0x06, 0xf9, + 0x18, 0xf9, 0x18, 0xf9, 0x33, 0xf9, 0x34, 0xf9, 0x56, 0xf9, 0x56, 0xf9, + 0x83, 0xf9, 0x81, 0xf9, 0xb5, 0xf9, 0xb4, 0xf9, 0xf0, 0xf9, 0xf0, 0xf9, + 0x32, 0xfa, 0x34, 0xfa, 0x7c, 0xfa, 0x7c, 0xfa, 0xcd, 0xfa, 0xcd, 0xfa, + 0x23, 0xfb, 0x24, 0xfb, 0x83, 0xfb, 0x83, 0xfb, 0xe3, 0xfb, 0xe4, 0xfb, + 0x4d, 0xfc, 0x4c, 0xfc, 0xb8, 0xfc, 0xb9, 0xfc, 0x2b, 0xfd, 0x2a, 0xfd, + 0x9f, 0xfd, 0xa1, 0xfd, 0x17, 0xfe, 0x17, 0xfe, 0x93, 0xfe, 0x93, 0xfe, + 0x10, 0xff, 0x11, 0xff, 0x91, 0xff, 0x90, 0xff, 0x11, 0x00, 0x11, 0x00, + 0x94, 0x00, 0x93, 0x00, 0x12, 0x01, 0x11, 0x01, 0x8f, 0x01, 0x91, 0x01, + 0x09, 0x02, 0x09, 0x02, 0x82, 0x02, 0x82, 0x02, 0xf7, 0x02, 0xf6, 0x02, + 0x69, 0x03, 0x69, 0x03, 0xdb, 0x03, 0xdb, 0x03, 0x47, 0x04, 0x47, 0x04, + 0xaf, 0x04, 0xb0, 0x04, 0x16, 0x05, 0x12, 0x05, 0x71, 0x05, 0x73, 0x05, + 0xcd, 0x05, 0xcb, 0x05, 0x1f, 0x06, 0x20, 0x06, 0x6b, 0x06, 0x6a, 0x06, + 0xb2, 0x06, 0xb2, 0x06, 0xed, 0x06, 0xef, 0x06, 0x27, 0x07, 0x27, 0x07, + 0x54, 0x07, 0x56, 0x07, 0x7a, 0x07, 0x7b, 0x07, 0x9a, 0x07, 0x9b, 0x07, + 0xae, 0x07, 0xaf, 0x07, 0xbb, 0x07, 0xbc, 0x07, 0xbf, 0x07, 0xc0, 0x07, + 0xbc, 0x07, 0xbb, 0x07, 0xaf, 0x07, 0xaf, 0x07, 0x96, 0x07, 0x99, 0x07, + 0x7b, 0x07, 0x79, 0x07, 0x4f, 0x07, 0x52, 0x07, 0x20, 0x07, 0x21, 0x07, + 0xe8, 0x06, 0xe9, 0x06, 0xa8, 0x06, 0xa9, 0x06, 0x61, 0x06, 0x60, 0x06, + 0x11, 0x06, 0x13, 0x06, 0xbb, 0x05, 0xbb, 0x05, 0x5f, 0x05, 0x5f, 0x05, + 0xfc, 0x04, 0xfe, 0x04, 0x96, 0x04, 0x95, 0x04, 0x28, 0x04, 0x2a, 0x04, + 0xb6, 0x03, 0xb6, 0x03, 0x41, 0x03, 0x42, 0x03, 0xca, 0x02, 0xc9, 0x02, + 0x4e, 0x02, 0x4e, 0x02, 0xd1, 0x01, 0xd1, 0x01, 0x50, 0x01, 0x51, 0x01, + 0xd2, 0x00, 0xd2, 0x00, 0x4f, 0x00, 0x51, 0x00, 0xd0, 0xff, 0xd0, 0xff, + 0x52, 0xff, 0x53, 0xff, 0xd7, 0xfe, 0xd7, 0xfe, 0x5d, 0xfe, 0x5e, 0xfe, + 0xe7, 0xfd, 0xe6, 0xfd, 0x72, 0xfd, 0x73, 0xfd, 0x00, 0xfd, 0x00, 0xfd, + 0x95, 0xfc, 0x94, 0xfc, 0x29, 0xfc, 0x2a, 0xfc, 0xc6, 0xfb, 0xc6, 0xfb, + 0x69, 0xfb, 0x69, 0xfb, 0x0d, 0xfb, 0x0f, 0xfb, 0xbe, 0xfa, 0xbc, 0xfa, + 0x70, 0xfa, 0x70, 0xfa, 0x2b, 0xfa, 0x2c, 0xfa, 0xee, 0xf9, 0xed, 0xf9, + 0xb6, 0xf9, 0xb9, 0xf9, 0x89, 0xf9, 0x88, 0xf9, 0x64, 0xf9, 0x63, 0xf9, + 0x45, 0xf9, 0x45, 0xf9, 0x2f, 0xf9, 0x2f, 0xf9, 0x21, 0xf9, 0x22, 0xf9, + 0x1e, 0xf9, 0x1e, 0xf9, 0x22, 0xf9, 0x21, 0xf9, 0x30, 0xf9, 0x31, 0xf9, + 0x45, 0xf9, 0x44, 0xf9, 0x64, 0xf9, 0x65, 0xf9, 0x8c, 0xf9, 0x8b, 0xf9, + 0xb9, 0xf9, 0xb9, 0xf9, 0xf1, 0xf9, 0xf2, 0xf9, 0x30, 0xfa, 0x2e, 0xfa, + 0x75, 0xfa, 0x74, 0xfa, 0xc2, 0xfa, 0xc2, 0xfa, 0x15, 0xfb, 0x15, 0xfb, + 0x6f, 0xfb, 0x6f, 0xfb, 0xd0, 0xfb, 0xcd, 0xfb, 0x32, 0xfc, 0x32, 0xfc, + 0x9b, 0xfc, 0x9a, 0xfc, 0x0a, 0xfd, 0x09, 0xfd, 0x7a, 0xfd, 0x7c, 0xfd, + 0xf1, 0xfd, 0xee, 0xfd, 0x66, 0xfe, 0x67, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, + 0x59, 0xff, 0x58, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0x4f, 0x00, 0x4e, 0x00, + 0xca, 0x00, 0xcc, 0x00, 0x45, 0x01, 0x44, 0x01, 0xbd, 0x01, 0xbf, 0x01, + 0x33, 0x02, 0x35, 0x02, 0xa5, 0x02, 0xa6, 0x02, 0x17, 0x03, 0x15, 0x03, + 0x83, 0x03, 0x83, 0x03, 0xeb, 0x03, 0xeb, 0x03, 0x4f, 0x04, 0x50, 0x04, + 0xae, 0x04, 0xae, 0x04, 0x05, 0x05, 0x06, 0x05, 0x5c, 0x05, 0x5a, 0x05, + 0xa6, 0x05, 0xa6, 0x05, 0xeb, 0x05, 0xee, 0x05, 0x2c, 0x06, 0x2b, 0x06, + 0x5f, 0x06, 0x61, 0x06, 0x92, 0x06, 0x91, 0x06, 0xb9, 0x06, 0xbb, 0x06, + 0xd8, 0x06, 0xd8, 0x06, 0xf0, 0x06, 0xf1, 0x06, 0xfd, 0x06, 0xff, 0x06, + 0x04, 0x07, 0x04, 0x07, 0x02, 0x07, 0x03, 0x07, 0xf7, 0x06, 0xf6, 0x06, + 0xe4, 0x06, 0xe5, 0x06, 0xc6, 0x06, 0xc7, 0x06, 0xa2, 0x06, 0xa3, 0x06, + 0x75, 0x06, 0x75, 0x06, 0x40, 0x06, 0x40, 0x06, 0x03, 0x06, 0x03, 0x06, + 0xbd, 0x05, 0xbd, 0x05, 0x73, 0x05, 0x73, 0x05, 0x1f, 0x05, 0x1e, 0x05, + 0xc7, 0x04, 0xc8, 0x04, 0x66, 0x04, 0x67, 0x04, 0x02, 0x04, 0x02, 0x04, + 0x99, 0x03, 0x99, 0x03, 0x2b, 0x03, 0x29, 0x03, 0xb6, 0x02, 0xb9, 0x02, + 0x41, 0x02, 0x40, 0x02, 0xc7, 0x01, 0xc9, 0x01, 0x4c, 0x01, 0x4c, 0x01, + 0xcf, 0x00, 0xcf, 0x00, 0x4f, 0x00, 0x50, 0x00, 0xd2, 0xff, 0xd0, 0xff, + 0x4f, 0xff, 0x53, 0xff, 0xd3, 0xfe, 0xd1, 0xfe, 0x54, 0xfe, 0x54, 0xfe, + 0xd8, 0xfd, 0xd9, 0xfd, 0x5e, 0xfd, 0x5d, 0xfd, 0xe6, 0xfc, 0xe7, 0xfc, + 0x71, 0xfc, 0x71, 0xfc, 0x02, 0xfc, 0x02, 0xfc, 0x97, 0xfb, 0x97, 0xfb, + 0x2e, 0xfb, 0x2e, 0xfb, 0xcb, 0xfa, 0xcd, 0xfa, 0x72, 0xfa, 0x71, 0xfa, + 0x19, 0xfa, 0x19, 0xfa, 0xcc, 0xf9, 0xcb, 0xf9, 0x81, 0xf9, 0x83, 0xf9, + 0x40, 0xf9, 0x3f, 0xf9, 0x07, 0xf9, 0x09, 0xf9, 0xd3, 0xf8, 0xd3, 0xf8, + 0xaa, 0xf8, 0xad, 0xf8, 0x88, 0xf8, 0x88, 0xf8, 0x6e, 0xf8, 0x6e, 0xf8, + 0x5f, 0xf8, 0x61, 0xf8, 0x53, 0xf8, 0x54, 0xf8, 0x56, 0xf8, 0x56, 0xf8, + 0x5d, 0xf8, 0x5e, 0xf8, 0x6f, 0xf8, 0x70, 0xf8, 0x8b, 0xf8, 0x8b, 0xf8, + 0xac, 0xf8, 0xac, 0xf8, 0xd7, 0xf8, 0xd8, 0xf8, 0x0b, 0xf9, 0x0a, 0xf9, + 0x43, 0xf9, 0x44, 0xf9, 0x86, 0xf9, 0x86, 0xf9, 0xd0, 0xf9, 0xd0, 0xf9, + 0x1e, 0xfa, 0x1f, 0xfa, 0x76, 0xfa, 0x76, 0xfa, 0xd1, 0xfa, 0xd1, 0xfa, + 0x34, 0xfb, 0x35, 0xfb, 0x9b, 0xfb, 0x9b, 0xfb, 0x06, 0xfc, 0x07, 0xfc, + 0x76, 0xfc, 0x76, 0xfc, 0xe7, 0xfc, 0xe8, 0xfc, 0x5e, 0xfd, 0x5e, 0xfd, + 0xd6, 0xfd, 0xd8, 0xfd, 0x51, 0xfe, 0x4f, 0xfe, 0xcb, 0xfe, 0xce, 0xfe, + 0x48, 0xff, 0x48, 0xff, 0xc3, 0xff, 0xc5, 0xff, 0x40, 0x00, 0x41, 0x00, + 0xba, 0x00, 0xba, 0x00, 0x35, 0x01, 0x36, 0x01, 0xa9, 0x01, 0xab, 0x01, + 0x22, 0x02, 0x21, 0x02, 0x90, 0x02, 0x92, 0x02, 0x02, 0x03, 0x01, 0x03, + 0x69, 0x03, 0x6b, 0x03, 0xce, 0x03, 0xcf, 0x03, 0x2f, 0x04, 0x31, 0x04, + 0x8a, 0x04, 0x8c, 0x04, 0xdf, 0x04, 0xde, 0x04, 0x2e, 0x05, 0x2f, 0x05, + 0x75, 0x05, 0x75, 0x05, 0xb8, 0x05, 0xb9, 0x05, 0xf3, 0x05, 0xf3, 0x05, + 0x21, 0x06, 0x23, 0x06, 0x51, 0x06, 0x52, 0x06, 0x6e, 0x06, 0x6f, 0x06, + 0x8c, 0x06, 0x8e, 0x06, 0x9e, 0x06, 0x9e, 0x06, 0xa9, 0x06, 0xaa, 0x06, + 0xab, 0x06, 0xae, 0x06, 0xa3, 0x06, 0xa4, 0x06, 0x96, 0x06, 0x98, 0x06, + 0x7d, 0x06, 0x7f, 0x06, 0x5f, 0x06, 0x60, 0x06, 0x38, 0x06, 0x3b, 0x06, + 0x09, 0x06, 0x0a, 0x06, 0xd4, 0x05, 0xd6, 0x05, 0x96, 0x05, 0x96, 0x05, + 0x51, 0x05, 0x53, 0x05, 0x08, 0x05, 0x09, 0x05, 0xb6, 0x04, 0xb7, 0x04, + 0x61, 0x04, 0x64, 0x04, 0x05, 0x04, 0x05, 0x04, 0xa3, 0x03, 0xa5, 0x03, + 0x41, 0x03, 0x41, 0x03, 0xd6, 0x02, 0xd7, 0x02, 0x6c, 0x02, 0x6d, 0x02, + 0xfe, 0x01, 0xfe, 0x01, 0x8c, 0x01, 0x8e, 0x01, 0x1a, 0x01, 0x1a, 0x01, + 0xa5, 0x00, 0xa8, 0x00, 0x32, 0x00, 0x33, 0x00, 0xbe, 0xff, 0xbf, 0xff, + 0x4a, 0xff, 0x4c, 0xff, 0xd9, 0xfe, 0xd9, 0xfe, 0x66, 0xfe, 0x68, 0xfe, + 0xf9, 0xfd, 0xf9, 0xfd, 0x8b, 0xfd, 0x8c, 0xfd, 0x23, 0xfd, 0x23, 0xfd, + 0xbc, 0xfc, 0xbf, 0xfc, 0x5c, 0xfc, 0x5b, 0xfc, 0xfe, 0xfb, 0x01, 0xfc, + 0xa7, 0xfb, 0xa7, 0xfb, 0x52, 0xfb, 0x53, 0xfb, 0x07, 0xfb, 0x08, 0xfb, + 0xbe, 0xfa, 0xbf, 0xfa, 0x80, 0xfa, 0x80, 0xfa, 0x44, 0xfa, 0x45, 0xfa, + 0x11, 0xfa, 0x12, 0xfa, 0xe8, 0xf9, 0xe7, 0xf9, 0xc1, 0xf9, 0xc3, 0xf9, + 0xa8, 0xf9, 0xa6, 0xf9, 0x8f, 0xf9, 0x92, 0xf9, 0x84, 0xf9, 0x84, 0xf9, + 0x81, 0xf9, 0x81, 0xf9, 0x80, 0xf9, 0x84, 0xf9, 0x8e, 0xf9, 0x8e, 0xf9, + 0x9f, 0xf9, 0xa1, 0xf9, 0xbd, 0xf9, 0xbd, 0xf9, 0xdd, 0xf9, 0xdd, 0xf9, + 0x07, 0xfa, 0x09, 0xfa, 0x3a, 0xfa, 0x3a, 0xfa, 0x70, 0xfa, 0x71, 0xfa, + 0xb2, 0xfa, 0xb4, 0xfa, 0xf7, 0xfa, 0xf7, 0xfa, 0x46, 0xfb, 0x47, 0xfb, + 0x97, 0xfb, 0x97, 0xfb, 0xef, 0xfb, 0xf0, 0xfb, 0x4f, 0xfc, 0x4f, 0xfc, + 0xab, 0xfc, 0xae, 0xfc, 0x16, 0xfd, 0x15, 0xfd, 0x7c, 0xfd, 0x7e, 0xfd, + 0xea, 0xfd, 0xea, 0xfd, 0x5a, 0xfe, 0x5b, 0xfe, 0xca, 0xfe, 0xcb, 0xfe, + 0x40, 0xff, 0x40, 0xff, 0xb1, 0xff, 0xb2, 0xff, 0x27, 0x00, 0x29, 0x00, + 0x9d, 0x00, 0x9d, 0x00, 0x10, 0x01, 0x12, 0x01, 0x83, 0x01, 0x84, 0x01, + 0xf3, 0x01, 0xf7, 0x01, 0x66, 0x02, 0x65, 0x02, 0xd0, 0x02, 0xd4, 0x02, + 0x3e, 0x03, 0x3e, 0x03, 0xa3, 0x03, 0xa3, 0x03, 0x06, 0x04, 0x07, 0x04, + 0x61, 0x04, 0x64, 0x04, 0xbc, 0x04, 0xbd, 0x04, 0x11, 0x05, 0x11, 0x05, + 0x5b, 0x05, 0x5e, 0x05, 0xa7, 0x05, 0xa9, 0x05, 0xe6, 0x05, 0xe7, 0x05, + 0x26, 0x06, 0x25, 0x06, 0x57, 0x06, 0x58, 0x06, 0x85, 0x06, 0x85, 0x06, + 0xad, 0x06, 0xac, 0x06, 0xc8, 0x06, 0xc9, 0x06, 0xe2, 0x06, 0xe3, 0x06, + 0xef, 0x06, 0xf0, 0x06, 0xf6, 0x06, 0xf7, 0x06, 0xf6, 0x06, 0xf6, 0x06, + 0xed, 0x06, 0xef, 0x06, 0xdb, 0x06, 0xdc, 0x06, 0xc4, 0x06, 0xc5, 0x06, + 0xa4, 0x06, 0xa5, 0x06, 0x7d, 0x06, 0x7e, 0x06, 0x4f, 0x06, 0x4f, 0x06, + 0x18, 0x06, 0x1b, 0x06, 0xdd, 0x05, 0xdc, 0x05, 0x99, 0x05, 0x9c, 0x05, + 0x53, 0x05, 0x51, 0x05, 0x04, 0x05, 0x04, 0x05, 0xb1, 0x04, 0xb0, 0x04, + 0x56, 0x04, 0x58, 0x04, 0xfb, 0x03, 0xfa, 0x03, 0x98, 0x03, 0x97, 0x03, + 0x35, 0x03, 0x34, 0x03, 0xcc, 0x02, 0xcd, 0x02, 0x62, 0x02, 0x62, 0x02, + 0xf6, 0x01, 0xf5, 0x01, 0x84, 0x01, 0x87, 0x01, 0x17, 0x01, 0x17, 0x01, + 0xa9, 0x00, 0xa9, 0x00, 0x36, 0x00, 0x37, 0x00, 0xc9, 0xff, 0xc8, 0xff, + 0x57, 0xff, 0x59, 0xff, 0xec, 0xfe, 0xeb, 0xfe, 0x7d, 0xfe, 0x81, 0xfe, + 0x18, 0xfe, 0x17, 0xfe, 0xae, 0xfd, 0xb0, 0xfd, 0x4f, 0xfd, 0x4e, 0xfd, + 0xee, 0xfc, 0xed, 0xfc, 0x95, 0xfc, 0x95, 0xfc, 0x3e, 0xfc, 0x3d, 0xfc, + 0xed, 0xfb, 0xed, 0xfb, 0xa0, 0xfb, 0xa0, 0xfb, 0x5a, 0xfb, 0x59, 0xfb, + 0x1a, 0xfb, 0x1a, 0xfb, 0xdf, 0xfa, 0xdf, 0xfa, 0xae, 0xfa, 0xae, 0xfa, + 0x7e, 0xfa, 0x7f, 0xfa, 0x5c, 0xfa, 0x5b, 0xfa, 0x3b, 0xfa, 0x3b, 0xfa, + 0x22, 0xfa, 0x23, 0xfa, 0x17, 0xfa, 0x13, 0xfa, 0x09, 0xfa, 0x0b, 0xfa, + 0x0c, 0xfa, 0x0a, 0xfa, 0x10, 0xfa, 0x0f, 0xfa, 0x1e, 0xfa, 0x1e, 0xfa, + 0x34, 0xfa, 0x34, 0xfa, 0x4f, 0xfa, 0x4e, 0xfa, 0x76, 0xfa, 0x77, 0xfa, + 0xa1, 0xfa, 0x9f, 0xfa, 0xcf, 0xfa, 0xd0, 0xfa, 0x0a, 0xfb, 0x0b, 0xfb, + 0x46, 0xfb, 0x45, 0xfb, 0x8d, 0xfb, 0x8c, 0xfb, 0xd5, 0xfb, 0xd5, 0xfb, + 0x23, 0xfc, 0x23, 0xfc, 0x79, 0xfc, 0x7a, 0xfc, 0xce, 0xfc, 0xcf, 0xfc, + 0x2c, 0xfd, 0x2b, 0xfd, 0x8c, 0xfd, 0x8b, 0xfd, 0xed, 0xfd, 0xef, 0xfd, + 0x52, 0xfe, 0x51, 0xfe, 0xb8, 0xfe, 0xba, 0xfe, 0x22, 0xff, 0x21, 0xff, + 0x8a, 0xff, 0x8a, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0x5e, 0x00, 0x5f, 0x00, + 0xc7, 0x00, 0xc8, 0x00, 0x31, 0x01, 0x32, 0x01, 0x98, 0x01, 0x99, 0x01, + 0xfe, 0x01, 0xfd, 0x01, 0x60, 0x02, 0x63, 0x02, 0xc0, 0x02, 0xc1, 0x02, + 0x1e, 0x03, 0x1e, 0x03, 0x77, 0x03, 0x78, 0x03, 0xca, 0x03, 0xcb, 0x03, + 0x1c, 0x04, 0x1d, 0x04, 0x66, 0x04, 0x67, 0x04, 0xb1, 0x04, 0xaf, 0x04, + 0xee, 0x04, 0xef, 0x04, 0x2c, 0x05, 0x2d, 0x05, 0x5f, 0x05, 0x5f, 0x05, + 0x8e, 0x05, 0x8f, 0x05, 0xb5, 0x05, 0xb7, 0x05, 0xd9, 0x05, 0xd7, 0x05, + 0xf0, 0x05, 0xf2, 0x05, 0x06, 0x06, 0x07, 0x06, 0x0e, 0x06, 0x10, 0x06, + 0x16, 0x06, 0x16, 0x06, 0x11, 0x06, 0x12, 0x06, 0x09, 0x06, 0x08, 0x06, + 0xf8, 0x05, 0xfa, 0x05, 0xdd, 0x05, 0xdd, 0x05, 0xc2, 0x05, 0xc2, 0x05, + 0x99, 0x05, 0x9a, 0x05, 0x6c, 0x05, 0x6c, 0x05, 0x39, 0x05, 0x39, 0x05, + 0xfc, 0x04, 0xfe, 0x04, 0xbe, 0x04, 0xbf, 0x04, 0x76, 0x04, 0x77, 0x04, + 0x2e, 0x04, 0x2f, 0x04, 0xdd, 0x03, 0xdd, 0x03, 0x86, 0x03, 0x89, 0x03, + 0x2c, 0x03, 0x2d, 0x03, 0xd2, 0x02, 0xd1, 0x02, 0x6d, 0x02, 0x70, 0x02, + 0x0c, 0x02, 0x0c, 0x02, 0xa6, 0x01, 0xa6, 0x01, 0x3c, 0x01, 0x3e, 0x01, + 0xd5, 0x00, 0xd3, 0x00, 0x67, 0x00, 0x69, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x91, 0xff, 0x91, 0xff, 0x27, 0xff, 0x28, 0xff, 0xbe, 0xfe, 0xbe, 0xfe, + 0x54, 0xfe, 0x54, 0xfe, 0xee, 0xfd, 0xf1, 0xfd, 0x88, 0xfd, 0x89, 0xfd, + 0x28, 0xfd, 0x28, 0xfd, 0xca, 0xfc, 0xcb, 0xfc, 0x6f, 0xfc, 0x6f, 0xfc, + 0x17, 0xfc, 0x18, 0xfc, 0xc2, 0xfb, 0xc2, 0xfb, 0x78, 0xfb, 0x78, 0xfb, + 0x2c, 0xfb, 0x2e, 0xfb, 0xea, 0xfa, 0xeb, 0xfa, 0xae, 0xfa, 0xae, 0xfa, + 0x72, 0xfa, 0x74, 0xfa, 0x47, 0xfa, 0x46, 0xfa, 0x18, 0xfa, 0x18, 0xfa, + 0xf5, 0xf9, 0xf7, 0xf9, 0xdb, 0xf9, 0xda, 0xf9, 0xc0, 0xf9, 0xc2, 0xf9, + 0xb4, 0xf9, 0xb6, 0xf9, 0xab, 0xf9, 0xaa, 0xf9, 0xab, 0xf9, 0xae, 0xf9, + 0xb1, 0xf9, 0xb4, 0xf9, 0xc0, 0xf9, 0xc0, 0xf9, 0xd6, 0xf9, 0xd9, 0xf9, + 0xf2, 0xf9, 0xf1, 0xf9, 0x15, 0xfa, 0x18, 0xfa, 0x3d, 0xfa, 0x3f, 0xfa, + 0x6d, 0xfa, 0x6e, 0xfa, 0xa4, 0xfa, 0xa5, 0xfa, 0xe1, 0xfa, 0xe3, 0xfa, + 0x21, 0xfb, 0x22, 0xfb, 0x6a, 0xfb, 0x6b, 0xfb, 0xb6, 0xfb, 0xb7, 0xfb, + 0x07, 0xfc, 0x08, 0xfc, 0x5b, 0xfc, 0x5b, 0xfc, 0xb5, 0xfc, 0xb6, 0xfc, + 0x10, 0xfd, 0x11, 0xfd, 0x6d, 0xfd, 0x6e, 0xfd, 0xd2, 0xfd, 0xd2, 0xfd, + 0x32, 0xfe, 0x34, 0xfe, 0x9a, 0xfe, 0x9c, 0xfe, 0xff, 0xfe, 0x00, 0xff, + 0x65, 0xff, 0x67, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0x32, 0x00, 0x33, 0x00, + 0x9c, 0x00, 0x9e, 0x00, 0xfe, 0x00, 0xfc, 0x00, 0x62, 0x01, 0x63, 0x01, + 0xc2, 0x01, 0xc3, 0x01, 0x1f, 0x02, 0x20, 0x02, 0x7d, 0x02, 0x7b, 0x02, + 0xd2, 0x02, 0xd4, 0x02, 0x26, 0x03, 0x26, 0x03, 0x75, 0x03, 0x78, 0x03, + 0xc1, 0x03, 0xc0, 0x03, 0x07, 0x04, 0x08, 0x04, 0x46, 0x04, 0x45, 0x04, + 0x81, 0x04, 0x83, 0x04, 0xb8, 0x04, 0xb8, 0x04, 0xe7, 0x04, 0xe8, 0x04, + 0x10, 0x05, 0x12, 0x05, 0x33, 0x05, 0x33, 0x05, 0x4d, 0x05, 0x4f, 0x05, + 0x63, 0x05, 0x63, 0x05, 0x71, 0x05, 0x73, 0x05, 0x79, 0x05, 0x7a, 0x05, + 0x77, 0x05, 0x7a, 0x05, 0x73, 0x05, 0x73, 0x05, 0x64, 0x05, 0x66, 0x05, + 0x4f, 0x05, 0x51, 0x05, 0x34, 0x05, 0x38, 0x05, 0x12, 0x05, 0x13, 0x05, + 0xea, 0x04, 0xec, 0x04, 0xbb, 0x04, 0xbb, 0x04, 0x84, 0x04, 0x88, 0x04, + 0x4b, 0x04, 0x4c, 0x04, 0x0a, 0x04, 0x0c, 0x04, 0xc4, 0x03, 0xc5, 0x03, + 0x7b, 0x03, 0x7b, 0x03, 0x2a, 0x03, 0x2c, 0x03, 0xda, 0x02, 0xda, 0x02, + 0x7e, 0x02, 0x81, 0x02, 0x26, 0x02, 0x27, 0x02, 0xc7, 0x01, 0xca, 0x01, + 0x67, 0x01, 0x68, 0x01, 0x07, 0x01, 0x09, 0x01, 0xa4, 0x00, 0xa4, 0x00, + 0x41, 0x00, 0x42, 0x00, 0xdb, 0xff, 0xdc, 0xff, 0x75, 0xff, 0x78, 0xff, + 0x13, 0xff, 0x13, 0xff, 0xab, 0xfe, 0xae, 0xfe, 0x4d, 0xfe, 0x4d, 0xfe, + 0xe9, 0xfd, 0xec, 0xfd, 0x8d, 0xfd, 0x8d, 0xfd, 0x30, 0xfd, 0x32, 0xfd, + 0xd7, 0xfc, 0xd7, 0xfc, 0x83, 0xfc, 0x83, 0xfc, 0x31, 0xfc, 0x31, 0xfc, + 0xe2, 0xfb, 0xe5, 0xfb, 0x9e, 0xfb, 0x9c, 0xfb, 0x56, 0xfb, 0x58, 0xfb, + 0x19, 0xfb, 0x1a, 0xfb, 0xe2, 0xfa, 0xe2, 0xfa, 0xad, 0xfa, 0xaf, 0xfa, + 0x81, 0xfa, 0x82, 0xfa, 0x5b, 0xfa, 0x5c, 0xfa, 0x3b, 0xfa, 0x3d, 0xfa, + 0x21, 0xfa, 0x22, 0xfa, 0x0f, 0xfa, 0x11, 0xfa, 0x03, 0xfa, 0x03, 0xfa, + 0x00, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x01, 0xfa, 0x0a, 0xfa, 0x0c, 0xfa, + 0x1b, 0xfa, 0x1b, 0xfa, 0x31, 0xfa, 0x32, 0xfa, 0x51, 0xfa, 0x52, 0xfa, + 0x73, 0xfa, 0x75, 0xfa, 0xa1, 0xfa, 0xa0, 0xfa, 0xd1, 0xfa, 0xd3, 0xfa, + 0x0a, 0xfb, 0x0a, 0xfb, 0x47, 0xfb, 0x48, 0xfb, 0x8a, 0xfb, 0x89, 0xfb, + 0xd1, 0xfb, 0xd3, 0xfb, 0x1e, 0xfc, 0x20, 0xfc, 0x71, 0xfc, 0x71, 0xfc, + 0xc4, 0xfc, 0xc6, 0xfc, 0x21, 0xfd, 0x1f, 0xfd, 0x7c, 0xfd, 0x7d, 0xfd, + 0xd9, 0xfd, 0xda, 0xfd, 0x3f, 0xfe, 0x3d, 0xfe, 0xa0, 0xfe, 0xa2, 0xfe, + 0x05, 0xff, 0x06, 0xff, 0x6f, 0xff, 0x70, 0xff, 0xd2, 0xff, 0xd4, 0xff, + 0x3d, 0x00, 0x3d, 0x00, 0xa1, 0x00, 0xa3, 0x00, 0x08, 0x01, 0x06, 0x01, + 0x6d, 0x01, 0x6f, 0x01, 0xcf, 0x01, 0xcf, 0x01, 0x30, 0x02, 0x33, 0x02, + 0x8f, 0x02, 0x8f, 0x02, 0xea, 0x02, 0xec, 0x02, 0x43, 0x03, 0x43, 0x03, + 0x97, 0x03, 0x97, 0x03, 0xe5, 0x03, 0xe6, 0x03, 0x31, 0x04, 0x31, 0x04, + 0x78, 0x04, 0x79, 0x04, 0xb8, 0x04, 0xb9, 0x04, 0xf3, 0x04, 0xf5, 0x04, + 0x29, 0x05, 0x29, 0x05, 0x5a, 0x05, 0x5b, 0x05, 0x81, 0x05, 0x83, 0x05, + 0xa6, 0x05, 0xa6, 0x05, 0xc0, 0x05, 0xc1, 0x05, 0xd7, 0x05, 0xd8, 0x05, + 0xe6, 0x05, 0xe6, 0x05, 0xeb, 0x05, 0xeb, 0x05, 0xed, 0x05, 0xef, 0x05, + 0xe5, 0x05, 0xe6, 0x05, 0xdc, 0x05, 0xda, 0x05, 0xc3, 0x05, 0xc4, 0x05, + 0xa8, 0x05, 0xa8, 0x05, 0x88, 0x05, 0x88, 0x05, 0x5c, 0x05, 0x5d, 0x05, + 0x33, 0x05, 0x31, 0x05, 0xf9, 0x04, 0xfa, 0x04, 0xc0, 0x04, 0xbf, 0x04, + 0x7f, 0x04, 0x80, 0x04, 0x39, 0x04, 0x3c, 0x04, 0xf2, 0x03, 0xf0, 0x03, + 0x9f, 0x03, 0xa2, 0x03, 0x50, 0x03, 0x4e, 0x03, 0xf7, 0x02, 0xf9, 0x02, + 0x9f, 0x02, 0x9e, 0x02, 0x42, 0x02, 0x42, 0x02, 0xe2, 0x01, 0xe4, 0x01, + 0x82, 0x01, 0x84, 0x01, 0x21, 0x01, 0x20, 0x01, 0xb9, 0x00, 0xbc, 0x00, + 0x57, 0x00, 0x59, 0x00, 0xf3, 0xff, 0xf4, 0xff, 0x90, 0xff, 0x92, 0xff, + 0x2d, 0xff, 0x2e, 0xff, 0xcb, 0xfe, 0xcd, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, + 0x0d, 0xfe, 0x0f, 0xfe, 0xb2, 0xfd, 0xb2, 0xfd, 0x59, 0xfd, 0x5b, 0xfd, + 0x07, 0xfd, 0x06, 0xfd, 0xb4, 0xfc, 0xb6, 0xfc, 0x67, 0xfc, 0x69, 0xfc, + 0x21, 0xfc, 0x20, 0xfc, 0xda, 0xfb, 0xde, 0xfb, 0xa1, 0xfb, 0xa0, 0xfb, + 0x66, 0xfb, 0x67, 0xfb, 0x34, 0xfb, 0x36, 0xfb, 0x09, 0xfb, 0x07, 0xfb, + 0xe2, 0xfa, 0xe4, 0xfa, 0xc2, 0xfa, 0xc2, 0xfa, 0xaa, 0xfa, 0xa9, 0xfa, + 0x96, 0xfa, 0x97, 0xfa, 0x8b, 0xfa, 0x8d, 0xfa, 0x87, 0xfa, 0x87, 0xfa, + 0x8a, 0xfa, 0x8b, 0xfa, 0x92, 0xfa, 0x92, 0xfa, 0xa1, 0xfa, 0xa2, 0xfa, + 0xbb, 0xfa, 0xba, 0xfa, 0xd6, 0xfa, 0xd6, 0xfa, 0xfd, 0xfa, 0xfe, 0xfa, + 0x26, 0xfb, 0x25, 0xfb, 0x57, 0xfb, 0x57, 0xfb, 0x8f, 0xfb, 0x8e, 0xfb, + 0xc9, 0xfb, 0xcc, 0xfb, 0x11, 0xfc, 0x10, 0xfc, 0x56, 0xfc, 0x57, 0xfc, + 0xa5, 0xfc, 0xa4, 0xfc, 0xf2, 0xfc, 0xf4, 0xfc, 0x4b, 0xfd, 0x4b, 0xfd, + 0xa6, 0xfd, 0xa4, 0xfd, 0xfc, 0xfd, 0xff, 0xfd, 0x62, 0xfe, 0x5f, 0xfe, + 0xbc, 0xfe, 0xc1, 0xfe, 0x26, 0xff, 0x23, 0xff, 0x87, 0xff, 0x8a, 0xff, + 0xed, 0xff, 0xed, 0xff, 0x55, 0x00, 0x54, 0x00, 0xba, 0x00, 0xbc, 0x00, + 0x20, 0x01, 0x1f, 0x01, 0x86, 0x01, 0x86, 0x01, 0xea, 0x01, 0xe9, 0x01, + 0x4c, 0x02, 0x4c, 0x02, 0xac, 0x02, 0xab, 0x02, 0x08, 0x03, 0x09, 0x03, + 0x63, 0x03, 0x62, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0x0a, 0x04, 0x09, 0x04, + 0x57, 0x04, 0x56, 0x04, 0x9f, 0x04, 0xa2, 0x04, 0xe6, 0x04, 0xe5, 0x04, + 0x22, 0x05, 0x22, 0x05, 0x5d, 0x05, 0x5e, 0x05, 0x8e, 0x05, 0x8d, 0x05, + 0xbb, 0x05, 0xba, 0x05, 0xe1, 0x05, 0xe2, 0x05, 0xfe, 0x05, 0xfd, 0x05, + 0x19, 0x06, 0x1a, 0x06, 0x28, 0x06, 0x29, 0x06, 0x34, 0x06, 0x33, 0x06, + 0x38, 0x06, 0x3a, 0x06, 0x34, 0x06, 0x32, 0x06, 0x2a, 0x06, 0x2c, 0x06, + 0x17, 0x06, 0x17, 0x06, 0xff, 0x05, 0xfe, 0x05, 0xde, 0x05, 0xdf, 0x05, + 0xb7, 0x05, 0xb7, 0x05, 0x8c, 0x05, 0x8b, 0x05, 0x56, 0x05, 0x57, 0x05, + 0x1e, 0x05, 0x1f, 0x05, 0xdd, 0x04, 0xdc, 0x04, 0x9a, 0x04, 0x9b, 0x04, + 0x4d, 0x04, 0x4d, 0x04, 0xff, 0x03, 0xff, 0x03, 0xac, 0x03, 0xac, 0x03, + 0x52, 0x03, 0x51, 0x03, 0xf8, 0x02, 0xf9, 0x02, 0x96, 0x02, 0x97, 0x02, + 0x37, 0x02, 0x38, 0x02, 0xd4, 0x01, 0xd3, 0x01, 0x6d, 0x01, 0x6f, 0x01, + 0x07, 0x01, 0x06, 0x01, 0x9c, 0x00, 0x9d, 0x00, 0x34, 0x00, 0x36, 0x00, + 0xcb, 0xff, 0xca, 0xff, 0x62, 0xff, 0x65, 0xff, 0xfd, 0xfe, 0xfb, 0xfe, + 0x94, 0xfe, 0x95, 0xfe, 0x32, 0xfe, 0x32, 0xfe, 0xcf, 0xfd, 0xd0, 0xfd, + 0x74, 0xfd, 0x72, 0xfd, 0x13, 0xfd, 0x13, 0xfd, 0xbe, 0xfc, 0xbc, 0xfc, + 0x67, 0xfc, 0x6a, 0xfc, 0x17, 0xfc, 0x17, 0xfc, 0xce, 0xfb, 0xcc, 0xfb, + 0x85, 0xfb, 0x85, 0xfb, 0x48, 0xfb, 0x46, 0xfb, 0x0c, 0xfb, 0x0c, 0xfb, + 0xd7, 0xfa, 0xd8, 0xfa, 0xa9, 0xfa, 0xa8, 0xfa, 0x7f, 0xfa, 0x81, 0xfa, + 0x62, 0xfa, 0x61, 0xfa, 0x44, 0xfa, 0x44, 0xfa, 0x34, 0xfa, 0x36, 0xfa, + 0x24, 0xfa, 0x24, 0xfa, 0x22, 0xfa, 0x23, 0xfa, 0x22, 0xfa, 0x23, 0xfa, + 0x2d, 0xfa, 0x2d, 0xfa, 0x3d, 0xfa, 0x3d, 0xfa, 0x56, 0xfa, 0x56, 0xfa, + 0x76, 0xfa, 0x75, 0xfa, 0x9a, 0xfa, 0x98, 0xfa, 0xc7, 0xfa, 0xc7, 0xfa, + 0xf8, 0xfa, 0xf8, 0xfa, 0x33, 0xfb, 0x33, 0xfb, 0x72, 0xfb, 0x72, 0xfb, + 0xb6, 0xfb, 0xb6, 0xfb, 0x01, 0xfc, 0x01, 0xfc, 0x4e, 0xfc, 0x4f, 0xfc, + 0xa3, 0xfc, 0xa2, 0xfc, 0xf9, 0xfc, 0xfb, 0xfc, 0x55, 0xfd, 0x54, 0xfd, + 0xb4, 0xfd, 0xb5, 0xfd, 0x13, 0xfe, 0x13, 0xfe, 0x7a, 0xfe, 0x79, 0xfe, + 0xdc, 0xfe, 0xdf, 0xfe, 0x45, 0xff, 0x45, 0xff, 0xae, 0xff, 0xad, 0xff, + 0x15, 0x00, 0x16, 0x00, 0x7f, 0x00, 0x7d, 0x00, 0xe3, 0x00, 0xe5, 0x00, + 0x4c, 0x01, 0x4b, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0x13, 0x02, 0x14, 0x02, + 0x76, 0x02, 0x77, 0x02, 0xd4, 0x02, 0xd3, 0x02, 0x2b, 0x03, 0x2d, 0x03, + 0x85, 0x03, 0x83, 0x03, 0xd5, 0x03, 0xd5, 0x03, 0x23, 0x04, 0x24, 0x04, + 0x6c, 0x04, 0x6b, 0x04, 0xaf, 0x04, 0xb1, 0x04, 0xef, 0x04, 0xed, 0x04, + 0x26, 0x05, 0x25, 0x05, 0x59, 0x05, 0x59, 0x05, 0x85, 0x05, 0x83, 0x05, + 0xa7, 0x05, 0xa9, 0x05, 0xc8, 0x05, 0xc5, 0x05, 0xdc, 0x05, 0xdd, 0x05, + 0xed, 0x05, 0xec, 0x05, 0xf5, 0x05, 0xf5, 0x05, 0xf6, 0x05, 0xf6, 0x05, + 0xf1, 0x05, 0xf1, 0x05, 0xe2, 0x05, 0xe1, 0x05, 0xcd, 0x05, 0xce, 0x05, + 0xb2, 0x05, 0xb2, 0x05, 0x8d, 0x05, 0x8d, 0x05, 0x66, 0x05, 0x65, 0x05, + 0x32, 0x05, 0x32, 0x05, 0xfb, 0x04, 0xfc, 0x04, 0xc0, 0x04, 0xbe, 0x04, + 0x78, 0x04, 0x78, 0x04, 0x32, 0x04, 0x30, 0x04, 0xdf, 0x03, 0xe0, 0x03, + 0x8d, 0x03, 0x8c, 0x03, 0x35, 0x03, 0x33, 0x03, 0xd5, 0x02, 0xd6, 0x02, + 0x79, 0x02, 0x77, 0x02, 0x10, 0x02, 0x11, 0x02, 0xae, 0x01, 0xac, 0x01, + 0x42, 0x01, 0x43, 0x01, 0xd8, 0x00, 0xd8, 0x00, 0x6c, 0x00, 0x6b, 0x00, + 0xfd, 0xff, 0xfe, 0xff, 0x91, 0xff, 0x90, 0xff, 0x23, 0xff, 0x22, 0xff, + 0xb5, 0xfe, 0xb8, 0xfe, 0x4b, 0xfe, 0x49, 0xfe, 0xe1, 0xfd, 0xe2, 0xfd, + 0x78, 0xfd, 0x78, 0xfd, 0x14, 0xfd, 0x15, 0xfd, 0xb2, 0xfc, 0xb2, 0xfc, + 0x51, 0xfc, 0x53, 0xfc, 0xf9, 0xfb, 0xf8, 0xfb, 0x9f, 0xfb, 0xa1, 0xfb, + 0x51, 0xfb, 0x51, 0xfb, 0x04, 0xfb, 0x02, 0xfb, 0xba, 0xfa, 0xbd, 0xfa, + 0x7c, 0xfa, 0x7a, 0xfa, 0x3d, 0xfa, 0x3f, 0xfa, 0x0b, 0xfa, 0x0c, 0xfa, + 0xdd, 0xf9, 0xdc, 0xf9, 0xb3, 0xf9, 0xb7, 0xf9, 0x96, 0xf9, 0x96, 0xf9, + 0x7c, 0xf9, 0x7d, 0xf9, 0x6b, 0xf9, 0x6b, 0xf9, 0x61, 0xf9, 0x62, 0xf9, + 0x61, 0xf9, 0x60, 0xf9, 0x65, 0xf9, 0x66, 0xf9, 0x75, 0xf9, 0x73, 0xf9, + 0x88, 0xf9, 0x8a, 0xf9, 0xa6, 0xf9, 0xa5, 0xf9, 0xc8, 0xf9, 0xc8, 0xf9, + 0xf3, 0xf9, 0xf4, 0xf9, 0x26, 0xfa, 0x25, 0xfa, 0x5f, 0xfa, 0x60, 0xfa, + 0x9d, 0xfa, 0x9c, 0xfa, 0xe3, 0xfa, 0xe3, 0xfa, 0x2d, 0xfb, 0x2d, 0xfb, + 0x7f, 0xfb, 0x7e, 0xfb, 0xd3, 0xfb, 0xd3, 0xfb, 0x2d, 0xfc, 0x2d, 0xfc, + 0x8e, 0xfc, 0x8b, 0xfc, 0xec, 0xfc, 0xee, 0xfc, 0x55, 0xfd, 0x53, 0xfd, + 0xbc, 0xfd, 0xbb, 0xfd, 0x25, 0xfe, 0x26, 0xfe, 0x93, 0xfe, 0x93, 0xfe, + 0x00, 0xff, 0xff, 0xfe, 0x71, 0xff, 0x71, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0x4d, 0x00, 0x4a, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0x2a, 0x01, 0x27, 0x01, + 0x95, 0x01, 0x98, 0x01, 0xff, 0x01, 0xfc, 0x01, 0x65, 0x02, 0x64, 0x02, + 0xc7, 0x02, 0xc8, 0x02, 0x2b, 0x03, 0x27, 0x03, 0x82, 0x03, 0x84, 0x03, + 0xdc, 0x03, 0xdb, 0x03, 0x2f, 0x04, 0x30, 0x04, 0x7c, 0x04, 0x7b, 0x04, + 0xc3, 0x04, 0xc3, 0x04, 0x07, 0x05, 0x05, 0x05, 0x41, 0x05, 0x41, 0x05, + 0x79, 0x05, 0x79, 0x05, 0xa4, 0x05, 0xa3, 0x05, 0xce, 0x05, 0xce, 0x05, + 0xed, 0x05, 0xec, 0x05, 0x05, 0x06, 0x06, 0x06, 0x16, 0x06, 0x16, 0x06, + 0x20, 0x06, 0x1e, 0x06, 0x23, 0x06, 0x24, 0x06, 0x1b, 0x06, 0x1a, 0x06, + 0x11, 0x06, 0x10, 0x06, 0xf8, 0x05, 0xf8, 0x05, 0xdd, 0x05, 0xdc, 0x05, + 0xba, 0x05, 0xb9, 0x05, 0x8a, 0x05, 0x8b, 0x05, 0x5e, 0x05, 0x5a, 0x05, + 0x20, 0x05, 0x21, 0x05, 0xe1, 0x04, 0xe0, 0x04, 0x9a, 0x04, 0x9a, 0x04, + 0x4d, 0x04, 0x4e, 0x04, 0xfd, 0x03, 0xfc, 0x03, 0xa3, 0x03, 0xa3, 0x03, + 0x47, 0x03, 0x47, 0x03, 0xe9, 0x02, 0xe8, 0x02, 0x85, 0x02, 0x84, 0x02, + 0x1b, 0x02, 0x1c, 0x02, 0xb3, 0x01, 0xb1, 0x01, 0x42, 0x01, 0x44, 0x01, + 0xd5, 0x00, 0xd6, 0x00, 0x64, 0x00, 0x63, 0x00, 0xf5, 0xff, 0xf6, 0xff, + 0x81, 0xff, 0x82, 0xff, 0x13, 0xff, 0x12, 0xff, 0xa0, 0xfe, 0xa1, 0xfe, + 0x33, 0xfe, 0x32, 0xfe, 0xc5, 0xfd, 0xc5, 0xfd, 0x59, 0xfd, 0x58, 0xfd, + 0xf3, 0xfc, 0xf3, 0xfc, 0x8e, 0xfc, 0x8c, 0xfc, 0x2c, 0xfc, 0x2c, 0xfc, + 0xd0, 0xfb, 0xce, 0xfb, 0x76, 0xfb, 0x77, 0xfb, 0x26, 0xfb, 0x24, 0xfb, + 0xd7, 0xfa, 0xd6, 0xfa, 0x8e, 0xfa, 0x8f, 0xfa, 0x4e, 0xfa, 0x4d, 0xfa, + 0x12, 0xfa, 0x12, 0xfa, 0xde, 0xf9, 0xde, 0xf9, 0xb1, 0xf9, 0xaf, 0xf9, + 0x8c, 0xf9, 0x8c, 0xf9, 0x6c, 0xf9, 0x6c, 0xf9, 0x55, 0xf9, 0x54, 0xf9, + 0x44, 0xf9, 0x45, 0xf9, 0x40, 0xf9, 0x3e, 0xf9, 0x3e, 0xf9, 0x40, 0xf9, + 0x49, 0xf9, 0x48, 0xf9, 0x5a, 0xf9, 0x58, 0xf9, 0x71, 0xf9, 0x71, 0xf9, + 0x95, 0xf9, 0x94, 0xf9, 0xb8, 0xf9, 0xba, 0xf9, 0xed, 0xf9, 0xeb, 0xf9, + 0x20, 0xfa, 0x22, 0xfa, 0x61, 0xfa, 0x5f, 0xfa, 0xa4, 0xfa, 0xa5, 0xfa, + 0xf1, 0xfa, 0xf0, 0xfa, 0x41, 0xfb, 0x40, 0xfb, 0x99, 0xfb, 0x99, 0xfb, + 0xf6, 0xfb, 0xf4, 0xfb, 0x57, 0xfc, 0x57, 0xfc, 0xbd, 0xfc, 0xbc, 0xfc, + 0x27, 0xfd, 0x25, 0xfd, 0x95, 0xfd, 0x95, 0xfd, 0x04, 0xfe, 0x02, 0xfe, + 0x76, 0xfe, 0x76, 0xfe, 0xec, 0xfe, 0xea, 0xfe, 0x60, 0xff, 0x5f, 0xff, + 0xd7, 0xff, 0xd7, 0xff, 0x4e, 0x00, 0x4d, 0x00, 0xc3, 0x00, 0xc3, 0x00, + 0x3b, 0x01, 0x39, 0x01, 0xb0, 0x01, 0xae, 0x01, 0x20, 0x02, 0x21, 0x02, + 0x93, 0x02, 0x92, 0x02, 0xfe, 0x02, 0xfc, 0x02, 0x6a, 0x03, 0x69, 0x03, + 0xcf, 0x03, 0xce, 0x03, 0x32, 0x04, 0x33, 0x04, 0x8e, 0x04, 0x8c, 0x04, + 0xe8, 0x04, 0xe6, 0x04, 0x3a, 0x05, 0x3a, 0x05, 0x87, 0x05, 0x85, 0x05, + 0xce, 0x05, 0xcd, 0x05, 0x0b, 0x06, 0x0a, 0x06, 0x46, 0x06, 0x44, 0x06, + 0x76, 0x06, 0x75, 0x06, 0x9e, 0x06, 0x9f, 0x06, 0xc5, 0x06, 0xc1, 0x06, + 0xd7, 0x06, 0xd9, 0x06, 0xef, 0x06, 0xec, 0x06, 0xf6, 0x06, 0xf5, 0x06, + 0xf9, 0x06, 0xf7, 0x06, 0xf4, 0x06, 0xf4, 0x06, 0xe3, 0x06, 0xe1, 0x06, + 0xcf, 0x06, 0xce, 0x06, 0xad, 0x06, 0xab, 0x06, 0x86, 0x06, 0x87, 0x06, + 0x5a, 0x06, 0x56, 0x06, 0x20, 0x06, 0x1f, 0x06, 0xe5, 0x05, 0xe3, 0x05, + 0x9f, 0x05, 0x9f, 0x05, 0x55, 0x05, 0x54, 0x05, 0x03, 0x05, 0x01, 0x05, + 0xac, 0x04, 0xab, 0x04, 0x4f, 0x04, 0x4f, 0x04, 0xef, 0x03, 0xed, 0x03, + 0x89, 0x03, 0x87, 0x03, 0x1e, 0x03, 0x1c, 0x03, 0xb1, 0x02, 0xb0, 0x02, + 0x3f, 0x02, 0x40, 0x02, 0xcd, 0x01, 0xcb, 0x01, 0x57, 0x01, 0x57, 0x01, + 0xe2, 0x00, 0xe1, 0x00, 0x69, 0x00, 0x68, 0x00, 0xf1, 0xff, 0xf3, 0xff, + 0x7b, 0xff, 0x7b, 0xff, 0x05, 0xff, 0x04, 0xff, 0x8d, 0xfe, 0x8d, 0xfe, + 0x1d, 0xfe, 0x1c, 0xfe, 0xaa, 0xfd, 0xaa, 0xfd, 0x3e, 0xfd, 0x3f, 0xfd, + 0xd5, 0xfc, 0xd1, 0xfc, 0x6b, 0xfc, 0x6d, 0xfc, 0x0b, 0xfc, 0x0b, 0xfc, + 0xac, 0xfb, 0xaa, 0xfb, 0x54, 0xfb, 0x56, 0xfb, 0x04, 0xfb, 0x00, 0xfb, + 0xb9, 0xfa, 0xb9, 0xfa, 0x72, 0xfa, 0x6f, 0xfa, 0x33, 0xfa, 0x33, 0xfa, + 0xfd, 0xf9, 0xfc, 0xf9, 0xc9, 0xf9, 0xc7, 0xf9, 0xa5, 0xf9, 0xa4, 0xf9, + 0x80, 0xf9, 0x7f, 0xf9, 0x6a, 0xf9, 0x6a, 0xf9, 0x59, 0xf9, 0x56, 0xf9, + 0x4f, 0xf9, 0x4e, 0xf9, 0x52, 0xf9, 0x50, 0xf9, 0x58, 0xf9, 0x59, 0xf9, + 0x6c, 0xf9, 0x69, 0xf9, 0x82, 0xf9, 0x82, 0xf9, 0xa5, 0xf9, 0xa4, 0xf9, + 0xcd, 0xf9, 0xca, 0xf9, 0xfd, 0xf9, 0xff, 0xf9, 0x38, 0xfa, 0x35, 0xfa, + 0x75, 0xfa, 0x78, 0xfa, 0xc0, 0xfa, 0xbd, 0xfa, 0x0d, 0xfb, 0x0c, 0xfb, + 0x61, 0xfb, 0x60, 0xfb, 0xbf, 0xfb, 0xbd, 0xfb, 0x1c, 0xfc, 0x1c, 0xfc, + 0x85, 0xfc, 0x83, 0xfc, 0xed, 0xfc, 0xec, 0xfc, 0x5c, 0xfd, 0x5b, 0xfd, + 0xcd, 0xfd, 0xcd, 0xfd, 0x44, 0xfe, 0x43, 0xfe, 0xbb, 0xfe, 0xba, 0xfe, + 0x35, 0xff, 0x34, 0xff, 0xae, 0xff, 0xae, 0xff, 0x2d, 0x00, 0x2c, 0x00, + 0xa7, 0x00, 0xa4, 0x00, 0x22, 0x01, 0x22, 0x01, 0x9d, 0x01, 0x9a, 0x01, + 0x15, 0x02, 0x16, 0x02, 0x8d, 0x02, 0x8b, 0x02, 0xfd, 0x02, 0xfb, 0x02, + 0x6e, 0x03, 0x6f, 0x03, 0xdc, 0x03, 0xda, 0x03, 0x44, 0x04, 0x43, 0x04, + 0xa9, 0x04, 0xa8, 0x04, 0x0a, 0x05, 0x08, 0x05, 0x61, 0x05, 0x62, 0x05, + 0xb8, 0x05, 0xb8, 0x05, 0x04, 0x06, 0x02, 0x06, 0x4b, 0x06, 0x4b, 0x06, + 0x8b, 0x06, 0x8b, 0x06, 0xc5, 0x06, 0xc3, 0x06, 0xf4, 0x06, 0xf4, 0x06, + 0x1e, 0x07, 0x1e, 0x07, 0x40, 0x07, 0x3e, 0x07, 0x57, 0x07, 0x56, 0x07, + 0x6a, 0x07, 0x69, 0x07, 0x6f, 0x07, 0x6e, 0x07, 0x6f, 0x07, 0x6f, 0x07, + 0x65, 0x07, 0x63, 0x07, 0x52, 0x07, 0x52, 0x07, 0x39, 0x07, 0x37, 0x07, + 0x12, 0x07, 0x14, 0x07, 0xea, 0x06, 0xe8, 0x06, 0xb5, 0x06, 0xb4, 0x06, + 0x7a, 0x06, 0x79, 0x06, 0x35, 0x06, 0x34, 0x06, 0xed, 0x05, 0xec, 0x05, + 0x9c, 0x05, 0x99, 0x05, 0x45, 0x05, 0x43, 0x05, 0xe6, 0x04, 0xe5, 0x04, + 0x83, 0x04, 0x81, 0x04, 0x1c, 0x04, 0x18, 0x04, 0xae, 0x03, 0xac, 0x03, + 0x3d, 0x03, 0x3a, 0x03, 0xc7, 0x02, 0xc6, 0x02, 0x51, 0x02, 0x4d, 0x02, + 0xd3, 0x01, 0xd3, 0x01, 0x59, 0x01, 0x55, 0x01, 0xd9, 0x00, 0xd9, 0x00, + 0x5b, 0x00, 0x5a, 0x00, 0xdb, 0xff, 0xd9, 0xff, 0x5e, 0xff, 0x5d, 0xff, + 0xe0, 0xfe, 0xdd, 0xfe, 0x65, 0xfe, 0x63, 0xfe, 0xef, 0xfd, 0xee, 0xfd, + 0x77, 0xfd, 0x74, 0xfd, 0x06, 0xfd, 0x04, 0xfd, 0x96, 0xfc, 0x93, 0xfc, + 0x2a, 0xfc, 0x28, 0xfc, 0xc4, 0xfb, 0xc2, 0xfb, 0x61, 0xfb, 0x5d, 0xfb, + 0x05, 0xfb, 0x03, 0xfb, 0xb0, 0xfa, 0xad, 0xfa, 0x5e, 0xfa, 0x5d, 0xfa, + 0x16, 0xfa, 0x13, 0xfa, 0xd1, 0xf9, 0xd1, 0xf9, 0x98, 0xf9, 0x95, 0xf9, + 0x63, 0xf9, 0x65, 0xf9, 0x3a, 0xf9, 0x36, 0xf9, 0x17, 0xf9, 0x17, 0xf9, + 0xfb, 0xf8, 0xf9, 0xf8, 0xeb, 0xf8, 0xe9, 0xf8, 0xde, 0xf8, 0xdd, 0xf8, + 0xe0, 0xf8, 0xde, 0xf8, 0xe7, 0xf8, 0xe6, 0xf8, 0xf9, 0xf8, 0xf7, 0xf8, + 0x10, 0xf9, 0x0f, 0xf9, 0x32, 0xf9, 0x32, 0xf9, 0x5d, 0xf9, 0x5b, 0xf9, + 0x8f, 0xf9, 0x8f, 0xf9, 0xcb, 0xf9, 0xc8, 0xf9, 0x0d, 0xfa, 0x0d, 0xfa, + 0x57, 0xfa, 0x56, 0xfa, 0xa7, 0xfa, 0xa8, 0xfa, 0xfe, 0xfa, 0xfc, 0xfa, + 0x5c, 0xfb, 0x5c, 0xfb, 0xbf, 0xfb, 0xbd, 0xfb, 0x28, 0xfc, 0x26, 0xfc, + 0x93, 0xfc, 0x93, 0xfc, 0x05, 0xfd, 0x04, 0xfd, 0x7c, 0xfd, 0x79, 0xfd, + 0xf1, 0xfd, 0xf1, 0xfd, 0x6e, 0xfe, 0x6c, 0xfe, 0xea, 0xfe, 0xea, 0xfe, + 0x67, 0xff, 0x66, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0x63, 0x00, 0x61, 0x00, + 0xe2, 0x00, 0xe2, 0x00, 0x60, 0x01, 0x5d, 0x01, 0xd9, 0x01, 0xd9, 0x01, + 0x52, 0x02, 0x4f, 0x02, 0xc3, 0x02, 0xc3, 0x02, 0x38, 0x03, 0x36, 0x03, + 0xa4, 0x03, 0xa3, 0x03, 0x0f, 0x04, 0x0f, 0x04, 0x75, 0x04, 0x74, 0x04, + 0xd4, 0x04, 0xd2, 0x04, 0x30, 0x05, 0x30, 0x05, 0x84, 0x05, 0x81, 0x05, + 0xd1, 0x05, 0xd1, 0x05, 0x17, 0x06, 0x17, 0x06, 0x56, 0x06, 0x55, 0x06, + 0x90, 0x06, 0x90, 0x06, 0xbe, 0x06, 0xbc, 0x06, 0xe7, 0x06, 0xe7, 0x06, + 0x07, 0x07, 0x05, 0x07, 0x1e, 0x07, 0x1e, 0x07, 0x2e, 0x07, 0x2d, 0x07, + 0x33, 0x07, 0x31, 0x07, 0x31, 0x07, 0x2f, 0x07, 0x25, 0x07, 0x25, 0x07, + 0x10, 0x07, 0x0f, 0x07, 0xf4, 0x06, 0xf3, 0x06, 0xcc, 0x06, 0xcb, 0x06, + 0x9f, 0x06, 0x9e, 0x06, 0x66, 0x06, 0x64, 0x06, 0x29, 0x06, 0x28, 0x06, + 0xe1, 0x05, 0xe0, 0x05, 0x91, 0x05, 0x91, 0x05, 0x3f, 0x05, 0x3d, 0x05, + 0xdf, 0x04, 0xe0, 0x04, 0x81, 0x04, 0x80, 0x04, 0x16, 0x04, 0x15, 0x04, + 0xaa, 0x03, 0xaa, 0x03, 0x3a, 0x03, 0x38, 0x03, 0xc0, 0x02, 0xc0, 0x02, + 0x48, 0x02, 0x49, 0x02, 0xcc, 0x01, 0xc8, 0x01, 0x4d, 0x01, 0x4d, 0x01, + 0xc9, 0x00, 0xc9, 0x00, 0x48, 0x00, 0x47, 0x00, 0xc4, 0xff, 0xc5, 0xff, + 0x3e, 0xff, 0x3d, 0xff, 0xbf, 0xfe, 0xc0, 0xfe, 0x3b, 0xfe, 0x3b, 0xfe, + 0xc2, 0xfd, 0xc0, 0xfd, 0x43, 0xfd, 0x46, 0xfd, 0xcd, 0xfc, 0xc9, 0xfc, + 0x58, 0xfc, 0x59, 0xfc, 0xe3, 0xfb, 0xe2, 0xfb, 0x77, 0xfb, 0x76, 0xfb, + 0x0e, 0xfb, 0x0e, 0xfb, 0xa9, 0xfa, 0xa7, 0xfa, 0x4d, 0xfa, 0x4d, 0xfa, + 0xf5, 0xf9, 0xf5, 0xf9, 0xa7, 0xf9, 0xa4, 0xf9, 0x5b, 0xf9, 0x5c, 0xf9, + 0x1c, 0xf9, 0x19, 0xf9, 0xe0, 0xf8, 0xe1, 0xf8, 0xb0, 0xf8, 0xad, 0xf8, + 0x86, 0xf8, 0x85, 0xf8, 0x61, 0xf8, 0x61, 0xf8, 0x50, 0xf8, 0x4e, 0xf8, + 0x3a, 0xf8, 0x3b, 0xf8, 0x39, 0xf8, 0x38, 0xf8, 0x39, 0xf8, 0x38, 0xf8, + 0x48, 0xf8, 0x46, 0xf8, 0x5f, 0xf8, 0x5e, 0xf8, 0x7b, 0xf8, 0x7a, 0xf8, + 0xa2, 0xf8, 0xa2, 0xf8, 0xd2, 0xf8, 0xd1, 0xf8, 0x0b, 0xf9, 0x0a, 0xf9, + 0x4d, 0xf9, 0x4c, 0xf9, 0x94, 0xf9, 0x94, 0xf9, 0xe6, 0xf9, 0xe5, 0xf9, + 0x3b, 0xfa, 0x3b, 0xfa, 0x9a, 0xfa, 0x9a, 0xfa, 0xff, 0xfa, 0xfe, 0xfa, + 0x65, 0xfb, 0x64, 0xfb, 0xdb, 0xfb, 0xd9, 0xfb, 0x4a, 0xfc, 0x49, 0xfc, + 0xc4, 0xfc, 0xc4, 0xfc, 0x3e, 0xfd, 0x3d, 0xfd, 0xbb, 0xfd, 0xbc, 0xfd, + 0x40, 0xfe, 0x3e, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0x45, 0xff, 0x43, 0xff, + 0xc9, 0xff, 0xc7, 0xff, 0x4f, 0x00, 0x4d, 0x00, 0xd3, 0x00, 0xd1, 0x00, + 0x51, 0x01, 0x51, 0x01, 0xd2, 0x01, 0xd1, 0x01, 0x4b, 0x02, 0x49, 0x02, + 0xc4, 0x02, 0xc5, 0x02, 0x3b, 0x03, 0x3a, 0x03, 0xad, 0x03, 0xac, 0x03, + 0x19, 0x04, 0x19, 0x04, 0x85, 0x04, 0x81, 0x04, 0xe4, 0x04, 0xe6, 0x04, + 0x44, 0x05, 0x41, 0x05, 0x9a, 0x05, 0x98, 0x05, 0xe9, 0x05, 0xe8, 0x05, + 0x32, 0x06, 0x31, 0x06, 0x6f, 0x06, 0x6f, 0x06, 0xac, 0x06, 0xab, 0x06, + 0xdb, 0x06, 0xd9, 0x06, 0x01, 0x07, 0x02, 0x07, 0x25, 0x07, 0x23, 0x07, + 0x39, 0x07, 0x38, 0x07, 0x48, 0x07, 0x48, 0x07, 0x4c, 0x07, 0x4b, 0x07, + 0x48, 0x07, 0x47, 0x07, 0x38, 0x07, 0x39, 0x07, 0x23, 0x07, 0x21, 0x07, + 0x03, 0x07, 0x02, 0x07, 0xd8, 0x06, 0xd8, 0x06, 0xa7, 0x06, 0xa6, 0x06, + 0x6d, 0x06, 0x6d, 0x06, 0x29, 0x06, 0x28, 0x06, 0xe0, 0x05, 0xde, 0x05, + 0x8a, 0x05, 0x8b, 0x05, 0x34, 0x05, 0x31, 0x05, 0xd0, 0x04, 0xd0, 0x04, + 0x6a, 0x04, 0x6a, 0x04, 0xfd, 0x03, 0xfc, 0x03, 0x8b, 0x03, 0x8b, 0x03, + 0x15, 0x03, 0x13, 0x03, 0x9b, 0x02, 0x9a, 0x02, 0x1b, 0x02, 0x1b, 0x02, + 0x9c, 0x01, 0x99, 0x01, 0x17, 0x01, 0x17, 0x01, 0x92, 0x00, 0x90, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0x84, 0xff, 0x82, 0xff, 0xfd, 0xfe, 0xfe, 0xfe, + 0x79, 0xfe, 0x77, 0xfe, 0xf7, 0xfd, 0xf8, 0xfd, 0x78, 0xfd, 0x76, 0xfd, + 0xfb, 0xfc, 0xfb, 0xfc, 0x83, 0xfc, 0x81, 0xfc, 0x09, 0xfc, 0x08, 0xfc, + 0x99, 0xfb, 0x99, 0xfb, 0x2a, 0xfb, 0x28, 0xfb, 0xc4, 0xfa, 0xc3, 0xfa, + 0x62, 0xfa, 0x60, 0xfa, 0x05, 0xfa, 0x05, 0xfa, 0xb0, 0xf9, 0xb0, 0xf9, + 0x62, 0xf9, 0x61, 0xf9, 0x1e, 0xf9, 0x1b, 0xf9, 0xde, 0xf8, 0xdd, 0xf8, + 0xa8, 0xf8, 0xa8, 0xf8, 0x7a, 0xf8, 0x79, 0xf8, 0x55, 0xf8, 0x54, 0xf8, + 0x3b, 0xf8, 0x39, 0xf8, 0x26, 0xf8, 0x26, 0xf8, 0x1f, 0xf8, 0x1d, 0xf8, + 0x1c, 0xf8, 0x1d, 0xf8, 0x29, 0xf8, 0x27, 0xf8, 0x3b, 0xf8, 0x3b, 0xf8, + 0x5a, 0xf8, 0x59, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, 0xaf, 0xf8, 0xae, 0xf8, + 0xe7, 0xf8, 0xe6, 0xf8, 0x27, 0xf9, 0x26, 0xf9, 0x71, 0xf9, 0x73, 0xf9, + 0xc3, 0xf9, 0xc0, 0xf9, 0x1c, 0xfa, 0x1d, 0xfa, 0x7d, 0xfa, 0x7c, 0xfa, + 0xe2, 0xfa, 0xe3, 0xfa, 0x53, 0xfb, 0x53, 0xfb, 0xc3, 0xfb, 0xc2, 0xfb, + 0x3e, 0xfc, 0x3d, 0xfc, 0xb9, 0xfc, 0xb9, 0xfc, 0x39, 0xfd, 0x38, 0xfd, + 0xbf, 0xfd, 0xbe, 0xfd, 0x46, 0xfe, 0x45, 0xfe, 0xce, 0xfe, 0xcd, 0xfe, + 0x59, 0xff, 0x5a, 0xff, 0xe6, 0xff, 0xe3, 0xff, 0x73, 0x00, 0x73, 0x00, + 0xfa, 0x00, 0xf9, 0x00, 0x87, 0x01, 0x85, 0x01, 0x0d, 0x02, 0x0e, 0x02, + 0x90, 0x02, 0x8c, 0x02, 0x11, 0x03, 0x12, 0x03, 0x8e, 0x03, 0x8b, 0x03, + 0x09, 0x04, 0x09, 0x04, 0x7e, 0x04, 0x7e, 0x04, 0xee, 0x04, 0xec, 0x04, + 0x5a, 0x05, 0x58, 0x05, 0xbc, 0x05, 0xbc, 0x05, 0x1d, 0x06, 0x1c, 0x06, + 0x74, 0x06, 0x72, 0x06, 0xc2, 0x06, 0xc3, 0x06, 0x0d, 0x07, 0x0b, 0x07, + 0x4b, 0x07, 0x4a, 0x07, 0x84, 0x07, 0x83, 0x07, 0xb0, 0x07, 0xaf, 0x07, + 0xd6, 0x07, 0xd5, 0x07, 0xf3, 0x07, 0xf2, 0x07, 0x02, 0x08, 0x02, 0x08, + 0x0e, 0x08, 0x0e, 0x08, 0x0c, 0x08, 0x0c, 0x08, 0x03, 0x08, 0x00, 0x08, + 0xec, 0x07, 0xee, 0x07, 0xd1, 0x07, 0xce, 0x07, 0xa7, 0x07, 0xa7, 0x07, + 0x77, 0x07, 0x77, 0x07, 0x3c, 0x07, 0x3b, 0x07, 0xf9, 0x06, 0xf8, 0x06, + 0xaf, 0x06, 0xae, 0x06, 0x57, 0x06, 0x57, 0x06, 0x00, 0x06, 0xfd, 0x05, + 0x9a, 0x05, 0x99, 0x05, 0x33, 0x05, 0x31, 0x05, 0xc3, 0x04, 0xc1, 0x04, + 0x4b, 0x04, 0x4b, 0x04, 0xd5, 0x03, 0xd4, 0x03, 0x52, 0x03, 0x54, 0x03, + 0xd4, 0x02, 0xd2, 0x02, 0x4c, 0x02, 0x4d, 0x02, 0xc3, 0x01, 0xc2, 0x01, + 0x3a, 0x01, 0x39, 0x01, 0xac, 0x00, 0xad, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x94, 0xff, 0x95, 0xff, 0x08, 0xff, 0x06, 0xff, 0x80, 0xfe, 0x80, 0xfe, + 0xfc, 0xfd, 0xfb, 0xfd, 0x76, 0xfd, 0x77, 0xfd, 0xfb, 0xfc, 0xf9, 0xfc, + 0x79, 0xfc, 0x79, 0xfc, 0x05, 0xfc, 0x04, 0xfc, 0x8e, 0xfb, 0x8f, 0xfb, + 0x21, 0xfb, 0x20, 0xfb, 0xba, 0xfa, 0xb8, 0xfa, 0x55, 0xfa, 0x57, 0xfa, + 0xfd, 0xf9, 0xfa, 0xf9, 0xa5, 0xf9, 0xa6, 0xf9, 0x5a, 0xf9, 0x58, 0xf9, + 0x15, 0xf9, 0x15, 0xf9, 0xd8, 0xf8, 0xd8, 0xf8, 0xa9, 0xf8, 0xa8, 0xf8, + 0x7a, 0xf8, 0x78, 0xf8, 0x5c, 0xf8, 0x5c, 0xf8, 0x42, 0xf8, 0x40, 0xf8, + 0x35, 0xf8, 0x34, 0xf8, 0x33, 0xf8, 0x32, 0xf8, 0x33, 0xf8, 0x33, 0xf8, + 0x47, 0xf8, 0x47, 0xf8, 0x5d, 0xf8, 0x5d, 0xf8, 0x81, 0xf8, 0x82, 0xf8, + 0xb0, 0xf8, 0xae, 0xf8, 0xe4, 0xf8, 0xe4, 0xf8, 0x28, 0xf9, 0x25, 0xf9, + 0x6c, 0xf9, 0x6c, 0xf9, 0xbd, 0xf9, 0xbd, 0xf9, 0x18, 0xfa, 0x17, 0xfa, + 0x78, 0xfa, 0x77, 0xfa, 0xe1, 0xfa, 0xe0, 0xfa, 0x50, 0xfb, 0x4f, 0xfb, + 0xc5, 0xfb, 0xc5, 0xfb, 0x40, 0xfc, 0x3e, 0xfc, 0xc0, 0xfc, 0xbf, 0xfc, + 0x45, 0xfd, 0x45, 0xfd, 0xcd, 0xfd, 0xcb, 0xfd, 0x58, 0xfe, 0x57, 0xfe, + 0xe4, 0xfe, 0xe3, 0xfe, 0x77, 0xff, 0x74, 0xff, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x96, 0x00, 0x28, 0x01, 0x27, 0x01, 0xb5, 0x01, 0xb7, 0x01, + 0x44, 0x02, 0x42, 0x02, 0xca, 0x02, 0xcd, 0x02, 0x54, 0x03, 0x51, 0x03, + 0xd4, 0x03, 0xd6, 0x03, 0x55, 0x04, 0x54, 0x04, 0xd1, 0x04, 0xd0, 0x04, + 0x46, 0x05, 0x45, 0x05, 0xb5, 0x05, 0xb5, 0x05, 0x22, 0x06, 0x21, 0x06, + 0x81, 0x06, 0x82, 0x06, 0xe0, 0x06, 0xdf, 0x06, 0x32, 0x07, 0x33, 0x07, + 0x82, 0x07, 0x80, 0x07, 0xc4, 0x07, 0xc3, 0x07, 0xfd, 0x07, 0xff, 0x07, + 0x32, 0x08, 0x31, 0x08, 0x59, 0x08, 0x57, 0x08, 0x77, 0x08, 0x78, 0x08, + 0x8c, 0x08, 0x8a, 0x08, 0x96, 0x08, 0x97, 0x08, 0x97, 0x08, 0x97, 0x08, + 0x8d, 0x08, 0x8c, 0x08, 0x78, 0x08, 0x7a, 0x08, 0x5d, 0x08, 0x5c, 0x08, + 0x30, 0x08, 0x30, 0x08, 0x01, 0x08, 0x01, 0x08, 0xc2, 0x07, 0xc3, 0x07, + 0x7f, 0x07, 0x80, 0x07, 0x2f, 0x07, 0x31, 0x07, 0xdb, 0x06, 0xd8, 0x06, + 0x7a, 0x06, 0x7c, 0x06, 0x14, 0x06, 0x13, 0x06, 0xa7, 0x05, 0xa6, 0x05, + 0x32, 0x05, 0x33, 0x05, 0xb8, 0x04, 0xb7, 0x04, 0x39, 0x04, 0x38, 0x04, + 0xb3, 0x03, 0xb4, 0x03, 0x2b, 0x03, 0x29, 0x03, 0x9f, 0x02, 0x9f, 0x02, + 0x0d, 0x02, 0x0e, 0x02, 0x7e, 0x01, 0x7d, 0x01, 0xea, 0x00, 0xe9, 0x00, + 0x56, 0x00, 0x55, 0x00, 0xc2, 0xff, 0xbf, 0xff, 0x2e, 0xff, 0x2d, 0xff, + 0x9a, 0xfe, 0x9a, 0xfe, 0x0f, 0xfe, 0x0d, 0xfe, 0x82, 0xfd, 0x82, 0xfd, + 0xfa, 0xfc, 0xfa, 0xfc, 0x75, 0xfc, 0x73, 0xfc, 0xf3, 0xfb, 0xf4, 0xfb, + 0x78, 0xfb, 0x75, 0xfb, 0xfe, 0xfa, 0xfe, 0xfa, 0x8e, 0xfa, 0x8e, 0xfa, + 0x22, 0xfa, 0x20, 0xfa, 0xc0, 0xf9, 0xc0, 0xf9, 0x63, 0xf9, 0x61, 0xf9, + 0x0d, 0xf9, 0x0d, 0xf9, 0xc3, 0xf8, 0xc1, 0xf8, 0x7d, 0xf8, 0x7c, 0xf8, + 0x43, 0xf8, 0x43, 0xf8, 0x11, 0xf8, 0x10, 0xf8, 0xe8, 0xf7, 0xe7, 0xf7, + 0xc9, 0xf7, 0xca, 0xf7, 0xb5, 0xf7, 0xb5, 0xf7, 0xac, 0xf7, 0xab, 0xf7, + 0xac, 0xf7, 0xac, 0xf7, 0xb7, 0xf7, 0xb5, 0xf7, 0xcd, 0xf7, 0xcd, 0xf7, + 0xeb, 0xf7, 0xec, 0xf7, 0x18, 0xf8, 0x16, 0xf8, 0x48, 0xf8, 0x4b, 0xf8, + 0x89, 0xf8, 0x87, 0xf8, 0xcd, 0xf8, 0xce, 0xf8, 0x21, 0xf9, 0x20, 0xf9, + 0x77, 0xf9, 0x76, 0xf9, 0xd8, 0xf9, 0xd8, 0xf9, 0x42, 0xfa, 0x42, 0xfa, + 0xb2, 0xfa, 0xb1, 0xfa, 0x27, 0xfb, 0x28, 0xfb, 0xa5, 0xfb, 0xa3, 0xfb, + 0x23, 0xfc, 0x26, 0xfc, 0xae, 0xfc, 0xab, 0xfc, 0x37, 0xfd, 0x3a, 0xfd, + 0xc7, 0xfd, 0xc5, 0xfd, 0x58, 0xfe, 0x59, 0xfe, 0xe9, 0xfe, 0xe9, 0xfe, + 0x7f, 0xff, 0x80, 0xff, 0x12, 0x00, 0x11, 0x00, 0xa7, 0x00, 0xaa, 0x00, + 0x3d, 0x01, 0x3c, 0x01, 0xcc, 0x01, 0xce, 0x01, 0x5d, 0x02, 0x5b, 0x02, + 0xe6, 0x02, 0xe7, 0x02, 0x6e, 0x03, 0x6d, 0x03, 0xf3, 0x03, 0xf4, 0x03, + 0x74, 0x04, 0x73, 0x04, 0xee, 0x04, 0xee, 0x04, 0x66, 0x05, 0x68, 0x05, + 0xd4, 0x05, 0xd1, 0x05, 0x3c, 0x06, 0x3f, 0x06, 0x9d, 0x06, 0x9d, 0x06, + 0xf5, 0x06, 0xf6, 0x06, 0x49, 0x07, 0x4a, 0x07, 0x90, 0x07, 0x90, 0x07, + 0xd2, 0x07, 0xd3, 0x07, 0x06, 0x08, 0x05, 0x08, 0x33, 0x08, 0x35, 0x08, + 0x58, 0x08, 0x56, 0x08, 0x6f, 0x08, 0x71, 0x08, 0x7f, 0x08, 0x7f, 0x08, + 0x83, 0x08, 0x82, 0x08, 0x7d, 0x08, 0x7e, 0x08, 0x6c, 0x08, 0x6c, 0x08, + 0x52, 0x08, 0x53, 0x08, 0x2b, 0x08, 0x2c, 0x08, 0xfc, 0x07, 0xfc, 0x07, + 0xc1, 0x07, 0xc2, 0x07, 0x7c, 0x07, 0x7d, 0x07, 0x2f, 0x07, 0x31, 0x07, + 0xd9, 0x06, 0xd9, 0x06, 0x79, 0x06, 0x7a, 0x06, 0x14, 0x06, 0x15, 0x06, + 0xa4, 0x05, 0xa4, 0x05, 0x2f, 0x05, 0x2f, 0x05, 0xb1, 0x04, 0xb2, 0x04, + 0x2f, 0x04, 0x31, 0x04, 0xa8, 0x03, 0xa6, 0x03, 0x1b, 0x03, 0x1c, 0x03, + 0x8b, 0x02, 0x8a, 0x02, 0xf7, 0x01, 0xf8, 0x01, 0x60, 0x01, 0x60, 0x01, + 0xca, 0x00, 0xc9, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x95, 0xff, 0x93, 0xff, + 0xfd, 0xfe, 0xfe, 0xfe, 0x64, 0xfe, 0x63, 0xfe, 0xce, 0xfd, 0xcd, 0xfd, + 0x39, 0xfd, 0x3c, 0xfd, 0xae, 0xfc, 0xab, 0xfc, 0x20, 0xfc, 0x21, 0xfc, + 0x98, 0xfb, 0x97, 0xfb, 0x14, 0xfb, 0x15, 0xfb, 0x96, 0xfa, 0x96, 0xfa, + 0x1b, 0xfa, 0x1c, 0xfa, 0xad, 0xf9, 0xad, 0xf9, 0x3f, 0xf9, 0x3e, 0xf9, + 0xdf, 0xf8, 0xe1, 0xf8, 0x82, 0xf8, 0x81, 0xf8, 0x30, 0xf8, 0x2f, 0xf8, + 0xe7, 0xf7, 0xe8, 0xf7, 0xa4, 0xf7, 0xa2, 0xf7, 0x71, 0xf7, 0x71, 0xf7, + 0x3e, 0xf7, 0x40, 0xf7, 0x1f, 0xf7, 0x1d, 0xf7, 0x03, 0xf7, 0x06, 0xf7, + 0xf7, 0xf6, 0xf6, 0xf6, 0xf4, 0xf6, 0xf4, 0xf6, 0xf9, 0xf6, 0xfc, 0xf6, + 0x0f, 0xf7, 0x0e, 0xf7, 0x2a, 0xf7, 0x2b, 0xf7, 0x54, 0xf7, 0x54, 0xf7, + 0x86, 0xf7, 0x86, 0xf7, 0xc2, 0xf7, 0xc3, 0xf7, 0x08, 0xf8, 0x09, 0xf8, + 0x5c, 0xf8, 0x5a, 0xf8, 0xb1, 0xf8, 0xb2, 0xf8, 0x15, 0xf9, 0x15, 0xf9, + 0x7d, 0xf9, 0x7c, 0xf9, 0xee, 0xf9, 0xf1, 0xf9, 0x68, 0xfa, 0x66, 0xfa, + 0xe5, 0xfa, 0xe5, 0xfa, 0x6a, 0xfb, 0x68, 0xfb, 0xf1, 0xfb, 0xf2, 0xfb, + 0x80, 0xfc, 0x80, 0xfc, 0x12, 0xfd, 0x12, 0xfd, 0xa6, 0xfd, 0xa7, 0xfd, + 0x3f, 0xfe, 0x3f, 0xfe, 0xd6, 0xfe, 0xd7, 0xfe, 0x6f, 0xff, 0x6e, 0xff, + 0x0a, 0x00, 0x0a, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0x39, 0x01, 0x39, 0x01, + 0xd0, 0x01, 0xd0, 0x01, 0x61, 0x02, 0x61, 0x02, 0xf1, 0x02, 0xf1, 0x02, + 0x7a, 0x03, 0x7a, 0x03, 0x05, 0x04, 0x05, 0x04, 0x85, 0x04, 0x85, 0x04, + 0x02, 0x05, 0x02, 0x05, 0x7b, 0x05, 0x79, 0x05, 0xe9, 0x05, 0xe9, 0x05, + 0x53, 0x06, 0x53, 0x06, 0xb4, 0x06, 0xb4, 0x06, 0x0d, 0x07, 0x0d, 0x07, + 0x61, 0x07, 0x5f, 0x07, 0xa5, 0x07, 0xa6, 0x07, 0xe7, 0x07, 0xe6, 0x07, + 0x1b, 0x08, 0x19, 0x08, 0x48, 0x08, 0x46, 0x08, 0x67, 0x08, 0x65, 0x08, + 0x7d, 0x08, 0x80, 0x08, 0x8b, 0x08, 0x89, 0x08, 0x8b, 0x08, 0x8b, 0x08, + 0x83, 0x08, 0x81, 0x08, 0x6c, 0x08, 0x6d, 0x08, 0x53, 0x08, 0x51, 0x08, + 0x25, 0x08, 0x25, 0x08, 0xf5, 0x07, 0xf3, 0x07, 0xb3, 0x07, 0xb3, 0x07, + 0x6d, 0x07, 0x6c, 0x07, 0x1b, 0x07, 0x19, 0x07, 0xc0, 0x06, 0xbf, 0x06, + 0x5d, 0x06, 0x5c, 0x06, 0xf0, 0x05, 0xf0, 0x05, 0x7e, 0x05, 0x7e, 0x05, + 0x03, 0x05, 0x02, 0x05, 0x83, 0x04, 0x81, 0x04, 0xfc, 0x03, 0xfd, 0x03, + 0x70, 0x03, 0x6f, 0x03, 0xe2, 0x02, 0xe2, 0x02, 0x4d, 0x02, 0x4c, 0x02, + 0xb8, 0x01, 0xb8, 0x01, 0x1e, 0x01, 0x1d, 0x01, 0x83, 0x00, 0x83, 0x00, + 0xea, 0xff, 0xea, 0xff, 0x4e, 0xff, 0x4e, 0xff, 0xb4, 0xfe, 0xb3, 0xfe, + 0x1a, 0xfe, 0x1b, 0xfe, 0x84, 0xfd, 0x83, 0xfd, 0xf3, 0xfc, 0xf3, 0xfc, + 0x62, 0xfc, 0x62, 0xfc, 0xd9, 0xfb, 0xd8, 0xfb, 0x50, 0xfb, 0x4e, 0xfb, + 0xcc, 0xfa, 0xcc, 0xfa, 0x52, 0xfa, 0x50, 0xfa, 0xd8, 0xf9, 0xd8, 0xf9, + 0x6a, 0xf9, 0x69, 0xf9, 0x00, 0xf9, 0x00, 0xf9, 0xa2, 0xf8, 0xa2, 0xf8, + 0x4a, 0xf8, 0x49, 0xf8, 0xfc, 0xf7, 0xfb, 0xf7, 0xb5, 0xf7, 0xb6, 0xf7, + 0x7a, 0xf7, 0x79, 0xf7, 0x49, 0xf7, 0x4a, 0xf7, 0x1f, 0xf7, 0x1e, 0xf7, + 0x00, 0xf7, 0x03, 0xf7, 0xed, 0xf6, 0xed, 0xf6, 0xe5, 0xf6, 0xe6, 0xf6, + 0xea, 0xf6, 0xe8, 0xf6, 0xf4, 0xf6, 0xf5, 0xf6, 0x0f, 0xf7, 0x10, 0xf7, + 0x32, 0xf7, 0x33, 0xf7, 0x62, 0xf7, 0x61, 0xf7, 0x9b, 0xf7, 0x9a, 0xf7, + 0xdf, 0xf7, 0xde, 0xf7, 0x2a, 0xf8, 0x2a, 0xf8, 0x82, 0xf8, 0x83, 0xf8, + 0xe0, 0xf8, 0xdf, 0xf8, 0x4b, 0xf9, 0x4a, 0xf9, 0xba, 0xf9, 0xb9, 0xf9, + 0x31, 0xfa, 0x30, 0xfa, 0xb0, 0xfa, 0xb1, 0xfa, 0x35, 0xfb, 0x33, 0xfb, + 0xbd, 0xfb, 0xbf, 0xfb, 0x4e, 0xfc, 0x4c, 0xfc, 0xe0, 0xfc, 0xe1, 0xfc, + 0x78, 0xfd, 0x77, 0xfd, 0x10, 0xfe, 0x10, 0xfe, 0xaf, 0xfe, 0xae, 0xfe, + 0x4b, 0xff, 0x4b, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0x87, 0x00, 0x86, 0x00, + 0x23, 0x01, 0x24, 0x01, 0xbf, 0x01, 0xbd, 0x01, 0x59, 0x02, 0x5a, 0x02, + 0xee, 0x02, 0xee, 0x02, 0x80, 0x03, 0x7f, 0x03, 0x0d, 0x04, 0x0e, 0x04, + 0x9a, 0x04, 0x9a, 0x04, 0x1c, 0x05, 0x1c, 0x05, 0x9d, 0x05, 0x9e, 0x05, + 0x13, 0x06, 0x11, 0x06, 0x85, 0x06, 0x87, 0x06, 0xee, 0x06, 0xef, 0x06, + 0x4f, 0x07, 0x50, 0x07, 0xac, 0x07, 0xac, 0x07, 0xfa, 0x07, 0xfb, 0x07, + 0x43, 0x08, 0x44, 0x08, 0x82, 0x08, 0x81, 0x08, 0xb3, 0x08, 0xb4, 0x08, + 0xdd, 0x08, 0xde, 0x08, 0xfb, 0x08, 0xfd, 0x08, 0x0f, 0x09, 0x0e, 0x09, + 0x18, 0x09, 0x1a, 0x09, 0x19, 0x09, 0x18, 0x09, 0x08, 0x09, 0x0a, 0x09, + 0xf4, 0x08, 0xf4, 0x08, 0xd1, 0x08, 0xcf, 0x08, 0xa2, 0x08, 0xa3, 0x08, + 0x69, 0x08, 0x6a, 0x08, 0x27, 0x08, 0x24, 0x08, 0xd9, 0x07, 0xdc, 0x07, + 0x84, 0x07, 0x81, 0x07, 0x22, 0x07, 0x24, 0x07, 0xbb, 0x06, 0xbb, 0x06, + 0x4d, 0x06, 0x4b, 0x06, 0xd5, 0x05, 0xd6, 0x05, 0x57, 0x05, 0x55, 0x05, + 0xd2, 0x04, 0xd4, 0x04, 0x48, 0x04, 0x48, 0x04, 0xbb, 0x03, 0xbc, 0x03, + 0x28, 0x03, 0x28, 0x03, 0x92, 0x02, 0x93, 0x02, 0xfa, 0x01, 0xf9, 0x01, + 0x5f, 0x01, 0x60, 0x01, 0xc3, 0x00, 0xc3, 0x00, 0x28, 0x00, 0x26, 0x00, + 0x8a, 0xff, 0x8d, 0xff, 0xf0, 0xfe, 0xee, 0xfe, 0x57, 0xfe, 0x56, 0xfe, + 0xbe, 0xfd, 0xbf, 0xfd, 0x2b, 0xfd, 0x2a, 0xfd, 0x9d, 0xfc, 0x9d, 0xfc, + 0x12, 0xfc, 0x12, 0xfc, 0x88, 0xfb, 0x88, 0xfb, 0x0a, 0xfb, 0x09, 0xfb, + 0x89, 0xfa, 0x8a, 0xfa, 0x18, 0xfa, 0x17, 0xfa, 0xa6, 0xf9, 0xa7, 0xf9, + 0x42, 0xf9, 0x43, 0xf9, 0xe4, 0xf8, 0xe3, 0xf8, 0x8b, 0xf8, 0x8d, 0xf8, + 0x40, 0xf8, 0x3f, 0xf8, 0xfb, 0xf7, 0xfb, 0xf7, 0xc1, 0xf7, 0xc1, 0xf7, + 0x91, 0xf7, 0x90, 0xf7, 0x68, 0xf7, 0x69, 0xf7, 0x4f, 0xf7, 0x50, 0xf7, + 0x3c, 0xf7, 0x3c, 0xf7, 0x39, 0xf7, 0x38, 0xf7, 0x3c, 0xf7, 0x3d, 0xf7, + 0x4c, 0xf7, 0x4a, 0xf7, 0x65, 0xf7, 0x67, 0xf7, 0x8a, 0xf7, 0x89, 0xf7, + 0xbc, 0xf7, 0xbc, 0xf7, 0xf5, 0xf7, 0xf6, 0xf7, 0x3d, 0xf8, 0x3c, 0xf8, + 0x8a, 0xf8, 0x8b, 0xf8, 0xe5, 0xf8, 0xe6, 0xf8, 0x45, 0xf9, 0x45, 0xf9, + 0xb1, 0xf9, 0xb0, 0xf9, 0x24, 0xfa, 0x25, 0xfa, 0x9d, 0xfa, 0x9c, 0xfa, + 0x1d, 0xfb, 0x1f, 0xfb, 0xa5, 0xfb, 0xa3, 0xfb, 0x2f, 0xfc, 0x30, 0xfc, + 0xc3, 0xfc, 0xc3, 0xfc, 0x54, 0xfd, 0x57, 0xfd, 0xf0, 0xfd, 0xf0, 0xfd, + 0x8a, 0xfe, 0x8b, 0xfe, 0x27, 0xff, 0x27, 0xff, 0xc8, 0xff, 0xc7, 0xff, + 0x64, 0x00, 0x66, 0x00, 0x04, 0x01, 0x04, 0x01, 0xa3, 0x01, 0xa3, 0x01, + 0x3f, 0x02, 0x3e, 0x02, 0xd8, 0x02, 0xd9, 0x02, 0x6e, 0x03, 0x6d, 0x03, + 0xfe, 0x03, 0x00, 0x04, 0x8f, 0x04, 0x8e, 0x04, 0x15, 0x05, 0x17, 0x05, + 0x9b, 0x05, 0x9a, 0x05, 0x16, 0x06, 0x16, 0x06, 0x8f, 0x06, 0x8f, 0x06, + 0xff, 0x06, 0xfe, 0x06, 0x67, 0x07, 0x66, 0x07, 0xc5, 0x07, 0xc5, 0x07, + 0x1c, 0x08, 0x1c, 0x08, 0x6d, 0x08, 0x6d, 0x08, 0xad, 0x08, 0xad, 0x08, + 0xea, 0x08, 0xea, 0x08, 0x19, 0x09, 0x1a, 0x09, 0x3e, 0x09, 0x3d, 0x09, + 0x5a, 0x09, 0x5a, 0x09, 0x68, 0x09, 0x69, 0x09, 0x6e, 0x09, 0x6e, 0x09, + 0x67, 0x09, 0x68, 0x09, 0x55, 0x09, 0x55, 0x09, 0x3a, 0x09, 0x3a, 0x09, + 0x10, 0x09, 0x10, 0x09, 0xdd, 0x08, 0xde, 0x08, 0x9f, 0x08, 0x9f, 0x08, + 0x56, 0x08, 0x57, 0x08, 0x06, 0x08, 0x04, 0x08, 0xa8, 0x07, 0xa9, 0x07, + 0x48, 0x07, 0x46, 0x07, 0xd8, 0x06, 0xd8, 0x06, 0x66, 0x06, 0x65, 0x06, + 0xe9, 0x05, 0xe9, 0x05, 0x66, 0x05, 0x65, 0x05, 0xe0, 0x04, 0xdf, 0x04, + 0x4d, 0x04, 0x4f, 0x04, 0xc0, 0x03, 0xbf, 0x03, 0x26, 0x03, 0x28, 0x03, + 0x8f, 0x02, 0x8d, 0x02, 0xf1, 0x01, 0xf3, 0x01, 0x52, 0x01, 0x53, 0x01, + 0xb5, 0x00, 0xb5, 0x00, 0x13, 0x00, 0x14, 0x00, 0x76, 0xff, 0x76, 0xff, + 0xd6, 0xfe, 0xd8, 0xfe, 0x3b, 0xfe, 0x3a, 0xfe, 0x9f, 0xfd, 0xa1, 0xfd, + 0x0c, 0xfd, 0x0b, 0xfd, 0x78, 0xfc, 0x7b, 0xfc, 0xea, 0xfb, 0xea, 0xfb, + 0x62, 0xfb, 0x61, 0xfb, 0xdc, 0xfa, 0xdc, 0xfa, 0x5f, 0xfa, 0x60, 0xfa, + 0xe8, 0xf9, 0xea, 0xf9, 0x79, 0xf9, 0x77, 0xf9, 0x0f, 0xf9, 0x11, 0xf9, + 0xb0, 0xf8, 0xb0, 0xf8, 0x58, 0xf8, 0x58, 0xf8, 0x0a, 0xf8, 0x0b, 0xf8, + 0xc4, 0xf7, 0xc3, 0xf7, 0x8a, 0xf7, 0x8c, 0xf7, 0x58, 0xf7, 0x59, 0xf7, + 0x32, 0xf7, 0x32, 0xf7, 0x15, 0xf7, 0x17, 0xf7, 0x06, 0xf7, 0x05, 0xf7, + 0xfe, 0xf6, 0x00, 0xf7, 0x04, 0xf7, 0x03, 0xf7, 0x15, 0xf7, 0x15, 0xf7, + 0x2f, 0xf7, 0x30, 0xf7, 0x58, 0xf7, 0x57, 0xf7, 0x86, 0xf7, 0x88, 0xf7, + 0xc4, 0xf7, 0xc4, 0xf7, 0x0b, 0xf8, 0x0c, 0xf8, 0x5b, 0xf8, 0x5d, 0xf8, + 0xb6, 0xf8, 0xb7, 0xf8, 0x1a, 0xf9, 0x1a, 0xf9, 0x85, 0xf9, 0x86, 0xf9, + 0xfc, 0xf9, 0xfb, 0xf9, 0x73, 0xfa, 0x74, 0xfa, 0xf6, 0xfa, 0xf9, 0xfa, + 0x7f, 0xfb, 0x7e, 0xfb, 0x0b, 0xfc, 0x0e, 0xfc, 0xa1, 0xfc, 0x9f, 0xfc, + 0x32, 0xfd, 0x34, 0xfd, 0xcf, 0xfd, 0xce, 0xfd, 0x68, 0xfe, 0x6b, 0xfe, + 0x08, 0xff, 0x08, 0xff, 0xa5, 0xff, 0xa7, 0xff, 0x46, 0x00, 0x45, 0x00, + 0xe3, 0x00, 0xe5, 0x00, 0x81, 0x01, 0x81, 0x01, 0x1d, 0x02, 0x1d, 0x02, + 0xb5, 0x02, 0xb6, 0x02, 0x4b, 0x03, 0x4d, 0x03, 0xda, 0x03, 0xda, 0x03, + 0x69, 0x04, 0x69, 0x04, 0xf0, 0x04, 0xf1, 0x04, 0x73, 0x05, 0x71, 0x05, + 0xee, 0x05, 0xef, 0x05, 0x63, 0x06, 0x63, 0x06, 0xd1, 0x06, 0xd1, 0x06, + 0x36, 0x07, 0x37, 0x07, 0x96, 0x07, 0x94, 0x07, 0xe9, 0x07, 0xeb, 0x07, + 0x37, 0x08, 0x36, 0x08, 0x78, 0x08, 0x79, 0x08, 0xb0, 0x08, 0xb0, 0x08, + 0xdf, 0x08, 0xe0, 0x08, 0xfe, 0x08, 0x00, 0x09, 0x1b, 0x09, 0x1c, 0x09, + 0x25, 0x09, 0x27, 0x09, 0x2b, 0x09, 0x2a, 0x09, 0x21, 0x09, 0x22, 0x09, + 0x0d, 0x09, 0x0f, 0x09, 0xf1, 0x08, 0xf0, 0x08, 0xc3, 0x08, 0xc6, 0x08, + 0x91, 0x08, 0x8f, 0x08, 0x4d, 0x08, 0x50, 0x08, 0x04, 0x08, 0x05, 0x08, + 0xb1, 0x07, 0xb2, 0x07, 0x4f, 0x07, 0x51, 0x07, 0xec, 0x06, 0xed, 0x06, + 0x7b, 0x06, 0x7a, 0x06, 0x04, 0x06, 0x05, 0x06, 0x85, 0x05, 0x87, 0x05, + 0x00, 0x05, 0xff, 0x04, 0x73, 0x04, 0x78, 0x04, 0xe3, 0x03, 0xe2, 0x03, + 0x4b, 0x03, 0x4f, 0x03, 0xb4, 0x02, 0xb4, 0x02, 0x15, 0x02, 0x15, 0x02, + 0x75, 0x01, 0x79, 0x01, 0xd5, 0x00, 0xd4, 0x00, 0x31, 0x00, 0x33, 0x00, + 0x8f, 0xff, 0x90, 0xff, 0xec, 0xfe, 0xeb, 0xfe, 0x4d, 0xfe, 0x4e, 0xfe, + 0xab, 0xfd, 0xab, 0xfd, 0x10, 0xfd, 0x11, 0xfd, 0x79, 0xfc, 0x7a, 0xfc, + 0xe4, 0xfb, 0xe6, 0xfb, 0x54, 0xfb, 0x55, 0xfb, 0xc9, 0xfa, 0xcb, 0xfa, + 0x43, 0xfa, 0x43, 0xfa, 0xc5, 0xf9, 0xc5, 0xf9, 0x4a, 0xf9, 0x4c, 0xf9, + 0xdb, 0xf8, 0xdb, 0xf8, 0x73, 0xf8, 0x72, 0xf8, 0x10, 0xf8, 0x12, 0xf8, + 0xbb, 0xf7, 0xba, 0xf7, 0x69, 0xf7, 0x6b, 0xf7, 0x2b, 0xf7, 0x2a, 0xf7, + 0xec, 0xf6, 0xed, 0xf6, 0xbf, 0xf6, 0xbe, 0xf6, 0x97, 0xf6, 0x9a, 0xf6, + 0x7d, 0xf6, 0x7c, 0xf6, 0x70, 0xf6, 0x71, 0xf6, 0x6b, 0xf6, 0x6a, 0xf6, + 0x73, 0xf6, 0x73, 0xf6, 0x87, 0xf6, 0x88, 0xf6, 0xa7, 0xf6, 0xa5, 0xf6, + 0xd2, 0xf6, 0xd3, 0xf6, 0x06, 0xf7, 0x07, 0xf7, 0x49, 0xf7, 0x48, 0xf7, + 0x91, 0xf7, 0x92, 0xf7, 0xe7, 0xf7, 0xe7, 0xf7, 0x44, 0xf8, 0x44, 0xf8, + 0xad, 0xf8, 0xae, 0xf8, 0x1e, 0xf9, 0x1e, 0xf9, 0x94, 0xf9, 0x95, 0xf9, + 0x14, 0xfa, 0x16, 0xfa, 0x9a, 0xfa, 0x9c, 0xfa, 0x27, 0xfb, 0x26, 0xfb, + 0xb7, 0xfb, 0xb9, 0xfb, 0x4d, 0xfc, 0x4b, 0xfc, 0xe7, 0xfc, 0xe8, 0xfc, + 0x83, 0xfd, 0x84, 0xfd, 0x24, 0xfe, 0x24, 0xfe, 0xc2, 0xfe, 0xc3, 0xfe, + 0x66, 0xff, 0x67, 0xff, 0x08, 0x00, 0x08, 0x00, 0xab, 0x00, 0xab, 0x00, + 0x47, 0x01, 0x48, 0x01, 0xe9, 0x01, 0xe8, 0x01, 0x80, 0x02, 0x83, 0x02, + 0x1b, 0x03, 0x1a, 0x03, 0xa9, 0x03, 0xa9, 0x03, 0x3d, 0x04, 0x3c, 0x04, + 0xc5, 0x04, 0xc6, 0x04, 0x4a, 0x05, 0x48, 0x05, 0xc7, 0x05, 0xc9, 0x05, + 0x3e, 0x06, 0x3e, 0x06, 0xaf, 0x06, 0xaf, 0x06, 0x17, 0x07, 0x18, 0x07, + 0x74, 0x07, 0x75, 0x07, 0xcd, 0x07, 0xcc, 0x07, 0x18, 0x08, 0x19, 0x08, + 0x5e, 0x08, 0x5f, 0x08, 0x97, 0x08, 0x96, 0x08, 0xc4, 0x08, 0xc6, 0x08, + 0xea, 0x08, 0xeb, 0x08, 0x01, 0x09, 0x01, 0x09, 0x12, 0x09, 0x12, 0x09, + 0x12, 0x09, 0x13, 0x09, 0x0e, 0x09, 0x0e, 0x09, 0xf7, 0x08, 0xfa, 0x08, + 0xdc, 0x08, 0xdc, 0x08, 0xb1, 0x08, 0xb1, 0x08, 0x79, 0x08, 0x7b, 0x08, + 0x3b, 0x08, 0x3b, 0x08, 0xf0, 0x07, 0xf0, 0x07, 0x98, 0x07, 0x9d, 0x07, + 0x3c, 0x07, 0x39, 0x07, 0xd0, 0x06, 0xd4, 0x06, 0x62, 0x06, 0x62, 0x06, + 0xe8, 0x05, 0xe7, 0x05, 0x67, 0x05, 0x6b, 0x05, 0xe1, 0x04, 0xe0, 0x04, + 0x52, 0x04, 0x53, 0x04, 0xc0, 0x03, 0xc0, 0x03, 0x28, 0x03, 0x28, 0x03, + 0x8d, 0x02, 0x8e, 0x02, 0xee, 0x01, 0xed, 0x01, 0x4d, 0x01, 0x4e, 0x01, + 0xaa, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x08, 0x00, 0x62, 0xff, 0x61, 0xff, + 0xbe, 0xfe, 0xbe, 0xfe, 0x1e, 0xfe, 0x1e, 0xfe, 0x7a, 0xfd, 0x7b, 0xfd, + 0xe2, 0xfc, 0xe1, 0xfc, 0x48, 0xfc, 0x48, 0xfc, 0xb6, 0xfb, 0xb6, 0xfb, + 0x24, 0xfb, 0x24, 0xfb, 0x98, 0xfa, 0x99, 0xfa, 0x12, 0xfa, 0x13, 0xfa, + 0x95, 0xf9, 0x95, 0xf9, 0x1d, 0xf9, 0x1e, 0xf9, 0xaf, 0xf8, 0xad, 0xf8, + 0x44, 0xf8, 0x47, 0xf8, 0xe7, 0xf7, 0xe6, 0xf7, 0x91, 0xf7, 0x93, 0xf7, + 0x44, 0xf7, 0x44, 0xf7, 0x02, 0xf7, 0x03, 0xf7, 0xca, 0xf6, 0xca, 0xf6, + 0x9e, 0xf6, 0x9d, 0xf6, 0x78, 0xf6, 0x7a, 0xf6, 0x65, 0xf6, 0x63, 0xf6, + 0x56, 0xf6, 0x56, 0xf6, 0x56, 0xf6, 0x58, 0xf6, 0x62, 0xf6, 0x62, 0xf6, + 0x79, 0xf6, 0x7b, 0xf6, 0x9d, 0xf6, 0x9e, 0xf6, 0xca, 0xf6, 0xcb, 0xf6, + 0x05, 0xf7, 0x06, 0xf7, 0x48, 0xf7, 0x49, 0xf7, 0x98, 0xf7, 0x99, 0xf7, + 0xf1, 0xf7, 0xf2, 0xf7, 0x54, 0xf8, 0x55, 0xf8, 0xc1, 0xf8, 0xc1, 0xf8, + 0x37, 0xf9, 0x38, 0xf9, 0xb3, 0xf9, 0xb4, 0xf9, 0x38, 0xfa, 0x3a, 0xfa, + 0xc3, 0xfa, 0xc3, 0xfa, 0x55, 0xfb, 0x55, 0xfb, 0xe9, 0xfb, 0xea, 0xfb, + 0x86, 0xfc, 0x86, 0xfc, 0x23, 0xfd, 0x24, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, + 0x6c, 0xfe, 0x6d, 0xfe, 0x0f, 0xff, 0x0e, 0xff, 0xb9, 0xff, 0xba, 0xff, + 0x5e, 0x00, 0x5e, 0x00, 0x02, 0x01, 0x06, 0x01, 0xac, 0x01, 0xaa, 0x01, + 0x4a, 0x02, 0x4d, 0x02, 0xed, 0x02, 0xec, 0x02, 0x84, 0x03, 0x86, 0x03, + 0x1d, 0x04, 0x1c, 0x04, 0xb1, 0x04, 0xb4, 0x04, 0x3e, 0x05, 0x3d, 0x05, + 0xc5, 0x05, 0xc9, 0x05, 0x48, 0x06, 0x47, 0x06, 0xc0, 0x06, 0xc0, 0x06, + 0x36, 0x07, 0x36, 0x07, 0x9c, 0x07, 0x9e, 0x07, 0x01, 0x08, 0x02, 0x08, + 0x58, 0x08, 0x58, 0x08, 0xa5, 0x08, 0xa5, 0x08, 0xec, 0x08, 0xed, 0x08, + 0x24, 0x09, 0x24, 0x09, 0x57, 0x09, 0x58, 0x09, 0x78, 0x09, 0x77, 0x09, + 0x93, 0x09, 0x94, 0x09, 0xa0, 0x09, 0x9f, 0x09, 0xa1, 0x09, 0xa1, 0x09, + 0x9a, 0x09, 0x9b, 0x09, 0x82, 0x09, 0x83, 0x09, 0x64, 0x09, 0x62, 0x09, + 0x32, 0x09, 0x35, 0x09, 0xfb, 0x08, 0xfa, 0x08, 0xb7, 0x08, 0xb8, 0x08, + 0x67, 0x08, 0x67, 0x08, 0x0f, 0x08, 0x10, 0x08, 0xab, 0x07, 0xab, 0x07, + 0x40, 0x07, 0x40, 0x07, 0xcb, 0x06, 0xca, 0x06, 0x4d, 0x06, 0x4e, 0x06, + 0xcb, 0x05, 0xcc, 0x05, 0x3f, 0x05, 0x3e, 0x05, 0xae, 0x04, 0xb0, 0x04, + 0x19, 0x04, 0x18, 0x04, 0x7c, 0x03, 0x7e, 0x03, 0xe0, 0x02, 0xde, 0x02, + 0x3d, 0x02, 0x3d, 0x02, 0x9b, 0x01, 0x9a, 0x01, 0xf4, 0x00, 0xf3, 0x00, + 0x4e, 0x00, 0x4d, 0x00, 0xa9, 0xff, 0xa8, 0xff, 0x03, 0xff, 0x02, 0xff, + 0x5f, 0xfe, 0x5e, 0xfe, 0xbc, 0xfd, 0xbe, 0xfd, 0x22, 0xfd, 0x1e, 0xfd, + 0x88, 0xfc, 0x8a, 0xfc, 0xf3, 0xfb, 0xf0, 0xfb, 0x61, 0xfb, 0x62, 0xfb, + 0xd6, 0xfa, 0xd5, 0xfa, 0x4f, 0xfa, 0x4f, 0xfa, 0xd2, 0xf9, 0xd0, 0xf9, + 0x58, 0xf9, 0x57, 0xf9, 0xe8, 0xf8, 0xe8, 0xf8, 0x82, 0xf8, 0x81, 0xf8, + 0x24, 0xf8, 0x22, 0xf8, 0xcc, 0xf7, 0xcd, 0xf7, 0x82, 0xf7, 0x82, 0xf7, + 0x3f, 0xf7, 0x3f, 0xf7, 0x07, 0xf7, 0x07, 0xf7, 0xda, 0xf6, 0xda, 0xf6, + 0xb9, 0xf6, 0xb9, 0xf6, 0xa3, 0xf6, 0xa3, 0xf6, 0x98, 0xf6, 0x99, 0xf6, + 0x9a, 0xf6, 0x99, 0xf6, 0xa5, 0xf6, 0xa5, 0xf6, 0xbe, 0xf6, 0xc0, 0xf6, + 0xe3, 0xf6, 0xe3, 0xf6, 0x10, 0xf7, 0x12, 0xf7, 0x4d, 0xf7, 0x4d, 0xf7, + 0x94, 0xf7, 0x94, 0xf7, 0xe5, 0xf7, 0xe6, 0xf7, 0x40, 0xf8, 0x43, 0xf8, + 0xa8, 0xf8, 0xa6, 0xf8, 0x15, 0xf9, 0x17, 0xf9, 0x8f, 0xf9, 0x8f, 0xf9, + 0x0f, 0xfa, 0x10, 0xfa, 0x96, 0xfa, 0x96, 0xfa, 0x25, 0xfb, 0x27, 0xfb, + 0xb8, 0xfb, 0xba, 0xfb, 0x55, 0xfc, 0x54, 0xfc, 0xf1, 0xfc, 0xf2, 0xfc, + 0x95, 0xfd, 0x95, 0xfd, 0x38, 0xfe, 0x38, 0xfe, 0xe0, 0xfe, 0xe1, 0xfe, + 0x8a, 0xff, 0x89, 0xff, 0x33, 0x00, 0x34, 0x00, 0xde, 0x00, 0xde, 0x00, + 0x81, 0x01, 0x84, 0x01, 0x2e, 0x02, 0x2e, 0x02, 0xd1, 0x02, 0xd2, 0x02, + 0x72, 0x03, 0x71, 0x03, 0x0d, 0x04, 0x0e, 0x04, 0xa7, 0x04, 0xa6, 0x04, + 0x3d, 0x05, 0x3e, 0x05, 0xc9, 0x05, 0xc9, 0x05, 0x50, 0x06, 0x52, 0x06, + 0xd5, 0x06, 0xd2, 0x06, 0x4a, 0x07, 0x4c, 0x07, 0xc0, 0x07, 0xc0, 0x07, + 0x26, 0x08, 0x26, 0x08, 0x8b, 0x08, 0x8b, 0x08, 0xdd, 0x08, 0xdd, 0x08, + 0x2b, 0x09, 0x2c, 0x09, 0x6d, 0x09, 0x6e, 0x09, 0xa2, 0x09, 0xa1, 0x09, + 0xd1, 0x09, 0xd2, 0x09, 0xef, 0x09, 0xef, 0x09, 0x06, 0x0a, 0x07, 0x0a, + 0x11, 0x0a, 0x12, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a, 0xff, 0x09, 0x01, 0x0a, + 0xe2, 0x09, 0xe1, 0x09, 0xbb, 0x09, 0xbf, 0x09, 0x88, 0x09, 0x87, 0x09, + 0x47, 0x09, 0x4b, 0x09, 0x01, 0x09, 0xff, 0x08, 0xa8, 0x08, 0xaa, 0x08, + 0x4e, 0x08, 0x4c, 0x08, 0xe1, 0x07, 0xe3, 0x07, 0x6f, 0x07, 0x71, 0x07, + 0xf6, 0x06, 0xf8, 0x06, 0x72, 0x06, 0x72, 0x06, 0xea, 0x05, 0xeb, 0x05, + 0x58, 0x05, 0x59, 0x05, 0xc2, 0x04, 0xc2, 0x04, 0x27, 0x04, 0x29, 0x04, + 0x84, 0x03, 0x84, 0x03, 0xe5, 0x02, 0xe6, 0x02, 0x3b, 0x02, 0x3b, 0x02, + 0x93, 0x01, 0x93, 0x01, 0xea, 0x00, 0xec, 0x00, 0x3d, 0x00, 0x3d, 0x00, + 0x95, 0xff, 0x95, 0xff, 0xea, 0xfe, 0xeb, 0xfe, 0x45, 0xfe, 0x44, 0xfe, + 0x9c, 0xfd, 0x9f, 0xfd, 0x00, 0xfd, 0x00, 0xfd, 0x61, 0xfc, 0x62, 0xfc, + 0xca, 0xfb, 0xca, 0xfb, 0x34, 0xfb, 0x36, 0xfb, 0xa6, 0xfa, 0xa5, 0xfa, + 0x1f, 0xfa, 0x20, 0xfa, 0x9c, 0xf9, 0x9c, 0xf9, 0x24, 0xf9, 0x25, 0xf9, + 0xb3, 0xf8, 0xb1, 0xf8, 0x47, 0xf8, 0x49, 0xf8, 0xeb, 0xf7, 0xe9, 0xf7, + 0x90, 0xf7, 0x92, 0xf7, 0x46, 0xf7, 0x45, 0xf7, 0x01, 0xf7, 0x03, 0xf7, + 0xcc, 0xf6, 0xcc, 0xf6, 0x9e, 0xf6, 0x9d, 0xf6, 0x7c, 0xf6, 0x7c, 0xf6, + 0x68, 0xf6, 0x68, 0xf6, 0x5d, 0xf6, 0x5e, 0xf6, 0x61, 0xf6, 0x61, 0xf6, + 0x6d, 0xf6, 0x6e, 0xf6, 0x8a, 0xf6, 0x8a, 0xf6, 0xad, 0xf6, 0xaf, 0xf6, + 0xe2, 0xf6, 0xe2, 0xf6, 0x1f, 0xf7, 0x20, 0xf7, 0x68, 0xf7, 0x69, 0xf7, + 0xbe, 0xf7, 0xbe, 0xf7, 0x1c, 0xf8, 0x1d, 0xf8, 0x85, 0xf8, 0x86, 0xf8, + 0xf9, 0xf8, 0xf8, 0xf8, 0x72, 0xf9, 0x76, 0xf9, 0xf8, 0xf9, 0xf5, 0xf9, + 0x7f, 0xfa, 0x83, 0xfa, 0x13, 0xfb, 0x12, 0xfb, 0xa8, 0xfb, 0xa9, 0xfb, + 0x46, 0xfc, 0x46, 0xfc, 0xe6, 0xfc, 0xe6, 0xfc, 0x8b, 0xfd, 0x8b, 0xfd, + 0x31, 0xfe, 0x30, 0xfe, 0xda, 0xfe, 0xdb, 0xfe, 0x84, 0xff, 0x84, 0xff, + 0x2f, 0x00, 0x2f, 0x00, 0xd9, 0x00, 0xdb, 0x00, 0x83, 0x01, 0x81, 0x01, + 0x29, 0x02, 0x2a, 0x02, 0xd0, 0x02, 0xd0, 0x02, 0x6d, 0x03, 0x6f, 0x03, + 0x09, 0x04, 0x09, 0x04, 0xa1, 0x04, 0xa2, 0x04, 0x35, 0x05, 0x34, 0x05, + 0xc1, 0x05, 0xc1, 0x05, 0x47, 0x06, 0x49, 0x06, 0xc6, 0x06, 0xc6, 0x06, + 0x40, 0x07, 0x3e, 0x07, 0xae, 0x07, 0xae, 0x07, 0x14, 0x08, 0x16, 0x08, + 0x74, 0x08, 0x72, 0x08, 0xc5, 0x08, 0xc6, 0x08, 0x11, 0x09, 0x0f, 0x09, + 0x4d, 0x09, 0x4d, 0x09, 0x80, 0x09, 0x82, 0x09, 0xaa, 0x09, 0xa9, 0x09, + 0xc6, 0x09, 0xc7, 0x09, 0xd7, 0x09, 0xd9, 0x09, 0xde, 0x09, 0xde, 0x09, + 0xd7, 0x09, 0xd7, 0x09, 0xc5, 0x09, 0xc6, 0x09, 0xa5, 0x09, 0xa6, 0x09, + 0x79, 0x09, 0x7b, 0x09, 0x42, 0x09, 0x44, 0x09, 0xff, 0x08, 0xfe, 0x08, + 0xaf, 0x08, 0xb2, 0x08, 0x58, 0x08, 0x57, 0x08, 0xf3, 0x07, 0xf3, 0x07, + 0x84, 0x07, 0x86, 0x07, 0x0f, 0x07, 0x0f, 0x07, 0x8f, 0x06, 0x90, 0x06, + 0x08, 0x06, 0x07, 0x06, 0x78, 0x05, 0x79, 0x05, 0xe3, 0x04, 0xe4, 0x04, + 0x46, 0x04, 0x48, 0x04, 0xa9, 0x03, 0xa7, 0x03, 0x01, 0x03, 0x03, 0x03, + 0x5c, 0x02, 0x5a, 0x02, 0xae, 0x01, 0xaf, 0x01, 0x03, 0x01, 0x02, 0x01, + 0x55, 0x00, 0x53, 0x00, 0xa5, 0xff, 0xa6, 0xff, 0xfa, 0xfe, 0xf9, 0xfe, + 0x4b, 0xfe, 0x4a, 0xfe, 0xa2, 0xfd, 0xa2, 0xfd, 0xfa, 0xfc, 0xf9, 0xfc, + 0x57, 0xfc, 0x58, 0xfc, 0xb9, 0xfb, 0xb9, 0xfb, 0x1c, 0xfb, 0x1b, 0xfb, + 0x87, 0xfa, 0x87, 0xfa, 0xf7, 0xf9, 0xf7, 0xf9, 0x6d, 0xf9, 0x6d, 0xf9, + 0xec, 0xf8, 0xed, 0xf8, 0x72, 0xf8, 0x71, 0xf8, 0x03, 0xf8, 0x00, 0xf8, + 0x97, 0xf7, 0x96, 0xf7, 0x3b, 0xf7, 0x3a, 0xf7, 0xe4, 0xf6, 0xe3, 0xf6, + 0x9a, 0xf6, 0x9a, 0xf6, 0x5b, 0xf6, 0x58, 0xf6, 0x22, 0xf6, 0x21, 0xf6, + 0xfc, 0xf5, 0xfd, 0xf5, 0xdc, 0xf5, 0xd9, 0xf5, 0xca, 0xf5, 0xcb, 0xf5, + 0xc8, 0xf5, 0xc6, 0xf5, 0xcc, 0xf5, 0xcc, 0xf5, 0xe3, 0xf5, 0xe4, 0xf5, + 0x02, 0xf6, 0x00, 0xf6, 0x2e, 0xf6, 0x2e, 0xf6, 0x69, 0xf6, 0x68, 0xf6, + 0xab, 0xf6, 0xab, 0xf6, 0xfd, 0xf6, 0xfc, 0xf6, 0x57, 0xf7, 0x56, 0xf7, + 0xbc, 0xf7, 0xbc, 0xf7, 0x2c, 0xf8, 0x2d, 0xf8, 0xa3, 0xf8, 0xa1, 0xf8, + 0x24, 0xf9, 0x27, 0xf9, 0xaf, 0xf9, 0xac, 0xf9, 0x3c, 0xfa, 0x3d, 0xfa, + 0xd4, 0xfa, 0xd4, 0xfa, 0x6e, 0xfb, 0x6c, 0xfb, 0x0f, 0xfc, 0x10, 0xfc, + 0xb4, 0xfc, 0xb4, 0xfc, 0x5c, 0xfd, 0x5c, 0xfd, 0x09, 0xfe, 0x08, 0xfe, + 0xb1, 0xfe, 0xb1, 0xfe, 0x61, 0xff, 0x60, 0xff, 0x0e, 0x00, 0x0e, 0x00, + 0xba, 0x00, 0xb8, 0x00, 0x66, 0x01, 0x67, 0x01, 0x0d, 0x02, 0x0a, 0x02, + 0xb3, 0x02, 0xb5, 0x02, 0x54, 0x03, 0x52, 0x03, 0xf1, 0x03, 0xf3, 0x03, + 0x8a, 0x04, 0x8a, 0x04, 0x1c, 0x05, 0x1d, 0x05, 0xac, 0x05, 0xab, 0x05, + 0x2f, 0x06, 0x32, 0x06, 0xb2, 0x06, 0xb0, 0x06, 0x27, 0x07, 0x2a, 0x07, + 0x98, 0x07, 0x96, 0x07, 0xfc, 0x07, 0xff, 0x07, 0x5b, 0x08, 0x5c, 0x08, + 0xaf, 0x08, 0xaf, 0x08, 0xf8, 0x08, 0xf8, 0x08, 0x34, 0x09, 0x35, 0x09, + 0x68, 0x09, 0x67, 0x09, 0x8e, 0x09, 0x90, 0x09, 0xaa, 0x09, 0xaa, 0x09, + 0xb9, 0x09, 0xbb, 0x09, 0xbc, 0x09, 0xbb, 0x09, 0xb6, 0x09, 0xb8, 0x09, + 0xa0, 0x09, 0xa1, 0x09, 0x81, 0x09, 0x81, 0x09, 0x53, 0x09, 0x53, 0x09, + 0x18, 0x09, 0x1a, 0x09, 0xd4, 0x08, 0xd3, 0x08, 0x83, 0x08, 0x84, 0x08, + 0x25, 0x08, 0x25, 0x08, 0xc0, 0x07, 0xc0, 0x07, 0x4f, 0x07, 0x4e, 0x07, + 0xd6, 0x06, 0xd6, 0x06, 0x52, 0x06, 0x52, 0x06, 0xc9, 0x05, 0xc7, 0x05, + 0x34, 0x05, 0x36, 0x05, 0x9f, 0x04, 0x9e, 0x04, 0xff, 0x03, 0xff, 0x03, + 0x5d, 0x03, 0x5f, 0x03, 0xb7, 0x02, 0xb5, 0x02, 0x0a, 0x02, 0x0c, 0x02, + 0x61, 0x01, 0x5d, 0x01, 0xaf, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x51, 0xff, 0x51, 0xff, 0xa3, 0xfe, 0xa2, 0xfe, 0xf5, 0xfd, 0xf4, 0xfd, + 0x4a, 0xfd, 0x49, 0xfd, 0xa4, 0xfc, 0xa4, 0xfc, 0x02, 0xfc, 0x02, 0xfc, + 0x62, 0xfb, 0x63, 0xfb, 0xc7, 0xfa, 0xc8, 0xfa, 0x36, 0xfa, 0x33, 0xfa, + 0xa5, 0xf9, 0xa6, 0xf9, 0x1e, 0xf9, 0x1d, 0xf9, 0x9e, 0xf8, 0x9f, 0xf8, + 0x26, 0xf8, 0x26, 0xf8, 0xb9, 0xf7, 0xba, 0xf7, 0x52, 0xf7, 0x52, 0xf7, + 0xf9, 0xf6, 0xf8, 0xf6, 0xa5, 0xf6, 0xa5, 0xf6, 0x5f, 0xf6, 0x5f, 0xf6, + 0x25, 0xf6, 0x23, 0xf6, 0xf1, 0xf5, 0xf3, 0xf5, 0xce, 0xf5, 0xcd, 0xf5, + 0xb3, 0xf5, 0xb5, 0xf5, 0xa8, 0xf5, 0xa8, 0xf5, 0xa7, 0xf5, 0xa7, 0xf5, + 0xb6, 0xf5, 0xb7, 0xf5, 0xce, 0xf5, 0xcc, 0xf5, 0xf4, 0xf5, 0xf6, 0xf5, + 0x28, 0xf6, 0x27, 0xf6, 0x66, 0xf6, 0x66, 0xf6, 0xaf, 0xf6, 0xb0, 0xf6, + 0x08, 0xf7, 0x07, 0xf7, 0x65, 0xf7, 0x65, 0xf7, 0xd2, 0xf7, 0xd2, 0xf7, + 0x47, 0xf8, 0x47, 0xf8, 0xc4, 0xf8, 0xc5, 0xf8, 0x4e, 0xf9, 0x4d, 0xf9, + 0xd7, 0xf9, 0xda, 0xf9, 0x73, 0xfa, 0x73, 0xfa, 0x0a, 0xfb, 0x0c, 0xfb, + 0xad, 0xfb, 0xad, 0xfb, 0x54, 0xfc, 0x55, 0xfc, 0xfe, 0xfc, 0xfe, 0xfc, + 0xae, 0xfd, 0xae, 0xfd, 0x58, 0xfe, 0x59, 0xfe, 0x0e, 0xff, 0x0f, 0xff, + 0xbe, 0xff, 0xbd, 0xff, 0x70, 0x00, 0x72, 0x00, 0x20, 0x01, 0x20, 0x01, + 0xd0, 0x01, 0xd0, 0x01, 0x7f, 0x02, 0x7f, 0x02, 0x24, 0x03, 0x25, 0x03, + 0xcb, 0x03, 0xcb, 0x03, 0x6a, 0x04, 0x6a, 0x04, 0x06, 0x05, 0x07, 0x05, + 0x9f, 0x05, 0x9e, 0x05, 0x2b, 0x06, 0x2c, 0x06, 0xb8, 0x06, 0xb7, 0x06, + 0x36, 0x07, 0x38, 0x07, 0xb0, 0x07, 0xb1, 0x07, 0x21, 0x08, 0x21, 0x08, + 0x88, 0x08, 0x8a, 0x08, 0xe7, 0x08, 0xe7, 0x08, 0x3c, 0x09, 0x3b, 0x09, + 0x82, 0x09, 0x83, 0x09, 0xc2, 0x09, 0xc4, 0x09, 0xf2, 0x09, 0xf2, 0x09, + 0x18, 0x0a, 0x1a, 0x0a, 0x33, 0x0a, 0x33, 0x0a, 0x40, 0x0a, 0x42, 0x0a, + 0x44, 0x0a, 0x43, 0x0a, 0x35, 0x0a, 0x37, 0x0a, 0x21, 0x0a, 0x21, 0x0a, + 0xfa, 0x09, 0xfb, 0x09, 0xc9, 0x09, 0xc9, 0x09, 0x8c, 0x09, 0x8b, 0x09, + 0x3f, 0x09, 0x40, 0x09, 0xec, 0x08, 0xeb, 0x08, 0x88, 0x08, 0x88, 0x08, + 0x1e, 0x08, 0x1f, 0x08, 0xaa, 0x07, 0xaa, 0x07, 0x2a, 0x07, 0x2b, 0x07, + 0xa4, 0x06, 0xa4, 0x06, 0x14, 0x06, 0x14, 0x06, 0x7d, 0x05, 0x7f, 0x05, + 0xe3, 0x04, 0xe4, 0x04, 0x40, 0x04, 0x41, 0x04, 0x9a, 0x03, 0x9c, 0x03, + 0xf1, 0x02, 0xf1, 0x02, 0x44, 0x02, 0x46, 0x02, 0x94, 0x01, 0x95, 0x01, + 0xe4, 0x00, 0xe4, 0x00, 0x31, 0x00, 0x32, 0x00, 0x80, 0xff, 0x81, 0xff, + 0xd1, 0xfe, 0xd4, 0xfe, 0x21, 0xfe, 0x22, 0xfe, 0x76, 0xfd, 0x77, 0xfd, + 0xd1, 0xfc, 0xd2, 0xfc, 0x2f, 0xfc, 0x2f, 0xfc, 0x8f, 0xfb, 0x8f, 0xfb, + 0xf5, 0xfa, 0xf6, 0xfa, 0x5e, 0xfa, 0x5e, 0xfa, 0xd3, 0xf9, 0xd5, 0xf9, + 0x4a, 0xf9, 0x4a, 0xf9, 0xcc, 0xf8, 0xcd, 0xf8, 0x55, 0xf8, 0x58, 0xf8, + 0xe7, 0xf7, 0xe6, 0xf7, 0x83, 0xf7, 0x86, 0xf7, 0x2a, 0xf7, 0x28, 0xf7, + 0xd7, 0xf6, 0xd9, 0xf6, 0x92, 0xf6, 0x92, 0xf6, 0x57, 0xf6, 0x57, 0xf6, + 0x27, 0xf6, 0x27, 0xf6, 0x02, 0xf6, 0x05, 0xf6, 0xee, 0xf5, 0xed, 0xf5, + 0xdf, 0xf5, 0xe3, 0xf5, 0xe4, 0xf5, 0xe3, 0xf5, 0xf0, 0xf5, 0xf4, 0xf5, + 0x0c, 0xf6, 0x0b, 0xf6, 0x35, 0xf6, 0x35, 0xf6, 0x66, 0xf6, 0x68, 0xf6, + 0xab, 0xf6, 0xab, 0xf6, 0xf3, 0xf6, 0xf4, 0xf6, 0x4f, 0xf7, 0x4e, 0xf7, + 0xb0, 0xf7, 0xb0, 0xf7, 0x21, 0xf8, 0x21, 0xf8, 0x99, 0xf8, 0x9a, 0xf8, + 0x1a, 0xf9, 0x1b, 0xf9, 0xa6, 0xf9, 0xa7, 0xf9, 0x36, 0xfa, 0x38, 0xfa, + 0xd3, 0xfa, 0xd2, 0xfa, 0x71, 0xfb, 0x72, 0xfb, 0x17, 0xfc, 0x16, 0xfc, + 0xc0, 0xfc, 0xc3, 0xfc, 0x6e, 0xfd, 0x6d, 0xfd, 0x1f, 0xfe, 0x21, 0xfe, + 0xd5, 0xfe, 0xd4, 0xfe, 0x85, 0xff, 0x87, 0xff, 0x3d, 0x00, 0x42, 0x00, + 0xf2, 0x00, 0xf1, 0x00, 0xa7, 0x01, 0xa9, 0x01, 0x59, 0x02, 0x59, 0x02, + 0x0a, 0x03, 0x0a, 0x03, 0xb3, 0x03, 0xb6, 0x03, 0x5b, 0x04, 0x59, 0x04, + 0xfb, 0x04, 0x00, 0x05, 0x9c, 0x05, 0x99, 0x05, 0x31, 0x06, 0x34, 0x06, + 0xc4, 0x06, 0xc2, 0x06, 0x4d, 0x07, 0x4e, 0x07, 0xce, 0x07, 0xcf, 0x07, + 0x48, 0x08, 0x48, 0x08, 0xb9, 0x08, 0xbb, 0x08, 0x1f, 0x09, 0x21, 0x09, + 0x7d, 0x09, 0x7f, 0x09, 0xd0, 0x09, 0xce, 0x09, 0x15, 0x0a, 0x18, 0x0a, + 0x51, 0x0a, 0x51, 0x0a, 0x80, 0x0a, 0x82, 0x0a, 0xa5, 0x0a, 0xa6, 0x0a, + 0xba, 0x0a, 0xbd, 0x0a, 0xc7, 0x0a, 0xc7, 0x0a, 0xc2, 0x0a, 0xc2, 0x0a, + 0xb3, 0x0a, 0xb5, 0x0a, 0x94, 0x0a, 0x96, 0x0a, 0x6d, 0x0a, 0x6e, 0x0a, + 0x33, 0x0a, 0x35, 0x0a, 0xef, 0x09, 0xf1, 0x09, 0xa0, 0x09, 0xa0, 0x09, + 0x43, 0x09, 0x47, 0x09, 0xdd, 0x08, 0xdd, 0x08, 0x6c, 0x08, 0x6f, 0x08, + 0xf0, 0x07, 0xf2, 0x07, 0x6d, 0x07, 0x6e, 0x07, 0xe1, 0x06, 0xe3, 0x06, + 0x4b, 0x06, 0x4b, 0x06, 0xaf, 0x05, 0xb1, 0x05, 0x0c, 0x05, 0x0d, 0x05, + 0x65, 0x04, 0x67, 0x04, 0xba, 0x03, 0xbb, 0x03, 0x0b, 0x03, 0x0b, 0x03, + 0x58, 0x02, 0x5a, 0x02, 0xa3, 0x01, 0xa3, 0x01, 0xf0, 0x00, 0xf1, 0x00, + 0x38, 0x00, 0x37, 0x00, 0x84, 0xff, 0x84, 0xff, 0xce, 0xfe, 0xce, 0xfe, + 0x1b, 0xfe, 0x1b, 0xfe, 0x6b, 0xfd, 0x6c, 0xfd, 0xc2, 0xfc, 0xc2, 0xfc, + 0x1c, 0xfc, 0x1c, 0xfc, 0x78, 0xfb, 0x79, 0xfb, 0xdb, 0xfa, 0xda, 0xfa, + 0x40, 0xfa, 0x42, 0xfa, 0xb0, 0xf9, 0xb0, 0xf9, 0x27, 0xf9, 0x28, 0xf9, + 0xa5, 0xf8, 0xa4, 0xf8, 0x2a, 0xf8, 0x2d, 0xf8, 0xb9, 0xf7, 0xb9, 0xf7, + 0x52, 0xf7, 0x53, 0xf7, 0xf2, 0xf6, 0xf4, 0xf6, 0xa1, 0xf6, 0xa0, 0xf6, + 0x59, 0xf6, 0x59, 0xf6, 0x1b, 0xf6, 0x1b, 0xf6, 0xeb, 0xf5, 0xec, 0xf5, + 0xc5, 0xf5, 0xc6, 0xf5, 0xac, 0xf5, 0xac, 0xf5, 0xa1, 0xf5, 0xa4, 0xf5, + 0xa4, 0xf5, 0xa2, 0xf5, 0xaf, 0xf5, 0xb2, 0xf5, 0xcc, 0xf5, 0xcd, 0xf5, + 0xf3, 0xf5, 0xf3, 0xf5, 0x29, 0xf6, 0x2b, 0xf6, 0x6a, 0xf6, 0x6c, 0xf6, + 0xbb, 0xf6, 0xbc, 0xf6, 0x14, 0xf7, 0x16, 0xf7, 0x7b, 0xf7, 0x7c, 0xf7, + 0xeb, 0xf7, 0xee, 0xf7, 0x69, 0xf8, 0x6a, 0xf8, 0xec, 0xf8, 0xed, 0xf8, + 0x78, 0xf9, 0x7a, 0xf9, 0x10, 0xfa, 0x11, 0xfa, 0xab, 0xfa, 0xac, 0xfa, + 0x4c, 0xfb, 0x50, 0xfb, 0xf6, 0xfb, 0xf7, 0xfb, 0xa1, 0xfc, 0xa5, 0xfc, + 0x53, 0xfd, 0x55, 0xfd, 0x07, 0xfe, 0x09, 0xfe, 0xbc, 0xfe, 0xbf, 0xfe, + 0x74, 0xff, 0x76, 0xff, 0x2b, 0x00, 0x2d, 0x00, 0xe2, 0x00, 0xe5, 0x00, + 0x99, 0x01, 0x9a, 0x01, 0x4b, 0x02, 0x4e, 0x02, 0xfd, 0x02, 0xfc, 0x02, + 0xa8, 0x03, 0xa9, 0x03, 0x4e, 0x04, 0x50, 0x04, 0xf3, 0x04, 0xf4, 0x04, + 0x90, 0x05, 0x91, 0x05, 0x27, 0x06, 0x29, 0x06, 0xbb, 0x06, 0xbc, 0x06, + 0x40, 0x07, 0x44, 0x07, 0xc6, 0x07, 0xc4, 0x07, 0x3c, 0x08, 0x41, 0x08, + 0xaf, 0x08, 0xae, 0x08, 0x15, 0x09, 0x19, 0x09, 0x70, 0x09, 0x70, 0x09, + 0xc2, 0x09, 0xc5, 0x09, 0x08, 0x0a, 0x08, 0x0a, 0x43, 0x0a, 0x45, 0x0a, + 0x70, 0x0a, 0x73, 0x0a, 0x93, 0x0a, 0x93, 0x0a, 0xa8, 0x0a, 0xab, 0x0a, + 0xb0, 0x0a, 0xaf, 0x0a, 0xae, 0x0a, 0xb0, 0x0a, 0x9c, 0x0a, 0x9c, 0x0a, + 0x7f, 0x0a, 0x80, 0x0a, 0x52, 0x0a, 0x52, 0x0a, 0x17, 0x0a, 0x19, 0x0a, + 0xd2, 0x09, 0xd3, 0x09, 0x7d, 0x09, 0x7e, 0x09, 0x22, 0x09, 0x22, 0x09, + 0xb4, 0x08, 0xb6, 0x08, 0x40, 0x08, 0x42, 0x08, 0xc1, 0x07, 0xc2, 0x07, + 0x36, 0x07, 0x39, 0x07, 0xa8, 0x06, 0xa7, 0x06, 0x0c, 0x06, 0x0f, 0x06, + 0x6d, 0x05, 0x6f, 0x05, 0xc6, 0x04, 0xc6, 0x04, 0x18, 0x04, 0x1b, 0x04, + 0x69, 0x03, 0x6a, 0x03, 0xb3, 0x02, 0xb5, 0x02, 0xfa, 0x01, 0xfe, 0x01, + 0x42, 0x01, 0x42, 0x01, 0x86, 0x00, 0x88, 0x00, 0xc9, 0xff, 0xcc, 0xff, + 0x10, 0xff, 0x0f, 0xff, 0x55, 0xfe, 0x59, 0xfe, 0x9e, 0xfd, 0x9f, 0xfd, + 0xe8, 0xfc, 0xeb, 0xfc, 0x3a, 0xfc, 0x3b, 0xfc, 0x8d, 0xfb, 0x91, 0xfb, + 0xe6, 0xfa, 0xe7, 0xfa, 0x43, 0xfa, 0x46, 0xfa, 0xa7, 0xf9, 0xa7, 0xf9, + 0x11, 0xf9, 0x15, 0xf9, 0x85, 0xf8, 0x87, 0xf8, 0xfe, 0xf7, 0xff, 0xf7, + 0x81, 0xf7, 0x85, 0xf7, 0x0d, 0xf7, 0x0f, 0xf7, 0xa4, 0xf6, 0xa8, 0xf6, + 0x43, 0xf6, 0x44, 0xf6, 0xf1, 0xf5, 0xf3, 0xf5, 0xa6, 0xf5, 0xa8, 0xf5, + 0x6a, 0xf5, 0x6d, 0xf5, 0x38, 0xf5, 0x39, 0xf5, 0x13, 0xf5, 0x16, 0xf5, + 0xfc, 0xf4, 0xfe, 0xf4, 0xf2, 0xf4, 0xf4, 0xf4, 0xf3, 0xf4, 0xf8, 0xf4, + 0x07, 0xf5, 0x07, 0xf5, 0x22, 0xf5, 0x27, 0xf5, 0x52, 0xf5, 0x52, 0xf5, + 0x8b, 0xf5, 0x8e, 0xf5, 0xd1, 0xf5, 0xd4, 0xf5, 0x25, 0xf6, 0x26, 0xf6, + 0x84, 0xf6, 0x87, 0xf6, 0xf0, 0xf6, 0xf0, 0xf6, 0x66, 0xf7, 0x69, 0xf7, + 0xe6, 0xf7, 0xe8, 0xf7, 0x71, 0xf8, 0x74, 0xf8, 0x02, 0xf9, 0x04, 0xf9, + 0x9e, 0xf9, 0xa0, 0xf9, 0x3e, 0xfa, 0x40, 0xfa, 0xe6, 0xfa, 0xe9, 0xfa, + 0x92, 0xfb, 0x93, 0xfb, 0x44, 0xfc, 0x47, 0xfc, 0xf8, 0xfc, 0xfa, 0xfc, + 0xb1, 0xfd, 0xb4, 0xfd, 0x6a, 0xfe, 0x6b, 0xfe, 0x26, 0xff, 0x28, 0xff, + 0xdf, 0xff, 0xe1, 0xff, 0x9a, 0x00, 0x9b, 0x00, 0x51, 0x01, 0x54, 0x01, + 0x09, 0x02, 0x0c, 0x02, 0xbe, 0x02, 0xc0, 0x02, 0x6a, 0x03, 0x6b, 0x03, + 0x14, 0x04, 0x16, 0x04, 0xba, 0x04, 0xbd, 0x04, 0x5b, 0x05, 0x5e, 0x05, + 0xf7, 0x05, 0xf8, 0x05, 0x89, 0x06, 0x8d, 0x06, 0x16, 0x07, 0x17, 0x07, + 0x99, 0x07, 0x9e, 0x07, 0x16, 0x08, 0x15, 0x08, 0x87, 0x08, 0x8c, 0x08, + 0xf2, 0x08, 0xf2, 0x08, 0x4e, 0x09, 0x52, 0x09, 0xa3, 0x09, 0xa5, 0x09, + 0xec, 0x09, 0xee, 0x09, 0x27, 0x0a, 0x29, 0x0a, 0x5a, 0x0a, 0x5b, 0x0a, + 0x79, 0x0a, 0x7d, 0x0a, 0x95, 0x0a, 0x96, 0x0a, 0x9c, 0x0a, 0x9e, 0x0a, + 0x9c, 0x0a, 0x9d, 0x0a, 0x8a, 0x0a, 0x8d, 0x0a, 0x6d, 0x0a, 0x6f, 0x0a, + 0x43, 0x0a, 0x44, 0x0a, 0x07, 0x0a, 0x09, 0x0a, 0xc3, 0x09, 0xc5, 0x09, + 0x6e, 0x09, 0x70, 0x09, 0x0f, 0x09, 0x12, 0x09, 0xa4, 0x08, 0xa6, 0x08, + 0x2e, 0x08, 0x2f, 0x08, 0xad, 0x07, 0xaf, 0x07, 0x21, 0x07, 0x24, 0x07, + 0x8e, 0x06, 0x90, 0x06, 0xf2, 0x05, 0xf3, 0x05, 0x4d, 0x05, 0x4f, 0x05, + 0xa6, 0x04, 0xa8, 0x04, 0xf4, 0x03, 0xf6, 0x03, 0x44, 0x03, 0x45, 0x03, + 0x8a, 0x02, 0x8f, 0x02, 0xd1, 0x01, 0xd1, 0x01, 0x13, 0x01, 0x15, 0x01, + 0x55, 0x00, 0x57, 0x00, 0x98, 0xff, 0x99, 0xff, 0xd8, 0xfe, 0xdb, 0xfe, + 0x20, 0xfe, 0x20, 0xfe, 0x63, 0xfd, 0x62, 0xfd, 0xae, 0xfc, 0xb0, 0xfc, + 0xfd, 0xfb, 0xfb, 0xfb, 0x4e, 0xfb, 0x51, 0xfb, 0xa6, 0xfa, 0xa8, 0xfa, + 0x02, 0xfa, 0x03, 0xfa, 0x64, 0xf9, 0x67, 0xf9, 0xcf, 0xf8, 0xce, 0xf8, + 0x40, 0xf8, 0x44, 0xf8, 0xbb, 0xf7, 0xbc, 0xf7, 0x3d, 0xf7, 0x40, 0xf7, + 0xca, 0xf6, 0xcb, 0xf6, 0x5f, 0xf6, 0x62, 0xf6, 0x04, 0xf6, 0x05, 0xf6, + 0xac, 0xf5, 0xb1, 0xf5, 0x67, 0xf5, 0x68, 0xf5, 0x29, 0xf5, 0x2a, 0xf5, + 0xf8, 0xf4, 0xfc, 0xf4, 0xd7, 0xf4, 0xd8, 0xf4, 0xc1, 0xf4, 0xc4, 0xf4, + 0xba, 0xf4, 0xbc, 0xf4, 0xc0, 0xf4, 0xc1, 0xf4, 0xd4, 0xf4, 0xd6, 0xf4, + 0xf6, 0xf4, 0xf8, 0xf4, 0x27, 0xf5, 0x27, 0xf5, 0x61, 0xf5, 0x66, 0xf5, + 0xb0, 0xf5, 0xb1, 0xf5, 0x03, 0xf6, 0x07, 0xf6, 0x6a, 0xf6, 0x6d, 0xf6, + 0xd9, 0xf6, 0xd9, 0xf6, 0x54, 0xf7, 0x57, 0xf7, 0xd9, 0xf7, 0xdc, 0xf7, + 0x67, 0xf8, 0x69, 0xf8, 0x00, 0xf9, 0x06, 0xf9, 0x9d, 0xf9, 0x9d, 0xf9, + 0x46, 0xfa, 0x49, 0xfa, 0xf1, 0xfa, 0xf3, 0xfa, 0xa2, 0xfb, 0xa5, 0xfb, + 0x5b, 0xfc, 0x5e, 0xfc, 0x15, 0xfd, 0x16, 0xfd, 0xd1, 0xfd, 0xd3, 0xfd, + 0x90, 0xfe, 0x93, 0xfe, 0x50, 0xff, 0x52, 0xff, 0x0f, 0x00, 0x12, 0x00, + 0xd0, 0x00, 0xd4, 0x00, 0x8e, 0x01, 0x8d, 0x01, 0x4a, 0x02, 0x4e, 0x02, + 0x01, 0x03, 0x03, 0x03, 0xb8, 0x03, 0xb8, 0x03, 0x62, 0x04, 0x67, 0x04, + 0x11, 0x05, 0x13, 0x05, 0xb5, 0x05, 0xb6, 0x05, 0x56, 0x06, 0x5a, 0x06, + 0xec, 0x06, 0xec, 0x06, 0x7b, 0x07, 0x80, 0x07, 0x06, 0x08, 0x06, 0x08, + 0x85, 0x08, 0x87, 0x08, 0xfc, 0x08, 0xff, 0x08, 0x67, 0x09, 0x67, 0x09, + 0xc9, 0x09, 0xcb, 0x09, 0x1c, 0x0a, 0x21, 0x0a, 0x69, 0x0a, 0x6b, 0x0a, + 0xa6, 0x0a, 0xa9, 0x0a, 0xd9, 0x0a, 0xdb, 0x0a, 0xfc, 0x0a, 0xfe, 0x0a, + 0x17, 0x0b, 0x18, 0x0b, 0x1f, 0x0b, 0x22, 0x0b, 0x1e, 0x0b, 0x20, 0x0b, + 0x0c, 0x0b, 0x0e, 0x0b, 0xec, 0x0a, 0xf0, 0x0a, 0xbd, 0x0a, 0xc0, 0x0a, + 0x82, 0x0a, 0x84, 0x0a, 0x38, 0x0a, 0x3b, 0x0a, 0xe0, 0x09, 0xe4, 0x09, + 0x7e, 0x09, 0x81, 0x09, 0x0e, 0x09, 0x11, 0x09, 0x94, 0x08, 0x96, 0x08, + 0x10, 0x08, 0x14, 0x08, 0x82, 0x07, 0x85, 0x07, 0xeb, 0x06, 0xef, 0x06, + 0x49, 0x06, 0x50, 0x06, 0xa8, 0x05, 0xa9, 0x05, 0xf8, 0x04, 0xfc, 0x04, + 0x47, 0x04, 0x4a, 0x04, 0x8f, 0x03, 0x91, 0x03, 0xd5, 0x02, 0xd9, 0x02, + 0x1a, 0x02, 0x1c, 0x02, 0x5a, 0x01, 0x5d, 0x01, 0x9b, 0x00, 0x9f, 0x00, + 0xde, 0xff, 0xde, 0xff, 0x1e, 0xff, 0x22, 0xff, 0x62, 0xfe, 0x64, 0xfe, + 0xa6, 0xfd, 0xa8, 0xfd, 0xef, 0xfc, 0xf3, 0xfc, 0x3d, 0xfc, 0x3f, 0xfc, + 0x8f, 0xfb, 0x93, 0xfb, 0xe7, 0xfa, 0xe9, 0xfa, 0x41, 0xfa, 0x45, 0xfa, + 0xa4, 0xf9, 0xa7, 0xf9, 0x10, 0xf9, 0x12, 0xf9, 0x7f, 0xf8, 0x81, 0xf8, + 0xfb, 0xf7, 0xfc, 0xf7, 0x7b, 0xf7, 0x80, 0xf7, 0x09, 0xf7, 0x0c, 0xf7, + 0xa0, 0xf6, 0xa3, 0xf6, 0x3f, 0xf6, 0x43, 0xf6, 0xef, 0xf5, 0xf2, 0xf5, + 0xa3, 0xf5, 0xa8, 0xf5, 0x6a, 0xf5, 0x6e, 0xf5, 0x39, 0xf5, 0x3d, 0xf5, + 0x18, 0xf5, 0x19, 0xf5, 0x01, 0xf5, 0x06, 0xf5, 0xfa, 0xf4, 0xfd, 0xf4, + 0xff, 0xf4, 0x03, 0xf5, 0x13, 0xf5, 0x17, 0xf5, 0x36, 0xf5, 0x3a, 0xf5, + 0x65, 0xf5, 0x68, 0xf5, 0xa3, 0xf5, 0xa5, 0xf5, 0xed, 0xf5, 0xf1, 0xf5, + 0x46, 0xf6, 0x48, 0xf6, 0xad, 0xf6, 0xb0, 0xf6, 0x1b, 0xf7, 0x1f, 0xf7, + 0x9a, 0xf7, 0x9d, 0xf7, 0x21, 0xf8, 0x23, 0xf8, 0xb2, 0xf8, 0xb6, 0xf8, + 0x4d, 0xf9, 0x4f, 0xf9, 0xed, 0xf9, 0xef, 0xf9, 0x99, 0xfa, 0x9c, 0xfa, + 0x47, 0xfb, 0x4a, 0xfb, 0xfd, 0xfb, 0x00, 0xfc, 0xb6, 0xfc, 0xb9, 0xfc, + 0x73, 0xfd, 0x76, 0xfd, 0x34, 0xfe, 0x37, 0xfe, 0xf5, 0xfe, 0xf9, 0xfe, + 0xba, 0xff, 0xbd, 0xff, 0x7d, 0x00, 0x80, 0x00, 0x3e, 0x01, 0x42, 0x01, + 0x02, 0x02, 0x04, 0x02, 0xbd, 0x02, 0xc1, 0x02, 0x7d, 0x03, 0x7f, 0x03, + 0x31, 0x04, 0x35, 0x04, 0xe1, 0x04, 0xe5, 0x04, 0x92, 0x05, 0x94, 0x05, + 0x37, 0x06, 0x3a, 0x06, 0xd9, 0x06, 0xdd, 0x06, 0x74, 0x07, 0x75, 0x07, + 0x04, 0x08, 0x06, 0x08, 0x8d, 0x08, 0x91, 0x08, 0x0d, 0x09, 0x0f, 0x09, + 0x85, 0x09, 0x88, 0x09, 0xf0, 0x09, 0xf2, 0x09, 0x51, 0x0a, 0x53, 0x0a, + 0xa6, 0x0a, 0xaa, 0x0a, 0xee, 0x0a, 0xf1, 0x0a, 0x2c, 0x0b, 0x2f, 0x0b, + 0x59, 0x0b, 0x5d, 0x0b, 0x7e, 0x0b, 0x80, 0x0b, 0x94, 0x0b, 0x96, 0x0b, + 0x99, 0x0b, 0x9b, 0x0b, 0x94, 0x0b, 0x95, 0x0b, 0x7a, 0x0b, 0x7e, 0x0b, + 0x57, 0x0b, 0x58, 0x0b, 0x25, 0x0b, 0x26, 0x0b, 0xe3, 0x0a, 0xe7, 0x0a, + 0x94, 0x0a, 0x96, 0x0a, 0x38, 0x0a, 0x3b, 0x0a, 0xce, 0x09, 0xd1, 0x09, + 0x5c, 0x09, 0x5e, 0x09, 0xdc, 0x08, 0xdf, 0x08, 0x52, 0x08, 0x55, 0x08, + 0xc0, 0x07, 0xc1, 0x07, 0x22, 0x07, 0x25, 0x07, 0x7f, 0x06, 0x81, 0x06, + 0xd3, 0x05, 0xd6, 0x05, 0x22, 0x05, 0x24, 0x05, 0x6e, 0x04, 0x70, 0x04, + 0xb1, 0x03, 0xb4, 0x03, 0xf6, 0x02, 0xf8, 0x02, 0x35, 0x02, 0x38, 0x02, + 0x73, 0x01, 0x75, 0x01, 0xb1, 0x00, 0xb3, 0x00, 0xee, 0xff, 0xef, 0xff, + 0x2c, 0xff, 0x2f, 0xff, 0x6c, 0xfe, 0x6e, 0xfe, 0xb0, 0xfd, 0xb3, 0xfd, + 0xf3, 0xfc, 0xf5, 0xfc, 0x40, 0xfc, 0x44, 0xfc, 0x91, 0xfb, 0x91, 0xfb, + 0xe2, 0xfa, 0xe5, 0xfa, 0x3d, 0xfa, 0x3f, 0xfa, 0x9d, 0xf9, 0xa0, 0xf9, + 0x04, 0xf9, 0x05, 0xf9, 0x75, 0xf8, 0x78, 0xf8, 0xe9, 0xf7, 0xeb, 0xf7, + 0x6e, 0xf7, 0x71, 0xf7, 0xf6, 0xf6, 0xf8, 0xf6, 0x8b, 0xf6, 0x8e, 0xf6, + 0x2a, 0xf6, 0x2d, 0xf6, 0xd4, 0xf5, 0xd7, 0xf5, 0x8c, 0xf5, 0x8d, 0xf5, + 0x4e, 0xf5, 0x52, 0xf5, 0x1e, 0xf5, 0x22, 0xf5, 0xfc, 0xf4, 0xfc, 0xf4, + 0xe4, 0xf4, 0xea, 0xf4, 0xde, 0xf4, 0xde, 0xf4, 0xe3, 0xf4, 0xe7, 0xf4, + 0xf5, 0xf4, 0xf9, 0xf4, 0x1a, 0xf5, 0x1c, 0xf5, 0x48, 0xf5, 0x4c, 0xf5, + 0x89, 0xf5, 0x8c, 0xf5, 0xd4, 0xf5, 0xd7, 0xf5, 0x30, 0xf6, 0x32, 0xf6, + 0x98, 0xf6, 0x9c, 0xf6, 0x0a, 0xf7, 0x0b, 0xf7, 0x89, 0xf7, 0x8e, 0xf7, + 0x12, 0xf8, 0x13, 0xf8, 0xa4, 0xf8, 0xa9, 0xf8, 0x43, 0xf9, 0x44, 0xf9, + 0xe4, 0xf9, 0xe7, 0xf9, 0x92, 0xfa, 0x94, 0xfa, 0x41, 0xfb, 0x44, 0xfb, + 0xf9, 0xfb, 0xfa, 0xfb, 0xb3, 0xfc, 0xb6, 0xfc, 0x71, 0xfd, 0x74, 0xfd, + 0x34, 0xfe, 0x36, 0xfe, 0xf3, 0xfe, 0xf7, 0xfe, 0xba, 0xff, 0xbd, 0xff, + 0x7c, 0x00, 0x7d, 0x00, 0x3e, 0x01, 0x41, 0x01, 0xff, 0x01, 0x03, 0x02, + 0xbd, 0x02, 0xbf, 0x02, 0x79, 0x03, 0x7e, 0x03, 0x2d, 0x04, 0x30, 0x04, + 0xdf, 0x04, 0xe2, 0x04, 0x8b, 0x05, 0x8e, 0x05, 0x31, 0x06, 0x32, 0x06, + 0xd0, 0x06, 0xd3, 0x06, 0x66, 0x07, 0x6b, 0x07, 0xfa, 0x07, 0xfa, 0x07, + 0x7f, 0x08, 0x84, 0x08, 0xfd, 0x08, 0xfd, 0x08, 0x71, 0x09, 0x76, 0x09, + 0xd9, 0x09, 0xdb, 0x09, 0x37, 0x0a, 0x3b, 0x0a, 0x8b, 0x0a, 0x8d, 0x0a, + 0xd0, 0x0a, 0xd2, 0x0a, 0x0b, 0x0b, 0x0e, 0x0b, 0x37, 0x0b, 0x39, 0x0b, + 0x56, 0x0b, 0x59, 0x0b, 0x6a, 0x0b, 0x6d, 0x0b, 0x6c, 0x0b, 0x71, 0x0b, + 0x64, 0x0b, 0x67, 0x0b, 0x49, 0x0b, 0x4c, 0x0b, 0x23, 0x0b, 0x27, 0x0b, + 0xee, 0x0a, 0xef, 0x0a, 0xa8, 0x0a, 0xae, 0x0a, 0x59, 0x0a, 0x5a, 0x0a, + 0xf7, 0x09, 0xfb, 0x09, 0x8c, 0x09, 0x8e, 0x09, 0x16, 0x09, 0x18, 0x09, + 0x92, 0x08, 0x95, 0x08, 0x06, 0x08, 0x0a, 0x08, 0x6e, 0x07, 0x70, 0x07, + 0xd2, 0x06, 0xd4, 0x06, 0x27, 0x06, 0x29, 0x06, 0x79, 0x05, 0x7c, 0x05, + 0xc5, 0x04, 0xc7, 0x04, 0x09, 0x04, 0x0c, 0x04, 0x4d, 0x03, 0x4f, 0x03, + 0x8b, 0x02, 0x8d, 0x02, 0xc6, 0x01, 0xc9, 0x01, 0x02, 0x01, 0x02, 0x01, + 0x3b, 0x00, 0x40, 0x00, 0x75, 0xff, 0x76, 0xff, 0xb1, 0xfe, 0xb4, 0xfe, + 0xed, 0xfd, 0xef, 0xfd, 0x2c, 0xfd, 0x2e, 0xfd, 0x6e, 0xfc, 0x71, 0xfc, + 0xb6, 0xfb, 0xb8, 0xfb, 0x03, 0xfb, 0x06, 0xfb, 0x51, 0xfa, 0x54, 0xfa, + 0xa9, 0xf9, 0xab, 0xf9, 0x08, 0xf9, 0x0b, 0xf9, 0x6d, 0xf8, 0x70, 0xf8, + 0xdc, 0xf7, 0xde, 0xf7, 0x51, 0xf7, 0x52, 0xf7, 0xd1, 0xf6, 0xd5, 0xf6, + 0x5b, 0xf6, 0x5e, 0xf6, 0xf0, 0xf5, 0xf3, 0xf5, 0x8f, 0xf5, 0x92, 0xf5, + 0x3b, 0xf5, 0x3e, 0xf5, 0xf3, 0xf4, 0xf6, 0xf4, 0xba, 0xf4, 0xbb, 0xf4, + 0x8b, 0xf4, 0x8f, 0xf4, 0x6a, 0xf4, 0x6c, 0xf4, 0x56, 0xf4, 0x59, 0xf4, + 0x55, 0xf4, 0x57, 0xf4, 0x5f, 0xf4, 0x60, 0xf4, 0x77, 0xf4, 0x7c, 0xf4, + 0xa0, 0xf4, 0xa1, 0xf4, 0xd6, 0xf4, 0xd9, 0xf4, 0x1b, 0xf5, 0x1d, 0xf5, + 0x6d, 0xf5, 0x70, 0xf5, 0xcf, 0xf5, 0xd3, 0xf5, 0x3a, 0xf6, 0x3d, 0xf6, + 0xb7, 0xf6, 0xb9, 0xf6, 0x39, 0xf7, 0x3b, 0xf7, 0xc6, 0xf7, 0xc9, 0xf7, + 0x60, 0xf8, 0x62, 0xf8, 0xfe, 0xf8, 0x01, 0xf9, 0xaa, 0xf9, 0xab, 0xf9, + 0x53, 0xfa, 0x58, 0xfa, 0x0d, 0xfb, 0x0d, 0xfb, 0xc6, 0xfb, 0xc8, 0xfb, + 0x80, 0xfc, 0x83, 0xfc, 0x47, 0xfd, 0x48, 0xfd, 0x04, 0xfe, 0x08, 0xfe, + 0xcb, 0xfe, 0xcb, 0xfe, 0x8e, 0xff, 0x92, 0xff, 0x51, 0x00, 0x53, 0x00, + 0x14, 0x01, 0x17, 0x01, 0xd5, 0x01, 0xd6, 0x01, 0x95, 0x02, 0x98, 0x02, + 0x4d, 0x03, 0x4d, 0x03, 0x02, 0x04, 0x06, 0x04, 0xb1, 0x04, 0xb5, 0x04, + 0x5f, 0x05, 0x61, 0x05, 0x03, 0x06, 0x05, 0x06, 0xa2, 0x06, 0xa6, 0x06, + 0x3c, 0x07, 0x3c, 0x07, 0xc7, 0x07, 0xca, 0x07, 0x4f, 0x08, 0x53, 0x08, + 0xcb, 0x08, 0xce, 0x08, 0x3f, 0x09, 0x42, 0x09, 0xa6, 0x09, 0xa9, 0x09, + 0x03, 0x0a, 0x06, 0x0a, 0x55, 0x0a, 0x58, 0x0a, 0x99, 0x0a, 0x9c, 0x0a, + 0xd2, 0x0a, 0xd5, 0x0a, 0xfd, 0x0a, 0x01, 0x0b, 0x1c, 0x0b, 0x1c, 0x0b, + 0x2d, 0x0b, 0x33, 0x0b, 0x30, 0x0b, 0x31, 0x0b, 0x25, 0x0b, 0x28, 0x0b, + 0x0b, 0x0b, 0x0d, 0x0b, 0xe0, 0x0a, 0xe4, 0x0a, 0xab, 0x0a, 0xae, 0x0a, + 0x62, 0x0a, 0x66, 0x0a, 0x13, 0x0a, 0x13, 0x0a, 0xae, 0x09, 0xb2, 0x09, + 0x43, 0x09, 0x45, 0x09, 0xc9, 0x08, 0xcc, 0x08, 0x43, 0x08, 0x46, 0x08, + 0xb4, 0x07, 0xb8, 0x07, 0x1c, 0x07, 0x1e, 0x07, 0x79, 0x06, 0x7b, 0x06, + 0xd0, 0x05, 0xd5, 0x05, 0x1f, 0x05, 0x22, 0x05, 0x69, 0x04, 0x6c, 0x04, + 0xac, 0x03, 0xaf, 0x03, 0xec, 0x02, 0xf0, 0x02, 0x29, 0x02, 0x2c, 0x02, + 0x65, 0x01, 0x68, 0x01, 0x9e, 0x00, 0xa1, 0x00, 0xd7, 0xff, 0xda, 0xff, + 0x0f, 0xff, 0x12, 0xff, 0x4b, 0xfe, 0x4e, 0xfe, 0x87, 0xfd, 0x8b, 0xfd, + 0xc7, 0xfc, 0xc9, 0xfc, 0x0b, 0xfc, 0x0e, 0xfc, 0x52, 0xfb, 0x54, 0xfb, + 0xa1, 0xfa, 0xa3, 0xfa, 0xf1, 0xf9, 0xf5, 0xf9, 0x4d, 0xf9, 0x4d, 0xf9, + 0xac, 0xf8, 0xb0, 0xf8, 0x12, 0xf8, 0x14, 0xf8, 0x86, 0xf7, 0x88, 0xf7, + 0xff, 0xf6, 0x00, 0xf7, 0x81, 0xf6, 0x83, 0xf6, 0x11, 0xf6, 0x12, 0xf6, + 0xa7, 0xf5, 0xaa, 0xf5, 0x4e, 0xf5, 0x4e, 0xf5, 0xfc, 0xf4, 0xfe, 0xf4, + 0xbb, 0xf4, 0xbd, 0xf4, 0x85, 0xf4, 0x87, 0xf4, 0x5d, 0xf4, 0x5e, 0xf4, + 0x41, 0xf4, 0x45, 0xf4, 0x35, 0xf4, 0x36, 0xf4, 0x38, 0xf4, 0x3b, 0xf4, + 0x47, 0xf4, 0x4a, 0xf4, 0x6a, 0xf4, 0x6d, 0xf4, 0x97, 0xf4, 0x99, 0xf4, + 0xd7, 0xf4, 0xd8, 0xf4, 0x20, 0xf5, 0x23, 0xf5, 0x7c, 0xf5, 0x80, 0xf5, + 0xe1, 0xf5, 0xe2, 0xf5, 0x52, 0xf6, 0x58, 0xf6, 0xd4, 0xf6, 0xd5, 0xf6, + 0x5d, 0xf7, 0x5f, 0xf7, 0xf1, 0xf7, 0xf3, 0xf7, 0x8e, 0xf8, 0x90, 0xf8, + 0x34, 0xf9, 0x38, 0xf9, 0xe2, 0xf9, 0xe3, 0xf9, 0x94, 0xfa, 0x97, 0xfa, + 0x50, 0xfb, 0x51, 0xfb, 0x0c, 0xfc, 0x0f, 0xfc, 0xd0, 0xfc, 0xd0, 0xfc, + 0x91, 0xfd, 0x94, 0xfd, 0x5a, 0xfe, 0x5d, 0xfe, 0x22, 0xff, 0x24, 0xff, + 0xe7, 0xff, 0xec, 0xff, 0xb1, 0x00, 0xb1, 0x00, 0x75, 0x01, 0x78, 0x01, + 0x39, 0x02, 0x3c, 0x02, 0xf8, 0x02, 0xfb, 0x02, 0xb6, 0x03, 0xb9, 0x03, + 0x6b, 0x04, 0x6f, 0x04, 0x20, 0x05, 0x21, 0x05, 0xcc, 0x05, 0xd0, 0x05, + 0x73, 0x06, 0x74, 0x06, 0x13, 0x07, 0x16, 0x07, 0xaa, 0x07, 0xae, 0x07, + 0x3a, 0x08, 0x3a, 0x08, 0xc0, 0x08, 0xc4, 0x08, 0x3e, 0x09, 0x40, 0x09, + 0xaf, 0x09, 0xb1, 0x09, 0x15, 0x0a, 0x1a, 0x0a, 0x71, 0x0a, 0x74, 0x0a, + 0xc0, 0x0a, 0xc2, 0x0a, 0x02, 0x0b, 0x05, 0x0b, 0x39, 0x0b, 0x3a, 0x0b, + 0x61, 0x0b, 0x64, 0x0b, 0x7d, 0x0b, 0x80, 0x0b, 0x8a, 0x0b, 0x8b, 0x0b, + 0x8a, 0x0b, 0x8c, 0x0b, 0x74, 0x0b, 0x77, 0x0b, 0x59, 0x0b, 0x5b, 0x0b, + 0x27, 0x0b, 0x2a, 0x0b, 0xeb, 0x0a, 0xed, 0x0a, 0x9e, 0x0a, 0xa2, 0x0a, + 0x44, 0x0a, 0x46, 0x0a, 0xdc, 0x09, 0xde, 0x09, 0x69, 0x09, 0x6b, 0x09, + 0xeb, 0x08, 0xef, 0x08, 0x60, 0x08, 0x61, 0x08, 0xca, 0x07, 0xcd, 0x07, + 0x2c, 0x07, 0x2f, 0x07, 0x87, 0x06, 0x8a, 0x06, 0xd8, 0x05, 0xdb, 0x05, + 0x26, 0x05, 0x28, 0x05, 0x6d, 0x04, 0x6d, 0x04, 0xac, 0x03, 0xaf, 0x03, + 0xef, 0x02, 0xf0, 0x02, 0x27, 0x02, 0x29, 0x02, 0x63, 0x01, 0x67, 0x01, + 0x9d, 0x00, 0xa0, 0x00, 0xd5, 0xff, 0xd7, 0xff, 0x13, 0xff, 0x15, 0xff, + 0x4c, 0xfe, 0x4f, 0xfe, 0x8c, 0xfd, 0x8d, 0xfd, 0xcb, 0xfc, 0xd0, 0xfc, + 0x13, 0xfc, 0x14, 0xfc, 0x5e, 0xfb, 0x63, 0xfb, 0xaf, 0xfa, 0xb0, 0xfa, + 0x05, 0xfa, 0x07, 0xfa, 0x5f, 0xf9, 0x64, 0xf9, 0xc7, 0xf8, 0xc8, 0xf8, + 0x2e, 0xf8, 0x34, 0xf8, 0xa7, 0xf7, 0xa8, 0xf7, 0x22, 0xf7, 0x24, 0xf7, + 0xac, 0xf6, 0xb0, 0xf6, 0x3e, 0xf6, 0x42, 0xf6, 0xdd, 0xf5, 0xdf, 0xf5, + 0x85, 0xf5, 0x8a, 0xf5, 0x3a, 0xf5, 0x3b, 0xf5, 0xfc, 0xf4, 0x01, 0xf5, + 0xcb, 0xf4, 0xcf, 0xf4, 0xa9, 0xf4, 0xad, 0xf4, 0x93, 0xf4, 0x96, 0xf4, + 0x8d, 0xf4, 0x90, 0xf4, 0x95, 0xf4, 0x97, 0xf4, 0xa8, 0xf4, 0xad, 0xf4, + 0xcd, 0xf4, 0xcf, 0xf4, 0x00, 0xf5, 0x03, 0xf5, 0x41, 0xf5, 0x45, 0xf5, + 0x93, 0xf5, 0x96, 0xf5, 0xf1, 0xf5, 0xf3, 0xf5, 0x5b, 0xf6, 0x5f, 0xf6, + 0xd5, 0xf6, 0xd6, 0xf6, 0x57, 0xf7, 0x5a, 0xf7, 0xe7, 0xf7, 0xe9, 0xf7, + 0x7e, 0xf8, 0x82, 0xf8, 0x21, 0xf9, 0x23, 0xf9, 0xca, 0xf9, 0xce, 0xf9, + 0x7b, 0xfa, 0x7e, 0xfa, 0x33, 0xfb, 0x37, 0xfb, 0xf1, 0xfb, 0xf2, 0xfb, + 0xb2, 0xfc, 0xb7, 0xfc, 0x77, 0xfd, 0x78, 0xfd, 0x3e, 0xfe, 0x42, 0xfe, + 0x08, 0xff, 0x0a, 0xff, 0xd1, 0xff, 0xd4, 0xff, 0x9b, 0x00, 0x9f, 0x00, + 0x63, 0x01, 0x66, 0x01, 0x2c, 0x02, 0x2f, 0x02, 0xf2, 0x02, 0xf6, 0x02, + 0xb0, 0x03, 0xb3, 0x03, 0x70, 0x04, 0x73, 0x04, 0x26, 0x05, 0x29, 0x05, + 0xda, 0x05, 0xdc, 0x05, 0x88, 0x06, 0x87, 0x06, 0x28, 0x07, 0x2d, 0x07, + 0xcc, 0x07, 0xcb, 0x07, 0x5d, 0x08, 0x61, 0x08, 0xeb, 0x08, 0xed, 0x08, + 0x70, 0x09, 0x73, 0x09, 0xe4, 0x09, 0xe7, 0x09, 0x57, 0x0a, 0x58, 0x0a, + 0xb5, 0x0a, 0xb7, 0x0a, 0x0c, 0x0b, 0x0e, 0x0b, 0x56, 0x0b, 0x57, 0x0b, + 0x90, 0x0b, 0x92, 0x0b, 0xc1, 0x0b, 0xc3, 0x0b, 0xe0, 0x0b, 0xe1, 0x0b, + 0xf4, 0x0b, 0xf6, 0x0b, 0xf8, 0x0b, 0xf9, 0x0b, 0xec, 0x0b, 0xee, 0x0b, + 0xd1, 0x0b, 0xd3, 0x0b, 0xa5, 0x0b, 0xa7, 0x0b, 0x6f, 0x0b, 0x71, 0x0b, + 0x26, 0x0b, 0x26, 0x0b, 0xcf, 0x0a, 0xd3, 0x0a, 0x6c, 0x0a, 0x6d, 0x0a, + 0xfa, 0x09, 0xfd, 0x09, 0x7e, 0x09, 0x80, 0x09, 0xf6, 0x08, 0xf8, 0x08, + 0x64, 0x08, 0x66, 0x08, 0xc8, 0x07, 0xc9, 0x07, 0x24, 0x07, 0x25, 0x07, + 0x76, 0x06, 0x78, 0x06, 0xc3, 0x05, 0xc6, 0x05, 0x0b, 0x05, 0x0b, 0x05, + 0x4a, 0x04, 0x4e, 0x04, 0x89, 0x03, 0x8a, 0x03, 0xc2, 0x02, 0xc5, 0x02, + 0xfe, 0x01, 0xff, 0x01, 0x35, 0x01, 0x37, 0x01, 0x6b, 0x00, 0x6f, 0x00, + 0xa7, 0xff, 0xa7, 0xff, 0xdb, 0xfe, 0xdf, 0xfe, 0x1c, 0xfe, 0x1c, 0xfe, + 0x55, 0xfd, 0x58, 0xfd, 0x9a, 0xfc, 0x9b, 0xfc, 0xde, 0xfb, 0xe1, 0xfb, + 0x2b, 0xfb, 0x2d, 0xfb, 0x7a, 0xfa, 0x7d, 0xfa, 0xd1, 0xf9, 0xd2, 0xf9, + 0x2f, 0xf9, 0x33, 0xf9, 0x95, 0xf8, 0x96, 0xf8, 0x02, 0xf8, 0x05, 0xf8, + 0x79, 0xf7, 0x7b, 0xf7, 0xfa, 0xf6, 0xfc, 0xf6, 0x85, 0xf6, 0x86, 0xf6, + 0x18, 0xf6, 0x1a, 0xf6, 0xbc, 0xf5, 0xbd, 0xf5, 0x66, 0xf5, 0x69, 0xf5, + 0x22, 0xf5, 0x21, 0xf5, 0xe4, 0xf4, 0xe9, 0xf4, 0xbc, 0xf4, 0xbc, 0xf4, + 0x9b, 0xf4, 0x9c, 0xf4, 0x88, 0xf4, 0x8b, 0xf4, 0x8b, 0xf4, 0x8a, 0xf4, + 0x94, 0xf4, 0x97, 0xf4, 0xb0, 0xf4, 0xb2, 0xf4, 0xdc, 0xf4, 0xdc, 0xf4, + 0x12, 0xf5, 0x15, 0xf5, 0x5e, 0xf5, 0x5e, 0xf5, 0xb2, 0xf5, 0xb4, 0xf5, + 0x16, 0xf6, 0x19, 0xf6, 0x89, 0xf6, 0x89, 0xf6, 0x06, 0xf7, 0x0a, 0xf7, + 0x8e, 0xf7, 0x8f, 0xf7, 0x24, 0xf8, 0x27, 0xf8, 0xc1, 0xf8, 0xc2, 0xf8, + 0x66, 0xf9, 0x67, 0xf9, 0x16, 0xfa, 0x17, 0xfa, 0xcb, 0xfa, 0xcc, 0xfa, + 0x84, 0xfb, 0x85, 0xfb, 0x45, 0xfc, 0x46, 0xfc, 0x07, 0xfd, 0x08, 0xfd, + 0xd0, 0xfd, 0xd0, 0xfd, 0x95, 0xfe, 0x96, 0xfe, 0x61, 0xff, 0x60, 0xff, + 0x2a, 0x00, 0x2a, 0x00, 0xf0, 0x00, 0xf4, 0x00, 0xba, 0x01, 0xba, 0x01, + 0x80, 0x02, 0x83, 0x02, 0x40, 0x03, 0x42, 0x03, 0x03, 0x04, 0x03, 0x04, + 0xb9, 0x04, 0xb9, 0x04, 0x6f, 0x05, 0x70, 0x05, 0x1e, 0x06, 0x1d, 0x06, + 0xc4, 0x06, 0xc5, 0x06, 0x65, 0x07, 0x66, 0x07, 0xfd, 0x07, 0xfe, 0x07, + 0x8d, 0x08, 0x8d, 0x08, 0x14, 0x09, 0x16, 0x09, 0x8d, 0x09, 0x8f, 0x09, + 0x03, 0x0a, 0x05, 0x0a, 0x66, 0x0a, 0x67, 0x0a, 0xc3, 0x0a, 0xc4, 0x0a, + 0x10, 0x0b, 0x12, 0x0b, 0x4f, 0x0b, 0x51, 0x0b, 0x88, 0x0b, 0x89, 0x0b, + 0xab, 0x0b, 0xac, 0x0b, 0xc6, 0x0b, 0xc8, 0x0b, 0xd0, 0x0b, 0xd1, 0x0b, + 0xca, 0x0b, 0xcc, 0x0b, 0xba, 0x0b, 0xbb, 0x0b, 0x94, 0x0b, 0x96, 0x0b, + 0x65, 0x0b, 0x67, 0x0b, 0x21, 0x0b, 0x23, 0x0b, 0xd2, 0x0a, 0xd4, 0x0a, + 0x73, 0x0a, 0x75, 0x0a, 0x09, 0x0a, 0x0a, 0x0a, 0x90, 0x09, 0x93, 0x09, + 0x0d, 0x09, 0x0c, 0x09, 0x7d, 0x08, 0x82, 0x08, 0xe5, 0x07, 0xe6, 0x07, + 0x42, 0x07, 0x44, 0x07, 0x99, 0x06, 0x9b, 0x06, 0xe6, 0x05, 0xe7, 0x05, + 0x2d, 0x05, 0x2e, 0x05, 0x6f, 0x04, 0x70, 0x04, 0xab, 0x03, 0xad, 0x03, + 0xe6, 0x02, 0xe7, 0x02, 0x1a, 0x02, 0x1c, 0x02, 0x50, 0x01, 0x51, 0x01, + 0x84, 0x00, 0x86, 0x00, 0xb6, 0xff, 0xb8, 0xff, 0xee, 0xfe, 0xee, 0xfe, + 0x22, 0xfe, 0x25, 0xfe, 0x5d, 0xfd, 0x5c, 0xfd, 0x97, 0xfc, 0x99, 0xfc, + 0xd9, 0xfb, 0xd8, 0xfb, 0x1e, 0xfb, 0x21, 0xfb, 0x68, 0xfa, 0x68, 0xfa, + 0xb9, 0xf9, 0xbc, 0xf9, 0x0d, 0xf9, 0x10, 0xf9, 0x6d, 0xf8, 0x70, 0xf8, + 0xd3, 0xf7, 0xd5, 0xf7, 0x44, 0xf7, 0x46, 0xf7, 0xbd, 0xf6, 0xbe, 0xf6, + 0x40, 0xf6, 0x41, 0xf6, 0xcf, 0xf5, 0xd3, 0xf5, 0x69, 0xf5, 0x68, 0xf5, + 0x0d, 0xf5, 0x13, 0xf5, 0xc0, 0xf4, 0xc1, 0xf4, 0x7c, 0xf4, 0x80, 0xf4, + 0x4c, 0xf4, 0x4f, 0xf4, 0x24, 0xf4, 0x25, 0xf4, 0x0f, 0xf4, 0x10, 0xf4, + 0x05, 0xf4, 0x09, 0xf4, 0x0d, 0xf4, 0x0e, 0xf4, 0x25, 0xf4, 0x26, 0xf4, + 0x49, 0xf4, 0x4a, 0xf4, 0x80, 0xf4, 0x81, 0xf4, 0xc3, 0xf4, 0xc6, 0xf4, + 0x16, 0xf5, 0x17, 0xf5, 0x78, 0xf5, 0x77, 0xf5, 0xe5, 0xf5, 0xe7, 0xf5, + 0x5f, 0xf6, 0x60, 0xf6, 0xe6, 0xf6, 0xe5, 0xf6, 0x76, 0xf7, 0x79, 0xf7, + 0x13, 0xf8, 0x12, 0xf8, 0xb3, 0xf8, 0xb8, 0xf8, 0x62, 0xf9, 0x63, 0xf9, + 0x14, 0xfa, 0x15, 0xfa, 0xcf, 0xfa, 0xd1, 0xfa, 0x8c, 0xfb, 0x8d, 0xfb, + 0x51, 0xfc, 0x51, 0xfc, 0x13, 0xfd, 0x17, 0xfd, 0xde, 0xfd, 0xdf, 0xfd, + 0xa7, 0xfe, 0xa8, 0xfe, 0x70, 0xff, 0x71, 0xff, 0x3b, 0x00, 0x3d, 0x00, + 0x02, 0x01, 0x03, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0x8e, 0x02, 0x90, 0x02, + 0x4c, 0x03, 0x4d, 0x03, 0x0a, 0x04, 0x0b, 0x04, 0xbf, 0x04, 0xc0, 0x04, + 0x71, 0x05, 0x72, 0x05, 0x1b, 0x06, 0x1e, 0x06, 0xbf, 0x06, 0xc1, 0x06, + 0x5c, 0x07, 0x5f, 0x07, 0xf0, 0x07, 0xf4, 0x07, 0x7e, 0x08, 0x7e, 0x08, + 0xfe, 0x08, 0x00, 0x09, 0x76, 0x09, 0x78, 0x09, 0xe5, 0x09, 0xe5, 0x09, + 0x46, 0x0a, 0x49, 0x0a, 0x9d, 0x0a, 0x9d, 0x0a, 0xe4, 0x0a, 0xe6, 0x0a, + 0x21, 0x0b, 0x21, 0x0b, 0x50, 0x0b, 0x51, 0x0b, 0x70, 0x0b, 0x71, 0x0b, + 0x86, 0x0b, 0x86, 0x0b, 0x87, 0x0b, 0x88, 0x0b, 0x80, 0x0b, 0x81, 0x0b, + 0x65, 0x0b, 0x67, 0x0b, 0x3e, 0x0b, 0x3f, 0x0b, 0x06, 0x0b, 0x08, 0x0b, + 0xc1, 0x0a, 0xc1, 0x0a, 0x6c, 0x0a, 0x6d, 0x0a, 0x08, 0x0a, 0x09, 0x0a, + 0x98, 0x09, 0x99, 0x09, 0x1d, 0x09, 0x1e, 0x09, 0x93, 0x08, 0x93, 0x08, + 0x01, 0x08, 0x02, 0x08, 0x62, 0x07, 0x63, 0x07, 0xbe, 0x06, 0xbd, 0x06, + 0x0e, 0x06, 0x0f, 0x06, 0x5a, 0x05, 0x58, 0x05, 0x9e, 0x04, 0x9e, 0x04, + 0xdc, 0x03, 0xde, 0x03, 0x19, 0x03, 0x17, 0x03, 0x4f, 0x02, 0x50, 0x02, + 0x85, 0x01, 0x86, 0x01, 0xb9, 0x00, 0xb8, 0x00, 0xea, 0xff, 0xec, 0xff, + 0x1f, 0xff, 0x1f, 0xff, 0x54, 0xfe, 0x55, 0xfe, 0x8c, 0xfd, 0x8e, 0xfd, + 0xc6, 0xfc, 0xc6, 0xfc, 0x02, 0xfc, 0x03, 0xfc, 0x44, 0xfb, 0x46, 0xfb, + 0x8e, 0xfa, 0x8c, 0xfa, 0xdb, 0xf9, 0xdb, 0xf9, 0x2c, 0xf9, 0x2f, 0xf9, + 0x89, 0xf8, 0x88, 0xf8, 0xe8, 0xf7, 0xed, 0xf7, 0x59, 0xf7, 0x57, 0xf7, + 0xc9, 0xf6, 0xcd, 0xf6, 0x4c, 0xf6, 0x4c, 0xf6, 0xd5, 0xf5, 0xd6, 0xf5, + 0x69, 0xf5, 0x6a, 0xf5, 0x0c, 0xf5, 0x0c, 0xf5, 0xb7, 0xf4, 0xb9, 0xf4, + 0x72, 0xf4, 0x74, 0xf4, 0x38, 0xf4, 0x3a, 0xf4, 0x0c, 0xf4, 0x0d, 0xf4, + 0xf3, 0xf3, 0xf3, 0xf3, 0xdf, 0xf3, 0xe2, 0xf3, 0xe5, 0xf3, 0xe5, 0xf3, + 0xf4, 0xf3, 0xf6, 0xf3, 0x14, 0xf4, 0x14, 0xf4, 0x44, 0xf4, 0x47, 0xf4, + 0x82, 0xf4, 0x82, 0xf4, 0xd2, 0xf4, 0xd4, 0xf4, 0x2c, 0xf5, 0x2d, 0xf5, + 0x96, 0xf5, 0x97, 0xf5, 0x0a, 0xf6, 0x0b, 0xf6, 0x8e, 0xf6, 0x90, 0xf6, + 0x1b, 0xf7, 0x1c, 0xf7, 0xb2, 0xf7, 0xb2, 0xf7, 0x55, 0xf8, 0x56, 0xf8, + 0xfd, 0xf8, 0xfe, 0xf8, 0xb1, 0xf9, 0xb1, 0xf9, 0x68, 0xfa, 0x69, 0xfa, + 0x24, 0xfb, 0x26, 0xfb, 0xeb, 0xfb, 0xea, 0xfb, 0xad, 0xfc, 0xae, 0xfc, + 0x79, 0xfd, 0x79, 0xfd, 0x43, 0xfe, 0x45, 0xfe, 0x0e, 0xff, 0x10, 0xff, + 0xdf, 0xff, 0xdd, 0xff, 0xa5, 0x00, 0xa9, 0x00, 0x73, 0x01, 0x73, 0x01, + 0x38, 0x02, 0x39, 0x02, 0xfd, 0x02, 0xfc, 0x02, 0xc0, 0x03, 0xc0, 0x03, + 0x7b, 0x04, 0x7c, 0x04, 0x32, 0x05, 0x34, 0x05, 0xe4, 0x05, 0xe5, 0x05, + 0x8d, 0x06, 0x8d, 0x06, 0x33, 0x07, 0x35, 0x07, 0xcd, 0x07, 0xcc, 0x07, + 0x5f, 0x08, 0x61, 0x08, 0xea, 0x08, 0xea, 0x08, 0x68, 0x09, 0x69, 0x09, + 0xe0, 0x09, 0xe1, 0x09, 0x48, 0x0a, 0x48, 0x0a, 0xa8, 0x0a, 0xaa, 0x0a, + 0xfa, 0x0a, 0xf8, 0x0a, 0x3e, 0x0b, 0x40, 0x0b, 0x78, 0x0b, 0x78, 0x0b, + 0x9e, 0x0b, 0x9f, 0x0b, 0xbd, 0x0b, 0xbe, 0x0b, 0xc7, 0x0b, 0xc8, 0x0b, + 0xc9, 0x0b, 0xc8, 0x0b, 0xb8, 0x0b, 0xba, 0x0b, 0x96, 0x0b, 0x98, 0x0b, + 0x6b, 0x0b, 0x6c, 0x0b, 0x29, 0x0b, 0x2a, 0x0b, 0xdd, 0x0a, 0xde, 0x0a, + 0x80, 0x0a, 0x80, 0x0a, 0x18, 0x0a, 0x19, 0x0a, 0xa3, 0x09, 0xa1, 0x09, + 0x1d, 0x09, 0x1f, 0x09, 0x91, 0x08, 0x91, 0x08, 0xf8, 0x07, 0xf9, 0x07, + 0x5c, 0x07, 0x59, 0x07, 0xad, 0x06, 0xaf, 0x06, 0xff, 0x05, 0xfe, 0x05, + 0x45, 0x05, 0x46, 0x05, 0x88, 0x04, 0x88, 0x04, 0xc5, 0x03, 0xc5, 0x03, + 0xff, 0x02, 0xff, 0x02, 0x37, 0x02, 0x38, 0x02, 0x6f, 0x01, 0x6d, 0x01, + 0xa1, 0x00, 0xa2, 0x00, 0xd9, 0xff, 0xd8, 0xff, 0x0d, 0xff, 0x0e, 0xff, + 0x47, 0xfe, 0x45, 0xfe, 0x81, 0xfd, 0x81, 0xfd, 0xbe, 0xfc, 0xbf, 0xfc, + 0xff, 0xfb, 0x00, 0xfc, 0x49, 0xfb, 0x48, 0xfb, 0x91, 0xfa, 0x93, 0xfa, + 0xe6, 0xf9, 0xe4, 0xf9, 0x3d, 0xf9, 0x3e, 0xf9, 0x9e, 0xf8, 0x9f, 0xf8, + 0x06, 0xf8, 0x06, 0xf8, 0x78, 0xf7, 0x7b, 0xf7, 0xf3, 0xf6, 0xf1, 0xf6, + 0x79, 0xf6, 0x7c, 0xf6, 0x09, 0xf6, 0x08, 0xf6, 0xa5, 0xf5, 0xa6, 0xf5, + 0x4b, 0xf5, 0x4b, 0xf5, 0xfd, 0xf4, 0xfe, 0xf4, 0xbf, 0xf4, 0xc2, 0xf4, + 0x8a, 0xf4, 0x8b, 0xf4, 0x69, 0xf4, 0x6a, 0xf4, 0x50, 0xf4, 0x53, 0xf4, + 0x49, 0xf4, 0x4b, 0xf4, 0x51, 0xf4, 0x51, 0xf4, 0x65, 0xf4, 0x65, 0xf4, + 0x8b, 0xf4, 0x8d, 0xf4, 0xc0, 0xf4, 0xbe, 0xf4, 0x00, 0xf5, 0x03, 0xf5, + 0x52, 0xf5, 0x54, 0xf5, 0xb1, 0xf5, 0xb1, 0xf5, 0x1f, 0xf6, 0x20, 0xf6, + 0x97, 0xf6, 0x97, 0xf6, 0x1d, 0xf7, 0x1f, 0xf7, 0xae, 0xf7, 0xae, 0xf7, + 0x4a, 0xf8, 0x4b, 0xf8, 0xee, 0xf8, 0xee, 0xf8, 0x9b, 0xf9, 0x9d, 0xf9, + 0x4f, 0xfa, 0x4e, 0xfa, 0x0b, 0xfb, 0x0a, 0xfb, 0xc8, 0xfb, 0xc9, 0xfb, + 0x8e, 0xfc, 0x8f, 0xfc, 0x57, 0xfd, 0x55, 0xfd, 0x20, 0xfe, 0x21, 0xfe, + 0xed, 0xfe, 0xec, 0xfe, 0xba, 0xff, 0xb9, 0xff, 0x87, 0x00, 0x89, 0x00, + 0x53, 0x01, 0x53, 0x01, 0x1d, 0x02, 0x1e, 0x02, 0xe6, 0x02, 0xe6, 0x02, + 0xab, 0x03, 0xaa, 0x03, 0x68, 0x04, 0x6a, 0x04, 0x26, 0x05, 0x25, 0x05, + 0xda, 0x05, 0xdb, 0x05, 0x8c, 0x06, 0x8c, 0x06, 0x33, 0x07, 0x32, 0x07, + 0xd5, 0x07, 0xd5, 0x07, 0x68, 0x08, 0x6a, 0x08, 0xfd, 0x08, 0xfb, 0x08, + 0x7e, 0x09, 0x80, 0x09, 0xfc, 0x09, 0xfa, 0x09, 0x6a, 0x0a, 0x6c, 0x0a, + 0xd0, 0x0a, 0xd0, 0x0a, 0x28, 0x0b, 0x28, 0x0b, 0x73, 0x0b, 0x74, 0x0b, + 0xb1, 0x0b, 0xb1, 0x0b, 0xe4, 0x0b, 0xe4, 0x0b, 0x04, 0x0c, 0x03, 0x0c, + 0x1a, 0x0c, 0x1a, 0x0c, 0x1d, 0x0c, 0x1e, 0x0c, 0x16, 0x0c, 0x17, 0x0c, + 0xfb, 0x0b, 0xfa, 0x0b, 0xd2, 0x0b, 0xd5, 0x0b, 0x9b, 0x0b, 0x9a, 0x0b, + 0x51, 0x0b, 0x52, 0x0b, 0xfe, 0x0a, 0xfd, 0x0a, 0x99, 0x0a, 0x9a, 0x0a, + 0x28, 0x0a, 0x29, 0x0a, 0xac, 0x09, 0xab, 0x09, 0x23, 0x09, 0x24, 0x09, + 0x90, 0x08, 0x90, 0x08, 0xf6, 0x07, 0xf6, 0x07, 0x4c, 0x07, 0x4d, 0x07, + 0xa0, 0x06, 0xa1, 0x06, 0xed, 0x05, 0xea, 0x05, 0x2f, 0x05, 0x32, 0x05, + 0x75, 0x04, 0x73, 0x04, 0xab, 0x03, 0xae, 0x03, 0xe7, 0x02, 0xe8, 0x02, + 0x21, 0x02, 0x20, 0x02, 0x53, 0x01, 0x57, 0x01, 0x8e, 0x00, 0x8b, 0x00, + 0xbd, 0xff, 0xc1, 0xff, 0xf9, 0xfe, 0xfa, 0xfe, 0x32, 0xfe, 0x31, 0xfe, + 0x6c, 0xfd, 0x6e, 0xfd, 0xb0, 0xfc, 0xae, 0xfc, 0xef, 0xfb, 0xf3, 0xfb, + 0x3d, 0xfb, 0x3c, 0xfb, 0x8a, 0xfa, 0x8a, 0xfa, 0xde, 0xf9, 0xe0, 0xf9, + 0x3b, 0xf9, 0x3a, 0xf9, 0x9c, 0xf8, 0x9d, 0xf8, 0x08, 0xf8, 0x0b, 0xf8, + 0x7e, 0xf7, 0x7e, 0xf7, 0xfb, 0xf6, 0xfd, 0xf6, 0x85, 0xf6, 0x85, 0xf6, + 0x18, 0xf6, 0x19, 0xf6, 0xb8, 0xf5, 0xb6, 0xf5, 0x60, 0xf5, 0x63, 0xf5, + 0x1a, 0xf5, 0x18, 0xf5, 0xdb, 0xf4, 0xde, 0xf4, 0xae, 0xf4, 0xae, 0xf4, + 0x8d, 0xf4, 0x8f, 0xf4, 0x7b, 0xf4, 0x7b, 0xf4, 0x79, 0xf4, 0x78, 0xf4, + 0x81, 0xf4, 0x83, 0xf4, 0x9b, 0xf4, 0x9b, 0xf4, 0xc4, 0xf4, 0xc4, 0xf4, + 0xfa, 0xf4, 0xfb, 0xf4, 0x43, 0xf5, 0x44, 0xf5, 0x96, 0xf5, 0x95, 0xf5, + 0xf7, 0xf5, 0xf8, 0xf5, 0x6a, 0xf6, 0x69, 0xf6, 0xe3, 0xf6, 0xe3, 0xf6, + 0x6d, 0xf7, 0x6d, 0xf7, 0xfd, 0xf7, 0xfe, 0xf7, 0x9e, 0xf8, 0x9e, 0xf8, + 0x3f, 0xf9, 0x40, 0xf9, 0xf1, 0xf9, 0xee, 0xf9, 0xa2, 0xfa, 0xa2, 0xfa, + 0x5c, 0xfb, 0x5b, 0xfb, 0x1c, 0xfc, 0x1d, 0xfc, 0xdd, 0xfc, 0xde, 0xfc, + 0xa5, 0xfd, 0xa7, 0xfd, 0x6d, 0xfe, 0x6f, 0xfe, 0x39, 0xff, 0x38, 0xff, + 0x03, 0x00, 0x05, 0x00, 0xcd, 0x00, 0xce, 0x00, 0x96, 0x01, 0x96, 0x01, + 0x5b, 0x02, 0x5c, 0x02, 0x20, 0x03, 0x20, 0x03, 0xdf, 0x03, 0xe0, 0x03, + 0x9a, 0x04, 0x9c, 0x04, 0x52, 0x05, 0x53, 0x05, 0x01, 0x06, 0x01, 0x06, + 0xab, 0x06, 0xac, 0x06, 0x4d, 0x07, 0x4e, 0x07, 0xe7, 0x07, 0xe7, 0x07, + 0x79, 0x08, 0x7d, 0x08, 0x00, 0x09, 0x00, 0x09, 0x7f, 0x09, 0x83, 0x09, + 0xf4, 0x09, 0xf4, 0x09, 0x5d, 0x0a, 0x60, 0x0a, 0xbb, 0x0a, 0xbc, 0x0a, + 0x0a, 0x0b, 0x0c, 0x0b, 0x50, 0x0b, 0x51, 0x0b, 0x85, 0x0b, 0x87, 0x0b, + 0xb2, 0x0b, 0xb1, 0x0b, 0xca, 0x0b, 0xcc, 0x0b, 0xd8, 0x0b, 0xd9, 0x0b, + 0xd7, 0x0b, 0xd8, 0x0b, 0xc6, 0x0b, 0xc7, 0x0b, 0xa9, 0x0b, 0xaa, 0x0b, + 0x77, 0x0b, 0x79, 0x0b, 0x3d, 0x0b, 0x3d, 0x0b, 0xed, 0x0a, 0xf0, 0x0a, + 0x95, 0x0a, 0x92, 0x0a, 0x2d, 0x0a, 0x2f, 0x0a, 0xb7, 0x09, 0xb6, 0x09, + 0x36, 0x09, 0x38, 0x09, 0xab, 0x08, 0xad, 0x08, 0x14, 0x08, 0x14, 0x08, + 0x79, 0x07, 0x7b, 0x07, 0xcc, 0x06, 0xcc, 0x06, 0x1e, 0x06, 0x1f, 0x06, + 0x66, 0x05, 0x66, 0x05, 0xa9, 0x04, 0xa9, 0x04, 0xea, 0x03, 0xea, 0x03, + 0x22, 0x03, 0x23, 0x03, 0x5c, 0x02, 0x5c, 0x02, 0x92, 0x01, 0x93, 0x01, + 0xc6, 0x00, 0xc4, 0x00, 0xfb, 0xff, 0xfd, 0xff, 0x31, 0xff, 0x30, 0xff, + 0x67, 0xfe, 0x69, 0xfe, 0xa2, 0xfd, 0xa2, 0xfd, 0xdc, 0xfc, 0xdc, 0xfc, + 0x1e, 0xfc, 0x20, 0xfc, 0x60, 0xfb, 0x61, 0xfb, 0xac, 0xfa, 0xac, 0xfa, + 0xfb, 0xf9, 0xfa, 0xf9, 0x50, 0xf9, 0x51, 0xf9, 0xaf, 0xf8, 0xaf, 0xf8, + 0x14, 0xf8, 0x14, 0xf8, 0x82, 0xf7, 0x82, 0xf7, 0xfa, 0xf6, 0xf9, 0xf6, + 0x7b, 0xf6, 0x7e, 0xf6, 0x07, 0xf6, 0x06, 0xf6, 0x9f, 0xf5, 0xa1, 0xf5, + 0x40, 0xf5, 0x42, 0xf5, 0xf0, 0xf4, 0xf0, 0xf4, 0xac, 0xf4, 0xad, 0xf4, + 0x74, 0xf4, 0x75, 0xf4, 0x4d, 0xf4, 0x4d, 0xf4, 0x31, 0xf4, 0x32, 0xf4, + 0x25, 0xf4, 0x26, 0xf4, 0x27, 0xf4, 0x27, 0xf4, 0x38, 0xf4, 0x3a, 0xf4, + 0x5b, 0xf4, 0x5b, 0xf4, 0x89, 0xf4, 0x8c, 0xf4, 0xca, 0xf4, 0xc7, 0xf4, + 0x14, 0xf5, 0x17, 0xf5, 0x72, 0xf5, 0x74, 0xf5, 0xdb, 0xf5, 0xd9, 0xf5, + 0x4f, 0xf6, 0x52, 0xf6, 0xd2, 0xf6, 0xd0, 0xf6, 0x5c, 0xf7, 0x5e, 0xf7, + 0xf5, 0xf7, 0xf5, 0xf7, 0x93, 0xf8, 0x93, 0xf8, 0x3d, 0xf9, 0x3c, 0xf9, + 0xea, 0xf9, 0xec, 0xf9, 0xa3, 0xfa, 0xa1, 0xfa, 0x5b, 0xfb, 0x5c, 0xfb, + 0x1d, 0xfc, 0x1c, 0xfc, 0xde, 0xfc, 0xdf, 0xfc, 0xa6, 0xfd, 0xa6, 0xfd, + 0x6b, 0xfe, 0x6c, 0xfe, 0x34, 0xff, 0x35, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xc4, 0x00, 0xc2, 0x00, 0x86, 0x01, 0x88, 0x01, 0x4a, 0x02, 0x4a, 0x02, + 0x0a, 0x03, 0x0a, 0x03, 0xc6, 0x03, 0xc8, 0x03, 0x7d, 0x04, 0x7d, 0x04, + 0x2f, 0x05, 0x30, 0x05, 0xdb, 0x05, 0xdb, 0x05, 0x7f, 0x06, 0x80, 0x06, + 0x1e, 0x07, 0x1d, 0x07, 0xb3, 0x07, 0xb5, 0x07, 0x3f, 0x08, 0x3d, 0x08, + 0xc2, 0x08, 0xc4, 0x08, 0x3e, 0x09, 0x3d, 0x09, 0xab, 0x09, 0xac, 0x09, + 0x11, 0x0a, 0x12, 0x0a, 0x68, 0x0a, 0x69, 0x0a, 0xb6, 0x0a, 0xb6, 0x0a, + 0xf4, 0x0a, 0xf5, 0x0a, 0x27, 0x0b, 0x26, 0x0b, 0x4b, 0x0b, 0x4c, 0x0b, + 0x62, 0x0b, 0x61, 0x0b, 0x6d, 0x0b, 0x6d, 0x0b, 0x67, 0x0b, 0x66, 0x0b, + 0x55, 0x0b, 0x55, 0x0b, 0x31, 0x0b, 0x31, 0x0b, 0xfd, 0x0a, 0xff, 0x0a, + 0xc0, 0x0a, 0xc0, 0x0a, 0x6e, 0x0a, 0x6e, 0x0a, 0x12, 0x0a, 0x13, 0x0a, + 0xaa, 0x09, 0xa9, 0x09, 0x30, 0x09, 0x31, 0x09, 0xb0, 0x08, 0xb0, 0x08, + 0x22, 0x08, 0x22, 0x08, 0x8b, 0x07, 0x8b, 0x07, 0xea, 0x06, 0xea, 0x06, + 0x3f, 0x06, 0x3e, 0x06, 0x8f, 0x05, 0x90, 0x05, 0xd9, 0x04, 0xd7, 0x04, + 0x1a, 0x04, 0x1b, 0x04, 0x59, 0x03, 0x59, 0x03, 0x97, 0x02, 0x94, 0x02, + 0xcc, 0x01, 0xcd, 0x01, 0x04, 0x01, 0x04, 0x01, 0x3a, 0x00, 0x3a, 0x00, + 0x6f, 0xff, 0x70, 0xff, 0xa8, 0xfe, 0xa6, 0xfe, 0xdf, 0xfd, 0xe1, 0xfd, + 0x1b, 0xfd, 0x1b, 0xfd, 0x59, 0xfc, 0x5a, 0xfc, 0x9d, 0xfb, 0x9c, 0xfb, + 0xe2, 0xfa, 0xe4, 0xfa, 0x31, 0xfa, 0x31, 0xfa, 0x83, 0xf9, 0x85, 0xf9, + 0xde, 0xf8, 0xde, 0xf8, 0x41, 0xf8, 0x41, 0xf8, 0xa9, 0xf7, 0xaa, 0xf7, + 0x1f, 0xf7, 0x1e, 0xf7, 0x9b, 0xf6, 0x9b, 0xf6, 0x24, 0xf6, 0x22, 0xf6, + 0xb5, 0xf5, 0xb5, 0xf5, 0x53, 0xf5, 0x52, 0xf5, 0xfd, 0xf4, 0xfe, 0xf4, + 0xb1, 0xf4, 0xb0, 0xf4, 0x76, 0xf4, 0x76, 0xf4, 0x46, 0xf4, 0x45, 0xf4, + 0x26, 0xf4, 0x25, 0xf4, 0x11, 0xf4, 0x12, 0xf4, 0x0e, 0xf4, 0x0c, 0xf4, + 0x17, 0xf4, 0x17, 0xf4, 0x30, 0xf4, 0x30, 0xf4, 0x58, 0xf4, 0x59, 0xf4, + 0x93, 0xf4, 0x92, 0xf4, 0xd8, 0xf4, 0xd8, 0xf4, 0x2c, 0xf5, 0x2b, 0xf5, + 0x8e, 0xf5, 0x8e, 0xf5, 0xfc, 0xf5, 0xfb, 0xf5, 0x77, 0xf6, 0x79, 0xf6, + 0x01, 0xf7, 0xfe, 0xf6, 0x8e, 0xf7, 0x90, 0xf7, 0x2c, 0xf8, 0x2a, 0xf8, + 0xce, 0xf8, 0xce, 0xf8, 0x7b, 0xf9, 0x7a, 0xf9, 0x2f, 0xfa, 0x2d, 0xfa, + 0xe4, 0xfa, 0xe4, 0xfa, 0xa6, 0xfb, 0xa5, 0xfb, 0x63, 0xfc, 0x63, 0xfc, + 0x2d, 0xfd, 0x2b, 0xfd, 0xf2, 0xfd, 0xf2, 0xfd, 0xb9, 0xfe, 0xba, 0xfe, + 0x87, 0xff, 0x86, 0xff, 0x4c, 0x00, 0x4c, 0x00, 0x16, 0x01, 0x16, 0x01, + 0xda, 0x01, 0xd9, 0x01, 0x9d, 0x02, 0x9e, 0x02, 0x5f, 0x03, 0x5e, 0x03, + 0x18, 0x04, 0x19, 0x04, 0xd1, 0x04, 0xd0, 0x04, 0x81, 0x05, 0x80, 0x05, + 0x2c, 0x06, 0x2b, 0x06, 0xd1, 0x06, 0xd1, 0x06, 0x6c, 0x07, 0x6a, 0x07, + 0x03, 0x08, 0x02, 0x08, 0x8a, 0x08, 0x8b, 0x08, 0x0f, 0x09, 0x0d, 0x09, + 0x85, 0x09, 0x85, 0x09, 0xf3, 0x09, 0xf2, 0x09, 0x56, 0x0a, 0x55, 0x0a, + 0xa8, 0x0a, 0xaa, 0x0a, 0xf4, 0x0a, 0xf3, 0x0a, 0x2c, 0x0b, 0x2c, 0x0b, + 0x5c, 0x0b, 0x5e, 0x0b, 0x80, 0x0b, 0x7c, 0x0b, 0x91, 0x0b, 0x92, 0x0b, + 0x97, 0x0b, 0x96, 0x0b, 0x8d, 0x0b, 0x8c, 0x0b, 0x73, 0x0b, 0x73, 0x0b, + 0x4d, 0x0b, 0x4d, 0x0b, 0x16, 0x0b, 0x15, 0x0b, 0xcf, 0x0a, 0xce, 0x0a, + 0x7c, 0x0a, 0x7b, 0x0a, 0x18, 0x0a, 0x17, 0x0a, 0xaa, 0x09, 0xaa, 0x09, + 0x2f, 0x09, 0x30, 0x09, 0xa9, 0x08, 0xa7, 0x08, 0x1a, 0x08, 0x1a, 0x08, + 0x7d, 0x07, 0x7d, 0x07, 0xda, 0x06, 0xd9, 0x06, 0x30, 0x06, 0x30, 0x06, + 0x7a, 0x05, 0x78, 0x05, 0xc5, 0x04, 0xc5, 0x04, 0x03, 0x04, 0x02, 0x04, + 0x46, 0x03, 0x44, 0x03, 0x7e, 0x02, 0x7f, 0x02, 0xb8, 0x01, 0xb7, 0x01, + 0xf2, 0x00, 0xf1, 0x00, 0x28, 0x00, 0x28, 0x00, 0x60, 0xff, 0x61, 0xff, + 0x99, 0xfe, 0x99, 0xfe, 0xd4, 0xfd, 0xd3, 0xfd, 0x14, 0xfd, 0x14, 0xfd, + 0x55, 0xfc, 0x55, 0xfc, 0x9c, 0xfb, 0x9a, 0xfb, 0xe7, 0xfa, 0xe7, 0xfa, + 0x38, 0xfa, 0x37, 0xfa, 0x90, 0xf9, 0x8f, 0xf9, 0xee, 0xf8, 0xee, 0xf8, + 0x57, 0xf8, 0x56, 0xf8, 0xc5, 0xf7, 0xc4, 0xf7, 0x3e, 0xf7, 0x3f, 0xf7, + 0xc1, 0xf6, 0xbf, 0xf6, 0x4e, 0xf6, 0x4e, 0xf6, 0xe5, 0xf5, 0xe4, 0xf5, + 0x88, 0xf5, 0x87, 0xf5, 0x36, 0xf5, 0x37, 0xf5, 0xf2, 0xf4, 0xf0, 0xf4, + 0xb8, 0xf4, 0xb9, 0xf4, 0x90, 0xf4, 0x8d, 0xf4, 0x73, 0xf4, 0x74, 0xf4, + 0x65, 0xf4, 0x65, 0xf4, 0x66, 0xf4, 0x64, 0xf4, 0x74, 0xf4, 0x75, 0xf4, + 0x92, 0xf4, 0x91, 0xf4, 0xc0, 0xf4, 0xc0, 0xf4, 0xf9, 0xf4, 0xf9, 0xf4, + 0x45, 0xf5, 0x45, 0xf5, 0x9b, 0xf5, 0x9b, 0xf5, 0x01, 0xf6, 0x02, 0xf6, + 0x74, 0xf6, 0x72, 0xf6, 0xf4, 0xf6, 0xf4, 0xf6, 0x7e, 0xf7, 0x7d, 0xf7, + 0x13, 0xf8, 0x12, 0xf8, 0xb0, 0xf8, 0xaf, 0xf8, 0x57, 0xf9, 0x58, 0xf9, + 0x07, 0xfa, 0x02, 0xfa, 0xbc, 0xfa, 0xbd, 0xfa, 0x75, 0xfb, 0x74, 0xfb, + 0x37, 0xfc, 0x37, 0xfc, 0xfc, 0xfc, 0xfa, 0xfc, 0xc5, 0xfd, 0xc3, 0xfd, + 0x8f, 0xfe, 0x8e, 0xfe, 0x57, 0xff, 0x57, 0xff, 0x28, 0x00, 0x25, 0x00, + 0xed, 0x00, 0xee, 0x00, 0xba, 0x01, 0xb8, 0x01, 0x7e, 0x02, 0x80, 0x02, + 0x43, 0x03, 0x42, 0x03, 0x06, 0x04, 0x05, 0x04, 0xc1, 0x04, 0xc1, 0x04, + 0x79, 0x05, 0x78, 0x05, 0x29, 0x06, 0x29, 0x06, 0xd3, 0x06, 0xd2, 0x06, + 0x76, 0x07, 0x77, 0x07, 0x11, 0x08, 0x10, 0x08, 0xa5, 0x08, 0xa4, 0x08, + 0x2e, 0x09, 0x2d, 0x09, 0xac, 0x09, 0xab, 0x09, 0x22, 0x0a, 0x21, 0x0a, + 0x8a, 0x0a, 0x8a, 0x0a, 0xe8, 0x0a, 0xe8, 0x0a, 0x39, 0x0b, 0x38, 0x0b, + 0x7c, 0x0b, 0x7c, 0x0b, 0xb4, 0x0b, 0xb5, 0x0b, 0xdd, 0x0b, 0xdc, 0x0b, + 0xf9, 0x0b, 0xf9, 0x0b, 0x03, 0x0c, 0x03, 0x0c, 0x05, 0x0c, 0x04, 0x0c, + 0xf1, 0x0b, 0xf1, 0x0b, 0xd2, 0x0b, 0xd0, 0x0b, 0xa1, 0x0b, 0xa2, 0x0b, + 0x64, 0x0b, 0x61, 0x0b, 0x14, 0x0b, 0x17, 0x0b, 0xb9, 0x0a, 0xb7, 0x0a, + 0x51, 0x0a, 0x51, 0x0a, 0xda, 0x09, 0xd9, 0x09, 0x5b, 0x09, 0x59, 0x09, + 0xcd, 0x08, 0xcd, 0x08, 0x38, 0x08, 0x38, 0x08, 0x98, 0x07, 0x97, 0x07, + 0xef, 0x06, 0xf0, 0x06, 0x40, 0x06, 0x3f, 0x06, 0x88, 0x05, 0x87, 0x05, + 0xcc, 0x04, 0xcd, 0x04, 0x0c, 0x04, 0x0b, 0x04, 0x49, 0x03, 0x48, 0x03, + 0x80, 0x02, 0x81, 0x02, 0xba, 0x01, 0xb6, 0x01, 0xee, 0x00, 0xf0, 0x00, + 0x28, 0x00, 0x25, 0x00, 0x5b, 0xff, 0x5c, 0xff, 0x98, 0xfe, 0x96, 0xfe, + 0xd0, 0xfd, 0xd0, 0xfd, 0x12, 0xfd, 0x0f, 0xfd, 0x52, 0xfc, 0x51, 0xfc, + 0x99, 0xfb, 0x98, 0xfb, 0xe6, 0xfa, 0xe4, 0xfa, 0x37, 0xfa, 0x37, 0xfa, + 0x93, 0xf9, 0x90, 0xf9, 0xed, 0xf8, 0xed, 0xf8, 0x59, 0xf8, 0x57, 0xf8, + 0xc9, 0xf7, 0xc6, 0xf7, 0x3f, 0xf7, 0x41, 0xf7, 0xc8, 0xf6, 0xc3, 0xf6, + 0x50, 0xf6, 0x52, 0xf6, 0xee, 0xf5, 0xec, 0xf5, 0x8f, 0xf5, 0x8e, 0xf5, + 0x41, 0xf5, 0x3f, 0xf5, 0xfc, 0xf4, 0xfc, 0xf4, 0xc8, 0xf4, 0xc6, 0xf4, + 0x9f, 0xf4, 0x9d, 0xf4, 0x85, 0xf4, 0x85, 0xf4, 0x78, 0xf4, 0x75, 0xf4, + 0x7b, 0xf4, 0x7b, 0xf4, 0x8c, 0xf4, 0x8a, 0xf4, 0xab, 0xf4, 0xab, 0xf4, + 0xdb, 0xf4, 0xd9, 0xf4, 0x19, 0xf5, 0x19, 0xf5, 0x65, 0xf5, 0x64, 0xf5, + 0xbf, 0xf5, 0xbe, 0xf5, 0x28, 0xf6, 0x25, 0xf6, 0x9b, 0xf6, 0x9d, 0xf6, + 0x1f, 0xf7, 0x1c, 0xf7, 0xaa, 0xf7, 0xa9, 0xf7, 0x41, 0xf8, 0x42, 0xf8, + 0xe3, 0xf8, 0xe0, 0xf8, 0x8a, 0xf9, 0x8b, 0xf9, 0x3c, 0xfa, 0x3a, 0xfa, + 0xf2, 0xfa, 0xf2, 0xfa, 0xb0, 0xfb, 0xae, 0xfb, 0x70, 0xfc, 0x6f, 0xfc, + 0x35, 0xfd, 0x37, 0xfd, 0xfe, 0xfd, 0xfe, 0xfd, 0xc9, 0xfe, 0xc7, 0xfe, + 0x93, 0xff, 0x94, 0xff, 0x5f, 0x00, 0x5c, 0x00, 0x28, 0x01, 0x29, 0x01, + 0xf2, 0x01, 0xef, 0x01, 0xb7, 0x02, 0xb7, 0x02, 0x7a, 0x03, 0x7c, 0x03, + 0x3c, 0x04, 0x39, 0x04, 0xf3, 0x04, 0xf4, 0x04, 0xaa, 0x05, 0xa9, 0x05, + 0x57, 0x06, 0x56, 0x06, 0x00, 0x07, 0x00, 0x07, 0xa0, 0x07, 0x9e, 0x07, + 0x36, 0x08, 0x37, 0x08, 0xc8, 0x08, 0xc6, 0x08, 0x4b, 0x09, 0x4a, 0x09, + 0xc8, 0x09, 0xc7, 0x09, 0x38, 0x0a, 0x37, 0x0a, 0x9c, 0x0a, 0x9b, 0x0a, + 0xf8, 0x0a, 0xf7, 0x0a, 0x42, 0x0b, 0x40, 0x0b, 0x84, 0x0b, 0x82, 0x0b, + 0xb5, 0x0b, 0xb4, 0x0b, 0xd8, 0x0b, 0xd7, 0x0b, 0xf0, 0x0b, 0xef, 0x0b, + 0xfa, 0x0b, 0xf8, 0x0b, 0xf4, 0x0b, 0xf2, 0x0b, 0xdd, 0x0b, 0xdc, 0x0b, + 0xb8, 0x0b, 0xb7, 0x0b, 0x83, 0x0b, 0x81, 0x0b, 0x41, 0x0b, 0x40, 0x0b, + 0xef, 0x0a, 0xed, 0x0a, 0x8f, 0x0a, 0x8e, 0x0a, 0x23, 0x0a, 0x21, 0x0a, + 0xa8, 0x09, 0xa6, 0x09, 0x24, 0x09, 0x24, 0x09, 0x95, 0x08, 0x92, 0x08, + 0xfa, 0x07, 0xfa, 0x07, 0x55, 0x07, 0x55, 0x07, 0xa8, 0x06, 0xa7, 0x06, + 0xf6, 0x05, 0xf4, 0x05, 0x3b, 0x05, 0x3a, 0x05, 0x7c, 0x04, 0x79, 0x04, + 0xb8, 0x03, 0xb9, 0x03, 0xf0, 0x02, 0xec, 0x02, 0x25, 0x02, 0x26, 0x02, + 0x59, 0x01, 0x56, 0x01, 0x8d, 0x00, 0x8c, 0x00, 0xc0, 0xff, 0xbe, 0xff, + 0xf2, 0xfe, 0xf2, 0xfe, 0x2a, 0xfe, 0x28, 0xfe, 0x60, 0xfd, 0x5e, 0xfd, + 0x9e, 0xfc, 0x9d, 0xfc, 0xdc, 0xfb, 0xd9, 0xfb, 0x21, 0xfb, 0x20, 0xfb, + 0x6b, 0xfa, 0x69, 0xfa, 0xba, 0xf9, 0xb6, 0xf9, 0x11, 0xf9, 0x12, 0xf9, + 0x6d, 0xf8, 0x69, 0xf8, 0xd6, 0xf7, 0xd6, 0xf7, 0x43, 0xf7, 0x41, 0xf7, + 0xbd, 0xf6, 0xbd, 0xf6, 0x40, 0xf6, 0x3e, 0xf6, 0xcc, 0xf5, 0xcc, 0xf5, + 0x67, 0xf5, 0x67, 0xf5, 0x0b, 0xf5, 0x0a, 0xf5, 0xbe, 0xf4, 0xbc, 0xf4, + 0x7c, 0xf4, 0x79, 0xf4, 0x46, 0xf4, 0x45, 0xf4, 0x24, 0xf4, 0x20, 0xf4, + 0x07, 0xf4, 0x08, 0xf4, 0x02, 0xf4, 0xff, 0xf3, 0x07, 0xf4, 0x05, 0xf4, + 0x1c, 0xf4, 0x1b, 0xf4, 0x40, 0xf4, 0x3f, 0xf4, 0x76, 0xf4, 0x72, 0xf4, + 0xb5, 0xf4, 0xb5, 0xf4, 0x09, 0xf5, 0x06, 0xf5, 0x66, 0xf5, 0x66, 0xf5, + 0xd5, 0xf5, 0xd2, 0xf5, 0x4e, 0xf6, 0x4d, 0xf6, 0xd3, 0xf6, 0xd2, 0xf6, + 0x63, 0xf7, 0x61, 0xf7, 0xfe, 0xf7, 0xfc, 0xf7, 0xa2, 0xf8, 0xa0, 0xf8, + 0x4d, 0xf9, 0x4c, 0xf9, 0x00, 0xfa, 0xff, 0xf9, 0xba, 0xfa, 0xb7, 0xfa, + 0x79, 0xfb, 0x78, 0xfb, 0x3b, 0xfc, 0x39, 0xfc, 0x05, 0xfd, 0x03, 0xfd, + 0xcc, 0xfd, 0xcb, 0xfd, 0x99, 0xfe, 0x96, 0xfe, 0x61, 0xff, 0x61, 0xff, + 0x2e, 0x00, 0x2d, 0x00, 0xf7, 0x00, 0xf6, 0x00, 0xbf, 0x01, 0xbe, 0x01, + 0x85, 0x02, 0x83, 0x02, 0x46, 0x03, 0x45, 0x03, 0x06, 0x04, 0x03, 0x04, + 0xbc, 0x04, 0xbb, 0x04, 0x70, 0x05, 0x6e, 0x05, 0x1d, 0x06, 0x1b, 0x06, + 0xc4, 0x06, 0xc4, 0x06, 0x63, 0x07, 0x60, 0x07, 0xf8, 0x07, 0xf7, 0x07, + 0x88, 0x08, 0x86, 0x08, 0x09, 0x09, 0x07, 0x09, 0x88, 0x09, 0x87, 0x09, + 0xf3, 0x09, 0xf1, 0x09, 0x5b, 0x0a, 0x59, 0x0a, 0xb3, 0x0a, 0xaf, 0x0a, + 0xfc, 0x0a, 0xf9, 0x0a, 0x3d, 0x0b, 0x3b, 0x0b, 0x6d, 0x0b, 0x6b, 0x0b, + 0x91, 0x0b, 0x90, 0x0b, 0xa9, 0x0b, 0xa4, 0x0b, 0xae, 0x0b, 0xae, 0x0b, + 0xa9, 0x0b, 0xa5, 0x0b, 0x93, 0x0b, 0x91, 0x0b, 0x6d, 0x0b, 0x6b, 0x0b, + 0x3b, 0x0b, 0x38, 0x0b, 0xf6, 0x0a, 0xf4, 0x0a, 0xa4, 0x0a, 0xa3, 0x0a, + 0x45, 0x0a, 0x41, 0x0a, 0xd6, 0x09, 0xd5, 0x09, 0x5f, 0x09, 0x5c, 0x09, + 0xd5, 0x08, 0xd1, 0x08, 0x48, 0x08, 0x46, 0x08, 0xaa, 0x07, 0xa8, 0x07, + 0x08, 0x07, 0x04, 0x07, 0x57, 0x06, 0x57, 0x06, 0xa5, 0x05, 0xa1, 0x05, + 0xea, 0x04, 0xe8, 0x04, 0x26, 0x04, 0x24, 0x04, 0x65, 0x03, 0x61, 0x03, + 0x96, 0x02, 0x96, 0x02, 0xd1, 0x01, 0xcd, 0x01, 0x00, 0x01, 0xfe, 0x00, + 0x31, 0x00, 0x31, 0x00, 0x67, 0xff, 0x63, 0xff, 0x95, 0xfe, 0x95, 0xfe, + 0xcd, 0xfd, 0xcc, 0xfd, 0x03, 0xfd, 0x00, 0xfd, 0x3f, 0xfc, 0x3f, 0xfc, + 0x7e, 0xfb, 0x7b, 0xfb, 0xc3, 0xfa, 0xc0, 0xfa, 0x0d, 0xfa, 0x0b, 0xfa, + 0x5c, 0xf9, 0x5a, 0xf9, 0xb2, 0xf8, 0xaf, 0xf8, 0x11, 0xf8, 0x11, 0xf8, + 0x78, 0xf7, 0x76, 0xf7, 0xeb, 0xf6, 0xe8, 0xf6, 0x64, 0xf6, 0x64, 0xf6, + 0xe9, 0xf5, 0xe6, 0xf5, 0x78, 0xf5, 0x78, 0xf5, 0x15, 0xf5, 0x11, 0xf5, + 0xbd, 0xf4, 0xbb, 0xf4, 0x70, 0xf4, 0x6c, 0xf4, 0x32, 0xf4, 0x32, 0xf4, + 0x01, 0xf4, 0xfd, 0xf3, 0xdf, 0xf3, 0xdd, 0xf3, 0xca, 0xf3, 0xc7, 0xf3, + 0xc5, 0xf3, 0xc2, 0xf3, 0xce, 0xf3, 0xcc, 0xf3, 0xe7, 0xf3, 0xe4, 0xf3, + 0x11, 0xf4, 0x0f, 0xf4, 0x49, 0xf4, 0x45, 0xf4, 0x8e, 0xf4, 0x8c, 0xf4, + 0xe5, 0xf4, 0xe0, 0xf4, 0x47, 0xf5, 0x46, 0xf5, 0xb8, 0xf5, 0xb4, 0xf5, + 0x37, 0xf6, 0x34, 0xf6, 0xbe, 0xf6, 0xbb, 0xf6, 0x52, 0xf7, 0x50, 0xf7, + 0xee, 0xf7, 0xea, 0xf7, 0x97, 0xf8, 0x95, 0xf8, 0x44, 0xf9, 0x40, 0xf9, + 0xfb, 0xf9, 0xf9, 0xf9, 0xb6, 0xfa, 0xb4, 0xfa, 0x79, 0xfb, 0x76, 0xfb, + 0x3e, 0xfc, 0x3c, 0xfc, 0x08, 0xfd, 0x02, 0xfd, 0xd1, 0xfd, 0xd2, 0xfd, + 0xa1, 0xfe, 0x9c, 0xfe, 0x6b, 0xff, 0x6c, 0xff, 0x3a, 0x00, 0x35, 0x00, + 0x06, 0x01, 0x06, 0x01, 0xcf, 0x01, 0xcc, 0x01, 0x98, 0x02, 0x96, 0x02, + 0x5a, 0x03, 0x58, 0x03, 0x1b, 0x04, 0x1a, 0x04, 0xd7, 0x04, 0xd5, 0x04, + 0x8b, 0x05, 0x89, 0x05, 0x39, 0x06, 0x39, 0x06, 0xe2, 0x06, 0xe0, 0x06, + 0x82, 0x07, 0x80, 0x07, 0x19, 0x08, 0x18, 0x08, 0xad, 0x08, 0xa8, 0x08, + 0x2c, 0x09, 0x2c, 0x09, 0xad, 0x09, 0xab, 0x09, 0x1c, 0x0a, 0x19, 0x0a, + 0x7f, 0x0a, 0x7f, 0x0a, 0xda, 0x0a, 0xd6, 0x0a, 0x25, 0x0b, 0x24, 0x0b, + 0x66, 0x0b, 0x64, 0x0b, 0x97, 0x0b, 0x96, 0x0b, 0xbd, 0x0b, 0xba, 0x0b, + 0xd1, 0x0b, 0xcf, 0x0b, 0xda, 0x0b, 0xd8, 0x0b, 0xd4, 0x0b, 0xd2, 0x0b, + 0xbb, 0x0b, 0xbb, 0x0b, 0x97, 0x0b, 0x94, 0x0b, 0x60, 0x0b, 0x60, 0x0b, + 0x1c, 0x0b, 0x1a, 0x0b, 0xc9, 0x0a, 0xc7, 0x0a, 0x66, 0x0a, 0x67, 0x0a, + 0xfb, 0x09, 0xf8, 0x09, 0x7d, 0x09, 0x7c, 0x09, 0xf8, 0x08, 0xf6, 0x08, + 0x65, 0x08, 0x64, 0x08, 0xcb, 0x07, 0xc9, 0x07, 0x24, 0x07, 0x25, 0x07, + 0x77, 0x06, 0x73, 0x06, 0xc2, 0x05, 0xc1, 0x05, 0x05, 0x05, 0x02, 0x05, + 0x47, 0x04, 0x43, 0x04, 0x80, 0x03, 0x80, 0x03, 0xb9, 0x02, 0xb7, 0x02, + 0xef, 0x01, 0xec, 0x01, 0x21, 0x01, 0x1e, 0x01, 0x56, 0x00, 0x53, 0x00, + 0x88, 0xff, 0x85, 0xff, 0xbb, 0xfe, 0xba, 0xfe, 0xf5, 0xfd, 0xf1, 0xfd, + 0x2b, 0xfd, 0x29, 0xfd, 0x6b, 0xfc, 0x69, 0xfc, 0xab, 0xfb, 0xa8, 0xfb, + 0xf1, 0xfa, 0xf0, 0xfa, 0x3d, 0xfa, 0x3c, 0xfa, 0x90, 0xf9, 0x8e, 0xf9, + 0xea, 0xf8, 0xe8, 0xf8, 0x4a, 0xf8, 0x48, 0xf8, 0xb5, 0xf7, 0xb3, 0xf7, + 0x29, 0xf7, 0x27, 0xf7, 0xa3, 0xf6, 0xa2, 0xf6, 0x2d, 0xf6, 0x2b, 0xf6, + 0xbd, 0xf5, 0xbb, 0xf5, 0x5d, 0xf5, 0x5c, 0xf5, 0x05, 0xf5, 0x02, 0xf5, + 0xbb, 0xf4, 0xbb, 0xf4, 0x7e, 0xf4, 0x7b, 0xf4, 0x4f, 0xf4, 0x4c, 0xf4, + 0x2e, 0xf4, 0x2d, 0xf4, 0x1e, 0xf4, 0x1a, 0xf4, 0x17, 0xf4, 0x15, 0xf4, + 0x24, 0xf4, 0x21, 0xf4, 0x3c, 0xf4, 0x3b, 0xf4, 0x66, 0xf4, 0x62, 0xf4, + 0x9c, 0xf4, 0x9c, 0xf4, 0xe3, 0xf4, 0xdf, 0xf4, 0x3a, 0xf5, 0x38, 0xf5, + 0x9c, 0xf5, 0x99, 0xf5, 0x0e, 0xf6, 0x0b, 0xf6, 0x8c, 0xf6, 0x8a, 0xf6, + 0x13, 0xf7, 0x13, 0xf7, 0xac, 0xf7, 0xa6, 0xf7, 0x45, 0xf8, 0x45, 0xf8, + 0xf0, 0xf8, 0xee, 0xf8, 0x9f, 0xf9, 0x9c, 0xf9, 0x54, 0xfa, 0x53, 0xfa, + 0x14, 0xfb, 0x0f, 0xfb, 0xd3, 0xfb, 0xd3, 0xfb, 0x9e, 0xfc, 0x9b, 0xfc, + 0x67, 0xfd, 0x65, 0xfd, 0x33, 0xfe, 0x34, 0xfe, 0x04, 0xff, 0xff, 0xfe, + 0xd3, 0xff, 0xd4, 0xff, 0xa3, 0x00, 0x9f, 0x00, 0x70, 0x01, 0x6f, 0x01, + 0x39, 0x02, 0x37, 0x02, 0x05, 0x03, 0x02, 0x03, 0xcb, 0x03, 0xc9, 0x03, + 0x8b, 0x04, 0x89, 0x04, 0x49, 0x05, 0x46, 0x05, 0xfe, 0x05, 0xfd, 0x05, + 0xae, 0x06, 0xaf, 0x06, 0x5a, 0x07, 0x54, 0x07, 0xf8, 0x07, 0xf9, 0x07, + 0x93, 0x08, 0x8f, 0x08, 0x20, 0x09, 0x1f, 0x09, 0xa8, 0x09, 0xa5, 0x09, + 0x22, 0x0a, 0x1f, 0x0a, 0x90, 0x0a, 0x8f, 0x0a, 0xf6, 0x0a, 0xf3, 0x0a, + 0x4d, 0x0b, 0x4a, 0x0b, 0x97, 0x0b, 0x97, 0x0b, 0xd4, 0x0b, 0xd2, 0x0b, + 0x04, 0x0c, 0x01, 0x0c, 0x24, 0x0c, 0x22, 0x0c, 0x39, 0x0c, 0x37, 0x0c, + 0x3e, 0x0c, 0x3a, 0x0c, 0x30, 0x0c, 0x31, 0x0c, 0x19, 0x0c, 0x15, 0x0c, + 0xeb, 0x0b, 0xec, 0x0b, 0xb3, 0x0b, 0xb0, 0x0b, 0x6b, 0x0b, 0x6a, 0x0b, + 0x14, 0x0b, 0x12, 0x0b, 0xae, 0x0a, 0xab, 0x0a, 0x3c, 0x0a, 0x3b, 0x0a, + 0xbd, 0x09, 0xbb, 0x09, 0x36, 0x09, 0x33, 0x09, 0x9e, 0x08, 0x9c, 0x08, + 0x02, 0x08, 0x01, 0x08, 0x58, 0x07, 0x55, 0x07, 0xa7, 0x06, 0xa8, 0x06, + 0xf3, 0x05, 0xf0, 0x05, 0x33, 0x05, 0x34, 0x05, 0x75, 0x04, 0x70, 0x04, + 0xab, 0x03, 0xab, 0x03, 0xe5, 0x02, 0xe2, 0x02, 0x18, 0x02, 0x18, 0x02, + 0x4b, 0x01, 0x49, 0x01, 0x80, 0x00, 0x7d, 0x00, 0xb3, 0xff, 0xb1, 0xff, + 0xe8, 0xfe, 0xe4, 0xfe, 0x20, 0xfe, 0x1f, 0xfe, 0x5b, 0xfd, 0x57, 0xfd, + 0x97, 0xfc, 0x95, 0xfc, 0xd9, 0xfb, 0xd7, 0xfb, 0x1f, 0xfb, 0x1c, 0xfb, + 0x6d, 0xfa, 0x6a, 0xfa, 0xbe, 0xf9, 0xbc, 0xf9, 0x19, 0xf9, 0x17, 0xf9, + 0x7a, 0xf8, 0x78, 0xf8, 0xe7, 0xf7, 0xe5, 0xf7, 0x59, 0xf7, 0x55, 0xf7, + 0xd6, 0xf6, 0xd5, 0xf6, 0x5f, 0xf6, 0x5b, 0xf6, 0xef, 0xf5, 0xee, 0xf5, + 0x90, 0xf5, 0x8d, 0xf5, 0x36, 0xf5, 0x34, 0xf5, 0xee, 0xf4, 0xeb, 0xf4, + 0xb1, 0xf4, 0xb0, 0xf4, 0x82, 0xf4, 0x7e, 0xf4, 0x61, 0xf4, 0x5f, 0xf4, + 0x4f, 0xf4, 0x4c, 0xf4, 0x4c, 0xf4, 0x48, 0xf4, 0x55, 0xf4, 0x55, 0xf4, + 0x70, 0xf4, 0x6a, 0xf4, 0x96, 0xf4, 0x96, 0xf4, 0xce, 0xf4, 0xca, 0xf4, + 0x17, 0xf5, 0x14, 0xf5, 0x68, 0xf5, 0x66, 0xf5, 0xcf, 0xf5, 0xcc, 0xf5, + 0x3c, 0xf6, 0x3b, 0xf6, 0xba, 0xf6, 0xb8, 0xf6, 0x46, 0xf7, 0x44, 0xf7, + 0xd8, 0xf7, 0xd6, 0xf7, 0x7a, 0xf8, 0x78, 0xf8, 0x1e, 0xf9, 0x1c, 0xf9, + 0xd0, 0xf9, 0xcd, 0xf9, 0x86, 0xfa, 0x85, 0xfa, 0x43, 0xfb, 0x3f, 0xfb, + 0x05, 0xfc, 0x04, 0xfc, 0xcc, 0xfc, 0xc8, 0xfc, 0x96, 0xfd, 0x94, 0xfd, + 0x61, 0xfe, 0x5f, 0xfe, 0x32, 0xff, 0x2d, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xcb, 0x00, 0xc9, 0x00, 0x99, 0x01, 0x96, 0x01, 0x61, 0x02, 0x60, 0x02, + 0x29, 0x03, 0x26, 0x03, 0xed, 0x03, 0xeb, 0x03, 0xac, 0x04, 0xa9, 0x04, + 0x68, 0x05, 0x65, 0x05, 0x18, 0x06, 0x16, 0x06, 0xc6, 0x06, 0xc5, 0x06, + 0x6e, 0x07, 0x6a, 0x07, 0x09, 0x08, 0x09, 0x08, 0xa1, 0x08, 0x9e, 0x08, + 0x2a, 0x09, 0x2a, 0x09, 0xb2, 0x09, 0xac, 0x09, 0x25, 0x0a, 0x25, 0x0a, + 0x93, 0x0a, 0x8e, 0x0a, 0xf3, 0x0a, 0xf3, 0x0a, 0x44, 0x0b, 0x42, 0x0b, + 0x8e, 0x0b, 0x8c, 0x0b, 0xc8, 0x0b, 0xc4, 0x0b, 0xf0, 0x0b, 0xef, 0x0b, + 0x11, 0x0c, 0x0e, 0x0c, 0x1e, 0x0c, 0x1a, 0x0c, 0x21, 0x0c, 0x20, 0x0c, + 0x12, 0x0c, 0x0e, 0x0c, 0xf3, 0x0b, 0xf2, 0x0b, 0xc5, 0x0b, 0xc2, 0x0b, + 0x88, 0x0b, 0x86, 0x0b, 0x3e, 0x0b, 0x3b, 0x0b, 0xe1, 0x0a, 0xde, 0x0a, + 0x7b, 0x0a, 0x78, 0x0a, 0x05, 0x0a, 0x03, 0x0a, 0x83, 0x09, 0x82, 0x09, + 0xf8, 0x08, 0xf5, 0x08, 0x60, 0x08, 0x5f, 0x08, 0xbf, 0x07, 0xbd, 0x07, + 0x17, 0x07, 0x13, 0x07, 0x62, 0x06, 0x61, 0x06, 0xab, 0x05, 0xa7, 0x05, + 0xea, 0x04, 0xea, 0x04, 0x27, 0x04, 0x22, 0x04, 0x5d, 0x03, 0x5e, 0x03, + 0x93, 0x02, 0x8e, 0x02, 0xc7, 0x01, 0xc5, 0x01, 0xf5, 0x00, 0xf3, 0x00, + 0x28, 0x00, 0x25, 0x00, 0x59, 0xff, 0x57, 0xff, 0x8c, 0xfe, 0x89, 0xfe, + 0xc1, 0xfd, 0xbe, 0xfd, 0xf9, 0xfc, 0xf6, 0xfc, 0x36, 0xfc, 0x33, 0xfc, + 0x75, 0xfb, 0x72, 0xfb, 0xbb, 0xfa, 0xb8, 0xfa, 0x05, 0xfa, 0x02, 0xfa, + 0x57, 0xf9, 0x55, 0xf9, 0xb0, 0xf8, 0xad, 0xf8, 0x12, 0xf8, 0x0f, 0xf8, + 0x7b, 0xf7, 0x7a, 0xf7, 0xf0, 0xf6, 0xeb, 0xf6, 0x6b, 0xf6, 0x6a, 0xf6, + 0xf4, 0xf5, 0xf0, 0xf5, 0x87, 0xf5, 0x84, 0xf5, 0x26, 0xf5, 0x23, 0xf5, + 0xd2, 0xf4, 0xcc, 0xf4, 0x88, 0xf4, 0x86, 0xf4, 0x4d, 0xf4, 0x4a, 0xf4, + 0x21, 0xf4, 0x1f, 0xf4, 0x04, 0xf4, 0xfe, 0xf3, 0xf2, 0xf3, 0xf2, 0xf3, + 0xf3, 0xf3, 0xec, 0xf3, 0x00, 0xf4, 0x00, 0xf4, 0x20, 0xf4, 0x1b, 0xf4, + 0x4c, 0xf4, 0x4a, 0xf4, 0x8a, 0xf4, 0x87, 0xf4, 0xd4, 0xf4, 0xd0, 0xf4, + 0x2d, 0xf5, 0x2c, 0xf5, 0x95, 0xf5, 0x90, 0xf5, 0x0a, 0xf6, 0x07, 0xf6, + 0x8a, 0xf6, 0x87, 0xf6, 0x17, 0xf7, 0x15, 0xf7, 0xaf, 0xf7, 0xab, 0xf7, + 0x50, 0xf8, 0x50, 0xf8, 0xfb, 0xf8, 0xf5, 0xf8, 0xab, 0xf9, 0xab, 0xf9, + 0x65, 0xfa, 0x61, 0xfa, 0x23, 0xfb, 0x20, 0xfb, 0xe4, 0xfb, 0xe2, 0xfb, + 0xae, 0xfc, 0xaa, 0xfc, 0x76, 0xfd, 0x73, 0xfd, 0x44, 0xfe, 0x40, 0xfe, + 0x0f, 0xff, 0x0d, 0xff, 0xdc, 0xff, 0xd9, 0xff, 0xa9, 0x00, 0xa7, 0x00, + 0x73, 0x01, 0x6e, 0x01, 0x3c, 0x02, 0x39, 0x02, 0x01, 0x03, 0xfd, 0x02, + 0xc2, 0x03, 0xbe, 0x03, 0x7f, 0x04, 0x7b, 0x04, 0x37, 0x05, 0x31, 0x05, + 0xe5, 0x05, 0xe4, 0x05, 0x93, 0x06, 0x8e, 0x06, 0x34, 0x07, 0x30, 0x07, + 0xcf, 0x07, 0xcc, 0x07, 0x62, 0x08, 0x5f, 0x08, 0xe9, 0x08, 0xe5, 0x08, + 0x6b, 0x09, 0x66, 0x09, 0xde, 0x09, 0xdb, 0x09, 0x47, 0x0a, 0x44, 0x0a, + 0xa6, 0x0a, 0xa2, 0x0a, 0xf5, 0x0a, 0xf1, 0x0a, 0x39, 0x0b, 0x36, 0x0b, + 0x71, 0x0b, 0x6d, 0x0b, 0x99, 0x0b, 0x96, 0x0b, 0xb6, 0x0b, 0xb1, 0x0b, + 0xc1, 0x0b, 0xbe, 0x0b, 0xc1, 0x0b, 0xbb, 0x0b, 0xaf, 0x0b, 0xac, 0x0b, + 0x91, 0x0b, 0x8d, 0x0b, 0x62, 0x0b, 0x5e, 0x0b, 0x20, 0x0b, 0x1d, 0x0b, + 0xd5, 0x0a, 0xd0, 0x0a, 0x76, 0x0a, 0x72, 0x0a, 0x11, 0x0a, 0x0d, 0x0a, + 0x95, 0x09, 0x92, 0x09, 0x15, 0x09, 0x13, 0x09, 0x85, 0x08, 0x83, 0x08, + 0xed, 0x07, 0xe9, 0x07, 0x4c, 0x07, 0x4a, 0x07, 0x9d, 0x06, 0x9a, 0x06, + 0xed, 0x05, 0xeb, 0x05, 0x30, 0x05, 0x2c, 0x05, 0x72, 0x04, 0x6f, 0x04, + 0xac, 0x03, 0xa9, 0x03, 0xe2, 0x02, 0xdf, 0x02, 0x18, 0x02, 0x14, 0x02, + 0x48, 0x01, 0x46, 0x01, 0x7a, 0x00, 0x78, 0x00, 0xaa, 0xff, 0xa7, 0xff, + 0xda, 0xfe, 0xd7, 0xfe, 0x11, 0xfe, 0x0d, 0xfe, 0x42, 0xfd, 0x41, 0xfd, + 0x80, 0xfc, 0x7a, 0xfc, 0xb7, 0xfb, 0xb8, 0xfb, 0xfc, 0xfa, 0xf7, 0xfa, + 0x43, 0xfa, 0x40, 0xfa, 0x8e, 0xf9, 0x8c, 0xf9, 0xe5, 0xf8, 0xe0, 0xf8, + 0x3d, 0xf8, 0x3b, 0xf8, 0xa3, 0xf7, 0xa0, 0xf7, 0x0e, 0xf7, 0x0b, 0xf7, + 0x86, 0xf6, 0x83, 0xf6, 0x07, 0xf6, 0x04, 0xf6, 0x94, 0xf5, 0x8f, 0xf5, + 0x2a, 0xf5, 0x29, 0xf5, 0xcd, 0xf4, 0xcb, 0xf4, 0x7f, 0xf4, 0x7c, 0xf4, + 0x3a, 0xf4, 0x37, 0xf4, 0x05, 0xf4, 0x02, 0xf4, 0xdd, 0xf3, 0xdc, 0xf3, + 0xc7, 0xf3, 0xc2, 0xf3, 0xbe, 0xf3, 0xba, 0xf3, 0xc0, 0xf3, 0xc0, 0xf3, + 0xdc, 0xf3, 0xd6, 0xf3, 0xfb, 0xf3, 0xfa, 0xf3, 0x33, 0xf4, 0x30, 0xf4, + 0x74, 0xf4, 0x70, 0xf4, 0xc7, 0xf4, 0xc4, 0xf4, 0x28, 0xf5, 0x25, 0xf5, + 0x93, 0xf5, 0x8e, 0xf5, 0x11, 0xf6, 0x0e, 0xf6, 0x93, 0xf6, 0x90, 0xf6, + 0x29, 0xf7, 0x27, 0xf7, 0xc3, 0xf7, 0xc0, 0xf7, 0x67, 0xf8, 0x64, 0xf8, + 0x17, 0xf9, 0x15, 0xf9, 0xcb, 0xf9, 0xc6, 0xf9, 0x86, 0xfa, 0x84, 0xfa, + 0x46, 0xfb, 0x42, 0xfb, 0x0d, 0xfc, 0x0b, 0xfc, 0xd5, 0xfc, 0xd2, 0xfc, + 0xa0, 0xfd, 0xa0, 0xfd, 0x70, 0xfe, 0x6c, 0xfe, 0x3b, 0xff, 0x3a, 0xff, + 0x0b, 0x00, 0x09, 0x00, 0xd6, 0x00, 0xd2, 0x00, 0xa4, 0x01, 0xa0, 0x01, + 0x69, 0x02, 0x68, 0x02, 0x31, 0x03, 0x2e, 0x03, 0xf1, 0x03, 0xf0, 0x03, + 0xaf, 0x04, 0xaa, 0x04, 0x65, 0x05, 0x63, 0x05, 0x14, 0x06, 0x14, 0x06, + 0xc0, 0x06, 0xbb, 0x06, 0x61, 0x07, 0x60, 0x07, 0xfd, 0x07, 0xf9, 0x07, + 0x8e, 0x08, 0x8c, 0x08, 0x12, 0x09, 0x12, 0x09, 0x94, 0x09, 0x90, 0x09, + 0x05, 0x0a, 0x04, 0x0a, 0x6e, 0x0a, 0x6b, 0x0a, 0xc9, 0x0a, 0xc6, 0x0a, + 0x16, 0x0b, 0x16, 0x0b, 0x5b, 0x0b, 0x57, 0x0b, 0x8d, 0x0b, 0x8c, 0x0b, + 0xb4, 0x0b, 0xb1, 0x0b, 0xcb, 0x0b, 0xc9, 0x0b, 0xd7, 0x0b, 0xd4, 0x0b, + 0xd0, 0x0b, 0xce, 0x0b, 0xbd, 0x0b, 0xba, 0x0b, 0x99, 0x0b, 0x98, 0x0b, + 0x66, 0x0b, 0x60, 0x0b, 0x22, 0x0b, 0x21, 0x0b, 0xd1, 0x0a, 0xce, 0x0a, + 0x72, 0x0a, 0x70, 0x0a, 0x04, 0x0a, 0x02, 0x0a, 0x89, 0x09, 0x86, 0x09, + 0x04, 0x09, 0x03, 0x09, 0x74, 0x08, 0x70, 0x08, 0xd7, 0x07, 0xd7, 0x07, + 0x34, 0x07, 0x32, 0x07, 0x87, 0x06, 0x84, 0x06, 0xd0, 0x05, 0xcf, 0x05, + 0x16, 0x05, 0x13, 0x05, 0x55, 0x04, 0x53, 0x04, 0x8f, 0x03, 0x8d, 0x03, + 0xc7, 0x02, 0xc4, 0x02, 0xfa, 0x01, 0xf9, 0x01, 0x2e, 0x01, 0x2b, 0x01, + 0x61, 0x00, 0x5e, 0x00, 0x92, 0xff, 0x91, 0xff, 0xc7, 0xfe, 0xc3, 0xfe, + 0xfd, 0xfd, 0xfc, 0xfd, 0x35, 0xfd, 0x31, 0xfd, 0x70, 0xfc, 0x6e, 0xfc, + 0xb1, 0xfb, 0xaf, 0xfb, 0xf5, 0xfa, 0xf2, 0xfa, 0x44, 0xfa, 0x40, 0xfa, + 0x91, 0xf9, 0x8f, 0xf9, 0xec, 0xf8, 0xe9, 0xf8, 0x4a, 0xf8, 0x48, 0xf8, + 0xb4, 0xf7, 0xb1, 0xf7, 0x26, 0xf7, 0x25, 0xf7, 0xa1, 0xf6, 0x9e, 0xf6, + 0x28, 0xf6, 0x26, 0xf6, 0xb8, 0xf5, 0xb5, 0xf5, 0x56, 0xf5, 0x54, 0xf5, + 0xfe, 0xf4, 0xfc, 0xf4, 0xb5, 0xf4, 0xb2, 0xf4, 0x77, 0xf4, 0x75, 0xf4, + 0x47, 0xf4, 0x42, 0xf4, 0x26, 0xf4, 0x23, 0xf4, 0x14, 0xf4, 0x12, 0xf4, + 0x0f, 0xf4, 0x0c, 0xf4, 0x19, 0xf4, 0x17, 0xf4, 0x34, 0xf4, 0x31, 0xf4, + 0x5c, 0xf4, 0x5a, 0xf4, 0x96, 0xf4, 0x92, 0xf4, 0xdb, 0xf4, 0xd9, 0xf4, + 0x32, 0xf5, 0x2f, 0xf5, 0x95, 0xf5, 0x92, 0xf5, 0x05, 0xf6, 0x03, 0xf6, + 0x85, 0xf6, 0x85, 0xf6, 0x10, 0xf7, 0x0a, 0xf7, 0xa3, 0xf7, 0xa3, 0xf7, + 0x44, 0xf8, 0x40, 0xf8, 0xec, 0xf8, 0xe8, 0xf8, 0x9d, 0xf9, 0x9b, 0xf9, + 0x54, 0xfa, 0x4f, 0xfa, 0x10, 0xfb, 0x10, 0xfb, 0xd7, 0xfb, 0xd3, 0xfb, + 0x9b, 0xfc, 0x99, 0xfc, 0x69, 0xfd, 0x65, 0xfd, 0x37, 0xfe, 0x35, 0xfe, + 0x05, 0xff, 0x01, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xa6, 0x00, 0xa4, 0x00, + 0x75, 0x01, 0x71, 0x01, 0x41, 0x02, 0x40, 0x02, 0x0a, 0x03, 0x05, 0x03, + 0xcf, 0x03, 0xce, 0x03, 0x93, 0x04, 0x91, 0x04, 0x4e, 0x05, 0x4c, 0x05, + 0x06, 0x06, 0x02, 0x06, 0xb3, 0x06, 0xb2, 0x06, 0x60, 0x07, 0x5c, 0x07, + 0xfe, 0x07, 0xfc, 0x07, 0x97, 0x08, 0x95, 0x08, 0x28, 0x09, 0x24, 0x09, + 0xab, 0x09, 0xab, 0x09, 0x29, 0x0a, 0x25, 0x0a, 0x96, 0x0a, 0x95, 0x0a, + 0xfa, 0x0a, 0xf6, 0x0a, 0x50, 0x0b, 0x4f, 0x0b, 0x9d, 0x0b, 0x99, 0x0b, + 0xd6, 0x0b, 0xd5, 0x0b, 0x06, 0x0c, 0x04, 0x0c, 0x24, 0x0c, 0x23, 0x0c, + 0x38, 0x0c, 0x36, 0x0c, 0x3b, 0x0c, 0x37, 0x0c, 0x2c, 0x0c, 0x2b, 0x0c, + 0x13, 0x0c, 0x10, 0x0c, 0xe6, 0x0b, 0xe3, 0x0b, 0xa9, 0x0b, 0xa8, 0x0b, + 0x60, 0x0b, 0x5d, 0x0b, 0x05, 0x0b, 0x04, 0x0b, 0xa1, 0x0a, 0x9d, 0x0a, + 0x29, 0x0a, 0x2a, 0x0a, 0xab, 0x09, 0xa8, 0x09, 0x1d, 0x09, 0x1c, 0x09, + 0x88, 0x08, 0x86, 0x08, 0xe8, 0x07, 0xe6, 0x07, 0x3e, 0x07, 0x3c, 0x07, + 0x8e, 0x06, 0x8b, 0x06, 0xd4, 0x05, 0xd2, 0x05, 0x16, 0x05, 0x15, 0x05, + 0x52, 0x04, 0x50, 0x04, 0x8b, 0x03, 0x8a, 0x03, 0xc1, 0x02, 0xbe, 0x02, + 0xf4, 0x01, 0xf3, 0x01, 0x29, 0x01, 0x26, 0x01, 0x5a, 0x00, 0x5a, 0x00, + 0x8e, 0xff, 0x8a, 0xff, 0xc5, 0xfe, 0xc3, 0xfe, 0xf9, 0xfd, 0xf7, 0xfd, + 0x35, 0xfd, 0x32, 0xfd, 0x70, 0xfc, 0x70, 0xfc, 0xb5, 0xfb, 0xb0, 0xfb, + 0xfb, 0xfa, 0xfa, 0xfa, 0x48, 0xfa, 0x44, 0xfa, 0x9d, 0xf9, 0x99, 0xf9, + 0xf6, 0xf8, 0xf3, 0xf8, 0x59, 0xf8, 0x58, 0xf8, 0xc6, 0xf7, 0xc2, 0xf7, + 0x37, 0xf7, 0x37, 0xf7, 0xb9, 0xf6, 0xb6, 0xf6, 0x41, 0xf6, 0x3e, 0xf6, + 0xd5, 0xf5, 0xd6, 0xf5, 0x77, 0xf5, 0x73, 0xf5, 0x22, 0xf5, 0x21, 0xf5, + 0xdc, 0xf4, 0xd9, 0xf4, 0xa2, 0xf4, 0xa0, 0xf4, 0x74, 0xf4, 0x73, 0xf4, + 0x58, 0xf4, 0x55, 0xf4, 0x49, 0xf4, 0x47, 0xf4, 0x47, 0xf4, 0x44, 0xf4, + 0x55, 0xf4, 0x53, 0xf4, 0x74, 0xf4, 0x72, 0xf4, 0x9e, 0xf4, 0x9b, 0xf4, + 0xdd, 0xf4, 0xda, 0xf4, 0x26, 0xf5, 0x23, 0xf5, 0x7f, 0xf5, 0x7c, 0xf5, + 0xe5, 0xf5, 0xe4, 0xf5, 0x5a, 0xf6, 0x57, 0xf6, 0xdd, 0xf6, 0xd9, 0xf6, + 0x68, 0xf7, 0x64, 0xf7, 0x01, 0xf8, 0xfc, 0xf7, 0xa2, 0xf8, 0xa0, 0xf8, + 0x4b, 0xf9, 0x47, 0xf9, 0xff, 0xf9, 0xfc, 0xf9, 0xb6, 0xfa, 0xb2, 0xfa, + 0x76, 0xfb, 0x73, 0xfb, 0x3a, 0xfc, 0x37, 0xfc, 0x01, 0xfd, 0xff, 0xfc, + 0xcf, 0xfd, 0xcb, 0xfd, 0x98, 0xfe, 0x98, 0xfe, 0x6c, 0xff, 0x66, 0xff, + 0x38, 0x00, 0x36, 0x00, 0x0a, 0x01, 0x05, 0x01, 0xd3, 0x01, 0xd1, 0x01, + 0x9e, 0x02, 0x99, 0x02, 0x66, 0x03, 0x62, 0x03, 0x27, 0x04, 0x25, 0x04, + 0xe9, 0x04, 0xe4, 0x04, 0x9f, 0x05, 0x9c, 0x05, 0x55, 0x06, 0x52, 0x06, + 0xff, 0x06, 0xfb, 0x06, 0xa4, 0x07, 0xa1, 0x07, 0x41, 0x08, 0x3e, 0x08, + 0xd3, 0x08, 0xcf, 0x08, 0x5c, 0x09, 0x5a, 0x09, 0xdc, 0x09, 0xd7, 0x09, + 0x51, 0x0a, 0x4f, 0x0a, 0xba, 0x0a, 0xb6, 0x0a, 0x16, 0x0b, 0x14, 0x0b, + 0x68, 0x0b, 0x63, 0x0b, 0xa9, 0x0b, 0xa6, 0x0b, 0xe0, 0x0b, 0xdb, 0x0b, + 0x07, 0x0c, 0x05, 0x0c, 0x20, 0x0c, 0x1c, 0x0c, 0x2b, 0x0c, 0x27, 0x0c, + 0x27, 0x0c, 0x24, 0x0c, 0x13, 0x0c, 0x0f, 0x0c, 0xef, 0x0b, 0xeb, 0x0b, + 0xbd, 0x0b, 0xb8, 0x0b, 0x79, 0x0b, 0x76, 0x0b, 0x29, 0x0b, 0x25, 0x0b, + 0xca, 0x0a, 0xc7, 0x0a, 0x5d, 0x0a, 0x59, 0x0a, 0xe2, 0x09, 0xe0, 0x09, + 0x5c, 0x09, 0x59, 0x09, 0xce, 0x08, 0xca, 0x08, 0x30, 0x08, 0x2e, 0x08, + 0x8d, 0x07, 0x8a, 0x07, 0xdf, 0x06, 0xdc, 0x06, 0x29, 0x06, 0x27, 0x06, + 0x70, 0x05, 0x6b, 0x05, 0xab, 0x04, 0xa9, 0x04, 0xe9, 0x03, 0xe3, 0x03, + 0x1a, 0x03, 0x18, 0x03, 0x50, 0x02, 0x4d, 0x02, 0x82, 0x01, 0x7d, 0x01, + 0xb0, 0x00, 0xb0, 0x00, 0xe6, 0xff, 0xe0, 0xff, 0x13, 0xff, 0x10, 0xff, + 0x49, 0xfe, 0x45, 0xfe, 0x7b, 0xfd, 0x78, 0xfd, 0xb6, 0xfc, 0xb2, 0xfc, + 0xf4, 0xfb, 0xf2, 0xfb, 0x32, 0xfb, 0x30, 0xfb, 0x7e, 0xfa, 0x7a, 0xfa, + 0xc9, 0xf9, 0xc7, 0xf9, 0x20, 0xf9, 0x1c, 0xf9, 0x77, 0xf8, 0x76, 0xf8, + 0xdf, 0xf7, 0xda, 0xf7, 0x4a, 0xf7, 0x4a, 0xf7, 0xc1, 0xf6, 0xbd, 0xf6, + 0x43, 0xf6, 0x40, 0xf6, 0xcf, 0xf5, 0xcc, 0xf5, 0x65, 0xf5, 0x62, 0xf5, + 0x09, 0xf5, 0x06, 0xf5, 0xba, 0xf4, 0xb6, 0xf4, 0x77, 0xf4, 0x73, 0xf4, + 0x42, 0xf4, 0x3f, 0xf4, 0x1a, 0xf4, 0x16, 0xf4, 0x02, 0xf4, 0xff, 0xf3, + 0xf8, 0xf3, 0xf5, 0xf3, 0xfc, 0xf3, 0xf7, 0xf3, 0x13, 0xf4, 0x11, 0xf4, + 0x36, 0xf4, 0x32, 0xf4, 0x69, 0xf4, 0x68, 0xf4, 0xae, 0xf4, 0xa8, 0xf4, + 0xfc, 0xf4, 0xfa, 0xf4, 0x60, 0xf5, 0x5d, 0xf5, 0xca, 0xf5, 0xc6, 0xf5, + 0x46, 0xf6, 0x44, 0xf6, 0xcd, 0xf6, 0xc9, 0xf6, 0x5c, 0xf7, 0x5b, 0xf7, + 0xfb, 0xf7, 0xf6, 0xf7, 0x9e, 0xf8, 0x9c, 0xf8, 0x4c, 0xf9, 0x49, 0xf9, + 0x02, 0xfa, 0xfe, 0xf9, 0xbb, 0xfa, 0xb9, 0xfa, 0x7b, 0xfb, 0x79, 0xfb, + 0x42, 0xfc, 0x40, 0xfc, 0x0a, 0xfd, 0x06, 0xfd, 0xd6, 0xfd, 0xd5, 0xfd, + 0xa6, 0xfe, 0x9f, 0xfe, 0x6f, 0xff, 0x6f, 0xff, 0x41, 0x00, 0x3d, 0x00, + 0x07, 0x01, 0x04, 0x01, 0xd5, 0x01, 0xd3, 0x01, 0x99, 0x02, 0x96, 0x02, + 0x60, 0x03, 0x5e, 0x03, 0x1c, 0x04, 0x1b, 0x04, 0xd9, 0x04, 0xd6, 0x04, + 0x90, 0x05, 0x8c, 0x05, 0x3c, 0x06, 0x39, 0x06, 0xe6, 0x06, 0xe3, 0x06, + 0x83, 0x07, 0x82, 0x07, 0x1d, 0x08, 0x18, 0x08, 0xa9, 0x08, 0xa8, 0x08, + 0x2f, 0x09, 0x2a, 0x09, 0xa8, 0x09, 0xa6, 0x09, 0x18, 0x0a, 0x15, 0x0a, + 0x7b, 0x0a, 0x78, 0x0a, 0xd4, 0x0a, 0xd1, 0x0a, 0x1e, 0x0b, 0x1c, 0x0b, + 0x5d, 0x0b, 0x58, 0x0b, 0x8b, 0x0b, 0x8b, 0x0b, 0xaf, 0x0b, 0xac, 0x0b, + 0xc3, 0x0b, 0xc0, 0x0b, 0xc7, 0x0b, 0xc6, 0x0b, 0xc0, 0x0b, 0xbd, 0x0b, + 0xa8, 0x0b, 0xa5, 0x0b, 0x80, 0x0b, 0x7f, 0x0b, 0x49, 0x0b, 0x45, 0x0b, + 0x03, 0x0b, 0x00, 0x0b, 0xae, 0x0a, 0xab, 0x0a, 0x4a, 0x0a, 0x46, 0x0a, + 0xdc, 0x09, 0xd8, 0x09, 0x5d, 0x09, 0x5a, 0x09, 0xd6, 0x08, 0xd2, 0x08, + 0x41, 0x08, 0x40, 0x08, 0xa3, 0x07, 0x9e, 0x07, 0xfc, 0x06, 0xfa, 0x06, + 0x4a, 0x06, 0x46, 0x06, 0x94, 0x05, 0x91, 0x05, 0xd5, 0x04, 0xd2, 0x04, + 0x12, 0x04, 0x10, 0x04, 0x4c, 0x03, 0x49, 0x03, 0x7f, 0x02, 0x7c, 0x02, + 0xb2, 0x01, 0xaf, 0x01, 0xe3, 0x00, 0xde, 0x00, 0x13, 0x00, 0x10, 0x00, + 0x45, 0xff, 0x41, 0xff, 0x74, 0xfe, 0x71, 0xfe, 0xab, 0xfd, 0xa5, 0xfd, + 0xde, 0xfc, 0xdf, 0xfc, 0x1b, 0xfc, 0x15, 0xfc, 0x5a, 0xfb, 0x58, 0xfb, + 0x9d, 0xfa, 0x98, 0xfa, 0xe7, 0xf9, 0xe5, 0xf9, 0x35, 0xf9, 0x33, 0xf9, + 0x8e, 0xf8, 0x8c, 0xf8, 0xed, 0xf7, 0xeb, 0xf7, 0x58, 0xf7, 0x53, 0xf7, + 0xc8, 0xf6, 0xc6, 0xf6, 0x43, 0xf6, 0x3f, 0xf6, 0xca, 0xf5, 0xc6, 0xf5, + 0x5b, 0xf5, 0x59, 0xf5, 0xfa, 0xf4, 0xf6, 0xf4, 0xa3, 0xf4, 0xa1, 0xf4, + 0x5b, 0xf4, 0x56, 0xf4, 0x1e, 0xf4, 0x1a, 0xf4, 0xf2, 0xf3, 0xef, 0xf3, + 0xd1, 0xf3, 0xce, 0xf3, 0xc2, 0xf3, 0xbf, 0xf3, 0xc0, 0xf3, 0xbc, 0xf3, + 0xce, 0xf3, 0xcb, 0xf3, 0xec, 0xf3, 0xea, 0xf3, 0x19, 0xf4, 0x14, 0xf4, + 0x56, 0xf4, 0x54, 0xf4, 0xa0, 0xf4, 0x9b, 0xf4, 0xfc, 0xf4, 0xf8, 0xf4, + 0x63, 0xf5, 0x5e, 0xf5, 0xd5, 0xf5, 0xd3, 0xf5, 0x59, 0xf6, 0x54, 0xf6, + 0xe3, 0xf6, 0xe1, 0xf6, 0x7c, 0xf7, 0x78, 0xf7, 0x1c, 0xf8, 0x19, 0xf8, + 0xc5, 0xf8, 0xc4, 0xf8, 0x7a, 0xf9, 0x74, 0xf9, 0x30, 0xfa, 0x2f, 0xfa, + 0xf1, 0xfa, 0xed, 0xfa, 0xb5, 0xfb, 0xb0, 0xfb, 0x7b, 0xfc, 0x79, 0xfc, + 0x48, 0xfd, 0x44, 0xfd, 0x10, 0xfe, 0x0e, 0xfe, 0xe1, 0xfe, 0xde, 0xfe, + 0xaf, 0xff, 0xac, 0xff, 0x7d, 0x00, 0x79, 0x00, 0x48, 0x01, 0x45, 0x01, + 0x14, 0x02, 0x0f, 0x02, 0xd8, 0x02, 0xd6, 0x02, 0x9c, 0x03, 0x9a, 0x03, + 0x5d, 0x04, 0x56, 0x04, 0x13, 0x05, 0x12, 0x05, 0xca, 0x05, 0xc5, 0x05, + 0x75, 0x06, 0x73, 0x06, 0x1b, 0x07, 0x18, 0x07, 0xb8, 0x07, 0xb7, 0x07, + 0x4c, 0x08, 0x48, 0x08, 0xda, 0x08, 0xd8, 0x08, 0x5b, 0x09, 0x58, 0x09, + 0xd2, 0x09, 0xcf, 0x09, 0x3e, 0x0a, 0x3b, 0x0a, 0x9d, 0x0a, 0x9c, 0x0a, + 0xf3, 0x0a, 0xee, 0x0a, 0x39, 0x0b, 0x38, 0x0b, 0x74, 0x0b, 0x70, 0x0b, + 0x9e, 0x0b, 0x9e, 0x0b, 0xbf, 0x0b, 0xb9, 0x0b, 0xcb, 0x0b, 0xc8, 0x0b, + 0xcd, 0x0b, 0xcb, 0x0b, 0xbf, 0x0b, 0xbd, 0x0b, 0xa2, 0x0b, 0xa0, 0x0b, + 0x75, 0x0b, 0x73, 0x0b, 0x38, 0x0b, 0x35, 0x0b, 0xeb, 0x0a, 0xe9, 0x0a, + 0x93, 0x0a, 0x8f, 0x0a, 0x27, 0x0a, 0x26, 0x0a, 0xb7, 0x09, 0xb2, 0x09, + 0x33, 0x09, 0x32, 0x09, 0xa9, 0x08, 0xa5, 0x08, 0x10, 0x08, 0x0d, 0x08, + 0x70, 0x07, 0x6d, 0x07, 0xc5, 0x06, 0xc2, 0x06, 0x11, 0x06, 0x0f, 0x06, + 0x59, 0x05, 0x57, 0x05, 0x98, 0x04, 0x96, 0x04, 0xd7, 0x03, 0xd5, 0x03, + 0x0e, 0x03, 0x0b, 0x03, 0x45, 0x02, 0x43, 0x02, 0x77, 0x01, 0x74, 0x01, + 0xac, 0x00, 0xa8, 0x00, 0xdc, 0xff, 0xd8, 0xff, 0x0e, 0xff, 0x0d, 0xff, + 0x44, 0xfe, 0x41, 0xfe, 0x7a, 0xfd, 0x78, 0xfd, 0xb7, 0xfc, 0xb3, 0xfc, + 0xf2, 0xfb, 0xee, 0xfb, 0x35, 0xfb, 0x33, 0xfb, 0x80, 0xfa, 0x7b, 0xfa, + 0xcd, 0xf9, 0xcb, 0xf9, 0x24, 0xf9, 0x1f, 0xf9, 0x7e, 0xf8, 0x7c, 0xf8, + 0xe6, 0xf7, 0xe3, 0xf7, 0x53, 0xf7, 0x50, 0xf7, 0xcc, 0xf6, 0xcb, 0xf6, + 0x50, 0xf6, 0x4b, 0xf6, 0xdc, 0xf5, 0xda, 0xf5, 0x76, 0xf5, 0x70, 0xf5, + 0x19, 0xf5, 0x18, 0xf5, 0xca, 0xf4, 0xc5, 0xf4, 0x87, 0xf4, 0x85, 0xf4, + 0x54, 0xf4, 0x4f, 0xf4, 0x2a, 0xf4, 0x27, 0xf4, 0x16, 0xf4, 0x12, 0xf4, + 0x09, 0xf4, 0x08, 0xf4, 0x13, 0xf4, 0x0d, 0xf4, 0x25, 0xf4, 0x23, 0xf4, + 0x4a, 0xf4, 0x45, 0xf4, 0x7c, 0xf4, 0x7a, 0xf4, 0xbf, 0xf4, 0xba, 0xf4, + 0x0d, 0xf5, 0x0c, 0xf5, 0x6e, 0xf5, 0x6b, 0xf5, 0xdb, 0xf5, 0xd8, 0xf5, + 0x55, 0xf6, 0x4f, 0xf6, 0xdc, 0xf6, 0xda, 0xf6, 0x6b, 0xf7, 0x68, 0xf7, + 0x08, 0xf8, 0x03, 0xf8, 0xac, 0xf8, 0xaa, 0xf8, 0x5b, 0xf9, 0x57, 0xf9, + 0x11, 0xfa, 0x0e, 0xfa, 0xca, 0xfa, 0xc8, 0xfa, 0x8f, 0xfb, 0x89, 0xfb, + 0x51, 0xfc, 0x50, 0xfc, 0x1d, 0xfd, 0x1a, 0xfd, 0xeb, 0xfd, 0xe9, 0xfd, + 0xba, 0xfe, 0xb8, 0xfe, 0x89, 0xff, 0x85, 0xff, 0x58, 0x00, 0x56, 0x00, + 0x29, 0x01, 0x26, 0x01, 0xf3, 0x01, 0xf2, 0x01, 0xbf, 0x02, 0xbd, 0x02, + 0x88, 0x03, 0x83, 0x03, 0x4a, 0x04, 0x48, 0x04, 0x08, 0x05, 0x04, 0x05, + 0xbf, 0x05, 0xbc, 0x05, 0x74, 0x06, 0x71, 0x06, 0x1d, 0x07, 0x1a, 0x07, + 0xc2, 0x07, 0xbf, 0x07, 0x5c, 0x08, 0x59, 0x08, 0xf0, 0x08, 0xeb, 0x08, + 0x77, 0x09, 0x75, 0x09, 0xf5, 0x09, 0xf1, 0x09, 0x69, 0x0a, 0x66, 0x0a, + 0xcf, 0x0a, 0xce, 0x0a, 0x2b, 0x0b, 0x26, 0x0b, 0x77, 0x0b, 0x76, 0x0b, + 0xb9, 0x0b, 0xb7, 0x0b, 0xec, 0x0b, 0xe9, 0x0b, 0x11, 0x0c, 0x0d, 0x0c, + 0x26, 0x0c, 0x25, 0x0c, 0x2e, 0x0c, 0x2b, 0x0c, 0x29, 0x0c, 0x27, 0x0c, + 0x10, 0x0c, 0x0c, 0x0c, 0xea, 0x0b, 0xe8, 0x0b, 0xb3, 0x0b, 0xaf, 0x0b, + 0x6c, 0x0b, 0x6a, 0x0b, 0x1a, 0x0b, 0x16, 0x0b, 0xb6, 0x0a, 0xb3, 0x0a, + 0x47, 0x0a, 0x45, 0x0a, 0xcc, 0x09, 0xc7, 0x09, 0x41, 0x09, 0x40, 0x09, + 0xb3, 0x08, 0xb0, 0x08, 0x14, 0x08, 0x12, 0x08, 0x6d, 0x07, 0x6b, 0x07, + 0xc0, 0x06, 0xbb, 0x06, 0x06, 0x06, 0x05, 0x06, 0x4d, 0x05, 0x4a, 0x05, + 0x8b, 0x04, 0x87, 0x04, 0xc4, 0x03, 0xc2, 0x03, 0xfd, 0x02, 0xfa, 0x02, + 0x31, 0x02, 0x2d, 0x02, 0x64, 0x01, 0x63, 0x01, 0x98, 0x00, 0x93, 0x00, + 0xca, 0xff, 0xc8, 0xff, 0xfe, 0xfe, 0xfc, 0xfe, 0x36, 0xfe, 0x32, 0xfe, + 0x6e, 0xfd, 0x6c, 0xfd, 0xac, 0xfc, 0xa6, 0xfc, 0xec, 0xfb, 0xe9, 0xfb, + 0x31, 0xfb, 0x2f, 0xfb, 0x7e, 0xfa, 0x79, 0xfa, 0xce, 0xf9, 0xcd, 0xf9, + 0x29, 0xf9, 0x25, 0xf9, 0x88, 0xf8, 0x86, 0xf8, 0xf3, 0xf7, 0xef, 0xf7, + 0x63, 0xf7, 0x60, 0xf7, 0xe2, 0xf6, 0xde, 0xf6, 0x66, 0xf6, 0x64, 0xf6, + 0xf9, 0xf5, 0xf6, 0xf5, 0x97, 0xf5, 0x94, 0xf5, 0x3f, 0xf5, 0x3c, 0xf5, + 0xf8, 0xf4, 0xf5, 0xf4, 0xb7, 0xf4, 0xb4, 0xf4, 0x88, 0xf4, 0x85, 0xf4, + 0x67, 0xf4, 0x64, 0xf4, 0x53, 0xf4, 0x51, 0xf4, 0x51, 0xf4, 0x4f, 0xf4, + 0x58, 0xf4, 0x56, 0xf4, 0x73, 0xf4, 0x71, 0xf4, 0x9b, 0xf4, 0x98, 0xf4, + 0xd2, 0xf4, 0xd1, 0xf4, 0x19, 0xf5, 0x16, 0xf5, 0x6d, 0xf5, 0x6a, 0xf5, + 0xd0, 0xf5, 0xce, 0xf5, 0x41, 0xf6, 0x3f, 0xf6, 0xbe, 0xf6, 0xbc, 0xf6, + 0x47, 0xf7, 0x47, 0xf7, 0xdc, 0xf7, 0xd9, 0xf7, 0x7c, 0xf8, 0x7b, 0xf8, + 0x22, 0xf9, 0x20, 0xf9, 0xd3, 0xf9, 0xd1, 0xf9, 0x89, 0xfa, 0x89, 0xfa, + 0x47, 0xfb, 0x42, 0xfb, 0x08, 0xfc, 0x09, 0xfc, 0xd2, 0xfc, 0xcf, 0xfc, + 0x9a, 0xfd, 0x9b, 0xfd, 0x69, 0xfe, 0x66, 0xfe, 0x36, 0xff, 0x33, 0xff, + 0x06, 0x00, 0x04, 0x00, 0xd3, 0x00, 0xd0, 0x00, 0xa1, 0x01, 0x9f, 0x01, + 0x6a, 0x02, 0x68, 0x02, 0x33, 0x03, 0x30, 0x03, 0xf7, 0x03, 0xf5, 0x03, + 0xb6, 0x04, 0xb4, 0x04, 0x71, 0x05, 0x6e, 0x05, 0x25, 0x06, 0x22, 0x06, + 0xd3, 0x06, 0xd3, 0x06, 0x79, 0x07, 0x75, 0x07, 0x18, 0x08, 0x16, 0x08, + 0xad, 0x08, 0xab, 0x08, 0x3a, 0x09, 0x36, 0x09, 0xbc, 0x09, 0xbb, 0x09, + 0x32, 0x0a, 0x2e, 0x0a, 0x9f, 0x0a, 0x9d, 0x0a, 0xfc, 0x0a, 0xf9, 0x0a, + 0x53, 0x0b, 0x4f, 0x0b, 0x96, 0x0b, 0x94, 0x0b, 0xcf, 0x0b, 0xcc, 0x0b, + 0xfa, 0x0b, 0xf7, 0x0b, 0x17, 0x0c, 0x13, 0x0c, 0x25, 0x0c, 0x23, 0x0c, + 0x23, 0x0c, 0x22, 0x0c, 0x15, 0x0c, 0x12, 0x0c, 0xf5, 0x0b, 0xf3, 0x0b, + 0xc5, 0x0b, 0xc2, 0x0b, 0x87, 0x0b, 0x87, 0x0b, 0x3a, 0x0b, 0x38, 0x0b, + 0xe0, 0x0a, 0xdd, 0x0a, 0x76, 0x0a, 0x73, 0x0a, 0xfe, 0x09, 0xfd, 0x09, + 0x7f, 0x09, 0x7c, 0x09, 0xef, 0x08, 0xed, 0x08, 0x5a, 0x08, 0x56, 0x08, + 0xb5, 0x07, 0xb3, 0x07, 0x0c, 0x07, 0x0a, 0x07, 0x58, 0x06, 0x56, 0x06, + 0x9f, 0x05, 0x9c, 0x05, 0xdf, 0x04, 0xdd, 0x04, 0x1a, 0x04, 0x17, 0x04, + 0x52, 0x03, 0x50, 0x03, 0x84, 0x02, 0x84, 0x02, 0xba, 0x01, 0xb5, 0x01, + 0xe9, 0x00, 0xe9, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x4e, 0xff, 0x4d, 0xff, + 0x7e, 0xfe, 0x7c, 0xfe, 0xb8, 0xfd, 0xb6, 0xfd, 0xee, 0xfc, 0xeb, 0xfc, + 0x2c, 0xfc, 0x29, 0xfc, 0x6d, 0xfb, 0x6c, 0xfb, 0xb3, 0xfa, 0xb2, 0xfa, + 0xff, 0xf9, 0xfc, 0xf9, 0x53, 0xf9, 0x51, 0xf9, 0xad, 0xf8, 0xaa, 0xf8, + 0x0f, 0xf8, 0x0d, 0xf8, 0x7c, 0xf7, 0x7b, 0xf7, 0xf1, 0xf6, 0xee, 0xf6, + 0x71, 0xf6, 0x6e, 0xf6, 0xf9, 0xf5, 0xf6, 0xf5, 0x90, 0xf5, 0x8d, 0xf5, + 0x32, 0xf5, 0x2e, 0xf5, 0xdd, 0xf4, 0xdb, 0xf4, 0x9a, 0xf4, 0x96, 0xf4, + 0x5f, 0xf4, 0x5e, 0xf4, 0x37, 0xf4, 0x33, 0xf4, 0x1a, 0xf4, 0x19, 0xf4, + 0x0e, 0xf4, 0x0b, 0xf4, 0x0f, 0xf4, 0x0d, 0xf4, 0x21, 0xf4, 0x1d, 0xf4, + 0x42, 0xf4, 0x40, 0xf4, 0x72, 0xf4, 0x6f, 0xf4, 0xb0, 0xf4, 0xaf, 0xf4, + 0xff, 0xf4, 0xfc, 0xf4, 0x59, 0xf5, 0x56, 0xf5, 0xc6, 0xf5, 0xc4, 0xf5, + 0x39, 0xf6, 0x38, 0xf6, 0xbf, 0xf6, 0xbb, 0xf6, 0x4c, 0xf7, 0x4b, 0xf7, + 0xe5, 0xf7, 0xe3, 0xf7, 0x87, 0xf8, 0x86, 0xf8, 0x32, 0xf9, 0x32, 0xf9, + 0xe5, 0xf9, 0xe2, 0xf9, 0x9f, 0xfa, 0x9d, 0xfa, 0x5c, 0xfb, 0x5a, 0xfb, + 0x1f, 0xfc, 0x1d, 0xfc, 0xe8, 0xfc, 0xe7, 0xfc, 0xb2, 0xfd, 0xb0, 0xfd, + 0x7e, 0xfe, 0x7d, 0xfe, 0x4b, 0xff, 0x49, 0xff, 0x18, 0x00, 0x18, 0x00, + 0xe3, 0x00, 0xe1, 0x00, 0xae, 0x01, 0xad, 0x01, 0x74, 0x02, 0x74, 0x02, + 0x3a, 0x03, 0x38, 0x03, 0xfa, 0x03, 0xfa, 0x03, 0xb5, 0x04, 0xb3, 0x04, + 0x6b, 0x05, 0x69, 0x05, 0x1a, 0x06, 0x19, 0x06, 0xc4, 0x06, 0xc3, 0x06, + 0x62, 0x07, 0x61, 0x07, 0xfb, 0x07, 0xf9, 0x07, 0x8c, 0x08, 0x8a, 0x08, + 0x12, 0x09, 0x0f, 0x09, 0x8e, 0x09, 0x8e, 0x09, 0x00, 0x0a, 0xfd, 0x09, + 0x65, 0x0a, 0x63, 0x0a, 0xbf, 0x0a, 0xbd, 0x0a, 0x0c, 0x0b, 0x09, 0x0b, + 0x4c, 0x0b, 0x4a, 0x0b, 0x7f, 0x0b, 0x7c, 0x0b, 0xa3, 0x0b, 0xa0, 0x0b, + 0xb8, 0x0b, 0xb8, 0x0b, 0xc3, 0x0b, 0xbe, 0x0b, 0xba, 0x0b, 0xb9, 0x0b, + 0xa9, 0x0b, 0xa4, 0x0b, 0x81, 0x0b, 0x80, 0x0b, 0x4e, 0x0b, 0x4a, 0x0b, + 0x0d, 0x0b, 0x09, 0x0b, 0xb8, 0x0a, 0xb6, 0x0a, 0x5c, 0x0a, 0x58, 0x0a, + 0xeb, 0x09, 0xea, 0x09, 0x75, 0x09, 0x70, 0x09, 0xeb, 0x08, 0xec, 0x08, + 0x5c, 0x08, 0x58, 0x08, 0xc3, 0x07, 0xc1, 0x07, 0x1a, 0x07, 0x18, 0x07, + 0x6f, 0x06, 0x6c, 0x06, 0xb7, 0x05, 0xb6, 0x05, 0xfd, 0x04, 0xfb, 0x04, + 0x3c, 0x04, 0x39, 0x04, 0x75, 0x03, 0x73, 0x03, 0xac, 0x02, 0xa9, 0x02, + 0xdd, 0x01, 0xdc, 0x01, 0x12, 0x01, 0x0f, 0x01, 0x41, 0x00, 0x40, 0x00, + 0x74, 0xff, 0x71, 0xff, 0xa6, 0xfe, 0xa5, 0xfe, 0xd9, 0xfd, 0xd6, 0xfd, + 0x0f, 0xfd, 0x0e, 0xfd, 0x4a, 0xfc, 0x49, 0xfc, 0x89, 0xfb, 0x87, 0xfb, + 0xcb, 0xfa, 0xcb, 0xfa, 0x16, 0xfa, 0x13, 0xfa, 0x65, 0xf9, 0x62, 0xf9, + 0xbd, 0xf8, 0xba, 0xf8, 0x1a, 0xf8, 0x1a, 0xf8, 0x7f, 0xf7, 0x7d, 0xf7, + 0xf2, 0xf6, 0xef, 0xf6, 0x6b, 0xf6, 0x69, 0xf6, 0xf0, 0xf5, 0xec, 0xf5, + 0x7f, 0xf5, 0x7f, 0xf5, 0x1c, 0xf5, 0x19, 0xf5, 0xc5, 0xf4, 0xc3, 0xf4, + 0x77, 0xf4, 0x75, 0xf4, 0x3b, 0xf4, 0x38, 0xf4, 0x09, 0xf4, 0x09, 0xf4, + 0xe7, 0xf3, 0xe4, 0xf3, 0xd6, 0xf3, 0xd4, 0xf3, 0xd0, 0xf3, 0xcd, 0xf3, + 0xde, 0xf3, 0xdc, 0xf3, 0xf8, 0xf3, 0xf4, 0xf3, 0x1f, 0xf4, 0x1e, 0xf4, + 0x5b, 0xf4, 0x59, 0xf4, 0x9f, 0xf4, 0x9d, 0xf4, 0xf7, 0xf4, 0xf4, 0xf4, + 0x5a, 0xf5, 0x58, 0xf5, 0xca, 0xf5, 0xc8, 0xf5, 0x4a, 0xf6, 0x48, 0xf6, + 0xd0, 0xf6, 0xcf, 0xf6, 0x66, 0xf7, 0x64, 0xf7, 0x04, 0xf8, 0x01, 0xf8, + 0xab, 0xf8, 0xab, 0xf8, 0x5a, 0xf9, 0x58, 0xf9, 0x10, 0xfa, 0x0e, 0xfa, + 0xcd, 0xfa, 0xcc, 0xfa, 0x8c, 0xfb, 0x8a, 0xfb, 0x54, 0xfc, 0x53, 0xfc, + 0x1d, 0xfd, 0x1a, 0xfd, 0xe8, 0xfd, 0xe7, 0xfd, 0xb5, 0xfe, 0xb2, 0xfe, + 0x81, 0xff, 0x81, 0xff, 0x4f, 0x00, 0x4b, 0x00, 0x18, 0x01, 0x18, 0x01, + 0xe3, 0x01, 0xe0, 0x01, 0xaa, 0x02, 0xa8, 0x02, 0x6b, 0x03, 0x68, 0x03, + 0x2b, 0x04, 0x2a, 0x04, 0xe3, 0x04, 0xe1, 0x04, 0x97, 0x05, 0x95, 0x05, + 0x45, 0x06, 0x43, 0x06, 0xeb, 0x06, 0xe8, 0x06, 0x89, 0x07, 0x88, 0x07, + 0x20, 0x08, 0x1c, 0x08, 0xab, 0x08, 0xa9, 0x08, 0x2e, 0x09, 0x2c, 0x09, + 0xa8, 0x09, 0xa5, 0x09, 0x14, 0x0a, 0x11, 0x0a, 0x75, 0x0a, 0x73, 0x0a, + 0xcb, 0x0a, 0xc8, 0x0a, 0x14, 0x0b, 0x11, 0x0b, 0x50, 0x0b, 0x4e, 0x0b, + 0x7c, 0x0b, 0x79, 0x0b, 0xa0, 0x0b, 0x9e, 0x0b, 0xaf, 0x0b, 0xac, 0x0b, + 0xb5, 0x0b, 0xb2, 0x0b, 0xa9, 0x0b, 0xa7, 0x0b, 0x8e, 0x0b, 0x8b, 0x0b, + 0x66, 0x0b, 0x64, 0x0b, 0x2a, 0x0b, 0x28, 0x0b, 0xe6, 0x0a, 0xe2, 0x0a, + 0x8c, 0x0a, 0x8b, 0x0a, 0x29, 0x0a, 0x26, 0x0a, 0xba, 0x09, 0xb7, 0x09, + 0x38, 0x09, 0x37, 0x09, 0xb4, 0x08, 0xb1, 0x08, 0x1e, 0x08, 0x1c, 0x08, + 0x80, 0x07, 0x7e, 0x07, 0xdc, 0x06, 0xda, 0x06, 0x28, 0x06, 0x23, 0x06, + 0x77, 0x05, 0x76, 0x05, 0xb7, 0x04, 0xb2, 0x04, 0xf6, 0x03, 0xf6, 0x03, + 0x31, 0x03, 0x2e, 0x03, 0x68, 0x02, 0x65, 0x02, 0x9d, 0x01, 0x9c, 0x01, + 0xd2, 0x00, 0xcf, 0x00, 0x05, 0x00, 0x02, 0x00, 0x38, 0xff, 0x36, 0xff, + 0x6f, 0xfe, 0x6a, 0xfe, 0xa6, 0xfd, 0xa3, 0xfd, 0xe1, 0xfc, 0xe0, 0xfc, + 0x1f, 0xfc, 0x1b, 0xfc, 0x61, 0xfb, 0x60, 0xfb, 0xab, 0xfa, 0xa6, 0xfa, + 0xf8, 0xf9, 0xf6, 0xf9, 0x4e, 0xf9, 0x4b, 0xf9, 0xa9, 0xf8, 0xa9, 0xf8, + 0x0e, 0xf8, 0x0b, 0xf8, 0x7c, 0xf7, 0x7c, 0xf7, 0xf3, 0xf6, 0xef, 0xf6, + 0x75, 0xf6, 0x74, 0xf6, 0xff, 0xf5, 0xfe, 0xf5, 0x97, 0xf5, 0x95, 0xf5, + 0x3b, 0xf5, 0x39, 0xf5, 0xe8, 0xf4, 0xe7, 0xf4, 0xa6, 0xf4, 0xa3, 0xf4, + 0x6e, 0xf4, 0x6d, 0xf4, 0x46, 0xf4, 0x44, 0xf4, 0x2a, 0xf4, 0x29, 0xf4, + 0x1e, 0xf4, 0x1e, 0xf4, 0x21, 0xf4, 0x1d, 0xf4, 0x31, 0xf4, 0x32, 0xf4, + 0x54, 0xf4, 0x51, 0xf4, 0x81, 0xf4, 0x80, 0xf4, 0xc2, 0xf4, 0xc0, 0xf4, + 0x0d, 0xf5, 0x0a, 0xf5, 0x67, 0xf5, 0x67, 0xf5, 0xd1, 0xf5, 0xcf, 0xf5, + 0x46, 0xf6, 0x44, 0xf6, 0xca, 0xf6, 0xc9, 0xf6, 0x55, 0xf7, 0x53, 0xf7, + 0xef, 0xf7, 0xec, 0xf7, 0x8e, 0xf8, 0x8d, 0xf8, 0x39, 0xf9, 0x38, 0xf9, + 0xed, 0xf9, 0xea, 0xf9, 0xa2, 0xfa, 0xa1, 0xfa, 0x64, 0xfb, 0x61, 0xfb, + 0x24, 0xfc, 0x23, 0xfc, 0xee, 0xfc, 0xec, 0xfc, 0xb8, 0xfd, 0xb7, 0xfd, + 0x83, 0xfe, 0x81, 0xfe, 0x52, 0xff, 0x52, 0xff, 0x1f, 0x00, 0x1d, 0x00, + 0xec, 0x00, 0xec, 0x00, 0xb9, 0x01, 0xb7, 0x01, 0x7f, 0x02, 0x7f, 0x02, + 0x49, 0x03, 0x47, 0x03, 0x07, 0x04, 0x07, 0x04, 0xc7, 0x04, 0xc6, 0x04, + 0x7f, 0x05, 0x7e, 0x05, 0x2f, 0x06, 0x2e, 0x06, 0xdc, 0x06, 0xd9, 0x06, + 0x80, 0x07, 0x7e, 0x07, 0x1b, 0x08, 0x1b, 0x08, 0xaf, 0x08, 0xad, 0x08, + 0x37, 0x09, 0x34, 0x09, 0xb6, 0x09, 0xb5, 0x09, 0x2b, 0x0a, 0x28, 0x0a, + 0x93, 0x0a, 0x92, 0x0a, 0xf0, 0x0a, 0xef, 0x0a, 0x40, 0x0b, 0x3e, 0x0b, + 0x82, 0x0b, 0x81, 0x0b, 0xba, 0x0b, 0xb8, 0x0b, 0xde, 0x0b, 0xde, 0x0b, + 0xf9, 0x0b, 0xf8, 0x0b, 0x03, 0x0c, 0x02, 0x0c, 0x02, 0x0c, 0x01, 0x0c, + 0xee, 0x0b, 0xeb, 0x0b, 0xca, 0x0b, 0xca, 0x0b, 0x9a, 0x0b, 0x99, 0x0b, + 0x56, 0x0b, 0x56, 0x0b, 0x0b, 0x0b, 0x08, 0x0b, 0xa9, 0x0a, 0xa9, 0x0a, + 0x42, 0x0a, 0x40, 0x0a, 0xc9, 0x09, 0xc7, 0x09, 0x48, 0x09, 0x46, 0x09, + 0xba, 0x08, 0xb9, 0x08, 0x22, 0x08, 0x1f, 0x08, 0x81, 0x07, 0x81, 0x07, + 0xd6, 0x06, 0xd4, 0x06, 0x24, 0x06, 0x22, 0x06, 0x6c, 0x05, 0x6b, 0x05, + 0xb0, 0x04, 0xac, 0x04, 0xea, 0x03, 0xec, 0x03, 0x28, 0x03, 0x24, 0x03, + 0x5d, 0x02, 0x5c, 0x02, 0x94, 0x01, 0x92, 0x01, 0xc9, 0x00, 0xc7, 0x00, + 0xfd, 0xff, 0xfe, 0xff, 0x35, 0xff, 0x32, 0xff, 0x6c, 0xfe, 0x6b, 0xfe, + 0xa7, 0xfd, 0xa5, 0xfd, 0xe4, 0xfc, 0xe3, 0xfc, 0x27, 0xfc, 0x25, 0xfc, + 0x6c, 0xfb, 0x6a, 0xfb, 0xb9, 0xfa, 0xb9, 0xfa, 0x0d, 0xfa, 0x09, 0xfa, + 0x64, 0xf9, 0x64, 0xf9, 0xc7, 0xf8, 0xc3, 0xf8, 0x2e, 0xf8, 0x2e, 0xf8, + 0x9f, 0xf7, 0x9f, 0xf7, 0x1e, 0xf7, 0x1b, 0xf7, 0xa1, 0xf6, 0xa0, 0xf6, + 0x32, 0xf6, 0x32, 0xf6, 0xce, 0xf5, 0xcd, 0xf5, 0x74, 0xf5, 0x73, 0xf5, + 0x29, 0xf5, 0x28, 0xf5, 0xe7, 0xf4, 0xe7, 0xf4, 0xb8, 0xf4, 0xb6, 0xf4, + 0x92, 0xf4, 0x90, 0xf4, 0x7b, 0xf4, 0x7a, 0xf4, 0x75, 0xf4, 0x74, 0xf4, + 0x7a, 0xf4, 0x79, 0xf4, 0x91, 0xf4, 0x8f, 0xf4, 0xb3, 0xf4, 0xb2, 0xf4, + 0xe7, 0xf4, 0xe7, 0xf4, 0x29, 0xf5, 0x27, 0xf5, 0x79, 0xf5, 0x78, 0xf5, + 0xd7, 0xf5, 0xd4, 0xf5, 0x41, 0xf6, 0x3f, 0xf6, 0xba, 0xf6, 0xba, 0xf6, + 0x3d, 0xf7, 0x3a, 0xf7, 0xcd, 0xf7, 0xce, 0xf7, 0x68, 0xf8, 0x66, 0xf8, + 0x0b, 0xf9, 0x0a, 0xf9, 0xb5, 0xf9, 0xb4, 0xf9, 0x68, 0xfa, 0x66, 0xfa, + 0x22, 0xfb, 0x22, 0xfb, 0xe0, 0xfb, 0xde, 0xfb, 0xa4, 0xfc, 0xa3, 0xfc, + 0x69, 0xfd, 0x68, 0xfd, 0x34, 0xfe, 0x32, 0xfe, 0xff, 0xfe, 0xff, 0xfe, + 0xca, 0xff, 0xc7, 0xff, 0x99, 0x00, 0x97, 0x00, 0x5f, 0x01, 0x5e, 0x01, + 0x2c, 0x02, 0x2a, 0x02, 0xf0, 0x02, 0xef, 0x02, 0xb2, 0x03, 0xb2, 0x03, + 0x74, 0x04, 0x71, 0x04, 0x2c, 0x05, 0x2c, 0x05, 0xe1, 0x05, 0xde, 0x05, + 0x8e, 0x06, 0x8b, 0x06, 0x34, 0x07, 0x33, 0x07, 0xd2, 0x07, 0xcf, 0x07, + 0x69, 0x08, 0x68, 0x08, 0xf5, 0x08, 0xf1, 0x08, 0x79, 0x09, 0x77, 0x09, + 0xf0, 0x09, 0xed, 0x09, 0x5f, 0x0a, 0x5c, 0x0a, 0xbf, 0x0a, 0xbe, 0x0a, + 0x17, 0x0b, 0x13, 0x0b, 0x5e, 0x0b, 0x5e, 0x0b, 0x9b, 0x0b, 0x98, 0x0b, + 0xca, 0x0b, 0xc8, 0x0b, 0xe8, 0x0b, 0xe7, 0x0b, 0xfb, 0x0b, 0xf7, 0x0b, + 0xff, 0x0b, 0xfd, 0x0b, 0xf1, 0x0b, 0xef, 0x0b, 0xda, 0x0b, 0xd8, 0x0b, + 0xad, 0x0b, 0xab, 0x0b, 0x76, 0x0b, 0x74, 0x0b, 0x2e, 0x0b, 0x2c, 0x0b, + 0xd9, 0x0a, 0xd3, 0x0a, 0x74, 0x0a, 0x75, 0x0a, 0x06, 0x0a, 0x00, 0x0a, + 0x86, 0x09, 0x85, 0x09, 0x00, 0x09, 0xfd, 0x08, 0x6f, 0x08, 0x6c, 0x08, + 0xd1, 0x07, 0xd0, 0x07, 0x2e, 0x07, 0x2d, 0x07, 0x80, 0x06, 0x7d, 0x06, + 0xca, 0x05, 0xca, 0x05, 0x14, 0x05, 0x0f, 0x05, 0x4f, 0x04, 0x4e, 0x04, + 0x8e, 0x03, 0x8e, 0x03, 0xc5, 0x02, 0xc0, 0x02, 0xf9, 0x01, 0xfa, 0x01, + 0x31, 0x01, 0x2e, 0x01, 0x62, 0x00, 0x60, 0x00, 0x9a, 0xff, 0x9a, 0xff, + 0xce, 0xfe, 0xcd, 0xfe, 0x08, 0xfe, 0x07, 0xfe, 0x41, 0xfd, 0x3f, 0xfd, + 0x7f, 0xfc, 0x7f, 0xfc, 0xc2, 0xfb, 0xc1, 0xfb, 0x09, 0xfb, 0x09, 0xfb, + 0x56, 0xfa, 0x55, 0xfa, 0xab, 0xf9, 0xaa, 0xf9, 0x05, 0xf9, 0x04, 0xf9, + 0x69, 0xf8, 0x66, 0xf8, 0xd5, 0xf7, 0xd4, 0xf7, 0x47, 0xf7, 0x47, 0xf7, + 0xc8, 0xf6, 0xc6, 0xf6, 0x4e, 0xf6, 0x4d, 0xf6, 0xe2, 0xf5, 0xe0, 0xf5, + 0x82, 0xf5, 0x80, 0xf5, 0x2c, 0xf5, 0x2c, 0xf5, 0xe6, 0xf4, 0xe3, 0xf4, + 0xa8, 0xf4, 0xa7, 0xf4, 0x7b, 0xf4, 0x79, 0xf4, 0x59, 0xf4, 0x59, 0xf4, + 0x4a, 0xf4, 0x46, 0xf4, 0x45, 0xf4, 0x45, 0xf4, 0x54, 0xf4, 0x51, 0xf4, + 0x6c, 0xf4, 0x6b, 0xf4, 0x96, 0xf4, 0x95, 0xf4, 0xd0, 0xf4, 0xcf, 0xf4, + 0x18, 0xf5, 0x15, 0xf5, 0x6c, 0xf5, 0x6c, 0xf5, 0xcf, 0xf5, 0xcd, 0xf5, + 0x3f, 0xf6, 0x3d, 0xf6, 0xb8, 0xf6, 0xb8, 0xf6, 0x43, 0xf7, 0x41, 0xf7, + 0xd6, 0xf7, 0xd4, 0xf7, 0x70, 0xf8, 0x6d, 0xf8, 0x17, 0xf9, 0x16, 0xf9, + 0xc2, 0xf9, 0xc0, 0xf9, 0x77, 0xfa, 0x77, 0xfa, 0x31, 0xfb, 0x2e, 0xfb, + 0xed, 0xfb, 0xed, 0xfb, 0xb3, 0xfc, 0xb1, 0xfc, 0x76, 0xfd, 0x75, 0xfd, + 0x43, 0xfe, 0x41, 0xfe, 0x09, 0xff, 0x08, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0x9d, 0x00, 0x9c, 0x00, 0x64, 0x01, 0x62, 0x01, 0x2a, 0x02, 0x29, 0x02, + 0xeb, 0x02, 0xec, 0x02, 0xad, 0x03, 0xa9, 0x03, 0x62, 0x04, 0x63, 0x04, + 0x1c, 0x05, 0x18, 0x05, 0xc6, 0x05, 0xc8, 0x05, 0x72, 0x06, 0x6f, 0x06, + 0x12, 0x07, 0x12, 0x07, 0xac, 0x07, 0xab, 0x07, 0x3c, 0x08, 0x3c, 0x08, + 0xc3, 0x08, 0xc1, 0x08, 0x41, 0x09, 0x40, 0x09, 0xb4, 0x09, 0xb4, 0x09, + 0x1d, 0x0a, 0x1b, 0x0a, 0x7a, 0x0a, 0x79, 0x0a, 0xc9, 0x0a, 0xc7, 0x0a, + 0x0e, 0x0b, 0x0d, 0x0b, 0x45, 0x0b, 0x41, 0x0b, 0x6c, 0x0b, 0x6a, 0x0b, + 0x89, 0x0b, 0x87, 0x0b, 0x94, 0x0b, 0x92, 0x0b, 0x93, 0x0b, 0x91, 0x0b, + 0x83, 0x0b, 0x81, 0x0b, 0x64, 0x0b, 0x64, 0x0b, 0x3a, 0x0b, 0x37, 0x0b, + 0xfb, 0x0a, 0xf9, 0x0a, 0xb1, 0x0a, 0xb0, 0x0a, 0x59, 0x0a, 0x56, 0x0a, + 0xf0, 0x09, 0xf1, 0x09, 0x80, 0x09, 0x7d, 0x09, 0xff, 0x08, 0xfe, 0x08, + 0x74, 0x08, 0x74, 0x08, 0xe1, 0x07, 0xdd, 0x07, 0x42, 0x07, 0x43, 0x07, + 0x9d, 0x06, 0x99, 0x06, 0xeb, 0x05, 0xeb, 0x05, 0x36, 0x05, 0x35, 0x05, + 0x79, 0x04, 0x7a, 0x04, 0xb9, 0x03, 0xb8, 0x03, 0xf3, 0x02, 0xf1, 0x02, + 0x2b, 0x02, 0x2a, 0x02, 0x62, 0x01, 0x61, 0x01, 0x96, 0x00, 0x96, 0x00, + 0xcc, 0xff, 0xca, 0xff, 0xfe, 0xfe, 0x00, 0xff, 0x39, 0xfe, 0x35, 0xfe, + 0x6f, 0xfd, 0x70, 0xfd, 0xab, 0xfc, 0xa8, 0xfc, 0xed, 0xfb, 0xec, 0xfb, + 0x2e, 0xfb, 0x2d, 0xfb, 0x79, 0xfa, 0x76, 0xfa, 0xc8, 0xf9, 0xc7, 0xf9, + 0x1f, 0xf9, 0x1e, 0xf9, 0x7c, 0xf8, 0x7b, 0xf8, 0xe2, 0xf7, 0xe2, 0xf7, + 0x54, 0xf7, 0x50, 0xf7, 0xc8, 0xf6, 0xca, 0xf6, 0x4b, 0xf6, 0x49, 0xf6, + 0xdb, 0xf5, 0xda, 0xf5, 0x6f, 0xf5, 0x6f, 0xf5, 0x15, 0xf5, 0x13, 0xf5, + 0xc9, 0xf4, 0xc8, 0xf4, 0x85, 0xf4, 0x85, 0xf4, 0x52, 0xf4, 0x4f, 0xf4, + 0x28, 0xf4, 0x28, 0xf4, 0x11, 0xf4, 0x0d, 0xf4, 0x05, 0xf4, 0x05, 0xf4, + 0x09, 0xf4, 0x08, 0xf4, 0x1c, 0xf4, 0x1a, 0xf4, 0x40, 0xf4, 0x41, 0xf4, + 0x70, 0xf4, 0x6d, 0xf4, 0xb2, 0xf4, 0xb2, 0xf4, 0x00, 0xf5, 0xff, 0xf4, + 0x5b, 0xf5, 0x5a, 0xf5, 0xc4, 0xf5, 0xc4, 0xf5, 0x39, 0xf6, 0x37, 0xf6, + 0xbc, 0xf6, 0xbc, 0xf6, 0x47, 0xf7, 0x46, 0xf7, 0xde, 0xf7, 0xdf, 0xf7, + 0x7d, 0xf8, 0x7d, 0xf8, 0x27, 0xf9, 0x27, 0xf9, 0xd8, 0xf9, 0xd7, 0xf9, + 0x8d, 0xfa, 0x8b, 0xfa, 0x4a, 0xfb, 0x4b, 0xfb, 0x09, 0xfc, 0x06, 0xfc, + 0xcc, 0xfc, 0xcd, 0xfc, 0x94, 0xfd, 0x91, 0xfd, 0x5e, 0xfe, 0x5f, 0xfe, + 0x27, 0xff, 0x25, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xbc, 0x00, 0xb9, 0x00, + 0x81, 0x01, 0x81, 0x01, 0x46, 0x02, 0x45, 0x02, 0x07, 0x03, 0x07, 0x03, + 0xc4, 0x03, 0xc3, 0x03, 0x7d, 0x04, 0x7d, 0x04, 0x2f, 0x05, 0x2e, 0x05, + 0xdd, 0x05, 0xde, 0x05, 0x83, 0x06, 0x82, 0x06, 0x23, 0x07, 0x24, 0x07, + 0xba, 0x07, 0xb8, 0x07, 0x48, 0x08, 0x47, 0x08, 0xcf, 0x08, 0xd0, 0x08, + 0x48, 0x09, 0x46, 0x09, 0xba, 0x09, 0xbb, 0x09, 0x1e, 0x0a, 0x1b, 0x0a, + 0x79, 0x0a, 0x78, 0x0a, 0xc5, 0x0a, 0xc3, 0x0a, 0x05, 0x0b, 0x04, 0x0b, + 0x3a, 0x0b, 0x37, 0x0b, 0x5d, 0x0b, 0x5e, 0x0b, 0x77, 0x0b, 0x73, 0x0b, + 0x7f, 0x0b, 0x7f, 0x0b, 0x7b, 0x0b, 0x78, 0x0b, 0x6a, 0x0b, 0x69, 0x0b, + 0x46, 0x0b, 0x45, 0x0b, 0x17, 0x0b, 0x14, 0x0b, 0xd5, 0x0a, 0xd5, 0x0a, + 0x87, 0x0a, 0x85, 0x0a, 0x2c, 0x0a, 0x2b, 0x0a, 0xc2, 0x09, 0xc0, 0x09, + 0x4e, 0x09, 0x4c, 0x09, 0xc8, 0x08, 0xc8, 0x08, 0x40, 0x08, 0x3d, 0x08, + 0xa7, 0x07, 0xa6, 0x07, 0x08, 0x07, 0x07, 0x07, 0x5f, 0x06, 0x60, 0x06, + 0xaf, 0x05, 0xae, 0x05, 0xfa, 0x04, 0xf8, 0x04, 0x3d, 0x04, 0x3b, 0x04, + 0x7c, 0x03, 0x7b, 0x03, 0xb7, 0x02, 0xb5, 0x02, 0xf0, 0x01, 0xf0, 0x01, + 0x29, 0x01, 0x26, 0x01, 0x5d, 0x00, 0x5d, 0x00, 0x94, 0xff, 0x94, 0xff, + 0xce, 0xfe, 0xcb, 0xfe, 0x05, 0xfe, 0x05, 0xfe, 0x41, 0xfd, 0x41, 0xfd, + 0x82, 0xfc, 0x7e, 0xfc, 0xc2, 0xfb, 0xc3, 0xfb, 0x0c, 0xfb, 0x09, 0xfb, + 0x59, 0xfa, 0x59, 0xfa, 0xad, 0xf9, 0xac, 0xf9, 0x09, 0xf9, 0x06, 0xf9, + 0x6d, 0xf8, 0x6d, 0xf8, 0xd5, 0xf7, 0xd3, 0xf7, 0x4b, 0xf7, 0x4a, 0xf7, + 0xc9, 0xf6, 0xc8, 0xf6, 0x4f, 0xf6, 0x50, 0xf6, 0xe4, 0xf5, 0xe2, 0xf5, + 0x82, 0xf5, 0x82, 0xf5, 0x2d, 0xf5, 0x2d, 0xf5, 0xe5, 0xf4, 0xe4, 0xf4, + 0xa8, 0xf4, 0xa8, 0xf4, 0x7a, 0xf4, 0x77, 0xf4, 0x58, 0xf4, 0x58, 0xf4, + 0x46, 0xf4, 0x45, 0xf4, 0x41, 0xf4, 0x3f, 0xf4, 0x4b, 0xf4, 0x4b, 0xf4, + 0x64, 0xf4, 0x63, 0xf4, 0x8b, 0xf4, 0x8b, 0xf4, 0xc3, 0xf4, 0xc2, 0xf4, + 0x07, 0xf5, 0x06, 0xf5, 0x59, 0xf5, 0x58, 0xf5, 0xbb, 0xf5, 0xba, 0xf5, + 0x27, 0xf6, 0x26, 0xf6, 0xa2, 0xf6, 0xa0, 0xf6, 0x27, 0xf7, 0x26, 0xf7, + 0xb8, 0xf7, 0xb8, 0xf7, 0x53, 0xf8, 0x50, 0xf8, 0xf7, 0xf8, 0xf7, 0xf8, + 0xa0, 0xf9, 0x9f, 0xf9, 0x57, 0xfa, 0x54, 0xfa, 0x0e, 0xfb, 0x0d, 0xfb, + 0xcb, 0xfb, 0xc9, 0xfb, 0x8e, 0xfc, 0x8d, 0xfc, 0x52, 0xfd, 0x51, 0xfd, + 0x1f, 0xfe, 0x1e, 0xfe, 0xe7, 0xfe, 0xe6, 0xfe, 0xb3, 0xff, 0xb1, 0xff, + 0x7e, 0x00, 0x7d, 0x00, 0x46, 0x01, 0x44, 0x01, 0x0e, 0x02, 0x0e, 0x02, + 0xd5, 0x02, 0xd3, 0x02, 0x95, 0x03, 0x95, 0x03, 0x54, 0x04, 0x52, 0x04, + 0x0e, 0x05, 0x0d, 0x05, 0xc0, 0x05, 0xbe, 0x05, 0x6e, 0x06, 0x6d, 0x06, + 0x13, 0x07, 0x11, 0x07, 0xb0, 0x07, 0xaf, 0x07, 0x45, 0x08, 0x44, 0x08, + 0xd0, 0x08, 0xcf, 0x08, 0x55, 0x09, 0x53, 0x09, 0xca, 0x09, 0xca, 0x09, + 0x39, 0x0a, 0x38, 0x0a, 0x9a, 0x0a, 0x9a, 0x0a, 0xf0, 0x0a, 0xee, 0x0a, + 0x39, 0x0b, 0x39, 0x0b, 0x75, 0x0b, 0x72, 0x0b, 0xa2, 0x0b, 0xa2, 0x0b, + 0xc3, 0x0b, 0xc1, 0x0b, 0xd4, 0x0b, 0xd4, 0x0b, 0xda, 0x0b, 0xd8, 0x0b, + 0xcc, 0x0b, 0xcd, 0x0b, 0xb5, 0x0b, 0xb2, 0x0b, 0x8a, 0x0b, 0x8b, 0x0b, + 0x54, 0x0b, 0x53, 0x0b, 0x0c, 0x0b, 0x0a, 0x0b, 0xb7, 0x0a, 0xb8, 0x0a, + 0x56, 0x0a, 0x54, 0x0a, 0xe6, 0x09, 0xe5, 0x09, 0x6c, 0x09, 0x6b, 0x09, + 0xe6, 0x08, 0xe4, 0x08, 0x54, 0x08, 0x55, 0x08, 0xbb, 0x07, 0xb8, 0x07, + 0x17, 0x07, 0x18, 0x07, 0x6c, 0x06, 0x6a, 0x06, 0xb9, 0x05, 0xbc, 0x05, + 0x02, 0x05, 0xfe, 0x04, 0x43, 0x04, 0x43, 0x04, 0x82, 0x03, 0x80, 0x03, + 0xbc, 0x02, 0xbb, 0x02, 0xf7, 0x01, 0xf5, 0x01, 0x2c, 0x01, 0x2b, 0x01, + 0x64, 0x00, 0x63, 0x00, 0x9c, 0xff, 0x9c, 0xff, 0xd5, 0xfe, 0xd4, 0xfe, + 0x10, 0xfe, 0x11, 0xfe, 0x4c, 0xfd, 0x49, 0xfd, 0x90, 0xfc, 0x90, 0xfc, + 0xd4, 0xfb, 0xd4, 0xfb, 0x21, 0xfb, 0x20, 0xfb, 0x71, 0xfa, 0x70, 0xfa, + 0xc8, 0xf9, 0xc7, 0xf9, 0x27, 0xf9, 0x26, 0xf9, 0x8c, 0xf8, 0x8a, 0xf8, + 0xfb, 0xf7, 0xfb, 0xf7, 0x73, 0xf7, 0x72, 0xf7, 0xf4, 0xf6, 0xf2, 0xf6, + 0x80, 0xf6, 0x81, 0xf6, 0x18, 0xf6, 0x15, 0xf6, 0xbb, 0xf5, 0xba, 0xf5, + 0x69, 0xf5, 0x68, 0xf5, 0x21, 0xf5, 0x20, 0xf5, 0xeb, 0xf4, 0xea, 0xf4, + 0xbe, 0xf4, 0xbc, 0xf4, 0xa2, 0xf4, 0xa2, 0xf4, 0x93, 0xf4, 0x92, 0xf4, + 0x92, 0xf4, 0x90, 0xf4, 0x9f, 0xf4, 0xa0, 0xf4, 0xba, 0xf4, 0xb7, 0xf4, + 0xe6, 0xf4, 0xe6, 0xf4, 0x1f, 0xf5, 0x1e, 0xf5, 0x68, 0xf5, 0x66, 0xf5, + 0xbc, 0xf5, 0xbc, 0xf5, 0x22, 0xf6, 0x1f, 0xf6, 0x91, 0xf6, 0x90, 0xf6, + 0x0a, 0xf7, 0x0b, 0xf7, 0x95, 0xf7, 0x93, 0xf7, 0x26, 0xf8, 0x25, 0xf8, + 0xc3, 0xf8, 0xc2, 0xf8, 0x69, 0xf9, 0x67, 0xf9, 0x16, 0xfa, 0x15, 0xfa, + 0xc8, 0xfa, 0xc8, 0xfa, 0x84, 0xfb, 0x84, 0xfb, 0x45, 0xfc, 0x43, 0xfc, + 0x05, 0xfd, 0x07, 0xfd, 0xcf, 0xfd, 0xcc, 0xfd, 0x95, 0xfe, 0x95, 0xfe, + 0x5f, 0xff, 0x5e, 0xff, 0x2b, 0x00, 0x2b, 0x00, 0xf2, 0x00, 0xf2, 0x00, + 0xbd, 0x01, 0xbd, 0x01, 0x83, 0x02, 0x81, 0x02, 0x46, 0x03, 0x47, 0x03, + 0x08, 0x04, 0x06, 0x04, 0xc0, 0x04, 0xc0, 0x04, 0x78, 0x05, 0x77, 0x05, + 0x27, 0x06, 0x25, 0x06, 0xd1, 0x06, 0xd1, 0x06, 0x72, 0x07, 0x71, 0x07, + 0x0e, 0x08, 0x0d, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0x24, 0x09, 0x22, 0x09, + 0xa4, 0x09, 0xa5, 0x09, 0x14, 0x0a, 0x13, 0x0a, 0x7e, 0x0a, 0x7d, 0x0a, + 0xd8, 0x0a, 0xd9, 0x0a, 0x26, 0x0b, 0x26, 0x0b, 0x6b, 0x0b, 0x6a, 0x0b, + 0x9d, 0x0b, 0x9c, 0x0b, 0xc7, 0x0b, 0xc6, 0x0b, 0xde, 0x0b, 0xde, 0x0b, + 0xec, 0x0b, 0xec, 0x0b, 0xe7, 0x0b, 0xe7, 0x0b, 0xd6, 0x0b, 0xd5, 0x0b, + 0xb6, 0x0b, 0xb3, 0x0b, 0x83, 0x0b, 0x85, 0x0b, 0x46, 0x0b, 0x44, 0x0b, + 0xf6, 0x0a, 0xf7, 0x0a, 0x9d, 0x0a, 0x9c, 0x0a, 0x34, 0x0a, 0x35, 0x0a, + 0xc1, 0x09, 0xbf, 0x09, 0x3f, 0x09, 0x3f, 0x09, 0xb3, 0x08, 0xb3, 0x08, + 0x1f, 0x08, 0x1e, 0x08, 0x7f, 0x07, 0x7f, 0x07, 0xd8, 0x06, 0xd7, 0x06, + 0x2a, 0x06, 0x2a, 0x06, 0x71, 0x05, 0x6f, 0x05, 0xb6, 0x04, 0xb6, 0x04, + 0xf4, 0x03, 0xf4, 0x03, 0x32, 0x03, 0x30, 0x03, 0x6a, 0x02, 0x69, 0x02, + 0xa0, 0x01, 0xa0, 0x01, 0xd9, 0x00, 0xd7, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x44, 0xff, 0x43, 0xff, 0x7c, 0xfe, 0x7b, 0xfe, 0xb4, 0xfd, 0xb6, 0xfd, + 0xf4, 0xfc, 0xf3, 0xfc, 0x34, 0xfc, 0x32, 0xfc, 0x78, 0xfb, 0x79, 0xfb, + 0xc5, 0xfa, 0xc3, 0xfa, 0x15, 0xfa, 0x15, 0xfa, 0x6d, 0xf9, 0x6d, 0xf9, + 0xcd, 0xf8, 0xcc, 0xf8, 0x34, 0xf8, 0x34, 0xf8, 0xa4, 0xf7, 0xa4, 0xf7, + 0x1f, 0xf7, 0x1e, 0xf7, 0xa0, 0xf6, 0xa0, 0xf6, 0x30, 0xf6, 0x30, 0xf6, + 0xc9, 0xf5, 0xc7, 0xf5, 0x6e, 0xf5, 0x6f, 0xf5, 0x1e, 0xf5, 0x1e, 0xf5, + 0xdc, 0xf4, 0xdc, 0xf4, 0xa9, 0xf4, 0xa8, 0xf4, 0x7e, 0xf4, 0x80, 0xf4, + 0x69, 0xf4, 0x69, 0xf4, 0x5b, 0xf4, 0x5c, 0xf4, 0x61, 0xf4, 0x60, 0xf4, + 0x71, 0xf4, 0x72, 0xf4, 0x94, 0xf4, 0x93, 0xf4, 0xc5, 0xf4, 0xc6, 0xf4, + 0x02, 0xf5, 0x02, 0xf5, 0x52, 0xf5, 0x51, 0xf5, 0xa9, 0xf5, 0xab, 0xf5, + 0x14, 0xf6, 0x13, 0xf6, 0x85, 0xf6, 0x86, 0xf6, 0x08, 0xf7, 0x08, 0xf7, + 0x94, 0xf7, 0x94, 0xf7, 0x2a, 0xf8, 0x2a, 0xf8, 0xc7, 0xf8, 0xc9, 0xf8, + 0x73, 0xf9, 0x70, 0xf9, 0x1d, 0xfa, 0x20, 0xfa, 0xd7, 0xfa, 0xd6, 0xfa, + 0x90, 0xfb, 0x91, 0xfb, 0x51, 0xfc, 0x51, 0xfc, 0x13, 0xfd, 0x13, 0xfd, + 0xdb, 0xfd, 0xdc, 0xfd, 0xa3, 0xfe, 0xa4, 0xfe, 0x6c, 0xff, 0x6d, 0xff, + 0x36, 0x00, 0x34, 0x00, 0xfc, 0x00, 0xff, 0x00, 0xc2, 0x01, 0xc2, 0x01, + 0x88, 0x02, 0x87, 0x02, 0x47, 0x03, 0x4a, 0x03, 0x04, 0x04, 0x03, 0x04, + 0xbd, 0x04, 0xbe, 0x04, 0x6f, 0x05, 0x6e, 0x05, 0x1a, 0x06, 0x19, 0x06, + 0xc0, 0x06, 0xc2, 0x06, 0x5c, 0x07, 0x5a, 0x07, 0xf4, 0x07, 0xf4, 0x07, + 0x79, 0x08, 0x7c, 0x08, 0x01, 0x09, 0x02, 0x09, 0x78, 0x09, 0x77, 0x09, + 0xe5, 0x09, 0xe7, 0x09, 0x4a, 0x0a, 0x49, 0x0a, 0x9d, 0x0a, 0x9f, 0x0a, + 0xea, 0x0a, 0xeb, 0x0a, 0x24, 0x0b, 0x25, 0x0b, 0x56, 0x0b, 0x57, 0x0b, + 0x77, 0x0b, 0x77, 0x0b, 0x8d, 0x0b, 0x8c, 0x0b, 0x92, 0x0b, 0x95, 0x0b, + 0x8b, 0x0b, 0x89, 0x0b, 0x73, 0x0b, 0x76, 0x0b, 0x4f, 0x0b, 0x4f, 0x0b, + 0x1b, 0x0b, 0x1c, 0x0b, 0xd7, 0x0a, 0xd9, 0x0a, 0x85, 0x0a, 0x86, 0x0a, + 0x27, 0x0a, 0x29, 0x0a, 0xbb, 0x09, 0xba, 0x09, 0x42, 0x09, 0x42, 0x09, + 0xbd, 0x08, 0xbf, 0x08, 0x2f, 0x08, 0x2f, 0x08, 0x98, 0x07, 0x98, 0x07, + 0xf5, 0x06, 0xf7, 0x06, 0x4a, 0x06, 0x4a, 0x06, 0x99, 0x05, 0x97, 0x05, + 0xe0, 0x04, 0xe0, 0x04, 0x22, 0x04, 0x22, 0x04, 0x60, 0x03, 0x5f, 0x03, + 0x99, 0x02, 0x9c, 0x02, 0xd0, 0x01, 0xce, 0x01, 0x07, 0x01, 0x07, 0x01, + 0x3a, 0x00, 0x3a, 0x00, 0x72, 0xff, 0x71, 0xff, 0xa5, 0xfe, 0xa4, 0xfe, + 0xde, 0xfd, 0xde, 0xfd, 0x18, 0xfd, 0x17, 0xfd, 0x55, 0xfc, 0x55, 0xfc, + 0x99, 0xfb, 0x99, 0xfb, 0xdc, 0xfa, 0xdb, 0xfa, 0x2b, 0xfa, 0x2b, 0xfa, + 0x7c, 0xf9, 0x7d, 0xf9, 0xd6, 0xf8, 0xd5, 0xf8, 0x38, 0xf8, 0x39, 0xf8, + 0xa2, 0xf7, 0xa1, 0xf7, 0x16, 0xf7, 0x16, 0xf7, 0x92, 0xf6, 0x92, 0xf6, + 0x19, 0xf6, 0x19, 0xf6, 0xad, 0xf5, 0xad, 0xf5, 0x49, 0xf5, 0x4b, 0xf5, + 0xf6, 0xf4, 0xf5, 0xf4, 0xac, 0xf4, 0xad, 0xf4, 0x6e, 0xf4, 0x6e, 0xf4, + 0x42, 0xf4, 0x43, 0xf4, 0x1f, 0xf4, 0x22, 0xf4, 0x0f, 0xf4, 0x0f, 0xf4, + 0x0c, 0xf4, 0x0c, 0xf4, 0x16, 0xf4, 0x19, 0xf4, 0x32, 0xf4, 0x32, 0xf4, + 0x5b, 0xf4, 0x5a, 0xf4, 0x91, 0xf4, 0x93, 0xf4, 0xdb, 0xf4, 0xda, 0xf4, + 0x2c, 0xf5, 0x2e, 0xf5, 0x90, 0xf5, 0x90, 0xf5, 0xfe, 0xf5, 0xff, 0xf5, + 0x79, 0xf6, 0x7b, 0xf6, 0x01, 0xf7, 0x02, 0xf7, 0x90, 0xf7, 0x92, 0xf7, + 0x2e, 0xf8, 0x2d, 0xf8, 0xd0, 0xf8, 0xd3, 0xf8, 0x7d, 0xf9, 0x7c, 0xf9, + 0x2d, 0xfa, 0x31, 0xfa, 0xe9, 0xfa, 0xe8, 0xfa, 0xa5, 0xfb, 0xa8, 0xfb, + 0x67, 0xfc, 0x67, 0xfc, 0x2e, 0xfd, 0x2e, 0xfd, 0xf4, 0xfd, 0xf7, 0xfd, + 0xbf, 0xfe, 0xbf, 0xfe, 0x8a, 0xff, 0x8a, 0xff, 0x51, 0x00, 0x53, 0x00, + 0x1b, 0x01, 0x1b, 0x01, 0xdf, 0x01, 0xe0, 0x01, 0xa3, 0x02, 0xa5, 0x02, + 0x64, 0x03, 0x63, 0x03, 0x1e, 0x04, 0x20, 0x04, 0xd5, 0x04, 0xd5, 0x04, + 0x87, 0x05, 0x87, 0x05, 0x2f, 0x06, 0x31, 0x06, 0xd5, 0x06, 0xd3, 0x06, + 0x6e, 0x07, 0x6f, 0x07, 0x02, 0x08, 0x03, 0x08, 0x8c, 0x08, 0x8b, 0x08, + 0x0a, 0x09, 0x0c, 0x09, 0x84, 0x09, 0x84, 0x09, 0xec, 0x09, 0xec, 0x09, + 0x4c, 0x0a, 0x4e, 0x0a, 0x9f, 0x0a, 0x9f, 0x0a, 0xe3, 0x0a, 0xe6, 0x0a, + 0x1f, 0x0b, 0x1f, 0x0b, 0x4a, 0x0b, 0x4c, 0x0b, 0x6b, 0x0b, 0x6c, 0x0b, + 0x79, 0x0b, 0x79, 0x0b, 0x7d, 0x0b, 0x7e, 0x0b, 0x71, 0x0b, 0x72, 0x0b, + 0x57, 0x0b, 0x58, 0x0b, 0x2e, 0x0b, 0x2f, 0x0b, 0xf3, 0x0a, 0xf4, 0x0a, + 0xae, 0x0a, 0xb0, 0x0a, 0x58, 0x0a, 0x58, 0x0a, 0xf5, 0x09, 0xf7, 0x09, + 0x86, 0x09, 0x87, 0x09, 0x0a, 0x09, 0x0b, 0x09, 0x82, 0x08, 0x83, 0x08, + 0xf1, 0x07, 0xf3, 0x07, 0x55, 0x07, 0x57, 0x07, 0xb2, 0x06, 0xb3, 0x06, + 0x05, 0x06, 0x06, 0x06, 0x51, 0x05, 0x53, 0x05, 0x97, 0x04, 0x9a, 0x04, + 0xda, 0x03, 0xd9, 0x03, 0x15, 0x03, 0x18, 0x03, 0x4f, 0x02, 0x4f, 0x02, + 0x87, 0x01, 0x88, 0x01, 0xbc, 0x00, 0xbd, 0x00, 0xf4, 0xff, 0xf6, 0xff, + 0x2a, 0xff, 0x2a, 0xff, 0x64, 0xfe, 0x64, 0xfe, 0x9c, 0xfd, 0x9c, 0xfd, + 0xd8, 0xfc, 0xd9, 0xfc, 0x18, 0xfc, 0x19, 0xfc, 0x5d, 0xfb, 0x5d, 0xfb, + 0xa9, 0xfa, 0xa9, 0xfa, 0xf7, 0xf9, 0xf9, 0xf9, 0x4f, 0xf9, 0x50, 0xf9, + 0xaf, 0xf8, 0xaf, 0xf8, 0x13, 0xf8, 0x14, 0xf8, 0x86, 0xf7, 0x87, 0xf7, + 0xfa, 0xf6, 0xfd, 0xf6, 0x80, 0xf6, 0x81, 0xf6, 0x0b, 0xf6, 0x0d, 0xf6, + 0xa6, 0xf5, 0xa6, 0xf5, 0x4a, 0xf5, 0x4a, 0xf5, 0xfa, 0xf4, 0xfa, 0xf4, + 0xb9, 0xf4, 0xb9, 0xf4, 0x80, 0xf4, 0x82, 0xf4, 0x5b, 0xf4, 0x5a, 0xf4, + 0x3f, 0xf4, 0x40, 0xf4, 0x35, 0xf4, 0x36, 0xf4, 0x39, 0xf4, 0x38, 0xf4, + 0x48, 0xf4, 0x4a, 0xf4, 0x6c, 0xf4, 0x6c, 0xf4, 0x9a, 0xf4, 0x9c, 0xf4, + 0xd8, 0xf4, 0xd9, 0xf4, 0x24, 0xf5, 0x26, 0xf5, 0x7e, 0xf5, 0x7f, 0xf5, + 0xe6, 0xf5, 0xe9, 0xf5, 0x59, 0xf6, 0x5b, 0xf6, 0xda, 0xf6, 0xdc, 0xf6, + 0x67, 0xf7, 0x68, 0xf7, 0xfa, 0xf7, 0xfd, 0xf7, 0x9e, 0xf8, 0x9e, 0xf8, + 0x43, 0xf9, 0x44, 0xf9, 0xf3, 0xf9, 0xf4, 0xf9, 0xab, 0xfa, 0xac, 0xfa, + 0x64, 0xfb, 0x65, 0xfb, 0x28, 0xfc, 0x29, 0xfc, 0xeb, 0xfc, 0xec, 0xfc, + 0xb3, 0xfd, 0xb4, 0xfd, 0x7f, 0xfe, 0x82, 0xfe, 0x49, 0xff, 0x48, 0xff, + 0x15, 0x00, 0x18, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xa9, 0x01, 0xac, 0x01, + 0x70, 0x02, 0x70, 0x02, 0x35, 0x03, 0x36, 0x03, 0xf4, 0x03, 0xf6, 0x03, + 0xb4, 0x04, 0xb2, 0x04, 0x66, 0x05, 0x69, 0x05, 0x18, 0x06, 0x19, 0x06, + 0xc1, 0x06, 0xc2, 0x06, 0x63, 0x07, 0x65, 0x07, 0xfe, 0x07, 0xfe, 0x07, + 0x8d, 0x08, 0x90, 0x08, 0x19, 0x09, 0x17, 0x09, 0x92, 0x09, 0x95, 0x09, + 0x07, 0x0a, 0x07, 0x0a, 0x6f, 0x0a, 0x6d, 0x0a, 0xc9, 0x0a, 0xcb, 0x0a, + 0x18, 0x0b, 0x19, 0x0b, 0x5a, 0x0b, 0x5b, 0x0b, 0x8e, 0x0b, 0x8f, 0x0b, + 0xb6, 0x0b, 0xb6, 0x0b, 0xcf, 0x0b, 0xd0, 0x0b, 0xda, 0x0b, 0xda, 0x0b, + 0xd4, 0x0b, 0xd6, 0x0b, 0xc3, 0x0b, 0xc5, 0x0b, 0xa1, 0x0b, 0xa1, 0x0b, + 0x6f, 0x0b, 0x6f, 0x0b, 0x2f, 0x0b, 0x32, 0x0b, 0xe1, 0x0a, 0xe1, 0x0a, + 0x86, 0x0a, 0x87, 0x0a, 0x1b, 0x0a, 0x1d, 0x0a, 0xa6, 0x09, 0xa5, 0x09, + 0x23, 0x09, 0x26, 0x09, 0x98, 0x08, 0x97, 0x08, 0x03, 0x08, 0x04, 0x08, + 0x62, 0x07, 0x63, 0x07, 0xbc, 0x06, 0xbd, 0x06, 0x0a, 0x06, 0x0c, 0x06, + 0x54, 0x05, 0x56, 0x05, 0x98, 0x04, 0x99, 0x04, 0xd8, 0x03, 0xd9, 0x03, + 0x14, 0x03, 0x16, 0x03, 0x4c, 0x02, 0x4e, 0x02, 0x84, 0x01, 0x86, 0x01, + 0xbd, 0x00, 0xbe, 0x00, 0xf1, 0xff, 0xf3, 0xff, 0x29, 0xff, 0x2a, 0xff, + 0x61, 0xfe, 0x65, 0xfe, 0x9e, 0xfd, 0x9d, 0xfd, 0xdb, 0xfc, 0xdf, 0xfc, + 0x1f, 0xfc, 0x21, 0xfc, 0x68, 0xfb, 0x6a, 0xfb, 0xb5, 0xfa, 0xb7, 0xfa, + 0x09, 0xfa, 0x09, 0xfa, 0x63, 0xf9, 0x68, 0xf9, 0xc7, 0xf8, 0xc5, 0xf8, + 0x2f, 0xf8, 0x33, 0xf8, 0xa3, 0xf7, 0xa4, 0xf7, 0x1f, 0xf7, 0x21, 0xf7, + 0xa5, 0xf6, 0xa8, 0xf6, 0x39, 0xf6, 0x3a, 0xf6, 0xd3, 0xf5, 0xd7, 0xf5, + 0x7e, 0xf5, 0x7e, 0xf5, 0x32, 0xf5, 0x35, 0xf5, 0xf4, 0xf4, 0xf4, 0xf4, + 0xc3, 0xf4, 0xc6, 0xf4, 0xa1, 0xf4, 0xa1, 0xf4, 0x88, 0xf4, 0x8b, 0xf4, + 0x84, 0xf4, 0x84, 0xf4, 0x8a, 0xf4, 0x8a, 0xf4, 0xa3, 0xf4, 0xa2, 0xf4, + 0xc3, 0xf4, 0xc5, 0xf4, 0xf9, 0xf4, 0xf9, 0xf4, 0x3b, 0xf5, 0x3c, 0xf5, + 0x8b, 0xf5, 0x89, 0xf5, 0xe6, 0xf5, 0xeb, 0xf5, 0x54, 0xf6, 0x52, 0xf6, + 0xc9, 0xf6, 0xcc, 0xf6, 0x4d, 0xf7, 0x4e, 0xf7, 0xdc, 0xf7, 0xdd, 0xf7, + 0x76, 0xf8, 0x77, 0xf8, 0x17, 0xf9, 0x16, 0xf9, 0xc2, 0xf9, 0xc4, 0xf9, + 0x75, 0xfa, 0x74, 0xfa, 0x2b, 0xfb, 0x2c, 0xfb, 0xe9, 0xfb, 0xea, 0xfb, + 0xaa, 0xfc, 0xab, 0xfc, 0x71, 0xfd, 0x73, 0xfd, 0x3b, 0xfe, 0x3a, 0xfe, + 0x03, 0xff, 0x06, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0x9b, 0x00, 0x9d, 0x00, + 0x65, 0x01, 0x64, 0x01, 0x2e, 0x02, 0x2f, 0x02, 0xf3, 0x02, 0xf3, 0x02, + 0xb6, 0x03, 0xb8, 0x03, 0x74, 0x04, 0x73, 0x04, 0x2c, 0x05, 0x2d, 0x05, + 0xe1, 0x05, 0xe2, 0x05, 0x8e, 0x06, 0x8d, 0x06, 0x31, 0x07, 0x34, 0x07, + 0xd3, 0x07, 0xd3, 0x07, 0x65, 0x08, 0x64, 0x08, 0xf3, 0x08, 0xf6, 0x08, + 0x77, 0x09, 0x75, 0x09, 0xec, 0x09, 0xf0, 0x09, 0x5c, 0x0a, 0x5c, 0x0a, + 0xba, 0x0a, 0xbd, 0x0a, 0x11, 0x0b, 0x12, 0x0b, 0x58, 0x0b, 0x5a, 0x0b, + 0x95, 0x0b, 0x95, 0x0b, 0xc1, 0x0b, 0xc2, 0x0b, 0xe0, 0x0b, 0xe3, 0x0b, + 0xf3, 0x0b, 0xf4, 0x0b, 0xf3, 0x0b, 0xf7, 0x0b, 0xea, 0x0b, 0xea, 0x0b, + 0xce, 0x0b, 0xd1, 0x0b, 0xa5, 0x0b, 0xa6, 0x0b, 0x6c, 0x0b, 0x6e, 0x0b, + 0x23, 0x0b, 0x25, 0x0b, 0xd0, 0x0a, 0xd1, 0x0a, 0x6b, 0x0a, 0x6c, 0x0a, + 0xfb, 0x09, 0xfd, 0x09, 0x80, 0x09, 0x82, 0x09, 0xf9, 0x08, 0xfa, 0x08, + 0x68, 0x08, 0x6b, 0x08, 0xcd, 0x07, 0xce, 0x07, 0x28, 0x07, 0x2a, 0x07, + 0x7c, 0x06, 0x7c, 0x06, 0xc7, 0x05, 0xc8, 0x05, 0x0c, 0x05, 0x0f, 0x05, + 0x4e, 0x04, 0x50, 0x04, 0x8b, 0x03, 0x8c, 0x03, 0xc1, 0x02, 0xc5, 0x02, + 0xfc, 0x01, 0xfc, 0x01, 0x30, 0x01, 0x33, 0x01, 0x67, 0x00, 0x66, 0x00, + 0x9b, 0xff, 0x9e, 0xff, 0xd3, 0xfe, 0xd3, 0xfe, 0x0a, 0xfe, 0x0d, 0xfe, + 0x47, 0xfd, 0x49, 0xfd, 0x86, 0xfc, 0x87, 0xfc, 0xca, 0xfb, 0xcc, 0xfb, + 0x11, 0xfb, 0x12, 0xfb, 0x5e, 0xfa, 0x5f, 0xfa, 0xb3, 0xf9, 0xb6, 0xf9, + 0x0e, 0xf9, 0x0f, 0xf9, 0x72, 0xf8, 0x74, 0xf8, 0xdf, 0xf7, 0xe0, 0xf7, + 0x54, 0xf7, 0x54, 0xf7, 0xd4, 0xf6, 0xd5, 0xf6, 0x5b, 0xf6, 0x5d, 0xf6, + 0xf2, 0xf5, 0xf2, 0xf5, 0x90, 0xf5, 0x92, 0xf5, 0x3e, 0xf5, 0x3e, 0xf5, + 0xf7, 0xf4, 0xf9, 0xf4, 0xba, 0xf4, 0xbc, 0xf4, 0x91, 0xf4, 0x92, 0xf4, + 0x6e, 0xf4, 0x71, 0xf4, 0x61, 0xf4, 0x60, 0xf4, 0x5c, 0xf4, 0x60, 0xf4, + 0x69, 0xf4, 0x6a, 0xf4, 0x85, 0xf4, 0x88, 0xf4, 0xac, 0xf4, 0xae, 0xf4, + 0xe9, 0xf4, 0xeb, 0xf4, 0x2e, 0xf5, 0x30, 0xf5, 0x84, 0xf5, 0x86, 0xf5, + 0xe7, 0xf5, 0xe7, 0xf5, 0x57, 0xf6, 0x5a, 0xf6, 0xd2, 0xf6, 0xd4, 0xf6, + 0x5c, 0xf7, 0x5d, 0xf7, 0xec, 0xf7, 0xee, 0xf7, 0x89, 0xf8, 0x8b, 0xf8, + 0x2d, 0xf9, 0x2f, 0xf9, 0xdb, 0xf9, 0xdd, 0xf9, 0x8f, 0xfa, 0x90, 0xfa, + 0x46, 0xfb, 0x49, 0xfb, 0x06, 0xfc, 0x08, 0xfc, 0xc8, 0xfc, 0xca, 0xfc, + 0x90, 0xfd, 0x90, 0xfd, 0x56, 0xfe, 0x59, 0xfe, 0x21, 0xff, 0x20, 0xff, + 0xeb, 0xff, 0xee, 0xff, 0xb2, 0x00, 0xb3, 0x00, 0x7c, 0x01, 0x7e, 0x01, + 0x3f, 0x02, 0x3f, 0x02, 0x04, 0x03, 0x06, 0x03, 0xc2, 0x03, 0xc4, 0x03, + 0x7c, 0x04, 0x7d, 0x04, 0x31, 0x05, 0x34, 0x05, 0xe0, 0x05, 0xe1, 0x05, + 0x88, 0x06, 0x8b, 0x06, 0x29, 0x07, 0x2b, 0x07, 0xc1, 0x07, 0xc4, 0x07, + 0x53, 0x08, 0x54, 0x08, 0xd5, 0x08, 0xda, 0x08, 0x56, 0x09, 0x58, 0x09, + 0xc8, 0x09, 0xc8, 0x09, 0x2f, 0x0a, 0x34, 0x0a, 0x8c, 0x0a, 0x8c, 0x0a, + 0xd9, 0x0a, 0xdc, 0x0a, 0x1d, 0x0b, 0x1d, 0x0b, 0x4f, 0x0b, 0x54, 0x0b, + 0x79, 0x0b, 0x79, 0x0b, 0x90, 0x0b, 0x94, 0x0b, 0x9b, 0x0b, 0x9c, 0x0b, + 0x9d, 0x0b, 0x9d, 0x0b, 0x85, 0x0b, 0x8c, 0x0b, 0x6b, 0x0b, 0x6b, 0x0b, + 0x3b, 0x0b, 0x3d, 0x0b, 0xfd, 0x0a, 0xff, 0x0a, 0xb3, 0x0a, 0xb2, 0x0a, + 0x54, 0x0a, 0x57, 0x0a, 0xf0, 0x09, 0xf2, 0x09, 0x7e, 0x09, 0x7e, 0x09, + 0xf9, 0x08, 0xfc, 0x08, 0x72, 0x08, 0x73, 0x08, 0xda, 0x07, 0xdd, 0x07, + 0x3d, 0x07, 0x3f, 0x07, 0x96, 0x06, 0x96, 0x06, 0xe5, 0x05, 0xe7, 0x05, + 0x30, 0x05, 0x30, 0x05, 0x72, 0x04, 0x74, 0x04, 0xb2, 0x03, 0xb3, 0x03, + 0xeb, 0x02, 0xed, 0x02, 0x24, 0x02, 0x25, 0x02, 0x59, 0x01, 0x5a, 0x01, + 0x8e, 0x00, 0x90, 0x00, 0xc3, 0xff, 0xc2, 0xff, 0xf6, 0xfe, 0xfa, 0xfe, + 0x32, 0xfe, 0x30, 0xfe, 0x64, 0xfd, 0x68, 0xfd, 0xa5, 0xfc, 0xa5, 0xfc, + 0xe3, 0xfb, 0xe3, 0xfb, 0x26, 0xfb, 0x29, 0xfb, 0x72, 0xfa, 0x72, 0xfa, + 0xbf, 0xf9, 0xbf, 0xf9, 0x18, 0xf9, 0x1b, 0xf9, 0x74, 0xf8, 0x74, 0xf8, + 0xde, 0xf7, 0xe0, 0xf7, 0x4b, 0xf7, 0x4c, 0xf7, 0xc5, 0xf6, 0xc7, 0xf6, + 0x49, 0xf6, 0x4b, 0xf6, 0xd5, 0xf5, 0xd6, 0xf5, 0x73, 0xf5, 0x74, 0xf5, + 0x15, 0xf5, 0x16, 0xf5, 0xc8, 0xf4, 0xcb, 0xf4, 0x89, 0xf4, 0x89, 0xf4, + 0x52, 0xf4, 0x54, 0xf4, 0x2f, 0xf4, 0x31, 0xf4, 0x16, 0xf4, 0x17, 0xf4, + 0x0d, 0xf4, 0x0d, 0xf4, 0x12, 0xf4, 0x15, 0xf4, 0x26, 0xf4, 0x28, 0xf4, + 0x4d, 0xf4, 0x4e, 0xf4, 0x7d, 0xf4, 0x80, 0xf4, 0xbf, 0xf4, 0xc1, 0xf4, + 0x0e, 0xf5, 0x12, 0xf5, 0x6c, 0xf5, 0x6c, 0xf5, 0xd3, 0xf5, 0xd7, 0xf5, + 0x4c, 0xf6, 0x4d, 0xf6, 0xcb, 0xf6, 0xcd, 0xf6, 0x5c, 0xf7, 0x5f, 0xf7, + 0xf1, 0xf7, 0xf2, 0xf7, 0x93, 0xf8, 0x95, 0xf8, 0x3b, 0xf9, 0x3d, 0xf9, + 0xec, 0xf9, 0xec, 0xf9, 0xa3, 0xfa, 0xa6, 0xfa, 0x5c, 0xfb, 0x5e, 0xfb, + 0x20, 0xfc, 0x20, 0xfc, 0xe3, 0xfc, 0xe4, 0xfc, 0xaa, 0xfd, 0xac, 0xfd, + 0x73, 0xfe, 0x75, 0xfe, 0x3c, 0xff, 0x3f, 0xff, 0x09, 0x00, 0x09, 0x00, + 0xcf, 0x00, 0xd1, 0x00, 0x97, 0x01, 0x97, 0x01, 0x5b, 0x02, 0x5d, 0x02, + 0x1b, 0x03, 0x1c, 0x03, 0xdb, 0x03, 0xda, 0x03, 0x91, 0x04, 0x93, 0x04, + 0x45, 0x05, 0x47, 0x05, 0xf0, 0x05, 0xf1, 0x05, 0x96, 0x06, 0x98, 0x06, + 0x34, 0x07, 0x36, 0x07, 0xcb, 0x07, 0xcb, 0x07, 0x55, 0x08, 0x58, 0x08, + 0xdb, 0x08, 0xdb, 0x08, 0x54, 0x09, 0x56, 0x09, 0xc2, 0x09, 0xc5, 0x09, + 0x26, 0x0a, 0x25, 0x0a, 0x7c, 0x0a, 0x81, 0x0a, 0xc7, 0x0a, 0xc7, 0x0a, + 0x06, 0x0b, 0x0a, 0x0b, 0x36, 0x0b, 0x35, 0x0b, 0x59, 0x0b, 0x5d, 0x0b, + 0x6f, 0x0b, 0x6f, 0x0b, 0x77, 0x0b, 0x7b, 0x0b, 0x6f, 0x0b, 0x70, 0x0b, + 0x5a, 0x0b, 0x5b, 0x0b, 0x36, 0x0b, 0x36, 0x0b, 0x03, 0x0b, 0x05, 0x0b, + 0xc1, 0x0a, 0xc2, 0x0a, 0x71, 0x0a, 0x72, 0x0a, 0x13, 0x0a, 0x14, 0x0a, + 0xa8, 0x09, 0xa9, 0x09, 0x30, 0x09, 0x32, 0x09, 0xad, 0x08, 0xaf, 0x08, + 0x20, 0x08, 0x21, 0x08, 0x87, 0x07, 0x89, 0x07, 0xe7, 0x06, 0xe8, 0x06, + 0x3c, 0x06, 0x3f, 0x06, 0x8c, 0x05, 0x8b, 0x05, 0xd5, 0x04, 0xd7, 0x04, + 0x17, 0x04, 0x18, 0x04, 0x55, 0x03, 0x57, 0x03, 0x92, 0x02, 0x94, 0x02, + 0xc8, 0x01, 0xcb, 0x01, 0x01, 0x01, 0x02, 0x01, 0x36, 0x00, 0x38, 0x00, + 0x6c, 0xff, 0x6e, 0xff, 0xa4, 0xfe, 0xa6, 0xfe, 0xdc, 0xfd, 0xdf, 0xfd, + 0x19, 0xfd, 0x1a, 0xfd, 0x57, 0xfc, 0x58, 0xfc, 0x99, 0xfb, 0x9c, 0xfb, + 0xe3, 0xfa, 0xe2, 0xfa, 0x31, 0xfa, 0x33, 0xfa, 0x88, 0xf9, 0x88, 0xf9, + 0xe2, 0xf8, 0xe3, 0xf8, 0x46, 0xf8, 0x48, 0xf8, 0xb3, 0xf7, 0xb3, 0xf7, + 0x28, 0xf7, 0x29, 0xf7, 0xa7, 0xf6, 0xa7, 0xf6, 0x31, 0xf6, 0x33, 0xf6, + 0xc8, 0xf5, 0xc7, 0xf5, 0x68, 0xf5, 0x69, 0xf5, 0x15, 0xf5, 0x16, 0xf5, + 0xcd, 0xf4, 0xcd, 0xf4, 0x94, 0xf4, 0x96, 0xf4, 0x69, 0xf4, 0x68, 0xf4, + 0x46, 0xf4, 0x49, 0xf4, 0x3b, 0xf4, 0x3a, 0xf4, 0x36, 0xf4, 0x38, 0xf4, + 0x43, 0xf4, 0x44, 0xf4, 0x61, 0xf4, 0x62, 0xf4, 0x89, 0xf4, 0x88, 0xf4, + 0xc6, 0xf4, 0xc7, 0xf4, 0x0b, 0xf5, 0x0d, 0xf5, 0x62, 0xf5, 0x61, 0xf5, + 0xc3, 0xf5, 0xc6, 0xf5, 0x34, 0xf6, 0x34, 0xf6, 0xae, 0xf6, 0xb1, 0xf6, + 0x37, 0xf7, 0x36, 0xf7, 0xc8, 0xf7, 0xca, 0xf7, 0x63, 0xf8, 0x63, 0xf8, + 0x08, 0xf9, 0x0b, 0xf9, 0xb6, 0xf9, 0xb5, 0xf9, 0x6a, 0xfa, 0x6c, 0xfa, + 0x23, 0xfb, 0x23, 0xfb, 0xe0, 0xfb, 0xe2, 0xfb, 0xa6, 0xfc, 0xa5, 0xfc, + 0x6a, 0xfd, 0x6c, 0xfd, 0x34, 0xfe, 0x34, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0xc8, 0xff, 0xcb, 0xff, 0x95, 0x00, 0x95, 0x00, 0x5e, 0x01, 0x5e, 0x01, + 0x25, 0x02, 0x26, 0x02, 0xea, 0x02, 0xea, 0x02, 0xa8, 0x03, 0xac, 0x03, + 0x67, 0x04, 0x67, 0x04, 0x1d, 0x05, 0x1e, 0x05, 0xcf, 0x05, 0xd1, 0x05, + 0x7a, 0x06, 0x7c, 0x06, 0x1e, 0x07, 0x20, 0x07, 0xba, 0x07, 0xbb, 0x07, + 0x4f, 0x08, 0x4f, 0x08, 0xd8, 0x08, 0xd9, 0x08, 0x58, 0x09, 0x59, 0x09, + 0xce, 0x09, 0xcf, 0x09, 0x38, 0x0a, 0x39, 0x0a, 0x99, 0x0a, 0x9c, 0x0a, + 0xec, 0x0a, 0xeb, 0x0a, 0x2f, 0x0b, 0x31, 0x0b, 0x69, 0x0b, 0x6b, 0x0b, + 0x95, 0x0b, 0x95, 0x0b, 0xb0, 0x0b, 0xb3, 0x0b, 0xc4, 0x0b, 0xc1, 0x0b, + 0xc0, 0x0b, 0xc3, 0x0b, 0xb2, 0x0b, 0xb4, 0x0b, 0x99, 0x0b, 0x98, 0x0b, + 0x6b, 0x0b, 0x6c, 0x0b, 0x2f, 0x0b, 0x2f, 0x0b, 0xe9, 0x0a, 0xea, 0x0a, + 0x8f, 0x0a, 0x8f, 0x0a, 0x2f, 0x0a, 0x2e, 0x0a, 0xbb, 0x09, 0xbc, 0x09, + 0x3e, 0x09, 0x3f, 0x09, 0xb8, 0x08, 0xb8, 0x08, 0x24, 0x08, 0x24, 0x08, + 0x88, 0x07, 0x8a, 0x07, 0xe3, 0x06, 0xe4, 0x06, 0x38, 0x06, 0x38, 0x06, + 0x84, 0x05, 0x85, 0x05, 0xcc, 0x04, 0xcc, 0x04, 0x0d, 0x04, 0x0e, 0x04, + 0x4b, 0x03, 0x4c, 0x03, 0x85, 0x02, 0x86, 0x02, 0xbd, 0x01, 0xbe, 0x01, + 0xf8, 0x00, 0xf9, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x66, 0xff, 0x68, 0xff, + 0x9f, 0xfe, 0x9f, 0xfe, 0xdb, 0xfd, 0xde, 0xfd, 0x1b, 0xfd, 0x1c, 0xfd, + 0x5b, 0xfc, 0x5b, 0xfc, 0xa2, 0xfb, 0xa5, 0xfb, 0xf0, 0xfa, 0xf0, 0xfa, + 0x40, 0xfa, 0x42, 0xfa, 0x9b, 0xf9, 0x9b, 0xf9, 0xf9, 0xf8, 0xfb, 0xf8, + 0x65, 0xf8, 0x66, 0xf8, 0xd4, 0xf7, 0xd5, 0xf7, 0x4f, 0xf7, 0x51, 0xf7, + 0xd5, 0xf6, 0xd5, 0xf6, 0x60, 0xf6, 0x64, 0xf6, 0xff, 0xf5, 0xff, 0xf5, + 0xa1, 0xf5, 0xa2, 0xf5, 0x55, 0xf5, 0x57, 0xf5, 0x15, 0xf5, 0x14, 0xf5, + 0xde, 0xf4, 0xe1, 0xf4, 0xb8, 0xf4, 0xb8, 0xf4, 0x9d, 0xf4, 0x9e, 0xf4, + 0x93, 0xf4, 0x94, 0xf4, 0x95, 0xf4, 0x96, 0xf4, 0xa7, 0xf4, 0xa7, 0xf4, + 0xc7, 0xf4, 0xc8, 0xf4, 0xf5, 0xf4, 0xf5, 0xf4, 0x33, 0xf5, 0x34, 0xf5, + 0x7d, 0xf5, 0x7f, 0xf5, 0xd9, 0xf5, 0xd9, 0xf5, 0x3e, 0xf6, 0x40, 0xf6, + 0xb3, 0xf6, 0xb2, 0xf6, 0x2e, 0xf7, 0x2f, 0xf7, 0xbc, 0xf7, 0xbc, 0xf7, + 0x4d, 0xf8, 0x50, 0xf8, 0xef, 0xf8, 0xed, 0xf8, 0x95, 0xf9, 0x95, 0xf9, + 0x43, 0xfa, 0x42, 0xfa, 0xfa, 0xfa, 0xf9, 0xfa, 0xb2, 0xfb, 0xb4, 0xfb, + 0x73, 0xfc, 0x74, 0xfc, 0x38, 0xfd, 0x38, 0xfd, 0xfc, 0xfd, 0xfd, 0xfd, + 0xc8, 0xfe, 0xc8, 0xfe, 0x90, 0xff, 0x91, 0xff, 0x5b, 0x00, 0x5b, 0x00, + 0x24, 0x01, 0x26, 0x01, 0xef, 0x01, 0xee, 0x01, 0xb1, 0x02, 0xb2, 0x02, + 0x76, 0x03, 0x76, 0x03, 0x33, 0x04, 0x33, 0x04, 0xed, 0x04, 0xee, 0x04, + 0xa2, 0x05, 0xa2, 0x05, 0x4e, 0x06, 0x50, 0x06, 0xf9, 0x06, 0xf7, 0x06, + 0x94, 0x07, 0x96, 0x07, 0x2f, 0x08, 0x2e, 0x08, 0xbb, 0x08, 0xbe, 0x08, + 0x40, 0x09, 0x40, 0x09, 0xbc, 0x09, 0xbe, 0x09, 0x29, 0x0a, 0x2a, 0x0a, + 0x8f, 0x0a, 0x92, 0x0a, 0xe7, 0x0a, 0xe6, 0x0a, 0x32, 0x0b, 0x35, 0x0b, + 0x71, 0x0b, 0x72, 0x0b, 0xa2, 0x0b, 0xa3, 0x0b, 0xc7, 0x0b, 0xc6, 0x0b, + 0xdb, 0x0b, 0xdb, 0x0b, 0xe3, 0x0b, 0xe4, 0x0b, 0xda, 0x0b, 0xda, 0x0b, + 0xc4, 0x0b, 0xc5, 0x0b, 0xa1, 0x0b, 0xa0, 0x0b, 0x6a, 0x0b, 0x6b, 0x0b, + 0x2b, 0x0b, 0x2a, 0x0b, 0xd8, 0x0a, 0xd9, 0x0a, 0x7a, 0x0a, 0x79, 0x0a, + 0x0f, 0x0a, 0x11, 0x0a, 0x97, 0x09, 0x97, 0x09, 0x16, 0x09, 0x16, 0x09, + 0x85, 0x08, 0x87, 0x08, 0xf1, 0x07, 0xf0, 0x07, 0x4f, 0x07, 0x51, 0x07, + 0xa8, 0x06, 0xa7, 0x06, 0xf6, 0x05, 0xf9, 0x05, 0x40, 0x05, 0x3f, 0x05, + 0x85, 0x04, 0x86, 0x04, 0xc1, 0x03, 0xc3, 0x03, 0x01, 0x03, 0x01, 0x03, + 0x37, 0x02, 0x39, 0x02, 0x70, 0x01, 0x70, 0x01, 0xa4, 0x00, 0xa8, 0x00, + 0xdf, 0xff, 0xde, 0xff, 0x14, 0xff, 0x15, 0xff, 0x4f, 0xfe, 0x50, 0xfe, + 0x8b, 0xfd, 0x8c, 0xfd, 0xc8, 0xfc, 0xc9, 0xfc, 0x0e, 0xfc, 0x0f, 0xfc, + 0x54, 0xfb, 0x55, 0xfb, 0xa3, 0xfa, 0xa4, 0xfa, 0xf7, 0xf9, 0xf9, 0xf9, + 0x50, 0xf9, 0x51, 0xf9, 0xb6, 0xf8, 0xb6, 0xf8, 0x1c, 0xf8, 0x1f, 0xf8, + 0x92, 0xf7, 0x91, 0xf7, 0x0e, 0xf7, 0x12, 0xf7, 0x96, 0xf6, 0x96, 0xf6, + 0x28, 0xf6, 0x2b, 0xf6, 0xc6, 0xf5, 0xc7, 0xf5, 0x6e, 0xf5, 0x6f, 0xf5, + 0x25, 0xf5, 0x28, 0xf5, 0xe9, 0xf4, 0xea, 0xf4, 0xb6, 0xf4, 0xba, 0xf4, + 0x96, 0xf4, 0x96, 0xf4, 0x80, 0xf4, 0x83, 0xf4, 0x7b, 0xf4, 0x7b, 0xf4, + 0x81, 0xf4, 0x85, 0xf4, 0x9a, 0xf4, 0x9a, 0xf4, 0xbf, 0xf4, 0xc1, 0xf4, + 0xf4, 0xf4, 0xf5, 0xf4, 0x36, 0xf5, 0x35, 0xf5, 0x87, 0xf5, 0x89, 0xf5, + 0xe6, 0xf5, 0xe7, 0xf5, 0x4f, 0xf6, 0x50, 0xf6, 0xc9, 0xf6, 0xc9, 0xf6, + 0x48, 0xf7, 0x4a, 0xf7, 0xdb, 0xf7, 0xda, 0xf7, 0x70, 0xf8, 0x71, 0xf8, + 0x12, 0xf9, 0x13, 0xf9, 0xbc, 0xf9, 0xbc, 0xf9, 0x6b, 0xfa, 0x6a, 0xfa, + 0x20, 0xfb, 0x23, 0xfb, 0xdd, 0xfb, 0xda, 0xfb, 0x9d, 0xfc, 0x9e, 0xfc, + 0x5e, 0xfd, 0x5e, 0xfd, 0x26, 0xfe, 0x26, 0xfe, 0xed, 0xfe, 0xee, 0xfe, + 0xb5, 0xff, 0xb6, 0xff, 0x7f, 0x00, 0x80, 0x00, 0x43, 0x01, 0x44, 0x01, + 0x0a, 0x02, 0x0d, 0x02, 0xcd, 0x02, 0xcb, 0x02, 0x8a, 0x03, 0x8c, 0x03, + 0x45, 0x04, 0x45, 0x04, 0xfa, 0x04, 0xfb, 0x04, 0xab, 0x05, 0xac, 0x05, + 0x52, 0x06, 0x51, 0x06, 0xf7, 0x06, 0xf8, 0x06, 0x8f, 0x07, 0x8f, 0x07, + 0x23, 0x08, 0x23, 0x08, 0xab, 0x08, 0xab, 0x08, 0x28, 0x09, 0x28, 0x09, + 0x9d, 0x09, 0x9e, 0x09, 0x06, 0x0a, 0x06, 0x0a, 0x66, 0x0a, 0x66, 0x0a, + 0xb6, 0x0a, 0xb7, 0x0a, 0xfa, 0x0a, 0xfc, 0x0a, 0x34, 0x0b, 0x35, 0x0b, + 0x5e, 0x0b, 0x5f, 0x0b, 0x7c, 0x0b, 0x7c, 0x0b, 0x8b, 0x0b, 0x8d, 0x0b, + 0x8c, 0x0b, 0x8b, 0x0b, 0x81, 0x0b, 0x81, 0x0b, 0x63, 0x0b, 0x64, 0x0b, + 0x3a, 0x0b, 0x3a, 0x0b, 0x01, 0x0b, 0x01, 0x0b, 0xb8, 0x0a, 0xb9, 0x0a, + 0x65, 0x0a, 0x66, 0x0a, 0xff, 0x09, 0x00, 0x0a, 0x92, 0x09, 0x92, 0x09, + 0x15, 0x09, 0x16, 0x09, 0x8e, 0x08, 0x8f, 0x08, 0xfc, 0x07, 0xfd, 0x07, + 0x63, 0x07, 0x62, 0x07, 0xbe, 0x06, 0xbf, 0x06, 0x17, 0x06, 0x15, 0x06, + 0x61, 0x05, 0x63, 0x05, 0xa7, 0x04, 0xa8, 0x04, 0xea, 0x03, 0xe9, 0x03, + 0x25, 0x03, 0x27, 0x03, 0x60, 0x02, 0x61, 0x02, 0x98, 0x01, 0x97, 0x01, + 0xcf, 0x00, 0xcf, 0x00, 0x04, 0x00, 0x04, 0x00, 0x3a, 0xff, 0x3b, 0xff, + 0x72, 0xfe, 0x74, 0xfe, 0xac, 0xfd, 0xab, 0xfd, 0xe8, 0xfc, 0xe8, 0xfc, + 0x26, 0xfc, 0x26, 0xfc, 0x6a, 0xfb, 0x6c, 0xfb, 0xb4, 0xfa, 0xb3, 0xfa, + 0x03, 0xfa, 0x04, 0xfa, 0x5a, 0xf9, 0x5a, 0xf9, 0xb6, 0xf8, 0xb7, 0xf8, + 0x1d, 0xf8, 0x1d, 0xf8, 0x88, 0xf7, 0x8a, 0xf7, 0x03, 0xf7, 0x02, 0xf7, + 0x81, 0xf6, 0x82, 0xf6, 0x0e, 0xf6, 0x0e, 0xf6, 0xa6, 0xf5, 0xa8, 0xf5, + 0x47, 0xf5, 0x49, 0xf5, 0xf7, 0xf4, 0xf7, 0xf4, 0xb3, 0xf4, 0xb5, 0xf4, + 0x7c, 0xf4, 0x7b, 0xf4, 0x52, 0xf4, 0x53, 0xf4, 0x38, 0xf4, 0x38, 0xf4, + 0x26, 0xf4, 0x27, 0xf4, 0x2d, 0xf4, 0x2c, 0xf4, 0x38, 0xf4, 0x38, 0xf4, + 0x5a, 0xf4, 0x5b, 0xf4, 0x87, 0xf4, 0x89, 0xf4, 0xc2, 0xf4, 0xc2, 0xf4, + 0x11, 0xf5, 0x11, 0xf5, 0x66, 0xf5, 0x67, 0xf5, 0xcc, 0xf5, 0xce, 0xf5, + 0x3d, 0xf6, 0x3d, 0xf6, 0xb9, 0xf6, 0xbc, 0xf6, 0x43, 0xf7, 0x42, 0xf7, + 0xd5, 0xf7, 0xd7, 0xf7, 0x72, 0xf8, 0x73, 0xf8, 0x17, 0xf9, 0x1a, 0xf9, + 0xc5, 0xf9, 0xc4, 0xf9, 0x77, 0xfa, 0x7a, 0xfa, 0x32, 0xfb, 0x30, 0xfb, + 0xed, 0xfb, 0xf1, 0xfb, 0xb1, 0xfc, 0xaf, 0xfc, 0x73, 0xfd, 0x75, 0xfd, + 0x3c, 0xfe, 0x3c, 0xfe, 0x02, 0xff, 0x03, 0xff, 0xcc, 0xff, 0xce, 0xff, + 0x93, 0x00, 0x94, 0x00, 0x5c, 0x01, 0x5a, 0x01, 0x1c, 0x02, 0x1d, 0x02, + 0xdf, 0x02, 0xe1, 0x02, 0x9b, 0x03, 0x9c, 0x03, 0x53, 0x04, 0x53, 0x04, + 0x08, 0x05, 0x0b, 0x05, 0xb2, 0x05, 0xb2, 0x05, 0x5b, 0x06, 0x5d, 0x06, + 0xfb, 0x06, 0xfc, 0x06, 0x91, 0x07, 0x92, 0x07, 0x22, 0x08, 0x23, 0x08, + 0xa3, 0x08, 0xa4, 0x08, 0x22, 0x09, 0x22, 0x09, 0x90, 0x09, 0x92, 0x09, + 0xf7, 0x09, 0xf9, 0x09, 0x52, 0x0a, 0x52, 0x0a, 0x9d, 0x0a, 0xa0, 0x0a, + 0xe2, 0x0a, 0xe3, 0x0a, 0x14, 0x0b, 0x15, 0x0b, 0x3b, 0x0b, 0x3e, 0x0b, + 0x57, 0x0b, 0x55, 0x0b, 0x60, 0x0b, 0x61, 0x0b, 0x5c, 0x0b, 0x5e, 0x0b, + 0x4b, 0x0b, 0x4e, 0x0b, 0x2d, 0x0b, 0x2c, 0x0b, 0xfe, 0x0a, 0x00, 0x0b, + 0xbf, 0x0a, 0xbf, 0x0a, 0x75, 0x0a, 0x77, 0x0a, 0x1b, 0x0a, 0x1e, 0x0a, + 0xb6, 0x09, 0xb5, 0x09, 0x42, 0x09, 0x44, 0x09, 0xc4, 0x08, 0xc5, 0x08, + 0x38, 0x08, 0x3b, 0x08, 0xa8, 0x07, 0xa7, 0x07, 0x07, 0x07, 0x0a, 0x07, + 0x64, 0x06, 0x64, 0x06, 0xb6, 0x05, 0xb7, 0x05, 0x01, 0x05, 0x02, 0x05, + 0x47, 0x04, 0x48, 0x04, 0x89, 0x03, 0x89, 0x03, 0xc5, 0x02, 0xc5, 0x02, + 0xff, 0x01, 0x01, 0x02, 0x38, 0x01, 0x38, 0x01, 0x6e, 0x00, 0x6f, 0x00, + 0xa5, 0xff, 0xa6, 0xff, 0xdf, 0xfe, 0xde, 0xfe, 0x18, 0xfe, 0x19, 0xfe, + 0x53, 0xfd, 0x54, 0xfd, 0x92, 0xfc, 0x93, 0xfc, 0xd5, 0xfb, 0xd4, 0xfb, + 0x1d, 0xfb, 0x1e, 0xfb, 0x68, 0xfa, 0x68, 0xfa, 0xbc, 0xf9, 0xbc, 0xf9, + 0x16, 0xf9, 0x16, 0xf9, 0x79, 0xf8, 0x7a, 0xf8, 0xe5, 0xf7, 0xe4, 0xf7, + 0x57, 0xf7, 0x59, 0xf7, 0xd3, 0xf6, 0xd3, 0xf6, 0x5d, 0xf6, 0x5d, 0xf6, + 0xeb, 0xf5, 0xed, 0xf5, 0x8b, 0xf5, 0x8b, 0xf5, 0x34, 0xf5, 0x34, 0xf5, + 0xe8, 0xf4, 0xe9, 0xf4, 0xad, 0xf4, 0xad, 0xf4, 0x7c, 0xf4, 0x7c, 0xf4, + 0x5b, 0xf4, 0x5a, 0xf4, 0x45, 0xf4, 0x44, 0xf4, 0x3d, 0xf4, 0x3f, 0xf4, + 0x49, 0xf4, 0x47, 0xf4, 0x5d, 0xf4, 0x5c, 0xf4, 0x84, 0xf4, 0x83, 0xf4, + 0xbb, 0xf4, 0xbb, 0xf4, 0xfa, 0xf4, 0xfa, 0xf4, 0x4e, 0xf5, 0x4f, 0xf5, + 0xab, 0xf5, 0xa9, 0xf5, 0x16, 0xf6, 0x18, 0xf6, 0x8e, 0xf6, 0x8e, 0xf6, + 0x11, 0xf7, 0x11, 0xf7, 0x9c, 0xf7, 0x9e, 0xf7, 0x38, 0xf8, 0x36, 0xf8, + 0xd6, 0xf8, 0xd7, 0xf8, 0x83, 0xf9, 0x81, 0xf9, 0x30, 0xfa, 0x30, 0xfa, + 0xe8, 0xfa, 0xe8, 0xfa, 0xa6, 0xfb, 0xa6, 0xfb, 0x64, 0xfc, 0x64, 0xfc, + 0x2b, 0xfd, 0x2a, 0xfd, 0xef, 0xfd, 0xf1, 0xfd, 0xbb, 0xfe, 0xbb, 0xfe, + 0x84, 0xff, 0x85, 0xff, 0x4d, 0x00, 0x4d, 0x00, 0x17, 0x01, 0x18, 0x01, + 0xdd, 0x01, 0xde, 0x01, 0xa3, 0x02, 0xa4, 0x02, 0x65, 0x03, 0x67, 0x03, + 0x21, 0x04, 0x21, 0x04, 0xdc, 0x04, 0xdd, 0x04, 0x8d, 0x05, 0x8d, 0x05, + 0x3c, 0x06, 0x3c, 0x06, 0xdf, 0x06, 0xe0, 0x06, 0x7e, 0x07, 0x7f, 0x07, + 0x12, 0x08, 0x11, 0x08, 0xa1, 0x08, 0xa3, 0x08, 0x22, 0x09, 0x21, 0x09, + 0x9b, 0x09, 0x9d, 0x09, 0x09, 0x0a, 0x08, 0x0a, 0x6b, 0x0a, 0x6c, 0x0a, + 0xc4, 0x0a, 0xc4, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x49, 0x0b, 0x4a, 0x0b, + 0x77, 0x0b, 0x77, 0x0b, 0x99, 0x0b, 0x99, 0x0b, 0xae, 0x0b, 0xae, 0x0b, + 0xaf, 0x0b, 0xae, 0x0b, 0xa7, 0x0b, 0xa9, 0x0b, 0x90, 0x0b, 0x90, 0x0b, + 0x69, 0x0b, 0x69, 0x0b, 0x35, 0x0b, 0x35, 0x0b, 0xf0, 0x0a, 0xf0, 0x0a, + 0x9e, 0x0a, 0x9f, 0x0a, 0x3e, 0x0a, 0x3e, 0x0a, 0xd3, 0x09, 0xd2, 0x09, + 0x5a, 0x09, 0x5a, 0x09, 0xd6, 0x08, 0xd4, 0x08, 0x46, 0x08, 0x47, 0x08, + 0xad, 0x07, 0xab, 0x07, 0x0e, 0x07, 0x0e, 0x07, 0x64, 0x06, 0x64, 0x06, + 0xb5, 0x05, 0xb2, 0x05, 0xfb, 0x04, 0xfc, 0x04, 0x41, 0x04, 0x40, 0x04, + 0x82, 0x03, 0x81, 0x03, 0xbd, 0x02, 0xba, 0x02, 0xf6, 0x01, 0xf7, 0x01, + 0x2f, 0x01, 0x2d, 0x01, 0x65, 0x00, 0x64, 0x00, 0xa1, 0xff, 0x9f, 0xff, + 0xd7, 0xfe, 0xd6, 0xfe, 0x14, 0xfe, 0x13, 0xfe, 0x51, 0xfd, 0x51, 0xfd, + 0x90, 0xfc, 0x8f, 0xfc, 0xdb, 0xfb, 0xd9, 0xfb, 0x22, 0xfb, 0x1f, 0xfb, + 0x73, 0xfa, 0x72, 0xfa, 0xcb, 0xf9, 0xca, 0xf9, 0x27, 0xf9, 0x27, 0xf9, + 0x8e, 0xf8, 0x8d, 0xf8, 0xfc, 0xf7, 0xfb, 0xf7, 0x73, 0xf7, 0x72, 0xf7, + 0xf6, 0xf6, 0xf7, 0xf6, 0x7f, 0xf6, 0x7e, 0xf6, 0x18, 0xf6, 0x18, 0xf6, + 0xbb, 0xf5, 0xba, 0xf5, 0x6a, 0xf5, 0x68, 0xf5, 0x23, 0xf5, 0x22, 0xf5, + 0xed, 0xf4, 0xe9, 0xf4, 0xbe, 0xf4, 0xbf, 0xf4, 0xa5, 0xf4, 0xa1, 0xf4, + 0x94, 0xf4, 0x92, 0xf4, 0x91, 0xf4, 0x90, 0xf4, 0x9f, 0xf4, 0x9b, 0xf4, + 0xba, 0xf4, 0xb9, 0xf4, 0xe4, 0xf4, 0xe3, 0xf4, 0x1f, 0xf5, 0x1c, 0xf5, + 0x63, 0xf5, 0x63, 0xf5, 0xba, 0xf5, 0xb9, 0xf5, 0x1f, 0xf6, 0x1c, 0xf6, + 0x8a, 0xf6, 0x89, 0xf6, 0x07, 0xf7, 0x05, 0xf7, 0x8d, 0xf7, 0x8c, 0xf7, + 0x1f, 0xf8, 0x1e, 0xf8, 0xb9, 0xf8, 0xb9, 0xf8, 0x5f, 0xf9, 0x5c, 0xf9, + 0x0a, 0xfa, 0x09, 0xfa, 0xbd, 0xfa, 0xbb, 0xfa, 0x76, 0xfb, 0x76, 0xfb, + 0x36, 0xfc, 0x32, 0xfc, 0xf6, 0xfc, 0xf7, 0xfc, 0xbd, 0xfd, 0xbc, 0xfd, + 0x85, 0xfe, 0x84, 0xfe, 0x50, 0xff, 0x4f, 0xff, 0x1a, 0x00, 0x19, 0x00, + 0xe4, 0x00, 0xe5, 0x00, 0xad, 0x01, 0xab, 0x01, 0x74, 0x02, 0x74, 0x02, + 0x38, 0x03, 0x36, 0x03, 0xf8, 0x03, 0xf9, 0x03, 0xb5, 0x04, 0xb4, 0x04, + 0x6a, 0x05, 0x68, 0x05, 0x1c, 0x06, 0x19, 0x06, 0xc3, 0x06, 0xc4, 0x06, + 0x6a, 0x07, 0x67, 0x07, 0x00, 0x08, 0x01, 0x08, 0x94, 0x08, 0x91, 0x08, + 0x1b, 0x09, 0x1c, 0x09, 0x99, 0x09, 0x97, 0x09, 0x0e, 0x0a, 0x0e, 0x0a, + 0x73, 0x0a, 0x73, 0x0a, 0xd2, 0x0a, 0xd0, 0x0a, 0x21, 0x0b, 0x21, 0x0b, + 0x63, 0x0b, 0x61, 0x0b, 0x9a, 0x0b, 0x99, 0x0b, 0xc0, 0x0b, 0xbe, 0x0b, + 0xdc, 0x0b, 0xdb, 0x0b, 0xe6, 0x0b, 0xe5, 0x0b, 0xe4, 0x0b, 0xe3, 0x0b, + 0xd2, 0x0b, 0xd2, 0x0b, 0xb3, 0x0b, 0xb1, 0x0b, 0x83, 0x0b, 0x81, 0x0b, + 0x45, 0x0b, 0x45, 0x0b, 0xfb, 0x0a, 0xf7, 0x0a, 0x9e, 0x0a, 0x9f, 0x0a, + 0x39, 0x0a, 0x37, 0x0a, 0xc5, 0x09, 0xc3, 0x09, 0x46, 0x09, 0x47, 0x09, + 0xbb, 0x08, 0xb9, 0x08, 0x26, 0x08, 0x26, 0x08, 0x8a, 0x07, 0x89, 0x07, + 0xe1, 0x06, 0xe1, 0x06, 0x37, 0x06, 0x37, 0x06, 0x80, 0x05, 0x7e, 0x05, + 0xc6, 0x04, 0xc5, 0x04, 0x06, 0x04, 0x04, 0x04, 0x43, 0x03, 0x42, 0x03, + 0x7a, 0x02, 0x7a, 0x02, 0xb5, 0x01, 0xb2, 0x01, 0xe9, 0x00, 0xe8, 0x00, + 0x1f, 0x00, 0x1d, 0x00, 0x56, 0xff, 0x55, 0xff, 0x90, 0xfe, 0x8e, 0xfe, + 0xc9, 0xfd, 0xca, 0xfd, 0x07, 0xfd, 0x05, 0xfd, 0x49, 0xfc, 0x46, 0xfc, + 0x8f, 0xfb, 0x8d, 0xfb, 0xd9, 0xfa, 0xd7, 0xfa, 0x2c, 0xfa, 0x2a, 0xfa, + 0x82, 0xf9, 0x82, 0xf9, 0xe2, 0xf8, 0xe2, 0xf8, 0x4a, 0xf8, 0x47, 0xf8, + 0xba, 0xf7, 0xba, 0xf7, 0x35, 0xf7, 0x32, 0xf7, 0xb7, 0xf6, 0xb6, 0xf6, + 0x44, 0xf6, 0x45, 0xf6, 0xe2, 0xf5, 0xe0, 0xf5, 0x83, 0xf5, 0x83, 0xf5, + 0x38, 0xf5, 0x34, 0xf5, 0xf5, 0xf4, 0xf4, 0xf4, 0xbf, 0xf4, 0xbf, 0xf4, + 0x9b, 0xf4, 0x99, 0xf4, 0x80, 0xf4, 0x7f, 0xf4, 0x77, 0xf4, 0x76, 0xf4, + 0x7a, 0xf4, 0x78, 0xf4, 0x8c, 0xf4, 0x8a, 0xf4, 0xae, 0xf4, 0xac, 0xf4, + 0xdd, 0xf4, 0xdc, 0xf4, 0x1b, 0xf5, 0x1a, 0xf5, 0x67, 0xf5, 0x67, 0xf5, + 0xc4, 0xf5, 0xc2, 0xf5, 0x28, 0xf6, 0x29, 0xf6, 0x9d, 0xf6, 0x9b, 0xf6, + 0x1d, 0xf7, 0x1d, 0xf7, 0xa7, 0xf7, 0xa7, 0xf7, 0x40, 0xf8, 0x3e, 0xf8, + 0xdc, 0xf8, 0xdc, 0xf8, 0x84, 0xf9, 0x82, 0xf9, 0x34, 0xfa, 0x32, 0xfa, + 0xe8, 0xfa, 0xe7, 0xfa, 0xa4, 0xfb, 0xa3, 0xfb, 0x63, 0xfc, 0x62, 0xfc, + 0x27, 0xfd, 0x27, 0xfd, 0xec, 0xfd, 0xeb, 0xfd, 0xb6, 0xfe, 0xb5, 0xfe, + 0x7c, 0xff, 0x7c, 0xff, 0x4a, 0x00, 0x49, 0x00, 0x10, 0x01, 0x10, 0x01, + 0xd6, 0x01, 0xd2, 0x01, 0x9c, 0x02, 0x9d, 0x02, 0x5c, 0x03, 0x59, 0x03, + 0x1b, 0x04, 0x1b, 0x04, 0xd0, 0x04, 0xcf, 0x04, 0x87, 0x05, 0x84, 0x05, + 0x30, 0x06, 0x30, 0x06, 0xd8, 0x06, 0xd6, 0x06, 0x75, 0x07, 0x74, 0x07, + 0x0a, 0x08, 0x08, 0x08, 0x98, 0x08, 0x97, 0x08, 0x19, 0x09, 0x16, 0x09, + 0x90, 0x09, 0x8f, 0x09, 0x00, 0x0a, 0xfd, 0x09, 0x5f, 0x0a, 0x60, 0x0a, + 0xb9, 0x0a, 0xb6, 0x0a, 0x00, 0x0b, 0xfe, 0x0a, 0x3d, 0x0b, 0x3c, 0x0b, + 0x6e, 0x0b, 0x6a, 0x0b, 0x8d, 0x0b, 0x8c, 0x0b, 0xa1, 0x0b, 0xa0, 0x0b, + 0xa5, 0x0b, 0xa3, 0x0b, 0x9e, 0x0b, 0x9e, 0x0b, 0x87, 0x0b, 0x83, 0x0b, + 0x60, 0x0b, 0x5f, 0x0b, 0x2c, 0x0b, 0x29, 0x0b, 0xe6, 0x0a, 0xe4, 0x0a, + 0x96, 0x0a, 0x92, 0x0a, 0x34, 0x0a, 0x33, 0x0a, 0xc9, 0x09, 0xc6, 0x09, + 0x53, 0x09, 0x50, 0x09, 0xc9, 0x08, 0xc7, 0x08, 0x3d, 0x08, 0x3b, 0x08, + 0xa1, 0x07, 0xa1, 0x07, 0x02, 0x07, 0xfe, 0x06, 0x58, 0x06, 0x57, 0x06, + 0xa3, 0x05, 0xa2, 0x05, 0xed, 0x04, 0xed, 0x04, 0x2e, 0x04, 0x2a, 0x04, + 0x69, 0x03, 0x6a, 0x03, 0xa6, 0x02, 0xa1, 0x02, 0xd9, 0x01, 0xd9, 0x01, + 0x12, 0x01, 0x0f, 0x01, 0x44, 0x00, 0x42, 0x00, 0x7a, 0xff, 0x78, 0xff, + 0xb0, 0xfe, 0xae, 0xfe, 0xe7, 0xfd, 0xe5, 0xfd, 0x1f, 0xfd, 0x1f, 0xfd, + 0x5f, 0xfc, 0x5c, 0xfc, 0x9c, 0xfb, 0x9b, 0xfb, 0xe6, 0xfa, 0xe4, 0xfa, + 0x2f, 0xfa, 0x2e, 0xfa, 0x84, 0xf9, 0x83, 0xf9, 0xdd, 0xf8, 0xda, 0xf8, + 0x3f, 0xf8, 0x3e, 0xf8, 0xa9, 0xf7, 0xa8, 0xf7, 0x1b, 0xf7, 0x19, 0xf7, + 0x9a, 0xf6, 0x99, 0xf6, 0x21, 0xf6, 0x1f, 0xf6, 0xb4, 0xf5, 0xb2, 0xf5, + 0x53, 0xf5, 0x51, 0xf5, 0xfe, 0xf4, 0xfc, 0xf4, 0xb4, 0xf4, 0xb3, 0xf4, + 0x7a, 0xf4, 0x78, 0xf4, 0x4b, 0xf4, 0x48, 0xf4, 0x2b, 0xf4, 0x2a, 0xf4, + 0x19, 0xf4, 0x18, 0xf4, 0x15, 0xf4, 0x14, 0xf4, 0x22, 0xf4, 0x22, 0xf4, + 0x3f, 0xf4, 0x3c, 0xf4, 0x67, 0xf4, 0x66, 0xf4, 0xa1, 0xf4, 0xa1, 0xf4, + 0xe8, 0xf4, 0xe5, 0xf4, 0x3b, 0xf5, 0x3b, 0xf5, 0xa0, 0xf5, 0x9f, 0xf5, + 0x0b, 0xf6, 0x0a, 0xf6, 0x88, 0xf6, 0x88, 0xf6, 0x0e, 0xf7, 0x0c, 0xf7, + 0xa0, 0xf7, 0x9f, 0xf7, 0x39, 0xf8, 0x38, 0xf8, 0xe0, 0xf8, 0xde, 0xf8, + 0x8a, 0xf9, 0x8a, 0xf9, 0x3f, 0xfa, 0x3c, 0xfa, 0xf8, 0xfa, 0xf6, 0xfa, + 0xb4, 0xfb, 0xb3, 0xfb, 0x78, 0xfc, 0x76, 0xfc, 0x3c, 0xfd, 0x3b, 0xfd, + 0x05, 0xfe, 0x02, 0xfe, 0xcd, 0xfe, 0xcc, 0xfe, 0x98, 0xff, 0x97, 0xff, + 0x62, 0x00, 0x60, 0x00, 0x2b, 0x01, 0x2a, 0x01, 0xf3, 0x01, 0xef, 0x01, + 0xb5, 0x02, 0xb3, 0x02, 0x76, 0x03, 0x74, 0x03, 0x31, 0x04, 0x2d, 0x04, + 0xe6, 0x04, 0xe4, 0x04, 0x96, 0x05, 0x93, 0x05, 0x40, 0x06, 0x3e, 0x06, + 0xe4, 0x06, 0xe2, 0x06, 0x7d, 0x07, 0x7b, 0x07, 0x11, 0x08, 0x0f, 0x08, + 0x99, 0x08, 0x94, 0x08, 0x17, 0x09, 0x17, 0x09, 0x8e, 0x09, 0x8b, 0x09, + 0xf5, 0x09, 0xf4, 0x09, 0x55, 0x0a, 0x52, 0x0a, 0xa5, 0x0a, 0xa3, 0x0a, + 0xec, 0x0a, 0xe9, 0x0a, 0x22, 0x0b, 0x21, 0x0b, 0x4c, 0x0b, 0x4a, 0x0b, + 0x6b, 0x0b, 0x69, 0x0b, 0x78, 0x0b, 0x75, 0x0b, 0x7a, 0x0b, 0x78, 0x0b, + 0x6a, 0x0b, 0x69, 0x0b, 0x50, 0x0b, 0x4f, 0x0b, 0x25, 0x0b, 0x21, 0x0b, + 0xea, 0x0a, 0xea, 0x0a, 0xa2, 0x0a, 0x9e, 0x0a, 0x4a, 0x0a, 0x4a, 0x0a, + 0xe7, 0x09, 0xe4, 0x09, 0x74, 0x09, 0x73, 0x09, 0xfa, 0x08, 0xf8, 0x08, + 0x6f, 0x08, 0x6c, 0x08, 0xde, 0x07, 0xdb, 0x07, 0x41, 0x07, 0x3e, 0x07, + 0x9c, 0x06, 0x99, 0x06, 0xee, 0x05, 0xed, 0x05, 0x38, 0x05, 0x36, 0x05, + 0x7f, 0x04, 0x7e, 0x04, 0xbf, 0x03, 0xbc, 0x03, 0xfc, 0x02, 0xfa, 0x02, + 0x34, 0x02, 0x32, 0x02, 0x6b, 0x01, 0x69, 0x01, 0x9f, 0x00, 0x9d, 0x00, + 0xd6, 0xff, 0xd3, 0xff, 0x09, 0xff, 0x08, 0xff, 0x41, 0xfe, 0x3e, 0xfe, + 0x7a, 0xfd, 0x79, 0xfd, 0xb5, 0xfc, 0xb4, 0xfc, 0xf6, 0xfb, 0xf0, 0xfb, + 0x39, 0xfb, 0x3a, 0xfb, 0x83, 0xfa, 0x80, 0xfa, 0xd2, 0xf9, 0xcf, 0xf9, + 0x28, 0xf9, 0x29, 0xf9, 0x89, 0xf8, 0x86, 0xf8, 0xef, 0xf7, 0xed, 0xf7, + 0x5f, 0xf7, 0x5d, 0xf7, 0xd8, 0xf6, 0xd4, 0xf6, 0x59, 0xf6, 0x59, 0xf6, + 0xe9, 0xf5, 0xe7, 0xf5, 0x82, 0xf5, 0x7e, 0xf5, 0x27, 0xf5, 0x27, 0xf5, + 0xda, 0xf4, 0xd5, 0xf4, 0x98, 0xf4, 0x97, 0xf4, 0x65, 0xf4, 0x63, 0xf4, + 0x40, 0xf4, 0x3c, 0xf4, 0x25, 0xf4, 0x25, 0xf4, 0x1e, 0xf4, 0x1a, 0xf4, + 0x21, 0xf4, 0x20, 0xf4, 0x37, 0xf4, 0x34, 0xf4, 0x57, 0xf4, 0x56, 0xf4, + 0x8c, 0xf4, 0x8a, 0xf4, 0xcb, 0xf4, 0xc8, 0xf4, 0x1c, 0xf5, 0x1b, 0xf5, + 0x75, 0xf5, 0x74, 0xf5, 0xe0, 0xf5, 0xde, 0xf5, 0x55, 0xf6, 0x52, 0xf6, + 0xd6, 0xf6, 0xd4, 0xf6, 0x65, 0xf7, 0x61, 0xf7, 0xfb, 0xf7, 0xfa, 0xf7, + 0x9d, 0xf8, 0x99, 0xf8, 0x45, 0xf9, 0x44, 0xf9, 0xf7, 0xf9, 0xf4, 0xf9, + 0xac, 0xfa, 0xab, 0xfa, 0x6b, 0xfb, 0x69, 0xfb, 0x2a, 0xfc, 0x27, 0xfc, + 0xf1, 0xfc, 0xef, 0xfc, 0xb8, 0xfd, 0xb6, 0xfd, 0x86, 0xfe, 0x83, 0xfe, + 0x4f, 0xff, 0x4d, 0xff, 0x1c, 0x00, 0x1a, 0x00, 0xe9, 0x00, 0xe8, 0x00, + 0xb0, 0x01, 0xae, 0x01, 0x7b, 0x02, 0x79, 0x02, 0x3d, 0x03, 0x3a, 0x03, + 0xfe, 0x03, 0xfd, 0x03, 0xb9, 0x04, 0xb8, 0x04, 0x70, 0x05, 0x6c, 0x05, + 0x1e, 0x06, 0x1c, 0x06, 0xc8, 0x06, 0xc5, 0x06, 0x69, 0x07, 0x67, 0x07, + 0x00, 0x08, 0xff, 0x07, 0x94, 0x08, 0x8f, 0x08, 0x15, 0x09, 0x15, 0x09, + 0x94, 0x09, 0x8f, 0x09, 0x03, 0x0a, 0x02, 0x0a, 0x6b, 0x0a, 0x67, 0x0a, + 0xc5, 0x0a, 0xc3, 0x0a, 0x11, 0x0b, 0x0d, 0x0b, 0x51, 0x0b, 0x4f, 0x0b, + 0x84, 0x0b, 0x80, 0x0b, 0xa9, 0x0b, 0xa6, 0x0b, 0xc0, 0x0b, 0xbd, 0x0b, + 0xc9, 0x0b, 0xc3, 0x0b, 0xc0, 0x0b, 0xc0, 0x0b, 0xad, 0x0b, 0xa9, 0x0b, + 0x89, 0x0b, 0x85, 0x0b, 0x57, 0x0b, 0x55, 0x0b, 0x14, 0x0b, 0x0f, 0x0b, + 0xc3, 0x0a, 0xc2, 0x0a, 0x66, 0x0a, 0x62, 0x0a, 0xfb, 0x09, 0xf7, 0x09, + 0x85, 0x09, 0x82, 0x09, 0x01, 0x09, 0xfe, 0x08, 0x73, 0x08, 0x6f, 0x08, + 0xdb, 0x07, 0xd9, 0x07, 0x3b, 0x07, 0x37, 0x07, 0x93, 0x06, 0x90, 0x06, + 0xe0, 0x05, 0xde, 0x05, 0x2a, 0x05, 0x26, 0x05, 0x6c, 0x04, 0x6c, 0x04, + 0xaa, 0x03, 0xa7, 0x03, 0xe6, 0x02, 0xe2, 0x02, 0x1c, 0x02, 0x1c, 0x02, + 0x55, 0x01, 0x51, 0x01, 0x89, 0x00, 0x86, 0x00, 0xbf, 0xff, 0xbd, 0xff, + 0xf9, 0xfe, 0xf5, 0xfe, 0x2e, 0xfe, 0x2e, 0xfe, 0x6e, 0xfd, 0x6b, 0xfd, + 0xa8, 0xfc, 0xa7, 0xfc, 0xed, 0xfb, 0xeb, 0xfb, 0x36, 0xfb, 0x33, 0xfb, + 0x80, 0xfa, 0x7e, 0xfa, 0xd6, 0xf9, 0xd4, 0xf9, 0x31, 0xf9, 0x2e, 0xf9, + 0x93, 0xf8, 0x90, 0xf8, 0x00, 0xf8, 0xfd, 0xf7, 0x72, 0xf7, 0x70, 0xf7, + 0xf3, 0xf6, 0xf0, 0xf6, 0x7b, 0xf6, 0x79, 0xf6, 0x0e, 0xf6, 0x0b, 0xf6, + 0xaf, 0xf5, 0xaa, 0xf5, 0x58, 0xf5, 0x58, 0xf5, 0x11, 0xf5, 0x0d, 0xf5, + 0xd7, 0xf4, 0xd5, 0xf4, 0xa5, 0xf4, 0xa3, 0xf4, 0x8a, 0xf4, 0x85, 0xf4, + 0x74, 0xf4, 0x73, 0xf4, 0x73, 0xf4, 0x6f, 0xf4, 0x7c, 0xf4, 0x7a, 0xf4, + 0x96, 0xf4, 0x92, 0xf4, 0xbf, 0xf4, 0xbe, 0xf4, 0xf6, 0xf4, 0xf0, 0xf4, + 0x3c, 0xf5, 0x3a, 0xf5, 0x8f, 0xf5, 0x8b, 0xf5, 0xef, 0xf5, 0xed, 0xf5, + 0x5e, 0xf6, 0x5b, 0xf6, 0xd6, 0xf6, 0xd3, 0xf6, 0x5e, 0xf7, 0x5c, 0xf7, + 0xee, 0xf7, 0xea, 0xf7, 0x8a, 0xf8, 0x87, 0xf8, 0x2d, 0xf9, 0x2a, 0xf9, + 0xd8, 0xf9, 0xd7, 0xf9, 0x8f, 0xfa, 0x8b, 0xfa, 0x47, 0xfb, 0x45, 0xfb, + 0x08, 0xfc, 0x04, 0xfc, 0xca, 0xfc, 0xc7, 0xfc, 0x93, 0xfd, 0x90, 0xfd, + 0x5b, 0xfe, 0x59, 0xfe, 0x26, 0xff, 0x23, 0xff, 0xf5, 0xff, 0xf1, 0xff, + 0xbf, 0x00, 0xbc, 0x00, 0x8c, 0x01, 0x88, 0x01, 0x53, 0x02, 0x50, 0x02, + 0x1b, 0x03, 0x18, 0x03, 0xde, 0x03, 0xdb, 0x03, 0x9b, 0x04, 0x97, 0x04, + 0x56, 0x05, 0x54, 0x05, 0x08, 0x06, 0x03, 0x06, 0xb5, 0x06, 0xb3, 0x06, + 0x5a, 0x07, 0x56, 0x07, 0xf8, 0x07, 0xf6, 0x07, 0x8b, 0x08, 0x89, 0x08, + 0x17, 0x09, 0x13, 0x09, 0x99, 0x09, 0x97, 0x09, 0x0d, 0x0a, 0x0a, 0x0a, + 0x7a, 0x0a, 0x77, 0x0a, 0xd7, 0x0a, 0xd4, 0x0a, 0x2d, 0x0b, 0x29, 0x0b, + 0x70, 0x0b, 0x6d, 0x0b, 0xa8, 0x0b, 0xa5, 0x0b, 0xd3, 0x0b, 0xd1, 0x0b, + 0xf0, 0x0b, 0xeb, 0x0b, 0xfd, 0x0b, 0xfe, 0x0b, 0x01, 0x0c, 0xfa, 0x0b, + 0xee, 0x0b, 0xeb, 0x0b, 0xd1, 0x0b, 0xce, 0x0b, 0xa5, 0x0b, 0xa2, 0x0b, + 0x69, 0x0b, 0x65, 0x0b, 0x1e, 0x0b, 0x1a, 0x0b, 0xc4, 0x0a, 0xc0, 0x0a, + 0x60, 0x0a, 0x5d, 0x0a, 0xed, 0x09, 0xe9, 0x09, 0x72, 0x09, 0x6e, 0x09, + 0xe5, 0x08, 0xe3, 0x08, 0x53, 0x08, 0x4d, 0x08, 0xb5, 0x07, 0xb3, 0x07, + 0x0f, 0x07, 0x0b, 0x07, 0x61, 0x06, 0x5e, 0x06, 0xab, 0x05, 0xa6, 0x05, + 0xf1, 0x04, 0xee, 0x04, 0x30, 0x04, 0x2d, 0x04, 0x6c, 0x03, 0x68, 0x03, + 0xa4, 0x02, 0xa2, 0x02, 0xdb, 0x01, 0xd5, 0x01, 0x10, 0x01, 0x0d, 0x01, + 0x44, 0x00, 0x40, 0x00, 0x7a, 0xff, 0x76, 0xff, 0xb1, 0xfe, 0xad, 0xfe, + 0xea, 0xfd, 0xe6, 0xfd, 0x25, 0xfd, 0x22, 0xfd, 0x64, 0xfc, 0x60, 0xfc, + 0xaa, 0xfb, 0xa4, 0xfb, 0xf2, 0xfa, 0xee, 0xfa, 0x41, 0xfa, 0x3d, 0xfa, + 0x97, 0xf9, 0x94, 0xf9, 0xf5, 0xf8, 0xf1, 0xf8, 0x57, 0xf8, 0x55, 0xf8, + 0xc8, 0xf7, 0xc4, 0xf7, 0x3e, 0xf7, 0x3b, 0xf7, 0xc2, 0xf6, 0xbd, 0xf6, + 0x4b, 0xf6, 0x49, 0xf6, 0xe3, 0xf5, 0xe0, 0xf5, 0x88, 0xf5, 0x84, 0xf5, + 0x37, 0xf5, 0x35, 0xf5, 0xf2, 0xf4, 0xee, 0xf4, 0xbe, 0xf4, 0xba, 0xf4, + 0x93, 0xf4, 0x90, 0xf4, 0x78, 0xf4, 0x76, 0xf4, 0x6d, 0xf4, 0x69, 0xf4, + 0x6c, 0xf4, 0x69, 0xf4, 0x7f, 0xf4, 0x7a, 0xf4, 0x9c, 0xf4, 0x99, 0xf4, + 0xca, 0xf4, 0xc7, 0xf4, 0x07, 0xf5, 0x03, 0xf5, 0x52, 0xf5, 0x4f, 0xf5, + 0xac, 0xf5, 0xa8, 0xf5, 0x11, 0xf6, 0x0e, 0xf6, 0x84, 0xf6, 0x81, 0xf6, + 0x01, 0xf7, 0xfe, 0xf6, 0x8e, 0xf7, 0x8a, 0xf7, 0x22, 0xf8, 0x1e, 0xf8, + 0xc0, 0xf8, 0xbd, 0xf8, 0x69, 0xf9, 0x65, 0xf9, 0x15, 0xfa, 0x12, 0xfa, + 0xcd, 0xfa, 0xca, 0xfa, 0x85, 0xfb, 0x82, 0xfb, 0x48, 0xfc, 0x45, 0xfc, + 0x0b, 0xfd, 0x07, 0xfd, 0xd2, 0xfd, 0xcf, 0xfd, 0x9a, 0xfe, 0x9a, 0xfe, + 0x65, 0xff, 0x62, 0xff, 0x31, 0x00, 0x2d, 0x00, 0xfb, 0x00, 0xf8, 0x00, + 0xc3, 0x01, 0xbf, 0x01, 0x8b, 0x02, 0x87, 0x02, 0x4c, 0x03, 0x49, 0x03, + 0x0c, 0x04, 0x09, 0x04, 0xc6, 0x04, 0xc3, 0x04, 0x79, 0x05, 0x77, 0x05, + 0x2b, 0x06, 0x27, 0x06, 0xd0, 0x06, 0xce, 0x06, 0x71, 0x07, 0x6f, 0x07, + 0x07, 0x08, 0x04, 0x08, 0x96, 0x08, 0x94, 0x08, 0x1c, 0x09, 0x18, 0x09, + 0x94, 0x09, 0x92, 0x09, 0x07, 0x0a, 0x01, 0x0a, 0x69, 0x0a, 0x67, 0x0a, + 0xc4, 0x0a, 0xbe, 0x0a, 0x0b, 0x0b, 0x0a, 0x0b, 0x4c, 0x0b, 0x47, 0x0b, + 0x7e, 0x0b, 0x7b, 0x0b, 0xa1, 0x0b, 0x9c, 0x0b, 0xb6, 0x0b, 0xb2, 0x0b, + 0xbc, 0x0b, 0xb9, 0x0b, 0xb7, 0x0b, 0xb2, 0x0b, 0xa0, 0x0b, 0x9d, 0x0b, + 0x7b, 0x0b, 0x78, 0x0b, 0x47, 0x0b, 0x45, 0x0b, 0x04, 0x0b, 0x02, 0x0b, + 0xb5, 0x0a, 0xb0, 0x0a, 0x57, 0x0a, 0x54, 0x0a, 0xef, 0x09, 0xe9, 0x09, + 0x72, 0x09, 0x70, 0x09, 0xf2, 0x08, 0xee, 0x08, 0x63, 0x08, 0x5f, 0x08, + 0xc8, 0x07, 0xc6, 0x07, 0x29, 0x07, 0x26, 0x07, 0x7d, 0x06, 0x79, 0x06, + 0xcd, 0x05, 0xca, 0x05, 0x14, 0x05, 0x10, 0x05, 0x56, 0x04, 0x52, 0x04, + 0x94, 0x03, 0x92, 0x03, 0xcd, 0x02, 0xc7, 0x02, 0x03, 0x02, 0x02, 0x02, + 0x36, 0x01, 0x31, 0x01, 0x6a, 0x00, 0x67, 0x00, 0x9f, 0xff, 0x9c, 0xff, + 0xd4, 0xfe, 0xd0, 0xfe, 0x0b, 0xfe, 0x08, 0xfe, 0x42, 0xfd, 0x3e, 0xfd, + 0x7f, 0xfc, 0x7a, 0xfc, 0xbe, 0xfb, 0xb9, 0xfb, 0x03, 0xfb, 0xfd, 0xfa, + 0x4f, 0xfa, 0x4c, 0xfa, 0x9f, 0xf9, 0x9a, 0xf9, 0xf8, 0xf8, 0xf4, 0xf8, + 0x55, 0xf8, 0x51, 0xf8, 0xc1, 0xf7, 0xbc, 0xf7, 0x2f, 0xf7, 0x2c, 0xf7, + 0xaa, 0xf6, 0xa7, 0xf6, 0x34, 0xf6, 0x2f, 0xf6, 0xc0, 0xf5, 0xbd, 0xf5, + 0x62, 0xf5, 0x5c, 0xf5, 0x07, 0xf5, 0x03, 0xf5, 0xc0, 0xf4, 0xba, 0xf4, + 0x80, 0xf4, 0x7c, 0xf4, 0x50, 0xf4, 0x4b, 0xf4, 0x30, 0xf4, 0x2d, 0xf4, + 0x18, 0xf4, 0x15, 0xf4, 0x17, 0xf4, 0x12, 0xf4, 0x1e, 0xf4, 0x1a, 0xf4, + 0x37, 0xf4, 0x33, 0xf4, 0x5f, 0xf4, 0x5c, 0xf4, 0x94, 0xf4, 0x91, 0xf4, + 0xdc, 0xf4, 0xd9, 0xf4, 0x2f, 0xf5, 0x29, 0xf5, 0x8e, 0xf5, 0x8c, 0xf5, + 0xfc, 0xf5, 0xf8, 0xf5, 0x75, 0xf6, 0x71, 0xf6, 0xfa, 0xf6, 0xf8, 0xf6, + 0x89, 0xf7, 0x84, 0xf7, 0x23, 0xf8, 0x21, 0xf8, 0xc6, 0xf8, 0xc3, 0xf8, + 0x71, 0xf9, 0x6d, 0xf9, 0x23, 0xfa, 0x21, 0xfa, 0xde, 0xfa, 0xd7, 0xfa, + 0x9a, 0xfb, 0x97, 0xfb, 0x5c, 0xfc, 0x59, 0xfc, 0x21, 0xfd, 0x1e, 0xfd, + 0xea, 0xfd, 0xe7, 0xfd, 0xb1, 0xfe, 0xae, 0xfe, 0x7d, 0xff, 0x79, 0xff, + 0x47, 0x00, 0x44, 0x00, 0x0f, 0x01, 0x0c, 0x01, 0xd8, 0x01, 0xd4, 0x01, + 0x9a, 0x02, 0x97, 0x02, 0x5d, 0x03, 0x59, 0x03, 0x19, 0x04, 0x15, 0x04, + 0xd1, 0x04, 0xcd, 0x04, 0x82, 0x05, 0x7f, 0x05, 0x2b, 0x06, 0x27, 0x06, + 0xd1, 0x06, 0xcf, 0x06, 0x6d, 0x07, 0x68, 0x07, 0x01, 0x08, 0xfd, 0x07, + 0x8b, 0x08, 0x86, 0x08, 0x0b, 0x09, 0x07, 0x09, 0x81, 0x09, 0x7c, 0x09, + 0xec, 0x09, 0xe9, 0x09, 0x4c, 0x0a, 0x49, 0x0a, 0xa0, 0x0a, 0x9d, 0x0a, + 0xe6, 0x0a, 0xe3, 0x0a, 0x20, 0x0b, 0x1b, 0x0b, 0x4b, 0x0b, 0x48, 0x0b, + 0x6c, 0x0b, 0x69, 0x0b, 0x7b, 0x0b, 0x76, 0x0b, 0x7d, 0x0b, 0x79, 0x0b, + 0x72, 0x0b, 0x6d, 0x0b, 0x56, 0x0b, 0x52, 0x0b, 0x2d, 0x0b, 0x29, 0x0b, + 0xf7, 0x0a, 0xf3, 0x0a, 0xad, 0x0a, 0xab, 0x0a, 0x5c, 0x0a, 0x56, 0x0a, + 0xf7, 0x09, 0xf4, 0x09, 0x89, 0x09, 0x84, 0x09, 0x0f, 0x09, 0x09, 0x09, + 0x86, 0x08, 0x83, 0x08, 0xf6, 0x07, 0xf3, 0x07, 0x5b, 0x07, 0x55, 0x07, + 0xb2, 0x06, 0xaf, 0x06, 0x0b, 0x06, 0x08, 0x06, 0x55, 0x05, 0x51, 0x05, + 0x9d, 0x04, 0x98, 0x04, 0xdd, 0x03, 0xd9, 0x03, 0x19, 0x03, 0x15, 0x03, + 0x53, 0x02, 0x50, 0x02, 0x89, 0x01, 0x84, 0x01, 0xbd, 0x00, 0xb9, 0x00, + 0xf2, 0xff, 0xee, 0xff, 0x27, 0xff, 0x23, 0xff, 0x5e, 0xfe, 0x5b, 0xfe, + 0x96, 0xfd, 0x91, 0xfd, 0xd1, 0xfc, 0xcf, 0xfc, 0x10, 0xfc, 0x0a, 0xfc, + 0x55, 0xfb, 0x53, 0xfb, 0x9c, 0xfa, 0x98, 0xfa, 0xec, 0xf9, 0xe9, 0xf9, + 0x41, 0xf9, 0x3d, 0xf9, 0x9d, 0xf8, 0x99, 0xf8, 0x03, 0xf8, 0x00, 0xf8, + 0x70, 0xf7, 0x6c, 0xf7, 0xe8, 0xf6, 0xe5, 0xf6, 0x6b, 0xf6, 0x67, 0xf6, + 0xf5, 0xf5, 0xf3, 0xf5, 0x90, 0xf5, 0x8a, 0xf5, 0x31, 0xf5, 0x2e, 0xf5, + 0xe3, 0xf4, 0xde, 0xf4, 0x9f, 0xf4, 0x9c, 0xf4, 0x6b, 0xf4, 0x66, 0xf4, + 0x43, 0xf4, 0x3f, 0xf4, 0x28, 0xf4, 0x23, 0xf4, 0x1d, 0xf4, 0x16, 0xf4, + 0x1f, 0xf4, 0x1a, 0xf4, 0x32, 0xf4, 0x2c, 0xf4, 0x50, 0xf4, 0x4d, 0xf4, + 0x82, 0xf4, 0x7c, 0xf4, 0xbf, 0xf4, 0xbc, 0xf4, 0x0a, 0xf5, 0x06, 0xf5, + 0x68, 0xf5, 0x64, 0xf5, 0xcc, 0xf5, 0xc8, 0xf5, 0x41, 0xf6, 0x3d, 0xf6, + 0xc0, 0xf6, 0xba, 0xf6, 0x47, 0xf7, 0x47, 0xf7, 0xe0, 0xf7, 0xdb, 0xf7, + 0x7a, 0xf8, 0x79, 0xf8, 0x27, 0xf9, 0x23, 0xf9, 0xd4, 0xf9, 0xd1, 0xf9, + 0x8a, 0xfa, 0x86, 0xfa, 0x46, 0xfb, 0x43, 0xfb, 0x08, 0xfc, 0x02, 0xfc, + 0xce, 0xfc, 0xcb, 0xfc, 0x92, 0xfd, 0x8e, 0xfd, 0x5f, 0xfe, 0x5c, 0xfe, + 0x29, 0xff, 0x24, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xc0, 0x00, 0xbe, 0x00, + 0x89, 0x01, 0x84, 0x01, 0x52, 0x02, 0x4f, 0x02, 0x16, 0x03, 0x12, 0x03, + 0xd6, 0x03, 0xd4, 0x03, 0x93, 0x04, 0x90, 0x04, 0x48, 0x05, 0x43, 0x05, + 0xfb, 0x05, 0xf8, 0x05, 0xa3, 0x06, 0x9f, 0x06, 0x44, 0x07, 0x43, 0x07, + 0xe1, 0x07, 0xdd, 0x07, 0x70, 0x08, 0x6c, 0x08, 0xfa, 0x08, 0xf7, 0x08, + 0x77, 0x09, 0x72, 0x09, 0xea, 0x09, 0xe6, 0x09, 0x4e, 0x0a, 0x4d, 0x0a, + 0xab, 0x0a, 0xa6, 0x0a, 0xfc, 0x0a, 0xfa, 0x0a, 0x3a, 0x0b, 0x36, 0x0b, + 0x73, 0x0b, 0x6f, 0x0b, 0x96, 0x0b, 0x94, 0x0b, 0xb2, 0x0b, 0xae, 0x0b, + 0xbb, 0x0b, 0xb7, 0x0b, 0xb7, 0x0b, 0xb4, 0x0b, 0xa5, 0x0b, 0xa2, 0x0b, + 0x83, 0x0b, 0x7f, 0x0b, 0x55, 0x0b, 0x50, 0x0b, 0x14, 0x0b, 0x10, 0x0b, + 0xc8, 0x0a, 0xc4, 0x0a, 0x6c, 0x0a, 0x69, 0x0a, 0x05, 0x0a, 0x01, 0x0a, + 0x8f, 0x09, 0x8c, 0x09, 0x0d, 0x09, 0x0c, 0x09, 0x85, 0x08, 0x80, 0x08, + 0xeb, 0x07, 0xeb, 0x07, 0x50, 0x07, 0x4a, 0x07, 0xa6, 0x06, 0xa4, 0x06, + 0xf8, 0x05, 0xf4, 0x05, 0x41, 0x05, 0x3e, 0x05, 0x86, 0x04, 0x85, 0x04, + 0xc6, 0x03, 0xc2, 0x03, 0x01, 0x03, 0xff, 0x02, 0x3c, 0x02, 0x38, 0x02, + 0x71, 0x01, 0x6e, 0x01, 0xa7, 0x00, 0xa4, 0x00, 0xde, 0xff, 0xdb, 0xff, + 0x15, 0xff, 0x12, 0xff, 0x4f, 0xfe, 0x4c, 0xfe, 0x89, 0xfd, 0x87, 0xfd, + 0xca, 0xfc, 0xc5, 0xfc, 0x08, 0xfc, 0x06, 0xfc, 0x53, 0xfb, 0x4e, 0xfb, + 0x9e, 0xfa, 0x9c, 0xfa, 0xef, 0xf9, 0xec, 0xf9, 0x4b, 0xf9, 0x48, 0xf9, + 0xab, 0xf8, 0xa9, 0xf8, 0x18, 0xf8, 0x14, 0xf8, 0x8a, 0xf7, 0x88, 0xf7, + 0x06, 0xf7, 0x02, 0xf7, 0x90, 0xf6, 0x8c, 0xf6, 0x1f, 0xf6, 0x1d, 0xf6, + 0xbf, 0xf5, 0xb9, 0xf5, 0x66, 0xf5, 0x64, 0xf5, 0x1d, 0xf5, 0x1a, 0xf5, + 0xdf, 0xf4, 0xdb, 0xf4, 0xb0, 0xf4, 0xaf, 0xf4, 0x8e, 0xf4, 0x8a, 0xf4, + 0x79, 0xf4, 0x78, 0xf4, 0x73, 0xf4, 0x70, 0xf4, 0x7b, 0xf4, 0x78, 0xf4, + 0x92, 0xf4, 0x8f, 0xf4, 0xb9, 0xf4, 0xb4, 0xf4, 0xeb, 0xf4, 0xe9, 0xf4, + 0x2f, 0xf5, 0x2b, 0xf5, 0x80, 0xf5, 0x7d, 0xf5, 0xdf, 0xf5, 0xdd, 0xf5, + 0x4b, 0xf6, 0x47, 0xf6, 0xc3, 0xf6, 0xc0, 0xf6, 0x44, 0xf7, 0x40, 0xf7, + 0xd5, 0xf7, 0xd3, 0xf7, 0x6d, 0xf8, 0x69, 0xf8, 0x0f, 0xf9, 0x0a, 0xf9, + 0xbb, 0xf9, 0xb9, 0xf9, 0x6b, 0xfa, 0x65, 0xfa, 0x25, 0xfb, 0x22, 0xfb, + 0xe2, 0xfb, 0xe0, 0xfb, 0xa6, 0xfc, 0xa1, 0xfc, 0x6c, 0xfd, 0x6a, 0xfd, + 0x34, 0xfe, 0x2f, 0xfe, 0x01, 0xff, 0xfe, 0xfe, 0xcb, 0xff, 0xc7, 0xff, + 0x97, 0x00, 0x93, 0x00, 0x62, 0x01, 0x5f, 0x01, 0x2b, 0x02, 0x27, 0x02, + 0xf4, 0x02, 0xef, 0x02, 0xb5, 0x03, 0xb3, 0x03, 0x75, 0x04, 0x70, 0x04, + 0x2e, 0x05, 0x2a, 0x05, 0xe3, 0x05, 0xdf, 0x05, 0x90, 0x06, 0x8d, 0x06, + 0x37, 0x07, 0x33, 0x07, 0xd7, 0x07, 0xd3, 0x07, 0x6b, 0x08, 0x68, 0x08, + 0xfa, 0x08, 0xf6, 0x08, 0x7b, 0x09, 0x78, 0x09, 0xf5, 0x09, 0xf0, 0x09, + 0x60, 0x0a, 0x5d, 0x0a, 0xc4, 0x0a, 0xbe, 0x0a, 0x15, 0x0b, 0x14, 0x0b, + 0x60, 0x0b, 0x5b, 0x0b, 0x9a, 0x0b, 0x97, 0x0b, 0xc9, 0x0b, 0xc5, 0x0b, + 0xe5, 0x0b, 0xe4, 0x0b, 0xfa, 0x0b, 0xf5, 0x0b, 0xf9, 0x0b, 0xf9, 0x0b, + 0xf0, 0x0b, 0xeb, 0x0b, 0xd1, 0x0b, 0xcf, 0x0b, 0xab, 0x0b, 0xa9, 0x0b, + 0x6f, 0x0b, 0x6b, 0x0b, 0x2a, 0x0b, 0x29, 0x0b, 0xd4, 0x0a, 0xd0, 0x0a, + 0x72, 0x0a, 0x6d, 0x0a, 0x03, 0x0a, 0x01, 0x0a, 0x85, 0x09, 0x81, 0x09, + 0x01, 0x09, 0xff, 0x08, 0x6d, 0x08, 0x69, 0x08, 0xd2, 0x07, 0xcf, 0x07, + 0x2e, 0x07, 0x2c, 0x07, 0x81, 0x06, 0x80, 0x06, 0xd2, 0x05, 0xce, 0x05, + 0x14, 0x05, 0x14, 0x05, 0x5b, 0x04, 0x57, 0x04, 0x93, 0x03, 0x90, 0x03, + 0xcf, 0x02, 0xcd, 0x02, 0x05, 0x02, 0x04, 0x02, 0x3b, 0x01, 0x38, 0x01, + 0x6f, 0x00, 0x6f, 0x00, 0xa6, 0xff, 0xa2, 0xff, 0xdc, 0xfe, 0xdb, 0xfe, + 0x15, 0xfe, 0x12, 0xfe, 0x50, 0xfd, 0x4e, 0xfd, 0x90, 0xfc, 0x8e, 0xfc, + 0xd2, 0xfb, 0xd0, 0xfb, 0x1a, 0xfb, 0x18, 0xfb, 0x6a, 0xfa, 0x67, 0xfa, + 0xbd, 0xf9, 0xba, 0xf9, 0x1b, 0xf9, 0x19, 0xf9, 0x7d, 0xf8, 0x7c, 0xf8, + 0xeb, 0xf7, 0xe9, 0xf7, 0x60, 0xf7, 0x5d, 0xf7, 0xdf, 0xf6, 0xdd, 0xf6, + 0x6b, 0xf6, 0x68, 0xf6, 0x00, 0xf6, 0xfe, 0xf5, 0xa1, 0xf5, 0x9f, 0xf5, + 0x4e, 0xf5, 0x4b, 0xf5, 0x08, 0xf5, 0x05, 0xf5, 0xce, 0xf4, 0xcd, 0xf4, + 0xa3, 0xf4, 0x9e, 0xf4, 0x86, 0xf4, 0x84, 0xf4, 0x77, 0xf4, 0x73, 0xf4, + 0x74, 0xf4, 0x72, 0xf4, 0x81, 0xf4, 0x7f, 0xf4, 0x9e, 0xf4, 0x9b, 0xf4, + 0xc8, 0xf4, 0xc6, 0xf4, 0x04, 0xf5, 0xfe, 0xf4, 0x4a, 0xf5, 0x48, 0xf5, + 0xa3, 0xf5, 0x9d, 0xf5, 0x01, 0xf6, 0x00, 0xf6, 0x74, 0xf6, 0x70, 0xf6, + 0xef, 0xf6, 0xed, 0xf6, 0x76, 0xf7, 0x74, 0xf7, 0x0a, 0xf8, 0x05, 0xf8, + 0xa5, 0xf8, 0xa2, 0xf8, 0x49, 0xf9, 0x45, 0xf9, 0xf8, 0xf9, 0xf4, 0xf9, + 0xab, 0xfa, 0xa7, 0xfa, 0x65, 0xfb, 0x62, 0xfb, 0x25, 0xfc, 0x21, 0xfc, + 0xe7, 0xfc, 0xe5, 0xfc, 0xaf, 0xfd, 0xab, 0xfd, 0x76, 0xfe, 0x74, 0xfe, + 0x41, 0xff, 0x3e, 0xff, 0x0e, 0x00, 0x0a, 0x00, 0xd5, 0x00, 0xd3, 0x00, + 0xa0, 0x01, 0x9f, 0x01, 0x66, 0x02, 0x62, 0x02, 0x29, 0x03, 0x28, 0x03, + 0xeb, 0x03, 0xe7, 0x03, 0xa5, 0x04, 0xa2, 0x04, 0x5c, 0x05, 0x5a, 0x05, + 0x0c, 0x06, 0x07, 0x06, 0xb4, 0x06, 0xb3, 0x06, 0x58, 0x07, 0x54, 0x07, + 0xef, 0x07, 0xec, 0x07, 0x81, 0x08, 0x7f, 0x08, 0x08, 0x09, 0x04, 0x09, + 0x83, 0x09, 0x82, 0x09, 0xf8, 0x09, 0xf4, 0x09, 0x5c, 0x0a, 0x5a, 0x0a, + 0xb8, 0x0a, 0xb5, 0x0a, 0x08, 0x0b, 0x06, 0x0b, 0x46, 0x0b, 0x44, 0x0b, + 0x7d, 0x0b, 0x79, 0x0b, 0xa4, 0x0b, 0xa2, 0x0b, 0xb9, 0x0b, 0xb6, 0x0b, + 0xc7, 0x0b, 0xc4, 0x0b, 0xc0, 0x0b, 0xbd, 0x0b, 0xae, 0x0b, 0xab, 0x0b, + 0x8b, 0x0b, 0x89, 0x0b, 0x5b, 0x0b, 0x58, 0x0b, 0x1e, 0x0b, 0x1c, 0x0b, + 0xd0, 0x0a, 0xcc, 0x0a, 0x75, 0x0a, 0x75, 0x0a, 0x0e, 0x0a, 0x09, 0x0a, + 0x98, 0x09, 0x97, 0x09, 0x19, 0x09, 0x15, 0x09, 0x8a, 0x08, 0x89, 0x08, + 0xf5, 0x07, 0xf1, 0x07, 0x55, 0x07, 0x52, 0x07, 0xac, 0x06, 0xa9, 0x06, + 0xfe, 0x05, 0xfb, 0x05, 0x46, 0x05, 0x42, 0x05, 0x8a, 0x04, 0x88, 0x04, + 0xc6, 0x03, 0xc3, 0x03, 0x01, 0x03, 0xfe, 0x02, 0x37, 0x02, 0x35, 0x02, + 0x6d, 0x01, 0x68, 0x01, 0xa0, 0x00, 0x9f, 0x00, 0xd1, 0xff, 0xce, 0xff, + 0x08, 0xff, 0x07, 0xff, 0x3c, 0xfe, 0x38, 0xfe, 0x75, 0xfd, 0x74, 0xfd, + 0xb2, 0xfc, 0xae, 0xfc, 0xec, 0xfb, 0xeb, 0xfb, 0x34, 0xfb, 0x30, 0xfb, + 0x7a, 0xfa, 0x77, 0xfa, 0xca, 0xf9, 0xc9, 0xf9, 0x21, 0xf9, 0x1d, 0xf9, + 0x7c, 0xf8, 0x7b, 0xf8, 0xe5, 0xf7, 0xe2, 0xf7, 0x52, 0xf7, 0x50, 0xf7, + 0xce, 0xf6, 0xcd, 0xf6, 0x4f, 0xf6, 0x4c, 0xf6, 0xdf, 0xf5, 0xdd, 0xf5, + 0x77, 0xf5, 0x75, 0xf5, 0x1d, 0xf5, 0x1c, 0xf5, 0xd2, 0xf4, 0xcf, 0xf4, + 0x8e, 0xf4, 0x8c, 0xf4, 0x5d, 0xf4, 0x5b, 0xf4, 0x37, 0xf4, 0x35, 0xf4, + 0x20, 0xf4, 0x1d, 0xf4, 0x17, 0xf4, 0x14, 0xf4, 0x1e, 0xf4, 0x1c, 0xf4, + 0x33, 0xf4, 0x31, 0xf4, 0x56, 0xf4, 0x54, 0xf4, 0x8b, 0xf4, 0x88, 0xf4, + 0xca, 0xf4, 0xc9, 0xf4, 0x1c, 0xf5, 0x1a, 0xf5, 0x78, 0xf5, 0x76, 0xf5, + 0xe3, 0xf5, 0xe2, 0xf5, 0x5a, 0xf6, 0x57, 0xf6, 0xdc, 0xf6, 0xdb, 0xf6, + 0x67, 0xf7, 0x66, 0xf7, 0xff, 0xf7, 0xfd, 0xf7, 0xa3, 0xf8, 0xa1, 0xf8, + 0x49, 0xf9, 0x47, 0xf9, 0xfe, 0xf9, 0xfc, 0xf9, 0xb1, 0xfa, 0xaf, 0xfa, + 0x70, 0xfb, 0x6f, 0xfb, 0x33, 0xfc, 0x2f, 0xfc, 0xf4, 0xfc, 0xf4, 0xfc, + 0xc0, 0xfd, 0xbb, 0xfd, 0x85, 0xfe, 0x86, 0xfe, 0x54, 0xff, 0x50, 0xff, + 0x1e, 0x00, 0x1b, 0x00, 0xe6, 0x00, 0xe4, 0x00, 0xb0, 0x01, 0xac, 0x01, + 0x73, 0x02, 0x72, 0x02, 0x37, 0x03, 0x33, 0x03, 0xf5, 0x03, 0xf2, 0x03, + 0xad, 0x04, 0xac, 0x04, 0x60, 0x05, 0x5d, 0x05, 0x0e, 0x06, 0x0c, 0x06, + 0xb3, 0x06, 0xb0, 0x06, 0x51, 0x07, 0x50, 0x07, 0xe8, 0x07, 0xe4, 0x07, + 0x72, 0x08, 0x71, 0x08, 0xf9, 0x08, 0xf5, 0x08, 0x6e, 0x09, 0x6d, 0x09, + 0xde, 0x09, 0xda, 0x09, 0x3e, 0x0a, 0x3d, 0x0a, 0x94, 0x0a, 0x92, 0x0a, + 0xde, 0x0a, 0xdc, 0x0a, 0x1a, 0x0b, 0x19, 0x0b, 0x49, 0x0b, 0x46, 0x0b, + 0x6a, 0x0b, 0x68, 0x0b, 0x7e, 0x0b, 0x7c, 0x0b, 0x82, 0x0b, 0x80, 0x0b, + 0x7b, 0x0b, 0x78, 0x0b, 0x62, 0x0b, 0x5f, 0x0b, 0x3b, 0x0b, 0x39, 0x0b, + 0x08, 0x0b, 0x05, 0x0b, 0xc1, 0x0a, 0xc0, 0x0a, 0x72, 0x0a, 0x70, 0x0a, + 0x11, 0x0a, 0x0f, 0x0a, 0xa5, 0x09, 0xa3, 0x09, 0x2c, 0x09, 0x29, 0x09, + 0xa6, 0x08, 0xa4, 0x08, 0x16, 0x08, 0x15, 0x08, 0x7d, 0x07, 0x7c, 0x07, + 0xd9, 0x06, 0xd8, 0x06, 0x31, 0x06, 0x2d, 0x06, 0x7b, 0x05, 0x7b, 0x05, + 0xc5, 0x04, 0xc1, 0x04, 0x05, 0x04, 0x05, 0x04, 0x41, 0x03, 0x3f, 0x03, + 0x7d, 0x02, 0x7a, 0x02, 0xb0, 0x01, 0xb0, 0x01, 0xe8, 0x00, 0xe4, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x4d, 0xff, 0x4c, 0xff, 0x86, 0xfe, 0x82, 0xfe, + 0xb9, 0xfd, 0xba, 0xfd, 0xf8, 0xfc, 0xf5, 0xfc, 0x35, 0xfc, 0x32, 0xfc, + 0x76, 0xfb, 0x76, 0xfb, 0xc0, 0xfa, 0xbd, 0xfa, 0x0c, 0xfa, 0x09, 0xfa, + 0x60, 0xf9, 0x61, 0xf9, 0xbc, 0xf8, 0xb8, 0xf8, 0x1e, 0xf8, 0x1f, 0xf8, + 0x8c, 0xf7, 0x88, 0xf7, 0x02, 0xf7, 0x00, 0xf7, 0x81, 0xf6, 0x7e, 0xf6, + 0x0c, 0xf6, 0x0a, 0xf6, 0xa1, 0xf5, 0x9e, 0xf5, 0x42, 0xf5, 0x40, 0xf5, + 0xef, 0xf4, 0xee, 0xf4, 0xaa, 0xf4, 0xa7, 0xf4, 0x72, 0xf4, 0x70, 0xf4, + 0x44, 0xf4, 0x43, 0xf4, 0x2b, 0xf4, 0x29, 0xf4, 0x1b, 0xf4, 0x1a, 0xf4, + 0x1c, 0xf4, 0x19, 0xf4, 0x29, 0xf4, 0x2a, 0xf4, 0x47, 0xf4, 0x44, 0xf4, + 0x75, 0xf4, 0x73, 0xf4, 0xaf, 0xf4, 0xae, 0xf4, 0xfa, 0xf4, 0xf7, 0xf4, + 0x50, 0xf5, 0x4e, 0xf5, 0xb5, 0xf5, 0xb4, 0xf5, 0x26, 0xf6, 0x24, 0xf6, + 0xa4, 0xf6, 0xa2, 0xf6, 0x2a, 0xf7, 0x29, 0xf7, 0xbf, 0xf7, 0xbc, 0xf7, + 0x5a, 0xf8, 0x59, 0xf8, 0x00, 0xf9, 0xfe, 0xf8, 0xad, 0xf9, 0xaa, 0xf9, + 0x5f, 0xfa, 0x5e, 0xfa, 0x1d, 0xfb, 0x1a, 0xfb, 0xd9, 0xfb, 0xd8, 0xfb, + 0x9f, 0xfc, 0x9d, 0xfc, 0x64, 0xfd, 0x62, 0xfd, 0x2c, 0xfe, 0x2b, 0xfe, + 0xf7, 0xfe, 0xf6, 0xfe, 0xc3, 0xff, 0xc0, 0xff, 0x8d, 0x00, 0x8b, 0x00, + 0x57, 0x01, 0x55, 0x01, 0x1e, 0x02, 0x1c, 0x02, 0xe5, 0x02, 0xe2, 0x02, + 0xa6, 0x03, 0xa2, 0x03, 0x61, 0x04, 0x5e, 0x04, 0x18, 0x05, 0x14, 0x05, + 0xcb, 0x05, 0xca, 0x05, 0x76, 0x06, 0x72, 0x06, 0x1a, 0x07, 0x17, 0x07, + 0xb6, 0x07, 0xb2, 0x07, 0x4a, 0x08, 0x47, 0x08, 0xd2, 0x08, 0xd1, 0x08, + 0x55, 0x09, 0x51, 0x09, 0xc9, 0x09, 0xc6, 0x09, 0x33, 0x0a, 0x30, 0x0a, + 0x94, 0x0a, 0x90, 0x0a, 0xe4, 0x0a, 0xe3, 0x0a, 0x2d, 0x0b, 0x29, 0x0b, + 0x63, 0x0b, 0x63, 0x0b, 0x93, 0x0b, 0x8f, 0x0b, 0xae, 0x0b, 0xab, 0x0b, + 0xbf, 0x0b, 0xbc, 0x0b, 0xc0, 0x0b, 0xbc, 0x0b, 0xb3, 0x0b, 0xaf, 0x0b, + 0x97, 0x0b, 0x94, 0x0b, 0x6b, 0x0b, 0x69, 0x0b, 0x34, 0x0b, 0x2f, 0x0b, + 0xeb, 0x0a, 0xea, 0x0a, 0x95, 0x0a, 0x91, 0x0a, 0x31, 0x0a, 0x30, 0x0a, + 0xc2, 0x09, 0xbe, 0x09, 0x46, 0x09, 0x43, 0x09, 0xbf, 0x08, 0xbc, 0x08, + 0x2d, 0x08, 0x2a, 0x08, 0x91, 0x07, 0x8f, 0x07, 0xec, 0x06, 0xe8, 0x06, + 0x40, 0x06, 0x3e, 0x06, 0x8d, 0x05, 0x8a, 0x05, 0xd5, 0x04, 0xd3, 0x04, + 0x16, 0x04, 0x13, 0x04, 0x53, 0x03, 0x50, 0x03, 0x8a, 0x02, 0x88, 0x02, + 0xc0, 0x01, 0xbf, 0x01, 0xf4, 0x00, 0xf3, 0x00, 0x29, 0x00, 0x26, 0x00, + 0x5f, 0xff, 0x5e, 0xff, 0x93, 0xfe, 0x90, 0xfe, 0xc8, 0xfd, 0xc6, 0xfd, + 0xf9, 0xfc, 0xf7, 0xfc, 0x2b, 0xfc, 0x27, 0xfc, 0x5f, 0xfb, 0x5a, 0xfb, + 0x91, 0xfa, 0x90, 0xfa, 0xd0, 0xf9, 0xcb, 0xf9, 0x12, 0xf9, 0x10, 0xf9, + 0x63, 0xf8, 0x5f, 0xf8, 0xbb, 0xf7, 0xb7, 0xf7, 0x1e, 0xf7, 0x1e, 0xf7, + 0x90, 0xf6, 0x8b, 0xf6, 0x0b, 0xf6, 0x09, 0xf6, 0x95, 0xf5, 0x92, 0xf5, + 0x30, 0xf5, 0x2c, 0xf5, 0xd3, 0xf4, 0xd1, 0xf4, 0x8f, 0xf4, 0x8a, 0xf4, + 0x4f, 0xf4, 0x4d, 0xf4, 0x27, 0xf4, 0x23, 0xf4, 0x09, 0xf4, 0x09, 0xf4, + 0xfe, 0xf3, 0xfb, 0xf3, 0x04, 0xf4, 0x00, 0xf4, 0x15, 0xf4, 0x14, 0xf4, + 0x3e, 0xf4, 0x3a, 0xf4, 0x6f, 0xf4, 0x6e, 0xf4, 0xb5, 0xf4, 0xb1, 0xf4, + 0x09, 0xf5, 0x07, 0xf5, 0x6c, 0xf5, 0x69, 0xf5, 0xdc, 0xf5, 0xd9, 0xf5, + 0x57, 0xf6, 0x56, 0xf6, 0xe3, 0xf6, 0xe1, 0xf6, 0x76, 0xf7, 0x74, 0xf7, + 0x13, 0xf8, 0x10, 0xf8, 0xbe, 0xf8, 0xbc, 0xf8, 0x6c, 0xf9, 0x69, 0xf9, + 0x24, 0xfa, 0x23, 0xfa, 0xe2, 0xfa, 0xdd, 0xfa, 0xa2, 0xfb, 0xa2, 0xfb, + 0x6b, 0xfc, 0x67, 0xfc, 0x34, 0xfd, 0x33, 0xfd, 0xfe, 0xfd, 0xfb, 0xfd, + 0xcb, 0xfe, 0xca, 0xfe, 0x96, 0xff, 0x94, 0xff, 0x62, 0x00, 0x60, 0x00, + 0x2b, 0x01, 0x29, 0x01, 0xef, 0x01, 0xec, 0x01, 0xb2, 0x02, 0xb0, 0x02, + 0x72, 0x03, 0x70, 0x03, 0x2b, 0x04, 0x28, 0x04, 0xde, 0x04, 0xdc, 0x04, + 0x8a, 0x05, 0x87, 0x05, 0x2e, 0x06, 0x2c, 0x06, 0xcb, 0x06, 0xc8, 0x06, + 0x60, 0x07, 0x5e, 0x07, 0xea, 0x07, 0xe6, 0x07, 0x6a, 0x08, 0x69, 0x08, + 0xe4, 0x08, 0xe1, 0x08, 0x4c, 0x09, 0x49, 0x09, 0xaf, 0x09, 0xac, 0x09, + 0x02, 0x0a, 0x00, 0x0a, 0x4a, 0x0a, 0x46, 0x0a, 0x88, 0x0a, 0x87, 0x0a, + 0xb4, 0x0a, 0xb0, 0x0a, 0xdb, 0x0a, 0xd8, 0x0a, 0xee, 0x0a, 0xed, 0x0a, + 0xf8, 0x0a, 0xf4, 0x0a, 0xf4, 0x0a, 0xf0, 0x0a, 0xe1, 0x0a, 0xde, 0x0a, + 0xc6, 0x0a, 0xc0, 0x0a, 0x98, 0x0a, 0x97, 0x0a, 0x62, 0x0a, 0x5d, 0x0a, + 0x1d, 0x0a, 0x1a, 0x0a, 0xce, 0x09, 0xca, 0x09, 0x75, 0x09, 0x70, 0x09, + 0x0f, 0x09, 0x0b, 0x09, 0x9f, 0x08, 0x9b, 0x08, 0x26, 0x08, 0x22, 0x08, + 0xa7, 0x07, 0xa2, 0x07, 0x1d, 0x07, 0x18, 0x07, 0x8e, 0x06, 0x8b, 0x06, + 0xf9, 0x05, 0xf3, 0x05, 0x5f, 0x05, 0x5b, 0x05, 0xc0, 0x04, 0xbb, 0x04, + 0x1e, 0x04, 0x1b, 0x04, 0x75, 0x03, 0x71, 0x03, 0xd0, 0x02, 0xcd, 0x02, + 0x24, 0x02, 0x1f, 0x02, 0x7d, 0x01, 0x7a, 0x01, 0xd1, 0x00, 0xcc, 0x00, + 0x29, 0x00, 0x26, 0x00, 0x81, 0xff, 0x7e, 0xff, 0xde, 0xfe, 0xd9, 0xfe, + 0x3b, 0xfe, 0x3a, 0xfe, 0xa0, 0xfd, 0x9a, 0xfd, 0x03, 0xfd, 0x02, 0xfd, + 0x70, 0xfc, 0x6a, 0xfc, 0xe1, 0xfb, 0xdf, 0xfb, 0x55, 0xfb, 0x51, 0xfb, + 0xd6, 0xfa, 0xd3, 0xfa, 0x58, 0xfa, 0x54, 0xfa, 0xe4, 0xf9, 0xe0, 0xf9, + 0x79, 0xf9, 0x77, 0xf9, 0x15, 0xf9, 0x11, 0xf9, 0xbd, 0xf8, 0xba, 0xf8, + 0x6a, 0xf8, 0x66, 0xf8, 0x22, 0xf8, 0x1e, 0xf8, 0xe5, 0xf7, 0xe1, 0xf7, + 0xb2, 0xf7, 0xae, 0xf7, 0x85, 0xf7, 0x81, 0xf7, 0x69, 0xf7, 0x67, 0xf7, + 0x53, 0xf7, 0x4f, 0xf7, 0x48, 0xf7, 0x46, 0xf7, 0x48, 0xf7, 0x46, 0xf7, + 0x53, 0xf7, 0x4e, 0xf7, 0x67, 0xf7, 0x66, 0xf7, 0x86, 0xf7, 0x81, 0xf7, + 0xb0, 0xf7, 0xad, 0xf7, 0xe4, 0xf7, 0xe1, 0xf7, 0x21, 0xf8, 0x1b, 0xf8, + 0x67, 0xf8, 0x66, 0xf8, 0xb5, 0xf8, 0xb0, 0xf8, 0x0c, 0xf9, 0x09, 0xf9, + 0x6b, 0xf9, 0x67, 0xf9, 0xd1, 0xf9, 0xcd, 0xf9, 0x3d, 0xfa, 0x3a, 0xfa, + 0xae, 0xfa, 0xaa, 0xfa, 0x29, 0xfb, 0x24, 0xfb, 0xa0, 0xfb, 0x9e, 0xfb, + 0x25, 0xfc, 0x20, 0xfc, 0xa6, 0xfc, 0xa2, 0xfc, 0x2c, 0xfd, 0x28, 0xfd, + 0xb6, 0xfd, 0xb2, 0xfd, 0x3e, 0xfe, 0x39, 0xfe, 0xc9, 0xfe, 0xc5, 0xfe, + 0x52, 0xff, 0x4e, 0xff, 0xdc, 0xff, 0xd9, 0xff, 0x64, 0x00, 0x61, 0x00, + 0xea, 0x00, 0xe6, 0x00, 0x6e, 0x01, 0x6b, 0x01, 0xf2, 0x01, 0xed, 0x01, + 0x6d, 0x02, 0x6c, 0x02, 0xe9, 0x02, 0xe4, 0x02, 0x5d, 0x03, 0x59, 0x03, + 0xcf, 0x03, 0xcd, 0x03, 0x3b, 0x04, 0x35, 0x04, 0x9d, 0x04, 0x9d, 0x04, + 0x00, 0x05, 0xfb, 0x04, 0x55, 0x05, 0x53, 0x05, 0xa9, 0x05, 0xa7, 0x05, + 0xf2, 0x05, 0xed, 0x05, 0x36, 0x06, 0x35, 0x06, 0x70, 0x06, 0x6a, 0x06, + 0xa2, 0x06, 0xa0, 0x06, 0xce, 0x06, 0xc9, 0x06, 0xed, 0x06, 0xeb, 0x06, + 0x09, 0x07, 0x04, 0x07, 0x18, 0x07, 0x15, 0x07, 0x24, 0x07, 0x20, 0x07, + 0x1e, 0x07, 0x1c, 0x07, 0x18, 0x07, 0x14, 0x07, 0x05, 0x07, 0x04, 0x07, + 0xec, 0x06, 0xe8, 0x06, 0xcd, 0x06, 0xcb, 0x06, 0xa0, 0x06, 0x9c, 0x06, + 0x72, 0x06, 0x70, 0x06, 0x36, 0x06, 0x32, 0x06, 0xf7, 0x05, 0xf5, 0x05, + 0xb3, 0x05, 0xaf, 0x05, 0x63, 0x05, 0x60, 0x05, 0x12, 0x05, 0x11, 0x05, + 0xbb, 0x04, 0xb7, 0x04, 0x60, 0x04, 0x5f, 0x04, 0x00, 0x04, 0xfb, 0x03, + 0x9a, 0x03, 0x98, 0x03, 0x35, 0x03, 0x32, 0x03, 0xcb, 0x02, 0xc5, 0x02, + 0x5e, 0x02, 0x5c, 0x02, 0xef, 0x01, 0xea, 0x01, 0x80, 0x01, 0x7e, 0x01, + 0x10, 0x01, 0x0d, 0x01, 0xa0, 0x00, 0x9d, 0x00, 0x32, 0x00, 0x2f, 0x00, + 0xc2, 0xff, 0xbf, 0xff, 0x58, 0xff, 0x53, 0xff, 0xeb, 0xfe, 0xe8, 0xfe, + 0x84, 0xfe, 0x80, 0xfe, 0x1e, 0xfe, 0x1b, 0xfe, 0xba, 0xfd, 0xb7, 0xfd, + 0x5a, 0xfd, 0x56, 0xfd, 0x01, 0xfd, 0xff, 0xfc, 0xa9, 0xfc, 0xa4, 0xfc, + 0x58, 0xfc, 0x56, 0xfc, 0x0a, 0xfc, 0x06, 0xfc, 0xc2, 0xfb, 0xc0, 0xfb, + 0x82, 0xfb, 0x80, 0xfb, 0x44, 0xfb, 0x40, 0xfb, 0x13, 0xfb, 0x11, 0xfb, + 0xe0, 0xfa, 0xdc, 0xfa, 0xba, 0xfa, 0xb7, 0xfa, 0x97, 0xfa, 0x95, 0xfa, + 0x7c, 0xfa, 0x78, 0xfa, 0x69, 0xfa, 0x67, 0xfa, 0x59, 0xfa, 0x56, 0xfa, + 0x57, 0xfa, 0x54, 0xfa, 0x55, 0xfa, 0x52, 0xfa, 0x5d, 0xfa, 0x5a, 0xfa, + 0x6c, 0xfa, 0x67, 0xfa, 0x80, 0xfa, 0x7e, 0xfa, 0x9e, 0xfa, 0x99, 0xfa, + 0xbd, 0xfa, 0xba, 0xfa, 0xe9, 0xfa, 0xe6, 0xfa, 0x14, 0xfb, 0x0d, 0xfb, + 0x47, 0xfb, 0x45, 0xfb, 0x81, 0xfb, 0x7b, 0xfb, 0xbd, 0xfb, 0xba, 0xfb, + 0xff, 0xfb, 0xfd, 0xfb, 0x45, 0xfc, 0x40, 0xfc, 0x91, 0xfc, 0x8d, 0xfc, + 0xd9, 0xfc, 0xd7, 0xfc, 0x2e, 0xfd, 0x27, 0xfd, 0x7c, 0xfd, 0x7a, 0xfd, + 0xd3, 0xfd, 0xce, 0xfd, 0x2b, 0xfe, 0x27, 0xfe, 0x81, 0xfe, 0x7d, 0xfe, + 0xda, 0xfe, 0xd5, 0xfe, 0x30, 0xff, 0x2d, 0xff, 0x8a, 0xff, 0x87, 0xff, + 0xe1, 0xff, 0xdd, 0xff, 0x39, 0x00, 0x35, 0x00, 0x90, 0x00, 0x8b, 0x00, + 0xe1, 0x00, 0xe0, 0x00, 0x34, 0x01, 0x31, 0x01, 0x86, 0x01, 0x82, 0x01, + 0xd3, 0x01, 0xce, 0x01, 0x1c, 0x02, 0x1a, 0x02, 0x63, 0x02, 0x5e, 0x02, + 0xa5, 0x02, 0xa4, 0x02, 0xe6, 0x02, 0xe0, 0x02, 0x1e, 0x03, 0x1d, 0x03, + 0x55, 0x03, 0x52, 0x03, 0x87, 0x03, 0x85, 0x03, 0xb3, 0x03, 0xb1, 0x03, + 0xdb, 0x03, 0xd9, 0x03, 0xfe, 0x03, 0xfa, 0x03, 0x19, 0x04, 0x18, 0x04, + 0x32, 0x04, 0x2e, 0x04, 0x45, 0x04, 0x43, 0x04, 0x51, 0x04, 0x4e, 0x04, + 0x57, 0x04, 0x56, 0x04, 0x59, 0x04, 0x56, 0x04, 0x54, 0x04, 0x52, 0x04, + 0x4d, 0x04, 0x49, 0x04, 0x3a, 0x04, 0x38, 0x04, 0x27, 0x04, 0x26, 0x04, + 0x0e, 0x04, 0x0b, 0x04, 0xf0, 0x03, 0xed, 0x03, 0xce, 0x03, 0xcc, 0x03, + 0xa2, 0x03, 0xa0, 0x03, 0x77, 0x03, 0x77, 0x03, 0x47, 0x03, 0x41, 0x03, + 0x12, 0x03, 0x10, 0x03, 0xda, 0x02, 0xd6, 0x02, 0x9d, 0x02, 0x99, 0x02, + 0x60, 0x02, 0x5e, 0x02, 0x1d, 0x02, 0x19, 0x02, 0xdc, 0x01, 0xda, 0x01, + 0x97, 0x01, 0x91, 0x01, 0x4f, 0x01, 0x4e, 0x01, 0x06, 0x01, 0x02, 0x01, + 0xbc, 0x00, 0xbb, 0x00, 0x75, 0x00, 0x72, 0x00, 0x28, 0x00, 0x23, 0x00, + 0xe0, 0xff, 0xdf, 0xff, 0x96, 0xff, 0x92, 0xff, 0x4f, 0xff, 0x4c, 0xff, + 0x07, 0xff, 0x05, 0xff, 0xc3, 0xfe, 0xbd, 0xfe, 0x7f, 0xfe, 0x7c, 0xfe, + 0x3c, 0xfe, 0x38, 0xfe, 0xfc, 0xfd, 0xf9, 0xfd, 0xbf, 0xfd, 0xbc, 0xfd, + 0x86, 0xfd, 0x82, 0xfd, 0x4f, 0xfd, 0x4a, 0xfd, 0x1c, 0xfd, 0x1a, 0xfd, + 0xeb, 0xfc, 0xe7, 0xfc, 0xc1, 0xfc, 0xbf, 0xfc, 0x97, 0xfc, 0x93, 0xfc, + 0x73, 0xfc, 0x71, 0xfc, 0x55, 0xfc, 0x53, 0xfc, 0x39, 0xfc, 0x34, 0xfc, + 0x24, 0xfc, 0x21, 0xfc, 0x0e, 0xfc, 0x0b, 0xfc, 0x05, 0xfc, 0x02, 0xfc, + 0xf9, 0xfb, 0xf7, 0xfb, 0xf5, 0xfb, 0xf1, 0xfb, 0xf9, 0xfb, 0xf5, 0xfb, + 0xfa, 0xfb, 0xf8, 0xfb, 0x09, 0xfc, 0x04, 0xfc, 0x12, 0xfc, 0x12, 0xfc, + 0x28, 0xfc, 0x23, 0xfc, 0x3e, 0xfc, 0x3c, 0xfc, 0x59, 0xfc, 0x56, 0xfc, + 0x7b, 0xfc, 0x76, 0xfc, 0x9b, 0xfc, 0x9a, 0xfc, 0xc3, 0xfc, 0xbf, 0xfc, + 0xed, 0xfc, 0xe9, 0xfc, 0x18, 0xfd, 0x17, 0xfd, 0x4c, 0xfd, 0x46, 0xfd, + 0x79, 0xfd, 0x79, 0xfd, 0xb3, 0xfd, 0xaf, 0xfd, 0xe8, 0xfd, 0xe4, 0xfd, + 0x22, 0xfe, 0x1f, 0xfe, 0x5d, 0xfe, 0x59, 0xfe, 0x99, 0xfe, 0x96, 0xfe, + 0xd6, 0xfe, 0xd3, 0xfe, 0x14, 0xff, 0x0f, 0xff, 0x52, 0xff, 0x50, 0xff, + 0x91, 0xff, 0x8e, 0xff, 0xcd, 0xff, 0xcb, 0xff, 0x0b, 0x00, 0x09, 0x00, + 0x48, 0x00, 0x45, 0x00, 0x85, 0x00, 0x81, 0x00, 0xbf, 0x00, 0xbe, 0x00, + 0xfa, 0x00, 0xf4, 0x00, 0x30, 0x01, 0x30, 0x01, 0x65, 0x01, 0x61, 0x01, + 0x9a, 0x01, 0x96, 0x01, 0xc9, 0x01, 0xc8, 0x01, 0xfa, 0x01, 0xf5, 0x01, + 0x25, 0x02, 0x22, 0x02, 0x4c, 0x02, 0x49, 0x02, 0x73, 0x02, 0x6e, 0x02, + 0x93, 0x02, 0x90, 0x02, 0xb3, 0x02, 0xb0, 0x02, 0xce, 0x02, 0xca, 0x02, + 0xe6, 0x02, 0xe4, 0x02, 0xf9, 0x02, 0xf5, 0x02, 0x09, 0x03, 0x06, 0x03, + 0x15, 0x03, 0x13, 0x03, 0x1f, 0x03, 0x1a, 0x03, 0x22, 0x03, 0x1e, 0x03, + 0x23, 0x03, 0x20, 0x03, 0x20, 0x03, 0x1c, 0x03, 0x18, 0x03, 0x14, 0x03, + 0x0f, 0x03, 0x0a, 0x03, 0xff, 0x02, 0xfd, 0x02, 0xee, 0x02, 0xe8, 0x02, + 0xd9, 0x02, 0xd7, 0x02, 0xbf, 0x02, 0xba, 0x02, 0xa5, 0x02, 0xa1, 0x02, + 0x85, 0x02, 0x81, 0x02, 0x64, 0x02, 0x60, 0x02, 0x3f, 0x02, 0x3b, 0x02, + 0x19, 0x02, 0x15, 0x02, 0xf0, 0x01, 0xec, 0x01, 0xc4, 0x01, 0xc0, 0x01, + 0x99, 0x01, 0x95, 0x01, 0x69, 0x01, 0x65, 0x01, 0x3a, 0x01, 0x38, 0x01, + 0x0b, 0x01, 0x08, 0x01, 0xd9, 0x00, 0xd6, 0x00, 0xaa, 0x00, 0xa6, 0x00, + 0x75, 0x00, 0x71, 0x00, 0x44, 0x00, 0x42, 0x00, 0x12, 0x00, 0x0e, 0x00, + 0xdf, 0xff, 0xdc, 0xff, 0xb1, 0xff, 0xaf, 0xff, 0x7e, 0xff, 0x7b, 0xff, + 0x53, 0xff, 0x4e, 0xff, 0x20, 0xff, 0x21, 0xff, 0xf8, 0xfe, 0xf2, 0xfe, + 0xcb, 0xfe, 0xca, 0xfe, 0xa3, 0xfe, 0x9f, 0xfe, 0x7b, 0xfe, 0x78, 0xfe, + 0x56, 0xfe, 0x54, 0xfe, 0x34, 0xfe, 0x30, 0xfe, 0x15, 0xfe, 0x12, 0xfe, + 0xf8, 0xfd, 0xf5, 0xfd, 0xdd, 0xfd, 0xdc, 0xfd, 0xc7, 0xfd, 0xc3, 0xfd, + 0xb1, 0xfd, 0xaf, 0xfd, 0xa2, 0xfd, 0x9e, 0xfd, 0x93, 0xfd, 0x8e, 0xfd, + 0x87, 0xfd, 0x85, 0xfd, 0x7f, 0xfd, 0x7c, 0xfd, 0x7b, 0xfd, 0x78, 0xfd, + 0x78, 0xfd, 0x76, 0xfd, 0x79, 0xfd, 0x78, 0xfd, 0x7f, 0xfd, 0x7c, 0xfd, + 0x86, 0xfd, 0x84, 0xfd, 0x92, 0xfd, 0x91, 0xfd, 0x9f, 0xfd, 0x9b, 0xfd, + 0xb2, 0xfd, 0xb2, 0xfd, 0xc5, 0xfd, 0xc1, 0xfd, 0xdb, 0xfd, 0xd9, 0xfd, + 0xf6, 0xfd, 0xf4, 0xfd, 0x10, 0xfe, 0x0c, 0xfe, 0x2d, 0xfe, 0x2d, 0xfe, + 0x4d, 0xfe, 0x4b, 0xfe, 0x71, 0xfe, 0x6f, 0xfe, 0x94, 0xfe, 0x90, 0xfe, + 0xb9, 0xfe, 0xb7, 0xfe, 0xdf, 0xfe, 0xdd, 0xfe, 0x07, 0xff, 0x06, 0xff, + 0x33, 0xff, 0x31, 0xff, 0x5a, 0xff, 0x59, 0xff, 0x89, 0xff, 0x87, 0xff, + 0xb0, 0xff, 0xad, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0x0a, 0x00, 0x06, 0x00, + 0x31, 0x00, 0x31, 0x00, 0x60, 0x00, 0x5e, 0x00, 0x89, 0x00, 0x86, 0x00, + 0xb2, 0x00, 0xb1, 0x00, 0xde, 0x00, 0xda, 0x00, 0x01, 0x01, 0xff, 0x00, + 0x29, 0x01, 0x28, 0x01, 0x4d, 0x01, 0x48, 0x01, 0x72, 0x01, 0x71, 0x01, + 0x94, 0x01, 0x91, 0x01, 0xb2, 0x01, 0xaf, 0x01, 0xd1, 0x01, 0xd0, 0x01, + 0xed, 0x01, 0xe8, 0x01, 0x05, 0x02, 0x04, 0x02, 0x1c, 0x02, 0x18, 0x02, + 0x31, 0x02, 0x2f, 0x02, 0x44, 0x02, 0x40, 0x02, 0x52, 0x02, 0x50, 0x02, + 0x5f, 0x02, 0x5b, 0x02, 0x67, 0x02, 0x67, 0x02, 0x71, 0x02, 0x6e, 0x02, + 0x72, 0x02, 0x70, 0x02, 0x76, 0x02, 0x73, 0x02, 0x76, 0x02, 0x72, 0x02, + 0x70, 0x02, 0x6f, 0x02, 0x6d, 0x02, 0x68, 0x02, 0x60, 0x02, 0x5e, 0x02, + 0x58, 0x02, 0x54, 0x02, 0x47, 0x02, 0x46, 0x02, 0x37, 0x02, 0x35, 0x02, + 0x26, 0x02, 0x23, 0x02, 0x10, 0x02, 0x0c, 0x02, 0xfb, 0x01, 0xf6, 0x01, + 0xdf, 0x01, 0xdd, 0x01, 0xc5, 0x01, 0xc1, 0x01, 0xa9, 0x01, 0xa8, 0x01, + 0x8a, 0x01, 0x85, 0x01, 0x6d, 0x01, 0x68, 0x01, 0x4a, 0x01, 0x48, 0x01, + 0x2c, 0x01, 0x26, 0x01, 0x05, 0x01, 0x03, 0x01, 0xe5, 0x00, 0xe0, 0x00, + 0xbe, 0x00, 0xbb, 0x00, 0x9a, 0x00, 0x98, 0x00, 0x79, 0x00, 0x74, 0x00, + 0x51, 0x00, 0x4f, 0x00, 0x2d, 0x00, 0x2b, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xe3, 0xff, 0xe1, 0xff, 0xc7, 0xff, 0xc2, 0xff, 0x9f, 0xff, 0x9d, 0xff, + 0x81, 0xff, 0x80, 0xff, 0x5f, 0xff, 0x5c, 0xff, 0x40, 0xff, 0x3e, 0xff, + 0x24, 0xff, 0x22, 0xff, 0x06, 0xff, 0x03, 0xff, 0xee, 0xfe, 0xed, 0xfe, + 0xd2, 0xfe, 0xcf, 0xfe, 0xbd, 0xfe, 0xbb, 0xfe, 0xa6, 0xfe, 0xa5, 0xfe, + 0x94, 0xfe, 0x90, 0xfe, 0x85, 0xfe, 0x83, 0xfe, 0x73, 0xfe, 0x70, 0xfe, + 0x67, 0xfe, 0x66, 0xfe, 0x5c, 0xfe, 0x5a, 0xfe, 0x54, 0xfe, 0x51, 0xfe, + 0x4f, 0xfe, 0x4e, 0xfe, 0x4a, 0xfe, 0x47, 0xfe, 0x4a, 0xfe, 0x49, 0xfe, + 0x4a, 0xfe, 0x46, 0xfe, 0x4e, 0xfe, 0x4d, 0xfe, 0x54, 0xfe, 0x50, 0xfe, + 0x5a, 0xfe, 0x59, 0xfe, 0x66, 0xfe, 0x63, 0xfe, 0x6f, 0xfe, 0x6c, 0xfe, + 0x7f, 0xfe, 0x7f, 0xfe, 0x8d, 0xfe, 0x8a, 0xfe, 0xa1, 0xfe, 0x9f, 0xfe, + 0xb5, 0xfe, 0xb2, 0xfe, 0xc7, 0xfe, 0xc5, 0xfe, 0xe2, 0xfe, 0xdd, 0xfe, + 0xf7, 0xfe, 0xf7, 0xfe, 0x12, 0xff, 0x0d, 0xff, 0x2b, 0xff, 0x2b, 0xff, + 0x48, 0xff, 0x46, 0xff, 0x64, 0xff, 0x61, 0xff, 0x81, 0xff, 0x81, 0xff, + 0xa0, 0xff, 0x9c, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xdd, 0xff, 0xdb, 0xff, + 0xfd, 0xff, 0xf9, 0xff, 0x1b, 0x00, 0x19, 0x00, 0x37, 0x00, 0x34, 0x00, + 0x57, 0x00, 0x54, 0x00, 0x75, 0x00, 0x73, 0x00, 0x91, 0x00, 0x8d, 0x00, + 0xb1, 0x00, 0xaf, 0x00, 0xc9, 0x00, 0xc7, 0x00, 0xe8, 0x00, 0xe5, 0x00, + 0xfe, 0x00, 0xfd, 0x00, 0x17, 0x01, 0x13, 0x01, 0x2e, 0x01, 0x2d, 0x01, + 0x43, 0x01, 0x42, 0x01, 0x59, 0x01, 0x56, 0x01, 0x6b, 0x01, 0x6a, 0x01, + 0x7c, 0x01, 0x7a, 0x01, 0x8b, 0x01, 0x89, 0x01, 0x99, 0x01, 0x98, 0x01, + 0xa4, 0x01, 0xa2, 0x01, 0xaf, 0x01, 0xad, 0x01, 0xb5, 0x01, 0xb3, 0x01, + 0xbc, 0x01, 0xbb, 0x01, 0xbf, 0x01, 0xbc, 0x01, 0xc1, 0x01, 0xc1, 0x01, + 0xc0, 0x01, 0xbd, 0x01, 0xbd, 0x01, 0xbc, 0x01, 0xb9, 0x01, 0xb7, 0x01, + 0xb3, 0x01, 0xb1, 0x01, 0xaa, 0x01, 0xa9, 0x01, 0xa0, 0x01, 0x9e, 0x01, + 0x94, 0x01, 0x92, 0x01, 0x86, 0x01, 0x84, 0x01, 0x75, 0x01, 0x74, 0x01, + 0x64, 0x01, 0x63, 0x01, 0x53, 0x01, 0x50, 0x01, 0x3e, 0x01, 0x3d, 0x01, + 0x28, 0x01, 0x27, 0x01, 0x11, 0x01, 0x0f, 0x01, 0xf8, 0x00, 0xf8, 0x00, + 0xe0, 0x00, 0xde, 0x00, 0xc5, 0x00, 0xc4, 0x00, 0xac, 0x00, 0xac, 0x00, + 0x90, 0x00, 0x8d, 0x00, 0x74, 0x00, 0x74, 0x00, 0x58, 0x00, 0x56, 0x00, + 0x3c, 0x00, 0x39, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xe7, 0xff, 0xe6, 0xff, 0xc8, 0xff, 0xc7, 0xff, 0xaf, 0xff, 0xac, 0xff, + 0x94, 0xff, 0x90, 0xff, 0x79, 0xff, 0x75, 0xff, 0x5e, 0xff, 0x5e, 0xff, + 0x44, 0xff, 0x41, 0xff, 0x2d, 0xff, 0x2c, 0xff, 0x14, 0xff, 0x12, 0xff, + 0xff, 0xfe, 0xfd, 0xfe, 0xe9, 0xfe, 0xe8, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, + 0xc3, 0xfe, 0xc1, 0xfe, 0xb5, 0xfe, 0xb4, 0xfe, 0xa4, 0xfe, 0xa4, 0xfe, + 0x99, 0xfe, 0x97, 0xfe, 0x8c, 0xfe, 0x8c, 0xfe, 0x82, 0xfe, 0x80, 0xfe, + 0x78, 0xfe, 0x7a, 0xfe, 0x72, 0xfe, 0x71, 0xfe, 0x6f, 0xfe, 0x6e, 0xfe, + 0x6b, 0xfe, 0x68, 0xfe, 0x6b, 0xfe, 0x6a, 0xfe, 0x6b, 0xfe, 0x69, 0xfe, + 0x6f, 0xfe, 0x6f, 0xfe, 0x74, 0xfe, 0x70, 0xfe, 0x79, 0xfe, 0x78, 0xfe, + 0x7f, 0xfe, 0x7e, 0xfe, 0x8a, 0xfe, 0x88, 0xfe, 0x95, 0xfe, 0x95, 0xfe, + 0xa0, 0xfe, 0x9e, 0xfe, 0xb0, 0xfe, 0xaf, 0xfe, 0xbd, 0xfe, 0xbd, 0xfe, + 0xcf, 0xfe, 0xce, 0xfe, 0xdf, 0xfe, 0xe0, 0xfe, 0xf2, 0xfe, 0xf1, 0xfe, + 0x07, 0xff, 0x07, 0xff, 0x1b, 0xff, 0x1b, 0xff, 0x31, 0xff, 0x31, 0xff, + 0x4a, 0xff, 0x49, 0xff, 0x5f, 0xff, 0x5e, 0xff, 0x78, 0xff, 0x77, 0xff, + 0x8f, 0xff, 0x8f, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0xbf, 0xff, 0xbf, 0xff, + 0xd7, 0xff, 0xd7, 0xff, 0xf1, 0xff, 0xed, 0xff, 0x07, 0x00, 0x07, 0x00, + 0x1d, 0x00, 0x1a, 0x00, 0x36, 0x00, 0x35, 0x00, 0x4a, 0x00, 0x49, 0x00, + 0x62, 0x00, 0x5f, 0x00, 0x76, 0x00, 0x76, 0x00, 0x8c, 0x00, 0x8a, 0x00, + 0xa1, 0x00, 0x9e, 0x00, 0xaf, 0x00, 0xaf, 0x00, 0xc3, 0x00, 0xc1, 0x00, + 0xd3, 0x00, 0xd2, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xf0, 0x00, 0xee, 0x00, + 0xf9, 0x00, 0xf9, 0x00, 0x06, 0x01, 0x05, 0x01, 0x0d, 0x01, 0x0b, 0x01, + 0x15, 0x01, 0x15, 0x01, 0x1c, 0x01, 0x1a, 0x01, 0x1f, 0x01, 0x1f, 0x01, + 0x22, 0x01, 0x21, 0x01, 0x24, 0x01, 0x23, 0x01, 0x23, 0x01, 0x22, 0x01, + 0x21, 0x01, 0x21, 0x01, 0x1e, 0x01, 0x1d, 0x01, 0x16, 0x01, 0x16, 0x01, + 0x13, 0x01, 0x11, 0x01, 0x09, 0x01, 0x08, 0x01, 0x01, 0x01, 0xff, 0x00, + 0xf5, 0x00, 0xf4, 0x00, 0xe9, 0x00, 0xe6, 0x00, 0xdb, 0x00, 0xda, 0x00, + 0xcc, 0x00, 0xca, 0x00, 0xbc, 0x00, 0xb8, 0x00, 0xaa, 0x00, 0xaa, 0x00, + 0x99, 0x00, 0x95, 0x00, 0x83, 0x00, 0x85, 0x00, 0x71, 0x00, 0x6e, 0x00, + 0x5d, 0x00, 0x5c, 0x00, 0x47, 0x00, 0x47, 0x00, 0x34, 0x00, 0x2f, 0x00, + 0x1b, 0x00, 0x1b, 0x00, 0x05, 0x00, 0x02, 0x00, 0xef, 0xff, 0xef, 0xff, + 0xd7, 0xff, 0xd5, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0xaa, 0xff, 0xa8, 0xff, + 0x95, 0xff, 0x93, 0xff, 0x7f, 0xff, 0x7d, 0xff, 0x67, 0xff, 0x67, 0xff, + 0x57, 0xff, 0x54, 0xff, 0x3d, 0xff, 0x3f, 0xff, 0x2c, 0xff, 0x2a, 0xff, + 0x18, 0xff, 0x18, 0xff, 0x07, 0xff, 0x05, 0xff, 0xf4, 0xfe, 0xf6, 0xfe, + 0xe6, 0xfe, 0xe4, 0xfe, 0xd8, 0xfe, 0xd7, 0xfe, 0xc7, 0xfe, 0xc5, 0xfe, + 0xbe, 0xfe, 0xbd, 0xfe, 0xb1, 0xfe, 0xaf, 0xfe, 0xa8, 0xfe, 0xa6, 0xfe, + 0x9f, 0xfe, 0xa0, 0xfe, 0x98, 0xfe, 0x96, 0xfe, 0x95, 0xfe, 0x94, 0xfe, + 0x8f, 0xfe, 0x8d, 0xfe, 0x8d, 0xfe, 0x8d, 0xfe, 0x8c, 0xfe, 0x8c, 0xfe, + 0x8b, 0xfe, 0x89, 0xfe, 0x8d, 0xfe, 0x8e, 0xfe, 0x93, 0xfe, 0x93, 0xfe, + 0x97, 0xfe, 0x95, 0xfe, 0x9e, 0xfe, 0x9f, 0xfe, 0xa5, 0xfe, 0xa4, 0xfe, + 0xae, 0xfe, 0xaf, 0xfe, 0xbc, 0xfe, 0xba, 0xfe, 0xc5, 0xfe, 0xc5, 0xfe, + 0xd6, 0xfe, 0xd5, 0xfe, 0xe1, 0xfe, 0xe1, 0xfe, 0xf2, 0xfe, 0xf1, 0xfe, + 0x01, 0xff, 0x02, 0xff, 0x14, 0xff, 0x11, 0xff, 0x26, 0xff, 0x27, 0xff, + 0x39, 0xff, 0x38, 0xff, 0x4d, 0xff, 0x4b, 0xff, 0x60, 0xff, 0x62, 0xff, + 0x77, 0xff, 0x75, 0xff, 0x8a, 0xff, 0x8b, 0xff, 0xa1, 0xff, 0xa1, 0xff, + 0xb6, 0xff, 0xb5, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xe5, 0xff, 0xe2, 0xff, + 0xf7, 0xff, 0xf9, 0xff, 0x10, 0x00, 0x0e, 0x00, 0x21, 0x00, 0x22, 0x00, + 0x39, 0x00, 0x38, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x61, 0x00, 0x60, 0x00, + 0x74, 0x00, 0x73, 0x00, 0x86, 0x00, 0x86, 0x00, 0x99, 0x00, 0x98, 0x00, + 0xa8, 0x00, 0xa8, 0x00, 0xb9, 0x00, 0xb8, 0x00, 0xc9, 0x00, 0xc7, 0x00, + 0xd5, 0x00, 0xd5, 0x00, 0xe2, 0x00, 0xe3, 0x00, 0xee, 0x00, 0xed, 0x00, + 0xf6, 0x00, 0xf8, 0x00, 0x03, 0x01, 0xff, 0x00, 0x06, 0x01, 0x08, 0x01, + 0x0e, 0x01, 0x0d, 0x01, 0x13, 0x01, 0x12, 0x01, 0x15, 0x01, 0x15, 0x01, + 0x19, 0x01, 0x17, 0x01, 0x19, 0x01, 0x17, 0x01, 0x14, 0x01, 0x15, 0x01, + 0x17, 0x01, 0x13, 0x01, 0x11, 0x01, 0x11, 0x01, 0x0d, 0x01, 0x0d, 0x01, + 0x07, 0x01, 0x06, 0x01, 0xfc, 0x00, 0xfc, 0x00, 0xf6, 0x00, 0xf6, 0x00, + 0xeb, 0x00, 0xec, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xd4, 0x00, 0xd6, 0x00, + 0xc6, 0x00, 0xc4, 0x00, 0xba, 0x00, 0xb9, 0x00, 0xa8, 0x00, 0xa7, 0x00, + 0x99, 0x00, 0x99, 0x00, 0x8a, 0x00, 0x88, 0x00, 0x74, 0x00, 0x77, 0x00, + 0x67, 0x00, 0x67, 0x00, 0x51, 0x00, 0x51, 0x00, 0x40, 0x00, 0x41, 0x00, + 0x2e, 0x00, 0x2c, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x08, 0x00, 0x08, 0x00, + 0xf1, 0xff, 0xf2, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xcc, 0xff, 0xce, 0xff, + 0xbb, 0xff, 0xbb, 0xff, 0xa9, 0xff, 0xab, 0xff, 0x95, 0xff, 0x96, 0xff, + 0x86, 0xff, 0x87, 0xff, 0x73, 0xff, 0x74, 0xff, 0x67, 0xff, 0x66, 0xff, + 0x55, 0xff, 0x56, 0xff, 0x46, 0xff, 0x47, 0xff, 0x3c, 0xff, 0x3c, 0xff, + 0x2d, 0xff, 0x2c, 0xff, 0x22, 0xff, 0x24, 0xff, 0x19, 0xff, 0x18, 0xff, + 0x0f, 0xff, 0x0f, 0xff, 0x09, 0xff, 0x08, 0xff, 0x01, 0xff, 0x01, 0xff, + 0xfd, 0xfe, 0xfe, 0xfe, 0xf7, 0xfe, 0xf7, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, + 0xf4, 0xfe, 0xf4, 0xfe, 0xf4, 0xfe, 0xf4, 0xfe, 0xf6, 0xfe, 0xf5, 0xfe, + 0xf7, 0xfe, 0xf7, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x01, 0xff, 0x01, 0xff, + 0x09, 0xff, 0x09, 0xff, 0x11, 0xff, 0x13, 0xff, 0x19, 0xff, 0x19, 0xff, + 0x26, 0xff, 0x28, 0xff, 0x2f, 0xff, 0x2d, 0xff, 0x3c, 0xff, 0x40, 0xff, + 0x4d, 0xff, 0x4a, 0xff, 0x58, 0xff, 0x5c, 0xff, 0x6b, 0xff, 0x6a, 0xff, + 0x78, 0xff, 0x79, 0xff, 0x8c, 0xff, 0x8f, 0xff, 0x9c, 0xff, 0x9b, 0xff, + 0xb0, 0xff, 0xb1, 0xff, 0xc2, 0xff, 0xc5, 0xff, 0xd6, 0xff, 0xd3, 0xff, + 0xeb, 0xff, 0xee, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0x14, 0x00, 0x14, 0x00, + 0x26, 0x00, 0x27, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x51, 0x00, 0x51, 0x00, + 0x5e, 0x00, 0x61, 0x00, 0x79, 0x00, 0x77, 0x00, 0x87, 0x00, 0x89, 0x00, + 0x9d, 0x00, 0x9c, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xbf, 0x00, 0xbe, 0x00, + 0xd1, 0x00, 0xd2, 0x00, 0xe1, 0x00, 0xe0, 0x00, 0xf0, 0x00, 0xf1, 0x00, + 0xff, 0x00, 0x00, 0x01, 0x0c, 0x01, 0x0b, 0x01, 0x18, 0x01, 0x19, 0x01, + 0x24, 0x01, 0x24, 0x01, 0x2d, 0x01, 0x2d, 0x01, 0x37, 0x01, 0x38, 0x01, + 0x3e, 0x01, 0x3e, 0x01, 0x44, 0x01, 0x44, 0x01, 0x4a, 0x01, 0x49, 0x01, + 0x4b, 0x01, 0x4c, 0x01, 0x4f, 0x01, 0x50, 0x01, 0x52, 0x01, 0x50, 0x01, + 0x4e, 0x01, 0x4f, 0x01, 0x50, 0x01, 0x4f, 0x01, 0x4b, 0x01, 0x4a, 0x01, + 0x47, 0x01, 0x47, 0x01, 0x41, 0x01, 0x41, 0x01, 0x39, 0x01, 0x37, 0x01, + 0x30, 0x01, 0x33, 0x01, 0x28, 0x01, 0x26, 0x01, 0x1d, 0x01, 0x1d, 0x01, + 0x12, 0x01, 0x10, 0x01, 0x05, 0x01, 0x06, 0x01, 0xf7, 0x00, 0xf8, 0x00, + 0xe8, 0x00, 0xe7, 0x00, 0xdc, 0x00, 0xdb, 0x00, 0xc9, 0x00, 0xc9, 0x00, + 0xb9, 0x00, 0xb9, 0x00, 0xa7, 0x00, 0xa6, 0x00, 0x95, 0x00, 0x95, 0x00, + 0x85, 0x00, 0x83, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x5f, 0x00, 0x5e, 0x00, + 0x49, 0x00, 0x4a, 0x00, 0x35, 0x00, 0x36, 0x00, 0x26, 0x00, 0x24, 0x00, + 0x0e, 0x00, 0x0f, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xec, 0xff, 0xeb, 0xff, + 0xd9, 0xff, 0xd8, 0xff, 0xc5, 0xff, 0xc7, 0xff, 0xb6, 0xff, 0xb6, 0xff, + 0xa4, 0xff, 0xa5, 0xff, 0x96, 0xff, 0x96, 0xff, 0x85, 0xff, 0x85, 0xff, + 0x76, 0xff, 0x75, 0xff, 0x6a, 0xff, 0x6b, 0xff, 0x5d, 0xff, 0x5c, 0xff, + 0x50, 0xff, 0x52, 0xff, 0x49, 0xff, 0x49, 0xff, 0x3c, 0xff, 0x3e, 0xff, + 0x36, 0xff, 0x36, 0xff, 0x2d, 0xff, 0x2e, 0xff, 0x27, 0xff, 0x28, 0xff, + 0x22, 0xff, 0x23, 0xff, 0x1f, 0xff, 0x21, 0xff, 0x1e, 0xff, 0x1d, 0xff, + 0x1c, 0xff, 0x1e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1f, 0xff, 0x1f, 0xff, + 0x23, 0xff, 0x23, 0xff, 0x27, 0xff, 0x27, 0xff, 0x2d, 0xff, 0x2e, 0xff, + 0x34, 0xff, 0x33, 0xff, 0x3c, 0xff, 0x3d, 0xff, 0x47, 0xff, 0x46, 0xff, + 0x4f, 0xff, 0x51, 0xff, 0x5c, 0xff, 0x5d, 0xff, 0x69, 0xff, 0x67, 0xff, + 0x75, 0xff, 0x77, 0xff, 0x84, 0xff, 0x83, 0xff, 0x92, 0xff, 0x95, 0xff, + 0xa3, 0xff, 0xa2, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xc1, 0xff, 0xc5, 0xff, + 0xd7, 0xff, 0xd3, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0x0d, 0x00, 0x0d, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x31, 0x00, 0x31, 0x00, + 0x45, 0x00, 0x43, 0x00, 0x55, 0x00, 0x57, 0x00, 0x6a, 0x00, 0x68, 0x00, + 0x7a, 0x00, 0x7b, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x9d, 0x00, 0x9e, 0x00, + 0xae, 0x00, 0xac, 0x00, 0xbd, 0x00, 0xbf, 0x00, 0xcc, 0x00, 0xca, 0x00, + 0xdc, 0x00, 0xdb, 0x00, 0xe8, 0x00, 0xe9, 0x00, 0xf4, 0x00, 0xf4, 0x00, + 0x03, 0x01, 0x01, 0x01, 0x09, 0x01, 0x0b, 0x01, 0x17, 0x01, 0x14, 0x01, + 0x1b, 0x01, 0x1d, 0x01, 0x25, 0x01, 0x23, 0x01, 0x29, 0x01, 0x29, 0x01, + 0x2c, 0x01, 0x2c, 0x01, 0x32, 0x01, 0x31, 0x01, 0x32, 0x01, 0x32, 0x01, + 0x34, 0x01, 0x34, 0x01, 0x33, 0x01, 0x32, 0x01, 0x2f, 0x01, 0x30, 0x01, + 0x2e, 0x01, 0x2d, 0x01, 0x26, 0x01, 0x27, 0x01, 0x22, 0x01, 0x21, 0x01, + 0x1a, 0x01, 0x19, 0x01, 0x10, 0x01, 0x11, 0x01, 0x09, 0x01, 0x08, 0x01, + 0xfc, 0x00, 0xfd, 0x00, 0xf1, 0x00, 0xf1, 0x00, 0xe4, 0x00, 0xe4, 0x00, + 0xd3, 0x00, 0xd4, 0x00, 0xc7, 0x00, 0xc6, 0x00, 0xb7, 0x00, 0xb6, 0x00, + 0xa6, 0x00, 0xa7, 0x00, 0x94, 0x00, 0x91, 0x00, 0x80, 0x00, 0x83, 0x00, + 0x6e, 0x00, 0x6d, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x48, 0x00, 0x47, 0x00, + 0x34, 0x00, 0x35, 0x00, 0x20, 0x00, 0x21, 0x00, 0x09, 0x00, 0x08, 0x00, + 0xf9, 0xff, 0xfa, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xd0, 0xff, 0xd1, 0xff, + 0xbb, 0xff, 0xba, 0xff, 0xa6, 0xff, 0xa7, 0xff, 0x95, 0xff, 0x95, 0xff, + 0x7f, 0xff, 0x7f, 0xff, 0x70, 0xff, 0x70, 0xff, 0x5d, 0xff, 0x5d, 0xff, + 0x4c, 0xff, 0x4d, 0xff, 0x3c, 0xff, 0x3b, 0xff, 0x2c, 0xff, 0x2d, 0xff, + 0x1f, 0xff, 0x1e, 0xff, 0x10, 0xff, 0x10, 0xff, 0x06, 0xff, 0x05, 0xff, + 0xf9, 0xfe, 0xfa, 0xfe, 0xf1, 0xfe, 0xf0, 0xfe, 0xe7, 0xfe, 0xe8, 0xfe, + 0xe0, 0xfe, 0xdf, 0xfe, 0xda, 0xfe, 0xdb, 0xfe, 0xd5, 0xfe, 0xd6, 0xfe, + 0xd1, 0xfe, 0xd2, 0xfe, 0xd2, 0xfe, 0xcf, 0xfe, 0xcf, 0xfe, 0xcf, 0xfe, + 0xcf, 0xfe, 0xd1, 0xfe, 0xd1, 0xfe, 0xcf, 0xfe, 0xd4, 0xfe, 0xd6, 0xfe, + 0xda, 0xfe, 0xda, 0xfe, 0xe1, 0xfe, 0xde, 0xfe, 0xe6, 0xfe, 0xe8, 0xfe, + 0xf0, 0xfe, 0xee, 0xfe, 0xf9, 0xfe, 0xf8, 0xfe, 0x04, 0xff, 0x03, 0xff, + 0x10, 0xff, 0x10, 0xff, 0x1b, 0xff, 0x1a, 0xff, 0x29, 0xff, 0x2c, 0xff, + 0x3a, 0xff, 0x37, 0xff, 0x46, 0xff, 0x49, 0xff, 0x5a, 0xff, 0x59, 0xff, + 0x69, 0xff, 0x68, 0xff, 0x79, 0xff, 0x7b, 0xff, 0x8d, 0xff, 0x8c, 0xff, + 0x9e, 0xff, 0x9e, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xc4, 0xff, 0xc5, 0xff, + 0xd9, 0xff, 0xd8, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0x00, 0x00, 0xfe, 0xff, + 0x0e, 0x00, 0x0f, 0x00, 0x22, 0x00, 0x21, 0x00, 0x35, 0x00, 0x35, 0x00, + 0x47, 0x00, 0x47, 0x00, 0x5a, 0x00, 0x59, 0x00, 0x68, 0x00, 0x68, 0x00, + 0x79, 0x00, 0x79, 0x00, 0x8a, 0x00, 0x89, 0x00, 0x97, 0x00, 0x96, 0x00, + 0xa4, 0x00, 0xa4, 0x00, 0xb2, 0x00, 0xb2, 0x00, 0xbc, 0x00, 0xbe, 0x00, + 0xc9, 0x00, 0xc9, 0x00, 0xd0, 0x00, 0xcf, 0x00, 0xda, 0x00, 0xdc, 0x00, + 0xdf, 0x00, 0xdf, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xe9, 0x00, 0xe9, 0x00, + 0xef, 0x00, 0xef, 0x00, 0xef, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0xf0, 0x00, 0xf1, 0x00, 0xec, 0x00, 0xef, 0x00, 0xed, 0x00, 0xea, 0x00, + 0xe3, 0x00, 0xe5, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xd7, 0x00, 0xd7, 0x00, + 0xcd, 0x00, 0xcf, 0x00, 0xc6, 0x00, 0xc4, 0x00, 0xb9, 0x00, 0xbb, 0x00, + 0xad, 0x00, 0xac, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0x92, 0x00, 0x90, 0x00, + 0x80, 0x00, 0x83, 0x00, 0x71, 0x00, 0x71, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x4f, 0x00, 0x4f, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x29, 0x00, 0x2a, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x02, 0x00, 0x03, 0x00, 0xec, 0xff, 0xed, 0xff, + 0xda, 0xff, 0xdb, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xb0, 0xff, 0xb0, 0xff, + 0x9e, 0xff, 0x9e, 0xff, 0x88, 0xff, 0x89, 0xff, 0x74, 0xff, 0x75, 0xff, + 0x61, 0xff, 0x62, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x3b, 0xff, 0x3d, 0xff, + 0x2b, 0xff, 0x29, 0xff, 0x1a, 0xff, 0x1b, 0xff, 0x09, 0xff, 0x09, 0xff, + 0xf9, 0xfe, 0xf9, 0xfe, 0xec, 0xfe, 0xed, 0xfe, 0xdd, 0xfe, 0xdc, 0xfe, + 0xd2, 0xfe, 0xd4, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, 0xbc, 0xfe, 0xbe, 0xfe, + 0xb4, 0xfe, 0xb5, 0xfe, 0xad, 0xfe, 0xac, 0xfe, 0xa6, 0xfe, 0xa8, 0xfe, + 0xa3, 0xfe, 0xa4, 0xfe, 0xa0, 0xfe, 0x9f, 0xfe, 0x9c, 0xfe, 0xa0, 0xfe, + 0x9f, 0xfe, 0x9d, 0xfe, 0x9c, 0xfe, 0xa0, 0xfe, 0xa2, 0xfe, 0xa0, 0xfe, + 0xa5, 0xfe, 0xa5, 0xfe, 0xa9, 0xfe, 0xab, 0xfe, 0xb3, 0xfe, 0xb1, 0xfe, + 0xb7, 0xfe, 0xba, 0xfe, 0xc3, 0xfe, 0xc2, 0xfe, 0xce, 0xfe, 0xd0, 0xfe, + 0xd9, 0xfe, 0xd8, 0xfe, 0xe6, 0xfe, 0xe7, 0xfe, 0xf4, 0xfe, 0xf4, 0xfe, + 0x03, 0xff, 0x06, 0xff, 0x16, 0xff, 0x14, 0xff, 0x23, 0xff, 0x24, 0xff, + 0x39, 0xff, 0x37, 0xff, 0x49, 0xff, 0x49, 0xff, 0x5d, 0xff, 0x5f, 0xff, + 0x72, 0xff, 0x71, 0xff, 0x86, 0xff, 0x88, 0xff, 0x9b, 0xff, 0x9b, 0xff, + 0xb1, 0xff, 0xb0, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xdc, 0xff, 0xda, 0xff, + 0xf0, 0xff, 0xf1, 0xff, 0x06, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x1c, 0x00, + 0x2f, 0x00, 0x2e, 0x00, 0x44, 0x00, 0x45, 0x00, 0x57, 0x00, 0x58, 0x00, + 0x6d, 0x00, 0x6b, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x90, 0x00, 0x90, 0x00, + 0xa3, 0x00, 0xa3, 0x00, 0xb1, 0x00, 0xb0, 0x00, 0xc1, 0x00, 0xc2, 0x00, + 0xd1, 0x00, 0xd0, 0x00, 0xda, 0x00, 0xdc, 0x00, 0xeb, 0x00, 0xeb, 0x00, + 0xf1, 0x00, 0xf2, 0x00, 0x00, 0x01, 0xff, 0x00, 0x04, 0x01, 0x06, 0x01, + 0x0c, 0x01, 0x0d, 0x01, 0x12, 0x01, 0x12, 0x01, 0x13, 0x01, 0x17, 0x01, + 0x1a, 0x01, 0x19, 0x01, 0x19, 0x01, 0x1a, 0x01, 0x19, 0x01, 0x19, 0x01, + 0x18, 0x01, 0x16, 0x01, 0x13, 0x01, 0x15, 0x01, 0x10, 0x01, 0x0f, 0x01, + 0x08, 0x01, 0x0a, 0x01, 0x02, 0x01, 0x02, 0x01, 0xf9, 0x00, 0xfa, 0x00, + 0xef, 0x00, 0xee, 0x00, 0xe4, 0x00, 0xe5, 0x00, 0xd9, 0x00, 0xd8, 0x00, + 0xc9, 0x00, 0xca, 0x00, 0xbc, 0x00, 0xbb, 0x00, 0xaa, 0x00, 0xaa, 0x00, + 0x9c, 0x00, 0x9d, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x78, 0x00, 0x77, 0x00, + 0x66, 0x00, 0x68, 0x00, 0x52, 0x00, 0x52, 0x00, 0x3f, 0x00, 0x40, 0x00, + 0x29, 0x00, 0x29, 0x00, 0x15, 0x00, 0x17, 0x00, 0x03, 0x00, 0x01, 0x00, + 0xeb, 0xff, 0xee, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xc2, 0xff, 0xc3, 0xff, + 0xb1, 0xff, 0xb0, 0xff, 0x9d, 0xff, 0x9c, 0xff, 0x88, 0xff, 0x8b, 0xff, + 0x76, 0xff, 0x76, 0xff, 0x62, 0xff, 0x64, 0xff, 0x54, 0xff, 0x52, 0xff, + 0x41, 0xff, 0x40, 0xff, 0x32, 0xff, 0x33, 0xff, 0x23, 0xff, 0x21, 0xff, + 0x14, 0xff, 0x16, 0xff, 0x09, 0xff, 0x08, 0xff, 0xfb, 0xfe, 0xfc, 0xfe, + 0xf3, 0xfe, 0xf3, 0xfe, 0xe9, 0xfe, 0xe9, 0xfe, 0xe1, 0xfe, 0xe2, 0xfe, + 0xdc, 0xfe, 0xda, 0xfe, 0xd5, 0xfe, 0xd6, 0xfe, 0xd5, 0xfe, 0xd3, 0xfe, + 0xd0, 0xfe, 0xd0, 0xfe, 0xd0, 0xfe, 0xd0, 0xfe, 0xd2, 0xfe, 0xd1, 0xfe, + 0xd2, 0xfe, 0xd4, 0xfe, 0xd9, 0xfe, 0xd6, 0xfe, 0xdc, 0xfe, 0xdd, 0xfe, + 0xe5, 0xfe, 0xe5, 0xfe, 0xed, 0xfe, 0xeb, 0xfe, 0xf3, 0xfe, 0xf6, 0xfe, + 0x04, 0xff, 0x04, 0xff, 0x0d, 0xff, 0x0d, 0xff, 0x1e, 0xff, 0x1f, 0xff, + 0x2a, 0xff, 0x2a, 0xff, 0x3b, 0xff, 0x3c, 0xff, 0x4a, 0xff, 0x4d, 0xff, + 0x5d, 0xff, 0x5d, 0xff, 0x71, 0xff, 0x72, 0xff, 0x85, 0xff, 0x86, 0xff, + 0x9a, 0xff, 0x9a, 0xff, 0xae, 0xff, 0xb0, 0xff, 0xc6, 0xff, 0xc5, 0xff, + 0xdb, 0xff, 0xdb, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0x09, 0x00, 0x09, 0x00, + 0x1f, 0x00, 0x20, 0x00, 0x37, 0x00, 0x38, 0x00, 0x4d, 0x00, 0x4d, 0x00, + 0x64, 0x00, 0x66, 0x00, 0x7c, 0x00, 0x7b, 0x00, 0x91, 0x00, 0x92, 0x00, + 0xa5, 0x00, 0xa7, 0x00, 0xbc, 0x00, 0xba, 0x00, 0xce, 0x00, 0xd1, 0x00, + 0xe5, 0x00, 0xe4, 0x00, 0xf5, 0x00, 0xf7, 0x00, 0x08, 0x01, 0x09, 0x01, + 0x1a, 0x01, 0x1a, 0x01, 0x29, 0x01, 0x28, 0x01, 0x38, 0x01, 0x39, 0x01, + 0x47, 0x01, 0x46, 0x01, 0x4f, 0x01, 0x52, 0x01, 0x5d, 0x01, 0x5b, 0x01, + 0x64, 0x01, 0x65, 0x01, 0x6c, 0x01, 0x6b, 0x01, 0x75, 0x01, 0x74, 0x01, + 0x76, 0x01, 0x77, 0x01, 0x7b, 0x01, 0x7a, 0x01, 0x7c, 0x01, 0x7b, 0x01, + 0x7d, 0x01, 0x7c, 0x01, 0x7a, 0x01, 0x7c, 0x01, 0x76, 0x01, 0x77, 0x01, + 0x74, 0x01, 0x74, 0x01, 0x6c, 0x01, 0x6d, 0x01, 0x64, 0x01, 0x64, 0x01, + 0x5c, 0x01, 0x5c, 0x01, 0x51, 0x01, 0x51, 0x01, 0x46, 0x01, 0x45, 0x01, + 0x37, 0x01, 0x39, 0x01, 0x29, 0x01, 0x28, 0x01, 0x19, 0x01, 0x1a, 0x01, + 0x07, 0x01, 0x08, 0x01, 0xf6, 0x00, 0xf6, 0x00, 0xe3, 0x00, 0xe4, 0x00, + 0xd0, 0x00, 0xcf, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xa6, 0x00, 0xa6, 0x00, + 0x92, 0x00, 0x92, 0x00, 0x7a, 0x00, 0x79, 0x00, 0x65, 0x00, 0x67, 0x00, + 0x4d, 0x00, 0x4c, 0x00, 0x36, 0x00, 0x38, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x08, 0x00, 0x09, 0x00, 0xf4, 0xff, 0xf4, 0xff, 0xdc, 0xff, 0xde, 0xff, + 0xc6, 0xff, 0xc5, 0xff, 0xb1, 0xff, 0xb3, 0xff, 0x9b, 0xff, 0x9b, 0xff, + 0x86, 0xff, 0x8a, 0xff, 0x74, 0xff, 0x74, 0xff, 0x61, 0xff, 0x62, 0xff, + 0x50, 0xff, 0x51, 0xff, 0x3e, 0xff, 0x3f, 0xff, 0x31, 0xff, 0x31, 0xff, + 0x20, 0xff, 0x22, 0xff, 0x17, 0xff, 0x14, 0xff, 0x08, 0xff, 0x0a, 0xff, + 0x01, 0xff, 0x00, 0xff, 0xf5, 0xfe, 0xf6, 0xfe, 0xf0, 0xfe, 0xf0, 0xfe, + 0xe8, 0xfe, 0xe9, 0xfe, 0xe6, 0xfe, 0xe5, 0xfe, 0xe4, 0xfe, 0xe5, 0xfe, + 0xe0, 0xfe, 0xe0, 0xfe, 0xe5, 0xfe, 0xe3, 0xfe, 0xe2, 0xfe, 0xe3, 0xfe, + 0xeb, 0xfe, 0xe9, 0xfe, 0xec, 0xfe, 0xed, 0xfe, 0xf5, 0xfe, 0xf4, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfe, 0x06, 0xff, 0x05, 0xff, 0x11, 0xff, 0x12, 0xff, + 0x20, 0xff, 0x1d, 0xff, 0x2d, 0xff, 0x2d, 0xff, 0x3f, 0xff, 0x3e, 0xff, + 0x4c, 0xff, 0x4b, 0xff, 0x5f, 0xff, 0x60, 0xff, 0x70, 0xff, 0x70, 0xff, + 0x86, 0xff, 0x87, 0xff, 0x98, 0xff, 0x99, 0xff, 0xad, 0xff, 0xad, 0xff, + 0xc2, 0xff, 0xc2, 0xff, 0xda, 0xff, 0xda, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0x08, 0x00, 0x08, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x35, 0x00, 0x35, 0x00, + 0x4d, 0x00, 0x4d, 0x00, 0x64, 0x00, 0x65, 0x00, 0x7c, 0x00, 0x7c, 0x00, + 0x90, 0x00, 0x91, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xbd, 0x00, 0xbe, 0x00, + 0xd4, 0x00, 0xd3, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xfa, 0x00, 0xf9, 0x00, + 0x0d, 0x01, 0x0e, 0x01, 0x1e, 0x01, 0x1f, 0x01, 0x2e, 0x01, 0x2f, 0x01, + 0x3c, 0x01, 0x3c, 0x01, 0x4c, 0x01, 0x4b, 0x01, 0x54, 0x01, 0x56, 0x01, + 0x64, 0x01, 0x62, 0x01, 0x69, 0x01, 0x6b, 0x01, 0x71, 0x01, 0x72, 0x01, + 0x7a, 0x01, 0x79, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x80, 0x01, 0x81, 0x01, + 0x82, 0x01, 0x82, 0x01, 0x81, 0x01, 0x83, 0x01, 0x7e, 0x01, 0x7e, 0x01, + 0x7a, 0x01, 0x7b, 0x01, 0x76, 0x01, 0x79, 0x01, 0x71, 0x01, 0x6e, 0x01, + 0x64, 0x01, 0x67, 0x01, 0x5c, 0x01, 0x5d, 0x01, 0x4e, 0x01, 0x50, 0x01, + 0x41, 0x01, 0x43, 0x01, 0x33, 0x01, 0x35, 0x01, 0x21, 0x01, 0x22, 0x01, + 0x12, 0x01, 0x13, 0x01, 0xff, 0x00, 0xff, 0x00, 0xea, 0x00, 0xeb, 0x00, + 0xd5, 0x00, 0xd6, 0x00, 0xc1, 0x00, 0xc1, 0x00, 0xaa, 0x00, 0xaa, 0x00, + 0x91, 0x00, 0x93, 0x00, 0x7b, 0x00, 0x7a, 0x00, 0x5f, 0x00, 0x62, 0x00, + 0x48, 0x00, 0x49, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x14, 0x00, 0x14, 0x00, + 0xfb, 0xff, 0xfc, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xc9, 0xff, 0xca, 0xff, + 0xaf, 0xff, 0xae, 0xff, 0x96, 0xff, 0x98, 0xff, 0x7d, 0xff, 0x7d, 0xff, + 0x65, 0xff, 0x68, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x38, 0xff, 0x39, 0xff, + 0x23, 0xff, 0x25, 0xff, 0x0e, 0xff, 0x0f, 0xff, 0xfd, 0xfe, 0xfe, 0xfe, + 0xe7, 0xfe, 0xe9, 0xfe, 0xd9, 0xfe, 0xdb, 0xfe, 0xc8, 0xfe, 0xc7, 0xfe, + 0xbc, 0xfe, 0xbc, 0xfe, 0xae, 0xfe, 0xb0, 0xfe, 0xa4, 0xfe, 0xa2, 0xfe, + 0x9a, 0xfe, 0x9c, 0xfe, 0x91, 0xfe, 0x91, 0xfe, 0x8c, 0xfe, 0x8e, 0xfe, + 0x87, 0xfe, 0x89, 0xfe, 0x85, 0xfe, 0x84, 0xfe, 0x84, 0xfe, 0x86, 0xfe, + 0x83, 0xfe, 0x83, 0xfe, 0x87, 0xfe, 0x89, 0xfe, 0x8b, 0xfe, 0x8c, 0xfe, + 0x92, 0xfe, 0x93, 0xfe, 0x9a, 0xfe, 0x99, 0xfe, 0xa1, 0xfe, 0xa2, 0xfe, + 0xb0, 0xfe, 0xaf, 0xfe, 0xb7, 0xfe, 0xba, 0xfe, 0xcb, 0xfe, 0xca, 0xfe, + 0xd5, 0xfe, 0xd6, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, 0xfb, 0xfe, 0xf9, 0xfe, + 0x0b, 0xff, 0x0f, 0xff, 0x22, 0xff, 0x1f, 0xff, 0x35, 0xff, 0x37, 0xff, + 0x4c, 0xff, 0x4b, 0xff, 0x62, 0xff, 0x63, 0xff, 0x7a, 0xff, 0x7a, 0xff, + 0x92, 0xff, 0x92, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0xc4, 0xff, 0xc4, 0xff, + 0xdb, 0xff, 0xdb, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0x0d, 0x00, 0x0b, 0x00, + 0x25, 0x00, 0x27, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x57, 0x00, 0x56, 0x00, + 0x6d, 0x00, 0x6f, 0x00, 0x83, 0x00, 0x83, 0x00, 0x9b, 0x00, 0x9c, 0x00, + 0xae, 0x00, 0xb0, 0x00, 0xc4, 0x00, 0xc2, 0x00, 0xd6, 0x00, 0xd8, 0x00, + 0xe8, 0x00, 0xe8, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0x08, 0x01, 0x09, 0x01, + 0x18, 0x01, 0x18, 0x01, 0x21, 0x01, 0x22, 0x01, 0x2f, 0x01, 0x30, 0x01, + 0x38, 0x01, 0x39, 0x01, 0x3e, 0x01, 0x3f, 0x01, 0x47, 0x01, 0x48, 0x01, + 0x48, 0x01, 0x48, 0x01, 0x4c, 0x01, 0x4f, 0x01, 0x4c, 0x01, 0x4c, 0x01, + 0x4d, 0x01, 0x4e, 0x01, 0x49, 0x01, 0x4a, 0x01, 0x44, 0x01, 0x45, 0x01, + 0x41, 0x01, 0x41, 0x01, 0x34, 0x01, 0x36, 0x01, 0x2e, 0x01, 0x30, 0x01, + 0x21, 0x01, 0x20, 0x01, 0x15, 0x01, 0x17, 0x01, 0x06, 0x01, 0x05, 0x01, + 0xf4, 0x00, 0xf8, 0x00, 0xe5, 0x00, 0xe5, 0x00, 0xd0, 0x00, 0xd2, 0x00, + 0xbe, 0x00, 0xbe, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0x92, 0x00, 0x92, 0x00, + 0x7a, 0x00, 0x7d, 0x00, 0x63, 0x00, 0x62, 0x00, 0x48, 0x00, 0x4a, 0x00, + 0x2f, 0x00, 0x31, 0x00, 0x15, 0x00, 0x15, 0x00, 0xfb, 0xff, 0xff, 0xff, + 0xe0, 0xff, 0xe1, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xab, 0xff, 0xad, 0xff, + 0x91, 0xff, 0x91, 0xff, 0x78, 0xff, 0x79, 0xff, 0x5c, 0xff, 0x5c, 0xff, + 0x43, 0xff, 0x46, 0xff, 0x2b, 0xff, 0x29, 0xff, 0x12, 0xff, 0x12, 0xff, + 0xfb, 0xfe, 0xfc, 0xfe, 0xe2, 0xfe, 0xe3, 0xfe, 0xce, 0xfe, 0xce, 0xfe, + 0xb9, 0xfe, 0xbb, 0xfe, 0xa7, 0xfe, 0xa6, 0xfe, 0x96, 0xfe, 0x96, 0xfe, + 0x86, 0xfe, 0x84, 0xfe, 0x75, 0xfe, 0x76, 0xfe, 0x68, 0xfe, 0x68, 0xfe, + 0x5d, 0xfe, 0x5f, 0xfe, 0x53, 0xfe, 0x52, 0xfe, 0x4b, 0xfe, 0x4c, 0xfe, + 0x44, 0xfe, 0x44, 0xfe, 0x41, 0xfe, 0x41, 0xfe, 0x3e, 0xfe, 0x3e, 0xfe, + 0x3e, 0xfe, 0x3d, 0xfe, 0x3e, 0xfe, 0x3f, 0xfe, 0x42, 0xfe, 0x41, 0xfe, + 0x45, 0xfe, 0x46, 0xfe, 0x4e, 0xfe, 0x4c, 0xfe, 0x54, 0xfe, 0x55, 0xfe, + 0x60, 0xfe, 0x5e, 0xfe, 0x6b, 0xfe, 0x6c, 0xfe, 0x78, 0xfe, 0x78, 0xfe, + 0x8a, 0xfe, 0x87, 0xfe, 0x98, 0xfe, 0x9a, 0xfe, 0xad, 0xfe, 0xac, 0xfe, + 0xc0, 0xfe, 0xc2, 0xfe, 0xd5, 0xfe, 0xd5, 0xfe, 0xea, 0xfe, 0xeb, 0xfe, + 0x03, 0xff, 0x02, 0xff, 0x1b, 0xff, 0x1d, 0xff, 0x34, 0xff, 0x34, 0xff, + 0x4f, 0xff, 0x50, 0xff, 0x68, 0xff, 0x6a, 0xff, 0x84, 0xff, 0x84, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0xba, 0xff, 0xbc, 0xff, 0xd9, 0xff, 0xd8, 0xff, + 0xf4, 0xff, 0xf5, 0xff, 0x0d, 0x00, 0x0f, 0x00, 0x2b, 0x00, 0x2c, 0x00, + 0x45, 0x00, 0x47, 0x00, 0x62, 0x00, 0x61, 0x00, 0x7a, 0x00, 0x7b, 0x00, + 0x97, 0x00, 0x96, 0x00, 0xab, 0x00, 0xac, 0x00, 0xc7, 0x00, 0xc7, 0x00, + 0xd9, 0x00, 0xda, 0x00, 0xf1, 0x00, 0xf1, 0x00, 0x05, 0x01, 0x05, 0x01, + 0x18, 0x01, 0x17, 0x01, 0x29, 0x01, 0x2c, 0x01, 0x3b, 0x01, 0x39, 0x01, + 0x47, 0x01, 0x49, 0x01, 0x53, 0x01, 0x53, 0x01, 0x5d, 0x01, 0x5e, 0x01, + 0x67, 0x01, 0x67, 0x01, 0x6c, 0x01, 0x6e, 0x01, 0x75, 0x01, 0x74, 0x01, + 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x77, 0x01, 0x78, 0x01, 0x78, 0x01, + 0x72, 0x01, 0x73, 0x01, 0x72, 0x01, 0x71, 0x01, 0x68, 0x01, 0x6a, 0x01, + 0x62, 0x01, 0x61, 0x01, 0x58, 0x01, 0x59, 0x01, 0x4c, 0x01, 0x4b, 0x01, + 0x40, 0x01, 0x3f, 0x01, 0x2e, 0x01, 0x31, 0x01, 0x20, 0x01, 0x1f, 0x01, + 0x0d, 0x01, 0x0e, 0x01, 0xf9, 0x00, 0xf9, 0x00, 0xe5, 0x00, 0xe5, 0x00, + 0xcd, 0x00, 0xcf, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0x9f, 0x00, 0xa0, 0x00, + 0x84, 0x00, 0x85, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x37, 0x00, 0x3a, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0xff, 0xff, 0x01, 0x00, + 0xe6, 0xff, 0xe6, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xaf, 0xff, 0xb0, 0xff, + 0x92, 0xff, 0x92, 0xff, 0x78, 0xff, 0x7a, 0xff, 0x5d, 0xff, 0x5d, 0xff, + 0x43, 0xff, 0x46, 0xff, 0x2c, 0xff, 0x2a, 0xff, 0x14, 0xff, 0x16, 0xff, + 0xfe, 0xfe, 0xfd, 0xfe, 0xe6, 0xfe, 0xe7, 0xfe, 0xd2, 0xfe, 0xd4, 0xfe, + 0xc1, 0xfe, 0xc2, 0xfe, 0xaf, 0xfe, 0xb0, 0xfe, 0xa0, 0xfe, 0xa2, 0xfe, + 0x90, 0xfe, 0x8e, 0xfe, 0x85, 0xfe, 0x87, 0xfe, 0x7b, 0xfe, 0x7a, 0xfe, + 0x70, 0xfe, 0x72, 0xfe, 0x6b, 0xfe, 0x6a, 0xfe, 0x64, 0xfe, 0x66, 0xfe, + 0x64, 0xfe, 0x63, 0xfe, 0x62, 0xfe, 0x63, 0xfe, 0x61, 0xfe, 0x62, 0xfe, + 0x66, 0xfe, 0x66, 0xfe, 0x6a, 0xfe, 0x6b, 0xfe, 0x6f, 0xfe, 0x72, 0xfe, + 0x79, 0xfe, 0x79, 0xfe, 0x82, 0xfe, 0x83, 0xfe, 0x91, 0xfe, 0x93, 0xfe, + 0x9d, 0xfe, 0x9e, 0xfe, 0xaf, 0xfe, 0xb1, 0xfe, 0xc0, 0xfe, 0xc1, 0xfe, + 0xd4, 0xfe, 0xd5, 0xfe, 0xe8, 0xfe, 0xea, 0xfe, 0x00, 0xff, 0xff, 0xfe, + 0x18, 0xff, 0x19, 0xff, 0x2f, 0xff, 0x2e, 0xff, 0x4c, 0xff, 0x4c, 0xff, + 0x64, 0xff, 0x64, 0xff, 0x83, 0xff, 0x82, 0xff, 0x9e, 0xff, 0x9d, 0xff, + 0xba, 0xff, 0xba, 0xff, 0xda, 0xff, 0xda, 0xff, 0xf5, 0xff, 0xf6, 0xff, + 0x17, 0x00, 0x17, 0x00, 0x32, 0x00, 0x32, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x6f, 0x00, 0x70, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0xac, 0x00, 0xad, 0x00, + 0xc6, 0x00, 0xc5, 0x00, 0xe4, 0x00, 0xe7, 0x00, 0xfc, 0x00, 0xfb, 0x00, + 0x19, 0x01, 0x18, 0x01, 0x31, 0x01, 0x31, 0x01, 0x49, 0x01, 0x49, 0x01, + 0x5c, 0x01, 0x5e, 0x01, 0x74, 0x01, 0x73, 0x01, 0x87, 0x01, 0x88, 0x01, + 0x98, 0x01, 0x98, 0x01, 0xa9, 0x01, 0xa9, 0x01, 0xb7, 0x01, 0xb6, 0x01, + 0xc3, 0x01, 0xc3, 0x01, 0xcc, 0x01, 0xcd, 0x01, 0xd5, 0x01, 0xd4, 0x01, + 0xdd, 0x01, 0xdd, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe4, 0x01, 0xe4, 0x01, + 0xe2, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xe2, 0x01, 0xdc, 0x01, 0xd9, 0x01, + 0xd7, 0x01, 0xd7, 0x01, 0xce, 0x01, 0xcf, 0x01, 0xc5, 0x01, 0xc3, 0x01, + 0xb8, 0x01, 0xbb, 0x01, 0xaa, 0x01, 0xa8, 0x01, 0x9b, 0x01, 0x9d, 0x01, + 0x88, 0x01, 0x8a, 0x01, 0x77, 0x01, 0x74, 0x01, 0x63, 0x01, 0x64, 0x01, + 0x4a, 0x01, 0x49, 0x01, 0x36, 0x01, 0x36, 0x01, 0x19, 0x01, 0x1b, 0x01, + 0x02, 0x01, 0x03, 0x01, 0xe5, 0x00, 0xe6, 0x00, 0xca, 0x00, 0xca, 0x00, + 0xae, 0x00, 0xaf, 0x00, 0x8e, 0x00, 0x90, 0x00, 0x76, 0x00, 0x75, 0x00, + 0x55, 0x00, 0x55, 0x00, 0x37, 0x00, 0x37, 0x00, 0x1a, 0x00, 0x1b, 0x00, + 0xf9, 0xff, 0xf8, 0xff, 0xdf, 0xff, 0xe0, 0xff, 0xbf, 0xff, 0xc0, 0xff, + 0xa3, 0xff, 0xa2, 0xff, 0x87, 0xff, 0x8a, 0xff, 0x6a, 0xff, 0x6a, 0xff, + 0x50, 0xff, 0x52, 0xff, 0x36, 0xff, 0x35, 0xff, 0x1e, 0xff, 0x1f, 0xff, + 0x08, 0xff, 0x08, 0xff, 0xf0, 0xfe, 0xf0, 0xfe, 0xde, 0xfe, 0xdf, 0xfe, + 0xcb, 0xfe, 0xcb, 0xfe, 0xb9, 0xfe, 0xb9, 0xfe, 0xaa, 0xfe, 0xab, 0xfe, + 0x9d, 0xfe, 0x9b, 0xfe, 0x91, 0xfe, 0x93, 0xfe, 0x87, 0xfe, 0x87, 0xfe, + 0x81, 0xfe, 0x81, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, 0x79, 0xfe, 0x78, 0xfe, + 0x76, 0xfe, 0x77, 0xfe, 0x76, 0xfe, 0x76, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, + 0x7e, 0xfe, 0x7e, 0xfe, 0x86, 0xfe, 0x84, 0xfe, 0x8f, 0xfe, 0x8f, 0xfe, + 0x9a, 0xfe, 0x99, 0xfe, 0xa6, 0xfe, 0xa6, 0xfe, 0xb7, 0xfe, 0xb8, 0xfe, + 0xc6, 0xfe, 0xc4, 0xfe, 0xda, 0xfe, 0xdc, 0xfe, 0xee, 0xfe, 0xec, 0xfe, + 0x04, 0xff, 0x05, 0xff, 0x1a, 0xff, 0x1a, 0xff, 0x34, 0xff, 0x34, 0xff, + 0x4d, 0xff, 0x4b, 0xff, 0x66, 0xff, 0x67, 0xff, 0x88, 0xff, 0x84, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0xc0, 0xff, 0xbf, 0xff, 0xdc, 0xff, 0xdc, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0x1b, 0x00, 0x1a, 0x00, 0x39, 0x00, 0x3a, 0x00, + 0x58, 0x00, 0x58, 0x00, 0x76, 0x00, 0x78, 0x00, 0x93, 0x00, 0x94, 0x00, + 0xb3, 0x00, 0xb3, 0x00, 0xd1, 0x00, 0xd1, 0x00, 0xed, 0x00, 0xee, 0x00, + 0x0a, 0x01, 0x0b, 0x01, 0x23, 0x01, 0x23, 0x01, 0x3f, 0x01, 0x3f, 0x01, + 0x56, 0x01, 0x57, 0x01, 0x6e, 0x01, 0x6d, 0x01, 0x85, 0x01, 0x84, 0x01, + 0x95, 0x01, 0x97, 0x01, 0xab, 0x01, 0xa9, 0x01, 0xb9, 0x01, 0xba, 0x01, + 0xca, 0x01, 0xc9, 0x01, 0xd6, 0x01, 0xd6, 0x01, 0xdf, 0x01, 0xe1, 0x01, + 0xea, 0x01, 0xea, 0x01, 0xee, 0x01, 0xf1, 0x01, 0xf6, 0x01, 0xf5, 0x01, + 0xf5, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf5, 0x01, 0xf6, 0x01, + 0xef, 0x01, 0xee, 0x01, 0xe9, 0x01, 0xea, 0x01, 0xe1, 0x01, 0xdf, 0x01, + 0xd3, 0x01, 0xd5, 0x01, 0xc8, 0x01, 0xc6, 0x01, 0xb6, 0x01, 0xb8, 0x01, + 0xa7, 0x01, 0xa5, 0x01, 0x93, 0x01, 0x94, 0x01, 0x7f, 0x01, 0x7e, 0x01, + 0x68, 0x01, 0x69, 0x01, 0x51, 0x01, 0x4f, 0x01, 0x36, 0x01, 0x39, 0x01, + 0x1d, 0x01, 0x1b, 0x01, 0xff, 0x00, 0x00, 0x01, 0xe3, 0x00, 0xe2, 0x00, + 0xc3, 0x00, 0xc2, 0x00, 0xa4, 0x00, 0xa6, 0x00, 0x84, 0x00, 0x84, 0x00, + 0x64, 0x00, 0x64, 0x00, 0x42, 0x00, 0x42, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xdd, 0xff, 0xdd, 0xff, 0xbf, 0xff, 0xbf, 0xff, + 0x9c, 0xff, 0x9d, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x5f, 0xff, 0x5e, 0xff, + 0x3f, 0xff, 0x3f, 0xff, 0x21, 0xff, 0x20, 0xff, 0x05, 0xff, 0x04, 0xff, + 0xe7, 0xfe, 0xe5, 0xfe, 0xd0, 0xfe, 0xd0, 0xfe, 0xb3, 0xfe, 0xb2, 0xfe, + 0x9d, 0xfe, 0x9d, 0xfe, 0x87, 0xfe, 0x86, 0xfe, 0x72, 0xfe, 0x74, 0xfe, + 0x60, 0xfe, 0x60, 0xfe, 0x50, 0xfe, 0x51, 0xfe, 0x44, 0xfe, 0x42, 0xfe, + 0x35, 0xfe, 0x36, 0xfe, 0x2e, 0xfe, 0x2c, 0xfe, 0x23, 0xfe, 0x24, 0xfe, + 0x20, 0xfe, 0x1f, 0xfe, 0x1b, 0xfe, 0x1c, 0xfe, 0x1a, 0xfe, 0x1b, 0xfe, + 0x1d, 0xfe, 0x1b, 0xfe, 0x1c, 0xfe, 0x1e, 0xfe, 0x27, 0xfe, 0x25, 0xfe, + 0x2c, 0xfe, 0x2b, 0xfe, 0x36, 0xfe, 0x38, 0xfe, 0x45, 0xfe, 0x43, 0xfe, + 0x50, 0xfe, 0x52, 0xfe, 0x65, 0xfe, 0x62, 0xfe, 0x72, 0xfe, 0x73, 0xfe, + 0x8c, 0xfe, 0x88, 0xfe, 0x9c, 0xfe, 0x9e, 0xfe, 0xb7, 0xfe, 0xb7, 0xfe, + 0xd1, 0xfe, 0xcf, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, 0x06, 0xff, 0x04, 0xff, + 0x1f, 0xff, 0x20, 0xff, 0x40, 0xff, 0x3f, 0xff, 0x5c, 0xff, 0x5d, 0xff, + 0x7e, 0xff, 0x7d, 0xff, 0x9f, 0xff, 0x9e, 0xff, 0xbb, 0xff, 0xbb, 0xff, + 0xdf, 0xff, 0xdf, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0x21, 0x00, 0x21, 0x00, + 0x3d, 0x00, 0x3c, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x7e, 0x00, 0x7e, 0x00, + 0x9b, 0x00, 0x9a, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0xd8, 0x00, 0xd6, 0x00, + 0xf3, 0x00, 0xf4, 0x00, 0x0f, 0x01, 0x0e, 0x01, 0x25, 0x01, 0x25, 0x01, + 0x3f, 0x01, 0x41, 0x01, 0x55, 0x01, 0x52, 0x01, 0x68, 0x01, 0x69, 0x01, + 0x7d, 0x01, 0x7b, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x9c, 0x01, 0x9a, 0x01, + 0xa5, 0x01, 0xa6, 0x01, 0xb1, 0x01, 0xb1, 0x01, 0xb8, 0x01, 0xb9, 0x01, + 0xbe, 0x01, 0xbe, 0x01, 0xc3, 0x01, 0xc2, 0x01, 0xc3, 0x01, 0xc6, 0x01, + 0xc2, 0x01, 0xc1, 0x01, 0xbf, 0x01, 0xc3, 0x01, 0xb9, 0x01, 0xb6, 0x01, + 0xb2, 0x01, 0xb6, 0x01, 0xa8, 0x01, 0xa6, 0x01, 0x9c, 0x01, 0x9d, 0x01, + 0x8d, 0x01, 0x8d, 0x01, 0x78, 0x01, 0x7a, 0x01, 0x6c, 0x01, 0x6b, 0x01, + 0x53, 0x01, 0x53, 0x01, 0x3e, 0x01, 0x40, 0x01, 0x25, 0x01, 0x25, 0x01, + 0x0b, 0x01, 0x0a, 0x01, 0xf1, 0x00, 0xf0, 0x00, 0xd3, 0x00, 0xd4, 0x00, + 0xb4, 0x00, 0xb5, 0x00, 0x96, 0x00, 0x97, 0x00, 0x76, 0x00, 0x74, 0x00, + 0x54, 0x00, 0x56, 0x00, 0x34, 0x00, 0x34, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0xf0, 0xff, 0xf0, 0xff, 0xca, 0xff, 0xca, 0xff, 0xa9, 0xff, 0xaa, 0xff, + 0x86, 0xff, 0x85, 0xff, 0x64, 0xff, 0x65, 0xff, 0x41, 0xff, 0x42, 0xff, + 0x21, 0xff, 0x1f, 0xff, 0x00, 0xff, 0x02, 0xff, 0xe0, 0xfe, 0xe0, 0xfe, + 0xc1, 0xfe, 0xc2, 0xfe, 0xa7, 0xfe, 0xa6, 0xfe, 0x86, 0xfe, 0x88, 0xfe, + 0x6f, 0xfe, 0x6c, 0xfe, 0x53, 0xfe, 0x55, 0xfe, 0x3e, 0xfe, 0x3e, 0xfe, + 0x29, 0xfe, 0x28, 0xfe, 0x13, 0xfe, 0x13, 0xfe, 0x04, 0xfe, 0x04, 0xfe, + 0xf6, 0xfd, 0xf4, 0xfd, 0xe6, 0xfd, 0xe9, 0xfd, 0xde, 0xfd, 0xde, 0xfd, + 0xd4, 0xfd, 0xd2, 0xfd, 0xce, 0xfd, 0xd0, 0xfd, 0xcb, 0xfd, 0xca, 0xfd, + 0xc9, 0xfd, 0xc9, 0xfd, 0xca, 0xfd, 0xcb, 0xfd, 0xcd, 0xfd, 0xce, 0xfd, + 0xd4, 0xfd, 0xd4, 0xfd, 0xdb, 0xfd, 0xdd, 0xfd, 0xe8, 0xfd, 0xe8, 0xfd, + 0xf3, 0xfd, 0xf4, 0xfd, 0x04, 0xfe, 0x05, 0xfe, 0x15, 0xfe, 0x13, 0xfe, + 0x28, 0xfe, 0x29, 0xfe, 0x3e, 0xfe, 0x3e, 0xfe, 0x55, 0xfe, 0x55, 0xfe, + 0x6e, 0xfe, 0x6f, 0xfe, 0x8a, 0xfe, 0x8a, 0xfe, 0xa6, 0xfe, 0xa7, 0xfe, + 0xc3, 0xfe, 0xc3, 0xfe, 0xe3, 0xfe, 0xe2, 0xfe, 0x04, 0xff, 0x04, 0xff, + 0x25, 0xff, 0x26, 0xff, 0x46, 0xff, 0x46, 0xff, 0x69, 0xff, 0x6a, 0xff, + 0x8d, 0xff, 0x8c, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xd4, 0xff, 0xd3, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0x1a, 0x00, 0x1b, 0x00, 0x3f, 0x00, 0x3d, 0x00, + 0x60, 0x00, 0x63, 0x00, 0x85, 0x00, 0x81, 0x00, 0xa4, 0x00, 0xa6, 0x00, + 0xc6, 0x00, 0xc5, 0x00, 0xe5, 0x00, 0xe5, 0x00, 0x04, 0x01, 0x04, 0x01, + 0x20, 0x01, 0x1f, 0x01, 0x3a, 0x01, 0x3b, 0x01, 0x56, 0x01, 0x55, 0x01, + 0x6b, 0x01, 0x6c, 0x01, 0x83, 0x01, 0x84, 0x01, 0x96, 0x01, 0x94, 0x01, + 0xa9, 0x01, 0xa9, 0x01, 0xb8, 0x01, 0xb7, 0x01, 0xc3, 0x01, 0xc4, 0x01, + 0xd2, 0x01, 0xd1, 0x01, 0xd9, 0x01, 0xd8, 0x01, 0xde, 0x01, 0xde, 0x01, + 0xe4, 0x01, 0xe4, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xe3, 0x01, 0xe3, 0x01, + 0xe1, 0x01, 0xe0, 0x01, 0xdb, 0x01, 0xd9, 0x01, 0xd2, 0x01, 0xd3, 0x01, + 0xc7, 0x01, 0xc7, 0x01, 0xba, 0x01, 0xbb, 0x01, 0xac, 0x01, 0xab, 0x01, + 0x9b, 0x01, 0x99, 0x01, 0x86, 0x01, 0x87, 0x01, 0x72, 0x01, 0x6f, 0x01, + 0x58, 0x01, 0x59, 0x01, 0x42, 0x01, 0x41, 0x01, 0x27, 0x01, 0x24, 0x01, + 0x09, 0x01, 0x09, 0x01, 0xed, 0x00, 0xec, 0x00, 0xca, 0x00, 0xc9, 0x00, + 0xab, 0x00, 0xac, 0x00, 0x8c, 0x00, 0x89, 0x00, 0x67, 0x00, 0x69, 0x00, + 0x47, 0x00, 0x44, 0x00, 0x22, 0x00, 0x22, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0xdb, 0xff, 0xda, 0xff, 0xba, 0xff, 0xb9, 0xff, 0x94, 0xff, 0x94, 0xff, + 0x73, 0xff, 0x73, 0xff, 0x51, 0xff, 0x4f, 0xff, 0x2e, 0xff, 0x2f, 0xff, + 0x0f, 0xff, 0x0c, 0xff, 0xed, 0xfe, 0xf0, 0xfe, 0xd1, 0xfe, 0xcf, 0xfe, + 0xb2, 0xfe, 0xb1, 0xfe, 0x97, 0xfe, 0x97, 0xfe, 0x7e, 0xfe, 0x7e, 0xfe, + 0x64, 0xfe, 0x65, 0xfe, 0x4e, 0xfe, 0x4f, 0xfe, 0x3a, 0xfe, 0x38, 0xfe, + 0x28, 0xfe, 0x28, 0xfe, 0x16, 0xfe, 0x16, 0xfe, 0x0a, 0xfe, 0x0a, 0xfe, + 0xfd, 0xfd, 0xfd, 0xfd, 0xf6, 0xfd, 0xf5, 0xfd, 0xed, 0xfd, 0xf0, 0xfd, + 0xe9, 0xfd, 0xe8, 0xfd, 0xeb, 0xfd, 0xeb, 0xfd, 0xe7, 0xfd, 0xe8, 0xfd, + 0xec, 0xfd, 0xec, 0xfd, 0xf0, 0xfd, 0xf1, 0xfd, 0xfa, 0xfd, 0xfa, 0xfd, + 0x06, 0xfe, 0x06, 0xfe, 0x12, 0xfe, 0x12, 0xfe, 0x22, 0xfe, 0x24, 0xfe, + 0x36, 0xfe, 0x35, 0xfe, 0x45, 0xfe, 0x48, 0xfe, 0x61, 0xfe, 0x60, 0xfe, + 0x76, 0xfe, 0x76, 0xfe, 0x92, 0xfe, 0x92, 0xfe, 0xae, 0xfe, 0xb0, 0xfe, + 0xca, 0xfe, 0xcb, 0xfe, 0xed, 0xfe, 0xed, 0xfe, 0x0c, 0xff, 0x0c, 0xff, + 0x2e, 0xff, 0x2f, 0xff, 0x52, 0xff, 0x51, 0xff, 0x75, 0xff, 0x75, 0xff, + 0x9b, 0xff, 0x9d, 0xff, 0xbe, 0xff, 0xbf, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0x0a, 0x00, 0x0a, 0x00, 0x32, 0x00, 0x31, 0x00, 0x57, 0x00, 0x58, 0x00, + 0x7d, 0x00, 0x7e, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0xc9, 0x00, 0xc9, 0x00, + 0xec, 0x00, 0xeb, 0x00, 0x10, 0x01, 0x10, 0x01, 0x31, 0x01, 0x32, 0x01, + 0x52, 0x01, 0x52, 0x01, 0x73, 0x01, 0x73, 0x01, 0x8e, 0x01, 0x8e, 0x01, + 0xab, 0x01, 0xad, 0x01, 0xc7, 0x01, 0xc4, 0x01, 0xdd, 0x01, 0xdd, 0x01, + 0xf4, 0x01, 0xf4, 0x01, 0x06, 0x02, 0x06, 0x02, 0x1b, 0x02, 0x1c, 0x02, + 0x28, 0x02, 0x26, 0x02, 0x36, 0x02, 0x37, 0x02, 0x41, 0x02, 0x3f, 0x02, + 0x47, 0x02, 0x49, 0x02, 0x4f, 0x02, 0x4e, 0x02, 0x4f, 0x02, 0x50, 0x02, + 0x4f, 0x02, 0x50, 0x02, 0x4f, 0x02, 0x4e, 0x02, 0x47, 0x02, 0x48, 0x02, + 0x43, 0x02, 0x43, 0x02, 0x34, 0x02, 0x34, 0x02, 0x2b, 0x02, 0x29, 0x02, + 0x19, 0x02, 0x1c, 0x02, 0x09, 0x02, 0x07, 0x02, 0xf5, 0x01, 0xf6, 0x01, + 0xe0, 0x01, 0xdf, 0x01, 0xc7, 0x01, 0xc7, 0x01, 0xad, 0x01, 0xad, 0x01, + 0x90, 0x01, 0x90, 0x01, 0x73, 0x01, 0x73, 0x01, 0x54, 0x01, 0x54, 0x01, + 0x33, 0x01, 0x33, 0x01, 0x10, 0x01, 0x12, 0x01, 0xee, 0x00, 0xed, 0x00, + 0xca, 0x00, 0xcc, 0x00, 0xa7, 0x00, 0xa5, 0x00, 0x81, 0x00, 0x83, 0x00, + 0x5a, 0x00, 0x5b, 0x00, 0x36, 0x00, 0x35, 0x00, 0x0e, 0x00, 0x0f, 0x00, + 0xe9, 0xff, 0xe9, 0xff, 0xc5, 0xff, 0xc4, 0xff, 0x9e, 0xff, 0x9f, 0xff, + 0x7b, 0xff, 0x7b, 0xff, 0x56, 0xff, 0x56, 0xff, 0x35, 0xff, 0x36, 0xff, + 0x12, 0xff, 0x13, 0xff, 0xf4, 0xfe, 0xf4, 0xfe, 0xd5, 0xfe, 0xd6, 0xfe, + 0xb8, 0xfe, 0xb6, 0xfe, 0x9b, 0xfe, 0x9e, 0xfe, 0x84, 0xfe, 0x83, 0xfe, + 0x6c, 0xfe, 0x6d, 0xfe, 0x57, 0xfe, 0x57, 0xfe, 0x44, 0xfe, 0x44, 0xfe, + 0x33, 0xfe, 0x33, 0xfe, 0x25, 0xfe, 0x26, 0xfe, 0x1b, 0xfe, 0x19, 0xfe, + 0x0e, 0xfe, 0x0e, 0xfe, 0x0a, 0xfe, 0x0a, 0xfe, 0x04, 0xfe, 0x01, 0xfe, + 0x03, 0xfe, 0x04, 0xfe, 0x04, 0xfe, 0x03, 0xfe, 0x09, 0xfe, 0x07, 0xfe, + 0x0f, 0xfe, 0x10, 0xfe, 0x17, 0xfe, 0x16, 0xfe, 0x24, 0xfe, 0x25, 0xfe, + 0x33, 0xfe, 0x31, 0xfe, 0x41, 0xfe, 0x43, 0xfe, 0x57, 0xfe, 0x55, 0xfe, + 0x6b, 0xfe, 0x6b, 0xfe, 0x81, 0xfe, 0x82, 0xfe, 0x9c, 0xfe, 0x9b, 0xfe, + 0xb6, 0xfe, 0xb8, 0xfe, 0xd6, 0xfe, 0xd3, 0xfe, 0xf3, 0xfe, 0xf6, 0xfe, + 0x15, 0xff, 0x14, 0xff, 0x35, 0xff, 0x36, 0xff, 0x5b, 0xff, 0x5a, 0xff, + 0x7d, 0xff, 0x7e, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0xca, 0xff, 0xc9, 0xff, + 0xef, 0xff, 0xf1, 0xff, 0x17, 0x00, 0x16, 0x00, 0x3d, 0x00, 0x3e, 0x00, + 0x62, 0x00, 0x64, 0x00, 0x8b, 0x00, 0x8a, 0x00, 0xae, 0x00, 0xb0, 0x00, + 0xd7, 0x00, 0xd7, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0x1f, 0x01, 0x20, 0x01, + 0x44, 0x01, 0x41, 0x01, 0x61, 0x01, 0x65, 0x01, 0x86, 0x01, 0x84, 0x01, + 0xa1, 0x01, 0xa4, 0x01, 0xc1, 0x01, 0xc0, 0x01, 0xda, 0x01, 0xda, 0x01, + 0xf4, 0x01, 0xf5, 0x01, 0x0b, 0x02, 0x0a, 0x02, 0x20, 0x02, 0x21, 0x02, + 0x32, 0x02, 0x31, 0x02, 0x41, 0x02, 0x43, 0x02, 0x50, 0x02, 0x4e, 0x02, + 0x59, 0x02, 0x5c, 0x02, 0x65, 0x02, 0x63, 0x02, 0x66, 0x02, 0x69, 0x02, + 0x6e, 0x02, 0x6c, 0x02, 0x6b, 0x02, 0x6c, 0x02, 0x6a, 0x02, 0x6b, 0x02, + 0x64, 0x02, 0x64, 0x02, 0x5b, 0x02, 0x5d, 0x02, 0x50, 0x02, 0x50, 0x02, + 0x43, 0x02, 0x45, 0x02, 0x31, 0x02, 0x34, 0x02, 0x21, 0x02, 0x21, 0x02, + 0x0a, 0x02, 0x0d, 0x02, 0xf6, 0x01, 0xf5, 0x01, 0xd9, 0x01, 0xdb, 0x01, + 0xbf, 0x01, 0xbe, 0x01, 0xa1, 0x01, 0xa3, 0x01, 0x82, 0x01, 0x82, 0x01, + 0x61, 0x01, 0x61, 0x01, 0x3d, 0x01, 0x3e, 0x01, 0x1a, 0x01, 0x1a, 0x01, + 0xf4, 0x00, 0xf5, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xa7, 0x00, 0xa6, 0x00, + 0x7f, 0x00, 0x80, 0x00, 0x55, 0x00, 0x55, 0x00, 0x2e, 0x00, 0x2e, 0x00, + 0x03, 0x00, 0x03, 0x00, 0xdb, 0xff, 0xda, 0xff, 0xb2, 0xff, 0xb3, 0xff, + 0x8a, 0xff, 0x89, 0xff, 0x64, 0xff, 0x64, 0xff, 0x3c, 0xff, 0x3c, 0xff, + 0x16, 0xff, 0x16, 0xff, 0xf0, 0xfe, 0xf1, 0xfe, 0xcc, 0xfe, 0xcd, 0xfe, + 0xaa, 0xfe, 0xab, 0xfe, 0x8c, 0xfe, 0x8b, 0xfe, 0x6b, 0xfe, 0x6c, 0xfe, + 0x4f, 0xfe, 0x4d, 0xfe, 0x36, 0xfe, 0x36, 0xfe, 0x1b, 0xfe, 0x1a, 0xfe, + 0x07, 0xfe, 0x06, 0xfe, 0xf1, 0xfd, 0xf2, 0xfd, 0xe2, 0xfd, 0xe0, 0xfd, + 0xd2, 0xfd, 0xd2, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xbf, 0xfd, 0xbe, 0xfd, + 0xb5, 0xfd, 0xb4, 0xfd, 0xb4, 0xfd, 0xb4, 0xfd, 0xb0, 0xfd, 0xae, 0xfd, + 0xb3, 0xfd, 0xb5, 0xfd, 0xb8, 0xfd, 0xb8, 0xfd, 0xbc, 0xfd, 0xbc, 0xfd, + 0xc9, 0xfd, 0xc9, 0xfd, 0xd2, 0xfd, 0xd4, 0xfd, 0xe4, 0xfd, 0xe6, 0xfd, + 0xf6, 0xfd, 0xf6, 0xfd, 0x0a, 0xfe, 0x0a, 0xfe, 0x22, 0xfe, 0x23, 0xfe, + 0x3a, 0xfe, 0x39, 0xfe, 0x55, 0xfe, 0x56, 0xfe, 0x72, 0xfe, 0x72, 0xfe, + 0x92, 0xfe, 0x92, 0xfe, 0xb3, 0xfe, 0xb3, 0xfe, 0xd6, 0xfe, 0xd5, 0xfe, + 0xf8, 0xfe, 0xf9, 0xfe, 0x1c, 0xff, 0x1d, 0xff, 0x44, 0xff, 0x42, 0xff, + 0x68, 0xff, 0x6c, 0xff, 0x92, 0xff, 0x91, 0xff, 0xb9, 0xff, 0xbb, 0xff, + 0xe1, 0xff, 0xe0, 0xff, 0x0a, 0x00, 0x0c, 0x00, 0x31, 0x00, 0x31, 0x00, + 0x58, 0x00, 0x5a, 0x00, 0x81, 0x00, 0x81, 0x00, 0xa7, 0x00, 0xa7, 0x00, + 0xce, 0x00, 0xd0, 0x00, 0xf2, 0x00, 0xf2, 0x00, 0x15, 0x01, 0x17, 0x01, + 0x3a, 0x01, 0x38, 0x01, 0x55, 0x01, 0x58, 0x01, 0x78, 0x01, 0x79, 0x01, + 0x93, 0x01, 0x94, 0x01, 0xb1, 0x01, 0xb1, 0x01, 0xc7, 0x01, 0xc9, 0x01, + 0xdf, 0x01, 0xe0, 0x01, 0xf3, 0x01, 0xf3, 0x01, 0x05, 0x02, 0x06, 0x02, + 0x15, 0x02, 0x14, 0x02, 0x21, 0x02, 0x23, 0x02, 0x2c, 0x02, 0x2b, 0x02, + 0x31, 0x02, 0x32, 0x02, 0x38, 0x02, 0x38, 0x02, 0x37, 0x02, 0x3a, 0x02, + 0x37, 0x02, 0x38, 0x02, 0x34, 0x02, 0x34, 0x02, 0x2a, 0x02, 0x2b, 0x02, + 0x25, 0x02, 0x25, 0x02, 0x13, 0x02, 0x14, 0x02, 0x06, 0x02, 0x07, 0x02, + 0xf5, 0x01, 0xf5, 0x01, 0xe0, 0x01, 0xe1, 0x01, 0xca, 0x01, 0xc8, 0x01, + 0xad, 0x01, 0xae, 0x01, 0x95, 0x01, 0x94, 0x01, 0x74, 0x01, 0x77, 0x01, + 0x57, 0x01, 0x56, 0x01, 0x32, 0x01, 0x33, 0x01, 0x12, 0x01, 0x12, 0x01, + 0xeb, 0x00, 0xeb, 0x00, 0xc5, 0x00, 0xc7, 0x00, 0x9f, 0x00, 0x9f, 0x00, + 0x75, 0x00, 0x74, 0x00, 0x4d, 0x00, 0x4f, 0x00, 0x22, 0x00, 0x22, 0x00, + 0xf8, 0xff, 0xfa, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xa3, 0xff, 0xa3, 0xff, + 0x79, 0xff, 0x7c, 0xff, 0x50, 0xff, 0x4d, 0xff, 0x24, 0xff, 0x27, 0xff, + 0xfe, 0xfe, 0xff, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, 0xaf, 0xfe, 0xb1, 0xfe, + 0x89, 0xfe, 0x87, 0xfe, 0x65, 0xfe, 0x67, 0xfe, 0x44, 0xfe, 0x44, 0xfe, + 0x23, 0xfe, 0x25, 0xfe, 0x05, 0xfe, 0x06, 0xfe, 0xe8, 0xfd, 0xe8, 0xfd, + 0xd0, 0xfd, 0xce, 0xfd, 0xb7, 0xfd, 0xb7, 0xfd, 0xa3, 0xfd, 0xa2, 0xfd, + 0x8f, 0xfd, 0x8f, 0xfd, 0x7f, 0xfd, 0x80, 0xfd, 0x74, 0xfd, 0x74, 0xfd, + 0x67, 0xfd, 0x67, 0xfd, 0x61, 0xfd, 0x62, 0xfd, 0x5d, 0xfd, 0x5c, 0xfd, + 0x59, 0xfd, 0x5b, 0xfd, 0x5e, 0xfd, 0x5c, 0xfd, 0x5f, 0xfd, 0x60, 0xfd, + 0x6a, 0xfd, 0x69, 0xfd, 0x71, 0xfd, 0x72, 0xfd, 0x80, 0xfd, 0x7e, 0xfd, + 0x8f, 0xfd, 0x91, 0xfd, 0xa2, 0xfd, 0xa1, 0xfd, 0xb7, 0xfd, 0xb8, 0xfd, + 0xcf, 0xfd, 0xce, 0xfd, 0xea, 0xfd, 0xeb, 0xfd, 0x05, 0xfe, 0x05, 0xfe, + 0x25, 0xfe, 0x25, 0xfe, 0x45, 0xfe, 0x43, 0xfe, 0x68, 0xfe, 0x69, 0xfe, + 0x8b, 0xfe, 0x8a, 0xfe, 0xb0, 0xfe, 0xb2, 0xfe, 0xd9, 0xfe, 0xd8, 0xfe, + 0xff, 0xfe, 0x00, 0xff, 0x2a, 0xff, 0x2b, 0xff, 0x54, 0xff, 0x52, 0xff, + 0x7e, 0xff, 0x7e, 0xff, 0xaa, 0xff, 0xab, 0xff, 0xd3, 0xff, 0xd4, 0xff, + 0x02, 0x00, 0x02, 0x00, 0x29, 0x00, 0x29, 0x00, 0x56, 0x00, 0x56, 0x00, + 0x7f, 0x00, 0x81, 0x00, 0xa8, 0x00, 0xa8, 0x00, 0xd2, 0x00, 0xd1, 0x00, + 0xf6, 0x00, 0xf8, 0x00, 0x1f, 0x01, 0x20, 0x01, 0x40, 0x01, 0x41, 0x01, + 0x66, 0x01, 0x65, 0x01, 0x84, 0x01, 0x86, 0x01, 0xa5, 0x01, 0xa3, 0x01, + 0xc1, 0x01, 0xc2, 0x01, 0xda, 0x01, 0xd9, 0x01, 0xf3, 0x01, 0xf4, 0x01, + 0x07, 0x02, 0x05, 0x02, 0x1b, 0x02, 0x1c, 0x02, 0x2a, 0x02, 0x2a, 0x02, + 0x38, 0x02, 0x39, 0x02, 0x40, 0x02, 0x41, 0x02, 0x48, 0x02, 0x49, 0x02, + 0x4e, 0x02, 0x4e, 0x02, 0x4d, 0x02, 0x4d, 0x02, 0x4e, 0x02, 0x4e, 0x02, + 0x48, 0x02, 0x49, 0x02, 0x40, 0x02, 0x41, 0x02, 0x38, 0x02, 0x38, 0x02, + 0x28, 0x02, 0x28, 0x02, 0x19, 0x02, 0x1a, 0x02, 0x07, 0x02, 0x05, 0x02, + 0xf0, 0x01, 0xf2, 0x01, 0xdb, 0x01, 0xd9, 0x01, 0xbc, 0x01, 0xbd, 0x01, + 0xa1, 0x01, 0xa1, 0x01, 0x84, 0x01, 0x82, 0x01, 0x5f, 0x01, 0x61, 0x01, + 0x42, 0x01, 0x3f, 0x01, 0x18, 0x01, 0x1a, 0x01, 0xf7, 0x00, 0xf5, 0x00, + 0xcc, 0x00, 0xcd, 0x00, 0xa5, 0x00, 0xa4, 0x00, 0x7b, 0x00, 0x7c, 0x00, + 0x4f, 0x00, 0x4e, 0x00, 0x28, 0x00, 0x28, 0x00, 0xfa, 0xff, 0xf9, 0xff, + 0xd1, 0xff, 0xd0, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0x79, 0xff, 0x79, 0xff, + 0x53, 0xff, 0x52, 0xff, 0x25, 0xff, 0x26, 0xff, 0x02, 0xff, 0x00, 0xff, + 0xd5, 0xfe, 0xd5, 0xfe, 0xb2, 0xfe, 0xb1, 0xfe, 0x8a, 0xfe, 0x8b, 0xfe, + 0x67, 0xfe, 0x68, 0xfe, 0x48, 0xfe, 0x46, 0xfe, 0x25, 0xfe, 0x25, 0xfe, + 0x0b, 0xfe, 0x0c, 0xfe, 0xed, 0xfd, 0xed, 0xfd, 0xd8, 0xfd, 0xd7, 0xfd, + 0xbf, 0xfd, 0xc0, 0xfd, 0xac, 0xfd, 0xab, 0xfd, 0x9a, 0xfd, 0x9c, 0xfd, + 0x8d, 0xfd, 0x8c, 0xfd, 0x83, 0xfd, 0x84, 0xfd, 0x7b, 0xfd, 0x7a, 0xfd, + 0x76, 0xfd, 0x75, 0xfd, 0x72, 0xfd, 0x75, 0xfd, 0x76, 0xfd, 0x74, 0xfd, + 0x78, 0xfd, 0x79, 0xfd, 0x7f, 0xfd, 0x80, 0xfd, 0x88, 0xfd, 0x88, 0xfd, + 0x95, 0xfd, 0x96, 0xfd, 0xa7, 0xfd, 0xa7, 0xfd, 0xb8, 0xfd, 0xb8, 0xfd, + 0xcf, 0xfd, 0xd0, 0xfd, 0xe8, 0xfd, 0xe6, 0xfd, 0x01, 0xfe, 0x03, 0xfe, + 0x23, 0xfe, 0x20, 0xfe, 0x3e, 0xfe, 0x40, 0xfe, 0x63, 0xfe, 0x61, 0xfe, + 0x86, 0xfe, 0x88, 0xfe, 0xad, 0xfe, 0xaa, 0xfe, 0xd1, 0xfe, 0xd4, 0xfe, + 0xfb, 0xfe, 0xfa, 0xfe, 0x26, 0xff, 0x27, 0xff, 0x52, 0xff, 0x51, 0xff, + 0x7d, 0xff, 0x7e, 0xff, 0xa9, 0xff, 0xa7, 0xff, 0xd7, 0xff, 0xdb, 0xff, + 0x05, 0x00, 0x04, 0x00, 0x34, 0x00, 0x33, 0x00, 0x5f, 0x00, 0x62, 0x00, + 0x8d, 0x00, 0x8e, 0x00, 0xbb, 0x00, 0xba, 0x00, 0xe5, 0x00, 0xe6, 0x00, + 0x13, 0x01, 0x13, 0x01, 0x39, 0x01, 0x3b, 0x01, 0x65, 0x01, 0x65, 0x01, + 0x8b, 0x01, 0x8c, 0x01, 0xaf, 0x01, 0xae, 0x01, 0xd6, 0x01, 0xd7, 0x01, + 0xf5, 0x01, 0xf4, 0x01, 0x14, 0x02, 0x15, 0x02, 0x31, 0x02, 0x31, 0x02, + 0x4c, 0x02, 0x4c, 0x02, 0x63, 0x02, 0x63, 0x02, 0x79, 0x02, 0x78, 0x02, + 0x8a, 0x02, 0x8b, 0x02, 0x9b, 0x02, 0x98, 0x02, 0xa5, 0x02, 0xa7, 0x02, + 0xb0, 0x02, 0xae, 0x02, 0xb5, 0x02, 0xb5, 0x02, 0xb9, 0x02, 0xb9, 0x02, + 0xb6, 0x02, 0xb7, 0x02, 0xb6, 0x02, 0xb4, 0x02, 0xaf, 0x02, 0xb0, 0x02, + 0xa5, 0x02, 0xa2, 0x02, 0x98, 0x02, 0x99, 0x02, 0x89, 0x02, 0x88, 0x02, + 0x77, 0x02, 0x76, 0x02, 0x62, 0x02, 0x62, 0x02, 0x49, 0x02, 0x49, 0x02, + 0x30, 0x02, 0x2e, 0x02, 0x12, 0x02, 0x11, 0x02, 0xf3, 0x01, 0xf2, 0x01, + 0xcf, 0x01, 0xd0, 0x01, 0xaf, 0x01, 0xae, 0x01, 0x87, 0x01, 0x86, 0x01, + 0x61, 0x01, 0x60, 0x01, 0x38, 0x01, 0x38, 0x01, 0x0e, 0x01, 0x0d, 0x01, + 0xe4, 0x00, 0xe3, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0x8b, 0x00, 0x8a, 0x00, + 0x5e, 0x00, 0x5e, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x03, 0x00, 0x02, 0x00, + 0xd4, 0xff, 0xd4, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0x7d, 0xff, 0x7e, 0xff, + 0x52, 0xff, 0x4f, 0xff, 0x27, 0xff, 0x27, 0xff, 0xfe, 0xfe, 0xfd, 0xfe, + 0xd8, 0xfe, 0xd7, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, 0x8c, 0xfe, 0x8a, 0xfe, + 0x69, 0xfe, 0x6b, 0xfe, 0x49, 0xfe, 0x49, 0xfe, 0x2b, 0xfe, 0x2a, 0xfe, + 0x0f, 0xfe, 0x12, 0xfe, 0xf6, 0xfd, 0xf5, 0xfd, 0xdf, 0xfd, 0xe1, 0xfd, + 0xcc, 0xfd, 0xcb, 0xfd, 0xba, 0xfd, 0xbb, 0xfd, 0xad, 0xfd, 0xae, 0xfd, + 0xa2, 0xfd, 0xa1, 0xfd, 0x9b, 0xfd, 0x9c, 0xfd, 0x95, 0xfd, 0x97, 0xfd, + 0x95, 0xfd, 0x92, 0xfd, 0x95, 0xfd, 0x98, 0xfd, 0x9b, 0xfd, 0x9a, 0xfd, + 0xa2, 0xfd, 0xa3, 0xfd, 0xae, 0xfd, 0xae, 0xfd, 0xbd, 0xfd, 0xbd, 0xfd, + 0xcf, 0xfd, 0xcf, 0xfd, 0xe2, 0xfd, 0xe3, 0xfd, 0xfa, 0xfd, 0xf9, 0xfd, + 0x13, 0xfe, 0x14, 0xfe, 0x2d, 0xfe, 0x2e, 0xfe, 0x51, 0xfe, 0x4f, 0xfe, + 0x6f, 0xfe, 0x6f, 0xfe, 0x92, 0xfe, 0x93, 0xfe, 0xb8, 0xfe, 0xb7, 0xfe, + 0xde, 0xfe, 0xdf, 0xfe, 0x0a, 0xff, 0x09, 0xff, 0x31, 0xff, 0x32, 0xff, + 0x5f, 0xff, 0x60, 0xff, 0x8a, 0xff, 0x88, 0xff, 0xb9, 0xff, 0xba, 0xff, + 0xe6, 0xff, 0xe4, 0xff, 0x14, 0x00, 0x15, 0x00, 0x44, 0x00, 0x42, 0x00, + 0x70, 0x00, 0x72, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0xcd, 0x00, 0xce, 0x00, + 0xfb, 0x00, 0xfb, 0x00, 0x25, 0x01, 0x26, 0x01, 0x52, 0x01, 0x50, 0x01, + 0x7a, 0x01, 0x7b, 0x01, 0xa4, 0x01, 0xa2, 0x01, 0xca, 0x01, 0xc9, 0x01, + 0xee, 0x01, 0xef, 0x01, 0x11, 0x02, 0x11, 0x02, 0x32, 0x02, 0x31, 0x02, + 0x4f, 0x02, 0x4f, 0x02, 0x6b, 0x02, 0x6b, 0x02, 0x84, 0x02, 0x83, 0x02, + 0x9a, 0x02, 0x9a, 0x02, 0xad, 0x02, 0xad, 0x02, 0xbc, 0x02, 0xbc, 0x02, + 0xca, 0x02, 0xcb, 0x02, 0xd3, 0x02, 0xd2, 0x02, 0xdb, 0x02, 0xdc, 0x02, + 0xde, 0x02, 0xde, 0x02, 0xdf, 0x02, 0xde, 0x02, 0xdc, 0x02, 0xdc, 0x02, + 0xd4, 0x02, 0xd4, 0x02, 0xca, 0x02, 0xca, 0x02, 0xbd, 0x02, 0xbe, 0x02, + 0xae, 0x02, 0xad, 0x02, 0x9b, 0x02, 0x9c, 0x02, 0x84, 0x02, 0x84, 0x02, + 0x6c, 0x02, 0x6b, 0x02, 0x51, 0x02, 0x4f, 0x02, 0x2f, 0x02, 0x31, 0x02, + 0x11, 0x02, 0x10, 0x02, 0xec, 0x01, 0xec, 0x01, 0xc7, 0x01, 0xc9, 0x01, + 0xa2, 0x01, 0x9f, 0x01, 0x76, 0x01, 0x78, 0x01, 0x4d, 0x01, 0x4c, 0x01, + 0x1f, 0x01, 0x20, 0x01, 0xf2, 0x00, 0xf2, 0x00, 0xc4, 0x00, 0xc3, 0x00, + 0x95, 0x00, 0x94, 0x00, 0x64, 0x00, 0x65, 0x00, 0x33, 0x00, 0x32, 0x00, + 0x04, 0x00, 0x06, 0x00, 0xd4, 0xff, 0xd1, 0xff, 0xa2, 0xff, 0xa4, 0xff, + 0x74, 0xff, 0x75, 0xff, 0x44, 0xff, 0x43, 0xff, 0x18, 0xff, 0x19, 0xff, + 0xeb, 0xfe, 0xea, 0xfe, 0xbd, 0xfe, 0xbe, 0xfe, 0x96, 0xfe, 0x97, 0xfe, + 0x6d, 0xfe, 0x6c, 0xfe, 0x49, 0xfe, 0x49, 0xfe, 0x23, 0xfe, 0x23, 0xfe, + 0x01, 0xfe, 0x02, 0xfe, 0xe1, 0xfd, 0xe3, 0xfd, 0xc7, 0xfd, 0xc7, 0xfd, + 0xab, 0xfd, 0xad, 0xfd, 0x95, 0xfd, 0x95, 0xfd, 0x81, 0xfd, 0x81, 0xfd, + 0x6f, 0xfd, 0x70, 0xfd, 0x62, 0xfd, 0x62, 0xfd, 0x57, 0xfd, 0x58, 0xfd, + 0x4f, 0xfd, 0x4f, 0xfd, 0x4d, 0xfd, 0x4f, 0xfd, 0x4a, 0xfd, 0x48, 0xfd, + 0x4e, 0xfd, 0x50, 0xfd, 0x54, 0xfd, 0x52, 0xfd, 0x5d, 0xfd, 0x5d, 0xfd, + 0x69, 0xfd, 0x6a, 0xfd, 0x78, 0xfd, 0x77, 0xfd, 0x8c, 0xfd, 0x8d, 0xfd, + 0x9f, 0xfd, 0xa0, 0xfd, 0xbb, 0xfd, 0xbb, 0xfd, 0xd3, 0xfd, 0xd5, 0xfd, + 0xf2, 0xfd, 0xf4, 0xfd, 0x13, 0xfe, 0x11, 0xfe, 0x34, 0xfe, 0x37, 0xfe, + 0x5c, 0xfe, 0x5a, 0xfe, 0x80, 0xfe, 0x80, 0xfe, 0xac, 0xfe, 0xad, 0xfe, + 0xd5, 0xfe, 0xd4, 0xfe, 0x01, 0xff, 0x02, 0xff, 0x31, 0xff, 0x2f, 0xff, + 0x5b, 0xff, 0x5c, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0xba, 0xff, 0xb9, 0xff, + 0xea, 0xff, 0xea, 0xff, 0x1c, 0x00, 0x1a, 0x00, 0x48, 0x00, 0x48, 0x00, + 0x7a, 0x00, 0x78, 0x00, 0xa6, 0x00, 0xa6, 0x00, 0xd3, 0x00, 0xd4, 0x00, + 0x02, 0x01, 0x00, 0x01, 0x2d, 0x01, 0x2d, 0x01, 0x58, 0x01, 0x55, 0x01, + 0x7f, 0x01, 0x7f, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xc9, 0x01, 0xc9, 0x01, + 0xed, 0x01, 0xed, 0x01, 0x0d, 0x02, 0x0c, 0x02, 0x2a, 0x02, 0x2b, 0x02, + 0x44, 0x02, 0x43, 0x02, 0x5a, 0x02, 0x5c, 0x02, 0x73, 0x02, 0x71, 0x02, + 0x83, 0x02, 0x84, 0x02, 0x91, 0x02, 0x91, 0x02, 0x9e, 0x02, 0x9c, 0x02, + 0xa4, 0x02, 0xa6, 0x02, 0xac, 0x02, 0xa9, 0x02, 0xac, 0x02, 0xac, 0x02, + 0xab, 0x02, 0xaa, 0x02, 0xa4, 0x02, 0xa5, 0x02, 0x9c, 0x02, 0x9c, 0x02, + 0x90, 0x02, 0x8f, 0x02, 0x82, 0x02, 0x81, 0x02, 0x6e, 0x02, 0x6e, 0x02, + 0x59, 0x02, 0x59, 0x02, 0x42, 0x02, 0x40, 0x02, 0x25, 0x02, 0x27, 0x02, + 0x09, 0x02, 0x07, 0x02, 0xe4, 0x01, 0xe7, 0x01, 0xc4, 0x01, 0xc2, 0x01, + 0x9d, 0x01, 0x9e, 0x01, 0x76, 0x01, 0x73, 0x01, 0x4d, 0x01, 0x4e, 0x01, + 0x1f, 0x01, 0x20, 0x01, 0xf3, 0x00, 0xf3, 0x00, 0xc5, 0x00, 0xc4, 0x00, + 0x93, 0x00, 0x94, 0x00, 0x66, 0x00, 0x64, 0x00, 0x31, 0x00, 0x33, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0x9d, 0xff, 0x9c, 0xff, + 0x6a, 0xff, 0x6b, 0xff, 0x39, 0xff, 0x3a, 0xff, 0x08, 0xff, 0x09, 0xff, + 0xda, 0xfe, 0xd9, 0xfe, 0xaa, 0xfe, 0xa9, 0xfe, 0x7e, 0xfe, 0x7f, 0xfe, + 0x51, 0xfe, 0x50, 0xfe, 0x26, 0xfe, 0x27, 0xfe, 0x00, 0xfe, 0x00, 0xfe, + 0xd8, 0xfd, 0xd8, 0xfd, 0xb7, 0xfd, 0xb7, 0xfd, 0x93, 0xfd, 0x95, 0xfd, + 0x76, 0xfd, 0x73, 0xfd, 0x5b, 0xfd, 0x5d, 0xfd, 0x41, 0xfd, 0x3e, 0xfd, + 0x2c, 0xfd, 0x2e, 0xfd, 0x1a, 0xfd, 0x17, 0xfd, 0x0b, 0xfd, 0x0b, 0xfd, + 0xfd, 0xfc, 0xfd, 0xfc, 0xf7, 0xfc, 0xf7, 0xfc, 0xf1, 0xfc, 0xf2, 0xfc, + 0xef, 0xfc, 0xee, 0xfc, 0xf1, 0xfc, 0xf1, 0xfc, 0xf5, 0xfc, 0xf4, 0xfc, + 0x01, 0xfd, 0x00, 0xfd, 0x0a, 0xfd, 0x09, 0xfd, 0x1a, 0xfd, 0x1c, 0xfd, + 0x2e, 0xfd, 0x2c, 0xfd, 0x42, 0xfd, 0x44, 0xfd, 0x5d, 0xfd, 0x5c, 0xfd, + 0x7a, 0xfd, 0x7a, 0xfd, 0x97, 0xfd, 0x97, 0xfd, 0xb6, 0xfd, 0xb6, 0xfd, + 0xdf, 0xfd, 0xde, 0xfd, 0x01, 0xfe, 0x02, 0xfe, 0x2a, 0xfe, 0x2b, 0xfe, + 0x56, 0xfe, 0x56, 0xfe, 0x83, 0xfe, 0x84, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, + 0xe1, 0xfe, 0xdf, 0xfe, 0x10, 0xff, 0x13, 0xff, 0x42, 0xff, 0x40, 0xff, + 0x73, 0xff, 0x73, 0xff, 0xa7, 0xff, 0xa6, 0xff, 0xd7, 0xff, 0xd8, 0xff, + 0x0d, 0x00, 0x0a, 0x00, 0x3b, 0x00, 0x3f, 0x00, 0x6f, 0x00, 0x6d, 0x00, + 0xa0, 0x00, 0xa3, 0x00, 0xd1, 0x00, 0xcf, 0x00, 0x00, 0x01, 0x02, 0x01, + 0x2c, 0x01, 0x2c, 0x01, 0x58, 0x01, 0x59, 0x01, 0x82, 0x01, 0x82, 0x01, + 0xaa, 0x01, 0xaa, 0x01, 0xd1, 0x01, 0xd2, 0x01, 0xf4, 0x01, 0xf3, 0x01, + 0x15, 0x02, 0x16, 0x02, 0x33, 0x02, 0x34, 0x02, 0x4d, 0x02, 0x4e, 0x02, + 0x69, 0x02, 0x68, 0x02, 0x7b, 0x02, 0x7d, 0x02, 0x90, 0x02, 0x8f, 0x02, + 0x9e, 0x02, 0x9f, 0x02, 0xaa, 0x02, 0xab, 0x02, 0xb2, 0x02, 0xb2, 0x02, + 0xb4, 0x02, 0xb7, 0x02, 0xbb, 0x02, 0xb7, 0x02, 0xb3, 0x02, 0xb8, 0x02, + 0xb1, 0x02, 0xaf, 0x02, 0xa5, 0x02, 0xa7, 0x02, 0x9a, 0x02, 0x97, 0x02, + 0x89, 0x02, 0x8b, 0x02, 0x76, 0x02, 0x76, 0x02, 0x5e, 0x02, 0x5f, 0x02, + 0x45, 0x02, 0x47, 0x02, 0x2a, 0x02, 0x28, 0x02, 0x09, 0x02, 0x0b, 0x02, + 0xe8, 0x01, 0xe8, 0x01, 0xc4, 0x01, 0xc6, 0x01, 0x9c, 0x01, 0x9d, 0x01, + 0x72, 0x01, 0x73, 0x01, 0x49, 0x01, 0x49, 0x01, 0x1b, 0x01, 0x1b, 0x01, + 0xee, 0x00, 0xee, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0x8d, 0x00, 0x8b, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x27, 0x00, 0x28, 0x00, 0xf6, 0xff, 0xf6, 0xff, + 0xc3, 0xff, 0xc3, 0xff, 0x92, 0xff, 0x91, 0xff, 0x61, 0xff, 0x5f, 0xff, + 0x2c, 0xff, 0x2e, 0xff, 0xff, 0xfe, 0xfc, 0xfe, 0xcc, 0xfe, 0xce, 0xfe, + 0x9f, 0xfe, 0x9e, 0xfe, 0x72, 0xfe, 0x72, 0xfe, 0x45, 0xfe, 0x46, 0xfe, + 0x1e, 0xfe, 0x1c, 0xfe, 0xf5, 0xfd, 0xf7, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, + 0xb0, 0xfd, 0xaf, 0xfd, 0x8b, 0xfd, 0x8d, 0xfd, 0x75, 0xfd, 0x70, 0xfd, + 0x55, 0xfd, 0x58, 0xfd, 0x43, 0xfd, 0x40, 0xfd, 0x2d, 0xfd, 0x2e, 0xfd, + 0x1b, 0xfd, 0x1c, 0xfd, 0x13, 0xfd, 0x12, 0xfd, 0x06, 0xfd, 0x05, 0xfd, + 0x01, 0xfd, 0x04, 0xfd, 0x00, 0xfd, 0xfe, 0xfc, 0xfe, 0xfc, 0x01, 0xfd, + 0x05, 0xfd, 0x03, 0xfd, 0x0c, 0xfd, 0x0d, 0xfd, 0x19, 0xfd, 0x19, 0xfd, + 0x29, 0xfd, 0x2a, 0xfd, 0x3a, 0xfd, 0x3b, 0xfd, 0x51, 0xfd, 0x51, 0xfd, + 0x6b, 0xfd, 0x6d, 0xfd, 0x87, 0xfd, 0x87, 0xfd, 0xa7, 0xfd, 0xa8, 0xfd, + 0xc9, 0xfd, 0xca, 0xfd, 0xee, 0xfd, 0xee, 0xfd, 0x15, 0xfe, 0x16, 0xfe, + 0x3f, 0xfe, 0x40, 0xfe, 0x6c, 0xfe, 0x6c, 0xfe, 0x99, 0xfe, 0x9b, 0xfe, + 0xcb, 0xfe, 0xc9, 0xfe, 0xfb, 0xfe, 0xfc, 0xfe, 0x2d, 0xff, 0x2c, 0xff, + 0x60, 0xff, 0x61, 0xff, 0x95, 0xff, 0x95, 0xff, 0xca, 0xff, 0xcb, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x34, 0x00, 0x34, 0x00, 0x6a, 0x00, 0x69, 0x00, + 0x9e, 0x00, 0xa0, 0x00, 0xd3, 0x00, 0xd3, 0x00, 0x06, 0x01, 0x06, 0x01, + 0x39, 0x01, 0x39, 0x01, 0x67, 0x01, 0x68, 0x01, 0x98, 0x01, 0x98, 0x01, + 0xc3, 0x01, 0xc5, 0x01, 0xf1, 0x01, 0xf0, 0x01, 0x18, 0x02, 0x19, 0x02, + 0x3f, 0x02, 0x40, 0x02, 0x64, 0x02, 0x65, 0x02, 0x86, 0x02, 0x85, 0x02, + 0xa3, 0x02, 0xa6, 0x02, 0xbe, 0x02, 0xbc, 0x02, 0xd7, 0x02, 0xd7, 0x02, + 0xeb, 0x02, 0xeb, 0x02, 0xfd, 0x02, 0xfc, 0x02, 0x0d, 0x03, 0x0c, 0x03, + 0x14, 0x03, 0x15, 0x03, 0x1e, 0x03, 0x1e, 0x03, 0x1f, 0x03, 0x1e, 0x03, + 0x1f, 0x03, 0x21, 0x03, 0x1c, 0x03, 0x1b, 0x03, 0x12, 0x03, 0x12, 0x03, + 0x0a, 0x03, 0x0c, 0x03, 0xf7, 0x02, 0xf6, 0x02, 0xe8, 0x02, 0xe8, 0x02, + 0xd0, 0x02, 0xcf, 0x02, 0xb7, 0x02, 0xb7, 0x02, 0x9c, 0x02, 0x9d, 0x02, + 0x7a, 0x02, 0x7a, 0x02, 0x59, 0x02, 0x5c, 0x02, 0x35, 0x02, 0x33, 0x02, + 0x0c, 0x02, 0x0e, 0x02, 0xe4, 0x01, 0xe2, 0x01, 0xb8, 0x01, 0xba, 0x01, + 0x8a, 0x01, 0x8a, 0x01, 0x5c, 0x01, 0x5c, 0x01, 0x2a, 0x01, 0x2a, 0x01, + 0xf8, 0x00, 0xf8, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0x90, 0x00, 0x91, 0x00, + 0x5d, 0x00, 0x5d, 0x00, 0x2a, 0x00, 0x28, 0x00, 0xf4, 0xff, 0xf4, 0xff, + 0xbf, 0xff, 0xbf, 0xff, 0x8c, 0xff, 0x8b, 0xff, 0x57, 0xff, 0x59, 0xff, + 0x27, 0xff, 0x26, 0xff, 0xf4, 0xfe, 0xf6, 0xfe, 0xc5, 0xfe, 0xc5, 0xfe, + 0x98, 0xfe, 0x99, 0xfe, 0x6a, 0xfe, 0x6a, 0xfe, 0x42, 0xfe, 0x41, 0xfe, + 0x1a, 0xfe, 0x1a, 0xfe, 0xf4, 0xfd, 0xf5, 0xfd, 0xd2, 0xfd, 0xd2, 0xfd, + 0xb1, 0xfd, 0xb2, 0xfd, 0x97, 0xfd, 0x95, 0xfd, 0x7b, 0xfd, 0x7d, 0xfd, + 0x67, 0xfd, 0x65, 0xfd, 0x52, 0xfd, 0x53, 0xfd, 0x44, 0xfd, 0x42, 0xfd, + 0x37, 0xfd, 0x39, 0xfd, 0x2f, 0xfd, 0x2d, 0xfd, 0x2a, 0xfd, 0x2c, 0xfd, + 0x26, 0xfd, 0x26, 0xfd, 0x2c, 0xfd, 0x2c, 0xfd, 0x30, 0xfd, 0x2f, 0xfd, + 0x3b, 0xfd, 0x3b, 0xfd, 0x48, 0xfd, 0x48, 0xfd, 0x58, 0xfd, 0x59, 0xfd, + 0x6c, 0xfd, 0x6d, 0xfd, 0x85, 0xfd, 0x84, 0xfd, 0xa0, 0xfd, 0xa0, 0xfd, + 0xbe, 0xfd, 0xbe, 0xfd, 0xe0, 0xfd, 0xe0, 0xfd, 0x02, 0xfe, 0x04, 0xfe, + 0x2a, 0xfe, 0x29, 0xfe, 0x53, 0xfe, 0x55, 0xfe, 0x7e, 0xfe, 0x7d, 0xfe, + 0xad, 0xfe, 0xae, 0xfe, 0xda, 0xfe, 0xdb, 0xfe, 0x0e, 0xff, 0x0c, 0xff, + 0x40, 0xff, 0x42, 0xff, 0x75, 0xff, 0x74, 0xff, 0xa8, 0xff, 0xac, 0xff, + 0xdd, 0xff, 0xdd, 0xff, 0x14, 0x00, 0x15, 0x00, 0x4a, 0x00, 0x4a, 0x00, + 0x7e, 0x00, 0x80, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xe8, 0x00, 0xe9, 0x00, + 0x20, 0x01, 0x20, 0x01, 0x51, 0x01, 0x51, 0x01, 0x84, 0x01, 0x83, 0x01, + 0xb5, 0x01, 0xb5, 0x01, 0xe2, 0x01, 0xe2, 0x01, 0x10, 0x02, 0x0f, 0x02, + 0x39, 0x02, 0x3b, 0x02, 0x62, 0x02, 0x60, 0x02, 0x87, 0x02, 0x87, 0x02, + 0xa8, 0x02, 0xa8, 0x02, 0xca, 0x02, 0xc9, 0x02, 0xe5, 0x02, 0xe5, 0x02, + 0x00, 0x03, 0xfe, 0x02, 0x15, 0x03, 0x15, 0x03, 0x27, 0x03, 0x27, 0x03, + 0x38, 0x03, 0x37, 0x03, 0x41, 0x03, 0x41, 0x03, 0x4b, 0x03, 0x4a, 0x03, + 0x4c, 0x03, 0x4d, 0x03, 0x4e, 0x03, 0x4d, 0x03, 0x49, 0x03, 0x48, 0x03, + 0x41, 0x03, 0x40, 0x03, 0x36, 0x03, 0x37, 0x03, 0x27, 0x03, 0x25, 0x03, + 0x14, 0x03, 0x16, 0x03, 0xfe, 0x02, 0xfd, 0x02, 0xe5, 0x02, 0xe5, 0x02, + 0xc7, 0x02, 0xc9, 0x02, 0xa7, 0x02, 0xa7, 0x02, 0x84, 0x02, 0x84, 0x02, + 0x5f, 0x02, 0x5d, 0x02, 0x36, 0x02, 0x37, 0x02, 0x08, 0x02, 0x08, 0x02, + 0xde, 0x01, 0xde, 0x01, 0xac, 0x01, 0xac, 0x01, 0x7c, 0x01, 0x7b, 0x01, + 0x48, 0x01, 0x48, 0x01, 0x14, 0x01, 0x13, 0x01, 0xdf, 0x00, 0xde, 0x00, + 0xa7, 0x00, 0xa6, 0x00, 0x72, 0x00, 0x73, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x02, 0x00, 0x02, 0x00, 0xc8, 0xff, 0xc9, 0xff, 0x94, 0xff, 0x93, 0xff, + 0x5b, 0xff, 0x5b, 0xff, 0x26, 0xff, 0x26, 0xff, 0xf3, 0xfe, 0xf2, 0xfe, + 0xbe, 0xfe, 0xbe, 0xfe, 0x8e, 0xfe, 0x8e, 0xfe, 0x5c, 0xfe, 0x5b, 0xfe, + 0x2f, 0xfe, 0x31, 0xfe, 0x05, 0xfe, 0x03, 0xfe, 0xdb, 0xfd, 0xdd, 0xfd, + 0xb5, 0xfd, 0xb4, 0xfd, 0x91, 0xfd, 0x8f, 0xfd, 0x71, 0xfd, 0x71, 0xfd, + 0x52, 0xfd, 0x52, 0xfd, 0x3a, 0xfd, 0x3b, 0xfd, 0x22, 0xfd, 0x21, 0xfd, + 0x10, 0xfd, 0x10, 0xfd, 0x01, 0xfd, 0x00, 0xfd, 0xf3, 0xfc, 0xf4, 0xfc, + 0xee, 0xfc, 0xec, 0xfc, 0xe7, 0xfc, 0xe7, 0xfc, 0xe9, 0xfc, 0xe7, 0xfc, + 0xea, 0xfc, 0xea, 0xfc, 0xf3, 0xfc, 0xf2, 0xfc, 0xfc, 0xfc, 0xfd, 0xfc, + 0x0d, 0xfd, 0x0c, 0xfd, 0x1e, 0xfd, 0x1e, 0xfd, 0x35, 0xfd, 0x34, 0xfd, + 0x4d, 0xfd, 0x4f, 0xfd, 0x69, 0xfd, 0x69, 0xfd, 0x8b, 0xfd, 0x8c, 0xfd, + 0xac, 0xfd, 0xab, 0xfd, 0xd3, 0xfd, 0xd1, 0xfd, 0xfb, 0xfd, 0xfc, 0xfd, + 0x27, 0xfe, 0x27, 0xfe, 0x55, 0xfe, 0x53, 0xfe, 0x81, 0xfe, 0x84, 0xfe, + 0xb5, 0xfe, 0xb2, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0x1a, 0xff, 0x1a, 0xff, + 0x53, 0xff, 0x4f, 0xff, 0x82, 0xff, 0x86, 0xff, 0xbf, 0xff, 0xbc, 0xff, + 0xf2, 0xff, 0xf4, 0xff, 0x2b, 0x00, 0x2c, 0x00, 0x61, 0x00, 0x5f, 0x00, + 0x97, 0x00, 0x97, 0x00, 0xcd, 0x00, 0xcd, 0x00, 0x02, 0x01, 0x01, 0x01, + 0x33, 0x01, 0x33, 0x01, 0x68, 0x01, 0x67, 0x01, 0x97, 0x01, 0x98, 0x01, + 0xc6, 0x01, 0xc6, 0x01, 0xf1, 0x01, 0xf2, 0x01, 0x1b, 0x02, 0x19, 0x02, + 0x42, 0x02, 0x44, 0x02, 0x65, 0x02, 0x64, 0x02, 0x89, 0x02, 0x8c, 0x02, + 0xa6, 0x02, 0xa5, 0x02, 0xc1, 0x02, 0xc3, 0x02, 0xd9, 0x02, 0xda, 0x02, + 0xec, 0x02, 0xec, 0x02, 0xff, 0x02, 0xfe, 0x02, 0x0a, 0x03, 0x0b, 0x03, + 0x14, 0x03, 0x14, 0x03, 0x19, 0x03, 0x1c, 0x03, 0x1a, 0x03, 0x19, 0x03, + 0x1a, 0x03, 0x1b, 0x03, 0x12, 0x03, 0x12, 0x03, 0x09, 0x03, 0x09, 0x03, + 0xfc, 0x02, 0xfd, 0x02, 0xe7, 0x02, 0xe7, 0x02, 0xd7, 0x02, 0xd6, 0x02, + 0xba, 0x02, 0xb9, 0x02, 0x9f, 0x02, 0x9f, 0x02, 0x7e, 0x02, 0x80, 0x02, + 0x5d, 0x02, 0x5c, 0x02, 0x36, 0x02, 0x38, 0x02, 0x0d, 0x02, 0x0c, 0x02, + 0xe3, 0x01, 0xe4, 0x01, 0xb4, 0x01, 0xb4, 0x01, 0x83, 0x01, 0x84, 0x01, + 0x53, 0x01, 0x50, 0x01, 0x1d, 0x01, 0x1f, 0x01, 0xea, 0x00, 0xe9, 0x00, + 0xb1, 0x00, 0xb1, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x42, 0x00, 0x41, 0x00, + 0x05, 0x00, 0x06, 0x00, 0xd0, 0xff, 0xcf, 0xff, 0x94, 0xff, 0x95, 0xff, + 0x5d, 0xff, 0x5f, 0xff, 0x24, 0xff, 0x22, 0xff, 0xeb, 0xfe, 0xed, 0xfe, + 0xb7, 0xfe, 0xb6, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x4c, 0xfe, 0x4c, 0xfe, + 0x18, 0xfe, 0x19, 0xfe, 0xea, 0xfd, 0xea, 0xfd, 0xbb, 0xfd, 0xbb, 0xfd, + 0x92, 0xfd, 0x91, 0xfd, 0x66, 0xfd, 0x69, 0xfd, 0x44, 0xfd, 0x42, 0xfd, + 0x1f, 0xfd, 0x21, 0xfd, 0x01, 0xfd, 0x00, 0xfd, 0xe4, 0xfc, 0xe5, 0xfc, + 0xcb, 0xfc, 0xcc, 0xfc, 0xb8, 0xfc, 0xb9, 0xfc, 0xa5, 0xfc, 0xa5, 0xfc, + 0x9a, 0xfc, 0x99, 0xfc, 0x8e, 0xfc, 0x90, 0xfc, 0x89, 0xfc, 0x88, 0xfc, + 0x87, 0xfc, 0x88, 0xfc, 0x8a, 0xfc, 0x8a, 0xfc, 0x92, 0xfc, 0x92, 0xfc, + 0x9a, 0xfc, 0x99, 0xfc, 0xa8, 0xfc, 0xa9, 0xfc, 0xbb, 0xfc, 0xbb, 0xfc, + 0xd0, 0xfc, 0xd0, 0xfc, 0xea, 0xfc, 0xea, 0xfc, 0x06, 0xfd, 0x06, 0xfd, + 0x27, 0xfd, 0x27, 0xfd, 0x4b, 0xfd, 0x4c, 0xfd, 0x71, 0xfd, 0x70, 0xfd, + 0x99, 0xfd, 0x9a, 0xfd, 0xc5, 0xfd, 0xc6, 0xfd, 0xf5, 0xfd, 0xf5, 0xfd, + 0x24, 0xfe, 0x25, 0xfe, 0x58, 0xfe, 0x57, 0xfe, 0x8d, 0xfe, 0x8c, 0xfe, + 0xc2, 0xfe, 0xc3, 0xfe, 0xf9, 0xfe, 0xf9, 0xfe, 0x31, 0xff, 0x31, 0xff, + 0x6b, 0xff, 0x6c, 0xff, 0xa6, 0xff, 0xa3, 0xff, 0xdf, 0xff, 0xe0, 0xff, + 0x18, 0x00, 0x16, 0x00, 0x51, 0x00, 0x52, 0x00, 0x89, 0x00, 0x89, 0x00, + 0xc1, 0x00, 0xc0, 0x00, 0xf7, 0x00, 0xf6, 0x00, 0x2c, 0x01, 0x2d, 0x01, + 0x61, 0x01, 0x5f, 0x01, 0x92, 0x01, 0x91, 0x01, 0xc3, 0x01, 0xc1, 0x01, + 0xef, 0x01, 0xef, 0x01, 0x1b, 0x02, 0x1a, 0x02, 0x42, 0x02, 0x43, 0x02, + 0x6b, 0x02, 0x68, 0x02, 0x8a, 0x02, 0x8a, 0x02, 0xaa, 0x02, 0xa8, 0x02, + 0xc4, 0x02, 0xc5, 0x02, 0xdd, 0x02, 0xdb, 0x02, 0xf0, 0x02, 0xf0, 0x02, + 0x00, 0x03, 0x00, 0x03, 0x0e, 0x03, 0x0c, 0x03, 0x15, 0x03, 0x16, 0x03, + 0x1b, 0x03, 0x19, 0x03, 0x1c, 0x03, 0x1d, 0x03, 0x18, 0x03, 0x18, 0x03, + 0x11, 0x03, 0x10, 0x03, 0x06, 0x03, 0x07, 0x03, 0xf7, 0x02, 0xf6, 0x02, + 0xe5, 0x02, 0xe6, 0x02, 0xcd, 0x02, 0xcd, 0x02, 0xb5, 0x02, 0xb3, 0x02, + 0x96, 0x02, 0x98, 0x02, 0x75, 0x02, 0x74, 0x02, 0x51, 0x02, 0x51, 0x02, + 0x28, 0x02, 0x29, 0x02, 0x01, 0x02, 0xff, 0x01, 0xd1, 0x01, 0xd4, 0x01, + 0xa6, 0x01, 0xa5, 0x01, 0x73, 0x01, 0x72, 0x01, 0x40, 0x01, 0x3e, 0x01, + 0x0a, 0x01, 0x0b, 0x01, 0xd3, 0x00, 0xd4, 0x00, 0x9c, 0x00, 0x9a, 0x00, + 0x65, 0x00, 0x65, 0x00, 0x2b, 0x00, 0x28, 0x00, 0xf1, 0xff, 0xf1, 0xff, + 0xb6, 0xff, 0xb6, 0xff, 0x7f, 0xff, 0x7c, 0xff, 0x43, 0xff, 0x44, 0xff, + 0x0a, 0xff, 0x0a, 0xff, 0xd3, 0xfe, 0xd2, 0xfe, 0x9e, 0xfe, 0x9f, 0xfe, + 0x69, 0xfe, 0x67, 0xfe, 0x35, 0xfe, 0x35, 0xfe, 0x05, 0xfe, 0x04, 0xfe, + 0xd7, 0xfd, 0xd5, 0xfd, 0xa7, 0xfd, 0xa9, 0xfd, 0x80, 0xfd, 0x7e, 0xfd, + 0x58, 0xfd, 0x5a, 0xfd, 0x33, 0xfd, 0x32, 0xfd, 0x13, 0xfd, 0x15, 0xfd, + 0xf6, 0xfc, 0xf5, 0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0xc8, 0xfc, 0xc6, 0xfc, + 0xb1, 0xfc, 0xb2, 0xfc, 0xa6, 0xfc, 0xa7, 0xfc, 0x9b, 0xfc, 0x9a, 0xfc, + 0x95, 0xfc, 0x95, 0xfc, 0x92, 0xfc, 0x92, 0xfc, 0x93, 0xfc, 0x92, 0xfc, + 0x99, 0xfc, 0x9a, 0xfc, 0xa2, 0xfc, 0xa3, 0xfc, 0xb3, 0xfc, 0xb1, 0xfc, + 0xc0, 0xfc, 0xc2, 0xfc, 0xd7, 0xfc, 0xd9, 0xfc, 0xf3, 0xfc, 0xf0, 0xfc, + 0x0d, 0xfd, 0x0f, 0xfd, 0x31, 0xfd, 0x2d, 0xfd, 0x52, 0xfd, 0x54, 0xfd, + 0x7a, 0xfd, 0x7b, 0xfd, 0xa5, 0xfd, 0xa3, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, + 0x03, 0xfe, 0x04, 0xfe, 0x32, 0xfe, 0x30, 0xfe, 0x68, 0xfe, 0x68, 0xfe, + 0x9d, 0xfe, 0x9c, 0xfe, 0xd4, 0xfe, 0xd4, 0xfe, 0x0e, 0xff, 0x11, 0xff, + 0x48, 0xff, 0x45, 0xff, 0x85, 0xff, 0x86, 0xff, 0xc0, 0xff, 0xbe, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0x38, 0x00, 0x38, 0x00, 0x74, 0x00, 0x72, 0x00, + 0xaf, 0x00, 0xb0, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0x24, 0x01, 0x24, 0x01, + 0x5b, 0x01, 0x5b, 0x01, 0x92, 0x01, 0x92, 0x01, 0xc7, 0x01, 0xc9, 0x01, + 0xfb, 0x01, 0xfb, 0x01, 0x2c, 0x02, 0x2c, 0x02, 0x5a, 0x02, 0x5a, 0x02, + 0x86, 0x02, 0x85, 0x02, 0xad, 0x02, 0xad, 0x02, 0xd4, 0x02, 0xd4, 0x02, + 0xf4, 0x02, 0xf3, 0x02, 0x13, 0x03, 0x13, 0x03, 0x2f, 0x03, 0x2f, 0x03, + 0x44, 0x03, 0x42, 0x03, 0x5a, 0x03, 0x5b, 0x03, 0x68, 0x03, 0x66, 0x03, + 0x72, 0x03, 0x74, 0x03, 0x7a, 0x03, 0x7b, 0x03, 0x7e, 0x03, 0x7d, 0x03, + 0x7f, 0x03, 0x7f, 0x03, 0x77, 0x03, 0x77, 0x03, 0x6f, 0x03, 0x6e, 0x03, + 0x61, 0x03, 0x62, 0x03, 0x50, 0x03, 0x50, 0x03, 0x3b, 0x03, 0x3b, 0x03, + 0x20, 0x03, 0x21, 0x03, 0x07, 0x03, 0x05, 0x03, 0xe4, 0x02, 0xe6, 0x02, + 0xc2, 0x02, 0xc1, 0x02, 0x9b, 0x02, 0x9c, 0x02, 0x70, 0x02, 0x71, 0x02, + 0x46, 0x02, 0x45, 0x02, 0x13, 0x02, 0x16, 0x02, 0xe4, 0x01, 0xe2, 0x01, + 0xae, 0x01, 0xaf, 0x01, 0x79, 0x01, 0x79, 0x01, 0x40, 0x01, 0x41, 0x01, + 0x09, 0x01, 0x0a, 0x01, 0xcf, 0x00, 0xcf, 0x00, 0x96, 0x00, 0x95, 0x00, + 0x59, 0x00, 0x5a, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0xe3, 0xff, 0xe4, 0xff, + 0xa8, 0xff, 0xa7, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x34, 0xff, 0x35, 0xff, + 0xfc, 0xfe, 0xfa, 0xfe, 0xc5, 0xfe, 0xc7, 0xfe, 0x8d, 0xfe, 0x8e, 0xfe, + 0x5a, 0xfe, 0x5b, 0xfe, 0x29, 0xfe, 0x2a, 0xfe, 0xf8, 0xfd, 0xfa, 0xfd, + 0xcd, 0xfd, 0xcc, 0xfd, 0xa3, 0xfd, 0xa4, 0xfd, 0x7d, 0xfd, 0x7c, 0xfd, + 0x59, 0xfd, 0x59, 0xfd, 0x39, 0xfd, 0x3a, 0xfd, 0x1d, 0xfd, 0x1c, 0xfd, + 0x04, 0xfd, 0x05, 0xfd, 0xee, 0xfc, 0xee, 0xfc, 0xde, 0xfc, 0xdd, 0xfc, + 0xd0, 0xfc, 0xd2, 0xfc, 0xc8, 0xfc, 0xc6, 0xfc, 0xc3, 0xfc, 0xc3, 0xfc, + 0xc1, 0xfc, 0xc3, 0xfc, 0xc3, 0xfc, 0xc3, 0xfc, 0xcc, 0xfc, 0xcc, 0xfc, + 0xd7, 0xfc, 0xd8, 0xfc, 0xe7, 0xfc, 0xe7, 0xfc, 0xf8, 0xfc, 0xf9, 0xfc, + 0x12, 0xfd, 0x12, 0xfd, 0x2c, 0xfd, 0x2a, 0xfd, 0x4a, 0xfd, 0x4c, 0xfd, + 0x6f, 0xfd, 0x6d, 0xfd, 0x95, 0xfd, 0x95, 0xfd, 0xbc, 0xfd, 0xbc, 0xfd, + 0xea, 0xfd, 0xe9, 0xfd, 0x18, 0xfe, 0x18, 0xfe, 0x4a, 0xfe, 0x4a, 0xfe, + 0x7e, 0xfe, 0x7d, 0xfe, 0xb3, 0xfe, 0xb2, 0xfe, 0xec, 0xfe, 0xeb, 0xfe, + 0x25, 0xff, 0x23, 0xff, 0x60, 0xff, 0x60, 0xff, 0x9c, 0xff, 0x9c, 0xff, + 0xd6, 0xff, 0xd5, 0xff, 0x15, 0x00, 0x15, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x8e, 0x00, 0x8d, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0x05, 0x01, 0x03, 0x01, + 0x43, 0x01, 0x41, 0x01, 0x79, 0x01, 0x7a, 0x01, 0xb4, 0x01, 0xb3, 0x01, + 0xea, 0x01, 0xe9, 0x01, 0x1d, 0x02, 0x1c, 0x02, 0x50, 0x02, 0x50, 0x02, + 0x81, 0x02, 0x7f, 0x02, 0xac, 0x02, 0xad, 0x02, 0xd8, 0x02, 0xd4, 0x02, + 0xfc, 0x02, 0xfd, 0x02, 0x23, 0x03, 0x21, 0x03, 0x3f, 0x03, 0x3f, 0x03, + 0x5f, 0x03, 0x5d, 0x03, 0x75, 0x03, 0x76, 0x03, 0x8a, 0x03, 0x88, 0x03, + 0x9d, 0x03, 0x9c, 0x03, 0xa6, 0x03, 0xa4, 0x03, 0xb1, 0x03, 0xb0, 0x03, + 0xb2, 0x03, 0xb1, 0x03, 0xb4, 0x03, 0xb3, 0x03, 0xaf, 0x03, 0xae, 0x03, + 0xa5, 0x03, 0xa5, 0x03, 0x9b, 0x03, 0x9a, 0x03, 0x87, 0x03, 0x86, 0x03, + 0x74, 0x03, 0x73, 0x03, 0x59, 0x03, 0x58, 0x03, 0x3c, 0x03, 0x3d, 0x03, + 0x1d, 0x03, 0x1c, 0x03, 0xf6, 0x02, 0xf5, 0x02, 0xd0, 0x02, 0xcf, 0x02, + 0xa6, 0x02, 0xa4, 0x02, 0x76, 0x02, 0x76, 0x02, 0x49, 0x02, 0x47, 0x02, + 0x11, 0x02, 0x12, 0x02, 0xe0, 0x01, 0xdf, 0x01, 0xa6, 0x01, 0xa4, 0x01, + 0x6b, 0x01, 0x6c, 0x01, 0x32, 0x01, 0x30, 0x01, 0xf4, 0x00, 0xf3, 0x00, + 0xb6, 0x00, 0xb8, 0x00, 0x7b, 0x00, 0x7a, 0x00, 0x3b, 0x00, 0x3c, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xbe, 0xff, 0xbd, 0xff, 0x84, 0xff, 0x82, 0xff, + 0x43, 0xff, 0x43, 0xff, 0x09, 0xff, 0x08, 0xff, 0xcb, 0xfe, 0xcd, 0xfe, + 0x94, 0xfe, 0x93, 0xfe, 0x5d, 0xfe, 0x5d, 0xfe, 0x27, 0xfe, 0x27, 0xfe, + 0xf4, 0xfd, 0xf5, 0xfd, 0xc5, 0xfd, 0xc3, 0xfd, 0x95, 0xfd, 0x97, 0xfd, + 0x6b, 0xfd, 0x68, 0xfd, 0x44, 0xfd, 0x44, 0xfd, 0x1f, 0xfd, 0x1e, 0xfd, + 0x01, 0xfd, 0xff, 0xfc, 0xe2, 0xfc, 0xe2, 0xfc, 0xca, 0xfc, 0xca, 0xfc, + 0xb5, 0xfc, 0xb4, 0xfc, 0xa4, 0xfc, 0xa3, 0xfc, 0x97, 0xfc, 0x97, 0xfc, + 0x90, 0xfc, 0x8e, 0xfc, 0x8b, 0xfc, 0x8a, 0xfc, 0x8a, 0xfc, 0x89, 0xfc, + 0x90, 0xfc, 0x8d, 0xfc, 0x97, 0xfc, 0x98, 0xfc, 0xa6, 0xfc, 0xa4, 0xfc, + 0xb4, 0xfc, 0xb5, 0xfc, 0xcc, 0xfc, 0xc9, 0xfc, 0xe4, 0xfc, 0xe3, 0xfc, + 0x00, 0xfd, 0x01, 0xfd, 0x20, 0xfd, 0x1e, 0xfd, 0x45, 0xfd, 0x48, 0xfd, + 0x6d, 0xfd, 0x6a, 0xfd, 0x98, 0xfd, 0x98, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, + 0xf7, 0xfd, 0xf6, 0xfd, 0x28, 0xfe, 0x29, 0xfe, 0x5f, 0xfe, 0x5e, 0xfe, + 0x97, 0xfe, 0x97, 0xfe, 0xcf, 0xfe, 0xcf, 0xfe, 0x0c, 0xff, 0x0a, 0xff, + 0x43, 0xff, 0x44, 0xff, 0x83, 0xff, 0x82, 0xff, 0xc0, 0xff, 0xc1, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0x3d, 0x00, 0x3d, 0x00, 0x78, 0x00, 0x76, 0x00, + 0xb5, 0x00, 0xb5, 0x00, 0xf2, 0x00, 0xf1, 0x00, 0x2b, 0x01, 0x2a, 0x01, + 0x69, 0x01, 0x67, 0x01, 0x9d, 0x01, 0x9d, 0x01, 0xd5, 0x01, 0xd4, 0x01, + 0x08, 0x02, 0x06, 0x02, 0x3a, 0x02, 0x39, 0x02, 0x69, 0x02, 0x69, 0x02, + 0x92, 0x02, 0x93, 0x02, 0xbd, 0x02, 0xbc, 0x02, 0xe1, 0x02, 0xe1, 0x02, + 0x03, 0x03, 0x04, 0x03, 0x23, 0x03, 0x22, 0x03, 0x3a, 0x03, 0x3c, 0x03, + 0x53, 0x03, 0x52, 0x03, 0x65, 0x03, 0x64, 0x03, 0x73, 0x03, 0x74, 0x03, + 0x7e, 0x03, 0x7c, 0x03, 0x82, 0x03, 0x84, 0x03, 0x84, 0x03, 0x83, 0x03, + 0x81, 0x03, 0x81, 0x03, 0x7b, 0x03, 0x7b, 0x03, 0x6f, 0x03, 0x6f, 0x03, + 0x5f, 0x03, 0x60, 0x03, 0x4b, 0x03, 0x4a, 0x03, 0x32, 0x03, 0x33, 0x03, + 0x18, 0x03, 0x15, 0x03, 0xf3, 0x02, 0xf5, 0x02, 0xd6, 0x02, 0xd3, 0x02, + 0xa8, 0x02, 0xab, 0x02, 0x82, 0x02, 0x81, 0x02, 0x53, 0x02, 0x53, 0x02, + 0x21, 0x02, 0x20, 0x02, 0xf1, 0x01, 0xf2, 0x01, 0xb6, 0x01, 0xb6, 0x01, + 0x80, 0x01, 0x81, 0x01, 0x45, 0x01, 0x45, 0x01, 0x08, 0x01, 0x08, 0x01, + 0xce, 0x00, 0xcd, 0x00, 0x89, 0x00, 0x8b, 0x00, 0x50, 0x00, 0x4f, 0x00, + 0x0b, 0x00, 0x0d, 0x00, 0xce, 0xff, 0xcd, 0xff, 0x8e, 0xff, 0x8d, 0xff, + 0x4a, 0xff, 0x4d, 0xff, 0x11, 0xff, 0x10, 0xff, 0xcf, 0xfe, 0xcf, 0xfe, + 0x93, 0xfe, 0x93, 0xfe, 0x57, 0xfe, 0x59, 0xfe, 0x1d, 0xfe, 0x1c, 0xfe, + 0xe6, 0xfd, 0xe7, 0xfd, 0xaf, 0xfd, 0xad, 0xfd, 0x7e, 0xfd, 0x7f, 0xfd, + 0x4d, 0xfd, 0x4c, 0xfd, 0x21, 0xfd, 0x21, 0xfd, 0xf5, 0xfc, 0xf7, 0xfc, + 0xcf, 0xfc, 0xcf, 0xfc, 0xad, 0xfc, 0xae, 0xfc, 0x8d, 0xfc, 0x8d, 0xfc, + 0x73, 0xfc, 0x75, 0xfc, 0x5b, 0xfc, 0x59, 0xfc, 0x48, 0xfc, 0x4a, 0xfc, + 0x39, 0xfc, 0x39, 0xfc, 0x2e, 0xfc, 0x30, 0xfc, 0x2a, 0xfc, 0x2b, 0xfc, + 0x28, 0xfc, 0x27, 0xfc, 0x2b, 0xfc, 0x2d, 0xfc, 0x33, 0xfc, 0x32, 0xfc, + 0x3d, 0xfc, 0x40, 0xfc, 0x4f, 0xfc, 0x4e, 0xfc, 0x62, 0xfc, 0x62, 0xfc, + 0x7c, 0xfc, 0x7d, 0xfc, 0x96, 0xfc, 0x97, 0xfc, 0xb9, 0xfc, 0xb9, 0xfc, + 0xdd, 0xfc, 0xdd, 0xfc, 0x04, 0xfd, 0x03, 0xfd, 0x30, 0xfd, 0x31, 0xfd, + 0x5e, 0xfd, 0x5e, 0xfd, 0x90, 0xfd, 0x8f, 0xfd, 0xc4, 0xfd, 0xc6, 0xfd, + 0xf9, 0xfd, 0xf9, 0xfd, 0x33, 0xfe, 0x34, 0xfe, 0x6d, 0xfe, 0x6d, 0xfe, + 0xaa, 0xfe, 0xaa, 0xfe, 0xe8, 0xfe, 0xe9, 0xfe, 0x26, 0xff, 0x25, 0xff, + 0x65, 0xff, 0x69, 0xff, 0xa8, 0xff, 0xa7, 0xff, 0xe5, 0xff, 0xe6, 0xff, + 0x28, 0x00, 0x28, 0x00, 0x65, 0x00, 0x65, 0x00, 0xa5, 0x00, 0xa6, 0x00, + 0xe3, 0x00, 0xe2, 0x00, 0x20, 0x01, 0x21, 0x01, 0x5b, 0x01, 0x5c, 0x01, + 0x96, 0x01, 0x94, 0x01, 0xce, 0x01, 0xce, 0x01, 0x00, 0x02, 0x00, 0x02, + 0x35, 0x02, 0x35, 0x02, 0x60, 0x02, 0x60, 0x02, 0x90, 0x02, 0x8f, 0x02, + 0xb7, 0x02, 0xba, 0x02, 0xdf, 0x02, 0xdd, 0x02, 0x02, 0x03, 0x02, 0x03, + 0x1d, 0x03, 0x1c, 0x03, 0x38, 0x03, 0x39, 0x03, 0x4d, 0x03, 0x4c, 0x03, + 0x61, 0x03, 0x61, 0x03, 0x6c, 0x03, 0x6d, 0x03, 0x78, 0x03, 0x76, 0x03, + 0x79, 0x03, 0x7b, 0x03, 0x7e, 0x03, 0x7c, 0x03, 0x76, 0x03, 0x77, 0x03, + 0x70, 0x03, 0x70, 0x03, 0x63, 0x03, 0x62, 0x03, 0x50, 0x03, 0x51, 0x03, + 0x3d, 0x03, 0x3c, 0x03, 0x20, 0x03, 0x21, 0x03, 0x04, 0x03, 0x03, 0x03, + 0xe1, 0x02, 0xe0, 0x02, 0xbc, 0x02, 0xbc, 0x02, 0x93, 0x02, 0x92, 0x02, + 0x68, 0x02, 0x68, 0x02, 0x36, 0x02, 0x36, 0x02, 0x07, 0x02, 0x05, 0x02, + 0xce, 0x01, 0xcf, 0x01, 0x98, 0x01, 0x98, 0x01, 0x5e, 0x01, 0x5d, 0x01, + 0x22, 0x01, 0x22, 0x01, 0xe6, 0x00, 0xe6, 0x00, 0xa6, 0x00, 0xa7, 0x00, + 0x68, 0x00, 0x68, 0x00, 0x27, 0x00, 0x26, 0x00, 0xe6, 0xff, 0xe6, 0xff, + 0xa6, 0xff, 0xa7, 0xff, 0x66, 0xff, 0x64, 0xff, 0x24, 0xff, 0x25, 0xff, + 0xe7, 0xfe, 0xe6, 0xfe, 0xa6, 0xfe, 0xa9, 0xfe, 0x6e, 0xfe, 0x6c, 0xfe, + 0x2f, 0xfe, 0x2f, 0xfe, 0xfa, 0xfd, 0xf9, 0xfd, 0xc1, 0xfd, 0xc1, 0xfd, + 0x8b, 0xfd, 0x8b, 0xfd, 0x5f, 0xfd, 0x5d, 0xfd, 0x2b, 0xfd, 0x2c, 0xfd, + 0x04, 0xfd, 0x04, 0xfd, 0xd8, 0xfc, 0xd9, 0xfc, 0xb8, 0xfc, 0xb6, 0xfc, + 0x94, 0xfc, 0x95, 0xfc, 0x7a, 0xfc, 0x78, 0xfc, 0x5f, 0xfc, 0x61, 0xfc, + 0x4d, 0xfc, 0x4d, 0xfc, 0x3d, 0xfc, 0x3d, 0xfc, 0x32, 0xfc, 0x32, 0xfc, + 0x2b, 0xfc, 0x2a, 0xfc, 0x28, 0xfc, 0x29, 0xfc, 0x2b, 0xfc, 0x2a, 0xfc, + 0x32, 0xfc, 0x32, 0xfc, 0x3b, 0xfc, 0x3b, 0xfc, 0x4e, 0xfc, 0x4c, 0xfc, + 0x5e, 0xfc, 0x5f, 0xfc, 0x7a, 0xfc, 0x79, 0xfc, 0x94, 0xfc, 0x94, 0xfc, + 0xb7, 0xfc, 0xb6, 0xfc, 0xda, 0xfc, 0xd9, 0xfc, 0x03, 0xfd, 0x02, 0xfd, + 0x2e, 0xfd, 0x2f, 0xfd, 0x5f, 0xfd, 0x5e, 0xfd, 0x91, 0xfd, 0x90, 0xfd, + 0xc6, 0xfd, 0xc7, 0xfd, 0xff, 0xfd, 0xfc, 0xfd, 0x37, 0xfe, 0x38, 0xfe, + 0x75, 0xfe, 0x74, 0xfe, 0xb3, 0xfe, 0xb1, 0xfe, 0xf2, 0xfe, 0xf2, 0xfe, + 0x34, 0xff, 0x35, 0xff, 0x75, 0xff, 0x74, 0xff, 0xb8, 0xff, 0xb9, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0x3d, 0x00, 0x3d, 0x00, 0x81, 0x00, 0x82, 0x00, + 0xc2, 0x00, 0xc1, 0x00, 0x05, 0x01, 0x06, 0x01, 0x45, 0x01, 0x43, 0x01, + 0x84, 0x01, 0x84, 0x01, 0xbd, 0x01, 0xc0, 0x01, 0xfb, 0x01, 0xf9, 0x01, + 0x33, 0x02, 0x35, 0x02, 0x69, 0x02, 0x6a, 0x02, 0x9d, 0x02, 0x9b, 0x02, + 0xc9, 0x02, 0xcd, 0x02, 0xfa, 0x02, 0xf7, 0x02, 0x21, 0x03, 0x25, 0x03, + 0x46, 0x03, 0x46, 0x03, 0x69, 0x03, 0x6a, 0x03, 0x83, 0x03, 0x86, 0x03, + 0xa0, 0x03, 0x9e, 0x03, 0xb4, 0x03, 0xb5, 0x03, 0xc4, 0x03, 0xc4, 0x03, + 0xd0, 0x03, 0xd0, 0x03, 0xd8, 0x03, 0xd8, 0x03, 0xda, 0x03, 0xdc, 0x03, + 0xd8, 0x03, 0xd8, 0x03, 0xd3, 0x03, 0xd4, 0x03, 0xc7, 0x03, 0xca, 0x03, + 0xba, 0x03, 0xba, 0x03, 0xa5, 0x03, 0xa6, 0x03, 0x8f, 0x03, 0x8f, 0x03, + 0x70, 0x03, 0x71, 0x03, 0x52, 0x03, 0x50, 0x03, 0x2b, 0x03, 0x2b, 0x03, + 0x05, 0x03, 0x06, 0x03, 0xd8, 0x02, 0xd8, 0x02, 0xa8, 0x02, 0xa9, 0x02, + 0x77, 0x02, 0x77, 0x02, 0x3f, 0x02, 0x40, 0x02, 0x0b, 0x02, 0x0d, 0x02, + 0xcf, 0x01, 0xce, 0x01, 0x92, 0x01, 0x93, 0x01, 0x57, 0x01, 0x58, 0x01, + 0x16, 0x01, 0x15, 0x01, 0xd6, 0x00, 0xd8, 0x00, 0x97, 0x00, 0x94, 0x00, + 0x52, 0x00, 0x53, 0x00, 0x13, 0x00, 0x12, 0x00, 0xcd, 0xff, 0xce, 0xff, + 0x8e, 0xff, 0x8d, 0xff, 0x4b, 0xff, 0x4c, 0xff, 0x0c, 0xff, 0x0c, 0xff, + 0xce, 0xfe, 0xcd, 0xfe, 0x8f, 0xfe, 0x91, 0xfe, 0x56, 0xfe, 0x54, 0xfe, + 0x1b, 0xfe, 0x1b, 0xfe, 0xe5, 0xfd, 0xe4, 0xfd, 0xb2, 0xfd, 0xb0, 0xfd, + 0x7e, 0xfd, 0x80, 0xfd, 0x53, 0xfd, 0x51, 0xfd, 0x25, 0xfd, 0x26, 0xfd, + 0xff, 0xfc, 0xff, 0xfc, 0xdd, 0xfc, 0xdc, 0xfc, 0xbb, 0xfc, 0xbd, 0xfc, + 0xa3, 0xfc, 0xa2, 0xfc, 0x89, 0xfc, 0x89, 0xfc, 0x7a, 0xfc, 0x7a, 0xfc, + 0x69, 0xfc, 0x68, 0xfc, 0x62, 0xfc, 0x62, 0xfc, 0x5a, 0xfc, 0x5a, 0xfc, + 0x5a, 0xfc, 0x5a, 0xfc, 0x60, 0xfc, 0x62, 0xfc, 0x68, 0xfc, 0x68, 0xfc, + 0x77, 0xfc, 0x76, 0xfc, 0x87, 0xfc, 0x87, 0xfc, 0x9d, 0xfc, 0x9d, 0xfc, + 0xb7, 0xfc, 0xb8, 0xfc, 0xd8, 0xfc, 0xd6, 0xfc, 0xfa, 0xfc, 0xfa, 0xfc, + 0x21, 0xfd, 0x20, 0xfd, 0x4c, 0xfd, 0x4c, 0xfd, 0x7a, 0xfd, 0x7a, 0xfd, + 0xab, 0xfd, 0xaa, 0xfd, 0xe1, 0xfd, 0xe1, 0xfd, 0x18, 0xfe, 0x15, 0xfe, + 0x52, 0xfe, 0x53, 0xfe, 0x8f, 0xfe, 0x8d, 0xfe, 0xcc, 0xfe, 0xcd, 0xfe, + 0x0d, 0xff, 0x0b, 0xff, 0x4e, 0xff, 0x4f, 0xff, 0x90, 0xff, 0x91, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0x16, 0x00, 0x18, 0x00, 0x5b, 0x00, 0x59, 0x00, + 0xa0, 0x00, 0xa1, 0x00, 0xe1, 0x00, 0xe0, 0x00, 0x25, 0x01, 0x27, 0x01, + 0x64, 0x01, 0x64, 0x01, 0xa6, 0x01, 0xa6, 0x01, 0xe6, 0x01, 0xe5, 0x01, + 0x1f, 0x02, 0x22, 0x02, 0x5d, 0x02, 0x5d, 0x02, 0x91, 0x02, 0x92, 0x02, + 0xc9, 0x02, 0xc8, 0x02, 0xf9, 0x02, 0xfa, 0x02, 0x28, 0x03, 0x28, 0x03, + 0x52, 0x03, 0x53, 0x03, 0x79, 0x03, 0x79, 0x03, 0x9c, 0x03, 0x9c, 0x03, + 0xbc, 0x03, 0xbc, 0x03, 0xd6, 0x03, 0xd7, 0x03, 0xec, 0x03, 0xec, 0x03, + 0xfe, 0x03, 0xfe, 0x03, 0x0a, 0x04, 0x0b, 0x04, 0x14, 0x04, 0x15, 0x04, + 0x18, 0x04, 0x18, 0x04, 0x17, 0x04, 0x19, 0x04, 0x13, 0x04, 0x12, 0x04, + 0x07, 0x04, 0x0a, 0x04, 0xf8, 0x03, 0xf9, 0x03, 0xe7, 0x03, 0xe7, 0x03, + 0xcd, 0x03, 0xce, 0x03, 0xb2, 0x03, 0xb3, 0x03, 0x8f, 0x03, 0x90, 0x03, + 0x6d, 0x03, 0x6e, 0x03, 0x43, 0x03, 0x42, 0x03, 0x18, 0x03, 0x18, 0x03, + 0xe7, 0x02, 0xe8, 0x02, 0xb5, 0x02, 0xb4, 0x02, 0x7e, 0x02, 0x80, 0x02, + 0x45, 0x02, 0x45, 0x02, 0x09, 0x02, 0x0a, 0x02, 0xcc, 0x01, 0xcb, 0x01, + 0x8a, 0x01, 0x8c, 0x01, 0x4a, 0x01, 0x4a, 0x01, 0x05, 0x01, 0x07, 0x01, + 0xc5, 0x00, 0xc3, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x39, 0x00, 0x39, 0x00, + 0xf6, 0xff, 0xf6, 0xff, 0xb0, 0xff, 0xae, 0xff, 0x6c, 0xff, 0x6e, 0xff, + 0x29, 0xff, 0x28, 0xff, 0xe5, 0xfe, 0xe6, 0xfe, 0xa5, 0xfe, 0xa6, 0xfe, + 0x64, 0xfe, 0x64, 0xfe, 0x2c, 0xfe, 0x2b, 0xfe, 0xed, 0xfd, 0xee, 0xfd, + 0xb7, 0xfd, 0xb7, 0xfd, 0x83, 0xfd, 0x82, 0xfd, 0x4e, 0xfd, 0x4f, 0xfd, + 0x23, 0xfd, 0x21, 0xfd, 0xf3, 0xfc, 0xf3, 0xfc, 0xd1, 0xfc, 0xd0, 0xfc, + 0xaa, 0xfc, 0xa9, 0xfc, 0x8a, 0xfc, 0x8b, 0xfc, 0x73, 0xfc, 0x71, 0xfc, + 0x5a, 0xfc, 0x59, 0xfc, 0x49, 0xfc, 0x4b, 0xfc, 0x3d, 0xfc, 0x3a, 0xfc, + 0x32, 0xfc, 0x35, 0xfc, 0x2e, 0xfc, 0x2e, 0xfc, 0x2f, 0xfc, 0x2f, 0xfc, + 0x35, 0xfc, 0x35, 0xfc, 0x3e, 0xfc, 0x3f, 0xfc, 0x4f, 0xfc, 0x50, 0xfc, + 0x61, 0xfc, 0x60, 0xfc, 0x7a, 0xfc, 0x7b, 0xfc, 0x96, 0xfc, 0x96, 0xfc, + 0xb7, 0xfc, 0xb7, 0xfc, 0xde, 0xfc, 0xde, 0xfc, 0x03, 0xfd, 0x03, 0xfd, + 0x32, 0xfd, 0x34, 0xfd, 0x61, 0xfd, 0x61, 0xfd, 0x93, 0xfd, 0x97, 0xfd, + 0xcd, 0xfd, 0xcd, 0xfd, 0x03, 0xfe, 0x05, 0xfe, 0x41, 0xfe, 0x40, 0xfe, + 0x7d, 0xfe, 0x80, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xff, 0xfe, 0xff, 0xfe, + 0x41, 0xff, 0x45, 0xff, 0x86, 0xff, 0x84, 0xff, 0xc9, 0xff, 0xcb, 0xff, + 0x0f, 0x00, 0x0f, 0x00, 0x51, 0x00, 0x52, 0x00, 0x95, 0x00, 0x97, 0x00, + 0xd8, 0x00, 0xd9, 0x00, 0x1c, 0x01, 0x1d, 0x01, 0x5d, 0x01, 0x5e, 0x01, + 0x9c, 0x01, 0x9c, 0x01, 0xda, 0x01, 0xdc, 0x01, 0x17, 0x02, 0x18, 0x02, + 0x4f, 0x02, 0x4f, 0x02, 0x86, 0x02, 0x88, 0x02, 0xbb, 0x02, 0xb8, 0x02, + 0xe8, 0x02, 0xed, 0x02, 0x17, 0x03, 0x16, 0x03, 0x40, 0x03, 0x3f, 0x03, + 0x65, 0x03, 0x66, 0x03, 0x85, 0x03, 0x84, 0x03, 0xa1, 0x03, 0xa3, 0x03, + 0xb9, 0x03, 0xb9, 0x03, 0xcf, 0x03, 0xd0, 0x03, 0xdc, 0x03, 0xde, 0x03, + 0xe7, 0x03, 0xe7, 0x03, 0xef, 0x03, 0xee, 0x03, 0xed, 0x03, 0xef, 0x03, + 0xeb, 0x03, 0xec, 0x03, 0xe1, 0x03, 0xe1, 0x03, 0xd4, 0x03, 0xd4, 0x03, + 0xc1, 0x03, 0xc5, 0x03, 0xaa, 0x03, 0xaa, 0x03, 0x90, 0x03, 0x92, 0x03, + 0x6e, 0x03, 0x6f, 0x03, 0x4c, 0x03, 0x4d, 0x03, 0x23, 0x03, 0x25, 0x03, + 0xf7, 0x02, 0xf7, 0x02, 0xc8, 0x02, 0xc9, 0x02, 0x92, 0x02, 0x94, 0x02, + 0x5d, 0x02, 0x5f, 0x02, 0x25, 0x02, 0x25, 0x02, 0xe7, 0x01, 0xe9, 0x01, + 0xa9, 0x01, 0xac, 0x01, 0x69, 0x01, 0x68, 0x01, 0x25, 0x01, 0x28, 0x01, + 0xe3, 0x00, 0xe2, 0x00, 0x9c, 0x00, 0x9e, 0x00, 0x55, 0x00, 0x57, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0xc7, 0xff, 0xc9, 0xff, 0x82, 0xff, 0x84, 0xff, + 0x3a, 0xff, 0x3b, 0xff, 0xf5, 0xfe, 0xf6, 0xfe, 0xb0, 0xfe, 0xaf, 0xfe, + 0x6b, 0xfe, 0x6d, 0xfe, 0x2d, 0xfe, 0x2d, 0xfe, 0xe8, 0xfd, 0xeb, 0xfd, + 0xaf, 0xfd, 0xaf, 0xfd, 0x72, 0xfd, 0x73, 0xfd, 0x3a, 0xfd, 0x3b, 0xfd, + 0x06, 0xfd, 0x08, 0xfd, 0xd4, 0xfc, 0xd5, 0xfc, 0xa6, 0xfc, 0xa6, 0xfc, + 0x7d, 0xfc, 0x7d, 0xfc, 0x54, 0xfc, 0x56, 0xfc, 0x35, 0xfc, 0x36, 0xfc, + 0x16, 0xfc, 0x18, 0xfc, 0xfc, 0xfb, 0xfd, 0xfb, 0xe9, 0xfb, 0xeb, 0xfb, + 0xd8, 0xfb, 0xd9, 0xfb, 0xd0, 0xfb, 0xd0, 0xfb, 0xc8, 0xfb, 0xca, 0xfb, + 0xc7, 0xfb, 0xc7, 0xfb, 0xcb, 0xfb, 0xcb, 0xfb, 0xd4, 0xfb, 0xd4, 0xfb, + 0xe2, 0xfb, 0xe3, 0xfb, 0xf3, 0xfb, 0xf5, 0xfb, 0x0d, 0xfc, 0x0c, 0xfc, + 0x24, 0xfc, 0x26, 0xfc, 0x48, 0xfc, 0x49, 0xfc, 0x69, 0xfc, 0x6c, 0xfc, + 0x95, 0xfc, 0x95, 0xfc, 0xbf, 0xfc, 0xc0, 0xfc, 0xf0, 0xfc, 0xf2, 0xfc, + 0x24, 0xfd, 0x24, 0xfd, 0x59, 0xfd, 0x5a, 0xfd, 0x95, 0xfd, 0x97, 0xfd, + 0xd0, 0xfd, 0xd1, 0xfd, 0x11, 0xfe, 0x11, 0xfe, 0x51, 0xfe, 0x53, 0xfe, + 0x93, 0xfe, 0x94, 0xfe, 0xd8, 0xfe, 0xd9, 0xfe, 0x1e, 0xff, 0x1f, 0xff, + 0x65, 0xff, 0x64, 0xff, 0xac, 0xff, 0xae, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0x3b, 0x00, 0x3a, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0xc5, 0x00, 0xc6, 0x00, + 0x07, 0x01, 0x0a, 0x01, 0x4e, 0x01, 0x4b, 0x01, 0x8d, 0x01, 0x8f, 0x01, + 0xcd, 0x01, 0xcd, 0x01, 0x0a, 0x02, 0x0a, 0x02, 0x43, 0x02, 0x43, 0x02, + 0x7c, 0x02, 0x7b, 0x02, 0xaf, 0x02, 0xb0, 0x02, 0xdf, 0x02, 0xe0, 0x02, + 0x0d, 0x03, 0x0d, 0x03, 0x33, 0x03, 0x35, 0x03, 0x5d, 0x03, 0x5b, 0x03, + 0x78, 0x03, 0x7b, 0x03, 0x97, 0x03, 0x97, 0x03, 0xaf, 0x03, 0xb0, 0x03, + 0xc0, 0x03, 0xc2, 0x03, 0xd1, 0x03, 0xd2, 0x03, 0xd8, 0x03, 0xda, 0x03, + 0xde, 0x03, 0xde, 0x03, 0xde, 0x03, 0xdf, 0x03, 0xd6, 0x03, 0xd7, 0x03, + 0xd1, 0x03, 0xd3, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xad, 0x03, 0xae, 0x03, + 0x95, 0x03, 0x95, 0x03, 0x75, 0x03, 0x75, 0x03, 0x58, 0x03, 0x58, 0x03, + 0x2d, 0x03, 0x2f, 0x03, 0x07, 0x03, 0x07, 0x03, 0xd7, 0x02, 0xd9, 0x02, + 0xa5, 0x02, 0xa6, 0x02, 0x73, 0x02, 0x74, 0x02, 0x38, 0x02, 0x39, 0x02, + 0xff, 0x01, 0x00, 0x02, 0xbf, 0x01, 0xc1, 0x01, 0x7f, 0x01, 0x7f, 0x01, + 0x3f, 0x01, 0x40, 0x01, 0xfa, 0x00, 0xf9, 0x00, 0xb4, 0x00, 0xb7, 0x00, + 0x6d, 0x00, 0x6e, 0x00, 0x28, 0x00, 0x27, 0x00, 0xe1, 0xff, 0xe1, 0xff, + 0x99, 0xff, 0x99, 0xff, 0x53, 0xff, 0x53, 0xff, 0x0b, 0xff, 0x0b, 0xff, + 0xc5, 0xfe, 0xc4, 0xfe, 0x83, 0xfe, 0x81, 0xfe, 0x3d, 0xfe, 0x3e, 0xfe, + 0xff, 0xfd, 0xfe, 0xfd, 0xbe, 0xfd, 0xbf, 0xfd, 0x82, 0xfd, 0x83, 0xfd, + 0x4a, 0xfd, 0x48, 0xfd, 0x13, 0xfd, 0x14, 0xfd, 0xe0, 0xfc, 0xe0, 0xfc, + 0xb1, 0xfc, 0xb2, 0xfc, 0x84, 0xfc, 0x86, 0xfc, 0x5e, 0xfc, 0x5d, 0xfc, + 0x3c, 0xfc, 0x3c, 0xfc, 0x1c, 0xfc, 0x1c, 0xfc, 0x02, 0xfc, 0x03, 0xfc, + 0xed, 0xfb, 0xee, 0xfb, 0xdc, 0xfb, 0xdb, 0xfb, 0xd2, 0xfb, 0xd3, 0xfb, + 0xc9, 0xfb, 0xcb, 0xfb, 0xc8, 0xfb, 0xc7, 0xfb, 0xcc, 0xfb, 0xcc, 0xfb, + 0xd1, 0xfb, 0xd4, 0xfb, 0xe3, 0xfb, 0xe2, 0xfb, 0xf0, 0xfb, 0xf2, 0xfb, + 0x07, 0xfc, 0x06, 0xfc, 0x22, 0xfc, 0x24, 0xfc, 0x41, 0xfc, 0x40, 0xfc, + 0x65, 0xfc, 0x67, 0xfc, 0x90, 0xfc, 0x8e, 0xfc, 0xbb, 0xfc, 0xbe, 0xfc, + 0xf0, 0xfc, 0xf0, 0xfc, 0x24, 0xfd, 0x26, 0xfd, 0x60, 0xfd, 0x60, 0xfd, + 0x9c, 0xfd, 0x9f, 0xfd, 0xdd, 0xfd, 0xdc, 0xfd, 0x21, 0xfe, 0x22, 0xfe, + 0x64, 0xfe, 0x62, 0xfe, 0xaa, 0xfe, 0xac, 0xfe, 0xef, 0xfe, 0xed, 0xfe, + 0x37, 0xff, 0x37, 0xff, 0x7e, 0xff, 0x7d, 0xff, 0xc5, 0xff, 0xc5, 0xff, + 0x0c, 0x00, 0x0d, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x96, 0x00, 0x97, 0x00, + 0xd9, 0x00, 0xd6, 0x00, 0x19, 0x01, 0x1a, 0x01, 0x59, 0x01, 0x59, 0x01, + 0x94, 0x01, 0x95, 0x01, 0xd2, 0x01, 0xd3, 0x01, 0x09, 0x02, 0x08, 0x02, + 0x40, 0x02, 0x3f, 0x02, 0x71, 0x02, 0x71, 0x02, 0xa3, 0x02, 0xa3, 0x02, + 0xd5, 0x02, 0xd5, 0x02, 0x07, 0x03, 0x07, 0x03, 0x3a, 0x03, 0x39, 0x03, + 0x63, 0x03, 0x64, 0x03, 0x91, 0x03, 0x8f, 0x03, 0xb1, 0x03, 0xb3, 0x03, + 0xd4, 0x03, 0xd2, 0x03, 0xeb, 0x03, 0xec, 0x03, 0x01, 0x04, 0xff, 0x03, + 0x13, 0x04, 0x14, 0x04, 0x1e, 0x04, 0x20, 0x04, 0x29, 0x04, 0x28, 0x04, + 0x2b, 0x04, 0x2c, 0x04, 0x2b, 0x04, 0x2d, 0x04, 0x2b, 0x04, 0x29, 0x04, + 0x1f, 0x04, 0x21, 0x04, 0x15, 0x04, 0x14, 0x04, 0x01, 0x04, 0x03, 0x04, + 0xe9, 0x03, 0xe8, 0x03, 0xce, 0x03, 0xcf, 0x03, 0xaa, 0x03, 0xa9, 0x03, + 0x83, 0x03, 0x84, 0x03, 0x56, 0x03, 0x57, 0x03, 0x27, 0x03, 0x27, 0x03, + 0xf1, 0x02, 0xf4, 0x02, 0xb8, 0x02, 0xb8, 0x02, 0x7c, 0x02, 0x7c, 0x02, + 0x3a, 0x02, 0x3c, 0x02, 0xf5, 0x01, 0xf4, 0x01, 0xaf, 0x01, 0xaf, 0x01, + 0x62, 0x01, 0x63, 0x01, 0x19, 0x01, 0x18, 0x01, 0xc7, 0x00, 0xc8, 0x00, + 0x79, 0x00, 0x78, 0x00, 0x26, 0x00, 0x27, 0x00, 0xd3, 0xff, 0xd3, 0xff, + 0x83, 0xff, 0x81, 0xff, 0x2e, 0xff, 0x30, 0xff, 0xde, 0xfe, 0xdc, 0xfe, + 0x89, 0xfe, 0x8b, 0xfe, 0x3c, 0xfe, 0x3c, 0xfe, 0xee, 0xfd, 0xec, 0xfd, + 0xa1, 0xfd, 0xa3, 0xfd, 0x59, 0xfd, 0x59, 0xfd, 0x12, 0xfd, 0x13, 0xfd, + 0xd0, 0xfc, 0xd1, 0xfc, 0x90, 0xfc, 0x90, 0xfc, 0x58, 0xfc, 0x58, 0xfc, + 0x1e, 0xfc, 0x20, 0xfc, 0xee, 0xfb, 0xed, 0xfb, 0xc1, 0xfb, 0xc2, 0xfb, + 0x98, 0xfb, 0x98, 0xfb, 0x75, 0xfb, 0x75, 0xfb, 0x57, 0xfb, 0x58, 0xfb, + 0x3f, 0xfb, 0x3f, 0xfb, 0x2e, 0xfb, 0x2e, 0xfb, 0x1f, 0xfb, 0x20, 0xfb, + 0x19, 0xfb, 0x1a, 0xfb, 0x18, 0xfb, 0x18, 0xfb, 0x1b, 0xfb, 0x1c, 0xfb, + 0x27, 0xfb, 0x27, 0xfb, 0x36, 0xfb, 0x38, 0xfb, 0x4e, 0xfb, 0x4e, 0xfb, + 0x6b, 0xfb, 0x6b, 0xfb, 0x8e, 0xfb, 0x8f, 0xfb, 0xb6, 0xfb, 0xb6, 0xfb, + 0xe3, 0xfb, 0xe6, 0xfb, 0x18, 0xfc, 0x18, 0xfc, 0x51, 0xfc, 0x52, 0xfc, + 0x93, 0xfc, 0x92, 0xfc, 0xd3, 0xfc, 0xd5, 0xfc, 0x21, 0xfd, 0x20, 0xfd, + 0x6d, 0xfd, 0x6f, 0xfd, 0xbf, 0xfd, 0xc0, 0xfd, 0x17, 0xfe, 0x18, 0xfe, + 0x73, 0xfe, 0x75, 0xfe, 0xd1, 0xfe, 0xd2, 0xfe, 0x34, 0xff, 0x35, 0xff, + 0x97, 0xff, 0x99, 0xff, 0x01, 0x00, 0x03, 0x00, 0x69, 0x00, 0x6a, 0x00, + 0xd5, 0x00, 0xd7, 0x00, 0x41, 0x01, 0x41, 0x01, 0xac, 0x01, 0xae, 0x01, + 0x17, 0x02, 0x19, 0x02, 0x83, 0x02, 0x83, 0x02, 0xec, 0x02, 0xed, 0x02, + 0x54, 0x03, 0x55, 0x03, 0xb8, 0x03, 0xb9, 0x03, 0x1a, 0x04, 0x1a, 0x04, + 0x78, 0x04, 0x79, 0x04, 0xd0, 0x04, 0xd1, 0x04, 0x25, 0x05, 0x26, 0x05, + 0x74, 0x05, 0x75, 0x05, 0xbb, 0x05, 0xbd, 0x05, 0xff, 0x05, 0x00, 0x06, + 0x3b, 0x06, 0x3c, 0x06, 0x6e, 0x06, 0x6f, 0x06, 0x99, 0x06, 0x9b, 0x06, + 0xbe, 0x06, 0xbe, 0x06, 0xd9, 0x06, 0xdb, 0x06, 0xee, 0x06, 0xec, 0x06, + 0xf7, 0x06, 0xfa, 0x06, 0xfc, 0x06, 0xfa, 0x06, 0xf2, 0x06, 0xf4, 0x06, + 0xe3, 0x06, 0xe4, 0x06, 0xce, 0x06, 0xcc, 0x06, 0xa7, 0x06, 0xaa, 0x06, + 0x81, 0x06, 0x82, 0x06, 0x4d, 0x06, 0x4e, 0x06, 0x18, 0x06, 0x17, 0x06, + 0xd4, 0x05, 0xd3, 0x05, 0x8d, 0x05, 0x8e, 0x05, 0x3c, 0x05, 0x3c, 0x05, + 0xe8, 0x04, 0xe8, 0x04, 0x8d, 0x04, 0x8c, 0x04, 0x27, 0x04, 0x29, 0x04, + 0xc5, 0x03, 0xc5, 0x03, 0x56, 0x03, 0x58, 0x03, 0xea, 0x02, 0xe9, 0x02, + 0x75, 0x02, 0x76, 0x02, 0xfe, 0x01, 0xff, 0x01, 0x86, 0x01, 0x86, 0x01, + 0x09, 0x01, 0x0b, 0x01, 0x90, 0x00, 0x8e, 0x00, 0x0e, 0x00, 0x0f, 0x00, + 0x93, 0xff, 0x91, 0xff, 0x0f, 0xff, 0x11, 0xff, 0x94, 0xfe, 0x92, 0xfe, + 0x15, 0xfe, 0x17, 0xfe, 0x99, 0xfd, 0x96, 0xfd, 0x1f, 0xfd, 0x22, 0xfd, + 0xa6, 0xfc, 0xa4, 0xfc, 0x33, 0xfc, 0x35, 0xfc, 0xc2, 0xfb, 0xc2, 0xfb, + 0x55, 0xfb, 0x55, 0xfb, 0xee, 0xfa, 0xee, 0xfa, 0x8b, 0xfa, 0x8b, 0xfa, + 0x2f, 0xfa, 0x30, 0xfa, 0xd8, 0xf9, 0xd8, 0xf9, 0x89, 0xf9, 0x89, 0xf9, + 0x40, 0xf9, 0x42, 0xf9, 0x00, 0xf9, 0x01, 0xf9, 0xca, 0xf8, 0xca, 0xf8, + 0x98, 0xf8, 0x99, 0xf8, 0x75, 0xf8, 0x74, 0xf8, 0x53, 0xf8, 0x56, 0xf8, + 0x44, 0xf8, 0x44, 0xf8, 0x39, 0xf8, 0x39, 0xf8, 0x3a, 0xf8, 0x3b, 0xf8, + 0x46, 0xf8, 0x46, 0xf8, 0x5a, 0xf8, 0x5b, 0xf8, 0x7a, 0xf8, 0x7b, 0xf8, + 0xa6, 0xf8, 0xa5, 0xf8, 0xd8, 0xf8, 0xd9, 0xf8, 0x18, 0xf9, 0x18, 0xf9, + 0x60, 0xf9, 0x60, 0xf9, 0xb0, 0xf9, 0xb0, 0xf9, 0x0c, 0xfa, 0x0c, 0xfa, + 0x6f, 0xfa, 0x6e, 0xfa, 0xd8, 0xfa, 0xd8, 0xfa, 0x4c, 0xfb, 0x4b, 0xfb, + 0xc0, 0xfb, 0xc3, 0xfb, 0x45, 0xfc, 0x42, 0xfc, 0xc3, 0xfc, 0xc6, 0xfc, + 0x50, 0xfd, 0x4e, 0xfd, 0xdb, 0xfd, 0xdb, 0xfd, 0x6a, 0xfe, 0x6c, 0xfe, + 0xfe, 0xfe, 0xfd, 0xfe, 0x91, 0xff, 0x92, 0xff, 0x28, 0x00, 0x29, 0x00, + 0xbd, 0x00, 0xbc, 0x00, 0x4c, 0x01, 0x4c, 0x01, 0xda, 0x01, 0xda, 0x01, + 0x62, 0x02, 0x60, 0x02, 0xe5, 0x02, 0xe9, 0x02, 0x6b, 0x03, 0x67, 0x03, + 0xe7, 0x03, 0xeb, 0x03, 0x67, 0x04, 0x65, 0x04, 0xda, 0x04, 0xdb, 0x04, + 0x4d, 0x05, 0x4f, 0x05, 0xb7, 0x05, 0xb6, 0x05, 0x1a, 0x06, 0x1c, 0x06, + 0x79, 0x06, 0x79, 0x06, 0xce, 0x06, 0xcf, 0x06, 0x1d, 0x07, 0x1d, 0x07, + 0x63, 0x07, 0x64, 0x07, 0x9f, 0x07, 0x9e, 0x07, 0xd3, 0x07, 0xd4, 0x07, + 0xfb, 0x07, 0xfb, 0x07, 0x1e, 0x08, 0x1f, 0x08, 0x34, 0x08, 0x35, 0x08, + 0x43, 0x08, 0x42, 0x08, 0x43, 0x08, 0x45, 0x08, 0x3e, 0x08, 0x3c, 0x08, + 0x2a, 0x08, 0x2d, 0x08, 0x0e, 0x08, 0x0d, 0x08, 0xe6, 0x07, 0xe8, 0x07, + 0xb6, 0x07, 0xb6, 0x07, 0x7b, 0x07, 0x7c, 0x07, 0x34, 0x07, 0x34, 0x07, + 0xe5, 0x06, 0xe7, 0x06, 0x8d, 0x06, 0x8d, 0x06, 0x2b, 0x06, 0x2b, 0x06, + 0xc1, 0x05, 0xc2, 0x05, 0x4e, 0x05, 0x4f, 0x05, 0xd6, 0x04, 0xd7, 0x04, + 0x55, 0x04, 0x55, 0x04, 0xcc, 0x03, 0xd0, 0x03, 0x42, 0x03, 0x40, 0x03, + 0xad, 0x02, 0xaf, 0x02, 0x1a, 0x02, 0x1b, 0x02, 0x7d, 0x01, 0x7e, 0x01, + 0xe1, 0x00, 0xe1, 0x00, 0x41, 0x00, 0x42, 0x00, 0x9f, 0xff, 0xa1, 0xff, + 0xff, 0xfe, 0x00, 0xff, 0x60, 0xfe, 0x60, 0xfe, 0xc3, 0xfd, 0xc6, 0xfd, + 0x2d, 0xfd, 0x2c, 0xfd, 0x96, 0xfc, 0x99, 0xfc, 0x08, 0xfc, 0x07, 0xfc, + 0x77, 0xfb, 0x7a, 0xfb, 0xee, 0xfa, 0xee, 0xfa, 0x69, 0xfa, 0x6a, 0xfa, + 0xe8, 0xf9, 0xea, 0xf9, 0x70, 0xf9, 0x71, 0xf9, 0xfc, 0xf8, 0xfe, 0xf8, + 0x93, 0xf8, 0x93, 0xf8, 0x30, 0xf8, 0x31, 0xf8, 0xd7, 0xf7, 0xd6, 0xf7, + 0x86, 0xf7, 0x87, 0xf7, 0x3e, 0xf7, 0x3f, 0xf7, 0x03, 0xf7, 0x04, 0xf7, + 0xce, 0xf6, 0xce, 0xf6, 0xa4, 0xf6, 0xa5, 0xf6, 0x89, 0xf6, 0x8b, 0xf6, + 0x75, 0xf6, 0x74, 0xf6, 0x70, 0xf6, 0x72, 0xf6, 0x72, 0xf6, 0x72, 0xf6, + 0x81, 0xf6, 0x84, 0xf6, 0x9f, 0xf6, 0x9d, 0xf6, 0xc2, 0xf6, 0xc5, 0xf6, + 0xf8, 0xf6, 0xf8, 0xf6, 0x32, 0xf7, 0x32, 0xf7, 0x7a, 0xf7, 0x7c, 0xf7, + 0xcc, 0xf7, 0xcc, 0xf7, 0x27, 0xf8, 0x28, 0xf8, 0x8c, 0xf8, 0x8d, 0xf8, + 0xfb, 0xf8, 0xfa, 0xf8, 0x70, 0xf9, 0x73, 0xf9, 0xf0, 0xf9, 0xef, 0xf9, + 0x75, 0xfa, 0x76, 0xfa, 0x00, 0xfb, 0x03, 0xfb, 0x95, 0xfb, 0x93, 0xfb, + 0x29, 0xfc, 0x2d, 0xfc, 0xc7, 0xfc, 0xc6, 0xfc, 0x67, 0xfd, 0x69, 0xfd, + 0x0a, 0xfe, 0x09, 0xfe, 0xae, 0xfe, 0xb0, 0xfe, 0x57, 0xff, 0x57, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0x4c, 0x01, 0x4e, 0x01, + 0xf4, 0x01, 0xf4, 0x01, 0x91, 0x02, 0x92, 0x02, 0x30, 0x03, 0x32, 0x03, + 0xc8, 0x03, 0xc8, 0x03, 0x5f, 0x04, 0x61, 0x04, 0xf2, 0x04, 0xf0, 0x04, + 0x7b, 0x05, 0x80, 0x05, 0x08, 0x06, 0x04, 0x06, 0x81, 0x06, 0x85, 0x06, + 0x00, 0x07, 0xff, 0x06, 0x6f, 0x07, 0x70, 0x07, 0xd9, 0x07, 0xda, 0x07, + 0x3a, 0x08, 0x3a, 0x08, 0x90, 0x08, 0x90, 0x08, 0xdf, 0x08, 0xdf, 0x08, + 0x1f, 0x09, 0x21, 0x09, 0x59, 0x09, 0x59, 0x09, 0x87, 0x09, 0x89, 0x09, + 0xab, 0x09, 0xaa, 0x09, 0xc3, 0x09, 0xc2, 0x09, 0xcd, 0x09, 0xcf, 0x09, + 0xcf, 0x09, 0xcf, 0x09, 0xc4, 0x09, 0xc4, 0x09, 0xad, 0x09, 0xae, 0x09, + 0x8b, 0x09, 0x8a, 0x09, 0x5c, 0x09, 0x5e, 0x09, 0x23, 0x09, 0x21, 0x09, + 0xde, 0x08, 0xe0, 0x08, 0x8e, 0x08, 0x8d, 0x08, 0x34, 0x08, 0x34, 0x08, + 0xcf, 0x07, 0xd0, 0x07, 0x61, 0x07, 0x63, 0x07, 0xee, 0x06, 0xed, 0x06, + 0x6e, 0x06, 0x6f, 0x06, 0xeb, 0x05, 0xea, 0x05, 0x5e, 0x05, 0x60, 0x05, + 0xcd, 0x04, 0xce, 0x04, 0x36, 0x04, 0x36, 0x04, 0x9a, 0x03, 0x9a, 0x03, + 0xfa, 0x02, 0xfc, 0x02, 0x57, 0x02, 0x58, 0x02, 0xb2, 0x01, 0xb1, 0x01, + 0x0c, 0x01, 0x0e, 0x01, 0x63, 0x00, 0x63, 0x00, 0xbe, 0xff, 0xbe, 0xff, + 0x16, 0xff, 0x17, 0xff, 0x72, 0xfe, 0x72, 0xfe, 0xd3, 0xfd, 0xd2, 0xfd, + 0x35, 0xfd, 0x36, 0xfd, 0x9b, 0xfc, 0x9c, 0xfc, 0x03, 0xfc, 0x05, 0xfc, + 0x75, 0xfb, 0x75, 0xfb, 0xe7, 0xfa, 0xe7, 0xfa, 0x61, 0xfa, 0x64, 0xfa, + 0xe4, 0xf9, 0xe3, 0xf9, 0x6a, 0xf9, 0x6d, 0xf9, 0xfe, 0xf8, 0xfe, 0xf8, + 0x94, 0xf8, 0x94, 0xf8, 0x38, 0xf8, 0x38, 0xf8, 0xe3, 0xf7, 0xe1, 0xf7, + 0x97, 0xf7, 0x98, 0xf7, 0x59, 0xf7, 0x57, 0xf7, 0x1e, 0xf7, 0x20, 0xf7, + 0xf5, 0xf6, 0xf6, 0xf6, 0xd3, 0xf6, 0xd2, 0xf6, 0xbe, 0xf6, 0xbf, 0xf6, + 0xb6, 0xf6, 0xb4, 0xf6, 0xb6, 0xf6, 0xb8, 0xf6, 0xc6, 0xf6, 0xc5, 0xf6, + 0xdf, 0xf6, 0xdf, 0xf6, 0x03, 0xf7, 0x04, 0xf7, 0x35, 0xf7, 0x33, 0xf7, + 0x6d, 0xf7, 0x70, 0xf7, 0xb6, 0xf7, 0xb5, 0xf7, 0x05, 0xf8, 0x07, 0xf8, + 0x61, 0xf8, 0x5f, 0xf8, 0xc3, 0xf8, 0xc5, 0xf8, 0x32, 0xf9, 0x31, 0xf9, + 0xa6, 0xf9, 0xa7, 0xf9, 0x21, 0xfa, 0x23, 0xfa, 0xa7, 0xfa, 0xa8, 0xfa, + 0x2f, 0xfb, 0x30, 0xfb, 0xc0, 0xfb, 0xc1, 0xfb, 0x54, 0xfc, 0x53, 0xfc, + 0xec, 0xfc, 0xee, 0xfc, 0x8a, 0xfd, 0x89, 0xfd, 0x28, 0xfe, 0x2b, 0xfe, + 0xc9, 0xfe, 0xca, 0xfe, 0x6c, 0xff, 0x6c, 0xff, 0x10, 0x00, 0x12, 0x00, + 0xb2, 0x00, 0xb2, 0x00, 0x54, 0x01, 0x53, 0x01, 0xf2, 0x01, 0xf5, 0x01, + 0x91, 0x02, 0x90, 0x02, 0x2c, 0x03, 0x2d, 0x03, 0xbf, 0x03, 0xc0, 0x03, + 0x55, 0x04, 0x54, 0x04, 0xdd, 0x04, 0xde, 0x04, 0x67, 0x05, 0x67, 0x05, + 0xe7, 0x05, 0xe7, 0x05, 0x5e, 0x06, 0x5f, 0x06, 0xd3, 0x06, 0xd3, 0x06, + 0x3a, 0x07, 0x3b, 0x07, 0x9f, 0x07, 0x9f, 0x07, 0xf5, 0x07, 0xf4, 0x07, + 0x46, 0x08, 0x45, 0x08, 0x88, 0x08, 0x89, 0x08, 0xc3, 0x08, 0xc3, 0x08, + 0xf7, 0x08, 0xf8, 0x08, 0x19, 0x09, 0x19, 0x09, 0x36, 0x09, 0x34, 0x09, + 0x42, 0x09, 0x44, 0x09, 0x48, 0x09, 0x47, 0x09, 0x41, 0x09, 0x42, 0x09, + 0x2e, 0x09, 0x2e, 0x09, 0x11, 0x09, 0x11, 0x09, 0xe7, 0x08, 0xe7, 0x08, + 0xb1, 0x08, 0xb0, 0x08, 0x71, 0x08, 0x70, 0x08, 0x27, 0x08, 0x25, 0x08, + 0xd0, 0x07, 0xd1, 0x07, 0x72, 0x07, 0x71, 0x07, 0x09, 0x07, 0x09, 0x07, + 0x98, 0x06, 0x98, 0x06, 0x20, 0x06, 0x1f, 0x06, 0x9c, 0x05, 0x9d, 0x05, + 0x17, 0x05, 0x17, 0x05, 0x85, 0x04, 0x86, 0x04, 0xf5, 0x03, 0xf5, 0x03, + 0x5b, 0x03, 0x5c, 0x03, 0xbf, 0x02, 0xc0, 0x02, 0x21, 0x02, 0x1f, 0x02, + 0x7c, 0x01, 0x7f, 0x01, 0xda, 0x00, 0xd9, 0x00, 0x33, 0x00, 0x34, 0x00, + 0x90, 0xff, 0x8e, 0xff, 0xe9, 0xfe, 0xea, 0xfe, 0x45, 0xfe, 0x46, 0xfe, + 0xa3, 0xfd, 0xa3, 0xfd, 0x05, 0xfd, 0x07, 0xfd, 0x69, 0xfc, 0x67, 0xfc, + 0xd2, 0xfb, 0xd2, 0xfb, 0x3e, 0xfb, 0x3f, 0xfb, 0xaf, 0xfa, 0xad, 0xfa, + 0x27, 0xfa, 0x2a, 0xfa, 0xa7, 0xf9, 0xa4, 0xf9, 0x2a, 0xf9, 0x2c, 0xf9, + 0xba, 0xf8, 0xb8, 0xf8, 0x4c, 0xf8, 0x4c, 0xf8, 0xef, 0xf7, 0xed, 0xf7, + 0x93, 0xf7, 0x94, 0xf7, 0x46, 0xf7, 0x46, 0xf7, 0x00, 0xf7, 0x00, 0xf7, + 0xc6, 0xf6, 0xc5, 0xf6, 0x97, 0xf6, 0x96, 0xf6, 0x71, 0xf6, 0x6f, 0xf6, + 0x57, 0xf6, 0x58, 0xf6, 0x47, 0xf6, 0x45, 0xf6, 0x46, 0xf6, 0x47, 0xf6, + 0x49, 0xf6, 0x4a, 0xf6, 0x5f, 0xf6, 0x5d, 0xf6, 0x7f, 0xf6, 0x7f, 0xf6, + 0xa7, 0xf6, 0xa6, 0xf6, 0xdd, 0xf6, 0xdc, 0xf6, 0x1c, 0xf7, 0x1e, 0xf7, + 0x68, 0xf7, 0x66, 0xf7, 0xbe, 0xf7, 0xc0, 0xf7, 0x1a, 0xf8, 0x18, 0xf8, + 0x85, 0xf8, 0x84, 0xf8, 0xf3, 0xf8, 0xf2, 0xf8, 0x6b, 0xf9, 0x6b, 0xf9, + 0xeb, 0xf9, 0xea, 0xf9, 0x71, 0xfa, 0x70, 0xfa, 0x01, 0xfb, 0xff, 0xfa, + 0x90, 0xfb, 0x8f, 0xfb, 0x27, 0xfc, 0x28, 0xfc, 0xc0, 0xfc, 0xbf, 0xfc, + 0x5f, 0xfd, 0x60, 0xfd, 0x00, 0xfe, 0xff, 0xfd, 0xa1, 0xfe, 0xa1, 0xfe, + 0x45, 0xff, 0x46, 0xff, 0xea, 0xff, 0xe8, 0xff, 0x8b, 0x00, 0x8c, 0x00, + 0x2f, 0x01, 0x2d, 0x01, 0xd0, 0x01, 0xcf, 0x01, 0x6d, 0x02, 0x6e, 0x02, + 0x08, 0x03, 0x06, 0x03, 0x9c, 0x03, 0x9e, 0x03, 0x30, 0x04, 0x2f, 0x04, + 0xbe, 0x04, 0xbd, 0x04, 0x43, 0x05, 0x44, 0x05, 0xc4, 0x05, 0xc2, 0x05, + 0x3e, 0x06, 0x3e, 0x06, 0xb0, 0x06, 0xb0, 0x06, 0x1a, 0x07, 0x18, 0x07, + 0x7b, 0x07, 0x7d, 0x07, 0xd4, 0x07, 0xd4, 0x07, 0x23, 0x08, 0x22, 0x08, + 0x68, 0x08, 0x6a, 0x08, 0xa3, 0x08, 0xa3, 0x08, 0xd2, 0x08, 0xd3, 0x08, + 0xf9, 0x08, 0xf9, 0x08, 0x12, 0x09, 0x12, 0x09, 0x22, 0x09, 0x23, 0x09, + 0x29, 0x09, 0x29, 0x09, 0x21, 0x09, 0x22, 0x09, 0x10, 0x09, 0x0e, 0x09, + 0xef, 0x08, 0xf3, 0x08, 0xc8, 0x08, 0xc8, 0x08, 0x95, 0x08, 0x96, 0x08, + 0x5a, 0x08, 0x59, 0x08, 0x10, 0x08, 0x11, 0x08, 0xbe, 0x07, 0xbe, 0x07, + 0x64, 0x07, 0x65, 0x07, 0xff, 0x06, 0xff, 0x06, 0x94, 0x06, 0x94, 0x06, + 0x21, 0x06, 0x20, 0x06, 0xa7, 0x05, 0xa7, 0x05, 0x25, 0x05, 0x26, 0x05, + 0x9f, 0x04, 0x9d, 0x04, 0x12, 0x04, 0x14, 0x04, 0x82, 0x03, 0x81, 0x03, + 0xee, 0x02, 0xf0, 0x02, 0x57, 0x02, 0x56, 0x02, 0xbe, 0x01, 0xbf, 0x01, + 0x25, 0x01, 0x25, 0x01, 0x87, 0x00, 0x87, 0x00, 0xec, 0xff, 0xed, 0xff, + 0x53, 0xff, 0x53, 0xff, 0xb9, 0xfe, 0xb9, 0xfe, 0x23, 0xfe, 0x22, 0xfe, + 0x8c, 0xfd, 0x8d, 0xfd, 0xfb, 0xfc, 0xfb, 0xfc, 0x6e, 0xfc, 0x6e, 0xfc, + 0xe5, 0xfb, 0xe5, 0xfb, 0x60, 0xfb, 0x5e, 0xfb, 0xe3, 0xfa, 0xe5, 0xfa, + 0x6a, 0xfa, 0x6a, 0xfa, 0xfb, 0xf9, 0xfb, 0xf9, 0x90, 0xf9, 0x91, 0xf9, + 0x2f, 0xf9, 0x2c, 0xf9, 0xd3, 0xf8, 0xd5, 0xf8, 0x86, 0xf8, 0x85, 0xf8, + 0x3e, 0xf8, 0x3d, 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xcb, 0xf7, 0xca, 0xf7, + 0xa1, 0xf7, 0xa0, 0xf7, 0x82, 0xf7, 0x82, 0xf7, 0x6b, 0xf7, 0x69, 0xf7, + 0x61, 0xf7, 0x61, 0xf7, 0x62, 0xf7, 0x61, 0xf7, 0x6b, 0xf7, 0x6b, 0xf7, + 0x82, 0xf7, 0x82, 0xf7, 0xa1, 0xf7, 0xa1, 0xf7, 0xce, 0xf7, 0xcc, 0xf7, + 0x02, 0xf8, 0x02, 0xf8, 0x41, 0xf8, 0x3f, 0xf8, 0x8b, 0xf8, 0x8b, 0xf8, + 0xdd, 0xf8, 0xdd, 0xf8, 0x3c, 0xf9, 0x3b, 0xf9, 0x9e, 0xf9, 0x9e, 0xf9, + 0x0f, 0xfa, 0x0e, 0xfa, 0x80, 0xfa, 0x7f, 0xfa, 0xfc, 0xfa, 0xfd, 0xfa, + 0x7e, 0xfb, 0x7f, 0xfb, 0x05, 0xfc, 0x05, 0xfc, 0x95, 0xfc, 0x93, 0xfc, + 0x21, 0xfd, 0x21, 0xfd, 0xb8, 0xfd, 0xb9, 0xfd, 0x4f, 0xfe, 0x4f, 0xfe, + 0xe9, 0xfe, 0xe8, 0xfe, 0x85, 0xff, 0x85, 0xff, 0x1f, 0x00, 0x1e, 0x00, + 0xbb, 0x00, 0xbb, 0x00, 0x55, 0x01, 0x54, 0x01, 0xef, 0x01, 0xef, 0x01, + 0x87, 0x02, 0x88, 0x02, 0x1c, 0x03, 0x1b, 0x03, 0xae, 0x03, 0xad, 0x03, + 0x3b, 0x04, 0x3c, 0x04, 0xc6, 0x04, 0xc4, 0x04, 0x49, 0x05, 0x49, 0x05, + 0xc5, 0x05, 0xc6, 0x05, 0x40, 0x06, 0x3c, 0x06, 0xac, 0x06, 0xad, 0x06, + 0x18, 0x07, 0x14, 0x07, 0x76, 0x07, 0x78, 0x07, 0xd0, 0x07, 0xcf, 0x07, + 0x22, 0x08, 0x20, 0x08, 0x65, 0x08, 0x66, 0x08, 0xa6, 0x08, 0xa4, 0x08, + 0xd6, 0x08, 0xd7, 0x08, 0x01, 0x09, 0x01, 0x09, 0x20, 0x09, 0x1e, 0x09, + 0x34, 0x09, 0x34, 0x09, 0x3d, 0x09, 0x3e, 0x09, 0x3d, 0x09, 0x3c, 0x09, + 0x30, 0x09, 0x30, 0x09, 0x1a, 0x09, 0x1a, 0x09, 0xfa, 0x08, 0xf8, 0x08, + 0xcd, 0x08, 0xcf, 0x08, 0x97, 0x08, 0x94, 0x08, 0x57, 0x08, 0x58, 0x08, + 0x0c, 0x08, 0x0c, 0x08, 0xbc, 0x07, 0xbb, 0x07, 0x5d, 0x07, 0x5c, 0x07, + 0xfc, 0x06, 0xf9, 0x06, 0x8f, 0x06, 0x90, 0x06, 0x1b, 0x06, 0x1a, 0x06, + 0xa4, 0x05, 0xa3, 0x05, 0x21, 0x05, 0x23, 0x05, 0x9e, 0x04, 0x9e, 0x04, + 0x14, 0x04, 0x14, 0x04, 0x86, 0x03, 0x84, 0x03, 0xf5, 0x02, 0xf5, 0x02, + 0x5f, 0x02, 0x5d, 0x02, 0xc7, 0x01, 0xc8, 0x01, 0x31, 0x01, 0x31, 0x01, + 0x98, 0x00, 0x96, 0x00, 0xff, 0xff, 0x01, 0x00, 0x67, 0xff, 0x65, 0xff, + 0xd2, 0xfe, 0xd1, 0xfe, 0x3d, 0xfe, 0x3c, 0xfe, 0xab, 0xfd, 0xa8, 0xfd, + 0x1b, 0xfd, 0x1c, 0xfd, 0x8f, 0xfc, 0x8e, 0xfc, 0x0a, 0xfc, 0x0a, 0xfc, + 0x87, 0xfb, 0x86, 0xfb, 0x0e, 0xfb, 0x0c, 0xfb, 0x97, 0xfa, 0x97, 0xfa, + 0x25, 0xfa, 0x25, 0xfa, 0xc2, 0xf9, 0xc0, 0xf9, 0x5e, 0xf9, 0x5e, 0xf9, + 0x09, 0xf9, 0x08, 0xf9, 0xba, 0xf8, 0xb7, 0xf8, 0x70, 0xf8, 0x72, 0xf8, + 0x36, 0xf8, 0x33, 0xf8, 0x00, 0xf8, 0x01, 0xf8, 0xd4, 0xf7, 0xd3, 0xf7, + 0xb8, 0xf7, 0xb7, 0xf7, 0x9e, 0xf7, 0x9d, 0xf7, 0x96, 0xf7, 0x96, 0xf7, + 0x95, 0xf7, 0x94, 0xf7, 0x9b, 0xf7, 0x9c, 0xf7, 0xb2, 0xf7, 0xb1, 0xf7, + 0xce, 0xf7, 0xcd, 0xf7, 0xf8, 0xf7, 0xfa, 0xf7, 0x2b, 0xf8, 0x29, 0xf8, + 0x67, 0xf8, 0x67, 0xf8, 0xad, 0xf8, 0xad, 0xf8, 0xfa, 0xf8, 0xf9, 0xf8, + 0x53, 0xf9, 0x53, 0xf9, 0xb0, 0xf9, 0xb2, 0xf9, 0x1a, 0xfa, 0x18, 0xfa, + 0x88, 0xfa, 0x87, 0xfa, 0xfb, 0xfa, 0xfa, 0xfa, 0x76, 0xfb, 0x76, 0xfb, + 0xf5, 0xfb, 0xf3, 0xfb, 0x78, 0xfc, 0x79, 0xfc, 0x01, 0xfd, 0xff, 0xfc, + 0x8b, 0xfd, 0x8c, 0xfd, 0x1c, 0xfe, 0x1a, 0xfe, 0xa8, 0xfe, 0xab, 0xfe, + 0x3d, 0xff, 0x39, 0xff, 0xcc, 0xff, 0xce, 0xff, 0x5e, 0x00, 0x5c, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0x7f, 0x01, 0x7f, 0x01, 0x0d, 0x02, 0x0b, 0x02, + 0x98, 0x02, 0x97, 0x02, 0x1c, 0x03, 0x1c, 0x03, 0xa2, 0x03, 0xa0, 0x03, + 0x20, 0x04, 0x1f, 0x04, 0x9a, 0x04, 0x98, 0x04, 0x0f, 0x05, 0x0d, 0x05, + 0x7c, 0x05, 0x7c, 0x05, 0xe5, 0x05, 0xe1, 0x05, 0x42, 0x06, 0x43, 0x06, + 0x9e, 0x06, 0x9c, 0x06, 0xeb, 0x06, 0xeb, 0x06, 0x39, 0x07, 0x37, 0x07, + 0x76, 0x07, 0x74, 0x07, 0xae, 0x07, 0xac, 0x07, 0xda, 0x07, 0xd8, 0x07, + 0xfe, 0x07, 0xfd, 0x07, 0x19, 0x08, 0x16, 0x08, 0x26, 0x08, 0x25, 0x08, + 0x31, 0x08, 0x2f, 0x08, 0x29, 0x08, 0x28, 0x08, 0x1d, 0x08, 0x1d, 0x08, + 0x06, 0x08, 0x03, 0x08, 0xe2, 0x07, 0xe3, 0x07, 0xb9, 0x07, 0xb4, 0x07, + 0x80, 0x07, 0x82, 0x07, 0x43, 0x07, 0x40, 0x07, 0xf9, 0x06, 0xfb, 0x06, + 0xa7, 0x06, 0xa6, 0x06, 0x4f, 0x06, 0x4d, 0x06, 0xec, 0x05, 0xec, 0x05, + 0x86, 0x05, 0x82, 0x05, 0x12, 0x05, 0x13, 0x05, 0x9d, 0x04, 0x9d, 0x04, + 0x22, 0x04, 0x20, 0x04, 0x9f, 0x03, 0xa0, 0x03, 0x1a, 0x03, 0x18, 0x03, + 0x8e, 0x02, 0x8f, 0x02, 0x05, 0x02, 0x02, 0x02, 0x71, 0x01, 0x72, 0x01, + 0xe2, 0x00, 0xe1, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0xba, 0xff, 0xb9, 0xff, + 0x28, 0xff, 0x28, 0xff, 0x94, 0xfe, 0x94, 0xfe, 0x05, 0xfe, 0x05, 0xfe, + 0x76, 0xfd, 0x74, 0xfd, 0xe8, 0xfc, 0xe7, 0xfc, 0x60, 0xfc, 0x5f, 0xfc, + 0xd8, 0xfb, 0xd8, 0xfb, 0x5b, 0xfb, 0x59, 0xfb, 0xde, 0xfa, 0xdd, 0xfa, + 0x69, 0xfa, 0x68, 0xfa, 0xf8, 0xf9, 0xf8, 0xf9, 0x8f, 0xf9, 0x8e, 0xf9, + 0x2e, 0xf9, 0x2d, 0xf9, 0xd4, 0xf8, 0xd3, 0xf8, 0x81, 0xf8, 0x80, 0xf8, + 0x37, 0xf8, 0x36, 0xf8, 0xf8, 0xf7, 0xf8, 0xf7, 0xbe, 0xf7, 0xbd, 0xf7, + 0x91, 0xf7, 0x90, 0xf7, 0x6b, 0xf7, 0x6a, 0xf7, 0x50, 0xf7, 0x4f, 0xf7, + 0x41, 0xf7, 0x40, 0xf7, 0x38, 0xf7, 0x37, 0xf7, 0x3c, 0xf7, 0x3b, 0xf7, + 0x4b, 0xf7, 0x4a, 0xf7, 0x60, 0xf7, 0x5e, 0xf7, 0x83, 0xf7, 0x84, 0xf7, + 0xae, 0xf7, 0xac, 0xf7, 0xe6, 0xf7, 0xe6, 0xf7, 0x21, 0xf8, 0x22, 0xf8, + 0x69, 0xf8, 0x68, 0xf8, 0xba, 0xf8, 0xb9, 0xf8, 0x10, 0xf9, 0x0f, 0xf9, + 0x72, 0xf9, 0x71, 0xf9, 0xd9, 0xf9, 0xd7, 0xf9, 0x46, 0xfa, 0x45, 0xfa, + 0xbb, 0xfa, 0xbb, 0xfa, 0x33, 0xfb, 0x32, 0xfb, 0xb0, 0xfb, 0xb0, 0xfb, + 0x34, 0xfc, 0x34, 0xfc, 0xb9, 0xfc, 0xba, 0xfc, 0x44, 0xfd, 0x44, 0xfd, + 0xcf, 0xfd, 0xce, 0xfd, 0x5c, 0xfe, 0x5d, 0xfe, 0xee, 0xfe, 0xec, 0xfe, + 0x7c, 0xff, 0x7c, 0xff, 0x0c, 0x00, 0x0a, 0x00, 0x9a, 0x00, 0x9a, 0x00, + 0x26, 0x01, 0x26, 0x01, 0xb3, 0x01, 0xb2, 0x01, 0x38, 0x02, 0x3a, 0x02, + 0xc0, 0x02, 0xbe, 0x02, 0x41, 0x03, 0x40, 0x03, 0xbe, 0x03, 0xbd, 0x03, + 0x36, 0x04, 0x33, 0x04, 0xa8, 0x04, 0xa9, 0x04, 0x16, 0x05, 0x13, 0x05, + 0x7b, 0x05, 0x7b, 0x05, 0xda, 0x05, 0xda, 0x05, 0x33, 0x06, 0x32, 0x06, + 0x83, 0x06, 0x83, 0x06, 0xcc, 0x06, 0xca, 0x06, 0x0c, 0x07, 0x09, 0x07, + 0x41, 0x07, 0x41, 0x07, 0x70, 0x07, 0x6e, 0x07, 0x93, 0x07, 0x90, 0x07, + 0xae, 0x07, 0xae, 0x07, 0xbd, 0x07, 0xbc, 0x07, 0xc9, 0x07, 0xc7, 0x07, + 0xc4, 0x07, 0xc3, 0x07, 0xb8, 0x07, 0xb7, 0x07, 0xa2, 0x07, 0xa1, 0x07, + 0x83, 0x07, 0x82, 0x07, 0x5c, 0x07, 0x58, 0x07, 0x25, 0x07, 0x26, 0x07, + 0xeb, 0x06, 0xe9, 0x06, 0xa5, 0x06, 0xa3, 0x06, 0x57, 0x06, 0x56, 0x06, + 0x03, 0x06, 0x00, 0x06, 0xa3, 0x05, 0xa2, 0x05, 0x40, 0x05, 0x3e, 0x05, + 0xd5, 0x04, 0xd3, 0x04, 0x64, 0x04, 0x63, 0x04, 0xed, 0x03, 0xeb, 0x03, + 0x72, 0x03, 0x70, 0x03, 0xf0, 0x02, 0xf0, 0x02, 0x6e, 0x02, 0x6b, 0x02, + 0xe7, 0x01, 0xe6, 0x01, 0x5c, 0x01, 0x5d, 0x01, 0xd4, 0x00, 0xd3, 0x00, + 0x48, 0x00, 0x47, 0x00, 0xbc, 0xff, 0xbb, 0xff, 0x30, 0xff, 0x2f, 0xff, + 0xa4, 0xfe, 0xa4, 0xfe, 0x1b, 0xfe, 0x19, 0xfe, 0x95, 0xfd, 0x94, 0xfd, + 0x0f, 0xfd, 0x0f, 0xfd, 0x8e, 0xfc, 0x8b, 0xfc, 0x11, 0xfc, 0x10, 0xfc, + 0x98, 0xfb, 0x98, 0xfb, 0x26, 0xfb, 0x24, 0xfb, 0xb7, 0xfa, 0xb6, 0xfa, + 0x4e, 0xfa, 0x4e, 0xfa, 0xee, 0xf9, 0xeb, 0xf9, 0x92, 0xf9, 0x92, 0xf9, + 0x40, 0xf9, 0x3e, 0xf9, 0xf6, 0xf8, 0xf5, 0xf8, 0xb1, 0xf8, 0xb0, 0xf8, + 0x78, 0xf8, 0x76, 0xf8, 0x46, 0xf8, 0x45, 0xf8, 0x1d, 0xf8, 0x1b, 0xf8, + 0x00, 0xf8, 0x01, 0xf8, 0xea, 0xf7, 0xe6, 0xf7, 0xdd, 0xf7, 0xdf, 0xf7, + 0xdb, 0xf7, 0xda, 0xf7, 0xe3, 0xf7, 0xe0, 0xf7, 0xf4, 0xf7, 0xf5, 0xf7, + 0x0f, 0xf8, 0x0c, 0xf8, 0x34, 0xf8, 0x34, 0xf8, 0x64, 0xf8, 0x62, 0xf8, + 0x99, 0xf8, 0x98, 0xf8, 0xdb, 0xf8, 0xda, 0xf8, 0x23, 0xf9, 0x23, 0xf9, + 0x76, 0xf9, 0x74, 0xf9, 0xd1, 0xf9, 0xd0, 0xf9, 0x32, 0xfa, 0x32, 0xfa, + 0x9c, 0xfa, 0x99, 0xfa, 0x09, 0xfb, 0x09, 0xfb, 0x7f, 0xfb, 0x7d, 0xfb, + 0xf8, 0xfb, 0xf9, 0xfb, 0x77, 0xfc, 0x77, 0xfc, 0xfa, 0xfc, 0xfa, 0xfc, + 0x82, 0xfd, 0x81, 0xfd, 0x0a, 0xfe, 0x09, 0xfe, 0x99, 0xfe, 0x97, 0xfe, + 0x24, 0xff, 0x25, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0x45, 0x00, 0x43, 0x00, + 0xd2, 0x00, 0xd2, 0x00, 0x62, 0x01, 0x60, 0x01, 0xec, 0x01, 0xea, 0x01, + 0x7a, 0x02, 0x78, 0x02, 0xff, 0x02, 0xfd, 0x02, 0x84, 0x03, 0x82, 0x03, + 0x03, 0x04, 0x02, 0x04, 0x81, 0x04, 0x7f, 0x04, 0xf6, 0x04, 0xf4, 0x04, + 0x69, 0x05, 0x67, 0x05, 0xd1, 0x05, 0xd0, 0x05, 0x38, 0x06, 0x36, 0x06, + 0x93, 0x06, 0x92, 0x06, 0xea, 0x06, 0xe8, 0x06, 0x38, 0x07, 0x36, 0x07, + 0x7e, 0x07, 0x7c, 0x07, 0xbc, 0x07, 0xb9, 0x07, 0xed, 0x07, 0xed, 0x07, + 0x1c, 0x08, 0x19, 0x08, 0x3a, 0x08, 0x3a, 0x08, 0x54, 0x08, 0x51, 0x08, + 0x61, 0x08, 0x5f, 0x08, 0x64, 0x08, 0x63, 0x08, 0x60, 0x08, 0x5d, 0x08, + 0x4f, 0x08, 0x4e, 0x08, 0x37, 0x08, 0x35, 0x08, 0x11, 0x08, 0x0f, 0x08, + 0xe5, 0x07, 0xe4, 0x07, 0xaf, 0x07, 0xae, 0x07, 0x6f, 0x07, 0x6d, 0x07, + 0x2a, 0x07, 0x29, 0x07, 0xd6, 0x06, 0xd5, 0x06, 0x82, 0x06, 0x81, 0x06, + 0x21, 0x06, 0x20, 0x06, 0xbd, 0x05, 0xbc, 0x05, 0x51, 0x05, 0x51, 0x05, + 0xdd, 0x04, 0xdc, 0x04, 0x66, 0x04, 0x65, 0x04, 0xe9, 0x03, 0xea, 0x03, + 0x69, 0x03, 0x66, 0x03, 0xe6, 0x02, 0xe7, 0x02, 0x60, 0x02, 0x5f, 0x02, + 0xd7, 0x01, 0xd6, 0x01, 0x4b, 0x01, 0x4f, 0x01, 0xc3, 0x00, 0xc1, 0x00, + 0x37, 0x00, 0x36, 0x00, 0xad, 0xff, 0xac, 0xff, 0x24, 0xff, 0x22, 0xff, + 0x9b, 0xfe, 0x9b, 0xfe, 0x15, 0xfe, 0x14, 0xfe, 0x94, 0xfd, 0x91, 0xfd, + 0x11, 0xfd, 0x11, 0xfd, 0x97, 0xfc, 0x95, 0xfc, 0x1f, 0xfc, 0x1f, 0xfc, + 0xad, 0xfb, 0xac, 0xfb, 0x42, 0xfb, 0x41, 0xfb, 0xda, 0xfa, 0xdb, 0xfa, + 0x7b, 0xfa, 0x79, 0xfa, 0x22, 0xfa, 0x20, 0xfa, 0xd0, 0xf9, 0xd0, 0xf9, + 0x87, 0xf9, 0x84, 0xf9, 0x45, 0xf9, 0x45, 0xf9, 0x0d, 0xf9, 0x0b, 0xf9, + 0xda, 0xf8, 0xd9, 0xf8, 0xb7, 0xf8, 0xb3, 0xf8, 0x94, 0xf8, 0x94, 0xf8, + 0x82, 0xf8, 0x80, 0xf8, 0x74, 0xf8, 0x74, 0xf8, 0x72, 0xf8, 0x70, 0xf8, + 0x7c, 0xf8, 0x7b, 0xf8, 0x8d, 0xf8, 0x8b, 0xf8, 0xa8, 0xf8, 0xa8, 0xf8, + 0xcd, 0xf8, 0xcc, 0xf8, 0xfb, 0xf8, 0xf9, 0xf8, 0x34, 0xf9, 0x31, 0xf9, + 0x73, 0xf9, 0x73, 0xf9, 0xbb, 0xf9, 0xb9, 0xf9, 0x0d, 0xfa, 0x0c, 0xfa, + 0x66, 0xfa, 0x64, 0xfa, 0xc7, 0xfa, 0xc4, 0xfa, 0x30, 0xfb, 0x2f, 0xfb, + 0x9b, 0xfb, 0x99, 0xfb, 0x11, 0xfc, 0x0e, 0xfc, 0x88, 0xfc, 0x86, 0xfc, + 0x07, 0xfd, 0x04, 0xfd, 0x8a, 0xfd, 0x88, 0xfd, 0x0c, 0xfe, 0x0a, 0xfe, + 0x95, 0xfe, 0x94, 0xfe, 0x1f, 0xff, 0x1e, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0x35, 0x00, 0x36, 0x00, 0xc2, 0x00, 0xc1, 0x00, 0x4e, 0x01, 0x4e, 0x01, + 0xd9, 0x01, 0xd7, 0x01, 0x60, 0x02, 0x60, 0x02, 0xe9, 0x02, 0xe8, 0x02, + 0x6b, 0x03, 0x6a, 0x03, 0xea, 0x03, 0xec, 0x03, 0x69, 0x04, 0x65, 0x04, + 0xde, 0x04, 0xdf, 0x04, 0x51, 0x05, 0x50, 0x05, 0xbd, 0x05, 0xbb, 0x05, + 0x23, 0x06, 0x24, 0x06, 0x80, 0x06, 0x7f, 0x06, 0xda, 0x06, 0xd6, 0x06, + 0x28, 0x07, 0x29, 0x07, 0x70, 0x07, 0x6e, 0x07, 0xb1, 0x07, 0xb1, 0x07, + 0xe6, 0x07, 0xe6, 0x07, 0x18, 0x08, 0x14, 0x08, 0x38, 0x08, 0x38, 0x08, + 0x54, 0x08, 0x52, 0x08, 0x66, 0x08, 0x66, 0x08, 0x6b, 0x08, 0x6a, 0x08, + 0x6d, 0x08, 0x6b, 0x08, 0x5e, 0x08, 0x5d, 0x08, 0x48, 0x08, 0x48, 0x08, + 0x28, 0x08, 0x26, 0x08, 0xff, 0x07, 0xff, 0x07, 0xcc, 0x07, 0xca, 0x07, + 0x8f, 0x07, 0x8d, 0x07, 0x4b, 0x07, 0x4a, 0x07, 0xfc, 0x06, 0xf9, 0x06, + 0xa7, 0x06, 0xa7, 0x06, 0x49, 0x06, 0x46, 0x06, 0xe2, 0x05, 0xe2, 0x05, + 0x79, 0x05, 0x77, 0x05, 0x05, 0x05, 0x04, 0x05, 0x90, 0x04, 0x8f, 0x04, + 0x12, 0x04, 0x10, 0x04, 0x91, 0x03, 0x90, 0x03, 0x0c, 0x03, 0x0c, 0x03, + 0x82, 0x02, 0x80, 0x02, 0xf8, 0x01, 0xf6, 0x01, 0x6b, 0x01, 0x68, 0x01, + 0xdb, 0x00, 0xdb, 0x00, 0x4e, 0x00, 0x4b, 0x00, 0xbc, 0xff, 0xbc, 0xff, + 0x2f, 0xff, 0x2d, 0xff, 0xa1, 0xfe, 0xa0, 0xfe, 0x16, 0xfe, 0x14, 0xfe, + 0x8c, 0xfd, 0x8c, 0xfd, 0x07, 0xfd, 0x03, 0xfd, 0x85, 0xfc, 0x84, 0xfc, + 0x05, 0xfc, 0x03, 0xfc, 0x8a, 0xfb, 0x88, 0xfb, 0x18, 0xfb, 0x17, 0xfb, + 0xa8, 0xfa, 0xa6, 0xfa, 0x41, 0xfa, 0x3f, 0xfa, 0xdf, 0xf9, 0xdf, 0xf9, + 0x84, 0xf9, 0x81, 0xf9, 0x34, 0xf9, 0x33, 0xf9, 0xe8, 0xf8, 0xe5, 0xf8, + 0xa8, 0xf8, 0xa7, 0xf8, 0x6d, 0xf8, 0x6c, 0xf8, 0x3d, 0xf8, 0x39, 0xf8, + 0x15, 0xf8, 0x15, 0xf8, 0xf9, 0xf7, 0xf6, 0xf7, 0xe4, 0xf7, 0xe6, 0xf7, + 0xdc, 0xf7, 0xda, 0xf7, 0xdb, 0xf7, 0xd9, 0xf7, 0xe5, 0xf7, 0xe3, 0xf7, + 0xfb, 0xf7, 0xf8, 0xf7, 0x16, 0xf8, 0x16, 0xf8, 0x41, 0xf8, 0x3f, 0xf8, + 0x6f, 0xf8, 0x6e, 0xf8, 0xab, 0xf8, 0xab, 0xf8, 0xef, 0xf8, 0xee, 0xf8, + 0x3b, 0xf9, 0x39, 0xf9, 0x8f, 0xf9, 0x8f, 0xf9, 0xe9, 0xf9, 0xe7, 0xf9, + 0x4f, 0xfa, 0x4f, 0xfa, 0xb8, 0xfa, 0xb8, 0xfa, 0x2b, 0xfb, 0x28, 0xfb, + 0x9f, 0xfb, 0x9f, 0xfb, 0x19, 0xfc, 0x18, 0xfc, 0x9a, 0xfc, 0x9b, 0xfc, + 0x1d, 0xfd, 0x1a, 0xfd, 0xa4, 0xfd, 0xa4, 0xfd, 0x2b, 0xfe, 0x2a, 0xfe, + 0xb5, 0xfe, 0xb6, 0xfe, 0x43, 0xff, 0x45, 0xff, 0xcf, 0xff, 0xcd, 0xff, + 0x5b, 0x00, 0x5d, 0x00, 0xe7, 0x00, 0xe6, 0x00, 0x70, 0x01, 0x70, 0x01, + 0xfb, 0x01, 0xfc, 0x01, 0x7e, 0x02, 0x7e, 0x02, 0x04, 0x03, 0x03, 0x03, + 0x81, 0x03, 0x82, 0x03, 0xfd, 0x03, 0xfb, 0x03, 0x71, 0x04, 0x74, 0x04, + 0xe2, 0x04, 0xe1, 0x04, 0x4c, 0x05, 0x4c, 0x05, 0xb1, 0x05, 0xb0, 0x05, + 0x0b, 0x06, 0x0b, 0x06, 0x64, 0x06, 0x63, 0x06, 0xb0, 0x06, 0xb1, 0x06, + 0xf6, 0x06, 0xf5, 0x06, 0x33, 0x07, 0x33, 0x07, 0x66, 0x07, 0x65, 0x07, + 0x93, 0x07, 0x92, 0x07, 0xb1, 0x07, 0xb2, 0x07, 0xce, 0x07, 0xcc, 0x07, + 0xda, 0x07, 0xdb, 0x07, 0xdf, 0x07, 0xde, 0x07, 0xd7, 0x07, 0xda, 0x07, + 0xcc, 0x07, 0xca, 0x07, 0xb2, 0x07, 0xb2, 0x07, 0x90, 0x07, 0x90, 0x07, + 0x63, 0x07, 0x63, 0x07, 0x2e, 0x07, 0x2f, 0x07, 0xee, 0x06, 0xed, 0x06, + 0xa7, 0x06, 0xa6, 0x06, 0x54, 0x06, 0x54, 0x06, 0xfd, 0x05, 0xfc, 0x05, + 0x99, 0x05, 0x9b, 0x05, 0x32, 0x05, 0x32, 0x05, 0xc3, 0x04, 0xc3, 0x04, + 0x4e, 0x04, 0x4f, 0x04, 0xd2, 0x03, 0xd1, 0x03, 0x52, 0x03, 0x52, 0x03, + 0xcc, 0x02, 0xce, 0x02, 0x47, 0x02, 0x45, 0x02, 0xba, 0x01, 0xbc, 0x01, + 0x2e, 0x01, 0x2d, 0x01, 0x9c, 0x00, 0x9d, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x7a, 0xff, 0x79, 0xff, 0xe8, 0xfe, 0xe8, 0xfe, 0x58, 0xfe, 0x58, 0xfe, + 0xc9, 0xfd, 0xc6, 0xfd, 0x3b, 0xfd, 0x3d, 0xfd, 0xb0, 0xfc, 0xae, 0xfc, + 0x29, 0xfc, 0x2b, 0xfc, 0xa5, 0xfb, 0xa6, 0xfb, 0x28, 0xfb, 0x27, 0xfb, + 0xad, 0xfa, 0xad, 0xfa, 0x3b, 0xfa, 0x3a, 0xfa, 0xcb, 0xf9, 0xcd, 0xf9, + 0x67, 0xf9, 0x67, 0xf9, 0x06, 0xf9, 0x05, 0xf9, 0xb0, 0xf8, 0xb0, 0xf8, + 0x5f, 0xf8, 0x5f, 0xf8, 0x18, 0xf8, 0x19, 0xf8, 0xdb, 0xf7, 0xda, 0xf7, + 0xa3, 0xf7, 0xa4, 0xf7, 0x79, 0xf7, 0x79, 0xf7, 0x56, 0xf7, 0x57, 0xf7, + 0x3e, 0xf7, 0x3d, 0xf7, 0x2f, 0xf7, 0x31, 0xf7, 0x2c, 0xf7, 0x2a, 0xf7, + 0x32, 0xf7, 0x34, 0xf7, 0x45, 0xf7, 0x42, 0xf7, 0x5e, 0xf7, 0x60, 0xf7, + 0x84, 0xf7, 0x82, 0xf7, 0xb2, 0xf7, 0xb5, 0xf7, 0xec, 0xf7, 0xea, 0xf7, + 0x2e, 0xf8, 0x2d, 0xf8, 0x78, 0xf8, 0x7a, 0xf8, 0xcb, 0xf8, 0xcb, 0xf8, + 0x27, 0xf9, 0x28, 0xf9, 0x8a, 0xf9, 0x8a, 0xf9, 0xf4, 0xf9, 0xf4, 0xf9, + 0x67, 0xfa, 0x67, 0xfa, 0xdd, 0xfa, 0xdd, 0xfa, 0x5a, 0xfb, 0x5c, 0xfb, + 0xdc, 0xfb, 0xdd, 0xfb, 0x63, 0xfc, 0x62, 0xfc, 0xed, 0xfc, 0xee, 0xfc, + 0x78, 0xfd, 0x78, 0xfd, 0x0c, 0xfe, 0x0b, 0xfe, 0x99, 0xfe, 0x99, 0xfe, + 0x2f, 0xff, 0x2e, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0x52, 0x00, 0x51, 0x00, + 0xe3, 0x00, 0xe4, 0x00, 0x72, 0x01, 0x71, 0x01, 0x02, 0x02, 0x01, 0x02, + 0x8d, 0x02, 0x8c, 0x02, 0x13, 0x03, 0x13, 0x03, 0x99, 0x03, 0x98, 0x03, + 0x16, 0x04, 0x16, 0x04, 0x92, 0x04, 0x91, 0x04, 0x04, 0x05, 0x03, 0x05, + 0x71, 0x05, 0x71, 0x05, 0xda, 0x05, 0xd7, 0x05, 0x38, 0x06, 0x38, 0x06, + 0x92, 0x06, 0x91, 0x06, 0xe2, 0x06, 0xe2, 0x06, 0x2b, 0x07, 0x2a, 0x07, + 0x6b, 0x07, 0x6a, 0x07, 0x9f, 0x07, 0x9f, 0x07, 0xcc, 0x07, 0xcc, 0x07, + 0xf0, 0x07, 0xef, 0x07, 0x08, 0x08, 0x08, 0x08, 0x16, 0x08, 0x16, 0x08, + 0x1e, 0x08, 0x1d, 0x08, 0x17, 0x08, 0x18, 0x08, 0x0a, 0x08, 0x0a, 0x08, + 0xf0, 0x07, 0xef, 0x07, 0xcb, 0x07, 0xcb, 0x07, 0xa0, 0x07, 0x9f, 0x07, + 0x67, 0x07, 0x65, 0x07, 0x25, 0x07, 0x27, 0x07, 0xdd, 0x06, 0xda, 0x06, + 0x88, 0x06, 0x88, 0x06, 0x2d, 0x06, 0x2d, 0x06, 0xcb, 0x05, 0xc9, 0x05, + 0x5d, 0x05, 0x5e, 0x05, 0xef, 0x04, 0xec, 0x04, 0x75, 0x04, 0x75, 0x04, + 0xf8, 0x03, 0xf7, 0x03, 0x77, 0x03, 0x75, 0x03, 0xef, 0x02, 0xf0, 0x02, + 0x66, 0x02, 0x63, 0x02, 0xd8, 0x01, 0xd8, 0x01, 0x47, 0x01, 0x46, 0x01, + 0xb8, 0x00, 0xb8, 0x00, 0x26, 0x00, 0x24, 0x00, 0x90, 0xff, 0x8f, 0xff, + 0x00, 0xff, 0xff, 0xfe, 0x6d, 0xfe, 0x6c, 0xfe, 0xdf, 0xfd, 0xde, 0xfd, + 0x50, 0xfd, 0x50, 0xfd, 0xc7, 0xfc, 0xc7, 0xfc, 0x40, 0xfc, 0x3f, 0xfc, + 0xbd, 0xfb, 0xbd, 0xfb, 0x40, 0xfb, 0x3e, 0xfb, 0xc6, 0xfa, 0xc6, 0xfa, + 0x54, 0xfa, 0x54, 0xfa, 0xe8, 0xf9, 0xe7, 0xf9, 0x85, 0xf9, 0x84, 0xf9, + 0x27, 0xf9, 0x27, 0xf9, 0xd1, 0xf8, 0xd0, 0xf8, 0x83, 0xf8, 0x83, 0xf8, + 0x40, 0xf8, 0x41, 0xf8, 0x04, 0xf8, 0x01, 0xf8, 0xd2, 0xf7, 0xd3, 0xf7, + 0xaa, 0xf7, 0xa7, 0xf7, 0x8a, 0xf7, 0x8c, 0xf7, 0x75, 0xf7, 0x75, 0xf7, + 0x6d, 0xf7, 0x6c, 0xf7, 0x69, 0xf7, 0x6c, 0xf7, 0x77, 0xf7, 0x75, 0xf7, + 0x89, 0xf7, 0x8b, 0xf7, 0xab, 0xf7, 0xaa, 0xf7, 0xd3, 0xf7, 0xd2, 0xf7, + 0x07, 0xf8, 0x09, 0xf8, 0x46, 0xf8, 0x42, 0xf8, 0x8b, 0xf8, 0x8d, 0xf8, + 0xd9, 0xf8, 0xd9, 0xf8, 0x35, 0xf9, 0x35, 0xf9, 0x96, 0xf9, 0x96, 0xf9, + 0xfe, 0xf9, 0xfe, 0xf9, 0x70, 0xfa, 0x6f, 0xfa, 0xe8, 0xfa, 0xe7, 0xfa, + 0x67, 0xfb, 0x66, 0xfb, 0xe8, 0xfb, 0xe9, 0xfb, 0x72, 0xfc, 0x71, 0xfc, + 0xfd, 0xfc, 0xfe, 0xfc, 0x8d, 0xfd, 0x8e, 0xfd, 0x22, 0xfe, 0x20, 0xfe, + 0xb6, 0xfe, 0xba, 0xfe, 0x50, 0xff, 0x4f, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0x7e, 0x00, 0x7f, 0x00, 0x19, 0x01, 0x18, 0x01, 0xac, 0x01, 0xae, 0x01, + 0x45, 0x02, 0x45, 0x02, 0xd6, 0x02, 0xd7, 0x02, 0x68, 0x03, 0x69, 0x03, + 0xf4, 0x03, 0xf3, 0x03, 0x7c, 0x04, 0x7b, 0x04, 0x01, 0x05, 0x00, 0x05, + 0x7b, 0x05, 0x7d, 0x05, 0xf6, 0x05, 0xf4, 0x05, 0x65, 0x06, 0x66, 0x06, + 0xce, 0x06, 0xcc, 0x06, 0x32, 0x07, 0x34, 0x07, 0x89, 0x07, 0x89, 0x07, + 0xdd, 0x07, 0xdd, 0x07, 0x23, 0x08, 0x24, 0x08, 0x63, 0x08, 0x61, 0x08, + 0x99, 0x08, 0x9b, 0x08, 0xc5, 0x08, 0xc3, 0x08, 0xe7, 0x08, 0xe7, 0x08, + 0xfd, 0x08, 0xff, 0x08, 0x0c, 0x09, 0x08, 0x09, 0x0b, 0x09, 0x0e, 0x09, + 0x06, 0x09, 0x05, 0x09, 0xf0, 0x08, 0xf0, 0x08, 0xd3, 0x08, 0xd3, 0x08, + 0xaa, 0x08, 0xaa, 0x08, 0x78, 0x08, 0x76, 0x08, 0x39, 0x08, 0x3c, 0x08, + 0xf3, 0x07, 0xf2, 0x07, 0xa1, 0x07, 0xa3, 0x07, 0x4a, 0x07, 0x4b, 0x07, + 0xea, 0x06, 0xe7, 0x06, 0x7f, 0x06, 0x81, 0x06, 0x10, 0x06, 0x11, 0x06, + 0x9a, 0x05, 0x9a, 0x05, 0x1b, 0x05, 0x1e, 0x05, 0x9a, 0x04, 0x9a, 0x04, + 0x12, 0x04, 0x12, 0x04, 0x85, 0x03, 0x87, 0x03, 0xf8, 0x02, 0xf6, 0x02, + 0x61, 0x02, 0x63, 0x02, 0xce, 0x01, 0xce, 0x01, 0x37, 0x01, 0x37, 0x01, + 0xa0, 0x00, 0x9f, 0x00, 0x09, 0x00, 0x08, 0x00, 0x72, 0xff, 0x73, 0xff, + 0xdd, 0xfe, 0xdd, 0xfe, 0x48, 0xfe, 0x48, 0xfe, 0xb5, 0xfd, 0xb7, 0xfd, + 0x2a, 0xfd, 0x29, 0xfd, 0x9e, 0xfc, 0x9e, 0xfc, 0x18, 0xfc, 0x19, 0xfc, + 0x97, 0xfb, 0x96, 0xfb, 0x1a, 0xfb, 0x1b, 0xfb, 0xa7, 0xfa, 0xa7, 0xfa, + 0x36, 0xfa, 0x37, 0xfa, 0xd1, 0xf9, 0xd0, 0xf9, 0x6e, 0xf9, 0x6f, 0xf9, + 0x17, 0xf9, 0x17, 0xf9, 0xc8, 0xf8, 0xc8, 0xf8, 0x81, 0xf8, 0x82, 0xf8, + 0x46, 0xf8, 0x45, 0xf8, 0x0e, 0xf8, 0x10, 0xf8, 0xe6, 0xf7, 0xe7, 0xf7, + 0xc6, 0xf7, 0xc5, 0xf7, 0xb0, 0xf7, 0xb2, 0xf7, 0xa7, 0xf7, 0xa4, 0xf7, + 0xa3, 0xf7, 0xa6, 0xf7, 0xb0, 0xf7, 0xb0, 0xf7, 0xc3, 0xf7, 0xc1, 0xf7, + 0xe1, 0xf7, 0xe3, 0xf7, 0x0c, 0xf8, 0x09, 0xf8, 0x3b, 0xf8, 0x3d, 0xf8, + 0x7e, 0xf8, 0x7c, 0xf8, 0xc4, 0xf8, 0xc3, 0xf8, 0x14, 0xf9, 0x13, 0xf9, + 0x71, 0xf9, 0x72, 0xf9, 0xd3, 0xf9, 0xd2, 0xf9, 0x3e, 0xfa, 0x3e, 0xfa, + 0xb0, 0xfa, 0xb1, 0xfa, 0x2a, 0xfb, 0x2a, 0xfb, 0xab, 0xfb, 0xab, 0xfb, + 0x2e, 0xfc, 0x31, 0xfc, 0xbd, 0xfc, 0xbb, 0xfc, 0x49, 0xfd, 0x4a, 0xfd, + 0xde, 0xfd, 0xde, 0xfd, 0x73, 0xfe, 0x73, 0xfe, 0x0a, 0xff, 0x0b, 0xff, + 0xa7, 0xff, 0xa7, 0xff, 0x3c, 0x00, 0x3d, 0x00, 0xdc, 0x00, 0xde, 0x00, + 0x74, 0x01, 0x72, 0x01, 0x0c, 0x02, 0x0e, 0x02, 0xa6, 0x02, 0xa6, 0x02, + 0x38, 0x03, 0x39, 0x03, 0xcb, 0x03, 0xcb, 0x03, 0x54, 0x04, 0x56, 0x04, + 0xdf, 0x04, 0xdf, 0x04, 0x61, 0x05, 0x63, 0x05, 0xe1, 0x05, 0xe0, 0x05, + 0x58, 0x06, 0x5a, 0x06, 0xc6, 0x06, 0xc7, 0x06, 0x30, 0x07, 0x31, 0x07, + 0x91, 0x07, 0x92, 0x07, 0xe8, 0x07, 0xea, 0x07, 0x39, 0x08, 0x39, 0x08, + 0x7e, 0x08, 0x7f, 0x08, 0xbc, 0x08, 0xbd, 0x08, 0xee, 0x08, 0xef, 0x08, + 0x14, 0x09, 0x16, 0x09, 0x33, 0x09, 0x33, 0x09, 0x46, 0x09, 0x48, 0x09, + 0x4f, 0x09, 0x4f, 0x09, 0x4c, 0x09, 0x4e, 0x09, 0x3f, 0x09, 0x3f, 0x09, + 0x26, 0x09, 0x27, 0x09, 0x03, 0x09, 0x03, 0x09, 0xd3, 0x08, 0xd4, 0x08, + 0x9b, 0x08, 0x9b, 0x08, 0x58, 0x08, 0x59, 0x08, 0x0b, 0x08, 0x0c, 0x08, + 0xb5, 0x07, 0xb5, 0x07, 0x53, 0x07, 0x55, 0x07, 0xed, 0x06, 0xed, 0x06, + 0x7c, 0x06, 0x7e, 0x06, 0x05, 0x06, 0x05, 0x06, 0x87, 0x05, 0x89, 0x05, + 0x01, 0x05, 0x01, 0x05, 0x77, 0x04, 0x7a, 0x04, 0xe7, 0x03, 0xe8, 0x03, + 0x52, 0x03, 0x53, 0x03, 0xbd, 0x02, 0xbf, 0x02, 0x21, 0x02, 0x21, 0x02, + 0x85, 0x01, 0x87, 0x01, 0xe8, 0x00, 0xe9, 0x00, 0x47, 0x00, 0x48, 0x00, + 0xaa, 0xff, 0xac, 0xff, 0x0b, 0xff, 0x0c, 0xff, 0x6d, 0xfe, 0x6f, 0xfe, + 0xd5, 0xfd, 0xd5, 0xfd, 0x38, 0xfd, 0x3a, 0xfd, 0xa6, 0xfc, 0xa7, 0xfc, + 0x16, 0xfc, 0x16, 0xfc, 0x86, 0xfb, 0x88, 0xfb, 0x02, 0xfb, 0x02, 0xfb, + 0x7c, 0xfa, 0x7e, 0xfa, 0x04, 0xfa, 0x04, 0xfa, 0x8e, 0xf9, 0x90, 0xf9, + 0x24, 0xf9, 0x23, 0xf9, 0xbe, 0xf8, 0xc1, 0xf8, 0x64, 0xf8, 0x64, 0xf8, + 0x0f, 0xf8, 0x10, 0xf8, 0xc7, 0xf7, 0xc9, 0xf7, 0x87, 0xf7, 0x89, 0xf7, + 0x51, 0xf7, 0x50, 0xf7, 0x26, 0xf7, 0x28, 0xf7, 0x03, 0xf7, 0x03, 0xf7, + 0xef, 0xf6, 0xef, 0xf6, 0xe5, 0xf6, 0xe4, 0xf6, 0xe1, 0xf6, 0xe3, 0xf6, + 0xef, 0xf6, 0xee, 0xf6, 0x02, 0xf7, 0x04, 0xf7, 0x25, 0xf7, 0x27, 0xf7, + 0x51, 0xf7, 0x53, 0xf7, 0x86, 0xf7, 0x88, 0xf7, 0xcc, 0xf7, 0xcc, 0xf7, + 0x14, 0xf8, 0x16, 0xf8, 0x6d, 0xf8, 0x6d, 0xf8, 0xcb, 0xf8, 0xcc, 0xf8, + 0x33, 0xf9, 0x32, 0xf9, 0xa3, 0xf9, 0xa3, 0xf9, 0x19, 0xfa, 0x18, 0xfa, + 0x97, 0xfa, 0x99, 0xfa, 0x1a, 0xfb, 0x1a, 0xfb, 0xa6, 0xfb, 0xa8, 0xfb, + 0x34, 0xfc, 0x34, 0xfc, 0xc8, 0xfc, 0xca, 0xfc, 0x60, 0xfd, 0x60, 0xfd, + 0xf8, 0xfd, 0xfa, 0xfd, 0x97, 0xfe, 0x98, 0xfe, 0x33, 0xff, 0x33, 0xff, + 0xd3, 0xff, 0xd4, 0xff, 0x70, 0x00, 0x6f, 0x00, 0x0d, 0x01, 0x0e, 0x01, + 0xa8, 0x01, 0xa8, 0x01, 0x44, 0x02, 0x44, 0x02, 0xda, 0x02, 0xd9, 0x02, + 0x6f, 0x03, 0x6e, 0x03, 0xfc, 0x03, 0xfc, 0x03, 0x87, 0x04, 0x86, 0x04, + 0x0a, 0x05, 0x0c, 0x05, 0x8c, 0x05, 0x89, 0x05, 0x01, 0x06, 0x01, 0x06, + 0x73, 0x06, 0x73, 0x06, 0xde, 0x06, 0xdd, 0x06, 0x3e, 0x07, 0x3e, 0x07, + 0x95, 0x07, 0x96, 0x07, 0xe5, 0x07, 0xe6, 0x07, 0x2b, 0x08, 0x2a, 0x08, + 0x66, 0x08, 0x68, 0x08, 0x98, 0x08, 0x97, 0x08, 0xc0, 0x08, 0xc2, 0x08, + 0xdc, 0x08, 0xdc, 0x08, 0xed, 0x08, 0xef, 0x08, 0xf5, 0x08, 0xf3, 0x08, + 0xee, 0x08, 0xf2, 0x08, 0xe2, 0x08, 0xe1, 0x08, 0xc3, 0x08, 0xc4, 0x08, + 0xa0, 0x08, 0xa2, 0x08, 0x6c, 0x08, 0x6d, 0x08, 0x33, 0x08, 0x34, 0x08, + 0xe9, 0x07, 0xea, 0x07, 0x9b, 0x07, 0x9b, 0x07, 0x40, 0x07, 0x41, 0x07, + 0xda, 0x06, 0xda, 0x06, 0x6e, 0x06, 0x70, 0x06, 0xf7, 0x05, 0xf8, 0x05, + 0x7d, 0x05, 0x7d, 0x05, 0xf7, 0x04, 0xf8, 0x04, 0x6d, 0x04, 0x6c, 0x04, + 0xde, 0x03, 0xdd, 0x03, 0x48, 0x03, 0x49, 0x03, 0xae, 0x02, 0xab, 0x02, + 0x11, 0x02, 0x15, 0x02, 0x6e, 0x01, 0x6d, 0x01, 0xce, 0x00, 0xcf, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x85, 0xff, 0x85, 0xff, 0xe2, 0xfe, 0xe1, 0xfe, + 0x3b, 0xfe, 0x3e, 0xfe, 0x9d, 0xfd, 0x9c, 0xfd, 0xfb, 0xfc, 0xfe, 0xfc, + 0x64, 0xfc, 0x66, 0xfc, 0xce, 0xfb, 0xcd, 0xfb, 0x39, 0xfb, 0x3a, 0xfb, + 0xac, 0xfa, 0xac, 0xfa, 0x22, 0xfa, 0x23, 0xfa, 0xa0, 0xf9, 0xa1, 0xf9, + 0x24, 0xf9, 0x26, 0xf9, 0xb0, 0xf8, 0xb0, 0xf8, 0x46, 0xf8, 0x48, 0xf8, + 0xe3, 0xf7, 0xe3, 0xf7, 0x86, 0xf7, 0x89, 0xf7, 0x3a, 0xf7, 0x39, 0xf7, + 0xf0, 0xf6, 0xf0, 0xf6, 0xb4, 0xf6, 0xb4, 0xf6, 0x81, 0xf6, 0x83, 0xf6, + 0x58, 0xf6, 0x58, 0xf6, 0x3d, 0xf6, 0x3f, 0xf6, 0x2b, 0xf6, 0x2c, 0xf6, + 0x27, 0xf6, 0x28, 0xf6, 0x2e, 0xf6, 0x2f, 0xf6, 0x41, 0xf6, 0x41, 0xf6, + 0x5d, 0xf6, 0x5e, 0xf6, 0x86, 0xf6, 0x8a, 0xf6, 0xbd, 0xf6, 0xbc, 0xf6, + 0xfa, 0xf6, 0xfd, 0xf6, 0x45, 0xf7, 0x46, 0xf7, 0x98, 0xf7, 0x9b, 0xf7, + 0xf4, 0xf7, 0xf5, 0xf7, 0x5f, 0xf8, 0x5f, 0xf8, 0xcc, 0xf8, 0xce, 0xf8, + 0x45, 0xf9, 0x47, 0xf9, 0xc6, 0xf9, 0xc6, 0xf9, 0x4a, 0xfa, 0x4c, 0xfa, + 0xd9, 0xfa, 0xd8, 0xfa, 0x6b, 0xfb, 0x6d, 0xfb, 0x02, 0xfc, 0x04, 0xfc, + 0x9e, 0xfc, 0x9e, 0xfc, 0x3c, 0xfd, 0x3e, 0xfd, 0xde, 0xfd, 0xdd, 0xfd, + 0x82, 0xfe, 0x83, 0xfe, 0x27, 0xff, 0x27, 0xff, 0xca, 0xff, 0xcc, 0xff, + 0x71, 0x00, 0x71, 0x00, 0x13, 0x01, 0x14, 0x01, 0xb6, 0x01, 0xb8, 0x01, + 0x51, 0x02, 0x53, 0x02, 0xed, 0x02, 0xec, 0x02, 0x82, 0x03, 0x83, 0x03, + 0x15, 0x04, 0x15, 0x04, 0xa3, 0x04, 0xa5, 0x04, 0x2b, 0x05, 0x2b, 0x05, + 0xae, 0x05, 0xad, 0x05, 0x25, 0x06, 0x27, 0x06, 0x9d, 0x06, 0x9c, 0x06, + 0x03, 0x07, 0x04, 0x07, 0x6a, 0x07, 0x6a, 0x07, 0xc2, 0x07, 0xc0, 0x07, + 0x13, 0x08, 0x14, 0x08, 0x59, 0x08, 0x59, 0x08, 0x96, 0x08, 0x95, 0x08, + 0xc9, 0x08, 0xca, 0x08, 0xef, 0x08, 0xee, 0x08, 0x0a, 0x09, 0x0c, 0x09, + 0x1b, 0x09, 0x1c, 0x09, 0x1f, 0x09, 0x1f, 0x09, 0x1c, 0x09, 0x1c, 0x09, + 0x09, 0x09, 0x0a, 0x09, 0xec, 0x08, 0xee, 0x08, 0xc5, 0x08, 0xc5, 0x08, + 0x90, 0x08, 0x91, 0x08, 0x50, 0x08, 0x51, 0x08, 0x06, 0x08, 0x08, 0x08, + 0xb4, 0x07, 0xb2, 0x07, 0x53, 0x07, 0x54, 0x07, 0xec, 0x06, 0xec, 0x06, + 0x7b, 0x06, 0x7b, 0x06, 0x01, 0x06, 0x01, 0x06, 0x82, 0x05, 0x81, 0x05, + 0xf7, 0x04, 0xf9, 0x04, 0x6b, 0x04, 0x6b, 0x04, 0xd6, 0x03, 0xd7, 0x03, + 0x3e, 0x03, 0x40, 0x03, 0xa2, 0x02, 0xa2, 0x02, 0x01, 0x02, 0x01, 0x02, + 0x5d, 0x01, 0x5e, 0x01, 0xbc, 0x00, 0xbc, 0x00, 0x12, 0x00, 0x14, 0x00, + 0x70, 0xff, 0x6e, 0xff, 0xc8, 0xfe, 0xcb, 0xfe, 0x25, 0xfe, 0x26, 0xfe, + 0x85, 0xfd, 0x86, 0xfd, 0xe9, 0xfc, 0xe9, 0xfc, 0x4e, 0xfc, 0x50, 0xfc, + 0xbb, 0xfb, 0xbb, 0xfb, 0x27, 0xfb, 0x28, 0xfb, 0x9b, 0xfa, 0x9b, 0xfa, + 0x16, 0xfa, 0x17, 0xfa, 0x96, 0xf9, 0x96, 0xf9, 0x1d, 0xf9, 0x1e, 0xf9, + 0xad, 0xf8, 0xac, 0xf8, 0x44, 0xf8, 0x45, 0xf8, 0xe8, 0xf7, 0xe6, 0xf7, + 0x8e, 0xf7, 0x90, 0xf7, 0x47, 0xf7, 0x47, 0xf7, 0x01, 0xf7, 0x02, 0xf7, + 0xcc, 0xf6, 0xcd, 0xf6, 0x9e, 0xf6, 0x9f, 0xf6, 0x7b, 0xf6, 0x7d, 0xf6, + 0x68, 0xf6, 0x67, 0xf6, 0x5a, 0xf6, 0x5c, 0xf6, 0x5e, 0xf6, 0x5d, 0xf6, + 0x6a, 0xf6, 0x6a, 0xf6, 0x82, 0xf6, 0x85, 0xf6, 0xaa, 0xf6, 0xa9, 0xf6, + 0xd8, 0xf6, 0xda, 0xf6, 0x15, 0xf7, 0x15, 0xf7, 0x5c, 0xf7, 0x5c, 0xf7, + 0xae, 0xf7, 0xae, 0xf7, 0x09, 0xf8, 0x09, 0xf8, 0x6f, 0xf8, 0x70, 0xf8, + 0xdf, 0xf8, 0xe0, 0xf8, 0x56, 0xf9, 0x57, 0xf9, 0xda, 0xf9, 0xdb, 0xf9, + 0x5f, 0xfa, 0x5e, 0xfa, 0xf0, 0xfa, 0xf1, 0xfa, 0x84, 0xfb, 0x84, 0xfb, + 0x1e, 0xfc, 0x1e, 0xfc, 0xbf, 0xfc, 0xc1, 0xfc, 0x61, 0xfd, 0x60, 0xfd, + 0x07, 0xfe, 0x08, 0xfe, 0xaf, 0xfe, 0xb1, 0xfe, 0x5d, 0xff, 0x5d, 0xff, + 0x06, 0x00, 0x08, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0x5f, 0x01, 0x5f, 0x01, + 0x07, 0x02, 0x09, 0x02, 0xad, 0x02, 0xad, 0x02, 0x4d, 0x03, 0x4e, 0x03, + 0xec, 0x03, 0xec, 0x03, 0x89, 0x04, 0x8a, 0x04, 0x1d, 0x05, 0x1e, 0x05, + 0xaf, 0x05, 0xaf, 0x05, 0x3a, 0x06, 0x3b, 0x06, 0xbc, 0x06, 0xbc, 0x06, + 0x38, 0x07, 0x3a, 0x07, 0xab, 0x07, 0xab, 0x07, 0x18, 0x08, 0x18, 0x08, + 0x78, 0x08, 0x7a, 0x08, 0xd1, 0x08, 0xd2, 0x08, 0x21, 0x09, 0x21, 0x09, + 0x62, 0x09, 0x64, 0x09, 0x9d, 0x09, 0x9e, 0x09, 0xcb, 0x09, 0xcd, 0x09, + 0xeb, 0x09, 0xeb, 0x09, 0x04, 0x0a, 0x06, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a, + 0x0d, 0x0a, 0x0e, 0x0a, 0xfe, 0x09, 0xff, 0x09, 0xe3, 0x09, 0xe5, 0x09, + 0xc0, 0x09, 0xc1, 0x09, 0x8c, 0x09, 0x8d, 0x09, 0x51, 0x09, 0x51, 0x09, + 0x05, 0x09, 0x07, 0x09, 0xb2, 0x08, 0xb2, 0x08, 0x54, 0x08, 0x54, 0x08, + 0xea, 0x07, 0xec, 0x07, 0x7a, 0x07, 0x7a, 0x07, 0xff, 0x06, 0xff, 0x06, + 0x7c, 0x06, 0x80, 0x06, 0xf4, 0x05, 0xf4, 0x05, 0x62, 0x05, 0x65, 0x05, + 0xce, 0x04, 0xce, 0x04, 0x31, 0x04, 0x32, 0x04, 0x93, 0x03, 0x94, 0x03, + 0xec, 0x02, 0xed, 0x02, 0x48, 0x02, 0x4a, 0x02, 0x9f, 0x01, 0x9d, 0x01, + 0xf2, 0x00, 0xf5, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x9d, 0xff, 0x9f, 0xff, + 0xf6, 0xfe, 0xf7, 0xfe, 0x4c, 0xfe, 0x4d, 0xfe, 0xab, 0xfd, 0xac, 0xfd, + 0x0c, 0xfd, 0x0c, 0xfd, 0x6e, 0xfc, 0x70, 0xfc, 0xda, 0xfb, 0xd8, 0xfb, + 0x44, 0xfb, 0x47, 0xfb, 0xb9, 0xfa, 0xb8, 0xfa, 0x31, 0xfa, 0x31, 0xfa, + 0xb1, 0xf9, 0xb3, 0xf9, 0x3a, 0xf9, 0x39, 0xf9, 0xc8, 0xf8, 0xca, 0xf8, + 0x62, 0xf8, 0x63, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0xb0, 0xf7, 0xb3, 0xf7, + 0x65, 0xf7, 0x64, 0xf7, 0x25, 0xf7, 0x28, 0xf7, 0xf1, 0xf6, 0xf2, 0xf6, + 0xc5, 0xf6, 0xc6, 0xf6, 0xa9, 0xf6, 0xab, 0xf6, 0x92, 0xf6, 0x94, 0xf6, + 0x8e, 0xf6, 0x90, 0xf6, 0x94, 0xf6, 0x95, 0xf6, 0xa4, 0xf6, 0xa4, 0xf6, + 0xc2, 0xf6, 0xc4, 0xf6, 0xea, 0xf6, 0xec, 0xf6, 0x21, 0xf7, 0x21, 0xf7, + 0x60, 0xf7, 0x63, 0xf7, 0xaf, 0xf7, 0xaf, 0xf7, 0x04, 0xf8, 0x08, 0xf8, + 0x67, 0xf8, 0x68, 0xf8, 0xd5, 0xf8, 0xd5, 0xf8, 0x47, 0xf9, 0x4b, 0xf9, + 0xca, 0xf9, 0xc8, 0xf9, 0x4d, 0xfa, 0x50, 0xfa, 0xdf, 0xfa, 0xde, 0xfa, + 0x73, 0xfb, 0x74, 0xfb, 0x0d, 0xfc, 0x0e, 0xfc, 0xae, 0xfc, 0xaf, 0xfc, + 0x53, 0xfd, 0x54, 0xfd, 0xfb, 0xfd, 0xfb, 0xfd, 0xaa, 0xfe, 0xab, 0xfe, + 0x53, 0xff, 0x53, 0xff, 0x02, 0x00, 0x03, 0x00, 0xb6, 0x00, 0xb4, 0x00, + 0x5e, 0x01, 0x60, 0x01, 0x10, 0x02, 0x11, 0x02, 0xb7, 0x02, 0xb7, 0x02, + 0x5f, 0x03, 0x60, 0x03, 0x00, 0x04, 0x02, 0x04, 0xa0, 0x04, 0xa0, 0x04, + 0x3a, 0x05, 0x3c, 0x05, 0xcf, 0x05, 0xd1, 0x05, 0x60, 0x06, 0x5e, 0x06, + 0xe5, 0x06, 0xe8, 0x06, 0x69, 0x07, 0x68, 0x07, 0xde, 0x07, 0xdf, 0x07, + 0x4f, 0x08, 0x51, 0x08, 0xb5, 0x08, 0xb6, 0x08, 0x12, 0x09, 0x14, 0x09, + 0x67, 0x09, 0x68, 0x09, 0xad, 0x09, 0xae, 0x09, 0xeb, 0x09, 0xec, 0x09, + 0x1c, 0x0a, 0x1d, 0x0a, 0x43, 0x0a, 0x44, 0x0a, 0x5c, 0x0a, 0x5c, 0x0a, + 0x6a, 0x0a, 0x6c, 0x0a, 0x6c, 0x0a, 0x6c, 0x0a, 0x5d, 0x0a, 0x60, 0x0a, + 0x49, 0x0a, 0x49, 0x0a, 0x20, 0x0a, 0x21, 0x0a, 0xf3, 0x09, 0xf4, 0x09, + 0xb3, 0x09, 0xb4, 0x09, 0x6b, 0x09, 0x6d, 0x09, 0x16, 0x09, 0x18, 0x09, + 0xb6, 0x08, 0xb8, 0x08, 0x4f, 0x08, 0x50, 0x08, 0xd9, 0x07, 0xda, 0x07, + 0x60, 0x07, 0x60, 0x07, 0xd8, 0x06, 0xda, 0x06, 0x4d, 0x06, 0x4e, 0x06, + 0xb8, 0x05, 0xb9, 0x05, 0x1d, 0x05, 0x1f, 0x05, 0x7c, 0x04, 0x7c, 0x04, + 0xd7, 0x03, 0xd8, 0x03, 0x2e, 0x03, 0x30, 0x03, 0x80, 0x02, 0x80, 0x02, + 0xd1, 0x01, 0xd3, 0x01, 0x1f, 0x01, 0x1e, 0x01, 0x6c, 0x00, 0x6e, 0x00, + 0xba, 0xff, 0xba, 0xff, 0x09, 0xff, 0x08, 0xff, 0x57, 0xfe, 0x5a, 0xfe, + 0xab, 0xfd, 0xaa, 0xfd, 0x02, 0xfd, 0x03, 0xfd, 0x5f, 0xfc, 0x5d, 0xfc, + 0xbc, 0xfb, 0xbd, 0xfb, 0x20, 0xfb, 0x20, 0xfb, 0x89, 0xfa, 0x8a, 0xfa, + 0xf8, 0xf9, 0xf8, 0xf9, 0x6e, 0xf9, 0x6d, 0xf9, 0xea, 0xf8, 0xeb, 0xf8, + 0x72, 0xf8, 0x70, 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0x98, 0xf7, 0x98, 0xf7, + 0x3b, 0xf7, 0x3a, 0xf7, 0xe5, 0xf6, 0xe5, 0xf6, 0x9e, 0xf6, 0x9d, 0xf6, + 0x5b, 0xf6, 0x5b, 0xf6, 0x2a, 0xf6, 0x2c, 0xf6, 0x06, 0xf6, 0x03, 0xf6, + 0xe6, 0xf5, 0xe9, 0xf5, 0xdd, 0xf5, 0xdb, 0xf5, 0xd6, 0xf5, 0xd7, 0xf5, + 0xe4, 0xf5, 0xe5, 0xf5, 0xfb, 0xf5, 0xfa, 0xf5, 0x1d, 0xf6, 0x1f, 0xf6, + 0x52, 0xf6, 0x51, 0xf6, 0x8d, 0xf6, 0x8e, 0xf6, 0xd7, 0xf6, 0xd7, 0xf6, + 0x2c, 0xf7, 0x2c, 0xf7, 0x8b, 0xf7, 0x8c, 0xf7, 0xf6, 0xf7, 0xf6, 0xf7, + 0x6a, 0xf8, 0x6b, 0xf8, 0xea, 0xf8, 0xe8, 0xf8, 0x6d, 0xf9, 0x70, 0xf9, + 0xfd, 0xf9, 0xfc, 0xf9, 0x92, 0xfa, 0x94, 0xfa, 0x2e, 0xfb, 0x2d, 0xfb, + 0xce, 0xfb, 0xce, 0xfb, 0x76, 0xfc, 0x75, 0xfc, 0x1e, 0xfd, 0x1e, 0xfd, + 0xce, 0xfd, 0xce, 0xfd, 0x7c, 0xfe, 0x7c, 0xfe, 0x2c, 0xff, 0x2d, 0xff, + 0xdf, 0xff, 0xdf, 0xff, 0x8f, 0x00, 0x8f, 0x00, 0x42, 0x01, 0x43, 0x01, + 0xee, 0x01, 0xef, 0x01, 0x9a, 0x02, 0x9a, 0x02, 0x3f, 0x03, 0x3f, 0x03, + 0xe2, 0x03, 0xe2, 0x03, 0x83, 0x04, 0x83, 0x04, 0x1c, 0x05, 0x1c, 0x05, + 0xaf, 0x05, 0xaf, 0x05, 0x3d, 0x06, 0x3f, 0x06, 0xc1, 0x06, 0xc0, 0x06, + 0x41, 0x07, 0x41, 0x07, 0xb5, 0x07, 0xb5, 0x07, 0x22, 0x08, 0x22, 0x08, + 0x86, 0x08, 0x85, 0x08, 0xdd, 0x08, 0xde, 0x08, 0x2e, 0x09, 0x2d, 0x09, + 0x70, 0x09, 0x70, 0x09, 0xa9, 0x09, 0xaa, 0x09, 0xd6, 0x09, 0xd4, 0x09, + 0xf3, 0x09, 0xf6, 0x09, 0x0c, 0x0a, 0x0a, 0x0a, 0x0f, 0x0a, 0x0f, 0x0a, + 0x0f, 0x0a, 0x11, 0x0a, 0xfb, 0x09, 0xf9, 0x09, 0xe0, 0x09, 0xe0, 0x09, + 0xb3, 0x09, 0xb4, 0x09, 0x7d, 0x09, 0x7c, 0x09, 0x3b, 0x09, 0x3b, 0x09, + 0xe9, 0x08, 0xea, 0x08, 0x8f, 0x08, 0x8f, 0x08, 0x27, 0x08, 0x29, 0x08, + 0xb7, 0x07, 0xb7, 0x07, 0x3f, 0x07, 0x3d, 0x07, 0xb7, 0x06, 0xba, 0x06, + 0x2e, 0x06, 0x2d, 0x06, 0x97, 0x05, 0x9a, 0x05, 0xfe, 0x04, 0xfe, 0x04, + 0x5b, 0x04, 0x5b, 0x04, 0xb3, 0x03, 0xb6, 0x03, 0x09, 0x03, 0x09, 0x03, + 0x59, 0x02, 0x59, 0x02, 0xa6, 0x01, 0xa7, 0x01, 0xf0, 0x00, 0xf1, 0x00, + 0x3a, 0x00, 0x3a, 0x00, 0x82, 0xff, 0x82, 0xff, 0xce, 0xfe, 0xcb, 0xfe, + 0x15, 0xfe, 0x17, 0xfe, 0x61, 0xfd, 0x60, 0xfd, 0xb2, 0xfc, 0xb4, 0xfc, + 0x0a, 0xfc, 0x09, 0xfc, 0x5f, 0xfb, 0x60, 0xfb, 0xc0, 0xfa, 0xbf, 0xfa, + 0x1e, 0xfa, 0x1e, 0xfa, 0x88, 0xf9, 0x88, 0xf9, 0xf7, 0xf8, 0xf8, 0xf8, + 0x6d, 0xf8, 0x6e, 0xf8, 0xed, 0xf7, 0xed, 0xf7, 0x73, 0xf7, 0x73, 0xf7, + 0x06, 0xf7, 0x07, 0xf7, 0xa1, 0xf6, 0xa1, 0xf6, 0x47, 0xf6, 0x48, 0xf6, + 0xf8, 0xf5, 0xf8, 0xf5, 0xb5, 0xf5, 0xb5, 0xf5, 0x7e, 0xf5, 0x7e, 0xf5, + 0x4f, 0xf5, 0x50, 0xf5, 0x32, 0xf5, 0x31, 0xf5, 0x1c, 0xf5, 0x1c, 0xf5, + 0x19, 0xf5, 0x1a, 0xf5, 0x20, 0xf5, 0x20, 0xf5, 0x32, 0xf5, 0x35, 0xf5, + 0x57, 0xf5, 0x57, 0xf5, 0x84, 0xf5, 0x86, 0xf5, 0xc4, 0xf5, 0xc2, 0xf5, + 0x06, 0xf6, 0x09, 0xf6, 0x5d, 0xf6, 0x5d, 0xf6, 0xba, 0xf6, 0xbd, 0xf6, + 0x25, 0xf7, 0x25, 0xf7, 0x9a, 0xf7, 0x9c, 0xf7, 0x16, 0xf8, 0x17, 0xf8, + 0x9f, 0xf8, 0xa0, 0xf8, 0x2f, 0xf9, 0x2e, 0xf9, 0xc5, 0xf9, 0xc7, 0xf9, + 0x62, 0xfa, 0x61, 0xfa, 0x05, 0xfb, 0x06, 0xfb, 0xae, 0xfb, 0xaf, 0xfb, + 0x5a, 0xfc, 0x5a, 0xfc, 0x0c, 0xfd, 0x0c, 0xfd, 0xbd, 0xfd, 0xbf, 0xfd, + 0x75, 0xfe, 0x74, 0xfe, 0x2a, 0xff, 0x2b, 0xff, 0xe2, 0xff, 0xe2, 0xff, + 0x96, 0x00, 0x94, 0x00, 0x4b, 0x01, 0x4d, 0x01, 0xfc, 0x01, 0xfc, 0x01, + 0xac, 0x02, 0xac, 0x02, 0x54, 0x03, 0x56, 0x03, 0xfa, 0x03, 0xf8, 0x03, + 0x9e, 0x04, 0x9f, 0x04, 0x37, 0x05, 0x37, 0x05, 0xd1, 0x05, 0xd0, 0x05, + 0x5b, 0x06, 0x5a, 0x06, 0xe6, 0x06, 0xe7, 0x06, 0x63, 0x07, 0x61, 0x07, + 0xda, 0x07, 0xdb, 0x07, 0x47, 0x08, 0x45, 0x08, 0xa9, 0x08, 0xa9, 0x08, + 0x03, 0x09, 0x03, 0x09, 0x4f, 0x09, 0x4f, 0x09, 0x92, 0x09, 0x93, 0x09, + 0xca, 0x09, 0xc9, 0x09, 0xf5, 0x09, 0xf5, 0x09, 0x14, 0x0a, 0x15, 0x0a, + 0x26, 0x0a, 0x26, 0x0a, 0x2b, 0x0a, 0x2d, 0x0a, 0x23, 0x0a, 0x23, 0x0a, + 0x11, 0x0a, 0x11, 0x0a, 0xf0, 0x09, 0xef, 0x09, 0xc2, 0x09, 0xc2, 0x09, + 0x89, 0x09, 0x88, 0x09, 0x3e, 0x09, 0x3f, 0x09, 0xeb, 0x08, 0xed, 0x08, + 0x8e, 0x08, 0x8b, 0x08, 0x20, 0x08, 0x22, 0x08, 0xad, 0x07, 0xac, 0x07, + 0x30, 0x07, 0x2f, 0x07, 0xa3, 0x06, 0xa7, 0x06, 0x1b, 0x06, 0x17, 0x06, + 0x7e, 0x05, 0x7f, 0x05, 0xdf, 0x04, 0xdf, 0x04, 0x3f, 0x04, 0x3d, 0x04, + 0x90, 0x03, 0x91, 0x03, 0xe7, 0x02, 0xe6, 0x02, 0x33, 0x02, 0x32, 0x02, + 0x7f, 0x01, 0x7f, 0x01, 0xc9, 0x00, 0xca, 0x00, 0x14, 0x00, 0x12, 0x00, + 0x5b, 0xff, 0x5d, 0xff, 0xa6, 0xfe, 0xa5, 0xfe, 0xf0, 0xfd, 0xf2, 0xfd, + 0x3f, 0xfd, 0x3d, 0xfd, 0x8f, 0xfc, 0x90, 0xfc, 0xe9, 0xfb, 0xe8, 0xfb, + 0x42, 0xfb, 0x41, 0xfb, 0x9f, 0xfa, 0xa0, 0xfa, 0x08, 0xfa, 0x07, 0xfa, + 0x71, 0xf9, 0x71, 0xf9, 0xe6, 0xf8, 0xe6, 0xf8, 0x5f, 0xf8, 0x60, 0xf8, + 0xe4, 0xf7, 0xe3, 0xf7, 0x71, 0xf7, 0x71, 0xf7, 0x07, 0xf7, 0x06, 0xf7, + 0xa8, 0xf6, 0xa9, 0xf6, 0x56, 0xf6, 0x54, 0xf6, 0x0a, 0xf6, 0x0b, 0xf6, + 0xcd, 0xf5, 0xce, 0xf5, 0x9c, 0xf5, 0x9c, 0xf5, 0x74, 0xf5, 0x75, 0xf5, + 0x5d, 0xf5, 0x5c, 0xf5, 0x51, 0xf5, 0x50, 0xf5, 0x50, 0xf5, 0x50, 0xf5, + 0x60, 0xf5, 0x60, 0xf5, 0x79, 0xf5, 0x77, 0xf5, 0xa2, 0xf5, 0xa4, 0xf5, + 0xd7, 0xf5, 0xd4, 0xf5, 0x18, 0xf6, 0x19, 0xf6, 0x68, 0xf6, 0x67, 0xf6, + 0xc3, 0xf6, 0xc3, 0xf6, 0x26, 0xf7, 0x27, 0xf7, 0x98, 0xf7, 0x98, 0xf7, + 0x13, 0xf8, 0x15, 0xf8, 0x99, 0xf8, 0x98, 0xf8, 0x25, 0xf9, 0x27, 0xf9, + 0xbb, 0xf9, 0xbb, 0xf9, 0x56, 0xfa, 0x56, 0xfa, 0xfb, 0xfa, 0xfc, 0xfa, + 0xa4, 0xfb, 0xa3, 0xfb, 0x50, 0xfc, 0x51, 0xfc, 0x04, 0xfd, 0x04, 0xfd, + 0xba, 0xfd, 0xb9, 0xfd, 0x73, 0xfe, 0x74, 0xfe, 0x2d, 0xff, 0x2d, 0xff, + 0xe6, 0xff, 0xe6, 0xff, 0xa0, 0x00, 0xa2, 0x00, 0x5a, 0x01, 0x5a, 0x01, + 0x14, 0x02, 0x12, 0x02, 0xc9, 0x02, 0xca, 0x02, 0x7a, 0x03, 0x79, 0x03, + 0x2a, 0x04, 0x29, 0x04, 0xcf, 0x04, 0xcf, 0x04, 0x77, 0x05, 0x76, 0x05, + 0x12, 0x06, 0x12, 0x06, 0xaa, 0x06, 0xab, 0x06, 0x3a, 0x07, 0x39, 0x07, + 0xc1, 0x07, 0xc2, 0x07, 0x43, 0x08, 0x41, 0x08, 0xb7, 0x08, 0xb7, 0x08, + 0x22, 0x09, 0x23, 0x09, 0x84, 0x09, 0x85, 0x09, 0xdc, 0x09, 0xdb, 0x09, + 0x28, 0x0a, 0x28, 0x0a, 0x66, 0x0a, 0x66, 0x0a, 0x9a, 0x0a, 0x9a, 0x0a, + 0xc1, 0x0a, 0xc2, 0x0a, 0xdd, 0x0a, 0xdc, 0x0a, 0xe9, 0x0a, 0xe9, 0x0a, + 0xe9, 0x0a, 0xe8, 0x0a, 0xdc, 0x0a, 0xde, 0x0a, 0xc1, 0x0a, 0xc1, 0x0a, + 0x9a, 0x0a, 0x9c, 0x0a, 0x64, 0x0a, 0x63, 0x0a, 0x22, 0x0a, 0x23, 0x0a, + 0xd4, 0x09, 0xd4, 0x09, 0x79, 0x09, 0x79, 0x09, 0x13, 0x09, 0x13, 0x09, + 0xa2, 0x08, 0xa3, 0x08, 0x29, 0x08, 0x28, 0x08, 0xa3, 0x07, 0xa3, 0x07, + 0x17, 0x07, 0x18, 0x07, 0x82, 0x06, 0x83, 0x06, 0xe7, 0x05, 0xe7, 0x05, + 0x45, 0x05, 0x44, 0x05, 0x9b, 0x04, 0x9b, 0x04, 0xf0, 0x03, 0xf1, 0x03, + 0x3f, 0x03, 0x3f, 0x03, 0x8c, 0x02, 0x8d, 0x02, 0xd6, 0x01, 0xd6, 0x01, + 0x1e, 0x01, 0x20, 0x01, 0x68, 0x00, 0x68, 0x00, 0xaf, 0xff, 0xb1, 0xff, + 0xfb, 0xfe, 0xfa, 0xfe, 0x44, 0xfe, 0x48, 0xfe, 0x94, 0xfd, 0x93, 0xfd, + 0xe6, 0xfc, 0xe9, 0xfc, 0x3e, 0xfc, 0x3e, 0xfc, 0x98, 0xfb, 0x97, 0xfb, + 0xf8, 0xfa, 0xf9, 0xfa, 0x60, 0xfa, 0x61, 0xfa, 0xcb, 0xf9, 0xcc, 0xf9, + 0x43, 0xf9, 0x43, 0xf9, 0xbc, 0xf8, 0xbe, 0xf8, 0x45, 0xf8, 0x42, 0xf8, + 0xd1, 0xf7, 0xd4, 0xf7, 0x6b, 0xf7, 0x69, 0xf7, 0x0e, 0xf7, 0x0e, 0xf7, + 0xb9, 0xf6, 0xb9, 0xf6, 0x73, 0xf6, 0x72, 0xf6, 0x37, 0xf6, 0x37, 0xf6, + 0x06, 0xf6, 0x08, 0xf6, 0xe6, 0xf5, 0xe3, 0xf5, 0xcb, 0xf5, 0xcc, 0xf5, + 0xc2, 0xf5, 0xc2, 0xf5, 0xc2, 0xf5, 0xc2, 0xf5, 0xd4, 0xf5, 0xd3, 0xf5, + 0xed, 0xf5, 0xef, 0xf5, 0x18, 0xf6, 0x16, 0xf6, 0x4e, 0xf6, 0x50, 0xf6, + 0x91, 0xf6, 0x91, 0xf6, 0xe2, 0xf6, 0xe2, 0xf6, 0x3b, 0xf7, 0x3b, 0xf7, + 0xa4, 0xf7, 0xa3, 0xf7, 0x16, 0xf8, 0x16, 0xf8, 0x91, 0xf8, 0x91, 0xf8, + 0x19, 0xf9, 0x18, 0xf9, 0xa6, 0xf9, 0xa6, 0xf9, 0x3d, 0xfa, 0x3d, 0xfa, + 0xdc, 0xfa, 0xdb, 0xfa, 0x7e, 0xfb, 0x80, 0xfb, 0x2d, 0xfc, 0x2b, 0xfc, + 0xd8, 0xfc, 0xd9, 0xfc, 0x8c, 0xfd, 0x8d, 0xfd, 0x42, 0xfe, 0x43, 0xfe, + 0xfc, 0xfe, 0xfc, 0xfe, 0xb4, 0xff, 0xb3, 0xff, 0x6f, 0x00, 0x70, 0x00, + 0x28, 0x01, 0x27, 0x01, 0xe3, 0x01, 0xe3, 0x01, 0x99, 0x02, 0x98, 0x02, + 0x4d, 0x03, 0x4d, 0x03, 0xfd, 0x03, 0xff, 0x03, 0xa8, 0x04, 0xa7, 0x04, + 0x50, 0x05, 0x51, 0x05, 0xf1, 0x05, 0xf1, 0x05, 0x8d, 0x06, 0x8e, 0x06, + 0x21, 0x07, 0x20, 0x07, 0xaa, 0x07, 0xac, 0x07, 0x32, 0x08, 0x32, 0x08, + 0xaa, 0x08, 0xac, 0x08, 0x1d, 0x09, 0x1c, 0x09, 0x85, 0x09, 0x85, 0x09, + 0xe1, 0x09, 0xe2, 0x09, 0x34, 0x0a, 0x33, 0x0a, 0x78, 0x0a, 0x78, 0x0a, + 0xb4, 0x0a, 0xb3, 0x0a, 0xdf, 0x0a, 0xe0, 0x0a, 0x02, 0x0b, 0x01, 0x0b, + 0x15, 0x0b, 0x17, 0x0b, 0x1d, 0x0b, 0x1c, 0x0b, 0x16, 0x0b, 0x17, 0x0b, + 0x01, 0x0b, 0x02, 0x0b, 0xe2, 0x0a, 0xe0, 0x0a, 0xb2, 0x0a, 0xb4, 0x0a, + 0x76, 0x0a, 0x75, 0x0a, 0x2d, 0x0a, 0x2f, 0x0a, 0xd9, 0x09, 0xd8, 0x09, + 0x78, 0x09, 0x77, 0x09, 0x0d, 0x09, 0x0e, 0x09, 0x96, 0x08, 0x97, 0x08, + 0x17, 0x08, 0x19, 0x08, 0x8d, 0x07, 0x8b, 0x07, 0xfb, 0x06, 0xfe, 0x06, + 0x62, 0x06, 0x60, 0x06, 0xc2, 0x05, 0xc3, 0x05, 0x19, 0x05, 0x19, 0x05, + 0x6e, 0x04, 0x6d, 0x04, 0xbd, 0x03, 0xbe, 0x03, 0x05, 0x03, 0x05, 0x03, + 0x52, 0x02, 0x52, 0x02, 0x94, 0x01, 0x94, 0x01, 0xdb, 0x00, 0xdc, 0x00, + 0x1f, 0x00, 0x1f, 0x00, 0x64, 0xff, 0x65, 0xff, 0xae, 0xfe, 0xad, 0xfe, + 0xf3, 0xfd, 0xf5, 0xfd, 0x40, 0xfd, 0x3e, 0xfd, 0x91, 0xfc, 0x91, 0xfc, + 0xe4, 0xfb, 0xe4, 0xfb, 0x3c, 0xfb, 0x3c, 0xfb, 0x9c, 0xfa, 0x9b, 0xfa, + 0xfe, 0xf9, 0xfe, 0xf9, 0x6a, 0xf9, 0x6a, 0xf9, 0xdc, 0xf8, 0xdc, 0xf8, + 0x57, 0xf8, 0x58, 0xf8, 0xdc, 0xf7, 0xdc, 0xf7, 0x69, 0xf7, 0x68, 0xf7, + 0x00, 0xf7, 0x01, 0xf7, 0xa1, 0xf6, 0xa1, 0xf6, 0x50, 0xf6, 0x52, 0xf6, + 0x07, 0xf6, 0x05, 0xf6, 0xcc, 0xf5, 0xcd, 0xf5, 0x9b, 0xf5, 0x9c, 0xf5, + 0x78, 0xf5, 0x76, 0xf5, 0x61, 0xf5, 0x62, 0xf5, 0x57, 0xf5, 0x57, 0xf5, + 0x5d, 0xf5, 0x5c, 0xf5, 0x6c, 0xf5, 0x6c, 0xf5, 0x8b, 0xf5, 0x8b, 0xf5, + 0xb7, 0xf5, 0xb9, 0xf5, 0xee, 0xf5, 0xef, 0xf5, 0x38, 0xf6, 0x38, 0xf6, + 0x87, 0xf6, 0x86, 0xf6, 0xea, 0xf6, 0xea, 0xf6, 0x4f, 0xf7, 0x4f, 0xf7, + 0xc5, 0xf7, 0xc6, 0xf7, 0x47, 0xf8, 0x44, 0xf8, 0xcc, 0xf8, 0xcc, 0xf8, + 0x5e, 0xf9, 0x5e, 0xf9, 0xf5, 0xf9, 0xf6, 0xf9, 0x95, 0xfa, 0x93, 0xfa, + 0x3a, 0xfb, 0x3b, 0xfb, 0xe5, 0xfb, 0xe3, 0xfb, 0x96, 0xfc, 0x96, 0xfc, + 0x46, 0xfd, 0x46, 0xfd, 0xff, 0xfd, 0xfe, 0xfd, 0xb6, 0xfe, 0xb5, 0xfe, + 0x6f, 0xff, 0x6f, 0xff, 0x27, 0x00, 0x27, 0x00, 0xe0, 0x00, 0xe2, 0x00, + 0x98, 0x01, 0x98, 0x01, 0x4c, 0x02, 0x4c, 0x02, 0x00, 0x03, 0x00, 0x03, + 0xac, 0x03, 0xac, 0x03, 0x56, 0x04, 0x56, 0x04, 0xf9, 0x04, 0xfa, 0x04, + 0x97, 0x05, 0x99, 0x05, 0x31, 0x06, 0x31, 0x06, 0xc2, 0x06, 0xc1, 0x06, + 0x4b, 0x07, 0x4c, 0x07, 0xca, 0x07, 0xcb, 0x07, 0x43, 0x08, 0x43, 0x08, + 0xb0, 0x08, 0xb1, 0x08, 0x15, 0x09, 0x16, 0x09, 0x70, 0x09, 0x71, 0x09, + 0xbd, 0x09, 0xbf, 0x09, 0x01, 0x0a, 0x02, 0x0a, 0x38, 0x0a, 0x39, 0x0a, + 0x63, 0x0a, 0x63, 0x0a, 0x81, 0x0a, 0x82, 0x0a, 0x91, 0x0a, 0x93, 0x0a, + 0x98, 0x0a, 0x95, 0x0a, 0x8d, 0x0a, 0x91, 0x0a, 0x7b, 0x0a, 0x79, 0x0a, + 0x57, 0x0a, 0x59, 0x0a, 0x27, 0x0a, 0x27, 0x0a, 0xeb, 0x09, 0xeb, 0x09, + 0xa0, 0x09, 0xa1, 0x09, 0x49, 0x09, 0x48, 0x09, 0xe9, 0x08, 0xea, 0x08, + 0x78, 0x08, 0x77, 0x08, 0x01, 0x08, 0x02, 0x08, 0x80, 0x07, 0x7f, 0x07, + 0xf1, 0x06, 0xf3, 0x06, 0x5f, 0x06, 0x5f, 0x06, 0xc1, 0x05, 0xc2, 0x05, + 0x1d, 0x05, 0x1e, 0x05, 0x76, 0x04, 0x77, 0x04, 0xc4, 0x03, 0xc4, 0x03, + 0x11, 0x03, 0x13, 0x03, 0x5a, 0x02, 0x59, 0x02, 0x9e, 0x01, 0xa0, 0x01, + 0xe5, 0x00, 0xe3, 0x00, 0x24, 0x00, 0x28, 0x00, 0x69, 0xff, 0x67, 0xff, + 0xaa, 0xfe, 0xad, 0xfe, 0xf0, 0xfd, 0xee, 0xfd, 0x36, 0xfd, 0x36, 0xfd, + 0x7f, 0xfc, 0x81, 0xfc, 0xcd, 0xfb, 0xcd, 0xfb, 0x21, 0xfb, 0x22, 0xfb, + 0x77, 0xfa, 0x78, 0xfa, 0xd6, 0xf9, 0xd6, 0xf9, 0x39, 0xf9, 0x3a, 0xf9, + 0xa3, 0xf8, 0xa4, 0xf8, 0x19, 0xf8, 0x1a, 0xf8, 0x91, 0xf7, 0x92, 0xf7, + 0x1a, 0xf7, 0x1b, 0xf7, 0xa6, 0xf6, 0xa6, 0xf6, 0x41, 0xf6, 0x41, 0xf6, + 0xe5, 0xf5, 0xe5, 0xf5, 0x92, 0xf5, 0x94, 0xf5, 0x52, 0xf5, 0x51, 0xf5, + 0x16, 0xf5, 0x17, 0xf5, 0xea, 0xf4, 0xea, 0xf4, 0xcc, 0xf4, 0xcc, 0xf4, + 0xb7, 0xf4, 0xb8, 0xf4, 0xb6, 0xf4, 0xb5, 0xf4, 0xbc, 0xf4, 0xbd, 0xf4, + 0xd8, 0xf4, 0xd7, 0xf4, 0xf9, 0xf4, 0xfa, 0xf4, 0x2c, 0xf5, 0x2c, 0xf5, + 0x6d, 0xf5, 0x6e, 0xf5, 0xb8, 0xf5, 0xb7, 0xf5, 0x11, 0xf6, 0x13, 0xf6, + 0x73, 0xf6, 0x74, 0xf6, 0xe4, 0xf6, 0xe4, 0xf6, 0x5e, 0xf7, 0x5d, 0xf7, + 0xe1, 0xf7, 0xe2, 0xf7, 0x6f, 0xf8, 0x6f, 0xf8, 0x03, 0xf9, 0x03, 0xf9, + 0xa1, 0xf9, 0xa3, 0xf9, 0x46, 0xfa, 0x45, 0xfa, 0xef, 0xfa, 0xf0, 0xfa, + 0x9f, 0xfb, 0x9f, 0xfb, 0x51, 0xfc, 0x51, 0xfc, 0x08, 0xfd, 0x09, 0xfd, + 0xc2, 0xfd, 0xc1, 0xfd, 0x7d, 0xfe, 0x7c, 0xfe, 0x38, 0xff, 0x38, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0xb1, 0x00, 0xb0, 0x00, 0x67, 0x01, 0x6a, 0x01, + 0x23, 0x02, 0x21, 0x02, 0xd6, 0x02, 0xd7, 0x02, 0x84, 0x03, 0x84, 0x03, + 0x30, 0x04, 0x30, 0x04, 0xd5, 0x04, 0xd5, 0x04, 0x77, 0x05, 0x78, 0x05, + 0x10, 0x06, 0x10, 0x06, 0xa3, 0x06, 0xa3, 0x06, 0x2e, 0x07, 0x2d, 0x07, + 0xb2, 0x07, 0xb0, 0x07, 0x29, 0x08, 0x2d, 0x08, 0x9b, 0x08, 0x99, 0x08, + 0xff, 0x08, 0x02, 0x09, 0x5c, 0x09, 0x5b, 0x09, 0xaa, 0x09, 0xab, 0x09, + 0xf0, 0x09, 0xf1, 0x09, 0x28, 0x0a, 0x28, 0x0a, 0x54, 0x0a, 0x55, 0x0a, + 0x74, 0x0a, 0x74, 0x0a, 0x84, 0x0a, 0x86, 0x0a, 0x8e, 0x0a, 0x8d, 0x0a, + 0x82, 0x0a, 0x84, 0x0a, 0x71, 0x0a, 0x6f, 0x0a, 0x4c, 0x0a, 0x4e, 0x0a, + 0x1d, 0x0a, 0x1e, 0x0a, 0xe1, 0x09, 0xe3, 0x09, 0x94, 0x09, 0x95, 0x09, + 0x41, 0x09, 0x43, 0x09, 0xdb, 0x08, 0xdc, 0x08, 0x6d, 0x08, 0x70, 0x08, + 0xf4, 0x07, 0xf5, 0x07, 0x70, 0x07, 0x71, 0x07, 0xe4, 0x06, 0xe4, 0x06, + 0x4d, 0x06, 0x4e, 0x06, 0xb0, 0x05, 0xb1, 0x05, 0x0c, 0x05, 0x0e, 0x05, + 0x60, 0x04, 0x62, 0x04, 0xb3, 0x03, 0xb0, 0x03, 0xfc, 0x02, 0x00, 0x03, + 0x46, 0x02, 0x44, 0x02, 0x8d, 0x01, 0x8d, 0x01, 0xcd, 0x00, 0xce, 0x00, + 0x14, 0x00, 0x12, 0x00, 0x52, 0xff, 0x55, 0xff, 0x98, 0xfe, 0x97, 0xfe, + 0xde, 0xfd, 0xdf, 0xfd, 0x24, 0xfd, 0x23, 0xfd, 0x70, 0xfc, 0x71, 0xfc, + 0xbf, 0xfb, 0xc1, 0xfb, 0x15, 0xfb, 0x15, 0xfb, 0x6f, 0xfa, 0x6f, 0xfa, + 0xcf, 0xf9, 0xcf, 0xf9, 0x33, 0xf9, 0x34, 0xf9, 0xa2, 0xf8, 0xa3, 0xf8, + 0x17, 0xf8, 0x17, 0xf8, 0x98, 0xf7, 0x97, 0xf7, 0x1f, 0xf7, 0x1f, 0xf7, + 0xb2, 0xf6, 0xb0, 0xf6, 0x4d, 0xf6, 0x4e, 0xf6, 0xf6, 0xf5, 0xf5, 0xf5, + 0xa9, 0xf5, 0xaa, 0xf5, 0x68, 0xf5, 0x68, 0xf5, 0x31, 0xf5, 0x34, 0xf5, + 0x0c, 0xf5, 0x0b, 0xf5, 0xed, 0xf4, 0xed, 0xf4, 0xe1, 0xf4, 0xe3, 0xf4, + 0xe0, 0xf4, 0xde, 0xf4, 0xed, 0xf4, 0xef, 0xf4, 0x09, 0xf5, 0x07, 0xf5, + 0x2e, 0xf5, 0x30, 0xf5, 0x68, 0xf5, 0x69, 0xf5, 0xa9, 0xf5, 0xa9, 0xf5, + 0xfd, 0xf5, 0xfc, 0xf5, 0x56, 0xf6, 0x56, 0xf6, 0xc0, 0xf6, 0xc0, 0xf6, + 0x35, 0xf7, 0x35, 0xf7, 0xb1, 0xf7, 0xb1, 0xf7, 0x3d, 0xf8, 0x3d, 0xf8, + 0xcc, 0xf8, 0xcc, 0xf8, 0x68, 0xf9, 0x69, 0xf9, 0x0b, 0xfa, 0x0a, 0xfa, + 0xb2, 0xfa, 0xb3, 0xfa, 0x63, 0xfb, 0x63, 0xfb, 0x14, 0xfc, 0x14, 0xfc, + 0xce, 0xfc, 0xcf, 0xfc, 0x89, 0xfd, 0x89, 0xfd, 0x48, 0xfe, 0x49, 0xfe, + 0x09, 0xff, 0x09, 0xff, 0xc9, 0xff, 0xcb, 0xff, 0x8b, 0x00, 0x8b, 0x00, + 0x4c, 0x01, 0x4c, 0x01, 0x0a, 0x02, 0x0a, 0x02, 0xc4, 0x02, 0xc6, 0x02, + 0x7f, 0x03, 0x7e, 0x03, 0x30, 0x04, 0x31, 0x04, 0xe0, 0x04, 0xdf, 0x04, + 0x8b, 0x05, 0x8a, 0x05, 0x2e, 0x06, 0x2e, 0x06, 0xca, 0x06, 0xcb, 0x06, + 0x62, 0x07, 0x61, 0x07, 0xed, 0x07, 0xef, 0x07, 0x73, 0x08, 0x73, 0x08, + 0xec, 0x08, 0xee, 0x08, 0x61, 0x09, 0x5f, 0x09, 0xc6, 0x09, 0xc8, 0x09, + 0x22, 0x0a, 0x22, 0x0a, 0x74, 0x0a, 0x73, 0x0a, 0xb5, 0x0a, 0xb6, 0x0a, + 0xef, 0x0a, 0xee, 0x0a, 0x17, 0x0b, 0x18, 0x0b, 0x38, 0x0b, 0x35, 0x0b, + 0x45, 0x0b, 0x47, 0x0b, 0x4b, 0x0b, 0x4a, 0x0b, 0x3d, 0x0b, 0x3e, 0x0b, + 0x27, 0x0b, 0x26, 0x0b, 0xfe, 0x0a, 0xff, 0x0a, 0xc8, 0x0a, 0xc7, 0x0a, + 0x87, 0x0a, 0x86, 0x0a, 0x35, 0x0a, 0x35, 0x0a, 0xd9, 0x09, 0xd8, 0x09, + 0x72, 0x09, 0x70, 0x09, 0xfd, 0x08, 0xfd, 0x08, 0x7d, 0x08, 0x7e, 0x08, + 0xf6, 0x07, 0xf7, 0x07, 0x64, 0x07, 0x64, 0x07, 0xcd, 0x06, 0xcd, 0x06, + 0x28, 0x06, 0x2b, 0x06, 0x82, 0x05, 0x82, 0x05, 0xd4, 0x04, 0xd5, 0x04, + 0x21, 0x04, 0x22, 0x04, 0x6b, 0x03, 0x6b, 0x03, 0xad, 0x02, 0xb1, 0x02, + 0xf4, 0x01, 0xf3, 0x01, 0x32, 0x01, 0x35, 0x01, 0x75, 0x00, 0x75, 0x00, + 0xb6, 0xff, 0xb8, 0xff, 0xfa, 0xfe, 0xfa, 0xfe, 0x40, 0xfe, 0x40, 0xfe, + 0x83, 0xfd, 0x85, 0xfd, 0xd1, 0xfc, 0xd1, 0xfc, 0x21, 0xfc, 0x24, 0xfc, + 0x75, 0xfb, 0x75, 0xfb, 0xd1, 0xfa, 0xd3, 0xfa, 0x2d, 0xfa, 0x30, 0xfa, + 0x97, 0xf9, 0x97, 0xf9, 0x02, 0xf9, 0x05, 0xf9, 0x78, 0xf8, 0x79, 0xf8, + 0xfa, 0xf7, 0xfb, 0xf7, 0x7f, 0xf7, 0x82, 0xf7, 0x16, 0xf7, 0x16, 0xf7, + 0xaf, 0xf6, 0xb3, 0xf6, 0x59, 0xf6, 0x58, 0xf6, 0x0b, 0xf6, 0x0f, 0xf6, + 0xcc, 0xf5, 0xcb, 0xf5, 0x99, 0xf5, 0x9a, 0xf5, 0x6d, 0xf5, 0x6e, 0xf5, + 0x56, 0xf5, 0x57, 0xf5, 0x45, 0xf5, 0x47, 0xf5, 0x47, 0xf5, 0x48, 0xf5, + 0x53, 0xf5, 0x55, 0xf5, 0x6f, 0xf5, 0x6f, 0xf5, 0x98, 0xf5, 0x9a, 0xf5, + 0xce, 0xf5, 0xd0, 0xf5, 0x12, 0xf6, 0x11, 0xf6, 0x62, 0xf6, 0x64, 0xf6, + 0xc1, 0xf6, 0xc2, 0xf6, 0x2c, 0xf7, 0x2d, 0xf7, 0xa0, 0xf7, 0xa1, 0xf7, + 0x22, 0xf8, 0x23, 0xf8, 0xab, 0xf8, 0xad, 0xf8, 0x40, 0xf9, 0x41, 0xf9, + 0xdd, 0xf9, 0xde, 0xf9, 0x80, 0xfa, 0x83, 0xfa, 0x2d, 0xfb, 0x2e, 0xfb, + 0xde, 0xfb, 0xdf, 0xfb, 0x94, 0xfc, 0x95, 0xfc, 0x4f, 0xfd, 0x50, 0xfd, + 0x0b, 0xfe, 0x0d, 0xfe, 0xcd, 0xfe, 0xce, 0xfe, 0x8e, 0xff, 0x91, 0xff, + 0x51, 0x00, 0x53, 0x00, 0x14, 0x01, 0x16, 0x01, 0xd6, 0x01, 0xd6, 0x01, + 0x92, 0x02, 0x95, 0x02, 0x54, 0x03, 0x52, 0x03, 0x08, 0x04, 0x0b, 0x04, + 0xbf, 0x04, 0xbf, 0x04, 0x6b, 0x05, 0x6c, 0x05, 0x16, 0x06, 0x17, 0x06, + 0xb9, 0x06, 0xba, 0x06, 0x54, 0x07, 0x56, 0x07, 0xe8, 0x07, 0xe8, 0x07, + 0x73, 0x08, 0x75, 0x08, 0xf6, 0x08, 0xf6, 0x08, 0x6d, 0x09, 0x6d, 0x09, + 0xde, 0x09, 0xe0, 0x09, 0x40, 0x0a, 0x3e, 0x0a, 0x97, 0x0a, 0x99, 0x0a, + 0xe7, 0x0a, 0xe5, 0x0a, 0x21, 0x0b, 0x21, 0x0b, 0x55, 0x0b, 0x58, 0x0b, + 0x7b, 0x0b, 0x7a, 0x0b, 0x93, 0x0b, 0x94, 0x0b, 0x9e, 0x0b, 0x9d, 0x0b, + 0x9a, 0x0b, 0x9a, 0x0b, 0x85, 0x0b, 0x86, 0x0b, 0x6a, 0x0b, 0x69, 0x0b, + 0x36, 0x0b, 0x37, 0x0b, 0xfe, 0x0a, 0xfd, 0x0a, 0xb3, 0x0a, 0xb2, 0x0a, + 0x5c, 0x0a, 0x5c, 0x0a, 0xf9, 0x09, 0xfb, 0x09, 0x88, 0x09, 0x88, 0x09, + 0x0e, 0x09, 0x0f, 0x09, 0x89, 0x08, 0x8a, 0x08, 0xfb, 0x07, 0xfa, 0x07, + 0x62, 0x07, 0x65, 0x07, 0xc3, 0x06, 0xc2, 0x06, 0x1c, 0x06, 0x1e, 0x06, + 0x6c, 0x05, 0x6c, 0x05, 0xbc, 0x04, 0xbd, 0x04, 0x00, 0x04, 0x01, 0x04, + 0x45, 0x03, 0x46, 0x03, 0x85, 0x02, 0x87, 0x02, 0xc3, 0x01, 0xc2, 0x01, + 0x03, 0x01, 0x05, 0x01, 0x3c, 0x00, 0x3a, 0x00, 0x7a, 0xff, 0x7b, 0xff, + 0xba, 0xfe, 0xba, 0xfe, 0xf8, 0xfd, 0xf9, 0xfd, 0x3c, 0xfd, 0x3e, 0xfd, + 0x84, 0xfc, 0x82, 0xfc, 0xd1, 0xfb, 0xd4, 0xfb, 0x23, 0xfb, 0x22, 0xfb, + 0x76, 0xfa, 0x78, 0xfa, 0xd6, 0xf9, 0xd6, 0xf9, 0x36, 0xf9, 0x38, 0xf9, + 0xa5, 0xf8, 0xa3, 0xf8, 0x17, 0xf8, 0x19, 0xf8, 0x96, 0xf7, 0x95, 0xf7, + 0x1c, 0xf7, 0x1c, 0xf7, 0xab, 0xf6, 0xae, 0xf6, 0x47, 0xf6, 0x47, 0xf6, + 0xef, 0xf5, 0xf1, 0xf5, 0xa2, 0xf5, 0xa3, 0xf5, 0x62, 0xf5, 0x63, 0xf5, + 0x2d, 0xf5, 0x2e, 0xf5, 0x05, 0xf5, 0x05, 0xf5, 0xed, 0xf4, 0xee, 0xf4, + 0xe0, 0xf4, 0xe0, 0xf4, 0xe2, 0xf4, 0xe2, 0xf4, 0xf2, 0xf4, 0xf3, 0xf4, + 0x0f, 0xf5, 0x0f, 0xf5, 0x3c, 0xf5, 0x3d, 0xf5, 0x76, 0xf5, 0x76, 0xf5, + 0xbe, 0xf5, 0xbe, 0xf5, 0x12, 0xf6, 0x13, 0xf6, 0x75, 0xf6, 0x75, 0xf6, + 0xe0, 0xf6, 0xe2, 0xf6, 0x5e, 0xf7, 0x5e, 0xf7, 0xdf, 0xf7, 0xe0, 0xf7, + 0x6f, 0xf8, 0x6f, 0xf8, 0x05, 0xf9, 0x05, 0xf9, 0xa5, 0xf9, 0xa5, 0xf9, + 0x4e, 0xfa, 0x4f, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xaf, 0xfb, 0xae, 0xfb, + 0x65, 0xfc, 0x65, 0xfc, 0x1e, 0xfd, 0x20, 0xfd, 0xe0, 0xfd, 0xe1, 0xfd, + 0xa1, 0xfe, 0xa1, 0xfe, 0x62, 0xff, 0x64, 0xff, 0x26, 0x00, 0x27, 0x00, + 0xe6, 0x00, 0xe7, 0x00, 0xa7, 0x01, 0xaa, 0x01, 0x65, 0x02, 0x65, 0x02, + 0x21, 0x03, 0x22, 0x03, 0xd6, 0x03, 0xd8, 0x03, 0x86, 0x04, 0x86, 0x04, + 0x34, 0x05, 0x36, 0x05, 0xda, 0x05, 0xdb, 0x05, 0x79, 0x06, 0x7a, 0x06, + 0x13, 0x07, 0x14, 0x07, 0xa4, 0x07, 0xa3, 0x07, 0x2a, 0x08, 0x2c, 0x08, + 0xab, 0x08, 0xab, 0x08, 0x20, 0x09, 0x20, 0x09, 0x88, 0x09, 0x8c, 0x09, + 0xeb, 0x09, 0xe9, 0x09, 0x3d, 0x0a, 0x3e, 0x0a, 0x85, 0x0a, 0x86, 0x0a, + 0xc2, 0x0a, 0xc1, 0x0a, 0xef, 0x0a, 0xef, 0x0a, 0x12, 0x0b, 0x13, 0x0b, + 0x26, 0x0b, 0x24, 0x0b, 0x2b, 0x0b, 0x2d, 0x0b, 0x24, 0x0b, 0x25, 0x0b, + 0x12, 0x0b, 0x12, 0x0b, 0xeb, 0x0a, 0xed, 0x0a, 0xbc, 0x0a, 0xbc, 0x0a, + 0x7d, 0x0a, 0x7e, 0x0a, 0x2f, 0x0a, 0x30, 0x0a, 0xd4, 0x09, 0xd6, 0x09, + 0x6d, 0x09, 0x6f, 0x09, 0xf9, 0x08, 0xfa, 0x08, 0x7c, 0x08, 0x7e, 0x08, + 0xf3, 0x07, 0xf2, 0x07, 0x60, 0x07, 0x62, 0x07, 0xc5, 0x06, 0xc5, 0x06, + 0x1f, 0x06, 0x1f, 0x06, 0x74, 0x05, 0x76, 0x05, 0xc1, 0x04, 0xc2, 0x04, + 0x0a, 0x04, 0x0b, 0x04, 0x4d, 0x03, 0x4e, 0x03, 0x8e, 0x02, 0x8f, 0x02, + 0xc9, 0x01, 0xca, 0x01, 0x04, 0x01, 0x05, 0x01, 0x3c, 0x00, 0x3e, 0x00, + 0x77, 0xff, 0x77, 0xff, 0xb1, 0xfe, 0xb2, 0xfe, 0xec, 0xfd, 0xeb, 0xfd, + 0x29, 0xfd, 0x29, 0xfd, 0x67, 0xfc, 0x6a, 0xfc, 0xb2, 0xfb, 0xb0, 0xfb, + 0xfa, 0xfa, 0xfc, 0xfa, 0x4a, 0xfa, 0x4b, 0xfa, 0x9f, 0xf9, 0x9f, 0xf9, + 0xfb, 0xf8, 0xfd, 0xf8, 0x5e, 0xf8, 0x5d, 0xf8, 0xcb, 0xf7, 0xcc, 0xf7, + 0x3e, 0xf7, 0x40, 0xf7, 0xc0, 0xf6, 0xc0, 0xf6, 0x46, 0xf6, 0x47, 0xf6, + 0xdb, 0xf5, 0xdc, 0xf5, 0x78, 0xf5, 0x79, 0xf5, 0x22, 0xf5, 0x23, 0xf5, + 0xdb, 0xf4, 0xdc, 0xf4, 0x9b, 0xf4, 0x9d, 0xf4, 0x6f, 0xf4, 0x6f, 0xf4, + 0x4c, 0xf4, 0x4d, 0xf4, 0x37, 0xf4, 0x38, 0xf4, 0x34, 0xf4, 0x34, 0xf4, + 0x3a, 0xf4, 0x3c, 0xf4, 0x53, 0xf4, 0x53, 0xf4, 0x7c, 0xf4, 0x7e, 0xf4, + 0xaf, 0xf4, 0xaf, 0xf4, 0xf5, 0xf4, 0xf6, 0xf4, 0x43, 0xf5, 0x43, 0xf5, + 0x9f, 0xf5, 0xa0, 0xf5, 0x0b, 0xf6, 0x0b, 0xf6, 0x7c, 0xf6, 0x7d, 0xf6, + 0x00, 0xf7, 0x01, 0xf7, 0x8a, 0xf7, 0x88, 0xf7, 0x1e, 0xf8, 0x20, 0xf8, + 0xbe, 0xf8, 0xbd, 0xf8, 0x60, 0xf9, 0x62, 0xf9, 0x12, 0xfa, 0x0e, 0xfa, + 0xc0, 0xfa, 0xc1, 0xfa, 0x79, 0xfb, 0x77, 0xfb, 0x35, 0xfc, 0x36, 0xfc, + 0xf6, 0xfc, 0xf4, 0xfc, 0xb6, 0xfd, 0xb8, 0xfd, 0x7c, 0xfe, 0x7b, 0xfe, + 0x40, 0xff, 0x40, 0xff, 0x06, 0x00, 0x05, 0x00, 0xc8, 0x00, 0xc7, 0x00, + 0x8a, 0x01, 0x8c, 0x01, 0x4a, 0x02, 0x4a, 0x02, 0x07, 0x03, 0x07, 0x03, + 0xbb, 0x03, 0xba, 0x03, 0x71, 0x04, 0x70, 0x04, 0x19, 0x05, 0x1b, 0x05, + 0xc4, 0x05, 0xc3, 0x05, 0x62, 0x06, 0x64, 0x06, 0xfc, 0x06, 0xfb, 0x06, + 0x8d, 0x07, 0x8f, 0x07, 0x15, 0x08, 0x13, 0x08, 0x96, 0x08, 0x95, 0x08, + 0x09, 0x09, 0x08, 0x09, 0x74, 0x09, 0x75, 0x09, 0xd4, 0x09, 0xd1, 0x09, + 0x26, 0x0a, 0x27, 0x0a, 0x70, 0x0a, 0x6f, 0x0a, 0xa7, 0x0a, 0xa9, 0x0a, + 0xd9, 0x0a, 0xd8, 0x0a, 0xf7, 0x0a, 0xf8, 0x0a, 0x0c, 0x0b, 0x0c, 0x0b, + 0x11, 0x0b, 0x12, 0x0b, 0x09, 0x0b, 0x07, 0x0b, 0xf2, 0x0a, 0xf4, 0x0a, + 0xce, 0x0a, 0xce, 0x0a, 0x9c, 0x0a, 0x9b, 0x0a, 0x59, 0x0a, 0x5b, 0x0a, + 0x0c, 0x0a, 0x09, 0x0a, 0xad, 0x09, 0xaf, 0x09, 0x45, 0x09, 0x42, 0x09, + 0xcf, 0x08, 0xd0, 0x08, 0x4d, 0x08, 0x4e, 0x08, 0xc3, 0x07, 0xc3, 0x07, + 0x2e, 0x07, 0x2c, 0x07, 0x90, 0x06, 0x90, 0x06, 0xe8, 0x05, 0xea, 0x05, + 0x3c, 0x05, 0x3b, 0x05, 0x88, 0x04, 0x88, 0x04, 0xcc, 0x03, 0xcf, 0x03, + 0x11, 0x03, 0x11, 0x03, 0x4e, 0x02, 0x4e, 0x02, 0x8b, 0x01, 0x8b, 0x01, + 0xc4, 0x00, 0xc5, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x39, 0xff, 0x3a, 0xff, + 0x72, 0xfe, 0x71, 0xfe, 0xb0, 0xfd, 0xb0, 0xfd, 0xee, 0xfc, 0xed, 0xfc, + 0x32, 0xfc, 0x33, 0xfc, 0x7b, 0xfb, 0x7c, 0xfb, 0xc6, 0xfa, 0xc6, 0xfa, + 0x19, 0xfa, 0x1a, 0xfa, 0x71, 0xf9, 0x70, 0xf9, 0xd1, 0xf8, 0xd3, 0xf8, + 0x38, 0xf8, 0x37, 0xf8, 0xa5, 0xf7, 0xa6, 0xf7, 0x22, 0xf7, 0x21, 0xf7, + 0xa2, 0xf6, 0xa4, 0xf6, 0x31, 0xf6, 0x31, 0xf6, 0xca, 0xf5, 0xcb, 0xf5, + 0x6d, 0xf5, 0x6c, 0xf5, 0x1f, 0xf5, 0x20, 0xf5, 0xd8, 0xf4, 0xd8, 0xf4, + 0xa4, 0xf4, 0xa3, 0xf4, 0x77, 0xf4, 0x78, 0xf4, 0x5d, 0xf4, 0x5c, 0xf4, + 0x4e, 0xf4, 0x4d, 0xf4, 0x4d, 0xf4, 0x4e, 0xf4, 0x5c, 0xf4, 0x5b, 0xf4, + 0x7a, 0xf4, 0x7b, 0xf4, 0xa6, 0xf4, 0xa5, 0xf4, 0xe0, 0xf4, 0xe1, 0xf4, + 0x29, 0xf5, 0x29, 0xf5, 0x7e, 0xf5, 0x7e, 0xf5, 0xe0, 0xf5, 0xe1, 0xf5, + 0x52, 0xf6, 0x50, 0xf6, 0xca, 0xf6, 0xcc, 0xf6, 0x56, 0xf7, 0x53, 0xf7, + 0xe2, 0xf7, 0xe4, 0xf7, 0x7d, 0xf8, 0x7e, 0xf8, 0x23, 0xf9, 0x22, 0xf9, + 0xca, 0xf9, 0xcb, 0xf9, 0x80, 0xfa, 0x7e, 0xfa, 0x35, 0xfb, 0x36, 0xfb, + 0xf4, 0xfb, 0xf4, 0xfb, 0xb5, 0xfc, 0xb6, 0xfc, 0x7a, 0xfd, 0x7b, 0xfd, + 0x43, 0xfe, 0x43, 0xfe, 0x0c, 0xff, 0x0c, 0xff, 0xd5, 0xff, 0xd5, 0xff, + 0xa0, 0x00, 0xa0, 0x00, 0x66, 0x01, 0x68, 0x01, 0x2d, 0x02, 0x2c, 0x02, + 0xf4, 0x02, 0xf5, 0x02, 0xb0, 0x03, 0xae, 0x03, 0x6e, 0x04, 0x6e, 0x04, + 0x20, 0x05, 0x20, 0x05, 0xd5, 0x05, 0xd4, 0x05, 0x7d, 0x06, 0x7d, 0x06, + 0x21, 0x07, 0x1f, 0x07, 0xbd, 0x07, 0xbd, 0x07, 0x4f, 0x08, 0x4b, 0x08, + 0xd8, 0x08, 0xd8, 0x08, 0x59, 0x09, 0x59, 0x09, 0xce, 0x09, 0xce, 0x09, + 0x3c, 0x0a, 0x3b, 0x0a, 0x98, 0x0a, 0x97, 0x0a, 0xee, 0x0a, 0xed, 0x0a, + 0x33, 0x0b, 0x33, 0x0b, 0x6b, 0x0b, 0x6c, 0x0b, 0x98, 0x0b, 0x98, 0x0b, + 0xb4, 0x0b, 0xb5, 0x0b, 0xc6, 0x0b, 0xc7, 0x0b, 0xc7, 0x0b, 0xc8, 0x0b, + 0xbb, 0x0b, 0xba, 0x0b, 0x9f, 0x0b, 0x9f, 0x0b, 0x73, 0x0b, 0x74, 0x0b, + 0x3d, 0x0b, 0x3c, 0x0b, 0xf1, 0x0a, 0xf2, 0x0a, 0x9d, 0x0a, 0x9c, 0x0a, + 0x3a, 0x0a, 0x3c, 0x0a, 0xcc, 0x09, 0xca, 0x09, 0x4f, 0x09, 0x50, 0x09, + 0xc8, 0x08, 0xc8, 0x08, 0x38, 0x08, 0x39, 0x08, 0x9f, 0x07, 0x9e, 0x07, + 0xfa, 0x06, 0xfa, 0x06, 0x51, 0x06, 0x50, 0x06, 0x9f, 0x05, 0x9f, 0x05, + 0xe5, 0x04, 0xe5, 0x04, 0x2e, 0x04, 0x2c, 0x04, 0x68, 0x03, 0x69, 0x03, + 0xa7, 0x02, 0xa6, 0x02, 0xdf, 0x01, 0xe0, 0x01, 0x18, 0x01, 0x18, 0x01, + 0x53, 0x00, 0x52, 0x00, 0x88, 0xff, 0x8a, 0xff, 0xc6, 0xfe, 0xc4, 0xfe, + 0xfe, 0xfd, 0x00, 0xfe, 0x3f, 0xfd, 0x3d, 0xfd, 0x85, 0xfc, 0x85, 0xfc, + 0xcc, 0xfb, 0xcd, 0xfb, 0x1c, 0xfb, 0x1b, 0xfb, 0x6d, 0xfa, 0x6e, 0xfa, + 0xc8, 0xf9, 0xc9, 0xf9, 0x28, 0xf9, 0x27, 0xf9, 0x8f, 0xf8, 0x91, 0xf8, + 0x01, 0xf8, 0x00, 0xf8, 0x7a, 0xf7, 0x7b, 0xf7, 0x00, 0xf7, 0x01, 0xf7, + 0x8d, 0xf6, 0x8d, 0xf6, 0x27, 0xf6, 0x28, 0xf6, 0xcb, 0xf5, 0xca, 0xf5, + 0x7e, 0xf5, 0x7d, 0xf5, 0x3a, 0xf5, 0x39, 0xf5, 0x03, 0xf5, 0x04, 0xf5, + 0xd8, 0xf4, 0xd8, 0xf4, 0xbd, 0xf4, 0xbe, 0xf4, 0xb1, 0xf4, 0xaf, 0xf4, + 0xb0, 0xf4, 0xb1, 0xf4, 0xc3, 0xf4, 0xc0, 0xf4, 0xdd, 0xf4, 0xdd, 0xf4, + 0x0b, 0xf5, 0x0a, 0xf5, 0x44, 0xf5, 0x45, 0xf5, 0x8f, 0xf5, 0x8d, 0xf5, + 0xe5, 0xf5, 0xe6, 0xf5, 0x47, 0xf6, 0x46, 0xf6, 0xb9, 0xf6, 0xb9, 0xf6, + 0x35, 0xf7, 0x36, 0xf7, 0xbe, 0xf7, 0xbe, 0xf7, 0x54, 0xf8, 0x52, 0xf8, + 0xef, 0xf8, 0xed, 0xf8, 0x96, 0xf9, 0x95, 0xf9, 0x43, 0xfa, 0x42, 0xfa, + 0xf9, 0xfa, 0xf9, 0xfa, 0xb4, 0xfb, 0xb3, 0xfb, 0x76, 0xfc, 0x75, 0xfc, + 0x37, 0xfd, 0x37, 0xfd, 0x02, 0xfe, 0x01, 0xfe, 0xc9, 0xfe, 0xc9, 0xfe, + 0x97, 0xff, 0x95, 0xff, 0x61, 0x00, 0x61, 0x00, 0x2d, 0x01, 0x2e, 0x01, + 0xfa, 0x01, 0xf9, 0x01, 0xbf, 0x02, 0xbe, 0x02, 0x87, 0x03, 0x87, 0x03, + 0x46, 0x04, 0x45, 0x04, 0x01, 0x05, 0x01, 0x05, 0xb8, 0x05, 0xb8, 0x05, + 0x67, 0x06, 0x67, 0x06, 0x13, 0x07, 0x15, 0x07, 0xb8, 0x07, 0xb5, 0x07, + 0x51, 0x08, 0x51, 0x08, 0xe2, 0x08, 0xe3, 0x08, 0x6b, 0x09, 0x6a, 0x09, + 0xea, 0x09, 0xea, 0x09, 0x5d, 0x0a, 0x5b, 0x0a, 0xc7, 0x0a, 0xc8, 0x0a, + 0x20, 0x0b, 0x20, 0x0b, 0x73, 0x0b, 0x72, 0x0b, 0xb4, 0x0b, 0xb5, 0x0b, + 0xea, 0x0b, 0xe8, 0x0b, 0x12, 0x0c, 0x13, 0x0c, 0x2d, 0x0c, 0x2b, 0x0c, + 0x35, 0x0c, 0x36, 0x0c, 0x31, 0x0c, 0x31, 0x0c, 0x1d, 0x0c, 0x1f, 0x0c, + 0xff, 0x0b, 0xfd, 0x0b, 0xcb, 0x0b, 0xcb, 0x0b, 0x8d, 0x0b, 0x8c, 0x0b, + 0x3e, 0x0b, 0x3d, 0x0b, 0xe1, 0x0a, 0xe1, 0x0a, 0x78, 0x0a, 0x77, 0x0a, + 0x02, 0x0a, 0x01, 0x0a, 0x7f, 0x09, 0x7e, 0x09, 0xf4, 0x08, 0xf2, 0x08, + 0x5c, 0x08, 0x5d, 0x08, 0xbd, 0x07, 0xbc, 0x07, 0x13, 0x07, 0x13, 0x07, + 0x64, 0x06, 0x63, 0x06, 0xab, 0x05, 0xaa, 0x05, 0xed, 0x04, 0xed, 0x04, + 0x2b, 0x04, 0x2b, 0x04, 0x64, 0x03, 0x65, 0x03, 0x9c, 0x02, 0x9b, 0x02, + 0xd0, 0x01, 0xd2, 0x01, 0x04, 0x01, 0x02, 0x01, 0x37, 0x00, 0x38, 0x00, + 0x6b, 0xff, 0x6a, 0xff, 0xa2, 0xfe, 0xa1, 0xfe, 0xd6, 0xfd, 0xd8, 0xfd, + 0x14, 0xfd, 0x13, 0xfd, 0x54, 0xfc, 0x54, 0xfc, 0x9c, 0xfb, 0x9a, 0xfb, + 0xe1, 0xfa, 0xe1, 0xfa, 0x32, 0xfa, 0x30, 0xfa, 0x87, 0xf9, 0x87, 0xf9, + 0xe2, 0xf8, 0xe4, 0xf8, 0x49, 0xf8, 0x48, 0xf8, 0xb5, 0xf7, 0xb6, 0xf7, + 0x2c, 0xf7, 0x2d, 0xf7, 0xad, 0xf6, 0xac, 0xf6, 0x38, 0xf6, 0x39, 0xf6, + 0xcd, 0xf5, 0xcc, 0xf5, 0x71, 0xf5, 0x70, 0xf5, 0x1f, 0xf5, 0x1e, 0xf5, + 0xd7, 0xf4, 0xd6, 0xf4, 0xa3, 0xf4, 0xa1, 0xf4, 0x76, 0xf4, 0x78, 0xf4, + 0x59, 0xf4, 0x58, 0xf4, 0x4d, 0xf4, 0x4c, 0xf4, 0x4b, 0xf4, 0x4b, 0xf4, + 0x5d, 0xf4, 0x5d, 0xf4, 0x79, 0xf4, 0x79, 0xf4, 0xa7, 0xf4, 0xa8, 0xf4, + 0xe5, 0xf4, 0xe4, 0xf4, 0x2d, 0xf5, 0x2d, 0xf5, 0x89, 0xf5, 0x88, 0xf5, + 0xef, 0xf5, 0xef, 0xf5, 0x62, 0xf6, 0x62, 0xf6, 0xe2, 0xf6, 0xe3, 0xf6, + 0x6f, 0xf7, 0x6e, 0xf7, 0x06, 0xf8, 0x05, 0xf8, 0xa4, 0xf8, 0xa4, 0xf8, + 0x4d, 0xf9, 0x4d, 0xf9, 0xfd, 0xf9, 0xfc, 0xf9, 0xb5, 0xfa, 0xb3, 0xfa, + 0x73, 0xfb, 0x74, 0xfb, 0x32, 0xfc, 0x31, 0xfc, 0xfc, 0xfc, 0xfb, 0xfc, + 0xc1, 0xfd, 0xc2, 0xfd, 0x90, 0xfe, 0x8f, 0xfe, 0x5b, 0xff, 0x5b, 0xff, + 0x28, 0x00, 0x27, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xbf, 0x01, 0xbd, 0x01, + 0x87, 0x02, 0x87, 0x02, 0x4b, 0x03, 0x4a, 0x03, 0x09, 0x04, 0x0a, 0x04, + 0xc3, 0x04, 0xc3, 0x04, 0x7a, 0x05, 0x77, 0x05, 0x29, 0x06, 0x2a, 0x06, + 0xd2, 0x06, 0xd0, 0x06, 0x73, 0x07, 0x75, 0x07, 0x0e, 0x08, 0x0c, 0x08, + 0x9c, 0x08, 0x9c, 0x08, 0x25, 0x09, 0x22, 0x09, 0x9f, 0x09, 0xa1, 0x09, + 0x16, 0x0a, 0x14, 0x0a, 0x78, 0x0a, 0x78, 0x0a, 0xd7, 0x0a, 0xd5, 0x0a, + 0x22, 0x0b, 0x23, 0x0b, 0x65, 0x0b, 0x64, 0x0b, 0x99, 0x0b, 0x9a, 0x0b, + 0xc0, 0x0b, 0xbf, 0x0b, 0xd8, 0x0b, 0xd7, 0x0b, 0xe1, 0x0b, 0xe1, 0x0b, + 0xde, 0x0b, 0xdd, 0x0b, 0xc9, 0x0b, 0xc8, 0x0b, 0xaa, 0x0b, 0xa9, 0x0b, + 0x76, 0x0b, 0x75, 0x0b, 0x36, 0x0b, 0x36, 0x0b, 0xe5, 0x0a, 0xe5, 0x0a, + 0x87, 0x0a, 0x86, 0x0a, 0x1d, 0x0a, 0x1c, 0x0a, 0xa5, 0x09, 0xa3, 0x09, + 0x1e, 0x09, 0x1e, 0x09, 0x93, 0x08, 0x8f, 0x08, 0xf5, 0x07, 0xf5, 0x07, + 0x53, 0x07, 0x51, 0x07, 0xa7, 0x06, 0xa6, 0x06, 0xf1, 0x05, 0xee, 0x05, + 0x37, 0x05, 0x35, 0x05, 0x72, 0x04, 0x71, 0x04, 0xad, 0x03, 0xad, 0x03, + 0xe2, 0x02, 0xdf, 0x02, 0x14, 0x02, 0x13, 0x02, 0x44, 0x01, 0x41, 0x01, + 0x71, 0x00, 0x72, 0x00, 0xa0, 0xff, 0xa0, 0xff, 0xce, 0xfe, 0xcc, 0xfe, + 0x00, 0xfe, 0xff, 0xfd, 0x30, 0xfd, 0x2e, 0xfd, 0x65, 0xfc, 0x65, 0xfc, + 0xa5, 0xfb, 0xa4, 0xfb, 0xe3, 0xfa, 0xe1, 0xfa, 0x2c, 0xfa, 0x2a, 0xfa, + 0x72, 0xf9, 0x71, 0xf9, 0xc7, 0xf8, 0xc4, 0xf8, 0x1e, 0xf8, 0x1e, 0xf8, + 0x82, 0xf7, 0x80, 0xf7, 0xe8, 0xf6, 0xe7, 0xf6, 0x60, 0xf6, 0x5e, 0xf6, + 0xdc, 0xf5, 0xdc, 0xf5, 0x6a, 0xf5, 0x67, 0xf5, 0xfc, 0xf4, 0xfc, 0xf4, + 0x9d, 0xf4, 0x9c, 0xf4, 0x4d, 0xf4, 0x4b, 0xf4, 0x08, 0xf4, 0x06, 0xf4, + 0xd0, 0xf3, 0xce, 0xf3, 0xa9, 0xf3, 0xaa, 0xf3, 0x8c, 0xf3, 0x8b, 0xf3, + 0x84, 0xf3, 0x83, 0xf3, 0x88, 0xf3, 0x88, 0xf3, 0x9b, 0xf3, 0x9b, 0xf3, + 0xc1, 0xf3, 0xc0, 0xf3, 0xf5, 0xf3, 0xf2, 0xf3, 0x37, 0xf4, 0x37, 0xf4, + 0x8b, 0xf4, 0x86, 0xf4, 0xe6, 0xf4, 0xe8, 0xf4, 0x56, 0xf5, 0x55, 0xf5, + 0xcf, 0xf5, 0xce, 0xf5, 0x55, 0xf6, 0x55, 0xf6, 0xe7, 0xf6, 0xe5, 0xf6, + 0x85, 0xf7, 0x83, 0xf7, 0x27, 0xf8, 0x28, 0xf8, 0xd7, 0xf8, 0xd6, 0xf8, + 0x8c, 0xf9, 0x8b, 0xf9, 0x48, 0xfa, 0x48, 0xfa, 0x0c, 0xfb, 0x09, 0xfb, + 0xd1, 0xfb, 0xd2, 0xfb, 0x9d, 0xfc, 0x99, 0xfc, 0x67, 0xfd, 0x67, 0xfd, + 0x38, 0xfe, 0x37, 0xfe, 0x07, 0xff, 0x05, 0xff, 0xd7, 0xff, 0xd7, 0xff, + 0xa5, 0x00, 0xa1, 0x00, 0x71, 0x01, 0x71, 0x01, 0x3a, 0x02, 0x39, 0x02, + 0x05, 0x03, 0x01, 0x03, 0xc4, 0x03, 0xc4, 0x03, 0x81, 0x04, 0x80, 0x04, + 0x3a, 0x05, 0x38, 0x05, 0xeb, 0x05, 0xeb, 0x05, 0x96, 0x06, 0x94, 0x06, + 0x3a, 0x07, 0x3a, 0x07, 0xd4, 0x07, 0xd3, 0x07, 0x68, 0x08, 0x68, 0x08, + 0xf4, 0x08, 0xf1, 0x08, 0x72, 0x09, 0x72, 0x09, 0xe7, 0x09, 0xe6, 0x09, + 0x50, 0x0a, 0x4f, 0x0a, 0xb0, 0x0a, 0xaf, 0x0a, 0xfe, 0x0a, 0xfd, 0x0a, + 0x45, 0x0b, 0x42, 0x0b, 0x7a, 0x0b, 0x78, 0x0b, 0xa3, 0x0b, 0xa4, 0x0b, + 0xbe, 0x0b, 0xba, 0x0b, 0xcb, 0x0b, 0xcb, 0x0b, 0xc9, 0x0b, 0xc7, 0x0b, + 0xb7, 0x0b, 0xb6, 0x0b, 0x97, 0x0b, 0x97, 0x0b, 0x68, 0x0b, 0x66, 0x0b, + 0x26, 0x0b, 0x26, 0x0b, 0xd9, 0x0a, 0xd8, 0x0a, 0x7b, 0x0a, 0x7a, 0x0a, + 0x10, 0x0a, 0x10, 0x0a, 0x9a, 0x09, 0x97, 0x09, 0x11, 0x09, 0x12, 0x09, + 0x82, 0x08, 0x81, 0x08, 0xe8, 0x07, 0xe7, 0x07, 0x41, 0x07, 0x3f, 0x07, + 0x94, 0x06, 0x93, 0x06, 0xdc, 0x05, 0xdc, 0x05, 0x21, 0x05, 0x1f, 0x05, + 0x5c, 0x04, 0x5c, 0x04, 0x95, 0x03, 0x93, 0x03, 0xc9, 0x02, 0xc8, 0x02, + 0xfa, 0x01, 0xf7, 0x01, 0x25, 0x01, 0x26, 0x01, 0x56, 0x00, 0x53, 0x00, + 0x81, 0xff, 0x81, 0xff, 0xb0, 0xfe, 0xae, 0xfe, 0xe1, 0xfd, 0xdf, 0xfd, + 0x11, 0xfd, 0x10, 0xfd, 0x49, 0xfc, 0x47, 0xfc, 0x85, 0xfb, 0x82, 0xfb, + 0xc5, 0xfa, 0xc4, 0xfa, 0x0b, 0xfa, 0x08, 0xfa, 0x57, 0xf9, 0x55, 0xf9, + 0xa8, 0xf8, 0xa6, 0xf8, 0x02, 0xf8, 0x01, 0xf8, 0x65, 0xf7, 0x63, 0xf7, + 0xd1, 0xf6, 0xcf, 0xf6, 0x46, 0xf6, 0x47, 0xf6, 0xc7, 0xf5, 0xc4, 0xf5, + 0x53, 0xf5, 0x52, 0xf5, 0xec, 0xf4, 0xe9, 0xf4, 0x8d, 0xf4, 0x8c, 0xf4, + 0x40, 0xf4, 0x3f, 0xf4, 0xfb, 0xf3, 0xfa, 0xf3, 0xc8, 0xf3, 0xc8, 0xf3, + 0xa3, 0xf3, 0x9f, 0xf3, 0x8a, 0xf3, 0x8b, 0xf3, 0x83, 0xf3, 0x80, 0xf3, + 0x89, 0xf3, 0x89, 0xf3, 0xa1, 0xf3, 0xa1, 0xf3, 0xc7, 0xf3, 0xc5, 0xf3, + 0xff, 0xf3, 0xfe, 0xf3, 0x44, 0xf4, 0x44, 0xf4, 0x97, 0xf4, 0x96, 0xf4, + 0xfc, 0xf4, 0xfc, 0xf4, 0x6b, 0xf5, 0x69, 0xf5, 0xeb, 0xf5, 0xe9, 0xf5, + 0x74, 0xf6, 0x73, 0xf6, 0x0b, 0xf7, 0x09, 0xf7, 0xaa, 0xf7, 0xa9, 0xf7, + 0x56, 0xf8, 0x54, 0xf8, 0x07, 0xf9, 0x06, 0xf9, 0xc1, 0xf9, 0xc0, 0xf9, + 0x82, 0xfa, 0x81, 0xfa, 0x4a, 0xfb, 0x49, 0xfb, 0x15, 0xfc, 0x14, 0xfc, + 0xe5, 0xfc, 0xe3, 0xfc, 0xb7, 0xfd, 0xb7, 0xfd, 0x8b, 0xfe, 0x89, 0xfe, + 0x60, 0xff, 0x5f, 0xff, 0x36, 0x00, 0x35, 0x00, 0x0b, 0x01, 0x08, 0x01, + 0xdd, 0x01, 0xdc, 0x01, 0xac, 0x02, 0xaa, 0x02, 0x7b, 0x03, 0x7a, 0x03, + 0x41, 0x04, 0x3d, 0x04, 0x03, 0x05, 0x03, 0x05, 0xc1, 0x05, 0xbd, 0x05, + 0x78, 0x06, 0x78, 0x06, 0x29, 0x07, 0x28, 0x07, 0xd4, 0x07, 0xd0, 0x07, + 0x72, 0x08, 0x72, 0x08, 0x0b, 0x09, 0x08, 0x09, 0x96, 0x09, 0x95, 0x09, + 0x1b, 0x0a, 0x1a, 0x0a, 0x94, 0x0a, 0x92, 0x0a, 0xff, 0x0a, 0xfe, 0x0a, + 0x5e, 0x0b, 0x5d, 0x0b, 0xb2, 0x0b, 0xb1, 0x0b, 0xf6, 0x0b, 0xf4, 0x0b, + 0x2e, 0x0c, 0x2d, 0x0c, 0x58, 0x0c, 0x56, 0x0c, 0x72, 0x0c, 0x70, 0x0c, + 0x7e, 0x0c, 0x7d, 0x0c, 0x7a, 0x0c, 0x78, 0x0c, 0x65, 0x0c, 0x64, 0x0c, + 0x44, 0x0c, 0x42, 0x0c, 0x0b, 0x0c, 0x09, 0x0c, 0xc9, 0x0b, 0xc8, 0x0b, + 0x76, 0x0b, 0x74, 0x0b, 0x12, 0x0b, 0x0f, 0x0b, 0xa5, 0x0a, 0xa3, 0x0a, + 0x25, 0x0a, 0x23, 0x0a, 0x9e, 0x09, 0x9b, 0x09, 0x09, 0x09, 0x07, 0x09, + 0x66, 0x08, 0x65, 0x08, 0xc1, 0x07, 0xbd, 0x07, 0x0c, 0x07, 0x0c, 0x07, + 0x53, 0x06, 0x50, 0x06, 0x93, 0x05, 0x91, 0x05, 0xcb, 0x04, 0xcb, 0x04, + 0x03, 0x04, 0x00, 0x04, 0x32, 0x03, 0x30, 0x03, 0x63, 0x02, 0x61, 0x02, + 0x90, 0x01, 0x8e, 0x01, 0xbc, 0x00, 0xbc, 0x00, 0xed, 0xff, 0xe9, 0xff, + 0x17, 0xff, 0x16, 0xff, 0x4d, 0xfe, 0x49, 0xfe, 0x7a, 0xfd, 0x7c, 0xfd, + 0xb5, 0xfc, 0xb1, 0xfc, 0xef, 0xfb, 0xf0, 0xfb, 0x33, 0xfb, 0x2f, 0xfb, + 0x77, 0xfa, 0x75, 0xfa, 0xc2, 0xf9, 0xc1, 0xf9, 0x18, 0xf9, 0x14, 0xf9, + 0x70, 0xf8, 0x6d, 0xf8, 0xd4, 0xf7, 0xd3, 0xf7, 0x40, 0xf7, 0x3e, 0xf7, + 0xb7, 0xf6, 0xb5, 0xf6, 0x36, 0xf6, 0x35, 0xf6, 0xc3, 0xf5, 0xc1, 0xf5, + 0x5c, 0xf5, 0x5b, 0xf5, 0xfd, 0xf4, 0xfc, 0xf4, 0xb0, 0xf4, 0xac, 0xf4, + 0x6a, 0xf4, 0x6b, 0xf4, 0x38, 0xf4, 0x34, 0xf4, 0x0f, 0xf4, 0x0f, 0xf4, + 0xf7, 0xf3, 0xf5, 0xf3, 0xef, 0xf3, 0xef, 0xf3, 0xf6, 0xf3, 0xf4, 0xf3, + 0x0b, 0xf4, 0x09, 0xf4, 0x2f, 0xf4, 0x2f, 0xf4, 0x65, 0xf4, 0x62, 0xf4, + 0xa9, 0xf4, 0xa9, 0xf4, 0xfd, 0xf4, 0xfb, 0xf4, 0x5e, 0xf5, 0x5d, 0xf5, + 0xcf, 0xf5, 0xd0, 0xf5, 0x4e, 0xf6, 0x49, 0xf6, 0xd6, 0xf6, 0xd8, 0xf6, + 0x70, 0xf7, 0x6c, 0xf7, 0x0d, 0xf8, 0x0d, 0xf8, 0xbd, 0xf8, 0xba, 0xf8, + 0x6d, 0xf9, 0x6b, 0xf9, 0x2c, 0xfa, 0x2b, 0xfa, 0xef, 0xfa, 0xeb, 0xfa, + 0xb7, 0xfb, 0xb6, 0xfb, 0x87, 0xfc, 0x84, 0xfc, 0x57, 0xfd, 0x54, 0xfd, + 0x2c, 0xfe, 0x2a, 0xfe, 0x02, 0xff, 0x00, 0xff, 0xd9, 0xff, 0xd6, 0xff, + 0xb1, 0x00, 0xb1, 0x00, 0x86, 0x01, 0x84, 0x01, 0x5c, 0x02, 0x5b, 0x02, + 0x2f, 0x03, 0x2d, 0x03, 0xfe, 0x03, 0xfc, 0x03, 0xc7, 0x04, 0xc5, 0x04, + 0x8b, 0x05, 0x8a, 0x05, 0x4b, 0x06, 0x48, 0x06, 0x00, 0x07, 0x01, 0x07, + 0xb4, 0x07, 0xb2, 0x07, 0x5c, 0x08, 0x5a, 0x08, 0xfb, 0x08, 0xfa, 0x08, + 0x94, 0x09, 0x90, 0x09, 0x20, 0x0a, 0x1f, 0x0a, 0xa0, 0x0a, 0x9f, 0x0a, + 0x19, 0x0b, 0x17, 0x0b, 0x83, 0x0b, 0x82, 0x0b, 0xe1, 0x0b, 0xdf, 0x0b, + 0x30, 0x0c, 0x2d, 0x0c, 0x73, 0x0c, 0x73, 0x0c, 0xa5, 0x0c, 0xa2, 0x0c, + 0xcb, 0x0c, 0xcc, 0x0c, 0xe0, 0x0c, 0xde, 0x0c, 0xeb, 0x0c, 0xe8, 0x0c, + 0xdf, 0x0c, 0xde, 0x0c, 0xc6, 0x0c, 0xc3, 0x0c, 0x9b, 0x0c, 0x9a, 0x0c, + 0x61, 0x0c, 0x5f, 0x0c, 0x16, 0x0c, 0x14, 0x0c, 0xbd, 0x0b, 0xbb, 0x0b, + 0x56, 0x0b, 0x53, 0x0b, 0xdf, 0x0a, 0xdc, 0x0a, 0x5d, 0x0a, 0x5c, 0x0a, + 0xcd, 0x09, 0xc9, 0x09, 0x35, 0x09, 0x34, 0x09, 0x8f, 0x08, 0x8d, 0x08, + 0xe2, 0x07, 0xe0, 0x07, 0x2a, 0x07, 0x28, 0x07, 0x6b, 0x06, 0x69, 0x06, + 0xa7, 0x05, 0xa5, 0x05, 0xdc, 0x04, 0xd9, 0x04, 0x0f, 0x04, 0x0c, 0x04, + 0x3b, 0x03, 0x39, 0x03, 0x67, 0x02, 0x64, 0x02, 0x91, 0x01, 0x91, 0x01, + 0xbc, 0x00, 0xb8, 0x00, 0xe5, 0xff, 0xe4, 0xff, 0x11, 0xff, 0x10, 0xff, + 0x3f, 0xfe, 0x3b, 0xfe, 0x6e, 0xfd, 0x6c, 0xfd, 0xa1, 0xfc, 0x9f, 0xfc, + 0xdb, 0xfb, 0xd8, 0xfb, 0x16, 0xfb, 0x15, 0xfb, 0x5d, 0xfa, 0x57, 0xfa, + 0xa1, 0xf9, 0xa1, 0xf9, 0xf4, 0xf8, 0xef, 0xf8, 0x4b, 0xf8, 0x4a, 0xf8, + 0xac, 0xf7, 0xa8, 0xf7, 0x16, 0xf7, 0x14, 0xf7, 0x87, 0xf6, 0x86, 0xf6, + 0x08, 0xf6, 0x05, 0xf6, 0x90, 0xf5, 0x8d, 0xf5, 0x26, 0xf5, 0x25, 0xf5, + 0xc5, 0xf4, 0xc4, 0xf4, 0x78, 0xf4, 0x75, 0xf4, 0x2f, 0xf4, 0x30, 0xf4, + 0xfd, 0xf3, 0xf8, 0xf3, 0xd3, 0xf3, 0xd1, 0xf3, 0xba, 0xf3, 0xb8, 0xf3, + 0xb2, 0xf3, 0xaf, 0xf3, 0xb7, 0xf3, 0xb6, 0xf3, 0xce, 0xf3, 0xcb, 0xf3, + 0xf6, 0xf3, 0xf3, 0xf3, 0x2a, 0xf4, 0x28, 0xf4, 0x73, 0xf4, 0x70, 0xf4, + 0xc7, 0xf4, 0xc4, 0xf4, 0x2b, 0xf5, 0x2a, 0xf5, 0x9d, 0xf5, 0x9c, 0xf5, + 0x21, 0xf6, 0x1d, 0xf6, 0xab, 0xf6, 0xaa, 0xf6, 0x45, 0xf7, 0x42, 0xf7, + 0xe7, 0xf7, 0xe6, 0xf7, 0x95, 0xf8, 0x90, 0xf8, 0x4a, 0xf9, 0x49, 0xf9, + 0x07, 0xfa, 0x06, 0xfa, 0xcb, 0xfa, 0xc8, 0xfa, 0x95, 0xfb, 0x93, 0xfb, + 0x64, 0xfc, 0x62, 0xfc, 0x36, 0xfd, 0x34, 0xfd, 0x0a, 0xfe, 0x09, 0xfe, + 0xe0, 0xfe, 0xdd, 0xfe, 0xb5, 0xff, 0xb4, 0xff, 0x8d, 0x00, 0x89, 0x00, + 0x61, 0x01, 0x5f, 0x01, 0x32, 0x02, 0x2f, 0x02, 0x03, 0x03, 0x02, 0x03, + 0xcf, 0x03, 0xcc, 0x03, 0x97, 0x04, 0x95, 0x04, 0x57, 0x05, 0x55, 0x05, + 0x12, 0x06, 0x10, 0x06, 0xc8, 0x06, 0xc5, 0x06, 0x75, 0x07, 0x73, 0x07, + 0x1d, 0x08, 0x1a, 0x08, 0xb7, 0x08, 0xb6, 0x08, 0x4e, 0x09, 0x4a, 0x09, + 0xd4, 0x09, 0xd3, 0x09, 0x55, 0x0a, 0x51, 0x0a, 0xc6, 0x0a, 0xc5, 0x0a, + 0x30, 0x0b, 0x2c, 0x0b, 0x87, 0x0b, 0x84, 0x0b, 0xd6, 0x0b, 0xd5, 0x0b, + 0x15, 0x0c, 0x10, 0x0c, 0x45, 0x0c, 0x44, 0x0c, 0x67, 0x0c, 0x64, 0x0c, + 0x7a, 0x0c, 0x7a, 0x0c, 0x81, 0x0c, 0x7e, 0x0c, 0x75, 0x0c, 0x72, 0x0c, + 0x5a, 0x0c, 0x57, 0x0c, 0x2f, 0x0c, 0x2d, 0x0c, 0xf2, 0x0b, 0xef, 0x0b, + 0xa6, 0x0b, 0xa4, 0x0b, 0x4c, 0x0b, 0x4b, 0x0b, 0xe2, 0x0a, 0xdf, 0x0a, + 0x6b, 0x0a, 0x68, 0x0a, 0xe5, 0x09, 0xe4, 0x09, 0x55, 0x09, 0x51, 0x09, + 0xb9, 0x08, 0xb9, 0x08, 0x10, 0x08, 0x0d, 0x08, 0x60, 0x07, 0x5e, 0x07, + 0xa7, 0x06, 0xa4, 0x06, 0xe5, 0x05, 0xe3, 0x05, 0x1e, 0x05, 0x1d, 0x05, + 0x4e, 0x04, 0x4b, 0x04, 0x7f, 0x03, 0x7d, 0x03, 0xa7, 0x02, 0xa4, 0x02, + 0xd2, 0x01, 0xcf, 0x01, 0xf5, 0x00, 0xf3, 0x00, 0x1c, 0x00, 0x1a, 0x00, + 0x43, 0xff, 0x41, 0xff, 0x69, 0xfe, 0x67, 0xfe, 0x94, 0xfd, 0x90, 0xfd, + 0xbe, 0xfc, 0xbd, 0xfc, 0xee, 0xfb, 0xea, 0xfb, 0x23, 0xfb, 0x23, 0xfb, + 0x5e, 0xfa, 0x5b, 0xfa, 0x9f, 0xf9, 0x9b, 0xf9, 0xe4, 0xf8, 0xe2, 0xf8, + 0x33, 0xf8, 0x2e, 0xf8, 0x88, 0xf7, 0x87, 0xf7, 0xe8, 0xf6, 0xe4, 0xf6, + 0x51, 0xf6, 0x50, 0xf6, 0xc4, 0xf5, 0xc1, 0xf5, 0x42, 0xf5, 0x40, 0xf5, + 0xce, 0xf4, 0xca, 0xf4, 0x64, 0xf4, 0x61, 0xf4, 0x09, 0xf4, 0x04, 0xf4, + 0xb7, 0xf3, 0xb6, 0xf3, 0x76, 0xf3, 0x72, 0xf3, 0x44, 0xf3, 0x43, 0xf3, + 0x23, 0xf3, 0x1f, 0xf3, 0x0e, 0xf3, 0x0c, 0xf3, 0x0b, 0xf3, 0x08, 0xf3, + 0x17, 0xf3, 0x15, 0xf3, 0x36, 0xf3, 0x33, 0xf3, 0x66, 0xf3, 0x62, 0xf3, + 0xa3, 0xf3, 0x9f, 0xf3, 0xf1, 0xf3, 0xee, 0xf3, 0x4d, 0xf4, 0x4b, 0xf4, + 0xba, 0xf4, 0xb6, 0xf4, 0x34, 0xf5, 0x31, 0xf5, 0xbb, 0xf5, 0xb8, 0xf5, + 0x50, 0xf6, 0x4c, 0xf6, 0xed, 0xf6, 0xeb, 0xf6, 0x9a, 0xf7, 0x93, 0xf7, + 0x47, 0xf8, 0x46, 0xf8, 0x05, 0xf9, 0x00, 0xf9, 0xc5, 0xf9, 0xc2, 0xf9, + 0x8b, 0xfa, 0x87, 0xfa, 0x5b, 0xfb, 0x59, 0xfb, 0x29, 0xfc, 0x26, 0xfc, + 0xff, 0xfc, 0xfc, 0xfc, 0xd4, 0xfd, 0xd0, 0xfd, 0xab, 0xfe, 0xa8, 0xfe, + 0x81, 0xff, 0x7f, 0xff, 0x57, 0x00, 0x54, 0x00, 0x2b, 0x01, 0x29, 0x01, + 0xfe, 0x01, 0xfb, 0x01, 0xcc, 0x02, 0xc9, 0x02, 0x97, 0x03, 0x95, 0x03, + 0x5f, 0x04, 0x5c, 0x04, 0x1f, 0x05, 0x1e, 0x05, 0xdb, 0x05, 0xd8, 0x05, + 0x8f, 0x06, 0x8b, 0x06, 0x3c, 0x07, 0x39, 0x07, 0xe1, 0x07, 0xdf, 0x07, + 0x7f, 0x08, 0x7a, 0x08, 0x10, 0x09, 0x10, 0x09, 0x9a, 0x09, 0x96, 0x09, + 0x17, 0x0a, 0x16, 0x0a, 0x8a, 0x0a, 0x88, 0x0a, 0xf0, 0x0a, 0xed, 0x0a, + 0x4a, 0x0b, 0x49, 0x0b, 0x95, 0x0b, 0x91, 0x0b, 0xd5, 0x0b, 0xd3, 0x0b, + 0x03, 0x0c, 0x01, 0x0c, 0x27, 0x0c, 0x26, 0x0c, 0x39, 0x0c, 0x37, 0x0c, + 0x3c, 0x0c, 0x3b, 0x0c, 0x32, 0x0c, 0x2e, 0x0c, 0x14, 0x0c, 0x13, 0x0c, + 0xea, 0x0b, 0xe7, 0x0b, 0xab, 0x0b, 0xa9, 0x0b, 0x5f, 0x0b, 0x5e, 0x0b, + 0x05, 0x0b, 0x02, 0x0b, 0x99, 0x0a, 0x97, 0x0a, 0x20, 0x0a, 0x1f, 0x0a, + 0x99, 0x09, 0x96, 0x09, 0x07, 0x09, 0x06, 0x09, 0x6a, 0x08, 0x66, 0x08, + 0xc2, 0x07, 0xbf, 0x07, 0x0e, 0x07, 0x0c, 0x07, 0x53, 0x06, 0x52, 0x06, + 0x93, 0x05, 0x8f, 0x05, 0xc8, 0x04, 0xc7, 0x04, 0xfa, 0x03, 0xf9, 0x03, + 0x29, 0x03, 0x26, 0x03, 0x51, 0x02, 0x51, 0x02, 0x7b, 0x01, 0x77, 0x01, + 0x9f, 0x00, 0x9f, 0x00, 0xc9, 0xff, 0xc6, 0xff, 0xed, 0xfe, 0xec, 0xfe, + 0x16, 0xfe, 0x15, 0xfe, 0x41, 0xfd, 0x3d, 0xfd, 0x6e, 0xfc, 0x6e, 0xfc, + 0xa2, 0xfb, 0x9e, 0xfb, 0xd7, 0xfa, 0xd7, 0xfa, 0x16, 0xfa, 0x13, 0xfa, + 0x58, 0xf9, 0x57, 0xf9, 0xa2, 0xf8, 0x9f, 0xf8, 0xf4, 0xf7, 0xf1, 0xf7, + 0x4f, 0xf7, 0x4d, 0xf7, 0xb3, 0xf6, 0xaf, 0xf6, 0x20, 0xf6, 0x1f, 0xf6, + 0x99, 0xf5, 0x96, 0xf5, 0x1d, 0xf5, 0x1b, 0xf5, 0xab, 0xf4, 0xaa, 0xf4, + 0x48, 0xf4, 0x45, 0xf4, 0xf2, 0xf3, 0xf0, 0xf3, 0xa8, 0xf3, 0xa6, 0xf3, + 0x6e, 0xf3, 0x6b, 0xf3, 0x44, 0xf3, 0x42, 0xf3, 0x27, 0xf3, 0x24, 0xf3, + 0x1a, 0xf3, 0x1a, 0xf3, 0x1c, 0xf3, 0x19, 0xf3, 0x31, 0xf3, 0x2e, 0xf3, + 0x56, 0xf3, 0x53, 0xf3, 0x88, 0xf3, 0x86, 0xf3, 0xcf, 0xf3, 0xcb, 0xf3, + 0x21, 0xf4, 0x1f, 0xf4, 0x86, 0xf4, 0x83, 0xf4, 0xf8, 0xf4, 0xf5, 0xf4, + 0x77, 0xf5, 0x73, 0xf5, 0x04, 0xf6, 0x03, 0xf6, 0x9f, 0xf6, 0x9a, 0xf6, + 0x41, 0xf7, 0x40, 0xf7, 0xf2, 0xf7, 0xef, 0xf7, 0xa4, 0xf8, 0xa2, 0xf8, + 0x67, 0xf9, 0x64, 0xf9, 0x2c, 0xfa, 0x29, 0xfa, 0xf6, 0xfa, 0xf4, 0xfa, + 0xcb, 0xfb, 0xc7, 0xfb, 0x9d, 0xfc, 0x9a, 0xfc, 0x76, 0xfd, 0x73, 0xfd, + 0x52, 0xfe, 0x4e, 0xfe, 0x29, 0xff, 0x26, 0xff, 0x05, 0x00, 0x04, 0x00, + 0xe0, 0x00, 0xdc, 0x00, 0xb6, 0x01, 0xb5, 0x01, 0x8d, 0x02, 0x89, 0x02, + 0x61, 0x03, 0x5f, 0x03, 0x2e, 0x04, 0x2c, 0x04, 0xf9, 0x04, 0xf4, 0x04, + 0xbb, 0x05, 0xb9, 0x05, 0x7a, 0x06, 0x76, 0x06, 0x30, 0x07, 0x2d, 0x07, + 0xdf, 0x07, 0xdc, 0x07, 0x84, 0x08, 0x81, 0x08, 0x23, 0x09, 0x20, 0x09, + 0xb4, 0x09, 0xb1, 0x09, 0x3e, 0x0a, 0x3c, 0x0a, 0xbb, 0x0a, 0xb9, 0x0a, + 0x2d, 0x0b, 0x2b, 0x0b, 0x93, 0x0b, 0x90, 0x0b, 0xe9, 0x0b, 0xe6, 0x0b, + 0x31, 0x0c, 0x30, 0x0c, 0x6d, 0x0c, 0x6b, 0x0c, 0x9a, 0x0c, 0x97, 0x0c, + 0xb8, 0x0c, 0xb5, 0x0c, 0xc5, 0x0c, 0xc4, 0x0c, 0xc5, 0x0c, 0xc2, 0x0c, + 0xb2, 0x0c, 0xb0, 0x0c, 0x8f, 0x0c, 0x8c, 0x0c, 0x59, 0x0c, 0x57, 0x0c, + 0x13, 0x0c, 0x10, 0x0c, 0xbe, 0x0b, 0xbd, 0x0b, 0x5a, 0x0b, 0x56, 0x0b, + 0xe9, 0x0a, 0xe6, 0x0a, 0x67, 0x0a, 0x65, 0x0a, 0xda, 0x09, 0xd7, 0x09, + 0x41, 0x09, 0x3e, 0x09, 0x9c, 0x08, 0x9b, 0x08, 0xf0, 0x07, 0xed, 0x07, + 0x36, 0x07, 0x36, 0x07, 0x7a, 0x06, 0x78, 0x06, 0xb2, 0x05, 0xb0, 0x05, + 0xe7, 0x04, 0xe6, 0x04, 0x18, 0x04, 0x14, 0x04, 0x42, 0x03, 0x41, 0x03, + 0x6e, 0x02, 0x6a, 0x02, 0x94, 0x01, 0x94, 0x01, 0xbe, 0x00, 0xba, 0x00, + 0xe6, 0xff, 0xe4, 0xff, 0x0f, 0xff, 0x0c, 0xff, 0x3b, 0xfe, 0x39, 0xfe, + 0x66, 0xfd, 0x65, 0xfd, 0x9a, 0xfc, 0x97, 0xfc, 0xcf, 0xfb, 0xce, 0xfb, + 0x0b, 0xfb, 0x07, 0xfb, 0x4d, 0xfa, 0x4b, 0xfa, 0x92, 0xf9, 0x8f, 0xf9, + 0xe1, 0xf8, 0xdf, 0xf8, 0x37, 0xf8, 0x35, 0xf8, 0x99, 0xf7, 0x96, 0xf7, + 0xfe, 0xf6, 0xfd, 0xf6, 0x73, 0xf6, 0x70, 0xf6, 0xef, 0xf5, 0xec, 0xf5, + 0x77, 0xf5, 0x75, 0xf5, 0x0b, 0xf5, 0x0b, 0xf5, 0xab, 0xf4, 0xa9, 0xf4, + 0x5c, 0xf4, 0x5a, 0xf4, 0x17, 0xf4, 0x15, 0xf4, 0xe1, 0xf3, 0xdd, 0xf3, + 0xbb, 0xf3, 0xb9, 0xf3, 0xa1, 0xf3, 0x9e, 0xf3, 0x9b, 0xf3, 0x99, 0xf3, + 0x9f, 0xf3, 0x9c, 0xf3, 0xb7, 0xf3, 0xb6, 0xf3, 0xe1, 0xf3, 0xdc, 0xf3, + 0x13, 0xf4, 0x13, 0xf4, 0x60, 0xf4, 0x5d, 0xf4, 0xb3, 0xf4, 0xb1, 0xf4, + 0x1c, 0xf5, 0x1c, 0xf5, 0x91, 0xf5, 0x8f, 0xf5, 0x14, 0xf6, 0x14, 0xf6, + 0xa5, 0xf6, 0xa2, 0xf6, 0x41, 0xf7, 0x3f, 0xf7, 0xe8, 0xf7, 0xe8, 0xf7, + 0x9b, 0xf8, 0x97, 0xf8, 0x54, 0xf9, 0x55, 0xf9, 0x18, 0xfa, 0x15, 0xfa, + 0xde, 0xfa, 0xdd, 0xfa, 0xaf, 0xfb, 0xad, 0xfb, 0x81, 0xfc, 0x7f, 0xfc, + 0x58, 0xfd, 0x58, 0xfd, 0x36, 0xfe, 0x33, 0xfe, 0x0e, 0xff, 0x0c, 0xff, + 0xee, 0xff, 0xec, 0xff, 0xc9, 0x00, 0xc8, 0x00, 0xa4, 0x01, 0xa2, 0x01, + 0x7f, 0x02, 0x7e, 0x02, 0x54, 0x03, 0x53, 0x03, 0x2a, 0x04, 0x27, 0x04, + 0xf6, 0x04, 0xf4, 0x04, 0xbe, 0x05, 0xbd, 0x05, 0x82, 0x06, 0x7e, 0x06, + 0x3e, 0x07, 0x3b, 0x07, 0xf2, 0x07, 0xf1, 0x07, 0x9f, 0x08, 0x9b, 0x08, + 0x41, 0x09, 0x3e, 0x09, 0xdb, 0x09, 0xda, 0x09, 0x6a, 0x0a, 0x66, 0x0a, + 0xed, 0x0a, 0xeb, 0x0a, 0x65, 0x0b, 0x62, 0x0b, 0xcf, 0x0b, 0xcd, 0x0b, + 0x2f, 0x0c, 0x2c, 0x0c, 0x7d, 0x0c, 0x7b, 0x0c, 0xbf, 0x0c, 0xbd, 0x0c, + 0xf4, 0x0c, 0xf0, 0x0c, 0x14, 0x0d, 0x13, 0x0d, 0x2c, 0x0d, 0x28, 0x0d, + 0x2c, 0x0d, 0x2a, 0x0d, 0x20, 0x0d, 0x1b, 0x0d, 0x02, 0x0d, 0xff, 0x0c, + 0xd2, 0x0c, 0xcf, 0x0c, 0x93, 0x0c, 0x90, 0x0c, 0x43, 0x0c, 0x40, 0x0c, + 0xe3, 0x0b, 0xdf, 0x0b, 0x75, 0x0b, 0x72, 0x0b, 0xf7, 0x0a, 0xf4, 0x0a, + 0x6c, 0x0a, 0x6b, 0x0a, 0xd8, 0x09, 0xd5, 0x09, 0x36, 0x09, 0x32, 0x09, + 0x8b, 0x08, 0x89, 0x08, 0xd6, 0x07, 0xd3, 0x07, 0x15, 0x07, 0x14, 0x07, + 0x53, 0x06, 0x50, 0x06, 0x84, 0x05, 0x81, 0x05, 0xb7, 0x04, 0xb4, 0x04, + 0xe0, 0x03, 0xdf, 0x03, 0x0a, 0x03, 0x06, 0x03, 0x30, 0x02, 0x2f, 0x02, + 0x54, 0x01, 0x51, 0x01, 0x7a, 0x00, 0x78, 0x00, 0xa0, 0xff, 0x9d, 0xff, + 0xc8, 0xfe, 0xc7, 0xfe, 0xf3, 0xfd, 0xee, 0xfd, 0x1e, 0xfd, 0x1c, 0xfd, + 0x50, 0xfc, 0x4d, 0xfc, 0x84, 0xfb, 0x82, 0xfb, 0xc1, 0xfa, 0xbd, 0xfa, + 0xff, 0xf9, 0xfe, 0xf9, 0x4a, 0xf9, 0x46, 0xf9, 0x96, 0xf8, 0x93, 0xf8, + 0xee, 0xf7, 0xed, 0xf7, 0x4f, 0xf7, 0x4c, 0xf7, 0xb6, 0xf6, 0xb4, 0xf6, + 0x2d, 0xf6, 0x2a, 0xf6, 0xab, 0xf5, 0xa8, 0xf5, 0x36, 0xf5, 0x34, 0xf5, + 0xcc, 0xf4, 0xca, 0xf4, 0x71, 0xf4, 0x6e, 0xf4, 0x20, 0xf4, 0x1f, 0xf4, + 0xe2, 0xf3, 0xde, 0xf3, 0xaf, 0xf3, 0xae, 0xf3, 0x8d, 0xf3, 0x89, 0xf3, + 0x7a, 0xf3, 0x78, 0xf3, 0x73, 0xf3, 0x71, 0xf3, 0x84, 0xf3, 0x81, 0xf3, + 0x9e, 0xf3, 0x9b, 0xf3, 0xcd, 0xf3, 0xcb, 0xf3, 0x0c, 0xf4, 0x0a, 0xf4, + 0x59, 0xf4, 0x56, 0xf4, 0xba, 0xf4, 0xb9, 0xf4, 0x26, 0xf5, 0x23, 0xf5, + 0xa2, 0xf5, 0xa0, 0xf5, 0x2c, 0xf6, 0x27, 0xf6, 0xc2, 0xf6, 0xbf, 0xf6, + 0x64, 0xf7, 0x61, 0xf7, 0x10, 0xf8, 0x0c, 0xf8, 0xc7, 0xf8, 0xc3, 0xf8, + 0x83, 0xf9, 0x82, 0xf9, 0x49, 0xfa, 0x45, 0xfa, 0x17, 0xfb, 0x14, 0xfb, + 0xe7, 0xfb, 0xe4, 0xfb, 0xbb, 0xfc, 0xb8, 0xfc, 0x93, 0xfd, 0x91, 0xfd, + 0x6f, 0xfe, 0x6b, 0xfe, 0x49, 0xff, 0x47, 0xff, 0x25, 0x00, 0x23, 0x00, + 0x00, 0x01, 0xfc, 0x00, 0xd9, 0x01, 0xd5, 0x01, 0xad, 0x02, 0xaa, 0x02, + 0x81, 0x03, 0x7e, 0x03, 0x4e, 0x04, 0x4c, 0x04, 0x18, 0x05, 0x13, 0x05, + 0xdb, 0x05, 0xda, 0x05, 0x99, 0x06, 0x95, 0x06, 0x4e, 0x07, 0x4d, 0x07, + 0xfd, 0x07, 0xfa, 0x07, 0xa2, 0x08, 0xa0, 0x08, 0x3f, 0x09, 0x3a, 0x09, + 0xcf, 0x09, 0xcf, 0x09, 0x57, 0x0a, 0x54, 0x0a, 0xd3, 0x0a, 0xd1, 0x0a, + 0x44, 0x0b, 0x41, 0x0b, 0xa7, 0x0b, 0xa4, 0x0b, 0xfc, 0x0b, 0xfa, 0x0b, + 0x43, 0x0c, 0x40, 0x0c, 0x7f, 0x0c, 0x7b, 0x0c, 0xa5, 0x0c, 0xa5, 0x0c, + 0xc4, 0x0c, 0xc0, 0x0c, 0xce, 0x0c, 0xcd, 0x0c, 0xcc, 0x0c, 0xc8, 0x0c, + 0xb8, 0x0c, 0xb6, 0x0c, 0x91, 0x0c, 0x8f, 0x0c, 0x5c, 0x0c, 0x5a, 0x0c, + 0x15, 0x0c, 0x16, 0x0c, 0xbe, 0x0b, 0xbb, 0x0b, 0x5a, 0x0b, 0x57, 0x0b, + 0xe1, 0x0a, 0xde, 0x0a, 0x61, 0x0a, 0x5e, 0x0a, 0xcf, 0x09, 0xcd, 0x09, + 0x34, 0x09, 0x30, 0x09, 0x8b, 0x08, 0x89, 0x08, 0xdb, 0x07, 0xd7, 0x07, + 0x20, 0x07, 0x1f, 0x07, 0x5d, 0x06, 0x59, 0x06, 0x96, 0x05, 0x93, 0x05, + 0xc3, 0x04, 0xc1, 0x04, 0xef, 0x03, 0xe9, 0x03, 0x16, 0x03, 0x14, 0x03, + 0x39, 0x02, 0x35, 0x02, 0x5d, 0x01, 0x59, 0x01, 0x7a, 0x00, 0x78, 0x00, + 0x9d, 0xff, 0x9b, 0xff, 0xc0, 0xfe, 0xbc, 0xfe, 0xe2, 0xfd, 0xe1, 0xfd, + 0x0c, 0xfd, 0x08, 0xfd, 0x33, 0xfc, 0x30, 0xfc, 0x63, 0xfb, 0x61, 0xfb, + 0x98, 0xfa, 0x94, 0xfa, 0xd0, 0xf9, 0xcf, 0xf9, 0x11, 0xf9, 0x0e, 0xf9, + 0x57, 0xf8, 0x55, 0xf8, 0xaa, 0xf7, 0xa6, 0xf7, 0xfe, 0xf6, 0xfb, 0xf6, + 0x63, 0xf6, 0x5f, 0xf6, 0xcf, 0xf5, 0xcc, 0xf5, 0x46, 0xf5, 0x41, 0xf5, + 0xc9, 0xf4, 0xc8, 0xf4, 0x58, 0xf4, 0x54, 0xf4, 0xf6, 0xf3, 0xf4, 0xf3, + 0x9f, 0xf3, 0x9b, 0xf3, 0x57, 0xf3, 0x54, 0xf3, 0x1e, 0xf3, 0x1a, 0xf3, + 0xf5, 0xf2, 0xf1, 0xf2, 0xdb, 0xf2, 0xd9, 0xf2, 0xd1, 0xf2, 0xcf, 0xf2, + 0xd9, 0xf2, 0xd6, 0xf2, 0xf2, 0xf2, 0xee, 0xf2, 0x1a, 0xf3, 0x18, 0xf3, + 0x58, 0xf3, 0x55, 0xf3, 0xa1, 0xf3, 0xa0, 0xf3, 0xff, 0xf3, 0xfa, 0xf3, + 0x67, 0xf4, 0x65, 0xf4, 0xde, 0xf4, 0xdc, 0xf4, 0x66, 0xf5, 0x65, 0xf5, + 0xf9, 0xf5, 0xf5, 0xf5, 0x99, 0xf6, 0x98, 0xf6, 0x43, 0xf7, 0x40, 0xf7, + 0xf6, 0xf7, 0xf4, 0xf7, 0xb4, 0xf8, 0xb1, 0xf8, 0x78, 0xf9, 0x73, 0xf9, + 0x41, 0xfa, 0x42, 0xfa, 0x11, 0xfb, 0x0e, 0xfb, 0xe5, 0xfb, 0xe4, 0xfb, + 0xbe, 0xfc, 0xba, 0xfc, 0x96, 0xfd, 0x94, 0xfd, 0x72, 0xfe, 0x6f, 0xfe, + 0x4c, 0xff, 0x4b, 0xff, 0x29, 0x00, 0x25, 0x00, 0x01, 0x01, 0xff, 0x00, + 0xd8, 0x01, 0xd5, 0x01, 0xab, 0x02, 0xa9, 0x02, 0x7c, 0x03, 0x7a, 0x03, + 0x47, 0x04, 0x45, 0x04, 0x0f, 0x05, 0x0c, 0x05, 0xce, 0x05, 0xce, 0x05, + 0x87, 0x06, 0x84, 0x06, 0x3a, 0x07, 0x39, 0x07, 0xe5, 0x07, 0xe1, 0x07, + 0x87, 0x08, 0x85, 0x08, 0x1f, 0x09, 0x1b, 0x09, 0xad, 0x09, 0xaa, 0x09, + 0x32, 0x0a, 0x2f, 0x0a, 0xa8, 0x0a, 0xa5, 0x0a, 0x16, 0x0b, 0x13, 0x0b, + 0x71, 0x0b, 0x6f, 0x0b, 0xc5, 0x0b, 0xc2, 0x0b, 0x06, 0x0c, 0x03, 0x0c, + 0x3e, 0x0c, 0x39, 0x0c, 0x61, 0x0c, 0x5e, 0x0c, 0x79, 0x0c, 0x75, 0x0c, + 0x80, 0x0c, 0x7c, 0x0c, 0x77, 0x0c, 0x74, 0x0c, 0x5d, 0x0c, 0x59, 0x0c, + 0x36, 0x0c, 0x34, 0x0c, 0xf9, 0x0b, 0xf5, 0x0b, 0xb0, 0x0b, 0xac, 0x0b, + 0x53, 0x0b, 0x50, 0x0b, 0xe7, 0x0a, 0xe4, 0x0a, 0x70, 0x0a, 0x6c, 0x0a, + 0xe6, 0x09, 0xe3, 0x09, 0x55, 0x09, 0x51, 0x09, 0xb4, 0x08, 0xb1, 0x08, + 0x09, 0x08, 0x05, 0x08, 0x56, 0x07, 0x52, 0x07, 0x96, 0x06, 0x93, 0x06, + 0xd3, 0x05, 0xd0, 0x05, 0x04, 0x05, 0x01, 0x05, 0x34, 0x04, 0x30, 0x04, + 0x5e, 0x03, 0x5a, 0x03, 0x82, 0x02, 0x7f, 0x02, 0xa9, 0x01, 0xa5, 0x01, + 0xc6, 0x00, 0xc4, 0x00, 0xec, 0xff, 0xe8, 0xff, 0x0d, 0xff, 0x0a, 0xff, + 0x31, 0xfe, 0x2d, 0xfe, 0x5a, 0xfd, 0x56, 0xfd, 0x7e, 0xfc, 0x7c, 0xfc, + 0xaf, 0xfb, 0xad, 0xfb, 0xde, 0xfa, 0xdb, 0xfa, 0x16, 0xfa, 0x13, 0xfa, + 0x55, 0xf9, 0x52, 0xf9, 0x99, 0xf8, 0x96, 0xf8, 0xe8, 0xf7, 0xe5, 0xf7, + 0x3b, 0xf7, 0x39, 0xf7, 0x9b, 0xf6, 0x99, 0xf6, 0x04, 0xf6, 0x01, 0xf6, + 0x76, 0xf5, 0x74, 0xf5, 0xf8, 0xf4, 0xf5, 0xf4, 0x81, 0xf4, 0x7f, 0xf4, + 0x19, 0xf4, 0x17, 0xf4, 0xbe, 0xf3, 0xbd, 0xf3, 0x72, 0xf3, 0x70, 0xf3, + 0x34, 0xf3, 0x33, 0xf3, 0x04, 0xf3, 0x01, 0xf3, 0xe4, 0xf2, 0xe1, 0xf2, + 0xd5, 0xf2, 0xd2, 0xf2, 0xd3, 0xf2, 0xcf, 0xf2, 0xe8, 0xf2, 0xe5, 0xf2, + 0x09, 0xf3, 0x05, 0xf3, 0x3d, 0xf3, 0x39, 0xf3, 0x81, 0xf3, 0x80, 0xf3, + 0xd5, 0xf3, 0xd2, 0xf3, 0x3a, 0xf4, 0x37, 0xf4, 0xac, 0xf4, 0xaa, 0xf4, + 0x2b, 0xf5, 0x26, 0xf5, 0xba, 0xf5, 0xb8, 0xf5, 0x53, 0xf6, 0x50, 0xf6, + 0xfa, 0xf6, 0xf7, 0xf6, 0xa9, 0xf7, 0xa8, 0xf7, 0x64, 0xf8, 0x61, 0xf8, + 0x25, 0xf9, 0x24, 0xf9, 0xf0, 0xf9, 0xea, 0xf9, 0xbb, 0xfa, 0xbb, 0xfa, + 0x92, 0xfb, 0x8e, 0xfb, 0x68, 0xfc, 0x66, 0xfc, 0x46, 0xfd, 0x43, 0xfd, + 0x20, 0xfe, 0x1d, 0xfe, 0xfe, 0xfe, 0xff, 0xfe, 0xdf, 0xff, 0xdb, 0xff, + 0xbb, 0x00, 0xb9, 0x00, 0x96, 0x01, 0x94, 0x01, 0x71, 0x02, 0x6d, 0x02, + 0x45, 0x03, 0x43, 0x03, 0x18, 0x04, 0x16, 0x04, 0xe4, 0x04, 0xe3, 0x04, + 0xac, 0x05, 0xab, 0x05, 0x70, 0x06, 0x6c, 0x06, 0x27, 0x07, 0x24, 0x07, + 0xda, 0x07, 0xd7, 0x07, 0x84, 0x08, 0x82, 0x08, 0x22, 0x09, 0x21, 0x09, + 0xbd, 0x09, 0xba, 0x09, 0x43, 0x0a, 0x44, 0x0a, 0xca, 0x0a, 0xc6, 0x0a, + 0x3b, 0x0b, 0x3b, 0x0b, 0xa6, 0x0b, 0xa3, 0x0b, 0x00, 0x0c, 0xfe, 0x0b, + 0x4a, 0x0c, 0x49, 0x0c, 0x8c, 0x0c, 0x8a, 0x0c, 0xb8, 0x0c, 0xb5, 0x0c, + 0xd9, 0x0c, 0xd9, 0x0c, 0xeb, 0x0c, 0xe7, 0x0c, 0xe6, 0x0c, 0xe4, 0x0c, + 0xda, 0x0c, 0xda, 0x0c, 0xb4, 0x0c, 0xb0, 0x0c, 0x86, 0x0c, 0x86, 0x0c, + 0x40, 0x0c, 0x3e, 0x0c, 0xea, 0x0b, 0xe9, 0x0b, 0x8a, 0x0b, 0x89, 0x0b, + 0x13, 0x0b, 0x10, 0x0b, 0x96, 0x0a, 0x94, 0x0a, 0x06, 0x0a, 0x04, 0x0a, + 0x6b, 0x09, 0x69, 0x09, 0xc7, 0x08, 0xc6, 0x08, 0x19, 0x08, 0x14, 0x08, + 0x5f, 0x07, 0x60, 0x07, 0x9f, 0x06, 0x9c, 0x06, 0xd5, 0x05, 0xd4, 0x05, + 0x07, 0x05, 0x04, 0x05, 0x36, 0x04, 0x34, 0x04, 0x5d, 0x03, 0x5a, 0x03, + 0x85, 0x02, 0x83, 0x02, 0xab, 0x01, 0xa8, 0x01, 0xcd, 0x00, 0xcd, 0x00, + 0xf7, 0xff, 0xf2, 0xff, 0x1a, 0xff, 0x19, 0xff, 0x43, 0xfe, 0x40, 0xfe, + 0x6d, 0xfd, 0x6b, 0xfd, 0x9b, 0xfc, 0x9a, 0xfc, 0xcf, 0xfb, 0xcc, 0xfb, + 0x06, 0xfb, 0x04, 0xfb, 0x42, 0xfa, 0x40, 0xfa, 0x89, 0xf9, 0x87, 0xf9, + 0xd1, 0xf8, 0xd0, 0xf8, 0x28, 0xf8, 0x23, 0xf8, 0x80, 0xf7, 0x80, 0xf7, + 0xe7, 0xf6, 0xe3, 0xf6, 0x58, 0xf6, 0x57, 0xf6, 0xd1, 0xf5, 0xcd, 0xf5, + 0x58, 0xf5, 0x55, 0xf5, 0xea, 0xf4, 0xe9, 0xf4, 0x87, 0xf4, 0x84, 0xf4, + 0x36, 0xf4, 0x34, 0xf4, 0xeb, 0xf3, 0xeb, 0xf3, 0xb6, 0xf3, 0xb4, 0xf3, + 0x8b, 0xf3, 0x89, 0xf3, 0x71, 0xf3, 0x6e, 0xf3, 0x69, 0xf3, 0x66, 0xf3, + 0x6a, 0xf3, 0x68, 0xf3, 0x84, 0xf3, 0x81, 0xf3, 0xa5, 0xf3, 0xa4, 0xf3, + 0xe0, 0xf3, 0xde, 0xf3, 0x25, 0xf4, 0x22, 0xf4, 0x7c, 0xf4, 0x7b, 0xf4, + 0xe4, 0xf4, 0xe3, 0xf4, 0x57, 0xf5, 0x54, 0xf5, 0xdb, 0xf5, 0xda, 0xf5, + 0x6c, 0xf6, 0x68, 0xf6, 0x0a, 0xf7, 0x07, 0xf7, 0xb1, 0xf7, 0xaf, 0xf7, + 0x63, 0xf8, 0x5f, 0xf8, 0x1d, 0xf9, 0x1c, 0xf9, 0xe1, 0xf9, 0xdf, 0xf9, + 0xab, 0xfa, 0xa8, 0xfa, 0x7b, 0xfb, 0x7b, 0xfb, 0x50, 0xfc, 0x4d, 0xfc, + 0x2a, 0xfd, 0x28, 0xfd, 0x03, 0xfe, 0x04, 0xfe, 0xe5, 0xfe, 0xe0, 0xfe, + 0xc0, 0xff, 0xc0, 0xff, 0xa0, 0x00, 0x9f, 0x00, 0x7e, 0x01, 0x7b, 0x01, + 0x58, 0x02, 0x56, 0x02, 0x31, 0x03, 0x2f, 0x03, 0x06, 0x04, 0x04, 0x04, + 0xd6, 0x04, 0xd4, 0x04, 0xa1, 0x05, 0xa0, 0x05, 0x67, 0x06, 0x63, 0x06, + 0x26, 0x07, 0x25, 0x07, 0xdd, 0x07, 0xd9, 0x07, 0x8a, 0x08, 0x8a, 0x08, + 0x30, 0x09, 0x2c, 0x09, 0xcb, 0x09, 0xcb, 0x09, 0x5e, 0x0a, 0x5b, 0x0a, + 0xe1, 0x0a, 0xdf, 0x0a, 0x5f, 0x0b, 0x5c, 0x0b, 0xca, 0x0b, 0xc8, 0x0b, + 0x2c, 0x0c, 0x2a, 0x0c, 0x7f, 0x0c, 0x7c, 0x0c, 0xc1, 0x0c, 0xc1, 0x0c, + 0xf9, 0x0c, 0xf5, 0x0c, 0x1c, 0x0d, 0x1d, 0x0d, 0x35, 0x0d, 0x31, 0x0d, + 0x39, 0x0d, 0x38, 0x0d, 0x32, 0x0d, 0x30, 0x0d, 0x15, 0x0d, 0x13, 0x0d, + 0xea, 0x0c, 0xe8, 0x0c, 0xad, 0x0c, 0xab, 0x0c, 0x5f, 0x0c, 0x5c, 0x0c, + 0x01, 0x0c, 0x01, 0x0c, 0x94, 0x0b, 0x90, 0x0b, 0x19, 0x0b, 0x1a, 0x0b, + 0x93, 0x0a, 0x8e, 0x0a, 0xfd, 0x09, 0xfc, 0x09, 0x5e, 0x09, 0x5c, 0x09, + 0xb3, 0x08, 0xb1, 0x08, 0x00, 0x08, 0x00, 0x08, 0x43, 0x07, 0x41, 0x07, + 0x7f, 0x06, 0x7d, 0x06, 0xb3, 0x05, 0xb2, 0x05, 0xe4, 0x04, 0xe2, 0x04, + 0x0f, 0x04, 0x0c, 0x04, 0x36, 0x03, 0x36, 0x03, 0x5f, 0x02, 0x5d, 0x02, + 0x84, 0x01, 0x84, 0x01, 0xa8, 0x00, 0xa7, 0x00, 0xd0, 0xff, 0xd0, 0xff, + 0xf6, 0xfe, 0xf3, 0xfe, 0x1f, 0xfe, 0x20, 0xfe, 0x4c, 0xfd, 0x4a, 0xfd, + 0x7c, 0xfc, 0x7b, 0xfc, 0xaf, 0xfb, 0xaf, 0xfb, 0xea, 0xfa, 0xe7, 0xfa, + 0x2a, 0xfa, 0x2b, 0xfa, 0x6f, 0xf9, 0x6d, 0xf9, 0xbf, 0xf8, 0xbe, 0xf8, + 0x13, 0xf8, 0x12, 0xf8, 0x74, 0xf7, 0x70, 0xf7, 0xda, 0xf6, 0xda, 0xf6, + 0x4d, 0xf6, 0x4d, 0xf6, 0xcc, 0xf5, 0xc9, 0xf5, 0x52, 0xf5, 0x52, 0xf5, + 0xe9, 0xf4, 0xe7, 0xf4, 0x8a, 0xf4, 0x89, 0xf4, 0x39, 0xf4, 0x39, 0xf4, + 0xf8, 0xf3, 0xf7, 0xf3, 0xc2, 0xf3, 0xc1, 0xf3, 0x9e, 0xf3, 0x9e, 0xf3, + 0x85, 0xf3, 0x84, 0xf3, 0x82, 0xf3, 0x82, 0xf3, 0x8a, 0xf3, 0x8a, 0xf3, + 0xa3, 0xf3, 0xa1, 0xf3, 0xd0, 0xf3, 0xd1, 0xf3, 0x08, 0xf4, 0x05, 0xf4, + 0x55, 0xf4, 0x55, 0xf4, 0xae, 0xf4, 0xad, 0xf4, 0x16, 0xf5, 0x16, 0xf5, + 0x91, 0xf5, 0x91, 0xf5, 0x14, 0xf6, 0x11, 0xf6, 0xab, 0xf6, 0xab, 0xf6, + 0x46, 0xf7, 0x45, 0xf7, 0xf2, 0xf7, 0xf1, 0xf7, 0xa3, 0xf8, 0xa1, 0xf8, + 0x5f, 0xf9, 0x5e, 0xf9, 0x21, 0xfa, 0x20, 0xfa, 0xec, 0xfa, 0xea, 0xfa, + 0xb8, 0xfb, 0xbb, 0xfb, 0x8d, 0xfc, 0x89, 0xfc, 0x62, 0xfd, 0x63, 0xfd, + 0x3b, 0xfe, 0x39, 0xfe, 0x19, 0xff, 0x17, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0xcb, 0x00, 0xca, 0x00, 0xa2, 0x01, 0xa0, 0x01, 0x79, 0x02, 0x78, 0x02, + 0x4c, 0x03, 0x4c, 0x03, 0x19, 0x04, 0x17, 0x04, 0xe5, 0x04, 0xe4, 0x04, + 0xa7, 0x05, 0xa6, 0x05, 0x65, 0x06, 0x66, 0x06, 0x1e, 0x07, 0x1e, 0x07, + 0xca, 0x07, 0xc8, 0x07, 0x73, 0x08, 0x74, 0x08, 0x10, 0x09, 0x0e, 0x09, + 0xa1, 0x09, 0xa3, 0x09, 0x2f, 0x0a, 0x2c, 0x0a, 0xa7, 0x0a, 0xa8, 0x0a, + 0x1d, 0x0b, 0x1c, 0x0b, 0x82, 0x0b, 0x83, 0x0b, 0xdc, 0x0b, 0xd9, 0x0b, + 0x25, 0x0c, 0x25, 0x0c, 0x5f, 0x0c, 0x5e, 0x0c, 0x90, 0x0c, 0x8f, 0x0c, + 0xaa, 0x0c, 0xab, 0x0c, 0xbd, 0x0c, 0xbb, 0x0c, 0xbb, 0x0c, 0xbc, 0x0c, + 0xac, 0x0c, 0xa9, 0x0c, 0x8c, 0x0c, 0x8c, 0x0c, 0x59, 0x0c, 0x58, 0x0c, + 0x18, 0x0c, 0x17, 0x0c, 0xc7, 0x0b, 0xc7, 0x0b, 0x64, 0x0b, 0x62, 0x0b, + 0xf5, 0x0a, 0xf5, 0x0a, 0x78, 0x0a, 0x76, 0x0a, 0xeb, 0x09, 0xea, 0x09, + 0x55, 0x09, 0x56, 0x09, 0xb3, 0x08, 0xb2, 0x08, 0x07, 0x08, 0x06, 0x08, + 0x50, 0x07, 0x51, 0x07, 0x94, 0x06, 0x90, 0x06, 0xca, 0x05, 0xcd, 0x05, + 0x02, 0x05, 0xff, 0x04, 0x2d, 0x04, 0x2d, 0x04, 0x58, 0x03, 0x58, 0x03, + 0x81, 0x02, 0x7f, 0x02, 0xa4, 0x01, 0xa4, 0x01, 0xcc, 0x00, 0xcb, 0x00, + 0xed, 0xff, 0xec, 0xff, 0x12, 0xff, 0x13, 0xff, 0x39, 0xfe, 0x37, 0xfe, + 0x61, 0xfd, 0x61, 0xfd, 0x8f, 0xfc, 0x8d, 0xfc, 0xbd, 0xfb, 0xbe, 0xfb, + 0xf3, 0xfa, 0xf1, 0xfa, 0x2c, 0xfa, 0x2d, 0xfa, 0x6d, 0xf9, 0x6d, 0xf9, + 0xb6, 0xf8, 0xb7, 0xf8, 0x04, 0xf8, 0x02, 0xf8, 0x5e, 0xf7, 0x5d, 0xf7, + 0xbc, 0xf6, 0xbb, 0xf6, 0x2a, 0xf6, 0x2a, 0xf6, 0xa0, 0xf5, 0x9e, 0xf5, + 0x1f, 0xf5, 0x21, 0xf5, 0xb0, 0xf4, 0xac, 0xf4, 0x47, 0xf4, 0x49, 0xf4, + 0xf3, 0xf3, 0xf0, 0xf3, 0xa5, 0xf3, 0xa6, 0xf3, 0x69, 0xf3, 0x69, 0xf3, + 0x3d, 0xf3, 0x3c, 0xf3, 0x1d, 0xf3, 0x1d, 0xf3, 0x0f, 0xf3, 0x0f, 0xf3, + 0x10, 0xf3, 0x10, 0xf3, 0x24, 0xf3, 0x23, 0xf3, 0x47, 0xf3, 0x45, 0xf3, + 0x7b, 0xf3, 0x7a, 0xf3, 0xbf, 0xf3, 0xbe, 0xf3, 0x11, 0xf4, 0x13, 0xf4, + 0x77, 0xf4, 0x76, 0xf4, 0xe6, 0xf4, 0xe5, 0xf4, 0x65, 0xf5, 0x66, 0xf5, + 0xf3, 0xf5, 0xf0, 0xf5, 0x89, 0xf6, 0x8a, 0xf6, 0x2e, 0xf7, 0x2c, 0xf7, + 0xd9, 0xf7, 0xda, 0xf7, 0x92, 0xf8, 0x8f, 0xf8, 0x4e, 0xf9, 0x4e, 0xf9, + 0x14, 0xfa, 0x14, 0xfa, 0xde, 0xfa, 0xdc, 0xfa, 0xae, 0xfb, 0xaf, 0xfb, + 0x7f, 0xfc, 0x7d, 0xfc, 0x54, 0xfd, 0x55, 0xfd, 0x2b, 0xfe, 0x2b, 0xfe, + 0x03, 0xff, 0x01, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xb1, 0x00, 0xb1, 0x00, + 0x86, 0x01, 0x85, 0x01, 0x57, 0x02, 0x56, 0x02, 0x23, 0x03, 0x25, 0x03, + 0xf2, 0x03, 0xf0, 0x03, 0xb3, 0x04, 0xb3, 0x04, 0x75, 0x05, 0x75, 0x05, + 0x2d, 0x06, 0x2c, 0x06, 0xdd, 0x06, 0xdf, 0x06, 0x8b, 0x07, 0x88, 0x07, + 0x27, 0x08, 0x2a, 0x08, 0xc5, 0x08, 0xc3, 0x08, 0x4d, 0x09, 0x4e, 0x09, + 0xd7, 0x09, 0xd5, 0x09, 0x4f, 0x0a, 0x4f, 0x0a, 0xbb, 0x0a, 0xb9, 0x0a, + 0x1f, 0x0b, 0x1e, 0x0b, 0x6f, 0x0b, 0x6e, 0x0b, 0xb9, 0x0b, 0xb7, 0x0b, + 0xef, 0x0b, 0xee, 0x0b, 0x17, 0x0c, 0x17, 0x0c, 0x34, 0x0c, 0x32, 0x0c, + 0x3e, 0x0c, 0x3f, 0x0c, 0x3b, 0x0c, 0x39, 0x0c, 0x27, 0x0c, 0x29, 0x0c, + 0x05, 0x0c, 0x05, 0x0c, 0xd2, 0x0b, 0xd1, 0x0b, 0x8d, 0x0b, 0x8e, 0x0b, + 0x39, 0x0b, 0x39, 0x0b, 0xd7, 0x0a, 0xd6, 0x0a, 0x67, 0x0a, 0x66, 0x0a, + 0xe5, 0x09, 0xe5, 0x09, 0x5b, 0x09, 0x5a, 0x09, 0xc2, 0x08, 0xc2, 0x08, + 0x1e, 0x08, 0x1f, 0x08, 0x73, 0x07, 0x71, 0x07, 0xba, 0x06, 0xbc, 0x06, + 0xfe, 0x05, 0xfd, 0x05, 0x36, 0x05, 0x37, 0x05, 0x6c, 0x04, 0x6c, 0x04, + 0x9b, 0x03, 0x9a, 0x03, 0xc7, 0x02, 0xc9, 0x02, 0xf0, 0x01, 0xef, 0x01, + 0x16, 0x01, 0x18, 0x01, 0x3f, 0x00, 0x3c, 0x00, 0x65, 0xff, 0x65, 0xff, + 0x8d, 0xfe, 0x8b, 0xfe, 0xb6, 0xfd, 0xb5, 0xfd, 0xe3, 0xfc, 0xe3, 0xfc, + 0x10, 0xfc, 0x10, 0xfc, 0x47, 0xfb, 0x45, 0xfb, 0x7e, 0xfa, 0x7d, 0xfa, + 0xbf, 0xf9, 0xbe, 0xf9, 0x04, 0xf9, 0x03, 0xf9, 0x51, 0xf8, 0x50, 0xf8, + 0xa9, 0xf7, 0xa9, 0xf7, 0x03, 0xf7, 0x04, 0xf7, 0x6f, 0xf6, 0x6e, 0xf6, + 0xde, 0xf5, 0xdf, 0xf5, 0x5e, 0xf5, 0x5d, 0xf5, 0xe8, 0xf4, 0xe7, 0xf4, + 0x7c, 0xf4, 0x7c, 0xf4, 0x1e, 0xf4, 0x1d, 0xf4, 0xcf, 0xf3, 0xd0, 0xf3, + 0x8d, 0xf3, 0x8b, 0xf3, 0x58, 0xf3, 0x58, 0xf3, 0x32, 0xf3, 0x30, 0xf3, + 0x1d, 0xf3, 0x1c, 0xf3, 0x17, 0xf3, 0x16, 0xf3, 0x22, 0xf3, 0x21, 0xf3, + 0x3d, 0xf3, 0x3d, 0xf3, 0x6a, 0xf3, 0x68, 0xf3, 0xa4, 0xf3, 0xa3, 0xf3, + 0xf3, 0xf3, 0xf2, 0xf3, 0x4a, 0xf4, 0x4a, 0xf4, 0xb4, 0xf4, 0xb4, 0xf4, + 0x2c, 0xf5, 0x29, 0xf5, 0xb0, 0xf5, 0xaf, 0xf5, 0x43, 0xf6, 0x41, 0xf6, + 0xde, 0xf6, 0xdd, 0xf6, 0x87, 0xf7, 0x86, 0xf7, 0x37, 0xf8, 0x35, 0xf8, + 0xf0, 0xf8, 0xf0, 0xf8, 0xb3, 0xf9, 0xaf, 0xf9, 0x78, 0xfa, 0x78, 0xfa, + 0x47, 0xfb, 0x44, 0xfb, 0x14, 0xfc, 0x15, 0xfc, 0xee, 0xfc, 0xea, 0xfc, + 0xc2, 0xfd, 0xc2, 0xfd, 0x9c, 0xfe, 0x9a, 0xfe, 0x76, 0xff, 0x77, 0xff, + 0x4f, 0x00, 0x4c, 0x00, 0x26, 0x01, 0x27, 0x01, 0xfb, 0x01, 0xfa, 0x01, + 0xcf, 0x02, 0xce, 0x02, 0x9c, 0x03, 0x9c, 0x03, 0x68, 0x04, 0x67, 0x04, + 0x2e, 0x05, 0x2d, 0x05, 0xeb, 0x05, 0xea, 0x05, 0xa5, 0x06, 0xa5, 0x06, + 0x57, 0x07, 0x56, 0x07, 0x01, 0x08, 0xfe, 0x07, 0xa1, 0x08, 0xa2, 0x08, + 0x37, 0x09, 0x35, 0x09, 0xc4, 0x09, 0xc5, 0x09, 0x46, 0x0a, 0x47, 0x0a, + 0xbe, 0x0a, 0xbd, 0x0a, 0x2a, 0x0b, 0x2a, 0x0b, 0x88, 0x0b, 0x87, 0x0b, + 0xd7, 0x0b, 0xd7, 0x0b, 0x19, 0x0c, 0x1a, 0x0c, 0x4f, 0x0c, 0x4d, 0x0c, + 0x73, 0x0c, 0x73, 0x0c, 0x8a, 0x0c, 0x8a, 0x0c, 0x8f, 0x0c, 0x8e, 0x0c, + 0x86, 0x0c, 0x87, 0x0c, 0x6f, 0x0c, 0x6e, 0x0c, 0x42, 0x0c, 0x42, 0x0c, + 0x0b, 0x0c, 0x0b, 0x0c, 0xbf, 0x0b, 0xbd, 0x0b, 0x63, 0x0b, 0x65, 0x0b, + 0xfc, 0x0a, 0xfc, 0x0a, 0x84, 0x0a, 0x81, 0x0a, 0x02, 0x0a, 0x02, 0x0a, + 0x6e, 0x09, 0x6f, 0x09, 0xd5, 0x08, 0xd4, 0x08, 0x2c, 0x08, 0x2f, 0x08, + 0x7f, 0x07, 0x7b, 0x07, 0xc6, 0x06, 0xc8, 0x06, 0x05, 0x06, 0x03, 0x06, + 0x3f, 0x05, 0x3e, 0x05, 0x71, 0x04, 0x73, 0x04, 0xa2, 0x03, 0xa1, 0x03, + 0xd0, 0x02, 0xd0, 0x02, 0xf7, 0x01, 0xf7, 0x01, 0x23, 0x01, 0x22, 0x01, + 0x4b, 0x00, 0x4a, 0x00, 0x75, 0xff, 0x75, 0xff, 0xa0, 0xfe, 0xa0, 0xfe, + 0xce, 0xfd, 0xcc, 0xfd, 0xfe, 0xfc, 0xfd, 0xfc, 0x32, 0xfc, 0x32, 0xfc, + 0x6c, 0xfb, 0x6b, 0xfb, 0xa9, 0xfa, 0xaa, 0xfa, 0xee, 0xf9, 0xee, 0xf9, + 0x3b, 0xf9, 0x3b, 0xf9, 0x8c, 0xf8, 0x8c, 0xf8, 0xe9, 0xf7, 0xe8, 0xf7, + 0x4c, 0xf7, 0x4e, 0xf7, 0xbd, 0xf6, 0xb9, 0xf6, 0x31, 0xf6, 0x33, 0xf6, + 0xb7, 0xf5, 0xb6, 0xf5, 0x45, 0xf5, 0x45, 0xf5, 0xe0, 0xf4, 0xe1, 0xf4, + 0x86, 0xf4, 0x85, 0xf4, 0x3d, 0xf4, 0x3d, 0xf4, 0xfe, 0xf3, 0xfd, 0xf3, + 0xd1, 0xf3, 0xd0, 0xf3, 0xb0, 0xf3, 0xaf, 0xf3, 0x9f, 0xf3, 0x9f, 0xf3, + 0x9e, 0xf3, 0x9d, 0xf3, 0xaa, 0xf3, 0xaa, 0xf3, 0xcc, 0xf3, 0xca, 0xf3, + 0xf7, 0xf3, 0xf7, 0xf3, 0x37, 0xf4, 0x36, 0xf4, 0x84, 0xf4, 0x81, 0xf4, + 0xe2, 0xf4, 0xe3, 0xf4, 0x4d, 0xf5, 0x4b, 0xf5, 0xc7, 0xf5, 0xc7, 0xf5, + 0x4f, 0xf6, 0x4e, 0xf6, 0xe2, 0xf6, 0xe0, 0xf6, 0x83, 0xf7, 0x83, 0xf7, + 0x2c, 0xf8, 0x2b, 0xf8, 0xe0, 0xf8, 0xde, 0xf8, 0x9b, 0xf9, 0x9d, 0xf9, + 0x5e, 0xfa, 0x5a, 0xfa, 0x28, 0xfb, 0x29, 0xfb, 0xf6, 0xfb, 0xf5, 0xfb, + 0xc9, 0xfc, 0xc8, 0xfc, 0xa0, 0xfd, 0xa0, 0xfd, 0x79, 0xfe, 0x76, 0xfe, + 0x56, 0xff, 0x55, 0xff, 0x2c, 0x00, 0x2c, 0x00, 0x0b, 0x01, 0x09, 0x01, + 0xde, 0x01, 0xde, 0x01, 0xb6, 0x02, 0xb7, 0x02, 0x8a, 0x03, 0x89, 0x03, + 0x59, 0x04, 0x59, 0x04, 0x25, 0x05, 0x25, 0x05, 0xe7, 0x05, 0xe8, 0x05, + 0xa9, 0x06, 0xa7, 0x06, 0x5d, 0x07, 0x5e, 0x07, 0x10, 0x08, 0x0c, 0x08, + 0xb5, 0x08, 0xb8, 0x08, 0x52, 0x09, 0x51, 0x09, 0xea, 0x09, 0xe9, 0x09, + 0x70, 0x0a, 0x71, 0x0a, 0xf0, 0x0a, 0xf0, 0x0a, 0x62, 0x0b, 0x61, 0x0b, + 0xc9, 0x0b, 0xc8, 0x0b, 0x20, 0x0c, 0x20, 0x0c, 0x6a, 0x0c, 0x69, 0x0c, + 0xa6, 0x0c, 0xa7, 0x0c, 0xd4, 0x0c, 0xd2, 0x0c, 0xef, 0x0c, 0xf0, 0x0c, + 0x01, 0x0d, 0x01, 0x0d, 0xfd, 0x0c, 0xfd, 0x0c, 0xee, 0x0c, 0xef, 0x0c, + 0xc9, 0x0c, 0xc9, 0x0c, 0x99, 0x0c, 0x96, 0x0c, 0x54, 0x0c, 0x55, 0x0c, + 0x00, 0x0c, 0xff, 0x0b, 0xa0, 0x0b, 0x9f, 0x0b, 0x2c, 0x0b, 0x2c, 0x0b, + 0xb0, 0x0a, 0xae, 0x0a, 0x24, 0x0a, 0x24, 0x0a, 0x8c, 0x09, 0x8c, 0x09, + 0xed, 0x08, 0xec, 0x08, 0x3f, 0x08, 0x40, 0x08, 0x8b, 0x07, 0x8a, 0x07, + 0xcf, 0x06, 0xcf, 0x06, 0x09, 0x06, 0x09, 0x06, 0x41, 0x05, 0x41, 0x05, + 0x71, 0x04, 0x70, 0x04, 0x9f, 0x03, 0x9e, 0x03, 0xcb, 0x02, 0xcb, 0x02, + 0xf0, 0x01, 0xef, 0x01, 0x1b, 0x01, 0x1c, 0x01, 0x43, 0x00, 0x40, 0x00, + 0x6a, 0xff, 0x6b, 0xff, 0x97, 0xfe, 0x98, 0xfe, 0xc2, 0xfd, 0xbf, 0xfd, + 0xf2, 0xfc, 0xf6, 0xfc, 0x29, 0xfc, 0x25, 0xfc, 0x5f, 0xfb, 0x61, 0xfb, + 0xa1, 0xfa, 0x9f, 0xfa, 0xe2, 0xf9, 0xe4, 0xf9, 0x32, 0xf9, 0x2f, 0xf9, + 0x82, 0xf8, 0x84, 0xf8, 0xe1, 0xf7, 0xdf, 0xf7, 0x46, 0xf7, 0x46, 0xf7, + 0xb4, 0xf6, 0xb4, 0xf6, 0x2d, 0xf6, 0x2d, 0xf6, 0xb2, 0xf5, 0xb1, 0xf5, + 0x41, 0xf5, 0x41, 0xf5, 0xdd, 0xf4, 0xdc, 0xf4, 0x88, 0xf4, 0x87, 0xf4, + 0x3a, 0xf4, 0x3b, 0xf4, 0x01, 0xf4, 0x00, 0xf4, 0xd1, 0xf3, 0xd2, 0xf3, + 0xb6, 0xf3, 0xb5, 0xf3, 0xa4, 0xf3, 0xa3, 0xf3, 0xa4, 0xf3, 0xa5, 0xf3, + 0xb8, 0xf3, 0xb7, 0xf3, 0xd4, 0xf3, 0xd6, 0xf3, 0x08, 0xf4, 0x06, 0xf4, + 0x46, 0xf4, 0x47, 0xf4, 0x97, 0xf4, 0x97, 0xf4, 0xf8, 0xf4, 0xf6, 0xf4, + 0x64, 0xf5, 0x65, 0xf5, 0xe3, 0xf5, 0xe2, 0xf5, 0x6a, 0xf6, 0x6b, 0xf6, + 0x01, 0xf7, 0x02, 0xf7, 0xa3, 0xf7, 0xa2, 0xf7, 0x4e, 0xf8, 0x4e, 0xf8, + 0x02, 0xf9, 0x02, 0xf9, 0xbe, 0xf9, 0xbf, 0xf9, 0x84, 0xfa, 0x84, 0xfa, + 0x4c, 0xfb, 0x4e, 0xfb, 0x1d, 0xfc, 0x1c, 0xfc, 0xee, 0xfc, 0xf0, 0xfc, + 0xc5, 0xfd, 0xc5, 0xfd, 0x9e, 0xfe, 0x9e, 0xfe, 0x77, 0xff, 0x77, 0xff, + 0x4f, 0x00, 0x50, 0x00, 0x29, 0x01, 0x2a, 0x01, 0xfd, 0x01, 0xfc, 0x01, + 0xd1, 0x02, 0xd2, 0x02, 0xa2, 0x03, 0xa2, 0x03, 0x6d, 0x04, 0x6f, 0x04, + 0x36, 0x05, 0x34, 0x05, 0xf5, 0x05, 0xf8, 0x05, 0xb1, 0x06, 0xaf, 0x06, + 0x64, 0x07, 0x66, 0x07, 0x0e, 0x08, 0x0d, 0x08, 0xb1, 0x08, 0xb2, 0x08, + 0x4a, 0x09, 0x4a, 0x09, 0xdb, 0x09, 0xda, 0x09, 0x5f, 0x0a, 0x5f, 0x0a, + 0xd8, 0x0a, 0xd8, 0x0a, 0x46, 0x0b, 0x46, 0x0b, 0xa6, 0x0b, 0xa6, 0x0b, + 0xf8, 0x0b, 0xf7, 0x0b, 0x3d, 0x0c, 0x3e, 0x0c, 0x75, 0x0c, 0x73, 0x0c, + 0x9b, 0x0c, 0x9e, 0x0c, 0xb6, 0x0c, 0xb6, 0x0c, 0xc1, 0x0c, 0xc1, 0x0c, + 0xbb, 0x0c, 0xbb, 0x0c, 0xa4, 0x0c, 0xa2, 0x0c, 0x7e, 0x0c, 0x81, 0x0c, + 0x48, 0x0c, 0x45, 0x0c, 0x00, 0x0c, 0x03, 0x0c, 0xaa, 0x0b, 0xa8, 0x0b, + 0x44, 0x0b, 0x45, 0x0b, 0xd1, 0x0a, 0xd1, 0x0a, 0x4f, 0x0a, 0x4f, 0x0a, + 0xc4, 0x09, 0xc3, 0x09, 0x26, 0x09, 0x27, 0x09, 0x84, 0x08, 0x83, 0x08, + 0xd5, 0x07, 0xd4, 0x07, 0x1c, 0x07, 0x1d, 0x07, 0x5e, 0x06, 0x5b, 0x06, + 0x93, 0x05, 0x95, 0x05, 0xc7, 0x04, 0xc4, 0x04, 0xf6, 0x03, 0xf5, 0x03, + 0x1d, 0x03, 0x1f, 0x03, 0x47, 0x02, 0x46, 0x02, 0x6c, 0x01, 0x6a, 0x01, + 0x8f, 0x00, 0x90, 0x00, 0xb4, 0xff, 0xb4, 0xff, 0xd9, 0xfe, 0xd8, 0xfe, + 0x00, 0xfe, 0x02, 0xfe, 0x2b, 0xfd, 0x29, 0xfd, 0x58, 0xfc, 0x58, 0xfc, + 0x89, 0xfb, 0x88, 0xfb, 0xbf, 0xfa, 0xc1, 0xfa, 0xfd, 0xf9, 0xfd, 0xf9, + 0x3c, 0xf9, 0x3e, 0xf9, 0x8c, 0xf8, 0x89, 0xf8, 0xd9, 0xf7, 0xdb, 0xf7, + 0x37, 0xf7, 0x35, 0xf7, 0x98, 0xf6, 0x9a, 0xf6, 0x08, 0xf6, 0x05, 0xf6, + 0x81, 0xf5, 0x83, 0xf5, 0x04, 0xf5, 0x04, 0xf5, 0x97, 0xf4, 0x96, 0xf4, + 0x33, 0xf4, 0x33, 0xf4, 0xe0, 0xf3, 0xdf, 0xf3, 0x97, 0xf3, 0x96, 0xf3, + 0x5d, 0xf3, 0x5e, 0xf3, 0x35, 0xf3, 0x32, 0xf3, 0x18, 0xf3, 0x1b, 0xf3, + 0x0f, 0xf3, 0x0c, 0xf3, 0x12, 0xf3, 0x13, 0xf3, 0x29, 0xf3, 0x28, 0xf3, + 0x4f, 0xf3, 0x50, 0xf3, 0x87, 0xf3, 0x85, 0xf3, 0xcd, 0xf3, 0xcd, 0xf3, + 0x24, 0xf4, 0x23, 0xf4, 0x87, 0xf4, 0x88, 0xf4, 0xff, 0xf4, 0xfd, 0xf4, + 0x7f, 0xf5, 0x7f, 0xf5, 0x0d, 0xf6, 0x0d, 0xf6, 0xaa, 0xf6, 0xa9, 0xf6, + 0x4c, 0xf7, 0x4b, 0xf7, 0xfd, 0xf7, 0xfd, 0xf7, 0xb3, 0xf8, 0xb3, 0xf8, + 0x73, 0xf9, 0x73, 0xf9, 0x3a, 0xfa, 0x3b, 0xfa, 0x04, 0xfb, 0x04, 0xfb, + 0xd7, 0xfb, 0xd7, 0xfb, 0xa9, 0xfc, 0xa9, 0xfc, 0x81, 0xfd, 0x80, 0xfd, + 0x58, 0xfe, 0x5a, 0xfe, 0x30, 0xff, 0x30, 0xff, 0x0a, 0x00, 0x0c, 0x00, + 0xe0, 0x00, 0xdf, 0x00, 0xb6, 0x01, 0xb7, 0x01, 0x88, 0x02, 0x88, 0x02, + 0x56, 0x03, 0x56, 0x03, 0x22, 0x04, 0x24, 0x04, 0xe4, 0x04, 0xe5, 0x04, + 0xa7, 0x05, 0xa6, 0x05, 0x5e, 0x06, 0x5f, 0x06, 0x10, 0x07, 0x0f, 0x07, + 0xb8, 0x07, 0xba, 0x07, 0x59, 0x08, 0x58, 0x08, 0xf2, 0x08, 0xf2, 0x08, + 0x7f, 0x09, 0x80, 0x09, 0x02, 0x0a, 0x03, 0x0a, 0x7b, 0x0a, 0x7b, 0x0a, + 0xe7, 0x0a, 0xe8, 0x0a, 0x47, 0x0b, 0x45, 0x0b, 0x97, 0x0b, 0x99, 0x0b, + 0xde, 0x0b, 0xdc, 0x0b, 0x13, 0x0c, 0x13, 0x0c, 0x3b, 0x0c, 0x3c, 0x0c, + 0x54, 0x0c, 0x53, 0x0c, 0x60, 0x0c, 0x60, 0x0c, 0x59, 0x0c, 0x5a, 0x0c, + 0x47, 0x0c, 0x46, 0x0c, 0x1f, 0x0c, 0x20, 0x0c, 0xec, 0x0b, 0xeb, 0x0b, + 0xa4, 0x0b, 0xa4, 0x0b, 0x4e, 0x0b, 0x50, 0x0b, 0xec, 0x0a, 0xeb, 0x0a, + 0x75, 0x0a, 0x77, 0x0a, 0xf5, 0x09, 0xf5, 0x09, 0x67, 0x09, 0x68, 0x09, + 0xd0, 0x08, 0xcf, 0x08, 0x29, 0x08, 0x29, 0x08, 0x7c, 0x07, 0x7c, 0x07, + 0xc1, 0x06, 0xc1, 0x06, 0x02, 0x06, 0x02, 0x06, 0x39, 0x05, 0x39, 0x05, + 0x6e, 0x04, 0x6e, 0x04, 0x9b, 0x03, 0x9b, 0x03, 0xc4, 0x02, 0xc3, 0x02, + 0xec, 0x01, 0xee, 0x01, 0x10, 0x01, 0x0f, 0x01, 0x37, 0x00, 0x37, 0x00, + 0x5b, 0xff, 0x5a, 0xff, 0x80, 0xfe, 0x80, 0xfe, 0xa9, 0xfd, 0xa9, 0xfd, + 0xd1, 0xfc, 0xd2, 0xfc, 0x03, 0xfc, 0x02, 0xfc, 0x33, 0xfb, 0x35, 0xfb, + 0x6c, 0xfa, 0x6a, 0xfa, 0xa7, 0xf9, 0xaa, 0xf9, 0xee, 0xf8, 0xed, 0xf8, + 0x38, 0xf8, 0x3a, 0xf8, 0x8d, 0xf7, 0x8b, 0xf7, 0xea, 0xf6, 0xea, 0xf6, + 0x50, 0xf6, 0x52, 0xf6, 0xc3, 0xf5, 0xc1, 0xf5, 0x40, 0xf5, 0x42, 0xf5, + 0xc5, 0xf4, 0xc4, 0xf4, 0x5d, 0xf4, 0x5e, 0xf4, 0xfd, 0xf3, 0xfe, 0xf3, + 0xac, 0xf3, 0xac, 0xf3, 0x69, 0xf3, 0x68, 0xf3, 0x32, 0xf3, 0x33, 0xf3, + 0x0d, 0xf3, 0x0e, 0xf3, 0xf7, 0xf2, 0xf6, 0xf2, 0xf0, 0xf2, 0xf0, 0xf2, + 0xfc, 0xf2, 0xfa, 0xf2, 0x13, 0xf3, 0x15, 0xf3, 0x42, 0xf3, 0x40, 0xf3, + 0x7c, 0xf3, 0x7d, 0xf3, 0xc4, 0xf3, 0xc5, 0xf3, 0x23, 0xf4, 0x22, 0xf4, + 0x87, 0xf4, 0x88, 0xf4, 0x03, 0xf5, 0x01, 0xf5, 0x83, 0xf5, 0x86, 0xf5, + 0x17, 0xf6, 0x16, 0xf6, 0xb6, 0xf6, 0xb6, 0xf6, 0x5c, 0xf7, 0x5c, 0xf7, + 0x0e, 0xf8, 0x0e, 0xf8, 0xc8, 0xf8, 0xc8, 0xf8, 0x8c, 0xf9, 0x8a, 0xf9, + 0x53, 0xfa, 0x54, 0xfa, 0x21, 0xfb, 0x20, 0xfb, 0xf6, 0xfb, 0xf4, 0xfb, + 0xc9, 0xfc, 0xc9, 0xfc, 0xa5, 0xfd, 0xa4, 0xfd, 0x7d, 0xfe, 0x7c, 0xfe, + 0x5b, 0xff, 0x5b, 0xff, 0x33, 0x00, 0x31, 0x00, 0x0f, 0x01, 0x0e, 0x01, + 0xe3, 0x01, 0xe3, 0x01, 0xb8, 0x02, 0xb7, 0x02, 0x8b, 0x03, 0x8b, 0x03, + 0x57, 0x04, 0x55, 0x04, 0x1e, 0x05, 0x1d, 0x05, 0xe1, 0x05, 0xdf, 0x05, + 0x99, 0x06, 0x9a, 0x06, 0x4f, 0x07, 0x4d, 0x07, 0xf8, 0x07, 0xf9, 0x07, + 0x9c, 0x08, 0x9b, 0x08, 0x36, 0x09, 0x36, 0x09, 0xc5, 0x09, 0xc4, 0x09, + 0x4a, 0x0a, 0x4a, 0x0a, 0xc3, 0x0a, 0xc1, 0x0a, 0x30, 0x0b, 0x30, 0x0b, + 0x90, 0x0b, 0x8f, 0x0b, 0xe2, 0x0b, 0xe2, 0x0b, 0x28, 0x0c, 0x28, 0x0c, + 0x5f, 0x0c, 0x5e, 0x0c, 0x88, 0x0c, 0x88, 0x0c, 0xa1, 0x0c, 0x9f, 0x0c, + 0xaa, 0x0c, 0xa9, 0x0c, 0xa5, 0x0c, 0xa3, 0x0c, 0x8d, 0x0c, 0x8e, 0x0c, + 0x68, 0x0c, 0x65, 0x0c, 0x2d, 0x0c, 0x2f, 0x0c, 0xe7, 0x0b, 0xe5, 0x0b, + 0x8e, 0x0b, 0x8f, 0x0b, 0x28, 0x0b, 0x29, 0x0b, 0xb3, 0x0a, 0xb3, 0x0a, + 0x31, 0x0a, 0x30, 0x0a, 0xa2, 0x09, 0xa1, 0x09, 0x07, 0x09, 0x08, 0x09, + 0x61, 0x08, 0x60, 0x08, 0xb1, 0x07, 0xb2, 0x07, 0xfa, 0x06, 0xf7, 0x06, + 0x39, 0x06, 0x3a, 0x06, 0x74, 0x05, 0x72, 0x05, 0xa6, 0x04, 0xa6, 0x04, + 0xd6, 0x03, 0xd5, 0x03, 0xff, 0x02, 0xff, 0x02, 0x2a, 0x02, 0x29, 0x02, + 0x50, 0x01, 0x51, 0x01, 0x79, 0x00, 0x75, 0x00, 0x9f, 0xff, 0xa1, 0xff, + 0xc8, 0xfe, 0xc7, 0xfe, 0xf4, 0xfd, 0xf6, 0xfd, 0x20, 0xfd, 0x1d, 0xfd, + 0x52, 0xfc, 0x53, 0xfc, 0x88, 0xfb, 0x87, 0xfb, 0xc2, 0xfa, 0xc1, 0xfa, + 0x06, 0xfa, 0x08, 0xfa, 0x4c, 0xf9, 0x4a, 0xf9, 0x9c, 0xf8, 0x9d, 0xf8, + 0xf5, 0xf7, 0xf3, 0xf7, 0x54, 0xf7, 0x54, 0xf7, 0xc1, 0xf6, 0xc2, 0xf6, + 0x35, 0xf6, 0x33, 0xf6, 0xb2, 0xf5, 0xb3, 0xf5, 0x41, 0xf5, 0x40, 0xf5, + 0xd4, 0xf4, 0xd2, 0xf4, 0x7a, 0xf4, 0x7c, 0xf4, 0x28, 0xf4, 0x26, 0xf4, + 0xe7, 0xf3, 0xe7, 0xf3, 0xb5, 0xf3, 0xb4, 0xf3, 0x90, 0xf3, 0x8f, 0xf3, + 0x7c, 0xf3, 0x7c, 0xf3, 0x77, 0xf3, 0x75, 0xf3, 0x7d, 0xf3, 0x7d, 0xf3, + 0x99, 0xf3, 0x9a, 0xf3, 0xc4, 0xf3, 0xc2, 0xf3, 0xfc, 0xf3, 0xfc, 0xf3, + 0x46, 0xf4, 0x47, 0xf4, 0xa0, 0xf4, 0xa0, 0xf4, 0x07, 0xf5, 0x07, 0xf5, + 0x7f, 0xf5, 0x81, 0xf5, 0x02, 0xf6, 0x02, 0xf6, 0x96, 0xf6, 0x95, 0xf6, + 0x30, 0xf7, 0x32, 0xf7, 0xda, 0xf7, 0xd9, 0xf7, 0x8b, 0xf8, 0x8b, 0xf8, + 0x47, 0xf9, 0x47, 0xf9, 0x07, 0xfa, 0x07, 0xfa, 0xd1, 0xfa, 0xcf, 0xfa, + 0x9f, 0xfb, 0x9f, 0xfb, 0x71, 0xfc, 0x6f, 0xfc, 0x4a, 0xfd, 0x4a, 0xfd, + 0x23, 0xfe, 0x22, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xdb, 0xff, 0xd8, 0xff, + 0xb6, 0x00, 0xb7, 0x00, 0x93, 0x01, 0x91, 0x01, 0x69, 0x02, 0x6a, 0x02, + 0x3f, 0x03, 0x3f, 0x03, 0x13, 0x04, 0x12, 0x04, 0xe0, 0x04, 0xde, 0x04, + 0xa9, 0x05, 0xa7, 0x05, 0x68, 0x06, 0x68, 0x06, 0x27, 0x07, 0x27, 0x07, + 0xdb, 0x07, 0xd9, 0x07, 0x86, 0x08, 0x85, 0x08, 0x28, 0x09, 0x28, 0x09, + 0xc0, 0x09, 0xbf, 0x09, 0x51, 0x0a, 0x50, 0x0a, 0xd2, 0x0a, 0xd3, 0x0a, + 0x4b, 0x0b, 0x49, 0x0b, 0xb4, 0x0b, 0xb6, 0x0b, 0x12, 0x0c, 0x12, 0x0c, + 0x62, 0x0c, 0x63, 0x0c, 0xa5, 0x0c, 0xa4, 0x0c, 0xd9, 0x0c, 0xd8, 0x0c, + 0xfb, 0x0c, 0xfc, 0x0c, 0x12, 0x0d, 0x11, 0x0d, 0x18, 0x0d, 0x17, 0x0d, + 0x0c, 0x0d, 0x0a, 0x0d, 0xf2, 0x0c, 0xf2, 0x0c, 0xc2, 0x0c, 0xc2, 0x0c, + 0x87, 0x0c, 0x87, 0x0c, 0x39, 0x0c, 0x38, 0x0c, 0xdb, 0x0b, 0xda, 0x0b, + 0x72, 0x0b, 0x73, 0x0b, 0xf9, 0x0a, 0xf6, 0x0a, 0x71, 0x0a, 0x72, 0x0a, + 0xe0, 0x09, 0xdf, 0x09, 0x41, 0x09, 0x41, 0x09, 0x97, 0x08, 0x97, 0x08, + 0xe4, 0x07, 0xe5, 0x07, 0x26, 0x07, 0x25, 0x07, 0x63, 0x06, 0x65, 0x06, + 0x97, 0x05, 0x95, 0x05, 0xc6, 0x04, 0xc9, 0x04, 0xf4, 0x03, 0xf3, 0x03, + 0x1b, 0x03, 0x1c, 0x03, 0x45, 0x02, 0x46, 0x02, 0x6a, 0x01, 0x68, 0x01, + 0x91, 0x00, 0x91, 0x00, 0xb6, 0xff, 0xb6, 0xff, 0xe2, 0xfe, 0xe1, 0xfe, + 0x0b, 0xfe, 0x0b, 0xfe, 0x38, 0xfd, 0x38, 0xfd, 0x6d, 0xfc, 0x6c, 0xfc, + 0xa1, 0xfb, 0xa3, 0xfb, 0xdf, 0xfa, 0xdf, 0xfa, 0x22, 0xfa, 0x21, 0xfa, + 0x6a, 0xf9, 0x6b, 0xf9, 0xbd, 0xf8, 0xbc, 0xf8, 0x13, 0xf8, 0x15, 0xf8, + 0x78, 0xf7, 0x77, 0xf7, 0xe4, 0xf6, 0xe4, 0xf6, 0x58, 0xf6, 0x58, 0xf6, + 0xdf, 0xf5, 0xdc, 0xf5, 0x65, 0xf5, 0x67, 0xf5, 0x03, 0xf5, 0x01, 0xf5, + 0xa4, 0xf4, 0xa5, 0xf4, 0x58, 0xf4, 0x59, 0xf4, 0x19, 0xf4, 0x18, 0xf4, + 0xe6, 0xf3, 0xe6, 0xf3, 0xc6, 0xf3, 0xc6, 0xf3, 0xad, 0xf3, 0xae, 0xf3, + 0xac, 0xf3, 0xad, 0xf3, 0xb7, 0xf3, 0xb8, 0xf3, 0xd1, 0xf3, 0xd2, 0xf3, + 0xfc, 0xf3, 0xff, 0xf3, 0x36, 0xf4, 0x36, 0xf4, 0x81, 0xf4, 0x85, 0xf4, + 0xda, 0xf4, 0xd9, 0xf4, 0x41, 0xf5, 0x43, 0xf5, 0xb9, 0xf5, 0xb9, 0xf5, + 0x3a, 0xf6, 0x3c, 0xf6, 0xcd, 0xf6, 0xce, 0xf6, 0x69, 0xf7, 0x69, 0xf7, + 0x0e, 0xf8, 0x0f, 0xf8, 0xbf, 0xf8, 0xc1, 0xf8, 0x76, 0xf9, 0x76, 0xf9, + 0x38, 0xfa, 0x38, 0xfa, 0xfa, 0xfa, 0xfd, 0xfa, 0xca, 0xfb, 0xca, 0xfb, + 0x98, 0xfc, 0x9a, 0xfc, 0x6b, 0xfd, 0x6b, 0xfd, 0x43, 0xfe, 0x43, 0xfe, + 0x17, 0xff, 0x18, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xc6, 0x00, 0xc8, 0x00, + 0x9c, 0x01, 0x9c, 0x01, 0x6f, 0x02, 0x70, 0x02, 0x3d, 0x03, 0x3e, 0x03, + 0x0c, 0x04, 0x0b, 0x04, 0xd2, 0x04, 0xd4, 0x04, 0x95, 0x05, 0x94, 0x05, + 0x50, 0x06, 0x52, 0x06, 0x06, 0x07, 0x05, 0x07, 0xb1, 0x07, 0xb3, 0x07, + 0x58, 0x08, 0x56, 0x08, 0xf3, 0x08, 0xf4, 0x08, 0x85, 0x09, 0x85, 0x09, + 0x0b, 0x0a, 0x0d, 0x0a, 0x8c, 0x0a, 0x8c, 0x0a, 0xfd, 0x0a, 0xfc, 0x0a, + 0x61, 0x0b, 0x63, 0x0b, 0xbb, 0x0b, 0xba, 0x0b, 0x04, 0x0c, 0x04, 0x0c, + 0x43, 0x0c, 0x43, 0x0c, 0x70, 0x0c, 0x6f, 0x0c, 0x8f, 0x0c, 0x90, 0x0c, + 0xa3, 0x0c, 0xa3, 0x0c, 0xa3, 0x0c, 0xa3, 0x0c, 0x97, 0x0c, 0x98, 0x0c, + 0x7a, 0x0c, 0x7c, 0x0c, 0x4c, 0x0c, 0x4c, 0x0c, 0x12, 0x0c, 0x11, 0x0c, + 0xc0, 0x0b, 0xc1, 0x0b, 0x66, 0x0b, 0x66, 0x0b, 0xfd, 0x0a, 0xfd, 0x0a, + 0x82, 0x0a, 0x83, 0x0a, 0x02, 0x0a, 0x01, 0x0a, 0x6d, 0x09, 0x6e, 0x09, + 0xd3, 0x08, 0xd3, 0x08, 0x2d, 0x08, 0x2d, 0x08, 0x7f, 0x07, 0x7f, 0x07, + 0xc6, 0x06, 0xc6, 0x06, 0x05, 0x06, 0x06, 0x06, 0x40, 0x05, 0x3f, 0x05, + 0x73, 0x04, 0x73, 0x04, 0xa4, 0x03, 0xa3, 0x03, 0xd1, 0x02, 0xd0, 0x02, + 0xfa, 0x01, 0xfa, 0x01, 0x23, 0x01, 0x22, 0x01, 0x4c, 0x00, 0x4c, 0x00, + 0x72, 0xff, 0x73, 0xff, 0x9e, 0xfe, 0x9d, 0xfe, 0xca, 0xfd, 0xca, 0xfd, + 0xf9, 0xfc, 0xf8, 0xfc, 0x2c, 0xfc, 0x2c, 0xfc, 0x61, 0xfb, 0x62, 0xfb, + 0x9f, 0xfa, 0x9f, 0xfa, 0xe0, 0xf9, 0xe1, 0xf9, 0x2c, 0xf9, 0x28, 0xf9, + 0x7b, 0xf8, 0x7d, 0xf8, 0xd1, 0xf7, 0xd0, 0xf7, 0x34, 0xf7, 0x34, 0xf7, + 0xa0, 0xf6, 0xa1, 0xf6, 0x14, 0xf6, 0x11, 0xf6, 0x94, 0xf5, 0x95, 0xf5, + 0x1d, 0xf5, 0x1f, 0xf5, 0xb8, 0xf4, 0xb8, 0xf4, 0x5c, 0xf4, 0x5e, 0xf4, + 0x0d, 0xf4, 0x0b, 0xf4, 0xcd, 0xf3, 0xcd, 0xf3, 0x99, 0xf3, 0x97, 0xf3, + 0x75, 0xf3, 0x74, 0xf3, 0x61, 0xf3, 0x60, 0xf3, 0x5b, 0xf3, 0x5a, 0xf3, + 0x64, 0xf3, 0x64, 0xf3, 0x82, 0xf3, 0x80, 0xf3, 0xaa, 0xf3, 0xa9, 0xf3, + 0xe6, 0xf3, 0xe5, 0xf3, 0x2d, 0xf4, 0x2c, 0xf4, 0x86, 0xf4, 0x86, 0xf4, + 0xee, 0xf4, 0xeb, 0xf4, 0x60, 0xf5, 0x60, 0xf5, 0xe4, 0xf5, 0xe3, 0xf5, + 0x71, 0xf6, 0x6f, 0xf6, 0x0a, 0xf7, 0x0c, 0xf7, 0xae, 0xf7, 0xac, 0xf7, + 0x5b, 0xf8, 0x5b, 0xf8, 0x0f, 0xf9, 0x0e, 0xf9, 0xcc, 0xf9, 0xcc, 0xf9, + 0x8f, 0xfa, 0x8d, 0xfa, 0x57, 0xfb, 0x57, 0xfb, 0x24, 0xfc, 0x21, 0xfc, + 0xf1, 0xfc, 0xf1, 0xfc, 0xc6, 0xfd, 0xc5, 0xfd, 0x97, 0xfe, 0x95, 0xfe, + 0x6c, 0xff, 0x6b, 0xff, 0x3d, 0x00, 0x3d, 0x00, 0x11, 0x01, 0x0e, 0x01, + 0xde, 0x01, 0xdf, 0x01, 0xac, 0x02, 0xaa, 0x02, 0x75, 0x03, 0x75, 0x03, + 0x38, 0x04, 0x37, 0x04, 0xf9, 0x04, 0xf7, 0x04, 0xb1, 0x05, 0xaf, 0x05, + 0x63, 0x06, 0x63, 0x06, 0x0e, 0x07, 0x0f, 0x07, 0xb1, 0x07, 0xb0, 0x07, + 0x4a, 0x08, 0x4b, 0x08, 0xde, 0x08, 0xde, 0x08, 0x61, 0x09, 0x61, 0x09, + 0xe2, 0x09, 0xe2, 0x09, 0x52, 0x0a, 0x51, 0x0a, 0xb8, 0x0a, 0xb6, 0x0a, + 0x10, 0x0b, 0x12, 0x0b, 0x5c, 0x0b, 0x59, 0x0b, 0x9c, 0x0b, 0x9f, 0x0b, + 0xcc, 0x0b, 0xcc, 0x0b, 0xf0, 0x0b, 0xf0, 0x0b, 0x03, 0x0c, 0x05, 0x0c, + 0x0b, 0x0c, 0x0a, 0x0c, 0xfe, 0x0b, 0xff, 0x0b, 0xe9, 0x0b, 0xe9, 0x0b, + 0xbe, 0x0b, 0xc0, 0x0b, 0x87, 0x0b, 0x87, 0x0b, 0x40, 0x0b, 0x3f, 0x0b, + 0xe6, 0x0a, 0xe7, 0x0a, 0x84, 0x0a, 0x85, 0x0a, 0x0f, 0x0a, 0x10, 0x0a, + 0x91, 0x09, 0x8f, 0x09, 0x03, 0x09, 0x04, 0x09, 0x6d, 0x08, 0x6d, 0x08, + 0xc9, 0x07, 0xcc, 0x07, 0x1f, 0x07, 0x20, 0x07, 0x6b, 0x06, 0x6a, 0x06, + 0xae, 0x05, 0xb0, 0x05, 0xec, 0x04, 0xed, 0x04, 0x26, 0x04, 0x24, 0x04, + 0x56, 0x03, 0x58, 0x03, 0x8a, 0x02, 0x88, 0x02, 0xb3, 0x01, 0xb5, 0x01, + 0xe3, 0x00, 0xe1, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x37, 0xff, 0x37, 0xff, + 0x65, 0xfe, 0x66, 0xfe, 0x94, 0xfd, 0x91, 0xfd, 0xc3, 0xfc, 0xc6, 0xfc, + 0xfb, 0xfb, 0xf8, 0xfb, 0x32, 0xfb, 0x35, 0xfb, 0x73, 0xfa, 0x71, 0xfa, + 0xb6, 0xf9, 0xb9, 0xf9, 0x05, 0xf9, 0x02, 0xf9, 0x55, 0xf8, 0x56, 0xf8, + 0xb3, 0xf7, 0xb3, 0xf7, 0x16, 0xf7, 0x15, 0xf7, 0x85, 0xf6, 0x86, 0xf6, + 0xfc, 0xf5, 0xfc, 0xf5, 0x81, 0xf5, 0x81, 0xf5, 0x0f, 0xf5, 0x11, 0xf5, + 0xaa, 0xf4, 0xa9, 0xf4, 0x52, 0xf4, 0x53, 0xf4, 0x05, 0xf4, 0x06, 0xf4, + 0xc9, 0xf3, 0xc8, 0xf3, 0x98, 0xf3, 0x9a, 0xf3, 0x79, 0xf3, 0x78, 0xf3, + 0x67, 0xf3, 0x67, 0xf3, 0x62, 0xf3, 0x63, 0xf3, 0x72, 0xf3, 0x71, 0xf3, + 0x8e, 0xf3, 0x90, 0xf3, 0xbd, 0xf3, 0xbc, 0xf3, 0xf8, 0xf3, 0xf9, 0xf3, + 0x45, 0xf4, 0x45, 0xf4, 0x9d, 0xf4, 0x9f, 0xf4, 0x07, 0xf5, 0x07, 0xf5, + 0x7d, 0xf5, 0x80, 0xf5, 0x01, 0xf6, 0xff, 0xf5, 0x8d, 0xf6, 0x90, 0xf6, + 0x29, 0xf7, 0x28, 0xf7, 0xcb, 0xf7, 0xcc, 0xf7, 0x78, 0xf8, 0x7b, 0xf8, + 0x30, 0xf9, 0x2e, 0xf9, 0xea, 0xf9, 0xec, 0xf9, 0xaf, 0xfa, 0xae, 0xfa, + 0x74, 0xfb, 0x75, 0xfb, 0x41, 0xfc, 0x43, 0xfc, 0x10, 0xfd, 0x11, 0xfd, + 0xe3, 0xfd, 0xe2, 0xfd, 0xb4, 0xfe, 0xb6, 0xfe, 0x8b, 0xff, 0x89, 0xff, + 0x5b, 0x00, 0x5c, 0x00, 0x2e, 0x01, 0x2f, 0x01, 0xfd, 0x01, 0xfd, 0x01, + 0xc8, 0x02, 0xc9, 0x02, 0x92, 0x03, 0x93, 0x03, 0x57, 0x04, 0x58, 0x04, + 0x16, 0x05, 0x16, 0x05, 0xd0, 0x05, 0xd0, 0x05, 0x82, 0x06, 0x82, 0x06, + 0x2e, 0x07, 0x2e, 0x07, 0xd0, 0x07, 0xd2, 0x07, 0x6e, 0x08, 0x6c, 0x08, + 0xfb, 0x08, 0xfd, 0x08, 0x85, 0x09, 0x84, 0x09, 0x02, 0x0a, 0x02, 0x0a, + 0x73, 0x0a, 0x74, 0x0a, 0xdb, 0x0a, 0xd9, 0x0a, 0x30, 0x0b, 0x32, 0x0b, + 0x7f, 0x0b, 0x7d, 0x0b, 0xbc, 0x0b, 0xbc, 0x0b, 0xed, 0x0b, 0xed, 0x0b, + 0x0f, 0x0c, 0x0e, 0x0c, 0x23, 0x0c, 0x23, 0x0c, 0x28, 0x0c, 0x27, 0x0c, + 0x1e, 0x0c, 0x1e, 0x0c, 0x04, 0x0c, 0x02, 0x0c, 0xd7, 0x0b, 0xd8, 0x0b, + 0xa0, 0x0b, 0x9d, 0x0b, 0x53, 0x0b, 0x54, 0x0b, 0xfe, 0x0a, 0xfd, 0x0a, + 0x96, 0x0a, 0x96, 0x0a, 0x21, 0x0a, 0x20, 0x0a, 0xa4, 0x09, 0xa1, 0x09, + 0x14, 0x09, 0x15, 0x09, 0x7e, 0x08, 0x7d, 0x08, 0xdd, 0x07, 0xdc, 0x07, + 0x30, 0x07, 0x30, 0x07, 0x7f, 0x06, 0x7e, 0x06, 0xc1, 0x05, 0xc0, 0x05, + 0x03, 0x05, 0x02, 0x05, 0x38, 0x04, 0x3b, 0x04, 0x73, 0x03, 0x70, 0x03, + 0xa3, 0x02, 0xa4, 0x02, 0xd2, 0x01, 0xd1, 0x01, 0x03, 0x01, 0x02, 0x01, + 0x2f, 0x00, 0x30, 0x00, 0x5e, 0xff, 0x5d, 0xff, 0x8f, 0xfe, 0x90, 0xfe, + 0xc1, 0xfd, 0xc2, 0xfd, 0xf8, 0xfc, 0xf8, 0xfc, 0x30, 0xfc, 0x30, 0xfc, + 0x6f, 0xfb, 0x6f, 0xfb, 0xb3, 0xfa, 0xb3, 0xfa, 0xfd, 0xf9, 0xfd, 0xf9, + 0x4e, 0xf9, 0x4e, 0xf9, 0xa5, 0xf8, 0xa6, 0xf8, 0x05, 0xf8, 0x05, 0xf8, + 0x6e, 0xf7, 0x6f, 0xf7, 0xe1, 0xf6, 0xe1, 0xf6, 0x5d, 0xf6, 0x5e, 0xf6, + 0xe7, 0xf5, 0xe6, 0xf5, 0x77, 0xf5, 0x79, 0xf5, 0x19, 0xf5, 0x17, 0xf5, + 0xc4, 0xf4, 0xc5, 0xf4, 0x7c, 0xf4, 0x7c, 0xf4, 0x42, 0xf4, 0x41, 0xf4, + 0x13, 0xf4, 0x16, 0xf4, 0xf9, 0xf3, 0xf7, 0xf3, 0xe9, 0xf3, 0xe9, 0xf3, + 0xe9, 0xf3, 0xe8, 0xf3, 0xf8, 0xf3, 0xfa, 0xf3, 0x19, 0xf4, 0x18, 0xf4, + 0x46, 0xf4, 0x46, 0xf4, 0x82, 0xf4, 0x82, 0xf4, 0xd2, 0xf4, 0xd1, 0xf4, + 0x2a, 0xf5, 0x28, 0xf5, 0x93, 0xf5, 0x95, 0xf5, 0x0c, 0xf6, 0x0a, 0xf6, + 0x8c, 0xf6, 0x8f, 0xf6, 0x1f, 0xf7, 0x1e, 0xf7, 0xb9, 0xf7, 0xb9, 0xf7, + 0x5e, 0xf8, 0x5f, 0xf8, 0x0c, 0xf9, 0x0d, 0xf9, 0xc2, 0xf9, 0xc2, 0xf9, + 0x80, 0xfa, 0x80, 0xfa, 0x43, 0xfb, 0x42, 0xfb, 0x0a, 0xfc, 0x0c, 0xfc, + 0xda, 0xfc, 0xd9, 0xfc, 0xa8, 0xfd, 0xa9, 0xfd, 0x7d, 0xfe, 0x7d, 0xfe, + 0x50, 0xff, 0x52, 0xff, 0x25, 0x00, 0x24, 0x00, 0xf9, 0x00, 0xfa, 0x00, + 0xcc, 0x01, 0xcc, 0x01, 0x9c, 0x02, 0x9b, 0x02, 0x67, 0x03, 0x69, 0x03, + 0x33, 0x04, 0x33, 0x04, 0xf5, 0x04, 0xf7, 0x04, 0xb8, 0x05, 0xb8, 0x05, + 0x6c, 0x06, 0x6d, 0x06, 0x22, 0x07, 0x22, 0x07, 0xcb, 0x07, 0xcc, 0x07, + 0x6d, 0x08, 0x6e, 0x08, 0x07, 0x09, 0x08, 0x09, 0x97, 0x09, 0x97, 0x09, + 0x1b, 0x0a, 0x1d, 0x0a, 0x96, 0x0a, 0x97, 0x0a, 0x02, 0x0b, 0x03, 0x0b, + 0x66, 0x0b, 0x67, 0x0b, 0xba, 0x0b, 0xbb, 0x0b, 0x02, 0x0c, 0x03, 0x0c, + 0x3c, 0x0c, 0x3e, 0x0c, 0x68, 0x0c, 0x66, 0x0c, 0x82, 0x0c, 0x86, 0x0c, + 0x92, 0x0c, 0x90, 0x0c, 0x90, 0x0c, 0x93, 0x0c, 0x7f, 0x0c, 0x7d, 0x0c, + 0x5f, 0x0c, 0x60, 0x0c, 0x2b, 0x0c, 0x2b, 0x0c, 0xeb, 0x0b, 0xeb, 0x0b, + 0x9b, 0x0b, 0x9b, 0x0b, 0x3b, 0x0b, 0x3d, 0x0b, 0xd0, 0x0a, 0xcf, 0x0a, + 0x57, 0x0a, 0x57, 0x0a, 0xd0, 0x09, 0xd1, 0x09, 0x43, 0x09, 0x41, 0x09, + 0xa4, 0x08, 0xa5, 0x08, 0xff, 0x07, 0x00, 0x08, 0x53, 0x07, 0x50, 0x07, + 0x99, 0x06, 0x9b, 0x06, 0xdd, 0x05, 0xdc, 0x05, 0x1b, 0x05, 0x1a, 0x05, + 0x4f, 0x04, 0x50, 0x04, 0x86, 0x03, 0x84, 0x03, 0xb5, 0x02, 0xb8, 0x02, + 0xe9, 0x01, 0xe7, 0x01, 0x15, 0x01, 0x16, 0x01, 0x44, 0x00, 0x45, 0x00, + 0x72, 0xff, 0x72, 0xff, 0xa5, 0xfe, 0xa6, 0xfe, 0xd7, 0xfd, 0xd8, 0xfd, + 0x0f, 0xfd, 0x0e, 0xfd, 0x47, 0xfc, 0x49, 0xfc, 0x88, 0xfb, 0x87, 0xfb, + 0xcd, 0xfa, 0xce, 0xfa, 0x17, 0xfa, 0x17, 0xfa, 0x69, 0xf9, 0x6a, 0xf9, + 0xc2, 0xf8, 0xc1, 0xf8, 0x22, 0xf8, 0x23, 0xf8, 0x90, 0xf7, 0x8e, 0xf7, + 0x02, 0xf7, 0x03, 0xf7, 0x81, 0xf6, 0x81, 0xf6, 0x0a, 0xf6, 0x09, 0xf6, + 0x9f, 0xf5, 0xa0, 0xf5, 0x40, 0xf5, 0x40, 0xf5, 0xec, 0xf4, 0xec, 0xf4, + 0xa7, 0xf4, 0xa7, 0xf4, 0x6d, 0xf4, 0x6c, 0xf4, 0x44, 0xf4, 0x44, 0xf4, + 0x27, 0xf4, 0x27, 0xf4, 0x1a, 0xf4, 0x1a, 0xf4, 0x1c, 0xf4, 0x1c, 0xf4, + 0x2c, 0xf4, 0x2c, 0xf4, 0x4f, 0xf4, 0x4f, 0xf4, 0x7a, 0xf4, 0x7c, 0xf4, + 0xbe, 0xf4, 0xbe, 0xf4, 0x09, 0xf5, 0x08, 0xf5, 0x67, 0xf5, 0x68, 0xf5, + 0xd1, 0xf5, 0xcf, 0xf5, 0x4b, 0xf6, 0x4b, 0xf6, 0xd0, 0xf6, 0xcf, 0xf6, + 0x61, 0xf7, 0x62, 0xf7, 0xfd, 0xf7, 0xfd, 0xf7, 0xa1, 0xf8, 0xa1, 0xf8, + 0x53, 0xf9, 0x51, 0xf9, 0x06, 0xfa, 0x08, 0xfa, 0xc5, 0xfa, 0xc3, 0xfa, + 0x86, 0xfb, 0x88, 0xfb, 0x4f, 0xfc, 0x4f, 0xfc, 0x1d, 0xfd, 0x1c, 0xfd, + 0xea, 0xfd, 0xea, 0xfd, 0xbd, 0xfe, 0xbd, 0xfe, 0x8e, 0xff, 0x8d, 0xff, + 0x62, 0x00, 0x62, 0x00, 0x32, 0x01, 0x32, 0x01, 0x02, 0x02, 0x02, 0x02, + 0xd0, 0x02, 0xcf, 0x02, 0x9b, 0x03, 0x99, 0x03, 0x60, 0x04, 0x60, 0x04, + 0x21, 0x05, 0x1f, 0x05, 0xdc, 0x05, 0xdc, 0x05, 0x93, 0x06, 0x90, 0x06, + 0x3c, 0x07, 0x3d, 0x07, 0xe5, 0x07, 0xe2, 0x07, 0x7f, 0x08, 0x7e, 0x08, + 0x14, 0x09, 0x13, 0x09, 0x9e, 0x09, 0x9d, 0x09, 0x1b, 0x0a, 0x1c, 0x0a, + 0x94, 0x0a, 0x92, 0x0a, 0xf9, 0x0a, 0xf8, 0x0a, 0x54, 0x0b, 0x55, 0x0b, + 0xa4, 0x0b, 0xa3, 0x0b, 0xe6, 0x0b, 0xe5, 0x0b, 0x16, 0x0c, 0x17, 0x0c, + 0x3d, 0x0c, 0x3c, 0x0c, 0x53, 0x0c, 0x52, 0x0c, 0x5c, 0x0c, 0x5c, 0x0c, + 0x55, 0x0c, 0x52, 0x0c, 0x3d, 0x0c, 0x3d, 0x0c, 0x16, 0x0c, 0x16, 0x0c, + 0xe0, 0x0b, 0xdf, 0x0b, 0x98, 0x0b, 0x99, 0x0b, 0x45, 0x0b, 0x43, 0x0b, + 0xe0, 0x0a, 0xe1, 0x0a, 0x71, 0x0a, 0x70, 0x0a, 0xf2, 0x09, 0xf2, 0x09, + 0x69, 0x09, 0x68, 0x09, 0xd2, 0x08, 0xd4, 0x08, 0x33, 0x08, 0x33, 0x08, + 0x8c, 0x07, 0x8b, 0x07, 0xd7, 0x06, 0xd7, 0x06, 0x1d, 0x06, 0x1e, 0x06, + 0x5f, 0x05, 0x5d, 0x05, 0x95, 0x04, 0x98, 0x04, 0xcd, 0x03, 0xcd, 0x03, + 0xfc, 0x02, 0xfc, 0x02, 0x2f, 0x02, 0x2e, 0x02, 0x58, 0x01, 0x5a, 0x01, + 0x87, 0x00, 0x84, 0x00, 0xb1, 0xff, 0xb3, 0xff, 0xe0, 0xfe, 0xde, 0xfe, + 0x11, 0xfe, 0x10, 0xfe, 0x3f, 0xfd, 0x41, 0xfd, 0x76, 0xfc, 0x75, 0xfc, + 0xb0, 0xfb, 0xaf, 0xfb, 0xed, 0xfa, 0xec, 0xfa, 0x31, 0xfa, 0x32, 0xfa, + 0x7d, 0xf9, 0x7c, 0xf9, 0xcc, 0xf8, 0xcb, 0xf8, 0x28, 0xf8, 0x27, 0xf8, + 0x87, 0xf7, 0x87, 0xf7, 0xf6, 0xf6, 0xf4, 0xf6, 0x6a, 0xf6, 0x69, 0xf6, + 0xe8, 0xf5, 0xe8, 0xf5, 0x78, 0xf5, 0x77, 0xf5, 0x0b, 0xf5, 0x0a, 0xf5, + 0xb0, 0xf4, 0xb1, 0xf4, 0x62, 0xf4, 0x5f, 0xf4, 0x1b, 0xf4, 0x1b, 0xf4, + 0xec, 0xf3, 0xea, 0xf3, 0xc2, 0xf3, 0xc3, 0xf3, 0xae, 0xf3, 0xae, 0xf3, + 0xa6, 0xf3, 0xa5, 0xf3, 0xac, 0xf3, 0xad, 0xf3, 0xc8, 0xf3, 0xc5, 0xf3, + 0xeb, 0xf3, 0xec, 0xf3, 0x24, 0xf4, 0x24, 0xf4, 0x6b, 0xf4, 0x6b, 0xf4, + 0xc0, 0xf4, 0xbf, 0xf4, 0x25, 0xf5, 0x24, 0xf5, 0x94, 0xf5, 0x93, 0xf5, + 0x14, 0xf6, 0x13, 0xf6, 0x9e, 0xf6, 0x9d, 0xf6, 0x32, 0xf7, 0x32, 0xf7, + 0xd3, 0xf7, 0xd3, 0xf7, 0x7d, 0xf8, 0x7b, 0xf8, 0x2c, 0xf9, 0x2b, 0xf9, + 0xe6, 0xf9, 0xe5, 0xf9, 0xa5, 0xfa, 0xa5, 0xfa, 0x6a, 0xfb, 0x69, 0xfb, + 0x33, 0xfc, 0x34, 0xfc, 0x01, 0xfd, 0xff, 0xfc, 0xd0, 0xfd, 0xd1, 0xfd, + 0xa0, 0xfe, 0x9e, 0xfe, 0x71, 0xff, 0x70, 0xff, 0x42, 0x00, 0x43, 0x00, + 0x10, 0x01, 0x0e, 0x01, 0xe0, 0x01, 0xe2, 0x01, 0xa8, 0x02, 0xa6, 0x02, + 0x71, 0x03, 0x72, 0x03, 0x32, 0x04, 0x31, 0x04, 0xef, 0x04, 0xef, 0x04, + 0xa8, 0x05, 0xa6, 0x05, 0x58, 0x06, 0x59, 0x06, 0x00, 0x07, 0x00, 0x07, + 0xa3, 0x07, 0xa2, 0x07, 0x3b, 0x08, 0x3c, 0x08, 0xca, 0x08, 0xc8, 0x08, + 0x52, 0x09, 0x53, 0x09, 0xcb, 0x09, 0xca, 0x09, 0x3c, 0x0a, 0x3b, 0x0a, + 0x9e, 0x0a, 0x9f, 0x0a, 0xf7, 0x0a, 0xf6, 0x0a, 0x40, 0x0b, 0x41, 0x0b, + 0x7d, 0x0b, 0x7e, 0x0b, 0xaf, 0x0b, 0xae, 0x0b, 0xcf, 0x0b, 0xcf, 0x0b, + 0xe1, 0x0b, 0xe0, 0x0b, 0xe7, 0x0b, 0xe6, 0x0b, 0xdc, 0x0b, 0xdc, 0x0b, + 0xc1, 0x0b, 0xc1, 0x0b, 0x99, 0x0b, 0x98, 0x0b, 0x5f, 0x0b, 0x5e, 0x0b, + 0x16, 0x0b, 0x16, 0x0b, 0xbe, 0x0a, 0xbe, 0x0a, 0x59, 0x0a, 0x57, 0x0a, + 0xe4, 0x09, 0xe5, 0x09, 0x64, 0x09, 0x64, 0x09, 0xd9, 0x08, 0xd8, 0x08, + 0x40, 0x08, 0x41, 0x08, 0xa2, 0x07, 0xa1, 0x07, 0xf5, 0x06, 0xf4, 0x06, + 0x40, 0x06, 0x41, 0x06, 0x87, 0x05, 0x85, 0x05, 0xc2, 0x04, 0xc2, 0x04, + 0xfe, 0x03, 0xff, 0x03, 0x30, 0x03, 0x2e, 0x03, 0x62, 0x02, 0x62, 0x02, + 0x90, 0x01, 0x90, 0x01, 0xbe, 0x00, 0xbb, 0x00, 0xea, 0xff, 0xe9, 0xff, + 0x15, 0xff, 0x16, 0xff, 0x44, 0xfe, 0x44, 0xfe, 0x74, 0xfd, 0x73, 0xfd, + 0xa7, 0xfc, 0xa6, 0xfc, 0xde, 0xfb, 0xdd, 0xfb, 0x1a, 0xfb, 0x1a, 0xfb, + 0x5b, 0xfa, 0x5a, 0xfa, 0xa2, 0xf9, 0xa0, 0xf9, 0xee, 0xf8, 0xef, 0xf8, + 0x44, 0xf8, 0x42, 0xf8, 0xa1, 0xf7, 0xa1, 0xf7, 0x08, 0xf7, 0x08, 0xf7, + 0x79, 0xf6, 0x78, 0xf6, 0xf2, 0xf5, 0xf3, 0xf5, 0x7a, 0xf5, 0x7a, 0xf5, + 0x0a, 0xf5, 0x0a, 0xf5, 0xa9, 0xf4, 0xa9, 0xf4, 0x54, 0xf4, 0x53, 0xf4, + 0x0a, 0xf4, 0x0a, 0xf4, 0xd0, 0xf3, 0xd0, 0xf3, 0xa2, 0xf3, 0xa3, 0xf3, + 0x8a, 0xf3, 0x86, 0xf3, 0x76, 0xf3, 0x78, 0xf3, 0x7b, 0xf3, 0x79, 0xf3, + 0x8b, 0xf3, 0x8b, 0xf3, 0xa9, 0xf3, 0xac, 0xf3, 0xdd, 0xf3, 0xdb, 0xf3, + 0x19, 0xf4, 0x1b, 0xf4, 0x6a, 0xf4, 0x6a, 0xf4, 0xc7, 0xf4, 0xc7, 0xf4, + 0x31, 0xf5, 0x31, 0xf5, 0xab, 0xf5, 0xab, 0xf5, 0x2e, 0xf6, 0x2e, 0xf6, + 0xbf, 0xf6, 0xc0, 0xf6, 0x5c, 0xf7, 0x5b, 0xf7, 0xff, 0xf7, 0x00, 0xf8, + 0xad, 0xf8, 0xad, 0xf8, 0x64, 0xf9, 0x63, 0xf9, 0x23, 0xfa, 0x23, 0xfa, + 0xe3, 0xfa, 0xe3, 0xfa, 0xac, 0xfb, 0xad, 0xfb, 0x78, 0xfc, 0x79, 0xfc, + 0x48, 0xfd, 0x47, 0xfd, 0x19, 0xfe, 0x1a, 0xfe, 0xec, 0xfe, 0xec, 0xfe, + 0xbf, 0xff, 0xbe, 0xff, 0x93, 0x00, 0x93, 0x00, 0x62, 0x01, 0x61, 0x01, + 0x32, 0x02, 0x32, 0x02, 0xfa, 0x02, 0xfa, 0x02, 0xc6, 0x03, 0xc4, 0x03, + 0x84, 0x04, 0x85, 0x04, 0x44, 0x05, 0x42, 0x05, 0xf7, 0x05, 0xfa, 0x05, + 0xac, 0x06, 0xa9, 0x06, 0x52, 0x07, 0x54, 0x07, 0xf2, 0x07, 0xf2, 0x07, + 0x8c, 0x08, 0x8b, 0x08, 0x17, 0x09, 0x17, 0x09, 0x9f, 0x09, 0x9d, 0x09, + 0x16, 0x0a, 0x16, 0x0a, 0x85, 0x0a, 0x85, 0x0a, 0xe6, 0x0a, 0xe3, 0x0a, + 0x39, 0x0b, 0x3b, 0x0b, 0x82, 0x0b, 0x80, 0x0b, 0xb9, 0x0b, 0xba, 0x0b, + 0xe7, 0x0b, 0xe6, 0x0b, 0x01, 0x0c, 0x01, 0x0c, 0x13, 0x0c, 0x12, 0x0c, + 0x10, 0x0c, 0x10, 0x0c, 0x02, 0x0c, 0x02, 0x0c, 0xe2, 0x0b, 0xe2, 0x0b, + 0xb3, 0x0b, 0xb2, 0x0b, 0x74, 0x0b, 0x72, 0x0b, 0x24, 0x0b, 0x26, 0x0b, + 0xc8, 0x0a, 0xc6, 0x0a, 0x5d, 0x0a, 0x5d, 0x0a, 0xe3, 0x09, 0xe4, 0x09, + 0x61, 0x09, 0x61, 0x09, 0xd1, 0x08, 0xd0, 0x08, 0x33, 0x08, 0x34, 0x08, + 0x92, 0x07, 0x91, 0x07, 0xe0, 0x06, 0xe2, 0x06, 0x2c, 0x06, 0x2c, 0x06, + 0x6e, 0x05, 0x6e, 0x05, 0xac, 0x04, 0xad, 0x04, 0xe5, 0x03, 0xe4, 0x03, + 0x19, 0x03, 0x1a, 0x03, 0x48, 0x02, 0x49, 0x02, 0x7a, 0x01, 0x79, 0x01, + 0xa9, 0x00, 0xa8, 0x00, 0xd6, 0xff, 0xd5, 0xff, 0x06, 0xff, 0x06, 0xff, + 0x34, 0xfe, 0x35, 0xfe, 0x6c, 0xfd, 0x6a, 0xfd, 0xa1, 0xfc, 0xa0, 0xfc, + 0xdb, 0xfb, 0xdc, 0xfb, 0x1e, 0xfb, 0x1d, 0xfb, 0x60, 0xfa, 0x5f, 0xfa, + 0xae, 0xf9, 0xad, 0xf9, 0x01, 0xf9, 0x00, 0xf9, 0x5c, 0xf8, 0x5c, 0xf8, + 0xc0, 0xf7, 0xc0, 0xf7, 0x2e, 0xf7, 0x2c, 0xf7, 0xa3, 0xf6, 0xa3, 0xf6, + 0x28, 0xf6, 0x26, 0xf6, 0xb0, 0xf5, 0xae, 0xf5, 0x4b, 0xf5, 0x4c, 0xf5, + 0xed, 0xf4, 0xea, 0xf4, 0x9e, 0xf4, 0x9f, 0xf4, 0x5f, 0xf4, 0x5c, 0xf4, + 0x26, 0xf4, 0x27, 0xf4, 0x06, 0xf4, 0x04, 0xf4, 0xeb, 0xf3, 0xec, 0xf3, + 0xe6, 0xf3, 0xe6, 0xf3, 0xec, 0xf3, 0xeb, 0xf3, 0x02, 0xf4, 0x01, 0xf4, + 0x28, 0xf4, 0x28, 0xf4, 0x5c, 0xf4, 0x5c, 0xf4, 0xa4, 0xf4, 0xa2, 0xf4, + 0xf4, 0xf4, 0xf3, 0xf4, 0x58, 0xf5, 0x56, 0xf5, 0xc5, 0xf5, 0xc5, 0xf5, + 0x45, 0xf6, 0x42, 0xf6, 0xcd, 0xf6, 0xcd, 0xf6, 0x61, 0xf7, 0x60, 0xf7, + 0x02, 0xf8, 0x00, 0xf8, 0xa9, 0xf8, 0xa8, 0xf8, 0x5d, 0xf9, 0x5b, 0xf9, + 0x16, 0xfa, 0x15, 0xfa, 0xd4, 0xfa, 0xd4, 0xfa, 0x9d, 0xfb, 0x9a, 0xfb, + 0x65, 0xfc, 0x66, 0xfc, 0x36, 0xfd, 0x33, 0xfd, 0x08, 0xfe, 0x07, 0xfe, + 0xda, 0xfe, 0xda, 0xfe, 0xb1, 0xff, 0xae, 0xff, 0x83, 0x00, 0x83, 0x00, + 0x58, 0x01, 0x56, 0x01, 0x29, 0x02, 0x28, 0x02, 0xf7, 0x02, 0xf6, 0x02, + 0xc5, 0x03, 0xc3, 0x03, 0x89, 0x04, 0x89, 0x04, 0x4e, 0x05, 0x4d, 0x05, + 0x09, 0x06, 0x09, 0x06, 0xc0, 0x06, 0xbe, 0x06, 0x6d, 0x07, 0x6e, 0x07, + 0x14, 0x08, 0x13, 0x08, 0xb3, 0x08, 0xb3, 0x08, 0x45, 0x09, 0x44, 0x09, + 0xd2, 0x09, 0xd2, 0x09, 0x4f, 0x0a, 0x4e, 0x0a, 0xc5, 0x0a, 0xc5, 0x0a, + 0x2d, 0x0b, 0x2d, 0x0b, 0x88, 0x0b, 0x86, 0x0b, 0xd6, 0x0b, 0xd7, 0x0b, + 0x16, 0x0c, 0x15, 0x0c, 0x48, 0x0c, 0x49, 0x0c, 0x6e, 0x0c, 0x6d, 0x0c, + 0x81, 0x0c, 0x81, 0x0c, 0x89, 0x0c, 0x88, 0x0c, 0x7e, 0x0c, 0x7e, 0x0c, + 0x66, 0x0c, 0x66, 0x0c, 0x3a, 0x0c, 0x37, 0x0c, 0x01, 0x0c, 0x02, 0x0c, + 0xb9, 0x0b, 0xb8, 0x0b, 0x61, 0x0b, 0x62, 0x0b, 0xfb, 0x0a, 0xfa, 0x0a, + 0x89, 0x0a, 0x88, 0x0a, 0x09, 0x0a, 0x08, 0x0a, 0x7c, 0x09, 0x7d, 0x09, + 0xe9, 0x08, 0xe8, 0x08, 0x44, 0x08, 0x46, 0x08, 0x9c, 0x07, 0x9b, 0x07, + 0xe7, 0x06, 0xe7, 0x06, 0x2d, 0x06, 0x2e, 0x06, 0x6b, 0x05, 0x6d, 0x05, + 0xa7, 0x04, 0xa6, 0x04, 0xdc, 0x03, 0xde, 0x03, 0x0f, 0x03, 0x0e, 0x03, + 0x3f, 0x02, 0x41, 0x02, 0x6e, 0x01, 0x6e, 0x01, 0x9b, 0x00, 0x9b, 0x00, + 0xcc, 0xff, 0xcc, 0xff, 0xfa, 0xfe, 0xfa, 0xfe, 0x2d, 0xfe, 0x2e, 0xfe, + 0x61, 0xfd, 0x60, 0xfd, 0x99, 0xfc, 0x9c, 0xfc, 0xd7, 0xfb, 0xd7, 0xfb, + 0x18, 0xfb, 0x16, 0xfb, 0x62, 0xfa, 0x63, 0xfa, 0xae, 0xf9, 0xad, 0xf9, + 0x07, 0xf9, 0x06, 0xf9, 0x63, 0xf8, 0x61, 0xf8, 0xc9, 0xf7, 0xc9, 0xf7, + 0x39, 0xf7, 0x39, 0xf7, 0xb1, 0xf6, 0xb3, 0xf6, 0x3a, 0xf6, 0x37, 0xf6, + 0xc7, 0xf5, 0xc6, 0xf5, 0x64, 0xf5, 0x65, 0xf5, 0x0c, 0xf5, 0x0a, 0xf5, + 0xc1, 0xf4, 0xc0, 0xf4, 0x82, 0xf4, 0x82, 0xf4, 0x55, 0xf4, 0x54, 0xf4, + 0x32, 0xf4, 0x32, 0xf4, 0x20, 0xf4, 0x20, 0xf4, 0x1d, 0xf4, 0x1c, 0xf4, + 0x27, 0xf4, 0x27, 0xf4, 0x43, 0xf4, 0x41, 0xf4, 0x6c, 0xf4, 0x6c, 0xf4, + 0xa5, 0xf4, 0xa4, 0xf4, 0xee, 0xf4, 0xee, 0xf4, 0x44, 0xf5, 0x43, 0xf5, + 0xaa, 0xf5, 0xaa, 0xf5, 0x1f, 0xf6, 0x1e, 0xf6, 0x9f, 0xf6, 0x9e, 0xf6, + 0x2c, 0xf7, 0x2c, 0xf7, 0xc2, 0xf7, 0xc2, 0xf7, 0x66, 0xf8, 0x67, 0xf8, + 0x10, 0xf9, 0x0f, 0xf9, 0xc5, 0xf9, 0xc5, 0xf9, 0x80, 0xfa, 0x7f, 0xfa, + 0x3f, 0xfb, 0x41, 0xfb, 0x09, 0xfc, 0x08, 0xfc, 0xd2, 0xfc, 0xd2, 0xfc, + 0xa4, 0xfd, 0xa2, 0xfd, 0x75, 0xfe, 0x74, 0xfe, 0x47, 0xff, 0x47, 0xff, + 0x1b, 0x00, 0x1a, 0x00, 0xec, 0x00, 0xeb, 0x00, 0xbc, 0x01, 0xbd, 0x01, + 0x8d, 0x02, 0x8b, 0x02, 0x57, 0x03, 0x58, 0x03, 0x21, 0x04, 0x1f, 0x04, + 0xe1, 0x04, 0xe1, 0x04, 0xa2, 0x05, 0xa1, 0x05, 0x58, 0x06, 0x57, 0x06, + 0x0a, 0x07, 0x0a, 0x07, 0xb1, 0x07, 0xb1, 0x07, 0x54, 0x08, 0x52, 0x08, + 0xe9, 0x08, 0xea, 0x08, 0x78, 0x09, 0x76, 0x09, 0xfc, 0x09, 0xfe, 0x09, + 0x74, 0x0a, 0x73, 0x0a, 0xe0, 0x0a, 0xdf, 0x0a, 0x41, 0x0b, 0x41, 0x0b, + 0x93, 0x0b, 0x92, 0x0b, 0xd9, 0x0b, 0xd9, 0x0b, 0x12, 0x0c, 0x12, 0x0c, + 0x3a, 0x0c, 0x39, 0x0c, 0x59, 0x0c, 0x59, 0x0c, 0x62, 0x0c, 0x61, 0x0c, + 0x61, 0x0c, 0x63, 0x0c, 0x50, 0x0c, 0x50, 0x0c, 0x2d, 0x0c, 0x2d, 0x0c, + 0xfe, 0x0b, 0xfc, 0x0b, 0xb9, 0x0b, 0xb9, 0x0b, 0x6b, 0x0b, 0x6a, 0x0b, + 0x0c, 0x0b, 0x0b, 0x0b, 0xa0, 0x0a, 0x9e, 0x0a, 0x25, 0x0a, 0x26, 0x0a, + 0xa0, 0x09, 0x9d, 0x09, 0x0d, 0x09, 0x0d, 0x09, 0x73, 0x08, 0x73, 0x08, + 0xcd, 0x07, 0xcb, 0x07, 0x1c, 0x07, 0x1a, 0x07, 0x65, 0x06, 0x64, 0x06, + 0xa6, 0x05, 0xa4, 0x05, 0xe1, 0x04, 0xe0, 0x04, 0x18, 0x04, 0x18, 0x04, + 0x48, 0x03, 0x46, 0x03, 0x7a, 0x02, 0x78, 0x02, 0xa6, 0x01, 0xa5, 0x01, + 0xd5, 0x00, 0xd3, 0x00, 0xfc, 0xff, 0xfd, 0xff, 0x2b, 0xff, 0x29, 0xff, + 0x57, 0xfe, 0x5a, 0xfe, 0x8b, 0xfd, 0x88, 0xfd, 0xbe, 0xfc, 0xbd, 0xfc, + 0xf4, 0xfb, 0xf2, 0xfb, 0x32, 0xfb, 0x32, 0xfb, 0x73, 0xfa, 0x72, 0xfa, + 0xbb, 0xf9, 0xbb, 0xf9, 0x0b, 0xf9, 0x0a, 0xf9, 0x61, 0xf8, 0x5f, 0xf8, + 0xc1, 0xf7, 0xc1, 0xf7, 0x2b, 0xf7, 0x29, 0xf7, 0x9b, 0xf6, 0x9a, 0xf6, + 0x1b, 0xf6, 0x18, 0xf6, 0x9e, 0xf5, 0x9e, 0xf5, 0x37, 0xf5, 0x35, 0xf5, + 0xd3, 0xf4, 0xd2, 0xf4, 0x81, 0xf4, 0x7f, 0xf4, 0x3b, 0xf4, 0x3a, 0xf4, + 0x00, 0xf4, 0xfe, 0xf3, 0xda, 0xf3, 0xd8, 0xf3, 0xbb, 0xf3, 0xbb, 0xf3, + 0xb4, 0xf3, 0xb1, 0xf3, 0xb4, 0xf3, 0xb5, 0xf3, 0xcb, 0xf3, 0xc6, 0xf3, + 0xec, 0xf3, 0xec, 0xf3, 0x1f, 0xf4, 0x1a, 0xf4, 0x61, 0xf4, 0x61, 0xf4, + 0xb0, 0xf4, 0xae, 0xf4, 0x11, 0xf5, 0x0f, 0xf5, 0x7d, 0xf5, 0x7d, 0xf5, + 0xf8, 0xf5, 0xf5, 0xf5, 0x7e, 0xf6, 0x7e, 0xf6, 0x10, 0xf7, 0x0f, 0xf7, + 0xad, 0xf7, 0xab, 0xf7, 0x55, 0xf8, 0x54, 0xf8, 0x01, 0xf9, 0x01, 0xf9, + 0xbb, 0xf9, 0xb9, 0xf9, 0x76, 0xfa, 0x76, 0xfa, 0x3a, 0xfb, 0x3a, 0xfb, + 0x05, 0xfc, 0x03, 0xfc, 0xcf, 0xfc, 0xcf, 0xfc, 0xa0, 0xfd, 0x9e, 0xfd, + 0x6f, 0xfe, 0x6e, 0xfe, 0x41, 0xff, 0x41, 0xff, 0x15, 0x00, 0x11, 0x00, + 0xe1, 0x00, 0xe2, 0x00, 0xb2, 0x01, 0xb0, 0x01, 0x7d, 0x02, 0x7a, 0x02, + 0x44, 0x03, 0x45, 0x03, 0x09, 0x04, 0x06, 0x04, 0xc8, 0x04, 0xc6, 0x04, + 0x82, 0x05, 0x80, 0x05, 0x32, 0x06, 0x30, 0x06, 0xdf, 0x06, 0xdd, 0x06, + 0x82, 0x07, 0x82, 0x07, 0x1f, 0x08, 0x1d, 0x08, 0xb0, 0x08, 0xaf, 0x08, + 0x3b, 0x09, 0x39, 0x09, 0xb7, 0x09, 0xb6, 0x09, 0x2b, 0x0a, 0x28, 0x0a, + 0x91, 0x0a, 0x91, 0x0a, 0xed, 0x0a, 0xe9, 0x0a, 0x39, 0x0b, 0x39, 0x0b, + 0x7a, 0x0b, 0x77, 0x0b, 0xac, 0x0b, 0xab, 0x0b, 0xd1, 0x0b, 0xd0, 0x0b, + 0xe7, 0x0b, 0xe4, 0x0b, 0xef, 0x0b, 0xee, 0x0b, 0xe8, 0x0b, 0xe4, 0x0b, + 0xd2, 0x0b, 0xd0, 0x0b, 0xaa, 0x0b, 0xa9, 0x0b, 0x75, 0x0b, 0x73, 0x0b, + 0x2f, 0x0b, 0x2e, 0x0b, 0xdb, 0x0a, 0xdb, 0x0a, 0x7a, 0x0a, 0x78, 0x0a, + 0x08, 0x0a, 0x07, 0x0a, 0x8c, 0x09, 0x8b, 0x09, 0x03, 0x09, 0x01, 0x09, + 0x6d, 0x08, 0x6d, 0x08, 0xd0, 0x07, 0xd0, 0x07, 0x24, 0x07, 0x23, 0x07, + 0x74, 0x06, 0x74, 0x06, 0xb8, 0x05, 0xb9, 0x05, 0xfb, 0x04, 0xf8, 0x04, + 0x32, 0x04, 0x33, 0x04, 0x69, 0x03, 0x66, 0x03, 0x9b, 0x02, 0x99, 0x02, + 0xc7, 0x01, 0xc7, 0x01, 0xf7, 0x00, 0xf5, 0x00, 0x21, 0x00, 0x1f, 0x00, + 0x4e, 0xff, 0x4e, 0xff, 0x7c, 0xfe, 0x7a, 0xfe, 0xab, 0xfd, 0xaa, 0xfd, + 0xdd, 0xfc, 0xdc, 0xfc, 0x13, 0xfc, 0x12, 0xfc, 0x4b, 0xfb, 0x4b, 0xfb, + 0x8b, 0xfa, 0x8b, 0xfa, 0xd1, 0xf9, 0xd0, 0xf9, 0x1b, 0xf9, 0x1a, 0xf9, + 0x6e, 0xf8, 0x6d, 0xf8, 0xcb, 0xf7, 0xcc, 0xf7, 0x30, 0xf7, 0x2c, 0xf7, + 0x9b, 0xf6, 0x9d, 0xf6, 0x16, 0xf6, 0x13, 0xf6, 0x97, 0xf5, 0x97, 0xf5, + 0x29, 0xf5, 0x26, 0xf5, 0xc2, 0xf4, 0xc1, 0xf4, 0x6a, 0xf4, 0x67, 0xf4, + 0x1f, 0xf4, 0x1f, 0xf4, 0xde, 0xf3, 0xdc, 0xf3, 0xb1, 0xf3, 0xaf, 0xf3, + 0x90, 0xf3, 0x8e, 0xf3, 0x80, 0xf3, 0x7e, 0xf3, 0x7b, 0xf3, 0x79, 0xf3, + 0x89, 0xf3, 0x87, 0xf3, 0xa6, 0xf3, 0xa5, 0xf3, 0xd2, 0xf3, 0xcf, 0xf3, + 0x0f, 0xf4, 0x0f, 0xf4, 0x59, 0xf4, 0x57, 0xf4, 0xb3, 0xf4, 0xb0, 0xf4, + 0x18, 0xf5, 0x18, 0xf5, 0x90, 0xf5, 0x8d, 0xf5, 0x10, 0xf6, 0x0e, 0xf6, + 0x9d, 0xf6, 0x9b, 0xf6, 0x36, 0xf7, 0x34, 0xf7, 0xd9, 0xf7, 0xd6, 0xf7, + 0x85, 0xf8, 0x83, 0xf8, 0x38, 0xf9, 0x37, 0xf9, 0xf4, 0xf9, 0xf0, 0xf9, + 0xb3, 0xfa, 0xb2, 0xfa, 0x7b, 0xfb, 0x79, 0xfb, 0x45, 0xfc, 0x45, 0xfc, + 0x15, 0xfd, 0x13, 0xfd, 0xe6, 0xfd, 0xe3, 0xfd, 0xb7, 0xfe, 0xb5, 0xfe, + 0x8a, 0xff, 0x89, 0xff, 0x5b, 0x00, 0x5a, 0x00, 0x2b, 0x01, 0x2a, 0x01, + 0xf9, 0x01, 0xf8, 0x01, 0xc7, 0x02, 0xc3, 0x02, 0x8c, 0x03, 0x8d, 0x03, + 0x53, 0x04, 0x4f, 0x04, 0x0f, 0x05, 0x0e, 0x05, 0xc8, 0x05, 0xc5, 0x05, + 0x78, 0x06, 0x78, 0x06, 0x23, 0x07, 0x20, 0x07, 0xc4, 0x07, 0xc3, 0x07, + 0x5c, 0x08, 0x5c, 0x08, 0xee, 0x08, 0xea, 0x08, 0x74, 0x09, 0x72, 0x09, + 0xec, 0x09, 0xeb, 0x09, 0x5d, 0x0a, 0x5c, 0x0a, 0xc1, 0x0a, 0xbf, 0x0a, + 0x18, 0x0b, 0x16, 0x0b, 0x61, 0x0b, 0x60, 0x0b, 0x9e, 0x0b, 0x9b, 0x0b, + 0xca, 0x0b, 0xca, 0x0b, 0xed, 0x0b, 0xeb, 0x0b, 0xfd, 0x0b, 0xfb, 0x0b, + 0x01, 0x0c, 0x00, 0x0c, 0xf4, 0x0b, 0xf2, 0x0b, 0xd9, 0x0b, 0xd7, 0x0b, + 0xac, 0x0b, 0xaa, 0x0b, 0x71, 0x0b, 0x6f, 0x0b, 0x26, 0x0b, 0x24, 0x0b, + 0xcd, 0x0a, 0xcb, 0x0a, 0x68, 0x0a, 0x65, 0x0a, 0xf1, 0x09, 0xee, 0x09, + 0x72, 0x09, 0x6f, 0x09, 0xe5, 0x08, 0xe0, 0x08, 0x4d, 0x08, 0x4b, 0x08, + 0xa9, 0x07, 0xa7, 0x07, 0xff, 0x06, 0xfe, 0x06, 0x4c, 0x06, 0x49, 0x06, + 0x90, 0x05, 0x8e, 0x05, 0xcf, 0x04, 0xcd, 0x04, 0x09, 0x04, 0x07, 0x04, + 0x40, 0x03, 0x3e, 0x03, 0x70, 0x02, 0x6e, 0x02, 0xa3, 0x01, 0xa0, 0x01, + 0xcf, 0x00, 0xce, 0x00, 0x00, 0x00, 0xff, 0xff, 0x30, 0xff, 0x2d, 0xff, + 0x5f, 0xfe, 0x5f, 0xfe, 0x96, 0xfd, 0x94, 0xfd, 0xc9, 0xfc, 0xc8, 0xfc, + 0x05, 0xfc, 0x03, 0xfc, 0x43, 0xfb, 0x41, 0xfb, 0x88, 0xfa, 0x88, 0xfa, + 0xd4, 0xf9, 0xd0, 0xf9, 0x26, 0xf9, 0x25, 0xf9, 0x80, 0xf8, 0x7e, 0xf8, + 0xe1, 0xf7, 0xdf, 0xf7, 0x4b, 0xf7, 0x4a, 0xf7, 0xc1, 0xf6, 0xbf, 0xf6, + 0x40, 0xf6, 0x3e, 0xf6, 0xc9, 0xf5, 0xca, 0xf5, 0x61, 0xf5, 0x5e, 0xf5, + 0x02, 0xf5, 0x02, 0xf5, 0xb1, 0xf4, 0xb0, 0xf4, 0x6d, 0xf4, 0x6b, 0xf4, + 0x37, 0xf4, 0x37, 0xf4, 0x0e, 0xf4, 0x0c, 0xf4, 0xf4, 0xf3, 0xf2, 0xf3, + 0xe8, 0xf3, 0xe9, 0xf3, 0xee, 0xf3, 0xeb, 0xf3, 0xff, 0xf3, 0x00, 0xf4, + 0x24, 0xf4, 0x20, 0xf4, 0x53, 0xf4, 0x56, 0xf4, 0x97, 0xf4, 0x92, 0xf4, + 0xe5, 0xf4, 0xe4, 0xf4, 0x44, 0xf5, 0x43, 0xf5, 0xb0, 0xf5, 0xac, 0xf5, + 0x29, 0xf6, 0x29, 0xf6, 0xb2, 0xf6, 0xac, 0xf6, 0x3f, 0xf7, 0x3f, 0xf7, + 0xdc, 0xf7, 0xda, 0xf7, 0x84, 0xf8, 0x80, 0xf8, 0x31, 0xf9, 0x30, 0xf9, + 0xe8, 0xf9, 0xe6, 0xf9, 0xa5, 0xfa, 0xa3, 0xfa, 0x6a, 0xfb, 0x67, 0xfb, + 0x30, 0xfc, 0x2f, 0xfc, 0xfe, 0xfc, 0xfd, 0xfc, 0xcb, 0xfd, 0xcb, 0xfd, + 0xa2, 0xfe, 0xa0, 0xfe, 0x71, 0xff, 0x70, 0xff, 0x47, 0x00, 0x45, 0x00, + 0x18, 0x01, 0x16, 0x01, 0xeb, 0x01, 0xe7, 0x01, 0xb6, 0x02, 0xb5, 0x02, + 0x84, 0x03, 0x82, 0x03, 0x4b, 0x04, 0x49, 0x04, 0x0d, 0x05, 0x0b, 0x05, + 0xca, 0x05, 0xc7, 0x05, 0x80, 0x06, 0x7e, 0x06, 0x30, 0x07, 0x2d, 0x07, + 0xd7, 0x07, 0xd5, 0x07, 0x76, 0x08, 0x72, 0x08, 0x0c, 0x09, 0x0b, 0x09, + 0x97, 0x09, 0x93, 0x09, 0x19, 0x0a, 0x18, 0x0a, 0x90, 0x0a, 0x8d, 0x0a, + 0xf8, 0x0a, 0xf6, 0x0a, 0x58, 0x0b, 0x55, 0x0b, 0xa6, 0x0b, 0xa4, 0x0b, + 0xed, 0x0b, 0xeb, 0x0b, 0x1f, 0x0c, 0x1d, 0x0c, 0x48, 0x0c, 0x46, 0x0c, + 0x5f, 0x0c, 0x5d, 0x0c, 0x69, 0x0c, 0x66, 0x0c, 0x66, 0x0c, 0x65, 0x0c, + 0x4c, 0x0c, 0x49, 0x0c, 0x2b, 0x0c, 0x29, 0x0c, 0xf2, 0x0b, 0xef, 0x0b, + 0xb0, 0x0b, 0xad, 0x0b, 0x5c, 0x0b, 0x5b, 0x0b, 0xfc, 0x0a, 0xf8, 0x0a, + 0x8e, 0x0a, 0x8d, 0x0a, 0x10, 0x0a, 0x0e, 0x0a, 0x8d, 0x09, 0x88, 0x09, + 0xf7, 0x08, 0xf6, 0x08, 0x5d, 0x08, 0x5a, 0x08, 0xb6, 0x07, 0xb4, 0x07, + 0x05, 0x07, 0x04, 0x07, 0x51, 0x06, 0x4e, 0x06, 0x91, 0x05, 0x92, 0x05, + 0xd1, 0x04, 0xcd, 0x04, 0x07, 0x04, 0x05, 0x04, 0x3d, 0x03, 0x3c, 0x03, + 0x6f, 0x02, 0x6d, 0x02, 0xa0, 0x01, 0x9e, 0x01, 0xd1, 0x00, 0xcf, 0x00, + 0x02, 0x00, 0xff, 0xff, 0x31, 0xff, 0x30, 0xff, 0x66, 0xfe, 0x64, 0xfe, + 0x9a, 0xfd, 0x98, 0xfd, 0xd2, 0xfc, 0xd1, 0xfc, 0x11, 0xfc, 0x0e, 0xfc, + 0x50, 0xfb, 0x4f, 0xfb, 0x9e, 0xfa, 0x9a, 0xfa, 0xe7, 0xf9, 0xe6, 0xf9, + 0x42, 0xf9, 0x3e, 0xf9, 0x9c, 0xf8, 0x9a, 0xf8, 0x02, 0xf8, 0x00, 0xf8, + 0x72, 0xf7, 0x70, 0xf7, 0xea, 0xf6, 0xe7, 0xf6, 0x6b, 0xf6, 0x6a, 0xf6, + 0xfc, 0xf5, 0xf9, 0xf5, 0x97, 0xf5, 0x93, 0xf5, 0x3c, 0xf5, 0x39, 0xf5, + 0xee, 0xf4, 0xee, 0xf4, 0xaf, 0xf4, 0xac, 0xf4, 0x7d, 0xf4, 0x7a, 0xf4, + 0x56, 0xf4, 0x55, 0xf4, 0x43, 0xf4, 0x3f, 0xf4, 0x3a, 0xf4, 0x38, 0xf4, + 0x42, 0xf4, 0x40, 0xf4, 0x59, 0xf4, 0x57, 0xf4, 0x7e, 0xf4, 0x7c, 0xf4, + 0xb3, 0xf4, 0xb1, 0xf4, 0xf8, 0xf4, 0xf6, 0xf4, 0x4a, 0xf5, 0x47, 0xf5, + 0xaa, 0xf5, 0xa7, 0xf5, 0x18, 0xf6, 0x17, 0xf6, 0x95, 0xf6, 0x92, 0xf6, + 0x1f, 0xf7, 0x1b, 0xf7, 0xb1, 0xf7, 0xaf, 0xf7, 0x50, 0xf8, 0x4d, 0xf8, + 0xf7, 0xf8, 0xf4, 0xf8, 0xa5, 0xf9, 0xa4, 0xf9, 0x5e, 0xfa, 0x5a, 0xfa, + 0x1a, 0xfb, 0x19, 0xfb, 0xde, 0xfb, 0xda, 0xfb, 0xa6, 0xfc, 0xa4, 0xfc, + 0x71, 0xfd, 0x70, 0xfd, 0x40, 0xfe, 0x3d, 0xfe, 0x10, 0xff, 0x0e, 0xff, + 0xe0, 0xff, 0xdf, 0xff, 0xb4, 0x00, 0xaf, 0x00, 0x80, 0x01, 0x81, 0x01, + 0x52, 0x02, 0x4e, 0x02, 0x19, 0x03, 0x17, 0x03, 0xe4, 0x03, 0xe1, 0x03, + 0xa5, 0x04, 0xa2, 0x04, 0x63, 0x05, 0x61, 0x05, 0x1c, 0x06, 0x19, 0x06, + 0xca, 0x06, 0xc9, 0x06, 0x76, 0x07, 0x73, 0x07, 0x15, 0x08, 0x12, 0x08, + 0xae, 0x08, 0xab, 0x08, 0x3d, 0x09, 0x3e, 0x09, 0xc0, 0x09, 0xbd, 0x09, + 0x3f, 0x0a, 0x3b, 0x0a, 0xab, 0x0a, 0xab, 0x0a, 0x10, 0x0b, 0x0c, 0x0b, + 0x66, 0x0b, 0x63, 0x0b, 0xad, 0x0b, 0xaa, 0x0b, 0xea, 0x0b, 0xe7, 0x0b, + 0x15, 0x0c, 0x13, 0x0c, 0x35, 0x0c, 0x34, 0x0c, 0x46, 0x0c, 0x42, 0x0c, + 0x46, 0x0c, 0x44, 0x0c, 0x3a, 0x0c, 0x38, 0x0c, 0x1c, 0x0c, 0x1b, 0x0c, + 0xf2, 0x0b, 0xee, 0x0b, 0xb4, 0x0b, 0xb3, 0x0b, 0x6b, 0x0b, 0x67, 0x0b, + 0x10, 0x0b, 0x0e, 0x0b, 0xaa, 0x0a, 0xa7, 0x0a, 0x37, 0x0a, 0x33, 0x0a, + 0xb4, 0x09, 0xb3, 0x09, 0x2b, 0x09, 0x26, 0x09, 0x90, 0x08, 0x8f, 0x08, + 0xf2, 0x07, 0xed, 0x07, 0x47, 0x07, 0x46, 0x07, 0x95, 0x06, 0x91, 0x06, + 0xdb, 0x05, 0xd8, 0x05, 0x1b, 0x05, 0x18, 0x05, 0x53, 0x04, 0x52, 0x04, + 0x8c, 0x03, 0x87, 0x03, 0xbc, 0x02, 0xba, 0x02, 0xee, 0x01, 0xec, 0x01, + 0x1d, 0x01, 0x1a, 0x01, 0x4c, 0x00, 0x49, 0x00, 0x7b, 0xff, 0x79, 0xff, + 0xac, 0xfe, 0xaa, 0xfe, 0xde, 0xfd, 0xdc, 0xfd, 0x13, 0xfd, 0x11, 0xfd, + 0x4c, 0xfc, 0x48, 0xfc, 0x88, 0xfb, 0x87, 0xfb, 0xca, 0xfa, 0xc8, 0xfa, + 0x14, 0xfa, 0x11, 0xfa, 0x63, 0xf9, 0x61, 0xf9, 0xb9, 0xf8, 0xb8, 0xf8, + 0x17, 0xf8, 0x16, 0xf8, 0x7f, 0xf7, 0x7d, 0xf7, 0xf1, 0xf6, 0xef, 0xf6, + 0x6d, 0xf6, 0x6c, 0xf6, 0xf1, 0xf5, 0xef, 0xf5, 0x85, 0xf5, 0x85, 0xf5, + 0x20, 0xf5, 0x1d, 0xf5, 0xcc, 0xf4, 0xcc, 0xf4, 0x84, 0xf4, 0x7e, 0xf4, + 0x44, 0xf4, 0x46, 0xf4, 0x1b, 0xf4, 0x17, 0xf4, 0xf7, 0xf3, 0xf6, 0xf3, + 0xea, 0xf3, 0xe8, 0xf3, 0xe5, 0xf3, 0xe3, 0xf3, 0xf5, 0xf3, 0xf4, 0xf3, + 0x12, 0xf4, 0x0f, 0xf4, 0x3e, 0xf4, 0x3e, 0xf4, 0x7b, 0xf4, 0x77, 0xf4, + 0xc5, 0xf4, 0xc5, 0xf4, 0x1e, 0xf5, 0x1c, 0xf5, 0x84, 0xf5, 0x83, 0xf5, + 0xf7, 0xf5, 0xf6, 0xf5, 0x78, 0xf6, 0x76, 0xf6, 0x05, 0xf7, 0x04, 0xf7, + 0x9a, 0xf7, 0x99, 0xf7, 0x3b, 0xf8, 0x3a, 0xf8, 0xe6, 0xf8, 0xe5, 0xf8, + 0x99, 0xf9, 0x97, 0xf9, 0x4f, 0xfa, 0x51, 0xfa, 0x0f, 0xfb, 0x0c, 0xfb, + 0xd2, 0xfb, 0xd1, 0xfb, 0x9c, 0xfc, 0x9a, 0xfc, 0x65, 0xfd, 0x63, 0xfd, + 0x34, 0xfe, 0x31, 0xfe, 0x01, 0xff, 0x00, 0xff, 0xcf, 0xff, 0xcd, 0xff, + 0x9f, 0x00, 0x9e, 0x00, 0x69, 0x01, 0x68, 0x01, 0x35, 0x02, 0x33, 0x02, + 0xfa, 0x02, 0xf9, 0x02, 0xbe, 0x03, 0xbd, 0x03, 0x7d, 0x04, 0x7a, 0x04, + 0x36, 0x05, 0x36, 0x05, 0xe9, 0x05, 0xe6, 0x05, 0x95, 0x06, 0x94, 0x06, + 0x38, 0x07, 0x37, 0x07, 0xd5, 0x07, 0xd4, 0x07, 0x68, 0x08, 0x68, 0x08, + 0xf2, 0x08, 0xf1, 0x08, 0x73, 0x09, 0x70, 0x09, 0xe6, 0x09, 0xe5, 0x09, + 0x50, 0x0a, 0x4f, 0x0a, 0xad, 0x0a, 0xac, 0x0a, 0xfe, 0x0a, 0xfc, 0x0a, + 0x41, 0x0b, 0x41, 0x0b, 0x78, 0x0b, 0x77, 0x0b, 0xa1, 0x0b, 0x9f, 0x0b, + 0xbb, 0x0b, 0xb9, 0x0b, 0xc9, 0x0b, 0xc9, 0x0b, 0xc6, 0x0b, 0xc2, 0x0b, + 0xb4, 0x0b, 0xb4, 0x0b, 0x95, 0x0b, 0x93, 0x0b, 0x65, 0x0b, 0x63, 0x0b, + 0x28, 0x0b, 0x26, 0x0b, 0xd7, 0x0a, 0xd5, 0x0a, 0x7e, 0x0a, 0x7c, 0x0a, + 0x13, 0x0a, 0x13, 0x0a, 0x9e, 0x09, 0x99, 0x09, 0x1a, 0x09, 0x19, 0x09, + 0x8c, 0x08, 0x89, 0x08, 0xf2, 0x07, 0xf2, 0x07, 0x50, 0x07, 0x4f, 0x07, + 0xa5, 0x06, 0xa3, 0x06, 0xf1, 0x05, 0xef, 0x05, 0x35, 0x05, 0x32, 0x05, + 0x75, 0x04, 0x72, 0x04, 0xad, 0x03, 0xad, 0x03, 0xe3, 0x02, 0xe1, 0x02, + 0x16, 0x02, 0x15, 0x02, 0x46, 0x01, 0x43, 0x01, 0x77, 0x00, 0x73, 0x00, + 0xa5, 0xff, 0xa3, 0xff, 0xd4, 0xfe, 0xd3, 0xfe, 0x08, 0xfe, 0x04, 0xfe, + 0x3a, 0xfd, 0x39, 0xfd, 0x70, 0xfc, 0x6e, 0xfc, 0xab, 0xfb, 0xaa, 0xfb, + 0xea, 0xfa, 0xe6, 0xfa, 0x2f, 0xfa, 0x2f, 0xfa, 0x7b, 0xf9, 0x77, 0xf9, + 0xcf, 0xf8, 0xce, 0xf8, 0x28, 0xf8, 0x25, 0xf8, 0x8d, 0xf7, 0x8a, 0xf7, + 0xf5, 0xf6, 0xf3, 0xf6, 0x6f, 0xf6, 0x6c, 0xf6, 0xee, 0xf5, 0xeb, 0xf5, + 0x78, 0xf5, 0x77, 0xf5, 0x12, 0xf5, 0x0f, 0xf5, 0xb3, 0xf4, 0xb1, 0xf4, + 0x67, 0xf4, 0x65, 0xf4, 0x21, 0xf4, 0x1e, 0xf4, 0xef, 0xf3, 0xee, 0xf3, + 0xc9, 0xf3, 0xc4, 0xf3, 0xae, 0xf3, 0xae, 0xf3, 0xa8, 0xf3, 0xa7, 0xf3, + 0xac, 0xf3, 0xab, 0xf3, 0xc6, 0xf3, 0xc3, 0xf3, 0xe9, 0xf3, 0xe9, 0xf3, + 0x1e, 0xf4, 0x1e, 0xf4, 0x64, 0xf4, 0x61, 0xf4, 0xb2, 0xf4, 0xb2, 0xf4, + 0x15, 0xf5, 0x11, 0xf5, 0x80, 0xf5, 0x80, 0xf5, 0xfa, 0xf5, 0xf8, 0xf5, + 0x82, 0xf6, 0x81, 0xf6, 0x11, 0xf7, 0x11, 0xf7, 0xaf, 0xf7, 0xad, 0xf7, + 0x53, 0xf8, 0x52, 0xf8, 0x02, 0xf9, 0x00, 0xf9, 0xb7, 0xf9, 0xb5, 0xf9, + 0x71, 0xfa, 0x70, 0xfa, 0x35, 0xfb, 0x34, 0xfb, 0xf9, 0xfb, 0xf8, 0xfb, + 0xc3, 0xfc, 0xc0, 0xfc, 0x8e, 0xfd, 0x8e, 0xfd, 0x61, 0xfe, 0x5d, 0xfe, + 0x2d, 0xff, 0x2d, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xca, 0x00, 0xcb, 0x00, + 0x99, 0x01, 0x96, 0x01, 0x61, 0x02, 0x60, 0x02, 0x27, 0x03, 0x27, 0x03, + 0xeb, 0x03, 0xe8, 0x03, 0xa8, 0x04, 0xa7, 0x04, 0x5e, 0x05, 0x60, 0x05, + 0x14, 0x06, 0x10, 0x06, 0xbd, 0x06, 0xbe, 0x06, 0x5e, 0x07, 0x5d, 0x07, + 0xfb, 0x07, 0xfa, 0x07, 0x8a, 0x08, 0x8a, 0x08, 0x15, 0x09, 0x13, 0x09, + 0x90, 0x09, 0x91, 0x09, 0x06, 0x0a, 0x03, 0x0a, 0x6a, 0x0a, 0x6a, 0x0a, + 0xc6, 0x0a, 0xc4, 0x0a, 0x13, 0x0b, 0x13, 0x0b, 0x57, 0x0b, 0x54, 0x0b, + 0x86, 0x0b, 0x85, 0x0b, 0xb0, 0x0b, 0xae, 0x0b, 0xc4, 0x0b, 0xc4, 0x0b, + 0xce, 0x0b, 0xcb, 0x0b, 0xc8, 0x0b, 0xc7, 0x0b, 0xb2, 0x0b, 0xb1, 0x0b, + 0x92, 0x0b, 0x90, 0x0b, 0x5a, 0x0b, 0x59, 0x0b, 0x1a, 0x0b, 0x18, 0x0b, + 0xc8, 0x0a, 0xc7, 0x0a, 0x68, 0x0a, 0x67, 0x0a, 0xfc, 0x09, 0xfa, 0x09, + 0x80, 0x09, 0x81, 0x09, 0xfc, 0x08, 0xf8, 0x08, 0x69, 0x08, 0x69, 0x08, + 0xce, 0x07, 0xce, 0x07, 0x2c, 0x07, 0x2a, 0x07, 0x7e, 0x06, 0x7d, 0x06, + 0xc9, 0x05, 0xc6, 0x05, 0x0e, 0x05, 0x0b, 0x05, 0x4c, 0x04, 0x4d, 0x04, + 0x87, 0x03, 0x83, 0x03, 0xbd, 0x02, 0xbc, 0x02, 0xf2, 0x01, 0xef, 0x01, + 0x24, 0x01, 0x20, 0x01, 0x54, 0x00, 0x54, 0x00, 0x87, 0xff, 0x83, 0xff, + 0xb8, 0xfe, 0xb9, 0xfe, 0xee, 0xfd, 0xec, 0xfd, 0x24, 0xfd, 0x23, 0xfd, + 0x5e, 0xfc, 0x5e, 0xfc, 0x9f, 0xfb, 0x9d, 0xfb, 0xe2, 0xfa, 0xe0, 0xfa, + 0x2b, 0xfa, 0x2c, 0xfa, 0x7e, 0xf9, 0x7b, 0xf9, 0xd3, 0xf8, 0xd3, 0xf8, + 0x35, 0xf8, 0x34, 0xf8, 0x9c, 0xf7, 0x99, 0xf7, 0x11, 0xf7, 0x11, 0xf7, + 0x8c, 0xf6, 0x89, 0xf6, 0x13, 0xf6, 0x11, 0xf6, 0xa4, 0xf5, 0xa2, 0xf5, + 0x41, 0xf5, 0x40, 0xf5, 0xed, 0xf4, 0xeb, 0xf4, 0xa2, 0xf4, 0xa0, 0xf4, + 0x6a, 0xf4, 0x68, 0xf4, 0x38, 0xf4, 0x35, 0xf4, 0x18, 0xf4, 0x19, 0xf4, + 0x07, 0xf4, 0x04, 0xf4, 0x03, 0xf4, 0x02, 0xf4, 0x11, 0xf4, 0x0f, 0xf4, + 0x2b, 0xf4, 0x29, 0xf4, 0x54, 0xf4, 0x54, 0xf4, 0x90, 0xf4, 0x8d, 0xf4, + 0xd6, 0xf4, 0xd4, 0xf4, 0x2e, 0xf5, 0x2d, 0xf5, 0x91, 0xf5, 0x8f, 0xf5, + 0x02, 0xf6, 0x01, 0xf6, 0x82, 0xf6, 0x81, 0xf6, 0x0b, 0xf7, 0x08, 0xf7, + 0xa1, 0xf7, 0xa2, 0xf7, 0x41, 0xf8, 0x3e, 0xf8, 0xe8, 0xf8, 0xe6, 0xf8, + 0x99, 0xf9, 0x97, 0xf9, 0x53, 0xfa, 0x4f, 0xfa, 0x0f, 0xfb, 0x0f, 0xfb, + 0xd5, 0xfb, 0xd2, 0xfb, 0x9c, 0xfc, 0x99, 0xfc, 0x66, 0xfd, 0x66, 0xfd, + 0x37, 0xfe, 0x34, 0xfe, 0x06, 0xff, 0x05, 0xff, 0xd9, 0xff, 0xd6, 0xff, + 0xa9, 0x00, 0xa6, 0x00, 0x78, 0x01, 0x78, 0x01, 0x45, 0x02, 0x41, 0x02, + 0x13, 0x03, 0x11, 0x03, 0xd6, 0x03, 0xd3, 0x03, 0x9b, 0x04, 0x9a, 0x04, + 0x58, 0x05, 0x55, 0x05, 0x0f, 0x06, 0x0d, 0x06, 0xc1, 0x06, 0xc0, 0x06, + 0x6a, 0x07, 0x68, 0x07, 0x0c, 0x08, 0x08, 0x08, 0xa4, 0x08, 0xa3, 0x08, + 0x34, 0x09, 0x30, 0x09, 0xb9, 0x09, 0xb7, 0x09, 0x33, 0x0a, 0x30, 0x0a, + 0xa3, 0x0a, 0xa2, 0x0a, 0x04, 0x0b, 0x03, 0x0b, 0x5c, 0x0b, 0x59, 0x0b, + 0xa4, 0x0b, 0xa1, 0x0b, 0xe0, 0x0b, 0xde, 0x0b, 0x10, 0x0c, 0x0d, 0x0c, + 0x2b, 0x0c, 0x2a, 0x0c, 0x40, 0x0c, 0x3d, 0x0c, 0x3e, 0x0c, 0x3d, 0x0c, + 0x33, 0x0c, 0x31, 0x0c, 0x16, 0x0c, 0x15, 0x0c, 0xe9, 0x0b, 0xe7, 0x0b, + 0xb0, 0x0b, 0xad, 0x0b, 0x61, 0x0b, 0x61, 0x0b, 0x0c, 0x0b, 0x08, 0x0b, + 0xa3, 0x0a, 0xa2, 0x0a, 0x31, 0x0a, 0x2f, 0x0a, 0xb2, 0x09, 0xb0, 0x09, + 0x25, 0x09, 0x24, 0x09, 0x91, 0x08, 0x8f, 0x08, 0xf2, 0x07, 0xee, 0x07, + 0x49, 0x07, 0x49, 0x07, 0x99, 0x06, 0x97, 0x06, 0xdf, 0x05, 0xdd, 0x05, + 0x22, 0x05, 0x21, 0x05, 0x5f, 0x04, 0x5d, 0x04, 0x97, 0x03, 0x94, 0x03, + 0xcd, 0x02, 0xcd, 0x02, 0x01, 0x02, 0xfd, 0x01, 0x31, 0x01, 0x31, 0x01, + 0x65, 0x00, 0x62, 0x00, 0x97, 0xff, 0x95, 0xff, 0xcb, 0xfe, 0xc9, 0xfe, + 0xff, 0xfd, 0x00, 0xfe, 0x38, 0xfd, 0x37, 0xfd, 0x76, 0xfc, 0x74, 0xfc, + 0xb7, 0xfb, 0xb5, 0xfb, 0xfd, 0xfa, 0xfc, 0xfa, 0x4c, 0xfa, 0x4a, 0xfa, + 0x9d, 0xf9, 0x9c, 0xf9, 0xf9, 0xf8, 0xf7, 0xf8, 0x5c, 0xf8, 0x5b, 0xf8, + 0xc5, 0xf7, 0xc4, 0xf7, 0x3d, 0xf7, 0x3a, 0xf7, 0xba, 0xf6, 0xb9, 0xf6, + 0x44, 0xf6, 0x43, 0xf6, 0xdb, 0xf5, 0xd6, 0xf5, 0x7a, 0xf5, 0x7b, 0xf5, + 0x2a, 0xf5, 0x26, 0xf5, 0xe1, 0xf4, 0xdf, 0xf4, 0xab, 0xf4, 0xa9, 0xf4, + 0x7e, 0xf4, 0x7d, 0xf4, 0x64, 0xf4, 0x5f, 0xf4, 0x53, 0xf4, 0x54, 0xf4, + 0x54, 0xf4, 0x50, 0xf4, 0x60, 0xf4, 0x62, 0xf4, 0x83, 0xf4, 0x7f, 0xf4, + 0xad, 0xf4, 0xad, 0xf4, 0xea, 0xf4, 0xe8, 0xf4, 0x34, 0xf5, 0x33, 0xf5, + 0x8d, 0xf5, 0x8b, 0xf5, 0xf3, 0xf5, 0xf1, 0xf5, 0x67, 0xf6, 0x65, 0xf6, + 0xe9, 0xf6, 0xe7, 0xf6, 0x74, 0xf7, 0x72, 0xf7, 0x0b, 0xf8, 0x0b, 0xf8, + 0xad, 0xf8, 0xa9, 0xf8, 0x57, 0xf9, 0x57, 0xf9, 0x0a, 0xfa, 0x07, 0xfa, + 0xc3, 0xfa, 0xc2, 0xfa, 0x81, 0xfb, 0x80, 0xfb, 0x47, 0xfc, 0x44, 0xfc, + 0x0d, 0xfd, 0x0c, 0xfd, 0xd9, 0xfd, 0xd9, 0xfd, 0xa7, 0xfe, 0xa7, 0xfe, + 0x77, 0xff, 0x75, 0xff, 0x49, 0x00, 0x48, 0x00, 0x16, 0x01, 0x14, 0x01, + 0xe3, 0x01, 0xe2, 0x01, 0xb0, 0x02, 0xaf, 0x02, 0x76, 0x03, 0x76, 0x03, + 0x3c, 0x04, 0x3b, 0x04, 0xfc, 0x04, 0xfa, 0x04, 0xb4, 0x05, 0xb5, 0x05, + 0x69, 0x06, 0x68, 0x06, 0x16, 0x07, 0x16, 0x07, 0xbc, 0x07, 0xba, 0x07, + 0x58, 0x08, 0x58, 0x08, 0xed, 0x08, 0xec, 0x08, 0x75, 0x09, 0x74, 0x09, + 0xf6, 0x09, 0xf4, 0x09, 0x67, 0x0a, 0x67, 0x0a, 0xd1, 0x0a, 0xcf, 0x0a, + 0x2d, 0x0b, 0x2d, 0x0b, 0x7b, 0x0b, 0x7a, 0x0b, 0xc0, 0x0b, 0xbe, 0x0b, + 0xf1, 0x0b, 0xf2, 0x0b, 0x1a, 0x0c, 0x18, 0x0c, 0x31, 0x0c, 0x31, 0x0c, + 0x3a, 0x0c, 0x3a, 0x0c, 0x36, 0x0c, 0x34, 0x0c, 0x1f, 0x0c, 0x1f, 0x0c, + 0xfd, 0x0b, 0xfa, 0x0b, 0xc7, 0x0b, 0xc8, 0x0b, 0x86, 0x0b, 0x84, 0x0b, + 0x35, 0x0b, 0x33, 0x0b, 0xd6, 0x0a, 0xd7, 0x0a, 0x69, 0x0a, 0x69, 0x0a, + 0xf1, 0x09, 0xed, 0x09, 0x69, 0x09, 0x6a, 0x09, 0xda, 0x08, 0xd7, 0x08, + 0x3f, 0x08, 0x40, 0x08, 0x9b, 0x07, 0x99, 0x07, 0xee, 0x06, 0xed, 0x06, + 0x3a, 0x06, 0x38, 0x06, 0x7c, 0x05, 0x7b, 0x05, 0xbe, 0x04, 0xbc, 0x04, + 0xf3, 0x03, 0xf3, 0x03, 0x2b, 0x03, 0x29, 0x03, 0x5d, 0x02, 0x5d, 0x02, + 0x8e, 0x01, 0x8b, 0x01, 0xbf, 0x00, 0xbe, 0x00, 0xed, 0xff, 0xed, 0xff, + 0x20, 0xff, 0x1e, 0xff, 0x51, 0xfe, 0x51, 0xfe, 0x86, 0xfd, 0x84, 0xfd, + 0xbe, 0xfc, 0xbd, 0xfc, 0xf9, 0xfb, 0xf8, 0xfb, 0x3a, 0xfb, 0x38, 0xfb, + 0x7f, 0xfa, 0x81, 0xfa, 0xcc, 0xf9, 0xcb, 0xf9, 0x20, 0xf9, 0x1e, 0xf9, + 0x7a, 0xf8, 0x7b, 0xf8, 0xe0, 0xf7, 0xdb, 0xf7, 0x4c, 0xf7, 0x4a, 0xf7, + 0xc1, 0xf6, 0xc0, 0xf6, 0x44, 0xf6, 0x42, 0xf6, 0xcd, 0xf5, 0xcd, 0xf5, + 0x66, 0xf5, 0x65, 0xf5, 0x0b, 0xf5, 0x08, 0xf5, 0xba, 0xf4, 0xba, 0xf4, + 0x7a, 0xf4, 0x77, 0xf4, 0x43, 0xf4, 0x42, 0xf4, 0x1e, 0xf4, 0x1c, 0xf4, + 0x03, 0xf4, 0x02, 0xf4, 0xfa, 0xf3, 0xf8, 0xf3, 0xff, 0xf3, 0xff, 0xf3, + 0x16, 0xf4, 0x12, 0xf4, 0x38, 0xf4, 0x3a, 0xf4, 0x6d, 0xf4, 0x6a, 0xf4, + 0xae, 0xf4, 0xad, 0xf4, 0xff, 0xf4, 0x00, 0xf5, 0x5e, 0xf5, 0x5b, 0xf5, + 0xcb, 0xf5, 0xcc, 0xf5, 0x43, 0xf6, 0x41, 0xf6, 0xc9, 0xf6, 0xc8, 0xf6, + 0x5c, 0xf7, 0x5b, 0xf7, 0xf3, 0xf7, 0xf1, 0xf7, 0x9a, 0xf8, 0x9b, 0xf8, + 0x46, 0xf9, 0x44, 0xf9, 0xfb, 0xf9, 0xf9, 0xf9, 0xb7, 0xfa, 0xb7, 0xfa, + 0x75, 0xfb, 0x72, 0xfb, 0x3c, 0xfc, 0x3e, 0xfc, 0x04, 0xfd, 0x02, 0xfd, + 0xd0, 0xfd, 0xd0, 0xfd, 0x9f, 0xfe, 0x9e, 0xfe, 0x6b, 0xff, 0x6b, 0xff, + 0x3c, 0x00, 0x3a, 0x00, 0x06, 0x01, 0x07, 0x01, 0xd3, 0x01, 0xd3, 0x01, + 0x9b, 0x02, 0x9a, 0x02, 0x60, 0x03, 0x60, 0x03, 0x21, 0x04, 0x21, 0x04, + 0xdc, 0x04, 0xdc, 0x04, 0x93, 0x05, 0x92, 0x05, 0x43, 0x06, 0x41, 0x06, + 0xeb, 0x06, 0xeb, 0x06, 0x8c, 0x07, 0x89, 0x07, 0x23, 0x08, 0x23, 0x08, + 0xb2, 0x08, 0xb0, 0x08, 0x36, 0x09, 0x36, 0x09, 0xb1, 0x09, 0xb0, 0x09, + 0x20, 0x0a, 0x20, 0x0a, 0x83, 0x0a, 0x83, 0x0a, 0xdb, 0x0a, 0xd9, 0x0a, + 0x25, 0x0b, 0x24, 0x0b, 0x60, 0x0b, 0x60, 0x0b, 0x94, 0x0b, 0x93, 0x0b, + 0xb1, 0x0b, 0xb0, 0x0b, 0xc8, 0x0b, 0xc6, 0x0b, 0xca, 0x0b, 0xc9, 0x0b, + 0xc1, 0x0b, 0xc0, 0x0b, 0xaa, 0x0b, 0xa8, 0x0b, 0x81, 0x0b, 0x81, 0x0b, + 0x4a, 0x0b, 0x49, 0x0b, 0x02, 0x0b, 0x02, 0x0b, 0xb0, 0x0a, 0xaf, 0x0a, + 0x4b, 0x0a, 0x4a, 0x0a, 0xdd, 0x09, 0xdc, 0x09, 0x5e, 0x09, 0x5e, 0x09, + 0xd7, 0x08, 0xd7, 0x08, 0x45, 0x08, 0x43, 0x08, 0xa5, 0x07, 0xa4, 0x07, + 0x01, 0x07, 0xfe, 0x06, 0x50, 0x06, 0x4f, 0x06, 0x98, 0x05, 0x96, 0x05, + 0xd9, 0x04, 0xd8, 0x04, 0x15, 0x04, 0x15, 0x04, 0x4f, 0x03, 0x4e, 0x03, + 0x81, 0x02, 0x7f, 0x02, 0xb2, 0x01, 0xb1, 0x01, 0xe2, 0x00, 0xe1, 0x00, + 0x13, 0x00, 0x11, 0x00, 0x43, 0xff, 0x43, 0xff, 0x71, 0xfe, 0x6f, 0xfe, + 0xa4, 0xfd, 0xa2, 0xfd, 0xd9, 0xfc, 0xd8, 0xfc, 0x11, 0xfc, 0x0e, 0xfc, + 0x4e, 0xfb, 0x4c, 0xfb, 0x8e, 0xfa, 0x8e, 0xfa, 0xd7, 0xf9, 0xd5, 0xf9, + 0x25, 0xf9, 0x26, 0xf9, 0x7c, 0xf8, 0x7a, 0xf8, 0xdb, 0xf7, 0xda, 0xf7, + 0x42, 0xf7, 0x41, 0xf7, 0xb1, 0xf6, 0xaf, 0xf6, 0x2f, 0xf6, 0x2d, 0xf6, + 0xb2, 0xf5, 0xb1, 0xf5, 0x45, 0xf5, 0x43, 0xf5, 0xe1, 0xf4, 0xe0, 0xf4, + 0x89, 0xf4, 0x8a, 0xf4, 0x43, 0xf4, 0x41, 0xf4, 0x05, 0xf4, 0x04, 0xf4, + 0xd9, 0xf3, 0xd6, 0xf3, 0xb9, 0xf3, 0xb7, 0xf3, 0xa8, 0xf3, 0xa8, 0xf3, + 0xa9, 0xf3, 0xa7, 0xf3, 0xb5, 0xf3, 0xb4, 0xf3, 0xd4, 0xf3, 0xd4, 0xf3, + 0x01, 0xf4, 0xfe, 0xf3, 0x3e, 0xf4, 0x3d, 0xf4, 0x86, 0xf4, 0x86, 0xf4, + 0xe2, 0xf4, 0xdf, 0xf4, 0x47, 0xf5, 0x45, 0xf5, 0xb9, 0xf5, 0xb8, 0xf5, + 0x3b, 0xf6, 0x3a, 0xf6, 0xc5, 0xf6, 0xc4, 0xf6, 0x5e, 0xf7, 0x5a, 0xf7, + 0xfb, 0xf7, 0xfc, 0xf7, 0xa9, 0xf8, 0xa5, 0xf8, 0x57, 0xf9, 0x58, 0xf9, + 0x14, 0xfa, 0x10, 0xfa, 0xcf, 0xfa, 0xcf, 0xfa, 0x93, 0xfb, 0x92, 0xfb, + 0x5d, 0xfc, 0x59, 0xfc, 0x25, 0xfd, 0x27, 0xfd, 0xf8, 0xfd, 0xf5, 0xfd, + 0xc2, 0xfe, 0xc2, 0xfe, 0x96, 0xff, 0x94, 0xff, 0x63, 0x00, 0x62, 0x00, + 0x31, 0x01, 0x30, 0x01, 0xfe, 0x01, 0xfc, 0x01, 0xc5, 0x02, 0xc3, 0x02, + 0x8b, 0x03, 0x89, 0x03, 0x4b, 0x04, 0x4a, 0x04, 0x06, 0x05, 0x04, 0x05, + 0xbc, 0x05, 0xba, 0x05, 0x69, 0x06, 0x66, 0x06, 0x10, 0x07, 0x0f, 0x07, + 0xb0, 0x07, 0xae, 0x07, 0x47, 0x08, 0x45, 0x08, 0xd3, 0x08, 0xd1, 0x08, + 0x56, 0x09, 0x56, 0x09, 0xcf, 0x09, 0xcc, 0x09, 0x3a, 0x0a, 0x3a, 0x0a, + 0x9b, 0x0a, 0x99, 0x0a, 0xf0, 0x0a, 0xef, 0x0a, 0x3a, 0x0b, 0x37, 0x0b, + 0x70, 0x0b, 0x6e, 0x0b, 0x9e, 0x0b, 0x9d, 0x0b, 0xbb, 0x0b, 0xb9, 0x0b, + 0xca, 0x0b, 0xc9, 0x0b, 0xce, 0x0b, 0xcc, 0x0b, 0xbf, 0x0b, 0xbd, 0x0b, + 0xa4, 0x0b, 0xa1, 0x0b, 0x75, 0x0b, 0x75, 0x0b, 0x3c, 0x0b, 0x39, 0x0b, + 0xf0, 0x0a, 0xef, 0x0a, 0x97, 0x0a, 0x95, 0x0a, 0x31, 0x0a, 0x2f, 0x0a, + 0xbd, 0x09, 0xbc, 0x09, 0x3b, 0x09, 0x3b, 0x09, 0xb2, 0x08, 0xb0, 0x08, + 0x1b, 0x08, 0x19, 0x08, 0x7b, 0x07, 0x7a, 0x07, 0xd1, 0x06, 0xd0, 0x06, + 0x1f, 0x06, 0x1d, 0x06, 0x65, 0x05, 0x64, 0x05, 0xa6, 0x04, 0xa3, 0x04, + 0xe1, 0x03, 0xe2, 0x03, 0x1a, 0x03, 0x16, 0x03, 0x4d, 0x02, 0x4c, 0x02, + 0x7f, 0x01, 0x7e, 0x01, 0xb1, 0x00, 0xae, 0x00, 0xe2, 0xff, 0xe1, 0xff, + 0x12, 0xff, 0x10, 0xff, 0x46, 0xfe, 0x45, 0xfe, 0x79, 0xfd, 0x79, 0xfd, + 0xb2, 0xfc, 0xb0, 0xfc, 0xee, 0xfb, 0xed, 0xfb, 0x2d, 0xfb, 0x2d, 0xfb, + 0x75, 0xfa, 0x73, 0xfa, 0xc0, 0xf9, 0xbf, 0xf9, 0x16, 0xf9, 0x13, 0xf9, + 0x6f, 0xf8, 0x6e, 0xf8, 0xd3, 0xf7, 0xd1, 0xf7, 0x40, 0xf7, 0x3e, 0xf7, + 0xb6, 0xf6, 0xb5, 0xf6, 0x38, 0xf6, 0x37, 0xf6, 0xc3, 0xf5, 0xc3, 0xf5, + 0x5d, 0xf5, 0x5a, 0xf5, 0x00, 0xf5, 0xff, 0xf4, 0xb0, 0xf4, 0xad, 0xf4, + 0x6e, 0xf4, 0x6d, 0xf4, 0x38, 0xf4, 0x36, 0xf4, 0x11, 0xf4, 0x10, 0xf4, + 0xfa, 0xf3, 0xf8, 0xf3, 0xef, 0xf3, 0xee, 0xf3, 0xf5, 0xf3, 0xf3, 0xf3, + 0x08, 0xf4, 0x08, 0xf4, 0x2d, 0xf4, 0x2b, 0xf4, 0x5f, 0xf4, 0x5e, 0xf4, + 0xa0, 0xf4, 0x9f, 0xf4, 0xf2, 0xf4, 0xf1, 0xf4, 0x4e, 0xf5, 0x4d, 0xf5, + 0xba, 0xf5, 0xb9, 0xf5, 0x34, 0xf6, 0x31, 0xf6, 0xb9, 0xf6, 0xb9, 0xf6, + 0x4a, 0xf7, 0x47, 0xf7, 0xe5, 0xf7, 0xe4, 0xf7, 0x89, 0xf8, 0x87, 0xf8, + 0x38, 0xf9, 0x38, 0xf9, 0xec, 0xf9, 0xea, 0xf9, 0xab, 0xfa, 0xa9, 0xfa, + 0x6a, 0xfb, 0x68, 0xfb, 0x33, 0xfc, 0x30, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, + 0xcc, 0xfd, 0xc8, 0xfd, 0x9c, 0xfe, 0x9d, 0xfe, 0x6e, 0xff, 0x6a, 0xff, + 0x40, 0x00, 0x3f, 0x00, 0x11, 0x01, 0x0d, 0x01, 0xdf, 0x01, 0xdd, 0x01, + 0xaf, 0x02, 0xae, 0x02, 0x75, 0x03, 0x74, 0x03, 0x3e, 0x04, 0x3c, 0x04, + 0xfc, 0x04, 0xfb, 0x04, 0xba, 0x05, 0xb7, 0x05, 0x6e, 0x06, 0x6c, 0x06, + 0x1b, 0x07, 0x18, 0x07, 0xc3, 0x07, 0xc1, 0x07, 0x5d, 0x08, 0x5b, 0x08, + 0xf4, 0x08, 0xf2, 0x08, 0x7f, 0x09, 0x7c, 0x09, 0xfe, 0x09, 0xfc, 0x09, + 0x73, 0x0a, 0x72, 0x0a, 0xdb, 0x0a, 0xda, 0x0a, 0x3a, 0x0b, 0x36, 0x0b, + 0x85, 0x0b, 0x86, 0x0b, 0xca, 0x0b, 0xc6, 0x0b, 0xfd, 0x0b, 0xfe, 0x0b, + 0x24, 0x0c, 0x20, 0x0c, 0x3c, 0x0c, 0x3b, 0x0c, 0x43, 0x0c, 0x41, 0x0c, + 0x3e, 0x0c, 0x3d, 0x0c, 0x28, 0x0c, 0x27, 0x0c, 0x04, 0x0c, 0x00, 0x0c, + 0xcd, 0x0b, 0xcd, 0x0b, 0x89, 0x0b, 0x89, 0x0b, 0x38, 0x0b, 0x35, 0x0b, + 0xd7, 0x0a, 0xd7, 0x0a, 0x68, 0x0a, 0x64, 0x0a, 0xee, 0x09, 0xee, 0x09, + 0x67, 0x09, 0x64, 0x09, 0xd8, 0x08, 0xd6, 0x08, 0x3c, 0x08, 0x39, 0x08, + 0x94, 0x07, 0x94, 0x07, 0xea, 0x06, 0xe8, 0x06, 0x30, 0x06, 0x2f, 0x06, + 0x77, 0x05, 0x76, 0x05, 0xb4, 0x04, 0xb2, 0x04, 0xee, 0x03, 0xec, 0x03, + 0x23, 0x03, 0x22, 0x03, 0x58, 0x02, 0x55, 0x02, 0x89, 0x01, 0x88, 0x01, + 0xb9, 0x00, 0xb9, 0x00, 0xee, 0xff, 0xea, 0xff, 0x1c, 0xff, 0x1c, 0xff, + 0x51, 0xfe, 0x50, 0xfe, 0x88, 0xfd, 0x86, 0xfd, 0xc1, 0xfc, 0xc1, 0xfc, + 0x03, 0xfc, 0xfe, 0xfb, 0x41, 0xfb, 0x42, 0xfb, 0x8e, 0xfa, 0x8b, 0xfa, + 0xda, 0xf9, 0xdb, 0xf9, 0x34, 0xf9, 0x32, 0xf9, 0x90, 0xf8, 0x8d, 0xf8, + 0xf7, 0xf7, 0xf7, 0xf7, 0x69, 0xf7, 0x67, 0xf7, 0xe2, 0xf6, 0xe1, 0xf6, + 0x68, 0xf6, 0x66, 0xf6, 0xf5, 0xf5, 0xf5, 0xf5, 0x94, 0xf5, 0x91, 0xf5, + 0x3a, 0xf5, 0x39, 0xf5, 0xef, 0xf4, 0xed, 0xf4, 0xb0, 0xf4, 0xb0, 0xf4, + 0x7f, 0xf4, 0x7c, 0xf4, 0x5b, 0xf4, 0x5c, 0xf4, 0x48, 0xf4, 0x46, 0xf4, + 0x42, 0xf4, 0x40, 0xf4, 0x4c, 0xf4, 0x4b, 0xf4, 0x61, 0xf4, 0x60, 0xf4, + 0x8b, 0xf4, 0x8c, 0xf4, 0xc0, 0xf4, 0xbe, 0xf4, 0x04, 0xf5, 0x04, 0xf5, + 0x59, 0xf5, 0x57, 0xf5, 0xb8, 0xf5, 0xb6, 0xf5, 0x28, 0xf6, 0x28, 0xf6, + 0xa5, 0xf6, 0xa3, 0xf6, 0x2e, 0xf7, 0x2d, 0xf7, 0xbf, 0xf7, 0xc0, 0xf7, + 0x5e, 0xf8, 0x5c, 0xf8, 0x05, 0xf9, 0x05, 0xf9, 0xb6, 0xf9, 0xb2, 0xf9, + 0x6d, 0xfa, 0x6d, 0xfa, 0x28, 0xfb, 0x24, 0xfb, 0xee, 0xfb, 0xec, 0xfb, + 0xb4, 0xfc, 0xb2, 0xfc, 0x80, 0xfd, 0x7e, 0xfd, 0x51, 0xfe, 0x4f, 0xfe, + 0x1e, 0xff, 0x1c, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xc1, 0x00, 0xbe, 0x00, + 0x90, 0x01, 0x8e, 0x01, 0x60, 0x02, 0x5e, 0x02, 0x28, 0x03, 0x27, 0x03, + 0xf3, 0x03, 0xf0, 0x03, 0xb2, 0x04, 0xb2, 0x04, 0x72, 0x05, 0x6f, 0x05, + 0x29, 0x06, 0x28, 0x06, 0xda, 0x06, 0xd7, 0x06, 0x84, 0x07, 0x82, 0x07, + 0x24, 0x08, 0x24, 0x08, 0xbe, 0x08, 0xbb, 0x08, 0x4a, 0x09, 0x49, 0x09, + 0xd2, 0x09, 0xcd, 0x09, 0x48, 0x0a, 0x48, 0x0a, 0xb9, 0x0a, 0xb6, 0x0a, + 0x1a, 0x0b, 0x18, 0x0b, 0x70, 0x0b, 0x6e, 0x0b, 0xb5, 0x0b, 0xb5, 0x0b, + 0xf3, 0x0b, 0xf0, 0x0b, 0x1c, 0x0c, 0x1d, 0x0c, 0x3c, 0x0c, 0x39, 0x0c, + 0x4d, 0x0c, 0x4c, 0x0c, 0x49, 0x0c, 0x49, 0x0c, 0x3f, 0x0c, 0x3e, 0x0c, + 0x20, 0x0c, 0x1d, 0x0c, 0xf3, 0x0b, 0xf2, 0x0b, 0xb5, 0x0b, 0xb4, 0x0b, + 0x6a, 0x0b, 0x68, 0x0b, 0x0f, 0x0b, 0x0e, 0x0b, 0xaa, 0x0a, 0xa7, 0x0a, + 0x33, 0x0a, 0x32, 0x0a, 0xb4, 0x09, 0xb2, 0x09, 0x25, 0x09, 0x25, 0x09, + 0x8f, 0x08, 0x8d, 0x08, 0xf1, 0x07, 0xf0, 0x07, 0x42, 0x07, 0x41, 0x07, + 0x93, 0x06, 0x92, 0x06, 0xd6, 0x05, 0xd5, 0x05, 0x18, 0x05, 0x17, 0x05, + 0x51, 0x04, 0x50, 0x04, 0x87, 0x03, 0x86, 0x03, 0xbd, 0x02, 0xbb, 0x02, + 0xe9, 0x01, 0xe7, 0x01, 0x1e, 0x01, 0x1c, 0x01, 0x48, 0x00, 0x46, 0x00, + 0x7c, 0xff, 0x7b, 0xff, 0xab, 0xfe, 0xa8, 0xfe, 0xde, 0xfd, 0xdc, 0xfd, + 0x14, 0xfd, 0x12, 0xfd, 0x4c, 0xfc, 0x49, 0xfc, 0x8a, 0xfb, 0x89, 0xfb, + 0xcc, 0xfa, 0xca, 0xfa, 0x17, 0xfa, 0x16, 0xfa, 0x66, 0xf9, 0x64, 0xf9, + 0xbd, 0xf8, 0xbc, 0xf8, 0x1d, 0xf8, 0x1c, 0xf8, 0x85, 0xf7, 0x84, 0xf7, + 0xf6, 0xf6, 0xf7, 0xf6, 0x75, 0xf6, 0x73, 0xf6, 0xfa, 0xf5, 0xfa, 0xf5, + 0x8d, 0xf5, 0x8d, 0xf5, 0x2c, 0xf5, 0x29, 0xf5, 0xd8, 0xf4, 0xd9, 0xf4, + 0x91, 0xf4, 0x8d, 0xf4, 0x54, 0xf4, 0x55, 0xf4, 0x28, 0xf4, 0x27, 0xf4, + 0x0b, 0xf4, 0x09, 0xf4, 0xfc, 0xf3, 0xfb, 0xf3, 0xfc, 0xf3, 0xfa, 0xf3, + 0x09, 0xf4, 0x09, 0xf4, 0x29, 0xf4, 0x26, 0xf4, 0x57, 0xf4, 0x56, 0xf4, + 0x93, 0xf4, 0x91, 0xf4, 0xdf, 0xf4, 0xdd, 0xf4, 0x36, 0xf5, 0x36, 0xf5, + 0xa0, 0xf5, 0x9c, 0xf5, 0x15, 0xf6, 0x13, 0xf6, 0x93, 0xf6, 0x92, 0xf6, + 0x23, 0xf7, 0x22, 0xf7, 0xb8, 0xf7, 0xb6, 0xf7, 0x5b, 0xf8, 0x5b, 0xf8, + 0x04, 0xf9, 0x02, 0xf9, 0xb6, 0xf9, 0xb5, 0xf9, 0x70, 0xfa, 0x6f, 0xfa, + 0x2e, 0xfb, 0x2c, 0xfb, 0xf2, 0xfb, 0xf3, 0xfb, 0xbb, 0xfc, 0xb9, 0xfc, + 0x86, 0xfd, 0x86, 0xfd, 0x57, 0xfe, 0x55, 0xfe, 0x23, 0xff, 0x22, 0xff, + 0xf5, 0xff, 0xf2, 0xff, 0xc0, 0x00, 0xc1, 0x00, 0x90, 0x01, 0x8e, 0x01, + 0x5a, 0x02, 0x59, 0x02, 0x22, 0x03, 0x21, 0x03, 0xe4, 0x03, 0xe3, 0x03, + 0xa4, 0x04, 0xa2, 0x04, 0x5c, 0x05, 0x5d, 0x05, 0x10, 0x06, 0x0d, 0x06, + 0xba, 0x06, 0xbc, 0x06, 0x63, 0x07, 0x5f, 0x07, 0xfa, 0x07, 0xfa, 0x07, + 0x8f, 0x08, 0x8e, 0x08, 0x18, 0x09, 0x16, 0x09, 0x95, 0x09, 0x94, 0x09, + 0x09, 0x0a, 0x09, 0x0a, 0x73, 0x0a, 0x72, 0x0a, 0xcd, 0x0a, 0xcd, 0x0a, + 0x1f, 0x0b, 0x1b, 0x0b, 0x5d, 0x0b, 0x5f, 0x0b, 0x93, 0x0b, 0x91, 0x0b, + 0xbb, 0x0b, 0xbb, 0x0b, 0xd1, 0x0b, 0xd0, 0x0b, 0xde, 0x0b, 0xdc, 0x0b, + 0xd7, 0x0b, 0xd7, 0x0b, 0xc6, 0x0b, 0xc5, 0x0b, 0xa4, 0x0b, 0xa1, 0x0b, + 0x70, 0x0b, 0x71, 0x0b, 0x31, 0x0b, 0x2f, 0x0b, 0xe1, 0x0a, 0xdd, 0x0a, + 0x80, 0x0a, 0x82, 0x0a, 0x1a, 0x0a, 0x17, 0x0a, 0x9c, 0x09, 0x9b, 0x09, + 0x19, 0x09, 0x1a, 0x09, 0x88, 0x08, 0x85, 0x08, 0xed, 0x07, 0xee, 0x07, + 0x4b, 0x07, 0x49, 0x07, 0x9d, 0x06, 0x9b, 0x06, 0xe9, 0x05, 0xe8, 0x05, + 0x29, 0x05, 0x29, 0x05, 0x6a, 0x04, 0x68, 0x04, 0xa2, 0x03, 0xa1, 0x03, + 0xd5, 0x02, 0xd4, 0x02, 0x09, 0x02, 0x09, 0x02, 0x37, 0x01, 0x37, 0x01, + 0x66, 0x00, 0x66, 0x00, 0x95, 0xff, 0x93, 0xff, 0xc3, 0xfe, 0xc4, 0xfe, + 0xf5, 0xfd, 0xf4, 0xfd, 0x27, 0xfd, 0x27, 0xfd, 0x5d, 0xfc, 0x5b, 0xfc, + 0x99, 0xfb, 0x99, 0xfb, 0xd7, 0xfa, 0xd5, 0xfa, 0x1b, 0xfa, 0x1b, 0xfa, + 0x68, 0xf9, 0x66, 0xf9, 0xb9, 0xf8, 0xb9, 0xf8, 0x16, 0xf8, 0x12, 0xf8, + 0x77, 0xf7, 0x77, 0xf7, 0xe5, 0xf6, 0xe4, 0xf6, 0x5b, 0xf6, 0x5a, 0xf6, + 0xdd, 0xf5, 0xda, 0xf5, 0x6b, 0xf5, 0x69, 0xf5, 0x02, 0xf5, 0x01, 0xf5, + 0xa8, 0xf4, 0xa7, 0xf4, 0x59, 0xf4, 0x59, 0xf4, 0x1b, 0xf4, 0x18, 0xf4, + 0xe4, 0xf3, 0xe5, 0xf3, 0xc1, 0xf3, 0xc1, 0xf3, 0xac, 0xf3, 0xa9, 0xf3, + 0xa3, 0xf3, 0xa3, 0xf3, 0xac, 0xf3, 0xab, 0xf3, 0xc4, 0xf3, 0xc4, 0xf3, + 0xeb, 0xf3, 0xec, 0xf3, 0x24, 0xf4, 0x22, 0xf4, 0x68, 0xf4, 0x69, 0xf4, + 0xbe, 0xf4, 0xbc, 0xf4, 0x1d, 0xf5, 0x1d, 0xf5, 0x8d, 0xf5, 0x8d, 0xf5, + 0x08, 0xf6, 0x08, 0xf6, 0x90, 0xf6, 0x8f, 0xf6, 0x23, 0xf7, 0x23, 0xf7, + 0xc1, 0xf7, 0xc0, 0xf7, 0x66, 0xf8, 0x66, 0xf8, 0x16, 0xf9, 0x15, 0xf9, + 0xcc, 0xf9, 0xcb, 0xf9, 0x89, 0xfa, 0x89, 0xfa, 0x49, 0xfb, 0x49, 0xfb, + 0x12, 0xfc, 0x13, 0xfc, 0xdb, 0xfc, 0xdb, 0xfc, 0xa9, 0xfd, 0xa9, 0xfd, + 0x7a, 0xfe, 0x7a, 0xfe, 0x45, 0xff, 0x47, 0xff, 0x1a, 0x00, 0x19, 0x00, + 0xe5, 0x00, 0xe6, 0x00, 0xb3, 0x01, 0xb4, 0x01, 0x7d, 0x02, 0x7d, 0x02, + 0x41, 0x03, 0x43, 0x03, 0x06, 0x04, 0x06, 0x04, 0xc1, 0x04, 0xc1, 0x04, + 0x7a, 0x05, 0x7b, 0x05, 0x2b, 0x06, 0x2b, 0x06, 0xd4, 0x06, 0xd6, 0x06, + 0x77, 0x07, 0x75, 0x07, 0x0e, 0x08, 0x10, 0x08, 0xa0, 0x08, 0xa0, 0x08, + 0x25, 0x09, 0x25, 0x09, 0xa2, 0x09, 0xa2, 0x09, 0x12, 0x0a, 0x13, 0x0a, + 0x78, 0x0a, 0x78, 0x0a, 0xd0, 0x0a, 0xd0, 0x0a, 0x1b, 0x0b, 0x1c, 0x0b, + 0x5b, 0x0b, 0x5a, 0x0b, 0x89, 0x0b, 0x8a, 0x0b, 0xad, 0x0b, 0xac, 0x0b, + 0xc0, 0x0b, 0xc0, 0x0b, 0xc8, 0x0b, 0xc6, 0x0b, 0xbd, 0x0b, 0xbc, 0x0b, + 0xa6, 0x0b, 0xa6, 0x0b, 0x7f, 0x0b, 0x7e, 0x0b, 0x47, 0x0b, 0x4a, 0x0b, + 0x04, 0x0b, 0x01, 0x0b, 0xaf, 0x0a, 0xb0, 0x0a, 0x4e, 0x0a, 0x4d, 0x0a, + 0xde, 0x09, 0xdc, 0x09, 0x63, 0x09, 0x64, 0x09, 0xdb, 0x08, 0xd8, 0x08, + 0x48, 0x08, 0x47, 0x08, 0xaa, 0x07, 0xab, 0x07, 0x04, 0x07, 0x03, 0x07, + 0x56, 0x06, 0x55, 0x06, 0x9e, 0x05, 0x9e, 0x05, 0xe3, 0x04, 0xe2, 0x04, + 0x1c, 0x04, 0x1e, 0x04, 0x59, 0x03, 0x57, 0x03, 0x8a, 0x02, 0x8c, 0x02, + 0xbf, 0x01, 0xbe, 0x01, 0xf1, 0x00, 0xef, 0x00, 0x1e, 0x00, 0x1f, 0x00, + 0x52, 0xff, 0x52, 0xff, 0x81, 0xfe, 0x82, 0xfe, 0xb9, 0xfd, 0xb9, 0xfd, + 0xed, 0xfc, 0xed, 0xfc, 0x29, 0xfc, 0x29, 0xfc, 0x66, 0xfb, 0x65, 0xfb, + 0xaa, 0xfa, 0xad, 0xfa, 0xf6, 0xf9, 0xf5, 0xf9, 0x47, 0xf9, 0x47, 0xf9, + 0x9e, 0xf8, 0x9e, 0xf8, 0x00, 0xf8, 0x01, 0xf8, 0x68, 0xf7, 0x68, 0xf7, + 0xdb, 0xf6, 0xde, 0xf6, 0x5a, 0xf6, 0x59, 0xf6, 0xe3, 0xf5, 0xe5, 0xf5, + 0x77, 0xf5, 0x78, 0xf5, 0x15, 0xf5, 0x16, 0xf5, 0xc4, 0xf4, 0xc5, 0xf4, + 0x7c, 0xf4, 0x7b, 0xf4, 0x43, 0xf4, 0x46, 0xf4, 0x17, 0xf4, 0x17, 0xf4, + 0xfc, 0xf3, 0xfc, 0xf3, 0xec, 0xf3, 0xed, 0xf3, 0xec, 0xf3, 0xef, 0xf3, + 0xfc, 0xf3, 0xfc, 0xf3, 0x1b, 0xf4, 0x1c, 0xf4, 0x48, 0xf4, 0x48, 0xf4, + 0x87, 0xf4, 0x87, 0xf4, 0xd2, 0xf4, 0xd1, 0xf4, 0x2c, 0xf5, 0x2d, 0xf5, + 0x93, 0xf5, 0x93, 0xf5, 0x07, 0xf6, 0x08, 0xf6, 0x87, 0xf6, 0x89, 0xf6, + 0x15, 0xf7, 0x15, 0xf7, 0xac, 0xf7, 0xac, 0xf7, 0x4e, 0xf8, 0x4e, 0xf8, + 0xfa, 0xf8, 0xfc, 0xf8, 0xab, 0xf9, 0xab, 0xf9, 0x66, 0xfa, 0x68, 0xfa, + 0x24, 0xfb, 0x23, 0xfb, 0xe9, 0xfb, 0xea, 0xfb, 0xb5, 0xfc, 0xb6, 0xfc, + 0x7e, 0xfd, 0x7f, 0xfd, 0x50, 0xfe, 0x50, 0xfe, 0x1e, 0xff, 0x1f, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xc1, 0x00, 0xc3, 0x00, 0x91, 0x01, 0x91, 0x01, + 0x61, 0x02, 0x61, 0x02, 0x29, 0x03, 0x29, 0x03, 0xf2, 0x03, 0xf2, 0x03, + 0xb1, 0x04, 0xb2, 0x04, 0x70, 0x05, 0x6f, 0x05, 0x25, 0x06, 0x27, 0x06, + 0xd5, 0x06, 0xd4, 0x06, 0x7e, 0x07, 0x7d, 0x07, 0x1b, 0x08, 0x1e, 0x08, + 0xb5, 0x08, 0xb3, 0x08, 0x42, 0x09, 0x43, 0x09, 0xc1, 0x09, 0xc1, 0x09, + 0x3d, 0x0a, 0x3e, 0x0a, 0xa5, 0x0a, 0xa6, 0x0a, 0x08, 0x0b, 0x09, 0x0b, + 0x5b, 0x0b, 0x5a, 0x0b, 0xa1, 0x0b, 0xa2, 0x0b, 0xd9, 0x0b, 0xd9, 0x0b, + 0x04, 0x0c, 0x04, 0x0c, 0x1f, 0x0c, 0x21, 0x0c, 0x2d, 0x0c, 0x2e, 0x0c, + 0x2c, 0x0c, 0x2b, 0x0c, 0x18, 0x0c, 0x1b, 0x0c, 0xfb, 0x0b, 0xfa, 0x0b, + 0xca, 0x0b, 0xcc, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0x3e, 0x0b, 0x3f, 0x0b, + 0xe1, 0x0a, 0xe2, 0x0a, 0x7a, 0x0a, 0x7a, 0x0a, 0x03, 0x0a, 0x03, 0x0a, + 0x81, 0x09, 0x82, 0x09, 0xf3, 0x08, 0xf3, 0x08, 0x5c, 0x08, 0x5d, 0x08, + 0xba, 0x07, 0xb8, 0x07, 0x10, 0x07, 0x11, 0x07, 0x5f, 0x06, 0x5d, 0x06, + 0xa3, 0x05, 0xa4, 0x05, 0xe6, 0x04, 0xe7, 0x04, 0x20, 0x04, 0x21, 0x04, + 0x5a, 0x03, 0x59, 0x03, 0x8c, 0x02, 0x8f, 0x02, 0xc2, 0x01, 0xbf, 0x01, + 0xef, 0x00, 0xf2, 0x00, 0x24, 0x00, 0x24, 0x00, 0x57, 0xff, 0x56, 0xff, + 0x8a, 0xfe, 0x8c, 0xfe, 0xc3, 0xfd, 0xc2, 0xfd, 0xf9, 0xfc, 0xfc, 0xfc, + 0x3a, 0xfc, 0x39, 0xfc, 0x7a, 0xfb, 0x7b, 0xfb, 0xc2, 0xfa, 0xc3, 0xfa, + 0x10, 0xfa, 0x11, 0xfa, 0x66, 0xf9, 0x65, 0xf9, 0xc0, 0xf8, 0xc3, 0xf8, + 0x28, 0xf8, 0x28, 0xf8, 0x94, 0xf7, 0x96, 0xf7, 0x0f, 0xf7, 0x0f, 0xf7, + 0x8f, 0xf6, 0x91, 0xf6, 0x1f, 0xf6, 0x1e, 0xf6, 0xb5, 0xf5, 0xb7, 0xf5, + 0x5a, 0xf5, 0x5b, 0xf5, 0x0b, 0xf5, 0x0d, 0xf5, 0xcc, 0xf4, 0xcb, 0xf4, + 0x94, 0xf4, 0x98, 0xf4, 0x71, 0xf4, 0x70, 0xf4, 0x56, 0xf4, 0x5a, 0xf4, + 0x4f, 0xf4, 0x4e, 0xf4, 0x51, 0xf4, 0x55, 0xf4, 0x66, 0xf4, 0x67, 0xf4, + 0x89, 0xf4, 0x8a, 0xf4, 0xbb, 0xf4, 0xbd, 0xf4, 0xfa, 0xf4, 0xfb, 0xf4, + 0x4b, 0xf5, 0x4c, 0xf5, 0xa7, 0xf5, 0xaa, 0xf5, 0x11, 0xf6, 0x12, 0xf6, + 0x8a, 0xf6, 0x8c, 0xf6, 0x0c, 0xf7, 0x0e, 0xf7, 0x9b, 0xf7, 0x9d, 0xf7, + 0x36, 0xf8, 0x36, 0xf8, 0xdb, 0xf8, 0xdc, 0xf8, 0x88, 0xf9, 0x89, 0xf9, + 0x3a, 0xfa, 0x3c, 0xfa, 0xf7, 0xfa, 0xf8, 0xfa, 0xb8, 0xfb, 0xb9, 0xfb, + 0x7c, 0xfc, 0x80, 0xfc, 0x47, 0xfd, 0x46, 0xfd, 0x10, 0xfe, 0x15, 0xfe, + 0xe5, 0xfe, 0xe3, 0xfe, 0xb0, 0xff, 0xb3, 0xff, 0x83, 0x00, 0x84, 0x00, + 0x50, 0x01, 0x51, 0x01, 0x1e, 0x02, 0x20, 0x02, 0xeb, 0x02, 0xed, 0x02, + 0xb2, 0x03, 0xb2, 0x03, 0x77, 0x04, 0x78, 0x04, 0x34, 0x05, 0x35, 0x05, + 0xed, 0x05, 0xee, 0x05, 0x9e, 0x06, 0x9f, 0x06, 0x49, 0x07, 0x4a, 0x07, + 0xee, 0x07, 0xed, 0x07, 0x84, 0x08, 0x87, 0x08, 0x19, 0x09, 0x1a, 0x09, + 0x9d, 0x09, 0x9f, 0x09, 0x1b, 0x0a, 0x1c, 0x0a, 0x8a, 0x0a, 0x8b, 0x0a, + 0xf1, 0x0a, 0xf0, 0x0a, 0x4a, 0x0b, 0x4d, 0x0b, 0x94, 0x0b, 0x94, 0x0b, + 0xd5, 0x0b, 0xd6, 0x0b, 0x00, 0x0c, 0x02, 0x0c, 0x29, 0x0c, 0x28, 0x0c, + 0x35, 0x0c, 0x39, 0x0c, 0x3d, 0x0c, 0x3e, 0x0c, 0x32, 0x0c, 0x33, 0x0c, + 0x18, 0x0c, 0x19, 0x0c, 0xf1, 0x0b, 0xf3, 0x0b, 0xb9, 0x0b, 0xba, 0x0b, + 0x71, 0x0b, 0x73, 0x0b, 0x1d, 0x0b, 0x1e, 0x0b, 0xb8, 0x0a, 0xba, 0x0a, + 0x49, 0x0a, 0x4b, 0x0a, 0xcd, 0x09, 0xcf, 0x09, 0x45, 0x09, 0x45, 0x09, + 0xb1, 0x08, 0xb5, 0x08, 0x14, 0x08, 0x14, 0x08, 0x6c, 0x07, 0x71, 0x07, + 0xc2, 0x06, 0xc1, 0x06, 0x06, 0x06, 0x0b, 0x06, 0x4d, 0x05, 0x4d, 0x05, + 0x87, 0x04, 0x8b, 0x04, 0xc3, 0x03, 0xc4, 0x03, 0xf5, 0x02, 0xf8, 0x02, + 0x2b, 0x02, 0x2c, 0x02, 0x59, 0x01, 0x5b, 0x01, 0x8a, 0x00, 0x8e, 0x00, + 0xbc, 0xff, 0xbe, 0xff, 0xed, 0xfe, 0xef, 0xfe, 0x22, 0xfe, 0x24, 0xfe, + 0x56, 0xfd, 0x59, 0xfd, 0x90, 0xfc, 0x94, 0xfc, 0xcf, 0xfb, 0xd1, 0xfb, + 0x0f, 0xfb, 0x13, 0xfb, 0x5a, 0xfa, 0x5c, 0xfa, 0xa7, 0xf9, 0xab, 0xf9, + 0xfe, 0xf8, 0x00, 0xf9, 0x5d, 0xf8, 0x60, 0xf8, 0xc4, 0xf7, 0xc6, 0xf7, + 0x35, 0xf7, 0x37, 0xf7, 0xaf, 0xf6, 0xb3, 0xf6, 0x35, 0xf6, 0x36, 0xf6, + 0xc3, 0xf5, 0xc7, 0xf5, 0x60, 0xf5, 0x64, 0xf5, 0x09, 0xf5, 0x0a, 0xf5, + 0xc0, 0xf4, 0xc2, 0xf4, 0x80, 0xf4, 0x82, 0xf4, 0x51, 0xf4, 0x55, 0xf4, + 0x2f, 0xf4, 0x31, 0xf4, 0x19, 0xf4, 0x1e, 0xf4, 0x19, 0xf4, 0x1b, 0xf4, + 0x20, 0xf4, 0x24, 0xf4, 0x3f, 0xf4, 0x40, 0xf4, 0x64, 0xf4, 0x68, 0xf4, + 0x9e, 0xf4, 0x9f, 0xf4, 0xe4, 0xf4, 0xe7, 0xf4, 0x38, 0xf5, 0x3a, 0xf5, + 0x9c, 0xf5, 0x9f, 0xf5, 0x0b, 0xf6, 0x0d, 0xf6, 0x88, 0xf6, 0x89, 0xf6, + 0x10, 0xf7, 0x12, 0xf7, 0xa3, 0xf7, 0xa6, 0xf7, 0x40, 0xf8, 0x42, 0xf8, + 0xe6, 0xf8, 0xe8, 0xf8, 0x95, 0xf9, 0x98, 0xf9, 0x49, 0xfa, 0x4d, 0xfa, + 0x08, 0xfb, 0x0c, 0xfb, 0xc8, 0xfb, 0xcc, 0xfb, 0x8f, 0xfc, 0x93, 0xfc, + 0x58, 0xfd, 0x5a, 0xfd, 0x24, 0xfe, 0x27, 0xfe, 0xf1, 0xfe, 0xf3, 0xfe, + 0xc0, 0xff, 0xc3, 0xff, 0x8e, 0x00, 0x91, 0x00, 0x58, 0x01, 0x5c, 0x01, + 0x25, 0x02, 0x25, 0x02, 0xe8, 0x02, 0xf0, 0x02, 0xb0, 0x03, 0xb0, 0x03, + 0x6c, 0x04, 0x72, 0x04, 0x27, 0x05, 0x28, 0x05, 0xdb, 0x05, 0xe0, 0x05, + 0x87, 0x06, 0x8a, 0x06, 0x2d, 0x07, 0x2f, 0x07, 0xca, 0x07, 0xcf, 0x07, + 0x5f, 0x08, 0x62, 0x08, 0xea, 0x08, 0xed, 0x08, 0x6b, 0x09, 0x6f, 0x09, + 0xe0, 0x09, 0xe2, 0x09, 0x4d, 0x0a, 0x50, 0x0a, 0xa9, 0x0a, 0xac, 0x0a, + 0xfb, 0x0a, 0xfd, 0x0a, 0x41, 0x0b, 0x45, 0x0b, 0x78, 0x0b, 0x7a, 0x0b, + 0xa4, 0x0b, 0xa7, 0x0b, 0xbe, 0x0b, 0xc1, 0x0b, 0xcd, 0x0b, 0xcf, 0x0b, + 0xcc, 0x0b, 0xcf, 0x0b, 0xbb, 0x0b, 0xbe, 0x0b, 0x9e, 0x0b, 0xa0, 0x0b, + 0x71, 0x0b, 0x74, 0x0b, 0x35, 0x0b, 0x37, 0x0b, 0xeb, 0x0a, 0xec, 0x0a, + 0x8f, 0x0a, 0x93, 0x0a, 0x2a, 0x0a, 0x2b, 0x0a, 0xb4, 0x09, 0xb7, 0x09, + 0x35, 0x09, 0x37, 0x09, 0xa8, 0x08, 0xaa, 0x08, 0x12, 0x08, 0x13, 0x08, + 0x70, 0x07, 0x74, 0x07, 0xc8, 0x06, 0xc8, 0x06, 0x16, 0x06, 0x18, 0x06, + 0x5e, 0x05, 0x5d, 0x05, 0x9c, 0x04, 0xa1, 0x04, 0xda, 0x03, 0xda, 0x03, + 0x0f, 0x03, 0x13, 0x03, 0x43, 0x02, 0x44, 0x02, 0x74, 0x01, 0x75, 0x01, + 0xa6, 0x00, 0xa6, 0x00, 0xd2, 0xff, 0xd7, 0xff, 0x08, 0xff, 0x08, 0xff, + 0x34, 0xfe, 0x3a, 0xfe, 0x6c, 0xfd, 0x6c, 0xfd, 0xa0, 0xfc, 0xa4, 0xfc, + 0xd9, 0xfb, 0xdc, 0xfb, 0x1b, 0xfb, 0x1c, 0xfb, 0x5d, 0xfa, 0x60, 0xfa, + 0xaa, 0xf9, 0xaa, 0xf9, 0xfb, 0xf8, 0xfd, 0xf8, 0x54, 0xf8, 0x57, 0xf8, + 0xb7, 0xf7, 0xb6, 0xf7, 0x20, 0xf7, 0x21, 0xf7, 0x94, 0xf6, 0x97, 0xf6, + 0x14, 0xf6, 0x15, 0xf6, 0x9e, 0xf5, 0xa1, 0xf5, 0x35, 0xf5, 0x35, 0xf5, + 0xd5, 0xf4, 0xd7, 0xf4, 0x82, 0xf4, 0x88, 0xf4, 0x42, 0xf4, 0x42, 0xf4, + 0x0a, 0xf4, 0x0d, 0xf4, 0xe3, 0xf3, 0xe5, 0xf3, 0xc7, 0xf3, 0xc9, 0xf3, + 0xbc, 0xf3, 0xc0, 0xf3, 0xc1, 0xf3, 0xc2, 0xf3, 0xd4, 0xf3, 0xd6, 0xf3, + 0xf7, 0xf3, 0xfa, 0xf3, 0x2a, 0xf4, 0x29, 0xf4, 0x6a, 0xf4, 0x6d, 0xf4, + 0xb9, 0xf4, 0xbb, 0xf4, 0x16, 0xf5, 0x18, 0xf5, 0x81, 0xf5, 0x85, 0xf5, + 0xf4, 0xf5, 0xf7, 0xf5, 0x7a, 0xf6, 0x7c, 0xf6, 0x05, 0xf7, 0x0a, 0xf7, + 0xa1, 0xf7, 0xa1, 0xf7, 0x42, 0xf8, 0x46, 0xf8, 0xec, 0xf8, 0xee, 0xf8, + 0xa3, 0xf9, 0xa5, 0xf9, 0x59, 0xfa, 0x5c, 0xfa, 0x1a, 0xfb, 0x1c, 0xfb, + 0xde, 0xfb, 0xe0, 0xfb, 0xa3, 0xfc, 0xa5, 0xfc, 0x70, 0xfd, 0x75, 0xfd, + 0x3d, 0xfe, 0x3e, 0xfe, 0x0b, 0xff, 0x0c, 0xff, 0xda, 0xff, 0xdf, 0xff, + 0xa7, 0x00, 0xa7, 0x00, 0x73, 0x01, 0x78, 0x01, 0x3b, 0x02, 0x3c, 0x02, + 0x04, 0x03, 0x07, 0x03, 0xc6, 0x03, 0xc9, 0x03, 0x83, 0x04, 0x85, 0x04, + 0x3b, 0x05, 0x40, 0x05, 0xec, 0x05, 0xee, 0x05, 0x99, 0x06, 0x9c, 0x06, + 0x3a, 0x07, 0x3d, 0x07, 0xd6, 0x07, 0xd8, 0x07, 0x68, 0x08, 0x6d, 0x08, + 0xef, 0x08, 0xf1, 0x08, 0x6d, 0x09, 0x71, 0x09, 0xdf, 0x09, 0xe1, 0x09, + 0x47, 0x0a, 0x4a, 0x0a, 0xa1, 0x0a, 0xa6, 0x0a, 0xf2, 0x0a, 0xf4, 0x0a, + 0x32, 0x0b, 0x36, 0x0b, 0x67, 0x0b, 0x69, 0x0b, 0x8d, 0x0b, 0x8f, 0x0b, + 0xa5, 0x0b, 0xa9, 0x0b, 0xb0, 0x0b, 0xb2, 0x0b, 0xa9, 0x0b, 0xab, 0x0b, + 0x98, 0x0b, 0x99, 0x0b, 0x73, 0x0b, 0x76, 0x0b, 0x42, 0x0b, 0x46, 0x0b, + 0x03, 0x0b, 0x04, 0x0b, 0xb3, 0x0a, 0xb5, 0x0a, 0x56, 0x0a, 0x59, 0x0a, + 0xeb, 0x09, 0xec, 0x09, 0x72, 0x09, 0x76, 0x09, 0xf0, 0x08, 0xf2, 0x08, + 0x60, 0x08, 0x61, 0x08, 0xc6, 0x07, 0xc9, 0x07, 0x26, 0x07, 0x27, 0x07, + 0x76, 0x06, 0x7b, 0x06, 0xc6, 0x05, 0xc7, 0x05, 0x0a, 0x05, 0x0c, 0x05, + 0x4b, 0x04, 0x4d, 0x04, 0x86, 0x03, 0x88, 0x03, 0xbd, 0x02, 0xc0, 0x02, + 0xf1, 0x01, 0xf3, 0x01, 0x23, 0x01, 0x27, 0x01, 0x54, 0x00, 0x57, 0x00, + 0x86, 0xff, 0x88, 0xff, 0xba, 0xfe, 0xbc, 0xfe, 0xed, 0xfd, 0xf0, 0xfd, + 0x24, 0xfd, 0x26, 0xfd, 0x5d, 0xfc, 0x60, 0xfc, 0x9a, 0xfb, 0x9e, 0xfb, + 0xe0, 0xfa, 0xe1, 0xfa, 0x25, 0xfa, 0x29, 0xfa, 0x77, 0xf9, 0x78, 0xf9, + 0xce, 0xf8, 0xce, 0xf8, 0x2d, 0xf8, 0x31, 0xf8, 0x94, 0xf7, 0x96, 0xf7, + 0x06, 0xf7, 0x07, 0xf7, 0x7f, 0xf6, 0x84, 0xf6, 0x06, 0xf6, 0x06, 0xf6, + 0x95, 0xf5, 0x9b, 0xf5, 0x33, 0xf5, 0x35, 0xf5, 0xdc, 0xf4, 0xde, 0xf4, + 0x92, 0xf4, 0x96, 0xf4, 0x54, 0xf4, 0x56, 0xf4, 0x27, 0xf4, 0x29, 0xf4, + 0x03, 0xf4, 0x06, 0xf4, 0xf1, 0xf3, 0xf6, 0xf3, 0xf0, 0xf3, 0xef, 0xf3, + 0xfa, 0xf3, 0xfe, 0xf3, 0x14, 0xf4, 0x16, 0xf4, 0x3c, 0xf4, 0x40, 0xf4, + 0x77, 0xf4, 0x7b, 0xf4, 0xbd, 0xf4, 0xbe, 0xf4, 0x13, 0xf5, 0x18, 0xf5, + 0x75, 0xf5, 0x78, 0xf5, 0xe7, 0xf5, 0xe9, 0xf5, 0x62, 0xf6, 0x65, 0xf6, + 0xea, 0xf6, 0xec, 0xf6, 0x7e, 0xf7, 0x81, 0xf7, 0x1c, 0xf8, 0x1f, 0xf8, + 0xc4, 0xf8, 0xc6, 0xf8, 0x73, 0xf9, 0x75, 0xf9, 0x29, 0xfa, 0x2d, 0xfa, + 0xe8, 0xfa, 0xe8, 0xfa, 0xa8, 0xfb, 0xad, 0xfb, 0x73, 0xfc, 0x75, 0xfc, + 0x3a, 0xfd, 0x3d, 0xfd, 0x0c, 0xfe, 0x0f, 0xfe, 0xd8, 0xfe, 0xda, 0xfe, + 0xab, 0xff, 0xae, 0xff, 0x79, 0x00, 0x7d, 0x00, 0x4a, 0x01, 0x4b, 0x01, + 0x18, 0x02, 0x1b, 0x02, 0xe2, 0x02, 0xe5, 0x02, 0xa9, 0x03, 0xad, 0x03, + 0x6d, 0x04, 0x6f, 0x04, 0x28, 0x05, 0x2c, 0x05, 0xe2, 0x05, 0xe4, 0x05, + 0x92, 0x06, 0x96, 0x06, 0x3d, 0x07, 0x40, 0x07, 0xdf, 0x07, 0xe2, 0x07, + 0x77, 0x08, 0x7a, 0x08, 0x06, 0x09, 0x0a, 0x09, 0x8c, 0x09, 0x90, 0x09, + 0x09, 0x0a, 0x0a, 0x0a, 0x77, 0x0a, 0x7a, 0x0a, 0xdc, 0x0a, 0xde, 0x0a, + 0x31, 0x0b, 0x35, 0x0b, 0x7a, 0x0b, 0x7f, 0x0b, 0xbb, 0x0b, 0xbb, 0x0b, + 0xe4, 0x0b, 0xea, 0x0b, 0x08, 0x0c, 0x09, 0x0c, 0x17, 0x0c, 0x1c, 0x0c, + 0x1a, 0x0c, 0x1b, 0x0c, 0x10, 0x0c, 0x13, 0x0c, 0xf2, 0x0b, 0xf5, 0x0b, + 0xca, 0x0b, 0xcb, 0x0b, 0x90, 0x0b, 0x95, 0x0b, 0x47, 0x0b, 0x48, 0x0b, + 0xf0, 0x0a, 0xf4, 0x0a, 0x8d, 0x0a, 0x8f, 0x0a, 0x1a, 0x0a, 0x1c, 0x0a, + 0x9b, 0x09, 0xa1, 0x09, 0x14, 0x09, 0x16, 0x09, 0x7e, 0x08, 0x82, 0x08, + 0xe2, 0x07, 0xe4, 0x07, 0x3a, 0x07, 0x3d, 0x07, 0x8c, 0x06, 0x8e, 0x06, + 0xd5, 0x05, 0xd8, 0x05, 0x16, 0x05, 0x1a, 0x05, 0x56, 0x04, 0x59, 0x04, + 0x8d, 0x03, 0x90, 0x03, 0xc4, 0x02, 0xc7, 0x02, 0xf6, 0x01, 0xfa, 0x01, + 0x2a, 0x01, 0x2c, 0x01, 0x5a, 0x00, 0x5f, 0x00, 0x8e, 0xff, 0x92, 0xff, + 0xc1, 0xfe, 0xc5, 0xfe, 0xf9, 0xfd, 0xfc, 0xfd, 0x32, 0xfd, 0x34, 0xfd, + 0x6a, 0xfc, 0x6f, 0xfc, 0xb0, 0xfb, 0xb3, 0xfb, 0xf3, 0xfa, 0xf6, 0xfa, + 0x41, 0xfa, 0x44, 0xfa, 0x93, 0xf9, 0x96, 0xf9, 0xec, 0xf8, 0xef, 0xf8, + 0x53, 0xf8, 0x56, 0xf8, 0xb9, 0xf7, 0xbf, 0xf7, 0x32, 0xf7, 0x34, 0xf7, + 0xae, 0xf6, 0xb4, 0xf6, 0x39, 0xf6, 0x3c, 0xf6, 0xcf, 0xf5, 0xd3, 0xf5, + 0x6e, 0xf5, 0x74, 0xf5, 0x20, 0xf5, 0x21, 0xf5, 0xd6, 0xf4, 0xdb, 0xf4, + 0xa2, 0xf4, 0xa5, 0xf4, 0x75, 0xf4, 0x77, 0xf4, 0x5a, 0xf4, 0x5f, 0xf4, + 0x4b, 0xf4, 0x4d, 0xf4, 0x4a, 0xf4, 0x51, 0xf4, 0x5d, 0xf4, 0x5e, 0xf4, + 0x78, 0xf4, 0x7c, 0xf4, 0xa7, 0xf4, 0xa9, 0xf4, 0xe2, 0xf4, 0xe7, 0xf4, + 0x2c, 0xf5, 0x2f, 0xf5, 0x88, 0xf5, 0x8b, 0xf5, 0xec, 0xf5, 0xef, 0xf5, + 0x61, 0xf6, 0x64, 0xf6, 0xe1, 0xf6, 0xe5, 0xf6, 0x6e, 0xf7, 0x70, 0xf7, + 0x06, 0xf8, 0x09, 0xf8, 0xa4, 0xf8, 0xa9, 0xf8, 0x50, 0xf9, 0x53, 0xf9, + 0x01, 0xfa, 0x04, 0xfa, 0xb9, 0xfa, 0xbe, 0xfa, 0x7b, 0xfb, 0x7c, 0xfb, + 0x3b, 0xfc, 0x42, 0xfc, 0x08, 0xfd, 0x09, 0xfd, 0xd0, 0xfd, 0xd5, 0xfd, + 0xa2, 0xfe, 0xa4, 0xfe, 0x71, 0xff, 0x73, 0xff, 0x41, 0x00, 0x45, 0x00, + 0x10, 0x01, 0x15, 0x01, 0xe2, 0x01, 0xe4, 0x01, 0xaa, 0x02, 0xae, 0x02, + 0x77, 0x03, 0x79, 0x03, 0x3a, 0x04, 0x3f, 0x04, 0xfa, 0x04, 0xfe, 0x04, + 0xb7, 0x05, 0xba, 0x05, 0x6d, 0x06, 0x6f, 0x06, 0x18, 0x07, 0x1c, 0x07, + 0xc1, 0x07, 0xc4, 0x07, 0x5c, 0x08, 0x5f, 0x08, 0xf3, 0x08, 0xf7, 0x08, + 0x7c, 0x09, 0x7d, 0x09, 0xfb, 0x09, 0x00, 0x0a, 0x6e, 0x0a, 0x73, 0x0a, + 0xda, 0x0a, 0xdc, 0x0a, 0x34, 0x0b, 0x3a, 0x0b, 0x88, 0x0b, 0x8a, 0x0b, + 0xc6, 0x0b, 0xcd, 0x0b, 0xfd, 0x0b, 0x02, 0x0c, 0x23, 0x0c, 0x27, 0x0c, + 0x3c, 0x0c, 0x41, 0x0c, 0x45, 0x0c, 0x49, 0x0c, 0x40, 0x0c, 0x43, 0x0c, + 0x2b, 0x0c, 0x2f, 0x0c, 0x07, 0x0c, 0x0a, 0x0c, 0xd5, 0x0b, 0xd8, 0x0b, + 0x92, 0x0b, 0x95, 0x0b, 0x43, 0x0b, 0x45, 0x0b, 0xe2, 0x0a, 0xe6, 0x0a, + 0x76, 0x0a, 0x7a, 0x0a, 0xfd, 0x09, 0x00, 0x0a, 0x7a, 0x09, 0x7d, 0x09, + 0xe9, 0x08, 0xea, 0x08, 0x4c, 0x08, 0x50, 0x08, 0xab, 0x07, 0xac, 0x07, + 0xfc, 0x06, 0x00, 0x07, 0x4c, 0x06, 0x4f, 0x06, 0x8d, 0x05, 0x90, 0x05, + 0xcd, 0x04, 0xd0, 0x04, 0x08, 0x04, 0x0b, 0x04, 0x3c, 0x03, 0x3d, 0x03, + 0x71, 0x02, 0x75, 0x02, 0xa0, 0x01, 0xa2, 0x01, 0xd2, 0x00, 0xd6, 0x00, + 0xff, 0xff, 0x03, 0x00, 0x32, 0xff, 0x34, 0xff, 0x64, 0xfe, 0x67, 0xfe, + 0x98, 0xfd, 0x9b, 0xfd, 0xd0, 0xfc, 0xd3, 0xfc, 0x0b, 0xfc, 0x0d, 0xfc, + 0x4b, 0xfb, 0x4e, 0xfb, 0x93, 0xfa, 0x95, 0xfa, 0xde, 0xf9, 0xe2, 0xf9, + 0x31, 0xf9, 0x35, 0xf9, 0x8e, 0xf8, 0x90, 0xf8, 0xf0, 0xf7, 0xf4, 0xf7, + 0x5e, 0xf7, 0x62, 0xf7, 0xd6, 0xf6, 0xd9, 0xf6, 0x55, 0xf6, 0x58, 0xf6, + 0xe4, 0xf5, 0xe7, 0xf5, 0x7a, 0xf5, 0x7b, 0xf5, 0x1f, 0xf5, 0x25, 0xf5, + 0xd3, 0xf4, 0xd2, 0xf4, 0x8f, 0xf4, 0x93, 0xf4, 0x5f, 0xf4, 0x5f, 0xf4, + 0x31, 0xf4, 0x36, 0xf4, 0x1f, 0xf4, 0x24, 0xf4, 0x13, 0xf4, 0x14, 0xf4, + 0x1a, 0xf4, 0x1d, 0xf4, 0x2f, 0xf4, 0x31, 0xf4, 0x53, 0xf4, 0x57, 0xf4, + 0x88, 0xf4, 0x8b, 0xf4, 0xc8, 0xf4, 0xca, 0xf4, 0x19, 0xf5, 0x1c, 0xf5, + 0x7a, 0xf5, 0x7c, 0xf5, 0xe4, 0xf5, 0xe7, 0xf5, 0x60, 0xf6, 0x62, 0xf6, + 0xe1, 0xf6, 0xe4, 0xf6, 0x74, 0xf7, 0x77, 0xf7, 0x0f, 0xf8, 0x12, 0xf8, + 0xb4, 0xf8, 0xb6, 0xf8, 0x61, 0xf9, 0x64, 0xf9, 0x15, 0xfa, 0x18, 0xfa, + 0xd2, 0xfa, 0xd3, 0xfa, 0x93, 0xfb, 0x98, 0xfb, 0x59, 0xfc, 0x59, 0xfc, + 0x21, 0xfd, 0x26, 0xfd, 0xec, 0xfd, 0xf0, 0xfd, 0xba, 0xfe, 0xbd, 0xfe, + 0x8b, 0xff, 0x8e, 0xff, 0x5a, 0x00, 0x5d, 0x00, 0x28, 0x01, 0x2c, 0x01, + 0xf3, 0x01, 0xf5, 0x01, 0xbe, 0x02, 0xc3, 0x02, 0x84, 0x03, 0x86, 0x03, + 0x46, 0x04, 0x4a, 0x04, 0x04, 0x05, 0x06, 0x05, 0xb8, 0x05, 0xbc, 0x05, + 0x6b, 0x06, 0x6d, 0x06, 0x11, 0x07, 0x16, 0x07, 0xb4, 0x07, 0xb6, 0x07, + 0x4c, 0x08, 0x4f, 0x08, 0xda, 0x08, 0xdf, 0x08, 0x60, 0x09, 0x60, 0x09, + 0xd9, 0x09, 0xdd, 0x09, 0x49, 0x0a, 0x4b, 0x0a, 0xab, 0x0a, 0xaf, 0x0a, + 0x01, 0x0b, 0x05, 0x0b, 0x4b, 0x0b, 0x4e, 0x0b, 0x88, 0x0b, 0x8b, 0x0b, + 0xb4, 0x0b, 0xb8, 0x0b, 0xd7, 0x0b, 0xd9, 0x0b, 0xe8, 0x0b, 0xea, 0x0b, + 0xe9, 0x0b, 0xed, 0x0b, 0xde, 0x0b, 0xe2, 0x0b, 0xc5, 0x0b, 0xc8, 0x0b, + 0x9b, 0x0b, 0x9e, 0x0b, 0x64, 0x0b, 0x67, 0x0b, 0x1b, 0x0b, 0x1f, 0x0b, + 0xc5, 0x0a, 0xc7, 0x0a, 0x60, 0x0a, 0x64, 0x0a, 0xef, 0x09, 0xf1, 0x09, + 0x71, 0x09, 0x75, 0x09, 0xe8, 0x08, 0xea, 0x08, 0x53, 0x08, 0x53, 0x08, + 0xb4, 0x07, 0xb7, 0x07, 0x0c, 0x07, 0x0e, 0x07, 0x5a, 0x06, 0x5e, 0x06, + 0xa5, 0x05, 0xa7, 0x05, 0xe2, 0x04, 0xe6, 0x04, 0x21, 0x04, 0x23, 0x04, + 0x56, 0x03, 0x59, 0x03, 0x89, 0x02, 0x8c, 0x02, 0xbb, 0x01, 0xbc, 0x01, + 0xe6, 0x00, 0xeb, 0x00, 0x18, 0x00, 0x19, 0x00, 0x45, 0xff, 0x49, 0xff, + 0x73, 0xfe, 0x77, 0xfe, 0xa6, 0xfd, 0xa9, 0xfd, 0xd8, 0xfc, 0xdb, 0xfc, + 0x11, 0xfc, 0x15, 0xfc, 0x4e, 0xfb, 0x52, 0xfb, 0x8d, 0xfa, 0x90, 0xfa, + 0xd6, 0xf9, 0xd8, 0xf9, 0x23, 0xf9, 0x26, 0xf9, 0x78, 0xf8, 0x7c, 0xf8, + 0xd8, 0xf7, 0xd8, 0xf7, 0x3e, 0xf7, 0x41, 0xf7, 0xae, 0xf6, 0xb1, 0xf6, + 0x29, 0xf6, 0x2c, 0xf6, 0xaf, 0xf5, 0xb2, 0xf5, 0x42, 0xf5, 0x43, 0xf5, + 0xdd, 0xf4, 0xe2, 0xf4, 0x8a, 0xf4, 0x8c, 0xf4, 0x40, 0xf4, 0x43, 0xf4, + 0x07, 0xf4, 0x09, 0xf4, 0xd6, 0xf3, 0xdb, 0xf3, 0xbc, 0xf3, 0xbd, 0xf3, + 0xaa, 0xf3, 0xae, 0xf3, 0xab, 0xf3, 0xad, 0xf3, 0xb9, 0xf3, 0xbc, 0xf3, + 0xd7, 0xf3, 0xda, 0xf3, 0x07, 0xf4, 0x0a, 0xf4, 0x43, 0xf4, 0x47, 0xf4, + 0x8f, 0xf4, 0x91, 0xf4, 0xea, 0xf4, 0xed, 0xf4, 0x50, 0xf5, 0x52, 0xf5, + 0xc4, 0xf5, 0xc8, 0xf5, 0x44, 0xf6, 0x47, 0xf6, 0xd0, 0xf6, 0xd0, 0xf6, + 0x6a, 0xf7, 0x6e, 0xf7, 0x09, 0xf8, 0x0a, 0xf8, 0xb4, 0xf8, 0xb7, 0xf8, + 0x66, 0xf9, 0x68, 0xf9, 0x1f, 0xfa, 0x21, 0xfa, 0xdf, 0xfa, 0xe3, 0xfa, + 0xa5, 0xfb, 0xa5, 0xfb, 0x6b, 0xfc, 0x6f, 0xfc, 0x38, 0xfd, 0x3a, 0xfd, + 0x05, 0xfe, 0x08, 0xfe, 0xd6, 0xfe, 0xd9, 0xfe, 0xa6, 0xff, 0xa9, 0xff, + 0x77, 0x00, 0x7b, 0x00, 0x45, 0x01, 0x47, 0x01, 0x10, 0x02, 0x12, 0x02, + 0xdb, 0x02, 0xde, 0x02, 0x9e, 0x03, 0xa0, 0x03, 0x60, 0x04, 0x62, 0x04, + 0x1a, 0x05, 0x1d, 0x05, 0xd1, 0x05, 0xd2, 0x05, 0x7e, 0x06, 0x81, 0x06, + 0x25, 0x07, 0x26, 0x07, 0xc3, 0x07, 0xc6, 0x07, 0x5a, 0x08, 0x5b, 0x08, + 0xe4, 0x08, 0xe6, 0x08, 0x66, 0x09, 0x69, 0x09, 0xdd, 0x09, 0xde, 0x09, + 0x47, 0x0a, 0x4b, 0x0a, 0xa6, 0x0a, 0xa8, 0x0a, 0xf9, 0x0a, 0xfc, 0x0a, + 0x3d, 0x0b, 0x3f, 0x0b, 0x77, 0x0b, 0x7a, 0x0b, 0xa0, 0x0b, 0xa3, 0x0b, + 0xba, 0x0b, 0xbe, 0x0b, 0xca, 0x0b, 0xcc, 0x0b, 0xc6, 0x0b, 0xc9, 0x0b, + 0xb8, 0x0b, 0xbc, 0x0b, 0x98, 0x0b, 0x9a, 0x0b, 0x69, 0x0b, 0x6b, 0x0b, + 0x2d, 0x0b, 0x30, 0x0b, 0xde, 0x0a, 0xe1, 0x0a, 0x85, 0x0a, 0x87, 0x0a, + 0x1a, 0x0a, 0x1f, 0x0a, 0xa8, 0x09, 0xa9, 0x09, 0x22, 0x09, 0x26, 0x09, + 0x98, 0x08, 0x9b, 0x08, 0xfd, 0x07, 0xff, 0x07, 0x5d, 0x07, 0x5f, 0x07, + 0xaf, 0x06, 0xb3, 0x06, 0xfe, 0x05, 0x01, 0x06, 0x43, 0x05, 0x46, 0x05, + 0x83, 0x04, 0x86, 0x04, 0xbc, 0x03, 0xbf, 0x03, 0xf3, 0x02, 0xf6, 0x02, + 0x23, 0x02, 0x27, 0x02, 0x54, 0x01, 0x58, 0x01, 0x85, 0x00, 0x88, 0x00, + 0xb0, 0xff, 0xb5, 0xff, 0xe4, 0xfe, 0xe6, 0xfe, 0x14, 0xfe, 0x19, 0xfe, + 0x49, 0xfd, 0x4a, 0xfd, 0x7f, 0xfc, 0x83, 0xfc, 0xb7, 0xfb, 0xba, 0xfb, + 0xfb, 0xfa, 0xfd, 0xfa, 0x3c, 0xfa, 0x40, 0xfa, 0x89, 0xf9, 0x8d, 0xf9, + 0xdd, 0xf8, 0xe0, 0xf8, 0x38, 0xf8, 0x3b, 0xf8, 0x9c, 0xf7, 0xa0, 0xf7, + 0x08, 0xf7, 0x0b, 0xf7, 0x81, 0xf6, 0x84, 0xf6, 0x00, 0xf6, 0x03, 0xf6, + 0x8f, 0xf5, 0x92, 0xf5, 0x27, 0xf5, 0x2a, 0xf5, 0xcc, 0xf4, 0xce, 0xf4, + 0x7f, 0xf4, 0x81, 0xf4, 0x3d, 0xf4, 0x3e, 0xf4, 0x0d, 0xf4, 0x11, 0xf4, + 0xe6, 0xf3, 0xe6, 0xf3, 0xd1, 0xf3, 0xd3, 0xf3, 0xc9, 0xf3, 0xcb, 0xf3, + 0xcf, 0xf3, 0xd1, 0xf3, 0xe9, 0xf3, 0xec, 0xf3, 0x0d, 0xf4, 0x0f, 0xf4, + 0x46, 0xf4, 0x47, 0xf4, 0x88, 0xf4, 0x8b, 0xf4, 0xdc, 0xf4, 0xde, 0xf4, + 0x3e, 0xf5, 0x41, 0xf5, 0xab, 0xf5, 0xad, 0xf5, 0x27, 0xf6, 0x28, 0xf6, + 0xad, 0xf6, 0xb0, 0xf6, 0x3f, 0xf7, 0x42, 0xf7, 0xdf, 0xf7, 0xe0, 0xf7, + 0x82, 0xf8, 0x85, 0xf8, 0x36, 0xf9, 0x38, 0xf9, 0xeb, 0xf9, 0xec, 0xf9, + 0xab, 0xfa, 0xac, 0xfa, 0x6c, 0xfb, 0x6e, 0xfb, 0x35, 0xfc, 0x37, 0xfc, + 0x02, 0xfd, 0x04, 0xfd, 0xcf, 0xfd, 0xd1, 0xfd, 0xa3, 0xfe, 0xa5, 0xfe, + 0x74, 0xff, 0x77, 0xff, 0x46, 0x00, 0x49, 0x00, 0x1a, 0x01, 0x1d, 0x01, + 0xe7, 0x01, 0xe8, 0x01, 0xb6, 0x02, 0xb9, 0x02, 0x81, 0x03, 0x82, 0x03, + 0x45, 0x04, 0x48, 0x04, 0x08, 0x05, 0x0b, 0x05, 0xbf, 0x05, 0xc2, 0x05, + 0x77, 0x06, 0x79, 0x06, 0x23, 0x07, 0x26, 0x07, 0xca, 0x07, 0xcc, 0x07, + 0x65, 0x08, 0x69, 0x08, 0xf8, 0x08, 0xfb, 0x08, 0x80, 0x09, 0x83, 0x09, + 0xff, 0x09, 0x02, 0x0a, 0x71, 0x0a, 0x74, 0x0a, 0xdb, 0x0a, 0xdc, 0x0a, + 0x33, 0x0b, 0x35, 0x0b, 0x83, 0x0b, 0x84, 0x0b, 0xc1, 0x0b, 0xc3, 0x0b, + 0xf5, 0x0b, 0xf7, 0x0b, 0x16, 0x0c, 0x18, 0x0c, 0x2c, 0x0c, 0x30, 0x0c, + 0x32, 0x0c, 0x31, 0x0c, 0x28, 0x0c, 0x2e, 0x0c, 0x11, 0x0c, 0x11, 0x0c, + 0xe9, 0x0b, 0xec, 0x0b, 0xb4, 0x0b, 0xb6, 0x0b, 0x6c, 0x0b, 0x6f, 0x0b, + 0x19, 0x0b, 0x1a, 0x0b, 0xb4, 0x0a, 0xb8, 0x0a, 0x46, 0x0a, 0x47, 0x0a, + 0xc8, 0x09, 0xcb, 0x09, 0x3e, 0x09, 0x42, 0x09, 0xae, 0x08, 0xaf, 0x08, + 0x0c, 0x08, 0x10, 0x08, 0x68, 0x07, 0x6b, 0x07, 0xbb, 0x06, 0xbc, 0x06, + 0x00, 0x06, 0x02, 0x06, 0x45, 0x05, 0x47, 0x05, 0x81, 0x04, 0x83, 0x04, + 0xba, 0x03, 0xbb, 0x03, 0xed, 0x02, 0xef, 0x02, 0x1f, 0x02, 0x22, 0x02, + 0x4f, 0x01, 0x51, 0x01, 0x7f, 0x00, 0x81, 0x00, 0xb0, 0xff, 0xb3, 0xff, + 0xe1, 0xfe, 0xe3, 0xfe, 0x15, 0xfe, 0x17, 0xfe, 0x4a, 0xfd, 0x4c, 0xfd, + 0x84, 0xfc, 0x84, 0xfc, 0xc2, 0xfb, 0xc4, 0xfb, 0x05, 0xfb, 0x06, 0xfb, + 0x4f, 0xfa, 0x51, 0xfa, 0x9d, 0xf9, 0x9f, 0xf9, 0xf5, 0xf8, 0xf8, 0xf8, + 0x55, 0xf8, 0x58, 0xf8, 0xbc, 0xf7, 0xbe, 0xf7, 0x2f, 0xf7, 0x32, 0xf7, + 0xac, 0xf6, 0xae, 0xf6, 0x31, 0xf6, 0x33, 0xf6, 0xc4, 0xf5, 0xc8, 0xf5, + 0x62, 0xf5, 0x63, 0xf5, 0x0e, 0xf5, 0x11, 0xf5, 0xc4, 0xf4, 0xc6, 0xf4, + 0x8a, 0xf4, 0x8d, 0xf4, 0x5d, 0xf4, 0x5e, 0xf4, 0x3d, 0xf4, 0x3f, 0xf4, + 0x2d, 0xf4, 0x2e, 0xf4, 0x2a, 0xf4, 0x2e, 0xf4, 0x39, 0xf4, 0x3a, 0xf4, + 0x54, 0xf4, 0x57, 0xf4, 0x80, 0xf4, 0x82, 0xf4, 0xb9, 0xf4, 0xbc, 0xf4, + 0x04, 0xf5, 0x05, 0xf5, 0x5a, 0xf5, 0x5d, 0xf5, 0xc0, 0xf5, 0xc1, 0xf5, + 0x32, 0xf6, 0x36, 0xf6, 0xb3, 0xf6, 0xb4, 0xf6, 0x3e, 0xf7, 0x3f, 0xf7, + 0xd6, 0xf7, 0xd8, 0xf7, 0x74, 0xf8, 0x75, 0xf8, 0x20, 0xf9, 0x22, 0xf9, + 0xd1, 0xf9, 0xd5, 0xf9, 0x8c, 0xfa, 0x8c, 0xfa, 0x4c, 0xfb, 0x50, 0xfb, + 0x11, 0xfc, 0x12, 0xfc, 0xdb, 0xfc, 0xe0, 0xfc, 0xa8, 0xfd, 0xaa, 0xfd, + 0x79, 0xfe, 0x7b, 0xfe, 0x4a, 0xff, 0x4d, 0xff, 0x1d, 0x00, 0x20, 0x00, + 0xf1, 0x00, 0xf1, 0x00, 0xbe, 0x01, 0xc1, 0x01, 0x92, 0x02, 0x93, 0x02, + 0x5c, 0x03, 0x5c, 0x03, 0x23, 0x04, 0x26, 0x04, 0xe9, 0x04, 0xe9, 0x04, + 0xa4, 0x05, 0xa6, 0x05, 0x5f, 0x06, 0x5e, 0x06, 0x0c, 0x07, 0x10, 0x07, + 0xb7, 0x07, 0xb8, 0x07, 0x58, 0x08, 0x59, 0x08, 0xee, 0x08, 0xf0, 0x08, + 0x7e, 0x09, 0x7d, 0x09, 0xfe, 0x09, 0x01, 0x0a, 0x79, 0x0a, 0x79, 0x0a, + 0xe3, 0x0a, 0xe4, 0x0a, 0x43, 0x0b, 0x43, 0x0b, 0x96, 0x0b, 0x99, 0x0b, + 0xd9, 0x0b, 0xda, 0x0b, 0x13, 0x0c, 0x14, 0x0c, 0x3b, 0x0c, 0x3e, 0x0c, + 0x57, 0x0c, 0x58, 0x0c, 0x63, 0x0c, 0x65, 0x0c, 0x5e, 0x0c, 0x60, 0x0c, + 0x4e, 0x0c, 0x4f, 0x0c, 0x2a, 0x0c, 0x2d, 0x0c, 0xfb, 0x0b, 0xfb, 0x0b, + 0xbc, 0x0b, 0xbd, 0x0b, 0x69, 0x0b, 0x6b, 0x0b, 0x0e, 0x0b, 0x10, 0x0b, + 0xa3, 0x0a, 0xa4, 0x0a, 0x2b, 0x0a, 0x2d, 0x0a, 0xa7, 0x09, 0xa9, 0x09, + 0x16, 0x09, 0x17, 0x09, 0x7f, 0x08, 0x7f, 0x08, 0xd9, 0x07, 0xdc, 0x07, + 0x2f, 0x07, 0x2e, 0x07, 0x7a, 0x06, 0x7d, 0x06, 0xbd, 0x05, 0xbd, 0x05, + 0xfe, 0x04, 0xfe, 0x04, 0x33, 0x04, 0x36, 0x04, 0x6b, 0x03, 0x6b, 0x03, + 0x9c, 0x02, 0x9d, 0x02, 0xcb, 0x01, 0xcc, 0x01, 0xfe, 0x00, 0xfc, 0x00, + 0x25, 0x00, 0x29, 0x00, 0x5a, 0xff, 0x58, 0xff, 0x86, 0xfe, 0x87, 0xfe, + 0xbb, 0xfd, 0xbc, 0xfd, 0xf2, 0xfc, 0xf3, 0xfc, 0x29, 0xfc, 0x2a, 0xfc, + 0x6a, 0xfb, 0x6a, 0xfb, 0xae, 0xfa, 0xae, 0xfa, 0xf6, 0xf9, 0xf8, 0xf9, + 0x4b, 0xf9, 0x4a, 0xf9, 0x9f, 0xf8, 0xa1, 0xf8, 0x04, 0xf8, 0x06, 0xf8, + 0x6e, 0xf7, 0x6e, 0xf7, 0xe1, 0xf6, 0xe4, 0xf6, 0x64, 0xf6, 0x63, 0xf6, + 0xe9, 0xf5, 0xec, 0xf5, 0x83, 0xf5, 0x83, 0xf5, 0x23, 0xf5, 0x25, 0xf5, + 0xd3, 0xf4, 0xd3, 0xf4, 0x8e, 0xf4, 0x8f, 0xf4, 0x58, 0xf4, 0x5a, 0xf4, + 0x30, 0xf4, 0x32, 0xf4, 0x15, 0xf4, 0x16, 0xf4, 0x0b, 0xf4, 0x0c, 0xf4, + 0x10, 0xf4, 0x12, 0xf4, 0x23, 0xf4, 0x21, 0xf4, 0x45, 0xf4, 0x47, 0xf4, + 0x75, 0xf4, 0x76, 0xf4, 0xb7, 0xf4, 0xb9, 0xf4, 0x05, 0xf5, 0x05, 0xf5, + 0x64, 0xf5, 0x65, 0xf5, 0xcd, 0xf5, 0xcf, 0xf5, 0x46, 0xf6, 0x46, 0xf6, + 0xc9, 0xf6, 0xcb, 0xf6, 0x59, 0xf7, 0x5a, 0xf7, 0xf6, 0xf7, 0xf6, 0xf7, + 0x97, 0xf8, 0x9a, 0xf8, 0x46, 0xf9, 0x46, 0xf9, 0xf9, 0xf9, 0xfc, 0xf9, + 0xb7, 0xfa, 0xb7, 0xfa, 0x79, 0xfb, 0x79, 0xfb, 0x3d, 0xfc, 0x3f, 0xfc, + 0x09, 0xfd, 0x0c, 0xfd, 0xd8, 0xfd, 0xd6, 0xfd, 0xa5, 0xfe, 0xa9, 0xfe, + 0x77, 0xff, 0x75, 0xff, 0x45, 0x00, 0x48, 0x00, 0x15, 0x01, 0x14, 0x01, + 0xe4, 0x01, 0xe5, 0x01, 0xb1, 0x02, 0xb2, 0x02, 0x78, 0x03, 0x79, 0x03, + 0x3b, 0x04, 0x3e, 0x04, 0xfb, 0x04, 0xfc, 0x04, 0xb3, 0x05, 0xb5, 0x05, + 0x66, 0x06, 0x69, 0x06, 0x13, 0x07, 0x12, 0x07, 0xb3, 0x07, 0xb6, 0x07, + 0x4f, 0x08, 0x50, 0x08, 0xe0, 0x08, 0xe1, 0x08, 0x67, 0x09, 0x68, 0x09, + 0xe4, 0x09, 0xe4, 0x09, 0x51, 0x0a, 0x53, 0x0a, 0xba, 0x0a, 0xba, 0x0a, + 0x11, 0x0b, 0x15, 0x0b, 0x5d, 0x0b, 0x5c, 0x0b, 0x9b, 0x0b, 0x9e, 0x0b, + 0xcb, 0x0b, 0xcc, 0x0b, 0xed, 0x0b, 0xee, 0x0b, 0x01, 0x0c, 0x03, 0x0c, + 0x05, 0x0c, 0x07, 0x0c, 0xfd, 0x0b, 0xfd, 0x0b, 0xe1, 0x0b, 0xe5, 0x0b, + 0xbb, 0x0b, 0xbc, 0x0b, 0x83, 0x0b, 0x85, 0x0b, 0x3e, 0x0b, 0x41, 0x0b, + 0xea, 0x0a, 0xe9, 0x0a, 0x87, 0x0a, 0x89, 0x0a, 0x15, 0x0a, 0x16, 0x0a, + 0x9a, 0x09, 0x9b, 0x09, 0x11, 0x09, 0x11, 0x09, 0x7b, 0x08, 0x7d, 0x08, + 0xde, 0x07, 0xdf, 0x07, 0x35, 0x07, 0x37, 0x07, 0x8a, 0x06, 0x87, 0x06, + 0xcc, 0x05, 0xd0, 0x05, 0x10, 0x05, 0x10, 0x05, 0x4a, 0x04, 0x4b, 0x04, + 0x80, 0x03, 0x82, 0x03, 0xb7, 0x02, 0xb5, 0x02, 0xe0, 0x01, 0xe4, 0x01, + 0x13, 0x01, 0x13, 0x01, 0x3f, 0x00, 0x3f, 0x00, 0x6a, 0xff, 0x6c, 0xff, + 0x9e, 0xfe, 0x9e, 0xfe, 0xc7, 0xfd, 0xc9, 0xfd, 0xff, 0xfc, 0xff, 0xfc, + 0x32, 0xfc, 0x33, 0xfc, 0x6d, 0xfb, 0x6f, 0xfb, 0xb0, 0xfa, 0xb1, 0xfa, + 0xf1, 0xf9, 0xf0, 0xf9, 0x42, 0xf9, 0x43, 0xf9, 0x91, 0xf8, 0x95, 0xf8, + 0xf3, 0xf7, 0xf1, 0xf7, 0x54, 0xf7, 0x59, 0xf7, 0xc2, 0xf6, 0xc1, 0xf6, + 0x3d, 0xf6, 0x40, 0xf6, 0xbf, 0xf5, 0xc1, 0xf5, 0x51, 0xf5, 0x51, 0xf5, + 0xec, 0xf4, 0xed, 0xf4, 0x93, 0xf4, 0x95, 0xf4, 0x4b, 0xf4, 0x4a, 0xf4, + 0x0c, 0xf4, 0x0e, 0xf4, 0xdf, 0xf3, 0xde, 0xf3, 0xbd, 0xf3, 0xbe, 0xf3, + 0xaa, 0xf3, 0xab, 0xf3, 0xa9, 0xf3, 0xa9, 0xf3, 0xb4, 0xf3, 0xb5, 0xf3, + 0xd2, 0xf3, 0xd3, 0xf3, 0xfe, 0xf3, 0xfe, 0xf3, 0x38, 0xf4, 0x3b, 0xf4, + 0x81, 0xf4, 0x82, 0xf4, 0xd9, 0xf4, 0xdb, 0xf4, 0x3e, 0xf5, 0x40, 0xf5, + 0xb2, 0xf5, 0xb3, 0xf5, 0x32, 0xf6, 0x33, 0xf6, 0xbb, 0xf6, 0xbb, 0xf6, + 0x50, 0xf7, 0x51, 0xf7, 0xf1, 0xf7, 0xf3, 0xf7, 0x99, 0xf8, 0x99, 0xf8, + 0x4c, 0xf9, 0x4d, 0xf9, 0x05, 0xfa, 0x04, 0xfa, 0xc3, 0xfa, 0xc4, 0xfa, + 0x88, 0xfb, 0x88, 0xfb, 0x51, 0xfc, 0x51, 0xfc, 0x1b, 0xfd, 0x1d, 0xfd, + 0xec, 0xfd, 0xeb, 0xfd, 0xb8, 0xfe, 0xba, 0xfe, 0x8b, 0xff, 0x8b, 0xff, + 0x5a, 0x00, 0x5c, 0x00, 0x2a, 0x01, 0x2b, 0x01, 0xf7, 0x01, 0xf8, 0x01, + 0xc0, 0x02, 0xc0, 0x02, 0x86, 0x03, 0x88, 0x03, 0x48, 0x04, 0x49, 0x04, + 0x03, 0x05, 0x06, 0x05, 0xbb, 0x05, 0xba, 0x05, 0x69, 0x06, 0x6b, 0x06, + 0x12, 0x07, 0x12, 0x07, 0xb1, 0x07, 0xb2, 0x07, 0x48, 0x08, 0x49, 0x08, + 0xd6, 0x08, 0xd7, 0x08, 0x58, 0x09, 0x5a, 0x09, 0xd1, 0x09, 0xd2, 0x09, + 0x3c, 0x0a, 0x3d, 0x0a, 0x9f, 0x0a, 0xa0, 0x0a, 0xf1, 0x0a, 0xf2, 0x0a, + 0x39, 0x0b, 0x3b, 0x0b, 0x72, 0x0b, 0x73, 0x0b, 0x9f, 0x0b, 0xa0, 0x0b, + 0xbc, 0x0b, 0xbc, 0x0b, 0xca, 0x0b, 0xcc, 0x0b, 0xcc, 0x0b, 0xcb, 0x0b, + 0xbd, 0x0b, 0xbd, 0x0b, 0xa0, 0x0b, 0xa1, 0x0b, 0x72, 0x0b, 0x72, 0x0b, + 0x37, 0x0b, 0x38, 0x0b, 0xee, 0x0a, 0xed, 0x0a, 0x93, 0x0a, 0x95, 0x0a, + 0x30, 0x0a, 0x2f, 0x0a, 0xb7, 0x09, 0xba, 0x09, 0x3a, 0x09, 0x39, 0x09, + 0xac, 0x08, 0xad, 0x08, 0x16, 0x08, 0x15, 0x08, 0x76, 0x07, 0x75, 0x07, + 0xc8, 0x06, 0xca, 0x06, 0x18, 0x06, 0x19, 0x06, 0x5e, 0x05, 0x5d, 0x05, + 0x9f, 0x04, 0xa1, 0x04, 0xda, 0x03, 0xda, 0x03, 0x0f, 0x03, 0x10, 0x03, + 0x43, 0x02, 0x43, 0x02, 0x73, 0x01, 0x75, 0x01, 0xa2, 0x00, 0xa2, 0x00, + 0xd3, 0xff, 0xd3, 0xff, 0x01, 0xff, 0x00, 0xff, 0x30, 0xfe, 0x32, 0xfe, + 0x65, 0xfd, 0x63, 0xfd, 0x98, 0xfc, 0x9a, 0xfc, 0xd4, 0xfb, 0xd4, 0xfb, + 0x13, 0xfb, 0x12, 0xfb, 0x56, 0xfa, 0x57, 0xfa, 0xa1, 0xf9, 0xa1, 0xf9, + 0xf1, 0xf8, 0xf2, 0xf8, 0x4e, 0xf8, 0x4d, 0xf8, 0xac, 0xf7, 0xac, 0xf7, + 0x1c, 0xf7, 0x19, 0xf7, 0x8d, 0xf6, 0x8f, 0xf6, 0x0d, 0xf6, 0x0c, 0xf6, + 0x9b, 0xf5, 0x9c, 0xf5, 0x2e, 0xf5, 0x2d, 0xf5, 0xd3, 0xf4, 0xd5, 0xf4, + 0x85, 0xf4, 0x84, 0xf4, 0x3e, 0xf4, 0x41, 0xf4, 0x0f, 0xf4, 0x0d, 0xf4, + 0xe5, 0xf3, 0xe6, 0xf3, 0xce, 0xf3, 0xce, 0xf3, 0xc5, 0xf3, 0xc5, 0xf3, + 0xc8, 0xf3, 0xc8, 0xf3, 0xdf, 0xf3, 0xe0, 0xf3, 0x02, 0xf4, 0x01, 0xf4, + 0x35, 0xf4, 0x37, 0xf4, 0x78, 0xf4, 0x78, 0xf4, 0xca, 0xf4, 0xc9, 0xf4, + 0x27, 0xf5, 0x29, 0xf5, 0x95, 0xf5, 0x95, 0xf5, 0x0e, 0xf6, 0x0e, 0xf6, + 0x91, 0xf6, 0x91, 0xf6, 0x23, 0xf7, 0x24, 0xf7, 0xbc, 0xf7, 0xbe, 0xf7, + 0x62, 0xf8, 0x65, 0xf8, 0x12, 0xf9, 0x12, 0xf9, 0xc7, 0xf9, 0xc7, 0xf9, + 0x84, 0xfa, 0x86, 0xfa, 0x44, 0xfb, 0x47, 0xfb, 0x0f, 0xfc, 0x0f, 0xfc, + 0xd9, 0xfc, 0xda, 0xfc, 0xa8, 0xfd, 0xa9, 0xfd, 0x77, 0xfe, 0x79, 0xfe, + 0x48, 0xff, 0x49, 0xff, 0x1b, 0x00, 0x1e, 0x00, 0xef, 0x00, 0xee, 0x00, + 0xbc, 0x01, 0xbf, 0x01, 0x8c, 0x02, 0x8c, 0x02, 0x56, 0x03, 0x58, 0x03, + 0x1c, 0x04, 0x1c, 0x04, 0xdd, 0x04, 0xde, 0x04, 0x98, 0x05, 0x9c, 0x05, + 0x51, 0x06, 0x4f, 0x06, 0xfd, 0x06, 0xff, 0x06, 0xa2, 0x07, 0xa4, 0x07, + 0x41, 0x08, 0x41, 0x08, 0xd4, 0x08, 0xd8, 0x08, 0x63, 0x09, 0x61, 0x09, + 0xde, 0x09, 0xe1, 0x09, 0x52, 0x0a, 0x54, 0x0a, 0xbe, 0x0a, 0xbd, 0x0a, + 0x18, 0x0b, 0x1a, 0x0b, 0x67, 0x0b, 0x69, 0x0b, 0xaa, 0x0b, 0xaa, 0x0b, + 0xde, 0x0b, 0xe2, 0x0b, 0x04, 0x0c, 0x03, 0x0c, 0x1b, 0x0c, 0x1c, 0x0c, + 0x24, 0x0c, 0x24, 0x0c, 0x1c, 0x0c, 0x1f, 0x0c, 0x09, 0x0c, 0x09, 0x0c, + 0xe2, 0x0b, 0xe4, 0x0b, 0xae, 0x0b, 0xaf, 0x0b, 0x6b, 0x0b, 0x6c, 0x0b, + 0x1a, 0x0b, 0x1b, 0x0b, 0xb9, 0x0a, 0xba, 0x0a, 0x4d, 0x0a, 0x4e, 0x0a, + 0xd1, 0x09, 0xd4, 0x09, 0x4e, 0x09, 0x4d, 0x09, 0xb9, 0x08, 0xbc, 0x08, + 0x20, 0x08, 0x21, 0x08, 0x79, 0x07, 0x79, 0x07, 0xcc, 0x06, 0xcc, 0x06, + 0x18, 0x06, 0x19, 0x06, 0x5b, 0x05, 0x5b, 0x05, 0x9a, 0x04, 0x9d, 0x04, + 0xd3, 0x03, 0xd2, 0x03, 0x08, 0x03, 0x0b, 0x03, 0x3c, 0x02, 0x3c, 0x02, + 0x6e, 0x01, 0x6e, 0x01, 0x9a, 0x00, 0x9d, 0x00, 0xcc, 0xff, 0xcd, 0xff, + 0xff, 0xfe, 0xff, 0xfe, 0x2f, 0xfe, 0x31, 0xfe, 0x68, 0xfd, 0x6a, 0xfd, + 0x9f, 0xfc, 0xa0, 0xfc, 0xdd, 0xfb, 0xde, 0xfb, 0x1f, 0xfb, 0x20, 0xfb, + 0x68, 0xfa, 0x69, 0xfa, 0xb6, 0xf9, 0xb9, 0xf9, 0x0d, 0xf9, 0x0d, 0xf9, + 0x6b, 0xf8, 0x6d, 0xf8, 0xd1, 0xf7, 0xd3, 0xf7, 0x43, 0xf7, 0x44, 0xf7, + 0xbd, 0xf6, 0xbf, 0xf6, 0x42, 0xf6, 0x43, 0xf6, 0xd3, 0xf5, 0xd7, 0xf5, + 0x6f, 0xf5, 0x70, 0xf5, 0x19, 0xf5, 0x1b, 0xf5, 0xce, 0xf4, 0xcd, 0xf4, + 0x91, 0xf4, 0x93, 0xf4, 0x63, 0xf4, 0x63, 0xf4, 0x41, 0xf4, 0x42, 0xf4, + 0x2d, 0xf4, 0x2f, 0xf4, 0x29, 0xf4, 0x2c, 0xf4, 0x34, 0xf4, 0x33, 0xf4, + 0x4e, 0xf4, 0x51, 0xf4, 0x77, 0xf4, 0x77, 0xf4, 0xb1, 0xf4, 0xb1, 0xf4, + 0xf3, 0xf4, 0xf7, 0xf4, 0x4c, 0xf5, 0x4b, 0xf5, 0xad, 0xf5, 0xb0, 0xf5, + 0x1e, 0xf6, 0x1f, 0xf6, 0x9c, 0xf6, 0x9e, 0xf6, 0x24, 0xf7, 0x23, 0xf7, + 0xb8, 0xf7, 0xba, 0xf7, 0x57, 0xf8, 0x57, 0xf8, 0xfe, 0xf8, 0x01, 0xf9, + 0xb0, 0xf9, 0xb1, 0xf9, 0x67, 0xfa, 0x68, 0xfa, 0x27, 0xfb, 0x29, 0xfb, + 0xea, 0xfb, 0xeb, 0xfb, 0xb5, 0xfc, 0xb6, 0xfc, 0x81, 0xfd, 0x81, 0xfd, + 0x51, 0xfe, 0x52, 0xfe, 0x20, 0xff, 0x21, 0xff, 0xf2, 0xff, 0xf4, 0xff, + 0xc6, 0x00, 0xc7, 0x00, 0x95, 0x01, 0x97, 0x01, 0x66, 0x02, 0x67, 0x02, + 0x31, 0x03, 0x34, 0x03, 0xfb, 0x03, 0xfc, 0x03, 0xbf, 0x04, 0xc1, 0x04, + 0x7e, 0x05, 0x7f, 0x05, 0x36, 0x06, 0x39, 0x06, 0xea, 0x06, 0xeb, 0x06, + 0x92, 0x07, 0x96, 0x07, 0x34, 0x08, 0x35, 0x08, 0xcf, 0x08, 0xd1, 0x08, + 0x5c, 0x09, 0x5d, 0x09, 0xe3, 0x09, 0xe5, 0x09, 0x5b, 0x0a, 0x5d, 0x0a, + 0xc9, 0x0a, 0xcd, 0x0a, 0x2c, 0x0b, 0x2d, 0x0b, 0x82, 0x0b, 0x83, 0x0b, + 0xc9, 0x0b, 0xcc, 0x0b, 0x05, 0x0c, 0x05, 0x0c, 0x2e, 0x0c, 0x32, 0x0c, + 0x4d, 0x0c, 0x4e, 0x0c, 0x5c, 0x0c, 0x5e, 0x0c, 0x5d, 0x0c, 0x5e, 0x0c, + 0x4d, 0x0c, 0x4f, 0x0c, 0x2e, 0x0c, 0x30, 0x0c, 0xfe, 0x0b, 0x01, 0x0c, + 0xc4, 0x0b, 0xc3, 0x0b, 0x75, 0x0b, 0x78, 0x0b, 0x1d, 0x0b, 0x1e, 0x0b, + 0xb5, 0x0a, 0xb7, 0x0a, 0x3f, 0x0a, 0x41, 0x0a, 0xbe, 0x09, 0xc1, 0x09, + 0x33, 0x09, 0x34, 0x09, 0x9a, 0x08, 0x9c, 0x08, 0xfb, 0x07, 0xfb, 0x07, + 0x4f, 0x07, 0x4f, 0x07, 0x9d, 0x06, 0x9f, 0x06, 0xe2, 0x05, 0xe3, 0x05, + 0x23, 0x05, 0x26, 0x05, 0x5d, 0x04, 0x5f, 0x04, 0x93, 0x03, 0x94, 0x03, + 0xc7, 0x02, 0xcb, 0x02, 0xf7, 0x01, 0xf7, 0x01, 0x27, 0x01, 0x28, 0x01, + 0x54, 0x00, 0x58, 0x00, 0x84, 0xff, 0x84, 0xff, 0xb4, 0xfe, 0xb7, 0xfe, + 0xe8, 0xfd, 0xe7, 0xfd, 0x1d, 0xfd, 0x1e, 0xfd, 0x55, 0xfc, 0x57, 0xfc, + 0x94, 0xfb, 0x96, 0xfb, 0xd7, 0xfa, 0xd9, 0xfa, 0x20, 0xfa, 0x22, 0xfa, + 0x70, 0xf9, 0x71, 0xf9, 0xc7, 0xf8, 0xcb, 0xf8, 0x28, 0xf8, 0x28, 0xf8, + 0x91, 0xf7, 0x94, 0xf7, 0x04, 0xf7, 0x06, 0xf7, 0x83, 0xf6, 0x83, 0xf6, + 0x0a, 0xf6, 0x0d, 0xf6, 0x9e, 0xf5, 0x9f, 0xf5, 0x3e, 0xf5, 0x3f, 0xf5, + 0xe9, 0xf4, 0xec, 0xf4, 0xa4, 0xf4, 0xa4, 0xf4, 0x6b, 0xf4, 0x6e, 0xf4, + 0x40, 0xf4, 0x41, 0xf4, 0x23, 0xf4, 0x25, 0xf4, 0x15, 0xf4, 0x16, 0xf4, + 0x16, 0xf4, 0x17, 0xf4, 0x26, 0xf4, 0x27, 0xf4, 0x44, 0xf4, 0x45, 0xf4, + 0x72, 0xf4, 0x74, 0xf4, 0xb0, 0xf4, 0xb0, 0xf4, 0xfb, 0xf4, 0xfe, 0xf4, + 0x56, 0xf5, 0x59, 0xf5, 0xbd, 0xf5, 0xbf, 0xf5, 0x35, 0xf6, 0x35, 0xf6, + 0xb4, 0xf6, 0xb6, 0xf6, 0x42, 0xf7, 0x44, 0xf7, 0xd7, 0xf7, 0xdb, 0xf7, + 0x7c, 0xf8, 0x7e, 0xf8, 0x25, 0xf9, 0x28, 0xf9, 0xd9, 0xf9, 0xda, 0xf9, + 0x93, 0xfa, 0x97, 0xfa, 0x53, 0xfb, 0x54, 0xfb, 0x1a, 0xfc, 0x1c, 0xfc, + 0xe3, 0xfc, 0xe5, 0xfc, 0xaf, 0xfd, 0xb2, 0xfd, 0x7e, 0xfe, 0x7f, 0xfe, + 0x4c, 0xff, 0x4f, 0xff, 0x1f, 0x00, 0x20, 0x00, 0xee, 0x00, 0xf1, 0x00, + 0xbe, 0x01, 0xbf, 0x01, 0x8a, 0x02, 0x8c, 0x02, 0x55, 0x03, 0x55, 0x03, + 0x18, 0x04, 0x1b, 0x04, 0xda, 0x04, 0xdb, 0x04, 0x91, 0x05, 0x93, 0x05, + 0x47, 0x06, 0x49, 0x06, 0xf3, 0x06, 0xf5, 0x06, 0x9b, 0x07, 0x9b, 0x07, + 0x35, 0x08, 0x39, 0x08, 0xca, 0x08, 0xc9, 0x08, 0x51, 0x09, 0x55, 0x09, + 0xd1, 0x09, 0xd1, 0x09, 0x45, 0x0a, 0x47, 0x0a, 0xab, 0x0a, 0xac, 0x0a, + 0x07, 0x0b, 0x0a, 0x0b, 0x56, 0x0b, 0x57, 0x0b, 0x97, 0x0b, 0x98, 0x0b, + 0xca, 0x0b, 0xcc, 0x0b, 0xef, 0x0b, 0xf0, 0x0b, 0x07, 0x0c, 0x07, 0x0c, + 0x0f, 0x0c, 0x11, 0x0c, 0x09, 0x0c, 0x0a, 0x0c, 0xf0, 0x0b, 0xf1, 0x0b, + 0xce, 0x0b, 0xcf, 0x0b, 0x96, 0x0b, 0x9b, 0x0b, 0x58, 0x0b, 0x58, 0x0b, + 0x06, 0x0b, 0x09, 0x0b, 0xa4, 0x0a, 0xa5, 0x0a, 0x39, 0x0a, 0x3c, 0x0a, + 0xbd, 0x09, 0xbf, 0x09, 0x38, 0x09, 0x3a, 0x09, 0xa6, 0x08, 0xa6, 0x08, + 0x09, 0x08, 0x0c, 0x08, 0x65, 0x07, 0x67, 0x07, 0xb3, 0x06, 0xb6, 0x06, + 0x00, 0x06, 0x01, 0x06, 0x40, 0x05, 0x41, 0x05, 0x80, 0x04, 0x82, 0x04, + 0xb4, 0x03, 0xb6, 0x03, 0xea, 0x02, 0xea, 0x02, 0x18, 0x02, 0x1b, 0x02, + 0x48, 0x01, 0x48, 0x01, 0x74, 0x00, 0x76, 0x00, 0xa1, 0xff, 0xa2, 0xff, + 0xd0, 0xfe, 0xd1, 0xfe, 0xfd, 0xfd, 0x01, 0xfe, 0x31, 0xfd, 0x32, 0xfd, + 0x67, 0xfc, 0x69, 0xfc, 0x9f, 0xfb, 0xa1, 0xfb, 0xdf, 0xfa, 0xe1, 0xfa, + 0x21, 0xfa, 0x21, 0xfa, 0x6d, 0xf9, 0x6f, 0xf9, 0xbe, 0xf8, 0xbd, 0xf8, + 0x17, 0xf8, 0x19, 0xf8, 0x7b, 0xf7, 0x7d, 0xf7, 0xe6, 0xf6, 0xe5, 0xf6, + 0x5d, 0xf6, 0x5f, 0xf6, 0xde, 0xf5, 0xdf, 0xf5, 0x69, 0xf5, 0x6a, 0xf5, + 0x04, 0xf5, 0x07, 0xf5, 0xa7, 0xf4, 0xa7, 0xf4, 0x5d, 0xf4, 0x5d, 0xf4, + 0x19, 0xf4, 0x1b, 0xf4, 0xe8, 0xf3, 0xe8, 0xf3, 0xc4, 0xf3, 0xc7, 0xf3, + 0xaf, 0xf3, 0xaf, 0xf3, 0xa8, 0xf3, 0xa9, 0xf3, 0xb1, 0xf3, 0xb3, 0xf3, + 0xca, 0xf3, 0xca, 0xf3, 0xf2, 0xf3, 0xf4, 0xf3, 0x29, 0xf4, 0x29, 0xf4, + 0x6d, 0xf4, 0x6f, 0xf4, 0xc6, 0xf4, 0xc7, 0xf4, 0x25, 0xf5, 0x28, 0xf5, + 0x97, 0xf5, 0x97, 0xf5, 0x12, 0xf6, 0x14, 0xf6, 0x99, 0xf6, 0x9b, 0xf6, + 0x2e, 0xf7, 0x2f, 0xf7, 0xc9, 0xf7, 0xcb, 0xf7, 0x71, 0xf8, 0x73, 0xf8, + 0x22, 0xf9, 0x23, 0xf9, 0xd6, 0xf9, 0xd8, 0xf9, 0x98, 0xfa, 0x98, 0xfa, + 0x5a, 0xfb, 0x5c, 0xfb, 0x21, 0xfc, 0x21, 0xfc, 0xee, 0xfc, 0xf1, 0xfc, + 0xbb, 0xfd, 0xbd, 0xfd, 0x8d, 0xfe, 0x8e, 0xfe, 0x5c, 0xff, 0x5f, 0xff, + 0x2f, 0x00, 0x2f, 0x00, 0xfc, 0x00, 0xff, 0x00, 0xcb, 0x01, 0xca, 0x01, + 0x95, 0x02, 0x99, 0x02, 0x5d, 0x03, 0x5c, 0x03, 0x1f, 0x04, 0x22, 0x04, + 0xde, 0x04, 0xde, 0x04, 0x94, 0x05, 0x97, 0x05, 0x48, 0x06, 0x48, 0x06, + 0xf0, 0x06, 0xf0, 0x06, 0x93, 0x07, 0x97, 0x07, 0x2c, 0x08, 0x2b, 0x08, + 0xba, 0x08, 0xbe, 0x08, 0x42, 0x09, 0x43, 0x09, 0xb9, 0x09, 0xbc, 0x09, + 0x2c, 0x0a, 0x2e, 0x0a, 0x8c, 0x0a, 0x8e, 0x0a, 0xe5, 0x0a, 0xe6, 0x0a, + 0x2e, 0x0b, 0x31, 0x0b, 0x6a, 0x0b, 0x69, 0x0b, 0x98, 0x0b, 0x9a, 0x0b, + 0xb9, 0x0b, 0xba, 0x0b, 0xcb, 0x0b, 0xcb, 0x0b, 0xce, 0x0b, 0xd1, 0x0b, + 0xc2, 0x0b, 0xc3, 0x0b, 0xa9, 0x0b, 0xaa, 0x0b, 0x7e, 0x0b, 0x80, 0x0b, + 0x46, 0x0b, 0x47, 0x0b, 0xff, 0x0a, 0x02, 0x0b, 0xa9, 0x0a, 0xaa, 0x0a, + 0x43, 0x0a, 0x45, 0x0a, 0xd3, 0x09, 0xd3, 0x09, 0x53, 0x09, 0x56, 0x09, + 0xcb, 0x08, 0xcc, 0x08, 0x35, 0x08, 0x37, 0x08, 0x95, 0x07, 0x96, 0x07, + 0xee, 0x06, 0xf1, 0x06, 0x3c, 0x06, 0x3d, 0x06, 0x84, 0x05, 0x86, 0x05, + 0xc4, 0x04, 0xc6, 0x04, 0xff, 0x03, 0x01, 0x04, 0x37, 0x03, 0x38, 0x03, + 0x68, 0x02, 0x6b, 0x02, 0x9c, 0x01, 0x9c, 0x01, 0xc6, 0x00, 0xca, 0x00, + 0xf8, 0xff, 0xf8, 0xff, 0x26, 0xff, 0x26, 0xff, 0x53, 0xfe, 0x56, 0xfe, + 0x89, 0xfd, 0x8a, 0xfd, 0xba, 0xfc, 0xbb, 0xfc, 0xf5, 0xfb, 0xf6, 0xfb, + 0x2f, 0xfb, 0x31, 0xfb, 0x72, 0xfa, 0x73, 0xfa, 0xbd, 0xf9, 0xbe, 0xf9, + 0x09, 0xf9, 0x0c, 0xf9, 0x65, 0xf8, 0x65, 0xf8, 0xc2, 0xf7, 0xc5, 0xf7, + 0x2c, 0xf7, 0x2d, 0xf7, 0x9f, 0xf6, 0xa0, 0xf6, 0x1d, 0xf6, 0x1e, 0xf6, + 0xa5, 0xf5, 0xa7, 0xf5, 0x3b, 0xf5, 0x3b, 0xf5, 0xd8, 0xf4, 0xdb, 0xf4, + 0x87, 0xf4, 0x87, 0xf4, 0x43, 0xf4, 0x43, 0xf4, 0x0b, 0xf4, 0x0c, 0xf4, + 0xe1, 0xf3, 0xe0, 0xf3, 0xc6, 0xf3, 0xc8, 0xf3, 0xb6, 0xf3, 0xb9, 0xf3, + 0xbd, 0xf3, 0xbc, 0xf3, 0xcd, 0xf3, 0xcf, 0xf3, 0xec, 0xf3, 0xee, 0xf3, + 0x20, 0xf4, 0x20, 0xf4, 0x5d, 0xf4, 0x5f, 0xf4, 0xac, 0xf4, 0xac, 0xf4, + 0x08, 0xf5, 0x0a, 0xf5, 0x70, 0xf5, 0x73, 0xf5, 0xe8, 0xf5, 0xe8, 0xf5, + 0x69, 0xf6, 0x6b, 0xf6, 0xf9, 0xf6, 0xf8, 0xf6, 0x92, 0xf7, 0x94, 0xf7, + 0x33, 0xf8, 0x34, 0xf8, 0xe2, 0xf8, 0xe3, 0xf8, 0x94, 0xf9, 0x94, 0xf9, + 0x4f, 0xfa, 0x51, 0xfa, 0x11, 0xfb, 0x14, 0xfb, 0xd8, 0xfb, 0xd8, 0xfb, + 0xa2, 0xfc, 0xa5, 0xfc, 0x72, 0xfd, 0x70, 0xfd, 0x40, 0xfe, 0x43, 0xfe, + 0x11, 0xff, 0x11, 0xff, 0xe4, 0xff, 0xe7, 0xff, 0xb6, 0x00, 0xb5, 0x00, + 0x87, 0x01, 0x89, 0x01, 0x54, 0x02, 0x55, 0x02, 0x20, 0x03, 0x21, 0x03, + 0xe8, 0x03, 0xea, 0x03, 0xa9, 0x04, 0xab, 0x04, 0x69, 0x05, 0x6a, 0x05, + 0x1b, 0x06, 0x1e, 0x06, 0xd0, 0x06, 0xd2, 0x06, 0x77, 0x07, 0x78, 0x07, + 0x16, 0x08, 0x1b, 0x08, 0xb0, 0x08, 0xb0, 0x08, 0x3b, 0x09, 0x3f, 0x09, + 0xc2, 0x09, 0xc2, 0x09, 0x37, 0x0a, 0x3b, 0x0a, 0xa3, 0x0a, 0xa5, 0x0a, + 0x05, 0x0b, 0x08, 0x0b, 0x59, 0x0b, 0x58, 0x0b, 0x9e, 0x0b, 0xa1, 0x0b, + 0xd8, 0x0b, 0xda, 0x0b, 0x01, 0x0c, 0x04, 0x0c, 0x1f, 0x0c, 0x22, 0x0c, + 0x2d, 0x0c, 0x2d, 0x0c, 0x2a, 0x0c, 0x2d, 0x0c, 0x1c, 0x0c, 0x1d, 0x0c, + 0xfc, 0x0b, 0xfe, 0x0b, 0xcc, 0x0b, 0xce, 0x0b, 0x8f, 0x0b, 0x92, 0x0b, + 0x43, 0x0b, 0x44, 0x0b, 0xe6, 0x0a, 0xea, 0x0a, 0x81, 0x0a, 0x81, 0x0a, + 0x08, 0x0a, 0x0c, 0x0a, 0x8a, 0x09, 0x8b, 0x09, 0xfc, 0x08, 0xff, 0x08, + 0x62, 0x08, 0x63, 0x08, 0xc3, 0x07, 0xc4, 0x07, 0x13, 0x07, 0x16, 0x07, + 0x64, 0x06, 0x67, 0x06, 0xa8, 0x05, 0xaa, 0x05, 0xe9, 0x04, 0xec, 0x04, + 0x24, 0x04, 0x24, 0x04, 0x58, 0x03, 0x5b, 0x03, 0x8b, 0x02, 0x8d, 0x02, + 0xb9, 0x01, 0xba, 0x01, 0xe7, 0x00, 0xea, 0x00, 0x13, 0x00, 0x15, 0x00, + 0x44, 0xff, 0x45, 0xff, 0x6f, 0xfe, 0x74, 0xfe, 0xa0, 0xfd, 0xa0, 0xfd, + 0xcc, 0xfc, 0xce, 0xfc, 0xf6, 0xfb, 0xf8, 0xfb, 0x23, 0xfb, 0x25, 0xfb, + 0x54, 0xfa, 0x59, 0xfa, 0x8c, 0xf9, 0x8d, 0xf9, 0xce, 0xf8, 0xd0, 0xf8, + 0x16, 0xf8, 0x17, 0xf8, 0x6e, 0xf7, 0x70, 0xf7, 0xcc, 0xf6, 0xcf, 0xf6, + 0x3b, 0xf6, 0x3e, 0xf6, 0xb6, 0xf5, 0xb7, 0xf5, 0x3f, 0xf5, 0x41, 0xf5, + 0xd4, 0xf4, 0xd7, 0xf4, 0x7c, 0xf4, 0x7d, 0xf4, 0x32, 0xf4, 0x34, 0xf4, + 0xf9, 0xf3, 0xfb, 0xf3, 0xce, 0xf3, 0xcf, 0xf3, 0xb1, 0xf3, 0xb4, 0xf3, + 0xaa, 0xf3, 0xaa, 0xf3, 0xad, 0xf3, 0xaf, 0xf3, 0xc7, 0xf3, 0xc9, 0xf3, + 0xee, 0xf3, 0xee, 0xf3, 0x24, 0xf4, 0x27, 0xf4, 0x6e, 0xf4, 0x71, 0xf4, + 0xc6, 0xf4, 0xc7, 0xf4, 0x2c, 0xf5, 0x30, 0xf5, 0xa2, 0xf5, 0xa2, 0xf5, + 0x24, 0xf6, 0x26, 0xf6, 0xb1, 0xf6, 0xb3, 0xf6, 0x4d, 0xf7, 0x4f, 0xf7, + 0xf0, 0xf7, 0xf2, 0xf7, 0x9f, 0xf8, 0xa1, 0xf8, 0x55, 0xf9, 0x58, 0xf9, + 0x11, 0xfa, 0x13, 0xfa, 0xd8, 0xfa, 0xdb, 0xfa, 0xa0, 0xfb, 0xa0, 0xfb, + 0x6d, 0xfc, 0x6f, 0xfc, 0x3f, 0xfd, 0x40, 0xfd, 0x0f, 0xfe, 0x12, 0xfe, + 0xe4, 0xfe, 0xe5, 0xfe, 0xb4, 0xff, 0xb9, 0xff, 0x88, 0x00, 0x89, 0x00, + 0x58, 0x01, 0x59, 0x01, 0x26, 0x02, 0x26, 0x02, 0xec, 0x02, 0xf0, 0x02, + 0xb5, 0x03, 0xb4, 0x03, 0x70, 0x04, 0x74, 0x04, 0x2c, 0x05, 0x2c, 0x05, + 0xda, 0x05, 0xde, 0x05, 0x86, 0x06, 0x88, 0x06, 0x26, 0x07, 0x27, 0x07, + 0xbf, 0x07, 0xc0, 0x07, 0x4d, 0x08, 0x50, 0x08, 0xd2, 0x08, 0xd2, 0x08, + 0x4b, 0x09, 0x4e, 0x09, 0xb9, 0x09, 0xb8, 0x09, 0x1b, 0x0a, 0x1d, 0x0a, + 0x70, 0x0a, 0x73, 0x0a, 0xb9, 0x0a, 0xba, 0x0a, 0xf5, 0x0a, 0xf7, 0x0a, + 0x23, 0x0b, 0x27, 0x0b, 0x48, 0x0b, 0x4a, 0x0b, 0x5b, 0x0b, 0x5d, 0x0b, + 0x62, 0x0b, 0x64, 0x0b, 0x5b, 0x0b, 0x5c, 0x0b, 0x48, 0x0b, 0x4a, 0x0b, + 0x24, 0x0b, 0x27, 0x0b, 0xf9, 0x0a, 0xf8, 0x0a, 0xb9, 0x0a, 0xbc, 0x0a, + 0x71, 0x0a, 0x73, 0x0a, 0x1f, 0x0a, 0x21, 0x0a, 0xbe, 0x09, 0xc0, 0x09, + 0x55, 0x09, 0x56, 0x09, 0xdd, 0x08, 0xdf, 0x08, 0x61, 0x08, 0x64, 0x08, + 0xdc, 0x07, 0xdc, 0x07, 0x4a, 0x07, 0x4c, 0x07, 0xb8, 0x06, 0xb8, 0x06, + 0x18, 0x06, 0x1a, 0x06, 0x7a, 0x05, 0x7b, 0x05, 0xd0, 0x04, 0xd3, 0x04, + 0x2a, 0x04, 0x2b, 0x04, 0x7d, 0x03, 0x7e, 0x03, 0xcd, 0x02, 0xce, 0x02, + 0x1d, 0x02, 0x20, 0x02, 0x6c, 0x01, 0x6d, 0x01, 0xbc, 0x00, 0xbe, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x5e, 0xff, 0x62, 0xff, 0xb4, 0xfe, 0xb3, 0xfe, + 0x0d, 0xfe, 0x0e, 0xfe, 0x69, 0xfd, 0x6a, 0xfd, 0xcb, 0xfc, 0xcb, 0xfc, + 0x30, 0xfc, 0x31, 0xfc, 0x9b, 0xfb, 0x9c, 0xfb, 0x0e, 0xfb, 0x0d, 0xfb, + 0x86, 0xfa, 0x89, 0xfa, 0x08, 0xfa, 0x08, 0xfa, 0x91, 0xf9, 0x91, 0xf9, + 0x21, 0xf9, 0x23, 0xf9, 0xbd, 0xf8, 0xbd, 0xf8, 0x61, 0xf8, 0x62, 0xf8, + 0x0c, 0xf8, 0x0e, 0xf8, 0xc4, 0xf7, 0xc5, 0xf7, 0x86, 0xf7, 0x86, 0xf7, + 0x50, 0xf7, 0x53, 0xf7, 0x28, 0xf7, 0x28, 0xf7, 0x08, 0xf7, 0x0b, 0xf7, + 0xf6, 0xf6, 0xf6, 0xf6, 0xed, 0xf6, 0xec, 0xf6, 0xef, 0xf6, 0xf0, 0xf6, + 0xf9, 0xf6, 0xfb, 0xf6, 0x14, 0xf7, 0x16, 0xf7, 0x34, 0xf7, 0x36, 0xf7, + 0x64, 0xf7, 0x66, 0xf7, 0x97, 0xf7, 0x99, 0xf7, 0xdc, 0xf7, 0xde, 0xf7, + 0x25, 0xf8, 0x28, 0xf8, 0x79, 0xf8, 0x78, 0xf8, 0xd5, 0xf8, 0xda, 0xf8, + 0x37, 0xf9, 0x37, 0xf9, 0xa3, 0xf9, 0xa6, 0xf9, 0x17, 0xfa, 0x18, 0xfa, + 0x8b, 0xfa, 0x8e, 0xfa, 0x0c, 0xfb, 0x0f, 0xfb, 0x8c, 0xfb, 0x8c, 0xfb, + 0x11, 0xfc, 0x14, 0xfc, 0x9d, 0xfc, 0x9e, 0xfc, 0x24, 0xfd, 0x25, 0xfd, + 0xb6, 0xfd, 0xb8, 0xfd, 0x43, 0xfe, 0x44, 0xfe, 0xd2, 0xfe, 0xd7, 0xfe, + 0x66, 0xff, 0x66, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0x80, 0x00, 0x82, 0x00, + 0x0c, 0x01, 0x0e, 0x01, 0x95, 0x01, 0x99, 0x01, 0x1c, 0x02, 0x1c, 0x02, + 0x9d, 0x02, 0xa1, 0x02, 0x1c, 0x03, 0x1c, 0x03, 0x94, 0x03, 0x96, 0x03, + 0x08, 0x04, 0x0b, 0x04, 0x76, 0x04, 0x78, 0x04, 0xde, 0x04, 0xe0, 0x04, + 0x40, 0x05, 0x43, 0x05, 0x9a, 0x05, 0x9a, 0x05, 0xec, 0x05, 0xf1, 0x05, + 0x39, 0x06, 0x39, 0x06, 0x79, 0x06, 0x7d, 0x06, 0xb8, 0x06, 0xb7, 0x06, + 0xe5, 0x06, 0xe9, 0x06, 0x13, 0x07, 0x16, 0x07, 0x33, 0x07, 0x33, 0x07, + 0x49, 0x07, 0x4d, 0x07, 0x5b, 0x07, 0x5c, 0x07, 0x5f, 0x07, 0x62, 0x07, + 0x5f, 0x07, 0x62, 0x07, 0x51, 0x07, 0x51, 0x07, 0x3c, 0x07, 0x42, 0x07, + 0x22, 0x07, 0x21, 0x07, 0xf9, 0x06, 0xfe, 0x06, 0xcf, 0x06, 0xd1, 0x06, + 0x96, 0x06, 0x98, 0x06, 0x5a, 0x06, 0x5f, 0x06, 0x15, 0x06, 0x17, 0x06, + 0xcb, 0x05, 0xce, 0x05, 0x78, 0x05, 0x7c, 0x05, 0x23, 0x05, 0x24, 0x05, + 0xc3, 0x04, 0xc6, 0x04, 0x64, 0x04, 0x68, 0x04, 0xfc, 0x03, 0xfe, 0x03, + 0x95, 0x03, 0x96, 0x03, 0x27, 0x03, 0x29, 0x03, 0xb7, 0x02, 0xb8, 0x02, + 0x46, 0x02, 0x49, 0x02, 0xd2, 0x01, 0xd5, 0x01, 0x5d, 0x01, 0x5f, 0x01, + 0xe9, 0x00, 0xeb, 0x00, 0x71, 0x00, 0x76, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x8b, 0xff, 0x8e, 0xff, 0x1a, 0xff, 0x1a, 0xff, 0xaa, 0xfe, 0xae, 0xfe, + 0x3e, 0xfe, 0x3e, 0xfe, 0xd4, 0xfd, 0xd5, 0xfd, 0x6c, 0xfd, 0x6f, 0xfd, + 0x0a, 0xfd, 0x0c, 0xfd, 0xad, 0xfc, 0xae, 0xfc, 0x53, 0xfc, 0x54, 0xfc, + 0xfd, 0xfb, 0x00, 0xfc, 0xb0, 0xfb, 0xb1, 0xfb, 0x66, 0xfb, 0x68, 0xfb, + 0x25, 0xfb, 0x26, 0xfb, 0xe7, 0xfa, 0xe7, 0xfa, 0xb1, 0xfa, 0xb5, 0xfa, + 0x85, 0xfa, 0x83, 0xfa, 0x58, 0xfa, 0x5c, 0xfa, 0x3b, 0xfa, 0x3b, 0xfa, + 0x1d, 0xfa, 0x1f, 0xfa, 0x0c, 0xfa, 0x0f, 0xfa, 0x02, 0xfa, 0x01, 0xfa, + 0xfa, 0xf9, 0xfd, 0xf9, 0x00, 0xfa, 0x02, 0xfa, 0x08, 0xfa, 0x09, 0xfa, + 0x1c, 0xfa, 0x1e, 0xfa, 0x36, 0xfa, 0x35, 0xfa, 0x50, 0xfa, 0x53, 0xfa, + 0x7b, 0xfa, 0x7b, 0xfa, 0xa4, 0xfa, 0xa6, 0xfa, 0xd6, 0xfa, 0xd8, 0xfa, + 0x0f, 0xfb, 0x0f, 0xfb, 0x49, 0xfb, 0x4b, 0xfb, 0x8d, 0xfb, 0x8f, 0xfb, + 0xd3, 0xfb, 0xd4, 0xfb, 0x1e, 0xfc, 0x21, 0xfc, 0x6c, 0xfc, 0x6c, 0xfc, + 0xbe, 0xfc, 0xc2, 0xfc, 0x14, 0xfd, 0x14, 0xfd, 0x6a, 0xfd, 0x6e, 0xfd, + 0xc6, 0xfd, 0xc7, 0xfd, 0x1f, 0xfe, 0x22, 0xfe, 0x7e, 0xfe, 0x7f, 0xfe, + 0xda, 0xfe, 0xdc, 0xfe, 0x36, 0xff, 0x38, 0xff, 0x92, 0xff, 0x94, 0xff, + 0xee, 0xff, 0xef, 0xff, 0x4b, 0x00, 0x4d, 0x00, 0xa4, 0x00, 0xa6, 0x00, + 0xfe, 0x00, 0xfe, 0x00, 0x51, 0x01, 0x53, 0x01, 0xa5, 0x01, 0xa8, 0x01, + 0xf6, 0x01, 0xf6, 0x01, 0x44, 0x02, 0x47, 0x02, 0x8a, 0x02, 0x8a, 0x02, + 0xd1, 0x02, 0xd3, 0x02, 0x12, 0x03, 0x14, 0x03, 0x4d, 0x03, 0x4f, 0x03, + 0x87, 0x03, 0x89, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0xe6, 0x03, 0xe9, 0x03, + 0x0d, 0x04, 0x10, 0x04, 0x2f, 0x04, 0x31, 0x04, 0x50, 0x04, 0x50, 0x04, + 0x62, 0x04, 0x65, 0x04, 0x78, 0x04, 0x78, 0x04, 0x80, 0x04, 0x83, 0x04, + 0x86, 0x04, 0x87, 0x04, 0x87, 0x04, 0x87, 0x04, 0x80, 0x04, 0x81, 0x04, + 0x74, 0x04, 0x75, 0x04, 0x61, 0x04, 0x63, 0x04, 0x4b, 0x04, 0x4d, 0x04, + 0x2f, 0x04, 0x2e, 0x04, 0x0d, 0x04, 0x0e, 0x04, 0xe6, 0x03, 0xe8, 0x03, + 0xb9, 0x03, 0xbb, 0x03, 0x8a, 0x03, 0x8a, 0x03, 0x55, 0x03, 0x57, 0x03, + 0x1d, 0x03, 0x1d, 0x03, 0xde, 0x02, 0xe2, 0x02, 0xa0, 0x02, 0xa0, 0x02, + 0x5d, 0x02, 0x5e, 0x02, 0x18, 0x02, 0x1a, 0x02, 0xcf, 0x01, 0xd2, 0x01, + 0x87, 0x01, 0x87, 0x01, 0x3a, 0x01, 0x3e, 0x01, 0xf0, 0x00, 0xf0, 0x00, + 0xa0, 0x00, 0xa3, 0x00, 0x55, 0x00, 0x56, 0x00, 0x06, 0x00, 0x09, 0x00, + 0xb9, 0xff, 0xb8, 0xff, 0x6d, 0xff, 0x71, 0xff, 0x21, 0xff, 0x23, 0xff, + 0xd6, 0xfe, 0xd7, 0xfe, 0x8d, 0xfe, 0x8f, 0xfe, 0x47, 0xfe, 0x48, 0xfe, + 0x04, 0xfe, 0x06, 0xfe, 0xc0, 0xfd, 0xc1, 0xfd, 0x82, 0xfd, 0x82, 0xfd, + 0x46, 0xfd, 0x47, 0xfd, 0x0f, 0xfd, 0x10, 0xfd, 0xd8, 0xfc, 0xdb, 0xfc, + 0xaa, 0xfc, 0xac, 0xfc, 0x7d, 0xfc, 0x7e, 0xfc, 0x52, 0xfc, 0x56, 0xfc, + 0x32, 0xfc, 0x33, 0xfc, 0x10, 0xfc, 0x12, 0xfc, 0xf6, 0xfb, 0xf9, 0xfb, + 0xe1, 0xfb, 0xe1, 0xfb, 0xd1, 0xfb, 0xd1, 0xfb, 0xc3, 0xfb, 0xc4, 0xfb, + 0xbc, 0xfb, 0xbe, 0xfb, 0xbc, 0xfb, 0xbe, 0xfb, 0xbd, 0xfb, 0xbf, 0xfb, + 0xc7, 0xfb, 0xc7, 0xfb, 0xd3, 0xfb, 0xd6, 0xfb, 0xe5, 0xfb, 0xe5, 0xfb, + 0xfa, 0xfb, 0xfe, 0xfb, 0x16, 0xfc, 0x17, 0xfc, 0x32, 0xfc, 0x35, 0xfc, + 0x5a, 0xfc, 0x5b, 0xfc, 0x7b, 0xfc, 0x7f, 0xfc, 0xab, 0xfc, 0xab, 0xfc, + 0xd6, 0xfc, 0xd9, 0xfc, 0x0a, 0xfd, 0x0b, 0xfd, 0x3c, 0xfd, 0x3f, 0xfd, + 0x72, 0xfd, 0x75, 0xfd, 0xad, 0xfd, 0xaf, 0xfd, 0xe7, 0xfd, 0xea, 0xfd, + 0x27, 0xfe, 0x27, 0xfe, 0x63, 0xfe, 0x68, 0xfe, 0xa7, 0xfe, 0xa7, 0xfe, + 0xe6, 0xfe, 0xe8, 0xfe, 0x28, 0xff, 0x29, 0xff, 0x6b, 0xff, 0x6d, 0xff, + 0xac, 0xff, 0xae, 0xff, 0xed, 0xff, 0xf0, 0xff, 0x32, 0x00, 0x33, 0x00, + 0x6d, 0x00, 0x70, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xec, 0x00, 0xef, 0x00, + 0x2a, 0x01, 0x2b, 0x01, 0x62, 0x01, 0x64, 0x01, 0x9a, 0x01, 0x9c, 0x01, + 0xd2, 0x01, 0xd2, 0x01, 0x01, 0x02, 0x05, 0x02, 0x35, 0x02, 0x34, 0x02, + 0x60, 0x02, 0x63, 0x02, 0x88, 0x02, 0x8a, 0x02, 0xb2, 0x02, 0xb2, 0x02, + 0xcf, 0x02, 0xd3, 0x02, 0xf1, 0x02, 0xf2, 0x02, 0x0c, 0x03, 0x0d, 0x03, + 0x20, 0x03, 0x25, 0x03, 0x37, 0x03, 0x36, 0x03, 0x44, 0x03, 0x47, 0x03, + 0x4f, 0x03, 0x50, 0x03, 0x57, 0x03, 0x58, 0x03, 0x5a, 0x03, 0x5c, 0x03, + 0x57, 0x03, 0x5a, 0x03, 0x54, 0x03, 0x55, 0x03, 0x48, 0x03, 0x4a, 0x03, + 0x3c, 0x03, 0x3e, 0x03, 0x2b, 0x03, 0x2c, 0x03, 0x17, 0x03, 0x18, 0x03, + 0xfd, 0x02, 0xfe, 0x02, 0xe3, 0x02, 0xe4, 0x02, 0xc2, 0x02, 0xc4, 0x02, + 0xa2, 0x02, 0xa2, 0x02, 0x79, 0x02, 0x7d, 0x02, 0x56, 0x02, 0x56, 0x02, + 0x28, 0x02, 0x2a, 0x02, 0xfe, 0x01, 0x00, 0x02, 0xd0, 0x01, 0xd0, 0x01, + 0x9e, 0x01, 0xa0, 0x01, 0x6e, 0x01, 0x6f, 0x01, 0x38, 0x01, 0x3b, 0x01, + 0x08, 0x01, 0x08, 0x01, 0xd0, 0x00, 0xd3, 0x00, 0x9c, 0x00, 0x9e, 0x00, + 0x69, 0x00, 0x6b, 0x00, 0x31, 0x00, 0x31, 0x00, 0x00, 0x00, 0x03, 0x00, + 0xc9, 0xff, 0xc9, 0xff, 0x96, 0xff, 0x98, 0xff, 0x63, 0xff, 0x67, 0xff, + 0x33, 0xff, 0x32, 0xff, 0x02, 0xff, 0x08, 0xff, 0xd5, 0xfe, 0xd5, 0xfe, + 0xa8, 0xfe, 0xaa, 0xfe, 0x7d, 0xfe, 0x80, 0xfe, 0x56, 0xfe, 0x56, 0xfe, + 0x30, 0xfe, 0x34, 0xfe, 0x0c, 0xfe, 0x0f, 0xfe, 0xed, 0xfd, 0xef, 0xfd, + 0xce, 0xfd, 0xd1, 0xfd, 0xb7, 0xfd, 0xb7, 0xfd, 0x9e, 0xfd, 0xa1, 0xfd, + 0x8c, 0xfd, 0x8f, 0xfd, 0x7b, 0xfd, 0x7c, 0xfd, 0x6e, 0xfd, 0x72, 0xfd, + 0x65, 0xfd, 0x67, 0xfd, 0x5d, 0xfd, 0x5e, 0xfd, 0x5c, 0xfd, 0x5f, 0xfd, + 0x5b, 0xfd, 0x5c, 0xfd, 0x5f, 0xfd, 0x60, 0xfd, 0x66, 0xfd, 0x69, 0xfd, + 0x71, 0xfd, 0x72, 0xfd, 0x7f, 0xfd, 0x80, 0xfd, 0x8f, 0xfd, 0x90, 0xfd, + 0xa4, 0xfd, 0xa6, 0xfd, 0xba, 0xfd, 0xbd, 0xfd, 0xd3, 0xfd, 0xd5, 0xfd, + 0xf2, 0xfd, 0xf4, 0xfd, 0x0f, 0xfe, 0x11, 0xfe, 0x2f, 0xfe, 0x31, 0xfe, + 0x56, 0xfe, 0x58, 0xfe, 0x7a, 0xfe, 0x79, 0xfe, 0xa2, 0xfe, 0xa4, 0xfe, + 0xc9, 0xfe, 0xcc, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, 0x20, 0xff, 0x23, 0xff, + 0x4b, 0xff, 0x4d, 0xff, 0x7a, 0xff, 0x7b, 0xff, 0xa7, 0xff, 0xa9, 0xff, + 0xd7, 0xff, 0xd9, 0xff, 0x03, 0x00, 0x06, 0x00, 0x33, 0x00, 0x34, 0x00, + 0x5f, 0x00, 0x63, 0x00, 0x8d, 0x00, 0x8f, 0x00, 0xb8, 0x00, 0xbc, 0x00, + 0xe6, 0x00, 0xe8, 0x00, 0x10, 0x01, 0x11, 0x01, 0x3a, 0x01, 0x3e, 0x01, + 0x62, 0x01, 0x62, 0x01, 0x88, 0x01, 0x8a, 0x01, 0xac, 0x01, 0xae, 0x01, + 0xce, 0x01, 0xce, 0x01, 0xf0, 0x01, 0xf2, 0x01, 0x0c, 0x02, 0x0e, 0x02, + 0x29, 0x02, 0x2b, 0x02, 0x41, 0x02, 0x43, 0x02, 0x59, 0x02, 0x5a, 0x02, + 0x6c, 0x02, 0x6d, 0x02, 0x7c, 0x02, 0x7e, 0x02, 0x8c, 0x02, 0x8d, 0x02, + 0x94, 0x02, 0x95, 0x02, 0x9f, 0x02, 0xa1, 0x02, 0xa3, 0x02, 0xa4, 0x02, + 0xa6, 0x02, 0xa9, 0x02, 0xa6, 0x02, 0xa7, 0x02, 0xa1, 0x02, 0xa4, 0x02, + 0x9e, 0x02, 0x9e, 0x02, 0x91, 0x02, 0x94, 0x02, 0x88, 0x02, 0x88, 0x02, + 0x78, 0x02, 0x7a, 0x02, 0x66, 0x02, 0x68, 0x02, 0x54, 0x02, 0x55, 0x02, + 0x3d, 0x02, 0x3f, 0x02, 0x25, 0x02, 0x25, 0x02, 0x0a, 0x02, 0x0d, 0x02, + 0xed, 0x01, 0xee, 0x01, 0xd1, 0x01, 0xd2, 0x01, 0xad, 0x01, 0xb0, 0x01, + 0x91, 0x01, 0x90, 0x01, 0x6b, 0x01, 0x6d, 0x01, 0x47, 0x01, 0x48, 0x01, + 0x24, 0x01, 0x25, 0x01, 0xfb, 0x00, 0xfd, 0x00, 0xd7, 0x00, 0xd8, 0x00, + 0xaf, 0x00, 0xb1, 0x00, 0x88, 0x00, 0x89, 0x00, 0x5f, 0x00, 0x62, 0x00, + 0x39, 0x00, 0x3b, 0x00, 0x11, 0x00, 0x13, 0x00, 0xed, 0xff, 0xef, 0xff, + 0xc6, 0xff, 0xc9, 0xff, 0xa1, 0xff, 0xa2, 0xff, 0x7d, 0xff, 0x80, 0xff, + 0x5a, 0xff, 0x5b, 0xff, 0x39, 0xff, 0x3b, 0xff, 0x17, 0xff, 0x19, 0xff, + 0xf9, 0xfe, 0xfa, 0xfe, 0xdd, 0xfe, 0xe0, 0xfe, 0xc1, 0xfe, 0xc4, 0xfe, + 0xa9, 0xfe, 0xaa, 0xfe, 0x91, 0xfe, 0x92, 0xfe, 0x7a, 0xfe, 0x7e, 0xfe, + 0x69, 0xfe, 0x69, 0xfe, 0x57, 0xfe, 0x5b, 0xfe, 0x4a, 0xfe, 0x4a, 0xfe, + 0x3c, 0xfe, 0x40, 0xfe, 0x34, 0xfe, 0x34, 0xfe, 0x2e, 0xfe, 0x30, 0xfe, + 0x29, 0xfe, 0x2a, 0xfe, 0x25, 0xfe, 0x29, 0xfe, 0x29, 0xfe, 0x29, 0xfe, + 0x28, 0xfe, 0x2c, 0xfe, 0x31, 0xfe, 0x32, 0xfe, 0x35, 0xfe, 0x39, 0xfe, + 0x42, 0xfe, 0x44, 0xfe, 0x4e, 0xfe, 0x51, 0xfe, 0x5c, 0xfe, 0x5e, 0xfe, + 0x6d, 0xfe, 0x6e, 0xfe, 0x80, 0xfe, 0x82, 0xfe, 0x95, 0xfe, 0x96, 0xfe, + 0xac, 0xfe, 0xad, 0xfe, 0xc2, 0xfe, 0xc4, 0xfe, 0xdb, 0xfe, 0xde, 0xfe, + 0xf9, 0xfe, 0xfa, 0xfe, 0x12, 0xff, 0x15, 0xff, 0x33, 0xff, 0x34, 0xff, + 0x4f, 0xff, 0x50, 0xff, 0x6f, 0xff, 0x72, 0xff, 0x8f, 0xff, 0x8f, 0xff, + 0xae, 0xff, 0xaf, 0xff, 0xcf, 0xff, 0xd1, 0xff, 0xf1, 0xff, 0xf2, 0xff, + 0x12, 0x00, 0x14, 0x00, 0x30, 0x00, 0x31, 0x00, 0x52, 0x00, 0x55, 0x00, + 0x74, 0x00, 0x75, 0x00, 0x90, 0x00, 0x93, 0x00, 0xb3, 0x00, 0xb4, 0x00, + 0xcd, 0x00, 0xcf, 0x00, 0xed, 0x00, 0xef, 0x00, 0x07, 0x01, 0x09, 0x01, + 0x1f, 0x01, 0x22, 0x01, 0x3c, 0x01, 0x3d, 0x01, 0x4f, 0x01, 0x54, 0x01, + 0x6a, 0x01, 0x69, 0x01, 0x7a, 0x01, 0x7d, 0x01, 0x8e, 0x01, 0x8f, 0x01, + 0xa0, 0x01, 0xa0, 0x01, 0xab, 0x01, 0xaf, 0x01, 0xbb, 0x01, 0xba, 0x01, + 0xc3, 0x01, 0xc4, 0x01, 0xca, 0x01, 0xcd, 0x01, 0xd3, 0x01, 0xd4, 0x01, + 0xd4, 0x01, 0xd6, 0x01, 0xd8, 0x01, 0xd9, 0x01, 0xd7, 0x01, 0xd7, 0x01, + 0xd3, 0x01, 0xd4, 0x01, 0xd1, 0x01, 0xd2, 0x01, 0xc6, 0x01, 0xc7, 0x01, + 0xc0, 0x01, 0xc1, 0x01, 0xb2, 0x01, 0xb4, 0x01, 0xa5, 0x01, 0xa6, 0x01, + 0x98, 0x01, 0x99, 0x01, 0x85, 0x01, 0x85, 0x01, 0x75, 0x01, 0x76, 0x01, + 0x5e, 0x01, 0x5f, 0x01, 0x47, 0x01, 0x49, 0x01, 0x31, 0x01, 0x32, 0x01, + 0x16, 0x01, 0x18, 0x01, 0x00, 0x01, 0xff, 0x00, 0xdf, 0x00, 0xe3, 0x00, + 0xc9, 0x00, 0xc7, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0x8d, 0x00, 0x8e, 0x00, + 0x6e, 0x00, 0x6f, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x30, 0x00, 0x33, 0x00, + 0x13, 0x00, 0x12, 0x00, 0xf1, 0xff, 0xf4, 0xff, 0xd5, 0xff, 0xd3, 0xff, + 0xb4, 0xff, 0xb6, 0xff, 0x96, 0xff, 0x97, 0xff, 0x7a, 0xff, 0x7b, 0xff, + 0x5c, 0xff, 0x5b, 0xff, 0x42, 0xff, 0x43, 0xff, 0x24, 0xff, 0x25, 0xff, + 0x0d, 0xff, 0x0b, 0xff, 0xf2, 0xfe, 0xf3, 0xfe, 0xdb, 0xfe, 0xdc, 0xfe, + 0xc4, 0xfe, 0xc4, 0xfe, 0xaf, 0xfe, 0xaf, 0xfe, 0x9e, 0xfe, 0x9d, 0xfe, + 0x87, 0xfe, 0x8a, 0xfe, 0x7b, 0xfe, 0x7b, 0xfe, 0x6c, 0xfe, 0x6c, 0xfe, + 0x5f, 0xfe, 0x61, 0xfe, 0x56, 0xfe, 0x55, 0xfe, 0x4a, 0xfe, 0x4c, 0xfe, + 0x47, 0xfe, 0x46, 0xfe, 0x3e, 0xfe, 0x3f, 0xfe, 0x3d, 0xfe, 0x41, 0xfe, + 0x3d, 0xfe, 0x3d, 0xfe, 0x3c, 0xfe, 0x3e, 0xfe, 0x43, 0xfe, 0x44, 0xfe, + 0x44, 0xfe, 0x45, 0xfe, 0x50, 0xfe, 0x50, 0xfe, 0x55, 0xfe, 0x57, 0xfe, + 0x5f, 0xfe, 0x60, 0xfe, 0x6c, 0xfe, 0x6f, 0xfe, 0x78, 0xfe, 0x79, 0xfe, + 0x89, 0xfe, 0x8b, 0xfe, 0x99, 0xfe, 0x9a, 0xfe, 0xac, 0xfe, 0xac, 0xfe, + 0xbe, 0xfe, 0xc1, 0xfe, 0xd5, 0xfe, 0xd6, 0xfe, 0xea, 0xfe, 0xea, 0xfe, + 0x01, 0xff, 0x03, 0xff, 0x18, 0xff, 0x1a, 0xff, 0x32, 0xff, 0x33, 0xff, + 0x4a, 0xff, 0x4c, 0xff, 0x65, 0xff, 0x66, 0xff, 0x7d, 0xff, 0x7f, 0xff, + 0x97, 0xff, 0x99, 0xff, 0xb1, 0xff, 0xb3, 0xff, 0xcd, 0xff, 0xcf, 0xff, + 0xe6, 0xff, 0xe8, 0xff, 0x00, 0x00, 0x02, 0x00, 0x17, 0x00, 0x1a, 0x00, + 0x32, 0x00, 0x34, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x61, 0x00, 0x63, 0x00, + 0x79, 0x00, 0x7a, 0x00, 0x8d, 0x00, 0x90, 0x00, 0xa5, 0x00, 0xa5, 0x00, + 0xb7, 0x00, 0xb9, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xda, 0x00, 0xdb, 0x00, + 0xea, 0x00, 0xed, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0x04, 0x01, 0x06, 0x01, + 0x14, 0x01, 0x13, 0x01, 0x1a, 0x01, 0x1b, 0x01, 0x23, 0x01, 0x24, 0x01, + 0x27, 0x01, 0x2b, 0x01, 0x2e, 0x01, 0x2e, 0x01, 0x30, 0x01, 0x33, 0x01, + 0x33, 0x01, 0x32, 0x01, 0x31, 0x01, 0x32, 0x01, 0x2e, 0x01, 0x2e, 0x01, + 0x2a, 0x01, 0x2d, 0x01, 0x25, 0x01, 0x24, 0x01, 0x1a, 0x01, 0x1e, 0x01, + 0x14, 0x01, 0x14, 0x01, 0x06, 0x01, 0x09, 0x01, 0xfd, 0x00, 0xff, 0x00, + 0xed, 0x00, 0xee, 0x00, 0xe1, 0x00, 0xe4, 0x00, 0xce, 0x00, 0xcf, 0x00, + 0xc0, 0x00, 0xc0, 0x00, 0xaa, 0x00, 0xad, 0x00, 0x98, 0x00, 0x99, 0x00, + 0x84, 0x00, 0x85, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x59, 0x00, 0x5a, 0x00, + 0x3f, 0x00, 0x3f, 0x00, 0x29, 0x00, 0x2b, 0x00, 0x12, 0x00, 0x11, 0x00, + 0xf7, 0xff, 0xf9, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xc6, 0xff, 0xc9, 0xff, + 0xb0, 0xff, 0xb1, 0xff, 0x98, 0xff, 0x9a, 0xff, 0x7f, 0xff, 0x80, 0xff, + 0x6a, 0xff, 0x6a, 0xff, 0x51, 0xff, 0x53, 0xff, 0x3a, 0xff, 0x3b, 0xff, + 0x25, 0xff, 0x28, 0xff, 0x0f, 0xff, 0x11, 0xff, 0xfb, 0xfe, 0xfd, 0xfe, + 0xea, 0xfe, 0xec, 0xfe, 0xd6, 0xfe, 0xd7, 0xfe, 0xc7, 0xfe, 0xc9, 0xfe, + 0xb4, 0xfe, 0xb6, 0xfe, 0xa9, 0xfe, 0xa9, 0xfe, 0x9c, 0xfe, 0x9e, 0xfe, + 0x91, 0xfe, 0x92, 0xfe, 0x86, 0xfe, 0x88, 0xfe, 0x7e, 0xfe, 0x80, 0xfe, + 0x77, 0xfe, 0x79, 0xfe, 0x73, 0xfe, 0x74, 0xfe, 0x70, 0xfe, 0x71, 0xfe, + 0x6d, 0xfe, 0x6f, 0xfe, 0x6e, 0xfe, 0x6e, 0xfe, 0x6e, 0xfe, 0x6f, 0xfe, + 0x70, 0xfe, 0x71, 0xfe, 0x76, 0xfe, 0x77, 0xfe, 0x7c, 0xfe, 0x7d, 0xfe, + 0x84, 0xfe, 0x85, 0xfe, 0x8f, 0xfe, 0x8f, 0xfe, 0x99, 0xfe, 0x9b, 0xfe, + 0xa4, 0xfe, 0xa6, 0xfe, 0xb5, 0xfe, 0xb6, 0xfe, 0xc2, 0xfe, 0xc3, 0xfe, + 0xd3, 0xfe, 0xd4, 0xfe, 0xe3, 0xfe, 0xe4, 0xfe, 0xf4, 0xfe, 0xf8, 0xfe, + 0x0d, 0xff, 0x0b, 0xff, 0x1c, 0xff, 0x20, 0xff, 0x34, 0xff, 0x34, 0xff, + 0x48, 0xff, 0x4a, 0xff, 0x5f, 0xff, 0x61, 0xff, 0x78, 0xff, 0x78, 0xff, + 0x8d, 0xff, 0x8f, 0xff, 0xa5, 0xff, 0xa6, 0xff, 0xbd, 0xff, 0xbe, 0xff, + 0xd4, 0xff, 0xd6, 0xff, 0xed, 0xff, 0xee, 0xff, 0x07, 0x00, 0x06, 0x00, + 0x1c, 0x00, 0x1e, 0x00, 0x33, 0x00, 0x33, 0x00, 0x4d, 0x00, 0x4d, 0x00, + 0x61, 0x00, 0x61, 0x00, 0x77, 0x00, 0x77, 0x00, 0x8b, 0x00, 0x8b, 0x00, + 0x9e, 0x00, 0x9f, 0x00, 0xb5, 0x00, 0xb3, 0x00, 0xc2, 0x00, 0xc4, 0x00, + 0xd3, 0x00, 0xd3, 0x00, 0xe5, 0x00, 0xe5, 0x00, 0xf1, 0x00, 0xf1, 0x00, + 0x02, 0x01, 0x03, 0x01, 0x0a, 0x01, 0x0a, 0x01, 0x17, 0x01, 0x1a, 0x01, + 0x20, 0x01, 0x20, 0x01, 0x27, 0x01, 0x28, 0x01, 0x2f, 0x01, 0x30, 0x01, + 0x2f, 0x01, 0x31, 0x01, 0x38, 0x01, 0x37, 0x01, 0x35, 0x01, 0x38, 0x01, + 0x39, 0x01, 0x38, 0x01, 0x33, 0x01, 0x36, 0x01, 0x32, 0x01, 0x33, 0x01, + 0x2d, 0x01, 0x2e, 0x01, 0x26, 0x01, 0x28, 0x01, 0x22, 0x01, 0x22, 0x01, + 0x18, 0x01, 0x18, 0x01, 0x0c, 0x01, 0x10, 0x01, 0x05, 0x01, 0x02, 0x01, + 0xf4, 0x00, 0xf6, 0x00, 0xe8, 0x00, 0xea, 0x00, 0xdc, 0x00, 0xd8, 0x00, + 0xc7, 0x00, 0xca, 0x00, 0xba, 0x00, 0xb9, 0x00, 0xa6, 0x00, 0xa8, 0x00, + 0x94, 0x00, 0x95, 0x00, 0x82, 0x00, 0x82, 0x00, 0x6e, 0x00, 0x6f, 0x00, + 0x59, 0x00, 0x5c, 0x00, 0x45, 0x00, 0x46, 0x00, 0x30, 0x00, 0x32, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x08, 0x00, 0xf3, 0xff, 0xf5, 0xff, + 0xde, 0xff, 0xe0, 0xff, 0xcb, 0xff, 0xc9, 0xff, 0xb7, 0xff, 0xb9, 0xff, + 0xa1, 0xff, 0xa3, 0xff, 0x91, 0xff, 0x91, 0xff, 0x7c, 0xff, 0x7f, 0xff, + 0x6b, 0xff, 0x6c, 0xff, 0x5c, 0xff, 0x5b, 0xff, 0x49, 0xff, 0x4c, 0xff, + 0x3d, 0xff, 0x3c, 0xff, 0x2e, 0xff, 0x30, 0xff, 0x21, 0xff, 0x23, 0xff, + 0x16, 0xff, 0x16, 0xff, 0x0a, 0xff, 0x0d, 0xff, 0x03, 0xff, 0x03, 0xff, + 0xfa, 0xfe, 0xfc, 0xfe, 0xf5, 0xfe, 0xf7, 0xfe, 0xef, 0xfe, 0xf0, 0xfe, + 0xea, 0xfe, 0xeb, 0xfe, 0xe9, 0xfe, 0xec, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, + 0xea, 0xfe, 0xed, 0xfe, 0xea, 0xfe, 0xec, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe, + 0xf6, 0xfe, 0xf8, 0xfe, 0xfc, 0xfe, 0xfc, 0xfe, 0x03, 0xff, 0x06, 0xff, + 0x0c, 0xff, 0x0d, 0xff, 0x18, 0xff, 0x17, 0xff, 0x22, 0xff, 0x24, 0xff, + 0x30, 0xff, 0x31, 0xff, 0x3d, 0xff, 0x3f, 0xff, 0x4e, 0xff, 0x4e, 0xff, + 0x5e, 0xff, 0x61, 0xff, 0x70, 0xff, 0x70, 0xff, 0x84, 0xff, 0x85, 0xff, + 0x94, 0xff, 0x95, 0xff, 0xab, 0xff, 0xab, 0xff, 0xbd, 0xff, 0xbf, 0xff, + 0xd2, 0xff, 0xd3, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0x15, 0x00, 0x15, 0x00, 0x27, 0x00, 0x28, 0x00, 0x3f, 0x00, 0x40, 0x00, + 0x51, 0x00, 0x54, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x7f, 0x00, 0x81, 0x00, + 0x94, 0x00, 0x94, 0x00, 0xaa, 0x00, 0xac, 0x00, 0xbc, 0x00, 0xbc, 0x00, + 0xd2, 0x00, 0xd3, 0x00, 0xe1, 0x00, 0xe4, 0x00, 0xf5, 0x00, 0xf5, 0x00, + 0x06, 0x01, 0x07, 0x01, 0x14, 0x01, 0x15, 0x01, 0x25, 0x01, 0x26, 0x01, + 0x30, 0x01, 0x33, 0x01, 0x40, 0x01, 0x3e, 0x01, 0x4a, 0x01, 0x4d, 0x01, + 0x53, 0x01, 0x54, 0x01, 0x5d, 0x01, 0x5e, 0x01, 0x64, 0x01, 0x65, 0x01, + 0x6a, 0x01, 0x6b, 0x01, 0x6d, 0x01, 0x70, 0x01, 0x70, 0x01, 0x72, 0x01, + 0x73, 0x01, 0x74, 0x01, 0x72, 0x01, 0x73, 0x01, 0x71, 0x01, 0x73, 0x01, + 0x6e, 0x01, 0x6f, 0x01, 0x6b, 0x01, 0x6d, 0x01, 0x64, 0x01, 0x66, 0x01, + 0x5e, 0x01, 0x5f, 0x01, 0x55, 0x01, 0x56, 0x01, 0x4a, 0x01, 0x4b, 0x01, + 0x41, 0x01, 0x43, 0x01, 0x33, 0x01, 0x34, 0x01, 0x28, 0x01, 0x2a, 0x01, + 0x16, 0x01, 0x17, 0x01, 0x09, 0x01, 0x0a, 0x01, 0xf9, 0x00, 0xfa, 0x00, + 0xe5, 0x00, 0xe6, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0xc0, 0x00, 0xc2, 0x00, + 0xb0, 0x00, 0xb1, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x87, 0x00, 0x88, 0x00, + 0x72, 0x00, 0x74, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x47, 0x00, 0x48, 0x00, + 0x33, 0x00, 0x36, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x08, 0x00, 0x0b, 0x00, + 0xf5, 0xff, 0xf6, 0xff, 0xe1, 0xff, 0xe3, 0xff, 0xcd, 0xff, 0xcf, 0xff, + 0xba, 0xff, 0xbb, 0xff, 0xa7, 0xff, 0xaa, 0xff, 0x96, 0xff, 0x97, 0xff, + 0x84, 0xff, 0x86, 0xff, 0x75, 0xff, 0x76, 0xff, 0x66, 0xff, 0x67, 0xff, + 0x55, 0xff, 0x56, 0xff, 0x48, 0xff, 0x4b, 0xff, 0x3c, 0xff, 0x3d, 0xff, + 0x31, 0xff, 0x33, 0xff, 0x2a, 0xff, 0x29, 0xff, 0x1f, 0xff, 0x21, 0xff, + 0x1a, 0xff, 0x1a, 0xff, 0x11, 0xff, 0x14, 0xff, 0x0f, 0xff, 0x10, 0xff, + 0x0c, 0xff, 0x0d, 0xff, 0x09, 0xff, 0x0b, 0xff, 0x0b, 0xff, 0x0b, 0xff, + 0x0a, 0xff, 0x0c, 0xff, 0x0e, 0xff, 0x0e, 0xff, 0x11, 0xff, 0x13, 0xff, + 0x19, 0xff, 0x18, 0xff, 0x1c, 0xff, 0x20, 0xff, 0x28, 0xff, 0x26, 0xff, + 0x2e, 0xff, 0x31, 0xff, 0x3b, 0xff, 0x3a, 0xff, 0x45, 0xff, 0x48, 0xff, + 0x53, 0xff, 0x54, 0xff, 0x61, 0xff, 0x62, 0xff, 0x6d, 0xff, 0x6f, 0xff, + 0x7f, 0xff, 0x80, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0xa0, 0xff, 0xa3, 0xff, + 0xb3, 0xff, 0xb2, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xd9, 0xff, 0xda, 0xff, + 0xec, 0xff, 0xe9, 0xff, 0x01, 0x00, 0x02, 0x00, 0x11, 0x00, 0x12, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x39, 0x00, 0x3b, 0x00, 0x4e, 0x00, 0x4d, 0x00, + 0x62, 0x00, 0x64, 0x00, 0x74, 0x00, 0x75, 0x00, 0x89, 0x00, 0x89, 0x00, + 0x98, 0x00, 0x9b, 0x00, 0xac, 0x00, 0xac, 0x00, 0xbd, 0x00, 0xc1, 0x00, + 0xcd, 0x00, 0xcd, 0x00, 0xdd, 0x00, 0xe1, 0x00, 0xed, 0x00, 0xec, 0x00, + 0xfb, 0x00, 0xfd, 0x00, 0x07, 0x01, 0x08, 0x01, 0x14, 0x01, 0x14, 0x01, + 0x1e, 0x01, 0x20, 0x01, 0x27, 0x01, 0x28, 0x01, 0x2f, 0x01, 0x31, 0x01, + 0x35, 0x01, 0x36, 0x01, 0x3c, 0x01, 0x3c, 0x01, 0x3e, 0x01, 0x43, 0x01, + 0x42, 0x01, 0x41, 0x01, 0x43, 0x01, 0x47, 0x01, 0x43, 0x01, 0x42, 0x01, + 0x40, 0x01, 0x44, 0x01, 0x3e, 0x01, 0x3d, 0x01, 0x38, 0x01, 0x39, 0x01, + 0x33, 0x01, 0x35, 0x01, 0x2a, 0x01, 0x2a, 0x01, 0x23, 0x01, 0x25, 0x01, + 0x18, 0x01, 0x1a, 0x01, 0x0d, 0x01, 0x0d, 0x01, 0x01, 0x01, 0x02, 0x01, + 0xf1, 0x00, 0xf3, 0x00, 0xe6, 0x00, 0xe5, 0x00, 0xd2, 0x00, 0xd4, 0x00, + 0xc5, 0x00, 0xc4, 0x00, 0xb1, 0x00, 0xb2, 0x00, 0x9e, 0x00, 0xa0, 0x00, + 0x8d, 0x00, 0x8c, 0x00, 0x76, 0x00, 0x77, 0x00, 0x63, 0x00, 0x62, 0x00, + 0x4e, 0x00, 0x4d, 0x00, 0x37, 0x00, 0x39, 0x00, 0x23, 0x00, 0x20, 0x00, + 0x0b, 0x00, 0x0d, 0x00, 0xf6, 0xff, 0xf5, 0xff, 0xdf, 0xff, 0xe0, 0xff, + 0xca, 0xff, 0xc9, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0x9f, 0xff, 0x9d, 0xff, + 0x8b, 0xff, 0x8d, 0xff, 0x76, 0xff, 0x73, 0xff, 0x60, 0xff, 0x60, 0xff, + 0x4d, 0xff, 0x4e, 0xff, 0x3b, 0xff, 0x3a, 0xff, 0x29, 0xff, 0x2a, 0xff, + 0x19, 0xff, 0x19, 0xff, 0x06, 0xff, 0x08, 0xff, 0xfa, 0xfe, 0xfb, 0xfe, + 0xeb, 0xfe, 0xec, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xd4, 0xfe, 0xd5, 0xfe, + 0xca, 0xfe, 0xcb, 0xfe, 0xc2, 0xfe, 0xc3, 0xfe, 0xba, 0xfe, 0xb9, 0xfe, + 0xb5, 0xfe, 0xb6, 0xfe, 0xae, 0xfe, 0xaf, 0xfe, 0xac, 0xfe, 0xae, 0xfe, + 0xab, 0xfe, 0xab, 0xfe, 0xab, 0xfe, 0xac, 0xfe, 0xac, 0xfe, 0xad, 0xfe, + 0xad, 0xfe, 0xb1, 0xfe, 0xb5, 0xfe, 0xb4, 0xfe, 0xb8, 0xfe, 0xba, 0xfe, + 0xc1, 0xfe, 0xc2, 0xfe, 0xc9, 0xfe, 0xcb, 0xfe, 0xd3, 0xfe, 0xd2, 0xfe, + 0xde, 0xfe, 0xde, 0xfe, 0xeb, 0xfe, 0xed, 0xfe, 0xf8, 0xfe, 0xf5, 0xfe, + 0x04, 0xff, 0x07, 0xff, 0x16, 0xff, 0x15, 0xff, 0x25, 0xff, 0x26, 0xff, + 0x37, 0xff, 0x36, 0xff, 0x47, 0xff, 0x49, 0xff, 0x5b, 0xff, 0x59, 0xff, + 0x6c, 0xff, 0x6d, 0xff, 0x82, 0xff, 0x83, 0xff, 0x95, 0xff, 0x95, 0xff, + 0xaa, 0xff, 0xab, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xd2, 0xff, 0xd3, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0x11, 0x00, 0x10, 0x00, + 0x22, 0x00, 0x23, 0x00, 0x37, 0x00, 0x36, 0x00, 0x4a, 0x00, 0x4b, 0x00, + 0x5b, 0x00, 0x5b, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x7e, 0x00, 0x80, 0x00, + 0x90, 0x00, 0x90, 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xad, 0x00, 0xae, 0x00, + 0xb9, 0x00, 0xba, 0x00, 0xc8, 0x00, 0xc8, 0x00, 0xd0, 0x00, 0xd2, 0x00, + 0xdd, 0x00, 0xdc, 0x00, 0xe4, 0x00, 0xe5, 0x00, 0xea, 0x00, 0xeb, 0x00, + 0xf2, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf5, 0x00, 0xf8, 0x00, 0xf8, 0x00, + 0xf9, 0x00, 0xfa, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0xf9, 0x00, 0xf7, 0x00, + 0xf2, 0x00, 0xf4, 0x00, 0xf1, 0x00, 0xf1, 0x00, 0xe8, 0x00, 0xe8, 0x00, + 0xe4, 0x00, 0xe6, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xd1, 0x00, 0xd1, 0x00, + 0xc4, 0x00, 0xc7, 0x00, 0xb6, 0x00, 0xb7, 0x00, 0xad, 0x00, 0xae, 0x00, + 0x9b, 0x00, 0x9d, 0x00, 0x8e, 0x00, 0x8d, 0x00, 0x7b, 0x00, 0x7e, 0x00, + 0x68, 0x00, 0x69, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x3f, 0x00, 0x44, 0x00, + 0x34, 0x00, 0x32, 0x00, 0x19, 0x00, 0x1c, 0x00, 0x07, 0x00, 0x07, 0x00, + 0xf3, 0xff, 0xf4, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xc8, 0xff, 0xc9, 0xff, + 0xb1, 0xff, 0xb1, 0xff, 0x9c, 0xff, 0x9e, 0xff, 0x86, 0xff, 0x85, 0xff, + 0x71, 0xff, 0x74, 0xff, 0x5c, 0xff, 0x5a, 0xff, 0x48, 0xff, 0x4a, 0xff, + 0x33, 0xff, 0x33, 0xff, 0x20, 0xff, 0x22, 0xff, 0x0e, 0xff, 0x10, 0xff, + 0xfb, 0xfe, 0xfb, 0xfe, 0xec, 0xfe, 0xec, 0xfe, 0xda, 0xfe, 0xdc, 0xfe, + 0xcc, 0xfe, 0xcc, 0xfe, 0xc1, 0xfe, 0xc2, 0xfe, 0xb1, 0xfe, 0xb2, 0xfe, + 0xaa, 0xfe, 0xaa, 0xfe, 0x9c, 0xfe, 0x9e, 0xfe, 0x96, 0xfe, 0x97, 0xfe, + 0x8f, 0xfe, 0x8e, 0xfe, 0x86, 0xfe, 0x89, 0xfe, 0x87, 0xfe, 0x86, 0xfe, + 0x81, 0xfe, 0x83, 0xfe, 0x81, 0xfe, 0x82, 0xfe, 0x84, 0xfe, 0x83, 0xfe, + 0x84, 0xfe, 0x84, 0xfe, 0x86, 0xfe, 0x89, 0xfe, 0x8e, 0xfe, 0x8e, 0xfe, + 0x91, 0xfe, 0x94, 0xfe, 0x9e, 0xfe, 0x9d, 0xfe, 0xa4, 0xfe, 0xa5, 0xfe, + 0xb0, 0xfe, 0xb1, 0xfe, 0xbd, 0xfe, 0xc0, 0xfe, 0xc8, 0xfe, 0xc9, 0xfe, + 0xdb, 0xfe, 0xdb, 0xfe, 0xe5, 0xfe, 0xe7, 0xfe, 0xfa, 0xfe, 0xfa, 0xfe, + 0x0a, 0xff, 0x0c, 0xff, 0x1f, 0xff, 0x1e, 0xff, 0x32, 0xff, 0x33, 0xff, + 0x47, 0xff, 0x48, 0xff, 0x5b, 0xff, 0x5c, 0xff, 0x73, 0xff, 0x74, 0xff, + 0x88, 0xff, 0x8b, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0xb6, 0xff, 0xb8, 0xff, + 0xcd, 0xff, 0xce, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0x11, 0x00, 0x13, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x3e, 0x00, 0x3e, 0x00, + 0x54, 0x00, 0x58, 0x00, 0x6b, 0x00, 0x6a, 0x00, 0x7d, 0x00, 0x80, 0x00, + 0x95, 0x00, 0x97, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xb9, 0x00, 0xbd, 0x00, + 0xcb, 0x00, 0xcb, 0x00, 0xdb, 0x00, 0xde, 0x00, 0xe9, 0x00, 0xea, 0x00, + 0xf7, 0x00, 0xf8, 0x00, 0x04, 0x01, 0x05, 0x01, 0x10, 0x01, 0x11, 0x01, + 0x19, 0x01, 0x1c, 0x01, 0x22, 0x01, 0x22, 0x01, 0x28, 0x01, 0x29, 0x01, + 0x2d, 0x01, 0x2e, 0x01, 0x32, 0x01, 0x32, 0x01, 0x33, 0x01, 0x34, 0x01, + 0x35, 0x01, 0x36, 0x01, 0x34, 0x01, 0x34, 0x01, 0x33, 0x01, 0x33, 0x01, + 0x2e, 0x01, 0x2e, 0x01, 0x27, 0x01, 0x2a, 0x01, 0x21, 0x01, 0x21, 0x01, + 0x18, 0x01, 0x1b, 0x01, 0x0e, 0x01, 0x10, 0x01, 0x06, 0x01, 0x06, 0x01, + 0xf7, 0x00, 0xf8, 0x00, 0xea, 0x00, 0xeb, 0x00, 0xdc, 0x00, 0xde, 0x00, + 0xcb, 0x00, 0xcb, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0xa8, 0x00, 0xa8, 0x00, + 0x95, 0x00, 0x97, 0x00, 0x84, 0x00, 0x81, 0x00, 0x6b, 0x00, 0x6f, 0x00, + 0x5b, 0x00, 0x5b, 0x00, 0x42, 0x00, 0x43, 0x00, 0x30, 0x00, 0x32, 0x00, + 0x17, 0x00, 0x16, 0x00, 0x04, 0x00, 0x05, 0x00, 0xec, 0xff, 0xee, 0xff, + 0xd8, 0xff, 0xd7, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xab, 0xff, 0xab, 0xff, + 0x98, 0xff, 0x98, 0xff, 0x81, 0xff, 0x83, 0xff, 0x70, 0xff, 0x6f, 0xff, + 0x5c, 0xff, 0x5d, 0xff, 0x48, 0xff, 0x49, 0xff, 0x38, 0xff, 0x3a, 0xff, + 0x25, 0xff, 0x24, 0xff, 0x17, 0xff, 0x1a, 0xff, 0x09, 0xff, 0x08, 0xff, + 0xfc, 0xfe, 0xfe, 0xfe, 0xf0, 0xfe, 0xf0, 0xfe, 0xe6, 0xfe, 0xe4, 0xfe, + 0xde, 0xfe, 0xe0, 0xfe, 0xd4, 0xfe, 0xd3, 0xfe, 0xd0, 0xfe, 0xd1, 0xfe, + 0xc9, 0xfe, 0xc8, 0xfe, 0xc7, 0xfe, 0xc8, 0xfe, 0xc6, 0xfe, 0xc4, 0xfe, + 0xc5, 0xfe, 0xc6, 0xfe, 0xc8, 0xfe, 0xc7, 0xfe, 0xc9, 0xfe, 0xca, 0xfe, + 0xcf, 0xfe, 0xd0, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, 0xdd, 0xfe, 0xde, 0xfe, + 0xe7, 0xfe, 0xe7, 0xfe, 0xf1, 0xfe, 0xf2, 0xfe, 0xff, 0xfe, 0x01, 0xff, + 0x0c, 0xff, 0x0c, 0xff, 0x1c, 0xff, 0x1f, 0xff, 0x2c, 0xff, 0x2c, 0xff, + 0x3e, 0xff, 0x3f, 0xff, 0x4f, 0xff, 0x51, 0xff, 0x62, 0xff, 0x64, 0xff, + 0x77, 0xff, 0x7a, 0xff, 0x8d, 0xff, 0x8e, 0xff, 0xa3, 0xff, 0xa4, 0xff, + 0xbb, 0xff, 0xbd, 0xff, 0xd3, 0xff, 0xd2, 0xff, 0xeb, 0xff, 0xed, 0xff, + 0x04, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x35, 0x00, 0x36, 0x00, + 0x4b, 0x00, 0x4a, 0x00, 0x64, 0x00, 0x66, 0x00, 0x7c, 0x00, 0x7d, 0x00, + 0x96, 0x00, 0x95, 0x00, 0xaa, 0x00, 0xac, 0x00, 0xc4, 0x00, 0xc3, 0x00, + 0xd7, 0x00, 0xda, 0x00, 0xf1, 0x00, 0xef, 0x00, 0x03, 0x01, 0x04, 0x01, + 0x18, 0x01, 0x1a, 0x01, 0x29, 0x01, 0x2a, 0x01, 0x3d, 0x01, 0x3f, 0x01, + 0x4b, 0x01, 0x4b, 0x01, 0x5c, 0x01, 0x5d, 0x01, 0x68, 0x01, 0x69, 0x01, + 0x75, 0x01, 0x75, 0x01, 0x80, 0x01, 0x82, 0x01, 0x88, 0x01, 0x88, 0x01, + 0x92, 0x01, 0x92, 0x01, 0x96, 0x01, 0x96, 0x01, 0x9a, 0x01, 0x9b, 0x01, + 0x9f, 0x01, 0x9f, 0x01, 0x9d, 0x01, 0x9d, 0x01, 0xa1, 0x01, 0x9f, 0x01, + 0x9b, 0x01, 0x9e, 0x01, 0x9a, 0x01, 0x97, 0x01, 0x90, 0x01, 0x94, 0x01, + 0x8c, 0x01, 0x8a, 0x01, 0x82, 0x01, 0x83, 0x01, 0x77, 0x01, 0x78, 0x01, + 0x6d, 0x01, 0x6c, 0x01, 0x5d, 0x01, 0x5f, 0x01, 0x52, 0x01, 0x51, 0x01, + 0x3f, 0x01, 0x40, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0x1b, 0x01, 0x1d, 0x01, + 0x08, 0x01, 0x0a, 0x01, 0xf4, 0x00, 0xf5, 0x00, 0xe1, 0x00, 0xe1, 0x00, + 0xc8, 0x00, 0xc9, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0x99, 0x00, 0x99, 0x00, + 0x82, 0x00, 0x84, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x51, 0x00, 0x53, 0x00, + 0x39, 0x00, 0x39, 0x00, 0x20, 0x00, 0x20, 0x00, 0x07, 0x00, 0x07, 0x00, + 0xef, 0xff, 0xf1, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xc1, 0xff, 0xc1, 0xff, + 0xaa, 0xff, 0xaa, 0xff, 0x93, 0xff, 0x93, 0xff, 0x7e, 0xff, 0x7e, 0xff, + 0x68, 0xff, 0x67, 0xff, 0x55, 0xff, 0x56, 0xff, 0x42, 0xff, 0x42, 0xff, + 0x30, 0xff, 0x31, 0xff, 0x20, 0xff, 0x21, 0xff, 0x11, 0xff, 0x11, 0xff, + 0x04, 0xff, 0x05, 0xff, 0xf7, 0xfe, 0xf7, 0xfe, 0xed, 0xfe, 0xed, 0xfe, + 0xe5, 0xfe, 0xe6, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0xd6, 0xfe, 0xd9, 0xfe, + 0xd3, 0xfe, 0xd2, 0xfe, 0xce, 0xfe, 0xd1, 0xfe, 0xd1, 0xfe, 0xcf, 0xfe, + 0xcd, 0xfe, 0xd1, 0xfe, 0xd3, 0xfe, 0xd2, 0xfe, 0xd5, 0xfe, 0xd9, 0xfe, + 0xde, 0xfe, 0xdc, 0xfe, 0xe3, 0xfe, 0xe6, 0xfe, 0xed, 0xfe, 0xed, 0xfe, + 0xf8, 0xfe, 0xf8, 0xfe, 0x03, 0xff, 0x04, 0xff, 0x14, 0xff, 0x13, 0xff, + 0x20, 0xff, 0x22, 0xff, 0x30, 0xff, 0x30, 0xff, 0x45, 0xff, 0x44, 0xff, + 0x54, 0xff, 0x56, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x7f, 0xff, 0x7f, 0xff, + 0x93, 0xff, 0x93, 0xff, 0xab, 0xff, 0xae, 0xff, 0xc2, 0xff, 0xc0, 0xff, + 0xda, 0xff, 0xdc, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0x08, 0x00, 0x0a, 0x00, + 0x22, 0x00, 0x24, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x54, 0x00, 0x55, 0x00, + 0x6b, 0x00, 0x6e, 0x00, 0x86, 0x00, 0x84, 0x00, 0x9a, 0x00, 0x9e, 0x00, + 0xb4, 0x00, 0xb5, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xe1, 0x00, 0xe1, 0x00, + 0xf5, 0x00, 0xf6, 0x00, 0x0a, 0x01, 0x0b, 0x01, 0x1d, 0x01, 0x1e, 0x01, + 0x2f, 0x01, 0x2f, 0x01, 0x40, 0x01, 0x41, 0x01, 0x50, 0x01, 0x4f, 0x01, + 0x5c, 0x01, 0x5e, 0x01, 0x6a, 0x01, 0x69, 0x01, 0x74, 0x01, 0x76, 0x01, + 0x7e, 0x01, 0x7f, 0x01, 0x87, 0x01, 0x87, 0x01, 0x8b, 0x01, 0x8c, 0x01, + 0x91, 0x01, 0x91, 0x01, 0x94, 0x01, 0x95, 0x01, 0x93, 0x01, 0x94, 0x01, + 0x93, 0x01, 0x94, 0x01, 0x91, 0x01, 0x91, 0x01, 0x8b, 0x01, 0x8d, 0x01, + 0x86, 0x01, 0x85, 0x01, 0x7e, 0x01, 0x80, 0x01, 0x73, 0x01, 0x71, 0x01, + 0x68, 0x01, 0x69, 0x01, 0x5b, 0x01, 0x5b, 0x01, 0x4c, 0x01, 0x4d, 0x01, + 0x3f, 0x01, 0x3f, 0x01, 0x29, 0x01, 0x28, 0x01, 0x18, 0x01, 0x18, 0x01, + 0x03, 0x01, 0x05, 0x01, 0xed, 0x00, 0xed, 0x00, 0xd8, 0x00, 0xd9, 0x00, + 0xc0, 0x00, 0xc0, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0x8e, 0x00, 0x8e, 0x00, + 0x74, 0x00, 0x74, 0x00, 0x5a, 0x00, 0x59, 0x00, 0x3e, 0x00, 0x3f, 0x00, + 0x23, 0x00, 0x22, 0x00, 0x08, 0x00, 0x08, 0x00, 0xec, 0xff, 0xec, 0xff, + 0xd0, 0xff, 0xd0, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0x9a, 0xff, 0x9b, 0xff, + 0x7f, 0xff, 0x80, 0xff, 0x68, 0xff, 0x68, 0xff, 0x4b, 0xff, 0x4b, 0xff, + 0x34, 0xff, 0x35, 0xff, 0x1e, 0xff, 0x1c, 0xff, 0x05, 0xff, 0x08, 0xff, + 0xf2, 0xfe, 0xf0, 0xfe, 0xda, 0xfe, 0xdc, 0xfe, 0xc9, 0xfe, 0xc8, 0xfe, + 0xb7, 0xfe, 0xb8, 0xfe, 0xa5, 0xfe, 0xa6, 0xfe, 0x9a, 0xfe, 0x99, 0xfe, + 0x89, 0xfe, 0x8a, 0xfe, 0x80, 0xfe, 0x80, 0xfe, 0x75, 0xfe, 0x77, 0xfe, + 0x6e, 0xfe, 0x6d, 0xfe, 0x66, 0xfe, 0x68, 0xfe, 0x63, 0xfe, 0x64, 0xfe, + 0x60, 0xfe, 0x61, 0xfe, 0x61, 0xfe, 0x5f, 0xfe, 0x5e, 0xfe, 0x62, 0xfe, + 0x65, 0xfe, 0x63, 0xfe, 0x69, 0xfe, 0x6a, 0xfe, 0x71, 0xfe, 0x6f, 0xfe, + 0x77, 0xfe, 0x79, 0xfe, 0x82, 0xfe, 0x82, 0xfe, 0x8f, 0xfe, 0x8c, 0xfe, + 0x99, 0xfe, 0x9a, 0xfe, 0xab, 0xfe, 0xaa, 0xfe, 0xba, 0xfe, 0xb9, 0xfe, + 0xcc, 0xfe, 0xcd, 0xfe, 0xe0, 0xfe, 0xde, 0xfe, 0xf1, 0xfe, 0xf4, 0xfe, + 0x0a, 0xff, 0x09, 0xff, 0x20, 0xff, 0x21, 0xff, 0x39, 0xff, 0x37, 0xff, + 0x4e, 0xff, 0x50, 0xff, 0x6a, 0xff, 0x68, 0xff, 0x83, 0xff, 0x83, 0xff, + 0x9d, 0xff, 0x9b, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xd2, 0xff, 0xd0, 0xff, + 0xec, 0xff, 0xee, 0xff, 0x06, 0x00, 0x04, 0x00, 0x20, 0x00, 0x22, 0x00, + 0x3b, 0x00, 0x3a, 0x00, 0x54, 0x00, 0x53, 0x00, 0x6c, 0x00, 0x6b, 0x00, + 0x84, 0x00, 0x85, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0xb2, 0x00, 0xb0, 0x00, + 0xc9, 0x00, 0xca, 0x00, 0xdc, 0x00, 0xdb, 0x00, 0xf0, 0x00, 0xf1, 0x00, + 0x02, 0x01, 0x01, 0x01, 0x11, 0x01, 0x11, 0x01, 0x22, 0x01, 0x21, 0x01, + 0x2b, 0x01, 0x2c, 0x01, 0x3a, 0x01, 0x39, 0x01, 0x42, 0x01, 0x43, 0x01, + 0x4b, 0x01, 0x4b, 0x01, 0x51, 0x01, 0x51, 0x01, 0x54, 0x01, 0x55, 0x01, + 0x59, 0x01, 0x5a, 0x01, 0x59, 0x01, 0x59, 0x01, 0x58, 0x01, 0x59, 0x01, + 0x56, 0x01, 0x57, 0x01, 0x50, 0x01, 0x51, 0x01, 0x4b, 0x01, 0x4d, 0x01, + 0x40, 0x01, 0x40, 0x01, 0x39, 0x01, 0x39, 0x01, 0x2a, 0x01, 0x2a, 0x01, + 0x1c, 0x01, 0x1d, 0x01, 0x0f, 0x01, 0x0e, 0x01, 0xf9, 0x00, 0xfb, 0x00, + 0xed, 0x00, 0xeb, 0x00, 0xd4, 0x00, 0xd6, 0x00, 0xc0, 0x00, 0xbf, 0x00, + 0xab, 0x00, 0xac, 0x00, 0x91, 0x00, 0x90, 0x00, 0x7a, 0x00, 0x7d, 0x00, + 0x5f, 0x00, 0x5e, 0x00, 0x45, 0x00, 0x48, 0x00, 0x2c, 0x00, 0x29, 0x00, + 0x0d, 0x00, 0x0f, 0x00, 0xf2, 0xff, 0xf2, 0xff, 0xd6, 0xff, 0xd8, 0xff, + 0xba, 0xff, 0xbb, 0xff, 0x9f, 0xff, 0xa0, 0xff, 0x80, 0xff, 0x82, 0xff, + 0x67, 0xff, 0x66, 0xff, 0x48, 0xff, 0x4b, 0xff, 0x30, 0xff, 0x30, 0xff, + 0x14, 0xff, 0x17, 0xff, 0xfc, 0xfe, 0xfc, 0xfe, 0xe2, 0xfe, 0xe4, 0xfe, + 0xcb, 0xfe, 0xcc, 0xfe, 0xb4, 0xfe, 0xb6, 0xfe, 0x9d, 0xfe, 0xa0, 0xfe, + 0x8a, 0xfe, 0x8b, 0xfe, 0x77, 0xfe, 0x79, 0xfe, 0x67, 0xfe, 0x68, 0xfe, + 0x58, 0xfe, 0x59, 0xfe, 0x4a, 0xfe, 0x4c, 0xfe, 0x3e, 0xfe, 0x3e, 0xfe, + 0x32, 0xfe, 0x35, 0xfe, 0x2c, 0xfe, 0x2c, 0xfe, 0x25, 0xfe, 0x27, 0xfe, + 0x21, 0xfe, 0x22, 0xfe, 0x1e, 0xfe, 0x1d, 0xfe, 0x1d, 0xfe, 0x20, 0xfe, + 0x1f, 0xfe, 0x1f, 0xfe, 0x22, 0xfe, 0x25, 0xfe, 0x28, 0xfe, 0x28, 0xfe, + 0x30, 0xfe, 0x32, 0xfe, 0x38, 0xfe, 0x38, 0xfe, 0x45, 0xfe, 0x46, 0xfe, + 0x51, 0xfe, 0x52, 0xfe, 0x60, 0xfe, 0x61, 0xfe, 0x71, 0xfe, 0x71, 0xfe, + 0x82, 0xfe, 0x83, 0xfe, 0x98, 0xfe, 0x98, 0xfe, 0xab, 0xfe, 0xab, 0xfe, + 0xc3, 0xfe, 0xc4, 0xfe, 0xdb, 0xfe, 0xdc, 0xfe, 0xf3, 0xfe, 0xf3, 0xfe, + 0x0e, 0xff, 0x10, 0xff, 0x27, 0xff, 0x26, 0xff, 0x46, 0xff, 0x47, 0xff, + 0x5f, 0xff, 0x63, 0xff, 0x7f, 0xff, 0x7d, 0xff, 0x99, 0xff, 0x9f, 0xff, + 0xba, 0xff, 0xb8, 0xff, 0xd7, 0xff, 0xda, 0xff, 0xf4, 0xff, 0xf6, 0xff, + 0x15, 0x00, 0x15, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x4c, 0x00, 0x4f, 0x00, + 0x6c, 0x00, 0x6c, 0x00, 0x84, 0x00, 0x87, 0x00, 0xa4, 0x00, 0xa5, 0x00, + 0xba, 0x00, 0xbc, 0x00, 0xd6, 0x00, 0xd6, 0x00, 0xec, 0x00, 0xee, 0x00, + 0x04, 0x01, 0x05, 0x01, 0x19, 0x01, 0x1b, 0x01, 0x2f, 0x01, 0x2e, 0x01, + 0x3f, 0x01, 0x42, 0x01, 0x51, 0x01, 0x52, 0x01, 0x5e, 0x01, 0x5e, 0x01, + 0x6d, 0x01, 0x6e, 0x01, 0x79, 0x01, 0x78, 0x01, 0x81, 0x01, 0x83, 0x01, + 0x8b, 0x01, 0x8b, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x93, 0x01, 0x94, 0x01, + 0x94, 0x01, 0x95, 0x01, 0x95, 0x01, 0x94, 0x01, 0x90, 0x01, 0x93, 0x01, + 0x8f, 0x01, 0x8e, 0x01, 0x85, 0x01, 0x86, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x70, 0x01, 0x73, 0x01, 0x68, 0x01, 0x66, 0x01, 0x58, 0x01, 0x5b, 0x01, + 0x4a, 0x01, 0x47, 0x01, 0x38, 0x01, 0x3b, 0x01, 0x24, 0x01, 0x23, 0x01, + 0x10, 0x01, 0x12, 0x01, 0xfa, 0x00, 0xfa, 0x00, 0xe1, 0x00, 0xe3, 0x00, + 0xcb, 0x00, 0xcb, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0x96, 0x00, 0x98, 0x00, + 0x7a, 0x00, 0x7b, 0x00, 0x5d, 0x00, 0x60, 0x00, 0x43, 0x00, 0x44, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x08, 0x00, 0x09, 0x00, 0xec, 0xff, 0xed, 0xff, + 0xce, 0xff, 0xce, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0x94, 0xff, 0x95, 0xff, + 0x7a, 0xff, 0x7a, 0xff, 0x5d, 0xff, 0x5f, 0xff, 0x42, 0xff, 0x41, 0xff, + 0x28, 0xff, 0x2a, 0xff, 0x0e, 0xff, 0x0e, 0xff, 0xf8, 0xfe, 0xf8, 0xfe, + 0xdf, 0xfe, 0xdf, 0xfe, 0xcf, 0xfe, 0xcc, 0xfe, 0xb5, 0xfe, 0xb9, 0xfe, + 0xa8, 0xfe, 0xa5, 0xfe, 0x95, 0xfe, 0x96, 0xfe, 0x85, 0xfe, 0x85, 0xfe, + 0x7a, 0xfe, 0x7b, 0xfe, 0x6c, 0xfe, 0x6c, 0xfe, 0x65, 0xfe, 0x65, 0xfe, + 0x5b, 0xfe, 0x5b, 0xfe, 0x57, 0xfe, 0x56, 0xfe, 0x54, 0xfe, 0x56, 0xfe, + 0x52, 0xfe, 0x51, 0xfe, 0x53, 0xfe, 0x54, 0xfe, 0x56, 0xfe, 0x57, 0xfe, + 0x5a, 0xfe, 0x59, 0xfe, 0x63, 0xfe, 0x66, 0xfe, 0x6c, 0xfe, 0x6a, 0xfe, + 0x77, 0xfe, 0x79, 0xfe, 0x86, 0xfe, 0x84, 0xfe, 0x92, 0xfe, 0x93, 0xfe, + 0xa8, 0xfe, 0xa7, 0xfe, 0xb6, 0xfe, 0xb7, 0xfe, 0xcd, 0xfe, 0xce, 0xfe, + 0xe3, 0xfe, 0xe3, 0xfe, 0xf9, 0xfe, 0xfa, 0xfe, 0x16, 0xff, 0x14, 0xff, + 0x2b, 0xff, 0x2c, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x64, 0xff, 0x66, 0xff, + 0x83, 0xff, 0x84, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0xc1, 0xff, 0xc1, 0xff, + 0xdf, 0xff, 0xe0, 0xff, 0x00, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x1f, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x60, 0x00, 0x60, 0x00, 0x80, 0x00, 0x81, 0x00, + 0x9f, 0x00, 0xa0, 0x00, 0xbd, 0x00, 0xbf, 0x00, 0xdd, 0x00, 0xde, 0x00, + 0xfb, 0x00, 0xfd, 0x00, 0x17, 0x01, 0x17, 0x01, 0x32, 0x01, 0x32, 0x01, + 0x4d, 0x01, 0x4f, 0x01, 0x66, 0x01, 0x66, 0x01, 0x7c, 0x01, 0x7e, 0x01, + 0x93, 0x01, 0x92, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0xbb, 0x01, 0xbb, 0x01, + 0xcb, 0x01, 0xcd, 0x01, 0xda, 0x01, 0xda, 0x01, 0xe4, 0x01, 0xe8, 0x01, + 0xf3, 0x01, 0xf2, 0x01, 0xfa, 0x01, 0xfb, 0x01, 0x03, 0x02, 0x03, 0x02, + 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x09, 0x02, 0x07, 0x02, 0x08, 0x02, + 0x06, 0x02, 0x07, 0x02, 0x03, 0x02, 0x03, 0x02, 0xfa, 0x01, 0xfc, 0x01, + 0xf4, 0x01, 0xf3, 0x01, 0xe9, 0x01, 0xeb, 0x01, 0xda, 0x01, 0xdb, 0x01, + 0xcf, 0x01, 0xce, 0x01, 0xbb, 0x01, 0xbc, 0x01, 0xaa, 0x01, 0xaa, 0x01, + 0x95, 0x01, 0x97, 0x01, 0x7f, 0x01, 0x7f, 0x01, 0x69, 0x01, 0x69, 0x01, + 0x4f, 0x01, 0x50, 0x01, 0x36, 0x01, 0x35, 0x01, 0x17, 0x01, 0x1a, 0x01, + 0xff, 0x00, 0xfd, 0x00, 0xde, 0x00, 0xe0, 0x00, 0xc1, 0x00, 0xc2, 0x00, + 0xa2, 0x00, 0xa2, 0x00, 0x82, 0x00, 0x82, 0x00, 0x64, 0x00, 0x65, 0x00, + 0x42, 0x00, 0x42, 0x00, 0x23, 0x00, 0x24, 0x00, 0x02, 0x00, 0x02, 0x00, + 0xe3, 0xff, 0xe4, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xa3, 0xff, 0xa4, 0xff, + 0x88, 0xff, 0x8a, 0xff, 0x6a, 0xff, 0x6a, 0xff, 0x4d, 0xff, 0x4d, 0xff, + 0x31, 0xff, 0x32, 0xff, 0x18, 0xff, 0x18, 0xff, 0x00, 0xff, 0x02, 0xff, + 0xe8, 0xfe, 0xe8, 0xfe, 0xd2, 0xfe, 0xd1, 0xfe, 0xbd, 0xfe, 0xbf, 0xfe, + 0xaa, 0xfe, 0xab, 0xfe, 0x9a, 0xfe, 0x9c, 0xfe, 0x8d, 0xfe, 0x8e, 0xfe, + 0x7e, 0xfe, 0x7e, 0xfe, 0x77, 0xfe, 0x76, 0xfe, 0x6c, 0xfe, 0x6d, 0xfe, + 0x67, 0xfe, 0x67, 0xfe, 0x64, 0xfe, 0x62, 0xfe, 0x61, 0xfe, 0x62, 0xfe, + 0x63, 0xfe, 0x62, 0xfe, 0x64, 0xfe, 0x64, 0xfe, 0x69, 0xfe, 0x6b, 0xfe, + 0x72, 0xfe, 0x71, 0xfe, 0x79, 0xfe, 0x7a, 0xfe, 0x86, 0xfe, 0x86, 0xfe, + 0x94, 0xfe, 0x92, 0xfe, 0xa1, 0xfe, 0xa4, 0xfe, 0xb6, 0xfe, 0xb4, 0xfe, + 0xc7, 0xfe, 0xc7, 0xfe, 0xdc, 0xfe, 0xdd, 0xfe, 0xf3, 0xfe, 0xf2, 0xfe, + 0x0b, 0xff, 0x0c, 0xff, 0x24, 0xff, 0x24, 0xff, 0x40, 0xff, 0x40, 0xff, + 0x5c, 0xff, 0x5d, 0xff, 0x78, 0xff, 0x7a, 0xff, 0x98, 0xff, 0x98, 0xff, + 0xb5, 0xff, 0xb7, 0xff, 0xd8, 0xff, 0xd9, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0x17, 0x00, 0x1a, 0x00, 0x38, 0x00, 0x39, 0x00, 0x58, 0x00, 0x58, 0x00, + 0x78, 0x00, 0x7a, 0x00, 0x97, 0x00, 0x97, 0x00, 0xb9, 0x00, 0xbb, 0x00, + 0xd7, 0x00, 0xd6, 0x00, 0xf6, 0x00, 0xf8, 0x00, 0x13, 0x01, 0x12, 0x01, + 0x2f, 0x01, 0x2f, 0x01, 0x4c, 0x01, 0x4c, 0x01, 0x65, 0x01, 0x64, 0x01, + 0x7d, 0x01, 0x7d, 0x01, 0x94, 0x01, 0x95, 0x01, 0xa9, 0x01, 0xa9, 0x01, + 0xbb, 0x01, 0xbd, 0x01, 0xcf, 0x01, 0xce, 0x01, 0xdd, 0x01, 0xdd, 0x01, + 0xeb, 0x01, 0xea, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xff, 0x01, 0xfe, 0x01, + 0x08, 0x02, 0x07, 0x02, 0x0b, 0x02, 0x09, 0x02, 0x0d, 0x02, 0x0f, 0x02, + 0x0e, 0x02, 0x0d, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x05, 0x02, 0x06, 0x02, + 0x00, 0x02, 0xff, 0x01, 0xf5, 0x01, 0xf6, 0x01, 0xea, 0x01, 0xea, 0x01, + 0xdc, 0x01, 0xdd, 0x01, 0xcc, 0x01, 0xcd, 0x01, 0xbb, 0x01, 0xba, 0x01, + 0xa8, 0x01, 0xa9, 0x01, 0x8f, 0x01, 0x91, 0x01, 0x7b, 0x01, 0x7a, 0x01, + 0x60, 0x01, 0x5f, 0x01, 0x43, 0x01, 0x45, 0x01, 0x2a, 0x01, 0x28, 0x01, + 0x08, 0x01, 0x0b, 0x01, 0xed, 0x00, 0xea, 0x00, 0xcb, 0x00, 0xcd, 0x00, + 0xaa, 0x00, 0xa8, 0x00, 0x88, 0x00, 0x8a, 0x00, 0x66, 0x00, 0x66, 0x00, + 0x42, 0x00, 0x40, 0x00, 0x21, 0x00, 0x23, 0x00, 0xfc, 0xff, 0xf9, 0xff, + 0xd9, 0xff, 0xda, 0xff, 0xb7, 0xff, 0xb6, 0xff, 0x92, 0xff, 0x91, 0xff, + 0x72, 0xff, 0x73, 0xff, 0x4d, 0xff, 0x4e, 0xff, 0x31, 0xff, 0x2e, 0xff, + 0x0f, 0xff, 0x0f, 0xff, 0xee, 0xfe, 0xee, 0xfe, 0xd4, 0xfe, 0xd4, 0xfe, + 0xb5, 0xfe, 0xb5, 0xfe, 0x9c, 0xfe, 0x9d, 0xfe, 0x81, 0xfe, 0x7f, 0xfe, + 0x6b, 0xfe, 0x6c, 0xfe, 0x56, 0xfe, 0x55, 0xfe, 0x40, 0xfe, 0x41, 0xfe, + 0x2f, 0xfe, 0x30, 0xfe, 0x20, 0xfe, 0x1f, 0xfe, 0x14, 0xfe, 0x16, 0xfe, + 0x08, 0xfe, 0x07, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0xfa, 0xfd, 0xf9, 0xfd, + 0xf6, 0xfd, 0xf5, 0xfd, 0xf4, 0xfd, 0xf3, 0xfd, 0xf5, 0xfd, 0xf5, 0xfd, + 0xf7, 0xfd, 0xf5, 0xfd, 0xfe, 0xfd, 0x00, 0xfe, 0x06, 0xfe, 0x04, 0xfe, + 0x10, 0xfe, 0x11, 0xfe, 0x1c, 0xfe, 0x1b, 0xfe, 0x2b, 0xfe, 0x2c, 0xfe, + 0x3e, 0xfe, 0x3c, 0xfe, 0x4e, 0xfe, 0x50, 0xfe, 0x66, 0xfe, 0x64, 0xfe, + 0x7a, 0xfe, 0x7a, 0xfe, 0x95, 0xfe, 0x96, 0xfe, 0xae, 0xfe, 0xae, 0xfe, + 0xc9, 0xfe, 0xc9, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, 0x04, 0xff, 0x04, 0xff, + 0x24, 0xff, 0x24, 0xff, 0x45, 0xff, 0x43, 0xff, 0x65, 0xff, 0x66, 0xff, + 0x87, 0xff, 0x86, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0xca, 0xff, 0xcb, 0xff, + 0xee, 0xff, 0xed, 0xff, 0x10, 0x00, 0x11, 0x00, 0x31, 0x00, 0x33, 0x00, + 0x53, 0x00, 0x52, 0x00, 0x74, 0x00, 0x75, 0x00, 0x98, 0x00, 0x96, 0x00, + 0xb4, 0x00, 0xb4, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xf1, 0x00, 0xf1, 0x00, + 0x0f, 0x01, 0x0e, 0x01, 0x28, 0x01, 0x28, 0x01, 0x42, 0x01, 0x43, 0x01, + 0x58, 0x01, 0x58, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0x82, 0x01, 0x81, 0x01, + 0x95, 0x01, 0x96, 0x01, 0xa6, 0x01, 0xa4, 0x01, 0xb0, 0x01, 0xb3, 0x01, + 0xbd, 0x01, 0xbd, 0x01, 0xc7, 0x01, 0xc5, 0x01, 0xcd, 0x01, 0xd0, 0x01, + 0xd1, 0x01, 0xd1, 0x01, 0xd4, 0x01, 0xd4, 0x01, 0xd2, 0x01, 0xd3, 0x01, + 0xd0, 0x01, 0xcf, 0x01, 0xca, 0x01, 0xcb, 0x01, 0xc4, 0x01, 0xc5, 0x01, + 0xb7, 0x01, 0xb8, 0x01, 0xac, 0x01, 0xad, 0x01, 0x9c, 0x01, 0x9c, 0x01, + 0x8b, 0x01, 0x8a, 0x01, 0x78, 0x01, 0x7a, 0x01, 0x60, 0x01, 0x5f, 0x01, + 0x4c, 0x01, 0x4d, 0x01, 0x30, 0x01, 0x31, 0x01, 0x17, 0x01, 0x16, 0x01, + 0xfa, 0x00, 0xfd, 0x00, 0xdb, 0x00, 0xdb, 0x00, 0xbe, 0x00, 0xbf, 0x00, + 0x9b, 0x00, 0x9c, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x56, 0x00, 0x59, 0x00, + 0x35, 0x00, 0x34, 0x00, 0x12, 0x00, 0x13, 0x00, 0xeb, 0xff, 0xec, 0xff, + 0xcb, 0xff, 0xcb, 0xff, 0xa3, 0xff, 0xa4, 0xff, 0x82, 0xff, 0x81, 0xff, + 0x5b, 0xff, 0x5c, 0xff, 0x38, 0xff, 0x37, 0xff, 0x13, 0xff, 0x15, 0xff, + 0xf2, 0xfe, 0xf2, 0xfe, 0xd1, 0xfe, 0xd3, 0xfe, 0xaf, 0xfe, 0xad, 0xfe, + 0x91, 0xfe, 0x92, 0xfe, 0x72, 0xfe, 0x73, 0xfe, 0x58, 0xfe, 0x55, 0xfe, + 0x3c, 0xfe, 0x3e, 0xfe, 0x23, 0xfe, 0x22, 0xfe, 0x0e, 0xfe, 0x10, 0xfe, + 0xf8, 0xfd, 0xf7, 0xfd, 0xe6, 0xfd, 0xe7, 0xfd, 0xd5, 0xfd, 0xd4, 0xfd, + 0xc7, 0xfd, 0xc8, 0xfd, 0xbb, 0xfd, 0xbd, 0xfd, 0xb3, 0xfd, 0xb1, 0xfd, + 0xac, 0xfd, 0xae, 0xfd, 0xa8, 0xfd, 0xa7, 0xfd, 0xa5, 0xfd, 0xa8, 0xfd, + 0xa7, 0xfd, 0xa7, 0xfd, 0xab, 0xfd, 0xab, 0xfd, 0xb0, 0xfd, 0xb1, 0xfd, + 0xba, 0xfd, 0xba, 0xfd, 0xc4, 0xfd, 0xc6, 0xfd, 0xd2, 0xfd, 0xd3, 0xfd, + 0xe2, 0xfd, 0xe2, 0xfd, 0xf2, 0xfd, 0xf4, 0xfd, 0x09, 0xfe, 0x08, 0xfe, + 0x1e, 0xfe, 0x20, 0xfe, 0x37, 0xfe, 0x36, 0xfe, 0x51, 0xfe, 0x53, 0xfe, + 0x6e, 0xfe, 0x6e, 0xfe, 0x8d, 0xfe, 0x8e, 0xfe, 0xac, 0xfe, 0xab, 0xfe, + 0xcd, 0xfe, 0xcd, 0xfe, 0xed, 0xfe, 0xee, 0xfe, 0x12, 0xff, 0x11, 0xff, + 0x34, 0xff, 0x34, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x7f, 0xff, 0x7e, 0xff, + 0xa5, 0xff, 0xa5, 0xff, 0xca, 0xff, 0xca, 0xff, 0xef, 0xff, 0xef, 0xff, + 0x17, 0x00, 0x16, 0x00, 0x3c, 0x00, 0x3b, 0x00, 0x61, 0x00, 0x61, 0x00, + 0x84, 0x00, 0x85, 0x00, 0xa8, 0x00, 0xa6, 0x00, 0xcb, 0x00, 0xcc, 0x00, + 0xed, 0x00, 0xea, 0x00, 0x0e, 0x01, 0x0e, 0x01, 0x2b, 0x01, 0x2a, 0x01, + 0x48, 0x01, 0x49, 0x01, 0x65, 0x01, 0x63, 0x01, 0x7e, 0x01, 0x7d, 0x01, + 0x97, 0x01, 0x97, 0x01, 0xab, 0x01, 0xaa, 0x01, 0xc0, 0x01, 0xc0, 0x01, + 0xce, 0x01, 0xce, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe8, 0x01, 0xeb, 0x01, + 0xf7, 0x01, 0xf4, 0x01, 0xfb, 0x01, 0xfd, 0x01, 0x02, 0x02, 0x00, 0x02, + 0x02, 0x02, 0x05, 0x02, 0x03, 0x02, 0x01, 0x02, 0x00, 0x02, 0x01, 0x02, + 0xfa, 0x01, 0xfa, 0x01, 0xf1, 0x01, 0xf0, 0x01, 0xe7, 0x01, 0xe9, 0x01, + 0xdb, 0x01, 0xda, 0x01, 0xcb, 0x01, 0xcd, 0x01, 0xbb, 0x01, 0xbb, 0x01, + 0xa5, 0x01, 0xa5, 0x01, 0x8f, 0x01, 0x91, 0x01, 0x78, 0x01, 0x77, 0x01, + 0x5e, 0x01, 0x60, 0x01, 0x43, 0x01, 0x43, 0x01, 0x24, 0x01, 0x25, 0x01, + 0x07, 0x01, 0x05, 0x01, 0xe4, 0x00, 0xe6, 0x00, 0xc4, 0x00, 0xc3, 0x00, + 0x9f, 0x00, 0x9f, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x57, 0x00, 0x5b, 0x00, + 0x36, 0x00, 0x34, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0xeb, 0xff, 0xea, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xa0, 0xff, 0x9f, 0xff, 0x7d, 0xff, 0x7d, 0xff, + 0x56, 0xff, 0x56, 0xff, 0x34, 0xff, 0x34, 0xff, 0x12, 0xff, 0x12, 0xff, + 0xf0, 0xfe, 0xef, 0xfe, 0xd0, 0xfe, 0xd0, 0xfe, 0xae, 0xfe, 0xb0, 0xfe, + 0x95, 0xfe, 0x93, 0xfe, 0x75, 0xfe, 0x77, 0xfe, 0x5f, 0xfe, 0x5e, 0xfe, + 0x45, 0xfe, 0x45, 0xfe, 0x2e, 0xfe, 0x30, 0xfe, 0x1d, 0xfe, 0x1c, 0xfe, + 0x0a, 0xfe, 0x0a, 0xfe, 0xfc, 0xfd, 0xfb, 0xfd, 0xef, 0xfd, 0xf0, 0xfd, + 0xe5, 0xfd, 0xe4, 0xfd, 0xde, 0xfd, 0xdd, 0xfd, 0xd8, 0xfd, 0xd8, 0xfd, + 0xd7, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, 0xd6, 0xfd, 0xda, 0xfd, 0xd9, 0xfd, + 0xdc, 0xfd, 0xde, 0xfd, 0xe6, 0xfd, 0xe5, 0xfd, 0xf3, 0xfd, 0xf2, 0xfd, + 0xfc, 0xfd, 0xfe, 0xfd, 0x10, 0xfe, 0x0f, 0xfe, 0x20, 0xfe, 0x21, 0xfe, + 0x36, 0xfe, 0x36, 0xfe, 0x4f, 0xfe, 0x4d, 0xfe, 0x67, 0xfe, 0x68, 0xfe, + 0x83, 0xfe, 0x82, 0xfe, 0xa0, 0xfe, 0xa0, 0xfe, 0xbc, 0xfe, 0xbc, 0xfe, + 0xdf, 0xfe, 0xe0, 0xfe, 0x01, 0xff, 0x01, 0xff, 0x25, 0xff, 0x26, 0xff, + 0x4b, 0xff, 0x4a, 0xff, 0x70, 0xff, 0x6f, 0xff, 0x96, 0xff, 0x97, 0xff, + 0xbf, 0xff, 0xbe, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0x0e, 0x00, 0x0e, 0x00, + 0x38, 0x00, 0x34, 0x00, 0x5d, 0x00, 0x60, 0x00, 0x87, 0x00, 0x84, 0x00, + 0xae, 0x00, 0xae, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xfa, 0x00, 0xf9, 0x00, + 0x1f, 0x01, 0x21, 0x01, 0x43, 0x01, 0x42, 0x01, 0x67, 0x01, 0x66, 0x01, + 0x88, 0x01, 0x88, 0x01, 0xa7, 0x01, 0xa7, 0x01, 0xc6, 0x01, 0xc5, 0x01, + 0xe0, 0x01, 0xe1, 0x01, 0xfc, 0x01, 0xfd, 0x01, 0x13, 0x02, 0x14, 0x02, + 0x29, 0x02, 0x28, 0x02, 0x3a, 0x02, 0x3d, 0x02, 0x4f, 0x02, 0x4e, 0x02, + 0x5b, 0x02, 0x5d, 0x02, 0x65, 0x02, 0x64, 0x02, 0x71, 0x02, 0x72, 0x02, + 0x74, 0x02, 0x75, 0x02, 0x7a, 0x02, 0x7b, 0x02, 0x7a, 0x02, 0x7a, 0x02, + 0x75, 0x02, 0x78, 0x02, 0x74, 0x02, 0x72, 0x02, 0x69, 0x02, 0x6c, 0x02, + 0x63, 0x02, 0x61, 0x02, 0x54, 0x02, 0x54, 0x02, 0x45, 0x02, 0x48, 0x02, + 0x33, 0x02, 0x33, 0x02, 0x1d, 0x02, 0x1f, 0x02, 0x09, 0x02, 0x07, 0x02, + 0xef, 0x01, 0xef, 0x01, 0xd2, 0x01, 0xd5, 0x01, 0xb8, 0x01, 0xb6, 0x01, + 0x97, 0x01, 0x98, 0x01, 0x77, 0x01, 0x79, 0x01, 0x57, 0x01, 0x55, 0x01, + 0x31, 0x01, 0x31, 0x01, 0x0c, 0x01, 0x0f, 0x01, 0xea, 0x00, 0xe6, 0x00, + 0xc1, 0x00, 0xc3, 0x00, 0x9c, 0x00, 0x9b, 0x00, 0x72, 0x00, 0x73, 0x00, + 0x4b, 0x00, 0x4b, 0x00, 0x23, 0x00, 0x22, 0x00, 0xf9, 0xff, 0xfb, 0xff, + 0xd5, 0xff, 0xd5, 0xff, 0xab, 0xff, 0xaa, 0xff, 0x87, 0xff, 0x86, 0xff, + 0x5f, 0xff, 0x61, 0xff, 0x3c, 0xff, 0x3a, 0xff, 0x18, 0xff, 0x1a, 0xff, + 0xf6, 0xfe, 0xf3, 0xfe, 0xd4, 0xfe, 0xd6, 0xfe, 0xb4, 0xfe, 0xb5, 0xfe, + 0x98, 0xfe, 0x98, 0xfe, 0x7e, 0xfe, 0x7e, 0xfe, 0x62, 0xfe, 0x63, 0xfe, + 0x4b, 0xfe, 0x4c, 0xfe, 0x37, 0xfe, 0x37, 0xfe, 0x23, 0xfe, 0x25, 0xfe, + 0x16, 0xfe, 0x14, 0xfe, 0x07, 0xfe, 0x0a, 0xfe, 0xfe, 0xfd, 0xfd, 0xfd, + 0xf5, 0xfd, 0xf5, 0xfd, 0xf0, 0xfd, 0xf1, 0xfd, 0xee, 0xfd, 0xee, 0xfd, + 0xed, 0xfd, 0xec, 0xfd, 0xf1, 0xfd, 0xf2, 0xfd, 0xf7, 0xfd, 0xf5, 0xfd, + 0x00, 0xfe, 0x00, 0xfe, 0x0a, 0xfe, 0x0a, 0xfe, 0x1a, 0xfe, 0x19, 0xfe, + 0x29, 0xfe, 0x2b, 0xfe, 0x3d, 0xfe, 0x3d, 0xfe, 0x52, 0xfe, 0x50, 0xfe, + 0x69, 0xfe, 0x6a, 0xfe, 0x86, 0xfe, 0x86, 0xfe, 0x9e, 0xfe, 0x9f, 0xfe, + 0xc1, 0xfe, 0xc0, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, 0x01, 0xff, 0x00, 0xff, + 0x22, 0xff, 0x24, 0xff, 0x46, 0xff, 0x45, 0xff, 0x6e, 0xff, 0x6f, 0xff, + 0x92, 0xff, 0x91, 0xff, 0xbd, 0xff, 0xbc, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0x0c, 0x00, 0x0b, 0x00, 0x36, 0x00, 0x37, 0x00, 0x5c, 0x00, 0x5c, 0x00, + 0x88, 0x00, 0x87, 0x00, 0xad, 0x00, 0xac, 0x00, 0xd5, 0x00, 0xd6, 0x00, + 0xff, 0x00, 0xfd, 0x00, 0x20, 0x01, 0x21, 0x01, 0x4a, 0x01, 0x4a, 0x01, + 0x6a, 0x01, 0x69, 0x01, 0x8e, 0x01, 0x90, 0x01, 0xb0, 0x01, 0xad, 0x01, + 0xcc, 0x01, 0xcc, 0x01, 0xed, 0x01, 0xec, 0x01, 0x03, 0x02, 0x02, 0x02, + 0x1f, 0x02, 0x1f, 0x02, 0x33, 0x02, 0x33, 0x02, 0x49, 0x02, 0x47, 0x02, + 0x59, 0x02, 0x5a, 0x02, 0x67, 0x02, 0x65, 0x02, 0x75, 0x02, 0x75, 0x02, + 0x7c, 0x02, 0x7c, 0x02, 0x86, 0x02, 0x85, 0x02, 0x88, 0x02, 0x89, 0x02, + 0x89, 0x02, 0x87, 0x02, 0x87, 0x02, 0x87, 0x02, 0x82, 0x02, 0x81, 0x02, + 0x7a, 0x02, 0x7b, 0x02, 0x70, 0x02, 0x6e, 0x02, 0x60, 0x02, 0x60, 0x02, + 0x53, 0x02, 0x50, 0x02, 0x3c, 0x02, 0x3d, 0x02, 0x29, 0x02, 0x27, 0x02, + 0x13, 0x02, 0x12, 0x02, 0xf5, 0x01, 0xf5, 0x01, 0xdb, 0x01, 0xda, 0x01, + 0xbb, 0x01, 0xbc, 0x01, 0x9b, 0x01, 0x9a, 0x01, 0x7a, 0x01, 0x79, 0x01, + 0x51, 0x01, 0x54, 0x01, 0x2f, 0x01, 0x2e, 0x01, 0x05, 0x01, 0x08, 0x01, + 0xdf, 0x00, 0xdd, 0x00, 0xb6, 0x00, 0xb8, 0x00, 0x8a, 0x00, 0x89, 0x00, + 0x61, 0x00, 0x61, 0x00, 0x36, 0x00, 0x34, 0x00, 0x0a, 0x00, 0x0b, 0x00, + 0xe1, 0xff, 0xe0, 0xff, 0xb3, 0xff, 0xb5, 0xff, 0x8c, 0xff, 0x89, 0xff, + 0x5e, 0xff, 0x5e, 0xff, 0x38, 0xff, 0x37, 0xff, 0x0d, 0xff, 0x0e, 0xff, + 0xe7, 0xfe, 0xe5, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0x9d, 0xfe, 0x9b, 0xfe, + 0x7a, 0xfe, 0x79, 0xfe, 0x5a, 0xfe, 0x59, 0xfe, 0x3a, 0xfe, 0x39, 0xfe, + 0x1c, 0xfe, 0x1c, 0xfe, 0x02, 0xfe, 0x02, 0xfe, 0xec, 0xfd, 0xe9, 0xfd, + 0xd4, 0xfd, 0xd3, 0xfd, 0xc1, 0xfd, 0xc1, 0xfd, 0xb2, 0xfd, 0xb0, 0xfd, + 0xa3, 0xfd, 0xa3, 0xfd, 0x99, 0xfd, 0x97, 0xfd, 0x91, 0xfd, 0x90, 0xfd, + 0x8b, 0xfd, 0x8b, 0xfd, 0x89, 0xfd, 0x89, 0xfd, 0x8a, 0xfd, 0x8a, 0xfd, + 0x90, 0xfd, 0x8e, 0xfd, 0x95, 0xfd, 0x95, 0xfd, 0x9f, 0xfd, 0x9e, 0xfd, + 0xab, 0xfd, 0xac, 0xfd, 0xb9, 0xfd, 0xb8, 0xfd, 0xcd, 0xfd, 0xcc, 0xfd, + 0xdf, 0xfd, 0xdf, 0xfd, 0xf9, 0xfd, 0xf8, 0xfd, 0x11, 0xfe, 0x10, 0xfe, + 0x2d, 0xfe, 0x2d, 0xfe, 0x4b, 0xfe, 0x4b, 0xfe, 0x6a, 0xfe, 0x69, 0xfe, + 0x8d, 0xfe, 0x8d, 0xfe, 0xb0, 0xfe, 0xaf, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, + 0xfa, 0xfe, 0xfc, 0xfe, 0x24, 0xff, 0x23, 0xff, 0x4b, 0xff, 0x4b, 0xff, + 0x73, 0xff, 0x74, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xc8, 0xff, 0xc9, 0xff, + 0xf2, 0xff, 0xf1, 0xff, 0x1d, 0x00, 0x1d, 0x00, 0x43, 0x00, 0x44, 0x00, + 0x70, 0x00, 0x70, 0x00, 0x99, 0x00, 0x98, 0x00, 0xc0, 0x00, 0xbf, 0x00, + 0xe8, 0x00, 0xe9, 0x00, 0x0d, 0x01, 0x0c, 0x01, 0x33, 0x01, 0x34, 0x01, + 0x55, 0x01, 0x53, 0x01, 0x75, 0x01, 0x75, 0x01, 0x97, 0x01, 0x97, 0x01, + 0xb1, 0x01, 0xb2, 0x01, 0xcf, 0x01, 0xce, 0x01, 0xe4, 0x01, 0xe5, 0x01, + 0xfa, 0x01, 0xfa, 0x01, 0x11, 0x02, 0x11, 0x02, 0x1e, 0x02, 0x1d, 0x02, + 0x31, 0x02, 0x30, 0x02, 0x38, 0x02, 0x38, 0x02, 0x42, 0x02, 0x43, 0x02, + 0x4a, 0x02, 0x49, 0x02, 0x48, 0x02, 0x49, 0x02, 0x4e, 0x02, 0x4b, 0x02, + 0x44, 0x02, 0x47, 0x02, 0x42, 0x02, 0x40, 0x02, 0x37, 0x02, 0x38, 0x02, + 0x2a, 0x02, 0x2a, 0x02, 0x1e, 0x02, 0x1e, 0x02, 0x09, 0x02, 0x0a, 0x02, + 0xf5, 0x01, 0xf6, 0x01, 0xe0, 0x01, 0xdd, 0x01, 0xc4, 0x01, 0xc5, 0x01, + 0xa9, 0x01, 0xab, 0x01, 0x8a, 0x01, 0x87, 0x01, 0x6a, 0x01, 0x6c, 0x01, + 0x48, 0x01, 0x46, 0x01, 0x22, 0x01, 0x24, 0x01, 0xfc, 0x00, 0xfc, 0x00, + 0xd3, 0x00, 0xd4, 0x00, 0xae, 0x00, 0xad, 0x00, 0x80, 0x00, 0x81, 0x00, + 0x58, 0x00, 0x59, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xd3, 0xff, 0xd4, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0x7c, 0xff, 0x7c, 0xff, + 0x4f, 0xff, 0x4f, 0xff, 0x21, 0xff, 0x23, 0xff, 0xfa, 0xfe, 0xf7, 0xfe, + 0xcf, 0xfe, 0xcf, 0xfe, 0xa4, 0xfe, 0xa5, 0xfe, 0x80, 0xfe, 0x7f, 0xfe, + 0x56, 0xfe, 0x58, 0xfe, 0x35, 0xfe, 0x33, 0xfe, 0x11, 0xfe, 0x12, 0xfe, + 0xef, 0xfd, 0xf0, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, 0xb4, 0xfd, 0xb6, 0xfd, + 0x9e, 0xfd, 0x9c, 0xfd, 0x85, 0xfd, 0x86, 0xfd, 0x70, 0xfd, 0x71, 0xfd, + 0x61, 0xfd, 0x61, 0xfd, 0x50, 0xfd, 0x50, 0xfd, 0x46, 0xfd, 0x46, 0xfd, + 0x3c, 0xfd, 0x3c, 0xfd, 0x36, 0xfd, 0x37, 0xfd, 0x35, 0xfd, 0x35, 0xfd, + 0x34, 0xfd, 0x35, 0xfd, 0x3a, 0xfd, 0x39, 0xfd, 0x40, 0xfd, 0x40, 0xfd, + 0x4a, 0xfd, 0x49, 0xfd, 0x57, 0xfd, 0x57, 0xfd, 0x66, 0xfd, 0x67, 0xfd, + 0x79, 0xfd, 0x78, 0xfd, 0x8f, 0xfd, 0x90, 0xfd, 0xa6, 0xfd, 0xa6, 0xfd, + 0xc2, 0xfd, 0xc0, 0xfd, 0xdd, 0xfd, 0xdf, 0xfd, 0xfd, 0xfd, 0xfb, 0xfd, + 0x20, 0xfe, 0x22, 0xfe, 0x44, 0xfe, 0x43, 0xfe, 0x69, 0xfe, 0x69, 0xfe, + 0x91, 0xfe, 0x91, 0xfe, 0xb7, 0xfe, 0xb7, 0xfe, 0xe5, 0xfe, 0xe3, 0xfe, + 0x0b, 0xff, 0x0e, 0xff, 0x3d, 0xff, 0x3a, 0xff, 0x65, 0xff, 0x66, 0xff, + 0x94, 0xff, 0x94, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xef, 0xff, 0xee, 0xff, + 0x1e, 0x00, 0x1e, 0x00, 0x49, 0x00, 0x49, 0x00, 0x76, 0x00, 0x77, 0x00, + 0xa2, 0x00, 0xa0, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xf7, 0x00, 0xf6, 0x00, + 0x1e, 0x01, 0x1d, 0x01, 0x45, 0x01, 0x44, 0x01, 0x6a, 0x01, 0x69, 0x01, + 0x8c, 0x01, 0x8d, 0x01, 0xaf, 0x01, 0xaf, 0x01, 0xce, 0x01, 0xcc, 0x01, + 0xea, 0x01, 0xea, 0x01, 0x05, 0x02, 0x05, 0x02, 0x1b, 0x02, 0x1a, 0x02, + 0x31, 0x02, 0x31, 0x02, 0x41, 0x02, 0x41, 0x02, 0x50, 0x02, 0x51, 0x02, + 0x5e, 0x02, 0x5d, 0x02, 0x65, 0x02, 0x66, 0x02, 0x6d, 0x02, 0x6c, 0x02, + 0x6d, 0x02, 0x6f, 0x02, 0x70, 0x02, 0x6f, 0x02, 0x68, 0x02, 0x6a, 0x02, + 0x65, 0x02, 0x65, 0x02, 0x5a, 0x02, 0x5c, 0x02, 0x4e, 0x02, 0x4d, 0x02, + 0x3e, 0x02, 0x40, 0x02, 0x2c, 0x02, 0x2c, 0x02, 0x15, 0x02, 0x19, 0x02, + 0x00, 0x02, 0xfd, 0x01, 0xe3, 0x01, 0xe6, 0x01, 0xc5, 0x01, 0xc5, 0x01, + 0xa7, 0x01, 0xa7, 0x01, 0x86, 0x01, 0x87, 0x01, 0x62, 0x01, 0x61, 0x01, + 0x3d, 0x01, 0x3e, 0x01, 0x13, 0x01, 0x14, 0x01, 0xed, 0x00, 0xed, 0x00, + 0xc2, 0x00, 0xc3, 0x00, 0x97, 0x00, 0x98, 0x00, 0x6c, 0x00, 0x6c, 0x00, + 0x3f, 0x00, 0x40, 0x00, 0x12, 0x00, 0x12, 0x00, 0xe4, 0xff, 0xe6, 0xff, + 0xb9, 0xff, 0xb9, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x60, 0xff, 0x61, 0xff, + 0x34, 0xff, 0x35, 0xff, 0x09, 0xff, 0x09, 0xff, 0xe1, 0xfe, 0xe0, 0xfe, + 0xb5, 0xfe, 0xb6, 0xfe, 0x91, 0xfe, 0x90, 0xfe, 0x68, 0xfe, 0x68, 0xfe, + 0x46, 0xfe, 0x46, 0xfe, 0x24, 0xfe, 0x24, 0xfe, 0x03, 0xfe, 0x03, 0xfe, + 0xe8, 0xfd, 0xe8, 0xfd, 0xcb, 0xfd, 0xcb, 0xfd, 0xb5, 0xfd, 0xb6, 0xfd, + 0x9d, 0xfd, 0x9e, 0xfd, 0x8e, 0xfd, 0x8e, 0xfd, 0x7b, 0xfd, 0x7d, 0xfd, + 0x70, 0xfd, 0x6f, 0xfd, 0x66, 0xfd, 0x69, 0xfd, 0x60, 0xfd, 0x5e, 0xfd, + 0x5c, 0xfd, 0x5e, 0xfd, 0x5b, 0xfd, 0x5c, 0xfd, 0x60, 0xfd, 0x60, 0xfd, + 0x65, 0xfd, 0x66, 0xfd, 0x6f, 0xfd, 0x6f, 0xfd, 0x7c, 0xfd, 0x7c, 0xfd, + 0x8b, 0xfd, 0x8b, 0xfd, 0x9e, 0xfd, 0x9e, 0xfd, 0xb4, 0xfd, 0xb4, 0xfd, + 0xcc, 0xfd, 0xcb, 0xfd, 0xe9, 0xfd, 0xe9, 0xfd, 0x05, 0xfe, 0x04, 0xfe, + 0x26, 0xfe, 0x26, 0xfe, 0x48, 0xfe, 0x46, 0xfe, 0x6d, 0xfe, 0x6f, 0xfe, + 0x95, 0xfe, 0x92, 0xfe, 0xbb, 0xfe, 0xbc, 0xfe, 0xea, 0xfe, 0xe9, 0xfe, + 0x10, 0xff, 0x11, 0xff, 0x44, 0xff, 0x41, 0xff, 0x6a, 0xff, 0x6b, 0xff, + 0x9f, 0xff, 0x9f, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0x2e, 0x00, 0x2d, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x90, 0x00, 0x8d, 0x00, + 0xb8, 0x00, 0xb9, 0x00, 0xeb, 0x00, 0xea, 0x00, 0x17, 0x01, 0x16, 0x01, + 0x43, 0x01, 0x42, 0x01, 0x6f, 0x01, 0x70, 0x01, 0x97, 0x01, 0x97, 0x01, + 0xc2, 0x01, 0xc1, 0x01, 0xe5, 0x01, 0xe5, 0x01, 0x0d, 0x02, 0x0a, 0x02, + 0x2b, 0x02, 0x2c, 0x02, 0x4a, 0x02, 0x49, 0x02, 0x69, 0x02, 0x69, 0x02, + 0x81, 0x02, 0x81, 0x02, 0x9a, 0x02, 0x9a, 0x02, 0xae, 0x02, 0xab, 0x02, + 0xbd, 0x02, 0xc1, 0x02, 0xce, 0x02, 0xcb, 0x02, 0xd6, 0x02, 0xd8, 0x02, + 0xe0, 0x02, 0xdf, 0x02, 0xe3, 0x02, 0xe1, 0x02, 0xe5, 0x02, 0xe6, 0x02, + 0xe1, 0x02, 0xde, 0x02, 0xdd, 0x02, 0xdf, 0x02, 0xd4, 0x02, 0xd2, 0x02, + 0xc9, 0x02, 0xca, 0x02, 0xb9, 0x02, 0xb9, 0x02, 0xa8, 0x02, 0xa8, 0x02, + 0x93, 0x02, 0x92, 0x02, 0x79, 0x02, 0x7a, 0x02, 0x61, 0x02, 0x61, 0x02, + 0x42, 0x02, 0x41, 0x02, 0x22, 0x02, 0x23, 0x02, 0xff, 0x01, 0xfe, 0x01, + 0xdc, 0x01, 0xdc, 0x01, 0xb6, 0x01, 0xb5, 0x01, 0x8c, 0x01, 0x89, 0x01, + 0x62, 0x01, 0x64, 0x01, 0x37, 0x01, 0x35, 0x01, 0x0a, 0x01, 0x0a, 0x01, + 0xdb, 0x00, 0xda, 0x00, 0xaf, 0x00, 0xad, 0x00, 0x7e, 0x00, 0x7e, 0x00, + 0x4f, 0x00, 0x4e, 0x00, 0x21, 0x00, 0x1f, 0x00, 0xee, 0xff, 0xf0, 0xff, + 0xc4, 0xff, 0xc0, 0xff, 0x92, 0xff, 0x93, 0xff, 0x65, 0xff, 0x64, 0xff, + 0x39, 0xff, 0x36, 0xff, 0x0b, 0xff, 0x0b, 0xff, 0xe2, 0xfe, 0xe1, 0xfe, + 0xba, 0xfe, 0xb8, 0xfe, 0x92, 0xfe, 0x91, 0xfe, 0x6e, 0xfe, 0x6e, 0xfe, + 0x49, 0xfe, 0x49, 0xfe, 0x2b, 0xfe, 0x28, 0xfe, 0x0b, 0xfe, 0x0a, 0xfe, + 0xf1, 0xfd, 0xf0, 0xfd, 0xd6, 0xfd, 0xd5, 0xfd, 0xc0, 0xfd, 0xbf, 0xfd, + 0xae, 0xfd, 0xae, 0xfd, 0x9e, 0xfd, 0x9e, 0xfd, 0x92, 0xfd, 0x92, 0xfd, + 0x88, 0xfd, 0x86, 0xfd, 0x81, 0xfd, 0x80, 0xfd, 0x7f, 0xfd, 0x7e, 0xfd, + 0x7e, 0xfd, 0x7e, 0xfd, 0x83, 0xfd, 0x82, 0xfd, 0x88, 0xfd, 0x87, 0xfd, + 0x92, 0xfd, 0x94, 0xfd, 0xa2, 0xfd, 0xa0, 0xfd, 0xb0, 0xfd, 0xb0, 0xfd, + 0xc6, 0xfd, 0xc4, 0xfd, 0xda, 0xfd, 0xdc, 0xfd, 0xf5, 0xfd, 0xf3, 0xfd, + 0x0f, 0xfe, 0x10, 0xfe, 0x31, 0xfe, 0x30, 0xfe, 0x52, 0xfe, 0x53, 0xfe, + 0x74, 0xfe, 0x75, 0xfe, 0x9d, 0xfe, 0x9c, 0xfe, 0xc2, 0xfe, 0xc3, 0xfe, + 0xee, 0xfe, 0xee, 0xfe, 0x17, 0xff, 0x18, 0xff, 0x45, 0xff, 0x45, 0xff, + 0x73, 0xff, 0x74, 0xff, 0xa1, 0xff, 0xa2, 0xff, 0xd3, 0xff, 0xd2, 0xff, + 0x02, 0x00, 0x03, 0x00, 0x33, 0x00, 0x33, 0x00, 0x63, 0x00, 0x61, 0x00, + 0x93, 0x00, 0x94, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0xf3, 0x00, 0xf3, 0x00, + 0x22, 0x01, 0x22, 0x01, 0x4f, 0x01, 0x4d, 0x01, 0x7a, 0x01, 0x7d, 0x01, + 0xa4, 0x01, 0xa4, 0x01, 0xcd, 0x01, 0xcf, 0x01, 0xf7, 0x01, 0xf7, 0x01, + 0x18, 0x02, 0x18, 0x02, 0x3f, 0x02, 0x41, 0x02, 0x5c, 0x02, 0x5b, 0x02, + 0x7c, 0x02, 0x7d, 0x02, 0x97, 0x02, 0x97, 0x02, 0xad, 0x02, 0xad, 0x02, + 0xc3, 0x02, 0xc6, 0x02, 0xd4, 0x02, 0xd4, 0x02, 0xe4, 0x02, 0xe4, 0x02, + 0xef, 0x02, 0xf1, 0x02, 0xf8, 0x02, 0xf8, 0x02, 0xfd, 0x02, 0xfe, 0x02, + 0xfe, 0x02, 0xff, 0x02, 0xfc, 0x02, 0xfb, 0x02, 0xf6, 0x02, 0xfa, 0x02, + 0xee, 0x02, 0xec, 0x02, 0xe1, 0x02, 0xe3, 0x02, 0xd2, 0x02, 0xd3, 0x02, + 0xc1, 0x02, 0xbf, 0x02, 0xa8, 0x02, 0xab, 0x02, 0x91, 0x02, 0x8f, 0x02, + 0x75, 0x02, 0x76, 0x02, 0x56, 0x02, 0x58, 0x02, 0x35, 0x02, 0x35, 0x02, + 0x12, 0x02, 0x13, 0x02, 0xe9, 0x01, 0xea, 0x01, 0xc3, 0x01, 0xc2, 0x01, + 0x97, 0x01, 0x9a, 0x01, 0x6a, 0x01, 0x69, 0x01, 0x3f, 0x01, 0x41, 0x01, + 0x0d, 0x01, 0x0d, 0x01, 0xdf, 0x00, 0xdf, 0x00, 0xab, 0x00, 0xac, 0x00, + 0x7b, 0x00, 0x7b, 0x00, 0x48, 0x00, 0x49, 0x00, 0x14, 0x00, 0x14, 0x00, + 0xe3, 0xff, 0xe4, 0xff, 0xb0, 0xff, 0xae, 0xff, 0x7e, 0xff, 0x80, 0xff, + 0x4b, 0xff, 0x4b, 0xff, 0x1b, 0xff, 0x1c, 0xff, 0xec, 0xfe, 0xec, 0xfe, + 0xba, 0xfe, 0xba, 0xfe, 0x91, 0xfe, 0x92, 0xfe, 0x65, 0xfe, 0x65, 0xfe, + 0x3c, 0xfe, 0x3d, 0xfe, 0x16, 0xfe, 0x17, 0xfe, 0xf1, 0xfd, 0xf2, 0xfd, + 0xd1, 0xfd, 0xd1, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0x94, 0xfd, 0x96, 0xfd, + 0x7b, 0xfd, 0x7a, 0xfd, 0x63, 0xfd, 0x64, 0xfd, 0x52, 0xfd, 0x50, 0xfd, + 0x3f, 0xfd, 0x42, 0xfd, 0x36, 0xfd, 0x34, 0xfd, 0x2a, 0xfd, 0x2b, 0xfd, + 0x24, 0xfd, 0x25, 0xfd, 0x23, 0xfd, 0x22, 0xfd, 0x22, 0xfd, 0x22, 0xfd, + 0x29, 0xfd, 0x27, 0xfd, 0x2e, 0xfd, 0x2f, 0xfd, 0x3a, 0xfd, 0x3b, 0xfd, + 0x4a, 0xfd, 0x4a, 0xfd, 0x5b, 0xfd, 0x5a, 0xfd, 0x71, 0xfd, 0x73, 0xfd, + 0x89, 0xfd, 0x86, 0xfd, 0xa4, 0xfd, 0xa6, 0xfd, 0xc2, 0xfd, 0xc2, 0xfd, + 0xe3, 0xfd, 0xe2, 0xfd, 0x07, 0xfe, 0x07, 0xfe, 0x2c, 0xfe, 0x2b, 0xfe, + 0x54, 0xfe, 0x55, 0xfe, 0x7f, 0xfe, 0x7e, 0xfe, 0xaa, 0xfe, 0xab, 0xfe, + 0xd6, 0xfe, 0xd6, 0xfe, 0x07, 0xff, 0x06, 0xff, 0x33, 0xff, 0x33, 0xff, + 0x66, 0xff, 0x67, 0xff, 0x97, 0xff, 0x96, 0xff, 0xc7, 0xff, 0xc9, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0x2b, 0x00, 0x2b, 0x00, 0x5e, 0x00, 0x5e, 0x00, + 0x8d, 0x00, 0x8d, 0x00, 0xbf, 0x00, 0xbf, 0x00, 0xef, 0x00, 0xee, 0x00, + 0x1c, 0x01, 0x1d, 0x01, 0x4a, 0x01, 0x48, 0x01, 0x74, 0x01, 0x74, 0x01, + 0x9f, 0x01, 0x9d, 0x01, 0xc2, 0x01, 0xc3, 0x01, 0xeb, 0x01, 0xe9, 0x01, + 0x0c, 0x02, 0x09, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x49, 0x02, 0x48, 0x02, + 0x62, 0x02, 0x61, 0x02, 0x7a, 0x02, 0x7a, 0x02, 0x90, 0x02, 0x8e, 0x02, + 0xa0, 0x02, 0xa1, 0x02, 0xac, 0x02, 0xac, 0x02, 0xb8, 0x02, 0xb8, 0x02, + 0xbe, 0x02, 0xbd, 0x02, 0xc2, 0x02, 0xc3, 0x02, 0xc2, 0x02, 0xc0, 0x02, + 0xbc, 0x02, 0xbe, 0x02, 0xb8, 0x02, 0xb5, 0x02, 0xab, 0x02, 0xad, 0x02, + 0x9d, 0x02, 0x9d, 0x02, 0x8c, 0x02, 0x8c, 0x02, 0x77, 0x02, 0x77, 0x02, + 0x5f, 0x02, 0x5f, 0x02, 0x43, 0x02, 0x45, 0x02, 0x26, 0x02, 0x26, 0x02, + 0x04, 0x02, 0x04, 0x02, 0xe1, 0x01, 0xe0, 0x01, 0xba, 0x01, 0xbc, 0x01, + 0x91, 0x01, 0x92, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x38, 0x01, 0x39, 0x01, + 0x0e, 0x01, 0x0d, 0x01, 0xdb, 0x00, 0xdd, 0x00, 0xa9, 0x00, 0xaa, 0x00, + 0x79, 0x00, 0x78, 0x00, 0x42, 0x00, 0x44, 0x00, 0x13, 0x00, 0x12, 0x00, + 0xdb, 0xff, 0xdd, 0xff, 0xa9, 0xff, 0xa8, 0xff, 0x73, 0xff, 0x75, 0xff, + 0x42, 0xff, 0x40, 0xff, 0x0d, 0xff, 0x0f, 0xff, 0xdb, 0xfe, 0xdb, 0xfe, + 0xaa, 0xfe, 0xa9, 0xfe, 0x79, 0xfe, 0x7a, 0xfe, 0x4b, 0xfe, 0x4a, 0xfe, + 0x1d, 0xfe, 0x1f, 0xfe, 0xf5, 0xfd, 0xf2, 0xfd, 0xc9, 0xfd, 0xcb, 0xfd, + 0xa4, 0xfd, 0xa4, 0xfd, 0x82, 0xfd, 0x80, 0xfd, 0x5e, 0xfd, 0x5f, 0xfd, + 0x43, 0xfd, 0x42, 0xfd, 0x27, 0xfd, 0x26, 0xfd, 0x0f, 0xfd, 0x0d, 0xfd, + 0xf9, 0xfc, 0xfc, 0xfc, 0xe9, 0xfc, 0xe5, 0xfc, 0xda, 0xfc, 0xdb, 0xfc, + 0xd0, 0xfc, 0xcf, 0xfc, 0xc9, 0xfc, 0xc8, 0xfc, 0xc6, 0xfc, 0xc7, 0xfc, + 0xc7, 0xfc, 0xc6, 0xfc, 0xc9, 0xfc, 0xc9, 0xfc, 0xd1, 0xfc, 0xd2, 0xfc, + 0xdd, 0xfc, 0xdb, 0xfc, 0xeb, 0xfc, 0xed, 0xfc, 0xfe, 0xfc, 0xfc, 0xfc, + 0x12, 0xfd, 0x15, 0xfd, 0x2d, 0xfd, 0x2b, 0xfd, 0x48, 0xfd, 0x4a, 0xfd, + 0x67, 0xfd, 0x67, 0xfd, 0x89, 0xfd, 0x89, 0xfd, 0xae, 0xfd, 0xae, 0xfd, + 0xd5, 0xfd, 0xd5, 0xfd, 0xfe, 0xfd, 0xff, 0xfd, 0x2a, 0xfe, 0x2a, 0xfe, + 0x58, 0xfe, 0x57, 0xfe, 0x86, 0xfe, 0x88, 0xfe, 0xb9, 0xfe, 0xb9, 0xfe, + 0xea, 0xfe, 0xea, 0xfe, 0x1d, 0xff, 0x1e, 0xff, 0x52, 0xff, 0x51, 0xff, + 0x85, 0xff, 0x87, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xf1, 0xff, 0xf0, 0xff, + 0x24, 0x00, 0x26, 0x00, 0x5a, 0x00, 0x58, 0x00, 0x8c, 0x00, 0x8e, 0x00, + 0xc1, 0x00, 0xc0, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0x23, 0x01, 0x23, 0x01, + 0x50, 0x01, 0x51, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0xa9, 0x01, 0xaa, 0x01, + 0xd4, 0x01, 0xd3, 0x01, 0xfa, 0x01, 0xfb, 0x01, 0x1e, 0x02, 0x1d, 0x02, + 0x41, 0x02, 0x3f, 0x02, 0x5c, 0x02, 0x5d, 0x02, 0x7a, 0x02, 0x78, 0x02, + 0x8f, 0x02, 0x92, 0x02, 0xa9, 0x02, 0xa5, 0x02, 0xb6, 0x02, 0xb8, 0x02, + 0xc4, 0x02, 0xc2, 0x02, 0xd0, 0x02, 0xd0, 0x02, 0xd5, 0x02, 0xd5, 0x02, + 0xd9, 0x02, 0xd9, 0x02, 0xd9, 0x02, 0xda, 0x02, 0xd3, 0x02, 0xd4, 0x02, + 0xce, 0x02, 0xcc, 0x02, 0xc0, 0x02, 0xc1, 0x02, 0xb4, 0x02, 0xb3, 0x02, + 0x9f, 0x02, 0x9f, 0x02, 0x8d, 0x02, 0x8c, 0x02, 0x71, 0x02, 0x72, 0x02, + 0x57, 0x02, 0x57, 0x02, 0x37, 0x02, 0x36, 0x02, 0x14, 0x02, 0x15, 0x02, + 0xef, 0x01, 0xef, 0x01, 0xc9, 0x01, 0xc8, 0x01, 0x9e, 0x01, 0x9d, 0x01, + 0x72, 0x01, 0x73, 0x01, 0x43, 0x01, 0x42, 0x01, 0x17, 0x01, 0x16, 0x01, + 0xe2, 0x00, 0xe3, 0x00, 0xb3, 0x00, 0xb1, 0x00, 0x7d, 0x00, 0x7f, 0x00, + 0x4c, 0x00, 0x4a, 0x00, 0x15, 0x00, 0x16, 0x00, 0xe1, 0xff, 0xe1, 0xff, + 0xac, 0xff, 0xae, 0xff, 0x78, 0xff, 0x79, 0xff, 0x45, 0xff, 0x44, 0xff, + 0x11, 0xff, 0x10, 0xff, 0xde, 0xfe, 0xde, 0xfe, 0xad, 0xfe, 0xad, 0xfe, + 0x7f, 0xfe, 0x7e, 0xfe, 0x50, 0xfe, 0x4f, 0xfe, 0x24, 0xfe, 0x23, 0xfe, + 0xf9, 0xfd, 0xf9, 0xfd, 0xd3, 0xfd, 0xd0, 0xfd, 0xac, 0xfd, 0xad, 0xfd, + 0x8b, 0xfd, 0x88, 0xfd, 0x6a, 0xfd, 0x6b, 0xfd, 0x50, 0xfd, 0x4e, 0xfd, + 0x35, 0xfd, 0x36, 0xfd, 0x20, 0xfd, 0x20, 0xfd, 0x0a, 0xfd, 0x0b, 0xfd, + 0xff, 0xfc, 0xfd, 0xfc, 0xf1, 0xfc, 0xf2, 0xfc, 0xea, 0xfc, 0xe9, 0xfc, + 0xe6, 0xfc, 0xe7, 0xfc, 0xe3, 0xfc, 0xe4, 0xfc, 0xe9, 0xfc, 0xe8, 0xfc, + 0xee, 0xfc, 0xef, 0xfc, 0xf9, 0xfc, 0xf9, 0xfc, 0x07, 0xfd, 0x09, 0xfd, + 0x1a, 0xfd, 0x19, 0xfd, 0x2f, 0xfd, 0x31, 0xfd, 0x47, 0xfd, 0x49, 0xfd, + 0x65, 0xfd, 0x65, 0xfd, 0x84, 0xfd, 0x85, 0xfd, 0xa5, 0xfd, 0xa7, 0xfd, + 0xce, 0xfd, 0xce, 0xfd, 0xf3, 0xfd, 0xf4, 0xfd, 0x1d, 0xfe, 0x1d, 0xfe, + 0x4c, 0xfe, 0x4c, 0xfe, 0x78, 0xfe, 0x7a, 0xfe, 0xad, 0xfe, 0xab, 0xfe, + 0xdc, 0xfe, 0xdd, 0xfe, 0x13, 0xff, 0x13, 0xff, 0x47, 0xff, 0x48, 0xff, + 0x80, 0xff, 0x7e, 0xff, 0xb3, 0xff, 0xb5, 0xff, 0xed, 0xff, 0xec, 0xff, + 0x25, 0x00, 0x26, 0x00, 0x5c, 0x00, 0x5b, 0x00, 0x94, 0x00, 0x93, 0x00, + 0xc9, 0x00, 0xc9, 0x00, 0x00, 0x01, 0x00, 0x01, 0x34, 0x01, 0x33, 0x01, + 0x68, 0x01, 0x69, 0x01, 0x9a, 0x01, 0x9a, 0x01, 0xcc, 0x01, 0xcb, 0x01, + 0xf7, 0x01, 0xf9, 0x01, 0x28, 0x02, 0x25, 0x02, 0x4e, 0x02, 0x4e, 0x02, + 0x78, 0x02, 0x76, 0x02, 0x9b, 0x02, 0x9a, 0x02, 0xbc, 0x02, 0xbc, 0x02, + 0xd9, 0x02, 0xd9, 0x02, 0xf4, 0x02, 0xf5, 0x02, 0x0d, 0x03, 0x0e, 0x03, + 0x20, 0x03, 0x20, 0x03, 0x32, 0x03, 0x33, 0x03, 0x3e, 0x03, 0x3c, 0x03, + 0x47, 0x03, 0x48, 0x03, 0x4d, 0x03, 0x4c, 0x03, 0x4e, 0x03, 0x4c, 0x03, + 0x49, 0x03, 0x4c, 0x03, 0x48, 0x03, 0x45, 0x03, 0x3a, 0x03, 0x3a, 0x03, + 0x2d, 0x03, 0x2c, 0x03, 0x1c, 0x03, 0x1c, 0x03, 0x06, 0x03, 0x06, 0x03, + 0xf0, 0x02, 0xef, 0x02, 0xd1, 0x02, 0xd0, 0x02, 0xb3, 0x02, 0xb2, 0x02, + 0x91, 0x02, 0x91, 0x02, 0x6b, 0x02, 0x6c, 0x02, 0x45, 0x02, 0x42, 0x02, + 0x19, 0x02, 0x1a, 0x02, 0xed, 0x01, 0xec, 0x01, 0xbf, 0x01, 0xbf, 0x01, + 0x8f, 0x01, 0x8c, 0x01, 0x5b, 0x01, 0x5d, 0x01, 0x29, 0x01, 0x27, 0x01, + 0xf3, 0x00, 0xf6, 0x00, 0xbe, 0x00, 0xba, 0x00, 0x88, 0x00, 0x8a, 0x00, + 0x50, 0x00, 0x4f, 0x00, 0x19, 0x00, 0x19, 0x00, 0xe1, 0xff, 0xe0, 0xff, + 0xac, 0xff, 0xac, 0xff, 0x77, 0xff, 0x74, 0xff, 0x3d, 0xff, 0x40, 0xff, + 0x0d, 0xff, 0x0c, 0xff, 0xd9, 0xfe, 0xdb, 0xfe, 0xaa, 0xfe, 0xa8, 0xfe, + 0x7a, 0xfe, 0x7a, 0xfe, 0x4c, 0xfe, 0x4d, 0xfe, 0x23, 0xfe, 0x22, 0xfe, + 0xf8, 0xfd, 0xf8, 0xfd, 0xd6, 0xfd, 0xd7, 0xfd, 0xb0, 0xfd, 0xb0, 0xfd, + 0x92, 0xfd, 0x91, 0xfd, 0x74, 0xfd, 0x74, 0xfd, 0x5b, 0xfd, 0x5b, 0xfd, + 0x46, 0xfd, 0x46, 0xfd, 0x32, 0xfd, 0x32, 0xfd, 0x26, 0xfd, 0x24, 0xfd, + 0x1a, 0xfd, 0x19, 0xfd, 0x11, 0xfd, 0x12, 0xfd, 0x0f, 0xfd, 0x0c, 0xfd, + 0x10, 0xfd, 0x11, 0xfd, 0x13, 0xfd, 0x11, 0xfd, 0x1b, 0xfd, 0x1e, 0xfd, + 0x28, 0xfd, 0x26, 0xfd, 0x35, 0xfd, 0x37, 0xfd, 0x4a, 0xfd, 0x49, 0xfd, + 0x5f, 0xfd, 0x60, 0xfd, 0x7d, 0xfd, 0x7c, 0xfd, 0x99, 0xfd, 0x99, 0xfd, + 0xb9, 0xfd, 0xb9, 0xfd, 0xe0, 0xfd, 0xde, 0xfd, 0x03, 0xfe, 0x04, 0xfe, + 0x30, 0xfe, 0x30, 0xfe, 0x5a, 0xfe, 0x5a, 0xfe, 0x89, 0xfe, 0x89, 0xfe, + 0xba, 0xfe, 0xba, 0xfe, 0xeb, 0xfe, 0xeb, 0xfe, 0x21, 0xff, 0x21, 0xff, + 0x54, 0xff, 0x54, 0xff, 0x8b, 0xff, 0x8c, 0xff, 0xc3, 0xff, 0xc2, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0x34, 0x00, 0x33, 0x00, 0x69, 0x00, 0x6a, 0x00, + 0xa3, 0x00, 0xa3, 0x00, 0xda, 0x00, 0xd9, 0x00, 0x11, 0x01, 0x10, 0x01, + 0x47, 0x01, 0x47, 0x01, 0x7c, 0x01, 0x7b, 0x01, 0xaf, 0x01, 0xb1, 0x01, + 0xe1, 0x01, 0xdf, 0x01, 0x0f, 0x02, 0x0f, 0x02, 0x3e, 0x02, 0x3f, 0x02, + 0x6a, 0x02, 0x69, 0x02, 0x90, 0x02, 0x91, 0x02, 0xb7, 0x02, 0xb5, 0x02, + 0xd8, 0x02, 0xda, 0x02, 0xf8, 0x02, 0xf7, 0x02, 0x14, 0x03, 0x15, 0x03, + 0x2b, 0x03, 0x2c, 0x03, 0x42, 0x03, 0x42, 0x03, 0x52, 0x03, 0x54, 0x03, + 0x63, 0x03, 0x61, 0x03, 0x69, 0x03, 0x6a, 0x03, 0x70, 0x03, 0x6f, 0x03, + 0x71, 0x03, 0x72, 0x03, 0x6f, 0x03, 0x6f, 0x03, 0x6a, 0x03, 0x69, 0x03, + 0x60, 0x03, 0x5f, 0x03, 0x52, 0x03, 0x51, 0x03, 0x42, 0x03, 0x41, 0x03, + 0x29, 0x03, 0x2b, 0x03, 0x12, 0x03, 0x12, 0x03, 0xf6, 0x02, 0xf6, 0x02, + 0xd4, 0x02, 0xd5, 0x02, 0xb2, 0x02, 0xb2, 0x02, 0x8c, 0x02, 0x8a, 0x02, + 0x62, 0x02, 0x63, 0x02, 0x37, 0x02, 0x35, 0x02, 0x07, 0x02, 0x08, 0x02, + 0xd9, 0x01, 0xd7, 0x01, 0xa5, 0x01, 0xa5, 0x01, 0x70, 0x01, 0x70, 0x01, + 0x39, 0x01, 0x39, 0x01, 0x04, 0x01, 0x05, 0x01, 0xc9, 0x00, 0xc9, 0x00, + 0x91, 0x00, 0x90, 0x00, 0x56, 0x00, 0x56, 0x00, 0x1d, 0x00, 0x1d, 0x00, + 0xe2, 0xff, 0xe1, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0x6f, 0xff, 0x6f, 0xff, + 0x39, 0xff, 0x37, 0xff, 0xfd, 0xfe, 0xff, 0xfe, 0xc8, 0xfe, 0xc6, 0xfe, + 0x94, 0xfe, 0x94, 0xfe, 0x60, 0xfe, 0x5e, 0xfe, 0x2f, 0xfe, 0x30, 0xfe, + 0x00, 0xfe, 0xff, 0xfd, 0xd5, 0xfd, 0xd3, 0xfd, 0xaa, 0xfd, 0xac, 0xfd, + 0x84, 0xfd, 0x82, 0xfd, 0x61, 0xfd, 0x61, 0xfd, 0x40, 0xfd, 0x40, 0xfd, + 0x23, 0xfd, 0x21, 0xfd, 0x09, 0xfd, 0x0b, 0xfd, 0xf0, 0xfc, 0xf0, 0xfc, + 0xe2, 0xfc, 0xe1, 0xfc, 0xd0, 0xfc, 0xd1, 0xfc, 0xc7, 0xfc, 0xc6, 0xfc, + 0xc0, 0xfc, 0xc0, 0xfc, 0xbd, 0xfc, 0xbc, 0xfc, 0xc0, 0xfc, 0xc0, 0xfc, + 0xc4, 0xfc, 0xc3, 0xfc, 0xcf, 0xfc, 0xd0, 0xfc, 0xda, 0xfc, 0xda, 0xfc, + 0xeb, 0xfc, 0xec, 0xfc, 0x01, 0xfd, 0x01, 0xfd, 0x17, 0xfd, 0x17, 0xfd, + 0x35, 0xfd, 0x38, 0xfd, 0x55, 0xfd, 0x52, 0xfd, 0x75, 0xfd, 0x77, 0xfd, + 0x9e, 0xfd, 0x9f, 0xfd, 0xc3, 0xfd, 0xc4, 0xfd, 0xf2, 0xfd, 0xf2, 0xfd, + 0x1e, 0xfe, 0x1e, 0xfe, 0x4e, 0xfe, 0x4e, 0xfe, 0x80, 0xfe, 0x80, 0xfe, + 0xb5, 0xfe, 0xb4, 0xfe, 0xea, 0xfe, 0xe9, 0xfe, 0x22, 0xff, 0x21, 0xff, + 0x5a, 0xff, 0x59, 0xff, 0x92, 0xff, 0x91, 0xff, 0xcb, 0xff, 0xcb, 0xff, + 0x03, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x3b, 0x00, 0x75, 0x00, 0x75, 0x00, + 0xae, 0x00, 0xad, 0x00, 0xe5, 0x00, 0xe4, 0x00, 0x1b, 0x01, 0x1b, 0x01, + 0x50, 0x01, 0x4f, 0x01, 0x84, 0x01, 0x83, 0x01, 0xb7, 0x01, 0xb5, 0x01, + 0xe3, 0x01, 0xe3, 0x01, 0x13, 0x02, 0x11, 0x02, 0x3b, 0x02, 0x3c, 0x02, + 0x64, 0x02, 0x63, 0x02, 0x87, 0x02, 0x87, 0x02, 0xa9, 0x02, 0xaa, 0x02, + 0xc7, 0x02, 0xc8, 0x02, 0xe1, 0x02, 0xe1, 0x02, 0xf9, 0x02, 0xfa, 0x02, + 0x0e, 0x03, 0x0b, 0x03, 0x1c, 0x03, 0x1e, 0x03, 0x28, 0x03, 0x26, 0x03, + 0x31, 0x03, 0x30, 0x03, 0x33, 0x03, 0x35, 0x03, 0x35, 0x03, 0x33, 0x03, + 0x31, 0x03, 0x31, 0x03, 0x26, 0x03, 0x27, 0x03, 0x1c, 0x03, 0x1c, 0x03, + 0x0a, 0x03, 0x0a, 0x03, 0xf7, 0x02, 0xf8, 0x02, 0xe0, 0x02, 0xde, 0x02, + 0xc3, 0x02, 0xc3, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0x83, 0x02, 0x81, 0x02, + 0x5d, 0x02, 0x5d, 0x02, 0x35, 0x02, 0x35, 0x02, 0x07, 0x02, 0x05, 0x02, + 0xda, 0x01, 0xdd, 0x01, 0xa7, 0x01, 0xa7, 0x01, 0x77, 0x01, 0x75, 0x01, + 0x40, 0x01, 0x3f, 0x01, 0x09, 0x01, 0x07, 0x01, 0xd0, 0x00, 0xd2, 0x00, + 0x97, 0x00, 0x96, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x22, 0x00, 0x21, 0x00, + 0xe5, 0xff, 0xe4, 0xff, 0xab, 0xff, 0xac, 0xff, 0x6f, 0xff, 0x6e, 0xff, + 0x33, 0xff, 0x32, 0xff, 0xfa, 0xfe, 0xf9, 0xfe, 0xbe, 0xfe, 0xbf, 0xfe, + 0x88, 0xfe, 0x87, 0xfe, 0x4f, 0xfe, 0x50, 0xfe, 0x1a, 0xfe, 0x19, 0xfe, + 0xe8, 0xfd, 0xe7, 0xfd, 0xb6, 0xfd, 0xb6, 0xfd, 0x89, 0xfd, 0x88, 0xfd, + 0x5d, 0xfd, 0x5d, 0xfd, 0x34, 0xfd, 0x34, 0xfd, 0x0e, 0xfd, 0x0d, 0xfd, + 0xed, 0xfc, 0xec, 0xfc, 0xca, 0xfc, 0xcc, 0xfc, 0xb2, 0xfc, 0xb1, 0xfc, + 0x96, 0xfc, 0x98, 0xfc, 0x85, 0xfc, 0x85, 0xfc, 0x75, 0xfc, 0x73, 0xfc, + 0x69, 0xfc, 0x68, 0xfc, 0x62, 0xfc, 0x62, 0xfc, 0x5c, 0xfc, 0x5b, 0xfc, + 0x5e, 0xfc, 0x5e, 0xfc, 0x62, 0xfc, 0x62, 0xfc, 0x6b, 0xfc, 0x68, 0xfc, + 0x77, 0xfc, 0x7a, 0xfc, 0x87, 0xfc, 0x86, 0xfc, 0x9e, 0xfc, 0x9e, 0xfc, + 0xb2, 0xfc, 0xb3, 0xfc, 0xd1, 0xfc, 0xd0, 0xfc, 0xef, 0xfc, 0xf0, 0xfc, + 0x12, 0xfd, 0x13, 0xfd, 0x3a, 0xfd, 0x39, 0xfd, 0x63, 0xfd, 0x64, 0xfd, + 0x92, 0xfd, 0x91, 0xfd, 0xbc, 0xfd, 0xbd, 0xfd, 0xf2, 0xfd, 0xf1, 0xfd, + 0x24, 0xfe, 0x24, 0xfe, 0x59, 0xfe, 0x58, 0xfe, 0x91, 0xfe, 0x92, 0xfe, + 0xcb, 0xfe, 0xca, 0xfe, 0x05, 0xff, 0x06, 0xff, 0x40, 0xff, 0x3f, 0xff, + 0x79, 0xff, 0x7c, 0xff, 0xbb, 0xff, 0xb9, 0xff, 0xf1, 0xff, 0xf3, 0xff, + 0x30, 0x00, 0x2f, 0x00, 0x6b, 0x00, 0x6e, 0x00, 0xa4, 0x00, 0xa3, 0x00, + 0xdf, 0x00, 0xe1, 0x00, 0x17, 0x01, 0x17, 0x01, 0x50, 0x01, 0x4f, 0x01, + 0x83, 0x01, 0x83, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xe9, 0x01, 0xe9, 0x01, + 0x15, 0x02, 0x17, 0x02, 0x42, 0x02, 0x41, 0x02, 0x6a, 0x02, 0x6b, 0x02, + 0x91, 0x02, 0x91, 0x02, 0xb2, 0x02, 0xb2, 0x02, 0xce, 0x02, 0xd0, 0x02, + 0xee, 0x02, 0xed, 0x02, 0x01, 0x03, 0x03, 0x03, 0x18, 0x03, 0x17, 0x03, + 0x25, 0x03, 0x27, 0x03, 0x33, 0x03, 0x32, 0x03, 0x3a, 0x03, 0x3b, 0x03, + 0x3c, 0x03, 0x3c, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0x37, 0x03, 0x36, 0x03, + 0x2f, 0x03, 0x2e, 0x03, 0x21, 0x03, 0x23, 0x03, 0x10, 0x03, 0x0f, 0x03, + 0xfb, 0x02, 0xfc, 0x02, 0xe2, 0x02, 0xe1, 0x02, 0xc6, 0x02, 0xc7, 0x02, + 0xa6, 0x02, 0xa5, 0x02, 0x82, 0x02, 0x83, 0x02, 0x5d, 0x02, 0x5b, 0x02, + 0x2f, 0x02, 0x31, 0x02, 0x05, 0x02, 0x04, 0x02, 0xd4, 0x01, 0xd3, 0x01, + 0xa3, 0x01, 0xa3, 0x01, 0x6e, 0x01, 0x6f, 0x01, 0x3a, 0x01, 0x39, 0x01, + 0xfe, 0x00, 0x01, 0x01, 0xc8, 0x00, 0xc6, 0x00, 0x8a, 0x00, 0x8b, 0x00, + 0x54, 0x00, 0x52, 0x00, 0x16, 0x00, 0x15, 0x00, 0xda, 0xff, 0xda, 0xff, + 0x9f, 0xff, 0x9e, 0xff, 0x62, 0xff, 0x63, 0xff, 0x27, 0xff, 0x26, 0xff, + 0xed, 0xfe, 0xee, 0xfe, 0xb3, 0xfe, 0xb2, 0xfe, 0x7d, 0xfe, 0x7d, 0xfe, + 0x47, 0xfe, 0x45, 0xfe, 0x13, 0xfe, 0x13, 0xfe, 0xdf, 0xfd, 0xde, 0xfd, + 0xaf, 0xfd, 0xb0, 0xfd, 0x83, 0xfd, 0x83, 0xfd, 0x59, 0xfd, 0x58, 0xfd, + 0x32, 0xfd, 0x33, 0xfd, 0x0e, 0xfd, 0x0e, 0xfd, 0xed, 0xfc, 0xed, 0xfc, + 0xd1, 0xfc, 0xd1, 0xfc, 0xb5, 0xfc, 0xb6, 0xfc, 0xa4, 0xfc, 0xa2, 0xfc, + 0x92, 0xfc, 0x90, 0xfc, 0x83, 0xfc, 0x84, 0xfc, 0x7c, 0xfc, 0x7a, 0xfc, + 0x73, 0xfc, 0x75, 0xfc, 0x76, 0xfc, 0x76, 0xfc, 0x79, 0xfc, 0x79, 0xfc, + 0x81, 0xfc, 0x81, 0xfc, 0x8e, 0xfc, 0x8e, 0xfc, 0x9c, 0xfc, 0x9d, 0xfc, + 0xb1, 0xfc, 0xb1, 0xfc, 0xc9, 0xfc, 0xc8, 0xfc, 0xe5, 0xfc, 0xe7, 0xfc, + 0x07, 0xfd, 0x06, 0xfd, 0x28, 0xfd, 0x28, 0xfd, 0x4f, 0xfd, 0x50, 0xfd, + 0x7a, 0xfd, 0x7a, 0xfd, 0xa7, 0xfd, 0xa7, 0xfd, 0xd7, 0xfd, 0xd8, 0xfd, + 0x0b, 0xfe, 0x0a, 0xfe, 0x3e, 0xfe, 0x3f, 0xfe, 0x78, 0xfe, 0x76, 0xfe, + 0xae, 0xfe, 0xaf, 0xfe, 0xec, 0xfe, 0xea, 0xfe, 0x25, 0xff, 0x27, 0xff, + 0x64, 0xff, 0x62, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0xdf, 0xff, 0xe0, 0xff, + 0x20, 0x00, 0x1f, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x9c, 0x00, 0x9b, 0x00, + 0xdb, 0x00, 0xd9, 0x00, 0x15, 0x01, 0x15, 0x01, 0x52, 0x01, 0x51, 0x01, + 0x8c, 0x01, 0x8a, 0x01, 0xc4, 0x01, 0xc6, 0x01, 0xfd, 0x01, 0xfa, 0x01, + 0x2e, 0x02, 0x2f, 0x02, 0x64, 0x02, 0x62, 0x02, 0x8e, 0x02, 0x8e, 0x02, + 0xbd, 0x02, 0xbc, 0x02, 0xe3, 0x02, 0xe3, 0x02, 0x0a, 0x03, 0x09, 0x03, + 0x2e, 0x03, 0x2d, 0x03, 0x49, 0x03, 0x4a, 0x03, 0x65, 0x03, 0x64, 0x03, + 0x7a, 0x03, 0x7b, 0x03, 0x8d, 0x03, 0x8c, 0x03, 0x9c, 0x03, 0x9c, 0x03, + 0xa7, 0x03, 0xa5, 0x03, 0xaa, 0x03, 0xaa, 0x03, 0xad, 0x03, 0xac, 0x03, + 0xaa, 0x03, 0xa9, 0x03, 0xa2, 0x03, 0xa4, 0x03, 0x99, 0x03, 0x97, 0x03, + 0x86, 0x03, 0x87, 0x03, 0x76, 0x03, 0x75, 0x03, 0x5c, 0x03, 0x5d, 0x03, + 0x40, 0x03, 0x3f, 0x03, 0x21, 0x03, 0x21, 0x03, 0xfe, 0x02, 0xfc, 0x02, + 0xd9, 0x02, 0xda, 0x02, 0xad, 0x02, 0xad, 0x02, 0x82, 0x02, 0x82, 0x02, + 0x50, 0x02, 0x51, 0x02, 0x20, 0x02, 0x1e, 0x02, 0xea, 0x01, 0xec, 0x01, + 0xb5, 0x01, 0xb2, 0x01, 0x7b, 0x01, 0x7c, 0x01, 0x3f, 0x01, 0x3f, 0x01, + 0x06, 0x01, 0x06, 0x01, 0xc9, 0x00, 0xc6, 0x00, 0x8b, 0x00, 0x8b, 0x00, + 0x4d, 0x00, 0x4e, 0x00, 0x10, 0x00, 0x10, 0x00, 0xd1, 0xff, 0xd2, 0xff, + 0x94, 0xff, 0x95, 0xff, 0x57, 0xff, 0x57, 0xff, 0x1c, 0xff, 0x1d, 0xff, + 0xe1, 0xfe, 0xe1, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, 0x72, 0xfe, 0x72, 0xfe, + 0x3d, 0xfe, 0x3e, 0xfe, 0x09, 0xfe, 0x09, 0xfe, 0xdb, 0xfd, 0xdb, 0xfd, + 0xac, 0xfd, 0xac, 0xfd, 0x82, 0xfd, 0x83, 0xfd, 0x5d, 0xfd, 0x5c, 0xfd, + 0x37, 0xfd, 0x38, 0xfd, 0x19, 0xfd, 0x19, 0xfd, 0xfb, 0xfc, 0xfb, 0xfc, + 0xe5, 0xfc, 0xe4, 0xfc, 0xcf, 0xfc, 0xcf, 0xfc, 0xbf, 0xfc, 0xbd, 0xfc, + 0xb2, 0xfc, 0xb3, 0xfc, 0xa9, 0xfc, 0xa9, 0xfc, 0xa8, 0xfc, 0xa6, 0xfc, + 0xa7, 0xfc, 0xa8, 0xfc, 0xad, 0xfc, 0xac, 0xfc, 0xb6, 0xfc, 0xb6, 0xfc, + 0xc3, 0xfc, 0xc3, 0xfc, 0xd5, 0xfc, 0xd3, 0xfc, 0xeb, 0xfc, 0xeb, 0xfc, + 0x05, 0xfd, 0x02, 0xfd, 0x22, 0xfd, 0x23, 0xfd, 0x44, 0xfd, 0x42, 0xfd, + 0x69, 0xfd, 0x68, 0xfd, 0x94, 0xfd, 0x93, 0xfd, 0xbd, 0xfd, 0xbb, 0xfd, + 0xee, 0xfd, 0xed, 0xfd, 0x1e, 0xfe, 0x1d, 0xfe, 0x54, 0xfe, 0x55, 0xfe, + 0x8a, 0xfe, 0x87, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, 0xfe, 0xfe, 0xfc, 0xfe, + 0x37, 0xff, 0x39, 0xff, 0x77, 0xff, 0x76, 0xff, 0xb4, 0xff, 0xb5, 0xff, + 0xf3, 0xff, 0xf2, 0xff, 0x34, 0x00, 0x35, 0x00, 0x6f, 0x00, 0x70, 0x00, + 0xb3, 0x00, 0xb2, 0x00, 0xed, 0x00, 0xee, 0x00, 0x30, 0x01, 0x2e, 0x01, + 0x67, 0x01, 0x68, 0x01, 0xa6, 0x01, 0xa5, 0x01, 0xdd, 0x01, 0xde, 0x01, + 0x18, 0x02, 0x14, 0x02, 0x4b, 0x02, 0x4c, 0x02, 0x7f, 0x02, 0x7e, 0x02, + 0xae, 0x02, 0xb0, 0x02, 0xdc, 0x02, 0xdc, 0x02, 0x06, 0x03, 0x07, 0x03, + 0x2c, 0x03, 0x2c, 0x03, 0x51, 0x03, 0x50, 0x03, 0x6e, 0x03, 0x70, 0x03, + 0x8d, 0x03, 0x8c, 0x03, 0xa2, 0x03, 0xa3, 0x03, 0xb9, 0x03, 0xb6, 0x03, + 0xc7, 0x03, 0xc8, 0x03, 0xd0, 0x03, 0xd1, 0x03, 0xda, 0x03, 0xd8, 0x03, + 0xd7, 0x03, 0xda, 0x03, 0xdb, 0x03, 0xd7, 0x03, 0xcf, 0x03, 0xd1, 0x03, + 0xc7, 0x03, 0xc7, 0x03, 0xb6, 0x03, 0xb5, 0x03, 0xa2, 0x03, 0xa4, 0x03, + 0x8d, 0x03, 0x8b, 0x03, 0x6f, 0x03, 0x6f, 0x03, 0x51, 0x03, 0x52, 0x03, + 0x2c, 0x03, 0x2a, 0x03, 0x05, 0x03, 0x04, 0x03, 0xdc, 0x02, 0xdc, 0x02, + 0xad, 0x02, 0xac, 0x02, 0x7b, 0x02, 0x7b, 0x02, 0x4a, 0x02, 0x48, 0x02, + 0x11, 0x02, 0x10, 0x02, 0xd8, 0x01, 0xda, 0x01, 0x9f, 0x01, 0x9c, 0x01, + 0x5f, 0x01, 0x63, 0x01, 0x25, 0x01, 0x22, 0x01, 0xe1, 0x00, 0xe3, 0x00, + 0xa5, 0x00, 0xa3, 0x00, 0x62, 0x00, 0x63, 0x00, 0x22, 0x00, 0x22, 0x00, + 0xe0, 0xff, 0xe0, 0xff, 0x9f, 0xff, 0xa1, 0xff, 0x63, 0xff, 0x61, 0xff, + 0x1f, 0xff, 0x1f, 0xff, 0xe5, 0xfe, 0xe3, 0xfe, 0xa7, 0xfe, 0xa6, 0xfe, + 0x6a, 0xfe, 0x6a, 0xfe, 0x33, 0xfe, 0x31, 0xfe, 0xfa, 0xfd, 0xfa, 0xfd, + 0xc8, 0xfd, 0xc7, 0xfd, 0x96, 0xfd, 0x97, 0xfd, 0x67, 0xfd, 0x66, 0xfd, + 0x3c, 0xfd, 0x3d, 0xfd, 0x17, 0xfd, 0x14, 0xfd, 0xef, 0xfc, 0xf0, 0xfc, + 0xd1, 0xfc, 0xd1, 0xfc, 0xb3, 0xfc, 0xb3, 0xfc, 0x9a, 0xfc, 0x9b, 0xfc, + 0x88, 0xfc, 0x88, 0xfc, 0x74, 0xfc, 0x75, 0xfc, 0x6d, 0xfc, 0x6b, 0xfc, + 0x62, 0xfc, 0x63, 0xfc, 0x63, 0xfc, 0x62, 0xfc, 0x62, 0xfc, 0x62, 0xfc, + 0x69, 0xfc, 0x69, 0xfc, 0x74, 0xfc, 0x73, 0xfc, 0x83, 0xfc, 0x82, 0xfc, + 0x96, 0xfc, 0x96, 0xfc, 0xae, 0xfc, 0xad, 0xfc, 0xc7, 0xfc, 0xc8, 0xfc, + 0xe9, 0xfc, 0xe8, 0xfc, 0x0b, 0xfd, 0x0a, 0xfd, 0x32, 0xfd, 0x31, 0xfd, + 0x5e, 0xfd, 0x5e, 0xfd, 0x8b, 0xfd, 0x89, 0xfd, 0xbb, 0xfd, 0xbb, 0xfd, + 0xef, 0xfd, 0xee, 0xfd, 0x23, 0xfe, 0x24, 0xfe, 0x5d, 0xfe, 0x5c, 0xfe, + 0x97, 0xfe, 0x97, 0xfe, 0xd4, 0xfe, 0xd3, 0xfe, 0x11, 0xff, 0x10, 0xff, + 0x4f, 0xff, 0x4e, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0xce, 0xff, 0xce, 0xff, + 0x10, 0x00, 0x0f, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x8f, 0x00, 0x8e, 0x00, + 0xcd, 0x00, 0xcc, 0x00, 0x0a, 0x01, 0x0a, 0x01, 0x49, 0x01, 0x47, 0x01, + 0x81, 0x01, 0x82, 0x01, 0xbd, 0x01, 0xb9, 0x01, 0xf2, 0x01, 0xf4, 0x01, + 0x28, 0x02, 0x26, 0x02, 0x5c, 0x02, 0x5d, 0x02, 0x88, 0x02, 0x87, 0x02, + 0xb6, 0x02, 0xb7, 0x02, 0xdd, 0x02, 0xdd, 0x02, 0x05, 0x03, 0x04, 0x03, + 0x24, 0x03, 0x26, 0x03, 0x43, 0x03, 0x43, 0x03, 0x5d, 0x03, 0x5d, 0x03, + 0x71, 0x03, 0x72, 0x03, 0x85, 0x03, 0x84, 0x03, 0x90, 0x03, 0x91, 0x03, + 0x9a, 0x03, 0x9a, 0x03, 0x9f, 0x03, 0x9f, 0x03, 0x9d, 0x03, 0x9e, 0x03, + 0x9a, 0x03, 0x99, 0x03, 0x8f, 0x03, 0x8f, 0x03, 0x83, 0x03, 0x82, 0x03, + 0x70, 0x03, 0x6f, 0x03, 0x59, 0x03, 0x59, 0x03, 0x40, 0x03, 0x3f, 0x03, + 0x20, 0x03, 0x21, 0x03, 0xff, 0x02, 0xfb, 0x02, 0xd5, 0x02, 0xd7, 0x02, + 0xaf, 0x02, 0xac, 0x02, 0x7e, 0x02, 0x7e, 0x02, 0x4f, 0x02, 0x4f, 0x02, + 0x1a, 0x02, 0x19, 0x02, 0xe2, 0x01, 0xe3, 0x01, 0xac, 0x01, 0xab, 0x01, + 0x6f, 0x01, 0x6f, 0x01, 0x33, 0x01, 0x30, 0x01, 0xf3, 0x00, 0xf3, 0x00, + 0xb5, 0x00, 0xb2, 0x00, 0x71, 0x00, 0x70, 0x00, 0x30, 0x00, 0x32, 0x00, + 0xec, 0xff, 0xe9, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0x69, 0xff, 0x66, 0xff, + 0x25, 0xff, 0x25, 0xff, 0xe5, 0xfe, 0xe3, 0xfe, 0xa2, 0xfe, 0xa3, 0xfe, + 0x66, 0xfe, 0x64, 0xfe, 0x26, 0xfe, 0x27, 0xfe, 0xee, 0xfd, 0xec, 0xfd, + 0xb2, 0xfd, 0xb2, 0xfd, 0x7e, 0xfd, 0x7c, 0xfd, 0x4a, 0xfd, 0x48, 0xfd, + 0x18, 0xfd, 0x18, 0xfd, 0xec, 0xfc, 0xea, 0xfc, 0xc0, 0xfc, 0xbe, 0xfc, + 0x9b, 0xfc, 0x9b, 0xfc, 0x75, 0xfc, 0x74, 0xfc, 0x5b, 0xfc, 0x59, 0xfc, + 0x3e, 0xfc, 0x3e, 0xfc, 0x28, 0xfc, 0x26, 0xfc, 0x16, 0xfc, 0x17, 0xfc, + 0x07, 0xfc, 0x06, 0xfc, 0x00, 0xfc, 0x00, 0xfc, 0xfc, 0xfb, 0xfa, 0xfb, + 0xfc, 0xfb, 0xfb, 0xfb, 0x01, 0xfc, 0x01, 0xfc, 0x09, 0xfc, 0x09, 0xfc, + 0x19, 0xfc, 0x19, 0xfc, 0x2c, 0xfc, 0x2c, 0xfc, 0x42, 0xfc, 0x42, 0xfc, + 0x5e, 0xfc, 0x5c, 0xfc, 0x7e, 0xfc, 0x7d, 0xfc, 0x9f, 0xfc, 0x9f, 0xfc, + 0xc7, 0xfc, 0xc5, 0xfc, 0xf2, 0xfc, 0xf3, 0xfc, 0x22, 0xfd, 0x1f, 0xfd, + 0x52, 0xfd, 0x52, 0xfd, 0x86, 0xfd, 0x86, 0xfd, 0xbe, 0xfd, 0xbd, 0xfd, + 0xf9, 0xfd, 0xf8, 0xfd, 0x33, 0xfe, 0x33, 0xfe, 0x72, 0xfe, 0x70, 0xfe, + 0xaf, 0xfe, 0xb0, 0xfe, 0xf3, 0xfe, 0xef, 0xfe, 0x30, 0xff, 0x33, 0xff, + 0x77, 0xff, 0x73, 0xff, 0xb9, 0xff, 0xba, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0x3f, 0x00, 0x3f, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0xc2, 0x00, 0xc1, 0x00, + 0x03, 0x01, 0x03, 0x01, 0x40, 0x01, 0x3f, 0x01, 0x7f, 0x01, 0x7f, 0x01, + 0xb8, 0x01, 0xb6, 0x01, 0xf0, 0x01, 0xf2, 0x01, 0x28, 0x02, 0x25, 0x02, + 0x5a, 0x02, 0x5b, 0x02, 0x8a, 0x02, 0x8a, 0x02, 0xb8, 0x02, 0xb7, 0x02, + 0xe0, 0x02, 0xdf, 0x02, 0x06, 0x03, 0x06, 0x03, 0x29, 0x03, 0x27, 0x03, + 0x46, 0x03, 0x46, 0x03, 0x60, 0x03, 0x5e, 0x03, 0x76, 0x03, 0x76, 0x03, + 0x86, 0x03, 0x84, 0x03, 0x94, 0x03, 0x95, 0x03, 0x9d, 0x03, 0x99, 0x03, + 0x9f, 0x03, 0xa0, 0x03, 0x9f, 0x03, 0x9c, 0x03, 0x97, 0x03, 0x98, 0x03, + 0x8e, 0x03, 0x8c, 0x03, 0x7c, 0x03, 0x7d, 0x03, 0x6b, 0x03, 0x6a, 0x03, + 0x52, 0x03, 0x51, 0x03, 0x37, 0x03, 0x35, 0x03, 0x15, 0x03, 0x15, 0x03, + 0xf3, 0x02, 0xf0, 0x02, 0xcb, 0x02, 0xcb, 0x02, 0x9d, 0x02, 0x9c, 0x02, + 0x70, 0x02, 0x70, 0x02, 0x3d, 0x02, 0x3b, 0x02, 0x07, 0x02, 0x07, 0x02, + 0xd0, 0x01, 0xcf, 0x01, 0x94, 0x01, 0x93, 0x01, 0x59, 0x01, 0x57, 0x01, + 0x18, 0x01, 0x17, 0x01, 0xdb, 0x00, 0xd9, 0x00, 0x98, 0x00, 0x99, 0x00, + 0x57, 0x00, 0x54, 0x00, 0x13, 0x00, 0x14, 0x00, 0xd1, 0xff, 0xd0, 0xff, + 0x8f, 0xff, 0x8f, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x0a, 0xff, 0x09, 0xff, + 0xc8, 0xfe, 0xc8, 0xfe, 0x88, 0xfe, 0x88, 0xfe, 0x4b, 0xfe, 0x49, 0xfe, + 0x0d, 0xfe, 0x0d, 0xfe, 0xd3, 0xfd, 0xd3, 0xfd, 0x9c, 0xfd, 0x9b, 0xfd, + 0x66, 0xfd, 0x67, 0xfd, 0x36, 0xfd, 0x36, 0xfd, 0x05, 0xfd, 0x06, 0xfd, + 0xd9, 0xfc, 0xd9, 0xfc, 0xb3, 0xfc, 0xb3, 0xfc, 0x8d, 0xfc, 0x8c, 0xfc, + 0x6f, 0xfc, 0x6f, 0xfc, 0x51, 0xfc, 0x51, 0xfc, 0x3a, 0xfc, 0x3a, 0xfc, + 0x28, 0xfc, 0x27, 0xfc, 0x18, 0xfc, 0x17, 0xfc, 0x10, 0xfc, 0x10, 0xfc, + 0x09, 0xfc, 0x08, 0xfc, 0x09, 0xfc, 0x09, 0xfc, 0x0b, 0xfc, 0x0d, 0xfc, + 0x17, 0xfc, 0x16, 0xfc, 0x22, 0xfc, 0x22, 0xfc, 0x35, 0xfc, 0x36, 0xfc, + 0x4c, 0xfc, 0x4b, 0xfc, 0x66, 0xfc, 0x66, 0xfc, 0x87, 0xfc, 0x86, 0xfc, + 0xaa, 0xfc, 0xa9, 0xfc, 0xd1, 0xfc, 0xd0, 0xfc, 0xfb, 0xfc, 0xfc, 0xfc, + 0x2c, 0xfd, 0x2a, 0xfd, 0x5d, 0xfd, 0x5d, 0xfd, 0x93, 0xfd, 0x93, 0xfd, + 0xca, 0xfd, 0xcb, 0xfd, 0x07, 0xfe, 0x06, 0xfe, 0x43, 0xfe, 0x42, 0xfe, + 0x84, 0xfe, 0x85, 0xfe, 0xc6, 0xfe, 0xc4, 0xfe, 0x07, 0xff, 0x09, 0xff, + 0x4d, 0xff, 0x4c, 0xff, 0x8f, 0xff, 0x90, 0xff, 0xd8, 0xff, 0xd7, 0xff, + 0x1b, 0x00, 0x1a, 0x00, 0x61, 0x00, 0x61, 0x00, 0xa7, 0x00, 0xa7, 0x00, + 0xe9, 0x00, 0xea, 0x00, 0x2f, 0x01, 0x2e, 0x01, 0x70, 0x01, 0x71, 0x01, + 0xb1, 0x01, 0xaf, 0x01, 0xf0, 0x01, 0xf0, 0x01, 0x2b, 0x02, 0x2c, 0x02, + 0x67, 0x02, 0x65, 0x02, 0x9d, 0x02, 0x9d, 0x02, 0xcf, 0x02, 0xcf, 0x02, + 0x02, 0x03, 0x01, 0x03, 0x2e, 0x03, 0x2d, 0x03, 0x58, 0x03, 0x57, 0x03, + 0x7d, 0x03, 0x7d, 0x03, 0x9e, 0x03, 0x9d, 0x03, 0xbb, 0x03, 0xbc, 0x03, + 0xd3, 0x03, 0xd2, 0x03, 0xe9, 0x03, 0xe9, 0x03, 0xf7, 0x03, 0xf6, 0x03, + 0x03, 0x04, 0x03, 0x04, 0x08, 0x04, 0x09, 0x04, 0x09, 0x04, 0x08, 0x04, + 0x08, 0x04, 0x08, 0x04, 0xfd, 0x03, 0xfc, 0x03, 0xf2, 0x03, 0xf3, 0x03, + 0xe0, 0x03, 0xde, 0x03, 0xc8, 0x03, 0xc9, 0x03, 0xb1, 0x03, 0xaf, 0x03, + 0x8f, 0x03, 0x90, 0x03, 0x6d, 0x03, 0x6d, 0x03, 0x47, 0x03, 0x47, 0x03, + 0x1a, 0x03, 0x1a, 0x03, 0xed, 0x02, 0xed, 0x02, 0xba, 0x02, 0xb9, 0x02, + 0x85, 0x02, 0x88, 0x02, 0x4e, 0x02, 0x4c, 0x02, 0x10, 0x02, 0x11, 0x02, + 0xd7, 0x01, 0xd4, 0x01, 0x95, 0x01, 0x95, 0x01, 0x56, 0x01, 0x57, 0x01, + 0x12, 0x01, 0x12, 0x01, 0xd1, 0x00, 0xcf, 0x00, 0x8b, 0x00, 0x8b, 0x00, + 0x48, 0x00, 0x47, 0x00, 0x02, 0x00, 0x01, 0x00, 0xbe, 0xff, 0xbd, 0xff, + 0x7b, 0xff, 0x7a, 0xff, 0x36, 0xff, 0x36, 0xff, 0xf5, 0xfe, 0xf3, 0xfe, + 0xb3, 0xfe, 0xb4, 0xfe, 0x75, 0xfe, 0x74, 0xfe, 0x38, 0xfe, 0x37, 0xfe, + 0xfe, 0xfd, 0xfd, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0x93, 0xfd, 0x91, 0xfd, + 0x5c, 0xfd, 0x5c, 0xfd, 0x31, 0xfd, 0x30, 0xfd, 0x04, 0xfd, 0x01, 0xfd, + 0xdd, 0xfc, 0xdc, 0xfc, 0xbc, 0xfc, 0xb9, 0xfc, 0x9a, 0xfc, 0x99, 0xfc, + 0x81, 0xfc, 0x80, 0xfc, 0x6a, 0xfc, 0x67, 0xfc, 0x58, 0xfc, 0x59, 0xfc, + 0x4c, 0xfc, 0x48, 0xfc, 0x41, 0xfc, 0x41, 0xfc, 0x3f, 0xfc, 0x3e, 0xfc, + 0x40, 0xfc, 0x3d, 0xfc, 0x45, 0xfc, 0x47, 0xfc, 0x52, 0xfc, 0x4e, 0xfc, + 0x60, 0xfc, 0x61, 0xfc, 0x74, 0xfc, 0x72, 0xfc, 0x8c, 0xfc, 0x8b, 0xfc, + 0xab, 0xfc, 0xa9, 0xfc, 0xca, 0xfc, 0xca, 0xfc, 0xf0, 0xfc, 0xef, 0xfc, + 0x19, 0xfd, 0x19, 0xfd, 0x46, 0xfd, 0x45, 0xfd, 0x78, 0xfd, 0x79, 0xfd, + 0xad, 0xfd, 0xac, 0xfd, 0xe4, 0xfd, 0xe4, 0xfd, 0x1e, 0xfe, 0x1e, 0xfe, + 0x5d, 0xfe, 0x5b, 0xfe, 0x9a, 0xfe, 0x99, 0xfe, 0xdc, 0xfe, 0xdd, 0xfe, + 0x1f, 0xff, 0x1f, 0xff, 0x63, 0xff, 0x62, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0xed, 0xff, 0xed, 0xff, 0x37, 0x00, 0x35, 0x00, 0x7a, 0x00, 0x7b, 0x00, + 0xc1, 0x00, 0xc0, 0x00, 0x08, 0x01, 0x06, 0x01, 0x4a, 0x01, 0x4a, 0x01, + 0x91, 0x01, 0x8f, 0x01, 0xd0, 0x01, 0xd0, 0x01, 0x10, 0x02, 0x0e, 0x02, + 0x51, 0x02, 0x4f, 0x02, 0x89, 0x02, 0x87, 0x02, 0xc4, 0x02, 0xc3, 0x02, + 0xf6, 0x02, 0xf5, 0x02, 0x2a, 0x03, 0x2a, 0x03, 0x59, 0x03, 0x56, 0x03, + 0x81, 0x03, 0x82, 0x03, 0xac, 0x03, 0xab, 0x03, 0xcd, 0x03, 0xca, 0x03, + 0xea, 0x03, 0xeb, 0x03, 0x06, 0x04, 0x05, 0x04, 0x1c, 0x04, 0x1b, 0x04, + 0x2c, 0x04, 0x2b, 0x04, 0x39, 0x04, 0x38, 0x04, 0x40, 0x04, 0x40, 0x04, + 0x40, 0x04, 0x42, 0x04, 0x43, 0x04, 0x3e, 0x04, 0x36, 0x04, 0x38, 0x04, + 0x2d, 0x04, 0x2c, 0x04, 0x19, 0x04, 0x18, 0x04, 0x04, 0x04, 0x06, 0x04, + 0xea, 0x03, 0xe7, 0x03, 0xca, 0x03, 0xcc, 0x03, 0xa8, 0x03, 0xa9, 0x03, + 0x7f, 0x03, 0x7d, 0x03, 0x55, 0x03, 0x56, 0x03, 0x24, 0x03, 0x23, 0x03, + 0xf3, 0x02, 0xf3, 0x02, 0xbb, 0x02, 0xb8, 0x02, 0x82, 0x02, 0x83, 0x02, + 0x46, 0x02, 0x44, 0x02, 0x05, 0x02, 0x07, 0x02, 0xc7, 0x01, 0xc6, 0x01, + 0x82, 0x01, 0x82, 0x01, 0x3f, 0x01, 0x3f, 0x01, 0xf8, 0x00, 0xf9, 0x00, + 0xb1, 0x00, 0xb1, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x21, 0x00, 0x22, 0x00, + 0xda, 0xff, 0xd8, 0xff, 0x94, 0xff, 0x94, 0xff, 0x4c, 0xff, 0x4b, 0xff, + 0x08, 0xff, 0x07, 0xff, 0xc0, 0xfe, 0xc0, 0xfe, 0x80, 0xfe, 0x7f, 0xfe, + 0x3e, 0xfe, 0x3e, 0xfe, 0x00, 0xfe, 0xff, 0xfd, 0xc4, 0xfd, 0xc3, 0xfd, + 0x8b, 0xfd, 0x89, 0xfd, 0x53, 0xfd, 0x54, 0xfd, 0x22, 0xfd, 0x20, 0xfd, + 0xf0, 0xfc, 0xf1, 0xfc, 0xc7, 0xfc, 0xc6, 0xfc, 0x9d, 0xfc, 0x9d, 0xfc, + 0x7b, 0xfc, 0x7b, 0xfc, 0x5c, 0xfc, 0x5c, 0xfc, 0x42, 0xfc, 0x40, 0xfc, + 0x2d, 0xfc, 0x2d, 0xfc, 0x1b, 0xfc, 0x19, 0xfc, 0x0d, 0xfc, 0x0f, 0xfc, + 0x09, 0xfc, 0x07, 0xfc, 0x04, 0xfc, 0x03, 0xfc, 0x08, 0xfc, 0x08, 0xfc, + 0x0d, 0xfc, 0x0d, 0xfc, 0x19, 0xfc, 0x1a, 0xfc, 0x2d, 0xfc, 0x2c, 0xfc, + 0x41, 0xfc, 0x41, 0xfc, 0x5b, 0xfc, 0x5b, 0xfc, 0x7c, 0xfc, 0x7a, 0xfc, + 0x9c, 0xfc, 0x9d, 0xfc, 0xc7, 0xfc, 0xc6, 0xfc, 0xf1, 0xfc, 0xf2, 0xfc, + 0x20, 0xfd, 0x20, 0xfd, 0x55, 0xfd, 0x54, 0xfd, 0x8a, 0xfd, 0x8a, 0xfd, + 0xc4, 0xfd, 0xc3, 0xfd, 0x00, 0xfe, 0xff, 0xfd, 0x3e, 0xfe, 0x3d, 0xfe, + 0x80, 0xfe, 0x7f, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0x05, 0xff, 0x06, 0xff, + 0x4c, 0xff, 0x47, 0xff, 0x91, 0xff, 0x92, 0xff, 0xda, 0xff, 0xd7, 0xff, + 0x20, 0x00, 0x1f, 0x00, 0x66, 0x00, 0x66, 0x00, 0xab, 0x00, 0xab, 0x00, + 0xf3, 0x00, 0xf2, 0x00, 0x35, 0x01, 0x35, 0x01, 0x7b, 0x01, 0x77, 0x01, + 0xbb, 0x01, 0xbc, 0x01, 0xf9, 0x01, 0xf8, 0x01, 0x38, 0x02, 0x38, 0x02, + 0x71, 0x02, 0x71, 0x02, 0xab, 0x02, 0xa9, 0x02, 0xdd, 0x02, 0xde, 0x02, + 0x0d, 0x03, 0x0c, 0x03, 0x3c, 0x03, 0x3a, 0x03, 0x61, 0x03, 0x62, 0x03, + 0x8b, 0x03, 0x87, 0x03, 0xa9, 0x03, 0xaa, 0x03, 0xc7, 0x03, 0xc4, 0x03, + 0xde, 0x03, 0xde, 0x03, 0xf0, 0x03, 0xee, 0x03, 0xfe, 0x03, 0xfe, 0x03, + 0x0a, 0x04, 0x07, 0x04, 0x0c, 0x04, 0x0c, 0x04, 0x0e, 0x04, 0x0b, 0x04, + 0x04, 0x04, 0x03, 0x04, 0xfc, 0x03, 0xfc, 0x03, 0xeb, 0x03, 0xeb, 0x03, + 0xd8, 0x03, 0xd7, 0x03, 0xbd, 0x03, 0xbc, 0x03, 0xa1, 0x03, 0x9f, 0x03, + 0x7c, 0x03, 0x7b, 0x03, 0x56, 0x03, 0x56, 0x03, 0x29, 0x03, 0x2b, 0x03, + 0xff, 0x02, 0xfa, 0x02, 0xc9, 0x02, 0xca, 0x02, 0x95, 0x02, 0x92, 0x02, + 0x59, 0x02, 0x59, 0x02, 0x1e, 0x02, 0x1e, 0x02, 0xdf, 0x01, 0xdd, 0x01, + 0x9b, 0x01, 0x9b, 0x01, 0x57, 0x01, 0x56, 0x01, 0x12, 0x01, 0x11, 0x01, + 0xca, 0x00, 0xca, 0x00, 0x83, 0x00, 0x82, 0x00, 0x39, 0x00, 0x38, 0x00, + 0xf0, 0xff, 0xf0, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0x5e, 0xff, 0x5a, 0xff, + 0x13, 0xff, 0x14, 0xff, 0xcb, 0xfe, 0xcb, 0xfe, 0x84, 0xfe, 0x84, 0xfe, + 0x3e, 0xfe, 0x3e, 0xfe, 0xfb, 0xfd, 0xfb, 0xfd, 0xba, 0xfd, 0xb8, 0xfd, + 0x7a, 0xfd, 0x7b, 0xfd, 0x3e, 0xfd, 0x3c, 0xfd, 0x06, 0xfd, 0x05, 0xfd, + 0xcf, 0xfc, 0xcf, 0xfc, 0x9f, 0xfc, 0x9d, 0xfc, 0x6f, 0xfc, 0x70, 0xfc, + 0x45, 0xfc, 0x44, 0xfc, 0x1d, 0xfc, 0x1d, 0xfc, 0xfd, 0xfb, 0xfd, 0xfb, + 0xde, 0xfb, 0xde, 0xfb, 0xc8, 0xfb, 0xc7, 0xfb, 0xb3, 0xfb, 0xb3, 0xfb, + 0xa5, 0xfb, 0xa4, 0xfb, 0x9a, 0xfb, 0x9b, 0xfb, 0x97, 0xfb, 0x95, 0xfb, + 0x98, 0xfb, 0x97, 0xfb, 0x9c, 0xfb, 0x9c, 0xfb, 0xa8, 0xfb, 0xa8, 0xfb, + 0xb7, 0xfb, 0xb7, 0xfb, 0xcd, 0xfb, 0xcc, 0xfb, 0xe5, 0xfb, 0xe5, 0xfb, + 0x03, 0xfc, 0x02, 0xfc, 0x28, 0xfc, 0x28, 0xfc, 0x4d, 0xfc, 0x4d, 0xfc, + 0x7b, 0xfc, 0x7a, 0xfc, 0xa8, 0xfc, 0xa7, 0xfc, 0xdd, 0xfc, 0xdc, 0xfc, + 0x14, 0xfd, 0x13, 0xfd, 0x4c, 0xfd, 0x4b, 0xfd, 0x8d, 0xfd, 0x8c, 0xfd, + 0xc8, 0xfd, 0xc7, 0xfd, 0x0d, 0xfe, 0x0d, 0xfe, 0x53, 0xfe, 0x4f, 0xfe, + 0x94, 0xfe, 0x96, 0xfe, 0xe0, 0xfe, 0xdd, 0xfe, 0x25, 0xff, 0x26, 0xff, + 0x72, 0xff, 0x70, 0xff, 0xb9, 0xff, 0xb6, 0xff, 0x05, 0x00, 0x05, 0x00, + 0x4d, 0x00, 0x4b, 0x00, 0x95, 0x00, 0x95, 0x00, 0xdf, 0x00, 0xdf, 0x00, + 0x24, 0x01, 0x21, 0x01, 0x69, 0x01, 0x6b, 0x01, 0xad, 0x01, 0xab, 0x01, + 0xf0, 0x01, 0xef, 0x01, 0x2d, 0x02, 0x2d, 0x02, 0x69, 0x02, 0x68, 0x02, + 0xa1, 0x02, 0xa1, 0x02, 0xd6, 0x02, 0xd4, 0x02, 0x09, 0x03, 0x07, 0x03, + 0x34, 0x03, 0x36, 0x03, 0x5f, 0x03, 0x5d, 0x03, 0x83, 0x03, 0x83, 0x03, + 0xa4, 0x03, 0xa3, 0x03, 0xc1, 0x03, 0xc0, 0x03, 0xd7, 0x03, 0xd7, 0x03, + 0xea, 0x03, 0xea, 0x03, 0xf8, 0x03, 0xf6, 0x03, 0x01, 0x04, 0x01, 0x04, + 0x04, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0xfc, 0x03, 0xfa, 0x03, + 0xf0, 0x03, 0xef, 0x03, 0xe0, 0x03, 0xe0, 0x03, 0xc9, 0x03, 0xc7, 0x03, + 0xaf, 0x03, 0xae, 0x03, 0x8e, 0x03, 0x8e, 0x03, 0x6d, 0x03, 0x6a, 0x03, + 0x42, 0x03, 0x42, 0x03, 0x16, 0x03, 0x14, 0x03, 0xe6, 0x02, 0xe6, 0x02, + 0xb0, 0x02, 0xaf, 0x02, 0x7a, 0x02, 0x79, 0x02, 0x3e, 0x02, 0x3e, 0x02, + 0xff, 0x01, 0xfe, 0x01, 0xc1, 0x01, 0xc0, 0x01, 0x79, 0x01, 0x79, 0x01, + 0x39, 0x01, 0x36, 0x01, 0xef, 0x00, 0xee, 0x00, 0xa8, 0x00, 0xa6, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x11, 0x00, 0x10, 0x00, 0xc9, 0xff, 0xc9, 0xff, + 0x7d, 0xff, 0x7b, 0xff, 0x34, 0xff, 0x35, 0xff, 0xea, 0xfe, 0xe7, 0xfe, + 0xa3, 0xfe, 0xa2, 0xfe, 0x5a, 0xfe, 0x5a, 0xfe, 0x18, 0xfe, 0x15, 0xfe, + 0xd3, 0xfd, 0xd3, 0xfd, 0x95, 0xfd, 0x93, 0xfd, 0x59, 0xfd, 0x59, 0xfd, + 0x1b, 0xfd, 0x1b, 0xfd, 0xe8, 0xfc, 0xe6, 0xfc, 0xb0, 0xfc, 0xb0, 0xfc, + 0x85, 0xfc, 0x84, 0xfc, 0x57, 0xfc, 0x57, 0xfc, 0x31, 0xfc, 0x32, 0xfc, + 0x10, 0xfc, 0x11, 0xfc, 0xf1, 0xfb, 0xef, 0xfb, 0xdb, 0xfb, 0xdc, 0xfb, + 0xc5, 0xfb, 0xc4, 0xfb, 0xb8, 0xfb, 0xb7, 0xfb, 0xac, 0xfb, 0xac, 0xfb, + 0xa9, 0xfb, 0xa9, 0xfb, 0xa8, 0xfb, 0xa7, 0xfb, 0xad, 0xfb, 0xad, 0xfb, + 0xba, 0xfb, 0xbb, 0xfb, 0xc7, 0xfb, 0xc6, 0xfb, 0xe1, 0xfb, 0xdf, 0xfb, + 0xf9, 0xfb, 0xf8, 0xfb, 0x18, 0xfc, 0x17, 0xfc, 0x3e, 0xfc, 0x3f, 0xfc, + 0x67, 0xfc, 0x67, 0xfc, 0x9a, 0xfc, 0x99, 0xfc, 0xcb, 0xfc, 0xcc, 0xfc, + 0x05, 0xfd, 0x05, 0xfd, 0x41, 0xfd, 0x40, 0xfd, 0x7d, 0xfd, 0x7e, 0xfd, + 0xc0, 0xfd, 0xbe, 0xfd, 0xfd, 0xfd, 0x00, 0xfe, 0x46, 0xfe, 0x43, 0xfe, + 0x83, 0xfe, 0x87, 0xfe, 0xcd, 0xfe, 0xcb, 0xfe, 0x0d, 0xff, 0x0e, 0xff, + 0x54, 0xff, 0x53, 0xff, 0x95, 0xff, 0x96, 0xff, 0xda, 0xff, 0xda, 0xff, + 0x1c, 0x00, 0x1b, 0x00, 0x5f, 0x00, 0x60, 0x00, 0xa0, 0x00, 0x9e, 0x00, + 0xdf, 0x00, 0xdf, 0x00, 0x1b, 0x01, 0x19, 0x01, 0x58, 0x01, 0x57, 0x01, + 0x8e, 0x01, 0x8f, 0x01, 0xca, 0x01, 0xc8, 0x01, 0xfc, 0x01, 0xfd, 0x01, + 0x32, 0x02, 0x32, 0x02, 0x66, 0x02, 0x65, 0x02, 0x9c, 0x02, 0x9e, 0x02, + 0xde, 0x02, 0xdb, 0x02, 0x18, 0x03, 0x1a, 0x03, 0x52, 0x03, 0x4f, 0x03, + 0x84, 0x03, 0x86, 0x03, 0xb5, 0x03, 0xb3, 0x03, 0xdc, 0x03, 0xdc, 0x03, + 0x01, 0x04, 0x00, 0x04, 0x1f, 0x04, 0x1e, 0x04, 0x39, 0x04, 0x38, 0x04, + 0x4f, 0x04, 0x4c, 0x04, 0x5d, 0x04, 0x5f, 0x04, 0x6c, 0x04, 0x6b, 0x04, + 0x72, 0x04, 0x73, 0x04, 0x79, 0x04, 0x79, 0x04, 0x78, 0x04, 0x79, 0x04, + 0x75, 0x04, 0x74, 0x04, 0x67, 0x04, 0x68, 0x04, 0x53, 0x04, 0x52, 0x04, + 0x3c, 0x04, 0x3c, 0x04, 0x19, 0x04, 0x19, 0x04, 0xf8, 0x03, 0xf9, 0x03, + 0xcb, 0x03, 0xca, 0x03, 0x9a, 0x03, 0x9b, 0x03, 0x66, 0x03, 0x64, 0x03, + 0x29, 0x03, 0x2a, 0x03, 0xe9, 0x02, 0xe9, 0x02, 0xa5, 0x02, 0xa4, 0x02, + 0x5b, 0x02, 0x5b, 0x02, 0x0e, 0x02, 0x0e, 0x02, 0xbd, 0x01, 0xbd, 0x01, + 0x69, 0x01, 0x69, 0x01, 0x13, 0x01, 0x13, 0x01, 0xbb, 0x00, 0xba, 0x00, + 0x5f, 0x00, 0x60, 0x00, 0x06, 0x00, 0x07, 0x00, 0xa7, 0xff, 0xa7, 0xff, + 0x4d, 0xff, 0x4c, 0xff, 0xef, 0xfe, 0xf1, 0xfe, 0x95, 0xfe, 0x93, 0xfe, + 0x3d, 0xfe, 0x3c, 0xfe, 0xe1, 0xfd, 0xe4, 0xfd, 0x8f, 0xfd, 0x8d, 0xfd, + 0x3a, 0xfd, 0x3c, 0xfd, 0xee, 0xfc, 0xec, 0xfc, 0xa2, 0xfc, 0xa2, 0xfc, + 0x5b, 0xfc, 0x5a, 0xfc, 0x17, 0xfc, 0x18, 0xfc, 0xda, 0xfb, 0xdb, 0xfb, + 0xa0, 0xfb, 0xa1, 0xfb, 0x6e, 0xfb, 0x6d, 0xfb, 0x3e, 0xfb, 0x3f, 0xfb, + 0x16, 0xfb, 0x15, 0xfb, 0xf5, 0xfa, 0xf5, 0xfa, 0xd6, 0xfa, 0xd9, 0xfa, + 0xc6, 0xfa, 0xc0, 0xfa, 0xaf, 0xfa, 0xb3, 0xfa, 0xaa, 0xfa, 0xa8, 0xfa, + 0xa5, 0xfa, 0xa5, 0xfa, 0xaa, 0xfa, 0xa8, 0xfa, 0xb4, 0xfa, 0xb4, 0xfa, + 0xc5, 0xfa, 0xc4, 0xfa, 0xdc, 0xfa, 0xdb, 0xfa, 0xfb, 0xfa, 0xf9, 0xfa, + 0x21, 0xfb, 0x21, 0xfb, 0x4d, 0xfb, 0x4c, 0xfb, 0x80, 0xfb, 0x7e, 0xfb, + 0xb8, 0xfb, 0xb7, 0xfb, 0xfa, 0xfb, 0xf8, 0xfb, 0x3d, 0xfc, 0x3c, 0xfc, + 0x88, 0xfc, 0x89, 0xfc, 0xda, 0xfc, 0xd9, 0xfc, 0x31, 0xfd, 0x30, 0xfd, + 0x8d, 0xfd, 0x8c, 0xfd, 0xed, 0xfd, 0xec, 0xfd, 0x55, 0xfe, 0x51, 0xfe, + 0xbc, 0xfe, 0xbd, 0xfe, 0x2d, 0xff, 0x2a, 0xff, 0x9c, 0xff, 0x9c, 0xff, + 0x0f, 0x00, 0x0c, 0x00, 0x85, 0x00, 0x85, 0x00, 0xfb, 0x00, 0xf9, 0x00, + 0x76, 0x01, 0x75, 0x01, 0xec, 0x01, 0xeb, 0x01, 0x65, 0x02, 0x65, 0x02, + 0xdd, 0x02, 0xdd, 0x02, 0x52, 0x03, 0x51, 0x03, 0xc6, 0x03, 0xc7, 0x03, + 0x38, 0x04, 0x37, 0x04, 0xa2, 0x04, 0xa3, 0x04, 0x0e, 0x05, 0x0d, 0x05, + 0x6d, 0x05, 0x6f, 0x05, 0xce, 0x05, 0xcd, 0x05, 0x24, 0x06, 0x26, 0x06, + 0x75, 0x06, 0x73, 0x06, 0xbf, 0x06, 0xbf, 0x06, 0xfe, 0x06, 0x00, 0x07, + 0x39, 0x07, 0x37, 0x07, 0x67, 0x07, 0x6a, 0x07, 0x91, 0x07, 0x91, 0x07, + 0xae, 0x07, 0xae, 0x07, 0xc3, 0x07, 0xc2, 0x07, 0xce, 0x07, 0xcc, 0x07, + 0xce, 0x07, 0xcf, 0x07, 0xc7, 0x07, 0xc5, 0x07, 0xb1, 0x07, 0xb4, 0x07, + 0x98, 0x07, 0x94, 0x07, 0x6e, 0x07, 0x70, 0x07, 0x41, 0x07, 0x3f, 0x07, + 0x03, 0x07, 0x06, 0x07, 0xc7, 0x06, 0xc5, 0x06, 0x79, 0x06, 0x7a, 0x06, + 0x2a, 0x06, 0x2a, 0x06, 0xcf, 0x05, 0xcd, 0x05, 0x6e, 0x05, 0x6f, 0x05, + 0x07, 0x05, 0x05, 0x05, 0x98, 0x04, 0x98, 0x04, 0x25, 0x04, 0x25, 0x04, + 0xab, 0x03, 0xab, 0x03, 0x30, 0x03, 0x2f, 0x03, 0xac, 0x02, 0xab, 0x02, + 0x28, 0x02, 0x29, 0x02, 0xa0, 0x01, 0xa0, 0x01, 0x16, 0x01, 0x14, 0x01, + 0x89, 0x00, 0x8a, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0x70, 0xff, 0x6e, 0xff, + 0xdf, 0xfe, 0xe0, 0xfe, 0x53, 0xfe, 0x53, 0xfe, 0xcb, 0xfd, 0xcd, 0xfd, + 0x44, 0xfd, 0x41, 0xfd, 0xbf, 0xfc, 0xc2, 0xfc, 0x3c, 0xfc, 0x3b, 0xfc, + 0xbb, 0xfb, 0xbc, 0xfb, 0x42, 0xfb, 0x43, 0xfb, 0xca, 0xfa, 0xc9, 0xfa, + 0x58, 0xfa, 0x5b, 0xfa, 0xef, 0xf9, 0xed, 0xf9, 0x85, 0xf9, 0x88, 0xf9, + 0x2a, 0xf9, 0x2a, 0xf9, 0xd0, 0xf8, 0xd1, 0xf8, 0x83, 0xf8, 0x84, 0xf8, + 0x3c, 0xf8, 0x3c, 0xf8, 0xfe, 0xf7, 0x00, 0xf8, 0xcb, 0xf7, 0xc9, 0xf7, + 0xa1, 0xf7, 0xa0, 0xf7, 0x81, 0xf7, 0x80, 0xf7, 0x6a, 0xf7, 0x6b, 0xf7, + 0x60, 0xf7, 0x60, 0xf7, 0x61, 0xf7, 0x60, 0xf7, 0x6b, 0xf7, 0x6b, 0xf7, + 0x82, 0xf7, 0x82, 0xf7, 0xa5, 0xf7, 0xa5, 0xf7, 0xd2, 0xf7, 0xcf, 0xf7, + 0x0b, 0xf8, 0x0d, 0xf8, 0x4d, 0xf8, 0x4b, 0xf8, 0x9e, 0xf8, 0x9d, 0xf8, + 0xf3, 0xf8, 0xf4, 0xf8, 0x59, 0xf9, 0x56, 0xf9, 0xbf, 0xf9, 0xc2, 0xf9, + 0x34, 0xfa, 0x33, 0xfa, 0xb1, 0xfa, 0xaf, 0xfa, 0x2e, 0xfb, 0x31, 0xfb, + 0xbc, 0xfb, 0xba, 0xfb, 0x47, 0xfc, 0x48, 0xfc, 0xde, 0xfc, 0xde, 0xfc, + 0x75, 0xfd, 0x73, 0xfd, 0x11, 0xfe, 0x11, 0xfe, 0xaf, 0xfe, 0xb0, 0xfe, + 0x50, 0xff, 0x4e, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0x93, 0x00, 0x92, 0x00, + 0x32, 0x01, 0x2f, 0x01, 0xc4, 0x01, 0xc7, 0x01, 0x5c, 0x02, 0x59, 0x02, + 0xea, 0x02, 0xeb, 0x02, 0x77, 0x03, 0x76, 0x03, 0x03, 0x04, 0x02, 0x04, + 0x88, 0x04, 0x89, 0x04, 0x09, 0x05, 0x06, 0x05, 0x82, 0x05, 0x84, 0x05, + 0xf8, 0x05, 0xf5, 0x05, 0x66, 0x06, 0x66, 0x06, 0xca, 0x06, 0xc9, 0x06, + 0x29, 0x07, 0x28, 0x07, 0x7d, 0x07, 0x7e, 0x07, 0xcb, 0x07, 0xc8, 0x07, + 0x0d, 0x08, 0x0d, 0x08, 0x47, 0x08, 0x44, 0x08, 0x75, 0x08, 0x77, 0x08, + 0x9c, 0x08, 0x9a, 0x08, 0xb7, 0x08, 0xb8, 0x08, 0xc9, 0x08, 0xc5, 0x08, + 0xcf, 0x08, 0xd0, 0x08, 0xc8, 0x08, 0xc5, 0x08, 0xb9, 0x08, 0xb9, 0x08, + 0x9d, 0x08, 0x9b, 0x08, 0x76, 0x08, 0x75, 0x08, 0x44, 0x08, 0x43, 0x08, + 0x07, 0x08, 0x06, 0x08, 0xbf, 0x07, 0xc0, 0x07, 0x70, 0x07, 0x6d, 0x07, + 0x13, 0x07, 0x13, 0x07, 0xad, 0x06, 0xad, 0x06, 0x3f, 0x06, 0x3f, 0x06, + 0xc9, 0x05, 0xc7, 0x05, 0x4b, 0x05, 0x4c, 0x05, 0xc4, 0x04, 0xc2, 0x04, + 0x37, 0x04, 0x37, 0x04, 0xa2, 0x03, 0xa3, 0x03, 0x0b, 0x03, 0x09, 0x03, + 0x6d, 0x02, 0x6d, 0x02, 0xcb, 0x01, 0xca, 0x01, 0x26, 0x01, 0x25, 0x01, + 0x80, 0x00, 0x7f, 0x00, 0xd6, 0xff, 0xd5, 0xff, 0x2c, 0xff, 0x2b, 0xff, + 0x82, 0xfe, 0x83, 0xfe, 0xdd, 0xfd, 0xdb, 0xfd, 0x3b, 0xfd, 0x3d, 0xfd, + 0x9f, 0xfc, 0x9d, 0xfc, 0x04, 0xfc, 0x05, 0xfc, 0x6c, 0xfb, 0x6c, 0xfb, + 0xdb, 0xfa, 0xda, 0xfa, 0x4a, 0xfa, 0x4a, 0xfa, 0xc4, 0xf9, 0xc4, 0xf9, + 0x41, 0xf9, 0x40, 0xf9, 0xc7, 0xf8, 0xc7, 0xf8, 0x54, 0xf8, 0x55, 0xf8, + 0xed, 0xf7, 0xea, 0xf7, 0x8b, 0xf7, 0x8b, 0xf7, 0x34, 0xf7, 0x33, 0xf7, + 0xe8, 0xf6, 0xe7, 0xf6, 0xa5, 0xf6, 0xa4, 0xf6, 0x6d, 0xf6, 0x6c, 0xf6, + 0x3f, 0xf6, 0x3f, 0xf6, 0x1f, 0xf6, 0x1d, 0xf6, 0x09, 0xf6, 0x08, 0xf6, + 0x00, 0xf6, 0xff, 0xf5, 0x01, 0xf6, 0x00, 0xf6, 0x10, 0xf6, 0x0f, 0xf6, + 0x2a, 0xf6, 0x2a, 0xf6, 0x4f, 0xf6, 0x4d, 0xf6, 0x84, 0xf6, 0x84, 0xf6, + 0xbf, 0xf6, 0xbf, 0xf6, 0x08, 0xf7, 0x08, 0xf7, 0x5e, 0xf7, 0x5c, 0xf7, + 0xb7, 0xf7, 0xb8, 0xf7, 0x24, 0xf8, 0x23, 0xf8, 0x92, 0xf8, 0x93, 0xf8, + 0x10, 0xf9, 0x0f, 0xf9, 0x8f, 0xf9, 0x91, 0xf9, 0x1d, 0xfa, 0x1b, 0xfa, + 0xaf, 0xfa, 0xb0, 0xfa, 0x46, 0xfb, 0x45, 0xfb, 0xe5, 0xfb, 0xe6, 0xfb, + 0x85, 0xfc, 0x83, 0xfc, 0x2d, 0xfd, 0x2e, 0xfd, 0xd7, 0xfd, 0xd7, 0xfd, + 0x82, 0xfe, 0x82, 0xfe, 0x31, 0xff, 0x33, 0xff, 0xe2, 0xff, 0xe2, 0xff, + 0x93, 0x00, 0x92, 0x00, 0x42, 0x01, 0x42, 0x01, 0xec, 0x01, 0xef, 0x01, + 0x98, 0x02, 0x96, 0x02, 0x3c, 0x03, 0x3d, 0x03, 0xde, 0x03, 0xdc, 0x03, + 0x7c, 0x04, 0x7b, 0x04, 0x15, 0x05, 0x15, 0x05, 0xab, 0x05, 0xab, 0x05, + 0x37, 0x06, 0x37, 0x06, 0xc1, 0x06, 0xbf, 0x06, 0x40, 0x07, 0x41, 0x07, + 0xb8, 0x07, 0xb6, 0x07, 0x27, 0x08, 0x2a, 0x08, 0x90, 0x08, 0x8c, 0x08, + 0xeb, 0x08, 0xea, 0x08, 0x3d, 0x09, 0x3f, 0x09, 0x86, 0x09, 0x83, 0x09, + 0xc3, 0x09, 0xc5, 0x09, 0xf4, 0x09, 0xf2, 0x09, 0x1b, 0x0a, 0x1c, 0x0a, + 0x32, 0x0a, 0x34, 0x0a, 0x45, 0x0a, 0x43, 0x0a, 0x45, 0x0a, 0x47, 0x0a, + 0x3b, 0x0a, 0x3a, 0x0a, 0x25, 0x0a, 0x27, 0x0a, 0x02, 0x0a, 0x02, 0x0a, + 0xd4, 0x09, 0xd6, 0x09, 0x99, 0x09, 0x99, 0x09, 0x53, 0x09, 0x53, 0x09, + 0x01, 0x09, 0x00, 0x09, 0xa4, 0x08, 0xa5, 0x08, 0x3f, 0x08, 0x3f, 0x08, + 0xcd, 0x07, 0xce, 0x07, 0x53, 0x07, 0x54, 0x07, 0xd2, 0x06, 0xd2, 0x06, + 0x48, 0x06, 0x47, 0x06, 0xb6, 0x05, 0xb7, 0x05, 0x1d, 0x05, 0x1f, 0x05, + 0x82, 0x04, 0x7e, 0x04, 0xdd, 0x03, 0xdf, 0x03, 0x37, 0x03, 0x36, 0x03, + 0x8d, 0x02, 0x8e, 0x02, 0xdf, 0x01, 0xe0, 0x01, 0x33, 0x01, 0x32, 0x01, + 0x82, 0x00, 0x82, 0x00, 0xd4, 0xff, 0xd6, 0xff, 0x27, 0xff, 0x24, 0xff, + 0x79, 0xfe, 0x7a, 0xfe, 0xce, 0xfd, 0xcd, 0xfd, 0x2b, 0xfd, 0x28, 0xfd, + 0x87, 0xfc, 0x88, 0xfc, 0xea, 0xfb, 0xe9, 0xfb, 0x50, 0xfb, 0x4e, 0xfb, + 0xbb, 0xfa, 0xbc, 0xfa, 0x2e, 0xfa, 0x2c, 0xfa, 0xa8, 0xf9, 0xa7, 0xf9, + 0x28, 0xf9, 0x28, 0xf9, 0xb2, 0xf8, 0xb1, 0xf8, 0x44, 0xf8, 0x43, 0xf8, + 0xdd, 0xf7, 0xdd, 0xf7, 0x85, 0xf7, 0x84, 0xf7, 0x31, 0xf7, 0x31, 0xf7, + 0xee, 0xf6, 0xef, 0xf6, 0xb2, 0xf6, 0xb0, 0xf6, 0x82, 0xf6, 0x80, 0xf6, + 0x5f, 0xf6, 0x5f, 0xf6, 0x44, 0xf6, 0x42, 0xf6, 0x36, 0xf6, 0x38, 0xf6, + 0x3a, 0xf6, 0x38, 0xf6, 0x42, 0xf6, 0x41, 0xf6, 0x5f, 0xf6, 0x5e, 0xf6, + 0x7f, 0xf6, 0x7f, 0xf6, 0xb2, 0xf6, 0xb2, 0xf6, 0xee, 0xf6, 0xed, 0xf6, + 0x32, 0xf7, 0x32, 0xf7, 0x87, 0xf7, 0x86, 0xf7, 0xe1, 0xf7, 0xe1, 0xf7, + 0x49, 0xf8, 0x46, 0xf8, 0xb7, 0xf8, 0xba, 0xf8, 0x32, 0xf9, 0x2f, 0xf9, + 0xb1, 0xf9, 0xb3, 0xf9, 0x39, 0xfa, 0x37, 0xfa, 0xca, 0xfa, 0xc8, 0xfa, + 0x5d, 0xfb, 0x5d, 0xfb, 0xf9, 0xfb, 0xf7, 0xfb, 0x98, 0xfc, 0x97, 0xfc, + 0x3a, 0xfd, 0x37, 0xfd, 0xdf, 0xfd, 0xe0, 0xfd, 0x88, 0xfe, 0x85, 0xfe, + 0x32, 0xff, 0x31, 0xff, 0xdb, 0xff, 0xd9, 0xff, 0x85, 0x00, 0x84, 0x00, + 0x2f, 0x01, 0x2e, 0x01, 0xd4, 0x01, 0xd1, 0x01, 0x7c, 0x02, 0x7b, 0x02, + 0x1c, 0x03, 0x1a, 0x03, 0xbc, 0x03, 0xbb, 0x03, 0x53, 0x04, 0x53, 0x04, + 0xe8, 0x04, 0xe6, 0x04, 0x78, 0x05, 0x77, 0x05, 0xff, 0x05, 0xfa, 0x05, + 0x81, 0x06, 0x80, 0x06, 0xf8, 0x06, 0xf7, 0x06, 0x69, 0x07, 0x66, 0x07, + 0xd2, 0x07, 0xd1, 0x07, 0x2e, 0x08, 0x2d, 0x08, 0x86, 0x08, 0x86, 0x08, + 0xce, 0x08, 0xcd, 0x08, 0x11, 0x09, 0x0e, 0x09, 0x44, 0x09, 0x42, 0x09, + 0x6f, 0x09, 0x6b, 0x09, 0x8f, 0x09, 0x8e, 0x09, 0x9f, 0x09, 0x9e, 0x09, + 0xa9, 0x09, 0xa8, 0x09, 0xa2, 0x09, 0xa0, 0x09, 0x94, 0x09, 0x92, 0x09, + 0x76, 0x09, 0x75, 0x09, 0x4d, 0x09, 0x4a, 0x09, 0x1b, 0x09, 0x19, 0x09, + 0xd9, 0x08, 0xd7, 0x08, 0x8f, 0x08, 0x8d, 0x08, 0x38, 0x08, 0x36, 0x08, + 0xd7, 0x07, 0xd6, 0x07, 0x6f, 0x07, 0x6d, 0x07, 0xf8, 0x06, 0xf8, 0x06, + 0x81, 0x06, 0x7e, 0x06, 0xfa, 0x05, 0xf9, 0x05, 0x6f, 0x05, 0x6e, 0x05, + 0xe0, 0x04, 0xde, 0x04, 0x44, 0x04, 0x44, 0x04, 0xab, 0x03, 0xa9, 0x03, + 0x07, 0x03, 0x06, 0x03, 0x64, 0x02, 0x64, 0x02, 0xbc, 0x01, 0xb9, 0x01, + 0x10, 0x01, 0x10, 0x01, 0x67, 0x00, 0x67, 0x00, 0xba, 0xff, 0xb8, 0xff, + 0x12, 0xff, 0x0f, 0xff, 0x64, 0xfe, 0x64, 0xfe, 0xbe, 0xfd, 0xba, 0xfd, + 0x19, 0xfd, 0x18, 0xfd, 0x75, 0xfc, 0x73, 0xfc, 0xd9, 0xfb, 0xd6, 0xfb, + 0x3c, 0xfb, 0x3d, 0xfb, 0xa9, 0xfa, 0xa8, 0xfa, 0x1b, 0xfa, 0x19, 0xfa, + 0x92, 0xf9, 0x91, 0xf9, 0x16, 0xf9, 0x12, 0xf9, 0x97, 0xf8, 0x99, 0xf8, + 0x2c, 0xf8, 0x2a, 0xf8, 0xc3, 0xf7, 0xc1, 0xf7, 0x65, 0xf7, 0x66, 0xf7, + 0x12, 0xf7, 0x0f, 0xf7, 0xc7, 0xf6, 0xc7, 0xf6, 0x89, 0xf6, 0x88, 0xf6, + 0x54, 0xf6, 0x52, 0xf6, 0x2c, 0xf6, 0x2b, 0xf6, 0x0d, 0xf6, 0x0c, 0xf6, + 0xfe, 0xf5, 0xfc, 0xf5, 0xf5, 0xf5, 0xf4, 0xf5, 0xfc, 0xf5, 0xfa, 0xf5, + 0x0d, 0xf6, 0x0b, 0xf6, 0x29, 0xf6, 0x28, 0xf6, 0x54, 0xf6, 0x53, 0xf6, + 0x86, 0xf6, 0x84, 0xf6, 0xca, 0xf6, 0xc8, 0xf6, 0x11, 0xf7, 0x10, 0xf7, + 0x69, 0xf7, 0x68, 0xf7, 0xc7, 0xf7, 0xc5, 0xf7, 0x32, 0xf8, 0x31, 0xf8, + 0xa3, 0xf8, 0xa2, 0xf8, 0x1e, 0xf9, 0x1e, 0xf9, 0xa1, 0xf9, 0x9f, 0xf9, + 0x2b, 0xfa, 0x29, 0xfa, 0xbb, 0xfa, 0xbb, 0xfa, 0x51, 0xfb, 0x4f, 0xfb, + 0xec, 0xfb, 0xeb, 0xfb, 0x8c, 0xfc, 0x8a, 0xfc, 0x2e, 0xfd, 0x2b, 0xfd, + 0xd4, 0xfd, 0xd3, 0xfd, 0x7b, 0xfe, 0x79, 0xfe, 0x24, 0xff, 0x23, 0xff, + 0xcd, 0xff, 0xcc, 0xff, 0x77, 0x00, 0x75, 0x00, 0x21, 0x01, 0x1f, 0x01, + 0xc5, 0x01, 0xc4, 0x01, 0x6c, 0x02, 0x6a, 0x02, 0x09, 0x03, 0x09, 0x03, + 0xa9, 0x03, 0xa6, 0x03, 0x40, 0x04, 0x3e, 0x04, 0xd1, 0x04, 0xd1, 0x04, + 0x61, 0x05, 0x5d, 0x05, 0xe7, 0x05, 0xe6, 0x05, 0x67, 0x06, 0x64, 0x06, + 0xdf, 0x06, 0xdd, 0x06, 0x4d, 0x07, 0x4c, 0x07, 0xb6, 0x07, 0xb3, 0x07, + 0x14, 0x08, 0x12, 0x08, 0x65, 0x08, 0x64, 0x08, 0xb1, 0x08, 0xae, 0x08, + 0xef, 0x08, 0xed, 0x08, 0x25, 0x09, 0x23, 0x09, 0x4d, 0x09, 0x4c, 0x09, + 0x6c, 0x09, 0x6a, 0x09, 0x80, 0x09, 0x7e, 0x09, 0x85, 0x09, 0x85, 0x09, + 0x83, 0x09, 0x81, 0x09, 0x73, 0x09, 0x71, 0x09, 0x54, 0x09, 0x55, 0x09, + 0x30, 0x09, 0x2d, 0x09, 0xfb, 0x08, 0xfb, 0x08, 0xbf, 0x08, 0xbe, 0x08, + 0x76, 0x08, 0x74, 0x08, 0x25, 0x08, 0x24, 0x08, 0xc9, 0x07, 0xc7, 0x07, + 0x64, 0x07, 0x62, 0x07, 0xf6, 0x06, 0xf5, 0x06, 0x80, 0x06, 0x80, 0x06, + 0x04, 0x06, 0x04, 0x06, 0x81, 0x05, 0x7f, 0x05, 0xf6, 0x04, 0xf5, 0x04, + 0x67, 0x04, 0x66, 0x04, 0xd2, 0x03, 0xd2, 0x03, 0x3c, 0x03, 0x3b, 0x03, + 0x9f, 0x02, 0x9e, 0x02, 0x01, 0x02, 0x00, 0x02, 0x63, 0x01, 0x62, 0x01, + 0xc1, 0x00, 0xc0, 0x00, 0x22, 0x00, 0x22, 0x00, 0x80, 0xff, 0x7e, 0xff, + 0xe2, 0xfe, 0xe2, 0xfe, 0x46, 0xfe, 0x44, 0xfe, 0xaa, 0xfd, 0xa9, 0xfd, + 0x14, 0xfd, 0x12, 0xfd, 0x7f, 0xfc, 0x7e, 0xfc, 0xef, 0xfb, 0xef, 0xfb, + 0x66, 0xfb, 0x65, 0xfb, 0xe1, 0xfa, 0xe1, 0xfa, 0x66, 0xfa, 0x64, 0xfa, + 0xee, 0xf9, 0xec, 0xf9, 0x7f, 0xf9, 0x7f, 0xf9, 0x18, 0xf9, 0x17, 0xf9, + 0xb9, 0xf8, 0xb7, 0xf8, 0x63, 0xf8, 0x63, 0xf8, 0x16, 0xf8, 0x12, 0xf8, + 0xd4, 0xf7, 0xd3, 0xf7, 0x99, 0xf7, 0x99, 0xf7, 0x6c, 0xf7, 0x6c, 0xf7, + 0x47, 0xf7, 0x46, 0xf7, 0x2e, 0xf7, 0x2d, 0xf7, 0x22, 0xf7, 0x20, 0xf7, + 0x1d, 0xf7, 0x1c, 0xf7, 0x25, 0xf7, 0x24, 0xf7, 0x39, 0xf7, 0x39, 0xf7, + 0x56, 0xf7, 0x54, 0xf7, 0x81, 0xf7, 0x81, 0xf7, 0xb2, 0xf7, 0xb2, 0xf7, + 0xf1, 0xf7, 0xef, 0xf7, 0x3c, 0xf8, 0x3d, 0xf8, 0x8c, 0xf8, 0x8b, 0xf8, + 0xeb, 0xf8, 0xeb, 0xf8, 0x4f, 0xf9, 0x50, 0xf9, 0xbe, 0xf9, 0xba, 0xf9, + 0x35, 0xfa, 0x36, 0xfa, 0xb1, 0xfa, 0xb0, 0xfa, 0x33, 0xfb, 0x33, 0xfb, + 0xbf, 0xfb, 0xbe, 0xfb, 0x4c, 0xfc, 0x4b, 0xfc, 0xe3, 0xfc, 0xe2, 0xfc, + 0x7b, 0xfd, 0x7a, 0xfd, 0x14, 0xfe, 0x13, 0xfe, 0xb4, 0xfe, 0xb1, 0xfe, + 0x50, 0xff, 0x51, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0x8e, 0x00, 0x8f, 0x00, + 0x33, 0x01, 0x30, 0x01, 0xcd, 0x01, 0xcc, 0x01, 0x6c, 0x02, 0x6b, 0x02, + 0x07, 0x03, 0x07, 0x03, 0x9b, 0x03, 0x9a, 0x03, 0x32, 0x04, 0x2f, 0x04, + 0xbb, 0x04, 0xbb, 0x04, 0x47, 0x05, 0x45, 0x05, 0xc9, 0x05, 0xc7, 0x05, + 0x45, 0x06, 0x45, 0x06, 0xbc, 0x06, 0xb7, 0x06, 0x28, 0x07, 0x27, 0x07, + 0x8e, 0x07, 0x8c, 0x07, 0xec, 0x07, 0xea, 0x07, 0x41, 0x08, 0x41, 0x08, + 0x8c, 0x08, 0x89, 0x08, 0xcd, 0x08, 0xcc, 0x08, 0x05, 0x09, 0x03, 0x09, + 0x30, 0x09, 0x2e, 0x09, 0x53, 0x09, 0x51, 0x09, 0x68, 0x09, 0x68, 0x09, + 0x79, 0x09, 0x77, 0x09, 0x77, 0x09, 0x76, 0x09, 0x71, 0x09, 0x70, 0x09, + 0x5c, 0x09, 0x59, 0x09, 0x3a, 0x09, 0x3a, 0x09, 0x14, 0x09, 0x10, 0x09, + 0xda, 0x08, 0xdb, 0x08, 0x9e, 0x08, 0x9b, 0x08, 0x53, 0x08, 0x52, 0x08, + 0x01, 0x08, 0xfe, 0x07, 0xa5, 0x07, 0xa2, 0x07, 0x3d, 0x07, 0x3d, 0x07, + 0xd4, 0x06, 0xd2, 0x06, 0x5e, 0x06, 0x5c, 0x06, 0xe2, 0x05, 0xe2, 0x05, + 0x62, 0x05, 0x60, 0x05, 0xda, 0x04, 0xda, 0x04, 0x4d, 0x04, 0x4a, 0x04, + 0xbb, 0x03, 0xbb, 0x03, 0x25, 0x03, 0x23, 0x03, 0x8f, 0x02, 0x8f, 0x02, + 0xf3, 0x01, 0xf2, 0x01, 0x57, 0x01, 0x56, 0x01, 0xbb, 0x00, 0xbb, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x81, 0xff, 0x80, 0xff, 0xe3, 0xfe, 0xe1, 0xfe, + 0x4c, 0xfe, 0x4b, 0xfe, 0xb1, 0xfd, 0xb2, 0xfd, 0x1f, 0xfd, 0x1d, 0xfd, + 0x90, 0xfc, 0x8f, 0xfc, 0x02, 0xfc, 0xff, 0xfb, 0x7e, 0xfb, 0x7c, 0xfb, + 0xfa, 0xfa, 0xf8, 0xfa, 0x80, 0xfa, 0x7e, 0xfa, 0x0d, 0xfa, 0x0c, 0xfa, + 0x9e, 0xf9, 0x9d, 0xf9, 0x3c, 0xf9, 0x3b, 0xf9, 0xdd, 0xf8, 0xdc, 0xf8, + 0x8b, 0xf8, 0x8a, 0xf8, 0x41, 0xf8, 0x3f, 0xf8, 0xfb, 0xf7, 0xfa, 0xf7, + 0xc9, 0xf7, 0xc6, 0xf7, 0x96, 0xf7, 0x97, 0xf7, 0x74, 0xf7, 0x72, 0xf7, + 0x5a, 0xf7, 0x5a, 0xf7, 0x4a, 0xf7, 0x4b, 0xf7, 0x4a, 0xf7, 0x46, 0xf7, + 0x4c, 0xf7, 0x4e, 0xf7, 0x60, 0xf7, 0x5f, 0xf7, 0x7c, 0xf7, 0x7b, 0xf7, + 0xa4, 0xf7, 0xa4, 0xf7, 0xd5, 0xf7, 0xd4, 0xf7, 0x10, 0xf8, 0x10, 0xf8, + 0x56, 0xf8, 0x55, 0xf8, 0xa5, 0xf8, 0xa2, 0xf8, 0xfa, 0xf8, 0xfb, 0xf8, + 0x5c, 0xf9, 0x5b, 0xf9, 0xc3, 0xf9, 0xc0, 0xf9, 0x32, 0xfa, 0x32, 0xfa, + 0xa9, 0xfa, 0xa8, 0xfa, 0x25, 0xfb, 0x23, 0xfb, 0xa7, 0xfb, 0xa8, 0xfb, + 0x2b, 0xfc, 0x29, 0xfc, 0xb9, 0xfc, 0xb9, 0xfc, 0x45, 0xfd, 0x46, 0xfd, + 0xd9, 0xfd, 0xd7, 0xfd, 0x69, 0xfe, 0x6a, 0xfe, 0x00, 0xff, 0xfe, 0xfe, + 0x95, 0xff, 0x96, 0xff, 0x2c, 0x00, 0x29, 0x00, 0xbf, 0x00, 0xc0, 0x00, + 0x55, 0x01, 0x54, 0x01, 0xe6, 0x01, 0xe6, 0x01, 0x76, 0x02, 0x77, 0x02, + 0x01, 0x03, 0x00, 0x03, 0x8b, 0x03, 0x8b, 0x03, 0x0e, 0x04, 0x0e, 0x04, + 0x8c, 0x04, 0x8c, 0x04, 0x07, 0x05, 0x07, 0x05, 0x79, 0x05, 0x7a, 0x05, + 0xe6, 0x05, 0xe5, 0x05, 0x4a, 0x06, 0x4c, 0x06, 0xa7, 0x06, 0xa5, 0x06, + 0xfe, 0x06, 0x00, 0x07, 0x4a, 0x07, 0x49, 0x07, 0x8f, 0x07, 0x8f, 0x07, + 0xca, 0x07, 0xcb, 0x07, 0xfd, 0x07, 0xf9, 0x07, 0x22, 0x08, 0x23, 0x08, + 0x42, 0x08, 0x3f, 0x08, 0x55, 0x08, 0x56, 0x08, 0x5e, 0x08, 0x5d, 0x08, + 0x5d, 0x08, 0x5d, 0x08, 0x53, 0x08, 0x51, 0x08, 0x3b, 0x08, 0x3d, 0x08, + 0x1e, 0x08, 0x1d, 0x08, 0xf3, 0x07, 0xf2, 0x07, 0xbf, 0x07, 0xc0, 0x07, + 0x81, 0x07, 0x80, 0x07, 0x3a, 0x07, 0x3a, 0x07, 0xeb, 0x06, 0xea, 0x06, + 0x8f, 0x06, 0x8f, 0x06, 0x2f, 0x06, 0x2f, 0x06, 0xc4, 0x05, 0xc3, 0x05, + 0x53, 0x05, 0x54, 0x05, 0xdc, 0x04, 0xda, 0x04, 0x60, 0x04, 0x5f, 0x04, + 0xd9, 0x03, 0xda, 0x03, 0x54, 0x03, 0x53, 0x03, 0xc7, 0x02, 0xc8, 0x02, + 0x37, 0x02, 0x37, 0x02, 0xa5, 0x01, 0xa4, 0x01, 0x11, 0x01, 0x10, 0x01, + 0x78, 0x00, 0x78, 0x00, 0xe4, 0xff, 0xe3, 0xff, 0x4c, 0xff, 0x4b, 0xff, + 0xb5, 0xfe, 0xb6, 0xfe, 0x21, 0xfe, 0x20, 0xfe, 0x8d, 0xfd, 0x8c, 0xfd, + 0xfb, 0xfc, 0xfb, 0xfc, 0x6f, 0xfc, 0x6c, 0xfc, 0xe4, 0xfb, 0xe5, 0xfb, + 0x60, 0xfb, 0x5e, 0xfb, 0xde, 0xfa, 0xdf, 0xfa, 0x65, 0xfa, 0x63, 0xfa, + 0xf0, 0xf9, 0xf0, 0xf9, 0x83, 0xf9, 0x82, 0xf9, 0x1d, 0xf9, 0x1c, 0xf9, + 0xbd, 0xf8, 0xbe, 0xf8, 0x69, 0xf8, 0x67, 0xf8, 0x19, 0xf8, 0x1a, 0xf8, + 0xd5, 0xf7, 0xd3, 0xf7, 0x99, 0xf7, 0x9a, 0xf7, 0x67, 0xf7, 0x66, 0xf7, + 0x3d, 0xf7, 0x3e, 0xf7, 0x20, 0xf7, 0x1f, 0xf7, 0x0b, 0xf7, 0x0a, 0xf7, + 0x03, 0xf7, 0x03, 0xf7, 0x01, 0xf7, 0x01, 0xf7, 0x0f, 0xf7, 0x0d, 0xf7, + 0x23, 0xf7, 0x22, 0xf7, 0x44, 0xf7, 0x44, 0xf7, 0x6d, 0xf7, 0x6f, 0xf7, + 0xa3, 0xf7, 0xa0, 0xf7, 0xde, 0xf7, 0xdf, 0xf7, 0x27, 0xf8, 0x26, 0xf8, + 0x76, 0xf8, 0x75, 0xf8, 0xcd, 0xf8, 0xce, 0xf8, 0x2c, 0xf9, 0x2b, 0xf9, + 0x95, 0xf9, 0x95, 0xf9, 0x04, 0xfa, 0x02, 0xfa, 0x79, 0xfa, 0x7a, 0xfa, + 0xf4, 0xfa, 0xf3, 0xfa, 0x72, 0xfb, 0x73, 0xfb, 0xfc, 0xfb, 0xf9, 0xfb, + 0x81, 0xfc, 0x84, 0xfc, 0x11, 0xfd, 0x0d, 0xfd, 0x9e, 0xfd, 0xa0, 0xfd, + 0x2e, 0xfe, 0x2e, 0xfe, 0xc6, 0xfe, 0xc4, 0xfe, 0x55, 0xff, 0x55, 0xff, + 0xe9, 0xff, 0xe9, 0xff, 0x7d, 0x00, 0x7c, 0x00, 0x0d, 0x01, 0x0d, 0x01, + 0x9d, 0x01, 0x9d, 0x01, 0x29, 0x02, 0x2b, 0x02, 0xb4, 0x02, 0xb4, 0x02, + 0x3b, 0x03, 0x3b, 0x03, 0xbc, 0x03, 0xbb, 0x03, 0x39, 0x04, 0x39, 0x04, + 0xb2, 0x04, 0xb0, 0x04, 0x23, 0x05, 0x23, 0x05, 0x8a, 0x05, 0x8d, 0x05, + 0xf1, 0x05, 0xf1, 0x05, 0x4d, 0x06, 0x4e, 0x06, 0xa2, 0x06, 0xa2, 0x06, + 0xef, 0x06, 0xee, 0x06, 0x32, 0x07, 0x32, 0x07, 0x6f, 0x07, 0x6e, 0x07, + 0x9f, 0x07, 0x9f, 0x07, 0xc6, 0x07, 0xc7, 0x07, 0xe6, 0x07, 0xe6, 0x07, + 0xfb, 0x07, 0xfa, 0x07, 0x04, 0x08, 0x06, 0x08, 0x04, 0x08, 0x05, 0x08, + 0xfd, 0x07, 0xfd, 0x07, 0xe8, 0x07, 0xea, 0x07, 0xca, 0x07, 0xca, 0x07, + 0xa5, 0x07, 0xa6, 0x07, 0x71, 0x07, 0x70, 0x07, 0x38, 0x07, 0x39, 0x07, + 0xf4, 0x06, 0xf4, 0x06, 0xa5, 0x06, 0xa6, 0x06, 0x50, 0x06, 0x50, 0x06, + 0xf0, 0x05, 0xf0, 0x05, 0x8d, 0x05, 0x8e, 0x05, 0x21, 0x05, 0x21, 0x05, + 0xaf, 0x04, 0xaf, 0x04, 0x36, 0x04, 0x35, 0x04, 0xb9, 0x03, 0xb8, 0x03, + 0x37, 0x03, 0x38, 0x03, 0xb2, 0x02, 0xb2, 0x02, 0x2a, 0x02, 0x28, 0x02, + 0x9b, 0x01, 0x9d, 0x01, 0x0f, 0x01, 0x0d, 0x01, 0x81, 0x00, 0x81, 0x00, + 0xef, 0xff, 0xed, 0xff, 0x60, 0xff, 0x61, 0xff, 0xd2, 0xfe, 0xd2, 0xfe, + 0x44, 0xfe, 0x44, 0xfe, 0xbb, 0xfd, 0xbb, 0xfd, 0x2d, 0xfd, 0x2d, 0xfd, + 0xab, 0xfc, 0xad, 0xfc, 0x28, 0xfc, 0x26, 0xfc, 0xaa, 0xfb, 0xac, 0xfb, + 0x33, 0xfb, 0x31, 0xfb, 0xbf, 0xfa, 0xc2, 0xfa, 0x54, 0xfa, 0x53, 0xfa, + 0xee, 0xf9, 0xf0, 0xf9, 0x8e, 0xf9, 0x8f, 0xf9, 0x35, 0xf9, 0x37, 0xf9, + 0xe9, 0xf8, 0xea, 0xf8, 0x9e, 0xf8, 0xa0, 0xf8, 0x64, 0xf8, 0x64, 0xf8, + 0x2b, 0xf8, 0x2d, 0xf8, 0x02, 0xf8, 0x02, 0xf8, 0xdd, 0xf7, 0xdf, 0xf7, + 0xc4, 0xf7, 0xc5, 0xf7, 0xb6, 0xf7, 0xb8, 0xf7, 0xb0, 0xf7, 0xb1, 0xf7, + 0xb6, 0xf7, 0xb9, 0xf7, 0xc4, 0xf7, 0xc2, 0xf7, 0xde, 0xf7, 0xe0, 0xf7, + 0xff, 0xf7, 0x00, 0xf8, 0x2b, 0xf8, 0x2d, 0xf8, 0x63, 0xf8, 0x63, 0xf8, + 0xa1, 0xf8, 0xa2, 0xf8, 0xed, 0xf8, 0xee, 0xf8, 0x3b, 0xf9, 0x3c, 0xf9, + 0x95, 0xf9, 0x98, 0xf9, 0xf7, 0xf9, 0xf8, 0xf9, 0x62, 0xfa, 0x62, 0xfa, + 0xd0, 0xfa, 0xd3, 0xfa, 0x46, 0xfb, 0x45, 0xfb, 0xc1, 0xfb, 0xc4, 0xfb, + 0x42, 0xfc, 0x44, 0xfc, 0xca, 0xfc, 0xcb, 0xfc, 0x51, 0xfd, 0x52, 0xfd, + 0xe1, 0xfd, 0xe1, 0xfd, 0x6a, 0xfe, 0x6d, 0xfe, 0x00, 0xff, 0xff, 0xfe, + 0x90, 0xff, 0x92, 0xff, 0x22, 0x00, 0x25, 0x00, 0xb7, 0x00, 0xb6, 0x00, + 0x46, 0x01, 0x49, 0x01, 0xd9, 0x01, 0xd9, 0x01, 0x66, 0x02, 0x69, 0x02, + 0xf4, 0x02, 0xf4, 0x02, 0x79, 0x03, 0x7b, 0x03, 0x01, 0x04, 0x01, 0x04, + 0x7e, 0x04, 0x80, 0x04, 0xfc, 0x04, 0xfd, 0x04, 0x71, 0x05, 0x73, 0x05, + 0xdf, 0x05, 0xe3, 0x05, 0x4a, 0x06, 0x49, 0x06, 0xa9, 0x06, 0xae, 0x06, + 0x05, 0x07, 0x06, 0x07, 0x57, 0x07, 0x59, 0x07, 0xa1, 0x07, 0xa3, 0x07, + 0xe2, 0x07, 0xe3, 0x07, 0x1a, 0x08, 0x1b, 0x08, 0x47, 0x08, 0x49, 0x08, + 0x6d, 0x08, 0x6e, 0x08, 0x88, 0x08, 0x89, 0x08, 0x98, 0x08, 0x9a, 0x08, + 0xa0, 0x08, 0xa1, 0x08, 0x9a, 0x08, 0x9f, 0x08, 0x90, 0x08, 0x8f, 0x08, + 0x77, 0x08, 0x79, 0x08, 0x55, 0x08, 0x58, 0x08, 0x2b, 0x08, 0x2c, 0x08, + 0xf4, 0x07, 0xf7, 0x07, 0xb6, 0x07, 0xb9, 0x07, 0x71, 0x07, 0x72, 0x07, + 0x21, 0x07, 0x23, 0x07, 0xc9, 0x06, 0xcc, 0x06, 0x6a, 0x06, 0x6c, 0x06, + 0x01, 0x06, 0x04, 0x06, 0x97, 0x05, 0x97, 0x05, 0x20, 0x05, 0x23, 0x05, + 0xa8, 0x04, 0xaa, 0x04, 0x2b, 0x04, 0x2d, 0x04, 0xa7, 0x03, 0xaa, 0x03, + 0x22, 0x03, 0x23, 0x03, 0x98, 0x02, 0x9d, 0x02, 0x0e, 0x02, 0x0e, 0x02, + 0x7f, 0x01, 0x83, 0x01, 0xf1, 0x00, 0xf2, 0x00, 0x63, 0x00, 0x66, 0x00, + 0xd3, 0xff, 0xd6, 0xff, 0x46, 0xff, 0x48, 0xff, 0xbc, 0xfe, 0xbd, 0xfe, + 0x2d, 0xfe, 0x32, 0xfe, 0xac, 0xfd, 0xad, 0xfd, 0x22, 0xfd, 0x25, 0xfd, + 0xa4, 0xfc, 0xa8, 0xfc, 0x28, 0xfc, 0x29, 0xfc, 0xaf, 0xfb, 0xb3, 0xfb, + 0x41, 0xfb, 0x42, 0xfb, 0xd3, 0xfa, 0xd5, 0xfa, 0x6f, 0xfa, 0x72, 0xfa, + 0x13, 0xfa, 0x14, 0xfa, 0xba, 0xf9, 0xbe, 0xf9, 0x6e, 0xf9, 0x70, 0xf9, + 0x27, 0xf9, 0x29, 0xf9, 0xec, 0xf8, 0xeb, 0xf8, 0xb6, 0xf8, 0xb8, 0xf8, + 0x8c, 0xf8, 0x8d, 0xf8, 0x6b, 0xf8, 0x6a, 0xf8, 0x4e, 0xf8, 0x52, 0xf8, + 0x43, 0xf8, 0x43, 0xf8, 0x3d, 0xf8, 0x3f, 0xf8, 0x43, 0xf8, 0x46, 0xf8, + 0x52, 0xf8, 0x52, 0xf8, 0x6a, 0xf8, 0x6c, 0xf8, 0x8d, 0xf8, 0x8f, 0xf8, + 0xba, 0xf8, 0xba, 0xf8, 0xef, 0xf8, 0xf2, 0xf8, 0x2f, 0xf9, 0x2e, 0xf9, + 0x76, 0xf9, 0x77, 0xf9, 0xc7, 0xf9, 0xc8, 0xf9, 0x20, 0xfa, 0x22, 0xfa, + 0x82, 0xfa, 0x82, 0xfa, 0xe9, 0xfa, 0xec, 0xfa, 0x58, 0xfb, 0x58, 0xfb, + 0xcc, 0xfb, 0xd0, 0xfb, 0x47, 0xfc, 0x48, 0xfc, 0xc8, 0xfc, 0xc8, 0xfc, + 0x4b, 0xfd, 0x4e, 0xfd, 0xd0, 0xfd, 0xd2, 0xfd, 0x5b, 0xfe, 0x5e, 0xfe, + 0xe8, 0xfe, 0xea, 0xfe, 0x76, 0xff, 0x79, 0xff, 0x07, 0x00, 0x07, 0x00, + 0x95, 0x00, 0x9a, 0x00, 0x27, 0x01, 0x26, 0x01, 0xb2, 0x01, 0xb7, 0x01, + 0x42, 0x02, 0x43, 0x02, 0xca, 0x02, 0xcf, 0x02, 0x55, 0x03, 0x56, 0x03, + 0xd8, 0x03, 0xd9, 0x03, 0x56, 0x04, 0x59, 0x04, 0xd3, 0x04, 0xd6, 0x04, + 0x4b, 0x05, 0x4c, 0x05, 0xb8, 0x05, 0xbc, 0x05, 0x25, 0x06, 0x26, 0x06, + 0x85, 0x06, 0x88, 0x06, 0xe4, 0x06, 0xe5, 0x06, 0x37, 0x07, 0x39, 0x07, + 0x83, 0x07, 0x85, 0x07, 0xc9, 0x07, 0xc8, 0x07, 0xfd, 0x07, 0x01, 0x08, + 0x36, 0x08, 0x35, 0x08, 0x59, 0x08, 0x5c, 0x08, 0x7b, 0x08, 0x7c, 0x08, + 0x8d, 0x08, 0x8e, 0x08, 0x98, 0x08, 0x99, 0x08, 0x9a, 0x08, 0x9b, 0x08, + 0x8e, 0x08, 0x8f, 0x08, 0x7c, 0x08, 0x7c, 0x08, 0x5d, 0x08, 0x5e, 0x08, + 0x37, 0x08, 0x37, 0x08, 0x03, 0x08, 0x04, 0x08, 0xc8, 0x07, 0xc9, 0x07, + 0x86, 0x07, 0x85, 0x07, 0x34, 0x07, 0x36, 0x07, 0xe1, 0x06, 0xe3, 0x06, + 0x83, 0x06, 0x82, 0x06, 0x1d, 0x06, 0x1e, 0x06, 0xb1, 0x05, 0xb3, 0x05, + 0x3e, 0x05, 0x3e, 0x05, 0xc6, 0x04, 0xc7, 0x04, 0x47, 0x04, 0x49, 0x04, + 0xc3, 0x03, 0xc5, 0x03, 0x3c, 0x03, 0x3d, 0x03, 0xb2, 0x02, 0xb1, 0x02, + 0x22, 0x02, 0x24, 0x02, 0x93, 0x01, 0x94, 0x01, 0x01, 0x01, 0x02, 0x01, + 0x6f, 0x00, 0x71, 0x00, 0xdc, 0xff, 0xdb, 0xff, 0x47, 0xff, 0x4b, 0xff, + 0xb9, 0xfe, 0xb8, 0xfe, 0x26, 0xfe, 0x29, 0xfe, 0x9a, 0xfd, 0x9a, 0xfd, + 0x0d, 0xfd, 0x11, 0xfd, 0x88, 0xfc, 0x8a, 0xfc, 0x05, 0xfc, 0x07, 0xfc, + 0x86, 0xfb, 0x89, 0xfb, 0x0d, 0xfb, 0x10, 0xfb, 0x9b, 0xfa, 0x9d, 0xfa, + 0x2d, 0xfa, 0x30, 0xfa, 0xc7, 0xf9, 0xc9, 0xf9, 0x69, 0xf9, 0x6d, 0xf9, + 0x12, 0xf9, 0x13, 0xf9, 0xc3, 0xf8, 0xc7, 0xf8, 0x7e, 0xf8, 0x7f, 0xf8, + 0x41, 0xf8, 0x44, 0xf8, 0x0d, 0xf8, 0x0e, 0xf8, 0xe3, 0xf7, 0xe7, 0xf7, + 0xbf, 0xf7, 0xc2, 0xf7, 0xac, 0xf7, 0xad, 0xf7, 0x9d, 0xf7, 0xa0, 0xf7, + 0x9b, 0xf7, 0x9c, 0xf7, 0xa2, 0xf7, 0xa3, 0xf7, 0xb2, 0xf7, 0xb4, 0xf7, + 0xd0, 0xf7, 0xd2, 0xf7, 0xf5, 0xf7, 0xf7, 0xf7, 0x25, 0xf8, 0x29, 0xf8, + 0x5f, 0xf8, 0x61, 0xf8, 0xa2, 0xf8, 0xa4, 0xf8, 0xec, 0xf8, 0xef, 0xf8, + 0x44, 0xf9, 0x44, 0xf9, 0x9b, 0xf9, 0xa1, 0xf9, 0x04, 0xfa, 0x03, 0xfa, + 0x6c, 0xfa, 0x70, 0xfa, 0xdd, 0xfa, 0xdf, 0xfa, 0x55, 0xfb, 0x58, 0xfb, + 0xd3, 0xfb, 0xd4, 0xfb, 0x53, 0xfc, 0x57, 0xfc, 0xd9, 0xfc, 0xda, 0xfc, + 0x62, 0xfd, 0x65, 0xfd, 0xed, 0xfd, 0xef, 0xfd, 0x7d, 0xfe, 0x7e, 0xfe, + 0x09, 0xff, 0x0e, 0xff, 0x9b, 0xff, 0x9e, 0xff, 0x2b, 0x00, 0x2d, 0x00, + 0xba, 0x00, 0xbd, 0x00, 0x49, 0x01, 0x4a, 0x01, 0xd6, 0x01, 0xd8, 0x01, + 0x61, 0x02, 0x63, 0x02, 0xe8, 0x02, 0xec, 0x02, 0x6c, 0x03, 0x6c, 0x03, + 0xe8, 0x03, 0xec, 0x03, 0x67, 0x04, 0x68, 0x04, 0xda, 0x04, 0xde, 0x04, + 0x49, 0x05, 0x49, 0x05, 0xb0, 0x05, 0xb3, 0x05, 0x14, 0x06, 0x14, 0x06, + 0x6b, 0x06, 0x6d, 0x06, 0xbf, 0x06, 0xc0, 0x06, 0x08, 0x07, 0x0c, 0x07, + 0x4a, 0x07, 0x4a, 0x07, 0x84, 0x07, 0x87, 0x07, 0xaf, 0x07, 0xb1, 0x07, + 0xd9, 0x07, 0xdb, 0x07, 0xf1, 0x07, 0xf4, 0x07, 0x06, 0x08, 0x0a, 0x08, + 0x0f, 0x08, 0x0e, 0x08, 0x0a, 0x08, 0x0e, 0x08, 0x01, 0x08, 0x00, 0x08, + 0xe8, 0x07, 0xea, 0x07, 0xc9, 0x07, 0xcd, 0x07, 0x9f, 0x07, 0xa0, 0x07, + 0x69, 0x07, 0x6e, 0x07, 0x2e, 0x07, 0x2e, 0x07, 0xe5, 0x06, 0xe7, 0x06, + 0x96, 0x06, 0x99, 0x06, 0x3d, 0x06, 0x3d, 0x06, 0xdb, 0x05, 0xdf, 0x05, + 0x74, 0x05, 0x76, 0x05, 0x04, 0x05, 0x04, 0x05, 0x8e, 0x04, 0x90, 0x04, + 0x12, 0x04, 0x14, 0x04, 0x90, 0x03, 0x91, 0x03, 0x08, 0x03, 0x0b, 0x03, + 0x7f, 0x02, 0x81, 0x02, 0xf1, 0x01, 0xf3, 0x01, 0x5f, 0x01, 0x61, 0x01, + 0xcc, 0x00, 0xce, 0x00, 0x37, 0x00, 0x38, 0x00, 0xa3, 0xff, 0xa6, 0xff, + 0x0c, 0xff, 0x0e, 0xff, 0x7a, 0xfe, 0x7c, 0xfe, 0xe5, 0xfd, 0xe6, 0xfd, + 0x54, 0xfd, 0x57, 0xfd, 0xc7, 0xfc, 0xc8, 0xfc, 0x3a, 0xfc, 0x3c, 0xfc, + 0xb3, 0xfb, 0xb5, 0xfb, 0x2f, 0xfb, 0x2f, 0xfb, 0xb2, 0xfa, 0xb5, 0xfa, + 0x39, 0xfa, 0x3a, 0xfa, 0xc8, 0xf9, 0xc8, 0xf9, 0x5a, 0xf9, 0x5d, 0xf9, + 0xf8, 0xf8, 0xf8, 0xf8, 0x9a, 0xf8, 0x9d, 0xf8, 0x45, 0xf8, 0x47, 0xf8, + 0xfa, 0xf7, 0xfa, 0xf7, 0xb8, 0xf7, 0xbc, 0xf7, 0x7e, 0xf7, 0x7e, 0xf7, + 0x50, 0xf7, 0x51, 0xf7, 0x26, 0xf7, 0x28, 0xf7, 0x0e, 0xf7, 0x0f, 0xf7, + 0xfb, 0xf6, 0xfb, 0xf6, 0xf3, 0xf6, 0xf6, 0xf6, 0xf8, 0xf6, 0xf9, 0xf6, + 0x05, 0xf7, 0x07, 0xf7, 0x1e, 0xf7, 0x22, 0xf7, 0x41, 0xf7, 0x42, 0xf7, + 0x6f, 0xf7, 0x71, 0xf7, 0xa4, 0xf7, 0xa8, 0xf7, 0xe5, 0xf7, 0xe6, 0xf7, + 0x31, 0xf8, 0x34, 0xf8, 0x82, 0xf8, 0x83, 0xf8, 0xe0, 0xf8, 0xe2, 0xf8, + 0x41, 0xf9, 0x44, 0xf9, 0xae, 0xf9, 0xaf, 0xf9, 0x1f, 0xfa, 0x22, 0xfa, + 0x99, 0xfa, 0x9a, 0xfa, 0x18, 0xfb, 0x18, 0xfb, 0x98, 0xfb, 0x9c, 0xfb, + 0x25, 0xfc, 0x25, 0xfc, 0xae, 0xfc, 0xb3, 0xfc, 0x41, 0xfd, 0x42, 0xfd, + 0xd2, 0xfd, 0xd4, 0xfd, 0x69, 0xfe, 0x6b, 0xfe, 0xfc, 0xfe, 0xfd, 0xfe, + 0x94, 0xff, 0x96, 0xff, 0x2a, 0x00, 0x2c, 0x00, 0xc0, 0x00, 0xc2, 0x00, + 0x54, 0x01, 0x55, 0x01, 0xe7, 0x01, 0xeb, 0x01, 0x77, 0x02, 0x78, 0x02, + 0x04, 0x03, 0x06, 0x03, 0x8d, 0x03, 0x8e, 0x03, 0x11, 0x04, 0x13, 0x04, + 0x8f, 0x04, 0x91, 0x04, 0x09, 0x05, 0x09, 0x05, 0x7c, 0x05, 0x7e, 0x05, + 0xe8, 0x05, 0xea, 0x05, 0x4b, 0x06, 0x4e, 0x06, 0xac, 0x06, 0xac, 0x06, + 0xff, 0x06, 0x01, 0x07, 0x4c, 0x07, 0x4d, 0x07, 0x90, 0x07, 0x92, 0x07, + 0xcb, 0x07, 0xcb, 0x07, 0xfb, 0x07, 0xfe, 0x07, 0x23, 0x08, 0x23, 0x08, + 0x3f, 0x08, 0x44, 0x08, 0x53, 0x08, 0x52, 0x08, 0x5a, 0x08, 0x5e, 0x08, + 0x5a, 0x08, 0x5b, 0x08, 0x4d, 0x08, 0x4f, 0x08, 0x38, 0x08, 0x39, 0x08, + 0x15, 0x08, 0x17, 0x08, 0xeb, 0x07, 0xec, 0x07, 0xb3, 0x07, 0xb7, 0x07, + 0x74, 0x07, 0x74, 0x07, 0x2d, 0x07, 0x30, 0x07, 0xd8, 0x06, 0xd9, 0x06, + 0x7f, 0x06, 0x80, 0x06, 0x1a, 0x06, 0x1d, 0x06, 0xaf, 0x05, 0xaf, 0x05, + 0x3d, 0x05, 0x41, 0x05, 0xc4, 0x04, 0xc5, 0x04, 0x45, 0x04, 0x49, 0x04, + 0xc3, 0x03, 0xc3, 0x03, 0x38, 0x03, 0x3a, 0x03, 0xac, 0x02, 0xad, 0x02, + 0x1c, 0x02, 0x1d, 0x02, 0x88, 0x01, 0x8b, 0x01, 0xf4, 0x00, 0xf5, 0x00, + 0x5d, 0x00, 0x5f, 0x00, 0xc6, 0xff, 0xc8, 0xff, 0x32, 0xff, 0x32, 0xff, + 0x9b, 0xfe, 0x9d, 0xfe, 0x09, 0xfe, 0x0a, 0xfe, 0x74, 0xfd, 0x76, 0xfd, + 0xe8, 0xfc, 0xe9, 0xfc, 0x57, 0xfc, 0x5b, 0xfc, 0xd4, 0xfb, 0xd4, 0xfb, + 0x50, 0xfb, 0x53, 0xfb, 0xd3, 0xfa, 0xd3, 0xfa, 0x5d, 0xfa, 0x5e, 0xfa, + 0xe9, 0xf9, 0xea, 0xf9, 0x82, 0xf9, 0x84, 0xf9, 0x1c, 0xf9, 0x1f, 0xf9, + 0xc6, 0xf8, 0xc8, 0xf8, 0x6f, 0xf8, 0x70, 0xf8, 0x29, 0xf8, 0x2a, 0xf8, + 0xe8, 0xf7, 0xea, 0xf7, 0xb2, 0xf7, 0xb2, 0xf7, 0x85, 0xf7, 0x87, 0xf7, + 0x62, 0xf7, 0x62, 0xf7, 0x47, 0xf7, 0x4b, 0xf7, 0x3c, 0xf7, 0x3c, 0xf7, + 0x37, 0xf7, 0x39, 0xf7, 0x40, 0xf7, 0x41, 0xf7, 0x50, 0xf7, 0x52, 0xf7, + 0x6e, 0xf7, 0x6f, 0xf7, 0x95, 0xf7, 0x95, 0xf7, 0xc5, 0xf7, 0xc9, 0xf7, + 0x02, 0xf8, 0x03, 0xf8, 0x47, 0xf8, 0x49, 0xf8, 0x96, 0xf8, 0x98, 0xf8, + 0xed, 0xf8, 0xef, 0xf8, 0x50, 0xf9, 0x53, 0xf9, 0xba, 0xf9, 0xba, 0xf9, + 0x2a, 0xfa, 0x2d, 0xfa, 0xa3, 0xfa, 0xa3, 0xfa, 0x22, 0xfb, 0x23, 0xfb, + 0xa8, 0xfb, 0xa9, 0xfb, 0x31, 0xfc, 0x33, 0xfc, 0xc1, 0xfc, 0xc2, 0xfc, + 0x52, 0xfd, 0x56, 0xfd, 0xea, 0xfd, 0xec, 0xfd, 0x83, 0xfe, 0x85, 0xfe, + 0x1c, 0xff, 0x1e, 0xff, 0xbb, 0xff, 0xbd, 0xff, 0x55, 0x00, 0x57, 0x00, + 0xf5, 0x00, 0xf6, 0x00, 0x8d, 0x01, 0x8d, 0x01, 0x29, 0x02, 0x2c, 0x02, + 0xc1, 0x02, 0xc0, 0x02, 0x54, 0x03, 0x58, 0x03, 0xe9, 0x03, 0xe8, 0x03, + 0x74, 0x04, 0x76, 0x04, 0xfd, 0x04, 0xff, 0x04, 0x80, 0x05, 0x81, 0x05, + 0xfc, 0x05, 0xfd, 0x05, 0x72, 0x06, 0x74, 0x06, 0xe4, 0x06, 0xe1, 0x06, + 0x47, 0x07, 0x4c, 0x07, 0xa7, 0x07, 0xa8, 0x07, 0x00, 0x08, 0xfe, 0x07, + 0x4b, 0x08, 0x4d, 0x08, 0x90, 0x08, 0x8f, 0x08, 0xc9, 0x08, 0xca, 0x08, + 0xf9, 0x08, 0xfc, 0x08, 0x20, 0x09, 0x20, 0x09, 0x39, 0x09, 0x3a, 0x09, + 0x4b, 0x09, 0x4c, 0x09, 0x4f, 0x09, 0x50, 0x09, 0x48, 0x09, 0x4b, 0x09, + 0x3b, 0x09, 0x3c, 0x09, 0x1d, 0x09, 0x1e, 0x09, 0xf8, 0x08, 0xfb, 0x08, + 0xc7, 0x08, 0xc7, 0x08, 0x8a, 0x08, 0x8c, 0x08, 0x46, 0x08, 0x48, 0x08, + 0xf5, 0x07, 0xf6, 0x07, 0x9e, 0x07, 0xa1, 0x07, 0x3b, 0x07, 0x3d, 0x07, + 0xd5, 0x06, 0xd5, 0x06, 0x61, 0x06, 0x63, 0x06, 0xea, 0x05, 0xeb, 0x05, + 0x6c, 0x05, 0x6d, 0x05, 0xe4, 0x04, 0xe7, 0x04, 0x5e, 0x04, 0x60, 0x04, + 0xce, 0x03, 0xcc, 0x03, 0x3a, 0x03, 0x3f, 0x03, 0xa6, 0x02, 0xa5, 0x02, + 0x0d, 0x02, 0x0f, 0x02, 0x73, 0x01, 0x75, 0x01, 0xd7, 0x00, 0xd7, 0x00, + 0x39, 0x00, 0x3c, 0x00, 0xa0, 0xff, 0xa2, 0xff, 0x05, 0xff, 0x05, 0xff, + 0x6e, 0xfe, 0x6f, 0xfe, 0xd5, 0xfd, 0xd6, 0xfd, 0x42, 0xfd, 0x44, 0xfd, + 0xb1, 0xfc, 0xb4, 0xfc, 0x26, 0xfc, 0x28, 0xfc, 0xa0, 0xfb, 0xa4, 0xfb, + 0x1d, 0xfb, 0x1d, 0xfb, 0xa5, 0xfa, 0xa8, 0xfa, 0x30, 0xfa, 0x2f, 0xfa, + 0xc3, 0xf9, 0xc6, 0xf9, 0x5f, 0xf9, 0x60, 0xf9, 0xff, 0xf8, 0x02, 0xf9, + 0xae, 0xf8, 0xae, 0xf8, 0x5f, 0xf8, 0x61, 0xf8, 0x1e, 0xf8, 0x1e, 0xf8, + 0xe4, 0xf7, 0xe6, 0xf7, 0xb6, 0xf7, 0xb6, 0xf7, 0x90, 0xf7, 0x93, 0xf7, + 0x78, 0xf7, 0x7a, 0xf7, 0x69, 0xf7, 0x69, 0xf7, 0x63, 0xf7, 0x66, 0xf7, + 0x6b, 0xf7, 0x6c, 0xf7, 0x7c, 0xf7, 0x7d, 0xf7, 0x98, 0xf7, 0x9a, 0xf7, + 0xc0, 0xf7, 0xc1, 0xf7, 0xf1, 0xf7, 0xf0, 0xf7, 0x2c, 0xf8, 0x2f, 0xf8, + 0x72, 0xf8, 0x72, 0xf8, 0xc2, 0xf8, 0xc5, 0xf8, 0x1f, 0xf9, 0x1f, 0xf9, + 0x7e, 0xf9, 0x81, 0xf9, 0xec, 0xf9, 0xee, 0xf9, 0x5d, 0xfa, 0x60, 0xfa, + 0xda, 0xfa, 0xdb, 0xfa, 0x5b, 0xfb, 0x5e, 0xfb, 0xe3, 0xfb, 0xe4, 0xfb, + 0x70, 0xfc, 0x73, 0xfc, 0x00, 0xfd, 0x03, 0xfd, 0x98, 0xfd, 0x98, 0xfd, + 0x2e, 0xfe, 0x32, 0xfe, 0xcd, 0xfe, 0xcf, 0xfe, 0x68, 0xff, 0x6a, 0xff, + 0x08, 0x00, 0x0c, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0x44, 0x01, 0x48, 0x01, + 0xe4, 0x01, 0xe5, 0x01, 0x7e, 0x02, 0x80, 0x02, 0x19, 0x03, 0x1a, 0x03, + 0xae, 0x03, 0xb2, 0x03, 0x41, 0x04, 0x41, 0x04, 0xcc, 0x04, 0xd0, 0x04, + 0x57, 0x05, 0x57, 0x05, 0xdb, 0x05, 0xdc, 0x05, 0x56, 0x06, 0x57, 0x06, + 0xcd, 0x06, 0xce, 0x06, 0x3b, 0x07, 0x3b, 0x07, 0xa1, 0x07, 0xa3, 0x07, + 0xfe, 0x07, 0xff, 0x07, 0x52, 0x08, 0x53, 0x08, 0x9e, 0x08, 0x9f, 0x08, + 0xde, 0x08, 0xde, 0x08, 0x15, 0x09, 0x18, 0x09, 0x42, 0x09, 0x44, 0x09, + 0x65, 0x09, 0x66, 0x09, 0x7b, 0x09, 0x7d, 0x09, 0x87, 0x09, 0x89, 0x09, + 0x89, 0x09, 0x8a, 0x09, 0x7f, 0x09, 0x7f, 0x09, 0x67, 0x09, 0x69, 0x09, + 0x48, 0x09, 0x48, 0x09, 0x1a, 0x09, 0x1d, 0x09, 0xe5, 0x08, 0xe4, 0x08, + 0xa0, 0x08, 0xa3, 0x08, 0x57, 0x08, 0x56, 0x08, 0xfe, 0x07, 0xff, 0x07, + 0xa3, 0x07, 0xa4, 0x07, 0x38, 0x07, 0x39, 0x07, 0xc9, 0x06, 0xca, 0x06, + 0x50, 0x06, 0x51, 0x06, 0xcf, 0x05, 0xd0, 0x05, 0x4b, 0x05, 0x4c, 0x05, + 0xbb, 0x04, 0xbe, 0x04, 0x2b, 0x04, 0x2b, 0x04, 0x95, 0x03, 0x94, 0x03, + 0xf6, 0x02, 0xf8, 0x02, 0x5d, 0x02, 0x5e, 0x02, 0xb9, 0x01, 0xba, 0x01, + 0x18, 0x01, 0x19, 0x01, 0x76, 0x00, 0x76, 0x00, 0xcf, 0xff, 0xd0, 0xff, + 0x2f, 0xff, 0x30, 0xff, 0x8c, 0xfe, 0x8b, 0xfe, 0xeb, 0xfd, 0xee, 0xfd, + 0x50, 0xfd, 0x50, 0xfd, 0xb2, 0xfc, 0xb4, 0xfc, 0x1e, 0xfc, 0x20, 0xfc, + 0x8c, 0xfb, 0x8b, 0xfb, 0xfc, 0xfa, 0xfe, 0xfa, 0x78, 0xfa, 0x77, 0xfa, + 0xf5, 0xf9, 0xf7, 0xf9, 0x7e, 0xf9, 0x7d, 0xf9, 0x08, 0xf9, 0x0c, 0xf9, + 0xa1, 0xf8, 0xa1, 0xf8, 0x40, 0xf8, 0x41, 0xf8, 0xe5, 0xf7, 0xe7, 0xf7, + 0x9a, 0xf7, 0x9a, 0xf7, 0x52, 0xf7, 0x54, 0xf7, 0x19, 0xf7, 0x1a, 0xf7, + 0xe7, 0xf6, 0xe8, 0xf6, 0xc5, 0xf6, 0xc6, 0xf6, 0xa8, 0xf6, 0xa8, 0xf6, + 0x99, 0xf6, 0x9a, 0xf6, 0x97, 0xf6, 0x98, 0xf6, 0x9d, 0xf6, 0x9b, 0xf6, + 0xb0, 0xf6, 0xb5, 0xf6, 0xcf, 0xf6, 0xce, 0xf6, 0xfb, 0xf6, 0xfc, 0xf6, + 0x2f, 0xf7, 0x31, 0xf7, 0x71, 0xf7, 0x6f, 0xf7, 0xba, 0xf7, 0xbf, 0xf7, + 0x0f, 0xf8, 0x0e, 0xf8, 0x70, 0xf8, 0x71, 0xf8, 0xd6, 0xf8, 0xd7, 0xf8, + 0x47, 0xf9, 0x47, 0xf9, 0xc0, 0xf9, 0xc1, 0xf9, 0x3c, 0xfa, 0x3e, 0xfa, + 0xc7, 0xfa, 0xc7, 0xfa, 0x50, 0xfb, 0x52, 0xfb, 0xe5, 0xfb, 0xe4, 0xfb, + 0x7b, 0xfc, 0x7c, 0xfc, 0x11, 0xfd, 0x11, 0xfd, 0xb3, 0xfd, 0xb3, 0xfd, + 0x50, 0xfe, 0x51, 0xfe, 0xf3, 0xfe, 0xf5, 0xfe, 0x99, 0xff, 0x99, 0xff, + 0x38, 0x00, 0x3a, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0x7c, 0x01, 0x7d, 0x01, + 0x1c, 0x02, 0x1d, 0x02, 0xb8, 0x02, 0xb9, 0x02, 0x51, 0x03, 0x52, 0x03, + 0xe6, 0x03, 0xe8, 0x03, 0x77, 0x04, 0x76, 0x04, 0x00, 0x05, 0x02, 0x05, + 0x84, 0x05, 0x84, 0x05, 0x03, 0x06, 0x06, 0x06, 0x79, 0x06, 0x78, 0x06, + 0xe8, 0x06, 0xe9, 0x06, 0x4f, 0x07, 0x50, 0x07, 0xb0, 0x07, 0xae, 0x07, + 0x01, 0x08, 0x02, 0x08, 0x4e, 0x08, 0x4e, 0x08, 0x8d, 0x08, 0x8d, 0x08, + 0xc6, 0x08, 0xc6, 0x08, 0xf0, 0x08, 0xf0, 0x08, 0x11, 0x09, 0x12, 0x09, + 0x26, 0x09, 0x27, 0x09, 0x30, 0x09, 0x2f, 0x09, 0x31, 0x09, 0x32, 0x09, + 0x24, 0x09, 0x25, 0x09, 0x0c, 0x09, 0x0d, 0x09, 0xe8, 0x08, 0xea, 0x08, + 0xb9, 0x08, 0xba, 0x08, 0x81, 0x08, 0x82, 0x08, 0x3a, 0x08, 0x3a, 0x08, + 0xeb, 0x07, 0xed, 0x07, 0x91, 0x07, 0x91, 0x07, 0x2e, 0x07, 0x2f, 0x07, + 0xbf, 0x06, 0xc0, 0x06, 0x4a, 0x06, 0x4b, 0x06, 0xcd, 0x05, 0xce, 0x05, + 0x45, 0x05, 0x45, 0x05, 0xba, 0x04, 0xbb, 0x04, 0x26, 0x04, 0x27, 0x04, + 0x90, 0x03, 0x90, 0x03, 0xf0, 0x02, 0xf2, 0x02, 0x51, 0x02, 0x51, 0x02, + 0xaa, 0x01, 0xad, 0x01, 0x06, 0x01, 0x06, 0x01, 0x5b, 0x00, 0x5d, 0x00, + 0xb5, 0xff, 0xb3, 0xff, 0x09, 0xff, 0x0c, 0xff, 0x63, 0xfe, 0x64, 0xfe, + 0xbb, 0xfd, 0xb9, 0xfd, 0x16, 0xfd, 0x18, 0xfd, 0x77, 0xfc, 0x76, 0xfc, + 0xd7, 0xfb, 0xda, 0xfb, 0x41, 0xfb, 0x41, 0xfb, 0xa9, 0xfa, 0xaa, 0xfa, + 0x1a, 0xfa, 0x1c, 0xfa, 0x93, 0xf9, 0x92, 0xf9, 0x0c, 0xf9, 0x10, 0xf9, + 0x99, 0xf8, 0x96, 0xf8, 0x23, 0xf8, 0x24, 0xf8, 0xbc, 0xf7, 0xbc, 0xf7, + 0x5b, 0xf7, 0x5b, 0xf7, 0x03, 0xf7, 0x02, 0xf7, 0xb9, 0xf6, 0xba, 0xf6, + 0x74, 0xf6, 0x74, 0xf6, 0x3f, 0xf6, 0x41, 0xf6, 0x13, 0xf6, 0x11, 0xf6, + 0xf1, 0xf5, 0xf2, 0xf5, 0xde, 0xf5, 0xdf, 0xf5, 0xd3, 0xf5, 0xd3, 0xf5, + 0xda, 0xf5, 0xda, 0xf5, 0xe7, 0xf5, 0xe7, 0xf5, 0x00, 0xf6, 0x03, 0xf6, + 0x2b, 0xf6, 0x2a, 0xf6, 0x5c, 0xf6, 0x5d, 0xf6, 0x9c, 0xf6, 0x9d, 0xf6, + 0xe4, 0xf6, 0xe5, 0xf6, 0x38, 0xf7, 0x38, 0xf7, 0x98, 0xf7, 0x99, 0xf7, + 0xfd, 0xf7, 0xff, 0xf7, 0x70, 0xf8, 0x70, 0xf8, 0xeb, 0xf8, 0xec, 0xf8, + 0x6b, 0xf9, 0x6a, 0xf9, 0xf4, 0xf9, 0xf6, 0xf9, 0x84, 0xfa, 0x84, 0xfa, + 0x1c, 0xfb, 0x1b, 0xfb, 0xb5, 0xfb, 0xb6, 0xfb, 0x53, 0xfc, 0x54, 0xfc, + 0xfa, 0xfc, 0xfb, 0xfc, 0x9d, 0xfd, 0x9d, 0xfd, 0x49, 0xfe, 0x4b, 0xfe, + 0xf1, 0xfe, 0xf1, 0xfe, 0x9e, 0xff, 0x9e, 0xff, 0x4a, 0x00, 0x4a, 0x00, + 0xf0, 0x00, 0xf1, 0x00, 0x9c, 0x01, 0x9e, 0x01, 0x3f, 0x02, 0x3e, 0x02, + 0xde, 0x02, 0xe1, 0x02, 0x7b, 0x03, 0x7a, 0x03, 0x15, 0x04, 0x16, 0x04, + 0xa9, 0x04, 0xa9, 0x04, 0x37, 0x05, 0x38, 0x05, 0xbf, 0x05, 0xc0, 0x05, + 0x41, 0x06, 0x41, 0x06, 0xba, 0x06, 0xbc, 0x06, 0x2b, 0x07, 0x2e, 0x07, + 0x96, 0x07, 0x96, 0x07, 0xf3, 0x07, 0xf7, 0x07, 0x4b, 0x08, 0x4b, 0x08, + 0x98, 0x08, 0x98, 0x08, 0xd8, 0x08, 0xd9, 0x08, 0x10, 0x09, 0x11, 0x09, + 0x3b, 0x09, 0x3c, 0x09, 0x5b, 0x09, 0x5f, 0x09, 0x72, 0x09, 0x6f, 0x09, + 0x79, 0x09, 0x7b, 0x09, 0x79, 0x09, 0x7b, 0x09, 0x68, 0x09, 0x68, 0x09, + 0x50, 0x09, 0x52, 0x09, 0x27, 0x09, 0x27, 0x09, 0xf5, 0x08, 0xf8, 0x08, + 0xb7, 0x08, 0xb6, 0x08, 0x6b, 0x08, 0x6e, 0x08, 0x1a, 0x08, 0x18, 0x08, + 0xb7, 0x07, 0xba, 0x07, 0x51, 0x07, 0x52, 0x07, 0xdf, 0x06, 0xe0, 0x06, + 0x63, 0x06, 0x63, 0x06, 0xe2, 0x05, 0xe2, 0x05, 0x53, 0x05, 0x57, 0x05, + 0xc5, 0x04, 0xc5, 0x04, 0x2f, 0x04, 0x31, 0x04, 0x90, 0x03, 0x92, 0x03, + 0xf2, 0x02, 0xf3, 0x02, 0x49, 0x02, 0x4c, 0x02, 0xa5, 0x01, 0xa5, 0x01, + 0xf9, 0x00, 0xfb, 0x00, 0x4e, 0x00, 0x50, 0x00, 0xa2, 0xff, 0xa4, 0xff, + 0xf9, 0xfe, 0xf8, 0xfe, 0x4c, 0xfe, 0x51, 0xfe, 0xa8, 0xfd, 0xa7, 0xfd, + 0x04, 0xfd, 0x05, 0xfd, 0x64, 0xfc, 0x66, 0xfc, 0xc9, 0xfb, 0xc9, 0xfb, + 0x30, 0xfb, 0x33, 0xfb, 0x9d, 0xfa, 0x9e, 0xfa, 0x0f, 0xfa, 0x10, 0xfa, + 0x8c, 0xf9, 0x8d, 0xf9, 0x0c, 0xf9, 0x0c, 0xf9, 0x95, 0xf8, 0x95, 0xf8, + 0x27, 0xf8, 0x29, 0xf8, 0xc1, 0xf7, 0xc0, 0xf7, 0x66, 0xf7, 0x68, 0xf7, + 0x17, 0xf7, 0x16, 0xf7, 0xcd, 0xf6, 0xcf, 0xf6, 0x92, 0xf6, 0x92, 0xf6, + 0x60, 0xf6, 0x62, 0xf6, 0x3b, 0xf6, 0x3a, 0xf6, 0x1e, 0xf6, 0x21, 0xf6, + 0x12, 0xf6, 0x12, 0xf6, 0x0d, 0xf6, 0x10, 0xf6, 0x1a, 0xf6, 0x1a, 0xf6, + 0x2e, 0xf6, 0x33, 0xf6, 0x53, 0xf6, 0x50, 0xf6, 0x80, 0xf6, 0x83, 0xf6, + 0xbb, 0xf6, 0xbc, 0xf6, 0x00, 0xf7, 0x01, 0xf7, 0x54, 0xf7, 0x54, 0xf7, + 0xad, 0xf7, 0xaf, 0xf7, 0x15, 0xf8, 0x17, 0xf8, 0x86, 0xf8, 0x86, 0xf8, + 0x01, 0xf9, 0x01, 0xf9, 0x84, 0xf9, 0x86, 0xf9, 0x0c, 0xfa, 0x0d, 0xfa, + 0xa0, 0xfa, 0xa2, 0xfa, 0x36, 0xfb, 0x38, 0xfb, 0xd5, 0xfb, 0xd6, 0xfb, + 0x7b, 0xfc, 0x7c, 0xfc, 0x21, 0xfd, 0x21, 0xfd, 0xcd, 0xfd, 0xcd, 0xfd, + 0x7a, 0xfe, 0x7b, 0xfe, 0x2c, 0xff, 0x2d, 0xff, 0xda, 0xff, 0xdd, 0xff, + 0x8e, 0x00, 0x8e, 0x00, 0x3f, 0x01, 0x41, 0x01, 0xee, 0x01, 0xee, 0x01, + 0x9d, 0x02, 0x9f, 0x02, 0x41, 0x03, 0x42, 0x03, 0xea, 0x03, 0xeb, 0x03, + 0x8a, 0x04, 0x8a, 0x04, 0x27, 0x05, 0x25, 0x05, 0xbd, 0x05, 0xbf, 0x05, + 0x4c, 0x06, 0x4a, 0x06, 0xd9, 0x06, 0xda, 0x06, 0x59, 0x07, 0x58, 0x07, + 0xd3, 0x07, 0xd5, 0x07, 0x46, 0x08, 0x45, 0x08, 0xab, 0x08, 0xab, 0x08, + 0x0e, 0x09, 0x0f, 0x09, 0x5e, 0x09, 0x5f, 0x09, 0xa9, 0x09, 0xaa, 0x09, + 0xe8, 0x09, 0xe8, 0x09, 0x17, 0x0a, 0x18, 0x0a, 0x42, 0x0a, 0x41, 0x0a, + 0x5a, 0x0a, 0x5a, 0x0a, 0x6a, 0x0a, 0x6a, 0x0a, 0x6a, 0x0a, 0x6a, 0x0a, + 0x60, 0x0a, 0x61, 0x0a, 0x47, 0x0a, 0x47, 0x0a, 0x24, 0x0a, 0x24, 0x0a, + 0xf1, 0x09, 0xf1, 0x09, 0xb5, 0x09, 0xb5, 0x09, 0x6d, 0x09, 0x6c, 0x09, + 0x18, 0x09, 0x19, 0x09, 0xbc, 0x08, 0xba, 0x08, 0x51, 0x08, 0x51, 0x08, + 0xdf, 0x07, 0xde, 0x07, 0x62, 0x07, 0x62, 0x07, 0xde, 0x06, 0xde, 0x06, + 0x54, 0x06, 0x51, 0x06, 0xbe, 0x05, 0xbf, 0x05, 0x25, 0x05, 0x25, 0x05, + 0x84, 0x04, 0x84, 0x04, 0xe0, 0x03, 0xe1, 0x03, 0x3b, 0x03, 0x39, 0x03, + 0x8a, 0x02, 0x8c, 0x02, 0xdf, 0x01, 0xde, 0x01, 0x2e, 0x01, 0x2e, 0x01, + 0x7d, 0x00, 0x7c, 0x00, 0xcf, 0xff, 0xcf, 0xff, 0x1b, 0xff, 0x1a, 0xff, + 0x6f, 0xfe, 0x71, 0xfe, 0xc4, 0xfd, 0xc3, 0xfd, 0x1d, 0xfd, 0x20, 0xfd, + 0x7e, 0xfc, 0x7e, 0xfc, 0xdd, 0xfb, 0xde, 0xfb, 0x44, 0xfb, 0x43, 0xfb, + 0xae, 0xfa, 0xb1, 0xfa, 0x23, 0xfa, 0x24, 0xfa, 0x9b, 0xf9, 0x9c, 0xf9, + 0x1d, 0xf9, 0x1f, 0xf9, 0xa7, 0xf8, 0xa6, 0xf8, 0x39, 0xf8, 0x3a, 0xf8, + 0xd4, 0xf7, 0xd6, 0xf7, 0x7b, 0xf7, 0x7b, 0xf7, 0x2c, 0xf7, 0x2e, 0xf7, + 0xe5, 0xf6, 0xe5, 0xf6, 0xae, 0xf6, 0xae, 0xf6, 0x7d, 0xf6, 0x7e, 0xf6, + 0x5b, 0xf6, 0x5b, 0xf6, 0x45, 0xf6, 0x46, 0xf6, 0x38, 0xf6, 0x3a, 0xf6, + 0x3c, 0xf6, 0x3c, 0xf6, 0x4b, 0xf6, 0x49, 0xf6, 0x64, 0xf6, 0x68, 0xf6, + 0x8d, 0xf6, 0x8c, 0xf6, 0xbf, 0xf6, 0xc3, 0xf6, 0x00, 0xf7, 0x00, 0xf7, + 0x4b, 0xf7, 0x4e, 0xf7, 0xa2, 0xf7, 0xa3, 0xf7, 0x04, 0xf8, 0x06, 0xf8, + 0x73, 0xf8, 0x73, 0xf8, 0xea, 0xf8, 0xec, 0xf8, 0x6a, 0xf9, 0x6b, 0xf9, + 0xf5, 0xf9, 0xf5, 0xf9, 0x84, 0xfa, 0x86, 0xfa, 0x1e, 0xfb, 0x20, 0xfb, + 0xbc, 0xfb, 0xbd, 0xfb, 0x60, 0xfc, 0x63, 0xfc, 0x0a, 0xfd, 0x09, 0xfd, + 0xb5, 0xfd, 0xb8, 0xfd, 0x6a, 0xfe, 0x68, 0xfe, 0x17, 0xff, 0x19, 0xff, + 0xd0, 0xff, 0xd1, 0xff, 0x83, 0x00, 0x83, 0x00, 0x36, 0x01, 0x38, 0x01, + 0xee, 0x01, 0xef, 0x01, 0x9b, 0x02, 0x9b, 0x02, 0x4b, 0x03, 0x4c, 0x03, + 0xf1, 0x03, 0xf2, 0x03, 0x99, 0x04, 0x97, 0x04, 0x39, 0x05, 0x3c, 0x05, + 0xd4, 0x05, 0xd2, 0x05, 0x6a, 0x06, 0x6d, 0x06, 0xf7, 0x06, 0xf7, 0x06, + 0x7f, 0x07, 0x80, 0x07, 0xfd, 0x07, 0xfe, 0x07, 0x73, 0x08, 0x72, 0x08, + 0xe0, 0x08, 0xe2, 0x08, 0x42, 0x09, 0x41, 0x09, 0x9d, 0x09, 0x9e, 0x09, + 0xe7, 0x09, 0xe6, 0x09, 0x2b, 0x0a, 0x2b, 0x0a, 0x5e, 0x0a, 0x61, 0x0a, + 0x8d, 0x0a, 0x8c, 0x0a, 0xa7, 0x0a, 0xa8, 0x0a, 0xb9, 0x0a, 0xbb, 0x0a, + 0xc0, 0x0a, 0xbf, 0x0a, 0xb3, 0x0a, 0xb4, 0x0a, 0xa3, 0x0a, 0xa1, 0x0a, + 0x7a, 0x0a, 0x7b, 0x0a, 0x4f, 0x0a, 0x4f, 0x0a, 0x10, 0x0a, 0x10, 0x0a, + 0xc9, 0x09, 0xc9, 0x09, 0x75, 0x09, 0x75, 0x09, 0x15, 0x09, 0x15, 0x09, + 0xaa, 0x08, 0xab, 0x08, 0x35, 0x08, 0x35, 0x08, 0xb9, 0x07, 0xb7, 0x07, + 0x30, 0x07, 0x32, 0x07, 0xa2, 0x06, 0xa0, 0x06, 0x09, 0x06, 0x09, 0x06, + 0x6c, 0x05, 0x6b, 0x05, 0xc6, 0x04, 0xc7, 0x04, 0x1b, 0x04, 0x1a, 0x04, + 0x6e, 0x03, 0x70, 0x03, 0xbc, 0x02, 0xb9, 0x02, 0x06, 0x02, 0x08, 0x02, + 0x4f, 0x01, 0x4e, 0x01, 0x97, 0x00, 0x97, 0x00, 0xdc, 0xff, 0xde, 0xff, + 0x27, 0xff, 0x25, 0xff, 0x6d, 0xfe, 0x6e, 0xfe, 0xbb, 0xfd, 0xbb, 0xfd, + 0x09, 0xfd, 0x0a, 0xfd, 0x62, 0xfc, 0x61, 0xfc, 0xb8, 0xfb, 0xb7, 0xfb, + 0x14, 0xfb, 0x12, 0xfb, 0x77, 0xfa, 0x78, 0xfa, 0xdf, 0xf9, 0xdc, 0xf9, + 0x4d, 0xf9, 0x4f, 0xf9, 0xc4, 0xf8, 0xc3, 0xf8, 0x44, 0xf8, 0x44, 0xf8, + 0xcc, 0xf7, 0xcd, 0xf7, 0x60, 0xf7, 0x5e, 0xf7, 0xfa, 0xf6, 0xfb, 0xf6, + 0xa2, 0xf6, 0xa2, 0xf6, 0x54, 0xf6, 0x53, 0xf6, 0x0f, 0xf6, 0x0e, 0xf6, + 0xd9, 0xf5, 0xd9, 0xf5, 0xae, 0xf5, 0xab, 0xf5, 0x8f, 0xf5, 0x90, 0xf5, + 0x7d, 0xf5, 0x7b, 0xf5, 0x77, 0xf5, 0x78, 0xf5, 0x81, 0xf5, 0x7f, 0xf5, + 0x95, 0xf5, 0x94, 0xf5, 0xb8, 0xf5, 0xb9, 0xf5, 0xe8, 0xf5, 0xe5, 0xf5, + 0x25, 0xf6, 0x23, 0xf6, 0x6c, 0xf6, 0x6e, 0xf6, 0xc2, 0xf6, 0xbf, 0xf6, + 0x24, 0xf7, 0x25, 0xf7, 0x8b, 0xf7, 0x8a, 0xf7, 0x05, 0xf8, 0x04, 0xf8, + 0x83, 0xf8, 0x82, 0xf8, 0x0c, 0xf9, 0x0a, 0xf9, 0x9e, 0xf9, 0x9e, 0xf9, + 0x34, 0xfa, 0x33, 0xfa, 0xd8, 0xfa, 0xd7, 0xfa, 0x79, 0xfb, 0x79, 0xfb, + 0x24, 0xfc, 0x22, 0xfc, 0xd4, 0xfc, 0xd4, 0xfc, 0x86, 0xfd, 0x85, 0xfd, + 0x3d, 0xfe, 0x3a, 0xfe, 0xf1, 0xfe, 0xf2, 0xfe, 0xa9, 0xff, 0xa9, 0xff, + 0x63, 0x00, 0x63, 0x00, 0x15, 0x01, 0x16, 0x01, 0xce, 0x01, 0xcd, 0x01, + 0x7e, 0x02, 0x7e, 0x02, 0x2d, 0x03, 0x2d, 0x03, 0xd6, 0x03, 0xd4, 0x03, + 0x7b, 0x04, 0x7c, 0x04, 0x1b, 0x05, 0x1a, 0x05, 0xb7, 0x05, 0xb4, 0x05, + 0x48, 0x06, 0x4a, 0x06, 0xd6, 0x06, 0xd4, 0x06, 0x5c, 0x07, 0x5d, 0x07, + 0xd4, 0x07, 0xd4, 0x07, 0x4b, 0x08, 0x49, 0x08, 0xb0, 0x08, 0xb2, 0x08, + 0x12, 0x09, 0x0f, 0x09, 0x64, 0x09, 0x66, 0x09, 0xac, 0x09, 0xab, 0x09, + 0xec, 0x09, 0xeb, 0x09, 0x17, 0x0a, 0x19, 0x0a, 0x40, 0x0a, 0x3e, 0x0a, + 0x58, 0x0a, 0x57, 0x0a, 0x61, 0x0a, 0x61, 0x0a, 0x64, 0x0a, 0x62, 0x0a, + 0x51, 0x0a, 0x53, 0x0a, 0x39, 0x0a, 0x37, 0x0a, 0x0f, 0x0a, 0x0f, 0x0a, + 0xd8, 0x09, 0xd8, 0x09, 0x99, 0x09, 0x97, 0x09, 0x47, 0x09, 0x48, 0x09, + 0xed, 0x08, 0xec, 0x08, 0x86, 0x08, 0x84, 0x08, 0x13, 0x08, 0x14, 0x08, + 0x99, 0x07, 0x97, 0x07, 0x13, 0x07, 0x14, 0x07, 0x84, 0x06, 0x83, 0x06, + 0xec, 0x05, 0xe9, 0x05, 0x4e, 0x05, 0x4d, 0x05, 0xa8, 0x04, 0xa6, 0x04, + 0xfb, 0x03, 0xfd, 0x03, 0x4d, 0x03, 0x4b, 0x03, 0x96, 0x02, 0x94, 0x02, + 0xdf, 0x01, 0xe0, 0x01, 0x22, 0x01, 0x22, 0x01, 0x69, 0x00, 0x67, 0x00, + 0xa9, 0xff, 0xab, 0xff, 0xef, 0xfe, 0xeb, 0xfe, 0x30, 0xfe, 0x32, 0xfe, + 0x77, 0xfd, 0x74, 0xfd, 0xc1, 0xfc, 0xc2, 0xfc, 0x0e, 0xfc, 0x0c, 0xfc, + 0x61, 0xfb, 0x62, 0xfb, 0xb8, 0xfa, 0xb7, 0xfa, 0x12, 0xfa, 0x11, 0xfa, + 0x75, 0xf9, 0x73, 0xf9, 0xdc, 0xf8, 0xda, 0xf8, 0x4e, 0xf8, 0x4d, 0xf8, + 0xc3, 0xf7, 0xc4, 0xf7, 0x4b, 0xf7, 0x47, 0xf7, 0xd1, 0xf6, 0xd1, 0xf6, + 0x6a, 0xf6, 0x67, 0xf6, 0x09, 0xf6, 0x0a, 0xf6, 0xb4, 0xf5, 0xb2, 0xf5, + 0x6e, 0xf5, 0x6d, 0xf5, 0x2f, 0xf5, 0x2c, 0xf5, 0x00, 0xf5, 0x00, 0xf5, + 0xdc, 0xf4, 0xda, 0xf4, 0xc5, 0xf4, 0xc6, 0xf4, 0xbd, 0xf4, 0xbb, 0xf4, + 0xc2, 0xf4, 0xc0, 0xf4, 0xd3, 0xf4, 0xd3, 0xf4, 0xf5, 0xf4, 0xf2, 0xf4, + 0x22, 0xf5, 0x22, 0xf5, 0x5d, 0xf5, 0x5a, 0xf5, 0xa4, 0xf5, 0xa2, 0xf5, + 0xf7, 0xf5, 0xf7, 0xf5, 0x56, 0xf6, 0x55, 0xf6, 0xc3, 0xf6, 0xbf, 0xf6, + 0x38, 0xf7, 0x38, 0xf7, 0xb7, 0xf7, 0xb5, 0xf7, 0x43, 0xf8, 0x41, 0xf8, + 0xd3, 0xf8, 0xd3, 0xf8, 0x6d, 0xf9, 0x6b, 0xf9, 0x10, 0xfa, 0x10, 0xfa, + 0xb5, 0xfa, 0xb4, 0xfa, 0x66, 0xfb, 0x64, 0xfb, 0x14, 0xfc, 0x14, 0xfc, + 0xcb, 0xfc, 0xc9, 0xfc, 0x85, 0xfd, 0x85, 0xfd, 0x40, 0xfe, 0x3f, 0xfe, + 0xfe, 0xfe, 0xfc, 0xfe, 0xb7, 0xff, 0xb7, 0xff, 0x77, 0x00, 0x75, 0x00, + 0x2f, 0x01, 0x2f, 0x01, 0xe9, 0x01, 0xe7, 0x01, 0x9f, 0x02, 0x9f, 0x02, + 0x4c, 0x03, 0x4b, 0x03, 0xfd, 0x03, 0xfc, 0x03, 0xa4, 0x04, 0xa2, 0x04, + 0x47, 0x05, 0x46, 0x05, 0xe5, 0x05, 0xe3, 0x05, 0x7c, 0x06, 0x78, 0x06, + 0x08, 0x07, 0x06, 0x07, 0x8b, 0x07, 0x8c, 0x07, 0x08, 0x08, 0x07, 0x08, + 0x7c, 0x08, 0x7c, 0x08, 0xe4, 0x08, 0xe3, 0x08, 0x42, 0x09, 0x42, 0x09, + 0x97, 0x09, 0x96, 0x09, 0xdd, 0x09, 0xdb, 0x09, 0x1b, 0x0a, 0x1a, 0x0a, + 0x49, 0x0a, 0x46, 0x0a, 0x6c, 0x0a, 0x6b, 0x0a, 0x81, 0x0a, 0x80, 0x0a, + 0x88, 0x0a, 0x87, 0x0a, 0x87, 0x0a, 0x85, 0x0a, 0x72, 0x0a, 0x70, 0x0a, + 0x55, 0x0a, 0x53, 0x0a, 0x27, 0x0a, 0x26, 0x0a, 0xef, 0x09, 0xed, 0x09, + 0xa8, 0x09, 0xa5, 0x09, 0x52, 0x09, 0x50, 0x09, 0xf4, 0x08, 0xf3, 0x08, + 0x89, 0x08, 0x86, 0x08, 0x12, 0x08, 0x11, 0x08, 0x93, 0x07, 0x90, 0x07, + 0x05, 0x07, 0x07, 0x07, 0x76, 0x06, 0x73, 0x06, 0xd9, 0x05, 0xd7, 0x05, + 0x36, 0x05, 0x35, 0x05, 0x8f, 0x04, 0x8e, 0x04, 0xdf, 0x03, 0xde, 0x03, + 0x2f, 0x03, 0x2e, 0x03, 0x77, 0x02, 0x74, 0x02, 0xbf, 0x01, 0xbd, 0x01, + 0x01, 0x01, 0xfe, 0x00, 0x47, 0x00, 0x45, 0x00, 0x87, 0xff, 0x86, 0xff, + 0xce, 0xfe, 0xc9, 0xfe, 0x10, 0xfe, 0x0f, 0xfe, 0x57, 0xfd, 0x54, 0xfd, + 0xa3, 0xfc, 0xa2, 0xfc, 0xf2, 0xfb, 0xf0, 0xfb, 0x47, 0xfb, 0x46, 0xfb, + 0x9e, 0xfa, 0x9e, 0xfa, 0x00, 0xfa, 0xfc, 0xf9, 0x62, 0xf9, 0x61, 0xf9, + 0xce, 0xf8, 0xcd, 0xf8, 0x44, 0xf8, 0x42, 0xf8, 0xc1, 0xf7, 0xc1, 0xf7, + 0x49, 0xf7, 0x46, 0xf7, 0xdb, 0xf6, 0xd7, 0xf6, 0x75, 0xf6, 0x74, 0xf6, + 0x1c, 0xf6, 0x18, 0xf6, 0xcd, 0xf5, 0xcb, 0xf5, 0x8c, 0xf5, 0x8a, 0xf5, + 0x55, 0xf5, 0x53, 0xf5, 0x2d, 0xf5, 0x28, 0xf5, 0x0d, 0xf5, 0x0d, 0xf5, + 0xfe, 0xf4, 0xfa, 0xf4, 0xfc, 0xf4, 0xfc, 0xf4, 0x07, 0xf5, 0x03, 0xf5, + 0x20, 0xf5, 0x1f, 0xf5, 0x46, 0xf5, 0x44, 0xf5, 0x7a, 0xf5, 0x78, 0xf5, + 0xbe, 0xf5, 0xbb, 0xf5, 0x09, 0xf6, 0x08, 0xf6, 0x66, 0xf6, 0x62, 0xf6, + 0xca, 0xf6, 0xc9, 0xf6, 0x3c, 0xf7, 0x3a, 0xf7, 0xb8, 0xf7, 0xb6, 0xf7, + 0x40, 0xf8, 0x3d, 0xf8, 0xd0, 0xf8, 0xcd, 0xf8, 0x69, 0xf9, 0x67, 0xf9, + 0x07, 0xfa, 0x06, 0xfa, 0xaf, 0xfa, 0xac, 0xfa, 0x5e, 0xfb, 0x5c, 0xfb, + 0x0e, 0xfc, 0x0c, 0xfc, 0xc8, 0xfc, 0xc6, 0xfc, 0x81, 0xfd, 0x7f, 0xfd, + 0x41, 0xfe, 0x3e, 0xfe, 0x00, 0xff, 0xfe, 0xfe, 0xc2, 0xff, 0xbf, 0xff, + 0x81, 0x00, 0x80, 0x00, 0x42, 0x01, 0x40, 0x01, 0x00, 0x02, 0xfe, 0x01, + 0xbd, 0x02, 0xbc, 0x02, 0x77, 0x03, 0x74, 0x03, 0x2a, 0x04, 0x28, 0x04, + 0xd9, 0x04, 0xd8, 0x04, 0x84, 0x05, 0x82, 0x05, 0x2a, 0x06, 0x28, 0x06, + 0xc6, 0x06, 0xc5, 0x06, 0x5e, 0x07, 0x5b, 0x07, 0xeb, 0x07, 0xea, 0x07, + 0x71, 0x08, 0x70, 0x08, 0xec, 0x08, 0xe9, 0x08, 0x5d, 0x09, 0x5e, 0x09, + 0xc7, 0x09, 0xc4, 0x09, 0x22, 0x0a, 0x21, 0x0a, 0x72, 0x0a, 0x71, 0x0a, + 0xb7, 0x0a, 0xb5, 0x0a, 0xef, 0x0a, 0xee, 0x0a, 0x19, 0x0b, 0x18, 0x0b, + 0x37, 0x0b, 0x36, 0x0b, 0x48, 0x0b, 0x48, 0x0b, 0x49, 0x0b, 0x47, 0x0b, + 0x41, 0x0b, 0x41, 0x0b, 0x26, 0x0b, 0x25, 0x0b, 0x02, 0x0b, 0x01, 0x0b, + 0xcc, 0x0a, 0xcb, 0x0a, 0x8c, 0x0a, 0x8a, 0x0a, 0x3e, 0x0a, 0x3e, 0x0a, + 0xe1, 0x09, 0xdf, 0x09, 0x7d, 0x09, 0x7d, 0x09, 0x08, 0x09, 0x07, 0x09, + 0x8d, 0x08, 0x8b, 0x08, 0x05, 0x08, 0x05, 0x08, 0x76, 0x07, 0x74, 0x07, + 0xe1, 0x06, 0xde, 0x06, 0x3d, 0x06, 0x3e, 0x06, 0x9b, 0x05, 0x99, 0x05, + 0xeb, 0x04, 0xeb, 0x04, 0x3c, 0x04, 0x3a, 0x04, 0x86, 0x03, 0x85, 0x03, + 0xcc, 0x02, 0xca, 0x02, 0x11, 0x02, 0x11, 0x02, 0x54, 0x01, 0x50, 0x01, + 0x96, 0x00, 0x96, 0x00, 0xd7, 0xff, 0xd5, 0xff, 0x1c, 0xff, 0x1b, 0xff, + 0x5f, 0xfe, 0x5e, 0xfe, 0xa8, 0xfd, 0xa5, 0xfd, 0xf1, 0xfc, 0xf1, 0xfc, + 0x43, 0xfc, 0x3f, 0xfc, 0x99, 0xfb, 0x96, 0xfb, 0xf0, 0xfa, 0xef, 0xfa, + 0x52, 0xfa, 0x50, 0xfa, 0xb7, 0xf9, 0xb6, 0xf9, 0x26, 0xf9, 0x21, 0xf9, + 0x9a, 0xf8, 0x9b, 0xf8, 0x1b, 0xf8, 0x18, 0xf8, 0xa3, 0xf7, 0xa1, 0xf7, + 0x36, 0xf7, 0x34, 0xf7, 0xd2, 0xf6, 0xd0, 0xf6, 0x7a, 0xf6, 0x7a, 0xf6, + 0x2e, 0xf6, 0x2b, 0xf6, 0xed, 0xf5, 0xec, 0xf5, 0xbb, 0xf5, 0xba, 0xf5, + 0x91, 0xf5, 0x8e, 0xf5, 0x78, 0xf5, 0x76, 0xf5, 0x67, 0xf5, 0x66, 0xf5, + 0x69, 0xf5, 0x66, 0xf5, 0x73, 0xf5, 0x73, 0xf5, 0x8e, 0xf5, 0x8c, 0xf5, + 0xb7, 0xf5, 0xb6, 0xf5, 0xe9, 0xf5, 0xe7, 0xf5, 0x30, 0xf6, 0x2f, 0xf6, + 0x7b, 0xf6, 0x79, 0xf6, 0xd9, 0xf6, 0xd8, 0xf6, 0x42, 0xf7, 0x3f, 0xf7, + 0xb1, 0xf7, 0xaf, 0xf7, 0x34, 0xf8, 0x34, 0xf8, 0xb8, 0xf8, 0xb5, 0xf8, + 0x4e, 0xf9, 0x4d, 0xf9, 0xe5, 0xf9, 0xe3, 0xf9, 0x88, 0xfa, 0x85, 0xfa, + 0x31, 0xfb, 0x31, 0xfb, 0xdd, 0xfb, 0xdb, 0xfb, 0x93, 0xfc, 0x92, 0xfc, + 0x49, 0xfd, 0x47, 0xfd, 0x06, 0xfe, 0x04, 0xfe, 0xc6, 0xfe, 0xc4, 0xfe, + 0x83, 0xff, 0x81, 0xff, 0x46, 0x00, 0x44, 0x00, 0x02, 0x01, 0x01, 0x01, + 0xc4, 0x01, 0xc4, 0x01, 0x82, 0x02, 0x80, 0x02, 0x3d, 0x03, 0x3b, 0x03, + 0xf5, 0x03, 0xf4, 0x03, 0xa7, 0x04, 0xa3, 0x04, 0x53, 0x05, 0x54, 0x05, + 0xfe, 0x05, 0xfa, 0x05, 0x9c, 0x06, 0x9b, 0x06, 0x39, 0x07, 0x37, 0x07, + 0xcb, 0x07, 0xc9, 0x07, 0x55, 0x08, 0x53, 0x08, 0xd8, 0x08, 0xd6, 0x08, + 0x4d, 0x09, 0x49, 0x09, 0xba, 0x09, 0xb9, 0x09, 0x1d, 0x0a, 0x1b, 0x0a, + 0x72, 0x0a, 0x71, 0x0a, 0xbf, 0x0a, 0xbd, 0x0a, 0xfc, 0x0a, 0xfa, 0x0a, + 0x2d, 0x0b, 0x2b, 0x0b, 0x55, 0x0b, 0x52, 0x0b, 0x68, 0x0b, 0x67, 0x0b, + 0x75, 0x0b, 0x73, 0x0b, 0x6f, 0x0b, 0x6f, 0x0b, 0x5f, 0x0b, 0x5e, 0x0b, + 0x40, 0x0b, 0x3e, 0x0b, 0x12, 0x0b, 0x10, 0x0b, 0xd9, 0x0a, 0xd7, 0x0a, + 0x90, 0x0a, 0x8d, 0x0a, 0x3a, 0x0a, 0x38, 0x0a, 0xda, 0x09, 0xd7, 0x09, + 0x6c, 0x09, 0x6c, 0x09, 0xf6, 0x08, 0xf3, 0x08, 0x71, 0x08, 0x71, 0x08, + 0xe4, 0x07, 0xe3, 0x07, 0x52, 0x07, 0x50, 0x07, 0xb1, 0x06, 0xb1, 0x06, + 0x0f, 0x06, 0x0d, 0x06, 0x63, 0x05, 0x62, 0x05, 0xb2, 0x04, 0xae, 0x04, + 0xfd, 0x03, 0xfc, 0x03, 0x3f, 0x03, 0x40, 0x03, 0x85, 0x02, 0x83, 0x02, + 0xc4, 0x01, 0xc3, 0x01, 0x02, 0x01, 0x00, 0x01, 0x42, 0x00, 0x40, 0x00, + 0x7d, 0xff, 0x7e, 0xff, 0xc2, 0xfe, 0xbf, 0xfe, 0x00, 0xfe, 0x01, 0xfe, + 0x46, 0xfd, 0x44, 0xfd, 0x8e, 0xfc, 0x8d, 0xfc, 0xdb, 0xfb, 0xdb, 0xfb, + 0x30, 0xfb, 0x2d, 0xfb, 0x84, 0xfa, 0x84, 0xfa, 0xe1, 0xf9, 0xe0, 0xf9, + 0x47, 0xf9, 0x46, 0xf9, 0xb0, 0xf8, 0xb1, 0xf8, 0x29, 0xf8, 0x26, 0xf8, + 0xa5, 0xf7, 0xa4, 0xf7, 0x2b, 0xf7, 0x2a, 0xf7, 0xc0, 0xf6, 0xbc, 0xf6, + 0x59, 0xf6, 0x5a, 0xf6, 0x04, 0xf6, 0x01, 0xf6, 0xb6, 0xf5, 0xb5, 0xf5, + 0x75, 0xf5, 0x73, 0xf5, 0x42, 0xf5, 0x42, 0xf5, 0x18, 0xf5, 0x17, 0xf5, + 0x02, 0xf5, 0xff, 0xf4, 0xf4, 0xf4, 0xf2, 0xf4, 0xf3, 0xf4, 0xf3, 0xf4, + 0x07, 0xf5, 0x03, 0xf5, 0x20, 0xf5, 0x20, 0xf5, 0x4d, 0xf5, 0x4b, 0xf5, + 0x84, 0xf5, 0x82, 0xf5, 0xcb, 0xf5, 0xca, 0xf5, 0x1c, 0xf6, 0x1a, 0xf6, + 0x7c, 0xf6, 0x7a, 0xf6, 0xe8, 0xf6, 0xe6, 0xf6, 0x5e, 0xf7, 0x5c, 0xf7, + 0xde, 0xf7, 0xdd, 0xf7, 0x68, 0xf8, 0x66, 0xf8, 0xfd, 0xf8, 0xfa, 0xf8, + 0x97, 0xf9, 0x98, 0xf9, 0x3e, 0xfa, 0x38, 0xfa, 0xe2, 0xfa, 0xe5, 0xfa, + 0x98, 0xfb, 0x94, 0xfb, 0x48, 0xfc, 0x48, 0xfc, 0x03, 0xfd, 0x00, 0xfd, + 0xbf, 0xfd, 0xbe, 0xfd, 0x7c, 0xfe, 0x79, 0xfe, 0x3c, 0xff, 0x3c, 0xff, + 0xf9, 0xff, 0xf7, 0xff, 0xbb, 0x00, 0xb8, 0x00, 0x75, 0x01, 0x76, 0x01, + 0x33, 0x02, 0x30, 0x02, 0xed, 0x02, 0xe9, 0x02, 0xa2, 0x03, 0xa0, 0x03, + 0x51, 0x04, 0x50, 0x04, 0xfc, 0x04, 0xfa, 0x04, 0xa1, 0x05, 0xa0, 0x05, + 0x40, 0x06, 0x3c, 0x06, 0xd5, 0x06, 0xd5, 0x06, 0x6a, 0x07, 0x66, 0x07, + 0xea, 0x07, 0xea, 0x07, 0x6d, 0x08, 0x6b, 0x08, 0xdf, 0x08, 0xdd, 0x08, + 0x4a, 0x09, 0x49, 0x09, 0xaa, 0x09, 0xa8, 0x09, 0xfb, 0x09, 0xfa, 0x09, + 0x45, 0x0a, 0x43, 0x0a, 0x7f, 0x0a, 0x7d, 0x0a, 0xb1, 0x0a, 0xad, 0x0a, + 0xd1, 0x0a, 0xd1, 0x0a, 0xe5, 0x0a, 0xe2, 0x0a, 0xed, 0x0a, 0xec, 0x0a, + 0xe6, 0x0a, 0xe5, 0x0a, 0xd5, 0x0a, 0xd3, 0x0a, 0xb5, 0x0a, 0xb2, 0x0a, + 0x85, 0x0a, 0x85, 0x0a, 0x49, 0x0a, 0x46, 0x0a, 0xfe, 0x09, 0xfd, 0x09, + 0xac, 0x09, 0xa7, 0x09, 0x43, 0x09, 0x44, 0x09, 0xd9, 0x08, 0xd6, 0x08, + 0x5b, 0x08, 0x59, 0x08, 0xd7, 0x07, 0xd6, 0x07, 0x4b, 0x07, 0x48, 0x07, + 0xb1, 0x06, 0xb0, 0x06, 0x14, 0x06, 0x13, 0x06, 0x6a, 0x05, 0x67, 0x05, + 0xbd, 0x04, 0xbb, 0x04, 0x0b, 0x04, 0x07, 0x04, 0x4e, 0x03, 0x4e, 0x03, + 0x96, 0x02, 0x92, 0x02, 0xd2, 0x01, 0xd1, 0x01, 0x11, 0x01, 0x0d, 0x01, + 0x4e, 0x00, 0x4e, 0x00, 0x88, 0xff, 0x84, 0xff, 0xc8, 0xfe, 0xc6, 0xfe, + 0x05, 0xfe, 0x02, 0xfe, 0x43, 0xfd, 0x41, 0xfd, 0x85, 0xfc, 0x84, 0xfc, + 0xce, 0xfb, 0xcb, 0xfb, 0x1b, 0xfb, 0x18, 0xfb, 0x6a, 0xfa, 0x68, 0xfa, + 0xc3, 0xf9, 0xc0, 0xf9, 0x1d, 0xf9, 0x1b, 0xf9, 0x83, 0xf8, 0x80, 0xf8, + 0xef, 0xf7, 0xed, 0xf7, 0x65, 0xf7, 0x62, 0xf7, 0xe6, 0xf6, 0xe5, 0xf6, + 0x6e, 0xf6, 0x69, 0xf6, 0x02, 0xf6, 0x00, 0xf6, 0xa0, 0xf5, 0x9f, 0xf5, + 0x4b, 0xf5, 0x47, 0xf5, 0x02, 0xf5, 0x01, 0xf5, 0xc4, 0xf4, 0xc1, 0xf4, + 0x95, 0xf4, 0x93, 0xf4, 0x70, 0xf4, 0x6f, 0xf4, 0x5c, 0xf4, 0x59, 0xf4, + 0x54, 0xf4, 0x53, 0xf4, 0x5b, 0xf4, 0x58, 0xf4, 0x71, 0xf4, 0x6e, 0xf4, + 0x93, 0xf4, 0x93, 0xf4, 0xc6, 0xf4, 0xc3, 0xf4, 0x05, 0xf5, 0x04, 0xf5, + 0x50, 0xf5, 0x4d, 0xf5, 0xaa, 0xf5, 0xa8, 0xf5, 0x0e, 0xf6, 0x0d, 0xf6, + 0x81, 0xf6, 0x7c, 0xf6, 0xfb, 0xf6, 0xfc, 0xf6, 0x83, 0xf7, 0x7f, 0xf7, + 0x11, 0xf8, 0x10, 0xf8, 0xab, 0xf8, 0xa8, 0xf8, 0x4b, 0xf9, 0x49, 0xf9, + 0xf4, 0xf9, 0xf2, 0xf9, 0xa3, 0xfa, 0x9f, 0xfa, 0x57, 0xfb, 0x55, 0xfb, + 0x0f, 0xfc, 0x0d, 0xfc, 0xcb, 0xfc, 0xc9, 0xfc, 0x8b, 0xfd, 0x8a, 0xfd, + 0x4a, 0xfe, 0x49, 0xfe, 0x10, 0xff, 0x0c, 0xff, 0xce, 0xff, 0xce, 0xff, + 0x94, 0x00, 0x91, 0x00, 0x52, 0x01, 0x51, 0x01, 0x13, 0x02, 0x11, 0x02, + 0xce, 0x02, 0xcd, 0x02, 0x83, 0x03, 0x82, 0x03, 0x36, 0x04, 0x33, 0x04, + 0xe1, 0x04, 0xe2, 0x04, 0x89, 0x05, 0x85, 0x05, 0x2a, 0x06, 0x2a, 0x06, + 0xc4, 0x06, 0xc1, 0x06, 0x55, 0x07, 0x53, 0x07, 0xde, 0x07, 0xdd, 0x07, + 0x5c, 0x08, 0x5a, 0x08, 0xd4, 0x08, 0xd2, 0x08, 0x40, 0x09, 0x3d, 0x09, + 0x9f, 0x09, 0x9d, 0x09, 0xf6, 0x09, 0xf2, 0x09, 0x3d, 0x0a, 0x3b, 0x0a, + 0x7c, 0x0a, 0x79, 0x0a, 0xa9, 0x0a, 0xa8, 0x0a, 0xcf, 0x0a, 0xcd, 0x0a, + 0xe2, 0x0a, 0xe2, 0x0a, 0xec, 0x0a, 0xe9, 0x0a, 0xe8, 0x0a, 0xe7, 0x0a, + 0xd3, 0x0a, 0xd1, 0x0a, 0xb6, 0x0a, 0xb3, 0x0a, 0x84, 0x0a, 0x83, 0x0a, + 0x49, 0x0a, 0x46, 0x0a, 0xff, 0x09, 0xfd, 0x09, 0xa5, 0x09, 0xa5, 0x09, + 0x44, 0x09, 0x40, 0x09, 0xd3, 0x08, 0xd1, 0x08, 0x58, 0x08, 0x55, 0x08, + 0xd2, 0x07, 0xd1, 0x07, 0x41, 0x07, 0x3f, 0x07, 0xab, 0x06, 0xa6, 0x06, + 0x07, 0x06, 0x05, 0x06, 0x63, 0x05, 0x5f, 0x05, 0xaf, 0x04, 0xae, 0x04, + 0xfd, 0x03, 0xfa, 0x03, 0x41, 0x03, 0x40, 0x03, 0x88, 0x02, 0x84, 0x02, + 0xc4, 0x01, 0xc5, 0x01, 0x04, 0x01, 0x00, 0x01, 0x3d, 0x00, 0x3e, 0x00, + 0x7c, 0xff, 0x78, 0xff, 0xb8, 0xfe, 0xb5, 0xfe, 0xf6, 0xfd, 0xf8, 0xfd, + 0x38, 0xfd, 0x33, 0xfd, 0x7b, 0xfc, 0x7b, 0xfc, 0xc7, 0xfb, 0xc4, 0xfb, + 0x13, 0xfb, 0x10, 0xfb, 0x67, 0xfa, 0x65, 0xfa, 0xbf, 0xf9, 0xbd, 0xf9, + 0x21, 0xf9, 0x1d, 0xf9, 0x86, 0xf8, 0x84, 0xf8, 0xf7, 0xf7, 0xf3, 0xf7, + 0x6d, 0xf7, 0x6d, 0xf7, 0xf3, 0xf6, 0xf1, 0xf6, 0x7e, 0xf6, 0x7b, 0xf6, + 0x13, 0xf6, 0x13, 0xf6, 0xb7, 0xf5, 0xb4, 0xf5, 0x66, 0xf5, 0x64, 0xf5, + 0x1f, 0xf5, 0x1f, 0xf5, 0xe9, 0xf4, 0xe5, 0xf4, 0xba, 0xf4, 0xbb, 0xf4, + 0x9c, 0xf4, 0x99, 0xf4, 0x8c, 0xf4, 0x8b, 0xf4, 0x88, 0xf4, 0x86, 0xf4, + 0x8f, 0xf4, 0x91, 0xf4, 0xae, 0xf4, 0xaa, 0xf4, 0xd0, 0xf4, 0xd2, 0xf4, + 0x0a, 0xf5, 0x05, 0xf5, 0x49, 0xf5, 0x49, 0xf5, 0x9b, 0xf5, 0x98, 0xf5, + 0xf8, 0xf5, 0xf7, 0xf5, 0x61, 0xf6, 0x5d, 0xf6, 0xd9, 0xf6, 0xd8, 0xf6, + 0x5a, 0xf7, 0x56, 0xf7, 0xe3, 0xf7, 0xe3, 0xf7, 0x77, 0xf8, 0x76, 0xf8, + 0x18, 0xf9, 0x15, 0xf9, 0xbb, 0xf9, 0xbb, 0xf9, 0x6a, 0xfa, 0x68, 0xfa, + 0x1b, 0xfb, 0x1b, 0xfb, 0xd7, 0xfb, 0xd6, 0xfb, 0x95, 0xfc, 0x92, 0xfc, + 0x55, 0xfd, 0x54, 0xfd, 0x1b, 0xfe, 0x1a, 0xfe, 0xe0, 0xfe, 0xdf, 0xfe, + 0xa9, 0xff, 0xa6, 0xff, 0x70, 0x00, 0x6f, 0x00, 0x36, 0x01, 0x35, 0x01, + 0xfd, 0x01, 0xfa, 0x01, 0xbe, 0x02, 0xbf, 0x02, 0x81, 0x03, 0x7f, 0x03, + 0x37, 0x04, 0x36, 0x04, 0xef, 0x04, 0xed, 0x04, 0x9f, 0x05, 0x9d, 0x05, + 0x49, 0x06, 0x48, 0x06, 0xee, 0x06, 0xec, 0x06, 0x8a, 0x07, 0x88, 0x07, + 0x1e, 0x08, 0x1c, 0x08, 0xa9, 0x08, 0xa7, 0x08, 0x28, 0x09, 0x28, 0x09, + 0xa3, 0x09, 0xa1, 0x09, 0x0f, 0x0a, 0x0d, 0x0a, 0x70, 0x0a, 0x6e, 0x0a, + 0xc4, 0x0a, 0xc2, 0x0a, 0x0d, 0x0b, 0x0a, 0x0b, 0x47, 0x0b, 0x46, 0x0b, + 0x77, 0x0b, 0x75, 0x0b, 0x98, 0x0b, 0x95, 0x0b, 0xaa, 0x0b, 0xa9, 0x0b, + 0xb1, 0x0b, 0xae, 0x0b, 0xa6, 0x0b, 0xa5, 0x0b, 0x90, 0x0b, 0x8d, 0x0b, + 0x68, 0x0b, 0x67, 0x0b, 0x34, 0x0b, 0x2f, 0x0b, 0xf0, 0x0a, 0xf0, 0x0a, + 0xa0, 0x0a, 0x9e, 0x0a, 0x42, 0x0a, 0x41, 0x0a, 0xdb, 0x09, 0xd8, 0x09, + 0x62, 0x09, 0x61, 0x09, 0xe5, 0x08, 0xe3, 0x08, 0x58, 0x08, 0x55, 0x08, + 0xc4, 0x07, 0xc3, 0x07, 0x27, 0x07, 0x25, 0x07, 0x7f, 0x06, 0x7e, 0x06, + 0xd6, 0x05, 0xd4, 0x05, 0x20, 0x05, 0x1f, 0x05, 0x6a, 0x04, 0x67, 0x04, + 0xab, 0x03, 0xad, 0x03, 0xed, 0x02, 0xe9, 0x02, 0x2a, 0x02, 0x29, 0x02, + 0x66, 0x01, 0x62, 0x01, 0x9f, 0x00, 0x9e, 0x00, 0xdc, 0xff, 0xda, 0xff, + 0x15, 0xff, 0x15, 0xff, 0x56, 0xfe, 0x52, 0xfe, 0x93, 0xfd, 0x93, 0xfd, + 0xd8, 0xfc, 0xd6, 0xfc, 0x25, 0xfc, 0x22, 0xfc, 0x6e, 0xfb, 0x6d, 0xfb, + 0xc5, 0xfa, 0xc3, 0xfa, 0x1a, 0xfa, 0x19, 0xfa, 0x7a, 0xf9, 0x78, 0xf9, + 0xe2, 0xf8, 0xe1, 0xf8, 0x4f, 0xf8, 0x4e, 0xf8, 0xcd, 0xf7, 0xcc, 0xf7, + 0x4e, 0xf7, 0x4b, 0xf7, 0xdb, 0xf6, 0xda, 0xf6, 0x74, 0xf6, 0x70, 0xf6, + 0x16, 0xf6, 0x16, 0xf6, 0xc5, 0xf5, 0xc3, 0xf5, 0x7f, 0xf5, 0x7e, 0xf5, + 0x47, 0xf5, 0x45, 0xf5, 0x1b, 0xf5, 0x19, 0xf5, 0xfc, 0xf4, 0xfa, 0xf4, + 0xea, 0xf4, 0xea, 0xf4, 0xea, 0xf4, 0xe9, 0xf4, 0xf5, 0xf4, 0xf3, 0xf4, + 0x0f, 0xf5, 0x0d, 0xf5, 0x36, 0xf5, 0x35, 0xf5, 0x6c, 0xf5, 0x6b, 0xf5, + 0xaf, 0xf5, 0xad, 0xf5, 0xff, 0xf5, 0xfe, 0xf5, 0x5f, 0xf6, 0x5e, 0xf6, + 0xca, 0xf6, 0xc6, 0xf6, 0x40, 0xf7, 0x3f, 0xf7, 0xc4, 0xf7, 0xc2, 0xf7, + 0x4f, 0xf8, 0x50, 0xf8, 0xe8, 0xf8, 0xe6, 0xf8, 0x87, 0xf9, 0x86, 0xf9, + 0x31, 0xfa, 0x31, 0xfa, 0xde, 0xfa, 0xdd, 0xfa, 0x96, 0xfb, 0x95, 0xfb, + 0x51, 0xfc, 0x50, 0xfc, 0x11, 0xfd, 0x10, 0xfd, 0xd6, 0xfd, 0xd4, 0xfd, + 0x99, 0xfe, 0x9a, 0xfe, 0x64, 0xff, 0x61, 0xff, 0x2b, 0x00, 0x2c, 0x00, + 0xf4, 0x00, 0xf2, 0x00, 0xbd, 0x01, 0xbc, 0x01, 0x84, 0x02, 0x83, 0x02, + 0x47, 0x03, 0x47, 0x03, 0x06, 0x04, 0x05, 0x04, 0xc0, 0x04, 0xc0, 0x04, + 0x75, 0x05, 0x75, 0x05, 0x27, 0x06, 0x25, 0x06, 0xcf, 0x06, 0xcf, 0x06, + 0x73, 0x07, 0x71, 0x07, 0x0d, 0x08, 0x0b, 0x08, 0x9d, 0x08, 0x9c, 0x08, + 0x27, 0x09, 0x26, 0x09, 0xa5, 0x09, 0xa3, 0x09, 0x19, 0x0a, 0x19, 0x0a, + 0x81, 0x0a, 0x80, 0x0a, 0xde, 0x0a, 0xdc, 0x0a, 0x2d, 0x0b, 0x2e, 0x0b, + 0x70, 0x0b, 0x70, 0x0b, 0xa9, 0x0b, 0xa7, 0x0b, 0xce, 0x0b, 0xcf, 0x0b, + 0xed, 0x0b, 0xeb, 0x0b, 0xf8, 0x0b, 0xf8, 0x0b, 0xf7, 0x0b, 0xf6, 0x0b, + 0xe8, 0x0b, 0xe6, 0x0b, 0xc7, 0x0b, 0xc8, 0x0b, 0x9c, 0x0b, 0x9a, 0x0b, + 0x5e, 0x0b, 0x5e, 0x0b, 0x16, 0x0b, 0x16, 0x0b, 0xbe, 0x0a, 0xbc, 0x0a, + 0x59, 0x0a, 0x58, 0x0a, 0xea, 0x09, 0xe9, 0x09, 0x6b, 0x09, 0x6a, 0x09, + 0xe7, 0x08, 0xe6, 0x08, 0x53, 0x08, 0x52, 0x08, 0xb9, 0x07, 0xba, 0x07, + 0x16, 0x07, 0x15, 0x07, 0x67, 0x06, 0x67, 0x06, 0xb8, 0x05, 0xb6, 0x05, + 0xfc, 0x04, 0xfc, 0x04, 0x41, 0x04, 0x40, 0x04, 0x7c, 0x03, 0x7c, 0x03, + 0xb9, 0x02, 0xb7, 0x02, 0xee, 0x01, 0xef, 0x01, 0x25, 0x01, 0x25, 0x01, + 0x5c, 0x00, 0x5c, 0x00, 0x8f, 0xff, 0x8f, 0xff, 0xca, 0xfe, 0xca, 0xfe, + 0xff, 0xfd, 0xff, 0xfd, 0x3d, 0xfd, 0x3d, 0xfd, 0x7f, 0xfc, 0x7d, 0xfc, + 0xc3, 0xfb, 0xc3, 0xfb, 0x0f, 0xfb, 0x0f, 0xfb, 0x5e, 0xfa, 0x5c, 0xfa, + 0xb3, 0xf9, 0xb4, 0xf9, 0x10, 0xf9, 0x0f, 0xf9, 0x72, 0xf8, 0x73, 0xf8, + 0xe4, 0xf7, 0xe4, 0xf7, 0x5a, 0xf7, 0x59, 0xf7, 0xdc, 0xf6, 0xdb, 0xf6, + 0x66, 0xf6, 0x66, 0xf6, 0xfe, 0xf5, 0xfc, 0xf5, 0x9e, 0xf5, 0x9e, 0xf5, + 0x4c, 0xf5, 0x4b, 0xf5, 0x09, 0xf5, 0x08, 0xf5, 0xcf, 0xf4, 0xce, 0xf4, + 0xa5, 0xf4, 0xa4, 0xf4, 0x89, 0xf4, 0x88, 0xf4, 0x79, 0xf4, 0x79, 0xf4, + 0x7a, 0xf4, 0x78, 0xf4, 0x85, 0xf4, 0x86, 0xf4, 0xa4, 0xf4, 0xa2, 0xf4, + 0xcd, 0xf4, 0xcf, 0xf4, 0x09, 0xf5, 0x07, 0xf5, 0x50, 0xf5, 0x4f, 0xf5, + 0xa6, 0xf5, 0xa6, 0xf5, 0x0a, 0xf6, 0x08, 0xf6, 0x77, 0xf6, 0x79, 0xf6, + 0xf5, 0xf6, 0xf2, 0xf6, 0x79, 0xf7, 0x7b, 0xf7, 0x0e, 0xf8, 0x0a, 0xf8, + 0xa7, 0xf8, 0xa6, 0xf8, 0x4b, 0xf9, 0x48, 0xf9, 0xf7, 0xf9, 0xf5, 0xf9, + 0xa7, 0xfa, 0xa6, 0xfa, 0x61, 0xfb, 0x61, 0xfb, 0x1e, 0xfc, 0x1b, 0xfc, + 0xde, 0xfc, 0xe0, 0xfc, 0xa5, 0xfd, 0xa2, 0xfd, 0x6c, 0xfe, 0x6a, 0xfe, + 0x34, 0xff, 0x34, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xc5, 0x00, 0xc4, 0x00, + 0x8e, 0x01, 0x8d, 0x01, 0x51, 0x02, 0x4d, 0x02, 0x13, 0x03, 0x15, 0x03, + 0xd2, 0x03, 0xce, 0x03, 0x88, 0x04, 0x87, 0x04, 0x3c, 0x05, 0x3b, 0x05, + 0xe8, 0x05, 0xe6, 0x05, 0x8f, 0x06, 0x8e, 0x06, 0x2d, 0x07, 0x2d, 0x07, + 0xc6, 0x07, 0xc4, 0x07, 0x53, 0x08, 0x53, 0x08, 0xd7, 0x08, 0xd5, 0x08, + 0x53, 0x09, 0x53, 0x09, 0xc3, 0x09, 0xc1, 0x09, 0x28, 0x0a, 0x27, 0x0a, + 0x82, 0x0a, 0x80, 0x0a, 0xcd, 0x0a, 0xcc, 0x0a, 0x0e, 0x0b, 0x0c, 0x0b, + 0x3f, 0x0b, 0x3e, 0x0b, 0x64, 0x0b, 0x64, 0x0b, 0x7c, 0x0b, 0x7a, 0x0b, + 0x83, 0x0b, 0x84, 0x0b, 0x81, 0x0b, 0x80, 0x0b, 0x6d, 0x0b, 0x6b, 0x0b, + 0x4c, 0x0b, 0x4c, 0x0b, 0x1b, 0x0b, 0x18, 0x0b, 0xda, 0x0a, 0xdc, 0x0a, + 0x8e, 0x0a, 0x8d, 0x0a, 0x33, 0x0a, 0x33, 0x0a, 0xcc, 0x09, 0xca, 0x09, + 0x55, 0x09, 0x56, 0x09, 0xd8, 0x08, 0xd5, 0x08, 0x4a, 0x08, 0x4b, 0x08, + 0xb5, 0x07, 0xb3, 0x07, 0x16, 0x07, 0x16, 0x07, 0x6c, 0x06, 0x6b, 0x06, + 0xbe, 0x05, 0xbd, 0x05, 0x06, 0x05, 0x06, 0x05, 0x49, 0x04, 0x48, 0x04, + 0x88, 0x03, 0x87, 0x03, 0xc2, 0x02, 0xc0, 0x02, 0xf7, 0x01, 0xf8, 0x01, + 0x2c, 0x01, 0x2a, 0x01, 0x5e, 0x00, 0x5f, 0x00, 0x91, 0xff, 0x91, 0xff, + 0xc5, 0xfe, 0xc3, 0xfe, 0xf8, 0xfd, 0xf8, 0xfd, 0x2f, 0xfd, 0x2f, 0xfd, + 0x68, 0xfc, 0x67, 0xfc, 0xa9, 0xfb, 0xa8, 0xfb, 0xed, 0xfa, 0xec, 0xfa, + 0x35, 0xfa, 0x34, 0xfa, 0x84, 0xf9, 0x84, 0xf9, 0xd7, 0xf8, 0xd7, 0xf8, + 0x34, 0xf8, 0x34, 0xf8, 0x9c, 0xf7, 0x9a, 0xf7, 0x08, 0xf7, 0x07, 0xf7, + 0x82, 0xf6, 0x81, 0xf6, 0x06, 0xf6, 0x06, 0xf6, 0x92, 0xf5, 0x92, 0xf5, + 0x2c, 0xf5, 0x2d, 0xf5, 0xd4, 0xf4, 0xd1, 0xf4, 0x84, 0xf4, 0x86, 0xf4, + 0x45, 0xf4, 0x44, 0xf4, 0x12, 0xf4, 0x11, 0xf4, 0xec, 0xf3, 0xeb, 0xf3, + 0xd6, 0xf3, 0xd6, 0xf3, 0xcc, 0xf3, 0xcb, 0xf3, 0xd5, 0xf3, 0xd5, 0xf3, + 0xec, 0xf3, 0xeb, 0xf3, 0x10, 0xf4, 0x0f, 0xf4, 0x45, 0xf4, 0x45, 0xf4, + 0x87, 0xf4, 0x88, 0xf4, 0xd8, 0xf4, 0xd7, 0xf4, 0x36, 0xf5, 0x36, 0xf5, + 0xa1, 0xf5, 0xa0, 0xf5, 0x17, 0xf6, 0x18, 0xf6, 0x9a, 0xf6, 0x99, 0xf6, + 0x29, 0xf7, 0x2a, 0xf7, 0xc2, 0xf7, 0xbf, 0xf7, 0x63, 0xf8, 0x65, 0xf8, + 0x0d, 0xf9, 0x0c, 0xf9, 0xbb, 0xf9, 0xbc, 0xf9, 0x76, 0xfa, 0x74, 0xfa, + 0x33, 0xfb, 0x31, 0xfb, 0xf1, 0xfb, 0xf2, 0xfb, 0xbb, 0xfc, 0xba, 0xfc, + 0x81, 0xfd, 0x82, 0xfd, 0x4d, 0xfe, 0x4b, 0xfe, 0x18, 0xff, 0x19, 0xff, + 0xe3, 0xff, 0xe2, 0xff, 0xb0, 0x00, 0xb0, 0x00, 0x76, 0x01, 0x76, 0x01, + 0x41, 0x02, 0x3f, 0x02, 0x01, 0x03, 0x02, 0x03, 0xc0, 0x03, 0xbf, 0x03, + 0x78, 0x04, 0x79, 0x04, 0x2d, 0x05, 0x2d, 0x05, 0xdc, 0x05, 0xdb, 0x05, + 0x82, 0x06, 0x82, 0x06, 0x21, 0x07, 0x22, 0x07, 0xbb, 0x07, 0xb9, 0x07, + 0x47, 0x08, 0x47, 0x08, 0xcd, 0x08, 0xce, 0x08, 0x47, 0x09, 0x47, 0x09, + 0xb7, 0x09, 0xb8, 0x09, 0x1c, 0x0a, 0x1c, 0x0a, 0x74, 0x0a, 0x74, 0x0a, + 0xc3, 0x0a, 0xc2, 0x0a, 0xfe, 0x0a, 0xff, 0x0a, 0x33, 0x0b, 0x31, 0x0b, + 0x55, 0x0b, 0x56, 0x0b, 0x6c, 0x0b, 0x6b, 0x0b, 0x73, 0x0b, 0x72, 0x0b, + 0x6d, 0x0b, 0x6e, 0x0b, 0x5a, 0x0b, 0x59, 0x0b, 0x34, 0x0b, 0x34, 0x0b, + 0x04, 0x0b, 0x04, 0x0b, 0xc3, 0x0a, 0xc0, 0x0a, 0x71, 0x0a, 0x72, 0x0a, + 0x16, 0x0a, 0x13, 0x0a, 0xa6, 0x09, 0xab, 0x09, 0x34, 0x09, 0x31, 0x09, + 0xaf, 0x08, 0xaf, 0x08, 0x21, 0x08, 0x21, 0x08, 0x89, 0x07, 0x8a, 0x07, + 0xe9, 0x06, 0xe8, 0x06, 0x3e, 0x06, 0x3d, 0x06, 0x8b, 0x05, 0x8b, 0x05, + 0xd3, 0x04, 0xd3, 0x04, 0x11, 0x04, 0x12, 0x04, 0x51, 0x03, 0x50, 0x03, + 0x86, 0x02, 0x86, 0x02, 0xbf, 0x01, 0xbe, 0x01, 0xf0, 0x00, 0xf1, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x56, 0xff, 0x56, 0xff, 0x8b, 0xfe, 0x8b, 0xfe, + 0xc2, 0xfd, 0xc2, 0xfd, 0xf7, 0xfc, 0xf7, 0xfc, 0x36, 0xfc, 0x36, 0xfc, + 0x77, 0xfb, 0x76, 0xfb, 0xbe, 0xfa, 0xbf, 0xfa, 0x07, 0xfa, 0x06, 0xfa, + 0x5a, 0xf9, 0x59, 0xf9, 0xb3, 0xf8, 0xb3, 0xf8, 0x15, 0xf8, 0x14, 0xf8, + 0x7b, 0xf7, 0x7d, 0xf7, 0xf1, 0xf6, 0xf0, 0xf6, 0x6d, 0xf6, 0x6c, 0xf6, + 0xf5, 0xf5, 0xf5, 0xf5, 0x89, 0xf5, 0x89, 0xf5, 0x26, 0xf5, 0x25, 0xf5, + 0xd2, 0xf4, 0xd3, 0xf4, 0x8b, 0xf4, 0x89, 0xf4, 0x4e, 0xf4, 0x4e, 0xf4, + 0x24, 0xf4, 0x23, 0xf4, 0x02, 0xf4, 0x00, 0xf4, 0xf2, 0xf3, 0xf3, 0xf3, + 0xf0, 0xf3, 0xef, 0xf3, 0xfa, 0xf3, 0xfb, 0xf3, 0x1c, 0xf4, 0x1b, 0xf4, + 0x40, 0xf4, 0x3f, 0xf4, 0x7e, 0xf4, 0x7e, 0xf4, 0xc5, 0xf4, 0xc5, 0xf4, + 0x1d, 0xf5, 0x1a, 0xf5, 0x81, 0xf5, 0x81, 0xf5, 0xf0, 0xf5, 0xf0, 0xf5, + 0x6f, 0xf6, 0x6e, 0xf6, 0xf5, 0xf6, 0xf6, 0xf6, 0x8e, 0xf7, 0x8a, 0xf7, + 0x27, 0xf8, 0x29, 0xf8, 0xcf, 0xf8, 0xcf, 0xf8, 0x81, 0xf9, 0x81, 0xf9, + 0x34, 0xfa, 0x35, 0xfa, 0xf6, 0xfa, 0xf5, 0xfa, 0xb6, 0xfb, 0xb6, 0xfb, + 0x7d, 0xfc, 0x7e, 0xfc, 0x4a, 0xfd, 0x49, 0xfd, 0x15, 0xfe, 0x16, 0xfe, + 0xe7, 0xfe, 0xe8, 0xfe, 0xb8, 0xff, 0xb7, 0xff, 0x88, 0x00, 0x8a, 0x00, + 0x58, 0x01, 0x56, 0x01, 0x25, 0x02, 0x25, 0x02, 0xf0, 0x02, 0xf1, 0x02, + 0xb8, 0x03, 0xb6, 0x03, 0x78, 0x04, 0x7a, 0x04, 0x36, 0x05, 0x35, 0x05, + 0xef, 0x05, 0xed, 0x05, 0x9d, 0x06, 0x9e, 0x06, 0x49, 0x07, 0x49, 0x07, + 0xec, 0x07, 0xeb, 0x07, 0x84, 0x08, 0x85, 0x08, 0x14, 0x09, 0x12, 0x09, + 0x99, 0x09, 0x99, 0x09, 0x16, 0x0a, 0x16, 0x0a, 0x86, 0x0a, 0x85, 0x0a, + 0xe9, 0x0a, 0xea, 0x0a, 0x41, 0x0b, 0x40, 0x0b, 0x8d, 0x0b, 0x8c, 0x0b, + 0xc8, 0x0b, 0xc9, 0x0b, 0xf7, 0x0b, 0xf7, 0x0b, 0x19, 0x0c, 0x18, 0x0c, + 0x29, 0x0c, 0x2d, 0x0c, 0x31, 0x0c, 0x2e, 0x0c, 0x21, 0x0c, 0x24, 0x0c, + 0x0a, 0x0c, 0x0a, 0x0c, 0xdf, 0x0b, 0xe0, 0x0b, 0xa6, 0x0b, 0xa7, 0x0b, + 0x5d, 0x0b, 0x5e, 0x0b, 0x08, 0x0b, 0x08, 0x0b, 0xa5, 0x0a, 0xa5, 0x0a, + 0x31, 0x0a, 0x31, 0x0a, 0xb4, 0x09, 0xb7, 0x09, 0x2c, 0x09, 0x2b, 0x09, + 0x98, 0x08, 0x98, 0x08, 0xfb, 0x07, 0xfb, 0x07, 0x53, 0x07, 0x53, 0x07, + 0xa6, 0x06, 0xa7, 0x06, 0xec, 0x05, 0xed, 0x05, 0x31, 0x05, 0x32, 0x05, + 0x6f, 0x04, 0x6f, 0x04, 0xa6, 0x03, 0xa8, 0x03, 0xdf, 0x02, 0xde, 0x02, + 0x10, 0x02, 0x10, 0x02, 0x43, 0x01, 0x44, 0x01, 0x74, 0x00, 0x76, 0x00, + 0xa5, 0xff, 0xa6, 0xff, 0xdc, 0xfe, 0xdb, 0xfe, 0x0e, 0xfe, 0x0f, 0xfe, + 0x46, 0xfd, 0x48, 0xfd, 0x84, 0xfc, 0x84, 0xfc, 0xc7, 0xfb, 0xc7, 0xfb, + 0x0d, 0xfb, 0x0e, 0xfb, 0x59, 0xfa, 0x5a, 0xfa, 0xad, 0xf9, 0xac, 0xf9, + 0x04, 0xf9, 0x06, 0xf9, 0x69, 0xf8, 0x69, 0xf8, 0xd1, 0xf7, 0xd2, 0xf7, + 0x48, 0xf7, 0x48, 0xf7, 0xc5, 0xf6, 0xc4, 0xf6, 0x4e, 0xf6, 0x4e, 0xf6, + 0xdf, 0xf5, 0xe1, 0xf5, 0x82, 0xf5, 0x81, 0xf5, 0x2d, 0xf5, 0x2d, 0xf5, + 0xe6, 0xf4, 0xe6, 0xf4, 0xab, 0xf4, 0xab, 0xf4, 0x7e, 0xf4, 0x7f, 0xf4, + 0x61, 0xf4, 0x5f, 0xf4, 0x50, 0xf4, 0x51, 0xf4, 0x4e, 0xf4, 0x4e, 0xf4, + 0x5d, 0xf4, 0x5e, 0xf4, 0x78, 0xf4, 0x76, 0xf4, 0xa3, 0xf4, 0xa3, 0xf4, + 0xdd, 0xf4, 0xde, 0xf4, 0x25, 0xf5, 0x25, 0xf5, 0x7e, 0xf5, 0x80, 0xf5, + 0xe3, 0xf5, 0xe1, 0xf5, 0x56, 0xf6, 0x57, 0xf6, 0xd5, 0xf6, 0xd5, 0xf6, + 0x60, 0xf7, 0x5f, 0xf7, 0xf6, 0xf7, 0xf8, 0xf7, 0x98, 0xf8, 0x96, 0xf8, + 0x42, 0xf9, 0x44, 0xf9, 0xf3, 0xf9, 0xf3, 0xf9, 0xae, 0xfa, 0xaf, 0xfa, + 0x6d, 0xfb, 0x6e, 0xfb, 0x33, 0xfc, 0x35, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xcb, 0xfd, 0xcd, 0xfd, 0x9d, 0xfe, 0x9d, 0xfe, 0x6e, 0xff, 0x70, 0xff, + 0x3f, 0x00, 0x40, 0x00, 0x15, 0x01, 0x16, 0x01, 0xe3, 0x01, 0xe5, 0x01, + 0xb4, 0x02, 0xb6, 0x02, 0x83, 0x03, 0x81, 0x03, 0x47, 0x04, 0x4a, 0x04, + 0x0b, 0x05, 0x0b, 0x05, 0xc9, 0x05, 0xca, 0x05, 0x80, 0x06, 0x7f, 0x06, + 0x31, 0x07, 0x34, 0x07, 0xdb, 0x07, 0xdb, 0x07, 0x7b, 0x08, 0x7d, 0x08, + 0x14, 0x09, 0x14, 0x09, 0xa2, 0x09, 0xa3, 0x09, 0x26, 0x0a, 0x29, 0x0a, + 0xa0, 0x0a, 0xa0, 0x0a, 0x0d, 0x0b, 0x0c, 0x0b, 0x6c, 0x0b, 0x70, 0x0b, + 0xc4, 0x0b, 0xc2, 0x0b, 0x07, 0x0c, 0x08, 0x0c, 0x41, 0x0c, 0x42, 0x0c, + 0x6c, 0x0c, 0x6d, 0x0c, 0x88, 0x0c, 0x89, 0x0c, 0x97, 0x0c, 0x96, 0x0c, + 0x93, 0x0c, 0x93, 0x0c, 0x82, 0x0c, 0x84, 0x0c, 0x63, 0x0c, 0x61, 0x0c, + 0x30, 0x0c, 0x32, 0x0c, 0xf1, 0x0b, 0xf3, 0x0b, 0xa3, 0x0b, 0xa2, 0x0b, + 0x45, 0x0b, 0x48, 0x0b, 0xdb, 0x0a, 0xdb, 0x0a, 0x62, 0x0a, 0x63, 0x0a, + 0xdf, 0x09, 0xe1, 0x09, 0x4f, 0x09, 0x4f, 0x09, 0xb5, 0x08, 0xb6, 0x08, + 0x10, 0x08, 0x10, 0x08, 0x64, 0x07, 0x65, 0x07, 0xaf, 0x06, 0xb1, 0x06, + 0xf1, 0x05, 0xf1, 0x05, 0x2f, 0x05, 0x30, 0x05, 0x64, 0x04, 0x64, 0x04, + 0x9a, 0x03, 0x9a, 0x03, 0xc9, 0x02, 0xcb, 0x02, 0xf8, 0x01, 0xf7, 0x01, + 0x25, 0x01, 0x27, 0x01, 0x51, 0x00, 0x4f, 0x00, 0x7d, 0xff, 0x7f, 0xff, + 0xaa, 0xfe, 0xac, 0xfe, 0xdc, 0xfd, 0xdd, 0xfd, 0x0d, 0xfd, 0x0f, 0xfd, + 0x4b, 0xfc, 0x4c, 0xfc, 0x85, 0xfb, 0x86, 0xfb, 0xca, 0xfa, 0xcd, 0xfa, + 0x10, 0xfa, 0x10, 0xfa, 0x5e, 0xf9, 0x62, 0xf9, 0xb4, 0xf8, 0xb6, 0xf8, + 0x13, 0xf8, 0x14, 0xf8, 0x7a, 0xf7, 0x7d, 0xf7, 0xe9, 0xf6, 0xe9, 0xf6, + 0x66, 0xf6, 0x68, 0xf6, 0xea, 0xf5, 0xec, 0xf5, 0x7e, 0xf5, 0x7d, 0xf5, + 0x17, 0xf5, 0x1b, 0xf5, 0xc2, 0xf4, 0xc1, 0xf4, 0x7a, 0xf4, 0x7a, 0xf4, + 0x3b, 0xf4, 0x3e, 0xf4, 0x0f, 0xf4, 0x0f, 0xf4, 0xef, 0xf3, 0xf0, 0xf3, + 0xdd, 0xf3, 0xe0, 0xf3, 0xdf, 0xf3, 0xdf, 0xf3, 0xea, 0xf3, 0xec, 0xf3, + 0x08, 0xf4, 0x0b, 0xf4, 0x37, 0xf4, 0x38, 0xf4, 0x71, 0xf4, 0x73, 0xf4, + 0xbe, 0xf4, 0xc0, 0xf4, 0x19, 0xf5, 0x19, 0xf5, 0x81, 0xf5, 0x84, 0xf5, + 0xf4, 0xf5, 0xf6, 0xf5, 0x7b, 0xf6, 0x7b, 0xf6, 0x05, 0xf7, 0x08, 0xf7, + 0xa2, 0xf7, 0xa3, 0xf7, 0x44, 0xf8, 0x46, 0xf8, 0xf2, 0xf8, 0xf2, 0xf8, + 0xa6, 0xf9, 0xaa, 0xf9, 0x64, 0xfa, 0x63, 0xfa, 0x26, 0xfb, 0x2a, 0xfb, + 0xef, 0xfb, 0xef, 0xfb, 0xb9, 0xfc, 0xbb, 0xfc, 0x89, 0xfd, 0x8b, 0xfd, + 0x5b, 0xfe, 0x5e, 0xfe, 0x2f, 0xff, 0x2f, 0xff, 0x04, 0x00, 0x08, 0x00, + 0xd7, 0x00, 0xd9, 0x00, 0xa9, 0x01, 0xa9, 0x01, 0x77, 0x02, 0x79, 0x02, + 0x42, 0x03, 0x45, 0x03, 0x0a, 0x04, 0x0a, 0x04, 0xcc, 0x04, 0xcc, 0x04, + 0x85, 0x05, 0x87, 0x05, 0x3e, 0x06, 0x3f, 0x06, 0xed, 0x06, 0xef, 0x06, + 0x95, 0x07, 0x96, 0x07, 0x36, 0x08, 0x38, 0x08, 0xcc, 0x08, 0xce, 0x08, + 0x56, 0x09, 0x58, 0x09, 0xda, 0x09, 0xde, 0x09, 0x52, 0x0a, 0x52, 0x0a, + 0xbe, 0x0a, 0xc1, 0x0a, 0x1f, 0x0b, 0x20, 0x0b, 0x71, 0x0b, 0x73, 0x0b, + 0xb7, 0x0b, 0xb8, 0x0b, 0xee, 0x0b, 0xf0, 0x0b, 0x17, 0x0c, 0x19, 0x0c, + 0x32, 0x0c, 0x34, 0x0c, 0x3d, 0x0c, 0x40, 0x0c, 0x3e, 0x0c, 0x3e, 0x0c, + 0x29, 0x0c, 0x2a, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, 0xd8, 0x0b, 0xd8, 0x0b, + 0x99, 0x0b, 0x9a, 0x0b, 0x49, 0x0b, 0x4b, 0x0b, 0xe9, 0x0a, 0xe9, 0x0a, + 0x7e, 0x0a, 0x81, 0x0a, 0x01, 0x0a, 0x02, 0x0a, 0x7e, 0x09, 0x7e, 0x09, + 0xe8, 0x08, 0xeb, 0x08, 0x4b, 0x08, 0x4a, 0x08, 0xa4, 0x07, 0xa6, 0x07, + 0xf2, 0x06, 0xf4, 0x06, 0x37, 0x06, 0x3b, 0x06, 0x7a, 0x05, 0x7a, 0x05, + 0xad, 0x04, 0xb1, 0x04, 0xe5, 0x03, 0xe5, 0x03, 0x12, 0x03, 0x14, 0x03, + 0x3c, 0x02, 0x3f, 0x02, 0x69, 0x01, 0x68, 0x01, 0x8c, 0x00, 0x91, 0x00, + 0xb6, 0xff, 0xb7, 0xff, 0xdd, 0xfe, 0xdf, 0xfe, 0x06, 0xfe, 0x09, 0xfe, + 0x31, 0xfd, 0x32, 0xfd, 0x5f, 0xfc, 0x62, 0xfc, 0x93, 0xfb, 0x96, 0xfb, + 0xcf, 0xfa, 0xcf, 0xfa, 0x0b, 0xfa, 0x10, 0xfa, 0x50, 0xf9, 0x51, 0xf9, + 0x9b, 0xf8, 0x9d, 0xf8, 0xed, 0xf7, 0xef, 0xf7, 0x48, 0xf7, 0x4a, 0xf7, + 0xad, 0xf6, 0xac, 0xf6, 0x19, 0xf6, 0x1c, 0xf6, 0x95, 0xf5, 0x96, 0xf5, + 0x14, 0xf5, 0x1a, 0xf5, 0xab, 0xf4, 0xa9, 0xf4, 0x45, 0xf4, 0x48, 0xf4, + 0xef, 0xf3, 0xf1, 0xf3, 0xa9, 0xf3, 0xab, 0xf3, 0x6b, 0xf3, 0x6d, 0xf3, + 0x42, 0xf3, 0x44, 0xf3, 0x22, 0xf3, 0x24, 0xf3, 0x17, 0xf3, 0x1a, 0xf3, + 0x1b, 0xf3, 0x1c, 0xf3, 0x2f, 0xf3, 0x2e, 0xf3, 0x4f, 0xf3, 0x53, 0xf3, + 0x85, 0xf3, 0x85, 0xf3, 0xc6, 0xf3, 0xca, 0xf3, 0x1b, 0xf4, 0x1b, 0xf4, + 0x7a, 0xf4, 0x7d, 0xf4, 0xea, 0xf4, 0xeb, 0xf4, 0x65, 0xf5, 0x67, 0xf5, + 0xee, 0xf5, 0xf0, 0xf5, 0x83, 0xf6, 0x85, 0xf6, 0x23, 0xf7, 0x23, 0xf7, + 0xcd, 0xf7, 0xce, 0xf7, 0x7f, 0xf8, 0x81, 0xf8, 0x3a, 0xf9, 0x3c, 0xf9, + 0xfb, 0xf9, 0xfc, 0xf9, 0xc5, 0xfa, 0xc7, 0xfa, 0x8f, 0xfb, 0x90, 0xfb, + 0x62, 0xfc, 0x65, 0xfc, 0x34, 0xfd, 0x35, 0xfd, 0x0a, 0xfe, 0x0d, 0xfe, + 0xe2, 0xfe, 0xe3, 0xfe, 0xb7, 0xff, 0xb9, 0xff, 0x90, 0x00, 0x8f, 0x00, + 0x5f, 0x01, 0x63, 0x01, 0x36, 0x02, 0x36, 0x02, 0x00, 0x03, 0x04, 0x03, + 0xcc, 0x03, 0xce, 0x03, 0x8c, 0x04, 0x90, 0x04, 0x50, 0x05, 0x50, 0x05, + 0x06, 0x06, 0x0a, 0x06, 0xba, 0x06, 0xbb, 0x06, 0x64, 0x07, 0x67, 0x07, + 0x05, 0x08, 0x06, 0x08, 0xa0, 0x08, 0xa3, 0x08, 0x30, 0x09, 0x30, 0x09, + 0xb4, 0x09, 0xb7, 0x09, 0x2f, 0x0a, 0x2f, 0x0a, 0x9e, 0x0a, 0xa1, 0x0a, + 0x01, 0x0b, 0x03, 0x0b, 0x56, 0x0b, 0x5a, 0x0b, 0x9f, 0x0b, 0x9e, 0x0b, + 0xd7, 0x0b, 0xdb, 0x0b, 0x05, 0x0c, 0x05, 0x0c, 0x20, 0x0c, 0x24, 0x0c, + 0x31, 0x0c, 0x34, 0x0c, 0x30, 0x0c, 0x30, 0x0c, 0x21, 0x0c, 0x24, 0x0c, + 0x01, 0x0c, 0x04, 0x0c, 0xd3, 0x0b, 0xd5, 0x0b, 0x91, 0x0b, 0x92, 0x0b, + 0x40, 0x0b, 0x45, 0x0b, 0xe6, 0x0a, 0xe7, 0x0a, 0x76, 0x0a, 0x78, 0x0a, + 0xfc, 0x09, 0xff, 0x09, 0x74, 0x09, 0x76, 0x09, 0xe0, 0x08, 0xe1, 0x08, + 0x44, 0x08, 0x46, 0x08, 0x98, 0x07, 0x9b, 0x07, 0xe8, 0x06, 0xe8, 0x06, + 0x2a, 0x06, 0x2d, 0x06, 0x69, 0x05, 0x69, 0x05, 0x9f, 0x04, 0xa1, 0x04, + 0xd0, 0x03, 0xd1, 0x03, 0xfd, 0x02, 0xff, 0x02, 0x29, 0x02, 0x2b, 0x02, + 0x50, 0x01, 0x51, 0x01, 0x77, 0x00, 0x7a, 0x00, 0x9e, 0xff, 0x9f, 0xff, + 0xc4, 0xfe, 0xc7, 0xfe, 0xed, 0xfd, 0xee, 0xfd, 0x19, 0xfd, 0x1a, 0xfd, + 0x47, 0xfc, 0x49, 0xfc, 0x7a, 0xfb, 0x7c, 0xfb, 0xb5, 0xfa, 0xb6, 0xfa, + 0xf2, 0xf9, 0xf5, 0xf9, 0x37, 0xf9, 0x39, 0xf9, 0x82, 0xf8, 0x85, 0xf8, + 0xd4, 0xf7, 0xd5, 0xf7, 0x34, 0xf7, 0x35, 0xf7, 0x99, 0xf6, 0x9c, 0xf6, + 0x09, 0xf6, 0x0a, 0xf6, 0x84, 0xf5, 0x85, 0xf5, 0x08, 0xf5, 0x0a, 0xf5, + 0x9e, 0xf4, 0x9e, 0xf4, 0x3c, 0xf4, 0x3e, 0xf4, 0xe7, 0xf3, 0xe9, 0xf3, + 0xa2, 0xf3, 0xa3, 0xf3, 0x69, 0xf3, 0x6c, 0xf3, 0x41, 0xf3, 0x41, 0xf3, + 0x28, 0xf3, 0x2b, 0xf3, 0x1c, 0xf3, 0x1e, 0xf3, 0x25, 0xf3, 0x25, 0xf3, + 0x38, 0xf3, 0x38, 0xf3, 0x5e, 0xf3, 0x60, 0xf3, 0x97, 0xf3, 0x95, 0xf3, + 0xd8, 0xf3, 0xdd, 0xf3, 0x32, 0xf4, 0x30, 0xf4, 0x94, 0xf4, 0x97, 0xf4, + 0x08, 0xf5, 0x08, 0xf5, 0x86, 0xf5, 0x87, 0xf5, 0x13, 0xf6, 0x13, 0xf6, + 0xad, 0xf6, 0xaf, 0xf6, 0x52, 0xf7, 0x52, 0xf7, 0xff, 0xf7, 0x01, 0xf8, + 0xb8, 0xf8, 0xb9, 0xf8, 0x75, 0xf9, 0x77, 0xf9, 0x3d, 0xfa, 0x3d, 0xfa, + 0x09, 0xfb, 0x0b, 0xfb, 0xdd, 0xfb, 0xdc, 0xfb, 0xb0, 0xfc, 0xb3, 0xfc, + 0x89, 0xfd, 0x89, 0xfd, 0x66, 0xfe, 0x67, 0xfe, 0x41, 0xff, 0x42, 0xff, + 0x20, 0x00, 0x20, 0x00, 0xfb, 0x00, 0xfb, 0x00, 0xd5, 0x01, 0xd6, 0x01, + 0xad, 0x02, 0xae, 0x02, 0x82, 0x03, 0x82, 0x03, 0x50, 0x04, 0x51, 0x04, + 0x19, 0x05, 0x1a, 0x05, 0xdf, 0x05, 0xe0, 0x05, 0x9f, 0x06, 0x9f, 0x06, + 0x55, 0x07, 0x56, 0x07, 0x05, 0x08, 0x06, 0x08, 0xac, 0x08, 0xac, 0x08, + 0x49, 0x09, 0x49, 0x09, 0xdf, 0x09, 0xde, 0x09, 0x66, 0x0a, 0x66, 0x0a, + 0xe3, 0x0a, 0xe4, 0x0a, 0x54, 0x0b, 0x55, 0x0b, 0xb9, 0x0b, 0xb9, 0x0b, + 0x10, 0x0c, 0x11, 0x0c, 0x59, 0x0c, 0x59, 0x0c, 0x94, 0x0c, 0x96, 0x0c, + 0xbf, 0x0c, 0xc0, 0x0c, 0xdf, 0x0c, 0xdc, 0x0c, 0xea, 0x0c, 0xed, 0x0c, + 0xe9, 0x0c, 0xe8, 0x0c, 0xd6, 0x0c, 0xd8, 0x0c, 0xb2, 0x0c, 0xb3, 0x0c, + 0x7c, 0x0c, 0x7d, 0x0c, 0x38, 0x0c, 0x3a, 0x0c, 0xe4, 0x0b, 0xe4, 0x0b, + 0x7f, 0x0b, 0x82, 0x0b, 0x0c, 0x0b, 0x0e, 0x0b, 0x8f, 0x0a, 0x8e, 0x0a, + 0x00, 0x0a, 0x03, 0x0a, 0x68, 0x09, 0x69, 0x09, 0xc5, 0x08, 0xc6, 0x08, + 0x17, 0x08, 0x19, 0x08, 0x62, 0x07, 0x62, 0x07, 0xa1, 0x06, 0xa3, 0x06, + 0xdb, 0x05, 0xdd, 0x05, 0x12, 0x05, 0x12, 0x05, 0x3d, 0x04, 0x41, 0x04, + 0x6b, 0x03, 0x6b, 0x03, 0x91, 0x02, 0x93, 0x02, 0xbc, 0x01, 0xba, 0x01, + 0xdd, 0x00, 0xdf, 0x00, 0x07, 0x00, 0x06, 0x00, 0x2b, 0xff, 0x2d, 0xff, + 0x56, 0xfe, 0x56, 0xfe, 0x82, 0xfd, 0x82, 0xfd, 0xaf, 0xfc, 0xaf, 0xfc, + 0xe6, 0xfb, 0xe6, 0xfb, 0x1e, 0xfb, 0x20, 0xfb, 0x5f, 0xfa, 0x5f, 0xfa, + 0xa1, 0xf9, 0xa2, 0xf9, 0xee, 0xf8, 0xef, 0xf8, 0x41, 0xf8, 0x44, 0xf8, + 0x9f, 0xf7, 0x9f, 0xf7, 0x05, 0xf7, 0x07, 0xf7, 0x77, 0xf6, 0x76, 0xf6, + 0xf1, 0xf5, 0xf2, 0xf5, 0x78, 0xf5, 0x7a, 0xf5, 0x0b, 0xf5, 0x0a, 0xf5, + 0xa8, 0xf4, 0xac, 0xf4, 0x55, 0xf4, 0x53, 0xf4, 0x0e, 0xf4, 0x10, 0xf4, + 0xd6, 0xf3, 0xd6, 0xf3, 0xac, 0xf3, 0xac, 0xf3, 0x8f, 0xf3, 0x91, 0xf3, + 0x88, 0xf3, 0x89, 0xf3, 0x89, 0xf3, 0x89, 0xf3, 0xa0, 0xf3, 0xa2, 0xf3, + 0xc4, 0xf3, 0xc3, 0xf3, 0xf6, 0xf3, 0xfa, 0xf3, 0x40, 0xf4, 0x3e, 0xf4, + 0x8f, 0xf4, 0x90, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0x66, 0xf5, 0x66, 0xf5, + 0xe6, 0xf5, 0xe7, 0xf5, 0x75, 0xf6, 0x77, 0xf6, 0x0e, 0xf7, 0x0e, 0xf7, + 0xb4, 0xf7, 0xb6, 0xf7, 0x65, 0xf8, 0x64, 0xf8, 0x1e, 0xf9, 0x1e, 0xf9, + 0xdd, 0xf9, 0xe0, 0xf9, 0xa7, 0xfa, 0xa6, 0xfa, 0x73, 0xfb, 0x75, 0xfb, + 0x4a, 0xfc, 0x4a, 0xfc, 0x21, 0xfd, 0x22, 0xfd, 0xfb, 0xfd, 0xfc, 0xfd, + 0xdb, 0xfe, 0xda, 0xfe, 0xb7, 0xff, 0xbb, 0xff, 0x98, 0x00, 0x97, 0x00, + 0x76, 0x01, 0x75, 0x01, 0x4e, 0x02, 0x51, 0x02, 0x2d, 0x03, 0x2d, 0x03, + 0x01, 0x04, 0x02, 0x04, 0xd2, 0x04, 0xd2, 0x04, 0x9e, 0x05, 0x9f, 0x05, + 0x62, 0x06, 0x63, 0x06, 0x23, 0x07, 0x22, 0x07, 0xda, 0x07, 0xda, 0x07, + 0x89, 0x08, 0x8b, 0x08, 0x33, 0x09, 0x31, 0x09, 0xcd, 0x09, 0xcf, 0x09, + 0x61, 0x0a, 0x5f, 0x0a, 0xe8, 0x0a, 0xea, 0x0a, 0x64, 0x0b, 0x63, 0x0b, + 0xd5, 0x0b, 0xd4, 0x0b, 0x34, 0x0c, 0x35, 0x0c, 0x87, 0x0c, 0x89, 0x0c, + 0xcf, 0x0c, 0xd0, 0x0c, 0x05, 0x0d, 0x07, 0x0d, 0x2e, 0x0d, 0x2e, 0x0d, + 0x46, 0x0d, 0x47, 0x0d, 0x4e, 0x0d, 0x4d, 0x0d, 0x48, 0x0d, 0x49, 0x0d, + 0x2d, 0x0d, 0x2e, 0x0d, 0x07, 0x0d, 0x05, 0x0d, 0xc9, 0x0c, 0xca, 0x0c, + 0x80, 0x0c, 0x7e, 0x0c, 0x24, 0x0c, 0x25, 0x0c, 0xbc, 0x0b, 0xba, 0x0b, + 0x43, 0x0b, 0x45, 0x0b, 0xbd, 0x0a, 0xbd, 0x0a, 0x2e, 0x0a, 0x2e, 0x0a, + 0x8d, 0x09, 0x8d, 0x09, 0xe8, 0x08, 0xe7, 0x08, 0x32, 0x08, 0x32, 0x08, + 0x77, 0x07, 0x76, 0x07, 0xb4, 0x06, 0xb5, 0x06, 0xe7, 0x05, 0xe7, 0x05, + 0x1a, 0x05, 0x1b, 0x05, 0x43, 0x04, 0x42, 0x04, 0x6b, 0x03, 0x69, 0x03, + 0x8f, 0x02, 0x91, 0x02, 0xb2, 0x01, 0xb0, 0x01, 0xd6, 0x00, 0xd6, 0x00, + 0xf5, 0xff, 0xf7, 0xff, 0x1a, 0xff, 0x19, 0xff, 0x41, 0xfe, 0x42, 0xfe, + 0x68, 0xfd, 0x66, 0xfd, 0x95, 0xfc, 0x96, 0xfc, 0xc3, 0xfb, 0xc3, 0xfb, + 0xfc, 0xfa, 0xfd, 0xfa, 0x36, 0xfa, 0x34, 0xfa, 0x76, 0xf9, 0x7a, 0xf9, + 0xc1, 0xf8, 0xc0, 0xf8, 0x11, 0xf8, 0x12, 0xf8, 0x6d, 0xf7, 0x6e, 0xf7, + 0xce, 0xf6, 0xd0, 0xf6, 0x3d, 0xf6, 0x3d, 0xf6, 0xb7, 0xf5, 0xb6, 0xf5, + 0x3a, 0xf5, 0x3a, 0xf5, 0xc9, 0xf4, 0xca, 0xf4, 0x69, 0xf4, 0x68, 0xf4, + 0x12, 0xf4, 0x10, 0xf4, 0xc8, 0xf3, 0xc9, 0xf3, 0x93, 0xf3, 0x90, 0xf3, + 0x64, 0xf3, 0x64, 0xf3, 0x4c, 0xf3, 0x4c, 0xf3, 0x41, 0xf3, 0x40, 0xf3, + 0x43, 0xf3, 0x45, 0xf3, 0x5c, 0xf3, 0x59, 0xf3, 0x80, 0xf3, 0x80, 0xf3, + 0xb8, 0xf3, 0xb7, 0xf3, 0xfd, 0xf3, 0xfd, 0xf3, 0x54, 0xf4, 0x54, 0xf4, + 0xbb, 0xf4, 0xba, 0xf4, 0x2f, 0xf5, 0x2f, 0xf5, 0xb3, 0xf5, 0xb2, 0xf5, + 0x43, 0xf6, 0x43, 0xf6, 0xe0, 0xf6, 0xdf, 0xf6, 0x87, 0xf7, 0x87, 0xf7, + 0x38, 0xf8, 0x37, 0xf8, 0xf4, 0xf8, 0xf3, 0xf8, 0xb6, 0xf9, 0xb4, 0xf9, + 0x81, 0xfa, 0x80, 0xfa, 0x4e, 0xfb, 0x4d, 0xfb, 0x25, 0xfc, 0x24, 0xfc, + 0xfb, 0xfc, 0xfb, 0xfc, 0xd7, 0xfd, 0xd8, 0xfd, 0xb5, 0xfe, 0xb5, 0xfe, + 0x90, 0xff, 0x8f, 0xff, 0x6f, 0x00, 0x71, 0x00, 0x4a, 0x01, 0x49, 0x01, + 0x25, 0x02, 0x26, 0x02, 0xfc, 0x02, 0xfd, 0x02, 0xd1, 0x03, 0xcf, 0x03, + 0x9e, 0x04, 0x9f, 0x04, 0x67, 0x05, 0x66, 0x05, 0x29, 0x06, 0x2b, 0x06, + 0xe5, 0x06, 0xe4, 0x06, 0x9a, 0x07, 0x9c, 0x07, 0x46, 0x08, 0x44, 0x08, + 0xeb, 0x08, 0xea, 0x08, 0x83, 0x09, 0x83, 0x09, 0x12, 0x0a, 0x13, 0x0a, + 0x98, 0x0a, 0x97, 0x0a, 0x0e, 0x0b, 0x0e, 0x0b, 0x7c, 0x0b, 0x7b, 0x0b, + 0xd9, 0x0b, 0xdb, 0x0b, 0x2b, 0x0c, 0x2a, 0x0c, 0x6e, 0x0c, 0x6e, 0x0c, + 0xa1, 0x0c, 0xa0, 0x0c, 0xc6, 0x0c, 0xc6, 0x0c, 0xdc, 0x0c, 0xda, 0x0c, + 0xe2, 0x0c, 0xe3, 0x0c, 0xd9, 0x0c, 0xd8, 0x0c, 0xbf, 0x0c, 0xbf, 0x0c, + 0x94, 0x0c, 0x93, 0x0c, 0x57, 0x0c, 0x58, 0x0c, 0x0a, 0x0c, 0x0a, 0x0c, + 0xb1, 0x0b, 0xb0, 0x0b, 0x44, 0x0b, 0x45, 0x0b, 0xcb, 0x0a, 0xc9, 0x0a, + 0x42, 0x0a, 0x45, 0x0a, 0xb1, 0x09, 0xae, 0x09, 0x0e, 0x09, 0x0f, 0x09, + 0x64, 0x08, 0x63, 0x08, 0xaf, 0x07, 0xae, 0x07, 0xee, 0x06, 0xee, 0x06, + 0x2b, 0x06, 0x2b, 0x06, 0x59, 0x05, 0x5a, 0x05, 0x8a, 0x04, 0x8a, 0x04, + 0xad, 0x03, 0xad, 0x03, 0xd4, 0x02, 0xd3, 0x02, 0xf3, 0x01, 0xf4, 0x01, + 0x13, 0x01, 0x10, 0x01, 0x30, 0x00, 0x32, 0x00, 0x4f, 0xff, 0x4f, 0xff, + 0x71, 0xfe, 0x6f, 0xfe, 0x92, 0xfd, 0x90, 0xfd, 0xb5, 0xfc, 0xb6, 0xfc, + 0xdf, 0xfb, 0xdd, 0xfb, 0x0a, 0xfb, 0x0c, 0xfb, 0x40, 0xfa, 0x3e, 0xfa, + 0x76, 0xf9, 0x76, 0xf9, 0xb7, 0xf8, 0xb6, 0xf8, 0xfc, 0xf7, 0xfc, 0xf7, + 0x4c, 0xf7, 0x4c, 0xf7, 0xa8, 0xf6, 0xa8, 0xf6, 0x09, 0xf6, 0x09, 0xf6, + 0x77, 0xf5, 0x78, 0xf5, 0xf2, 0xf4, 0xef, 0xf4, 0x76, 0xf4, 0x76, 0xf4, + 0x08, 0xf4, 0x07, 0xf4, 0xa6, 0xf3, 0xa7, 0xf3, 0x55, 0xf3, 0x50, 0xf3, + 0x0c, 0xf3, 0x0f, 0xf3, 0xda, 0xf2, 0xd8, 0xf2, 0xb3, 0xf2, 0xb2, 0xf2, + 0xa0, 0xf2, 0x9f, 0xf2, 0x99, 0xf2, 0x98, 0xf2, 0xa6, 0xf2, 0xa6, 0xf2, + 0xc2, 0xf2, 0xc2, 0xf2, 0xf1, 0xf2, 0xf0, 0xf2, 0x2f, 0xf3, 0x2f, 0xf3, + 0x7f, 0xf3, 0x7d, 0xf3, 0xdb, 0xf3, 0xdd, 0xf3, 0x4e, 0xf4, 0x4c, 0xf4, + 0xc6, 0xf4, 0xc8, 0xf4, 0x53, 0xf5, 0x51, 0xf5, 0xe9, 0xf5, 0xeb, 0xf5, + 0x8c, 0xf6, 0x8a, 0xf6, 0x3a, 0xf7, 0x39, 0xf7, 0xf0, 0xf7, 0xef, 0xf7, + 0xb1, 0xf8, 0xb0, 0xf8, 0x78, 0xf9, 0x75, 0xf9, 0x43, 0xfa, 0x46, 0xfa, + 0x1b, 0xfb, 0x18, 0xfb, 0xee, 0xfb, 0xee, 0xfb, 0xcc, 0xfc, 0xcc, 0xfc, + 0xa6, 0xfd, 0xa6, 0xfd, 0x85, 0xfe, 0x85, 0xfe, 0x64, 0xff, 0x62, 0xff, + 0x40, 0x00, 0x3f, 0x00, 0x1b, 0x01, 0x1c, 0x01, 0xf5, 0x01, 0xf4, 0x01, + 0xcd, 0x02, 0xcd, 0x02, 0xa1, 0x03, 0xa0, 0x03, 0x6e, 0x04, 0x6d, 0x04, + 0x35, 0x05, 0x36, 0x05, 0xf8, 0x05, 0xf8, 0x05, 0xb4, 0x06, 0xb2, 0x06, + 0x67, 0x07, 0x68, 0x07, 0x13, 0x08, 0x12, 0x08, 0xb6, 0x08, 0xb7, 0x08, + 0x4d, 0x09, 0x4c, 0x09, 0xde, 0x09, 0xdd, 0x09, 0x5f, 0x0a, 0x62, 0x0a, + 0xd9, 0x0a, 0xd7, 0x0a, 0x44, 0x0b, 0x45, 0x0b, 0xa1, 0x0b, 0xa0, 0x0b, + 0xf3, 0x0b, 0xf3, 0x0b, 0x34, 0x0c, 0x34, 0x0c, 0x69, 0x0c, 0x68, 0x0c, + 0x8c, 0x0c, 0x8c, 0x0c, 0xa1, 0x0c, 0xa0, 0x0c, 0xa7, 0x0c, 0xa7, 0x0c, + 0x9c, 0x0c, 0x9c, 0x0c, 0x82, 0x0c, 0x80, 0x0c, 0x53, 0x0c, 0x54, 0x0c, + 0x1a, 0x0c, 0x17, 0x0c, 0xc9, 0x0b, 0xc9, 0x0b, 0x70, 0x0b, 0x6c, 0x0b, + 0x01, 0x0b, 0x03, 0x0b, 0x85, 0x0a, 0x82, 0x0a, 0xff, 0x09, 0xff, 0x09, + 0x66, 0x09, 0x65, 0x09, 0xc5, 0x08, 0xc5, 0x08, 0x18, 0x08, 0x18, 0x08, + 0x5f, 0x07, 0x5f, 0x07, 0xa4, 0x06, 0xa2, 0x06, 0xd7, 0x05, 0xd7, 0x05, + 0x0b, 0x05, 0x0a, 0x05, 0x35, 0x04, 0x35, 0x04, 0x5b, 0x03, 0x5c, 0x03, + 0x81, 0x02, 0x7f, 0x02, 0xa0, 0x01, 0xa2, 0x01, 0xc2, 0x00, 0xc0, 0x00, + 0xde, 0xff, 0xe0, 0xff, 0x00, 0xff, 0xfe, 0xfe, 0x1f, 0xfe, 0x21, 0xfe, + 0x45, 0xfd, 0x44, 0xfd, 0x6b, 0xfc, 0x6b, 0xfc, 0x96, 0xfb, 0x95, 0xfb, + 0xc5, 0xfa, 0xc5, 0xfa, 0xfc, 0xf9, 0xfa, 0xf9, 0x37, 0xf9, 0x37, 0xf9, + 0x7b, 0xf8, 0x7a, 0xf8, 0xc3, 0xf7, 0xc3, 0xf7, 0x1c, 0xf7, 0x1a, 0xf7, + 0x76, 0xf6, 0x75, 0xf6, 0xe0, 0xf5, 0xe0, 0xf5, 0x53, 0xf5, 0x51, 0xf5, + 0xd0, 0xf4, 0xcf, 0xf4, 0x5c, 0xf4, 0x5b, 0xf4, 0xf3, 0xf3, 0xf2, 0xf3, + 0x98, 0xf3, 0x98, 0xf3, 0x4c, 0xf3, 0x4b, 0xf3, 0x0d, 0xf3, 0x0a, 0xf3, + 0xe1, 0xf2, 0xe0, 0xf2, 0xc1, 0xf2, 0xbe, 0xf2, 0xb3, 0xf2, 0xb2, 0xf2, + 0xb3, 0xf2, 0xb2, 0xf2, 0xc7, 0xf2, 0xc5, 0xf2, 0xea, 0xf2, 0xe9, 0xf2, + 0x1d, 0xf3, 0x1d, 0xf3, 0x64, 0xf3, 0x62, 0xf3, 0xb7, 0xf3, 0xb6, 0xf3, + 0x1d, 0xf4, 0x1b, 0xf4, 0x92, 0xf4, 0x91, 0xf4, 0x12, 0xf5, 0x11, 0xf5, + 0xa4, 0xf5, 0xa4, 0xf5, 0x41, 0xf6, 0x3e, 0xf6, 0xe7, 0xf6, 0xe7, 0xf6, + 0x9c, 0xf7, 0x99, 0xf7, 0x54, 0xf8, 0x55, 0xf8, 0x1d, 0xf9, 0x1b, 0xf9, + 0xe7, 0xf9, 0xe5, 0xf9, 0xb8, 0xfa, 0xb7, 0xfa, 0x91, 0xfb, 0x8f, 0xfb, + 0x6b, 0xfc, 0x6b, 0xfc, 0x4d, 0xfd, 0x4c, 0xfd, 0x2c, 0xfe, 0x2c, 0xfe, + 0x10, 0xff, 0x0d, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xd5, 0x00, 0xd1, 0x00, + 0xb4, 0x01, 0xb2, 0x01, 0x90, 0x02, 0x8f, 0x02, 0x6d, 0x03, 0x69, 0x03, + 0x40, 0x04, 0x40, 0x04, 0x12, 0x05, 0x0f, 0x05, 0xdd, 0x05, 0xdc, 0x05, + 0xa3, 0x06, 0xa0, 0x06, 0x5f, 0x07, 0x5d, 0x07, 0x16, 0x08, 0x15, 0x08, + 0xc1, 0x08, 0xbf, 0x08, 0x67, 0x09, 0x65, 0x09, 0xff, 0x09, 0xfd, 0x09, + 0x8b, 0x0a, 0x8c, 0x0a, 0x11, 0x0b, 0x11, 0x0b, 0x85, 0x0b, 0x84, 0x0b, + 0xf1, 0x0b, 0xf0, 0x0b, 0x4b, 0x0c, 0x48, 0x0c, 0x95, 0x0c, 0x97, 0x0c, + 0xda, 0x0c, 0xd7, 0x0c, 0x04, 0x0d, 0x04, 0x0d, 0x26, 0x0d, 0x25, 0x0d, + 0x36, 0x0d, 0x33, 0x0d, 0x34, 0x0d, 0x33, 0x0d, 0x23, 0x0d, 0x22, 0x0d, + 0xff, 0x0c, 0xff, 0x0c, 0xcd, 0x0c, 0xca, 0x0c, 0x84, 0x0c, 0x85, 0x0c, + 0x30, 0x0c, 0x2e, 0x0c, 0xc7, 0x0b, 0xc8, 0x0b, 0x52, 0x0b, 0x51, 0x0b, + 0xd1, 0x0a, 0xd0, 0x0a, 0x3f, 0x0a, 0x3e, 0x0a, 0xa4, 0x09, 0xa3, 0x09, + 0xfa, 0x08, 0xfa, 0x08, 0x47, 0x08, 0x48, 0x08, 0x8c, 0x07, 0x8c, 0x07, + 0xc7, 0x06, 0xc5, 0x06, 0xfb, 0x05, 0xfb, 0x05, 0x29, 0x05, 0x27, 0x05, + 0x51, 0x04, 0x52, 0x04, 0x78, 0x03, 0x77, 0x03, 0x9a, 0x02, 0x99, 0x02, + 0xbc, 0x01, 0xbc, 0x01, 0xdd, 0x00, 0xdb, 0x00, 0xfd, 0xff, 0xff, 0xff, + 0x20, 0xff, 0x1c, 0xff, 0x41, 0xfe, 0x43, 0xfe, 0x6a, 0xfd, 0x67, 0xfd, + 0x92, 0xfc, 0x92, 0xfc, 0xc1, 0xfb, 0xc0, 0xfb, 0xf4, 0xfa, 0xf3, 0xfa, + 0x31, 0xfa, 0x31, 0xfa, 0x6d, 0xf9, 0x6e, 0xf9, 0xb8, 0xf8, 0xb6, 0xf8, + 0x05, 0xf8, 0x07, 0xf8, 0x60, 0xf7, 0x5d, 0xf7, 0xc3, 0xf6, 0xc5, 0xf6, + 0x2e, 0xf6, 0x2d, 0xf6, 0xa7, 0xf5, 0xa7, 0xf5, 0x2b, 0xf5, 0x29, 0xf5, + 0xb9, 0xf4, 0xb9, 0xf4, 0x57, 0xf4, 0x55, 0xf4, 0xff, 0xf3, 0xff, 0xf3, + 0xb7, 0xf3, 0xb7, 0xf3, 0x80, 0xf3, 0x7d, 0xf3, 0x53, 0xf3, 0x55, 0xf3, + 0x3d, 0xf3, 0x39, 0xf3, 0x31, 0xf3, 0x30, 0xf3, 0x38, 0xf3, 0x37, 0xf3, + 0x4b, 0xf3, 0x4c, 0xf3, 0x74, 0xf3, 0x72, 0xf3, 0xab, 0xf3, 0xaa, 0xf3, + 0xf2, 0xf3, 0xf2, 0xf3, 0x4b, 0xf4, 0x4b, 0xf4, 0xb4, 0xf4, 0xb2, 0xf4, + 0x2b, 0xf5, 0x2c, 0xf5, 0xb3, 0xf5, 0xb1, 0xf5, 0x44, 0xf6, 0x44, 0xf6, + 0xe6, 0xf6, 0xe5, 0xf6, 0x91, 0xf7, 0x90, 0xf7, 0x48, 0xf8, 0x47, 0xf8, + 0x05, 0xf9, 0x05, 0xf9, 0xd1, 0xf9, 0xcf, 0xf9, 0x9a, 0xfa, 0x9d, 0xfa, + 0x74, 0xfb, 0x70, 0xfb, 0x4b, 0xfc, 0x4d, 0xfc, 0x2a, 0xfd, 0x29, 0xfd, + 0x0b, 0xfe, 0x0c, 0xfe, 0xee, 0xfe, 0xee, 0xfe, 0xd3, 0xff, 0xd2, 0xff, + 0xb6, 0x00, 0xb7, 0x00, 0x9b, 0x01, 0x99, 0x01, 0x7a, 0x02, 0x7a, 0x02, + 0x5a, 0x03, 0x5a, 0x03, 0x34, 0x04, 0x34, 0x04, 0x09, 0x05, 0x08, 0x05, + 0xd9, 0x05, 0xd8, 0x05, 0xa4, 0x06, 0xa2, 0x06, 0x64, 0x07, 0x65, 0x07, + 0x21, 0x08, 0x20, 0x08, 0xd3, 0x08, 0xd2, 0x08, 0x7e, 0x09, 0x7d, 0x09, + 0x1d, 0x0a, 0x1c, 0x0a, 0xaf, 0x0a, 0xb2, 0x0a, 0x3a, 0x0b, 0x3a, 0x0b, + 0xb7, 0x0b, 0xb5, 0x0b, 0x26, 0x0c, 0x26, 0x0c, 0x87, 0x0c, 0x86, 0x0c, + 0xdc, 0x0c, 0xdc, 0x0c, 0x20, 0x0d, 0x1f, 0x0d, 0x57, 0x0d, 0x56, 0x0d, + 0x7e, 0x0d, 0x7b, 0x0d, 0x90, 0x0d, 0x92, 0x0d, 0x98, 0x0d, 0x97, 0x0d, + 0x8b, 0x0d, 0x8a, 0x0d, 0x6e, 0x0d, 0x6d, 0x0d, 0x3d, 0x0d, 0x3a, 0x0d, + 0xfe, 0x0c, 0x00, 0x0d, 0xad, 0x0c, 0xaa, 0x0c, 0x4b, 0x0c, 0x4b, 0x0c, + 0xdb, 0x0b, 0xd9, 0x0b, 0x5a, 0x0b, 0x5a, 0x0b, 0xd1, 0x0a, 0xd0, 0x0a, + 0x35, 0x0a, 0x34, 0x0a, 0x90, 0x09, 0x91, 0x09, 0xdf, 0x08, 0xde, 0x08, + 0x27, 0x08, 0x25, 0x08, 0x60, 0x07, 0x61, 0x07, 0x99, 0x06, 0x95, 0x06, + 0xc4, 0x05, 0xc4, 0x05, 0xee, 0x04, 0xee, 0x04, 0x11, 0x04, 0x10, 0x04, + 0x34, 0x03, 0x32, 0x03, 0x53, 0x02, 0x55, 0x02, 0x73, 0x01, 0x6f, 0x01, + 0x8f, 0x00, 0x90, 0x00, 0xad, 0xff, 0xaa, 0xff, 0xce, 0xfe, 0xce, 0xfe, + 0xf0, 0xfd, 0xef, 0xfd, 0x13, 0xfd, 0x12, 0xfd, 0x3e, 0xfc, 0x3e, 0xfc, + 0x6c, 0xfb, 0x69, 0xfb, 0xa0, 0xfa, 0xa1, 0xfa, 0xd9, 0xf9, 0xd5, 0xf9, + 0x18, 0xf9, 0x1b, 0xf9, 0x63, 0xf8, 0x60, 0xf8, 0xb0, 0xf7, 0xb1, 0xf7, + 0x0f, 0xf7, 0x0c, 0xf7, 0x6c, 0xf6, 0x6a, 0xf6, 0xe0, 0xf5, 0xdf, 0xf5, + 0x53, 0xf5, 0x54, 0xf5, 0xdf, 0xf4, 0xdc, 0xf4, 0x6e, 0xf4, 0x6f, 0xf4, + 0x0f, 0xf4, 0x0e, 0xf4, 0xbe, 0xf3, 0xbd, 0xf3, 0x76, 0xf3, 0x76, 0xf3, + 0x44, 0xf3, 0x42, 0xf3, 0x1d, 0xf3, 0x1d, 0xf3, 0x07, 0xf3, 0x05, 0xf3, + 0x04, 0xf3, 0x03, 0xf3, 0x0e, 0xf3, 0x0e, 0xf3, 0x2d, 0xf3, 0x2a, 0xf3, + 0x58, 0xf3, 0x58, 0xf3, 0x98, 0xf3, 0x97, 0xf3, 0xe9, 0xf3, 0xe7, 0xf3, + 0x47, 0xf4, 0x47, 0xf4, 0xbb, 0xf4, 0xb8, 0xf4, 0x36, 0xf5, 0x35, 0xf5, + 0xc6, 0xf5, 0xc3, 0xf5, 0x5e, 0xf6, 0x5c, 0xf6, 0x04, 0xf7, 0x02, 0xf7, + 0xb6, 0xf7, 0xb5, 0xf7, 0x6f, 0xf8, 0x6e, 0xf8, 0x33, 0xf9, 0x31, 0xf9, + 0xfe, 0xf9, 0xfc, 0xf9, 0xcf, 0xfa, 0xcd, 0xfa, 0xa7, 0xfb, 0xa5, 0xfb, + 0x84, 0xfc, 0x82, 0xfc, 0x61, 0xfd, 0x5f, 0xfd, 0x44, 0xfe, 0x43, 0xfe, + 0x24, 0xff, 0x22, 0xff, 0x0a, 0x00, 0x07, 0x00, 0xe9, 0x00, 0xe8, 0x00, + 0xcc, 0x01, 0xc9, 0x01, 0xa6, 0x02, 0xa8, 0x02, 0x84, 0x03, 0x81, 0x03, + 0x5a, 0x04, 0x58, 0x04, 0x27, 0x05, 0x27, 0x05, 0xf3, 0x05, 0xf0, 0x05, + 0xb7, 0x06, 0xb7, 0x06, 0x74, 0x07, 0x71, 0x07, 0x28, 0x08, 0x27, 0x08, + 0xd3, 0x08, 0xd3, 0x08, 0x78, 0x09, 0x75, 0x09, 0x0f, 0x0a, 0x0e, 0x0a, + 0x9c, 0x0a, 0x99, 0x0a, 0x1e, 0x0b, 0x1d, 0x0b, 0x91, 0x0b, 0x90, 0x0b, + 0xfa, 0x0b, 0xf8, 0x0b, 0x53, 0x0c, 0x54, 0x0c, 0x9f, 0x0c, 0x9c, 0x0c, + 0xda, 0x0c, 0xd9, 0x0c, 0x09, 0x0d, 0x07, 0x0d, 0x26, 0x0d, 0x23, 0x0d, + 0x34, 0x0d, 0x33, 0x0d, 0x31, 0x0d, 0x2f, 0x0d, 0x1d, 0x0d, 0x1d, 0x0d, + 0xf9, 0x0c, 0xf7, 0x0c, 0xc4, 0x0c, 0xc3, 0x0c, 0x7c, 0x0c, 0x79, 0x0c, + 0x24, 0x0c, 0x25, 0x0c, 0xbd, 0x0b, 0xba, 0x0b, 0x46, 0x0b, 0x45, 0x0b, + 0xbf, 0x0a, 0xbd, 0x0a, 0x2e, 0x0a, 0x2b, 0x0a, 0x8e, 0x09, 0x8c, 0x09, + 0xe0, 0x08, 0xde, 0x08, 0x2c, 0x08, 0x2b, 0x08, 0x6d, 0x07, 0x69, 0x07, + 0xa2, 0x06, 0xa1, 0x06, 0xd4, 0x05, 0xd1, 0x05, 0xfb, 0x04, 0xfc, 0x04, + 0x22, 0x04, 0x1e, 0x04, 0x41, 0x03, 0x40, 0x03, 0x5c, 0x02, 0x5c, 0x02, + 0x7a, 0x01, 0x77, 0x01, 0x92, 0x00, 0x91, 0x00, 0xad, 0xff, 0xaa, 0xff, + 0xc6, 0xfe, 0xc5, 0xfe, 0xe4, 0xfd, 0xe2, 0xfd, 0x03, 0xfd, 0x00, 0xfd, + 0x22, 0xfc, 0x23, 0xfc, 0x4e, 0xfb, 0x4a, 0xfb, 0x78, 0xfa, 0x77, 0xfa, + 0xae, 0xf9, 0xab, 0xf9, 0xe5, 0xf8, 0xe1, 0xf8, 0x26, 0xf8, 0x25, 0xf8, + 0x6f, 0xf7, 0x69, 0xf7, 0xc0, 0xf6, 0xbf, 0xf6, 0x1b, 0xf6, 0x19, 0xf6, + 0x82, 0xf5, 0x80, 0xf5, 0xf3, 0xf4, 0xf3, 0xf4, 0x72, 0xf4, 0x70, 0xf4, + 0x00, 0xf4, 0xfc, 0xf3, 0x94, 0xf3, 0x95, 0xf3, 0x3c, 0xf3, 0x3a, 0xf3, + 0xf1, 0xf2, 0xee, 0xf2, 0xb4, 0xf2, 0xb4, 0xf2, 0x88, 0xf2, 0x85, 0xf2, + 0x6b, 0xf2, 0x6c, 0xf2, 0x60, 0xf2, 0x5d, 0xf2, 0x68, 0xf2, 0x66, 0xf2, + 0x7d, 0xf2, 0x7f, 0xf2, 0xa9, 0xf2, 0xa7, 0xf2, 0xe6, 0xf2, 0xe5, 0xf2, + 0x2f, 0xf3, 0x2d, 0xf3, 0x8f, 0xf3, 0x8c, 0xf3, 0xf8, 0xf3, 0xf9, 0xf3, + 0x75, 0xf4, 0x73, 0xf4, 0x00, 0xf5, 0xfe, 0xf4, 0x94, 0xf5, 0x91, 0xf5, + 0x39, 0xf6, 0x39, 0xf6, 0xea, 0xf6, 0xe6, 0xf6, 0x9f, 0xf7, 0x9f, 0xf7, + 0x64, 0xf8, 0x60, 0xf8, 0x2b, 0xf9, 0x2a, 0xf9, 0xfc, 0xf9, 0xfb, 0xf9, + 0xd3, 0xfa, 0xd2, 0xfa, 0xae, 0xfb, 0xad, 0xfb, 0x8c, 0xfc, 0x8a, 0xfc, + 0x6d, 0xfd, 0x6b, 0xfd, 0x4f, 0xfe, 0x4d, 0xfe, 0x32, 0xff, 0x31, 0xff, + 0x13, 0x00, 0x13, 0x00, 0xf4, 0x00, 0xf4, 0x00, 0xd3, 0x01, 0xd1, 0x01, + 0xad, 0x02, 0xad, 0x02, 0x88, 0x03, 0x85, 0x03, 0x5a, 0x04, 0x5a, 0x04, + 0x27, 0x05, 0x24, 0x05, 0xf0, 0x05, 0xef, 0x05, 0xae, 0x06, 0xad, 0x06, + 0x6b, 0x07, 0x6a, 0x07, 0x18, 0x08, 0x16, 0x08, 0xc3, 0x08, 0xc2, 0x08, + 0x60, 0x09, 0x5c, 0x09, 0xf4, 0x09, 0xf3, 0x09, 0x7f, 0x0a, 0x7e, 0x0a, + 0xf8, 0x0a, 0xf6, 0x0a, 0x6b, 0x0b, 0x6a, 0x0b, 0xcd, 0x0b, 0xca, 0x0b, + 0x23, 0x0c, 0x23, 0x0c, 0x69, 0x0c, 0x68, 0x0c, 0xa1, 0x0c, 0x9f, 0x0c, + 0xc9, 0x0c, 0xc8, 0x0c, 0xe1, 0x0c, 0xe1, 0x0c, 0xea, 0x0c, 0xe7, 0x0c, + 0xe2, 0x0c, 0xe1, 0x0c, 0xcc, 0x0c, 0xc9, 0x0c, 0x9f, 0x0c, 0x9e, 0x0c, + 0x67, 0x0c, 0x66, 0x0c, 0x19, 0x0c, 0x16, 0x0c, 0xbe, 0x0b, 0xbd, 0x0b, + 0x4f, 0x0b, 0x4e, 0x0b, 0xd4, 0x0a, 0xd4, 0x0a, 0x4b, 0x0a, 0x4a, 0x0a, + 0xb1, 0x09, 0xb1, 0x09, 0x10, 0x09, 0x0f, 0x09, 0x5f, 0x08, 0x5e, 0x08, + 0xa8, 0x07, 0xa6, 0x07, 0xe4, 0x06, 0xe3, 0x06, 0x18, 0x06, 0x17, 0x06, + 0x47, 0x05, 0x46, 0x05, 0x6d, 0x04, 0x6b, 0x04, 0x92, 0x03, 0x91, 0x03, + 0xb0, 0x02, 0xb0, 0x02, 0xcf, 0x01, 0xcb, 0x01, 0xe8, 0x00, 0xe9, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x1e, 0xff, 0x1d, 0xff, 0x39, 0xfe, 0x39, 0xfe, + 0x5a, 0xfd, 0x58, 0xfd, 0x7b, 0xfc, 0x79, 0xfc, 0xa2, 0xfb, 0x9f, 0xfb, + 0xcb, 0xfa, 0xc8, 0xfa, 0xfc, 0xf9, 0xfa, 0xf9, 0x33, 0xf9, 0x31, 0xf9, + 0x71, 0xf8, 0x6f, 0xf8, 0xb8, 0xf7, 0xb6, 0xf7, 0x04, 0xf7, 0x04, 0xf7, + 0x60, 0xf6, 0x5d, 0xf6, 0xc0, 0xf5, 0xbf, 0xf5, 0x30, 0xf5, 0x2f, 0xf5, + 0xa9, 0xf4, 0xa7, 0xf4, 0x2f, 0xf4, 0x2f, 0xf4, 0xc2, 0xf3, 0xc1, 0xf3, + 0x65, 0xf3, 0x63, 0xf3, 0x15, 0xf3, 0x14, 0xf3, 0xd3, 0xf2, 0xd2, 0xf2, + 0xa2, 0xf2, 0x9f, 0xf2, 0x7c, 0xf2, 0x7d, 0xf2, 0x6e, 0xf2, 0x6b, 0xf2, + 0x6c, 0xf2, 0x6a, 0xf2, 0x7c, 0xf2, 0x7c, 0xf2, 0x9f, 0xf2, 0x9e, 0xf2, + 0xd1, 0xf2, 0xd0, 0xf2, 0x18, 0xf3, 0x17, 0xf3, 0x6c, 0xf3, 0x69, 0xf3, + 0xd0, 0xf3, 0xd1, 0xf3, 0x47, 0xf4, 0x44, 0xf4, 0xc5, 0xf4, 0xc5, 0xf4, + 0x5b, 0xf5, 0x59, 0xf5, 0xf6, 0xf5, 0xf6, 0xf5, 0xa2, 0xf6, 0xa0, 0xf6, + 0x56, 0xf7, 0x55, 0xf7, 0x13, 0xf8, 0x12, 0xf8, 0xde, 0xf8, 0xdb, 0xf8, + 0xa9, 0xf9, 0xaa, 0xf9, 0x80, 0xfa, 0x80, 0xfa, 0x5b, 0xfb, 0x5a, 0xfb, + 0x38, 0xfc, 0x38, 0xfc, 0x1c, 0xfd, 0x1a, 0xfd, 0xff, 0xfd, 0xff, 0xfd, + 0xe6, 0xfe, 0xe4, 0xfe, 0xca, 0xff, 0xc8, 0xff, 0xb1, 0x00, 0xb1, 0x00, + 0x92, 0x01, 0x91, 0x01, 0x74, 0x02, 0x75, 0x02, 0x53, 0x03, 0x4e, 0x03, + 0x2a, 0x04, 0x2c, 0x04, 0x03, 0x05, 0x00, 0x05, 0xcc, 0x05, 0xcb, 0x05, + 0x99, 0x06, 0x97, 0x06, 0x57, 0x07, 0x57, 0x07, 0x13, 0x08, 0x10, 0x08, + 0xc1, 0x08, 0xc1, 0x08, 0x68, 0x09, 0x67, 0x09, 0x07, 0x0a, 0x05, 0x0a, + 0x94, 0x0a, 0x96, 0x0a, 0x20, 0x0b, 0x1b, 0x0b, 0x96, 0x0b, 0x99, 0x0b, + 0x07, 0x0c, 0x01, 0x0c, 0x61, 0x0c, 0x61, 0x0c, 0xb3, 0x0c, 0xb2, 0x0c, + 0xf4, 0x0c, 0xf1, 0x0c, 0x25, 0x0d, 0x27, 0x0d, 0x49, 0x0d, 0x45, 0x0d, + 0x59, 0x0d, 0x58, 0x0d, 0x5b, 0x0d, 0x5b, 0x0d, 0x4a, 0x0d, 0x46, 0x0d, + 0x29, 0x0d, 0x2b, 0x0d, 0xf6, 0x0c, 0xf5, 0x0c, 0xb2, 0x0c, 0xaf, 0x0c, + 0x5b, 0x0c, 0x5b, 0x0c, 0xf6, 0x0b, 0xf2, 0x0b, 0x81, 0x0b, 0x80, 0x0b, + 0xfd, 0x0a, 0xfc, 0x0a, 0x6b, 0x0a, 0x68, 0x0a, 0xcd, 0x09, 0xcd, 0x09, + 0x23, 0x09, 0x24, 0x09, 0x72, 0x08, 0x6e, 0x08, 0xb0, 0x07, 0xb0, 0x07, + 0xec, 0x06, 0xeb, 0x06, 0x1d, 0x06, 0x1b, 0x06, 0x4a, 0x05, 0x49, 0x05, + 0x6f, 0x04, 0x6e, 0x04, 0x92, 0x03, 0x90, 0x03, 0xb1, 0x02, 0xb3, 0x02, + 0xd1, 0x01, 0xce, 0x01, 0xed, 0x00, 0xed, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x2a, 0xff, 0x28, 0xff, 0x49, 0xfe, 0x4a, 0xfe, 0x6f, 0xfd, 0x6e, 0xfd, + 0x93, 0xfc, 0x92, 0xfc, 0xc0, 0xfb, 0xc1, 0xfb, 0xef, 0xfa, 0xee, 0xfa, + 0x26, 0xfa, 0x26, 0xfa, 0x64, 0xf9, 0x65, 0xf9, 0xa8, 0xf8, 0xa8, 0xf8, + 0xf5, 0xf7, 0xf5, 0xf7, 0x4a, 0xf7, 0x49, 0xf7, 0xa8, 0xf6, 0xa8, 0xf6, + 0x14, 0xf6, 0x14, 0xf6, 0x86, 0xf5, 0x87, 0xf5, 0x0b, 0xf5, 0x0b, 0xf5, + 0x94, 0xf4, 0x95, 0xf4, 0x33, 0xf4, 0x34, 0xf4, 0xd7, 0xf3, 0xd6, 0xf3, + 0x8f, 0xf3, 0x8f, 0xf3, 0x53, 0xf3, 0x54, 0xf3, 0x26, 0xf3, 0x27, 0xf3, + 0x0b, 0xf3, 0x0b, 0xf3, 0xfe, 0xf2, 0xff, 0xf2, 0x03, 0xf3, 0x02, 0xf3, + 0x18, 0xf3, 0x18, 0xf3, 0x3c, 0xf3, 0x3d, 0xf3, 0x76, 0xf3, 0x74, 0xf3, + 0xbb, 0xf3, 0xbc, 0xf3, 0x16, 0xf4, 0x14, 0xf4, 0x7c, 0xf4, 0x7d, 0xf4, + 0xf4, 0xf4, 0xf4, 0xf4, 0x7a, 0xf5, 0x7b, 0xf5, 0x0d, 0xf6, 0x0c, 0xf6, + 0xaf, 0xf6, 0xad, 0xf6, 0x59, 0xf7, 0x5a, 0xf7, 0x10, 0xf8, 0x11, 0xf8, + 0xd2, 0xf8, 0xd0, 0xf8, 0x9a, 0xf9, 0x9b, 0xf9, 0x6b, 0xfa, 0x69, 0xfa, + 0x40, 0xfb, 0x40, 0xfb, 0x1d, 0xfc, 0x1d, 0xfc, 0xfd, 0xfc, 0xfa, 0xfc, + 0xdf, 0xfd, 0xdf, 0xfd, 0xc5, 0xfe, 0xc3, 0xfe, 0xaa, 0xff, 0xa9, 0xff, + 0x90, 0x00, 0x8f, 0x00, 0x74, 0x01, 0x71, 0x01, 0x57, 0x02, 0x57, 0x02, + 0x36, 0x03, 0x34, 0x03, 0x14, 0x04, 0x12, 0x04, 0xeb, 0x04, 0xec, 0x04, + 0xbe, 0x05, 0xbb, 0x05, 0x8a, 0x06, 0x8c, 0x06, 0x4f, 0x07, 0x4d, 0x07, + 0x0b, 0x08, 0x0c, 0x08, 0xc1, 0x08, 0xc0, 0x08, 0x6c, 0x09, 0x6b, 0x09, + 0x0e, 0x0a, 0x0e, 0x0a, 0xa6, 0x0a, 0xa6, 0x0a, 0x2f, 0x0b, 0x2e, 0x0b, + 0xb0, 0x0b, 0xaf, 0x0b, 0x22, 0x0c, 0x20, 0x0c, 0x86, 0x0c, 0x86, 0x0c, + 0xdf, 0x0c, 0xde, 0x0c, 0x24, 0x0d, 0x23, 0x0d, 0x5e, 0x0d, 0x5e, 0x0d, + 0x86, 0x0d, 0x83, 0x0d, 0x9e, 0x0d, 0x9f, 0x0d, 0xa6, 0x0d, 0xa4, 0x0d, + 0x9d, 0x0d, 0x9d, 0x0d, 0x81, 0x0d, 0x81, 0x0d, 0x57, 0x0d, 0x56, 0x0d, + 0x17, 0x0d, 0x18, 0x0d, 0xca, 0x0c, 0xc8, 0x0c, 0x6a, 0x0c, 0x6c, 0x0c, + 0xfb, 0x0b, 0xfa, 0x0b, 0x80, 0x0b, 0x80, 0x0b, 0xf3, 0x0a, 0xf2, 0x0a, + 0x5c, 0x0a, 0x5c, 0x0a, 0xb7, 0x09, 0xb7, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x4f, 0x08, 0x4f, 0x08, 0x8e, 0x07, 0x8e, 0x07, 0xc5, 0x06, 0xc4, 0x06, + 0xf3, 0x05, 0xf2, 0x05, 0x1d, 0x05, 0x1f, 0x05, 0x41, 0x04, 0x3f, 0x04, + 0x62, 0x03, 0x65, 0x03, 0x86, 0x02, 0x83, 0x02, 0xa0, 0x01, 0xa0, 0x01, + 0xc0, 0x00, 0xbf, 0x00, 0xdb, 0xff, 0xdb, 0xff, 0xfc, 0xfe, 0xfb, 0xfe, + 0x1e, 0xfe, 0x1d, 0xfe, 0x42, 0xfd, 0x42, 0xfd, 0x6b, 0xfc, 0x6b, 0xfc, + 0x98, 0xfb, 0x99, 0xfb, 0xcc, 0xfa, 0xca, 0xfa, 0x03, 0xfa, 0x04, 0xfa, + 0x42, 0xf9, 0x42, 0xf9, 0x8a, 0xf8, 0x8a, 0xf8, 0xda, 0xf7, 0xd9, 0xf7, + 0x30, 0xf7, 0x31, 0xf7, 0x94, 0xf6, 0x93, 0xf6, 0x00, 0xf6, 0xff, 0xf5, + 0x79, 0xf5, 0x78, 0xf5, 0xfe, 0xf4, 0xfd, 0xf4, 0x8b, 0xf4, 0x8d, 0xf4, + 0x2a, 0xf4, 0x2b, 0xf4, 0xd7, 0xf3, 0xd6, 0xf3, 0x90, 0xf3, 0x90, 0xf3, + 0x5a, 0xf3, 0x59, 0xf3, 0x31, 0xf3, 0x2e, 0xf3, 0x17, 0xf3, 0x1a, 0xf3, + 0x13, 0xf3, 0x0f, 0xf3, 0x18, 0xf3, 0x1c, 0xf3, 0x33, 0xf3, 0x30, 0xf3, + 0x5d, 0xf3, 0x5f, 0xf3, 0x99, 0xf3, 0x9a, 0xf3, 0xe5, 0xf3, 0xe4, 0xf3, + 0x42, 0xf4, 0x44, 0xf4, 0xab, 0xf4, 0xac, 0xf4, 0x29, 0xf5, 0x29, 0xf5, + 0xb0, 0xf5, 0xb0, 0xf5, 0x48, 0xf6, 0x49, 0xf6, 0xea, 0xf6, 0xe8, 0xf6, + 0x98, 0xf7, 0x9a, 0xf7, 0x4e, 0xf8, 0x4f, 0xf8, 0x0f, 0xf9, 0x10, 0xf9, + 0xd8, 0xf9, 0xda, 0xf9, 0xa6, 0xfa, 0xa7, 0xfa, 0x7e, 0xfb, 0x7d, 0xfb, + 0x54, 0xfc, 0x57, 0xfc, 0x34, 0xfd, 0x33, 0xfd, 0x13, 0xfe, 0x16, 0xfe, + 0xf5, 0xfe, 0xf3, 0xfe, 0xd8, 0xff, 0xda, 0xff, 0xb9, 0x00, 0xb7, 0x00, + 0x97, 0x01, 0x99, 0x01, 0x74, 0x02, 0x75, 0x02, 0x4d, 0x03, 0x4f, 0x03, + 0x25, 0x04, 0x25, 0x04, 0xf6, 0x04, 0xf6, 0x04, 0xc1, 0x05, 0xc1, 0x05, + 0x86, 0x06, 0x85, 0x06, 0x43, 0x07, 0x46, 0x07, 0xf9, 0x07, 0xf8, 0x07, + 0xa5, 0x08, 0xa9, 0x08, 0x4b, 0x09, 0x4a, 0x09, 0xe2, 0x09, 0xe3, 0x09, + 0x72, 0x0a, 0x72, 0x0a, 0xf2, 0x0a, 0xf3, 0x0a, 0x6d, 0x0b, 0x6d, 0x0b, + 0xd4, 0x0b, 0xd6, 0x0b, 0x33, 0x0c, 0x32, 0x0c, 0x7e, 0x0c, 0x81, 0x0c, + 0xc0, 0x0c, 0xc0, 0x0c, 0xef, 0x0c, 0xf0, 0x0c, 0x10, 0x0d, 0x10, 0x0d, + 0x22, 0x0d, 0x21, 0x0d, 0x23, 0x0d, 0x25, 0x0d, 0x14, 0x0d, 0x12, 0x0d, + 0xf5, 0x0c, 0xf5, 0x0c, 0xc2, 0x0c, 0xc2, 0x0c, 0x80, 0x0c, 0x80, 0x0c, + 0x2c, 0x0c, 0x2d, 0x0c, 0xc8, 0x0b, 0xca, 0x0b, 0x58, 0x0b, 0x59, 0x0b, + 0xd4, 0x0a, 0xd6, 0x0a, 0x4a, 0x0a, 0x4a, 0x0a, 0xae, 0x09, 0xaf, 0x09, + 0x04, 0x09, 0x06, 0x09, 0x57, 0x08, 0x57, 0x08, 0x9b, 0x07, 0x9b, 0x07, + 0xd9, 0x06, 0xd9, 0x06, 0x0c, 0x06, 0x0d, 0x06, 0x3b, 0x05, 0x39, 0x05, + 0x62, 0x04, 0x65, 0x04, 0x88, 0x03, 0x86, 0x03, 0xa7, 0x02, 0xa8, 0x02, + 0xc4, 0x01, 0xc5, 0x01, 0xe2, 0x00, 0xe3, 0x00, 0xfc, 0xff, 0xfc, 0xff, + 0x1d, 0xff, 0x1c, 0xff, 0x38, 0xfe, 0x3b, 0xfe, 0x5c, 0xfd, 0x5b, 0xfd, + 0x80, 0xfc, 0x7f, 0xfc, 0xa8, 0xfb, 0xa8, 0xfb, 0xd6, 0xfa, 0xd7, 0xfa, + 0x09, 0xfa, 0x07, 0xfa, 0x43, 0xf9, 0x43, 0xf9, 0x82, 0xf8, 0x83, 0xf8, + 0xcd, 0xf7, 0xcd, 0xf7, 0x1c, 0xf7, 0x1e, 0xf7, 0x7a, 0xf6, 0x78, 0xf6, + 0xdf, 0xf5, 0xe0, 0xf5, 0x51, 0xf5, 0x4f, 0xf5, 0xcc, 0xf4, 0xcb, 0xf4, + 0x54, 0xf4, 0x56, 0xf4, 0xeb, 0xf3, 0xe9, 0xf3, 0x8d, 0xf3, 0x8f, 0xf3, + 0x42, 0xf3, 0x41, 0xf3, 0x00, 0xf3, 0x01, 0xf3, 0xd1, 0xf2, 0xd0, 0xf2, + 0xb0, 0xf2, 0xb1, 0xf2, 0xa1, 0xf2, 0xa0, 0xf2, 0xa0, 0xf2, 0xa2, 0xf2, + 0xb1, 0xf2, 0xb4, 0xf2, 0xd8, 0xf2, 0xd7, 0xf2, 0x0a, 0xf3, 0x0c, 0xf3, + 0x51, 0xf3, 0x50, 0xf3, 0xa6, 0xf3, 0xa8, 0xf3, 0x09, 0xf4, 0x0a, 0xf4, + 0x80, 0xf4, 0x7e, 0xf4, 0xff, 0xf4, 0x00, 0xf5, 0x91, 0xf5, 0x91, 0xf5, + 0x2c, 0xf6, 0x2b, 0xf6, 0xd3, 0xf6, 0xd5, 0xf6, 0x84, 0xf7, 0x83, 0xf7, + 0x41, 0xf8, 0x42, 0xf8, 0x05, 0xf9, 0x04, 0xf9, 0xce, 0xf9, 0xcf, 0xf9, + 0xa0, 0xfa, 0xa1, 0xfa, 0x74, 0xfb, 0x73, 0xfb, 0x4f, 0xfc, 0x4f, 0xfc, + 0x2c, 0xfd, 0x2a, 0xfd, 0x09, 0xfe, 0x0a, 0xfe, 0xe9, 0xfe, 0xea, 0xfe, + 0xc9, 0xff, 0xc5, 0xff, 0xa4, 0x00, 0xa6, 0x00, 0x80, 0x01, 0x7e, 0x01, + 0x5b, 0x02, 0x5a, 0x02, 0x2e, 0x03, 0x2f, 0x03, 0x01, 0x04, 0xff, 0x03, + 0xcd, 0x04, 0xcc, 0x04, 0x93, 0x05, 0x93, 0x05, 0x53, 0x06, 0x52, 0x06, + 0x0c, 0x07, 0x0c, 0x07, 0xbe, 0x07, 0xbc, 0x07, 0x63, 0x08, 0x65, 0x08, + 0x04, 0x09, 0x03, 0x09, 0x97, 0x09, 0x97, 0x09, 0x22, 0x0a, 0x20, 0x0a, + 0x9e, 0x0a, 0x9e, 0x0a, 0x12, 0x0b, 0x12, 0x0b, 0x75, 0x0b, 0x76, 0x0b, + 0xce, 0x0b, 0xce, 0x0b, 0x17, 0x0c, 0x18, 0x0c, 0x52, 0x0c, 0x53, 0x0c, + 0x7f, 0x0c, 0x7f, 0x0c, 0x9c, 0x0c, 0x9c, 0x0c, 0xa8, 0x0c, 0xa9, 0x0c, + 0xa6, 0x0c, 0xa7, 0x0c, 0x94, 0x0c, 0x94, 0x0c, 0x71, 0x0c, 0x72, 0x0c, + 0x3d, 0x0c, 0x3d, 0x0c, 0xf9, 0x0b, 0xfa, 0x0b, 0xa4, 0x0b, 0xa6, 0x0b, + 0x40, 0x0b, 0x3f, 0x0b, 0xc9, 0x0a, 0xca, 0x0a, 0x49, 0x0a, 0x49, 0x0a, + 0xb9, 0x09, 0xb8, 0x09, 0x1d, 0x09, 0x1e, 0x09, 0x76, 0x08, 0x76, 0x08, + 0xc4, 0x07, 0xc4, 0x07, 0x08, 0x07, 0x0a, 0x07, 0x45, 0x06, 0x44, 0x06, + 0x77, 0x05, 0x79, 0x05, 0xa9, 0x04, 0xa7, 0x04, 0xd0, 0x03, 0xd1, 0x03, + 0xf8, 0x02, 0xf8, 0x02, 0x17, 0x02, 0x17, 0x02, 0x39, 0x01, 0x39, 0x01, + 0x56, 0x00, 0x59, 0x00, 0x78, 0xff, 0x76, 0xff, 0x98, 0xfe, 0x99, 0xfe, + 0xb9, 0xfd, 0xb9, 0xfd, 0xdf, 0xfc, 0xde, 0xfc, 0x06, 0xfc, 0x07, 0xfc, + 0x33, 0xfb, 0x33, 0xfb, 0x67, 0xfa, 0x67, 0xfa, 0x9f, 0xf9, 0x9f, 0xf9, + 0xdd, 0xf8, 0xdc, 0xf8, 0x25, 0xf8, 0x25, 0xf8, 0x74, 0xf7, 0x73, 0xf7, + 0xcd, 0xf6, 0xce, 0xf6, 0x2e, 0xf6, 0x2d, 0xf6, 0x9d, 0xf5, 0x9d, 0xf5, + 0x15, 0xf5, 0x14, 0xf5, 0x98, 0xf4, 0x97, 0xf4, 0x2a, 0xf4, 0x2c, 0xf4, + 0xc8, 0xf3, 0xc7, 0xf3, 0x73, 0xf3, 0x75, 0xf3, 0x2e, 0xf3, 0x2e, 0xf3, + 0xf8, 0xf2, 0xf9, 0xf2, 0xd0, 0xf2, 0xd1, 0xf2, 0xb9, 0xf2, 0xba, 0xf2, + 0xb1, 0xf2, 0xb0, 0xf2, 0xbb, 0xf2, 0xbc, 0xf2, 0xd4, 0xf2, 0xd5, 0xf2, + 0x01, 0xf3, 0x00, 0xf3, 0x3f, 0xf3, 0x42, 0xf3, 0x89, 0xf3, 0x89, 0xf3, + 0xe8, 0xf3, 0xe8, 0xf3, 0x52, 0xf4, 0x55, 0xf4, 0xca, 0xf4, 0xcb, 0xf4, + 0x54, 0xf5, 0x56, 0xf5, 0xe8, 0xf5, 0xea, 0xf5, 0x8a, 0xf6, 0x8b, 0xf6, + 0x34, 0xf7, 0x34, 0xf7, 0xeb, 0xf7, 0xed, 0xf7, 0xaa, 0xf8, 0xa9, 0xf8, + 0x6f, 0xf9, 0x73, 0xf9, 0x40, 0xfa, 0x3f, 0xfa, 0x0f, 0xfb, 0x11, 0xfb, + 0xe8, 0xfb, 0xe9, 0xfb, 0xc3, 0xfc, 0xc6, 0xfc, 0xa3, 0xfd, 0xa2, 0xfd, + 0x82, 0xfe, 0x86, 0xfe, 0x64, 0xff, 0x63, 0xff, 0x44, 0x00, 0x45, 0x00, + 0x23, 0x01, 0x25, 0x01, 0xff, 0x01, 0x00, 0x02, 0xda, 0x02, 0xdb, 0x02, + 0xb0, 0x03, 0xb1, 0x03, 0x82, 0x04, 0x83, 0x04, 0x50, 0x05, 0x50, 0x05, + 0x15, 0x06, 0x17, 0x06, 0xd7, 0x06, 0xd6, 0x06, 0x8c, 0x07, 0x8f, 0x07, + 0x3f, 0x08, 0x3e, 0x08, 0xe4, 0x08, 0xe6, 0x08, 0x82, 0x09, 0x83, 0x09, + 0x15, 0x0a, 0x14, 0x0a, 0x9b, 0x0a, 0x9c, 0x0a, 0x18, 0x0b, 0x19, 0x0b, + 0x87, 0x0b, 0x88, 0x0b, 0xe8, 0x0b, 0xe9, 0x0b, 0x3e, 0x0c, 0x3e, 0x0c, + 0x82, 0x0c, 0x83, 0x0c, 0xba, 0x0c, 0xbb, 0x0c, 0xe1, 0x0c, 0xe1, 0x0c, + 0xf7, 0x0c, 0xf8, 0x0c, 0x01, 0x0d, 0x02, 0x0d, 0xf9, 0x0c, 0xf9, 0x0c, + 0xe0, 0x0c, 0xe1, 0x0c, 0xb5, 0x0c, 0xb5, 0x0c, 0x7a, 0x0c, 0x7b, 0x0c, + 0x2f, 0x0c, 0x2e, 0x0c, 0xd2, 0x0b, 0xd2, 0x0b, 0x68, 0x0b, 0x68, 0x0b, + 0xed, 0x0a, 0xed, 0x0a, 0x66, 0x0a, 0x68, 0x0a, 0xd2, 0x09, 0xd2, 0x09, + 0x34, 0x09, 0x34, 0x09, 0x85, 0x08, 0x87, 0x08, 0xd3, 0x07, 0xd4, 0x07, + 0x13, 0x07, 0x14, 0x07, 0x4e, 0x06, 0x51, 0x06, 0x83, 0x05, 0x82, 0x05, + 0xad, 0x04, 0xb0, 0x04, 0xd9, 0x03, 0xd9, 0x03, 0xfc, 0x02, 0xfe, 0x02, + 0x21, 0x02, 0x24, 0x02, 0x43, 0x01, 0x43, 0x01, 0x65, 0x00, 0x66, 0x00, + 0x88, 0xff, 0x89, 0xff, 0xaa, 0xfe, 0xab, 0xfe, 0xd3, 0xfd, 0xd4, 0xfd, + 0xfa, 0xfc, 0xf9, 0xfc, 0x29, 0xfc, 0x2a, 0xfc, 0x58, 0xfb, 0x5a, 0xfb, + 0x91, 0xfa, 0x91, 0xfa, 0xd0, 0xf9, 0xd0, 0xf9, 0x11, 0xf9, 0x13, 0xf9, + 0x62, 0xf8, 0x62, 0xf8, 0xb3, 0xf7, 0xb5, 0xf7, 0x14, 0xf7, 0x14, 0xf7, + 0x7b, 0xf6, 0x7c, 0xf6, 0xee, 0xf5, 0xee, 0xf5, 0x6e, 0xf5, 0x70, 0xf5, + 0xf6, 0xf4, 0xf5, 0xf4, 0x8e, 0xf4, 0x8e, 0xf4, 0x32, 0xf4, 0x33, 0xf4, + 0xe2, 0xf3, 0xe2, 0xf3, 0xa6, 0xf3, 0xa6, 0xf3, 0x6f, 0xf3, 0x70, 0xf3, + 0x50, 0xf3, 0x50, 0xf3, 0x3a, 0xf3, 0x3b, 0xf3, 0x39, 0xf3, 0x39, 0xf3, + 0x45, 0xf3, 0x48, 0xf3, 0x63, 0xf3, 0x63, 0xf3, 0x91, 0xf3, 0x93, 0xf3, + 0xd1, 0xf3, 0xd0, 0xf3, 0x21, 0xf4, 0x20, 0xf4, 0x7e, 0xf4, 0x80, 0xf4, + 0xec, 0xf4, 0xed, 0xf4, 0x6b, 0xf5, 0x6c, 0xf5, 0xf4, 0xf5, 0xf4, 0xf5, + 0x8b, 0xf6, 0x8c, 0xf6, 0x2e, 0xf7, 0x2f, 0xf7, 0xde, 0xf7, 0xdf, 0xf7, + 0x96, 0xf8, 0x97, 0xf8, 0x56, 0xf9, 0x57, 0xf9, 0x20, 0xfa, 0x21, 0xfa, + 0xed, 0xfa, 0xef, 0xfa, 0xc4, 0xfb, 0xc5, 0xfb, 0x9d, 0xfc, 0x9e, 0xfc, + 0x7c, 0xfd, 0x7c, 0xfd, 0x5b, 0xfe, 0x5f, 0xfe, 0x3c, 0xff, 0x3c, 0xff, + 0x1e, 0x00, 0x21, 0x00, 0x00, 0x01, 0x00, 0x01, 0xdf, 0x01, 0xe1, 0x01, + 0xbd, 0x02, 0xc0, 0x02, 0x97, 0x03, 0x97, 0x03, 0x6e, 0x04, 0x71, 0x04, + 0x40, 0x05, 0x41, 0x05, 0x0d, 0x06, 0x0d, 0x06, 0xd1, 0x06, 0xd4, 0x06, + 0x91, 0x07, 0x91, 0x07, 0x46, 0x08, 0x48, 0x08, 0xf3, 0x08, 0xf5, 0x08, + 0x97, 0x09, 0x97, 0x09, 0x30, 0x0a, 0x34, 0x0a, 0xc1, 0x0a, 0xc0, 0x0a, + 0x43, 0x0b, 0x46, 0x0b, 0xba, 0x0b, 0xbb, 0x0b, 0x23, 0x0c, 0x24, 0x0c, + 0x7f, 0x0c, 0x80, 0x0c, 0xce, 0x0c, 0xce, 0x0c, 0x0b, 0x0d, 0x0d, 0x0d, + 0x3d, 0x0d, 0x3d, 0x0d, 0x5b, 0x0d, 0x5c, 0x0d, 0x6c, 0x0d, 0x6e, 0x0d, + 0x6e, 0x0d, 0x6c, 0x0d, 0x59, 0x0d, 0x5d, 0x0d, 0x3b, 0x0d, 0x39, 0x0d, + 0x04, 0x0d, 0x07, 0x0d, 0xc0, 0x0c, 0xc1, 0x0c, 0x6e, 0x0c, 0x6d, 0x0c, + 0x07, 0x0c, 0x07, 0x0c, 0x96, 0x0b, 0x97, 0x0b, 0x10, 0x0b, 0x12, 0x0b, + 0x86, 0x0a, 0x88, 0x0a, 0xe8, 0x09, 0xe9, 0x09, 0x44, 0x09, 0x45, 0x09, + 0x94, 0x08, 0x96, 0x08, 0xd7, 0x07, 0xd9, 0x07, 0x19, 0x07, 0x18, 0x07, + 0x4c, 0x06, 0x4e, 0x06, 0x7d, 0x05, 0x7d, 0x05, 0xa8, 0x04, 0xaa, 0x04, + 0xcd, 0x03, 0xcd, 0x03, 0xf2, 0x02, 0xf3, 0x02, 0x12, 0x02, 0x14, 0x02, + 0x34, 0x01, 0x34, 0x01, 0x54, 0x00, 0x56, 0x00, 0x76, 0xff, 0x75, 0xff, + 0x99, 0xfe, 0x9a, 0xfe, 0xbf, 0xfd, 0xbf, 0xfd, 0xe8, 0xfc, 0xe9, 0xfc, + 0x15, 0xfc, 0x16, 0xfc, 0x46, 0xfb, 0x47, 0xfb, 0x7f, 0xfa, 0x7f, 0xfa, + 0xbd, 0xf9, 0xbe, 0xf9, 0x01, 0xf9, 0x02, 0xf9, 0x4f, 0xf8, 0x4f, 0xf8, + 0xa0, 0xf7, 0xa4, 0xf7, 0x03, 0xf7, 0x03, 0xf7, 0x6b, 0xf6, 0x6d, 0xf6, + 0xe1, 0xf5, 0xdf, 0xf5, 0x5e, 0xf5, 0x60, 0xf5, 0xe9, 0xf4, 0xeb, 0xf4, + 0x81, 0xf4, 0x82, 0xf4, 0x27, 0xf4, 0x2a, 0xf4, 0xd8, 0xf3, 0xd9, 0xf3, + 0x98, 0xf3, 0x9b, 0xf3, 0x6a, 0xf3, 0x6c, 0xf3, 0x49, 0xf3, 0x4a, 0xf3, + 0x3b, 0xf3, 0x3d, 0xf3, 0x35, 0xf3, 0x38, 0xf3, 0x4b, 0xf3, 0x4b, 0xf3, + 0x68, 0xf3, 0x6a, 0xf3, 0x9a, 0xf3, 0x9b, 0xf3, 0xdc, 0xf3, 0xde, 0xf3, + 0x2b, 0xf4, 0x2c, 0xf4, 0x8f, 0xf4, 0x91, 0xf4, 0xfb, 0xf4, 0xff, 0xf4, + 0x7e, 0xf5, 0x7f, 0xf5, 0x0d, 0xf6, 0x0e, 0xf6, 0xa3, 0xf6, 0xa5, 0xf6, + 0x4c, 0xf7, 0x4d, 0xf7, 0xf9, 0xf7, 0xfb, 0xf7, 0xb4, 0xf8, 0xb6, 0xf8, + 0x77, 0xf9, 0x79, 0xf9, 0x40, 0xfa, 0x41, 0xfa, 0x10, 0xfb, 0x14, 0xfb, + 0xe5, 0xfb, 0xe4, 0xfb, 0xbf, 0xfc, 0xc3, 0xfc, 0x9e, 0xfd, 0x9f, 0xfd, + 0x7b, 0xfe, 0x7c, 0xfe, 0x5d, 0xff, 0x5f, 0xff, 0x3d, 0x00, 0x3d, 0x00, + 0x1c, 0x01, 0x1e, 0x01, 0xfa, 0x01, 0xfc, 0x01, 0xd3, 0x02, 0xd5, 0x02, + 0xab, 0x03, 0xae, 0x03, 0x7e, 0x04, 0x7e, 0x04, 0x4c, 0x05, 0x50, 0x05, + 0x16, 0x06, 0x18, 0x06, 0xd5, 0x06, 0xd7, 0x06, 0x90, 0x07, 0x91, 0x07, + 0x41, 0x08, 0x44, 0x08, 0xea, 0x08, 0xec, 0x08, 0x88, 0x09, 0x8c, 0x09, + 0x1d, 0x0a, 0x1f, 0x0a, 0xa8, 0x0a, 0xab, 0x0a, 0x25, 0x0b, 0x27, 0x0b, + 0x97, 0x0b, 0x9a, 0x0b, 0xfc, 0x0b, 0xfd, 0x0b, 0x51, 0x0c, 0x54, 0x0c, + 0x9d, 0x0c, 0x9f, 0x0c, 0xd3, 0x0c, 0xd5, 0x0c, 0x02, 0x0d, 0x03, 0x0d, + 0x18, 0x0d, 0x1b, 0x0d, 0x26, 0x0d, 0x28, 0x0d, 0x23, 0x0d, 0x25, 0x0d, + 0x0a, 0x0d, 0x0c, 0x0d, 0xe8, 0x0c, 0xeb, 0x0c, 0xaf, 0x0c, 0xb0, 0x0c, + 0x67, 0x0c, 0x6a, 0x0c, 0x11, 0x0c, 0x12, 0x0c, 0xa7, 0x0b, 0xaa, 0x0b, + 0x33, 0x0b, 0x35, 0x0b, 0xaa, 0x0a, 0xae, 0x0a, 0x1d, 0x0a, 0x1e, 0x0a, + 0x7e, 0x09, 0x82, 0x09, 0xd4, 0x08, 0xd6, 0x08, 0x22, 0x08, 0x24, 0x08, + 0x62, 0x07, 0x65, 0x07, 0xa0, 0x06, 0xa2, 0x06, 0xd0, 0x05, 0xd3, 0x05, + 0xfd, 0x04, 0xff, 0x04, 0x24, 0x04, 0x28, 0x04, 0x45, 0x03, 0x49, 0x03, + 0x68, 0x02, 0x6a, 0x02, 0x84, 0x01, 0x86, 0x01, 0xa4, 0x00, 0xa6, 0x00, + 0xbf, 0xff, 0xc0, 0xff, 0xdd, 0xfe, 0xe0, 0xfe, 0xfd, 0xfd, 0xff, 0xfd, + 0x1f, 0xfd, 0x21, 0xfd, 0x47, 0xfc, 0x48, 0xfc, 0x70, 0xfb, 0x73, 0xfb, + 0xa1, 0xfa, 0xa0, 0xfa, 0xd4, 0xf9, 0xd8, 0xf9, 0x11, 0xf9, 0x12, 0xf9, + 0x54, 0xf8, 0x57, 0xf8, 0x9d, 0xf7, 0x9f, 0xf7, 0xf3, 0xf6, 0xf5, 0xf6, + 0x51, 0xf6, 0x54, 0xf6, 0xb9, 0xf5, 0xbb, 0xf5, 0x30, 0xf5, 0x31, 0xf5, + 0xab, 0xf4, 0xae, 0xf4, 0x3b, 0xf4, 0x3e, 0xf4, 0xd3, 0xf3, 0xd5, 0xf3, + 0x7a, 0xf3, 0x7c, 0xf3, 0x2f, 0xf3, 0x32, 0xf3, 0xf3, 0xf2, 0xf6, 0xf2, + 0xc7, 0xf2, 0xca, 0xf2, 0xaa, 0xf2, 0xad, 0xf2, 0x9f, 0xf2, 0xa0, 0xf2, + 0xa2, 0xf2, 0xa7, 0xf2, 0xb8, 0xf2, 0xb9, 0xf2, 0xdf, 0xf2, 0xe3, 0xf2, + 0x16, 0xf3, 0x18, 0xf3, 0x5f, 0xf3, 0x61, 0xf3, 0xb6, 0xf3, 0xba, 0xf3, + 0x1e, 0xf4, 0x1f, 0xf4, 0x97, 0xf4, 0x9b, 0xf4, 0x19, 0xf5, 0x1c, 0xf5, + 0xae, 0xf5, 0xb1, 0xf5, 0x4b, 0xf6, 0x4d, 0xf6, 0xf6, 0xf6, 0xf9, 0xf6, + 0xaa, 0xf7, 0xac, 0xf7, 0x63, 0xf8, 0x68, 0xf8, 0x2e, 0xf9, 0x30, 0xf9, + 0xf5, 0xf9, 0xf9, 0xf9, 0xcb, 0xfa, 0xcf, 0xfa, 0xa1, 0xfb, 0xa4, 0xfb, + 0x7b, 0xfc, 0x7e, 0xfc, 0x5a, 0xfd, 0x5d, 0xfd, 0x38, 0xfe, 0x3b, 0xfe, + 0x18, 0xff, 0x1d, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xd8, 0x00, 0xdb, 0x00, + 0xb4, 0x01, 0xb8, 0x01, 0x8c, 0x02, 0x90, 0x02, 0x63, 0x03, 0x66, 0x03, + 0x34, 0x04, 0x38, 0x04, 0x03, 0x05, 0x06, 0x05, 0xc6, 0x05, 0xc9, 0x05, + 0x87, 0x06, 0x89, 0x06, 0x40, 0x07, 0x41, 0x07, 0xef, 0x07, 0xf1, 0x07, + 0x96, 0x08, 0x97, 0x08, 0x34, 0x09, 0x39, 0x09, 0xc7, 0x09, 0xc7, 0x09, + 0x51, 0x0a, 0x55, 0x0a, 0xce, 0x0a, 0xcf, 0x0a, 0x3e, 0x0b, 0x41, 0x0b, + 0xa1, 0x0b, 0xa4, 0x0b, 0xf8, 0x0b, 0xf9, 0x0b, 0x3f, 0x0c, 0x43, 0x0c, + 0x78, 0x0c, 0x7a, 0x0c, 0xa5, 0x0c, 0xa6, 0x0c, 0xbe, 0x0c, 0xc2, 0x0c, + 0xca, 0x0c, 0xcb, 0x0c, 0xc4, 0x0c, 0xc9, 0x0c, 0xb0, 0x0c, 0xb1, 0x0c, + 0x8c, 0x0c, 0x90, 0x0c, 0x55, 0x0c, 0x56, 0x0c, 0x0e, 0x0c, 0x11, 0x0c, + 0xb6, 0x0b, 0xb9, 0x0b, 0x4f, 0x0b, 0x52, 0x0b, 0xdc, 0x0a, 0xdf, 0x0a, + 0x55, 0x0a, 0x58, 0x0a, 0xc7, 0x09, 0xca, 0x09, 0x27, 0x09, 0x2b, 0x09, + 0x7e, 0x08, 0x81, 0x08, 0xca, 0x07, 0xcc, 0x07, 0x0a, 0x07, 0x0f, 0x07, + 0x48, 0x06, 0x4a, 0x06, 0x7a, 0x05, 0x7d, 0x05, 0xa6, 0x04, 0xa7, 0x04, + 0xcc, 0x03, 0xd1, 0x03, 0xf1, 0x02, 0xf1, 0x02, 0x10, 0x02, 0x14, 0x02, + 0x2f, 0x01, 0x30, 0x01, 0x4b, 0x00, 0x50, 0x00, 0x6a, 0xff, 0x6c, 0xff, + 0x88, 0xfe, 0x8b, 0xfe, 0xa8, 0xfd, 0xab, 0xfd, 0xcc, 0xfc, 0xce, 0xfc, + 0xf2, 0xfb, 0xf5, 0xfb, 0x1f, 0xfb, 0x20, 0xfb, 0x4d, 0xfa, 0x51, 0xfa, + 0x86, 0xf9, 0x88, 0xf9, 0xc3, 0xf8, 0xc5, 0xf8, 0x09, 0xf8, 0x0b, 0xf8, + 0x56, 0xf7, 0x59, 0xf7, 0xad, 0xf6, 0xaf, 0xf6, 0x0e, 0xf6, 0x0f, 0xf6, + 0x7c, 0xf5, 0x7f, 0xf5, 0xf1, 0xf4, 0xf4, 0xf4, 0x77, 0xf4, 0x7a, 0xf4, + 0x05, 0xf4, 0x06, 0xf4, 0xa2, 0xf3, 0xa5, 0xf3, 0x4d, 0xf3, 0x50, 0xf3, + 0x07, 0xf3, 0x08, 0xf3, 0xce, 0xf2, 0xd4, 0xf2, 0xa7, 0xf2, 0xa8, 0xf2, + 0x8d, 0xf2, 0x94, 0xf2, 0x88, 0xf2, 0x8a, 0xf2, 0x91, 0xf2, 0x92, 0xf2, + 0xab, 0xf2, 0xae, 0xf2, 0xd6, 0xf2, 0xd8, 0xf2, 0x12, 0xf3, 0x14, 0xf3, + 0x60, 0xf3, 0x62, 0xf3, 0xb9, 0xf3, 0xbc, 0xf3, 0x27, 0xf4, 0x29, 0xf4, + 0x9d, 0xf4, 0xa1, 0xf4, 0x28, 0xf5, 0x2b, 0xf5, 0xbd, 0xf5, 0xc1, 0xf5, + 0x5e, 0xf6, 0x5f, 0xf6, 0x0b, 0xf7, 0x0e, 0xf7, 0xc3, 0xf7, 0xc6, 0xf7, + 0x82, 0xf8, 0x84, 0xf8, 0x49, 0xf9, 0x4e, 0xf9, 0x18, 0xfa, 0x19, 0xfa, + 0xeb, 0xfa, 0xf0, 0xfa, 0xc7, 0xfb, 0xc9, 0xfb, 0xa3, 0xfc, 0xa6, 0xfc, + 0x84, 0xfd, 0x87, 0xfd, 0x63, 0xfe, 0x66, 0xfe, 0x48, 0xff, 0x4d, 0xff, + 0x2a, 0x00, 0x2c, 0x00, 0x0b, 0x01, 0x0f, 0x01, 0xea, 0x01, 0xed, 0x01, + 0xc5, 0x02, 0xc7, 0x02, 0x9f, 0x03, 0xa4, 0x03, 0x73, 0x04, 0x76, 0x04, + 0x42, 0x05, 0x44, 0x05, 0x0c, 0x06, 0x0e, 0x06, 0xcc, 0x06, 0xcd, 0x06, + 0x86, 0x07, 0x8a, 0x07, 0x38, 0x08, 0x3b, 0x08, 0xe1, 0x08, 0xe4, 0x08, + 0x80, 0x09, 0x83, 0x09, 0x16, 0x0a, 0x18, 0x0a, 0x9f, 0x0a, 0xa2, 0x0a, + 0x1d, 0x0b, 0x20, 0x0b, 0x90, 0x0b, 0x92, 0x0b, 0xf2, 0x0b, 0xf5, 0x0b, + 0x4b, 0x0c, 0x4d, 0x0c, 0x91, 0x0c, 0x93, 0x0c, 0xcb, 0x0c, 0xd0, 0x0c, + 0xf7, 0x0c, 0xf7, 0x0c, 0x0f, 0x0d, 0x13, 0x0d, 0x1c, 0x0d, 0x1e, 0x0d, + 0x15, 0x0d, 0x18, 0x0d, 0x01, 0x0d, 0x02, 0x0d, 0xd7, 0x0c, 0xdb, 0x0c, + 0xa1, 0x0c, 0xa2, 0x0c, 0x53, 0x0c, 0x59, 0x0c, 0xfc, 0x0b, 0xfe, 0x0b, + 0x92, 0x0b, 0x96, 0x0b, 0x1b, 0x0b, 0x1d, 0x0b, 0x95, 0x0a, 0x97, 0x0a, + 0x02, 0x0a, 0x06, 0x0a, 0x63, 0x09, 0x65, 0x09, 0xb9, 0x08, 0xbb, 0x08, + 0x06, 0x08, 0x07, 0x08, 0x43, 0x07, 0x48, 0x07, 0x82, 0x06, 0x81, 0x06, + 0xb3, 0x05, 0xb8, 0x05, 0xe1, 0x04, 0xe3, 0x04, 0x08, 0x04, 0x0b, 0x04, + 0x2b, 0x03, 0x31, 0x03, 0x50, 0x02, 0x52, 0x02, 0x6f, 0x01, 0x72, 0x01, + 0x8e, 0x00, 0x91, 0x00, 0xaf, 0xff, 0xb1, 0xff, 0xd0, 0xfe, 0xd5, 0xfe, + 0xf3, 0xfd, 0xf6, 0xfd, 0x1b, 0xfd, 0x1d, 0xfd, 0x44, 0xfc, 0x47, 0xfc, + 0x74, 0xfb, 0x77, 0xfb, 0xa5, 0xfa, 0xa9, 0xfa, 0xe1, 0xf9, 0xe6, 0xf9, + 0x23, 0xf9, 0x25, 0xf9, 0x6b, 0xf8, 0x6f, 0xf8, 0xbf, 0xf7, 0xc1, 0xf7, + 0x16, 0xf7, 0x1b, 0xf7, 0x7e, 0xf6, 0x80, 0xf6, 0xeb, 0xf5, 0xf1, 0xf5, + 0x68, 0xf5, 0x69, 0xf5, 0xeb, 0xf4, 0xf0, 0xf4, 0x7f, 0xf4, 0x82, 0xf4, + 0x1f, 0xf4, 0x23, 0xf4, 0xcc, 0xf3, 0xce, 0xf3, 0x87, 0xf3, 0x8a, 0xf3, + 0x51, 0xf3, 0x55, 0xf3, 0x2b, 0xf3, 0x2e, 0xf3, 0x13, 0xf3, 0x16, 0xf3, + 0x0e, 0xf3, 0x11, 0xf3, 0x16, 0xf3, 0x19, 0xf3, 0x2f, 0xf3, 0x32, 0xf3, + 0x59, 0xf3, 0x5c, 0xf3, 0x94, 0xf3, 0x97, 0xf3, 0xdf, 0xf3, 0xe2, 0xf3, + 0x3a, 0xf4, 0x3c, 0xf4, 0xa3, 0xf4, 0xa8, 0xf4, 0x1f, 0xf5, 0x22, 0xf5, + 0xa4, 0xf5, 0xa7, 0xf5, 0x3c, 0xf6, 0x3f, 0xf6, 0xd9, 0xf6, 0xdc, 0xf6, + 0x89, 0xf7, 0x8b, 0xf7, 0x3c, 0xf8, 0x43, 0xf8, 0x01, 0xf9, 0x02, 0xf9, + 0xc6, 0xf9, 0xcb, 0xf9, 0x95, 0xfa, 0x98, 0xfa, 0x6b, 0xfb, 0x6d, 0xfb, + 0x44, 0xfc, 0x48, 0xfc, 0x22, 0xfd, 0x27, 0xfd, 0x04, 0xfe, 0x04, 0xfe, + 0xe4, 0xfe, 0xec, 0xfe, 0xcc, 0xff, 0xcb, 0xff, 0xac, 0x00, 0xb1, 0x00, + 0x8f, 0x01, 0x92, 0x01, 0x70, 0x02, 0x71, 0x02, 0x4b, 0x03, 0x51, 0x03, + 0x28, 0x04, 0x26, 0x04, 0xfc, 0x04, 0x01, 0x05, 0xc9, 0x05, 0xca, 0x05, + 0x94, 0x06, 0x98, 0x06, 0x57, 0x07, 0x58, 0x07, 0x0f, 0x08, 0x12, 0x08, + 0xc2, 0x08, 0xc5, 0x08, 0x66, 0x09, 0x6a, 0x09, 0x0c, 0x0a, 0x0f, 0x0a, + 0x9b, 0x0a, 0x9d, 0x0a, 0x25, 0x0b, 0x29, 0x0b, 0xa1, 0x0b, 0xa4, 0x0b, + 0x0e, 0x0c, 0x12, 0x0c, 0x73, 0x0c, 0x75, 0x0c, 0xc1, 0x0c, 0xc6, 0x0c, + 0x0c, 0x0d, 0x0c, 0x0d, 0x3e, 0x0d, 0x42, 0x0d, 0x65, 0x0d, 0x68, 0x0d, + 0x7e, 0x0d, 0x81, 0x0d, 0x81, 0x0d, 0x84, 0x0d, 0x79, 0x0d, 0x7e, 0x0d, + 0x5e, 0x0d, 0x60, 0x0d, 0x2f, 0x0d, 0x34, 0x0d, 0xf3, 0x0c, 0xf4, 0x0c, + 0xa1, 0x0c, 0xa5, 0x0c, 0x45, 0x0c, 0x48, 0x0c, 0xd7, 0x0b, 0xda, 0x0b, + 0x57, 0x0b, 0x5c, 0x0b, 0xd1, 0x0a, 0xd4, 0x0a, 0x38, 0x0a, 0x3d, 0x0a, + 0x98, 0x09, 0x9a, 0x09, 0xec, 0x08, 0xee, 0x08, 0x30, 0x08, 0x35, 0x08, + 0x72, 0x07, 0x73, 0x07, 0xa5, 0x06, 0xaa, 0x06, 0xd6, 0x05, 0xda, 0x05, + 0xfe, 0x04, 0x02, 0x05, 0x24, 0x04, 0x28, 0x04, 0x43, 0x03, 0x49, 0x03, + 0x65, 0x02, 0x68, 0x02, 0x82, 0x01, 0x88, 0x01, 0xa3, 0x00, 0xa6, 0x00, + 0xc0, 0xff, 0xc4, 0xff, 0xe3, 0xfe, 0xe7, 0xfe, 0x02, 0xfe, 0x06, 0xfe, + 0x2c, 0xfd, 0x31, 0xfd, 0x57, 0xfc, 0x59, 0xfc, 0x85, 0xfb, 0x8b, 0xfb, + 0xbb, 0xfa, 0xbd, 0xfa, 0xf4, 0xf9, 0xf9, 0xf9, 0x3a, 0xf9, 0x3d, 0xf9, + 0x82, 0xf8, 0x85, 0xf8, 0xd6, 0xf7, 0xda, 0xf7, 0x31, 0xf7, 0x35, 0xf7, + 0x98, 0xf6, 0x9b, 0xf6, 0x0a, 0xf6, 0x0e, 0xf6, 0x83, 0xf5, 0x88, 0xf5, + 0x0d, 0xf5, 0x12, 0xf5, 0xa0, 0xf4, 0xa4, 0xf4, 0x41, 0xf4, 0x45, 0xf4, + 0xf1, 0xf3, 0xf6, 0xf3, 0xac, 0xf3, 0xb0, 0xf3, 0x7b, 0xf3, 0x80, 0xf3, + 0x52, 0xf3, 0x58, 0xf3, 0x41, 0xf3, 0x45, 0xf3, 0x3d, 0xf3, 0x40, 0xf3, + 0x43, 0xf3, 0x48, 0xf3, 0x63, 0xf3, 0x66, 0xf3, 0x89, 0xf3, 0x8d, 0xf3, + 0xc8, 0xf3, 0xcd, 0xf3, 0x11, 0xf4, 0x16, 0xf4, 0x6e, 0xf4, 0x72, 0xf4, + 0xd8, 0xf4, 0xdd, 0xf4, 0x53, 0xf5, 0x57, 0xf5, 0xda, 0xf5, 0xde, 0xf5, + 0x6f, 0xf6, 0x73, 0xf6, 0x0f, 0xf7, 0x14, 0xf7, 0xba, 0xf7, 0xbe, 0xf7, + 0x6f, 0xf8, 0x74, 0xf8, 0x2d, 0xf9, 0x32, 0xf9, 0xf6, 0xf9, 0xf7, 0xf9, + 0xbd, 0xfa, 0xc5, 0xfa, 0x93, 0xfb, 0x95, 0xfb, 0x65, 0xfc, 0x6b, 0xfc, + 0x44, 0xfd, 0x47, 0xfd, 0x1e, 0xfe, 0x23, 0xfe, 0xff, 0xfe, 0x01, 0xff, + 0xdb, 0xff, 0xe1, 0xff, 0xb8, 0x00, 0xbe, 0x00, 0x98, 0x01, 0x9b, 0x01, + 0x70, 0x02, 0x76, 0x02, 0x4b, 0x03, 0x4c, 0x03, 0x1a, 0x04, 0x20, 0x04, + 0xec, 0x04, 0xf0, 0x04, 0xb4, 0x05, 0xb7, 0x05, 0x76, 0x06, 0x7b, 0x06, + 0x33, 0x07, 0x36, 0x07, 0xe4, 0x07, 0xe9, 0x07, 0x91, 0x08, 0x95, 0x08, + 0x31, 0x09, 0x35, 0x09, 0xcb, 0x09, 0xd0, 0x09, 0x55, 0x0a, 0x5b, 0x0a, + 0xd9, 0x0a, 0xdb, 0x0a, 0x4f, 0x0b, 0x52, 0x0b, 0xb5, 0x0b, 0xbc, 0x0b, + 0x14, 0x0c, 0x15, 0x0c, 0x60, 0x0c, 0x65, 0x0c, 0xa1, 0x0c, 0xa5, 0x0c, + 0xd2, 0x0c, 0xd5, 0x0c, 0xf2, 0x0c, 0xf8, 0x0c, 0x05, 0x0d, 0x09, 0x0d, + 0x08, 0x0d, 0x0d, 0x0d, 0xfa, 0x0c, 0xfe, 0x0c, 0xdf, 0x0c, 0xe1, 0x0c, + 0xb0, 0x0c, 0xb5, 0x0c, 0x71, 0x0c, 0x76, 0x0c, 0x23, 0x0c, 0x26, 0x0c, + 0xc5, 0x0b, 0xcb, 0x0b, 0x58, 0x0b, 0x5b, 0x0b, 0xdc, 0x0a, 0xe2, 0x0a, + 0x54, 0x0a, 0x59, 0x0a, 0xc1, 0x09, 0xc2, 0x09, 0x20, 0x09, 0x25, 0x09, + 0x75, 0x08, 0x78, 0x08, 0xc0, 0x07, 0xc5, 0x07, 0x03, 0x07, 0x06, 0x07, + 0x3d, 0x06, 0x41, 0x06, 0x71, 0x05, 0x74, 0x05, 0x9e, 0x04, 0xa1, 0x04, + 0xc6, 0x03, 0xca, 0x03, 0xed, 0x02, 0xf0, 0x02, 0x0f, 0x02, 0x11, 0x02, + 0x33, 0x01, 0x37, 0x01, 0x53, 0x00, 0x54, 0x00, 0x74, 0xff, 0x77, 0xff, + 0x95, 0xfe, 0x9a, 0xfe, 0xbc, 0xfd, 0xbf, 0xfd, 0xe3, 0xfc, 0xe5, 0xfc, + 0x0c, 0xfc, 0x11, 0xfc, 0x42, 0xfb, 0x43, 0xfb, 0x73, 0xfa, 0x78, 0xfa, + 0xb1, 0xf9, 0xb3, 0xf9, 0xf2, 0xf8, 0xf6, 0xf8, 0x3c, 0xf8, 0x3f, 0xf8, + 0x8f, 0xf7, 0x93, 0xf7, 0xeb, 0xf6, 0xee, 0xf6, 0x50, 0xf6, 0x55, 0xf6, + 0xc3, 0xf5, 0xc4, 0xf5, 0x3b, 0xf5, 0x3e, 0xf5, 0xc5, 0xf4, 0xc8, 0xf4, + 0x57, 0xf4, 0x5a, 0xf4, 0xf8, 0xf3, 0xfd, 0xf3, 0xa8, 0xf3, 0xac, 0xf3, + 0x64, 0xf3, 0x65, 0xf3, 0x2e, 0xf3, 0x32, 0xf3, 0x09, 0xf3, 0x0d, 0xf3, + 0xf4, 0xf2, 0xf7, 0xf2, 0xee, 0xf2, 0xf2, 0xf2, 0xf8, 0xf2, 0xfa, 0xf2, + 0x13, 0xf3, 0x17, 0xf3, 0x3f, 0xf3, 0x41, 0xf3, 0x7c, 0xf3, 0x7f, 0xf3, + 0xc5, 0xf3, 0xc8, 0xf3, 0x1f, 0xf4, 0x24, 0xf4, 0x8c, 0xf4, 0x8f, 0xf4, + 0x02, 0xf5, 0x05, 0xf5, 0x88, 0xf5, 0x8b, 0xf5, 0x19, 0xf6, 0x1d, 0xf6, + 0xb7, 0xf6, 0xb9, 0xf6, 0x5f, 0xf7, 0x64, 0xf7, 0x11, 0xf8, 0x13, 0xf8, + 0xcc, 0xf8, 0xd0, 0xf8, 0x8e, 0xf9, 0x92, 0xf9, 0x56, 0xfa, 0x5a, 0xfa, + 0x25, 0xfb, 0x29, 0xfb, 0xf6, 0xfb, 0xfb, 0xfb, 0xce, 0xfc, 0xd4, 0xfc, + 0xa7, 0xfd, 0xab, 0xfd, 0x80, 0xfe, 0x86, 0xfe, 0x5c, 0xff, 0x60, 0xff, + 0x36, 0x00, 0x39, 0x00, 0x0d, 0x01, 0x13, 0x01, 0xe4, 0x01, 0xe8, 0x01, + 0xb8, 0x02, 0xbc, 0x02, 0x88, 0x03, 0x8d, 0x03, 0x52, 0x04, 0x56, 0x04, + 0x18, 0x05, 0x1d, 0x05, 0xd7, 0x05, 0xdb, 0x05, 0x90, 0x06, 0x95, 0x06, + 0x41, 0x07, 0x45, 0x07, 0xea, 0x07, 0xed, 0x07, 0x89, 0x08, 0x8d, 0x08, + 0x21, 0x09, 0x24, 0x09, 0xa9, 0x09, 0xae, 0x09, 0x2e, 0x0a, 0x32, 0x0a, + 0xa1, 0x0a, 0xa5, 0x0a, 0x0c, 0x0b, 0x10, 0x0b, 0x67, 0x0b, 0x6d, 0x0b, + 0xb6, 0x0b, 0xb9, 0x0b, 0xf9, 0x0b, 0xfe, 0x0b, 0x2a, 0x0c, 0x2e, 0x0c, + 0x50, 0x0c, 0x55, 0x0c, 0x65, 0x0c, 0x69, 0x0c, 0x6a, 0x0c, 0x6f, 0x0c, + 0x63, 0x0c, 0x67, 0x0c, 0x47, 0x0c, 0x4c, 0x0c, 0x21, 0x0c, 0x25, 0x0c, + 0xe4, 0x0b, 0xe8, 0x0b, 0x9d, 0x0b, 0xa1, 0x0b, 0x42, 0x0b, 0x45, 0x0b, + 0xda, 0x0a, 0xe0, 0x0a, 0x64, 0x0a, 0x68, 0x0a, 0xe0, 0x09, 0xe5, 0x09, + 0x52, 0x09, 0x56, 0x09, 0xb6, 0x08, 0xb9, 0x08, 0x0f, 0x08, 0x14, 0x08, + 0x60, 0x07, 0x65, 0x07, 0xa4, 0x06, 0xa7, 0x06, 0xe3, 0x05, 0xe9, 0x05, + 0x1a, 0x05, 0x1e, 0x05, 0x4d, 0x04, 0x53, 0x04, 0x7a, 0x03, 0x7e, 0x03, + 0xa3, 0x02, 0xa6, 0x02, 0xc8, 0x01, 0xcf, 0x01, 0xed, 0x00, 0xf0, 0x00, + 0x12, 0x00, 0x1a, 0x00, 0x37, 0xff, 0x3b, 0xff, 0x5e, 0xfe, 0x62, 0xfe, + 0x86, 0xfd, 0x8b, 0xfd, 0xb0, 0xfc, 0xb4, 0xfc, 0xe0, 0xfb, 0xe3, 0xfb, + 0x12, 0xfb, 0x16, 0xfb, 0x4b, 0xfa, 0x50, 0xfa, 0x8b, 0xf9, 0x8d, 0xf9, + 0xcf, 0xf8, 0xd7, 0xf8, 0x1e, 0xf8, 0x21, 0xf8, 0x73, 0xf7, 0x79, 0xf7, + 0xd3, 0xf6, 0xd7, 0xf6, 0x3c, 0xf6, 0x41, 0xf6, 0xaf, 0xf5, 0xb3, 0xf5, + 0x30, 0xf5, 0x35, 0xf5, 0xbb, 0xf4, 0xbc, 0xf4, 0x52, 0xf4, 0x57, 0xf4, + 0xf8, 0xf3, 0xfc, 0xf3, 0xab, 0xf3, 0xad, 0xf3, 0x67, 0xf3, 0x70, 0xf3, + 0x3a, 0xf3, 0x3a, 0xf3, 0x16, 0xf3, 0x1d, 0xf3, 0x04, 0xf3, 0x08, 0xf3, + 0x02, 0xf3, 0x06, 0xf3, 0x10, 0xf3, 0x16, 0xf3, 0x2d, 0xf3, 0x31, 0xf3, + 0x5c, 0xf3, 0x61, 0xf3, 0x99, 0xf3, 0x9d, 0xf3, 0xe7, 0xf3, 0xeb, 0xf3, + 0x46, 0xf4, 0x49, 0xf4, 0xad, 0xf4, 0xb0, 0xf4, 0x29, 0xf5, 0x2e, 0xf5, + 0xaf, 0xf5, 0xb1, 0xf5, 0x42, 0xf6, 0x49, 0xf6, 0xe0, 0xf6, 0xe3, 0xf6, + 0x89, 0xf7, 0x8e, 0xf7, 0x3a, 0xf8, 0x3f, 0xf8, 0xf5, 0xf8, 0xfa, 0xf8, + 0xb8, 0xf9, 0xbb, 0xf9, 0x80, 0xfa, 0x86, 0xfa, 0x4d, 0xfb, 0x51, 0xfb, + 0x20, 0xfc, 0x25, 0xfc, 0xf6, 0xfc, 0xfb, 0xfc, 0xcf, 0xfd, 0xd2, 0xfd, + 0xa7, 0xfe, 0xae, 0xfe, 0x83, 0xff, 0x86, 0xff, 0x5c, 0x00, 0x62, 0x00, + 0x34, 0x01, 0x39, 0x01, 0x0a, 0x02, 0x12, 0x02, 0xe0, 0x02, 0xe4, 0x02, + 0xaf, 0x03, 0xb6, 0x03, 0x79, 0x04, 0x7d, 0x04, 0x3f, 0x05, 0x45, 0x05, + 0xff, 0x05, 0x02, 0x06, 0xb7, 0x06, 0xbc, 0x06, 0x68, 0x07, 0x6e, 0x07, + 0x0f, 0x08, 0x14, 0x08, 0xb2, 0x08, 0xb7, 0x08, 0x45, 0x09, 0x4c, 0x09, + 0xd4, 0x09, 0xd7, 0x09, 0x52, 0x0a, 0x58, 0x0a, 0xcb, 0x0a, 0xcf, 0x0a, + 0x32, 0x0b, 0x37, 0x0b, 0x8e, 0x0b, 0x94, 0x0b, 0xdd, 0x0b, 0xdf, 0x0b, + 0x1e, 0x0c, 0x25, 0x0c, 0x4e, 0x0c, 0x52, 0x0c, 0x73, 0x0c, 0x77, 0x0c, + 0x86, 0x0c, 0x8d, 0x0c, 0x8c, 0x0c, 0x90, 0x0c, 0x81, 0x0c, 0x87, 0x0c, + 0x64, 0x0c, 0x6a, 0x0c, 0x3b, 0x0c, 0x3f, 0x0c, 0xfe, 0x0b, 0x03, 0x0c, + 0xb2, 0x0b, 0xb7, 0x0b, 0x59, 0x0b, 0x5d, 0x0b, 0xec, 0x0a, 0xf3, 0x0a, + 0x79, 0x0a, 0x7d, 0x0a, 0xf4, 0x09, 0xf8, 0x09, 0x62, 0x09, 0x67, 0x09, + 0xc7, 0x08, 0xcb, 0x08, 0x1e, 0x08, 0x25, 0x08, 0x6f, 0x07, 0x73, 0x07, + 0xb6, 0x06, 0xbb, 0x06, 0xf6, 0x05, 0xfa, 0x05, 0x2f, 0x05, 0x33, 0x05, + 0x61, 0x04, 0x67, 0x04, 0x91, 0x03, 0x96, 0x03, 0xbf, 0x02, 0xc2, 0x02, + 0xe6, 0x01, 0xec, 0x01, 0x0e, 0x01, 0x14, 0x01, 0x37, 0x00, 0x3b, 0x00, + 0x5f, 0xff, 0x65, 0xff, 0x8b, 0xfe, 0x8f, 0xfe, 0xb2, 0xfd, 0xb9, 0xfd, + 0xe5, 0xfc, 0xeb, 0xfc, 0x16, 0xfc, 0x1b, 0xfc, 0x4f, 0xfb, 0x55, 0xfb, + 0x8b, 0xfa, 0x93, 0xfa, 0xd1, 0xf9, 0xd5, 0xf9, 0x1c, 0xf9, 0x25, 0xf9, + 0x6c, 0xf8, 0x70, 0xf8, 0xc9, 0xf7, 0xd0, 0xf7, 0x2d, 0xf7, 0x30, 0xf7, + 0x9b, 0xf6, 0xa1, 0xf6, 0x13, 0xf6, 0x18, 0xf6, 0x98, 0xf5, 0x9d, 0xf5, + 0x28, 0xf5, 0x2c, 0xf5, 0xc4, 0xf4, 0xc8, 0xf4, 0x6c, 0xf4, 0x72, 0xf4, + 0x22, 0xf4, 0x26, 0xf4, 0xe6, 0xf3, 0xeb, 0xf3, 0xb8, 0xf3, 0xbe, 0xf3, + 0x9a, 0xf3, 0x9f, 0xf3, 0x8b, 0xf3, 0x90, 0xf3, 0x89, 0xf3, 0x8f, 0xf3, + 0x9b, 0xf3, 0x9e, 0xf3, 0xb8, 0xf3, 0xbe, 0xf3, 0xe7, 0xf3, 0xee, 0xf3, + 0x28, 0xf4, 0x2b, 0xf4, 0x75, 0xf4, 0x7c, 0xf4, 0xd5, 0xf4, 0xd9, 0xf4, + 0x3d, 0xf5, 0x45, 0xf5, 0xbc, 0xf5, 0xc0, 0xf5, 0x41, 0xf6, 0x47, 0xf6, + 0xd6, 0xf6, 0xda, 0xf6, 0x75, 0xf7, 0x79, 0xf7, 0x1c, 0xf8, 0x23, 0xf8, + 0xd3, 0xf8, 0xd7, 0xf8, 0x8d, 0xf9, 0x92, 0xf9, 0x50, 0xfa, 0x56, 0xfa, + 0x19, 0xfb, 0x1e, 0xfb, 0xe6, 0xfb, 0xec, 0xfb, 0xbd, 0xfc, 0xc0, 0xfc, + 0x92, 0xfd, 0x97, 0xfd, 0x6c, 0xfe, 0x72, 0xfe, 0x47, 0xff, 0x4a, 0xff, + 0x21, 0x00, 0x27, 0x00, 0xfe, 0x00, 0x01, 0x01, 0xd5, 0x01, 0xdb, 0x01, + 0xae, 0x02, 0xaf, 0x02, 0x7d, 0x03, 0x84, 0x03, 0x50, 0x04, 0x54, 0x04, + 0x1b, 0x05, 0x20, 0x05, 0xdf, 0x05, 0xe4, 0x05, 0xa0, 0x06, 0xa4, 0x06, + 0x55, 0x07, 0x5a, 0x07, 0x07, 0x08, 0x0e, 0x08, 0xae, 0x08, 0xb0, 0x08, + 0x49, 0x09, 0x50, 0x09, 0xe0, 0x09, 0xe3, 0x09, 0x68, 0x0a, 0x6d, 0x0a, + 0xe5, 0x0a, 0xeb, 0x0a, 0x58, 0x0b, 0x5c, 0x0b, 0xbb, 0x0b, 0xc1, 0x0b, + 0x15, 0x0c, 0x1a, 0x0c, 0x5b, 0x0c, 0x62, 0x0c, 0x9a, 0x0c, 0x9d, 0x0c, + 0xc6, 0x0c, 0xcd, 0x0c, 0xe3, 0x0c, 0xe7, 0x0c, 0xf1, 0x0c, 0xf7, 0x0c, + 0xf0, 0x0c, 0xf4, 0x0c, 0xde, 0x0c, 0xe3, 0x0c, 0xb9, 0x0c, 0xc0, 0x0c, + 0x89, 0x0c, 0x8e, 0x0c, 0x47, 0x0c, 0x4a, 0x0c, 0xf3, 0x0b, 0xf9, 0x0b, + 0x94, 0x0b, 0x96, 0x0b, 0x22, 0x0b, 0x27, 0x0b, 0xa6, 0x0a, 0xab, 0x0a, + 0x1e, 0x0a, 0x21, 0x0a, 0x87, 0x09, 0x8c, 0x09, 0xe8, 0x08, 0xec, 0x08, + 0x3c, 0x08, 0x41, 0x08, 0x88, 0x07, 0x8e, 0x07, 0xcd, 0x06, 0xd0, 0x06, + 0x0a, 0x06, 0x0f, 0x06, 0x42, 0x05, 0x47, 0x05, 0x72, 0x04, 0x77, 0x04, + 0xa1, 0x03, 0xa5, 0x03, 0xc9, 0x02, 0xce, 0x02, 0xf5, 0x01, 0xf9, 0x01, + 0x1d, 0x01, 0x22, 0x01, 0x42, 0x00, 0x46, 0x00, 0x6f, 0xff, 0x73, 0xff, + 0x95, 0xfe, 0x99, 0xfe, 0xc3, 0xfd, 0xc9, 0xfd, 0xf4, 0xfc, 0xf8, 0xfc, + 0x25, 0xfc, 0x2c, 0xfc, 0x62, 0xfb, 0x67, 0xfb, 0x9f, 0xfa, 0xa3, 0xfa, + 0xe4, 0xf9, 0xea, 0xf9, 0x32, 0xf9, 0x37, 0xf9, 0x81, 0xf8, 0x88, 0xf8, + 0xe4, 0xf7, 0xe7, 0xf7, 0x46, 0xf7, 0x4c, 0xf7, 0xb7, 0xf6, 0xbb, 0xf6, + 0x31, 0xf6, 0x36, 0xf6, 0xb6, 0xf5, 0xb9, 0xf5, 0x48, 0xf5, 0x4d, 0xf5, + 0xe4, 0xf4, 0xea, 0xf4, 0x8f, 0xf4, 0x92, 0xf4, 0x47, 0xf4, 0x4c, 0xf4, + 0x0a, 0xf4, 0x0f, 0xf4, 0xe1, 0xf3, 0xe6, 0xf3, 0xc4, 0xf3, 0xc9, 0xf3, + 0xb7, 0xf3, 0xbb, 0xf3, 0xb7, 0xf3, 0xbe, 0xf3, 0xcc, 0xf3, 0xce, 0xf3, + 0xea, 0xf3, 0xf0, 0xf3, 0x1e, 0xf4, 0x22, 0xf4, 0x5d, 0xf4, 0x61, 0xf4, + 0xad, 0xf4, 0xb4, 0xf4, 0x0e, 0xf5, 0x12, 0xf5, 0x7a, 0xf5, 0x80, 0xf5, + 0xf7, 0xf5, 0xfd, 0xf5, 0x7f, 0xf6, 0x84, 0xf6, 0x15, 0xf7, 0x1a, 0xf7, + 0xb5, 0xf7, 0xbb, 0xf7, 0x60, 0xf8, 0x65, 0xf8, 0x16, 0xf9, 0x1a, 0xf9, + 0xd0, 0xf9, 0xd6, 0xf9, 0x93, 0xfa, 0x98, 0xfa, 0x5c, 0xfb, 0x60, 0xfb, + 0x2a, 0xfc, 0x30, 0xfc, 0xfd, 0xfc, 0xff, 0xfc, 0xd1, 0xfd, 0xda, 0xfd, + 0xaa, 0xfe, 0xae, 0xfe, 0x81, 0xff, 0x88, 0xff, 0x5c, 0x00, 0x61, 0x00, + 0x33, 0x01, 0x37, 0x01, 0x09, 0x02, 0x0f, 0x02, 0xdc, 0x02, 0xdf, 0x02, + 0xad, 0x03, 0xb3, 0x03, 0x77, 0x04, 0x7e, 0x04, 0x41, 0x05, 0x44, 0x05, + 0xff, 0x05, 0x07, 0x06, 0xbb, 0x06, 0xc0, 0x06, 0x6c, 0x07, 0x73, 0x07, + 0x17, 0x08, 0x1e, 0x08, 0xbb, 0x08, 0xbf, 0x08, 0x50, 0x09, 0x56, 0x09, + 0xe0, 0x09, 0xe6, 0x09, 0x63, 0x0a, 0x69, 0x0a, 0xdb, 0x0a, 0xdf, 0x0a, + 0x46, 0x0b, 0x4d, 0x0b, 0xa5, 0x0b, 0xa9, 0x0b, 0xf6, 0x0b, 0xfc, 0x0b, + 0x39, 0x0c, 0x3e, 0x0c, 0x6e, 0x0c, 0x74, 0x0c, 0x92, 0x0c, 0x98, 0x0c, + 0xac, 0x0c, 0xb1, 0x0c, 0xb3, 0x0c, 0xb8, 0x0c, 0xac, 0x0c, 0xb2, 0x0c, + 0x94, 0x0c, 0x99, 0x0c, 0x6a, 0x0c, 0x71, 0x0c, 0x34, 0x0c, 0x38, 0x0c, + 0xea, 0x0b, 0xf1, 0x0b, 0x94, 0x0b, 0x99, 0x0b, 0x2f, 0x0b, 0x34, 0x0b, + 0xbb, 0x0a, 0xc0, 0x0a, 0x39, 0x0a, 0x3f, 0x0a, 0xac, 0x09, 0xb0, 0x09, + 0x11, 0x09, 0x19, 0x09, 0x70, 0x08, 0x74, 0x08, 0xbe, 0x07, 0xc6, 0x07, + 0x07, 0x07, 0x0e, 0x07, 0x4a, 0x06, 0x4d, 0x06, 0x80, 0x05, 0x88, 0x05, + 0xb7, 0x04, 0xbb, 0x04, 0xe3, 0x03, 0xe9, 0x03, 0x10, 0x03, 0x17, 0x03, + 0x38, 0x02, 0x3e, 0x02, 0x5f, 0x01, 0x65, 0x01, 0x86, 0x00, 0x8c, 0x00, + 0xab, 0xff, 0xb0, 0xff, 0xd1, 0xfe, 0xd8, 0xfe, 0xfa, 0xfd, 0x01, 0xfe, + 0x25, 0xfd, 0x2a, 0xfd, 0x54, 0xfc, 0x5a, 0xfc, 0x87, 0xfb, 0x8e, 0xfb, + 0xbe, 0xfa, 0xc3, 0xfa, 0xfc, 0xf9, 0x04, 0xfa, 0x42, 0xf9, 0x47, 0xf9, + 0x8c, 0xf8, 0x94, 0xf8, 0xe3, 0xf7, 0xe8, 0xf7, 0x3e, 0xf7, 0x45, 0xf7, + 0xa8, 0xf6, 0xac, 0xf6, 0x18, 0xf6, 0x1e, 0xf6, 0x94, 0xf5, 0x9a, 0xf5, + 0x1d, 0xf5, 0x22, 0xf5, 0xaf, 0xf4, 0xb5, 0xf4, 0x50, 0xf4, 0x57, 0xf4, + 0xff, 0xf3, 0x04, 0xf4, 0xba, 0xf3, 0xc0, 0xf3, 0x85, 0xf3, 0x8b, 0xf3, + 0x5f, 0xf3, 0x63, 0xf3, 0x47, 0xf3, 0x4e, 0xf3, 0x40, 0xf3, 0x45, 0xf3, + 0x48, 0xf3, 0x4f, 0xf3, 0x60, 0xf3, 0x65, 0xf3, 0x8a, 0xf3, 0x90, 0xf3, + 0xc3, 0xf3, 0xc9, 0xf3, 0x0c, 0xf4, 0x14, 0xf4, 0x63, 0xf4, 0x67, 0xf4, + 0xc8, 0xf4, 0xd1, 0xf4, 0x3f, 0xf5, 0x42, 0xf5, 0xbf, 0xf5, 0xc7, 0xf5, + 0x4e, 0xf6, 0x53, 0xf6, 0xe6, 0xf6, 0xee, 0xf6, 0x8f, 0xf7, 0x93, 0xf7, + 0x3a, 0xf8, 0x41, 0xf8, 0xf3, 0xf8, 0xf8, 0xf8, 0xaf, 0xf9, 0xb6, 0xf9, + 0x76, 0xfa, 0x7b, 0xfa, 0x3f, 0xfb, 0x45, 0xfb, 0x0f, 0xfc, 0x15, 0xfc, + 0xe2, 0xfc, 0xe9, 0xfc, 0xb8, 0xfd, 0xbd, 0xfd, 0x8e, 0xfe, 0x95, 0xfe, + 0x68, 0xff, 0x6e, 0xff, 0x3d, 0x00, 0x45, 0x00, 0x14, 0x01, 0x1b, 0x01, + 0xe8, 0x01, 0xed, 0x01, 0xb7, 0x02, 0xbe, 0x02, 0x84, 0x03, 0x8c, 0x03, + 0x4e, 0x04, 0x53, 0x04, 0x10, 0x05, 0x17, 0x05, 0xcf, 0x05, 0xd3, 0x05, + 0x83, 0x06, 0x8b, 0x06, 0x33, 0x07, 0x39, 0x07, 0xd8, 0x07, 0xdf, 0x07, + 0x78, 0x08, 0x7e, 0x08, 0x0a, 0x09, 0x11, 0x09, 0x95, 0x09, 0x9b, 0x09, + 0x14, 0x0a, 0x1a, 0x0a, 0x87, 0x0a, 0x8d, 0x0a, 0xef, 0x0a, 0xf4, 0x0a, + 0x48, 0x0b, 0x4e, 0x0b, 0x96, 0x0b, 0x9b, 0x0b, 0xd5, 0x0b, 0xdc, 0x0b, + 0x06, 0x0c, 0x0b, 0x0c, 0x28, 0x0c, 0x2d, 0x0c, 0x3b, 0x0c, 0x41, 0x0c, + 0x3f, 0x0c, 0x46, 0x0c, 0x36, 0x0c, 0x3d, 0x0c, 0x1a, 0x0c, 0x1f, 0x0c, + 0xef, 0x0b, 0xf4, 0x0b, 0xb4, 0x0b, 0xb9, 0x0b, 0x69, 0x0b, 0x70, 0x0b, + 0x11, 0x0b, 0x16, 0x0b, 0xa6, 0x0a, 0xad, 0x0a, 0x30, 0x0a, 0x34, 0x0a, + 0xac, 0x09, 0xb3, 0x09, 0x1c, 0x09, 0x21, 0x09, 0x81, 0x08, 0x88, 0x08, + 0xda, 0x07, 0xe0, 0x07, 0x2a, 0x07, 0x2f, 0x07, 0x71, 0x06, 0x76, 0x06, + 0xb0, 0x05, 0xb6, 0x05, 0xe8, 0x04, 0xed, 0x04, 0x1c, 0x04, 0x23, 0x04, + 0x4a, 0x03, 0x4d, 0x03, 0x73, 0x02, 0x7a, 0x02, 0x9e, 0x01, 0xa3, 0x01, + 0xc1, 0x00, 0xc8, 0x00, 0xeb, 0xff, 0xef, 0xff, 0x0e, 0xff, 0x15, 0xff, + 0x37, 0xfe, 0x3b, 0xfe, 0x63, 0xfd, 0x68, 0xfd, 0x8c, 0xfc, 0x90, 0xfc, + 0xbe, 0xfb, 0xc5, 0xfb, 0xf3, 0xfa, 0xf8, 0xfa, 0x2e, 0xfa, 0x35, 0xfa, + 0x71, 0xf9, 0x75, 0xf9, 0xb7, 0xf8, 0xbe, 0xf8, 0x0b, 0xf8, 0x0e, 0xf8, + 0x5d, 0xf7, 0x65, 0xf7, 0xc5, 0xf6, 0xc8, 0xf6, 0x2d, 0xf6, 0x34, 0xf6, + 0xa6, 0xf5, 0xac, 0xf5, 0x29, 0xf5, 0x2b, 0xf5, 0xb5, 0xf4, 0xbd, 0xf4, + 0x54, 0xf4, 0x58, 0xf4, 0xf9, 0xf3, 0xfe, 0xf3, 0xae, 0xf3, 0xb6, 0xf3, + 0x74, 0xf3, 0x76, 0xf3, 0x43, 0xf3, 0x4b, 0xf3, 0x2a, 0xf3, 0x2d, 0xf3, + 0x16, 0xf3, 0x1d, 0xf3, 0x1c, 0xf3, 0x20, 0xf3, 0x2a, 0xf3, 0x31, 0xf3, + 0x4e, 0xf3, 0x53, 0xf3, 0x7f, 0xf3, 0x84, 0xf3, 0xc2, 0xf3, 0xc8, 0xf3, + 0x10, 0xf4, 0x16, 0xf4, 0x71, 0xf4, 0x76, 0xf4, 0xde, 0xf4, 0xe6, 0xf4, + 0x5b, 0xf5, 0x5f, 0xf5, 0xe5, 0xf5, 0xec, 0xf5, 0x77, 0xf6, 0x7c, 0xf6, + 0x18, 0xf7, 0x1e, 0xf7, 0xc2, 0xf7, 0xc7, 0xf7, 0x75, 0xf8, 0x7a, 0xf8, + 0x31, 0xf9, 0x38, 0xf9, 0xf4, 0xf9, 0xf9, 0xf9, 0xbb, 0xfa, 0xc1, 0xfa, + 0x89, 0xfb, 0x8f, 0xfb, 0x5d, 0xfc, 0x63, 0xfc, 0x33, 0xfd, 0x38, 0xfd, + 0x0b, 0xfe, 0x0f, 0xfe, 0xe3, 0xfe, 0xea, 0xfe, 0xbf, 0xff, 0xc3, 0xff, + 0x97, 0x00, 0x9d, 0x00, 0x6d, 0x01, 0x72, 0x01, 0x43, 0x02, 0x48, 0x02, + 0x13, 0x03, 0x19, 0x03, 0xe0, 0x03, 0xe5, 0x03, 0xaa, 0x04, 0xb0, 0x04, + 0x6e, 0x05, 0x72, 0x05, 0x2a, 0x06, 0x2e, 0x06, 0xe0, 0x06, 0xe5, 0x06, + 0x8e, 0x07, 0x93, 0x07, 0x34, 0x08, 0x38, 0x08, 0xce, 0x08, 0xd5, 0x08, + 0x61, 0x09, 0x66, 0x09, 0xeb, 0x09, 0xf0, 0x09, 0x64, 0x0a, 0x6b, 0x0a, + 0xda, 0x0a, 0xdd, 0x0a, 0x3a, 0x0b, 0x41, 0x0b, 0x92, 0x0b, 0x97, 0x0b, + 0xdc, 0x0b, 0xe2, 0x0b, 0x16, 0x0c, 0x1c, 0x0c, 0x45, 0x0c, 0x49, 0x0c, + 0x61, 0x0c, 0x65, 0x0c, 0x70, 0x0c, 0x76, 0x0c, 0x6f, 0x0c, 0x73, 0x0c, + 0x60, 0x0c, 0x64, 0x0c, 0x3f, 0x0c, 0x44, 0x0c, 0x0e, 0x0c, 0x11, 0x0c, + 0xce, 0x0b, 0xd2, 0x0b, 0x7b, 0x0b, 0x81, 0x0b, 0x1c, 0x0b, 0x1f, 0x0b, + 0xae, 0x0a, 0xb5, 0x0a, 0x34, 0x0a, 0x35, 0x0a, 0xaa, 0x09, 0xaf, 0x09, + 0x16, 0x09, 0x19, 0x09, 0x75, 0x08, 0x7c, 0x08, 0xcd, 0x07, 0xd1, 0x07, + 0x1a, 0x07, 0x1e, 0x07, 0x5e, 0x06, 0x62, 0x06, 0x9c, 0x05, 0xa1, 0x05, + 0xd4, 0x04, 0xd7, 0x04, 0x06, 0x04, 0x0a, 0x04, 0x33, 0x03, 0x37, 0x03, + 0x5e, 0x02, 0x62, 0x02, 0x87, 0x01, 0x8c, 0x01, 0xb0, 0x00, 0xb3, 0x00, + 0xd7, 0xff, 0xdc, 0xff, 0x02, 0xff, 0x04, 0xff, 0x2a, 0xfe, 0x30, 0xfe, + 0x5b, 0xfd, 0x5d, 0xfd, 0x88, 0xfc, 0x8d, 0xfc, 0xbd, 0xfb, 0xc2, 0xfb, + 0xf9, 0xfa, 0xfe, 0xfa, 0x36, 0xfa, 0x3a, 0xfa, 0x7f, 0xf9, 0x84, 0xf9, + 0xcb, 0xf8, 0xce, 0xf8, 0x24, 0xf8, 0x28, 0xf8, 0x80, 0xf7, 0x85, 0xf7, + 0xea, 0xf6, 0xee, 0xf6, 0x5b, 0xf6, 0x61, 0xf6, 0xd9, 0xf5, 0xdd, 0xf5, + 0x65, 0xf5, 0x68, 0xf5, 0xf5, 0xf4, 0xfa, 0xf4, 0x9c, 0xf4, 0x9f, 0xf4, + 0x47, 0xf4, 0x4b, 0xf4, 0x05, 0xf4, 0x08, 0xf4, 0xcf, 0xf3, 0xd3, 0xf3, + 0xa7, 0xf3, 0xab, 0xf3, 0x92, 0xf3, 0x97, 0xf3, 0x88, 0xf3, 0x8b, 0xf3, + 0x90, 0xf3, 0x94, 0xf3, 0xa6, 0xf3, 0xaa, 0xf3, 0xce, 0xf3, 0xd2, 0xf3, + 0x04, 0xf4, 0x07, 0xf4, 0x4a, 0xf4, 0x4f, 0xf4, 0xa0, 0xf4, 0xa3, 0xf4, + 0x02, 0xf5, 0x06, 0xf5, 0x77, 0xf5, 0x7a, 0xf5, 0xf8, 0xf5, 0xfc, 0xf5, + 0x83, 0xf6, 0x87, 0xf6, 0x20, 0xf7, 0x24, 0xf7, 0xbf, 0xf7, 0xc3, 0xf7, + 0x71, 0xf8, 0x75, 0xf8, 0x26, 0xf9, 0x2b, 0xf9, 0xe4, 0xf9, 0xe9, 0xf9, + 0xac, 0xfa, 0xb0, 0xfa, 0x76, 0xfb, 0x7b, 0xfb, 0x49, 0xfc, 0x4d, 0xfc, + 0x1b, 0xfd, 0x21, 0xfd, 0xf5, 0xfd, 0xfa, 0xfd, 0xd0, 0xfe, 0xd3, 0xfe, + 0xaa, 0xff, 0xad, 0xff, 0x86, 0x00, 0x8c, 0x00, 0x5e, 0x01, 0x61, 0x01, + 0x37, 0x02, 0x3c, 0x02, 0x0c, 0x03, 0x0e, 0x03, 0xde, 0x03, 0xe3, 0x03, + 0xaa, 0x04, 0xaf, 0x04, 0x73, 0x05, 0x76, 0x05, 0x36, 0x06, 0x3a, 0x06, + 0xf0, 0x06, 0xf7, 0x06, 0xa6, 0x07, 0xa8, 0x07, 0x4f, 0x08, 0x56, 0x08, + 0xf3, 0x08, 0xf8, 0x08, 0x8d, 0x09, 0x92, 0x09, 0x1a, 0x0a, 0x1e, 0x0a, + 0x9f, 0x0a, 0xa1, 0x0a, 0x15, 0x0b, 0x1a, 0x0b, 0x81, 0x0b, 0x86, 0x0b, + 0xe1, 0x0b, 0xe3, 0x0b, 0x2c, 0x0c, 0x32, 0x0c, 0x73, 0x0c, 0x76, 0x0c, + 0xa2, 0x0c, 0xa7, 0x0c, 0xcb, 0x0c, 0xd0, 0x0c, 0xdf, 0x0c, 0xe2, 0x0c, + 0xe3, 0x0c, 0xe8, 0x0c, 0xdd, 0x0c, 0xe1, 0x0c, 0xbf, 0x0c, 0xc2, 0x0c, + 0x96, 0x0c, 0x9b, 0x0c, 0x59, 0x0c, 0x5c, 0x0c, 0x0d, 0x0c, 0x11, 0x0c, + 0xb6, 0x0b, 0xba, 0x0b, 0x4a, 0x0b, 0x4e, 0x0b, 0xd7, 0x0a, 0xda, 0x0a, + 0x53, 0x0a, 0x56, 0x0a, 0xc2, 0x09, 0xc7, 0x09, 0x29, 0x09, 0x2d, 0x09, + 0x82, 0x08, 0x85, 0x08, 0xd5, 0x07, 0xda, 0x07, 0x1c, 0x07, 0x1e, 0x07, + 0x5b, 0x06, 0x60, 0x06, 0x96, 0x05, 0x98, 0x05, 0xc8, 0x04, 0xcd, 0x04, + 0xf8, 0x03, 0xfb, 0x03, 0x24, 0x03, 0x28, 0x03, 0x4e, 0x02, 0x52, 0x02, + 0x77, 0x01, 0x79, 0x01, 0x9e, 0x00, 0xa3, 0x00, 0xc6, 0xff, 0xca, 0xff, + 0xf0, 0xfe, 0xf4, 0xfe, 0x1a, 0xfe, 0x1e, 0xfe, 0x49, 0xfd, 0x4d, 0xfd, + 0x7b, 0xfc, 0x7f, 0xfc, 0xb3, 0xfb, 0xb6, 0xfb, 0xee, 0xfa, 0xf3, 0xfa, + 0x31, 0xfa, 0x34, 0xfa, 0x79, 0xf9, 0x7c, 0xf9, 0xca, 0xf8, 0xcd, 0xf8, + 0x22, 0xf8, 0x26, 0xf8, 0x84, 0xf7, 0x88, 0xf7, 0xef, 0xf6, 0xf2, 0xf6, + 0x65, 0xf6, 0x69, 0xf6, 0xe8, 0xf5, 0xeb, 0xf5, 0x73, 0xf5, 0x77, 0xf5, + 0x0c, 0xf5, 0x11, 0xf5, 0xb2, 0xf4, 0xb4, 0xf4, 0x63, 0xf4, 0x68, 0xf4, + 0x27, 0xf4, 0x29, 0xf4, 0xf2, 0xf3, 0xf7, 0xf3, 0xd1, 0xf3, 0xd6, 0xf3, + 0xbf, 0xf3, 0xc1, 0xf3, 0xb9, 0xf3, 0xbd, 0xf3, 0xc8, 0xf3, 0xcb, 0xf3, + 0xe0, 0xf3, 0xe7, 0xf3, 0x0e, 0xf4, 0x10, 0xf4, 0x47, 0xf4, 0x4c, 0xf4, + 0x93, 0xf4, 0x96, 0xf4, 0xea, 0xf4, 0xef, 0xf4, 0x55, 0xf5, 0x5b, 0xf5, + 0xcc, 0xf5, 0xcc, 0xf5, 0x4f, 0xf6, 0x56, 0xf6, 0xe2, 0xf6, 0xe6, 0xf6, + 0x7c, 0xf7, 0x7f, 0xf7, 0x25, 0xf8, 0x29, 0xf8, 0xd3, 0xf8, 0xd5, 0xf8, + 0x8e, 0xf9, 0x94, 0xf9, 0x4e, 0xfa, 0x51, 0xfa, 0x16, 0xfb, 0x1a, 0xfb, + 0xe2, 0xfb, 0xe5, 0xfb, 0xb3, 0xfc, 0xb8, 0xfc, 0x89, 0xfd, 0x8c, 0xfd, + 0x61, 0xfe, 0x64, 0xfe, 0x3a, 0xff, 0x3d, 0xff, 0x14, 0x00, 0x17, 0x00, + 0xec, 0x00, 0xef, 0x00, 0xc4, 0x01, 0xc6, 0x01, 0x97, 0x02, 0x9a, 0x02, + 0x6b, 0x03, 0x6f, 0x03, 0x38, 0x04, 0x3b, 0x04, 0x03, 0x05, 0x05, 0x05, + 0xc5, 0x05, 0xc7, 0x05, 0x82, 0x06, 0x86, 0x06, 0x38, 0x07, 0x3a, 0x07, + 0xe5, 0x07, 0xe9, 0x07, 0x8c, 0x08, 0x8f, 0x08, 0x28, 0x09, 0x2a, 0x09, + 0xba, 0x09, 0xbc, 0x09, 0x41, 0x0a, 0x44, 0x0a, 0xbe, 0x0a, 0xc0, 0x0a, + 0x2d, 0x0b, 0x31, 0x0b, 0x90, 0x0b, 0x92, 0x0b, 0xe6, 0x0b, 0xea, 0x0b, + 0x2e, 0x0c, 0x2f, 0x0c, 0x68, 0x0c, 0x6b, 0x0c, 0x91, 0x0c, 0x94, 0x0c, + 0xae, 0x0c, 0xb3, 0x0c, 0xbb, 0x0c, 0xbd, 0x0c, 0xbc, 0x0c, 0xbd, 0x0c, + 0xa6, 0x0c, 0xa9, 0x0c, 0x84, 0x0c, 0x88, 0x0c, 0x52, 0x0c, 0x52, 0x0c, + 0x0c, 0x0c, 0x10, 0x0c, 0xbc, 0x0b, 0xbe, 0x0b, 0x58, 0x0b, 0x5b, 0x0b, + 0xea, 0x0a, 0xec, 0x0a, 0x6c, 0x0a, 0x71, 0x0a, 0xe4, 0x09, 0xe5, 0x09, + 0x4f, 0x09, 0x53, 0x09, 0xaa, 0x08, 0xae, 0x08, 0x02, 0x08, 0x06, 0x08, + 0x4e, 0x07, 0x4f, 0x07, 0x8f, 0x06, 0x94, 0x06, 0xcc, 0x05, 0xce, 0x05, + 0x01, 0x05, 0x04, 0x05, 0x32, 0x04, 0x35, 0x04, 0x5d, 0x03, 0x60, 0x03, + 0x86, 0x02, 0x8a, 0x02, 0xae, 0x01, 0xaf, 0x01, 0xd4, 0x00, 0xd8, 0x00, + 0xf9, 0xff, 0xfc, 0xff, 0x1d, 0xff, 0x20, 0xff, 0x48, 0xfe, 0x4c, 0xfe, + 0x70, 0xfd, 0x73, 0xfd, 0xa1, 0xfc, 0xa2, 0xfc, 0xce, 0xfb, 0xd1, 0xfb, + 0x07, 0xfb, 0x09, 0xfb, 0x41, 0xfa, 0x44, 0xfa, 0x84, 0xf9, 0x88, 0xf9, + 0xd0, 0xf8, 0xd1, 0xf8, 0x1e, 0xf8, 0x22, 0xf8, 0x7d, 0xf7, 0x7d, 0xf7, + 0xdc, 0xf6, 0xe0, 0xf6, 0x4f, 0xf6, 0x4f, 0xf6, 0xc4, 0xf5, 0xc7, 0xf5, + 0x48, 0xf5, 0x4b, 0xf5, 0xdd, 0xf4, 0xdc, 0xf4, 0x75, 0xf4, 0x79, 0xf4, + 0x22, 0xf4, 0x25, 0xf4, 0xd9, 0xf3, 0xd9, 0xf3, 0x9e, 0xf3, 0xa2, 0xf3, + 0x75, 0xf3, 0x76, 0xf3, 0x57, 0xf3, 0x5b, 0xf3, 0x50, 0xf3, 0x50, 0xf3, + 0x50, 0xf3, 0x54, 0xf3, 0x65, 0xf3, 0x67, 0xf3, 0x89, 0xf3, 0x8c, 0xf3, + 0xbe, 0xf3, 0xbf, 0xf3, 0x02, 0xf4, 0x05, 0xf4, 0x54, 0xf4, 0x55, 0xf4, + 0xb8, 0xf4, 0xba, 0xf4, 0x27, 0xf5, 0x29, 0xf5, 0xa5, 0xf5, 0xa8, 0xf5, + 0x31, 0xf6, 0x32, 0xf6, 0xc5, 0xf6, 0xc8, 0xf6, 0x69, 0xf7, 0x6b, 0xf7, + 0x15, 0xf8, 0x16, 0xf8, 0xc8, 0xf8, 0xca, 0xf8, 0x86, 0xf9, 0x87, 0xf9, + 0x45, 0xfa, 0x49, 0xfa, 0x12, 0xfb, 0x12, 0xfb, 0xde, 0xfb, 0xe2, 0xfb, + 0xb3, 0xfc, 0xb3, 0xfc, 0x87, 0xfd, 0x8a, 0xfd, 0x5e, 0xfe, 0x5f, 0xfe, + 0x36, 0xff, 0x39, 0xff, 0x0d, 0x00, 0x0e, 0x00, 0xe5, 0x00, 0xe8, 0x00, + 0xba, 0x01, 0xba, 0x01, 0x8a, 0x02, 0x8d, 0x02, 0x5b, 0x03, 0x5a, 0x03, + 0x23, 0x04, 0x25, 0x04, 0xe8, 0x04, 0xea, 0x04, 0xa9, 0x05, 0xa9, 0x05, + 0x5f, 0x06, 0x63, 0x06, 0x12, 0x07, 0x12, 0x07, 0xb8, 0x07, 0xbb, 0x07, + 0x5b, 0x08, 0x5c, 0x08, 0xf0, 0x08, 0xf3, 0x08, 0x7d, 0x09, 0x7f, 0x09, + 0x00, 0x0a, 0x02, 0x0a, 0x74, 0x0a, 0x75, 0x0a, 0xe0, 0x0a, 0xe0, 0x0a, + 0x3c, 0x0b, 0x40, 0x0b, 0x8d, 0x0b, 0x8d, 0x0b, 0xcf, 0x0b, 0xd1, 0x0b, + 0x01, 0x0c, 0x03, 0x0c, 0x29, 0x0c, 0x2b, 0x0c, 0x3d, 0x0c, 0x3f, 0x0c, + 0x48, 0x0c, 0x49, 0x0c, 0x40, 0x0c, 0x43, 0x0c, 0x27, 0x0c, 0x29, 0x0c, + 0x02, 0x0c, 0x04, 0x0c, 0xc9, 0x0b, 0xca, 0x0b, 0x83, 0x0b, 0x85, 0x0b, + 0x2b, 0x0b, 0x2f, 0x0b, 0xc8, 0x0a, 0xc8, 0x0a, 0x55, 0x0a, 0x58, 0x0a, + 0xd3, 0x09, 0xd4, 0x09, 0x47, 0x09, 0x49, 0x09, 0xad, 0x08, 0xaf, 0x08, + 0x09, 0x08, 0x0b, 0x08, 0x5e, 0x07, 0x5e, 0x07, 0xa3, 0x06, 0xa5, 0x06, + 0xe7, 0x05, 0xe7, 0x05, 0x1d, 0x05, 0x20, 0x05, 0x54, 0x04, 0x57, 0x04, + 0x84, 0x03, 0x85, 0x03, 0xad, 0x02, 0xaf, 0x02, 0xd8, 0x01, 0xd9, 0x01, + 0xfc, 0x00, 0xfe, 0x00, 0x25, 0x00, 0x25, 0x00, 0x4a, 0xff, 0x4c, 0xff, + 0x71, 0xfe, 0x70, 0xfe, 0x9a, 0xfd, 0x9b, 0xfd, 0xc5, 0xfc, 0xc6, 0xfc, + 0xf6, 0xfb, 0xf7, 0xfb, 0x28, 0xfb, 0x29, 0xfb, 0x64, 0xfa, 0x64, 0xfa, + 0xa2, 0xf9, 0xa2, 0xf9, 0xe8, 0xf8, 0xe9, 0xf8, 0x35, 0xf8, 0x36, 0xf8, + 0x8d, 0xf7, 0x8f, 0xf7, 0xee, 0xf6, 0xed, 0xf6, 0x54, 0xf6, 0x57, 0xf6, + 0xca, 0xf5, 0xca, 0xf5, 0x4a, 0xf5, 0x4b, 0xf5, 0xd4, 0xf4, 0xd5, 0xf4, + 0x6e, 0xf4, 0x6e, 0xf4, 0x0f, 0xf4, 0x11, 0xf4, 0xc5, 0xf3, 0xc7, 0xf3, + 0x82, 0xf3, 0x83, 0xf3, 0x54, 0xf3, 0x56, 0xf3, 0x32, 0xf3, 0x30, 0xf3, + 0x1f, 0xf3, 0x21, 0xf3, 0x1f, 0xf3, 0x20, 0xf3, 0x2b, 0xf3, 0x29, 0xf3, + 0x4a, 0xf3, 0x4d, 0xf3, 0x77, 0xf3, 0x75, 0xf3, 0xb4, 0xf3, 0xb5, 0xf3, + 0x01, 0xf4, 0x03, 0xf4, 0x5c, 0xf4, 0x5b, 0xf4, 0xc7, 0xf4, 0xc9, 0xf4, + 0x3f, 0xf5, 0x3f, 0xf5, 0xc6, 0xf5, 0xc6, 0xf5, 0x55, 0xf6, 0x57, 0xf6, + 0xf3, 0xf6, 0xf5, 0xf6, 0x9a, 0xf7, 0x9c, 0xf7, 0x4e, 0xf8, 0x4e, 0xf8, + 0x04, 0xf9, 0x04, 0xf9, 0xc5, 0xf9, 0xc7, 0xf9, 0x8b, 0xfa, 0x8e, 0xfa, + 0x5a, 0xfb, 0x58, 0xfb, 0x29, 0xfc, 0x2b, 0xfc, 0xff, 0xfc, 0xfe, 0xfc, + 0xd4, 0xfd, 0xd5, 0xfd, 0xb0, 0xfe, 0xb1, 0xfe, 0x87, 0xff, 0x86, 0xff, + 0x5f, 0x00, 0x63, 0x00, 0x37, 0x01, 0x35, 0x01, 0x0a, 0x02, 0x0f, 0x02, + 0xdf, 0x02, 0xdc, 0x02, 0xac, 0x03, 0xab, 0x03, 0x76, 0x04, 0x77, 0x04, + 0x3a, 0x05, 0x39, 0x05, 0xf7, 0x05, 0xf7, 0x05, 0xb0, 0x06, 0xaf, 0x06, + 0x5c, 0x07, 0x5d, 0x07, 0x06, 0x08, 0x06, 0x08, 0xa1, 0x08, 0xa1, 0x08, + 0x37, 0x09, 0x38, 0x09, 0xbf, 0x09, 0xbf, 0x09, 0x3d, 0x0a, 0x40, 0x0a, + 0xb1, 0x0a, 0xb1, 0x0a, 0x18, 0x0b, 0x19, 0x0b, 0x70, 0x0b, 0x72, 0x0b, + 0xbc, 0x0b, 0xbd, 0x0b, 0xfb, 0x0b, 0xfb, 0x0b, 0x2a, 0x0c, 0x2c, 0x0c, + 0x4c, 0x0c, 0x4b, 0x0c, 0x5d, 0x0c, 0x5e, 0x0c, 0x60, 0x0c, 0x60, 0x0c, + 0x54, 0x0c, 0x56, 0x0c, 0x35, 0x0c, 0x34, 0x0c, 0x09, 0x0c, 0x0b, 0x0c, + 0xcb, 0x0b, 0xca, 0x0b, 0x7f, 0x0b, 0x81, 0x0b, 0x24, 0x0b, 0x23, 0x0b, + 0xb7, 0x0a, 0xb7, 0x0a, 0x41, 0x0a, 0x43, 0x0a, 0xbc, 0x09, 0xbd, 0x09, + 0x2c, 0x09, 0x2b, 0x09, 0x8e, 0x08, 0x92, 0x08, 0xe8, 0x07, 0xe9, 0x07, + 0x38, 0x07, 0x39, 0x07, 0x7e, 0x06, 0x7d, 0x06, 0xc0, 0x05, 0xbf, 0x05, + 0xf6, 0x04, 0xf9, 0x04, 0x2d, 0x04, 0x2a, 0x04, 0x5b, 0x03, 0x5c, 0x03, + 0x89, 0x02, 0x88, 0x02, 0xb1, 0x01, 0xb3, 0x01, 0xdd, 0x00, 0xdc, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x2c, 0xff, 0x2d, 0xff, 0x59, 0xfe, 0x57, 0xfe, + 0x83, 0xfd, 0x85, 0xfd, 0xb5, 0xfc, 0xb4, 0xfc, 0xe8, 0xfb, 0xe9, 0xfb, + 0x22, 0xfb, 0x24, 0xfb, 0x61, 0xfa, 0x62, 0xfa, 0xa8, 0xf9, 0xa5, 0xf9, + 0xf3, 0xf8, 0xf5, 0xf8, 0x49, 0xf8, 0x47, 0xf8, 0xa2, 0xf7, 0xa7, 0xf7, + 0x0d, 0xf7, 0x0a, 0xf7, 0x7c, 0xf6, 0x7e, 0xf6, 0xf8, 0xf5, 0xf6, 0xf5, + 0x7e, 0xf5, 0x7e, 0xf5, 0x10, 0xf5, 0x12, 0xf5, 0xb2, 0xf4, 0xb2, 0xf4, + 0x5c, 0xf4, 0x5d, 0xf4, 0x17, 0xf4, 0x17, 0xf4, 0xe0, 0xf3, 0xdf, 0xf3, + 0xb4, 0xf3, 0xb5, 0xf3, 0x9e, 0xf3, 0x9b, 0xf3, 0x8f, 0xf3, 0x90, 0xf3, + 0x93, 0xf3, 0x93, 0xf3, 0xa6, 0xf3, 0xa6, 0xf3, 0xca, 0xf3, 0xca, 0xf3, + 0xfe, 0xf3, 0xfc, 0xf3, 0x41, 0xf4, 0x40, 0xf4, 0x92, 0xf4, 0x91, 0xf4, + 0xf3, 0xf4, 0xf2, 0xf4, 0x62, 0xf5, 0x62, 0xf5, 0xdc, 0xf5, 0xdd, 0xf5, + 0x69, 0xf6, 0x69, 0xf6, 0xfe, 0xf6, 0xfc, 0xf6, 0x9d, 0xf7, 0x9f, 0xf7, + 0x4a, 0xf8, 0x48, 0xf8, 0xfa, 0xf8, 0xfc, 0xf8, 0xba, 0xf9, 0xb9, 0xf9, + 0x7b, 0xfa, 0x7a, 0xfa, 0x45, 0xfb, 0x45, 0xfb, 0x13, 0xfc, 0x12, 0xfc, + 0xe7, 0xfc, 0xe6, 0xfc, 0xbc, 0xfd, 0xbc, 0xfd, 0x94, 0xfe, 0x92, 0xfe, + 0x6e, 0xff, 0x70, 0xff, 0x48, 0x00, 0x46, 0x00, 0x20, 0x01, 0x21, 0x01, + 0xf8, 0x01, 0xf6, 0x01, 0xcb, 0x02, 0xcb, 0x02, 0x9f, 0x03, 0x9e, 0x03, + 0x6a, 0x04, 0x6b, 0x04, 0x35, 0x05, 0x34, 0x05, 0xf5, 0x05, 0xf5, 0x05, + 0xb3, 0x06, 0xb1, 0x06, 0x66, 0x07, 0x65, 0x07, 0x12, 0x08, 0x12, 0x08, + 0xb6, 0x08, 0xb6, 0x08, 0x51, 0x09, 0x4f, 0x09, 0xe2, 0x09, 0xe2, 0x09, + 0x67, 0x0a, 0x66, 0x0a, 0xe0, 0x0a, 0xde, 0x0a, 0x4e, 0x0b, 0x4d, 0x0b, + 0xad, 0x0b, 0xaa, 0x0b, 0x01, 0x0c, 0x02, 0x0c, 0x44, 0x0c, 0x43, 0x0c, + 0x7c, 0x0c, 0x7b, 0x0c, 0xa6, 0x0c, 0xa5, 0x0c, 0xbc, 0x0c, 0xbb, 0x0c, + 0xc7, 0x0c, 0xc7, 0x0c, 0xc0, 0x0c, 0xbf, 0x0c, 0xab, 0x0c, 0xaa, 0x0c, + 0x84, 0x0c, 0x84, 0x0c, 0x4c, 0x0c, 0x4c, 0x0c, 0x09, 0x0c, 0x08, 0x0c, + 0xb1, 0x0b, 0xb1, 0x0b, 0x4f, 0x0b, 0x4e, 0x0b, 0xdb, 0x0a, 0xdb, 0x0a, + 0x5c, 0x0a, 0x5c, 0x0a, 0xd3, 0x09, 0xd2, 0x09, 0x3a, 0x09, 0x3b, 0x09, + 0x9c, 0x08, 0x9b, 0x08, 0xef, 0x07, 0xf0, 0x07, 0x3c, 0x07, 0x3a, 0x07, + 0x80, 0x06, 0x80, 0x06, 0xbb, 0x05, 0xbb, 0x05, 0xf4, 0x04, 0xf4, 0x04, + 0x27, 0x04, 0x25, 0x04, 0x55, 0x03, 0x55, 0x03, 0x80, 0x02, 0x7f, 0x02, + 0xaa, 0x01, 0xab, 0x01, 0xd3, 0x00, 0xd4, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0x2a, 0xff, 0x2a, 0xff, 0x56, 0xfe, 0x55, 0xfe, 0x86, 0xfd, 0x88, 0xfd, + 0xb6, 0xfc, 0xb6, 0xfc, 0xf0, 0xfb, 0xf0, 0xfb, 0x2b, 0xfb, 0x2c, 0xfb, + 0x6e, 0xfa, 0x6d, 0xfa, 0xb7, 0xf9, 0xba, 0xf9, 0x06, 0xf9, 0x03, 0xf9, + 0x60, 0xf8, 0x61, 0xf8, 0xbf, 0xf7, 0xc0, 0xf7, 0x2b, 0xf7, 0x2b, 0xf7, + 0xa0, 0xf6, 0x9f, 0xf6, 0x1e, 0xf6, 0x1d, 0xf6, 0xab, 0xf5, 0xab, 0xf5, + 0x40, 0xf5, 0x41, 0xf5, 0xe5, 0xf4, 0xe5, 0xf4, 0x95, 0xf4, 0x95, 0xf4, + 0x52, 0xf4, 0x52, 0xf4, 0x21, 0xf4, 0x20, 0xf4, 0xf9, 0xf3, 0xfa, 0xf3, + 0xe5, 0xf3, 0xe4, 0xf3, 0xdb, 0xf3, 0xdb, 0xf3, 0xe4, 0xf3, 0xe3, 0xf3, + 0xfa, 0xf3, 0xfa, 0xf3, 0x21, 0xf4, 0x21, 0xf4, 0x5a, 0xf4, 0x58, 0xf4, + 0x9f, 0xf4, 0x9f, 0xf4, 0xf3, 0xf4, 0xf3, 0xf4, 0x57, 0xf5, 0x57, 0xf5, + 0xc9, 0xf5, 0xc8, 0xf5, 0x48, 0xf6, 0x46, 0xf6, 0xd4, 0xf6, 0xd5, 0xf6, + 0x6b, 0xf7, 0x6b, 0xf7, 0x10, 0xf8, 0x0e, 0xf8, 0xb9, 0xf8, 0xba, 0xf8, + 0x71, 0xf9, 0x70, 0xf9, 0x2d, 0xfa, 0x2b, 0xfa, 0xee, 0xfa, 0xef, 0xfa, + 0xba, 0xfb, 0xb6, 0xfb, 0x85, 0xfc, 0x86, 0xfc, 0x5a, 0xfd, 0x57, 0xfd, + 0x2d, 0xfe, 0x2d, 0xfe, 0x05, 0xff, 0x02, 0xff, 0xd9, 0xff, 0xda, 0xff, + 0xb3, 0x00, 0xb1, 0x00, 0x85, 0x01, 0x87, 0x01, 0x5c, 0x02, 0x5a, 0x02, + 0x2d, 0x03, 0x2d, 0x03, 0xfa, 0x03, 0xf9, 0x03, 0xc3, 0x04, 0xc2, 0x04, + 0x85, 0x05, 0x86, 0x05, 0x45, 0x06, 0x42, 0x06, 0xf8, 0x06, 0xf9, 0x06, + 0xa8, 0x07, 0xa8, 0x07, 0x50, 0x08, 0x4f, 0x08, 0xeb, 0x08, 0xeb, 0x08, + 0x81, 0x09, 0x80, 0x09, 0x08, 0x0a, 0x06, 0x0a, 0x85, 0x0a, 0x86, 0x0a, + 0xf9, 0x0a, 0xf7, 0x0a, 0x5e, 0x0b, 0x5c, 0x0b, 0xb6, 0x0b, 0xb5, 0x0b, + 0xff, 0x0b, 0xff, 0x0b, 0x40, 0x0c, 0x3e, 0x0c, 0x6c, 0x0c, 0x6c, 0x0c, + 0x8e, 0x0c, 0x8d, 0x0c, 0x9d, 0x0c, 0x9e, 0x0c, 0x9f, 0x0c, 0x9d, 0x0c, + 0x91, 0x0c, 0x92, 0x0c, 0x74, 0x0c, 0x72, 0x0c, 0x47, 0x0c, 0x47, 0x0c, + 0x09, 0x0c, 0x08, 0x0c, 0xbc, 0x0b, 0xbc, 0x0b, 0x60, 0x0b, 0x5e, 0x0b, + 0xf6, 0x0a, 0xf4, 0x0a, 0x7d, 0x0a, 0x7d, 0x0a, 0xfb, 0x09, 0xfa, 0x09, + 0x69, 0x09, 0x67, 0x09, 0xce, 0x08, 0xcf, 0x08, 0x2a, 0x08, 0x27, 0x08, + 0x79, 0x07, 0x7a, 0x07, 0xc5, 0x06, 0xc2, 0x06, 0x02, 0x06, 0x01, 0x06, + 0x3d, 0x05, 0x3e, 0x05, 0x75, 0x04, 0x72, 0x04, 0x9f, 0x03, 0x9f, 0x03, + 0xd1, 0x02, 0xd0, 0x02, 0xf7, 0x01, 0xf7, 0x01, 0x23, 0x01, 0x23, 0x01, + 0x4a, 0x00, 0x49, 0x00, 0x73, 0xff, 0x73, 0xff, 0x9e, 0xfe, 0x9c, 0xfe, + 0xc8, 0xfd, 0xc8, 0xfd, 0xf6, 0xfc, 0xf7, 0xfc, 0x2a, 0xfc, 0x29, 0xfc, + 0x60, 0xfb, 0x60, 0xfb, 0x9f, 0xfa, 0x9f, 0xfa, 0xe0, 0xf9, 0xde, 0xf9, + 0x2b, 0xf9, 0x2a, 0xf9, 0x7d, 0xf8, 0x7c, 0xf8, 0xd5, 0xf7, 0xd4, 0xf7, + 0x39, 0xf7, 0x39, 0xf7, 0xa5, 0xf6, 0xa4, 0xf6, 0x1c, 0xf6, 0x1d, 0xf6, + 0xa0, 0xf5, 0x9e, 0xf5, 0x2d, 0xf5, 0x2c, 0xf5, 0xc9, 0xf4, 0xc9, 0xf4, + 0x72, 0xf4, 0x6e, 0xf4, 0x24, 0xf4, 0x26, 0xf4, 0xe9, 0xf3, 0xe6, 0xf3, + 0xb8, 0xf3, 0xb8, 0xf3, 0x98, 0xf3, 0x97, 0xf3, 0x87, 0xf3, 0x87, 0xf3, + 0x85, 0xf3, 0x84, 0xf3, 0x94, 0xf3, 0x93, 0xf3, 0xb1, 0xf3, 0xb1, 0xf3, + 0xe3, 0xf3, 0xe1, 0xf3, 0x1c, 0xf4, 0x1d, 0xf4, 0x6d, 0xf4, 0x6c, 0xf4, + 0xc6, 0xf4, 0xc7, 0xf4, 0x30, 0xf5, 0x2f, 0xf5, 0xa8, 0xf5, 0xa7, 0xf5, + 0x27, 0xf6, 0x28, 0xf6, 0xbe, 0xf6, 0xbd, 0xf6, 0x55, 0xf7, 0x53, 0xf7, + 0xfd, 0xf7, 0xfc, 0xf7, 0xac, 0xf8, 0xab, 0xf8, 0x60, 0xf9, 0x61, 0xf9, + 0x22, 0xfa, 0x1f, 0xfa, 0xe4, 0xfa, 0xe3, 0xfa, 0xaf, 0xfb, 0xb0, 0xfb, + 0x7d, 0xfc, 0x7b, 0xfc, 0x4e, 0xfd, 0x4e, 0xfd, 0x22, 0xfe, 0x22, 0xfe, + 0xf5, 0xfe, 0xf4, 0xfe, 0xcc, 0xff, 0xcc, 0xff, 0x9e, 0x00, 0x9e, 0x00, + 0x72, 0x01, 0x72, 0x01, 0x42, 0x02, 0x41, 0x02, 0x0c, 0x03, 0x0d, 0x03, + 0xda, 0x03, 0xd7, 0x03, 0x9a, 0x04, 0x9b, 0x04, 0x5b, 0x05, 0x5a, 0x05, + 0x12, 0x06, 0x14, 0x06, 0xc5, 0x06, 0xc3, 0x06, 0x6d, 0x07, 0x6f, 0x07, + 0x10, 0x08, 0x0e, 0x08, 0xa5, 0x08, 0xa7, 0x08, 0x36, 0x09, 0x35, 0x09, + 0xb9, 0x09, 0xb8, 0x09, 0x2f, 0x0a, 0x32, 0x0a, 0x9d, 0x0a, 0x9d, 0x0a, + 0xfe, 0x0a, 0xfd, 0x0a, 0x52, 0x0b, 0x53, 0x0b, 0x97, 0x0b, 0x96, 0x0b, + 0xce, 0x0b, 0xce, 0x0b, 0xf8, 0x0b, 0xfa, 0x0b, 0x13, 0x0c, 0x12, 0x0c, + 0x1f, 0x0c, 0x20, 0x0c, 0x1f, 0x0c, 0x1f, 0x0c, 0x0b, 0x0c, 0x0c, 0x0c, + 0xec, 0x0b, 0xed, 0x0b, 0xba, 0x0b, 0xba, 0x0b, 0x7a, 0x0b, 0x7b, 0x0b, + 0x2c, 0x0b, 0x2b, 0x0b, 0xca, 0x0a, 0xcc, 0x0a, 0x61, 0x0a, 0x60, 0x0a, + 0xe5, 0x09, 0xe6, 0x09, 0x60, 0x09, 0x60, 0x09, 0xcc, 0x08, 0xcd, 0x08, + 0x2e, 0x08, 0x2f, 0x08, 0x8b, 0x07, 0x8a, 0x07, 0xd7, 0x06, 0xd7, 0x06, + 0x1f, 0x06, 0x1e, 0x06, 0x5e, 0x05, 0x5d, 0x05, 0x97, 0x04, 0x96, 0x04, + 0xcb, 0x03, 0xcb, 0x03, 0xfa, 0x02, 0xf9, 0x02, 0x27, 0x02, 0x29, 0x02, + 0x52, 0x01, 0x50, 0x01, 0x7b, 0x00, 0x7b, 0x00, 0xa3, 0xff, 0xa2, 0xff, + 0xcc, 0xfe, 0xcc, 0xfe, 0xf8, 0xfd, 0xf8, 0xfd, 0x25, 0xfd, 0x25, 0xfd, + 0x55, 0xfc, 0x54, 0xfc, 0x8a, 0xfb, 0x8c, 0xfb, 0xc5, 0xfa, 0xc3, 0xfa, + 0x03, 0xfa, 0x05, 0xfa, 0x4a, 0xf9, 0x4a, 0xf9, 0x97, 0xf8, 0x96, 0xf8, + 0xec, 0xf7, 0xec, 0xf7, 0x4b, 0xf7, 0x4b, 0xf7, 0xb1, 0xf6, 0xb1, 0xf6, + 0x23, 0xf6, 0x23, 0xf6, 0xa1, 0xf5, 0xa1, 0xf5, 0x28, 0xf5, 0x28, 0xf5, + 0xbe, 0xf4, 0xbf, 0xf4, 0x5f, 0xf4, 0x5f, 0xf4, 0x0e, 0xf4, 0x0d, 0xf4, + 0xc9, 0xf3, 0xca, 0xf3, 0x93, 0xf3, 0x94, 0xf3, 0x6c, 0xf3, 0x69, 0xf3, + 0x52, 0xf3, 0x54, 0xf3, 0x4e, 0xf3, 0x4a, 0xf3, 0x4e, 0xf3, 0x50, 0xf3, + 0x6b, 0xf3, 0x69, 0xf3, 0x8e, 0xf3, 0x8e, 0xf3, 0xc7, 0xf3, 0xc6, 0xf3, + 0x0b, 0xf4, 0x0c, 0xf4, 0x60, 0xf4, 0x5e, 0xf4, 0xc2, 0xf4, 0xc3, 0xf4, + 0x31, 0xf5, 0x30, 0xf5, 0xaf, 0xf5, 0xaf, 0xf5, 0x3a, 0xf6, 0x3b, 0xf6, + 0xd0, 0xf6, 0xcd, 0xf6, 0x70, 0xf7, 0x71, 0xf7, 0x1a, 0xf8, 0x17, 0xf8, + 0xcc, 0xf8, 0xce, 0xf8, 0x87, 0xf9, 0x86, 0xf9, 0x49, 0xfa, 0x47, 0xfa, + 0x0f, 0xfb, 0x10, 0xfb, 0xdc, 0xfb, 0xda, 0xfb, 0xaa, 0xfc, 0xac, 0xfc, + 0x7e, 0xfd, 0x7e, 0xfd, 0x53, 0xfe, 0x53, 0xfe, 0x2a, 0xff, 0x2a, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xd3, 0x00, 0xd5, 0x00, 0xa6, 0x01, 0xa5, 0x01, + 0x75, 0x02, 0x75, 0x02, 0x42, 0x03, 0x43, 0x03, 0x0c, 0x04, 0x0c, 0x04, + 0xd0, 0x04, 0xcf, 0x04, 0x8d, 0x05, 0x8e, 0x05, 0x44, 0x06, 0x43, 0x06, + 0xf4, 0x06, 0xf4, 0x06, 0x9d, 0x07, 0x9b, 0x07, 0x3c, 0x08, 0x3c, 0x08, + 0xd1, 0x08, 0xd1, 0x08, 0x5d, 0x09, 0x5a, 0x09, 0xe0, 0x09, 0xe0, 0x09, + 0x55, 0x0a, 0x54, 0x0a, 0xc0, 0x0a, 0xc1, 0x0a, 0x1d, 0x0b, 0x1d, 0x0b, + 0x6b, 0x0b, 0x6d, 0x0b, 0xb1, 0x0b, 0xb2, 0x0b, 0xe3, 0x0b, 0xe4, 0x0b, + 0x0c, 0x0c, 0x0c, 0x0c, 0x21, 0x0c, 0x22, 0x0c, 0x2a, 0x0c, 0x2a, 0x0c, + 0x26, 0x0c, 0x26, 0x0c, 0x0f, 0x0c, 0x0f, 0x0c, 0xed, 0x0b, 0xec, 0x0b, + 0xb6, 0x0b, 0xb6, 0x0b, 0x70, 0x0b, 0x71, 0x0b, 0x1f, 0x0b, 0x1d, 0x0b, + 0xba, 0x0a, 0xbb, 0x0a, 0x4c, 0x0a, 0x4a, 0x0a, 0xcc, 0x09, 0xcd, 0x09, + 0x44, 0x09, 0x44, 0x09, 0xb1, 0x08, 0xb1, 0x08, 0x0e, 0x08, 0x0d, 0x08, + 0x68, 0x07, 0x69, 0x07, 0xb5, 0x06, 0xb2, 0x06, 0xfa, 0x05, 0xfd, 0x05, + 0x3c, 0x05, 0x38, 0x05, 0x6f, 0x04, 0x71, 0x04, 0xaa, 0x03, 0xa7, 0x03, + 0xd4, 0x02, 0xd6, 0x02, 0x08, 0x02, 0x05, 0x02, 0x30, 0x01, 0x30, 0x01, + 0x5d, 0x00, 0x5c, 0x00, 0x86, 0xff, 0x88, 0xff, 0xb5, 0xfe, 0xb5, 0xfe, + 0xe3, 0xfd, 0xe3, 0xfd, 0x12, 0xfd, 0x11, 0xfd, 0x48, 0xfc, 0x49, 0xfc, + 0x80, 0xfb, 0x80, 0xfb, 0xc0, 0xfa, 0xc0, 0xfa, 0x04, 0xfa, 0x03, 0xfa, + 0x4e, 0xf9, 0x4e, 0xf9, 0xa3, 0xf8, 0xa4, 0xf8, 0xfd, 0xf7, 0xfc, 0xf7, + 0x61, 0xf7, 0x63, 0xf7, 0xd0, 0xf6, 0xcf, 0xf6, 0x46, 0xf6, 0x48, 0xf6, + 0xcc, 0xf5, 0xca, 0xf5, 0x57, 0xf5, 0x59, 0xf5, 0xf5, 0xf4, 0xf5, 0xf4, + 0x9b, 0xf4, 0x9a, 0xf4, 0x4e, 0xf4, 0x4f, 0xf4, 0x12, 0xf4, 0x12, 0xf4, + 0xe2, 0xf3, 0xe2, 0xf3, 0xc2, 0xf3, 0xc2, 0xf3, 0xad, 0xf3, 0xae, 0xf3, + 0xab, 0xf3, 0xac, 0xf3, 0xb9, 0xf3, 0xba, 0xf3, 0xd4, 0xf3, 0xd3, 0xf3, + 0xfe, 0xf3, 0x00, 0xf4, 0x3a, 0xf4, 0x3a, 0xf4, 0x84, 0xf4, 0x85, 0xf4, + 0xdc, 0xf4, 0xde, 0xf4, 0x45, 0xf5, 0x44, 0xf5, 0xb5, 0xf5, 0xb6, 0xf5, + 0x3b, 0xf6, 0x3d, 0xf6, 0xc8, 0xf6, 0xc8, 0xf6, 0x5f, 0xf7, 0x62, 0xf7, + 0x07, 0xf8, 0x07, 0xf8, 0xaf, 0xf8, 0xb1, 0xf8, 0x6c, 0xf9, 0x6b, 0xf9, + 0x24, 0xfa, 0x24, 0xfa, 0xeb, 0xfa, 0xed, 0xfa, 0xb4, 0xfb, 0xb3, 0xfb, + 0x80, 0xfc, 0x80, 0xfc, 0x55, 0xfd, 0x55, 0xfd, 0x28, 0xfe, 0x28, 0xfe, + 0x01, 0xff, 0x01, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xae, 0x00, 0xae, 0x00, + 0x84, 0x01, 0x85, 0x01, 0x55, 0x02, 0x57, 0x02, 0x2a, 0x03, 0x29, 0x03, + 0xf5, 0x03, 0xf5, 0x03, 0xbf, 0x04, 0xbf, 0x04, 0x7f, 0x05, 0x80, 0x05, + 0x40, 0x06, 0x40, 0x06, 0xf5, 0x06, 0xf7, 0x06, 0xa5, 0x07, 0xa5, 0x07, + 0x4c, 0x08, 0x4c, 0x08, 0xe8, 0x08, 0xe7, 0x08, 0x7c, 0x09, 0x7f, 0x09, + 0x04, 0x0a, 0x03, 0x0a, 0x83, 0x0a, 0x84, 0x0a, 0xf4, 0x0a, 0xf4, 0x0a, + 0x5a, 0x0b, 0x5b, 0x0b, 0xb3, 0x0b, 0xb4, 0x0b, 0xfe, 0x0b, 0xfe, 0x0b, + 0x3b, 0x0c, 0x3a, 0x0c, 0x68, 0x0c, 0x6a, 0x0c, 0x8a, 0x0c, 0x89, 0x0c, + 0x9d, 0x0c, 0x9f, 0x0c, 0x9c, 0x0c, 0x9a, 0x0c, 0x8f, 0x0c, 0x92, 0x0c, + 0x72, 0x0c, 0x70, 0x0c, 0x44, 0x0c, 0x46, 0x0c, 0x06, 0x0c, 0x05, 0x0c, + 0xb9, 0x0b, 0xba, 0x0b, 0x5f, 0x0b, 0x5e, 0x0b, 0xf5, 0x0a, 0xf8, 0x0a, + 0x7f, 0x0a, 0x7d, 0x0a, 0xf9, 0x09, 0xfc, 0x09, 0x6d, 0x09, 0x6c, 0x09, + 0xd3, 0x08, 0xd3, 0x08, 0x2d, 0x08, 0x2f, 0x08, 0x81, 0x07, 0x80, 0x07, + 0xca, 0x06, 0xcb, 0x06, 0x0d, 0x06, 0x0d, 0x06, 0x4a, 0x05, 0x49, 0x05, + 0x7f, 0x04, 0x7f, 0x04, 0xb2, 0x03, 0xb3, 0x03, 0xe3, 0x02, 0xe2, 0x02, + 0x0f, 0x02, 0x10, 0x02, 0x3c, 0x01, 0x3c, 0x01, 0x66, 0x00, 0x66, 0x00, + 0x94, 0xff, 0x95, 0xff, 0xc0, 0xfe, 0xbf, 0xfe, 0xf2, 0xfd, 0xf2, 0xfd, + 0x23, 0xfd, 0x23, 0xfd, 0x5a, 0xfc, 0x5a, 0xfc, 0x94, 0xfb, 0x94, 0xfb, + 0xd5, 0xfa, 0xd4, 0xfa, 0x1d, 0xfa, 0x1c, 0xfa, 0x6a, 0xf9, 0x6a, 0xf9, + 0xc2, 0xf8, 0xc2, 0xf8, 0x1d, 0xf8, 0x1e, 0xf8, 0x85, 0xf7, 0x87, 0xf7, + 0xf6, 0xf6, 0xf5, 0xf6, 0x6f, 0xf6, 0x71, 0xf6, 0xfa, 0xf5, 0xf8, 0xf5, + 0x87, 0xf5, 0x8a, 0xf5, 0x28, 0xf5, 0x28, 0xf5, 0xd3, 0xf4, 0xd3, 0xf4, + 0x8b, 0xf4, 0x8b, 0xf4, 0x4f, 0xf4, 0x50, 0xf4, 0x21, 0xf4, 0x23, 0xf4, + 0x07, 0xf4, 0x05, 0xf4, 0xf6, 0xf3, 0xf9, 0xf3, 0xf9, 0xf3, 0xf8, 0xf3, + 0x04, 0xf4, 0x08, 0xf4, 0x27, 0xf4, 0x26, 0xf4, 0x53, 0xf4, 0x55, 0xf4, + 0x92, 0xf4, 0x94, 0xf4, 0xe0, 0xf4, 0xde, 0xf4, 0x38, 0xf5, 0x3a, 0xf5, + 0xa2, 0xf5, 0xa3, 0xf5, 0x1a, 0xf6, 0x1a, 0xf6, 0x9e, 0xf6, 0xa2, 0xf6, + 0x31, 0xf7, 0x2f, 0xf7, 0xc9, 0xf7, 0xcb, 0xf7, 0x72, 0xf8, 0x73, 0xf8, + 0x1d, 0xf9, 0x1f, 0xf9, 0xd6, 0xf9, 0xd9, 0xf9, 0x97, 0xfa, 0x96, 0xfa, + 0x57, 0xfb, 0x5b, 0xfb, 0x25, 0xfc, 0x25, 0xfc, 0xf1, 0xfc, 0xf3, 0xfc, + 0xc4, 0xfd, 0xc5, 0xfd, 0x99, 0xfe, 0x9b, 0xfe, 0x6e, 0xff, 0x6e, 0xff, + 0x45, 0x00, 0x48, 0x00, 0x19, 0x01, 0x19, 0x01, 0xee, 0x01, 0xf0, 0x01, + 0xbe, 0x02, 0xc1, 0x02, 0x8d, 0x03, 0x8d, 0x03, 0x58, 0x04, 0x5a, 0x04, + 0x1b, 0x05, 0x1c, 0x05, 0xde, 0x05, 0xdf, 0x05, 0x94, 0x06, 0x96, 0x06, + 0x49, 0x07, 0x49, 0x07, 0xf1, 0x07, 0xf5, 0x07, 0x93, 0x08, 0x92, 0x08, + 0x2b, 0x09, 0x2d, 0x09, 0xba, 0x09, 0xba, 0x09, 0x3b, 0x0a, 0x3d, 0x0a, + 0xb3, 0x0a, 0xb5, 0x0a, 0x1e, 0x0b, 0x20, 0x0b, 0x7e, 0x0b, 0x80, 0x0b, + 0xd0, 0x0b, 0xd0, 0x0b, 0x14, 0x0c, 0x16, 0x0c, 0x49, 0x0c, 0x49, 0x0c, + 0x72, 0x0c, 0x72, 0x0c, 0x89, 0x0c, 0x8c, 0x0c, 0x94, 0x0c, 0x94, 0x0c, + 0x8d, 0x0c, 0x8f, 0x0c, 0x79, 0x0c, 0x78, 0x0c, 0x53, 0x0c, 0x54, 0x0c, + 0x1d, 0x0c, 0x1f, 0x0c, 0xd9, 0x0b, 0xda, 0x0b, 0x87, 0x0b, 0x88, 0x0b, + 0x25, 0x0b, 0x24, 0x0b, 0xb5, 0x0a, 0xb7, 0x0a, 0x39, 0x0a, 0x39, 0x0a, + 0xaf, 0x09, 0xb0, 0x09, 0x1a, 0x09, 0x1b, 0x09, 0x7a, 0x08, 0x7b, 0x08, + 0xd3, 0x07, 0xd5, 0x07, 0x1e, 0x07, 0x1f, 0x07, 0x68, 0x06, 0x69, 0x06, + 0xa3, 0x05, 0xa5, 0x05, 0xdf, 0x04, 0xdd, 0x04, 0x0f, 0x04, 0x12, 0x04, + 0x40, 0x03, 0x41, 0x03, 0x6e, 0x02, 0x6f, 0x02, 0x96, 0x01, 0x97, 0x01, + 0xc2, 0x00, 0xc3, 0x00, 0xe9, 0xff, 0xec, 0xff, 0x16, 0xff, 0x16, 0xff, + 0x41, 0xfe, 0x42, 0xfe, 0x6e, 0xfd, 0x70, 0xfd, 0xa1, 0xfc, 0xa2, 0xfc, + 0xd4, 0xfb, 0xd6, 0xfb, 0x10, 0xfb, 0x13, 0xfb, 0x53, 0xfa, 0x53, 0xfa, + 0x97, 0xf9, 0x99, 0xf9, 0xe7, 0xf8, 0xe8, 0xf8, 0x3b, 0xf8, 0x3c, 0xf8, + 0x9c, 0xf7, 0x9d, 0xf7, 0x02, 0xf7, 0x04, 0xf7, 0x77, 0xf6, 0x77, 0xf6, + 0xf1, 0xf5, 0xf3, 0xf5, 0x7b, 0xf5, 0x7d, 0xf5, 0x10, 0xf5, 0x10, 0xf5, + 0xb0, 0xf4, 0xb2, 0xf4, 0x60, 0xf4, 0x61, 0xf4, 0x1b, 0xf4, 0x1d, 0xf4, + 0xe5, 0xf3, 0xe6, 0xf3, 0xbb, 0xf3, 0xbd, 0xf3, 0xa4, 0xf3, 0xa5, 0xf3, + 0x9a, 0xf3, 0x9b, 0xf3, 0xa0, 0xf3, 0xa1, 0xf3, 0xb8, 0xf3, 0xb7, 0xf3, + 0xdc, 0xf3, 0xde, 0xf3, 0x12, 0xf4, 0x12, 0xf4, 0x54, 0xf4, 0x56, 0xf4, + 0xa9, 0xf4, 0xa9, 0xf4, 0x08, 0xf5, 0x0a, 0xf5, 0x7a, 0xf5, 0x7a, 0xf5, + 0xf5, 0xf5, 0xf6, 0xf5, 0x7e, 0xf6, 0x81, 0xf6, 0x16, 0xf7, 0x15, 0xf7, + 0xb3, 0xf7, 0xb5, 0xf7, 0x5f, 0xf8, 0x5e, 0xf8, 0x0b, 0xf9, 0x0e, 0xf9, + 0xcb, 0xf9, 0xcc, 0xf9, 0x87, 0xfa, 0x89, 0xfa, 0x4f, 0xfb, 0x50, 0xfb, + 0x1b, 0xfc, 0x1c, 0xfc, 0xe6, 0xfc, 0xe9, 0xfc, 0xbc, 0xfd, 0xbc, 0xfd, + 0x8e, 0xfe, 0x91, 0xfe, 0x63, 0xff, 0x64, 0xff, 0x39, 0x00, 0x3a, 0x00, + 0x0b, 0x01, 0x0d, 0x01, 0xdd, 0x01, 0xde, 0x01, 0xab, 0x02, 0xae, 0x02, + 0x75, 0x03, 0x78, 0x03, 0x3f, 0x04, 0x40, 0x04, 0xfe, 0x04, 0x01, 0x05, + 0xbc, 0x05, 0xbd, 0x05, 0x70, 0x06, 0x72, 0x06, 0x1e, 0x07, 0x1f, 0x07, + 0xc2, 0x07, 0xc5, 0x07, 0x5f, 0x08, 0x60, 0x08, 0xf1, 0x08, 0xf4, 0x08, + 0x79, 0x09, 0x7c, 0x09, 0xfb, 0x09, 0xfc, 0x09, 0x69, 0x0a, 0x6d, 0x0a, + 0xd2, 0x0a, 0xd3, 0x0a, 0x2b, 0x0b, 0x2e, 0x0b, 0x79, 0x0b, 0x7a, 0x0b, + 0xb6, 0x0b, 0xb9, 0x0b, 0xe9, 0x0b, 0xea, 0x0b, 0x0a, 0x0c, 0x0d, 0x0c, + 0x1f, 0x0c, 0x20, 0x0c, 0x23, 0x0c, 0x26, 0x0c, 0x1a, 0x0c, 0x1b, 0x0c, + 0x01, 0x0c, 0x04, 0x0c, 0xd7, 0x0b, 0xd8, 0x0b, 0xa2, 0x0b, 0xa3, 0x0b, + 0x54, 0x0b, 0x57, 0x0b, 0x02, 0x0b, 0x03, 0x0b, 0x99, 0x0a, 0x9c, 0x0a, + 0x29, 0x0a, 0x28, 0x0a, 0xa7, 0x09, 0xa9, 0x09, 0x19, 0x09, 0x1a, 0x09, + 0x83, 0x08, 0x84, 0x08, 0xe0, 0x07, 0xe2, 0x07, 0x36, 0x07, 0x37, 0x07, + 0x80, 0x06, 0x82, 0x06, 0xc4, 0x05, 0xc4, 0x05, 0x00, 0x05, 0x01, 0x05, + 0x37, 0x04, 0x37, 0x04, 0x69, 0x03, 0x6b, 0x03, 0x95, 0x02, 0x96, 0x02, + 0xc2, 0x01, 0xc5, 0x01, 0xea, 0x00, 0xea, 0x00, 0x14, 0x00, 0x16, 0x00, + 0x3e, 0xff, 0x3e, 0xff, 0x65, 0xfe, 0x67, 0xfe, 0x95, 0xfd, 0x94, 0xfd, + 0xc1, 0xfc, 0xc3, 0xfc, 0xf3, 0xfb, 0xf5, 0xfb, 0x2b, 0xfb, 0x2b, 0xfb, + 0x65, 0xfa, 0x66, 0xfa, 0xac, 0xf9, 0xaa, 0xf9, 0xf0, 0xf8, 0xf2, 0xf8, + 0x46, 0xf8, 0x45, 0xf8, 0x9c, 0xf7, 0x9e, 0xf7, 0x02, 0xf7, 0xff, 0xf6, + 0x6b, 0xf6, 0x6d, 0xf6, 0xe1, 0xf5, 0xe3, 0xf5, 0x66, 0xf5, 0x64, 0xf5, + 0xf0, 0xf4, 0xf3, 0xf4, 0x8d, 0xf4, 0x8e, 0xf4, 0x35, 0xf4, 0x35, 0xf4, + 0xe9, 0xf3, 0xea, 0xf3, 0xaa, 0xf3, 0xad, 0xf3, 0x7d, 0xf3, 0x7e, 0xf3, + 0x5d, 0xf3, 0x5e, 0xf3, 0x4c, 0xf3, 0x4d, 0xf3, 0x4b, 0xf3, 0x4d, 0xf3, + 0x57, 0xf3, 0x5a, 0xf3, 0x79, 0xf3, 0x79, 0xf3, 0xa5, 0xf3, 0xa8, 0xf3, + 0xe6, 0xf3, 0xe8, 0xf3, 0x31, 0xf4, 0x32, 0xf4, 0x8c, 0xf4, 0x8f, 0xf4, + 0xf8, 0xf4, 0xf6, 0xf4, 0x6c, 0xf5, 0x6e, 0xf5, 0xf1, 0xf5, 0xf1, 0xf5, + 0x82, 0xf6, 0x82, 0xf6, 0x1b, 0xf7, 0x1d, 0xf7, 0xc1, 0xf7, 0xc2, 0xf7, + 0x6e, 0xf8, 0x6f, 0xf8, 0x25, 0xf9, 0x29, 0xf9, 0xe4, 0xf9, 0xe4, 0xf9, + 0xa8, 0xfa, 0xad, 0xfa, 0x73, 0xfb, 0x72, 0xfb, 0x3f, 0xfc, 0x40, 0xfc, + 0x12, 0xfd, 0x14, 0xfd, 0xe6, 0xfd, 0xe6, 0xfd, 0xba, 0xfe, 0xbc, 0xfe, + 0x93, 0xff, 0x94, 0xff, 0x67, 0x00, 0x68, 0x00, 0x3b, 0x01, 0x3c, 0x01, + 0x0e, 0x02, 0x0f, 0x02, 0xdb, 0x02, 0xdd, 0x02, 0xa9, 0x03, 0xa9, 0x03, + 0x6c, 0x04, 0x6e, 0x04, 0x30, 0x05, 0x31, 0x05, 0xea, 0x05, 0xe9, 0x05, + 0x9d, 0x06, 0x9f, 0x06, 0x4a, 0x07, 0x4a, 0x07, 0xed, 0x07, 0xef, 0x07, + 0x89, 0x08, 0x8b, 0x08, 0x1c, 0x09, 0x1b, 0x09, 0x9f, 0x09, 0xa1, 0x09, + 0x1f, 0x0a, 0x1f, 0x0a, 0x8b, 0x0a, 0x8e, 0x0a, 0xf3, 0x0a, 0xf2, 0x0a, + 0x47, 0x0b, 0x49, 0x0b, 0x91, 0x0b, 0x91, 0x0b, 0xcd, 0x0b, 0xcc, 0x0b, + 0xf7, 0x0b, 0xfb, 0x0b, 0x1b, 0x0c, 0x1a, 0x0c, 0x26, 0x0c, 0x29, 0x0c, + 0x2b, 0x0c, 0x2c, 0x0c, 0x1b, 0x0c, 0x1d, 0x0c, 0xfe, 0x0b, 0x00, 0x0c, + 0xd1, 0x0b, 0xd3, 0x0b, 0x92, 0x0b, 0x93, 0x0b, 0x48, 0x0b, 0x4a, 0x0b, + 0xea, 0x0a, 0xea, 0x0a, 0x81, 0x0a, 0x83, 0x0a, 0x0a, 0x0a, 0x0b, 0x0a, + 0x88, 0x09, 0x87, 0x09, 0xf6, 0x08, 0xf8, 0x08, 0x5d, 0x08, 0x5d, 0x08, + 0xb8, 0x07, 0xb9, 0x07, 0x09, 0x07, 0x09, 0x07, 0x52, 0x06, 0x53, 0x06, + 0x93, 0x05, 0x91, 0x05, 0xce, 0x04, 0xcf, 0x04, 0x04, 0x04, 0x06, 0x04, + 0x36, 0x03, 0x35, 0x03, 0x61, 0x02, 0x65, 0x02, 0x91, 0x01, 0x8e, 0x01, + 0xb8, 0x00, 0xbb, 0x00, 0xe5, 0xff, 0xe7, 0xff, 0x0f, 0xff, 0x0f, 0xff, + 0x3c, 0xfe, 0x3d, 0xfe, 0x6a, 0xfd, 0x6c, 0xfd, 0x9e, 0xfc, 0x9d, 0xfc, + 0xd3, 0xfb, 0xd5, 0xfb, 0x0e, 0xfb, 0x0e, 0xfb, 0x4e, 0xfa, 0x4e, 0xfa, + 0x95, 0xf9, 0x97, 0xf9, 0xe2, 0xf8, 0xe2, 0xf8, 0x3b, 0xf8, 0x3b, 0xf8, + 0x98, 0xf7, 0x99, 0xf7, 0x01, 0xf7, 0x02, 0xf7, 0x73, 0xf6, 0x74, 0xf6, + 0xf1, 0xf5, 0xf0, 0xf5, 0x7b, 0xf5, 0x7a, 0xf5, 0x0e, 0xf5, 0x0f, 0xf5, + 0xaf, 0xf4, 0xae, 0xf4, 0x5d, 0xf4, 0x5f, 0xf4, 0x17, 0xf4, 0x18, 0xf4, + 0xe2, 0xf3, 0xe2, 0xf3, 0xb9, 0xf3, 0xbc, 0xf3, 0xa2, 0xf3, 0xa1, 0xf3, + 0x96, 0xf3, 0x97, 0xf3, 0x9d, 0xf3, 0x9e, 0xf3, 0xb0, 0xf3, 0xb0, 0xf3, + 0xd5, 0xf3, 0xd8, 0xf3, 0x09, 0xf4, 0x09, 0xf4, 0x4c, 0xf4, 0x4e, 0xf4, + 0x9e, 0xf4, 0xa1, 0xf4, 0x00, 0xf5, 0xff, 0xf4, 0x6c, 0xf5, 0x70, 0xf5, + 0xea, 0xf5, 0xea, 0xf5, 0x73, 0xf6, 0x75, 0xf6, 0x07, 0xf7, 0x09, 0xf7, + 0xa7, 0xf7, 0xa8, 0xf7, 0x4f, 0xf8, 0x52, 0xf8, 0x05, 0xf9, 0x04, 0xf9, + 0xbd, 0xf9, 0xc0, 0xf9, 0x81, 0xfa, 0x82, 0xfa, 0x47, 0xfb, 0x49, 0xfb, + 0x15, 0xfc, 0x16, 0xfc, 0xe6, 0xfc, 0xe8, 0xfc, 0xba, 0xfd, 0xbb, 0xfd, + 0x92, 0xfe, 0x94, 0xfe, 0x68, 0xff, 0x69, 0xff, 0x41, 0x00, 0x42, 0x00, + 0x19, 0x01, 0x1c, 0x01, 0xec, 0x01, 0xed, 0x01, 0xc2, 0x02, 0xc4, 0x02, + 0x8f, 0x03, 0x92, 0x03, 0x5d, 0x04, 0x5e, 0x04, 0x25, 0x05, 0x27, 0x05, + 0xe4, 0x05, 0xe6, 0x05, 0xa1, 0x06, 0xa3, 0x06, 0x52, 0x07, 0x52, 0x07, + 0xfe, 0x07, 0x00, 0x08, 0xa1, 0x08, 0x9f, 0x08, 0x39, 0x09, 0x3b, 0x09, + 0xc6, 0x09, 0xc8, 0x09, 0x4b, 0x0a, 0x4e, 0x0a, 0xc1, 0x0a, 0xc3, 0x0a, + 0x2d, 0x0b, 0x2f, 0x0b, 0x8e, 0x0b, 0x90, 0x0b, 0xdf, 0x0b, 0xe1, 0x0b, + 0x23, 0x0c, 0x24, 0x0c, 0x59, 0x0c, 0x5b, 0x0c, 0x81, 0x0c, 0x82, 0x0c, + 0x98, 0x0c, 0x9b, 0x0c, 0xa3, 0x0c, 0xa2, 0x0c, 0x99, 0x0c, 0x9b, 0x0c, + 0x85, 0x0c, 0x86, 0x0c, 0x5d, 0x0c, 0x5f, 0x0c, 0x27, 0x0c, 0x29, 0x0c, + 0xe1, 0x0b, 0xe3, 0x0b, 0x8c, 0x0b, 0x8e, 0x0b, 0x28, 0x0b, 0x2a, 0x0b, + 0xb9, 0x0a, 0xba, 0x0a, 0x39, 0x0a, 0x3b, 0x0a, 0xaf, 0x09, 0xb1, 0x09, + 0x1a, 0x09, 0x1a, 0x09, 0x79, 0x08, 0x7c, 0x08, 0xcf, 0x07, 0xd0, 0x07, + 0x1d, 0x07, 0x20, 0x07, 0x60, 0x06, 0x62, 0x06, 0x9f, 0x05, 0x9f, 0x05, + 0xd9, 0x04, 0xdc, 0x04, 0x0b, 0x04, 0x0b, 0x04, 0x3e, 0x03, 0x3f, 0x03, + 0x67, 0x02, 0x68, 0x02, 0x94, 0x01, 0x96, 0x01, 0xc0, 0x00, 0xc1, 0x00, + 0xe9, 0xff, 0xea, 0xff, 0x17, 0xff, 0x19, 0xff, 0x41, 0xfe, 0x43, 0xfe, + 0x75, 0xfd, 0x75, 0xfd, 0xa7, 0xfc, 0xaa, 0xfc, 0xe0, 0xfb, 0xe0, 0xfb, + 0x1d, 0xfb, 0x20, 0xfb, 0x62, 0xfa, 0x62, 0xfa, 0xaa, 0xf9, 0xac, 0xf9, + 0xfc, 0xf8, 0xfe, 0xf8, 0x56, 0xf8, 0x56, 0xf8, 0xb8, 0xf7, 0xbb, 0xf7, + 0x24, 0xf7, 0x23, 0xf7, 0x98, 0xf6, 0x9c, 0xf6, 0x1a, 0xf6, 0x1a, 0xf6, + 0xa7, 0xf5, 0xa8, 0xf5, 0x3f, 0xf5, 0x41, 0xf5, 0xe4, 0xf4, 0xe6, 0xf4, + 0x98, 0xf4, 0x98, 0xf4, 0x55, 0xf4, 0x58, 0xf4, 0x23, 0xf4, 0x23, 0xf4, + 0x00, 0xf4, 0x03, 0xf4, 0xe8, 0xf3, 0xea, 0xf3, 0xe7, 0xf3, 0xe7, 0xf3, + 0xed, 0xf3, 0xf0, 0xf3, 0x06, 0xf4, 0x07, 0xf4, 0x31, 0xf4, 0x32, 0xf4, + 0x64, 0xf4, 0x67, 0xf4, 0xb0, 0xf4, 0xaf, 0xf4, 0x02, 0xf5, 0x04, 0xf5, + 0x67, 0xf5, 0x6a, 0xf5, 0xda, 0xf5, 0xd9, 0xf5, 0x58, 0xf6, 0x5a, 0xf6, + 0xe5, 0xf6, 0xe6, 0xf6, 0x7e, 0xf7, 0x7e, 0xf7, 0x1e, 0xf8, 0x20, 0xf8, + 0xcb, 0xf8, 0xcb, 0xf8, 0x7f, 0xf9, 0x83, 0xf9, 0x3d, 0xfa, 0x3b, 0xfa, + 0xff, 0xfa, 0x02, 0xfb, 0xc7, 0xfb, 0xc7, 0xfb, 0x96, 0xfc, 0x98, 0xfc, + 0x69, 0xfd, 0x69, 0xfd, 0x3d, 0xfe, 0x3e, 0xfe, 0x12, 0xff, 0x13, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xc0, 0x00, 0xc3, 0x00, 0x98, 0x01, 0x98, 0x01, + 0x6b, 0x02, 0x6d, 0x02, 0x3b, 0x03, 0x3c, 0x03, 0x09, 0x04, 0x0b, 0x04, + 0xd0, 0x04, 0xd3, 0x04, 0x97, 0x05, 0x97, 0x05, 0x52, 0x06, 0x54, 0x06, + 0x0a, 0x07, 0x0a, 0x07, 0xb8, 0x07, 0xb9, 0x07, 0x5d, 0x08, 0x5e, 0x08, + 0xfd, 0x08, 0xfe, 0x08, 0x8b, 0x09, 0x8c, 0x09, 0x18, 0x0a, 0x19, 0x0a, + 0x90, 0x0a, 0x90, 0x0a, 0x06, 0x0b, 0x09, 0x0b, 0x69, 0x0b, 0x68, 0x0b, + 0xbf, 0x0b, 0xc1, 0x0b, 0x0c, 0x0c, 0x0c, 0x0c, 0x44, 0x0c, 0x46, 0x0c, + 0x76, 0x0c, 0x77, 0x0c, 0x92, 0x0c, 0x95, 0x0c, 0xa4, 0x0c, 0xa4, 0x0c, + 0xa3, 0x0c, 0xa6, 0x0c, 0x94, 0x0c, 0x95, 0x0c, 0x77, 0x0c, 0x79, 0x0c, + 0x47, 0x0c, 0x48, 0x0c, 0x0b, 0x0c, 0x0d, 0x0c, 0xbb, 0x0b, 0xbb, 0x0b, + 0x60, 0x0b, 0x61, 0x0b, 0xf6, 0x0a, 0xf8, 0x0a, 0x7c, 0x0a, 0x7d, 0x0a, + 0xf8, 0x09, 0xfa, 0x09, 0x66, 0x09, 0x68, 0x09, 0xcd, 0x08, 0xcc, 0x08, + 0x27, 0x08, 0x29, 0x08, 0x76, 0x07, 0x78, 0x07, 0xc0, 0x06, 0xc2, 0x06, + 0xfe, 0x05, 0x00, 0x06, 0x3a, 0x05, 0x3c, 0x05, 0x6e, 0x04, 0x70, 0x04, + 0x9f, 0x03, 0xa1, 0x03, 0xcc, 0x02, 0xcd, 0x02, 0xf6, 0x01, 0xf7, 0x01, + 0x21, 0x01, 0x23, 0x01, 0x48, 0x00, 0x49, 0x00, 0x72, 0xff, 0x72, 0xff, + 0x9c, 0xfe, 0x9e, 0xfe, 0xc8, 0xfd, 0xc8, 0xfd, 0xf8, 0xfc, 0xf9, 0xfc, + 0x2c, 0xfc, 0x2d, 0xfc, 0x61, 0xfb, 0x63, 0xfb, 0xa2, 0xfa, 0xa2, 0xfa, + 0xe1, 0xf9, 0xe3, 0xf9, 0x30, 0xf9, 0x2f, 0xf9, 0x7f, 0xf8, 0x81, 0xf8, + 0xda, 0xf7, 0xdb, 0xf7, 0x3f, 0xf7, 0x3f, 0xf7, 0xad, 0xf6, 0xad, 0xf6, + 0x26, 0xf6, 0x26, 0xf6, 0xa7, 0xf5, 0xa7, 0xf5, 0x3a, 0xf5, 0x3b, 0xf5, + 0xd3, 0xf4, 0xd2, 0xf4, 0x7d, 0xf4, 0x7e, 0xf4, 0x32, 0xf4, 0x33, 0xf4, + 0xf5, 0xf3, 0xf5, 0xf3, 0xca, 0xf3, 0xc9, 0xf3, 0xa9, 0xf3, 0xab, 0xf3, + 0x9e, 0xf3, 0x9b, 0xf3, 0x99, 0xf3, 0x9b, 0xf3, 0xac, 0xf3, 0xab, 0xf3, + 0xc8, 0xf3, 0xc9, 0xf3, 0xfa, 0xf3, 0xf9, 0xf3, 0x35, 0xf4, 0x36, 0xf4, + 0x85, 0xf4, 0x85, 0xf4, 0xe2, 0xf4, 0xe2, 0xf4, 0x4a, 0xf5, 0x49, 0xf5, + 0xc4, 0xf5, 0xc3, 0xf5, 0x45, 0xf6, 0x49, 0xf6, 0xda, 0xf6, 0xd9, 0xf6, + 0x75, 0xf7, 0x77, 0xf7, 0x1a, 0xf8, 0x1b, 0xf8, 0xca, 0xf8, 0xca, 0xf8, + 0x81, 0xf9, 0x83, 0xf9, 0x40, 0xfa, 0x40, 0xfa, 0x04, 0xfb, 0x05, 0xfb, + 0xcd, 0xfb, 0xce, 0xfb, 0x9d, 0xfc, 0x9d, 0xfc, 0x6e, 0xfd, 0x6e, 0xfd, + 0x42, 0xfe, 0x43, 0xfe, 0x19, 0xff, 0x18, 0xff, 0xed, 0xff, 0xef, 0xff, + 0xc4, 0x00, 0xc3, 0x00, 0x95, 0x01, 0x95, 0x01, 0x67, 0x02, 0x67, 0x02, + 0x34, 0x03, 0x35, 0x03, 0xfe, 0x03, 0xff, 0x03, 0xc2, 0x04, 0xc2, 0x04, + 0x81, 0x05, 0x82, 0x05, 0x3b, 0x06, 0x3a, 0x06, 0xe9, 0x06, 0xea, 0x06, + 0x95, 0x07, 0x95, 0x07, 0x34, 0x08, 0x34, 0x08, 0xcb, 0x08, 0xcd, 0x08, + 0x59, 0x09, 0x59, 0x09, 0xdc, 0x09, 0xdc, 0x09, 0x54, 0x0a, 0x53, 0x0a, + 0xbf, 0x0a, 0xc0, 0x0a, 0x1c, 0x0b, 0x1d, 0x0b, 0x6f, 0x0b, 0x71, 0x0b, + 0xb4, 0x0b, 0xb1, 0x0b, 0xe9, 0x0b, 0xeb, 0x0b, 0x12, 0x0c, 0x11, 0x0c, + 0x2a, 0x0c, 0x2a, 0x0c, 0x34, 0x0c, 0x35, 0x0c, 0x32, 0x0c, 0x30, 0x0c, + 0x19, 0x0c, 0x1d, 0x0c, 0xfb, 0x0b, 0xf8, 0x0b, 0xc5, 0x0b, 0xc7, 0x0b, + 0x82, 0x0b, 0x81, 0x0b, 0x32, 0x0b, 0x32, 0x0b, 0xd0, 0x0a, 0xd1, 0x0a, + 0x60, 0x0a, 0x61, 0x0a, 0xe9, 0x09, 0xea, 0x09, 0x5c, 0x09, 0x5c, 0x09, + 0xcb, 0x08, 0xcb, 0x08, 0x2a, 0x08, 0x2a, 0x08, 0x82, 0x07, 0x83, 0x07, + 0xd0, 0x06, 0xd0, 0x06, 0x14, 0x06, 0x15, 0x06, 0x54, 0x05, 0x55, 0x05, + 0x8c, 0x04, 0x8c, 0x04, 0xbe, 0x03, 0xc0, 0x03, 0xec, 0x02, 0xeb, 0x02, + 0x18, 0x02, 0x1a, 0x02, 0x40, 0x01, 0x40, 0x01, 0x6a, 0x00, 0x6a, 0x00, + 0x90, 0xff, 0x93, 0xff, 0xbc, 0xfe, 0xbb, 0xfe, 0xe4, 0xfd, 0xe6, 0xfd, + 0x13, 0xfd, 0x14, 0xfd, 0x41, 0xfc, 0x40, 0xfc, 0x77, 0xfb, 0x79, 0xfb, + 0xb2, 0xfa, 0xb2, 0xfa, 0xef, 0xf9, 0xf0, 0xf9, 0x37, 0xf9, 0x38, 0xf9, + 0x81, 0xf8, 0x82, 0xf8, 0xdb, 0xf7, 0xdc, 0xf7, 0x36, 0xf7, 0x37, 0xf7, + 0xa0, 0xf6, 0xa1, 0xf6, 0x13, 0xf6, 0x13, 0xf6, 0x90, 0xf5, 0x90, 0xf5, + 0x1b, 0xf5, 0x1c, 0xf5, 0xaf, 0xf4, 0xae, 0xf4, 0x51, 0xf4, 0x51, 0xf4, + 0x00, 0xf4, 0x01, 0xf4, 0xbe, 0xf3, 0xbd, 0xf3, 0x8b, 0xf3, 0x8c, 0xf3, + 0x64, 0xf3, 0x62, 0xf3, 0x50, 0xf3, 0x51, 0xf3, 0x46, 0xf3, 0x47, 0xf3, + 0x51, 0xf3, 0x52, 0xf3, 0x6a, 0xf3, 0x6a, 0xf3, 0x93, 0xf3, 0x91, 0xf3, + 0xcb, 0xf3, 0xcd, 0xf3, 0x12, 0xf4, 0x12, 0xf4, 0x67, 0xf4, 0x67, 0xf4, + 0xcd, 0xf4, 0xcd, 0xf4, 0x3c, 0xf5, 0x3c, 0xf5, 0xbe, 0xf5, 0xc0, 0xf5, + 0x49, 0xf6, 0x46, 0xf6, 0xde, 0xf6, 0xe1, 0xf6, 0x82, 0xf7, 0x81, 0xf7, + 0x2b, 0xf8, 0x2d, 0xf8, 0xe1, 0xf8, 0xe2, 0xf8, 0x9c, 0xf9, 0x9c, 0xf9, + 0x5f, 0xfa, 0x60, 0xfa, 0x27, 0xfb, 0x26, 0xfb, 0xf1, 0xfb, 0xf3, 0xfb, + 0xc5, 0xfc, 0xc5, 0xfc, 0x96, 0xfd, 0x97, 0xfd, 0x6b, 0xfe, 0x6d, 0xfe, + 0x43, 0xff, 0x43, 0xff, 0x17, 0x00, 0x18, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0xbe, 0x01, 0xc1, 0x01, 0x92, 0x02, 0x92, 0x02, 0x5d, 0x03, 0x5f, 0x03, + 0x26, 0x04, 0x23, 0x04, 0xec, 0x04, 0xee, 0x04, 0xa4, 0x05, 0xa3, 0x05, + 0x5f, 0x06, 0x60, 0x06, 0x0b, 0x07, 0x0b, 0x07, 0xb2, 0x07, 0xb2, 0x07, + 0x52, 0x08, 0x52, 0x08, 0xe4, 0x08, 0xe5, 0x08, 0x72, 0x09, 0x71, 0x09, + 0xee, 0x09, 0xee, 0x09, 0x64, 0x0a, 0x64, 0x0a, 0xcc, 0x0a, 0xcc, 0x0a, + 0x27, 0x0b, 0x26, 0x0b, 0x75, 0x0b, 0x76, 0x0b, 0xb3, 0x0b, 0xb2, 0x0b, + 0xe7, 0x0b, 0xe8, 0x0b, 0x07, 0x0c, 0x07, 0x0c, 0x1e, 0x0c, 0x1e, 0x0c, + 0x24, 0x0c, 0x24, 0x0c, 0x1b, 0x0c, 0x1a, 0x0c, 0x04, 0x0c, 0x04, 0x0c, + 0xd9, 0x0b, 0xd9, 0x0b, 0xa4, 0x0b, 0xa2, 0x0b, 0x5a, 0x0b, 0x5e, 0x0b, + 0x06, 0x0b, 0x04, 0x0b, 0xa2, 0x0a, 0xa4, 0x0a, 0x2d, 0x0a, 0x2c, 0x0a, + 0xae, 0x09, 0xb0, 0x09, 0x21, 0x09, 0x21, 0x09, 0x8b, 0x08, 0x8b, 0x08, + 0xeb, 0x07, 0xea, 0x07, 0x3d, 0x07, 0x3e, 0x07, 0x8c, 0x06, 0x8b, 0x06, + 0xcd, 0x05, 0xce, 0x05, 0x0d, 0x05, 0x0d, 0x05, 0x41, 0x04, 0x42, 0x04, + 0x77, 0x03, 0x78, 0x03, 0xa5, 0x02, 0xa4, 0x02, 0xd1, 0x01, 0xd2, 0x01, + 0xfd, 0x00, 0xfe, 0x00, 0x25, 0x00, 0x23, 0x00, 0x53, 0xff, 0x55, 0xff, + 0x7c, 0xfe, 0x7b, 0xfe, 0xaa, 0xfd, 0xab, 0xfd, 0xde, 0xfc, 0xdc, 0xfc, + 0x0b, 0xfc, 0x0d, 0xfc, 0x4a, 0xfb, 0x4a, 0xfb, 0x84, 0xfa, 0x86, 0xfa, + 0xcc, 0xf9, 0xcc, 0xf9, 0x17, 0xf9, 0x18, 0xf9, 0x68, 0xf8, 0x6a, 0xf8, + 0xc9, 0xf7, 0xc8, 0xf7, 0x28, 0xf7, 0x2a, 0xf7, 0x9e, 0xf6, 0x9b, 0xf6, + 0x12, 0xf6, 0x15, 0xf6, 0x9a, 0xf5, 0x98, 0xf5, 0x29, 0xf5, 0x2b, 0xf5, + 0xc8, 0xf4, 0xc6, 0xf4, 0x70, 0xf4, 0x71, 0xf4, 0x28, 0xf4, 0x29, 0xf4, + 0xee, 0xf3, 0xee, 0xf3, 0xc1, 0xf3, 0xc2, 0xf3, 0xa3, 0xf3, 0xa4, 0xf3, + 0x92, 0xf3, 0x95, 0xf3, 0x95, 0xf3, 0x94, 0xf3, 0xa2, 0xf3, 0xa5, 0xf3, + 0xc5, 0xf3, 0xc4, 0xf3, 0xf2, 0xf3, 0xf5, 0xf3, 0x33, 0xf4, 0x33, 0xf4, + 0x7f, 0xf4, 0x81, 0xf4, 0xdb, 0xf4, 0xdb, 0xf4, 0x48, 0xf5, 0x48, 0xf5, + 0xbc, 0xf5, 0xbd, 0xf5, 0x42, 0xf6, 0x43, 0xf6, 0xd2, 0xf6, 0xd3, 0xf6, + 0x6d, 0xf7, 0x6f, 0xf7, 0x15, 0xf8, 0x16, 0xf8, 0xc3, 0xf8, 0xc3, 0xf8, + 0x7d, 0xf9, 0x7e, 0xf9, 0x3a, 0xfa, 0x3b, 0xfa, 0x00, 0xfb, 0x02, 0xfb, + 0xcb, 0xfb, 0xcd, 0xfb, 0x9b, 0xfc, 0x9c, 0xfc, 0x6d, 0xfd, 0x6f, 0xfd, + 0x42, 0xfe, 0x43, 0xfe, 0x1a, 0xff, 0x1b, 0xff, 0xf0, 0xff, 0xf4, 0xff, + 0xc8, 0x00, 0xc9, 0x00, 0x9f, 0x01, 0x9f, 0x01, 0x70, 0x02, 0x73, 0x02, + 0x43, 0x03, 0x44, 0x03, 0x0f, 0x04, 0x10, 0x04, 0xd8, 0x04, 0xd9, 0x04, + 0x9b, 0x05, 0x9c, 0x05, 0x55, 0x06, 0x55, 0x06, 0x0b, 0x07, 0x0e, 0x07, + 0xbb, 0x07, 0xb8, 0x07, 0x5c, 0x08, 0x5f, 0x08, 0xf9, 0x08, 0xf9, 0x08, + 0x89, 0x09, 0x8a, 0x09, 0x0f, 0x0a, 0x10, 0x0a, 0x8b, 0x0a, 0x8c, 0x0a, + 0xfa, 0x0a, 0xfc, 0x0a, 0x5e, 0x0b, 0x5d, 0x0b, 0xb2, 0x0b, 0xb7, 0x0b, + 0xfb, 0x0b, 0xf9, 0x0b, 0x36, 0x0c, 0x39, 0x0c, 0x60, 0x0c, 0x5f, 0x0c, + 0x7d, 0x0c, 0x7f, 0x0c, 0x8a, 0x0c, 0x8b, 0x0c, 0x89, 0x0c, 0x89, 0x0c, + 0x78, 0x0c, 0x79, 0x0c, 0x56, 0x0c, 0x56, 0x0c, 0x26, 0x0c, 0x28, 0x0c, + 0xe4, 0x0b, 0xe5, 0x0b, 0x95, 0x0b, 0x96, 0x0b, 0x36, 0x0b, 0x36, 0x0b, + 0xc9, 0x0a, 0xcc, 0x0a, 0x51, 0x0a, 0x4f, 0x0a, 0xca, 0x09, 0xcc, 0x09, + 0x3a, 0x09, 0x3a, 0x09, 0x9d, 0x08, 0x9e, 0x08, 0xf7, 0x07, 0xf7, 0x07, + 0x48, 0x07, 0x49, 0x07, 0x91, 0x06, 0x90, 0x06, 0xd1, 0x05, 0xd4, 0x05, + 0x0d, 0x05, 0x0c, 0x05, 0x44, 0x04, 0x43, 0x04, 0x72, 0x03, 0x74, 0x03, + 0xa7, 0x02, 0xa4, 0x02, 0xcd, 0x01, 0xcf, 0x01, 0xfc, 0x00, 0xfb, 0x00, + 0x27, 0x00, 0x27, 0x00, 0x50, 0xff, 0x52, 0xff, 0x85, 0xfe, 0x83, 0xfe, + 0xaf, 0xfd, 0xb1, 0xfd, 0xe6, 0xfc, 0xe6, 0xfc, 0x1c, 0xfc, 0x1b, 0xfc, + 0x56, 0xfb, 0x57, 0xfb, 0x9d, 0xfa, 0x9c, 0xfa, 0xe2, 0xf9, 0xe5, 0xf9, + 0x34, 0xf9, 0x34, 0xf9, 0x8a, 0xf8, 0x8b, 0xf8, 0xea, 0xf7, 0xeb, 0xf7, + 0x56, 0xf7, 0x57, 0xf7, 0xc9, 0xf6, 0xc9, 0xf6, 0x47, 0xf6, 0x47, 0xf6, + 0xd1, 0xf5, 0xd0, 0xf5, 0x66, 0xf5, 0x67, 0xf5, 0x08, 0xf5, 0x08, 0xf5, + 0xb9, 0xf4, 0xb8, 0xf4, 0x74, 0xf4, 0x75, 0xf4, 0x3e, 0xf4, 0x3e, 0xf4, + 0x15, 0xf4, 0x18, 0xf4, 0xff, 0xf3, 0xfe, 0xf3, 0xf3, 0xf3, 0xf4, 0xf3, + 0xf9, 0xf3, 0xf8, 0xf3, 0x0a, 0xf4, 0x0d, 0xf4, 0x31, 0xf4, 0x31, 0xf4, + 0x63, 0xf4, 0x64, 0xf4, 0xa5, 0xf4, 0xa5, 0xf4, 0xf8, 0xf4, 0xf8, 0xf4, + 0x56, 0xf5, 0x56, 0xf5, 0xc5, 0xf5, 0xc5, 0xf5, 0x40, 0xf6, 0x41, 0xf6, + 0xc6, 0xf6, 0xc5, 0xf6, 0x5c, 0xf7, 0x5d, 0xf7, 0xf5, 0xf7, 0xf5, 0xf7, + 0xa3, 0xf8, 0xa4, 0xf8, 0x51, 0xf9, 0x51, 0xf9, 0x0e, 0xfa, 0x0e, 0xfa, + 0xcc, 0xfa, 0xcd, 0xfa, 0x92, 0xfb, 0x92, 0xfb, 0x61, 0xfc, 0x63, 0xfc, + 0x2d, 0xfd, 0x2b, 0xfd, 0x01, 0xfe, 0x03, 0xfe, 0xd6, 0xfe, 0xd4, 0xfe, + 0xac, 0xff, 0xac, 0xff, 0x83, 0x00, 0x84, 0x00, 0x54, 0x01, 0x55, 0x01, + 0x2c, 0x02, 0x2e, 0x02, 0xfc, 0x02, 0xfa, 0x02, 0xca, 0x03, 0xcc, 0x03, + 0x95, 0x04, 0x93, 0x04, 0x55, 0x05, 0x57, 0x05, 0x16, 0x06, 0x16, 0x06, + 0xcd, 0x06, 0xcd, 0x06, 0x7d, 0x07, 0x7e, 0x07, 0x26, 0x08, 0x25, 0x08, + 0xc3, 0x08, 0xc6, 0x08, 0x5b, 0x09, 0x5b, 0x09, 0xe3, 0x09, 0xe4, 0x09, + 0x66, 0x0a, 0x65, 0x0a, 0xd6, 0x0a, 0xd9, 0x0a, 0x42, 0x0b, 0x41, 0x0b, + 0x9c, 0x0b, 0x9e, 0x0b, 0xe8, 0x0b, 0xea, 0x0b, 0x2a, 0x0c, 0x29, 0x0c, + 0x58, 0x0c, 0x5c, 0x0c, 0x7f, 0x0c, 0x7f, 0x0c, 0x91, 0x0c, 0x93, 0x0c, + 0x94, 0x0c, 0x97, 0x0c, 0x8b, 0x0c, 0x8a, 0x0c, 0x71, 0x0c, 0x73, 0x0c, + 0x47, 0x0c, 0x46, 0x0c, 0x0e, 0x0c, 0x10, 0x0c, 0xc4, 0x0b, 0xc4, 0x0b, + 0x6e, 0x0b, 0x6e, 0x0b, 0x07, 0x0b, 0x09, 0x0b, 0x94, 0x0a, 0x95, 0x0a, + 0x16, 0x0a, 0x16, 0x0a, 0x86, 0x09, 0x86, 0x09, 0xf2, 0x08, 0xf2, 0x08, + 0x4d, 0x08, 0x4f, 0x08, 0xa4, 0x07, 0xa4, 0x07, 0xf3, 0x06, 0xf2, 0x06, + 0x34, 0x06, 0x34, 0x06, 0x73, 0x05, 0x75, 0x05, 0xa9, 0x04, 0xa9, 0x04, + 0xdb, 0x03, 0xdc, 0x03, 0x0d, 0x03, 0x0e, 0x03, 0x37, 0x02, 0x37, 0x02, + 0x64, 0x01, 0x66, 0x01, 0x8b, 0x00, 0x8c, 0x00, 0xb8, 0xff, 0xb8, 0xff, + 0xe3, 0xfe, 0xe3, 0xfe, 0x0f, 0xfe, 0x0f, 0xfe, 0x42, 0xfd, 0x43, 0xfd, + 0x70, 0xfc, 0x72, 0xfc, 0xae, 0xfb, 0xac, 0xfb, 0xe4, 0xfa, 0xe8, 0xfa, + 0x2d, 0xfa, 0x2b, 0xfa, 0x74, 0xf9, 0x76, 0xf9, 0xc5, 0xf8, 0xc6, 0xf8, + 0x21, 0xf8, 0x22, 0xf8, 0x82, 0xf7, 0x82, 0xf7, 0xed, 0xf6, 0xee, 0xf6, + 0x64, 0xf6, 0x64, 0xf6, 0xe4, 0xf5, 0xe7, 0xf5, 0x73, 0xf5, 0x73, 0xf5, + 0x09, 0xf5, 0x0a, 0xf5, 0xb2, 0xf4, 0xb3, 0xf4, 0x64, 0xf4, 0x63, 0xf4, + 0x25, 0xf4, 0x26, 0xf4, 0xf3, 0xf3, 0xf5, 0xf3, 0xd3, 0xf3, 0xd2, 0xf3, + 0xbc, 0xf3, 0xbf, 0xf3, 0xbb, 0xf3, 0xbc, 0xf3, 0xc3, 0xf3, 0xc4, 0xf3, + 0xe1, 0xf3, 0xe1, 0xf3, 0x07, 0xf4, 0x09, 0xf4, 0x46, 0xf4, 0x45, 0xf4, + 0x89, 0xf4, 0x8e, 0xf4, 0xe6, 0xf4, 0xe3, 0xf4, 0x47, 0xf5, 0x4b, 0xf5, + 0xba, 0xf5, 0xba, 0xf5, 0x3c, 0xf6, 0x3d, 0xf6, 0xc6, 0xf6, 0xc6, 0xf6, + 0x5f, 0xf7, 0x60, 0xf7, 0xff, 0xf7, 0x00, 0xf8, 0xac, 0xf8, 0xad, 0xf8, + 0x61, 0xf9, 0x62, 0xf9, 0x1b, 0xfa, 0x1a, 0xfa, 0xdb, 0xfa, 0xdf, 0xfa, + 0xa6, 0xfb, 0xa3, 0xfb, 0x6f, 0xfc, 0x71, 0xfc, 0x40, 0xfd, 0x41, 0xfd, + 0x11, 0xfe, 0x11, 0xfe, 0xe4, 0xfe, 0xe5, 0xfe, 0xb8, 0xff, 0xb9, 0xff, + 0x8e, 0x00, 0x8d, 0x00, 0x5f, 0x01, 0x61, 0x01, 0x31, 0x02, 0x30, 0x02, + 0xfe, 0x02, 0xff, 0x02, 0xc6, 0x03, 0xc7, 0x03, 0x8c, 0x04, 0x8c, 0x04, + 0x4c, 0x05, 0x4c, 0x05, 0x03, 0x06, 0x05, 0x06, 0xb8, 0x06, 0xb6, 0x06, + 0x61, 0x07, 0x62, 0x07, 0x01, 0x08, 0x05, 0x08, 0x9e, 0x08, 0x9c, 0x08, + 0x2a, 0x09, 0x2d, 0x09, 0xb1, 0x09, 0xb0, 0x09, 0x2a, 0x0a, 0x2b, 0x0a, + 0x97, 0x0a, 0x98, 0x0a, 0xf7, 0x0a, 0xf9, 0x0a, 0x4d, 0x0b, 0x4e, 0x0b, + 0x94, 0x0b, 0x96, 0x0b, 0xcf, 0x0b, 0xce, 0x0b, 0xf8, 0x0b, 0xfb, 0x0b, + 0x17, 0x0c, 0x18, 0x0c, 0x24, 0x0c, 0x23, 0x0c, 0x22, 0x0c, 0x24, 0x0c, + 0x15, 0x0c, 0x13, 0x0c, 0xf4, 0x0b, 0xf5, 0x0b, 0xc6, 0x0b, 0xc8, 0x0b, + 0x87, 0x0b, 0x87, 0x0b, 0x3a, 0x0b, 0x3c, 0x0b, 0xdf, 0x0a, 0xe1, 0x0a, + 0x74, 0x0a, 0x74, 0x0a, 0xfe, 0x09, 0x00, 0x0a, 0x78, 0x09, 0x7a, 0x09, + 0xea, 0x08, 0xea, 0x08, 0x4d, 0x08, 0x4f, 0x08, 0xa7, 0x07, 0xa8, 0x07, + 0xfb, 0x06, 0xfc, 0x06, 0x42, 0x06, 0x44, 0x06, 0x86, 0x05, 0x86, 0x05, + 0xc1, 0x04, 0xc2, 0x04, 0xf7, 0x03, 0xf7, 0x03, 0x27, 0x03, 0x2b, 0x03, + 0x57, 0x02, 0x56, 0x02, 0x80, 0x01, 0x82, 0x01, 0xad, 0x00, 0xad, 0x00, + 0xd3, 0xff, 0xd3, 0xff, 0x00, 0xff, 0x00, 0xff, 0x2a, 0xfe, 0x2b, 0xfe, + 0x58, 0xfd, 0x57, 0xfd, 0x89, 0xfc, 0x8a, 0xfc, 0xbb, 0xfb, 0xba, 0xfb, + 0xf6, 0xfa, 0xf5, 0xfa, 0x33, 0xfa, 0x33, 0xfa, 0x7a, 0xf9, 0x7a, 0xf9, + 0xc7, 0xf8, 0xc6, 0xf8, 0x19, 0xf8, 0x1d, 0xf8, 0x79, 0xf7, 0x76, 0xf7, + 0xdc, 0xf6, 0xde, 0xf6, 0x50, 0xf6, 0x4e, 0xf6, 0xc7, 0xf5, 0xc9, 0xf5, + 0x52, 0xf5, 0x50, 0xf5, 0xe2, 0xf4, 0xe4, 0xf4, 0x81, 0xf4, 0x80, 0xf4, + 0x2e, 0xf4, 0x31, 0xf4, 0xe8, 0xf3, 0xe7, 0xf3, 0xb3, 0xf3, 0xb2, 0xf3, + 0x85, 0xf3, 0x86, 0xf3, 0x6d, 0xf3, 0x6c, 0xf3, 0x60, 0xf3, 0x62, 0xf3, + 0x64, 0xf3, 0x64, 0xf3, 0x7b, 0xf3, 0x7c, 0xf3, 0x9b, 0xf3, 0x9c, 0xf3, + 0xd3, 0xf3, 0xd4, 0xf3, 0x13, 0xf4, 0x13, 0xf4, 0x65, 0xf4, 0x66, 0xf4, + 0xc6, 0xf4, 0xc6, 0xf4, 0x32, 0xf5, 0x32, 0xf5, 0xaa, 0xf5, 0xac, 0xf5, + 0x32, 0xf6, 0x31, 0xf6, 0xc4, 0xf6, 0xc6, 0xf6, 0x62, 0xf7, 0x61, 0xf7, + 0x08, 0xf8, 0x09, 0xf8, 0xba, 0xf8, 0xb9, 0xf8, 0x71, 0xf9, 0x71, 0xf9, + 0x30, 0xfa, 0x31, 0xfa, 0xf5, 0xfa, 0xf6, 0xfa, 0xc0, 0xfb, 0xbf, 0xfb, + 0x8e, 0xfc, 0x8e, 0xfc, 0x5d, 0xfd, 0x5d, 0xfd, 0x33, 0xfe, 0x31, 0xfe, + 0x05, 0xff, 0x05, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xad, 0x00, 0xaf, 0x00, + 0x82, 0x01, 0x81, 0x01, 0x50, 0x02, 0x51, 0x02, 0x1d, 0x03, 0x1e, 0x03, + 0xe6, 0x03, 0xe7, 0x03, 0xa7, 0x04, 0xa7, 0x04, 0x68, 0x05, 0x69, 0x05, + 0x1c, 0x06, 0x1d, 0x06, 0xce, 0x06, 0xce, 0x06, 0x76, 0x07, 0x76, 0x07, + 0x14, 0x08, 0x14, 0x08, 0xac, 0x08, 0xad, 0x08, 0x37, 0x09, 0x37, 0x09, + 0xb9, 0x09, 0xba, 0x09, 0x30, 0x0a, 0x31, 0x0a, 0x9b, 0x0a, 0x9b, 0x0a, + 0xf8, 0x0a, 0xf9, 0x0a, 0x4b, 0x0b, 0x49, 0x0b, 0x8b, 0x0b, 0x8e, 0x0b, + 0xc6, 0x0b, 0xc3, 0x0b, 0xe7, 0x0b, 0xe9, 0x0b, 0x03, 0x0c, 0x04, 0x0c, + 0x0c, 0x0c, 0x0a, 0x0c, 0x06, 0x0c, 0x08, 0x0c, 0xf4, 0x0b, 0xf5, 0x0b, + 0xcd, 0x0b, 0xcd, 0x0b, 0x9d, 0x0b, 0xa0, 0x0b, 0x58, 0x0b, 0x57, 0x0b, + 0x09, 0x0b, 0x0c, 0x0b, 0xa7, 0x0a, 0xa7, 0x0a, 0x3a, 0x0a, 0x3b, 0x0a, + 0xbf, 0x09, 0xc0, 0x09, 0x35, 0x09, 0x36, 0x09, 0xa7, 0x08, 0xa7, 0x08, + 0x03, 0x08, 0x05, 0x08, 0x61, 0x07, 0x61, 0x07, 0xae, 0x06, 0xaf, 0x06, + 0xf7, 0x05, 0xf7, 0x05, 0x37, 0x05, 0x3a, 0x05, 0x70, 0x04, 0x6f, 0x04, + 0xa6, 0x03, 0xa8, 0x03, 0xd8, 0x02, 0xd8, 0x02, 0x05, 0x02, 0x07, 0x02, + 0x33, 0x01, 0x34, 0x01, 0x5c, 0x00, 0x5d, 0x00, 0x89, 0xff, 0x8a, 0xff, + 0xb4, 0xfe, 0xb7, 0xfe, 0xe3, 0xfd, 0xe3, 0xfd, 0x13, 0xfd, 0x13, 0xfd, + 0x46, 0xfc, 0x48, 0xfc, 0x81, 0xfb, 0x7f, 0xfb, 0xbb, 0xfa, 0xbd, 0xfa, + 0x01, 0xfa, 0x01, 0xfa, 0x48, 0xf9, 0x4a, 0xf9, 0x9c, 0xf8, 0x9c, 0xf8, + 0xf6, 0xf7, 0xf6, 0xf7, 0x59, 0xf7, 0x59, 0xf7, 0xc5, 0xf6, 0xc8, 0xf6, + 0x3c, 0xf6, 0x3c, 0xf6, 0xbe, 0xf5, 0xbf, 0xf5, 0x4b, 0xf5, 0x4c, 0xf5, + 0xe5, 0xf4, 0xe4, 0xf4, 0x8d, 0xf4, 0x8f, 0xf4, 0x40, 0xf4, 0x40, 0xf4, + 0x02, 0xf4, 0x03, 0xf4, 0xd1, 0xf3, 0xd1, 0xf3, 0xae, 0xf3, 0xae, 0xf3, + 0x9d, 0xf3, 0x9d, 0xf3, 0x96, 0xf3, 0x97, 0xf3, 0xa5, 0xf3, 0xa4, 0xf3, + 0xbf, 0xf3, 0xbf, 0xf3, 0xe8, 0xf3, 0xe8, 0xf3, 0x23, 0xf4, 0x25, 0xf4, + 0x6c, 0xf4, 0x6b, 0xf4, 0xc4, 0xf4, 0xc5, 0xf4, 0x2a, 0xf5, 0x28, 0xf5, + 0x9c, 0xf5, 0x9c, 0xf5, 0x1b, 0xf6, 0x1e, 0xf6, 0xa9, 0xf6, 0xa8, 0xf6, + 0x40, 0xf7, 0x41, 0xf7, 0xe1, 0xf7, 0xe2, 0xf7, 0x8d, 0xf8, 0x8f, 0xf8, + 0x44, 0xf9, 0x44, 0xf9, 0xfe, 0xf9, 0xfe, 0xf9, 0xc1, 0xfa, 0xc3, 0xfa, + 0x8a, 0xfb, 0x8a, 0xfb, 0x59, 0xfc, 0x5b, 0xfc, 0x28, 0xfd, 0x29, 0xfd, + 0xfd, 0xfd, 0xfd, 0xfd, 0xd2, 0xfe, 0xd3, 0xfe, 0xaa, 0xff, 0xaa, 0xff, + 0x7f, 0x00, 0x80, 0x00, 0x55, 0x01, 0x54, 0x01, 0x29, 0x02, 0x2b, 0x02, + 0xfa, 0x02, 0xf9, 0x02, 0xc8, 0x03, 0xc9, 0x03, 0x8f, 0x04, 0x8f, 0x04, + 0x54, 0x05, 0x55, 0x05, 0x12, 0x06, 0x13, 0x06, 0xc8, 0x06, 0xc6, 0x06, + 0x77, 0x07, 0x78, 0x07, 0x1c, 0x08, 0x1c, 0x08, 0xbb, 0x08, 0xbc, 0x08, + 0x50, 0x09, 0x4e, 0x09, 0xd8, 0x09, 0xd8, 0x09, 0x57, 0x0a, 0x58, 0x0a, + 0xca, 0x0a, 0xc9, 0x0a, 0x2f, 0x0b, 0x32, 0x0b, 0x88, 0x0b, 0x88, 0x0b, + 0xd7, 0x0b, 0xd7, 0x0b, 0x13, 0x0c, 0x15, 0x0c, 0x42, 0x0c, 0x43, 0x0c, + 0x65, 0x0c, 0x65, 0x0c, 0x77, 0x0c, 0x78, 0x0c, 0x7b, 0x0c, 0x7a, 0x0c, + 0x6d, 0x0c, 0x6f, 0x0c, 0x53, 0x0c, 0x53, 0x0c, 0x25, 0x0c, 0x25, 0x0c, + 0xeb, 0x0b, 0xec, 0x0b, 0xa0, 0x0b, 0x9f, 0x0b, 0x45, 0x0b, 0x48, 0x0b, + 0xdf, 0x0a, 0xdd, 0x0a, 0x69, 0x0a, 0x6b, 0x0a, 0xe8, 0x09, 0xe8, 0x09, + 0x5a, 0x09, 0x5b, 0x09, 0xc2, 0x08, 0xc4, 0x08, 0x1e, 0x08, 0x1e, 0x08, + 0x73, 0x07, 0x75, 0x07, 0xc0, 0x06, 0xc0, 0x06, 0x03, 0x06, 0x03, 0x06, + 0x41, 0x05, 0x43, 0x05, 0x78, 0x04, 0x79, 0x04, 0xad, 0x03, 0xad, 0x03, + 0xdc, 0x02, 0xde, 0x02, 0x09, 0x02, 0x0a, 0x02, 0x36, 0x01, 0x38, 0x01, + 0x60, 0x00, 0x60, 0x00, 0x8f, 0xff, 0x8f, 0xff, 0xbb, 0xfe, 0xbd, 0xfe, + 0xec, 0xfd, 0xeb, 0xfd, 0x1d, 0xfd, 0x1f, 0xfd, 0x54, 0xfc, 0x55, 0xfc, + 0x8f, 0xfb, 0x90, 0xfb, 0xce, 0xfa, 0xd1, 0xfa, 0x16, 0xfa, 0x14, 0xfa, + 0x64, 0xf9, 0x66, 0xf9, 0xb8, 0xf8, 0xb9, 0xf8, 0x18, 0xf8, 0x19, 0xf8, + 0x7e, 0xf7, 0x7f, 0xf7, 0xee, 0xf6, 0xef, 0xf6, 0x6b, 0xf6, 0x6b, 0xf6, + 0xf0, 0xf5, 0xf0, 0xf5, 0x82, 0xf5, 0x83, 0xf5, 0x20, 0xf5, 0x21, 0xf5, + 0xcc, 0xf4, 0xcb, 0xf4, 0x85, 0xf4, 0x86, 0xf4, 0x49, 0xf4, 0x4a, 0xf4, + 0x1e, 0xf4, 0x21, 0xf4, 0x04, 0xf4, 0x02, 0xf4, 0xf0, 0xf3, 0xf2, 0xf3, + 0xf4, 0xf3, 0xf6, 0xf3, 0x03, 0xf4, 0x04, 0xf4, 0x21, 0xf4, 0x22, 0xf4, + 0x52, 0xf4, 0x53, 0xf4, 0x8d, 0xf4, 0x8c, 0xf4, 0xdc, 0xf4, 0xdd, 0xf4, + 0x35, 0xf5, 0x3a, 0xf5, 0xa1, 0xf5, 0xa1, 0xf5, 0x16, 0xf6, 0x17, 0xf6, + 0x9c, 0xf6, 0x9e, 0xf6, 0x2b, 0xf7, 0x2c, 0xf7, 0xc7, 0xf7, 0xc7, 0xf7, + 0x6b, 0xf8, 0x6c, 0xf8, 0x1c, 0xf9, 0x1c, 0xf9, 0xd2, 0xf9, 0xd3, 0xf9, + 0x90, 0xfa, 0x90, 0xfa, 0x55, 0xfb, 0x56, 0xfb, 0x1f, 0xfc, 0x1f, 0xfc, + 0xec, 0xfc, 0xee, 0xfc, 0xbf, 0xfd, 0xbf, 0xfd, 0x92, 0xfe, 0x94, 0xfe, + 0x6c, 0xff, 0x6b, 0xff, 0x3f, 0x00, 0x43, 0x00, 0x19, 0x01, 0x17, 0x01, + 0xea, 0x01, 0xee, 0x01, 0xbe, 0x02, 0xbd, 0x02, 0x8d, 0x03, 0x90, 0x03, + 0x59, 0x04, 0x5a, 0x04, 0x1e, 0x05, 0x20, 0x05, 0xe1, 0x05, 0xe2, 0x05, + 0x98, 0x06, 0x98, 0x06, 0x50, 0x07, 0x50, 0x07, 0xf8, 0x07, 0xfa, 0x07, + 0x9c, 0x08, 0x9a, 0x08, 0x33, 0x09, 0x35, 0x09, 0xc0, 0x09, 0xc0, 0x09, + 0x47, 0x0a, 0x47, 0x0a, 0xbc, 0x0a, 0xbe, 0x0a, 0x2a, 0x0b, 0x2a, 0x0b, + 0x89, 0x0b, 0x89, 0x0b, 0xdb, 0x0b, 0xdc, 0x0b, 0x20, 0x0c, 0x20, 0x0c, + 0x55, 0x0c, 0x58, 0x0c, 0x80, 0x0c, 0x7d, 0x0c, 0x95, 0x0c, 0x98, 0x0c, + 0xa0, 0x0c, 0xa0, 0x0c, 0x9a, 0x0c, 0x9b, 0x0c, 0x84, 0x0c, 0x84, 0x0c, + 0x60, 0x0c, 0x60, 0x0c, 0x2c, 0x0c, 0x2e, 0x0c, 0xe7, 0x0b, 0xe6, 0x0b, + 0x97, 0x0b, 0x97, 0x0b, 0x31, 0x0b, 0x33, 0x0b, 0xc6, 0x0a, 0xc4, 0x0a, + 0x49, 0x0a, 0x48, 0x0a, 0xbf, 0x09, 0xbe, 0x09, 0x2d, 0x09, 0x2b, 0x09, + 0x89, 0x08, 0x8a, 0x08, 0xe4, 0x07, 0xe5, 0x07, 0x33, 0x07, 0x34, 0x07, + 0x78, 0x06, 0x78, 0x06, 0xb8, 0x05, 0xb8, 0x05, 0xf2, 0x04, 0xf1, 0x04, + 0x25, 0x04, 0x27, 0x04, 0x53, 0x03, 0x55, 0x03, 0x81, 0x02, 0x81, 0x02, + 0xad, 0x01, 0xae, 0x01, 0xd5, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x28, 0xff, 0x29, 0xff, 0x56, 0xfe, 0x56, 0xfe, 0x86, 0xfd, 0x86, 0xfd, + 0xb5, 0xfc, 0xb6, 0xfc, 0xee, 0xfb, 0xee, 0xfb, 0x25, 0xfb, 0x26, 0xfb, + 0x67, 0xfa, 0x68, 0xfa, 0xb0, 0xf9, 0xaf, 0xf9, 0xfa, 0xf8, 0xfb, 0xf8, + 0x54, 0xf8, 0x53, 0xf8, 0xb0, 0xf7, 0xb0, 0xf7, 0x1b, 0xf7, 0x1c, 0xf7, + 0x8d, 0xf6, 0x8c, 0xf6, 0x0b, 0xf6, 0x09, 0xf6, 0x94, 0xf5, 0x94, 0xf5, + 0x28, 0xf5, 0x29, 0xf5, 0xcb, 0xf4, 0xcb, 0xf4, 0x77, 0xf4, 0x78, 0xf4, + 0x36, 0xf4, 0x37, 0xf4, 0x00, 0xf4, 0x01, 0xf4, 0xd9, 0xf3, 0xd8, 0xf3, + 0xc1, 0xf3, 0xc1, 0xf3, 0xb6, 0xf3, 0xb8, 0xf3, 0xc0, 0xf3, 0xbe, 0xf3, + 0xd3, 0xf3, 0xd2, 0xf3, 0xf9, 0xf3, 0xf9, 0xf3, 0x2d, 0xf4, 0x2d, 0xf4, + 0x71, 0xf4, 0x72, 0xf4, 0xc7, 0xf4, 0xc6, 0xf4, 0x26, 0xf5, 0x26, 0xf5, + 0x95, 0xf5, 0x97, 0xf5, 0x13, 0xf6, 0x13, 0xf6, 0x98, 0xf6, 0x99, 0xf6, + 0x32, 0xf7, 0x31, 0xf7, 0xcf, 0xf7, 0xce, 0xf7, 0x79, 0xf8, 0x79, 0xf8, + 0x2d, 0xf9, 0x2b, 0xf9, 0xe4, 0xf9, 0xe5, 0xf9, 0xa9, 0xfa, 0xa7, 0xfa, + 0x6d, 0xfb, 0x6e, 0xfb, 0x3a, 0xfc, 0x39, 0xfc, 0x07, 0xfd, 0x09, 0xfd, + 0xdb, 0xfd, 0xdb, 0xfd, 0xad, 0xfe, 0xae, 0xfe, 0x85, 0xff, 0x85, 0xff, + 0x59, 0x00, 0x5a, 0x00, 0x2e, 0x01, 0x2d, 0x01, 0x00, 0x02, 0x01, 0x02, + 0xd0, 0x02, 0xd1, 0x02, 0x9d, 0x03, 0x9d, 0x03, 0x64, 0x04, 0x64, 0x04, + 0x28, 0x05, 0x27, 0x05, 0xe1, 0x05, 0xe3, 0x05, 0x9a, 0x06, 0x9a, 0x06, + 0x47, 0x07, 0x46, 0x07, 0xeb, 0x07, 0xed, 0x07, 0x8b, 0x08, 0x8a, 0x08, + 0x18, 0x09, 0x1a, 0x09, 0xa7, 0x09, 0xa8, 0x09, 0x1f, 0x0a, 0x20, 0x0a, + 0x94, 0x0a, 0x95, 0x0a, 0xfa, 0x0a, 0xfc, 0x0a, 0x53, 0x0b, 0x52, 0x0b, + 0x9e, 0x0b, 0xa3, 0x0b, 0xdd, 0x0b, 0xdb, 0x0b, 0x0c, 0x0c, 0x10, 0x0c, + 0x2d, 0x0c, 0x2d, 0x0c, 0x40, 0x0c, 0x40, 0x0c, 0x42, 0x0c, 0x44, 0x0c, + 0x38, 0x0c, 0x39, 0x0c, 0x1d, 0x0c, 0x1d, 0x0c, 0xef, 0x0b, 0xf2, 0x0b, + 0xba, 0x0b, 0xba, 0x0b, 0x6d, 0x0b, 0x6f, 0x0b, 0x16, 0x0b, 0x17, 0x0b, + 0xb0, 0x0a, 0xaf, 0x0a, 0x39, 0x0a, 0x3c, 0x0a, 0xb9, 0x09, 0xba, 0x09, + 0x2b, 0x09, 0x2c, 0x09, 0x93, 0x08, 0x94, 0x08, 0xee, 0x07, 0xee, 0x07, + 0x43, 0x07, 0x45, 0x07, 0x8c, 0x06, 0x8d, 0x06, 0xce, 0x05, 0xcf, 0x05, + 0x0a, 0x05, 0x0b, 0x05, 0x40, 0x04, 0x42, 0x04, 0x6f, 0x03, 0x70, 0x03, + 0x9e, 0x02, 0xa0, 0x02, 0xc8, 0x01, 0xc9, 0x01, 0xf1, 0x00, 0xf1, 0x00, + 0x19, 0x00, 0x1b, 0x00, 0x40, 0xff, 0x40, 0xff, 0x6c, 0xfe, 0x6d, 0xfe, + 0x95, 0xfd, 0x97, 0xfd, 0xc3, 0xfc, 0xc4, 0xfc, 0xf5, 0xfb, 0xf6, 0xfb, + 0x2a, 0xfb, 0x2c, 0xfb, 0x68, 0xfa, 0x68, 0xfa, 0xa6, 0xf9, 0xa8, 0xf9, + 0xf1, 0xf8, 0xf3, 0xf8, 0x41, 0xf8, 0x42, 0xf8, 0x98, 0xf7, 0x9a, 0xf7, + 0xfe, 0xf6, 0x01, 0xf7, 0x68, 0xf6, 0x68, 0xf6, 0xe1, 0xf5, 0xe2, 0xf5, + 0x63, 0xf5, 0x64, 0xf5, 0xf2, 0xf4, 0xf2, 0xf4, 0x8b, 0xf4, 0x8d, 0xf4, + 0x34, 0xf4, 0x32, 0xf4, 0xe8, 0xf3, 0xeb, 0xf3, 0xad, 0xf3, 0xac, 0xf3, + 0x80, 0xf3, 0x80, 0xf3, 0x5f, 0xf3, 0x5e, 0xf3, 0x51, 0xf3, 0x51, 0xf3, + 0x4f, 0xf3, 0x51, 0xf3, 0x5f, 0xf3, 0x60, 0xf3, 0x7e, 0xf3, 0x80, 0xf3, + 0xad, 0xf3, 0xad, 0xf3, 0xee, 0xf3, 0xee, 0xf3, 0x3a, 0xf4, 0x3b, 0xf4, + 0x98, 0xf4, 0x97, 0xf4, 0x00, 0xf5, 0x04, 0xf5, 0x79, 0xf5, 0x79, 0xf5, + 0xfc, 0xf5, 0xfd, 0xf5, 0x8e, 0xf6, 0x90, 0xf6, 0x27, 0xf7, 0x28, 0xf7, + 0xcf, 0xf7, 0xd1, 0xf7, 0x7e, 0xf8, 0x7e, 0xf8, 0x35, 0xf9, 0x35, 0xf9, + 0xf3, 0xf9, 0xf5, 0xf9, 0xb9, 0xfa, 0xb9, 0xfa, 0x82, 0xfb, 0x83, 0xfb, + 0x52, 0xfc, 0x52, 0xfc, 0x24, 0xfd, 0x24, 0xfd, 0xf7, 0xfd, 0xfa, 0xfd, + 0xd0, 0xfe, 0xcf, 0xfe, 0xa5, 0xff, 0xa7, 0xff, 0x7c, 0x00, 0x7c, 0x00, + 0x50, 0x01, 0x50, 0x01, 0x22, 0x02, 0x24, 0x02, 0xf1, 0x02, 0xf2, 0x02, + 0xbe, 0x03, 0xbd, 0x03, 0x80, 0x04, 0x83, 0x04, 0x45, 0x05, 0x45, 0x05, + 0xfd, 0x05, 0xfd, 0x05, 0xb1, 0x06, 0xb4, 0x06, 0x5d, 0x07, 0x5d, 0x07, + 0x00, 0x08, 0x01, 0x08, 0x9b, 0x08, 0x9c, 0x08, 0x2a, 0x09, 0x2b, 0x09, + 0xb0, 0x09, 0xb2, 0x09, 0x29, 0x0a, 0x2b, 0x0a, 0x9a, 0x0a, 0x9a, 0x0a, + 0xf9, 0x0a, 0xfc, 0x0a, 0x51, 0x0b, 0x51, 0x0b, 0x95, 0x0b, 0x98, 0x0b, + 0xd1, 0x0b, 0xd0, 0x0b, 0xfa, 0x0b, 0xfd, 0x0b, 0x18, 0x0c, 0x18, 0x0c, + 0x25, 0x0c, 0x28, 0x0c, 0x23, 0x0c, 0x23, 0x0c, 0x14, 0x0c, 0x14, 0x0c, + 0xf0, 0x0b, 0xf3, 0x0b, 0xc5, 0x0b, 0xc5, 0x0b, 0x82, 0x0b, 0x85, 0x0b, + 0x36, 0x0b, 0x37, 0x0b, 0xd9, 0x0a, 0xd8, 0x0a, 0x6c, 0x0a, 0x6f, 0x0a, + 0xf3, 0x09, 0xf2, 0x09, 0x6d, 0x09, 0x6f, 0x09, 0xdd, 0x08, 0xde, 0x08, + 0x3f, 0x08, 0x3e, 0x08, 0x97, 0x07, 0x9b, 0x07, 0xe9, 0x06, 0xe8, 0x06, + 0x2f, 0x06, 0x32, 0x06, 0x6f, 0x05, 0x6f, 0x05, 0xaa, 0x04, 0xac, 0x04, + 0xde, 0x03, 0xdc, 0x03, 0x0e, 0x03, 0x10, 0x03, 0x3b, 0x02, 0x3c, 0x02, + 0x64, 0x01, 0x65, 0x01, 0x8e, 0x00, 0x90, 0x00, 0xb6, 0xff, 0xb8, 0xff, + 0xe0, 0xfe, 0xe1, 0xfe, 0x0b, 0xfe, 0x0c, 0xfe, 0x39, 0xfd, 0x3a, 0xfd, + 0x68, 0xfc, 0x69, 0xfc, 0x9e, 0xfb, 0xa0, 0xfb, 0xd8, 0xfa, 0xd8, 0xfa, + 0x19, 0xfa, 0x19, 0xfa, 0x5f, 0xf9, 0x61, 0xf9, 0xab, 0xf8, 0xab, 0xf8, + 0x02, 0xf8, 0x05, 0xf8, 0x61, 0xf7, 0x61, 0xf7, 0xc8, 0xf6, 0xcb, 0xf6, + 0x3d, 0xf6, 0x3f, 0xf6, 0xba, 0xf5, 0xba, 0xf5, 0x42, 0xf5, 0x46, 0xf5, + 0xdb, 0xf4, 0xd9, 0xf4, 0x7a, 0xf4, 0x7b, 0xf4, 0x2b, 0xf4, 0x2d, 0xf4, + 0xea, 0xf3, 0xea, 0xf3, 0xb5, 0xf3, 0xb7, 0xf3, 0x8f, 0xf3, 0x90, 0xf3, + 0x7a, 0xf3, 0x79, 0xf3, 0x70, 0xf3, 0x72, 0xf3, 0x7a, 0xf3, 0x7b, 0xf3, + 0x91, 0xf3, 0x91, 0xf3, 0xb6, 0xf3, 0xba, 0xf3, 0xf0, 0xf3, 0xef, 0xf3, + 0x33, 0xf4, 0x37, 0xf4, 0x8c, 0xf4, 0x8c, 0xf4, 0xef, 0xf4, 0xf2, 0xf4, + 0x5e, 0xf5, 0x60, 0xf5, 0xe1, 0xf5, 0xe1, 0xf5, 0x68, 0xf6, 0x6b, 0xf6, + 0x01, 0xf7, 0x04, 0xf7, 0xa1, 0xf7, 0xa2, 0xf7, 0x4c, 0xf8, 0x50, 0xf8, + 0x01, 0xf9, 0x05, 0xf9, 0xbf, 0xf9, 0xbf, 0xf9, 0x80, 0xfa, 0x85, 0xfa, + 0x4c, 0xfb, 0x4c, 0xfb, 0x19, 0xfc, 0x1b, 0xfc, 0xea, 0xfc, 0xed, 0xfc, + 0xc2, 0xfd, 0xc2, 0xfd, 0x96, 0xfe, 0x99, 0xfe, 0x72, 0xff, 0x74, 0xff, + 0x4b, 0x00, 0x4c, 0x00, 0x21, 0x01, 0x24, 0x01, 0xf9, 0x01, 0xfa, 0x01, + 0xcc, 0x02, 0xce, 0x02, 0x9c, 0x03, 0x9e, 0x03, 0x68, 0x04, 0x69, 0x04, + 0x32, 0x05, 0x31, 0x05, 0xef, 0x05, 0xf1, 0x05, 0xab, 0x06, 0xac, 0x06, + 0x5b, 0x07, 0x5d, 0x07, 0x07, 0x08, 0x07, 0x08, 0xa8, 0x08, 0xa9, 0x08, + 0x3e, 0x09, 0x3d, 0x09, 0xcd, 0x09, 0xce, 0x09, 0x4c, 0x0a, 0x4d, 0x0a, + 0xc7, 0x0a, 0xc7, 0x0a, 0x2d, 0x0b, 0x2f, 0x0b, 0x8b, 0x0b, 0x8b, 0x0b, + 0xdc, 0x0b, 0xdc, 0x0b, 0x1c, 0x0c, 0x1e, 0x0c, 0x51, 0x0c, 0x52, 0x0c, + 0x75, 0x0c, 0x76, 0x0c, 0x8a, 0x0c, 0x8b, 0x0c, 0x90, 0x0c, 0x91, 0x0c, + 0x86, 0x0c, 0x87, 0x0c, 0x6f, 0x0c, 0x70, 0x0c, 0x43, 0x0c, 0x45, 0x0c, + 0x0f, 0x0c, 0x0f, 0x0c, 0xc2, 0x0b, 0xc5, 0x0b, 0x70, 0x0b, 0x6e, 0x0b, + 0x07, 0x0b, 0x09, 0x0b, 0x94, 0x0a, 0x94, 0x0a, 0x15, 0x0a, 0x16, 0x0a, + 0x88, 0x09, 0x87, 0x09, 0xf0, 0x08, 0xf2, 0x08, 0x4e, 0x08, 0x4f, 0x08, + 0xa2, 0x07, 0xa3, 0x07, 0xef, 0x06, 0xf1, 0x06, 0x2f, 0x06, 0x31, 0x06, + 0x70, 0x05, 0x72, 0x05, 0xa5, 0x04, 0xa6, 0x04, 0xd7, 0x03, 0xd9, 0x03, + 0x07, 0x03, 0x08, 0x03, 0x31, 0x02, 0x32, 0x02, 0x5c, 0x01, 0x5d, 0x01, + 0x86, 0x00, 0x89, 0x00, 0xaf, 0xff, 0xb0, 0xff, 0xdb, 0xfe, 0xde, 0xfe, + 0x09, 0xfe, 0x09, 0xfe, 0x36, 0xfd, 0x36, 0xfd, 0x6b, 0xfc, 0x6c, 0xfc, + 0xa2, 0xfb, 0xa3, 0xfb, 0xe0, 0xfa, 0xe1, 0xfa, 0x26, 0xfa, 0x26, 0xfa, + 0x6d, 0xf9, 0x6f, 0xf9, 0xc2, 0xf8, 0xc3, 0xf8, 0x1c, 0xf8, 0x1e, 0xf8, + 0x7e, 0xf7, 0x7f, 0xf7, 0xee, 0xf6, 0xee, 0xf6, 0x64, 0xf6, 0x65, 0xf6, + 0xe9, 0xf5, 0xe8, 0xf5, 0x75, 0xf5, 0x79, 0xf5, 0x12, 0xf5, 0x12, 0xf5, + 0xba, 0xf4, 0xbb, 0xf4, 0x6e, 0xf4, 0x71, 0xf4, 0x35, 0xf4, 0x34, 0xf4, + 0x03, 0xf4, 0x05, 0xf4, 0xe5, 0xf3, 0xe6, 0xf3, 0xd3, 0xf3, 0xd4, 0xf3, + 0xd2, 0xf3, 0xd3, 0xf3, 0xdf, 0xf3, 0xe1, 0xf3, 0xfd, 0xf3, 0xfd, 0xf3, + 0x28, 0xf4, 0x2a, 0xf4, 0x65, 0xf4, 0x65, 0xf4, 0xaf, 0xf4, 0xb1, 0xf4, + 0x09, 0xf5, 0x0a, 0xf5, 0x73, 0xf5, 0x73, 0xf5, 0xe5, 0xf5, 0xe7, 0xf5, + 0x6b, 0xf6, 0x6e, 0xf6, 0xf9, 0xf6, 0xf9, 0xf6, 0x93, 0xf7, 0x97, 0xf7, + 0x3a, 0xf8, 0x3a, 0xf8, 0xe8, 0xf8, 0xea, 0xf8, 0xa0, 0xf9, 0xa3, 0xf9, + 0x5f, 0xfa, 0x5e, 0xfa, 0x25, 0xfb, 0x27, 0xfb, 0xf1, 0xfb, 0xf2, 0xfb, + 0xbf, 0xfc, 0xc0, 0xfc, 0x93, 0xfd, 0x94, 0xfd, 0x68, 0xfe, 0x6a, 0xfe, + 0x43, 0xff, 0x43, 0xff, 0x1c, 0x00, 0x1c, 0x00, 0xf3, 0x00, 0xf4, 0x00, + 0xcb, 0x01, 0xcb, 0x01, 0x9e, 0x02, 0xa2, 0x02, 0x72, 0x03, 0x70, 0x03, + 0x3e, 0x04, 0x41, 0x04, 0x09, 0x05, 0x0a, 0x05, 0xca, 0x05, 0xca, 0x05, + 0x89, 0x06, 0x8b, 0x06, 0x3f, 0x07, 0x3e, 0x07, 0xeb, 0x07, 0xef, 0x07, + 0x92, 0x08, 0x94, 0x08, 0x2e, 0x09, 0x2e, 0x09, 0xc0, 0x09, 0xc3, 0x09, + 0x47, 0x0a, 0x46, 0x0a, 0xc1, 0x0a, 0xc5, 0x0a, 0x33, 0x0b, 0x34, 0x0b, + 0x94, 0x0b, 0x93, 0x0b, 0xe8, 0x0b, 0xea, 0x0b, 0x31, 0x0c, 0x32, 0x0c, + 0x67, 0x0c, 0x6a, 0x0c, 0x93, 0x0c, 0x94, 0x0c, 0xae, 0x0c, 0xaf, 0x0c, + 0xbb, 0x0c, 0xbc, 0x0c, 0xb7, 0x0c, 0xb8, 0x0c, 0xa4, 0x0c, 0xa6, 0x0c, + 0x81, 0x0c, 0x81, 0x0c, 0x52, 0x0c, 0x53, 0x0c, 0x0c, 0x0c, 0x0f, 0x0c, + 0xbf, 0x0b, 0xbe, 0x0b, 0x5d, 0x0b, 0x61, 0x0b, 0xee, 0x0a, 0xed, 0x0a, + 0x74, 0x0a, 0x77, 0x0a, 0xea, 0x09, 0xeb, 0x09, 0x59, 0x09, 0x5c, 0x09, + 0xba, 0x08, 0xbc, 0x08, 0x13, 0x08, 0x13, 0x08, 0x60, 0x07, 0x62, 0x07, + 0xa7, 0x06, 0xaa, 0x06, 0xe7, 0x05, 0xe9, 0x05, 0x1f, 0x05, 0x1f, 0x05, + 0x52, 0x04, 0x55, 0x04, 0x81, 0x03, 0x83, 0x03, 0xab, 0x02, 0xaf, 0x02, + 0xd8, 0x01, 0xd8, 0x01, 0xfc, 0x00, 0xff, 0x00, 0x28, 0x00, 0x28, 0x00, + 0x4d, 0xff, 0x50, 0xff, 0x7b, 0xfe, 0x7c, 0xfe, 0xa6, 0xfd, 0xa9, 0xfd, + 0xd6, 0xfc, 0xd6, 0xfc, 0x09, 0xfc, 0x0c, 0xfc, 0x41, 0xfb, 0x43, 0xfb, + 0x80, 0xfa, 0x83, 0xfa, 0xc4, 0xf9, 0xc7, 0xf9, 0x13, 0xf9, 0x13, 0xf9, + 0x64, 0xf8, 0x68, 0xf8, 0xc1, 0xf7, 0xc3, 0xf7, 0x2b, 0xf7, 0x2c, 0xf7, + 0x97, 0xf6, 0x9a, 0xf6, 0x14, 0xf6, 0x15, 0xf6, 0x9b, 0xf5, 0x9c, 0xf5, + 0x2b, 0xf5, 0x2f, 0xf5, 0xce, 0xf4, 0xd1, 0xf4, 0x77, 0xf4, 0x78, 0xf4, + 0x35, 0xf4, 0x37, 0xf4, 0xfb, 0xf3, 0xfd, 0xf3, 0xd2, 0xf3, 0xd4, 0xf3, + 0xb7, 0xf3, 0xba, 0xf3, 0xac, 0xf3, 0xad, 0xf3, 0xb0, 0xf3, 0xb4, 0xf3, + 0xc3, 0xf3, 0xc5, 0xf3, 0xe8, 0xf3, 0xeb, 0xf3, 0x18, 0xf4, 0x1a, 0xf4, + 0x5d, 0xf4, 0x60, 0xf4, 0xaf, 0xf4, 0xb0, 0xf4, 0x0d, 0xf5, 0x11, 0xf5, + 0x7f, 0xf5, 0x7e, 0xf5, 0xf5, 0xf5, 0xfa, 0xf5, 0x80, 0xf6, 0x82, 0xf6, + 0x13, 0xf7, 0x16, 0xf7, 0xb1, 0xf7, 0xb4, 0xf7, 0x5d, 0xf8, 0x5f, 0xf8, + 0x0d, 0xf9, 0x0e, 0xf9, 0xc7, 0xf9, 0xca, 0xf9, 0x8a, 0xfa, 0x8b, 0xfa, + 0x4f, 0xfb, 0x52, 0xfb, 0x1d, 0xfc, 0x1e, 0xfc, 0xeb, 0xfc, 0xee, 0xfc, + 0xbe, 0xfd, 0xc2, 0xfd, 0x95, 0xfe, 0x97, 0xfe, 0x6a, 0xff, 0x6e, 0xff, + 0x43, 0x00, 0x45, 0x00, 0x16, 0x01, 0x18, 0x01, 0xee, 0x01, 0xee, 0x01, + 0xbd, 0x02, 0xc1, 0x02, 0x8b, 0x03, 0x8c, 0x03, 0x56, 0x04, 0x59, 0x04, + 0x19, 0x05, 0x1c, 0x05, 0xda, 0x05, 0xdd, 0x05, 0x8f, 0x06, 0x92, 0x06, + 0x41, 0x07, 0x44, 0x07, 0xea, 0x07, 0xe9, 0x07, 0x88, 0x08, 0x8c, 0x08, + 0x1e, 0x09, 0x1e, 0x09, 0xa8, 0x09, 0xab, 0x09, 0x27, 0x0a, 0x2b, 0x0a, + 0x9e, 0x0a, 0x9e, 0x0a, 0x05, 0x0b, 0x0b, 0x0b, 0x61, 0x0b, 0x60, 0x0b, + 0xad, 0x0b, 0xb2, 0x0b, 0xee, 0x0b, 0xf0, 0x0b, 0x1f, 0x0c, 0x20, 0x0c, + 0x44, 0x0c, 0x47, 0x0c, 0x56, 0x0c, 0x58, 0x0c, 0x5c, 0x0c, 0x5f, 0x0c, + 0x51, 0x0c, 0x55, 0x0c, 0x38, 0x0c, 0x3a, 0x0c, 0x0e, 0x0c, 0x11, 0x0c, + 0xd7, 0x0b, 0xd8, 0x0b, 0x8f, 0x0b, 0x91, 0x0b, 0x37, 0x0b, 0x3a, 0x0b, + 0xd3, 0x0a, 0xd6, 0x0a, 0x5f, 0x0a, 0x61, 0x0a, 0xe0, 0x09, 0xe2, 0x09, + 0x53, 0x09, 0x54, 0x09, 0xbb, 0x08, 0xbc, 0x08, 0x17, 0x08, 0x1a, 0x08, + 0x6b, 0x07, 0x6b, 0x07, 0xb5, 0x06, 0xb9, 0x06, 0xf9, 0x05, 0xf9, 0x05, + 0x33, 0x05, 0x38, 0x05, 0x6b, 0x04, 0x6b, 0x04, 0x9b, 0x03, 0x9e, 0x03, + 0xc6, 0x02, 0xc8, 0x02, 0xf0, 0x01, 0xf2, 0x01, 0x18, 0x01, 0x1b, 0x01, + 0x40, 0x00, 0x42, 0x00, 0x64, 0xff, 0x67, 0xff, 0x90, 0xfe, 0x93, 0xfe, + 0xba, 0xfd, 0xba, 0xfd, 0xe5, 0xfc, 0xea, 0xfc, 0x16, 0xfc, 0x18, 0xfc, + 0x49, 0xfb, 0x4c, 0xfb, 0x85, 0xfa, 0x87, 0xfa, 0xc3, 0xf9, 0xc4, 0xf9, + 0x0b, 0xf9, 0x0e, 0xf9, 0x58, 0xf8, 0x5a, 0xf8, 0xb0, 0xf7, 0xb3, 0xf7, + 0x13, 0xf7, 0x14, 0xf7, 0x7a, 0xf6, 0x7d, 0xf6, 0xf1, 0xf5, 0xf2, 0xf5, + 0x71, 0xf5, 0x73, 0xf5, 0xfe, 0xf4, 0xff, 0xf4, 0x94, 0xf4, 0x97, 0xf4, + 0x3d, 0xf4, 0x3e, 0xf4, 0xf0, 0xf3, 0xf2, 0xf3, 0xb0, 0xf3, 0xb4, 0xf3, + 0x83, 0xf3, 0x84, 0xf3, 0x5e, 0xf3, 0x5f, 0xf3, 0x4c, 0xf3, 0x50, 0xf3, + 0x4a, 0xf3, 0x4d, 0xf3, 0x58, 0xf3, 0x59, 0xf3, 0x74, 0xf3, 0x78, 0xf3, + 0xa2, 0xf3, 0xa4, 0xf3, 0xdf, 0xf3, 0xe1, 0xf3, 0x2a, 0xf4, 0x2d, 0xf4, + 0x85, 0xf4, 0x86, 0xf4, 0xed, 0xf4, 0xef, 0xf4, 0x64, 0xf5, 0x66, 0xf5, + 0xe5, 0xf5, 0xe7, 0xf5, 0x74, 0xf6, 0x77, 0xf6, 0x0d, 0xf7, 0x0e, 0xf7, + 0xb3, 0xf7, 0xb5, 0xf7, 0x60, 0xf8, 0x63, 0xf8, 0x1a, 0xf9, 0x1a, 0xf9, + 0xd2, 0xf9, 0xd6, 0xf9, 0x9b, 0xfa, 0x9c, 0xfa, 0x62, 0xfb, 0x65, 0xfb, + 0x34, 0xfc, 0x35, 0xfc, 0x05, 0xfd, 0x07, 0xfd, 0xd9, 0xfd, 0xda, 0xfd, + 0xae, 0xfe, 0xb2, 0xfe, 0x87, 0xff, 0x87, 0xff, 0x5d, 0x00, 0x5f, 0x00, + 0x31, 0x01, 0x32, 0x01, 0x05, 0x02, 0x08, 0x02, 0xd4, 0x02, 0xd6, 0x02, + 0xa1, 0x03, 0xa2, 0x03, 0x68, 0x04, 0x6b, 0x04, 0x2b, 0x05, 0x2a, 0x05, + 0xe5, 0x05, 0xe8, 0x05, 0x9a, 0x06, 0x9b, 0x06, 0x49, 0x07, 0x49, 0x07, + 0xeb, 0x07, 0xee, 0x07, 0x87, 0x08, 0x89, 0x08, 0x1a, 0x09, 0x1a, 0x09, + 0x9e, 0x09, 0xa3, 0x09, 0x1d, 0x0a, 0x1c, 0x0a, 0x8b, 0x0a, 0x8e, 0x0a, + 0xee, 0x0a, 0xf2, 0x0a, 0x46, 0x0b, 0x47, 0x0b, 0x8f, 0x0b, 0x92, 0x0b, + 0xcb, 0x0b, 0xcc, 0x0b, 0xf7, 0x0b, 0xfb, 0x0b, 0x16, 0x0c, 0x18, 0x0c, + 0x25, 0x0c, 0x25, 0x0c, 0x25, 0x0c, 0x28, 0x0c, 0x14, 0x0c, 0x17, 0x0c, + 0xf9, 0x0b, 0xfb, 0x0b, 0xc8, 0x0b, 0xcb, 0x0b, 0x8d, 0x0b, 0x8e, 0x0b, + 0x40, 0x0b, 0x42, 0x0b, 0xe5, 0x0a, 0xe6, 0x0a, 0x7c, 0x0a, 0x7f, 0x0a, + 0x03, 0x0a, 0x06, 0x0a, 0x80, 0x09, 0x82, 0x09, 0xef, 0x08, 0xf1, 0x08, + 0x54, 0x08, 0x57, 0x08, 0xaf, 0x07, 0xb0, 0x07, 0xfd, 0x06, 0x03, 0x07, + 0x48, 0x06, 0x4a, 0x06, 0x8a, 0x05, 0x8c, 0x05, 0xc4, 0x04, 0xc7, 0x04, + 0xf8, 0x03, 0xfb, 0x03, 0x2a, 0x03, 0x2e, 0x03, 0x57, 0x02, 0x57, 0x02, + 0x81, 0x01, 0x85, 0x01, 0xa9, 0x00, 0xad, 0x00, 0xd3, 0xff, 0xd3, 0xff, + 0xfa, 0xfe, 0x01, 0xff, 0x26, 0xfe, 0x27, 0xfe, 0x52, 0xfd, 0x57, 0xfd, + 0x83, 0xfc, 0x87, 0xfc, 0xb7, 0xfb, 0xb9, 0xfb, 0xf1, 0xfa, 0xf5, 0xfa, + 0x2d, 0xfa, 0x30, 0xfa, 0x72, 0xf9, 0x77, 0xf9, 0xc1, 0xf8, 0xc3, 0xf8, + 0x13, 0xf8, 0x17, 0xf8, 0x71, 0xf7, 0x75, 0xf7, 0xd6, 0xf6, 0xdc, 0xf6, + 0x49, 0xf6, 0x4d, 0xf6, 0xc6, 0xf5, 0xc8, 0xf5, 0x4d, 0xf5, 0x52, 0xf5, + 0xe1, 0xf4, 0xe4, 0xf4, 0x81, 0xf4, 0x85, 0xf4, 0x2e, 0xf4, 0x32, 0xf4, + 0xec, 0xf3, 0xee, 0xf3, 0xb4, 0xf3, 0xb8, 0xf3, 0x8f, 0xf3, 0x92, 0xf3, + 0x73, 0xf3, 0x76, 0xf3, 0x69, 0xf3, 0x6e, 0xf3, 0x71, 0xf3, 0x72, 0xf3, + 0x84, 0xf3, 0x89, 0xf3, 0xab, 0xf3, 0xad, 0xf3, 0xde, 0xf3, 0xe1, 0xf3, + 0x23, 0xf4, 0x26, 0xf4, 0x76, 0xf4, 0x78, 0xf4, 0xd7, 0xf4, 0xda, 0xf4, + 0x48, 0xf5, 0x4c, 0xf5, 0xc4, 0xf5, 0xc4, 0xf5, 0x4b, 0xf6, 0x52, 0xf6, + 0xe0, 0xf6, 0xe2, 0xf6, 0x81, 0xf7, 0x83, 0xf7, 0x28, 0xf8, 0x2d, 0xf8, + 0xde, 0xf8, 0xdf, 0xf8, 0x98, 0xf9, 0x9c, 0xf9, 0x59, 0xfa, 0x59, 0xfa, + 0x23, 0xfb, 0x26, 0xfb, 0xef, 0xfb, 0xf2, 0xfb, 0xc0, 0xfc, 0xc4, 0xfc, + 0x96, 0xfd, 0x99, 0xfd, 0x6c, 0xfe, 0x6e, 0xfe, 0x43, 0xff, 0x45, 0xff, + 0x1d, 0x00, 0x1f, 0x00, 0xf3, 0x00, 0xf6, 0x00, 0xca, 0x01, 0xce, 0x01, + 0x9f, 0x02, 0xa0, 0x02, 0x6e, 0x03, 0x72, 0x03, 0x3b, 0x04, 0x3c, 0x04, + 0x03, 0x05, 0x04, 0x05, 0xc4, 0x05, 0xc6, 0x05, 0x7d, 0x06, 0x80, 0x06, + 0x31, 0x07, 0x33, 0x07, 0xdc, 0x07, 0xdf, 0x07, 0x80, 0x08, 0x81, 0x08, + 0x17, 0x09, 0x1a, 0x09, 0xa7, 0x09, 0xa8, 0x09, 0x2b, 0x0a, 0x2c, 0x0a, + 0xa1, 0x0a, 0xa4, 0x0a, 0x10, 0x0b, 0x10, 0x0b, 0x6a, 0x0b, 0x6d, 0x0b, + 0xc0, 0x0b, 0xc2, 0x0b, 0x02, 0x0c, 0x03, 0x0c, 0x37, 0x0c, 0x3b, 0x0c, + 0x60, 0x0c, 0x61, 0x0c, 0x76, 0x0c, 0x7a, 0x0c, 0x7f, 0x0c, 0x80, 0x0c, + 0x79, 0x0c, 0x7b, 0x0c, 0x60, 0x0c, 0x65, 0x0c, 0x3b, 0x0c, 0x3d, 0x0c, + 0x04, 0x0c, 0x07, 0x0c, 0xc1, 0x0b, 0xc4, 0x0b, 0x6c, 0x0b, 0x70, 0x0b, + 0x0a, 0x0b, 0x0c, 0x0b, 0x99, 0x0a, 0x9c, 0x0a, 0x1b, 0x0a, 0x1f, 0x0a, + 0x93, 0x09, 0x93, 0x09, 0xfa, 0x08, 0x02, 0x09, 0x5f, 0x08, 0x5e, 0x08, + 0xb3, 0x07, 0xb7, 0x07, 0x00, 0x07, 0x03, 0x07, 0x47, 0x06, 0x4a, 0x06, + 0x85, 0x05, 0x87, 0x05, 0xbe, 0x04, 0xc1, 0x04, 0xf1, 0x03, 0xf3, 0x03, + 0x20, 0x03, 0x23, 0x03, 0x4d, 0x02, 0x50, 0x02, 0x77, 0x01, 0x7a, 0x01, + 0xa2, 0x00, 0xa4, 0x00, 0xcb, 0xff, 0xce, 0xff, 0xf7, 0xfe, 0xf9, 0xfe, + 0x23, 0xfe, 0x26, 0xfe, 0x54, 0xfd, 0x56, 0xfd, 0x87, 0xfc, 0x8a, 0xfc, + 0xbd, 0xfb, 0xc0, 0xfb, 0xfd, 0xfa, 0xfe, 0xfa, 0x3c, 0xfa, 0x40, 0xfa, + 0x88, 0xf9, 0x8a, 0xf9, 0xd8, 0xf8, 0xdb, 0xf8, 0x31, 0xf8, 0x33, 0xf8, + 0x95, 0xf7, 0x97, 0xf7, 0x00, 0xf7, 0x03, 0xf7, 0x78, 0xf6, 0x7a, 0xf6, + 0xf9, 0xf5, 0xfc, 0xf5, 0x85, 0xf5, 0x88, 0xf5, 0x20, 0xf5, 0x22, 0xf5, + 0xc6, 0xf4, 0xc7, 0xf4, 0x79, 0xf4, 0x7b, 0xf4, 0x3a, 0xf4, 0x3b, 0xf4, + 0x09, 0xf4, 0x0d, 0xf4, 0xe8, 0xf3, 0xe9, 0xf3, 0xd3, 0xf3, 0xd7, 0xf3, + 0xd1, 0xf3, 0xd3, 0xf3, 0xda, 0xf3, 0xdb, 0xf3, 0xf5, 0xf3, 0xf7, 0xf3, + 0x1f, 0xf4, 0x22, 0xf4, 0x58, 0xf4, 0x5a, 0xf4, 0xa2, 0xf4, 0xa4, 0xf4, + 0xf8, 0xf4, 0xfa, 0xf4, 0x60, 0xf5, 0x60, 0xf5, 0xd1, 0xf5, 0xd6, 0xf5, + 0x52, 0xf6, 0x53, 0xf6, 0xdf, 0xf6, 0xe1, 0xf6, 0x76, 0xf7, 0x78, 0xf7, + 0x19, 0xf8, 0x1b, 0xf8, 0xc6, 0xf8, 0xc7, 0xf8, 0x7c, 0xf9, 0x7f, 0xf9, + 0x3b, 0xfa, 0x3c, 0xfa, 0xfe, 0xfa, 0xff, 0xfa, 0xc8, 0xfb, 0xcb, 0xfb, + 0x98, 0xfc, 0x99, 0xfc, 0x68, 0xfd, 0x6b, 0xfd, 0x41, 0xfe, 0x41, 0xfe, + 0x15, 0xff, 0x18, 0xff, 0xef, 0xff, 0xf3, 0xff, 0xc6, 0x00, 0xc7, 0x00, + 0x9e, 0x01, 0xa2, 0x01, 0x72, 0x02, 0x74, 0x02, 0x46, 0x03, 0x48, 0x03, + 0x15, 0x04, 0x18, 0x04, 0xdf, 0x04, 0xe0, 0x04, 0xa5, 0x05, 0xa8, 0x05, + 0x62, 0x06, 0x62, 0x06, 0x18, 0x07, 0x1c, 0x07, 0xc9, 0x07, 0xca, 0x07, + 0x6e, 0x08, 0x71, 0x08, 0x0e, 0x09, 0x0f, 0x09, 0xa0, 0x09, 0xa2, 0x09, + 0x29, 0x0a, 0x2c, 0x0a, 0xa6, 0x0a, 0xa8, 0x0a, 0x17, 0x0b, 0x1a, 0x0b, + 0x7b, 0x0b, 0x80, 0x0b, 0xd6, 0x0b, 0xd7, 0x0b, 0x1e, 0x0c, 0x22, 0x0c, + 0x5a, 0x0c, 0x5c, 0x0c, 0x87, 0x0c, 0x8b, 0x0c, 0xa6, 0x0c, 0xa7, 0x0c, + 0xb5, 0x0c, 0xb8, 0x0c, 0xb4, 0x0c, 0xb7, 0x0c, 0xa5, 0x0c, 0xa6, 0x0c, + 0x84, 0x0c, 0x87, 0x0c, 0x56, 0x0c, 0x5a, 0x0c, 0x18, 0x0c, 0x18, 0x0c, + 0xc8, 0x0b, 0xcc, 0x0b, 0x6b, 0x0b, 0x6d, 0x0b, 0x03, 0x0b, 0x06, 0x0b, + 0x89, 0x0a, 0x8c, 0x0a, 0x03, 0x0a, 0x07, 0x0a, 0x76, 0x09, 0x78, 0x09, + 0xd7, 0x08, 0xda, 0x08, 0x34, 0x08, 0x35, 0x08, 0x80, 0x07, 0x84, 0x07, + 0xcc, 0x06, 0xcd, 0x06, 0x0b, 0x06, 0x10, 0x06, 0x47, 0x05, 0x48, 0x05, + 0x7a, 0x04, 0x81, 0x04, 0xad, 0x03, 0xaf, 0x03, 0xd9, 0x02, 0xdd, 0x02, + 0x03, 0x02, 0x05, 0x02, 0x2d, 0x01, 0x2e, 0x01, 0x56, 0x00, 0x59, 0x00, + 0x7c, 0xff, 0x7f, 0xff, 0xa9, 0xfe, 0xaa, 0xfe, 0xd4, 0xfd, 0xd8, 0xfd, + 0x06, 0xfd, 0x04, 0xfd, 0x37, 0xfc, 0x3b, 0xfc, 0x70, 0xfb, 0x70, 0xfb, + 0xab, 0xfa, 0xae, 0xfa, 0xf3, 0xf9, 0xf3, 0xf9, 0x3b, 0xf9, 0x3d, 0xf9, + 0x90, 0xf8, 0x91, 0xf8, 0xe9, 0xf7, 0xea, 0xf7, 0x4e, 0xf7, 0x4f, 0xf7, + 0xbf, 0xf6, 0xc0, 0xf6, 0x35, 0xf6, 0x39, 0xf6, 0xbc, 0xf5, 0xbd, 0xf5, + 0x4d, 0xf5, 0x4e, 0xf5, 0xe9, 0xf4, 0xeb, 0xf4, 0x93, 0xf4, 0x95, 0xf4, + 0x49, 0xf4, 0x4b, 0xf4, 0x11, 0xf4, 0x12, 0xf4, 0xe4, 0xf3, 0xe5, 0xf3, + 0xc9, 0xf3, 0xc8, 0xf3, 0xb7, 0xf3, 0xbb, 0xf3, 0xb9, 0xf3, 0xb9, 0xf3, + 0xc9, 0xf3, 0xcb, 0xf3, 0xea, 0xf3, 0xea, 0xf3, 0x19, 0xf4, 0x1a, 0xf4, + 0x56, 0xf4, 0x58, 0xf4, 0xa7, 0xf4, 0xa9, 0xf4, 0x02, 0xf5, 0x03, 0xf5, + 0x6f, 0xf5, 0x73, 0xf5, 0xe6, 0xf5, 0xe5, 0xf5, 0x6c, 0xf6, 0x6e, 0xf6, + 0xfb, 0xf6, 0xfc, 0xf6, 0x97, 0xf7, 0x99, 0xf7, 0x40, 0xf8, 0x40, 0xf8, + 0xec, 0xf8, 0xee, 0xf8, 0xa9, 0xf9, 0xa7, 0xf9, 0x63, 0xfa, 0x67, 0xfa, + 0x2d, 0xfb, 0x2c, 0xfb, 0xf6, 0xfb, 0xf9, 0xfb, 0xc7, 0xfc, 0xc7, 0xfc, + 0x9b, 0xfd, 0x9b, 0xfd, 0x6c, 0xfe, 0x6f, 0xfe, 0x46, 0xff, 0x45, 0xff, + 0x1b, 0x00, 0x1d, 0x00, 0xf3, 0x00, 0xf3, 0x00, 0xc5, 0x01, 0xc7, 0x01, + 0x98, 0x02, 0x99, 0x02, 0x69, 0x03, 0x6a, 0x03, 0x33, 0x04, 0x35, 0x04, + 0xf9, 0x04, 0xfb, 0x04, 0xb9, 0x05, 0xba, 0x05, 0x75, 0x06, 0x75, 0x06, + 0x23, 0x07, 0x24, 0x07, 0xcf, 0x07, 0xd1, 0x07, 0x71, 0x08, 0x72, 0x08, + 0x08, 0x09, 0x08, 0x09, 0x96, 0x09, 0x98, 0x09, 0x16, 0x0a, 0x17, 0x0a, + 0x90, 0x0a, 0x90, 0x0a, 0xf9, 0x0a, 0xfa, 0x0a, 0x56, 0x0b, 0x57, 0x0b, + 0xaa, 0x0b, 0xab, 0x0b, 0xe8, 0x0b, 0xea, 0x0b, 0x23, 0x0c, 0x22, 0x0c, + 0x44, 0x0c, 0x47, 0x0c, 0x5d, 0x0c, 0x5d, 0x0c, 0x67, 0x0c, 0x67, 0x0c, + 0x5e, 0x0c, 0x60, 0x0c, 0x4a, 0x0c, 0x49, 0x0c, 0x21, 0x0c, 0x23, 0x0c, + 0xee, 0x0b, 0xee, 0x0b, 0xa9, 0x0b, 0xaa, 0x0b, 0x56, 0x0b, 0x56, 0x0b, + 0xf5, 0x0a, 0xf5, 0x0a, 0x81, 0x0a, 0x84, 0x0a, 0x07, 0x0a, 0x06, 0x0a, + 0x7a, 0x09, 0x7c, 0x09, 0xe7, 0x08, 0xe5, 0x08, 0x45, 0x08, 0x46, 0x08, + 0x9c, 0x07, 0x9c, 0x07, 0xe5, 0x06, 0xe6, 0x06, 0x2e, 0x06, 0x2e, 0x06, + 0x68, 0x05, 0x69, 0x05, 0xa1, 0x04, 0xa1, 0x04, 0xd2, 0x03, 0xd2, 0x03, + 0xfd, 0x02, 0xfe, 0x02, 0x2a, 0x02, 0x29, 0x02, 0x4f, 0x01, 0x53, 0x01, + 0x79, 0x00, 0x79, 0x00, 0x9d, 0xff, 0x9f, 0xff, 0xc7, 0xfe, 0xc8, 0xfe, + 0xef, 0xfd, 0xf1, 0xfd, 0x1d, 0xfd, 0x1d, 0xfd, 0x4b, 0xfc, 0x4d, 0xfc, + 0x7f, 0xfb, 0x7f, 0xfb, 0xb7, 0xfa, 0xb8, 0xfa, 0xf5, 0xf9, 0xf5, 0xf9, + 0x3a, 0xf9, 0x3b, 0xf9, 0x86, 0xf8, 0x85, 0xf8, 0xdc, 0xf7, 0xde, 0xf7, + 0x3a, 0xf7, 0x3a, 0xf7, 0xa1, 0xf6, 0xa3, 0xf6, 0x14, 0xf6, 0x14, 0xf6, + 0x8e, 0xf5, 0x90, 0xf5, 0x1c, 0xf5, 0x1d, 0xf5, 0xae, 0xf4, 0xae, 0xf4, + 0x55, 0xf4, 0x55, 0xf4, 0x01, 0xf4, 0x03, 0xf4, 0xc1, 0xf3, 0xc2, 0xf3, + 0x8e, 0xf3, 0x90, 0xf3, 0x67, 0xf3, 0x68, 0xf3, 0x56, 0xf3, 0x58, 0xf3, + 0x4a, 0xf3, 0x4c, 0xf3, 0x57, 0xf3, 0x57, 0xf3, 0x6f, 0xf3, 0x71, 0xf3, + 0x9a, 0xf3, 0x98, 0xf3, 0xd1, 0xf3, 0xd5, 0xf3, 0x18, 0xf4, 0x16, 0xf4, + 0x71, 0xf4, 0x74, 0xf4, 0xd4, 0xf4, 0xd5, 0xf4, 0x49, 0xf5, 0x4a, 0xf5, + 0xc7, 0xf5, 0xca, 0xf5, 0x54, 0xf6, 0x53, 0xf6, 0xeb, 0xf6, 0xee, 0xf6, + 0x8c, 0xf7, 0x8d, 0xf7, 0x38, 0xf8, 0x39, 0xf8, 0xf0, 0xf8, 0xf0, 0xf8, + 0xa7, 0xf9, 0xa9, 0xf9, 0x71, 0xfa, 0x70, 0xfa, 0x34, 0xfb, 0x36, 0xfb, + 0x07, 0xfc, 0x07, 0xfc, 0xd6, 0xfc, 0xd8, 0xfc, 0xaa, 0xfd, 0xa9, 0xfd, + 0x81, 0xfe, 0x83, 0xfe, 0x56, 0xff, 0x57, 0xff, 0x31, 0x00, 0x31, 0x00, + 0x03, 0x01, 0x04, 0x01, 0xd5, 0x01, 0xd7, 0x01, 0xab, 0x02, 0xab, 0x02, + 0x74, 0x03, 0x75, 0x03, 0x41, 0x04, 0x43, 0x04, 0x02, 0x05, 0x02, 0x05, + 0xc1, 0x05, 0xc2, 0x05, 0x77, 0x06, 0x79, 0x06, 0x26, 0x07, 0x29, 0x07, + 0xcd, 0x07, 0xce, 0x07, 0x6a, 0x08, 0x6d, 0x08, 0x00, 0x09, 0x00, 0x09, + 0x86, 0x09, 0x88, 0x09, 0x08, 0x0a, 0x09, 0x0a, 0x78, 0x0a, 0x79, 0x0a, + 0xdf, 0x0a, 0xe1, 0x0a, 0x38, 0x0b, 0x38, 0x0b, 0x85, 0x0b, 0x87, 0x0b, + 0xc4, 0x0b, 0xc3, 0x0b, 0xf1, 0x0b, 0xf3, 0x0b, 0x14, 0x0c, 0x16, 0x0c, + 0x26, 0x0c, 0x26, 0x0c, 0x28, 0x0c, 0x2b, 0x0c, 0x1e, 0x0c, 0x1e, 0x0c, + 0x02, 0x0c, 0x05, 0x0c, 0xd7, 0x0b, 0xd8, 0x0b, 0x9e, 0x0b, 0x9e, 0x0b, + 0x54, 0x0b, 0x57, 0x0b, 0xfd, 0x0a, 0xfe, 0x0a, 0x94, 0x0a, 0x96, 0x0a, + 0x21, 0x0a, 0x20, 0x0a, 0x9e, 0x09, 0xa1, 0x09, 0x11, 0x09, 0x10, 0x09, + 0x77, 0x08, 0x7a, 0x08, 0xd1, 0x07, 0xd2, 0x07, 0x25, 0x07, 0x27, 0x07, + 0x6e, 0x06, 0x6e, 0x06, 0xb1, 0x05, 0xb3, 0x05, 0xef, 0x04, 0xee, 0x04, + 0x21, 0x04, 0x25, 0x04, 0x55, 0x03, 0x54, 0x03, 0x7f, 0x02, 0x81, 0x02, + 0xa9, 0x01, 0xad, 0x01, 0xd4, 0x00, 0xd4, 0x00, 0xfa, 0xff, 0xfd, 0xff, + 0x24, 0xff, 0x25, 0xff, 0x4c, 0xfe, 0x4d, 0xfe, 0x79, 0xfd, 0x7c, 0xfd, + 0xa6, 0xfc, 0xa6, 0xfc, 0xda, 0xfb, 0xdb, 0xfb, 0x12, 0xfb, 0x13, 0xfb, + 0x4d, 0xfa, 0x4e, 0xfa, 0x92, 0xf9, 0x93, 0xf9, 0xdb, 0xf8, 0xdb, 0xf8, + 0x2e, 0xf8, 0x2f, 0xf8, 0x8b, 0xf7, 0x8d, 0xf7, 0xed, 0xf6, 0xef, 0xf6, + 0x5e, 0xf6, 0x5f, 0xf6, 0xd6, 0xf5, 0xd7, 0xf5, 0x5a, 0xf5, 0x5c, 0xf5, + 0xee, 0xf4, 0xef, 0xf4, 0x89, 0xf4, 0x8b, 0xf4, 0x36, 0xf4, 0x38, 0xf4, + 0xed, 0xf3, 0xee, 0xf3, 0xb4, 0xf3, 0xb6, 0xf3, 0x8a, 0xf3, 0x8c, 0xf3, + 0x6d, 0xf3, 0x6e, 0xf3, 0x62, 0xf3, 0x64, 0xf3, 0x63, 0xf3, 0x63, 0xf3, + 0x76, 0xf3, 0x76, 0xf3, 0x98, 0xf3, 0x99, 0xf3, 0xc9, 0xf3, 0xc9, 0xf3, + 0x0b, 0xf4, 0x0c, 0xf4, 0x5a, 0xf4, 0x59, 0xf4, 0xb7, 0xf4, 0xba, 0xf4, + 0x27, 0xf5, 0x26, 0xf5, 0x9f, 0xf5, 0xa2, 0xf5, 0x25, 0xf6, 0x24, 0xf6, + 0xb7, 0xf6, 0xba, 0xf6, 0x54, 0xf7, 0x55, 0xf7, 0xfd, 0xf7, 0xfd, 0xf7, + 0xac, 0xf8, 0xad, 0xf8, 0x66, 0xf9, 0x66, 0xf9, 0x27, 0xfa, 0x29, 0xfa, + 0xec, 0xfa, 0xed, 0xfa, 0xba, 0xfb, 0xbb, 0xfb, 0x8a, 0xfc, 0x8b, 0xfc, + 0x60, 0xfd, 0x5f, 0xfd, 0x35, 0xfe, 0x35, 0xfe, 0x0e, 0xff, 0x0d, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xbd, 0x00, 0xbf, 0x00, 0x94, 0x01, 0x94, 0x01, + 0x68, 0x02, 0x6a, 0x02, 0x3a, 0x03, 0x39, 0x03, 0x07, 0x04, 0x09, 0x04, + 0xd2, 0x04, 0xd0, 0x04, 0x92, 0x05, 0x93, 0x05, 0x51, 0x06, 0x51, 0x06, + 0x04, 0x07, 0x07, 0x07, 0xb4, 0x07, 0xb4, 0x07, 0x58, 0x08, 0x59, 0x08, + 0xf4, 0x08, 0xf6, 0x08, 0x86, 0x09, 0x86, 0x09, 0x0c, 0x0a, 0x0e, 0x0a, + 0x88, 0x0a, 0x89, 0x0a, 0xf7, 0x0a, 0xf8, 0x0a, 0x5b, 0x0b, 0x5d, 0x0b, + 0xb1, 0x0b, 0xb1, 0x0b, 0xfa, 0x0b, 0xfb, 0x0b, 0x33, 0x0c, 0x34, 0x0c, + 0x61, 0x0c, 0x61, 0x0c, 0x7c, 0x0c, 0x7e, 0x0c, 0x8b, 0x0c, 0x8c, 0x0c, + 0x89, 0x0c, 0x8a, 0x0c, 0x78, 0x0c, 0x79, 0x0c, 0x58, 0x0c, 0x59, 0x0c, + 0x27, 0x0c, 0x28, 0x0c, 0xe8, 0x0b, 0xe8, 0x0b, 0x99, 0x0b, 0x9a, 0x0b, + 0x3b, 0x0b, 0x3b, 0x0b, 0xd1, 0x0a, 0xd3, 0x0a, 0x56, 0x0a, 0x57, 0x0a, + 0xd2, 0x09, 0xd3, 0x09, 0x3f, 0x09, 0x3f, 0x09, 0xa4, 0x08, 0xa5, 0x08, + 0xfb, 0x07, 0xfd, 0x07, 0x4d, 0x07, 0x4b, 0x07, 0x94, 0x06, 0x96, 0x06, + 0xd3, 0x05, 0xd4, 0x05, 0x11, 0x05, 0x12, 0x05, 0x43, 0x04, 0x44, 0x04, + 0x73, 0x03, 0x75, 0x03, 0xa0, 0x02, 0x9f, 0x02, 0xc4, 0x01, 0xc7, 0x01, + 0xf1, 0x00, 0xf1, 0x00, 0x13, 0x00, 0x14, 0x00, 0x3e, 0xff, 0x40, 0xff, + 0x68, 0xfe, 0x65, 0xfe, 0x8d, 0xfd, 0x91, 0xfd, 0xb8, 0xfc, 0xb7, 0xfc, + 0xd7, 0xfb, 0xd8, 0xfb, 0x05, 0xfb, 0x05, 0xfb, 0x2c, 0xfa, 0x2c, 0xfa, + 0x61, 0xf9, 0x61, 0xf9, 0x9b, 0xf8, 0x9d, 0xf8, 0xe1, 0xf7, 0xe0, 0xf7, + 0x33, 0xf7, 0x34, 0xf7, 0x8f, 0xf6, 0x8f, 0xf6, 0xf9, 0xf5, 0xfa, 0xf5, + 0x70, 0xf5, 0x71, 0xf5, 0xf5, 0xf4, 0xf3, 0xf4, 0x89, 0xf4, 0x8b, 0xf4, + 0x2e, 0xf4, 0x2d, 0xf4, 0xe0, 0xf3, 0xe0, 0xf3, 0xa6, 0xf3, 0xa6, 0xf3, + 0x78, 0xf3, 0x7a, 0xf3, 0x60, 0xf3, 0x60, 0xf3, 0x53, 0xf3, 0x54, 0xf3, + 0x5c, 0xf3, 0x5c, 0xf3, 0x71, 0xf3, 0x73, 0xf3, 0x9a, 0xf3, 0x9a, 0xf3, + 0xd5, 0xf3, 0xd6, 0xf3, 0x1f, 0xf4, 0x20, 0xf4, 0x77, 0xf4, 0x77, 0xf4, + 0xe2, 0xf4, 0xe3, 0xf4, 0x56, 0xf5, 0x58, 0xf5, 0xdf, 0xf5, 0xe0, 0xf5, + 0x6e, 0xf6, 0x70, 0xf6, 0x0e, 0xf7, 0x0e, 0xf7, 0xb6, 0xf7, 0xb8, 0xf7, + 0x68, 0xf8, 0x68, 0xf8, 0x24, 0xf9, 0x25, 0xf9, 0xe7, 0xf9, 0xe9, 0xf9, + 0xaf, 0xfa, 0xaf, 0xfa, 0x83, 0xfb, 0x83, 0xfb, 0x4f, 0xfc, 0x50, 0xfc, + 0x28, 0xfd, 0x29, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xd7, 0xfe, 0xd8, 0xfe, + 0xb0, 0xff, 0xb2, 0xff, 0x88, 0x00, 0x87, 0x00, 0x5f, 0x01, 0x60, 0x01, + 0x30, 0x02, 0x31, 0x02, 0xfe, 0x02, 0xff, 0x02, 0xca, 0x03, 0xcb, 0x03, + 0x8e, 0x04, 0x8d, 0x04, 0x4b, 0x05, 0x4d, 0x05, 0x02, 0x06, 0x02, 0x06, + 0xaf, 0x06, 0xb0, 0x06, 0x56, 0x07, 0x57, 0x07, 0xf2, 0x07, 0xf3, 0x07, + 0x85, 0x08, 0x84, 0x08, 0x0d, 0x09, 0x0e, 0x09, 0x8a, 0x09, 0x8b, 0x09, + 0xfb, 0x09, 0xfc, 0x09, 0x60, 0x0a, 0x61, 0x0a, 0xb9, 0x0a, 0xb9, 0x0a, + 0x02, 0x0b, 0x02, 0x0b, 0x43, 0x0b, 0x44, 0x0b, 0x71, 0x0b, 0x72, 0x0b, + 0x96, 0x0b, 0x96, 0x0b, 0xaa, 0x0b, 0xac, 0x0b, 0xb2, 0x0b, 0xb0, 0x0b, + 0xab, 0x0b, 0xad, 0x0b, 0x97, 0x0b, 0x97, 0x0b, 0x74, 0x0b, 0x75, 0x0b, + 0x45, 0x0b, 0x44, 0x0b, 0x05, 0x0b, 0x08, 0x0b, 0xbd, 0x0a, 0xbc, 0x0a, + 0x67, 0x0a, 0x66, 0x0a, 0x02, 0x0a, 0x06, 0x0a, 0x96, 0x09, 0x95, 0x09, + 0x1d, 0x09, 0x1f, 0x09, 0x9e, 0x08, 0x9e, 0x08, 0x12, 0x08, 0x13, 0x08, + 0x7d, 0x07, 0x80, 0x07, 0xe6, 0x06, 0xe4, 0x06, 0x43, 0x06, 0x47, 0x06, + 0xa1, 0x05, 0x9e, 0x05, 0xf2, 0x04, 0xf5, 0x04, 0x47, 0x04, 0x48, 0x04, + 0x95, 0x03, 0x94, 0x03, 0xdf, 0x02, 0xe0, 0x02, 0x2c, 0x02, 0x2b, 0x02, + 0x74, 0x01, 0x77, 0x01, 0xc0, 0x00, 0xbe, 0x00, 0x0b, 0x00, 0x0e, 0x00, + 0x57, 0xff, 0x56, 0xff, 0xa9, 0xfe, 0xaa, 0xfe, 0xfc, 0xfd, 0xfc, 0xfd, + 0x54, 0xfd, 0x54, 0xfd, 0xaf, 0xfc, 0xb0, 0xfc, 0x11, 0xfc, 0x10, 0xfc, + 0x76, 0xfb, 0x79, 0xfb, 0xe7, 0xfa, 0xe6, 0xfa, 0x5c, 0xfa, 0x5c, 0xfa, + 0xd8, 0xf9, 0xd9, 0xf9, 0x5e, 0xf9, 0x5d, 0xf9, 0xeb, 0xf8, 0xed, 0xf8, + 0x83, 0xf8, 0x82, 0xf8, 0x26, 0xf8, 0x25, 0xf8, 0xce, 0xf7, 0xcf, 0xf7, + 0x85, 0xf7, 0x84, 0xf7, 0x43, 0xf7, 0x44, 0xf7, 0x0e, 0xf7, 0x0e, 0xf7, + 0xe3, 0xf6, 0xe4, 0xf6, 0xc5, 0xf6, 0xc5, 0xf6, 0xb0, 0xf6, 0xb0, 0xf6, + 0xa8, 0xf6, 0xa7, 0xf6, 0xa9, 0xf6, 0xaa, 0xf6, 0xb6, 0xf6, 0xb5, 0xf6, + 0xd0, 0xf6, 0xd0, 0xf6, 0xf1, 0xf6, 0xf1, 0xf6, 0x22, 0xf7, 0x22, 0xf7, + 0x59, 0xf7, 0x5b, 0xf7, 0x9e, 0xf7, 0x9c, 0xf7, 0xe8, 0xf7, 0xea, 0xf7, + 0x3f, 0xf8, 0x3f, 0xf8, 0x9f, 0xf8, 0x9f, 0xf8, 0x06, 0xf9, 0x06, 0xf9, + 0x73, 0xf9, 0x73, 0xf9, 0xe8, 0xf9, 0xe7, 0xf9, 0x61, 0xfa, 0x66, 0xfa, + 0xe5, 0xfa, 0xe3, 0xfa, 0x6a, 0xfb, 0x6d, 0xfb, 0xf4, 0xfb, 0xf3, 0xfb, + 0x82, 0xfc, 0x83, 0xfc, 0x11, 0xfd, 0x12, 0xfd, 0xa4, 0xfd, 0xa4, 0xfd, + 0x38, 0xfe, 0x38, 0xfe, 0xc9, 0xfe, 0xca, 0xfe, 0x5f, 0xff, 0x60, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0x84, 0x00, 0x83, 0x00, 0x12, 0x01, 0x14, 0x01, + 0xa0, 0x01, 0xa1, 0x01, 0x2b, 0x02, 0x2b, 0x02, 0xb0, 0x02, 0xb0, 0x02, + 0x33, 0x03, 0x33, 0x03, 0xb0, 0x03, 0xb2, 0x03, 0x27, 0x04, 0x25, 0x04, + 0x99, 0x04, 0x9b, 0x04, 0x04, 0x05, 0x02, 0x05, 0x68, 0x05, 0x69, 0x05, + 0xc4, 0x05, 0xc4, 0x05, 0x18, 0x06, 0x17, 0x06, 0x66, 0x06, 0x68, 0x06, + 0xab, 0x06, 0xaa, 0x06, 0xe7, 0x06, 0xe9, 0x06, 0x1d, 0x07, 0x1b, 0x07, + 0x47, 0x07, 0x47, 0x07, 0x69, 0x07, 0x69, 0x07, 0x82, 0x07, 0x82, 0x07, + 0x93, 0x07, 0x91, 0x07, 0x98, 0x07, 0x99, 0x07, 0x93, 0x07, 0x93, 0x07, + 0x88, 0x07, 0x89, 0x07, 0x74, 0x07, 0x73, 0x07, 0x55, 0x07, 0x56, 0x07, + 0x2f, 0x07, 0x2e, 0x07, 0x00, 0x07, 0x00, 0x07, 0xc9, 0x06, 0xc9, 0x06, + 0x8a, 0x06, 0x8b, 0x06, 0x43, 0x06, 0x43, 0x06, 0xf5, 0x05, 0xf7, 0x05, + 0xa3, 0x05, 0xa1, 0x05, 0x48, 0x05, 0x49, 0x05, 0xe9, 0x04, 0xe8, 0x04, + 0x84, 0x04, 0x84, 0x04, 0x19, 0x04, 0x1a, 0x04, 0xae, 0x03, 0xb0, 0x03, + 0x3e, 0x03, 0x3d, 0x03, 0xcb, 0x02, 0xcc, 0x02, 0x55, 0x02, 0x55, 0x02, + 0xde, 0x01, 0xde, 0x01, 0x67, 0x01, 0x66, 0x01, 0xec, 0x00, 0xed, 0x00, + 0x76, 0x00, 0x74, 0x00, 0xfc, 0xff, 0xfd, 0xff, 0x87, 0xff, 0x85, 0xff, + 0x11, 0xff, 0x12, 0xff, 0xa0, 0xfe, 0x9f, 0xfe, 0x2f, 0xfe, 0x2e, 0xfe, + 0xc1, 0xfd, 0xc0, 0xfd, 0x59, 0xfd, 0x5a, 0xfd, 0xf1, 0xfc, 0xf0, 0xfc, + 0x92, 0xfc, 0x91, 0xfc, 0x36, 0xfc, 0x36, 0xfc, 0xde, 0xfb, 0xdc, 0xfb, + 0x8f, 0xfb, 0x90, 0xfb, 0x41, 0xfb, 0x40, 0xfb, 0xfe, 0xfa, 0xfe, 0xfa, + 0xc0, 0xfa, 0xbe, 0xfa, 0x85, 0xfa, 0x85, 0xfa, 0x5b, 0xfa, 0x57, 0xfa, + 0x2b, 0xfa, 0x2b, 0xfa, 0x0c, 0xfa, 0x0a, 0xfa, 0xef, 0xf9, 0xef, 0xf9, + 0xdd, 0xf9, 0xdc, 0xf9, 0xd2, 0xf9, 0xd1, 0xf9, 0xcc, 0xf9, 0xcc, 0xf9, + 0xd1, 0xf9, 0xd0, 0xf9, 0xdb, 0xf9, 0xd9, 0xf9, 0xed, 0xf9, 0xed, 0xf9, + 0x06, 0xfa, 0x05, 0xfa, 0x27, 0xfa, 0x26, 0xfa, 0x4e, 0xfa, 0x4d, 0xfa, + 0x7b, 0xfa, 0x7a, 0xfa, 0xaf, 0xfa, 0xae, 0xfa, 0xe7, 0xfa, 0xe8, 0xfa, + 0x27, 0xfb, 0x25, 0xfb, 0x6b, 0xfb, 0x6b, 0xfb, 0xb4, 0xfb, 0xb3, 0xfb, + 0x00, 0xfc, 0x00, 0xfc, 0x52, 0xfc, 0x52, 0xfc, 0xa4, 0xfc, 0xa5, 0xfc, + 0xff, 0xfc, 0xfe, 0xfc, 0x56, 0xfd, 0x57, 0xfd, 0xb6, 0xfd, 0xb4, 0xfd, + 0x11, 0xfe, 0x13, 0xfe, 0x73, 0xfe, 0x71, 0xfe, 0xd1, 0xfe, 0xd2, 0xfe, + 0x31, 0xff, 0x30, 0xff, 0x91, 0xff, 0x91, 0xff, 0xef, 0xff, 0xf1, 0xff, + 0x4f, 0x00, 0x4e, 0x00, 0xab, 0x00, 0xab, 0x00, 0x08, 0x01, 0x06, 0x01, + 0x5e, 0x01, 0x5e, 0x01, 0xb4, 0x01, 0xb4, 0x01, 0x07, 0x02, 0x07, 0x02, + 0x57, 0x02, 0x57, 0x02, 0xa2, 0x02, 0xa1, 0x02, 0xe8, 0x02, 0xe9, 0x02, + 0x2c, 0x03, 0x2b, 0x03, 0x6b, 0x03, 0x6b, 0x03, 0xa4, 0x03, 0xa3, 0x03, + 0xd9, 0x03, 0xd9, 0x03, 0x07, 0x04, 0x08, 0x04, 0x32, 0x04, 0x30, 0x04, + 0x55, 0x04, 0x55, 0x04, 0x70, 0x04, 0x71, 0x04, 0x8b, 0x04, 0x88, 0x04, + 0x9b, 0x04, 0x9d, 0x04, 0xa7, 0x04, 0xa6, 0x04, 0xaf, 0x04, 0xaf, 0x04, + 0xac, 0x04, 0xab, 0x04, 0xa8, 0x04, 0xa8, 0x04, 0x99, 0x04, 0x99, 0x04, + 0x89, 0x04, 0x88, 0x04, 0x70, 0x04, 0x72, 0x04, 0x53, 0x04, 0x50, 0x04, + 0x32, 0x04, 0x32, 0x04, 0x07, 0x04, 0x06, 0x04, 0xdc, 0x03, 0xdd, 0x03, + 0xa9, 0x03, 0xa9, 0x03, 0x73, 0x03, 0x72, 0x03, 0x3a, 0x03, 0x3a, 0x03, + 0xf9, 0x02, 0xf8, 0x02, 0xba, 0x02, 0xbb, 0x02, 0x74, 0x02, 0x73, 0x02, + 0x2b, 0x02, 0x2c, 0x02, 0xe4, 0x01, 0xe4, 0x01, 0x98, 0x01, 0x96, 0x01, + 0x4b, 0x01, 0x4c, 0x01, 0xfd, 0x00, 0xfb, 0x00, 0xab, 0x00, 0xab, 0x00, + 0x5e, 0x00, 0x5e, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0xbc, 0xff, 0xbd, 0xff, + 0x6e, 0xff, 0x6e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0xd5, 0xfe, 0xd3, 0xfe, + 0x87, 0xfe, 0x88, 0xfe, 0x41, 0xfe, 0x3f, 0xfe, 0xfa, 0xfd, 0xf8, 0xfd, + 0xb5, 0xfd, 0xb4, 0xfd, 0x76, 0xfd, 0x75, 0xfd, 0x37, 0xfd, 0x35, 0xfd, + 0xfd, 0xfc, 0xfe, 0xfc, 0xc8, 0xfc, 0xc5, 0xfc, 0x94, 0xfc, 0x95, 0xfc, + 0x66, 0xfc, 0x66, 0xfc, 0x3d, 0xfc, 0x3c, 0xfc, 0x19, 0xfc, 0x17, 0xfc, + 0xf7, 0xfb, 0xf9, 0xfb, 0xdf, 0xfb, 0xdb, 0xfb, 0xc6, 0xfb, 0xc9, 0xfb, + 0xb6, 0xfb, 0xb4, 0xfb, 0xaa, 0xfb, 0xa9, 0xfb, 0xa1, 0xfb, 0xa0, 0xfb, + 0xa1, 0xfb, 0xa1, 0xfb, 0xa5, 0xfb, 0xa2, 0xfb, 0xab, 0xfb, 0xab, 0xfb, + 0xb9, 0xfb, 0xb6, 0xfb, 0xc9, 0xfb, 0xc9, 0xfb, 0xe0, 0xfb, 0xe0, 0xfb, + 0xfc, 0xfb, 0xfb, 0xfb, 0x19, 0xfc, 0x1a, 0xfc, 0x42, 0xfc, 0x3e, 0xfc, + 0x67, 0xfc, 0x65, 0xfc, 0x92, 0xfc, 0x93, 0xfc, 0xc6, 0xfc, 0xc1, 0xfc, + 0xf3, 0xfc, 0xf4, 0xfc, 0x2d, 0xfd, 0x2a, 0xfd, 0x62, 0xfd, 0x62, 0xfd, + 0xa0, 0xfd, 0xa0, 0xfd, 0xdc, 0xfd, 0xda, 0xfd, 0x1b, 0xfe, 0x1c, 0xfe, + 0x5f, 0xfe, 0x5d, 0xfe, 0x9c, 0xfe, 0x9e, 0xfe, 0xe4, 0xfe, 0xe1, 0xfe, + 0x23, 0xff, 0x24, 0xff, 0x6b, 0xff, 0x68, 0xff, 0xad, 0xff, 0xaf, 0xff, + 0xf1, 0xff, 0xef, 0xff, 0x36, 0x00, 0x34, 0x00, 0x76, 0x00, 0x77, 0x00, + 0xb8, 0x00, 0xb6, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x34, 0x01, 0x33, 0x01, + 0x74, 0x01, 0x73, 0x01, 0xa9, 0x01, 0xa9, 0x01, 0xe2, 0x01, 0xe2, 0x01, + 0x16, 0x02, 0x16, 0x02, 0x48, 0x02, 0x46, 0x02, 0x75, 0x02, 0x75, 0x02, + 0xa1, 0x02, 0x9f, 0x02, 0xc8, 0x02, 0xc8, 0x02, 0xeb, 0x02, 0xea, 0x02, + 0x0a, 0x03, 0x0a, 0x03, 0x26, 0x03, 0x26, 0x03, 0x3e, 0x03, 0x3d, 0x03, + 0x52, 0x03, 0x52, 0x03, 0x63, 0x03, 0x60, 0x03, 0x6d, 0x03, 0x6b, 0x03, + 0x75, 0x03, 0x76, 0x03, 0x76, 0x03, 0x73, 0x03, 0x74, 0x03, 0x75, 0x03, + 0x71, 0x03, 0x6f, 0x03, 0x67, 0x03, 0x65, 0x03, 0x59, 0x03, 0x5a, 0x03, + 0x49, 0x03, 0x44, 0x03, 0x30, 0x03, 0x32, 0x03, 0x1b, 0x03, 0x18, 0x03, + 0xf9, 0x02, 0xfa, 0x02, 0xdc, 0x02, 0xdb, 0x02, 0xb9, 0x02, 0xb7, 0x02, + 0x91, 0x02, 0x92, 0x02, 0x6c, 0x02, 0x69, 0x02, 0x3d, 0x02, 0x3f, 0x02, + 0x12, 0x02, 0x0e, 0x02, 0xe0, 0x01, 0xe2, 0x01, 0xaf, 0x01, 0xac, 0x01, + 0x7c, 0x01, 0x7b, 0x01, 0x47, 0x01, 0x45, 0x01, 0x14, 0x01, 0x10, 0x01, + 0xdc, 0x00, 0xdc, 0x00, 0xa5, 0x00, 0xa4, 0x00, 0x6e, 0x00, 0x6c, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x01, 0x00, 0xff, 0xff, 0xcd, 0xff, 0xcc, 0xff, + 0x96, 0xff, 0x94, 0xff, 0x64, 0xff, 0x63, 0xff, 0x31, 0xff, 0x30, 0xff, + 0xfe, 0xfe, 0xfd, 0xfe, 0xce, 0xfe, 0xcf, 0xfe, 0xa1, 0xfe, 0x9f, 0xfe, + 0x76, 0xfe, 0x74, 0xfe, 0x4c, 0xfe, 0x4b, 0xfe, 0x26, 0xfe, 0x25, 0xfe, + 0x02, 0xfe, 0x00, 0xfe, 0xe1, 0xfd, 0xe0, 0xfd, 0xc3, 0xfd, 0xc3, 0xfd, + 0xa8, 0xfd, 0xa6, 0xfd, 0x8e, 0xfd, 0x8e, 0xfd, 0x7d, 0xfd, 0x79, 0xfd, + 0x6b, 0xfd, 0x6b, 0xfd, 0x5d, 0xfd, 0x5a, 0xfd, 0x51, 0xfd, 0x50, 0xfd, + 0x4c, 0xfd, 0x4e, 0xfd, 0x48, 0xfd, 0x45, 0xfd, 0x49, 0xfd, 0x4a, 0xfd, + 0x4d, 0xfd, 0x4c, 0xfd, 0x54, 0xfd, 0x54, 0xfd, 0x5f, 0xfd, 0x5f, 0xfd, + 0x6d, 0xfd, 0x6b, 0xfd, 0x7f, 0xfd, 0x7e, 0xfd, 0x92, 0xfd, 0x92, 0xfd, + 0xaa, 0xfd, 0xa9, 0xfd, 0xc4, 0xfd, 0xc3, 0xfd, 0xe2, 0xfd, 0xe2, 0xfd, + 0x01, 0xfe, 0x00, 0xfe, 0x24, 0xfe, 0x23, 0xfe, 0x46, 0xfe, 0x47, 0xfe, + 0x6d, 0xfe, 0x6d, 0xfe, 0x98, 0xfe, 0x97, 0xfe, 0xbe, 0xfe, 0xc0, 0xfe, + 0xee, 0xfe, 0xed, 0xfe, 0x17, 0xff, 0x18, 0xff, 0x49, 0xff, 0x48, 0xff, + 0x76, 0xff, 0x75, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0xd7, 0xff, 0xd6, 0xff, + 0x03, 0x00, 0x02, 0x00, 0x33, 0x00, 0x35, 0x00, 0x64, 0x00, 0x61, 0x00, + 0x8e, 0x00, 0x90, 0x00, 0xc0, 0x00, 0xbf, 0x00, 0xed, 0x00, 0xeb, 0x00, + 0x17, 0x01, 0x18, 0x01, 0x46, 0x01, 0x43, 0x01, 0x6a, 0x01, 0x6b, 0x01, + 0x94, 0x01, 0x92, 0x01, 0xb8, 0x01, 0xba, 0x01, 0xdc, 0x01, 0xda, 0x01, + 0xfe, 0x01, 0xfe, 0x01, 0x1a, 0x02, 0x1a, 0x02, 0x38, 0x02, 0x38, 0x02, + 0x53, 0x02, 0x52, 0x02, 0x68, 0x02, 0x68, 0x02, 0x7f, 0x02, 0x7d, 0x02, + 0x8e, 0x02, 0x8e, 0x02, 0xa0, 0x02, 0x9e, 0x02, 0xa8, 0x02, 0xaa, 0x02, + 0xb3, 0x02, 0xb1, 0x02, 0xb7, 0x02, 0xb6, 0x02, 0xba, 0x02, 0xb9, 0x02, + 0xb9, 0x02, 0xb8, 0x02, 0xb6, 0x02, 0xb6, 0x02, 0xb0, 0x02, 0xae, 0x02, + 0xa7, 0x02, 0xa7, 0x02, 0x99, 0x02, 0x9b, 0x02, 0x8a, 0x02, 0x88, 0x02, + 0x78, 0x02, 0x7a, 0x02, 0x65, 0x02, 0x63, 0x02, 0x4e, 0x02, 0x4f, 0x02, + 0x34, 0x02, 0x33, 0x02, 0x1b, 0x02, 0x1a, 0x02, 0xfd, 0x01, 0xfc, 0x01, + 0xdd, 0x01, 0xdc, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0x98, 0x01, 0x97, 0x01, + 0x77, 0x01, 0x78, 0x01, 0x51, 0x01, 0x4f, 0x01, 0x2b, 0x01, 0x2b, 0x01, + 0x04, 0x01, 0x03, 0x01, 0xda, 0x00, 0xda, 0x00, 0xb4, 0x00, 0xb4, 0x00, + 0x88, 0x00, 0x89, 0x00, 0x63, 0x00, 0x63, 0x00, 0x39, 0x00, 0x38, 0x00, + 0x11, 0x00, 0x12, 0x00, 0xea, 0xff, 0xe7, 0xff, 0xc3, 0xff, 0xc5, 0xff, + 0x9f, 0xff, 0x9d, 0xff, 0x76, 0xff, 0x77, 0xff, 0x55, 0xff, 0x54, 0xff, + 0x2f, 0xff, 0x2f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0xef, 0xfe, 0xf0, 0xfe, + 0xd1, 0xfe, 0xcf, 0xfe, 0xb6, 0xfe, 0xb7, 0xfe, 0x9c, 0xfe, 0x9a, 0xfe, + 0x83, 0xfe, 0x84, 0xfe, 0x6e, 0xfe, 0x6c, 0xfe, 0x5a, 0xfe, 0x5a, 0xfe, + 0x49, 0xfe, 0x48, 0xfe, 0x3a, 0xfe, 0x39, 0xfe, 0x2c, 0xfe, 0x2d, 0xfe, + 0x26, 0xfe, 0x23, 0xfe, 0x18, 0xfe, 0x1b, 0xfe, 0x1a, 0xfe, 0x18, 0xfe, + 0x14, 0xfe, 0x13, 0xfe, 0x17, 0xfe, 0x19, 0xfe, 0x19, 0xfe, 0x17, 0xfe, + 0x1d, 0xfe, 0x20, 0xfe, 0x28, 0xfe, 0x27, 0xfe, 0x30, 0xfe, 0x31, 0xfe, + 0x3e, 0xfe, 0x3e, 0xfe, 0x4b, 0xfe, 0x4c, 0xfe, 0x60, 0xfe, 0x5f, 0xfe, + 0x6e, 0xfe, 0x70, 0xfe, 0x87, 0xfe, 0x86, 0xfe, 0x9d, 0xfe, 0x9d, 0xfe, + 0xb5, 0xfe, 0xb6, 0xfe, 0xd2, 0xfe, 0xcf, 0xfe, 0xec, 0xfe, 0xec, 0xfe, + 0x0a, 0xff, 0x09, 0xff, 0x29, 0xff, 0x28, 0xff, 0x47, 0xff, 0x46, 0xff, + 0x68, 0xff, 0x67, 0xff, 0x87, 0xff, 0x88, 0xff, 0xab, 0xff, 0xa9, 0xff, + 0xcc, 0xff, 0xcb, 0xff, 0xee, 0xff, 0xed, 0xff, 0x10, 0x00, 0x0f, 0x00, + 0x31, 0x00, 0x30, 0x00, 0x52, 0x00, 0x50, 0x00, 0x74, 0x00, 0x73, 0x00, + 0x94, 0x00, 0x92, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xd2, 0x00, 0xd1, 0x00, + 0xf1, 0x00, 0xf0, 0x00, 0x10, 0x01, 0x0d, 0x01, 0x26, 0x01, 0x26, 0x01, + 0x44, 0x01, 0x42, 0x01, 0x59, 0x01, 0x58, 0x01, 0x70, 0x01, 0x6e, 0x01, + 0x86, 0x01, 0x85, 0x01, 0x95, 0x01, 0x95, 0x01, 0xab, 0x01, 0xaa, 0x01, + 0xb6, 0x01, 0xb7, 0x01, 0xc4, 0x01, 0xc2, 0x01, 0xd1, 0x01, 0xd0, 0x01, + 0xd6, 0x01, 0xd6, 0x01, 0xe0, 0x01, 0xde, 0x01, 0xe1, 0x01, 0xe0, 0x01, + 0xe4, 0x01, 0xe4, 0x01, 0xe3, 0x01, 0xe2, 0x01, 0xe0, 0x01, 0xe0, 0x01, + 0xdb, 0x01, 0xdb, 0x01, 0xd5, 0x01, 0xd4, 0x01, 0xcb, 0x01, 0xca, 0x01, + 0xbe, 0x01, 0xbe, 0x01, 0xb2, 0x01, 0xb0, 0x01, 0xa1, 0x01, 0xa2, 0x01, + 0x92, 0x01, 0x8f, 0x01, 0x7c, 0x01, 0x7c, 0x01, 0x69, 0x01, 0x68, 0x01, + 0x51, 0x01, 0x50, 0x01, 0x3a, 0x01, 0x39, 0x01, 0x20, 0x01, 0x1f, 0x01, + 0x05, 0x01, 0x05, 0x01, 0xeb, 0x00, 0xe9, 0x00, 0xcb, 0x00, 0xcd, 0x00, + 0xb1, 0x00, 0xae, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x72, 0x00, 0x70, 0x00, + 0x50, 0x00, 0x4f, 0x00, 0x32, 0x00, 0x31, 0x00, 0x13, 0x00, 0x13, 0x00, + 0xf1, 0xff, 0xf0, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xb3, 0xff, 0xb1, 0xff, + 0x94, 0xff, 0x95, 0xff, 0x77, 0xff, 0x74, 0xff, 0x58, 0xff, 0x58, 0xff, + 0x3d, 0xff, 0x3b, 0xff, 0x1e, 0xff, 0x1d, 0xff, 0x03, 0xff, 0x04, 0xff, + 0xed, 0xfe, 0xea, 0xfe, 0xcf, 0xfe, 0xcf, 0xfe, 0xbd, 0xfe, 0xbc, 0xfe, + 0xa2, 0xfe, 0xa1, 0xfe, 0x91, 0xfe, 0x92, 0xfe, 0x7f, 0xfe, 0x7d, 0xfe, + 0x6d, 0xfe, 0x6d, 0xfe, 0x60, 0xfe, 0x60, 0xfe, 0x53, 0xfe, 0x51, 0xfe, + 0x48, 0xfe, 0x49, 0xfe, 0x41, 0xfe, 0x40, 0xfe, 0x38, 0xfe, 0x37, 0xfe, + 0x35, 0xfe, 0x35, 0xfe, 0x31, 0xfe, 0x2f, 0xfe, 0x30, 0xfe, 0x30, 0xfe, + 0x32, 0xfe, 0x30, 0xfe, 0x34, 0xfe, 0x34, 0xfe, 0x3a, 0xfe, 0x38, 0xfe, + 0x3e, 0xfe, 0x3f, 0xfe, 0x4a, 0xfe, 0x47, 0xfe, 0x52, 0xfe, 0x53, 0xfe, + 0x60, 0xfe, 0x5d, 0xfe, 0x6f, 0xfe, 0x6f, 0xfe, 0x7e, 0xfe, 0x7e, 0xfe, + 0x91, 0xfe, 0x8f, 0xfe, 0xa1, 0xfe, 0xa2, 0xfe, 0xb7, 0xfe, 0xb6, 0xfe, + 0xcc, 0xfe, 0xcb, 0xfe, 0xe2, 0xfe, 0xe3, 0xfe, 0xf9, 0xfe, 0xfa, 0xfe, + 0x11, 0xff, 0x12, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x45, 0xff, 0x44, 0xff, + 0x5e, 0xff, 0x60, 0xff, 0x7b, 0xff, 0x7a, 0xff, 0x95, 0xff, 0x94, 0xff, + 0xb0, 0xff, 0xb0, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xe6, 0xff, 0xe5, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x32, 0x00, 0x34, 0x00, + 0x50, 0x00, 0x4e, 0x00, 0x65, 0x00, 0x63, 0x00, 0x7f, 0x00, 0x7f, 0x00, + 0x94, 0x00, 0x94, 0x00, 0xaa, 0x00, 0xa9, 0x00, 0xbf, 0x00, 0xc0, 0x00, + 0xd0, 0x00, 0xd1, 0x00, 0xe5, 0x00, 0xe4, 0x00, 0xf3, 0x00, 0xf3, 0x00, + 0x04, 0x01, 0x03, 0x01, 0x0e, 0x01, 0x0e, 0x01, 0x1b, 0x01, 0x1b, 0x01, + 0x26, 0x01, 0x27, 0x01, 0x2e, 0x01, 0x2e, 0x01, 0x35, 0x01, 0x36, 0x01, + 0x39, 0x01, 0x38, 0x01, 0x3e, 0x01, 0x3d, 0x01, 0x3e, 0x01, 0x3d, 0x01, + 0x3c, 0x01, 0x3c, 0x01, 0x3c, 0x01, 0x3a, 0x01, 0x36, 0x01, 0x38, 0x01, + 0x32, 0x01, 0x2f, 0x01, 0x28, 0x01, 0x29, 0x01, 0x20, 0x01, 0x1d, 0x01, + 0x15, 0x01, 0x14, 0x01, 0x07, 0x01, 0x08, 0x01, 0xfb, 0x00, 0xf8, 0x00, + 0xea, 0x00, 0xea, 0x00, 0xda, 0x00, 0xd8, 0x00, 0xc8, 0x00, 0xc8, 0x00, + 0xb6, 0x00, 0xb5, 0x00, 0xa1, 0x00, 0xa0, 0x00, 0x8c, 0x00, 0x8a, 0x00, + 0x75, 0x00, 0x75, 0x00, 0x5f, 0x00, 0x5e, 0x00, 0x47, 0x00, 0x46, 0x00, + 0x2d, 0x00, 0x2e, 0x00, 0x16, 0x00, 0x13, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0xe4, 0xff, 0xe1, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xb3, 0xff, 0xb2, 0xff, + 0x98, 0xff, 0x98, 0xff, 0x82, 0xff, 0x82, 0xff, 0x67, 0xff, 0x66, 0xff, + 0x50, 0xff, 0x51, 0xff, 0x39, 0xff, 0x38, 0xff, 0x22, 0xff, 0x23, 0xff, + 0x0f, 0xff, 0x0d, 0xff, 0xf9, 0xfe, 0xf9, 0xfe, 0xe7, 0xfe, 0xe6, 0xfe, + 0xd2, 0xfe, 0xd2, 0xfe, 0xc2, 0xfe, 0xc1, 0xfe, 0xaf, 0xfe, 0xb0, 0xfe, + 0xa7, 0xfe, 0xa4, 0xfe, 0x93, 0xfe, 0x96, 0xfe, 0x8c, 0xfe, 0x8a, 0xfe, + 0x7e, 0xfe, 0x7e, 0xfe, 0x76, 0xfe, 0x77, 0xfe, 0x6e, 0xfe, 0x6e, 0xfe, + 0x6b, 0xfe, 0x69, 0xfe, 0x67, 0xfe, 0x69, 0xfe, 0x65, 0xfe, 0x63, 0xfe, + 0x65, 0xfe, 0x67, 0xfe, 0x66, 0xfe, 0x67, 0xfe, 0x69, 0xfe, 0x69, 0xfe, + 0x6f, 0xfe, 0x71, 0xfe, 0x74, 0xfe, 0x73, 0xfe, 0x7e, 0xfe, 0x7e, 0xfe, + 0x86, 0xfe, 0x87, 0xfe, 0x92, 0xfe, 0x90, 0xfe, 0x9d, 0xfe, 0xa0, 0xfe, + 0xaf, 0xfe, 0xaa, 0xfe, 0xba, 0xfe, 0xbc, 0xfe, 0xce, 0xfe, 0xce, 0xfe, + 0xdf, 0xfe, 0xe0, 0xfe, 0xf3, 0xfe, 0xf0, 0xfe, 0x06, 0xff, 0x06, 0xff, + 0x1c, 0xff, 0x1a, 0xff, 0x31, 0xff, 0x32, 0xff, 0x47, 0xff, 0x46, 0xff, + 0x5f, 0xff, 0x5d, 0xff, 0x75, 0xff, 0x75, 0xff, 0x8f, 0xff, 0x8d, 0xff, + 0xa6, 0xff, 0xa6, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xd8, 0xff, 0xd6, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0x0a, 0x00, 0x07, 0x00, 0x1f, 0x00, 0x1e, 0x00, + 0x39, 0x00, 0x3a, 0x00, 0x50, 0x00, 0x4d, 0x00, 0x66, 0x00, 0x66, 0x00, + 0x7e, 0x00, 0x7e, 0x00, 0x92, 0x00, 0x91, 0x00, 0xa8, 0x00, 0xa8, 0x00, + 0xb8, 0x00, 0xb8, 0x00, 0xce, 0x00, 0xcd, 0x00, 0xdf, 0x00, 0xde, 0x00, + 0xed, 0x00, 0xed, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x0b, 0x01, 0x09, 0x01, + 0x18, 0x01, 0x17, 0x01, 0x22, 0x01, 0x22, 0x01, 0x2c, 0x01, 0x2a, 0x01, + 0x34, 0x01, 0x35, 0x01, 0x3b, 0x01, 0x3a, 0x01, 0x40, 0x01, 0x40, 0x01, + 0x43, 0x01, 0x42, 0x01, 0x44, 0x01, 0x44, 0x01, 0x44, 0x01, 0x44, 0x01, + 0x43, 0x01, 0x41, 0x01, 0x3e, 0x01, 0x40, 0x01, 0x3d, 0x01, 0x39, 0x01, + 0x35, 0x01, 0x36, 0x01, 0x2d, 0x01, 0x2c, 0x01, 0x26, 0x01, 0x25, 0x01, + 0x18, 0x01, 0x19, 0x01, 0x0f, 0x01, 0x0f, 0x01, 0x02, 0x01, 0x01, 0x01, + 0xf2, 0x00, 0xf3, 0x00, 0xe3, 0x00, 0xe1, 0x00, 0xd5, 0x00, 0xd6, 0x00, + 0xc0, 0x00, 0xc0, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0x9d, 0x00, 0x9c, 0x00, + 0x88, 0x00, 0x8b, 0x00, 0x76, 0x00, 0x73, 0x00, 0x60, 0x00, 0x62, 0x00, + 0x4c, 0x00, 0x4b, 0x00, 0x38, 0x00, 0x37, 0x00, 0x21, 0x00, 0x22, 0x00, + 0x0b, 0x00, 0x09, 0x00, 0xf8, 0xff, 0xf9, 0xff, 0xe0, 0xff, 0xe0, 0xff, + 0xcd, 0xff, 0xcc, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xa2, 0xff, 0xa3, 0xff, + 0x92, 0xff, 0x91, 0xff, 0x7c, 0xff, 0x7b, 0xff, 0x6a, 0xff, 0x6c, 0xff, + 0x58, 0xff, 0x57, 0xff, 0x48, 0xff, 0x4a, 0xff, 0x3b, 0xff, 0x38, 0xff, + 0x29, 0xff, 0x2c, 0xff, 0x1e, 0xff, 0x1e, 0xff, 0x13, 0xff, 0x12, 0xff, + 0x05, 0xff, 0x06, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xf4, 0xfe, 0xf5, 0xfe, + 0xef, 0xfe, 0xf0, 0xfe, 0xea, 0xfe, 0xe8, 0xfe, 0xe4, 0xfe, 0xe6, 0xfe, + 0xe5, 0xfe, 0xe4, 0xfe, 0xdf, 0xfe, 0xe1, 0xfe, 0xe5, 0xfe, 0xe3, 0xfe, + 0xe5, 0xfe, 0xe7, 0xfe, 0xea, 0xfe, 0xea, 0xfe, 0xee, 0xfe, 0xee, 0xfe, + 0xf4, 0xfe, 0xf5, 0xfe, 0x00, 0xff, 0x00, 0xff, 0x06, 0xff, 0x05, 0xff, + 0x14, 0xff, 0x14, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x2c, 0xff, 0x2b, 0xff, + 0x38, 0xff, 0x3b, 0xff, 0x4c, 0xff, 0x49, 0xff, 0x5b, 0xff, 0x5c, 0xff, + 0x6c, 0xff, 0x6b, 0xff, 0x80, 0xff, 0x81, 0xff, 0x92, 0xff, 0x92, 0xff, + 0xa7, 0xff, 0xa7, 0xff, 0xbc, 0xff, 0xbd, 0xff, 0xd1, 0xff, 0xd1, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0x13, 0x00, 0x15, 0x00, + 0x2a, 0x00, 0x28, 0x00, 0x40, 0x00, 0x41, 0x00, 0x57, 0x00, 0x55, 0x00, + 0x6e, 0x00, 0x6e, 0x00, 0x83, 0x00, 0x83, 0x00, 0x99, 0x00, 0x99, 0x00, + 0xb0, 0x00, 0xae, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xd7, 0x00, 0xd7, 0x00, + 0xe8, 0x00, 0xe8, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x0e, 0x01, 0x0e, 0x01, + 0x1a, 0x01, 0x1b, 0x01, 0x30, 0x01, 0x2f, 0x01, 0x3a, 0x01, 0x3a, 0x01, + 0x49, 0x01, 0x49, 0x01, 0x53, 0x01, 0x54, 0x01, 0x5d, 0x01, 0x5e, 0x01, + 0x68, 0x01, 0x67, 0x01, 0x6b, 0x01, 0x6e, 0x01, 0x76, 0x01, 0x73, 0x01, + 0x77, 0x01, 0x7a, 0x01, 0x7c, 0x01, 0x7a, 0x01, 0x7e, 0x01, 0x7f, 0x01, + 0x7e, 0x01, 0x7f, 0x01, 0x7f, 0x01, 0x7c, 0x01, 0x78, 0x01, 0x7a, 0x01, + 0x77, 0x01, 0x76, 0x01, 0x6c, 0x01, 0x70, 0x01, 0x6a, 0x01, 0x68, 0x01, + 0x5d, 0x01, 0x5e, 0x01, 0x57, 0x01, 0x57, 0x01, 0x49, 0x01, 0x49, 0x01, + 0x3e, 0x01, 0x3d, 0x01, 0x30, 0x01, 0x30, 0x01, 0x1f, 0x01, 0x20, 0x01, + 0x11, 0x01, 0x11, 0x01, 0x00, 0x01, 0xff, 0x00, 0xee, 0x00, 0xed, 0x00, + 0xdc, 0x00, 0xdc, 0x00, 0xc6, 0x00, 0xc8, 0x00, 0xb6, 0x00, 0xb6, 0x00, + 0x9e, 0x00, 0xa0, 0x00, 0x8d, 0x00, 0x8c, 0x00, 0x75, 0x00, 0x75, 0x00, + 0x61, 0x00, 0x60, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x35, 0x00, 0x33, 0x00, + 0x20, 0x00, 0x22, 0x00, 0x09, 0x00, 0x06, 0x00, 0xf5, 0xff, 0xf7, 0xff, + 0xdf, 0xff, 0xe0, 0xff, 0xca, 0xff, 0xca, 0xff, 0xba, 0xff, 0xbc, 0xff, + 0xa1, 0xff, 0xa0, 0xff, 0x94, 0xff, 0x95, 0xff, 0x7e, 0xff, 0x7f, 0xff, + 0x70, 0xff, 0x6f, 0xff, 0x60, 0xff, 0x63, 0xff, 0x4e, 0xff, 0x4d, 0xff, + 0x42, 0xff, 0x46, 0xff, 0x34, 0xff, 0x33, 0xff, 0x2c, 0xff, 0x2d, 0xff, + 0x1f, 0xff, 0x21, 0xff, 0x16, 0xff, 0x16, 0xff, 0x11, 0xff, 0x13, 0xff, + 0x08, 0xff, 0x09, 0xff, 0x05, 0xff, 0x06, 0xff, 0x03, 0xff, 0x04, 0xff, + 0x00, 0xff, 0x01, 0xff, 0x02, 0xff, 0x02, 0xff, 0x00, 0xff, 0x02, 0xff, + 0x04, 0xff, 0x05, 0xff, 0x07, 0xff, 0x08, 0xff, 0x0d, 0xff, 0x0e, 0xff, + 0x15, 0xff, 0x16, 0xff, 0x1d, 0xff, 0x1b, 0xff, 0x25, 0xff, 0x28, 0xff, + 0x30, 0xff, 0x30, 0xff, 0x3e, 0xff, 0x3e, 0xff, 0x48, 0xff, 0x49, 0xff, + 0x58, 0xff, 0x5a, 0xff, 0x68, 0xff, 0x67, 0xff, 0x77, 0xff, 0x77, 0xff, + 0x88, 0xff, 0x89, 0xff, 0x9b, 0xff, 0x9a, 0xff, 0xad, 0xff, 0xad, 0xff, + 0xc1, 0xff, 0xc0, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xe9, 0xff, 0xe7, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0x0f, 0x00, 0x0e, 0x00, 0x24, 0x00, 0x25, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x4e, 0x00, 0x4d, 0x00, 0x60, 0x00, 0x61, 0x00, + 0x75, 0x00, 0x75, 0x00, 0x88, 0x00, 0x89, 0x00, 0x9c, 0x00, 0x9d, 0x00, + 0xae, 0x00, 0xae, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xcf, 0x00, 0xd0, 0x00, + 0xe2, 0x00, 0xe2, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x0e, 0x01, 0x0c, 0x01, 0x19, 0x01, 0x1a, 0x01, 0x23, 0x01, 0x22, 0x01, + 0x2d, 0x01, 0x2e, 0x01, 0x36, 0x01, 0x35, 0x01, 0x3c, 0x01, 0x3c, 0x01, + 0x43, 0x01, 0x42, 0x01, 0x48, 0x01, 0x48, 0x01, 0x4a, 0x01, 0x47, 0x01, + 0x49, 0x01, 0x4b, 0x01, 0x4b, 0x01, 0x4a, 0x01, 0x47, 0x01, 0x47, 0x01, + 0x47, 0x01, 0x48, 0x01, 0x3f, 0x01, 0x40, 0x01, 0x3c, 0x01, 0x3b, 0x01, + 0x33, 0x01, 0x32, 0x01, 0x29, 0x01, 0x29, 0x01, 0x22, 0x01, 0x22, 0x01, + 0x13, 0x01, 0x14, 0x01, 0x09, 0x01, 0x07, 0x01, 0xf8, 0x00, 0xf9, 0x00, + 0xe8, 0x00, 0xe9, 0x00, 0xda, 0x00, 0xd8, 0x00, 0xc6, 0x00, 0xc9, 0x00, + 0xb5, 0x00, 0xb5, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0x8f, 0x00, 0x8f, 0x00, + 0x79, 0x00, 0x7a, 0x00, 0x65, 0x00, 0x66, 0x00, 0x50, 0x00, 0x4d, 0x00, + 0x3a, 0x00, 0x3a, 0x00, 0x22, 0x00, 0x21, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0xf5, 0xff, 0xf6, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xc9, 0xff, 0xca, 0xff, + 0xb1, 0xff, 0xb1, 0xff, 0x9b, 0xff, 0x9c, 0xff, 0x86, 0xff, 0x87, 0xff, + 0x71, 0xff, 0x70, 0xff, 0x5d, 0xff, 0x5e, 0xff, 0x47, 0xff, 0x48, 0xff, + 0x36, 0xff, 0x35, 0xff, 0x23, 0xff, 0x23, 0xff, 0x0f, 0xff, 0x11, 0xff, + 0x03, 0xff, 0x02, 0xff, 0xed, 0xfe, 0xf0, 0xfe, 0xe6, 0xfe, 0xe3, 0xfe, + 0xd5, 0xfe, 0xd6, 0xfe, 0xca, 0xfe, 0xc9, 0xfe, 0xc1, 0xfe, 0xc2, 0xfe, + 0xb7, 0xfe, 0xb6, 0xfe, 0xb1, 0xfe, 0xb0, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, + 0xa6, 0xfe, 0xa5, 0xfe, 0xa3, 0xfe, 0xa4, 0xfe, 0xa2, 0xfe, 0x9f, 0xfe, + 0x9e, 0xfe, 0xa2, 0xfe, 0xa5, 0xfe, 0xa3, 0xfe, 0xa4, 0xfe, 0xa3, 0xfe, + 0xa9, 0xfe, 0xaa, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, 0xb6, 0xfe, 0xb7, 0xfe, + 0xbf, 0xfe, 0xbf, 0xfe, 0xc8, 0xfe, 0xc9, 0xfe, 0xd4, 0xfe, 0xd5, 0xfe, + 0xe1, 0xfe, 0xe3, 0xfe, 0xee, 0xfe, 0xed, 0xfe, 0xfd, 0xfe, 0xff, 0xfe, + 0x0e, 0xff, 0x0e, 0xff, 0x1e, 0xff, 0x1e, 0xff, 0x30, 0xff, 0x31, 0xff, + 0x41, 0xff, 0x42, 0xff, 0x56, 0xff, 0x56, 0xff, 0x68, 0xff, 0x6a, 0xff, + 0x7d, 0xff, 0x7b, 0xff, 0x92, 0xff, 0x94, 0xff, 0xa6, 0xff, 0xa6, 0xff, + 0xbd, 0xff, 0xbe, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xe5, 0xff, 0xe6, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0x10, 0x00, 0x10, 0x00, 0x25, 0x00, 0x25, 0x00, + 0x39, 0x00, 0x39, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x61, 0x00, 0x61, 0x00, + 0x72, 0x00, 0x73, 0x00, 0x84, 0x00, 0x86, 0x00, 0x96, 0x00, 0x96, 0x00, + 0xa4, 0x00, 0xa4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xc1, 0x00, 0xc0, 0x00, + 0xcf, 0x00, 0xd1, 0x00, 0xdb, 0x00, 0xd9, 0x00, 0xe2, 0x00, 0xe4, 0x00, + 0xed, 0x00, 0xee, 0x00, 0xf2, 0x00, 0xf2, 0x00, 0xfa, 0x00, 0xfc, 0x00, + 0xfe, 0x00, 0xfc, 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x04, 0x01, + 0x02, 0x01, 0x01, 0x01, 0x03, 0x01, 0x05, 0x01, 0xfc, 0x00, 0xfd, 0x00, + 0xfb, 0x00, 0xfa, 0x00, 0xf4, 0x00, 0xf4, 0x00, 0xed, 0x00, 0xed, 0x00, + 0xe5, 0x00, 0xe5, 0x00, 0xd8, 0x00, 0xda, 0x00, 0xd0, 0x00, 0xcf, 0x00, + 0xc2, 0x00, 0xc1, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0xa3, 0x00, 0xa4, 0x00, + 0x97, 0x00, 0x96, 0x00, 0x83, 0x00, 0x84, 0x00, 0x72, 0x00, 0x71, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x38, 0x00, 0x35, 0x00, + 0x1f, 0x00, 0x22, 0x00, 0x0a, 0x00, 0x09, 0x00, 0xf5, 0xff, 0xf6, 0xff, + 0xde, 0xff, 0xdf, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xb1, 0xff, 0xb2, 0xff, + 0x9e, 0xff, 0x9d, 0xff, 0x85, 0xff, 0x86, 0xff, 0x71, 0xff, 0x72, 0xff, + 0x5d, 0xff, 0x5d, 0xff, 0x45, 0xff, 0x46, 0xff, 0x33, 0xff, 0x33, 0xff, + 0x1e, 0xff, 0x1e, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0xfa, 0xfe, 0xf9, 0xfe, + 0xe8, 0xfe, 0xe7, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, 0xc8, 0xfe, 0xc7, 0xfe, + 0xbb, 0xfe, 0xbc, 0xfe, 0xad, 0xfe, 0xac, 0xfe, 0xa2, 0xfe, 0xa1, 0xfe, + 0x97, 0xfe, 0x97, 0xfe, 0x91, 0xfe, 0x90, 0xfe, 0x86, 0xfe, 0x88, 0xfe, + 0x82, 0xfe, 0x82, 0xfe, 0x7e, 0xfe, 0x7d, 0xfe, 0x7b, 0xfe, 0x7c, 0xfe, + 0x7c, 0xfe, 0x7b, 0xfe, 0x79, 0xfe, 0x7a, 0xfe, 0x7f, 0xfe, 0x7c, 0xfe, + 0x7e, 0xfe, 0x7f, 0xfe, 0x87, 0xfe, 0x86, 0xfe, 0x8b, 0xfe, 0x8c, 0xfe, + 0x94, 0xfe, 0x94, 0xfe, 0x9f, 0xfe, 0x9d, 0xfe, 0xaa, 0xfe, 0xa9, 0xfe, + 0xb6, 0xfe, 0xb7, 0xfe, 0xc3, 0xfe, 0xc4, 0xfe, 0xd4, 0xfe, 0xd4, 0xfe, + 0xe4, 0xfe, 0xe4, 0xfe, 0xf6, 0xfe, 0xf8, 0xfe, 0x08, 0xff, 0x06, 0xff, + 0x19, 0xff, 0x1d, 0xff, 0x31, 0xff, 0x2f, 0xff, 0x42, 0xff, 0x44, 0xff, + 0x5c, 0xff, 0x5d, 0xff, 0x70, 0xff, 0x6f, 0xff, 0x88, 0xff, 0x88, 0xff, + 0xa0, 0xff, 0xa1, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xd1, 0xff, 0xd1, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x17, 0x00, 0x18, 0x00, + 0x2c, 0x00, 0x2c, 0x00, 0x46, 0x00, 0x46, 0x00, 0x5a, 0x00, 0x5c, 0x00, + 0x71, 0x00, 0x72, 0x00, 0x88, 0x00, 0x89, 0x00, 0x9a, 0x00, 0x9a, 0x00, + 0xb1, 0x00, 0xb2, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xd4, 0x00, 0xd4, 0x00, + 0xe5, 0x00, 0xe6, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0x02, 0x01, 0x03, 0x01, + 0x0e, 0x01, 0x0e, 0x01, 0x1a, 0x01, 0x1d, 0x01, 0x27, 0x01, 0x26, 0x01, + 0x2e, 0x01, 0x2f, 0x01, 0x34, 0x01, 0x36, 0x01, 0x3a, 0x01, 0x3a, 0x01, + 0x3e, 0x01, 0x41, 0x01, 0x40, 0x01, 0x41, 0x01, 0x43, 0x01, 0x44, 0x01, + 0x41, 0x01, 0x41, 0x01, 0x3e, 0x01, 0x40, 0x01, 0x3b, 0x01, 0x3c, 0x01, + 0x37, 0x01, 0x36, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0x26, 0x01, 0x26, 0x01, + 0x1c, 0x01, 0x1c, 0x01, 0x11, 0x01, 0x12, 0x01, 0x02, 0x01, 0x03, 0x01, + 0xf6, 0x00, 0xf5, 0x00, 0xe5, 0x00, 0xe7, 0x00, 0xd6, 0x00, 0xd5, 0x00, + 0xc5, 0x00, 0xc5, 0x00, 0xb1, 0x00, 0xb1, 0x00, 0xa0, 0x00, 0xa0, 0x00, + 0x89, 0x00, 0x89, 0x00, 0x79, 0x00, 0x78, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0x4c, 0x00, 0x4c, 0x00, 0x32, 0x00, 0x32, 0x00, 0x1e, 0x00, 0x1f, 0x00, + 0x07, 0x00, 0x08, 0x00, 0xf0, 0xff, 0xf0, 0xff, 0xdc, 0xff, 0xdc, 0xff, + 0xc3, 0xff, 0xc3, 0xff, 0xae, 0xff, 0xae, 0xff, 0x99, 0xff, 0x99, 0xff, + 0x83, 0xff, 0x82, 0xff, 0x6e, 0xff, 0x71, 0xff, 0x59, 0xff, 0x5a, 0xff, + 0x49, 0xff, 0x4a, 0xff, 0x33, 0xff, 0x35, 0xff, 0x25, 0xff, 0x25, 0xff, + 0x12, 0xff, 0x13, 0xff, 0x05, 0xff, 0x05, 0xff, 0xf7, 0xfe, 0xf8, 0xfe, + 0xea, 0xfe, 0xeb, 0xfe, 0xe3, 0xfe, 0xe2, 0xfe, 0xd6, 0xfe, 0xd7, 0xfe, + 0xcf, 0xfe, 0xd0, 0xfe, 0xc9, 0xfe, 0xc9, 0xfe, 0xc3, 0xfe, 0xc5, 0xfe, + 0xc1, 0xfe, 0xc2, 0xfe, 0xbd, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xbf, 0xfe, + 0xbf, 0xfe, 0xc1, 0xfe, 0xc4, 0xfe, 0xc3, 0xfe, 0xc5, 0xfe, 0xc7, 0xfe, + 0xd0, 0xfe, 0xd0, 0xfe, 0xd5, 0xfe, 0xd7, 0xfe, 0xe1, 0xfe, 0xe0, 0xfe, + 0xeb, 0xfe, 0xec, 0xfe, 0xf8, 0xfe, 0xf7, 0xfe, 0x07, 0xff, 0x07, 0xff, + 0x15, 0xff, 0x17, 0xff, 0x25, 0xff, 0x26, 0xff, 0x39, 0xff, 0x3b, 0xff, + 0x4a, 0xff, 0x4b, 0xff, 0x60, 0xff, 0x62, 0xff, 0x74, 0xff, 0x74, 0xff, + 0x8a, 0xff, 0x8b, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0xba, 0xff, 0xb9, 0xff, + 0xd0, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xeb, 0xff, 0x04, 0x00, 0x03, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x36, 0x00, 0x36, 0x00, 0x4e, 0x00, 0x4f, 0x00, + 0x6a, 0x00, 0x69, 0x00, 0x7e, 0x00, 0x81, 0x00, 0x9b, 0x00, 0x9a, 0x00, + 0xb0, 0x00, 0xb0, 0x00, 0xc8, 0x00, 0xca, 0x00, 0xe0, 0x00, 0xe0, 0x00, + 0xf5, 0x00, 0xf6, 0x00, 0x0b, 0x01, 0x0b, 0x01, 0x1f, 0x01, 0x1f, 0x01, + 0x33, 0x01, 0x33, 0x01, 0x44, 0x01, 0x45, 0x01, 0x56, 0x01, 0x55, 0x01, + 0x65, 0x01, 0x67, 0x01, 0x73, 0x01, 0x71, 0x01, 0x80, 0x01, 0x81, 0x01, + 0x89, 0x01, 0x8a, 0x01, 0x96, 0x01, 0x97, 0x01, 0x9a, 0x01, 0x9b, 0x01, + 0xa1, 0x01, 0xa2, 0x01, 0xa8, 0x01, 0xa7, 0x01, 0xa9, 0x01, 0xaa, 0x01, + 0xac, 0x01, 0xad, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0xa9, 0x01, 0xab, 0x01, + 0xa2, 0x01, 0xa3, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0x94, 0x01, 0x97, 0x01, + 0x8f, 0x01, 0x8c, 0x01, 0x81, 0x01, 0x85, 0x01, 0x75, 0x01, 0x73, 0x01, + 0x6a, 0x01, 0x6c, 0x01, 0x56, 0x01, 0x57, 0x01, 0x4a, 0x01, 0x4b, 0x01, + 0x35, 0x01, 0x36, 0x01, 0x25, 0x01, 0x25, 0x01, 0x11, 0x01, 0x11, 0x01, + 0xfb, 0x00, 0xfc, 0x00, 0xe7, 0x00, 0xe6, 0x00, 0xce, 0x00, 0xd0, 0x00, + 0xb6, 0x00, 0xb6, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0x85, 0x00, 0x86, 0x00, + 0x6e, 0x00, 0x6d, 0x00, 0x52, 0x00, 0x54, 0x00, 0x3b, 0x00, 0x38, 0x00, + 0x20, 0x00, 0x23, 0x00, 0x06, 0x00, 0x07, 0x00, 0xf1, 0xff, 0xf0, 0xff, + 0xd6, 0xff, 0xd9, 0xff, 0xbd, 0xff, 0xbb, 0xff, 0xa5, 0xff, 0xa8, 0xff, + 0x8f, 0xff, 0x8e, 0xff, 0x79, 0xff, 0x7b, 0xff, 0x63, 0xff, 0x65, 0xff, + 0x4f, 0xff, 0x4f, 0xff, 0x3b, 0xff, 0x3e, 0xff, 0x2a, 0xff, 0x29, 0xff, + 0x17, 0xff, 0x1b, 0xff, 0x09, 0xff, 0x08, 0xff, 0xfa, 0xfe, 0xfc, 0xfe, + 0xee, 0xfe, 0xef, 0xfe, 0xe3, 0xfe, 0xe4, 0xfe, 0xda, 0xfe, 0xda, 0xfe, + 0xd1, 0xfe, 0xd3, 0xfe, 0xcc, 0xfe, 0xcd, 0xfe, 0xc6, 0xfe, 0xc8, 0xfe, + 0xc6, 0xfe, 0xc6, 0xfe, 0xc4, 0xfe, 0xc4, 0xfe, 0xc5, 0xfe, 0xc7, 0xfe, + 0xc8, 0xfe, 0xc7, 0xfe, 0xcd, 0xfe, 0xcf, 0xfe, 0xd2, 0xfe, 0xd2, 0xfe, + 0xd7, 0xfe, 0xda, 0xfe, 0xe4, 0xfe, 0xe4, 0xfe, 0xeb, 0xfe, 0xed, 0xfe, + 0xfb, 0xfe, 0xfb, 0xfe, 0x08, 0xff, 0x09, 0xff, 0x19, 0xff, 0x19, 0xff, + 0x27, 0xff, 0x29, 0xff, 0x3c, 0xff, 0x3c, 0xff, 0x4c, 0xff, 0x4e, 0xff, + 0x63, 0xff, 0x62, 0xff, 0x77, 0xff, 0x7a, 0xff, 0x8d, 0xff, 0x8e, 0xff, + 0xa7, 0xff, 0xa8, 0xff, 0xba, 0xff, 0xbd, 0xff, 0xd7, 0xff, 0xd6, 0xff, + 0xed, 0xff, 0xf0, 0xff, 0x07, 0x00, 0x06, 0x00, 0x20, 0x00, 0x24, 0x00, + 0x3a, 0x00, 0x39, 0x00, 0x51, 0x00, 0x54, 0x00, 0x6c, 0x00, 0x6e, 0x00, + 0x84, 0x00, 0x83, 0x00, 0x9d, 0x00, 0xa1, 0x00, 0xb4, 0x00, 0xb5, 0x00, + 0xcc, 0x00, 0xcf, 0x00, 0xe4, 0x00, 0xe5, 0x00, 0xfa, 0x00, 0xfa, 0x00, + 0x0e, 0x01, 0x0e, 0x01, 0x21, 0x01, 0x23, 0x01, 0x34, 0x01, 0x35, 0x01, + 0x46, 0x01, 0x48, 0x01, 0x55, 0x01, 0x57, 0x01, 0x65, 0x01, 0x65, 0x01, + 0x70, 0x01, 0x72, 0x01, 0x7e, 0x01, 0x81, 0x01, 0x87, 0x01, 0x87, 0x01, + 0x8d, 0x01, 0x8f, 0x01, 0x96, 0x01, 0x95, 0x01, 0x9a, 0x01, 0x9a, 0x01, + 0x9b, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0x9e, 0x01, 0x9b, 0x01, 0x9e, 0x01, + 0x99, 0x01, 0x9a, 0x01, 0x95, 0x01, 0x97, 0x01, 0x8e, 0x01, 0x8e, 0x01, + 0x86, 0x01, 0x87, 0x01, 0x7c, 0x01, 0x7d, 0x01, 0x71, 0x01, 0x72, 0x01, + 0x62, 0x01, 0x64, 0x01, 0x54, 0x01, 0x56, 0x01, 0x43, 0x01, 0x44, 0x01, + 0x31, 0x01, 0x33, 0x01, 0x1e, 0x01, 0x1f, 0x01, 0x07, 0x01, 0x09, 0x01, + 0xf4, 0x00, 0xf5, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0xc4, 0x00, 0xc6, 0x00, + 0xaa, 0x00, 0xab, 0x00, 0x90, 0x00, 0x92, 0x00, 0x76, 0x00, 0x79, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x23, 0x00, 0x25, 0x00, + 0x08, 0x00, 0x09, 0x00, 0xe9, 0xff, 0xec, 0xff, 0xcf, 0xff, 0xd0, 0xff, + 0xb1, 0xff, 0xb3, 0xff, 0x97, 0xff, 0x9a, 0xff, 0x7c, 0xff, 0x7c, 0xff, + 0x5f, 0xff, 0x63, 0xff, 0x47, 0xff, 0x49, 0xff, 0x2c, 0xff, 0x2f, 0xff, + 0x17, 0xff, 0x17, 0xff, 0xfc, 0xfe, 0x00, 0xff, 0xe8, 0xfe, 0xe9, 0xfe, + 0xd3, 0xfe, 0xd4, 0xfe, 0xbe, 0xfe, 0xc0, 0xfe, 0xad, 0xfe, 0xad, 0xfe, + 0x9c, 0xfe, 0x9e, 0xfe, 0x8d, 0xfe, 0x8e, 0xfe, 0x80, 0xfe, 0x80, 0xfe, + 0x72, 0xfe, 0x74, 0xfe, 0x69, 0xfe, 0x6a, 0xfe, 0x60, 0xfe, 0x62, 0xfe, + 0x5b, 0xfe, 0x5b, 0xfe, 0x55, 0xfe, 0x58, 0xfe, 0x53, 0xfe, 0x54, 0xfe, + 0x52, 0xfe, 0x53, 0xfe, 0x53, 0xfe, 0x56, 0xfe, 0x57, 0xfe, 0x58, 0xfe, + 0x5c, 0xfe, 0x5e, 0xfe, 0x64, 0xfe, 0x64, 0xfe, 0x6a, 0xfe, 0x6b, 0xfe, + 0x77, 0xfe, 0x78, 0xfe, 0x81, 0xfe, 0x83, 0xfe, 0x91, 0xfe, 0x90, 0xfe, + 0x9f, 0xfe, 0xa1, 0xfe, 0xb1, 0xfe, 0xaf, 0xfe, 0xc2, 0xfe, 0xc6, 0xfe, + 0xd6, 0xfe, 0xd5, 0xfe, 0xec, 0xfe, 0xed, 0xfe, 0x03, 0xff, 0x02, 0xff, + 0x19, 0xff, 0x19, 0xff, 0x31, 0xff, 0x32, 0xff, 0x4b, 0xff, 0x4d, 0xff, + 0x64, 0xff, 0x65, 0xff, 0x7f, 0xff, 0x7f, 0xff, 0x98, 0xff, 0x9a, 0xff, + 0xb4, 0xff, 0xb4, 0xff, 0xd0, 0xff, 0xd2, 0xff, 0xea, 0xff, 0xec, 0xff, + 0x06, 0x00, 0x07, 0x00, 0x21, 0x00, 0x22, 0x00, 0x3c, 0x00, 0x3e, 0x00, + 0x57, 0x00, 0x56, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x89, 0x00, 0x8a, 0x00, + 0xa1, 0x00, 0xa3, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xce, 0x00, 0xcf, 0x00, + 0xe2, 0x00, 0xe5, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0x09, 0x01, 0x0a, 0x01, + 0x1a, 0x01, 0x1b, 0x01, 0x28, 0x01, 0x2a, 0x01, 0x38, 0x01, 0x38, 0x01, + 0x43, 0x01, 0x46, 0x01, 0x4e, 0x01, 0x4c, 0x01, 0x54, 0x01, 0x57, 0x01, + 0x5d, 0x01, 0x5d, 0x01, 0x61, 0x01, 0x62, 0x01, 0x64, 0x01, 0x64, 0x01, + 0x63, 0x01, 0x64, 0x01, 0x63, 0x01, 0x65, 0x01, 0x61, 0x01, 0x62, 0x01, + 0x5b, 0x01, 0x5c, 0x01, 0x56, 0x01, 0x56, 0x01, 0x4a, 0x01, 0x4b, 0x01, + 0x42, 0x01, 0x43, 0x01, 0x35, 0x01, 0x35, 0x01, 0x25, 0x01, 0x27, 0x01, + 0x1a, 0x01, 0x19, 0x01, 0x05, 0x01, 0x04, 0x01, 0xf2, 0x00, 0xf5, 0x00, + 0xde, 0x00, 0xde, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xb2, 0x00, 0xb3, 0x00, + 0x99, 0x00, 0x99, 0x00, 0x7f, 0x00, 0x81, 0x00, 0x66, 0x00, 0x64, 0x00, + 0x49, 0x00, 0x4a, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x11, 0x00, 0x12, 0x00, + 0xf5, 0xff, 0xf5, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xba, 0xff, 0xbc, 0xff, + 0xa0, 0xff, 0x9f, 0xff, 0x82, 0xff, 0x83, 0xff, 0x65, 0xff, 0x65, 0xff, + 0x49, 0xff, 0x49, 0xff, 0x2c, 0xff, 0x2b, 0xff, 0x13, 0xff, 0x13, 0xff, + 0xf7, 0xfe, 0xf6, 0xfe, 0xdc, 0xfe, 0xdd, 0xfe, 0xc6, 0xfe, 0xc7, 0xfe, + 0xad, 0xfe, 0xae, 0xfe, 0x98, 0xfe, 0x98, 0xfe, 0x83, 0xfe, 0x84, 0xfe, + 0x6e, 0xfe, 0x70, 0xfe, 0x5e, 0xfe, 0x5e, 0xfe, 0x4e, 0xfe, 0x52, 0xfe, + 0x41, 0xfe, 0x41, 0xfe, 0x33, 0xfe, 0x34, 0xfe, 0x2a, 0xfe, 0x2b, 0xfe, + 0x1e, 0xfe, 0x22, 0xfe, 0x1b, 0xfe, 0x1c, 0xfe, 0x13, 0xfe, 0x17, 0xfe, + 0x15, 0xfe, 0x14, 0xfe, 0x12, 0xfe, 0x16, 0xfe, 0x13, 0xfe, 0x12, 0xfe, + 0x17, 0xfe, 0x1b, 0xfe, 0x1e, 0xfe, 0x1e, 0xfe, 0x25, 0xfe, 0x26, 0xfe, + 0x31, 0xfe, 0x31, 0xfe, 0x37, 0xfe, 0x3c, 0xfe, 0x4a, 0xfe, 0x4a, 0xfe, + 0x55, 0xfe, 0x57, 0xfe, 0x67, 0xfe, 0x68, 0xfe, 0x7b, 0xfe, 0x7c, 0xfe, + 0x8d, 0xfe, 0x8f, 0xfe, 0xa8, 0xfe, 0xa8, 0xfe, 0xbb, 0xfe, 0xbd, 0xfe, + 0xd5, 0xfe, 0xd5, 0xfe, 0xf0, 0xfe, 0xf0, 0xfe, 0x09, 0xff, 0x0a, 0xff, + 0x26, 0xff, 0x26, 0xff, 0x44, 0xff, 0x44, 0xff, 0x5e, 0xff, 0x60, 0xff, + 0x7e, 0xff, 0x7f, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0xb7, 0xff, 0xba, 0xff, + 0xda, 0xff, 0xda, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0x16, 0x00, 0x15, 0x00, + 0x35, 0x00, 0x36, 0x00, 0x51, 0x00, 0x51, 0x00, 0x71, 0x00, 0x71, 0x00, + 0x8c, 0x00, 0x8e, 0x00, 0xab, 0x00, 0xa9, 0x00, 0xc5, 0x00, 0xc5, 0x00, + 0xde, 0x00, 0xde, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x0e, 0x01, 0x0d, 0x01, + 0x24, 0x01, 0x26, 0x01, 0x39, 0x01, 0x39, 0x01, 0x4c, 0x01, 0x4e, 0x01, + 0x5e, 0x01, 0x5d, 0x01, 0x6b, 0x01, 0x6d, 0x01, 0x7b, 0x01, 0x7a, 0x01, + 0x84, 0x01, 0x88, 0x01, 0x91, 0x01, 0x90, 0x01, 0x96, 0x01, 0x98, 0x01, + 0xa0, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xa3, 0x01, 0xa5, 0x01, 0xa4, 0x01, + 0xa3, 0x01, 0xa4, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0x9d, 0x01, 0x9e, 0x01, + 0x94, 0x01, 0x95, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x81, 0x01, 0x82, 0x01, + 0x75, 0x01, 0x76, 0x01, 0x66, 0x01, 0x68, 0x01, 0x56, 0x01, 0x56, 0x01, + 0x43, 0x01, 0x46, 0x01, 0x31, 0x01, 0x2f, 0x01, 0x19, 0x01, 0x1c, 0x01, + 0x05, 0x01, 0x05, 0x01, 0xeb, 0x00, 0xed, 0x00, 0xd2, 0x00, 0xd3, 0x00, + 0xb8, 0x00, 0xbb, 0x00, 0x9f, 0x00, 0x9e, 0x00, 0x81, 0x00, 0x82, 0x00, + 0x66, 0x00, 0x67, 0x00, 0x47, 0x00, 0x49, 0x00, 0x29, 0x00, 0x2b, 0x00, + 0x0c, 0x00, 0x0e, 0x00, 0xed, 0xff, 0xee, 0xff, 0xd0, 0xff, 0xd1, 0xff, + 0xb3, 0xff, 0xb5, 0xff, 0x95, 0xff, 0x95, 0xff, 0x78, 0xff, 0x7b, 0xff, + 0x5c, 0xff, 0x5b, 0xff, 0x3f, 0xff, 0x40, 0xff, 0x27, 0xff, 0x27, 0xff, + 0x0a, 0xff, 0x0b, 0xff, 0xf6, 0xfe, 0xf7, 0xfe, 0xd8, 0xfe, 0xda, 0xfe, + 0xc8, 0xfe, 0xc8, 0xfe, 0xaf, 0xfe, 0xb0, 0xfe, 0x9e, 0xfe, 0xa0, 0xfe, + 0x8e, 0xfe, 0x8e, 0xfe, 0x79, 0xfe, 0x7e, 0xfe, 0x72, 0xfe, 0x6f, 0xfe, + 0x63, 0xfe, 0x64, 0xfe, 0x59, 0xfe, 0x5c, 0xfe, 0x54, 0xfe, 0x54, 0xfe, + 0x4c, 0xfe, 0x4d, 0xfe, 0x4b, 0xfe, 0x4b, 0xfe, 0x49, 0xfe, 0x4a, 0xfe, + 0x49, 0xfe, 0x4b, 0xfe, 0x4e, 0xfe, 0x4d, 0xfe, 0x51, 0xfe, 0x52, 0xfe, + 0x59, 0xfe, 0x5a, 0xfe, 0x63, 0xfe, 0x64, 0xfe, 0x6e, 0xfe, 0x6e, 0xfe, + 0x7a, 0xfe, 0x7b, 0xfe, 0x8d, 0xfe, 0x8b, 0xfe, 0x9c, 0xfe, 0x9f, 0xfe, + 0xaf, 0xfe, 0xb1, 0xfe, 0xc6, 0xfe, 0xc4, 0xfe, 0xda, 0xfe, 0xde, 0xfe, + 0xf5, 0xfe, 0xf2, 0xfe, 0x0e, 0xff, 0x11, 0xff, 0x29, 0xff, 0x28, 0xff, + 0x45, 0xff, 0x46, 0xff, 0x60, 0xff, 0x62, 0xff, 0x83, 0xff, 0x81, 0xff, + 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xe1, 0xff, 0xe0, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x22, 0x00, 0x43, 0x00, 0x41, 0x00, + 0x60, 0x00, 0x65, 0x00, 0x84, 0x00, 0x83, 0x00, 0xa4, 0x00, 0xa4, 0x00, + 0xc3, 0x00, 0xc5, 0x00, 0xe3, 0x00, 0xe2, 0x00, 0x00, 0x01, 0x03, 0x01, + 0x1e, 0x01, 0x1f, 0x01, 0x39, 0x01, 0x3a, 0x01, 0x58, 0x01, 0x57, 0x01, + 0x6e, 0x01, 0x71, 0x01, 0x87, 0x01, 0x88, 0x01, 0x9e, 0x01, 0x9f, 0x01, + 0xb3, 0x01, 0xb3, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0xd7, 0x01, 0xd6, 0x01, + 0xe7, 0x01, 0xe9, 0x01, 0xf6, 0x01, 0xf4, 0x01, 0xfe, 0x01, 0x01, 0x02, + 0x0b, 0x02, 0x0b, 0x02, 0x0e, 0x02, 0x0e, 0x02, 0x15, 0x02, 0x16, 0x02, + 0x16, 0x02, 0x17, 0x02, 0x16, 0x02, 0x17, 0x02, 0x16, 0x02, 0x15, 0x02, + 0x0d, 0x02, 0x0f, 0x02, 0x0d, 0x02, 0x0c, 0x02, 0xff, 0x01, 0x00, 0x02, + 0xf6, 0x01, 0xf8, 0x01, 0xea, 0x01, 0xe8, 0x01, 0xd7, 0x01, 0xdc, 0x01, + 0xc8, 0x01, 0xc7, 0x01, 0xb4, 0x01, 0xb7, 0x01, 0xa2, 0x01, 0xa1, 0x01, + 0x8a, 0x01, 0x8b, 0x01, 0x71, 0x01, 0x70, 0x01, 0x58, 0x01, 0x5b, 0x01, + 0x3d, 0x01, 0x3c, 0x01, 0x21, 0x01, 0x22, 0x01, 0x03, 0x01, 0x04, 0x01, + 0xe4, 0x00, 0xe5, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xa8, 0x00, 0xa7, 0x00, + 0x86, 0x00, 0x86, 0x00, 0x64, 0x00, 0x66, 0x00, 0x43, 0x00, 0x44, 0x00, + 0x23, 0x00, 0x25, 0x00, 0x01, 0x00, 0x03, 0x00, 0xe2, 0xff, 0xe1, 0xff, + 0xc2, 0xff, 0xc3, 0xff, 0x9f, 0xff, 0xa1, 0xff, 0x84, 0xff, 0x84, 0xff, + 0x63, 0xff, 0x64, 0xff, 0x47, 0xff, 0x49, 0xff, 0x2a, 0xff, 0x2a, 0xff, + 0x0e, 0xff, 0x11, 0xff, 0xf6, 0xfe, 0xf6, 0xfe, 0xdd, 0xfe, 0xdf, 0xfe, + 0xc7, 0xfe, 0xc9, 0xfe, 0xb2, 0xfe, 0xb3, 0xfe, 0xa0, 0xfe, 0xa3, 0xfe, + 0x8e, 0xfe, 0x8f, 0xfe, 0x80, 0xfe, 0x81, 0xfe, 0x74, 0xfe, 0x75, 0xfe, + 0x66, 0xfe, 0x6a, 0xfe, 0x61, 0xfe, 0x60, 0xfe, 0x56, 0xfe, 0x5a, 0xfe, + 0x58, 0xfe, 0x56, 0xfe, 0x52, 0xfe, 0x54, 0xfe, 0x55, 0xfe, 0x55, 0xfe, + 0x56, 0xfe, 0x59, 0xfe, 0x5b, 0xfe, 0x5c, 0xfe, 0x64, 0xfe, 0x64, 0xfe, + 0x6b, 0xfe, 0x6c, 0xfe, 0x79, 0xfe, 0x79, 0xfe, 0x87, 0xfe, 0x88, 0xfe, + 0x96, 0xfe, 0x97, 0xfe, 0xa7, 0xfe, 0xa8, 0xfe, 0xbb, 0xfe, 0xbd, 0xfe, + 0xd1, 0xfe, 0xd2, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, 0x02, 0xff, 0x04, 0xff, + 0x1c, 0xff, 0x1c, 0xff, 0x37, 0xff, 0x39, 0xff, 0x57, 0xff, 0x56, 0xff, + 0x71, 0xff, 0x74, 0xff, 0x93, 0xff, 0x93, 0xff, 0xb3, 0xff, 0xb4, 0xff, + 0xd3, 0xff, 0xd3, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0x16, 0x00, 0x15, 0x00, + 0x35, 0x00, 0x37, 0x00, 0x59, 0x00, 0x59, 0x00, 0x78, 0x00, 0x78, 0x00, + 0x9a, 0x00, 0x9d, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xd9, 0x00, 0xd9, 0x00, + 0xfb, 0x00, 0xfc, 0x00, 0x16, 0x01, 0x16, 0x01, 0x36, 0x01, 0x37, 0x01, + 0x52, 0x01, 0x51, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x86, 0x01, 0x85, 0x01, + 0x9b, 0x01, 0x9c, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xc7, 0x01, 0xc6, 0x01, + 0xd8, 0x01, 0xd9, 0x01, 0xe9, 0x01, 0xe9, 0x01, 0xf6, 0x01, 0xf6, 0x01, + 0x03, 0x02, 0x03, 0x02, 0x0a, 0x02, 0x0a, 0x02, 0x13, 0x02, 0x13, 0x02, + 0x17, 0x02, 0x18, 0x02, 0x1b, 0x02, 0x1a, 0x02, 0x18, 0x02, 0x1a, 0x02, + 0x18, 0x02, 0x19, 0x02, 0x11, 0x02, 0x10, 0x02, 0x0b, 0x02, 0x0d, 0x02, + 0x01, 0x02, 0x01, 0x02, 0xf5, 0x01, 0xf7, 0x01, 0xe7, 0x01, 0xe8, 0x01, + 0xd8, 0x01, 0xda, 0x01, 0xc6, 0x01, 0xc5, 0x01, 0xb0, 0x01, 0xb2, 0x01, + 0x9a, 0x01, 0x9a, 0x01, 0x83, 0x01, 0x83, 0x01, 0x66, 0x01, 0x68, 0x01, + 0x4d, 0x01, 0x4f, 0x01, 0x2e, 0x01, 0x2f, 0x01, 0x10, 0x01, 0x12, 0x01, + 0xf2, 0x00, 0xf1, 0x00, 0xce, 0x00, 0xd0, 0x00, 0xad, 0x00, 0xad, 0x00, + 0x8a, 0x00, 0x8b, 0x00, 0x67, 0x00, 0x68, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x20, 0x00, 0x23, 0x00, 0xfc, 0xff, 0xfa, 0xff, 0xd7, 0xff, 0xda, 0xff, + 0xb4, 0xff, 0xb3, 0xff, 0x8f, 0xff, 0x90, 0xff, 0x6d, 0xff, 0x6e, 0xff, + 0x48, 0xff, 0x4a, 0xff, 0x27, 0xff, 0x28, 0xff, 0x07, 0xff, 0x07, 0xff, + 0xe6, 0xfe, 0xe7, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xab, 0xfe, 0xac, 0xfe, + 0x91, 0xfe, 0x92, 0xfe, 0x77, 0xfe, 0x76, 0xfe, 0x5f, 0xfe, 0x60, 0xfe, + 0x49, 0xfe, 0x49, 0xfe, 0x34, 0xfe, 0x33, 0xfe, 0x23, 0xfe, 0x24, 0xfe, + 0x12, 0xfe, 0x12, 0xfe, 0x06, 0xfe, 0x04, 0xfe, 0xf8, 0xfd, 0xf9, 0xfd, + 0xf2, 0xfd, 0xf1, 0xfd, 0xeb, 0xfd, 0xeb, 0xfd, 0xe5, 0xfd, 0xe6, 0xfd, + 0xe6, 0xfd, 0xe4, 0xfd, 0xe5, 0xfd, 0xe6, 0xfd, 0xe9, 0xfd, 0xe9, 0xfd, + 0xec, 0xfd, 0xed, 0xfd, 0xf7, 0xfd, 0xf8, 0xfd, 0x01, 0xfe, 0x02, 0xfe, + 0x0e, 0xfe, 0x0e, 0xfe, 0x1d, 0xfe, 0x1f, 0xfe, 0x2f, 0xfe, 0x2e, 0xfe, + 0x44, 0xfe, 0x43, 0xfe, 0x57, 0xfe, 0x5b, 0xfe, 0x70, 0xfe, 0x6f, 0xfe, + 0x86, 0xfe, 0x89, 0xfe, 0xa4, 0xfe, 0xa3, 0xfe, 0xc0, 0xfe, 0xc1, 0xfe, + 0xdd, 0xfe, 0xdd, 0xfe, 0xfc, 0xfe, 0xfe, 0xfe, 0x1b, 0xff, 0x1b, 0xff, + 0x3d, 0xff, 0x3f, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x81, 0xff, 0x82, 0xff, + 0xa5, 0xff, 0xa4, 0xff, 0xc5, 0xff, 0xc8, 0xff, 0xeb, 0xff, 0xec, 0xff, + 0x10, 0x00, 0x11, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x56, 0x00, 0x53, 0x00, + 0x74, 0x00, 0x76, 0x00, 0x9a, 0x00, 0x99, 0x00, 0xb8, 0x00, 0xb9, 0x00, + 0xd8, 0x00, 0xd8, 0x00, 0xf7, 0x00, 0xf7, 0x00, 0x12, 0x01, 0x15, 0x01, + 0x30, 0x01, 0x30, 0x01, 0x49, 0x01, 0x4b, 0x01, 0x62, 0x01, 0x62, 0x01, + 0x77, 0x01, 0x79, 0x01, 0x8e, 0x01, 0x8d, 0x01, 0x9e, 0x01, 0xa0, 0x01, + 0xaf, 0x01, 0xb0, 0x01, 0xbe, 0x01, 0xbe, 0x01, 0xc9, 0x01, 0xc9, 0x01, + 0xd2, 0x01, 0xd2, 0x01, 0xd9, 0x01, 0xda, 0x01, 0xdd, 0x01, 0xdd, 0x01, + 0xde, 0x01, 0xe1, 0x01, 0xdf, 0x01, 0xde, 0x01, 0xdc, 0x01, 0xde, 0x01, + 0xd7, 0x01, 0xd8, 0x01, 0xcf, 0x01, 0xce, 0x01, 0xc3, 0x01, 0xc5, 0x01, + 0xb7, 0x01, 0xb8, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0x95, 0x01, 0x97, 0x01, + 0x85, 0x01, 0x83, 0x01, 0x6d, 0x01, 0x6d, 0x01, 0x55, 0x01, 0x57, 0x01, + 0x3c, 0x01, 0x3a, 0x01, 0x1e, 0x01, 0x23, 0x01, 0x03, 0x01, 0x02, 0x01, + 0xe4, 0x00, 0xe3, 0x00, 0xc4, 0x00, 0xc6, 0x00, 0xa0, 0x00, 0xa0, 0x00, + 0x81, 0x00, 0x83, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x13, 0x00, 0x14, 0x00, 0xed, 0xff, 0xef, 0xff, 0xc9, 0xff, 0xc9, 0xff, + 0xa2, 0xff, 0xa5, 0xff, 0x80, 0xff, 0x80, 0xff, 0x56, 0xff, 0x58, 0xff, + 0x34, 0xff, 0x37, 0xff, 0x10, 0xff, 0x0f, 0xff, 0xed, 0xfe, 0xee, 0xfe, + 0xca, 0xfe, 0xcc, 0xfe, 0xa9, 0xfe, 0xaa, 0xfe, 0x88, 0xfe, 0x8b, 0xfe, + 0x69, 0xfe, 0x6b, 0xfe, 0x50, 0xfe, 0x50, 0xfe, 0x32, 0xfe, 0x34, 0xfe, + 0x1a, 0xfe, 0x1b, 0xfe, 0x01, 0xfe, 0x03, 0xfe, 0xee, 0xfd, 0xee, 0xfd, + 0xdb, 0xfd, 0xdb, 0xfd, 0xc8, 0xfd, 0xca, 0xfd, 0xbc, 0xfd, 0xbd, 0xfd, + 0xb0, 0xfd, 0xaf, 0xfd, 0xa6, 0xfd, 0xa8, 0xfd, 0xa3, 0xfd, 0xa1, 0xfd, + 0x98, 0xfd, 0x9b, 0xfd, 0x9b, 0xfd, 0x9b, 0xfd, 0x9b, 0xfd, 0x9b, 0xfd, + 0x9e, 0xfd, 0x9f, 0xfd, 0xa4, 0xfd, 0xa5, 0xfd, 0xad, 0xfd, 0xac, 0xfd, + 0xb8, 0xfd, 0xbb, 0xfd, 0xc6, 0xfd, 0xc4, 0xfd, 0xd8, 0xfd, 0xda, 0xfd, + 0xe8, 0xfd, 0xe8, 0xfd, 0x00, 0xfe, 0xff, 0xfd, 0x15, 0xfe, 0x15, 0xfe, + 0x2f, 0xfe, 0x2f, 0xfe, 0x47, 0xfe, 0x4a, 0xfe, 0x67, 0xfe, 0x66, 0xfe, + 0x84, 0xfe, 0x85, 0xfe, 0xa4, 0xfe, 0xa4, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, + 0xe9, 0xfe, 0xe9, 0xfe, 0x0d, 0xff, 0x0e, 0xff, 0x32, 0xff, 0x32, 0xff, + 0x58, 0xff, 0x58, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0xa6, 0xff, 0xa6, 0xff, + 0xca, 0xff, 0xca, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0x18, 0x00, 0x18, 0x00, + 0x40, 0x00, 0x40, 0x00, 0x68, 0x00, 0x67, 0x00, 0x8a, 0x00, 0x89, 0x00, + 0xb0, 0x00, 0xb0, 0x00, 0xd3, 0x00, 0xd2, 0x00, 0xf4, 0x00, 0xf5, 0x00, + 0x18, 0x01, 0x16, 0x01, 0x33, 0x01, 0x34, 0x01, 0x57, 0x01, 0x54, 0x01, + 0x6e, 0x01, 0x71, 0x01, 0x8b, 0x01, 0x89, 0x01, 0xa4, 0x01, 0xa3, 0x01, + 0xb8, 0x01, 0xb8, 0x01, 0xcd, 0x01, 0xcd, 0x01, 0xdf, 0x01, 0xdf, 0x01, + 0xed, 0x01, 0xef, 0x01, 0xfc, 0x01, 0xf9, 0x01, 0x02, 0x02, 0x06, 0x02, + 0x0f, 0x02, 0x0b, 0x02, 0x10, 0x02, 0x12, 0x02, 0x14, 0x02, 0x15, 0x02, + 0x14, 0x02, 0x11, 0x02, 0x0f, 0x02, 0x13, 0x02, 0x0e, 0x02, 0x0a, 0x02, + 0x02, 0x02, 0x03, 0x02, 0xf8, 0x01, 0xf9, 0x01, 0xeb, 0x01, 0xe9, 0x01, + 0xdb, 0x01, 0xdb, 0x01, 0xca, 0x01, 0xc9, 0x01, 0xb3, 0x01, 0xb3, 0x01, + 0x9f, 0x01, 0xa0, 0x01, 0x84, 0x01, 0x84, 0x01, 0x6b, 0x01, 0x6c, 0x01, + 0x4c, 0x01, 0x4d, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0x10, 0x01, 0x0f, 0x01, + 0xed, 0x00, 0xed, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xa8, 0x00, 0xa7, 0x00, + 0x83, 0x00, 0x84, 0x00, 0x60, 0x00, 0x5f, 0x00, 0x37, 0x00, 0x3a, 0x00, + 0x14, 0x00, 0x13, 0x00, 0xec, 0xff, 0xed, 0xff, 0xc6, 0xff, 0xc6, 0xff, + 0xa1, 0xff, 0xa2, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x56, 0xff, 0x56, 0xff, + 0x32, 0xff, 0x32, 0xff, 0x0d, 0xff, 0x0e, 0xff, 0xec, 0xfe, 0xec, 0xfe, + 0xca, 0xfe, 0xca, 0xfe, 0xaa, 0xfe, 0xab, 0xfe, 0x8c, 0xfe, 0x8b, 0xfe, + 0x70, 0xfe, 0x71, 0xfe, 0x58, 0xfe, 0x56, 0xfe, 0x3c, 0xfe, 0x3d, 0xfe, + 0x26, 0xfe, 0x27, 0xfe, 0x13, 0xfe, 0x10, 0xfe, 0xfe, 0xfd, 0x00, 0xfe, + 0xf2, 0xfd, 0xf1, 0xfd, 0xe1, 0xfd, 0xe2, 0xfd, 0xd8, 0xfd, 0xd9, 0xfd, + 0xd0, 0xfd, 0xd1, 0xfd, 0xcb, 0xfd, 0xcc, 0xfd, 0xc8, 0xfd, 0xcb, 0xfd, + 0xca, 0xfd, 0xc9, 0xfd, 0xcc, 0xfd, 0xcf, 0xfd, 0xd2, 0xfd, 0xd2, 0xfd, + 0xd9, 0xfd, 0xda, 0xfd, 0xe7, 0xfd, 0xe8, 0xfd, 0xf1, 0xfd, 0xf2, 0xfd, + 0x06, 0xfe, 0x05, 0xfe, 0x14, 0xfe, 0x17, 0xfe, 0x2f, 0xfe, 0x2d, 0xfe, + 0x42, 0xfe, 0x45, 0xfe, 0x5e, 0xfe, 0x5f, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, + 0x97, 0xfe, 0x97, 0xfe, 0xb5, 0xfe, 0xb8, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, + 0xfa, 0xfe, 0xfb, 0xfe, 0x1f, 0xff, 0x20, 0xff, 0x46, 0xff, 0x45, 0xff, + 0x6c, 0xff, 0x6c, 0xff, 0x95, 0xff, 0x96, 0xff, 0xba, 0xff, 0xba, 0xff, + 0xe6, 0xff, 0xe7, 0xff, 0x0e, 0x00, 0x0e, 0x00, 0x35, 0x00, 0x38, 0x00, + 0x60, 0x00, 0x5f, 0x00, 0x89, 0x00, 0x8b, 0x00, 0xb3, 0x00, 0xb2, 0x00, + 0xd8, 0x00, 0xdb, 0x00, 0x01, 0x01, 0x00, 0x01, 0x26, 0x01, 0x27, 0x01, + 0x4b, 0x01, 0x4c, 0x01, 0x6e, 0x01, 0x6f, 0x01, 0x92, 0x01, 0x93, 0x01, + 0xb3, 0x01, 0xb3, 0x01, 0xd1, 0x01, 0xd1, 0x01, 0xea, 0x01, 0xef, 0x01, + 0x09, 0x02, 0x07, 0x02, 0x1e, 0x02, 0x20, 0x02, 0x37, 0x02, 0x38, 0x02, + 0x4a, 0x02, 0x4b, 0x02, 0x5b, 0x02, 0x5d, 0x02, 0x69, 0x02, 0x6a, 0x02, + 0x75, 0x02, 0x75, 0x02, 0x7e, 0x02, 0x80, 0x02, 0x86, 0x02, 0x85, 0x02, + 0x89, 0x02, 0x8b, 0x02, 0x89, 0x02, 0x8a, 0x02, 0x88, 0x02, 0x89, 0x02, + 0x83, 0x02, 0x84, 0x02, 0x78, 0x02, 0x7b, 0x02, 0x73, 0x02, 0x72, 0x02, + 0x62, 0x02, 0x63, 0x02, 0x53, 0x02, 0x55, 0x02, 0x41, 0x02, 0x41, 0x02, + 0x2a, 0x02, 0x2e, 0x02, 0x16, 0x02, 0x15, 0x02, 0xf9, 0x01, 0xfa, 0x01, + 0xe0, 0x01, 0xe1, 0x01, 0xc0, 0x01, 0xc1, 0x01, 0xa3, 0x01, 0xa5, 0x01, + 0x7f, 0x01, 0x81, 0x01, 0x5e, 0x01, 0x5f, 0x01, 0x39, 0x01, 0x3a, 0x01, + 0x14, 0x01, 0x15, 0x01, 0xed, 0x00, 0xee, 0x00, 0xc6, 0x00, 0xc6, 0x00, + 0x9c, 0x00, 0x9f, 0x00, 0x75, 0x00, 0x73, 0x00, 0x4b, 0x00, 0x4d, 0x00, + 0x23, 0x00, 0x24, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xd1, 0xff, 0xd2, 0xff, + 0xaa, 0xff, 0xab, 0xff, 0x81, 0xff, 0x82, 0xff, 0x5c, 0xff, 0x5d, 0xff, + 0x35, 0xff, 0x34, 0xff, 0x10, 0xff, 0x11, 0xff, 0xee, 0xfe, 0xef, 0xfe, + 0xca, 0xfe, 0xcd, 0xfe, 0xae, 0xfe, 0xac, 0xfe, 0x8a, 0xfe, 0x8e, 0xfe, + 0x72, 0xfe, 0x71, 0xfe, 0x55, 0xfe, 0x5a, 0xfe, 0x3e, 0xfe, 0x3f, 0xfe, + 0x2c, 0xfe, 0x2c, 0xfe, 0x15, 0xfe, 0x17, 0xfe, 0x08, 0xfe, 0x08, 0xfe, + 0xf9, 0xfd, 0xfa, 0xfd, 0xed, 0xfd, 0xef, 0xfd, 0xe8, 0xfd, 0xe7, 0xfd, + 0xde, 0xfd, 0xe0, 0xfd, 0xdf, 0xfd, 0xdf, 0xfd, 0xdc, 0xfd, 0xde, 0xfd, + 0xe2, 0xfd, 0xe1, 0xfd, 0xe5, 0xfd, 0xe9, 0xfd, 0xf0, 0xfd, 0xf0, 0xfd, + 0xfc, 0xfd, 0xfe, 0xfd, 0x09, 0xfe, 0x0a, 0xfe, 0x1a, 0xfe, 0x1c, 0xfe, + 0x2e, 0xfe, 0x2d, 0xfe, 0x42, 0xfe, 0x46, 0xfe, 0x5e, 0xfe, 0x5d, 0xfe, + 0x76, 0xfe, 0x7a, 0xfe, 0x96, 0xfe, 0x94, 0xfe, 0xb3, 0xfe, 0xb6, 0xfe, + 0xd3, 0xfe, 0xd4, 0xfe, 0xf5, 0xfe, 0xf7, 0xfe, 0x1b, 0xff, 0x1d, 0xff, + 0x40, 0xff, 0x42, 0xff, 0x65, 0xff, 0x67, 0xff, 0x8f, 0xff, 0x8f, 0xff, + 0xb6, 0xff, 0xb8, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0x09, 0x00, 0x0a, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x5c, 0x00, 0x5e, 0x00, 0x86, 0x00, 0x85, 0x00, + 0xaf, 0x00, 0xb2, 0x00, 0xd8, 0x00, 0xd7, 0x00, 0xff, 0x00, 0x01, 0x01, + 0x28, 0x01, 0x29, 0x01, 0x4c, 0x01, 0x49, 0x01, 0x73, 0x01, 0x74, 0x01, + 0x92, 0x01, 0x93, 0x01, 0xb7, 0x01, 0xb6, 0x01, 0xd4, 0x01, 0xd7, 0x01, + 0xf2, 0x01, 0xf1, 0x01, 0x0f, 0x02, 0x11, 0x02, 0x26, 0x02, 0x27, 0x02, + 0x41, 0x02, 0x40, 0x02, 0x52, 0x02, 0x55, 0x02, 0x65, 0x02, 0x65, 0x02, + 0x76, 0x02, 0x75, 0x02, 0x7f, 0x02, 0x81, 0x02, 0x8d, 0x02, 0x8b, 0x02, + 0x91, 0x02, 0x92, 0x02, 0x94, 0x02, 0x93, 0x02, 0x97, 0x02, 0x97, 0x02, + 0x93, 0x02, 0x94, 0x02, 0x90, 0x02, 0x8f, 0x02, 0x86, 0x02, 0x87, 0x02, + 0x7b, 0x02, 0x7c, 0x02, 0x6f, 0x02, 0x6e, 0x02, 0x5b, 0x02, 0x5d, 0x02, + 0x4c, 0x02, 0x4b, 0x02, 0x33, 0x02, 0x35, 0x02, 0x1d, 0x02, 0x1d, 0x02, + 0x03, 0x02, 0x02, 0x02, 0xe3, 0x01, 0xe3, 0x01, 0xc4, 0x01, 0xc4, 0x01, + 0xa3, 0x01, 0xa2, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x5b, 0x01, 0x5a, 0x01, + 0x32, 0x01, 0x34, 0x01, 0x0b, 0x01, 0x09, 0x01, 0xe2, 0x00, 0xe3, 0x00, + 0xb7, 0x00, 0xb7, 0x00, 0x8d, 0x00, 0x8b, 0x00, 0x63, 0x00, 0x63, 0x00, + 0x34, 0x00, 0x35, 0x00, 0x09, 0x00, 0x09, 0x00, 0xdb, 0xff, 0xdb, 0xff, + 0xb1, 0xff, 0xb2, 0xff, 0x85, 0xff, 0x84, 0xff, 0x5a, 0xff, 0x5c, 0xff, + 0x30, 0xff, 0x2f, 0xff, 0x05, 0xff, 0x06, 0xff, 0xe1, 0xfe, 0xdf, 0xfe, + 0xb6, 0xfe, 0xb6, 0xfe, 0x92, 0xfe, 0x93, 0xfe, 0x6f, 0xfe, 0x6e, 0xfe, + 0x4b, 0xfe, 0x4b, 0xfe, 0x2d, 0xfe, 0x2d, 0xfe, 0x0e, 0xfe, 0x0f, 0xfe, + 0xf4, 0xfd, 0xf4, 0xfd, 0xdb, 0xfd, 0xdb, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, + 0xb2, 0xfd, 0xb1, 0xfd, 0xa0, 0xfd, 0xa0, 0xfd, 0x93, 0xfd, 0x92, 0xfd, + 0x87, 0xfd, 0x87, 0xfd, 0x7f, 0xfd, 0x80, 0xfd, 0x7b, 0xfd, 0x7b, 0xfd, + 0x78, 0xfd, 0x77, 0xfd, 0x7a, 0xfd, 0x7b, 0xfd, 0x7e, 0xfd, 0x7d, 0xfd, + 0x83, 0xfd, 0x82, 0xfd, 0x8d, 0xfd, 0x8f, 0xfd, 0x99, 0xfd, 0x98, 0xfd, + 0xa9, 0xfd, 0xab, 0xfd, 0xbd, 0xfd, 0xbc, 0xfd, 0xd1, 0xfd, 0xcf, 0xfd, + 0xea, 0xfd, 0xeb, 0xfd, 0x03, 0xfe, 0x01, 0xfe, 0x1f, 0xfe, 0x20, 0xfe, + 0x40, 0xfe, 0x3d, 0xfe, 0x5d, 0xfe, 0x5d, 0xfe, 0x84, 0xfe, 0x82, 0xfe, + 0xa5, 0xfe, 0xa6, 0xfe, 0xcc, 0xfe, 0xcc, 0xfe, 0xf3, 0xfe, 0xf3, 0xfe, + 0x1b, 0xff, 0x1a, 0xff, 0x46, 0xff, 0x46, 0xff, 0x70, 0xff, 0x6f, 0xff, + 0x99, 0xff, 0x99, 0xff, 0xc6, 0xff, 0xc5, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0x1b, 0x00, 0x1b, 0x00, 0x48, 0x00, 0x47, 0x00, 0x6e, 0x00, 0x6e, 0x00, + 0x9c, 0x00, 0x9d, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xed, 0x00, 0xec, 0x00, + 0x13, 0x01, 0x12, 0x01, 0x38, 0x01, 0x36, 0x01, 0x5e, 0x01, 0x5f, 0x01, + 0x7c, 0x01, 0x7b, 0x01, 0x9f, 0x01, 0x9e, 0x01, 0xba, 0x01, 0xbc, 0x01, + 0xda, 0x01, 0xd7, 0x01, 0xef, 0x01, 0xf1, 0x01, 0x08, 0x02, 0x08, 0x02, + 0x1b, 0x02, 0x1a, 0x02, 0x2d, 0x02, 0x2e, 0x02, 0x3c, 0x02, 0x3a, 0x02, + 0x48, 0x02, 0x4a, 0x02, 0x4e, 0x02, 0x50, 0x02, 0x57, 0x02, 0x58, 0x02, + 0x5a, 0x02, 0x58, 0x02, 0x58, 0x02, 0x59, 0x02, 0x56, 0x02, 0x55, 0x02, + 0x4d, 0x02, 0x4e, 0x02, 0x47, 0x02, 0x48, 0x02, 0x38, 0x02, 0x38, 0x02, + 0x2a, 0x02, 0x2a, 0x02, 0x17, 0x02, 0x18, 0x02, 0x03, 0x02, 0x02, 0x02, + 0xec, 0x01, 0xeb, 0x01, 0xd0, 0x01, 0xd2, 0x01, 0xb4, 0x01, 0xb2, 0x01, + 0x96, 0x01, 0x96, 0x01, 0x73, 0x01, 0x73, 0x01, 0x50, 0x01, 0x50, 0x01, + 0x2a, 0x01, 0x2d, 0x01, 0x03, 0x01, 0x02, 0x01, 0xdc, 0x00, 0xdc, 0x00, + 0xb1, 0x00, 0xb0, 0x00, 0x88, 0x00, 0x89, 0x00, 0x5a, 0x00, 0x58, 0x00, + 0x2f, 0x00, 0x2f, 0x00, 0x02, 0x00, 0x01, 0x00, 0xd2, 0xff, 0xd4, 0xff, + 0xa9, 0xff, 0xa7, 0xff, 0x78, 0xff, 0x77, 0xff, 0x4d, 0xff, 0x4d, 0xff, + 0x1f, 0xff, 0x1f, 0xff, 0xf4, 0xfe, 0xf3, 0xfe, 0xc9, 0xfe, 0xcb, 0xfe, + 0x9e, 0xfe, 0x9d, 0xfe, 0x76, 0xfe, 0x77, 0xfe, 0x50, 0xfe, 0x4e, 0xfe, + 0x29, 0xfe, 0x2b, 0xfe, 0x06, 0xfe, 0x08, 0xfe, 0xe6, 0xfd, 0xe4, 0xfd, + 0xc6, 0xfd, 0xc7, 0xfd, 0xab, 0xfd, 0xa9, 0xfd, 0x91, 0xfd, 0x90, 0xfd, + 0x78, 0xfd, 0x78, 0xfd, 0x65, 0xfd, 0x61, 0xfd, 0x52, 0xfd, 0x53, 0xfd, + 0x43, 0xfd, 0x41, 0xfd, 0x37, 0xfd, 0x36, 0xfd, 0x2d, 0xfd, 0x2e, 0xfd, + 0x29, 0xfd, 0x26, 0xfd, 0x26, 0xfd, 0x27, 0xfd, 0x27, 0xfd, 0x27, 0xfd, + 0x2a, 0xfd, 0x2a, 0xfd, 0x31, 0xfd, 0x30, 0xfd, 0x3b, 0xfd, 0x3a, 0xfd, + 0x49, 0xfd, 0x47, 0xfd, 0x58, 0xfd, 0x59, 0xfd, 0x6c, 0xfd, 0x69, 0xfd, + 0x82, 0xfd, 0x82, 0xfd, 0x99, 0xfd, 0x9a, 0xfd, 0xb5, 0xfd, 0xb5, 0xfd, + 0xd5, 0xfd, 0xd5, 0xfd, 0xf2, 0xfd, 0xf2, 0xfd, 0x16, 0xfe, 0x16, 0xfe, + 0x3b, 0xfe, 0x3c, 0xfe, 0x62, 0xfe, 0x60, 0xfe, 0x8a, 0xfe, 0x8b, 0xfe, + 0xb2, 0xfe, 0xb2, 0xfe, 0xde, 0xfe, 0xde, 0xfe, 0x09, 0xff, 0x0a, 0xff, + 0x38, 0xff, 0x37, 0xff, 0x64, 0xff, 0x65, 0xff, 0x92, 0xff, 0x92, 0xff, + 0xc3, 0xff, 0xc3, 0xff, 0xef, 0xff, 0xf0, 0xff, 0x1f, 0x00, 0x20, 0x00, + 0x4e, 0x00, 0x4d, 0x00, 0x79, 0x00, 0x7b, 0x00, 0xaa, 0x00, 0xa9, 0x00, + 0xd2, 0x00, 0xd3, 0x00, 0xfd, 0x00, 0xfe, 0x00, 0x27, 0x01, 0x28, 0x01, + 0x4d, 0x01, 0x4d, 0x01, 0x75, 0x01, 0x77, 0x01, 0x97, 0x01, 0x95, 0x01, + 0xbb, 0x01, 0xbc, 0x01, 0xdb, 0x01, 0xdb, 0x01, 0xf5, 0x01, 0xf5, 0x01, + 0x14, 0x02, 0x16, 0x02, 0x29, 0x02, 0x27, 0x02, 0x41, 0x02, 0x43, 0x02, + 0x51, 0x02, 0x51, 0x02, 0x62, 0x02, 0x60, 0x02, 0x6f, 0x02, 0x6f, 0x02, + 0x75, 0x02, 0x75, 0x02, 0x7e, 0x02, 0x7e, 0x02, 0x80, 0x02, 0x80, 0x02, + 0x80, 0x02, 0x80, 0x02, 0x7b, 0x02, 0x7b, 0x02, 0x77, 0x02, 0x75, 0x02, + 0x6a, 0x02, 0x6c, 0x02, 0x61, 0x02, 0x5e, 0x02, 0x4e, 0x02, 0x50, 0x02, + 0x3c, 0x02, 0x3a, 0x02, 0x26, 0x02, 0x27, 0x02, 0x0f, 0x02, 0x0f, 0x02, + 0xf1, 0x01, 0xf0, 0x01, 0xd4, 0x01, 0xd6, 0x01, 0xb3, 0x01, 0xb1, 0x01, + 0x90, 0x01, 0x92, 0x01, 0x6c, 0x01, 0x6d, 0x01, 0x48, 0x01, 0x46, 0x01, + 0x1c, 0x01, 0x1e, 0x01, 0xf5, 0x00, 0xf6, 0x00, 0xcb, 0x00, 0xc9, 0x00, + 0x9d, 0x00, 0xa0, 0x00, 0x73, 0x00, 0x71, 0x00, 0x43, 0x00, 0x44, 0x00, + 0x19, 0x00, 0x18, 0x00, 0xe4, 0xff, 0xe6, 0xff, 0xbb, 0xff, 0xbb, 0xff, + 0x8c, 0xff, 0x8c, 0xff, 0x5f, 0xff, 0x5e, 0xff, 0x31, 0xff, 0x34, 0xff, + 0x06, 0xff, 0x04, 0xff, 0xdb, 0xfe, 0xde, 0xfe, 0xb2, 0xfe, 0xaf, 0xfe, + 0x89, 0xfe, 0x88, 0xfe, 0x63, 0xfe, 0x63, 0xfe, 0x3e, 0xfe, 0x3e, 0xfe, + 0x1c, 0xfe, 0x1c, 0xfe, 0xfa, 0xfd, 0xfb, 0xfd, 0xdf, 0xfd, 0xdd, 0xfd, + 0xc1, 0xfd, 0xc0, 0xfd, 0xa9, 0xfd, 0xa9, 0xfd, 0x92, 0xfd, 0x92, 0xfd, + 0x80, 0xfd, 0x80, 0xfd, 0x71, 0xfd, 0x70, 0xfd, 0x64, 0xfd, 0x61, 0xfd, + 0x59, 0xfd, 0x58, 0xfd, 0x53, 0xfd, 0x53, 0xfd, 0x4f, 0xfd, 0x4e, 0xfd, + 0x50, 0xfd, 0x51, 0xfd, 0x53, 0xfd, 0x50, 0xfd, 0x59, 0xfd, 0x59, 0xfd, + 0x62, 0xfd, 0x61, 0xfd, 0x6d, 0xfd, 0x6d, 0xfd, 0x7f, 0xfd, 0x7e, 0xfd, + 0x90, 0xfd, 0x8f, 0xfd, 0xa8, 0xfd, 0xa7, 0xfd, 0xc3, 0xfd, 0xc0, 0xfd, + 0xdc, 0xfd, 0xdc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0x1b, 0xfe, 0x1a, 0xfe, + 0x40, 0xfe, 0x3f, 0xfe, 0x66, 0xfe, 0x65, 0xfe, 0x8d, 0xfe, 0x8d, 0xfe, + 0xb6, 0xfe, 0xb6, 0xfe, 0xe2, 0xfe, 0xe3, 0xfe, 0x0d, 0xff, 0x0e, 0xff, + 0x3e, 0xff, 0x3d, 0xff, 0x6a, 0xff, 0x6b, 0xff, 0x9c, 0xff, 0x9c, 0xff, + 0xcc, 0xff, 0xcc, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x2c, 0x00, 0x2d, 0x00, + 0x60, 0x00, 0x61, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0xbf, 0x00, 0xc0, 0x00, + 0xf0, 0x00, 0xf0, 0x00, 0x1d, 0x01, 0x1d, 0x01, 0x4c, 0x01, 0x4d, 0x01, + 0x76, 0x01, 0x77, 0x01, 0xa2, 0x01, 0xa2, 0x01, 0xcc, 0x01, 0xcc, 0x01, + 0xf1, 0x01, 0xf2, 0x01, 0x19, 0x02, 0x18, 0x02, 0x38, 0x02, 0x38, 0x02, + 0x59, 0x02, 0x59, 0x02, 0x76, 0x02, 0x77, 0x02, 0x90, 0x02, 0x8f, 0x02, + 0xaa, 0x02, 0xaa, 0x02, 0xbc, 0x02, 0xba, 0x02, 0xcd, 0x02, 0xcf, 0x02, + 0xde, 0x02, 0xdb, 0x02, 0xe6, 0x02, 0xe7, 0x02, 0xf2, 0x02, 0xf1, 0x02, + 0xf5, 0x02, 0xf3, 0x02, 0xf5, 0x02, 0xf7, 0x02, 0xf5, 0x02, 0xf3, 0x02, + 0xed, 0x02, 0xee, 0x02, 0xe9, 0x02, 0xe8, 0x02, 0xd8, 0x02, 0xd6, 0x02, + 0xca, 0x02, 0xca, 0x02, 0xb8, 0x02, 0xb6, 0x02, 0xa1, 0x02, 0xa1, 0x02, + 0x8b, 0x02, 0x88, 0x02, 0x6c, 0x02, 0x6d, 0x02, 0x51, 0x02, 0x51, 0x02, + 0x2d, 0x02, 0x2e, 0x02, 0x0d, 0x02, 0x0b, 0x02, 0xe5, 0x01, 0xe7, 0x01, + 0xbf, 0x01, 0xbe, 0x01, 0x96, 0x01, 0x98, 0x01, 0x6a, 0x01, 0x6a, 0x01, + 0x3d, 0x01, 0x3e, 0x01, 0x10, 0x01, 0x10, 0x01, 0xde, 0x00, 0xe1, 0x00, + 0xb3, 0x00, 0xb2, 0x00, 0x80, 0x00, 0x80, 0x00, 0x51, 0x00, 0x53, 0x00, + 0x1f, 0x00, 0x1e, 0x00, 0xee, 0xff, 0xef, 0xff, 0xc0, 0xff, 0xc1, 0xff, + 0x90, 0xff, 0x8e, 0xff, 0x62, 0xff, 0x62, 0xff, 0x33, 0xff, 0x33, 0xff, + 0x06, 0xff, 0x07, 0xff, 0xdb, 0xfe, 0xdb, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, + 0x89, 0xfe, 0x88, 0xfe, 0x62, 0xfe, 0x62, 0xfe, 0x3e, 0xfe, 0x3f, 0xfe, + 0x1e, 0xfe, 0x1d, 0xfe, 0xfe, 0xfd, 0xff, 0xfd, 0xe3, 0xfd, 0xe2, 0xfd, + 0xc7, 0xfd, 0xc8, 0xfd, 0xb3, 0xfd, 0xb2, 0xfd, 0x9e, 0xfd, 0x9d, 0xfd, + 0x8e, 0xfd, 0x8d, 0xfd, 0x81, 0xfd, 0x81, 0xfd, 0x76, 0xfd, 0x76, 0xfd, + 0x71, 0xfd, 0x70, 0xfd, 0x6d, 0xfd, 0x6d, 0xfd, 0x6d, 0xfd, 0x6d, 0xfd, + 0x71, 0xfd, 0x71, 0xfd, 0x7a, 0xfd, 0x79, 0xfd, 0x83, 0xfd, 0x82, 0xfd, + 0x8f, 0xfd, 0x90, 0xfd, 0xa2, 0xfd, 0xa1, 0xfd, 0xb4, 0xfd, 0xb3, 0xfd, + 0xcc, 0xfd, 0xcd, 0xfd, 0xe6, 0xfd, 0xe4, 0xfd, 0x02, 0xfe, 0x03, 0xfe, + 0x25, 0xfe, 0x23, 0xfe, 0x44, 0xfe, 0x44, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, + 0x90, 0xfe, 0x8e, 0xfe, 0xb9, 0xfe, 0xba, 0xfe, 0xe6, 0xfe, 0xe4, 0xfe, + 0x10, 0xff, 0x11, 0xff, 0x40, 0xff, 0x3e, 0xff, 0x6d, 0xff, 0x6e, 0xff, + 0x9e, 0xff, 0x9d, 0xff, 0xcf, 0xff, 0xce, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x32, 0x00, 0x32, 0x00, 0x61, 0x00, 0x62, 0x00, 0x95, 0x00, 0x94, 0x00, + 0xc4, 0x00, 0xc5, 0x00, 0xf6, 0x00, 0xf5, 0x00, 0x26, 0x01, 0x26, 0x01, + 0x52, 0x01, 0x53, 0x01, 0x83, 0x01, 0x81, 0x01, 0xaa, 0x01, 0xac, 0x01, + 0xd8, 0x01, 0xd7, 0x01, 0xfc, 0x01, 0xfe, 0x01, 0x26, 0x02, 0x24, 0x02, + 0x4a, 0x02, 0x49, 0x02, 0x67, 0x02, 0x68, 0x02, 0x88, 0x02, 0x88, 0x02, + 0xa2, 0x02, 0xa2, 0x02, 0xbb, 0x02, 0xb9, 0x02, 0xd2, 0x02, 0xd1, 0x02, + 0xe4, 0x02, 0xe3, 0x02, 0xf3, 0x02, 0xf1, 0x02, 0xfe, 0x02, 0xfe, 0x02, + 0x08, 0x03, 0x08, 0x03, 0x0b, 0x03, 0x0b, 0x03, 0x0d, 0x03, 0x0c, 0x03, + 0x0c, 0x03, 0x0b, 0x03, 0x05, 0x03, 0x05, 0x03, 0xff, 0x02, 0xfd, 0x02, + 0xee, 0x02, 0xf0, 0x02, 0xe1, 0x02, 0xe0, 0x02, 0xce, 0x02, 0xce, 0x02, + 0xb5, 0x02, 0xb5, 0x02, 0xa0, 0x02, 0x9f, 0x02, 0x80, 0x02, 0x7e, 0x02, + 0x62, 0x02, 0x64, 0x02, 0x40, 0x02, 0x3d, 0x02, 0x1a, 0x02, 0x1a, 0x02, + 0xf3, 0x01, 0xf2, 0x01, 0xcd, 0x01, 0xc9, 0x01, 0x9d, 0x01, 0x9f, 0x01, + 0x71, 0x01, 0x70, 0x01, 0x43, 0x01, 0x41, 0x01, 0x11, 0x01, 0x12, 0x01, + 0xe2, 0x00, 0xe0, 0x00, 0xaf, 0x00, 0xae, 0x00, 0x78, 0x00, 0x7a, 0x00, + 0x49, 0x00, 0x46, 0x00, 0x12, 0x00, 0x13, 0x00, 0xe1, 0xff, 0xdd, 0xff, + 0xab, 0xff, 0xab, 0xff, 0x77, 0xff, 0x76, 0xff, 0x46, 0xff, 0x47, 0xff, + 0x12, 0xff, 0x11, 0xff, 0xe3, 0xfe, 0xe4, 0xfe, 0xb5, 0xfe, 0xb3, 0xfe, + 0x87, 0xfe, 0x87, 0xfe, 0x5c, 0xfe, 0x5a, 0xfe, 0x30, 0xfe, 0x30, 0xfe, + 0x0a, 0xfe, 0x09, 0xfe, 0xe4, 0xfd, 0xe5, 0xfd, 0xc1, 0xfd, 0xc1, 0xfd, + 0xa1, 0xfd, 0xa0, 0xfd, 0x84, 0xfd, 0x85, 0xfd, 0x6b, 0xfd, 0x68, 0xfd, + 0x54, 0xfd, 0x54, 0xfd, 0x3e, 0xfd, 0x3e, 0xfd, 0x30, 0xfd, 0x2e, 0xfd, + 0x21, 0xfd, 0x22, 0xfd, 0x19, 0xfd, 0x16, 0xfd, 0x12, 0xfd, 0x13, 0xfd, + 0x0f, 0xfd, 0x0e, 0xfd, 0x11, 0xfd, 0x10, 0xfd, 0x15, 0xfd, 0x13, 0xfd, + 0x1c, 0xfd, 0x1b, 0xfd, 0x2a, 0xfd, 0x29, 0xfd, 0x37, 0xfd, 0x36, 0xfd, + 0x4c, 0xfd, 0x4b, 0xfd, 0x5f, 0xfd, 0x5e, 0xfd, 0x79, 0xfd, 0x79, 0xfd, + 0x96, 0xfd, 0x94, 0xfd, 0xb3, 0xfd, 0xb2, 0xfd, 0xd6, 0xfd, 0xd6, 0xfd, + 0xf7, 0xfd, 0xf5, 0xfd, 0x22, 0xfe, 0x22, 0xfe, 0x48, 0xfe, 0x46, 0xfe, + 0x72, 0xfe, 0x74, 0xfe, 0xa0, 0xfe, 0xa0, 0xfe, 0xcb, 0xfe, 0xcb, 0xfe, + 0x00, 0xff, 0xfe, 0xfe, 0x2d, 0xff, 0x2d, 0xff, 0x62, 0xff, 0x60, 0xff, + 0x93, 0xff, 0x91, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xf9, 0xff, 0xf7, 0xff, + 0x2b, 0x00, 0x2b, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x92, 0x00, 0x8e, 0x00, + 0xc1, 0x00, 0xc3, 0x00, 0xf3, 0x00, 0xef, 0x00, 0x21, 0x01, 0x22, 0x01, + 0x4f, 0x01, 0x4e, 0x01, 0x7c, 0x01, 0x7a, 0x01, 0xa4, 0x01, 0xa5, 0x01, + 0xcc, 0x01, 0xcb, 0x01, 0xf4, 0x01, 0xf3, 0x01, 0x15, 0x02, 0x16, 0x02, + 0x37, 0x02, 0x36, 0x02, 0x54, 0x02, 0x54, 0x02, 0x70, 0x02, 0x70, 0x02, + 0x87, 0x02, 0x88, 0x02, 0x9e, 0x02, 0x9c, 0x02, 0xad, 0x02, 0xae, 0x02, + 0xba, 0x02, 0xb8, 0x02, 0xc7, 0x02, 0xc8, 0x02, 0xcd, 0x02, 0xcc, 0x02, + 0xd1, 0x02, 0xd1, 0x02, 0xd0, 0x02, 0xd0, 0x02, 0xcd, 0x02, 0xcb, 0x02, + 0xc5, 0x02, 0xc7, 0x02, 0xbb, 0x02, 0xb9, 0x02, 0xac, 0x02, 0xab, 0x02, + 0x9a, 0x02, 0x9a, 0x02, 0x85, 0x02, 0x84, 0x02, 0x6b, 0x02, 0x6c, 0x02, + 0x53, 0x02, 0x50, 0x02, 0x30, 0x02, 0x31, 0x02, 0x12, 0x02, 0x10, 0x02, + 0xeb, 0x01, 0xeb, 0x01, 0xc7, 0x01, 0xc5, 0x01, 0x9c, 0x01, 0x9a, 0x01, + 0x70, 0x01, 0x6f, 0x01, 0x44, 0x01, 0x42, 0x01, 0x12, 0x01, 0x11, 0x01, + 0xe1, 0x00, 0xe0, 0x00, 0xb0, 0x00, 0xaf, 0x00, 0x7c, 0x00, 0x7b, 0x00, + 0x48, 0x00, 0x48, 0x00, 0x13, 0x00, 0x12, 0x00, 0xdd, 0xff, 0xdd, 0xff, + 0xa7, 0xff, 0xa5, 0xff, 0x74, 0xff, 0x73, 0xff, 0x3c, 0xff, 0x3b, 0xff, + 0x0b, 0xff, 0x09, 0xff, 0xd4, 0xfe, 0xd4, 0xfe, 0xa4, 0xfe, 0xa3, 0xfe, + 0x72, 0xfe, 0x6f, 0xfe, 0x43, 0xfe, 0x41, 0xfe, 0x16, 0xfe, 0x14, 0xfe, + 0xe8, 0xfd, 0xe8, 0xfd, 0xc0, 0xfd, 0xbf, 0xfd, 0x98, 0xfd, 0x98, 0xfd, + 0x74, 0xfd, 0x74, 0xfd, 0x53, 0xfd, 0x50, 0xfd, 0x32, 0xfd, 0x32, 0xfd, + 0x1a, 0xfd, 0x17, 0xfd, 0xfd, 0xfc, 0xfe, 0xfc, 0xea, 0xfc, 0xe8, 0xfc, + 0xd9, 0xfc, 0xd9, 0xfc, 0xca, 0xfc, 0xc8, 0xfc, 0xbf, 0xfc, 0xbe, 0xfc, + 0xb8, 0xfc, 0xb7, 0xfc, 0xb4, 0xfc, 0xb2, 0xfc, 0xb5, 0xfc, 0xb5, 0xfc, + 0xba, 0xfc, 0xb7, 0xfc, 0xc1, 0xfc, 0xc1, 0xfc, 0xce, 0xfc, 0xcb, 0xfc, + 0xdb, 0xfc, 0xdb, 0xfc, 0xee, 0xfc, 0xeb, 0xfc, 0x03, 0xfd, 0x04, 0xfd, + 0x1c, 0xfd, 0x1c, 0xfd, 0x3c, 0xfd, 0x3b, 0xfd, 0x59, 0xfd, 0x58, 0xfd, + 0x7c, 0xfd, 0x7c, 0xfd, 0xa2, 0xfd, 0xa1, 0xfd, 0xca, 0xfd, 0xc9, 0xfd, + 0xf4, 0xfd, 0xf4, 0xfd, 0x22, 0xfe, 0x21, 0xfe, 0x4e, 0xfe, 0x50, 0xfe, + 0x81, 0xfe, 0x7c, 0xfe, 0xb1, 0xfe, 0xb2, 0xfe, 0xe7, 0xfe, 0xe5, 0xfe, + 0x19, 0xff, 0x19, 0xff, 0x51, 0xff, 0x50, 0xff, 0x83, 0xff, 0x83, 0xff, + 0xbc, 0xff, 0xba, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0x2a, 0x00, 0x28, 0x00, + 0x5e, 0x00, 0x5a, 0x00, 0x92, 0x00, 0x93, 0x00, 0xc8, 0x00, 0xc5, 0x00, + 0xf7, 0x00, 0xf8, 0x00, 0x2d, 0x01, 0x2d, 0x01, 0x5a, 0x01, 0x58, 0x01, + 0x8a, 0x01, 0x8a, 0x01, 0xb5, 0x01, 0xb3, 0x01, 0xdf, 0x01, 0xe0, 0x01, + 0x07, 0x02, 0x07, 0x02, 0x2a, 0x02, 0x29, 0x02, 0x50, 0x02, 0x4f, 0x02, + 0x6c, 0x02, 0x6b, 0x02, 0x8c, 0x02, 0x8a, 0x02, 0x9f, 0x02, 0x9f, 0x02, + 0xb8, 0x02, 0xb6, 0x02, 0xc9, 0x02, 0xc9, 0x02, 0xd6, 0x02, 0xd5, 0x02, + 0xe4, 0x02, 0xe2, 0x02, 0xe7, 0x02, 0xe7, 0x02, 0xec, 0x02, 0xec, 0x02, + 0xea, 0x02, 0xea, 0x02, 0xe7, 0x02, 0xe7, 0x02, 0xdf, 0x02, 0xdf, 0x02, + 0xd4, 0x02, 0xd4, 0x02, 0xc4, 0x02, 0xc3, 0x02, 0xb3, 0x02, 0xb2, 0x02, + 0x9c, 0x02, 0x9c, 0x02, 0x83, 0x02, 0x83, 0x02, 0x64, 0x02, 0x64, 0x02, + 0x45, 0x02, 0x45, 0x02, 0x24, 0x02, 0x22, 0x02, 0xfb, 0x01, 0xfc, 0x01, + 0xd6, 0x01, 0xd3, 0x01, 0xa7, 0x01, 0xaa, 0x01, 0x7e, 0x01, 0x7c, 0x01, + 0x4f, 0x01, 0x4e, 0x01, 0x1c, 0x01, 0x1d, 0x01, 0xee, 0x00, 0xeb, 0x00, + 0xb5, 0x00, 0xb7, 0x00, 0x86, 0x00, 0x83, 0x00, 0x4c, 0x00, 0x4e, 0x00, + 0x19, 0x00, 0x18, 0x00, 0xe3, 0xff, 0xe2, 0xff, 0xac, 0xff, 0xac, 0xff, + 0x79, 0xff, 0x78, 0xff, 0x43, 0xff, 0x43, 0xff, 0x0e, 0xff, 0x0e, 0xff, + 0xda, 0xfe, 0xd9, 0xfe, 0xa8, 0xfe, 0xa9, 0xfe, 0x75, 0xfe, 0x75, 0xfe, + 0x49, 0xfe, 0x49, 0xfe, 0x1c, 0xfe, 0x1b, 0xfe, 0xef, 0xfd, 0xf0, 0xfd, + 0xc9, 0xfd, 0xc8, 0xfd, 0xa0, 0xfd, 0x9f, 0xfd, 0x81, 0xfd, 0x7f, 0xfd, + 0x5e, 0xfd, 0x5e, 0xfd, 0x41, 0xfd, 0x40, 0xfd, 0x28, 0xfd, 0x27, 0xfd, + 0x11, 0xfd, 0x11, 0xfd, 0xff, 0xfc, 0xfd, 0xfc, 0xee, 0xfc, 0xee, 0xfc, + 0xe3, 0xfc, 0xe2, 0xfc, 0xd9, 0xfc, 0xda, 0xfc, 0xd6, 0xfc, 0xd6, 0xfc, + 0xd6, 0xfc, 0xd3, 0xfc, 0xd9, 0xfc, 0xdb, 0xfc, 0xe1, 0xfc, 0xdf, 0xfc, + 0xeb, 0xfc, 0xec, 0xfc, 0xf8, 0xfc, 0xf7, 0xfc, 0x0c, 0xfd, 0x0a, 0xfd, + 0x21, 0xfd, 0x20, 0xfd, 0x3a, 0xfd, 0x3a, 0xfd, 0x59, 0xfd, 0x57, 0xfd, + 0x75, 0xfd, 0x77, 0xfd, 0x9d, 0xfd, 0x98, 0xfd, 0xbe, 0xfd, 0xc1, 0xfd, + 0xec, 0xfd, 0xea, 0xfd, 0x14, 0xfe, 0x14, 0xfe, 0x45, 0xfe, 0x44, 0xfe, + 0x73, 0xfe, 0x73, 0xfe, 0xa5, 0xfe, 0xa5, 0xfe, 0xda, 0xfe, 0xd8, 0xfe, + 0x0d, 0xff, 0x0c, 0xff, 0x45, 0xff, 0x45, 0xff, 0x7b, 0xff, 0x7a, 0xff, + 0xb5, 0xff, 0xb5, 0xff, 0xee, 0xff, 0xed, 0xff, 0x25, 0x00, 0x27, 0x00, + 0x5f, 0x00, 0x5d, 0x00, 0x98, 0x00, 0x99, 0x00, 0xce, 0x00, 0xcf, 0x00, + 0x08, 0x01, 0x06, 0x01, 0x39, 0x01, 0x3a, 0x01, 0x73, 0x01, 0x71, 0x01, + 0xa2, 0x01, 0xa3, 0x01, 0xd7, 0x01, 0xd6, 0x01, 0x04, 0x02, 0x05, 0x02, + 0x31, 0x02, 0x30, 0x02, 0x5d, 0x02, 0x5c, 0x02, 0x83, 0x02, 0x83, 0x02, + 0xaa, 0x02, 0xa9, 0x02, 0xcb, 0x02, 0xca, 0x02, 0xe9, 0x02, 0xea, 0x02, + 0x05, 0x03, 0x04, 0x03, 0x1d, 0x03, 0x1d, 0x03, 0x32, 0x03, 0x31, 0x03, + 0x44, 0x03, 0x40, 0x03, 0x50, 0x03, 0x50, 0x03, 0x58, 0x03, 0x56, 0x03, + 0x5e, 0x03, 0x5e, 0x03, 0x5d, 0x03, 0x5e, 0x03, 0x5e, 0x03, 0x5d, 0x03, + 0x58, 0x03, 0x56, 0x03, 0x4d, 0x03, 0x4c, 0x03, 0x40, 0x03, 0x3f, 0x03, + 0x2b, 0x03, 0x2a, 0x03, 0x19, 0x03, 0x18, 0x03, 0xfd, 0x02, 0xfb, 0x02, + 0xe2, 0x02, 0xe1, 0x02, 0xc1, 0x02, 0xc0, 0x02, 0x9e, 0x02, 0x9d, 0x02, + 0x79, 0x02, 0x79, 0x02, 0x50, 0x02, 0x4d, 0x02, 0x25, 0x02, 0x26, 0x02, + 0xf6, 0x01, 0xf7, 0x01, 0xca, 0x01, 0xc8, 0x01, 0x94, 0x01, 0x96, 0x01, + 0x65, 0x01, 0x62, 0x01, 0x2d, 0x01, 0x2c, 0x01, 0xf8, 0x00, 0xf8, 0x00, + 0xc3, 0x00, 0xc3, 0x00, 0x88, 0x00, 0x88, 0x00, 0x52, 0x00, 0x52, 0x00, + 0x19, 0x00, 0x16, 0x00, 0xe0, 0xff, 0xe1, 0xff, 0xa9, 0xff, 0xaa, 0xff, + 0x71, 0xff, 0x71, 0xff, 0x3c, 0xff, 0x3c, 0xff, 0x05, 0xff, 0x05, 0xff, + 0xd4, 0xfe, 0xd3, 0xfe, 0xa0, 0xfe, 0xa1, 0xfe, 0x71, 0xfe, 0x70, 0xfe, + 0x42, 0xfe, 0x43, 0xfe, 0x16, 0xfe, 0x16, 0xfe, 0xee, 0xfd, 0xed, 0xfd, + 0xc6, 0xfd, 0xc6, 0xfd, 0xa3, 0xfd, 0xa3, 0xfd, 0x83, 0xfd, 0x81, 0xfd, + 0x63, 0xfd, 0x66, 0xfd, 0x4d, 0xfd, 0x4b, 0xfd, 0x34, 0xfd, 0x35, 0xfd, + 0x23, 0xfd, 0x22, 0xfd, 0x13, 0xfd, 0x15, 0xfd, 0x07, 0xfd, 0x07, 0xfd, + 0x03, 0xfd, 0x02, 0xfd, 0xf9, 0xfc, 0xfc, 0xfc, 0xfe, 0xfc, 0xfd, 0xfc, + 0x01, 0xfd, 0x01, 0xfd, 0x09, 0xfd, 0x09, 0xfd, 0x17, 0xfd, 0x16, 0xfd, + 0x24, 0xfd, 0x24, 0xfd, 0x3b, 0xfd, 0x38, 0xfd, 0x4f, 0xfd, 0x51, 0xfd, + 0x6b, 0xfd, 0x6a, 0xfd, 0x8a, 0xfd, 0x88, 0xfd, 0xa9, 0xfd, 0xaa, 0xfd, + 0xd2, 0xfd, 0xd0, 0xfd, 0xf6, 0xfd, 0xf7, 0xfd, 0x21, 0xfe, 0x22, 0xfe, + 0x4f, 0xfe, 0x4e, 0xfe, 0x7d, 0xfe, 0x7e, 0xfe, 0xb0, 0xfe, 0xb0, 0xfe, + 0xe1, 0xfe, 0xe2, 0xfe, 0x18, 0xff, 0x19, 0xff, 0x4e, 0xff, 0x4f, 0xff, + 0x86, 0xff, 0x85, 0xff, 0xbe, 0xff, 0xc2, 0xff, 0xf9, 0xff, 0xf6, 0xff, + 0x30, 0x00, 0x33, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0xa2, 0x00, 0xa1, 0x00, + 0xdb, 0x00, 0xdd, 0x00, 0x13, 0x01, 0x14, 0x01, 0x4a, 0x01, 0x4a, 0x01, + 0x81, 0x01, 0x82, 0x01, 0xb5, 0x01, 0xb4, 0x01, 0xe8, 0x01, 0xea, 0x01, + 0x19, 0x02, 0x17, 0x02, 0x46, 0x02, 0x48, 0x02, 0x74, 0x02, 0x72, 0x02, + 0x9a, 0x02, 0x9d, 0x02, 0xc3, 0x02, 0xc2, 0x02, 0xe4, 0x02, 0xe6, 0x02, + 0x05, 0x03, 0x04, 0x03, 0x22, 0x03, 0x21, 0x03, 0x3b, 0x03, 0x3b, 0x03, + 0x4f, 0x03, 0x4f, 0x03, 0x64, 0x03, 0x62, 0x03, 0x6f, 0x03, 0x70, 0x03, + 0x7a, 0x03, 0x79, 0x03, 0x81, 0x03, 0x7e, 0x03, 0x7f, 0x03, 0x81, 0x03, + 0x85, 0x03, 0x81, 0x03, 0x77, 0x03, 0x78, 0x03, 0x71, 0x03, 0x70, 0x03, + 0x61, 0x03, 0x60, 0x03, 0x4e, 0x03, 0x4e, 0x03, 0x3b, 0x03, 0x39, 0x03, + 0x1d, 0x03, 0x1e, 0x03, 0x05, 0x03, 0x03, 0x03, 0xe0, 0x02, 0xe1, 0x02, + 0xc0, 0x02, 0xbd, 0x02, 0x98, 0x02, 0x97, 0x02, 0x6b, 0x02, 0x6a, 0x02, + 0x42, 0x02, 0x41, 0x02, 0x10, 0x02, 0x0f, 0x02, 0xe0, 0x01, 0xde, 0x01, + 0xab, 0x01, 0xab, 0x01, 0x75, 0x01, 0x73, 0x01, 0x40, 0x01, 0x3e, 0x01, + 0x04, 0x01, 0x02, 0x01, 0xce, 0x00, 0xcc, 0x00, 0x90, 0x00, 0x90, 0x00, + 0x57, 0x00, 0x57, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0xde, 0xff, 0xdd, 0xff, + 0xa7, 0xff, 0xa5, 0xff, 0x69, 0xff, 0x68, 0xff, 0x30, 0xff, 0x2f, 0xff, + 0xf6, 0xfe, 0xf5, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0x8a, 0xfe, 0x87, 0xfe, + 0x53, 0xfe, 0x54, 0xfe, 0x24, 0xfe, 0x22, 0xfe, 0xf1, 0xfd, 0xf1, 0xfd, + 0xc7, 0xfd, 0xc6, 0xfd, 0x9a, 0xfd, 0x9a, 0xfd, 0x74, 0xfd, 0x74, 0xfd, + 0x4f, 0xfd, 0x4d, 0xfd, 0x2c, 0xfd, 0x2c, 0xfd, 0x11, 0xfd, 0x11, 0xfd, + 0xf6, 0xfc, 0xf5, 0xfc, 0xdf, 0xfc, 0xe0, 0xfc, 0xcd, 0xfc, 0xcc, 0xfc, + 0xbd, 0xfc, 0xbd, 0xfc, 0xb7, 0xfc, 0xb4, 0xfc, 0xab, 0xfc, 0xac, 0xfc, + 0xab, 0xfc, 0xa9, 0xfc, 0xaa, 0xfc, 0xab, 0xfc, 0xaf, 0xfc, 0xae, 0xfc, + 0xba, 0xfc, 0xb9, 0xfc, 0xc8, 0xfc, 0xc7, 0xfc, 0xd7, 0xfc, 0xd6, 0xfc, + 0xef, 0xfc, 0xef, 0xfc, 0x05, 0xfd, 0x05, 0xfd, 0x25, 0xfd, 0x23, 0xfd, + 0x42, 0xfd, 0x43, 0xfd, 0x67, 0xfd, 0x66, 0xfd, 0x8e, 0xfd, 0x8e, 0xfd, + 0xb7, 0xfd, 0xb4, 0xfd, 0xe5, 0xfd, 0xe4, 0xfd, 0x14, 0xfe, 0x11, 0xfe, + 0x43, 0xfe, 0x45, 0xfe, 0x76, 0xfe, 0x74, 0xfe, 0xab, 0xfe, 0xab, 0xfe, + 0xe3, 0xfe, 0xe3, 0xfe, 0x1b, 0xff, 0x18, 0xff, 0x52, 0xff, 0x54, 0xff, + 0x8f, 0xff, 0x8d, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0x02, 0x00, 0x02, 0x00, + 0x3b, 0x00, 0x3b, 0x00, 0x76, 0x00, 0x74, 0x00, 0xad, 0x00, 0xad, 0x00, + 0xe6, 0x00, 0xe6, 0x00, 0x20, 0x01, 0x1f, 0x01, 0x55, 0x01, 0x55, 0x01, + 0x8a, 0x01, 0x89, 0x01, 0xba, 0x01, 0xbc, 0x01, 0xec, 0x01, 0xeb, 0x01, + 0x1b, 0x02, 0x1b, 0x02, 0x45, 0x02, 0x47, 0x02, 0x6e, 0x02, 0x6d, 0x02, + 0x94, 0x02, 0x96, 0x02, 0xb5, 0x02, 0xb6, 0x02, 0xd6, 0x02, 0xd5, 0x02, + 0xf0, 0x02, 0xf0, 0x02, 0x07, 0x03, 0x06, 0x03, 0x1d, 0x03, 0x1e, 0x03, + 0x2a, 0x03, 0x29, 0x03, 0x3a, 0x03, 0x39, 0x03, 0x3f, 0x03, 0x3d, 0x03, + 0x43, 0x03, 0x45, 0x03, 0x45, 0x03, 0x44, 0x03, 0x3e, 0x03, 0x3e, 0x03, + 0x38, 0x03, 0x38, 0x03, 0x2a, 0x03, 0x2a, 0x03, 0x1a, 0x03, 0x1b, 0x03, + 0x05, 0x03, 0x04, 0x03, 0xee, 0x02, 0xef, 0x02, 0xd1, 0x02, 0xd0, 0x02, + 0xb1, 0x02, 0xb2, 0x02, 0x90, 0x02, 0x90, 0x02, 0x67, 0x02, 0x68, 0x02, + 0x40, 0x02, 0x3e, 0x02, 0x12, 0x02, 0x12, 0x02, 0xe3, 0x01, 0xe1, 0x01, + 0xb0, 0x01, 0xb0, 0x01, 0x7e, 0x01, 0x7c, 0x01, 0x46, 0x01, 0x46, 0x01, + 0x0f, 0x01, 0x0e, 0x01, 0xd5, 0x00, 0xd4, 0x00, 0x9a, 0x00, 0x9a, 0x00, + 0x5e, 0x00, 0x5d, 0x00, 0x24, 0x00, 0x22, 0x00, 0xe5, 0xff, 0xe5, 0xff, + 0xa8, 0xff, 0xa7, 0xff, 0x6a, 0xff, 0x6d, 0xff, 0x30, 0xff, 0x2d, 0xff, + 0xf2, 0xfe, 0xf2, 0xfe, 0xba, 0xfe, 0xb8, 0xfe, 0x7f, 0xfe, 0x80, 0xfe, + 0x48, 0xfe, 0x45, 0xfe, 0x11, 0xfe, 0x13, 0xfe, 0xdd, 0xfd, 0xda, 0xfd, + 0xab, 0xfd, 0xae, 0xfd, 0x7b, 0xfd, 0x79, 0xfd, 0x4f, 0xfd, 0x4e, 0xfd, + 0x25, 0xfd, 0x25, 0xfd, 0xff, 0xfc, 0xfd, 0xfc, 0xdb, 0xfc, 0xdd, 0xfc, + 0xbd, 0xfc, 0xbb, 0xfc, 0xa0, 0xfc, 0x9e, 0xfc, 0x87, 0xfc, 0x87, 0xfc, + 0x74, 0xfc, 0x73, 0xfc, 0x63, 0xfc, 0x62, 0xfc, 0x57, 0xfc, 0x56, 0xfc, + 0x4d, 0xfc, 0x4d, 0xfc, 0x4b, 0xfc, 0x49, 0xfc, 0x4b, 0xfc, 0x4a, 0xfc, + 0x4f, 0xfc, 0x50, 0xfc, 0x59, 0xfc, 0x57, 0xfc, 0x65, 0xfc, 0x65, 0xfc, + 0x76, 0xfc, 0x74, 0xfc, 0x8c, 0xfc, 0x8b, 0xfc, 0xa3, 0xfc, 0xa4, 0xfc, + 0xc1, 0xfc, 0xbf, 0xfc, 0xe0, 0xfc, 0xe0, 0xfc, 0x05, 0xfd, 0x02, 0xfd, + 0x2d, 0xfd, 0x2c, 0xfd, 0x55, 0xfd, 0x55, 0xfd, 0x85, 0xfd, 0x83, 0xfd, + 0xb5, 0xfd, 0xb4, 0xfd, 0xe6, 0xfd, 0xe4, 0xfd, 0x1c, 0xfe, 0x1a, 0xfe, + 0x50, 0xfe, 0x51, 0xfe, 0x8c, 0xfe, 0x89, 0xfe, 0xc5, 0xfe, 0xc5, 0xfe, + 0x01, 0xff, 0x00, 0xff, 0x3f, 0xff, 0x3d, 0xff, 0x78, 0xff, 0x78, 0xff, + 0xb9, 0xff, 0xb6, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0x32, 0x00, 0x30, 0x00, + 0x6e, 0x00, 0x6f, 0x00, 0xaa, 0x00, 0xa8, 0x00, 0xe4, 0x00, 0xe4, 0x00, + 0x1f, 0x01, 0x1e, 0x01, 0x57, 0x01, 0x57, 0x01, 0x8c, 0x01, 0x8c, 0x01, + 0xc1, 0x01, 0xc2, 0x01, 0xf5, 0x01, 0xf1, 0x01, 0x25, 0x02, 0x24, 0x02, + 0x4f, 0x02, 0x4f, 0x02, 0x79, 0x02, 0x78, 0x02, 0xa0, 0x02, 0xa0, 0x02, + 0xc1, 0x02, 0xc1, 0x02, 0xe2, 0x02, 0xe2, 0x02, 0xfc, 0x02, 0xfd, 0x02, + 0x16, 0x03, 0x13, 0x03, 0x28, 0x03, 0x2a, 0x03, 0x39, 0x03, 0x38, 0x03, + 0x46, 0x03, 0x46, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x52, 0x03, 0x51, 0x03, + 0x4e, 0x03, 0x4d, 0x03, 0x4b, 0x03, 0x4b, 0x03, 0x41, 0x03, 0x41, 0x03, + 0x34, 0x03, 0x32, 0x03, 0x23, 0x03, 0x24, 0x03, 0x0d, 0x03, 0x0c, 0x03, + 0xf4, 0x02, 0xf3, 0x02, 0xd6, 0x02, 0xd5, 0x02, 0xb7, 0x02, 0xb4, 0x02, + 0x90, 0x02, 0x91, 0x02, 0x69, 0x02, 0x68, 0x02, 0x40, 0x02, 0x3d, 0x02, + 0x0f, 0x02, 0x0f, 0x02, 0xe2, 0x01, 0xdf, 0x01, 0xaa, 0x01, 0xac, 0x01, + 0x79, 0x01, 0x75, 0x01, 0x40, 0x01, 0x3f, 0x01, 0x05, 0x01, 0x06, 0x01, + 0xce, 0x00, 0xcc, 0x00, 0x92, 0x00, 0x90, 0x00, 0x56, 0x00, 0x55, 0x00, + 0x17, 0x00, 0x16, 0x00, 0xdc, 0xff, 0xdb, 0xff, 0x9d, 0xff, 0x9d, 0xff, + 0x63, 0xff, 0x62, 0xff, 0x23, 0xff, 0x24, 0xff, 0xea, 0xfe, 0xeb, 0xfe, + 0xaf, 0xfe, 0xab, 0xfe, 0x75, 0xfe, 0x77, 0xfe, 0x42, 0xfe, 0x3e, 0xfe, + 0x07, 0xfe, 0x08, 0xfe, 0xd8, 0xfd, 0xd8, 0xfd, 0xa5, 0xfd, 0xa4, 0xfd, + 0x77, 0xfd, 0x78, 0xfd, 0x4e, 0xfd, 0x4c, 0xfd, 0x24, 0xfd, 0x25, 0xfd, + 0x02, 0xfd, 0x01, 0xfd, 0xdf, 0xfc, 0xdd, 0xfc, 0xc1, 0xfc, 0xc0, 0xfc, + 0xaa, 0xfc, 0xa9, 0xfc, 0x91, 0xfc, 0x91, 0xfc, 0x83, 0xfc, 0x83, 0xfc, + 0x71, 0xfc, 0x71, 0xfc, 0x6c, 0xfc, 0x6b, 0xfc, 0x65, 0xfc, 0x65, 0xfc, + 0x65, 0xfc, 0x63, 0xfc, 0x6a, 0xfc, 0x6b, 0xfc, 0x6f, 0xfc, 0x6d, 0xfc, + 0x7d, 0xfc, 0x7d, 0xfc, 0x8b, 0xfc, 0x8b, 0xfc, 0xa1, 0xfc, 0xa0, 0xfc, + 0xbb, 0xfc, 0xba, 0xfc, 0xd5, 0xfc, 0xd5, 0xfc, 0xf9, 0xfc, 0xf8, 0xfc, + 0x1c, 0xfd, 0x1a, 0xfd, 0x43, 0xfd, 0x41, 0xfd, 0x6e, 0xfd, 0x6f, 0xfd, + 0x9d, 0xfd, 0x9a, 0xfd, 0xcd, 0xfd, 0xce, 0xfd, 0x02, 0xfe, 0x00, 0xfe, + 0x36, 0xfe, 0x36, 0xfe, 0x71, 0xfe, 0x6d, 0xfe, 0xa8, 0xfe, 0xa8, 0xfe, + 0xe7, 0xfe, 0xe5, 0xfe, 0x22, 0xff, 0x22, 0xff, 0x62, 0xff, 0x61, 0xff, + 0xa1, 0xff, 0xa1, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0x23, 0x00, 0x20, 0x00, + 0x5f, 0x00, 0x60, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0xdf, 0x00, 0xde, 0x00, + 0x1b, 0x01, 0x1c, 0x01, 0x5a, 0x01, 0x5a, 0x01, 0x93, 0x01, 0x93, 0x01, + 0xcf, 0x01, 0xd0, 0x01, 0x05, 0x02, 0x04, 0x02, 0x3d, 0x02, 0x3c, 0x02, + 0x6e, 0x02, 0x6c, 0x02, 0x9d, 0x02, 0x9f, 0x02, 0xca, 0x02, 0xcb, 0x02, + 0xf5, 0x02, 0xf3, 0x02, 0x19, 0x03, 0x1c, 0x03, 0x3e, 0x03, 0x3b, 0x03, + 0x5a, 0x03, 0x5c, 0x03, 0x77, 0x03, 0x77, 0x03, 0x8b, 0x03, 0x8d, 0x03, + 0xa3, 0x03, 0xa1, 0x03, 0xad, 0x03, 0xaf, 0x03, 0xba, 0x03, 0xb9, 0x03, + 0xbf, 0x03, 0xbf, 0x03, 0xc1, 0x03, 0xc1, 0x03, 0xbd, 0x03, 0xbe, 0x03, + 0xb7, 0x03, 0xb5, 0x03, 0xa9, 0x03, 0xaa, 0x03, 0x9d, 0x03, 0x9a, 0x03, + 0x85, 0x03, 0x86, 0x03, 0x70, 0x03, 0x6e, 0x03, 0x51, 0x03, 0x51, 0x03, + 0x33, 0x03, 0x33, 0x03, 0x0d, 0x03, 0x0d, 0x03, 0xe7, 0x02, 0xe5, 0x02, + 0xbe, 0x02, 0xbd, 0x02, 0x8e, 0x02, 0x8e, 0x02, 0x5f, 0x02, 0x5d, 0x02, + 0x2a, 0x02, 0x2a, 0x02, 0xf6, 0x01, 0xf6, 0x01, 0xbb, 0x01, 0xba, 0x01, + 0x84, 0x01, 0x83, 0x01, 0x46, 0x01, 0x45, 0x01, 0x0b, 0x01, 0x0b, 0x01, + 0xcd, 0x00, 0xcc, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0x51, 0x00, 0x4f, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0xd3, 0xff, 0xd0, 0xff, 0x91, 0xff, 0x91, 0xff, + 0x54, 0xff, 0x55, 0xff, 0x18, 0xff, 0x16, 0xff, 0xda, 0xfe, 0xda, 0xfe, + 0xa4, 0xfe, 0xa4, 0xfe, 0x68, 0xfe, 0x67, 0xfe, 0x36, 0xfe, 0x35, 0xfe, + 0x00, 0xfe, 0x00, 0xfe, 0xd0, 0xfd, 0xcf, 0xfd, 0x9f, 0xfd, 0xa2, 0xfd, + 0x76, 0xfd, 0x73, 0xfd, 0x4f, 0xfd, 0x4f, 0xfd, 0x29, 0xfd, 0x28, 0xfd, + 0x0a, 0xfd, 0x08, 0xfd, 0xeb, 0xfc, 0xec, 0xfc, 0xd1, 0xfc, 0xd1, 0xfc, + 0xbe, 0xfc, 0xbe, 0xfc, 0xad, 0xfc, 0xac, 0xfc, 0xa1, 0xfc, 0xa1, 0xfc, + 0x99, 0xfc, 0x98, 0xfc, 0x94, 0xfc, 0x95, 0xfc, 0x95, 0xfc, 0x94, 0xfc, + 0x99, 0xfc, 0x9a, 0xfc, 0xa4, 0xfc, 0xa3, 0xfc, 0xb1, 0xfc, 0xb1, 0xfc, + 0xc3, 0xfc, 0xc2, 0xfc, 0xd8, 0xfc, 0xd8, 0xfc, 0xf5, 0xfc, 0xf3, 0xfc, + 0x11, 0xfd, 0x10, 0xfd, 0x34, 0xfd, 0x35, 0xfd, 0x5a, 0xfd, 0x58, 0xfd, + 0x82, 0xfd, 0x84, 0xfd, 0xb2, 0xfd, 0xaf, 0xfd, 0xdf, 0xfd, 0xe2, 0xfd, + 0x13, 0xfe, 0x11, 0xfe, 0x48, 0xfe, 0x47, 0xfe, 0x7f, 0xfe, 0x80, 0xfe, + 0xbb, 0xfe, 0xbb, 0xfe, 0xf4, 0xfe, 0xf2, 0xfe, 0x34, 0xff, 0x36, 0xff, + 0x72, 0xff, 0x6d, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0x30, 0x00, 0x32, 0x00, 0x74, 0x00, 0x71, 0x00, 0xaf, 0x00, 0xb1, 0x00, + 0xf4, 0x00, 0xf1, 0x00, 0x2f, 0x01, 0x2f, 0x01, 0x6f, 0x01, 0x6f, 0x01, + 0xaa, 0x01, 0xaa, 0x01, 0xe5, 0x01, 0xe5, 0x01, 0x1e, 0x02, 0x1e, 0x02, + 0x56, 0x02, 0x54, 0x02, 0x88, 0x02, 0x89, 0x02, 0xbb, 0x02, 0xba, 0x02, + 0xe9, 0x02, 0xe7, 0x02, 0x12, 0x03, 0x14, 0x03, 0x3c, 0x03, 0x38, 0x03, + 0x5e, 0x03, 0x5f, 0x03, 0x7f, 0x03, 0x7c, 0x03, 0x9c, 0x03, 0x9a, 0x03, + 0xb4, 0x03, 0xb3, 0x03, 0xc6, 0x03, 0xc7, 0x03, 0xd9, 0x03, 0xd6, 0x03, + 0xe2, 0x03, 0xe3, 0x03, 0xea, 0x03, 0xe9, 0x03, 0xeb, 0x03, 0xeb, 0x03, + 0xe8, 0x03, 0xe8, 0x03, 0xe5, 0x03, 0xe3, 0x03, 0xd6, 0x03, 0xd5, 0x03, + 0xc8, 0x03, 0xc9, 0x03, 0xb5, 0x03, 0xb2, 0x03, 0x9a, 0x03, 0x9b, 0x03, + 0x7f, 0x03, 0x7e, 0x03, 0x60, 0x03, 0x5e, 0x03, 0x39, 0x03, 0x39, 0x03, + 0x12, 0x03, 0x12, 0x03, 0xe7, 0x02, 0xe6, 0x02, 0xb6, 0x02, 0xb8, 0x02, + 0x87, 0x02, 0x86, 0x02, 0x4f, 0x02, 0x4f, 0x02, 0x1a, 0x02, 0x1a, 0x02, + 0xdf, 0x01, 0xe0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0x67, 0x01, 0x66, 0x01, + 0x25, 0x01, 0x26, 0x01, 0xe6, 0x00, 0xe4, 0x00, 0xa5, 0x00, 0xa5, 0x00, + 0x62, 0x00, 0x62, 0x00, 0x20, 0x00, 0x20, 0x00, 0xde, 0xff, 0xde, 0xff, + 0x9b, 0xff, 0x9c, 0xff, 0x5b, 0xff, 0x58, 0xff, 0x1a, 0xff, 0x1d, 0xff, + 0xdb, 0xfe, 0xd7, 0xfe, 0x9b, 0xfe, 0x9e, 0xfe, 0x63, 0xfe, 0x60, 0xfe, + 0x25, 0xfe, 0x26, 0xfe, 0xef, 0xfd, 0xee, 0xfd, 0xba, 0xfd, 0xb9, 0xfd, + 0x85, 0xfd, 0x86, 0xfd, 0x5a, 0xfd, 0x58, 0xfd, 0x2b, 0xfd, 0x2a, 0xfd, + 0x02, 0xfd, 0x04, 0xfd, 0xe0, 0xfc, 0xdf, 0xfc, 0xbd, 0xfc, 0xbd, 0xfc, + 0xa0, 0xfc, 0xa1, 0xfc, 0x87, 0xfc, 0x87, 0xfc, 0x74, 0xfc, 0x71, 0xfc, + 0x62, 0xfc, 0x63, 0xfc, 0x58, 0xfc, 0x57, 0xfc, 0x4e, 0xfc, 0x4e, 0xfc, + 0x4c, 0xfc, 0x4c, 0xfc, 0x4d, 0xfc, 0x4d, 0xfc, 0x55, 0xfc, 0x52, 0xfc, + 0x5f, 0xfc, 0x5f, 0xfc, 0x6f, 0xfc, 0x6d, 0xfc, 0x82, 0xfc, 0x83, 0xfc, + 0x99, 0xfc, 0x99, 0xfc, 0xb6, 0xfc, 0xb4, 0xfc, 0xd5, 0xfc, 0xd4, 0xfc, + 0xfa, 0xfc, 0xfb, 0xfc, 0x22, 0xfd, 0x20, 0xfd, 0x4e, 0xfd, 0x4d, 0xfd, + 0x7c, 0xfd, 0x7a, 0xfd, 0xae, 0xfd, 0xae, 0xfd, 0xe2, 0xfd, 0xe2, 0xfd, + 0x1b, 0xfe, 0x19, 0xfe, 0x52, 0xfe, 0x51, 0xfe, 0x8c, 0xfe, 0x8c, 0xfe, + 0xcc, 0xfe, 0xca, 0xfe, 0x09, 0xff, 0x08, 0xff, 0x4b, 0xff, 0x4a, 0xff, + 0x89, 0xff, 0x89, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0x0d, 0x00, 0x0c, 0x00, + 0x4d, 0x00, 0x4c, 0x00, 0x8e, 0x00, 0x8d, 0x00, 0xce, 0x00, 0xce, 0x00, + 0x0e, 0x01, 0x0e, 0x01, 0x4c, 0x01, 0x4a, 0x01, 0x88, 0x01, 0x89, 0x01, + 0xc3, 0x01, 0xc3, 0x01, 0xfc, 0x01, 0xfb, 0x01, 0x31, 0x02, 0x30, 0x02, + 0x65, 0x02, 0x64, 0x02, 0x93, 0x02, 0x93, 0x02, 0xc1, 0x02, 0xc2, 0x02, + 0xe9, 0x02, 0xe7, 0x02, 0x12, 0x03, 0x11, 0x03, 0x33, 0x03, 0x32, 0x03, + 0x51, 0x03, 0x50, 0x03, 0x6e, 0x03, 0x6c, 0x03, 0x83, 0x03, 0x83, 0x03, + 0x96, 0x03, 0x94, 0x03, 0xa1, 0x03, 0xa2, 0x03, 0xab, 0x03, 0xab, 0x03, + 0xb0, 0x03, 0xb0, 0x03, 0xb0, 0x03, 0xaf, 0x03, 0xab, 0x03, 0xa9, 0x03, + 0x9f, 0x03, 0xa1, 0x03, 0x95, 0x03, 0x95, 0x03, 0x7e, 0x03, 0x7d, 0x03, + 0x6c, 0x03, 0x6b, 0x03, 0x4d, 0x03, 0x4d, 0x03, 0x2f, 0x03, 0x2e, 0x03, + 0x0c, 0x03, 0x0d, 0x03, 0xe4, 0x02, 0xe1, 0x02, 0xba, 0x02, 0xbc, 0x02, + 0x8b, 0x02, 0x8a, 0x02, 0x5b, 0x02, 0x5b, 0x02, 0x23, 0x02, 0x23, 0x02, + 0xec, 0x01, 0xeb, 0x01, 0xb3, 0x01, 0xb3, 0x01, 0x75, 0x01, 0x78, 0x01, + 0x3a, 0x01, 0x38, 0x01, 0xf5, 0x00, 0xf7, 0x00, 0xb8, 0x00, 0xb5, 0x00, + 0x72, 0x00, 0x74, 0x00, 0x30, 0x00, 0x2e, 0x00, 0xec, 0xff, 0xed, 0xff, + 0xa6, 0xff, 0xa7, 0xff, 0x68, 0xff, 0x66, 0xff, 0x1f, 0xff, 0x22, 0xff, + 0xe1, 0xfe, 0xdf, 0xfe, 0x9c, 0xfe, 0x9e, 0xfe, 0x5c, 0xfe, 0x5d, 0xfe, + 0x20, 0xfe, 0x20, 0xfe, 0xe0, 0xfd, 0xe1, 0xfd, 0xa9, 0xfd, 0xa9, 0xfd, + 0x70, 0xfd, 0x70, 0xfd, 0x3b, 0xfd, 0x3b, 0xfd, 0x0b, 0xfd, 0x0b, 0xfd, + 0xdb, 0xfc, 0xdb, 0xfc, 0xb1, 0xfc, 0xb1, 0xfc, 0x8b, 0xfc, 0x89, 0xfc, + 0x65, 0xfc, 0x66, 0xfc, 0x48, 0xfc, 0x47, 0xfc, 0x2c, 0xfc, 0x2c, 0xfc, + 0x14, 0xfc, 0x15, 0xfc, 0x04, 0xfc, 0x03, 0xfc, 0xf6, 0xfb, 0xf5, 0xfb, + 0xed, 0xfb, 0xec, 0xfb, 0xe8, 0xfb, 0xe7, 0xfb, 0xe8, 0xfb, 0xe8, 0xfb, + 0xee, 0xfb, 0xec, 0xfb, 0xf6, 0xfb, 0xf7, 0xfb, 0x06, 0xfc, 0x05, 0xfc, + 0x1a, 0xfc, 0x1a, 0xfc, 0x2f, 0xfc, 0x2f, 0xfc, 0x4d, 0xfc, 0x4b, 0xfc, + 0x6a, 0xfc, 0x6c, 0xfc, 0x93, 0xfc, 0x90, 0xfc, 0xb8, 0xfc, 0xba, 0xfc, + 0xe4, 0xfc, 0xe1, 0xfc, 0x13, 0xfd, 0x14, 0xfd, 0x46, 0xfd, 0x44, 0xfd, + 0x7b, 0xfd, 0x7c, 0xfd, 0xb4, 0xfd, 0xb3, 0xfd, 0xef, 0xfd, 0xec, 0xfd, + 0x2a, 0xfe, 0x2a, 0xfe, 0x6b, 0xfe, 0x6a, 0xfe, 0xab, 0xfe, 0xaa, 0xfe, + 0xee, 0xfe, 0xee, 0xfe, 0x31, 0xff, 0x2e, 0xff, 0x73, 0xff, 0x74, 0xff, + 0xb8, 0xff, 0xb6, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0x40, 0x00, 0x3f, 0x00, + 0x81, 0x00, 0x81, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0x07, 0x01, 0x05, 0x01, + 0x45, 0x01, 0x47, 0x01, 0x87, 0x01, 0x85, 0x01, 0xbf, 0x01, 0xc0, 0x01, + 0xfe, 0x01, 0xfb, 0x01, 0x30, 0x02, 0x30, 0x02, 0x67, 0x02, 0x67, 0x02, + 0x98, 0x02, 0x98, 0x02, 0xc5, 0x02, 0xc5, 0x02, 0xf3, 0x02, 0xf1, 0x02, + 0x16, 0x03, 0x16, 0x03, 0x3b, 0x03, 0x3a, 0x03, 0x58, 0x03, 0x57, 0x03, + 0x72, 0x03, 0x72, 0x03, 0x88, 0x03, 0x88, 0x03, 0x99, 0x03, 0x98, 0x03, + 0xa4, 0x03, 0xa6, 0x03, 0xb0, 0x03, 0xaf, 0x03, 0xae, 0x03, 0xae, 0x03, + 0xb3, 0x03, 0xb3, 0x03, 0xa8, 0x03, 0xa9, 0x03, 0xa1, 0x03, 0xa0, 0x03, + 0x90, 0x03, 0x91, 0x03, 0x7c, 0x03, 0x7a, 0x03, 0x66, 0x03, 0x67, 0x03, + 0x46, 0x03, 0x46, 0x03, 0x27, 0x03, 0x26, 0x03, 0x02, 0x03, 0x02, 0x03, + 0xd9, 0x02, 0xd6, 0x02, 0xad, 0x02, 0xae, 0x02, 0x7d, 0x02, 0x7a, 0x02, + 0x49, 0x02, 0x49, 0x02, 0x12, 0x02, 0x13, 0x02, 0xda, 0x01, 0xd8, 0x01, + 0x9f, 0x01, 0x9e, 0x01, 0x5f, 0x01, 0x5f, 0x01, 0x21, 0x01, 0x21, 0x01, + 0xdf, 0x00, 0xde, 0x00, 0x9f, 0x00, 0x9e, 0x00, 0x5a, 0x00, 0x5b, 0x00, + 0x16, 0x00, 0x15, 0x00, 0xd0, 0xff, 0xd1, 0xff, 0x8d, 0xff, 0x8d, 0xff, + 0x4b, 0xff, 0x4a, 0xff, 0x06, 0xff, 0x05, 0xff, 0xc4, 0xfe, 0xc5, 0xfe, + 0x85, 0xfe, 0x81, 0xfe, 0x41, 0xfe, 0x44, 0xfe, 0x06, 0xfe, 0x04, 0xfe, + 0xcb, 0xfd, 0xcd, 0xfd, 0x93, 0xfd, 0x93, 0xfd, 0x5c, 0xfd, 0x5d, 0xfd, + 0x29, 0xfd, 0x29, 0xfd, 0xf9, 0xfc, 0xf7, 0xfc, 0xce, 0xfc, 0xce, 0xfc, + 0xa4, 0xfc, 0xa4, 0xfc, 0x7e, 0xfc, 0x7d, 0xfc, 0x5f, 0xfc, 0x5d, 0xfc, + 0x40, 0xfc, 0x42, 0xfc, 0x2d, 0xfc, 0x2a, 0xfc, 0x14, 0xfc, 0x18, 0xfc, + 0x08, 0xfc, 0x06, 0xfc, 0xfe, 0xfb, 0xfd, 0xfb, 0xf7, 0xfb, 0xf9, 0xfb, + 0xf9, 0xfb, 0xf8, 0xfb, 0xf9, 0xfb, 0xf9, 0xfb, 0x06, 0xfc, 0x05, 0xfc, + 0x10, 0xfc, 0x11, 0xfc, 0x25, 0xfc, 0x25, 0xfc, 0x3c, 0xfc, 0x3b, 0xfc, + 0x55, 0xfc, 0x57, 0xfc, 0x78, 0xfc, 0x77, 0xfc, 0x9b, 0xfc, 0x9a, 0xfc, + 0xc3, 0xfc, 0xc3, 0xfc, 0xef, 0xfc, 0xf0, 0xfc, 0x1e, 0xfd, 0x1e, 0xfd, + 0x54, 0xfd, 0x54, 0xfd, 0x89, 0xfd, 0x88, 0xfd, 0xc2, 0xfd, 0xc2, 0xfd, + 0xfe, 0xfd, 0xff, 0xfd, 0x3e, 0xfe, 0x3c, 0xfe, 0x7c, 0xfe, 0x7d, 0xfe, + 0xc1, 0xfe, 0xc0, 0xfe, 0x04, 0xff, 0x05, 0xff, 0x48, 0xff, 0x49, 0xff, + 0x90, 0xff, 0x8f, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0x1f, 0x00, 0x1e, 0x00, + 0x66, 0x00, 0x65, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xf1, 0x00, 0xee, 0x00, + 0x36, 0x01, 0x37, 0x01, 0x78, 0x01, 0x76, 0x01, 0xbb, 0x01, 0xbc, 0x01, + 0xf8, 0x01, 0xf8, 0x01, 0x37, 0x02, 0x37, 0x02, 0x72, 0x02, 0x72, 0x02, + 0xaa, 0x02, 0xa9, 0x02, 0xdd, 0x02, 0xdf, 0x02, 0x12, 0x03, 0x11, 0x03, + 0x3e, 0x03, 0x40, 0x03, 0x6b, 0x03, 0x67, 0x03, 0x8d, 0x03, 0x8f, 0x03, + 0xb0, 0x03, 0xb0, 0x03, 0xcf, 0x03, 0xcf, 0x03, 0xe7, 0x03, 0xe8, 0x03, + 0xfc, 0x03, 0xfc, 0x03, 0x0c, 0x04, 0x0b, 0x04, 0x17, 0x04, 0x18, 0x04, + 0x1d, 0x04, 0x1d, 0x04, 0x21, 0x04, 0x1e, 0x04, 0x1a, 0x04, 0x1c, 0x04, + 0x15, 0x04, 0x13, 0x04, 0x06, 0x04, 0x06, 0x04, 0xf3, 0x03, 0xf2, 0x03, + 0xdf, 0x03, 0xde, 0x03, 0xc1, 0x03, 0xc1, 0x03, 0xa3, 0x03, 0xa2, 0x03, + 0x7e, 0x03, 0x7e, 0x03, 0x56, 0x03, 0x56, 0x03, 0x2c, 0x03, 0x2b, 0x03, + 0xfb, 0x02, 0xfa, 0x02, 0xc8, 0x02, 0xc8, 0x02, 0x93, 0x02, 0x93, 0x02, + 0x58, 0x02, 0x57, 0x02, 0x1e, 0x02, 0x1d, 0x02, 0xde, 0x01, 0xde, 0x01, + 0x9f, 0x01, 0x9e, 0x01, 0x5e, 0x01, 0x5d, 0x01, 0x18, 0x01, 0x17, 0x01, + 0xd5, 0x00, 0xd4, 0x00, 0x90, 0x00, 0x8d, 0x00, 0x4a, 0x00, 0x4a, 0x00, + 0x04, 0x00, 0x01, 0x00, 0xbc, 0xff, 0xbd, 0xff, 0x7a, 0xff, 0x77, 0xff, + 0x33, 0xff, 0x32, 0xff, 0xf0, 0xfe, 0xf1, 0xfe, 0xae, 0xfe, 0xab, 0xfe, + 0x6c, 0xfe, 0x6d, 0xfe, 0x2f, 0xfe, 0x2e, 0xfe, 0xf4, 0xfd, 0xf2, 0xfd, + 0xbb, 0xfd, 0xbb, 0xfd, 0x84, 0xfd, 0x81, 0xfd, 0x51, 0xfd, 0x52, 0xfd, + 0x20, 0xfd, 0x20, 0xfd, 0xf7, 0xfc, 0xf5, 0xfc, 0xcc, 0xfc, 0xcc, 0xfc, + 0xab, 0xfc, 0xa9, 0xfc, 0x88, 0xfc, 0x88, 0xfc, 0x6e, 0xfc, 0x6d, 0xfc, + 0x58, 0xfc, 0x58, 0xfc, 0x43, 0xfc, 0x44, 0xfc, 0x3a, 0xfc, 0x38, 0xfc, + 0x2f, 0xfc, 0x2f, 0xfc, 0x2a, 0xfc, 0x29, 0xfc, 0x2f, 0xfc, 0x2d, 0xfc, + 0x30, 0xfc, 0x31, 0xfc, 0x3e, 0xfc, 0x3d, 0xfc, 0x4b, 0xfc, 0x4c, 0xfc, + 0x60, 0xfc, 0x60, 0xfc, 0x7c, 0xfc, 0x7a, 0xfc, 0x95, 0xfc, 0x96, 0xfc, + 0xba, 0xfc, 0xba, 0xfc, 0xdf, 0xfc, 0xdf, 0xfc, 0x0a, 0xfd, 0x08, 0xfd, + 0x39, 0xfd, 0x39, 0xfd, 0x6b, 0xfd, 0x69, 0xfd, 0xa1, 0xfd, 0xa0, 0xfd, + 0xd9, 0xfd, 0xd8, 0xfd, 0x15, 0xfe, 0x13, 0xfe, 0x52, 0xfe, 0x53, 0xfe, + 0x92, 0xfe, 0x91, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, 0x17, 0xff, 0x19, 0xff, + 0x5f, 0xff, 0x5e, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0x35, 0x00, 0x35, 0x00, 0x79, 0x00, 0x7a, 0x00, 0xc1, 0x00, 0xc2, 0x00, + 0x0b, 0x01, 0x0a, 0x01, 0x4d, 0x01, 0x4d, 0x01, 0x95, 0x01, 0x96, 0x01, + 0xd6, 0x01, 0xd5, 0x01, 0x17, 0x02, 0x19, 0x02, 0x58, 0x02, 0x58, 0x02, + 0x92, 0x02, 0x91, 0x02, 0xcb, 0x02, 0xcd, 0x02, 0x05, 0x03, 0x03, 0x03, + 0x36, 0x03, 0x36, 0x03, 0x67, 0x03, 0x64, 0x03, 0x8f, 0x03, 0x91, 0x03, + 0xba, 0x03, 0xb8, 0x03, 0xdc, 0x03, 0xde, 0x03, 0xfc, 0x03, 0xfa, 0x03, + 0x17, 0x04, 0x18, 0x04, 0x2d, 0x04, 0x2c, 0x04, 0x3e, 0x04, 0x3e, 0x04, + 0x4b, 0x04, 0x49, 0x04, 0x51, 0x04, 0x50, 0x04, 0x54, 0x04, 0x56, 0x04, + 0x51, 0x04, 0x50, 0x04, 0x4a, 0x04, 0x4b, 0x04, 0x3e, 0x04, 0x3c, 0x04, + 0x2b, 0x04, 0x2c, 0x04, 0x17, 0x04, 0x15, 0x04, 0xfa, 0x03, 0xfb, 0x03, + 0xda, 0x03, 0xdb, 0x03, 0xb8, 0x03, 0xb7, 0x03, 0x8e, 0x03, 0x8d, 0x03, + 0x62, 0x03, 0x63, 0x03, 0x32, 0x03, 0x32, 0x03, 0xfd, 0x02, 0xfc, 0x02, + 0xc7, 0x02, 0xc7, 0x02, 0x8d, 0x02, 0x8c, 0x02, 0x4d, 0x02, 0x4e, 0x02, + 0x0f, 0x02, 0x10, 0x02, 0xcb, 0x01, 0xca, 0x01, 0x89, 0x01, 0x88, 0x01, + 0x42, 0x01, 0x43, 0x01, 0xfc, 0x00, 0xfc, 0x00, 0xb3, 0x00, 0xb3, 0x00, + 0x6b, 0x00, 0x6b, 0x00, 0x20, 0x00, 0x22, 0x00, 0xd8, 0xff, 0xd8, 0xff, + 0x8f, 0xff, 0x90, 0xff, 0x48, 0xff, 0x48, 0xff, 0x00, 0xff, 0x00, 0xff, + 0xbb, 0xfe, 0xbb, 0xfe, 0x77, 0xfe, 0x77, 0xfe, 0x32, 0xfe, 0x35, 0xfe, + 0xf6, 0xfd, 0xf4, 0xfd, 0xb5, 0xfd, 0xb7, 0xfd, 0x7e, 0xfd, 0x7c, 0xfd, + 0x45, 0xfd, 0x45, 0xfd, 0x12, 0xfd, 0x13, 0xfd, 0xe2, 0xfc, 0xe1, 0xfc, + 0xb5, 0xfc, 0xb7, 0xfc, 0x8d, 0xfc, 0x8c, 0xfc, 0x6a, 0xfc, 0x6a, 0xfc, + 0x47, 0xfc, 0x49, 0xfc, 0x2f, 0xfc, 0x2d, 0xfc, 0x17, 0xfc, 0x18, 0xfc, + 0x07, 0xfc, 0x06, 0xfc, 0xfb, 0xfb, 0xfa, 0xfb, 0xf1, 0xfb, 0xf1, 0xfb, + 0xf0, 0xfb, 0xf0, 0xfb, 0xf1, 0xfb, 0xf0, 0xfb, 0xfa, 0xfb, 0xfc, 0xfb, + 0x07, 0xfc, 0x04, 0xfc, 0x16, 0xfc, 0x18, 0xfc, 0x2e, 0xfc, 0x2d, 0xfc, + 0x47, 0xfc, 0x49, 0xfc, 0x68, 0xfc, 0x68, 0xfc, 0x8d, 0xfc, 0x8d, 0xfc, + 0xb5, 0xfc, 0xb4, 0xfc, 0xe0, 0xfc, 0xe1, 0xfc, 0x12, 0xfd, 0x10, 0xfd, + 0x42, 0xfd, 0x46, 0xfd, 0x7e, 0xfd, 0x7d, 0xfd, 0xb6, 0xfd, 0xb8, 0xfd, + 0xf3, 0xfd, 0xf4, 0xfd, 0x34, 0xfe, 0x33, 0xfe, 0x75, 0xfe, 0x77, 0xfe, + 0xbb, 0xfe, 0xb9, 0xfe, 0xff, 0xfe, 0x00, 0xff, 0x47, 0xff, 0x48, 0xff, + 0x8d, 0xff, 0x8c, 0xff, 0xd6, 0xff, 0xd7, 0xff, 0x1f, 0x00, 0x1e, 0x00, + 0x65, 0x00, 0x67, 0x00, 0xad, 0x00, 0xad, 0x00, 0xf5, 0x00, 0xf6, 0x00, + 0x3b, 0x01, 0x39, 0x01, 0x7e, 0x01, 0x80, 0x01, 0xc2, 0x01, 0xc1, 0x01, + 0x02, 0x02, 0x02, 0x02, 0x40, 0x02, 0x41, 0x02, 0x7c, 0x02, 0x7a, 0x02, + 0xb3, 0x02, 0xb4, 0x02, 0xe9, 0x02, 0xe9, 0x02, 0x1a, 0x03, 0x1a, 0x03, + 0x48, 0x03, 0x4a, 0x03, 0x71, 0x03, 0x70, 0x03, 0x97, 0x03, 0x99, 0x03, + 0xb7, 0x03, 0xb7, 0x03, 0xd6, 0x03, 0xd6, 0x03, 0xed, 0x03, 0xee, 0x03, + 0x00, 0x04, 0x00, 0x04, 0x10, 0x04, 0x10, 0x04, 0x17, 0x04, 0x18, 0x04, + 0x20, 0x04, 0x1d, 0x04, 0x1b, 0x04, 0x1d, 0x04, 0x16, 0x04, 0x14, 0x04, + 0x0b, 0x04, 0x0c, 0x04, 0xfb, 0x03, 0xfc, 0x03, 0xe6, 0x03, 0xe8, 0x03, + 0xcc, 0x03, 0xcc, 0x03, 0xae, 0x03, 0xaf, 0x03, 0x8b, 0x03, 0x8a, 0x03, + 0x62, 0x03, 0x63, 0x03, 0x39, 0x03, 0x38, 0x03, 0x06, 0x03, 0x06, 0x03, + 0xd5, 0x02, 0xd4, 0x02, 0x9d, 0x02, 0x9d, 0x02, 0x61, 0x02, 0x62, 0x02, + 0x24, 0x02, 0x25, 0x02, 0xe3, 0x01, 0xe4, 0x01, 0xa0, 0x01, 0xa0, 0x01, + 0x5b, 0x01, 0x5b, 0x01, 0x12, 0x01, 0x13, 0x01, 0xcc, 0x00, 0xcc, 0x00, + 0x80, 0x00, 0x81, 0x00, 0x38, 0x00, 0x37, 0x00, 0xeb, 0xff, 0xec, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0x56, 0xff, 0x56, 0xff, 0x0c, 0xff, 0x0b, 0xff, + 0xc2, 0xfe, 0xc1, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, 0x33, 0xfe, 0x32, 0xfe, + 0xef, 0xfd, 0xee, 0xfd, 0xad, 0xfd, 0xac, 0xfd, 0x6c, 0xfd, 0x6b, 0xfd, + 0x2f, 0xfd, 0x30, 0xfd, 0xf6, 0xfc, 0xf5, 0xfc, 0xbe, 0xfc, 0xbf, 0xfc, + 0x8c, 0xfc, 0x8b, 0xfc, 0x5d, 0xfc, 0x5e, 0xfc, 0x30, 0xfc, 0x31, 0xfc, + 0x0c, 0xfc, 0x0b, 0xfc, 0xe9, 0xfb, 0xe9, 0xfb, 0xc8, 0xfb, 0xca, 0xfb, + 0xb5, 0xfb, 0xb3, 0xfb, 0x9e, 0xfb, 0xa0, 0xfb, 0x94, 0xfb, 0x91, 0xfb, + 0x86, 0xfb, 0x88, 0xfb, 0x84, 0xfb, 0x82, 0xfb, 0x84, 0xfb, 0x86, 0xfb, + 0x8c, 0xfb, 0x89, 0xfb, 0x95, 0xfb, 0x97, 0xfb, 0xa5, 0xfb, 0xa5, 0xfb, + 0xbb, 0xfb, 0xbb, 0xfb, 0xd6, 0xfb, 0xd7, 0xfb, 0xf4, 0xfb, 0xf3, 0xfb, + 0x19, 0xfc, 0x19, 0xfc, 0x3f, 0xfc, 0x40, 0xfc, 0x6f, 0xfc, 0x6d, 0xfc, + 0x9c, 0xfc, 0x9f, 0xfc, 0xd3, 0xfc, 0xd1, 0xfc, 0x0a, 0xfd, 0x0b, 0xfd, + 0x46, 0xfd, 0x46, 0xfd, 0x83, 0xfd, 0x83, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, + 0x07, 0xfe, 0x07, 0xfe, 0x4d, 0xfe, 0x4e, 0xfe, 0x95, 0xfe, 0x95, 0xfe, + 0xde, 0xfe, 0xde, 0xfe, 0x28, 0xff, 0x29, 0xff, 0x72, 0xff, 0x73, 0xff, + 0xbc, 0xff, 0xbd, 0xff, 0x0b, 0x00, 0x0b, 0x00, 0x52, 0x00, 0x51, 0x00, + 0x9d, 0x00, 0x9d, 0x00, 0xe6, 0x00, 0xe6, 0x00, 0x2c, 0x01, 0x2e, 0x01, + 0x76, 0x01, 0x74, 0x01, 0xb7, 0x01, 0xb9, 0x01, 0xfa, 0x01, 0xfa, 0x01, + 0x39, 0x02, 0x3a, 0x02, 0x75, 0x02, 0x76, 0x02, 0xb0, 0x02, 0xaf, 0x02, + 0xe5, 0x02, 0xe6, 0x02, 0x17, 0x03, 0x18, 0x03, 0x45, 0x03, 0x46, 0x03, + 0x6f, 0x03, 0x70, 0x03, 0x95, 0x03, 0x97, 0x03, 0xb6, 0x03, 0xb5, 0x03, + 0xd1, 0x03, 0xd3, 0x03, 0xec, 0x03, 0xeb, 0x03, 0xfc, 0x03, 0xfd, 0x03, + 0x0d, 0x04, 0x0d, 0x04, 0x12, 0x04, 0x11, 0x04, 0x16, 0x04, 0x17, 0x04, + 0x15, 0x04, 0x16, 0x04, 0x0d, 0x04, 0x0c, 0x04, 0x02, 0x04, 0x04, 0x04, + 0xf1, 0x03, 0xf1, 0x03, 0xdb, 0x03, 0xdb, 0x03, 0xc0, 0x03, 0xc1, 0x03, + 0xa0, 0x03, 0xa0, 0x03, 0x7c, 0x03, 0x7e, 0x03, 0x55, 0x03, 0x54, 0x03, + 0x26, 0x03, 0x25, 0x03, 0xf7, 0x02, 0xf7, 0x02, 0xc1, 0x02, 0xbf, 0x02, + 0x87, 0x02, 0x89, 0x02, 0x4e, 0x02, 0x4d, 0x02, 0x0d, 0x02, 0x0e, 0x02, + 0xce, 0x01, 0xce, 0x01, 0x89, 0x01, 0x89, 0x01, 0x43, 0x01, 0x44, 0x01, + 0xfc, 0x00, 0xfc, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0x68, 0x00, 0x68, 0x00, + 0x1e, 0x00, 0x20, 0x00, 0xd5, 0xff, 0xd3, 0xff, 0x89, 0xff, 0x8b, 0xff, + 0x41, 0xff, 0x3f, 0xff, 0xf5, 0xfe, 0xf7, 0xfe, 0xae, 0xfe, 0xad, 0xfe, + 0x65, 0xfe, 0x66, 0xfe, 0x1f, 0xfe, 0x20, 0xfe, 0xdd, 0xfd, 0xdd, 0xfd, + 0x9c, 0xfd, 0x9b, 0xfd, 0x5d, 0xfd, 0x5d, 0xfd, 0x21, 0xfd, 0x21, 0xfd, + 0xe8, 0xfc, 0xe7, 0xfc, 0xb4, 0xfc, 0xb4, 0xfc, 0x83, 0xfc, 0x84, 0xfc, + 0x56, 0xfc, 0x56, 0xfc, 0x2d, 0xfc, 0x2d, 0xfc, 0x08, 0xfc, 0x08, 0xfc, + 0xe9, 0xfb, 0xe8, 0xfb, 0xcc, 0xfb, 0xce, 0xfb, 0xb6, 0xfb, 0xb5, 0xfb, + 0xa4, 0xfb, 0xa4, 0xfb, 0x98, 0xfb, 0x98, 0xfb, 0x8e, 0xfb, 0x8e, 0xfb, + 0x90, 0xfb, 0x90, 0xfb, 0x90, 0xfb, 0x8f, 0xfb, 0x9a, 0xfb, 0x99, 0xfb, + 0xa3, 0xfb, 0xa3, 0xfb, 0xb6, 0xfb, 0xb5, 0xfb, 0xcc, 0xfb, 0xcd, 0xfb, + 0xe6, 0xfb, 0xe5, 0xfb, 0x08, 0xfc, 0x08, 0xfc, 0x2e, 0xfc, 0x2e, 0xfc, + 0x5a, 0xfc, 0x5b, 0xfc, 0x8d, 0xfc, 0x8b, 0xfc, 0xbf, 0xfc, 0xc3, 0xfc, + 0x00, 0xfd, 0xfe, 0xfc, 0x3b, 0xfd, 0x3d, 0xfd, 0x7f, 0xfd, 0x7e, 0xfd, + 0xc2, 0xfd, 0xc2, 0xfd, 0x06, 0xfe, 0x07, 0xfe, 0x4e, 0xfe, 0x4f, 0xfe, + 0x95, 0xfe, 0x94, 0xfe, 0xdc, 0xfe, 0xdd, 0xfe, 0x27, 0xff, 0x24, 0xff, + 0x6b, 0xff, 0x6e, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0x44, 0x00, 0x45, 0x00, 0x89, 0x00, 0x87, 0x00, 0xce, 0x00, 0xce, 0x00, + 0x11, 0x01, 0x11, 0x01, 0x55, 0x01, 0x53, 0x01, 0x93, 0x01, 0x94, 0x01, + 0xd2, 0x01, 0xd1, 0x01, 0x0b, 0x02, 0x0a, 0x02, 0x46, 0x02, 0x46, 0x02, + 0x7c, 0x02, 0x7a, 0x02, 0xb3, 0x02, 0xb4, 0x02, 0xe9, 0x02, 0xe7, 0x02, + 0x1f, 0x03, 0x20, 0x03, 0x57, 0x03, 0x57, 0x03, 0x8e, 0x03, 0x8d, 0x03, + 0xc7, 0x03, 0xc7, 0x03, 0x01, 0x04, 0x01, 0x04, 0x3d, 0x04, 0x3c, 0x04, + 0x77, 0x04, 0x77, 0x04, 0xb3, 0x04, 0xb2, 0x04, 0xeb, 0x04, 0xeb, 0x04, + 0x1d, 0x05, 0x1c, 0x05, 0x4d, 0x05, 0x4c, 0x05, 0x72, 0x05, 0x73, 0x05, + 0x8e, 0x05, 0x8d, 0x05, 0x9f, 0x05, 0x9f, 0x05, 0xa4, 0x05, 0xa3, 0x05, + 0x92, 0x05, 0x92, 0x05, 0x62, 0x05, 0x63, 0x05, 0x20, 0x05, 0x20, 0x05, + 0xd6, 0x04, 0xd4, 0x04, 0x76, 0x04, 0x76, 0x04, 0x14, 0x04, 0x13, 0x04, + 0xa2, 0x03, 0xa2, 0x03, 0x2e, 0x03, 0x2f, 0x03, 0xb3, 0x02, 0xb2, 0x02, + 0x2f, 0x02, 0x2f, 0x02, 0xaa, 0x01, 0xab, 0x01, 0x1f, 0x01, 0x1e, 0x01, + 0x92, 0x00, 0x92, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6e, 0xff, 0x6f, 0xff, + 0xda, 0xfe, 0xda, 0xfe, 0x4a, 0xfe, 0x4b, 0xfe, 0xba, 0xfd, 0xb8, 0xfd, + 0x32, 0xfd, 0x32, 0xfd, 0xb1, 0xfc, 0xb1, 0xfc, 0x3a, 0xfc, 0x39, 0xfc, + 0xd3, 0xfb, 0xd2, 0xfb, 0x7a, 0xfb, 0x79, 0xfb, 0x33, 0xfb, 0x34, 0xfb, + 0x00, 0xfb, 0xff, 0xfa, 0xe3, 0xfa, 0xe1, 0xfa, 0xdb, 0xfa, 0xdb, 0xfa, + 0xe7, 0xfa, 0xe7, 0xfa, 0x09, 0xfb, 0x09, 0xfb, 0x3f, 0xfb, 0x3c, 0xfb, + 0x81, 0xfb, 0x84, 0xfb, 0xd8, 0xfb, 0xd6, 0xfb, 0x3a, 0xfc, 0x3a, 0xfc, + 0xa3, 0xfc, 0xa4, 0xfc, 0x17, 0xfd, 0x15, 0xfd, 0x8b, 0xfd, 0x8d, 0xfd, + 0x02, 0xfe, 0x03, 0xfe, 0x7c, 0xfe, 0x7b, 0xfe, 0xe9, 0xfe, 0xec, 0xfe, + 0x5d, 0xff, 0x5b, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0x20, 0x00, 0x20, 0x00, + 0x79, 0x00, 0x78, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0x00, 0x01, 0xfe, 0x00, + 0x2e, 0x01, 0x2d, 0x01, 0x4f, 0x01, 0x50, 0x01, 0x63, 0x01, 0x61, 0x01, + 0x61, 0x01, 0x62, 0x01, 0x55, 0x01, 0x54, 0x01, 0x33, 0x01, 0x32, 0x01, + 0x03, 0x01, 0x03, 0x01, 0xc3, 0x00, 0xc3, 0x00, 0x72, 0x00, 0x73, 0x00, + 0x1b, 0x00, 0x1a, 0x00, 0xb4, 0xff, 0xb5, 0xff, 0x4d, 0xff, 0x4b, 0xff, + 0xdb, 0xfe, 0xdc, 0xfe, 0x6f, 0xfe, 0x6e, 0xfe, 0x06, 0xfe, 0x04, 0xfe, + 0xa2, 0xfd, 0xa3, 0xfd, 0x4e, 0xfd, 0x4d, 0xfd, 0x03, 0xfd, 0x04, 0xfd, + 0xd2, 0xfc, 0xd3, 0xfc, 0xb0, 0xfc, 0xaf, 0xfc, 0xa8, 0xfc, 0xa8, 0xfc, + 0xb5, 0xfc, 0xb4, 0xfc, 0xdc, 0xfc, 0xdc, 0xfc, 0x1c, 0xfd, 0x1c, 0xfd, + 0x76, 0xfd, 0x76, 0xfd, 0xe7, 0xfd, 0xe7, 0xfd, 0x71, 0xfe, 0x71, 0xfe, + 0x0f, 0xff, 0x11, 0xff, 0xc1, 0xff, 0xbe, 0xff, 0x85, 0x00, 0x87, 0x00, + 0x59, 0x01, 0x56, 0x01, 0x36, 0x02, 0x37, 0x02, 0x20, 0x03, 0x1f, 0x03, + 0x0d, 0x04, 0x0c, 0x04, 0xfe, 0x04, 0xfe, 0x04, 0xed, 0x05, 0xed, 0x05, + 0xd7, 0x06, 0xd7, 0x06, 0xb8, 0x07, 0xb8, 0x07, 0x89, 0x08, 0x8a, 0x08, + 0x4d, 0x09, 0x4c, 0x09, 0xf7, 0x09, 0xf8, 0x09, 0x87, 0x0a, 0x84, 0x0a, + 0xf6, 0x0a, 0xf8, 0x0a, 0x47, 0x0b, 0x45, 0x0b, 0x6f, 0x0b, 0x6d, 0x0b, + 0x74, 0x0b, 0x74, 0x0b, 0x4e, 0x0b, 0x4b, 0x0b, 0x03, 0x0b, 0x04, 0x0b, + 0x8c, 0x0a, 0x8d, 0x0a, 0xf4, 0x09, 0xf3, 0x09, 0x33, 0x09, 0x35, 0x09, + 0x53, 0x08, 0x51, 0x08, 0x53, 0x07, 0x53, 0x07, 0x39, 0x06, 0x39, 0x06, + 0x09, 0x05, 0x08, 0x05, 0xc4, 0x03, 0xc4, 0x03, 0x76, 0x02, 0x74, 0x02, + 0x1b, 0x01, 0x1b, 0x01, 0xbf, 0xff, 0xbf, 0xff, 0x62, 0xfe, 0x63, 0xfe, + 0x10, 0xfd, 0x10, 0xfd, 0xc5, 0xfb, 0xc6, 0xfb, 0x8c, 0xfa, 0x8a, 0xfa, + 0x68, 0xf9, 0x69, 0xf9, 0x59, 0xf8, 0x58, 0xf8, 0x69, 0xf7, 0x68, 0xf7, + 0x97, 0xf6, 0x98, 0xf6, 0xe8, 0xf5, 0xe8, 0xf5, 0x5f, 0xf5, 0x5f, 0xf5, + 0xfb, 0xf4, 0xfb, 0xf4, 0xc3, 0xf4, 0xc2, 0xf4, 0xb0, 0xf4, 0xb0, 0xf4, + 0xc7, 0xf4, 0xc8, 0xf4, 0x08, 0xf5, 0x07, 0xf5, 0x6b, 0xf5, 0x6b, 0xf5, + 0xf4, 0xf5, 0xf3, 0xf5, 0x99, 0xf6, 0x9b, 0xf6, 0x5e, 0xf7, 0x5b, 0xf7, + 0x38, 0xf8, 0x39, 0xf8, 0x24, 0xf9, 0x23, 0xf9, 0x1e, 0xfa, 0x21, 0xfa, + 0x1f, 0xfb, 0x1e, 0xfb, 0x22, 0xfc, 0x24, 0xfc, 0x22, 0xfd, 0x23, 0xfd, + 0x18, 0xfe, 0x19, 0xfe, 0x02, 0xff, 0x02, 0xff, 0xd9, 0xff, 0xd9, 0xff, + 0x94, 0x00, 0x95, 0x00, 0x3c, 0x01, 0x3b, 0x01, 0xbe, 0x01, 0xc2, 0x01, + 0x26, 0x02, 0x23, 0x02, 0x68, 0x02, 0x6b, 0x02, 0x87, 0x02, 0x85, 0x02, + 0x85, 0x02, 0x85, 0x02, 0x5b, 0x02, 0x5b, 0x02, 0x13, 0x02, 0x13, 0x02, + 0xab, 0x01, 0xaa, 0x01, 0x1f, 0x01, 0x21, 0x01, 0x7d, 0x00, 0x7a, 0x00, + 0xc1, 0xff, 0xc3, 0xff, 0xf3, 0xfe, 0xf1, 0xfe, 0x17, 0xfe, 0x18, 0xfe, + 0x30, 0xfd, 0x2f, 0xfd, 0x45, 0xfc, 0x45, 0xfc, 0x60, 0xfb, 0x5f, 0xfb, + 0x7c, 0xfa, 0x7b, 0xfa, 0xa9, 0xf9, 0xab, 0xf9, 0xe8, 0xf8, 0xe8, 0xf8, + 0x3f, 0xf8, 0x40, 0xf8, 0xb8, 0xf7, 0xb6, 0xf7, 0x4c, 0xf7, 0x4b, 0xf7, + 0x0a, 0xf7, 0x0a, 0xf7, 0xee, 0xf6, 0xee, 0xf6, 0xff, 0xf6, 0xff, 0xf6, + 0x3b, 0xf7, 0x3b, 0xf7, 0xa3, 0xf7, 0xa2, 0xf7, 0x38, 0xf8, 0x39, 0xf8, + 0xf7, 0xf8, 0xf6, 0xf8, 0xe0, 0xf9, 0xe1, 0xf9, 0xed, 0xfa, 0xee, 0xfa, + 0x22, 0xfc, 0x20, 0xfc, 0x6c, 0xfd, 0x6e, 0xfd, 0xd7, 0xfe, 0xd7, 0xfe, + 0x53, 0x00, 0x51, 0x00, 0xdd, 0x01, 0xde, 0x01, 0x71, 0x03, 0x6f, 0x03, + 0x06, 0x05, 0x08, 0x05, 0x99, 0x06, 0x98, 0x06, 0x22, 0x08, 0x22, 0x08, + 0x9b, 0x09, 0x9a, 0x09, 0xfc, 0x0a, 0xfb, 0x0a, 0x41, 0x0c, 0x41, 0x0c, + 0x63, 0x0d, 0x64, 0x0d, 0x60, 0x0e, 0x5e, 0x0e, 0x30, 0x0f, 0x31, 0x0f, + 0xd3, 0x0f, 0xd2, 0x0f, 0x41, 0x10, 0x41, 0x10, 0x7a, 0x10, 0x7a, 0x10, + 0x80, 0x10, 0x7f, 0x10, 0x4c, 0x10, 0x4b, 0x10, 0xe6, 0x0f, 0xe7, 0x0f, + 0x49, 0x0f, 0x48, 0x0f, 0x7d, 0x0e, 0x7e, 0x0e, 0x83, 0x0d, 0x83, 0x0d, + 0x5e, 0x0c, 0x5e, 0x0c, 0x19, 0x0b, 0x1a, 0x0b, 0xb5, 0x09, 0xb7, 0x09, + 0x39, 0x08, 0x39, 0x08, 0xab, 0x06, 0xad, 0x06, 0x13, 0x05, 0x13, 0x05, + 0x78, 0x03, 0x79, 0x03, 0xe0, 0x01, 0xe0, 0x01, 0x52, 0x00, 0x53, 0x00, + 0xd7, 0xfe, 0xd7, 0xfe, 0x71, 0xfd, 0x71, 0xfd, 0x2b, 0xfc, 0x2d, 0xfc, + 0x06, 0xfb, 0x06, 0xfb, 0x0a, 0xfa, 0x0c, 0xfa, 0x3b, 0xf9, 0x38, 0xf9, + 0x96, 0xf8, 0x99, 0xf8, 0x27, 0xf8, 0x27, 0xf8, 0xea, 0xf7, 0xed, 0xf7, + 0xde, 0xf7, 0xde, 0xf7, 0x07, 0xf8, 0x06, 0xf8, 0x5b, 0xf8, 0x5e, 0xf8, + 0xe3, 0xf8, 0xe3, 0xf8, 0x91, 0xf9, 0x92, 0xf9, 0x66, 0xfa, 0x65, 0xfa, + 0x5d, 0xfb, 0x5d, 0xfb, 0x6e, 0xfc, 0x6e, 0xfc, 0x97, 0xfd, 0x98, 0xfd, + 0xce, 0xfe, 0xce, 0xfe, 0x10, 0x00, 0x0f, 0x00, 0x51, 0x01, 0x53, 0x01, + 0x92, 0x02, 0x92, 0x02, 0xc4, 0x03, 0xc6, 0x03, 0xeb, 0x04, 0xea, 0x04, + 0xf6, 0x05, 0xf7, 0x05, 0xe6, 0x06, 0xe6, 0x06, 0xb3, 0x07, 0xb5, 0x07, + 0x5a, 0x08, 0x58, 0x08, 0xd8, 0x08, 0xda, 0x08, 0x26, 0x09, 0x25, 0x09, + 0x46, 0x09, 0x49, 0x09, 0x36, 0x09, 0x34, 0x09, 0xf3, 0x08, 0xf6, 0x08, + 0x82, 0x08, 0x82, 0x08, 0xe2, 0x07, 0xe2, 0x07, 0x19, 0x07, 0x1b, 0x07, + 0x25, 0x06, 0x22, 0x06, 0x0f, 0x05, 0x12, 0x05, 0xdd, 0x03, 0xdc, 0x03, + 0x8f, 0x02, 0x91, 0x02, 0x34, 0x01, 0x34, 0x01, 0xc8, 0xff, 0xc8, 0xff, + 0x5d, 0xfe, 0x5e, 0xfe, 0xee, 0xfc, 0xef, 0xfc, 0x8e, 0xfb, 0x8f, 0xfb, + 0x3b, 0xfa, 0x3d, 0xfa, 0x00, 0xf9, 0x00, 0xf9, 0xdf, 0xf7, 0xe2, 0xf7, + 0xe1, 0xf6, 0xe1, 0xf6, 0x0c, 0xf6, 0x0c, 0xf6, 0x5f, 0xf5, 0x62, 0xf5, + 0xe6, 0xf4, 0xe5, 0xf4, 0x9a, 0xf4, 0x9c, 0xf4, 0x84, 0xf4, 0x82, 0xf4, + 0xa0, 0xf4, 0xa1, 0xf4, 0xee, 0xf4, 0xef, 0xf4, 0x6f, 0xf5, 0x71, 0xf5, + 0x1e, 0xf6, 0x1e, 0xf6, 0xfc, 0xf6, 0xfc, 0xf6, 0xfc, 0xf7, 0xfe, 0xf7, + 0x26, 0xf9, 0x24, 0xf9, 0x65, 0xfa, 0x67, 0xfa, 0xc4, 0xfb, 0xc2, 0xfb, + 0x2e, 0xfd, 0x30, 0xfd, 0xa2, 0xfe, 0xa3, 0xfe, 0x1e, 0x00, 0x1e, 0x00, + 0x8f, 0x01, 0x8f, 0x01, 0xfb, 0x02, 0xfa, 0x02, 0x4e, 0x04, 0x50, 0x04, + 0x87, 0x05, 0x86, 0x05, 0xa0, 0x06, 0xa3, 0x06, 0x91, 0x07, 0x8f, 0x07, + 0x55, 0x08, 0x57, 0x08, 0xe6, 0x08, 0xe6, 0x08, 0x43, 0x09, 0x45, 0x09, + 0x68, 0x09, 0x6a, 0x09, 0x53, 0x09, 0x53, 0x09, 0x08, 0x09, 0x09, 0x09, + 0x80, 0x08, 0x81, 0x08, 0xc7, 0x07, 0xc8, 0x07, 0xd8, 0x06, 0xd8, 0x06, + 0xba, 0x05, 0xba, 0x05, 0x6f, 0x04, 0x71, 0x04, 0x02, 0x03, 0x01, 0x03, + 0x74, 0x01, 0x74, 0x01, 0xc9, 0xff, 0xcb, 0xff, 0x12, 0xfe, 0x10, 0xfe, + 0x45, 0xfc, 0x49, 0xfc, 0x7e, 0xfa, 0x7e, 0xfa, 0xb1, 0xf8, 0xb2, 0xf8, + 0xf0, 0xf6, 0xf0, 0xf6, 0x40, 0xf5, 0x3f, 0xf5, 0xa6, 0xf3, 0xa6, 0xf3, + 0x29, 0xf2, 0x2b, 0xf2, 0xd0, 0xf0, 0xcf, 0xf0, 0xa1, 0xef, 0xa3, 0xef, + 0xa0, 0xee, 0xa0, 0xee, 0xd0, 0xed, 0xd0, 0xed, 0x39, 0xed, 0x39, 0xed, + 0xd8, 0xec, 0xdc, 0xec, 0xb5, 0xec, 0xb5, 0xec, 0xc9, 0xec, 0xcb, 0xec, + 0x19, 0xed, 0x1a, 0xed, 0xa1, 0xed, 0xa2, 0xed, 0x5f, 0xee, 0x5f, 0xee, + 0x4d, 0xef, 0x50, 0xef, 0x6a, 0xf0, 0x69, 0xf0, 0xaa, 0xf1, 0xaf, 0xf1, + 0x14, 0xf3, 0x11, 0xf3, 0x91, 0xf4, 0x95, 0xf4, 0x26, 0xf6, 0x26, 0xf6, + 0xc7, 0xf7, 0xc6, 0xf7, 0x6a, 0xf9, 0x6c, 0xf9, 0x0c, 0xfb, 0x0d, 0xfb, + 0xa6, 0xfc, 0xa7, 0xfc, 0x2c, 0xfe, 0x2e, 0xfe, 0x9f, 0xff, 0x9f, 0xff, + 0xf3, 0x00, 0xf4, 0x00, 0x20, 0x02, 0x22, 0x02, 0x2e, 0x03, 0x2d, 0x03, + 0x09, 0x04, 0x0b, 0x04, 0xbd, 0x04, 0xbd, 0x04, 0x3e, 0x05, 0x3e, 0x05, + 0x8d, 0x05, 0x90, 0x05, 0xb2, 0x05, 0xb1, 0x05, 0x9e, 0x05, 0xa1, 0x05, + 0x68, 0x05, 0x68, 0x05, 0xff, 0x04, 0x01, 0x05, 0x73, 0x04, 0x74, 0x04, + 0xc6, 0x03, 0xc5, 0x03, 0xf7, 0x02, 0xf8, 0x02, 0x18, 0x02, 0x18, 0x02, + 0x22, 0x01, 0x24, 0x01, 0x25, 0x00, 0x25, 0x00, 0x26, 0xff, 0x28, 0xff, + 0x2a, 0xfe, 0x28, 0xfe, 0x3c, 0xfd, 0x3c, 0xfd, 0x5c, 0xfc, 0x5d, 0xfc, + 0x9a, 0xfb, 0x99, 0xfb, 0xf5, 0xfa, 0xf6, 0xfa, 0x76, 0xfa, 0x74, 0xfa, + 0x21, 0xfa, 0x21, 0xfa, 0xf6, 0xf9, 0xf7, 0xf9, 0x01, 0xfa, 0x01, 0xfa, + 0x38, 0xfa, 0x38, 0xfa, 0xa7, 0xfa, 0xa7, 0xfa, 0x46, 0xfb, 0x46, 0xfb, + 0x1b, 0xfc, 0x19, 0xfc, 0x19, 0xfd, 0x1a, 0xfd, 0x49, 0xfe, 0x48, 0xfe, + 0x9f, 0xff, 0x9e, 0xff, 0x18, 0x01, 0x18, 0x01, 0xb3, 0x02, 0xb2, 0x02, + 0x60, 0x04, 0x62, 0x04, 0x26, 0x06, 0x27, 0x06, 0xf6, 0x07, 0xf4, 0x07, + 0xc8, 0x09, 0xcb, 0x09, 0x9e, 0x0b, 0x9c, 0x0b, 0x66, 0x0d, 0x68, 0x0d, + 0x24, 0x0f, 0x23, 0x0f, 0xc6, 0x10, 0xc6, 0x10, 0x4e, 0x12, 0x4c, 0x12, + 0xb1, 0x13, 0xb0, 0x13, 0xe7, 0x14, 0xe7, 0x14, 0xf3, 0x15, 0xf3, 0x15, + 0xc7, 0x16, 0xc7, 0x16, 0x67, 0x17, 0x66, 0x17, 0xc8, 0x17, 0xc8, 0x17, + 0xef, 0x17, 0xee, 0x17, 0xd7, 0x17, 0xd6, 0x17, 0x82, 0x17, 0x82, 0x17, + 0xf0, 0x16, 0xee, 0x16, 0x24, 0x16, 0x25, 0x16, 0x23, 0x15, 0x22, 0x15, + 0xef, 0x13, 0xed, 0x13, 0x8e, 0x12, 0x8f, 0x12, 0x07, 0x11, 0x03, 0x11, + 0x63, 0x0f, 0x62, 0x0f, 0x9e, 0x0d, 0x9e, 0x0d, 0xd1, 0x0b, 0xcd, 0x0b, + 0xf4, 0x09, 0xf5, 0x09, 0x18, 0x08, 0x16, 0x08, 0x42, 0x06, 0x43, 0x06, + 0x79, 0x04, 0x79, 0x04, 0xc3, 0x02, 0xc3, 0x02, 0x2f, 0x01, 0x2e, 0x01, + 0xb4, 0xff, 0xb3, 0xff, 0x65, 0xfe, 0x66, 0xfe, 0x41, 0xfd, 0x41, 0xfd, + 0x4c, 0xfc, 0x4c, 0xfc, 0x8b, 0xfb, 0x8b, 0xfb, 0xfc, 0xfa, 0xfb, 0xfa, + 0xa3, 0xfa, 0xa3, 0xfa, 0x7f, 0xfa, 0x7e, 0xfa, 0x8c, 0xfa, 0x8d, 0xfa, + 0xcf, 0xfa, 0xcd, 0xfa, 0x3b, 0xfb, 0x3c, 0xfb, 0xd3, 0xfb, 0xd2, 0xfb, + 0x92, 0xfc, 0x91, 0xfc, 0x70, 0xfd, 0x6e, 0xfd, 0x66, 0xfe, 0x66, 0xfe, + 0x72, 0xff, 0x72, 0xff, 0x89, 0x00, 0x89, 0x00, 0xa9, 0x01, 0xa9, 0x01, + 0xc9, 0x02, 0xc7, 0x02, 0xe1, 0x03, 0xe2, 0x03, 0xeb, 0x04, 0xe9, 0x04, + 0xe1, 0x05, 0xe1, 0x05, 0xbc, 0x06, 0xba, 0x06, 0x78, 0x07, 0x77, 0x07, + 0x0e, 0x08, 0x0d, 0x08, 0x79, 0x08, 0x79, 0x08, 0xba, 0x08, 0xb9, 0x08, + 0xc7, 0x08, 0xc6, 0x08, 0xa6, 0x08, 0xa5, 0x08, 0x50, 0x08, 0x50, 0x08, + 0xca, 0x07, 0xc8, 0x07, 0x13, 0x07, 0x13, 0x07, 0x31, 0x06, 0x31, 0x06, + 0x24, 0x05, 0x23, 0x05, 0xf1, 0x03, 0xf1, 0x03, 0x9f, 0x02, 0x9e, 0x02, + 0x30, 0x01, 0x33, 0x01, 0xb1, 0xff, 0xae, 0xff, 0x20, 0xfe, 0x22, 0xfe, + 0x8c, 0xfc, 0x8a, 0xfc, 0xf3, 0xfa, 0xf4, 0xfa, 0x63, 0xf9, 0x64, 0xf9, + 0xe0, 0xf7, 0xde, 0xf7, 0x6f, 0xf6, 0x70, 0xf6, 0x1b, 0xf5, 0x1c, 0xf5, + 0xe6, 0xf3, 0xe4, 0xf3, 0xd4, 0xf2, 0xd5, 0xf2, 0xf2, 0xf1, 0xf1, 0xf1, + 0x37, 0xf1, 0x37, 0xf1, 0xb0, 0xf0, 0xad, 0xf0, 0x59, 0xf0, 0x59, 0xf0, + 0x39, 0xf0, 0x39, 0xf0, 0x4e, 0xf0, 0x4c, 0xf0, 0x93, 0xf0, 0x92, 0xf0, + 0x0d, 0xf1, 0x0e, 0xf1, 0xb9, 0xf1, 0xb6, 0xf1, 0x8a, 0xf2, 0x89, 0xf2, + 0x85, 0xf3, 0x84, 0xf3, 0xa2, 0xf4, 0xa1, 0xf4, 0xd8, 0xf5, 0xd8, 0xf5, + 0x28, 0xf7, 0x27, 0xf7, 0x81, 0xf8, 0x7f, 0xf8, 0xe4, 0xf9, 0xe6, 0xf9, + 0x48, 0xfb, 0x45, 0xfb, 0xa3, 0xfc, 0xa2, 0xfc, 0xee, 0xfd, 0xed, 0xfd, + 0x26, 0xff, 0x23, 0xff, 0x3d, 0x00, 0x3f, 0x00, 0x39, 0x01, 0x36, 0x01, + 0x07, 0x02, 0x07, 0x02, 0xad, 0x02, 0xab, 0x02, 0x21, 0x03, 0x20, 0x03, + 0x63, 0x03, 0x61, 0x03, 0x74, 0x03, 0x73, 0x03, 0x4e, 0x03, 0x4c, 0x03, + 0xf5, 0x02, 0xf5, 0x02, 0x6a, 0x02, 0x6a, 0x02, 0xb2, 0x01, 0xb0, 0x01, + 0xcc, 0x00, 0xca, 0x00, 0xbe, 0xff, 0xbc, 0xff, 0x8d, 0xfe, 0x8c, 0xfe, + 0x3f, 0xfd, 0x3c, 0xfd, 0xd3, 0xfb, 0xd4, 0xfb, 0x5a, 0xfa, 0x57, 0xfa, + 0xcf, 0xf8, 0xce, 0xf8, 0x41, 0xf7, 0x40, 0xf7, 0xb3, 0xf5, 0xb0, 0xf5, + 0x28, 0xf4, 0x28, 0xf4, 0xaf, 0xf2, 0xac, 0xf2, 0x43, 0xf1, 0x43, 0xf1, + 0xf7, 0xef, 0xf5, 0xef, 0xc6, 0xee, 0xc3, 0xee, 0xbb, 0xed, 0xbc, 0xed, + 0xd9, 0xec, 0xd7, 0xec, 0x23, 0xec, 0x22, 0xec, 0xa3, 0xeb, 0xa1, 0xeb, + 0x52, 0xeb, 0x52, 0xeb, 0x3d, 0xeb, 0x3c, 0xeb, 0x5b, 0xeb, 0x57, 0xeb, + 0xb2, 0xeb, 0xb2, 0xeb, 0x3f, 0xec, 0x3c, 0xec, 0xfe, 0xec, 0xff, 0xec, + 0xf0, 0xed, 0xed, 0xed, 0x0d, 0xef, 0x0c, 0xef, 0x52, 0xf0, 0x52, 0xf0, + 0xbf, 0xf1, 0xbb, 0xf1, 0x40, 0xf3, 0x41, 0xf3, 0xdf, 0xf4, 0xda, 0xf4, + 0x88, 0xf6, 0x88, 0xf6, 0x39, 0xf8, 0x38, 0xf8, 0xf0, 0xf9, 0xef, 0xf9, + 0x9b, 0xfb, 0x9b, 0xfb, 0x42, 0xfd, 0x3e, 0xfd, 0xcd, 0xfe, 0xce, 0xfe, + 0x47, 0x00, 0x42, 0x00, 0x9f, 0x01, 0xa2, 0x01, 0xd7, 0x02, 0xd2, 0x02, + 0xe8, 0x03, 0xe9, 0x03, 0xd0, 0x04, 0xce, 0x04, 0x8e, 0x05, 0x8c, 0x05, + 0x20, 0x06, 0x1e, 0x06, 0x81, 0x06, 0x80, 0x06, 0xbe, 0x06, 0xbb, 0x06, + 0xc7, 0x06, 0xc7, 0x06, 0xaf, 0x06, 0xac, 0x06, 0x6e, 0x06, 0x6d, 0x06, + 0x0a, 0x06, 0x07, 0x06, 0x8c, 0x05, 0x8b, 0x05, 0xf3, 0x04, 0xf1, 0x04, + 0x4c, 0x04, 0x48, 0x04, 0x93, 0x03, 0x92, 0x03, 0xd8, 0x02, 0xd5, 0x02, + 0x1b, 0x02, 0x1b, 0x02, 0x69, 0x01, 0x65, 0x01, 0xbf, 0x00, 0xbf, 0x00, + 0x2e, 0x00, 0x2b, 0x00, 0xb2, 0xff, 0xb0, 0xff, 0x57, 0xff, 0x53, 0xff, + 0x1b, 0xff, 0x1a, 0xff, 0x08, 0xff, 0x06, 0xff, 0x20, 0xff, 0x1c, 0xff, + 0x60, 0xff, 0x5e, 0xff, 0xcf, 0xff, 0xcb, 0xff, 0x68, 0x00, 0x67, 0x00, + 0x2d, 0x01, 0x29, 0x01, 0x1b, 0x02, 0x1a, 0x02, 0x31, 0x03, 0x2f, 0x03, + 0x6c, 0x04, 0x68, 0x04, 0xc4, 0x05, 0xc0, 0x05, 0x37, 0x07, 0x37, 0x07, + 0xc3, 0x08, 0xbf, 0x08, 0x5c, 0x0a, 0x5b, 0x0a, 0x03, 0x0c, 0xff, 0x0b, + 0xaa, 0x0d, 0xa9, 0x0d, 0x55, 0x0f, 0x50, 0x0f, 0xf7, 0x10, 0xf5, 0x10, + 0x8a, 0x12, 0x86, 0x12, 0x0d, 0x14, 0x0a, 0x14, 0x71, 0x15, 0x6e, 0x15, + 0xb9, 0x16, 0xb7, 0x16, 0xdc, 0x17, 0xda, 0x17, 0xd2, 0x18, 0xd0, 0x18, + 0x9f, 0x19, 0x9c, 0x19, 0x37, 0x1a, 0x35, 0x1a, 0x9b, 0x1a, 0x9a, 0x1a, + 0xc7, 0x1a, 0xc5, 0x1a, 0xbd, 0x1a, 0xbb, 0x1a, 0x7b, 0x1a, 0x79, 0x1a, + 0xfd, 0x19, 0xfa, 0x19, 0x4f, 0x19, 0x4e, 0x19, 0x6a, 0x18, 0x68, 0x18, + 0x57, 0x17, 0x55, 0x17, 0x19, 0x16, 0x17, 0x16, 0xb2, 0x14, 0xb1, 0x14, + 0x30, 0x13, 0x2e, 0x13, 0x8d, 0x11, 0x8a, 0x11, 0xdb, 0x0f, 0xda, 0x0f, + 0x1a, 0x0e, 0x18, 0x0e, 0x52, 0x0c, 0x51, 0x0c, 0x91, 0x0a, 0x8d, 0x0a, + 0xd0, 0x08, 0xce, 0x08, 0x21, 0x07, 0x1f, 0x07, 0x87, 0x05, 0x83, 0x05, + 0x04, 0x04, 0x02, 0x04, 0xa4, 0x02, 0xa4, 0x02, 0x66, 0x01, 0x63, 0x01, + 0x4f, 0x00, 0x4e, 0x00, 0x66, 0xff, 0x63, 0xff, 0xa5, 0xfe, 0xa3, 0xfe, + 0x15, 0xfe, 0x13, 0xfe, 0xaf, 0xfd, 0xad, 0xfd, 0x79, 0xfd, 0x76, 0xfd, + 0x6e, 0xfd, 0x6d, 0xfd, 0x8b, 0xfd, 0x89, 0xfd, 0xd1, 0xfd, 0xd0, 0xfd, + 0x36, 0xfe, 0x34, 0xfe, 0xbc, 0xfe, 0xb9, 0xfe, 0x5c, 0xff, 0x5b, 0xff, + 0x0d, 0x00, 0x0b, 0x00, 0xcf, 0x00, 0xce, 0x00, 0x9c, 0x01, 0x98, 0x01, + 0x68, 0x02, 0x67, 0x02, 0x37, 0x03, 0x34, 0x03, 0xf9, 0x03, 0xf8, 0x03, + 0xae, 0x04, 0xab, 0x04, 0x52, 0x05, 0x51, 0x05, 0xd9, 0x05, 0xd7, 0x05, + 0x47, 0x06, 0x46, 0x06, 0x91, 0x06, 0x8f, 0x06, 0xb8, 0x06, 0xb5, 0x06, + 0xb6, 0x06, 0xb4, 0x06, 0x8c, 0x06, 0x89, 0x06, 0x3a, 0x06, 0x37, 0x06, + 0xb8, 0x05, 0xb6, 0x05, 0x12, 0x05, 0x0e, 0x05, 0x3f, 0x04, 0x3f, 0x04, + 0x49, 0x03, 0x47, 0x03, 0x31, 0x02, 0x2f, 0x02, 0xf7, 0x00, 0xf6, 0x00, + 0xaa, 0xff, 0xa6, 0xff, 0x44, 0xfe, 0x42, 0xfe, 0xd0, 0xfc, 0xcf, 0xfc, + 0x55, 0xfb, 0x51, 0xfb, 0xd2, 0xf9, 0xd2, 0xf9, 0x58, 0xf8, 0x54, 0xf8, + 0xe1, 0xf6, 0xe0, 0xf6, 0x7c, 0xf5, 0x7b, 0xf5, 0x2a, 0xf4, 0x28, 0xf4, + 0xf5, 0xf2, 0xf1, 0xf2, 0xd8, 0xf1, 0xd7, 0xf1, 0xe3, 0xf0, 0xe1, 0xf0, + 0x13, 0xf0, 0x10, 0xf0, 0x6b, 0xef, 0x6b, 0xef, 0xf1, 0xee, 0xec, 0xee, + 0xa2, 0xee, 0xa2, 0xee, 0x81, 0xee, 0x7f, 0xee, 0x8d, 0xee, 0x8c, 0xee, + 0xca, 0xee, 0xc7, 0xee, 0x2c, 0xef, 0x2b, 0xef, 0xbc, 0xef, 0xb9, 0xef, + 0x6a, 0xf0, 0x6a, 0xf0, 0x3e, 0xf1, 0x39, 0xf1, 0x2c, 0xf2, 0x2d, 0xf2, + 0x32, 0xf3, 0x2d, 0xf3, 0x47, 0xf4, 0x45, 0xf4, 0x67, 0xf5, 0x66, 0xf5, + 0x8d, 0xf6, 0x8a, 0xf6, 0xb0, 0xf7, 0xae, 0xf7, 0xcc, 0xf8, 0xcb, 0xf8, + 0xdb, 0xf9, 0xd9, 0xf9, 0xd5, 0xfa, 0xd0, 0xfa, 0xb4, 0xfb, 0xb4, 0xfb, + 0x79, 0xfc, 0x75, 0xfc, 0x18, 0xfd, 0x16, 0xfd, 0x93, 0xfd, 0x91, 0xfd, + 0xe3, 0xfd, 0xe0, 0xfd, 0x0c, 0xfe, 0x0b, 0xfe, 0x05, 0xfe, 0x03, 0xfe, + 0xd8, 0xfd, 0xd4, 0xfd, 0x7b, 0xfd, 0x79, 0xfd, 0xf5, 0xfc, 0xf4, 0xfc, + 0x4b, 0xfc, 0x49, 0xfc, 0x79, 0xfb, 0x77, 0xfb, 0x8c, 0xfa, 0x88, 0xfa, + 0x7c, 0xf9, 0x7b, 0xf9, 0x59, 0xf8, 0x56, 0xf8, 0x22, 0xf7, 0x1f, 0xf7, + 0xdb, 0xf5, 0xd8, 0xf5, 0x8e, 0xf4, 0x8d, 0xf4, 0x3d, 0xf3, 0x3b, 0xf3, + 0xf1, 0xf1, 0xee, 0xf1, 0xac, 0xf0, 0xaa, 0xf0, 0x74, 0xef, 0x71, 0xef, + 0x52, 0xee, 0x4f, 0xee, 0x44, 0xed, 0x43, 0xed, 0x5a, 0xec, 0x58, 0xec, + 0x8d, 0xeb, 0x8b, 0xeb, 0xea, 0xea, 0xe7, 0xea, 0x6e, 0xea, 0x6d, 0xea, + 0x21, 0xea, 0x20, 0xea, 0x02, 0xea, 0x00, 0xea, 0x14, 0xea, 0x13, 0xea, + 0x55, 0xea, 0x53, 0xea, 0xc9, 0xea, 0xc9, 0xea, 0x6c, 0xeb, 0x69, 0xeb, + 0x3b, 0xec, 0x3b, 0xec, 0x34, 0xed, 0x31, 0xed, 0x56, 0xee, 0x55, 0xee, + 0x99, 0xef, 0x96, 0xef, 0xfa, 0xf0, 0xf9, 0xf0, 0x74, 0xf2, 0x72, 0xf2, + 0xfe, 0xf3, 0xfd, 0xf3, 0x9a, 0xf5, 0x97, 0xf5, 0x35, 0xf7, 0x33, 0xf7, + 0xd7, 0xf8, 0xd6, 0xf8, 0x70, 0xfa, 0x6e, 0xfa, 0x00, 0xfc, 0xfe, 0xfb, + 0x7c, 0xfd, 0x7a, 0xfd, 0xe5, 0xfe, 0xe4, 0xfe, 0x32, 0x00, 0x32, 0x00, + 0x64, 0x01, 0x62, 0x01, 0x74, 0x02, 0x72, 0x02, 0x5f, 0x03, 0x5c, 0x03, + 0x24, 0x04, 0x22, 0x04, 0xc2, 0x04, 0xc1, 0x04, 0x3b, 0x05, 0x39, 0x05, + 0x8d, 0x05, 0x8c, 0x05, 0xbc, 0x05, 0xb9, 0x05, 0xc6, 0x05, 0xc7, 0x05, + 0xb4, 0x05, 0xaf, 0x05, 0x80, 0x05, 0x7e, 0x05, 0x38, 0x05, 0x37, 0x05, + 0xdc, 0x04, 0xd8, 0x04, 0x6e, 0x04, 0x6d, 0x04, 0xf9, 0x03, 0xf7, 0x03, + 0x7f, 0x03, 0x7e, 0x03, 0x0a, 0x03, 0x07, 0x03, 0x9a, 0x02, 0x98, 0x02, + 0x34, 0x02, 0x34, 0x02, 0xe5, 0x01, 0xe3, 0x01, 0xa9, 0x01, 0xa8, 0x01, + 0x8a, 0x01, 0x86, 0x01, 0x88, 0x01, 0x88, 0x01, 0xa9, 0x01, 0xa6, 0x01, + 0xed, 0x01, 0xed, 0x01, 0x57, 0x02, 0x52, 0x02, 0xe3, 0x02, 0xe3, 0x02, + 0x9b, 0x03, 0x98, 0x03, 0x75, 0x04, 0x72, 0x04, 0x73, 0x05, 0x72, 0x05, + 0x90, 0x06, 0x8c, 0x06, 0xca, 0x07, 0xca, 0x07, 0x1d, 0x09, 0x19, 0x09, + 0x87, 0x0a, 0x86, 0x0a, 0x02, 0x0c, 0xff, 0x0b, 0x87, 0x0d, 0x84, 0x0d, + 0x12, 0x0f, 0x11, 0x0f, 0x9e, 0x10, 0x9c, 0x10, 0x28, 0x12, 0x25, 0x12, + 0xa3, 0x13, 0xa2, 0x13, 0x14, 0x15, 0x12, 0x15, 0x6b, 0x16, 0x68, 0x16, + 0xa9, 0x17, 0xab, 0x17, 0xc9, 0x18, 0xc4, 0x18, 0xc2, 0x19, 0xc3, 0x19, + 0x94, 0x1a, 0x91, 0x1a, 0x38, 0x1b, 0x37, 0x1b, 0xb0, 0x1b, 0xad, 0x1b, + 0xf3, 0x1b, 0xf1, 0x1b, 0x03, 0x1c, 0x01, 0x1c, 0xdf, 0x1b, 0xdd, 0x1b, + 0x89, 0x1b, 0x86, 0x1b, 0xfe, 0x1a, 0xfb, 0x1a, 0x43, 0x1a, 0x42, 0x1a, + 0x5c, 0x19, 0x58, 0x19, 0x46, 0x18, 0x44, 0x18, 0x0d, 0x17, 0x0a, 0x17, + 0xb1, 0x15, 0xae, 0x15, 0x3b, 0x14, 0x37, 0x14, 0xae, 0x12, 0xa9, 0x12, + 0x0e, 0x11, 0x0f, 0x11, 0x69, 0x0f, 0x64, 0x0f, 0xc0, 0x0d, 0xbf, 0x0d, + 0x17, 0x0c, 0x14, 0x0c, 0x7c, 0x0a, 0x7a, 0x0a, 0xed, 0x08, 0xeb, 0x08, + 0x74, 0x07, 0x72, 0x07, 0x18, 0x06, 0x15, 0x06, 0xd5, 0x04, 0xd3, 0x04, + 0xba, 0x03, 0xb5, 0x03, 0xc0, 0x02, 0xbe, 0x02, 0xf1, 0x01, 0xee, 0x01, + 0x4b, 0x01, 0x47, 0x01, 0xcc, 0x00, 0xca, 0x00, 0x7a, 0x00, 0x77, 0x00, + 0x52, 0x00, 0x4f, 0x00, 0x4c, 0x00, 0x4b, 0x00, 0x70, 0x00, 0x6d, 0x00, + 0xb4, 0x00, 0xb1, 0x00, 0x15, 0x01, 0x12, 0x01, 0x90, 0x01, 0x8d, 0x01, + 0x21, 0x02, 0x1e, 0x02, 0xc0, 0x02, 0xbb, 0x02, 0x6c, 0x03, 0x6b, 0x03, + 0x1c, 0x04, 0x18, 0x04, 0xcc, 0x04, 0xc9, 0x04, 0x73, 0x05, 0x71, 0x05, + 0x13, 0x06, 0x10, 0x06, 0x9f, 0x06, 0x9d, 0x06, 0x14, 0x07, 0x12, 0x07, + 0x73, 0x07, 0x72, 0x07, 0xaf, 0x07, 0xad, 0x07, 0xcd, 0x07, 0xcb, 0x07, + 0xc4, 0x07, 0xc0, 0x07, 0x93, 0x07, 0x92, 0x07, 0x3c, 0x07, 0x3a, 0x07, + 0xb9, 0x06, 0xb7, 0x06, 0x11, 0x06, 0x10, 0x06, 0x3e, 0x05, 0x3d, 0x05, + 0x4a, 0x04, 0x48, 0x04, 0x32, 0x03, 0x30, 0x03, 0xfc, 0x01, 0xfb, 0x01, + 0xab, 0x00, 0xaa, 0x00, 0x47, 0xff, 0x45, 0xff, 0xd3, 0xfd, 0xd1, 0xfd, + 0x53, 0xfc, 0x51, 0xfc, 0xd0, 0xfa, 0xd0, 0xfa, 0x4e, 0xf9, 0x4b, 0xf9, + 0xd2, 0xf7, 0xd1, 0xf7, 0x65, 0xf6, 0x64, 0xf6, 0x09, 0xf5, 0x07, 0xf5, + 0xc8, 0xf3, 0xc6, 0xf3, 0x9e, 0xf2, 0x9b, 0xf2, 0x9c, 0xf1, 0x9b, 0xf1, + 0xb9, 0xf0, 0xb7, 0xf0, 0x00, 0xf0, 0xfe, 0xef, 0x74, 0xef, 0x73, 0xef, + 0x0f, 0xef, 0x0c, 0xef, 0xdd, 0xee, 0xda, 0xee, 0xd3, 0xee, 0xd1, 0xee, + 0xf8, 0xee, 0xf6, 0xee, 0x47, 0xef, 0x46, 0xef, 0xbd, 0xef, 0xba, 0xef, + 0x5b, 0xf0, 0x58, 0xf0, 0x15, 0xf1, 0x13, 0xf1, 0xee, 0xf1, 0xed, 0xf1, + 0xde, 0xf2, 0xdb, 0xf2, 0xdf, 0xf3, 0xdd, 0xf3, 0xec, 0xf4, 0xe9, 0xf4, + 0xfe, 0xf5, 0xfb, 0xf5, 0x0f, 0xf7, 0x0d, 0xf7, 0x18, 0xf8, 0x16, 0xf8, + 0x19, 0xf9, 0x15, 0xf9, 0x00, 0xfa, 0xfe, 0xf9, 0xd2, 0xfa, 0xd0, 0xfa, + 0x86, 0xfb, 0x82, 0xfb, 0x16, 0xfc, 0x16, 0xfc, 0x86, 0xfc, 0x82, 0xfc, + 0xc9, 0xfc, 0xc6, 0xfc, 0xe3, 0xfc, 0xe1, 0xfc, 0xd3, 0xfc, 0xd0, 0xfc, + 0x93, 0xfc, 0x94, 0xfc, 0x33, 0xfc, 0x2f, 0xfc, 0xa1, 0xfb, 0x9f, 0xfb, + 0xec, 0xfa, 0xec, 0xfa, 0x16, 0xfa, 0x12, 0xfa, 0x1f, 0xf9, 0x1d, 0xf9, + 0x0c, 0xf8, 0x0a, 0xf8, 0xe2, 0xf6, 0xe0, 0xf6, 0xa5, 0xf5, 0xa5, 0xf5, + 0x5d, 0xf4, 0x59, 0xf4, 0x0d, 0xf3, 0x0c, 0xf3, 0xb8, 0xf1, 0xb6, 0xf1, + 0x68, 0xf0, 0x66, 0xf0, 0x23, 0xef, 0x21, 0xef, 0xe8, 0xed, 0xe7, 0xed, + 0xc7, 0xec, 0xc4, 0xec, 0xb8, 0xeb, 0xb7, 0xeb, 0xcd, 0xea, 0xcc, 0xea, + 0x02, 0xea, 0x00, 0xea, 0x5e, 0xe9, 0x5d, 0xe9, 0xe7, 0xe8, 0xe4, 0xe8, + 0x9b, 0xe8, 0x9a, 0xe8, 0x7d, 0xe8, 0x7d, 0xe8, 0x96, 0xe8, 0x94, 0xe8, + 0xdc, 0xe8, 0xdb, 0xe8, 0x55, 0xe9, 0x54, 0xe9, 0xff, 0xe9, 0xfd, 0xe9, + 0xd5, 0xea, 0xd3, 0xea, 0xd7, 0xeb, 0xd8, 0xeb, 0x02, 0xed, 0xff, 0xec, + 0x4f, 0xee, 0x4e, 0xee, 0xba, 0xef, 0xb8, 0xef, 0x3f, 0xf1, 0x3c, 0xf1, + 0xd4, 0xf2, 0xd3, 0xf2, 0x77, 0xf4, 0x75, 0xf4, 0x20, 0xf6, 0x20, 0xf6, + 0xc9, 0xf7, 0xc6, 0xf7, 0x6d, 0xf9, 0x6c, 0xf9, 0x03, 0xfb, 0x02, 0xfb, + 0x89, 0xfc, 0x87, 0xfc, 0xfb, 0xfd, 0xf9, 0xfd, 0x4b, 0xff, 0x4b, 0xff, + 0x82, 0x00, 0x7f, 0x00, 0x93, 0x01, 0x91, 0x01, 0x80, 0x02, 0x80, 0x02, + 0x49, 0x03, 0x48, 0x03, 0xe7, 0x03, 0xe6, 0x03, 0x60, 0x04, 0x5e, 0x04, + 0xaf, 0x04, 0xad, 0x04, 0xdb, 0x04, 0xda, 0x04, 0xe3, 0x04, 0xdf, 0x04, + 0xc9, 0x04, 0xca, 0x04, 0x98, 0x04, 0x95, 0x04, 0x47, 0x04, 0x45, 0x04, + 0xe7, 0x03, 0xe7, 0x03, 0x76, 0x03, 0x72, 0x03, 0xfd, 0x02, 0xfc, 0x02, + 0x80, 0x02, 0x7d, 0x02, 0x03, 0x02, 0x03, 0x02, 0x93, 0x01, 0x93, 0x01, + 0x2e, 0x01, 0x2c, 0x01, 0xe0, 0x00, 0xdc, 0x00, 0xa3, 0x00, 0xa3, 0x00, + 0x8c, 0x00, 0x89, 0x00, 0x90, 0x00, 0x8c, 0x00, 0xb7, 0x00, 0xb8, 0x00, + 0x09, 0x01, 0x03, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x1c, 0x02, 0x18, 0x02, + 0xde, 0x02, 0xdd, 0x02, 0xc9, 0x03, 0xc6, 0x03, 0xdb, 0x04, 0xda, 0x04, + 0x09, 0x06, 0x08, 0x06, 0x5c, 0x07, 0x59, 0x07, 0xc5, 0x08, 0xc2, 0x08, + 0x46, 0x0a, 0x44, 0x0a, 0xd5, 0x0b, 0xd5, 0x0b, 0x74, 0x0d, 0x70, 0x0d, + 0x15, 0x0f, 0x12, 0x0f, 0xb8, 0x10, 0xb8, 0x10, 0x57, 0x12, 0x53, 0x12, + 0xe7, 0x13, 0xe8, 0x13, 0x6b, 0x15, 0x68, 0x15, 0xd6, 0x16, 0xd3, 0x16, + 0x25, 0x18, 0x25, 0x18, 0x54, 0x19, 0x51, 0x19, 0x5f, 0x1a, 0x5d, 0x1a, + 0x3b, 0x1b, 0x38, 0x1b, 0xee, 0x1b, 0xec, 0x1b, 0x6d, 0x1c, 0x6b, 0x1c, + 0xbb, 0x1c, 0xb9, 0x1c, 0xd4, 0x1c, 0xd1, 0x1c, 0xb6, 0x1c, 0xb5, 0x1c, + 0x66, 0x1c, 0x63, 0x1c, 0xe1, 0x1b, 0xe0, 0x1b, 0x29, 0x1b, 0x27, 0x1b, + 0x47, 0x1a, 0x44, 0x1a, 0x33, 0x19, 0x32, 0x19, 0x00, 0x18, 0xfe, 0x17, + 0xa5, 0x16, 0xa3, 0x16, 0x33, 0x15, 0x2f, 0x15, 0xa7, 0x13, 0xa5, 0x13, + 0x0c, 0x12, 0x0a, 0x12, 0x6b, 0x10, 0x68, 0x10, 0xbf, 0x0e, 0xbe, 0x0e, + 0x21, 0x0d, 0x1d, 0x0d, 0x83, 0x0b, 0x84, 0x0b, 0xfd, 0x09, 0xf9, 0x09, + 0x88, 0x08, 0x89, 0x08, 0x30, 0x07, 0x2c, 0x07, 0xf7, 0x05, 0xf6, 0x05, + 0xdc, 0x04, 0xdb, 0x04, 0xee, 0x03, 0xed, 0x03, 0x24, 0x03, 0x21, 0x03, + 0x83, 0x02, 0x82, 0x02, 0x0e, 0x02, 0x0d, 0x02, 0xc1, 0x01, 0xbf, 0x01, + 0x9e, 0x01, 0x9d, 0x01, 0xa2, 0x01, 0x9f, 0x01, 0xc9, 0x01, 0xc7, 0x01, + 0x14, 0x02, 0x11, 0x02, 0x78, 0x02, 0x76, 0x02, 0xf7, 0x02, 0xf8, 0x02, + 0x8a, 0x03, 0x88, 0x03, 0x30, 0x04, 0x2e, 0x04, 0xdb, 0x04, 0xdb, 0x04, + 0x8e, 0x05, 0x8c, 0x05, 0x40, 0x06, 0x40, 0x06, 0xeb, 0x06, 0xe8, 0x06, + 0x8a, 0x07, 0x8a, 0x07, 0x17, 0x08, 0x17, 0x08, 0x90, 0x08, 0x8e, 0x08, + 0xee, 0x08, 0xed, 0x08, 0x2c, 0x09, 0x2b, 0x09, 0x49, 0x09, 0x49, 0x09, + 0x41, 0x09, 0x40, 0x09, 0x13, 0x09, 0x12, 0x09, 0xbb, 0x08, 0xba, 0x08, + 0x3a, 0x08, 0x39, 0x08, 0x90, 0x07, 0x8f, 0x07, 0xbf, 0x06, 0xbe, 0x06, + 0xc8, 0x05, 0xc8, 0x05, 0xb0, 0x04, 0xad, 0x04, 0x78, 0x03, 0x78, 0x03, + 0x22, 0x02, 0x21, 0x02, 0xb9, 0x00, 0xba, 0x00, 0x41, 0xff, 0x3d, 0xff, + 0xb5, 0xfd, 0xb7, 0xfd, 0x2d, 0xfc, 0x2c, 0xfc, 0x9f, 0xfa, 0x9d, 0xfa, + 0x19, 0xf9, 0x19, 0xf9, 0x9e, 0xf7, 0x9c, 0xf7, 0x33, 0xf6, 0x34, 0xf6, + 0xe1, 0xf4, 0xdf, 0xf4, 0xa9, 0xf3, 0xa8, 0xf3, 0x93, 0xf2, 0x92, 0xf2, + 0x9d, 0xf1, 0x9d, 0xf1, 0xd0, 0xf0, 0xd0, 0xf0, 0x30, 0xf0, 0x2c, 0xf0, + 0xb5, 0xef, 0xb5, 0xef, 0x6b, 0xef, 0x69, 0xef, 0x49, 0xef, 0x49, 0xef, + 0x56, 0xef, 0x55, 0xef, 0x8b, 0xef, 0x8a, 0xef, 0xe9, 0xef, 0xe8, 0xef, + 0x6b, 0xf0, 0x6c, 0xf0, 0x11, 0xf1, 0x0f, 0xf1, 0xd1, 0xf1, 0xcf, 0xf1, + 0xad, 0xf2, 0xab, 0xf2, 0x93, 0xf3, 0x93, 0xf3, 0x91, 0xf4, 0x90, 0xf4, + 0x8c, 0xf5, 0x8d, 0xf5, 0x90, 0xf6, 0x8d, 0xf6, 0x8b, 0xf7, 0x8b, 0xf7, + 0x78, 0xf8, 0x78, 0xf8, 0x5a, 0xf9, 0x59, 0xf9, 0x1e, 0xfa, 0x1f, 0xfa, + 0xce, 0xfa, 0xcc, 0xfa, 0x58, 0xfb, 0x59, 0xfb, 0xc1, 0xfb, 0xbf, 0xfb, + 0x04, 0xfc, 0x03, 0xfc, 0x1c, 0xfc, 0x1b, 0xfc, 0x0c, 0xfc, 0x0c, 0xfc, + 0xd1, 0xfb, 0xcf, 0xfb, 0x6b, 0xfb, 0x6c, 0xfb, 0xde, 0xfa, 0xdd, 0xfa, + 0x29, 0xfa, 0x28, 0xfa, 0x51, 0xf9, 0x52, 0xf9, 0x5c, 0xf8, 0x5a, 0xf8, + 0x45, 0xf7, 0x43, 0xf7, 0x1a, 0xf6, 0x1a, 0xf6, 0xda, 0xf4, 0xd8, 0xf4, + 0x8c, 0xf3, 0x8d, 0xf3, 0x37, 0xf2, 0x36, 0xf2, 0xda, 0xf0, 0xd9, 0xf0, + 0x83, 0xef, 0x82, 0xef, 0x33, 0xee, 0x31, 0xee, 0xee, 0xec, 0xee, 0xec, + 0xbf, 0xeb, 0xbd, 0xeb, 0xa1, 0xea, 0xa1, 0xea, 0xa7, 0xe9, 0xa6, 0xe9, + 0xca, 0xe8, 0xc9, 0xe8, 0x16, 0xe8, 0x15, 0xe8, 0x88, 0xe7, 0x88, 0xe7, + 0x25, 0xe7, 0x23, 0xe7, 0xf2, 0xe6, 0xf4, 0xe6, 0xf1, 0xe6, 0xed, 0xe6, + 0x1e, 0xe7, 0x1e, 0xe7, 0x7d, 0xe7, 0x7d, 0xe7, 0x0f, 0xe8, 0x0c, 0xe8, + 0xcc, 0xe8, 0xcb, 0xe8, 0xb6, 0xe9, 0xb4, 0xe9, 0xca, 0xea, 0xc8, 0xea, + 0x01, 0xec, 0x02, 0xec, 0x5a, 0xed, 0x58, 0xed, 0xca, 0xee, 0xcb, 0xee, + 0x54, 0xf0, 0x52, 0xf0, 0xea, 0xf1, 0xe9, 0xf1, 0x8d, 0xf3, 0x8b, 0xf3, + 0x30, 0xf5, 0x2e, 0xf5, 0xd4, 0xf6, 0xd1, 0xf6, 0x69, 0xf8, 0x6a, 0xf8, + 0xf7, 0xf9, 0xf4, 0xf9, 0x6d, 0xfb, 0x6e, 0xfb, 0xcd, 0xfc, 0xca, 0xfc, + 0x12, 0xfe, 0x12, 0xfe, 0x34, 0xff, 0x32, 0xff, 0x37, 0x00, 0x35, 0x00, + 0x11, 0x01, 0x11, 0x01, 0xcd, 0x01, 0xca, 0x01, 0x58, 0x02, 0x59, 0x02, + 0xc7, 0x02, 0xc5, 0x02, 0x0b, 0x03, 0x0a, 0x03, 0x2c, 0x03, 0x2d, 0x03, + 0x2e, 0x03, 0x2d, 0x03, 0x10, 0x03, 0x0f, 0x03, 0xda, 0x02, 0xda, 0x02, + 0x8e, 0x02, 0x8e, 0x02, 0x2f, 0x02, 0x2f, 0x02, 0xc7, 0x01, 0xc6, 0x01, + 0x54, 0x01, 0x52, 0x01, 0xe2, 0x00, 0xe1, 0x00, 0x75, 0x00, 0x75, 0x00, + 0x14, 0x00, 0x14, 0x00, 0xc3, 0xff, 0xc1, 0xff, 0x85, 0xff, 0x86, 0xff, + 0x64, 0xff, 0x61, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x7b, 0xff, 0x7a, 0xff, + 0xbc, 0xff, 0xbb, 0xff, 0x21, 0x00, 0x21, 0x00, 0xb0, 0x00, 0xaf, 0x00, + 0x63, 0x01, 0x62, 0x01, 0x41, 0x02, 0x42, 0x02, 0x41, 0x03, 0x3f, 0x03, + 0x66, 0x04, 0x67, 0x04, 0xab, 0x05, 0xab, 0x05, 0x0e, 0x07, 0x0c, 0x07, + 0x87, 0x08, 0x88, 0x08, 0x17, 0x0a, 0x16, 0x0a, 0xb5, 0x0b, 0xb4, 0x0b, + 0x5e, 0x0d, 0x5e, 0x0d, 0x09, 0x0f, 0x08, 0x0f, 0xb3, 0x10, 0xb3, 0x10, + 0x57, 0x12, 0x57, 0x12, 0xee, 0x13, 0xec, 0x13, 0x72, 0x15, 0x72, 0x15, + 0xde, 0x16, 0xdd, 0x16, 0x2d, 0x18, 0x2d, 0x18, 0x5a, 0x19, 0x58, 0x19, + 0x5f, 0x1a, 0x5f, 0x1a, 0x38, 0x1b, 0x36, 0x1b, 0xe4, 0x1b, 0xe6, 0x1b, + 0x5e, 0x1c, 0x5d, 0x1c, 0xa5, 0x1c, 0xa5, 0x1c, 0xb7, 0x1c, 0xb7, 0x1c, + 0x95, 0x1c, 0x96, 0x1c, 0x40, 0x1c, 0x3e, 0x1c, 0xb2, 0x1b, 0xb3, 0x1b, + 0xfc, 0x1a, 0xfa, 0x1a, 0x10, 0x1a, 0x11, 0x1a, 0x02, 0x19, 0x00, 0x19, + 0xca, 0x17, 0xc9, 0x17, 0x73, 0x16, 0x73, 0x16, 0x03, 0x15, 0x03, 0x15, + 0x7e, 0x13, 0x7e, 0x13, 0xec, 0x11, 0xec, 0x11, 0x53, 0x10, 0x52, 0x10, + 0xb8, 0x0e, 0xb8, 0x0e, 0x23, 0x0d, 0x23, 0x0d, 0x9b, 0x0b, 0x9b, 0x0b, + 0x23, 0x0a, 0x24, 0x0a, 0xc4, 0x08, 0xc4, 0x08, 0x82, 0x07, 0x81, 0x07, + 0x5c, 0x06, 0x5d, 0x06, 0x64, 0x05, 0x61, 0x05, 0x86, 0x04, 0x86, 0x04, + 0xdb, 0x03, 0xda, 0x03, 0x54, 0x03, 0x53, 0x03, 0xfc, 0x02, 0xfc, 0x02, + 0xcc, 0x02, 0xcc, 0x02, 0xc3, 0x02, 0xc2, 0x02, 0xe6, 0x02, 0xe6, 0x02, + 0x26, 0x03, 0x24, 0x03, 0x8a, 0x03, 0x8a, 0x03, 0x0b, 0x04, 0x0a, 0x04, + 0xa1, 0x04, 0xa1, 0x04, 0x4f, 0x05, 0x4d, 0x05, 0x05, 0x06, 0x05, 0x06, + 0xc9, 0x06, 0xc7, 0x06, 0x8b, 0x07, 0x8a, 0x07, 0x4d, 0x08, 0x4c, 0x08, + 0x05, 0x09, 0x04, 0x09, 0xb1, 0x09, 0xb1, 0x09, 0x47, 0x0a, 0x46, 0x0a, + 0xc7, 0x0a, 0xc6, 0x0a, 0x29, 0x0b, 0x27, 0x0b, 0x68, 0x0b, 0x66, 0x0b, + 0x85, 0x0b, 0x84, 0x0b, 0x78, 0x0b, 0x77, 0x0b, 0x45, 0x0b, 0x44, 0x0b, + 0xe3, 0x0a, 0xe2, 0x0a, 0x59, 0x0a, 0x58, 0x0a, 0xa2, 0x09, 0xa2, 0x09, + 0xc4, 0x08, 0xc1, 0x08, 0xc0, 0x07, 0xc0, 0x07, 0x94, 0x06, 0x94, 0x06, + 0x50, 0x05, 0x4f, 0x05, 0xe7, 0x03, 0xe8, 0x03, 0x6e, 0x02, 0x6c, 0x02, + 0xe4, 0x00, 0xe4, 0x00, 0x49, 0xff, 0x4b, 0xff, 0xb0, 0xfd, 0xae, 0xfd, + 0x13, 0xfc, 0x14, 0xfc, 0x83, 0xfa, 0x81, 0xfa, 0xf9, 0xf8, 0xfa, 0xf8, + 0x87, 0xf7, 0x87, 0xf7, 0x2b, 0xf6, 0x2a, 0xf6, 0xed, 0xf4, 0xed, 0xf4, + 0xd1, 0xf3, 0xd0, 0xf3, 0xd9, 0xf2, 0xd9, 0xf2, 0x0d, 0xf2, 0x0c, 0xf2, + 0x69, 0xf1, 0x6a, 0xf1, 0xf4, 0xf0, 0xf3, 0xf0, 0xaf, 0xf0, 0xaf, 0xf0, + 0x94, 0xf0, 0x94, 0xf0, 0xa8, 0xf0, 0xa8, 0xf0, 0xe5, 0xf0, 0xe7, 0xf0, + 0x4d, 0xf1, 0x4d, 0xf1, 0xd9, 0xf1, 0xd8, 0xf1, 0x86, 0xf2, 0x85, 0xf2, + 0x52, 0xf3, 0x51, 0xf3, 0x32, 0xf4, 0x32, 0xf4, 0x24, 0xf5, 0x25, 0xf5, + 0x22, 0xf6, 0x22, 0xf6, 0x23, 0xf7, 0x24, 0xf7, 0x25, 0xf8, 0x23, 0xf8, + 0x1d, 0xf9, 0x1e, 0xf9, 0x0b, 0xfa, 0x09, 0xfa, 0xe1, 0xfa, 0xe1, 0xfa, + 0x9d, 0xfb, 0x9c, 0xfb, 0x3b, 0xfc, 0x3c, 0xfc, 0xb5, 0xfc, 0xb4, 0xfc, + 0x0a, 0xfd, 0x0b, 0xfd, 0x35, 0xfd, 0x35, 0xfd, 0x32, 0xfd, 0x33, 0xfd, + 0x05, 0xfd, 0x05, 0xfd, 0xa7, 0xfc, 0xa9, 0xfc, 0x22, 0xfc, 0x21, 0xfc, + 0x71, 0xfb, 0x72, 0xfb, 0x98, 0xfa, 0x98, 0xfa, 0x9d, 0xf9, 0x9d, 0xf9, + 0x7e, 0xf8, 0x80, 0xf8, 0x49, 0xf7, 0x47, 0xf7, 0xfa, 0xf5, 0xfb, 0xf5, + 0x99, 0xf4, 0x97, 0xf4, 0x2c, 0xf3, 0x2e, 0xf3, 0xb4, 0xf1, 0xb5, 0xf1, + 0x41, 0xf0, 0x40, 0xf0, 0xcc, 0xee, 0xcd, 0xee, 0x65, 0xed, 0x63, 0xed, + 0x0c, 0xec, 0x0e, 0xec, 0xc8, 0xea, 0xc6, 0xea, 0xa0, 0xe9, 0xa1, 0xe9, + 0x97, 0xe8, 0x96, 0xe8, 0xb3, 0xe7, 0xb4, 0xe7, 0xf9, 0xe6, 0xf7, 0xe6, + 0x6a, 0xe6, 0x6a, 0xe6, 0x0e, 0xe6, 0x0c, 0xe6, 0xde, 0xe5, 0xde, 0xe5, + 0xe7, 0xe5, 0xe8, 0xe5, 0x21, 0xe6, 0x22, 0xe6, 0x94, 0xe6, 0x93, 0xe6, + 0x35, 0xe7, 0x37, 0xe7, 0x09, 0xe8, 0x09, 0xe8, 0x09, 0xe9, 0x0a, 0xe9, + 0x31, 0xea, 0x32, 0xea, 0x83, 0xeb, 0x82, 0xeb, 0xf2, 0xec, 0xf2, 0xec, + 0x7a, 0xee, 0x7b, 0xee, 0x19, 0xf0, 0x17, 0xf0, 0xc5, 0xf1, 0xc6, 0xf1, + 0x76, 0xf3, 0x75, 0xf3, 0x29, 0xf5, 0x2b, 0xf5, 0xd6, 0xf6, 0xd6, 0xf6, + 0x7a, 0xf8, 0x79, 0xf8, 0x07, 0xfa, 0x0a, 0xfa, 0x82, 0xfb, 0x80, 0xfb, + 0xdf, 0xfc, 0xdf, 0xfc, 0x19, 0xfe, 0x1a, 0xfe, 0x34, 0xff, 0x34, 0xff, + 0x25, 0x00, 0x24, 0x00, 0xef, 0x00, 0xf0, 0x00, 0x90, 0x01, 0x91, 0x01, + 0x07, 0x02, 0x07, 0x02, 0x56, 0x02, 0x57, 0x02, 0x7d, 0x02, 0x7e, 0x02, + 0x7e, 0x02, 0x7f, 0x02, 0x62, 0x02, 0x61, 0x02, 0x20, 0x02, 0x21, 0x02, + 0xcb, 0x01, 0xcc, 0x01, 0x5c, 0x01, 0x5e, 0x01, 0xdd, 0x00, 0xdd, 0x00, + 0x55, 0x00, 0x58, 0x00, 0xcb, 0xff, 0xc9, 0xff, 0x3d, 0xff, 0x3e, 0xff, + 0xbc, 0xfe, 0xbc, 0xfe, 0x42, 0xfe, 0x43, 0xfe, 0xe3, 0xfd, 0xe2, 0xfd, + 0x98, 0xfd, 0x9a, 0xfd, 0x71, 0xfd, 0x71, 0xfd, 0x69, 0xfd, 0x69, 0xfd, + 0x8a, 0xfd, 0x89, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, 0x47, 0xfe, 0x46, 0xfe, + 0xe7, 0xfe, 0xe9, 0xfe, 0xb4, 0xff, 0xb3, 0xff, 0xa9, 0x00, 0xab, 0x00, + 0xca, 0x01, 0xc7, 0x01, 0x0d, 0x03, 0x0d, 0x03, 0x74, 0x04, 0x76, 0x04, + 0xfa, 0x05, 0xf9, 0x05, 0x9a, 0x07, 0x98, 0x07, 0x4e, 0x09, 0x4e, 0x09, + 0x0f, 0x0b, 0x10, 0x0b, 0xde, 0x0c, 0xdb, 0x0c, 0xa7, 0x0e, 0xa9, 0x0e, + 0x73, 0x10, 0x72, 0x10, 0x33, 0x12, 0x33, 0x12, 0xe4, 0x13, 0xe4, 0x13, + 0x7e, 0x15, 0x7c, 0x15, 0xfa, 0x16, 0xfc, 0x16, 0x56, 0x18, 0x55, 0x18, + 0x8c, 0x19, 0x8b, 0x19, 0x94, 0x1a, 0x95, 0x1a, 0x6e, 0x1b, 0x6c, 0x1b, + 0x13, 0x1c, 0x13, 0x1c, 0x84, 0x1c, 0x85, 0x1c, 0xbe, 0x1c, 0xbc, 0x1c, + 0xbc, 0x1c, 0xbd, 0x1c, 0x84, 0x1c, 0x83, 0x1c, 0x16, 0x1c, 0x14, 0x1c, + 0x6d, 0x1b, 0x6f, 0x1b, 0x9a, 0x1a, 0x98, 0x1a, 0x91, 0x19, 0x92, 0x19, + 0x64, 0x18, 0x62, 0x18, 0x0f, 0x17, 0x0f, 0x17, 0x9d, 0x15, 0x9d, 0x15, + 0x13, 0x14, 0x13, 0x14, 0x75, 0x12, 0x76, 0x12, 0xd0, 0x10, 0xce, 0x10, + 0x27, 0x0f, 0x28, 0x0f, 0x7e, 0x0d, 0x7d, 0x0d, 0xe6, 0x0b, 0xe7, 0x0b, + 0x59, 0x0a, 0x59, 0x0a, 0xe9, 0x08, 0xe8, 0x08, 0x91, 0x07, 0x91, 0x07, + 0x5e, 0x06, 0x5e, 0x06, 0x52, 0x05, 0x52, 0x05, 0x6c, 0x04, 0x6e, 0x04, + 0xb5, 0x03, 0xb4, 0x03, 0x2a, 0x03, 0x2b, 0x03, 0xce, 0x02, 0xce, 0x02, + 0xa2, 0x02, 0xa3, 0x02, 0x9f, 0x02, 0xa2, 0x02, 0xcb, 0x02, 0xca, 0x02, + 0x1d, 0x03, 0x1e, 0x03, 0x93, 0x03, 0x92, 0x03, 0x2b, 0x04, 0x2b, 0x04, + 0xde, 0x04, 0xde, 0x04, 0xa8, 0x05, 0xa8, 0x05, 0x85, 0x06, 0x85, 0x06, + 0x69, 0x07, 0x6a, 0x07, 0x57, 0x08, 0x56, 0x08, 0x3e, 0x09, 0x3f, 0x09, + 0x25, 0x0a, 0x26, 0x0a, 0xfa, 0x0a, 0xfa, 0x0a, 0xbf, 0x0b, 0xbe, 0x0b, + 0x6a, 0x0c, 0x6a, 0x0c, 0xf7, 0x0c, 0xf7, 0x0c, 0x63, 0x0d, 0x63, 0x0d, + 0xa6, 0x0d, 0xa7, 0x0d, 0xc2, 0x0d, 0xc1, 0x0d, 0xae, 0x0d, 0xae, 0x0d, + 0x69, 0x0d, 0x6a, 0x0d, 0xfb, 0x0c, 0xfb, 0x0c, 0x55, 0x0c, 0x56, 0x0c, + 0x87, 0x0b, 0x87, 0x0b, 0x8a, 0x0a, 0x8a, 0x0a, 0x62, 0x09, 0x61, 0x09, + 0x17, 0x08, 0x17, 0x08, 0xa2, 0x06, 0xa3, 0x06, 0x1b, 0x05, 0x1b, 0x05, + 0x76, 0x03, 0x75, 0x03, 0xc2, 0x01, 0xc2, 0x01, 0x08, 0x00, 0x07, 0x00, + 0x42, 0xfe, 0x42, 0xfe, 0x8b, 0xfc, 0x8c, 0xfc, 0xd4, 0xfa, 0xd3, 0xfa, + 0x35, 0xf9, 0x35, 0xf9, 0xac, 0xf7, 0xaa, 0xf7, 0x3c, 0xf6, 0x3d, 0xf6, + 0xf3, 0xf4, 0xf2, 0xf4, 0xcd, 0xf3, 0xcd, 0xf3, 0xd6, 0xf2, 0xd6, 0xf2, + 0x0b, 0xf2, 0x0b, 0xf2, 0x6f, 0xf1, 0x70, 0xf1, 0x0a, 0xf1, 0x07, 0xf1, + 0xcd, 0xf0, 0xcf, 0xf0, 0xcf, 0xf0, 0xcc, 0xf0, 0xf5, 0xf0, 0xf5, 0xf0, + 0x51, 0xf1, 0x51, 0xf1, 0xd4, 0xf1, 0xd5, 0xf1, 0x80, 0xf2, 0x7f, 0xf2, + 0x4f, 0xf3, 0x51, 0xf3, 0x38, 0xf4, 0x35, 0xf4, 0x3a, 0xf5, 0x3b, 0xf5, + 0x4d, 0xf6, 0x4b, 0xf6, 0x67, 0xf7, 0x67, 0xf7, 0x88, 0xf8, 0x87, 0xf8, + 0x9f, 0xf9, 0x9e, 0xf9, 0xb0, 0xfa, 0xae, 0xfa, 0xa8, 0xfb, 0xa8, 0xfb, + 0x8c, 0xfc, 0x88, 0xfc, 0x4a, 0xfd, 0x4c, 0xfd, 0xea, 0xfd, 0xe8, 0xfd, + 0x5c, 0xfe, 0x5c, 0xfe, 0xa0, 0xfe, 0xa0, 0xfe, 0xb9, 0xfe, 0xb6, 0xfe, + 0x9a, 0xfe, 0x99, 0xfe, 0x4b, 0xfe, 0x4c, 0xfe, 0xcb, 0xfd, 0xc8, 0xfd, + 0x15, 0xfd, 0x17, 0xfd, 0x39, 0xfc, 0x37, 0xfc, 0x2a, 0xfb, 0x29, 0xfb, + 0xf7, 0xf9, 0xf8, 0xf9, 0xa1, 0xf8, 0xa0, 0xf8, 0x2e, 0xf7, 0x2e, 0xf7, + 0xa1, 0xf5, 0xa3, 0xf5, 0x02, 0xf4, 0x03, 0xf4, 0x57, 0xf2, 0x5a, 0xf2, + 0xa8, 0xf0, 0xa7, 0xf0, 0xf8, 0xee, 0xfb, 0xee, 0x52, 0xed, 0x50, 0xed, + 0xb5, 0xeb, 0xb7, 0xeb, 0x31, 0xea, 0x32, 0xea, 0xc3, 0xe8, 0xc3, 0xe8, + 0x7a, 0xe7, 0x7c, 0xe7, 0x53, 0xe6, 0x54, 0xe6, 0x5d, 0xe5, 0x5c, 0xe5, + 0x92, 0xe4, 0x94, 0xe4, 0xfc, 0xe3, 0xfb, 0xe3, 0x9f, 0xe3, 0xa0, 0xe3, + 0x77, 0xe3, 0x76, 0xe3, 0x8f, 0xe3, 0x90, 0xe3, 0xde, 0xe3, 0xdd, 0xe3, + 0x68, 0xe4, 0x68, 0xe4, 0x2b, 0xe5, 0x2a, 0xe5, 0x21, 0xe6, 0x21, 0xe6, + 0x4c, 0xe7, 0x4c, 0xe7, 0xa2, 0xe8, 0xa2, 0xe8, 0x1e, 0xea, 0x1e, 0xea, + 0xbf, 0xeb, 0xc0, 0xeb, 0x75, 0xed, 0x74, 0xed, 0x45, 0xef, 0x44, 0xef, + 0x1b, 0xf1, 0x1b, 0xf1, 0xfb, 0xf2, 0xfc, 0xf2, 0xd4, 0xf4, 0xd3, 0xf4, + 0xa6, 0xf6, 0xa5, 0xf6, 0x66, 0xf8, 0x67, 0xf8, 0x0e, 0xfa, 0x0d, 0xfa, + 0x9b, 0xfb, 0x9c, 0xfb, 0x03, 0xfd, 0x01, 0xfd, 0x46, 0xfe, 0x48, 0xfe, + 0x60, 0xff, 0x5c, 0xff, 0x49, 0x00, 0x4a, 0x00, 0x06, 0x01, 0x04, 0x01, + 0x93, 0x01, 0x93, 0x01, 0xf0, 0x01, 0xed, 0x01, 0x1d, 0x02, 0x1d, 0x02, + 0x21, 0x02, 0x1f, 0x02, 0xf7, 0x01, 0xf8, 0x01, 0xac, 0x01, 0xaa, 0x01, + 0x3b, 0x01, 0x3c, 0x01, 0xb2, 0x00, 0xb0, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x5c, 0xff, 0x5c, 0xff, 0x9f, 0xfe, 0x9e, 0xfe, 0xdf, 0xfd, 0xdf, 0xfd, + 0x23, 0xfd, 0x23, 0xfd, 0x71, 0xfc, 0x70, 0xfc, 0xd2, 0xfb, 0xd2, 0xfb, + 0x48, 0xfb, 0x46, 0xfb, 0xe1, 0xfa, 0xe2, 0xfa, 0x9a, 0xfa, 0x9b, 0xfa, + 0x85, 0xfa, 0x83, 0xfa, 0x97, 0xfa, 0x9a, 0xfa, 0xda, 0xfa, 0xd7, 0xfa, + 0x55, 0xfb, 0x58, 0xfb, 0xfb, 0xfb, 0xfa, 0xfb, 0xdd, 0xfc, 0xde, 0xfc, + 0xec, 0xfd, 0xec, 0xfd, 0x29, 0xff, 0x2a, 0xff, 0x98, 0x00, 0x98, 0x00, + 0x28, 0x02, 0x29, 0x02, 0xe2, 0x03, 0xe0, 0x03, 0xb3, 0x05, 0xb4, 0x05, + 0x9f, 0x07, 0x9f, 0x07, 0x99, 0x09, 0x99, 0x09, 0xa0, 0x0b, 0xa0, 0x0b, + 0xa9, 0x0d, 0xa9, 0x0d, 0xac, 0x0f, 0xac, 0x0f, 0xa7, 0x11, 0xa8, 0x11, + 0x8d, 0x13, 0x8c, 0x13, 0x5c, 0x15, 0x5c, 0x15, 0x08, 0x17, 0x09, 0x17, + 0x8e, 0x18, 0x8d, 0x18, 0xeb, 0x19, 0xec, 0x19, 0x10, 0x1b, 0x0f, 0x1b, + 0x02, 0x1c, 0x04, 0x1c, 0xbb, 0x1c, 0xbc, 0x1c, 0x35, 0x1d, 0x36, 0x1d, + 0x71, 0x1d, 0x72, 0x1d, 0x6b, 0x1d, 0x6b, 0x1d, 0x27, 0x1d, 0x26, 0x1d, + 0xa3, 0x1c, 0xa5, 0x1c, 0xe8, 0x1b, 0xe6, 0x1b, 0xf2, 0x1a, 0xf4, 0x1a, + 0xc9, 0x19, 0xca, 0x19, 0x76, 0x18, 0x76, 0x18, 0xf4, 0x16, 0xf6, 0x16, + 0x5b, 0x15, 0x59, 0x15, 0xa1, 0x13, 0xa1, 0x13, 0xd9, 0x11, 0xda, 0x11, + 0x0a, 0x10, 0x0a, 0x10, 0x36, 0x0e, 0x35, 0x0e, 0x6c, 0x0c, 0x6d, 0x0c, + 0xb1, 0x0a, 0xaf, 0x0a, 0x09, 0x09, 0x0a, 0x09, 0x84, 0x07, 0x83, 0x07, + 0x1d, 0x06, 0x1f, 0x06, 0xe5, 0x04, 0xe3, 0x04, 0xd5, 0x03, 0xd6, 0x03, + 0xf9, 0x02, 0xf8, 0x02, 0x54, 0x02, 0x55, 0x02, 0xe0, 0x01, 0xdf, 0x01, + 0xa8, 0x01, 0xa8, 0x01, 0xa0, 0x01, 0xa0, 0x01, 0xd1, 0x01, 0xd0, 0x01, + 0x2f, 0x02, 0x31, 0x02, 0xbe, 0x02, 0xbd, 0x02, 0x74, 0x03, 0x73, 0x03, + 0x4f, 0x04, 0x4f, 0x04, 0x48, 0x05, 0x48, 0x05, 0x5b, 0x06, 0x59, 0x06, + 0x80, 0x07, 0x82, 0x07, 0xae, 0x08, 0xac, 0x08, 0xe4, 0x09, 0xe6, 0x09, + 0x14, 0x0b, 0x12, 0x0b, 0x3e, 0x0c, 0x3f, 0x0c, 0x54, 0x0d, 0x53, 0x0d, + 0x53, 0x0e, 0x54, 0x0e, 0x35, 0x0f, 0x35, 0x0f, 0xef, 0x0f, 0xf2, 0x0f, + 0x85, 0x10, 0x85, 0x10, 0xe8, 0x10, 0xe9, 0x10, 0x1b, 0x11, 0x1b, 0x11, + 0x18, 0x11, 0x19, 0x11, 0xdd, 0x10, 0xdd, 0x10, 0x65, 0x10, 0x68, 0x10, + 0xbe, 0x0f, 0xbe, 0x0f, 0xd7, 0x0e, 0xd7, 0x0e, 0xc2, 0x0d, 0xc2, 0x0d, + 0x78, 0x0c, 0x7a, 0x0c, 0x01, 0x0b, 0x01, 0x0b, 0x69, 0x09, 0x69, 0x09, + 0xa7, 0x07, 0xa7, 0x07, 0xd2, 0x05, 0xd3, 0x05, 0xe6, 0x03, 0xe6, 0x03, + 0xf0, 0x01, 0xf1, 0x01, 0xf7, 0xff, 0xf9, 0xff, 0x03, 0xfe, 0x03, 0xfe, + 0x1d, 0xfc, 0x1e, 0xfc, 0x4a, 0xfa, 0x4a, 0xfa, 0x91, 0xf8, 0x93, 0xf8, + 0xfb, 0xf6, 0xfb, 0xf6, 0x8e, 0xf5, 0x8e, 0xf5, 0x4c, 0xf4, 0x4e, 0xf4, + 0x3e, 0xf3, 0x3e, 0xf3, 0x64, 0xf2, 0x65, 0xf2, 0xc2, 0xf1, 0xc3, 0xf1, + 0x59, 0xf1, 0x5a, 0xf1, 0x29, 0xf1, 0x29, 0xf1, 0x33, 0xf1, 0x35, 0xf1, + 0x74, 0xf1, 0x73, 0xf1, 0xe6, 0xf1, 0xe9, 0xf1, 0x8d, 0xf2, 0x8d, 0xf2, + 0x59, 0xf3, 0x5c, 0xf3, 0x53, 0xf4, 0x54, 0xf4, 0x68, 0xf5, 0x69, 0xf5, + 0x97, 0xf6, 0x98, 0xf6, 0xd9, 0xf7, 0xd9, 0xf7, 0x20, 0xf9, 0x21, 0xf9, + 0x6e, 0xfa, 0x70, 0xfa, 0xb1, 0xfb, 0xb1, 0xfb, 0xe7, 0xfc, 0xe6, 0xfc, + 0x02, 0xfe, 0x03, 0xfe, 0xff, 0xfe, 0xfe, 0xfe, 0xd9, 0xff, 0xd9, 0xff, + 0x82, 0x00, 0x82, 0x00, 0xff, 0x00, 0xff, 0x00, 0x43, 0x01, 0x43, 0x01, + 0x52, 0x01, 0x51, 0x01, 0x24, 0x01, 0x23, 0x01, 0xbb, 0x00, 0xbb, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x42, 0xff, 0x44, 0xff, 0x37, 0xfe, 0x36, 0xfe, + 0xfb, 0xfc, 0xfa, 0xfc, 0x95, 0xfb, 0x93, 0xfb, 0x04, 0xfa, 0x05, 0xfa, + 0x58, 0xf8, 0x59, 0xf8, 0x8f, 0xf6, 0x8d, 0xf6, 0xb4, 0xf4, 0xb5, 0xf4, + 0xce, 0xf2, 0xcc, 0xf2, 0xdf, 0xf0, 0xdf, 0xf0, 0xf7, 0xee, 0xf7, 0xee, + 0x15, 0xed, 0x15, 0xed, 0x47, 0xeb, 0x46, 0xeb, 0x8e, 0xe9, 0x8d, 0xe9, + 0xf4, 0xe7, 0xf3, 0xe7, 0x7f, 0xe6, 0x81, 0xe6, 0x38, 0xe5, 0x36, 0xe5, + 0x20, 0xe4, 0x21, 0xe4, 0x3d, 0xe3, 0x3d, 0xe3, 0x98, 0xe2, 0x98, 0xe2, + 0x31, 0xe2, 0x31, 0xe2, 0x09, 0xe2, 0x08, 0xe2, 0x25, 0xe2, 0x25, 0xe2, + 0x80, 0xe2, 0x80, 0xe2, 0x1f, 0xe3, 0x20, 0xe3, 0xf9, 0xe3, 0xf8, 0xe3, + 0x11, 0xe5, 0x10, 0xe5, 0x5e, 0xe6, 0x5d, 0xe6, 0xdc, 0xe7, 0xdc, 0xe7, + 0x84, 0xe9, 0x84, 0xe9, 0x50, 0xeb, 0x4e, 0xeb, 0x34, 0xed, 0x36, 0xed, + 0x2f, 0xef, 0x2f, 0xef, 0x31, 0xf1, 0x30, 0xf1, 0x38, 0xf3, 0x3a, 0xf3, + 0x38, 0xf5, 0x37, 0xf5, 0x28, 0xf7, 0x2b, 0xf7, 0x05, 0xf9, 0x04, 0xf9, + 0xc2, 0xfa, 0xc4, 0xfa, 0x60, 0xfc, 0x60, 0xfc, 0xd0, 0xfd, 0xd0, 0xfd, + 0x18, 0xff, 0x18, 0xff, 0x27, 0x00, 0x26, 0x00, 0x07, 0x01, 0x08, 0x01, + 0xaf, 0x01, 0xaf, 0x01, 0x24, 0x02, 0x22, 0x02, 0x60, 0x02, 0x61, 0x02, + 0x67, 0x02, 0x66, 0x02, 0x41, 0x02, 0x44, 0x02, 0xeb, 0x01, 0xe9, 0x01, + 0x6d, 0x01, 0x6f, 0x01, 0xca, 0x00, 0xca, 0x00, 0x05, 0x00, 0x07, 0x00, + 0x32, 0xff, 0x32, 0xff, 0x45, 0xfe, 0x44, 0xfe, 0x55, 0xfd, 0x58, 0xfd, + 0x60, 0xfc, 0x5e, 0xfc, 0x72, 0xfb, 0x75, 0xfb, 0x96, 0xfa, 0x95, 0xfa, + 0xc7, 0xf9, 0xc7, 0xf9, 0x1e, 0xf9, 0x1f, 0xf9, 0x92, 0xf8, 0x92, 0xf8, + 0x37, 0xf8, 0x38, 0xf8, 0x06, 0xf8, 0x07, 0xf8, 0x11, 0xf8, 0x13, 0xf8, + 0x51, 0xf8, 0x51, 0xf8, 0xcd, 0xf8, 0xce, 0xf8, 0x83, 0xf9, 0x83, 0xf9, + 0x73, 0xfa, 0x72, 0xfa, 0x9b, 0xfb, 0x9d, 0xfb, 0xfb, 0xfc, 0xfa, 0xfc, + 0x8a, 0xfe, 0x8a, 0xfe, 0x46, 0x00, 0x47, 0x00, 0x29, 0x02, 0x27, 0x02, + 0x28, 0x04, 0x2a, 0x04, 0x46, 0x06, 0x43, 0x06, 0x70, 0x08, 0x71, 0x08, + 0xa8, 0x0a, 0xa5, 0x0a, 0xdd, 0x0c, 0xde, 0x0c, 0x10, 0x0f, 0x10, 0x0f, + 0x33, 0x11, 0x33, 0x11, 0x3d, 0x13, 0x3f, 0x13, 0x2d, 0x15, 0x2d, 0x15, + 0xf6, 0x16, 0xf5, 0x16, 0x93, 0x18, 0x95, 0x18, 0xff, 0x19, 0xfd, 0x19, + 0x2f, 0x1b, 0x32, 0x1b, 0x25, 0x1c, 0x23, 0x1c, 0xd8, 0x1c, 0xda, 0x1c, + 0x49, 0x1d, 0x48, 0x1d, 0x74, 0x1d, 0x74, 0x1d, 0x5a, 0x1d, 0x5a, 0x1d, + 0xfb, 0x1c, 0xfc, 0x1c, 0x5a, 0x1c, 0x59, 0x1c, 0x7a, 0x1b, 0x7c, 0x1b, + 0x60, 0x1a, 0x5f, 0x1a, 0x0f, 0x19, 0x10, 0x19, 0x92, 0x17, 0x93, 0x17, + 0xec, 0x15, 0xeb, 0x15, 0x28, 0x14, 0x29, 0x14, 0x4d, 0x12, 0x4b, 0x12, + 0x64, 0x10, 0x64, 0x10, 0x75, 0x0e, 0x77, 0x0e, 0x8c, 0x0c, 0x8b, 0x0c, + 0xad, 0x0a, 0xaf, 0x0a, 0xe7, 0x08, 0xe6, 0x08, 0x3b, 0x07, 0x3b, 0x07, + 0xb5, 0x05, 0xb6, 0x05, 0x5b, 0x04, 0x5c, 0x04, 0x32, 0x03, 0x31, 0x03, + 0x3c, 0x02, 0x3e, 0x02, 0x83, 0x01, 0x84, 0x01, 0x02, 0x01, 0x02, 0x01, + 0xbf, 0x00, 0xbf, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0xe7, 0x00, 0xe7, 0x00, + 0x50, 0x01, 0x51, 0x01, 0xed, 0x01, 0xeb, 0x01, 0xb7, 0x02, 0xb9, 0x02, + 0xaf, 0x03, 0xaf, 0x03, 0xc6, 0x04, 0xc7, 0x04, 0x01, 0x06, 0xff, 0x05, + 0x4c, 0x07, 0x4e, 0x07, 0xa9, 0x08, 0xab, 0x08, 0x10, 0x0a, 0x0f, 0x0a, + 0x73, 0x0b, 0x74, 0x0b, 0xd3, 0x0c, 0xd1, 0x0c, 0x1f, 0x0e, 0x20, 0x0e, + 0x56, 0x0f, 0x56, 0x0f, 0x72, 0x10, 0x74, 0x10, 0x66, 0x11, 0x64, 0x11, + 0x2f, 0x12, 0x30, 0x12, 0xc7, 0x12, 0xc7, 0x12, 0x2a, 0x13, 0x2a, 0x13, + 0x54, 0x13, 0x54, 0x13, 0x3e, 0x13, 0x3f, 0x13, 0xee, 0x12, 0xef, 0x12, + 0x5d, 0x12, 0x5d, 0x12, 0x8f, 0x11, 0x90, 0x11, 0x86, 0x10, 0x87, 0x10, + 0x43, 0x0f, 0x42, 0x0f, 0xce, 0x0d, 0xd1, 0x0d, 0x29, 0x0c, 0x28, 0x0c, + 0x5f, 0x0a, 0x60, 0x0a, 0x74, 0x08, 0x74, 0x08, 0x6e, 0x06, 0x6e, 0x06, + 0x5b, 0x04, 0x5d, 0x04, 0x3f, 0x02, 0x3d, 0x02, 0x24, 0x00, 0x24, 0x00, + 0x14, 0xfe, 0x15, 0xfe, 0x17, 0xfc, 0x17, 0xfc, 0x35, 0xfa, 0x35, 0xfa, + 0x71, 0xf8, 0x70, 0xf8, 0xdb, 0xf6, 0xdb, 0xf6, 0x72, 0xf5, 0x71, 0xf5, + 0x39, 0xf4, 0x3a, 0xf4, 0x40, 0xf3, 0x40, 0xf3, 0x7c, 0xf2, 0x7d, 0xf2, + 0xfa, 0xf1, 0xf8, 0xf1, 0xb2, 0xf1, 0xb4, 0xf1, 0xab, 0xf1, 0xa9, 0xf1, + 0xdd, 0xf1, 0xe1, 0xf1, 0x4a, 0xf2, 0x49, 0xf2, 0xed, 0xf2, 0xec, 0xf2, + 0xbe, 0xf3, 0xc0, 0xf3, 0xbe, 0xf4, 0xbb, 0xf4, 0xe1, 0xf5, 0xe3, 0xf5, + 0x20, 0xf7, 0x1e, 0xf7, 0x76, 0xf8, 0x76, 0xf8, 0xd6, 0xf9, 0xd8, 0xf9, + 0x43, 0xfb, 0x42, 0xfb, 0xa3, 0xfc, 0xa2, 0xfc, 0xfa, 0xfd, 0xfb, 0xfd, + 0x3c, 0xff, 0x39, 0xff, 0x59, 0x00, 0x5a, 0x00, 0x54, 0x01, 0x54, 0x01, + 0x1e, 0x02, 0x1e, 0x02, 0xb5, 0x02, 0xb5, 0x02, 0x13, 0x03, 0x12, 0x03, + 0x2e, 0x03, 0x2e, 0x03, 0x11, 0x03, 0x0f, 0x03, 0xad, 0x02, 0xae, 0x02, + 0x0d, 0x02, 0x0a, 0x02, 0x2e, 0x01, 0x2f, 0x01, 0x11, 0x00, 0x0e, 0x00, + 0xc0, 0xfe, 0xc0, 0xfe, 0x3d, 0xfd, 0x3c, 0xfd, 0x8b, 0xfb, 0x8b, 0xfb, + 0xb6, 0xf9, 0xb6, 0xf9, 0xc3, 0xf7, 0xc3, 0xf7, 0xb7, 0xf5, 0xb4, 0xf5, + 0x99, 0xf3, 0x9d, 0xf3, 0x78, 0xf1, 0x76, 0xf1, 0x57, 0xef, 0x57, 0xef, + 0x3c, 0xed, 0x3f, 0xed, 0x36, 0xeb, 0x34, 0xeb, 0x44, 0xe9, 0x45, 0xe9, + 0x76, 0xe7, 0x74, 0xe7, 0xcd, 0xe5, 0xcc, 0xe5, 0x53, 0xe4, 0x54, 0xe4, + 0x0d, 0xe3, 0x0d, 0xe3, 0x03, 0xe2, 0x02, 0xe2, 0x36, 0xe1, 0x38, 0xe1, + 0xb0, 0xe0, 0xaf, 0xe0, 0x6d, 0xe0, 0x6d, 0xe0, 0x70, 0xe0, 0x72, 0xe0, + 0xc2, 0xe0, 0xc0, 0xe0, 0x54, 0xe1, 0x55, 0xe1, 0x2e, 0xe2, 0x2e, 0xe2, + 0x46, 0xe3, 0x43, 0xe3, 0x99, 0xe4, 0x9c, 0xe4, 0x22, 0xe6, 0x21, 0xe6, + 0xd9, 0xe7, 0xda, 0xe7, 0xb8, 0xe9, 0xba, 0xe9, 0xb2, 0xeb, 0xb2, 0xeb, + 0xc2, 0xed, 0xc4, 0xed, 0xe0, 0xef, 0xdf, 0xef, 0xfe, 0xf1, 0x00, 0xf2, + 0x18, 0xf4, 0x17, 0xf4, 0x1f, 0xf6, 0x20, 0xf6, 0x11, 0xf8, 0x11, 0xf8, + 0xe4, 0xf9, 0xe6, 0xf9, 0x8f, 0xfb, 0x8f, 0xfb, 0x10, 0xfd, 0x11, 0xfd, + 0x5c, 0xfe, 0x5b, 0xfe, 0x74, 0xff, 0x73, 0xff, 0x52, 0x00, 0x53, 0x00, + 0xf5, 0x00, 0xf4, 0x00, 0x60, 0x01, 0x61, 0x01, 0x8b, 0x01, 0x8c, 0x01, + 0x86, 0x01, 0x85, 0x01, 0x40, 0x01, 0x43, 0x01, 0xd4, 0x00, 0xd3, 0x00, + 0x33, 0x00, 0x34, 0x00, 0x70, 0xff, 0x6f, 0xff, 0x8c, 0xfe, 0x8b, 0xfe, + 0x8d, 0xfd, 0x8c, 0xfd, 0x7d, 0xfc, 0x7c, 0xfc, 0x5f, 0xfb, 0x60, 0xfb, + 0x45, 0xfa, 0x44, 0xfa, 0x2e, 0xf9, 0x2e, 0xf9, 0x28, 0xf8, 0x28, 0xf8, + 0x38, 0xf7, 0x37, 0xf7, 0x68, 0xf6, 0x69, 0xf6, 0xc0, 0xf5, 0xbf, 0xf5, + 0x42, 0xf5, 0x45, 0xf5, 0x03, 0xf5, 0x01, 0xf5, 0xf1, 0xf4, 0xf2, 0xf4, + 0x27, 0xf5, 0x28, 0xf5, 0x9a, 0xf5, 0x99, 0xf5, 0x4c, 0xf6, 0x4d, 0xf6, + 0x42, 0xf7, 0x42, 0xf7, 0x74, 0xf8, 0x73, 0xf8, 0xe1, 0xf9, 0xe2, 0xf9, + 0x86, 0xfb, 0x86, 0xfb, 0x5b, 0xfd, 0x5a, 0xfd, 0x5c, 0xff, 0x5c, 0xff, + 0x7e, 0x01, 0x7d, 0x01, 0xc0, 0x03, 0xbe, 0x03, 0x14, 0x06, 0x15, 0x06, + 0x71, 0x08, 0x70, 0x08, 0xd9, 0x0a, 0xd7, 0x0a, 0x30, 0x0d, 0x32, 0x0d, + 0x86, 0x0f, 0x82, 0x0f, 0xbb, 0x11, 0xbe, 0x11, 0xd4, 0x13, 0xd2, 0x13, + 0xc7, 0x15, 0xc8, 0x15, 0x87, 0x17, 0x86, 0x17, 0x18, 0x19, 0x19, 0x19, + 0x68, 0x1a, 0x68, 0x1a, 0x7a, 0x1b, 0x79, 0x1b, 0x46, 0x1c, 0x47, 0x1c, + 0xc8, 0x1c, 0xc6, 0x1c, 0x03, 0x1d, 0x05, 0x1d, 0xf2, 0x1c, 0xf1, 0x1c, + 0x9c, 0x1c, 0x9b, 0x1c, 0xf9, 0x1b, 0xfa, 0x1b, 0x1a, 0x1b, 0x1a, 0x1b, + 0xf7, 0x19, 0xf8, 0x19, 0x9f, 0x18, 0x9e, 0x18, 0x1a, 0x17, 0x19, 0x17, + 0x63, 0x15, 0x65, 0x15, 0x95, 0x13, 0x94, 0x13, 0xa9, 0x11, 0xaa, 0x11, + 0xb3, 0x0f, 0xb1, 0x0f, 0xb7, 0x0d, 0xb9, 0x0d, 0xbe, 0x0b, 0xbc, 0x0b, + 0xd7, 0x09, 0xd8, 0x09, 0x05, 0x08, 0x04, 0x08, 0x57, 0x06, 0x56, 0x06, + 0xcc, 0x04, 0xcd, 0x04, 0x72, 0x03, 0x71, 0x03, 0x4f, 0x02, 0x50, 0x02, + 0x64, 0x01, 0x62, 0x01, 0xb7, 0x00, 0xb8, 0x00, 0x4a, 0x00, 0x4a, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0x30, 0x00, 0x31, 0x00, 0x81, 0x00, 0x80, 0x00, + 0x0e, 0x01, 0x11, 0x01, 0xd3, 0x01, 0xd1, 0x01, 0xc6, 0x02, 0xc7, 0x02, + 0xea, 0x03, 0xe9, 0x03, 0x2e, 0x05, 0x30, 0x05, 0x99, 0x06, 0x97, 0x06, + 0x14, 0x08, 0x16, 0x08, 0xa3, 0x09, 0xa2, 0x09, 0x36, 0x0b, 0x36, 0x0b, + 0xc9, 0x0c, 0xcc, 0x0c, 0x55, 0x0e, 0x54, 0x0e, 0xce, 0x0f, 0xd1, 0x0f, + 0x30, 0x11, 0x2f, 0x11, 0x71, 0x12, 0x72, 0x12, 0x8a, 0x13, 0x8a, 0x13, + 0x74, 0x14, 0x72, 0x14, 0x28, 0x15, 0x2a, 0x15, 0xa3, 0x15, 0xa2, 0x15, + 0xe3, 0x15, 0xe2, 0x15, 0xdc, 0x15, 0xdb, 0x15, 0x94, 0x15, 0x95, 0x15, + 0x0a, 0x15, 0x09, 0x15, 0x3c, 0x14, 0x3d, 0x14, 0x34, 0x13, 0x32, 0x13, + 0xe9, 0x11, 0xe8, 0x11, 0x69, 0x10, 0x6a, 0x10, 0xb9, 0x0e, 0xb6, 0x0e, + 0xdf, 0x0c, 0xdf, 0x0c, 0xe0, 0x0a, 0xe0, 0x0a, 0xc9, 0x08, 0xc8, 0x08, + 0x9e, 0x06, 0x9f, 0x06, 0x6d, 0x04, 0x6c, 0x04, 0x3e, 0x02, 0x3c, 0x02, + 0x16, 0x00, 0x16, 0x00, 0x05, 0xfe, 0x03, 0xfe, 0x0a, 0xfc, 0x0c, 0xfc, + 0x3a, 0xfa, 0x39, 0xfa, 0x92, 0xf8, 0x91, 0xf8, 0x19, 0xf7, 0x19, 0xf7, + 0xd9, 0xf5, 0xd8, 0xf5, 0xd4, 0xf4, 0xd5, 0xf4, 0x0d, 0xf4, 0x0b, 0xf4, + 0x86, 0xf3, 0x84, 0xf3, 0x3f, 0xf3, 0x3e, 0xf3, 0x39, 0xf3, 0x3a, 0xf3, + 0x73, 0xf3, 0x70, 0xf3, 0xe6, 0xf3, 0xe7, 0xf3, 0x92, 0xf4, 0x92, 0xf4, + 0x70, 0xf5, 0x72, 0xf5, 0x7e, 0xf6, 0x7b, 0xf6, 0xab, 0xf7, 0xab, 0xf7, + 0xfc, 0xf8, 0xfc, 0xf8, 0x60, 0xfa, 0x60, 0xfa, 0xd4, 0xfb, 0xd5, 0xfb, + 0x4d, 0xfd, 0x4b, 0xfd, 0xbe, 0xfe, 0xbf, 0xfe, 0x24, 0x00, 0x24, 0x00, + 0x72, 0x01, 0x71, 0x01, 0x99, 0x02, 0x9d, 0x02, 0xa1, 0x03, 0xa0, 0x03, + 0x71, 0x04, 0x73, 0x04, 0x0b, 0x05, 0x0b, 0x05, 0x6c, 0x05, 0x6b, 0x05, + 0x82, 0x05, 0x85, 0x05, 0x64, 0x05, 0x62, 0x05, 0xf3, 0x04, 0xf5, 0x04, + 0x49, 0x04, 0x47, 0x04, 0x5a, 0x03, 0x5b, 0x03, 0x2c, 0x02, 0x2a, 0x02, + 0xc7, 0x00, 0xc8, 0x00, 0x2b, 0xff, 0x2b, 0xff, 0x65, 0xfd, 0x65, 0xfd, + 0x74, 0xfb, 0x75, 0xfb, 0x67, 0xf9, 0x66, 0xf9, 0x3e, 0xf7, 0x3f, 0xf7, + 0x07, 0xf5, 0x05, 0xf5, 0xc7, 0xf2, 0xc7, 0xf2, 0x85, 0xf0, 0x86, 0xf0, + 0x51, 0xee, 0x50, 0xee, 0x2a, 0xec, 0x2a, 0xec, 0x1b, 0xea, 0x1a, 0xea, + 0x2e, 0xe8, 0x2e, 0xe8, 0x69, 0xe6, 0x69, 0xe6, 0xd4, 0xe4, 0xd4, 0xe4, + 0x71, 0xe3, 0x72, 0xe3, 0x4f, 0xe2, 0x50, 0xe2, 0x6b, 0xe1, 0x6a, 0xe1, + 0xcc, 0xe0, 0xce, 0xe0, 0x76, 0xe0, 0x75, 0xe0, 0x68, 0xe0, 0x67, 0xe0, + 0xa5, 0xe0, 0xa5, 0xe0, 0x29, 0xe1, 0x28, 0xe1, 0xf3, 0xe1, 0xf5, 0xe1, + 0x02, 0xe3, 0xff, 0xe2, 0x48, 0xe4, 0x4a, 0xe4, 0xcb, 0xe5, 0xca, 0xe5, + 0x7a, 0xe7, 0x7a, 0xe7, 0x51, 0xe9, 0x51, 0xe9, 0x4a, 0xeb, 0x4a, 0xeb, + 0x57, 0xed, 0x55, 0xed, 0x6d, 0xef, 0x6f, 0xef, 0x8e, 0xf1, 0x8b, 0xf1, + 0xa1, 0xf3, 0xa2, 0xf3, 0xab, 0xf5, 0xaa, 0xf5, 0x99, 0xf7, 0x99, 0xf7, + 0x69, 0xf9, 0x68, 0xf9, 0x13, 0xfb, 0x12, 0xfb, 0x8b, 0xfc, 0x8b, 0xfc, + 0xd5, 0xfd, 0xd4, 0xfd, 0xe5, 0xfe, 0xe4, 0xfe, 0xbc, 0xff, 0xbb, 0xff, + 0x59, 0x00, 0x58, 0x00, 0xb7, 0x00, 0xb6, 0x00, 0xdc, 0x00, 0xdb, 0x00, + 0xc5, 0x00, 0xc5, 0x00, 0x7a, 0x00, 0x79, 0x00, 0xfc, 0xff, 0xfc, 0xff, + 0x50, 0xff, 0x50, 0xff, 0x7d, 0xfe, 0x7c, 0xfe, 0x89, 0xfd, 0x88, 0xfd, + 0x78, 0xfc, 0x78, 0xfc, 0x57, 0xfb, 0x56, 0xfb, 0x28, 0xfa, 0x29, 0xfa, + 0xfb, 0xf8, 0xf9, 0xf8, 0xd0, 0xf7, 0xd1, 0xf7, 0xb5, 0xf6, 0xb4, 0xf6, + 0xb1, 0xf5, 0xb1, 0xf5, 0xcc, 0xf4, 0xcd, 0xf4, 0x0c, 0xf4, 0x0c, 0xf4, + 0x7e, 0xf3, 0x7f, 0xf3, 0x23, 0xf3, 0x22, 0xf3, 0xff, 0xf2, 0x01, 0xf3, + 0x1e, 0xf3, 0x1e, 0xf3, 0x7e, 0xf3, 0x7d, 0xf3, 0x20, 0xf4, 0x22, 0xf4, + 0x08, 0xf5, 0x07, 0xf5, 0x2b, 0xf6, 0x2d, 0xf6, 0x95, 0xf7, 0x94, 0xf7, + 0x30, 0xf9, 0x31, 0xf9, 0x06, 0xfb, 0x07, 0xfb, 0x04, 0xfd, 0x05, 0xfd, + 0x2e, 0xff, 0x2e, 0xff, 0x77, 0x01, 0x78, 0x01, 0xd1, 0x03, 0xd1, 0x03, + 0x3f, 0x06, 0x3e, 0x06, 0xac, 0x08, 0xac, 0x08, 0x1c, 0x0b, 0x1a, 0x0b, + 0x7a, 0x0d, 0x7b, 0x0d, 0xc1, 0x0f, 0xc2, 0x0f, 0xf1, 0x11, 0xf0, 0x11, + 0xf2, 0x13, 0xf3, 0x13, 0xcc, 0x15, 0xcc, 0x15, 0x6d, 0x17, 0x6c, 0x17, + 0xd3, 0x18, 0xd6, 0x18, 0xf8, 0x19, 0xf7, 0x19, 0xd7, 0x1a, 0xd9, 0x1a, + 0x6e, 0x1b, 0x6f, 0x1b, 0xbe, 0x1b, 0xbd, 0x1b, 0xbf, 0x1b, 0xc0, 0x1b, + 0x7b, 0x1b, 0x79, 0x1b, 0xeb, 0x1a, 0xec, 0x1a, 0x18, 0x1a, 0x17, 0x1a, + 0x08, 0x19, 0x09, 0x19, 0xbd, 0x17, 0xbb, 0x17, 0x40, 0x16, 0x42, 0x16, + 0x9b, 0x14, 0x9b, 0x14, 0xd2, 0x12, 0xd2, 0x12, 0xf1, 0x10, 0xf1, 0x10, + 0xff, 0x0e, 0xff, 0x0e, 0x0a, 0x0d, 0x0b, 0x0d, 0x1a, 0x0b, 0x18, 0x0b, + 0x33, 0x09, 0x35, 0x09, 0x6a, 0x07, 0x67, 0x07, 0xb9, 0x05, 0xba, 0x05, + 0x38, 0x04, 0x36, 0x04, 0xe0, 0x02, 0xe0, 0x02, 0xc2, 0x01, 0xc1, 0x01, + 0xdc, 0x00, 0xdb, 0x00, 0x35, 0x00, 0x35, 0x00, 0xd0, 0xff, 0xce, 0xff, + 0xaa, 0xff, 0xa9, 0xff, 0xc8, 0xff, 0xc7, 0xff, 0x24, 0x00, 0x24, 0x00, + 0xbd, 0x00, 0xbc, 0x00, 0x8f, 0x01, 0x8f, 0x01, 0x93, 0x02, 0x92, 0x02, + 0xc8, 0x03, 0xc7, 0x03, 0x20, 0x05, 0x1f, 0x05, 0x9a, 0x06, 0x99, 0x06, + 0x2c, 0x08, 0x2d, 0x08, 0xce, 0x09, 0xcd, 0x09, 0x78, 0x0b, 0x79, 0x0b, + 0x23, 0x0d, 0x21, 0x0d, 0xc7, 0x0e, 0xc6, 0x0e, 0x57, 0x10, 0x57, 0x10, + 0xd5, 0x11, 0xd4, 0x11, 0x2d, 0x13, 0x2d, 0x13, 0x5f, 0x14, 0x60, 0x14, + 0x66, 0x15, 0x63, 0x15, 0x34, 0x16, 0x34, 0x16, 0xc9, 0x16, 0xc7, 0x16, + 0x1f, 0x17, 0x1f, 0x17, 0x33, 0x17, 0x31, 0x17, 0x03, 0x17, 0x03, 0x17, + 0x8e, 0x16, 0x8e, 0x16, 0xd7, 0x15, 0xd5, 0x15, 0xdb, 0x14, 0xdc, 0x14, + 0xa1, 0x13, 0xa0, 0x13, 0x2d, 0x12, 0x2e, 0x12, 0x88, 0x10, 0x86, 0x10, + 0xb2, 0x0e, 0xb1, 0x0e, 0xb8, 0x0c, 0xb7, 0x0c, 0x9f, 0x0a, 0x9f, 0x0a, + 0x76, 0x08, 0x75, 0x08, 0x3f, 0x06, 0x3e, 0x06, 0x07, 0x04, 0x06, 0x04, + 0xd9, 0x01, 0xd8, 0x01, 0xb9, 0xff, 0xb8, 0xff, 0xb6, 0xfd, 0xb5, 0xfd, + 0xd4, 0xfb, 0xd3, 0xfb, 0x1c, 0xfa, 0x1a, 0xfa, 0x97, 0xf8, 0x96, 0xf8, + 0x46, 0xf7, 0x46, 0xf7, 0x33, 0xf6, 0x32, 0xf6, 0x5b, 0xf5, 0x59, 0xf5, + 0xc5, 0xf4, 0xc5, 0xf4, 0x72, 0xf4, 0x71, 0xf4, 0x5d, 0xf4, 0x5a, 0xf4, + 0x8c, 0xf4, 0x8b, 0xf4, 0xf5, 0xf4, 0xf4, 0xf4, 0x99, 0xf5, 0x98, 0xf5, + 0x72, 0xf6, 0x71, 0xf6, 0x76, 0xf7, 0x77, 0xf7, 0xa8, 0xf8, 0xa6, 0xf8, + 0xf6, 0xf9, 0xf5, 0xf9, 0x5e, 0xfb, 0x5e, 0xfb, 0xd6, 0xfc, 0xd5, 0xfc, + 0x54, 0xfe, 0x54, 0xfe, 0xd3, 0xff, 0xd0, 0xff, 0x43, 0x01, 0x44, 0x01, + 0xa1, 0x02, 0x9f, 0x02, 0xdf, 0x03, 0xdf, 0x03, 0xf7, 0x04, 0xf5, 0x04, + 0xdf, 0x05, 0xdf, 0x05, 0x8f, 0x06, 0x8e, 0x06, 0x00, 0x07, 0xff, 0x06, + 0x2f, 0x07, 0x30, 0x07, 0x17, 0x07, 0x17, 0x07, 0xbb, 0x06, 0xbb, 0x06, + 0x16, 0x06, 0x16, 0x06, 0x2b, 0x05, 0x2b, 0x05, 0x01, 0x04, 0x00, 0x04, + 0x95, 0x02, 0x94, 0x02, 0xf0, 0x00, 0xef, 0x00, 0x19, 0xff, 0x19, 0xff, + 0x15, 0xfd, 0x13, 0xfd, 0xf1, 0xfa, 0xf0, 0xfa, 0xab, 0xf8, 0xac, 0xf8, + 0x54, 0xf6, 0x52, 0xf6, 0xf2, 0xf3, 0xf2, 0xf3, 0x8b, 0xf1, 0x8b, 0xf1, + 0x2f, 0xef, 0x2e, 0xef, 0xde, 0xec, 0xe0, 0xec, 0xa6, 0xea, 0xa4, 0xea, + 0x8d, 0xe8, 0x8e, 0xe8, 0x9d, 0xe6, 0x9c, 0xe6, 0xdc, 0xe4, 0xdb, 0xe4, + 0x4f, 0xe3, 0x4f, 0xe3, 0x02, 0xe2, 0x00, 0xe2, 0xf6, 0xe0, 0xf6, 0xe0, + 0x31, 0xe0, 0x2f, 0xe0, 0xb6, 0xdf, 0xb6, 0xdf, 0x86, 0xdf, 0x86, 0xdf, + 0xa6, 0xdf, 0xa5, 0xdf, 0x0f, 0xe0, 0x0f, 0xe0, 0xc3, 0xe0, 0xc3, 0xe0, + 0xbf, 0xe1, 0xbe, 0xe1, 0xf9, 0xe2, 0xfa, 0xe2, 0x72, 0xe4, 0x71, 0xe4, + 0x1b, 0xe6, 0x1a, 0xe6, 0xf3, 0xe7, 0xf3, 0xe7, 0xec, 0xe9, 0xeb, 0xe9, + 0x00, 0xec, 0xff, 0xeb, 0x21, 0xee, 0x21, 0xee, 0x4d, 0xf0, 0x4b, 0xf0, + 0x72, 0xf2, 0x71, 0xf2, 0x8b, 0xf4, 0x8c, 0xf4, 0x8d, 0xf6, 0x8a, 0xf6, + 0x70, 0xf8, 0x71, 0xf8, 0x2e, 0xfa, 0x2c, 0xfa, 0xba, 0xfb, 0xbb, 0xfb, + 0x18, 0xfd, 0x15, 0xfd, 0x37, 0xfe, 0x36, 0xfe, 0x20, 0xff, 0x1f, 0xff, + 0xc6, 0xff, 0xc5, 0xff, 0x2f, 0x00, 0x2d, 0x00, 0x5a, 0x00, 0x5a, 0x00, + 0x44, 0x00, 0x43, 0x00, 0xf8, 0xff, 0xf7, 0xff, 0x73, 0xff, 0x71, 0xff, + 0xbc, 0xfe, 0xbc, 0xfe, 0xdb, 0xfd, 0xd9, 0xfd, 0xd2, 0xfc, 0xd3, 0xfc, + 0xae, 0xfb, 0xac, 0xfb, 0x6e, 0xfa, 0x6d, 0xfa, 0x24, 0xf9, 0x23, 0xf9, + 0xd1, 0xf7, 0xcf, 0xf7, 0x82, 0xf6, 0x82, 0xf6, 0x41, 0xf5, 0x40, 0xf5, + 0x0f, 0xf4, 0x0f, 0xf4, 0xff, 0xf2, 0xfd, 0xf2, 0x13, 0xf2, 0x14, 0xf2, + 0x54, 0xf1, 0x52, 0xf1, 0xcc, 0xf0, 0xca, 0xf0, 0x7a, 0xf0, 0x79, 0xf0, + 0x6d, 0xf0, 0x6c, 0xf0, 0xa2, 0xf0, 0xa0, 0xf0, 0x1d, 0xf1, 0x1d, 0xf1, + 0xe2, 0xf1, 0xe0, 0xf1, 0xea, 0xf2, 0xea, 0xf2, 0x3a, 0xf4, 0x38, 0xf4, + 0xc8, 0xf5, 0xc7, 0xf5, 0x91, 0xf7, 0x8f, 0xf7, 0x8e, 0xf9, 0x8d, 0xf9, + 0xba, 0xfb, 0xb9, 0xfb, 0x07, 0xfe, 0x06, 0xfe, 0x78, 0x00, 0x77, 0x00, + 0xf6, 0x02, 0xf6, 0x02, 0x83, 0x05, 0x81, 0x05, 0x11, 0x08, 0x11, 0x08, + 0x97, 0x0a, 0x95, 0x0a, 0x0c, 0x0d, 0x0d, 0x0d, 0x67, 0x0f, 0x66, 0x0f, + 0x9f, 0x11, 0x9e, 0x11, 0xac, 0x13, 0xaa, 0x13, 0x84, 0x15, 0x83, 0x15, + 0x23, 0x17, 0x21, 0x17, 0x80, 0x18, 0x7f, 0x18, 0x97, 0x19, 0x96, 0x19, + 0x66, 0x1a, 0x64, 0x1a, 0xe5, 0x1a, 0xe6, 0x1a, 0x1a, 0x1b, 0x19, 0x1b, + 0x00, 0x1b, 0xfe, 0x1a, 0x9a, 0x1a, 0x99, 0x1a, 0xe9, 0x19, 0xe9, 0x19, + 0xf7, 0x18, 0xf5, 0x18, 0xc3, 0x17, 0xc3, 0x17, 0x59, 0x16, 0x57, 0x16, + 0xbe, 0x14, 0xbe, 0x14, 0xf9, 0x12, 0xfa, 0x12, 0x1a, 0x11, 0x17, 0x11, + 0x23, 0x0f, 0x25, 0x0f, 0x1f, 0x0d, 0x1e, 0x0d, 0x1c, 0x0b, 0x1b, 0x0b, + 0x1f, 0x09, 0x20, 0x09, 0x38, 0x07, 0x36, 0x07, 0x6c, 0x05, 0x6d, 0x05, + 0xc6, 0x03, 0xc3, 0x03, 0x4d, 0x02, 0x4e, 0x02, 0x0c, 0x01, 0x0b, 0x01, + 0x03, 0x00, 0x02, 0x00, 0x3e, 0xff, 0x3c, 0xff, 0xb6, 0xfe, 0xb6, 0xfe, + 0x7b, 0xfe, 0x78, 0xfe, 0x7e, 0xfe, 0x80, 0xfe, 0xcc, 0xfe, 0xc9, 0xfe, + 0x59, 0xff, 0x59, 0xff, 0x25, 0x00, 0x26, 0x00, 0x2f, 0x01, 0x2c, 0x01, + 0x66, 0x02, 0x68, 0x02, 0xd2, 0x03, 0xd1, 0x03, 0x62, 0x05, 0x61, 0x05, + 0x10, 0x07, 0x0f, 0x07, 0xd7, 0x08, 0xd6, 0x08, 0xaa, 0x0a, 0xab, 0x0a, + 0x83, 0x0c, 0x82, 0x0c, 0x5e, 0x0e, 0x5d, 0x0e, 0x26, 0x10, 0x27, 0x10, + 0xe2, 0x11, 0xe2, 0x11, 0x7c, 0x13, 0x7c, 0x13, 0xf4, 0x14, 0xf2, 0x14, + 0x41, 0x16, 0x43, 0x16, 0x57, 0x17, 0x55, 0x17, 0x37, 0x18, 0x38, 0x18, + 0xd5, 0x18, 0xd5, 0x18, 0x30, 0x19, 0x31, 0x19, 0x46, 0x19, 0x46, 0x19, + 0x10, 0x19, 0x11, 0x19, 0x95, 0x18, 0x95, 0x18, 0xd3, 0x17, 0xd1, 0x17, + 0xc6, 0x16, 0xc8, 0x16, 0x7b, 0x15, 0x79, 0x15, 0xf1, 0x13, 0xf2, 0x13, + 0x34, 0x12, 0x34, 0x12, 0x48, 0x10, 0x49, 0x10, 0x37, 0x0e, 0x36, 0x0e, + 0x09, 0x0c, 0x08, 0x0c, 0xc5, 0x09, 0xc5, 0x09, 0x78, 0x07, 0x79, 0x07, + 0x2d, 0x05, 0x2c, 0x05, 0xeb, 0x02, 0xee, 0x02, 0xbe, 0x00, 0xbd, 0x00, + 0xab, 0xfe, 0xad, 0xfe, 0xbf, 0xfc, 0xbe, 0xfc, 0x01, 0xfb, 0x03, 0xfb, + 0x78, 0xf9, 0x78, 0xf9, 0x26, 0xf8, 0x26, 0xf8, 0x15, 0xf7, 0x15, 0xf7, + 0x41, 0xf6, 0x43, 0xf6, 0xb8, 0xf5, 0xb8, 0xf5, 0x6f, 0xf5, 0x71, 0xf5, + 0x6d, 0xf5, 0x6d, 0xf5, 0xac, 0xf5, 0xab, 0xf5, 0x29, 0xf6, 0x2b, 0xf6, + 0xe4, 0xf6, 0xe3, 0xf6, 0xd0, 0xf7, 0xd0, 0xf7, 0xee, 0xf8, 0xef, 0xf8, + 0x37, 0xfa, 0x34, 0xfa, 0x9b, 0xfb, 0x9e, 0xfb, 0x1d, 0xfd, 0x1c, 0xfd, + 0xaa, 0xfe, 0xaa, 0xfe, 0x3e, 0x00, 0x3d, 0x00, 0xd1, 0x01, 0xd0, 0x01, + 0x52, 0x03, 0x50, 0x03, 0xbd, 0x04, 0xbe, 0x04, 0x09, 0x06, 0x06, 0x06, + 0x25, 0x07, 0x25, 0x07, 0x12, 0x08, 0x12, 0x08, 0xc1, 0x08, 0xbf, 0x08, + 0x30, 0x09, 0x30, 0x09, 0x58, 0x09, 0x55, 0x09, 0x33, 0x09, 0x36, 0x09, + 0xc9, 0x08, 0xc6, 0x08, 0x10, 0x08, 0x11, 0x08, 0x11, 0x07, 0x0f, 0x07, + 0xcd, 0x05, 0xcd, 0x05, 0x47, 0x04, 0x45, 0x04, 0x86, 0x02, 0x86, 0x02, + 0x93, 0x00, 0x92, 0x00, 0x70, 0xfe, 0x70, 0xfe, 0x2d, 0xfc, 0x2c, 0xfc, + 0xc9, 0xf9, 0xc8, 0xf9, 0x55, 0xf7, 0x54, 0xf7, 0xd4, 0xf4, 0xd2, 0xf4, + 0x53, 0xf2, 0x53, 0xf2, 0xd7, 0xef, 0xd7, 0xef, 0x6f, 0xed, 0x6b, 0xed, + 0x1b, 0xeb, 0x1f, 0xeb, 0xed, 0xe8, 0xea, 0xe8, 0xe6, 0xe6, 0xe5, 0xe6, + 0x11, 0xe5, 0x11, 0xe5, 0x77, 0xe3, 0x76, 0xe3, 0x18, 0xe2, 0x19, 0xe2, + 0x04, 0xe1, 0x04, 0xe1, 0x36, 0xe0, 0x34, 0xe0, 0xb6, 0xdf, 0xb7, 0xdf, + 0x88, 0xdf, 0x87, 0xdf, 0xa6, 0xdf, 0xa7, 0xdf, 0x16, 0xe0, 0x14, 0xe0, + 0xcf, 0xe0, 0xcf, 0xe0, 0xd4, 0xe1, 0xd1, 0xe1, 0x1a, 0xe3, 0x1b, 0xe3, + 0x9d, 0xe4, 0x9a, 0xe4, 0x56, 0xe6, 0x58, 0xe6, 0x39, 0xe8, 0x38, 0xe8, + 0x44, 0xea, 0x44, 0xea, 0x65, 0xec, 0x63, 0xec, 0x97, 0xee, 0x97, 0xee, + 0xcb, 0xf0, 0xcc, 0xf0, 0xfe, 0xf2, 0xfd, 0xf2, 0x1f, 0xf5, 0x1e, 0xf5, + 0x2a, 0xf7, 0x27, 0xf7, 0x10, 0xf9, 0x0f, 0xf9, 0xcc, 0xfa, 0xcd, 0xfa, + 0x5b, 0xfc, 0x59, 0xfc, 0xb1, 0xfd, 0xb1, 0xfd, 0xca, 0xfe, 0xc9, 0xfe, + 0xa6, 0xff, 0xa5, 0xff, 0x3e, 0x00, 0x3e, 0x00, 0x98, 0x00, 0x96, 0x00, + 0xac, 0x00, 0xaa, 0x00, 0x81, 0x00, 0x81, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x7c, 0xff, 0x79, 0xff, 0xaa, 0xfe, 0xaa, 0xfe, 0xab, 0xfd, 0xa8, 0xfd, + 0x86, 0xfc, 0x86, 0xfc, 0x44, 0xfb, 0x42, 0xfb, 0xe7, 0xf9, 0xe6, 0xf9, + 0x7f, 0xf8, 0x7e, 0xf8, 0x0e, 0xf7, 0x0c, 0xf7, 0xa3, 0xf5, 0xa1, 0xf5, + 0x46, 0xf4, 0x44, 0xf4, 0xfa, 0xf2, 0xf9, 0xf2, 0xd1, 0xf1, 0xce, 0xf1, + 0xcc, 0xf0, 0xcb, 0xf0, 0xfa, 0xef, 0xf8, 0xef, 0x5b, 0xef, 0x5c, 0xef, + 0xfe, 0xee, 0xfc, 0xee, 0xdf, 0xee, 0xe0, 0xee, 0x0b, 0xef, 0x0a, 0xef, + 0x7e, 0xef, 0x7e, 0xef, 0x3f, 0xf0, 0x3f, 0xf0, 0x48, 0xf1, 0x47, 0xf1, + 0x9c, 0xf2, 0x9a, 0xf2, 0x2e, 0xf4, 0x2f, 0xf4, 0x03, 0xf6, 0x03, 0xf6, + 0x0c, 0xf8, 0x0c, 0xf8, 0x46, 0xfa, 0x46, 0xfa, 0xa9, 0xfc, 0xa7, 0xfc, + 0x28, 0xff, 0x27, 0xff, 0xba, 0x01, 0xbc, 0x01, 0x5b, 0x04, 0x59, 0x04, + 0xfd, 0x06, 0xfc, 0x06, 0x94, 0x09, 0x95, 0x09, 0x19, 0x0c, 0x18, 0x0c, + 0x84, 0x0e, 0x84, 0x0e, 0xc8, 0x10, 0xc7, 0x10, 0xde, 0x12, 0xdd, 0x12, + 0xbe, 0x14, 0xbd, 0x14, 0x60, 0x16, 0x60, 0x16, 0xc0, 0x17, 0xbe, 0x17, + 0xd3, 0x18, 0xd4, 0x18, 0x9f, 0x19, 0x9d, 0x19, 0x15, 0x1a, 0x15, 0x1a, + 0x3e, 0x1a, 0x3f, 0x1a, 0x16, 0x1a, 0x15, 0x1a, 0xa1, 0x19, 0xa0, 0x19, + 0xdf, 0x18, 0xdf, 0x18, 0xd8, 0x17, 0xd8, 0x17, 0x94, 0x16, 0x92, 0x16, + 0x13, 0x15, 0x14, 0x15, 0x67, 0x13, 0x65, 0x13, 0x8f, 0x11, 0x90, 0x11, + 0x9d, 0x0f, 0x9d, 0x0f, 0x95, 0x0d, 0x94, 0x0d, 0x82, 0x0b, 0x84, 0x0b, + 0x76, 0x09, 0x72, 0x09, 0x6e, 0x07, 0x6d, 0x07, 0x81, 0x05, 0x80, 0x05, + 0xb2, 0x03, 0xb2, 0x03, 0x10, 0x02, 0x0f, 0x02, 0x9f, 0x00, 0x9e, 0x00, + 0x6a, 0xff, 0x68, 0xff, 0x72, 0xfe, 0x71, 0xfe, 0xc0, 0xfd, 0xc1, 0xfd, + 0x57, 0xfd, 0x54, 0xfd, 0x33, 0xfd, 0x36, 0xfd, 0x62, 0xfd, 0x5f, 0xfd, + 0xcf, 0xfd, 0xd0, 0xfd, 0x8a, 0xfe, 0x88, 0xfe, 0x7f, 0xff, 0x7f, 0xff, + 0xb4, 0x00, 0xb2, 0x00, 0x1c, 0x02, 0x1a, 0x02, 0xb1, 0x03, 0xb1, 0x03, + 0x6f, 0x05, 0x6e, 0x05, 0x49, 0x07, 0x49, 0x07, 0x38, 0x09, 0x37, 0x09, + 0x35, 0x0b, 0x34, 0x0b, 0x33, 0x0d, 0x34, 0x0d, 0x30, 0x0f, 0x2e, 0x0f, + 0x1a, 0x11, 0x1b, 0x11, 0xf0, 0x12, 0xee, 0x12, 0xa3, 0x14, 0xa3, 0x14, + 0x2e, 0x16, 0x2f, 0x16, 0x89, 0x17, 0x87, 0x17, 0xab, 0x18, 0xad, 0x18, + 0x90, 0x19, 0x8f, 0x19, 0x31, 0x1a, 0x32, 0x1a, 0x88, 0x1a, 0x89, 0x1a, + 0x97, 0x1a, 0x95, 0x1a, 0x55, 0x1a, 0x58, 0x1a, 0xca, 0x19, 0xc7, 0x19, + 0xef, 0x18, 0xf3, 0x18, 0xd0, 0x17, 0xcd, 0x17, 0x6b, 0x16, 0x6d, 0x16, + 0xc7, 0x14, 0xc6, 0x14, 0xee, 0x12, 0xef, 0x12, 0xe7, 0x10, 0xe7, 0x10, + 0xb8, 0x0e, 0xb8, 0x0e, 0x72, 0x0c, 0x71, 0x0c, 0x14, 0x0a, 0x15, 0x0a, + 0xb5, 0x07, 0xb5, 0x07, 0x55, 0x05, 0x55, 0x05, 0x07, 0x03, 0x06, 0x03, + 0xce, 0x00, 0xcf, 0x00, 0xb6, 0xfe, 0xb4, 0xfe, 0xcc, 0xfc, 0xcd, 0xfc, + 0x11, 0xfb, 0x10, 0xfb, 0x94, 0xf9, 0x92, 0xf9, 0x4b, 0xf8, 0x4c, 0xf8, + 0x51, 0xf7, 0x4f, 0xf7, 0x96, 0xf6, 0x97, 0xf6, 0x26, 0xf6, 0x25, 0xf6, + 0xfe, 0xf5, 0xfe, 0xf5, 0x1a, 0xf6, 0x1a, 0xf6, 0x7c, 0xf6, 0x7d, 0xf6, + 0x1e, 0xf7, 0x1c, 0xf7, 0xfb, 0xf7, 0xfb, 0xf7, 0x0e, 0xf9, 0x0e, 0xf9, + 0x51, 0xfa, 0x4e, 0xfa, 0xb6, 0xfb, 0xb7, 0xfb, 0x3e, 0xfd, 0x3d, 0xfd, + 0xd9, 0xfe, 0xd8, 0xfe, 0x81, 0x00, 0x80, 0x00, 0x2c, 0x02, 0x2c, 0x02, + 0xd0, 0x03, 0xcf, 0x03, 0x60, 0x05, 0x60, 0x05, 0xd6, 0x06, 0xd4, 0x06, + 0x22, 0x08, 0x21, 0x08, 0x3f, 0x09, 0x40, 0x09, 0x27, 0x0a, 0x23, 0x0a, + 0xc5, 0x0a, 0xc6, 0x0a, 0x25, 0x0b, 0x21, 0x0b, 0x2f, 0x0b, 0x2d, 0x0b, + 0xf1, 0x0a, 0xf0, 0x0a, 0x5d, 0x0a, 0x5b, 0x0a, 0x7d, 0x09, 0x7b, 0x09, + 0x4f, 0x08, 0x4d, 0x08, 0xd6, 0x06, 0xd4, 0x06, 0x1e, 0x05, 0x1d, 0x05, + 0x24, 0x03, 0x21, 0x03, 0xf9, 0x00, 0xf8, 0x00, 0xa0, 0xfe, 0x9e, 0xfe, + 0x24, 0xfc, 0x23, 0xfc, 0x8f, 0xf9, 0x8c, 0xf9, 0xe7, 0xf6, 0xe6, 0xf6, + 0x39, 0xf4, 0x38, 0xf4, 0x8f, 0xf1, 0x8d, 0xf1, 0xef, 0xee, 0xed, 0xee, + 0x65, 0xec, 0x63, 0xec, 0xfb, 0xe9, 0xfb, 0xe9, 0xba, 0xe7, 0xb8, 0xe7, + 0xa8, 0xe5, 0xa8, 0xe5, 0xd3, 0xe3, 0xd2, 0xe3, 0x3e, 0xe2, 0x3b, 0xe2, + 0xee, 0xe0, 0xee, 0xe0, 0xea, 0xdf, 0xe7, 0xdf, 0x3b, 0xdf, 0x3c, 0xdf, + 0xdb, 0xde, 0xd9, 0xde, 0xd5, 0xde, 0xd3, 0xde, 0x1e, 0xdf, 0x1e, 0xdf, + 0xbe, 0xdf, 0xba, 0xdf, 0xaa, 0xe0, 0xa9, 0xe0, 0xde, 0xe1, 0xdd, 0xe1, + 0x5a, 0xe3, 0x57, 0xe3, 0x0d, 0xe5, 0x0c, 0xe5, 0xf3, 0xe6, 0xf1, 0xe6, + 0x04, 0xe9, 0x01, 0xe9, 0x30, 0xeb, 0x30, 0xeb, 0x76, 0xed, 0x74, 0xed, + 0xc0, 0xef, 0xbd, 0xef, 0x08, 0xf2, 0x07, 0xf2, 0x46, 0xf4, 0x45, 0xf4, + 0x6a, 0xf6, 0x67, 0xf6, 0x6e, 0xf8, 0x6d, 0xf8, 0x49, 0xfa, 0x47, 0xfa, + 0xee, 0xfb, 0xed, 0xfb, 0x61, 0xfd, 0x60, 0xfd, 0x8b, 0xfe, 0x89, 0xfe, + 0x7d, 0xff, 0x7b, 0xff, 0x1f, 0x00, 0x21, 0x00, 0x85, 0x00, 0x80, 0x00, + 0x9b, 0x00, 0x9b, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x55, 0xff, 0x56, 0xff, 0x75, 0xfe, 0x72, 0xfe, 0x5c, 0xfd, 0x59, 0xfd, + 0x1c, 0xfc, 0x1c, 0xfc, 0xb9, 0xfa, 0xb8, 0xfa, 0x3a, 0xf9, 0x38, 0xf9, + 0xac, 0xf7, 0xab, 0xf7, 0x10, 0xf6, 0x0e, 0xf6, 0x78, 0xf4, 0x77, 0xf4, + 0xea, 0xf2, 0xe9, 0xf2, 0x71, 0xf1, 0x6f, 0xf1, 0x16, 0xf0, 0x16, 0xf0, + 0xe2, 0xee, 0xdf, 0xee, 0xe0, 0xed, 0xe0, 0xed, 0x15, 0xed, 0x12, 0xed, + 0x8a, 0xec, 0x88, 0xec, 0x44, 0xec, 0x44, 0xec, 0x4a, 0xec, 0x45, 0xec, + 0x9e, 0xec, 0xa0, 0xec, 0x43, 0xed, 0x3f, 0xed, 0x37, 0xee, 0x36, 0xee, + 0x77, 0xef, 0x76, 0xef, 0x06, 0xf1, 0x04, 0xf1, 0xd4, 0xf2, 0xd2, 0xf2, + 0xe4, 0xf4, 0xe1, 0xf4, 0x27, 0xf7, 0x26, 0xf7, 0x97, 0xf9, 0x96, 0xf9, + 0x2d, 0xfc, 0x2c, 0xfc, 0xd8, 0xfe, 0xd8, 0xfe, 0x99, 0x01, 0x96, 0x01, + 0x58, 0x04, 0x59, 0x04, 0x17, 0x07, 0x13, 0x07, 0xc2, 0x09, 0xc3, 0x09, + 0x54, 0x0c, 0x51, 0x0c, 0xc0, 0x0e, 0xc0, 0x0e, 0x00, 0x11, 0xfe, 0x10, + 0x0a, 0x13, 0x09, 0x13, 0xd3, 0x14, 0xd1, 0x14, 0x55, 0x16, 0x56, 0x16, + 0x8e, 0x17, 0x8c, 0x17, 0x72, 0x18, 0x71, 0x18, 0x09, 0x19, 0x08, 0x19, + 0x43, 0x19, 0x45, 0x19, 0x30, 0x19, 0x2e, 0x19, 0xc6, 0x18, 0xc7, 0x18, + 0x0e, 0x18, 0x0d, 0x18, 0x0d, 0x17, 0x0d, 0x17, 0xc8, 0x15, 0xc7, 0x15, + 0x48, 0x14, 0x47, 0x14, 0x93, 0x12, 0x91, 0x12, 0xb3, 0x10, 0xb2, 0x10, + 0xb3, 0x0e, 0xb2, 0x0e, 0x9e, 0x0c, 0x9b, 0x0c, 0x7c, 0x0a, 0x7b, 0x0a, + 0x59, 0x08, 0x56, 0x08, 0x41, 0x06, 0x40, 0x06, 0x41, 0x04, 0x3f, 0x04, + 0x5e, 0x02, 0x5b, 0x02, 0xaa, 0x00, 0xa9, 0x00, 0x29, 0xff, 0x28, 0xff, + 0xe7, 0xfd, 0xe5, 0xfd, 0xe5, 0xfc, 0xe5, 0xfc, 0x31, 0xfc, 0x2e, 0xfc, + 0xc3, 0xfb, 0xc4, 0xfb, 0xac, 0xfb, 0xa9, 0xfb, 0xde, 0xfb, 0xdd, 0xfb, + 0x61, 0xfc, 0x5d, 0xfc, 0x2b, 0xfd, 0x2d, 0xfd, 0x3c, 0xfe, 0x39, 0xfe, + 0x8f, 0xff, 0x8f, 0xff, 0x19, 0x01, 0x16, 0x01, 0xd5, 0x02, 0xd4, 0x02, + 0xbd, 0x04, 0xbb, 0x04, 0xc2, 0x06, 0xc1, 0x06, 0xe2, 0x08, 0xe1, 0x08, + 0x0d, 0x0b, 0x0b, 0x0b, 0x3f, 0x0d, 0x3c, 0x0d, 0x6b, 0x0f, 0x6c, 0x0f, + 0x89, 0x11, 0x85, 0x11, 0x8c, 0x13, 0x8d, 0x13, 0x72, 0x15, 0x6e, 0x15, + 0x2b, 0x17, 0x2d, 0x17, 0xb2, 0x18, 0xad, 0x18, 0xff, 0x19, 0xff, 0x19, + 0x0a, 0x1b, 0x05, 0x1b, 0xca, 0x1b, 0xca, 0x1b, 0x42, 0x1c, 0x3e, 0x1c, + 0x65, 0x1c, 0x65, 0x1c, 0x3d, 0x1c, 0x3a, 0x1c, 0xbb, 0x1b, 0xba, 0x1b, + 0xef, 0x1a, 0xeb, 0x1a, 0xd2, 0x19, 0xd3, 0x19, 0x6d, 0x18, 0x68, 0x18, + 0xc7, 0x16, 0xc8, 0x16, 0xe5, 0x14, 0xe1, 0x14, 0xd2, 0x12, 0xd2, 0x12, + 0x95, 0x10, 0x94, 0x10, 0x3b, 0x0e, 0x39, 0x0e, 0xce, 0x0b, 0xce, 0x0b, + 0x55, 0x09, 0x54, 0x09, 0xe5, 0x06, 0xe3, 0x06, 0x7f, 0x04, 0x7d, 0x04, + 0x31, 0x02, 0x31, 0x02, 0x09, 0x00, 0x07, 0x00, 0x08, 0xfe, 0x08, 0xfe, + 0x42, 0xfc, 0x41, 0xfc, 0xb4, 0xfa, 0xb3, 0xfa, 0x6b, 0xf9, 0x6a, 0xf9, + 0x65, 0xf8, 0x63, 0xf8, 0xab, 0xf7, 0xaa, 0xf7, 0x3c, 0xf7, 0x3b, 0xf7, + 0x19, 0xf7, 0x17, 0xf7, 0x40, 0xf7, 0x40, 0xf7, 0xaf, 0xf7, 0xae, 0xf7, + 0x60, 0xf8, 0x5e, 0xf8, 0x55, 0xf9, 0x53, 0xf9, 0x7b, 0xfa, 0x78, 0xfa, + 0xd5, 0xfb, 0xd6, 0xfb, 0x5a, 0xfd, 0x57, 0xfd, 0xfa, 0xfe, 0xf9, 0xfe, + 0xb6, 0x00, 0xb5, 0x00, 0x7c, 0x02, 0x79, 0x02, 0x43, 0x04, 0x43, 0x04, + 0x06, 0x06, 0x02, 0x06, 0xb2, 0x07, 0xb0, 0x07, 0x44, 0x09, 0x41, 0x09, + 0xab, 0x0a, 0xa8, 0x0a, 0xde, 0x0b, 0xde, 0x0b, 0xd8, 0x0c, 0xd6, 0x0c, + 0x8a, 0x0d, 0x8a, 0x0d, 0xf2, 0x0d, 0xf1, 0x0d, 0x06, 0x0e, 0x04, 0x0e, + 0xc8, 0x0d, 0xc7, 0x0d, 0x33, 0x0d, 0x31, 0x0d, 0x49, 0x0c, 0x49, 0x0c, + 0x0f, 0x0b, 0x0f, 0x0b, 0x85, 0x09, 0x84, 0x09, 0xb7, 0x07, 0xb7, 0x07, + 0xa6, 0x05, 0xa5, 0x05, 0x5e, 0x03, 0x5e, 0x03, 0xe8, 0x00, 0xe8, 0x00, + 0x4a, 0xfe, 0x49, 0xfe, 0x92, 0xfb, 0x93, 0xfb, 0xc7, 0xf8, 0xc5, 0xf8, + 0xf4, 0xf5, 0xf2, 0xf5, 0x22, 0xf3, 0x22, 0xf3, 0x5f, 0xf0, 0x5e, 0xf0, + 0xb0, 0xed, 0xaf, 0xed, 0x26, 0xeb, 0x23, 0xeb, 0xc0, 0xe8, 0xc0, 0xe8, + 0x90, 0xe6, 0x8d, 0xe6, 0x9c, 0xe4, 0x9a, 0xe4, 0xea, 0xe2, 0xe9, 0xe2, + 0x83, 0xe1, 0x81, 0xe1, 0x6e, 0xe0, 0x6b, 0xe0, 0xab, 0xdf, 0xa8, 0xdf, + 0x40, 0xdf, 0x3f, 0xdf, 0x2d, 0xdf, 0x2a, 0xdf, 0x72, 0xdf, 0x71, 0xdf, + 0x0e, 0xe0, 0x0c, 0xe0, 0xfc, 0xe0, 0xf9, 0xe0, 0x35, 0xe2, 0x32, 0xe2, + 0xb5, 0xe3, 0xb4, 0xe3, 0x72, 0xe5, 0x70, 0xe5, 0x65, 0xe7, 0x62, 0xe7, + 0x80, 0xe9, 0x7e, 0xe9, 0xbe, 0xeb, 0xbb, 0xeb, 0x08, 0xee, 0x08, 0xee, + 0x65, 0xf0, 0x62, 0xf0, 0xb8, 0xf2, 0xb5, 0xf2, 0xfe, 0xf4, 0xfc, 0xf4, + 0x2e, 0xf7, 0x2a, 0xf7, 0x34, 0xf9, 0x32, 0xf9, 0x11, 0xfb, 0x0f, 0xfb, + 0xb7, 0xfc, 0xb4, 0xfc, 0x1f, 0xfe, 0x1e, 0xfe, 0x48, 0xff, 0x45, 0xff, + 0x28, 0x00, 0x25, 0x00, 0xbd, 0x00, 0xbc, 0x00, 0x0b, 0x01, 0x08, 0x01, + 0x0b, 0x01, 0x0a, 0x01, 0xc5, 0x00, 0xc4, 0x00, 0x38, 0x00, 0x35, 0x00, + 0x6d, 0xff, 0x6d, 0xff, 0x68, 0xfe, 0x65, 0xfe, 0x2e, 0xfd, 0x2c, 0xfd, + 0xca, 0xfb, 0xc7, 0xfb, 0x3d, 0xfa, 0x3c, 0xfa, 0x9b, 0xf8, 0x99, 0xf8, + 0xe1, 0xf6, 0xe0, 0xf6, 0x21, 0xf5, 0x20, 0xf5, 0x64, 0xf3, 0x63, 0xf3, + 0xac, 0xf1, 0xab, 0xf1, 0x13, 0xf0, 0x11, 0xf0, 0x8f, 0xee, 0x8d, 0xee, + 0x3a, 0xed, 0x39, 0xed, 0x15, 0xec, 0x13, 0xec, 0x2d, 0xeb, 0x2c, 0xeb, + 0x86, 0xea, 0x84, 0xea, 0x29, 0xea, 0x28, 0xea, 0x1c, 0xea, 0x18, 0xea, + 0x5d, 0xea, 0x5c, 0xea, 0xf5, 0xea, 0xf4, 0xea, 0xe2, 0xeb, 0xe0, 0xeb, + 0x1e, 0xed, 0x1e, 0xed, 0xaf, 0xee, 0xaf, 0xee, 0x82, 0xf0, 0x7f, 0xf0, + 0x9d, 0xf2, 0x9b, 0xf2, 0xec, 0xf4, 0xeb, 0xf4, 0x71, 0xf7, 0x6f, 0xf7, + 0x1b, 0xfa, 0x19, 0xfa, 0xdf, 0xfc, 0xdc, 0xfc, 0xb4, 0xff, 0xb4, 0xff, + 0x92, 0x02, 0x8f, 0x02, 0x67, 0x05, 0x67, 0x05, 0x2f, 0x08, 0x2c, 0x08, + 0xdb, 0x0a, 0xda, 0x0a, 0x5f, 0x0d, 0x5e, 0x0d, 0xb4, 0x0f, 0xb1, 0x0f, + 0xd2, 0x11, 0xd1, 0x11, 0xad, 0x13, 0xab, 0x13, 0x41, 0x15, 0x3f, 0x15, + 0x82, 0x16, 0x80, 0x16, 0x70, 0x17, 0x6f, 0x17, 0x08, 0x18, 0x06, 0x18, + 0x49, 0x18, 0x48, 0x18, 0x32, 0x18, 0x2f, 0x18, 0xc5, 0x17, 0xc4, 0x17, + 0x0a, 0x17, 0x07, 0x17, 0xfd, 0x15, 0xfd, 0x15, 0xb2, 0x14, 0xb0, 0x14, + 0x24, 0x13, 0x22, 0x13, 0x65, 0x11, 0x61, 0x11, 0x78, 0x0f, 0x76, 0x0f, + 0x67, 0x0d, 0x65, 0x0d, 0x45, 0x0b, 0x42, 0x0b, 0x0f, 0x09, 0x0e, 0x09, + 0xe0, 0x06, 0xde, 0x06, 0xb7, 0x04, 0xb7, 0x04, 0xa9, 0x02, 0xa6, 0x02, + 0xb9, 0x00, 0xb8, 0x00, 0xfb, 0xfe, 0xf8, 0xfe, 0x70, 0xfd, 0x6e, 0xfd, + 0x27, 0xfc, 0x26, 0xfc, 0x28, 0xfb, 0x26, 0xfb, 0x71, 0xfa, 0x70, 0xfa, + 0x10, 0xfa, 0x0e, 0xfa, 0xfe, 0xf9, 0xfc, 0xf9, 0x41, 0xfa, 0x3f, 0xfa, + 0xd6, 0xfa, 0xd4, 0xfa, 0xba, 0xfb, 0xb8, 0xfb, 0xe4, 0xfc, 0xe4, 0xfc, + 0x57, 0xfe, 0x53, 0xfe, 0x00, 0x00, 0xfe, 0xff, 0xe0, 0x01, 0xdf, 0x01, + 0xeb, 0x03, 0xe7, 0x03, 0x17, 0x06, 0x16, 0x06, 0x5b, 0x08, 0x59, 0x08, + 0xaf, 0x0a, 0xac, 0x0a, 0x05, 0x0d, 0x05, 0x0d, 0x59, 0x0f, 0x56, 0x0f, + 0x99, 0x11, 0x99, 0x11, 0xc6, 0x13, 0xc4, 0x13, 0xcd, 0x15, 0xcc, 0x15, + 0xa7, 0x17, 0xa5, 0x17, 0x4f, 0x19, 0x4f, 0x19, 0xb9, 0x1a, 0xb8, 0x1a, + 0xe0, 0x1b, 0xdf, 0x1b, 0xbc, 0x1c, 0xbb, 0x1c, 0x45, 0x1d, 0x45, 0x1d, + 0x80, 0x1d, 0x7f, 0x1d, 0x62, 0x1d, 0x60, 0x1d, 0xf0, 0x1c, 0xee, 0x1c, + 0x2c, 0x1c, 0x2b, 0x1c, 0x16, 0x1b, 0x14, 0x1b, 0xb4, 0x19, 0xb3, 0x19, + 0x0e, 0x18, 0x0b, 0x18, 0x27, 0x16, 0x28, 0x16, 0x11, 0x14, 0x0f, 0x14, + 0xcb, 0x11, 0xcd, 0x11, 0x68, 0x0f, 0x67, 0x0f, 0xef, 0x0c, 0xf1, 0x0c, + 0x6d, 0x0a, 0x6b, 0x0a, 0xed, 0x07, 0xed, 0x07, 0x7c, 0x05, 0x7a, 0x05, + 0x22, 0x03, 0x22, 0x03, 0xec, 0x00, 0xea, 0x00, 0xe3, 0xfe, 0xe3, 0xfe, + 0x11, 0xfd, 0x10, 0xfd, 0x7d, 0xfb, 0x7b, 0xfb, 0x2c, 0xfa, 0x2b, 0xfa, + 0x24, 0xf9, 0x22, 0xf9, 0x67, 0xf8, 0x67, 0xf8, 0xf7, 0xf7, 0xf6, 0xf7, + 0xd8, 0xf7, 0xd8, 0xf7, 0x02, 0xf8, 0x01, 0xf8, 0x77, 0xf8, 0x77, 0xf8, + 0x33, 0xf9, 0x32, 0xf9, 0x2a, 0xfa, 0x28, 0xfa, 0x5f, 0xfb, 0x5f, 0xfb, + 0xc4, 0xfc, 0xc3, 0xfc, 0x50, 0xfe, 0x53, 0xfe, 0x03, 0x00, 0x03, 0x00, + 0xcb, 0x01, 0xcb, 0x01, 0xa4, 0x03, 0xa2, 0x03, 0x7a, 0x05, 0x7b, 0x05, + 0x52, 0x07, 0x50, 0x07, 0x10, 0x09, 0x10, 0x09, 0xb5, 0x0a, 0xb2, 0x0a, + 0x30, 0x0c, 0x33, 0x0c, 0x79, 0x0d, 0x76, 0x0d, 0x8a, 0x0e, 0x8a, 0x0e, + 0x4f, 0x0f, 0x51, 0x0f, 0xd0, 0x0f, 0xcf, 0x0f, 0xf7, 0x0f, 0xf6, 0x0f, + 0xc6, 0x0f, 0xc6, 0x0f, 0x42, 0x0f, 0x41, 0x0f, 0x5f, 0x0e, 0x61, 0x0e, + 0x2b, 0x0d, 0x2a, 0x0d, 0xa1, 0x0b, 0xa1, 0x0b, 0xcd, 0x09, 0xcd, 0x09, + 0xb3, 0x07, 0xb4, 0x07, 0x5e, 0x05, 0x5d, 0x05, 0xd5, 0x02, 0xd5, 0x02, + 0x24, 0x00, 0x22, 0x00, 0x52, 0xfd, 0x52, 0xfd, 0x6b, 0xfa, 0x6c, 0xfa, + 0x7b, 0xf7, 0x7b, 0xf7, 0x8d, 0xf4, 0x8b, 0xf4, 0xa8, 0xf1, 0xaa, 0xf1, + 0xdb, 0xee, 0xd8, 0xee, 0x2d, 0xec, 0x2d, 0xec, 0xa7, 0xe9, 0xa8, 0xe9, + 0x5a, 0xe7, 0x59, 0xe7, 0x45, 0xe5, 0x45, 0xe5, 0x76, 0xe3, 0x76, 0xe3, + 0xf4, 0xe1, 0xf3, 0xe1, 0xc0, 0xe0, 0xc1, 0xe0, 0xe8, 0xdf, 0xe7, 0xdf, + 0x66, 0xdf, 0x65, 0xdf, 0x3f, 0xdf, 0x41, 0xdf, 0x75, 0xdf, 0x73, 0xdf, + 0xff, 0xdf, 0x00, 0xe0, 0xdf, 0xe0, 0xdf, 0xe0, 0x10, 0xe2, 0x0e, 0xe2, + 0x84, 0xe3, 0x87, 0xe3, 0x41, 0xe5, 0x3e, 0xe5, 0x2b, 0xe7, 0x2d, 0xe7, + 0x46, 0xe9, 0x47, 0xe9, 0x82, 0xeb, 0x80, 0xeb, 0xd0, 0xed, 0xd1, 0xed, + 0x2e, 0xf0, 0x2c, 0xf0, 0x83, 0xf2, 0x85, 0xf2, 0xd2, 0xf4, 0xce, 0xf4, + 0x02, 0xf7, 0x03, 0xf7, 0x11, 0xf9, 0x0f, 0xf9, 0xf4, 0xfa, 0xf4, 0xfa, + 0x9d, 0xfc, 0x9d, 0xfc, 0x0e, 0xfe, 0x0c, 0xfe, 0x34, 0xff, 0x35, 0xff, + 0x18, 0x00, 0x17, 0x00, 0xab, 0x00, 0xad, 0x00, 0xf4, 0x00, 0xf3, 0x00, + 0xef, 0x00, 0xf0, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x31, 0xff, 0x30, 0xff, 0x19, 0xfe, 0x1c, 0xfe, 0xce, 0xfc, 0xce, 0xfc, + 0x52, 0xfb, 0x52, 0xfb, 0xb2, 0xf9, 0xb2, 0xf9, 0xf5, 0xf7, 0xf6, 0xf7, + 0x23, 0xf6, 0x23, 0xf6, 0x47, 0xf4, 0x49, 0xf4, 0x6b, 0xf2, 0x6a, 0xf2, + 0x9a, 0xf0, 0x9b, 0xf0, 0xdd, 0xee, 0xdd, 0xee, 0x3d, 0xed, 0x3e, 0xed, + 0xca, 0xeb, 0xc9, 0xeb, 0x82, 0xea, 0x83, 0xea, 0x7d, 0xe9, 0x7b, 0xe9, + 0xb4, 0xe8, 0xb5, 0xe8, 0x39, 0xe8, 0x36, 0xe8, 0x0d, 0xe8, 0x0e, 0xe8, + 0x33, 0xe8, 0x31, 0xe8, 0xaf, 0xe8, 0xb0, 0xe8, 0x84, 0xe9, 0x84, 0xe9, + 0xad, 0xea, 0xab, 0xea, 0x25, 0xec, 0x27, 0xec, 0xed, 0xed, 0xed, 0xed, + 0xfa, 0xef, 0xf8, 0xef, 0x43, 0xf2, 0x44, 0xf2, 0xc1, 0xf4, 0xc0, 0xf4, + 0x6c, 0xf7, 0x6b, 0xf7, 0x32, 0xfa, 0x31, 0xfa, 0x0f, 0xfd, 0x0d, 0xfd, + 0xf3, 0xff, 0xf4, 0xff, 0xd9, 0x02, 0xd7, 0x02, 0xae, 0x05, 0xad, 0x05, + 0x6a, 0x08, 0x6b, 0x08, 0x06, 0x0b, 0x06, 0x0b, 0x72, 0x0d, 0x71, 0x0d, + 0xa8, 0x0f, 0xa6, 0x0f, 0x9b, 0x11, 0x9a, 0x11, 0x45, 0x13, 0x44, 0x13, + 0xa3, 0x14, 0xa5, 0x14, 0xac, 0x15, 0xab, 0x15, 0x5d, 0x16, 0x5d, 0x16, + 0xb7, 0x16, 0xb6, 0x16, 0xb7, 0x16, 0xb6, 0x16, 0x61, 0x16, 0x60, 0x16, + 0xb9, 0x15, 0xb8, 0x15, 0xbe, 0x14, 0xbe, 0x14, 0x83, 0x13, 0x81, 0x13, + 0x01, 0x12, 0x03, 0x12, 0x4f, 0x10, 0x4c, 0x10, 0x67, 0x0e, 0x68, 0x0e, + 0x61, 0x0c, 0x5f, 0x0c, 0x3e, 0x0a, 0x3e, 0x0a, 0x0d, 0x08, 0x0e, 0x08, + 0xdc, 0x05, 0xd9, 0x05, 0xac, 0x03, 0xad, 0x03, 0x97, 0x01, 0x97, 0x01, + 0xa1, 0xff, 0xa0, 0xff, 0xd2, 0xfd, 0xd3, 0xfd, 0x3d, 0xfc, 0x3a, 0xfc, + 0xe1, 0xfa, 0xe2, 0xfa, 0xd4, 0xf9, 0xd3, 0xf9, 0x0d, 0xf9, 0x0f, 0xf9, + 0x9f, 0xf8, 0x9e, 0xf8, 0x81, 0xf8, 0x82, 0xf8, 0xbb, 0xf8, 0xbb, 0xf8, + 0x4b, 0xf9, 0x4c, 0xf9, 0x29, 0xfa, 0x29, 0xfa, 0x58, 0xfb, 0x57, 0xfb, + 0xca, 0xfc, 0xcb, 0xfc, 0x7f, 0xfe, 0x7e, 0xfe, 0x6e, 0x00, 0x6d, 0x00, + 0x88, 0x02, 0x87, 0x02, 0xc9, 0x04, 0xc9, 0x04, 0x27, 0x07, 0x26, 0x07, + 0x97, 0x09, 0x96, 0x09, 0x0e, 0x0c, 0x0b, 0x0c, 0x83, 0x0e, 0x83, 0x0e, + 0xe9, 0x10, 0xe9, 0x10, 0x3e, 0x13, 0x3e, 0x13, 0x6e, 0x15, 0x6e, 0x15, + 0x75, 0x17, 0x74, 0x17, 0x4a, 0x19, 0x4a, 0x19, 0xe2, 0x1a, 0xdf, 0x1a, + 0x37, 0x1c, 0x39, 0x1c, 0x41, 0x1d, 0x41, 0x1d, 0xfd, 0x1d, 0xfc, 0x1d, + 0x5f, 0x1e, 0x61, 0x1e, 0x74, 0x1e, 0x73, 0x1e, 0x29, 0x1e, 0x28, 0x1e, + 0x8c, 0x1d, 0x8b, 0x1d, 0x99, 0x1c, 0x99, 0x1c, 0x58, 0x1b, 0x57, 0x1b, + 0xca, 0x19, 0xca, 0x19, 0xfe, 0x17, 0xfd, 0x17, 0xf8, 0x15, 0xf7, 0x15, + 0xc0, 0x13, 0xbe, 0x13, 0x65, 0x11, 0x64, 0x11, 0xef, 0x0e, 0xef, 0x0e, + 0x6b, 0x0c, 0x6b, 0x0c, 0xe4, 0x09, 0xe5, 0x09, 0x69, 0x07, 0x68, 0x07, + 0x02, 0x05, 0x01, 0x05, 0xba, 0x02, 0xba, 0x02, 0x9d, 0x00, 0x9c, 0x00, + 0xb2, 0xfe, 0xb2, 0xfe, 0x05, 0xfd, 0x04, 0xfd, 0x9b, 0xfb, 0x9b, 0xfb, + 0x78, 0xfa, 0x77, 0xfa, 0xa2, 0xf9, 0xa1, 0xf9, 0x1a, 0xf9, 0x1b, 0xf9, + 0xe2, 0xf8, 0xe1, 0xf8, 0xfb, 0xf8, 0xfa, 0xf8, 0x5a, 0xf9, 0x5b, 0xf9, + 0x08, 0xfa, 0x06, 0xfa, 0xf7, 0xfa, 0xf7, 0xfa, 0x1e, 0xfc, 0x20, 0xfc, + 0x87, 0xfd, 0x85, 0xfd, 0x10, 0xff, 0x12, 0xff, 0xcc, 0x00, 0xcd, 0x00, + 0x9b, 0x02, 0x9b, 0x02, 0x80, 0x04, 0x81, 0x04, 0x6e, 0x06, 0x6e, 0x06, + 0x56, 0x08, 0x54, 0x08, 0x34, 0x0a, 0x35, 0x0a, 0xf4, 0x0b, 0xf4, 0x0b, + 0x96, 0x0d, 0x96, 0x0d, 0x01, 0x0f, 0x03, 0x0f, 0x3c, 0x10, 0x3c, 0x10, + 0x2f, 0x11, 0x31, 0x11, 0xd6, 0x11, 0xd6, 0x11, 0x2f, 0x12, 0x2f, 0x12, + 0x29, 0x12, 0x2a, 0x12, 0xcd, 0x11, 0xcc, 0x11, 0x12, 0x11, 0x13, 0x11, + 0xff, 0x0f, 0xff, 0x0f, 0x94, 0x0e, 0x94, 0x0e, 0xd9, 0x0c, 0xdb, 0x0c, + 0xd4, 0x0a, 0xd2, 0x0a, 0x8a, 0x08, 0x8c, 0x08, 0x09, 0x06, 0x08, 0x06, + 0x57, 0x03, 0x58, 0x03, 0x81, 0x00, 0x81, 0x00, 0x90, 0xfd, 0x90, 0xfd, + 0x90, 0xfa, 0x91, 0xfa, 0x89, 0xf7, 0x88, 0xf7, 0x8b, 0xf4, 0x8b, 0xf4, + 0x99, 0xf1, 0x9b, 0xf1, 0xc8, 0xee, 0xc6, 0xee, 0x18, 0xec, 0x18, 0xec, + 0x9c, 0xe9, 0x9a, 0xe9, 0x55, 0xe7, 0x56, 0xe7, 0x53, 0xe5, 0x50, 0xe5, + 0x96, 0xe3, 0x99, 0xe3, 0x31, 0xe2, 0x2e, 0xe2, 0x1b, 0xe1, 0x1c, 0xe1, + 0x65, 0xe0, 0x65, 0xe0, 0x08, 0xe0, 0x06, 0xe0, 0x08, 0xe0, 0x08, 0xe0, + 0x65, 0xe0, 0x64, 0xe0, 0x1b, 0xe1, 0x1a, 0xe1, 0x22, 0xe2, 0x22, 0xe2, + 0x7c, 0xe3, 0x79, 0xe3, 0x14, 0xe5, 0x16, 0xe5, 0xef, 0xe6, 0xec, 0xe6, + 0xf9, 0xe8, 0xf9, 0xe8, 0x2a, 0xeb, 0x2b, 0xeb, 0x7d, 0xed, 0x7b, 0xed, + 0xd6, 0xef, 0xd6, 0xef, 0x3d, 0xf2, 0x3c, 0xf2, 0x97, 0xf4, 0x96, 0xf4, + 0xde, 0xf6, 0xdd, 0xf6, 0x06, 0xf9, 0x05, 0xf9, 0x01, 0xfb, 0x00, 0xfb, + 0xcd, 0xfc, 0xcd, 0xfc, 0x59, 0xfe, 0x58, 0xfe, 0xa3, 0xff, 0xa2, 0xff, + 0xa5, 0x00, 0xa4, 0x00, 0x57, 0x01, 0x56, 0x01, 0xbd, 0x01, 0xbd, 0x01, + 0xd1, 0x01, 0xd0, 0x01, 0x9b, 0x01, 0x99, 0x01, 0x14, 0x01, 0x15, 0x01, + 0x4a, 0x00, 0x47, 0x00, 0x3a, 0xff, 0x3c, 0xff, 0xf3, 0xfd, 0xf1, 0xfd, + 0x75, 0xfc, 0x73, 0xfc, 0xcb, 0xfa, 0xc9, 0xfa, 0xfe, 0xf8, 0xff, 0xf8, + 0x1d, 0xf7, 0x1b, 0xf7, 0x23, 0xf5, 0x23, 0xf5, 0x29, 0xf3, 0x26, 0xf3, + 0x30, 0xf1, 0x30, 0xf1, 0x46, 0xef, 0x45, 0xef, 0x79, 0xed, 0x78, 0xed, + 0xc7, 0xeb, 0xc6, 0xeb, 0x4c, 0xea, 0x4a, 0xea, 0x00, 0xe9, 0x00, 0xe9, + 0xf8, 0xe7, 0xf9, 0xe7, 0x39, 0xe7, 0x38, 0xe7, 0xc5, 0xe6, 0xc6, 0xe6, + 0xa8, 0xe6, 0xa5, 0xe6, 0xde, 0xe6, 0xdf, 0xe6, 0x73, 0xe7, 0x70, 0xe7, + 0x5c, 0xe8, 0x5d, 0xe8, 0x9f, 0xe9, 0x9f, 0xe9, 0x34, 0xeb, 0x33, 0xeb, + 0x19, 0xed, 0x18, 0xed, 0x3e, 0xef, 0x3d, 0xef, 0xa7, 0xf1, 0xa7, 0xf1, + 0x41, 0xf4, 0x3f, 0xf4, 0x02, 0xf7, 0x00, 0xf7, 0xe1, 0xf9, 0xe2, 0xf9, + 0xd0, 0xfc, 0xcd, 0xfc, 0xc8, 0xff, 0xc7, 0xff, 0xb6, 0x02, 0xb6, 0x02, + 0x94, 0x05, 0x93, 0x05, 0x56, 0x08, 0x55, 0x08, 0xec, 0x0a, 0xec, 0x0a, + 0x52, 0x0d, 0x50, 0x0d, 0x78, 0x0f, 0x79, 0x0f, 0x5b, 0x11, 0x59, 0x11, + 0xef, 0x12, 0xf0, 0x12, 0x2e, 0x14, 0x2d, 0x14, 0x16, 0x15, 0x16, 0x15, + 0xa6, 0x15, 0xa5, 0x15, 0xd7, 0x15, 0xd5, 0x15, 0xb3, 0x15, 0xb2, 0x15, + 0x33, 0x15, 0x30, 0x15, 0x62, 0x14, 0x64, 0x14, 0x45, 0x13, 0x43, 0x13, + 0xde, 0x11, 0xdd, 0x11, 0x3d, 0x10, 0x3e, 0x10, 0x65, 0x0e, 0x62, 0x0e, + 0x62, 0x0c, 0x61, 0x0c, 0x3d, 0x0a, 0x3d, 0x0a, 0x03, 0x08, 0x00, 0x08, + 0xbf, 0x05, 0xbf, 0x05, 0x7a, 0x03, 0x77, 0x03, 0x49, 0x01, 0x47, 0x01, + 0x28, 0xff, 0x29, 0xff, 0x32, 0xfd, 0x2f, 0xfd, 0x6e, 0xfb, 0x6b, 0xfb, + 0xde, 0xf9, 0xde, 0xf9, 0x9e, 0xf8, 0x9a, 0xf8, 0xa3, 0xf7, 0xa2, 0xf7, + 0xff, 0xf6, 0xfd, 0xf6, 0xb5, 0xf6, 0xb3, 0xf6, 0xc1, 0xf6, 0xc0, 0xf6, + 0x2b, 0xf7, 0x2a, 0xf7, 0xea, 0xf7, 0xeb, 0xf7, 0x01, 0xf9, 0xfe, 0xf8, + 0x63, 0xfa, 0x62, 0xfa, 0x0d, 0xfc, 0x0b, 0xfc, 0xf8, 0xfd, 0xf9, 0xfd, + 0x1c, 0x00, 0x19, 0x00, 0x6b, 0x02, 0x6b, 0x02, 0xde, 0x04, 0xdb, 0x04, + 0x69, 0x07, 0x69, 0x07, 0x06, 0x0a, 0x03, 0x0a, 0xa1, 0x0c, 0xa0, 0x0c, + 0x3c, 0x0f, 0x3c, 0x0f, 0xc0, 0x11, 0xbf, 0x11, 0x2f, 0x14, 0x2d, 0x14, + 0x73, 0x16, 0x72, 0x16, 0x89, 0x18, 0x86, 0x18, 0x67, 0x1a, 0x67, 0x1a, + 0x00, 0x1c, 0xfe, 0x1b, 0x53, 0x1d, 0x53, 0x1d, 0x56, 0x1e, 0x53, 0x1e, + 0xfe, 0x1e, 0xff, 0x1e, 0x54, 0x1f, 0x52, 0x1f, 0x49, 0x1f, 0x48, 0x1f, + 0xe6, 0x1e, 0xe5, 0x1e, 0x28, 0x1e, 0x26, 0x1e, 0x13, 0x1d, 0x12, 0x1d, + 0xaf, 0x1b, 0xae, 0x1b, 0xff, 0x19, 0xfd, 0x19, 0x0e, 0x18, 0x0c, 0x18, + 0xe4, 0x15, 0xe4, 0x15, 0x8d, 0x13, 0x8a, 0x13, 0x13, 0x11, 0x13, 0x11, + 0x84, 0x0e, 0x83, 0x0e, 0xea, 0x0b, 0xe7, 0x0b, 0x51, 0x09, 0x51, 0x09, + 0xcb, 0x06, 0xc7, 0x06, 0x5a, 0x04, 0x5a, 0x04, 0x13, 0x02, 0x13, 0x02, + 0xfc, 0xff, 0xf7, 0xff, 0x1e, 0xfe, 0x1f, 0xfe, 0x87, 0xfc, 0x82, 0xfc, + 0x2f, 0xfb, 0x30, 0xfb, 0x2f, 0xfa, 0x2c, 0xfa, 0x77, 0xf9, 0x77, 0xf9, + 0x18, 0xf9, 0x17, 0xf9, 0x09, 0xf9, 0x07, 0xf9, 0x4a, 0xf9, 0x4c, 0xf9, + 0xe0, 0xf9, 0xdc, 0xf9, 0xb6, 0xfa, 0xb7, 0xfa, 0xd7, 0xfb, 0xd3, 0xfb, + 0x30, 0xfd, 0x2e, 0xfd, 0xba, 0xfe, 0xb9, 0xfe, 0x78, 0x00, 0x75, 0x00, + 0x52, 0x02, 0x51, 0x02, 0x4b, 0x04, 0x47, 0x04, 0x4c, 0x06, 0x4b, 0x06, + 0x56, 0x08, 0x54, 0x08, 0x58, 0x0a, 0x55, 0x0a, 0x44, 0x0c, 0x44, 0x0c, + 0x18, 0x0e, 0x15, 0x0e, 0xba, 0x0f, 0xba, 0x0f, 0x2e, 0x11, 0x2d, 0x11, + 0x5f, 0x12, 0x5d, 0x12, 0x4c, 0x13, 0x49, 0x13, 0xe5, 0x13, 0xe2, 0x13, + 0x21, 0x14, 0x20, 0x14, 0x06, 0x14, 0x04, 0x14, 0x85, 0x13, 0x84, 0x13, + 0xa9, 0x12, 0xa6, 0x12, 0x68, 0x11, 0x67, 0x11, 0xd0, 0x0f, 0xcf, 0x0f, + 0xe5, 0x0d, 0xe3, 0x0d, 0xaa, 0x0b, 0xaa, 0x0b, 0x2f, 0x09, 0x2f, 0x09, + 0x7c, 0x06, 0x79, 0x06, 0x96, 0x03, 0x96, 0x03, 0x92, 0x00, 0x8e, 0x00, + 0x71, 0xfd, 0x71, 0xfd, 0x49, 0xfa, 0x47, 0xfa, 0x1c, 0xf7, 0x19, 0xf7, + 0xfe, 0xf3, 0xfd, 0xf3, 0xf2, 0xf0, 0xf0, 0xf0, 0x0a, 0xee, 0x09, 0xee, + 0x4e, 0xeb, 0x4c, 0xeb, 0xc7, 0xe8, 0xc6, 0xe8, 0x87, 0xe6, 0x86, 0xe6, + 0x8a, 0xe4, 0x88, 0xe4, 0xe3, 0xe2, 0xe2, 0xe2, 0x92, 0xe1, 0x90, 0xe1, + 0x9e, 0xe0, 0x9b, 0xe0, 0x09, 0xe0, 0x09, 0xe0, 0xd6, 0xdf, 0xd3, 0xdf, + 0x06, 0xe0, 0x05, 0xe0, 0x91, 0xe0, 0x8f, 0xe0, 0x7b, 0xe1, 0x79, 0xe1, + 0xb8, 0xe2, 0xb5, 0xe2, 0x40, 0xe4, 0x3f, 0xe4, 0x10, 0xe6, 0x0e, 0xe6, + 0x15, 0xe8, 0x14, 0xe8, 0x4e, 0xea, 0x4d, 0xea, 0xa5, 0xec, 0xa3, 0xec, + 0x15, 0xef, 0x15, 0xef, 0x90, 0xf1, 0x8f, 0xf1, 0x07, 0xf4, 0x06, 0xf4, + 0x70, 0xf6, 0x6e, 0xf6, 0xbc, 0xf8, 0xba, 0xf8, 0xe1, 0xfa, 0xe1, 0xfa, + 0xd4, 0xfc, 0xd3, 0xfc, 0x8c, 0xfe, 0x8b, 0xfe, 0xfe, 0xff, 0xfb, 0xff, + 0x26, 0x01, 0x26, 0x01, 0xfd, 0x01, 0xfa, 0x01, 0x7f, 0x02, 0x7f, 0x02, + 0xb2, 0x02, 0xae, 0x02, 0x86, 0x02, 0x87, 0x02, 0x13, 0x02, 0x10, 0x02, + 0x48, 0x01, 0x46, 0x01, 0x3a, 0x00, 0x3a, 0x00, 0xe9, 0xfe, 0xe5, 0xfe, + 0x59, 0xfd, 0x59, 0xfd, 0x9a, 0xfb, 0x98, 0xfb, 0xb0, 0xf9, 0xb0, 0xf9, + 0xa7, 0xf7, 0xa8, 0xf7, 0x8c, 0xf5, 0x89, 0xf5, 0x60, 0xf3, 0x60, 0xf3, + 0x36, 0xf1, 0x36, 0xf1, 0x17, 0xef, 0x17, 0xef, 0x0c, 0xed, 0x0b, 0xed, + 0x25, 0xeb, 0x24, 0xeb, 0x64, 0xe9, 0x64, 0xe9, 0xdc, 0xe7, 0xdb, 0xe7, + 0x92, 0xe6, 0x93, 0xe6, 0x92, 0xe5, 0x90, 0xe5, 0xe1, 0xe4, 0xe1, 0xe4, + 0x84, 0xe4, 0x84, 0xe4, 0x87, 0xe4, 0x86, 0xe4, 0xe0, 0xe4, 0xe0, 0xe4, + 0x9f, 0xe5, 0x9f, 0xe5, 0xb7, 0xe6, 0xb6, 0xe6, 0x2a, 0xe8, 0x29, 0xe8, + 0xf5, 0xe9, 0xf4, 0xe9, 0x08, 0xec, 0x06, 0xec, 0x62, 0xee, 0x62, 0xee, + 0xf9, 0xf0, 0xf7, 0xf0, 0xbc, 0xf3, 0xbb, 0xf3, 0xa6, 0xf6, 0xa7, 0xf6, + 0xa7, 0xf9, 0xa7, 0xf9, 0xb8, 0xfc, 0xb6, 0xfc, 0xc4, 0xff, 0xc4, 0xff, + 0xc4, 0x02, 0xc2, 0x02, 0xad, 0x05, 0xac, 0x05, 0x6e, 0x08, 0x6c, 0x08, + 0x02, 0x0b, 0x00, 0x0b, 0x57, 0x0d, 0x57, 0x0d, 0x6a, 0x0f, 0x69, 0x0f, + 0x2e, 0x11, 0x2b, 0x11, 0x9a, 0x12, 0x9a, 0x12, 0xb0, 0x13, 0xae, 0x13, + 0x6a, 0x14, 0x68, 0x14, 0xbf, 0x14, 0xc1, 0x14, 0xbe, 0x14, 0xbb, 0x14, + 0x5c, 0x14, 0x5b, 0x14, 0xa1, 0x13, 0xa2, 0x13, 0x9a, 0x12, 0x98, 0x12, + 0x40, 0x11, 0x3e, 0x11, 0xa8, 0x0f, 0xa7, 0x0f, 0xcf, 0x0d, 0xce, 0x0d, + 0xcc, 0x0b, 0xcb, 0x0b, 0xa0, 0x09, 0x9f, 0x09, 0x58, 0x07, 0x57, 0x07, + 0x04, 0x05, 0x03, 0x05, 0xa9, 0x02, 0xa8, 0x02, 0x5c, 0x00, 0x5d, 0x00, + 0x21, 0xfe, 0x20, 0xfe, 0x09, 0xfc, 0x09, 0xfc, 0x1f, 0xfa, 0x1f, 0xfa, + 0x6f, 0xf8, 0x6e, 0xf8, 0x06, 0xf7, 0x05, 0xf7, 0xe4, 0xf5, 0xe4, 0xf5, + 0x21, 0xf5, 0x1e, 0xf5, 0xb2, 0xf4, 0xb2, 0xf4, 0xa4, 0xf4, 0xa2, 0xf4, + 0xf7, 0xf4, 0xf7, 0xf4, 0xa4, 0xf5, 0xa2, 0xf5, 0xb0, 0xf6, 0xae, 0xf6, + 0x0c, 0xf8, 0x0c, 0xf8, 0xbc, 0xf9, 0xb9, 0xf9, 0xae, 0xfb, 0xaf, 0xfb, + 0xe2, 0xfd, 0xde, 0xfd, 0x44, 0x00, 0x46, 0x00, 0xd5, 0x02, 0xd1, 0x02, + 0x7f, 0x05, 0x80, 0x05, 0x41, 0x08, 0x3e, 0x08, 0x07, 0x0b, 0x07, 0x0b, + 0xce, 0x0d, 0xce, 0x0d, 0x84, 0x10, 0x83, 0x10, 0x27, 0x13, 0x24, 0x13, + 0x9f, 0x15, 0x9e, 0x15, 0xed, 0x17, 0xec, 0x17, 0x03, 0x1a, 0x01, 0x1a, + 0xd6, 0x1b, 0xd7, 0x1b, 0x64, 0x1d, 0x61, 0x1d, 0x9a, 0x1e, 0x99, 0x1e, + 0x7d, 0x1f, 0x7c, 0x1f, 0x03, 0x20, 0x02, 0x20, 0x2a, 0x20, 0x28, 0x20, + 0xf4, 0x1f, 0xf3, 0x1f, 0x5c, 0x1f, 0x59, 0x1f, 0x6d, 0x1e, 0x6c, 0x1e, + 0x23, 0x1d, 0x21, 0x1d, 0x8c, 0x1b, 0x8c, 0x1b, 0xad, 0x19, 0xad, 0x19, + 0x91, 0x17, 0x8f, 0x17, 0x41, 0x15, 0x41, 0x15, 0xca, 0x12, 0xc7, 0x12, + 0x37, 0x10, 0x36, 0x10, 0x92, 0x0d, 0x91, 0x0d, 0xef, 0x0a, 0xee, 0x0a, + 0x56, 0x08, 0x55, 0x08, 0xd4, 0x05, 0xd3, 0x05, 0x75, 0x03, 0x75, 0x03, + 0x44, 0x01, 0x44, 0x01, 0x50, 0xff, 0x4d, 0xff, 0x97, 0xfd, 0x98, 0xfd, + 0x2d, 0xfc, 0x2c, 0xfc, 0x0c, 0xfb, 0x0d, 0xfb, 0x45, 0xfa, 0x41, 0xfa, + 0xcc, 0xf9, 0xce, 0xf9, 0xae, 0xf9, 0xac, 0xf9, 0xe1, 0xf9, 0xe3, 0xf9, + 0x66, 0xfa, 0x66, 0xfa, 0x3b, 0xfb, 0x3b, 0xfb, 0x54, 0xfc, 0x53, 0xfc, + 0xae, 0xfd, 0xae, 0xfd, 0x40, 0xff, 0x40, 0xff, 0x04, 0x01, 0x02, 0x01, + 0xee, 0x02, 0xee, 0x02, 0xf4, 0x04, 0xf3, 0x04, 0x0e, 0x07, 0x0c, 0x07, + 0x29, 0x09, 0x2a, 0x09, 0x49, 0x0b, 0x48, 0x0b, 0x54, 0x0d, 0x53, 0x0d, + 0x46, 0x0f, 0x45, 0x0f, 0x10, 0x11, 0x0e, 0x11, 0xa7, 0x12, 0xa8, 0x12, + 0x01, 0x14, 0x00, 0x14, 0x12, 0x15, 0x11, 0x15, 0xd7, 0x15, 0xd6, 0x15, + 0x3d, 0x16, 0x3b, 0x16, 0x47, 0x16, 0x47, 0x16, 0xee, 0x15, 0xec, 0x15, + 0x31, 0x15, 0x2f, 0x15, 0x10, 0x14, 0x0f, 0x14, 0x94, 0x12, 0x92, 0x12, + 0xbd, 0x10, 0xbb, 0x10, 0x97, 0x0e, 0x95, 0x0e, 0x24, 0x0c, 0x24, 0x0c, + 0x7b, 0x09, 0x77, 0x09, 0x95, 0x06, 0x95, 0x06, 0x8c, 0x03, 0x8b, 0x03, + 0x67, 0x00, 0x67, 0x00, 0x2f, 0xfd, 0x2d, 0xfd, 0xf4, 0xf9, 0xf4, 0xf9, + 0xbe, 0xf6, 0xbd, 0xf6, 0x9c, 0xf3, 0x9d, 0xf3, 0x9a, 0xf0, 0x99, 0xf0, + 0xbd, 0xed, 0xbd, 0xed, 0x19, 0xeb, 0x18, 0xeb, 0xad, 0xe8, 0xae, 0xe8, + 0x92, 0xe6, 0x92, 0xe6, 0xc0, 0xe4, 0xc0, 0xe4, 0x47, 0xe3, 0x49, 0xe3, + 0x2e, 0xe2, 0x2c, 0xe2, 0x6f, 0xe1, 0x71, 0xe1, 0x1b, 0xe1, 0x18, 0xe1, + 0x20, 0xe1, 0x22, 0xe1, 0x90, 0xe1, 0x8d, 0xe1, 0x55, 0xe2, 0x58, 0xe2, + 0x76, 0xe3, 0x74, 0xe3, 0xeb, 0xe4, 0xea, 0xe4, 0xa0, 0xe6, 0xa1, 0xe6, + 0x98, 0xe8, 0x96, 0xe8, 0xbf, 0xea, 0xbf, 0xea, 0x0d, 0xed, 0x0d, 0xed, + 0x7c, 0xef, 0x7c, 0xef, 0xf2, 0xf1, 0xef, 0xf1, 0x6b, 0xf4, 0x6c, 0xf4, + 0xd7, 0xf6, 0xd6, 0xf6, 0x2c, 0xf9, 0x2b, 0xf9, 0x5a, 0xfb, 0x5a, 0xfb, + 0x5b, 0xfd, 0x57, 0xfd, 0x1b, 0xff, 0x1e, 0xff, 0x9d, 0x00, 0x9b, 0x00, + 0xd1, 0x01, 0xd3, 0x01, 0xb8, 0x02, 0xb5, 0x02, 0x48, 0x03, 0x47, 0x03, + 0x7f, 0x03, 0x80, 0x03, 0x66, 0x03, 0x65, 0x03, 0xf3, 0x02, 0xf4, 0x02, + 0x34, 0x02, 0x32, 0x02, 0x25, 0x01, 0x26, 0x01, 0xd3, 0xff, 0xd3, 0xff, + 0x44, 0xfe, 0x43, 0xfe, 0x7e, 0xfc, 0x7e, 0xfc, 0x8e, 0xfa, 0x8a, 0xfa, + 0x77, 0xf8, 0x78, 0xf8, 0x4b, 0xf6, 0x49, 0xf6, 0x0e, 0xf4, 0x0d, 0xf4, + 0xce, 0xf1, 0xcd, 0xf1, 0x98, 0xef, 0x95, 0xef, 0x6f, 0xed, 0x70, 0xed, + 0x66, 0xeb, 0x66, 0xeb, 0x85, 0xe9, 0x83, 0xe9, 0xd4, 0xe7, 0xd5, 0xe7, + 0x62, 0xe6, 0x61, 0xe6, 0x34, 0xe5, 0x35, 0xe5, 0x56, 0xe4, 0x58, 0xe4, + 0xcf, 0xe3, 0xcc, 0xe3, 0x9c, 0xe3, 0x9e, 0xe3, 0xcc, 0xe3, 0xca, 0xe3, + 0x5b, 0xe4, 0x5b, 0xe4, 0x48, 0xe5, 0x48, 0xe5, 0x91, 0xe6, 0x8d, 0xe6, + 0x34, 0xe8, 0x35, 0xe8, 0x24, 0xea, 0x23, 0xea, 0x64, 0xec, 0x65, 0xec, + 0xdd, 0xee, 0xde, 0xee, 0x92, 0xf1, 0x90, 0xf1, 0x6d, 0xf4, 0x6c, 0xf4, + 0x65, 0xf7, 0x65, 0xf7, 0x70, 0xfa, 0x6f, 0xfa, 0x7f, 0xfd, 0x7e, 0xfd, + 0x85, 0x00, 0x82, 0x00, 0x76, 0x03, 0x75, 0x03, 0x44, 0x06, 0x44, 0x06, + 0xe7, 0x08, 0xe6, 0x08, 0x51, 0x0b, 0x4e, 0x0b, 0x76, 0x0d, 0x75, 0x0d, + 0x50, 0x0f, 0x4f, 0x0f, 0xd8, 0x10, 0xd7, 0x10, 0x07, 0x12, 0x07, 0x12, + 0xd8, 0x12, 0xd6, 0x12, 0x4c, 0x13, 0x4b, 0x13, 0x62, 0x13, 0x60, 0x13, + 0x18, 0x13, 0x17, 0x13, 0x79, 0x12, 0x78, 0x12, 0x81, 0x11, 0x81, 0x11, + 0x3f, 0x10, 0x3e, 0x10, 0xb6, 0x0e, 0xb7, 0x0e, 0xf0, 0x0c, 0xed, 0x0c, + 0xf6, 0x0a, 0xf5, 0x0a, 0xd0, 0x08, 0xd0, 0x08, 0x90, 0x06, 0x90, 0x06, + 0x3c, 0x04, 0x3a, 0x04, 0xde, 0x01, 0xdf, 0x01, 0x8a, 0xff, 0x88, 0xff, + 0x45, 0xfd, 0x44, 0xfd, 0x1d, 0xfb, 0x1c, 0xfb, 0x20, 0xf9, 0x20, 0xf9, + 0x5a, 0xf7, 0x5a, 0xf7, 0xd3, 0xf5, 0xd2, 0xf5, 0x9c, 0xf4, 0x9d, 0xf4, + 0xb7, 0xf3, 0xb4, 0xf3, 0x2e, 0xf3, 0x2d, 0xf3, 0x07, 0xf3, 0x06, 0xf3, + 0x3c, 0xf3, 0x3b, 0xf3, 0xd8, 0xf3, 0xd8, 0xf3, 0xcf, 0xf4, 0xcd, 0xf4, + 0x20, 0xf6, 0x21, 0xf6, 0xc8, 0xf7, 0xc5, 0xf7, 0xb4, 0xf9, 0xb3, 0xf9, + 0xe8, 0xfb, 0xe6, 0xfb, 0x50, 0xfe, 0x50, 0xfe, 0xec, 0x00, 0xea, 0x00, + 0xa7, 0x03, 0xa4, 0x03, 0x78, 0x06, 0x79, 0x06, 0x59, 0x09, 0x56, 0x09, + 0x35, 0x0c, 0x34, 0x0c, 0x0f, 0x0f, 0x0d, 0x0f, 0xcd, 0x11, 0xcc, 0x11, + 0x6e, 0x14, 0x6d, 0x14, 0xe0, 0x16, 0xe1, 0x16, 0x1f, 0x19, 0x1d, 0x19, + 0x1f, 0x1b, 0x1e, 0x1b, 0xd3, 0x1c, 0xd3, 0x1c, 0x3c, 0x1e, 0x39, 0x1e, + 0x47, 0x1f, 0x48, 0x1f, 0xfb, 0x1f, 0xf8, 0x1f, 0x4c, 0x20, 0x4e, 0x20, + 0x42, 0x20, 0x3e, 0x20, 0xd0, 0x1f, 0xd1, 0x1f, 0x04, 0x1f, 0x03, 0x1f, + 0xdc, 0x1d, 0xda, 0x1d, 0x62, 0x1c, 0x63, 0x1c, 0x9b, 0x1a, 0x99, 0x1a, + 0x91, 0x18, 0x91, 0x18, 0x51, 0x16, 0x51, 0x16, 0xe2, 0x13, 0xe1, 0x13, + 0x50, 0x11, 0x51, 0x11, 0xb1, 0x0e, 0xaf, 0x0e, 0x05, 0x0c, 0x07, 0x0c, + 0x65, 0x09, 0x64, 0x09, 0xd6, 0x06, 0xd7, 0x06, 0x69, 0x04, 0x67, 0x04, + 0x23, 0x02, 0x25, 0x02, 0x1b, 0x00, 0x1a, 0x00, 0x4e, 0xfe, 0x4c, 0xfe, + 0xcb, 0xfc, 0xcc, 0xfc, 0x99, 0xfb, 0x97, 0xfb, 0xb8, 0xfa, 0xb7, 0xfa, + 0x2e, 0xfa, 0x2d, 0xfa, 0xf9, 0xf9, 0xf7, 0xf9, 0x1f, 0xfa, 0x1e, 0xfa, + 0x95, 0xfa, 0x95, 0xfa, 0x5f, 0xfb, 0x5d, 0xfb, 0x6f, 0xfc, 0x6f, 0xfc, + 0xc3, 0xfd, 0xc3, 0xfd, 0x56, 0xff, 0x56, 0xff, 0x1a, 0x01, 0x18, 0x01, + 0x09, 0x03, 0x0a, 0x03, 0x18, 0x05, 0x16, 0x05, 0x3d, 0x07, 0x3e, 0x07, + 0x6e, 0x09, 0x6f, 0x09, 0xa0, 0x0b, 0x9e, 0x0b, 0xc7, 0x0d, 0xc8, 0x0d, + 0xd5, 0x0f, 0xd3, 0x0f, 0xc2, 0x11, 0xc3, 0x11, 0x7c, 0x13, 0x7c, 0x13, + 0x03, 0x15, 0x00, 0x15, 0x3d, 0x16, 0x3e, 0x16, 0x2f, 0x17, 0x2d, 0x17, + 0xc3, 0x17, 0xc3, 0x17, 0xfc, 0x17, 0xfd, 0x17, 0xd3, 0x17, 0xd3, 0x17, + 0x40, 0x17, 0x40, 0x17, 0x4a, 0x16, 0x4a, 0x16, 0xec, 0x14, 0xea, 0x14, + 0x31, 0x13, 0x2f, 0x13, 0x20, 0x11, 0x20, 0x11, 0xbc, 0x0e, 0xb9, 0x0e, + 0x14, 0x0c, 0x15, 0x0c, 0x32, 0x09, 0x31, 0x09, 0x20, 0x06, 0x1e, 0x06, + 0xed, 0x02, 0xec, 0x02, 0x9e, 0xff, 0x9e, 0xff, 0x4b, 0xfc, 0x4b, 0xfc, + 0xf9, 0xf8, 0xf9, 0xf8, 0xb3, 0xf5, 0xb3, 0xf5, 0x8a, 0xf2, 0x8a, 0xf2, + 0x84, 0xef, 0x87, 0xef, 0xb5, 0xec, 0xb3, 0xec, 0x21, 0xea, 0x22, 0xea, + 0xd4, 0xe7, 0xd2, 0xe7, 0xd8, 0xe5, 0xd8, 0xe5, 0x30, 0xe4, 0x30, 0xe4, + 0xe9, 0xe2, 0xeb, 0xe2, 0x06, 0xe2, 0x05, 0xe2, 0x85, 0xe1, 0x86, 0xe1, + 0x70, 0xe1, 0x70, 0xe1, 0xba, 0xe1, 0xb9, 0xe1, 0x6b, 0xe2, 0x6c, 0xe2, + 0x73, 0xe3, 0x74, 0xe3, 0xd5, 0xe4, 0xd5, 0xe4, 0x80, 0xe6, 0x82, 0xe6, + 0x6d, 0xe8, 0x6e, 0xe8, 0x98, 0xea, 0x96, 0xea, 0xe3, 0xec, 0xe6, 0xec, + 0x5a, 0xef, 0x5a, 0xef, 0xdc, 0xf1, 0xdd, 0xf1, 0x67, 0xf4, 0x68, 0xf4, + 0xea, 0xf6, 0xec, 0xf6, 0x59, 0xf9, 0x59, 0xf9, 0xa2, 0xfb, 0xa6, 0xfb, + 0xc1, 0xfd, 0xc0, 0xfd, 0xa4, 0xff, 0xa6, 0xff, 0x46, 0x01, 0x46, 0x01, + 0x9a, 0x02, 0x99, 0x02, 0x9a, 0x03, 0x9c, 0x03, 0x46, 0x04, 0x45, 0x04, + 0x95, 0x04, 0x96, 0x04, 0x88, 0x04, 0x87, 0x04, 0x22, 0x04, 0x23, 0x04, + 0x65, 0x03, 0x64, 0x03, 0x56, 0x02, 0x59, 0x02, 0xfd, 0x00, 0xfb, 0x00, + 0x5d, 0xff, 0x5e, 0xff, 0x83, 0xfd, 0x83, 0xfd, 0x78, 0xfb, 0x78, 0xfb, + 0x41, 0xf9, 0x42, 0xf9, 0xf2, 0xf6, 0xf1, 0xf6, 0x8a, 0xf4, 0x8c, 0xf4, + 0x21, 0xf2, 0x21, 0xf2, 0xb5, 0xef, 0xb5, 0xef, 0x5d, 0xed, 0x5c, 0xed, + 0x1c, 0xeb, 0x1e, 0xeb, 0x02, 0xe9, 0x01, 0xe9, 0x1a, 0xe7, 0x1b, 0xe7, + 0x6d, 0xe5, 0x6d, 0xe5, 0x05, 0xe4, 0x05, 0xe4, 0xed, 0xe2, 0xed, 0xe2, + 0x2b, 0xe2, 0x2c, 0xe2, 0xc3, 0xe1, 0xc4, 0xe1, 0xbf, 0xe1, 0xc1, 0xe1, + 0x1f, 0xe2, 0x1e, 0xe2, 0xe0, 0xe2, 0xe2, 0xe2, 0x07, 0xe4, 0x06, 0xe4, + 0x88, 0xe5, 0x8a, 0xe5, 0x64, 0xe7, 0x64, 0xe7, 0x91, 0xe9, 0x91, 0xe9, + 0x03, 0xec, 0x00, 0xec, 0xae, 0xee, 0xb0, 0xee, 0x8f, 0xf1, 0x90, 0xf1, + 0x93, 0xf4, 0x93, 0xf4, 0xaa, 0xf7, 0xad, 0xf7, 0xd0, 0xfa, 0xd0, 0xfa, + 0xec, 0xfd, 0xef, 0xfd, 0x00, 0x01, 0x01, 0x01, 0xf1, 0x03, 0xf2, 0x03, + 0xb8, 0x06, 0xba, 0x06, 0x4a, 0x09, 0x4b, 0x09, 0x9a, 0x0b, 0x9b, 0x0b, + 0x9e, 0x0d, 0xa0, 0x0d, 0x4e, 0x0f, 0x4f, 0x0f, 0xa4, 0x10, 0xa7, 0x10, + 0x9e, 0x11, 0x9d, 0x11, 0x31, 0x12, 0x33, 0x12, 0x68, 0x12, 0x68, 0x12, + 0x35, 0x12, 0x39, 0x12, 0xae, 0x11, 0xae, 0x11, 0xc7, 0x10, 0xc8, 0x10, + 0x90, 0x0f, 0x91, 0x0f, 0x0f, 0x0e, 0x10, 0x0e, 0x49, 0x0c, 0x4b, 0x0c, + 0x4d, 0x0a, 0x4d, 0x0a, 0x1f, 0x08, 0x22, 0x08, 0xd2, 0x05, 0xd1, 0x05, + 0x6a, 0x03, 0x6c, 0x03, 0xfb, 0x00, 0xf9, 0x00, 0x89, 0xfe, 0x8b, 0xfe, + 0x28, 0xfc, 0x27, 0xfc, 0xde, 0xf9, 0xdf, 0xf9, 0xbc, 0xf7, 0xbf, 0xf7, + 0xd1, 0xf5, 0xce, 0xf5, 0x22, 0xf4, 0x25, 0xf4, 0xc1, 0xf2, 0xbf, 0xf2, + 0xb4, 0xf1, 0xb4, 0xf1, 0x04, 0xf1, 0x03, 0xf1, 0xb6, 0xf0, 0xb6, 0xf0, + 0xd1, 0xf0, 0xd0, 0xf0, 0x50, 0xf1, 0x4f, 0xf1, 0x36, 0xf2, 0x34, 0xf2, + 0x77, 0xf3, 0x78, 0xf3, 0x17, 0xf5, 0x17, 0xf5, 0x09, 0xf7, 0x09, 0xf7, + 0x42, 0xf9, 0x40, 0xf9, 0xbf, 0xfb, 0xbf, 0xfb, 0x6a, 0xfe, 0x69, 0xfe, + 0x45, 0x01, 0x44, 0x01, 0x36, 0x04, 0x35, 0x04, 0x3a, 0x07, 0x39, 0x07, + 0x48, 0x0a, 0x47, 0x0a, 0x4b, 0x0d, 0x4a, 0x0d, 0x41, 0x10, 0x40, 0x10, + 0x12, 0x13, 0x12, 0x13, 0xc0, 0x15, 0xc1, 0x15, 0x39, 0x18, 0x39, 0x18, + 0x71, 0x1a, 0x6e, 0x1a, 0x66, 0x1c, 0x68, 0x1c, 0x05, 0x1e, 0x02, 0x1e, + 0x4e, 0x1f, 0x4e, 0x1f, 0x37, 0x20, 0x38, 0x20, 0xbe, 0x20, 0xbd, 0x20, + 0xe1, 0x20, 0xe3, 0x20, 0x9e, 0x20, 0x9d, 0x20, 0xfa, 0x1f, 0xfb, 0x1f, + 0xf3, 0x1e, 0xf3, 0x1e, 0x96, 0x1d, 0x96, 0x1d, 0xe3, 0x1b, 0xe4, 0x1b, + 0xea, 0x19, 0xeb, 0x19, 0xb3, 0x17, 0xb1, 0x17, 0x44, 0x15, 0x45, 0x15, + 0xb5, 0x12, 0xb5, 0x12, 0x06, 0x10, 0x08, 0x10, 0x52, 0x0d, 0x53, 0x0d, + 0x9e, 0x0a, 0x9f, 0x0a, 0xf8, 0x07, 0xf8, 0x07, 0x74, 0x05, 0x73, 0x05, + 0x10, 0x03, 0x10, 0x03, 0xe8, 0x00, 0xe9, 0x00, 0xfd, 0xfe, 0xfb, 0xfe, + 0x5b, 0xfd, 0x5d, 0xfd, 0x09, 0xfc, 0x08, 0xfc, 0x0b, 0xfb, 0x0d, 0xfb, + 0x68, 0xfa, 0x6a, 0xfa, 0x1d, 0xfa, 0x1c, 0xfa, 0x30, 0xfa, 0x31, 0xfa, + 0x97, 0xfa, 0x97, 0xfa, 0x56, 0xfb, 0x57, 0xfb, 0x63, 0xfc, 0x64, 0xfc, + 0xb8, 0xfd, 0xb7, 0xfd, 0x4f, 0xff, 0x50, 0xff, 0x1b, 0x01, 0x1b, 0x01, + 0x1b, 0x03, 0x1b, 0x03, 0x3c, 0x05, 0x3e, 0x05, 0x7a, 0x07, 0x7b, 0x07, + 0xc7, 0x09, 0xc6, 0x09, 0x16, 0x0c, 0x1a, 0x0c, 0x64, 0x0e, 0x63, 0x0e, + 0x98, 0x10, 0x9c, 0x10, 0xb2, 0x12, 0xb1, 0x12, 0x9a, 0x14, 0x9f, 0x14, + 0x4f, 0x16, 0x4f, 0x16, 0xbf, 0x17, 0xbf, 0x17, 0xe0, 0x18, 0xe3, 0x18, + 0xac, 0x19, 0xab, 0x19, 0x18, 0x1a, 0x1a, 0x1a, 0x1f, 0x1a, 0x1e, 0x1a, + 0xbb, 0x19, 0xbd, 0x19, 0xee, 0x18, 0xef, 0x18, 0xb9, 0x17, 0xba, 0x17, + 0x1e, 0x16, 0x20, 0x16, 0x28, 0x14, 0x26, 0x14, 0xd9, 0x11, 0xdb, 0x11, + 0x3f, 0x0f, 0x40, 0x0f, 0x67, 0x0c, 0x69, 0x0c, 0x55, 0x09, 0x57, 0x09, + 0x20, 0x06, 0x21, 0x06, 0xc8, 0x02, 0xca, 0x02, 0x62, 0xff, 0x64, 0xff, + 0xfd, 0xfb, 0xff, 0xfb, 0x9c, 0xf8, 0x9d, 0xf8, 0x54, 0xf5, 0x57, 0xf5, + 0x2f, 0xf2, 0x30, 0xf2, 0x35, 0xef, 0x3a, 0xef, 0x7d, 0xec, 0x7e, 0xec, + 0x02, 0xea, 0x06, 0xea, 0xdb, 0xe7, 0xda, 0xe7, 0x06, 0xe6, 0x08, 0xe6, + 0x91, 0xe4, 0x92, 0xe4, 0x83, 0xe3, 0x83, 0xe3, 0xd6, 0xe2, 0xd9, 0xe2, + 0x95, 0xe2, 0x97, 0xe2, 0xbc, 0xe2, 0xbd, 0xe2, 0x48, 0xe3, 0x4b, 0xe3, + 0x32, 0xe4, 0x32, 0xe4, 0x79, 0xe5, 0x7c, 0xe5, 0x0d, 0xe7, 0x0e, 0xe7, + 0xec, 0xe8, 0xee, 0xe8, 0x06, 0xeb, 0x08, 0xeb, 0x4e, 0xed, 0x51, 0xed, + 0xc3, 0xef, 0xc5, 0xef, 0x47, 0xf2, 0x48, 0xf2, 0xdb, 0xf4, 0xde, 0xf4, + 0x6b, 0xf7, 0x6d, 0xf7, 0xe9, 0xf9, 0xea, 0xf9, 0x4a, 0xfc, 0x4e, 0xfc, + 0x7c, 0xfe, 0x7d, 0xfe, 0x7c, 0x00, 0x7f, 0x00, 0x35, 0x02, 0x37, 0x02, + 0xa5, 0x03, 0xa8, 0x03, 0xc2, 0x04, 0xc4, 0x04, 0x82, 0x05, 0x84, 0x05, + 0xec, 0x05, 0xef, 0x05, 0xf2, 0x05, 0xf3, 0x05, 0xa0, 0x05, 0xa3, 0x05, + 0xef, 0x04, 0xf3, 0x04, 0xeb, 0x03, 0xea, 0x03, 0x97, 0x02, 0x9b, 0x02, + 0xf9, 0x00, 0xfa, 0x00, 0x1c, 0xff, 0x1f, 0xff, 0x06, 0xfd, 0x0a, 0xfd, + 0xc9, 0xfa, 0xca, 0xfa, 0x64, 0xf8, 0x69, 0xf8, 0xeb, 0xf5, 0xed, 0xf5, + 0x66, 0xf3, 0x69, 0xf3, 0xe1, 0xf0, 0xe1, 0xf0, 0x62, 0xee, 0x67, 0xee, + 0xff, 0xeb, 0x02, 0xec, 0xb9, 0xe9, 0xba, 0xe9, 0xa1, 0xe7, 0xa4, 0xe7, + 0xc2, 0xe5, 0xc3, 0xe5, 0x25, 0xe4, 0x29, 0xe4, 0xd4, 0xe2, 0xd6, 0xe2, + 0xd9, 0xe1, 0xda, 0xe1, 0x38, 0xe1, 0x39, 0xe1, 0xfa, 0xe0, 0xfc, 0xe0, + 0x21, 0xe1, 0x23, 0xe1, 0xad, 0xe1, 0xad, 0xe1, 0x9c, 0xe2, 0xa0, 0xe2, + 0xf1, 0xe3, 0xf1, 0xe3, 0xa0, 0xe5, 0xa2, 0xe5, 0xa4, 0xe7, 0xa5, 0xe7, + 0xfa, 0xe9, 0xfa, 0xe9, 0x8c, 0xec, 0x8e, 0xec, 0x59, 0xef, 0x5a, 0xef, + 0x51, 0xf2, 0x50, 0xf2, 0x63, 0xf5, 0x66, 0xf5, 0x88, 0xf8, 0x88, 0xf8, + 0xae, 0xfb, 0xb1, 0xfb, 0xc7, 0xfe, 0xcb, 0xfe, 0xcf, 0x01, 0xcd, 0x01, + 0xa8, 0x04, 0xac, 0x04, 0x53, 0x07, 0x52, 0x07, 0xbe, 0x09, 0xc1, 0x09, + 0xe0, 0x0b, 0xe0, 0x0b, 0xb2, 0x0d, 0xb5, 0x0d, 0x2b, 0x0f, 0x2b, 0x0f, + 0x43, 0x10, 0x46, 0x10, 0xfc, 0x10, 0xfd, 0x10, 0x50, 0x11, 0x51, 0x11, + 0x41, 0x11, 0x43, 0x11, 0xd5, 0x10, 0xd5, 0x10, 0x07, 0x10, 0x0a, 0x10, + 0xec, 0x0e, 0xeb, 0x0e, 0x78, 0x0d, 0x7c, 0x0d, 0xc7, 0x0b, 0xc9, 0x0b, + 0xd4, 0x09, 0xd6, 0x09, 0xaf, 0x07, 0xb2, 0x07, 0x65, 0x05, 0x67, 0x05, + 0xfb, 0x02, 0xfe, 0x02, 0x83, 0x00, 0x85, 0x00, 0x07, 0xfe, 0x08, 0xfe, + 0x90, 0xfb, 0x94, 0xfb, 0x35, 0xf9, 0x34, 0xf9, 0xf5, 0xf6, 0xf9, 0xf6, + 0xe9, 0xf4, 0xea, 0xf4, 0x16, 0xf3, 0x18, 0xf3, 0x8d, 0xf1, 0x8f, 0xf1, + 0x54, 0xf0, 0x58, 0xf0, 0x78, 0xef, 0x7a, 0xef, 0x01, 0xef, 0x02, 0xef, + 0xf0, 0xee, 0xf3, 0xee, 0x48, 0xef, 0x4a, 0xef, 0x09, 0xf0, 0x0c, 0xf0, + 0x32, 0xf1, 0x33, 0xf1, 0xb8, 0xf2, 0xbc, 0xf2, 0x99, 0xf4, 0x99, 0xf4, + 0xc7, 0xf6, 0xcb, 0xf6, 0x40, 0xf9, 0x40, 0xf9, 0xee, 0xfb, 0xf2, 0xfb, + 0xd2, 0xfe, 0xd3, 0xfe, 0xd5, 0x01, 0xd7, 0x01, 0xee, 0x04, 0xf2, 0x04, + 0x13, 0x08, 0x14, 0x08, 0x37, 0x0b, 0x39, 0x0b, 0x4d, 0x0e, 0x50, 0x0e, + 0x4c, 0x11, 0x4d, 0x11, 0x23, 0x14, 0x25, 0x14, 0xc9, 0x16, 0xca, 0x16, + 0x34, 0x19, 0x37, 0x19, 0x5a, 0x1b, 0x5b, 0x1b, 0x30, 0x1d, 0x32, 0x1d, + 0xae, 0x1e, 0xb0, 0x1e, 0xcd, 0x1f, 0xcf, 0x1f, 0x8c, 0x20, 0x8d, 0x20, + 0xdf, 0x20, 0xe1, 0x20, 0xcd, 0x20, 0xcf, 0x20, 0x54, 0x20, 0x58, 0x20, + 0x78, 0x1f, 0x79, 0x1f, 0x3e, 0x1e, 0x40, 0x1e, 0xab, 0x1c, 0xad, 0x1c, + 0xca, 0x1a, 0xcd, 0x1a, 0xa4, 0x18, 0xa8, 0x18, 0x46, 0x16, 0x46, 0x16, + 0xb9, 0x13, 0xbe, 0x13, 0x10, 0x11, 0x12, 0x11, 0x52, 0x0e, 0x56, 0x0e, + 0x94, 0x0b, 0x96, 0x0b, 0xdd, 0x08, 0xe1, 0x08, 0x42, 0x06, 0x45, 0x06, + 0xc8, 0x03, 0xcc, 0x03, 0x85, 0x01, 0x88, 0x01, 0x7b, 0xff, 0x7f, 0xff, + 0xbc, 0xfd, 0xbd, 0xfd, 0x4a, 0xfc, 0x4e, 0xfc, 0x2f, 0xfb, 0x31, 0xfb, + 0x6f, 0xfa, 0x71, 0xfa, 0x0a, 0xfa, 0x0c, 0xfa, 0x02, 0xfa, 0x05, 0xfa, + 0x57, 0xfa, 0x5a, 0xfa, 0x02, 0xfb, 0x04, 0xfb, 0x04, 0xfc, 0x07, 0xfc, + 0x4e, 0xfd, 0x50, 0xfd, 0xe2, 0xfe, 0xe6, 0xfe, 0xb1, 0x00, 0xb2, 0x00, + 0xb1, 0x02, 0xb4, 0x02, 0xde, 0x04, 0xe3, 0x04, 0x2a, 0x07, 0x2a, 0x07, + 0x87, 0x09, 0x8b, 0x09, 0xf2, 0x0b, 0xf2, 0x0b, 0x55, 0x0e, 0x58, 0x0e, + 0xaf, 0x10, 0xb2, 0x10, 0xea, 0x12, 0xeb, 0x12, 0xff, 0x14, 0x04, 0x15, + 0xe2, 0x16, 0xe3, 0x16, 0x82, 0x18, 0x85, 0x18, 0xd9, 0x19, 0xdc, 0x19, + 0xdb, 0x1a, 0xdc, 0x1a, 0x7d, 0x1b, 0x80, 0x1b, 0xbf, 0x1b, 0xbf, 0x1b, + 0x90, 0x1b, 0x94, 0x1b, 0xf8, 0x1a, 0xf9, 0x1a, 0xf2, 0x19, 0xf6, 0x19, + 0x81, 0x18, 0x82, 0x18, 0xad, 0x16, 0xaf, 0x16, 0x78, 0x14, 0x7a, 0x14, + 0xf0, 0x11, 0xf3, 0x11, 0x24, 0x0f, 0x26, 0x0f, 0x14, 0x0c, 0x17, 0x0c, + 0xd9, 0x08, 0xda, 0x08, 0x75, 0x05, 0x78, 0x05, 0xff, 0x01, 0xff, 0x01, + 0x7c, 0xfe, 0x7f, 0xfe, 0x00, 0xfb, 0x02, 0xfb, 0x93, 0xf7, 0x96, 0xf7, + 0x47, 0xf4, 0x4a, 0xf4, 0x27, 0xf1, 0x27, 0xf1, 0x3b, 0xee, 0x3f, 0xee, + 0x97, 0xeb, 0x99, 0xeb, 0x3d, 0xe9, 0x40, 0xe9, 0x3c, 0xe7, 0x3f, 0xe7, + 0x9a, 0xe5, 0x9c, 0xe5, 0x5b, 0xe4, 0x5f, 0xe4, 0x8a, 0xe3, 0x8b, 0xe3, + 0x22, 0xe3, 0x26, 0xe3, 0x27, 0xe3, 0x29, 0xe3, 0x97, 0xe3, 0x9a, 0xe3, + 0x6a, 0xe4, 0x6d, 0xe4, 0x9c, 0xe5, 0x9e, 0xe5, 0x22, 0xe7, 0x25, 0xe7, + 0xf6, 0xe8, 0xf9, 0xe8, 0x0c, 0xeb, 0x0e, 0xeb, 0x58, 0xed, 0x5b, 0xed, + 0xcd, 0xef, 0xcf, 0xef, 0x61, 0xf2, 0x63, 0xf2, 0x04, 0xf5, 0x05, 0xf5, + 0xa7, 0xf7, 0xaa, 0xf7, 0x40, 0xfa, 0x45, 0xfa, 0xbe, 0xfc, 0xc0, 0xfc, + 0x18, 0xff, 0x1b, 0xff, 0x37, 0x01, 0x3a, 0x01, 0x1a, 0x03, 0x1c, 0x03, + 0xae, 0x04, 0xb1, 0x04, 0xee, 0x05, 0xf1, 0x05, 0xd2, 0x06, 0xd4, 0x06, + 0x55, 0x07, 0x58, 0x07, 0x76, 0x07, 0x79, 0x07, 0x32, 0x07, 0x35, 0x07, + 0x90, 0x06, 0x91, 0x06, 0x8f, 0x05, 0x93, 0x05, 0x35, 0x04, 0x37, 0x04, + 0x8f, 0x02, 0x93, 0x02, 0x9e, 0x00, 0xa0, 0x00, 0x72, 0xfe, 0x76, 0xfe, + 0x15, 0xfc, 0x17, 0xfc, 0x8d, 0xf9, 0x8e, 0xf9, 0xec, 0xf6, 0xef, 0xf6, + 0x37, 0xf4, 0x3c, 0xf4, 0x7f, 0xf1, 0x82, 0xf1, 0xd0, 0xee, 0xd3, 0xee, + 0x33, 0xec, 0x34, 0xec, 0xb4, 0xe9, 0xb9, 0xe9, 0x61, 0xe7, 0x63, 0xe7, + 0x46, 0xe5, 0x49, 0xe5, 0x6d, 0xe3, 0x70, 0xe3, 0xe3, 0xe1, 0xe5, 0xe1, + 0xab, 0xe0, 0xaf, 0xe0, 0xd5, 0xdf, 0xd8, 0xdf, 0x64, 0xdf, 0x67, 0xdf, + 0x57, 0xdf, 0x5a, 0xdf, 0xb9, 0xdf, 0xbc, 0xdf, 0x82, 0xe0, 0x85, 0xe0, + 0xb6, 0xe1, 0xb9, 0xe1, 0x4d, 0xe3, 0x50, 0xe3, 0x3f, 0xe5, 0x44, 0xe5, + 0x87, 0xe7, 0x89, 0xe7, 0x15, 0xea, 0x1a, 0xea, 0xe3, 0xec, 0xe7, 0xec, + 0xe0, 0xef, 0xe2, 0xef, 0x01, 0xf3, 0x06, 0xf3, 0x39, 0xf6, 0x3b, 0xf6, + 0x75, 0xf9, 0x7a, 0xf9, 0xae, 0xfc, 0xaf, 0xfc, 0xcd, 0xff, 0xd2, 0xff, + 0xcd, 0x02, 0xd1, 0x02, 0x99, 0x05, 0x9c, 0x05, 0x29, 0x08, 0x2d, 0x08, + 0x70, 0x0a, 0x72, 0x0a, 0x66, 0x0c, 0x6b, 0x0c, 0xfe, 0x0d, 0x00, 0x0e, + 0x37, 0x0f, 0x3c, 0x0f, 0x08, 0x10, 0x0b, 0x10, 0x76, 0x10, 0x78, 0x10, + 0x78, 0x10, 0x7e, 0x10, 0x1a, 0x10, 0x1b, 0x10, 0x59, 0x0f, 0x5f, 0x0f, + 0x3d, 0x0e, 0x3d, 0x0e, 0xcd, 0x0c, 0xd4, 0x0c, 0x13, 0x0b, 0x15, 0x0b, + 0x17, 0x09, 0x1b, 0x09, 0xe7, 0x06, 0xe9, 0x06, 0x86, 0x04, 0x89, 0x04, + 0x0b, 0x02, 0x11, 0x02, 0x77, 0xff, 0x79, 0xff, 0xe0, 0xfc, 0xe3, 0xfc, + 0x4c, 0xfa, 0x50, 0xfa, 0xcb, 0xf7, 0xcf, 0xf7, 0x6d, 0xf5, 0x70, 0xf5, + 0x39, 0xf3, 0x3d, 0xf3, 0x43, 0xf1, 0x46, 0xf1, 0x94, 0xef, 0x97, 0xef, + 0x36, 0xee, 0x3a, 0xee, 0x38, 0xed, 0x3a, 0xed, 0x9e, 0xec, 0xa1, 0xec, + 0x71, 0xec, 0x75, 0xec, 0xb4, 0xec, 0xb6, 0xec, 0x65, 0xed, 0x68, 0xed, + 0x7f, 0xee, 0x82, 0xee, 0x04, 0xf0, 0x07, 0xf0, 0xe5, 0xf1, 0xe8, 0xf1, + 0x20, 0xf4, 0x24, 0xf4, 0xa6, 0xf6, 0xa6, 0xf6, 0x6a, 0xf9, 0x6f, 0xf9, + 0x67, 0xfc, 0x68, 0xfc, 0x88, 0xff, 0x8e, 0xff, 0xc8, 0x02, 0xc9, 0x02, + 0x16, 0x06, 0x1a, 0x06, 0x64, 0x09, 0x66, 0x09, 0xa8, 0x0c, 0xac, 0x0c, + 0xd6, 0x0f, 0xd7, 0x0f, 0xdc, 0x12, 0xdf, 0x12, 0xb5, 0x15, 0xb9, 0x15, + 0x51, 0x18, 0x55, 0x18, 0xa7, 0x1a, 0xa9, 0x1a, 0xac, 0x1c, 0xb0, 0x1c, + 0x59, 0x1e, 0x5a, 0x1e, 0xa0, 0x1f, 0xa5, 0x1f, 0x83, 0x20, 0x87, 0x20, + 0xfb, 0x20, 0xfd, 0x20, 0x09, 0x21, 0x0e, 0x21, 0xab, 0x20, 0xad, 0x20, + 0xe4, 0x1f, 0xe7, 0x1f, 0xba, 0x1e, 0xbd, 0x1e, 0x31, 0x1d, 0x34, 0x1d, + 0x5a, 0x1b, 0x5f, 0x1b, 0x33, 0x19, 0x35, 0x19, 0xd6, 0x16, 0xd7, 0x16, + 0x42, 0x14, 0x48, 0x14, 0x90, 0x11, 0x92, 0x11, 0xc6, 0x0e, 0xcb, 0x0e, + 0xf6, 0x0b, 0xf8, 0x0b, 0x2f, 0x09, 0x32, 0x09, 0x7f, 0x06, 0x83, 0x06, + 0xf5, 0x03, 0xf7, 0x03, 0x9b, 0x01, 0x9e, 0x01, 0x7e, 0xff, 0x81, 0xff, + 0xad, 0xfd, 0xb0, 0xfd, 0x2a, 0xfc, 0x2d, 0xfc, 0x02, 0xfb, 0x05, 0xfb, + 0x35, 0xfa, 0x3a, 0xfa, 0xc9, 0xf9, 0xcb, 0xf9, 0xbf, 0xf9, 0xc3, 0xf9, + 0x13, 0xfa, 0x16, 0xfa, 0xc6, 0xfa, 0xc9, 0xfa, 0xd0, 0xfb, 0xd3, 0xfb, + 0x29, 0xfd, 0x2b, 0xfd, 0xce, 0xfe, 0xd3, 0xfe, 0xb1, 0x00, 0xb1, 0x00, + 0xc9, 0x02, 0xcd, 0x02, 0x0f, 0x05, 0x14, 0x05, 0x79, 0x07, 0x7b, 0x07, + 0xf5, 0x09, 0xf9, 0x09, 0x80, 0x0c, 0x83, 0x0c, 0x09, 0x0f, 0x0b, 0x0f, + 0x81, 0x11, 0x85, 0x11, 0xe7, 0x13, 0xe9, 0x13, 0x1e, 0x16, 0x21, 0x16, + 0x27, 0x18, 0x2c, 0x18, 0xef, 0x19, 0xf0, 0x19, 0x6a, 0x1b, 0x6f, 0x1b, + 0x92, 0x1c, 0x95, 0x1c, 0x56, 0x1d, 0x5b, 0x1d, 0xb9, 0x1d, 0xbc, 0x1d, + 0xac, 0x1d, 0xae, 0x1d, 0x2e, 0x1d, 0x32, 0x1d, 0x43, 0x1c, 0x43, 0x1c, + 0xe5, 0x1a, 0xea, 0x1a, 0x1f, 0x19, 0x22, 0x19, 0xfc, 0x16, 0x00, 0x17, + 0x7b, 0x14, 0x7d, 0x14, 0xb3, 0x11, 0xb7, 0x11, 0xa6, 0x0e, 0xa8, 0x0e, + 0x65, 0x0b, 0x69, 0x0b, 0xff, 0x07, 0x04, 0x08, 0x7c, 0x04, 0x7e, 0x04, + 0xf1, 0x00, 0xf6, 0x00, 0x65, 0xfd, 0x66, 0xfd, 0xeb, 0xf9, 0xef, 0xf9, + 0x8c, 0xf6, 0x8f, 0xf6, 0x57, 0xf3, 0x5b, 0xf3, 0x5a, 0xf0, 0x5e, 0xf0, + 0x9f, 0xed, 0xa1, 0xed, 0x31, 0xeb, 0x35, 0xeb, 0x1b, 0xe9, 0x1f, 0xe9, + 0x63, 0xe7, 0x66, 0xe7, 0x12, 0xe6, 0x15, 0xe6, 0x2c, 0xe5, 0x2d, 0xe5, + 0xb4, 0xe4, 0xb8, 0xe4, 0xa8, 0xe4, 0xa9, 0xe4, 0x0a, 0xe5, 0x0d, 0xe5, + 0xce, 0xe5, 0xd1, 0xe5, 0xf7, 0xe6, 0xf9, 0xe6, 0x72, 0xe8, 0x76, 0xe8, + 0x42, 0xea, 0x43, 0xea, 0x51, 0xec, 0x53, 0xec, 0x99, 0xee, 0x9c, 0xee, + 0x0e, 0xf1, 0x10, 0xf1, 0xa0, 0xf3, 0xa2, 0xf3, 0x43, 0xf6, 0x46, 0xf6, + 0xec, 0xf8, 0xee, 0xf8, 0x87, 0xfb, 0x8b, 0xfb, 0x0c, 0xfe, 0x0e, 0xfe, + 0x67, 0x00, 0x6b, 0x00, 0x92, 0x02, 0x95, 0x02, 0x77, 0x04, 0x7b, 0x04, + 0x15, 0x06, 0x17, 0x06, 0x59, 0x07, 0x5c, 0x07, 0x44, 0x08, 0x46, 0x08, + 0xc7, 0x08, 0xcb, 0x08, 0xed, 0x08, 0xef, 0x08, 0xa8, 0x08, 0xad, 0x08, + 0x06, 0x08, 0x07, 0x08, 0xff, 0x06, 0x04, 0x07, 0xa4, 0x05, 0xa6, 0x05, + 0xf4, 0x03, 0xf6, 0x03, 0xfb, 0x01, 0x00, 0x02, 0xc8, 0xff, 0xc9, 0xff, + 0x5c, 0xfd, 0x62, 0xfd, 0xcb, 0xfa, 0xcd, 0xfa, 0x19, 0xf8, 0x1d, 0xf8, + 0x56, 0xf5, 0x59, 0xf5, 0x8f, 0xf2, 0x91, 0xf2, 0xc7, 0xef, 0xcd, 0xef, + 0x1a, 0xed, 0x1d, 0xed, 0x84, 0xea, 0x89, 0xea, 0x1a, 0xe8, 0x1c, 0xe8, + 0xe4, 0xe5, 0xe8, 0xe5, 0xed, 0xe3, 0xf1, 0xe3, 0x47, 0xe2, 0x4a, 0xe2, + 0xf1, 0xe0, 0xf2, 0xe0, 0xf9, 0xdf, 0xfe, 0xdf, 0x66, 0xdf, 0x69, 0xdf, + 0x38, 0xdf, 0x3c, 0xdf, 0x77, 0xdf, 0x7b, 0xdf, 0x1e, 0xe0, 0x23, 0xe0, + 0x31, 0xe1, 0x33, 0xe1, 0xa4, 0xe2, 0xa9, 0xe2, 0x77, 0xe4, 0x7a, 0xe4, + 0xa0, 0xe6, 0xa4, 0xe6, 0x12, 0xe9, 0x16, 0xe9, 0xc6, 0xeb, 0xc8, 0xeb, + 0xac, 0xee, 0xb2, 0xee, 0xb9, 0xf1, 0xbb, 0xf1, 0xdf, 0xf4, 0xe2, 0xf4, + 0x0b, 0xf8, 0x0f, 0xf8, 0x38, 0xfb, 0x3a, 0xfb, 0x4c, 0xfe, 0x52, 0xfe, + 0x45, 0x01, 0x47, 0x01, 0x08, 0x04, 0x0f, 0x04, 0x98, 0x06, 0x9b, 0x06, + 0xdb, 0x08, 0xe2, 0x08, 0xd4, 0x0a, 0xd7, 0x0a, 0x6f, 0x0c, 0x74, 0x0c, + 0xae, 0x0d, 0xb2, 0x0d, 0x89, 0x0e, 0x8d, 0x0e, 0xfb, 0x0e, 0x02, 0x0f, + 0x0f, 0x0f, 0x12, 0x0f, 0xb7, 0x0e, 0xbf, 0x0e, 0x06, 0x0e, 0x09, 0x0e, + 0xf9, 0x0c, 0xfd, 0x0c, 0x96, 0x0b, 0x9c, 0x0b, 0xf0, 0x09, 0xf4, 0x09, + 0x00, 0x08, 0x05, 0x08, 0xe0, 0x05, 0xe5, 0x05, 0x90, 0x03, 0x92, 0x03, + 0x1e, 0x01, 0x24, 0x01, 0x99, 0xfe, 0x9d, 0xfe, 0x09, 0xfc, 0x0c, 0xfc, + 0x7e, 0xf9, 0x81, 0xf9, 0x00, 0xf7, 0x04, 0xf7, 0xa3, 0xf4, 0xa5, 0xf4, + 0x6e, 0xf2, 0x73, 0xf2, 0x72, 0xf0, 0x74, 0xf0, 0xb7, 0xee, 0xbc, 0xee, + 0x4e, 0xed, 0x51, 0xed, 0x3a, 0xec, 0x3e, 0xec, 0x8f, 0xeb, 0x92, 0xeb, + 0x46, 0xeb, 0x4b, 0xeb, 0x73, 0xeb, 0x76, 0xeb, 0x06, 0xec, 0x0b, 0xec, + 0x0c, 0xed, 0x0e, 0xed, 0x74, 0xee, 0x79, 0xee, 0x42, 0xf0, 0x44, 0xf0, + 0x66, 0xf2, 0x6a, 0xf2, 0xd9, 0xf4, 0xdd, 0xf4, 0x90, 0xf7, 0x94, 0xf7, + 0x7e, 0xfa, 0x83, 0xfa, 0x99, 0xfd, 0x9b, 0xfd, 0xcf, 0x00, 0xd4, 0x00, + 0x19, 0x04, 0x1e, 0x04, 0x66, 0x07, 0x6b, 0x07, 0xae, 0x0a, 0xb4, 0x0a, + 0xe1, 0x0d, 0xe4, 0x0d, 0xef, 0x10, 0xf3, 0x10, 0xd5, 0x13, 0xda, 0x13, + 0x7f, 0x16, 0x83, 0x16, 0xe6, 0x18, 0xed, 0x18, 0x02, 0x1b, 0x05, 0x1b, + 0xc3, 0x1c, 0xc7, 0x1c, 0x2a, 0x1e, 0x2e, 0x1e, 0x27, 0x1f, 0x2a, 0x1f, + 0xc5, 0x1f, 0xca, 0x1f, 0xf1, 0x1f, 0xf5, 0x1f, 0xbb, 0x1f, 0xbd, 0x1f, + 0x17, 0x1f, 0x1c, 0x1f, 0x13, 0x1e, 0x17, 0x1e, 0xb4, 0x1c, 0xb8, 0x1c, + 0xfd, 0x1a, 0x00, 0x1b, 0x01, 0x19, 0x07, 0x19, 0xc2, 0x16, 0xc3, 0x16, + 0x51, 0x14, 0x56, 0x14, 0xbc, 0x11, 0xbf, 0x11, 0x0c, 0x0f, 0x10, 0x0f, + 0x56, 0x0c, 0x5c, 0x0c, 0xa1, 0x09, 0xa4, 0x09, 0x03, 0x07, 0x06, 0x07, + 0x81, 0x04, 0x85, 0x04, 0x31, 0x02, 0x35, 0x02, 0x17, 0x00, 0x1b, 0x00, + 0x45, 0xfe, 0x47, 0xfe, 0xbf, 0xfc, 0xc5, 0xfc, 0x8e, 0xfb, 0x91, 0xfb, + 0xb9, 0xfa, 0xbd, 0xfa, 0x41, 0xfa, 0x47, 0xfa, 0x29, 0xfa, 0x2c, 0xfa, + 0x6f, 0xfa, 0x74, 0xfa, 0x0f, 0xfb, 0x12, 0xfb, 0x08, 0xfc, 0x0b, 0xfc, + 0x50, 0xfd, 0x53, 0xfd, 0xe2, 0xfe, 0xe7, 0xfe, 0xb7, 0x00, 0xb8, 0x00, + 0xbf, 0x02, 0xc3, 0x02, 0xfa, 0x04, 0xfd, 0x04, 0x53, 0x07, 0x58, 0x07, + 0xcb, 0x09, 0xce, 0x09, 0x4a, 0x0c, 0x4e, 0x0c, 0xcf, 0x0e, 0xd3, 0x0e, + 0x48, 0x11, 0x4c, 0x11, 0xb0, 0x13, 0xb2, 0x13, 0xee, 0x15, 0xf2, 0x15, + 0x02, 0x18, 0x07, 0x18, 0xdc, 0x19, 0xdf, 0x19, 0x6d, 0x1b, 0x72, 0x1b, + 0xb4, 0x1c, 0xb6, 0x1c, 0x96, 0x1d, 0x9b, 0x1d, 0x20, 0x1e, 0x22, 0x1e, + 0x39, 0x1e, 0x40, 0x1e, 0xec, 0x1d, 0xef, 0x1d, 0x2f, 0x1d, 0x36, 0x1d, + 0x04, 0x1c, 0x07, 0x1c, 0x71, 0x1a, 0x76, 0x1a, 0x7b, 0x18, 0x7f, 0x18, + 0x2a, 0x16, 0x2d, 0x16, 0x86, 0x13, 0x8e, 0x13, 0xa1, 0x10, 0xa4, 0x10, + 0x80, 0x0d, 0x84, 0x0d, 0x34, 0x0a, 0x3a, 0x0a, 0xca, 0x06, 0xcc, 0x06, + 0x4d, 0x03, 0x54, 0x03, 0xcf, 0xff, 0xd2, 0xff, 0x5b, 0xfc, 0x5f, 0xfc, + 0xff, 0xf8, 0x05, 0xf9, 0xc6, 0xf5, 0xc9, 0xf5, 0xc4, 0xf2, 0xc8, 0xf2, + 0xf9, 0xef, 0xfe, 0xef, 0x7b, 0xed, 0x7f, 0xed, 0x50, 0xeb, 0x55, 0xeb, + 0x7f, 0xe9, 0x85, 0xe9, 0x17, 0xe8, 0x18, 0xe8, 0x0c, 0xe7, 0x13, 0xe7, + 0x77, 0xe6, 0x7b, 0xe6, 0x45, 0xe6, 0x4b, 0xe6, 0x82, 0xe6, 0x85, 0xe6, + 0x22, 0xe7, 0x25, 0xe7, 0x1e, 0xe8, 0x24, 0xe8, 0x77, 0xe9, 0x7c, 0xe9, + 0x1d, 0xeb, 0x23, 0xeb, 0x0b, 0xed, 0x10, 0xed, 0x32, 0xef, 0x37, 0xef, + 0x89, 0xf1, 0x8f, 0xf1, 0xff, 0xf3, 0x05, 0xf4, 0x8e, 0xf6, 0x96, 0xf6, + 0x26, 0xf9, 0x2a, 0xf9, 0xb6, 0xfb, 0xbd, 0xfb, 0x38, 0xfe, 0x3b, 0xfe, + 0x93, 0x00, 0x98, 0x00, 0xc6, 0x02, 0xcb, 0x02, 0xbb, 0x04, 0xbf, 0x04, + 0x69, 0x06, 0x6d, 0x06, 0xc9, 0x07, 0xcc, 0x07, 0xc9, 0x08, 0xd0, 0x08, + 0x72, 0x09, 0x72, 0x09, 0xae, 0x09, 0xb7, 0x09, 0x8c, 0x09, 0x8e, 0x09, + 0x03, 0x09, 0x08, 0x09, 0x17, 0x08, 0x1c, 0x08, 0xd1, 0x06, 0xd6, 0x06, + 0x36, 0x05, 0x39, 0x05, 0x4c, 0x03, 0x53, 0x03, 0x21, 0x01, 0x23, 0x01, + 0xb9, 0xfe, 0xbe, 0xfe, 0x2a, 0xfc, 0x2d, 0xfc, 0x72, 0xf9, 0x77, 0xf9, + 0xa7, 0xf6, 0xac, 0xf6, 0xd1, 0xf3, 0xd3, 0xf3, 0xf8, 0xf0, 0xfe, 0xf0, + 0x31, 0xee, 0x34, 0xee, 0x80, 0xeb, 0x85, 0xeb, 0xf6, 0xe8, 0xfb, 0xe8, + 0x9f, 0xe6, 0xa4, 0xe6, 0x81, 0xe4, 0x86, 0xe4, 0xaf, 0xe2, 0xb3, 0xe2, + 0x2a, 0xe1, 0x2e, 0xe1, 0x02, 0xe0, 0x08, 0xe0, 0x39, 0xdf, 0x3d, 0xdf, + 0xd9, 0xde, 0xdd, 0xde, 0xe1, 0xde, 0xe5, 0xde, 0x52, 0xdf, 0x56, 0xdf, + 0x2e, 0xe0, 0x33, 0xe0, 0x70, 0xe1, 0x74, 0xe1, 0x12, 0xe3, 0x15, 0xe3, + 0x0b, 0xe5, 0x12, 0xe5, 0x56, 0xe7, 0x58, 0xe7, 0xe5, 0xe9, 0xea, 0xe9, + 0xad, 0xec, 0xb2, 0xec, 0x9d, 0xef, 0xa2, 0xef, 0xb1, 0xf2, 0xb4, 0xf2, + 0xce, 0xf5, 0xd3, 0xf5, 0xf4, 0xf8, 0xf9, 0xf8, 0x09, 0xfc, 0x0d, 0xfc, + 0x06, 0xff, 0x0b, 0xff, 0xd9, 0x01, 0xdd, 0x01, 0x73, 0x04, 0x78, 0x04, + 0xd2, 0x06, 0xd7, 0x06, 0xe1, 0x08, 0xe3, 0x08, 0x9b, 0x0a, 0xa1, 0x0a, + 0xf8, 0x0b, 0xfb, 0x0b, 0xf2, 0x0c, 0xf7, 0x0c, 0x8d, 0x0d, 0x90, 0x0d, + 0xb8, 0x0d, 0xbe, 0x0d, 0x8a, 0x0d, 0x8d, 0x0d, 0xf2, 0x0c, 0xf6, 0x0c, + 0x03, 0x0c, 0x05, 0x0c, 0xbb, 0x0a, 0xc0, 0x0a, 0x26, 0x09, 0x29, 0x09, + 0x4e, 0x07, 0x50, 0x07, 0x36, 0x05, 0x3a, 0x05, 0xf4, 0x02, 0xf6, 0x02, + 0x86, 0x00, 0x8b, 0x00, 0x05, 0xfe, 0x08, 0xfe, 0x71, 0xfb, 0x75, 0xfb, + 0xdc, 0xf8, 0xe0, 0xf8, 0x55, 0xf6, 0x56, 0xf6, 0xe1, 0xf3, 0xe6, 0xf3, + 0x98, 0xf1, 0x9b, 0xf1, 0x7c, 0xef, 0x7f, 0xef, 0xa3, 0xed, 0xa8, 0xed, + 0x15, 0xec, 0x18, 0xec, 0xdc, 0xea, 0xe0, 0xea, 0x03, 0xea, 0x06, 0xea, + 0x90, 0xe9, 0x94, 0xe9, 0x8b, 0xe9, 0x8f, 0xe9, 0xf6, 0xe9, 0xfb, 0xe9, + 0xd2, 0xea, 0xd4, 0xea, 0x15, 0xec, 0x1a, 0xec, 0xc3, 0xed, 0xc5, 0xed, + 0xca, 0xef, 0xce, 0xef, 0x29, 0xf2, 0x2d, 0xf2, 0xd4, 0xf4, 0xd6, 0xf4, + 0xb8, 0xf7, 0xbc, 0xf7, 0xd2, 0xfa, 0xd5, 0xfa, 0x10, 0xfe, 0x12, 0xfe, + 0x65, 0x01, 0x69, 0x01, 0xc5, 0x04, 0xc7, 0x04, 0x22, 0x08, 0x27, 0x08, + 0x74, 0x0b, 0x76, 0x0b, 0xa5, 0x0e, 0xaa, 0x0e, 0xb1, 0x11, 0xb5, 0x11, + 0x88, 0x14, 0x8b, 0x14, 0x1e, 0x17, 0x20, 0x17, 0x69, 0x19, 0x6e, 0x19, + 0x61, 0x1b, 0x64, 0x1b, 0xfc, 0x1c, 0xff, 0x1c, 0x34, 0x1e, 0x39, 0x1e, + 0x04, 0x1f, 0x04, 0x1f, 0x65, 0x1f, 0x6b, 0x1f, 0x5f, 0x1f, 0x62, 0x1f, + 0xee, 0x1e, 0xf2, 0x1e, 0x16, 0x1e, 0x1a, 0x1e, 0xdc, 0x1c, 0xe0, 0x1c, + 0x4b, 0x1b, 0x4f, 0x1b, 0x69, 0x19, 0x6e, 0x19, 0x44, 0x17, 0x47, 0x17, + 0xe5, 0x14, 0xea, 0x14, 0x5b, 0x12, 0x5f, 0x12, 0xb3, 0x0f, 0xb6, 0x0f, + 0xf8, 0x0c, 0xfb, 0x0c, 0x3e, 0x0a, 0x43, 0x0a, 0x91, 0x07, 0x94, 0x07, + 0x00, 0x05, 0x03, 0x05, 0x96, 0x02, 0x9a, 0x02, 0x64, 0x00, 0x65, 0x00, + 0x71, 0xfe, 0x76, 0xfe, 0xcf, 0xfc, 0xd2, 0xfc, 0x7c, 0xfb, 0x81, 0xfb, + 0x89, 0xfa, 0x8c, 0xfa, 0xf0, 0xf9, 0xf3, 0xf9, 0xbc, 0xf9, 0xbf, 0xf9, + 0xea, 0xf9, 0xed, 0xf9, 0x74, 0xfa, 0x77, 0xfa, 0x5f, 0xfb, 0x63, 0xfb, + 0x9b, 0xfc, 0x9c, 0xfc, 0x26, 0xfe, 0x29, 0xfe, 0xfb, 0xff, 0xfe, 0xff, + 0x08, 0x02, 0x0b, 0x02, 0x4c, 0x04, 0x4e, 0x04, 0xb4, 0x06, 0xb7, 0x06, + 0x40, 0x09, 0x41, 0x09, 0xd8, 0x0b, 0xdb, 0x0b, 0x78, 0x0e, 0x7b, 0x0e, + 0x16, 0x11, 0x19, 0x11, 0xa1, 0x13, 0xa3, 0x13, 0x0f, 0x16, 0x12, 0x16, + 0x50, 0x18, 0x53, 0x18, 0x5c, 0x1a, 0x5f, 0x1a, 0x24, 0x1c, 0x26, 0x1c, + 0x9f, 0x1d, 0xa2, 0x1d, 0xc0, 0x1e, 0xc2, 0x1e, 0x7e, 0x1f, 0x81, 0x1f, + 0xd4, 0x1f, 0xd8, 0x1f, 0xbf, 0x1f, 0xc1, 0x1f, 0x38, 0x1f, 0x3a, 0x1f, + 0x3e, 0x1e, 0x42, 0x1e, 0xd9, 0x1c, 0xd9, 0x1c, 0x06, 0x1b, 0x0a, 0x1b, + 0xd9, 0x18, 0xda, 0x18, 0x51, 0x16, 0x53, 0x16, 0x7f, 0x13, 0x81, 0x13, + 0x6c, 0x10, 0x6d, 0x10, 0x27, 0x0d, 0x28, 0x0d, 0xbb, 0x09, 0xbe, 0x09, + 0x39, 0x06, 0x3b, 0x06, 0xac, 0x02, 0xb0, 0x02, 0x2a, 0xff, 0x2a, 0xff, + 0xb3, 0xfb, 0xb6, 0xfb, 0x63, 0xf8, 0x65, 0xf8, 0x3a, 0xf5, 0x3c, 0xf5, + 0x51, 0xf2, 0x54, 0xf2, 0xab, 0xef, 0xac, 0xef, 0x58, 0xed, 0x5a, 0xed, + 0x5f, 0xeb, 0x60, 0xeb, 0xc8, 0xe9, 0xcb, 0xe9, 0x9b, 0xe8, 0x9c, 0xe8, + 0xda, 0xe7, 0xdc, 0xe7, 0x87, 0xe7, 0x8a, 0xe7, 0xa0, 0xe7, 0xa0, 0xe7, + 0x22, 0xe8, 0x26, 0xe8, 0x09, 0xe9, 0x0a, 0xe9, 0x4b, 0xea, 0x4c, 0xea, + 0xe4, 0xeb, 0xe8, 0xeb, 0xc3, 0xed, 0xc3, 0xed, 0xe9, 0xef, 0xeb, 0xef, + 0x3b, 0xf2, 0x3d, 0xf2, 0xbc, 0xf4, 0xbc, 0xf4, 0x53, 0xf7, 0x56, 0xf7, + 0xf9, 0xf9, 0xf9, 0xf9, 0x9f, 0xfc, 0xa2, 0xfc, 0x33, 0xff, 0x33, 0xff, + 0xae, 0x01, 0xb0, 0x01, 0xfe, 0x03, 0xff, 0x03, 0x13, 0x06, 0x14, 0x06, + 0xe5, 0x07, 0xe8, 0x07, 0x66, 0x09, 0x66, 0x09, 0x8e, 0x0a, 0x8e, 0x0a, + 0x52, 0x0b, 0x53, 0x0b, 0xb1, 0x0b, 0xb4, 0x0b, 0xa6, 0x0b, 0xa7, 0x0b, + 0x34, 0x0b, 0x36, 0x0b, 0x5b, 0x0a, 0x5d, 0x0a, 0x23, 0x09, 0x22, 0x09, + 0x8b, 0x07, 0x8f, 0x07, 0xa6, 0x05, 0xa5, 0x05, 0x74, 0x03, 0x76, 0x03, + 0x06, 0x01, 0x09, 0x01, 0x63, 0xfe, 0x62, 0xfe, 0x9b, 0xfb, 0x9b, 0xfb, + 0xb6, 0xf8, 0xb7, 0xf8, 0xc1, 0xf5, 0xc1, 0xf5, 0xc8, 0xf2, 0xc9, 0xf2, + 0xd8, 0xef, 0xda, 0xef, 0x00, 0xed, 0x00, 0xed, 0x48, 0xea, 0x4b, 0xea, + 0xc0, 0xe7, 0xc0, 0xe7, 0x6f, 0xe5, 0x70, 0xe5, 0x67, 0xe3, 0x68, 0xe3, + 0xaa, 0xe1, 0xaa, 0xe1, 0x4e, 0xe0, 0x4e, 0xe0, 0x49, 0xdf, 0x4a, 0xdf, + 0xb3, 0xde, 0xb4, 0xde, 0x85, 0xde, 0x87, 0xde, 0xc5, 0xde, 0xc7, 0xde, + 0x75, 0xdf, 0x75, 0xdf, 0x88, 0xe0, 0x8b, 0xe0, 0x09, 0xe2, 0x09, 0xe2, + 0xe2, 0xe3, 0xe3, 0xe3, 0x13, 0xe6, 0x15, 0xe6, 0x8e, 0xe8, 0x8d, 0xe8, + 0x47, 0xeb, 0x49, 0xeb, 0x34, 0xee, 0x34, 0xee, 0x3f, 0xf1, 0x43, 0xf1, + 0x66, 0xf4, 0x66, 0xf4, 0x8f, 0xf7, 0x91, 0xf7, 0xb3, 0xfa, 0xb4, 0xfa, + 0xbe, 0xfd, 0xc0, 0xfd, 0xa4, 0x00, 0xa4, 0x00, 0x57, 0x03, 0x57, 0x03, + 0xc8, 0x05, 0xca, 0x05, 0xf0, 0x07, 0xf1, 0x07, 0xc5, 0x09, 0xc5, 0x09, + 0x39, 0x0b, 0x3a, 0x0b, 0x4f, 0x0c, 0x50, 0x0c, 0xfa, 0x0c, 0xfb, 0x0c, + 0x3f, 0x0d, 0x40, 0x0d, 0x1f, 0x0d, 0x20, 0x0d, 0x98, 0x0c, 0x9a, 0x0c, + 0xb4, 0x0b, 0xb5, 0x0b, 0x75, 0x0a, 0x76, 0x0a, 0xe6, 0x08, 0xe6, 0x08, + 0x11, 0x07, 0x10, 0x07, 0xf6, 0x04, 0xf8, 0x04, 0xae, 0x02, 0xae, 0x02, + 0x38, 0x00, 0x3a, 0x00, 0xa8, 0xfd, 0xa9, 0xfd, 0x03, 0xfb, 0x04, 0xfb, + 0x5b, 0xf8, 0x5e, 0xf8, 0xb9, 0xf5, 0xb8, 0xf5, 0x2b, 0xf3, 0x2e, 0xf3, + 0xc1, 0xf0, 0xc1, 0xf0, 0x85, 0xee, 0x88, 0xee, 0x88, 0xec, 0x87, 0xec, + 0xd3, 0xea, 0xd6, 0xea, 0x71, 0xe9, 0x6f, 0xe9, 0x6f, 0xe8, 0x70, 0xe8, + 0xd1, 0xe7, 0xd3, 0xe7, 0xa8, 0xe7, 0xa7, 0xe7, 0xec, 0xe7, 0xf1, 0xe7, + 0xa6, 0xe8, 0xa5, 0xe8, 0xd1, 0xe9, 0xd4, 0xe9, 0x66, 0xeb, 0x67, 0xeb, + 0x62, 0xed, 0x63, 0xed, 0xb8, 0xef, 0xb8, 0xef, 0x5c, 0xf2, 0x5e, 0xf2, + 0x47, 0xf5, 0x49, 0xf5, 0x69, 0xf8, 0x6b, 0xf8, 0xb4, 0xfb, 0xb5, 0xfb, + 0x1e, 0xff, 0x1f, 0xff, 0x96, 0x02, 0x98, 0x02, 0x0e, 0x06, 0x10, 0x06, + 0x7c, 0x09, 0x7c, 0x09, 0xd1, 0x0c, 0xd4, 0x0c, 0x01, 0x10, 0x01, 0x10, + 0xfc, 0x12, 0xfc, 0x12, 0xba, 0x15, 0xbb, 0x15, 0x2b, 0x18, 0x2d, 0x18, + 0x4f, 0x1a, 0x4e, 0x1a, 0x0e, 0x1c, 0x11, 0x1c, 0x6e, 0x1d, 0x6d, 0x1d, + 0x60, 0x1e, 0x62, 0x1e, 0xe9, 0x1e, 0xe9, 0x1e, 0x01, 0x1f, 0x02, 0x1f, + 0xab, 0x1e, 0xae, 0x1e, 0xee, 0x1d, 0xed, 0x1d, 0xc8, 0x1c, 0xcb, 0x1c, + 0x4c, 0x1b, 0x4b, 0x1b, 0x76, 0x19, 0x79, 0x19, 0x57, 0x17, 0x59, 0x17, + 0x02, 0x15, 0x00, 0x15, 0x74, 0x12, 0x76, 0x12, 0xcb, 0x0f, 0xcb, 0x0f, + 0x08, 0x0d, 0x0b, 0x0d, 0x44, 0x0a, 0x43, 0x0a, 0x86, 0x07, 0x89, 0x07, + 0xe3, 0x04, 0xe2, 0x04, 0x66, 0x02, 0x68, 0x02, 0x1a, 0x00, 0x1a, 0x00, + 0x13, 0xfe, 0x15, 0xfe, 0x55, 0xfc, 0x57, 0xfc, 0xee, 0xfa, 0xee, 0xfa, + 0xe2, 0xf9, 0xe4, 0xf9, 0x37, 0xf9, 0x37, 0xf9, 0xef, 0xf8, 0xf0, 0xf8, + 0x0f, 0xf9, 0x10, 0xf9, 0x8c, 0xf9, 0x8e, 0xf9, 0x6f, 0xfa, 0x70, 0xfa, + 0xa5, 0xfb, 0xa5, 0xfb, 0x31, 0xfd, 0x33, 0xfd, 0x03, 0xff, 0x04, 0xff, + 0x17, 0x01, 0x19, 0x01, 0x64, 0x03, 0x65, 0x03, 0xda, 0x05, 0xdb, 0x05, + 0x71, 0x08, 0x72, 0x08, 0x1f, 0x0b, 0x1d, 0x0b, 0xd1, 0x0d, 0xd4, 0x0d, + 0x87, 0x10, 0x88, 0x10, 0x28, 0x13, 0x2a, 0x13, 0xb8, 0x15, 0xb7, 0x15, + 0x16, 0x18, 0x19, 0x18, 0x46, 0x1a, 0x47, 0x1a, 0x34, 0x1c, 0x35, 0x1c, + 0xd3, 0x1d, 0xd5, 0x1d, 0x20, 0x1f, 0x1f, 0x1f, 0x08, 0x20, 0x0a, 0x20, + 0x8b, 0x20, 0x8c, 0x20, 0xa0, 0x20, 0xa0, 0x20, 0x44, 0x20, 0x46, 0x20, + 0x79, 0x1f, 0x7a, 0x1f, 0x3c, 0x1e, 0x3e, 0x1e, 0x92, 0x1c, 0x95, 0x1c, + 0x88, 0x1a, 0x88, 0x1a, 0x1d, 0x18, 0x1f, 0x18, 0x65, 0x15, 0x66, 0x15, + 0x67, 0x12, 0x69, 0x12, 0x31, 0x0f, 0x32, 0x0f, 0xd3, 0x0b, 0xd5, 0x0b, + 0x56, 0x08, 0x58, 0x08, 0xd0, 0x04, 0xd0, 0x04, 0x45, 0x01, 0x48, 0x01, + 0xcf, 0xfd, 0xd1, 0xfd, 0x77, 0xfa, 0x77, 0xfa, 0x45, 0xf7, 0x48, 0xf7, + 0x52, 0xf4, 0x52, 0xf4, 0x9b, 0xf1, 0x9d, 0xf1, 0x3f, 0xef, 0x40, 0xef, + 0x35, 0xed, 0x35, 0xed, 0x92, 0xeb, 0x94, 0xeb, 0x55, 0xea, 0x55, 0xea, + 0x85, 0xe9, 0x86, 0xe9, 0x22, 0xe9, 0x24, 0xe9, 0x2c, 0xe9, 0x2c, 0xe9, + 0xa1, 0xe9, 0xa1, 0xe9, 0x77, 0xea, 0x77, 0xea, 0xae, 0xeb, 0xaf, 0xeb, + 0x37, 0xed, 0x38, 0xed, 0x0e, 0xef, 0x0e, 0xef, 0x28, 0xf1, 0x27, 0xf1, + 0x73, 0xf3, 0x74, 0xf3, 0xee, 0xf5, 0xef, 0xf5, 0x81, 0xf8, 0x82, 0xf8, + 0x26, 0xfb, 0x26, 0xfb, 0xcd, 0xfd, 0xcf, 0xfd, 0x65, 0x00, 0x63, 0x00, + 0xe7, 0x02, 0xe9, 0x02, 0x3d, 0x05, 0x3d, 0x05, 0x5f, 0x07, 0x60, 0x07, + 0x42, 0x09, 0x43, 0x09, 0xd2, 0x0a, 0xd4, 0x0a, 0x0c, 0x0c, 0x0c, 0x0c, + 0xe0, 0x0c, 0xe2, 0x0c, 0x4d, 0x0d, 0x4d, 0x0d, 0x50, 0x0d, 0x52, 0x0d, + 0xe4, 0x0c, 0xe6, 0x0c, 0x12, 0x0c, 0x13, 0x0c, 0xdb, 0x0a, 0xdb, 0x0a, + 0x3f, 0x09, 0x41, 0x09, 0x52, 0x07, 0x53, 0x07, 0x14, 0x05, 0x16, 0x05, + 0x93, 0x02, 0x95, 0x02, 0xdf, 0xff, 0xe0, 0xff, 0xf9, 0xfc, 0xfc, 0xfc, + 0xfb, 0xf9, 0xfd, 0xf9, 0xe4, 0xf6, 0xe6, 0xf6, 0xc9, 0xf3, 0xcc, 0xf3, + 0xb7, 0xf0, 0xb8, 0xf0, 0xb4, 0xed, 0xb5, 0xed, 0xd6, 0xea, 0xd7, 0xea, + 0x1d, 0xe8, 0x20, 0xe8, 0xa2, 0xe5, 0xa4, 0xe5, 0x69, 0xe3, 0x6a, 0xe3, + 0x7e, 0xe1, 0x82, 0xe1, 0xef, 0xdf, 0xf0, 0xdf, 0xba, 0xde, 0xbd, 0xde, + 0xf5, 0xdd, 0xf5, 0xdd, 0x96, 0xdd, 0x9a, 0xdd, 0xaa, 0xdd, 0xab, 0xdd, + 0x2b, 0xde, 0x2e, 0xde, 0x16, 0xdf, 0x17, 0xdf, 0x70, 0xe0, 0x70, 0xe0, + 0x23, 0xe2, 0x27, 0xe2, 0x36, 0xe4, 0x37, 0xe4, 0x96, 0xe6, 0x98, 0xe6, + 0x37, 0xe9, 0x39, 0xe9, 0x0f, 0xec, 0x11, 0xec, 0x10, 0xef, 0x14, 0xef, + 0x2b, 0xf2, 0x2a, 0xf2, 0x51, 0xf5, 0x55, 0xf5, 0x75, 0xf8, 0x75, 0xf8, + 0x84, 0xfb, 0x86, 0xfb, 0x7a, 0xfe, 0x7c, 0xfe, 0x39, 0x01, 0x39, 0x01, + 0xc2, 0x03, 0xc4, 0x03, 0xff, 0x05, 0x00, 0x06, 0xef, 0x07, 0xf0, 0x07, + 0x83, 0x09, 0x85, 0x09, 0xb1, 0x0a, 0xb3, 0x0a, 0x82, 0x0b, 0x83, 0x0b, + 0xe3, 0x0b, 0xe6, 0x0b, 0xe3, 0x0b, 0xe3, 0x0b, 0x7c, 0x0b, 0x7d, 0x0b, + 0xb1, 0x0a, 0xb4, 0x0a, 0x92, 0x09, 0x92, 0x09, 0x17, 0x08, 0x1a, 0x08, + 0x5a, 0x06, 0x5a, 0x06, 0x58, 0x04, 0x5a, 0x04, 0x1d, 0x02, 0x1f, 0x02, + 0xbc, 0xff, 0xbc, 0xff, 0x37, 0xfd, 0x38, 0xfd, 0xa0, 0xfa, 0xa0, 0xfa, + 0xfc, 0xf7, 0xfe, 0xf7, 0x64, 0xf5, 0x63, 0xf5, 0xd6, 0xf2, 0xd7, 0xf2, + 0x6c, 0xf0, 0x6e, 0xf0, 0x2b, 0xee, 0x2b, 0xee, 0x23, 0xec, 0x25, 0xec, + 0x65, 0xea, 0x65, 0xea, 0xf1, 0xe8, 0xf3, 0xe8, 0xde, 0xe7, 0xde, 0xe7, + 0x2d, 0xe7, 0x2f, 0xe7, 0xe9, 0xe6, 0xea, 0xe6, 0x17, 0xe7, 0x17, 0xe7, + 0xb3, 0xe7, 0xb5, 0xe7, 0xc2, 0xe8, 0xc4, 0xe8, 0x3f, 0xea, 0x3e, 0xea, + 0x1b, 0xec, 0x1f, 0xec, 0x5e, 0xee, 0x5c, 0xee, 0xe9, 0xf0, 0xef, 0xf0, + 0xc3, 0xf3, 0xc3, 0xf3, 0xd7, 0xf6, 0xd7, 0xf6, 0x15, 0xfa, 0x16, 0xfa, + 0x78, 0xfd, 0x79, 0xfd, 0xea, 0x00, 0xe8, 0x00, 0x61, 0x04, 0x63, 0x04, + 0xd3, 0x07, 0xd3, 0x07, 0x2b, 0x0b, 0x2c, 0x0b, 0x65, 0x0e, 0x66, 0x0e, + 0x6c, 0x11, 0x6a, 0x11, 0x38, 0x14, 0x37, 0x14, 0xb9, 0x16, 0xbc, 0x16, + 0xec, 0x18, 0xea, 0x18, 0xc4, 0x1a, 0xc6, 0x1a, 0x35, 0x1c, 0x36, 0x1c, + 0x42, 0x1d, 0x43, 0x1d, 0xe0, 0x1d, 0xe0, 0x1d, 0x0c, 0x1e, 0x0c, 0x1e, + 0xd0, 0x1d, 0xcf, 0x1d, 0x23, 0x1d, 0x22, 0x1d, 0x14, 0x1c, 0x16, 0x1c, + 0xa6, 0x1a, 0xa6, 0x1a, 0xdf, 0x18, 0xe1, 0x18, 0xd5, 0x16, 0xd6, 0x16, + 0x83, 0x14, 0x85, 0x14, 0x04, 0x12, 0x07, 0x12, 0x5f, 0x0f, 0x5e, 0x0f, + 0x9e, 0x0c, 0xa0, 0x0c, 0xd8, 0x09, 0xd9, 0x09, 0x15, 0x07, 0x16, 0x07, + 0x69, 0x04, 0x6a, 0x04, 0xda, 0x01, 0xda, 0x01, 0x80, 0xff, 0x81, 0xff, + 0x60, 0xfd, 0x62, 0xfd, 0x8f, 0xfb, 0x8e, 0xfb, 0x0e, 0xfa, 0x0e, 0xfa, + 0xe7, 0xf8, 0xe6, 0xf8, 0x26, 0xf8, 0x29, 0xf8, 0xc3, 0xf7, 0xc2, 0xf7, + 0xcd, 0xf7, 0xcf, 0xf7, 0x38, 0xf8, 0x38, 0xf8, 0x07, 0xf9, 0x07, 0xf9, + 0x33, 0xfa, 0x34, 0xfa, 0xb2, 0xfb, 0xb2, 0xfb, 0x82, 0xfd, 0x83, 0xfd, + 0x96, 0xff, 0x96, 0xff, 0xe2, 0x01, 0xe4, 0x01, 0x61, 0x04, 0x61, 0x04, + 0xff, 0x06, 0x01, 0x07, 0xbf, 0x09, 0xbf, 0x09, 0x85, 0x0c, 0x84, 0x0c, + 0x4f, 0x0f, 0x50, 0x0f, 0x0e, 0x12, 0x0e, 0x12, 0xb6, 0x14, 0xb7, 0x14, + 0x3c, 0x17, 0x3d, 0x17, 0x90, 0x19, 0x8f, 0x19, 0xa9, 0x1b, 0xaa, 0x1b, + 0x7a, 0x1d, 0x78, 0x1d, 0xf5, 0x1e, 0xf8, 0x1e, 0x19, 0x20, 0x17, 0x20, + 0xd1, 0x20, 0xd4, 0x20, 0x27, 0x21, 0x26, 0x21, 0x07, 0x21, 0x07, 0x21, + 0x7a, 0x20, 0x7c, 0x20, 0x7c, 0x1f, 0x7c, 0x1f, 0x0e, 0x1e, 0x10, 0x1e, + 0x40, 0x1c, 0x3e, 0x1c, 0x09, 0x1a, 0x0c, 0x1a, 0x88, 0x17, 0x87, 0x17, + 0xb8, 0x14, 0xb9, 0x14, 0xab, 0x11, 0xae, 0x11, 0x75, 0x0e, 0x73, 0x0e, + 0x16, 0x0b, 0x19, 0x0b, 0xab, 0x07, 0xad, 0x07, 0x39, 0x04, 0x38, 0x04, + 0xd2, 0x00, 0xd3, 0x00, 0x82, 0xfd, 0x83, 0xfd, 0x57, 0xfa, 0x58, 0xfa, + 0x62, 0xf7, 0x64, 0xf7, 0xaa, 0xf4, 0xab, 0xf4, 0x41, 0xf2, 0x43, 0xf2, + 0x2d, 0xf0, 0x2c, 0xf0, 0x76, 0xee, 0x78, 0xee, 0x25, 0xed, 0x25, 0xed, + 0x3d, 0xec, 0x3d, 0xec, 0xbf, 0xeb, 0xc1, 0xeb, 0xad, 0xeb, 0xae, 0xeb, + 0x06, 0xec, 0x06, 0xec, 0xbe, 0xec, 0xbf, 0xec, 0xdb, 0xed, 0xdc, 0xed, + 0x48, 0xef, 0x47, 0xef, 0x06, 0xf1, 0x09, 0xf1, 0x07, 0xf3, 0x07, 0xf3, + 0x3f, 0xf5, 0x3f, 0xf5, 0xa2, 0xf7, 0xa2, 0xf7, 0x26, 0xfa, 0x27, 0xfa, + 0xbd, 0xfc, 0xbc, 0xfc, 0x58, 0xff, 0x59, 0xff, 0xed, 0x01, 0xeb, 0x01, + 0x69, 0x04, 0x6a, 0x04, 0xc2, 0x06, 0xc1, 0x06, 0xe8, 0x08, 0xe8, 0x08, + 0xcf, 0x0a, 0xcf, 0x0a, 0x6b, 0x0c, 0x6c, 0x0c, 0xac, 0x0d, 0xac, 0x0d, + 0x90, 0x0e, 0x90, 0x0e, 0x0a, 0x0f, 0x0b, 0x0f, 0x19, 0x0f, 0x18, 0x0f, + 0xbf, 0x0e, 0xc0, 0x0e, 0xf4, 0x0d, 0xf4, 0x0d, 0xcb, 0x0c, 0xcb, 0x0c, + 0x37, 0x0b, 0x36, 0x0b, 0x4e, 0x09, 0x50, 0x09, 0x17, 0x07, 0x15, 0x07, + 0x94, 0x04, 0x95, 0x04, 0xdb, 0x01, 0xdb, 0x01, 0xef, 0xfe, 0xef, 0xfe, + 0xe8, 0xfb, 0xe7, 0xfb, 0xc5, 0xf8, 0xc5, 0xf8, 0x99, 0xf5, 0x9b, 0xf5, + 0x70, 0xf2, 0x6f, 0xf2, 0x59, 0xef, 0x5a, 0xef, 0x5d, 0xec, 0x5b, 0xec, + 0x88, 0xe9, 0x87, 0xe9, 0xe9, 0xe6, 0xe9, 0xe6, 0x88, 0xe4, 0x87, 0xe4, + 0x75, 0xe2, 0x75, 0xe2, 0xb7, 0xe0, 0xb6, 0xe0, 0x59, 0xdf, 0x5a, 0xdf, + 0x5f, 0xde, 0x5d, 0xde, 0xd0, 0xdd, 0xd0, 0xdd, 0xb0, 0xdd, 0xb0, 0xdd, + 0x01, 0xde, 0x00, 0xde, 0xbe, 0xde, 0xbe, 0xde, 0xe6, 0xdf, 0xe4, 0xdf, + 0x71, 0xe1, 0x71, 0xe1, 0x59, 0xe3, 0x58, 0xe3, 0x95, 0xe5, 0x94, 0xe5, + 0x15, 0xe8, 0x15, 0xe8, 0xd5, 0xea, 0xd6, 0xea, 0xbe, 0xed, 0xbc, 0xed, + 0xc7, 0xf0, 0xc9, 0xf0, 0xe2, 0xf3, 0xe0, 0xf3, 0xfc, 0xf6, 0xfc, 0xf6, + 0x0c, 0xfa, 0x0a, 0xfa, 0xff, 0xfc, 0xfd, 0xfc, 0xc6, 0xff, 0xc5, 0xff, + 0x55, 0x02, 0x55, 0x02, 0xa1, 0x04, 0xa1, 0x04, 0xa1, 0x06, 0x9f, 0x06, + 0x45, 0x08, 0x45, 0x08, 0x90, 0x09, 0x8d, 0x09, 0x71, 0x0a, 0x71, 0x0a, + 0xef, 0x0a, 0xef, 0x0a, 0x07, 0x0b, 0x05, 0x0b, 0xb7, 0x0a, 0xb7, 0x0a, + 0x09, 0x0a, 0x09, 0x0a, 0xfe, 0x08, 0xfc, 0x08, 0x9c, 0x07, 0x9c, 0x07, + 0xf3, 0x05, 0xf1, 0x05, 0x03, 0x04, 0x01, 0x04, 0xdb, 0x01, 0xdc, 0x01, + 0x84, 0xff, 0x82, 0xff, 0x0d, 0xfd, 0x0d, 0xfd, 0x7e, 0xfa, 0x7d, 0xfa, + 0xe1, 0xf7, 0xdf, 0xf7, 0x48, 0xf5, 0x48, 0xf5, 0xbb, 0xf2, 0xb7, 0xf2, + 0x48, 0xf0, 0x48, 0xf0, 0x00, 0xee, 0xff, 0xed, 0xe9, 0xeb, 0xe8, 0xeb, + 0x16, 0xea, 0x15, 0xea, 0x8f, 0xe8, 0x8e, 0xe8, 0x63, 0xe7, 0x5f, 0xe7, + 0x92, 0xe6, 0x92, 0xe6, 0x2f, 0xe6, 0x2d, 0xe6, 0x36, 0xe6, 0x35, 0xe6, + 0xb3, 0xe6, 0xb2, 0xe6, 0x9c, 0xe7, 0x9d, 0xe7, 0xf7, 0xe8, 0xf6, 0xe8, + 0xb8, 0xea, 0xb8, 0xea, 0xda, 0xec, 0xd9, 0xec, 0x50, 0xef, 0x52, 0xef, + 0x15, 0xf2, 0x13, 0xf2, 0x16, 0xf5, 0x16, 0xf5, 0x4b, 0xf8, 0x49, 0xf8, + 0xa3, 0xfb, 0xa2, 0xfb, 0x11, 0xff, 0x12, 0xff, 0x88, 0x02, 0x85, 0x02, + 0xfa, 0x05, 0xfb, 0x05, 0x59, 0x09, 0x58, 0x09, 0x99, 0x0c, 0x98, 0x0c, + 0xad, 0x0f, 0xac, 0x0f, 0x85, 0x12, 0x84, 0x12, 0x1a, 0x15, 0x1a, 0x15, + 0x5d, 0x17, 0x5b, 0x17, 0x46, 0x19, 0x48, 0x19, 0xd0, 0x1a, 0xcf, 0x1a, + 0xf2, 0x1b, 0xef, 0x1b, 0xa2, 0x1c, 0xa5, 0x1c, 0xea, 0x1c, 0xe8, 0x1c, + 0xc1, 0x1c, 0xc0, 0x1c, 0x2c, 0x1c, 0x2e, 0x1c, 0x34, 0x1b, 0x32, 0x1b, + 0xd8, 0x19, 0xd8, 0x19, 0x2a, 0x18, 0x2a, 0x18, 0x2e, 0x16, 0x2b, 0x16, + 0xed, 0x13, 0xef, 0x13, 0x7c, 0x11, 0x7a, 0x11, 0xdf, 0x0e, 0xde, 0x0e, + 0x28, 0x0c, 0x28, 0x0c, 0x66, 0x09, 0x63, 0x09, 0xa1, 0x06, 0xa3, 0x06, + 0xf2, 0x03, 0xef, 0x03, 0x5f, 0x01, 0x5e, 0x01, 0xfd, 0xfe, 0xfb, 0xfe, + 0xd0, 0xfc, 0xd0, 0xfc, 0xf1, 0xfa, 0xef, 0xfa, 0x62, 0xf9, 0x5f, 0xf9, + 0x2b, 0xf8, 0x2b, 0xf8, 0x5a, 0xf7, 0x58, 0xf7, 0xeb, 0xf6, 0xe9, 0xf6, + 0xe6, 0xf6, 0xe4, 0xf6, 0x45, 0xf7, 0x43, 0xf7, 0x0a, 0xf8, 0x08, 0xf8, + 0x2d, 0xf9, 0x2c, 0xf9, 0xaa, 0xfa, 0xa8, 0xfa, 0x75, 0xfc, 0x74, 0xfc, + 0x87, 0xfe, 0x86, 0xfe, 0xd9, 0x00, 0xd8, 0x00, 0x58, 0x03, 0x57, 0x03, + 0x04, 0x06, 0x02, 0x06, 0xc7, 0x08, 0xc5, 0x08, 0x9e, 0x0b, 0x9c, 0x0b, + 0x74, 0x0e, 0x71, 0x0e, 0x45, 0x11, 0x43, 0x11, 0x01, 0x14, 0x00, 0x14, + 0x9c, 0x16, 0x9b, 0x16, 0x0b, 0x19, 0x08, 0x19, 0x3f, 0x1b, 0x3c, 0x1b, + 0x30, 0x1d, 0x2d, 0x1d, 0xce, 0x1e, 0xcd, 0x1e, 0x14, 0x20, 0x13, 0x20, + 0xf8, 0x20, 0xf6, 0x20, 0x70, 0x21, 0x6e, 0x21, 0x7e, 0x21, 0x7b, 0x21, + 0x1a, 0x21, 0x17, 0x21, 0x46, 0x20, 0x44, 0x20, 0x06, 0x1f, 0x04, 0x1f, + 0x5b, 0x1d, 0x59, 0x1d, 0x52, 0x1b, 0x4f, 0x1b, 0xee, 0x18, 0xec, 0x18, + 0x3f, 0x16, 0x3d, 0x16, 0x50, 0x13, 0x4e, 0x13, 0x2f, 0x10, 0x2d, 0x10, + 0xe6, 0x0c, 0xe5, 0x0c, 0x8a, 0x09, 0x88, 0x09, 0x24, 0x06, 0x22, 0x06, + 0xc4, 0x02, 0xc2, 0x02, 0x7c, 0xff, 0x79, 0xff, 0x52, 0xfc, 0x52, 0xfc, + 0x5d, 0xf9, 0x5a, 0xf9, 0xa3, 0xf6, 0xa1, 0xf6, 0x2f, 0xf4, 0x2e, 0xf4, + 0x16, 0xf2, 0x14, 0xf2, 0x55, 0xf0, 0x51, 0xf0, 0xf6, 0xee, 0xf6, 0xee, + 0x01, 0xee, 0xff, 0xed, 0x72, 0xed, 0x70, 0xed, 0x52, 0xed, 0x52, 0xed, + 0x96, 0xed, 0x94, 0xed, 0x40, 0xee, 0x3f, 0xee, 0x45, 0xef, 0x43, 0xef, + 0xa3, 0xf0, 0xa1, 0xf0, 0x4c, 0xf2, 0x4c, 0xf2, 0x3d, 0xf4, 0x3b, 0xf4, + 0x62, 0xf6, 0x60, 0xf6, 0xb8, 0xf8, 0xb7, 0xf8, 0x2e, 0xfb, 0x2c, 0xfb, + 0xba, 0xfd, 0xb7, 0xfd, 0x4d, 0x00, 0x4b, 0x00, 0xd7, 0x02, 0xd7, 0x02, + 0x57, 0x05, 0x52, 0x05, 0xa9, 0x07, 0xab, 0x07, 0xdb, 0x09, 0xd6, 0x09, + 0xc5, 0x0b, 0xc5, 0x0b, 0x6e, 0x0d, 0x6c, 0x0d, 0xc2, 0x0e, 0xbf, 0x0e, + 0xb4, 0x0f, 0xb4, 0x0f, 0x47, 0x10, 0x42, 0x10, 0x68, 0x10, 0x66, 0x10, + 0x1e, 0x10, 0x1e, 0x10, 0x6d, 0x0f, 0x69, 0x0f, 0x49, 0x0e, 0x48, 0x0e, + 0xca, 0x0c, 0xc7, 0x0c, 0xe6, 0x0a, 0xe4, 0x0a, 0xb5, 0x08, 0xb1, 0x08, + 0x36, 0x06, 0x35, 0x06, 0x79, 0x03, 0x74, 0x03, 0x8e, 0x00, 0x8a, 0x00, + 0x77, 0xfd, 0x74, 0xfd, 0x4b, 0xfa, 0x48, 0xfa, 0x11, 0xf7, 0x0e, 0xf7, + 0xd4, 0xf3, 0xd1, 0xf3, 0xac, 0xf0, 0xa8, 0xf0, 0x94, 0xed, 0x91, 0xed, + 0xaa, 0xea, 0xa5, 0xea, 0xea, 0xe7, 0xe8, 0xe7, 0x71, 0xe5, 0x6c, 0xe5, + 0x3d, 0xe3, 0x3b, 0xe3, 0x5f, 0xe1, 0x5a, 0xe1, 0xdd, 0xdf, 0xdb, 0xdf, + 0xc0, 0xde, 0xbc, 0xde, 0x0a, 0xde, 0x0a, 0xde, 0xc8, 0xdd, 0xc3, 0xdd, + 0xf1, 0xdd, 0xee, 0xdd, 0x8b, 0xde, 0x88, 0xde, 0x8c, 0xdf, 0x89, 0xdf, + 0xf5, 0xe0, 0xf2, 0xe0, 0xbe, 0xe2, 0xb9, 0xe2, 0xd6, 0xe4, 0xd4, 0xe4, + 0x3e, 0xe7, 0x3a, 0xe7, 0xdd, 0xe9, 0xdb, 0xe9, 0xb1, 0xec, 0xae, 0xec, + 0xa4, 0xef, 0xa1, 0xef, 0xad, 0xf2, 0xaa, 0xf2, 0xba, 0xf5, 0xb8, 0xf5, + 0xc2, 0xf8, 0xbf, 0xf8, 0xaf, 0xfb, 0xac, 0xfb, 0x77, 0xfe, 0x73, 0xfe, + 0x09, 0x01, 0x07, 0x01, 0x5e, 0x03, 0x5b, 0x03, 0x64, 0x05, 0x61, 0x05, + 0x19, 0x07, 0x16, 0x07, 0x6e, 0x08, 0x6b, 0x08, 0x62, 0x09, 0x5f, 0x09, + 0xf1, 0x09, 0xee, 0x09, 0x1a, 0x0a, 0x17, 0x0a, 0xdd, 0x09, 0xdb, 0x09, + 0x40, 0x09, 0x3b, 0x09, 0x41, 0x08, 0x40, 0x08, 0xf1, 0x06, 0xec, 0x06, + 0x4f, 0x05, 0x4d, 0x05, 0x6c, 0x03, 0x69, 0x03, 0x4b, 0x01, 0x48, 0x01, + 0xfe, 0xfe, 0xfc, 0xfe, 0x86, 0xfc, 0x84, 0xfc, 0xfc, 0xf9, 0xf7, 0xf9, + 0x5c, 0xf7, 0x5d, 0xf7, 0xc1, 0xf4, 0xbd, 0xf4, 0x2f, 0xf2, 0x2c, 0xf2, + 0xb4, 0xef, 0xb2, 0xef, 0x60, 0xed, 0x5c, 0xed, 0x3a, 0xeb, 0x38, 0xeb, + 0x54, 0xe9, 0x52, 0xe9, 0xba, 0xe7, 0xb5, 0xe7, 0x71, 0xe6, 0x70, 0xe6, + 0x8c, 0xe5, 0x89, 0xe5, 0x07, 0xe5, 0x04, 0xe5, 0xf1, 0xe4, 0xee, 0xe4, + 0x4b, 0xe5, 0x46, 0xe5, 0x15, 0xe6, 0x12, 0xe6, 0x4e, 0xe7, 0x49, 0xe7, + 0xef, 0xe8, 0xed, 0xe8, 0xf2, 0xea, 0xef, 0xea, 0x51, 0xed, 0x4e, 0xed, + 0xf9, 0xef, 0xf5, 0xef, 0xe7, 0xf2, 0xe3, 0xf2, 0x0a, 0xf6, 0x06, 0xf6, + 0x52, 0xf9, 0x51, 0xf9, 0xba, 0xfc, 0xb6, 0xfc, 0x2a, 0x00, 0x26, 0x00, + 0x9a, 0x03, 0x97, 0x03, 0xfd, 0x06, 0xfa, 0x06, 0x43, 0x0a, 0x42, 0x0a, + 0x60, 0x0d, 0x5b, 0x0d, 0x46, 0x10, 0x44, 0x10, 0xed, 0x12, 0xe9, 0x12, + 0x45, 0x15, 0x43, 0x15, 0x49, 0x17, 0x45, 0x17, 0xec, 0x18, 0xea, 0x18, + 0x29, 0x1a, 0x25, 0x1a, 0xfb, 0x1a, 0xfb, 0x1a, 0x60, 0x1b, 0x5c, 0x1b, + 0x57, 0x1b, 0x54, 0x1b, 0xe6, 0x1a, 0xe3, 0x1a, 0x0a, 0x1a, 0x07, 0x1a, + 0xd1, 0x18, 0xd0, 0x18, 0x40, 0x17, 0x3b, 0x17, 0x61, 0x15, 0x5f, 0x15, + 0x3e, 0x13, 0x3b, 0x13, 0xe3, 0x10, 0xdf, 0x10, 0x5e, 0x0e, 0x5b, 0x0e, + 0xb8, 0x0b, 0xb5, 0x0b, 0x05, 0x09, 0x00, 0x09, 0x4b, 0x06, 0x4a, 0x06, + 0xa3, 0x03, 0x9f, 0x03, 0x12, 0x01, 0x10, 0x01, 0xae, 0xfe, 0xaa, 0xfe, + 0x7b, 0xfc, 0x77, 0xfc, 0x90, 0xfa, 0x8e, 0xfa, 0xf4, 0xf8, 0xf0, 0xf8, + 0xaf, 0xf7, 0xaa, 0xf7, 0xca, 0xf6, 0xc9, 0xf6, 0x4a, 0xf6, 0x47, 0xf6, + 0x33, 0xf6, 0x30, 0xf6, 0x81, 0xf6, 0x7e, 0xf6, 0x35, 0xf7, 0x31, 0xf7, + 0x4a, 0xf8, 0x48, 0xf8, 0xbb, 0xf9, 0xb7, 0xf9, 0x7e, 0xfb, 0x7b, 0xfb, + 0x8c, 0xfd, 0x89, 0xfd, 0xd8, 0xff, 0xd3, 0xff, 0x5b, 0x02, 0x59, 0x02, + 0x08, 0x05, 0x04, 0x05, 0xd6, 0x07, 0xd2, 0x07, 0xb2, 0x0a, 0xaf, 0x0a, + 0x99, 0x0d, 0x95, 0x0d, 0x7b, 0x10, 0x79, 0x10, 0x4b, 0x13, 0x45, 0x13, + 0xfe, 0x15, 0xfc, 0x15, 0x85, 0x18, 0x82, 0x18, 0xd9, 0x1a, 0xd6, 0x1a, + 0xe9, 0x1c, 0xe7, 0x1c, 0xad, 0x1e, 0xa8, 0x1e, 0x1b, 0x20, 0x19, 0x20, + 0x25, 0x21, 0x21, 0x21, 0xcc, 0x21, 0xca, 0x21, 0x03, 0x22, 0xff, 0x21, + 0xce, 0x21, 0xca, 0x21, 0x28, 0x21, 0x26, 0x21, 0x13, 0x20, 0x10, 0x20, + 0x96, 0x1e, 0x93, 0x1e, 0xb3, 0x1c, 0xb0, 0x1c, 0x78, 0x1a, 0x74, 0x1a, + 0xed, 0x17, 0xea, 0x17, 0x1e, 0x15, 0x18, 0x15, 0x19, 0x12, 0x16, 0x12, + 0xe9, 0x0e, 0xe3, 0x0e, 0x9f, 0x0b, 0x9b, 0x0b, 0x46, 0x08, 0x44, 0x08, + 0xf3, 0x04, 0xed, 0x04, 0xaf, 0x01, 0xab, 0x01, 0x87, 0xfe, 0x83, 0xfe, + 0x90, 0xfb, 0x8c, 0xfb, 0xcc, 0xf8, 0xc8, 0xf8, 0x54, 0xf6, 0x4f, 0xf6, + 0x29, 0xf4, 0x25, 0xf4, 0x59, 0xf2, 0x53, 0xf2, 0xe8, 0xf0, 0xe5, 0xf0, + 0xda, 0xef, 0xd6, 0xef, 0x3d, 0xef, 0x39, 0xef, 0x02, 0xef, 0xfd, 0xee, + 0x30, 0xef, 0x2c, 0xef, 0xc5, 0xef, 0xc1, 0xef, 0xb5, 0xf0, 0xb0, 0xf0, + 0xfe, 0xf1, 0xfb, 0xf1, 0x99, 0xf3, 0x94, 0xf3, 0x76, 0xf5, 0x71, 0xf5, + 0x92, 0xf7, 0x8f, 0xf7, 0xdc, 0xf9, 0xd7, 0xf9, 0x4c, 0xfc, 0x48, 0xfc, + 0xd3, 0xfe, 0xce, 0xfe, 0x62, 0x01, 0x5d, 0x01, 0xf2, 0x03, 0xf1, 0x03, + 0x71, 0x06, 0x6c, 0x06, 0xd5, 0x08, 0xd2, 0x08, 0x08, 0x0b, 0x05, 0x0b, + 0x08, 0x0d, 0x05, 0x0d, 0xc0, 0x0e, 0xbc, 0x0e, 0x29, 0x10, 0x26, 0x10, + 0x35, 0x11, 0x32, 0x11, 0xdb, 0x11, 0xd7, 0x11, 0x17, 0x12, 0x13, 0x12, + 0xe6, 0x11, 0xe1, 0x11, 0x46, 0x11, 0x44, 0x11, 0x3c, 0x10, 0x37, 0x10, + 0xcb, 0x0e, 0xcb, 0x0e, 0xfc, 0x0c, 0xf7, 0x0c, 0xd4, 0x0a, 0xd0, 0x0a, + 0x5f, 0x08, 0x5c, 0x08, 0xac, 0x05, 0xa5, 0x05, 0xbb, 0x02, 0xba, 0x02, + 0xaa, 0xff, 0xa3, 0xff, 0x76, 0xfc, 0x72, 0xfc, 0x32, 0xf9, 0x30, 0xf9, + 0xec, 0xf5, 0xe7, 0xf5, 0xae, 0xf2, 0xaa, 0xf2, 0x88, 0xef, 0x85, 0xef, + 0x84, 0xec, 0x7e, 0xec, 0xae, 0xe9, 0xab, 0xe9, 0x16, 0xe7, 0x10, 0xe7, + 0xc3, 0xe4, 0xbe, 0xe4, 0xc3, 0xe2, 0xbf, 0xe2, 0x1e, 0xe1, 0x18, 0xe1, + 0xda, 0xdf, 0xd5, 0xdf, 0xff, 0xde, 0xfa, 0xde, 0x93, 0xde, 0x8e, 0xde, + 0x98, 0xde, 0x92, 0xde, 0x09, 0xdf, 0x04, 0xdf, 0xe8, 0xdf, 0xe1, 0xdf, + 0x2d, 0xe1, 0x29, 0xe1, 0xd2, 0xe2, 0xcd, 0xe2, 0xd0, 0xe4, 0xcb, 0xe4, + 0x19, 0xe7, 0x15, 0xe7, 0xa5, 0xe9, 0xa1, 0xe9, 0x64, 0xec, 0x5e, 0xec, + 0x49, 0xef, 0x45, 0xef, 0x45, 0xf2, 0x40, 0xf2, 0x4b, 0xf5, 0x45, 0xf5, + 0x48, 0xf8, 0x47, 0xf8, 0x37, 0xfb, 0x2e, 0xfb, 0xfd, 0xfd, 0xfc, 0xfd, + 0x95, 0x00, 0x8d, 0x00, 0xec, 0x02, 0xe9, 0x02, 0xfb, 0x04, 0xf5, 0x04, + 0xb7, 0x06, 0xb2, 0x06, 0x18, 0x08, 0x13, 0x08, 0x14, 0x09, 0x0f, 0x09, + 0xb0, 0x09, 0xa9, 0x09, 0xdf, 0x09, 0xda, 0x09, 0xad, 0x09, 0xa8, 0x09, + 0x16, 0x09, 0x10, 0x09, 0x20, 0x08, 0x1c, 0x08, 0xd5, 0x06, 0xd0, 0x06, + 0x38, 0x05, 0x32, 0x05, 0x55, 0x03, 0x51, 0x03, 0x37, 0x01, 0x31, 0x01, + 0xe5, 0xfe, 0xe0, 0xfe, 0x6e, 0xfc, 0x69, 0xfc, 0xd8, 0xf9, 0xd3, 0xf9, + 0x36, 0xf7, 0x31, 0xf7, 0x8d, 0xf4, 0x88, 0xf4, 0xec, 0xf1, 0xe7, 0xf1, + 0x62, 0xef, 0x60, 0xef, 0xfb, 0xec, 0xf4, 0xec, 0xbd, 0xea, 0xba, 0xea, + 0xc0, 0xe8, 0xba, 0xe8, 0x07, 0xe7, 0x03, 0xe7, 0xa2, 0xe5, 0x9e, 0xe5, + 0x9b, 0xe4, 0x98, 0xe4, 0xf6, 0xe3, 0xf1, 0xe3, 0xbf, 0xe3, 0xbd, 0xe3, + 0xf7, 0xe3, 0xf0, 0xe3, 0xa0, 0xe4, 0x9d, 0xe4, 0xbb, 0xe5, 0xb5, 0xe5, + 0x3d, 0xe7, 0x3b, 0xe7, 0x2c, 0xe9, 0x24, 0xe9, 0x71, 0xeb, 0x6d, 0xeb, + 0x0d, 0xee, 0x09, 0xee, 0xef, 0xf0, 0xe9, 0xf0, 0x07, 0xf4, 0x04, 0xf4, + 0x51, 0xf7, 0x4b, 0xf7, 0xb3, 0xfa, 0xb1, 0xfa, 0x2b, 0xfe, 0x27, 0xfe, + 0xa2, 0x01, 0x9d, 0x01, 0x0e, 0x05, 0x0b, 0x05, 0x63, 0x08, 0x5e, 0x08, + 0x8e, 0x0b, 0x8a, 0x0b, 0x88, 0x0e, 0x83, 0x0e, 0x3e, 0x11, 0x3b, 0x11, + 0xac, 0x13, 0xa7, 0x13, 0xc1, 0x15, 0xbd, 0x15, 0x7c, 0x17, 0x76, 0x17, + 0xca, 0x18, 0xc8, 0x18, 0xb2, 0x19, 0xac, 0x19, 0x2a, 0x1a, 0x28, 0x1a, + 0x36, 0x1a, 0x30, 0x1a, 0xd5, 0x19, 0xd2, 0x19, 0x0e, 0x19, 0x08, 0x19, + 0xe2, 0x17, 0xe0, 0x17, 0x62, 0x16, 0x5d, 0x16, 0x8c, 0x14, 0x89, 0x14, + 0x76, 0x12, 0x72, 0x12, 0x1f, 0x10, 0x1c, 0x10, 0xa2, 0x0d, 0xa0, 0x0d, + 0x03, 0x0b, 0xfc, 0x0a, 0x4d, 0x08, 0x4a, 0x08, 0x95, 0x05, 0x92, 0x05, + 0xe5, 0x02, 0xe1, 0x02, 0x52, 0x00, 0x4c, 0x00, 0xdd, 0xfd, 0xdb, 0xfd, + 0xa4, 0xfb, 0xa0, 0xfb, 0xaa, 0xf9, 0xa6, 0xf9, 0xff, 0xf7, 0xfb, 0xf7, + 0xb0, 0xf6, 0xac, 0xf6, 0xbe, 0xf5, 0xb9, 0xf5, 0x32, 0xf5, 0x2f, 0xf5, + 0x12, 0xf5, 0x0d, 0xf5, 0x57, 0xf5, 0x53, 0xf5, 0x0a, 0xf6, 0x05, 0xf6, + 0x19, 0xf7, 0x17, 0xf7, 0x90, 0xf8, 0x89, 0xf8, 0x56, 0xfa, 0x53, 0xfa, + 0x6a, 0xfc, 0x64, 0xfc, 0xc4, 0xfe, 0xbf, 0xfe, 0x51, 0x01, 0x4c, 0x01, + 0x11, 0x04, 0x0c, 0x04, 0xec, 0x06, 0xe7, 0x06, 0xde, 0x09, 0xd9, 0x09, + 0xdb, 0x0c, 0xd5, 0x0c, 0xcf, 0x0f, 0xcb, 0x0f, 0xbd, 0x12, 0xb7, 0x12, + 0x85, 0x15, 0x82, 0x15, 0x2d, 0x18, 0x27, 0x18, 0x9a, 0x1a, 0x96, 0x1a, + 0xcc, 0x1c, 0xc4, 0x1c, 0xad, 0x1e, 0xa9, 0x1e, 0x39, 0x20, 0x32, 0x20, + 0x65, 0x21, 0x62, 0x21, 0x2a, 0x22, 0x23, 0x22, 0x82, 0x22, 0x7d, 0x22, + 0x69, 0x22, 0x63, 0x22, 0xde, 0x21, 0xd9, 0x21, 0xe8, 0x20, 0xe2, 0x20, + 0x80, 0x1f, 0x7b, 0x1f, 0xb8, 0x1d, 0xb1, 0x1d, 0x8e, 0x1b, 0x89, 0x1b, + 0x13, 0x19, 0x0e, 0x19, 0x54, 0x16, 0x4e, 0x16, 0x55, 0x13, 0x51, 0x13, + 0x30, 0x10, 0x29, 0x10, 0xe9, 0x0c, 0xe6, 0x0c, 0x95, 0x09, 0x8c, 0x09, + 0x3e, 0x06, 0x3a, 0x06, 0xf5, 0x02, 0xec, 0x02, 0xca, 0xff, 0xc7, 0xff, + 0xc9, 0xfc, 0xc3, 0xfc, 0x02, 0xfa, 0xfc, 0xf9, 0x7e, 0xf7, 0x7a, 0xf7, + 0x4b, 0xf5, 0x45, 0xf5, 0x72, 0xf3, 0x6c, 0xf3, 0xf7, 0xf1, 0xf3, 0xf1, + 0xe5, 0xf0, 0xdf, 0xf0, 0x3e, 0xf0, 0x37, 0xf0, 0xf7, 0xef, 0xf3, 0xef, + 0x25, 0xf0, 0x20, 0xf0, 0xaf, 0xf0, 0xab, 0xf0, 0x9f, 0xf1, 0x9b, 0xf1, + 0xe6, 0xf2, 0xdf, 0xf2, 0x79, 0xf4, 0x75, 0xf4, 0x59, 0xf6, 0x53, 0xf6, + 0x72, 0xf8, 0x6d, 0xf8, 0xbe, 0xfa, 0xb9, 0xfa, 0x30, 0xfd, 0x2c, 0xfd, + 0xb9, 0xff, 0xb4, 0xff, 0x54, 0x02, 0x50, 0x02, 0xe7, 0x04, 0xe1, 0x04, + 0x73, 0x07, 0x6f, 0x07, 0xe0, 0x09, 0xda, 0x09, 0x25, 0x0c, 0x20, 0x0c, + 0x34, 0x0e, 0x2f, 0x0e, 0xfe, 0x0f, 0xf8, 0x0f, 0x7b, 0x11, 0x75, 0x11, + 0x9a, 0x12, 0x97, 0x12, 0x5a, 0x13, 0x54, 0x13, 0xab, 0x13, 0xa6, 0x13, + 0x8d, 0x13, 0x88, 0x13, 0x01, 0x13, 0xfb, 0x12, 0x02, 0x12, 0xfc, 0x11, + 0x9d, 0x10, 0x98, 0x10, 0xd4, 0x0e, 0xcf, 0x0e, 0xac, 0x0c, 0xa8, 0x0c, + 0x39, 0x0a, 0x34, 0x0a, 0x7a, 0x07, 0x74, 0x07, 0x85, 0x04, 0x80, 0x04, + 0x5f, 0x01, 0x5c, 0x01, 0x1d, 0xfe, 0x17, 0xfe, 0xc7, 0xfa, 0xc3, 0xfa, + 0x69, 0xf7, 0x64, 0xf7, 0x16, 0xf4, 0x11, 0xf4, 0xd3, 0xf0, 0xce, 0xf0, + 0xb6, 0xed, 0xb1, 0xed, 0xc4, 0xea, 0xc0, 0xea, 0x0e, 0xe8, 0x09, 0xe8, + 0x9f, 0xe5, 0x9b, 0xe5, 0x82, 0xe3, 0x7c, 0xe3, 0xc0, 0xe1, 0xbb, 0xe1, + 0x61, 0xe0, 0x5b, 0xe0, 0x69, 0xdf, 0x65, 0xdf, 0xe5, 0xde, 0xdf, 0xde, + 0xcc, 0xde, 0xc6, 0xde, 0x29, 0xdf, 0x26, 0xdf, 0xf1, 0xdf, 0xeb, 0xdf, + 0x23, 0xe1, 0x1e, 0xe1, 0xb8, 0xe2, 0xb3, 0xe2, 0xa3, 0xe4, 0x9d, 0xe4, + 0xe0, 0xe6, 0xdc, 0xe6, 0x5e, 0xe9, 0x58, 0xe9, 0x11, 0xec, 0x0c, 0xec, + 0xf1, 0xee, 0xea, 0xee, 0xe4, 0xf1, 0xe1, 0xf1, 0xe9, 0xf4, 0xe3, 0xf4, + 0xe9, 0xf7, 0xe3, 0xf7, 0xd4, 0xfa, 0xd0, 0xfa, 0xa3, 0xfd, 0x9c, 0xfd, + 0x3d, 0x00, 0x38, 0x00, 0x9d, 0x02, 0x98, 0x02, 0xb2, 0x04, 0xac, 0x04, + 0x76, 0x06, 0x72, 0x06, 0xde, 0x07, 0xd7, 0x07, 0xe3, 0x08, 0xde, 0x08, + 0x80, 0x09, 0x7b, 0x09, 0xb5, 0x09, 0xb0, 0x09, 0x83, 0x09, 0x7f, 0x09, + 0xec, 0x08, 0xe6, 0x08, 0xf5, 0x07, 0xef, 0x07, 0xa2, 0x06, 0x9d, 0x06, + 0x00, 0x05, 0xf9, 0x04, 0x12, 0x03, 0x0c, 0x03, 0xe6, 0x00, 0xe1, 0x00, + 0x87, 0xfe, 0x81, 0xfe, 0xff, 0xfb, 0xf9, 0xfb, 0x59, 0xf9, 0x55, 0xf9, + 0xa2, 0xf6, 0x9c, 0xf6, 0xe6, 0xf3, 0xe1, 0xf3, 0x31, 0xf1, 0x2a, 0xf1, + 0x8f, 0xee, 0x8b, 0xee, 0x0e, 0xec, 0x08, 0xec, 0xbc, 0xe9, 0xb7, 0xe9, + 0xa3, 0xe7, 0x9f, 0xe7, 0xd2, 0xe5, 0xcc, 0xe5, 0x51, 0xe4, 0x4e, 0xe4, + 0x31, 0xe3, 0x2a, 0xe3, 0x73, 0xe2, 0x70, 0xe2, 0x22, 0xe2, 0x1a, 0xe2, + 0x40, 0xe2, 0x3b, 0xe2, 0xd1, 0xe2, 0xcd, 0xe2, 0xd7, 0xe3, 0xd1, 0xe3, + 0x49, 0xe5, 0x44, 0xe5, 0x23, 0xe7, 0x1d, 0xe7, 0x5d, 0xe9, 0x59, 0xe9, + 0xed, 0xeb, 0xe8, 0xeb, 0xc6, 0xee, 0xc3, 0xee, 0xdf, 0xf1, 0xd8, 0xf1, + 0x25, 0xf5, 0x21, 0xf5, 0x8d, 0xf8, 0x87, 0xf8, 0x06, 0xfc, 0x03, 0xfc, + 0x89, 0xff, 0x83, 0xff, 0xff, 0x02, 0xfa, 0x02, 0x5f, 0x06, 0x5a, 0x06, + 0x9c, 0x09, 0x95, 0x09, 0xa2, 0x0c, 0x9d, 0x0c, 0x6e, 0x0f, 0x6a, 0x0f, + 0xee, 0x11, 0xe7, 0x11, 0x17, 0x14, 0x13, 0x14, 0xe6, 0x15, 0xe0, 0x15, + 0x47, 0x17, 0x42, 0x17, 0x43, 0x18, 0x3e, 0x18, 0xcd, 0x18, 0xc7, 0x18, + 0xec, 0x18, 0xe5, 0x18, 0x9b, 0x18, 0x95, 0x18, 0xe1, 0x17, 0xdc, 0x17, + 0xc9, 0x16, 0xc2, 0x16, 0x51, 0x15, 0x4b, 0x15, 0x88, 0x13, 0x82, 0x13, + 0x7c, 0x11, 0x75, 0x11, 0x2e, 0x0f, 0x29, 0x0f, 0xb6, 0x0c, 0xaf, 0x0c, + 0x17, 0x0a, 0x11, 0x0a, 0x67, 0x07, 0x60, 0x07, 0xae, 0x04, 0xa7, 0x04, + 0xfb, 0x01, 0xf5, 0x01, 0x62, 0xff, 0x59, 0xff, 0xea, 0xfc, 0xe3, 0xfc, + 0xa5, 0xfa, 0xa0, 0xfa, 0xa1, 0xf8, 0x9a, 0xf8, 0xeb, 0xf6, 0xe6, 0xf6, + 0x8e, 0xf5, 0x87, 0xf5, 0x92, 0xf4, 0x8e, 0xf4, 0xfc, 0xf3, 0xf4, 0xf3, + 0xd2, 0xf3, 0xcd, 0xf3, 0x12, 0xf4, 0x09, 0xf4, 0xbc, 0xf4, 0xb7, 0xf4, + 0xd1, 0xf5, 0xc9, 0xf5, 0x40, 0xf7, 0x3d, 0xf7, 0x11, 0xf9, 0x08, 0xf9, + 0x2a, 0xfb, 0x27, 0xfb, 0x8f, 0xfd, 0x88, 0xfd, 0x2c, 0x00, 0x27, 0x00, + 0xf8, 0x02, 0xf1, 0x02, 0xe9, 0x05, 0xe4, 0x05, 0xf0, 0x08, 0xea, 0x08, + 0x02, 0x0c, 0xff, 0x0b, 0x15, 0x0f, 0x0c, 0x0f, 0x17, 0x12, 0x14, 0x12, + 0x00, 0x15, 0xfc, 0x14, 0xc2, 0x17, 0xbe, 0x17, 0x52, 0x1a, 0x4e, 0x1a, + 0x9c, 0x1c, 0x97, 0x1c, 0xa4, 0x1e, 0x9e, 0x1e, 0x4d, 0x20, 0x48, 0x20, + 0x9b, 0x21, 0x97, 0x21, 0x80, 0x22, 0x7b, 0x22, 0xf7, 0x22, 0xf3, 0x22, + 0x03, 0x23, 0xfc, 0x22, 0x90, 0x22, 0x8e, 0x22, 0xb9, 0x21, 0xb3, 0x21, + 0x6a, 0x20, 0x66, 0x20, 0xb8, 0x1e, 0xb4, 0x1e, 0xa8, 0x1c, 0xa2, 0x1c, + 0x3d, 0x1a, 0x39, 0x1a, 0x8d, 0x17, 0x88, 0x17, 0xa0, 0x14, 0x9b, 0x14, + 0x84, 0x11, 0x80, 0x11, 0x45, 0x0e, 0x41, 0x0e, 0xf6, 0x0a, 0xf2, 0x0a, + 0xa1, 0x07, 0x9c, 0x07, 0x5a, 0x04, 0x57, 0x04, 0x2e, 0x01, 0x28, 0x01, + 0x2a, 0xfe, 0x24, 0xfe, 0x5c, 0xfb, 0x58, 0xfb, 0xd3, 0xf8, 0xce, 0xf8, + 0x97, 0xf6, 0x94, 0xf6, 0xb8, 0xf4, 0xb0, 0xf4, 0x31, 0xf3, 0x30, 0xf3, + 0x1c, 0xf2, 0x13, 0xf2, 0x63, 0xf1, 0x61, 0xf1, 0x20, 0xf1, 0x18, 0xf1, + 0x3e, 0xf1, 0x3b, 0xf1, 0xc9, 0xf1, 0xc3, 0xf1, 0xb2, 0xf2, 0xab, 0xf2, + 0xf5, 0xf3, 0xf1, 0xf3, 0x8c, 0xf5, 0x84, 0xf5, 0x69, 0xf7, 0x65, 0xf7, + 0x88, 0xf9, 0x80, 0xf9, 0xd4, 0xfb, 0xd0, 0xfb, 0x4e, 0xfe, 0x47, 0xfe, + 0xde, 0x00, 0xd9, 0x00, 0x7e, 0x03, 0x79, 0x03, 0x22, 0x06, 0x1c, 0x06, + 0xb5, 0x08, 0xae, 0x08, 0x35, 0x0b, 0x2f, 0x0b, 0x86, 0x0d, 0x7f, 0x0d, + 0xa7, 0x0f, 0xa3, 0x0f, 0x83, 0x11, 0x7f, 0x11, 0x12, 0x13, 0x0c, 0x13, + 0x49, 0x14, 0x45, 0x14, 0x1a, 0x15, 0x14, 0x15, 0x81, 0x15, 0x7d, 0x15, + 0x75, 0x15, 0x6f, 0x15, 0xfb, 0x14, 0xf7, 0x14, 0x10, 0x14, 0x0a, 0x14, + 0xb6, 0x12, 0xb2, 0x12, 0xf7, 0x10, 0xf2, 0x10, 0xd9, 0x0e, 0xd4, 0x0e, + 0x66, 0x0c, 0x63, 0x0c, 0xaf, 0x09, 0xa8, 0x09, 0xb5, 0x06, 0xb0, 0x06, + 0x90, 0x03, 0x8a, 0x03, 0x43, 0x00, 0x3f, 0x00, 0xe6, 0xfc, 0xe0, 0xfc, + 0x7b, 0xf9, 0x76, 0xf9, 0x19, 0xf6, 0x15, 0xf6, 0xc7, 0xf2, 0xc2, 0xf2, + 0x97, 0xef, 0x90, 0xef, 0x92, 0xec, 0x8d, 0xec, 0xc6, 0xe9, 0xbf, 0xe9, + 0x3e, 0xe7, 0x3a, 0xe7, 0x07, 0xe5, 0x00, 0xe5, 0x2b, 0xe3, 0x27, 0xe3, + 0xb0, 0xe1, 0xab, 0xe1, 0xa1, 0xe0, 0x99, 0xe0, 0xfb, 0xdf, 0xfb, 0xdf, + 0xcc, 0xdf, 0xc3, 0xdf, 0x0b, 0xe0, 0x08, 0xe0, 0xb8, 0xe0, 0xb2, 0xe0, + 0xd2, 0xe1, 0xcd, 0xe1, 0x4d, 0xe3, 0x48, 0xe3, 0x24, 0xe5, 0x1f, 0xe5, + 0x4c, 0xe7, 0x46, 0xe7, 0xb7, 0xe9, 0xb2, 0xe9, 0x5d, 0xec, 0x58, 0xec, + 0x2b, 0xef, 0x25, 0xef, 0x17, 0xf2, 0x13, 0xf2, 0x11, 0xf5, 0x0a, 0xf5, + 0x07, 0xf8, 0x03, 0xf8, 0xf1, 0xfa, 0xeb, 0xfa, 0xb8, 0xfd, 0xb5, 0xfd, + 0x55, 0x00, 0x4e, 0x00, 0xb2, 0x02, 0xad, 0x02, 0xc9, 0x04, 0xc4, 0x04, + 0x8e, 0x06, 0x89, 0x06, 0xf7, 0x07, 0xf3, 0x07, 0xff, 0x08, 0xfa, 0x08, + 0xa0, 0x09, 0x9c, 0x09, 0xd7, 0x09, 0xd0, 0x09, 0xa6, 0x09, 0xa2, 0x09, + 0x13, 0x09, 0x0d, 0x09, 0x1a, 0x08, 0x15, 0x08, 0xca, 0x06, 0xc3, 0x06, + 0x22, 0x05, 0x1e, 0x05, 0x35, 0x03, 0x2f, 0x03, 0x07, 0x01, 0x01, 0x01, + 0xa2, 0xfe, 0x9e, 0xfe, 0x16, 0xfc, 0x0f, 0xfc, 0x69, 0xf9, 0x63, 0xf9, + 0xaa, 0xf6, 0xa4, 0xf6, 0xe4, 0xf3, 0xde, 0xf3, 0x23, 0xf1, 0x1e, 0xf1, + 0x74, 0xee, 0x6f, 0xee, 0xe4, 0xeb, 0xde, 0xeb, 0x7e, 0xe9, 0x7b, 0xe9, + 0x52, 0xe7, 0x4b, 0xe7, 0x69, 0xe5, 0x64, 0xe5, 0xd1, 0xe3, 0xca, 0xe3, + 0x92, 0xe2, 0x8d, 0xe2, 0xb9, 0xe1, 0xb2, 0xe1, 0x47, 0xe1, 0x43, 0xe1, + 0x48, 0xe1, 0x42, 0xe1, 0xba, 0xe1, 0xb4, 0xe1, 0x9c, 0xe2, 0x98, 0xe2, + 0xf2, 0xe3, 0xeb, 0xe3, 0xaf, 0xe5, 0xab, 0xe5, 0xd0, 0xe7, 0xcb, 0xe7, + 0x49, 0xea, 0x43, 0xea, 0x0c, 0xed, 0x09, 0xed, 0x16, 0xf0, 0x11, 0xf0, + 0x4c, 0xf3, 0x47, 0xf3, 0xaa, 0xf6, 0xa6, 0xf6, 0x1f, 0xfa, 0x1a, 0xfa, + 0x9b, 0xfd, 0x94, 0xfd, 0x11, 0x01, 0x0e, 0x01, 0x72, 0x04, 0x6b, 0x04, + 0xb1, 0x07, 0xaf, 0x07, 0xbf, 0x0a, 0xba, 0x0a, 0x93, 0x0d, 0x8d, 0x0d, + 0x1e, 0x10, 0x19, 0x10, 0x52, 0x12, 0x4d, 0x12, 0x2d, 0x14, 0x26, 0x14, + 0xa0, 0x15, 0x9b, 0x15, 0xaa, 0x16, 0xa4, 0x16, 0x48, 0x17, 0x44, 0x17, + 0x77, 0x17, 0x71, 0x17, 0x3b, 0x17, 0x35, 0x17, 0x96, 0x16, 0x91, 0x16, + 0x8d, 0x15, 0x87, 0x15, 0x2c, 0x14, 0x26, 0x14, 0x76, 0x12, 0x74, 0x12, + 0x7a, 0x10, 0x73, 0x10, 0x42, 0x0e, 0x3d, 0x0e, 0xd5, 0x0b, 0xd0, 0x0b, + 0x46, 0x09, 0x41, 0x09, 0xa1, 0x06, 0x9c, 0x06, 0xf0, 0x03, 0xec, 0x03, + 0x47, 0x01, 0x41, 0x01, 0xaf, 0xfe, 0xab, 0xfe, 0x38, 0xfc, 0x32, 0xfc, + 0xf2, 0xf9, 0xec, 0xf9, 0xe6, 0xf7, 0xe3, 0xf7, 0x27, 0xf6, 0x20, 0xf6, + 0xbc, 0xf4, 0xb9, 0xf4, 0xb4, 0xf3, 0xae, 0xf3, 0x0d, 0xf3, 0x09, 0xf3, + 0xd6, 0xf2, 0xd0, 0xf2, 0x06, 0xf3, 0x03, 0xf3, 0xa7, 0xf3, 0xa2, 0xf3, + 0xad, 0xf4, 0xa7, 0xf4, 0x14, 0xf6, 0x11, 0xf6, 0xdc, 0xf7, 0xd6, 0xf7, + 0xf0, 0xf9, 0xed, 0xf9, 0x51, 0xfc, 0x4c, 0xfc, 0xea, 0xfe, 0xe6, 0xfe, + 0xbb, 0x01, 0xb5, 0x01, 0xaa, 0x04, 0xa7, 0x04, 0xbb, 0x07, 0xb5, 0x07, + 0xd4, 0x0a, 0xcf, 0x0a, 0xeb, 0x0d, 0xe7, 0x0d, 0xfc, 0x10, 0xf8, 0x10, + 0xf3, 0x13, 0xee, 0x13, 0xc7, 0x16, 0xc2, 0x16, 0x66, 0x19, 0x61, 0x19, + 0xc8, 0x1b, 0xc5, 0x1b, 0xe4, 0x1d, 0xde, 0x1d, 0xa9, 0x1f, 0xa5, 0x1f, + 0x12, 0x21, 0x0d, 0x21, 0x15, 0x22, 0x13, 0x22, 0xaf, 0x22, 0xa9, 0x22, + 0xd6, 0x22, 0xd3, 0x22, 0x8d, 0x22, 0x89, 0x22, 0xd5, 0x21, 0xd0, 0x21, + 0xad, 0x20, 0xa9, 0x20, 0x1e, 0x1f, 0x1b, 0x1f, 0x30, 0x1d, 0x2b, 0x1d, + 0xe7, 0x1a, 0xe2, 0x1a, 0x59, 0x18, 0x54, 0x18, 0x84, 0x15, 0x81, 0x15, + 0x84, 0x12, 0x7d, 0x12, 0x5b, 0x0f, 0x58, 0x0f, 0x1f, 0x0c, 0x19, 0x0c, + 0xdd, 0x08, 0xdb, 0x08, 0xa1, 0x05, 0x9c, 0x05, 0x80, 0x02, 0x7c, 0x02, + 0x83, 0xff, 0x7f, 0xff, 0xb9, 0xfc, 0xb5, 0xfc, 0x31, 0xfa, 0x2d, 0xfa, + 0xf3, 0xf7, 0xee, 0xf7, 0x0c, 0xf6, 0x0a, 0xf6, 0x83, 0xf4, 0x7e, 0xf4, + 0x5f, 0xf3, 0x59, 0xf3, 0xa0, 0xf2, 0x9d, 0xf2, 0x4a, 0xf2, 0x47, 0xf2, + 0x60, 0xf2, 0x5c, 0xf2, 0xd7, 0xf2, 0xd4, 0xf2, 0xb4, 0xf3, 0xae, 0xf3, + 0xe3, 0xf4, 0xe1, 0xf4, 0x69, 0xf6, 0x64, 0xf6, 0x39, 0xf8, 0x37, 0xf8, + 0x43, 0xfa, 0x3f, 0xfa, 0x86, 0xfc, 0x83, 0xfc, 0xf0, 0xfe, 0xec, 0xfe, + 0x74, 0x01, 0x6f, 0x01, 0x0e, 0x04, 0x0b, 0x04, 0xa6, 0x06, 0xa2, 0x06, + 0x3b, 0x09, 0x38, 0x09, 0xb5, 0x0b, 0xb2, 0x0b, 0x0e, 0x0e, 0x09, 0x0e, + 0x35, 0x10, 0x33, 0x10, 0x1c, 0x12, 0x18, 0x12, 0xbc, 0x13, 0xba, 0x13, + 0x04, 0x15, 0xff, 0x14, 0xee, 0x15, 0xec, 0x15, 0x72, 0x16, 0x6c, 0x16, + 0x83, 0x16, 0x82, 0x16, 0x2b, 0x16, 0x27, 0x16, 0x5e, 0x15, 0x5b, 0x15, + 0x24, 0x14, 0x20, 0x14, 0x84, 0x12, 0x7f, 0x12, 0x7d, 0x10, 0x7a, 0x10, + 0x28, 0x0e, 0x23, 0x0e, 0x7e, 0x0b, 0x79, 0x0b, 0x98, 0x08, 0x94, 0x08, + 0x7c, 0x05, 0x79, 0x05, 0x3a, 0x02, 0x36, 0x02, 0xe0, 0xfe, 0xdc, 0xfe, + 0x78, 0xfb, 0x74, 0xfb, 0x12, 0xf8, 0x0f, 0xf8, 0xbb, 0xf4, 0xb6, 0xf4, + 0x7f, 0xf1, 0x7c, 0xf1, 0x6f, 0xee, 0x6e, 0xee, 0x93, 0xeb, 0x8e, 0xeb, + 0xf8, 0xe8, 0xf8, 0xe8, 0xb0, 0xe6, 0xaa, 0xe6, 0xb7, 0xe4, 0xb5, 0xe4, + 0x25, 0xe3, 0x22, 0xe3, 0xf4, 0xe1, 0xf1, 0xe1, 0x35, 0xe1, 0x32, 0xe1, + 0xe0, 0xe0, 0xdf, 0xe0, 0xff, 0xe0, 0xfb, 0xe0, 0x8b, 0xe1, 0x88, 0xe1, + 0x7d, 0xe2, 0x7c, 0xe2, 0xd9, 0xe3, 0xd2, 0xe3, 0x87, 0xe5, 0x87, 0xe5, + 0x8e, 0xe7, 0x8a, 0xe7, 0xd8, 0xe9, 0xd4, 0xe9, 0x5a, 0xec, 0x57, 0xec, + 0x0e, 0xef, 0x0b, 0xef, 0xdc, 0xf1, 0xda, 0xf1, 0xc1, 0xf4, 0xbe, 0xf4, + 0xa3, 0xf7, 0xa2, 0xf7, 0x7d, 0xfa, 0x79, 0xfa, 0x39, 0xfd, 0x39, 0xfd, + 0xd3, 0xff, 0xcd, 0xff, 0x29, 0x02, 0x2b, 0x02, 0x48, 0x04, 0x42, 0x04, + 0x0f, 0x06, 0x0f, 0x06, 0x82, 0x07, 0x7e, 0x07, 0x95, 0x08, 0x93, 0x08, + 0x3f, 0x09, 0x3d, 0x09, 0x84, 0x09, 0x83, 0x09, 0x63, 0x09, 0x60, 0x09, + 0xda, 0x08, 0xd8, 0x08, 0xf1, 0x07, 0xed, 0x07, 0xa8, 0x06, 0xa6, 0x06, + 0x0f, 0x05, 0x0c, 0x05, 0x26, 0x03, 0x24, 0x03, 0xff, 0x00, 0xfc, 0x00, + 0x9e, 0xfe, 0x9c, 0xfe, 0x11, 0xfc, 0x10, 0xfc, 0x66, 0xf9, 0x64, 0xf9, + 0xa4, 0xf6, 0xa1, 0xf6, 0xd8, 0xf3, 0xd8, 0xf3, 0x11, 0xf1, 0x0d, 0xf1, + 0x54, 0xee, 0x53, 0xee, 0xbd, 0xeb, 0xb9, 0xeb, 0x45, 0xe9, 0x43, 0xe9, + 0x0a, 0xe7, 0x07, 0xe7, 0x09, 0xe5, 0x09, 0xe5, 0x5b, 0xe3, 0x58, 0xe3, + 0x03, 0xe2, 0x00, 0xe2, 0x08, 0xe1, 0x07, 0xe1, 0x7e, 0xe0, 0x7b, 0xe0, + 0x55, 0xe0, 0x54, 0xe0, 0xa8, 0xe0, 0xa6, 0xe0, 0x66, 0xe1, 0x63, 0xe1, + 0x93, 0xe2, 0x92, 0xe2, 0x30, 0xe4, 0x2d, 0xe4, 0x28, 0xe6, 0x27, 0xe6, + 0x85, 0xe8, 0x82, 0xe8, 0x28, 0xeb, 0x27, 0xeb, 0x12, 0xee, 0x0e, 0xee, + 0x35, 0xf1, 0x34, 0xf1, 0x7a, 0xf4, 0x78, 0xf4, 0xe2, 0xf7, 0xdf, 0xf7, + 0x4e, 0xfb, 0x4d, 0xfb, 0xbd, 0xfe, 0xb9, 0xfe, 0x19, 0x02, 0x1a, 0x02, + 0x55, 0x05, 0x52, 0x05, 0x6b, 0x08, 0x69, 0x08, 0x44, 0x0b, 0x3e, 0x0b, + 0xd6, 0x0d, 0xd7, 0x0d, 0x1a, 0x10, 0x18, 0x10, 0x03, 0x12, 0x01, 0x12, + 0x8c, 0x13, 0x8b, 0x13, 0xab, 0x14, 0xa9, 0x14, 0x61, 0x15, 0x5f, 0x15, + 0xaa, 0x15, 0xa9, 0x15, 0x88, 0x15, 0x87, 0x15, 0x01, 0x15, 0xff, 0x14, + 0x14, 0x14, 0x13, 0x14, 0xcc, 0x12, 0xca, 0x12, 0x35, 0x11, 0x34, 0x11, + 0x4c, 0x0f, 0x4b, 0x0f, 0x2f, 0x0d, 0x2d, 0x0d, 0xd7, 0x0a, 0xd4, 0x0a, + 0x5d, 0x08, 0x5b, 0x08, 0xc8, 0x05, 0xc6, 0x05, 0x24, 0x03, 0x25, 0x03, + 0x87, 0x00, 0x84, 0x00, 0xf4, 0xfd, 0xf4, 0xfd, 0x86, 0xfb, 0x82, 0xfb, + 0x3a, 0xf9, 0x3a, 0xf9, 0x2d, 0xf7, 0x2d, 0xf7, 0x66, 0xf5, 0x63, 0xf5, + 0xef, 0xf3, 0xee, 0xf3, 0xd9, 0xf2, 0xd9, 0xf2, 0x23, 0xf2, 0x21, 0xf2, + 0xdc, 0xf1, 0xda, 0xf1, 0xf9, 0xf1, 0xfa, 0xf1, 0x8a, 0xf2, 0x88, 0xf2, + 0x7f, 0xf3, 0x7e, 0xf3, 0xd7, 0xf4, 0xd8, 0xf4, 0x8f, 0xf6, 0x8d, 0xf6, + 0x9b, 0xf8, 0x9b, 0xf8, 0xf2, 0xfa, 0xef, 0xfa, 0x8a, 0xfd, 0x8a, 0xfd, + 0x55, 0x00, 0x54, 0x00, 0x48, 0x03, 0x48, 0x03, 0x5a, 0x06, 0x58, 0x06, + 0x7b, 0x09, 0x7b, 0x09, 0xa1, 0x0c, 0x9e, 0x0c, 0xbb, 0x0f, 0xbb, 0x0f, + 0xc3, 0x12, 0xc1, 0x12, 0xa5, 0x15, 0xa6, 0x15, 0x5c, 0x18, 0x5b, 0x18, + 0xd6, 0x1a, 0xd4, 0x1a, 0x0a, 0x1d, 0x0a, 0x1d, 0xec, 0x1e, 0xea, 0x1e, + 0x72, 0x20, 0x73, 0x20, 0x98, 0x21, 0x96, 0x21, 0x51, 0x22, 0x50, 0x22, + 0x9f, 0x22, 0x9e, 0x22, 0x7a, 0x22, 0x77, 0x22, 0xe5, 0x21, 0xe5, 0x21, + 0xe2, 0x20, 0xe3, 0x20, 0x7a, 0x1f, 0x78, 0x1f, 0xac, 0x1d, 0xac, 0x1d, + 0x88, 0x1b, 0x85, 0x1b, 0x14, 0x19, 0x12, 0x19, 0x60, 0x16, 0x60, 0x16, + 0x76, 0x13, 0x73, 0x13, 0x66, 0x10, 0x67, 0x10, 0x40, 0x0d, 0x3f, 0x0d, + 0x0e, 0x0a, 0x0b, 0x0a, 0xe3, 0x06, 0xe3, 0x06, 0xc4, 0x03, 0xc5, 0x03, + 0xd4, 0x00, 0xd4, 0x00, 0x0c, 0xfe, 0x0d, 0xfe, 0x85, 0xfb, 0x84, 0xfb, + 0x46, 0xf9, 0x45, 0xf9, 0x58, 0xf7, 0x59, 0xf7, 0xcc, 0xf5, 0xcb, 0xf5, + 0x9c, 0xf4, 0x9b, 0xf4, 0xd5, 0xf3, 0xd4, 0xf3, 0x77, 0xf3, 0x78, 0xf3, + 0x7e, 0xf3, 0x7c, 0xf3, 0xef, 0xf3, 0xf0, 0xf3, 0xbe, 0xf4, 0xbb, 0xf4, + 0xe8, 0xf5, 0xe7, 0xf5, 0x66, 0xf7, 0x65, 0xf7, 0x2b, 0xf9, 0x2b, 0xf9, + 0x34, 0xfb, 0x34, 0xfb, 0x71, 0xfd, 0x6f, 0xfd, 0xd7, 0xff, 0xd8, 0xff, + 0x60, 0x02, 0x5e, 0x02, 0xf6, 0x04, 0xf5, 0x04, 0x96, 0x07, 0x95, 0x07, + 0x2b, 0x0a, 0x2b, 0x0a, 0xb2, 0x0c, 0xb0, 0x0c, 0x11, 0x0f, 0x11, 0x0f, + 0x46, 0x11, 0x46, 0x11, 0x3e, 0x13, 0x3b, 0x13, 0xe7, 0x14, 0xe9, 0x14, + 0x4a, 0x16, 0x49, 0x16, 0x45, 0x17, 0x44, 0x17, 0xe2, 0x17, 0xe3, 0x17, + 0x0f, 0x18, 0x0c, 0x18, 0xc7, 0x17, 0xc8, 0x17, 0x17, 0x17, 0x13, 0x17, + 0xf0, 0x15, 0xf1, 0x15, 0x65, 0x14, 0x63, 0x14, 0x74, 0x12, 0x76, 0x12, + 0x2c, 0x10, 0x2a, 0x10, 0x93, 0x0d, 0x94, 0x0d, 0xb7, 0x0a, 0xb6, 0x0a, + 0xa4, 0x07, 0xa5, 0x07, 0x6a, 0x04, 0x68, 0x04, 0x11, 0x01, 0x10, 0x01, + 0xab, 0xfd, 0xa8, 0xfd, 0x3f, 0xfa, 0x41, 0xfa, 0xe3, 0xf6, 0xe2, 0xf6, + 0xa2, 0xf3, 0xa0, 0xf3, 0x84, 0xf0, 0x86, 0xf0, 0x9c, 0xed, 0x9a, 0xed, + 0xf3, 0xea, 0xf2, 0xea, 0x92, 0xe8, 0x92, 0xe8, 0x8c, 0xe6, 0x8a, 0xe6, + 0xde, 0xe4, 0xde, 0xe4, 0x9a, 0xe3, 0x9a, 0xe3, 0xbe, 0xe2, 0xbd, 0xe2, + 0x53, 0xe2, 0x52, 0xe2, 0x54, 0xe2, 0x54, 0xe2, 0xc7, 0xe2, 0xc5, 0xe2, + 0xa0, 0xe3, 0xa1, 0xe3, 0xde, 0xe4, 0xde, 0xe4, 0x79, 0xe6, 0x78, 0xe6, + 0x66, 0xe8, 0x67, 0xe8, 0x9b, 0xea, 0x98, 0xea, 0x0b, 0xed, 0x0c, 0xed, + 0xab, 0xef, 0xaa, 0xef, 0x6b, 0xf2, 0x6b, 0xf2, 0x3f, 0xf5, 0x3f, 0xf5, + 0x19, 0xf8, 0x18, 0xf8, 0xe7, 0xfa, 0xe8, 0xfa, 0x9e, 0xfd, 0x9d, 0xfd, + 0x2e, 0x00, 0x2d, 0x00, 0x87, 0x02, 0x85, 0x02, 0x9f, 0x04, 0x9f, 0x04, + 0x65, 0x06, 0x67, 0x06, 0xda, 0x07, 0xda, 0x07, 0xee, 0x08, 0xee, 0x08, + 0x9a, 0x09, 0x9b, 0x09, 0xe3, 0x09, 0xe3, 0x09, 0xbf, 0x09, 0xc0, 0x09, + 0x3a, 0x09, 0x3a, 0x09, 0x50, 0x08, 0x4f, 0x08, 0x09, 0x07, 0x09, 0x07, + 0x6c, 0x05, 0x6d, 0x05, 0x85, 0x03, 0x84, 0x03, 0x59, 0x01, 0x5a, 0x01, + 0xf8, 0xfe, 0xf7, 0xfe, 0x67, 0xfc, 0x64, 0xfc, 0xb4, 0xf9, 0xb4, 0xf9, + 0xeb, 0xf6, 0xe9, 0xf6, 0x16, 0xf4, 0x18, 0xf4, 0x45, 0xf1, 0x43, 0xf1, + 0x7f, 0xee, 0x7f, 0xee, 0xd4, 0xeb, 0xd5, 0xeb, 0x51, 0xe9, 0x51, 0xe9, + 0x00, 0xe7, 0xff, 0xe6, 0xed, 0xe4, 0xed, 0xe4, 0x27, 0xe3, 0x26, 0xe3, + 0xb4, 0xe1, 0xb5, 0xe1, 0xa5, 0xe0, 0xa5, 0xe0, 0xfa, 0xdf, 0xf9, 0xdf, + 0xba, 0xdf, 0xbb, 0xdf, 0xeb, 0xdf, 0xeb, 0xdf, 0x8b, 0xe0, 0x8b, 0xe0, + 0x9e, 0xe1, 0xa0, 0xe1, 0x1d, 0xe3, 0x1c, 0xe3, 0x00, 0xe5, 0x00, 0xe5, + 0x3f, 0xe7, 0x3e, 0xe7, 0xce, 0xe9, 0xcf, 0xe9, 0xa9, 0xec, 0xaa, 0xec, + 0xb7, 0xef, 0xb8, 0xef, 0xf5, 0xf2, 0xf4, 0xf2, 0x4c, 0xf6, 0x4d, 0xf6, + 0xb5, 0xf9, 0xb4, 0xf9, 0x1e, 0xfd, 0x1e, 0xfd, 0x75, 0x00, 0x74, 0x00, + 0xb2, 0x03, 0xb2, 0x03, 0xc7, 0x06, 0xc5, 0x06, 0xa2, 0x09, 0xa3, 0x09, + 0x3c, 0x0c, 0x3a, 0x0c, 0x83, 0x0e, 0x84, 0x0e, 0x73, 0x10, 0x74, 0x10, + 0x05, 0x12, 0x04, 0x12, 0x2d, 0x13, 0x2d, 0x13, 0xee, 0x13, 0xef, 0x13, + 0x42, 0x14, 0x40, 0x14, 0x2a, 0x14, 0x2c, 0x14, 0xaf, 0x13, 0xae, 0x13, + 0xce, 0x12, 0xd0, 0x12, 0x94, 0x11, 0x93, 0x11, 0x05, 0x10, 0x04, 0x10, + 0x2c, 0x0e, 0x2e, 0x0e, 0x18, 0x0c, 0x16, 0x0c, 0xca, 0x09, 0xcb, 0x09, + 0x58, 0x07, 0x57, 0x07, 0xc9, 0x04, 0xca, 0x04, 0x2c, 0x02, 0x2d, 0x02, + 0x91, 0xff, 0x91, 0xff, 0x00, 0xfd, 0x01, 0xfd, 0x8c, 0xfa, 0x8c, 0xfa, + 0x42, 0xf8, 0x41, 0xf8, 0x2c, 0xf6, 0x2e, 0xf6, 0x5e, 0xf4, 0x5c, 0xf4, + 0xdd, 0xf2, 0xdd, 0xf2, 0xb6, 0xf1, 0xb8, 0xf1, 0xf9, 0xf0, 0xf7, 0xf0, + 0x9e, 0xf0, 0x9f, 0xf0, 0xb5, 0xf0, 0xb3, 0xf0, 0x35, 0xf1, 0x35, 0xf1, + 0x21, 0xf2, 0x22, 0xf2, 0x74, 0xf3, 0x73, 0xf3, 0x26, 0xf5, 0x26, 0xf5, + 0x2e, 0xf7, 0x2f, 0xf7, 0x88, 0xf9, 0x86, 0xf9, 0x1e, 0xfc, 0x1e, 0xfc, + 0xef, 0xfe, 0xee, 0xfe, 0xea, 0x01, 0xeb, 0x01, 0x03, 0x05, 0x02, 0x05, + 0x2f, 0x08, 0x2f, 0x08, 0x5f, 0x0b, 0x5e, 0x0b, 0x8a, 0x0e, 0x89, 0x0e, + 0xa0, 0x11, 0xa0, 0x11, 0x96, 0x14, 0x93, 0x14, 0x5d, 0x17, 0x5f, 0x17, + 0xec, 0x19, 0xea, 0x19, 0x36, 0x1c, 0x34, 0x1c, 0x2c, 0x1e, 0x2d, 0x1e, + 0xcf, 0x1f, 0xcf, 0x1f, 0x0b, 0x21, 0x0a, 0x21, 0xe2, 0x21, 0xe1, 0x21, + 0x49, 0x22, 0x45, 0x22, 0x3f, 0x22, 0x3f, 0x22, 0xc5, 0x21, 0xc5, 0x21, + 0xdf, 0x20, 0xdc, 0x20, 0x8d, 0x1f, 0x8d, 0x1f, 0xd8, 0x1d, 0xd7, 0x1d, + 0xcd, 0x1b, 0xca, 0x1b, 0x6c, 0x19, 0x6e, 0x19, 0xcf, 0x16, 0xcd, 0x16, + 0xf8, 0x13, 0xf5, 0x13, 0xf5, 0x10, 0xf8, 0x10, 0xdf, 0x0d, 0xdc, 0x0d, + 0xb5, 0x0a, 0xb7, 0x0a, 0x94, 0x07, 0x93, 0x07, 0x82, 0x04, 0x80, 0x04, + 0x91, 0x01, 0x93, 0x01, 0xcf, 0xfe, 0xcd, 0xfe, 0x47, 0xfc, 0x46, 0xfc, + 0x07, 0xfa, 0x06, 0xfa, 0x1a, 0xf8, 0x19, 0xf8, 0x88, 0xf6, 0x88, 0xf6, + 0x58, 0xf5, 0x57, 0xf5, 0x8b, 0xf4, 0x8c, 0xf4, 0x26, 0xf4, 0x26, 0xf4, + 0x2e, 0xf4, 0x2e, 0xf4, 0x99, 0xf4, 0x97, 0xf4, 0x62, 0xf5, 0x64, 0xf5, + 0x8a, 0xf6, 0x88, 0xf6, 0x01, 0xf8, 0x04, 0xf8, 0xc7, 0xf9, 0xc6, 0xf9, + 0xcd, 0xfb, 0xce, 0xfb, 0x08, 0xfe, 0x07, 0xfe, 0x6e, 0x00, 0x6f, 0x00, + 0xf4, 0x02, 0xf5, 0x02, 0x8d, 0x05, 0x8e, 0x05, 0x30, 0x08, 0x32, 0x08, + 0xcc, 0x0a, 0xcb, 0x0a, 0x59, 0x0d, 0x5c, 0x0d, 0xc4, 0x0f, 0xc3, 0x0f, + 0x06, 0x12, 0x07, 0x12, 0x0a, 0x14, 0x0b, 0x14, 0xcc, 0x15, 0xcc, 0x15, + 0x3b, 0x17, 0x3d, 0x17, 0x52, 0x18, 0x50, 0x18, 0x05, 0x19, 0x07, 0x19, + 0x48, 0x19, 0x48, 0x19, 0x23, 0x19, 0x24, 0x19, 0x86, 0x18, 0x86, 0x18, + 0x7e, 0x17, 0x7f, 0x17, 0x06, 0x16, 0x07, 0x16, 0x2a, 0x14, 0x2c, 0x14, + 0xf6, 0x11, 0xf4, 0x11, 0x66, 0x0f, 0x68, 0x0f, 0x95, 0x0c, 0x96, 0x0c, + 0x89, 0x09, 0x89, 0x09, 0x4d, 0x06, 0x4f, 0x06, 0xf6, 0x02, 0xf6, 0x02, + 0x88, 0xff, 0x8a, 0xff, 0x1a, 0xfc, 0x1a, 0xfc, 0xb5, 0xf8, 0xb4, 0xf8, + 0x62, 0xf5, 0x61, 0xf5, 0x3a, 0xf2, 0x3c, 0xf2, 0x3f, 0xef, 0x3d, 0xef, + 0x82, 0xec, 0x83, 0xec, 0x11, 0xea, 0x10, 0xea, 0xf1, 0xe7, 0xf1, 0xe7, + 0x30, 0xe6, 0x30, 0xe6, 0xd1, 0xe4, 0xd0, 0xe4, 0xe1, 0xe3, 0xe2, 0xe3, + 0x5b, 0xe3, 0x5b, 0xe3, 0x46, 0xe3, 0x46, 0xe3, 0xa0, 0xe3, 0xa1, 0xe3, + 0x62, 0xe4, 0x62, 0xe4, 0x8c, 0xe5, 0x8c, 0xe5, 0x0c, 0xe7, 0x0d, 0xe7, + 0xe5, 0xe8, 0xe7, 0xe8, 0x05, 0xeb, 0x06, 0xeb, 0x63, 0xed, 0x65, 0xed, + 0xf4, 0xef, 0xf4, 0xef, 0xa4, 0xf2, 0xa8, 0xf2, 0x6f, 0xf5, 0x6e, 0xf5, + 0x3f, 0xf8, 0x40, 0xf8, 0x07, 0xfb, 0x08, 0xfb, 0xc0, 0xfd, 0xc1, 0xfd, + 0x4e, 0x00, 0x50, 0x00, 0xaf, 0x02, 0xae, 0x02, 0xcd, 0x04, 0xcf, 0x04, + 0x9d, 0x06, 0x9e, 0x06, 0x1e, 0x08, 0x1f, 0x08, 0x3a, 0x09, 0x39, 0x09, + 0xf5, 0x09, 0xf7, 0x09, 0x46, 0x0a, 0x46, 0x0a, 0x2d, 0x0a, 0x30, 0x0a, + 0xb1, 0x09, 0xb0, 0x09, 0xca, 0x08, 0xcc, 0x08, 0x89, 0x07, 0x89, 0x07, + 0xeb, 0x05, 0xeb, 0x05, 0x00, 0x04, 0x01, 0x04, 0xd1, 0x01, 0xd0, 0x01, + 0x63, 0xff, 0x65, 0xff, 0xc9, 0xfc, 0xc8, 0xfc, 0x09, 0xfa, 0x0b, 0xfa, + 0x2f, 0xf7, 0x2f, 0xf7, 0x4b, 0xf4, 0x4a, 0xf4, 0x62, 0xf1, 0x65, 0xf1, + 0x8a, 0xee, 0x88, 0xee, 0xc7, 0xeb, 0xca, 0xeb, 0x2a, 0xe9, 0x28, 0xe9, + 0xbe, 0xe6, 0xbf, 0xe6, 0x90, 0xe4, 0x90, 0xe4, 0xa9, 0xe2, 0xab, 0xe2, + 0x1d, 0xe1, 0x1d, 0xe1, 0xea, 0xdf, 0xe8, 0xdf, 0x1e, 0xdf, 0x20, 0xdf, + 0xc0, 0xde, 0xbd, 0xde, 0xca, 0xde, 0xcd, 0xde, 0x50, 0xdf, 0x4e, 0xdf, + 0x41, 0xe0, 0x41, 0xe0, 0x9f, 0xe1, 0xa1, 0xe1, 0x69, 0xe3, 0x68, 0xe3, + 0x8d, 0xe5, 0x8e, 0xe5, 0x0b, 0xe8, 0x0a, 0xe8, 0xcd, 0xea, 0xcd, 0xea, + 0xd0, 0xed, 0xd0, 0xed, 0xfd, 0xf0, 0xfc, 0xf0, 0x51, 0xf4, 0x52, 0xf4, + 0xb2, 0xf7, 0xb1, 0xf7, 0x19, 0xfb, 0x1a, 0xfb, 0x77, 0xfe, 0x77, 0xfe, + 0xb9, 0x01, 0xb9, 0x01, 0xd9, 0x04, 0xd8, 0x04, 0xbe, 0x07, 0xbe, 0x07, + 0x66, 0x0a, 0x68, 0x0a, 0xc0, 0x0c, 0xc0, 0x0c, 0xc2, 0x0e, 0xc1, 0x0e, + 0x66, 0x10, 0x69, 0x10, 0xa1, 0x11, 0xa1, 0x11, 0x79, 0x12, 0x7a, 0x12, + 0xdf, 0x12, 0xdf, 0x12, 0xde, 0x12, 0xdd, 0x12, 0x74, 0x12, 0x77, 0x12, + 0xa5, 0x11, 0xa3, 0x11, 0x7a, 0x10, 0x7d, 0x10, 0xfd, 0x0e, 0xfb, 0x0e, + 0x2f, 0x0d, 0x30, 0x0d, 0x24, 0x0b, 0x22, 0x0b, 0xdc, 0x08, 0xdd, 0x08, + 0x74, 0x06, 0x72, 0x06, 0xe3, 0x03, 0xe5, 0x03, 0x4a, 0x01, 0x49, 0x01, + 0xaa, 0xfe, 0xab, 0xfe, 0x11, 0xfc, 0x10, 0xfc, 0x98, 0xf9, 0x97, 0xf9, + 0x3d, 0xf7, 0x3e, 0xf7, 0x1c, 0xf5, 0x1b, 0xf5, 0x3a, 0xf3, 0x3a, 0xf3, + 0xa4, 0xf1, 0xa2, 0xf1, 0x6a, 0xf0, 0x6a, 0xf0, 0x90, 0xef, 0x91, 0xef, + 0x24, 0xef, 0x22, 0xef, 0x1f, 0xef, 0x1e, 0xef, 0x8b, 0xef, 0x8c, 0xef, + 0x64, 0xf0, 0x64, 0xf0, 0xa6, 0xf1, 0xa7, 0xf1, 0x4c, 0xf3, 0x4b, 0xf3, + 0x4c, 0xf5, 0x4d, 0xf5, 0x9d, 0xf7, 0x9e, 0xf7, 0x36, 0xfa, 0x36, 0xfa, + 0x0a, 0xfd, 0x0c, 0xfd, 0x0e, 0x00, 0x0c, 0x00, 0x31, 0x03, 0x32, 0x03, + 0x6a, 0x06, 0x6b, 0x06, 0xb0, 0x09, 0xb0, 0x09, 0xee, 0x0c, 0xef, 0x0c, + 0x1c, 0x10, 0x1d, 0x10, 0x30, 0x13, 0x2c, 0x13, 0x12, 0x16, 0x15, 0x16, + 0xc3, 0x18, 0xc2, 0x18, 0x2e, 0x1b, 0x31, 0x1b, 0x4f, 0x1d, 0x4c, 0x1d, + 0x13, 0x1f, 0x14, 0x1f, 0x7a, 0x20, 0x78, 0x20, 0x73, 0x21, 0x75, 0x21, + 0x03, 0x22, 0x01, 0x22, 0x1f, 0x22, 0x1f, 0x22, 0xcc, 0x21, 0xcd, 0x21, + 0x07, 0x21, 0x06, 0x21, 0xd9, 0x1f, 0xdc, 0x1f, 0x44, 0x1e, 0x42, 0x1e, + 0x52, 0x1c, 0x55, 0x1c, 0x0f, 0x1a, 0x0e, 0x1a, 0x83, 0x17, 0x84, 0x17, + 0xc1, 0x14, 0xc2, 0x14, 0xcf, 0x11, 0xcf, 0x11, 0xbe, 0x0e, 0xc0, 0x0e, + 0xa1, 0x0b, 0xa0, 0x0b, 0x7f, 0x08, 0x81, 0x08, 0x6d, 0x05, 0x6d, 0x05, + 0x78, 0x02, 0x77, 0x02, 0xae, 0xff, 0xb0, 0xff, 0x1e, 0xfd, 0x1e, 0xfd, + 0xd3, 0xfa, 0xd4, 0xfa, 0xd6, 0xf8, 0xd7, 0xf8, 0x39, 0xf7, 0x37, 0xf7, + 0xf6, 0xf5, 0xf7, 0xf5, 0x1d, 0xf5, 0x1c, 0xf5, 0xab, 0xf4, 0xab, 0xf4, + 0xa2, 0xf4, 0xa2, 0xf4, 0x02, 0xf5, 0x02, 0xf5, 0xc4, 0xf5, 0xc4, 0xf5, + 0xe3, 0xf6, 0xe4, 0xf6, 0x5b, 0xf8, 0x5a, 0xf8, 0x1c, 0xfa, 0x1d, 0xfa, + 0x23, 0xfc, 0x21, 0xfc, 0x62, 0xfe, 0x64, 0xfe, 0xcf, 0x00, 0xcd, 0x00, + 0x60, 0x03, 0x60, 0x03, 0x06, 0x06, 0x07, 0x06, 0xb6, 0x08, 0xb5, 0x08, + 0x67, 0x0b, 0x67, 0x0b, 0x05, 0x0e, 0x04, 0x0e, 0x89, 0x10, 0x8a, 0x10, + 0xe6, 0x12, 0xe5, 0x12, 0x05, 0x15, 0x07, 0x15, 0xe9, 0x16, 0xe8, 0x16, + 0x76, 0x18, 0x78, 0x18, 0xb0, 0x19, 0xaf, 0x19, 0x83, 0x1a, 0x85, 0x1a, + 0xef, 0x1a, 0xed, 0x1a, 0xe7, 0x1a, 0xe7, 0x1a, 0x6f, 0x1a, 0x70, 0x1a, + 0x85, 0x19, 0x84, 0x19, 0x2b, 0x18, 0x2b, 0x18, 0x68, 0x16, 0x68, 0x16, + 0x45, 0x14, 0x44, 0x14, 0xca, 0x11, 0xcb, 0x11, 0x08, 0x0f, 0x07, 0x0f, + 0x00, 0x0c, 0x00, 0x0c, 0xce, 0x08, 0xce, 0x08, 0x73, 0x05, 0x70, 0x05, + 0x03, 0x02, 0x04, 0x02, 0x8c, 0xfe, 0x8a, 0xfe, 0x17, 0xfb, 0x16, 0xfb, + 0xb9, 0xf7, 0xb8, 0xf7, 0x79, 0xf4, 0x79, 0xf4, 0x6a, 0xf1, 0x69, 0xf1, + 0x94, 0xee, 0x96, 0xee, 0x05, 0xec, 0x04, 0xec, 0xc8, 0xe9, 0xca, 0xe9, + 0xea, 0xe7, 0xe9, 0xe7, 0x6d, 0xe6, 0x6d, 0xe6, 0x5b, 0xe5, 0x5b, 0xe5, + 0xb8, 0xe4, 0xb7, 0xe4, 0x82, 0xe4, 0x80, 0xe4, 0xbe, 0xe4, 0xbf, 0xe4, + 0x62, 0xe5, 0x60, 0xe5, 0x70, 0xe6, 0x73, 0xe6, 0xdd, 0xe7, 0xdc, 0xe7, + 0x9c, 0xe9, 0x9d, 0xe9, 0xae, 0xeb, 0xaf, 0xeb, 0xfa, 0xed, 0xf9, 0xed, + 0x7d, 0xf0, 0x7d, 0xf0, 0x28, 0xf3, 0x28, 0xf3, 0xeb, 0xf5, 0xeb, 0xf5, + 0xbc, 0xf8, 0xbb, 0xf8, 0x84, 0xfb, 0x85, 0xfb, 0x3e, 0xfe, 0x3e, 0xfe, + 0xd6, 0x00, 0xd8, 0x00, 0x3d, 0x03, 0x3f, 0x03, 0x6b, 0x05, 0x6a, 0x05, + 0x4a, 0x07, 0x4b, 0x07, 0xd7, 0x08, 0xd8, 0x08, 0x04, 0x0a, 0x05, 0x0a, + 0xcd, 0x0a, 0xd0, 0x0a, 0x2e, 0x0b, 0x2e, 0x0b, 0x23, 0x0b, 0x24, 0x0b, + 0xad, 0x0a, 0xaf, 0x0a, 0xd4, 0x09, 0xd4, 0x09, 0x96, 0x08, 0x99, 0x08, + 0x00, 0x07, 0xff, 0x06, 0x16, 0x05, 0x18, 0x05, 0xe3, 0x02, 0xe3, 0x02, + 0x74, 0x00, 0x74, 0x00, 0xcf, 0xfd, 0xd3, 0xfd, 0x07, 0xfb, 0x07, 0xfb, + 0x23, 0xf8, 0x23, 0xf8, 0x2b, 0xf5, 0x2d, 0xf5, 0x36, 0xf2, 0x37, 0xf2, + 0x45, 0xef, 0x45, 0xef, 0x6d, 0xec, 0x6e, 0xec, 0xb5, 0xe9, 0xb5, 0xe9, + 0x2c, 0xe7, 0x2d, 0xe7, 0xe2, 0xe4, 0xe3, 0xe4, 0xd7, 0xe2, 0xd8, 0xe2, + 0x26, 0xe1, 0x26, 0xe1, 0xcd, 0xdf, 0xcf, 0xdf, 0xdd, 0xde, 0xdc, 0xde, + 0x56, 0xde, 0x58, 0xde, 0x3c, 0xde, 0x3c, 0xde, 0x99, 0xde, 0x9b, 0xde, + 0x64, 0xdf, 0x65, 0xdf, 0xa2, 0xe0, 0xa3, 0xe0, 0x49, 0xe2, 0x49, 0xe2, + 0x50, 0xe4, 0x4f, 0xe4, 0xb1, 0xe6, 0xb4, 0xe6, 0x60, 0xe9, 0x60, 0xe9, + 0x4e, 0xec, 0x4f, 0xec, 0x73, 0xef, 0x72, 0xef, 0xb6, 0xf2, 0xb8, 0xf2, + 0x16, 0xf6, 0x15, 0xf6, 0x79, 0xf9, 0x79, 0xf9, 0xd6, 0xfc, 0xd7, 0xfc, + 0x1e, 0x00, 0x1e, 0x00, 0x41, 0x03, 0x40, 0x03, 0x2e, 0x06, 0x32, 0x06, + 0xe5, 0x08, 0xe2, 0x08, 0x47, 0x0b, 0x4b, 0x0b, 0x59, 0x0d, 0x57, 0x0d, + 0x0b, 0x0f, 0x0b, 0x0f, 0x58, 0x10, 0x5a, 0x10, 0x3f, 0x11, 0x3e, 0x11, + 0xb6, 0x11, 0xb7, 0x11, 0xc1, 0x11, 0xc3, 0x11, 0x6c, 0x11, 0x6b, 0x11, + 0xa9, 0x10, 0xac, 0x10, 0x8f, 0x0f, 0x90, 0x0f, 0x1b, 0x0e, 0x1b, 0x0e, + 0x5a, 0x0c, 0x5b, 0x0c, 0x57, 0x0a, 0x59, 0x0a, 0x1b, 0x08, 0x19, 0x08, + 0xb2, 0x05, 0xb5, 0x05, 0x2b, 0x03, 0x2a, 0x03, 0x8d, 0x00, 0x8e, 0x00, + 0xee, 0xfd, 0xee, 0xfd, 0x4e, 0xfb, 0x4f, 0xfb, 0xcc, 0xf8, 0xcd, 0xf8, + 0x68, 0xf6, 0x69, 0xf6, 0x38, 0xf4, 0x39, 0xf4, 0x45, 0xf2, 0x46, 0xf2, + 0x9a, 0xf0, 0x9a, 0xf0, 0x4a, 0xef, 0x4c, 0xef, 0x59, 0xee, 0x58, 0xee, + 0xd0, 0xed, 0xd3, 0xed, 0xb9, 0xed, 0xb7, 0xed, 0x0b, 0xee, 0x0d, 0xee, + 0xd3, 0xee, 0xd2, 0xee, 0x01, 0xf0, 0x02, 0xf0, 0x99, 0xf1, 0x99, 0xf1, + 0x8e, 0xf3, 0x8e, 0xf3, 0xd6, 0xf5, 0xd8, 0xf5, 0x6d, 0xf8, 0x6b, 0xf8, + 0x3e, 0xfb, 0x3f, 0xfb, 0x43, 0xfe, 0x43, 0xfe, 0x70, 0x01, 0x6f, 0x01, + 0xad, 0x04, 0xae, 0x04, 0x02, 0x08, 0x01, 0x08, 0x4c, 0x0b, 0x4d, 0x0b, + 0x8d, 0x0e, 0x8d, 0x0e, 0xb1, 0x11, 0xb1, 0x11, 0xa9, 0x14, 0xaa, 0x14, + 0x73, 0x17, 0x70, 0x17, 0xf3, 0x19, 0xf5, 0x19, 0x2d, 0x1c, 0x2d, 0x1c, + 0x0e, 0x1e, 0x0d, 0x1e, 0x8e, 0x1f, 0x90, 0x1f, 0xa9, 0x20, 0xa8, 0x20, + 0x53, 0x21, 0x55, 0x21, 0x92, 0x21, 0x91, 0x21, 0x5a, 0x21, 0x59, 0x21, + 0xb6, 0x20, 0xb8, 0x20, 0xa2, 0x1f, 0xa1, 0x1f, 0x2c, 0x1e, 0x2c, 0x1e, + 0x51, 0x1c, 0x53, 0x1c, 0x29, 0x1a, 0x27, 0x1a, 0xb4, 0x17, 0xb6, 0x17, + 0x05, 0x15, 0x02, 0x15, 0x27, 0x12, 0x2a, 0x12, 0x24, 0x0f, 0x22, 0x0f, + 0x14, 0x0c, 0x15, 0x0c, 0xfd, 0x08, 0xfc, 0x08, 0xf2, 0x05, 0xf3, 0x05, + 0x04, 0x03, 0x01, 0x03, 0x3a, 0x00, 0x3c, 0x00, 0xad, 0xfd, 0xac, 0xfd, + 0x60, 0xfb, 0x62, 0xfb, 0x62, 0xf9, 0x62, 0xf9, 0xbd, 0xf7, 0xbf, 0xf7, + 0x77, 0xf6, 0x78, 0xf6, 0x9b, 0xf5, 0x9a, 0xf5, 0x21, 0xf5, 0x23, 0xf5, + 0x15, 0xf5, 0x15, 0xf5, 0x6e, 0xf5, 0x70, 0xf5, 0x29, 0xf6, 0x29, 0xf6, + 0x48, 0xf7, 0x47, 0xf7, 0xb6, 0xf8, 0xb7, 0xf8, 0x77, 0xfa, 0x77, 0xfa, + 0x7a, 0xfc, 0x79, 0xfc, 0xb7, 0xfe, 0xb9, 0xfe, 0x28, 0x01, 0x27, 0x01, + 0xb4, 0x03, 0xb4, 0x03, 0x5d, 0x06, 0x5f, 0x06, 0x13, 0x09, 0x12, 0x09, + 0xc4, 0x0b, 0xc3, 0x0b, 0x6e, 0x0e, 0x6e, 0x0e, 0xf5, 0x10, 0xf4, 0x10, + 0x5d, 0x13, 0x5e, 0x13, 0x8a, 0x15, 0x8c, 0x15, 0x7e, 0x17, 0x7b, 0x17, + 0x1e, 0x19, 0x1f, 0x19, 0x6a, 0x1a, 0x68, 0x1a, 0x54, 0x1b, 0x55, 0x1b, + 0xd7, 0x1b, 0xd5, 0x1b, 0xeb, 0x1b, 0xec, 0x1b, 0x8e, 0x1b, 0x8f, 0x1b, + 0xbf, 0x1a, 0xbe, 0x1a, 0x81, 0x19, 0x82, 0x19, 0xd9, 0x17, 0xd9, 0x17, + 0xcc, 0x15, 0xce, 0x15, 0x67, 0x13, 0x66, 0x13, 0xb3, 0x10, 0xb4, 0x10, + 0xbe, 0x0d, 0xbe, 0x0d, 0x92, 0x0a, 0x91, 0x0a, 0x42, 0x07, 0x41, 0x07, + 0xd6, 0x03, 0xd8, 0x03, 0x62, 0x00, 0x60, 0x00, 0xed, 0xfc, 0xef, 0xfc, + 0x8e, 0xf9, 0x8f, 0xf9, 0x4b, 0xf6, 0x49, 0xf6, 0x35, 0xf3, 0x36, 0xf3, + 0x57, 0xf0, 0x57, 0xf0, 0xc0, 0xed, 0xbf, 0xed, 0x76, 0xeb, 0x78, 0xeb, + 0x8b, 0xe9, 0x89, 0xe9, 0xfe, 0xe7, 0x00, 0xe8, 0xde, 0xe6, 0xdd, 0xe6, + 0x29, 0xe6, 0x28, 0xe6, 0xe2, 0xe5, 0xe0, 0xe5, 0x08, 0xe6, 0x0a, 0xe6, + 0x9b, 0xe6, 0x98, 0xe6, 0x93, 0xe7, 0x93, 0xe7, 0xea, 0xe8, 0xe9, 0xe8, + 0x93, 0xea, 0x93, 0xea, 0x8d, 0xec, 0x8c, 0xec, 0xc3, 0xee, 0xc5, 0xee, + 0x34, 0xf1, 0x32, 0xf1, 0xc7, 0xf3, 0xc8, 0xf3, 0x7b, 0xf6, 0x79, 0xf6, + 0x3a, 0xf9, 0x39, 0xf9, 0xf7, 0xfb, 0xf6, 0xfb, 0xa6, 0xfe, 0xa4, 0xfe, + 0x33, 0x01, 0x34, 0x01, 0x99, 0x03, 0x96, 0x03, 0xc1, 0x05, 0xc2, 0x05, + 0xa3, 0x07, 0xa1, 0x07, 0x33, 0x09, 0x33, 0x09, 0x64, 0x0a, 0x62, 0x0a, + 0x34, 0x0b, 0x34, 0x0b, 0x9b, 0x0b, 0x9a, 0x0b, 0x95, 0x0b, 0x94, 0x0b, + 0x27, 0x0b, 0x28, 0x0b, 0x51, 0x0a, 0x51, 0x0a, 0x1a, 0x09, 0x17, 0x09, + 0x82, 0x07, 0x84, 0x07, 0x9b, 0x05, 0x98, 0x05, 0x65, 0x03, 0x68, 0x03, + 0xf5, 0x00, 0xf2, 0x00, 0x4c, 0xfe, 0x4c, 0xfe, 0x7d, 0xfb, 0x7c, 0xfb, + 0x91, 0xf8, 0x8f, 0xf8, 0x90, 0xf5, 0x91, 0xf5, 0x92, 0xf2, 0x92, 0xf2, + 0x95, 0xef, 0x94, 0xef, 0xb1, 0xec, 0xb3, 0xec, 0xec, 0xe9, 0xe9, 0xe9, + 0x55, 0xe7, 0x57, 0xe7, 0xf9, 0xe4, 0xf7, 0xe4, 0xe1, 0xe2, 0xe1, 0xe2, + 0x1b, 0xe1, 0x1c, 0xe1, 0xaf, 0xdf, 0xae, 0xdf, 0xa6, 0xde, 0xa6, 0xde, + 0x09, 0xde, 0x09, 0xde, 0xd9, 0xdd, 0xd8, 0xdd, 0x1a, 0xde, 0x1a, 0xde, + 0xcd, 0xde, 0xcc, 0xde, 0xee, 0xdf, 0xee, 0xdf, 0x7a, 0xe1, 0x79, 0xe1, + 0x67, 0xe3, 0x67, 0xe3, 0xad, 0xe5, 0xad, 0xe5, 0x42, 0xe8, 0x42, 0xe8, + 0x17, 0xeb, 0x17, 0xeb, 0x23, 0xee, 0x22, 0xee, 0x53, 0xf1, 0x52, 0xf1, + 0x9b, 0xf4, 0x9c, 0xf4, 0xf0, 0xf7, 0xee, 0xf7, 0x3c, 0xfb, 0x3d, 0xfb, + 0x77, 0xfe, 0x76, 0xfe, 0x92, 0x01, 0x90, 0x01, 0x78, 0x04, 0x78, 0x04, + 0x27, 0x07, 0x26, 0x07, 0x88, 0x09, 0x87, 0x09, 0x98, 0x0b, 0x98, 0x0b, + 0x4d, 0x0d, 0x4c, 0x0d, 0xa0, 0x0e, 0x9d, 0x0e, 0x88, 0x0f, 0x89, 0x0f, + 0x0a, 0x10, 0x08, 0x10, 0x20, 0x10, 0x1e, 0x10, 0xd1, 0x0f, 0xd0, 0x0f, + 0x1d, 0x0f, 0x1b, 0x0f, 0x0b, 0x0e, 0x0b, 0x0e, 0xa5, 0x0c, 0xa7, 0x0c, + 0xf2, 0x0a, 0xee, 0x0a, 0xfb, 0x08, 0xfb, 0x08, 0xcb, 0x06, 0xcb, 0x06, + 0x71, 0x04, 0x70, 0x04, 0xf4, 0x01, 0xf2, 0x01, 0x62, 0xff, 0x62, 0xff, + 0xcb, 0xfc, 0xca, 0xfc, 0x37, 0xfa, 0x36, 0xfa, 0xb7, 0xf7, 0xb9, 0xf7, + 0x5b, 0xf5, 0x59, 0xf5, 0x2a, 0xf3, 0x2b, 0xf3, 0x39, 0xf1, 0x38, 0xf1, + 0x8c, 0xef, 0x8a, 0xef, 0x35, 0xee, 0x37, 0xee, 0x3c, 0xed, 0x39, 0xed, + 0xa9, 0xec, 0xa9, 0xec, 0x84, 0xec, 0x84, 0xec, 0xca, 0xec, 0xc7, 0xec, + 0x84, 0xed, 0x84, 0xed, 0xa2, 0xee, 0xa2, 0xee, 0x2f, 0xf0, 0x2d, 0xf0, + 0x12, 0xf2, 0x14, 0xf2, 0x52, 0xf4, 0x4f, 0xf4, 0xdd, 0xf6, 0xde, 0xf6, + 0xa3, 0xf9, 0xa3, 0xf9, 0xa7, 0xfc, 0xa6, 0xfc, 0xc7, 0xff, 0xc8, 0xff, + 0x0c, 0x03, 0x0a, 0x03, 0x59, 0x06, 0x59, 0x06, 0xa7, 0x09, 0xa6, 0x09, + 0xed, 0x0c, 0xea, 0x0c, 0x12, 0x10, 0x13, 0x10, 0x19, 0x13, 0x17, 0x13, + 0xe7, 0x15, 0xe7, 0x15, 0x78, 0x18, 0x75, 0x18, 0xc0, 0x1a, 0xbf, 0x1a, + 0xaf, 0x1c, 0xae, 0x1c, 0x45, 0x1e, 0x42, 0x1e, 0x73, 0x1f, 0x73, 0x1f, + 0x37, 0x20, 0x36, 0x20, 0x8c, 0x20, 0x89, 0x20, 0x6f, 0x20, 0x6f, 0x20, + 0xea, 0x1f, 0xe7, 0x1f, 0xf2, 0x1e, 0xf1, 0x1e, 0x99, 0x1d, 0x99, 0x1d, + 0xe0, 0x1b, 0xdf, 0x1b, 0xd2, 0x19, 0xd2, 0x19, 0x7e, 0x17, 0x7d, 0x17, + 0xea, 0x14, 0xe9, 0x14, 0x29, 0x12, 0x28, 0x12, 0x43, 0x0f, 0x42, 0x0f, + 0x4a, 0x0c, 0x48, 0x0c, 0x4b, 0x09, 0x4b, 0x09, 0x55, 0x06, 0x54, 0x06, + 0x77, 0x03, 0x75, 0x03, 0xc0, 0x00, 0xbf, 0x00, 0x39, 0xfe, 0x38, 0xfe, + 0xfd, 0xfb, 0xfa, 0xfb, 0x01, 0xfa, 0x00, 0xfa, 0x63, 0xf8, 0x62, 0xf8, + 0x21, 0xf7, 0x1e, 0xf7, 0x40, 0xf6, 0x3f, 0xf6, 0xca, 0xf5, 0xc7, 0xf5, + 0xb7, 0xf5, 0xb5, 0xf5, 0x0d, 0xf6, 0x0b, 0xf6, 0xc5, 0xf6, 0xc4, 0xf6, + 0xdc, 0xf7, 0xdb, 0xf7, 0x4a, 0xf9, 0x48, 0xf9, 0x05, 0xfb, 0x03, 0xfb, + 0x07, 0xfd, 0x05, 0xfd, 0x3f, 0xff, 0x3d, 0xff, 0xaa, 0x01, 0xa9, 0x01, + 0x3a, 0x04, 0x37, 0x04, 0xdf, 0x06, 0xdf, 0x06, 0x97, 0x09, 0x95, 0x09, + 0x4c, 0x0c, 0x4a, 0x0c, 0xf5, 0x0e, 0xf3, 0x0e, 0x88, 0x11, 0x85, 0x11, + 0xf0, 0x13, 0xf0, 0x13, 0x2e, 0x16, 0x2c, 0x16, 0x29, 0x18, 0x27, 0x18, + 0xd9, 0x19, 0xd8, 0x19, 0x34, 0x1b, 0x33, 0x1b, 0x36, 0x1c, 0x32, 0x1c, + 0xcb, 0x1c, 0xcb, 0x1c, 0xf9, 0x1c, 0xf3, 0x1c, 0xb4, 0x1c, 0xb5, 0x1c, + 0xff, 0x1b, 0xfc, 0x1b, 0xdc, 0x1a, 0xd9, 0x1a, 0x4c, 0x19, 0x4e, 0x19, + 0x5c, 0x17, 0x58, 0x17, 0x0f, 0x15, 0x0f, 0x15, 0x76, 0x12, 0x74, 0x12, + 0x95, 0x0f, 0x93, 0x0f, 0x80, 0x0c, 0x80, 0x0c, 0x40, 0x09, 0x3e, 0x09, + 0xe6, 0x05, 0xe4, 0x05, 0x7b, 0x02, 0x7c, 0x02, 0x14, 0xff, 0x13, 0xff, + 0xba, 0xfb, 0xb9, 0xfb, 0x7a, 0xf8, 0x79, 0xf8, 0x67, 0xf5, 0x64, 0xf5, + 0x88, 0xf2, 0x87, 0xf2, 0xe9, 0xef, 0xe9, 0xef, 0x9d, 0xed, 0x9a, 0xed, + 0xa2, 0xeb, 0xa1, 0xeb, 0x0a, 0xea, 0x09, 0xea, 0xda, 0xe8, 0xd9, 0xe8, + 0x14, 0xe8, 0x0f, 0xe8, 0xb9, 0xe7, 0xb8, 0xe7, 0xca, 0xe7, 0xc7, 0xe7, + 0x45, 0xe8, 0x44, 0xe8, 0x25, 0xe9, 0x23, 0xe9, 0x65, 0xea, 0x63, 0xea, + 0xf8, 0xeb, 0xf5, 0xeb, 0xd9, 0xed, 0xd8, 0xed, 0xfd, 0xef, 0xf8, 0xef, + 0x52, 0xf2, 0x52, 0xf2, 0xd9, 0xf4, 0xd5, 0xf4, 0x73, 0xf7, 0x71, 0xf7, + 0x23, 0xfa, 0x21, 0xfa, 0xd2, 0xfc, 0xcf, 0xfc, 0x73, 0xff, 0x72, 0xff, + 0xfa, 0x01, 0xf7, 0x01, 0x59, 0x04, 0x57, 0x04, 0x7f, 0x06, 0x7c, 0x06, + 0x5f, 0x08, 0x5e, 0x08, 0xef, 0x09, 0xed, 0x09, 0x24, 0x0b, 0x21, 0x0b, + 0xf8, 0x0b, 0xf8, 0x0b, 0x67, 0x0c, 0x62, 0x0c, 0x68, 0x0c, 0x67, 0x0c, + 0x03, 0x0c, 0x01, 0x0c, 0x34, 0x0b, 0x33, 0x0b, 0x03, 0x0a, 0x01, 0x0a, + 0x75, 0x08, 0x73, 0x08, 0x92, 0x06, 0x91, 0x06, 0x64, 0x04, 0x63, 0x04, + 0xf4, 0x01, 0xf1, 0x01, 0x4f, 0xff, 0x4e, 0xff, 0x82, 0xfc, 0x7f, 0xfc, + 0x92, 0xf9, 0x90, 0xf9, 0x95, 0xf6, 0x91, 0xf6, 0x8a, 0xf3, 0x8b, 0xf3, + 0x8c, 0xf0, 0x88, 0xf0, 0x9b, 0xed, 0x99, 0xed, 0xca, 0xea, 0xca, 0xea, + 0x26, 0xe8, 0x22, 0xe8, 0xb8, 0xe5, 0xb6, 0xe5, 0x8c, 0xe3, 0x8a, 0xe3, + 0xaf, 0xe1, 0xad, 0xe1, 0x2a, 0xe0, 0x28, 0xe0, 0x08, 0xdf, 0x06, 0xdf, + 0x4b, 0xde, 0x4a, 0xde, 0xfc, 0xdd, 0xf9, 0xdd, 0x1d, 0xde, 0x1d, 0xde, + 0xb0, 0xde, 0xac, 0xde, 0xac, 0xdf, 0xac, 0xdf, 0x15, 0xe1, 0x13, 0xe1, + 0xe3, 0xe2, 0xe1, 0xe2, 0x06, 0xe5, 0x06, 0xe5, 0x7f, 0xe7, 0x7d, 0xe7, + 0x38, 0xea, 0x37, 0xea, 0x2c, 0xed, 0x29, 0xed, 0x44, 0xf0, 0x43, 0xf0, + 0x7c, 0xf3, 0x7a, 0xf3, 0xbf, 0xf6, 0xbd, 0xf6, 0xff, 0xf9, 0xfd, 0xf9, + 0x2e, 0xfd, 0x2d, 0xfd, 0x3f, 0x00, 0x3c, 0x00, 0x22, 0x03, 0x21, 0x03, + 0xcd, 0x05, 0xc9, 0x05, 0x2d, 0x08, 0x2c, 0x08, 0x41, 0x0a, 0x3e, 0x0a, + 0xf9, 0x0b, 0xf6, 0x0b, 0x50, 0x0d, 0x4d, 0x0d, 0x42, 0x0e, 0x42, 0x0e, + 0xcc, 0x0e, 0xc9, 0x0e, 0xed, 0x0e, 0xeb, 0x0e, 0xa9, 0x0e, 0xa7, 0x0e, + 0x00, 0x0e, 0xff, 0x0d, 0xfd, 0x0c, 0xfb, 0x0c, 0xa1, 0x0b, 0x9e, 0x0b, + 0xf9, 0x09, 0xf7, 0x09, 0x0d, 0x08, 0x0b, 0x08, 0xe8, 0x05, 0xe6, 0x05, + 0x95, 0x03, 0x94, 0x03, 0x22, 0x01, 0x1c, 0x01, 0x92, 0xfe, 0x94, 0xfe, + 0x00, 0xfc, 0xfa, 0xfb, 0x6c, 0xf9, 0x6c, 0xf9, 0xeb, 0xf6, 0xe8, 0xf6, + 0x89, 0xf4, 0x86, 0xf4, 0x54, 0xf2, 0x50, 0xf2, 0x55, 0xf0, 0x54, 0xf0, + 0x9d, 0xee, 0x99, 0xee, 0x32, 0xed, 0x31, 0xed, 0x28, 0xec, 0x25, 0xec, + 0x7f, 0xeb, 0x7d, 0xeb, 0x43, 0xeb, 0x40, 0xeb, 0x74, 0xeb, 0x72, 0xeb, + 0x14, 0xec, 0x10, 0xec, 0x22, 0xed, 0x20, 0xed, 0x96, 0xee, 0x93, 0xee, + 0x71, 0xf0, 0x6d, 0xf0, 0x9d, 0xf2, 0x9b, 0xf2, 0x21, 0xf5, 0x1e, 0xf5, + 0xe0, 0xf7, 0xdf, 0xf7, 0xdc, 0xfa, 0xd9, 0xfa, 0x02, 0xfe, 0xff, 0xfd, + 0x43, 0x01, 0x42, 0x01, 0x99, 0x04, 0x94, 0x04, 0xed, 0x07, 0xec, 0x07, + 0x3b, 0x0b, 0x37, 0x0b, 0x71, 0x0e, 0x6c, 0x0e, 0x80, 0x11, 0x7f, 0x11, + 0x63, 0x14, 0x5e, 0x14, 0x05, 0x17, 0x05, 0x17, 0x60, 0x19, 0x5b, 0x19, + 0x68, 0x1b, 0x65, 0x1b, 0x10, 0x1d, 0x0e, 0x1d, 0x5c, 0x1e, 0x58, 0x1e, + 0x34, 0x1f, 0x32, 0x1f, 0xa4, 0x1f, 0xa1, 0x1f, 0xa5, 0x1f, 0xa3, 0x1f, + 0x34, 0x1f, 0x30, 0x1f, 0x5c, 0x1e, 0x5b, 0x1e, 0x17, 0x1d, 0x12, 0x1d, + 0x7a, 0x1b, 0x77, 0x1b, 0x82, 0x19, 0x81, 0x19, 0x44, 0x17, 0x40, 0x17, + 0xc5, 0x14, 0xc3, 0x14, 0x15, 0x12, 0x10, 0x12, 0x3d, 0x0f, 0x3c, 0x0f, + 0x54, 0x0c, 0x4e, 0x0c, 0x5c, 0x09, 0x5a, 0x09, 0x71, 0x06, 0x6d, 0x06, + 0x96, 0x03, 0x93, 0x03, 0xe1, 0x00, 0xdf, 0x00, 0x63, 0xfe, 0x5d, 0xfe, + 0x1e, 0xfc, 0x1d, 0xfc, 0x28, 0xfa, 0x25, 0xfa, 0x84, 0xf8, 0x7f, 0xf8, + 0x3d, 0xf7, 0x3c, 0xf7, 0x5c, 0xf6, 0x58, 0xf6, 0xe1, 0xf5, 0xde, 0xf5, + 0xce, 0xf5, 0xcb, 0xf5, 0x1e, 0xf6, 0x1a, 0xf6, 0xd7, 0xf6, 0xd6, 0xf6, + 0xeb, 0xf7, 0xe6, 0xf7, 0x58, 0xf9, 0x57, 0xf9, 0x17, 0xfb, 0x13, 0xfb, + 0x17, 0xfd, 0x14, 0xfd, 0x59, 0xff, 0x56, 0xff, 0xc3, 0x01, 0xc0, 0x01, + 0x5a, 0x04, 0x59, 0x04, 0x0a, 0x07, 0x07, 0x07, 0xc2, 0x09, 0xc1, 0x09, + 0x87, 0x0c, 0x83, 0x0c, 0x37, 0x0f, 0x36, 0x0f, 0xd9, 0x11, 0xd4, 0x11, + 0x53, 0x14, 0x52, 0x14, 0x9e, 0x16, 0x99, 0x16, 0xab, 0x18, 0xaa, 0x18, + 0x73, 0x1a, 0x6c, 0x1a, 0xe3, 0x1b, 0xe1, 0x1b, 0xf8, 0x1c, 0xf5, 0x1c, + 0xa5, 0x1d, 0xa3, 0x1d, 0xed, 0x1d, 0xe9, 0x1d, 0xc0, 0x1d, 0xbe, 0x1d, + 0x27, 0x1d, 0x23, 0x1d, 0x18, 0x1c, 0x16, 0x1c, 0xa5, 0x1a, 0xa1, 0x1a, + 0xc7, 0x18, 0xc1, 0x18, 0x8d, 0x16, 0x8a, 0x16, 0x00, 0x14, 0xfc, 0x13, + 0x2f, 0x11, 0x2b, 0x11, 0x20, 0x0e, 0x1b, 0x0e, 0xe8, 0x0a, 0xe6, 0x0a, + 0x8f, 0x07, 0x89, 0x07, 0x28, 0x04, 0x25, 0x04, 0xbc, 0x00, 0xb7, 0x00, + 0x5e, 0xfd, 0x5a, 0xfd, 0x1a, 0xfa, 0x17, 0xfa, 0xff, 0xf6, 0xf8, 0xf6, + 0x17, 0xf4, 0x15, 0xf4, 0x6f, 0xf1, 0x6a, 0xf1, 0x19, 0xef, 0x13, 0xef, + 0x12, 0xed, 0x0f, 0xed, 0x73, 0xeb, 0x6e, 0xeb, 0x36, 0xea, 0x31, 0xea, + 0x64, 0xe9, 0x62, 0xe9, 0xfe, 0xe8, 0xfb, 0xe8, 0x04, 0xe9, 0xff, 0xe8, + 0x73, 0xe9, 0x71, 0xe9, 0x48, 0xea, 0x42, 0xea, 0x7a, 0xeb, 0x76, 0xeb, + 0x02, 0xed, 0xfe, 0xec, 0xd7, 0xee, 0xd4, 0xee, 0xee, 0xf0, 0xeb, 0xf0, + 0x3f, 0xf3, 0x39, 0xf3, 0xb8, 0xf5, 0xb4, 0xf5, 0x4e, 0xf8, 0x49, 0xf8, + 0xf9, 0xfa, 0xf4, 0xfa, 0xa2, 0xfd, 0x9e, 0xfd, 0x42, 0x00, 0x3d, 0x00, + 0xc7, 0x02, 0xc3, 0x02, 0x26, 0x05, 0x21, 0x05, 0x50, 0x07, 0x4d, 0x07, + 0x37, 0x09, 0x32, 0x09, 0xcd, 0x0a, 0xca, 0x0a, 0x0a, 0x0c, 0x05, 0x0c, + 0xe7, 0x0c, 0xe2, 0x0c, 0x59, 0x0d, 0x56, 0x0d, 0x61, 0x0d, 0x5d, 0x0d, + 0xff, 0x0c, 0xfa, 0x0c, 0x30, 0x0c, 0x2d, 0x0c, 0xff, 0x0a, 0xf9, 0x0a, + 0x6c, 0x09, 0x6a, 0x09, 0x85, 0x07, 0x7f, 0x07, 0x4e, 0x05, 0x4b, 0x05, + 0xd2, 0x02, 0xce, 0x02, 0x21, 0x00, 0x1c, 0x00, 0x42, 0xfd, 0x40, 0xfd, + 0x46, 0xfa, 0x3e, 0xfa, 0x32, 0xf7, 0x2f, 0xf7, 0x15, 0xf4, 0x11, 0xf4, + 0x04, 0xf1, 0x00, 0xf1, 0xfd, 0xed, 0xf9, 0xed, 0x19, 0xeb, 0x16, 0xeb, + 0x60, 0xe8, 0x5a, 0xe8, 0xdb, 0xe5, 0xd6, 0xe5, 0x9e, 0xe3, 0x99, 0xe3, + 0xa8, 0xe1, 0xa6, 0xe1, 0x13, 0xe0, 0x0d, 0xe0, 0xd7, 0xde, 0xd5, 0xde, + 0x09, 0xde, 0x05, 0xde, 0xa7, 0xdd, 0xa3, 0xdd, 0xb3, 0xdd, 0xaf, 0xdd, + 0x36, 0xde, 0x2f, 0xde, 0x1e, 0xdf, 0x1c, 0xdf, 0x7c, 0xe0, 0x76, 0xe0, + 0x35, 0xe2, 0x31, 0xe2, 0x4e, 0xe4, 0x4a, 0xe4, 0xb5, 0xe6, 0xb1, 0xe6, + 0x65, 0xe9, 0x5f, 0xe9, 0x48, 0xec, 0x46, 0xec, 0x5a, 0xef, 0x53, 0xef, + 0x85, 0xf2, 0x82, 0xf2, 0xc0, 0xf5, 0xbc, 0xf5, 0xfb, 0xf8, 0xf6, 0xf8, + 0x24, 0xfc, 0x20, 0xfc, 0x30, 0xff, 0x2d, 0xff, 0x0f, 0x02, 0x0c, 0x02, + 0xb5, 0x04, 0xb1, 0x04, 0x14, 0x07, 0x11, 0x07, 0x25, 0x09, 0x20, 0x09, + 0xd8, 0x0a, 0xd4, 0x0a, 0x2e, 0x0c, 0x2b, 0x0c, 0x1f, 0x0d, 0x19, 0x0d, + 0xa6, 0x0d, 0xa3, 0x0d, 0xc3, 0x0d, 0xc0, 0x0d, 0x7c, 0x0d, 0x77, 0x0d, + 0xd0, 0x0c, 0xcc, 0x0c, 0xc9, 0x0b, 0xc3, 0x0b, 0x67, 0x0a, 0x65, 0x0a, + 0xbd, 0x08, 0xb8, 0x08, 0xcd, 0x06, 0xca, 0x06, 0xa3, 0x04, 0xa0, 0x04, + 0x4b, 0x02, 0x46, 0x02, 0xd3, 0xff, 0xcf, 0xff, 0x41, 0xfd, 0x3d, 0xfd, + 0xaa, 0xfa, 0xa4, 0xfa, 0x12, 0xf8, 0x0f, 0xf8, 0x8d, 0xf5, 0x87, 0xf5, + 0x25, 0xf3, 0x21, 0xf3, 0xe9, 0xf0, 0xe4, 0xf0, 0xe6, 0xee, 0xe0, 0xee, + 0x29, 0xed, 0x25, 0xed, 0xb7, 0xeb, 0xb3, 0xeb, 0xaa, 0xea, 0xa3, 0xea, + 0xf4, 0xe9, 0xf3, 0xe9, 0xb5, 0xe9, 0xae, 0xe9, 0xe0, 0xe9, 0xdc, 0xe9, + 0x7a, 0xea, 0x75, 0xea, 0x85, 0xeb, 0x7f, 0xeb, 0xf5, 0xec, 0xf1, 0xec, + 0xcd, 0xee, 0xc6, 0xee, 0xfb, 0xf0, 0xf7, 0xf0, 0x7d, 0xf3, 0x78, 0xf3, + 0x42, 0xf6, 0x3e, 0xf6, 0x41, 0xf9, 0x3c, 0xf9, 0x6c, 0xfc, 0x66, 0xfc, + 0xb3, 0xff, 0xb0, 0xff, 0x0e, 0x03, 0x08, 0x03, 0x6f, 0x06, 0x69, 0x06, + 0xc2, 0x09, 0xbe, 0x09, 0x04, 0x0d, 0xfc, 0x0c, 0x1b, 0x10, 0x18, 0x10, + 0x09, 0x13, 0x03, 0x13, 0xb7, 0x15, 0xb3, 0x15, 0x1b, 0x18, 0x18, 0x18, + 0x31, 0x1a, 0x2a, 0x1a, 0xe5, 0x1b, 0xe1, 0x1b, 0x39, 0x1d, 0x34, 0x1d, + 0x1f, 0x1e, 0x1c, 0x1e, 0x9d, 0x1e, 0x97, 0x1e, 0xa7, 0x1e, 0xa1, 0x1e, + 0x43, 0x1e, 0x40, 0x1e, 0x75, 0x1d, 0x6f, 0x1d, 0x40, 0x1c, 0x3b, 0x1c, + 0xab, 0x1a, 0xa8, 0x1a, 0xc3, 0x18, 0xbd, 0x18, 0x91, 0x16, 0x8b, 0x16, + 0x1e, 0x14, 0x1b, 0x14, 0x7c, 0x11, 0x76, 0x11, 0xb3, 0x0e, 0xae, 0x0e, + 0xd3, 0x0b, 0xcf, 0x0b, 0xee, 0x08, 0xe8, 0x08, 0x0a, 0x06, 0x06, 0x06, + 0x40, 0x03, 0x3a, 0x03, 0x95, 0x00, 0x92, 0x00, 0x1f, 0xfe, 0x19, 0xfe, + 0xe7, 0xfb, 0xe3, 0xfb, 0xf9, 0xf9, 0xf5, 0xf9, 0x62, 0xf8, 0x5e, 0xf8, + 0x24, 0xf7, 0x1f, 0xf7, 0x4d, 0xf6, 0x49, 0xf6, 0xda, 0xf5, 0xd7, 0xf5, + 0xd2, 0xf5, 0xcd, 0xf5, 0x2f, 0xf6, 0x2b, 0xf6, 0xf1, 0xf6, 0xed, 0xf6, + 0x14, 0xf8, 0x0e, 0xf8, 0x89, 0xf9, 0x87, 0xf9, 0x53, 0xfb, 0x4f, 0xfb, + 0x62, 0xfd, 0x5e, 0xfd, 0xac, 0xff, 0xa8, 0xff, 0x28, 0x02, 0x24, 0x02, + 0xc6, 0x04, 0xc3, 0x04, 0x82, 0x07, 0x7f, 0x07, 0x4c, 0x0a, 0x48, 0x0a, + 0x15, 0x0d, 0x10, 0x0d, 0xd7, 0x0f, 0xd2, 0x0f, 0x7f, 0x12, 0x7c, 0x12, + 0x06, 0x15, 0x00, 0x15, 0x5b, 0x17, 0x58, 0x17, 0x76, 0x19, 0x71, 0x19, + 0x46, 0x1b, 0x41, 0x1b, 0xc5, 0x1c, 0xc0, 0x1c, 0xe4, 0x1d, 0xdf, 0x1d, + 0xa1, 0x1e, 0x9c, 0x1e, 0xf1, 0x1e, 0xec, 0x1e, 0xd3, 0x1e, 0xcf, 0x1e, + 0x46, 0x1e, 0x42, 0x1e, 0x49, 0x1d, 0x43, 0x1d, 0xde, 0x1b, 0xda, 0x1b, + 0x10, 0x1a, 0x0b, 0x1a, 0xe2, 0x17, 0xde, 0x17, 0x64, 0x15, 0x5f, 0x15, + 0x9b, 0x12, 0x98, 0x12, 0x9b, 0x0f, 0x93, 0x0f, 0x69, 0x0c, 0x66, 0x0c, + 0x1c, 0x09, 0x16, 0x09, 0xbb, 0x05, 0xb7, 0x05, 0x59, 0x02, 0x55, 0x02, + 0x01, 0xff, 0xfc, 0xfe, 0xc5, 0xfb, 0xc0, 0xfb, 0xac, 0xf8, 0xa8, 0xf8, + 0xc9, 0xf5, 0xc5, 0xf5, 0x27, 0xf3, 0x23, 0xf3, 0xce, 0xf0, 0xca, 0xf0, + 0xd0, 0xee, 0xcb, 0xee, 0x2b, 0xed, 0x27, 0xed, 0xee, 0xeb, 0xe9, 0xeb, + 0x1b, 0xeb, 0x16, 0xeb, 0xb2, 0xea, 0xae, 0xea, 0xb4, 0xea, 0xb0, 0xea, + 0x1e, 0xeb, 0x1b, 0xeb, 0xeb, 0xeb, 0xe6, 0xeb, 0x19, 0xed, 0x16, 0xed, + 0x98, 0xee, 0x95, 0xee, 0x69, 0xf0, 0x64, 0xf0, 0x75, 0xf2, 0x72, 0xf2, + 0xbc, 0xf4, 0xb8, 0xf4, 0x2e, 0xf7, 0x2b, 0xf7, 0xbb, 0xf9, 0xb6, 0xf9, + 0x5c, 0xfc, 0x58, 0xfc, 0xfd, 0xfe, 0xf9, 0xfe, 0x95, 0x01, 0x90, 0x01, + 0x15, 0x04, 0x11, 0x04, 0x6a, 0x06, 0x66, 0x06, 0x92, 0x08, 0x8d, 0x08, + 0x70, 0x0a, 0x6d, 0x0a, 0x06, 0x0c, 0x00, 0x0c, 0x40, 0x0d, 0x3b, 0x0d, + 0x18, 0x0e, 0x13, 0x0e, 0x88, 0x0e, 0x85, 0x0e, 0x8f, 0x0e, 0x8a, 0x0e, + 0x2a, 0x0e, 0x26, 0x0e, 0x5b, 0x0d, 0x57, 0x0d, 0x27, 0x0c, 0x22, 0x0c, + 0x90, 0x0a, 0x8d, 0x0a, 0xa8, 0x08, 0xa4, 0x08, 0x6b, 0x06, 0x68, 0x06, + 0xee, 0x03, 0xea, 0x03, 0x37, 0x01, 0x33, 0x01, 0x53, 0xfe, 0x50, 0xfe, + 0x50, 0xfb, 0x4d, 0xfb, 0x36, 0xf8, 0x31, 0xf8, 0x16, 0xf5, 0x15, 0xf5, + 0xfb, 0xf1, 0xf4, 0xf1, 0xec, 0xee, 0xeb, 0xee, 0x01, 0xec, 0xfb, 0xeb, + 0x38, 0xe9, 0x35, 0xe9, 0xae, 0xe6, 0xa8, 0xe6, 0x5d, 0xe4, 0x59, 0xe4, + 0x5f, 0xe2, 0x5b, 0xe2, 0xb5, 0xe0, 0xb1, 0xe0, 0x6a, 0xdf, 0x67, 0xdf, + 0x8b, 0xde, 0x86, 0xde, 0x12, 0xde, 0x10, 0xde, 0x0e, 0xde, 0x09, 0xde, + 0x74, 0xde, 0x71, 0xde, 0x4d, 0xdf, 0x48, 0xdf, 0x8d, 0xe0, 0x89, 0xe0, + 0x31, 0xe2, 0x2e, 0xe2, 0x32, 0xe4, 0x2e, 0xe4, 0x84, 0xe6, 0x7f, 0xe6, + 0x1a, 0xe9, 0x18, 0xe9, 0xed, 0xeb, 0xe7, 0xeb, 0xe8, 0xee, 0xe4, 0xee, + 0x02, 0xf2, 0xff, 0xf1, 0x2c, 0xf5, 0x27, 0xf5, 0x54, 0xf8, 0x51, 0xf8, + 0x71, 0xfb, 0x6c, 0xfb, 0x6d, 0xfe, 0x6a, 0xfe, 0x43, 0x01, 0x40, 0x01, + 0xdc, 0x03, 0xd6, 0x03, 0x34, 0x06, 0x32, 0x06, 0x3a, 0x08, 0x35, 0x08, + 0xeb, 0x09, 0xe7, 0x09, 0x3b, 0x0b, 0x38, 0x0b, 0x27, 0x0c, 0x22, 0x0c, + 0xae, 0x0c, 0xaa, 0x0c, 0xc9, 0x0c, 0xc5, 0x0c, 0x84, 0x0c, 0x80, 0x0c, + 0xd9, 0x0b, 0xd4, 0x0b, 0xd2, 0x0a, 0xce, 0x0a, 0x7a, 0x09, 0x74, 0x09, + 0xcf, 0x07, 0xca, 0x07, 0xe4, 0x05, 0xe2, 0x05, 0xc2, 0x03, 0xbb, 0x03, + 0x6c, 0x01, 0x69, 0x01, 0xf9, 0xfe, 0xf4, 0xfe, 0x68, 0xfc, 0x65, 0xfc, + 0xd5, 0xf9, 0xd1, 0xf9, 0x3e, 0xf7, 0x3a, 0xf7, 0xb8, 0xf4, 0xb4, 0xf4, + 0x50, 0xf2, 0x49, 0xf2, 0x0b, 0xf0, 0x0a, 0xf0, 0x07, 0xee, 0x00, 0xee, + 0x3b, 0xec, 0x38, 0xec, 0xc5, 0xea, 0xc0, 0xea, 0xa2, 0xe9, 0x9d, 0xe9, + 0xe2, 0xe8, 0xe0, 0xe8, 0x8f, 0xe8, 0x89, 0xe8, 0xa4, 0xe8, 0x9f, 0xe8, + 0x2f, 0xe9, 0x2a, 0xe9, 0x20, 0xea, 0x1b, 0xea, 0x84, 0xeb, 0x7f, 0xeb, + 0x46, 0xed, 0x42, 0xed, 0x69, 0xef, 0x63, 0xef, 0xdc, 0xf1, 0xd8, 0xf1, + 0x96, 0xf4, 0x90, 0xf4, 0x8d, 0xf7, 0x89, 0xf7, 0xaf, 0xfa, 0xaa, 0xfa, + 0xf5, 0xfd, 0xf0, 0xfd, 0x4f, 0x01, 0x49, 0x01, 0xac, 0x04, 0xa7, 0x04, + 0x06, 0x08, 0x00, 0x08, 0x47, 0x0b, 0x44, 0x0b, 0x6c, 0x0e, 0x64, 0x0e, + 0x5c, 0x11, 0x5a, 0x11, 0x16, 0x14, 0x10, 0x14, 0x88, 0x16, 0x85, 0x16, + 0xa7, 0x18, 0xa2, 0x18, 0x6e, 0x1a, 0x6a, 0x1a, 0xd4, 0x1b, 0xcd, 0x1b, + 0xcc, 0x1c, 0xc8, 0x1c, 0x5d, 0x1d, 0x59, 0x1d, 0x7c, 0x1d, 0x78, 0x1d, + 0x2e, 0x1d, 0x2b, 0x1d, 0x77, 0x1c, 0x71, 0x1c, 0x59, 0x1b, 0x54, 0x1b, + 0xdf, 0x19, 0xdb, 0x19, 0x0d, 0x18, 0x07, 0x18, 0xf2, 0x15, 0xef, 0x15, + 0x98, 0x13, 0x92, 0x13, 0x08, 0x11, 0x04, 0x11, 0x53, 0x0e, 0x4f, 0x0e, + 0x85, 0x0b, 0x7f, 0x0b, 0xad, 0x08, 0xab, 0x08, 0xd9, 0x05, 0xd2, 0x05, + 0x16, 0x03, 0x12, 0x03, 0x75, 0x00, 0x71, 0x00, 0x03, 0xfe, 0xfe, 0xfd, + 0xce, 0xfb, 0xc9, 0xfb, 0xe1, 0xf9, 0xdc, 0xf9, 0x48, 0xf8, 0x45, 0xf8, + 0x0b, 0xf7, 0x05, 0xf7, 0x2e, 0xf6, 0x2c, 0xf6, 0xbb, 0xf5, 0xb6, 0xf5, + 0xac, 0xf5, 0xa8, 0xf5, 0x06, 0xf6, 0x00, 0xf6, 0xc1, 0xf6, 0xbd, 0xf6, + 0xe1, 0xf7, 0xdd, 0xf7, 0x55, 0xf9, 0x50, 0xf9, 0x1e, 0xfb, 0x1a, 0xfb, + 0x29, 0xfd, 0x23, 0xfd, 0x72, 0xff, 0x6e, 0xff, 0xf1, 0x01, 0xec, 0x01, + 0x92, 0x04, 0x8b, 0x04, 0x50, 0x07, 0x4d, 0x07, 0x1e, 0x0a, 0x18, 0x0a, + 0xee, 0x0c, 0xea, 0x0c, 0xb8, 0x0f, 0xb3, 0x0f, 0x6a, 0x12, 0x65, 0x12, + 0xfb, 0x14, 0xf8, 0x14, 0x61, 0x17, 0x5b, 0x17, 0x8b, 0x19, 0x85, 0x19, + 0x6e, 0x1b, 0x6a, 0x1b, 0x00, 0x1d, 0xfc, 0x1c, 0x37, 0x1e, 0x34, 0x1e, + 0x0e, 0x1f, 0x09, 0x1f, 0x7c, 0x1f, 0x78, 0x1f, 0x78, 0x1f, 0x74, 0x1f, + 0x09, 0x1f, 0x06, 0x1f, 0x27, 0x1e, 0x23, 0x1e, 0xdd, 0x1c, 0xd8, 0x1c, + 0x2b, 0x1b, 0x27, 0x1b, 0x1a, 0x19, 0x15, 0x19, 0xb4, 0x16, 0xb1, 0x16, + 0x02, 0x14, 0xfe, 0x13, 0x16, 0x11, 0x11, 0x11, 0xf6, 0x0d, 0xf4, 0x0d, + 0xb7, 0x0a, 0xb1, 0x0a, 0x61, 0x07, 0x5e, 0x07, 0x08, 0x04, 0x03, 0x04, + 0xb4, 0x00, 0xb0, 0x00, 0x7a, 0xfd, 0x75, 0xfd, 0x62, 0xfa, 0x5d, 0xfa, + 0x7b, 0xf7, 0x79, 0xf7, 0xd8, 0xf4, 0xd0, 0xf4, 0x75, 0xf2, 0x73, 0xf2, + 0x71, 0xf0, 0x6c, 0xf0, 0xc1, 0xee, 0xbc, 0xee, 0x7b, 0xed, 0x78, 0xed, + 0x98, 0xec, 0x92, 0xec, 0x21, 0xec, 0x1d, 0xec, 0x14, 0xec, 0x0e, 0xec, + 0x6b, 0xec, 0x66, 0xec, 0x2b, 0xed, 0x27, 0xed, 0x42, 0xee, 0x3c, 0xee, + 0xb3, 0xef, 0xb0, 0xef, 0x6f, 0xf1, 0x69, 0xf1, 0x6b, 0xf3, 0x67, 0xf3, + 0xa5, 0xf5, 0x9e, 0xf5, 0x04, 0xf8, 0x00, 0xf8, 0x89, 0xfa, 0x82, 0xfa, + 0x1d, 0xfd, 0x1a, 0xfd, 0xb7, 0xff, 0xae, 0xff, 0x49, 0x02, 0x46, 0x02, + 0xc2, 0x04, 0xbc, 0x04, 0x1c, 0x07, 0x16, 0x07, 0x41, 0x09, 0x3d, 0x09, + 0x2c, 0x0b, 0x26, 0x0b, 0xc7, 0x0c, 0xc2, 0x0c, 0x10, 0x0e, 0x0a, 0x0e, + 0xf5, 0x0e, 0xf0, 0x0e, 0x75, 0x0f, 0x70, 0x0f, 0x8d, 0x0f, 0x88, 0x0f, + 0x33, 0x0f, 0x2f, 0x0f, 0x75, 0x0e, 0x6f, 0x0e, 0x4a, 0x0d, 0x46, 0x0d, + 0xc1, 0x0b, 0xbc, 0x0b, 0xdc, 0x09, 0xd6, 0x09, 0xa6, 0x07, 0xa2, 0x07, + 0x2b, 0x05, 0x25, 0x05, 0x71, 0x02, 0x6c, 0x02, 0x8c, 0xff, 0x89, 0xff, + 0x80, 0xfc, 0x7c, 0xfc, 0x5f, 0xf9, 0x58, 0xf9, 0x33, 0xf6, 0x31, 0xf6, + 0x09, 0xf3, 0x01, 0xf3, 0xed, 0xef, 0xeb, 0xef, 0xec, 0xec, 0xe8, 0xec, + 0x16, 0xea, 0x12, 0xea, 0x72, 0xe7, 0x6e, 0xe7, 0x0e, 0xe5, 0x0b, 0xe5, + 0xfa, 0xe2, 0xf4, 0xe2, 0x37, 0xe1, 0x34, 0xe1, 0xd6, 0xdf, 0xcf, 0xdf, + 0xd9, 0xde, 0xd5, 0xde, 0x46, 0xde, 0x42, 0xde, 0x25, 0xde, 0x1e, 0xde, + 0x6d, 0xde, 0x6c, 0xde, 0x2b, 0xdf, 0x24, 0xdf, 0x4f, 0xe0, 0x4b, 0xe0, + 0xda, 0xe1, 0xd5, 0xe1, 0xc1, 0xe3, 0xbc, 0xe3, 0xf8, 0xe5, 0xf3, 0xe5, + 0x7b, 0xe8, 0x77, 0xe8, 0x34, 0xeb, 0x2f, 0xeb, 0x1d, 0xee, 0x19, 0xee, + 0x25, 0xf1, 0x20, 0xf1, 0x3f, 0xf4, 0x3a, 0xf4, 0x5e, 0xf7, 0x5b, 0xf7, + 0x6d, 0xfa, 0x67, 0xfa, 0x67, 0xfd, 0x63, 0xfd, 0x32, 0x00, 0x2f, 0x00, + 0xce, 0x02, 0xc9, 0x02, 0x22, 0x05, 0x1e, 0x05, 0x2d, 0x07, 0x28, 0x07, + 0xdf, 0x08, 0xda, 0x08, 0x32, 0x0a, 0x2e, 0x0a, 0x26, 0x0b, 0x20, 0x0b, + 0xac, 0x0b, 0xaa, 0x0b, 0xd2, 0x0b, 0xcd, 0x0b, 0x8e, 0x0b, 0x8a, 0x0b, + 0xeb, 0x0a, 0xe5, 0x0a, 0xe8, 0x09, 0xe4, 0x09, 0x8f, 0x08, 0x8b, 0x08, + 0xeb, 0x06, 0xe7, 0x06, 0x01, 0x05, 0xfc, 0x04, 0xdd, 0x02, 0xd8, 0x02, + 0x8b, 0x00, 0x86, 0x00, 0x12, 0xfe, 0x0d, 0xfe, 0x85, 0xfb, 0x81, 0xfb, + 0xea, 0xf8, 0xe3, 0xf8, 0x50, 0xf6, 0x4d, 0xf6, 0xc4, 0xf3, 0xbe, 0xf3, + 0x50, 0xf1, 0x4d, 0xf1, 0x09, 0xef, 0x02, 0xef, 0xf2, 0xec, 0xed, 0xec, + 0x1e, 0xeb, 0x19, 0xeb, 0x99, 0xe9, 0x93, 0xe9, 0x64, 0xe8, 0x61, 0xe8, + 0x97, 0xe7, 0x91, 0xe7, 0x2f, 0xe7, 0x2b, 0xe7, 0x35, 0xe7, 0x2f, 0xe7, + 0xa8, 0xe7, 0xa4, 0xe7, 0x8c, 0xe8, 0x87, 0xe8, 0xdb, 0xe9, 0xd7, 0xe9, + 0x91, 0xeb, 0x8d, 0xeb, 0xa4, 0xed, 0x9e, 0xed, 0x0b, 0xf0, 0x08, 0xf0, + 0xbe, 0xf2, 0xb9, 0xf2, 0xab, 0xf5, 0xa6, 0xf5, 0xce, 0xf8, 0xca, 0xf8, + 0x10, 0xfc, 0x0b, 0xfc, 0x6b, 0xff, 0x66, 0xff, 0xcd, 0x02, 0xc8, 0x02, + 0x29, 0x06, 0x25, 0x06, 0x72, 0x09, 0x70, 0x09, 0xa1, 0x0c, 0x9a, 0x0c, + 0x9b, 0x0f, 0x99, 0x0f, 0x62, 0x12, 0x5e, 0x12, 0xe1, 0x14, 0xdf, 0x14, + 0x13, 0x17, 0x0f, 0x17, 0xe6, 0x18, 0xe3, 0x18, 0x5d, 0x1a, 0x59, 0x1a, + 0x69, 0x1b, 0x67, 0x1b, 0x0c, 0x1c, 0x08, 0x1c, 0x3f, 0x1c, 0x3a, 0x1c, + 0x03, 0x1c, 0xfe, 0x1b, 0x5d, 0x1b, 0x5a, 0x1b, 0x52, 0x1a, 0x4e, 0x1a, + 0xe8, 0x18, 0xe6, 0x18, 0x2d, 0x17, 0x27, 0x17, 0x1d, 0x15, 0x19, 0x15, + 0xd5, 0x12, 0xd1, 0x12, 0x56, 0x10, 0x52, 0x10, 0xad, 0x0d, 0xab, 0x0d, + 0xef, 0x0a, 0xea, 0x0a, 0x20, 0x08, 0x1c, 0x08, 0x57, 0x05, 0x54, 0x05, + 0x9d, 0x02, 0x98, 0x02, 0x02, 0x00, 0xfe, 0xff, 0x97, 0xfd, 0x94, 0xfd, + 0x62, 0xfb, 0x5d, 0xfb, 0x7a, 0xf9, 0x77, 0xf9, 0xdf, 0xf7, 0xdc, 0xf7, + 0xa4, 0xf6, 0x9f, 0xf6, 0xc8, 0xf5, 0xc7, 0xf5, 0x55, 0xf5, 0x4f, 0xf5, + 0x49, 0xf5, 0x47, 0xf5, 0xa5, 0xf5, 0xa1, 0xf5, 0x67, 0xf6, 0x63, 0xf6, + 0x87, 0xf7, 0x86, 0xf7, 0x05, 0xf9, 0x00, 0xf9, 0xd1, 0xfa, 0xce, 0xfa, + 0xe6, 0xfc, 0xe3, 0xfc, 0x3b, 0xff, 0x36, 0xff, 0xc2, 0x01, 0xc0, 0x01, + 0x6f, 0x04, 0x6b, 0x04, 0x3e, 0x07, 0x3b, 0x07, 0x18, 0x0a, 0x15, 0x0a, + 0xf9, 0x0c, 0xf5, 0x0c, 0xd1, 0x0f, 0xcf, 0x0f, 0x94, 0x12, 0x91, 0x12, + 0x39, 0x15, 0x36, 0x15, 0xae, 0x17, 0xaa, 0x17, 0xeb, 0x19, 0xe9, 0x19, + 0xe4, 0x1b, 0xe1, 0x1b, 0x89, 0x1d, 0x86, 0x1d, 0xd6, 0x1e, 0xd1, 0x1e, + 0xbd, 0x1f, 0xbc, 0x1f, 0x40, 0x20, 0x3c, 0x20, 0x55, 0x20, 0x51, 0x20, + 0xf7, 0x1f, 0xf5, 0x1f, 0x2c, 0x1f, 0x27, 0x1f, 0xf2, 0x1d, 0xf1, 0x1d, + 0x53, 0x1c, 0x4d, 0x1c, 0x52, 0x1a, 0x50, 0x1a, 0xfc, 0x17, 0xf8, 0x17, + 0x57, 0x15, 0x55, 0x15, 0x79, 0x12, 0x75, 0x12, 0x63, 0x0f, 0x61, 0x0f, + 0x2d, 0x0c, 0x2c, 0x0c, 0xdf, 0x08, 0xdb, 0x08, 0x8b, 0x05, 0x89, 0x05, + 0x3e, 0x02, 0x3a, 0x02, 0x05, 0xff, 0x03, 0xff, 0xed, 0xfb, 0xeb, 0xfb, + 0x0a, 0xf9, 0x07, 0xf9, 0x63, 0xf6, 0x5f, 0xf6, 0x02, 0xf4, 0x01, 0xf4, + 0xfa, 0xf1, 0xf4, 0xf1, 0x49, 0xf0, 0x46, 0xf0, 0xfc, 0xee, 0xfa, 0xee, + 0x18, 0xee, 0x15, 0xee, 0x9b, 0xed, 0x97, 0xed, 0x8b, 0xed, 0x88, 0xed, + 0xde, 0xed, 0xdb, 0xed, 0x99, 0xee, 0x97, 0xee, 0xae, 0xef, 0xab, 0xef, + 0x19, 0xf1, 0x16, 0xf1, 0xd3, 0xf2, 0xd0, 0xf2, 0xcc, 0xf4, 0xca, 0xf4, + 0x02, 0xf7, 0xff, 0xf6, 0x62, 0xf9, 0x62, 0xf9, 0xe4, 0xfb, 0xe1, 0xfb, + 0x78, 0xfe, 0x75, 0xfe, 0x13, 0x01, 0x10, 0x01, 0xa4, 0x03, 0xa1, 0x03, + 0x23, 0x06, 0x21, 0x06, 0x7c, 0x08, 0x7b, 0x08, 0xa8, 0x0a, 0xa4, 0x0a, + 0x92, 0x0c, 0x92, 0x0c, 0x36, 0x0e, 0x34, 0x0e, 0x83, 0x0f, 0x80, 0x0f, + 0x6c, 0x10, 0x6c, 0x10, 0xf4, 0x10, 0xf0, 0x10, 0x0c, 0x11, 0x0a, 0x11, + 0xbc, 0x10, 0xba, 0x10, 0xfa, 0x0f, 0xf9, 0x0f, 0xd3, 0x0e, 0xd0, 0x0e, + 0x49, 0x0d, 0x48, 0x0d, 0x60, 0x0b, 0x5d, 0x0b, 0x2c, 0x09, 0x29, 0x09, + 0xa5, 0x06, 0xa2, 0x06, 0xe8, 0x03, 0xe7, 0x03, 0xf9, 0x00, 0xf6, 0x00, + 0xe3, 0xfd, 0xe2, 0xfd, 0xba, 0xfa, 0xb6, 0xfa, 0x7e, 0xf7, 0x7b, 0xf7, + 0x47, 0xf4, 0x47, 0xf4, 0x1f, 0xf1, 0x19, 0xf1, 0x0c, 0xee, 0x0c, 0xee, + 0x28, 0xeb, 0x24, 0xeb, 0x71, 0xe8, 0x71, 0xe8, 0xfd, 0xe5, 0xfc, 0xe5, + 0xd5, 0xe3, 0xd2, 0xe3, 0x01, 0xe2, 0xff, 0xe1, 0x8b, 0xe0, 0x88, 0xe0, + 0x79, 0xdf, 0x77, 0xdf, 0xd7, 0xde, 0xd4, 0xde, 0x9c, 0xde, 0x9c, 0xde, + 0xd8, 0xde, 0xd5, 0xde, 0x7d, 0xdf, 0x7b, 0xdf, 0x90, 0xe0, 0x8e, 0xe0, + 0x09, 0xe2, 0x06, 0xe2, 0xdc, 0xe3, 0xdc, 0xe3, 0x08, 0xe6, 0x03, 0xe6, + 0x76, 0xe8, 0x75, 0xe8, 0x24, 0xeb, 0x22, 0xeb, 0x02, 0xee, 0xfe, 0xed, + 0x00, 0xf1, 0xfd, 0xf0, 0x0f, 0xf4, 0x0b, 0xf4, 0x22, 0xf7, 0x22, 0xf7, + 0x2c, 0xfa, 0x29, 0xfa, 0x1b, 0xfd, 0x1a, 0xfd, 0xe4, 0xff, 0xe2, 0xff, + 0x75, 0x02, 0x72, 0x02, 0xc6, 0x04, 0xc5, 0x04, 0xcb, 0x06, 0xc9, 0x06, + 0x77, 0x08, 0x76, 0x08, 0xc9, 0x09, 0xc7, 0x09, 0xb3, 0x0a, 0xb4, 0x0a, + 0x3a, 0x0b, 0x36, 0x0b, 0x56, 0x0b, 0x58, 0x0b, 0x11, 0x0b, 0x0d, 0x0b, + 0x67, 0x0a, 0x66, 0x0a, 0x60, 0x09, 0x5f, 0x09, 0x00, 0x08, 0x00, 0x08, + 0x5a, 0x06, 0x58, 0x06, 0x67, 0x04, 0x66, 0x04, 0x40, 0x02, 0x3f, 0x02, + 0xe7, 0xff, 0xe7, 0xff, 0x6a, 0xfd, 0x68, 0xfd, 0xd6, 0xfa, 0xd4, 0xfa, + 0x30, 0xf8, 0x2f, 0xf8, 0x91, 0xf5, 0x90, 0xf5, 0xf9, 0xf2, 0xf8, 0xf2, + 0x7d, 0xf0, 0x7d, 0xf0, 0x28, 0xee, 0x27, 0xee, 0x05, 0xec, 0x05, 0xec, + 0x26, 0xea, 0x25, 0xea, 0x8c, 0xe8, 0x8d, 0xe8, 0x4e, 0xe7, 0x4e, 0xe7, + 0x6f, 0xe6, 0x6d, 0xe6, 0xf3, 0xe5, 0xf4, 0xe5, 0xe6, 0xe5, 0xe5, 0xe5, + 0x49, 0xe6, 0x49, 0xe6, 0x1c, 0xe7, 0x1c, 0xe7, 0x5c, 0xe8, 0x5c, 0xe8, + 0x05, 0xea, 0x03, 0xea, 0x0b, 0xec, 0x0b, 0xec, 0x6a, 0xee, 0x6b, 0xee, + 0x15, 0xf1, 0x14, 0xf1, 0x00, 0xf4, 0x00, 0xf4, 0x1e, 0xf7, 0x1e, 0xf7, + 0x62, 0xfa, 0x61, 0xfa, 0xbe, 0xfd, 0xbe, 0xfd, 0x25, 0x01, 0x23, 0x01, + 0x87, 0x04, 0x88, 0x04, 0xd9, 0x07, 0xd9, 0x07, 0x0b, 0x0b, 0x0a, 0x0b, + 0x15, 0x0e, 0x15, 0x0e, 0xe2, 0x10, 0xe5, 0x10, 0x6f, 0x13, 0x6e, 0x13, + 0xa8, 0x15, 0xaa, 0x15, 0x8d, 0x17, 0x8a, 0x17, 0x0c, 0x19, 0x0e, 0x19, + 0x26, 0x1a, 0x26, 0x1a, 0xd5, 0x1a, 0xd3, 0x1a, 0x12, 0x1b, 0x13, 0x1b, + 0xe4, 0x1a, 0xe4, 0x1a, 0x4c, 0x1a, 0x4b, 0x1a, 0x4d, 0x19, 0x4f, 0x19, + 0xf1, 0x17, 0xf2, 0x17, 0x40, 0x16, 0x41, 0x16, 0x41, 0x14, 0x42, 0x14, + 0x04, 0x12, 0x04, 0x12, 0x8d, 0x0f, 0x8e, 0x0f, 0xef, 0x0c, 0xf2, 0x0c, + 0x3a, 0x0a, 0x38, 0x0a, 0x73, 0x07, 0x76, 0x07, 0xaf, 0x04, 0xae, 0x04, + 0xf9, 0x01, 0xfa, 0x01, 0x60, 0xff, 0x63, 0xff, 0xf7, 0xfc, 0xf6, 0xfc, + 0xc2, 0xfa, 0xc5, 0xfa, 0xdb, 0xf8, 0xd9, 0xf8, 0x3f, 0xf7, 0x42, 0xf7, + 0x00, 0xf6, 0x01, 0xf6, 0x27, 0xf5, 0x28, 0xf5, 0xad, 0xf4, 0xaf, 0xf4, + 0xa6, 0xf4, 0xa7, 0xf4, 0xff, 0xf4, 0x00, 0xf5, 0xc5, 0xf5, 0xc7, 0xf5, + 0xe9, 0xf6, 0xeb, 0xf6, 0x69, 0xf8, 0x6a, 0xf8, 0x3f, 0xfa, 0x41, 0xfa, + 0x5b, 0xfc, 0x5b, 0xfc, 0xb7, 0xfe, 0xb9, 0xfe, 0x49, 0x01, 0x49, 0x01, + 0x01, 0x04, 0x01, 0x04, 0xd8, 0x06, 0xdc, 0x06, 0xc0, 0x09, 0xbe, 0x09, + 0xae, 0x0c, 0xb1, 0x0c, 0x93, 0x0f, 0x93, 0x0f, 0x67, 0x12, 0x6a, 0x12, + 0x19, 0x15, 0x1a, 0x15, 0xa1, 0x17, 0xa1, 0x17, 0xef, 0x19, 0xf0, 0x19, + 0xf6, 0x1b, 0xf9, 0x1b, 0xb5, 0x1d, 0xb4, 0x1d, 0x11, 0x1f, 0x16, 0x1f, + 0x15, 0x20, 0x14, 0x20, 0xa9, 0x20, 0xab, 0x20, 0xd5, 0x20, 0xd5, 0x20, + 0x8e, 0x20, 0x8f, 0x20, 0xd7, 0x1f, 0xd8, 0x1f, 0xb7, 0x1e, 0xb7, 0x1e, + 0x2a, 0x1d, 0x2b, 0x1d, 0x3e, 0x1b, 0x40, 0x1b, 0xfa, 0x18, 0xfa, 0x18, + 0x68, 0x16, 0x69, 0x16, 0x96, 0x13, 0x96, 0x13, 0x8f, 0x10, 0x8f, 0x10, + 0x62, 0x0d, 0x64, 0x0d, 0x1f, 0x0a, 0x1d, 0x0a, 0xd0, 0x06, 0xd1, 0x06, + 0x86, 0x03, 0x87, 0x03, 0x50, 0x00, 0x52, 0x00, 0x3e, 0xfd, 0x3e, 0xfd, + 0x57, 0xfa, 0x5b, 0xfa, 0xb1, 0xf7, 0xb1, 0xf7, 0x51, 0xf5, 0x54, 0xf5, + 0x43, 0xf3, 0x44, 0xf3, 0x92, 0xf1, 0x93, 0xf1, 0x43, 0xf0, 0x44, 0xf0, + 0x58, 0xef, 0x5a, 0xef, 0xd9, 0xee, 0xdb, 0xee, 0xbe, 0xee, 0xbf, 0xee, + 0x12, 0xef, 0x13, 0xef, 0xc1, 0xef, 0xc2, 0xef, 0xd2, 0xf0, 0xd4, 0xf0, + 0x35, 0xf2, 0x36, 0xf2, 0xe7, 0xf3, 0xe9, 0xf3, 0xdd, 0xf5, 0xdf, 0xf5, + 0x07, 0xf8, 0x09, 0xf8, 0x65, 0xfa, 0x68, 0xfa, 0xe0, 0xfc, 0xe0, 0xfc, + 0x6d, 0xff, 0x72, 0xff, 0x06, 0x02, 0x05, 0x02, 0x94, 0x04, 0x99, 0x04, + 0x17, 0x07, 0x15, 0x07, 0x6f, 0x09, 0x73, 0x09, 0x9e, 0x0b, 0xa0, 0x0b, + 0x92, 0x0d, 0x93, 0x0d, 0x38, 0x0f, 0x3c, 0x0f, 0x92, 0x10, 0x92, 0x10, + 0x85, 0x11, 0x8a, 0x11, 0x19, 0x12, 0x1a, 0x12, 0x3e, 0x12, 0x41, 0x12, + 0xf7, 0x11, 0xf8, 0x11, 0x43, 0x11, 0x47, 0x11, 0x21, 0x10, 0x22, 0x10, + 0x9e, 0x0e, 0xa1, 0x0e, 0xbc, 0x0c, 0xbe, 0x0c, 0x83, 0x0a, 0x86, 0x0a, + 0x01, 0x08, 0x03, 0x08, 0x3e, 0x05, 0x40, 0x05, 0x49, 0x02, 0x4b, 0x02, + 0x2c, 0xff, 0x2d, 0xff, 0xf6, 0xfb, 0xf9, 0xfb, 0xb2, 0xf8, 0xb3, 0xf8, + 0x6c, 0xf5, 0x70, 0xf5, 0x35, 0xf2, 0x37, 0xf2, 0x17, 0xef, 0x18, 0xef, + 0x1f, 0xec, 0x20, 0xec, 0x5b, 0xe9, 0x5d, 0xe9, 0xd4, 0xe6, 0xd7, 0xe6, + 0x98, 0xe4, 0x9b, 0xe4, 0xb2, 0xe2, 0xb3, 0xe2, 0x2a, 0xe1, 0x2b, 0xe1, + 0x04, 0xe0, 0x07, 0xe0, 0x4e, 0xdf, 0x4e, 0xdf, 0xff, 0xde, 0x03, 0xdf, + 0x27, 0xdf, 0x29, 0xdf, 0xbb, 0xdf, 0xbc, 0xdf, 0xb9, 0xe0, 0xbc, 0xe0, + 0x1f, 0xe2, 0x20, 0xe2, 0xe0, 0xe3, 0xe2, 0xe3, 0xf6, 0xe5, 0xf8, 0xe5, + 0x56, 0xe8, 0x59, 0xe8, 0xf3, 0xea, 0xf4, 0xea, 0xbd, 0xed, 0xc2, 0xed, + 0xae, 0xf0, 0xae, 0xf0, 0xad, 0xf3, 0xb1, 0xf3, 0xb7, 0xf6, 0xb8, 0xf6, + 0xb7, 0xf9, 0xb9, 0xf9, 0x9b, 0xfc, 0x9f, 0xfc, 0x5d, 0xff, 0x5f, 0xff, + 0xea, 0x01, 0xec, 0x01, 0x36, 0x04, 0x38, 0x04, 0x37, 0x06, 0x39, 0x06, + 0xe1, 0x07, 0xe4, 0x07, 0x2e, 0x09, 0x2e, 0x09, 0x19, 0x0a, 0x1c, 0x0a, + 0x9b, 0x0a, 0x9c, 0x0a, 0xb9, 0x0a, 0xba, 0x0a, 0x6e, 0x0a, 0x72, 0x0a, + 0xc0, 0x09, 0xc1, 0x09, 0xb5, 0x08, 0xb9, 0x08, 0x53, 0x07, 0x57, 0x07, + 0xa7, 0x05, 0xa6, 0x05, 0xae, 0x03, 0xb5, 0x03, 0x82, 0x01, 0x81, 0x01, + 0x22, 0xff, 0x26, 0xff, 0x9e, 0xfc, 0x9e, 0xfc, 0x02, 0xfa, 0x05, 0xfa, + 0x56, 0xf7, 0x59, 0xf7, 0xad, 0xf4, 0xb0, 0xf4, 0x0f, 0xf2, 0x10, 0xf2, + 0x89, 0xef, 0x8c, 0xef, 0x2a, 0xed, 0x2d, 0xed, 0xfd, 0xea, 0xff, 0xea, + 0x0f, 0xe9, 0x11, 0xe9, 0x6d, 0xe7, 0x70, 0xe7, 0x1f, 0xe6, 0x20, 0xe6, + 0x32, 0xe5, 0x36, 0xe5, 0xab, 0xe4, 0xac, 0xe4, 0x8c, 0xe4, 0x90, 0xe4, + 0xdf, 0xe4, 0xe3, 0xe4, 0xa7, 0xe5, 0xa7, 0xe5, 0xd6, 0xe6, 0xda, 0xe6, + 0x74, 0xe8, 0x75, 0xe8, 0x6f, 0xea, 0x72, 0xea, 0xc3, 0xec, 0xc4, 0xec, + 0x66, 0xef, 0x68, 0xef, 0x49, 0xf2, 0x4b, 0xf2, 0x62, 0xf5, 0x65, 0xf5, + 0xa3, 0xf8, 0xa5, 0xf8, 0xfd, 0xfb, 0xff, 0xfb, 0x65, 0xff, 0x67, 0xff, + 0xc8, 0x02, 0xca, 0x02, 0x1d, 0x06, 0x20, 0x06, 0x52, 0x09, 0x56, 0x09, + 0x62, 0x0c, 0x64, 0x0c, 0x37, 0x0f, 0x3a, 0x0f, 0xc8, 0x11, 0xcc, 0x11, + 0x0e, 0x14, 0x10, 0x14, 0xf6, 0x15, 0xfa, 0x15, 0x82, 0x17, 0x85, 0x17, + 0xa7, 0x18, 0xa9, 0x18, 0x5b, 0x19, 0x60, 0x19, 0xa9, 0x19, 0xac, 0x19, + 0x82, 0x19, 0x86, 0x19, 0xf7, 0x18, 0xfb, 0x18, 0x05, 0x18, 0x08, 0x18, + 0xb6, 0x16, 0xba, 0x16, 0x10, 0x15, 0x11, 0x15, 0x1d, 0x13, 0x21, 0x13, + 0xe9, 0x10, 0xec, 0x10, 0x80, 0x0e, 0x83, 0x0e, 0xf0, 0x0b, 0xf3, 0x0b, + 0x3e, 0x09, 0x43, 0x09, 0x87, 0x06, 0x87, 0x06, 0xc5, 0x03, 0xcc, 0x03, + 0x1c, 0x01, 0x1e, 0x01, 0x88, 0xfe, 0x8d, 0xfe, 0x23, 0xfc, 0x25, 0xfc, + 0xf5, 0xf9, 0xf9, 0xf9, 0x0c, 0xf8, 0x0f, 0xf8, 0x78, 0xf6, 0x7c, 0xf6, + 0x39, 0xf5, 0x3c, 0xf5, 0x62, 0xf4, 0x65, 0xf4, 0xee, 0xf3, 0xf3, 0xf3, + 0xe7, 0xf3, 0xe9, 0xf3, 0x49, 0xf4, 0x4f, 0xf4, 0x10, 0xf5, 0x13, 0xf5, + 0x3e, 0xf6, 0x43, 0xf6, 0xc3, 0xf7, 0xc7, 0xf7, 0xa2, 0xf9, 0xa4, 0xf9, + 0xc9, 0xfb, 0xcd, 0xfb, 0x30, 0xfe, 0x32, 0xfe, 0xce, 0x00, 0xd2, 0x00, + 0x95, 0x03, 0x99, 0x03, 0x79, 0x06, 0x7c, 0x06, 0x72, 0x09, 0x75, 0x09, + 0x6e, 0x0c, 0x72, 0x0c, 0x66, 0x0f, 0x69, 0x0f, 0x4b, 0x12, 0x4d, 0x12, + 0x0c, 0x15, 0x0f, 0x15, 0xa7, 0x17, 0xa7, 0x17, 0x05, 0x1a, 0x07, 0x1a, + 0x20, 0x1c, 0x23, 0x1c, 0xed, 0x1d, 0xef, 0x1d, 0x5d, 0x1f, 0x60, 0x1f, + 0x71, 0x20, 0x73, 0x20, 0x19, 0x21, 0x1b, 0x21, 0x55, 0x21, 0x57, 0x21, + 0x22, 0x21, 0x25, 0x21, 0x7b, 0x20, 0x7d, 0x20, 0x6c, 0x1f, 0x70, 0x1f, + 0xef, 0x1d, 0xf0, 0x1d, 0x16, 0x1c, 0x18, 0x1c, 0xdc, 0x19, 0xe0, 0x19, + 0x5c, 0x17, 0x5c, 0x17, 0x93, 0x14, 0x99, 0x14, 0x9b, 0x11, 0x9e, 0x11, + 0x79, 0x0e, 0x7c, 0x0e, 0x3c, 0x0b, 0x3f, 0x0b, 0xf6, 0x07, 0xfa, 0x07, + 0xb7, 0x04, 0xb9, 0x04, 0x86, 0x01, 0x89, 0x01, 0x79, 0xfe, 0x7c, 0xfe, + 0x98, 0xfb, 0x9d, 0xfb, 0xf4, 0xf8, 0xf8, 0xf8, 0x9a, 0xf6, 0x9c, 0xf6, + 0x8b, 0xf4, 0x90, 0xf4, 0xe1, 0xf2, 0xe4, 0xf2, 0x8f, 0xf1, 0x93, 0xf1, + 0xaa, 0xf0, 0xae, 0xf0, 0x2a, 0xf0, 0x2d, 0xf0, 0x13, 0xf0, 0x16, 0xf0, + 0x65, 0xf0, 0x69, 0xf0, 0x17, 0xf1, 0x19, 0xf1, 0x29, 0xf2, 0x2d, 0xf2, + 0x8e, 0xf3, 0x91, 0xf3, 0x41, 0xf5, 0x44, 0xf5, 0x38, 0xf7, 0x3b, 0xf7, + 0x66, 0xf9, 0x6a, 0xf9, 0xc4, 0xfb, 0xc7, 0xfb, 0x41, 0xfe, 0x45, 0xfe, + 0xd1, 0x00, 0xd4, 0x00, 0x6c, 0x03, 0x70, 0x03, 0x00, 0x06, 0x02, 0x06, + 0x82, 0x08, 0x87, 0x08, 0xe3, 0x0a, 0xe4, 0x0a, 0x15, 0x0d, 0x18, 0x0d, + 0x0b, 0x0f, 0x10, 0x0f, 0xbb, 0x10, 0xbc, 0x10, 0x16, 0x12, 0x1b, 0x12, + 0x15, 0x13, 0x17, 0x13, 0xac, 0x13, 0xaf, 0x13, 0xd5, 0x13, 0xda, 0x13, + 0x95, 0x13, 0x95, 0x13, 0xe1, 0x12, 0xe5, 0x12, 0xc4, 0x11, 0xc6, 0x11, + 0x40, 0x10, 0x42, 0x10, 0x5d, 0x0e, 0x60, 0x0e, 0x23, 0x0c, 0x25, 0x0c, + 0x9c, 0x09, 0x9f, 0x09, 0xd5, 0x06, 0xd7, 0x06, 0xd9, 0x03, 0xdb, 0x03, + 0xb4, 0x00, 0xb8, 0x00, 0x77, 0xfd, 0x77, 0xfd, 0x29, 0xfa, 0x2b, 0xfa, + 0xda, 0xf6, 0xdb, 0xf6, 0x96, 0xf3, 0x96, 0xf3, 0x6a, 0xf0, 0x6e, 0xf0, + 0x68, 0xed, 0x68, 0xed, 0x95, 0xea, 0x97, 0xea, 0xff, 0xe7, 0x01, 0xe8, + 0xb6, 0xe5, 0xb8, 0xe5, 0xbd, 0xe3, 0xc0, 0xe3, 0x28, 0xe2, 0x29, 0xe2, + 0xf0, 0xe0, 0xf5, 0xe0, 0x2b, 0xe0, 0x2c, 0xe0, 0xd0, 0xdf, 0xd2, 0xdf, + 0xe4, 0xdf, 0xe5, 0xdf, 0x67, 0xe0, 0x6b, 0xe0, 0x59, 0xe1, 0x58, 0xe1, + 0xac, 0xe2, 0xb1, 0xe2, 0x63, 0xe4, 0x62, 0xe4, 0x69, 0xe6, 0x6c, 0xe6, + 0xbb, 0xe8, 0xbd, 0xe8, 0x4b, 0xeb, 0x4d, 0xeb, 0x0a, 0xee, 0x0e, 0xee, + 0xf0, 0xf0, 0xf0, 0xf0, 0xe7, 0xf3, 0xeb, 0xf3, 0xe5, 0xf6, 0xe7, 0xf6, + 0xdc, 0xf9, 0xdd, 0xf9, 0xba, 0xfc, 0xbd, 0xfc, 0x74, 0xff, 0x75, 0xff, + 0xf9, 0x01, 0xfa, 0x01, 0x3c, 0x04, 0x3f, 0x04, 0x38, 0x06, 0x3a, 0x06, + 0xd7, 0x07, 0xdc, 0x07, 0x20, 0x09, 0x21, 0x09, 0x02, 0x0a, 0x05, 0x0a, + 0x7d, 0x0a, 0x81, 0x0a, 0x95, 0x0a, 0x95, 0x0a, 0x3f, 0x0a, 0x45, 0x0a, + 0x8d, 0x09, 0x8b, 0x09, 0x79, 0x08, 0x7c, 0x08, 0x0c, 0x07, 0x0e, 0x07, + 0x58, 0x05, 0x59, 0x05, 0x56, 0x03, 0x5b, 0x03, 0x20, 0x01, 0x22, 0x01, + 0xb7, 0xfe, 0xbb, 0xfe, 0x2a, 0xfc, 0x2e, 0xfc, 0x86, 0xf9, 0x87, 0xf9, + 0xd3, 0xf6, 0xd6, 0xf6, 0x20, 0xf4, 0x21, 0xf4, 0x75, 0xf1, 0x79, 0xf1, + 0xe6, 0xee, 0xe8, 0xee, 0x7c, 0xec, 0x7e, 0xec, 0x41, 0xea, 0x43, 0xea, + 0x46, 0xe8, 0x48, 0xe8, 0x96, 0xe6, 0x97, 0xe6, 0x38, 0xe5, 0x3c, 0xe5, + 0x3d, 0xe4, 0x3e, 0xe4, 0xa2, 0xe3, 0xa5, 0xe3, 0x78, 0xe3, 0x7b, 0xe3, + 0xbb, 0xe3, 0xbd, 0xe3, 0x6d, 0xe4, 0x6f, 0xe4, 0x90, 0xe5, 0x94, 0xe5, + 0x1d, 0xe7, 0x1d, 0xe7, 0x0c, 0xe9, 0x10, 0xe9, 0x58, 0xeb, 0x56, 0xeb, + 0xf0, 0xed, 0xf2, 0xed, 0xcf, 0xf0, 0xd0, 0xf0, 0xe0, 0xf3, 0xe3, 0xf3, + 0x20, 0xf7, 0x23, 0xf7, 0x76, 0xfa, 0x77, 0xfa, 0xdf, 0xfd, 0xe2, 0xfd, + 0x43, 0x01, 0x44, 0x01, 0x9b, 0x04, 0x9e, 0x04, 0xd6, 0x07, 0xd8, 0x07, + 0xe5, 0x0a, 0xe8, 0x0a, 0xc2, 0x0d, 0xc2, 0x0d, 0x57, 0x10, 0x5a, 0x10, + 0xa1, 0x12, 0xa1, 0x12, 0x93, 0x14, 0x96, 0x14, 0x22, 0x16, 0x23, 0x16, + 0x4c, 0x17, 0x4f, 0x17, 0x09, 0x18, 0x0b, 0x18, 0x5a, 0x18, 0x5d, 0x18, + 0x3e, 0x18, 0x3d, 0x18, 0xb8, 0x17, 0xbd, 0x17, 0xd2, 0x16, 0xd2, 0x16, + 0x88, 0x15, 0x8b, 0x15, 0xed, 0x13, 0xed, 0x13, 0x02, 0x12, 0x06, 0x12, + 0xd7, 0x0f, 0xd8, 0x0f, 0x77, 0x0d, 0x78, 0x0d, 0xe9, 0x0a, 0xed, 0x0a, + 0x48, 0x08, 0x48, 0x08, 0x8f, 0x05, 0x92, 0x05, 0xda, 0x02, 0xdc, 0x02, + 0x33, 0x00, 0x34, 0x00, 0xa3, 0xfd, 0xa5, 0xfd, 0x40, 0xfb, 0x42, 0xfb, + 0x11, 0xf9, 0x13, 0xf9, 0x2b, 0xf7, 0x2e, 0xf7, 0x92, 0xf5, 0x94, 0xf5, + 0x59, 0xf4, 0x5b, 0xf4, 0x7e, 0xf3, 0x7f, 0xf3, 0x0d, 0xf3, 0x0f, 0xf3, + 0x04, 0xf3, 0x06, 0xf3, 0x67, 0xf3, 0x6a, 0xf3, 0x34, 0xf4, 0x35, 0xf4, + 0x63, 0xf5, 0x65, 0xf5, 0xf3, 0xf6, 0xf5, 0xf6, 0xd7, 0xf8, 0xd6, 0xf8, + 0x06, 0xfb, 0x09, 0xfb, 0x78, 0xfd, 0x78, 0xfd, 0x1e, 0x00, 0x20, 0x00, + 0xf3, 0x02, 0xf3, 0x02, 0xe1, 0x05, 0xe2, 0x05, 0xe8, 0x08, 0xe9, 0x08, + 0xef, 0x0b, 0xf1, 0x0b, 0xf7, 0x0e, 0xf8, 0x0e, 0xe5, 0x11, 0xe6, 0x11, + 0xb9, 0x14, 0xbc, 0x14, 0x5f, 0x17, 0x60, 0x17, 0xcf, 0x19, 0xd1, 0x19, + 0xfa, 0x1b, 0xfd, 0x1b, 0xd7, 0x1d, 0xd9, 0x1d, 0x5b, 0x1f, 0x5a, 0x1f, + 0x7d, 0x20, 0x80, 0x20, 0x39, 0x21, 0x3a, 0x21, 0x86, 0x21, 0x86, 0x21, + 0x64, 0x21, 0x66, 0x21, 0xd3, 0x20, 0xd3, 0x20, 0xd2, 0x1f, 0xd4, 0x1f, + 0x6c, 0x1e, 0x6b, 0x1e, 0x9e, 0x1c, 0xa1, 0x1c, 0x7b, 0x1a, 0x7b, 0x1a, + 0x05, 0x18, 0x07, 0x18, 0x4e, 0x15, 0x4e, 0x15, 0x60, 0x12, 0x63, 0x12, + 0x4b, 0x0f, 0x4b, 0x0f, 0x1c, 0x0c, 0x1d, 0x0c, 0xdd, 0x08, 0xdf, 0x08, + 0xa6, 0x05, 0xa7, 0x05, 0x7e, 0x02, 0x81, 0x02, 0x76, 0xff, 0x76, 0xff, + 0x9e, 0xfc, 0xa0, 0xfc, 0xfc, 0xf9, 0xfd, 0xf9, 0xa8, 0xf7, 0xaa, 0xf7, + 0xa0, 0xf5, 0xa2, 0xf5, 0xf5, 0xf3, 0xf5, 0xf3, 0xa8, 0xf2, 0xac, 0xf2, + 0xc4, 0xf1, 0xc5, 0xf1, 0x47, 0xf1, 0x4a, 0xf1, 0x32, 0xf1, 0x32, 0xf1, + 0x83, 0xf1, 0x85, 0xf1, 0x35, 0xf2, 0x36, 0xf2, 0x47, 0xf3, 0x49, 0xf3, + 0xab, 0xf4, 0xad, 0xf4, 0x5c, 0xf6, 0x5d, 0xf6, 0x53, 0xf8, 0x53, 0xf8, + 0x7d, 0xfa, 0x7f, 0xfa, 0xda, 0xfc, 0xd8, 0xfc, 0x51, 0xff, 0x55, 0xff, + 0xe4, 0x01, 0xe3, 0x01, 0x7d, 0x04, 0x7e, 0x04, 0x0d, 0x07, 0x0f, 0x07, + 0x93, 0x09, 0x92, 0x09, 0xf1, 0x0b, 0xf2, 0x0b, 0x29, 0x0e, 0x2a, 0x0e, + 0x23, 0x10, 0x23, 0x10, 0xd7, 0x11, 0xd9, 0x11, 0x3a, 0x13, 0x3a, 0x13, + 0x3f, 0x14, 0x40, 0x14, 0xe2, 0x14, 0xe3, 0x14, 0x17, 0x15, 0x17, 0x15, + 0xde, 0x14, 0xdf, 0x14, 0x35, 0x14, 0x37, 0x14, 0x20, 0x13, 0x20, 0x13, + 0xa5, 0x11, 0xa6, 0x11, 0xc2, 0x0f, 0xc3, 0x0f, 0x90, 0x0d, 0x91, 0x0d, + 0x06, 0x0b, 0x06, 0x0b, 0x3d, 0x08, 0x3e, 0x08, 0x40, 0x05, 0x40, 0x05, + 0x14, 0x02, 0x16, 0x02, 0xce, 0xfe, 0xcf, 0xfe, 0x79, 0xfb, 0x78, 0xfb, + 0x1f, 0xf8, 0x21, 0xf8, 0xd2, 0xf4, 0xd2, 0xf4, 0x9b, 0xf1, 0x9c, 0xf1, + 0x8b, 0xee, 0x8c, 0xee, 0xab, 0xeb, 0xac, 0xeb, 0x0b, 0xe9, 0x0a, 0xe9, + 0xb2, 0xe6, 0xb6, 0xe6, 0xb0, 0xe4, 0xb0, 0xe4, 0x08, 0xe3, 0x0b, 0xe3, + 0xc8, 0xe1, 0xc8, 0xe1, 0xf0, 0xe0, 0xf2, 0xe0, 0x88, 0xe0, 0x89, 0xe0, + 0x8d, 0xe0, 0x8e, 0xe0, 0x03, 0xe1, 0x06, 0xe1, 0xe7, 0xe1, 0xe5, 0xe1, + 0x2a, 0xe3, 0x2f, 0xe3, 0xd2, 0xe4, 0xd0, 0xe4, 0xc6, 0xe6, 0xca, 0xe6, + 0x0d, 0xe9, 0x0b, 0xe9, 0x8b, 0xeb, 0x8e, 0xeb, 0x3d, 0xee, 0x3f, 0xee, + 0x12, 0xf1, 0x14, 0xf1, 0xfd, 0xf3, 0xfe, 0xf3, 0xf1, 0xf6, 0xf2, 0xf6, + 0xd9, 0xf9, 0xdb, 0xf9, 0xb1, 0xfc, 0xb0, 0xfc, 0x60, 0xff, 0x61, 0xff, + 0xde, 0x01, 0xde, 0x01, 0x1c, 0x04, 0x1e, 0x04, 0x0e, 0x06, 0x11, 0x06, + 0xac, 0x07, 0xac, 0x07, 0xea, 0x08, 0xee, 0x08, 0xcc, 0x09, 0xcb, 0x09, + 0x3f, 0x0a, 0x42, 0x0a, 0x4f, 0x0a, 0x51, 0x0a, 0xf5, 0x09, 0xf6, 0x09, + 0x3a, 0x09, 0x3d, 0x09, 0x20, 0x08, 0x20, 0x08, 0xae, 0x06, 0xb2, 0x06, + 0xee, 0x04, 0xef, 0x04, 0xe6, 0x02, 0xe9, 0x02, 0xa6, 0x00, 0xa7, 0x00, + 0x33, 0xfe, 0x34, 0xfe, 0x9d, 0xfb, 0x9f, 0xfb, 0xec, 0xf8, 0xef, 0xf8, + 0x2e, 0xf6, 0x2f, 0xf6, 0x6f, 0xf3, 0x73, 0xf3, 0xbc, 0xf0, 0xbd, 0xf0, + 0x1f, 0xee, 0x23, 0xee, 0xac, 0xeb, 0xac, 0xeb, 0x64, 0xe9, 0x67, 0xe9, + 0x5f, 0xe7, 0x62, 0xe7, 0xa2, 0xe5, 0xa4, 0xe5, 0x37, 0xe4, 0x38, 0xe4, + 0x2d, 0xe3, 0x31, 0xe3, 0x88, 0xe2, 0x89, 0xe2, 0x4e, 0xe2, 0x51, 0xe2, + 0x82, 0xe2, 0x84, 0xe2, 0x28, 0xe3, 0x2b, 0xe3, 0x3c, 0xe4, 0x3f, 0xe4, + 0xbd, 0xe5, 0xbf, 0xe5, 0xa1, 0xe7, 0xa1, 0xe7, 0xde, 0xe9, 0xe3, 0xe9, + 0x6e, 0xec, 0x6f, 0xec, 0x41, 0xef, 0x44, 0xef, 0x4f, 0xf2, 0x51, 0xf2, + 0x87, 0xf5, 0x88, 0xf5, 0xdc, 0xf8, 0xdf, 0xf8, 0x3f, 0xfc, 0x40, 0xfc, + 0xa3, 0xff, 0xa7, 0xff, 0xfb, 0x02, 0xf9, 0x02, 0x34, 0x06, 0x36, 0x06, + 0x4a, 0x09, 0x4b, 0x09, 0x25, 0x0c, 0x25, 0x0c, 0xc0, 0x0e, 0xc3, 0x0e, + 0x0e, 0x11, 0x0e, 0x11, 0x02, 0x13, 0x04, 0x13, 0x9a, 0x14, 0x9a, 0x14, + 0xc6, 0x15, 0xc8, 0x15, 0x8b, 0x16, 0x8d, 0x16, 0xe2, 0x16, 0xe3, 0x16, + 0xcf, 0x16, 0xd0, 0x16, 0x50, 0x16, 0x51, 0x16, 0x70, 0x15, 0x71, 0x15, + 0x31, 0x14, 0x31, 0x14, 0x9a, 0x12, 0x9b, 0x12, 0xbb, 0x10, 0xbc, 0x10, + 0x99, 0x0e, 0x98, 0x0e, 0x3d, 0x0c, 0x40, 0x0c, 0xbd, 0x09, 0xbe, 0x09, + 0x1e, 0x07, 0x1f, 0x07, 0x70, 0x04, 0x6f, 0x04, 0xbf, 0x01, 0xc2, 0x01, + 0x1c, 0xff, 0x1c, 0xff, 0x92, 0xfc, 0x92, 0xfc, 0x31, 0xfa, 0x33, 0xfa, + 0x08, 0xf8, 0x06, 0xf8, 0x1e, 0xf6, 0x22, 0xf6, 0x88, 0xf4, 0x89, 0xf4, + 0x4d, 0xf3, 0x4e, 0xf3, 0x72, 0xf2, 0x73, 0xf2, 0x02, 0xf2, 0x03, 0xf2, + 0xfc, 0xf1, 0xfd, 0xf1, 0x61, 0xf2, 0x62, 0xf2, 0x2f, 0xf3, 0x32, 0xf3, + 0x65, 0xf4, 0x65, 0xf4, 0xf8, 0xf5, 0xfb, 0xf5, 0xe4, 0xf7, 0xe5, 0xf7, + 0x1a, 0xfa, 0x19, 0xfa, 0x97, 0xfc, 0x9a, 0xfc, 0x4a, 0xff, 0x4a, 0xff, + 0x29, 0x02, 0x2a, 0x02, 0x27, 0x05, 0x29, 0x05, 0x3b, 0x08, 0x3a, 0x08, + 0x53, 0x0b, 0x56, 0x0b, 0x6a, 0x0e, 0x69, 0x0e, 0x6b, 0x11, 0x6d, 0x11, + 0x50, 0x14, 0x50, 0x14, 0x08, 0x17, 0x0a, 0x17, 0x8a, 0x19, 0x8a, 0x19, + 0xc8, 0x1b, 0xca, 0x1b, 0xb8, 0x1d, 0xb7, 0x1d, 0x4f, 0x1f, 0x51, 0x1f, + 0x85, 0x20, 0x85, 0x20, 0x54, 0x21, 0x56, 0x21, 0xb4, 0x21, 0xb5, 0x21, + 0xa5, 0x21, 0xa8, 0x21, 0x28, 0x21, 0x29, 0x21, 0x3a, 0x20, 0x3c, 0x20, + 0xe5, 0x1e, 0xe6, 0x1e, 0x2a, 0x1d, 0x2a, 0x1d, 0x15, 0x1b, 0x18, 0x1b, + 0xb1, 0x18, 0xb0, 0x18, 0x09, 0x16, 0x0a, 0x16, 0x26, 0x13, 0x27, 0x13, + 0x1d, 0x10, 0x1d, 0x10, 0xf8, 0x0c, 0xfa, 0x0c, 0xc5, 0x09, 0xc4, 0x09, + 0x92, 0x06, 0x96, 0x06, 0x73, 0x03, 0x72, 0x03, 0x70, 0x00, 0x71, 0x00, + 0x9c, 0xfd, 0x9d, 0xfd, 0x00, 0xfb, 0x01, 0xfb, 0xab, 0xf8, 0xae, 0xf8, + 0xaa, 0xf6, 0xa8, 0xf6, 0xfc, 0xf4, 0x00, 0xf5, 0xb6, 0xf3, 0xb5, 0xf3, + 0xd0, 0xf2, 0xd1, 0xf2, 0x54, 0xf2, 0x56, 0xf2, 0x42, 0xf2, 0x42, 0xf2, + 0x92, 0xf2, 0x96, 0xf2, 0x4c, 0xf3, 0x4b, 0xf3, 0x5b, 0xf4, 0x5d, 0xf4, + 0xc4, 0xf5, 0xc4, 0xf5, 0x76, 0xf7, 0x78, 0xf7, 0x6f, 0xf9, 0x6f, 0xf9, + 0xa0, 0xfb, 0xa0, 0xfb, 0xfd, 0xfd, 0xfe, 0xfd, 0x7c, 0x00, 0x7b, 0x00, + 0x11, 0x03, 0x14, 0x03, 0xb0, 0x05, 0xad, 0x05, 0x47, 0x08, 0x49, 0x08, + 0xd4, 0x0a, 0xd3, 0x0a, 0x3c, 0x0d, 0x3c, 0x0d, 0x7c, 0x0f, 0x7d, 0x0f, + 0x81, 0x11, 0x7f, 0x11, 0x3f, 0x13, 0x40, 0x13, 0xac, 0x14, 0xac, 0x14, + 0xc0, 0x15, 0xc1, 0x15, 0x6e, 0x16, 0x6d, 0x16, 0xb1, 0x16, 0xb0, 0x16, + 0x82, 0x16, 0x80, 0x16, 0xe3, 0x15, 0xe4, 0x15, 0xd7, 0x14, 0xd7, 0x14, + 0x63, 0x13, 0x63, 0x13, 0x89, 0x11, 0x88, 0x11, 0x57, 0x0f, 0x57, 0x0f, + 0xd4, 0x0c, 0xd1, 0x0c, 0x08, 0x0a, 0x0a, 0x0a, 0x0c, 0x07, 0x09, 0x07, + 0xde, 0x03, 0xe0, 0x03, 0x92, 0x00, 0x91, 0x00, 0x36, 0xfd, 0x37, 0xfd, + 0xd3, 0xf9, 0xd5, 0xf9, 0x7f, 0xf6, 0x7c, 0xf6, 0x3a, 0xf3, 0x3b, 0xf3, + 0x1d, 0xf0, 0x1c, 0xf0, 0x33, 0xed, 0x32, 0xed, 0x84, 0xea, 0x85, 0xea, + 0x22, 0xe8, 0x21, 0xe8, 0x0c, 0xe6, 0x0b, 0xe6, 0x53, 0xe4, 0x53, 0xe4, + 0xfc, 0xe2, 0xfa, 0xe2, 0x0d, 0xe2, 0x0d, 0xe2, 0x92, 0xe1, 0x92, 0xe1, + 0x8e, 0xe1, 0x8d, 0xe1, 0xff, 0xe1, 0x00, 0xe2, 0xe7, 0xe2, 0xe6, 0xe2, + 0x33, 0xe4, 0x32, 0xe4, 0xe3, 0xe5, 0xe3, 0xe5, 0xe1, 0xe7, 0xe0, 0xe7, + 0x29, 0xea, 0x28, 0xea, 0xa7, 0xec, 0xa9, 0xec, 0x53, 0xef, 0x50, 0xef, + 0x1a, 0xf2, 0x1b, 0xf2, 0xef, 0xf4, 0xec, 0xf4, 0xc4, 0xf7, 0xc5, 0xf7, + 0x89, 0xfa, 0x86, 0xfa, 0x31, 0xfd, 0x33, 0xfd, 0xb0, 0xff, 0xae, 0xff, + 0xf5, 0x01, 0xf6, 0x01, 0xfc, 0x03, 0xfe, 0x03, 0xb5, 0x05, 0xb5, 0x05, + 0x1b, 0x07, 0x1c, 0x07, 0x23, 0x08, 0x24, 0x08, 0xd2, 0x08, 0xd2, 0x08, + 0x1b, 0x09, 0x1b, 0x09, 0x05, 0x09, 0x06, 0x09, 0x90, 0x08, 0x90, 0x08, + 0xc0, 0x07, 0xc0, 0x07, 0x9f, 0x06, 0x9e, 0x06, 0x2c, 0x05, 0x2c, 0x05, + 0x78, 0x03, 0x77, 0x03, 0x85, 0x01, 0x86, 0x01, 0x67, 0xff, 0x66, 0xff, + 0x1d, 0xfd, 0x1c, 0xfd, 0xb9, 0xfa, 0xba, 0xfa, 0x46, 0xf8, 0x46, 0xf8, + 0xcb, 0xf5, 0xca, 0xf5, 0x56, 0xf3, 0x58, 0xf3, 0xf2, 0xf0, 0xf2, 0xf0, + 0xac, 0xee, 0xab, 0xee, 0x89, 0xec, 0x87, 0xec, 0x98, 0xea, 0x99, 0xea, + 0xe5, 0xe8, 0xe3, 0xe8, 0x70, 0xe7, 0x72, 0xe7, 0x50, 0xe6, 0x4e, 0xe6, + 0x7d, 0xe5, 0x7d, 0xe5, 0x04, 0xe5, 0x05, 0xe5, 0xeb, 0xe4, 0xe9, 0xe4, + 0x27, 0xe5, 0x27, 0xe5, 0xcb, 0xe5, 0xcb, 0xe5, 0xc0, 0xe6, 0xbe, 0xe6, + 0x11, 0xe8, 0x11, 0xe8, 0xb2, 0xe9, 0xb1, 0xe9, 0x9a, 0xeb, 0x98, 0xeb, + 0xc5, 0xed, 0xc5, 0xed, 0x20, 0xf0, 0x20, 0xf0, 0xac, 0xf2, 0xad, 0xf2, + 0x56, 0xf5, 0x54, 0xf5, 0x10, 0xf8, 0x11, 0xf8, 0xd9, 0xfa, 0xd6, 0xfa, + 0x94, 0xfd, 0x94, 0xfd, 0x48, 0x00, 0x48, 0x00, 0xdd, 0x02, 0xdc, 0x02, + 0x4e, 0x05, 0x4e, 0x05, 0x94, 0x07, 0x91, 0x07, 0x9b, 0x09, 0x9c, 0x09, + 0x6b, 0x0b, 0x69, 0x0b, 0xed, 0x0c, 0xed, 0x0c, 0x2c, 0x0e, 0x28, 0x0e, + 0x15, 0x0f, 0x16, 0x0f, 0xb1, 0x0f, 0xae, 0x0f, 0xf9, 0x0f, 0xfa, 0x0f, + 0xf5, 0x0f, 0xf5, 0x0f, 0xa3, 0x0f, 0xa0, 0x0f, 0x09, 0x0f, 0x0a, 0x0f, + 0x2b, 0x0e, 0x29, 0x0e, 0x10, 0x0d, 0x11, 0x0d, 0xc1, 0x0b, 0xc1, 0x0b, + 0x46, 0x0a, 0x45, 0x0a, 0xa6, 0x08, 0xa7, 0x08, 0xeb, 0x06, 0xea, 0x06, + 0x20, 0x05, 0x1f, 0x05, 0x50, 0x03, 0x50, 0x03, 0x83, 0x01, 0x81, 0x01, + 0xc4, 0xff, 0xc4, 0xff, 0x1d, 0xfe, 0x1b, 0xfe, 0x93, 0xfc, 0x93, 0xfc, + 0x39, 0xfb, 0x37, 0xfb, 0x0e, 0xfa, 0x0d, 0xfa, 0x1f, 0xf9, 0x1f, 0xf9, + 0x6f, 0xf8, 0x6f, 0xf8, 0x05, 0xf8, 0x03, 0xf8, 0xe1, 0xf7, 0xe1, 0xf7, + 0x08, 0xf8, 0x05, 0xf8, 0x72, 0xf8, 0x72, 0xf8, 0x27, 0xf9, 0x26, 0xf9, + 0x1a, 0xfa, 0x1b, 0xfa, 0x53, 0xfb, 0x52, 0xfb, 0xbb, 0xfc, 0xbc, 0xfc, + 0x5d, 0xfe, 0x5a, 0xfe, 0x25, 0x00, 0x27, 0x00, 0x10, 0x02, 0x0e, 0x02, + 0x17, 0x04, 0x17, 0x04, 0x2c, 0x06, 0x2b, 0x06, 0x50, 0x08, 0x4e, 0x08, + 0x6c, 0x0a, 0x6b, 0x0a, 0x85, 0x0c, 0x83, 0x0c, 0x89, 0x0e, 0x8a, 0x0e, + 0x76, 0x10, 0x75, 0x10, 0x3d, 0x12, 0x3d, 0x12, 0xe1, 0x13, 0xdf, 0x13, + 0x4f, 0x15, 0x4f, 0x15, 0x8a, 0x16, 0x88, 0x16, 0x88, 0x17, 0x88, 0x17, + 0x47, 0x18, 0x46, 0x18, 0xc6, 0x18, 0xc6, 0x18, 0xff, 0x18, 0xfd, 0x18, + 0xf1, 0x18, 0xf1, 0x18, 0xa4, 0x18, 0xa3, 0x18, 0x0e, 0x18, 0x0e, 0x18, + 0x41, 0x17, 0x40, 0x17, 0x36, 0x16, 0x36, 0x16, 0xf6, 0x14, 0xf6, 0x14, + 0x8a, 0x13, 0x89, 0x13, 0xf7, 0x11, 0xf5, 0x11, 0x43, 0x10, 0x43, 0x10, + 0x7a, 0x0e, 0x79, 0x0e, 0xa4, 0x0c, 0xa2, 0x0c, 0xc6, 0x0a, 0xc4, 0x0a, + 0xea, 0x08, 0xea, 0x08, 0x1e, 0x07, 0x1a, 0x07, 0x61, 0x05, 0x61, 0x05, + 0xc7, 0x03, 0xc4, 0x03, 0x45, 0x02, 0x44, 0x02, 0xf2, 0x00, 0xf2, 0x00, + 0xcc, 0xff, 0xca, 0xff, 0xd4, 0xfe, 0xd3, 0xfe, 0x14, 0xfe, 0x14, 0xfe, + 0x8a, 0xfd, 0x88, 0xfd, 0x36, 0xfd, 0x35, 0xfd, 0x1e, 0xfd, 0x1d, 0xfd, + 0x34, 0xfd, 0x31, 0xfd, 0x84, 0xfd, 0x85, 0xfd, 0x02, 0xfe, 0xff, 0xfd, + 0xac, 0xfe, 0xa8, 0xfe, 0x7d, 0xff, 0x7c, 0xff, 0x6e, 0x00, 0x6b, 0x00, + 0x7c, 0x01, 0x7c, 0x01, 0xa1, 0x02, 0x9e, 0x02, 0xcf, 0x03, 0xce, 0x03, + 0x0a, 0x05, 0x07, 0x05, 0x3f, 0x06, 0x3d, 0x06, 0x71, 0x07, 0x6f, 0x07, + 0x97, 0x08, 0x95, 0x08, 0xa0, 0x09, 0x9e, 0x09, 0x96, 0x0a, 0x96, 0x0a, + 0x63, 0x0b, 0x60, 0x0b, 0x0e, 0x0c, 0x0d, 0x0c, 0x8b, 0x0c, 0x88, 0x0c, + 0xd7, 0x0c, 0xd4, 0x0c, 0xf2, 0x0c, 0xf2, 0x0c, 0xd6, 0x0c, 0xd3, 0x0c, + 0x86, 0x0c, 0x83, 0x0c, 0xf9, 0x0b, 0xf9, 0x0b, 0x3f, 0x0b, 0x3c, 0x0b, + 0x4e, 0x0a, 0x4d, 0x0a, 0x2b, 0x09, 0x28, 0x09, 0xe2, 0x07, 0xdf, 0x07, + 0x6e, 0x06, 0x6d, 0x06, 0xdc, 0x04, 0xda, 0x04, 0x32, 0x03, 0x2f, 0x03, + 0x70, 0x01, 0x6e, 0x01, 0xa3, 0xff, 0xa1, 0xff, 0xd1, 0xfd, 0xd0, 0xfd, + 0x00, 0xfc, 0xfd, 0xfb, 0x37, 0xfa, 0x34, 0xfa, 0x7b, 0xf8, 0x7a, 0xf8, + 0xd5, 0xf6, 0xd2, 0xf6, 0x4b, 0xf5, 0x4a, 0xf5, 0xde, 0xf3, 0xdd, 0xf3, + 0x9b, 0xf2, 0x9a, 0xf2, 0x81, 0xf1, 0x7c, 0xf1, 0x8f, 0xf0, 0x8f, 0xf0, + 0xd2, 0xef, 0xce, 0xef, 0x41, 0xef, 0x3f, 0xef, 0xe5, 0xee, 0xe5, 0xee, + 0xbc, 0xee, 0xb8, 0xee, 0xc0, 0xee, 0xc1, 0xee, 0xfa, 0xee, 0xf7, 0xee, + 0x59, 0xef, 0x5a, 0xef, 0xe8, 0xef, 0xe6, 0xef, 0x98, 0xf0, 0x96, 0xf0, + 0x69, 0xf1, 0x68, 0xf1, 0x55, 0xf2, 0x54, 0xf2, 0x54, 0xf3, 0x53, 0xf3, + 0x63, 0xf4, 0x62, 0xf4, 0x7b, 0xf5, 0x79, 0xf5, 0x95, 0xf6, 0x94, 0xf6, + 0xaa, 0xf7, 0xaa, 0xf7, 0xb7, 0xf8, 0xb6, 0xf8, 0xb4, 0xf9, 0xb3, 0xf9, + 0x9c, 0xfa, 0x9b, 0xfa, 0x69, 0xfb, 0x67, 0xfb, 0x17, 0xfc, 0x17, 0xfc, + 0xa7, 0xfc, 0xa5, 0xfc, 0x0f, 0xfd, 0x0e, 0xfd, 0x53, 0xfd, 0x53, 0xfd, + 0x70, 0xfd, 0x6d, 0xfd, 0x64, 0xfd, 0x63, 0xfd, 0x2f, 0xfd, 0x2e, 0xfd, + 0xd5, 0xfc, 0xd3, 0xfc, 0x5b, 0xfc, 0x5a, 0xfc, 0xb9, 0xfb, 0xb8, 0xfb, + 0x02, 0xfb, 0x00, 0xfb, 0x27, 0xfa, 0x26, 0xfa, 0x3f, 0xf9, 0x3e, 0xf9, + 0x42, 0xf8, 0x3f, 0xf8, 0x39, 0xf7, 0x3a, 0xf7, 0x2e, 0xf6, 0x2b, 0xf6, + 0x1b, 0xf5, 0x1b, 0xf5, 0x11, 0xf4, 0x11, 0xf4, 0x0e, 0xf3, 0x0b, 0xf3, + 0x19, 0xf2, 0x18, 0xf2, 0x3c, 0xf1, 0x38, 0xf1, 0x6f, 0xf0, 0x6d, 0xf0, + 0xc2, 0xef, 0xbf, 0xef, 0x34, 0xef, 0x33, 0xef, 0xcc, 0xee, 0xc9, 0xee, + 0x86, 0xee, 0x85, 0xee, 0x6c, 0xee, 0x68, 0xee, 0x74, 0xee, 0x74, 0xee, + 0xad, 0xee, 0xaa, 0xee, 0x0b, 0xef, 0x09, 0xef, 0x93, 0xef, 0x92, 0xef, + 0x42, 0xf0, 0x40, 0xf0, 0x12, 0xf1, 0x11, 0xf1, 0x08, 0xf2, 0x06, 0xf2, + 0x19, 0xf3, 0x15, 0xf3, 0x43, 0xf4, 0x42, 0xf4, 0x80, 0xf5, 0x7e, 0xf5, + 0xd3, 0xf6, 0xcf, 0xf6, 0x29, 0xf8, 0x2a, 0xf8, 0x89, 0xf9, 0x85, 0xf9, + 0xe9, 0xfa, 0xe8, 0xfa, 0x44, 0xfc, 0x42, 0xfc, 0x96, 0xfd, 0x93, 0xfd, + 0xd5, 0xfe, 0xd4, 0xfe, 0x05, 0x00, 0x04, 0x00, 0x1e, 0x01, 0x1b, 0x01, + 0x19, 0x02, 0x18, 0x02, 0xfc, 0x02, 0xf9, 0x02, 0xbc, 0x03, 0xb8, 0x03, + 0x5b, 0x04, 0x5a, 0x04, 0xd8, 0x04, 0xd5, 0x04, 0x32, 0x05, 0x2f, 0x05, + 0x6b, 0x05, 0x69, 0x05, 0x7f, 0x05, 0x7b, 0x05, 0x77, 0x05, 0x76, 0x05, + 0x50, 0x05, 0x4b, 0x05, 0x0d, 0x05, 0x0c, 0x05, 0xb3, 0x04, 0xb0, 0x04, + 0x44, 0x04, 0x41, 0x04, 0xc4, 0x03, 0xc4, 0x03, 0x3a, 0x03, 0x37, 0x03, + 0xa7, 0x02, 0xa5, 0x02, 0x11, 0x02, 0x0f, 0x02, 0x7c, 0x01, 0x79, 0x01, + 0xed, 0x00, 0xec, 0x00, 0x67, 0x00, 0x64, 0x00, 0xef, 0xff, 0xed, 0xff, + 0x8a, 0xff, 0x89, 0xff, 0x39, 0xff, 0x36, 0xff, 0x03, 0xff, 0x02, 0xff, + 0xe8, 0xfe, 0xe5, 0xfe, 0xe7, 0xfe, 0xe6, 0xfe, 0x09, 0xff, 0x07, 0xff, + 0x44, 0xff, 0x43, 0xff, 0xa5, 0xff, 0xa3, 0xff, 0x20, 0x00, 0x1f, 0x00, + 0xb6, 0x00, 0xb4, 0x00, 0x6f, 0x01, 0x6e, 0x01, 0x37, 0x02, 0x36, 0x02, + 0x1c, 0x03, 0x1b, 0x03, 0x13, 0x04, 0x12, 0x04, 0x17, 0x05, 0x15, 0x05, + 0x2a, 0x06, 0x28, 0x06, 0x40, 0x07, 0x41, 0x07, 0x5d, 0x08, 0x5c, 0x08, + 0x78, 0x09, 0x77, 0x09, 0x8f, 0x0a, 0x8d, 0x0a, 0x9e, 0x0b, 0x9b, 0x0b, + 0x9d, 0x0c, 0x9e, 0x0c, 0x8f, 0x0d, 0x8d, 0x0d, 0x69, 0x0e, 0x69, 0x0e, + 0x30, 0x0f, 0x2f, 0x0f, 0xd9, 0x0f, 0xd8, 0x0f, 0x69, 0x10, 0x68, 0x10, + 0xd8, 0x10, 0xd7, 0x10, 0x2a, 0x11, 0x28, 0x11, 0x5b, 0x11, 0x5c, 0x11, + 0x6a, 0x11, 0x67, 0x11, 0x5c, 0x11, 0x5c, 0x11, 0x2b, 0x11, 0x29, 0x11, + 0xdf, 0x10, 0xdd, 0x10, 0x76, 0x10, 0x75, 0x10, 0xf3, 0x0f, 0xef, 0x0f, + 0x59, 0x0f, 0x5b, 0x0f, 0xad, 0x0e, 0xa7, 0x0e, 0xf0, 0x0d, 0xf0, 0x0d, + 0x25, 0x0d, 0x23, 0x0d, 0x54, 0x0c, 0x51, 0x0c, 0x79, 0x0b, 0x79, 0x0b, + 0xa0, 0x0a, 0x9e, 0x0a, 0xca, 0x09, 0xc9, 0x09, 0xfb, 0x08, 0xfa, 0x08, + 0x33, 0x08, 0x32, 0x08, 0x7a, 0x07, 0x78, 0x07, 0xd0, 0x06, 0xcf, 0x06, + 0x37, 0x06, 0x35, 0x06, 0xb4, 0x05, 0xb1, 0x05, 0x45, 0x05, 0x44, 0x05, + 0xee, 0x04, 0xec, 0x04, 0xac, 0x04, 0xab, 0x04, 0x85, 0x04, 0x81, 0x04, + 0x70, 0x04, 0x6f, 0x04, 0x73, 0x04, 0x71, 0x04, 0x8f, 0x04, 0x8b, 0x04, + 0xb9, 0x04, 0xb5, 0x04, 0xf6, 0x04, 0xf4, 0x04, 0x40, 0x05, 0x3e, 0x05, + 0x95, 0x05, 0x95, 0x05, 0xf8, 0x05, 0xf4, 0x05, 0x5a, 0x06, 0x59, 0x06, + 0xc4, 0x06, 0xc1, 0x06, 0x27, 0x07, 0x27, 0x07, 0x8b, 0x07, 0x89, 0x07, + 0xe6, 0x07, 0xe4, 0x07, 0x37, 0x08, 0x35, 0x08, 0x7a, 0x08, 0x78, 0x08, + 0xab, 0x08, 0xa8, 0x08, 0xcb, 0x08, 0xc9, 0x08, 0xd4, 0x08, 0xd2, 0x08, + 0xca, 0x08, 0xc5, 0x08, 0xa3, 0x08, 0xa3, 0x08, 0x67, 0x08, 0x62, 0x08, + 0x0f, 0x08, 0x0d, 0x08, 0x9f, 0x07, 0x9c, 0x07, 0x16, 0x07, 0x15, 0x07, + 0x75, 0x06, 0x72, 0x06, 0xbe, 0x05, 0xbb, 0x05, 0xf1, 0x04, 0xee, 0x04, + 0x12, 0x04, 0x0f, 0x04, 0x22, 0x03, 0x1f, 0x03, 0x26, 0x02, 0x24, 0x02, + 0x1f, 0x01, 0x1e, 0x01, 0x12, 0x00, 0x0f, 0x00, 0x03, 0xff, 0x00, 0xff, + 0xf2, 0xfd, 0xef, 0xfd, 0xe4, 0xfc, 0xe3, 0xfc, 0xdf, 0xfb, 0xdc, 0xfb, + 0xe2, 0xfa, 0xe0, 0xfa, 0xf2, 0xf9, 0xf1, 0xf9, 0x14, 0xf9, 0x10, 0xf9, + 0x42, 0xf8, 0x3f, 0xf8, 0x86, 0xf7, 0x84, 0xf7, 0xe2, 0xf6, 0xdf, 0xf6, + 0x50, 0xf6, 0x4f, 0xf6, 0xdb, 0xf5, 0xd9, 0xf5, 0x7a, 0xf5, 0x7a, 0xf5, + 0x32, 0xf5, 0x30, 0xf5, 0x07, 0xf5, 0x04, 0xf5, 0xec, 0xf4, 0xeb, 0xf4, + 0xed, 0xf4, 0xe9, 0xf4, 0x00, 0xf5, 0xfe, 0xf4, 0x26, 0xf5, 0x23, 0xf5, + 0x5b, 0xf5, 0x5a, 0xf5, 0x9f, 0xf5, 0x9c, 0xf5, 0xf0, 0xf5, 0xee, 0xf5, + 0x48, 0xf6, 0x47, 0xf6, 0xa7, 0xf6, 0xa5, 0xf6, 0x08, 0xf7, 0x06, 0xf7, + 0x69, 0xf7, 0x67, 0xf7, 0xc9, 0xf7, 0xc7, 0xf7, 0x22, 0xf8, 0x1f, 0xf8, + 0x73, 0xf8, 0x71, 0xf8, 0xba, 0xf8, 0xb8, 0xf8, 0xf4, 0xf8, 0xf1, 0xf8, + 0x22, 0xf9, 0x20, 0xf9, 0x3e, 0xf9, 0x3c, 0xf9, 0x4a, 0xf9, 0x48, 0xf9, + 0x46, 0xf9, 0x45, 0xf9, 0x31, 0xf9, 0x2f, 0xf9, 0x09, 0xf9, 0x08, 0xf9, + 0xd3, 0xf8, 0xd0, 0xf8, 0x89, 0xf8, 0x88, 0xf8, 0x33, 0xf8, 0x32, 0xf8, + 0xd5, 0xf7, 0xd3, 0xf7, 0x63, 0xf7, 0x63, 0xf7, 0xf0, 0xf6, 0xec, 0xf6, + 0x6d, 0xf6, 0x6d, 0xf6, 0xec, 0xf5, 0xe9, 0xf5, 0x68, 0xf5, 0x68, 0xf5, + 0xe3, 0xf4, 0xe0, 0xf4, 0x64, 0xf4, 0x62, 0xf4, 0xe7, 0xf3, 0xe5, 0xf3, + 0x73, 0xf3, 0x72, 0xf3, 0x0c, 0xf3, 0x0b, 0xf3, 0xb2, 0xf2, 0xae, 0xf2, + 0x65, 0xf2, 0x63, 0xf2, 0x29, 0xf2, 0x27, 0xf2, 0x02, 0xf2, 0xfe, 0xf1, + 0xed, 0xf1, 0xea, 0xf1, 0xeb, 0xf1, 0xe9, 0xf1, 0x03, 0xf2, 0x00, 0xf2, + 0x2b, 0xf2, 0x29, 0xf2, 0x6e, 0xf2, 0x6b, 0xf2, 0xc3, 0xf2, 0xc0, 0xf2, + 0x2b, 0xf3, 0x29, 0xf3, 0xa9, 0xf3, 0xa7, 0xf3, 0x36, 0xf4, 0x34, 0xf4, + 0xd6, 0xf4, 0xd4, 0xf4, 0x81, 0xf5, 0x7e, 0xf5, 0x3a, 0xf6, 0x37, 0xf6, + 0xfa, 0xf6, 0xf9, 0xf6, 0xc4, 0xf7, 0xc1, 0xf7, 0x91, 0xf8, 0x8f, 0xf8, + 0x5f, 0xf9, 0x5c, 0xf9, 0x2d, 0xfa, 0x2d, 0xfa, 0xf7, 0xfa, 0xf2, 0xfa, + 0xbd, 0xfb, 0xbe, 0xfb, 0x7a, 0xfc, 0x75, 0xfc, 0x2f, 0xfd, 0x2d, 0xfd, + 0xd4, 0xfd, 0xd2, 0xfd, 0x6e, 0xfe, 0x6b, 0xfe, 0xfb, 0xfe, 0xf8, 0xfe, + 0x75, 0xff, 0x73, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0x3d, 0x00, 0x3a, 0x00, + 0x84, 0x00, 0x82, 0x00, 0xc4, 0x00, 0xbf, 0x00, 0xea, 0x00, 0xe9, 0x00, + 0x09, 0x01, 0x05, 0x01, 0x16, 0x01, 0x14, 0x01, 0x1b, 0x01, 0x1a, 0x01, + 0x14, 0x01, 0x10, 0x01, 0x03, 0x01, 0x02, 0x01, 0xee, 0x00, 0xec, 0x00, + 0xd4, 0x00, 0xd2, 0x00, 0xba, 0x00, 0xb8, 0x00, 0x9d, 0x00, 0x9c, 0x00, + 0x87, 0x00, 0x83, 0x00, 0x71, 0x00, 0x70, 0x00, 0x64, 0x00, 0x62, 0x00, + 0x60, 0x00, 0x5c, 0x00, 0x66, 0x00, 0x67, 0x00, 0x7a, 0x00, 0x76, 0x00, + 0x98, 0x00, 0x96, 0x00, 0xc8, 0x00, 0xc6, 0x00, 0x05, 0x01, 0x03, 0x01, + 0x51, 0x01, 0x4f, 0x01, 0xaf, 0x01, 0xaf, 0x01, 0x19, 0x02, 0x15, 0x02, + 0x92, 0x02, 0x91, 0x02, 0x1d, 0x03, 0x18, 0x03, 0xad, 0x03, 0xac, 0x03, + 0x4f, 0x04, 0x4b, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xa7, 0x05, 0xa4, 0x05, + 0x5b, 0x06, 0x5a, 0x06, 0x16, 0x07, 0x13, 0x07, 0xd0, 0x07, 0xce, 0x07, + 0x8a, 0x08, 0x85, 0x08, 0x3e, 0x09, 0x3f, 0x09, 0xf1, 0x09, 0xec, 0x09, + 0x9a, 0x0a, 0x98, 0x0a, 0x3a, 0x0b, 0x38, 0x0b, 0xce, 0x0b, 0xcb, 0x0b, + 0x55, 0x0c, 0x53, 0x0c, 0xce, 0x0c, 0xcd, 0x0c, 0x37, 0x0d, 0x34, 0x0d, + 0x8f, 0x0d, 0x8d, 0x0d, 0xd6, 0x0d, 0xd4, 0x0d, 0x08, 0x0e, 0x05, 0x0e, + 0x2c, 0x0e, 0x29, 0x0e, 0x38, 0x0e, 0x36, 0x0e, 0x36, 0x0e, 0x33, 0x0e, + 0x21, 0x0e, 0x21, 0x0e, 0xfc, 0x0d, 0xf9, 0x0d, 0xc9, 0x0d, 0xc8, 0x0d, + 0x86, 0x0d, 0x85, 0x0d, 0x39, 0x0d, 0x36, 0x0d, 0xe0, 0x0c, 0xdf, 0x0c, + 0x7d, 0x0c, 0x7a, 0x0c, 0x17, 0x0c, 0x15, 0x0c, 0xaa, 0x0b, 0xa7, 0x0b, + 0x3b, 0x0b, 0x3a, 0x0b, 0xcb, 0x0a, 0xc8, 0x0a, 0x5c, 0x0a, 0x59, 0x0a, + 0xf0, 0x09, 0xec, 0x09, 0x87, 0x09, 0x86, 0x09, 0x28, 0x09, 0x26, 0x09, + 0xcf, 0x08, 0xcc, 0x08, 0x7f, 0x08, 0x7e, 0x08, 0x38, 0x08, 0x36, 0x08, + 0xfd, 0x07, 0xfb, 0x07, 0xcb, 0x07, 0xc9, 0x07, 0xa4, 0x07, 0xa2, 0x07, + 0x88, 0x07, 0x86, 0x07, 0x78, 0x07, 0x77, 0x07, 0x71, 0x07, 0x6d, 0x07, + 0x71, 0x07, 0x72, 0x07, 0x7b, 0x07, 0x78, 0x07, 0x8d, 0x07, 0x8a, 0x07, + 0x9f, 0x07, 0x9f, 0x07, 0xbb, 0x07, 0xb7, 0x07, 0xd6, 0x07, 0xd5, 0x07, + 0xef, 0x07, 0xee, 0x07, 0x0d, 0x08, 0x0a, 0x08, 0x21, 0x08, 0x20, 0x08, + 0x37, 0x08, 0x33, 0x08, 0x3e, 0x08, 0x3e, 0x08, 0x43, 0x08, 0x3f, 0x08, + 0x3b, 0x08, 0x3a, 0x08, 0x29, 0x08, 0x27, 0x08, 0x0c, 0x08, 0x0b, 0x08, + 0xdf, 0x07, 0xde, 0x07, 0xa5, 0x07, 0xa3, 0x07, 0x5d, 0x07, 0x5d, 0x07, + 0x06, 0x07, 0x05, 0x07, 0xa2, 0x06, 0xa1, 0x06, 0x2d, 0x06, 0x2c, 0x06, + 0xaa, 0x05, 0xa9, 0x05, 0x1d, 0x05, 0x1b, 0x05, 0x7e, 0x04, 0x7f, 0x04, + 0xdc, 0x03, 0xda, 0x03, 0x29, 0x03, 0x29, 0x03, 0x73, 0x02, 0x70, 0x02, + 0xb4, 0x01, 0xb4, 0x01, 0xf1, 0x00, 0xee, 0x00, 0x2c, 0x00, 0x2c, 0x00, + 0x67, 0xff, 0x64, 0xff, 0xa1, 0xfe, 0xa1, 0xfe, 0xe0, 0xfd, 0xe0, 0xfd, + 0x24, 0xfd, 0x22, 0xfd, 0x70, 0xfc, 0x6e, 0xfc, 0xc1, 0xfb, 0xc1, 0xfb, + 0x1f, 0xfb, 0x1d, 0xfb, 0x89, 0xfa, 0x87, 0xfa, 0xfb, 0xf9, 0xf9, 0xf9, + 0x7f, 0xf9, 0x7d, 0xf9, 0x0d, 0xf9, 0x0a, 0xf9, 0xab, 0xf8, 0xa9, 0xf8, + 0x57, 0xf8, 0x54, 0xf8, 0x0f, 0xf8, 0x0e, 0xf8, 0xda, 0xf7, 0xd6, 0xf7, + 0xac, 0xf7, 0xaa, 0xf7, 0x90, 0xf7, 0x90, 0xf7, 0x7d, 0xf7, 0x79, 0xf7, + 0x75, 0xf7, 0x74, 0xf7, 0x77, 0xf7, 0x74, 0xf7, 0x7f, 0xf7, 0x7c, 0xf7, + 0x8f, 0xf7, 0x8d, 0xf7, 0xa0, 0xf7, 0x9e, 0xf7, 0xbb, 0xf7, 0xb9, 0xf7, + 0xd0, 0xf7, 0xcd, 0xf7, 0xe8, 0xf7, 0xe6, 0xf7, 0xff, 0xf7, 0xfd, 0xf7, + 0x0f, 0xf8, 0x0b, 0xf8, 0x1f, 0xf8, 0x1f, 0xf8, 0x24, 0xf8, 0x21, 0xf8, + 0x28, 0xf8, 0x26, 0xf8, 0x1e, 0xf8, 0x1e, 0xf8, 0x0f, 0xf8, 0x0c, 0xf8, + 0xf8, 0xf7, 0xf7, 0xf7, 0xd5, 0xf7, 0xd2, 0xf7, 0xac, 0xf7, 0xab, 0xf7, + 0x78, 0xf7, 0x77, 0xf7, 0x3d, 0xf7, 0x3c, 0xf7, 0xfb, 0xf6, 0xf9, 0xf6, + 0xaf, 0xf6, 0xad, 0xf6, 0x62, 0xf6, 0x61, 0xf6, 0x0d, 0xf6, 0x0b, 0xf6, + 0xb6, 0xf5, 0xb5, 0xf5, 0x5e, 0xf5, 0x5c, 0xf5, 0x04, 0xf5, 0x03, 0xf5, + 0xad, 0xf4, 0xab, 0xf4, 0x56, 0xf4, 0x56, 0xf4, 0x08, 0xf4, 0x06, 0xf4, + 0xbb, 0xf3, 0xbb, 0xf3, 0x79, 0xf3, 0x78, 0xf3, 0x40, 0xf3, 0x3f, 0xf3, + 0x0e, 0xf3, 0x0f, 0xf3, 0xec, 0xf2, 0xea, 0xf2, 0xd3, 0xf2, 0xd1, 0xf2, + 0xc8, 0xf2, 0xc7, 0xf2, 0xc9, 0xf2, 0xca, 0xf2, 0xdd, 0xf2, 0xda, 0xf2, + 0xfa, 0xf2, 0xfa, 0xf2, 0x29, 0xf3, 0x27, 0xf3, 0x64, 0xf3, 0x63, 0xf3, + 0xae, 0xf3, 0xad, 0xf3, 0x07, 0xf4, 0x05, 0xf4, 0x67, 0xf4, 0x67, 0xf4, + 0xd9, 0xf4, 0xd7, 0xf4, 0x4f, 0xf5, 0x4c, 0xf5, 0xcf, 0xf5, 0xce, 0xf5, + 0x59, 0xf6, 0x57, 0xf6, 0xe5, 0xf6, 0xe4, 0xf6, 0x78, 0xf7, 0x77, 0xf7, + 0x0e, 0xf8, 0x0c, 0xf8, 0xa1, 0xf8, 0xa1, 0xf8, 0x37, 0xf9, 0x36, 0xf9, + 0xcc, 0xf9, 0xc9, 0xf9, 0x57, 0xfa, 0x57, 0xfa, 0xe4, 0xfa, 0xe2, 0xfa, + 0x65, 0xfb, 0x64, 0xfb, 0xe4, 0xfb, 0xe3, 0xfb, 0x57, 0xfc, 0x55, 0xfc, + 0xc1, 0xfc, 0xc1, 0xfc, 0x27, 0xfd, 0x24, 0xfd, 0x7b, 0xfd, 0x7a, 0xfd, + 0xcd, 0xfd, 0xcb, 0xfd, 0x10, 0xfe, 0x0f, 0xfe, 0x4e, 0xfe, 0x4c, 0xfe, + 0x80, 0xfe, 0x7e, 0xfe, 0xac, 0xfe, 0xab, 0xfe, 0xce, 0xfe, 0xcc, 0xfe, + 0xed, 0xfe, 0xec, 0xfe, 0x04, 0xff, 0x01, 0xff, 0x17, 0xff, 0x1a, 0xff, + 0x2d, 0xff, 0x29, 0xff, 0x3b, 0xff, 0x3b, 0xff, 0x4f, 0xff, 0x4e, 0xff, + 0x60, 0xff, 0x5d, 0xff, 0x77, 0xff, 0x77, 0xff, 0x90, 0xff, 0x8e, 0xff, + 0xb0, 0xff, 0xaf, 0xff, 0xd7, 0xff, 0xd5, 0xff, 0x04, 0x00, 0x03, 0x00, + 0x3d, 0x00, 0x39, 0x00, 0x7d, 0x00, 0x7c, 0x00, 0xc8, 0x00, 0xc6, 0x00, + 0x1d, 0x01, 0x1a, 0x01, 0x78, 0x01, 0x79, 0x01, 0xe3, 0x01, 0xe1, 0x01, + 0x53, 0x02, 0x53, 0x02, 0xcf, 0x02, 0xcf, 0x02, 0x53, 0x03, 0x51, 0x03, + 0xdd, 0x03, 0xdd, 0x03, 0x6f, 0x04, 0x6f, 0x04, 0x05, 0x05, 0x04, 0x05, + 0x9f, 0x05, 0x9e, 0x05, 0x3c, 0x06, 0x3b, 0x06, 0xd7, 0x06, 0xd7, 0x06, + 0x77, 0x07, 0x75, 0x07, 0x0f, 0x08, 0x0f, 0x08, 0xa6, 0x08, 0xa6, 0x08, + 0x37, 0x09, 0x36, 0x09, 0xc5, 0x09, 0xc2, 0x09, 0x43, 0x0a, 0x44, 0x0a, + 0xc0, 0x0a, 0xbe, 0x0a, 0x2a, 0x0b, 0x2b, 0x0b, 0x93, 0x0b, 0x91, 0x0b, + 0xe7, 0x0b, 0xe5, 0x0b, 0x30, 0x0c, 0x31, 0x0c, 0x72, 0x0c, 0x6f, 0x0c, + 0x9d, 0x0c, 0x9d, 0x0c, 0xc3, 0x0c, 0xc2, 0x0c, 0xd7, 0x0c, 0xd6, 0x0c, + 0xdd, 0x0c, 0xdd, 0x0c, 0xdc, 0x0c, 0xdb, 0x0c, 0xcb, 0x0c, 0xc9, 0x0c, + 0xb1, 0x0c, 0xb1, 0x0c, 0x8b, 0x0c, 0x8a, 0x0c, 0x5f, 0x0c, 0x5e, 0x0c, + 0x2b, 0x0c, 0x2a, 0x0c, 0xf0, 0x0b, 0xef, 0x0b, 0xb2, 0x0b, 0xb0, 0x0b, + 0x6e, 0x0b, 0x6d, 0x0b, 0x29, 0x0b, 0x27, 0x0b, 0xe5, 0x0a, 0xe4, 0x0a, + 0x9f, 0x0a, 0x9e, 0x0a, 0x5e, 0x0a, 0x5d, 0x0a, 0x1f, 0x0a, 0x1d, 0x0a, + 0xe2, 0x09, 0xe1, 0x09, 0xaf, 0x09, 0xab, 0x09, 0x7b, 0x09, 0x7a, 0x09, + 0x51, 0x09, 0x51, 0x09, 0x2f, 0x09, 0x2c, 0x09, 0x10, 0x09, 0x10, 0x09, + 0xfb, 0x08, 0xf9, 0x08, 0xe6, 0x08, 0xe5, 0x08, 0xdf, 0x08, 0xdf, 0x08, + 0xd9, 0x08, 0xd8, 0x08, 0xda, 0x08, 0xd8, 0x08, 0xde, 0x08, 0xdd, 0x08, + 0xe4, 0x08, 0xe3, 0x08, 0xef, 0x08, 0xef, 0x08, 0xf8, 0x08, 0xf6, 0x08, + 0x01, 0x09, 0x01, 0x09, 0x09, 0x09, 0x0a, 0x09, 0x0e, 0x09, 0x0c, 0x09, + 0x0f, 0x09, 0x0f, 0x09, 0x08, 0x09, 0x08, 0x09, 0x00, 0x09, 0xfe, 0x08, + 0xea, 0x08, 0xec, 0x08, 0xd3, 0x08, 0xce, 0x08, 0xaa, 0x08, 0xab, 0x08, + 0x7b, 0x08, 0x79, 0x08, 0x41, 0x08, 0x40, 0x08, 0xf9, 0x07, 0xf9, 0x07, + 0xa9, 0x07, 0xa9, 0x07, 0x4b, 0x07, 0x48, 0x07, 0xe5, 0x06, 0xe4, 0x06, + 0x71, 0x06, 0x6f, 0x06, 0xf4, 0x05, 0xf3, 0x05, 0x6a, 0x05, 0x6a, 0x05, + 0xdc, 0x04, 0xda, 0x04, 0x43, 0x04, 0x44, 0x04, 0xa3, 0x03, 0xa1, 0x03, + 0xfe, 0x02, 0xfe, 0x02, 0x53, 0x02, 0x53, 0x02, 0xab, 0x01, 0xa8, 0x01, + 0xfa, 0x00, 0xfb, 0x00, 0x51, 0x00, 0x4e, 0x00, 0xa4, 0xff, 0xa5, 0xff, + 0xfd, 0xfe, 0xfb, 0xfe, 0x5c, 0xfe, 0x5b, 0xfe, 0xbc, 0xfd, 0xbc, 0xfd, + 0x28, 0xfd, 0x28, 0xfd, 0x9a, 0xfc, 0x97, 0xfc, 0x14, 0xfc, 0x15, 0xfc, + 0x9b, 0xfb, 0x97, 0xfb, 0x28, 0xfb, 0x28, 0xfb, 0xc3, 0xfa, 0xc2, 0xfa, + 0x67, 0xfa, 0x65, 0xfa, 0x17, 0xfa, 0x18, 0xfa, 0xd1, 0xf9, 0xcf, 0xf9, + 0x96, 0xf9, 0x96, 0xf9, 0x65, 0xf9, 0x65, 0xf9, 0x3c, 0xf9, 0x3c, 0xf9, + 0x1f, 0xf9, 0x1d, 0xf9, 0x06, 0xf9, 0x05, 0xf9, 0xf4, 0xf8, 0xf4, 0xf8, + 0xea, 0xf8, 0xe8, 0xf8, 0xe1, 0xf8, 0xdf, 0xf8, 0xdd, 0xf8, 0xde, 0xf8, + 0xd9, 0xf8, 0xd9, 0xf8, 0xd8, 0xf8, 0xd6, 0xf8, 0xd3, 0xf8, 0xd0, 0xf8, + 0xcd, 0xf8, 0xcd, 0xf8, 0xc3, 0xf8, 0xc1, 0xf8, 0xb5, 0xf8, 0xb6, 0xf8, + 0xa4, 0xf8, 0xa2, 0xf8, 0x8d, 0xf8, 0x8c, 0xf8, 0x6e, 0xf8, 0x6c, 0xf8, + 0x4a, 0xf8, 0x48, 0xf8, 0x1e, 0xf8, 0x1e, 0xf8, 0xec, 0xf7, 0xeb, 0xf7, + 0xb5, 0xf7, 0xb4, 0xf7, 0x74, 0xf7, 0x73, 0xf7, 0x30, 0xf7, 0x2f, 0xf7, + 0xe6, 0xf6, 0xe6, 0xf6, 0x97, 0xf6, 0x95, 0xf6, 0x46, 0xf6, 0x47, 0xf6, + 0xf1, 0xf5, 0xef, 0xf5, 0x9b, 0xf5, 0x9c, 0xf5, 0x48, 0xf5, 0x46, 0xf5, + 0xf1, 0xf4, 0xf1, 0xf4, 0xa1, 0xf4, 0xa1, 0xf4, 0x55, 0xf4, 0x53, 0xf4, + 0x0a, 0xf4, 0x0b, 0xf4, 0xcc, 0xf3, 0xcb, 0xf3, 0x8f, 0xf3, 0x8d, 0xf3, + 0x5d, 0xf3, 0x5f, 0xf3, 0x36, 0xf3, 0x34, 0xf3, 0x18, 0xf3, 0x18, 0xf3, + 0x06, 0xf3, 0x07, 0xf3, 0x00, 0xf3, 0x00, 0xf3, 0x07, 0xf3, 0x05, 0xf3, + 0x18, 0xf3, 0x19, 0xf3, 0x38, 0xf3, 0x35, 0xf3, 0x62, 0xf3, 0x64, 0xf3, + 0x9a, 0xf3, 0x98, 0xf3, 0xde, 0xf3, 0xdc, 0xf3, 0x29, 0xf4, 0x2a, 0xf4, + 0x82, 0xf4, 0x81, 0xf4, 0xe4, 0xf4, 0xe4, 0xf4, 0x4e, 0xf5, 0x4d, 0xf5, + 0xbe, 0xf5, 0xbf, 0xf5, 0x35, 0xf6, 0x34, 0xf6, 0xaf, 0xf6, 0xb0, 0xf6, + 0x2d, 0xf7, 0x2c, 0xf7, 0xad, 0xf7, 0xad, 0xf7, 0x2b, 0xf8, 0x2d, 0xf8, + 0xad, 0xf8, 0xaa, 0xf8, 0x28, 0xf9, 0x28, 0xf9, 0xa1, 0xf9, 0xa0, 0xf9, + 0x18, 0xfa, 0x16, 0xfa, 0x86, 0xfa, 0x87, 0xfa, 0xf0, 0xfa, 0xef, 0xfa, + 0x51, 0xfb, 0x52, 0xfb, 0xaa, 0xfb, 0xab, 0xfb, 0x00, 0xfc, 0x00, 0xfc, + 0x4a, 0xfc, 0x4b, 0xfc, 0x8c, 0xfc, 0x8c, 0xfc, 0xcc, 0xfc, 0xcd, 0xfc, + 0x00, 0xfd, 0xff, 0xfc, 0x2f, 0xfd, 0x2f, 0xfd, 0x58, 0xfd, 0x57, 0xfd, + 0x7a, 0xfd, 0x7b, 0xfd, 0x99, 0xfd, 0x9a, 0xfd, 0xb7, 0xfd, 0xb4, 0xfd, + 0xcf, 0xfd, 0xd2, 0xfd, 0xea, 0xfd, 0xe7, 0xfd, 0x03, 0xfe, 0x04, 0xfe, + 0x1e, 0xfe, 0x1d, 0xfe, 0x3e, 0xfe, 0x3c, 0xfe, 0x5d, 0xfe, 0x5e, 0xfe, + 0x88, 0xfe, 0x85, 0xfe, 0xb1, 0xfe, 0xb2, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, + 0x22, 0xff, 0x21, 0xff, 0x66, 0xff, 0x69, 0xff, 0xb5, 0xff, 0xb3, 0xff, + 0x09, 0x00, 0x09, 0x00, 0x69, 0x00, 0x69, 0x00, 0xd2, 0x00, 0xd2, 0x00, + 0x44, 0x01, 0x43, 0x01, 0xc0, 0x01, 0xbf, 0x01, 0x3e, 0x02, 0x3e, 0x02, + 0xc9, 0x02, 0xc8, 0x02, 0x55, 0x03, 0x55, 0x03, 0xec, 0x03, 0xec, 0x03, + 0x83, 0x04, 0x83, 0x04, 0x1e, 0x05, 0x1c, 0x05, 0xb7, 0x05, 0xb8, 0x05, + 0x55, 0x06, 0x54, 0x06, 0xee, 0x06, 0xec, 0x06, 0x85, 0x07, 0x85, 0x07, + 0x15, 0x08, 0x15, 0x08, 0xa5, 0x08, 0xa3, 0x08, 0x28, 0x09, 0x28, 0x09, + 0xa7, 0x09, 0xa5, 0x09, 0x1a, 0x0a, 0x1b, 0x0a, 0x84, 0x0a, 0x84, 0x0a, + 0xe2, 0x0a, 0xe1, 0x0a, 0x36, 0x0b, 0x36, 0x0b, 0x7d, 0x0b, 0x7d, 0x0b, + 0xb9, 0x0b, 0xb9, 0x0b, 0xe6, 0x0b, 0xe6, 0x0b, 0x0b, 0x0c, 0x0a, 0x0c, + 0x1e, 0x0c, 0x1f, 0x0c, 0x29, 0x0c, 0x2b, 0x0c, 0x2c, 0x0c, 0x2a, 0x0c, + 0x1d, 0x0c, 0x20, 0x0c, 0x0e, 0x0c, 0x0c, 0x0c, 0xef, 0x0b, 0xf1, 0x0b, + 0xcd, 0x0b, 0xcc, 0x0b, 0xa4, 0x0b, 0xa4, 0x0b, 0x75, 0x0b, 0x74, 0x0b, + 0x43, 0x0b, 0x45, 0x0b, 0x11, 0x0b, 0x0f, 0x0b, 0xd9, 0x0a, 0xdb, 0x0a, + 0xa7, 0x0a, 0xa7, 0x0a, 0x74, 0x0a, 0x72, 0x0a, 0x43, 0x0a, 0x43, 0x0a, + 0x15, 0x0a, 0x15, 0x0a, 0xed, 0x09, 0xed, 0x09, 0xc9, 0x09, 0xc8, 0x09, + 0xaa, 0x09, 0xaa, 0x09, 0x91, 0x09, 0x91, 0x09, 0x7f, 0x09, 0x7d, 0x09, + 0x6e, 0x09, 0x70, 0x09, 0x6b, 0x09, 0x6a, 0x09, 0x65, 0x09, 0x66, 0x09, + 0x6b, 0x09, 0x68, 0x09, 0x71, 0x09, 0x71, 0x09, 0x7d, 0x09, 0x7c, 0x09, + 0x8b, 0x09, 0x8a, 0x09, 0x98, 0x09, 0x98, 0x09, 0xa9, 0x09, 0xa9, 0x09, + 0xb8, 0x09, 0xb8, 0x09, 0xc7, 0x09, 0xc5, 0x09, 0xd2, 0x09, 0xd1, 0x09, + 0xd6, 0x09, 0xd6, 0x09, 0xd9, 0x09, 0xd9, 0x09, 0xd4, 0x09, 0xd3, 0x09, + 0xc6, 0x09, 0xc5, 0x09, 0xb1, 0x09, 0xb0, 0x09, 0x91, 0x09, 0x91, 0x09, + 0x68, 0x09, 0x67, 0x09, 0x37, 0x09, 0x34, 0x09, 0xf5, 0x08, 0xf7, 0x08, + 0xac, 0x08, 0xa9, 0x08, 0x57, 0x08, 0x57, 0x08, 0xf4, 0x07, 0xf4, 0x07, + 0x8a, 0x07, 0x88, 0x07, 0x12, 0x07, 0x12, 0x07, 0x91, 0x06, 0x8f, 0x06, + 0x07, 0x06, 0x07, 0x06, 0x74, 0x05, 0x74, 0x05, 0xde, 0x04, 0xdc, 0x04, + 0x3b, 0x04, 0x3b, 0x04, 0x9a, 0x03, 0x99, 0x03, 0xf2, 0x02, 0xf3, 0x02, + 0x49, 0x02, 0x47, 0x02, 0xa1, 0x01, 0xa2, 0x01, 0xf8, 0x00, 0xf7, 0x00, + 0x53, 0x00, 0x53, 0x00, 0xb2, 0xff, 0xb1, 0xff, 0x16, 0xff, 0x15, 0xff, + 0x80, 0xfe, 0x7f, 0xfe, 0xf1, 0xfd, 0xf2, 0xfd, 0x6c, 0xfd, 0x6a, 0xfd, + 0xef, 0xfc, 0xf1, 0xfc, 0x7b, 0xfc, 0x7b, 0xfc, 0x13, 0xfc, 0x12, 0xfc, + 0xb5, 0xfb, 0xb6, 0xfb, 0x60, 0xfb, 0x5e, 0xfb, 0x16, 0xfb, 0x17, 0xfb, + 0xd6, 0xfa, 0xd7, 0xfa, 0xa3, 0xfa, 0xa0, 0xfa, 0x72, 0xfa, 0x75, 0xfa, + 0x4f, 0xfa, 0x4e, 0xfa, 0x31, 0xfa, 0x32, 0xfa, 0x19, 0xfa, 0x1a, 0xfa, + 0x07, 0xfa, 0x06, 0xfa, 0xf9, 0xf9, 0xfb, 0xf9, 0xec, 0xf9, 0xec, 0xf9, + 0xe3, 0xf9, 0xe3, 0xf9, 0xd6, 0xf9, 0xd5, 0xf9, 0xcb, 0xf9, 0xcc, 0xf9, + 0xc0, 0xf9, 0xc1, 0xf9, 0xab, 0xf9, 0xad, 0xf9, 0x9a, 0xf9, 0x99, 0xf9, + 0x7c, 0xf9, 0x7d, 0xf9, 0x5c, 0xf9, 0x5c, 0xf9, 0x36, 0xf9, 0x36, 0xf9, + 0x06, 0xf9, 0x07, 0xf9, 0xd6, 0xf8, 0xd5, 0xf8, 0x96, 0xf8, 0x97, 0xf8, + 0x54, 0xf8, 0x54, 0xf8, 0x0a, 0xf8, 0x09, 0xf8, 0xb9, 0xf7, 0xbb, 0xf7, + 0x66, 0xf7, 0x66, 0xf7, 0x0c, 0xf7, 0x0d, 0xf7, 0xb0, 0xf6, 0xae, 0xf6, + 0x4e, 0xf6, 0x50, 0xf6, 0xeb, 0xf5, 0xeb, 0xf5, 0x8b, 0xf5, 0x8b, 0xf5, + 0x28, 0xf5, 0x28, 0xf5, 0xca, 0xf4, 0xca, 0xf4, 0x6f, 0xf4, 0x70, 0xf4, + 0x18, 0xf4, 0x19, 0xf4, 0xcb, 0xf3, 0xca, 0xf3, 0x81, 0xf3, 0x83, 0xf3, + 0x42, 0xf3, 0x42, 0xf3, 0x0e, 0xf3, 0x0f, 0xf3, 0xe1, 0xf2, 0xe2, 0xf2, + 0xc4, 0xf2, 0xc3, 0xf2, 0xaf, 0xf2, 0xb0, 0xf2, 0xa7, 0xf2, 0xa7, 0xf2, + 0xb0, 0xf2, 0xae, 0xf2, 0xc0, 0xf2, 0xc1, 0xf2, 0xe2, 0xf2, 0xe1, 0xf2, + 0x0b, 0xf3, 0x0c, 0xf3, 0x44, 0xf3, 0x45, 0xf3, 0x89, 0xf3, 0x88, 0xf3, + 0xd4, 0xf3, 0xd5, 0xf3, 0x2e, 0xf4, 0x2e, 0xf4, 0x8c, 0xf4, 0x8c, 0xf4, + 0xf5, 0xf4, 0xf7, 0xf4, 0x63, 0xf5, 0x60, 0xf5, 0xd5, 0xf5, 0xd7, 0xf5, + 0x4d, 0xf6, 0x4b, 0xf6, 0xc2, 0xf6, 0xc3, 0xf6, 0x3d, 0xf7, 0x3c, 0xf7, + 0xb3, 0xf7, 0xb4, 0xf7, 0x2a, 0xf8, 0x28, 0xf8, 0x9d, 0xf8, 0x9d, 0xf8, + 0x09, 0xf9, 0x0a, 0xf9, 0x75, 0xf9, 0x74, 0xf9, 0xd5, 0xf9, 0xd6, 0xf9, + 0x34, 0xfa, 0x31, 0xfa, 0x87, 0xfa, 0x88, 0xfa, 0xd5, 0xfa, 0xd4, 0xfa, + 0x1b, 0xfb, 0x19, 0xfb, 0x58, 0xfb, 0x59, 0xfb, 0x90, 0xfb, 0x8e, 0xfb, + 0xbc, 0xfb, 0xbc, 0xfb, 0xe7, 0xfb, 0xe4, 0xfb, 0x06, 0xfc, 0x06, 0xfc, + 0x25, 0xfc, 0x23, 0xfc, 0x3e, 0xfc, 0x3e, 0xfc, 0x53, 0xfc, 0x51, 0xfc, + 0x68, 0xfc, 0x68, 0xfc, 0x7b, 0xfc, 0x79, 0xfc, 0x8e, 0xfc, 0x8c, 0xfc, + 0xa7, 0xfc, 0xa7, 0xfc, 0xbd, 0xfc, 0xbb, 0xfc, 0xdb, 0xfc, 0xdd, 0xfc, + 0x00, 0xfd, 0xff, 0xfc, 0x29, 0xfd, 0x28, 0xfd, 0x5b, 0xfd, 0x5b, 0xfd, + 0x94, 0xfd, 0x93, 0xfd, 0xd8, 0xfd, 0xd8, 0xfd, 0x24, 0xfe, 0x22, 0xfe, + 0x7b, 0xfe, 0x78, 0xfe, 0xda, 0xfe, 0xdb, 0xfe, 0x46, 0xff, 0x43, 0xff, + 0xba, 0xff, 0xb9, 0xff, 0x38, 0x00, 0x36, 0x00, 0xbe, 0x00, 0xbc, 0x00, + 0x4e, 0x01, 0x4d, 0x01, 0xe4, 0x01, 0xe1, 0x01, 0x81, 0x02, 0x7f, 0x02, + 0x1f, 0x03, 0x1f, 0x03, 0xc4, 0x03, 0xc1, 0x03, 0x69, 0x04, 0x6a, 0x04, + 0x10, 0x05, 0x0d, 0x05, 0xb3, 0x05, 0xb3, 0x05, 0x57, 0x06, 0x53, 0x06, + 0xf3, 0x06, 0xf2, 0x06, 0x8c, 0x07, 0x8c, 0x07, 0x1f, 0x08, 0x1d, 0x08, + 0xa6, 0x08, 0xa5, 0x08, 0x28, 0x09, 0x26, 0x09, 0x9c, 0x09, 0x9b, 0x09, + 0x08, 0x0a, 0x07, 0x0a, 0x67, 0x0a, 0x65, 0x0a, 0xb8, 0x0a, 0xb7, 0x0a, + 0x00, 0x0b, 0xfd, 0x0a, 0x36, 0x0b, 0x35, 0x0b, 0x63, 0x0b, 0x62, 0x0b, + 0x84, 0x0b, 0x82, 0x0b, 0x97, 0x0b, 0x96, 0x0b, 0x9d, 0x0b, 0x9e, 0x0b, + 0x9d, 0x0b, 0x9a, 0x0b, 0x8f, 0x0b, 0x90, 0x0b, 0x7c, 0x0b, 0x79, 0x0b, + 0x60, 0x0b, 0x5f, 0x0b, 0x3d, 0x0b, 0x3d, 0x0b, 0x17, 0x0b, 0x15, 0x0b, + 0xec, 0x0a, 0xea, 0x0a, 0xc0, 0x0a, 0xbf, 0x0a, 0x93, 0x0a, 0x92, 0x0a, + 0x65, 0x0a, 0x65, 0x0a, 0x3c, 0x0a, 0x3b, 0x0a, 0x12, 0x0a, 0x11, 0x0a, + 0xed, 0x09, 0xee, 0x09, 0xd0, 0x09, 0xce, 0x09, 0xb4, 0x09, 0xb5, 0x09, + 0xa0, 0x09, 0x9f, 0x09, 0x94, 0x09, 0x93, 0x09, 0x8a, 0x09, 0x8b, 0x09, + 0x8d, 0x09, 0x8d, 0x09, 0x93, 0x09, 0x91, 0x09, 0x9d, 0x09, 0x9e, 0x09, + 0xb3, 0x09, 0xb2, 0x09, 0xc5, 0x09, 0xc4, 0x09, 0xe4, 0x09, 0xe2, 0x09, + 0xfe, 0x09, 0xff, 0x09, 0x1f, 0x0a, 0x1d, 0x0a, 0x41, 0x0a, 0x42, 0x0a, + 0x62, 0x0a, 0x60, 0x0a, 0x80, 0x0a, 0x80, 0x0a, 0x9b, 0x0a, 0x9b, 0x0a, + 0xb3, 0x0a, 0xb2, 0x0a, 0xc5, 0x0a, 0xc5, 0x0a, 0xce, 0x0a, 0xcd, 0x0a, + 0xd1, 0x0a, 0xd3, 0x0a, 0xcb, 0x0a, 0xca, 0x0a, 0xb9, 0x0a, 0xb9, 0x0a, + 0x9d, 0x0a, 0x9e, 0x0a, 0x75, 0x0a, 0x74, 0x0a, 0x41, 0x0a, 0x42, 0x0a, + 0x00, 0x0a, 0x00, 0x0a, 0xb4, 0x09, 0xb2, 0x09, 0x59, 0x09, 0x5b, 0x09, + 0xf2, 0x08, 0xf3, 0x08, 0x84, 0x08, 0x84, 0x08, 0x04, 0x08, 0x05, 0x08, + 0x7f, 0x07, 0x7f, 0x07, 0xee, 0x06, 0xee, 0x06, 0x53, 0x06, 0x55, 0x06, + 0xb9, 0x05, 0xb7, 0x05, 0x11, 0x05, 0x13, 0x05, 0x6a, 0x04, 0x69, 0x04, + 0xbf, 0x03, 0xbe, 0x03, 0x13, 0x03, 0x12, 0x03, 0x69, 0x02, 0x6b, 0x02, + 0xbf, 0x01, 0xbe, 0x01, 0x19, 0x01, 0x1c, 0x01, 0x7c, 0x00, 0x79, 0x00, + 0xe2, 0xff, 0xe4, 0xff, 0x50, 0xff, 0x51, 0xff, 0xc9, 0xfe, 0xc7, 0xfe, + 0x47, 0xfe, 0x49, 0xfe, 0xd4, 0xfd, 0xd2, 0xfd, 0x6a, 0xfd, 0x69, 0xfd, + 0x08, 0xfd, 0x09, 0xfd, 0xb8, 0xfc, 0xb7, 0xfc, 0x6a, 0xfc, 0x6c, 0xfc, + 0x2c, 0xfc, 0x2c, 0xfc, 0xf7, 0xfb, 0xf7, 0xfb, 0xcb, 0xfb, 0xcc, 0xfb, + 0xaa, 0xfb, 0xa9, 0xfb, 0x8c, 0xfb, 0x8d, 0xfb, 0x79, 0xfb, 0x78, 0xfb, + 0x67, 0xfb, 0x66, 0xfb, 0x5c, 0xfb, 0x5b, 0xfb, 0x4f, 0xfb, 0x50, 0xfb, + 0x48, 0xfb, 0x49, 0xfb, 0x40, 0xfb, 0x3e, 0xfb, 0x34, 0xfb, 0x35, 0xfb, + 0x27, 0xfb, 0x26, 0xfb, 0x14, 0xfb, 0x13, 0xfb, 0xfc, 0xfa, 0xfe, 0xfa, + 0xe0, 0xfa, 0xdd, 0xfa, 0xba, 0xfa, 0xba, 0xfa, 0x8f, 0xfa, 0x8f, 0xfa, + 0x5a, 0xfa, 0x59, 0xfa, 0x1b, 0xfa, 0x1c, 0xfa, 0xd8, 0xf9, 0xd7, 0xf9, + 0x89, 0xf9, 0x88, 0xf9, 0x34, 0xf9, 0x35, 0xf9, 0xd5, 0xf8, 0xd6, 0xf8, + 0x73, 0xf8, 0x73, 0xf8, 0x0a, 0xf8, 0x0b, 0xf8, 0x9c, 0xf7, 0x9b, 0xf7, + 0x2a, 0xf7, 0x2b, 0xf7, 0xb6, 0xf6, 0xb5, 0xf6, 0x41, 0xf6, 0x41, 0xf6, + 0xcd, 0xf5, 0xcd, 0xf5, 0x5a, 0xf5, 0x5a, 0xf5, 0xec, 0xf4, 0xea, 0xf4, + 0x84, 0xf4, 0x84, 0xf4, 0x1d, 0xf4, 0x1f, 0xf4, 0xc7, 0xf3, 0xc2, 0xf3, + 0x6f, 0xf3, 0x74, 0xf3, 0x2b, 0xf3, 0x29, 0xf3, 0xef, 0xf2, 0xef, 0xf2, + 0xbd, 0xf2, 0xbc, 0xf2, 0x9f, 0xf2, 0x9e, 0xf2, 0x85, 0xf2, 0x83, 0xf2, + 0x80, 0xf2, 0x7e, 0xf2, 0x85, 0xf2, 0x86, 0xf2, 0x99, 0xf2, 0x98, 0xf2, + 0xbd, 0xf2, 0xbc, 0xf2, 0xea, 0xf2, 0xe9, 0xf2, 0x27, 0xf3, 0x28, 0xf3, + 0x6f, 0xf3, 0x6b, 0xf3, 0xc0, 0xf3, 0xc1, 0xf3, 0x1b, 0xf4, 0x1b, 0xf4, + 0x80, 0xf4, 0x7d, 0xf4, 0xe7, 0xf4, 0xe8, 0xf4, 0x5a, 0xf5, 0x57, 0xf5, + 0xca, 0xf5, 0xcc, 0xf5, 0x43, 0xf6, 0x3f, 0xf6, 0xb6, 0xf6, 0xb6, 0xf6, + 0x2c, 0xf7, 0x2a, 0xf7, 0x9e, 0xf7, 0x9e, 0xf7, 0x0e, 0xf8, 0x0c, 0xf8, + 0x77, 0xf8, 0x76, 0xf8, 0xdd, 0xf8, 0xdb, 0xf8, 0x39, 0xf9, 0x38, 0xf9, + 0x91, 0xf9, 0x90, 0xf9, 0xde, 0xf9, 0xdb, 0xf9, 0x25, 0xfa, 0x23, 0xfa, + 0x5f, 0xfa, 0x5e, 0xfa, 0x95, 0xfa, 0x94, 0xfa, 0xc0, 0xfa, 0xbe, 0xfa, + 0xe3, 0xfa, 0xe3, 0xfa, 0xff, 0xfa, 0xfd, 0xfa, 0x16, 0xfb, 0x15, 0xfb, + 0x24, 0xfb, 0x25, 0xfb, 0x33, 0xfb, 0x30, 0xfb, 0x38, 0xfb, 0x3a, 0xfb, + 0x40, 0xfb, 0x3e, 0xfb, 0x46, 0xfb, 0x45, 0xfb, 0x49, 0xfb, 0x4b, 0xfb, + 0x58, 0xfb, 0x53, 0xfb, 0x5e, 0xfb, 0x60, 0xfb, 0x75, 0xfb, 0x72, 0xfb, + 0x8b, 0xfb, 0x8c, 0xfb, 0xab, 0xfb, 0xa9, 0xfb, 0xd3, 0xfb, 0xd3, 0xfb, + 0x06, 0xfc, 0x05, 0xfc, 0x42, 0xfc, 0x42, 0xfc, 0x8c, 0xfc, 0x8a, 0xfc, + 0xdb, 0xfc, 0xdc, 0xfc, 0x3f, 0xfd, 0x3d, 0xfd, 0xa6, 0xfd, 0xa6, 0xfd, + 0x1f, 0xfe, 0x1e, 0xfe, 0xa0, 0xfe, 0x9f, 0xfe, 0x2a, 0xff, 0x2b, 0xff, + 0xc2, 0xff, 0xc2, 0xff, 0x5f, 0x00, 0x5d, 0x00, 0x05, 0x01, 0x06, 0x01, + 0xb0, 0x01, 0xae, 0x01, 0x5e, 0x02, 0x5e, 0x02, 0x10, 0x03, 0x11, 0x03, + 0xc3, 0x03, 0xc2, 0x03, 0x76, 0x04, 0x76, 0x04, 0x26, 0x05, 0x26, 0x05, + 0xd2, 0x05, 0xd2, 0x05, 0x79, 0x06, 0x7a, 0x06, 0x1a, 0x07, 0x19, 0x07, + 0xaf, 0x07, 0xae, 0x07, 0x3d, 0x08, 0x3e, 0x08, 0xbf, 0x08, 0xbf, 0x08, + 0x36, 0x09, 0x35, 0x09, 0x9e, 0x09, 0x9e, 0x09, 0xfa, 0x09, 0xf8, 0x09, + 0x48, 0x0a, 0x48, 0x0a, 0x8a, 0x0a, 0x89, 0x0a, 0xbc, 0x0a, 0xba, 0x0a, + 0xe0, 0x0a, 0xe1, 0x0a, 0xf9, 0x0a, 0xf7, 0x0a, 0x05, 0x0b, 0x04, 0x0b, + 0x06, 0x0b, 0x05, 0x0b, 0xfc, 0x0a, 0xfb, 0x0a, 0xe8, 0x0a, 0xe9, 0x0a, + 0xcf, 0x0a, 0xcc, 0x0a, 0xad, 0x0a, 0xad, 0x0a, 0x88, 0x0a, 0x86, 0x0a, + 0x5d, 0x0a, 0x5e, 0x0a, 0x35, 0x0a, 0x33, 0x0a, 0x06, 0x0a, 0x06, 0x0a, + 0xde, 0x09, 0xde, 0x09, 0xb6, 0x09, 0xb3, 0x09, 0x91, 0x09, 0x92, 0x09, + 0x74, 0x09, 0x72, 0x09, 0x58, 0x09, 0x58, 0x09, 0x47, 0x09, 0x48, 0x09, + 0x3b, 0x09, 0x3a, 0x09, 0x3a, 0x09, 0x3a, 0x09, 0x3d, 0x09, 0x3d, 0x09, + 0x4b, 0x09, 0x4a, 0x09, 0x5f, 0x09, 0x5f, 0x09, 0x7b, 0x09, 0x79, 0x09, + 0x9e, 0x09, 0x9d, 0x09, 0xc4, 0x09, 0xc5, 0x09, 0xf5, 0x09, 0xf5, 0x09, + 0x25, 0x0a, 0x25, 0x0a, 0x5c, 0x0a, 0x59, 0x0a, 0x8e, 0x0a, 0x91, 0x0a, + 0xc4, 0x0a, 0xc3, 0x0a, 0xf8, 0x0a, 0xf8, 0x0a, 0x27, 0x0b, 0x28, 0x0b, + 0x55, 0x0b, 0x53, 0x0b, 0x79, 0x0b, 0x7a, 0x0b, 0x97, 0x0b, 0x97, 0x0b, + 0xab, 0x0b, 0xab, 0x0b, 0xb6, 0x0b, 0xb6, 0x0b, 0xb6, 0x0b, 0xb5, 0x0b, + 0xa6, 0x0b, 0xa6, 0x0b, 0x8f, 0x0b, 0x8e, 0x0b, 0x62, 0x0b, 0x63, 0x0b, + 0x30, 0x0b, 0x2f, 0x0b, 0xe8, 0x0a, 0xe9, 0x0a, 0x97, 0x0a, 0x97, 0x0a, + 0x35, 0x0a, 0x36, 0x0a, 0xc8, 0x09, 0xc7, 0x09, 0x4c, 0x09, 0x4d, 0x09, + 0xc6, 0x08, 0xc5, 0x08, 0x33, 0x08, 0x34, 0x08, 0x9a, 0x07, 0x9a, 0x07, + 0xf7, 0x06, 0xf7, 0x06, 0x4f, 0x06, 0x4f, 0x06, 0xa1, 0x05, 0xa2, 0x05, + 0xf0, 0x04, 0xf0, 0x04, 0x40, 0x04, 0x3e, 0x04, 0x8e, 0x03, 0x8e, 0x03, + 0xdf, 0x02, 0xde, 0x02, 0x36, 0x02, 0x36, 0x02, 0x8f, 0x01, 0x8f, 0x01, + 0xf1, 0x00, 0xf1, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0xcf, 0xff, 0xcd, 0xff, + 0x4e, 0xff, 0x4e, 0xff, 0xd4, 0xfe, 0xd3, 0xfe, 0x6a, 0xfe, 0x69, 0xfe, + 0x0d, 0xfe, 0x0b, 0xfe, 0xb9, 0xfd, 0xb7, 0xfd, 0x72, 0xfd, 0x72, 0xfd, + 0x35, 0xfd, 0x33, 0xfd, 0x04, 0xfd, 0x07, 0xfd, 0xdf, 0xfc, 0xdc, 0xfc, + 0xc0, 0xfc, 0xc0, 0xfc, 0xac, 0xfc, 0xab, 0xfc, 0x9c, 0xfc, 0x9b, 0xfc, + 0x95, 0xfc, 0x94, 0xfc, 0x8d, 0xfc, 0x8d, 0xfc, 0x8c, 0xfc, 0x8b, 0xfc, + 0x8a, 0xfc, 0x8a, 0xfc, 0x86, 0xfc, 0x85, 0xfc, 0x82, 0xfc, 0x80, 0xfc, + 0x76, 0xfc, 0x76, 0xfc, 0x68, 0xfc, 0x67, 0xfc, 0x52, 0xfc, 0x53, 0xfc, + 0x35, 0xfc, 0x34, 0xfc, 0x0f, 0xfc, 0x0e, 0xfc, 0xe0, 0xfb, 0xde, 0xfb, + 0xa4, 0xfb, 0xa5, 0xfb, 0x64, 0xfb, 0x61, 0xfb, 0x13, 0xfb, 0x12, 0xfb, + 0xbd, 0xfa, 0xbe, 0xfa, 0x5a, 0xfa, 0x59, 0xfa, 0xef, 0xf9, 0xf0, 0xf9, + 0x7d, 0xf9, 0x7b, 0xf9, 0x02, 0xf9, 0x02, 0xf9, 0x81, 0xf8, 0x81, 0xf8, + 0xfc, 0xf7, 0xf9, 0xf7, 0x74, 0xf7, 0x75, 0xf7, 0xe9, 0xf6, 0xe7, 0xf6, + 0x60, 0xf6, 0x5e, 0xf6, 0xd6, 0xf5, 0xd6, 0xf5, 0x51, 0xf5, 0x50, 0xf5, + 0xd4, 0xf4, 0xd3, 0xf4, 0x57, 0xf4, 0x57, 0xf4, 0xe9, 0xf3, 0xe6, 0xf3, + 0x81, 0xf3, 0x81, 0xf3, 0x27, 0xf3, 0x26, 0xf3, 0xd8, 0xf2, 0xd6, 0xf2, + 0x93, 0xf2, 0x94, 0xf2, 0x63, 0xf2, 0x61, 0xf2, 0x3d, 0xf2, 0x3d, 0xf2, + 0x29, 0xf2, 0x27, 0xf2, 0x24, 0xf2, 0x24, 0xf2, 0x2c, 0xf2, 0x2b, 0xf2, + 0x46, 0xf2, 0x47, 0xf2, 0x6e, 0xf2, 0x6c, 0xf2, 0xa3, 0xf2, 0xa2, 0xf2, + 0xe7, 0xf2, 0xe6, 0xf2, 0x34, 0xf3, 0x33, 0xf3, 0x8c, 0xf3, 0x8c, 0xf3, + 0xef, 0xf3, 0xed, 0xf3, 0x56, 0xf4, 0x57, 0xf4, 0xc8, 0xf4, 0xc4, 0xf4, + 0x39, 0xf5, 0x3a, 0xf5, 0xaf, 0xf5, 0xad, 0xf5, 0x26, 0xf6, 0x26, 0xf6, + 0x98, 0xf6, 0x98, 0xf6, 0x0b, 0xf7, 0x0a, 0xf7, 0x79, 0xf7, 0x79, 0xf7, + 0xe0, 0xf7, 0xe0, 0xf7, 0x43, 0xf8, 0x42, 0xf8, 0x9a, 0xf8, 0x9a, 0xf8, + 0xec, 0xf8, 0xeb, 0xf8, 0x34, 0xf9, 0x33, 0xf9, 0x71, 0xf9, 0x70, 0xf9, + 0xa5, 0xf9, 0xa6, 0xf9, 0xce, 0xf9, 0xcd, 0xf9, 0xee, 0xf9, 0xee, 0xf9, + 0x04, 0xfa, 0x04, 0xfa, 0x14, 0xfa, 0x12, 0xfa, 0x1a, 0xfa, 0x1c, 0xfa, + 0x1b, 0xfa, 0x1a, 0xfa, 0x18, 0xfa, 0x19, 0xfa, 0x0f, 0xfa, 0x12, 0xfa, + 0x08, 0xfa, 0x06, 0xfa, 0xfa, 0xf9, 0xfc, 0xf9, 0xf1, 0xf9, 0xf2, 0xf9, + 0xeb, 0xf9, 0xeb, 0xf9, 0xe8, 0xf9, 0xea, 0xf9, 0xee, 0xf9, 0xec, 0xf9, + 0xf6, 0xf9, 0xf8, 0xf9, 0x0b, 0xfa, 0x0c, 0xfa, 0x29, 0xfa, 0x29, 0xfa, + 0x51, 0xfa, 0x53, 0xfa, 0x86, 0xfa, 0x88, 0xfa, 0xca, 0xfa, 0xca, 0xfa, + 0x18, 0xfb, 0x19, 0xfb, 0x78, 0xfb, 0x76, 0xfb, 0xe1, 0xfb, 0xe1, 0xfb, + 0x5a, 0xfc, 0x5a, 0xfc, 0xde, 0xfc, 0xdf, 0xfc, 0x6f, 0xfd, 0x70, 0xfd, + 0x0e, 0xfe, 0x0d, 0xfe, 0xb3, 0xfe, 0xb0, 0xfe, 0x62, 0xff, 0x63, 0xff, + 0x1a, 0x00, 0x18, 0x00, 0xd4, 0x00, 0xd6, 0x00, 0x96, 0x01, 0x96, 0x01, + 0x55, 0x02, 0x54, 0x02, 0x18, 0x03, 0x19, 0x03, 0xd6, 0x03, 0xd5, 0x03, + 0x91, 0x04, 0x92, 0x04, 0x49, 0x05, 0x48, 0x05, 0xf9, 0x05, 0xf7, 0x05, + 0x9e, 0x06, 0x9f, 0x06, 0x39, 0x07, 0x37, 0x07, 0xc7, 0x07, 0xc8, 0x07, + 0x4b, 0x08, 0x4a, 0x08, 0xbd, 0x08, 0xbd, 0x08, 0x25, 0x09, 0x26, 0x09, + 0x7a, 0x09, 0x78, 0x09, 0xc1, 0x09, 0xc2, 0x09, 0xfd, 0x09, 0xfc, 0x09, + 0x25, 0x0a, 0x24, 0x0a, 0x41, 0x0a, 0x41, 0x0a, 0x51, 0x0a, 0x50, 0x0a, + 0x52, 0x0a, 0x52, 0x0a, 0x4b, 0x0a, 0x4b, 0x0a, 0x37, 0x0a, 0x39, 0x0a, + 0x1f, 0x0a, 0x1e, 0x0a, 0xfb, 0x09, 0xfd, 0x09, 0xda, 0x09, 0xd7, 0x09, + 0xac, 0x09, 0xae, 0x09, 0x82, 0x09, 0x82, 0x09, 0x56, 0x09, 0x58, 0x09, + 0x2c, 0x09, 0x2c, 0x09, 0x0a, 0x09, 0x09, 0x09, 0xe5, 0x08, 0xe5, 0x08, + 0xcd, 0x08, 0xce, 0x08, 0xba, 0x08, 0xb9, 0x08, 0xac, 0x08, 0xad, 0x08, + 0xae, 0x08, 0xac, 0x08, 0xb1, 0x08, 0xb2, 0x08, 0xc6, 0x08, 0xc4, 0x08, + 0xdc, 0x08, 0xdd, 0x08, 0x04, 0x09, 0x01, 0x09, 0x2d, 0x09, 0x2e, 0x09, + 0x62, 0x09, 0x61, 0x09, 0xa1, 0x09, 0x9e, 0x09, 0xe0, 0x09, 0xe0, 0x09, + 0x29, 0x0a, 0x26, 0x0a, 0x70, 0x0a, 0x72, 0x0a, 0xbf, 0x0a, 0xbc, 0x0a, + 0x0a, 0x0b, 0x0b, 0x0b, 0x56, 0x0b, 0x56, 0x0b, 0x9f, 0x0b, 0x9d, 0x0b, + 0xdf, 0x0b, 0xe1, 0x0b, 0x1e, 0x0c, 0x1b, 0x0c, 0x51, 0x0c, 0x50, 0x0c, + 0x7b, 0x0c, 0x7b, 0x0c, 0x99, 0x0c, 0x98, 0x0c, 0xac, 0x0c, 0xac, 0x0c, + 0xaf, 0x0c, 0xae, 0x0c, 0xa4, 0x0c, 0xa3, 0x0c, 0x8c, 0x0c, 0x8c, 0x0c, + 0x5f, 0x0c, 0x60, 0x0c, 0x29, 0x0c, 0x28, 0x0c, 0xde, 0x0b, 0xde, 0x0b, + 0x85, 0x0b, 0x84, 0x0b, 0x1c, 0x0b, 0x1c, 0x0b, 0xa4, 0x0a, 0xa4, 0x0a, + 0x20, 0x0a, 0x1f, 0x0a, 0x8e, 0x09, 0x8e, 0x09, 0xf5, 0x08, 0xf5, 0x08, + 0x4f, 0x08, 0x4e, 0x08, 0xa3, 0x07, 0xa5, 0x07, 0xf4, 0x06, 0xf2, 0x06, + 0x3d, 0x06, 0x3d, 0x06, 0x8a, 0x05, 0x88, 0x05, 0xd0, 0x04, 0xd1, 0x04, + 0x1e, 0x04, 0x1e, 0x04, 0x6f, 0x03, 0x6f, 0x03, 0xc3, 0x02, 0xc2, 0x02, + 0x24, 0x02, 0x24, 0x02, 0x85, 0x01, 0x86, 0x01, 0xfb, 0x00, 0xfc, 0x00, + 0x76, 0x00, 0x75, 0x00, 0xfc, 0xff, 0x01, 0x00, 0x95, 0xff, 0x93, 0xff, + 0x35, 0xff, 0x36, 0xff, 0xe7, 0xfe, 0xe8, 0xfe, 0xa2, 0xfe, 0xa1, 0xfe, + 0x6e, 0xfe, 0x70, 0xfe, 0x41, 0xfe, 0x40, 0xfe, 0x21, 0xfe, 0x21, 0xfe, + 0x0d, 0xfe, 0x0e, 0xfe, 0xfe, 0xfd, 0xff, 0xfd, 0xfa, 0xfd, 0xfb, 0xfd, + 0xf9, 0xfd, 0xf8, 0xfd, 0xfc, 0xfd, 0xfe, 0xfd, 0x02, 0xfe, 0x02, 0xfe, + 0x08, 0xfe, 0x09, 0xfe, 0x0f, 0xfe, 0x0f, 0xfe, 0x10, 0xfe, 0x10, 0xfe, + 0x0d, 0xfe, 0x0d, 0xfe, 0x02, 0xfe, 0x02, 0xfe, 0xf2, 0xfd, 0xf2, 0xfd, + 0xd5, 0xfd, 0xd5, 0xfd, 0xb2, 0xfd, 0xb1, 0xfd, 0x7e, 0xfd, 0x7f, 0xfd, + 0x44, 0xfd, 0x43, 0xfd, 0xfc, 0xfc, 0xfa, 0xfc, 0xa6, 0xfc, 0xa6, 0xfc, + 0x45, 0xfc, 0x45, 0xfc, 0xda, 0xfb, 0xda, 0xfb, 0x63, 0xfb, 0x63, 0xfb, + 0xe3, 0xfa, 0xe3, 0xfa, 0x58, 0xfa, 0x56, 0xfa, 0xc6, 0xf9, 0xc7, 0xf9, + 0x30, 0xf9, 0x2e, 0xf9, 0x93, 0xf8, 0x93, 0xf8, 0xf5, 0xf7, 0xf5, 0xf7, + 0x55, 0xf7, 0x55, 0xf7, 0xb7, 0xf6, 0xb9, 0xf6, 0x1d, 0xf6, 0x1c, 0xf6, + 0x86, 0xf5, 0x86, 0xf5, 0xfc, 0xf4, 0xfc, 0xf4, 0x72, 0xf4, 0x73, 0xf4, + 0xf8, 0xf3, 0xfa, 0xf3, 0x88, 0xf3, 0x88, 0xf3, 0x26, 0xf3, 0x29, 0xf3, + 0xd8, 0xf2, 0xd3, 0xf2, 0x8f, 0xf2, 0x91, 0xf2, 0x5c, 0xf2, 0x5c, 0xf2, + 0x3c, 0xf2, 0x3c, 0xf2, 0x2a, 0xf2, 0x2a, 0xf2, 0x29, 0xf2, 0x29, 0xf2, + 0x39, 0xf2, 0x39, 0xf2, 0x58, 0xf2, 0x59, 0xf2, 0x89, 0xf2, 0x86, 0xf2, + 0xc5, 0xf2, 0xc6, 0xf2, 0x10, 0xf3, 0x0e, 0xf3, 0x64, 0xf3, 0x66, 0xf3, + 0xc3, 0xf3, 0xc2, 0xf3, 0x2c, 0xf4, 0x2b, 0xf4, 0x98, 0xf4, 0x99, 0xf4, + 0x0b, 0xf5, 0x0a, 0xf5, 0x7d, 0xf5, 0x7f, 0xf5, 0xf3, 0xf5, 0xf2, 0xf5, + 0x66, 0xf6, 0x69, 0xf6, 0xd7, 0xf6, 0xd5, 0xf6, 0x40, 0xf7, 0x41, 0xf7, + 0xa6, 0xf7, 0xa7, 0xf7, 0x01, 0xf8, 0x02, 0xf8, 0x56, 0xf8, 0x57, 0xf8, + 0x9f, 0xf8, 0x9e, 0xf8, 0xdf, 0xf8, 0xe0, 0xf8, 0x14, 0xf9, 0x13, 0xf9, + 0x3d, 0xf9, 0x3e, 0xf9, 0x59, 0xf9, 0x5b, 0xf9, 0x70, 0xf9, 0x6d, 0xf9, + 0x75, 0xf9, 0x79, 0xf9, 0x78, 0xf9, 0x76, 0xf9, 0x6e, 0xf9, 0x6f, 0xf9, + 0x5e, 0xf9, 0x5e, 0xf9, 0x4b, 0xf9, 0x4b, 0xf9, 0x2e, 0xf9, 0x2d, 0xf9, + 0x15, 0xf9, 0x14, 0xf9, 0xf7, 0xf8, 0xf6, 0xf8, 0xdb, 0xf8, 0xdb, 0xf8, + 0xc3, 0xf8, 0xc3, 0xf8, 0xae, 0xf8, 0xaf, 0xf8, 0xa2, 0xf8, 0xa4, 0xf8, + 0xa0, 0xf8, 0x9e, 0xf8, 0xa4, 0xf8, 0xa4, 0xf8, 0xb4, 0xf8, 0xb5, 0xf8, + 0xd0, 0xf8, 0xd0, 0xf8, 0x00, 0xf9, 0xff, 0xf8, 0x35, 0xf9, 0x35, 0xf9, + 0x80, 0xf9, 0x7f, 0xf9, 0xd8, 0xf9, 0xd8, 0xf9, 0x40, 0xfa, 0x40, 0xfa, + 0xba, 0xfa, 0xb9, 0xfa, 0x3b, 0xfb, 0x3c, 0xfb, 0xd5, 0xfb, 0xd4, 0xfb, + 0x71, 0xfc, 0x71, 0xfc, 0x22, 0xfd, 0x22, 0xfd, 0xd7, 0xfd, 0xd5, 0xfd, + 0x97, 0xfe, 0x96, 0xfe, 0x5c, 0xff, 0x5e, 0xff, 0x29, 0x00, 0x26, 0x00, + 0xf7, 0x00, 0xf7, 0x00, 0xc3, 0x01, 0xc5, 0x01, 0x91, 0x02, 0x8e, 0x02, + 0x5a, 0x03, 0x5b, 0x03, 0x1a, 0x04, 0x19, 0x04, 0xd8, 0x04, 0xd7, 0x04, + 0x89, 0x05, 0x89, 0x05, 0x2e, 0x06, 0x2e, 0x06, 0xcb, 0x06, 0xcb, 0x06, + 0x55, 0x07, 0x55, 0x07, 0xd2, 0x07, 0xd2, 0x07, 0x41, 0x08, 0x41, 0x08, + 0x9c, 0x08, 0x9c, 0x08, 0xed, 0x08, 0xee, 0x08, 0x28, 0x09, 0x26, 0x09, + 0x56, 0x09, 0x56, 0x09, 0x72, 0x09, 0x71, 0x09, 0x81, 0x09, 0x82, 0x09, + 0x87, 0x09, 0x84, 0x09, 0x78, 0x09, 0x7a, 0x09, 0x6a, 0x09, 0x68, 0x09, + 0x48, 0x09, 0x47, 0x09, 0x28, 0x09, 0x2b, 0x09, 0x00, 0x09, 0xfd, 0x08, + 0xd2, 0x08, 0xd4, 0x08, 0xa6, 0x08, 0xa5, 0x08, 0x7b, 0x08, 0x7a, 0x08, + 0x51, 0x08, 0x53, 0x08, 0x2d, 0x08, 0x2a, 0x08, 0x0d, 0x08, 0x0f, 0x08, + 0xf6, 0x07, 0xf3, 0x07, 0xe6, 0x07, 0xe8, 0x07, 0xe2, 0x07, 0xe0, 0x07, + 0xe7, 0x07, 0xe8, 0x07, 0xf9, 0x07, 0xf9, 0x07, 0x13, 0x08, 0x11, 0x08, + 0x3c, 0x08, 0x3d, 0x08, 0x6d, 0x08, 0x6b, 0x08, 0xaa, 0x08, 0xa9, 0x08, + 0xf1, 0x08, 0xf0, 0x08, 0x3d, 0x09, 0x3d, 0x09, 0x95, 0x09, 0x94, 0x09, + 0xef, 0x09, 0xee, 0x09, 0x50, 0x0a, 0x50, 0x0a, 0xb3, 0x0a, 0xb2, 0x0a, + 0x14, 0x0b, 0x14, 0x0b, 0x78, 0x0b, 0x77, 0x0b, 0xd4, 0x0b, 0xd4, 0x0b, + 0x30, 0x0c, 0x2e, 0x0c, 0x7f, 0x0c, 0x81, 0x0c, 0xcb, 0x0c, 0xc9, 0x0c, + 0x07, 0x0d, 0x07, 0x0d, 0x3b, 0x0d, 0x39, 0x0d, 0x5e, 0x0d, 0x5c, 0x0d, + 0x74, 0x0d, 0x73, 0x0d, 0x77, 0x0d, 0x78, 0x0d, 0x6c, 0x0d, 0x6b, 0x0d, + 0x4e, 0x0d, 0x4e, 0x0d, 0x1f, 0x0d, 0x1d, 0x0d, 0xdd, 0x0c, 0xde, 0x0c, + 0x8a, 0x0c, 0x8a, 0x0c, 0x27, 0x0c, 0x25, 0x0c, 0xb4, 0x0b, 0xb3, 0x0b, + 0x31, 0x0b, 0x31, 0x0b, 0xa2, 0x0a, 0xa0, 0x0a, 0x05, 0x0a, 0x06, 0x0a, + 0x60, 0x09, 0x60, 0x09, 0xb3, 0x08, 0xb1, 0x08, 0xfb, 0x07, 0xfd, 0x07, + 0x46, 0x07, 0x44, 0x07, 0x89, 0x06, 0x8a, 0x06, 0xd2, 0x05, 0xd0, 0x05, + 0x18, 0x05, 0x1a, 0x05, 0x67, 0x04, 0x64, 0x04, 0xb8, 0x03, 0xb9, 0x03, + 0x16, 0x03, 0x15, 0x03, 0x78, 0x02, 0x78, 0x02, 0xeb, 0x01, 0xeb, 0x01, + 0x64, 0x01, 0x64, 0x01, 0xf1, 0x00, 0xef, 0x00, 0x85, 0x00, 0x87, 0x00, + 0x2e, 0x00, 0x2c, 0x00, 0xe0, 0xff, 0xe2, 0xff, 0xa4, 0xff, 0xa3, 0xff, + 0x73, 0xff, 0x73, 0xff, 0x4e, 0xff, 0x50, 0xff, 0x39, 0xff, 0x38, 0xff, + 0x2a, 0xff, 0x2b, 0xff, 0x29, 0xff, 0x29, 0xff, 0x2c, 0xff, 0x2c, 0xff, + 0x36, 0xff, 0x37, 0xff, 0x44, 0xff, 0x44, 0xff, 0x53, 0xff, 0x54, 0xff, + 0x64, 0xff, 0x64, 0xff, 0x70, 0xff, 0x71, 0xff, 0x7c, 0xff, 0x7c, 0xff, + 0x7f, 0xff, 0x7f, 0xff, 0x7b, 0xff, 0x7d, 0xff, 0x71, 0xff, 0x6f, 0xff, + 0x54, 0xff, 0x58, 0xff, 0x35, 0xff, 0x33, 0xff, 0xff, 0xfe, 0x02, 0xff, + 0xc4, 0xfe, 0xc3, 0xfe, 0x73, 0xfe, 0x76, 0xfe, 0x1b, 0xfe, 0x1c, 0xfe, + 0xb1, 0xfd, 0xb2, 0xfd, 0x39, 0xfd, 0x39, 0xfd, 0xb9, 0xfc, 0xb8, 0xfc, + 0x28, 0xfc, 0x29, 0xfc, 0x8e, 0xfb, 0x8f, 0xfb, 0xee, 0xfa, 0xed, 0xfa, + 0x41, 0xfa, 0x43, 0xfa, 0x95, 0xf9, 0x94, 0xf9, 0xe1, 0xf8, 0xe3, 0xf8, + 0x2d, 0xf8, 0x2c, 0xf8, 0x7c, 0xf7, 0x7c, 0xf7, 0xcb, 0xf6, 0xcb, 0xf6, + 0x21, 0xf6, 0x22, 0xf6, 0x7e, 0xf5, 0x7d, 0xf5, 0xe0, 0xf4, 0xe2, 0xf4, + 0x56, 0xf4, 0x55, 0xf4, 0xd2, 0xf3, 0xd2, 0xf3, 0x5f, 0xf3, 0x5f, 0xf3, + 0xfd, 0xf2, 0xfe, 0xf2, 0xa7, 0xf2, 0xa9, 0xf2, 0x6b, 0xf2, 0x6a, 0xf2, + 0x39, 0xf2, 0x3a, 0xf2, 0x1d, 0xf2, 0x1d, 0xf2, 0x16, 0xf2, 0x16, 0xf2, + 0x1c, 0xf2, 0x1b, 0xf2, 0x35, 0xf2, 0x36, 0xf2, 0x60, 0xf2, 0x5f, 0xf2, + 0x98, 0xf2, 0x98, 0xf2, 0xe2, 0xf2, 0xe3, 0xf2, 0x34, 0xf3, 0x33, 0xf3, + 0x92, 0xf3, 0x93, 0xf3, 0xfb, 0xf3, 0xfa, 0xf3, 0x65, 0xf4, 0x64, 0xf4, + 0xd9, 0xf4, 0xd9, 0xf4, 0x4b, 0xf5, 0x4b, 0xf5, 0xbe, 0xf5, 0xbe, 0xf5, + 0x31, 0xf6, 0x30, 0xf6, 0x9c, 0xf6, 0x9e, 0xf6, 0x07, 0xf7, 0x05, 0xf7, + 0x66, 0xf7, 0x65, 0xf7, 0xbe, 0xf7, 0xbd, 0xf7, 0x0b, 0xf8, 0x0a, 0xf8, + 0x4c, 0xf8, 0x4e, 0xf8, 0x83, 0xf8, 0x81, 0xf8, 0xaa, 0xf8, 0xac, 0xf8, + 0xca, 0xf8, 0xc9, 0xf8, 0xd8, 0xf8, 0xd9, 0xf8, 0xdf, 0xf8, 0xdf, 0xf8, + 0xd8, 0xf8, 0xd8, 0xf8, 0xc6, 0xf8, 0xc5, 0xf8, 0xad, 0xf8, 0xad, 0xf8, + 0x8a, 0xf8, 0x89, 0xf8, 0x63, 0xf8, 0x64, 0xf8, 0x34, 0xf8, 0x32, 0xf8, + 0x06, 0xf8, 0x06, 0xf8, 0xd7, 0xf7, 0xd7, 0xf7, 0xa8, 0xf7, 0xa6, 0xf7, + 0x7d, 0xf7, 0x7d, 0xf7, 0x57, 0xf7, 0x57, 0xf7, 0x3a, 0xf7, 0x3a, 0xf7, + 0x26, 0xf7, 0x24, 0xf7, 0x1d, 0xf7, 0x1e, 0xf7, 0x20, 0xf7, 0x1e, 0xf7, + 0x32, 0xf7, 0x34, 0xf7, 0x57, 0xf7, 0x55, 0xf7, 0x88, 0xf7, 0x87, 0xf7, + 0xcb, 0xf7, 0xcd, 0xf7, 0x23, 0xf8, 0x1f, 0xf8, 0x84, 0xf8, 0x86, 0xf8, + 0xff, 0xf8, 0xff, 0xf8, 0x86, 0xf9, 0x84, 0xf9, 0x1f, 0xfa, 0x21, 0xfa, + 0xc6, 0xfa, 0xc5, 0xfa, 0x78, 0xfb, 0x77, 0xfb, 0x39, 0xfc, 0x3b, 0xfc, + 0x02, 0xfd, 0x00, 0xfd, 0xd3, 0xfd, 0xd4, 0xfd, 0xaa, 0xfe, 0xab, 0xfe, + 0x82, 0xff, 0x82, 0xff, 0x5f, 0x00, 0x60, 0x00, 0x36, 0x01, 0x37, 0x01, + 0x0e, 0x02, 0x0d, 0x02, 0xda, 0x02, 0xdb, 0x02, 0xa0, 0x03, 0xa2, 0x03, + 0x61, 0x04, 0x60, 0x04, 0x0d, 0x05, 0x0f, 0x05, 0xb6, 0x05, 0xb4, 0x05, + 0x45, 0x06, 0x47, 0x06, 0xcc, 0x06, 0xcd, 0x06, 0x3e, 0x07, 0x3d, 0x07, + 0xa1, 0x07, 0xa2, 0x07, 0xf3, 0x07, 0xf2, 0x07, 0x2f, 0x08, 0x30, 0x08, + 0x61, 0x08, 0x61, 0x08, 0x7a, 0x08, 0x7b, 0x08, 0x8e, 0x08, 0x8d, 0x08, + 0x8d, 0x08, 0x8c, 0x08, 0x80, 0x08, 0x81, 0x08, 0x6c, 0x08, 0x6b, 0x08, + 0x49, 0x08, 0x48, 0x08, 0x24, 0x08, 0x28, 0x08, 0xf9, 0x07, 0xf7, 0x07, + 0xcb, 0x07, 0xcc, 0x07, 0x9c, 0x07, 0x9e, 0x07, 0x6d, 0x07, 0x6d, 0x07, + 0x46, 0x07, 0x48, 0x07, 0x22, 0x07, 0x22, 0x07, 0x07, 0x07, 0x07, 0x07, + 0xf3, 0x06, 0xf4, 0x06, 0xeb, 0x06, 0xea, 0x06, 0xee, 0x06, 0xef, 0x06, + 0xfb, 0x06, 0xfb, 0x06, 0x18, 0x07, 0x18, 0x07, 0x3e, 0x07, 0x40, 0x07, + 0x77, 0x07, 0x75, 0x07, 0xb8, 0x07, 0xb9, 0x07, 0x04, 0x08, 0x07, 0x08, + 0x61, 0x08, 0x5e, 0x08, 0xc1, 0x08, 0xc3, 0x08, 0x2f, 0x09, 0x2f, 0x09, + 0xa1, 0x09, 0xa3, 0x09, 0x18, 0x0a, 0x18, 0x0a, 0x92, 0x0a, 0x92, 0x0a, + 0x0c, 0x0b, 0x0d, 0x0b, 0x89, 0x0b, 0x89, 0x0b, 0xfe, 0x0b, 0xfe, 0x0b, + 0x71, 0x0c, 0x71, 0x0c, 0xda, 0x0c, 0xdb, 0x0c, 0x39, 0x0d, 0x38, 0x0d, + 0x8d, 0x0d, 0x8f, 0x0d, 0xd2, 0x0d, 0xd2, 0x0d, 0x0a, 0x0e, 0x0a, 0x0e, + 0x2e, 0x0e, 0x2e, 0x0e, 0x44, 0x0e, 0x44, 0x0e, 0x45, 0x0e, 0x47, 0x0e, + 0x34, 0x0e, 0x33, 0x0e, 0x10, 0x0e, 0x12, 0x0e, 0xd6, 0x0d, 0xd7, 0x0d, + 0x8b, 0x0d, 0x8c, 0x0d, 0x2d, 0x0d, 0x2d, 0x0d, 0xbe, 0x0c, 0xbf, 0x0c, + 0x3f, 0x0c, 0x3c, 0x0c, 0xad, 0x0b, 0xaf, 0x0b, 0x15, 0x0b, 0x15, 0x0b, + 0x6d, 0x0a, 0x6b, 0x0a, 0xba, 0x09, 0xbd, 0x09, 0x08, 0x09, 0x06, 0x09, + 0x49, 0x08, 0x4c, 0x08, 0x8d, 0x07, 0x8e, 0x07, 0xd3, 0x06, 0xd1, 0x06, + 0x16, 0x06, 0x18, 0x06, 0x64, 0x05, 0x61, 0x05, 0xb3, 0x04, 0xb5, 0x04, + 0x11, 0x04, 0x0e, 0x04, 0x74, 0x03, 0x75, 0x03, 0xe6, 0x02, 0xe6, 0x02, + 0x64, 0x02, 0x65, 0x02, 0xf4, 0x01, 0xf5, 0x01, 0x8f, 0x01, 0x8f, 0x01, + 0x3c, 0x01, 0x3b, 0x01, 0xf7, 0x00, 0xf7, 0x00, 0xc4, 0x00, 0xc3, 0x00, + 0x9b, 0x00, 0x9d, 0x00, 0x84, 0x00, 0x81, 0x00, 0x78, 0x00, 0x7b, 0x00, + 0x78, 0x00, 0x75, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x92, 0x00, 0x91, 0x00, + 0xa8, 0x00, 0xa7, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xdf, 0x00, 0xde, 0x00, + 0xfb, 0x00, 0xf9, 0x00, 0x14, 0x01, 0x15, 0x01, 0x29, 0x01, 0x26, 0x01, + 0x34, 0x01, 0x36, 0x01, 0x39, 0x01, 0x36, 0x01, 0x30, 0x01, 0x31, 0x01, + 0x1f, 0x01, 0x1e, 0x01, 0xfa, 0x00, 0xfb, 0x00, 0xcb, 0x00, 0xcb, 0x00, + 0x8b, 0x00, 0x8a, 0x00, 0x3a, 0x00, 0x3c, 0x00, 0xdb, 0xff, 0xda, 0xff, + 0x67, 0xff, 0x67, 0xff, 0xe8, 0xfe, 0xe9, 0xfe, 0x59, 0xfe, 0x57, 0xfe, + 0xbc, 0xfd, 0xbe, 0xfd, 0x14, 0xfd, 0x15, 0xfd, 0x60, 0xfc, 0x5f, 0xfc, + 0xa7, 0xfb, 0xa5, 0xfb, 0xe3, 0xfa, 0xe2, 0xfa, 0x1f, 0xfa, 0x1d, 0xfa, + 0x56, 0xf9, 0x58, 0xf9, 0x8e, 0xf8, 0x8e, 0xf8, 0xce, 0xf7, 0xcd, 0xf7, + 0x0a, 0xf7, 0x0b, 0xf7, 0x58, 0xf6, 0x57, 0xf6, 0xa9, 0xf5, 0xaa, 0xf5, + 0x08, 0xf5, 0x06, 0xf5, 0x77, 0xf4, 0x77, 0xf4, 0xf0, 0xf3, 0xf0, 0xf3, + 0x82, 0xf3, 0x81, 0xf3, 0x1e, 0xf3, 0x1e, 0xf3, 0xd1, 0xf2, 0xd2, 0xf2, + 0x99, 0xf2, 0x99, 0xf2, 0x73, 0xf2, 0x74, 0xf2, 0x61, 0xf2, 0x60, 0xf2, + 0x63, 0xf2, 0x61, 0xf2, 0x77, 0xf2, 0x75, 0xf2, 0x9e, 0xf2, 0x9d, 0xf2, + 0xd3, 0xf2, 0xd1, 0xf2, 0x1a, 0xf3, 0x1b, 0xf3, 0x6b, 0xf3, 0x69, 0xf3, + 0xc7, 0xf3, 0xc7, 0xf3, 0x2f, 0xf4, 0x2e, 0xf4, 0x99, 0xf4, 0x99, 0xf4, + 0x0d, 0xf5, 0x0d, 0xf5, 0x7d, 0xf5, 0x7d, 0xf5, 0xf3, 0xf5, 0xf0, 0xf5, + 0x60, 0xf6, 0x5f, 0xf6, 0xcc, 0xf6, 0xcb, 0xf6, 0x30, 0xf7, 0x31, 0xf7, + 0x89, 0xf7, 0x89, 0xf7, 0xdd, 0xf7, 0xdc, 0xf7, 0x1f, 0xf8, 0x20, 0xf8, + 0x5a, 0xf8, 0x59, 0xf8, 0x84, 0xf8, 0x85, 0xf8, 0xa3, 0xf8, 0xa2, 0xf8, + 0xb4, 0xf8, 0xb5, 0xf8, 0xb4, 0xf8, 0xb4, 0xf8, 0xa9, 0xf8, 0xa9, 0xf8, + 0x91, 0xf8, 0x92, 0xf8, 0x6f, 0xf8, 0x6d, 0xf8, 0x3f, 0xf8, 0x41, 0xf8, + 0x0b, 0xf8, 0x0a, 0xf8, 0xcd, 0xf7, 0xcd, 0xf7, 0x8d, 0xf7, 0x8d, 0xf7, + 0x49, 0xf7, 0x49, 0xf7, 0x03, 0xf7, 0x05, 0xf7, 0xc2, 0xf6, 0xc1, 0xf6, + 0x84, 0xf6, 0x84, 0xf6, 0x49, 0xf6, 0x4a, 0xf6, 0x1c, 0xf6, 0x1b, 0xf6, + 0xf5, 0xf5, 0xf6, 0xf5, 0xde, 0xf5, 0xde, 0xf5, 0xd3, 0xf5, 0xd3, 0xf5, + 0xd9, 0xf5, 0xd9, 0xf5, 0xf1, 0xf5, 0xf2, 0xf5, 0x18, 0xf6, 0x1a, 0xf6, + 0x56, 0xf6, 0x56, 0xf6, 0xa3, 0xf6, 0xa4, 0xf6, 0x07, 0xf7, 0x09, 0xf7, + 0x7c, 0xf7, 0x7d, 0xf7, 0x03, 0xf8, 0x07, 0xf8, 0x9f, 0xf8, 0x9e, 0xf8, + 0x47, 0xf9, 0x49, 0xf9, 0x02, 0xfa, 0x04, 0xfa, 0xc5, 0xfa, 0xc7, 0xfa, + 0x98, 0xfb, 0x98, 0xfb, 0x71, 0xfc, 0x74, 0xfc, 0x50, 0xfd, 0x51, 0xfd, + 0x35, 0xfe, 0x36, 0xfe, 0x15, 0xff, 0x18, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xd9, 0x00, 0xda, 0x00, 0xb3, 0x01, 0xb5, 0x01, 0x82, 0x02, 0x83, 0x02, + 0x49, 0x03, 0x4a, 0x03, 0xff, 0x03, 0xfe, 0x03, 0xaa, 0x04, 0xab, 0x04, + 0x44, 0x05, 0x44, 0x05, 0xcc, 0x05, 0xce, 0x05, 0x45, 0x06, 0x44, 0x06, + 0xa5, 0x06, 0xa7, 0x06, 0xfb, 0x06, 0xfb, 0x06, 0x36, 0x07, 0x36, 0x07, + 0x64, 0x07, 0x65, 0x07, 0x80, 0x07, 0x81, 0x07, 0x8b, 0x07, 0x8c, 0x07, + 0x88, 0x07, 0x88, 0x07, 0x78, 0x07, 0x78, 0x07, 0x5c, 0x07, 0x5e, 0x07, + 0x3a, 0x07, 0x38, 0x07, 0x0b, 0x07, 0x0e, 0x07, 0xde, 0x06, 0xde, 0x06, + 0xab, 0x06, 0xab, 0x06, 0x77, 0x06, 0x79, 0x06, 0x49, 0x06, 0x4a, 0x06, + 0x1f, 0x06, 0x20, 0x06, 0xf9, 0x05, 0xfa, 0x05, 0xdf, 0x05, 0xde, 0x05, + 0xce, 0x05, 0xce, 0x05, 0xc8, 0x05, 0xc9, 0x05, 0xd1, 0x05, 0xd0, 0x05, + 0xe8, 0x05, 0xe9, 0x05, 0x0c, 0x06, 0x0b, 0x06, 0x42, 0x06, 0x43, 0x06, + 0x81, 0x06, 0x82, 0x06, 0xd6, 0x06, 0xd3, 0x06, 0x32, 0x07, 0x34, 0x07, + 0x9e, 0x07, 0x9c, 0x07, 0x13, 0x08, 0x14, 0x08, 0x94, 0x08, 0x95, 0x08, + 0x1c, 0x09, 0x1c, 0x09, 0xa8, 0x09, 0xaa, 0x09, 0x39, 0x0a, 0x38, 0x0a, + 0xcd, 0x0a, 0xce, 0x0a, 0x5d, 0x0b, 0x5e, 0x0b, 0xec, 0x0b, 0xeb, 0x0b, + 0x73, 0x0c, 0x74, 0x0c, 0xf2, 0x0c, 0xf3, 0x0c, 0x67, 0x0d, 0x68, 0x0d, + 0xcf, 0x0d, 0xd0, 0x0d, 0x27, 0x0e, 0x27, 0x0e, 0x71, 0x0e, 0x72, 0x0e, + 0xa8, 0x0e, 0xa7, 0x0e, 0xcb, 0x0e, 0xcb, 0x0e, 0xdb, 0x0e, 0xdd, 0x0e, + 0xd5, 0x0e, 0xd6, 0x0e, 0xbb, 0x0e, 0xbb, 0x0e, 0x8a, 0x0e, 0x8b, 0x0e, + 0x45, 0x0e, 0x44, 0x0e, 0xf0, 0x0d, 0xf1, 0x0d, 0x7f, 0x0d, 0x81, 0x0d, + 0x07, 0x0d, 0x07, 0x0d, 0x79, 0x0c, 0x79, 0x0c, 0xdd, 0x0b, 0xdd, 0x0b, + 0x37, 0x0b, 0x38, 0x0b, 0x85, 0x0a, 0x85, 0x0a, 0xce, 0x09, 0xcf, 0x09, + 0x0f, 0x09, 0x10, 0x09, 0x52, 0x08, 0x52, 0x08, 0x94, 0x07, 0x93, 0x07, + 0xd5, 0x06, 0xd8, 0x06, 0x25, 0x06, 0x23, 0x06, 0x71, 0x05, 0x72, 0x05, + 0xcf, 0x04, 0xd0, 0x04, 0x35, 0x04, 0x35, 0x04, 0xa9, 0x03, 0xa9, 0x03, + 0x2d, 0x03, 0x2d, 0x03, 0xbe, 0x02, 0xbc, 0x02, 0x60, 0x02, 0x62, 0x02, + 0x13, 0x02, 0x13, 0x02, 0xd9, 0x01, 0xd7, 0x01, 0xab, 0x01, 0xab, 0x01, + 0x8f, 0x01, 0x8f, 0x01, 0x81, 0x01, 0x80, 0x01, 0x7f, 0x01, 0x80, 0x01, + 0x8c, 0x01, 0x8c, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xbf, 0x01, 0xc0, 0x01, + 0xe1, 0x01, 0xe1, 0x01, 0x08, 0x02, 0x0a, 0x02, 0x32, 0x02, 0x32, 0x02, + 0x59, 0x02, 0x59, 0x02, 0x7d, 0x02, 0x7e, 0x02, 0x9b, 0x02, 0x9c, 0x02, + 0xb1, 0x02, 0xb1, 0x02, 0xbc, 0x02, 0xbf, 0x02, 0xbc, 0x02, 0xba, 0x02, + 0xac, 0x02, 0xae, 0x02, 0x8e, 0x02, 0x8f, 0x02, 0x60, 0x02, 0x5e, 0x02, + 0x20, 0x02, 0x23, 0x02, 0xcd, 0x01, 0xcc, 0x01, 0x69, 0x01, 0x6a, 0x01, + 0xf2, 0x00, 0xf3, 0x00, 0x69, 0x00, 0x69, 0x00, 0xd2, 0xff, 0xd4, 0xff, + 0x28, 0xff, 0x29, 0xff, 0x76, 0xfe, 0x76, 0xfe, 0xb3, 0xfd, 0xb4, 0xfd, + 0xeb, 0xfc, 0xeb, 0xfc, 0x18, 0xfc, 0x17, 0xfc, 0x42, 0xfb, 0x43, 0xfb, + 0x68, 0xfa, 0x67, 0xfa, 0x8f, 0xf9, 0x90, 0xf9, 0xb8, 0xf8, 0xb9, 0xf8, + 0xe8, 0xf7, 0xe9, 0xf7, 0x20, 0xf7, 0x1d, 0xf7, 0x61, 0xf6, 0x64, 0xf6, + 0xb1, 0xf5, 0xaf, 0xf5, 0x0c, 0xf5, 0x0e, 0xf5, 0x7a, 0xf4, 0x7a, 0xf4, + 0xfb, 0xf3, 0xfb, 0xf3, 0x8c, 0xf3, 0x8d, 0xf3, 0x38, 0xf3, 0x37, 0xf3, + 0xee, 0xf2, 0xf0, 0xf2, 0xc1, 0xf2, 0xc4, 0xf2, 0xaa, 0xf2, 0xa9, 0xf2, + 0xa1, 0xf2, 0xa3, 0xf2, 0xb5, 0xf2, 0xb4, 0xf2, 0xd2, 0xf2, 0xd1, 0xf2, + 0x07, 0xf3, 0x08, 0xf3, 0x4a, 0xf3, 0x47, 0xf3, 0x99, 0xf3, 0x99, 0xf3, + 0xf5, 0xf3, 0xf5, 0xf3, 0x58, 0xf4, 0x58, 0xf4, 0xc6, 0xf4, 0xc5, 0xf4, + 0x34, 0xf5, 0x34, 0xf5, 0xa7, 0xf5, 0xa6, 0xf5, 0x15, 0xf6, 0x17, 0xf6, + 0x83, 0xf6, 0x81, 0xf6, 0xeb, 0xf6, 0xeb, 0xf6, 0x49, 0xf7, 0x49, 0xf7, + 0x9d, 0xf7, 0x9f, 0xf7, 0xea, 0xf7, 0xea, 0xf7, 0x27, 0xf8, 0x26, 0xf8, + 0x58, 0xf8, 0x57, 0xf8, 0x76, 0xf8, 0x77, 0xf8, 0x8b, 0xf8, 0x8a, 0xf8, + 0x8c, 0xf8, 0x8b, 0xf8, 0x80, 0xf8, 0x80, 0xf8, 0x65, 0xf8, 0x65, 0xf8, + 0x3b, 0xf8, 0x3c, 0xf8, 0x07, 0xf8, 0x06, 0xf8, 0xc8, 0xf7, 0xc7, 0xf7, + 0x7d, 0xf7, 0x7e, 0xf7, 0x2f, 0xf7, 0x2f, 0xf7, 0xd8, 0xf6, 0xd9, 0xf6, + 0x81, 0xf6, 0x81, 0xf6, 0x27, 0xf6, 0x27, 0xf6, 0xcf, 0xf5, 0xd1, 0xf5, + 0x7f, 0xf5, 0x7f, 0xf5, 0x32, 0xf5, 0x33, 0xf5, 0xf2, 0xf4, 0xf4, 0xf4, + 0xbc, 0xf4, 0xbc, 0xf4, 0x93, 0xf4, 0x94, 0xf4, 0x7e, 0xf4, 0x7d, 0xf4, + 0x72, 0xf4, 0x75, 0xf4, 0x80, 0xf4, 0x80, 0xf4, 0x9e, 0xf4, 0x9e, 0xf4, + 0xd2, 0xf4, 0xd3, 0xf4, 0x1e, 0xf5, 0x1c, 0xf5, 0x79, 0xf5, 0x7b, 0xf5, + 0xf1, 0xf5, 0xed, 0xf5, 0x73, 0xf6, 0x73, 0xf6, 0x10, 0xf7, 0x10, 0xf7, + 0xba, 0xf7, 0xb9, 0xf7, 0x76, 0xf8, 0x78, 0xf8, 0x43, 0xf9, 0x41, 0xf9, + 0x16, 0xfa, 0x17, 0xfa, 0xf6, 0xfa, 0xf6, 0xfa, 0xdd, 0xfb, 0xde, 0xfb, + 0xc8, 0xfc, 0xc6, 0xfc, 0xb5, 0xfd, 0xb7, 0xfd, 0xa1, 0xfe, 0x9f, 0xfe, + 0x89, 0xff, 0x89, 0xff, 0x68, 0x00, 0x69, 0x00, 0x40, 0x01, 0x3f, 0x01, + 0x0d, 0x02, 0x0d, 0x02, 0xca, 0x02, 0xca, 0x02, 0x7d, 0x03, 0x7b, 0x03, + 0x18, 0x04, 0x19, 0x04, 0xa5, 0x04, 0xa4, 0x04, 0x1f, 0x05, 0x1f, 0x05, + 0x85, 0x05, 0x85, 0x05, 0xd7, 0x05, 0xd8, 0x05, 0x16, 0x06, 0x16, 0x06, + 0x41, 0x06, 0x41, 0x06, 0x5b, 0x06, 0x5b, 0x06, 0x65, 0x06, 0x64, 0x06, + 0x5f, 0x06, 0x60, 0x06, 0x4b, 0x06, 0x4a, 0x06, 0x2a, 0x06, 0x2c, 0x06, + 0x03, 0x06, 0x02, 0x06, 0xd1, 0x05, 0xd3, 0x05, 0xa0, 0x05, 0x9e, 0x05, + 0x68, 0x05, 0x6a, 0x05, 0x34, 0x05, 0x34, 0x05, 0x02, 0x05, 0x04, 0x05, + 0xd7, 0x04, 0xd7, 0x04, 0xb1, 0x04, 0xb4, 0x04, 0x99, 0x04, 0x98, 0x04, + 0x89, 0x04, 0x8c, 0x04, 0x8c, 0x04, 0x8b, 0x04, 0x96, 0x04, 0x99, 0x04, + 0xb7, 0x04, 0xb5, 0x04, 0xe4, 0x04, 0xe5, 0x04, 0x24, 0x05, 0x25, 0x05, + 0x73, 0x05, 0x73, 0x05, 0xd1, 0x05, 0xd3, 0x05, 0x3f, 0x06, 0x40, 0x06, + 0xbc, 0x06, 0xbd, 0x06, 0x43, 0x07, 0x46, 0x07, 0xd8, 0x07, 0xd8, 0x07, + 0x73, 0x08, 0x75, 0x08, 0x18, 0x09, 0x1a, 0x09, 0xbd, 0x09, 0xbd, 0x09, + 0x66, 0x0a, 0x68, 0x0a, 0x0c, 0x0b, 0x0e, 0x0b, 0xb1, 0x0b, 0xb1, 0x0b, + 0x4f, 0x0c, 0x50, 0x0c, 0xe2, 0x0c, 0xe5, 0x0c, 0x70, 0x0d, 0x6f, 0x0d, + 0xe8, 0x0d, 0xeb, 0x0d, 0x58, 0x0e, 0x59, 0x0e, 0xb2, 0x0e, 0xb4, 0x0e, + 0xf9, 0x0e, 0xfa, 0x0e, 0x31, 0x0f, 0x32, 0x0f, 0x4b, 0x0f, 0x4b, 0x0f, + 0x55, 0x0f, 0x58, 0x0f, 0x45, 0x0f, 0x43, 0x0f, 0x21, 0x0f, 0x21, 0x0f, + 0xe8, 0x0e, 0xe8, 0x0e, 0x92, 0x0e, 0x92, 0x0e, 0x32, 0x0e, 0x32, 0x0e, + 0xb6, 0x0d, 0xb5, 0x0d, 0x30, 0x0d, 0x30, 0x0d, 0x99, 0x0c, 0x97, 0x0c, + 0xf1, 0x0b, 0xf0, 0x0b, 0x47, 0x0b, 0x47, 0x0b, 0x8b, 0x0a, 0x8a, 0x0a, + 0xd5, 0x09, 0xd4, 0x09, 0x15, 0x09, 0x14, 0x09, 0x57, 0x08, 0x57, 0x08, + 0x9f, 0x07, 0x9e, 0x07, 0xe9, 0x06, 0xe8, 0x06, 0x3e, 0x06, 0x3f, 0x06, + 0x9d, 0x05, 0x9a, 0x05, 0x06, 0x05, 0x07, 0x05, 0x80, 0x04, 0x7d, 0x04, + 0x09, 0x04, 0x09, 0x04, 0xa0, 0x03, 0xa1, 0x03, 0x4d, 0x03, 0x4b, 0x03, + 0x06, 0x03, 0x06, 0x03, 0xd3, 0x02, 0xd3, 0x02, 0xb2, 0x02, 0xb2, 0x02, + 0x9f, 0x02, 0x9e, 0x02, 0x9d, 0x02, 0x9e, 0x02, 0xa9, 0x02, 0xa8, 0x02, + 0xc1, 0x02, 0xbf, 0x02, 0xe4, 0x02, 0xe7, 0x02, 0x0f, 0x03, 0x0e, 0x03, + 0x41, 0x03, 0x42, 0x03, 0x75, 0x03, 0x74, 0x03, 0xac, 0x03, 0xac, 0x03, + 0xdd, 0x03, 0xdf, 0x03, 0x0e, 0x04, 0x0d, 0x04, 0x36, 0x04, 0x37, 0x04, + 0x56, 0x04, 0x57, 0x04, 0x6c, 0x04, 0x6b, 0x04, 0x72, 0x04, 0x72, 0x04, + 0x69, 0x04, 0x68, 0x04, 0x50, 0x04, 0x51, 0x04, 0x21, 0x04, 0x21, 0x04, + 0xe6, 0x03, 0xe7, 0x03, 0x8e, 0x03, 0x90, 0x03, 0x2d, 0x03, 0x2c, 0x03, + 0xaf, 0x02, 0xb1, 0x02, 0x21, 0x02, 0x21, 0x02, 0x83, 0x01, 0x84, 0x01, + 0xd1, 0x00, 0xd1, 0x00, 0x14, 0x00, 0x12, 0x00, 0x45, 0xff, 0x47, 0xff, + 0x6f, 0xfe, 0x6e, 0xfe, 0x90, 0xfd, 0x90, 0xfd, 0xa8, 0xfc, 0xa9, 0xfc, + 0xc3, 0xfb, 0xc3, 0xfb, 0xd8, 0xfa, 0xd9, 0xfa, 0xf4, 0xf9, 0xf5, 0xf9, + 0x15, 0xf9, 0x14, 0xf9, 0x3b, 0xf8, 0x3d, 0xf8, 0x6d, 0xf7, 0x6e, 0xf7, + 0xad, 0xf6, 0xae, 0xf6, 0xfd, 0xf5, 0xfc, 0xf5, 0x5d, 0xf5, 0x5e, 0xf5, + 0xd1, 0xf4, 0xd1, 0xf4, 0x58, 0xf4, 0x59, 0xf4, 0xf6, 0xf3, 0xf6, 0xf3, + 0xa8, 0xf3, 0xa8, 0xf3, 0x70, 0xf3, 0x70, 0xf3, 0x51, 0xf3, 0x52, 0xf3, + 0x44, 0xf3, 0x46, 0xf3, 0x50, 0xf3, 0x50, 0xf3, 0x6b, 0xf3, 0x6d, 0xf3, + 0x9b, 0xf3, 0x9b, 0xf3, 0xdb, 0xf3, 0xdd, 0xf3, 0x26, 0xf4, 0x27, 0xf4, + 0x84, 0xf4, 0x84, 0xf4, 0xe2, 0xf4, 0xe6, 0xf4, 0x50, 0xf5, 0x4d, 0xf5, + 0xbc, 0xf5, 0xbd, 0xf5, 0x28, 0xf6, 0x2a, 0xf6, 0x99, 0xf6, 0x98, 0xf6, + 0x02, 0xf7, 0x04, 0xf7, 0x65, 0xf7, 0x64, 0xf7, 0xbf, 0xf7, 0xc1, 0xf7, + 0x0e, 0xf8, 0x10, 0xf8, 0x52, 0xf8, 0x50, 0xf8, 0x86, 0xf8, 0x89, 0xf8, + 0xab, 0xf8, 0xaa, 0xf8, 0xc2, 0xf8, 0xc3, 0xf8, 0xc6, 0xf8, 0xc8, 0xf8, + 0xbd, 0xf8, 0xbc, 0xf8, 0xa0, 0xf8, 0xa1, 0xf8, 0x75, 0xf8, 0x75, 0xf8, + 0x3c, 0xf8, 0x3d, 0xf8, 0xf4, 0xf7, 0xf6, 0xf7, 0xa2, 0xf7, 0xa2, 0xf7, + 0x46, 0xf7, 0x48, 0xf7, 0xe1, 0xf6, 0xe2, 0xf6, 0x7a, 0xf6, 0x78, 0xf6, + 0x0b, 0xf6, 0x0f, 0xf6, 0x9f, 0xf5, 0x9e, 0xf5, 0x35, 0xf5, 0x35, 0xf5, + 0xce, 0xf4, 0xd1, 0xf4, 0x71, 0xf4, 0x70, 0xf4, 0x1d, 0xf4, 0x1e, 0xf4, + 0xd5, 0xf3, 0xd6, 0xf3, 0x9f, 0xf3, 0x9f, 0xf3, 0x74, 0xf3, 0x76, 0xf3, + 0x62, 0xf3, 0x61, 0xf3, 0x60, 0xf3, 0x61, 0xf3, 0x74, 0xf3, 0x75, 0xf3, + 0xa1, 0xf3, 0x9e, 0xf3, 0xde, 0xf3, 0xe2, 0xf3, 0x37, 0xf4, 0x37, 0xf4, + 0xa6, 0xf4, 0xa7, 0xf4, 0x29, 0xf5, 0x29, 0xf5, 0xc2, 0xf5, 0xc3, 0xf5, + 0x6d, 0xf6, 0x6d, 0xf6, 0x28, 0xf7, 0x2a, 0xf7, 0xf8, 0xf7, 0xf7, 0xf7, + 0xce, 0xf8, 0xce, 0xf8, 0xb1, 0xf9, 0xb3, 0xf9, 0x9d, 0xfa, 0x9c, 0xfa, + 0x8a, 0xfb, 0x8c, 0xfb, 0x7e, 0xfc, 0x7f, 0xfc, 0x6d, 0xfd, 0x6d, 0xfd, + 0x5a, 0xfe, 0x5b, 0xfe, 0x40, 0xff, 0x40, 0xff, 0x1b, 0x00, 0x1d, 0x00, + 0xec, 0x00, 0xee, 0x00, 0xaf, 0x01, 0xae, 0x01, 0x61, 0x02, 0x63, 0x02, + 0x01, 0x03, 0x01, 0x03, 0x8f, 0x03, 0x91, 0x03, 0x0a, 0x04, 0x0b, 0x04, + 0x70, 0x04, 0x70, 0x04, 0xc1, 0x04, 0xc3, 0x04, 0xfd, 0x04, 0xfd, 0x04, + 0x28, 0x05, 0x28, 0x05, 0x3c, 0x05, 0x3e, 0x05, 0x43, 0x05, 0x43, 0x05, + 0x36, 0x05, 0x37, 0x05, 0x1d, 0x05, 0x1d, 0x05, 0xfb, 0x04, 0xfb, 0x04, + 0xc9, 0x04, 0xca, 0x04, 0x95, 0x04, 0x97, 0x04, 0x5c, 0x04, 0x5c, 0x04, + 0x1f, 0x04, 0x21, 0x04, 0xea, 0x03, 0xe9, 0x03, 0xb2, 0x03, 0xb3, 0x03, + 0x84, 0x03, 0x85, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x44, 0x03, 0x44, 0x03, + 0x38, 0x03, 0x3a, 0x03, 0x3b, 0x03, 0x3c, 0x03, 0x4d, 0x03, 0x50, 0x03, + 0x74, 0x03, 0x72, 0x03, 0xa5, 0x03, 0xa9, 0x03, 0xef, 0x03, 0xf0, 0x03, + 0x48, 0x04, 0x49, 0x04, 0xb4, 0x04, 0xb6, 0x04, 0x31, 0x05, 0x32, 0x05, + 0xba, 0x05, 0xbb, 0x05, 0x55, 0x06, 0x58, 0x06, 0xf9, 0x06, 0xf9, 0x06, + 0xa8, 0x07, 0xaa, 0x07, 0x5e, 0x08, 0x5f, 0x08, 0x19, 0x09, 0x19, 0x09, + 0xd5, 0x09, 0xd8, 0x09, 0x91, 0x0a, 0x91, 0x0a, 0x49, 0x0b, 0x4c, 0x0b, + 0xfc, 0x0b, 0xfd, 0x0b, 0xa7, 0x0c, 0xa8, 0x0c, 0x42, 0x0d, 0x44, 0x0d, + 0xd1, 0x0d, 0xd3, 0x0d, 0x52, 0x0e, 0x54, 0x0e, 0xbb, 0x0e, 0xbf, 0x0e, + 0x17, 0x0f, 0x18, 0x0f, 0x56, 0x0f, 0x59, 0x0f, 0x85, 0x0f, 0x87, 0x0f, + 0x95, 0x0f, 0x97, 0x0f, 0x94, 0x0f, 0x96, 0x0f, 0x7a, 0x0f, 0x7b, 0x0f, + 0x44, 0x0f, 0x45, 0x0f, 0xfb, 0x0e, 0x00, 0x0f, 0x9d, 0x0e, 0x9d, 0x0e, + 0x2a, 0x0e, 0x2c, 0x0e, 0xa6, 0x0d, 0xa7, 0x0d, 0x11, 0x0d, 0x11, 0x0d, + 0x6e, 0x0c, 0x70, 0x0c, 0xc2, 0x0b, 0xc4, 0x0b, 0x0d, 0x0b, 0x0d, 0x0b, + 0x52, 0x0a, 0x54, 0x0a, 0x96, 0x09, 0x96, 0x09, 0xd9, 0x08, 0xdb, 0x08, + 0x21, 0x08, 0x22, 0x08, 0x70, 0x07, 0x72, 0x07, 0xc4, 0x06, 0xc6, 0x06, + 0x27, 0x06, 0x28, 0x06, 0x96, 0x05, 0x98, 0x05, 0x13, 0x05, 0x15, 0x05, + 0xa4, 0x04, 0xa4, 0x04, 0x40, 0x04, 0x43, 0x04, 0xf5, 0x03, 0xf4, 0x03, + 0xb8, 0x03, 0xb8, 0x03, 0x8f, 0x03, 0x91, 0x03, 0x79, 0x03, 0x79, 0x03, + 0x70, 0x03, 0x73, 0x03, 0x7c, 0x03, 0x7e, 0x03, 0x95, 0x03, 0x96, 0x03, + 0xb9, 0x03, 0xbc, 0x03, 0xed, 0x03, 0xeb, 0x03, 0x20, 0x04, 0x25, 0x04, + 0x65, 0x04, 0x64, 0x04, 0xa3, 0x04, 0xa7, 0x04, 0xea, 0x04, 0xea, 0x04, + 0x28, 0x05, 0x29, 0x05, 0x64, 0x05, 0x68, 0x05, 0x9c, 0x05, 0x9c, 0x05, + 0xc1, 0x05, 0xc4, 0x05, 0xe5, 0x05, 0xe5, 0x05, 0xf0, 0x05, 0xf3, 0x05, + 0xf2, 0x05, 0xf2, 0x05, 0xdb, 0x05, 0xdf, 0x05, 0xb5, 0x05, 0xb6, 0x05, + 0x78, 0x05, 0x79, 0x05, 0x27, 0x05, 0x29, 0x05, 0xbd, 0x04, 0xbe, 0x04, + 0x40, 0x04, 0x43, 0x04, 0xb1, 0x03, 0xb1, 0x03, 0x09, 0x03, 0x0b, 0x03, + 0x51, 0x02, 0x56, 0x02, 0x8b, 0x01, 0x8a, 0x01, 0xb2, 0x00, 0xb5, 0x00, + 0xcf, 0xff, 0xd2, 0xff, 0xe4, 0xfe, 0xe7, 0xfe, 0xf2, 0xfd, 0xf1, 0xfd, + 0xfa, 0xfc, 0xfd, 0xfc, 0x05, 0xfc, 0x06, 0xfc, 0x0e, 0xfb, 0x11, 0xfb, + 0x22, 0xfa, 0x23, 0xfa, 0x38, 0xf9, 0x3a, 0xf9, 0x5d, 0xf8, 0x5f, 0xf8, + 0x92, 0xf7, 0x93, 0xf7, 0xd1, 0xf6, 0xd2, 0xf6, 0x26, 0xf6, 0x29, 0xf6, + 0x8c, 0xf5, 0x8d, 0xf5, 0x0b, 0xf5, 0x0d, 0xf5, 0x9d, 0xf4, 0xa0, 0xf4, + 0x48, 0xf4, 0x49, 0xf4, 0x0a, 0xf4, 0x0c, 0xf4, 0xe2, 0xf3, 0xe4, 0xf3, + 0xd3, 0xf3, 0xd4, 0xf3, 0xd8, 0xf3, 0xda, 0xf3, 0xf0, 0xf3, 0xf3, 0xf3, + 0x22, 0xf4, 0x20, 0xf4, 0x5b, 0xf4, 0x5e, 0xf4, 0xaa, 0xf4, 0xa9, 0xf4, + 0x00, 0xf5, 0x04, 0xf5, 0x62, 0xf5, 0x63, 0xf5, 0xcb, 0xf5, 0xcd, 0xf5, + 0x39, 0xf6, 0x3a, 0xf6, 0xa6, 0xf6, 0xa7, 0xf6, 0x13, 0xf7, 0x15, 0xf7, + 0x78, 0xf7, 0x7a, 0xf7, 0xd9, 0xf7, 0xda, 0xf7, 0x30, 0xf8, 0x32, 0xf8, + 0x7a, 0xf8, 0x79, 0xf8, 0xb5, 0xf8, 0xb8, 0xf8, 0xe4, 0xf8, 0xe4, 0xf8, + 0xff, 0xf8, 0x02, 0xf9, 0x0c, 0xf9, 0x0b, 0xf9, 0x04, 0xf9, 0x08, 0xf9, + 0xec, 0xf8, 0xea, 0xf8, 0xc1, 0xf8, 0xc4, 0xf8, 0x88, 0xf8, 0x89, 0xf8, + 0x3a, 0xf8, 0x3a, 0xf8, 0xe5, 0xf7, 0xe8, 0xf7, 0x7c, 0xf7, 0x7a, 0xf7, + 0x0d, 0xf7, 0x10, 0xf7, 0x95, 0xf6, 0x94, 0xf6, 0x16, 0xf6, 0x19, 0xf6, + 0x96, 0xf5, 0x95, 0xf5, 0x12, 0xf5, 0x13, 0xf5, 0x95, 0xf4, 0x95, 0xf4, + 0x19, 0xf4, 0x1b, 0xf4, 0xa8, 0xf3, 0xa8, 0xf3, 0x40, 0xf3, 0x44, 0xf3, + 0xe8, 0xf2, 0xe9, 0xf2, 0x9e, 0xf2, 0x9e, 0xf2, 0x67, 0xf2, 0x6a, 0xf2, + 0x42, 0xf2, 0x42, 0xf2, 0x35, 0xf2, 0x34, 0xf2, 0x3d, 0xf2, 0x3e, 0xf2, + 0x5b, 0xf2, 0x5c, 0xf2, 0x94, 0xf2, 0x97, 0xf2, 0xe4, 0xf2, 0xe5, 0xf2, + 0x4e, 0xf3, 0x4f, 0xf3, 0xcd, 0xf3, 0xcf, 0xf3, 0x63, 0xf4, 0x64, 0xf4, + 0x0f, 0xf5, 0x10, 0xf5, 0xcb, 0xf5, 0xca, 0xf5, 0x98, 0xf6, 0x9a, 0xf6, + 0x74, 0xf7, 0x72, 0xf7, 0x59, 0xf8, 0x5d, 0xf8, 0x4b, 0xf9, 0x4b, 0xf9, + 0x3d, 0xfa, 0x3e, 0xfa, 0x36, 0xfb, 0x36, 0xfb, 0x29, 0xfc, 0x2b, 0xfc, + 0x1c, 0xfd, 0x1c, 0xfd, 0x09, 0xfe, 0x09, 0xfe, 0xe5, 0xfe, 0xe4, 0xfe, + 0xbd, 0xff, 0xbf, 0xff, 0x7f, 0x00, 0x81, 0x00, 0x37, 0x01, 0x37, 0x01, + 0xda, 0x01, 0xdc, 0x01, 0x66, 0x02, 0x66, 0x02, 0xe1, 0x02, 0xe4, 0x02, + 0x46, 0x03, 0x45, 0x03, 0x95, 0x03, 0x98, 0x03, 0xcf, 0x03, 0xd0, 0x03, + 0xf4, 0x03, 0xf6, 0x03, 0x06, 0x04, 0x05, 0x04, 0x06, 0x04, 0x07, 0x04, + 0xf5, 0x03, 0xf5, 0x03, 0xd6, 0x03, 0xd7, 0x03, 0xa9, 0x03, 0xac, 0x03, + 0x77, 0x03, 0x79, 0x03, 0x39, 0x03, 0x3b, 0x03, 0xf9, 0x02, 0xfc, 0x02, + 0xb9, 0x02, 0xbb, 0x02, 0x79, 0x02, 0x7c, 0x02, 0x40, 0x02, 0x42, 0x02, + 0x0e, 0x02, 0x0e, 0x02, 0xe3, 0x01, 0xe8, 0x01, 0xcd, 0x01, 0xcc, 0x01, + 0xbd, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0xc3, 0x01, 0xd8, 0x01, 0xd9, 0x01, + 0x00, 0x02, 0x02, 0x02, 0x3d, 0x02, 0x3e, 0x02, 0x8e, 0x02, 0x8e, 0x02, + 0xf1, 0x02, 0xf4, 0x02, 0x6a, 0x03, 0x69, 0x03, 0xf4, 0x03, 0xf5, 0x03, + 0x8d, 0x04, 0x90, 0x04, 0x37, 0x05, 0x39, 0x05, 0xef, 0x05, 0xef, 0x05, + 0xaf, 0x06, 0xb2, 0x06, 0x7d, 0x07, 0x7e, 0x07, 0x49, 0x08, 0x4b, 0x08, + 0x20, 0x09, 0x1e, 0x09, 0xec, 0x09, 0xf0, 0x09, 0xbc, 0x0a, 0xbb, 0x0a, + 0x85, 0x0b, 0x88, 0x0b, 0x41, 0x0c, 0x41, 0x0c, 0xf4, 0x0c, 0xf5, 0x0c, + 0x97, 0x0d, 0x98, 0x0d, 0x29, 0x0e, 0x2b, 0x0e, 0xa6, 0x0e, 0xa8, 0x0e, + 0x10, 0x0f, 0x12, 0x0f, 0x65, 0x0f, 0x65, 0x0f, 0x9d, 0x0f, 0x9f, 0x0f, + 0xbf, 0x0f, 0xc1, 0x0f, 0xc6, 0x0f, 0xc7, 0x0f, 0xb5, 0x0f, 0xb8, 0x0f, + 0x8c, 0x0f, 0x8e, 0x0f, 0x4a, 0x0f, 0x4b, 0x0f, 0xf3, 0x0e, 0xf5, 0x0e, + 0x82, 0x0e, 0x85, 0x0e, 0x06, 0x0e, 0x06, 0x0e, 0x71, 0x0d, 0x73, 0x0d, + 0xd6, 0x0c, 0xd5, 0x0c, 0x28, 0x0c, 0x2a, 0x0c, 0x74, 0x0b, 0x76, 0x0b, + 0xbd, 0x0a, 0xbf, 0x0a, 0x02, 0x0a, 0x01, 0x0a, 0x48, 0x09, 0x4b, 0x09, + 0x94, 0x08, 0x93, 0x08, 0xe3, 0x07, 0xe5, 0x07, 0x3f, 0x07, 0x41, 0x07, + 0xa2, 0x06, 0xa2, 0x06, 0x1a, 0x06, 0x1c, 0x06, 0x9b, 0x05, 0x9c, 0x05, + 0x33, 0x05, 0x34, 0x05, 0xd8, 0x04, 0xda, 0x04, 0x96, 0x04, 0x97, 0x04, + 0x64, 0x04, 0x68, 0x04, 0x48, 0x04, 0x47, 0x04, 0x3e, 0x04, 0x40, 0x04, + 0x45, 0x04, 0x47, 0x04, 0x5e, 0x04, 0x60, 0x04, 0x85, 0x04, 0x86, 0x04, + 0xbb, 0x04, 0xbc, 0x04, 0xfd, 0x04, 0xff, 0x04, 0x44, 0x05, 0x43, 0x05, + 0x96, 0x05, 0x98, 0x05, 0xe8, 0x05, 0xe9, 0x05, 0x3a, 0x06, 0x3b, 0x06, + 0x8d, 0x06, 0x8c, 0x06, 0xd6, 0x06, 0xd7, 0x06, 0x19, 0x07, 0x1a, 0x07, + 0x51, 0x07, 0x52, 0x07, 0x7a, 0x07, 0x7a, 0x07, 0x94, 0x07, 0x95, 0x07, + 0x9b, 0x07, 0x9b, 0x07, 0x8f, 0x07, 0x8f, 0x07, 0x6d, 0x07, 0x6d, 0x07, + 0x34, 0x07, 0x35, 0x07, 0xe3, 0x06, 0xe4, 0x06, 0x7d, 0x06, 0x7c, 0x06, + 0xff, 0x05, 0x00, 0x06, 0x6b, 0x05, 0x6a, 0x05, 0xc2, 0x04, 0xc1, 0x04, + 0x02, 0x04, 0x03, 0x04, 0x34, 0x03, 0x34, 0x03, 0x56, 0x02, 0x55, 0x02, + 0x66, 0x01, 0x67, 0x01, 0x72, 0x00, 0x72, 0x00, 0x71, 0xff, 0x72, 0xff, + 0x6f, 0xfe, 0x71, 0xfe, 0x6e, 0xfd, 0x6c, 0xfd, 0x69, 0xfc, 0x6b, 0xfc, + 0x6f, 0xfb, 0x71, 0xfb, 0x7c, 0xfa, 0x7b, 0xfa, 0x94, 0xf9, 0x97, 0xf9, + 0xb8, 0xf8, 0xba, 0xf8, 0xf1, 0xf7, 0xf0, 0xf7, 0x38, 0xf7, 0x3b, 0xf7, + 0x99, 0xf6, 0x9a, 0xf6, 0x0b, 0xf6, 0x0a, 0xf6, 0x97, 0xf5, 0x9a, 0xf5, + 0x3b, 0xf5, 0x3a, 0xf5, 0xf8, 0xf4, 0xfa, 0xf4, 0xce, 0xf4, 0xcd, 0xf4, + 0xb7, 0xf4, 0xb7, 0xf4, 0xbb, 0xf4, 0xbc, 0xf4, 0xd4, 0xf4, 0xd4, 0xf4, + 0xfd, 0xf4, 0xfe, 0xf4, 0x3b, 0xf5, 0x3c, 0xf5, 0x87, 0xf5, 0x88, 0xf5, + 0xdd, 0xf5, 0xdf, 0xf5, 0x41, 0xf6, 0x42, 0xf6, 0xa9, 0xf6, 0xaa, 0xf6, + 0x15, 0xf7, 0x16, 0xf7, 0x81, 0xf7, 0x82, 0xf7, 0xec, 0xf7, 0xed, 0xf7, + 0x50, 0xf8, 0x52, 0xf8, 0xac, 0xf8, 0xad, 0xf8, 0xfe, 0xf8, 0xff, 0xf8, + 0x42, 0xf9, 0x44, 0xf9, 0x78, 0xf9, 0x78, 0xf9, 0x9c, 0xf9, 0x9f, 0xf9, + 0xae, 0xf9, 0xaf, 0xf9, 0xae, 0xf9, 0xb0, 0xf9, 0x9a, 0xf9, 0x9b, 0xf9, + 0x75, 0xf9, 0x76, 0xf9, 0x3a, 0xf9, 0x3c, 0xf9, 0xef, 0xf8, 0xf0, 0xf8, + 0x92, 0xf8, 0x93, 0xf8, 0x26, 0xf8, 0x27, 0xf8, 0xae, 0xf7, 0xaf, 0xf7, + 0x27, 0xf7, 0x2b, 0xf7, 0x9d, 0xf6, 0x9c, 0xf6, 0x08, 0xf6, 0x0c, 0xf6, + 0x72, 0xf5, 0x72, 0xf5, 0xdc, 0xf4, 0xe0, 0xf4, 0x46, 0xf4, 0x47, 0xf4, + 0xb7, 0xf3, 0xb9, 0xf3, 0x33, 0xf3, 0x34, 0xf3, 0xb8, 0xf2, 0xba, 0xf2, + 0x4b, 0xf2, 0x4e, 0xf2, 0xf3, 0xf1, 0xf2, 0xf1, 0xa9, 0xf1, 0xab, 0xf1, + 0x77, 0xf1, 0x78, 0xf1, 0x5a, 0xf1, 0x5d, 0xf1, 0x58, 0xf1, 0x59, 0xf1, + 0x6a, 0xf1, 0x6c, 0xf1, 0x9d, 0xf1, 0x9c, 0xf1, 0xe3, 0xf1, 0xe6, 0xf1, + 0x47, 0xf2, 0x47, 0xf2, 0xc0, 0xf2, 0xc3, 0xf2, 0x54, 0xf3, 0x53, 0xf3, + 0xfb, 0xf3, 0xfd, 0xf3, 0xb8, 0xf4, 0xb8, 0xf4, 0x85, 0xf5, 0x84, 0xf5, + 0x61, 0xf6, 0x63, 0xf6, 0x46, 0xf7, 0x47, 0xf7, 0x39, 0xf8, 0x39, 0xf8, + 0x2e, 0xf9, 0x30, 0xf9, 0x28, 0xfa, 0x28, 0xfa, 0x20, 0xfb, 0x1f, 0xfb, + 0x12, 0xfc, 0x13, 0xfc, 0xff, 0xfc, 0x00, 0xfd, 0xe1, 0xfd, 0xe2, 0xfd, + 0xb8, 0xfe, 0xb9, 0xfe, 0x7c, 0xff, 0x7d, 0xff, 0x32, 0x00, 0x33, 0x00, + 0xd3, 0x00, 0xd3, 0x00, 0x5e, 0x01, 0x60, 0x01, 0xd7, 0x01, 0xd6, 0x01, + 0x35, 0x02, 0x36, 0x02, 0x82, 0x02, 0x81, 0x02, 0xb3, 0x02, 0xb4, 0x02, + 0xd6, 0x02, 0xd5, 0x02, 0xdd, 0x02, 0xde, 0x02, 0xd7, 0x02, 0xd7, 0x02, + 0xc0, 0x02, 0xbf, 0x02, 0x95, 0x02, 0x96, 0x02, 0x65, 0x02, 0x65, 0x02, + 0x24, 0x02, 0x25, 0x02, 0xe4, 0x01, 0xe5, 0x01, 0x9c, 0x01, 0x9a, 0x01, + 0x54, 0x01, 0x56, 0x01, 0x11, 0x01, 0x11, 0x01, 0xd0, 0x00, 0xcf, 0x00, + 0x9a, 0x00, 0x9a, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x4f, 0x00, 0x50, 0x00, + 0x40, 0x00, 0x40, 0x00, 0x46, 0x00, 0x47, 0x00, 0x5e, 0x00, 0x5f, 0x00, + 0x8a, 0x00, 0x8a, 0x00, 0xcf, 0x00, 0xcd, 0x00, 0x25, 0x01, 0x29, 0x01, + 0x95, 0x01, 0x93, 0x01, 0x15, 0x02, 0x15, 0x02, 0xab, 0x02, 0xab, 0x02, + 0x54, 0x03, 0x52, 0x03, 0x0c, 0x04, 0x0f, 0x04, 0xd4, 0x04, 0xd0, 0x04, + 0xa5, 0x05, 0xa7, 0x05, 0x7f, 0x06, 0x80, 0x06, 0x62, 0x07, 0x62, 0x07, + 0x47, 0x08, 0x47, 0x08, 0x28, 0x09, 0x2b, 0x09, 0x0c, 0x0a, 0x0b, 0x0a, + 0xe5, 0x0a, 0xe7, 0x0a, 0xb7, 0x0b, 0xb6, 0x0b, 0x7a, 0x0c, 0x7b, 0x0c, + 0x2c, 0x0d, 0x2c, 0x0d, 0xd3, 0x0d, 0xd1, 0x0d, 0x5e, 0x0e, 0x5f, 0x0e, + 0xd7, 0x0e, 0xd7, 0x0e, 0x35, 0x0f, 0x33, 0x0f, 0x7b, 0x0f, 0x7e, 0x0f, + 0xaa, 0x0f, 0xa6, 0x0f, 0xb9, 0x0f, 0xbb, 0x0f, 0xb4, 0x0f, 0xb4, 0x0f, + 0x8f, 0x0f, 0x90, 0x0f, 0x55, 0x0f, 0x56, 0x0f, 0x03, 0x0f, 0x04, 0x0f, + 0x9b, 0x0e, 0x9a, 0x0e, 0x1e, 0x0e, 0x20, 0x0e, 0x8f, 0x0d, 0x90, 0x0d, + 0xf6, 0x0c, 0xf7, 0x0c, 0x4d, 0x0c, 0x4d, 0x0c, 0x9f, 0x0b, 0xa1, 0x0b, + 0xe8, 0x0a, 0xe8, 0x0a, 0x31, 0x0a, 0x34, 0x0a, 0x7c, 0x09, 0x7b, 0x09, + 0xc6, 0x08, 0xca, 0x08, 0x1f, 0x08, 0x1f, 0x08, 0x7d, 0x07, 0x7c, 0x07, + 0xec, 0x06, 0xec, 0x06, 0x65, 0x06, 0x65, 0x06, 0xef, 0x05, 0xf1, 0x05, + 0x91, 0x05, 0x91, 0x05, 0x40, 0x05, 0x41, 0x05, 0x09, 0x05, 0x0a, 0x05, + 0xe1, 0x04, 0xe2, 0x04, 0xd2, 0x04, 0xd3, 0x04, 0xd5, 0x04, 0xd6, 0x04, + 0xea, 0x04, 0xeb, 0x04, 0x10, 0x05, 0x12, 0x05, 0x4b, 0x05, 0x4b, 0x05, + 0x8d, 0x05, 0x8e, 0x05, 0xde, 0x05, 0xde, 0x05, 0x35, 0x06, 0x38, 0x06, + 0x96, 0x06, 0x96, 0x06, 0xf8, 0x06, 0xf9, 0x06, 0x59, 0x07, 0x59, 0x07, + 0xb7, 0x07, 0xb8, 0x07, 0x10, 0x08, 0x11, 0x08, 0x60, 0x08, 0x60, 0x08, + 0xa3, 0x08, 0xa2, 0x08, 0xd8, 0x08, 0xd9, 0x08, 0xfd, 0x08, 0xfa, 0x08, + 0x0a, 0x09, 0x0d, 0x09, 0x06, 0x09, 0x05, 0x09, 0xe6, 0x08, 0xe8, 0x08, + 0xb5, 0x08, 0xb4, 0x08, 0x66, 0x08, 0x67, 0x08, 0xff, 0x07, 0x00, 0x08, + 0x83, 0x07, 0x81, 0x07, 0xec, 0x06, 0xec, 0x06, 0x3e, 0x06, 0x3e, 0x06, + 0x7a, 0x05, 0x7a, 0x05, 0xa9, 0x04, 0xa7, 0x04, 0xbe, 0x03, 0xbf, 0x03, + 0xcd, 0x02, 0xcc, 0x02, 0xcb, 0x01, 0xcb, 0x01, 0xc4, 0x00, 0xc4, 0x00, + 0xb9, 0xff, 0xb9, 0xff, 0xa8, 0xfe, 0xa8, 0xfe, 0x9f, 0xfd, 0x9e, 0xfd, + 0x98, 0xfc, 0x96, 0xfc, 0x99, 0xfb, 0x9a, 0xfb, 0xaa, 0xfa, 0xa8, 0xfa, + 0xc2, 0xf9, 0xc3, 0xf9, 0xf3, 0xf8, 0xf3, 0xf8, 0x32, 0xf8, 0x31, 0xf8, + 0x89, 0xf7, 0x89, 0xf7, 0xf8, 0xf6, 0xf5, 0xf6, 0x7c, 0xf6, 0x7d, 0xf6, + 0x1c, 0xf6, 0x1b, 0xf6, 0xd4, 0xf5, 0xd3, 0xf5, 0xa5, 0xf5, 0xa4, 0xf5, + 0x8f, 0xf5, 0x8e, 0xf5, 0x8e, 0xf5, 0x8e, 0xf5, 0xa7, 0xf5, 0xa7, 0xf5, + 0xd1, 0xf5, 0xd0, 0xf5, 0x0e, 0xf6, 0x0e, 0xf6, 0x5b, 0xf6, 0x5a, 0xf6, + 0xb2, 0xf6, 0xb0, 0xf6, 0x14, 0xf7, 0x16, 0xf7, 0x7c, 0xf7, 0x7c, 0xf7, + 0xe9, 0xf7, 0xea, 0xf7, 0x53, 0xf8, 0x53, 0xf8, 0xbd, 0xf8, 0xbc, 0xf8, + 0x1e, 0xf9, 0x20, 0xf9, 0x77, 0xf9, 0x75, 0xf9, 0xc4, 0xf9, 0xc5, 0xf9, + 0x03, 0xfa, 0x02, 0xfa, 0x31, 0xfa, 0x30, 0xfa, 0x4e, 0xfa, 0x4d, 0xfa, + 0x55, 0xfa, 0x54, 0xfa, 0x4c, 0xfa, 0x4c, 0xfa, 0x2a, 0xfa, 0x29, 0xfa, + 0xf6, 0xf9, 0xf4, 0xf9, 0xab, 0xf9, 0xac, 0xf9, 0x51, 0xf9, 0x4f, 0xf9, + 0xe2, 0xf8, 0xe3, 0xf8, 0x64, 0xf8, 0x64, 0xf8, 0xd5, 0xf7, 0xd5, 0xf7, + 0x3e, 0xf7, 0x3d, 0xf7, 0x9b, 0xf6, 0x9d, 0xf6, 0xf4, 0xf5, 0xf3, 0xf5, + 0x49, 0xf5, 0x48, 0xf5, 0x9c, 0xf4, 0x9c, 0xf4, 0xf3, 0xf3, 0xf3, 0xf3, + 0x51, 0xf3, 0x51, 0xf3, 0xb5, 0xf2, 0xb7, 0xf2, 0x29, 0xf2, 0x29, 0xf2, + 0xab, 0xf1, 0xab, 0xf1, 0x3d, 0xf1, 0x3f, 0xf1, 0xe7, 0xf0, 0xe6, 0xf0, + 0xa4, 0xf0, 0xa5, 0xf0, 0x7b, 0xf0, 0x7b, 0xf0, 0x6b, 0xf0, 0x6b, 0xf0, + 0x75, 0xf0, 0x76, 0xf0, 0x9b, 0xf0, 0x9b, 0xf0, 0xdd, 0xf0, 0xdd, 0xf0, + 0x38, 0xf1, 0x37, 0xf1, 0xac, 0xf1, 0xae, 0xf1, 0x3c, 0xf2, 0x3b, 0xf2, + 0xe1, 0xf2, 0xe2, 0xf2, 0x9a, 0xf3, 0x9a, 0xf3, 0x69, 0xf4, 0x68, 0xf4, + 0x43, 0xf5, 0x43, 0xf5, 0x2d, 0xf6, 0x2e, 0xf6, 0x1f, 0xf7, 0x1e, 0xf7, + 0x14, 0xf8, 0x15, 0xf8, 0x12, 0xf9, 0x11, 0xf9, 0x09, 0xfa, 0x08, 0xfa, + 0xff, 0xfa, 0xff, 0xfa, 0xeb, 0xfb, 0xea, 0xfb, 0xcd, 0xfc, 0xce, 0xfc, + 0xa4, 0xfd, 0xa3, 0xfd, 0x69, 0xfe, 0x6a, 0xfe, 0x1c, 0xff, 0x1c, 0xff, + 0xbc, 0xff, 0xbb, 0xff, 0x44, 0x00, 0x44, 0x00, 0xb8, 0x00, 0xb9, 0x00, + 0x15, 0x01, 0x12, 0x01, 0x56, 0x01, 0x58, 0x01, 0x89, 0x01, 0x88, 0x01, + 0x9d, 0x01, 0x9d, 0x01, 0xa6, 0x01, 0xa6, 0x01, 0x91, 0x01, 0x92, 0x01, + 0x72, 0x01, 0x71, 0x01, 0x43, 0x01, 0x42, 0x01, 0x03, 0x01, 0x04, 0x01, + 0xc3, 0x00, 0xc2, 0x00, 0x72, 0x00, 0x74, 0x00, 0x24, 0x00, 0x23, 0x00, + 0xd6, 0xff, 0xd6, 0xff, 0x89, 0xff, 0x87, 0xff, 0x44, 0xff, 0x46, 0xff, + 0x09, 0xff, 0x06, 0xff, 0xd7, 0xfe, 0xd8, 0xfe, 0xb7, 0xfe, 0xb6, 0xfe, + 0xa7, 0xfe, 0xa7, 0xfe, 0xab, 0xfe, 0xad, 0xfe, 0xc6, 0xfe, 0xc5, 0xfe, + 0xf5, 0xfe, 0xf5, 0xfe, 0x3e, 0xff, 0x3d, 0xff, 0x9b, 0xff, 0x9a, 0xff, + 0x13, 0x00, 0x14, 0x00, 0x9e, 0x00, 0x9d, 0x00, 0x41, 0x01, 0x41, 0x01, + 0xf4, 0x01, 0xf4, 0x01, 0xbc, 0x02, 0xbc, 0x02, 0x92, 0x03, 0x91, 0x03, + 0x75, 0x04, 0x75, 0x04, 0x64, 0x05, 0x63, 0x05, 0x54, 0x06, 0x54, 0x06, + 0x4c, 0x07, 0x4d, 0x07, 0x43, 0x08, 0x43, 0x08, 0x37, 0x09, 0x34, 0x09, + 0x23, 0x0a, 0x25, 0x0a, 0x06, 0x0b, 0x04, 0x0b, 0xde, 0x0b, 0xde, 0x0b, + 0xa2, 0x0c, 0xa1, 0x0c, 0x56, 0x0d, 0x54, 0x0d, 0xf2, 0x0d, 0xf3, 0x0d, + 0x78, 0x0e, 0x77, 0x0e, 0xe8, 0x0e, 0xe7, 0x0e, 0x38, 0x0f, 0x38, 0x0f, + 0x72, 0x0f, 0x70, 0x0f, 0x8e, 0x0f, 0x8e, 0x0f, 0x8e, 0x0f, 0x8c, 0x0f, + 0x74, 0x0f, 0x74, 0x0f, 0x3e, 0x0f, 0x3f, 0x0f, 0xf5, 0x0e, 0xf2, 0x0e, + 0x8f, 0x0e, 0x8f, 0x0e, 0x19, 0x0e, 0x17, 0x0e, 0x8f, 0x0d, 0x8d, 0x0d, + 0xf6, 0x0c, 0xf6, 0x0c, 0x52, 0x0c, 0x50, 0x0c, 0xa4, 0x0b, 0xa5, 0x0b, + 0xf4, 0x0a, 0xf1, 0x0a, 0x3d, 0x0a, 0x3d, 0x0a, 0x8c, 0x09, 0x8c, 0x09, + 0xdd, 0x08, 0xdc, 0x08, 0x37, 0x08, 0x38, 0x08, 0x9d, 0x07, 0x9c, 0x07, + 0x0f, 0x07, 0x10, 0x07, 0x95, 0x06, 0x94, 0x06, 0x27, 0x06, 0x27, 0x06, + 0xd1, 0x05, 0xd1, 0x05, 0x8e, 0x05, 0x8d, 0x05, 0x60, 0x05, 0x60, 0x05, + 0x48, 0x05, 0x48, 0x05, 0x46, 0x05, 0x44, 0x05, 0x58, 0x05, 0x59, 0x05, + 0x7e, 0x05, 0x7e, 0x05, 0xb7, 0x05, 0xb6, 0x05, 0x01, 0x06, 0x00, 0x06, + 0x56, 0x06, 0x56, 0x06, 0xb8, 0x06, 0xb9, 0x06, 0x24, 0x07, 0x23, 0x07, + 0x94, 0x07, 0x95, 0x07, 0x0b, 0x08, 0x08, 0x08, 0x7b, 0x08, 0x7c, 0x08, + 0xed, 0x08, 0xed, 0x08, 0x57, 0x09, 0x55, 0x09, 0xb3, 0x09, 0xb4, 0x09, + 0x06, 0x0a, 0x06, 0x0a, 0x47, 0x0a, 0x48, 0x0a, 0x77, 0x0a, 0x77, 0x0a, + 0x93, 0x0a, 0x92, 0x0a, 0x91, 0x0a, 0x92, 0x0a, 0x81, 0x0a, 0x81, 0x0a, + 0x4d, 0x0a, 0x4e, 0x0a, 0x08, 0x0a, 0x08, 0x0a, 0xa3, 0x09, 0xa3, 0x09, + 0x25, 0x09, 0x25, 0x09, 0x8f, 0x08, 0x8f, 0x08, 0xdd, 0x07, 0xdd, 0x07, + 0x1a, 0x07, 0x19, 0x07, 0x3d, 0x06, 0x3d, 0x06, 0x53, 0x05, 0x51, 0x05, + 0x55, 0x04, 0x58, 0x04, 0x4c, 0x03, 0x4a, 0x03, 0x40, 0x02, 0x40, 0x02, + 0x28, 0x01, 0x27, 0x01, 0x12, 0x00, 0x11, 0x00, 0xfd, 0xfe, 0xfc, 0xfe, + 0xec, 0xfd, 0xec, 0xfd, 0xe9, 0xfc, 0xe7, 0xfc, 0xeb, 0xfb, 0xeb, 0xfb, + 0x01, 0xfb, 0x00, 0xfb, 0x26, 0xfa, 0x25, 0xfa, 0x61, 0xf9, 0x62, 0xf9, + 0xb3, 0xf8, 0xb0, 0xf8, 0x1c, 0xf8, 0x1b, 0xf8, 0x9e, 0xf7, 0x9d, 0xf7, + 0x39, 0xf7, 0x39, 0xf7, 0xee, 0xf6, 0xf0, 0xf6, 0xbf, 0xf6, 0xbe, 0xf6, + 0xa7, 0xf6, 0xa9, 0xf6, 0xa9, 0xf6, 0xa8, 0xf6, 0xc1, 0xf6, 0xc1, 0xf6, + 0xeb, 0xf6, 0xeb, 0xf6, 0x2b, 0xf7, 0x2a, 0xf7, 0x77, 0xf7, 0x77, 0xf7, + 0xd2, 0xf7, 0xd3, 0xf7, 0x37, 0xf8, 0x36, 0xf8, 0x9f, 0xf8, 0xa1, 0xf8, + 0x0d, 0xf9, 0x0c, 0xf9, 0x78, 0xf9, 0x79, 0xf9, 0xde, 0xf9, 0xdf, 0xf9, + 0x42, 0xfa, 0x41, 0xfa, 0x95, 0xfa, 0x96, 0xfa, 0xde, 0xfa, 0xde, 0xfa, + 0x18, 0xfb, 0x1a, 0xfb, 0x3d, 0xfb, 0x3d, 0xfb, 0x55, 0xfb, 0x55, 0xfb, + 0x52, 0xfb, 0x50, 0xfb, 0x3a, 0xfb, 0x3a, 0xfb, 0x10, 0xfb, 0x10, 0xfb, + 0xca, 0xfa, 0xca, 0xfa, 0x74, 0xfa, 0x76, 0xfa, 0x08, 0xfa, 0x07, 0xfa, + 0x86, 0xf9, 0x86, 0xf9, 0xf7, 0xf8, 0xf8, 0xf8, 0x54, 0xf8, 0x54, 0xf8, + 0xab, 0xf7, 0xab, 0xf7, 0xf3, 0xf6, 0xf4, 0xf6, 0x35, 0xf6, 0x35, 0xf6, + 0x76, 0xf5, 0x76, 0xf5, 0xb6, 0xf4, 0xb5, 0xf4, 0xf8, 0xf3, 0xf9, 0xf3, + 0x41, 0xf3, 0x40, 0xf3, 0x95, 0xf2, 0x94, 0xf2, 0xf3, 0xf1, 0xf4, 0xf1, + 0x65, 0xf1, 0x64, 0xf1, 0xe8, 0xf0, 0xe7, 0xf0, 0x7f, 0xf0, 0x7f, 0xf0, + 0x2f, 0xf0, 0x2d, 0xf0, 0xf9, 0xef, 0xfa, 0xef, 0xdc, 0xef, 0xdb, 0xef, + 0xdc, 0xef, 0xdc, 0xef, 0xf7, 0xef, 0xf8, 0xef, 0x30, 0xf0, 0x2f, 0xf0, + 0x86, 0xf0, 0x86, 0xf0, 0xf6, 0xf0, 0xf5, 0xf0, 0x7f, 0xf1, 0x7f, 0xf1, + 0x20, 0xf2, 0x1f, 0xf2, 0xd6, 0xf2, 0xd6, 0xf2, 0xa2, 0xf3, 0xa2, 0xf3, + 0x7a, 0xf4, 0x7a, 0xf4, 0x63, 0xf5, 0x63, 0xf5, 0x53, 0xf6, 0x52, 0xf6, + 0x4a, 0xf7, 0x4a, 0xf7, 0x43, 0xf8, 0x43, 0xf8, 0x3a, 0xf9, 0x3a, 0xf9, + 0x2e, 0xfa, 0x2e, 0xfa, 0x19, 0xfb, 0x19, 0xfb, 0xf8, 0xfb, 0xf9, 0xfb, + 0xcc, 0xfc, 0xcc, 0xfc, 0x8c, 0xfd, 0x8d, 0xfd, 0x3d, 0xfe, 0x3b, 0xfe, + 0xd3, 0xfe, 0xd5, 0xfe, 0x59, 0xff, 0x59, 0xff, 0xc4, 0xff, 0xc5, 0xff, + 0x17, 0x00, 0x19, 0x00, 0x55, 0x00, 0x54, 0x00, 0x7a, 0x00, 0x7c, 0x00, + 0x89, 0x00, 0x87, 0x00, 0x80, 0x00, 0x82, 0x00, 0x67, 0x00, 0x67, 0x00, + 0x3b, 0x00, 0x3b, 0x00, 0x02, 0x00, 0x02, 0x00, 0xb9, 0xff, 0xb9, 0xff, + 0x69, 0xff, 0x6a, 0xff, 0x15, 0xff, 0x15, 0xff, 0xbc, 0xfe, 0xbb, 0xfe, + 0x65, 0xfe, 0x65, 0xfe, 0x11, 0xfe, 0x0f, 0xfe, 0xc4, 0xfd, 0xc6, 0xfd, + 0x82, 0xfd, 0x80, 0xfd, 0x4d, 0xfd, 0x50, 0xfd, 0x2b, 0xfd, 0x28, 0xfd, + 0x18, 0xfd, 0x19, 0xfd, 0x1d, 0xfd, 0x1b, 0xfd, 0x36, 0xfd, 0x38, 0xfd, + 0x69, 0xfd, 0x6a, 0xfd, 0xb6, 0xfd, 0xb5, 0xfd, 0x19, 0xfe, 0x1a, 0xfe, + 0x98, 0xfe, 0x98, 0xfe, 0x29, 0xff, 0x2a, 0xff, 0xd7, 0xff, 0xd9, 0xff, + 0x97, 0x00, 0x97, 0x00, 0x6b, 0x01, 0x6c, 0x01, 0x4d, 0x02, 0x4d, 0x02, + 0x3f, 0x03, 0x41, 0x03, 0x3c, 0x04, 0x3c, 0x04, 0x3d, 0x05, 0x3e, 0x05, + 0x44, 0x06, 0x44, 0x06, 0x49, 0x07, 0x4c, 0x07, 0x4d, 0x08, 0x4b, 0x08, + 0x4a, 0x09, 0x4a, 0x09, 0x3d, 0x0a, 0x3c, 0x0a, 0x1f, 0x0b, 0x20, 0x0b, + 0xf3, 0x0b, 0xf4, 0x0b, 0xb3, 0x0c, 0xb2, 0x0c, 0x5e, 0x0d, 0x60, 0x0d, + 0xed, 0x0d, 0xec, 0x0d, 0x66, 0x0e, 0x68, 0x0e, 0xc3, 0x0e, 0xc0, 0x0e, + 0x01, 0x0f, 0x03, 0x0f, 0x28, 0x0f, 0x27, 0x0f, 0x2d, 0x0f, 0x2e, 0x0f, + 0x1a, 0x0f, 0x1b, 0x0f, 0xeb, 0x0e, 0xeb, 0x0e, 0xa2, 0x0e, 0xa2, 0x0e, + 0x44, 0x0e, 0x45, 0x0e, 0xce, 0x0d, 0xcf, 0x0d, 0x4a, 0x0d, 0x4b, 0x0d, + 0xb4, 0x0c, 0xb4, 0x0c, 0x14, 0x0c, 0x15, 0x0c, 0x6a, 0x0b, 0x6c, 0x0b, + 0xbc, 0x0a, 0xbc, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a, 0x5e, 0x09, 0x5f, 0x09, + 0xb6, 0x08, 0xb8, 0x08, 0x19, 0x08, 0x19, 0x08, 0x82, 0x07, 0x83, 0x07, + 0x02, 0x07, 0x03, 0x07, 0x8a, 0x06, 0x8a, 0x06, 0x2d, 0x06, 0x2d, 0x06, + 0xdd, 0x05, 0xdf, 0x05, 0xab, 0x05, 0xaa, 0x05, 0x88, 0x05, 0x8a, 0x05, + 0x7e, 0x05, 0x7e, 0x05, 0x8d, 0x05, 0x8b, 0x05, 0xac, 0x05, 0xae, 0x05, + 0xe4, 0x05, 0xe4, 0x05, 0x2d, 0x06, 0x2d, 0x06, 0x86, 0x06, 0x89, 0x06, + 0xef, 0x06, 0xef, 0x06, 0x61, 0x07, 0x62, 0x07, 0xde, 0x07, 0xde, 0x07, + 0x60, 0x08, 0x61, 0x08, 0xe5, 0x08, 0xe6, 0x08, 0x67, 0x09, 0x68, 0x09, + 0xe8, 0x09, 0xe8, 0x09, 0x5e, 0x0a, 0x5f, 0x0a, 0xcb, 0x0a, 0xc9, 0x0a, + 0x28, 0x0b, 0x2a, 0x0b, 0x75, 0x0b, 0x75, 0x0b, 0xaf, 0x0b, 0xb0, 0x0b, + 0xd2, 0x0b, 0xd1, 0x0b, 0xdc, 0x0b, 0xdc, 0x0b, 0xcd, 0x0b, 0xce, 0x0b, + 0xa3, 0x0b, 0xa3, 0x0b, 0x5e, 0x0b, 0x5f, 0x0b, 0xfc, 0x0a, 0xfe, 0x0a, + 0x81, 0x0a, 0x82, 0x0a, 0xeb, 0x09, 0xeb, 0x09, 0x3a, 0x09, 0x3b, 0x09, + 0x6f, 0x08, 0x71, 0x08, 0x95, 0x07, 0x97, 0x07, 0xa3, 0x06, 0xa5, 0x06, + 0xa6, 0x05, 0xa7, 0x05, 0x98, 0x04, 0x97, 0x04, 0x80, 0x03, 0x84, 0x03, + 0x69, 0x02, 0x69, 0x02, 0x48, 0x01, 0x49, 0x01, 0x2f, 0x00, 0x32, 0x00, + 0x1a, 0xff, 0x1b, 0xff, 0x0f, 0xfe, 0x0f, 0xfe, 0x0f, 0xfd, 0x11, 0xfd, + 0x1e, 0xfc, 0x1d, 0xfc, 0x40, 0xfb, 0x43, 0xfb, 0x78, 0xfa, 0x78, 0xfa, + 0xc5, 0xf9, 0xc6, 0xf9, 0x2e, 0xf9, 0x30, 0xf9, 0xae, 0xf8, 0xad, 0xf8, + 0x48, 0xf8, 0x49, 0xf8, 0xfd, 0xf7, 0xff, 0xf7, 0xcc, 0xf7, 0xce, 0xf7, + 0xb8, 0xf7, 0xb8, 0xf7, 0xb7, 0xf7, 0xb8, 0xf7, 0xd0, 0xf7, 0xd2, 0xf7, + 0xfe, 0xf7, 0xff, 0xf7, 0x3e, 0xf8, 0x40, 0xf8, 0x90, 0xf8, 0x90, 0xf8, + 0xe7, 0xf8, 0xe9, 0xf8, 0x50, 0xf9, 0x50, 0xf9, 0xb8, 0xf9, 0xba, 0xf9, + 0x24, 0xfa, 0x26, 0xfa, 0x90, 0xfa, 0x91, 0xfa, 0xf5, 0xfa, 0xf7, 0xfa, + 0x55, 0xfb, 0x55, 0xfb, 0xa5, 0xfb, 0xa7, 0xfb, 0xea, 0xfb, 0xea, 0xfb, + 0x1d, 0xfc, 0x1f, 0xfc, 0x3d, 0xfc, 0x3e, 0xfc, 0x4b, 0xfc, 0x4b, 0xfc, + 0x3f, 0xfc, 0x3f, 0xfc, 0x1c, 0xfc, 0x1f, 0xfc, 0xe4, 0xfb, 0xe4, 0xfb, + 0x93, 0xfb, 0x95, 0xfb, 0x2b, 0xfb, 0x2c, 0xfb, 0xaf, 0xfa, 0xb0, 0xfa, + 0x1e, 0xfa, 0x1f, 0xfa, 0x7d, 0xf9, 0x7c, 0xf9, 0xc8, 0xf8, 0xca, 0xf8, + 0x0b, 0xf8, 0x0d, 0xf8, 0x3f, 0xf7, 0x40, 0xf7, 0x6f, 0xf6, 0x71, 0xf6, + 0x9a, 0xf5, 0x9b, 0xf5, 0xc8, 0xf4, 0xc9, 0xf4, 0xf4, 0xf3, 0xf5, 0xf3, + 0x2d, 0xf3, 0x2d, 0xf3, 0x6b, 0xf2, 0x6d, 0xf2, 0xba, 0xf1, 0xbb, 0xf1, + 0x1a, 0xf1, 0x19, 0xf1, 0x89, 0xf0, 0x8d, 0xf0, 0x17, 0xf0, 0x17, 0xf0, + 0xb5, 0xef, 0xb6, 0xef, 0x72, 0xef, 0x75, 0xef, 0x4c, 0xef, 0x4b, 0xef, + 0x3f, 0xef, 0x42, 0xef, 0x53, 0xef, 0x53, 0xef, 0x84, 0xef, 0x85, 0xef, + 0xd0, 0xef, 0xd2, 0xef, 0x3a, 0xf0, 0x3b, 0xf0, 0xbe, 0xf0, 0xc0, 0xf0, + 0x5a, 0xf1, 0x5b, 0xf1, 0x0f, 0xf2, 0x0f, 0xf2, 0xd4, 0xf2, 0xd5, 0xf2, + 0xab, 0xf3, 0xad, 0xf3, 0x91, 0xf4, 0x90, 0xf4, 0x81, 0xf5, 0x83, 0xf5, + 0x74, 0xf6, 0x74, 0xf6, 0x6b, 0xf7, 0x6c, 0xf7, 0x61, 0xf8, 0x62, 0xf8, + 0x53, 0xf9, 0x54, 0xf9, 0x3b, 0xfa, 0x3b, 0xfa, 0x17, 0xfb, 0x19, 0xfb, + 0xe7, 0xfb, 0xe6, 0xfb, 0xa2, 0xfc, 0xa3, 0xfc, 0x4e, 0xfd, 0x4f, 0xfd, + 0xdf, 0xfd, 0xe0, 0xfd, 0x5e, 0xfe, 0x5e, 0xfe, 0xc2, 0xfe, 0xc3, 0xfe, + 0x0e, 0xff, 0x0d, 0xff, 0x41, 0xff, 0x44, 0xff, 0x5c, 0xff, 0x5d, 0xff, + 0x62, 0xff, 0x62, 0xff, 0x52, 0xff, 0x53, 0xff, 0x2c, 0xff, 0x2a, 0xff, + 0xf6, 0xfe, 0xf7, 0xfe, 0xb1, 0xfe, 0xaf, 0xfe, 0x5e, 0xfe, 0x60, 0xfe, + 0x06, 0xfe, 0x05, 0xfe, 0xa3, 0xfd, 0xa5, 0xfd, 0x45, 0xfd, 0x44, 0xfd, + 0xe0, 0xfc, 0xe3, 0xfc, 0x88, 0xfc, 0x85, 0xfc, 0x31, 0xfc, 0x33, 0xfc, + 0xe7, 0xfb, 0xe8, 0xfb, 0xb1, 0xfb, 0xb0, 0xfb, 0x85, 0xfb, 0x87, 0xfb, + 0x73, 0xfb, 0x72, 0xfb, 0x74, 0xfb, 0x76, 0xfb, 0x8c, 0xfb, 0x8c, 0xfb, + 0xc2, 0xfb, 0xc3, 0xfb, 0x0e, 0xfc, 0x0e, 0xfc, 0x76, 0xfc, 0x78, 0xfc, + 0xfa, 0xfc, 0xf9, 0xfc, 0x94, 0xfd, 0x96, 0xfd, 0x48, 0xfe, 0x49, 0xfe, + 0x14, 0xff, 0x14, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xe2, 0x00, 0xe1, 0x00, + 0xdf, 0x01, 0xe0, 0x01, 0xe7, 0x02, 0xe7, 0x02, 0xf9, 0x03, 0xfa, 0x03, + 0x10, 0x05, 0x10, 0x05, 0x25, 0x06, 0x25, 0x06, 0x38, 0x07, 0x38, 0x07, + 0x43, 0x08, 0x43, 0x08, 0x45, 0x09, 0x46, 0x09, 0x39, 0x0a, 0x37, 0x0a, + 0x19, 0x0b, 0x1b, 0x0b, 0xe9, 0x0b, 0xe8, 0x0b, 0x9c, 0x0c, 0x9e, 0x0c, + 0x3e, 0x0d, 0x3f, 0x0d, 0xc0, 0x0d, 0xbe, 0x0d, 0x28, 0x0e, 0x28, 0x0e, + 0x73, 0x0e, 0x72, 0x0e, 0x9f, 0x0e, 0x9e, 0x0e, 0xb0, 0x0e, 0xb2, 0x0e, + 0xa0, 0x0e, 0xa0, 0x0e, 0x7c, 0x0e, 0x7d, 0x0e, 0x38, 0x0e, 0x36, 0x0e, + 0xde, 0x0d, 0xde, 0x0d, 0x71, 0x0d, 0x70, 0x0d, 0xeb, 0x0c, 0xec, 0x0c, + 0x5e, 0x0c, 0x5e, 0x0c, 0xc0, 0x0b, 0xbf, 0x0b, 0x19, 0x0b, 0x1a, 0x0b, + 0x70, 0x0a, 0x70, 0x0a, 0xc3, 0x09, 0xc5, 0x09, 0x1c, 0x09, 0x1a, 0x09, + 0x79, 0x08, 0x7a, 0x08, 0xdd, 0x07, 0xdf, 0x07, 0x54, 0x07, 0x53, 0x07, + 0xd2, 0x06, 0xd4, 0x06, 0x6b, 0x06, 0x6b, 0x06, 0x13, 0x06, 0x14, 0x06, + 0xd0, 0x05, 0xd1, 0x05, 0xa7, 0x05, 0xa8, 0x05, 0x90, 0x05, 0x93, 0x05, + 0x97, 0x05, 0x97, 0x05, 0xb3, 0x05, 0xb5, 0x05, 0xe1, 0x05, 0xe1, 0x05, + 0x2e, 0x06, 0x30, 0x06, 0x82, 0x06, 0x83, 0x06, 0xf1, 0x06, 0xf2, 0x06, + 0x6b, 0x07, 0x6c, 0x07, 0xef, 0x07, 0xf2, 0x07, 0x83, 0x08, 0x81, 0x08, + 0x11, 0x09, 0x17, 0x09, 0xad, 0x09, 0xac, 0x09, 0x42, 0x0a, 0x45, 0x0a, + 0xd0, 0x0a, 0xd2, 0x0a, 0x5d, 0x0b, 0x5f, 0x0b, 0xd6, 0x0b, 0xd6, 0x0b, + 0x47, 0x0c, 0x49, 0x0c, 0xa1, 0x0c, 0xa2, 0x0c, 0xe8, 0x0c, 0xea, 0x0c, + 0x19, 0x0d, 0x19, 0x0d, 0x2d, 0x0d, 0x30, 0x0d, 0x29, 0x0d, 0x2b, 0x0d, + 0x08, 0x0d, 0x0a, 0x0d, 0xcc, 0x0c, 0xcc, 0x0c, 0x6c, 0x0c, 0x71, 0x0c, + 0xf8, 0x0b, 0xf7, 0x0b, 0x60, 0x0b, 0x64, 0x0b, 0xb4, 0x0a, 0xb5, 0x0a, + 0xea, 0x09, 0xed, 0x09, 0x0c, 0x09, 0x0e, 0x09, 0x1c, 0x08, 0x1c, 0x08, + 0x17, 0x07, 0x19, 0x07, 0x07, 0x06, 0x08, 0x06, 0xee, 0x04, 0xf0, 0x04, + 0xcd, 0x03, 0xce, 0x03, 0xab, 0x02, 0xad, 0x02, 0x8b, 0x01, 0x8c, 0x01, + 0x6e, 0x00, 0x72, 0x00, 0x61, 0xff, 0x61, 0xff, 0x57, 0xfe, 0x59, 0xfe, + 0x66, 0xfd, 0x67, 0xfd, 0x83, 0xfc, 0x83, 0xfc, 0xb6, 0xfb, 0xb6, 0xfb, + 0xff, 0xfa, 0x02, 0xfb, 0x64, 0xfa, 0x63, 0xfa, 0xe0, 0xf9, 0xe4, 0xf9, + 0x7c, 0xf9, 0x7c, 0xf9, 0x32, 0xf9, 0x34, 0xf9, 0x02, 0xf9, 0x03, 0xf9, + 0xed, 0xf8, 0xee, 0xf8, 0xf1, 0xf8, 0xf2, 0xf8, 0x0b, 0xf9, 0x0e, 0xf9, + 0x3d, 0xf9, 0x3f, 0xf9, 0x7f, 0xf9, 0x7f, 0xf9, 0xd3, 0xf9, 0xd5, 0xf9, + 0x31, 0xfa, 0x31, 0xfa, 0x9b, 0xfa, 0x9d, 0xfa, 0x07, 0xfb, 0x08, 0xfb, + 0x78, 0xfb, 0x78, 0xfb, 0xe5, 0xfb, 0xe7, 0xfb, 0x4b, 0xfc, 0x4a, 0xfc, + 0xac, 0xfc, 0xae, 0xfc, 0xfc, 0xfc, 0xfd, 0xfc, 0x40, 0xfd, 0x42, 0xfd, + 0x70, 0xfd, 0x71, 0xfd, 0x8d, 0xfd, 0x8d, 0xfd, 0x93, 0xfd, 0x94, 0xfd, + 0x81, 0xfd, 0x83, 0xfd, 0x57, 0xfd, 0x58, 0xfd, 0x13, 0xfd, 0x14, 0xfd, + 0xb8, 0xfc, 0xb8, 0xfc, 0x41, 0xfc, 0x42, 0xfc, 0xba, 0xfb, 0xbb, 0xfb, + 0x17, 0xfb, 0x17, 0xfb, 0x64, 0xfa, 0x65, 0xfa, 0xa1, 0xf9, 0xa3, 0xf9, + 0xcd, 0xf8, 0xcc, 0xf8, 0xf3, 0xf7, 0xf4, 0xf7, 0x0a, 0xf7, 0x0b, 0xf7, + 0x28, 0xf6, 0x26, 0xf6, 0x39, 0xf5, 0x39, 0xf5, 0x57, 0xf4, 0x58, 0xf4, + 0x79, 0xf3, 0x79, 0xf3, 0xa4, 0xf2, 0xa5, 0xf2, 0xe2, 0xf1, 0xe2, 0xf1, + 0x2c, 0xf1, 0x2b, 0xf1, 0x8e, 0xf0, 0x90, 0xf0, 0x04, 0xf0, 0x04, 0xf0, + 0x96, 0xef, 0x98, 0xef, 0x46, 0xef, 0x44, 0xef, 0x0e, 0xef, 0x0f, 0xef, + 0xf6, 0xee, 0xf7, 0xee, 0xfe, 0xee, 0xfd, 0xee, 0x24, 0xef, 0x27, 0xef, + 0x6b, 0xef, 0x69, 0xef, 0xc9, 0xef, 0xc9, 0xef, 0x49, 0xf0, 0x4c, 0xf0, + 0xe0, 0xf0, 0xdd, 0xf0, 0x8d, 0xf1, 0x8e, 0xf1, 0x53, 0xf2, 0x53, 0xf2, + 0x23, 0xf3, 0x23, 0xf3, 0x07, 0xf4, 0x07, 0xf4, 0xf4, 0xf4, 0xf3, 0xf4, + 0xe5, 0xf5, 0xe5, 0xf5, 0xdb, 0xf6, 0xda, 0xf6, 0xcd, 0xf7, 0xcf, 0xf7, + 0xbd, 0xf8, 0xbb, 0xf8, 0xa0, 0xf9, 0xa2, 0xf9, 0x7b, 0xfa, 0x7b, 0xfa, + 0x44, 0xfb, 0x45, 0xfb, 0xfe, 0xfb, 0xff, 0xfb, 0xa0, 0xfc, 0xa1, 0xfc, + 0x2f, 0xfd, 0x2e, 0xfd, 0xa2, 0xfd, 0xa5, 0xfd, 0x01, 0xfe, 0xff, 0xfd, + 0x42, 0xfe, 0x45, 0xfe, 0x6f, 0xfe, 0x6e, 0xfe, 0x7e, 0xfe, 0x7f, 0xfe, + 0x77, 0xfe, 0x7a, 0xfe, 0x5c, 0xfe, 0x5e, 0xfe, 0x2b, 0xfe, 0x2c, 0xfe, + 0xeb, 0xfd, 0xec, 0xfd, 0x95, 0xfd, 0x98, 0xfd, 0x3b, 0xfd, 0x3c, 0xfd, + 0xd1, 0xfc, 0xd2, 0xfc, 0x69, 0xfc, 0x6a, 0xfc, 0xf7, 0xfb, 0xf9, 0xfb, + 0x8b, 0xfb, 0x8d, 0xfb, 0x27, 0xfb, 0x25, 0xfb, 0xc4, 0xfa, 0xc8, 0xfa, + 0x76, 0xfa, 0x75, 0xfa, 0x31, 0xfa, 0x34, 0xfa, 0x02, 0xfa, 0x03, 0xfa, + 0xe9, 0xf9, 0xea, 0xf9, 0xe5, 0xf9, 0xe6, 0xf9, 0xfc, 0xf9, 0xfd, 0xf9, + 0x2d, 0xfa, 0x30, 0xfa, 0x7a, 0xfa, 0x7c, 0xfa, 0xe4, 0xfa, 0xe4, 0xfa, + 0x69, 0xfb, 0x6b, 0xfb, 0x0b, 0xfc, 0x0c, 0xfc, 0xc4, 0xfc, 0xc6, 0xfc, + 0x96, 0xfd, 0x97, 0xfd, 0x7e, 0xfe, 0x7f, 0xfe, 0x76, 0xff, 0x78, 0xff, + 0x80, 0x00, 0x81, 0x00, 0x96, 0x01, 0x97, 0x01, 0xb2, 0x02, 0xb4, 0x02, + 0xd5, 0x03, 0xd6, 0x03, 0xf7, 0x04, 0xf9, 0x04, 0x18, 0x06, 0x1b, 0x06, + 0x31, 0x07, 0x32, 0x07, 0x3d, 0x08, 0x3f, 0x08, 0x41, 0x09, 0x41, 0x09, + 0x2d, 0x0a, 0x2d, 0x0a, 0x06, 0x0b, 0x09, 0x0b, 0xcd, 0x0b, 0xcb, 0x0b, + 0x71, 0x0c, 0x73, 0x0c, 0x02, 0x0d, 0x02, 0x0d, 0x6f, 0x0d, 0x70, 0x0d, + 0xc2, 0x0d, 0xc3, 0x0d, 0xf7, 0x0d, 0xf7, 0x0d, 0x0b, 0x0e, 0x0d, 0x0e, + 0x05, 0x0e, 0x05, 0x0e, 0xdf, 0x0d, 0xe1, 0x0d, 0xa1, 0x0d, 0xa3, 0x0d, + 0x4c, 0x0d, 0x4b, 0x0d, 0xde, 0x0c, 0xe0, 0x0c, 0x62, 0x0c, 0x62, 0x0c, + 0xd1, 0x0b, 0xd2, 0x0b, 0x35, 0x0b, 0x36, 0x0b, 0x94, 0x0a, 0x94, 0x0a, + 0xeb, 0x09, 0xec, 0x09, 0x43, 0x09, 0x46, 0x09, 0x9e, 0x08, 0x9f, 0x08, + 0x00, 0x08, 0x01, 0x08, 0x6d, 0x07, 0x6f, 0x07, 0xe4, 0x06, 0xe6, 0x06, + 0x71, 0x06, 0x72, 0x06, 0x0e, 0x06, 0x0f, 0x06, 0xc0, 0x05, 0xc2, 0x05, + 0x8a, 0x05, 0x8a, 0x05, 0x69, 0x05, 0x6b, 0x05, 0x66, 0x05, 0x65, 0x05, + 0x76, 0x05, 0x77, 0x05, 0xa1, 0x05, 0xa2, 0x05, 0xe3, 0x05, 0xe5, 0x05, + 0x39, 0x06, 0x3a, 0x06, 0xa8, 0x06, 0xa9, 0x06, 0x21, 0x07, 0x23, 0x07, + 0xb1, 0x07, 0xb1, 0x07, 0x48, 0x08, 0x49, 0x08, 0xea, 0x08, 0xea, 0x08, + 0x91, 0x09, 0x93, 0x09, 0x3a, 0x0a, 0x3c, 0x0a, 0xe2, 0x0a, 0xe4, 0x0a, + 0x84, 0x0b, 0x86, 0x0b, 0x1f, 0x0c, 0x20, 0x0c, 0xac, 0x0c, 0xae, 0x0c, + 0x2a, 0x0d, 0x2a, 0x0d, 0x94, 0x0d, 0x97, 0x0d, 0xe6, 0x0d, 0xe7, 0x0d, + 0x21, 0x0e, 0x25, 0x0e, 0x43, 0x0e, 0x43, 0x0e, 0x46, 0x0e, 0x48, 0x0e, + 0x2d, 0x0e, 0x2f, 0x0e, 0xf6, 0x0d, 0xf5, 0x0d, 0x9f, 0x0d, 0xa1, 0x0d, + 0x2a, 0x0d, 0x2c, 0x0d, 0x9a, 0x0c, 0x99, 0x0c, 0xeb, 0x0b, 0xed, 0x0b, + 0x24, 0x0b, 0x24, 0x0b, 0x47, 0x0a, 0x46, 0x0a, 0x50, 0x09, 0x51, 0x09, + 0x4c, 0x08, 0x4e, 0x08, 0x3a, 0x07, 0x3a, 0x07, 0x1b, 0x06, 0x1d, 0x06, + 0xfa, 0x04, 0xfb, 0x04, 0xd3, 0x03, 0xd3, 0x03, 0xaf, 0x02, 0xb1, 0x02, + 0x90, 0x01, 0x8f, 0x01, 0x7a, 0x00, 0x7b, 0x00, 0x73, 0xff, 0x75, 0xff, + 0x7d, 0xfe, 0x7e, 0xfe, 0x99, 0xfd, 0x99, 0xfd, 0xca, 0xfc, 0xcb, 0xfc, + 0x15, 0xfc, 0x16, 0xfc, 0x7a, 0xfb, 0x7b, 0xfb, 0xf9, 0xfa, 0xf8, 0xfa, + 0x94, 0xfa, 0x95, 0xfa, 0x4c, 0xfa, 0x4c, 0xfa, 0x1f, 0xfa, 0x21, 0xfa, + 0x0e, 0xfa, 0x0d, 0xfa, 0x13, 0xfa, 0x16, 0xfa, 0x35, 0xfa, 0x35, 0xfa, + 0x69, 0xfa, 0x69, 0xfa, 0xb0, 0xfa, 0xb3, 0xfa, 0x08, 0xfb, 0x07, 0xfb, + 0x6a, 0xfb, 0x6b, 0xfb, 0xd6, 0xfb, 0xd6, 0xfb, 0x48, 0xfc, 0x47, 0xfc, + 0xbb, 0xfc, 0xbb, 0xfc, 0x2a, 0xfd, 0x2a, 0xfd, 0x93, 0xfd, 0x92, 0xfd, + 0xf3, 0xfd, 0xf5, 0xfd, 0x43, 0xfe, 0x43, 0xfe, 0x85, 0xfe, 0x85, 0xfe, + 0xb2, 0xfe, 0xb4, 0xfe, 0xcb, 0xfe, 0xc9, 0xfe, 0xc9, 0xfe, 0xcd, 0xfe, + 0xb0, 0xfe, 0xaf, 0xfe, 0x7d, 0xfe, 0x7f, 0xfe, 0x32, 0xfe, 0x31, 0xfe, + 0xc7, 0xfd, 0xca, 0xfd, 0x49, 0xfd, 0x49, 0xfd, 0xad, 0xfc, 0xae, 0xfc, + 0x00, 0xfc, 0x00, 0xfc, 0x3a, 0xfb, 0x3d, 0xfb, 0x67, 0xfa, 0x66, 0xfa, + 0x81, 0xf9, 0x83, 0xf9, 0x92, 0xf8, 0x92, 0xf8, 0x9a, 0xf7, 0x9e, 0xf7, + 0xa1, 0xf6, 0xa1, 0xf6, 0xa3, 0xf5, 0xa6, 0xf5, 0xae, 0xf4, 0xaf, 0xf4, + 0xbc, 0xf3, 0xbe, 0xf3, 0xd6, 0xf2, 0xd8, 0xf2, 0x01, 0xf2, 0x02, 0xf2, + 0x3c, 0xf1, 0x3d, 0xf1, 0x8d, 0xf0, 0x8e, 0xf0, 0xf5, 0xef, 0xf8, 0xef, + 0x7a, 0xef, 0x7c, 0xef, 0x1b, 0xef, 0x1d, 0xef, 0xda, 0xee, 0xdb, 0xee, + 0xb7, 0xee, 0xba, 0xee, 0xb6, 0xee, 0xb6, 0xee, 0xd2, 0xee, 0xd4, 0xee, + 0x10, 0xef, 0x11, 0xef, 0x6a, 0xef, 0x6c, 0xef, 0xe5, 0xef, 0xe5, 0xef, + 0x73, 0xf0, 0x75, 0xf0, 0x1e, 0xf1, 0x1f, 0xf1, 0xdd, 0xf1, 0xdf, 0xf1, + 0xae, 0xf2, 0xae, 0xf2, 0x8b, 0xf3, 0x8d, 0xf3, 0x75, 0xf4, 0x76, 0xf4, + 0x62, 0xf5, 0x63, 0xf5, 0x54, 0xf6, 0x56, 0xf6, 0x44, 0xf7, 0x44, 0xf7, + 0x2e, 0xf8, 0x2f, 0xf8, 0x0e, 0xf9, 0x0e, 0xf9, 0xe1, 0xf9, 0xe2, 0xf9, + 0xa5, 0xfa, 0xa6, 0xfa, 0x55, 0xfb, 0x56, 0xfb, 0xf0, 0xfb, 0xf1, 0xfb, + 0x74, 0xfc, 0x76, 0xfc, 0xe1, 0xfc, 0xe2, 0xfc, 0x33, 0xfd, 0x34, 0xfd, + 0x6b, 0xfd, 0x6a, 0xfd, 0x87, 0xfd, 0x8a, 0xfd, 0x8e, 0xfd, 0x8f, 0xfd, + 0x77, 0xfd, 0x7a, 0xfd, 0x52, 0xfd, 0x51, 0xfd, 0x0f, 0xfd, 0x11, 0xfd, + 0xc3, 0xfc, 0xc4, 0xfc, 0x62, 0xfc, 0x63, 0xfc, 0xf5, 0xfb, 0xf8, 0xfb, + 0x84, 0xfb, 0x84, 0xfb, 0x08, 0xfb, 0x0a, 0xfb, 0x92, 0xfa, 0x92, 0xfa, + 0x17, 0xfa, 0x18, 0xfa, 0xa7, 0xf9, 0xa9, 0xf9, 0x3f, 0xf9, 0x3f, 0xf9, + 0xe3, 0xf8, 0xe6, 0xf8, 0x9c, 0xf8, 0x9d, 0xf8, 0x67, 0xf8, 0x68, 0xf8, + 0x46, 0xf8, 0x49, 0xf8, 0x43, 0xf8, 0x42, 0xf8, 0x55, 0xf8, 0x58, 0xf8, + 0x87, 0xf8, 0x88, 0xf8, 0xd6, 0xf8, 0xd7, 0xf8, 0x41, 0xf9, 0x42, 0xf9, + 0xcb, 0xf9, 0xcb, 0xf9, 0x6f, 0xfa, 0x71, 0xfa, 0x30, 0xfb, 0x31, 0xfb, + 0x08, 0xfc, 0x0a, 0xfc, 0xfa, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfb, 0xfd, + 0x10, 0xff, 0x13, 0xff, 0x2f, 0x00, 0x30, 0x00, 0x5a, 0x01, 0x5a, 0x01, + 0x85, 0x02, 0x88, 0x02, 0xb7, 0x03, 0xb7, 0x03, 0xe2, 0x04, 0xe3, 0x04, + 0x06, 0x06, 0x07, 0x06, 0x21, 0x07, 0x21, 0x07, 0x2a, 0x08, 0x2c, 0x08, + 0x23, 0x09, 0x24, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0xd2, 0x0a, 0xd3, 0x0a, + 0x87, 0x0b, 0x88, 0x0b, 0x19, 0x0c, 0x18, 0x0c, 0x90, 0x0c, 0x93, 0x0c, + 0xeb, 0x0c, 0xea, 0x0c, 0x21, 0x0d, 0x23, 0x0d, 0x3f, 0x0d, 0x40, 0x0d, + 0x38, 0x0d, 0x39, 0x0d, 0x19, 0x0d, 0x1a, 0x0d, 0xdf, 0x0c, 0xe1, 0x0c, + 0x8a, 0x0c, 0x8b, 0x0c, 0x22, 0x0c, 0x23, 0x0c, 0xa4, 0x0b, 0xa4, 0x0b, + 0x19, 0x0b, 0x18, 0x0b, 0x80, 0x0a, 0x80, 0x0a, 0xdf, 0x09, 0xe1, 0x09, + 0x3c, 0x09, 0x3b, 0x09, 0x97, 0x08, 0x99, 0x08, 0xf8, 0x07, 0xf9, 0x07, + 0x61, 0x07, 0x61, 0x07, 0xd2, 0x06, 0xd3, 0x06, 0x54, 0x06, 0x55, 0x06, + 0xe8, 0x05, 0xe7, 0x05, 0x8e, 0x05, 0x91, 0x05, 0x4b, 0x05, 0x4a, 0x05, + 0x22, 0x05, 0x23, 0x05, 0x10, 0x05, 0x11, 0x05, 0x19, 0x05, 0x1a, 0x05, + 0x3a, 0x05, 0x3d, 0x05, 0x76, 0x05, 0x76, 0x05, 0xca, 0x05, 0xcc, 0x05, + 0x32, 0x06, 0x32, 0x06, 0xb4, 0x06, 0xb4, 0x06, 0x43, 0x07, 0x42, 0x07, + 0xe4, 0x07, 0xe4, 0x07, 0x8f, 0x08, 0x90, 0x08, 0x45, 0x09, 0x46, 0x09, + 0x03, 0x0a, 0x03, 0x0a, 0xbe, 0x0a, 0xbf, 0x0a, 0x79, 0x0b, 0x7a, 0x0b, + 0x2c, 0x0c, 0x2d, 0x0c, 0xd8, 0x0c, 0xda, 0x0c, 0x76, 0x0d, 0x76, 0x0d, + 0x01, 0x0e, 0x04, 0x0e, 0x7c, 0x0e, 0x7e, 0x0e, 0xdc, 0x0e, 0xde, 0x0e, + 0x24, 0x0f, 0x24, 0x0f, 0x52, 0x0f, 0x52, 0x0f, 0x5d, 0x0f, 0x5f, 0x0f, + 0x4d, 0x0f, 0x4e, 0x0f, 0x1a, 0x0f, 0x1d, 0x0f, 0xc8, 0x0e, 0xc9, 0x0e, + 0x58, 0x0e, 0x5a, 0x0e, 0xc9, 0x0d, 0xca, 0x0d, 0x1e, 0x0d, 0x20, 0x0d, + 0x56, 0x0c, 0x58, 0x0c, 0x7a, 0x0b, 0x7b, 0x0b, 0x85, 0x0a, 0x88, 0x0a, + 0x84, 0x09, 0x83, 0x09, 0x6e, 0x08, 0x72, 0x08, 0x56, 0x07, 0x56, 0x07, + 0x33, 0x06, 0x34, 0x06, 0x0a, 0x05, 0x0f, 0x05, 0xec, 0x03, 0xeb, 0x03, + 0xca, 0x02, 0xce, 0x02, 0xba, 0x01, 0xb9, 0x01, 0xb2, 0x00, 0xb3, 0x00, + 0xbb, 0xff, 0xbe, 0xff, 0xda, 0xfe, 0xdb, 0xfe, 0x0d, 0xfe, 0x0e, 0xfe, + 0x5b, 0xfd, 0x5b, 0xfd, 0xc0, 0xfc, 0xc0, 0xfc, 0x42, 0xfc, 0x43, 0xfc, + 0xdf, 0xfb, 0xdf, 0xfb, 0x97, 0xfb, 0x9a, 0xfb, 0x6e, 0xfb, 0x6e, 0xfb, + 0x59, 0xfb, 0x5e, 0xfb, 0x66, 0xfb, 0x65, 0xfb, 0x84, 0xfb, 0x86, 0xfb, + 0xba, 0xfb, 0xbc, 0xfb, 0x02, 0xfc, 0x02, 0xfc, 0x58, 0xfc, 0x5c, 0xfc, + 0xc1, 0xfc, 0xc0, 0xfc, 0x2e, 0xfd, 0x30, 0xfd, 0xa7, 0xfd, 0xa8, 0xfd, + 0x20, 0xfe, 0x22, 0xfe, 0x9a, 0xfe, 0x9a, 0xfe, 0x0f, 0xff, 0x12, 0xff, + 0x80, 0xff, 0x80, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0x37, 0x00, 0x37, 0x00, + 0x7a, 0x00, 0x7b, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xb9, 0x00, 0xba, 0x00, + 0xb2, 0x00, 0xb1, 0x00, 0x8a, 0x00, 0x8b, 0x00, 0x47, 0x00, 0x49, 0x00, + 0xe3, 0xff, 0xe4, 0xff, 0x5b, 0xff, 0x5c, 0xff, 0xac, 0xfe, 0xac, 0xfe, + 0xdb, 0xfd, 0xdc, 0xfd, 0xf2, 0xfc, 0xf4, 0xfc, 0xf2, 0xfb, 0xf2, 0xfb, + 0xdb, 0xfa, 0xdd, 0xfa, 0xb9, 0xf9, 0xb9, 0xf9, 0x89, 0xf8, 0x8a, 0xf8, + 0x54, 0xf7, 0x57, 0xf7, 0x1f, 0xf6, 0x1e, 0xf6, 0xe8, 0xf4, 0xe8, 0xf4, + 0xb7, 0xf3, 0xb9, 0xf3, 0x93, 0xf2, 0x92, 0xf2, 0x79, 0xf1, 0x7b, 0xf1, + 0x76, 0xf0, 0x75, 0xf0, 0x83, 0xef, 0x84, 0xef, 0xad, 0xee, 0xad, 0xee, + 0xf1, 0xed, 0xf2, 0xed, 0x56, 0xed, 0x58, 0xed, 0xe2, 0xec, 0xe3, 0xec, + 0x91, 0xec, 0x92, 0xec, 0x6a, 0xec, 0x6b, 0xec, 0x6f, 0xec, 0x70, 0xec, + 0x9d, 0xec, 0x9e, 0xec, 0xf6, 0xec, 0xf9, 0xec, 0x7a, 0xed, 0x7b, 0xed, + 0x29, 0xee, 0x2b, 0xee, 0xfa, 0xee, 0xfd, 0xee, 0xf0, 0xef, 0xf1, 0xef, + 0x01, 0xf1, 0x02, 0xf1, 0x2d, 0xf2, 0x2f, 0xf2, 0x6c, 0xf3, 0x6c, 0xf3, + 0xb5, 0xf4, 0xb9, 0xf4, 0x07, 0xf6, 0x07, 0xf6, 0x56, 0xf7, 0x59, 0xf7, + 0xa6, 0xf8, 0xa8, 0xf8, 0xe6, 0xf9, 0xe7, 0xf9, 0x17, 0xfb, 0x1a, 0xfb, + 0x30, 0xfc, 0x32, 0xfc, 0x32, 0xfd, 0x32, 0xfd, 0x14, 0xfe, 0x16, 0xfe, + 0xd5, 0xfe, 0xd5, 0xfe, 0x72, 0xff, 0x74, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0x3a, 0x00, 0x3b, 0x00, 0x64, 0x00, 0x67, 0x00, 0x66, 0x00, 0x65, 0x00, + 0x41, 0x00, 0x44, 0x00, 0xf5, 0xff, 0xf5, 0xff, 0x85, 0xff, 0x87, 0xff, + 0xf5, 0xfe, 0xf8, 0xfe, 0x47, 0xfe, 0x48, 0xfe, 0x7d, 0xfd, 0x7f, 0xfd, + 0x9f, 0xfc, 0xa0, 0xfc, 0xaf, 0xfb, 0xb0, 0xfb, 0xb6, 0xfa, 0xb8, 0xfa, + 0xb6, 0xf9, 0xb8, 0xf9, 0xb8, 0xf8, 0xb9, 0xf8, 0xc1, 0xf7, 0xc3, 0xf7, + 0xde, 0xf6, 0xdd, 0xf6, 0x0a, 0xf6, 0x0b, 0xf6, 0x54, 0xf5, 0x56, 0xf5, + 0xc2, 0xf4, 0xc1, 0xf4, 0x51, 0xf4, 0x53, 0xf4, 0x11, 0xf4, 0x11, 0xf4, + 0xfd, 0xf3, 0xff, 0xf3, 0x19, 0xf4, 0x19, 0xf4, 0x6b, 0xf4, 0x6d, 0xf4, + 0xef, 0xf4, 0xee, 0xf4, 0xa4, 0xf5, 0xa8, 0xf5, 0x8e, 0xf6, 0x8e, 0xf6, + 0xa2, 0xf7, 0xa4, 0xf7, 0xe7, 0xf8, 0xe8, 0xf8, 0x4b, 0xfa, 0x4e, 0xfa, + 0xd5, 0xfb, 0xd7, 0xfb, 0x7b, 0xfd, 0x7c, 0xfd, 0x37, 0xff, 0x37, 0xff, + 0x04, 0x01, 0x05, 0x01, 0xd3, 0x02, 0xd4, 0x02, 0xae, 0x04, 0xaf, 0x04, + 0x81, 0x06, 0x82, 0x06, 0x48, 0x08, 0x4a, 0x08, 0x00, 0x0a, 0x03, 0x0a, + 0x9c, 0x0b, 0x9e, 0x0b, 0x1b, 0x0d, 0x1d, 0x0d, 0x74, 0x0e, 0x76, 0x0e, + 0xa1, 0x0f, 0xa3, 0x0f, 0xa0, 0x10, 0xa1, 0x10, 0x67, 0x11, 0x69, 0x11, + 0xf9, 0x11, 0xf9, 0x11, 0x4d, 0x12, 0x4f, 0x12, 0x67, 0x12, 0x68, 0x12, + 0x47, 0x12, 0x48, 0x12, 0xeb, 0x11, 0xed, 0x11, 0x59, 0x11, 0x5a, 0x11, + 0x92, 0x10, 0x94, 0x10, 0x9c, 0x0f, 0x9d, 0x0f, 0x7c, 0x0e, 0x7e, 0x0e, + 0x39, 0x0d, 0x39, 0x0d, 0xdb, 0x0b, 0xde, 0x0b, 0x66, 0x0a, 0x67, 0x0a, + 0xe2, 0x08, 0xe4, 0x08, 0x59, 0x07, 0x5c, 0x07, 0xd4, 0x05, 0xd5, 0x05, + 0x57, 0x04, 0x59, 0x04, 0xee, 0x02, 0xee, 0x02, 0x9d, 0x01, 0x9f, 0x01, + 0x6a, 0x00, 0x6e, 0x00, 0x64, 0xff, 0x63, 0xff, 0x81, 0xfe, 0x85, 0xfe, + 0xda, 0xfd, 0xd9, 0xfd, 0x5d, 0xfd, 0x60, 0xfd, 0x1f, 0xfd, 0x1f, 0xfd, + 0x17, 0xfd, 0x17, 0xfd, 0x46, 0xfd, 0x49, 0xfd, 0xb1, 0xfd, 0xb2, 0xfd, + 0x52, 0xfe, 0x53, 0xfe, 0x28, 0xff, 0x2a, 0xff, 0x2f, 0x00, 0x2f, 0x00, + 0x5d, 0x01, 0x5f, 0x01, 0xb4, 0x02, 0xb5, 0x02, 0x29, 0x04, 0x2a, 0x04, + 0xb7, 0x05, 0xb9, 0x05, 0x59, 0x07, 0x5a, 0x07, 0x00, 0x09, 0x02, 0x09, + 0xaa, 0x0a, 0xad, 0x0a, 0x4f, 0x0c, 0x4e, 0x0c, 0xe0, 0x0d, 0xe5, 0x0d, + 0x61, 0x0f, 0x62, 0x0f, 0xbc, 0x10, 0xbf, 0x10, 0xf6, 0x11, 0xf8, 0x11, + 0x01, 0x13, 0x03, 0x13, 0xd7, 0x13, 0xda, 0x13, 0x78, 0x14, 0x78, 0x14, + 0xd7, 0x14, 0xda, 0x14, 0xfc, 0x14, 0xfe, 0x14, 0xdd, 0x14, 0xdf, 0x14, + 0x79, 0x14, 0x7c, 0x14, 0xd5, 0x13, 0xd7, 0x13, 0xf2, 0x12, 0xf4, 0x12, + 0xce, 0x11, 0xd0, 0x11, 0x74, 0x10, 0x78, 0x10, 0xe4, 0x0e, 0xe4, 0x0e, + 0x26, 0x0d, 0x2b, 0x0d, 0x47, 0x0b, 0x45, 0x0b, 0x42, 0x09, 0x47, 0x09, + 0x2d, 0x07, 0x2d, 0x07, 0x09, 0x05, 0x0b, 0x05, 0xe0, 0x02, 0xe2, 0x02, + 0xbf, 0x00, 0xc0, 0x00, 0xa9, 0xfe, 0xab, 0xfe, 0xaf, 0xfc, 0xaf, 0xfc, + 0xd0, 0xfa, 0xd2, 0xfa, 0x1c, 0xf9, 0x1d, 0xf9, 0x99, 0xf7, 0x9a, 0xf7, + 0x4a, 0xf6, 0x4c, 0xf6, 0x38, 0xf5, 0x3a, 0xf5, 0x65, 0xf4, 0x65, 0xf4, + 0xd2, 0xf3, 0xd5, 0xf3, 0x88, 0xf3, 0x89, 0xf3, 0x7e, 0xf3, 0x80, 0xf3, + 0xb8, 0xf3, 0xba, 0xf3, 0x33, 0xf4, 0x34, 0xf4, 0xed, 0xf4, 0xed, 0xf4, + 0xdb, 0xf5, 0xdc, 0xf5, 0x00, 0xf7, 0x01, 0xf7, 0x4e, 0xf8, 0x4f, 0xf8, + 0xc4, 0xf9, 0xc5, 0xf9, 0x56, 0xfb, 0x58, 0xfb, 0xff, 0xfc, 0x00, 0xfd, + 0xb2, 0xfe, 0xb4, 0xfe, 0x6b, 0x00, 0x6a, 0x00, 0x1c, 0x02, 0x20, 0x02, + 0xc1, 0x03, 0xc0, 0x03, 0x4c, 0x05, 0x51, 0x05, 0xbc, 0x06, 0xbb, 0x06, + 0xff, 0x07, 0x02, 0x08, 0x14, 0x09, 0x13, 0x09, 0xf1, 0x09, 0xf4, 0x09, + 0x91, 0x0a, 0x94, 0x0a, 0xf1, 0x0a, 0xf1, 0x0a, 0x0a, 0x0b, 0x0e, 0x0b, + 0xdd, 0x0a, 0xdd, 0x0a, 0x67, 0x0a, 0x6a, 0x0a, 0xab, 0x09, 0xad, 0x09, + 0xb0, 0x08, 0xb3, 0x08, 0x71, 0x07, 0x71, 0x07, 0xfd, 0x05, 0x01, 0x06, + 0x53, 0x04, 0x52, 0x04, 0x7d, 0x02, 0x81, 0x02, 0x86, 0x00, 0x86, 0x00, + 0x6f, 0xfe, 0x70, 0xfe, 0x4c, 0xfc, 0x4f, 0xfc, 0x19, 0xfa, 0x1a, 0xfa, + 0xee, 0xf7, 0xf0, 0xf7, 0xc6, 0xf5, 0xc8, 0xf5, 0xb6, 0xf3, 0xb6, 0xf3, + 0xbd, 0xf1, 0xc0, 0xf1, 0xee, 0xef, 0xee, 0xef, 0x4b, 0xee, 0x4d, 0xee, + 0xdb, 0xec, 0xde, 0xec, 0xaa, 0xeb, 0xab, 0xeb, 0xb8, 0xea, 0xbb, 0xea, + 0x0d, 0xea, 0x0e, 0xea, 0xac, 0xe9, 0xac, 0xe9, 0x94, 0xe9, 0x97, 0xe9, + 0xcc, 0xe9, 0xcc, 0xe9, 0x4a, 0xea, 0x4e, 0xea, 0x14, 0xeb, 0x16, 0xeb, + 0x21, 0xec, 0x22, 0xec, 0x6c, 0xed, 0x6d, 0xed, 0xee, 0xee, 0xf1, 0xee, + 0xa3, 0xf0, 0xa2, 0xf0, 0x7f, 0xf2, 0x83, 0xf2, 0x7d, 0xf4, 0x7e, 0xf4, + 0x8e, 0xf6, 0x91, 0xf6, 0xb0, 0xf8, 0xb1, 0xf8, 0xd1, 0xfa, 0xd3, 0xfa, + 0xec, 0xfc, 0xee, 0xfc, 0xf5, 0xfe, 0xf7, 0xfe, 0xe2, 0x00, 0xe4, 0x00, + 0xaa, 0x02, 0xac, 0x02, 0x42, 0x04, 0x44, 0x04, 0xa7, 0x05, 0xa9, 0x05, + 0xcb, 0x06, 0xcc, 0x06, 0xb3, 0x07, 0xb7, 0x07, 0x4f, 0x08, 0x4f, 0x08, + 0xa5, 0x08, 0xa7, 0x08, 0xb0, 0x08, 0xb2, 0x08, 0x71, 0x08, 0x73, 0x08, + 0xee, 0x07, 0xef, 0x07, 0x20, 0x07, 0x22, 0x07, 0x19, 0x06, 0x1c, 0x06, + 0xd5, 0x04, 0xd6, 0x04, 0x5e, 0x03, 0x61, 0x03, 0xbd, 0x01, 0xbc, 0x01, + 0xf4, 0xff, 0xf8, 0xff, 0x16, 0xfe, 0x16, 0xfe, 0x1f, 0xfc, 0x22, 0xfc, + 0x25, 0xfa, 0x25, 0xfa, 0x24, 0xf8, 0x29, 0xf8, 0x33, 0xf6, 0x34, 0xf6, + 0x54, 0xf4, 0x55, 0xf4, 0x8e, 0xf2, 0x91, 0xf2, 0xf1, 0xf0, 0xf3, 0xf0, + 0x81, 0xef, 0x84, 0xef, 0x4a, 0xee, 0x4b, 0xee, 0x4b, 0xed, 0x4d, 0xed, + 0x91, 0xec, 0x94, 0xec, 0x21, 0xec, 0x23, 0xec, 0xfc, 0xeb, 0xfd, 0xeb, + 0x20, 0xec, 0x25, 0xec, 0x97, 0xec, 0x98, 0xec, 0x5a, 0xed, 0x5c, 0xed, + 0x64, 0xee, 0x68, 0xee, 0xb8, 0xef, 0xb9, 0xef, 0x49, 0xf1, 0x4b, 0xf1, + 0x13, 0xf3, 0x15, 0xf3, 0x0f, 0xf5, 0x10, 0xf5, 0x31, 0xf7, 0x35, 0xf7, + 0x73, 0xf9, 0x75, 0xf9, 0xca, 0xfb, 0xcb, 0xfb, 0x29, 0xfe, 0x2b, 0xfe, + 0x8c, 0x00, 0x8d, 0x00, 0xde, 0x02, 0xe0, 0x02, 0x1e, 0x05, 0x20, 0x05, + 0x40, 0x07, 0x42, 0x07, 0x36, 0x09, 0x38, 0x09, 0x01, 0x0b, 0x01, 0x0b, + 0x8b, 0x0c, 0x8e, 0x0c, 0xdb, 0x0d, 0xdb, 0x0d, 0xe1, 0x0e, 0xe3, 0x0e, + 0xa3, 0x0f, 0xa3, 0x0f, 0x15, 0x10, 0x16, 0x10, 0x39, 0x10, 0x3a, 0x10, + 0x12, 0x10, 0x14, 0x10, 0x9e, 0x0f, 0xa0, 0x0f, 0xe8, 0x0e, 0xe9, 0x0e, + 0xe8, 0x0d, 0xeb, 0x0d, 0xb3, 0x0c, 0xb2, 0x0c, 0x40, 0x0b, 0x44, 0x0b, + 0xa3, 0x09, 0xa4, 0x09, 0xdf, 0x07, 0xe0, 0x07, 0xfc, 0x05, 0xfe, 0x05, + 0x06, 0x04, 0x09, 0x04, 0x08, 0x02, 0x0a, 0x02, 0x08, 0x00, 0x09, 0x00, + 0x12, 0xfe, 0x14, 0xfe, 0x30, 0xfc, 0x32, 0xfc, 0x6c, 0xfa, 0x6e, 0xfa, + 0xd3, 0xf8, 0xd3, 0xf8, 0x64, 0xf7, 0x67, 0xf7, 0x37, 0xf6, 0x37, 0xf6, + 0x42, 0xf5, 0x45, 0xf5, 0x99, 0xf4, 0x99, 0xf4, 0x3b, 0xf4, 0x3f, 0xf4, + 0x2b, 0xf4, 0x2c, 0xf4, 0x6c, 0xf4, 0x6c, 0xf4, 0xf5, 0xf4, 0xf9, 0xf4, + 0xd1, 0xf5, 0xd0, 0xf5, 0xef, 0xf6, 0xf3, 0xf6, 0x54, 0xf8, 0x54, 0xf8, + 0xf3, 0xf9, 0xf6, 0xf9, 0xc7, 0xfb, 0xc9, 0xfb, 0xc4, 0xfd, 0xc7, 0xfd, + 0xeb, 0xff, 0xea, 0xff, 0x27, 0x02, 0x29, 0x02, 0x76, 0x04, 0x76, 0x04, + 0xc9, 0x06, 0xcc, 0x06, 0x1c, 0x09, 0x1e, 0x09, 0x5d, 0x0b, 0x60, 0x0b, + 0x8e, 0x0d, 0x8f, 0x0d, 0x96, 0x0f, 0x9a, 0x0f, 0x7d, 0x11, 0x7d, 0x11, + 0x2b, 0x13, 0x2d, 0x13, 0xa2, 0x14, 0xa4, 0x14, 0xd8, 0x15, 0xd9, 0x15, + 0xc6, 0x16, 0xc8, 0x16, 0x68, 0x17, 0x6c, 0x17, 0xbf, 0x17, 0xbf, 0x17, + 0xc5, 0x17, 0xc7, 0x17, 0x7a, 0x17, 0x7b, 0x17, 0xdf, 0x16, 0xe1, 0x16, + 0xfa, 0x15, 0xfe, 0x15, 0xd1, 0x14, 0xd2, 0x14, 0x65, 0x13, 0x67, 0x13, + 0xc0, 0x11, 0xbf, 0x11, 0xe8, 0x0f, 0xea, 0x0f, 0xe9, 0x0d, 0xea, 0x0d, + 0xcc, 0x0b, 0xcd, 0x0b, 0x9a, 0x09, 0x9a, 0x09, 0x5e, 0x07, 0x60, 0x07, + 0x23, 0x05, 0x24, 0x05, 0xf5, 0x02, 0xf6, 0x02, 0xde, 0x00, 0xe1, 0x00, + 0xe6, 0xfe, 0xe8, 0xfe, 0x1e, 0xfd, 0x1d, 0xfd, 0x7f, 0xfb, 0x82, 0xfb, + 0x22, 0xfa, 0x23, 0xfa, 0x02, 0xf9, 0x03, 0xf9, 0x29, 0xf8, 0x2a, 0xf8, + 0x9b, 0xf7, 0x9a, 0xf7, 0x54, 0xf7, 0x57, 0xf7, 0x5d, 0xf7, 0x5d, 0xf7, + 0xab, 0xf7, 0xac, 0xf7, 0x48, 0xf8, 0x49, 0xf8, 0x21, 0xf9, 0x23, 0xf9, + 0x3f, 0xfa, 0x3e, 0xfa, 0x8f, 0xfb, 0x93, 0xfb, 0x16, 0xfd, 0x15, 0xfd, + 0xc2, 0xfe, 0xc4, 0xfe, 0x93, 0x00, 0x93, 0x00, 0x7b, 0x02, 0x7c, 0x02, + 0x71, 0x04, 0x74, 0x04, 0x73, 0x06, 0x71, 0x06, 0x65, 0x08, 0x69, 0x08, + 0x57, 0x0a, 0x57, 0x0a, 0x28, 0x0c, 0x2b, 0x0c, 0xe0, 0x0d, 0xe1, 0x0d, + 0x6d, 0x0f, 0x6e, 0x0f, 0xc3, 0x10, 0xc4, 0x10, 0xe2, 0x11, 0xe5, 0x11, + 0xc0, 0x12, 0xc1, 0x12, 0x56, 0x13, 0x57, 0x13, 0xa2, 0x13, 0xa3, 0x13, + 0x9e, 0x13, 0x9e, 0x13, 0x4c, 0x13, 0x4e, 0x13, 0xa7, 0x12, 0xa7, 0x12, + 0xb6, 0x11, 0xbb, 0x11, 0x7a, 0x10, 0x7a, 0x10, 0xf7, 0x0e, 0xfb, 0x0e, + 0x39, 0x0d, 0x39, 0x0d, 0x3f, 0x0b, 0x42, 0x0b, 0x1e, 0x09, 0x1f, 0x09, + 0xd2, 0x06, 0xd3, 0x06, 0x6f, 0x04, 0x70, 0x04, 0xfa, 0x01, 0xfc, 0x01, + 0x7f, 0xff, 0x80, 0xff, 0x0a, 0xfd, 0x0a, 0xfd, 0x9e, 0xfa, 0xa2, 0xfa, + 0x52, 0xf8, 0x52, 0xf8, 0x24, 0xf6, 0x26, 0xf6, 0x22, 0xf4, 0x22, 0xf4, + 0x58, 0xf2, 0x58, 0xf2, 0xc0, 0xf0, 0xc3, 0xf0, 0x75, 0xef, 0x75, 0xef, + 0x69, 0xee, 0x6c, 0xee, 0xae, 0xed, 0xad, 0xed, 0x3f, 0xed, 0x41, 0xed, + 0x1c, 0xed, 0x1c, 0xed, 0x48, 0xed, 0x4a, 0xed, 0xbf, 0xed, 0xbe, 0xed, + 0x7a, 0xee, 0x7c, 0xee, 0x7c, 0xef, 0x7d, 0xef, 0xb6, 0xf0, 0xb7, 0xf0, + 0x29, 0xf2, 0x28, 0xf2, 0xc6, 0xf3, 0xc7, 0xf3, 0x86, 0xf5, 0x86, 0xf5, + 0x66, 0xf7, 0x67, 0xf7, 0x4f, 0xf9, 0x50, 0xf9, 0x46, 0xfb, 0x46, 0xfb, + 0x33, 0xfd, 0x35, 0xfd, 0x17, 0xff, 0x16, 0xff, 0xe1, 0x00, 0xe1, 0x00, + 0x83, 0x02, 0x84, 0x02, 0x05, 0x04, 0x03, 0x04, 0x43, 0x05, 0x45, 0x05, + 0x50, 0x06, 0x50, 0x06, 0x18, 0x07, 0x16, 0x07, 0x92, 0x07, 0x95, 0x07, + 0xcb, 0x07, 0xca, 0x07, 0xb2, 0x07, 0xb2, 0x07, 0x52, 0x07, 0x53, 0x07, + 0xa7, 0x06, 0xa3, 0x06, 0xb5, 0x05, 0xb7, 0x05, 0x7f, 0x04, 0x7e, 0x04, + 0x14, 0x03, 0x13, 0x03, 0x6d, 0x01, 0x6d, 0x01, 0x9c, 0xff, 0x9d, 0xff, + 0xa6, 0xfd, 0xa4, 0xfd, 0x90, 0xfb, 0x91, 0xfb, 0x6b, 0xf9, 0x6a, 0xf9, + 0x36, 0xf7, 0x37, 0xf7, 0x06, 0xf5, 0x06, 0xf5, 0xda, 0xf2, 0xda, 0xf2, + 0xc3, 0xf0, 0xc2, 0xf0, 0xc5, 0xee, 0xc5, 0xee, 0xeb, 0xec, 0xea, 0xec, + 0x40, 0xeb, 0x40, 0xeb, 0xc6, 0xe9, 0xc7, 0xe9, 0x8b, 0xe8, 0x89, 0xe8, + 0x8f, 0xe7, 0x90, 0xe7, 0xe0, 0xe6, 0xdc, 0xe6, 0x74, 0xe6, 0x76, 0xe6, + 0x5d, 0xe6, 0x5c, 0xe6, 0x91, 0xe6, 0x91, 0xe6, 0x13, 0xe7, 0x14, 0xe7, + 0xe3, 0xe7, 0xe3, 0xe7, 0xfc, 0xe8, 0xfb, 0xe8, 0x56, 0xea, 0x57, 0xea, + 0xf0, 0xeb, 0xef, 0xeb, 0xbe, 0xed, 0xbf, 0xed, 0xba, 0xef, 0xb8, 0xef, + 0xd9, 0xf1, 0xda, 0xf1, 0x12, 0xf4, 0x10, 0xf4, 0x5b, 0xf6, 0x5b, 0xf6, + 0xa8, 0xf8, 0xa8, 0xf8, 0xf2, 0xfa, 0xef, 0xfa, 0x2a, 0xfd, 0x29, 0xfd, + 0x49, 0xff, 0x48, 0xff, 0x45, 0x01, 0x41, 0x01, 0x0f, 0x03, 0x11, 0x03, + 0xab, 0x04, 0xa9, 0x04, 0x0a, 0x06, 0x0a, 0x06, 0x29, 0x07, 0x27, 0x07, + 0x04, 0x08, 0x03, 0x08, 0x98, 0x08, 0x96, 0x08, 0xe2, 0x08, 0xe2, 0x08, + 0xe5, 0x08, 0xe4, 0x08, 0xa0, 0x08, 0xa1, 0x08, 0x1c, 0x08, 0x1b, 0x08, + 0x56, 0x07, 0x55, 0x07, 0x56, 0x06, 0x56, 0x06, 0x23, 0x05, 0x21, 0x05, + 0xc1, 0x03, 0xbf, 0x03, 0x3c, 0x02, 0x3c, 0x02, 0x96, 0x00, 0x95, 0x00, + 0xe2, 0xfe, 0xe0, 0xfe, 0x1f, 0xfd, 0x1f, 0xfd, 0x5a, 0xfb, 0x5a, 0xfb, + 0x9f, 0xf9, 0xa0, 0xf9, 0xf2, 0xf7, 0xf2, 0xf7, 0x66, 0xf6, 0x64, 0xf6, + 0xf8, 0xf4, 0xf7, 0xf4, 0xbb, 0xf3, 0xb8, 0xf3, 0xaf, 0xf2, 0xae, 0xf2, + 0xe2, 0xf1, 0xe1, 0xf1, 0x58, 0xf1, 0x56, 0xf1, 0x12, 0xf1, 0x12, 0xf1, + 0x1a, 0xf1, 0x1a, 0xf1, 0x6f, 0xf1, 0x6f, 0xf1, 0x10, 0xf2, 0x0f, 0xf2, + 0x01, 0xf3, 0x00, 0xf3, 0x32, 0xf4, 0x31, 0xf4, 0xaf, 0xf5, 0xb0, 0xf5, + 0x62, 0xf7, 0x60, 0xf7, 0x4f, 0xf9, 0x4d, 0xf9, 0x68, 0xfb, 0x68, 0xfb, + 0xa3, 0xfd, 0xa3, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x67, 0x02, 0x67, 0x02, + 0xdc, 0x04, 0xdc, 0x04, 0x4f, 0x07, 0x4d, 0x07, 0xb4, 0x09, 0xb5, 0x09, + 0x08, 0x0c, 0x07, 0x0c, 0x3c, 0x0e, 0x3b, 0x0e, 0x4b, 0x10, 0x4b, 0x10, + 0x2a, 0x12, 0x29, 0x12, 0xd3, 0x13, 0xd1, 0x13, 0x3f, 0x15, 0x3f, 0x15, + 0x69, 0x16, 0x67, 0x16, 0x4a, 0x17, 0x49, 0x17, 0xe4, 0x17, 0xe3, 0x17, + 0x32, 0x18, 0x31, 0x18, 0x32, 0x18, 0x31, 0x18, 0xe6, 0x17, 0xe5, 0x17, + 0x55, 0x17, 0x54, 0x17, 0x7e, 0x16, 0x7d, 0x16, 0x66, 0x15, 0x67, 0x15, + 0x1c, 0x14, 0x1a, 0x14, 0x98, 0x12, 0x97, 0x12, 0xf1, 0x10, 0xf4, 0x10, + 0x27, 0x0f, 0x25, 0x0f, 0x49, 0x0d, 0x4b, 0x0d, 0x5f, 0x0b, 0x5e, 0x0b, + 0x72, 0x09, 0x72, 0x09, 0x8e, 0x07, 0x8e, 0x07, 0xbc, 0x05, 0xbd, 0x05, + 0x06, 0x04, 0x05, 0x04, 0x72, 0x02, 0x73, 0x02, 0x11, 0x01, 0x11, 0x01, + 0xdf, 0xff, 0xde, 0xff, 0xe9, 0xfe, 0xe8, 0xfe, 0x31, 0xfe, 0x30, 0xfe, + 0xba, 0xfd, 0xb8, 0xfd, 0x88, 0xfd, 0x8b, 0xfd, 0x9b, 0xfd, 0x99, 0xfd, + 0xf1, 0xfd, 0xf2, 0xfd, 0x88, 0xfe, 0x86, 0xfe, 0x5b, 0xff, 0x5d, 0xff, + 0x68, 0x00, 0x66, 0x00, 0xa7, 0x01, 0xa6, 0x01, 0x12, 0x03, 0x12, 0x03, + 0xa3, 0x04, 0xa2, 0x04, 0x51, 0x06, 0x50, 0x06, 0x17, 0x08, 0x17, 0x08, + 0xe8, 0x09, 0xe7, 0x09, 0xbf, 0x0b, 0xc1, 0x0b, 0x93, 0x0d, 0x90, 0x0d, + 0x58, 0x0f, 0x59, 0x0f, 0x0a, 0x11, 0x09, 0x11, 0x9e, 0x12, 0x9d, 0x12, + 0x0e, 0x14, 0x0e, 0x14, 0x4c, 0x15, 0x4b, 0x15, 0x57, 0x16, 0x59, 0x16, + 0x28, 0x17, 0x26, 0x17, 0xb5, 0x17, 0xb4, 0x17, 0xff, 0x17, 0x01, 0x18, + 0xfc, 0x17, 0xfa, 0x17, 0xb4, 0x17, 0xb4, 0x17, 0x1f, 0x17, 0x1e, 0x17, + 0x40, 0x16, 0x3f, 0x16, 0x1b, 0x15, 0x1a, 0x15, 0xb4, 0x13, 0xb3, 0x13, + 0x0e, 0x12, 0x0e, 0x12, 0x36, 0x10, 0x34, 0x10, 0x2c, 0x0e, 0x2b, 0x0e, + 0xfc, 0x0b, 0xfb, 0x0b, 0xb2, 0x09, 0xb2, 0x09, 0x52, 0x07, 0x50, 0x07, + 0xeb, 0x04, 0xea, 0x04, 0x83, 0x02, 0x80, 0x02, 0x24, 0x00, 0x25, 0x00, + 0xdc, 0xfd, 0xda, 0xfd, 0xb3, 0xfb, 0xb1, 0xfb, 0xac, 0xf9, 0xab, 0xf9, + 0xd4, 0xf7, 0xd0, 0xf7, 0x30, 0xf6, 0x30, 0xf6, 0xc8, 0xf4, 0xc6, 0xf4, + 0x9f, 0xf3, 0x9e, 0xf3, 0xb9, 0xf2, 0xb7, 0xf2, 0x14, 0xf2, 0x14, 0xf2, + 0xbd, 0xf1, 0xbc, 0xf1, 0xa3, 0xf1, 0xa3, 0xf1, 0xd3, 0xf1, 0xd1, 0xf1, + 0x3e, 0xf2, 0x3d, 0xf2, 0xec, 0xf2, 0xea, 0xf2, 0xcd, 0xf3, 0xcc, 0xf3, + 0xde, 0xf4, 0xde, 0xf4, 0x1e, 0xf6, 0x1a, 0xf6, 0x77, 0xf7, 0x79, 0xf7, + 0xf6, 0xf8, 0xf2, 0xf8, 0x7d, 0xfa, 0x7e, 0xfa, 0x13, 0xfc, 0x0f, 0xfc, + 0xa2, 0xfd, 0xa3, 0xfd, 0x29, 0xff, 0x26, 0xff, 0x9f, 0x00, 0x9d, 0x00, + 0xf6, 0x01, 0xf4, 0x01, 0x27, 0x03, 0x27, 0x03, 0x2c, 0x04, 0x29, 0x04, + 0xfa, 0x04, 0xfa, 0x04, 0x8f, 0x05, 0x8c, 0x05, 0xe2, 0x05, 0xe1, 0x05, + 0xf7, 0x05, 0xf5, 0x05, 0xc2, 0x05, 0xbf, 0x05, 0x4d, 0x05, 0x4b, 0x05, + 0x91, 0x04, 0x8e, 0x04, 0x97, 0x03, 0x97, 0x03, 0x62, 0x02, 0x60, 0x02, + 0xf4, 0x00, 0xf1, 0x00, 0x56, 0xff, 0x55, 0xff, 0x8e, 0xfd, 0x8c, 0xfd, + 0xa3, 0xfb, 0xa0, 0xfb, 0x9c, 0xf9, 0x9b, 0xf9, 0x84, 0xf7, 0x83, 0xf7, + 0x62, 0xf5, 0x60, 0xf5, 0x3c, 0xf3, 0x3b, 0xf3, 0x1d, 0xf1, 0x1c, 0xf1, + 0x11, 0xef, 0x10, 0xef, 0x1a, 0xed, 0x19, 0xed, 0x44, 0xeb, 0x44, 0xeb, + 0x97, 0xe9, 0x97, 0xe9, 0x17, 0xe8, 0x16, 0xe8, 0xd1, 0xe6, 0xd1, 0xe6, + 0xc2, 0xe5, 0xc0, 0xe5, 0xf4, 0xe4, 0xf4, 0xe4, 0x6e, 0xe4, 0x6d, 0xe4, + 0x28, 0xe4, 0x28, 0xe4, 0x31, 0xe4, 0x30, 0xe4, 0x7b, 0xe4, 0x77, 0xe4, + 0x0f, 0xe5, 0x0e, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xfa, 0xe6, 0xfa, 0xe6, + 0x49, 0xe8, 0x48, 0xe8, 0xcc, 0xe9, 0xcb, 0xe9, 0x7b, 0xeb, 0x7b, 0xeb, + 0x4e, 0xed, 0x4e, 0xed, 0x3b, 0xef, 0x3a, 0xef, 0x3c, 0xf1, 0x3b, 0xf1, + 0x44, 0xf3, 0x44, 0xf3, 0x4d, 0xf5, 0x4b, 0xf5, 0x49, 0xf7, 0x48, 0xf7, + 0x35, 0xf9, 0x35, 0xf9, 0x03, 0xfb, 0x01, 0xfb, 0xad, 0xfc, 0xad, 0xfc, + 0x2d, 0xfe, 0x2c, 0xfe, 0x7b, 0xff, 0x7a, 0xff, 0x97, 0x00, 0x95, 0x00, + 0x70, 0x01, 0x6e, 0x01, 0x11, 0x02, 0x11, 0x02, 0x75, 0x02, 0x72, 0x02, + 0x94, 0x02, 0x93, 0x02, 0x7f, 0x02, 0x7d, 0x02, 0x26, 0x02, 0x25, 0x02, + 0x9b, 0x01, 0x99, 0x01, 0xdb, 0x00, 0xd8, 0x00, 0xe9, 0xff, 0xe9, 0xff, + 0xd4, 0xfe, 0xd2, 0xfe, 0x97, 0xfd, 0x94, 0xfd, 0x43, 0xfc, 0x42, 0xfc, + 0xdb, 0xfa, 0xd9, 0xfa, 0x66, 0xf9, 0x65, 0xf9, 0xf2, 0xf7, 0xf0, 0xf7, + 0x7e, 0xf6, 0x7d, 0xf6, 0x1d, 0xf5, 0x19, 0xf5, 0xce, 0xf3, 0xcd, 0xf3, + 0x9e, 0xf2, 0x9c, 0xf2, 0x95, 0xf1, 0x94, 0xf1, 0xb7, 0xf0, 0xb7, 0xf0, + 0x12, 0xf0, 0x0e, 0xf0, 0xa3, 0xef, 0xa3, 0xef, 0x74, 0xef, 0x72, 0xef, + 0x86, 0xef, 0x84, 0xef, 0xdf, 0xef, 0xde, 0xef, 0x7a, 0xf0, 0x78, 0xf0, + 0x5d, 0xf1, 0x5c, 0xf1, 0x7f, 0xf2, 0x7d, 0xf2, 0xe5, 0xf3, 0xe4, 0xf3, + 0x7f, 0xf5, 0x7e, 0xf5, 0x53, 0xf7, 0x4f, 0xf7, 0x4e, 0xf9, 0x4e, 0xf9, + 0x70, 0xfb, 0x6d, 0xfb, 0xb0, 0xfd, 0xaf, 0xfd, 0x02, 0x00, 0xfe, 0xff, + 0x61, 0x02, 0x5f, 0x02, 0xbd, 0x04, 0xba, 0x04, 0x16, 0x07, 0x14, 0x07, + 0x5f, 0x09, 0x5d, 0x09, 0x8e, 0x0b, 0x8a, 0x0b, 0x9d, 0x0d, 0x9c, 0x0d, + 0x84, 0x0f, 0x81, 0x0f, 0x3b, 0x11, 0x3a, 0x11, 0xbd, 0x12, 0xbc, 0x12, + 0x06, 0x14, 0x02, 0x14, 0x0e, 0x15, 0x0f, 0x15, 0xd2, 0x15, 0xd0, 0x15, + 0x57, 0x16, 0x56, 0x16, 0x91, 0x16, 0x91, 0x16, 0x8c, 0x16, 0x8c, 0x16, + 0x44, 0x16, 0x42, 0x16, 0xbb, 0x15, 0xba, 0x15, 0xfd, 0x14, 0xf9, 0x14, + 0xff, 0x13, 0x00, 0x14, 0xdc, 0x12, 0xd8, 0x12, 0x8a, 0x11, 0x8a, 0x11, + 0x1d, 0x10, 0x1a, 0x10, 0x97, 0x0e, 0x97, 0x0e, 0x02, 0x0d, 0x00, 0x0d, + 0x67, 0x0b, 0x65, 0x0b, 0xd1, 0x09, 0xd1, 0x09, 0x49, 0x08, 0x45, 0x08, + 0xd4, 0x06, 0xd4, 0x06, 0x80, 0x05, 0x80, 0x05, 0x51, 0x04, 0x4d, 0x04, + 0x4b, 0x03, 0x4d, 0x03, 0x7d, 0x02, 0x7a, 0x02, 0xe2, 0x01, 0xe1, 0x01, + 0x83, 0x01, 0x82, 0x01, 0x5d, 0x01, 0x5b, 0x01, 0x77, 0x01, 0x76, 0x01, + 0xca, 0x01, 0xc9, 0x01, 0x5d, 0x02, 0x5a, 0x02, 0x21, 0x03, 0x21, 0x03, + 0x1d, 0x04, 0x1b, 0x04, 0x48, 0x05, 0x46, 0x05, 0x97, 0x06, 0x98, 0x06, + 0x10, 0x08, 0x0d, 0x08, 0x9e, 0x09, 0x9d, 0x09, 0x45, 0x0b, 0x43, 0x0b, + 0xf5, 0x0c, 0xf6, 0x0c, 0xaf, 0x0e, 0xac, 0x0e, 0x61, 0x10, 0x62, 0x10, + 0x0e, 0x12, 0x0c, 0x12, 0xa4, 0x13, 0xa5, 0x13, 0x21, 0x15, 0x20, 0x15, + 0x7e, 0x16, 0x7d, 0x16, 0xb0, 0x17, 0xae, 0x17, 0xb0, 0x18, 0xae, 0x18, + 0x7c, 0x19, 0x7a, 0x19, 0x0b, 0x1a, 0x0a, 0x1a, 0x5c, 0x1a, 0x5a, 0x1a, + 0x69, 0x1a, 0x68, 0x1a, 0x30, 0x1a, 0x2c, 0x1a, 0xb3, 0x19, 0xb2, 0x19, + 0xef, 0x18, 0xed, 0x18, 0xe8, 0x17, 0xe8, 0x17, 0xa6, 0x16, 0xa4, 0x16, + 0x23, 0x15, 0x21, 0x15, 0x71, 0x13, 0x70, 0x13, 0x90, 0x11, 0x8d, 0x11, + 0x84, 0x0f, 0x83, 0x0f, 0x63, 0x0d, 0x5f, 0x0d, 0x24, 0x0b, 0x22, 0x0b, + 0xe0, 0x08, 0xde, 0x08, 0x94, 0x06, 0x92, 0x06, 0x51, 0x04, 0x50, 0x04, + 0x1e, 0x02, 0x1d, 0x02, 0x03, 0x00, 0x00, 0x00, 0x08, 0xfe, 0x08, 0xfe, + 0x37, 0xfc, 0x35, 0xfc, 0x95, 0xfa, 0x93, 0xfa, 0x25, 0xf9, 0x25, 0xf9, + 0xf5, 0xf7, 0xf1, 0xf7, 0xf9, 0xf6, 0xfa, 0xf6, 0x46, 0xf6, 0x44, 0xf6, + 0xcc, 0xf5, 0xca, 0xf5, 0x95, 0xf5, 0x96, 0xf5, 0x9e, 0xf5, 0x9b, 0xf5, + 0xe2, 0xf5, 0xe2, 0xf5, 0x5f, 0xf6, 0x5d, 0xf6, 0x13, 0xf7, 0x11, 0xf7, + 0xf1, 0xf7, 0xf2, 0xf7, 0xfd, 0xf8, 0xf9, 0xf8, 0x25, 0xfa, 0x25, 0xfa, + 0x6a, 0xfb, 0x69, 0xfb, 0xc1, 0xfc, 0xbe, 0xfc, 0x1e, 0xfe, 0x1d, 0xfe, + 0x7e, 0xff, 0x7d, 0xff, 0xd5, 0x00, 0xd3, 0x00, 0x1b, 0x02, 0x1b, 0x02, + 0x48, 0x03, 0x44, 0x03, 0x50, 0x04, 0x52, 0x04, 0x31, 0x05, 0x2d, 0x05, + 0xe0, 0x05, 0xdf, 0x05, 0x54, 0x06, 0x53, 0x06, 0x90, 0x06, 0x8f, 0x06, + 0x8a, 0x06, 0x88, 0x06, 0x41, 0x06, 0x42, 0x06, 0xbc, 0x05, 0xb8, 0x05, + 0xef, 0x04, 0xf0, 0x04, 0xea, 0x03, 0xe8, 0x03, 0xa3, 0x02, 0xa2, 0x02, + 0x2c, 0x01, 0x2a, 0x01, 0x82, 0xff, 0x82, 0xff, 0xae, 0xfd, 0xac, 0xfd, + 0xbc, 0xfb, 0xbb, 0xfb, 0xa9, 0xf9, 0xa7, 0xf9, 0x89, 0xf7, 0x86, 0xf7, + 0x56, 0xf5, 0x56, 0xf5, 0x2a, 0xf3, 0x28, 0xf3, 0xfe, 0xf0, 0xfd, 0xf0, + 0xe6, 0xee, 0xe4, 0xee, 0xe2, 0xec, 0xe0, 0xec, 0xfd, 0xea, 0xfd, 0xea, + 0x41, 0xe9, 0x3f, 0xe9, 0xb0, 0xe7, 0xae, 0xe7, 0x55, 0xe6, 0x53, 0xe6, + 0x35, 0xe5, 0x33, 0xe5, 0x51, 0xe4, 0x4e, 0xe4, 0xb3, 0xe3, 0xb3, 0xe3, + 0x58, 0xe3, 0x55, 0xe3, 0x43, 0xe3, 0x42, 0xe3, 0x74, 0xe3, 0x74, 0xe3, + 0xed, 0xe3, 0xea, 0xe3, 0xa7, 0xe4, 0xa8, 0xe4, 0xa0, 0xe5, 0x9d, 0xe5, + 0xd2, 0xe6, 0xd0, 0xe6, 0x39, 0xe8, 0x37, 0xe8, 0xca, 0xe9, 0xc7, 0xe9, + 0x81, 0xeb, 0x80, 0xeb, 0x52, 0xed, 0x50, 0xed, 0x37, 0xef, 0x37, 0xef, + 0x25, 0xf1, 0x24, 0xf1, 0x15, 0xf3, 0x13, 0xf3, 0xfb, 0xf4, 0xfa, 0xf4, + 0xd0, 0xf6, 0xcc, 0xf6, 0x8a, 0xf8, 0x88, 0xf8, 0x1f, 0xfa, 0x1f, 0xfa, + 0x8d, 0xfb, 0x89, 0xfb, 0xc8, 0xfc, 0xca, 0xfc, 0xd3, 0xfd, 0xcf, 0xfd, + 0xa0, 0xfe, 0x9e, 0xfe, 0x34, 0xff, 0x33, 0xff, 0x8a, 0xff, 0x87, 0xff, + 0xa2, 0xff, 0xa3, 0xff, 0x82, 0xff, 0x80, 0xff, 0x24, 0xff, 0x23, 0xff, + 0x92, 0xfe, 0x91, 0xfe, 0xcc, 0xfd, 0xc9, 0xfd, 0xda, 0xfc, 0xdc, 0xfc, + 0xc1, 0xfb, 0xc0, 0xfb, 0x86, 0xfa, 0x85, 0xfa, 0x32, 0xf9, 0x33, 0xf9, + 0xcb, 0xf7, 0xc8, 0xf7, 0x5b, 0xf6, 0x5b, 0xf6, 0xe7, 0xf4, 0xe3, 0xf4, + 0x75, 0xf3, 0x76, 0xf3, 0x1a, 0xf2, 0x17, 0xf2, 0xcc, 0xf0, 0xcd, 0xf0, + 0xa4, 0xef, 0xa2, 0xef, 0x9d, 0xee, 0x9e, 0xee, 0xc6, 0xed, 0xc3, 0xed, + 0x24, 0xed, 0x24, 0xed, 0xbb, 0xec, 0xba, 0xec, 0x94, 0xec, 0x93, 0xec, + 0xaa, 0xec, 0xaa, 0xec, 0x0b, 0xed, 0x0b, 0xed, 0xaf, 0xed, 0xae, 0xed, + 0x98, 0xee, 0x99, 0xee, 0xc9, 0xef, 0xc6, 0xef, 0x33, 0xf1, 0x34, 0xf1, + 0xe0, 0xf2, 0xdd, 0xf2, 0xbc, 0xf4, 0xbc, 0xf4, 0xcc, 0xf6, 0xcb, 0xf6, + 0xfd, 0xf8, 0xfd, 0xf8, 0x4f, 0xfb, 0x4d, 0xfb, 0xb2, 0xfd, 0xb4, 0xfd, + 0x27, 0x00, 0x24, 0x00, 0x9a, 0x02, 0x98, 0x02, 0x05, 0x05, 0x06, 0x05, + 0x64, 0x07, 0x62, 0x07, 0xa5, 0x09, 0xa6, 0x09, 0xcb, 0x0b, 0xca, 0x0b, + 0xc3, 0x0d, 0xc2, 0x0d, 0x8e, 0x0f, 0x8d, 0x0f, 0x23, 0x11, 0x23, 0x11, + 0x7b, 0x12, 0x7b, 0x12, 0x97, 0x13, 0x95, 0x13, 0x6a, 0x14, 0x6c, 0x14, + 0xff, 0x14, 0xfe, 0x14, 0x4b, 0x15, 0x4b, 0x15, 0x53, 0x15, 0x52, 0x15, + 0x19, 0x15, 0x18, 0x15, 0x9e, 0x14, 0x9e, 0x14, 0xea, 0x13, 0xe9, 0x13, + 0xfe, 0x12, 0xfd, 0x12, 0xe5, 0x11, 0xe5, 0x11, 0xa5, 0x10, 0xa2, 0x10, + 0x41, 0x0f, 0x42, 0x0f, 0xca, 0x0d, 0xc9, 0x0d, 0x45, 0x0c, 0x41, 0x0c, + 0xb5, 0x0a, 0xb9, 0x0a, 0x33, 0x09, 0x31, 0x09, 0xb6, 0x07, 0xb6, 0x07, + 0x56, 0x06, 0x55, 0x06, 0x11, 0x05, 0x0e, 0x05, 0xf4, 0x03, 0xf3, 0x03, + 0x05, 0x03, 0x05, 0x03, 0x47, 0x02, 0x45, 0x02, 0xc4, 0x01, 0xc3, 0x01, + 0x7a, 0x01, 0x77, 0x01, 0x6e, 0x01, 0x6f, 0x01, 0xa0, 0x01, 0x9f, 0x01, + 0x0f, 0x02, 0x0d, 0x02, 0xba, 0x02, 0xba, 0x02, 0x9b, 0x03, 0x9b, 0x03, + 0xb2, 0x04, 0xb1, 0x04, 0xf7, 0x05, 0xf6, 0x05, 0x64, 0x07, 0x61, 0x07, + 0xf4, 0x08, 0xf4, 0x08, 0x9f, 0x0a, 0x9d, 0x0a, 0x5f, 0x0c, 0x5d, 0x0c, + 0x29, 0x0e, 0x29, 0x0e, 0xf9, 0x0f, 0xf6, 0x0f, 0xc5, 0x11, 0xc4, 0x11, + 0x84, 0x13, 0x83, 0x13, 0x33, 0x15, 0x30, 0x15, 0xc2, 0x16, 0xc2, 0x16, + 0x31, 0x18, 0x30, 0x18, 0x75, 0x19, 0x75, 0x19, 0x86, 0x1a, 0x84, 0x1a, + 0x62, 0x1b, 0x62, 0x1b, 0x02, 0x1c, 0x00, 0x1c, 0x60, 0x1c, 0x5d, 0x1c, + 0x78, 0x1c, 0x78, 0x1c, 0x4c, 0x1c, 0x4a, 0x1c, 0xdb, 0x1b, 0xdc, 0x1b, + 0x22, 0x1b, 0x21, 0x1b, 0x29, 0x1a, 0x26, 0x1a, 0xec, 0x18, 0xea, 0x18, + 0x74, 0x17, 0x75, 0x17, 0xc9, 0x15, 0xc8, 0x15, 0xed, 0x13, 0xec, 0x13, + 0xec, 0x11, 0xed, 0x11, 0xcb, 0x0f, 0xc8, 0x0f, 0x97, 0x0d, 0x96, 0x0d, + 0x51, 0x0b, 0x50, 0x0b, 0x0e, 0x09, 0x0c, 0x09, 0xcb, 0x06, 0xcc, 0x06, + 0x9d, 0x04, 0x9c, 0x04, 0x86, 0x02, 0x84, 0x02, 0x8c, 0x00, 0x8c, 0x00, + 0xbd, 0xfe, 0xbc, 0xfe, 0x19, 0xfd, 0x19, 0xfd, 0xac, 0xfb, 0xae, 0xfb, + 0x78, 0xfa, 0x75, 0xfa, 0x7e, 0xf9, 0x80, 0xf9, 0xc5, 0xf8, 0xc4, 0xf8, + 0x4c, 0xf8, 0x4b, 0xf8, 0x0e, 0xf8, 0x10, 0xf8, 0x14, 0xf8, 0x10, 0xf8, + 0x51, 0xf8, 0x52, 0xf8, 0xc6, 0xf8, 0xc6, 0xf8, 0x71, 0xf9, 0x70, 0xf9, + 0x46, 0xfa, 0x48, 0xfa, 0x47, 0xfb, 0x44, 0xfb, 0x64, 0xfc, 0x65, 0xfc, + 0x9e, 0xfd, 0x9e, 0xfd, 0xe9, 0xfe, 0xe6, 0xfe, 0x37, 0x00, 0x39, 0x00, + 0x8e, 0x01, 0x8b, 0x01, 0xd7, 0x02, 0xd7, 0x02, 0x12, 0x04, 0x10, 0x04, + 0x32, 0x05, 0x31, 0x05, 0x32, 0x06, 0x31, 0x06, 0x06, 0x07, 0x07, 0x07, + 0xb1, 0x07, 0xac, 0x07, 0x1c, 0x08, 0x1d, 0x08, 0x50, 0x08, 0x4e, 0x08, + 0x44, 0x08, 0x42, 0x08, 0xf3, 0x07, 0xf4, 0x07, 0x67, 0x07, 0x64, 0x07, + 0x95, 0x06, 0x94, 0x06, 0x83, 0x05, 0x83, 0x05, 0x3b, 0x04, 0x39, 0x04, + 0xb5, 0x02, 0xb6, 0x02, 0x07, 0x01, 0x04, 0x01, 0x24, 0xff, 0x27, 0xff, + 0x26, 0xfd, 0x24, 0xfd, 0x0a, 0xfb, 0x0b, 0xfb, 0xd9, 0xf8, 0xd9, 0xf8, + 0xa0, 0xf6, 0x9f, 0xf6, 0x62, 0xf4, 0x61, 0xf4, 0x2a, 0xf2, 0x28, 0xf2, + 0xfe, 0xef, 0xff, 0xef, 0xea, 0xed, 0xea, 0xed, 0xf5, 0xeb, 0xf3, 0xeb, + 0x24, 0xea, 0x26, 0xea, 0x7f, 0xe8, 0x7d, 0xe8, 0x11, 0xe7, 0x10, 0xe7, + 0xd8, 0xe5, 0xd8, 0xe5, 0xde, 0xe4, 0xdc, 0xe4, 0x25, 0xe4, 0x25, 0xe4, + 0xae, 0xe3, 0xad, 0xe3, 0x82, 0xe3, 0x7f, 0xe3, 0x93, 0xe3, 0x94, 0xe3, + 0xed, 0xe3, 0xeb, 0xe3, 0x86, 0xe4, 0x88, 0xe4, 0x5f, 0xe5, 0x5e, 0xe5, + 0x70, 0xe6, 0x6f, 0xe6, 0xb3, 0xe7, 0xb1, 0xe7, 0x24, 0xe9, 0x22, 0xe9, + 0xb8, 0xea, 0xba, 0xea, 0x6a, 0xec, 0x67, 0xec, 0x2e, 0xee, 0x2e, 0xee, + 0x00, 0xf0, 0x00, 0xf0, 0xd3, 0xf1, 0xd0, 0xf1, 0x9c, 0xf3, 0x9e, 0xf3, + 0x59, 0xf5, 0x55, 0xf5, 0xfb, 0xf6, 0xfb, 0xf6, 0x7d, 0xf8, 0x7c, 0xf8, + 0xd8, 0xf9, 0xd7, 0xf9, 0x05, 0xfb, 0x03, 0xfb, 0x01, 0xfc, 0x01, 0xfc, + 0xc5, 0xfc, 0xc4, 0xfc, 0x53, 0xfd, 0x52, 0xfd, 0xa4, 0xfd, 0xa4, 0xfd, + 0xbc, 0xfd, 0xbb, 0xfd, 0x9a, 0xfd, 0x9a, 0xfd, 0x41, 0xfd, 0x3f, 0xfd, + 0xb2, 0xfc, 0xb1, 0xfc, 0xee, 0xfb, 0xee, 0xfb, 0x08, 0xfb, 0x07, 0xfb, + 0xf4, 0xf9, 0xf3, 0xf9, 0xc3, 0xf8, 0xc2, 0xf8, 0x76, 0xf7, 0x77, 0xf7, + 0x1a, 0xf6, 0x17, 0xf6, 0xb2, 0xf4, 0xb2, 0xf4, 0x46, 0xf3, 0x44, 0xf3, + 0xdf, 0xf1, 0xde, 0xf1, 0x84, 0xf0, 0x83, 0xf0, 0x3e, 0xef, 0x3d, 0xef, + 0x15, 0xee, 0x15, 0xee, 0x0d, 0xed, 0x0d, 0xed, 0x33, 0xec, 0x31, 0xec, + 0x88, 0xeb, 0x88, 0xeb, 0x19, 0xeb, 0x17, 0xeb, 0xdd, 0xea, 0xdc, 0xea, + 0xe9, 0xea, 0xe9, 0xea, 0x34, 0xeb, 0x32, 0xeb, 0xc4, 0xeb, 0xc4, 0xeb, + 0x96, 0xec, 0x94, 0xec, 0xaa, 0xed, 0xa8, 0xed, 0xfd, 0xee, 0xfe, 0xee, + 0x8c, 0xf0, 0x89, 0xf0, 0x50, 0xf2, 0x52, 0xf2, 0x45, 0xf4, 0x43, 0xf4, + 0x5e, 0xf6, 0x5e, 0xf6, 0x9b, 0xf8, 0x9c, 0xf8, 0xee, 0xfa, 0xed, 0xfa, + 0x4e, 0xfd, 0x4e, 0xfd, 0xb8, 0xff, 0xb7, 0xff, 0x1b, 0x02, 0x18, 0x02, + 0x71, 0x04, 0x70, 0x04, 0xb2, 0x06, 0xb2, 0x06, 0xd7, 0x08, 0xd7, 0x08, + 0xda, 0x0a, 0xd8, 0x0a, 0xac, 0x0c, 0xac, 0x0c, 0x4e, 0x0e, 0x4d, 0x0e, + 0xbb, 0x0f, 0xbb, 0x0f, 0xe8, 0x10, 0xe9, 0x10, 0xdb, 0x11, 0xd8, 0x11, + 0x87, 0x12, 0x89, 0x12, 0xf5, 0x12, 0xf2, 0x12, 0x1f, 0x13, 0x1f, 0x13, + 0x0a, 0x13, 0x0a, 0x13, 0xb5, 0x12, 0xb4, 0x12, 0x29, 0x12, 0x28, 0x12, + 0x66, 0x11, 0x66, 0x11, 0x75, 0x10, 0x75, 0x10, 0x5d, 0x0f, 0x5c, 0x0f, + 0x20, 0x0e, 0x20, 0x0e, 0xce, 0x0c, 0xce, 0x0c, 0x6d, 0x0b, 0x6d, 0x0b, + 0xfd, 0x09, 0xfe, 0x09, 0x98, 0x08, 0x97, 0x08, 0x35, 0x07, 0x33, 0x07, + 0xea, 0x05, 0xe9, 0x05, 0xb6, 0x04, 0xb7, 0x04, 0xa6, 0x03, 0xa6, 0x03, + 0xc3, 0x02, 0xc1, 0x02, 0x09, 0x02, 0x0b, 0x02, 0x8c, 0x01, 0x8a, 0x01, + 0x41, 0x01, 0x40, 0x01, 0x33, 0x01, 0x33, 0x01, 0x62, 0x01, 0x60, 0x01, + 0xc9, 0x01, 0xc8, 0x01, 0x70, 0x02, 0x6f, 0x02, 0x4a, 0x03, 0x48, 0x03, + 0x59, 0x04, 0x59, 0x04, 0x99, 0x05, 0x97, 0x05, 0x01, 0x07, 0x01, 0x07, + 0x8e, 0x08, 0x8e, 0x08, 0x39, 0x0a, 0x37, 0x0a, 0xf7, 0x0b, 0xf6, 0x0b, + 0xc5, 0x0d, 0xc6, 0x0d, 0x9c, 0x0f, 0x9a, 0x0f, 0x70, 0x11, 0x6f, 0x11, + 0x39, 0x13, 0x39, 0x13, 0xf6, 0x14, 0xf4, 0x14, 0x98, 0x16, 0x98, 0x16, + 0x1b, 0x18, 0x19, 0x18, 0x77, 0x19, 0x76, 0x19, 0xa7, 0x1a, 0xa5, 0x1a, + 0xa0, 0x1b, 0x9f, 0x1b, 0x62, 0x1c, 0x61, 0x1c, 0xe6, 0x1c, 0xe5, 0x1c, + 0x2a, 0x1d, 0x27, 0x1d, 0x29, 0x1d, 0x29, 0x1d, 0xe4, 0x1c, 0xe1, 0x1c, + 0x59, 0x1c, 0x5a, 0x1c, 0x8b, 0x1b, 0x8a, 0x1b, 0x80, 0x1a, 0x7d, 0x1a, + 0x34, 0x19, 0x33, 0x19, 0xb3, 0x17, 0xb4, 0x17, 0x04, 0x16, 0x01, 0x16, + 0x26, 0x14, 0x27, 0x14, 0x2c, 0x12, 0x2a, 0x12, 0x12, 0x10, 0x12, 0x10, + 0xec, 0x0d, 0xed, 0x0d, 0xbd, 0x0b, 0xbb, 0x0b, 0x8d, 0x09, 0x8d, 0x09, + 0x6c, 0x07, 0x6a, 0x07, 0x58, 0x05, 0x58, 0x05, 0x65, 0x03, 0x66, 0x03, + 0x91, 0x01, 0x90, 0x01, 0xeb, 0xff, 0xeb, 0xff, 0x73, 0xfe, 0x72, 0xfe, + 0x2e, 0xfd, 0x2e, 0xfd, 0x27, 0xfc, 0x27, 0xfc, 0x57, 0xfb, 0x56, 0xfb, + 0xc6, 0xfa, 0xc6, 0xfa, 0x74, 0xfa, 0x73, 0xfa, 0x5b, 0xfa, 0x5b, 0xfa, + 0x81, 0xfa, 0x80, 0xfa, 0xda, 0xfa, 0xda, 0xfa, 0x6b, 0xfb, 0x6a, 0xfb, + 0x29, 0xfc, 0x2a, 0xfc, 0x10, 0xfd, 0x0e, 0xfd, 0x1a, 0xfe, 0x1a, 0xfe, + 0x41, 0xff, 0x40, 0xff, 0x79, 0x00, 0x7a, 0x00, 0xc2, 0x01, 0xc1, 0x01, + 0x0a, 0x03, 0x09, 0x03, 0x52, 0x04, 0x51, 0x04, 0x8b, 0x05, 0x89, 0x05, + 0xb0, 0x06, 0xaf, 0x06, 0xb7, 0x07, 0xb5, 0x07, 0x97, 0x08, 0x97, 0x08, + 0x4e, 0x09, 0x4c, 0x09, 0xd0, 0x09, 0xcf, 0x09, 0x1b, 0x0a, 0x1a, 0x0a, + 0x27, 0x0a, 0x26, 0x0a, 0xf3, 0x09, 0xf2, 0x09, 0x7d, 0x09, 0x7b, 0x09, + 0xc3, 0x08, 0xc3, 0x08, 0xcd, 0x07, 0xcc, 0x07, 0x95, 0x06, 0x94, 0x06, + 0x26, 0x05, 0x25, 0x05, 0x7f, 0x03, 0x80, 0x03, 0xb0, 0x01, 0xaf, 0x01, + 0xb3, 0xff, 0xb3, 0xff, 0x9c, 0xfd, 0x9b, 0xfd, 0x69, 0xfb, 0x68, 0xfb, + 0x27, 0xf9, 0x27, 0xf9, 0xe0, 0xf6, 0xdf, 0xf6, 0x93, 0xf4, 0x95, 0xf4, + 0x5a, 0xf2, 0x57, 0xf2, 0x27, 0xf0, 0x27, 0xf0, 0x19, 0xee, 0x16, 0xee, + 0x22, 0xec, 0x25, 0xec, 0x5f, 0xea, 0x5b, 0xea, 0xc5, 0xe8, 0xc6, 0xe8, + 0x61, 0xe7, 0x5e, 0xe7, 0x3b, 0xe6, 0x3b, 0xe6, 0x54, 0xe5, 0x52, 0xe5, + 0xae, 0xe4, 0xad, 0xe4, 0x4f, 0xe4, 0x4d, 0xe4, 0x31, 0xe4, 0x30, 0xe4, + 0x5f, 0xe4, 0x5c, 0xe4, 0xc7, 0xe4, 0xc7, 0xe4, 0x74, 0xe5, 0x71, 0xe5, + 0x5e, 0xe6, 0x5c, 0xe6, 0x79, 0xe7, 0x78, 0xe7, 0xc8, 0xe8, 0xc7, 0xe8, + 0x3f, 0xea, 0x3c, 0xea, 0xd4, 0xeb, 0xd2, 0xeb, 0x86, 0xed, 0x86, 0xed, + 0x45, 0xef, 0x43, 0xef, 0x09, 0xf1, 0x08, 0xf1, 0xcd, 0xf2, 0xcb, 0xf2, + 0x83, 0xf4, 0x82, 0xf4, 0x28, 0xf6, 0x27, 0xf6, 0xac, 0xf7, 0xa8, 0xf7, + 0x0e, 0xf9, 0x0c, 0xf9, 0x45, 0xfa, 0x44, 0xfa, 0x4b, 0xfb, 0x49, 0xfb, + 0x1d, 0xfc, 0x1b, 0xfc, 0xb7, 0xfc, 0xb6, 0xfc, 0x16, 0xfd, 0x13, 0xfd, + 0x39, 0xfd, 0x37, 0xfd, 0x20, 0xfd, 0x1f, 0xfd, 0xd1, 0xfc, 0xcf, 0xfc, + 0x48, 0xfc, 0x47, 0xfc, 0x8e, 0xfb, 0x8e, 0xfb, 0xa6, 0xfa, 0xa4, 0xfa, + 0x96, 0xf9, 0x94, 0xf9, 0x5e, 0xf8, 0x5d, 0xf8, 0x0e, 0xf7, 0x0c, 0xf7, + 0xa6, 0xf5, 0xa4, 0xf5, 0x2e, 0xf4, 0x2e, 0xf4, 0xb6, 0xf2, 0xb2, 0xf2, + 0x35, 0xf1, 0x36, 0xf1, 0xc6, 0xef, 0xc3, 0xef, 0x5f, 0xee, 0x61, 0xee, + 0x1c, 0xed, 0x18, 0xed, 0xf0, 0xeb, 0xf1, 0xeb, 0xf4, 0xea, 0xf2, 0xea, + 0x21, 0xea, 0x20, 0xea, 0x86, 0xe9, 0x86, 0xe9, 0x27, 0xe9, 0x22, 0xe9, + 0x04, 0xe9, 0x05, 0xe9, 0x29, 0xe9, 0x25, 0xe9, 0x8b, 0xe9, 0x8b, 0xe9, + 0x39, 0xea, 0x37, 0xea, 0x28, 0xeb, 0x25, 0xeb, 0x58, 0xec, 0x57, 0xec, + 0xcb, 0xed, 0xc8, 0xed, 0x71, 0xef, 0x70, 0xef, 0x54, 0xf1, 0x52, 0xf1, + 0x5d, 0xf3, 0x5a, 0xf3, 0x90, 0xf5, 0x8e, 0xf5, 0xdd, 0xf7, 0xdb, 0xf7, + 0x3e, 0xfa, 0x3c, 0xfa, 0xac, 0xfc, 0xaa, 0xfc, 0x17, 0xff, 0x14, 0xff, + 0x81, 0x01, 0x7e, 0x01, 0xd3, 0x03, 0xd3, 0x03, 0x11, 0x06, 0x0e, 0x06, + 0x2a, 0x08, 0x2a, 0x08, 0x1c, 0x0a, 0x1a, 0x0a, 0xe1, 0x0b, 0xdf, 0x0b, + 0x6a, 0x0d, 0x68, 0x0d, 0xbe, 0x0e, 0xbb, 0x0e, 0xcd, 0x0f, 0xcc, 0x0f, + 0x9f, 0x10, 0x9c, 0x10, 0x2d, 0x11, 0x2a, 0x11, 0x73, 0x11, 0x73, 0x11, + 0x7f, 0x11, 0x7c, 0x11, 0x45, 0x11, 0x42, 0x11, 0xd2, 0x10, 0xd0, 0x10, + 0x26, 0x10, 0x22, 0x10, 0x45, 0x0f, 0x42, 0x0f, 0x3d, 0x0e, 0x3d, 0x0e, + 0x0d, 0x0d, 0x09, 0x0d, 0xc2, 0x0b, 0xc0, 0x0b, 0x60, 0x0a, 0x5e, 0x0a, + 0xf5, 0x08, 0xf2, 0x08, 0x84, 0x07, 0x82, 0x07, 0x1b, 0x06, 0x19, 0x06, + 0xc2, 0x04, 0xc1, 0x04, 0x82, 0x03, 0x7e, 0x03, 0x61, 0x02, 0x60, 0x02, + 0x6a, 0x01, 0x67, 0x01, 0xa0, 0x00, 0x9e, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0xb4, 0xff, 0xb1, 0xff, 0x96, 0xff, 0x95, 0xff, 0xb6, 0xff, 0xb5, 0xff, + 0x18, 0x00, 0x14, 0x00, 0xb2, 0x00, 0xb1, 0x00, 0x8c, 0x01, 0x8a, 0x01, + 0x9a, 0x02, 0x9b, 0x02, 0xdf, 0x03, 0xdb, 0x03, 0x52, 0x05, 0x51, 0x05, + 0xec, 0x06, 0xe9, 0x06, 0xa7, 0x08, 0xa8, 0x08, 0x7f, 0x0a, 0x7c, 0x0a, + 0x68, 0x0c, 0x67, 0x0c, 0x5a, 0x0e, 0x57, 0x0e, 0x50, 0x10, 0x50, 0x10, + 0x43, 0x12, 0x3e, 0x12, 0x23, 0x14, 0x25, 0x14, 0xf3, 0x15, 0xef, 0x15, + 0xa3, 0x17, 0xa2, 0x17, 0x2c, 0x19, 0x2a, 0x19, 0x8f, 0x1a, 0x8b, 0x1a, + 0xb5, 0x1b, 0xb6, 0x1b, 0xae, 0x1c, 0xa9, 0x1c, 0x60, 0x1d, 0x5f, 0x1d, + 0xd4, 0x1d, 0xd1, 0x1d, 0x04, 0x1e, 0x02, 0x1e, 0xe9, 0x1d, 0xe7, 0x1d, + 0x8c, 0x1d, 0x8a, 0x1d, 0xe5, 0x1c, 0xe3, 0x1c, 0xfd, 0x1b, 0xfa, 0x1b, + 0xd3, 0x1a, 0xd1, 0x1a, 0x6c, 0x19, 0x6a, 0x19, 0xd3, 0x17, 0xd1, 0x17, + 0x06, 0x16, 0x05, 0x16, 0x18, 0x14, 0x17, 0x14, 0x09, 0x12, 0x06, 0x12, + 0xe4, 0x0f, 0xe4, 0x0f, 0xb7, 0x0d, 0xb3, 0x0d, 0x7f, 0x0b, 0x7d, 0x0b, + 0x55, 0x09, 0x51, 0x09, 0x37, 0x07, 0x35, 0x07, 0x33, 0x05, 0x32, 0x05, + 0x51, 0x03, 0x4f, 0x03, 0x94, 0x01, 0x92, 0x01, 0x09, 0x00, 0x07, 0x00, + 0xb1, 0xfe, 0xae, 0xfe, 0x94, 0xfd, 0x93, 0xfd, 0xb4, 0xfc, 0xaf, 0xfc, + 0x10, 0xfc, 0x0e, 0xfc, 0xad, 0xfb, 0xab, 0xfb, 0x87, 0xfb, 0x85, 0xfb, + 0xa2, 0xfb, 0x9f, 0xfb, 0xf5, 0xfb, 0xf2, 0xfb, 0x7e, 0xfc, 0x7a, 0xfc, + 0x3c, 0xfd, 0x3b, 0xfd, 0x23, 0xfe, 0x1e, 0xfe, 0x32, 0xff, 0x30, 0xff, + 0x61, 0x00, 0x5f, 0x00, 0xa6, 0x01, 0xa2, 0x01, 0xff, 0x02, 0xfd, 0x02, + 0x5c, 0x04, 0x5a, 0x04, 0xba, 0x05, 0xb7, 0x05, 0x0c, 0x07, 0x0b, 0x07, + 0x4e, 0x08, 0x4a, 0x08, 0x75, 0x09, 0x76, 0x09, 0x7a, 0x0a, 0x75, 0x0a, + 0x52, 0x0b, 0x51, 0x0b, 0xf9, 0x0b, 0xf5, 0x0b, 0x68, 0x0c, 0x66, 0x0c, + 0x99, 0x0c, 0x97, 0x0c, 0x89, 0x0c, 0x85, 0x0c, 0x34, 0x0c, 0x31, 0x0c, + 0x96, 0x0b, 0x94, 0x0b, 0xb7, 0x0a, 0xb2, 0x0a, 0x91, 0x09, 0x90, 0x09, + 0x2f, 0x08, 0x2c, 0x08, 0x91, 0x06, 0x8f, 0x06, 0xbf, 0x04, 0xbe, 0x04, + 0xc0, 0x02, 0xbc, 0x02, 0x98, 0x00, 0x97, 0x00, 0x56, 0xfe, 0x52, 0xfe, + 0xfb, 0xfb, 0xfb, 0xfb, 0x97, 0xf9, 0x93, 0xf9, 0x2c, 0xf7, 0x28, 0xf7, + 0xc7, 0xf4, 0xc5, 0xf4, 0x71, 0xf2, 0x6c, 0xf2, 0x30, 0xf0, 0x2e, 0xf0, + 0x10, 0xee, 0x0c, 0xee, 0x15, 0xec, 0x13, 0xec, 0x4b, 0xea, 0x47, 0xea, + 0xb4, 0xe8, 0xb3, 0xe8, 0x58, 0xe7, 0x55, 0xe7, 0x3f, 0xe6, 0x3c, 0xe6, + 0x66, 0xe5, 0x63, 0xe5, 0xd6, 0xe4, 0xd2, 0xe4, 0x8c, 0xe4, 0x89, 0xe4, + 0x8c, 0xe4, 0x89, 0xe4, 0xd3, 0xe4, 0xd1, 0xe4, 0x5e, 0xe5, 0x5b, 0xe5, + 0x2a, 0xe6, 0x29, 0xe6, 0x30, 0xe7, 0x2d, 0xe7, 0x6e, 0xe8, 0x6b, 0xe8, + 0xd6, 0xe9, 0xd5, 0xe9, 0x68, 0xeb, 0x64, 0xeb, 0x15, 0xed, 0x12, 0xed, + 0xd7, 0xee, 0xd6, 0xee, 0xa9, 0xf0, 0xa4, 0xf0, 0x75, 0xf2, 0x73, 0xf2, + 0x3e, 0xf4, 0x3b, 0xf4, 0xf6, 0xf5, 0xf2, 0xf5, 0x8f, 0xf7, 0x8f, 0xf7, + 0x0c, 0xf9, 0x08, 0xf9, 0x5b, 0xfa, 0x59, 0xfa, 0x7a, 0xfb, 0x77, 0xfb, + 0x64, 0xfc, 0x61, 0xfc, 0x15, 0xfd, 0x11, 0xfd, 0x85, 0xfd, 0x85, 0xfd, + 0xb9, 0xfd, 0xb6, 0xfd, 0xb0, 0xfd, 0xad, 0xfd, 0x65, 0xfd, 0x64, 0xfd, + 0xe3, 0xfc, 0xe0, 0xfc, 0x26, 0xfc, 0x24, 0xfc, 0x39, 0xfb, 0x36, 0xfb, + 0x19, 0xfa, 0x16, 0xfa, 0xd5, 0xf8, 0xd2, 0xf8, 0x6d, 0xf7, 0x6a, 0xf7, + 0xe9, 0xf5, 0xe8, 0xf5, 0x53, 0xf4, 0x50, 0xf4, 0xb3, 0xf2, 0xb1, 0xf2, + 0x0f, 0xf1, 0x0c, 0xf1, 0x6f, 0xef, 0x6d, 0xef, 0xdc, 0xed, 0xda, 0xed, + 0x5e, 0xec, 0x5c, 0xec, 0xfd, 0xea, 0xfb, 0xea, 0xc6, 0xe9, 0xc3, 0xe9, + 0xb8, 0xe8, 0xb5, 0xe8, 0xe0, 0xe7, 0xdf, 0xe7, 0x46, 0xe7, 0x42, 0xe7, + 0xe6, 0xe6, 0xe8, 0xe6, 0xd2, 0xe6, 0xce, 0xe6, 0x00, 0xe7, 0xfe, 0xe6, + 0x79, 0xe7, 0x77, 0xe7, 0x3d, 0xe8, 0x3a, 0xe8, 0x44, 0xe9, 0x43, 0xe9, + 0x96, 0xea, 0x92, 0xea, 0x21, 0xec, 0x21, 0xec, 0xf0, 0xed, 0xeb, 0xed, + 0xee, 0xef, 0xed, 0xef, 0x1e, 0xf2, 0x1a, 0xf2, 0x6f, 0xf4, 0x6d, 0xf4, + 0xdd, 0xf6, 0xd9, 0xf6, 0x5f, 0xf9, 0x5d, 0xf9, 0xe6, 0xfb, 0xe2, 0xfb, + 0x6d, 0xfe, 0x6b, 0xfe, 0xe8, 0x00, 0xe6, 0x00, 0x51, 0x03, 0x4b, 0x03, + 0x99, 0x05, 0x99, 0x05, 0xbd, 0x07, 0xb8, 0x07, 0xb3, 0x09, 0xb2, 0x09, + 0x70, 0x0b, 0x6d, 0x0b, 0xf9, 0x0c, 0xf6, 0x0c, 0x3c, 0x0e, 0x38, 0x0e, + 0x43, 0x0f, 0x3f, 0x0f, 0xfc, 0x0f, 0xf9, 0x0f, 0x70, 0x10, 0x6e, 0x10, + 0xa0, 0x10, 0x9d, 0x10, 0x86, 0x10, 0x83, 0x10, 0x31, 0x10, 0x30, 0x10, + 0x99, 0x0f, 0x95, 0x0f, 0xca, 0x0e, 0xc8, 0x0e, 0xc9, 0x0d, 0xc5, 0x0d, + 0x9a, 0x0c, 0x97, 0x0c, 0x49, 0x0b, 0x46, 0x0b, 0xdc, 0x09, 0xd9, 0x09, + 0x5d, 0x08, 0x59, 0x08, 0xd3, 0x06, 0xd1, 0x06, 0x48, 0x05, 0x45, 0x05, + 0xca, 0x03, 0xc6, 0x03, 0x5c, 0x02, 0x59, 0x02, 0x0f, 0x01, 0x0b, 0x01, + 0xe6, 0xff, 0xe3, 0xff, 0xe7, 0xfe, 0xe6, 0xfe, 0x26, 0xfe, 0x23, 0xfe, + 0x99, 0xfd, 0x96, 0xfd, 0x4f, 0xfd, 0x4a, 0xfd, 0x45, 0xfd, 0x44, 0xfd, + 0x7f, 0xfd, 0x7a, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xc0, 0xfe, 0xbc, 0xfe, + 0xc1, 0xff, 0xc2, 0xff, 0xff, 0x00, 0xfc, 0x00, 0x72, 0x02, 0x70, 0x02, + 0x19, 0x04, 0x17, 0x04, 0xe7, 0x05, 0xe3, 0x05, 0xd6, 0x07, 0xd5, 0x07, + 0xe4, 0x09, 0xe1, 0x09, 0x02, 0x0c, 0xff, 0x0b, 0x2b, 0x0e, 0x28, 0x0e, + 0x51, 0x10, 0x50, 0x10, 0x74, 0x12, 0x71, 0x12, 0x84, 0x14, 0x80, 0x14, + 0x7a, 0x16, 0x7a, 0x16, 0x53, 0x18, 0x4f, 0x18, 0xff, 0x19, 0xfd, 0x19, + 0x7f, 0x1b, 0x7a, 0x1b, 0xc2, 0x1c, 0xc0, 0x1c, 0xc8, 0x1d, 0xc7, 0x1d, + 0x8c, 0x1e, 0x89, 0x1e, 0x07, 0x1f, 0x05, 0x1f, 0x39, 0x1f, 0x36, 0x1f, + 0x1c, 0x1f, 0x1a, 0x1f, 0xb8, 0x1e, 0xb5, 0x1e, 0x05, 0x1e, 0x02, 0x1e, + 0x0a, 0x1d, 0x06, 0x1d, 0xcd, 0x1b, 0xcb, 0x1b, 0x4f, 0x1a, 0x4b, 0x1a, + 0x9b, 0x18, 0x99, 0x18, 0xb6, 0x16, 0xb2, 0x16, 0xaa, 0x14, 0xa7, 0x14, + 0x7f, 0x12, 0x7b, 0x12, 0x3f, 0x10, 0x3c, 0x10, 0xf2, 0x0d, 0xf0, 0x0d, + 0xa8, 0x0b, 0xa5, 0x0b, 0x67, 0x09, 0x63, 0x09, 0x36, 0x07, 0x34, 0x07, + 0x27, 0x05, 0x23, 0x05, 0x37, 0x03, 0x34, 0x03, 0x79, 0x01, 0x76, 0x01, + 0xed, 0xff, 0xe9, 0xff, 0x9c, 0xfe, 0x98, 0xfe, 0x8a, 0xfd, 0x87, 0xfd, + 0xb8, 0xfc, 0xb3, 0xfc, 0x29, 0xfc, 0x27, 0xfc, 0xe1, 0xfb, 0xdc, 0xfb, + 0xd9, 0xfb, 0xd6, 0xfb, 0x16, 0xfc, 0x13, 0xfc, 0x8d, 0xfc, 0x89, 0xfc, + 0x40, 0xfd, 0x3d, 0xfd, 0x25, 0xfe, 0x23, 0xfe, 0x38, 0xff, 0x36, 0xff, + 0x77, 0x00, 0x73, 0x00, 0xd0, 0x01, 0xcc, 0x01, 0x44, 0x03, 0x41, 0x03, + 0xc4, 0x04, 0xc1, 0x04, 0x4d, 0x06, 0x4a, 0x06, 0xd5, 0x07, 0xd0, 0x07, + 0x4c, 0x09, 0x49, 0x09, 0xb2, 0x0a, 0xb0, 0x0a, 0xf7, 0x0b, 0xf4, 0x0b, + 0x16, 0x0d, 0x13, 0x0d, 0x05, 0x0e, 0x02, 0x0e, 0xbd, 0x0e, 0xba, 0x0e, + 0x39, 0x0f, 0x36, 0x0f, 0x6f, 0x0f, 0x6a, 0x0f, 0x5d, 0x0f, 0x5c, 0x0f, + 0x01, 0x0f, 0xfd, 0x0e, 0x59, 0x0e, 0x55, 0x0e, 0x66, 0x0d, 0x64, 0x0d, + 0x29, 0x0c, 0x25, 0x0c, 0xab, 0x0a, 0xa6, 0x0a, 0xe9, 0x08, 0xe8, 0x08, + 0xf4, 0x06, 0xef, 0x06, 0xca, 0x04, 0xc8, 0x04, 0x7b, 0x02, 0x77, 0x02, + 0x0c, 0x00, 0x07, 0x00, 0x86, 0xfd, 0x83, 0xfd, 0xf4, 0xfa, 0xf0, 0xfa, + 0x5d, 0xf8, 0x59, 0xf8, 0xcf, 0xf5, 0xcc, 0xf5, 0x4f, 0xf3, 0x4b, 0xf3, + 0xeb, 0xf0, 0xe7, 0xf0, 0xa7, 0xee, 0xa4, 0xee, 0x8f, 0xec, 0x89, 0xec, + 0xa8, 0xea, 0xa6, 0xea, 0xfc, 0xe8, 0xf7, 0xe8, 0x91, 0xe7, 0x8f, 0xe7, + 0x6b, 0xe6, 0x65, 0xe6, 0x8b, 0xe5, 0x8a, 0xe5, 0xfe, 0xe4, 0xf9, 0xe4, + 0xb5, 0xe4, 0xb2, 0xe4, 0xc3, 0xe4, 0xbd, 0xe4, 0x12, 0xe5, 0x10, 0xe5, + 0xb3, 0xe5, 0xae, 0xe5, 0x91, 0xe6, 0x8f, 0xe6, 0xb1, 0xe7, 0xae, 0xe7, + 0x07, 0xe9, 0x02, 0xe9, 0x8d, 0xea, 0x8a, 0xea, 0x3b, 0xec, 0x36, 0xec, + 0x05, 0xee, 0x02, 0xee, 0xe4, 0xef, 0xe0, 0xef, 0xc9, 0xf1, 0xc6, 0xf1, + 0xb4, 0xf3, 0xaf, 0xf3, 0x8e, 0xf5, 0x89, 0xf5, 0x55, 0xf7, 0x52, 0xf7, + 0xfe, 0xf8, 0xfb, 0xf8, 0x7e, 0xfa, 0x7a, 0xfa, 0xd3, 0xfb, 0xcf, 0xfb, + 0xec, 0xfc, 0xe8, 0xfc, 0xce, 0xfd, 0xcd, 0xfd, 0x6d, 0xfe, 0x68, 0xfe, + 0xcc, 0xfe, 0xca, 0xfe, 0xe5, 0xfe, 0xe2, 0xfe, 0xbc, 0xfe, 0xb9, 0xfe, + 0x4f, 0xfe, 0x4f, 0xfe, 0xa5, 0xfd, 0xa0, 0xfd, 0xbd, 0xfc, 0xbc, 0xfc, + 0xa3, 0xfb, 0xa0, 0xfb, 0x55, 0xfa, 0x53, 0xfa, 0xde, 0xf8, 0xda, 0xf8, + 0x46, 0xf7, 0x44, 0xf7, 0x92, 0xf5, 0x8e, 0xf5, 0xcb, 0xf3, 0xc8, 0xf3, + 0xfb, 0xf1, 0xf7, 0xf1, 0x26, 0xf0, 0x23, 0xf0, 0x5c, 0xee, 0x5a, 0xee, + 0x9e, 0xec, 0x9a, 0xec, 0xff, 0xea, 0xfc, 0xea, 0x7a, 0xe9, 0x77, 0xe9, + 0x24, 0xe8, 0x20, 0xe8, 0xfd, 0xe6, 0xf9, 0xe6, 0x0f, 0xe6, 0x0d, 0xe6, + 0x63, 0xe5, 0x61, 0xe5, 0xfc, 0xe4, 0xf8, 0xe4, 0xe0, 0xe4, 0xdd, 0xe4, + 0x0e, 0xe5, 0x0b, 0xe5, 0x8e, 0xe5, 0x8a, 0xe5, 0x5a, 0xe6, 0x58, 0xe6, + 0x73, 0xe7, 0x6d, 0xe7, 0xd5, 0xe8, 0xd4, 0xe8, 0x7c, 0xea, 0x76, 0xea, + 0x5e, 0xec, 0x5e, 0xec, 0x7c, 0xee, 0x75, 0xee, 0xc4, 0xf0, 0xc1, 0xf0, + 0x35, 0xf3, 0x32, 0xf3, 0xc0, 0xf5, 0xbb, 0xf5, 0x59, 0xf8, 0x56, 0xf8, + 0xff, 0xfa, 0xfa, 0xfa, 0x9b, 0xfd, 0x99, 0xfd, 0x2e, 0x00, 0x2a, 0x00, + 0xa4, 0x02, 0xa3, 0x02, 0xfe, 0x04, 0xfb, 0x04, 0x2a, 0x07, 0x26, 0x07, + 0x23, 0x09, 0x20, 0x09, 0xe5, 0x0a, 0xe1, 0x0a, 0x64, 0x0c, 0x60, 0x0c, + 0x9e, 0x0d, 0x9d, 0x0d, 0x94, 0x0e, 0x8f, 0x0e, 0x3b, 0x0f, 0x39, 0x0f, + 0x9a, 0x0f, 0x96, 0x0f, 0xb1, 0x0f, 0xac, 0x0f, 0x79, 0x0f, 0x78, 0x0f, + 0x04, 0x0f, 0xff, 0x0e, 0x4c, 0x0e, 0x4a, 0x0e, 0x5b, 0x0d, 0x58, 0x0d, + 0x37, 0x0c, 0x33, 0x0c, 0xe7, 0x0a, 0xe4, 0x0a, 0x73, 0x09, 0x70, 0x09, + 0xe8, 0x07, 0xe5, 0x07, 0x48, 0x06, 0x45, 0x06, 0xa6, 0x04, 0xa1, 0x04, + 0x05, 0x03, 0x02, 0x03, 0x72, 0x01, 0x6e, 0x01, 0xf7, 0xff, 0xf3, 0xff, + 0x9c, 0xfe, 0x98, 0xfe, 0x6b, 0xfd, 0x68, 0xfd, 0x72, 0xfc, 0x70, 0xfc, + 0xb0, 0xfb, 0xad, 0xfb, 0x33, 0xfb, 0x30, 0xfb, 0xf6, 0xfa, 0xf4, 0xfa, + 0x05, 0xfb, 0x01, 0xfb, 0x5d, 0xfb, 0x5b, 0xfb, 0xfb, 0xfb, 0xf9, 0xfb, + 0xe6, 0xfc, 0xe3, 0xfc, 0x0f, 0xfe, 0x0c, 0xfe, 0x79, 0xff, 0x76, 0xff, + 0x1d, 0x01, 0x1a, 0x01, 0xee, 0x02, 0xec, 0x02, 0xef, 0x04, 0xec, 0x04, + 0x10, 0x07, 0x0c, 0x07, 0x49, 0x09, 0x48, 0x09, 0x98, 0x0b, 0x92, 0x0b, + 0xe5, 0x0d, 0xe4, 0x0d, 0x3b, 0x10, 0x36, 0x10, 0x7d, 0x12, 0x7b, 0x12, + 0xb2, 0x14, 0xae, 0x14, 0xc5, 0x16, 0xc2, 0x16, 0xb6, 0x18, 0xb1, 0x18, + 0x76, 0x1a, 0x73, 0x1a, 0x00, 0x1c, 0xfc, 0x1b, 0x4f, 0x1d, 0x4c, 0x1d, + 0x59, 0x1e, 0x55, 0x1e, 0x1a, 0x1f, 0x16, 0x1f, 0x90, 0x1f, 0x8c, 0x1f, + 0xb4, 0x1f, 0xb1, 0x1f, 0x8c, 0x1f, 0x87, 0x1f, 0x11, 0x1f, 0x0d, 0x1f, + 0x48, 0x1e, 0x43, 0x1e, 0x36, 0x1d, 0x32, 0x1d, 0xde, 0x1b, 0xda, 0x1b, + 0x46, 0x1a, 0x41, 0x1a, 0x78, 0x18, 0x74, 0x18, 0x79, 0x16, 0x74, 0x16, + 0x57, 0x14, 0x52, 0x14, 0x17, 0x12, 0x12, 0x12, 0xc7, 0x0f, 0xc2, 0x0f, + 0x6d, 0x0d, 0x68, 0x0d, 0x1a, 0x0b, 0x15, 0x0b, 0xd3, 0x08, 0xcf, 0x08, + 0xa7, 0x06, 0xa3, 0x06, 0x9b, 0x04, 0x98, 0x04, 0xbe, 0x02, 0xb8, 0x02, + 0x0f, 0x01, 0x0a, 0x01, 0x9d, 0xff, 0x98, 0xff, 0x69, 0xfe, 0x64, 0xfe, + 0x7b, 0xfd, 0x76, 0xfd, 0xcf, 0xfc, 0xca, 0xfc, 0x6e, 0xfc, 0x69, 0xfc, + 0x51, 0xfc, 0x4d, 0xfc, 0x7b, 0xfc, 0x77, 0xfc, 0xe9, 0xfc, 0xe3, 0xfc, + 0x91, 0xfd, 0x8d, 0xfd, 0x77, 0xfe, 0x73, 0xfe, 0x8c, 0xff, 0x87, 0xff, + 0xcf, 0x00, 0xcc, 0x00, 0x39, 0x02, 0x34, 0x02, 0xbf, 0x03, 0xb8, 0x03, + 0x58, 0x05, 0x53, 0x05, 0xfd, 0x06, 0xfa, 0x06, 0xa1, 0x08, 0x9b, 0x08, + 0x43, 0x0a, 0x3f, 0x0a, 0xce, 0x0b, 0xc8, 0x0b, 0x41, 0x0d, 0x3d, 0x0d, + 0x8d, 0x0e, 0x8b, 0x0e, 0xae, 0x0f, 0xa7, 0x0f, 0x9a, 0x10, 0x96, 0x10, + 0x47, 0x11, 0x40, 0x11, 0xae, 0x11, 0xab, 0x11, 0xd2, 0x11, 0xcb, 0x11, + 0xa0, 0x11, 0x9e, 0x11, 0x29, 0x11, 0x22, 0x11, 0x57, 0x10, 0x54, 0x10, + 0x3c, 0x0f, 0x37, 0x0f, 0xd6, 0x0d, 0xd1, 0x0d, 0x2a, 0x0c, 0x25, 0x0c, + 0x3c, 0x0a, 0x36, 0x0a, 0x18, 0x08, 0x13, 0x08, 0xc0, 0x05, 0xbc, 0x05, + 0x48, 0x03, 0x43, 0x03, 0xac, 0x00, 0xa8, 0x00, 0x04, 0xfe, 0x00, 0xfe, + 0x4f, 0xfb, 0x4a, 0xfb, 0x9d, 0xf8, 0x99, 0xf8, 0xfb, 0xf5, 0xf7, 0xf5, + 0x68, 0xf3, 0x63, 0xf3, 0xf8, 0xf0, 0xf4, 0xf0, 0xb1, 0xee, 0xaa, 0xee, + 0x99, 0xec, 0x96, 0xec, 0xbc, 0xea, 0xb8, 0xea, 0x20, 0xe9, 0x1c, 0xe9, + 0xcc, 0xe7, 0xc7, 0xe7, 0xbd, 0xe6, 0xb9, 0xe6, 0x02, 0xe6, 0xfc, 0xe5, + 0x94, 0xe5, 0x90, 0xe5, 0x79, 0xe5, 0x75, 0xe5, 0xab, 0xe5, 0xa8, 0xe5, + 0x2e, 0xe6, 0x28, 0xe6, 0xf3, 0xe6, 0xf2, 0xe6, 0x06, 0xe8, 0xfe, 0xe7, + 0x4b, 0xe9, 0x49, 0xe9, 0xce, 0xea, 0xc7, 0xea, 0x75, 0xec, 0x73, 0xec, + 0x43, 0xee, 0x3e, 0xee, 0x28, 0xf0, 0x24, 0xf0, 0x1b, 0xf2, 0x16, 0xf2, + 0x11, 0xf4, 0x0c, 0xf4, 0xfd, 0xf5, 0xf9, 0xf5, 0xd9, 0xf7, 0xd4, 0xf7, + 0x95, 0xf9, 0x91, 0xf9, 0x2c, 0xfb, 0x27, 0xfb, 0x95, 0xfc, 0x8f, 0xfc, + 0xc2, 0xfd, 0xbe, 0xfd, 0xb8, 0xfe, 0xb4, 0xfe, 0x66, 0xff, 0x60, 0xff, + 0xcf, 0xff, 0xcb, 0xff, 0xf3, 0xff, 0xed, 0xff, 0xca, 0xff, 0xc4, 0xff, + 0x60, 0xff, 0x5b, 0xff, 0xaf, 0xfe, 0xa9, 0xfe, 0xbd, 0xfd, 0xb8, 0xfd, + 0x91, 0xfc, 0x8b, 0xfc, 0x2f, 0xfb, 0x2a, 0xfb, 0xa1, 0xf9, 0x9b, 0xf9, + 0xe8, 0xf7, 0xe5, 0xf7, 0x15, 0xf6, 0x0e, 0xf6, 0x2a, 0xf4, 0x25, 0xf4, + 0x31, 0xf2, 0x2b, 0xf2, 0x34, 0xf0, 0x30, 0xf0, 0x3b, 0xee, 0x36, 0xee, + 0x53, 0xec, 0x4c, 0xec, 0x80, 0xea, 0x7c, 0xea, 0xcd, 0xe8, 0xc8, 0xe8, + 0x46, 0xe7, 0x41, 0xe7, 0xee, 0xe5, 0xea, 0xe5, 0xd2, 0xe4, 0xce, 0xe4, + 0xf9, 0xe3, 0xf2, 0xe3, 0x65, 0xe3, 0x60, 0xe3, 0x20, 0xe3, 0x1b, 0xe3, + 0x28, 0xe3, 0x23, 0xe3, 0x87, 0xe3, 0x82, 0xe3, 0x32, 0xe4, 0x2f, 0xe4, + 0x38, 0xe5, 0x31, 0xe5, 0x80, 0xe6, 0x7e, 0xe6, 0x1d, 0xe8, 0x14, 0xe8, + 0xf4, 0xe9, 0xf1, 0xe9, 0x0f, 0xec, 0x09, 0xec, 0x57, 0xee, 0x53, 0xee, + 0xcc, 0xf0, 0xc7, 0xf0, 0x62, 0xf3, 0x5d, 0xf3, 0x0d, 0xf6, 0x07, 0xf6, + 0xc0, 0xf8, 0xbd, 0xf8, 0x73, 0xfb, 0x6d, 0xfb, 0x1c, 0xfe, 0x17, 0xfe, + 0xab, 0x00, 0xa6, 0x00, 0x1d, 0x03, 0x16, 0x03, 0x60, 0x05, 0x5d, 0x05, + 0x72, 0x07, 0x6d, 0x07, 0x4b, 0x09, 0x44, 0x09, 0xdd, 0x0a, 0xd9, 0x0a, + 0x2d, 0x0c, 0x27, 0x0c, 0x30, 0x0d, 0x2b, 0x0d, 0xe7, 0x0d, 0xe0, 0x0d, + 0x4e, 0x0e, 0x48, 0x0e, 0x68, 0x0e, 0x63, 0x0e, 0x38, 0x0e, 0x33, 0x0e, + 0xbe, 0x0d, 0xb8, 0x0d, 0x04, 0x0d, 0xff, 0x0c, 0x0c, 0x0c, 0x05, 0x0c, + 0xda, 0x0a, 0xd9, 0x0a, 0x7f, 0x09, 0x78, 0x09, 0xfd, 0x07, 0xf8, 0x07, + 0x5c, 0x06, 0x58, 0x06, 0xab, 0x04, 0xa5, 0x04, 0xef, 0x02, 0xec, 0x02, + 0x36, 0x01, 0x31, 0x01, 0x8b, 0xff, 0x85, 0xff, 0xf3, 0xfd, 0xf2, 0xfd, + 0x81, 0xfc, 0x7b, 0xfc, 0x35, 0xfb, 0x32, 0xfb, 0x22, 0xfa, 0x1e, 0xfa, + 0x4c, 0xf9, 0x46, 0xf9, 0xb8, 0xf8, 0xb4, 0xf8, 0x70, 0xf8, 0x6b, 0xf8, + 0x74, 0xf8, 0x6e, 0xf8, 0xc5, 0xf8, 0xc1, 0xf8, 0x65, 0xf9, 0x61, 0xf9, + 0x54, 0xfa, 0x4f, 0xfa, 0x89, 0xfb, 0x85, 0xfb, 0x03, 0xfd, 0xfd, 0xfc, + 0xbb, 0xfe, 0xb9, 0xfe, 0xab, 0x00, 0xa5, 0x00, 0xc4, 0x02, 0xc1, 0x02, + 0x0a, 0x05, 0x02, 0x05, 0x69, 0x07, 0x67, 0x07, 0xe0, 0x09, 0xd8, 0x09, + 0x5a, 0x0c, 0x57, 0x0c, 0xda, 0x0e, 0xd6, 0x0e, 0x4c, 0x11, 0x47, 0x11, + 0xae, 0x13, 0xaa, 0x13, 0xf1, 0x15, 0xe9, 0x15, 0x0e, 0x18, 0x0a, 0x18, + 0xfc, 0x19, 0xf7, 0x19, 0xb1, 0x1b, 0xad, 0x1b, 0x29, 0x1d, 0x24, 0x1d, + 0x59, 0x1e, 0x53, 0x1e, 0x3e, 0x1f, 0x3c, 0x1f, 0xd3, 0x1f, 0xcc, 0x1f, + 0x16, 0x20, 0x12, 0x20, 0x04, 0x20, 0x00, 0x20, 0x9f, 0x1f, 0x9a, 0x1f, + 0xe7, 0x1e, 0xe3, 0x1e, 0xe1, 0x1d, 0xdc, 0x1d, 0x93, 0x1c, 0x8e, 0x1c, + 0x00, 0x1b, 0xfc, 0x1a, 0x34, 0x19, 0x2f, 0x19, 0x35, 0x17, 0x2f, 0x17, + 0x0b, 0x15, 0x07, 0x15, 0xc7, 0x12, 0xc2, 0x12, 0x68, 0x10, 0x64, 0x10, + 0x0d, 0x0e, 0x07, 0x0e, 0xac, 0x0b, 0xa6, 0x0b, 0x5c, 0x09, 0x58, 0x09, + 0x25, 0x07, 0x1f, 0x07, 0x11, 0x05, 0x0b, 0x05, 0x2c, 0x03, 0x26, 0x03, + 0x75, 0x01, 0x70, 0x01, 0x01, 0x00, 0xfc, 0xff, 0xcc, 0xfe, 0xc8, 0xfe, + 0xe0, 0xfd, 0xd7, 0xfd, 0x39, 0xfd, 0x38, 0xfd, 0xe1, 0xfc, 0xd7, 0xfc, + 0xd0, 0xfc, 0xcc, 0xfc, 0x07, 0xfd, 0x00, 0xfd, 0x85, 0xfd, 0x80, 0xfd, + 0x45, 0xfe, 0x41, 0xfe, 0x40, 0xff, 0x39, 0xff, 0x6e, 0x00, 0x69, 0x00, + 0xce, 0x01, 0xc7, 0x01, 0x52, 0x03, 0x4d, 0x03, 0xf5, 0x04, 0xec, 0x04, + 0xae, 0x06, 0xa9, 0x06, 0x72, 0x08, 0x6a, 0x08, 0x38, 0x0a, 0x32, 0x0a, + 0xf6, 0x0b, 0xef, 0x0b, 0xa4, 0x0d, 0x9e, 0x0d, 0x37, 0x0f, 0x30, 0x0f, + 0xa2, 0x10, 0x9d, 0x10, 0xe2, 0x11, 0xdc, 0x11, 0xe8, 0x12, 0xe2, 0x12, + 0xb1, 0x13, 0xac, 0x13, 0x32, 0x14, 0x2d, 0x14, 0x67, 0x14, 0x60, 0x14, + 0x4f, 0x14, 0x4b, 0x14, 0xe1, 0x13, 0xd9, 0x13, 0x20, 0x13, 0x1b, 0x13, + 0x0b, 0x12, 0x06, 0x12, 0xa7, 0x10, 0xa1, 0x10, 0xfc, 0x0e, 0xf7, 0x0e, + 0x0a, 0x0d, 0x03, 0x0d, 0xda, 0x0a, 0xd6, 0x0a, 0x7c, 0x08, 0x75, 0x08, + 0xf1, 0x05, 0xeb, 0x05, 0x45, 0x03, 0x3f, 0x03, 0x88, 0x00, 0x82, 0x00, + 0xbb, 0xfd, 0xb7, 0xfd, 0xf3, 0xfa, 0xec, 0xfa, 0x33, 0xf8, 0x2e, 0xf8, + 0x88, 0xf5, 0x82, 0xf5, 0xff, 0xf2, 0xfa, 0xf2, 0x9b, 0xf0, 0x94, 0xf0, + 0x6b, 0xee, 0x67, 0xee, 0x75, 0xec, 0x6e, 0xec, 0xbf, 0xea, 0xba, 0xea, + 0x52, 0xe9, 0x4d, 0xe9, 0x30, 0xe8, 0x2b, 0xe8, 0x65, 0xe7, 0x5f, 0xe7, + 0xe3, 0xe6, 0xe0, 0xe6, 0xbb, 0xe6, 0xb4, 0xe6, 0xdf, 0xe6, 0xdc, 0xe6, + 0x58, 0xe7, 0x51, 0xe7, 0x1a, 0xe8, 0x15, 0xe8, 0x20, 0xe9, 0x1a, 0xe9, + 0x68, 0xea, 0x63, 0xea, 0xe0, 0xeb, 0xdb, 0xeb, 0x8c, 0xed, 0x86, 0xed, + 0x59, 0xef, 0x53, 0xef, 0x3f, 0xf1, 0x39, 0xf1, 0x35, 0xf3, 0x31, 0xf3, + 0x2d, 0xf5, 0x25, 0xf5, 0x1e, 0xf7, 0x1a, 0xf7, 0xfd, 0xf8, 0xf5, 0xf8, + 0xbd, 0xfa, 0xba, 0xfa, 0x59, 0xfc, 0x53, 0xfc, 0xc1, 0xfd, 0xbc, 0xfd, + 0xf3, 0xfe, 0xed, 0xfe, 0xe3, 0xff, 0xde, 0xff, 0x91, 0x00, 0x8a, 0x00, + 0xf7, 0x00, 0xf1, 0x00, 0x11, 0x01, 0x0c, 0x01, 0xe1, 0x00, 0xdb, 0x00, + 0x67, 0x00, 0x62, 0x00, 0xa7, 0xff, 0xa1, 0xff, 0xa8, 0xfe, 0xa1, 0xfe, + 0x65, 0xfd, 0x62, 0xfd, 0xf2, 0xfb, 0xeb, 0xfb, 0x49, 0xfa, 0x44, 0xfa, + 0x79, 0xf8, 0x75, 0xf8, 0x8d, 0xf6, 0x84, 0xf6, 0x83, 0xf4, 0x7f, 0xf4, + 0x73, 0xf2, 0x6d, 0xf2, 0x54, 0xf0, 0x4f, 0xf0, 0x41, 0xee, 0x3d, 0xee, + 0x39, 0xec, 0x31, 0xec, 0x46, 0xea, 0x43, 0xea, 0x78, 0xe8, 0x71, 0xe8, + 0xcf, 0xe6, 0xc9, 0xe6, 0x5a, 0xe5, 0x57, 0xe5, 0x1f, 0xe4, 0x18, 0xe4, + 0x26, 0xe3, 0x21, 0xe3, 0x78, 0xe2, 0x72, 0xe2, 0x12, 0xe2, 0x0c, 0xe2, + 0x02, 0xe2, 0xff, 0xe1, 0x42, 0xe2, 0x3c, 0xe2, 0xd9, 0xe2, 0xd3, 0xe2, + 0xc1, 0xe3, 0xbc, 0xe3, 0xf8, 0xe4, 0xf3, 0xe4, 0x7e, 0xe6, 0x78, 0xe6, + 0x47, 0xe8, 0x43, 0xe8, 0x4f, 0xea, 0x48, 0xea, 0x8c, 0xec, 0x89, 0xec, + 0xf6, 0xee, 0xee, 0xee, 0x80, 0xf1, 0x7e, 0xf1, 0x25, 0xf4, 0x1e, 0xf4, + 0xd3, 0xf6, 0xce, 0xf6, 0x84, 0xf9, 0x7e, 0xf9, 0x28, 0xfc, 0x22, 0xfc, + 0xba, 0xfe, 0xb6, 0xfe, 0x29, 0x01, 0x23, 0x01, 0x71, 0x03, 0x6c, 0x03, + 0x86, 0x05, 0x80, 0x05, 0x5e, 0x07, 0x59, 0x07, 0xfb, 0x08, 0xf5, 0x08, + 0x4a, 0x0a, 0x44, 0x0a, 0x55, 0x0b, 0x51, 0x0b, 0x0e, 0x0c, 0x08, 0x0c, + 0x7c, 0x0c, 0x77, 0x0c, 0x9d, 0x0c, 0x96, 0x0c, 0x6e, 0x0c, 0x6a, 0x0c, + 0xfd, 0x0b, 0xf7, 0x0b, 0x43, 0x0b, 0x40, 0x0b, 0x50, 0x0a, 0x4b, 0x0a, + 0x23, 0x09, 0x1f, 0x09, 0xca, 0x07, 0xc4, 0x07, 0x46, 0x06, 0x41, 0x06, + 0xab, 0x04, 0xa5, 0x04, 0xf5, 0x02, 0xf3, 0x02, 0x3d, 0x01, 0x36, 0x01, + 0x80, 0xff, 0x7c, 0xff, 0xd0, 0xfd, 0xca, 0xfd, 0x36, 0xfc, 0x31, 0xfc, + 0xbb, 0xfa, 0xb4, 0xfa, 0x6a, 0xf9, 0x64, 0xf9, 0x49, 0xf8, 0x46, 0xf8, + 0x6b, 0xf7, 0x65, 0xf7, 0xcb, 0xf6, 0xc7, 0xf6, 0x7b, 0xf6, 0x76, 0xf6, + 0x71, 0xf6, 0x6c, 0xf6, 0xbc, 0xf6, 0xb9, 0xf6, 0x56, 0xf7, 0x50, 0xf7, + 0x3c, 0xf8, 0x37, 0xf8, 0x72, 0xf9, 0x6c, 0xf9, 0xe6, 0xfa, 0xe2, 0xfa, + 0xa4, 0xfc, 0x9d, 0xfc, 0x95, 0xfe, 0x90, 0xfe, 0xb9, 0x00, 0xb4, 0x00, + 0x05, 0x03, 0x00, 0x03, 0x6f, 0x05, 0x68, 0x05, 0xf0, 0x07, 0xeb, 0x07, + 0x7c, 0x0a, 0x77, 0x0a, 0x0a, 0x0d, 0x06, 0x0d, 0x94, 0x0f, 0x8b, 0x0f, + 0x04, 0x12, 0x00, 0x12, 0x5f, 0x14, 0x5b, 0x14, 0x95, 0x16, 0x8f, 0x16, + 0x9a, 0x18, 0x95, 0x18, 0x6b, 0x1a, 0x66, 0x1a, 0xfc, 0x1b, 0xf7, 0x1b, + 0x47, 0x1d, 0x40, 0x1d, 0x4c, 0x1e, 0x48, 0x1e, 0xfc, 0x1e, 0xf5, 0x1e, + 0x5b, 0x1f, 0x57, 0x1f, 0x69, 0x1f, 0x63, 0x1f, 0x1e, 0x1f, 0x18, 0x1f, + 0x88, 0x1e, 0x83, 0x1e, 0x9a, 0x1d, 0x94, 0x1d, 0x6a, 0x1c, 0x64, 0x1c, + 0xf0, 0x1a, 0xec, 0x1a, 0x3d, 0x19, 0x37, 0x19, 0x57, 0x17, 0x53, 0x17, + 0x42, 0x15, 0x3e, 0x15, 0x13, 0x13, 0x0e, 0x13, 0xcc, 0x10, 0xc5, 0x10, + 0x79, 0x0e, 0x76, 0x0e, 0x2c, 0x0c, 0x23, 0x0c, 0xe5, 0x09, 0xe3, 0x09, + 0xbd, 0x07, 0xb4, 0x07, 0xaf, 0x05, 0xad, 0x05, 0xd1, 0x03, 0xca, 0x03, + 0x24, 0x02, 0x1f, 0x02, 0xb3, 0x00, 0xad, 0x00, 0x83, 0xff, 0x7d, 0xff, + 0x98, 0xfe, 0x94, 0xfe, 0xf8, 0xfd, 0xf0, 0xfd, 0x9e, 0xfd, 0x9a, 0xfd, + 0x92, 0xfd, 0x8b, 0xfd, 0xcd, 0xfd, 0xc9, 0xfd, 0x4e, 0xfe, 0x46, 0xfe, + 0x10, 0xff, 0x0b, 0xff, 0x0e, 0x00, 0x07, 0x00, 0x42, 0x01, 0x3f, 0x01, + 0xa7, 0x02, 0xa4, 0x02, 0x31, 0x04, 0x29, 0x04, 0xdc, 0x05, 0xd9, 0x05, + 0x9c, 0x07, 0x96, 0x07, 0x69, 0x09, 0x64, 0x09, 0x38, 0x0b, 0x34, 0x0b, + 0x04, 0x0d, 0xff, 0x0c, 0xbe, 0x0e, 0xbc, 0x0e, 0x61, 0x10, 0x5d, 0x10, + 0xe1, 0x11, 0xdb, 0x11, 0x32, 0x13, 0x2d, 0x13, 0x50, 0x14, 0x4d, 0x14, + 0x2d, 0x15, 0x28, 0x15, 0xc8, 0x15, 0xc3, 0x15, 0x16, 0x16, 0x13, 0x16, + 0x16, 0x16, 0x0f, 0x16, 0xc1, 0x15, 0xbf, 0x15, 0x1b, 0x15, 0x14, 0x15, + 0x1f, 0x14, 0x1e, 0x14, 0xd5, 0x12, 0xce, 0x12, 0x3a, 0x11, 0x38, 0x11, + 0x5e, 0x0f, 0x59, 0x0f, 0x3c, 0x0d, 0x38, 0x0d, 0xe9, 0x0a, 0xe3, 0x0a, + 0x66, 0x08, 0x63, 0x08, 0xc0, 0x05, 0xbb, 0x05, 0x03, 0x03, 0xfe, 0x02, + 0x34, 0x00, 0x30, 0x00, 0x67, 0xfd, 0x62, 0xfd, 0x9e, 0xfa, 0x9a, 0xfa, + 0xe7, 0xf7, 0xe3, 0xf7, 0x52, 0xf5, 0x4c, 0xf5, 0xdb, 0xf2, 0xd8, 0xf2, + 0x9d, 0xf0, 0x96, 0xf0, 0x91, 0xee, 0x8d, 0xee, 0xc4, 0xec, 0xbe, 0xec, + 0x43, 0xeb, 0x3f, 0xeb, 0x0b, 0xea, 0x05, 0xea, 0x25, 0xe9, 0x20, 0xe9, + 0x8f, 0xe8, 0x89, 0xe8, 0x4c, 0xe8, 0x47, 0xe8, 0x5e, 0xe8, 0x59, 0xe8, + 0xbc, 0xe8, 0xb5, 0xe8, 0x6a, 0xe9, 0x65, 0xe9, 0x5a, 0xea, 0x56, 0xea, + 0x90, 0xeb, 0x88, 0xeb, 0xf7, 0xec, 0xf4, 0xec, 0x92, 0xee, 0x8a, 0xee, + 0x55, 0xf0, 0x4f, 0xf0, 0x2c, 0xf2, 0x28, 0xf2, 0x20, 0xf4, 0x19, 0xf4, + 0x10, 0xf6, 0x0e, 0xf6, 0x02, 0xf8, 0xfc, 0xf7, 0xe4, 0xf9, 0xdd, 0xf9, + 0xa4, 0xfb, 0xa1, 0xfb, 0x49, 0xfd, 0x42, 0xfd, 0xb7, 0xfe, 0xb2, 0xfe, + 0xf0, 0xff, 0xeb, 0xff, 0xed, 0x00, 0xe5, 0x00, 0x9e, 0x01, 0x9a, 0x01, + 0x12, 0x02, 0x08, 0x02, 0x2d, 0x02, 0x29, 0x02, 0x07, 0x02, 0xff, 0x01, + 0x8f, 0x01, 0x8a, 0x01, 0xcf, 0x00, 0xc9, 0x00, 0xce, 0xff, 0xc7, 0xff, + 0x86, 0xfe, 0x80, 0xfe, 0x09, 0xfd, 0x04, 0xfd, 0x55, 0xfb, 0x4e, 0xfb, + 0x75, 0xf9, 0x71, 0xf9, 0x79, 0xf7, 0x72, 0xf7, 0x5a, 0xf5, 0x56, 0xf5, + 0x31, 0xf3, 0x2a, 0xf3, 0xfc, 0xf0, 0xf6, 0xf0, 0xc9, 0xee, 0xc4, 0xee, + 0xa1, 0xec, 0x9b, 0xec, 0x8f, 0xea, 0x87, 0xea, 0x99, 0xe8, 0x96, 0xe8, + 0xce, 0xe6, 0xc5, 0xe6, 0x2f, 0xe5, 0x2c, 0xe5, 0xcd, 0xe3, 0xc6, 0xe3, + 0xa9, 0xe2, 0xa4, 0xe2, 0xcf, 0xe1, 0xc8, 0xe1, 0x40, 0xe1, 0x3a, 0xe1, + 0x02, 0xe1, 0xfd, 0xe0, 0x1a, 0xe1, 0x13, 0xe1, 0x85, 0xe1, 0x81, 0xe1, + 0x48, 0xe2, 0x42, 0xe2, 0x5b, 0xe3, 0x58, 0xe3, 0xbf, 0xe4, 0xba, 0xe4, + 0x6a, 0xe6, 0x65, 0xe6, 0x58, 0xe8, 0x53, 0xe8, 0x82, 0xea, 0x7e, 0xea, + 0xd8, 0xec, 0xd1, 0xec, 0x5a, 0xef, 0x57, 0xef, 0xf4, 0xf1, 0xec, 0xf1, + 0xa0, 0xf4, 0x9b, 0xf4, 0x52, 0xf7, 0x4d, 0xf7, 0xfc, 0xf9, 0xf6, 0xf9, + 0x98, 0xfc, 0x92, 0xfc, 0x14, 0xff, 0x0f, 0xff, 0x6e, 0x01, 0x67, 0x01, + 0x94, 0x03, 0x90, 0x03, 0x83, 0x05, 0x79, 0x05, 0x33, 0x07, 0x31, 0x07, + 0x9c, 0x08, 0x96, 0x08, 0xbf, 0x09, 0xb9, 0x09, 0x91, 0x0a, 0x8d, 0x0a, + 0x15, 0x0b, 0x0e, 0x0b, 0x4e, 0x0b, 0x47, 0x0b, 0x30, 0x0b, 0x2c, 0x0b, + 0xd5, 0x0a, 0xce, 0x0a, 0x29, 0x0a, 0x23, 0x0a, 0x42, 0x09, 0x3d, 0x09, + 0x22, 0x08, 0x19, 0x08, 0xca, 0x06, 0xc7, 0x06, 0x4e, 0x05, 0x46, 0x05, + 0xad, 0x03, 0xa6, 0x03, 0xf4, 0x01, 0xf0, 0x01, 0x30, 0x00, 0x2a, 0x00, + 0x64, 0xfe, 0x60, 0xfe, 0xa2, 0xfc, 0x9c, 0xfc, 0xef, 0xfa, 0xe9, 0xfa, + 0x5a, 0xf9, 0x55, 0xf9, 0xea, 0xf7, 0xe3, 0xf7, 0xaa, 0xf6, 0xa5, 0xf6, + 0xa3, 0xf5, 0x9c, 0xf5, 0xdc, 0xf4, 0xd8, 0xf4, 0x61, 0xf4, 0x5b, 0xf4, + 0x32, 0xf4, 0x2c, 0xf4, 0x54, 0xf4, 0x51, 0xf4, 0xcc, 0xf4, 0xc6, 0xf4, + 0x93, 0xf5, 0x8c, 0xf5, 0xaa, 0xf6, 0xa5, 0xf6, 0x0c, 0xf8, 0x06, 0xf8, + 0xb5, 0xf9, 0xaf, 0xf9, 0x9e, 0xfb, 0x98, 0xfb, 0xbd, 0xfd, 0xb7, 0xfd, + 0x0d, 0x00, 0x06, 0x00, 0x7d, 0x02, 0x78, 0x02, 0x0f, 0x05, 0x09, 0x05, + 0xb0, 0x07, 0xa9, 0x07, 0x58, 0x0a, 0x54, 0x0a, 0x01, 0x0d, 0xfb, 0x0c, + 0x97, 0x0f, 0x94, 0x0f, 0x1f, 0x12, 0x18, 0x12, 0x7f, 0x14, 0x7a, 0x14, + 0xb9, 0x16, 0xb2, 0x16, 0xc0, 0x18, 0xbb, 0x18, 0x88, 0x1a, 0x83, 0x1a, + 0x14, 0x1c, 0x0e, 0x1c, 0x4e, 0x1d, 0x49, 0x1d, 0x42, 0x1e, 0x3d, 0x1e, + 0xdc, 0x1e, 0xd6, 0x1e, 0x28, 0x1f, 0x23, 0x1f, 0x18, 0x1f, 0x14, 0x1f, + 0xb6, 0x1e, 0xb1, 0x1e, 0x03, 0x1e, 0xfd, 0x1d, 0xff, 0x1c, 0xfa, 0x1c, + 0xb5, 0x1b, 0xaf, 0x1b, 0x25, 0x1a, 0x1f, 0x1a, 0x5d, 0x18, 0x5a, 0x18, + 0x66, 0x16, 0x5e, 0x16, 0x47, 0x14, 0x44, 0x14, 0x0e, 0x12, 0x06, 0x12, + 0xc1, 0x0f, 0xbd, 0x0f, 0x6f, 0x0d, 0x69, 0x0d, 0x26, 0x0b, 0x20, 0x0b, + 0xea, 0x08, 0xe5, 0x08, 0xcd, 0x06, 0xc7, 0x06, 0xd4, 0x04, 0xcf, 0x04, + 0x0a, 0x03, 0x02, 0x03, 0x79, 0x01, 0x76, 0x01, 0x28, 0x00, 0x22, 0x00, + 0x1b, 0xff, 0x16, 0xff, 0x56, 0xfe, 0x4f, 0xfe, 0xda, 0xfd, 0xd4, 0xfd, + 0xac, 0xfd, 0xa6, 0xfd, 0xc8, 0xfd, 0xc2, 0xfd, 0x2c, 0xfe, 0x26, 0xfe, + 0xdb, 0xfe, 0xd4, 0xfe, 0xc3, 0xff, 0xbe, 0xff, 0xed, 0x00, 0xe6, 0x00, + 0x44, 0x02, 0x40, 0x02, 0xcf, 0x03, 0xc7, 0x03, 0x79, 0x05, 0x75, 0x05, + 0x42, 0x07, 0x3a, 0x07, 0x1e, 0x09, 0x19, 0x09, 0x02, 0x0b, 0xfc, 0x0a, + 0xe9, 0x0c, 0xe3, 0x0c, 0xc3, 0x0e, 0xbe, 0x0e, 0x8d, 0x10, 0x86, 0x10, + 0x3a, 0x12, 0x35, 0x12, 0xbe, 0x13, 0xb8, 0x13, 0x13, 0x15, 0x0e, 0x15, + 0x2e, 0x16, 0x28, 0x16, 0x08, 0x17, 0x04, 0x17, 0x9c, 0x17, 0x96, 0x17, + 0xe0, 0x17, 0xdc, 0x17, 0xd5, 0x17, 0xce, 0x17, 0x74, 0x17, 0x6e, 0x17, + 0xbd, 0x16, 0xb8, 0x16, 0xb3, 0x15, 0xad, 0x15, 0x57, 0x14, 0x4f, 0x14, + 0xad, 0x12, 0xa7, 0x12, 0xbb, 0x10, 0xb5, 0x10, 0x90, 0x0e, 0x8a, 0x0e, + 0x27, 0x0c, 0x23, 0x0c, 0x99, 0x09, 0x92, 0x09, 0xe7, 0x06, 0xe4, 0x06, + 0x1b, 0x04, 0x17, 0x04, 0x4b, 0x01, 0x43, 0x01, 0x6e, 0xfe, 0x6b, 0xfe, + 0xa8, 0xfb, 0xa1, 0xfb, 0xed, 0xf8, 0xe8, 0xf8, 0x54, 0xf6, 0x4f, 0xf6, + 0xe8, 0xf3, 0xe1, 0xf3, 0xa5, 0xf1, 0x9f, 0xf1, 0xa4, 0xef, 0x9e, 0xef, + 0xe0, 0xed, 0xda, 0xed, 0x67, 0xec, 0x61, 0xec, 0x3c, 0xeb, 0x38, 0xeb, + 0x60, 0xea, 0x59, 0xea, 0xd9, 0xe9, 0xd4, 0xe9, 0xa4, 0xe9, 0x9f, 0xe9, + 0xc2, 0xe9, 0xbc, 0xe9, 0x2f, 0xea, 0x2a, 0xea, 0xea, 0xea, 0xe2, 0xea, + 0xe7, 0xeb, 0xe3, 0xeb, 0x23, 0xed, 0x1e, 0xed, 0x95, 0xee, 0x8f, 0xee, + 0x34, 0xf0, 0x2f, 0xf0, 0xf9, 0xf1, 0xf4, 0xf1, 0xd9, 0xf3, 0xd2, 0xf3, + 0xc5, 0xf5, 0xc1, 0xf5, 0xbb, 0xf7, 0xb5, 0xf7, 0xa2, 0xf9, 0x9e, 0xf9, + 0x80, 0xfb, 0x7b, 0xfb, 0x3b, 0xfd, 0x35, 0xfd, 0xd0, 0xfe, 0xcd, 0xfe, + 0x36, 0x00, 0x2f, 0x00, 0x5b, 0x01, 0x59, 0x01, 0x4b, 0x02, 0x45, 0x02, + 0xeb, 0x02, 0xe6, 0x02, 0x46, 0x03, 0x40, 0x03, 0x50, 0x03, 0x4b, 0x03, + 0x0f, 0x03, 0x09, 0x03, 0x81, 0x02, 0x7b, 0x02, 0xa8, 0x01, 0xa3, 0x01, + 0x8b, 0x00, 0x86, 0x00, 0x2e, 0xff, 0x2a, 0xff, 0x97, 0xfd, 0x90, 0xfd, + 0xcc, 0xfb, 0xc7, 0xfb, 0xd5, 0xf9, 0xd0, 0xf9, 0xc0, 0xf7, 0xba, 0xf7, + 0x90, 0xf5, 0x8a, 0xf5, 0x50, 0xf3, 0x4a, 0xf3, 0x09, 0xf1, 0x04, 0xf1, + 0xc5, 0xee, 0xbd, 0xee, 0x8d, 0xec, 0x89, 0xec, 0x6e, 0xea, 0x67, 0xea, + 0x6d, 0xe8, 0x66, 0xe8, 0x95, 0xe6, 0x91, 0xe6, 0xed, 0xe4, 0xe6, 0xe4, + 0x83, 0xe3, 0x7c, 0xe3, 0x57, 0xe2, 0x53, 0xe2, 0x79, 0xe1, 0x71, 0xe1, + 0xe4, 0xe0, 0xe0, 0xe0, 0xa4, 0xe0, 0x9c, 0xe0, 0xb9, 0xe0, 0xb3, 0xe0, + 0x22, 0xe1, 0x1b, 0xe1, 0xe1, 0xe1, 0xdd, 0xe1, 0xf3, 0xe2, 0xec, 0xe2, + 0x54, 0xe4, 0x4e, 0xe4, 0xfc, 0xe5, 0xf7, 0xe5, 0xe7, 0xe7, 0xe0, 0xe7, + 0x09, 0xea, 0x05, 0xea, 0x5f, 0xec, 0x57, 0xec, 0xd5, 0xee, 0xd1, 0xee, + 0x6a, 0xf1, 0x65, 0xf1, 0x10, 0xf4, 0x07, 0xf4, 0xb5, 0xf6, 0xb2, 0xf6, + 0x57, 0xf9, 0x52, 0xf9, 0xe4, 0xfb, 0xdd, 0xfb, 0x58, 0xfe, 0x51, 0xfe, + 0xa0, 0x00, 0x9a, 0x00, 0xb8, 0x02, 0xb2, 0x02, 0x98, 0x04, 0x95, 0x04, + 0x38, 0x06, 0x2e, 0x06, 0x92, 0x07, 0x8e, 0x07, 0xa0, 0x08, 0x99, 0x08, + 0x63, 0x09, 0x5c, 0x09, 0xd4, 0x09, 0xcf, 0x09, 0xfa, 0x09, 0xf3, 0x09, + 0xd3, 0x09, 0xcd, 0x09, 0x60, 0x09, 0x5a, 0x09, 0xab, 0x08, 0xa6, 0x08, + 0xb5, 0x07, 0xaf, 0x07, 0x87, 0x06, 0x82, 0x06, 0x2a, 0x05, 0x23, 0x05, + 0xa1, 0x03, 0x9d, 0x03, 0xfa, 0x01, 0xf3, 0x01, 0x3d, 0x00, 0x37, 0x00, + 0x71, 0xfe, 0x6c, 0xfe, 0xa6, 0xfc, 0x9f, 0xfc, 0xe2, 0xfa, 0xdc, 0xfa, + 0x2f, 0xf9, 0x29, 0xf9, 0x9e, 0xf7, 0x97, 0xf7, 0x2e, 0xf6, 0x2a, 0xf6, + 0xf5, 0xf4, 0xee, 0xf4, 0xf3, 0xf3, 0xed, 0xf3, 0x32, 0xf3, 0x2e, 0xf3, + 0xbf, 0xf2, 0xb8, 0xf2, 0x98, 0xf2, 0x92, 0xf2, 0xc5, 0xf2, 0xbf, 0xf2, + 0x44, 0xf3, 0x3e, 0xf3, 0x18, 0xf4, 0x12, 0xf4, 0x3c, 0xf5, 0x35, 0xf5, + 0xac, 0xf6, 0xa8, 0xf6, 0x63, 0xf8, 0x5d, 0xf8, 0x58, 0xfa, 0x52, 0xfa, + 0x87, 0xfc, 0x81, 0xfc, 0xe1, 0xfe, 0xdb, 0xfe, 0x64, 0x01, 0x5e, 0x01, + 0x00, 0x04, 0xf9, 0x03, 0xac, 0x06, 0xa9, 0x06, 0x64, 0x09, 0x5c, 0x09, + 0x12, 0x0c, 0x0e, 0x0c, 0xb7, 0x0e, 0xb1, 0x0e, 0x40, 0x11, 0x3c, 0x11, + 0xab, 0x13, 0xa6, 0x13, 0xe8, 0x15, 0xe2, 0x15, 0xf2, 0x17, 0xec, 0x17, + 0xbd, 0x19, 0xb7, 0x19, 0x45, 0x1b, 0x41, 0x1b, 0x85, 0x1c, 0x7e, 0x1c, + 0x70, 0x1d, 0x6c, 0x1d, 0x0d, 0x1e, 0x06, 0x1e, 0x50, 0x1e, 0x4a, 0x1e, + 0x3e, 0x1e, 0x3a, 0x1e, 0xdb, 0x1d, 0xd3, 0x1d, 0x1e, 0x1d, 0x1b, 0x1d, + 0x1b, 0x1c, 0x14, 0x1c, 0xca, 0x1a, 0xc4, 0x1a, 0x3a, 0x19, 0x35, 0x19, + 0x73, 0x17, 0x6c, 0x17, 0x7a, 0x15, 0x74, 0x15, 0x5e, 0x13, 0x58, 0x13, + 0x26, 0x11, 0x21, 0x11, 0xe2, 0x0e, 0xdd, 0x0e, 0x99, 0x0c, 0x94, 0x0c, + 0x5a, 0x0a, 0x52, 0x0a, 0x2d, 0x08, 0x28, 0x08, 0x1f, 0x06, 0x17, 0x06, + 0x3a, 0x04, 0x34, 0x04, 0x83, 0x02, 0x7f, 0x02, 0x0d, 0x01, 0x06, 0x01, + 0xd3, 0xff, 0xcd, 0xff, 0xe5, 0xfe, 0xdf, 0xfe, 0x3a, 0xfe, 0x34, 0xfe, + 0xde, 0xfd, 0xda, 0xfd, 0xce, 0xfd, 0xc8, 0xfd, 0x0c, 0xfe, 0x06, 0xfe, + 0x91, 0xfe, 0x8c, 0xfe, 0x5e, 0xff, 0x58, 0xff, 0x66, 0x00, 0x60, 0x00, + 0xab, 0x01, 0xa7, 0x01, 0x22, 0x03, 0x1d, 0x03, 0xc5, 0x04, 0xbd, 0x04, + 0x89, 0x06, 0x84, 0x06, 0x69, 0x08, 0x64, 0x08, 0x59, 0x0a, 0x52, 0x0a, + 0x4f, 0x0c, 0x4a, 0x0c, 0x43, 0x0e, 0x3c, 0x0e, 0x2c, 0x10, 0x26, 0x10, + 0xff, 0x11, 0xf9, 0x11, 0xb1, 0x13, 0xab, 0x13, 0x3a, 0x15, 0x35, 0x15, + 0x8f, 0x16, 0x88, 0x16, 0xa8, 0x17, 0xa3, 0x17, 0x7f, 0x18, 0x77, 0x18, + 0x07, 0x19, 0x02, 0x19, 0x45, 0x19, 0x3e, 0x19, 0x29, 0x19, 0x22, 0x19, + 0xbb, 0x18, 0xb6, 0x18, 0xf4, 0x17, 0xeb, 0x17, 0xd8, 0x16, 0xd3, 0x16, + 0x6a, 0x15, 0x64, 0x15, 0xb0, 0x13, 0xa7, 0x13, 0xad, 0x11, 0xa9, 0x11, + 0x6b, 0x0f, 0x65, 0x0f, 0xf8, 0x0c, 0xf0, 0x0c, 0x58, 0x0a, 0x53, 0x0a, + 0x98, 0x07, 0x90, 0x07, 0xc3, 0x04, 0xc1, 0x04, 0xe4, 0x01, 0xdd, 0x01, + 0x08, 0xff, 0x03, 0xff, 0x3b, 0xfc, 0x37, 0xfc, 0x81, 0xf9, 0x7c, 0xf9, + 0xef, 0xf6, 0xe9, 0xf6, 0x82, 0xf4, 0x7e, 0xf4, 0x51, 0xf2, 0x4a, 0xf2, + 0x5c, 0xf0, 0x57, 0xf0, 0xad, 0xee, 0xa7, 0xee, 0x49, 0xed, 0x45, 0xed, + 0x38, 0xec, 0x32, 0xec, 0x78, 0xeb, 0x72, 0xeb, 0x0d, 0xeb, 0x08, 0xeb, + 0xf7, 0xea, 0xf2, 0xea, 0x33, 0xeb, 0x2f, 0xeb, 0xbf, 0xeb, 0xb9, 0xeb, + 0x96, 0xec, 0x90, 0xec, 0xab, 0xed, 0xa6, 0xed, 0x03, 0xef, 0xfe, 0xee, + 0x8c, 0xf0, 0x86, 0xf0, 0x41, 0xf2, 0x3b, 0xf2, 0x18, 0xf4, 0x12, 0xf4, + 0x02, 0xf6, 0xfb, 0xf5, 0xf9, 0xf7, 0xf6, 0xf7, 0xf3, 0xf9, 0xeb, 0xf9, + 0xe1, 0xfb, 0xda, 0xfb, 0xb6, 0xfd, 0xb0, 0xfd, 0x6a, 0xff, 0x64, 0xff, + 0xee, 0x00, 0xec, 0x00, 0x43, 0x02, 0x3c, 0x02, 0x55, 0x03, 0x50, 0x03, + 0x21, 0x04, 0x1c, 0x04, 0xa4, 0x04, 0x9d, 0x04, 0xd4, 0x04, 0xd0, 0x04, + 0xb7, 0x04, 0xb1, 0x04, 0x48, 0x04, 0x43, 0x04, 0x8a, 0x03, 0x85, 0x03, + 0x82, 0x02, 0x7c, 0x02, 0x33, 0x01, 0x2d, 0x01, 0xa2, 0xff, 0x9c, 0xff, + 0xda, 0xfd, 0xd5, 0xfd, 0xdf, 0xfb, 0xd7, 0xfb, 0xbd, 0xf9, 0xba, 0xf9, + 0x7b, 0xf7, 0x74, 0xf7, 0x22, 0xf5, 0x1c, 0xf5, 0xbd, 0xf2, 0xb9, 0xf2, + 0x57, 0xf0, 0x50, 0xf0, 0xf6, 0xed, 0xf3, 0xed, 0xab, 0xeb, 0xa4, 0xeb, + 0x77, 0xe9, 0x71, 0xe9, 0x6b, 0xe7, 0x66, 0xe7, 0x8d, 0xe5, 0x86, 0xe5, + 0xe5, 0xe3, 0xe0, 0xe3, 0x7f, 0xe2, 0x79, 0xe2, 0x60, 0xe1, 0x5a, 0xe1, + 0x90, 0xe0, 0x8a, 0xe0, 0x11, 0xe0, 0x0b, 0xe0, 0xe8, 0xdf, 0xe4, 0xdf, + 0x1c, 0xe0, 0x15, 0xe0, 0xa2, 0xe0, 0x9e, 0xe0, 0x87, 0xe1, 0x80, 0xe1, + 0xba, 0xe2, 0xb4, 0xe2, 0x3c, 0xe4, 0x37, 0xe4, 0x09, 0xe6, 0x02, 0xe6, + 0x0f, 0xe8, 0x0b, 0xe8, 0x53, 0xea, 0x4c, 0xea, 0xbe, 0xec, 0xb9, 0xec, + 0x4c, 0xef, 0x46, 0xef, 0xf2, 0xf1, 0xee, 0xf1, 0x9f, 0xf4, 0x96, 0xf4, + 0x4a, 0xf7, 0x47, 0xf7, 0xec, 0xf9, 0xe3, 0xf9, 0x6f, 0xfc, 0x6b, 0xfc, + 0xd5, 0xfe, 0xce, 0xfe, 0x05, 0x01, 0xff, 0x00, 0x03, 0x03, 0xfd, 0x02, + 0xbe, 0x04, 0xb8, 0x04, 0x37, 0x06, 0x31, 0x06, 0x63, 0x07, 0x5e, 0x07, + 0x3f, 0x08, 0x39, 0x08, 0xce, 0x08, 0xc8, 0x08, 0x06, 0x09, 0x01, 0x09, + 0xf5, 0x08, 0xee, 0x08, 0x91, 0x08, 0x8c, 0x08, 0xe6, 0x07, 0xe0, 0x07, + 0xfa, 0x06, 0xf3, 0x06, 0xcb, 0x05, 0xc7, 0x05, 0x6e, 0x04, 0x66, 0x04, + 0xdd, 0x02, 0xdb, 0x02, 0x31, 0x01, 0x28, 0x01, 0x61, 0xff, 0x5d, 0xff, + 0x86, 0xfd, 0x80, 0xfd, 0xa3, 0xfb, 0x9c, 0xfb, 0xc1, 0xf9, 0xbd, 0xf9, + 0xf3, 0xf7, 0xed, 0xf7, 0x3d, 0xf6, 0x37, 0xf6, 0xaa, 0xf4, 0xa6, 0xf4, + 0x4a, 0xf3, 0x42, 0xf3, 0x1c, 0xf2, 0x19, 0xf2, 0x39, 0xf1, 0x30, 0xf1, + 0x95, 0xf0, 0x92, 0xf0, 0x4b, 0xf0, 0x44, 0xf0, 0x51, 0xf0, 0x4b, 0xf0, + 0xac, 0xf0, 0xa7, 0xf0, 0x65, 0xf1, 0x60, 0xf1, 0x6f, 0xf2, 0x67, 0xf2, + 0xce, 0xf3, 0xcb, 0xf3, 0x79, 0xf5, 0x72, 0xf5, 0x6a, 0xf7, 0x65, 0xf7, + 0x9b, 0xf9, 0x95, 0xf9, 0xfd, 0xfb, 0xf7, 0xfb, 0x8d, 0xfe, 0x89, 0xfe, + 0x3d, 0x01, 0x36, 0x01, 0x04, 0x04, 0xfe, 0x03, 0xd7, 0x06, 0xd1, 0x06, + 0xa9, 0x09, 0xa4, 0x09, 0x73, 0x0c, 0x6d, 0x0c, 0x26, 0x0f, 0x21, 0x0f, + 0xba, 0x11, 0xb5, 0x11, 0x25, 0x14, 0x20, 0x14, 0x5d, 0x16, 0x57, 0x16, + 0x58, 0x18, 0x53, 0x18, 0x0d, 0x1a, 0x07, 0x1a, 0x7b, 0x1b, 0x75, 0x1b, + 0x92, 0x1c, 0x8d, 0x1c, 0x58, 0x1d, 0x51, 0x1d, 0xc4, 0x1d, 0xbd, 0x1d, + 0xd7, 0x1d, 0xd1, 0x1d, 0x91, 0x1d, 0x8b, 0x1d, 0xf3, 0x1c, 0xed, 0x1c, + 0x05, 0x1c, 0x00, 0x1c, 0xca, 0x1a, 0xc2, 0x1a, 0x49, 0x19, 0x46, 0x19, + 0x8b, 0x17, 0x85, 0x17, 0x9a, 0x15, 0x93, 0x15, 0x80, 0x13, 0x7a, 0x13, + 0x45, 0x11, 0x3e, 0x11, 0xfc, 0x0e, 0xf6, 0x0e, 0xa8, 0x0c, 0xa2, 0x0c, + 0x5e, 0x0a, 0x58, 0x0a, 0x24, 0x08, 0x1e, 0x08, 0x05, 0x06, 0xff, 0x05, + 0x11, 0x04, 0x0c, 0x04, 0x4d, 0x02, 0x46, 0x02, 0xc5, 0x00, 0xbf, 0x00, + 0x7d, 0xff, 0x7a, 0xff, 0x81, 0xfe, 0x7b, 0xfe, 0xd0, 0xfd, 0xc9, 0xfd, + 0x70, 0xfd, 0x69, 0xfd, 0x5c, 0xfd, 0x56, 0xfd, 0x9c, 0xfd, 0x97, 0xfd, + 0x28, 0xfe, 0x22, 0xfe, 0xfb, 0xfe, 0xf5, 0xfe, 0x15, 0x00, 0x0f, 0x00, + 0x69, 0x01, 0x64, 0x01, 0xf8, 0x02, 0xf0, 0x02, 0xb1, 0x04, 0xab, 0x04, + 0x94, 0x06, 0x8c, 0x06, 0x8e, 0x08, 0x8c, 0x08, 0xa2, 0x0a, 0x9a, 0x0a, + 0xb9, 0x0c, 0xb5, 0x0c, 0xd4, 0x0e, 0xcf, 0x0e, 0xe4, 0x10, 0xdf, 0x10, + 0xdf, 0x12, 0xd8, 0x12, 0xb9, 0x14, 0xb6, 0x14, 0x6b, 0x16, 0x65, 0x16, + 0xea, 0x17, 0xe6, 0x17, 0x2f, 0x19, 0x28, 0x19, 0x2a, 0x1a, 0x23, 0x1a, + 0xdb, 0x1a, 0xd6, 0x1a, 0x38, 0x1b, 0x32, 0x1b, 0x40, 0x1b, 0x3a, 0x1b, + 0xef, 0x1a, 0xe8, 0x1a, 0x3f, 0x1a, 0x3b, 0x1a, 0x3d, 0x19, 0x34, 0x19, + 0xdd, 0x17, 0xda, 0x17, 0x30, 0x16, 0x27, 0x16, 0x37, 0x14, 0x31, 0x14, + 0xf7, 0x11, 0xf1, 0x11, 0x82, 0x0f, 0x7b, 0x0f, 0xde, 0x0c, 0xd6, 0x0c, + 0x10, 0x0a, 0x0a, 0x0a, 0x32, 0x07, 0x29, 0x07, 0x3e, 0x04, 0x3a, 0x04, + 0x50, 0x01, 0x49, 0x01, 0x6a, 0xfe, 0x63, 0xfe, 0x9a, 0xfb, 0x93, 0xfb, + 0xee, 0xf8, 0xe8, 0xf8, 0x69, 0xf6, 0x64, 0xf6, 0x1e, 0xf4, 0x17, 0xf4, + 0x13, 0xf2, 0x0e, 0xf2, 0x4d, 0xf0, 0x46, 0xf0, 0xd5, 0xee, 0xd0, 0xee, + 0xb1, 0xed, 0xaa, 0xed, 0xe0, 0xec, 0xdb, 0xec, 0x6a, 0xec, 0x64, 0xec, + 0x49, 0xec, 0x43, 0xec, 0x7f, 0xec, 0x77, 0xec, 0x05, 0xed, 0x00, 0xed, + 0xd8, 0xed, 0xd2, 0xed, 0xf5, 0xee, 0xed, 0xee, 0x4d, 0xf0, 0x48, 0xf0, + 0xdd, 0xf1, 0xd7, 0xf1, 0x9c, 0xf3, 0x97, 0xf3, 0x7c, 0xf5, 0x75, 0xf5, + 0x79, 0xf7, 0x71, 0xf7, 0x7e, 0xf9, 0x79, 0xf9, 0x85, 0xfb, 0x7e, 0xfb, + 0x86, 0xfd, 0x81, 0xfd, 0x6c, 0xff, 0x66, 0xff, 0x38, 0x01, 0x31, 0x01, + 0xd1, 0x02, 0xca, 0x02, 0x34, 0x04, 0x2e, 0x04, 0x58, 0x05, 0x50, 0x05, + 0x2f, 0x06, 0x2c, 0x06, 0xbe, 0x06, 0xb6, 0x06, 0xf4, 0x06, 0xee, 0x06, + 0xda, 0x06, 0xd4, 0x06, 0x67, 0x06, 0x61, 0x06, 0xa6, 0x05, 0x9f, 0x05, + 0x8e, 0x04, 0x88, 0x04, 0x32, 0x03, 0x2b, 0x03, 0x8b, 0x01, 0x84, 0x01, + 0xaa, 0xff, 0xa5, 0xff, 0x93, 0xfd, 0x8d, 0xfd, 0x4e, 0xfb, 0x48, 0xfb, + 0xec, 0xf8, 0xe6, 0xf8, 0x6d, 0xf6, 0x68, 0xf6, 0xe4, 0xf3, 0xde, 0xf3, + 0x52, 0xf1, 0x4c, 0xf1, 0xcb, 0xee, 0xc6, 0xee, 0x53, 0xec, 0x4d, 0xec, + 0xf6, 0xe9, 0xf1, 0xe9, 0xc0, 0xe7, 0xb8, 0xe7, 0xb6, 0xe5, 0xb3, 0xe5, + 0xe8, 0xe3, 0xe1, 0xe3, 0x5a, 0xe2, 0x56, 0xe2, 0x14, 0xe1, 0x0e, 0xe1, + 0x24, 0xe0, 0x1d, 0xe0, 0x84, 0xdf, 0x80, 0xdf, 0x3f, 0xdf, 0x38, 0xdf, + 0x58, 0xdf, 0x53, 0xdf, 0xca, 0xdf, 0xc4, 0xdf, 0x9a, 0xe0, 0x95, 0xe0, + 0xbe, 0xe1, 0xb9, 0xe1, 0x36, 0xe3, 0x2f, 0xe3, 0xf9, 0xe4, 0xf5, 0xe4, + 0xff, 0xe6, 0xf8, 0xe6, 0x3d, 0xe9, 0x3a, 0xe9, 0xb0, 0xeb, 0xa9, 0xeb, + 0x41, 0xee, 0x3b, 0xee, 0xed, 0xf0, 0xe7, 0xf0, 0xa1, 0xf3, 0x9d, 0xf3, + 0x59, 0xf6, 0x51, 0xf6, 0x01, 0xf9, 0xfd, 0xf8, 0x93, 0xfb, 0x8c, 0xfb, + 0xfe, 0xfd, 0xfa, 0xfd, 0x3d, 0x00, 0x37, 0x00, 0x41, 0x02, 0x39, 0x02, + 0x05, 0x04, 0x00, 0x04, 0x80, 0x05, 0x7a, 0x05, 0xae, 0x06, 0xa9, 0x06, + 0x8b, 0x07, 0x87, 0x07, 0x15, 0x08, 0x0d, 0x08, 0x4a, 0x08, 0x46, 0x08, + 0x2b, 0x08, 0x24, 0x08, 0xbe, 0x07, 0xbb, 0x07, 0x07, 0x07, 0x01, 0x07, + 0x05, 0x06, 0x00, 0x06, 0xcc, 0x04, 0xc6, 0x04, 0x55, 0x03, 0x51, 0x03, + 0xb2, 0x01, 0xae, 0x01, 0xec, 0xff, 0xe4, 0xff, 0x02, 0xfe, 0xfe, 0xfd, + 0x0d, 0xfc, 0x08, 0xfc, 0x0f, 0xfa, 0x08, 0xfa, 0x13, 0xf8, 0x0f, 0xf8, + 0x26, 0xf6, 0x20, 0xf6, 0x53, 0xf4, 0x4e, 0xf4, 0xa6, 0xf2, 0xa2, 0xf2, + 0x28, 0xf1, 0x23, 0xf1, 0xe2, 0xef, 0xdd, 0xef, 0xe2, 0xee, 0xdd, 0xee, + 0x2c, 0xee, 0x28, 0xee, 0xc8, 0xed, 0xc2, 0xed, 0xba, 0xed, 0xb4, 0xed, + 0x0b, 0xee, 0x07, 0xee, 0xb4, 0xee, 0xaf, 0xee, 0xba, 0xef, 0xb6, 0xef, + 0x19, 0xf1, 0x12, 0xf1, 0xc3, 0xf2, 0xbf, 0xf2, 0xc0, 0xf4, 0xbc, 0xf4, + 0xf9, 0xf6, 0xf3, 0xf6, 0x6d, 0xf9, 0x69, 0xf9, 0x14, 0xfc, 0x0f, 0xfc, + 0xd8, 0xfe, 0xd3, 0xfe, 0xbc, 0x01, 0xb8, 0x01, 0xaa, 0x04, 0xa2, 0x04, + 0x99, 0x07, 0x97, 0x07, 0x85, 0x0a, 0x7f, 0x0a, 0x58, 0x0d, 0x53, 0x0d, + 0x0f, 0x10, 0x0b, 0x10, 0x98, 0x12, 0x94, 0x12, 0xf2, 0x14, 0xed, 0x14, + 0x0d, 0x17, 0x08, 0x17, 0xe0, 0x18, 0xdb, 0x18, 0x6a, 0x1a, 0x64, 0x1a, + 0x9d, 0x1b, 0x99, 0x1b, 0x7a, 0x1c, 0x74, 0x1c, 0xfd, 0x1c, 0xf7, 0x1c, + 0x20, 0x1d, 0x1b, 0x1d, 0xec, 0x1c, 0xe6, 0x1c, 0x59, 0x1c, 0x54, 0x1c, + 0x78, 0x1b, 0x73, 0x1b, 0x42, 0x1a, 0x3d, 0x1a, 0xc6, 0x18, 0xc0, 0x18, + 0x0a, 0x17, 0x06, 0x17, 0x17, 0x15, 0x10, 0x15, 0xfb, 0x12, 0xf7, 0x12, + 0xbf, 0x10, 0xb8, 0x10, 0x6d, 0x0e, 0x6a, 0x0e, 0x14, 0x0c, 0x0e, 0x0c, + 0xc0, 0x09, 0xbb, 0x09, 0x7e, 0x07, 0x79, 0x07, 0x59, 0x05, 0x54, 0x05, + 0x5b, 0x03, 0x54, 0x03, 0x90, 0x01, 0x8d, 0x01, 0x01, 0x00, 0xfb, 0xff, + 0xb7, 0xfe, 0xb4, 0xfe, 0xb8, 0xfd, 0xb4, 0xfd, 0x09, 0xfd, 0x03, 0xfd, + 0xab, 0xfc, 0xa7, 0xfc, 0xa2, 0xfc, 0x9c, 0xfc, 0xe8, 0xfc, 0xe5, 0xfc, + 0x82, 0xfd, 0x7d, 0xfd, 0x67, 0xfe, 0x62, 0xfe, 0x92, 0xff, 0x8d, 0xff, + 0xfe, 0x00, 0xf9, 0x00, 0xa2, 0x02, 0x9d, 0x02, 0x75, 0x04, 0x73, 0x04, + 0x73, 0x06, 0x6e, 0x06, 0x8b, 0x08, 0x89, 0x08, 0xbf, 0x0a, 0xb8, 0x0a, + 0xf6, 0x0c, 0xf3, 0x0c, 0x32, 0x0f, 0x2d, 0x0f, 0x60, 0x11, 0x5c, 0x11, + 0x7f, 0x13, 0x7b, 0x13, 0x7a, 0x15, 0x75, 0x15, 0x51, 0x17, 0x4e, 0x17, + 0xef, 0x18, 0xea, 0x18, 0x55, 0x1a, 0x51, 0x1a, 0x72, 0x1b, 0x6e, 0x1b, + 0x43, 0x1c, 0x3e, 0x1c, 0xc2, 0x1c, 0xbb, 0x1c, 0xe2, 0x1c, 0xdf, 0x1c, + 0xae, 0x1c, 0xa8, 0x1c, 0x16, 0x1c, 0x13, 0x1c, 0x26, 0x1b, 0x21, 0x1b, + 0xdd, 0x19, 0xd7, 0x19, 0x3b, 0x18, 0x39, 0x18, 0x51, 0x16, 0x4a, 0x16, + 0x17, 0x14, 0x13, 0x14, 0xa8, 0x11, 0xa4, 0x11, 0x01, 0x0f, 0xfc, 0x0e, + 0x34, 0x0c, 0x31, 0x0c, 0x4f, 0x09, 0x49, 0x09, 0x54, 0x06, 0x50, 0x06, + 0x5d, 0x03, 0x59, 0x03, 0x68, 0x00, 0x63, 0x00, 0x8c, 0xfd, 0x87, 0xfd, + 0xd0, 0xfa, 0xca, 0xfa, 0x3c, 0xf8, 0x38, 0xf8, 0xe4, 0xf5, 0xde, 0xf5, + 0xc6, 0xf3, 0xc2, 0xf3, 0xf4, 0xf1, 0xee, 0xf1, 0x6b, 0xf0, 0x68, 0xf0, + 0x3a, 0xef, 0x35, 0xef, 0x5d, 0xee, 0x5b, 0xee, 0xdc, 0xed, 0xd4, 0xed, + 0xae, 0xed, 0xab, 0xed, 0xdb, 0xed, 0xd5, 0xed, 0x59, 0xee, 0x56, 0xee, + 0x29, 0xef, 0x23, 0xef, 0x40, 0xf0, 0x3b, 0xf0, 0x95, 0xf1, 0x92, 0xf1, + 0x28, 0xf3, 0x21, 0xf3, 0xe5, 0xf4, 0xe2, 0xf4, 0xcc, 0xf6, 0xc6, 0xf6, + 0xc7, 0xf8, 0xc3, 0xf8, 0xd5, 0xfa, 0xd1, 0xfa, 0xe7, 0xfc, 0xe1, 0xfc, + 0xec, 0xfe, 0xe7, 0xfe, 0xe6, 0x00, 0xe1, 0x00, 0xb6, 0x02, 0xb1, 0x02, + 0x63, 0x04, 0x5e, 0x04, 0xd6, 0x05, 0xd1, 0x05, 0x06, 0x07, 0x01, 0x07, + 0xf3, 0x07, 0xed, 0x07, 0x88, 0x08, 0x83, 0x08, 0xcf, 0x08, 0xcb, 0x08, + 0xbd, 0x08, 0xb8, 0x08, 0x4f, 0x08, 0x4c, 0x08, 0x93, 0x07, 0x8b, 0x07, + 0x7a, 0x06, 0x79, 0x06, 0x1a, 0x05, 0x14, 0x05, 0x6c, 0x03, 0x6a, 0x03, + 0x80, 0x01, 0x7b, 0x01, 0x5c, 0xff, 0x58, 0xff, 0x08, 0xfd, 0x02, 0xfd, + 0x8f, 0xfa, 0x8b, 0xfa, 0xfa, 0xf7, 0xf7, 0xf7, 0x56, 0xf5, 0x50, 0xf5, + 0xad, 0xf2, 0xa9, 0xf2, 0x06, 0xf0, 0x00, 0xf0, 0x6e, 0xed, 0x6b, 0xed, + 0xf2, 0xea, 0xeb, 0xea, 0x99, 0xe8, 0x95, 0xe8, 0x6f, 0xe6, 0x69, 0xe6, + 0x7b, 0xe4, 0x78, 0xe4, 0xce, 0xe2, 0xc8, 0xe2, 0x63, 0xe1, 0x60, 0xe1, + 0x4f, 0xe0, 0x48, 0xe0, 0x8d, 0xdf, 0x8a, 0xdf, 0x26, 0xdf, 0x21, 0xdf, + 0x1e, 0xdf, 0x19, 0xdf, 0x6f, 0xdf, 0x6a, 0xdf, 0x1f, 0xe0, 0x1a, 0xe0, + 0x2b, 0xe1, 0x25, 0xe1, 0x86, 0xe2, 0x81, 0xe2, 0x31, 0xe4, 0x2e, 0xe4, + 0x23, 0xe6, 0x1d, 0xe6, 0x4e, 0xe8, 0x4a, 0xe8, 0xb0, 0xea, 0xab, 0xea, + 0x32, 0xed, 0x2e, 0xed, 0xd4, 0xef, 0xd1, 0xef, 0x85, 0xf2, 0x7f, 0xf2, + 0x34, 0xf5, 0x2f, 0xf5, 0xdb, 0xf7, 0xd6, 0xf7, 0x6c, 0xfa, 0x66, 0xfa, + 0xdb, 0xfc, 0xd7, 0xfc, 0x1a, 0xff, 0x15, 0xff, 0x24, 0x01, 0x21, 0x01, + 0xeb, 0x02, 0xe5, 0x02, 0x6f, 0x04, 0x6b, 0x04, 0xa1, 0x05, 0x9d, 0x05, + 0x85, 0x06, 0x81, 0x06, 0x14, 0x07, 0x12, 0x07, 0x4f, 0x07, 0x49, 0x07, + 0x36, 0x07, 0x34, 0x07, 0xcc, 0x06, 0xc7, 0x06, 0x15, 0x06, 0x12, 0x06, + 0x17, 0x05, 0x15, 0x05, 0xdb, 0x03, 0xd6, 0x03, 0x65, 0x02, 0x62, 0x02, + 0xbb, 0x00, 0xb7, 0x00, 0xef, 0xfe, 0xed, 0xfe, 0x01, 0xfd, 0xfc, 0xfc, + 0x04, 0xfb, 0x00, 0xfb, 0xfa, 0xf8, 0xf6, 0xf8, 0xf1, 0xf6, 0xec, 0xf6, + 0xf8, 0xf4, 0xf4, 0xf4, 0x12, 0xf3, 0x0d, 0xf3, 0x54, 0xf1, 0x4f, 0xf1, + 0xbd, 0xef, 0xb9, 0xef, 0x61, 0xee, 0x5d, 0xee, 0x46, 0xed, 0x42, 0xed, + 0x75, 0xec, 0x70, 0xec, 0xf4, 0xeb, 0xf1, 0xeb, 0xca, 0xeb, 0xc6, 0xeb, + 0xff, 0xeb, 0xf9, 0xeb, 0x8a, 0xec, 0x87, 0xec, 0x79, 0xed, 0x72, 0xed, + 0xbb, 0xee, 0xb7, 0xee, 0x54, 0xf0, 0x50, 0xf0, 0x3c, 0xf2, 0x39, 0xf2, + 0x6c, 0xf4, 0x67, 0xf4, 0xd7, 0xf6, 0xd3, 0xf6, 0x76, 0xf9, 0x71, 0xf9, + 0x3d, 0xfc, 0x39, 0xfc, 0x22, 0xff, 0x1c, 0xff, 0x18, 0x02, 0x13, 0x02, + 0x13, 0x05, 0x11, 0x05, 0x0b, 0x08, 0x06, 0x08, 0xf1, 0x0a, 0xed, 0x0a, + 0xbb, 0x0d, 0xb6, 0x0d, 0x5f, 0x10, 0x5c, 0x10, 0xd3, 0x12, 0xce, 0x12, + 0x07, 0x15, 0x03, 0x15, 0x00, 0x17, 0xfb, 0x16, 0xa3, 0x18, 0x9f, 0x18, + 0xfc, 0x19, 0xf7, 0x19, 0xf8, 0x1a, 0xf4, 0x1a, 0x9e, 0x1b, 0x99, 0x1b, + 0xe8, 0x1b, 0xe2, 0x1b, 0xd2, 0x1b, 0xcf, 0x1b, 0x64, 0x1b, 0x5e, 0x1b, + 0xa0, 0x1a, 0x9c, 0x1a, 0x89, 0x19, 0x84, 0x19, 0x2a, 0x18, 0x25, 0x18, + 0x88, 0x16, 0x84, 0x16, 0xac, 0x14, 0xa9, 0x14, 0xa5, 0x12, 0xa1, 0x12, + 0x76, 0x10, 0x72, 0x10, 0x35, 0x0e, 0x30, 0x0e, 0xe4, 0x0b, 0xe2, 0x0b, + 0x97, 0x09, 0x93, 0x09, 0x57, 0x07, 0x53, 0x07, 0x2e, 0x05, 0x2a, 0x05, + 0x2c, 0x03, 0x2a, 0x03, 0x5b, 0x01, 0x57, 0x01, 0xc2, 0xff, 0xbe, 0xff, + 0x6e, 0xfe, 0x6a, 0xfe, 0x60, 0xfd, 0x5e, 0xfd, 0xa6, 0xfc, 0xa0, 0xfc, + 0x37, 0xfc, 0x36, 0xfc, 0x23, 0xfc, 0x1e, 0xfc, 0x5f, 0xfc, 0x5b, 0xfc, + 0xf0, 0xfc, 0xeb, 0xfc, 0xcb, 0xfd, 0xc8, 0xfd, 0xf3, 0xfe, 0xf0, 0xfe, + 0x5e, 0x00, 0x57, 0x00, 0x01, 0x02, 0xff, 0x01, 0xdb, 0x03, 0xd7, 0x03, + 0xde, 0x05, 0xdc, 0x05, 0x04, 0x08, 0x00, 0x08, 0x41, 0x0a, 0x3d, 0x0a, + 0x8a, 0x0c, 0x87, 0x0c, 0xda, 0x0e, 0xd8, 0x0e, 0x21, 0x11, 0x1c, 0x11, + 0x59, 0x13, 0x55, 0x13, 0x72, 0x15, 0x71, 0x15, 0x6b, 0x17, 0x67, 0x17, + 0x2e, 0x19, 0x2b, 0x19, 0xba, 0x1a, 0xb7, 0x1a, 0x02, 0x1c, 0x00, 0x1c, + 0xff, 0x1c, 0xfb, 0x1c, 0xac, 0x1d, 0xa9, 0x1d, 0xfc, 0x1d, 0xf8, 0x1d, + 0xf6, 0x1d, 0xf4, 0x1d, 0x91, 0x1d, 0x8d, 0x1d, 0xcd, 0x1c, 0xcb, 0x1c, + 0xb3, 0x1b, 0xae, 0x1b, 0x3c, 0x1a, 0x3b, 0x1a, 0x74, 0x18, 0x6f, 0x18, + 0x64, 0x16, 0x62, 0x16, 0x0e, 0x14, 0x0a, 0x14, 0x85, 0x11, 0x81, 0x11, + 0xcc, 0x0e, 0xc9, 0x0e, 0xf3, 0x0b, 0xee, 0x0b, 0x05, 0x09, 0x01, 0x09, + 0x0c, 0x06, 0x0a, 0x06, 0x1a, 0x03, 0x17, 0x03, 0x36, 0x00, 0x33, 0x00, + 0x6d, 0xfd, 0x6a, 0xfd, 0xcf, 0xfa, 0xcb, 0xfa, 0x5b, 0xf8, 0x58, 0xf8, + 0x29, 0xf6, 0x27, 0xf6, 0x37, 0xf4, 0x33, 0xf4, 0x92, 0xf2, 0x91, 0xf2, + 0x41, 0xf1, 0x3d, 0xf1, 0x40, 0xf0, 0x3e, 0xf0, 0x9c, 0xef, 0x98, 0xef, + 0x4b, 0xef, 0x49, 0xef, 0x59, 0xef, 0x55, 0xef, 0xb4, 0xef, 0xb2, 0xef, + 0x64, 0xf0, 0x60, 0xf0, 0x5e, 0xf1, 0x5b, 0xf1, 0x9c, 0xf2, 0x98, 0xf2, + 0x15, 0xf4, 0x11, 0xf4, 0xc2, 0xf5, 0xbd, 0xf5, 0x97, 0xf7, 0x94, 0xf7, + 0x8e, 0xf9, 0x8a, 0xf9, 0x93, 0xfb, 0x90, 0xfb, 0xa7, 0xfd, 0xa3, 0xfd, + 0xb3, 0xff, 0xaf, 0xff, 0xb3, 0x01, 0xaf, 0x01, 0x9a, 0x03, 0x95, 0x03, + 0x59, 0x05, 0x54, 0x05, 0xe6, 0x06, 0xe4, 0x06, 0x39, 0x08, 0x34, 0x08, + 0x46, 0x09, 0x42, 0x09, 0x04, 0x0a, 0x01, 0x0a, 0x71, 0x0a, 0x6d, 0x0a, + 0x85, 0x0a, 0x81, 0x0a, 0x40, 0x0a, 0x3d, 0x0a, 0xa4, 0x09, 0x9f, 0x09, + 0xad, 0x08, 0xaa, 0x08, 0x69, 0x07, 0x65, 0x07, 0xd1, 0x05, 0xcc, 0x05, + 0xf9, 0x03, 0xf6, 0x03, 0xe1, 0x01, 0xdd, 0x01, 0x94, 0xff, 0x8f, 0xff, + 0x1e, 0xfd, 0x1a, 0xfd, 0x82, 0xfa, 0x7f, 0xfa, 0xd6, 0xf7, 0xd2, 0xf7, + 0x17, 0xf5, 0x15, 0xf5, 0x5d, 0xf2, 0x59, 0xf2, 0xa9, 0xef, 0xa5, 0xef, + 0x0c, 0xed, 0x07, 0xed, 0x8b, 0xea, 0x89, 0xea, 0x37, 0xe8, 0x32, 0xe8, + 0x13, 0xe6, 0x0f, 0xe6, 0x2d, 0xe4, 0x29, 0xe4, 0x8d, 0xe2, 0x8a, 0xe2, + 0x3a, 0xe1, 0x35, 0xe1, 0x3b, 0xe0, 0x37, 0xe0, 0x94, 0xdf, 0x90, 0xdf, + 0x4a, 0xdf, 0x45, 0xdf, 0x5e, 0xdf, 0x59, 0xdf, 0xcc, 0xdf, 0xc8, 0xdf, + 0x9b, 0xe0, 0x98, 0xe0, 0xbd, 0xe1, 0xbb, 0xe1, 0x34, 0xe3, 0x31, 0xe3, + 0xf6, 0xe4, 0xf2, 0xe4, 0xf9, 0xe6, 0xf6, 0xe6, 0x33, 0xe9, 0x30, 0xe9, + 0x9e, 0xeb, 0x9a, 0xeb, 0x28, 0xee, 0x25, 0xee, 0xc9, 0xf0, 0xc6, 0xf0, + 0x72, 0xf3, 0x6f, 0xf3, 0x19, 0xf6, 0x16, 0xf6, 0xaf, 0xf8, 0xab, 0xf8, + 0x2b, 0xfb, 0x27, 0xfb, 0x7d, 0xfd, 0x7a, 0xfd, 0x9f, 0xff, 0x9d, 0xff, + 0x84, 0x01, 0x82, 0x01, 0x27, 0x03, 0x23, 0x03, 0x80, 0x04, 0x7f, 0x04, + 0x86, 0x05, 0x83, 0x05, 0x3b, 0x06, 0x39, 0x06, 0x9d, 0x06, 0x99, 0x06, + 0xa5, 0x06, 0xa3, 0x06, 0x61, 0x06, 0x5d, 0x06, 0xc6, 0x05, 0xc2, 0x05, + 0xe9, 0x04, 0xe4, 0x04, 0xbe, 0x03, 0xbb, 0x03, 0x5c, 0x02, 0x59, 0x02, + 0xc1, 0x00, 0xc0, 0x00, 0xfc, 0xfe, 0xf9, 0xfe, 0x14, 0xfd, 0x10, 0xfd, + 0x0f, 0xfb, 0x0d, 0xfb, 0x01, 0xf9, 0xfa, 0xf8, 0xe4, 0xf6, 0xe4, 0xf6, + 0xd6, 0xf4, 0xd0, 0xf4, 0xd3, 0xf2, 0xd0, 0xf2, 0xf1, 0xf0, 0xee, 0xf0, + 0x32, 0xef, 0x2f, 0xef, 0xa4, 0xed, 0xa2, 0xed, 0x56, 0xec, 0x52, 0xec, + 0x48, 0xeb, 0x46, 0xeb, 0x8f, 0xea, 0x8a, 0xea, 0x21, 0xea, 0x1e, 0xea, + 0x12, 0xea, 0x0f, 0xea, 0x5e, 0xea, 0x5b, 0xea, 0x0a, 0xeb, 0x08, 0xeb, + 0x12, 0xec, 0x0e, 0xec, 0x76, 0xed, 0x73, 0xed, 0x2a, 0xef, 0x28, 0xef, + 0x31, 0xf1, 0x2c, 0xf1, 0x79, 0xf3, 0x77, 0xf3, 0xfd, 0xf5, 0xfc, 0xf5, + 0xb4, 0xf8, 0xb0, 0xf8, 0x8d, 0xfb, 0x8b, 0xfb, 0x87, 0xfe, 0x83, 0xfe, + 0x87, 0x01, 0x86, 0x01, 0x91, 0x04, 0x8e, 0x04, 0x8d, 0x07, 0x8a, 0x07, + 0x78, 0x0a, 0x75, 0x0a, 0x43, 0x0d, 0x42, 0x0d, 0xe1, 0x0f, 0xdd, 0x0f, + 0x4d, 0x12, 0x4a, 0x12, 0x76, 0x14, 0x72, 0x14, 0x5c, 0x16, 0x58, 0x16, + 0xf1, 0x17, 0xee, 0x17, 0x32, 0x19, 0x2f, 0x19, 0x18, 0x1a, 0x16, 0x1a, + 0xa4, 0x1a, 0xa1, 0x1a, 0xd2, 0x1a, 0xcf, 0x1a, 0xa2, 0x1a, 0x9f, 0x1a, + 0x19, 0x1a, 0x17, 0x1a, 0x38, 0x19, 0x36, 0x19, 0x0d, 0x18, 0x0b, 0x18, + 0x95, 0x16, 0x91, 0x16, 0xe0, 0x14, 0xdf, 0x14, 0xf6, 0x12, 0xf1, 0x12, + 0xdd, 0x10, 0xdb, 0x10, 0xa9, 0x0e, 0xa7, 0x0e, 0x5f, 0x0c, 0x5c, 0x0c, + 0x0f, 0x0a, 0x0c, 0x0a, 0xc1, 0x07, 0xc0, 0x07, 0x89, 0x05, 0x85, 0x05, + 0x6c, 0x03, 0x6b, 0x03, 0x7b, 0x01, 0x78, 0x01, 0xbf, 0xff, 0xbc, 0xff, + 0x3f, 0xfe, 0x3c, 0xfe, 0x07, 0xfd, 0x03, 0xfd, 0x19, 0xfc, 0x17, 0xfc, + 0x81, 0xfb, 0x7e, 0xfb, 0x3e, 0xfb, 0x3d, 0xfb, 0x4e, 0xfb, 0x4c, 0xfb, + 0xb8, 0xfb, 0xb6, 0xfb, 0x70, 0xfc, 0x6f, 0xfc, 0x7c, 0xfd, 0x79, 0xfd, + 0xce, 0xfe, 0xcc, 0xfe, 0x64, 0x00, 0x60, 0x00, 0x2f, 0x02, 0x2f, 0x02, + 0x30, 0x04, 0x2b, 0x04, 0x59, 0x06, 0x56, 0x06, 0x9e, 0x08, 0x9c, 0x08, + 0xfe, 0x0a, 0xf7, 0x0a, 0x61, 0x0d, 0x60, 0x0d, 0xcb, 0x0f, 0xc6, 0x0f, + 0x25, 0x12, 0x20, 0x12, 0x6c, 0x14, 0x6a, 0x14, 0x96, 0x16, 0x91, 0x16, + 0x91, 0x18, 0x8e, 0x18, 0x5a, 0x1a, 0x57, 0x1a, 0xe8, 0x1b, 0xe3, 0x1b, + 0x29, 0x1d, 0x27, 0x1d, 0x21, 0x1e, 0x1c, 0x1e, 0xc0, 0x1e, 0xbc, 0x1e, + 0x04, 0x1f, 0x01, 0x1f, 0xec, 0x1e, 0xe7, 0x1e, 0x71, 0x1e, 0x6d, 0x1e, + 0x9a, 0x1d, 0x96, 0x1d, 0x66, 0x1c, 0x63, 0x1c, 0xd9, 0x1a, 0xd4, 0x1a, + 0xfb, 0x18, 0xf7, 0x18, 0xd3, 0x16, 0xcf, 0x16, 0x6b, 0x14, 0x68, 0x14, + 0xca, 0x11, 0xc8, 0x11, 0x05, 0x0f, 0x01, 0x0f, 0x1d, 0x0c, 0x1a, 0x0c, + 0x23, 0x09, 0x21, 0x09, 0x28, 0x06, 0x25, 0x06, 0x2e, 0x03, 0x2c, 0x03, + 0x4f, 0x00, 0x4b, 0x00, 0x89, 0xfd, 0x87, 0xfd, 0xf3, 0xfa, 0xef, 0xfa, + 0x92, 0xf8, 0x91, 0xf8, 0x71, 0xf6, 0x6d, 0xf6, 0x99, 0xf4, 0x97, 0xf4, + 0x10, 0xf3, 0x0c, 0xf3, 0xda, 0xf1, 0xd8, 0xf1, 0xff, 0xf0, 0xf9, 0xf0, + 0x7b, 0xf0, 0x78, 0xf0, 0x53, 0xf0, 0x50, 0xf0, 0x82, 0xf0, 0x7e, 0xf0, + 0x06, 0xf1, 0x04, 0xf1, 0xda, 0xf1, 0xd7, 0xf1, 0xf7, 0xf2, 0xf4, 0xf2, + 0x59, 0xf4, 0x56, 0xf4, 0xef, 0xf5, 0xef, 0xf5, 0xbd, 0xf7, 0xba, 0xf7, + 0xaa, 0xf9, 0xa8, 0xf9, 0xb9, 0xfb, 0xb5, 0xfb, 0xd0, 0xfd, 0xcf, 0xfd, + 0xf2, 0xff, 0xee, 0xff, 0x0a, 0x02, 0x0a, 0x02, 0x12, 0x04, 0x0e, 0x04, + 0xf7, 0x05, 0xf4, 0x05, 0xb4, 0x07, 0xb1, 0x07, 0x3a, 0x09, 0x37, 0x09, + 0x7e, 0x0a, 0x7d, 0x0a, 0x7a, 0x0b, 0x77, 0x0b, 0x22, 0x0c, 0x20, 0x0c, + 0x71, 0x0c, 0x70, 0x0c, 0x69, 0x0c, 0x64, 0x0c, 0xfd, 0x0b, 0xfb, 0x0b, + 0x3a, 0x0b, 0x38, 0x0b, 0x1c, 0x0a, 0x19, 0x0a, 0xa9, 0x08, 0xa8, 0x08, + 0xe9, 0x06, 0xe7, 0x06, 0xe3, 0x04, 0xe0, 0x04, 0x9e, 0x02, 0x9c, 0x02, + 0x25, 0x00, 0x23, 0x00, 0x85, 0xfd, 0x83, 0xfd, 0xc6, 0xfa, 0xc5, 0xfa, + 0xf2, 0xf7, 0xef, 0xf7, 0x15, 0xf5, 0x13, 0xf5, 0x3c, 0xf2, 0x38, 0xf2, + 0x6f, 0xef, 0x6f, 0xef, 0xbc, 0xec, 0xb8, 0xec, 0x2f, 0xea, 0x2d, 0xea, + 0xcc, 0xe7, 0xca, 0xe7, 0xa7, 0xe5, 0xa4, 0xe5, 0xc0, 0xe3, 0xbe, 0xe3, + 0x28, 0xe2, 0x23, 0xe2, 0xde, 0xe0, 0xde, 0xe0, 0xef, 0xdf, 0xeb, 0xdf, + 0x5c, 0xdf, 0x5c, 0xdf, 0x2b, 0xdf, 0x27, 0xdf, 0x58, 0xdf, 0x56, 0xdf, + 0xe8, 0xdf, 0xe6, 0xdf, 0xd3, 0xe0, 0xd1, 0xe0, 0x17, 0xe2, 0x15, 0xe2, + 0xad, 0xe3, 0xab, 0xe3, 0x8c, 0xe5, 0x89, 0xe5, 0xaa, 0xe7, 0xa9, 0xe7, + 0x01, 0xea, 0xfd, 0xe9, 0x7e, 0xec, 0x7c, 0xec, 0x1b, 0xef, 0x19, 0xef, + 0xc8, 0xf1, 0xc6, 0xf1, 0x7b, 0xf4, 0x79, 0xf4, 0x25, 0xf7, 0x21, 0xf7, + 0xb8, 0xf9, 0xb7, 0xf9, 0x2a, 0xfc, 0x27, 0xfc, 0x6d, 0xfe, 0x6b, 0xfe, + 0x7a, 0x00, 0x78, 0x00, 0x46, 0x02, 0x43, 0x02, 0xc5, 0x03, 0xc4, 0x03, + 0xf8, 0x04, 0xf5, 0x04, 0xd2, 0x05, 0xd1, 0x05, 0x5b, 0x06, 0x57, 0x06, + 0x86, 0x06, 0x85, 0x06, 0x5f, 0x06, 0x5b, 0x06, 0xe1, 0x05, 0xe0, 0x05, + 0x12, 0x05, 0x0f, 0x05, 0xfd, 0x03, 0xfb, 0x03, 0xa0, 0x02, 0x9e, 0x02, + 0x0b, 0x01, 0x08, 0x01, 0x42, 0xff, 0x41, 0xff, 0x50, 0xfd, 0x4d, 0xfd, + 0x3f, 0xfb, 0x3e, 0xfb, 0x17, 0xf9, 0x12, 0xf9, 0xe5, 0xf6, 0xe4, 0xf6, + 0xb3, 0xf4, 0xaf, 0xf4, 0x89, 0xf2, 0x8b, 0xf2, 0x7d, 0xf0, 0x7a, 0xf0, + 0x8e, 0xee, 0x8b, 0xee, 0xcc, 0xec, 0xcc, 0xec, 0x43, 0xeb, 0x41, 0xeb, + 0xfd, 0xe9, 0xfa, 0xe9, 0x01, 0xe9, 0x00, 0xe9, 0x5a, 0xe8, 0x55, 0xe8, + 0x08, 0xe8, 0x0a, 0xe8, 0x1b, 0xe8, 0x17, 0xe8, 0x88, 0xe8, 0x86, 0xe8, + 0x5d, 0xe9, 0x5c, 0xe9, 0x8f, 0xea, 0x8b, 0xea, 0x1c, 0xec, 0x1a, 0xec, + 0x00, 0xee, 0xfd, 0xed, 0x2e, 0xf0, 0x2a, 0xf0, 0xa2, 0xf2, 0xa2, 0xf2, + 0x50, 0xf5, 0x4b, 0xf5, 0x2b, 0xf8, 0x29, 0xf8, 0x25, 0xfb, 0x24, 0xfb, + 0x3c, 0xfe, 0x39, 0xfe, 0x58, 0x01, 0x57, 0x01, 0x73, 0x04, 0x71, 0x04, + 0x7f, 0x07, 0x7e, 0x07, 0x74, 0x0a, 0x73, 0x0a, 0x3f, 0x0d, 0x3c, 0x0d, + 0xd9, 0x0f, 0xd7, 0x0f, 0x3a, 0x12, 0x39, 0x12, 0x54, 0x14, 0x52, 0x14, + 0x23, 0x16, 0x21, 0x16, 0x9b, 0x17, 0x99, 0x17, 0xba, 0x18, 0xb8, 0x18, + 0x7a, 0x19, 0x7a, 0x19, 0xdd, 0x19, 0xdb, 0x19, 0xdd, 0x19, 0xdb, 0x19, + 0x80, 0x19, 0x7f, 0x19, 0xcb, 0x18, 0xc9, 0x18, 0xbb, 0x17, 0xba, 0x17, + 0x68, 0x16, 0x66, 0x16, 0xc6, 0x14, 0xc4, 0x14, 0xf0, 0x12, 0xec, 0x12, + 0xe2, 0x10, 0xe2, 0x10, 0xb3, 0x0e, 0xaf, 0x0e, 0x6a, 0x0c, 0x68, 0x0c, + 0x10, 0x0a, 0x0d, 0x0a, 0xb6, 0x07, 0xb4, 0x07, 0x69, 0x05, 0x66, 0x05, + 0x35, 0x03, 0x33, 0x03, 0x26, 0x01, 0x22, 0x01, 0x45, 0xff, 0x46, 0xff, + 0xa5, 0xfd, 0xa0, 0xfd, 0x48, 0xfc, 0x47, 0xfc, 0x3a, 0xfb, 0x37, 0xfb, + 0x7b, 0xfa, 0x7a, 0xfa, 0x18, 0xfa, 0x14, 0xfa, 0x09, 0xfa, 0x0a, 0xfa, + 0x57, 0xfa, 0x53, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xf7, 0xfb, 0xf3, 0xfb, + 0x40, 0xfd, 0x3d, 0xfd, 0xcd, 0xfe, 0xcd, 0xfe, 0x9f, 0x00, 0x9c, 0x00, + 0xa6, 0x02, 0xa5, 0x02, 0xd8, 0x04, 0xd6, 0x04, 0x37, 0x07, 0x35, 0x07, + 0xa9, 0x09, 0xa6, 0x09, 0x2b, 0x0c, 0x2a, 0x0c, 0xb4, 0x0e, 0xb0, 0x0e, + 0x34, 0x11, 0x32, 0x11, 0xa6, 0x13, 0xa4, 0x13, 0xfd, 0x15, 0xfa, 0x15, + 0x28, 0x18, 0x2a, 0x18, 0x29, 0x1a, 0x25, 0x1a, 0xe8, 0x1b, 0xe9, 0x1b, + 0x69, 0x1d, 0x66, 0x1d, 0x98, 0x1e, 0x97, 0x1e, 0x72, 0x1f, 0x6f, 0x1f, + 0xf2, 0x1f, 0xf1, 0x1f, 0x10, 0x20, 0x10, 0x20, 0xd2, 0x1f, 0xd0, 0x1f, + 0x2d, 0x1f, 0x2b, 0x1f, 0x2b, 0x1e, 0x28, 0x1e, 0xcc, 0x1c, 0xcb, 0x1c, + 0x12, 0x1b, 0x11, 0x1b, 0x10, 0x19, 0x0f, 0x19, 0xc3, 0x16, 0xbf, 0x16, + 0x38, 0x14, 0x38, 0x14, 0x82, 0x11, 0x7e, 0x11, 0xa0, 0x0e, 0xa0, 0x0e, + 0xaf, 0x0b, 0xad, 0x0b, 0xaa, 0x08, 0xaa, 0x08, 0xaf, 0x05, 0xac, 0x05, + 0xbc, 0x02, 0xbb, 0x02, 0xea, 0xff, 0xe7, 0xff, 0x3b, 0xfd, 0x3a, 0xfd, + 0xbf, 0xfa, 0xbe, 0xfa, 0x84, 0xf8, 0x7f, 0xf8, 0x87, 0xf6, 0x89, 0xf6, + 0xe3, 0xf4, 0xdf, 0xf4, 0x8a, 0xf3, 0x89, 0xf3, 0x8d, 0xf2, 0x8a, 0xf2, + 0xeb, 0xf1, 0xe8, 0xf1, 0xa0, 0xf1, 0xa0, 0xf1, 0xb6, 0xf1, 0xb4, 0xf1, + 0x1e, 0xf2, 0x1c, 0xf2, 0xdb, 0xf2, 0xd9, 0xf2, 0xe5, 0xf3, 0xe3, 0xf3, + 0x33, 0xf5, 0x31, 0xf5, 0xc0, 0xf6, 0xc0, 0xf6, 0x80, 0xf8, 0x7d, 0xf8, + 0x6a, 0xfa, 0x6b, 0xfa, 0x78, 0xfc, 0x74, 0xfc, 0x94, 0xfe, 0x94, 0xfe, + 0xbf, 0x00, 0xbc, 0x00, 0xe3, 0x02, 0xe2, 0x02, 0xf9, 0x04, 0xf9, 0x04, + 0xf8, 0x06, 0xf5, 0x06, 0xcc, 0x08, 0xcc, 0x08, 0x71, 0x0a, 0x6d, 0x0a, + 0xd5, 0x0b, 0xd5, 0x0b, 0xf6, 0x0c, 0xf3, 0x0c, 0xc2, 0x0d, 0xc2, 0x0d, + 0x39, 0x0e, 0x38, 0x0e, 0x54, 0x0e, 0x51, 0x0e, 0x0d, 0x0e, 0x0e, 0x0e, + 0x6d, 0x0d, 0x69, 0x0d, 0x6b, 0x0c, 0x6c, 0x0c, 0x13, 0x0b, 0x10, 0x0b, + 0x68, 0x09, 0x67, 0x09, 0x71, 0x07, 0x70, 0x07, 0x38, 0x05, 0x36, 0x05, + 0xc5, 0x02, 0xc4, 0x02, 0x22, 0x00, 0x20, 0x00, 0x5f, 0xfd, 0x5c, 0xfd, + 0x7f, 0xfa, 0x7f, 0xfa, 0x94, 0xf7, 0x91, 0xf7, 0xa3, 0xf4, 0xa3, 0xf4, + 0xc0, 0xf1, 0xbe, 0xf1, 0xf1, 0xee, 0xee, 0xee, 0x3f, 0xec, 0x3e, 0xec, + 0xbc, 0xe9, 0xb8, 0xe9, 0x6a, 0xe7, 0x69, 0xe7, 0x5b, 0xe5, 0x58, 0xe5, + 0x93, 0xe3, 0x93, 0xe3, 0x1a, 0xe2, 0x17, 0xe2, 0xfc, 0xe0, 0xfb, 0xe0, + 0x36, 0xe0, 0x34, 0xe0, 0xd1, 0xdf, 0xd0, 0xdf, 0xcf, 0xdf, 0xcd, 0xdf, + 0x2b, 0xe0, 0x29, 0xe0, 0xea, 0xe0, 0xe9, 0xe0, 0xfe, 0xe1, 0xfd, 0xe1, + 0x6c, 0xe3, 0x6a, 0xe3, 0x25, 0xe5, 0x24, 0xe5, 0x21, 0xe7, 0x1e, 0xe7, + 0x59, 0xe9, 0x57, 0xe9, 0xbd, 0xeb, 0xbb, 0xeb, 0x46, 0xee, 0x45, 0xee, + 0xe3, 0xf0, 0xe2, 0xf0, 0x8b, 0xf3, 0x89, 0xf3, 0x2e, 0xf6, 0x2c, 0xf6, + 0xc0, 0xf8, 0xbe, 0xf8, 0x32, 0xfb, 0x32, 0xfb, 0x7f, 0xfd, 0x7d, 0xfd, + 0x94, 0xff, 0x90, 0xff, 0x69, 0x01, 0x6a, 0x01, 0xfd, 0x02, 0xfb, 0x02, + 0x3c, 0x04, 0x3a, 0x04, 0x2e, 0x05, 0x2d, 0x05, 0xc7, 0x05, 0xc3, 0x05, + 0x05, 0x06, 0x06, 0x06, 0xf2, 0x05, 0xee, 0x05, 0x81, 0x05, 0x80, 0x05, + 0xc4, 0x04, 0xc3, 0x04, 0xb9, 0x03, 0xb8, 0x03, 0x68, 0x02, 0x65, 0x02, + 0xda, 0x00, 0xdb, 0x00, 0x17, 0xff, 0x14, 0xff, 0x26, 0xfd, 0x25, 0xfd, + 0x12, 0xfb, 0x12, 0xfb, 0xe8, 0xf8, 0xe6, 0xf8, 0xaf, 0xf6, 0xad, 0xf6, + 0x6e, 0xf4, 0x6d, 0xf4, 0x3d, 0xf2, 0x3a, 0xf2, 0x15, 0xf0, 0x14, 0xf0, + 0x13, 0xee, 0x10, 0xee, 0x37, 0xec, 0x35, 0xec, 0x8d, 0xea, 0x8d, 0xea, + 0x27, 0xe9, 0x24, 0xe9, 0x01, 0xe8, 0x01, 0xe8, 0x34, 0xe7, 0x32, 0xe7, + 0xb8, 0xe6, 0xb7, 0xe6, 0x9c, 0xe6, 0x9a, 0xe6, 0xe0, 0xe6, 0xde, 0xe6, + 0x84, 0xe7, 0x82, 0xe7, 0x8b, 0xe8, 0x89, 0xe8, 0xee, 0xe9, 0xec, 0xe9, + 0xac, 0xeb, 0xa9, 0xeb, 0xb9, 0xed, 0xb7, 0xed, 0x10, 0xf0, 0x0e, 0xf0, + 0xa5, 0xf2, 0xa1, 0xf2, 0x6b, 0xf5, 0x6c, 0xf5, 0x5e, 0xf8, 0x59, 0xf8, + 0x66, 0xfb, 0x65, 0xfb, 0x85, 0xfe, 0x7f, 0xfe, 0x9d, 0x01, 0x9d, 0x01, + 0xb5, 0x04, 0xb1, 0x04, 0xb1, 0x07, 0xb0, 0x07, 0x8f, 0x0a, 0x8c, 0x0a, + 0x3f, 0x0d, 0x3d, 0x0d, 0xb6, 0x0f, 0xb6, 0x0f, 0xee, 0x11, 0xea, 0x11, + 0xda, 0x13, 0xd9, 0x13, 0x75, 0x15, 0x72, 0x15, 0xba, 0x16, 0xb9, 0x16, + 0x9e, 0x17, 0x9d, 0x17, 0x27, 0x18, 0x26, 0x18, 0x4d, 0x18, 0x4d, 0x18, + 0x17, 0x18, 0x14, 0x18, 0x84, 0x17, 0x84, 0x17, 0x9c, 0x16, 0x99, 0x16, + 0x67, 0x15, 0x66, 0x15, 0xe6, 0x13, 0xe5, 0x13, 0x2d, 0x12, 0x2a, 0x12, + 0x36, 0x10, 0x36, 0x10, 0x1e, 0x0e, 0x1b, 0x0e, 0xe4, 0x0b, 0xe2, 0x0b, + 0x96, 0x09, 0x96, 0x09, 0x46, 0x07, 0x44, 0x07, 0xf8, 0x04, 0xf8, 0x04, + 0xc3, 0x02, 0xc0, 0x02, 0xac, 0x00, 0xaa, 0x00, 0xc3, 0xfe, 0xc0, 0xfe, + 0x0f, 0xfd, 0x0e, 0xfd, 0xa1, 0xfb, 0x9e, 0xfb, 0x7a, 0xfa, 0x7a, 0xfa, + 0xa8, 0xf9, 0xa6, 0xf9, 0x2e, 0xf9, 0x2b, 0xf9, 0x09, 0xf9, 0x09, 0xf9, + 0x43, 0xf9, 0x42, 0xf9, 0xd5, 0xf9, 0xd2, 0xf9, 0xbd, 0xfa, 0xbd, 0xfa, + 0xf5, 0xfb, 0xf1, 0xfb, 0x7b, 0xfd, 0x7b, 0xfd, 0x45, 0xff, 0x42, 0xff, + 0x49, 0x01, 0x47, 0x01, 0x80, 0x03, 0x7e, 0x03, 0xdc, 0x05, 0xd8, 0x05, + 0x5a, 0x08, 0x5a, 0x08, 0xe9, 0x0a, 0xe6, 0x0a, 0x85, 0x0d, 0x82, 0x0d, + 0x1c, 0x10, 0x19, 0x10, 0xa4, 0x12, 0xa0, 0x12, 0x19, 0x15, 0x16, 0x15, + 0x67, 0x17, 0x64, 0x17, 0x8b, 0x19, 0x88, 0x19, 0x73, 0x1b, 0x72, 0x1b, + 0x1d, 0x1d, 0x19, 0x1d, 0x7d, 0x1e, 0x79, 0x1e, 0x87, 0x1f, 0x83, 0x1f, + 0x37, 0x20, 0x36, 0x20, 0x8d, 0x20, 0x87, 0x20, 0x7b, 0x20, 0x7a, 0x20, + 0x0e, 0x20, 0x0a, 0x20, 0x3a, 0x1f, 0x37, 0x1f, 0x0b, 0x1e, 0x08, 0x1e, + 0x7f, 0x1c, 0x7d, 0x1c, 0xa4, 0x1a, 0x9f, 0x1a, 0x78, 0x18, 0x76, 0x18, + 0x11, 0x16, 0x0e, 0x16, 0x71, 0x13, 0x6b, 0x13, 0xa6, 0x10, 0xa6, 0x10, + 0xbf, 0x0d, 0xba, 0x0d, 0xc6, 0x0a, 0xc3, 0x0a, 0xc9, 0x07, 0xc8, 0x07, + 0xd8, 0x04, 0xd4, 0x04, 0xf9, 0x01, 0xf9, 0x01, 0x42, 0xff, 0x3f, 0xff, + 0xb8, 0xfc, 0xb4, 0xfc, 0x64, 0xfa, 0x62, 0xfa, 0x55, 0xf8, 0x54, 0xf8, + 0x93, 0xf6, 0x90, 0xf6, 0x21, 0xf5, 0x21, 0xf5, 0x09, 0xf4, 0x04, 0xf4, + 0x47, 0xf3, 0x47, 0xf3, 0xe6, 0xf2, 0xe3, 0xf2, 0xdb, 0xf2, 0xd9, 0xf2, + 0x2c, 0xf3, 0x2a, 0xf3, 0xd2, 0xf3, 0xce, 0xf3, 0xc5, 0xf4, 0xc4, 0xf4, + 0x03, 0xf6, 0x00, 0xf6, 0x7f, 0xf7, 0x7f, 0xf7, 0x36, 0xf9, 0x34, 0xf9, + 0x1c, 0xfb, 0x19, 0xfb, 0x24, 0xfd, 0x22, 0xfd, 0x44, 0xff, 0x42, 0xff, + 0x73, 0x01, 0x71, 0x01, 0xa5, 0x03, 0xa3, 0x03, 0xcd, 0x05, 0xcb, 0x05, + 0xe0, 0x07, 0xdd, 0x07, 0xcd, 0x09, 0xcb, 0x09, 0x90, 0x0b, 0x8f, 0x0b, + 0x19, 0x0d, 0x16, 0x0d, 0x5d, 0x0e, 0x5d, 0x0e, 0x57, 0x0f, 0x54, 0x0f, + 0xf6, 0x0f, 0xf5, 0x0f, 0x3d, 0x10, 0x3b, 0x10, 0x1f, 0x10, 0x1f, 0x10, + 0xa5, 0x0f, 0xa5, 0x0f, 0xc7, 0x0e, 0xc6, 0x0e, 0x8d, 0x0d, 0x8c, 0x0d, + 0xfc, 0x0b, 0xfa, 0x0b, 0x18, 0x0a, 0x17, 0x0a, 0xec, 0x07, 0xec, 0x07, + 0x7f, 0x05, 0x7d, 0x05, 0xdc, 0x02, 0xdc, 0x02, 0x0f, 0x00, 0x0e, 0x00, + 0x25, 0xfd, 0x24, 0xfd, 0x28, 0xfa, 0x26, 0xfa, 0x21, 0xf7, 0x1f, 0xf7, + 0x1f, 0xf4, 0x1f, 0xf4, 0x2c, 0xf1, 0x2a, 0xf1, 0x57, 0xee, 0x56, 0xee, + 0xa7, 0xeb, 0xa4, 0xeb, 0x28, 0xe9, 0x28, 0xe9, 0xe6, 0xe6, 0xe4, 0xe6, + 0xeb, 0xe4, 0xe8, 0xe4, 0x3d, 0xe3, 0x3d, 0xe3, 0xe8, 0xe1, 0xe5, 0xe1, + 0xec, 0xe0, 0xeb, 0xe0, 0x53, 0xe0, 0x51, 0xe0, 0x1c, 0xe0, 0x18, 0xe0, + 0x47, 0xe0, 0x45, 0xe0, 0xd6, 0xe0, 0xd3, 0xe0, 0xc1, 0xe1, 0xbe, 0xe1, + 0x08, 0xe3, 0x05, 0xe3, 0x9e, 0xe4, 0x9b, 0xe4, 0x80, 0xe6, 0x7c, 0xe6, + 0xa0, 0xe8, 0x9c, 0xe8, 0xf4, 0xea, 0xf2, 0xea, 0x72, 0xed, 0x6f, 0xed, + 0x0a, 0xf0, 0x08, 0xf0, 0xb4, 0xf2, 0xb0, 0xf2, 0x5c, 0xf5, 0x59, 0xf5, + 0xfb, 0xf7, 0xf8, 0xf7, 0x81, 0xfa, 0x80, 0xfa, 0xdf, 0xfc, 0xdd, 0xfc, + 0x12, 0xff, 0x0e, 0xff, 0x01, 0x01, 0xfe, 0x00, 0xae, 0x02, 0xac, 0x02, + 0x11, 0x04, 0x0c, 0x04, 0x18, 0x05, 0x1a, 0x05, 0xd2, 0x05, 0xcc, 0x05, + 0x27, 0x06, 0x28, 0x06, 0x29, 0x06, 0x25, 0x06, 0xcf, 0x05, 0xcd, 0x05, + 0x20, 0x05, 0x1e, 0x05, 0x20, 0x04, 0x1c, 0x04, 0xd6, 0x02, 0xd5, 0x02, + 0x48, 0x01, 0x44, 0x01, 0x7f, 0xff, 0x7e, 0xff, 0x8a, 0xfd, 0x86, 0xfd, + 0x64, 0xfb, 0x61, 0xfb, 0x2a, 0xf9, 0x27, 0xf9, 0xd6, 0xf6, 0xd4, 0xf6, + 0x7e, 0xf4, 0x7a, 0xf4, 0x27, 0xf2, 0x25, 0xf2, 0xdd, 0xef, 0xda, 0xef, + 0xb2, 0xed, 0xaf, 0xed, 0xa3, 0xeb, 0xa1, 0xeb, 0xcf, 0xe9, 0xca, 0xe9, + 0x2d, 0xe8, 0x2d, 0xe8, 0xd7, 0xe6, 0xd3, 0xe6, 0xd0, 0xe5, 0xce, 0xe5, + 0x1b, 0xe5, 0x19, 0xe5, 0xc8, 0xe4, 0xc4, 0xe4, 0xd1, 0xe4, 0xd1, 0xe4, + 0x44, 0xe5, 0x40, 0xe5, 0x19, 0xe6, 0x16, 0xe6, 0x4f, 0xe7, 0x4f, 0xe7, + 0xe7, 0xe8, 0xe4, 0xe8, 0xd6, 0xea, 0xd3, 0xea, 0x12, 0xed, 0x0f, 0xed, + 0x97, 0xef, 0x94, 0xef, 0x54, 0xf2, 0x52, 0xf2, 0x43, 0xf5, 0x40, 0xf5, + 0x56, 0xf8, 0x52, 0xf8, 0x79, 0xfb, 0x7a, 0xfb, 0xad, 0xfe, 0xa9, 0xfe, + 0xd5, 0x01, 0xd4, 0x01, 0xf7, 0x04, 0xf2, 0x04, 0xf3, 0x07, 0xf2, 0x07, + 0xcd, 0x0a, 0xca, 0x0a, 0x6f, 0x0d, 0x6d, 0x0d, 0xd3, 0x0f, 0xd1, 0x0f, + 0xf3, 0x11, 0xef, 0x11, 0xbc, 0x13, 0xbb, 0x13, 0x32, 0x15, 0x30, 0x15, + 0x46, 0x16, 0x44, 0x16, 0xfc, 0x16, 0xf8, 0x16, 0x50, 0x17, 0x4e, 0x17, + 0x43, 0x17, 0x3e, 0x17, 0xd5, 0x16, 0xd3, 0x16, 0x0e, 0x16, 0x0b, 0x16, + 0xf3, 0x14, 0xef, 0x14, 0x8b, 0x13, 0x87, 0x13, 0xde, 0x11, 0xdc, 0x11, + 0xf9, 0x0f, 0xf5, 0x0f, 0xe3, 0x0d, 0xe0, 0x0d, 0xa8, 0x0b, 0xa6, 0x0b, + 0x58, 0x09, 0x53, 0x09, 0xf9, 0x06, 0xf8, 0x06, 0x9d, 0x04, 0x99, 0x04, + 0x50, 0x02, 0x4b, 0x02, 0x19, 0x00, 0x17, 0x00, 0x10, 0xfe, 0x0a, 0xfe, + 0x38, 0xfc, 0x35, 0xfc, 0xa0, 0xfa, 0x9d, 0xfa, 0x56, 0xf9, 0x50, 0xf9, + 0x57, 0xf8, 0x57, 0xf8, 0xb7, 0xf7, 0xb3, 0xf7, 0x6f, 0xf7, 0x6d, 0xf7, + 0x88, 0xf7, 0x85, 0xf7, 0xfe, 0xf7, 0xf9, 0xf7, 0xce, 0xf8, 0xcc, 0xf8, + 0xf5, 0xf9, 0xf3, 0xf9, 0x72, 0xfb, 0x6f, 0xfb, 0x35, 0xfd, 0x33, 0xfd, + 0x3d, 0xff, 0x39, 0xff, 0x7b, 0x01, 0x7b, 0x01, 0xeb, 0x03, 0xe7, 0x03, + 0x7b, 0x06, 0x78, 0x06, 0x28, 0x09, 0x26, 0x09, 0xdf, 0x0b, 0xdb, 0x0b, + 0x9b, 0x0e, 0x9b, 0x0e, 0x51, 0x11, 0x4c, 0x11, 0xef, 0x13, 0xef, 0x13, + 0x75, 0x16, 0x72, 0x16, 0xc9, 0x18, 0xc8, 0x18, 0xf0, 0x1a, 0xed, 0x1a, + 0xd2, 0x1c, 0xd0, 0x1c, 0x6d, 0x1e, 0x6a, 0x1e, 0xb9, 0x1f, 0xb6, 0x1f, + 0xa7, 0x20, 0xa5, 0x20, 0x3d, 0x21, 0x38, 0x21, 0x69, 0x21, 0x66, 0x21, + 0x31, 0x21, 0x30, 0x21, 0x98, 0x20, 0x93, 0x20, 0x97, 0x1f, 0x94, 0x1f, + 0x3b, 0x1e, 0x3a, 0x1e, 0x84, 0x1c, 0x80, 0x1c, 0x7c, 0x1a, 0x7b, 0x1a, + 0x2d, 0x18, 0x29, 0x18, 0xa0, 0x15, 0x9f, 0x15, 0xe7, 0x12, 0xe2, 0x12, + 0x03, 0x10, 0x01, 0x10, 0x0c, 0x0d, 0x0a, 0x0d, 0x07, 0x0a, 0x06, 0x0a, + 0x09, 0x07, 0x04, 0x07, 0x19, 0x04, 0x19, 0x04, 0x4a, 0x01, 0x46, 0x01, + 0xa3, 0xfe, 0xa1, 0xfe, 0x32, 0xfc, 0x2f, 0xfc, 0x03, 0xfa, 0x01, 0xfa, + 0x1d, 0xf8, 0x1a, 0xf8, 0x86, 0xf6, 0x85, 0xf6, 0x4a, 0xf5, 0x47, 0xf5, + 0x65, 0xf4, 0x64, 0xf4, 0xe3, 0xf3, 0xdf, 0xf3, 0xb9, 0xf3, 0xb6, 0xf3, + 0xee, 0xf3, 0xed, 0xf3, 0x78, 0xf4, 0x75, 0xf4, 0x59, 0xf5, 0x57, 0xf5, + 0x85, 0xf6, 0x83, 0xf6, 0xf9, 0xf7, 0xf4, 0xf7, 0xa5, 0xf9, 0xa4, 0xf9, + 0x86, 0xfb, 0x83, 0xfb, 0x93, 0xfd, 0x91, 0xfd, 0xb8, 0xff, 0xb6, 0xff, + 0xf8, 0x01, 0xf6, 0x01, 0x37, 0x04, 0x35, 0x04, 0x78, 0x06, 0x75, 0x06, + 0xa4, 0x08, 0xa2, 0x08, 0xb6, 0x0a, 0xb3, 0x0a, 0x9d, 0x0c, 0x99, 0x0c, + 0x4d, 0x0e, 0x4a, 0x0e, 0xbf, 0x0f, 0xbc, 0x0f, 0xe8, 0x10, 0xe5, 0x10, + 0xb9, 0x11, 0xb7, 0x11, 0x32, 0x12, 0x2f, 0x12, 0x47, 0x12, 0x46, 0x12, + 0xfc, 0x11, 0xf8, 0x11, 0x4b, 0x11, 0x49, 0x11, 0x36, 0x10, 0x34, 0x10, + 0xc6, 0x0e, 0xc2, 0x0e, 0xfd, 0x0c, 0xfb, 0x0c, 0xe6, 0x0a, 0xe4, 0x0a, + 0x89, 0x08, 0x85, 0x08, 0xeb, 0x05, 0xea, 0x05, 0x23, 0x03, 0x1e, 0x03, + 0x2f, 0x00, 0x2e, 0x00, 0x25, 0xfd, 0x23, 0xfd, 0x0e, 0xfa, 0x0a, 0xfa, + 0xf0, 0xf6, 0xee, 0xf6, 0xe2, 0xf3, 0xe0, 0xf3, 0xe6, 0xf0, 0xe5, 0xf0, + 0x0e, 0xee, 0x0b, 0xee, 0x66, 0xeb, 0x64, 0xeb, 0xf1, 0xe8, 0xee, 0xe8, + 0xc2, 0xe6, 0xc2, 0xe6, 0xe1, 0xe4, 0xde, 0xe4, 0x4f, 0xe3, 0x4d, 0xe3, + 0x20, 0xe2, 0x1d, 0xe2, 0x47, 0xe1, 0x46, 0xe1, 0xdb, 0xe0, 0xd8, 0xe0, + 0xce, 0xe0, 0xcd, 0xe0, 0x27, 0xe1, 0x23, 0xe1, 0xe3, 0xe1, 0xe2, 0xe1, + 0xf9, 0xe2, 0xf5, 0xe2, 0x68, 0xe4, 0x68, 0xe4, 0x24, 0xe6, 0x20, 0xe6, + 0x25, 0xe8, 0x22, 0xe8, 0x60, 0xea, 0x5d, 0xea, 0xca, 0xec, 0xc6, 0xec, + 0x55, 0xef, 0x53, 0xef, 0xf5, 0xf1, 0xf0, 0xf1, 0x9b, 0xf4, 0x9b, 0xf4, + 0x3f, 0xf7, 0x3c, 0xf7, 0xd0, 0xf9, 0xcc, 0xf9, 0x3f, 0xfc, 0x3e, 0xfc, + 0x80, 0xfe, 0x7b, 0xfe, 0x8a, 0x00, 0x88, 0x00, 0x50, 0x02, 0x4d, 0x02, + 0xce, 0x03, 0xcb, 0x03, 0xf6, 0x04, 0xf4, 0x04, 0xc8, 0x05, 0xc6, 0x05, + 0x3e, 0x06, 0x3a, 0x06, 0x5b, 0x06, 0x58, 0x06, 0x1a, 0x06, 0x17, 0x06, + 0x80, 0x05, 0x7e, 0x05, 0x94, 0x04, 0x8f, 0x04, 0x57, 0x03, 0x54, 0x03, + 0xd4, 0x01, 0xd2, 0x01, 0x15, 0x00, 0x12, 0x00, 0x1c, 0xfe, 0x19, 0xfe, + 0xfa, 0xfb, 0xf6, 0xfb, 0xb3, 0xf9, 0xaf, 0xf9, 0x56, 0xf7, 0x56, 0xf7, + 0xeb, 0xf4, 0xe7, 0xf4, 0x7f, 0xf2, 0x7c, 0xf2, 0x1b, 0xf0, 0x17, 0xf0, + 0xd0, 0xed, 0xcd, 0xed, 0x9e, 0xeb, 0x9b, 0xeb, 0xa0, 0xe9, 0x9e, 0xe9, + 0xd3, 0xe7, 0xd0, 0xe7, 0x49, 0xe6, 0x47, 0xe6, 0x0c, 0xe5, 0x0a, 0xe5, + 0x22, 0xe4, 0x1f, 0xe4, 0x95, 0xe3, 0x92, 0xe3, 0x66, 0xe3, 0x64, 0xe3, + 0x9e, 0xe3, 0x99, 0xe3, 0x39, 0xe4, 0x37, 0xe4, 0x3a, 0xe5, 0x36, 0xe5, + 0x9e, 0xe6, 0x9b, 0xe6, 0x5d, 0xe8, 0x5a, 0xe8, 0x73, 0xea, 0x71, 0xea, + 0xd6, 0xec, 0xd3, 0xec, 0x76, 0xef, 0x75, 0xef, 0x53, 0xf2, 0x4e, 0xf2, + 0x56, 0xf5, 0x53, 0xf5, 0x73, 0xf8, 0x71, 0xf8, 0xa9, 0xfb, 0xa3, 0xfb, + 0xd8, 0xfe, 0xd6, 0xfe, 0x04, 0x02, 0x00, 0x02, 0x16, 0x05, 0x15, 0x05, + 0x07, 0x08, 0x03, 0x08, 0xc9, 0x0a, 0xc8, 0x0a, 0x4f, 0x0d, 0x4c, 0x0d, + 0x93, 0x0f, 0x90, 0x0f, 0x88, 0x11, 0x86, 0x11, 0x27, 0x13, 0x23, 0x13, + 0x6b, 0x14, 0x69, 0x14, 0x4f, 0x15, 0x48, 0x15, 0xce, 0x15, 0xcd, 0x15, + 0xef, 0x15, 0xeb, 0x15, 0xac, 0x15, 0xa9, 0x15, 0x0f, 0x15, 0x0e, 0x15, + 0x1a, 0x14, 0x17, 0x14, 0xd3, 0x12, 0xd1, 0x12, 0x48, 0x11, 0x43, 0x11, + 0x75, 0x0f, 0x75, 0x0f, 0x79, 0x0d, 0x74, 0x0d, 0x49, 0x0b, 0x48, 0x0b, + 0x04, 0x09, 0x00, 0x09, 0xa6, 0x06, 0xa4, 0x06, 0x46, 0x04, 0x46, 0x04, + 0xf0, 0x01, 0xeb, 0x01, 0xab, 0xff, 0xaa, 0xff, 0x8c, 0xfd, 0x89, 0xfd, + 0x98, 0xfb, 0x94, 0xfb, 0xe0, 0xf9, 0xdf, 0xf9, 0x70, 0xf8, 0x6b, 0xf8, + 0x4f, 0xf7, 0x4c, 0xf7, 0x83, 0xf6, 0x82, 0xf6, 0x16, 0xf6, 0x12, 0xf6, + 0x08, 0xf6, 0x05, 0xf6, 0x58, 0xf6, 0x56, 0xf6, 0x0b, 0xf7, 0x09, 0xf7, + 0x16, 0xf8, 0x13, 0xf8, 0x7b, 0xf9, 0x7a, 0xf9, 0x2e, 0xfb, 0x27, 0xfb, + 0x26, 0xfd, 0x25, 0xfd, 0x63, 0xff, 0x5e, 0xff, 0xce, 0x01, 0xcc, 0x01, + 0x67, 0x04, 0x63, 0x04, 0x1d, 0x07, 0x19, 0x07, 0xea, 0x09, 0xe6, 0x09, + 0xbd, 0x0c, 0xba, 0x0c, 0x8b, 0x0f, 0x87, 0x0f, 0x4f, 0x12, 0x4b, 0x12, + 0xf4, 0x14, 0xf1, 0x14, 0x7c, 0x17, 0x77, 0x17, 0xcd, 0x19, 0xca, 0x19, + 0xe7, 0x1b, 0xe3, 0x1b, 0xbb, 0x1d, 0xb5, 0x1d, 0x3b, 0x1f, 0x3a, 0x1f, + 0x6d, 0x20, 0x68, 0x20, 0x3a, 0x21, 0x38, 0x21, 0xaa, 0x21, 0xa6, 0x21, + 0xb0, 0x21, 0xac, 0x21, 0x50, 0x21, 0x4f, 0x21, 0x8f, 0x20, 0x89, 0x20, + 0x62, 0x1f, 0x61, 0x1f, 0xe2, 0x1d, 0xdd, 0x1d, 0x04, 0x1c, 0x00, 0x1c, + 0xdb, 0x19, 0xd8, 0x19, 0x6e, 0x17, 0x6a, 0x17, 0xcb, 0x14, 0xc7, 0x14, + 0xfc, 0x11, 0xf8, 0x11, 0x0d, 0x0f, 0x09, 0x0f, 0x0e, 0x0c, 0x09, 0x0c, + 0x0b, 0x09, 0x0a, 0x09, 0x14, 0x06, 0x0e, 0x06, 0x33, 0x03, 0x32, 0x03, + 0x78, 0x00, 0x72, 0x00, 0xed, 0xfd, 0xee, 0xfd, 0xa2, 0xfb, 0x9b, 0xfb, + 0x98, 0xf9, 0x97, 0xf9, 0xe3, 0xf7, 0xe1, 0xf7, 0x7e, 0xf6, 0x7b, 0xf6, + 0x7c, 0xf5, 0x77, 0xf5, 0xcc, 0xf4, 0xcb, 0xf4, 0x86, 0xf4, 0x83, 0xf4, + 0x9b, 0xf4, 0x96, 0xf4, 0x08, 0xf5, 0x05, 0xf5, 0xd2, 0xf5, 0xcd, 0xf5, + 0xe7, 0xf6, 0xe5, 0xf6, 0x4b, 0xf8, 0x46, 0xf8, 0xec, 0xf9, 0xea, 0xf9, + 0xc5, 0xfb, 0xc3, 0xfb, 0xd1, 0xfd, 0xce, 0xfd, 0xf9, 0xff, 0xf6, 0xff, + 0x41, 0x02, 0x3e, 0x02, 0x90, 0x04, 0x8d, 0x04, 0xe5, 0x06, 0xe1, 0x06, + 0x2d, 0x09, 0x2a, 0x09, 0x5c, 0x0b, 0x57, 0x0b, 0x69, 0x0d, 0x66, 0x0d, + 0x45, 0x0f, 0x41, 0x0f, 0xe3, 0x10, 0xe0, 0x10, 0x3f, 0x12, 0x39, 0x12, + 0x44, 0x13, 0x41, 0x13, 0xf5, 0x13, 0xf2, 0x13, 0x41, 0x14, 0x3d, 0x14, + 0x2c, 0x14, 0x29, 0x14, 0xac, 0x13, 0xa6, 0x13, 0xc6, 0x12, 0xc4, 0x12, + 0x7f, 0x11, 0x7a, 0x11, 0xd4, 0x0f, 0xd4, 0x0f, 0xdc, 0x0d, 0xd5, 0x0d, + 0x8b, 0x0b, 0x88, 0x0b, 0xfd, 0x08, 0xf9, 0x08, 0x36, 0x06, 0x30, 0x06, + 0x3b, 0x03, 0x39, 0x03, 0x27, 0x00, 0x22, 0x00, 0xf7, 0xfc, 0xf3, 0xfc, + 0xc6, 0xf9, 0xc2, 0xf9, 0x92, 0xf6, 0x8e, 0xf6, 0x75, 0xf3, 0x71, 0xf3, + 0x72, 0xf0, 0x6c, 0xf0, 0x98, 0xed, 0x94, 0xed, 0xf3, 0xea, 0xef, 0xea, + 0x8d, 0xe8, 0x8a, 0xe8, 0x73, 0xe6, 0x6e, 0xe6, 0xa8, 0xe4, 0xa5, 0xe4, + 0x3c, 0xe3, 0x37, 0xe3, 0x30, 0xe2, 0x2b, 0xe2, 0x84, 0xe1, 0x81, 0xe1, + 0x45, 0xe1, 0x43, 0xe1, 0x6b, 0xe1, 0x64, 0xe1, 0xf4, 0xe1, 0xf4, 0xe1, + 0xe5, 0xe2, 0xdf, 0xe2, 0x2e, 0xe4, 0x29, 0xe4, 0xcb, 0xe5, 0xc9, 0xe5, + 0xb4, 0xe7, 0xaf, 0xe7, 0xde, 0xe9, 0xda, 0xe9, 0x3b, 0xec, 0x38, 0xec, + 0xc2, 0xee, 0xbe, 0xee, 0x65, 0xf1, 0x62, 0xf1, 0x16, 0xf4, 0x12, 0xf4, + 0xc5, 0xf6, 0xc2, 0xf6, 0x68, 0xf9, 0x65, 0xf9, 0xf3, 0xfb, 0xee, 0xfb, + 0x50, 0xfe, 0x4d, 0xfe, 0x78, 0x00, 0x76, 0x00, 0x61, 0x02, 0x5d, 0x02, + 0x00, 0x04, 0xfd, 0x03, 0x4d, 0x05, 0x48, 0x05, 0x40, 0x06, 0x3d, 0x06, + 0xd7, 0x06, 0xd3, 0x06, 0x0b, 0x07, 0x09, 0x07, 0xe2, 0x06, 0xdd, 0x06, + 0x5d, 0x06, 0x5a, 0x06, 0x7a, 0x05, 0x77, 0x05, 0x49, 0x04, 0x45, 0x04, + 0xc5, 0x02, 0xc3, 0x02, 0xff, 0x00, 0xfa, 0x00, 0x00, 0xff, 0xfe, 0xfe, + 0xca, 0xfc, 0xc4, 0xfc, 0x71, 0xfa, 0x6e, 0xfa, 0xf9, 0xf7, 0xf5, 0xf7, + 0x70, 0xf5, 0x6b, 0xf5, 0xdf, 0xf2, 0xdc, 0xf2, 0x54, 0xf0, 0x4f, 0xf0, + 0xda, 0xed, 0xd6, 0xed, 0x7d, 0xeb, 0x78, 0xeb, 0x45, 0xe9, 0x42, 0xe9, + 0x48, 0xe7, 0x43, 0xe7, 0x80, 0xe5, 0x7d, 0xe5, 0x0a, 0xe4, 0x07, 0xe4, + 0xe6, 0xe2, 0xe1, 0xe2, 0x1b, 0xe2, 0x17, 0xe2, 0xb8, 0xe1, 0xb4, 0xe1, + 0xb6, 0xe1, 0xb2, 0xe1, 0x20, 0xe2, 0x1d, 0xe2, 0xf3, 0xe2, 0xee, 0xe2, + 0x2c, 0xe4, 0x29, 0xe4, 0xca, 0xe5, 0xc7, 0xe5, 0xc5, 0xe7, 0xbf, 0xe7, + 0x10, 0xea, 0x10, 0xea, 0xa9, 0xec, 0xa1, 0xec, 0x7c, 0xef, 0x7a, 0xef, + 0x82, 0xf2, 0x7e, 0xf2, 0xab, 0xf5, 0xa7, 0xf5, 0xed, 0xf8, 0xe8, 0xf8, + 0x33, 0xfc, 0x31, 0xfc, 0x7c, 0xff, 0x76, 0xff, 0xac, 0x02, 0xa9, 0x02, + 0xc1, 0x05, 0xbf, 0x05, 0xab, 0x08, 0xa4, 0x08, 0x57, 0x0b, 0x57, 0x0b, + 0xc8, 0x0d, 0xc2, 0x0d, 0xe6, 0x0f, 0xe2, 0x0f, 0xb0, 0x11, 0xac, 0x11, + 0x1b, 0x13, 0x17, 0x13, 0x26, 0x14, 0x23, 0x14, 0xca, 0x14, 0xc6, 0x14, + 0x09, 0x15, 0x06, 0x15, 0xe5, 0x14, 0xe1, 0x14, 0x5f, 0x14, 0x5b, 0x14, + 0x7e, 0x13, 0x79, 0x13, 0x48, 0x12, 0x43, 0x12, 0xc1, 0x10, 0xbf, 0x10, + 0xfa, 0x0e, 0xf5, 0x0e, 0xf8, 0x0c, 0xf2, 0x0c, 0xc5, 0x0a, 0xc2, 0x0a, + 0x74, 0x08, 0x6e, 0x08, 0x06, 0x06, 0x03, 0x06, 0x95, 0x03, 0x90, 0x03, + 0x23, 0x01, 0x1f, 0x01, 0xc4, 0xfe, 0xbf, 0xfe, 0x82, 0xfc, 0x7f, 0xfc, + 0x6a, 0xfa, 0x68, 0xfa, 0x8f, 0xf8, 0x8a, 0xf8, 0xf4, 0xf6, 0xf1, 0xf6, + 0xad, 0xf5, 0xaa, 0xf5, 0xbe, 0xf4, 0xba, 0xf4, 0x2b, 0xf4, 0x28, 0xf4, + 0xff, 0xf3, 0xf9, 0xf3, 0x35, 0xf4, 0x32, 0xf4, 0xd2, 0xf4, 0xcd, 0xf4, + 0xd2, 0xf5, 0xcd, 0xf5, 0x2d, 0xf7, 0x29, 0xf7, 0xe1, 0xf8, 0xdd, 0xf8, + 0xdf, 0xfa, 0xdc, 0xfa, 0x25, 0xfd, 0x21, 0xfd, 0xa6, 0xff, 0xa1, 0xff, + 0x55, 0x02, 0x52, 0x02, 0x28, 0x05, 0x24, 0x05, 0x14, 0x08, 0x10, 0x08, + 0x10, 0x0b, 0x0c, 0x0b, 0x09, 0x0e, 0x06, 0x0e, 0xfa, 0x10, 0xf5, 0x10, + 0xd1, 0x13, 0xce, 0x13, 0x88, 0x16, 0x85, 0x16, 0x10, 0x19, 0x0c, 0x19, + 0x5c, 0x1b, 0x59, 0x1b, 0x66, 0x1d, 0x61, 0x1d, 0x1e, 0x1f, 0x1c, 0x1f, + 0x81, 0x20, 0x7d, 0x20, 0x85, 0x21, 0x82, 0x21, 0x23, 0x22, 0x20, 0x22, + 0x55, 0x22, 0x53, 0x22, 0x23, 0x22, 0x1f, 0x22, 0x83, 0x21, 0x7e, 0x21, + 0x7d, 0x20, 0x7b, 0x20, 0x15, 0x1f, 0x11, 0x1f, 0x4e, 0x1d, 0x4d, 0x1d, + 0x3a, 0x1b, 0x36, 0x1b, 0xd9, 0x18, 0xd6, 0x18, 0x3d, 0x16, 0x3b, 0x16, + 0x71, 0x13, 0x6d, 0x13, 0x80, 0x10, 0x7e, 0x10, 0x7d, 0x0d, 0x78, 0x0d, + 0x6c, 0x0a, 0x6c, 0x0a, 0x69, 0x07, 0x65, 0x07, 0x77, 0x04, 0x75, 0x04, + 0xa9, 0x01, 0xa7, 0x01, 0x0b, 0xff, 0x06, 0xff, 0xa5, 0xfc, 0xa3, 0xfc, + 0x8b, 0xfa, 0x86, 0xfa, 0xbe, 0xf8, 0xba, 0xf8, 0x46, 0xf7, 0x42, 0xf7, + 0x2c, 0xf6, 0x28, 0xf6, 0x73, 0xf5, 0x6f, 0xf5, 0x1e, 0xf5, 0x19, 0xf5, + 0x24, 0xf5, 0x21, 0xf5, 0x8f, 0xf5, 0x8c, 0xf5, 0x50, 0xf6, 0x4d, 0xf6, + 0x69, 0xf7, 0x65, 0xf7, 0xcd, 0xf8, 0xc8, 0xf8, 0x75, 0xfa, 0x75, 0xfa, + 0x5a, 0xfc, 0x56, 0xfc, 0x6e, 0xfe, 0x6b, 0xfe, 0xa9, 0x00, 0xa6, 0x00, + 0x01, 0x03, 0xfe, 0x02, 0x67, 0x05, 0x64, 0x05, 0xd1, 0x07, 0xcf, 0x07, + 0x34, 0x0a, 0x30, 0x0a, 0x7f, 0x0c, 0x7d, 0x0c, 0xa9, 0x0e, 0xa8, 0x0e, + 0xa6, 0x10, 0xa2, 0x10, 0x69, 0x12, 0x66, 0x12, 0xe2, 0x13, 0xde, 0x13, + 0x0d, 0x15, 0x0c, 0x15, 0xe0, 0x15, 0xdc, 0x15, 0x50, 0x16, 0x4f, 0x16, + 0x59, 0x16, 0x57, 0x16, 0xf8, 0x15, 0xf3, 0x15, 0x2f, 0x15, 0x2b, 0x15, + 0xfb, 0x13, 0xf7, 0x13, 0x65, 0x12, 0x63, 0x12, 0x75, 0x10, 0x71, 0x10, + 0x2f, 0x0e, 0x2e, 0x0e, 0xa5, 0x0b, 0xa0, 0x0b, 0xd6, 0x08, 0xd5, 0x08, + 0xdc, 0x05, 0xd8, 0x05, 0xb8, 0x02, 0xb7, 0x02, 0x7e, 0xff, 0x79, 0xff, + 0x38, 0xfc, 0x36, 0xfc, 0xf3, 0xf8, 0xef, 0xf8, 0xb8, 0xf5, 0xb6, 0xf5, + 0x9f, 0xf2, 0x9c, 0xf2, 0xa7, 0xef, 0xa3, 0xef, 0xe3, 0xec, 0xe0, 0xec, + 0x5d, 0xea, 0x5d, 0xea, 0x24, 0xe8, 0x1e, 0xe8, 0x39, 0xe6, 0x39, 0xe6, + 0xab, 0xe4, 0xa5, 0xe4, 0x7b, 0xe3, 0x79, 0xe3, 0xb2, 0xe2, 0xb0, 0xe2, + 0x52, 0xe2, 0x4f, 0xe2, 0x5c, 0xe2, 0x58, 0xe2, 0xcb, 0xe2, 0xc7, 0xe2, + 0x9c, 0xe3, 0x9c, 0xe3, 0xd0, 0xe4, 0xcb, 0xe4, 0x56, 0xe6, 0x55, 0xe6, + 0x2e, 0xe8, 0x29, 0xe8, 0x43, 0xea, 0x40, 0xea, 0x94, 0xec, 0x92, 0xec, + 0x0d, 0xef, 0x0a, 0xef, 0xa5, 0xf1, 0xa6, 0xf1, 0x53, 0xf4, 0x4e, 0xf4, + 0xfd, 0xf6, 0xfb, 0xf6, 0xa0, 0xf9, 0x9e, 0xf9, 0x29, 0xfc, 0x26, 0xfc, + 0x8d, 0xfe, 0x87, 0xfe, 0xb9, 0x00, 0xb9, 0x00, 0xa9, 0x02, 0xa5, 0x02, + 0x50, 0x04, 0x4f, 0x04, 0xa1, 0x05, 0x9f, 0x05, 0xa1, 0x06, 0x9d, 0x06, + 0x3a, 0x07, 0x39, 0x07, 0x78, 0x07, 0x74, 0x07, 0x54, 0x07, 0x52, 0x07, + 0xd2, 0x06, 0xce, 0x06, 0xf2, 0x05, 0xf1, 0x05, 0xbf, 0x04, 0xbd, 0x04, + 0x3a, 0x03, 0x39, 0x03, 0x72, 0x01, 0x70, 0x01, 0x6a, 0xff, 0x68, 0xff, + 0x30, 0xfd, 0x2e, 0xfd, 0xcc, 0xfa, 0xc9, 0xfa, 0x48, 0xf8, 0x48, 0xf8, + 0xb3, 0xf5, 0xaf, 0xf5, 0x15, 0xf3, 0x13, 0xf3, 0x7a, 0xf0, 0x77, 0xf0, + 0xec, 0xed, 0xeb, 0xed, 0x7d, 0xeb, 0x78, 0xeb, 0x2e, 0xe9, 0x2e, 0xe9, + 0x16, 0xe7, 0x11, 0xe7, 0x39, 0xe5, 0x38, 0xe5, 0xa4, 0xe3, 0xa0, 0xe3, + 0x61, 0xe2, 0x60, 0xe2, 0x79, 0xe1, 0x76, 0xe1, 0xef, 0xe0, 0xec, 0xe0, + 0xcc, 0xe0, 0xcb, 0xe0, 0x13, 0xe1, 0x11, 0xe1, 0xc1, 0xe1, 0xbf, 0xe1, + 0xd9, 0xe2, 0xd8, 0xe2, 0x53, 0xe4, 0x52, 0xe4, 0x2e, 0xe6, 0x2b, 0xe6, + 0x5a, 0xe8, 0x58, 0xe8, 0xd5, 0xea, 0xd3, 0xea, 0x8f, 0xed, 0x8d, 0xed, + 0x7e, 0xf0, 0x7b, 0xf0, 0x96, 0xf3, 0x92, 0xf3, 0xc3, 0xf6, 0xc2, 0xf6, + 0x01, 0xfa, 0xff, 0xf9, 0x3b, 0xfd, 0x38, 0xfd, 0x69, 0x00, 0x66, 0x00, + 0x79, 0x03, 0x77, 0x03, 0x5f, 0x06, 0x5d, 0x06, 0x15, 0x09, 0x14, 0x09, + 0x85, 0x0b, 0x81, 0x0b, 0xaf, 0x0d, 0xad, 0x0d, 0x81, 0x0f, 0x80, 0x0f, + 0xfe, 0x10, 0xfa, 0x10, 0x17, 0x12, 0x16, 0x12, 0xcd, 0x12, 0xc9, 0x12, + 0x22, 0x13, 0x23, 0x13, 0x14, 0x13, 0x10, 0x13, 0xa5, 0x12, 0xa4, 0x12, + 0xdb, 0x11, 0xd9, 0x11, 0xbc, 0x10, 0xbb, 0x10, 0x4f, 0x0f, 0x4e, 0x0f, + 0x9e, 0x0d, 0x9c, 0x0d, 0xb4, 0x0b, 0xb1, 0x0b, 0x98, 0x09, 0x96, 0x09, + 0x57, 0x07, 0x55, 0x07, 0xff, 0x04, 0xfc, 0x04, 0x9b, 0x02, 0x98, 0x02, + 0x35, 0x00, 0x35, 0x00, 0xe0, 0xfd, 0xde, 0xfd, 0xa4, 0xfb, 0xa3, 0xfb, + 0x92, 0xf9, 0x8e, 0xf9, 0xaf, 0xf7, 0xad, 0xf7, 0x12, 0xf6, 0x0f, 0xf6, + 0xbd, 0xf4, 0xbc, 0xf4, 0xc0, 0xf3, 0xbd, 0xf3, 0x1f, 0xf3, 0x1e, 0xf3, + 0xdd, 0xf2, 0xdb, 0xf2, 0x03, 0xf3, 0x03, 0xf3, 0x8b, 0xf3, 0x89, 0xf3, + 0x76, 0xf4, 0x77, 0xf4, 0xc0, 0xf5, 0xbd, 0xf5, 0x5f, 0xf7, 0x5f, 0xf7, + 0x50, 0xf9, 0x4e, 0xf9, 0x85, 0xfb, 0x86, 0xfb, 0xfc, 0xfd, 0xf9, 0xfd, + 0x9f, 0x00, 0x9e, 0x00, 0x6d, 0x03, 0x6a, 0x03, 0x56, 0x06, 0x56, 0x06, + 0x4d, 0x09, 0x4b, 0x09, 0x4b, 0x0c, 0x4b, 0x0c, 0x3d, 0x0f, 0x3b, 0x0f, + 0x20, 0x12, 0x20, 0x12, 0xe0, 0x14, 0xdd, 0x14, 0x76, 0x17, 0x76, 0x17, + 0xd7, 0x19, 0xd6, 0x19, 0xf6, 0x1b, 0xf4, 0x1b, 0xc9, 0x1d, 0xc9, 0x1d, + 0x4a, 0x1f, 0x47, 0x1f, 0x6e, 0x20, 0x6e, 0x20, 0x32, 0x21, 0x2f, 0x21, + 0x90, 0x21, 0x91, 0x21, 0x86, 0x21, 0x84, 0x21, 0x15, 0x21, 0x13, 0x21, + 0x3d, 0x20, 0x3c, 0x20, 0x04, 0x1f, 0x02, 0x1f, 0x71, 0x1d, 0x70, 0x1d, + 0x87, 0x1b, 0x87, 0x1b, 0x55, 0x19, 0x54, 0x19, 0xe6, 0x16, 0xe5, 0x16, + 0x3f, 0x14, 0x3f, 0x14, 0x7a, 0x11, 0x79, 0x11, 0x93, 0x0e, 0x92, 0x0e, + 0xa7, 0x0b, 0xa7, 0x0b, 0xbb, 0x08, 0xb8, 0x08, 0xdf, 0x05, 0xdf, 0x05, + 0x23, 0x03, 0x20, 0x03, 0x90, 0x00, 0x8f, 0x00, 0x33, 0xfe, 0x33, 0xfe, + 0x18, 0xfc, 0x16, 0xfc, 0x48, 0xfa, 0x48, 0xfa, 0xcc, 0xf8, 0xcb, 0xf8, + 0xa8, 0xf7, 0xa7, 0xf7, 0xe0, 0xf6, 0xdf, 0xf6, 0x78, 0xf6, 0x77, 0xf6, + 0x70, 0xf6, 0x70, 0xf6, 0xc1, 0xf6, 0xbf, 0xf6, 0x6f, 0xf7, 0x6f, 0xf7, + 0x6f, 0xf8, 0x6c, 0xf8, 0xbc, 0xf9, 0xba, 0xf9, 0x4e, 0xfb, 0x4d, 0xfb, + 0x1d, 0xfd, 0x1a, 0xfd, 0x1c, 0xff, 0x1a, 0xff, 0x44, 0x01, 0x44, 0x01, + 0x8c, 0x03, 0x89, 0x03, 0xe3, 0x05, 0xe3, 0x05, 0x43, 0x08, 0x41, 0x08, + 0x9e, 0x0a, 0x9d, 0x0a, 0xe6, 0x0c, 0xe5, 0x0c, 0x15, 0x0f, 0x15, 0x0f, + 0x16, 0x11, 0x14, 0x11, 0xe4, 0x12, 0xe5, 0x12, 0x74, 0x14, 0x72, 0x14, + 0xb2, 0x15, 0xb2, 0x15, 0xa6, 0x16, 0xa4, 0x16, 0x34, 0x17, 0x35, 0x17, + 0x67, 0x17, 0x65, 0x17, 0x30, 0x17, 0x30, 0x17, 0x91, 0x16, 0x8e, 0x16, + 0x8c, 0x15, 0x8c, 0x15, 0x24, 0x14, 0x20, 0x14, 0x5d, 0x12, 0x5b, 0x12, + 0x42, 0x10, 0x40, 0x10, 0xd8, 0x0d, 0xd7, 0x0d, 0x30, 0x0b, 0x2e, 0x0b, + 0x4f, 0x08, 0x4f, 0x08, 0x47, 0x05, 0x45, 0x05, 0x1e, 0x02, 0x1e, 0x02, + 0xe6, 0xfe, 0xe3, 0xfe, 0xaa, 0xfb, 0xaa, 0xfb, 0x75, 0xf8, 0x73, 0xf8, + 0x58, 0xf5, 0x58, 0xf5, 0x5a, 0xf2, 0x59, 0xf2, 0x8a, 0xef, 0x89, 0xef, + 0xf5, 0xec, 0xf4, 0xec, 0xa0, 0xea, 0xa0, 0xea, 0x9d, 0xe8, 0x9b, 0xe8, + 0xeb, 0xe6, 0xea, 0xe6, 0x99, 0xe5, 0x97, 0xe5, 0xa6, 0xe4, 0xa6, 0xe4, + 0x19, 0xe4, 0x19, 0xe4, 0xf4, 0xe3, 0xf3, 0xe3, 0x34, 0xe4, 0x33, 0xe4, + 0xd8, 0xe4, 0xd8, 0xe4, 0xd5, 0xe5, 0xd5, 0xe5, 0x2c, 0xe7, 0x2d, 0xe7, + 0xd4, 0xe8, 0xd2, 0xe8, 0xbd, 0xea, 0xbe, 0xea, 0xe4, 0xec, 0xe2, 0xec, + 0x37, 0xef, 0x37, 0xef, 0xb1, 0xf1, 0xae, 0xf1, 0x3c, 0xf4, 0x3d, 0xf4, + 0xd2, 0xf6, 0xd0, 0xf6, 0x62, 0xf9, 0x63, 0xf9, 0xe0, 0xfb, 0xdf, 0xfb, + 0x3e, 0xfe, 0x3d, 0xfe, 0x6f, 0x00, 0x6f, 0x00, 0x64, 0x02, 0x63, 0x02, + 0x19, 0x04, 0x17, 0x04, 0x7c, 0x05, 0x7c, 0x05, 0x8c, 0x06, 0x8b, 0x06, + 0x43, 0x07, 0x42, 0x07, 0x97, 0x07, 0x96, 0x07, 0x8e, 0x07, 0x8c, 0x07, + 0x25, 0x07, 0x26, 0x07, 0x61, 0x06, 0x5f, 0x06, 0x46, 0x05, 0x47, 0x05, + 0xd8, 0x03, 0xd8, 0x03, 0x23, 0x02, 0x24, 0x02, 0x2e, 0x00, 0x2c, 0x00, + 0xfd, 0xfd, 0xfe, 0xfd, 0xa3, 0xfb, 0xa2, 0xfb, 0x26, 0xf9, 0x27, 0xf9, + 0x90, 0xf6, 0x90, 0xf6, 0xf0, 0xf3, 0xef, 0xf3, 0x49, 0xf1, 0x4a, 0xf1, + 0xb1, 0xee, 0xaf, 0xee, 0x2b, 0xec, 0x2c, 0xec, 0xc9, 0xe9, 0xca, 0xe9, + 0x93, 0xe7, 0x93, 0xe7, 0x96, 0xe5, 0x97, 0xe5, 0xd9, 0xe3, 0xd8, 0xe3, + 0x6b, 0xe2, 0x6c, 0xe2, 0x52, 0xe1, 0x54, 0xe1, 0x98, 0xe0, 0x96, 0xe0, + 0x3d, 0xe0, 0x3e, 0xe0, 0x4f, 0xe0, 0x4c, 0xe0, 0xc1, 0xe0, 0xc2, 0xe0, + 0x9f, 0xe1, 0x9e, 0xe1, 0xe2, 0xe2, 0xe3, 0xe2, 0x82, 0xe4, 0x83, 0xe4, + 0x80, 0xe6, 0x7f, 0xe6, 0xc8, 0xe8, 0xc8, 0xe8, 0x5a, 0xeb, 0x5a, 0xeb, + 0x25, 0xee, 0x25, 0xee, 0x1c, 0xf1, 0x1c, 0xf1, 0x36, 0xf4, 0x37, 0xf4, + 0x63, 0xf7, 0x61, 0xf7, 0x93, 0xfa, 0x94, 0xfa, 0xbf, 0xfd, 0xbd, 0xfd, + 0xd1, 0x00, 0xd1, 0x00, 0xc2, 0x03, 0xc2, 0x03, 0x89, 0x06, 0x87, 0x06, + 0x0c, 0x09, 0x0d, 0x09, 0x52, 0x0b, 0x50, 0x0b, 0x44, 0x0d, 0x44, 0x0d, + 0xe1, 0x0e, 0xe0, 0x0e, 0x22, 0x10, 0x21, 0x10, 0xff, 0x10, 0x00, 0x11, + 0x7f, 0x11, 0x80, 0x11, 0x97, 0x11, 0x96, 0x11, 0x53, 0x11, 0x55, 0x11, + 0xb2, 0x10, 0xae, 0x10, 0xb5, 0x0f, 0xb8, 0x0f, 0x6f, 0x0e, 0x6d, 0x0e, + 0xd9, 0x0c, 0xd9, 0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x05, 0x09, 0x05, 0x09, + 0xd8, 0x06, 0xd8, 0x06, 0x8e, 0x04, 0x8e, 0x04, 0x2f, 0x02, 0x2b, 0x02, + 0xcc, 0xff, 0xce, 0xff, 0x6f, 0xfd, 0x6e, 0xfd, 0x29, 0xfb, 0x29, 0xfb, + 0x04, 0xf9, 0x03, 0xf9, 0x0b, 0xf7, 0x0c, 0xf7, 0x4f, 0xf5, 0x4f, 0xf5, + 0xd5, 0xf3, 0xd5, 0xf3, 0xb1, 0xf2, 0xb1, 0xf2, 0xe4, 0xf1, 0xe5, 0xf1, + 0x77, 0xf1, 0x76, 0xf1, 0x70, 0xf1, 0x70, 0xf1, 0xca, 0xf1, 0xc9, 0xf1, + 0x8e, 0xf2, 0x8e, 0xf2, 0xaf, 0xf3, 0xb0, 0xf3, 0x30, 0xf5, 0x30, 0xf5, + 0x02, 0xf7, 0x04, 0xf7, 0x28, 0xf9, 0x26, 0xf9, 0x89, 0xfb, 0x8b, 0xfb, + 0x2b, 0xfe, 0x2a, 0xfe, 0xf4, 0x00, 0xf5, 0x00, 0xdf, 0x03, 0xde, 0x03, + 0xe5, 0x06, 0xe5, 0x06, 0xf1, 0x09, 0xf1, 0x09, 0xfd, 0x0c, 0xfd, 0x0c, + 0xfa, 0x0f, 0xfa, 0x0f, 0xde, 0x12, 0xde, 0x12, 0x9e, 0x15, 0x9e, 0x15, + 0x25, 0x18, 0x26, 0x18, 0x79, 0x1a, 0x7a, 0x1a, 0x81, 0x1c, 0x82, 0x1c, + 0x3a, 0x1e, 0x3a, 0x1e, 0x9c, 0x1f, 0x9c, 0x1f, 0x99, 0x20, 0x9a, 0x20, + 0x38, 0x21, 0x39, 0x21, 0x6a, 0x21, 0x69, 0x21, 0x35, 0x21, 0x34, 0x21, + 0x98, 0x20, 0x99, 0x20, 0x94, 0x1f, 0x93, 0x1f, 0x34, 0x1e, 0x36, 0x1e, + 0x7a, 0x1c, 0x79, 0x1c, 0x71, 0x1a, 0x71, 0x1a, 0x22, 0x18, 0x22, 0x18, + 0x9c, 0x15, 0x9a, 0x15, 0xe7, 0x12, 0xe6, 0x12, 0x11, 0x10, 0x12, 0x10, + 0x2e, 0x0d, 0x2c, 0x0d, 0x3e, 0x0a, 0x3e, 0x0a, 0x5f, 0x07, 0x5f, 0x07, + 0x94, 0x04, 0x93, 0x04, 0xf0, 0x01, 0xee, 0x01, 0x7b, 0xff, 0x7c, 0xff, + 0x46, 0xfd, 0x45, 0xfd, 0x58, 0xfb, 0x59, 0xfb, 0xbb, 0xf9, 0xba, 0xf9, + 0x75, 0xf8, 0x74, 0xf8, 0x88, 0xf7, 0x8a, 0xf7, 0x02, 0xf7, 0x00, 0xf7, + 0xd5, 0xf6, 0xd6, 0xf6, 0x0c, 0xf7, 0x0d, 0xf7, 0x9e, 0xf7, 0x9f, 0xf7, + 0x88, 0xf8, 0x8a, 0xf8, 0xc2, 0xf9, 0xc0, 0xf9, 0x46, 0xfb, 0x48, 0xfb, + 0x0d, 0xfd, 0x0d, 0xfd, 0x07, 0xff, 0x0a, 0xff, 0x35, 0x01, 0x32, 0x01, + 0x7d, 0x03, 0x80, 0x03, 0xe4, 0x05, 0xe4, 0x05, 0x53, 0x08, 0x54, 0x08, + 0xc3, 0x0a, 0xc6, 0x0a, 0x2a, 0x0d, 0x2a, 0x0d, 0x76, 0x0f, 0x77, 0x0f, + 0xa1, 0x11, 0xa2, 0x11, 0x9a, 0x13, 0x98, 0x13, 0x56, 0x15, 0x59, 0x15, + 0xcc, 0x16, 0xcc, 0x16, 0xf1, 0x17, 0xf2, 0x17, 0xbb, 0x18, 0xba, 0x18, + 0x25, 0x19, 0x27, 0x19, 0x27, 0x19, 0x26, 0x19, 0xc0, 0x18, 0xc3, 0x18, + 0xf0, 0x17, 0xed, 0x17, 0xb5, 0x16, 0xb7, 0x16, 0x18, 0x15, 0x18, 0x15, + 0x21, 0x13, 0x22, 0x13, 0xd5, 0x10, 0xd4, 0x10, 0x40, 0x0e, 0x42, 0x0e, + 0x6d, 0x0b, 0x6d, 0x0b, 0x6a, 0x08, 0x6b, 0x08, 0x3f, 0x05, 0x41, 0x05, + 0x00, 0x02, 0xfd, 0x01, 0xb2, 0xfe, 0xb6, 0xfe, 0x6a, 0xfb, 0x69, 0xfb, + 0x2d, 0xf8, 0x30, 0xf8, 0x0f, 0xf5, 0x10, 0xf5, 0x1a, 0xf2, 0x19, 0xf2, + 0x57, 0xef, 0x5a, 0xef, 0xd6, 0xec, 0xd5, 0xec, 0xa0, 0xea, 0xa2, 0xea, + 0xba, 0xe8, 0xbb, 0xe8, 0x34, 0xe7, 0x35, 0xe7, 0x0a, 0xe6, 0x0c, 0xe6, + 0x4e, 0xe5, 0x4e, 0xe5, 0xf0, 0xe4, 0xf3, 0xe4, 0x04, 0xe5, 0x05, 0xe5, + 0x78, 0xe5, 0x79, 0xe5, 0x51, 0xe6, 0x51, 0xe6, 0x83, 0xe7, 0x85, 0xe7, + 0x0a, 0xe9, 0x0b, 0xe9, 0xdc, 0xea, 0xdc, 0xea, 0xeb, 0xec, 0xed, 0xec, + 0x33, 0xef, 0x33, 0xef, 0xa1, 0xf1, 0xa2, 0xf1, 0x2d, 0xf4, 0x2c, 0xf4, + 0xc6, 0xf6, 0xc7, 0xf6, 0x60, 0xf9, 0x60, 0xf9, 0xef, 0xfb, 0xef, 0xfb, + 0x63, 0xfe, 0x63, 0xfe, 0xad, 0x00, 0xae, 0x00, 0xc3, 0x02, 0xc4, 0x02, + 0x94, 0x04, 0x95, 0x04, 0x1f, 0x06, 0x1e, 0x06, 0x50, 0x07, 0x52, 0x07, + 0x29, 0x08, 0x28, 0x08, 0x9f, 0x08, 0xa1, 0x08, 0xb4, 0x08, 0xb5, 0x08, + 0x69, 0x08, 0x69, 0x08, 0xb9, 0x07, 0xbc, 0x07, 0xb2, 0x06, 0xb2, 0x06, + 0x50, 0x05, 0x51, 0x05, 0xa2, 0x03, 0xa2, 0x03, 0xab, 0x01, 0xac, 0x01, + 0x78, 0xff, 0x79, 0xff, 0x14, 0xfd, 0x13, 0xfd, 0x87, 0xfa, 0x88, 0xfa, + 0xdc, 0xf7, 0xdb, 0xf7, 0x22, 0xf5, 0x23, 0xf5, 0x5f, 0xf2, 0x5f, 0xf2, + 0xa2, 0xef, 0xa2, 0xef, 0xf8, 0xec, 0xf9, 0xec, 0x67, 0xea, 0x68, 0xea, + 0x05, 0xe8, 0x06, 0xe8, 0xd1, 0xe5, 0xd1, 0xe5, 0xe2, 0xe3, 0xe3, 0xe3, + 0x3b, 0xe2, 0x3b, 0xe2, 0xe9, 0xe0, 0xea, 0xe0, 0xf4, 0xdf, 0xf4, 0xdf, + 0x61, 0xdf, 0x61, 0xdf, 0x35, 0xdf, 0x37, 0xdf, 0x73, 0xdf, 0x73, 0xdf, + 0x1b, 0xe0, 0x1e, 0xe0, 0x33, 0xe1, 0x32, 0xe1, 0xa6, 0xe2, 0xa7, 0xe2, + 0x7c, 0xe4, 0x80, 0xe4, 0xa9, 0xe6, 0xa9, 0xe6, 0x1f, 0xe9, 0x21, 0xe9, + 0xd6, 0xeb, 0xd8, 0xeb, 0xc5, 0xee, 0xc5, 0xee, 0xd6, 0xf1, 0xd9, 0xf1, + 0x07, 0xf5, 0x06, 0xf5, 0x3c, 0xf8, 0x3f, 0xf8, 0x74, 0xfb, 0x75, 0xfb, + 0x9a, 0xfe, 0x9a, 0xfe, 0xa0, 0x01, 0xa2, 0x01, 0x80, 0x04, 0x7f, 0x04, + 0x20, 0x07, 0x22, 0x07, 0x85, 0x09, 0x86, 0x09, 0x96, 0x0b, 0x97, 0x0b, + 0x58, 0x0d, 0x58, 0x0d, 0xba, 0x0e, 0xbc, 0x0e, 0xbb, 0x0f, 0xba, 0x0f, + 0x57, 0x10, 0x5a, 0x10, 0x92, 0x10, 0x91, 0x10, 0x66, 0x10, 0x68, 0x10, + 0xde, 0x0f, 0xdd, 0x0f, 0xf7, 0x0e, 0xf6, 0x0e, 0xbe, 0x0d, 0xc0, 0x0d, + 0x37, 0x0c, 0x36, 0x0c, 0x71, 0x0a, 0x72, 0x0a, 0x70, 0x08, 0x71, 0x08, + 0x45, 0x06, 0x46, 0x06, 0xfa, 0x03, 0xfa, 0x03, 0x94, 0x01, 0x96, 0x01, + 0x29, 0xff, 0x27, 0xff, 0xbe, 0xfc, 0xc0, 0xfc, 0x63, 0xfa, 0x62, 0xfa, + 0x26, 0xf8, 0x27, 0xf8, 0x11, 0xf6, 0x11, 0xf6, 0x31, 0xf4, 0x32, 0xf4, + 0x95, 0xf2, 0x97, 0xf2, 0x43, 0xf1, 0x43, 0xf1, 0x4d, 0xf0, 0x4e, 0xf0, + 0xb4, 0xef, 0xb4, 0xef, 0x80, 0xef, 0x81, 0xef, 0xb6, 0xef, 0xb5, 0xef, + 0x52, 0xf0, 0x51, 0xf0, 0x54, 0xf1, 0x55, 0xf1, 0xb7, 0xf2, 0xb8, 0xf2, + 0x75, 0xf4, 0x76, 0xf4, 0x87, 0xf6, 0x87, 0xf6, 0xe2, 0xf8, 0xe1, 0xf8, + 0x7d, 0xfb, 0x7e, 0xfb, 0x4b, 0xfe, 0x4b, 0xfe, 0x40, 0x01, 0x43, 0x01, + 0x54, 0x04, 0x53, 0x04, 0x75, 0x07, 0x77, 0x07, 0x9e, 0x0a, 0x9e, 0x0a, + 0xbc, 0x0d, 0xbd, 0x0d, 0xc3, 0x10, 0xc4, 0x10, 0xad, 0x13, 0xad, 0x13, + 0x67, 0x16, 0x66, 0x16, 0xec, 0x18, 0xed, 0x18, 0x29, 0x1b, 0x28, 0x1b, + 0x1a, 0x1d, 0x1b, 0x1d, 0xb4, 0x1e, 0xb5, 0x1e, 0xef, 0x1f, 0xee, 0x1f, + 0xc8, 0x20, 0xc9, 0x20, 0x34, 0x21, 0x33, 0x21, 0x3a, 0x21, 0x3a, 0x21, + 0xd2, 0x20, 0xd3, 0x20, 0x05, 0x20, 0x05, 0x20, 0xd2, 0x1e, 0xd3, 0x1e, + 0x43, 0x1d, 0x43, 0x1d, 0x5e, 0x1b, 0x5e, 0x1b, 0x2d, 0x19, 0x2e, 0x19, + 0xbe, 0x16, 0xbd, 0x16, 0x1b, 0x14, 0x1b, 0x14, 0x50, 0x11, 0x51, 0x11, + 0x6c, 0x0e, 0x6e, 0x0e, 0x7f, 0x0b, 0x7f, 0x0b, 0x93, 0x08, 0x95, 0x08, + 0xba, 0x05, 0xb9, 0x05, 0xfe, 0x02, 0x00, 0x03, 0x70, 0x00, 0x70, 0x00, + 0x1e, 0xfe, 0x1f, 0xfe, 0x0c, 0xfc, 0x0d, 0xfc, 0x4e, 0xfa, 0x4c, 0xfa, + 0xde, 0xf8, 0xdf, 0xf8, 0xd1, 0xf7, 0xd0, 0xf7, 0x22, 0xf7, 0x23, 0xf7, + 0xd7, 0xf6, 0xd5, 0xf6, 0xee, 0xf6, 0xee, 0xf6, 0x60, 0xf7, 0x5f, 0xf7, + 0x35, 0xf8, 0x36, 0xf8, 0x59, 0xf9, 0x58, 0xf9, 0xd0, 0xfa, 0xd1, 0xfa, + 0x8b, 0xfc, 0x8b, 0xfc, 0x83, 0xfe, 0x81, 0xfe, 0xae, 0x00, 0xb0, 0x00, + 0x03, 0x03, 0xff, 0x02, 0x73, 0x05, 0x73, 0x05, 0xf4, 0x07, 0xf3, 0x07, + 0x7c, 0x0a, 0x7b, 0x0a, 0x01, 0x0d, 0x00, 0x0d, 0x72, 0x0f, 0x73, 0x0f, + 0xc8, 0x11, 0xc5, 0x11, 0xee, 0x13, 0xee, 0x13, 0xe2, 0x15, 0xdf, 0x15, + 0x91, 0x17, 0x8f, 0x17, 0xf3, 0x18, 0xf1, 0x18, 0xfc, 0x19, 0xf9, 0x19, + 0xa5, 0x1a, 0xa5, 0x1a, 0xeb, 0x1a, 0xe9, 0x1a, 0xc8, 0x1a, 0xc6, 0x1a, + 0x35, 0x1a, 0x35, 0x1a, 0x38, 0x19, 0x34, 0x19, 0xd1, 0x17, 0xd0, 0x17, + 0x07, 0x16, 0x07, 0x16, 0xe1, 0x13, 0xe1, 0x13, 0x6d, 0x11, 0x6d, 0x11, + 0xb0, 0x0e, 0xaf, 0x0e, 0xba, 0x0b, 0xba, 0x0b, 0x95, 0x08, 0x95, 0x08, + 0x51, 0x05, 0x4e, 0x05, 0xfa, 0x01, 0xfb, 0x01, 0x99, 0xfe, 0x99, 0xfe, + 0x47, 0xfb, 0x44, 0xfb, 0x02, 0xf8, 0x04, 0xf8, 0xe5, 0xf4, 0xe3, 0xf4, + 0xf6, 0xf1, 0xf5, 0xf1, 0x3c, 0xef, 0x3d, 0xef, 0xd0, 0xec, 0xd0, 0xec, + 0xaf, 0xea, 0xae, 0xea, 0xeb, 0xe8, 0xea, 0xe8, 0x83, 0xe7, 0x83, 0xe7, + 0x83, 0xe6, 0x83, 0xe6, 0xee, 0xe5, 0xee, 0xe5, 0xc2, 0xe5, 0xc0, 0xe5, + 0xff, 0xe5, 0xff, 0xe5, 0xa1, 0xe6, 0xa0, 0xe6, 0xa6, 0xe7, 0xa3, 0xe7, + 0x00, 0xe9, 0xff, 0xe8, 0xae, 0xea, 0xad, 0xea, 0xa0, 0xec, 0x9f, 0xec, + 0xd1, 0xee, 0xd0, 0xee, 0x30, 0xf1, 0x2f, 0xf1, 0xb5, 0xf3, 0xb5, 0xf3, + 0x50, 0xf6, 0x4f, 0xf6, 0xf5, 0xf8, 0xf2, 0xf8, 0x91, 0xfb, 0x92, 0xfb, + 0x23, 0xfe, 0x20, 0xfe, 0x8b, 0x00, 0x8b, 0x00, 0xcd, 0x02, 0xcc, 0x02, + 0xcf, 0x04, 0xce, 0x04, 0x88, 0x06, 0x89, 0x06, 0xf5, 0x07, 0xf1, 0x07, + 0x00, 0x09, 0x01, 0x09, 0xb2, 0x09, 0xb0, 0x09, 0xfc, 0x09, 0xfb, 0x09, + 0xde, 0x09, 0xde, 0x09, 0x61, 0x09, 0x5e, 0x09, 0x7c, 0x08, 0x7c, 0x08, + 0x40, 0x07, 0x3d, 0x07, 0xa8, 0x05, 0xa8, 0x05, 0xc7, 0x03, 0xc5, 0x03, + 0x9e, 0x01, 0x9e, 0x01, 0x3d, 0xff, 0x3b, 0xff, 0xab, 0xfc, 0xaa, 0xfc, + 0xf4, 0xf9, 0xf4, 0xf9, 0x29, 0xf7, 0x27, 0xf7, 0x48, 0xf4, 0x4b, 0xf4, + 0x6d, 0xf1, 0x6a, 0xf1, 0x95, 0xee, 0x97, 0xee, 0xd8, 0xeb, 0xd7, 0xeb, + 0x3e, 0xe9, 0x3d, 0xe9, 0xcd, 0xe6, 0xcd, 0xe6, 0x9b, 0xe4, 0x9a, 0xe4, + 0xad, 0xe2, 0xab, 0xe2, 0x0d, 0xe1, 0x0d, 0xe1, 0xc8, 0xdf, 0xc7, 0xdf, + 0xe2, 0xde, 0xe2, 0xde, 0x64, 0xde, 0x63, 0xde, 0x50, 0xde, 0x51, 0xde, + 0xad, 0xde, 0xab, 0xde, 0x72, 0xdf, 0x72, 0xdf, 0xa2, 0xe0, 0x9f, 0xe0, + 0x36, 0xe2, 0x37, 0xe2, 0x2b, 0xe4, 0x2a, 0xe4, 0x74, 0xe6, 0x72, 0xe6, + 0x02, 0xe9, 0x03, 0xe9, 0xd5, 0xeb, 0xd3, 0xeb, 0xd4, 0xee, 0xd4, 0xee, + 0xf8, 0xf1, 0xf7, 0xf1, 0x31, 0xf5, 0x30, 0xf5, 0x71, 0xf8, 0x71, 0xf8, + 0xac, 0xfb, 0xaa, 0xfb, 0xd0, 0xfe, 0xcf, 0xfe, 0xd2, 0x01, 0xd1, 0x01, + 0xa4, 0x04, 0xa3, 0x04, 0x36, 0x07, 0x35, 0x07, 0x83, 0x09, 0x83, 0x09, + 0x80, 0x0b, 0x7e, 0x0b, 0x20, 0x0d, 0x20, 0x0d, 0x63, 0x0e, 0x62, 0x0e, + 0x3f, 0x0f, 0x3c, 0x0f, 0xb5, 0x0f, 0xb7, 0x0f, 0xca, 0x0f, 0xc8, 0x0f, + 0x75, 0x0f, 0x74, 0x0f, 0xc6, 0x0e, 0xc5, 0x0e, 0xb8, 0x0d, 0xb8, 0x0d, + 0x5d, 0x0c, 0x5c, 0x0c, 0xb3, 0x0a, 0xb3, 0x0a, 0xcc, 0x08, 0xcd, 0x08, + 0xb0, 0x06, 0xaf, 0x06, 0x66, 0x04, 0x67, 0x04, 0x02, 0x02, 0x00, 0x02, + 0x86, 0xff, 0x89, 0xff, 0x09, 0xfd, 0x06, 0xfd, 0x8c, 0xfa, 0x8f, 0xfa, + 0x2c, 0xf8, 0x29, 0xf8, 0xe6, 0xf5, 0xe7, 0xf5, 0xd3, 0xf3, 0xd2, 0xf3, + 0xf7, 0xf1, 0xf6, 0xf1, 0x64, 0xf0, 0x65, 0xf0, 0x24, 0xef, 0x23, 0xef, + 0x41, 0xee, 0x41, 0xee, 0xc0, 0xed, 0xbe, 0xed, 0xaa, 0xed, 0xaa, 0xed, + 0x00, 0xee, 0xff, 0xed, 0xc0, 0xee, 0xc0, 0xee, 0xe7, 0xef, 0xe8, 0xef, + 0x74, 0xf1, 0x72, 0xf1, 0x5d, 0xf3, 0x5c, 0xf3, 0x96, 0xf5, 0x94, 0xf5, + 0x18, 0xf8, 0x17, 0xf8, 0xdb, 0xfa, 0xdb, 0xfa, 0xcb, 0xfd, 0xcc, 0xfd, + 0xe8, 0x00, 0xe8, 0x00, 0x16, 0x04, 0x15, 0x04, 0x56, 0x07, 0x56, 0x07, + 0x93, 0x0a, 0x93, 0x0a, 0xc6, 0x0d, 0xc5, 0x0d, 0xdf, 0x10, 0xdd, 0x10, + 0xce, 0x13, 0xcf, 0x13, 0x92, 0x16, 0x8f, 0x16, 0x11, 0x19, 0x10, 0x19, + 0x4c, 0x1b, 0x4a, 0x1b, 0x31, 0x1d, 0x31, 0x1d, 0xbc, 0x1e, 0xbb, 0x1e, + 0xe6, 0x1f, 0xe5, 0x1f, 0xa3, 0x20, 0xa3, 0x20, 0xf7, 0x20, 0xf8, 0x20, + 0xe0, 0x20, 0xdf, 0x20, 0x59, 0x20, 0x5a, 0x20, 0x6c, 0x1f, 0x6d, 0x1f, + 0x1a, 0x1e, 0x17, 0x1e, 0x6d, 0x1c, 0x6e, 0x1c, 0x6f, 0x1a, 0x6d, 0x1a, + 0x26, 0x18, 0x25, 0x18, 0xa2, 0x15, 0xa4, 0x15, 0xef, 0x12, 0xec, 0x12, + 0x18, 0x10, 0x1a, 0x10, 0x30, 0x0d, 0x2e, 0x0d, 0x3f, 0x0a, 0x3f, 0x0a, + 0x59, 0x07, 0x57, 0x07, 0x89, 0x04, 0x89, 0x04, 0xdd, 0x01, 0xdd, 0x01, + 0x66, 0xff, 0x65, 0xff, 0x2b, 0xfd, 0x2d, 0xfd, 0x3d, 0xfb, 0x3b, 0xfb, + 0xa1, 0xf9, 0xa1, 0xf9, 0x5d, 0xf8, 0x5d, 0xf8, 0x7e, 0xf7, 0x7c, 0xf7, + 0xfc, 0xf6, 0xfd, 0xf6, 0xe5, 0xf6, 0xe5, 0xf6, 0x2f, 0xf7, 0x2c, 0xf7, + 0xd6, 0xf7, 0xd8, 0xf7, 0xdf, 0xf8, 0xdc, 0xf8, 0x32, 0xfa, 0x33, 0xfa, + 0xda, 0xfb, 0xd9, 0xfb, 0xc0, 0xfd, 0xbf, 0xfd, 0xe3, 0xff, 0xe3, 0xff, + 0x31, 0x02, 0x30, 0x02, 0xa6, 0x04, 0xa6, 0x04, 0x32, 0x07, 0x32, 0x07, + 0xcb, 0x09, 0xc9, 0x09, 0x67, 0x0c, 0x66, 0x0c, 0xf7, 0x0e, 0xf5, 0x0e, + 0x6f, 0x11, 0x6e, 0x11, 0xc5, 0x13, 0xc2, 0x13, 0xe8, 0x15, 0xe8, 0x15, + 0xcf, 0x17, 0xcc, 0x17, 0x6f, 0x19, 0x6e, 0x19, 0xbb, 0x1a, 0xb7, 0x1a, + 0xab, 0x1b, 0xab, 0x1b, 0x3a, 0x1c, 0x37, 0x1c, 0x5b, 0x1c, 0x5b, 0x1c, + 0x15, 0x1c, 0x12, 0x1c, 0x5b, 0x1b, 0x5c, 0x1b, 0x39, 0x1a, 0x37, 0x1a, + 0xab, 0x18, 0xa7, 0x18, 0xbb, 0x16, 0xbb, 0x16, 0x73, 0x14, 0x71, 0x14, + 0xde, 0x11, 0xdd, 0x11, 0x03, 0x0f, 0x03, 0x0f, 0xf3, 0x0b, 0xf2, 0x0b, + 0xba, 0x08, 0xba, 0x08, 0x66, 0x05, 0x65, 0x05, 0x02, 0x02, 0x00, 0x02, + 0x9e, 0xfe, 0x9d, 0xfe, 0x48, 0xfb, 0x49, 0xfb, 0x0e, 0xf8, 0x0a, 0xf8, + 0xf9, 0xf4, 0xfa, 0xf4, 0x1b, 0xf2, 0x17, 0xf2, 0x7b, 0xef, 0x7b, 0xef, + 0x28, 0xed, 0x27, 0xed, 0x29, 0xeb, 0x29, 0xeb, 0x8a, 0xe9, 0x89, 0xe9, + 0x4d, 0xe8, 0x4b, 0xe8, 0x7b, 0xe7, 0x7c, 0xe7, 0x11, 0xe7, 0x0e, 0xe7, + 0x15, 0xe7, 0x14, 0xe7, 0x7e, 0xe7, 0x7d, 0xe7, 0x4e, 0xe8, 0x4b, 0xe8, + 0x7a, 0xe9, 0x78, 0xe9, 0xfb, 0xea, 0xf9, 0xea, 0xcb, 0xec, 0xc9, 0xec, + 0xd8, 0xee, 0xd9, 0xee, 0x24, 0xf1, 0x22, 0xf1, 0x94, 0xf3, 0x92, 0xf3, + 0x25, 0xf6, 0x24, 0xf6, 0xc4, 0xf8, 0xc2, 0xf8, 0x68, 0xfb, 0x66, 0xfb, + 0xff, 0xfd, 0xff, 0xfd, 0x80, 0x00, 0x7f, 0x00, 0xd6, 0x02, 0xd6, 0x02, + 0xfd, 0x04, 0xfb, 0x04, 0xda, 0x06, 0xda, 0x06, 0x70, 0x08, 0x6e, 0x08, + 0xab, 0x09, 0xa9, 0x09, 0x87, 0x0a, 0x86, 0x0a, 0x01, 0x0b, 0xfe, 0x0a, + 0x10, 0x0b, 0x11, 0x0b, 0xbd, 0x0a, 0xba, 0x0a, 0xfe, 0x09, 0x00, 0x0a, + 0xe4, 0x08, 0xe0, 0x08, 0x6a, 0x07, 0x6a, 0x07, 0x9f, 0x05, 0x9c, 0x05, + 0x86, 0x03, 0x85, 0x03, 0x2d, 0x01, 0x2b, 0x01, 0x9e, 0xfe, 0x9f, 0xfe, + 0xe7, 0xfb, 0xe5, 0xfb, 0x0d, 0xf9, 0x0e, 0xf9, 0x21, 0xf6, 0x1f, 0xf6, + 0x2f, 0xf3, 0x2e, 0xf3, 0x3d, 0xf0, 0x3d, 0xf0, 0x61, 0xed, 0x5f, 0xed, + 0x9d, 0xea, 0x9c, 0xea, 0x04, 0xe8, 0x05, 0xe8, 0xa2, 0xe5, 0x9f, 0xe5, + 0x7a, 0xe3, 0x7c, 0xe3, 0xa6, 0xe1, 0xa3, 0xe1, 0x1f, 0xe0, 0x20, 0xe0, + 0xff, 0xde, 0xfe, 0xde, 0x3d, 0xde, 0x3c, 0xde, 0xeb, 0xdd, 0xe9, 0xdd, + 0x02, 0xde, 0x02, 0xde, 0x8a, 0xde, 0x88, 0xde, 0x7d, 0xdf, 0x7e, 0xdf, + 0xd8, 0xe0, 0xd8, 0xe0, 0x97, 0xe2, 0x97, 0xe2, 0xb1, 0xe4, 0xb0, 0xe4, + 0x1a, 0xe7, 0x1a, 0xe7, 0xc9, 0xe9, 0xc8, 0xe9, 0xad, 0xec, 0xac, 0xec, + 0xc0, 0xef, 0xbd, 0xef, 0xec, 0xf2, 0xec, 0xf2, 0x27, 0xf6, 0x25, 0xf6, + 0x62, 0xf9, 0x63, 0xf9, 0x8e, 0xfc, 0x8c, 0xfc, 0x9e, 0xff, 0x9f, 0xff, + 0x83, 0x02, 0x81, 0x02, 0x2e, 0x05, 0x30, 0x05, 0x9c, 0x07, 0x98, 0x07, + 0xb3, 0x09, 0xb4, 0x09, 0x7a, 0x0b, 0x7a, 0x0b, 0xe1, 0x0c, 0xdf, 0x0c, + 0xe0, 0x0d, 0xe1, 0x0d, 0x80, 0x0e, 0x7f, 0x0e, 0xb4, 0x0e, 0xb4, 0x0e, + 0x85, 0x0e, 0x85, 0x0e, 0xf4, 0x0d, 0xf4, 0x0d, 0x05, 0x0d, 0x05, 0x0d, + 0xc0, 0x0b, 0xc1, 0x0b, 0x2f, 0x0a, 0x30, 0x0a, 0x5a, 0x08, 0x5a, 0x08, + 0x48, 0x06, 0x4a, 0x06, 0x0b, 0x04, 0x09, 0x04, 0xa4, 0x01, 0xa6, 0x01, + 0x2d, 0xff, 0x2c, 0xff, 0xa5, 0xfc, 0xa4, 0xfc, 0x1f, 0xfa, 0x1d, 0xfa, + 0xac, 0xf7, 0xaa, 0xf7, 0x4e, 0xf5, 0x4e, 0xf5, 0x20, 0xf3, 0x1e, 0xf3, + 0x23, 0xf1, 0x23, 0xf1, 0x6d, 0xef, 0x6a, 0xef, 0x00, 0xee, 0x03, 0xee, + 0xf1, 0xec, 0xef, 0xec, 0x41, 0xec, 0x41, 0xec, 0xfd, 0xeb, 0xfd, 0xeb, + 0x21, 0xec, 0x20, 0xec, 0xb8, 0xec, 0xb9, 0xec, 0xb6, 0xed, 0xb4, 0xed, + 0x1e, 0xef, 0x1e, 0xef, 0xe6, 0xf0, 0xe6, 0xf0, 0x08, 0xf3, 0x07, 0xf3, + 0x79, 0xf5, 0x79, 0xf5, 0x2d, 0xf8, 0x2d, 0xf8, 0x1d, 0xfb, 0x1c, 0xfb, + 0x31, 0xfe, 0x31, 0xfe, 0x6e, 0x01, 0x6c, 0x01, 0xb5, 0x04, 0xb4, 0x04, + 0x06, 0x08, 0x05, 0x08, 0x4d, 0x0b, 0x4e, 0x0b, 0x7f, 0x0e, 0x7d, 0x0e, + 0x95, 0x11, 0x95, 0x11, 0x74, 0x14, 0x72, 0x14, 0x21, 0x17, 0x21, 0x17, + 0x83, 0x19, 0x83, 0x19, 0x96, 0x1b, 0x96, 0x1b, 0x55, 0x1d, 0x54, 0x1d, + 0xaa, 0x1e, 0xaa, 0x1e, 0x9f, 0x1f, 0xa0, 0x1f, 0x24, 0x20, 0x23, 0x20, + 0x3d, 0x20, 0x3e, 0x20, 0xea, 0x1f, 0xe8, 0x1f, 0x26, 0x1f, 0x27, 0x1f, + 0x04, 0x1e, 0x02, 0x1e, 0x7a, 0x1c, 0x79, 0x1c, 0x9e, 0x1a, 0xa0, 0x1a, + 0x76, 0x18, 0x75, 0x18, 0x0c, 0x16, 0x0c, 0x16, 0x6f, 0x13, 0x6f, 0x13, + 0xa9, 0x10, 0xa6, 0x10, 0xcb, 0x0d, 0xcb, 0x0d, 0xe0, 0x0a, 0xe0, 0x0a, + 0xfa, 0x07, 0xfa, 0x07, 0x27, 0x05, 0x28, 0x05, 0x72, 0x02, 0x70, 0x02, + 0xed, 0xff, 0xee, 0xff, 0xa4, 0xfd, 0xa3, 0xfd, 0xa1, 0xfb, 0x9e, 0xfb, + 0xf1, 0xf9, 0xf1, 0xf9, 0x98, 0xf8, 0x97, 0xf8, 0xa2, 0xf7, 0xa3, 0xf7, + 0x0d, 0xf7, 0x0b, 0xf7, 0xdd, 0xf6, 0xde, 0xf6, 0x15, 0xf7, 0x14, 0xf7, + 0xab, 0xf7, 0xaa, 0xf7, 0xa4, 0xf8, 0xa3, 0xf8, 0xee, 0xf9, 0xed, 0xf9, + 0x8e, 0xfb, 0x8e, 0xfb, 0x70, 0xfd, 0x6e, 0xfd, 0x8f, 0xff, 0x8f, 0xff, + 0xe3, 0x01, 0xe1, 0x01, 0x5a, 0x04, 0x5a, 0x04, 0xf3, 0x06, 0xf1, 0x06, + 0x97, 0x09, 0x97, 0x09, 0x43, 0x0c, 0x41, 0x0c, 0xe6, 0x0e, 0xe6, 0x0e, + 0x76, 0x11, 0x74, 0x11, 0xe7, 0x13, 0xe6, 0x13, 0x29, 0x16, 0x2a, 0x16, + 0x34, 0x18, 0x32, 0x18, 0xf8, 0x19, 0xf9, 0x19, 0x6e, 0x1b, 0x6a, 0x1b, + 0x8b, 0x1c, 0x8a, 0x1c, 0x43, 0x1d, 0x41, 0x1d, 0x94, 0x1d, 0x93, 0x1d, + 0x78, 0x1d, 0x78, 0x1d, 0xef, 0x1c, 0xee, 0x1c, 0xf7, 0x1b, 0xf6, 0x1b, + 0x8f, 0x1a, 0x8e, 0x1a, 0xc9, 0x18, 0xc7, 0x18, 0x9e, 0x16, 0x9e, 0x16, + 0x26, 0x14, 0x23, 0x14, 0x62, 0x11, 0x62, 0x11, 0x62, 0x0e, 0x61, 0x0e, + 0x35, 0x0b, 0x33, 0x0b, 0xe5, 0x07, 0xe5, 0x07, 0x82, 0x04, 0x82, 0x04, + 0x1d, 0x01, 0x1a, 0x01, 0xba, 0xfd, 0xbc, 0xfd, 0x77, 0xfa, 0x74, 0xfa, + 0x50, 0xf7, 0x50, 0xf7, 0x5c, 0xf4, 0x5d, 0xf4, 0xa6, 0xf1, 0xa3, 0xf1, + 0x39, 0xef, 0x3b, 0xef, 0x1d, 0xed, 0x1d, 0xed, 0x61, 0xeb, 0x5f, 0xeb, + 0x06, 0xea, 0x07, 0xea, 0x11, 0xe9, 0x10, 0xe9, 0x8b, 0xe8, 0x8a, 0xe8, + 0x69, 0xe8, 0x6a, 0xe8, 0xb9, 0xe8, 0xb8, 0xe8, 0x67, 0xe9, 0x66, 0xe9, + 0x77, 0xea, 0x76, 0xea, 0xdf, 0xeb, 0xdf, 0xeb, 0x97, 0xed, 0x93, 0xed, + 0x8f, 0xef, 0x90, 0xef, 0xc7, 0xf1, 0xc3, 0xf1, 0x29, 0xf4, 0x2a, 0xf4, + 0xae, 0xf6, 0xac, 0xf6, 0x49, 0xf9, 0x48, 0xf9, 0xe7, 0xfb, 0xe7, 0xfb, + 0x84, 0xfe, 0x80, 0xfe, 0x05, 0x01, 0x06, 0x01, 0x68, 0x03, 0x66, 0x03, + 0x9c, 0x05, 0x9c, 0x05, 0x8e, 0x07, 0x8a, 0x07, 0x38, 0x09, 0x38, 0x09, + 0x8b, 0x0a, 0x8a, 0x0a, 0x81, 0x0b, 0x7f, 0x0b, 0x12, 0x0c, 0x12, 0x0c, + 0x3c, 0x0c, 0x3a, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x57, 0x0b, 0x57, 0x0b, + 0x4e, 0x0a, 0x4c, 0x0a, 0xe2, 0x08, 0xe1, 0x08, 0x20, 0x07, 0x1f, 0x07, + 0x11, 0x05, 0x10, 0x05, 0xb8, 0x02, 0xb9, 0x02, 0x2c, 0x00, 0x2b, 0x00, + 0x6c, 0xfd, 0x6b, 0xfd, 0x89, 0xfa, 0x8b, 0xfa, 0x95, 0xf7, 0x91, 0xf7, + 0x8a, 0xf4, 0x8c, 0xf4, 0x8d, 0xf1, 0x8a, 0xf1, 0x92, 0xee, 0x92, 0xee, + 0xb8, 0xeb, 0xb8, 0xeb, 0x00, 0xe9, 0x00, 0xe9, 0x7b, 0xe6, 0x7b, 0xe6, + 0x34, 0xe4, 0x34, 0xe4, 0x35, 0xe2, 0x35, 0xe2, 0x8c, 0xe0, 0x8a, 0xe0, + 0x3c, 0xdf, 0x3d, 0xdf, 0x50, 0xde, 0x50, 0xde, 0xcf, 0xdd, 0xcf, 0xdd, + 0xbb, 0xdd, 0xba, 0xdd, 0x14, 0xde, 0x13, 0xde, 0xdc, 0xde, 0xdc, 0xde, + 0x0c, 0xe0, 0x0c, 0xe0, 0xa5, 0xe1, 0xa4, 0xe1, 0x97, 0xe3, 0x98, 0xe3, + 0xdd, 0xe5, 0xdd, 0xe5, 0x6d, 0xe8, 0x6d, 0xe8, 0x38, 0xeb, 0x37, 0xeb, + 0x32, 0xee, 0x31, 0xee, 0x4e, 0xf1, 0x4d, 0xf1, 0x7a, 0xf4, 0x7c, 0xf4, + 0xaf, 0xf7, 0xac, 0xf7, 0xd4, 0xfa, 0xd6, 0xfa, 0xe6, 0xfd, 0xe3, 0xfd, + 0xd0, 0x00, 0xd1, 0x00, 0x84, 0x03, 0x82, 0x03, 0xf9, 0x05, 0xf8, 0x05, + 0x23, 0x08, 0x24, 0x08, 0xf6, 0x09, 0xf5, 0x09, 0x73, 0x0b, 0x72, 0x0b, + 0x88, 0x0c, 0x88, 0x0c, 0x3c, 0x0d, 0x3a, 0x0d, 0x86, 0x0d, 0x87, 0x0d, + 0x6a, 0x0d, 0x68, 0x0d, 0xf2, 0x0c, 0xf2, 0x0c, 0x14, 0x0c, 0x13, 0x0c, + 0xe4, 0x0a, 0xe3, 0x0a, 0x63, 0x09, 0x63, 0x09, 0x9a, 0x07, 0x99, 0x07, + 0x98, 0x05, 0x98, 0x05, 0x61, 0x03, 0x5f, 0x03, 0x06, 0x01, 0x06, 0x01, + 0x8f, 0xfe, 0x8f, 0xfe, 0x08, 0xfc, 0x06, 0xfc, 0x80, 0xf9, 0x7f, 0xf9, + 0x02, 0xf7, 0x02, 0xf7, 0x9c, 0xf4, 0x9a, 0xf4, 0x5c, 0xf2, 0x5c, 0xf2, + 0x4d, 0xf0, 0x4b, 0xf0, 0x7d, 0xee, 0x7d, 0xee, 0xf8, 0xec, 0xf8, 0xec, + 0xc8, 0xeb, 0xc6, 0xeb, 0xfa, 0xea, 0xfa, 0xea, 0x8a, 0xea, 0x8b, 0xea, + 0x8f, 0xea, 0x8d, 0xea, 0xfc, 0xea, 0xfd, 0xea, 0xda, 0xeb, 0xd9, 0xeb, + 0x21, 0xed, 0x1f, 0xed, 0xc9, 0xee, 0xc9, 0xee, 0xd5, 0xf0, 0xd2, 0xf0, + 0x2b, 0xf3, 0x2b, 0xf3, 0xd1, 0xf5, 0xd0, 0xf5, 0xb0, 0xf8, 0xaf, 0xf8, + 0xc3, 0xfb, 0xc0, 0xfb, 0xf8, 0xfe, 0xf8, 0xfe, 0x44, 0x02, 0x42, 0x02, + 0x99, 0x05, 0x98, 0x05, 0xed, 0x08, 0xec, 0x08, 0x2c, 0x0c, 0x2c, 0x0c, + 0x55, 0x0f, 0x53, 0x0f, 0x4e, 0x12, 0x4c, 0x12, 0x13, 0x15, 0x13, 0x15, + 0x97, 0x17, 0x97, 0x17, 0xcb, 0x19, 0xcb, 0x19, 0xae, 0x1b, 0xaa, 0x1b, + 0x29, 0x1d, 0x2b, 0x1d, 0x47, 0x1e, 0x47, 0x1e, 0xf8, 0x1e, 0xf6, 0x1e, + 0x3a, 0x1f, 0x39, 0x1f, 0x11, 0x1f, 0x10, 0x1f, 0x7b, 0x1e, 0x7b, 0x1e, + 0x7e, 0x1d, 0x7d, 0x1d, 0x20, 0x1c, 0x1f, 0x1c, 0x66, 0x1a, 0x67, 0x1a, + 0x63, 0x18, 0x62, 0x18, 0x17, 0x16, 0x17, 0x16, 0x97, 0x13, 0x95, 0x13, + 0xea, 0x10, 0xe9, 0x10, 0x1d, 0x0e, 0x1e, 0x0e, 0x45, 0x0b, 0x45, 0x0b, + 0x69, 0x08, 0x69, 0x08, 0x9a, 0x05, 0x9b, 0x05, 0xea, 0x02, 0xe8, 0x02, + 0x60, 0x00, 0x60, 0x00, 0x12, 0xfe, 0x10, 0xfe, 0x03, 0xfc, 0x01, 0xfc, + 0x44, 0xfa, 0x43, 0xfa, 0xdd, 0xf8, 0xdc, 0xf8, 0xd3, 0xf7, 0xd2, 0xf7, + 0x2e, 0xf7, 0x2e, 0xf7, 0xe9, 0xf6, 0xe7, 0xf6, 0x10, 0xf7, 0x10, 0xf7, + 0x95, 0xf7, 0x94, 0xf7, 0x7c, 0xf8, 0x7c, 0xf8, 0xbc, 0xf9, 0xbd, 0xf9, + 0x4d, 0xfb, 0x4c, 0xfb, 0x2c, 0xfd, 0x2a, 0xfd, 0x43, 0xff, 0x43, 0xff, + 0x95, 0x01, 0x94, 0x01, 0x0d, 0x04, 0x10, 0x04, 0xaa, 0x06, 0xa9, 0x06, + 0x58, 0x09, 0x57, 0x09, 0x0d, 0x0c, 0x0e, 0x0c, 0xc0, 0x0e, 0xbe, 0x0e, + 0x61, 0x11, 0x62, 0x11, 0xea, 0x13, 0xe7, 0x13, 0x43, 0x16, 0x43, 0x16, + 0x6a, 0x18, 0x6a, 0x18, 0x53, 0x1a, 0x51, 0x1a, 0xe8, 0x1b, 0xe7, 0x1b, + 0x2e, 0x1d, 0x2c, 0x1d, 0x0d, 0x1e, 0x0d, 0x1e, 0x8b, 0x1e, 0x89, 0x1e, + 0x9b, 0x1e, 0x99, 0x1e, 0x3a, 0x1e, 0x3c, 0x1e, 0x73, 0x1d, 0x6f, 0x1d, + 0x34, 0x1c, 0x37, 0x1c, 0x97, 0x1a, 0x95, 0x1a, 0x91, 0x18, 0x92, 0x18, + 0x3b, 0x16, 0x39, 0x16, 0x93, 0x13, 0x94, 0x13, 0xae, 0x10, 0xac, 0x10, + 0x94, 0x0d, 0x95, 0x0d, 0x53, 0x0a, 0x50, 0x0a, 0xfc, 0x06, 0xfc, 0x06, + 0x97, 0x03, 0x94, 0x03, 0x39, 0x00, 0x38, 0x00, 0xea, 0xfc, 0xed, 0xfc, + 0xc0, 0xf9, 0xbd, 0xf9, 0xbf, 0xf6, 0xbf, 0xf6, 0xf5, 0xf3, 0xf4, 0xf3, + 0x76, 0xf1, 0x74, 0xf1, 0x41, 0xef, 0x40, 0xef, 0x6d, 0xed, 0x6b, 0xed, + 0xf3, 0xeb, 0xf4, 0xeb, 0xe1, 0xea, 0xe0, 0xea, 0x3a, 0xea, 0x3b, 0xea, + 0xff, 0xe9, 0xfc, 0xe9, 0x2c, 0xea, 0x2b, 0xea, 0xbd, 0xea, 0xbc, 0xea, + 0xb0, 0xeb, 0xb0, 0xeb, 0xfe, 0xec, 0xfc, 0xec, 0x98, 0xee, 0x9b, 0xee, + 0x81, 0xf0, 0x7e, 0xf0, 0xa2, 0xf2, 0xa3, 0xf2, 0xf4, 0xf4, 0xf5, 0xf4, + 0x6d, 0xf7, 0x6d, 0xf7, 0xfe, 0xf9, 0xfd, 0xf9, 0x9a, 0xfc, 0x9b, 0xfc, + 0x31, 0xff, 0x30, 0xff, 0xbb, 0x01, 0xba, 0x01, 0x23, 0x04, 0x23, 0x04, + 0x62, 0x06, 0x61, 0x06, 0x62, 0x08, 0x64, 0x08, 0x1f, 0x0a, 0x1e, 0x0a, + 0x8a, 0x0b, 0x89, 0x0b, 0x97, 0x0c, 0x97, 0x0c, 0x43, 0x0d, 0x41, 0x0d, + 0x83, 0x0d, 0x85, 0x0d, 0x5e, 0x0d, 0x5c, 0x0d, 0xcb, 0x0c, 0xcb, 0x0c, + 0xd4, 0x0b, 0xd3, 0x0b, 0x78, 0x0a, 0x78, 0x0a, 0xc3, 0x08, 0xc2, 0x08, + 0xb9, 0x06, 0xb9, 0x06, 0x68, 0x04, 0x68, 0x04, 0xd8, 0x01, 0xd7, 0x01, + 0x17, 0xff, 0x16, 0xff, 0x2c, 0xfc, 0x2e, 0xfc, 0x29, 0xf9, 0x27, 0xf9, + 0x14, 0xf6, 0x14, 0xf6, 0x00, 0xf3, 0xfe, 0xf2, 0xf5, 0xef, 0xf3, 0xef, + 0xfc, 0xec, 0xfb, 0xec, 0x2c, 0xea, 0x2a, 0xea, 0x86, 0xe7, 0x86, 0xe7, + 0x1d, 0xe5, 0x1b, 0xe5, 0xfc, 0xe2, 0xfc, 0xe2, 0x29, 0xe1, 0x26, 0xe1, + 0xb2, 0xdf, 0xb2, 0xdf, 0x9b, 0xde, 0x9c, 0xde, 0xf2, 0xdd, 0xf2, 0xdd, + 0xb0, 0xdd, 0xb0, 0xdd, 0xe1, 0xdd, 0xdf, 0xdd, 0x80, 0xde, 0x80, 0xde, + 0x8c, 0xdf, 0x8c, 0xdf, 0xfd, 0xe0, 0xfd, 0xe0, 0xce, 0xe2, 0xcd, 0xe2, + 0xf6, 0xe4, 0xf6, 0xe4, 0x6b, 0xe7, 0x6c, 0xe7, 0x1e, 0xea, 0x1c, 0xea, + 0x06, 0xed, 0x06, 0xed, 0x13, 0xf0, 0x12, 0xf0, 0x35, 0xf3, 0x35, 0xf3, + 0x61, 0xf6, 0x61, 0xf6, 0x87, 0xf9, 0x86, 0xf9, 0x97, 0xfc, 0x96, 0xfc, + 0x85, 0xff, 0x84, 0xff, 0x3e, 0x02, 0x3d, 0x02, 0xbe, 0x04, 0xbf, 0x04, + 0xf4, 0x06, 0xf3, 0x06, 0xd8, 0x08, 0xd7, 0x08, 0x5d, 0x0a, 0x5c, 0x0a, + 0x83, 0x0b, 0x82, 0x0b, 0x44, 0x0c, 0x43, 0x0c, 0x9b, 0x0c, 0x99, 0x0c, + 0x91, 0x0c, 0x91, 0x0c, 0x1d, 0x0c, 0x1c, 0x0c, 0x50, 0x0b, 0x4f, 0x0b, + 0x24, 0x0a, 0x25, 0x0a, 0xa9, 0x08, 0xa8, 0x08, 0xe6, 0x06, 0xe6, 0x06, + 0xe2, 0x04, 0xe2, 0x04, 0xad, 0x02, 0xac, 0x02, 0x4e, 0x00, 0x4c, 0x00, + 0xd0, 0xfd, 0xd0, 0xfd, 0x43, 0xfb, 0x40, 0xfb, 0xae, 0xf8, 0xae, 0xf8, + 0x24, 0xf6, 0x23, 0xf6, 0xab, 0xf3, 0xac, 0xf3, 0x59, 0xf1, 0x58, 0xf1, + 0x34, 0xef, 0x33, 0xef, 0x4b, 0xed, 0x4b, 0xed, 0xac, 0xeb, 0xab, 0xeb, + 0x5d, 0xea, 0x5f, 0xea, 0x72, 0xe9, 0x70, 0xe9, 0xe5, 0xe8, 0xe6, 0xe8, + 0xc7, 0xe8, 0xc6, 0xe8, 0x1a, 0xe9, 0x1a, 0xe9, 0xdb, 0xe9, 0xda, 0xe9, + 0x0b, 0xeb, 0x0a, 0xeb, 0xa1, 0xec, 0xa1, 0xec, 0x97, 0xee, 0x98, 0xee, + 0xe8, 0xf0, 0xe6, 0xf0, 0x81, 0xf3, 0x82, 0xf3, 0x63, 0xf6, 0x61, 0xf6, + 0x72, 0xf9, 0x73, 0xf9, 0xb0, 0xfc, 0xaf, 0xfc, 0x06, 0x00, 0x05, 0x00, + 0x67, 0x03, 0x66, 0x03, 0xca, 0x06, 0xcc, 0x06, 0x21, 0x0a, 0x1e, 0x0a, + 0x5c, 0x0d, 0x5d, 0x0d, 0x71, 0x10, 0x6d, 0x10, 0x4d, 0x13, 0x4d, 0x13, + 0xed, 0x15, 0xec, 0x15, 0x3f, 0x18, 0x3f, 0x18, 0x3d, 0x1a, 0x3d, 0x1a, + 0xdd, 0x1b, 0xdd, 0x1b, 0x15, 0x1d, 0x14, 0x1d, 0xe4, 0x1d, 0xe4, 0x1d, + 0x44, 0x1e, 0x44, 0x1e, 0x36, 0x1e, 0x34, 0x1e, 0xbb, 0x1d, 0xbc, 0x1d, + 0xd4, 0x1c, 0xd3, 0x1c, 0x8d, 0x1b, 0x8d, 0x1b, 0xea, 0x19, 0xea, 0x19, + 0xf6, 0x17, 0xf4, 0x17, 0xba, 0x15, 0xbb, 0x15, 0x45, 0x13, 0x44, 0x13, + 0xa1, 0x10, 0xa2, 0x10, 0xdc, 0x0d, 0xdc, 0x0d, 0x08, 0x0b, 0x07, 0x0b, + 0x2d, 0x08, 0x2c, 0x08, 0x5c, 0x05, 0x5d, 0x05, 0xa7, 0x02, 0xa5, 0x02, + 0x16, 0x00, 0x19, 0x00, 0xbe, 0xfd, 0xbb, 0xfd, 0xa7, 0xfb, 0xa9, 0xfb, + 0xe0, 0xf9, 0xdf, 0xf9, 0x6f, 0xf8, 0x6f, 0xf8, 0x5c, 0xf7, 0x5c, 0xf7, + 0xad, 0xf6, 0xad, 0xf6, 0x65, 0xf6, 0x66, 0xf6, 0x88, 0xf6, 0x86, 0xf6, + 0x0c, 0xf7, 0x0c, 0xf7, 0xf4, 0xf7, 0xf2, 0xf7, 0x39, 0xf9, 0x39, 0xf9, + 0xcf, 0xfa, 0xcf, 0xfa, 0xb5, 0xfc, 0xb3, 0xfc, 0xd9, 0xfe, 0xdc, 0xfe, + 0x3b, 0x01, 0x38, 0x01, 0xc2, 0x03, 0xc2, 0x03, 0x6e, 0x06, 0x6e, 0x06, + 0x31, 0x09, 0x30, 0x09, 0xfb, 0x0b, 0xfc, 0x0b, 0xc6, 0x0e, 0xc4, 0x0e, + 0x7f, 0x11, 0x81, 0x11, 0x22, 0x14, 0x1f, 0x14, 0x99, 0x16, 0x9a, 0x16, + 0xdd, 0x18, 0xdd, 0x18, 0xe1, 0x1a, 0xe0, 0x1a, 0x9b, 0x1c, 0x9c, 0x1c, + 0xfd, 0x1d, 0xfc, 0x1d, 0x02, 0x1f, 0x01, 0x1f, 0x9c, 0x1f, 0x9b, 0x1f, + 0xcc, 0x1f, 0xcc, 0x1f, 0x8c, 0x1f, 0x8b, 0x1f, 0xdb, 0x1e, 0xdd, 0x1e, + 0xbe, 0x1d, 0xbc, 0x1d, 0x33, 0x1c, 0x32, 0x1c, 0x46, 0x1a, 0x47, 0x1a, + 0xfe, 0x17, 0xfc, 0x17, 0x64, 0x15, 0x66, 0x15, 0x89, 0x12, 0x87, 0x12, + 0x75, 0x0f, 0x75, 0x0f, 0x35, 0x0c, 0x36, 0x0c, 0xdd, 0x08, 0xda, 0x08, + 0x75, 0x05, 0x77, 0x05, 0x0e, 0x02, 0x0b, 0x02, 0xba, 0xfe, 0xbb, 0xfe, + 0x81, 0xfb, 0x7e, 0xfb, 0x73, 0xf8, 0x73, 0xf8, 0x9f, 0xf5, 0x9c, 0xf5, + 0x0a, 0xf3, 0x0c, 0xf3, 0xcd, 0xf0, 0xca, 0xf0, 0xe4, 0xee, 0xe5, 0xee, + 0x5e, 0xed, 0x5d, 0xed, 0x40, 0xec, 0x3e, 0xec, 0x89, 0xeb, 0x8a, 0xeb, + 0x40, 0xeb, 0x3e, 0xeb, 0x61, 0xeb, 0x61, 0xeb, 0xe7, 0xeb, 0xe7, 0xeb, + 0xd3, 0xec, 0xd3, 0xec, 0x14, 0xee, 0x14, 0xee, 0xae, 0xef, 0xaf, 0xef, + 0x8f, 0xf1, 0x8c, 0xf1, 0xab, 0xf3, 0xae, 0xf3, 0x01, 0xf6, 0x00, 0xf6, + 0x77, 0xf8, 0x77, 0xf8, 0x0b, 0xfb, 0x0e, 0xfb, 0xad, 0xfd, 0xaa, 0xfd, + 0x49, 0x00, 0x4b, 0x00, 0xde, 0x02, 0xdb, 0x02, 0x4f, 0x05, 0x4e, 0x05, + 0x9c, 0x07, 0x9b, 0x07, 0xac, 0x09, 0xad, 0x09, 0x79, 0x0b, 0x79, 0x0b, + 0xf6, 0x0c, 0xf4, 0x0c, 0x13, 0x0e, 0x13, 0x0e, 0xd1, 0x0e, 0xcf, 0x0e, + 0x1c, 0x0f, 0x1e, 0x0f, 0x06, 0x0f, 0x04, 0x0f, 0x7d, 0x0e, 0x7c, 0x0e, + 0x8b, 0x0d, 0x8a, 0x0d, 0x33, 0x0c, 0x32, 0x0c, 0x7c, 0x0a, 0x7c, 0x0a, + 0x6f, 0x08, 0x6e, 0x08, 0x15, 0x06, 0x15, 0x06, 0x79, 0x03, 0x78, 0x03, + 0xa9, 0x00, 0xa7, 0x00, 0xac, 0xfd, 0xac, 0xfd, 0x95, 0xfa, 0x92, 0xfa, + 0x6b, 0xf7, 0x6b, 0xf7, 0x38, 0xf4, 0x39, 0xf4, 0x18, 0xf1, 0x16, 0xf1, + 0x01, 0xee, 0x01, 0xee, 0x14, 0xeb, 0x13, 0xeb, 0x4f, 0xe8, 0x4f, 0xe8, + 0xc8, 0xe5, 0xc7, 0xe5, 0x86, 0xe3, 0x85, 0xe3, 0x91, 0xe1, 0x91, 0xe1, + 0xfe, 0xdf, 0xfb, 0xdf, 0xc8, 0xde, 0xc7, 0xde, 0xfc, 0xdd, 0xfa, 0xdd, + 0x9f, 0xdd, 0x9f, 0xdd, 0xb1, 0xdd, 0xb0, 0xdd, 0x36, 0xde, 0x35, 0xde, + 0x27, 0xdf, 0x26, 0xdf, 0x83, 0xe0, 0x82, 0xe0, 0x40, 0xe2, 0x3e, 0xe2, + 0x54, 0xe4, 0x54, 0xe4, 0xbc, 0xe6, 0xba, 0xe6, 0x61, 0xe9, 0x63, 0xe9, + 0x3f, 0xec, 0x3d, 0xec, 0x44, 0xef, 0x43, 0xef, 0x60, 0xf2, 0x60, 0xf2, + 0x8c, 0xf5, 0x89, 0xf5, 0xaf, 0xf8, 0xaf, 0xf8, 0xc2, 0xfb, 0xc1, 0xfb, + 0xb2, 0xfe, 0xb1, 0xfe, 0x72, 0x01, 0x73, 0x01, 0xf9, 0x03, 0xf6, 0x03, + 0x33, 0x06, 0x33, 0x06, 0x1e, 0x08, 0x1c, 0x08, 0xaa, 0x09, 0xa9, 0x09, + 0xd7, 0x0a, 0xd6, 0x0a, 0x9c, 0x0b, 0x9a, 0x0b, 0xf9, 0x0b, 0xf9, 0x0b, + 0xf0, 0x0b, 0xee, 0x0b, 0x7e, 0x0b, 0x7f, 0x0b, 0xb1, 0x0a, 0xae, 0x0a, + 0x83, 0x09, 0x82, 0x09, 0x04, 0x08, 0x05, 0x08, 0x3a, 0x06, 0x39, 0x06, + 0x30, 0x04, 0x31, 0x04, 0xf4, 0x01, 0xf2, 0x01, 0x8b, 0xff, 0x8b, 0xff, + 0x02, 0xfd, 0x02, 0xfd, 0x67, 0xfa, 0x67, 0xfa, 0xc5, 0xf7, 0xc4, 0xf7, + 0x29, 0xf5, 0x28, 0xf5, 0xa0, 0xf2, 0xa0, 0xf2, 0x39, 0xf0, 0x39, 0xf0, + 0xff, 0xed, 0xff, 0xed, 0x01, 0xec, 0xff, 0xeb, 0x4a, 0xea, 0x4a, 0xea, + 0xe4, 0xe8, 0xe4, 0xe8, 0xdd, 0xe7, 0xdc, 0xe7, 0x39, 0xe7, 0x3a, 0xe7, + 0x03, 0xe7, 0x04, 0xe7, 0x3d, 0xe7, 0x3c, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, + 0x03, 0xe9, 0x02, 0xe9, 0x89, 0xea, 0x8a, 0xea, 0x74, 0xec, 0x73, 0xec, + 0xbb, 0xee, 0xbb, 0xee, 0x53, 0xf1, 0x51, 0xf1, 0x2c, 0xf4, 0x2d, 0xf4, + 0x45, 0xf7, 0x44, 0xf7, 0x84, 0xfa, 0x84, 0xfa, 0xe6, 0xfd, 0xe4, 0xfd, + 0x54, 0x01, 0x52, 0x01, 0xc5, 0x04, 0xc7, 0x04, 0x2e, 0x08, 0x2c, 0x08, + 0x7b, 0x0b, 0x7c, 0x0b, 0xa7, 0x0e, 0xa4, 0x0e, 0x9c, 0x11, 0x9c, 0x11, + 0x50, 0x14, 0x50, 0x14, 0xbe, 0x16, 0xba, 0x16, 0xd2, 0x18, 0xd3, 0x18, + 0x8d, 0x1a, 0x8b, 0x1a, 0xdd, 0x1b, 0xdc, 0x1b, 0xc4, 0x1c, 0xc4, 0x1c, + 0x3b, 0x1d, 0x39, 0x1d, 0x44, 0x1d, 0x43, 0x1d, 0xdc, 0x1c, 0xdb, 0x1c, + 0x0b, 0x1c, 0x0a, 0x1c, 0xd7, 0x1a, 0xd5, 0x1a, 0x42, 0x19, 0x41, 0x19, + 0x5e, 0x17, 0x5d, 0x17, 0x2c, 0x15, 0x2d, 0x15, 0xc3, 0x12, 0xc2, 0x12, + 0x28, 0x10, 0x27, 0x10, 0x69, 0x0d, 0x69, 0x0d, 0x9b, 0x0a, 0x99, 0x0a, + 0xbe, 0x07, 0xbe, 0x07, 0xf1, 0x04, 0xf0, 0x04, 0x35, 0x02, 0x34, 0x02, + 0xa4, 0xff, 0xa4, 0xff, 0x44, 0xfd, 0x42, 0xfd, 0x25, 0xfb, 0x24, 0xfb, + 0x54, 0xf9, 0x54, 0xf9, 0xd9, 0xf7, 0xd8, 0xf7, 0xc2, 0xf6, 0xc3, 0xf6, + 0x0a, 0xf6, 0x08, 0xf6, 0xc0, 0xf5, 0xc0, 0xf5, 0xdc, 0xf5, 0xdb, 0xf5, + 0x60, 0xf6, 0x5e, 0xf6, 0x4b, 0xf7, 0x4a, 0xf7, 0x91, 0xf8, 0x8f, 0xf8, + 0x2f, 0xfa, 0x30, 0xfa, 0x20, 0xfc, 0x1f, 0xfc, 0x51, 0xfe, 0x50, 0xfe, + 0xbe, 0x00, 0xbb, 0x00, 0x55, 0x03, 0x57, 0x03, 0x17, 0x06, 0x13, 0x06, + 0xea, 0x08, 0xeb, 0x08, 0xcc, 0x0b, 0xcb, 0x0b, 0xac, 0x0e, 0xab, 0x0e, + 0x81, 0x11, 0x80, 0x11, 0x3a, 0x14, 0x3a, 0x14, 0xd0, 0x16, 0xce, 0x16, + 0x2f, 0x19, 0x30, 0x19, 0x52, 0x1b, 0x50, 0x1b, 0x29, 0x1d, 0x28, 0x1d, + 0xaa, 0x1e, 0xa8, 0x1e, 0xcc, 0x1f, 0xc9, 0x1f, 0x88, 0x20, 0x86, 0x20, + 0xd3, 0x20, 0xd3, 0x20, 0xb4, 0x20, 0xb2, 0x20, 0x20, 0x20, 0x1f, 0x20, + 0x1a, 0x1f, 0x1a, 0x1f, 0xac, 0x1d, 0xa8, 0x1d, 0xd1, 0x1b, 0xd2, 0x1b, + 0x9f, 0x19, 0x9b, 0x19, 0x15, 0x17, 0x16, 0x17, 0x44, 0x14, 0x43, 0x14, + 0x3c, 0x11, 0x3a, 0x11, 0x03, 0x0e, 0x03, 0x0e, 0xaf, 0x0a, 0xad, 0x0a, + 0x47, 0x07, 0x48, 0x07, 0xe0, 0x03, 0xdf, 0x03, 0x86, 0x00, 0x82, 0x00, + 0x46, 0xfd, 0x47, 0xfd, 0x31, 0xfa, 0x2e, 0xfa, 0x53, 0xf7, 0x51, 0xf7, + 0xb5, 0xf4, 0xb5, 0xf4, 0x6b, 0xf2, 0x67, 0xf2, 0x76, 0xf0, 0x74, 0xf0, + 0xe1, 0xee, 0xe2, 0xee, 0xb9, 0xed, 0xb4, 0xed, 0xf3, 0xec, 0xf3, 0xec, + 0xa0, 0xec, 0x9e, 0xec, 0xb2, 0xec, 0xb0, 0xec, 0x31, 0xed, 0x31, 0xed, + 0x10, 0xee, 0x0c, 0xee, 0x4a, 0xef, 0x4a, 0xef, 0xdc, 0xf0, 0xd9, 0xf0, + 0xb3, 0xf2, 0xb3, 0xf2, 0xd0, 0xf4, 0xcf, 0xf4, 0x1d, 0xf7, 0x1c, 0xf7, + 0x96, 0xf9, 0x94, 0xf9, 0x2a, 0xfc, 0x29, 0xfc, 0xcc, 0xfe, 0xcd, 0xfe, + 0x71, 0x01, 0x6e, 0x01, 0x06, 0x04, 0x07, 0x04, 0x86, 0x06, 0x84, 0x06, + 0xd8, 0x08, 0xd9, 0x08, 0xf7, 0x0a, 0xf5, 0x0a, 0xd2, 0x0c, 0xd1, 0x0c, + 0x5d, 0x0e, 0x5c, 0x0e, 0x8d, 0x0f, 0x8c, 0x0f, 0x58, 0x10, 0x56, 0x10, + 0xbb, 0x10, 0xb9, 0x10, 0xac, 0x10, 0xad, 0x10, 0x33, 0x10, 0x30, 0x10, + 0x49, 0x0f, 0x49, 0x0f, 0xfc, 0x0d, 0xf9, 0x0d, 0x47, 0x0c, 0x46, 0x0c, + 0x3d, 0x0a, 0x3c, 0x0a, 0xe2, 0x07, 0xdf, 0x07, 0x3f, 0x05, 0x40, 0x05, + 0x67, 0x02, 0x65, 0x02, 0x60, 0xff, 0x5e, 0xff, 0x3b, 0xfc, 0x3a, 0xfc, + 0x00, 0xf9, 0xff, 0xf8, 0xbe, 0xf5, 0xbe, 0xf5, 0x83, 0xf2, 0x81, 0xf2, + 0x5c, 0xef, 0x59, 0xef, 0x51, 0xec, 0x51, 0xec, 0x77, 0xe9, 0x75, 0xe9, + 0xd2, 0xe6, 0xd1, 0xe6, 0x74, 0xe4, 0x73, 0xe4, 0x65, 0xe2, 0x65, 0xe2, + 0xb0, 0xe0, 0xaf, 0xe0, 0x5e, 0xdf, 0x5d, 0xdf, 0x76, 0xde, 0x75, 0xde, + 0xfb, 0xdd, 0xf9, 0xdd, 0xef, 0xdd, 0xee, 0xdd, 0x56, 0xde, 0x53, 0xde, + 0x2b, 0xdf, 0x2c, 0xdf, 0x6b, 0xe0, 0x69, 0xe0, 0x0e, 0xe2, 0x0d, 0xe2, + 0x0d, 0xe4, 0x0b, 0xe4, 0x5b, 0xe6, 0x59, 0xe6, 0xef, 0xe8, 0xed, 0xe8, + 0xba, 0xeb, 0xba, 0xeb, 0xb1, 0xee, 0xaf, 0xee, 0xc2, 0xf1, 0xc1, 0xf1, + 0xe1, 0xf4, 0xe0, 0xf4, 0x00, 0xf8, 0xfe, 0xf7, 0x0c, 0xfb, 0x0b, 0xfb, + 0xfa, 0xfd, 0xf9, 0xfd, 0xba, 0x00, 0xb9, 0x00, 0x3f, 0x03, 0x3f, 0x03, + 0x7d, 0x05, 0x7b, 0x05, 0x68, 0x07, 0x69, 0x07, 0xfb, 0x08, 0xfa, 0x08, + 0x2b, 0x0a, 0x2b, 0x0a, 0xf6, 0x0a, 0xf4, 0x0a, 0x57, 0x0b, 0x55, 0x0b, + 0x4f, 0x0b, 0x51, 0x0b, 0xe4, 0x0a, 0xe2, 0x0a, 0x15, 0x0a, 0x16, 0x0a, + 0xeb, 0x08, 0xea, 0x08, 0x6e, 0x07, 0x6e, 0x07, 0xa5, 0x05, 0xa4, 0x05, + 0x9c, 0x03, 0x9a, 0x03, 0x57, 0x01, 0x58, 0x01, 0xed, 0xfe, 0xeb, 0xfe, + 0x5d, 0xfc, 0x5f, 0xfc, 0xbe, 0xf9, 0xbc, 0xf9, 0x12, 0xf7, 0x11, 0xf7, + 0x6d, 0xf4, 0x6f, 0xf4, 0xd9, 0xf1, 0xd5, 0xf1, 0x62, 0xef, 0x66, 0xef, + 0x1c, 0xed, 0x17, 0xed, 0x08, 0xeb, 0x09, 0xeb, 0x40, 0xe9, 0x3c, 0xe9, + 0xc2, 0xe7, 0xc0, 0xe7, 0xa4, 0xe6, 0xa3, 0xe6, 0xe8, 0xe5, 0xe4, 0xe5, + 0x97, 0xe5, 0x94, 0xe5, 0xb4, 0xe5, 0xb3, 0xe5, 0x44, 0xe6, 0x43, 0xe6, + 0x47, 0xe7, 0x47, 0xe7, 0xb4, 0xe8, 0xb2, 0xe8, 0x8b, 0xea, 0x89, 0xea, + 0xbb, 0xec, 0xbb, 0xec, 0x47, 0xef, 0x44, 0xef, 0x15, 0xf2, 0x12, 0xf2, + 0x22, 0xf5, 0x1f, 0xf5, 0x5d, 0xf8, 0x5b, 0xf8, 0xb7, 0xfb, 0xb5, 0xfb, + 0x28, 0xff, 0x27, 0xff, 0x9b, 0x02, 0x98, 0x02, 0x08, 0x06, 0x06, 0x06, + 0x5d, 0x09, 0x5d, 0x09, 0x93, 0x0c, 0x90, 0x0c, 0x93, 0x0f, 0x92, 0x0f, + 0x5a, 0x12, 0x58, 0x12, 0xd6, 0x14, 0xd3, 0x14, 0x00, 0x17, 0xff, 0x16, + 0xce, 0x18, 0xca, 0x18, 0x33, 0x1a, 0x32, 0x1a, 0x33, 0x1b, 0x31, 0x1b, + 0xbf, 0x1b, 0xbe, 0x1b, 0xe1, 0x1b, 0xdf, 0x1b, 0x93, 0x1b, 0x91, 0x1b, + 0xda, 0x1a, 0xd9, 0x1a, 0xbe, 0x19, 0xbb, 0x19, 0x42, 0x18, 0x40, 0x18, + 0x76, 0x16, 0x73, 0x16, 0x5c, 0x14, 0x5c, 0x14, 0x09, 0x12, 0x05, 0x12, + 0x80, 0x0f, 0x7e, 0x0f, 0xd3, 0x0c, 0xd1, 0x0c, 0x12, 0x0a, 0x0e, 0x0a, + 0x43, 0x07, 0x41, 0x07, 0x7d, 0x04, 0x7c, 0x04, 0xcc, 0x01, 0xc8, 0x01, + 0x3a, 0xff, 0x39, 0xff, 0xde, 0xfc, 0xdb, 0xfc, 0xbb, 0xfa, 0xbb, 0xfa, + 0xe9, 0xf8, 0xe6, 0xf8, 0x69, 0xf7, 0x67, 0xf7, 0x49, 0xf6, 0x46, 0xf6, + 0x8a, 0xf5, 0x8a, 0xf5, 0x36, 0xf5, 0x33, 0xf5, 0x4b, 0xf5, 0x4a, 0xf5, + 0xc8, 0xf5, 0xc7, 0xf5, 0xaa, 0xf6, 0xa8, 0xf6, 0xec, 0xf7, 0xeb, 0xf7, + 0x87, 0xf9, 0x86, 0xf9, 0x72, 0xfb, 0x6f, 0xfb, 0xa5, 0xfd, 0xa4, 0xfd, + 0x10, 0x00, 0x0f, 0x00, 0xaf, 0x02, 0xae, 0x02, 0x6f, 0x05, 0x6e, 0x05, + 0x4d, 0x08, 0x4b, 0x08, 0x36, 0x0b, 0x35, 0x0b, 0x21, 0x0e, 0x20, 0x0e, + 0x02, 0x11, 0x00, 0x11, 0xca, 0x13, 0xc9, 0x13, 0x70, 0x16, 0x6d, 0x16, + 0xe2, 0x18, 0xe2, 0x18, 0x1b, 0x1b, 0x19, 0x1b, 0x07, 0x1d, 0x08, 0x1d, + 0xa5, 0x1e, 0xa2, 0x1e, 0xe4, 0x1f, 0xe3, 0x1f, 0xbe, 0x20, 0xbb, 0x20, + 0x2f, 0x21, 0x2e, 0x21, 0x2e, 0x21, 0x2d, 0x21, 0xbe, 0x20, 0xbd, 0x20, + 0xe1, 0x1f, 0xe1, 0x1f, 0x92, 0x1e, 0x8f, 0x1e, 0xe0, 0x1c, 0xdf, 0x1c, + 0xcb, 0x1a, 0xc9, 0x1a, 0x65, 0x18, 0x64, 0x18, 0xb2, 0x15, 0xb0, 0x15, + 0xc2, 0x12, 0xc2, 0x12, 0xa4, 0x0f, 0xa1, 0x0f, 0x60, 0x0c, 0x61, 0x0c, + 0x0f, 0x09, 0x0d, 0x09, 0xb3, 0x05, 0xb0, 0x05, 0x64, 0x02, 0x65, 0x02, + 0x2a, 0xff, 0x28, 0xff, 0x1b, 0xfc, 0x1a, 0xfc, 0x3d, 0xf9, 0x3c, 0xf9, + 0x9e, 0xf6, 0x9c, 0xf6, 0x4d, 0xf4, 0x4a, 0xf4, 0x50, 0xf2, 0x4e, 0xf2, + 0xb4, 0xf0, 0xb3, 0xf0, 0x7a, 0xef, 0x78, 0xef, 0xaa, 0xee, 0xa8, 0xee, + 0x42, 0xee, 0x40, 0xee, 0x44, 0xee, 0x42, 0xee, 0xae, 0xee, 0xae, 0xee, + 0x78, 0xef, 0x76, 0xef, 0xa1, 0xf0, 0x9f, 0xf0, 0x1c, 0xf2, 0x1b, 0xf2, + 0xe0, 0xf3, 0xdf, 0xf3, 0xea, 0xf5, 0xe9, 0xf5, 0x23, 0xf8, 0x24, 0xf8, + 0x90, 0xfa, 0x8c, 0xfa, 0x12, 0xfd, 0x13, 0xfd, 0xa8, 0xff, 0xa7, 0xff, + 0x45, 0x02, 0x44, 0x02, 0xd3, 0x04, 0xd3, 0x04, 0x52, 0x07, 0x4f, 0x07, + 0xa4, 0x09, 0xa4, 0x09, 0xc6, 0x0b, 0xc6, 0x0b, 0xab, 0x0d, 0xa8, 0x0d, + 0x42, 0x0f, 0x43, 0x0f, 0x84, 0x10, 0x82, 0x10, 0x62, 0x11, 0x61, 0x11, + 0xd9, 0x11, 0xd7, 0x11, 0xe3, 0x11, 0xe4, 0x11, 0x80, 0x11, 0x7d, 0x11, + 0xb0, 0x10, 0xb0, 0x10, 0x77, 0x0f, 0x74, 0x0f, 0xd9, 0x0d, 0xd7, 0x0d, + 0xdf, 0x0b, 0xde, 0x0b, 0x94, 0x09, 0x93, 0x09, 0x01, 0x07, 0xff, 0x06, + 0x30, 0x04, 0x2f, 0x04, 0x31, 0x01, 0x31, 0x01, 0x0d, 0xfe, 0x0b, 0xfe, + 0xd5, 0xfa, 0xd5, 0xfa, 0x8f, 0xf7, 0x8d, 0xf7, 0x4f, 0xf4, 0x4e, 0xf4, + 0x1d, 0xf1, 0x1b, 0xf1, 0x09, 0xee, 0x06, 0xee, 0x1d, 0xeb, 0x1d, 0xeb, + 0x68, 0xe8, 0x65, 0xe8, 0xf4, 0xe5, 0xf3, 0xe5, 0xcb, 0xe3, 0xcb, 0xe3, + 0xfe, 0xe1, 0xfa, 0xe1, 0x89, 0xe0, 0x8a, 0xe0, 0x82, 0xdf, 0x7e, 0xdf, + 0xe0, 0xde, 0xe3, 0xde, 0xb4, 0xde, 0xb0, 0xde, 0xf2, 0xde, 0xf2, 0xde, + 0xa1, 0xdf, 0x9f, 0xdf, 0xb8, 0xe0, 0xb8, 0xe0, 0x36, 0xe2, 0x35, 0xe2, + 0x0e, 0xe4, 0x0c, 0xe4, 0x38, 0xe6, 0x37, 0xe6, 0xa8, 0xe8, 0xa7, 0xe8, + 0x54, 0xeb, 0x52, 0xeb, 0x2a, 0xee, 0x28, 0xee, 0x21, 0xf1, 0x20, 0xf1, + 0x29, 0xf4, 0x28, 0xf4, 0x31, 0xf7, 0x30, 0xf7, 0x2e, 0xfa, 0x2d, 0xfa, + 0x0f, 0xfd, 0x0c, 0xfd, 0xc6, 0xff, 0xc6, 0xff, 0x46, 0x02, 0x44, 0x02, + 0x81, 0x04, 0x81, 0x04, 0x70, 0x06, 0x71, 0x06, 0x08, 0x08, 0x04, 0x08, + 0x3f, 0x09, 0x41, 0x09, 0x16, 0x0a, 0x13, 0x0a, 0x80, 0x0a, 0x80, 0x0a, + 0x87, 0x0a, 0x85, 0x0a, 0x29, 0x0a, 0x29, 0x0a, 0x67, 0x09, 0x66, 0x09, + 0x4b, 0x08, 0x4a, 0x08, 0xd8, 0x06, 0xd8, 0x06, 0x1e, 0x05, 0x1b, 0x05, + 0x1b, 0x03, 0x1d, 0x03, 0xe7, 0x00, 0xe4, 0x00, 0x7f, 0xfe, 0x7e, 0xfe, + 0xf9, 0xfb, 0xf9, 0xfb, 0x5d, 0xf9, 0x5c, 0xf9, 0xb2, 0xf6, 0xb1, 0xf6, + 0x0e, 0xf4, 0x0d, 0xf4, 0x74, 0xf1, 0x72, 0xf1, 0xfa, 0xee, 0xf8, 0xee, + 0xa6, 0xec, 0xa6, 0xec, 0x87, 0xea, 0x86, 0xea, 0xa8, 0xe8, 0xa8, 0xe8, + 0x1b, 0xe7, 0x19, 0xe7, 0xe0, 0xe5, 0xdf, 0xe5, 0x09, 0xe5, 0x08, 0xe5, + 0x99, 0xe4, 0x99, 0xe4, 0x94, 0xe4, 0x95, 0xe4, 0x03, 0xe5, 0x02, 0xe5, + 0xdf, 0xe5, 0xdf, 0xe5, 0x2c, 0xe7, 0x2b, 0xe7, 0xde, 0xe8, 0xde, 0xe8, + 0xf2, 0xea, 0xf0, 0xea, 0x5a, 0xed, 0x5a, 0xed, 0x10, 0xf0, 0x0e, 0xf0, + 0x04, 0xf3, 0x04, 0xf3, 0x2c, 0xf6, 0x2b, 0xf6, 0x79, 0xf9, 0x79, 0xf9, + 0xdd, 0xfc, 0xdd, 0xfc, 0x49, 0x00, 0x49, 0x00, 0xb3, 0x03, 0xb2, 0x03, + 0x08, 0x07, 0x09, 0x07, 0x40, 0x0a, 0x3d, 0x0a, 0x4a, 0x0d, 0x4b, 0x0d, + 0x1a, 0x10, 0x18, 0x10, 0xa5, 0x12, 0xa4, 0x12, 0xdf, 0x14, 0xdf, 0x14, + 0xc0, 0x16, 0xbf, 0x16, 0x3e, 0x18, 0x3e, 0x18, 0x56, 0x19, 0x57, 0x19, + 0xfe, 0x19, 0xfd, 0x19, 0x3d, 0x1a, 0x3e, 0x1a, 0x0d, 0x1a, 0x0c, 0x1a, + 0x73, 0x19, 0x73, 0x19, 0x78, 0x18, 0x76, 0x18, 0x19, 0x17, 0x1b, 0x17, + 0x6e, 0x15, 0x6c, 0x15, 0x71, 0x13, 0x72, 0x13, 0x38, 0x11, 0x38, 0x11, + 0xcb, 0x0e, 0xca, 0x0e, 0x35, 0x0c, 0x37, 0x0c, 0x8a, 0x09, 0x88, 0x09, + 0xcd, 0x06, 0xce, 0x06, 0x15, 0x04, 0x16, 0x04, 0x6d, 0x01, 0x6d, 0x01, + 0xe4, 0xfe, 0xe5, 0xfe, 0x87, 0xfc, 0x89, 0xfc, 0x67, 0xfa, 0x66, 0xfa, + 0x8d, 0xf8, 0x8d, 0xf8, 0x07, 0xf7, 0x06, 0xf7, 0xd9, 0xf5, 0xd9, 0xf5, + 0x14, 0xf5, 0x14, 0xf5, 0xb0, 0xf4, 0xaf, 0xf4, 0xb9, 0xf4, 0xb9, 0xf4, + 0x28, 0xf5, 0x28, 0xf5, 0xfe, 0xf5, 0xfc, 0xf5, 0x37, 0xf7, 0x37, 0xf7, + 0xc9, 0xf8, 0xc8, 0xf8, 0xae, 0xfa, 0xac, 0xfa, 0xd8, 0xfc, 0xd8, 0xfc, + 0x44, 0xff, 0x44, 0xff, 0xe3, 0x01, 0xe2, 0x01, 0xa6, 0x04, 0xa4, 0x04, + 0x89, 0x07, 0x8b, 0x07, 0x79, 0x0a, 0x77, 0x0a, 0x6e, 0x0d, 0x6d, 0x0d, + 0x5b, 0x10, 0x5b, 0x10, 0x31, 0x13, 0x2e, 0x13, 0xe7, 0x15, 0xe7, 0x15, + 0x6f, 0x18, 0x6e, 0x18, 0xbc, 0x1a, 0xbc, 0x1a, 0xc3, 0x1c, 0xc4, 0x1c, + 0x7d, 0x1e, 0x7a, 0x1e, 0xd6, 0x1f, 0xd7, 0x1f, 0xd4, 0x20, 0xd3, 0x20, + 0x63, 0x21, 0x63, 0x21, 0x88, 0x21, 0x87, 0x21, 0x3a, 0x21, 0x3a, 0x21, + 0x80, 0x20, 0x7e, 0x20, 0x58, 0x1f, 0x58, 0x1f, 0xc8, 0x1d, 0xc5, 0x1d, + 0xd5, 0x1b, 0xd7, 0x1b, 0x8f, 0x19, 0x8d, 0x19, 0xf9, 0x16, 0xfb, 0x16, + 0x26, 0x14, 0x24, 0x14, 0x1e, 0x11, 0x1d, 0x11, 0xf3, 0x0d, 0xf2, 0x0d, + 0xaf, 0x0a, 0xaf, 0x0a, 0x63, 0x07, 0x62, 0x07, 0x20, 0x04, 0x1f, 0x04, + 0xed, 0x00, 0xed, 0x00, 0xe1, 0xfd, 0xe0, 0xfd, 0x05, 0xfb, 0x05, 0xfb, + 0x64, 0xf8, 0x63, 0xf8, 0x10, 0xf6, 0x10, 0xf6, 0x0b, 0xf4, 0x0b, 0xf4, + 0x67, 0xf2, 0x67, 0xf2, 0x21, 0xf1, 0x23, 0xf1, 0x44, 0xf0, 0x42, 0xf0, + 0xd0, 0xef, 0xd1, 0xef, 0xc2, 0xef, 0xc3, 0xef, 0x1f, 0xf0, 0x1e, 0xf0, + 0xda, 0xf0, 0xdb, 0xf0, 0xf4, 0xf1, 0xf4, 0xf1, 0x61, 0xf3, 0x62, 0xf3, + 0x1a, 0xf5, 0x19, 0xf5, 0x14, 0xf7, 0x16, 0xf7, 0x48, 0xf9, 0x48, 0xf9, + 0xa4, 0xfb, 0xa3, 0xfb, 0x21, 0xfe, 0x24, 0xfe, 0xb2, 0x00, 0xb1, 0x00, + 0x48, 0x03, 0x4b, 0x03, 0xda, 0x05, 0xd8, 0x05, 0x52, 0x08, 0x53, 0x08, + 0xaf, 0x0a, 0xae, 0x0a, 0xd7, 0x0c, 0xd7, 0x0c, 0xc3, 0x0e, 0xc3, 0x0e, + 0x68, 0x10, 0x69, 0x10, 0xb7, 0x11, 0xb7, 0x11, 0xa9, 0x12, 0xab, 0x12, + 0x34, 0x13, 0x33, 0x13, 0x53, 0x13, 0x53, 0x13, 0x03, 0x13, 0x03, 0x13, + 0x44, 0x12, 0x42, 0x12, 0x1a, 0x11, 0x1b, 0x11, 0x8e, 0x0f, 0x8d, 0x0f, + 0xa1, 0x0d, 0xa1, 0x0d, 0x60, 0x0b, 0x60, 0x0b, 0xd3, 0x08, 0xd2, 0x08, + 0x08, 0x06, 0x07, 0x06, 0x09, 0x03, 0x0a, 0x03, 0xe3, 0xff, 0xe3, 0xff, + 0xa7, 0xfc, 0xa6, 0xfc, 0x5c, 0xf9, 0x5c, 0xf9, 0x0f, 0xf6, 0x0e, 0xf6, + 0xd4, 0xf2, 0xd4, 0xf2, 0xae, 0xef, 0xae, 0xef, 0xb5, 0xec, 0xb4, 0xec, + 0xed, 0xe9, 0xec, 0xe9, 0x62, 0xe7, 0x60, 0xe7, 0x25, 0xe5, 0x25, 0xe5, + 0x3a, 0xe3, 0x3b, 0xe3, 0xb4, 0xe1, 0xb1, 0xe1, 0x8c, 0xe0, 0x8f, 0xe0, + 0xd0, 0xdf, 0xd0, 0xdf, 0x85, 0xdf, 0x86, 0xdf, 0xa6, 0xdf, 0xa7, 0xdf, + 0x39, 0xe0, 0x39, 0xe0, 0x34, 0xe1, 0x35, 0xe1, 0x92, 0xe2, 0x94, 0xe2, + 0x53, 0xe4, 0x51, 0xe4, 0x62, 0xe6, 0x64, 0xe6, 0xba, 0xe8, 0xbb, 0xe8, + 0x50, 0xeb, 0x51, 0xeb, 0x0e, 0xee, 0x0f, 0xee, 0xf7, 0xf0, 0xf8, 0xf0, + 0xeb, 0xf3, 0xeb, 0xf3, 0xea, 0xf6, 0xeb, 0xf6, 0xdb, 0xf9, 0xdb, 0xf9, + 0xb0, 0xfc, 0xb1, 0xfc, 0x65, 0xff, 0x65, 0xff, 0xdc, 0x01, 0xde, 0x01, + 0x1b, 0x04, 0x1a, 0x04, 0x04, 0x06, 0x07, 0x06, 0x9d, 0x07, 0x9d, 0x07, + 0xd6, 0x08, 0xd7, 0x08, 0xad, 0x09, 0xac, 0x09, 0x1c, 0x0a, 0x1b, 0x0a, + 0x24, 0x0a, 0x24, 0x0a, 0xc8, 0x09, 0xc7, 0x09, 0x08, 0x09, 0x09, 0x09, + 0xed, 0x07, 0xec, 0x07, 0x7b, 0x06, 0x7b, 0x06, 0xbc, 0x04, 0xbe, 0x04, + 0xba, 0x02, 0xb9, 0x02, 0x82, 0x00, 0x82, 0x00, 0x16, 0xfe, 0x17, 0xfe, + 0x8d, 0xfb, 0x8c, 0xfb, 0xe9, 0xf8, 0xe9, 0xf8, 0x37, 0xf6, 0x39, 0xf6, + 0x8a, 0xf3, 0x89, 0xf3, 0xe6, 0xf0, 0xe7, 0xf0, 0x5f, 0xee, 0x5f, 0xee, + 0xfd, 0xeb, 0xfd, 0xeb, 0xcd, 0xe9, 0xcf, 0xe9, 0xe1, 0xe7, 0xe1, 0xe7, + 0x39, 0xe6, 0x39, 0xe6, 0xef, 0xe4, 0xef, 0xe4, 0xfd, 0xe3, 0xfe, 0xe3, + 0x76, 0xe3, 0x77, 0xe3, 0x5c, 0xe3, 0x5b, 0xe3, 0xad, 0xe3, 0xae, 0xe3, + 0x72, 0xe4, 0x72, 0xe4, 0xa3, 0xe5, 0xa5, 0xe5, 0x42, 0xe7, 0x40, 0xe7, + 0x3f, 0xe9, 0x41, 0xe9, 0x94, 0xeb, 0x94, 0xeb, 0x3b, 0xee, 0x3d, 0xee, + 0x23, 0xf1, 0x21, 0xf1, 0x3e, 0xf4, 0x42, 0xf4, 0x85, 0xf7, 0x84, 0xf7, + 0xe1, 0xfa, 0xe4, 0xfa, 0x4e, 0xfe, 0x4e, 0xfe, 0xb7, 0x01, 0xb7, 0x01, + 0x0e, 0x05, 0x11, 0x05, 0x4c, 0x08, 0x4a, 0x08, 0x5a, 0x0b, 0x5c, 0x0b, + 0x34, 0x0e, 0x36, 0x0e, 0xc9, 0x10, 0xca, 0x10, 0x0f, 0x13, 0x11, 0x13, + 0xfe, 0x14, 0xfd, 0x14, 0x8b, 0x16, 0x8c, 0x16, 0xae, 0x17, 0xb0, 0x17, + 0x6b, 0x18, 0x6a, 0x18, 0xb5, 0x18, 0xb8, 0x18, 0x9a, 0x18, 0x99, 0x18, + 0x0f, 0x18, 0x12, 0x18, 0x26, 0x17, 0x24, 0x17, 0xda, 0x15, 0xdd, 0x15, + 0x3c, 0x14, 0x3d, 0x14, 0x52, 0x12, 0x53, 0x12, 0x27, 0x10, 0x29, 0x10, + 0xc7, 0x0d, 0xc8, 0x0d, 0x3e, 0x0b, 0x42, 0x0b, 0x9e, 0x08, 0x9c, 0x08, + 0xe9, 0x05, 0xec, 0x05, 0x39, 0x03, 0x39, 0x03, 0x96, 0x00, 0x98, 0x00, + 0x0f, 0xfe, 0x10, 0xfe, 0xb5, 0xfb, 0xb6, 0xfb, 0x90, 0xf9, 0x90, 0xf9, + 0xb1, 0xf7, 0xb4, 0xf7, 0x26, 0xf6, 0x27, 0xf6, 0xf2, 0xf4, 0xf5, 0xf4, + 0x24, 0xf4, 0x27, 0xf4, 0xbc, 0xf3, 0xbf, 0xf3, 0xbf, 0xf3, 0xc0, 0xf3, + 0x2a, 0xf4, 0x2b, 0xf4, 0xfc, 0xf4, 0xfe, 0xf4, 0x34, 0xf6, 0x34, 0xf6, + 0xc2, 0xf7, 0xc7, 0xf7, 0xab, 0xf9, 0xac, 0xf9, 0xdb, 0xfb, 0xdc, 0xfb, + 0x4b, 0xfe, 0x4c, 0xfe, 0xf2, 0x00, 0xf6, 0x00, 0xbf, 0x03, 0xbf, 0x03, + 0xad, 0x06, 0xb0, 0x06, 0xaa, 0x09, 0xad, 0x09, 0xaf, 0x0c, 0xb0, 0x0c, + 0xaa, 0x0f, 0xac, 0x0f, 0x93, 0x12, 0x94, 0x12, 0x5c, 0x15, 0x5f, 0x15, + 0xf8, 0x17, 0xf9, 0x17, 0x5e, 0x1a, 0x61, 0x1a, 0x7b, 0x1c, 0x7b, 0x1c, + 0x4c, 0x1e, 0x4e, 0x1e, 0xc3, 0x1f, 0xc6, 0x1f, 0xda, 0x20, 0xda, 0x20, + 0x86, 0x21, 0x89, 0x21, 0xc6, 0x21, 0xc8, 0x21, 0x97, 0x21, 0x99, 0x21, + 0xf7, 0x20, 0xfa, 0x20, 0xec, 0x1f, 0xed, 0x1f, 0x78, 0x1e, 0x7b, 0x1e, + 0xa0, 0x1c, 0xa0, 0x1c, 0x70, 0x1a, 0x72, 0x1a, 0xf1, 0x17, 0xf4, 0x17, + 0x31, 0x15, 0x35, 0x15, 0x3b, 0x12, 0x3b, 0x12, 0x1f, 0x0f, 0x23, 0x0f, + 0xea, 0x0b, 0xeb, 0x0b, 0xa7, 0x08, 0xaa, 0x08, 0x6a, 0x05, 0x6d, 0x05, + 0x3f, 0x02, 0x40, 0x02, 0x35, 0xff, 0x39, 0xff, 0x5d, 0xfc, 0x5e, 0xfc, + 0xbc, 0xf9, 0xbf, 0xf9, 0x63, 0xf7, 0x65, 0xf7, 0x5e, 0xf5, 0x5f, 0xf5, + 0xb0, 0xf3, 0xb5, 0xf3, 0x6c, 0xf2, 0x6b, 0xf2, 0x83, 0xf1, 0x88, 0xf1, + 0x0b, 0xf1, 0x0c, 0xf1, 0xf3, 0xf0, 0xf7, 0xf0, 0x47, 0xf1, 0x4b, 0xf1, + 0xfc, 0xf1, 0x00, 0xf2, 0x0e, 0xf3, 0x10, 0xf3, 0x74, 0xf4, 0x78, 0xf4, + 0x25, 0xf6, 0x27, 0xf6, 0x1d, 0xf8, 0x21, 0xf8, 0x49, 0xfa, 0x4c, 0xfa, + 0xa4, 0xfc, 0xa7, 0xfc, 0x1e, 0xff, 0x22, 0xff, 0xac, 0x01, 0xb0, 0x01, + 0x47, 0x04, 0x4a, 0x04, 0xd8, 0x06, 0xdc, 0x06, 0x5a, 0x09, 0x5d, 0x09, + 0xbd, 0x0b, 0xc0, 0x0b, 0xed, 0x0d, 0xf1, 0x0d, 0xe9, 0x0f, 0xeb, 0x0f, + 0x9c, 0x11, 0x9e, 0x11, 0xfb, 0x12, 0xfe, 0x12, 0x02, 0x14, 0x05, 0x14, + 0x9d, 0x14, 0xa1, 0x14, 0xd4, 0x14, 0xd8, 0x14, 0x98, 0x14, 0x9b, 0x14, + 0xed, 0x13, 0xf2, 0x13, 0xd8, 0x12, 0xda, 0x12, 0x59, 0x11, 0x5c, 0x11, + 0x78, 0x0f, 0x7b, 0x0f, 0x41, 0x0d, 0x44, 0x0d, 0xba, 0x0a, 0xbe, 0x0a, + 0xf3, 0x07, 0xf5, 0x07, 0xf3, 0x04, 0xf7, 0x04, 0xcc, 0x01, 0xd0, 0x01, + 0x87, 0xfe, 0x8a, 0xfe, 0x32, 0xfb, 0x37, 0xfb, 0xde, 0xf7, 0xe0, 0xf7, + 0x90, 0xf4, 0x95, 0xf4, 0x5f, 0xf1, 0x60, 0xf1, 0x4e, 0xee, 0x54, 0xee, + 0x72, 0xeb, 0x75, 0xeb, 0xd2, 0xe8, 0xd5, 0xe8, 0x7d, 0xe6, 0x80, 0xe6, + 0x79, 0xe4, 0x7e, 0xe4, 0xd6, 0xe2, 0xd8, 0xe2, 0x94, 0xe1, 0x98, 0xe1, + 0xbd, 0xe0, 0xc0, 0xe0, 0x52, 0xe0, 0x55, 0xe0, 0x59, 0xe0, 0x5e, 0xe0, + 0xce, 0xe0, 0xd0, 0xe0, 0xae, 0xe1, 0xb3, 0xe1, 0xf5, 0xe2, 0xfa, 0xe2, + 0x96, 0xe4, 0x9b, 0xe4, 0x92, 0xe6, 0x96, 0xe6, 0xd2, 0xe8, 0xd6, 0xe8, + 0x53, 0xeb, 0x57, 0xeb, 0x06, 0xee, 0x0b, 0xee, 0xd8, 0xf0, 0xdb, 0xf0, + 0xc7, 0xf3, 0xcb, 0xf3, 0xb5, 0xf6, 0xba, 0xf6, 0xa0, 0xf9, 0xa4, 0xf9, + 0x77, 0xfc, 0x7d, 0xfc, 0x23, 0xff, 0x27, 0xff, 0xa4, 0x01, 0xa9, 0x01, + 0xde, 0x03, 0xe5, 0x03, 0xd3, 0x05, 0xd6, 0x05, 0x6f, 0x07, 0x74, 0x07, + 0xb1, 0x08, 0xb5, 0x08, 0x8e, 0x09, 0x93, 0x09, 0x04, 0x0a, 0x08, 0x0a, + 0x13, 0x0a, 0x18, 0x0a, 0xbc, 0x09, 0xc0, 0x09, 0x01, 0x09, 0x06, 0x09, + 0xe9, 0x07, 0xec, 0x07, 0x78, 0x06, 0x7d, 0x06, 0xbb, 0x04, 0xc1, 0x04, + 0xb7, 0x02, 0xb9, 0x02, 0x78, 0x00, 0x7d, 0x00, 0x09, 0xfe, 0x0e, 0xfe, + 0x75, 0xfb, 0x79, 0xfb, 0xc6, 0xf8, 0xcc, 0xf8, 0x0d, 0xf6, 0x0f, 0xf6, + 0x4f, 0xf3, 0x53, 0xf3, 0x9b, 0xf0, 0x9f, 0xf0, 0x01, 0xee, 0x05, 0xee, + 0x88, 0xeb, 0x8d, 0xeb, 0x45, 0xe9, 0x49, 0xe9, 0x3b, 0xe7, 0x40, 0xe7, + 0x7b, 0xe5, 0x80, 0xe5, 0x12, 0xe4, 0x16, 0xe4, 0x02, 0xe3, 0x06, 0xe3, + 0x5c, 0xe2, 0x63, 0xe2, 0x20, 0xe2, 0x22, 0xe2, 0x50, 0xe2, 0x58, 0xe2, + 0xf3, 0xe2, 0xf6, 0xe2, 0x0a, 0xe4, 0x0e, 0xe4, 0x85, 0xe5, 0x8a, 0xe5, + 0x6a, 0xe7, 0x6f, 0xe7, 0xaa, 0xe9, 0xaf, 0xe9, 0x3b, 0xec, 0x40, 0xec, + 0x13, 0xef, 0x18, 0xef, 0x24, 0xf2, 0x28, 0xf2, 0x62, 0xf5, 0x67, 0xf5, + 0xbd, 0xf8, 0xbf, 0xf8, 0x25, 0xfc, 0x2d, 0xfc, 0x94, 0xff, 0x98, 0xff, + 0xf1, 0x02, 0xf5, 0x02, 0x36, 0x06, 0x3b, 0x06, 0x55, 0x09, 0x59, 0x09, + 0x3b, 0x0c, 0x43, 0x0c, 0xe4, 0x0e, 0xe8, 0x0e, 0x3d, 0x11, 0x42, 0x11, + 0x40, 0x13, 0x46, 0x13, 0xe2, 0x14, 0xe7, 0x14, 0x20, 0x16, 0x26, 0x16, + 0xf0, 0x16, 0xf4, 0x16, 0x56, 0x17, 0x5b, 0x17, 0x4f, 0x17, 0x54, 0x17, + 0xde, 0x16, 0xe2, 0x16, 0x0a, 0x16, 0x0f, 0x16, 0xd2, 0x14, 0xd7, 0x14, + 0x49, 0x13, 0x4e, 0x13, 0x6e, 0x11, 0x74, 0x11, 0x52, 0x0f, 0x57, 0x0f, + 0x01, 0x0d, 0x07, 0x0d, 0x81, 0x0a, 0x86, 0x0a, 0xe6, 0x07, 0xeb, 0x07, + 0x36, 0x05, 0x3b, 0x05, 0x88, 0x02, 0x8e, 0x02, 0xe1, 0xff, 0xe5, 0xff, + 0x56, 0xfd, 0x5d, 0xfd, 0xef, 0xfa, 0xf4, 0xfa, 0xc0, 0xf8, 0xc5, 0xf8, + 0xd0, 0xf6, 0xd7, 0xf6, 0x31, 0xf5, 0x37, 0xf5, 0xf1, 0xf3, 0xf5, 0xf3, + 0x0a, 0xf3, 0x11, 0xf3, 0x91, 0xf2, 0x95, 0xf2, 0x7d, 0xf2, 0x85, 0xf2, + 0xda, 0xf2, 0xdf, 0xf2, 0x9f, 0xf3, 0xa5, 0xf3, 0xca, 0xf4, 0xcf, 0xf4, + 0x55, 0xf6, 0x5a, 0xf6, 0x35, 0xf8, 0x3b, 0xf8, 0x65, 0xfa, 0x6a, 0xfa, + 0xdb, 0xfc, 0xe0, 0xfc, 0x84, 0xff, 0x8a, 0xff, 0x63, 0x02, 0x66, 0x02, + 0x58, 0x05, 0x5e, 0x05, 0x69, 0x08, 0x6f, 0x08, 0x80, 0x0b, 0x84, 0x0b, + 0x94, 0x0e, 0x9a, 0x0e, 0x95, 0x11, 0x9a, 0x11, 0x7a, 0x14, 0x7f, 0x14, + 0x35, 0x17, 0x3c, 0x17, 0xba, 0x19, 0xc0, 0x19, 0xfe, 0x1b, 0x04, 0x1c, + 0xf0, 0x1d, 0xf8, 0x1d, 0x90, 0x1f, 0x95, 0x1f, 0xcd, 0x20, 0xd4, 0x20, + 0xa1, 0x21, 0xa7, 0x21, 0x09, 0x22, 0x10, 0x22, 0x01, 0x22, 0x07, 0x22, + 0x88, 0x21, 0x8e, 0x21, 0xa1, 0x20, 0xa9, 0x20, 0x4e, 0x1f, 0x53, 0x1f, + 0x95, 0x1d, 0x9d, 0x1d, 0x84, 0x1b, 0x8a, 0x1b, 0x1b, 0x19, 0x22, 0x19, + 0x74, 0x16, 0x7b, 0x16, 0x8d, 0x13, 0x94, 0x13, 0x81, 0x10, 0x89, 0x10, + 0x54, 0x0d, 0x59, 0x0d, 0x16, 0x0a, 0x1e, 0x0a, 0xdd, 0x06, 0xe3, 0x06, + 0xaf, 0x03, 0xb6, 0x03, 0xa0, 0x00, 0xa7, 0x00, 0xbd, 0xfd, 0xc5, 0xfd, + 0x12, 0xfb, 0x19, 0xfb, 0xaf, 0xf8, 0xb6, 0xf8, 0x97, 0xf6, 0x9f, 0xf6, + 0xdf, 0xf4, 0xe3, 0xf4, 0x82, 0xf3, 0x8c, 0xf3, 0x8e, 0xf2, 0x94, 0xf2, + 0x00, 0xf2, 0x08, 0xf2, 0xdf, 0xf1, 0xe3, 0xf1, 0x22, 0xf2, 0x29, 0xf2, + 0xca, 0xf2, 0xd1, 0xf2, 0xd0, 0xf3, 0xd8, 0xf3, 0x2f, 0xf5, 0x34, 0xf5, + 0xd7, 0xf6, 0xe1, 0xf6, 0xcb, 0xf8, 0xcf, 0xf8, 0xf1, 0xfa, 0xfb, 0xfa, + 0x4f, 0xfd, 0x55, 0xfd, 0xcc, 0xff, 0xd2, 0xff, 0x60, 0x02, 0x68, 0x02, + 0x04, 0x05, 0x0a, 0x05, 0xa0, 0x07, 0xa6, 0x07, 0x2f, 0x0a, 0x38, 0x0a, + 0xa2, 0x0c, 0xa9, 0x0c, 0xec, 0x0e, 0xf5, 0x0e, 0xfd, 0x10, 0x06, 0x11, + 0xcb, 0x12, 0xd3, 0x12, 0x47, 0x14, 0x50, 0x14, 0x6c, 0x15, 0x71, 0x15, + 0x2c, 0x16, 0x36, 0x16, 0x7f, 0x16, 0x86, 0x16, 0x63, 0x16, 0x6c, 0x16, + 0xd7, 0x15, 0xdd, 0x15, 0xdb, 0x14, 0xe3, 0x14, 0x73, 0x13, 0x7b, 0x13, + 0xa9, 0x11, 0xaf, 0x11, 0x7e, 0x0f, 0x87, 0x0f, 0x05, 0x0d, 0x0d, 0x0d, + 0x44, 0x0a, 0x4c, 0x0a, 0x43, 0x07, 0x4e, 0x07, 0x1c, 0x04, 0x23, 0x04, + 0xce, 0x00, 0xd6, 0x00, 0x6e, 0xfd, 0x79, 0xfd, 0x0c, 0xfa, 0x14, 0xfa, + 0xa9, 0xf6, 0xb2, 0xf6, 0x64, 0xf3, 0x6b, 0xf3, 0x3c, 0xf0, 0x44, 0xf0, + 0x43, 0xed, 0x4a, 0xed, 0x86, 0xea, 0x90, 0xea, 0x0e, 0xe8, 0x15, 0xe8, + 0xed, 0xe5, 0xf5, 0xe5, 0x20, 0xe4, 0x2a, 0xe4, 0xbf, 0xe2, 0xc5, 0xe2, + 0xc2, 0xe1, 0xca, 0xe1, 0x34, 0xe1, 0x3d, 0xe1, 0x1b, 0xe1, 0x20, 0xe1, + 0x69, 0xe1, 0x73, 0xe1, 0x2f, 0xe2, 0x33, 0xe2, 0x53, 0xe3, 0x5c, 0xe3, + 0xdc, 0xe4, 0xe4, 0xe4, 0xbb, 0xe6, 0xc2, 0xe6, 0xe6, 0xe8, 0xee, 0xe8, + 0x57, 0xeb, 0x5e, 0xeb, 0xf5, 0xed, 0xfc, 0xed, 0xc1, 0xf0, 0xc9, 0xf0, + 0xa1, 0xf3, 0xaa, 0xf3, 0x91, 0xf6, 0x96, 0xf6, 0x76, 0xf9, 0x82, 0xf9, + 0x50, 0xfc, 0x54, 0xfc, 0x03, 0xff, 0x0d, 0xff, 0x89, 0x01, 0x90, 0x01, + 0xd1, 0x03, 0xd9, 0x03, 0xcf, 0x05, 0xd8, 0x05, 0x7b, 0x07, 0x81, 0x07, + 0xc8, 0x08, 0xd1, 0x08, 0xb6, 0x09, 0xbd, 0x09, 0x37, 0x0a, 0x3f, 0x0a, + 0x56, 0x0a, 0x5e, 0x0a, 0x07, 0x0a, 0x0f, 0x0a, 0x55, 0x09, 0x5d, 0x09, + 0x44, 0x08, 0x4d, 0x08, 0xd5, 0x06, 0xdb, 0x06, 0x18, 0x05, 0x23, 0x05, + 0x11, 0x03, 0x19, 0x03, 0xce, 0x00, 0xd6, 0x00, 0x59, 0xfe, 0x62, 0xfe, + 0xb7, 0xfb, 0xc0, 0xfb, 0xff, 0xf8, 0x07, 0xf9, 0x33, 0xf6, 0x3c, 0xf6, + 0x65, 0xf3, 0x6c, 0xf3, 0x9e, 0xf0, 0xa6, 0xf0, 0xec, 0xed, 0xf5, 0xed, + 0x5e, 0xeb, 0x66, 0xeb, 0xfb, 0xe8, 0x04, 0xe9, 0xd5, 0xe6, 0xdd, 0xe6, + 0xf5, 0xe4, 0xfd, 0xe4, 0x66, 0xe3, 0x6e, 0xe3, 0x3a, 0xe2, 0x41, 0xe2, + 0x6a, 0xe1, 0x71, 0xe1, 0x0a, 0xe1, 0x11, 0xe1, 0x16, 0xe1, 0x1f, 0xe1, + 0x95, 0xe1, 0x9d, 0xe1, 0x88, 0xe2, 0x90, 0xe2, 0xe4, 0xe3, 0xed, 0xe3, + 0xac, 0xe5, 0xb3, 0xe5, 0xcf, 0xe7, 0xd8, 0xe7, 0x4d, 0xea, 0x55, 0xea, + 0x13, 0xed, 0x1a, 0xed, 0x13, 0xf0, 0x1f, 0xf0, 0x47, 0xf3, 0x4f, 0xf3, + 0x9d, 0xf6, 0xa5, 0xf6, 0x04, 0xfa, 0x0f, 0xfa, 0x73, 0xfd, 0x7b, 0xfd, + 0xd6, 0x00, 0xe1, 0x00, 0x23, 0x04, 0x2c, 0x04, 0x4d, 0x07, 0x56, 0x07, + 0x42, 0x0a, 0x4b, 0x0a, 0xfb, 0x0c, 0x03, 0x0d, 0x64, 0x0f, 0x6d, 0x0f, + 0x7a, 0x11, 0x85, 0x11, 0x33, 0x13, 0x3c, 0x13, 0x84, 0x14, 0x8d, 0x14, + 0x6c, 0x15, 0x75, 0x15, 0xe5, 0x15, 0xef, 0x15, 0xf4, 0x15, 0xfe, 0x15, + 0x99, 0x15, 0xa2, 0x15, 0xd7, 0x14, 0xe0, 0x14, 0xb4, 0x13, 0xbe, 0x13, + 0x3b, 0x12, 0x43, 0x12, 0x70, 0x10, 0x7b, 0x10, 0x63, 0x0e, 0x6b, 0x0e, + 0x1a, 0x0c, 0x25, 0x0c, 0xa9, 0x09, 0xb0, 0x09, 0x10, 0x07, 0x1b, 0x07, + 0x68, 0x04, 0x70, 0x04, 0xb9, 0x01, 0xc2, 0x01, 0x10, 0xff, 0x1b, 0xff, + 0x83, 0xfc, 0x8b, 0xfc, 0x13, 0xfa, 0x1f, 0xfa, 0xdd, 0xf7, 0xe5, 0xf7, + 0xde, 0xf5, 0xe8, 0xf5, 0x34, 0xf4, 0x3c, 0xf4, 0xda, 0xf2, 0xe6, 0xf2, + 0xe9, 0xf1, 0xf0, 0xf1, 0x5a, 0xf1, 0x64, 0xf1, 0x38, 0xf1, 0x41, 0xf1, + 0x86, 0xf1, 0x91, 0xf1, 0x39, 0xf2, 0x43, 0xf2, 0x5c, 0xf3, 0x66, 0xf3, + 0xde, 0xf4, 0xe9, 0xf4, 0xb9, 0xf6, 0xc2, 0xf6, 0xea, 0xf8, 0xf3, 0xf8, + 0x5b, 0xfb, 0x65, 0xfb, 0x10, 0xfe, 0x17, 0xfe, 0xec, 0x00, 0xf6, 0x00, + 0xf0, 0x03, 0xfb, 0x03, 0x0e, 0x07, 0x16, 0x07, 0x30, 0x0a, 0x3c, 0x0a, + 0x58, 0x0d, 0x5f, 0x0d, 0x6b, 0x10, 0x75, 0x10, 0x66, 0x13, 0x6f, 0x13, + 0x38, 0x16, 0x41, 0x16, 0xd7, 0x18, 0xe0, 0x18, 0x34, 0x1b, 0x3e, 0x1b, + 0x48, 0x1d, 0x4f, 0x1d, 0x00, 0x1f, 0x0b, 0x1f, 0x60, 0x20, 0x68, 0x20, + 0x52, 0x21, 0x5b, 0x21, 0xde, 0x21, 0xe7, 0x21, 0xf5, 0x21, 0xfd, 0x21, + 0x9d, 0x21, 0xa8, 0x21, 0xd7, 0x20, 0xe0, 0x20, 0xa4, 0x1f, 0xac, 0x1f, + 0x09, 0x1e, 0x15, 0x1e, 0x15, 0x1c, 0x1c, 0x1c, 0xc7, 0x19, 0xd2, 0x19, + 0x37, 0x17, 0x40, 0x17, 0x68, 0x14, 0x70, 0x14, 0x6a, 0x11, 0x74, 0x11, + 0x50, 0x0e, 0x58, 0x0e, 0x1e, 0x0b, 0x29, 0x0b, 0xf2, 0x07, 0xf9, 0x07, + 0xca, 0x04, 0xd4, 0x04, 0xc1, 0x01, 0xc9, 0x01, 0xe0, 0xfe, 0xea, 0xfe, + 0x37, 0xfc, 0x40, 0xfc, 0xd1, 0xf9, 0xda, 0xf9, 0xba, 0xf7, 0xc2, 0xf7, + 0xf7, 0xf5, 0x02, 0xf6, 0x9a, 0xf4, 0xa3, 0xf4, 0x9a, 0xf3, 0xa7, 0xf3, + 0x09, 0xf3, 0x11, 0xf3, 0xde, 0xf2, 0xe8, 0xf2, 0x18, 0xf3, 0x22, 0xf3, + 0xbd, 0xf3, 0xc4, 0xf3, 0xb6, 0xf4, 0xc2, 0xf4, 0x12, 0xf6, 0x1b, 0xf6, + 0xb4, 0xf7, 0xbe, 0xf7, 0xa1, 0xf9, 0xaa, 0xf9, 0xc9, 0xfb, 0xd0, 0xfb, + 0x1d, 0xfe, 0x27, 0xfe, 0x9a, 0x00, 0xa3, 0x00, 0x2d, 0x03, 0x36, 0x03, + 0xd0, 0x05, 0xd9, 0x05, 0x70, 0x08, 0x79, 0x08, 0x05, 0x0b, 0x0e, 0x0b, + 0x7c, 0x0d, 0x87, 0x0d, 0xcf, 0x0f, 0xd8, 0x0f, 0xec, 0x11, 0xf5, 0x11, + 0xc5, 0x13, 0xce, 0x13, 0x55, 0x15, 0x5c, 0x15, 0x86, 0x16, 0x91, 0x16, + 0x5f, 0x17, 0x67, 0x17, 0xc4, 0x17, 0xcf, 0x17, 0xc3, 0x17, 0xcb, 0x17, + 0x4d, 0x17, 0x56, 0x17, 0x67, 0x16, 0x70, 0x16, 0x15, 0x15, 0x1d, 0x15, + 0x5b, 0x13, 0x63, 0x13, 0x45, 0x11, 0x50, 0x11, 0xd7, 0x0e, 0xdf, 0x0e, + 0x22, 0x0c, 0x2b, 0x0c, 0x2e, 0x09, 0x37, 0x09, 0x08, 0x06, 0x0f, 0x06, + 0xc1, 0x02, 0xc9, 0x02, 0x60, 0xff, 0x68, 0xff, 0xfb, 0xfb, 0x04, 0xfc, + 0x97, 0xf8, 0xa0, 0xf8, 0x46, 0xf5, 0x4f, 0xf5, 0x19, 0xf2, 0x21, 0xf2, + 0x11, 0xef, 0x1b, 0xef, 0x4c, 0xec, 0x53, 0xec, 0xc4, 0xe9, 0xcf, 0xe9, + 0x92, 0xe7, 0x99, 0xe7, 0xb5, 0xe5, 0xbf, 0xe5, 0x3e, 0xe4, 0x45, 0xe4, + 0x2e, 0xe3, 0x39, 0xe3, 0x8a, 0xe2, 0x93, 0xe2, 0x57, 0xe2, 0x60, 0xe2, + 0x92, 0xe2, 0x9b, 0xe2, 0x3a, 0xe3, 0x42, 0xe3, 0x48, 0xe4, 0x52, 0xe4, + 0xb7, 0xe5, 0xc1, 0xe5, 0x7f, 0xe7, 0x87, 0xe7, 0x91, 0xe9, 0x9b, 0xe9, + 0xe8, 0xeb, 0xf0, 0xeb, 0x72, 0xee, 0x7a, 0xee, 0x26, 0xf1, 0x2f, 0xf1, + 0xf5, 0xf3, 0xfe, 0xf3, 0xd1, 0xf6, 0xd8, 0xf6, 0xaa, 0xf9, 0xb2, 0xf9, + 0x75, 0xfc, 0x7d, 0xfc, 0x1d, 0xff, 0x24, 0xff, 0x9c, 0x01, 0xa6, 0x01, + 0xdd, 0x03, 0xe4, 0x03, 0xd8, 0x05, 0xe2, 0x05, 0x81, 0x07, 0x89, 0x07, + 0xcf, 0x08, 0xd5, 0x08, 0xbb, 0x09, 0xc6, 0x09, 0x40, 0x0a, 0x46, 0x0a, + 0x5f, 0x0a, 0x69, 0x0a, 0x12, 0x0a, 0x19, 0x0a, 0x63, 0x09, 0x6c, 0x09, + 0x51, 0x08, 0x58, 0x08, 0xe6, 0x06, 0xef, 0x06, 0x2b, 0x05, 0x32, 0x05, + 0x23, 0x03, 0x2b, 0x03, 0xdf, 0x00, 0xe6, 0x00, 0x67, 0xfe, 0x70, 0xfe, + 0xc4, 0xfb, 0xcc, 0xfb, 0x08, 0xf9, 0x10, 0xf9, 0x38, 0xf6, 0x3e, 0xf6, + 0x63, 0xf3, 0x6d, 0xf3, 0x97, 0xf0, 0x9d, 0xf0, 0xda, 0xed, 0xe5, 0xed, + 0x43, 0xeb, 0x4a, 0xeb, 0xd5, 0xe8, 0xdd, 0xe8, 0x9f, 0xe6, 0xa9, 0xe6, + 0xb6, 0xe4, 0xbb, 0xe4, 0x11, 0xe3, 0x1c, 0xe3, 0xd1, 0xe1, 0xd8, 0xe1, + 0xef, 0xe0, 0xf7, 0xe0, 0x74, 0xe0, 0x7e, 0xe0, 0x6e, 0xe0, 0x74, 0xe0, + 0xcf, 0xe0, 0xd9, 0xe0, 0xa6, 0xe1, 0xad, 0xe1, 0xe9, 0xe2, 0xf3, 0xe2, + 0x91, 0xe4, 0x99, 0xe4, 0xa0, 0xe6, 0xa8, 0xe6, 0xfd, 0xe8, 0x07, 0xe9, + 0xae, 0xeb, 0xb4, 0xeb, 0x97, 0xee, 0xa1, 0xee, 0xb9, 0xf1, 0xbe, 0xf1, + 0xf8, 0xf4, 0x01, 0xf5, 0x51, 0xf8, 0x5a, 0xf8, 0xaf, 0xfb, 0xb7, 0xfb, + 0x08, 0xff, 0x10, 0xff, 0x4d, 0x02, 0x57, 0x02, 0x6e, 0x05, 0x73, 0x05, + 0x5f, 0x08, 0x69, 0x08, 0x12, 0x0b, 0x19, 0x0b, 0x7e, 0x0d, 0x87, 0x0d, + 0x95, 0x0f, 0x9c, 0x0f, 0x4f, 0x11, 0x57, 0x11, 0xa8, 0x12, 0xb0, 0x12, + 0x97, 0x13, 0xa0, 0x13, 0x1d, 0x14, 0x24, 0x14, 0x36, 0x14, 0x3f, 0x14, + 0xe9, 0x13, 0xf1, 0x13, 0x37, 0x13, 0x3f, 0x13, 0x24, 0x12, 0x2b, 0x12, + 0xbd, 0x10, 0xc5, 0x10, 0x06, 0x0f, 0x0b, 0x0f, 0x0a, 0x0d, 0x15, 0x0d, + 0xd5, 0x0a, 0xda, 0x0a, 0x71, 0x08, 0x7a, 0x08, 0xef, 0x05, 0xf7, 0x05, + 0x53, 0x03, 0x5b, 0x03, 0xb5, 0x00, 0xbd, 0x00, 0x18, 0xfe, 0x20, 0xfe, + 0x94, 0xfb, 0x9c, 0xfb, 0x30, 0xf9, 0x37, 0xf9, 0xfa, 0xf6, 0x04, 0xf7, + 0x04, 0xf5, 0x08, 0xf5, 0x50, 0xf3, 0x5c, 0xf3, 0xf9, 0xf1, 0xff, 0xf1, + 0x00, 0xf1, 0x09, 0xf1, 0x69, 0xf0, 0x72, 0xf0, 0x42, 0xf0, 0x48, 0xf0, + 0x7f, 0xf0, 0x8b, 0xf0, 0x30, 0xf1, 0x36, 0xf1, 0x43, 0xf2, 0x4b, 0xf2, + 0xbd, 0xf3, 0xc5, 0xf3, 0x92, 0xf5, 0x98, 0xf5, 0xb9, 0xf7, 0xc0, 0xf7, + 0x27, 0xfa, 0x2e, 0xfa, 0xd3, 0xfc, 0xda, 0xfc, 0xb2, 0xff, 0xb9, 0xff, + 0xb3, 0x02, 0xb9, 0x02, 0xd3, 0x05, 0xda, 0x05, 0xf8, 0x08, 0x00, 0x09, + 0x26, 0x0c, 0x29, 0x0c, 0x3e, 0x0f, 0x46, 0x0f, 0x42, 0x12, 0x48, 0x12, + 0x1d, 0x15, 0x25, 0x15, 0xc8, 0x17, 0xce, 0x17, 0x33, 0x1a, 0x39, 0x1a, + 0x54, 0x1c, 0x5c, 0x1c, 0x22, 0x1e, 0x28, 0x1e, 0x92, 0x1f, 0x9b, 0x1f, + 0x9e, 0x20, 0xa4, 0x20, 0x3f, 0x21, 0x45, 0x21, 0x73, 0x21, 0x7b, 0x21, + 0x38, 0x21, 0x3e, 0x21, 0x8e, 0x20, 0x96, 0x20, 0x7b, 0x1f, 0x82, 0x1f, + 0xff, 0x1d, 0x07, 0x1e, 0x27, 0x1c, 0x2f, 0x1c, 0xfd, 0x19, 0x07, 0x1a, + 0x88, 0x17, 0x8e, 0x17, 0xd9, 0x14, 0xe0, 0x14, 0xf8, 0x11, 0x00, 0x12, + 0xf6, 0x0e, 0xff, 0x0e, 0xe2, 0x0b, 0xea, 0x0b, 0xc7, 0x08, 0xce, 0x08, + 0xb9, 0x05, 0xc0, 0x05, 0xbe, 0x02, 0xc5, 0x02, 0xed, 0xff, 0xf4, 0xff, + 0x50, 0xfd, 0x57, 0xfd, 0xf4, 0xfa, 0xfa, 0xfa, 0xe2, 0xf8, 0xeb, 0xf8, + 0x25, 0xf7, 0x2d, 0xf7, 0xc8, 0xf5, 0xd1, 0xf5, 0xcd, 0xf4, 0xd3, 0xf4, + 0x34, 0xf4, 0x3c, 0xf4, 0x07, 0xf4, 0x0e, 0xf4, 0x3c, 0xf4, 0x44, 0xf4, + 0xd6, 0xf4, 0xdd, 0xf4, 0xce, 0xf5, 0xd5, 0xf5, 0x1b, 0xf7, 0x21, 0xf7, + 0xba, 0xf8, 0xc1, 0xf8, 0x9b, 0xfa, 0xa1, 0xfa, 0xb9, 0xfc, 0xc1, 0xfc, + 0x09, 0xff, 0x0d, 0xff, 0x7b, 0x01, 0x82, 0x01, 0x0a, 0x04, 0x10, 0x04, + 0xa5, 0x06, 0xac, 0x06, 0x43, 0x09, 0x49, 0x09, 0xd4, 0x0b, 0xdb, 0x0b, + 0x4e, 0x0e, 0x55, 0x0e, 0xa0, 0x10, 0xa9, 0x10, 0xc2, 0x12, 0xca, 0x12, + 0xa5, 0x14, 0xab, 0x14, 0x3b, 0x16, 0x43, 0x16, 0x7d, 0x17, 0x84, 0x17, + 0x63, 0x18, 0x69, 0x18, 0xdf, 0x18, 0xe7, 0x18, 0xf2, 0x18, 0xf6, 0x18, + 0x94, 0x18, 0x99, 0x18, 0xc2, 0x17, 0xcc, 0x17, 0x8c, 0x16, 0x90, 0x16, + 0xe7, 0x14, 0xf0, 0x14, 0xe6, 0x12, 0xee, 0x12, 0x91, 0x10, 0x97, 0x10, + 0xec, 0x0d, 0xf3, 0x0d, 0x0b, 0x0b, 0x12, 0x0b, 0xf3, 0x07, 0xf9, 0x07, + 0xb7, 0x04, 0xbf, 0x04, 0x63, 0x01, 0x69, 0x01, 0x00, 0xfe, 0x06, 0xfe, + 0xa4, 0xfa, 0xac, 0xfa, 0x54, 0xf7, 0x57, 0xf7, 0x21, 0xf4, 0x2b, 0xf4, + 0x1c, 0xf1, 0x20, 0xf1, 0x49, 0xee, 0x51, 0xee, 0xbd, 0xeb, 0xc3, 0xeb, + 0x7b, 0xe9, 0x81, 0xe9, 0x93, 0xe7, 0x99, 0xe7, 0x07, 0xe6, 0x0f, 0xe6, + 0xe5, 0xe4, 0xea, 0xe4, 0x2c, 0xe4, 0x33, 0xe4, 0xe1, 0xe3, 0xe7, 0xe3, + 0x02, 0xe4, 0x09, 0xe4, 0x90, 0xe4, 0x95, 0xe4, 0x84, 0xe5, 0x8a, 0xe5, + 0xd5, 0xe6, 0xdb, 0xe6, 0x81, 0xe8, 0x87, 0xe8, 0x76, 0xea, 0x7d, 0xea, + 0xb2, 0xec, 0xb8, 0xec, 0x23, 0xef, 0x2a, 0xef, 0xbf, 0xf1, 0xc5, 0xf1, + 0x77, 0xf4, 0x7d, 0xf4, 0x3e, 0xf7, 0x45, 0xf7, 0x06, 0xfa, 0x0a, 0xfa, + 0xc0, 0xfc, 0xc7, 0xfc, 0x5f, 0xff, 0x62, 0xff, 0xd2, 0x01, 0xdb, 0x01, + 0x0f, 0x04, 0x13, 0x04, 0x07, 0x06, 0x0e, 0x06, 0xae, 0x07, 0xb3, 0x07, + 0xfe, 0x08, 0x05, 0x09, 0xec, 0x09, 0xf1, 0x09, 0x75, 0x0a, 0x7e, 0x0a, + 0x99, 0x0a, 0x9f, 0x0a, 0x55, 0x0a, 0x5a, 0x0a, 0xaa, 0x09, 0xb1, 0x09, + 0xa0, 0x08, 0xa4, 0x08, 0x3a, 0x07, 0x40, 0x07, 0x80, 0x05, 0x87, 0x05, + 0x7d, 0x03, 0x82, 0x03, 0x3c, 0x01, 0x43, 0x01, 0xc3, 0xfe, 0xc7, 0xfe, + 0x20, 0xfc, 0x28, 0xfc, 0x60, 0xf9, 0x65, 0xf9, 0x8a, 0xf6, 0x92, 0xf6, + 0xb3, 0xf3, 0xb9, 0xf3, 0xda, 0xf0, 0xdf, 0xf0, 0x18, 0xee, 0x1f, 0xee, + 0x70, 0xeb, 0x77, 0xeb, 0xf7, 0xe8, 0xfd, 0xe8, 0xb2, 0xe6, 0xb8, 0xe6, + 0xae, 0xe4, 0xb5, 0xe4, 0xfc, 0xe2, 0x02, 0xe3, 0x9e, 0xe1, 0xa4, 0xe1, + 0xa5, 0xe0, 0xa9, 0xe0, 0x0e, 0xe0, 0x13, 0xe0, 0xe4, 0xdf, 0xeb, 0xdf, + 0x2a, 0xe0, 0x30, 0xe0, 0xe0, 0xe0, 0xe5, 0xe0, 0x03, 0xe2, 0x07, 0xe2, + 0x8b, 0xe3, 0x90, 0xe3, 0x79, 0xe5, 0x7f, 0xe5, 0xbc, 0xe7, 0xc1, 0xe7, + 0x4e, 0xea, 0x53, 0xea, 0x21, 0xed, 0x25, 0xed, 0x29, 0xf0, 0x2e, 0xf0, + 0x58, 0xf3, 0x5c, 0xf3, 0x9f, 0xf6, 0xa4, 0xf6, 0xf1, 0xf9, 0xf5, 0xf9, + 0x40, 0xfd, 0x45, 0xfd, 0x7b, 0x00, 0x81, 0x00, 0x9a, 0x03, 0x9d, 0x03, + 0x88, 0x06, 0x8d, 0x06, 0x3e, 0x09, 0x43, 0x09, 0xaf, 0x0b, 0xb1, 0x0b, + 0xc9, 0x0d, 0xcf, 0x0d, 0x8d, 0x0f, 0x92, 0x0f, 0xf0, 0x10, 0xf3, 0x10, + 0xec, 0x11, 0xf1, 0x11, 0x7f, 0x12, 0x83, 0x12, 0xa8, 0x12, 0xad, 0x12, + 0x69, 0x12, 0x6d, 0x12, 0xc8, 0x11, 0xcd, 0x11, 0xc7, 0x10, 0xce, 0x10, + 0x6f, 0x0f, 0x73, 0x0f, 0xc6, 0x0d, 0xcc, 0x0d, 0xdc, 0x0b, 0xe0, 0x0b, + 0xb2, 0x09, 0xb9, 0x09, 0x5d, 0x07, 0x62, 0x07, 0xe3, 0x04, 0xe8, 0x04, + 0x54, 0x02, 0x58, 0x02, 0xb9, 0xff, 0xbe, 0xff, 0x24, 0xfd, 0x29, 0xfd, + 0x9f, 0xfa, 0xa4, 0xfa, 0x39, 0xf8, 0x3f, 0xf8, 0x03, 0xf6, 0x09, 0xf6, + 0x04, 0xf4, 0x08, 0xf4, 0x4b, 0xf2, 0x51, 0xf2, 0xe5, 0xf0, 0xe9, 0xf0, + 0xdd, 0xef, 0xe1, 0xef, 0x38, 0xef, 0x3d, 0xef, 0xfd, 0xee, 0x03, 0xef, + 0x31, 0xef, 0x34, 0xef, 0xcb, 0xef, 0xd1, 0xef, 0xd5, 0xf0, 0xda, 0xf0, + 0x42, 0xf2, 0x46, 0xf2, 0x09, 0xf4, 0x0f, 0xf4, 0x2c, 0xf6, 0x2e, 0xf6, + 0x93, 0xf8, 0x99, 0xf8, 0x40, 0xfb, 0x44, 0xfb, 0x1a, 0xfe, 0x20, 0xfe, + 0x24, 0x01, 0x28, 0x01, 0x47, 0x04, 0x4d, 0x04, 0x77, 0x07, 0x7d, 0x07, + 0xad, 0x0a, 0xb2, 0x0a, 0xd4, 0x0d, 0xd8, 0x0d, 0xe8, 0x10, 0xec, 0x10, + 0xd6, 0x13, 0xdb, 0x13, 0x92, 0x16, 0x96, 0x16, 0x17, 0x19, 0x1b, 0x19, + 0x4d, 0x1b, 0x51, 0x1b, 0x35, 0x1d, 0x3a, 0x1d, 0xc1, 0x1e, 0xc3, 0x1e, + 0xe7, 0x1f, 0xee, 0x1f, 0xa9, 0x20, 0xab, 0x20, 0xf8, 0x20, 0xfe, 0x20, + 0xdc, 0x20, 0xdf, 0x20, 0x4f, 0x20, 0x54, 0x20, 0x59, 0x1f, 0x5e, 0x1f, + 0xfb, 0x1d, 0xfd, 0x1d, 0x3f, 0x1c, 0x44, 0x1c, 0x2b, 0x1a, 0x30, 0x1a, + 0xd1, 0x17, 0xd4, 0x17, 0x35, 0x15, 0x3a, 0x15, 0x68, 0x12, 0x6a, 0x12, + 0x7b, 0x0f, 0x7d, 0x0f, 0x71, 0x0c, 0x78, 0x0c, 0x65, 0x09, 0x66, 0x09, + 0x5e, 0x06, 0x64, 0x06, 0x6b, 0x03, 0x6e, 0x03, 0xa1, 0x00, 0xa4, 0x00, + 0x06, 0xfe, 0x0b, 0xfe, 0xa9, 0xfb, 0xac, 0xfb, 0x98, 0xf9, 0x9d, 0xf9, + 0xd9, 0xf7, 0xdc, 0xf7, 0x7a, 0xf6, 0x7c, 0xf6, 0x78, 0xf5, 0x7e, 0xf5, + 0xe1, 0xf4, 0xe3, 0xf4, 0xab, 0xf4, 0xaf, 0xf4, 0xe0, 0xf4, 0xe4, 0xf4, + 0x74, 0xf5, 0x78, 0xf5, 0x6a, 0xf6, 0x6f, 0xf6, 0xb7, 0xf7, 0xba, 0xf7, + 0x53, 0xf9, 0x57, 0xf9, 0x33, 0xfb, 0x39, 0xfb, 0x56, 0xfd, 0x57, 0xfd, + 0xa3, 0xff, 0xa9, 0xff, 0x20, 0x02, 0x21, 0x02, 0xae, 0x04, 0xb4, 0x04, + 0x52, 0x07, 0x55, 0x07, 0xf8, 0x09, 0xfc, 0x09, 0x92, 0x0c, 0x95, 0x0c, + 0x17, 0x0f, 0x1d, 0x0f, 0x78, 0x11, 0x79, 0x11, 0xa8, 0x13, 0xae, 0x13, + 0x9d, 0x15, 0x9f, 0x15, 0x44, 0x17, 0x48, 0x17, 0x9b, 0x18, 0xa0, 0x18, + 0x95, 0x19, 0x99, 0x19, 0x29, 0x1a, 0x2b, 0x1a, 0x4e, 0x1a, 0x55, 0x1a, + 0x0b, 0x1a, 0x0b, 0x1a, 0x51, 0x19, 0x58, 0x19, 0x2d, 0x18, 0x2f, 0x18, + 0x9e, 0x16, 0xa2, 0x16, 0xad, 0x14, 0xb0, 0x14, 0x64, 0x12, 0x67, 0x12, + 0xca, 0x0f, 0xcd, 0x0f, 0xef, 0x0c, 0xf3, 0x0c, 0xdb, 0x09, 0xde, 0x09, + 0xa1, 0x06, 0xa5, 0x06, 0x49, 0x03, 0x4c, 0x03, 0xe6, 0xff, 0xeb, 0xff, + 0x81, 0xfc, 0x84, 0xfc, 0x28, 0xf9, 0x2f, 0xf9, 0xef, 0xf5, 0xf2, 0xf5, + 0xd9, 0xf2, 0xdf, 0xf2, 0xff, 0xef, 0x01, 0xf0, 0x60, 0xed, 0x66, 0xed, + 0x12, 0xeb, 0x14, 0xeb, 0x18, 0xe9, 0x1e, 0xe9, 0x7c, 0xe7, 0x81, 0xe7, + 0x4a, 0xe6, 0x4f, 0xe6, 0x82, 0xe5, 0x86, 0xe5, 0x26, 0xe5, 0x2a, 0xe5, + 0x39, 0xe5, 0x3c, 0xe5, 0xb5, 0xe5, 0xb9, 0xe5, 0x98, 0xe6, 0x9e, 0xe6, + 0xdd, 0xe7, 0xdf, 0xe7, 0x77, 0xe9, 0x7a, 0xe9, 0x61, 0xeb, 0x65, 0xeb, + 0x90, 0xed, 0x92, 0xed, 0xf2, 0xef, 0xf8, 0xef, 0x84, 0xf2, 0x86, 0xf2, + 0x33, 0xf5, 0x36, 0xf5, 0xf0, 0xf7, 0xf6, 0xf7, 0xb3, 0xfa, 0xb6, 0xfa, + 0x69, 0xfd, 0x6f, 0xfd, 0x05, 0x00, 0x06, 0x00, 0x79, 0x02, 0x7d, 0x02, + 0xb3, 0x04, 0xb8, 0x04, 0xae, 0x06, 0xb2, 0x06, 0x57, 0x08, 0x5a, 0x08, + 0xa8, 0x09, 0xac, 0x09, 0x9c, 0x0a, 0x9e, 0x0a, 0x22, 0x0b, 0x28, 0x0b, + 0x48, 0x0b, 0x4a, 0x0b, 0x00, 0x0b, 0x04, 0x0b, 0x53, 0x0a, 0x57, 0x0a, + 0x44, 0x09, 0x48, 0x09, 0xd5, 0x07, 0xda, 0x07, 0x16, 0x06, 0x1b, 0x06, + 0x09, 0x04, 0x0d, 0x04, 0xbb, 0x01, 0xbe, 0x01, 0x36, 0xff, 0x3b, 0xff, + 0x88, 0xfc, 0x89, 0xfc, 0xb5, 0xf9, 0xba, 0xf9, 0xd2, 0xf6, 0xd6, 0xf6, + 0xe9, 0xf3, 0xec, 0xf3, 0x00, 0xf1, 0x04, 0xf1, 0x28, 0xee, 0x2c, 0xee, + 0x72, 0xeb, 0x74, 0xeb, 0xe1, 0xe8, 0xe7, 0xe8, 0x8a, 0xe6, 0x8c, 0xe6, + 0x74, 0xe4, 0x79, 0xe4, 0xaa, 0xe2, 0xac, 0xe2, 0x3b, 0xe1, 0x40, 0xe1, + 0x27, 0xe0, 0x29, 0xe0, 0x7f, 0xdf, 0x84, 0xdf, 0x43, 0xdf, 0x44, 0xdf, + 0x75, 0xdf, 0x79, 0xdf, 0x16, 0xe0, 0x1a, 0xe0, 0x24, 0xe1, 0x27, 0xe1, + 0x9e, 0xe2, 0xa2, 0xe2, 0x78, 0xe4, 0x7c, 0xe4, 0xac, 0xe6, 0xb1, 0xe6, + 0x32, 0xe9, 0x36, 0xe9, 0xf7, 0xeb, 0xfd, 0xeb, 0xf6, 0xee, 0xf9, 0xee, + 0x1b, 0xf2, 0x20, 0xf2, 0x5c, 0xf5, 0x60, 0xf5, 0xa8, 0xf8, 0xaa, 0xf8, + 0xf2, 0xfb, 0xf6, 0xfb, 0x2b, 0xff, 0x30, 0xff, 0x45, 0x02, 0x47, 0x02, + 0x31, 0x05, 0x37, 0x05, 0xe5, 0x07, 0xe8, 0x07, 0x55, 0x0a, 0x58, 0x0a, + 0x6e, 0x0c, 0x74, 0x0c, 0x32, 0x0e, 0x34, 0x0e, 0x93, 0x0f, 0x98, 0x0f, + 0x8f, 0x10, 0x92, 0x10, 0x24, 0x11, 0x29, 0x11, 0x49, 0x11, 0x4e, 0x11, + 0x0f, 0x11, 0x14, 0x11, 0x6b, 0x10, 0x6e, 0x10, 0x6b, 0x0f, 0x70, 0x0f, + 0x15, 0x0e, 0x18, 0x0e, 0x6e, 0x0c, 0x71, 0x0c, 0x82, 0x0a, 0x85, 0x0a, + 0x5a, 0x08, 0x5e, 0x08, 0x07, 0x06, 0x0a, 0x06, 0x8d, 0x03, 0x93, 0x03, + 0x00, 0x01, 0x02, 0x01, 0x64, 0xfe, 0x69, 0xfe, 0xcf, 0xfb, 0xd1, 0xfb, + 0x49, 0xf9, 0x4d, 0xf9, 0xe1, 0xf6, 0xe5, 0xf6, 0xa8, 0xf4, 0xab, 0xf4, + 0xa9, 0xf2, 0xab, 0xf2, 0xe9, 0xf0, 0xf0, 0xf0, 0x85, 0xef, 0x86, 0xef, + 0x72, 0xee, 0x78, 0xee, 0xca, 0xed, 0xce, 0xed, 0x8d, 0xed, 0x91, 0xed, + 0xb7, 0xed, 0xbe, 0xed, 0x58, 0xee, 0x5a, 0xee, 0x5b, 0xef, 0x60, 0xef, + 0xc9, 0xf0, 0xcd, 0xf0, 0x98, 0xf2, 0x9b, 0xf2, 0xb7, 0xf4, 0xbd, 0xf4, + 0x2b, 0xf7, 0x2e, 0xf7, 0xdb, 0xf9, 0xdf, 0xf9, 0xc2, 0xfc, 0xc9, 0xfc, + 0xd5, 0xff, 0xd7, 0xff, 0x01, 0x03, 0x06, 0x03, 0x40, 0x06, 0x43, 0x06, + 0x7f, 0x09, 0x84, 0x09, 0xb9, 0x0c, 0xbb, 0x0c, 0xd6, 0x0f, 0xd9, 0x0f, + 0xd0, 0x12, 0xd5, 0x12, 0x9d, 0x15, 0xa0, 0x15, 0x2c, 0x18, 0x30, 0x18, + 0x75, 0x1a, 0x78, 0x1a, 0x68, 0x1c, 0x6b, 0x1c, 0x02, 0x1e, 0x06, 0x1e, + 0x38, 0x1f, 0x39, 0x1f, 0x04, 0x20, 0x08, 0x20, 0x63, 0x20, 0x67, 0x20, + 0x54, 0x20, 0x56, 0x20, 0xd7, 0x1f, 0xdc, 0x1f, 0xed, 0x1e, 0xf1, 0x1e, + 0x9e, 0x1d, 0xa1, 0x1d, 0xf0, 0x1b, 0xf4, 0x1b, 0xed, 0x19, 0xf0, 0x19, + 0xa0, 0x17, 0xa2, 0x17, 0x11, 0x15, 0x17, 0x15, 0x54, 0x12, 0x57, 0x12, + 0x72, 0x0f, 0x76, 0x0f, 0x77, 0x0c, 0x7c, 0x0c, 0x79, 0x09, 0x7c, 0x09, + 0x7d, 0x06, 0x81, 0x06, 0x98, 0x03, 0x9d, 0x03, 0xd8, 0x00, 0xda, 0x00, + 0x48, 0xfe, 0x4e, 0xfe, 0xf9, 0xfb, 0xfd, 0xfb, 0xf1, 0xf9, 0xf4, 0xf9, + 0x3e, 0xf8, 0x43, 0xf8, 0xe8, 0xf6, 0xe7, 0xf6, 0xf0, 0xf5, 0xf7, 0xf5, + 0x61, 0xf5, 0x64, 0xf5, 0x3b, 0xf5, 0x3c, 0xf5, 0x75, 0xf5, 0x7b, 0xf5, + 0x16, 0xf6, 0x16, 0xf6, 0x14, 0xf7, 0x1a, 0xf7, 0x6a, 0xf8, 0x6d, 0xf8, + 0x11, 0xfa, 0x14, 0xfa, 0xfa, 0xfb, 0x01, 0xfc, 0x23, 0xfe, 0x25, 0xfe, + 0x7b, 0x00, 0x80, 0x00, 0xfb, 0x02, 0xfd, 0x02, 0x94, 0x05, 0x97, 0x05, + 0x3e, 0x08, 0x41, 0x08, 0xea, 0x0a, 0xee, 0x0a, 0x8c, 0x0d, 0x8f, 0x0d, + 0x17, 0x10, 0x1c, 0x10, 0x7f, 0x12, 0x81, 0x12, 0xb5, 0x14, 0xbb, 0x14, + 0xb1, 0x16, 0xb3, 0x16, 0x63, 0x18, 0x67, 0x18, 0xc2, 0x19, 0xc5, 0x19, + 0xc3, 0x1a, 0xc6, 0x1a, 0x60, 0x1b, 0x65, 0x1b, 0x93, 0x1b, 0x95, 0x1b, + 0x59, 0x1b, 0x5c, 0x1b, 0xac, 0x1a, 0xad, 0x1a, 0x92, 0x19, 0x95, 0x19, + 0x0d, 0x18, 0x12, 0x18, 0x27, 0x16, 0x29, 0x16, 0xe7, 0x13, 0xeb, 0x13, + 0x54, 0x11, 0x58, 0x11, 0x83, 0x0e, 0x87, 0x0e, 0x74, 0x0b, 0x79, 0x0b, + 0x3f, 0x08, 0x42, 0x08, 0xee, 0x04, 0xf0, 0x04, 0x89, 0x01, 0x8f, 0x01, + 0x2c, 0xfe, 0x2c, 0xfe, 0xd2, 0xfa, 0xd9, 0xfa, 0x99, 0xf7, 0x9b, 0xf7, + 0x85, 0xf4, 0x89, 0xf4, 0xa5, 0xf1, 0xa9, 0xf1, 0x09, 0xef, 0x0d, 0xef, + 0xb4, 0xec, 0xba, 0xec, 0xbb, 0xea, 0xbc, 0xea, 0x1a, 0xe9, 0x1f, 0xe9, + 0xe5, 0xe7, 0xe6, 0xe7, 0x14, 0xe7, 0x1a, 0xe7, 0xb5, 0xe6, 0xb6, 0xe6, + 0xbd, 0xe6, 0xc1, 0xe6, 0x30, 0xe7, 0x33, 0xe7, 0x0b, 0xe8, 0x0f, 0xe8, + 0x42, 0xe9, 0x44, 0xe9, 0xd1, 0xea, 0xd5, 0xea, 0xb0, 0xec, 0xb3, 0xec, + 0xd0, 0xee, 0xd2, 0xee, 0x28, 0xf1, 0x2b, 0xf1, 0xa9, 0xf3, 0xad, 0xf3, + 0x4a, 0xf6, 0x4f, 0xf6, 0xff, 0xf8, 0xff, 0xf8, 0xaf, 0xfb, 0xb6, 0xfb, + 0x5f, 0xfe, 0x60, 0xfe, 0xe9, 0x00, 0xef, 0x00, 0x57, 0x03, 0x59, 0x03, + 0x87, 0x05, 0x8c, 0x05, 0x7b, 0x07, 0x7e, 0x07, 0x20, 0x09, 0x24, 0x09, + 0x69, 0x0a, 0x6e, 0x0a, 0x57, 0x0b, 0x59, 0x0b, 0xdb, 0x0b, 0xe0, 0x0b, + 0xfa, 0x0b, 0xff, 0x0b, 0xb1, 0x0b, 0xb5, 0x0b, 0xfe, 0x0a, 0x01, 0x0b, + 0xe9, 0x09, 0xed, 0x09, 0x78, 0x08, 0x7b, 0x08, 0xb0, 0x06, 0xb4, 0x06, + 0x9e, 0x04, 0xa1, 0x04, 0x48, 0x02, 0x4b, 0x02, 0xbd, 0xff, 0xc1, 0xff, + 0x03, 0xfd, 0x05, 0xfd, 0x2c, 0xfa, 0x2f, 0xfa, 0x3e, 0xf7, 0x41, 0xf7, + 0x48, 0xf4, 0x4d, 0xf4, 0x59, 0xf1, 0x5b, 0xf1, 0x75, 0xee, 0x7b, 0xee, + 0xb3, 0xeb, 0xb7, 0xeb, 0x19, 0xe9, 0x1c, 0xe9, 0xb2, 0xe6, 0xb6, 0xe6, + 0x91, 0xe4, 0x93, 0xe4, 0xb7, 0xe2, 0xba, 0xe2, 0x36, 0xe1, 0x3a, 0xe1, + 0x12, 0xe0, 0x14, 0xe0, 0x57, 0xdf, 0x5c, 0xdf, 0x06, 0xdf, 0x09, 0xdf, + 0x24, 0xdf, 0x28, 0xdf, 0xaf, 0xdf, 0xb3, 0xdf, 0xa8, 0xe0, 0xa9, 0xe0, + 0x0b, 0xe2, 0x10, 0xe2, 0xd0, 0xe3, 0xd3, 0xe3, 0xee, 0xe5, 0xf3, 0xe5, + 0x5d, 0xe8, 0x5f, 0xe8, 0x0d, 0xeb, 0x13, 0xeb, 0xf9, 0xed, 0xfd, 0xed, + 0x0b, 0xf1, 0x0f, 0xf1, 0x3b, 0xf4, 0x3e, 0xf4, 0x78, 0xf7, 0x7c, 0xf7, + 0xb4, 0xfa, 0xb8, 0xfa, 0xe2, 0xfd, 0xe6, 0xfd, 0xef, 0x00, 0xf4, 0x00, + 0xd4, 0x03, 0xd9, 0x03, 0x81, 0x06, 0x84, 0x06, 0xe8, 0x08, 0xeb, 0x08, + 0x01, 0x0b, 0x04, 0x0b, 0xc0, 0x0c, 0xc3, 0x0c, 0x21, 0x0e, 0x25, 0x0e, + 0x1d, 0x0f, 0x1f, 0x0f, 0xb4, 0x0f, 0xb7, 0x0f, 0xdf, 0x0f, 0xe4, 0x0f, + 0xa5, 0x0f, 0xa9, 0x0f, 0x0a, 0x0f, 0x0d, 0x0f, 0x0f, 0x0e, 0x12, 0x0e, + 0xc0, 0x0c, 0xc4, 0x0c, 0x21, 0x0b, 0x24, 0x0b, 0x3b, 0x09, 0x3e, 0x09, + 0x20, 0x07, 0x22, 0x07, 0xd0, 0x04, 0xd3, 0x04, 0x5f, 0x02, 0x64, 0x02, + 0xd7, 0xff, 0xd9, 0xff, 0x43, 0xfd, 0x46, 0xfd, 0xb0, 0xfa, 0xb4, 0xfa, + 0x2f, 0xf8, 0x32, 0xf8, 0xc7, 0xf5, 0xca, 0xf5, 0x8e, 0xf3, 0x91, 0xf3, + 0x89, 0xf1, 0x8d, 0xf1, 0xc8, 0xef, 0xcc, 0xef, 0x57, 0xee, 0x5b, 0xee, + 0x3d, 0xed, 0x40, 0xed, 0x88, 0xec, 0x8c, 0xec, 0x3e, 0xec, 0x40, 0xec, + 0x5d, 0xec, 0x61, 0xec, 0xee, 0xec, 0xf0, 0xec, 0xe3, 0xed, 0xe7, 0xed, + 0x48, 0xef, 0x4a, 0xef, 0x06, 0xf1, 0x0c, 0xf1, 0x23, 0xf3, 0x25, 0xf3, + 0x8c, 0xf5, 0x90, 0xf5, 0x37, 0xf8, 0x3a, 0xf8, 0x1b, 0xfb, 0x20, 0xfb, + 0x2b, 0xfe, 0x2d, 0xfe, 0x59, 0x01, 0x5f, 0x01, 0x9a, 0x04, 0x9d, 0x04, + 0xde, 0x07, 0xe4, 0x07, 0x1c, 0x0b, 0x21, 0x0b, 0x46, 0x0e, 0x4a, 0x0e, + 0x4c, 0x11, 0x50, 0x11, 0x23, 0x14, 0x27, 0x14, 0xc3, 0x16, 0xc8, 0x16, + 0x19, 0x19, 0x1d, 0x19, 0x23, 0x1b, 0x26, 0x1b, 0xcd, 0x1c, 0xd2, 0x1c, + 0x1a, 0x1e, 0x1d, 0x1e, 0xfd, 0x1e, 0x04, 0x1f, 0x75, 0x1f, 0x77, 0x1f, + 0x80, 0x1f, 0x87, 0x1f, 0x1e, 0x1f, 0x1f, 0x1f, 0x4d, 0x1e, 0x53, 0x1e, + 0x19, 0x1d, 0x1f, 0x1d, 0x87, 0x1b, 0x8a, 0x1b, 0x9f, 0x19, 0xa5, 0x19, + 0x6b, 0x17, 0x6d, 0x17, 0xf4, 0x14, 0xfc, 0x14, 0x50, 0x12, 0x52, 0x12, + 0x82, 0x0f, 0x86, 0x0f, 0x9e, 0x0c, 0xa1, 0x0c, 0xab, 0x09, 0xaf, 0x09, + 0xc4, 0x06, 0xc7, 0x06, 0xe7, 0x03, 0xec, 0x03, 0x31, 0x01, 0x35, 0x01, + 0xab, 0xfe, 0xae, 0xfe, 0x5c, 0xfc, 0x62, 0xfc, 0x5b, 0xfa, 0x5d, 0xfa, + 0xa6, 0xf8, 0xab, 0xf8, 0x50, 0xf7, 0x52, 0xf7, 0x59, 0xf6, 0x5d, 0xf6, + 0xc5, 0xf5, 0xc9, 0xf5, 0x9b, 0xf5, 0x9e, 0xf5, 0xd2, 0xf5, 0xd6, 0xf5, + 0x6e, 0xf6, 0x71, 0xf6, 0x6b, 0xf7, 0x6e, 0xf7, 0xba, 0xf8, 0xbe, 0xf8, + 0x5f, 0xfa, 0x62, 0xfa, 0x46, 0xfc, 0x49, 0xfc, 0x6c, 0xfe, 0x70, 0xfe, + 0xc6, 0x00, 0xc8, 0x00, 0x44, 0x03, 0x49, 0x03, 0xe3, 0x05, 0xe5, 0x05, + 0x8d, 0x08, 0x92, 0x08, 0x3d, 0x0b, 0x41, 0x0b, 0xe9, 0x0d, 0xeb, 0x0d, + 0x7a, 0x10, 0x7e, 0x10, 0xee, 0x12, 0xf1, 0x12, 0x33, 0x15, 0x36, 0x15, + 0x3b, 0x17, 0x40, 0x17, 0x04, 0x19, 0x06, 0x19, 0x73, 0x1a, 0x76, 0x1a, + 0x8c, 0x1b, 0x90, 0x1b, 0x43, 0x1c, 0x46, 0x1c, 0x8f, 0x1c, 0x93, 0x1c, + 0x70, 0x1c, 0x75, 0x1c, 0xe2, 0x1b, 0xe4, 0x1b, 0xe2, 0x1a, 0xe5, 0x1a, + 0x7b, 0x19, 0x7f, 0x19, 0xae, 0x17, 0xaf, 0x17, 0x85, 0x15, 0x8a, 0x15, + 0x09, 0x13, 0x0c, 0x13, 0x4a, 0x10, 0x4d, 0x10, 0x4c, 0x0d, 0x50, 0x0d, + 0x25, 0x0a, 0x27, 0x0a, 0xdd, 0x06, 0xdf, 0x06, 0x80, 0x03, 0x83, 0x03, + 0x26, 0x00, 0x27, 0x00, 0xce, 0xfc, 0xd2, 0xfc, 0x93, 0xf9, 0x95, 0xf9, + 0x7b, 0xf6, 0x80, 0xf6, 0x95, 0xf3, 0x97, 0xf3, 0xf0, 0xf0, 0xf3, 0xf0, + 0x90, 0xee, 0x92, 0xee, 0x88, 0xec, 0x8b, 0xec, 0xdb, 0xea, 0xde, 0xea, + 0x92, 0xe9, 0x94, 0xe9, 0xb3, 0xe8, 0xb7, 0xe8, 0x3b, 0xe8, 0x3d, 0xe8, + 0x34, 0xe8, 0x37, 0xe8, 0x92, 0xe8, 0x94, 0xe8, 0x56, 0xe9, 0x5a, 0xe9, + 0x7b, 0xea, 0x7d, 0xea, 0xf1, 0xeb, 0xf5, 0xeb, 0xbe, 0xed, 0xc1, 0xed, + 0xc7, 0xef, 0xca, 0xef, 0x0e, 0xf2, 0x14, 0xf2, 0x82, 0xf4, 0x82, 0xf4, + 0x11, 0xf7, 0x15, 0xf7, 0xb9, 0xf9, 0xbc, 0xf9, 0x63, 0xfc, 0x64, 0xfc, + 0x05, 0xff, 0x0a, 0xff, 0x90, 0x01, 0x92, 0x01, 0xf9, 0x03, 0xfc, 0x03, + 0x2e, 0x06, 0x31, 0x06, 0x22, 0x08, 0x26, 0x08, 0xcd, 0x09, 0xd0, 0x09, + 0x1f, 0x0b, 0x23, 0x0b, 0x14, 0x0c, 0x16, 0x0c, 0xa5, 0x0c, 0xa8, 0x0c, + 0xce, 0x0c, 0xd0, 0x0c, 0x8d, 0x0c, 0x8e, 0x0c, 0xe3, 0x0b, 0xe6, 0x0b, + 0xd5, 0x0a, 0xd7, 0x0a, 0x6a, 0x09, 0x6d, 0x09, 0xa6, 0x07, 0xa9, 0x07, + 0x95, 0x05, 0x96, 0x05, 0x3e, 0x03, 0x42, 0x03, 0xae, 0x00, 0xb0, 0x00, + 0xf2, 0xfd, 0xf3, 0xfd, 0x11, 0xfb, 0x15, 0xfb, 0x1c, 0xf8, 0x1c, 0xf8, + 0x1b, 0xf5, 0x1f, 0xf5, 0x1f, 0xf2, 0x20, 0xf2, 0x2d, 0xef, 0x32, 0xef, + 0x59, 0xec, 0x5a, 0xec, 0xab, 0xe9, 0xaf, 0xe9, 0x32, 0xe7, 0x35, 0xe7, + 0xf8, 0xe4, 0xfa, 0xe4, 0x09, 0xe3, 0x0b, 0xe3, 0x6c, 0xe1, 0x6f, 0xe1, + 0x31, 0xe0, 0x35, 0xe0, 0x58, 0xdf, 0x5a, 0xdf, 0xec, 0xde, 0xee, 0xde, + 0xea, 0xde, 0xee, 0xde, 0x57, 0xdf, 0x59, 0xdf, 0x33, 0xe0, 0x37, 0xe0, + 0x77, 0xe1, 0x7a, 0xe1, 0x20, 0xe3, 0x22, 0xe3, 0x26, 0xe5, 0x28, 0xe5, + 0x78, 0xe7, 0x7b, 0xe7, 0x15, 0xea, 0x17, 0xea, 0xe9, 0xec, 0xed, 0xec, + 0xeb, 0xef, 0xed, 0xef, 0x09, 0xf3, 0x0e, 0xf3, 0x3b, 0xf6, 0x3b, 0xf6, + 0x6a, 0xf9, 0x6e, 0xf9, 0x93, 0xfc, 0x94, 0xfc, 0x97, 0xff, 0x9b, 0xff, + 0x7b, 0x02, 0x7d, 0x02, 0x23, 0x05, 0x26, 0x05, 0x8b, 0x07, 0x8f, 0x07, + 0xa5, 0x09, 0xa9, 0x09, 0x69, 0x0b, 0x6b, 0x0b, 0xce, 0x0c, 0xd1, 0x0c, + 0xd1, 0x0d, 0xd4, 0x0d, 0x6f, 0x0e, 0x71, 0x0e, 0xa0, 0x0e, 0xa4, 0x0e, + 0x72, 0x0e, 0x73, 0x0e, 0xd8, 0x0d, 0xdb, 0x0d, 0xea, 0x0c, 0xec, 0x0c, + 0xa0, 0x0b, 0xa2, 0x0b, 0x07, 0x0a, 0x0c, 0x0a, 0x2b, 0x08, 0x2d, 0x08, + 0x10, 0x06, 0x15, 0x06, 0xca, 0x03, 0xca, 0x03, 0x5a, 0x01, 0x5e, 0x01, + 0xd5, 0xfe, 0xd7, 0xfe, 0x41, 0xfc, 0x44, 0xfc, 0xae, 0xf9, 0xb1, 0xf9, + 0x2b, 0xf7, 0x2c, 0xf7, 0xbf, 0xf4, 0xc2, 0xf4, 0x7e, 0xf2, 0x80, 0xf2, + 0x72, 0xf0, 0x74, 0xf0, 0xa4, 0xee, 0xa7, 0xee, 0x28, 0xed, 0x2a, 0xed, + 0x02, 0xec, 0x02, 0xec, 0x3a, 0xeb, 0x3d, 0xeb, 0xde, 0xea, 0xdf, 0xea, + 0xee, 0xea, 0xf1, 0xea, 0x6b, 0xeb, 0x6e, 0xeb, 0x57, 0xec, 0x57, 0xec, + 0xa9, 0xed, 0xad, 0xed, 0x60, 0xef, 0x61, 0xef, 0x70, 0xf1, 0x75, 0xf1, + 0xd4, 0xf3, 0xd5, 0xf3, 0x7d, 0xf6, 0x80, 0xf6, 0x5e, 0xf9, 0x61, 0xf9, + 0x70, 0xfc, 0x72, 0xfc, 0xa2, 0xff, 0xa4, 0xff, 0xe9, 0x02, 0xec, 0x02, + 0x35, 0x06, 0x38, 0x06, 0x7f, 0x09, 0x81, 0x09, 0xaf, 0x0c, 0xb4, 0x0c, + 0xc8, 0x0f, 0xc8, 0x0f, 0xae, 0x12, 0xb3, 0x12, 0x5c, 0x15, 0x5d, 0x15, + 0xc7, 0x17, 0xcb, 0x17, 0xdb, 0x19, 0xdf, 0x19, 0xa3, 0x1b, 0xa7, 0x1b, + 0xfe, 0x1c, 0x00, 0x1d, 0xf9, 0x1d, 0xfc, 0x1d, 0x87, 0x1e, 0x89, 0x1e, + 0xa4, 0x1e, 0xa7, 0x1e, 0x59, 0x1e, 0x5b, 0x1e, 0x9c, 0x1d, 0xa0, 0x1d, + 0x81, 0x1c, 0x81, 0x1c, 0xff, 0x1a, 0x03, 0x1b, 0x2b, 0x19, 0x2d, 0x19, + 0x0a, 0x17, 0x0c, 0x17, 0xa6, 0x14, 0xa9, 0x14, 0x12, 0x12, 0x15, 0x12, + 0x51, 0x0f, 0x54, 0x0f, 0x7b, 0x0c, 0x7e, 0x0c, 0x95, 0x09, 0x99, 0x09, + 0xb7, 0x06, 0xb8, 0x06, 0xe4, 0x03, 0xe8, 0x03, 0x36, 0x01, 0x37, 0x01, + 0xb3, 0xfe, 0xb7, 0xfe, 0x6c, 0xfc, 0x6e, 0xfc, 0x6d, 0xfa, 0x6f, 0xfa, + 0xbc, 0xf8, 0xc0, 0xf8, 0x66, 0xf7, 0x67, 0xf7, 0x73, 0xf6, 0x75, 0xf6, + 0xe0, 0xf5, 0xe4, 0xf5, 0xb6, 0xf5, 0xb8, 0xf5, 0xf3, 0xf5, 0xf7, 0xf5, + 0x92, 0xf6, 0x91, 0xf6, 0x93, 0xf7, 0x96, 0xf7, 0xea, 0xf8, 0xea, 0xf8, + 0x93, 0xfa, 0x94, 0xfa, 0x83, 0xfc, 0x86, 0xfc, 0xb2, 0xfe, 0xb2, 0xfe, + 0x14, 0x01, 0x16, 0x01, 0x9b, 0x03, 0x9d, 0x03, 0x46, 0x06, 0x47, 0x06, + 0xf9, 0x08, 0xfa, 0x08, 0xb8, 0x0b, 0xba, 0x0b, 0x6d, 0x0e, 0x6e, 0x0e, + 0x0c, 0x11, 0x0f, 0x11, 0x91, 0x13, 0x93, 0x13, 0xe1, 0x15, 0xe1, 0x15, + 0xff, 0x17, 0x02, 0x18, 0xd2, 0x19, 0xd1, 0x19, 0x56, 0x1b, 0x59, 0x1b, + 0x83, 0x1c, 0x82, 0x1c, 0x46, 0x1d, 0x4a, 0x1d, 0xad, 0x1d, 0xae, 0x1d, + 0x9c, 0x1d, 0x9c, 0x1d, 0x21, 0x1d, 0x24, 0x1d, 0x35, 0x1c, 0x34, 0x1c, + 0xdd, 0x1a, 0xe0, 0x1a, 0x22, 0x19, 0x24, 0x19, 0x06, 0x17, 0x07, 0x17, + 0x9a, 0x14, 0x9c, 0x14, 0xe2, 0x11, 0xe3, 0x11, 0xef, 0x0e, 0xf1, 0x0e, + 0xce, 0x0b, 0xcf, 0x0b, 0x8b, 0x08, 0x8c, 0x08, 0x30, 0x05, 0x32, 0x05, + 0xd5, 0x01, 0xd5, 0x01, 0x7f, 0xfe, 0x80, 0xfe, 0x42, 0xfb, 0x43, 0xfb, + 0x25, 0xf8, 0x27, 0xf8, 0x3d, 0xf5, 0x3f, 0xf5, 0x8f, 0xf2, 0x90, 0xf2, + 0x2b, 0xf0, 0x2d, 0xf0, 0x1d, 0xee, 0x1e, 0xee, 0x65, 0xec, 0x68, 0xec, + 0x1b, 0xeb, 0x1c, 0xeb, 0x30, 0xea, 0x31, 0xea, 0xb5, 0xe9, 0xb8, 0xe9, + 0xa1, 0xe9, 0xa2, 0xe9, 0xf9, 0xe9, 0xf9, 0xe9, 0xb5, 0xea, 0xb5, 0xea, + 0xcd, 0xeb, 0xcf, 0xeb, 0x41, 0xed, 0x43, 0xed, 0x01, 0xef, 0x03, 0xef, + 0x05, 0xf1, 0x06, 0xf1, 0x45, 0xf3, 0x48, 0xf3, 0xb0, 0xf5, 0xb0, 0xf5, + 0x3b, 0xf8, 0x40, 0xf8, 0xdf, 0xfa, 0xde, 0xfa, 0x82, 0xfd, 0x85, 0xfd, + 0x24, 0x00, 0x26, 0x00, 0xab, 0x02, 0xad, 0x02, 0x13, 0x05, 0x16, 0x05, + 0x49, 0x07, 0x4b, 0x07, 0x3e, 0x09, 0x41, 0x09, 0xef, 0x0a, 0xee, 0x0a, + 0x41, 0x0c, 0x44, 0x0c, 0x3b, 0x0d, 0x3b, 0x0d, 0xcb, 0x0d, 0xcf, 0x0d, + 0xf5, 0x0d, 0xf7, 0x0d, 0xb8, 0x0d, 0xb8, 0x0d, 0x07, 0x0d, 0x0a, 0x0d, + 0xfc, 0x0b, 0xfc, 0x0b, 0x88, 0x0a, 0x8b, 0x0a, 0xc0, 0x08, 0xc0, 0x08, + 0xa9, 0x06, 0xab, 0x06, 0x47, 0x04, 0x47, 0x04, 0xad, 0x01, 0xb0, 0x01, + 0xe2, 0xfe, 0xe4, 0xfe, 0xf5, 0xfb, 0xf6, 0xfb, 0xf1, 0xf8, 0xf3, 0xf8, + 0xe0, 0xf5, 0xe1, 0xf5, 0xd2, 0xf2, 0xd4, 0xf2, 0xd0, 0xef, 0xd2, 0xef, + 0xe8, 0xec, 0xe9, 0xec, 0x28, 0xea, 0x2b, 0xea, 0x9b, 0xe7, 0x9b, 0xe7, + 0x4d, 0xe5, 0x50, 0xe5, 0x48, 0xe3, 0x4a, 0xe3, 0x99, 0xe1, 0x9a, 0xe1, + 0x48, 0xe0, 0x4b, 0xe0, 0x5b, 0xdf, 0x5c, 0xdf, 0xda, 0xde, 0xdb, 0xde, + 0xc3, 0xde, 0xc5, 0xde, 0x1c, 0xdf, 0x1e, 0xdf, 0xe5, 0xdf, 0xe5, 0xdf, + 0x17, 0xe1, 0x18, 0xe1, 0xac, 0xe2, 0xae, 0xe2, 0x9f, 0xe4, 0xa1, 0xe4, + 0xe4, 0xe6, 0xe5, 0xe6, 0x6f, 0xe9, 0x71, 0xe9, 0x3a, 0xec, 0x39, 0xec, + 0x2b, 0xef, 0x2f, 0xef, 0x42, 0xf2, 0x41, 0xf2, 0x68, 0xf5, 0x69, 0xf5, + 0x92, 0xf8, 0x92, 0xf8, 0xae, 0xfb, 0xb1, 0xfb, 0xb4, 0xfe, 0xb3, 0xfe, + 0x8f, 0x01, 0x92, 0x01, 0x35, 0x04, 0x35, 0x04, 0x9b, 0x06, 0x9c, 0x06, + 0xb2, 0x08, 0xb2, 0x08, 0x74, 0x0a, 0x75, 0x0a, 0xd7, 0x0b, 0xd8, 0x0b, + 0xd8, 0x0c, 0xd9, 0x0c, 0x75, 0x0d, 0x75, 0x0d, 0xa5, 0x0d, 0xa5, 0x0d, + 0x74, 0x0d, 0x74, 0x0d, 0xdd, 0x0c, 0xdd, 0x0c, 0xe8, 0x0b, 0xe8, 0x0b, + 0xa0, 0x0a, 0xa0, 0x0a, 0x01, 0x09, 0x03, 0x09, 0x25, 0x07, 0x24, 0x07, + 0x06, 0x05, 0x06, 0x05, 0xbb, 0x02, 0xbd, 0x02, 0x4c, 0x00, 0x4a, 0x00, + 0xbe, 0xfd, 0xc1, 0xfd, 0x26, 0xfb, 0x28, 0xfb, 0x8f, 0xf8, 0x8f, 0xf8, + 0x03, 0xf6, 0x05, 0xf6, 0x92, 0xf3, 0x91, 0xf3, 0x46, 0xf1, 0x46, 0xf1, + 0x31, 0xef, 0x32, 0xef, 0x5a, 0xed, 0x5a, 0xed, 0xd0, 0xeb, 0xd2, 0xeb, + 0x9e, 0xea, 0x9c, 0xea, 0xc7, 0xe9, 0xcb, 0xe9, 0x5f, 0xe9, 0x5e, 0xe9, + 0x60, 0xe9, 0x61, 0xe9, 0xd2, 0xe9, 0xd3, 0xe9, 0xb1, 0xea, 0xb1, 0xea, + 0xfa, 0xeb, 0xfb, 0xeb, 0xaa, 0xed, 0xaa, 0xed, 0xb4, 0xef, 0xb5, 0xef, + 0x11, 0xf2, 0x12, 0xf2, 0xb8, 0xf4, 0xbb, 0xf4, 0x9e, 0xf7, 0x9b, 0xf7, + 0xb1, 0xfa, 0xb4, 0xfa, 0xea, 0xfd, 0xea, 0xfd, 0x36, 0x01, 0x36, 0x01, + 0x8e, 0x04, 0x90, 0x04, 0xdf, 0x07, 0xe0, 0x07, 0x1f, 0x0b, 0x21, 0x0b, + 0x40, 0x0e, 0x40, 0x0e, 0x34, 0x11, 0x37, 0x11, 0xf4, 0x13, 0xf4, 0x13, + 0x6c, 0x16, 0x6e, 0x16, 0x97, 0x18, 0x97, 0x18, 0x67, 0x1a, 0x69, 0x1a, + 0xd9, 0x1b, 0xd9, 0x1b, 0xe3, 0x1c, 0xe6, 0x1c, 0x84, 0x1d, 0x83, 0x1d, + 0xb5, 0x1d, 0xb7, 0x1d, 0x76, 0x1d, 0x76, 0x1d, 0xd0, 0x1c, 0xd1, 0x1c, + 0xc1, 0x1b, 0xc2, 0x1b, 0x52, 0x1a, 0x54, 0x1a, 0x8f, 0x18, 0x8e, 0x18, + 0x7b, 0x16, 0x7d, 0x16, 0x2a, 0x14, 0x29, 0x14, 0x9f, 0x11, 0xa0, 0x11, + 0xee, 0x0e, 0xee, 0x0e, 0x21, 0x0c, 0x23, 0x0c, 0x49, 0x09, 0x47, 0x09, + 0x6c, 0x06, 0x6e, 0x06, 0xa5, 0x03, 0xa7, 0x03, 0xf8, 0x00, 0xf9, 0x00, + 0x7d, 0xfe, 0x7e, 0xfe, 0x35, 0xfc, 0x36, 0xfc, 0x3a, 0xfa, 0x3a, 0xfa, + 0x8b, 0xf8, 0x8b, 0xf8, 0x37, 0xf7, 0x39, 0xf7, 0x43, 0xf6, 0x43, 0xf6, + 0xb5, 0xf5, 0xb4, 0xf5, 0x8d, 0xf5, 0x8f, 0xf5, 0xca, 0xf5, 0xc9, 0xf5, + 0x6f, 0xf6, 0x70, 0xf6, 0x71, 0xf7, 0x70, 0xf7, 0xcf, 0xf8, 0xd0, 0xf8, + 0x80, 0xfa, 0x7e, 0xfa, 0x75, 0xfc, 0x76, 0xfc, 0xab, 0xfe, 0xaa, 0xfe, + 0x16, 0x01, 0x15, 0x01, 0xa9, 0x03, 0xab, 0x03, 0x5a, 0x06, 0x5a, 0x06, + 0x1d, 0x09, 0x1c, 0x09, 0xe5, 0x0b, 0xe6, 0x0b, 0xa7, 0x0e, 0xa6, 0x0e, + 0x58, 0x11, 0x57, 0x11, 0xe6, 0x13, 0xe7, 0x13, 0x4c, 0x16, 0x4b, 0x16, + 0x77, 0x18, 0x77, 0x18, 0x5d, 0x1a, 0x5f, 0x1a, 0xf7, 0x1b, 0xf5, 0x1b, + 0x34, 0x1d, 0x36, 0x1d, 0x13, 0x1e, 0x13, 0x1e, 0x88, 0x1e, 0x87, 0x1e, + 0x91, 0x1e, 0x93, 0x1e, 0x29, 0x1e, 0x27, 0x1e, 0x56, 0x1d, 0x56, 0x1d, + 0x13, 0x1c, 0x14, 0x1c, 0x69, 0x1a, 0x6a, 0x1a, 0x64, 0x18, 0x65, 0x18, + 0x06, 0x16, 0x06, 0x16, 0x60, 0x13, 0x5e, 0x13, 0x76, 0x10, 0x77, 0x10, + 0x60, 0x0d, 0x5f, 0x0d, 0x22, 0x0a, 0x24, 0x0a, 0xd2, 0x06, 0xd2, 0x06, + 0x76, 0x03, 0x76, 0x03, 0x24, 0x00, 0x25, 0x00, 0xe6, 0xfc, 0xe8, 0xfc, + 0xcb, 0xf9, 0xcb, 0xf9, 0xdd, 0xf6, 0xdf, 0xf6, 0x2e, 0xf4, 0x2d, 0xf4, + 0xc5, 0xf1, 0xc6, 0xf1, 0xad, 0xef, 0xae, 0xef, 0xf7, 0xed, 0xf6, 0xed, + 0x9d, 0xec, 0x9e, 0xec, 0xae, 0xeb, 0xae, 0xeb, 0x28, 0xeb, 0x29, 0xeb, + 0x0c, 0xeb, 0x09, 0xeb, 0x5a, 0xeb, 0x59, 0xeb, 0x08, 0xec, 0x07, 0xec, + 0x1c, 0xed, 0x1c, 0xed, 0x81, 0xee, 0x81, 0xee, 0x39, 0xf0, 0x38, 0xf0, + 0x34, 0xf2, 0x34, 0xf2, 0x67, 0xf4, 0x67, 0xf4, 0xce, 0xf6, 0xcc, 0xf6, + 0x4f, 0xf9, 0x4f, 0xf9, 0xeb, 0xfb, 0xeb, 0xfb, 0x8b, 0xfe, 0x8b, 0xfe, + 0x27, 0x01, 0x27, 0x01, 0xaf, 0x03, 0xb0, 0x03, 0x15, 0x06, 0x14, 0x06, + 0x4d, 0x08, 0x4d, 0x08, 0x46, 0x0a, 0x44, 0x0a, 0xf7, 0x0b, 0xf8, 0x0b, + 0x55, 0x0d, 0x53, 0x0d, 0x4f, 0x0e, 0x51, 0x0e, 0xeb, 0x0e, 0xea, 0x0e, + 0x1b, 0x0f, 0x1a, 0x0f, 0xdf, 0x0e, 0xe0, 0x0e, 0x3b, 0x0e, 0x39, 0x0e, + 0x2c, 0x0d, 0x2d, 0x0d, 0xbf, 0x0b, 0xbd, 0x0b, 0xf5, 0x09, 0xf4, 0x09, + 0xd8, 0x07, 0xd8, 0x07, 0x76, 0x05, 0x75, 0x05, 0xd4, 0x02, 0xd5, 0x02, + 0x03, 0x00, 0x02, 0x00, 0x0c, 0xfd, 0x0b, 0xfd, 0xfa, 0xf9, 0xfb, 0xf9, + 0xe0, 0xf6, 0xe0, 0xf6, 0xc1, 0xf3, 0xc2, 0xf3, 0xb2, 0xf0, 0xb3, 0xf0, + 0xba, 0xed, 0xb9, 0xed, 0xea, 0xea, 0xeb, 0xea, 0x4c, 0xe8, 0x4c, 0xe8, + 0xe9, 0xe5, 0xe9, 0xe5, 0xd4, 0xe3, 0xd4, 0xe3, 0x0f, 0xe2, 0x10, 0xe2, + 0xa8, 0xe0, 0xa9, 0xe0, 0xa7, 0xdf, 0xa8, 0xdf, 0x0d, 0xdf, 0x0b, 0xdf, + 0xe3, 0xde, 0xe3, 0xde, 0x27, 0xdf, 0x26, 0xdf, 0xd6, 0xdf, 0xd6, 0xdf, + 0xf5, 0xe0, 0xf5, 0xe0, 0x72, 0xe2, 0x71, 0xe2, 0x56, 0xe4, 0x55, 0xe4, + 0x83, 0xe6, 0x83, 0xe6, 0xfe, 0xe8, 0xfc, 0xe8, 0xb4, 0xeb, 0xb3, 0xeb, + 0x96, 0xee, 0x95, 0xee, 0xa1, 0xf1, 0x9f, 0xf1, 0xb5, 0xf4, 0xb6, 0xf4, + 0xd5, 0xf7, 0xd4, 0xf7, 0xe9, 0xfa, 0xe8, 0xfa, 0xe1, 0xfd, 0xe3, 0xfd, + 0xba, 0x00, 0xb7, 0x00, 0x56, 0x03, 0x58, 0x03, 0xb8, 0x05, 0xb7, 0x05, + 0xcb, 0x07, 0xcb, 0x07, 0x88, 0x09, 0x89, 0x09, 0xeb, 0x0a, 0xea, 0x0a, + 0xe8, 0x0b, 0xe9, 0x0b, 0x81, 0x0c, 0x80, 0x0c, 0xb5, 0x0c, 0xb4, 0x0c, + 0x7d, 0x0c, 0x7e, 0x0c, 0xea, 0x0b, 0xe8, 0x0b, 0xf1, 0x0a, 0xf3, 0x0a, + 0xa7, 0x09, 0xa8, 0x09, 0x0d, 0x08, 0x0c, 0x08, 0x29, 0x06, 0x2b, 0x06, + 0x10, 0x04, 0x0d, 0x04, 0xbc, 0x01, 0xbf, 0x01, 0x4f, 0xff, 0x4d, 0xff, + 0xbe, 0xfc, 0xbe, 0xfc, 0x27, 0xfa, 0x26, 0xfa, 0x87, 0xf7, 0x86, 0xf7, + 0xf7, 0xf4, 0xf7, 0xf4, 0x81, 0xf2, 0x80, 0xf2, 0x2c, 0xf0, 0x2d, 0xf0, + 0x11, 0xee, 0x10, 0xee, 0x31, 0xec, 0x32, 0xec, 0x9d, 0xea, 0x9d, 0xea, + 0x60, 0xe9, 0x5e, 0xe9, 0x80, 0xe8, 0x81, 0xe8, 0x08, 0xe8, 0x07, 0xe8, + 0xfa, 0xe7, 0xfb, 0xe7, 0x5e, 0xe8, 0x5d, 0xe8, 0x30, 0xe9, 0x30, 0xe9, + 0x6c, 0xea, 0x6a, 0xea, 0x11, 0xec, 0x14, 0xec, 0x15, 0xee, 0x11, 0xee, + 0x6c, 0xf0, 0x6c, 0xf0, 0x0e, 0xf3, 0x0d, 0xf3, 0xf0, 0xf5, 0xf0, 0xf5, + 0x04, 0xf9, 0x04, 0xf9, 0x3d, 0xfc, 0x3b, 0xfc, 0x8d, 0xff, 0x8d, 0xff, + 0xeb, 0x02, 0xe9, 0x02, 0x40, 0x06, 0x3d, 0x06, 0x87, 0x09, 0x87, 0x09, + 0xb2, 0x0c, 0xaf, 0x0c, 0xb0, 0x0f, 0xb0, 0x0f, 0x78, 0x12, 0x76, 0x12, + 0xfd, 0x14, 0xfb, 0x14, 0x32, 0x17, 0x31, 0x17, 0x11, 0x19, 0x10, 0x19, + 0x8c, 0x1a, 0x8c, 0x1a, 0xa9, 0x1b, 0xa7, 0x1b, 0x51, 0x1c, 0x51, 0x1c, + 0x92, 0x1c, 0x91, 0x1c, 0x61, 0x1c, 0x60, 0x1c, 0xc8, 0x1b, 0xc6, 0x1b, + 0xc8, 0x1a, 0xc7, 0x1a, 0x68, 0x19, 0x66, 0x19, 0xb3, 0x17, 0xb2, 0x17, + 0xaf, 0x15, 0xad, 0x15, 0x6a, 0x13, 0x69, 0x13, 0xec, 0x10, 0xeb, 0x10, + 0x4a, 0x0e, 0x48, 0x0e, 0x87, 0x0b, 0x85, 0x0b, 0xb9, 0x08, 0xb6, 0x08, + 0xea, 0x05, 0xe9, 0x05, 0x2a, 0x03, 0x2a, 0x03, 0x88, 0x00, 0x87, 0x00, + 0x10, 0xfe, 0x0d, 0xfe, 0xd2, 0xfb, 0xd1, 0xfb, 0xd8, 0xf9, 0xd5, 0xf9, + 0x2e, 0xf8, 0x2e, 0xf8, 0xde, 0xf6, 0xdc, 0xf6, 0xee, 0xf5, 0xed, 0xf5, + 0x66, 0xf5, 0x64, 0xf5, 0x43, 0xf5, 0x40, 0xf5, 0x8a, 0xf5, 0x87, 0xf5, + 0x32, 0xf6, 0x31, 0xf6, 0x3d, 0xf7, 0x3b, 0xf7, 0xa3, 0xf8, 0xa2, 0xf8, + 0x5c, 0xfa, 0x5a, 0xfa, 0x5c, 0xfc, 0x5d, 0xfc, 0x9f, 0xfe, 0x9d, 0xfe, + 0x14, 0x01, 0x14, 0x01, 0xb4, 0x03, 0xb4, 0x03, 0x72, 0x06, 0x71, 0x06, + 0x42, 0x09, 0x41, 0x09, 0x1a, 0x0c, 0x19, 0x0c, 0xe7, 0x0e, 0xe5, 0x0e, + 0xa7, 0x11, 0xa7, 0x11, 0x45, 0x14, 0x42, 0x14, 0xb8, 0x16, 0xb6, 0x16, + 0xf3, 0x18, 0xf3, 0x18, 0xeb, 0x1a, 0xe7, 0x1a, 0x91, 0x1c, 0x93, 0x1c, + 0xe2, 0x1d, 0xdf, 0x1d, 0xd0, 0x1e, 0xcf, 0x1e, 0x56, 0x1f, 0x55, 0x1f, + 0x6e, 0x1f, 0x6e, 0x1f, 0x1c, 0x1f, 0x1b, 0x1f, 0x55, 0x1e, 0x53, 0x1e, + 0x24, 0x1d, 0x24, 0x1d, 0x8b, 0x1b, 0x88, 0x1b, 0x91, 0x19, 0x90, 0x19, + 0x41, 0x17, 0x40, 0x17, 0xa5, 0x14, 0xa2, 0x14, 0xc8, 0x11, 0xca, 0x11, + 0xb9, 0x0e, 0xb7, 0x0e, 0x86, 0x0b, 0x84, 0x0b, 0x3a, 0x08, 0x3a, 0x08, + 0xe6, 0x04, 0xe3, 0x04, 0x97, 0x01, 0x96, 0x01, 0x59, 0xfe, 0x5a, 0xfe, + 0x43, 0xfb, 0x3f, 0xfb, 0x53, 0xf8, 0x54, 0xf8, 0xa7, 0xf5, 0xa3, 0xf5, + 0x3d, 0xf3, 0x3b, 0xf3, 0x28, 0xf1, 0x26, 0xf1, 0x6e, 0xef, 0x6c, 0xef, + 0x15, 0xee, 0x13, 0xee, 0x25, 0xed, 0x24, 0xed, 0x9a, 0xec, 0x98, 0xec, + 0x80, 0xec, 0x7e, 0xec, 0xc6, 0xec, 0xc6, 0xec, 0x76, 0xed, 0x73, 0xed, + 0x84, 0xee, 0x83, 0xee, 0xe7, 0xef, 0xe6, 0xef, 0x9b, 0xf1, 0x9a, 0xf1, + 0x92, 0xf3, 0x90, 0xf3, 0xc2, 0xf5, 0xc1, 0xf5, 0x25, 0xf8, 0x24, 0xf8, + 0xa4, 0xfa, 0xa2, 0xfa, 0x3d, 0xfd, 0x3a, 0xfd, 0xdb, 0xff, 0xd9, 0xff, + 0x75, 0x02, 0x75, 0x02, 0xfe, 0x04, 0xfb, 0x04, 0x63, 0x07, 0x5f, 0x07, + 0x99, 0x09, 0x98, 0x09, 0x97, 0x0b, 0x94, 0x0b, 0x48, 0x0d, 0x46, 0x0d, + 0xaa, 0x0e, 0xa8, 0x0e, 0xaa, 0x0f, 0xa7, 0x0f, 0x46, 0x10, 0x44, 0x10, + 0x79, 0x10, 0x78, 0x10, 0x40, 0x10, 0x3b, 0x10, 0x99, 0x0f, 0x9a, 0x0f, + 0x8a, 0x0e, 0x86, 0x0e, 0x1b, 0x0d, 0x1a, 0x0d, 0x4a, 0x0b, 0x49, 0x0b, + 0x2b, 0x09, 0x28, 0x09, 0xbd, 0x06, 0xbd, 0x06, 0x13, 0x04, 0x11, 0x04, + 0x38, 0x01, 0x35, 0x01, 0x34, 0xfe, 0x33, 0xfe, 0x16, 0xfb, 0x16, 0xfb, + 0xed, 0xf7, 0xea, 0xf7, 0xc1, 0xf4, 0xc0, 0xf4, 0x9f, 0xf1, 0x9f, 0xf1, + 0x9c, 0xee, 0x99, 0xee, 0xb8, 0xeb, 0xb7, 0xeb, 0x0a, 0xe9, 0x08, 0xe9, + 0x98, 0xe6, 0x95, 0xe6, 0x6d, 0xe4, 0x6b, 0xe4, 0x99, 0xe2, 0x97, 0xe2, + 0x1f, 0xe1, 0x1d, 0xe1, 0x0c, 0xe0, 0x0b, 0xe0, 0x63, 0xdf, 0x5f, 0xdf, + 0x24, 0xdf, 0x24, 0xdf, 0x57, 0xdf, 0x53, 0xdf, 0xf8, 0xdf, 0xf5, 0xdf, + 0x02, 0xe1, 0x01, 0xe1, 0x75, 0xe2, 0x72, 0xe2, 0x41, 0xe4, 0x3e, 0xe4, + 0x65, 0xe6, 0x61, 0xe6, 0xcf, 0xe8, 0xcc, 0xe8, 0x76, 0xeb, 0x75, 0xeb, + 0x50, 0xee, 0x4e, 0xee, 0x49, 0xf1, 0x46, 0xf1, 0x58, 0xf4, 0x58, 0xf4, + 0x6a, 0xf7, 0x67, 0xf7, 0x76, 0xfa, 0x76, 0xfa, 0x6a, 0xfd, 0x65, 0xfd, + 0x37, 0x00, 0x34, 0x00, 0xd0, 0x02, 0xce, 0x02, 0x29, 0x05, 0x26, 0x05, + 0x37, 0x07, 0x34, 0x07, 0xef, 0x08, 0xed, 0x08, 0x4b, 0x0a, 0x48, 0x0a, + 0x45, 0x0b, 0x42, 0x0b, 0xd6, 0x0b, 0xd6, 0x0b, 0x04, 0x0c, 0x00, 0x0c, + 0xc8, 0x0b, 0xc9, 0x0b, 0x29, 0x0b, 0x27, 0x0b, 0x31, 0x0a, 0x31, 0x0a, + 0xda, 0x08, 0xda, 0x08, 0x3d, 0x07, 0x3a, 0x07, 0x52, 0x05, 0x51, 0x05, + 0x2e, 0x03, 0x2d, 0x03, 0xdb, 0x00, 0xdb, 0x00, 0x62, 0xfe, 0x5f, 0xfe, + 0xcd, 0xfb, 0xcc, 0xfb, 0x2c, 0xf9, 0x2a, 0xf9, 0x88, 0xf6, 0x87, 0xf6, + 0xf1, 0xf3, 0xee, 0xf3, 0x6e, 0xf1, 0x6c, 0xf1, 0x15, 0xef, 0x16, 0xef, + 0xeb, 0xec, 0xe7, 0xec, 0x02, 0xeb, 0x02, 0xeb, 0x61, 0xe9, 0x5d, 0xe9, + 0x16, 0xe8, 0x18, 0xe8, 0x2d, 0xe7, 0x2a, 0xe7, 0xa4, 0xe6, 0xa3, 0xe6, + 0x8e, 0xe6, 0x8b, 0xe6, 0xe1, 0xe6, 0xde, 0xe6, 0xa9, 0xe7, 0xa9, 0xe7, + 0xd7, 0xe8, 0xd7, 0xe8, 0x75, 0xea, 0x73, 0xea, 0x6d, 0xec, 0x6d, 0xec, + 0xc1, 0xee, 0xbe, 0xee, 0x5e, 0xf1, 0x5e, 0xf1, 0x3d, 0xf4, 0x3a, 0xf4, + 0x52, 0xf7, 0x51, 0xf7, 0x8b, 0xfa, 0x89, 0xfa, 0xdd, 0xfd, 0xdd, 0xfd, + 0x3e, 0x01, 0x3d, 0x01, 0x9c, 0x04, 0x98, 0x04, 0xe9, 0x07, 0xe9, 0x07, + 0x1d, 0x0b, 0x1a, 0x0b, 0x21, 0x0e, 0x20, 0x0e, 0xf4, 0x10, 0xf1, 0x10, + 0x80, 0x13, 0x7e, 0x13, 0xc0, 0x15, 0xbe, 0x15, 0xac, 0x17, 0xa9, 0x17, + 0x32, 0x19, 0x32, 0x19, 0x57, 0x1a, 0x54, 0x1a, 0x0d, 0x1b, 0x0d, 0x1b, + 0x59, 0x1b, 0x56, 0x1b, 0x35, 0x1b, 0x34, 0x1b, 0xa8, 0x1a, 0xa4, 0x1a, + 0xb5, 0x19, 0xb3, 0x19, 0x61, 0x18, 0x5e, 0x18, 0xb7, 0x16, 0xb6, 0x16, + 0xc0, 0x14, 0xbd, 0x14, 0x86, 0x12, 0x83, 0x12, 0x15, 0x10, 0x13, 0x10, + 0x7c, 0x0d, 0x78, 0x0d, 0xc6, 0x0a, 0xc5, 0x0a, 0x00, 0x08, 0xfc, 0x07, + 0x3a, 0x05, 0x39, 0x05, 0x82, 0x02, 0x7f, 0x02, 0xe4, 0xff, 0xe2, 0xff, + 0x73, 0xfd, 0x70, 0xfd, 0x38, 0xfb, 0x35, 0xfb, 0x42, 0xf9, 0x40, 0xf9, + 0x9e, 0xf7, 0x9a, 0xf7, 0x4e, 0xf6, 0x4d, 0xf6, 0x63, 0xf5, 0x61, 0xf5, + 0xe0, 0xf4, 0xdc, 0xf4, 0xbe, 0xf4, 0xbc, 0xf4, 0x0a, 0xf5, 0x09, 0xf5, + 0xb9, 0xf5, 0xb6, 0xf5, 0xcb, 0xf6, 0xcb, 0xf6, 0x39, 0xf8, 0x36, 0xf8, + 0xf9, 0xf9, 0xf8, 0xf9, 0x07, 0xfc, 0x04, 0xfc, 0x4d, 0xfe, 0x4d, 0xfe, + 0xd3, 0x00, 0xd1, 0x00, 0x79, 0x03, 0x7a, 0x03, 0x48, 0x06, 0x43, 0x06, + 0x22, 0x09, 0x22, 0x09, 0x05, 0x0c, 0x04, 0x0c, 0xe5, 0x0e, 0xe1, 0x0e, + 0xb0, 0x11, 0xaf, 0x11, 0x5d, 0x14, 0x5a, 0x14, 0xe0, 0x16, 0xdc, 0x16, + 0x29, 0x19, 0x29, 0x19, 0x31, 0x1b, 0x2e, 0x1b, 0xea, 0x1c, 0xea, 0x1c, + 0x4d, 0x1e, 0x4a, 0x1e, 0x4a, 0x1f, 0x48, 0x1f, 0xe5, 0x1f, 0xe3, 0x1f, + 0x11, 0x20, 0x0d, 0x20, 0xce, 0x1f, 0xcd, 0x1f, 0x1e, 0x1f, 0x1a, 0x1f, + 0xfb, 0x1d, 0xfa, 0x1d, 0x76, 0x1c, 0x74, 0x1c, 0x8f, 0x1a, 0x8d, 0x1a, + 0x4d, 0x18, 0x4a, 0x18, 0xc1, 0x15, 0xbf, 0x15, 0xef, 0x12, 0xec, 0x12, + 0xef, 0x0f, 0xee, 0x0f, 0xc3, 0x0c, 0xc0, 0x0c, 0x83, 0x09, 0x81, 0x09, + 0x33, 0x06, 0x31, 0x06, 0xeb, 0x02, 0xe9, 0x02, 0xb6, 0xff, 0xb4, 0xff, + 0x9f, 0xfc, 0x9c, 0xfc, 0xb9, 0xf9, 0xb6, 0xf9, 0x0b, 0xf7, 0x09, 0xf7, + 0xa6, 0xf4, 0xa3, 0xf4, 0x90, 0xf2, 0x8d, 0xf2, 0xd6, 0xf0, 0xd4, 0xf0, + 0x7e, 0xef, 0x7b, 0xef, 0x8b, 0xee, 0x88, 0xee, 0x01, 0xee, 0xfe, 0xed, + 0xe2, 0xed, 0xe2, 0xed, 0x29, 0xee, 0x24, 0xee, 0xd3, 0xee, 0xd3, 0xee, + 0xdd, 0xef, 0xd8, 0xef, 0x3e, 0xf1, 0x3c, 0xf1, 0xea, 0xf2, 0xe8, 0xf2, + 0xde, 0xf4, 0xda, 0xf4, 0x0a, 0xf7, 0x08, 0xf7, 0x65, 0xf9, 0x62, 0xf9, + 0xe4, 0xfb, 0xe0, 0xfb, 0x75, 0xfe, 0x73, 0xfe, 0x14, 0x01, 0x0f, 0x01, + 0xa8, 0x03, 0xa6, 0x03, 0x30, 0x06, 0x2c, 0x06, 0x92, 0x08, 0x90, 0x08, + 0xcc, 0x0a, 0xc8, 0x0a, 0xc9, 0x0c, 0xc5, 0x0c, 0x7e, 0x0e, 0x7c, 0x0e, + 0xe5, 0x0f, 0xe2, 0x0f, 0xea, 0x10, 0xe8, 0x10, 0x8c, 0x11, 0x88, 0x11, + 0xc4, 0x11, 0xc2, 0x11, 0x8f, 0x11, 0x8e, 0x11, 0xee, 0x10, 0xeb, 0x10, + 0xe2, 0x0f, 0xe0, 0x0f, 0x73, 0x0e, 0x6f, 0x0e, 0xa4, 0x0c, 0xa3, 0x0c, + 0x7f, 0x0a, 0x7d, 0x0a, 0x12, 0x08, 0x0e, 0x08, 0x61, 0x05, 0x60, 0x05, + 0x80, 0x02, 0x7b, 0x02, 0x74, 0xff, 0x70, 0xff, 0x4c, 0xfc, 0x49, 0xfc, + 0x1b, 0xf9, 0x17, 0xf9, 0xdf, 0xf5, 0xdc, 0xf5, 0xb8, 0xf2, 0xb4, 0xf2, + 0xa0, 0xef, 0x9d, 0xef, 0xb3, 0xec, 0xaf, 0xec, 0xf6, 0xe9, 0xf3, 0xe9, + 0x72, 0xe7, 0x6e, 0xe7, 0x3d, 0xe5, 0x3b, 0xe5, 0x58, 0xe3, 0x53, 0xe3, + 0xce, 0xe1, 0xcc, 0xe1, 0xaa, 0xe0, 0xa4, 0xe0, 0xed, 0xdf, 0xec, 0xdf, + 0xa0, 0xdf, 0x9d, 0xdf, 0xc0, 0xdf, 0xbb, 0xdf, 0x4e, 0xe0, 0x4c, 0xe0, + 0x48, 0xe1, 0x44, 0xe1, 0xa7, 0xe2, 0xa4, 0xe2, 0x63, 0xe4, 0x61, 0xe4, + 0x74, 0xe6, 0x72, 0xe6, 0xd1, 0xe8, 0xcd, 0xe8, 0x64, 0xeb, 0x62, 0xeb, + 0x33, 0xee, 0x2f, 0xee, 0x1a, 0xf1, 0x16, 0xf1, 0x1c, 0xf4, 0x19, 0xf4, + 0x23, 0xf7, 0x1f, 0xf7, 0x24, 0xfa, 0x20, 0xfa, 0x0b, 0xfd, 0x07, 0xfd, + 0xcd, 0xff, 0xcb, 0xff, 0x61, 0x02, 0x5c, 0x02, 0xae, 0x04, 0xac, 0x04, + 0xb8, 0x06, 0xb3, 0x06, 0x68, 0x08, 0x64, 0x08, 0xbc, 0x09, 0xba, 0x09, + 0xb0, 0x0a, 0xab, 0x0a, 0x3c, 0x0b, 0x3b, 0x0b, 0x63, 0x0b, 0x5f, 0x0b, + 0x25, 0x0b, 0x21, 0x0b, 0x7f, 0x0a, 0x7c, 0x0a, 0x80, 0x09, 0x7c, 0x09, + 0x27, 0x08, 0x24, 0x08, 0x81, 0x06, 0x7c, 0x06, 0x91, 0x04, 0x8f, 0x04, + 0x6a, 0x02, 0x65, 0x02, 0x0f, 0x00, 0x0c, 0x00, 0x90, 0xfd, 0x8d, 0xfd, + 0xf6, 0xfa, 0xf3, 0xfa, 0x4c, 0xf8, 0x49, 0xf8, 0xa4, 0xf5, 0xa2, 0xf5, + 0x03, 0xf3, 0xff, 0xf2, 0x7e, 0xf0, 0x7c, 0xf0, 0x17, 0xee, 0x14, 0xee, + 0xea, 0xeb, 0xe7, 0xeb, 0xf2, 0xe9, 0xf1, 0xe9, 0x4b, 0xe8, 0x48, 0xe8, + 0xf7, 0xe6, 0xf2, 0xe6, 0xfc, 0xe5, 0xfb, 0xe5, 0x6d, 0xe5, 0x68, 0xe5, + 0x43, 0xe5, 0x41, 0xe5, 0x8d, 0xe5, 0x8a, 0xe5, 0x44, 0xe6, 0x41, 0xe6, + 0x6a, 0xe7, 0x67, 0xe7, 0xf9, 0xe8, 0xf7, 0xe8, 0xe9, 0xea, 0xe5, 0xea, + 0x31, 0xed, 0x2f, 0xed, 0xca, 0xef, 0xc8, 0xef, 0xa2, 0xf2, 0x9e, 0xf2, + 0xb2, 0xf5, 0xaf, 0xf5, 0xeb, 0xf8, 0xe8, 0xf8, 0x3c, 0xfc, 0x3b, 0xfc, + 0x9f, 0xff, 0x9c, 0xff, 0xfb, 0x02, 0xf7, 0x02, 0x4f, 0x06, 0x4c, 0x06, + 0x84, 0x09, 0x82, 0x09, 0x92, 0x0c, 0x91, 0x0c, 0x69, 0x0f, 0x65, 0x0f, + 0xfc, 0x11, 0xfb, 0x11, 0x46, 0x14, 0x44, 0x14, 0x35, 0x16, 0x34, 0x16, + 0xc9, 0x17, 0xc6, 0x17, 0xf4, 0x18, 0xf2, 0x18, 0xb6, 0x19, 0xb2, 0x19, + 0x07, 0x1a, 0x07, 0x1a, 0xef, 0x19, 0xeb, 0x19, 0x6d, 0x19, 0x68, 0x19, + 0x81, 0x18, 0x81, 0x18, 0x3d, 0x17, 0x38, 0x17, 0x9b, 0x15, 0x9c, 0x15, + 0xb1, 0x13, 0xac, 0x13, 0x82, 0x11, 0x82, 0x11, 0x1d, 0x0f, 0x1b, 0x0f, + 0x8e, 0x0c, 0x8c, 0x0c, 0xe2, 0x09, 0xe0, 0x09, 0x26, 0x07, 0x24, 0x07, + 0x67, 0x04, 0x66, 0x04, 0xb7, 0x01, 0xb4, 0x01, 0x20, 0xff, 0x1e, 0xff, + 0xb0, 0xfc, 0xae, 0xfc, 0x7b, 0xfa, 0x7a, 0xfa, 0x87, 0xf8, 0x83, 0xf8, + 0xe5, 0xf6, 0xe3, 0xf6, 0x99, 0xf5, 0x97, 0xf5, 0xaf, 0xf4, 0xad, 0xf4, + 0x2e, 0xf4, 0x2d, 0xf4, 0x12, 0xf4, 0x0f, 0xf4, 0x61, 0xf4, 0x5f, 0xf4, + 0x15, 0xf5, 0x12, 0xf5, 0x2e, 0xf6, 0x2b, 0xf6, 0xa2, 0xf7, 0xa1, 0xf7, + 0x6b, 0xf9, 0x68, 0xf9, 0x81, 0xfb, 0x7f, 0xfb, 0xd7, 0xfd, 0xd6, 0xfd, + 0x65, 0x00, 0x62, 0x00, 0x1b, 0x03, 0x1a, 0x03, 0xf4, 0x05, 0xf1, 0x05, + 0xde, 0x08, 0xdb, 0x08, 0xd0, 0x0b, 0xd0, 0x0b, 0xbd, 0x0e, 0xba, 0x0e, + 0x9b, 0x11, 0x98, 0x11, 0x57, 0x14, 0x55, 0x14, 0xea, 0x16, 0xe9, 0x16, + 0x49, 0x19, 0x45, 0x19, 0x60, 0x1b, 0x5f, 0x1b, 0x2e, 0x1d, 0x2c, 0x1d, + 0xa0, 0x1e, 0x9f, 0x1e, 0xb2, 0x1f, 0xaf, 0x1f, 0x60, 0x20, 0x5f, 0x20, + 0x9c, 0x20, 0x9b, 0x20, 0x71, 0x20, 0x6f, 0x20, 0xce, 0x1f, 0xcc, 0x1f, + 0xc4, 0x1e, 0xc2, 0x1e, 0x50, 0x1d, 0x4c, 0x1d, 0x76, 0x1b, 0x76, 0x1b, + 0x48, 0x19, 0x42, 0x19, 0xc4, 0x16, 0xc5, 0x16, 0x06, 0x14, 0x01, 0x14, + 0x0c, 0x11, 0x0c, 0x11, 0xec, 0x0d, 0xea, 0x0d, 0xb3, 0x0a, 0xb1, 0x0a, + 0x6d, 0x07, 0x6c, 0x07, 0x2a, 0x04, 0x27, 0x04, 0xf9, 0x00, 0xf7, 0x00, + 0xe2, 0xfd, 0xe3, 0xfd, 0x01, 0xfb, 0xfe, 0xfa, 0x52, 0xf8, 0x50, 0xf8, + 0xee, 0xf5, 0xec, 0xf5, 0xd9, 0xf3, 0xd6, 0xf3, 0x1d, 0xf2, 0x1c, 0xf2, + 0xc6, 0xf0, 0xc3, 0xf0, 0xd2, 0xef, 0xcf, 0xef, 0x46, 0xef, 0x45, 0xef, + 0x24, 0xef, 0x22, 0xef, 0x6a, 0xef, 0x6a, 0xef, 0x15, 0xf0, 0x11, 0xf0, + 0x1b, 0xf1, 0x1a, 0xf1, 0x78, 0xf2, 0x74, 0xf2, 0x25, 0xf4, 0x22, 0xf4, + 0x14, 0xf6, 0x13, 0xf6, 0x41, 0xf8, 0x3e, 0xf8, 0x9b, 0xfa, 0x98, 0xfa, + 0x17, 0xfd, 0x17, 0xfd, 0xac, 0xff, 0xa9, 0xff, 0x45, 0x02, 0x45, 0x02, + 0xe2, 0x04, 0xdf, 0x04, 0x68, 0x07, 0x68, 0x07, 0xd4, 0x09, 0xd1, 0x09, + 0x0f, 0x0c, 0x0f, 0x0c, 0x14, 0x0e, 0x12, 0x0e, 0xd2, 0x0f, 0xcf, 0x0f, + 0x3d, 0x11, 0x3d, 0x11, 0x50, 0x12, 0x4c, 0x12, 0xfb, 0x12, 0xfb, 0x12, + 0x3b, 0x13, 0x38, 0x13, 0x10, 0x13, 0x12, 0x13, 0x74, 0x12, 0x74, 0x12, + 0x71, 0x11, 0x6f, 0x11, 0x05, 0x10, 0x05, 0x10, 0x38, 0x0e, 0x35, 0x0e, + 0x15, 0x0c, 0x15, 0x0c, 0xa5, 0x09, 0xa2, 0x09, 0xf1, 0x06, 0xf0, 0x06, + 0x07, 0x04, 0x07, 0x04, 0xf5, 0x00, 0xf4, 0x00, 0xc6, 0xfd, 0xc3, 0xfd, + 0x84, 0xfa, 0x84, 0xfa, 0x40, 0xf7, 0x3f, 0xf7, 0x04, 0xf4, 0x03, 0xf4, + 0xdf, 0xf0, 0xdf, 0xf0, 0xe0, 0xed, 0xdf, 0xed, 0x11, 0xeb, 0x10, 0xeb, + 0x83, 0xe8, 0x82, 0xe8, 0x38, 0xe6, 0x37, 0xe6, 0x40, 0xe4, 0x40, 0xe4, + 0xa1, 0xe2, 0xa1, 0xe2, 0x62, 0xe1, 0x62, 0xe1, 0x91, 0xe0, 0x90, 0xe0, + 0x2b, 0xe0, 0x2a, 0xe0, 0x3e, 0xe0, 0x3d, 0xe0, 0xc6, 0xe0, 0xc5, 0xe0, + 0xc4, 0xe1, 0xc5, 0xe1, 0x27, 0xe3, 0x27, 0xe3, 0xee, 0xe4, 0xec, 0xe4, + 0x01, 0xe7, 0x03, 0xe7, 0x60, 0xe9, 0x5e, 0xe9, 0xf5, 0xeb, 0xf5, 0xeb, + 0xb6, 0xee, 0xb5, 0xee, 0x90, 0xf1, 0x92, 0xf1, 0x7d, 0xf4, 0x7a, 0xf4, + 0x63, 0xf7, 0x64, 0xf7, 0x3d, 0xfa, 0x3b, 0xfa, 0xf9, 0xfc, 0xf8, 0xfc, + 0x8a, 0xff, 0x8a, 0xff, 0xe5, 0x01, 0xe3, 0x01, 0xfe, 0x03, 0xff, 0x03, + 0xcc, 0x05, 0xca, 0x05, 0x45, 0x07, 0x46, 0x07, 0x67, 0x08, 0x65, 0x08, + 0x29, 0x09, 0x28, 0x09, 0x8c, 0x09, 0x8c, 0x09, 0x8d, 0x09, 0x8d, 0x09, + 0x32, 0x09, 0x31, 0x09, 0x7d, 0x08, 0x7c, 0x08, 0x74, 0x07, 0x72, 0x07, + 0x1f, 0x06, 0x20, 0x06, 0x82, 0x04, 0x81, 0x04, 0xae, 0x02, 0xad, 0x02, + 0xa5, 0x00, 0xa6, 0x00, 0x76, 0xfe, 0x74, 0xfe, 0x2f, 0xfc, 0x2e, 0xfc, + 0xcd, 0xf9, 0xcd, 0xf9, 0x6e, 0xf7, 0x6c, 0xf7, 0x0d, 0xf5, 0x0c, 0xf5, + 0xc1, 0xf2, 0xbf, 0xf2, 0x8f, 0xf0, 0x8e, 0xf0, 0x82, 0xee, 0x82, 0xee, + 0xa8, 0xec, 0xa7, 0xec, 0x09, 0xeb, 0x08, 0xeb, 0xae, 0xe9, 0xac, 0xe9, + 0x9f, 0xe8, 0x9f, 0xe8, 0xe4, 0xe7, 0xe1, 0xe7, 0x7e, 0xe7, 0x7e, 0xe7, + 0x79, 0xe7, 0x77, 0xe7, 0xcc, 0xe7, 0xcb, 0xe7, 0x7b, 0xe8, 0x7c, 0xe8, + 0x89, 0xe9, 0x88, 0xe9, 0xe7, 0xea, 0xe7, 0xea, 0x97, 0xec, 0x97, 0xec, + 0x8d, 0xee, 0x8c, 0xee, 0xc1, 0xf0, 0xc0, 0xf0, 0x27, 0xf3, 0x28, 0xf3, + 0xbb, 0xf5, 0xba, 0xf5, 0x67, 0xf8, 0x66, 0xf8, 0x26, 0xfb, 0x25, 0xfb, + 0xec, 0xfd, 0xec, 0xfd, 0xad, 0x00, 0xac, 0x00, 0x5d, 0x03, 0x5e, 0x03, + 0xf3, 0x05, 0xef, 0x05, 0x61, 0x08, 0x63, 0x08, 0xa5, 0x0a, 0xa2, 0x0a, + 0xad, 0x0c, 0xaf, 0x0c, 0x7a, 0x0e, 0x7a, 0x0e, 0xfd, 0x0f, 0xfd, 0x0f, + 0x3b, 0x11, 0x3b, 0x11, 0x24, 0x12, 0x26, 0x12, 0xc1, 0x12, 0xbf, 0x12, + 0x09, 0x13, 0x0b, 0x13, 0x01, 0x13, 0x00, 0x13, 0xad, 0x12, 0xaf, 0x12, + 0x0f, 0x12, 0x0f, 0x12, 0x2d, 0x11, 0x2d, 0x11, 0x0e, 0x10, 0x0e, 0x10, + 0xb7, 0x0e, 0xb8, 0x0e, 0x37, 0x0d, 0x38, 0x0d, 0x92, 0x0b, 0x92, 0x0b, + 0xcf, 0x09, 0xd1, 0x09, 0xfe, 0x07, 0xff, 0x07, 0x24, 0x06, 0x23, 0x06, + 0x50, 0x04, 0x52, 0x04, 0x88, 0x02, 0x86, 0x02, 0xd9, 0x00, 0xdb, 0x00, + 0x49, 0xff, 0x49, 0xff, 0xe3, 0xfd, 0xe4, 0xfd, 0xb3, 0xfc, 0xb2, 0xfc, + 0xb5, 0xfb, 0xb7, 0xfb, 0xfc, 0xfa, 0xfc, 0xfa, 0x84, 0xfa, 0x84, 0xfa, + 0x4e, 0xfa, 0x4e, 0xfa, 0x60, 0xfa, 0x63, 0xfa, 0xb9, 0xfa, 0xb7, 0xfa, + 0x53, 0xfb, 0x55, 0xfb, 0x31, 0xfc, 0x31, 0xfc, 0x49, 0xfd, 0x48, 0xfd, + 0x96, 0xfe, 0x96, 0xfe, 0x14, 0x00, 0x16, 0x00, 0xbc, 0x01, 0xbb, 0x01, + 0x84, 0x03, 0x86, 0x03, 0x63, 0x05, 0x64, 0x05, 0x58, 0x07, 0x57, 0x07, + 0x50, 0x09, 0x51, 0x09, 0x48, 0x0b, 0x47, 0x0b, 0x3b, 0x0d, 0x3b, 0x0d, + 0x17, 0x0f, 0x19, 0x0f, 0xe0, 0x10, 0xdf, 0x10, 0x82, 0x12, 0x84, 0x12, + 0xfc, 0x13, 0xfd, 0x13, 0x49, 0x15, 0x49, 0x15, 0x5d, 0x16, 0x5e, 0x16, + 0x39, 0x17, 0x3a, 0x17, 0xd7, 0x17, 0xd6, 0x17, 0x31, 0x18, 0x31, 0x18, + 0x48, 0x18, 0x49, 0x18, 0x1e, 0x18, 0x1d, 0x18, 0xac, 0x17, 0xae, 0x17, + 0xff, 0x16, 0xfe, 0x16, 0x0f, 0x16, 0x10, 0x16, 0xeb, 0x14, 0xec, 0x14, + 0x91, 0x13, 0x90, 0x13, 0x0d, 0x12, 0x0d, 0x12, 0x5e, 0x10, 0x5e, 0x10, + 0x95, 0x0e, 0x95, 0x0e, 0xb6, 0x0c, 0xb6, 0x0c, 0xc7, 0x0a, 0xc9, 0x0a, + 0xda, 0x08, 0xd9, 0x08, 0xe9, 0x06, 0xea, 0x06, 0x0a, 0x05, 0x0b, 0x05, + 0x3c, 0x03, 0x3c, 0x03, 0x8d, 0x01, 0x8c, 0x01, 0xfe, 0xff, 0xff, 0xff, + 0x99, 0xfe, 0x97, 0xfe, 0x61, 0xfd, 0x63, 0xfd, 0x5b, 0xfc, 0x5a, 0xfc, + 0x8b, 0xfb, 0x8b, 0xfb, 0xf0, 0xfa, 0xf1, 0xfa, 0x8d, 0xfa, 0x8e, 0xfa, + 0x62, 0xfa, 0x63, 0xfa, 0x6e, 0xfa, 0x70, 0xfa, 0xad, 0xfa, 0xad, 0xfa, + 0x1e, 0xfb, 0x1f, 0xfb, 0xb8, 0xfb, 0xb9, 0xfb, 0x7f, 0xfc, 0x80, 0xfc, + 0x64, 0xfd, 0x65, 0xfd, 0x67, 0xfe, 0x67, 0xfe, 0x80, 0xff, 0x81, 0xff, + 0xa5, 0x00, 0xa5, 0x00, 0xd8, 0x01, 0xd7, 0x01, 0x04, 0x03, 0x05, 0x03, + 0x2e, 0x04, 0x2f, 0x04, 0x4c, 0x05, 0x4c, 0x05, 0x51, 0x06, 0x51, 0x06, + 0x40, 0x07, 0x40, 0x07, 0x08, 0x08, 0x09, 0x08, 0xae, 0x08, 0xb0, 0x08, + 0x2a, 0x09, 0x2a, 0x09, 0x74, 0x09, 0x75, 0x09, 0x90, 0x09, 0x91, 0x09, + 0x72, 0x09, 0x75, 0x09, 0x22, 0x09, 0x22, 0x09, 0x9f, 0x08, 0xa0, 0x08, + 0xe6, 0x07, 0xe6, 0x07, 0xff, 0x06, 0xff, 0x06, 0xe7, 0x05, 0xeb, 0x05, + 0xa9, 0x04, 0xa9, 0x04, 0x47, 0x03, 0x4a, 0x03, 0xc5, 0x01, 0xc6, 0x01, + 0x2e, 0x00, 0x30, 0x00, 0x80, 0xfe, 0x83, 0xfe, 0xcd, 0xfc, 0xce, 0xfc, + 0x13, 0xfb, 0x14, 0xfb, 0x59, 0xf9, 0x5a, 0xf9, 0xaa, 0xf7, 0xac, 0xf7, + 0x09, 0xf6, 0x08, 0xf6, 0x7b, 0xf4, 0x7f, 0xf4, 0x0e, 0xf3, 0x0c, 0xf3, + 0xb9, 0xf1, 0xbc, 0xf1, 0x90, 0xf0, 0x92, 0xf0, 0x8e, 0xef, 0x8d, 0xef, + 0xb7, 0xee, 0xbb, 0xee, 0x12, 0xee, 0x12, 0xee, 0x9a, 0xed, 0x9b, 0xed, + 0x54, 0xed, 0x58, 0xed, 0x44, 0xed, 0x43, 0xed, 0x60, 0xed, 0x62, 0xed, + 0xac, 0xed, 0xac, 0xed, 0x22, 0xee, 0x23, 0xee, 0xc1, 0xee, 0xc3, 0xee, + 0x84, 0xef, 0x85, 0xef, 0x68, 0xf0, 0x6a, 0xf0, 0x67, 0xf1, 0x65, 0xf1, + 0x77, 0xf2, 0x79, 0xf2, 0x98, 0xf3, 0x9a, 0xf3, 0xbe, 0xf4, 0xc0, 0xf4, + 0xed, 0xf5, 0xef, 0xf5, 0x10, 0xf7, 0x11, 0xf7, 0x2f, 0xf8, 0x30, 0xf8, + 0x3d, 0xf9, 0x3f, 0xf9, 0x34, 0xfa, 0x35, 0xfa, 0x15, 0xfb, 0x16, 0xfb, + 0xd6, 0xfb, 0xd7, 0xfb, 0x78, 0xfc, 0x79, 0xfc, 0xf6, 0xfc, 0xf7, 0xfc, + 0x50, 0xfd, 0x50, 0xfd, 0x80, 0xfd, 0x82, 0xfd, 0x8e, 0xfd, 0x8f, 0xfd, + 0x70, 0xfd, 0x71, 0xfd, 0x32, 0xfd, 0x34, 0xfd, 0xce, 0xfc, 0xcf, 0xfc, + 0x4c, 0xfc, 0x4c, 0xfc, 0xac, 0xfb, 0xb0, 0xfb, 0xf2, 0xfa, 0xf0, 0xfa, + 0x25, 0xfa, 0x27, 0xfa, 0x45, 0xf9, 0x47, 0xf9, 0x5c, 0xf8, 0x5d, 0xf8, + 0x6a, 0xf7, 0x6c, 0xf7, 0x75, 0xf6, 0x77, 0xf6, 0x89, 0xf5, 0x8a, 0xf5, + 0xa0, 0xf4, 0xa3, 0xf4, 0xcb, 0xf3, 0xca, 0xf3, 0x04, 0xf3, 0x08, 0xf3, + 0x55, 0xf2, 0x55, 0xf2, 0xc4, 0xf1, 0xc5, 0xf1, 0x4e, 0xf1, 0x52, 0xf1, + 0xfd, 0xf0, 0xfe, 0xf0, 0xcf, 0xf0, 0xd1, 0xf0, 0xca, 0xf0, 0xcb, 0xf0, + 0xeb, 0xf0, 0xed, 0xf0, 0x36, 0xf1, 0x37, 0xf1, 0xa5, 0xf1, 0xa8, 0xf1, + 0x40, 0xf2, 0x41, 0xf2, 0xfb, 0xf2, 0xfd, 0xf2, 0xde, 0xf3, 0xe0, 0xf3, + 0xdd, 0xf4, 0xdf, 0xf4, 0xfa, 0xf5, 0xfb, 0xf5, 0x2c, 0xf7, 0x2f, 0xf7, + 0x76, 0xf8, 0x76, 0xf8, 0xcb, 0xf9, 0xcf, 0xf9, 0x2b, 0xfb, 0x2b, 0xfb, + 0x8e, 0xfc, 0x91, 0xfc, 0xf3, 0xfd, 0xf6, 0xfd, 0x4f, 0xff, 0x51, 0xff, + 0xa3, 0x00, 0xa4, 0x00, 0xe7, 0x01, 0xe8, 0x01, 0x18, 0x03, 0x18, 0x03, + 0x2e, 0x04, 0x31, 0x04, 0x2f, 0x05, 0x30, 0x05, 0x0c, 0x06, 0x0e, 0x06, + 0xcf, 0x06, 0xd1, 0x06, 0x6f, 0x07, 0x6f, 0x07, 0xec, 0x07, 0xee, 0x07, + 0x45, 0x08, 0x49, 0x08, 0x80, 0x08, 0x7f, 0x08, 0x93, 0x08, 0x96, 0x08, + 0x8b, 0x08, 0x8d, 0x08, 0x63, 0x08, 0x65, 0x08, 0x1f, 0x08, 0x21, 0x08, + 0xc5, 0x07, 0xc6, 0x07, 0x56, 0x07, 0x56, 0x07, 0xd4, 0x06, 0xd8, 0x06, + 0x49, 0x06, 0x48, 0x06, 0xb1, 0x05, 0xb7, 0x05, 0x1b, 0x05, 0x19, 0x05, + 0x82, 0x04, 0x84, 0x04, 0xec, 0x03, 0xef, 0x03, 0x64, 0x03, 0x65, 0x03, + 0xe3, 0x02, 0xe9, 0x02, 0x7c, 0x02, 0x7b, 0x02, 0x21, 0x02, 0x26, 0x02, + 0xe3, 0x01, 0xe4, 0x01, 0xba, 0x01, 0xbc, 0x01, 0xae, 0x01, 0xb0, 0x01, + 0xbe, 0x01, 0xbf, 0x01, 0xea, 0x01, 0xed, 0x01, 0x33, 0x02, 0x36, 0x02, + 0x9b, 0x02, 0x9b, 0x02, 0x19, 0x03, 0x1b, 0x03, 0xb6, 0x03, 0xb5, 0x03, + 0x66, 0x04, 0x69, 0x04, 0x2b, 0x05, 0x2b, 0x05, 0x01, 0x06, 0x05, 0x06, + 0xe6, 0x06, 0xe6, 0x06, 0xd4, 0x07, 0xd7, 0x07, 0xcc, 0x08, 0xcb, 0x08, + 0xc0, 0x09, 0xc3, 0x09, 0xba, 0x0a, 0xbb, 0x0a, 0xa8, 0x0b, 0xa9, 0x0b, + 0x92, 0x0c, 0x94, 0x0c, 0x6a, 0x0d, 0x6c, 0x0d, 0x35, 0x0e, 0x37, 0x0e, + 0xea, 0x0e, 0xeb, 0x0e, 0x8a, 0x0f, 0x8c, 0x0f, 0x0f, 0x10, 0x12, 0x10, + 0x79, 0x10, 0x79, 0x10, 0xc7, 0x10, 0xcb, 0x10, 0xf1, 0x10, 0xf3, 0x10, + 0x04, 0x11, 0x06, 0x11, 0xf2, 0x10, 0xf5, 0x10, 0xc4, 0x10, 0xc6, 0x10, + 0x76, 0x10, 0x78, 0x10, 0x0a, 0x10, 0x0e, 0x10, 0x89, 0x0f, 0x88, 0x0f, + 0xe5, 0x0e, 0xec, 0x0e, 0x3a, 0x0e, 0x38, 0x0e, 0x71, 0x0d, 0x76, 0x0d, + 0x9d, 0x0c, 0x9c, 0x0c, 0xbc, 0x0b, 0xbf, 0x0b, 0xd5, 0x0a, 0xd6, 0x0a, + 0xe8, 0x09, 0xea, 0x09, 0xfb, 0x08, 0xfd, 0x08, 0x0f, 0x08, 0x11, 0x08, + 0x2d, 0x07, 0x30, 0x07, 0x54, 0x06, 0x55, 0x06, 0x88, 0x05, 0x89, 0x05, + 0xcc, 0x04, 0xcc, 0x04, 0x23, 0x04, 0x24, 0x04, 0x8a, 0x03, 0x8c, 0x03, + 0x0d, 0x03, 0x0e, 0x03, 0xa4, 0x02, 0xa5, 0x02, 0x51, 0x02, 0x52, 0x02, + 0x16, 0x02, 0x18, 0x02, 0xf0, 0x01, 0xf2, 0x01, 0xe6, 0x01, 0xe6, 0x01, + 0xea, 0x01, 0xed, 0x01, 0x06, 0x02, 0x07, 0x02, 0x31, 0x02, 0x31, 0x02, + 0x69, 0x02, 0x6c, 0x02, 0xb2, 0x02, 0xb2, 0x02, 0xfe, 0x02, 0x02, 0x03, + 0x56, 0x03, 0x58, 0x03, 0xaf, 0x03, 0xb0, 0x03, 0x04, 0x04, 0x06, 0x04, + 0x5c, 0x04, 0x5f, 0x04, 0xa8, 0x04, 0xaa, 0x04, 0xee, 0x04, 0xf1, 0x04, + 0x28, 0x05, 0x28, 0x05, 0x4d, 0x05, 0x50, 0x05, 0x6a, 0x05, 0x6c, 0x05, + 0x69, 0x05, 0x6c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x34, 0x05, 0x38, 0x05, + 0xf3, 0x04, 0xf5, 0x04, 0xa1, 0x04, 0xa3, 0x04, 0x2d, 0x04, 0x31, 0x04, + 0xad, 0x03, 0xaf, 0x03, 0x0d, 0x03, 0x12, 0x03, 0x60, 0x02, 0x61, 0x02, + 0x9e, 0x01, 0xa2, 0x01, 0xc8, 0x00, 0xca, 0x00, 0xe9, 0xff, 0xec, 0xff, + 0xfa, 0xfe, 0xfd, 0xfe, 0x06, 0xfe, 0x08, 0xfe, 0x0c, 0xfd, 0x0f, 0xfd, + 0x0e, 0xfc, 0x11, 0xfc, 0x15, 0xfb, 0x16, 0xfb, 0x1a, 0xfa, 0x1f, 0xfa, + 0x2d, 0xf9, 0x2d, 0xf9, 0x44, 0xf8, 0x48, 0xf8, 0x6b, 0xf7, 0x6e, 0xf7, + 0xa4, 0xf6, 0xa6, 0xf6, 0xe7, 0xf5, 0xeb, 0xf5, 0x46, 0xf5, 0x49, 0xf5, + 0xb4, 0xf4, 0xb6, 0xf4, 0x3b, 0xf4, 0x3e, 0xf4, 0xdb, 0xf3, 0xdb, 0xf3, + 0x8e, 0xf3, 0x92, 0xf3, 0x5c, 0xf3, 0x5e, 0xf3, 0x41, 0xf3, 0x43, 0xf3, + 0x3d, 0xf3, 0x3f, 0xf3, 0x4d, 0xf3, 0x4f, 0xf3, 0x70, 0xf3, 0x72, 0xf3, + 0xa6, 0xf3, 0xab, 0xf3, 0xee, 0xf3, 0xee, 0xf3, 0x41, 0xf4, 0x45, 0xf4, + 0xa0, 0xf4, 0xa2, 0xf4, 0x08, 0xf5, 0x0a, 0xf5, 0x75, 0xf5, 0x79, 0xf5, + 0xe7, 0xf5, 0xe8, 0xf5, 0x54, 0xf6, 0x5a, 0xf6, 0xc3, 0xf6, 0xc4, 0xf6, + 0x2e, 0xf7, 0x2e, 0xf7, 0x8b, 0xf7, 0x90, 0xf7, 0xe7, 0xf7, 0xe9, 0xf7, + 0x31, 0xf8, 0x34, 0xf8, 0x72, 0xf8, 0x73, 0xf8, 0xa2, 0xf8, 0xa3, 0xf8, + 0xc1, 0xf8, 0xc3, 0xf8, 0xd3, 0xf8, 0xd8, 0xf8, 0xd5, 0xf8, 0xd6, 0xf8, + 0xc5, 0xf8, 0xca, 0xf8, 0xa7, 0xf8, 0xa8, 0xf8, 0x79, 0xf8, 0x7d, 0xf8, + 0x3f, 0xf8, 0x42, 0xf8, 0xf9, 0xf7, 0xf9, 0xf7, 0xa6, 0xf7, 0xa8, 0xf7, + 0x4e, 0xf7, 0x50, 0xf7, 0xec, 0xf6, 0xec, 0xf6, 0x87, 0xf6, 0x8a, 0xf6, + 0x22, 0xf6, 0x23, 0xf6, 0xba, 0xf5, 0xbd, 0xf5, 0x5c, 0xf5, 0x5d, 0xf5, + 0xfb, 0xf4, 0xfe, 0xf4, 0xa9, 0xf4, 0xab, 0xf4, 0x5e, 0xf4, 0x60, 0xf4, + 0x1d, 0xf4, 0x20, 0xf4, 0xf0, 0xf3, 0xf3, 0xf3, 0xcf, 0xf3, 0xd1, 0xf3, + 0xc0, 0xf3, 0xc2, 0xf3, 0xc8, 0xf3, 0xca, 0xf3, 0xdc, 0xf3, 0xdd, 0xf3, + 0x0b, 0xf4, 0x0d, 0xf4, 0x4a, 0xf4, 0x4b, 0xf4, 0x9d, 0xf4, 0x9f, 0xf4, + 0x09, 0xf5, 0x0b, 0xf5, 0x80, 0xf5, 0x82, 0xf5, 0x11, 0xf6, 0x13, 0xf6, + 0xac, 0xf6, 0xac, 0xf6, 0x57, 0xf7, 0x5a, 0xf7, 0x11, 0xf8, 0x12, 0xf8, + 0xd3, 0xf8, 0xd5, 0xf8, 0xa0, 0xf9, 0xa1, 0xf9, 0x6f, 0xfa, 0x71, 0xfa, + 0x44, 0xfb, 0x46, 0xfb, 0x19, 0xfc, 0x1a, 0xfc, 0xed, 0xfc, 0xef, 0xfc, + 0xbe, 0xfd, 0xbf, 0xfd, 0x85, 0xfe, 0x88, 0xfe, 0x4a, 0xff, 0x4a, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xab, 0x00, 0xad, 0x00, 0x49, 0x01, 0x4a, 0x01, + 0xd7, 0x01, 0xdc, 0x01, 0x57, 0x02, 0x56, 0x02, 0xc6, 0x02, 0xca, 0x02, + 0x23, 0x03, 0x24, 0x03, 0x73, 0x03, 0x76, 0x03, 0xb1, 0x03, 0xb1, 0x03, + 0xdf, 0x03, 0xe3, 0x03, 0x01, 0x04, 0x01, 0x04, 0x11, 0x04, 0x14, 0x04, + 0x19, 0x04, 0x1a, 0x04, 0x15, 0x04, 0x17, 0x04, 0x08, 0x04, 0x0c, 0x04, + 0xf6, 0x03, 0xf8, 0x03, 0xe0, 0x03, 0xe1, 0x03, 0xc3, 0x03, 0xc6, 0x03, + 0xac, 0x03, 0xac, 0x03, 0x91, 0x03, 0x93, 0x03, 0x7f, 0x03, 0x81, 0x03, + 0x6f, 0x03, 0x70, 0x03, 0x68, 0x03, 0x6a, 0x03, 0x6b, 0x03, 0x6b, 0x03, + 0x76, 0x03, 0x78, 0x03, 0x8e, 0x03, 0x8e, 0x03, 0xb0, 0x03, 0xb3, 0x03, + 0xe2, 0x03, 0xe4, 0x03, 0x23, 0x04, 0x23, 0x04, 0x6a, 0x04, 0x6f, 0x04, + 0xc5, 0x04, 0xc6, 0x04, 0x28, 0x05, 0x2c, 0x05, 0x9b, 0x05, 0x9b, 0x05, + 0x14, 0x06, 0x18, 0x06, 0x9b, 0x06, 0x9d, 0x06, 0x27, 0x07, 0x27, 0x07, + 0xb5, 0x07, 0xb9, 0x07, 0x50, 0x08, 0x50, 0x08, 0xe5, 0x08, 0xe8, 0x08, + 0x80, 0x09, 0x81, 0x09, 0x17, 0x0a, 0x18, 0x0a, 0xa9, 0x0a, 0xaa, 0x0a, + 0x38, 0x0b, 0x39, 0x0b, 0xbd, 0x0b, 0xbd, 0x0b, 0x37, 0x0c, 0x3a, 0x0c, + 0xa9, 0x0c, 0xa9, 0x0c, 0x09, 0x0d, 0x0d, 0x0d, 0x63, 0x0d, 0x63, 0x0d, + 0xa5, 0x0d, 0xa7, 0x0d, 0xde, 0x0d, 0xde, 0x0d, 0x00, 0x0e, 0x02, 0x0e, + 0x13, 0x0e, 0x14, 0x0e, 0x17, 0x0e, 0x19, 0x0e, 0x06, 0x0e, 0x06, 0x0e, + 0xe7, 0x0d, 0xea, 0x0d, 0xb6, 0x0d, 0xb6, 0x0d, 0x74, 0x0d, 0x77, 0x0d, + 0x29, 0x0d, 0x2b, 0x0d, 0xcc, 0x0c, 0xcd, 0x0c, 0x68, 0x0c, 0x6a, 0x0c, + 0xf7, 0x0b, 0xf9, 0x0b, 0x7e, 0x0b, 0x80, 0x0b, 0x04, 0x0b, 0x06, 0x0b, + 0x80, 0x0a, 0x82, 0x0a, 0xff, 0x09, 0x00, 0x0a, 0x79, 0x09, 0x7b, 0x09, + 0xf7, 0x08, 0xfa, 0x08, 0x7a, 0x08, 0x7b, 0x08, 0x00, 0x08, 0x03, 0x08, + 0x8c, 0x07, 0x8f, 0x07, 0x22, 0x07, 0x24, 0x07, 0xbe, 0x06, 0xbf, 0x06, + 0x66, 0x06, 0x68, 0x06, 0x16, 0x06, 0x18, 0x06, 0xd1, 0x05, 0xd3, 0x05, + 0x99, 0x05, 0x99, 0x05, 0x69, 0x05, 0x6b, 0x05, 0x44, 0x05, 0x47, 0x05, + 0x2d, 0x05, 0x2c, 0x05, 0x18, 0x05, 0x1d, 0x05, 0x0f, 0x05, 0x10, 0x05, + 0x0c, 0x05, 0x0f, 0x05, 0x10, 0x05, 0x12, 0x05, 0x16, 0x05, 0x18, 0x05, + 0x20, 0x05, 0x21, 0x05, 0x28, 0x05, 0x2b, 0x05, 0x34, 0x05, 0x34, 0x05, + 0x37, 0x05, 0x3a, 0x05, 0x3e, 0x05, 0x3d, 0x05, 0x39, 0x05, 0x3c, 0x05, + 0x2e, 0x05, 0x30, 0x05, 0x1e, 0x05, 0x20, 0x05, 0x00, 0x05, 0x01, 0x05, + 0xd9, 0x04, 0xdc, 0x04, 0xa8, 0x04, 0xa7, 0x04, 0x67, 0x04, 0x69, 0x04, + 0x1e, 0x04, 0x1f, 0x04, 0xc3, 0x03, 0xc6, 0x03, 0x5f, 0x03, 0x60, 0x03, + 0xed, 0x02, 0xef, 0x02, 0x6f, 0x02, 0x71, 0x02, 0xe8, 0x01, 0xe9, 0x01, + 0x50, 0x01, 0x52, 0x01, 0xb6, 0x00, 0xb7, 0x00, 0x0c, 0x00, 0x0e, 0x00, + 0x64, 0xff, 0x66, 0xff, 0xb2, 0xfe, 0xb2, 0xfe, 0xfd, 0xfd, 0xff, 0xfd, + 0x4b, 0xfd, 0x4a, 0xfd, 0x94, 0xfc, 0x95, 0xfc, 0xe1, 0xfb, 0xe3, 0xfb, + 0x35, 0xfb, 0x36, 0xfb, 0x88, 0xfa, 0x89, 0xfa, 0xe9, 0xf9, 0xea, 0xf9, + 0x4d, 0xf9, 0x4e, 0xf9, 0xbe, 0xf8, 0xbf, 0xf8, 0x38, 0xf8, 0x3a, 0xf8, + 0xc1, 0xf7, 0xc0, 0xf7, 0x54, 0xf7, 0x58, 0xf7, 0xf6, 0xf6, 0xf6, 0xf6, + 0xa5, 0xf6, 0xa8, 0xf6, 0x61, 0xf6, 0x62, 0xf6, 0x2d, 0xf6, 0x2e, 0xf6, + 0x04, 0xf6, 0x07, 0xf6, 0xe8, 0xf5, 0xe9, 0xf5, 0xd9, 0xf5, 0xdd, 0xf5, + 0xd4, 0xf5, 0xd5, 0xf5, 0xdb, 0xf5, 0xdd, 0xf5, 0xe9, 0xf5, 0xeb, 0xf5, + 0xfe, 0xf5, 0x00, 0xf6, 0x1b, 0xf6, 0x1e, 0xf6, 0x3b, 0xf6, 0x3d, 0xf6, + 0x60, 0xf6, 0x61, 0xf6, 0x83, 0xf6, 0x86, 0xf6, 0xa9, 0xf6, 0xaa, 0xf6, + 0xcc, 0xf6, 0xcf, 0xf6, 0xee, 0xf6, 0xef, 0xf6, 0x0b, 0xf7, 0x0c, 0xf7, + 0x22, 0xf7, 0x25, 0xf7, 0x35, 0xf7, 0x36, 0xf7, 0x3f, 0xf7, 0x42, 0xf7, + 0x47, 0xf7, 0x48, 0xf7, 0x40, 0xf7, 0x43, 0xf7, 0x37, 0xf7, 0x38, 0xf7, + 0x22, 0xf7, 0x25, 0xf7, 0x07, 0xf7, 0x09, 0xf7, 0xe7, 0xf6, 0xe9, 0xf6, + 0xbc, 0xf6, 0xbe, 0xf6, 0x92, 0xf6, 0x93, 0xf6, 0x5d, 0xf6, 0x5f, 0xf6, + 0x28, 0xf6, 0x28, 0xf6, 0xee, 0xf5, 0xf3, 0xf5, 0xb4, 0xf5, 0xb3, 0xf5, + 0x7a, 0xf5, 0x7c, 0xf5, 0x40, 0xf5, 0x43, 0xf5, 0x0b, 0xf5, 0x0d, 0xf5, + 0xdb, 0xf4, 0xdb, 0xf4, 0xb0, 0xf4, 0xb2, 0xf4, 0x8a, 0xf4, 0x8c, 0xf4, + 0x70, 0xf4, 0x71, 0xf4, 0x5c, 0xf4, 0x5e, 0xf4, 0x54, 0xf4, 0x56, 0xf4, + 0x58, 0xf4, 0x5b, 0xf4, 0x67, 0xf4, 0x68, 0xf4, 0x84, 0xf4, 0x85, 0xf4, + 0xac, 0xf4, 0xae, 0xf4, 0xe3, 0xf4, 0xe4, 0xf4, 0x2a, 0xf5, 0x2c, 0xf5, + 0x76, 0xf5, 0x77, 0xf5, 0xd4, 0xf5, 0xd9, 0xf5, 0x3c, 0xf6, 0x3a, 0xf6, + 0xb0, 0xf6, 0xb3, 0xf6, 0x2d, 0xf7, 0x2e, 0xf7, 0xb2, 0xf7, 0xb4, 0xf7, + 0x41, 0xf8, 0x42, 0xf8, 0xd2, 0xf8, 0xd3, 0xf8, 0x6d, 0xf9, 0x6d, 0xf9, + 0x06, 0xfa, 0x0a, 0xfa, 0xa3, 0xfa, 0xa4, 0xfa, 0x42, 0xfb, 0x45, 0xfb, + 0xde, 0xfb, 0xdf, 0xfb, 0x7a, 0xfc, 0x7b, 0xfc, 0x0e, 0xfd, 0x10, 0xfd, + 0x9e, 0xfd, 0x9f, 0xfd, 0x2a, 0xfe, 0x2b, 0xfe, 0xab, 0xfe, 0xae, 0xfe, + 0x28, 0xff, 0x27, 0xff, 0x96, 0xff, 0x9a, 0xff, 0x03, 0x00, 0x03, 0x00, + 0x60, 0x00, 0x61, 0x00, 0xb4, 0x00, 0xb7, 0x00, 0x02, 0x01, 0x03, 0x01, + 0x42, 0x01, 0x44, 0x01, 0x7f, 0x01, 0x81, 0x01, 0xb0, 0x01, 0xaf, 0x01, + 0xda, 0x01, 0xde, 0x01, 0x00, 0x02, 0xfd, 0x01, 0x19, 0x02, 0x1e, 0x02, + 0x38, 0x02, 0x37, 0x02, 0x4c, 0x02, 0x4e, 0x02, 0x62, 0x02, 0x64, 0x02, + 0x77, 0x02, 0x79, 0x02, 0x8f, 0x02, 0x8f, 0x02, 0xa4, 0x02, 0xa7, 0x02, + 0xc1, 0x02, 0xc0, 0x02, 0xde, 0x02, 0xe1, 0x02, 0x02, 0x03, 0x02, 0x03, + 0x2e, 0x03, 0x30, 0x03, 0x5e, 0x03, 0x60, 0x03, 0x99, 0x03, 0x9b, 0x03, + 0xd7, 0x03, 0xd7, 0x03, 0x1f, 0x04, 0x21, 0x04, 0x71, 0x04, 0x70, 0x04, + 0xc7, 0x04, 0xc9, 0x04, 0x27, 0x05, 0x29, 0x05, 0x90, 0x05, 0x91, 0x05, + 0xfb, 0x05, 0xfc, 0x05, 0x70, 0x06, 0x71, 0x06, 0xe7, 0x06, 0xe8, 0x06, + 0x5f, 0x07, 0x5f, 0x07, 0xde, 0x07, 0xe0, 0x07, 0x5a, 0x08, 0x5c, 0x08, + 0xd9, 0x08, 0xdc, 0x08, 0x53, 0x09, 0x53, 0x09, 0xcd, 0x09, 0xd0, 0x09, + 0x44, 0x0a, 0x43, 0x0a, 0xb0, 0x0a, 0xb3, 0x0a, 0x1b, 0x0b, 0x1b, 0x0b, + 0x79, 0x0b, 0x7b, 0x0b, 0xd2, 0x0b, 0xd2, 0x0b, 0x1e, 0x0c, 0x1f, 0x0c, + 0x5e, 0x0c, 0x60, 0x0c, 0x96, 0x0c, 0x97, 0x0c, 0xbe, 0x0c, 0xc1, 0x0c, + 0xdd, 0x0c, 0xdd, 0x0c, 0xee, 0x0c, 0xf0, 0x0c, 0xf3, 0x0c, 0xf3, 0x0c, + 0xec, 0x0c, 0xed, 0x0c, 0xd6, 0x0c, 0xd9, 0x0c, 0xb9, 0x0c, 0xb9, 0x0c, + 0x8f, 0x0c, 0x91, 0x0c, 0x5c, 0x0c, 0x5d, 0x0c, 0x20, 0x0c, 0x22, 0x0c, + 0xda, 0x0b, 0xdd, 0x0b, 0x92, 0x0b, 0x90, 0x0b, 0x3e, 0x0b, 0x42, 0x0b, + 0xed, 0x0a, 0xec, 0x0a, 0x94, 0x0a, 0x98, 0x0a, 0x3b, 0x0a, 0x3c, 0x0a, + 0xe3, 0x09, 0xe5, 0x09, 0x8a, 0x09, 0x8c, 0x09, 0x35, 0x09, 0x36, 0x09, + 0xe1, 0x08, 0xe3, 0x08, 0x92, 0x08, 0x94, 0x08, 0x45, 0x08, 0x49, 0x08, + 0x02, 0x08, 0x04, 0x08, 0xc4, 0x07, 0xc6, 0x07, 0x88, 0x07, 0x8c, 0x07, + 0x5a, 0x07, 0x5a, 0x07, 0x29, 0x07, 0x2c, 0x07, 0x07, 0x07, 0x09, 0x07, + 0xe5, 0x06, 0xe6, 0x06, 0xcb, 0x06, 0xcd, 0x06, 0xb6, 0x06, 0xb8, 0x06, + 0xa2, 0x06, 0xa5, 0x06, 0x95, 0x06, 0x96, 0x06, 0x86, 0x06, 0x8a, 0x06, + 0x7d, 0x06, 0x80, 0x06, 0x70, 0x06, 0x72, 0x06, 0x64, 0x06, 0x68, 0x06, + 0x5a, 0x06, 0x5c, 0x06, 0x43, 0x06, 0x47, 0x06, 0x32, 0x06, 0x33, 0x06, + 0x13, 0x06, 0x15, 0x06, 0xf3, 0x05, 0xf5, 0x05, 0xca, 0x05, 0xcc, 0x05, + 0x96, 0x05, 0x9b, 0x05, 0x60, 0x05, 0x61, 0x05, 0x1b, 0x05, 0x20, 0x05, + 0xd0, 0x04, 0xd0, 0x04, 0x7b, 0x04, 0x7c, 0x04, 0x1a, 0x04, 0x1b, 0x04, + 0xb0, 0x03, 0xb3, 0x03, 0x3d, 0x03, 0x3e, 0x03, 0xc1, 0x02, 0xc6, 0x02, + 0x40, 0x02, 0x40, 0x02, 0xb2, 0x01, 0xb5, 0x01, 0x25, 0x01, 0x25, 0x01, + 0x8b, 0x00, 0x8e, 0x00, 0xf3, 0xff, 0xf3, 0xff, 0x53, 0xff, 0x55, 0xff, + 0xb5, 0xfe, 0xb3, 0xfe, 0x16, 0xfe, 0x19, 0xfe, 0x77, 0xfd, 0x7a, 0xfd, + 0xdc, 0xfc, 0xdb, 0xfc, 0x42, 0xfc, 0x44, 0xfc, 0xad, 0xfb, 0xae, 0xfb, + 0x22, 0xfb, 0x22, 0xfb, 0x98, 0xfa, 0x99, 0xfa, 0x1d, 0xfa, 0x1c, 0xfa, + 0xa6, 0xf9, 0xa7, 0xf9, 0x36, 0xf9, 0x38, 0xf9, 0xd9, 0xf8, 0xd7, 0xf8, + 0x7b, 0xf8, 0x7e, 0xf8, 0x32, 0xf8, 0x31, 0xf8, 0xed, 0xf7, 0xed, 0xf7, + 0xb4, 0xf7, 0xb3, 0xf7, 0x83, 0xf7, 0x86, 0xf7, 0x60, 0xf7, 0x5e, 0xf7, + 0x41, 0xf7, 0x46, 0xf7, 0x2e, 0xf7, 0x2d, 0xf7, 0x20, 0xf7, 0x22, 0xf7, + 0x1a, 0xf7, 0x1a, 0xf7, 0x17, 0xf7, 0x18, 0xf7, 0x18, 0xf7, 0x1b, 0xf7, + 0x1e, 0xf7, 0x20, 0xf7, 0x27, 0xf7, 0x28, 0xf7, 0x2e, 0xf7, 0x30, 0xf7, + 0x37, 0xf7, 0x39, 0xf7, 0x3e, 0xf7, 0x3f, 0xf7, 0x43, 0xf7, 0x45, 0xf7, + 0x43, 0xf7, 0x44, 0xf7, 0x43, 0xf7, 0x43, 0xf7, 0x3b, 0xf7, 0x3c, 0xf7, + 0x2d, 0xf7, 0x2e, 0xf7, 0x1e, 0xf7, 0x1f, 0xf7, 0x06, 0xf7, 0x08, 0xf7, + 0xeb, 0xf6, 0xec, 0xf6, 0xca, 0xf6, 0xcb, 0xf6, 0xa2, 0xf6, 0xa5, 0xf6, + 0x7b, 0xf6, 0x79, 0xf6, 0x48, 0xf6, 0x4b, 0xf6, 0x18, 0xf6, 0x17, 0xf6, + 0xe1, 0xf5, 0xe2, 0xf5, 0xab, 0xf5, 0xac, 0xf5, 0x74, 0xf5, 0x76, 0xf5, + 0x3f, 0xf5, 0x3d, 0xf5, 0x07, 0xf5, 0x0b, 0xf5, 0xd9, 0xf4, 0xd7, 0xf4, + 0xa8, 0xf4, 0xab, 0xf4, 0x82, 0xf4, 0x82, 0xf4, 0x5d, 0xf4, 0x5f, 0xf4, + 0x41, 0xf4, 0x41, 0xf4, 0x2e, 0xf4, 0x2f, 0xf4, 0x22, 0xf4, 0x23, 0xf4, + 0x20, 0xf4, 0x21, 0xf4, 0x2d, 0xf4, 0x2c, 0xf4, 0x3e, 0xf4, 0x3e, 0xf4, + 0x5e, 0xf4, 0x61, 0xf4, 0x88, 0xf4, 0x89, 0xf4, 0xbc, 0xf4, 0xbe, 0xf4, + 0x00, 0xf5, 0x01, 0xf5, 0x4a, 0xf5, 0x4c, 0xf5, 0xa0, 0xf5, 0xa1, 0xf5, + 0x01, 0xf6, 0x03, 0xf6, 0x68, 0xf6, 0x69, 0xf6, 0xdb, 0xf6, 0xdd, 0xf6, + 0x52, 0xf7, 0x53, 0xf7, 0xcf, 0xf7, 0xd2, 0xf7, 0x55, 0xf8, 0x57, 0xf8, + 0xdb, 0xf8, 0xdc, 0xf8, 0x64, 0xf9, 0x66, 0xf9, 0xef, 0xf9, 0xf0, 0xf9, + 0x79, 0xfa, 0x79, 0xfa, 0x01, 0xfb, 0x04, 0xfb, 0x89, 0xfb, 0x8a, 0xfb, + 0x0b, 0xfc, 0x0e, 0xfc, 0x89, 0xfc, 0x8a, 0xfc, 0x02, 0xfd, 0x04, 0xfd, + 0x74, 0xfd, 0x76, 0xfd, 0xe1, 0xfd, 0xe2, 0xfd, 0x46, 0xfe, 0x4a, 0xfe, + 0xa4, 0xfe, 0xa4, 0xfe, 0xfa, 0xfe, 0xfe, 0xfe, 0x46, 0xff, 0x46, 0xff, + 0x8e, 0xff, 0x91, 0xff, 0xce, 0xff, 0xce, 0xff, 0x05, 0x00, 0x07, 0x00, + 0x3b, 0x00, 0x3e, 0x00, 0x65, 0x00, 0x66, 0x00, 0x91, 0x00, 0x93, 0x00, + 0xb5, 0x00, 0xb5, 0x00, 0xd6, 0x00, 0xd9, 0x00, 0xfa, 0x00, 0xfc, 0x00, + 0x18, 0x01, 0x18, 0x01, 0x3c, 0x01, 0x3f, 0x01, 0x5d, 0x01, 0x5d, 0x01, + 0x83, 0x01, 0x86, 0x01, 0xae, 0x01, 0xaf, 0x01, 0xd9, 0x01, 0xdb, 0x01, + 0x0f, 0x02, 0x12, 0x02, 0x46, 0x02, 0x46, 0x02, 0x88, 0x02, 0x8a, 0x02, + 0xcc, 0x02, 0xcd, 0x02, 0x1c, 0x03, 0x1b, 0x03, 0x6f, 0x03, 0x71, 0x03, + 0xcb, 0x03, 0xce, 0x03, 0x30, 0x04, 0x30, 0x04, 0x96, 0x04, 0x9a, 0x04, + 0x06, 0x05, 0x06, 0x05, 0x79, 0x05, 0x7d, 0x05, 0xf2, 0x05, 0xf3, 0x05, + 0x6e, 0x06, 0x6e, 0x06, 0xeb, 0x06, 0xee, 0x06, 0x6b, 0x07, 0x6a, 0x07, + 0xe9, 0x07, 0xed, 0x07, 0x6a, 0x08, 0x6a, 0x08, 0xe1, 0x08, 0xe4, 0x08, + 0x5e, 0x09, 0x5e, 0x09, 0xcd, 0x09, 0xcf, 0x09, 0x3a, 0x0a, 0x3d, 0x0a, + 0xa1, 0x0a, 0xa1, 0x0a, 0xfe, 0x0a, 0x02, 0x0b, 0x54, 0x0b, 0x55, 0x0b, + 0x9f, 0x0b, 0xa0, 0x0b, 0xe0, 0x0b, 0xe2, 0x0b, 0x14, 0x0c, 0x15, 0x0c, + 0x3e, 0x0c, 0x3f, 0x0c, 0x5c, 0x0c, 0x5c, 0x0c, 0x70, 0x0c, 0x73, 0x0c, + 0x77, 0x0c, 0x78, 0x0c, 0x72, 0x0c, 0x76, 0x0c, 0x67, 0x0c, 0x68, 0x0c, + 0x4c, 0x0c, 0x4d, 0x0c, 0x2d, 0x0c, 0x2e, 0x0c, 0x00, 0x0c, 0x01, 0x0c, + 0xce, 0x0b, 0xcf, 0x0b, 0x95, 0x0b, 0x97, 0x0b, 0x57, 0x0b, 0x58, 0x0b, + 0x15, 0x0b, 0x18, 0x0b, 0xd1, 0x0a, 0xd0, 0x0a, 0x85, 0x0a, 0x89, 0x0a, + 0x40, 0x0a, 0x42, 0x0a, 0xf6, 0x09, 0xf7, 0x09, 0xb0, 0x09, 0xb2, 0x09, + 0x69, 0x09, 0x6c, 0x09, 0x2b, 0x09, 0x2c, 0x09, 0xeb, 0x08, 0xed, 0x08, + 0xb3, 0x08, 0xb4, 0x08, 0x7e, 0x08, 0x7f, 0x08, 0x50, 0x08, 0x53, 0x08, + 0x28, 0x08, 0x26, 0x08, 0x04, 0x08, 0x07, 0x08, 0xe5, 0x07, 0xe6, 0x07, + 0xce, 0x07, 0xce, 0x07, 0xb8, 0x07, 0xba, 0x07, 0xac, 0x07, 0xaa, 0x07, + 0x9d, 0x07, 0x9f, 0x07, 0x93, 0x07, 0x93, 0x07, 0x8d, 0x07, 0x8e, 0x07, + 0x87, 0x07, 0x87, 0x07, 0x7f, 0x07, 0x7f, 0x07, 0x76, 0x07, 0x78, 0x07, + 0x6d, 0x07, 0x6d, 0x07, 0x61, 0x07, 0x62, 0x07, 0x4f, 0x07, 0x4f, 0x07, + 0x38, 0x07, 0x3a, 0x07, 0x1b, 0x07, 0x1a, 0x07, 0xf5, 0x06, 0xf7, 0x06, + 0xca, 0x06, 0xcc, 0x06, 0x94, 0x06, 0x94, 0x06, 0x58, 0x06, 0x59, 0x06, + 0x0e, 0x06, 0x0e, 0x06, 0xc0, 0x05, 0xc0, 0x05, 0x61, 0x05, 0x63, 0x05, + 0xfe, 0x04, 0xfd, 0x04, 0x90, 0x04, 0x91, 0x04, 0x19, 0x04, 0x1a, 0x04, + 0x99, 0x03, 0x9a, 0x03, 0x13, 0x03, 0x14, 0x03, 0x84, 0x02, 0x85, 0x02, + 0xf4, 0x01, 0xf4, 0x01, 0x59, 0x01, 0x5a, 0x01, 0xc0, 0x00, 0xc0, 0x00, + 0x22, 0x00, 0x21, 0x00, 0x81, 0xff, 0x83, 0xff, 0xe6, 0xfe, 0xe6, 0xfe, + 0x45, 0xfe, 0x46, 0xfe, 0xaf, 0xfd, 0xaf, 0xfd, 0x18, 0xfd, 0x1a, 0xfd, + 0x89, 0xfc, 0x89, 0xfc, 0xff, 0xfb, 0x01, 0xfc, 0x7c, 0xfb, 0x7c, 0xfb, + 0x02, 0xfb, 0x03, 0xfb, 0x8f, 0xfa, 0x91, 0xfa, 0x29, 0xfa, 0x2a, 0xfa, + 0xc9, 0xf9, 0xca, 0xf9, 0x76, 0xf9, 0x78, 0xf9, 0x2c, 0xf9, 0x2d, 0xf9, + 0xec, 0xf8, 0xec, 0xf8, 0xb3, 0xf8, 0xb4, 0xf8, 0x88, 0xf8, 0x89, 0xf8, + 0x62, 0xf8, 0x62, 0xf8, 0x44, 0xf8, 0x46, 0xf8, 0x2d, 0xf8, 0x2f, 0xf8, + 0x1e, 0xf8, 0x1f, 0xf8, 0x13, 0xf8, 0x14, 0xf8, 0x0d, 0xf8, 0x0f, 0xf8, + 0x0b, 0xf8, 0x09, 0xf8, 0x06, 0xf8, 0x0a, 0xf8, 0x06, 0xf8, 0x07, 0xf8, + 0x05, 0xf8, 0x06, 0xf8, 0x01, 0xf8, 0x04, 0xf8, 0xfc, 0xf7, 0xfc, 0xf7, + 0xf5, 0xf7, 0xf6, 0xf7, 0xe7, 0xf7, 0xe7, 0xf7, 0xd5, 0xf7, 0xd7, 0xf7, + 0xbf, 0xf7, 0xc0, 0xf7, 0xa3, 0xf7, 0xa5, 0xf7, 0x84, 0xf7, 0x85, 0xf7, + 0x5a, 0xf7, 0x5c, 0xf7, 0x31, 0xf7, 0x30, 0xf7, 0xfe, 0xf6, 0xff, 0xf6, + 0xc6, 0xf6, 0xc7, 0xf6, 0x8b, 0xf6, 0x8c, 0xf6, 0x4c, 0xf6, 0x4d, 0xf6, + 0x0a, 0xf6, 0x0d, 0xf6, 0xc8, 0xf5, 0xc8, 0xf5, 0x81, 0xf5, 0x83, 0xf5, + 0x41, 0xf5, 0x43, 0xf5, 0xfe, 0xf4, 0xff, 0xf4, 0xbd, 0xf4, 0xbe, 0xf4, + 0x84, 0xf4, 0x85, 0xf4, 0x4b, 0xf4, 0x4c, 0xf4, 0x1c, 0xf4, 0x20, 0xf4, + 0xf2, 0xf3, 0xf2, 0xf3, 0xd0, 0xf3, 0xd3, 0xf3, 0xb8, 0xf3, 0xb9, 0xf3, + 0xaa, 0xf3, 0xac, 0xf3, 0xa6, 0xf3, 0xa7, 0xf3, 0xae, 0xf3, 0xb0, 0xf3, + 0xc3, 0xf3, 0xc2, 0xf3, 0xdd, 0xf3, 0xe1, 0xf3, 0x0b, 0xf4, 0x0b, 0xf4, + 0x40, 0xf4, 0x41, 0xf4, 0x81, 0xf4, 0x83, 0xf4, 0xce, 0xf4, 0xce, 0xf4, + 0x24, 0xf5, 0x25, 0xf5, 0x81, 0xf5, 0x84, 0xf5, 0xed, 0xf5, 0xef, 0xf5, + 0x5a, 0xf6, 0x5c, 0xf6, 0xd4, 0xf6, 0xd6, 0xf6, 0x4f, 0xf7, 0x51, 0xf7, + 0xd0, 0xf7, 0xd2, 0xf7, 0x52, 0xf8, 0x53, 0xf8, 0xd8, 0xf8, 0xd9, 0xf8, + 0x5d, 0xf9, 0x60, 0xf9, 0xe0, 0xf9, 0xe0, 0xf9, 0x63, 0xfa, 0x65, 0xfa, + 0xe1, 0xfa, 0xe1, 0xfa, 0x5c, 0xfb, 0x5d, 0xfb, 0xd0, 0xfb, 0xd2, 0xfb, + 0x43, 0xfc, 0x41, 0xfc, 0xa7, 0xfc, 0xaa, 0xfc, 0x0b, 0xfd, 0x09, 0xfd, + 0x62, 0xfd, 0x66, 0xfd, 0xb6, 0xfd, 0xb4, 0xfd, 0xff, 0xfd, 0x01, 0xfe, + 0x42, 0xfe, 0x42, 0xfe, 0x7d, 0xfe, 0x7e, 0xfe, 0xb3, 0xfe, 0xb4, 0xfe, + 0xe1, 0xfe, 0xe3, 0xfe, 0x0d, 0xff, 0x0f, 0xff, 0x30, 0xff, 0x30, 0xff, + 0x52, 0xff, 0x53, 0xff, 0x73, 0xff, 0x73, 0xff, 0x8e, 0xff, 0x91, 0xff, + 0xb0, 0xff, 0xb0, 0xff, 0xc9, 0xff, 0xcb, 0xff, 0xee, 0xff, 0xed, 0xff, + 0x0e, 0x00, 0x10, 0x00, 0x37, 0x00, 0x37, 0x00, 0x63, 0x00, 0x67, 0x00, + 0x97, 0x00, 0x95, 0x00, 0xcf, 0x00, 0xd2, 0x00, 0x0f, 0x01, 0x0e, 0x01, + 0x58, 0x01, 0x5b, 0x01, 0xa8, 0x01, 0xa9, 0x01, 0x01, 0x02, 0x03, 0x02, + 0x61, 0x02, 0x62, 0x02, 0xcb, 0x02, 0xcc, 0x02, 0x3a, 0x03, 0x3a, 0x03, + 0xaf, 0x03, 0xb0, 0x03, 0x2d, 0x04, 0x2e, 0x04, 0xae, 0x04, 0xae, 0x04, + 0x33, 0x05, 0x36, 0x05, 0xbe, 0x05, 0xbe, 0x05, 0x49, 0x06, 0x49, 0x06, + 0xd5, 0x06, 0xd7, 0x06, 0x60, 0x07, 0x60, 0x07, 0xe6, 0x07, 0xe7, 0x07, + 0x6f, 0x08, 0x71, 0x08, 0xee, 0x08, 0xee, 0x08, 0x6b, 0x09, 0x6c, 0x09, + 0xde, 0x09, 0xdf, 0x09, 0x48, 0x0a, 0x4a, 0x0a, 0xaf, 0x0a, 0xaf, 0x0a, + 0x05, 0x0b, 0x07, 0x0b, 0x56, 0x0b, 0x56, 0x0b, 0x96, 0x0b, 0x96, 0x0b, + 0xcf, 0x0b, 0xce, 0x0b, 0xf8, 0x0b, 0xf9, 0x0b, 0x17, 0x0c, 0x16, 0x0c, + 0x2a, 0x0c, 0x2c, 0x0c, 0x31, 0x0c, 0x30, 0x0c, 0x2d, 0x0c, 0x2d, 0x0c, + 0x1e, 0x0c, 0x1d, 0x0c, 0x05, 0x0c, 0x06, 0x0c, 0xe3, 0x0b, 0xe3, 0x0b, + 0xb9, 0x0b, 0xb9, 0x0b, 0x88, 0x0b, 0x88, 0x0b, 0x53, 0x0b, 0x52, 0x0b, + 0x14, 0x0b, 0x16, 0x0b, 0xd9, 0x0a, 0xd8, 0x0a, 0x96, 0x0a, 0x97, 0x0a, + 0x55, 0x0a, 0x58, 0x0a, 0x16, 0x0a, 0x14, 0x0a, 0xd5, 0x09, 0xd7, 0x09, + 0x9a, 0x09, 0x98, 0x09, 0x60, 0x09, 0x60, 0x09, 0x29, 0x09, 0x2b, 0x09, + 0xfb, 0x08, 0xf9, 0x08, 0xcf, 0x08, 0xd1, 0x08, 0xab, 0x08, 0xab, 0x08, + 0x8e, 0x08, 0x8d, 0x08, 0x75, 0x08, 0x76, 0x08, 0x64, 0x08, 0x64, 0x08, + 0x57, 0x08, 0x5a, 0x08, 0x51, 0x08, 0x52, 0x08, 0x4f, 0x08, 0x50, 0x08, + 0x51, 0x08, 0x52, 0x08, 0x55, 0x08, 0x56, 0x08, 0x5d, 0x08, 0x5d, 0x08, + 0x65, 0x08, 0x65, 0x08, 0x6c, 0x08, 0x6e, 0x08, 0x75, 0x08, 0x76, 0x08, + 0x79, 0x08, 0x79, 0x08, 0x7a, 0x08, 0x7c, 0x08, 0x77, 0x08, 0x76, 0x08, + 0x6f, 0x08, 0x6f, 0x08, 0x5c, 0x08, 0x5e, 0x08, 0x46, 0x08, 0x47, 0x08, + 0x25, 0x08, 0x25, 0x08, 0xf7, 0x07, 0xf8, 0x07, 0xc7, 0x07, 0xc7, 0x07, + 0x81, 0x07, 0x83, 0x07, 0x3c, 0x07, 0x3b, 0x07, 0xe5, 0x06, 0xe7, 0x06, + 0x83, 0x06, 0x83, 0x06, 0x1d, 0x06, 0x1d, 0x06, 0xa3, 0x05, 0xa5, 0x05, + 0x28, 0x05, 0x26, 0x05, 0xa0, 0x04, 0xa2, 0x04, 0x10, 0x04, 0x10, 0x04, + 0x7e, 0x03, 0x7e, 0x03, 0xdc, 0x02, 0xdf, 0x02, 0x42, 0x02, 0x41, 0x02, + 0x9a, 0x01, 0x9d, 0x01, 0xf8, 0x00, 0xf8, 0x00, 0x55, 0x00, 0x55, 0x00, + 0xaf, 0xff, 0xb0, 0xff, 0x12, 0xff, 0x11, 0xff, 0x72, 0xfe, 0x74, 0xfe, + 0xdd, 0xfd, 0xde, 0xfd, 0x4e, 0xfd, 0x4f, 0xfd, 0xc2, 0xfc, 0xc4, 0xfc, + 0x47, 0xfc, 0x46, 0xfc, 0xc9, 0xfb, 0xcb, 0xfb, 0x5f, 0xfb, 0x5e, 0xfb, + 0xfb, 0xfa, 0xfb, 0xfa, 0xa1, 0xfa, 0xa1, 0xfa, 0x54, 0xfa, 0x54, 0xfa, + 0x0e, 0xfa, 0x0f, 0xfa, 0xd7, 0xf9, 0xd6, 0xf9, 0xa4, 0xf9, 0xa5, 0xf9, + 0x80, 0xf9, 0x7f, 0xf9, 0x60, 0xf9, 0x60, 0xf9, 0x49, 0xf9, 0x48, 0xf9, + 0x38, 0xf9, 0x38, 0xf9, 0x2b, 0xf9, 0x2b, 0xf9, 0x28, 0xf9, 0x25, 0xf9, + 0x1d, 0xf9, 0x20, 0xf9, 0x1f, 0xf9, 0x1c, 0xf9, 0x1a, 0xf9, 0x1b, 0xf9, + 0x1a, 0xf9, 0x19, 0xf9, 0x12, 0xf9, 0x12, 0xf9, 0x0a, 0xf9, 0x0a, 0xf9, + 0xfe, 0xf8, 0xfd, 0xf8, 0xeb, 0xf8, 0xeb, 0xf8, 0xd5, 0xf8, 0xd4, 0xf8, + 0xb5, 0xf8, 0xb6, 0xf8, 0x94, 0xf8, 0x92, 0xf8, 0x66, 0xf8, 0x66, 0xf8, + 0x34, 0xf8, 0x35, 0xf8, 0xfb, 0xf7, 0xfa, 0xf7, 0xbe, 0xf7, 0xbd, 0xf7, + 0x75, 0xf7, 0x76, 0xf7, 0x2e, 0xf7, 0x2c, 0xf7, 0xdb, 0xf6, 0xdb, 0xf6, + 0x8a, 0xf6, 0x89, 0xf6, 0x34, 0xf6, 0x34, 0xf6, 0xdb, 0xf5, 0xdb, 0xf5, + 0x84, 0xf5, 0x85, 0xf5, 0x2c, 0xf5, 0x2c, 0xf5, 0xdb, 0xf4, 0xda, 0xf4, + 0x88, 0xf4, 0x8a, 0xf4, 0x3d, 0xf4, 0x3c, 0xf4, 0xf9, 0xf3, 0xf9, 0xf3, + 0xbb, 0xf3, 0xbc, 0xf3, 0x87, 0xf3, 0x86, 0xf3, 0x5c, 0xf3, 0x5d, 0xf3, + 0x3b, 0xf3, 0x3d, 0xf3, 0x28, 0xf3, 0x27, 0xf3, 0x20, 0xf3, 0x22, 0xf3, + 0x24, 0xf3, 0x22, 0xf3, 0x37, 0xf3, 0x38, 0xf3, 0x55, 0xf3, 0x54, 0xf3, + 0x7e, 0xf3, 0x81, 0xf3, 0xb8, 0xf3, 0xb6, 0xf3, 0xfc, 0xf3, 0xfc, 0xf3, + 0x4c, 0xf4, 0x4c, 0xf4, 0xa7, 0xf4, 0xa5, 0xf4, 0x09, 0xf5, 0x0b, 0xf5, + 0x77, 0xf5, 0x76, 0xf5, 0xec, 0xf5, 0xeb, 0xf5, 0x64, 0xf6, 0x64, 0xf6, + 0xe5, 0xf6, 0xe4, 0xf6, 0x66, 0xf7, 0x66, 0xf7, 0xea, 0xf7, 0xea, 0xf7, + 0x71, 0xf8, 0x70, 0xf8, 0xef, 0xf8, 0xf1, 0xf8, 0x76, 0xf9, 0x75, 0xf9, + 0xf1, 0xf9, 0xf0, 0xf9, 0x6a, 0xfa, 0x6c, 0xfa, 0xe0, 0xfa, 0xdd, 0xfa, + 0x47, 0xfb, 0x4a, 0xfb, 0xb0, 0xfb, 0xaf, 0xfb, 0x0d, 0xfc, 0x0d, 0xfc, + 0x61, 0xfc, 0x61, 0xfc, 0xae, 0xfc, 0xac, 0xfc, 0xf2, 0xfc, 0xf2, 0xfc, + 0x2c, 0xfd, 0x2b, 0xfd, 0x60, 0xfd, 0x5e, 0xfd, 0x8b, 0xfd, 0x8d, 0xfd, + 0xb1, 0xfd, 0xaf, 0xfd, 0xd2, 0xfd, 0xd5, 0xfd, 0xeb, 0xfd, 0xe9, 0xfd, + 0x03, 0xfe, 0x03, 0xfe, 0x17, 0xfe, 0x16, 0xfe, 0x29, 0xfe, 0x29, 0xfe, + 0x3e, 0xfe, 0x3d, 0xfe, 0x50, 0xfe, 0x50, 0xfe, 0x69, 0xfe, 0x67, 0xfe, + 0x81, 0xfe, 0x83, 0xfe, 0xa1, 0xfe, 0x9e, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, + 0xf2, 0xfe, 0xf1, 0xfe, 0x28, 0xff, 0x29, 0xff, 0x66, 0xff, 0x65, 0xff, + 0xab, 0xff, 0xab, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0x56, 0x00, 0x57, 0x00, + 0xbe, 0x00, 0xba, 0x00, 0x28, 0x01, 0x28, 0x01, 0xa0, 0x01, 0x9e, 0x01, + 0x20, 0x02, 0x1f, 0x02, 0xa4, 0x02, 0xa5, 0x02, 0x34, 0x03, 0x32, 0x03, + 0xc7, 0x03, 0xc7, 0x03, 0x5c, 0x04, 0x5b, 0x04, 0xfb, 0x04, 0xf9, 0x04, + 0x92, 0x05, 0x94, 0x05, 0x31, 0x06, 0x30, 0x06, 0xc9, 0x06, 0xca, 0x06, + 0x62, 0x07, 0x60, 0x07, 0xf5, 0x07, 0xf5, 0x07, 0x82, 0x08, 0x81, 0x08, + 0x07, 0x09, 0x08, 0x09, 0x83, 0x09, 0x82, 0x09, 0xf8, 0x09, 0xf6, 0x09, + 0x5f, 0x0a, 0x5f, 0x0a, 0xbb, 0x0a, 0xba, 0x0a, 0x0c, 0x0b, 0x0c, 0x0b, + 0x50, 0x0b, 0x4f, 0x0b, 0x87, 0x0b, 0x87, 0x0b, 0xb1, 0x0b, 0xaf, 0x0b, + 0xc9, 0x0b, 0xca, 0x0b, 0xdc, 0x0b, 0xdb, 0x0b, 0xdc, 0x0b, 0xdb, 0x0b, + 0xd3, 0x0b, 0xd4, 0x0b, 0xc1, 0x0b, 0xc0, 0x0b, 0xa1, 0x0b, 0xa1, 0x0b, + 0x7d, 0x0b, 0x7d, 0x0b, 0x4e, 0x0b, 0x4b, 0x0b, 0x19, 0x0b, 0x1b, 0x0b, + 0xe2, 0x0a, 0xdf, 0x0a, 0xa5, 0x0a, 0xa5, 0x0a, 0x66, 0x0a, 0x66, 0x0a, + 0x29, 0x0a, 0x26, 0x0a, 0xe9, 0x09, 0xe8, 0x09, 0xad, 0x09, 0xae, 0x09, + 0x78, 0x09, 0x77, 0x09, 0x41, 0x09, 0x41, 0x09, 0x16, 0x09, 0x15, 0x09, + 0xec, 0x08, 0xeb, 0x08, 0xcb, 0x08, 0xcb, 0x08, 0xb0, 0x08, 0xb1, 0x08, + 0xa0, 0x08, 0x9d, 0x08, 0x92, 0x08, 0x94, 0x08, 0x91, 0x08, 0x8e, 0x08, + 0x91, 0x08, 0x92, 0x08, 0x9d, 0x08, 0x9d, 0x08, 0xab, 0x08, 0xa9, 0x08, + 0xc0, 0x08, 0xc0, 0x08, 0xd9, 0x08, 0xd8, 0x08, 0xf2, 0x08, 0xf3, 0x08, + 0x12, 0x09, 0x0f, 0x09, 0x2c, 0x09, 0x2c, 0x09, 0x48, 0x09, 0x46, 0x09, + 0x60, 0x09, 0x60, 0x09, 0x75, 0x09, 0x73, 0x09, 0x84, 0x09, 0x84, 0x09, + 0x8e, 0x09, 0x8c, 0x09, 0x8e, 0x09, 0x8f, 0x09, 0x86, 0x09, 0x83, 0x09, + 0x74, 0x09, 0x75, 0x09, 0x56, 0x09, 0x54, 0x09, 0x2f, 0x09, 0x2d, 0x09, + 0xf8, 0x08, 0xf8, 0x08, 0xb8, 0x08, 0xb5, 0x08, 0x69, 0x08, 0x6b, 0x08, + 0x0f, 0x08, 0x0c, 0x08, 0xa5, 0x07, 0xa4, 0x07, 0x33, 0x07, 0x33, 0x07, + 0xb4, 0x06, 0xb0, 0x06, 0x2a, 0x06, 0x2b, 0x06, 0x9a, 0x05, 0x97, 0x05, + 0xfb, 0x04, 0xfa, 0x04, 0x5f, 0x04, 0x5e, 0x04, 0xb4, 0x03, 0xb3, 0x03, + 0x0c, 0x03, 0x0c, 0x03, 0x60, 0x02, 0x5d, 0x02, 0xb0, 0x01, 0xae, 0x01, + 0x05, 0x01, 0x04, 0x01, 0x5a, 0x00, 0x58, 0x00, 0xb6, 0xff, 0xb5, 0xff, + 0x14, 0xff, 0x13, 0xff, 0x7f, 0xfe, 0x7c, 0xfe, 0xeb, 0xfd, 0xe9, 0xfd, + 0x64, 0xfd, 0x64, 0xfd, 0xe8, 0xfc, 0xe6, 0xfc, 0x72, 0xfc, 0x73, 0xfc, + 0x0f, 0xfc, 0x0d, 0xfc, 0xb2, 0xfb, 0xaf, 0xfb, 0x62, 0xfb, 0x61, 0xfb, + 0x1d, 0xfb, 0x1b, 0xfb, 0xe2, 0xfa, 0xe4, 0xfa, 0xb5, 0xfa, 0xb4, 0xfa, + 0x91, 0xfa, 0x91, 0xfa, 0x76, 0xfa, 0x74, 0xfa, 0x61, 0xfa, 0x60, 0xfa, + 0x57, 0xfa, 0x56, 0xfa, 0x4e, 0xfa, 0x4c, 0xfa, 0x4c, 0xfa, 0x4b, 0xfa, + 0x4d, 0xfa, 0x4b, 0xfa, 0x4d, 0xfa, 0x4c, 0xfa, 0x4f, 0xfa, 0x4f, 0xfa, + 0x4c, 0xfa, 0x4d, 0xfa, 0x4d, 0xfa, 0x48, 0xfa, 0x43, 0xfa, 0x44, 0xfa, + 0x36, 0xfa, 0x35, 0xfa, 0x23, 0xfa, 0x22, 0xfa, 0x07, 0xfa, 0x07, 0xfa, + 0xe5, 0xf9, 0xe4, 0xf9, 0xb8, 0xf9, 0xb8, 0xf9, 0x85, 0xf9, 0x85, 0xf9, + 0x4a, 0xf9, 0x49, 0xf9, 0x04, 0xf9, 0x01, 0xf9, 0xb7, 0xf8, 0xb8, 0xf8, + 0x61, 0xf8, 0x5e, 0xf8, 0x05, 0xf8, 0x06, 0xf8, 0xa4, 0xf7, 0xa3, 0xf7, + 0x3c, 0xf7, 0x3a, 0xf7, 0xd0, 0xf6, 0xd1, 0xf6, 0x63, 0xf6, 0x63, 0xf6, + 0xf4, 0xf5, 0xf3, 0xf5, 0x88, 0xf5, 0x88, 0xf5, 0x1d, 0xf5, 0x1b, 0xf5, + 0xb3, 0xf4, 0xb4, 0xf4, 0x53, 0xf4, 0x52, 0xf4, 0xf4, 0xf3, 0xf4, 0xf3, + 0xa3, 0xf3, 0xa4, 0xf3, 0x58, 0xf3, 0x57, 0xf3, 0x18, 0xf3, 0x18, 0xf3, + 0xe6, 0xf2, 0xe5, 0xf2, 0xbd, 0xf2, 0xbd, 0xf2, 0xa5, 0xf2, 0xa7, 0xf2, + 0x9d, 0xf2, 0x9b, 0xf2, 0x9e, 0xf2, 0x9f, 0xf2, 0xb4, 0xf2, 0xb4, 0xf2, + 0xd2, 0xf2, 0xd1, 0xf2, 0x04, 0xf3, 0x02, 0xf3, 0x3d, 0xf3, 0x3e, 0xf3, + 0x8a, 0xf3, 0x88, 0xf3, 0xde, 0xf3, 0xe1, 0xf3, 0x42, 0xf4, 0x3f, 0xf4, + 0xac, 0xf4, 0xac, 0xf4, 0x1f, 0xf5, 0x1d, 0xf5, 0x9b, 0xf5, 0x9a, 0xf5, + 0x19, 0xf6, 0x19, 0xf6, 0x9b, 0xf6, 0x9d, 0xf6, 0x23, 0xf7, 0x21, 0xf7, + 0xa7, 0xf7, 0xa8, 0xf7, 0x2b, 0xf8, 0x2a, 0xf8, 0xae, 0xf8, 0xaf, 0xf8, + 0x2c, 0xf9, 0x2c, 0xf9, 0xa6, 0xf9, 0xa5, 0xf9, 0x15, 0xfa, 0x15, 0xfa, + 0x83, 0xfa, 0x83, 0xfa, 0xe2, 0xfa, 0xdf, 0xfa, 0x3d, 0xfb, 0x3d, 0xfb, + 0x89, 0xfb, 0x8a, 0xfb, 0xd0, 0xfb, 0xcd, 0xfb, 0x0b, 0xfc, 0x0e, 0xfc, + 0x3e, 0xfc, 0x3b, 0xfc, 0x68, 0xfc, 0x67, 0xfc, 0x87, 0xfc, 0x87, 0xfc, + 0xa1, 0xfc, 0xa0, 0xfc, 0xb4, 0xfc, 0xb2, 0xfc, 0xbe, 0xfc, 0xbd, 0xfc, + 0xcb, 0xfc, 0xc8, 0xfc, 0xce, 0xfc, 0xcd, 0xfc, 0xd4, 0xfc, 0xd4, 0xfc, + 0xd9, 0xfc, 0xd9, 0xfc, 0xde, 0xfc, 0xdd, 0xfc, 0xea, 0xfc, 0xe8, 0xfc, + 0xf5, 0xfc, 0xf5, 0xfc, 0x0c, 0xfd, 0x0c, 0xfd, 0x26, 0xfd, 0x24, 0xfd, + 0x4d, 0xfd, 0x4a, 0xfd, 0x77, 0xfd, 0x77, 0xfd, 0xaf, 0xfd, 0xae, 0xfd, + 0xf4, 0xfd, 0xf3, 0xfd, 0x41, 0xfe, 0x41, 0xfe, 0x9e, 0xfe, 0x9b, 0xfe, + 0x02, 0xff, 0x03, 0xff, 0x75, 0xff, 0x71, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0x79, 0x00, 0x76, 0x00, 0x0c, 0x01, 0x0c, 0x01, 0xa3, 0x01, 0xa0, 0x01, + 0x43, 0x02, 0x42, 0x02, 0xe9, 0x02, 0xe7, 0x02, 0x92, 0x03, 0x91, 0x03, + 0x41, 0x04, 0x3f, 0x04, 0xeb, 0x04, 0xe9, 0x04, 0x9a, 0x05, 0x99, 0x05, + 0x44, 0x06, 0x42, 0x06, 0xe6, 0x06, 0xe5, 0x06, 0x89, 0x07, 0x87, 0x07, + 0x1e, 0x08, 0x1d, 0x08, 0xae, 0x08, 0xac, 0x08, 0x30, 0x09, 0x30, 0x09, + 0xa9, 0x09, 0xa7, 0x09, 0x16, 0x0a, 0x15, 0x0a, 0x70, 0x0a, 0x70, 0x0a, + 0xc3, 0x0a, 0xc1, 0x0a, 0x02, 0x0b, 0x02, 0x0b, 0x35, 0x0b, 0x34, 0x0b, + 0x5b, 0x0b, 0x59, 0x0b, 0x6f, 0x0b, 0x6e, 0x0b, 0x79, 0x0b, 0x78, 0x0b, + 0x74, 0x0b, 0x73, 0x0b, 0x61, 0x0b, 0x62, 0x0b, 0x49, 0x0b, 0x46, 0x0b, + 0x20, 0x0b, 0x21, 0x0b, 0xf6, 0x0a, 0xf5, 0x0a, 0xc3, 0x0a, 0xc0, 0x0a, + 0x89, 0x0a, 0x8b, 0x0a, 0x4f, 0x0a, 0x4b, 0x0a, 0x10, 0x0a, 0x11, 0x0a, + 0xd4, 0x09, 0xd3, 0x09, 0x97, 0x09, 0x95, 0x09, 0x5e, 0x09, 0x5c, 0x09, + 0x29, 0x09, 0x27, 0x09, 0xf9, 0x08, 0xf9, 0x08, 0xd2, 0x08, 0xd1, 0x08, + 0xaf, 0x08, 0xae, 0x08, 0x97, 0x08, 0x95, 0x08, 0x87, 0x08, 0x85, 0x08, + 0x80, 0x08, 0x7e, 0x08, 0x81, 0x08, 0x80, 0x08, 0x8c, 0x08, 0x89, 0x08, + 0x9c, 0x08, 0x9c, 0x08, 0xbb, 0x08, 0xb8, 0x08, 0xdc, 0x08, 0xd8, 0x08, + 0x04, 0x09, 0x02, 0x09, 0x30, 0x09, 0x2e, 0x09, 0x5f, 0x09, 0x5d, 0x09, + 0x92, 0x09, 0x8f, 0x09, 0xc5, 0x09, 0xc3, 0x09, 0xf5, 0x09, 0xf3, 0x09, + 0x25, 0x0a, 0x24, 0x0a, 0x4f, 0x0a, 0x4c, 0x0a, 0x72, 0x0a, 0x71, 0x0a, + 0x92, 0x0a, 0x8e, 0x0a, 0xa5, 0x0a, 0xa5, 0x0a, 0xae, 0x0a, 0xad, 0x0a, + 0xae, 0x0a, 0xad, 0x0a, 0xa1, 0x0a, 0x9e, 0x0a, 0x87, 0x0a, 0x85, 0x0a, + 0x5d, 0x0a, 0x5c, 0x0a, 0x26, 0x0a, 0x23, 0x0a, 0xe0, 0x09, 0xdf, 0x09, + 0x8d, 0x09, 0x8a, 0x09, 0x27, 0x09, 0x28, 0x09, 0xb9, 0x08, 0xb6, 0x08, + 0x3a, 0x08, 0x3a, 0x08, 0xb0, 0x07, 0xaf, 0x07, 0x1e, 0x07, 0x1c, 0x07, + 0x7d, 0x06, 0x7c, 0x06, 0xda, 0x05, 0xd7, 0x05, 0x2b, 0x05, 0x29, 0x05, + 0x7a, 0x04, 0x79, 0x04, 0xc5, 0x03, 0xc5, 0x03, 0x12, 0x03, 0x0f, 0x03, + 0x5a, 0x02, 0x5a, 0x02, 0xaa, 0x01, 0xa8, 0x01, 0xfa, 0x00, 0xf9, 0x00, + 0x53, 0x00, 0x51, 0x00, 0xb1, 0xff, 0xb0, 0xff, 0x1a, 0xff, 0x19, 0xff, + 0x8e, 0xfe, 0x8b, 0xfe, 0x08, 0xfe, 0x0b, 0xfe, 0x96, 0xfd, 0x91, 0xfd, + 0x28, 0xfd, 0x2a, 0xfd, 0xce, 0xfc, 0xcb, 0xfc, 0x7b, 0xfc, 0x7b, 0xfc, + 0x39, 0xfc, 0x39, 0xfc, 0x01, 0xfc, 0xff, 0xfb, 0xd5, 0xfb, 0xd5, 0xfb, + 0xb5, 0xfb, 0xb3, 0xfb, 0x9c, 0xfb, 0x9b, 0xfb, 0x90, 0xfb, 0x90, 0xfb, + 0x89, 0xfb, 0x86, 0xfb, 0x89, 0xfb, 0x88, 0xfb, 0x8c, 0xfb, 0x8b, 0xfb, + 0x91, 0xfb, 0x8e, 0xfb, 0x9b, 0xfb, 0x99, 0xfb, 0x9f, 0xfb, 0x9e, 0xfb, + 0xa5, 0xfb, 0xa2, 0xfb, 0xa4, 0xfb, 0xa4, 0xfb, 0xa0, 0xfb, 0x9f, 0xfb, + 0x94, 0xfb, 0x92, 0xfb, 0x80, 0xfb, 0x80, 0xfb, 0x64, 0xfb, 0x60, 0xfb, + 0x3e, 0xfb, 0x3f, 0xfb, 0x0c, 0xfb, 0x0c, 0xfb, 0xd3, 0xfa, 0xd1, 0xfa, + 0x8d, 0xfa, 0x8d, 0xfa, 0x3c, 0xfa, 0x39, 0xfa, 0xe4, 0xf9, 0xe3, 0xf9, + 0x7e, 0xf9, 0x7d, 0xf9, 0x13, 0xf9, 0x12, 0xf9, 0x9f, 0xf8, 0x9e, 0xf8, + 0x22, 0xf8, 0x22, 0xf8, 0xa7, 0xf7, 0xa6, 0xf7, 0x24, 0xf7, 0x21, 0xf7, + 0xa0, 0xf6, 0x9f, 0xf6, 0x1d, 0xf6, 0x1a, 0xf6, 0x99, 0xf5, 0x97, 0xf5, + 0x19, 0xf5, 0x17, 0xf5, 0xa2, 0xf4, 0xa0, 0xf4, 0x2e, 0xf4, 0x2b, 0xf4, + 0xc3, 0xf3, 0xc2, 0xf3, 0x65, 0xf3, 0x62, 0xf3, 0x10, 0xf3, 0x0c, 0xf3, + 0xcb, 0xf2, 0xc9, 0xf2, 0x8e, 0xf2, 0x8c, 0xf2, 0x67, 0xf2, 0x64, 0xf2, + 0x4a, 0xf2, 0x4a, 0xf2, 0x40, 0xf2, 0x3d, 0xf2, 0x47, 0xf2, 0x45, 0xf2, + 0x5c, 0xf2, 0x59, 0xf2, 0x86, 0xf2, 0x84, 0xf2, 0xb5, 0xf2, 0xb3, 0xf2, + 0xff, 0xf2, 0xfd, 0xf2, 0x4a, 0xf3, 0x49, 0xf3, 0xab, 0xf3, 0xaa, 0xf3, + 0x11, 0xf4, 0x10, 0xf4, 0x85, 0xf4, 0x82, 0xf4, 0xfe, 0xf4, 0xfd, 0xf4, + 0x7c, 0xf5, 0x7a, 0xf5, 0x02, 0xf6, 0x00, 0xf6, 0x87, 0xf6, 0x84, 0xf6, + 0x0c, 0xf7, 0x0a, 0xf7, 0x94, 0xf7, 0x90, 0xf7, 0x10, 0xf8, 0x0f, 0xf8, + 0x92, 0xf8, 0x90, 0xf8, 0x06, 0xf9, 0x02, 0xf9, 0x77, 0xf9, 0x75, 0xf9, + 0xdb, 0xf9, 0xd7, 0xf9, 0x38, 0xfa, 0x37, 0xfa, 0x8d, 0xfa, 0x89, 0xfa, + 0xd3, 0xfa, 0xd2, 0xfa, 0x12, 0xfb, 0x0e, 0xfb, 0x43, 0xfb, 0x41, 0xfb, + 0x68, 0xfb, 0x66, 0xfb, 0x88, 0xfb, 0x87, 0xfb, 0x9a, 0xfb, 0x98, 0xfb, + 0xa6, 0xfb, 0xa5, 0xfb, 0xac, 0xfb, 0xa8, 0xfb, 0xa8, 0xfb, 0xa7, 0xfb, + 0xa1, 0xfb, 0x9f, 0xfb, 0x97, 0xfb, 0x96, 0xfb, 0x8c, 0xfb, 0x8b, 0xfb, + 0x83, 0xfb, 0x80, 0xfb, 0x77, 0xfb, 0x78, 0xfb, 0x75, 0xfb, 0x72, 0xfb, + 0x74, 0xfb, 0x72, 0xfb, 0x7c, 0xfb, 0x7b, 0xfb, 0x8c, 0xfb, 0x88, 0xfb, + 0xa6, 0xfb, 0xa5, 0xfb, 0xcc, 0xfb, 0xc9, 0xfb, 0xfb, 0xfb, 0xfa, 0xfb, + 0x3a, 0xfc, 0x37, 0xfc, 0x84, 0xfc, 0x83, 0xfc, 0xdd, 0xfc, 0xd9, 0xfc, + 0x41, 0xfd, 0x41, 0xfd, 0xb9, 0xfd, 0xb6, 0xfd, 0x39, 0xfe, 0x36, 0xfe, + 0xc6, 0xfe, 0xc5, 0xfe, 0x5f, 0xff, 0x5c, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0xad, 0x00, 0x5f, 0x01, 0x5c, 0x01, 0x18, 0x02, 0x17, 0x02, + 0xd3, 0x02, 0xd0, 0x02, 0x90, 0x03, 0x8f, 0x03, 0x4b, 0x04, 0x4a, 0x04, + 0x08, 0x05, 0x07, 0x05, 0xba, 0x05, 0xb9, 0x05, 0x6c, 0x06, 0x6a, 0x06, + 0x14, 0x07, 0x13, 0x07, 0xb1, 0x07, 0xaf, 0x07, 0x46, 0x08, 0x43, 0x08, + 0xc8, 0x08, 0xc7, 0x08, 0x43, 0x09, 0x41, 0x09, 0xad, 0x09, 0xab, 0x09, + 0x07, 0x0a, 0x04, 0x0a, 0x51, 0x0a, 0x51, 0x0a, 0x8a, 0x0a, 0x8a, 0x0a, + 0xba, 0x0a, 0xb8, 0x0a, 0xd4, 0x0a, 0xd2, 0x0a, 0xe1, 0x0a, 0xe0, 0x0a, + 0xdf, 0x0a, 0xdc, 0x0a, 0xcf, 0x0a, 0xcf, 0x0a, 0xb7, 0x0a, 0xb6, 0x0a, + 0x94, 0x0a, 0x93, 0x0a, 0x67, 0x0a, 0x65, 0x0a, 0x32, 0x0a, 0x33, 0x0a, + 0xfc, 0x09, 0xf7, 0x09, 0xbf, 0x09, 0xc1, 0x09, 0x82, 0x09, 0x7f, 0x09, + 0x43, 0x09, 0x45, 0x09, 0x0b, 0x09, 0x08, 0x09, 0xd1, 0x08, 0xd0, 0x08, + 0xa3, 0x08, 0xa1, 0x08, 0x75, 0x08, 0x73, 0x08, 0x53, 0x08, 0x53, 0x08, + 0x39, 0x08, 0x38, 0x08, 0x29, 0x08, 0x29, 0x08, 0x25, 0x08, 0x22, 0x08, + 0x27, 0x08, 0x27, 0x08, 0x36, 0x08, 0x37, 0x08, 0x52, 0x08, 0x4f, 0x08, + 0x73, 0x08, 0x74, 0x08, 0xa2, 0x08, 0xa0, 0x08, 0xd4, 0x08, 0xd2, 0x08, + 0x11, 0x09, 0x10, 0x09, 0x54, 0x09, 0x52, 0x09, 0x97, 0x09, 0x96, 0x09, + 0xe1, 0x09, 0xdf, 0x09, 0x29, 0x0a, 0x27, 0x0a, 0x74, 0x0a, 0x71, 0x0a, + 0xb7, 0x0a, 0xb5, 0x0a, 0xf7, 0x0a, 0xf7, 0x0a, 0x35, 0x0b, 0x31, 0x0b, + 0x62, 0x0b, 0x60, 0x0b, 0x8f, 0x0b, 0x8c, 0x0b, 0xa7, 0x0b, 0xa7, 0x0b, + 0xbb, 0x0b, 0xb8, 0x0b, 0xbc, 0x0b, 0xbb, 0x0b, 0xb1, 0x0b, 0xad, 0x0b, + 0x94, 0x0b, 0x91, 0x0b, 0x67, 0x0b, 0x64, 0x0b, 0x2c, 0x0b, 0x2a, 0x0b, + 0xdd, 0x0a, 0xda, 0x0a, 0x82, 0x0a, 0x7f, 0x0a, 0x14, 0x0a, 0x10, 0x0a, + 0x9a, 0x09, 0x97, 0x09, 0x11, 0x09, 0x0c, 0x09, 0x79, 0x08, 0x76, 0x08, + 0xda, 0x07, 0xd6, 0x07, 0x2e, 0x07, 0x2b, 0x07, 0x7e, 0x06, 0x7b, 0x06, + 0xc7, 0x05, 0xc5, 0x05, 0x0d, 0x05, 0x09, 0x05, 0x52, 0x04, 0x4f, 0x04, + 0x95, 0x03, 0x94, 0x03, 0xde, 0x02, 0xdb, 0x02, 0x28, 0x02, 0x26, 0x02, + 0x7b, 0x01, 0x79, 0x01, 0xd5, 0x00, 0xd2, 0x00, 0x39, 0x00, 0x38, 0x00, + 0xa8, 0xff, 0xa6, 0xff, 0x21, 0xff, 0x20, 0xff, 0xab, 0xfe, 0xa9, 0xfe, + 0x40, 0xfe, 0x3d, 0xfe, 0xe4, 0xfd, 0xe3, 0xfd, 0x96, 0xfd, 0x94, 0xfd, + 0x56, 0xfd, 0x54, 0xfd, 0x20, 0xfd, 0x1f, 0xfd, 0xfa, 0xfc, 0xf7, 0xfc, + 0xe1, 0xfc, 0xe1, 0xfc, 0xcf, 0xfc, 0xcc, 0xfc, 0xca, 0xfc, 0xc8, 0xfc, + 0xca, 0xfc, 0xc8, 0xfc, 0xd0, 0xfc, 0xcf, 0xfc, 0xde, 0xfc, 0xd9, 0xfc, + 0xeb, 0xfc, 0xea, 0xfc, 0xfa, 0xfc, 0xf7, 0xfc, 0x07, 0xfd, 0x06, 0xfd, + 0x10, 0xfd, 0x0e, 0xfd, 0x14, 0xfd, 0x13, 0xfd, 0x15, 0xfd, 0x12, 0xfd, + 0x09, 0xfd, 0x08, 0xfd, 0xf8, 0xfc, 0xf7, 0xfc, 0xd8, 0xfc, 0xd6, 0xfc, + 0xb2, 0xfc, 0xaf, 0xfc, 0x79, 0xfc, 0x79, 0xfc, 0x39, 0xfc, 0x36, 0xfc, + 0xeb, 0xfb, 0xea, 0xfb, 0x8d, 0xfb, 0x8d, 0xfb, 0x29, 0xfb, 0x27, 0xfb, + 0xb6, 0xfa, 0xb4, 0xfa, 0x3a, 0xfa, 0x39, 0xfa, 0xb6, 0xf9, 0xb4, 0xf9, + 0x26, 0xf9, 0x25, 0xf9, 0x98, 0xf8, 0x95, 0xf8, 0xfc, 0xf7, 0xfc, 0xf7, + 0x64, 0xf7, 0x62, 0xf7, 0xca, 0xf6, 0xc8, 0xf6, 0x2d, 0xf6, 0x2d, 0xf6, + 0x9c, 0xf5, 0x98, 0xf5, 0x09, 0xf5, 0x08, 0xf5, 0x81, 0xf4, 0x7f, 0xf4, + 0x02, 0xf4, 0x01, 0xf4, 0x8b, 0xf3, 0x89, 0xf3, 0x24, 0xf3, 0x24, 0xf3, + 0xcc, 0xf2, 0xc8, 0xf2, 0x80, 0xf2, 0x7f, 0xf2, 0x46, 0xf2, 0x44, 0xf2, + 0x20, 0xf2, 0x1d, 0xf2, 0x03, 0xf2, 0x04, 0xf2, 0x03, 0xf2, 0x00, 0xf2, + 0x0c, 0xf2, 0x0b, 0xf2, 0x2a, 0xf2, 0x2a, 0xf2, 0x5b, 0xf2, 0x58, 0xf2, + 0x96, 0xf2, 0x95, 0xf2, 0xe7, 0xf2, 0xe6, 0xf2, 0x3f, 0xf3, 0x3b, 0xf3, + 0xa8, 0xf3, 0xa8, 0xf3, 0x16, 0xf4, 0x14, 0xf4, 0x91, 0xf4, 0x8f, 0xf4, + 0x0f, 0xf5, 0x0f, 0xf5, 0x91, 0xf5, 0x8e, 0xf5, 0x1a, 0xf6, 0x1b, 0xf6, + 0x9d, 0xf6, 0x9b, 0xf6, 0x23, 0xf7, 0x20, 0xf7, 0xa3, 0xf7, 0xa1, 0xf7, + 0x1b, 0xf8, 0x1a, 0xf8, 0x90, 0xf8, 0x8f, 0xf8, 0xfa, 0xf8, 0xfa, 0xf8, + 0x5e, 0xf9, 0x5b, 0xf9, 0xb3, 0xf9, 0xb1, 0xf9, 0x01, 0xfa, 0xfd, 0xf9, + 0x3c, 0xfa, 0x3b, 0xfa, 0x70, 0xfa, 0x6e, 0xfa, 0x98, 0xfa, 0x95, 0xfa, + 0xaf, 0xfa, 0xae, 0xfa, 0xc1, 0xfa, 0xbd, 0xfa, 0xc5, 0xfa, 0xc2, 0xfa, + 0xc0, 0xfa, 0xbf, 0xfa, 0xb5, 0xfa, 0xaf, 0xfa, 0x9e, 0xfa, 0x9f, 0xfa, + 0x8a, 0xfa, 0x85, 0xfa, 0x6d, 0xfa, 0x6a, 0xfa, 0x50, 0xfa, 0x4d, 0xfa, + 0x34, 0xfa, 0x31, 0xfa, 0x1b, 0xfa, 0x19, 0xfa, 0x04, 0xfa, 0x03, 0xfa, + 0xf8, 0xf9, 0xf5, 0xf9, 0xef, 0xf9, 0xee, 0xf9, 0xf6, 0xf9, 0xf3, 0xf9, + 0x02, 0xfa, 0x00, 0xfa, 0x1e, 0xfa, 0x1c, 0xfa, 0x49, 0xfa, 0x46, 0xfa, + 0x80, 0xfa, 0x7d, 0xfa, 0xc9, 0xfa, 0xc6, 0xfa, 0x1f, 0xfb, 0x1d, 0xfb, + 0x86, 0xfb, 0x82, 0xfb, 0xfe, 0xfb, 0xfb, 0xfb, 0x82, 0xfc, 0x80, 0xfc, + 0x16, 0xfd, 0x13, 0xfd, 0xb8, 0xfd, 0xb6, 0xfd, 0x62, 0xfe, 0x60, 0xfe, + 0x1c, 0xff, 0x17, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0x9e, 0x00, 0x9d, 0x00, + 0x69, 0x01, 0x63, 0x01, 0x32, 0x02, 0x31, 0x02, 0x01, 0x03, 0xfb, 0x02, + 0xc8, 0x03, 0xc6, 0x03, 0x8e, 0x04, 0x8c, 0x04, 0x4c, 0x05, 0x4b, 0x05, + 0x04, 0x06, 0xff, 0x05, 0xaf, 0x06, 0xaf, 0x06, 0x4e, 0x07, 0x49, 0x07, + 0xe2, 0x07, 0xe1, 0x07, 0x63, 0x08, 0x60, 0x08, 0xd8, 0x08, 0xd5, 0x08, + 0x3a, 0x09, 0x38, 0x09, 0x8d, 0x09, 0x8a, 0x09, 0xd0, 0x09, 0xcd, 0x09, + 0xfe, 0x09, 0xfc, 0x09, 0x1e, 0x0a, 0x1c, 0x0a, 0x2b, 0x0a, 0x28, 0x0a, + 0x2c, 0x0a, 0x2a, 0x0a, 0x1e, 0x0a, 0x1a, 0x0a, 0x03, 0x0a, 0x02, 0x0a, + 0xde, 0x09, 0xdd, 0x09, 0xaf, 0x09, 0xad, 0x09, 0x7c, 0x09, 0x7a, 0x09, + 0x43, 0x09, 0x3e, 0x09, 0x04, 0x09, 0x03, 0x09, 0xc8, 0x08, 0xc4, 0x08, + 0x8a, 0x08, 0x87, 0x08, 0x4f, 0x08, 0x50, 0x08, 0x1c, 0x08, 0x19, 0x08, + 0xeb, 0x07, 0xec, 0x07, 0xc8, 0x07, 0xc5, 0x07, 0xac, 0x07, 0xaa, 0x07, + 0x9a, 0x07, 0x98, 0x07, 0x93, 0x07, 0x90, 0x07, 0x9a, 0x07, 0x97, 0x07, + 0xaa, 0x07, 0xa9, 0x07, 0xc8, 0x07, 0xc5, 0x07, 0xf4, 0x07, 0xf2, 0x07, + 0x26, 0x08, 0x22, 0x08, 0x69, 0x08, 0x66, 0x08, 0xb1, 0x08, 0xaf, 0x08, + 0x03, 0x09, 0x00, 0x09, 0x5a, 0x09, 0x59, 0x09, 0xb6, 0x09, 0xb4, 0x09, + 0x1a, 0x0a, 0x16, 0x0a, 0x76, 0x0a, 0x75, 0x0a, 0xd8, 0x0a, 0xd5, 0x0a, + 0x35, 0x0b, 0x34, 0x0b, 0x8c, 0x0b, 0x89, 0x0b, 0xdd, 0x0b, 0xdd, 0x0b, + 0x25, 0x0c, 0x22, 0x0c, 0x61, 0x0c, 0x61, 0x0c, 0x93, 0x0c, 0x90, 0x0c, + 0xb2, 0x0c, 0xb0, 0x0c, 0xc7, 0x0c, 0xc3, 0x0c, 0xc7, 0x0c, 0xc7, 0x0c, + 0xb7, 0x0c, 0xb5, 0x0c, 0x98, 0x0c, 0x95, 0x0c, 0x61, 0x0c, 0x60, 0x0c, + 0x1e, 0x0c, 0x1a, 0x0c, 0xc2, 0x0b, 0xc3, 0x0b, 0x5b, 0x0b, 0x57, 0x0b, + 0xe2, 0x0a, 0xe0, 0x0a, 0x56, 0x0a, 0x55, 0x0a, 0xc2, 0x09, 0xbf, 0x09, + 0x1e, 0x09, 0x1b, 0x09, 0x70, 0x08, 0x6d, 0x08, 0xbb, 0x07, 0xb9, 0x07, + 0xfe, 0x06, 0xfa, 0x06, 0x3e, 0x06, 0x3c, 0x06, 0x7c, 0x05, 0x79, 0x05, + 0xbc, 0x04, 0xb9, 0x04, 0xfe, 0x03, 0xfc, 0x03, 0x44, 0x03, 0x41, 0x03, + 0x92, 0x02, 0x92, 0x02, 0xe9, 0x01, 0xe6, 0x01, 0x4a, 0x01, 0x48, 0x01, + 0xb7, 0x00, 0xb4, 0x00, 0x31, 0x00, 0x31, 0x00, 0xba, 0xff, 0xb7, 0xff, + 0x52, 0xff, 0x4f, 0xff, 0xf7, 0xfe, 0xf7, 0xfe, 0xaf, 0xfe, 0xa9, 0xfe, + 0x75, 0xfe, 0x73, 0xfe, 0x45, 0xfe, 0x42, 0xfe, 0x29, 0xfe, 0x27, 0xfe, + 0x14, 0xfe, 0x13, 0xfe, 0x0f, 0xfe, 0x0c, 0xfe, 0x11, 0xfe, 0x10, 0xfe, + 0x1c, 0xfe, 0x18, 0xfe, 0x2f, 0xfe, 0x2f, 0xfe, 0x41, 0xfe, 0x3f, 0xfe, + 0x5c, 0xfe, 0x5a, 0xfe, 0x73, 0xfe, 0x6f, 0xfe, 0x88, 0xfe, 0x86, 0xfe, + 0x9c, 0xfe, 0x99, 0xfe, 0xa7, 0xfe, 0xa4, 0xfe, 0xa8, 0xfe, 0xa6, 0xfe, + 0xa4, 0xfe, 0xa0, 0xfe, 0x92, 0xfe, 0x90, 0xfe, 0x73, 0xfe, 0x71, 0xfe, + 0x49, 0xfe, 0x44, 0xfe, 0x0f, 0xfe, 0x0d, 0xfe, 0xc8, 0xfd, 0xc4, 0xfd, + 0x71, 0xfd, 0x6e, 0xfd, 0x09, 0xfd, 0x08, 0xfd, 0x99, 0xfc, 0x94, 0xfc, + 0x16, 0xfc, 0x14, 0xfc, 0x8c, 0xfb, 0x87, 0xfb, 0xf4, 0xfa, 0xf2, 0xfa, + 0x53, 0xfa, 0x51, 0xfa, 0xad, 0xf9, 0xa9, 0xf9, 0xff, 0xf8, 0xfd, 0xf8, + 0x50, 0xf8, 0x4d, 0xf8, 0xa0, 0xf7, 0x9b, 0xf7, 0xee, 0xf6, 0xeb, 0xf6, + 0x44, 0xf6, 0x41, 0xf6, 0x9b, 0xf5, 0x97, 0xf5, 0xff, 0xf4, 0xfc, 0xf4, + 0x68, 0xf4, 0x66, 0xf4, 0xe0, 0xf3, 0xdc, 0xf3, 0x65, 0xf3, 0x63, 0xf3, + 0xf9, 0xf2, 0xf4, 0xf2, 0x9d, 0xf2, 0x9b, 0xf2, 0x56, 0xf2, 0x53, 0xf2, + 0x1d, 0xf2, 0x1b, 0xf2, 0xfd, 0xf1, 0xfa, 0xf1, 0xe9, 0xf1, 0xe8, 0xf1, + 0xf0, 0xf1, 0xec, 0xf1, 0x05, 0xf2, 0x04, 0xf2, 0x2c, 0xf2, 0x2b, 0xf2, + 0x68, 0xf2, 0x64, 0xf2, 0xb0, 0xf2, 0xaf, 0xf2, 0x09, 0xf3, 0x06, 0xf3, + 0x6f, 0xf3, 0x6c, 0xf3, 0xdd, 0xf3, 0xda, 0xf3, 0x54, 0xf4, 0x54, 0xf4, + 0xd6, 0xf4, 0xd1, 0xf4, 0x57, 0xf5, 0x56, 0xf5, 0xdf, 0xf5, 0xdb, 0xf5, + 0x63, 0xf6, 0x5f, 0xf6, 0xe6, 0xf6, 0xe5, 0xf6, 0x65, 0xf7, 0x60, 0xf7, + 0xdc, 0xf7, 0xdb, 0xf7, 0x4c, 0xf8, 0x49, 0xf8, 0xb1, 0xf8, 0xad, 0xf8, + 0x0d, 0xf9, 0x0c, 0xf9, 0x5b, 0xf9, 0x57, 0xf9, 0x9f, 0xf9, 0x9d, 0xf9, + 0xd0, 0xf9, 0xcd, 0xf9, 0xf9, 0xf9, 0xf6, 0xf9, 0x11, 0xfa, 0x0f, 0xfa, + 0x1b, 0xfa, 0x18, 0xfa, 0x1e, 0xfa, 0x1b, 0xfa, 0x0d, 0xfa, 0x0b, 0xfa, + 0xfc, 0xf9, 0xf8, 0xf9, 0xdb, 0xf9, 0xd9, 0xf9, 0xb3, 0xf9, 0xb1, 0xf9, + 0x8b, 0xf9, 0x89, 0xf9, 0x5b, 0xf9, 0x58, 0xf9, 0x2d, 0xf9, 0x29, 0xf9, + 0xfd, 0xf8, 0xf9, 0xf8, 0xd2, 0xf8, 0xd1, 0xf8, 0xac, 0xf8, 0xa9, 0xf8, + 0x8e, 0xf8, 0x8a, 0xf8, 0x79, 0xf8, 0x77, 0xf8, 0x6c, 0xf8, 0x68, 0xf8, + 0x73, 0xf8, 0x70, 0xf8, 0x80, 0xf8, 0x7e, 0xf8, 0xa3, 0xf8, 0xa0, 0xf8, + 0xd4, 0xf8, 0xd4, 0xf8, 0x18, 0xf9, 0x13, 0xf9, 0x6c, 0xf9, 0x6b, 0xf9, + 0xcf, 0xf9, 0xcd, 0xf9, 0x4a, 0xfa, 0x47, 0xfa, 0xd1, 0xfa, 0xce, 0xfa, + 0x68, 0xfb, 0x68, 0xfb, 0x11, 0xfc, 0x0f, 0xfc, 0xc3, 0xfc, 0xc3, 0xfc, + 0x87, 0xfd, 0x83, 0xfd, 0x4e, 0xfe, 0x4d, 0xfe, 0x20, 0xff, 0x1e, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xcd, 0x00, 0xcd, 0x00, 0xa9, 0x01, 0xa5, 0x01, + 0x7c, 0x02, 0x7c, 0x02, 0x52, 0x03, 0x50, 0x03, 0x1b, 0x04, 0x1b, 0x04, + 0xe0, 0x04, 0xde, 0x04, 0x98, 0x05, 0x98, 0x05, 0x44, 0x06, 0x40, 0x06, + 0xde, 0x06, 0xde, 0x06, 0x6c, 0x07, 0x68, 0x07, 0xe8, 0x07, 0xe7, 0x07, + 0x52, 0x08, 0x4f, 0x08, 0xa7, 0x08, 0xa4, 0x08, 0xec, 0x08, 0xeb, 0x08, + 0x1f, 0x09, 0x1e, 0x09, 0x3f, 0x09, 0x3d, 0x09, 0x52, 0x09, 0x4f, 0x09, + 0x4e, 0x09, 0x4d, 0x09, 0x43, 0x09, 0x41, 0x09, 0x24, 0x09, 0x25, 0x09, + 0xff, 0x08, 0xfc, 0x08, 0xcd, 0x08, 0xcd, 0x08, 0x96, 0x08, 0x94, 0x08, + 0x5b, 0x08, 0x59, 0x08, 0x1a, 0x08, 0x19, 0x08, 0xdc, 0x07, 0xd9, 0x07, + 0x9e, 0x07, 0x9e, 0x07, 0x64, 0x07, 0x61, 0x07, 0x33, 0x07, 0x32, 0x07, + 0x06, 0x07, 0x03, 0x07, 0xe4, 0x06, 0xe5, 0x06, 0xcf, 0x06, 0xcc, 0x06, + 0xc2, 0x06, 0xc2, 0x06, 0xca, 0x06, 0xc6, 0x06, 0xd5, 0x06, 0xd6, 0x06, + 0xf6, 0x06, 0xf4, 0x06, 0x23, 0x07, 0x22, 0x07, 0x5d, 0x07, 0x59, 0x07, + 0xa5, 0x07, 0xa4, 0x07, 0xf2, 0x07, 0xf0, 0x07, 0x55, 0x08, 0x53, 0x08, + 0xb9, 0x08, 0xb7, 0x08, 0x28, 0x09, 0x25, 0x09, 0x9c, 0x09, 0x98, 0x09, + 0x12, 0x0a, 0x10, 0x0a, 0x8b, 0x0a, 0x88, 0x0a, 0x00, 0x0b, 0xfe, 0x0a, + 0x77, 0x0b, 0x73, 0x0b, 0xe4, 0x0b, 0xe4, 0x0b, 0x4c, 0x0c, 0x48, 0x0c, + 0xa9, 0x0c, 0xa8, 0x0c, 0xfb, 0x0c, 0xf7, 0x0c, 0x40, 0x0d, 0x3e, 0x0d, + 0x70, 0x0d, 0x6d, 0x0d, 0x96, 0x0d, 0x95, 0x0d, 0xa4, 0x0d, 0xa1, 0x0d, + 0xa4, 0x0d, 0xa1, 0x0d, 0x8c, 0x0d, 0x8a, 0x0d, 0x63, 0x0d, 0x60, 0x0d, + 0x26, 0x0d, 0x23, 0x0d, 0xd1, 0x0c, 0xd0, 0x0c, 0x71, 0x0c, 0x6d, 0x0c, + 0xf5, 0x0b, 0xf4, 0x0b, 0x74, 0x0b, 0x6e, 0x0b, 0xd9, 0x0a, 0xd8, 0x0a, + 0x37, 0x0a, 0x32, 0x0a, 0x87, 0x09, 0x87, 0x09, 0xcf, 0x08, 0xcb, 0x08, + 0x0f, 0x08, 0x0e, 0x08, 0x4d, 0x07, 0x48, 0x07, 0x87, 0x06, 0x84, 0x06, + 0xc2, 0x05, 0xc0, 0x05, 0x02, 0x05, 0xfe, 0x04, 0x44, 0x04, 0x41, 0x04, + 0x91, 0x03, 0x8e, 0x03, 0xe4, 0x02, 0xe4, 0x02, 0x47, 0x02, 0x42, 0x02, + 0xb1, 0x01, 0xb0, 0x01, 0x2e, 0x01, 0x2c, 0x01, 0xb9, 0x00, 0xb7, 0x00, + 0x52, 0x00, 0x50, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xb9, 0xff, 0xb7, 0xff, + 0x86, 0xff, 0x83, 0xff, 0x60, 0xff, 0x5d, 0xff, 0x4a, 0xff, 0x48, 0xff, + 0x41, 0xff, 0x3e, 0xff, 0x44, 0xff, 0x43, 0xff, 0x51, 0xff, 0x4e, 0xff, + 0x67, 0xff, 0x64, 0xff, 0x82, 0xff, 0x80, 0xff, 0xa2, 0xff, 0x9f, 0xff, + 0xc4, 0xff, 0xc1, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0x05, 0x00, 0x01, 0x00, + 0x1f, 0x00, 0x1d, 0x00, 0x31, 0x00, 0x2d, 0x00, 0x3b, 0x00, 0x3a, 0x00, + 0x3a, 0x00, 0x37, 0x00, 0x2a, 0x00, 0x26, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0xe1, 0xff, 0xdc, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0x58, 0xff, 0x54, 0xff, + 0xfc, 0xfe, 0xfa, 0xfe, 0x90, 0xfe, 0x8d, 0xfe, 0x10, 0xfe, 0x0d, 0xfe, + 0x88, 0xfd, 0x85, 0xfd, 0xeb, 0xfc, 0xe8, 0xfc, 0x46, 0xfc, 0x44, 0xfc, + 0x97, 0xfb, 0x92, 0xfb, 0xdc, 0xfa, 0xd8, 0xfa, 0x1d, 0xfa, 0x1c, 0xfa, + 0x5b, 0xf9, 0x57, 0xf9, 0x96, 0xf8, 0x94, 0xf8, 0xd1, 0xf7, 0xcf, 0xf7, + 0x12, 0xf7, 0x0f, 0xf7, 0x56, 0xf6, 0x53, 0xf6, 0xa5, 0xf5, 0xa3, 0xf5, + 0xfb, 0xf4, 0xf9, 0xf4, 0x61, 0xf4, 0x5f, 0xf4, 0xd5, 0xf3, 0xd1, 0xf3, + 0x56, 0xf3, 0x56, 0xf3, 0xef, 0xf2, 0xea, 0xf2, 0x95, 0xf2, 0x93, 0xf2, + 0x53, 0xf2, 0x52, 0xf2, 0x24, 0xf2, 0x21, 0xf2, 0x09, 0xf2, 0x08, 0xf2, + 0x04, 0xf2, 0x01, 0xf2, 0x13, 0xf2, 0x0f, 0xf2, 0x34, 0xf2, 0x32, 0xf2, + 0x69, 0xf2, 0x66, 0xf2, 0xae, 0xf2, 0xac, 0xf2, 0x03, 0xf3, 0x01, 0xf3, + 0x63, 0xf3, 0x61, 0xf3, 0xd3, 0xf3, 0xd0, 0xf3, 0x4a, 0xf4, 0x48, 0xf4, + 0xc5, 0xf4, 0xc3, 0xf4, 0x4c, 0xf5, 0x46, 0xf5, 0xcb, 0xf5, 0xcb, 0xf5, + 0x52, 0xf6, 0x4e, 0xf6, 0xcf, 0xf6, 0xcd, 0xf6, 0x4b, 0xf7, 0x49, 0xf7, + 0xbe, 0xf7, 0xbb, 0xf7, 0x27, 0xf8, 0x26, 0xf8, 0x88, 0xf8, 0x85, 0xf8, + 0xda, 0xf8, 0xd8, 0xf8, 0x24, 0xf9, 0x20, 0xf9, 0x59, 0xf9, 0x57, 0xf9, + 0x84, 0xf9, 0x80, 0xf9, 0x9d, 0xf9, 0x9b, 0xf9, 0xa7, 0xf9, 0xa6, 0xf9, + 0xa7, 0xf9, 0xa3, 0xf9, 0x94, 0xf9, 0x91, 0xf9, 0x7c, 0xf9, 0x79, 0xf9, + 0x51, 0xf9, 0x4f, 0xf9, 0x22, 0xf9, 0x1f, 0xf9, 0xe8, 0xf8, 0xe6, 0xf8, + 0xaa, 0xf8, 0xa7, 0xf8, 0x6a, 0xf8, 0x68, 0xf8, 0x27, 0xf8, 0x25, 0xf8, + 0xe9, 0xf7, 0xe6, 0xf7, 0xaa, 0xf7, 0xa6, 0xf7, 0x73, 0xf7, 0x72, 0xf7, + 0x44, 0xf7, 0x3d, 0xf7, 0x1f, 0xf7, 0x20, 0xf7, 0x05, 0xf7, 0x02, 0xf7, + 0xfd, 0xf6, 0xfb, 0xf6, 0x03, 0xf7, 0x01, 0xf7, 0x1b, 0xf7, 0x16, 0xf7, + 0x43, 0xf7, 0x41, 0xf7, 0x80, 0xf7, 0x7e, 0xf7, 0xd0, 0xf7, 0xcd, 0xf7, + 0x33, 0xf8, 0x31, 0xf8, 0xa8, 0xf8, 0xa7, 0xf8, 0x32, 0xf9, 0x30, 0xf9, + 0xcb, 0xf9, 0xca, 0xf9, 0x79, 0xfa, 0x75, 0xfa, 0x32, 0xfb, 0x2f, 0xfb, + 0xf8, 0xfb, 0xf5, 0xfb, 0xcb, 0xfc, 0xc9, 0xfc, 0xa4, 0xfd, 0x9f, 0xfd, + 0x84, 0xfe, 0x82, 0xfe, 0x66, 0xff, 0x62, 0xff, 0x4a, 0x00, 0x47, 0x00, + 0x2d, 0x01, 0x2a, 0x01, 0x0a, 0x02, 0x07, 0x02, 0xe1, 0x02, 0xdc, 0x02, + 0xac, 0x03, 0xab, 0x03, 0x71, 0x04, 0x6b, 0x04, 0x24, 0x05, 0x20, 0x05, + 0xc9, 0x05, 0xc5, 0x05, 0x5e, 0x06, 0x5a, 0x06, 0xde, 0x06, 0xdb, 0x06, + 0x4d, 0x07, 0x4a, 0x07, 0xaa, 0x07, 0xa6, 0x07, 0xf1, 0x07, 0xef, 0x07, + 0x28, 0x08, 0x22, 0x08, 0x46, 0x08, 0x45, 0x08, 0x5a, 0x08, 0x55, 0x08, + 0x59, 0x08, 0x55, 0x08, 0x48, 0x08, 0x46, 0x08, 0x2d, 0x08, 0x28, 0x08, + 0x01, 0x08, 0x00, 0x08, 0xd2, 0x07, 0xce, 0x07, 0x95, 0x07, 0x92, 0x07, + 0x5a, 0x07, 0x57, 0x07, 0x17, 0x07, 0x15, 0x07, 0xd8, 0x06, 0xd4, 0x06, + 0x9b, 0x06, 0x98, 0x06, 0x5f, 0x06, 0x5d, 0x06, 0x31, 0x06, 0x2d, 0x06, + 0x05, 0x06, 0x02, 0x06, 0xea, 0x05, 0xe6, 0x05, 0xd9, 0x05, 0xd7, 0x05, + 0xd3, 0x05, 0xd0, 0x05, 0xe3, 0x05, 0xe0, 0x05, 0xfa, 0x05, 0xf7, 0x05, + 0x24, 0x06, 0x24, 0x06, 0x60, 0x06, 0x5c, 0x06, 0xa7, 0x06, 0xa6, 0x06, + 0x01, 0x07, 0xfd, 0x06, 0x64, 0x07, 0x60, 0x07, 0xd5, 0x07, 0xd2, 0x07, + 0x4e, 0x08, 0x4a, 0x08, 0xd2, 0x08, 0xd0, 0x08, 0x59, 0x09, 0x56, 0x09, + 0xe6, 0x09, 0xe4, 0x09, 0x77, 0x0a, 0x75, 0x0a, 0x01, 0x0b, 0x00, 0x0b, + 0x91, 0x0b, 0x8e, 0x0b, 0x13, 0x0c, 0x0f, 0x0c, 0x92, 0x0c, 0x8f, 0x0c, + 0x02, 0x0d, 0xfd, 0x0c, 0x68, 0x0d, 0x66, 0x0d, 0xbe, 0x0d, 0xbc, 0x0d, + 0x03, 0x0e, 0xfe, 0x0d, 0x37, 0x0e, 0x35, 0x0e, 0x57, 0x0e, 0x53, 0x0e, + 0x65, 0x0e, 0x60, 0x0e, 0x59, 0x0e, 0x57, 0x0e, 0x39, 0x0e, 0x36, 0x0e, + 0x06, 0x0e, 0x02, 0x0e, 0xbb, 0x0d, 0xb9, 0x0d, 0x61, 0x0d, 0x5a, 0x0d, + 0xec, 0x0c, 0xea, 0x0c, 0x67, 0x0c, 0x66, 0x0c, 0xd6, 0x0b, 0xd1, 0x0b, + 0x31, 0x0b, 0x2e, 0x0b, 0x85, 0x0a, 0x81, 0x0a, 0xcb, 0x09, 0xc7, 0x09, + 0x0c, 0x09, 0x09, 0x09, 0x49, 0x08, 0x45, 0x08, 0x82, 0x07, 0x80, 0x07, + 0xbc, 0x06, 0xb9, 0x06, 0xfb, 0x05, 0xf8, 0x05, 0x3d, 0x05, 0x3b, 0x05, + 0x89, 0x04, 0x86, 0x04, 0xde, 0x03, 0xdb, 0x03, 0x41, 0x03, 0x3c, 0x03, + 0xae, 0x02, 0xad, 0x02, 0x2d, 0x02, 0x29, 0x02, 0xbd, 0x01, 0xb9, 0x01, + 0x5b, 0x01, 0x59, 0x01, 0x0e, 0x01, 0x09, 0x01, 0xcd, 0x00, 0xcc, 0x00, + 0xa3, 0x00, 0x9e, 0x00, 0x84, 0x00, 0x81, 0x00, 0x76, 0x00, 0x74, 0x00, + 0x7b, 0x00, 0x75, 0x00, 0x83, 0x00, 0x82, 0x00, 0x9c, 0x00, 0x99, 0x00, + 0xbd, 0x00, 0xba, 0x00, 0xe1, 0x00, 0xdf, 0x00, 0x0f, 0x01, 0x0b, 0x01, + 0x38, 0x01, 0x38, 0x01, 0x66, 0x01, 0x61, 0x01, 0x8c, 0x01, 0x8b, 0x01, + 0xb0, 0x01, 0xad, 0x01, 0xc9, 0x01, 0xc5, 0x01, 0xd9, 0x01, 0xd8, 0x01, + 0xdc, 0x01, 0xd8, 0x01, 0xd2, 0x01, 0xd0, 0x01, 0xb7, 0x01, 0xb4, 0x01, + 0x8a, 0x01, 0x88, 0x01, 0x4e, 0x01, 0x4b, 0x01, 0xfe, 0x00, 0xfc, 0x00, + 0x9c, 0x00, 0x98, 0x00, 0x29, 0x00, 0x26, 0x00, 0xa0, 0xff, 0x9f, 0xff, + 0x0d, 0xff, 0x09, 0xff, 0x64, 0xfe, 0x62, 0xfe, 0xb3, 0xfd, 0xb2, 0xfd, + 0xf5, 0xfc, 0xf0, 0xfc, 0x2b, 0xfc, 0x2a, 0xfc, 0x5d, 0xfb, 0x5a, 0xfb, + 0x89, 0xfa, 0x86, 0xfa, 0xb1, 0xf9, 0xaf, 0xf9, 0xde, 0xf8, 0xda, 0xf8, + 0x09, 0xf8, 0x08, 0xf8, 0x3d, 0xf7, 0x3b, 0xf7, 0x77, 0xf6, 0x74, 0xf6, + 0xbe, 0xf5, 0xbd, 0xf5, 0x13, 0xf5, 0x0f, 0xf5, 0x74, 0xf4, 0x73, 0xf4, + 0xeb, 0xf3, 0xe8, 0xf3, 0x71, 0xf3, 0x6d, 0xf3, 0x0c, 0xf3, 0x09, 0xf3, + 0xbd, 0xf2, 0xb9, 0xf2, 0x80, 0xf2, 0x7e, 0xf2, 0x5e, 0xf2, 0x5b, 0xf2, + 0x4f, 0xf2, 0x4b, 0xf2, 0x55, 0xf2, 0x54, 0xf2, 0x73, 0xf2, 0x6f, 0xf2, + 0x9d, 0xf2, 0x9d, 0xf2, 0xe2, 0xf2, 0xde, 0xf2, 0x30, 0xf3, 0x2e, 0xf3, + 0x90, 0xf3, 0x8f, 0xf3, 0xfc, 0xf3, 0xf8, 0xf3, 0x6f, 0xf4, 0x6f, 0xf4, + 0xeb, 0xf4, 0xe7, 0xf4, 0x69, 0xf5, 0x68, 0xf5, 0xec, 0xf5, 0xe9, 0xf5, + 0x69, 0xf6, 0x68, 0xf6, 0xea, 0xf6, 0xe7, 0xf6, 0x5d, 0xf7, 0x5c, 0xf7, + 0xcd, 0xf7, 0xcb, 0xf7, 0x31, 0xf8, 0x2f, 0xf8, 0x8a, 0xf8, 0x88, 0xf8, + 0xd4, 0xf8, 0xd3, 0xf8, 0x12, 0xf9, 0x0f, 0xf9, 0x3c, 0xf9, 0x3d, 0xf9, + 0x5d, 0xf9, 0x59, 0xf9, 0x68, 0xf9, 0x67, 0xf9, 0x66, 0xf9, 0x64, 0xf9, + 0x55, 0xf9, 0x52, 0xf9, 0x33, 0xf9, 0x31, 0xf9, 0x05, 0xf9, 0x04, 0xf9, + 0xcd, 0xf8, 0xc8, 0xf8, 0x89, 0xf8, 0x8b, 0xf8, 0x3e, 0xf8, 0x39, 0xf8, + 0xec, 0xf7, 0xed, 0xf7, 0x98, 0xf7, 0x96, 0xf7, 0x43, 0xf7, 0x41, 0xf7, + 0xf0, 0xf6, 0xee, 0xf6, 0xa0, 0xf6, 0x9d, 0xf6, 0x59, 0xf6, 0x55, 0xf6, + 0x17, 0xf6, 0x15, 0xf6, 0xe4, 0xf5, 0xe0, 0xf5, 0xbb, 0xf5, 0xb9, 0xf5, + 0xa4, 0xf5, 0xa2, 0xf5, 0x9c, 0xf5, 0x9b, 0xf5, 0xac, 0xf5, 0xa9, 0xf5, + 0xcb, 0xf5, 0xc8, 0xf5, 0xfe, 0xf5, 0xfc, 0xf5, 0x4b, 0xf6, 0x48, 0xf6, + 0xa7, 0xf6, 0xa6, 0xf6, 0x1e, 0xf7, 0x1a, 0xf7, 0xa5, 0xf7, 0xa3, 0xf7, + 0x41, 0xf8, 0x3d, 0xf8, 0xee, 0xf8, 0xec, 0xf8, 0xa9, 0xf9, 0xa7, 0xf9, + 0x76, 0xfa, 0x74, 0xfa, 0x4e, 0xfb, 0x4b, 0xfb, 0x2d, 0xfc, 0x29, 0xfc, + 0x16, 0xfd, 0x14, 0xfd, 0xfd, 0xfd, 0xfa, 0xfd, 0xeb, 0xfe, 0xea, 0xfe, + 0xd7, 0xff, 0xd3, 0xff, 0xb9, 0x00, 0xb8, 0x00, 0x9f, 0x01, 0x9c, 0x01, + 0x6d, 0x02, 0x6a, 0x02, 0x3c, 0x03, 0x38, 0x03, 0xf3, 0x03, 0xf1, 0x03, + 0xa1, 0x04, 0x9d, 0x04, 0x3b, 0x05, 0x38, 0x05, 0xbd, 0x05, 0xba, 0x05, + 0x37, 0x06, 0x32, 0x06, 0x8f, 0x06, 0x8d, 0x06, 0xdf, 0x06, 0xda, 0x06, + 0x11, 0x07, 0x0e, 0x07, 0x34, 0x07, 0x32, 0x07, 0x45, 0x07, 0x40, 0x07, + 0x3f, 0x07, 0x3f, 0x07, 0x34, 0x07, 0x2f, 0x07, 0x0d, 0x07, 0x0d, 0x07, + 0xe8, 0x06, 0xe4, 0x06, 0xad, 0x06, 0xab, 0x06, 0x73, 0x06, 0x72, 0x06, + 0x33, 0x06, 0x2f, 0x06, 0xef, 0x05, 0xed, 0x05, 0xaf, 0x05, 0xac, 0x05, + 0x6e, 0x05, 0x6d, 0x05, 0x37, 0x05, 0x34, 0x05, 0x05, 0x05, 0x03, 0x05, + 0xde, 0x04, 0xdc, 0x04, 0xc8, 0x04, 0xc3, 0x04, 0xb7, 0x04, 0xb8, 0x04, + 0xbf, 0x04, 0xbc, 0x04, 0xcf, 0x04, 0xcd, 0x04, 0xf5, 0x04, 0xf3, 0x04, + 0x29, 0x05, 0x27, 0x05, 0x70, 0x05, 0x70, 0x05, 0xc7, 0x05, 0xc4, 0x05, + 0x2d, 0x06, 0x2c, 0x06, 0xa4, 0x06, 0xa0, 0x06, 0x26, 0x07, 0x25, 0x07, + 0xb4, 0x07, 0xb0, 0x07, 0x4b, 0x08, 0x4a, 0x08, 0xe8, 0x08, 0xe4, 0x08, + 0x8c, 0x09, 0x8b, 0x09, 0x2d, 0x0a, 0x2b, 0x0a, 0xd4, 0x0a, 0xd1, 0x0a, + 0x72, 0x0b, 0x71, 0x0b, 0x0e, 0x0c, 0x0b, 0x0c, 0xa0, 0x0c, 0x9f, 0x0c, + 0x23, 0x0d, 0x22, 0x0d, 0xa1, 0x0d, 0x9d, 0x0d, 0x08, 0x0e, 0x06, 0x0e, + 0x5f, 0x0e, 0x5d, 0x0e, 0xa6, 0x0e, 0xa3, 0x0e, 0xd1, 0x0e, 0xd0, 0x0e, + 0xf0, 0x0e, 0xed, 0x0e, 0xee, 0x0e, 0xec, 0x0e, 0xdd, 0x0e, 0xdb, 0x0e, + 0xb2, 0x0e, 0xb0, 0x0e, 0x6d, 0x0e, 0x6c, 0x0e, 0x1a, 0x0e, 0x18, 0x0e, + 0xab, 0x0d, 0xa9, 0x0d, 0x2d, 0x0d, 0x2c, 0x0d, 0x9d, 0x0c, 0x9c, 0x0c, + 0xfc, 0x0b, 0xf8, 0x0b, 0x4f, 0x0b, 0x4f, 0x0b, 0x99, 0x0a, 0x96, 0x0a, + 0xd8, 0x09, 0xd6, 0x09, 0x16, 0x09, 0x13, 0x09, 0x4d, 0x08, 0x4b, 0x08, + 0x8b, 0x07, 0x87, 0x07, 0xc4, 0x06, 0xc3, 0x06, 0x0a, 0x06, 0x06, 0x06, + 0x56, 0x05, 0x54, 0x05, 0xab, 0x04, 0xaa, 0x04, 0x12, 0x04, 0x0f, 0x04, + 0x81, 0x03, 0x81, 0x03, 0x08, 0x03, 0x05, 0x03, 0x99, 0x02, 0x97, 0x02, + 0x3e, 0x02, 0x3a, 0x02, 0xf7, 0x01, 0xf7, 0x01, 0xbd, 0x01, 0xba, 0x01, + 0x9d, 0x01, 0x9c, 0x01, 0x89, 0x01, 0x85, 0x01, 0x85, 0x01, 0x83, 0x01, + 0x92, 0x01, 0x91, 0x01, 0xaa, 0x01, 0xa5, 0x01, 0xd1, 0x01, 0xce, 0x01, + 0xfb, 0x01, 0xf8, 0x01, 0x2f, 0x02, 0x2d, 0x02, 0x66, 0x02, 0x62, 0x02, + 0x9e, 0x02, 0x9c, 0x02, 0xd3, 0x02, 0xd0, 0x02, 0x08, 0x03, 0x05, 0x03, + 0x35, 0x03, 0x31, 0x03, 0x56, 0x03, 0x53, 0x03, 0x70, 0x03, 0x6d, 0x03, + 0x78, 0x03, 0x75, 0x03, 0x75, 0x03, 0x72, 0x03, 0x5b, 0x03, 0x58, 0x03, + 0x34, 0x03, 0x33, 0x03, 0xf7, 0x02, 0xf3, 0x02, 0xa7, 0x02, 0xa6, 0x02, + 0x41, 0x02, 0x3e, 0x02, 0xc8, 0x01, 0xc7, 0x01, 0x3b, 0x01, 0x39, 0x01, + 0x9d, 0x00, 0x99, 0x00, 0xed, 0xff, 0xeb, 0xff, 0x2c, 0xff, 0x29, 0xff, + 0x61, 0xfe, 0x5f, 0xfe, 0x8b, 0xfd, 0x87, 0xfd, 0xac, 0xfc, 0xa9, 0xfc, + 0xc8, 0xfb, 0xc6, 0xfb, 0xde, 0xfa, 0xdd, 0xfa, 0xfc, 0xf9, 0xf9, 0xf9, + 0x16, 0xf9, 0x12, 0xf9, 0x38, 0xf8, 0x36, 0xf8, 0x62, 0xf7, 0x60, 0xf7, + 0x96, 0xf6, 0x92, 0xf6, 0xde, 0xf5, 0xdb, 0xf5, 0x2c, 0xf5, 0x2b, 0xf5, + 0x96, 0xf4, 0x91, 0xf4, 0x0c, 0xf4, 0x0a, 0xf4, 0x9d, 0xf3, 0x98, 0xf3, + 0x41, 0xf3, 0x3e, 0xf3, 0xfb, 0xf2, 0xf7, 0xf2, 0xce, 0xf2, 0xcb, 0xf2, + 0xb6, 0xf2, 0xb3, 0xf2, 0xb7, 0xf2, 0xb5, 0xf2, 0xce, 0xf2, 0xca, 0xf2, + 0xf7, 0xf2, 0xf4, 0xf2, 0x35, 0xf3, 0x32, 0xf3, 0x81, 0xf3, 0x7e, 0xf3, + 0xdf, 0xf3, 0xdd, 0xf3, 0x47, 0xf4, 0x43, 0xf4, 0xb9, 0xf4, 0xb8, 0xf4, + 0x34, 0xf5, 0x2f, 0xf5, 0xae, 0xf5, 0xab, 0xf5, 0x33, 0xf6, 0x30, 0xf6, + 0xac, 0xf6, 0xa8, 0xf6, 0x2a, 0xf7, 0x28, 0xf7, 0x99, 0xf7, 0x96, 0xf7, + 0x05, 0xf8, 0x02, 0xf8, 0x64, 0xf8, 0x62, 0xf8, 0xb6, 0xf8, 0xb3, 0xf8, + 0xfb, 0xf8, 0xf8, 0xf8, 0x2d, 0xf9, 0x2b, 0xf9, 0x51, 0xf9, 0x4e, 0xf9, + 0x61, 0xf9, 0x5e, 0xf9, 0x62, 0xf9, 0x5f, 0xf9, 0x51, 0xf9, 0x4b, 0xf9, + 0x2e, 0xf9, 0x2d, 0xf9, 0x00, 0xf9, 0xfc, 0xf8, 0xbe, 0xf8, 0xbc, 0xf8, + 0x73, 0xf8, 0x70, 0xf8, 0x1d, 0xf8, 0x1a, 0xf8, 0xbf, 0xf7, 0xbb, 0xf7, + 0x58, 0xf7, 0x56, 0xf7, 0xf2, 0xf6, 0xed, 0xf6, 0x86, 0xf6, 0x84, 0xf6, + 0x21, 0xf6, 0x1d, 0xf6, 0xbe, 0xf5, 0xbb, 0xf5, 0x60, 0xf5, 0x5d, 0xf5, + 0x10, 0xf5, 0x0d, 0xf5, 0xc9, 0xf4, 0xc7, 0xf4, 0x91, 0xf4, 0x8e, 0xf4, + 0x6d, 0xf4, 0x6b, 0xf4, 0x55, 0xf4, 0x52, 0xf4, 0x59, 0xf4, 0x56, 0xf4, + 0x6c, 0xf4, 0x6b, 0xf4, 0x9a, 0xf4, 0x98, 0xf4, 0xdd, 0xf4, 0xd9, 0xf4, + 0x35, 0xf5, 0x33, 0xf5, 0xa7, 0xf5, 0xa3, 0xf5, 0x2c, 0xf6, 0x2a, 0xf6, + 0xc5, 0xf6, 0xc3, 0xf6, 0x78, 0xf7, 0x72, 0xf7, 0x33, 0xf8, 0x32, 0xf8, + 0x04, 0xf9, 0x00, 0xf9, 0xdf, 0xf9, 0xdc, 0xf9, 0xc5, 0xfa, 0xc3, 0xfa, + 0xb3, 0xfb, 0xaf, 0xfb, 0xa6, 0xfc, 0xa4, 0xfc, 0x98, 0xfd, 0x95, 0xfd, + 0x8d, 0xfe, 0x8b, 0xfe, 0x77, 0xff, 0x74, 0xff, 0x61, 0x00, 0x60, 0x00, + 0x3a, 0x01, 0x36, 0x01, 0x0b, 0x02, 0x0a, 0x02, 0xcc, 0x02, 0xc9, 0x02, + 0x7d, 0x03, 0x7b, 0x03, 0x1c, 0x04, 0x19, 0x04, 0xa5, 0x04, 0xa2, 0x04, + 0x1a, 0x05, 0x17, 0x05, 0x7d, 0x05, 0x78, 0x05, 0xc6, 0x05, 0xc4, 0x05, + 0xfe, 0x05, 0xfa, 0x05, 0x1c, 0x06, 0x1a, 0x06, 0x2b, 0x06, 0x28, 0x06, + 0x22, 0x06, 0x20, 0x06, 0x12, 0x06, 0x0f, 0x06, 0xea, 0x05, 0xe6, 0x05, + 0xbb, 0x05, 0xb9, 0x05, 0x80, 0x05, 0x7d, 0x05, 0x3f, 0x05, 0x3c, 0x05, + 0xfc, 0x04, 0xf8, 0x04, 0xb1, 0x04, 0xae, 0x04, 0x6f, 0x04, 0x6b, 0x04, + 0x2a, 0x04, 0x28, 0x04, 0xf2, 0x03, 0xee, 0x03, 0xbe, 0x03, 0xbc, 0x03, + 0x99, 0x03, 0x95, 0x03, 0x83, 0x03, 0x80, 0x03, 0x74, 0x03, 0x73, 0x03, + 0x82, 0x03, 0x7e, 0x03, 0x9a, 0x03, 0x97, 0x03, 0xc6, 0x03, 0xc2, 0x03, + 0x07, 0x04, 0x05, 0x04, 0x58, 0x04, 0x55, 0x04, 0xbf, 0x04, 0xbc, 0x04, + 0x34, 0x05, 0x31, 0x05, 0xba, 0x05, 0xb8, 0x05, 0x50, 0x06, 0x4b, 0x06, + 0xed, 0x06, 0xed, 0x06, 0x9a, 0x07, 0x97, 0x07, 0x4c, 0x08, 0x4a, 0x08, + 0x05, 0x09, 0x02, 0x09, 0xc1, 0x09, 0xbd, 0x09, 0x77, 0x0a, 0x77, 0x0a, + 0x32, 0x0b, 0x2e, 0x0b, 0xe2, 0x0b, 0xde, 0x0b, 0x89, 0x0c, 0x87, 0x0c, + 0x27, 0x0d, 0x22, 0x0d, 0xb2, 0x0d, 0xb0, 0x0d, 0x30, 0x0e, 0x2d, 0x0e, + 0x9a, 0x0e, 0x95, 0x0e, 0xee, 0x0e, 0xed, 0x0e, 0x2f, 0x0f, 0x2b, 0x0f, + 0x56, 0x0f, 0x53, 0x0f, 0x67, 0x0f, 0x63, 0x0f, 0x5c, 0x0f, 0x5a, 0x0f, + 0x3b, 0x0f, 0x37, 0x0f, 0x03, 0x0f, 0x01, 0x0f, 0xb1, 0x0e, 0xad, 0x0e, + 0x4c, 0x0e, 0x4a, 0x0e, 0xd0, 0x0d, 0xce, 0x0d, 0x45, 0x0d, 0x42, 0x0d, + 0xa7, 0x0c, 0xa4, 0x0c, 0xfb, 0x0b, 0xf8, 0x0b, 0x47, 0x0b, 0x44, 0x0b, + 0x85, 0x0a, 0x83, 0x0a, 0xc2, 0x09, 0xc0, 0x09, 0xfc, 0x08, 0xf9, 0x08, + 0x35, 0x08, 0x34, 0x08, 0x77, 0x07, 0x73, 0x07, 0xb7, 0x06, 0xb7, 0x06, + 0x06, 0x06, 0x03, 0x06, 0x60, 0x05, 0x60, 0x05, 0xc8, 0x04, 0xc5, 0x04, + 0x3f, 0x04, 0x3d, 0x04, 0xc4, 0x03, 0xc3, 0x03, 0x61, 0x03, 0x5d, 0x03, + 0x0c, 0x03, 0x0b, 0x03, 0xcd, 0x02, 0xc9, 0x02, 0xa1, 0x02, 0x9f, 0x02, + 0x86, 0x02, 0x85, 0x02, 0x80, 0x02, 0x7d, 0x02, 0x87, 0x02, 0x86, 0x02, + 0xa2, 0x02, 0x9f, 0x02, 0xc6, 0x02, 0xc5, 0x02, 0xfa, 0x02, 0xf5, 0x02, + 0x32, 0x03, 0x32, 0x03, 0x75, 0x03, 0x71, 0x03, 0xb9, 0x03, 0xb8, 0x03, + 0xff, 0x03, 0xfc, 0x03, 0x43, 0x04, 0x41, 0x04, 0x84, 0x04, 0x81, 0x04, + 0xb9, 0x04, 0xb8, 0x04, 0xe9, 0x04, 0xe5, 0x04, 0x08, 0x05, 0x08, 0x05, + 0x1c, 0x05, 0x19, 0x05, 0x1e, 0x05, 0x1b, 0x05, 0x0a, 0x05, 0x07, 0x05, + 0xe5, 0x04, 0xe2, 0x04, 0xab, 0x04, 0xaa, 0x04, 0x59, 0x04, 0x57, 0x04, + 0xf5, 0x03, 0xf2, 0x03, 0x74, 0x03, 0x71, 0x03, 0xe5, 0x02, 0xe4, 0x02, + 0x40, 0x02, 0x3b, 0x02, 0x85, 0x01, 0x84, 0x01, 0xbf, 0x00, 0xbb, 0x00, + 0xe5, 0xff, 0xe2, 0xff, 0x04, 0xff, 0x01, 0xff, 0x16, 0xfe, 0x12, 0xfe, + 0x24, 0xfd, 0x20, 0xfd, 0x2d, 0xfc, 0x2d, 0xfc, 0x39, 0xfb, 0x33, 0xfb, + 0x43, 0xfa, 0x42, 0xfa, 0x57, 0xf9, 0x52, 0xf9, 0x72, 0xf8, 0x6e, 0xf8, + 0x96, 0xf7, 0x94, 0xf7, 0xcb, 0xf6, 0xc8, 0xf6, 0x11, 0xf6, 0x10, 0xf6, + 0x6b, 0xf5, 0x66, 0xf5, 0xd6, 0xf4, 0xd6, 0xf4, 0x5c, 0xf4, 0x57, 0xf4, + 0xf6, 0xf3, 0xf3, 0xf3, 0xa7, 0xf3, 0xa4, 0xf3, 0x74, 0xf3, 0x70, 0xf3, + 0x54, 0xf3, 0x53, 0xf3, 0x50, 0xf3, 0x4b, 0xf3, 0x60, 0xf3, 0x60, 0xf3, + 0x87, 0xf3, 0x83, 0xf3, 0xc0, 0xf3, 0xbe, 0xf3, 0x0b, 0xf4, 0x09, 0xf4, + 0x66, 0xf4, 0x62, 0xf4, 0xcd, 0xf4, 0xcb, 0xf4, 0x3c, 0xf5, 0x3a, 0xf5, + 0xb6, 0xf5, 0xb2, 0xf5, 0x32, 0xf6, 0x30, 0xf6, 0xb0, 0xf6, 0xad, 0xf6, + 0x2c, 0xf7, 0x27, 0xf7, 0x9f, 0xf7, 0xa0, 0xf7, 0x10, 0xf8, 0x0b, 0xf8, + 0x75, 0xf8, 0x74, 0xf8, 0xce, 0xf8, 0xcc, 0xf8, 0x18, 0xf9, 0x15, 0xf9, + 0x52, 0xf9, 0x50, 0xf9, 0x7c, 0xf9, 0x79, 0xf9, 0x92, 0xf9, 0x8f, 0xf9, + 0x99, 0xf9, 0x95, 0xf9, 0x89, 0xf9, 0x86, 0xf9, 0x68, 0xf9, 0x66, 0xf9, + 0x36, 0xf9, 0x33, 0xf9, 0xf4, 0xf8, 0xf2, 0xf8, 0xa3, 0xf8, 0x9e, 0xf8, + 0x42, 0xf8, 0x42, 0xf8, 0xd9, 0xf7, 0xd5, 0xf7, 0x65, 0xf7, 0x63, 0xf7, + 0xeb, 0xf6, 0xe9, 0xf6, 0x70, 0xf6, 0x6d, 0xf6, 0xf1, 0xf5, 0xee, 0xf5, + 0x74, 0xf5, 0x73, 0xf5, 0xfe, 0xf4, 0xf9, 0xf4, 0x8d, 0xf4, 0x8c, 0xf4, + 0x2a, 0xf4, 0x27, 0xf4, 0xd2, 0xf3, 0xcf, 0xf3, 0x89, 0xf3, 0x88, 0xf3, + 0x57, 0xf3, 0x52, 0xf3, 0x32, 0xf3, 0x31, 0xf3, 0x29, 0xf3, 0x27, 0xf3, + 0x31, 0xf3, 0x2e, 0xf3, 0x55, 0xf3, 0x54, 0xf3, 0x90, 0xf3, 0x8c, 0xf3, + 0xe3, 0xf3, 0xe1, 0xf3, 0x51, 0xf4, 0x4e, 0xf4, 0xd1, 0xf4, 0xcd, 0xf4, + 0x6b, 0xf5, 0x6a, 0xf5, 0x19, 0xf6, 0x14, 0xf6, 0xd8, 0xf6, 0xd6, 0xf6, + 0xab, 0xf7, 0xa9, 0xf7, 0x8a, 0xf8, 0x84, 0xf8, 0x72, 0xf9, 0x73, 0xf9, + 0x64, 0xfa, 0x5f, 0xfa, 0x5a, 0xfb, 0x57, 0xfb, 0x54, 0xfc, 0x51, 0xfc, + 0x4a, 0xfd, 0x48, 0xfd, 0x3e, 0xfe, 0x3a, 0xfe, 0x28, 0xff, 0x27, 0xff, + 0x0b, 0x00, 0x07, 0x00, 0xdc, 0x00, 0xdb, 0x00, 0xa1, 0x01, 0xa0, 0x01, + 0x56, 0x02, 0x50, 0x02, 0xf0, 0x02, 0xf1, 0x02, 0x80, 0x03, 0x7b, 0x03, + 0xf4, 0x03, 0xf1, 0x03, 0x53, 0x04, 0x51, 0x04, 0x9b, 0x04, 0x98, 0x04, + 0xd0, 0x04, 0xce, 0x04, 0xec, 0x04, 0xe9, 0x04, 0xf5, 0x04, 0xf2, 0x04, + 0xed, 0x04, 0xea, 0x04, 0xd0, 0x04, 0xcc, 0x04, 0xa9, 0x04, 0xa6, 0x04, + 0x72, 0x04, 0x70, 0x04, 0x33, 0x04, 0x2e, 0x04, 0xed, 0x03, 0xec, 0x03, + 0xa1, 0x03, 0x9e, 0x03, 0x56, 0x03, 0x53, 0x03, 0x0b, 0x03, 0x0a, 0x03, + 0xc6, 0x02, 0xc2, 0x02, 0x8d, 0x02, 0x89, 0x02, 0x54, 0x02, 0x53, 0x02, + 0x34, 0x02, 0x30, 0x02, 0x1a, 0x02, 0x18, 0x02, 0x18, 0x02, 0x14, 0x02, + 0x22, 0x02, 0x1f, 0x02, 0x43, 0x02, 0x41, 0x02, 0x7a, 0x02, 0x77, 0x02, + 0xc2, 0x02, 0xc0, 0x02, 0x20, 0x03, 0x1e, 0x03, 0x94, 0x03, 0x8f, 0x03, + 0x14, 0x04, 0x15, 0x04, 0xae, 0x04, 0xa9, 0x04, 0x52, 0x05, 0x50, 0x05, + 0x05, 0x06, 0x01, 0x06, 0xc4, 0x06, 0xc1, 0x06, 0x88, 0x07, 0x86, 0x07, + 0x56, 0x08, 0x53, 0x08, 0x24, 0x09, 0x22, 0x09, 0xf3, 0x09, 0xef, 0x09, + 0xbe, 0x0a, 0xbc, 0x0a, 0x82, 0x0b, 0x7e, 0x0b, 0x3f, 0x0c, 0x3d, 0x0c, + 0xee, 0x0c, 0xea, 0x0c, 0x8d, 0x0d, 0x8b, 0x0d, 0x1d, 0x0e, 0x19, 0x0e, + 0x96, 0x0e, 0x94, 0x0e, 0xfd, 0x0e, 0xfa, 0x0e, 0x47, 0x0f, 0x44, 0x0f, + 0x80, 0x0f, 0x7c, 0x0f, 0x99, 0x0f, 0x97, 0x0f, 0x9d, 0x0f, 0x9a, 0x0f, + 0x84, 0x0f, 0x82, 0x0f, 0x53, 0x0f, 0x50, 0x0f, 0x0c, 0x0f, 0x08, 0x0f, + 0xaa, 0x0e, 0xa8, 0x0e, 0x36, 0x0e, 0x33, 0x0e, 0xad, 0x0d, 0xaa, 0x0d, + 0x13, 0x0d, 0x0e, 0x0d, 0x6d, 0x0c, 0x6c, 0x0c, 0xb5, 0x0b, 0xb2, 0x0b, + 0xfd, 0x0a, 0xfb, 0x0a, 0x3a, 0x0a, 0x37, 0x0a, 0x75, 0x09, 0x73, 0x09, + 0xb6, 0x08, 0xb1, 0x08, 0xf2, 0x07, 0xf1, 0x07, 0x3f, 0x07, 0x3d, 0x07, + 0x8e, 0x06, 0x8c, 0x06, 0xee, 0x05, 0xea, 0x05, 0x5a, 0x05, 0x59, 0x05, + 0xd8, 0x04, 0xd4, 0x04, 0x66, 0x04, 0x65, 0x04, 0x0a, 0x04, 0x06, 0x04, + 0xc0, 0x03, 0xbf, 0x03, 0x8c, 0x03, 0x8a, 0x03, 0x69, 0x03, 0x67, 0x03, + 0x5c, 0x03, 0x59, 0x03, 0x61, 0x03, 0x5e, 0x03, 0x77, 0x03, 0x75, 0x03, + 0x9c, 0x03, 0x9a, 0x03, 0xd1, 0x03, 0xd1, 0x03, 0x11, 0x04, 0x0e, 0x04, + 0x5b, 0x04, 0x59, 0x04, 0xaa, 0x04, 0xa6, 0x04, 0xfc, 0x04, 0xfc, 0x04, + 0x50, 0x05, 0x4b, 0x05, 0xa1, 0x05, 0x9e, 0x05, 0xed, 0x05, 0xed, 0x05, + 0x2f, 0x06, 0x2b, 0x06, 0x69, 0x06, 0x68, 0x06, 0x94, 0x06, 0x8f, 0x06, + 0xad, 0x06, 0xaa, 0x06, 0xb3, 0x06, 0xb4, 0x06, 0xa7, 0x06, 0xa4, 0x06, + 0x84, 0x06, 0x84, 0x06, 0x4e, 0x06, 0x4a, 0x06, 0xfa, 0x05, 0xf9, 0x05, + 0x96, 0x05, 0x92, 0x05, 0x13, 0x05, 0x13, 0x05, 0x81, 0x04, 0x7c, 0x04, + 0xd4, 0x03, 0xd2, 0x03, 0x16, 0x03, 0x12, 0x03, 0x45, 0x02, 0x42, 0x02, + 0x65, 0x01, 0x60, 0x01, 0x75, 0x00, 0x73, 0x00, 0x7d, 0xff, 0x78, 0xff, + 0x7e, 0xfe, 0x7d, 0xfe, 0x7c, 0xfd, 0x79, 0xfd, 0x79, 0xfc, 0x77, 0xfc, + 0x78, 0xfb, 0x75, 0xfb, 0x7c, 0xfa, 0x7a, 0xfa, 0x8a, 0xf9, 0x88, 0xf9, + 0xa5, 0xf8, 0xa3, 0xf8, 0xcd, 0xf7, 0xcb, 0xf7, 0x08, 0xf7, 0x05, 0xf7, + 0x56, 0xf6, 0x53, 0xf6, 0xb8, 0xf5, 0xb6, 0xf5, 0x33, 0xf5, 0x2f, 0xf5, + 0xc6, 0xf4, 0xc3, 0xf4, 0x71, 0xf4, 0x6d, 0xf4, 0x36, 0xf4, 0x34, 0xf4, + 0x12, 0xf4, 0x0f, 0xf4, 0x0a, 0xf4, 0x08, 0xf4, 0x15, 0xf4, 0x13, 0xf4, + 0x3b, 0xf4, 0x38, 0xf4, 0x71, 0xf4, 0x70, 0xf4, 0xbc, 0xf4, 0xb8, 0xf4, + 0x15, 0xf5, 0x12, 0xf5, 0x79, 0xf5, 0x77, 0xf5, 0xed, 0xf5, 0xe8, 0xf5, + 0x5e, 0xf6, 0x5e, 0xf6, 0xdc, 0xf6, 0xd9, 0xf6, 0x55, 0xf7, 0x53, 0xf7, + 0xcf, 0xf7, 0xcc, 0xf7, 0x41, 0xf8, 0x3e, 0xf8, 0xab, 0xf8, 0xa9, 0xf8, + 0x0b, 0xf9, 0x09, 0xf9, 0x5d, 0xf9, 0x59, 0xf9, 0xa0, 0xf9, 0x9d, 0xf9, + 0xd0, 0xf9, 0xce, 0xf9, 0xf1, 0xf9, 0xee, 0xf9, 0xf9, 0xf9, 0xf6, 0xf9, + 0xf3, 0xf9, 0xf0, 0xf9, 0xd5, 0xf9, 0xd2, 0xf9, 0xa4, 0xf9, 0xa2, 0xf9, + 0x60, 0xf9, 0x5f, 0xf9, 0x0b, 0xf9, 0x09, 0xf9, 0xa9, 0xf8, 0xa5, 0xf8, + 0x35, 0xf8, 0x33, 0xf8, 0xb7, 0xf7, 0xb4, 0xf7, 0x30, 0xf7, 0x2d, 0xf7, + 0xa0, 0xf6, 0x9e, 0xf6, 0x0e, 0xf6, 0x0c, 0xf6, 0x7e, 0xf5, 0x7b, 0xf5, + 0xec, 0xf4, 0xea, 0xf4, 0x61, 0xf4, 0x5f, 0xf4, 0xdf, 0xf3, 0xdb, 0xf3, + 0x65, 0xf3, 0x64, 0xf3, 0xff, 0xf2, 0xfc, 0xf2, 0xa5, 0xf2, 0xa2, 0xf2, + 0x61, 0xf2, 0x5f, 0xf2, 0x30, 0xf2, 0x2e, 0xf2, 0x18, 0xf2, 0x16, 0xf2, + 0x17, 0xf2, 0x15, 0xf2, 0x31, 0xf2, 0x31, 0xf2, 0x64, 0xf2, 0x62, 0xf2, + 0xb1, 0xf2, 0xaf, 0xf2, 0x17, 0xf3, 0x14, 0xf3, 0x97, 0xf3, 0x96, 0xf3, + 0x2d, 0xf4, 0x2a, 0xf4, 0xd9, 0xf4, 0xd7, 0xf4, 0x9a, 0xf5, 0x98, 0xf5, + 0x6c, 0xf6, 0x6a, 0xf6, 0x4c, 0xf7, 0x49, 0xf7, 0x37, 0xf8, 0x34, 0xf8, + 0x2d, 0xf9, 0x2c, 0xf9, 0x27, 0xfa, 0x24, 0xfa, 0x22, 0xfb, 0x20, 0xfb, + 0x1d, 0xfc, 0x1c, 0xfc, 0x16, 0xfd, 0x12, 0xfd, 0x03, 0xfe, 0x01, 0xfe, + 0xe6, 0xfe, 0xe4, 0xfe, 0xbe, 0xff, 0xbb, 0xff, 0x81, 0x00, 0x81, 0x00, + 0x37, 0x01, 0x33, 0x01, 0xd6, 0x01, 0xd6, 0x01, 0x60, 0x02, 0x5f, 0x02, + 0xd5, 0x02, 0xd1, 0x02, 0x30, 0x03, 0x2f, 0x03, 0x76, 0x03, 0x74, 0x03, + 0xa4, 0x03, 0xa2, 0x03, 0xbd, 0x03, 0xbd, 0x03, 0xc2, 0x03, 0xc0, 0x03, + 0xb2, 0x03, 0xb0, 0x03, 0x90, 0x03, 0x8f, 0x03, 0x60, 0x03, 0x5f, 0x03, + 0x28, 0x03, 0x26, 0x03, 0xdd, 0x02, 0xdc, 0x02, 0x93, 0x02, 0x92, 0x02, + 0x3f, 0x02, 0x3d, 0x02, 0xed, 0x01, 0xee, 0x01, 0xa1, 0x01, 0x9f, 0x01, + 0x55, 0x01, 0x55, 0x01, 0x17, 0x01, 0x15, 0x01, 0xe0, 0x00, 0xdf, 0x00, + 0xbb, 0x00, 0xba, 0x00, 0xa4, 0x00, 0xa2, 0x00, 0xa0, 0x00, 0x9d, 0x00, + 0xb2, 0x00, 0xb2, 0x00, 0xd8, 0x00, 0xd6, 0x00, 0x15, 0x01, 0x13, 0x01, + 0x66, 0x01, 0x65, 0x01, 0xcf, 0x01, 0xcd, 0x01, 0x4c, 0x02, 0x4a, 0x02, + 0xdd, 0x02, 0xde, 0x02, 0x82, 0x03, 0x7f, 0x03, 0x38, 0x04, 0x38, 0x04, + 0xfe, 0x04, 0xfd, 0x04, 0xcc, 0x05, 0xc9, 0x05, 0xa6, 0x06, 0xa7, 0x06, + 0x85, 0x07, 0x82, 0x07, 0x68, 0x08, 0x68, 0x08, 0x4c, 0x09, 0x4b, 0x09, + 0x2a, 0x0a, 0x28, 0x0a, 0x05, 0x0b, 0x04, 0x0b, 0xd1, 0x0b, 0xd1, 0x0b, + 0x96, 0x0c, 0x96, 0x0c, 0x46, 0x0d, 0x45, 0x0d, 0xe9, 0x0d, 0xe8, 0x0d, + 0x71, 0x0e, 0x70, 0x0e, 0xe7, 0x0e, 0xe6, 0x0e, 0x44, 0x0f, 0x43, 0x0f, + 0x84, 0x0f, 0x82, 0x0f, 0xae, 0x0f, 0xad, 0x0f, 0xb7, 0x0f, 0xb7, 0x0f, + 0xad, 0x0f, 0xa9, 0x0f, 0x7f, 0x0f, 0x81, 0x0f, 0x42, 0x0f, 0x3d, 0x0f, + 0xe4, 0x0e, 0xe4, 0x0e, 0x73, 0x0e, 0x73, 0x0e, 0xf0, 0x0d, 0xef, 0x0d, + 0x57, 0x0d, 0x56, 0x0d, 0xb5, 0x0c, 0xb4, 0x0c, 0x00, 0x0c, 0x02, 0x0c, + 0x49, 0x0b, 0x46, 0x0b, 0x88, 0x0a, 0x8a, 0x0a, 0xc7, 0x09, 0xc4, 0x09, + 0x08, 0x09, 0x08, 0x09, 0x4a, 0x08, 0x49, 0x08, 0x99, 0x07, 0x99, 0x07, + 0xef, 0x06, 0xed, 0x06, 0x4f, 0x06, 0x50, 0x06, 0xc8, 0x05, 0xc5, 0x05, + 0x47, 0x05, 0x49, 0x05, 0xe4, 0x04, 0xe1, 0x04, 0x8b, 0x04, 0x8c, 0x04, + 0x4c, 0x04, 0x4d, 0x04, 0x26, 0x04, 0x25, 0x04, 0x0d, 0x04, 0x0f, 0x04, + 0x11, 0x04, 0x10, 0x04, 0x23, 0x04, 0x22, 0x04, 0x48, 0x04, 0x49, 0x04, + 0x82, 0x04, 0x7f, 0x04, 0xc1, 0x04, 0xc2, 0x04, 0x15, 0x05, 0x14, 0x05, + 0x6c, 0x05, 0x6b, 0x05, 0xcc, 0x05, 0xce, 0x05, 0x30, 0x06, 0x2e, 0x06, + 0x90, 0x06, 0x90, 0x06, 0xf4, 0x06, 0xf3, 0x06, 0x4c, 0x07, 0x4a, 0x07, + 0x9e, 0x07, 0x9d, 0x07, 0xe2, 0x07, 0xe1, 0x07, 0x17, 0x08, 0x16, 0x08, + 0x3c, 0x08, 0x3c, 0x08, 0x4b, 0x08, 0x49, 0x08, 0x47, 0x08, 0x45, 0x08, + 0x28, 0x08, 0x28, 0x08, 0xf3, 0x07, 0xf2, 0x07, 0xa4, 0x07, 0xa3, 0x07, + 0x3b, 0x07, 0x3a, 0x07, 0xbd, 0x06, 0xbd, 0x06, 0x24, 0x06, 0x23, 0x06, + 0x75, 0x05, 0x72, 0x05, 0xae, 0x04, 0xae, 0x04, 0xd5, 0x03, 0xd4, 0x03, + 0xec, 0x02, 0xed, 0x02, 0xf5, 0x01, 0xf3, 0x01, 0xf2, 0x00, 0xf2, 0x00, + 0xe8, 0xff, 0xe5, 0xff, 0xd8, 0xfe, 0xd8, 0xfe, 0xc9, 0xfd, 0xc8, 0xfd, + 0xbd, 0xfc, 0xbb, 0xfc, 0xb6, 0xfb, 0xb6, 0xfb, 0xb7, 0xfa, 0xb6, 0xfa, + 0xc8, 0xf9, 0xc6, 0xf9, 0xe2, 0xf8, 0xe2, 0xf8, 0x16, 0xf8, 0x14, 0xf8, + 0x59, 0xf7, 0x56, 0xf7, 0xb4, 0xf6, 0xb5, 0xf6, 0x28, 0xf6, 0x26, 0xf6, + 0xb1, 0xf5, 0xb1, 0xf5, 0x5a, 0xf5, 0x5a, 0xf5, 0x15, 0xf5, 0x15, 0xf5, + 0xf3, 0xf4, 0xf3, 0xf4, 0xe6, 0xf4, 0xe5, 0xf4, 0xf0, 0xf4, 0xf3, 0xf4, + 0x16, 0xf5, 0x13, 0xf5, 0x47, 0xf5, 0x49, 0xf5, 0x95, 0xf5, 0x92, 0xf5, + 0xeb, 0xf5, 0xeb, 0xf5, 0x52, 0xf6, 0x52, 0xf6, 0xc3, 0xf6, 0xc1, 0xf6, + 0x38, 0xf7, 0x39, 0xf7, 0xb3, 0xf7, 0xb0, 0xf7, 0x2b, 0xf8, 0x2c, 0xf8, + 0xa3, 0xf8, 0xa2, 0xf8, 0x13, 0xf9, 0x11, 0xf9, 0x79, 0xf9, 0x79, 0xf9, + 0xd4, 0xf9, 0xd1, 0xf9, 0x20, 0xfa, 0x1f, 0xfa, 0x58, 0xfa, 0x57, 0xfa, + 0x82, 0xfa, 0x7f, 0xfa, 0x94, 0xfa, 0x95, 0xfa, 0x95, 0xfa, 0x91, 0xfa, + 0x7d, 0xfa, 0x7f, 0xfa, 0x54, 0xfa, 0x50, 0xfa, 0x14, 0xfa, 0x12, 0xfa, + 0xbe, 0xf9, 0xbc, 0xf9, 0x57, 0xf9, 0x55, 0xf9, 0xdf, 0xf8, 0xde, 0xf8, + 0x58, 0xf8, 0x57, 0xf8, 0xc4, 0xf7, 0xc4, 0xf7, 0x29, 0xf7, 0x28, 0xf7, + 0x85, 0xf6, 0x85, 0xf6, 0xdf, 0xf5, 0xdf, 0xf5, 0x37, 0xf5, 0x35, 0xf5, + 0x90, 0xf4, 0x90, 0xf4, 0xf3, 0xf3, 0xf0, 0xf3, 0x5c, 0xf3, 0x5b, 0xf3, + 0xd4, 0xf2, 0xd3, 0xf2, 0x58, 0xf2, 0x57, 0xf2, 0xef, 0xf1, 0xee, 0xf1, + 0x9e, 0xf1, 0x9c, 0xf1, 0x5a, 0xf1, 0x5a, 0xf1, 0x3a, 0xf1, 0x3a, 0xf1, + 0x2b, 0xf1, 0x2b, 0xf1, 0x3d, 0xf1, 0x3a, 0xf1, 0x65, 0xf1, 0x65, 0xf1, + 0xac, 0xf1, 0xab, 0xf1, 0x0b, 0xf2, 0x0d, 0xf2, 0x87, 0xf2, 0x86, 0xf2, + 0x1a, 0xf3, 0x19, 0xf3, 0xc5, 0xf3, 0xc5, 0xf3, 0x83, 0xf4, 0x83, 0xf4, + 0x53, 0xf5, 0x54, 0xf5, 0x37, 0xf6, 0x37, 0xf6, 0x22, 0xf7, 0x21, 0xf7, + 0x17, 0xf8, 0x19, 0xf8, 0x13, 0xf9, 0x12, 0xf9, 0x11, 0xfa, 0x13, 0xfa, + 0x0d, 0xfb, 0x0b, 0xfb, 0x03, 0xfc, 0x04, 0xfc, 0xf5, 0xfc, 0xf3, 0xfc, + 0xd7, 0xfd, 0xd6, 0xfd, 0xad, 0xfe, 0xad, 0xfe, 0x71, 0xff, 0x71, 0xff, + 0x23, 0x00, 0x22, 0x00, 0xc0, 0x00, 0xc2, 0x00, 0x46, 0x01, 0x43, 0x01, + 0xb4, 0x01, 0xb8, 0x01, 0x0d, 0x02, 0x0b, 0x02, 0x4b, 0x02, 0x4d, 0x02, + 0x76, 0x02, 0x73, 0x02, 0x87, 0x02, 0x87, 0x02, 0x83, 0x02, 0x84, 0x02, + 0x6c, 0x02, 0x6b, 0x02, 0x43, 0x02, 0x43, 0x02, 0x0b, 0x02, 0x0a, 0x02, + 0xc5, 0x01, 0xc6, 0x01, 0x7a, 0x01, 0x78, 0x01, 0x24, 0x01, 0x24, 0x01, + 0xcc, 0x00, 0xcb, 0x00, 0x75, 0x00, 0x74, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0xd1, 0xff, 0xd1, 0xff, 0x8d, 0xff, 0x8c, 0xff, 0x56, 0xff, 0x56, 0xff, + 0x2f, 0xff, 0x2e, 0xff, 0x18, 0xff, 0x19, 0xff, 0x17, 0xff, 0x17, 0xff, + 0x2b, 0xff, 0x2b, 0xff, 0x58, 0xff, 0x55, 0xff, 0x99, 0xff, 0x9b, 0xff, + 0xf4, 0xff, 0xf3, 0xff, 0x69, 0x00, 0x68, 0x00, 0xf0, 0x00, 0xf1, 0x00, + 0x8f, 0x01, 0x8d, 0x01, 0x43, 0x02, 0x41, 0x02, 0x04, 0x03, 0x04, 0x03, + 0xda, 0x03, 0xd9, 0x03, 0xb8, 0x04, 0xb9, 0x04, 0xa8, 0x05, 0xa5, 0x05, + 0x95, 0x06, 0x96, 0x06, 0x8c, 0x07, 0x8a, 0x07, 0x7f, 0x08, 0x80, 0x08, + 0x6f, 0x09, 0x6e, 0x09, 0x5c, 0x0a, 0x5c, 0x0a, 0x3b, 0x0b, 0x39, 0x0b, + 0x0d, 0x0c, 0x0d, 0x0c, 0xcf, 0x0c, 0xce, 0x0c, 0x7e, 0x0d, 0x7e, 0x0d, + 0x17, 0x0e, 0x16, 0x0e, 0x98, 0x0e, 0x97, 0x0e, 0x00, 0x0f, 0x00, 0x0f, + 0x4e, 0x0f, 0x4c, 0x0f, 0x80, 0x0f, 0x7e, 0x0f, 0x93, 0x0f, 0x95, 0x0f, + 0x8f, 0x0f, 0x8b, 0x0f, 0x6b, 0x0f, 0x6c, 0x0f, 0x30, 0x0f, 0x30, 0x0f, + 0xdc, 0x0e, 0xd9, 0x0e, 0x6e, 0x0e, 0x6e, 0x0e, 0xf0, 0x0d, 0xed, 0x0d, + 0x5a, 0x0d, 0x5b, 0x0d, 0xba, 0x0c, 0xb8, 0x0c, 0x0e, 0x0c, 0x0e, 0x0c, + 0x55, 0x0b, 0x56, 0x0b, 0x9e, 0x0a, 0x9d, 0x0a, 0xde, 0x09, 0xdd, 0x09, + 0x24, 0x09, 0x24, 0x09, 0x6e, 0x08, 0x6c, 0x08, 0xbf, 0x07, 0xc0, 0x07, + 0x1f, 0x07, 0x1d, 0x07, 0x89, 0x06, 0x89, 0x06, 0x06, 0x06, 0x05, 0x06, + 0x94, 0x05, 0x94, 0x05, 0x36, 0x05, 0x36, 0x05, 0xef, 0x04, 0xef, 0x04, + 0xbb, 0x04, 0xb9, 0x04, 0xa0, 0x04, 0x9f, 0x04, 0x99, 0x04, 0x99, 0x04, + 0xa9, 0x04, 0xa7, 0x04, 0xcd, 0x04, 0xcd, 0x04, 0xfe, 0x04, 0xfe, 0x04, + 0x47, 0x05, 0x47, 0x05, 0x9a, 0x05, 0x99, 0x05, 0xfb, 0x05, 0xfa, 0x05, + 0x65, 0x06, 0x65, 0x06, 0xd3, 0x06, 0xd2, 0x06, 0x48, 0x07, 0x48, 0x07, + 0xb6, 0x07, 0xb6, 0x07, 0x28, 0x08, 0x26, 0x08, 0x8c, 0x08, 0x8d, 0x08, + 0xea, 0x08, 0xe8, 0x08, 0x3b, 0x09, 0x3c, 0x09, 0x7a, 0x09, 0x77, 0x09, + 0xa6, 0x09, 0xa6, 0x09, 0xbd, 0x09, 0xbd, 0x09, 0xbe, 0x09, 0xbe, 0x09, + 0xa8, 0x09, 0xa8, 0x09, 0x74, 0x09, 0x74, 0x09, 0x2b, 0x09, 0x2b, 0x09, + 0xc2, 0x08, 0xc1, 0x08, 0x41, 0x08, 0x42, 0x08, 0xa9, 0x07, 0xa6, 0x07, + 0xf4, 0x06, 0xf4, 0x06, 0x2c, 0x06, 0x2b, 0x06, 0x4c, 0x05, 0x4d, 0x05, + 0x60, 0x04, 0x60, 0x04, 0x5f, 0x03, 0x60, 0x03, 0x58, 0x02, 0x57, 0x02, + 0x43, 0x01, 0x46, 0x01, 0x30, 0x00, 0x2f, 0x00, 0x17, 0xff, 0x17, 0xff, + 0x00, 0xfe, 0x01, 0xfe, 0xf4, 0xfc, 0xf3, 0xfc, 0xed, 0xfb, 0xed, 0xfb, + 0xf6, 0xfa, 0xf6, 0xfa, 0x0b, 0xfa, 0x0b, 0xfa, 0x35, 0xf9, 0x35, 0xf9, + 0x74, 0xf8, 0x72, 0xf8, 0xc9, 0xf7, 0xcb, 0xf7, 0x38, 0xf7, 0x36, 0xf7, + 0xc0, 0xf6, 0xc2, 0xf6, 0x64, 0xf6, 0x62, 0xf6, 0x20, 0xf6, 0x20, 0xf6, + 0xf7, 0xf5, 0xf7, 0xf5, 0xea, 0xf5, 0xe9, 0xf5, 0xf2, 0xf5, 0xf4, 0xf5, + 0x16, 0xf6, 0x14, 0xf6, 0x4b, 0xf6, 0x4d, 0xf6, 0x96, 0xf6, 0x93, 0xf6, + 0xef, 0xf6, 0xef, 0xf6, 0x52, 0xf7, 0x50, 0xf7, 0xc4, 0xf7, 0xc3, 0xf7, + 0x37, 0xf8, 0x36, 0xf8, 0xb1, 0xf8, 0xb0, 0xf8, 0x27, 0xf9, 0x26, 0xf9, + 0x99, 0xf9, 0x99, 0xf9, 0x07, 0xfa, 0x05, 0xfa, 0x68, 0xfa, 0x68, 0xfa, + 0xba, 0xfa, 0xba, 0xfa, 0x02, 0xfb, 0x01, 0xfb, 0x30, 0xfb, 0x31, 0xfb, + 0x52, 0xfb, 0x51, 0xfb, 0x58, 0xfb, 0x57, 0xfb, 0x4c, 0xfb, 0x4c, 0xfb, + 0x29, 0xfb, 0x28, 0xfb, 0xed, 0xfa, 0xec, 0xfa, 0x9f, 0xfa, 0x9f, 0xfa, + 0x39, 0xfa, 0x37, 0xfa, 0xc1, 0xf9, 0xc2, 0xf9, 0x37, 0xf9, 0x35, 0xf9, + 0x9c, 0xf8, 0x9d, 0xf8, 0xf7, 0xf7, 0xf6, 0xf7, 0x45, 0xf7, 0x44, 0xf7, + 0x90, 0xf6, 0x8f, 0xf6, 0xd3, 0xf5, 0xd2, 0xf5, 0x19, 0xf5, 0x18, 0xf5, + 0x61, 0xf4, 0x5e, 0xf4, 0xac, 0xf3, 0xae, 0xf3, 0x07, 0xf3, 0x04, 0xf3, + 0x68, 0xf2, 0x69, 0xf2, 0xdd, 0xf1, 0xdc, 0xf1, 0x65, 0xf1, 0x65, 0xf1, + 0x01, 0xf1, 0x01, 0xf1, 0xb7, 0xf0, 0xb4, 0xf0, 0x85, 0xf0, 0x86, 0xf0, + 0x6b, 0xf0, 0x6b, 0xf0, 0x73, 0xf0, 0x71, 0xf0, 0x93, 0xf0, 0x92, 0xf0, + 0xd1, 0xf0, 0xd0, 0xf0, 0x2c, 0xf1, 0x2d, 0xf1, 0x9d, 0xf1, 0x9c, 0xf1, + 0x2f, 0xf2, 0x2e, 0xf2, 0xd5, 0xf2, 0xd5, 0xf2, 0x8f, 0xf3, 0x8e, 0xf3, + 0x62, 0xf4, 0x61, 0xf4, 0x3d, 0xf5, 0x3d, 0xf5, 0x2e, 0xf6, 0x2a, 0xf6, + 0x1f, 0xf7, 0x20, 0xf7, 0x1c, 0xf8, 0x19, 0xf8, 0x1a, 0xf9, 0x18, 0xf9, + 0x12, 0xfa, 0x10, 0xfa, 0x0c, 0xfb, 0x0a, 0xfb, 0xf7, 0xfb, 0xf7, 0xfb, + 0xdc, 0xfc, 0xd9, 0xfc, 0xad, 0xfd, 0xac, 0xfd, 0x71, 0xfe, 0x6f, 0xfe, + 0x1f, 0xff, 0x1e, 0xff, 0xb8, 0xff, 0xb5, 0xff, 0x37, 0x00, 0x38, 0x00, + 0xa6, 0x00, 0xa3, 0x00, 0xf5, 0x00, 0xf3, 0x00, 0x2f, 0x01, 0x2e, 0x01, + 0x4e, 0x01, 0x4d, 0x01, 0x5b, 0x01, 0x5b, 0x01, 0x4d, 0x01, 0x4b, 0x01, + 0x2f, 0x01, 0x2e, 0x01, 0xfe, 0x00, 0xfc, 0x00, 0xbc, 0x00, 0xba, 0x00, + 0x71, 0x00, 0x70, 0x00, 0x17, 0x00, 0x15, 0x00, 0xbc, 0xff, 0xba, 0xff, + 0x5d, 0xff, 0x5a, 0xff, 0xfa, 0xfe, 0xfa, 0xfe, 0xa2, 0xfe, 0xa0, 0xfe, + 0x4d, 0xfe, 0x4a, 0xfe, 0x05, 0xfe, 0x04, 0xfe, 0xc9, 0xfd, 0xc8, 0xfd, + 0x9e, 0xfd, 0x9c, 0xfd, 0x87, 0xfd, 0x86, 0xfd, 0x85, 0xfd, 0x83, 0xfd, + 0x9a, 0xfd, 0x9a, 0xfd, 0xc9, 0xfd, 0xc7, 0xfd, 0x10, 0xfe, 0x0f, 0xfe, + 0x70, 0xfe, 0x6f, 0xfe, 0xea, 0xfe, 0xe9, 0xfe, 0x7c, 0xff, 0x79, 0xff, + 0x25, 0x00, 0x25, 0x00, 0xe3, 0x00, 0xe1, 0x00, 0xb5, 0x01, 0xb4, 0x01, + 0x97, 0x02, 0x95, 0x02, 0x85, 0x03, 0x84, 0x03, 0x81, 0x04, 0x81, 0x04, + 0x80, 0x05, 0x7e, 0x05, 0x88, 0x06, 0x87, 0x06, 0x8c, 0x07, 0x8b, 0x07, + 0x91, 0x08, 0x8d, 0x08, 0x8a, 0x09, 0x8a, 0x09, 0x7c, 0x0a, 0x7a, 0x0a, + 0x5f, 0x0b, 0x5d, 0x0b, 0x2e, 0x0c, 0x2f, 0x0c, 0xf0, 0x0c, 0xed, 0x0c, + 0x96, 0x0d, 0x96, 0x0d, 0x25, 0x0e, 0x23, 0x0e, 0x9d, 0x0e, 0x9b, 0x0e, + 0xf1, 0x0e, 0xf1, 0x0e, 0x32, 0x0f, 0x30, 0x0f, 0x50, 0x0f, 0x4e, 0x0f, + 0x50, 0x0f, 0x4f, 0x0f, 0x3a, 0x0f, 0x3a, 0x0f, 0x02, 0x0f, 0x01, 0x0f, + 0xb6, 0x0e, 0xb4, 0x0e, 0x4d, 0x0e, 0x4f, 0x0e, 0xd4, 0x0d, 0xd2, 0x0d, + 0x46, 0x0d, 0x46, 0x0d, 0xa7, 0x0c, 0xa6, 0x0c, 0x00, 0x0c, 0xff, 0x0b, + 0x4b, 0x0b, 0x4a, 0x0b, 0x95, 0x0a, 0x95, 0x0a, 0xdb, 0x09, 0xd9, 0x09, + 0x25, 0x09, 0x26, 0x09, 0x73, 0x08, 0x72, 0x08, 0xcb, 0x07, 0xcb, 0x07, + 0x2e, 0x07, 0x30, 0x07, 0xa1, 0x06, 0xa0, 0x06, 0x27, 0x06, 0x27, 0x06, + 0xbc, 0x05, 0xbc, 0x05, 0x6a, 0x05, 0x68, 0x05, 0x29, 0x05, 0x2c, 0x05, + 0x06, 0x05, 0x03, 0x05, 0xf4, 0x04, 0xf7, 0x04, 0xfc, 0x04, 0xfa, 0x04, + 0x1a, 0x05, 0x1a, 0x05, 0x4a, 0x05, 0x4a, 0x05, 0x91, 0x05, 0x90, 0x05, + 0xe4, 0x05, 0xe5, 0x05, 0x4d, 0x06, 0x4b, 0x06, 0xbd, 0x06, 0xbc, 0x06, + 0x38, 0x07, 0x38, 0x07, 0xba, 0x07, 0xb9, 0x07, 0x3a, 0x08, 0x3a, 0x08, + 0xc0, 0x08, 0xc0, 0x08, 0x3e, 0x09, 0x3e, 0x09, 0xb4, 0x09, 0xb4, 0x09, + 0x21, 0x0a, 0x22, 0x0a, 0x7e, 0x0a, 0x7e, 0x0a, 0xcc, 0x0a, 0xcd, 0x0a, + 0x04, 0x0b, 0x03, 0x0b, 0x29, 0x0b, 0x28, 0x0b, 0x31, 0x0b, 0x32, 0x0b, + 0x20, 0x0b, 0x20, 0x0b, 0xf6, 0x0a, 0xf7, 0x0a, 0xae, 0x0a, 0xaf, 0x0a, + 0x4c, 0x0a, 0x4c, 0x0a, 0xce, 0x09, 0xcd, 0x09, 0x31, 0x09, 0x33, 0x09, + 0x80, 0x08, 0x80, 0x08, 0xb4, 0x07, 0xb4, 0x07, 0xd4, 0x06, 0xd3, 0x06, + 0xe1, 0x05, 0xe1, 0x05, 0xdd, 0x04, 0xdc, 0x04, 0xcd, 0x03, 0xce, 0x03, + 0xb4, 0x02, 0xb2, 0x02, 0x96, 0x01, 0x98, 0x01, 0x75, 0x00, 0x74, 0x00, + 0x58, 0xff, 0x58, 0xff, 0x41, 0xfe, 0x43, 0xfe, 0x32, 0xfd, 0x30, 0xfd, + 0x34, 0xfc, 0x34, 0xfc, 0x40, 0xfb, 0x40, 0xfb, 0x63, 0xfa, 0x62, 0xfa, + 0x9c, 0xf9, 0x9b, 0xf9, 0xea, 0xf8, 0xea, 0xf8, 0x56, 0xf8, 0x52, 0xf8, + 0xd5, 0xf7, 0xd9, 0xf7, 0x79, 0xf7, 0x75, 0xf7, 0x30, 0xf7, 0x31, 0xf7, + 0x08, 0xf7, 0x06, 0xf7, 0xf7, 0xf6, 0xf7, 0xf6, 0x03, 0xf7, 0x02, 0xf7, + 0x23, 0xf7, 0x22, 0xf7, 0x5c, 0xf7, 0x5b, 0xf7, 0xa5, 0xf7, 0xa5, 0xf7, + 0xfe, 0xf7, 0xfd, 0xf7, 0x68, 0xf8, 0x67, 0xf8, 0xd7, 0xf8, 0xd6, 0xf8, + 0x4e, 0xf9, 0x4f, 0xf9, 0xc7, 0xf9, 0xc7, 0xf9, 0x40, 0xfa, 0x3f, 0xfa, + 0xb3, 0xfa, 0xb3, 0xfa, 0x1c, 0xfb, 0x1d, 0xfb, 0x7e, 0xfb, 0x7d, 0xfb, + 0xcd, 0xfb, 0xcd, 0xfb, 0x0e, 0xfc, 0x0d, 0xfc, 0x3a, 0xfc, 0x3a, 0xfc, + 0x52, 0xfc, 0x51, 0xfc, 0x53, 0xfc, 0x52, 0xfc, 0x39, 0xfc, 0x3a, 0xfc, + 0x0d, 0xfc, 0x0b, 0xfc, 0xc4, 0xfb, 0xc5, 0xfb, 0x66, 0xfb, 0x64, 0xfb, + 0xf0, 0xfa, 0xf0, 0xfa, 0x68, 0xfa, 0x68, 0xfa, 0xce, 0xf9, 0xca, 0xf9, + 0x1f, 0xf9, 0x21, 0xf9, 0x68, 0xf8, 0x64, 0xf8, 0x9e, 0xf7, 0x9f, 0xf7, + 0xd6, 0xf6, 0xd5, 0xf6, 0x05, 0xf6, 0x03, 0xf6, 0x34, 0xf5, 0x33, 0xf5, + 0x67, 0xf4, 0x66, 0xf4, 0x9f, 0xf3, 0x9c, 0xf3, 0xe3, 0xf2, 0xe3, 0xf2, + 0x32, 0xf2, 0x31, 0xf2, 0x94, 0xf1, 0x92, 0xf1, 0x08, 0xf1, 0x09, 0xf1, + 0x97, 0xf0, 0x92, 0xf0, 0x37, 0xf0, 0x3a, 0xf0, 0xf8, 0xef, 0xf4, 0xef, + 0xd3, 0xef, 0xd3, 0xef, 0xcc, 0xef, 0xca, 0xef, 0xe1, 0xef, 0xdf, 0xef, + 0x15, 0xf0, 0x17, 0xf0, 0x68, 0xf0, 0x66, 0xf0, 0xd6, 0xf0, 0xd5, 0xf0, + 0x5f, 0xf1, 0x5d, 0xf1, 0x00, 0xf2, 0x01, 0xf2, 0xbb, 0xf2, 0xb8, 0xf2, + 0x84, 0xf3, 0x85, 0xf3, 0x65, 0xf4, 0x61, 0xf4, 0x4c, 0xf5, 0x4c, 0xf5, + 0x42, 0xf6, 0x40, 0xf6, 0x3d, 0xf7, 0x3c, 0xf7, 0x38, 0xf8, 0x38, 0xf8, + 0x34, 0xf9, 0x32, 0xf9, 0x28, 0xfa, 0x28, 0xfa, 0x17, 0xfb, 0x15, 0xfb, + 0xf7, 0xfb, 0xf6, 0xfb, 0xc8, 0xfc, 0xc8, 0xfc, 0x88, 0xfd, 0x87, 0xfd, + 0x34, 0xfe, 0x31, 0xfe, 0xc7, 0xfe, 0xc8, 0xfe, 0x47, 0xff, 0x44, 0xff, + 0xa8, 0xff, 0xa9, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0x27, 0x00, 0x26, 0x00, + 0x3e, 0x00, 0x3e, 0x00, 0x41, 0x00, 0x40, 0x00, 0x2b, 0x00, 0x29, 0x00, + 0x02, 0x00, 0x03, 0x00, 0xc7, 0xff, 0xc5, 0xff, 0x7d, 0xff, 0x7c, 0xff, + 0x25, 0xff, 0x24, 0xff, 0xc3, 0xfe, 0xc2, 0xfe, 0x5d, 0xfe, 0x5c, 0xfe, + 0xf0, 0xfd, 0xf1, 0xfd, 0x89, 0xfd, 0x89, 0xfd, 0x26, 0xfd, 0x24, 0xfd, + 0xc7, 0xfc, 0xc9, 0xfc, 0x7d, 0xfc, 0x79, 0xfc, 0x37, 0xfc, 0x38, 0xfc, + 0x0b, 0xfc, 0x08, 0xfc, 0xee, 0xfb, 0xee, 0xfb, 0xe9, 0xfb, 0xe9, 0xfb, + 0x00, 0xfc, 0xff, 0xfb, 0x2c, 0xfc, 0x2c, 0xfc, 0x78, 0xfc, 0x75, 0xfc, + 0xd9, 0xfc, 0xdc, 0xfc, 0x59, 0xfd, 0x57, 0xfd, 0xf4, 0xfd, 0xf4, 0xfd, + 0xa4, 0xfe, 0xa2, 0xfe, 0x6e, 0xff, 0x6f, 0xff, 0x4a, 0x00, 0x48, 0x00, + 0x39, 0x01, 0x3a, 0x01, 0x35, 0x02, 0x35, 0x02, 0x3f, 0x03, 0x3e, 0x03, + 0x51, 0x04, 0x4e, 0x04, 0x63, 0x05, 0x64, 0x05, 0x79, 0x06, 0x78, 0x06, + 0x8d, 0x07, 0x8c, 0x07, 0x96, 0x08, 0x96, 0x08, 0x9a, 0x09, 0x98, 0x09, + 0x8a, 0x0a, 0x8b, 0x0a, 0x6d, 0x0b, 0x6b, 0x0b, 0x38, 0x0c, 0x37, 0x0c, + 0xee, 0x0c, 0xed, 0x0c, 0x8a, 0x0d, 0x89, 0x0d, 0x08, 0x0e, 0x07, 0x0e, + 0x6e, 0x0e, 0x6d, 0x0e, 0xb2, 0x0e, 0xb3, 0x0e, 0xdc, 0x0e, 0xd9, 0x0e, + 0xe7, 0x0e, 0xe6, 0x0e, 0xd3, 0x0e, 0xd1, 0x0e, 0xa4, 0x0e, 0xa4, 0x0e, + 0x5a, 0x0e, 0x59, 0x0e, 0xf7, 0x0d, 0xf7, 0x0d, 0x83, 0x0d, 0x80, 0x0d, + 0xf6, 0x0c, 0xf4, 0x0c, 0x5e, 0x0c, 0x5c, 0x0c, 0xb7, 0x0b, 0xb4, 0x0b, + 0x06, 0x0b, 0x06, 0x0b, 0x54, 0x0a, 0x53, 0x0a, 0x9e, 0x09, 0x9c, 0x09, + 0xea, 0x08, 0xea, 0x08, 0x40, 0x08, 0x3e, 0x08, 0x9d, 0x07, 0x9b, 0x07, + 0x08, 0x07, 0x07, 0x07, 0x82, 0x06, 0x7f, 0x06, 0x0e, 0x06, 0x0d, 0x06, + 0xae, 0x05, 0xae, 0x05, 0x65, 0x05, 0x64, 0x05, 0x34, 0x05, 0x35, 0x05, + 0x1a, 0x05, 0x18, 0x05, 0x19, 0x05, 0x18, 0x05, 0x2f, 0x05, 0x2d, 0x05, + 0x5b, 0x05, 0x58, 0x05, 0x9e, 0x05, 0x9e, 0x05, 0xf3, 0x05, 0xf1, 0x05, + 0x5d, 0x06, 0x5c, 0x06, 0xd3, 0x06, 0xd0, 0x06, 0x56, 0x07, 0x55, 0x07, + 0xe5, 0x07, 0xe4, 0x07, 0x74, 0x08, 0x73, 0x08, 0x0d, 0x09, 0x0d, 0x09, + 0x9d, 0x09, 0x9c, 0x09, 0x33, 0x0a, 0x31, 0x0a, 0xb8, 0x0a, 0xb5, 0x0a, + 0x32, 0x0b, 0x32, 0x0b, 0xa0, 0x0b, 0x9e, 0x0b, 0xf7, 0x0b, 0xf7, 0x0b, + 0x3f, 0x0c, 0x3e, 0x0c, 0x6a, 0x0c, 0x68, 0x0c, 0x7f, 0x0c, 0x7e, 0x0c, + 0x77, 0x0c, 0x77, 0x0c, 0x51, 0x0c, 0x51, 0x0c, 0x0f, 0x0c, 0x0e, 0x0c, + 0xb1, 0x0b, 0xb2, 0x0b, 0x36, 0x0b, 0x34, 0x0b, 0x9c, 0x0a, 0x9b, 0x0a, + 0xe9, 0x09, 0xe8, 0x09, 0x1c, 0x09, 0x1a, 0x09, 0x3b, 0x08, 0x39, 0x08, + 0x41, 0x07, 0x40, 0x07, 0x3c, 0x06, 0x3b, 0x06, 0x26, 0x05, 0x24, 0x05, + 0x09, 0x04, 0x07, 0x04, 0xe5, 0x02, 0xe3, 0x02, 0xbd, 0x01, 0xbd, 0x01, + 0x9d, 0x00, 0x9b, 0x00, 0x7f, 0xff, 0x7f, 0xff, 0x6b, 0xfe, 0x6a, 0xfe, + 0x66, 0xfd, 0x65, 0xfd, 0x71, 0xfc, 0x6f, 0xfc, 0x8d, 0xfb, 0x8d, 0xfb, + 0xc2, 0xfa, 0xc2, 0xfa, 0x0f, 0xfa, 0x0d, 0xfa, 0x76, 0xf9, 0x78, 0xf9, + 0xf9, 0xf8, 0xf6, 0xf8, 0x97, 0xf8, 0x98, 0xf8, 0x54, 0xf8, 0x51, 0xf8, + 0x28, 0xf8, 0x29, 0xf8, 0x1d, 0xf8, 0x1b, 0xf8, 0x27, 0xf8, 0x27, 0xf8, + 0x4b, 0xf8, 0x4a, 0xf8, 0x85, 0xf8, 0x84, 0xf8, 0xcf, 0xf8, 0xce, 0xf8, + 0x2f, 0xf9, 0x30, 0xf9, 0x97, 0xf9, 0x95, 0xf9, 0x0b, 0xfa, 0x0b, 0xfa, + 0x83, 0xfa, 0x82, 0xfa, 0xfd, 0xfa, 0xfc, 0xfa, 0x77, 0xfb, 0x78, 0xfb, + 0xe8, 0xfb, 0xe5, 0xfb, 0x53, 0xfc, 0x55, 0xfc, 0xb1, 0xfc, 0xaf, 0xfc, + 0xfd, 0xfc, 0xfe, 0xfc, 0x3a, 0xfd, 0x39, 0xfd, 0x5e, 0xfd, 0x5e, 0xfd, + 0x71, 0xfd, 0x6f, 0xfd, 0x65, 0xfd, 0x66, 0xfd, 0x46, 0xfd, 0x41, 0xfd, + 0x08, 0xfd, 0x0b, 0xfd, 0xb6, 0xfc, 0xb3, 0xfc, 0x4a, 0xfc, 0x4a, 0xfc, + 0xc4, 0xfb, 0xc2, 0xfb, 0x29, 0xfb, 0x2a, 0xfb, 0x7e, 0xfa, 0x7c, 0xfa, + 0xbc, 0xf9, 0xbd, 0xf9, 0xf3, 0xf8, 0xf1, 0xf8, 0x16, 0xf8, 0x17, 0xf8, + 0x3b, 0xf7, 0x37, 0xf7, 0x54, 0xf6, 0x55, 0xf6, 0x71, 0xf5, 0x6f, 0xf5, + 0x91, 0xf4, 0x8e, 0xf4, 0xb5, 0xf3, 0xb5, 0xf3, 0xe8, 0xf2, 0xe6, 0xf2, + 0x24, 0xf2, 0x24, 0xf2, 0x75, 0xf1, 0x74, 0xf1, 0xdb, 0xf0, 0xd9, 0xf0, + 0x56, 0xf0, 0x55, 0xf0, 0xee, 0xef, 0xed, 0xef, 0x9f, 0xef, 0x9d, 0xef, + 0x70, 0xef, 0x6f, 0xef, 0x5b, 0xef, 0x5a, 0xef, 0x6a, 0xef, 0x68, 0xef, + 0x93, 0xef, 0x93, 0xef, 0xe1, 0xef, 0xdf, 0xef, 0x47, 0xf0, 0x44, 0xf0, + 0xcc, 0xf0, 0xca, 0xf0, 0x67, 0xf1, 0x65, 0xf1, 0x1d, 0xf2, 0x1d, 0xf2, + 0xe6, 0xf2, 0xe4, 0xf2, 0xbe, 0xf3, 0xbd, 0xf3, 0xa9, 0xf4, 0xa7, 0xf4, + 0x97, 0xf5, 0x97, 0xf5, 0x92, 0xf6, 0x90, 0xf6, 0x8a, 0xf7, 0x8a, 0xf7, + 0x84, 0xf8, 0x82, 0xf8, 0x72, 0xf9, 0x75, 0xf9, 0x5e, 0xfa, 0x5c, 0xfa, + 0x3a, 0xfb, 0x39, 0xfb, 0x06, 0xfc, 0x06, 0xfc, 0xc0, 0xfc, 0xbf, 0xfc, + 0x64, 0xfd, 0x63, 0xfd, 0xf1, 0xfd, 0xf0, 0xfd, 0x67, 0xfe, 0x65, 0xfe, + 0xc0, 0xfe, 0xc2, 0xfe, 0x05, 0xff, 0x03, 0xff, 0x2a, 0xff, 0x2a, 0xff, + 0x39, 0xff, 0x37, 0xff, 0x30, 0xff, 0x2f, 0xff, 0x0e, 0xff, 0x0d, 0xff, + 0xda, 0xfe, 0xda, 0xfe, 0x92, 0xfe, 0x91, 0xfe, 0x3b, 0xfe, 0x38, 0xfe, + 0xd8, 0xfd, 0xd9, 0xfd, 0x6b, 0xfd, 0x67, 0xfd, 0xf9, 0xfc, 0xfa, 0xfc, + 0x84, 0xfc, 0x81, 0xfc, 0x12, 0xfc, 0x11, 0xfc, 0xa5, 0xfb, 0xa4, 0xfb, + 0x43, 0xfb, 0x41, 0xfb, 0xeb, 0xfa, 0xeb, 0xfa, 0xa5, 0xfa, 0xa1, 0xfa, + 0x71, 0xfa, 0x70, 0xfa, 0x55, 0xfa, 0x51, 0xfa, 0x4c, 0xfa, 0x4b, 0xfa, + 0x64, 0xfa, 0x61, 0xfa, 0x91, 0xfa, 0x8f, 0xfa, 0xde, 0xfa, 0xdc, 0xfa, + 0x45, 0xfb, 0x45, 0xfb, 0xcc, 0xfb, 0xc6, 0xfb, 0x69, 0xfc, 0x6a, 0xfc, + 0x25, 0xfd, 0x21, 0xfd, 0xf5, 0xfd, 0xf5, 0xfd, 0xdd, 0xfe, 0xdb, 0xfe, + 0xd9, 0xff, 0xd6, 0xff, 0xe1, 0x00, 0xe1, 0x00, 0xf8, 0x01, 0xf5, 0x01, + 0x15, 0x03, 0x14, 0x03, 0x39, 0x04, 0x37, 0x04, 0x5b, 0x05, 0x5d, 0x05, + 0x80, 0x06, 0x7b, 0x06, 0x93, 0x07, 0x94, 0x07, 0xa6, 0x08, 0xa2, 0x08, + 0xa1, 0x09, 0xa1, 0x09, 0x91, 0x0a, 0x8e, 0x0a, 0x67, 0x0b, 0x66, 0x0b, + 0x2a, 0x0c, 0x27, 0x0c, 0xce, 0x0c, 0xcc, 0x0c, 0x58, 0x0d, 0x56, 0x0d, + 0xc3, 0x0d, 0xc2, 0x0d, 0x10, 0x0e, 0x0e, 0x0e, 0x42, 0x0e, 0x3f, 0x0e, + 0x4f, 0x0e, 0x4f, 0x0e, 0x43, 0x0e, 0x41, 0x0e, 0x16, 0x0e, 0x15, 0x0e, + 0xd2, 0x0d, 0xd0, 0x0d, 0x71, 0x0d, 0x72, 0x0d, 0x00, 0x0d, 0xfd, 0x0c, + 0x76, 0x0c, 0x78, 0x0c, 0xe1, 0x0b, 0xde, 0x0b, 0x3b, 0x0b, 0x3c, 0x0b, + 0x91, 0x0a, 0x90, 0x0a, 0xe1, 0x09, 0xdf, 0x09, 0x2f, 0x09, 0x30, 0x09, + 0x82, 0x08, 0x80, 0x08, 0xdb, 0x07, 0xdc, 0x07, 0x42, 0x07, 0x3e, 0x07, + 0xb0, 0x06, 0xb1, 0x06, 0x35, 0x06, 0x33, 0x06, 0xca, 0x05, 0xcb, 0x05, + 0x76, 0x05, 0x74, 0x05, 0x3a, 0x05, 0x3a, 0x05, 0x15, 0x05, 0x13, 0x05, + 0x0a, 0x05, 0x09, 0x05, 0x18, 0x05, 0x17, 0x05, 0x3e, 0x05, 0x3d, 0x05, + 0x7c, 0x05, 0x7b, 0x05, 0xd0, 0x05, 0xcf, 0x05, 0x39, 0x06, 0x37, 0x06, + 0xb2, 0x06, 0xb2, 0x06, 0x3e, 0x07, 0x3b, 0x07, 0xd4, 0x07, 0xd5, 0x07, + 0x75, 0x08, 0x72, 0x08, 0x1b, 0x09, 0x1b, 0x09, 0xc4, 0x09, 0xc0, 0x09, + 0x69, 0x0a, 0x69, 0x0a, 0x0a, 0x0b, 0x09, 0x0b, 0xa3, 0x0b, 0xa0, 0x0b, + 0x2d, 0x0c, 0x2d, 0x0c, 0xaa, 0x0c, 0xa6, 0x0c, 0x0f, 0x0d, 0x10, 0x0d, + 0x62, 0x0d, 0x60, 0x0d, 0x99, 0x0d, 0x99, 0x0d, 0xb9, 0x0d, 0xb7, 0x0d, + 0xb8, 0x0d, 0xb6, 0x0d, 0x9b, 0x0d, 0x9b, 0x0d, 0x5e, 0x0d, 0x5b, 0x0d, + 0x00, 0x0d, 0x02, 0x0d, 0x89, 0x0c, 0x84, 0x0c, 0xee, 0x0b, 0xf0, 0x0b, + 0x3c, 0x0b, 0x39, 0x0b, 0x6f, 0x0a, 0x70, 0x0a, 0x8c, 0x09, 0x89, 0x09, + 0x92, 0x08, 0x91, 0x08, 0x8a, 0x07, 0x88, 0x07, 0x71, 0x06, 0x6f, 0x06, + 0x51, 0x05, 0x50, 0x05, 0x2c, 0x04, 0x2a, 0x04, 0x00, 0x03, 0x00, 0x03, + 0xde, 0x01, 0xdb, 0x01, 0xbb, 0x00, 0xba, 0x00, 0xa6, 0xff, 0xa5, 0xff, + 0x9f, 0xfe, 0x9d, 0xfe, 0xa8, 0xfd, 0xa7, 0xfd, 0xc8, 0xfc, 0xc6, 0xfc, + 0xfc, 0xfb, 0xfa, 0xfb, 0x49, 0xfb, 0x49, 0xfb, 0xb1, 0xfa, 0xb0, 0xfa, + 0x36, 0xfa, 0x35, 0xfa, 0xd7, 0xf9, 0xd6, 0xf9, 0x95, 0xf9, 0x93, 0xf9, + 0x6f, 0xf9, 0x6f, 0xf9, 0x64, 0xf9, 0x62, 0xf9, 0x74, 0xf9, 0x71, 0xf9, + 0x9a, 0xf9, 0x9a, 0xf9, 0xd7, 0xf9, 0xd5, 0xf9, 0x27, 0xfa, 0x26, 0xfa, + 0x89, 0xfa, 0x87, 0xfa, 0xf3, 0xfa, 0xf0, 0xfa, 0x68, 0xfb, 0x66, 0xfb, + 0xe3, 0xfb, 0xe0, 0xfb, 0x5c, 0xfc, 0x5a, 0xfc, 0xd6, 0xfc, 0xd4, 0xfc, + 0x44, 0xfd, 0x43, 0xfd, 0xb0, 0xfd, 0xab, 0xfd, 0x05, 0xfe, 0x05, 0xfe, + 0x4f, 0xfe, 0x4b, 0xfe, 0x84, 0xfe, 0x82, 0xfe, 0xa0, 0xfe, 0x9f, 0xfe, + 0xaa, 0xfe, 0xa5, 0xfe, 0x94, 0xfe, 0x94, 0xfe, 0x67, 0xfe, 0x65, 0xfe, + 0x24, 0xfe, 0x22, 0xfe, 0xbc, 0xfd, 0xba, 0xfd, 0x47, 0xfd, 0x45, 0xfd, + 0xad, 0xfc, 0xac, 0xfc, 0x06, 0xfc, 0x04, 0xfc, 0x48, 0xfb, 0x46, 0xfb, + 0x76, 0xfa, 0x74, 0xfa, 0x9a, 0xf9, 0x99, 0xf9, 0xaf, 0xf8, 0xad, 0xf8, + 0xbe, 0xf7, 0xbd, 0xf7, 0xc9, 0xf6, 0xc7, 0xf6, 0xd4, 0xf5, 0xd1, 0xf5, + 0xe1, 0xf4, 0xdf, 0xf4, 0xf5, 0xf3, 0xf5, 0xf3, 0x18, 0xf3, 0x16, 0xf3, + 0x46, 0xf2, 0x44, 0xf2, 0x89, 0xf1, 0x88, 0xf1, 0xe0, 0xf0, 0xde, 0xf0, + 0x4e, 0xf0, 0x4e, 0xf0, 0xdb, 0xef, 0xd6, 0xef, 0x7f, 0xef, 0x7d, 0xef, + 0x44, 0xef, 0x44, 0xef, 0x28, 0xef, 0x24, 0xef, 0x2c, 0xef, 0x2d, 0xef, + 0x4f, 0xef, 0x4b, 0xef, 0x90, 0xef, 0x90, 0xef, 0xf1, 0xef, 0xee, 0xef, + 0x6b, 0xf0, 0x69, 0xf0, 0x03, 0xf1, 0x01, 0xf1, 0xaf, 0xf1, 0xac, 0xf1, + 0x72, 0xf2, 0x6f, 0xf2, 0x44, 0xf3, 0x43, 0xf3, 0x27, 0xf4, 0x25, 0xf4, + 0x0f, 0xf5, 0x0e, 0xf5, 0x02, 0xf6, 0x00, 0xf6, 0xf2, 0xf6, 0xf0, 0xf6, + 0xe3, 0xf7, 0xe3, 0xf7, 0xcd, 0xf8, 0xca, 0xf8, 0xab, 0xf9, 0xab, 0xf9, + 0x81, 0xfa, 0x7f, 0xfa, 0x43, 0xfb, 0x42, 0xfb, 0xf3, 0xfb, 0xf1, 0xfb, + 0x8f, 0xfc, 0x8c, 0xfc, 0x11, 0xfd, 0x11, 0xfd, 0x7d, 0xfd, 0x7a, 0xfd, + 0xce, 0xfd, 0xcc, 0xfd, 0x02, 0xfe, 0x03, 0xfe, 0x23, 0xfe, 0x1f, 0xfe, + 0x26, 0xfe, 0x26, 0xfe, 0x11, 0xfe, 0x10, 0xfe, 0xe8, 0xfd, 0xe7, 0xfd, + 0xaa, 0xfd, 0xa7, 0xfd, 0x5a, 0xfd, 0x59, 0xfd, 0xf9, 0xfc, 0xf9, 0xfc, + 0x90, 0xfc, 0x8d, 0xfc, 0x1c, 0xfc, 0x1c, 0xfc, 0xa4, 0xfb, 0xa1, 0xfb, + 0x2b, 0xfb, 0x29, 0xfb, 0xb3, 0xfa, 0xb3, 0xfa, 0x44, 0xfa, 0x42, 0xfa, + 0xe0, 0xf9, 0xdf, 0xf9, 0x85, 0xf9, 0x83, 0xf9, 0x3e, 0xf9, 0x3d, 0xf9, + 0x08, 0xf9, 0x07, 0xf9, 0xeb, 0xf8, 0xea, 0xf8, 0xe7, 0xf8, 0xe5, 0xf8, + 0xfb, 0xf8, 0xfa, 0xf8, 0x30, 0xf9, 0x2d, 0xf9, 0x7a, 0xf9, 0x7a, 0xf9, + 0xe8, 0xf9, 0xe5, 0xf9, 0x6f, 0xfa, 0x6e, 0xfa, 0x14, 0xfb, 0x11, 0xfb, + 0xd1, 0xfb, 0xd0, 0xfb, 0xa7, 0xfc, 0xa5, 0xfc, 0x94, 0xfd, 0x91, 0xfd, + 0x92, 0xfe, 0x91, 0xfe, 0xa3, 0xff, 0x9f, 0xff, 0xbe, 0x00, 0xbe, 0x00, + 0xe0, 0x01, 0xde, 0x01, 0x0a, 0x03, 0x07, 0x03, 0x30, 0x04, 0x30, 0x04, + 0x57, 0x05, 0x53, 0x05, 0x74, 0x06, 0x73, 0x06, 0x89, 0x07, 0x84, 0x07, + 0x8c, 0x08, 0x8c, 0x08, 0x7f, 0x09, 0x7d, 0x09, 0x5a, 0x0a, 0x59, 0x0a, + 0x23, 0x0b, 0x20, 0x0b, 0xcb, 0x0b, 0xca, 0x0b, 0x5b, 0x0c, 0x5a, 0x0c, + 0xcc, 0x0c, 0xc9, 0x0c, 0x20, 0x0d, 0x21, 0x0d, 0x56, 0x0d, 0x53, 0x0d, + 0x6d, 0x0d, 0x6b, 0x0d, 0x65, 0x0d, 0x64, 0x0d, 0x42, 0x0d, 0x42, 0x0d, + 0x03, 0x0d, 0x01, 0x0d, 0xb0, 0x0c, 0xb0, 0x0c, 0x42, 0x0c, 0x40, 0x0c, + 0xc6, 0x0b, 0xc5, 0x0b, 0x39, 0x0b, 0x38, 0x0b, 0x9f, 0x0a, 0x9d, 0x0a, + 0x02, 0x0a, 0x01, 0x0a, 0x58, 0x09, 0x57, 0x09, 0xba, 0x08, 0xb7, 0x08, + 0x13, 0x08, 0x13, 0x08, 0x7d, 0x07, 0x7a, 0x07, 0xef, 0x06, 0xed, 0x06, + 0x6d, 0x06, 0x6c, 0x06, 0x01, 0x06, 0xff, 0x05, 0xa2, 0x05, 0xa1, 0x05, + 0x5f, 0x05, 0x5b, 0x05, 0x2d, 0x05, 0x2b, 0x05, 0x19, 0x05, 0x15, 0x05, + 0x18, 0x05, 0x18, 0x05, 0x32, 0x05, 0x2f, 0x05, 0x67, 0x05, 0x65, 0x05, + 0xb0, 0x05, 0xac, 0x05, 0x12, 0x06, 0x0f, 0x06, 0x85, 0x06, 0x82, 0x06, + 0x09, 0x07, 0x07, 0x07, 0x9f, 0x07, 0x9c, 0x07, 0x3d, 0x08, 0x39, 0x08, + 0xe6, 0x08, 0xe5, 0x08, 0x94, 0x09, 0x91, 0x09, 0x47, 0x0a, 0x43, 0x0a, + 0xee, 0x0a, 0xee, 0x0a, 0x99, 0x0b, 0x95, 0x0b, 0x35, 0x0c, 0x31, 0x0c, + 0xc2, 0x0c, 0xc2, 0x0c, 0x47, 0x0d, 0x43, 0x0d, 0xad, 0x0d, 0xac, 0x0d, + 0x08, 0x0e, 0x06, 0x0e, 0x43, 0x0e, 0x3f, 0x0e, 0x65, 0x0e, 0x63, 0x0e, + 0x6b, 0x0e, 0x69, 0x0e, 0x51, 0x0e, 0x4d, 0x0e, 0x1c, 0x0e, 0x1c, 0x0e, + 0xc5, 0x0d, 0xc1, 0x0d, 0x53, 0x0d, 0x51, 0x0d, 0xc1, 0x0c, 0xc0, 0x0c, + 0x15, 0x0c, 0x12, 0x0c, 0x50, 0x0b, 0x50, 0x0b, 0x73, 0x0a, 0x6f, 0x0a, + 0x84, 0x09, 0x84, 0x09, 0x81, 0x08, 0x7e, 0x08, 0x72, 0x07, 0x71, 0x07, + 0x59, 0x06, 0x57, 0x06, 0x3c, 0x05, 0x39, 0x05, 0x1a, 0x04, 0x19, 0x04, + 0xfe, 0x02, 0xf9, 0x02, 0xe3, 0x01, 0xe3, 0x01, 0xd8, 0x00, 0xd4, 0x00, + 0xd7, 0xff, 0xd6, 0xff, 0xe8, 0xfe, 0xe6, 0xfe, 0x0c, 0xfe, 0x07, 0xfe, + 0x47, 0xfd, 0x47, 0xfd, 0x9a, 0xfc, 0x96, 0xfc, 0x05, 0xfc, 0x05, 0xfc, + 0x8e, 0xfb, 0x8b, 0xfb, 0x31, 0xfb, 0x2e, 0xfb, 0xf1, 0xfa, 0xf0, 0xfa, + 0xcb, 0xfa, 0xc8, 0xfa, 0xbf, 0xfa, 0xbc, 0xfa, 0xcd, 0xfa, 0xca, 0xfa, + 0xf1, 0xfa, 0xee, 0xfa, 0x2c, 0xfb, 0x28, 0xfb, 0x76, 0xfb, 0x74, 0xfb, + 0xd0, 0xfb, 0xcd, 0xfb, 0x38, 0xfc, 0x35, 0xfc, 0xa4, 0xfc, 0xa0, 0xfc, + 0x16, 0xfd, 0x15, 0xfd, 0x89, 0xfd, 0x87, 0xfd, 0xfb, 0xfd, 0xf8, 0xfd, + 0x63, 0xfe, 0x5f, 0xfe, 0xc0, 0xfe, 0xc0, 0xfe, 0x13, 0xff, 0x0f, 0xff, + 0x51, 0xff, 0x4f, 0xff, 0x7f, 0xff, 0x7d, 0xff, 0x95, 0xff, 0x91, 0xff, + 0x93, 0xff, 0x90, 0xff, 0x77, 0xff, 0x74, 0xff, 0x44, 0xff, 0x41, 0xff, + 0xf2, 0xfe, 0xef, 0xfe, 0x89, 0xfe, 0x86, 0xfe, 0x09, 0xfe, 0x04, 0xfe, + 0x6d, 0xfd, 0x6c, 0xfd, 0xbe, 0xfc, 0xb8, 0xfc, 0xf9, 0xfb, 0xf8, 0xfb, + 0x24, 0xfb, 0x21, 0xfb, 0x43, 0xfa, 0x3d, 0xfa, 0x51, 0xf9, 0x4f, 0xf9, + 0x5d, 0xf8, 0x59, 0xf8, 0x62, 0xf7, 0x60, 0xf7, 0x6b, 0xf6, 0x68, 0xf6, + 0x75, 0xf5, 0x70, 0xf5, 0x82, 0xf4, 0x82, 0xf4, 0xa2, 0xf3, 0x9c, 0xf3, + 0xcc, 0xf2, 0xcb, 0xf2, 0x0a, 0xf2, 0x06, 0xf2, 0x5d, 0xf1, 0x59, 0xf1, + 0xc6, 0xf0, 0xc4, 0xf0, 0x4d, 0xf0, 0x49, 0xf0, 0xeb, 0xef, 0xe9, 0xef, + 0xab, 0xef, 0xa7, 0xef, 0x85, 0xef, 0x82, 0xef, 0x81, 0xef, 0x7f, 0xef, + 0x9c, 0xef, 0x99, 0xef, 0xd6, 0xef, 0xd2, 0xef, 0x29, 0xf0, 0x26, 0xf0, + 0x9c, 0xf0, 0x98, 0xf0, 0x26, 0xf1, 0x22, 0xf1, 0xc6, 0xf1, 0xc4, 0xf1, + 0x7b, 0xf2, 0x77, 0xf2, 0x3f, 0xf3, 0x3e, 0xf3, 0x12, 0xf4, 0x0f, 0xf4, + 0xed, 0xf4, 0xeb, 0xf4, 0xd1, 0xf5, 0xcd, 0xf5, 0xb0, 0xf6, 0xae, 0xf6, + 0x94, 0xf7, 0x90, 0xf7, 0x6d, 0xf8, 0x6b, 0xf8, 0x3f, 0xf9, 0x3b, 0xf9, + 0x03, 0xfa, 0x03, 0xfa, 0xb7, 0xfa, 0xb4, 0xfa, 0x59, 0xfb, 0x58, 0xfb, + 0xe5, 0xfb, 0xe4, 0xfb, 0x5d, 0xfc, 0x59, 0xfc, 0xbb, 0xfc, 0xbc, 0xfc, + 0x03, 0xfd, 0xfd, 0xfc, 0x2c, 0xfd, 0x2b, 0xfd, 0x42, 0xfd, 0x40, 0xfd, + 0x3d, 0xfd, 0x3a, 0xfd, 0x22, 0xfd, 0x1e, 0xfd, 0xef, 0xfc, 0xed, 0xfc, + 0xac, 0xfc, 0xa9, 0xfc, 0x56, 0xfc, 0x54, 0xfc, 0xf3, 0xfb, 0xf0, 0xfb, + 0x85, 0xfb, 0x84, 0xfb, 0x10, 0xfb, 0x0d, 0xfb, 0x97, 0xfa, 0x95, 0xfa, + 0x1b, 0xfa, 0x1a, 0xfa, 0xa5, 0xf9, 0xa1, 0xf9, 0x34, 0xf9, 0x33, 0xf9, + 0xce, 0xf8, 0xca, 0xf8, 0x76, 0xf8, 0x73, 0xf8, 0x2e, 0xf8, 0x2c, 0xf8, + 0xfa, 0xf7, 0xf8, 0xf7, 0xdc, 0xf7, 0xda, 0xf7, 0xd8, 0xf7, 0xd6, 0xf7, + 0xed, 0xf7, 0xeb, 0xf7, 0x1e, 0xf8, 0x1b, 0xf8, 0x6a, 0xf8, 0x68, 0xf8, + 0xd4, 0xf8, 0xd1, 0xf8, 0x5b, 0xf9, 0x59, 0xf9, 0xfa, 0xf9, 0xf8, 0xf9, + 0xb8, 0xfa, 0xb4, 0xfa, 0x8b, 0xfb, 0x88, 0xfb, 0x74, 0xfc, 0x70, 0xfc, + 0x6e, 0xfd, 0x6c, 0xfd, 0x7a, 0xfe, 0x77, 0xfe, 0x91, 0xff, 0x90, 0xff, + 0xaf, 0x00, 0xad, 0x00, 0xd3, 0x01, 0xd2, 0x01, 0xf9, 0x02, 0xf5, 0x02, + 0x18, 0x04, 0x18, 0x04, 0x37, 0x05, 0x31, 0x05, 0x44, 0x06, 0x43, 0x06, + 0x45, 0x07, 0x42, 0x07, 0x36, 0x08, 0x33, 0x08, 0x12, 0x09, 0x0f, 0x09, + 0xd4, 0x09, 0xd1, 0x09, 0x81, 0x0a, 0x7e, 0x0a, 0x10, 0x0b, 0x0b, 0x0b, + 0x82, 0x0b, 0x7f, 0x0b, 0xd7, 0x0b, 0xd6, 0x0b, 0x11, 0x0c, 0x0c, 0x0c, + 0x2b, 0x0c, 0x2a, 0x0c, 0x2c, 0x0c, 0x27, 0x0c, 0x0d, 0x0c, 0x0a, 0x0c, + 0xd8, 0x0b, 0xd6, 0x0b, 0x8a, 0x0b, 0x87, 0x0b, 0x2a, 0x0b, 0x26, 0x0b, + 0xb6, 0x0a, 0xb5, 0x0a, 0x35, 0x0a, 0x30, 0x0a, 0xa7, 0x09, 0xa6, 0x09, + 0x14, 0x09, 0x10, 0x09, 0x7c, 0x08, 0x7a, 0x08, 0xe7, 0x07, 0xe3, 0x07, + 0x54, 0x07, 0x51, 0x07, 0xc9, 0x06, 0xc6, 0x06, 0x49, 0x06, 0x47, 0x06, + 0xd6, 0x05, 0xd3, 0x05, 0x78, 0x05, 0x76, 0x05, 0x27, 0x05, 0x25, 0x05, + 0xf2, 0x04, 0xf1, 0x04, 0xd1, 0x04, 0xce, 0x04, 0xc5, 0x04, 0xc4, 0x04, + 0xd9, 0x04, 0xd4, 0x04, 0xfc, 0x04, 0xfa, 0x04, 0x3c, 0x05, 0x3b, 0x05, + 0x91, 0x05, 0x8f, 0x05, 0xfa, 0x05, 0xfc, 0x05, 0x7c, 0x06, 0x78, 0x06, + 0x06, 0x07, 0x07, 0x07, 0xa8, 0x07, 0xa5, 0x07, 0x4f, 0x08, 0x4d, 0x08, + 0xff, 0x08, 0xfe, 0x08, 0xb6, 0x09, 0xb2, 0x09, 0x68, 0x0a, 0x67, 0x0a, + 0x21, 0x0b, 0x1d, 0x0b, 0xca, 0x0b, 0xca, 0x0b, 0x6f, 0x0c, 0x6b, 0x0c, + 0x05, 0x0d, 0x06, 0x0d, 0x8b, 0x0d, 0x86, 0x0d, 0xfd, 0x0d, 0xfd, 0x0d, + 0x58, 0x0e, 0x55, 0x0e, 0x9f, 0x0e, 0x9d, 0x0e, 0xc4, 0x0e, 0xc1, 0x0e, + 0xd3, 0x0e, 0xd1, 0x0e, 0xc1, 0x0e, 0xbf, 0x0e, 0x92, 0x0e, 0x8e, 0x0e, + 0x47, 0x0e, 0x45, 0x0e, 0xda, 0x0d, 0xd8, 0x0d, 0x55, 0x0d, 0x53, 0x0d, + 0xb0, 0x0c, 0xaf, 0x0c, 0xf8, 0x0b, 0xf3, 0x0b, 0x26, 0x0b, 0x25, 0x0b, + 0x41, 0x0a, 0x3d, 0x0a, 0x4a, 0x09, 0x47, 0x09, 0x49, 0x08, 0x47, 0x08, + 0x3c, 0x07, 0x38, 0x07, 0x2a, 0x06, 0x28, 0x06, 0x18, 0x05, 0x15, 0x05, + 0x04, 0x04, 0x03, 0x04, 0xfc, 0x02, 0xf9, 0x02, 0xf7, 0x01, 0xf5, 0x01, + 0x06, 0x01, 0x03, 0x01, 0x1f, 0x00, 0x1d, 0x00, 0x4e, 0xff, 0x4b, 0xff, + 0x93, 0xfe, 0x91, 0xfe, 0xed, 0xfd, 0xeb, 0xfd, 0x64, 0xfd, 0x60, 0xfd, + 0xef, 0xfc, 0xec, 0xfc, 0x99, 0xfc, 0x99, 0xfc, 0x5e, 0xfc, 0x59, 0xfc, + 0x39, 0xfc, 0x3a, 0xfc, 0x36, 0xfc, 0x33, 0xfc, 0x40, 0xfc, 0x3d, 0xfc, + 0x6b, 0xfc, 0x67, 0xfc, 0x9f, 0xfc, 0x9e, 0xfc, 0xea, 0xfc, 0xe8, 0xfc, + 0x44, 0xfd, 0x41, 0xfd, 0xa3, 0xfd, 0x9f, 0xfd, 0x10, 0xfe, 0x0d, 0xfe, + 0x79, 0xfe, 0x77, 0xfe, 0xea, 0xfe, 0xe6, 0xfe, 0x51, 0xff, 0x51, 0xff, + 0xb4, 0xff, 0xb1, 0xff, 0x0d, 0x00, 0x0b, 0x00, 0x57, 0x00, 0x55, 0x00, + 0x91, 0x00, 0x8d, 0x00, 0xb5, 0x00, 0xb3, 0x00, 0xc5, 0x00, 0xc1, 0x00, + 0xbd, 0x00, 0xba, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x61, 0x00, 0x5c, 0x00, + 0x0a, 0x00, 0x08, 0x00, 0x9c, 0xff, 0x98, 0xff, 0x14, 0xff, 0x11, 0xff, + 0x73, 0xfe, 0x6f, 0xfe, 0xc0, 0xfd, 0xbd, 0xfd, 0xf6, 0xfc, 0xf6, 0xfc, + 0x1e, 0xfc, 0x19, 0xfc, 0x35, 0xfb, 0x33, 0xfb, 0x43, 0xfa, 0x40, 0xfa, + 0x4b, 0xf9, 0x47, 0xf9, 0x4c, 0xf8, 0x49, 0xf8, 0x4f, 0xf7, 0x4c, 0xf7, + 0x56, 0xf6, 0x52, 0xf6, 0x63, 0xf5, 0x60, 0xf5, 0x7d, 0xf4, 0x7b, 0xf4, + 0xa1, 0xf3, 0x9d, 0xf3, 0xda, 0xf2, 0xd9, 0xf2, 0x26, 0xf2, 0x24, 0xf2, + 0x8e, 0xf1, 0x8a, 0xf1, 0x0b, 0xf1, 0x08, 0xf1, 0xa2, 0xf0, 0xa1, 0xf0, + 0x5c, 0xf0, 0x58, 0xf0, 0x2b, 0xf0, 0x2b, 0xf0, 0x23, 0xf0, 0x20, 0xf0, + 0x2f, 0xf0, 0x2e, 0xf0, 0x5e, 0xf0, 0x5a, 0xf0, 0xa7, 0xf0, 0xa7, 0xf0, + 0x0d, 0xf1, 0x09, 0xf1, 0x89, 0xf1, 0x88, 0xf1, 0x1e, 0xf2, 0x1b, 0xf2, + 0xc2, 0xf2, 0xbf, 0xf2, 0x7b, 0xf3, 0x78, 0xf3, 0x3b, 0xf4, 0x3a, 0xf4, + 0x0a, 0xf5, 0x07, 0xf5, 0xd9, 0xf5, 0xd9, 0xf5, 0xac, 0xf6, 0xa7, 0xf6, + 0x7d, 0xf7, 0x7a, 0xf7, 0x44, 0xf8, 0x43, 0xf8, 0x07, 0xf9, 0x03, 0xf9, + 0xba, 0xf9, 0xb8, 0xf9, 0x5f, 0xfa, 0x5c, 0xfa, 0xf0, 0xfa, 0xed, 0xfa, + 0x6f, 0xfb, 0x6b, 0xfb, 0xd6, 0xfb, 0xd5, 0xfb, 0x28, 0xfc, 0x24, 0xfc, + 0x60, 0xfc, 0x5e, 0xfc, 0x81, 0xfc, 0x7d, 0xfc, 0x89, 0xfc, 0x86, 0xfc, + 0x79, 0xfc, 0x77, 0xfc, 0x55, 0xfc, 0x50, 0xfc, 0x1a, 0xfc, 0x18, 0xfc, + 0xcf, 0xfb, 0xcb, 0xfb, 0x72, 0xfb, 0x6f, 0xfb, 0x0b, 0xfb, 0x09, 0xfb, + 0x97, 0xfa, 0x91, 0xfa, 0x1e, 0xfa, 0x1b, 0xfa, 0x9f, 0xf9, 0x9b, 0xf9, + 0x20, 0xf9, 0x1e, 0xf9, 0xa8, 0xf8, 0xa6, 0xf8, 0x32, 0xf8, 0x2f, 0xf8, + 0xce, 0xf7, 0xc9, 0xf7, 0x6f, 0xf7, 0x6d, 0xf7, 0x27, 0xf7, 0x23, 0xf7, + 0xf3, 0xf6, 0xf1, 0xf6, 0xd0, 0xf6, 0xcd, 0xf6, 0xcd, 0xf6, 0xca, 0xf6, + 0xdd, 0xf6, 0xdb, 0xf6, 0x0d, 0xf7, 0x0b, 0xf7, 0x57, 0xf7, 0x56, 0xf7, + 0xbd, 0xf7, 0xbb, 0xf7, 0x3e, 0xf8, 0x3c, 0xf8, 0xde, 0xf8, 0xdc, 0xf8, + 0x93, 0xf9, 0x8f, 0xf9, 0x62, 0xfa, 0x61, 0xfa, 0x46, 0xfb, 0x44, 0xfb, + 0x3d, 0xfc, 0x3a, 0xfc, 0x43, 0xfd, 0x42, 0xfd, 0x55, 0xfe, 0x51, 0xfe, + 0x6d, 0xff, 0x6c, 0xff, 0x8d, 0x00, 0x8b, 0x00, 0xad, 0x01, 0xab, 0x01, + 0xc8, 0x02, 0xc6, 0x02, 0xdf, 0x03, 0xdb, 0x03, 0xe7, 0x04, 0xe6, 0x04, + 0xe7, 0x05, 0xe8, 0x05, 0xd3, 0x06, 0xd1, 0x06, 0xad, 0x07, 0xac, 0x07, + 0x6f, 0x08, 0x6e, 0x08, 0x17, 0x09, 0x16, 0x09, 0xa7, 0x09, 0xa7, 0x09, + 0x1c, 0x0a, 0x19, 0x0a, 0x72, 0x0a, 0x71, 0x0a, 0xae, 0x0a, 0xac, 0x0a, + 0xca, 0x0a, 0xc8, 0x0a, 0xd0, 0x0a, 0xce, 0x0a, 0xb7, 0x0a, 0xb3, 0x0a, + 0x87, 0x0a, 0x86, 0x0a, 0x43, 0x0a, 0x41, 0x0a, 0xe9, 0x09, 0xe7, 0x09, + 0x80, 0x09, 0x7e, 0x09, 0x09, 0x09, 0x05, 0x09, 0x87, 0x08, 0x84, 0x08, + 0x00, 0x08, 0xfd, 0x07, 0x73, 0x07, 0x71, 0x07, 0xed, 0x06, 0xea, 0x06, + 0x64, 0x06, 0x62, 0x06, 0xe8, 0x05, 0xe4, 0x05, 0x74, 0x05, 0x73, 0x05, + 0x10, 0x05, 0x0f, 0x05, 0xc1, 0x04, 0xbe, 0x04, 0x7c, 0x04, 0x7a, 0x04, + 0x56, 0x04, 0x53, 0x04, 0x40, 0x04, 0x3f, 0x04, 0x44, 0x04, 0x41, 0x04, + 0x61, 0x04, 0x5f, 0x04, 0x91, 0x04, 0x8f, 0x04, 0xde, 0x04, 0xdc, 0x04, + 0x3d, 0x05, 0x39, 0x05, 0xb5, 0x05, 0xb2, 0x05, 0x3b, 0x06, 0x38, 0x06, + 0xd3, 0x06, 0xd0, 0x06, 0x77, 0x07, 0x77, 0x07, 0x2b, 0x08, 0x27, 0x08, + 0xe1, 0x08, 0xde, 0x08, 0x9c, 0x09, 0x9b, 0x09, 0x5a, 0x0a, 0x57, 0x0a, + 0x16, 0x0b, 0x13, 0x0b, 0xc9, 0x0b, 0xc7, 0x0b, 0x73, 0x0c, 0x6e, 0x0c, + 0x0e, 0x0d, 0x0e, 0x0d, 0x9d, 0x0d, 0x97, 0x0d, 0x12, 0x0e, 0x12, 0x0e, + 0x77, 0x0e, 0x72, 0x0e, 0xc0, 0x0e, 0xbe, 0x0e, 0xf1, 0x0e, 0xef, 0x0e, + 0x03, 0x0f, 0x00, 0x0f, 0xfc, 0x0e, 0xfa, 0x0e, 0xd2, 0x0e, 0xd1, 0x0e, + 0x93, 0x0e, 0x8e, 0x0e, 0x31, 0x0e, 0x30, 0x0e, 0xb4, 0x0d, 0xb0, 0x0d, + 0x1f, 0x0d, 0x1c, 0x0d, 0x6e, 0x0c, 0x6c, 0x0c, 0xac, 0x0b, 0xa8, 0x0b, + 0xd0, 0x0a, 0xcf, 0x0a, 0xe9, 0x09, 0xe5, 0x09, 0xf4, 0x08, 0xf3, 0x08, + 0xf4, 0x07, 0xf0, 0x07, 0xf3, 0x06, 0xf0, 0x06, 0xea, 0x05, 0xe7, 0x05, + 0xe9, 0x04, 0xe7, 0x04, 0xe9, 0x03, 0xe6, 0x03, 0xf5, 0x02, 0xf4, 0x02, + 0x10, 0x02, 0x0b, 0x02, 0x35, 0x01, 0x32, 0x01, 0x71, 0x00, 0x6f, 0x00, + 0xbf, 0xff, 0xbc, 0xff, 0x26, 0xff, 0x25, 0xff, 0xa2, 0xfe, 0xa0, 0xfe, + 0x3d, 0xfe, 0x3a, 0xfe, 0xeb, 0xfd, 0xe9, 0xfd, 0xb6, 0xfd, 0xb2, 0xfd, + 0x99, 0xfd, 0x97, 0xfd, 0x94, 0xfd, 0x91, 0xfd, 0xa7, 0xfd, 0xa5, 0xfd, + 0xce, 0xfd, 0xcb, 0xfd, 0x07, 0xfe, 0x04, 0xfe, 0x50, 0xfe, 0x4e, 0xfe, + 0xa7, 0xfe, 0xa4, 0xfe, 0x06, 0xff, 0x03, 0xff, 0x6c, 0xff, 0x6a, 0xff, + 0xd7, 0xff, 0xd4, 0xff, 0x3f, 0x00, 0x3c, 0x00, 0xa4, 0x00, 0xa2, 0x00, + 0x01, 0x01, 0xfe, 0x00, 0x54, 0x01, 0x52, 0x01, 0x98, 0x01, 0x97, 0x01, + 0xcc, 0x01, 0xc9, 0x01, 0xe9, 0x01, 0xe9, 0x01, 0xf5, 0x01, 0xf1, 0x01, + 0xe5, 0x01, 0xe5, 0x01, 0xbe, 0x01, 0xbc, 0x01, 0x7f, 0x01, 0x7d, 0x01, + 0x23, 0x01, 0x22, 0x01, 0xb1, 0x00, 0xae, 0x00, 0x23, 0x00, 0x22, 0x00, + 0x81, 0xff, 0x7e, 0xff, 0xc6, 0xfe, 0xc5, 0xfe, 0xfb, 0xfd, 0xf9, 0xfd, + 0x1d, 0xfd, 0x1c, 0xfd, 0x35, 0xfc, 0x32, 0xfc, 0x3e, 0xfb, 0x3c, 0xfb, + 0x43, 0xfa, 0x41, 0xfa, 0x44, 0xf9, 0x41, 0xf9, 0x42, 0xf8, 0x41, 0xf8, + 0x49, 0xf7, 0x45, 0xf7, 0x52, 0xf6, 0x4f, 0xf6, 0x68, 0xf5, 0x68, 0xf5, + 0x8e, 0xf4, 0x8a, 0xf4, 0xc2, 0xf3, 0xc2, 0xf3, 0x0e, 0xf3, 0x0a, 0xf3, + 0x6e, 0xf2, 0x6d, 0xf2, 0xe9, 0xf1, 0xe6, 0xf1, 0x7c, 0xf1, 0x7a, 0xf1, + 0x2e, 0xf1, 0x2a, 0xf1, 0xfc, 0xf0, 0xfb, 0xf0, 0xe7, 0xf0, 0xe3, 0xf0, + 0xee, 0xf0, 0xec, 0xf0, 0x12, 0xf1, 0x0f, 0xf1, 0x53, 0xf1, 0x51, 0xf1, + 0xaa, 0xf1, 0xa9, 0xf1, 0x1e, 0xf2, 0x1b, 0xf2, 0xa2, 0xf2, 0xa1, 0xf2, + 0x3c, 0xf3, 0x39, 0xf3, 0xe3, 0xf3, 0xe2, 0xf3, 0x96, 0xf4, 0x94, 0xf4, + 0x53, 0xf5, 0x52, 0xf5, 0x13, 0xf6, 0x10, 0xf6, 0xd3, 0xf6, 0xd3, 0xf6, + 0x95, 0xf7, 0x92, 0xf7, 0x4d, 0xf8, 0x4b, 0xf8, 0xfd, 0xf8, 0xfb, 0xf8, + 0x9f, 0xf9, 0x9e, 0xf9, 0x34, 0xfa, 0x32, 0xfa, 0xb4, 0xfa, 0xb2, 0xfa, + 0x24, 0xfb, 0x21, 0xfb, 0x79, 0xfb, 0x78, 0xfb, 0xbe, 0xfb, 0xbb, 0xfb, + 0xe7, 0xfb, 0xe5, 0xfb, 0xfa, 0xfb, 0xf9, 0xfb, 0xf6, 0xfb, 0xf3, 0xfb, + 0xdc, 0xfb, 0xdb, 0xfb, 0xac, 0xfb, 0xaa, 0xfb, 0x68, 0xfb, 0x66, 0xfb, + 0x15, 0xfb, 0x11, 0xfb, 0xb2, 0xfa, 0xae, 0xfa, 0x41, 0xfa, 0x40, 0xfa, + 0xc7, 0xf9, 0xc3, 0xf9, 0x4b, 0xf9, 0x4b, 0xf9, 0xc5, 0xf8, 0xc3, 0xf8, + 0x48, 0xf8, 0x47, 0xf8, 0xc8, 0xf7, 0xc6, 0xf7, 0x56, 0xf7, 0x54, 0xf7, + 0xe9, 0xf6, 0xe9, 0xf6, 0x8b, 0xf6, 0x89, 0xf6, 0x44, 0xf6, 0x43, 0xf6, + 0x09, 0xf6, 0x07, 0xf6, 0xec, 0xf5, 0xe9, 0xf5, 0xe1, 0xf5, 0xe0, 0xf5, + 0xf1, 0xf5, 0xef, 0xf5, 0x1f, 0xf6, 0x1e, 0xf6, 0x64, 0xf6, 0x61, 0xf6, + 0xc8, 0xf6, 0xc8, 0xf6, 0x47, 0xf7, 0x43, 0xf7, 0xdf, 0xf7, 0xdf, 0xf7, + 0x92, 0xf8, 0x90, 0xf8, 0x58, 0xf9, 0x56, 0xf9, 0x38, 0xfa, 0x38, 0xfa, + 0x26, 0xfb, 0x25, 0xfb, 0x28, 0xfc, 0x26, 0xfc, 0x2f, 0xfd, 0x30, 0xfd, + 0x44, 0xfe, 0x41, 0xfe, 0x59, 0xff, 0x5a, 0xff, 0x73, 0x00, 0x71, 0x00, + 0x8b, 0x01, 0x8a, 0x01, 0x97, 0x02, 0x95, 0x02, 0x9d, 0x03, 0x9c, 0x03, + 0x93, 0x04, 0x91, 0x04, 0x7a, 0x05, 0x7a, 0x05, 0x4f, 0x06, 0x4d, 0x06, + 0x09, 0x07, 0x08, 0x07, 0xb2, 0x07, 0xb0, 0x07, 0x3b, 0x08, 0x3c, 0x08, + 0xb0, 0x08, 0xad, 0x08, 0x05, 0x09, 0x05, 0x09, 0x3f, 0x09, 0x3e, 0x09, + 0x62, 0x09, 0x60, 0x09, 0x66, 0x09, 0x65, 0x09, 0x54, 0x09, 0x51, 0x09, + 0x28, 0x09, 0x27, 0x09, 0xe9, 0x08, 0xe9, 0x08, 0x97, 0x08, 0x96, 0x08, + 0x35, 0x08, 0x35, 0x08, 0xc8, 0x07, 0xc7, 0x07, 0x4f, 0x07, 0x50, 0x07, + 0xd4, 0x06, 0xd2, 0x06, 0x55, 0x06, 0x55, 0x06, 0xd8, 0x05, 0xd5, 0x05, + 0x5e, 0x05, 0x5f, 0x05, 0xef, 0x04, 0xee, 0x04, 0x8a, 0x04, 0x89, 0x04, + 0x33, 0x04, 0x33, 0x04, 0xef, 0x03, 0xee, 0x03, 0xbc, 0x03, 0xbd, 0x03, + 0xa1, 0x03, 0x9d, 0x03, 0x99, 0x03, 0x99, 0x03, 0xa9, 0x03, 0xa7, 0x03, + 0xd1, 0x03, 0xd1, 0x03, 0x10, 0x04, 0x0f, 0x04, 0x66, 0x04, 0x65, 0x04, + 0xd0, 0x04, 0xd0, 0x04, 0x52, 0x05, 0x51, 0x05, 0xe2, 0x05, 0xe0, 0x05, + 0x82, 0x06, 0x83, 0x06, 0x33, 0x07, 0x31, 0x07, 0xea, 0x07, 0xea, 0x07, + 0xa8, 0x08, 0xa8, 0x08, 0x6d, 0x09, 0x6c, 0x09, 0x2f, 0x0a, 0x2e, 0x0a, + 0xf0, 0x0a, 0xef, 0x0a, 0xaa, 0x0b, 0xa8, 0x0b, 0x58, 0x0c, 0x57, 0x0c, + 0xfb, 0x0c, 0xfc, 0x0c, 0x8b, 0x0d, 0x8a, 0x0d, 0x0d, 0x0e, 0x0a, 0x0e, + 0x72, 0x0e, 0x73, 0x0e, 0xc2, 0x0e, 0xc0, 0x0e, 0xf9, 0x0e, 0xf9, 0x0e, + 0x12, 0x0f, 0x12, 0x0f, 0x13, 0x0f, 0x10, 0x0f, 0xf1, 0x0e, 0xf2, 0x0e, + 0xb8, 0x0e, 0xb6, 0x0e, 0x61, 0x0e, 0x61, 0x0e, 0xeb, 0x0d, 0xeb, 0x0d, + 0x61, 0x0d, 0x61, 0x0d, 0xbc, 0x0c, 0xba, 0x0c, 0x03, 0x0c, 0x03, 0x0c, + 0x37, 0x0b, 0x36, 0x0b, 0x5c, 0x0a, 0x5b, 0x0a, 0x74, 0x09, 0x74, 0x09, + 0x85, 0x08, 0x83, 0x08, 0x8e, 0x07, 0x8d, 0x07, 0x99, 0x06, 0x97, 0x06, + 0xa3, 0x05, 0xa1, 0x05, 0xb3, 0x04, 0xb3, 0x04, 0xce, 0x03, 0xcc, 0x03, + 0xf4, 0x02, 0xf1, 0x02, 0x2b, 0x02, 0x2a, 0x02, 0x6f, 0x01, 0x6e, 0x01, + 0xcd, 0x00, 0xcb, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0xc7, 0xff, 0xc6, 0xff, + 0x69, 0xff, 0x67, 0xff, 0x21, 0xff, 0x22, 0xff, 0xf6, 0xfe, 0xf4, 0xfe, + 0xdf, 0xfe, 0xde, 0xfe, 0xe2, 0xfe, 0xe1, 0xfe, 0xf7, 0xfe, 0xf6, 0xfe, + 0x21, 0xff, 0x22, 0xff, 0x5f, 0xff, 0x5d, 0xff, 0xa7, 0xff, 0xa8, 0xff, + 0x02, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0xc5, 0x00, 0xc5, 0x00, + 0x2d, 0x01, 0x2c, 0x01, 0x91, 0x01, 0x92, 0x01, 0xf5, 0x01, 0xf5, 0x01, + 0x4d, 0x02, 0x4c, 0x02, 0x9b, 0x02, 0x9c, 0x02, 0xdb, 0x02, 0xdb, 0x02, + 0x07, 0x03, 0x07, 0x03, 0x25, 0x03, 0x24, 0x03, 0x27, 0x03, 0x28, 0x03, + 0x17, 0x03, 0x16, 0x03, 0xe9, 0x02, 0xe8, 0x02, 0xa4, 0x02, 0xa4, 0x02, + 0x47, 0x02, 0x46, 0x02, 0xce, 0x01, 0xce, 0x01, 0x40, 0x01, 0x40, 0x01, + 0x98, 0x00, 0x98, 0x00, 0xda, 0xff, 0xda, 0xff, 0x0f, 0xff, 0x0f, 0xff, + 0x2e, 0xfe, 0x2e, 0xfe, 0x43, 0xfd, 0x42, 0xfd, 0x4d, 0xfc, 0x4d, 0xfc, + 0x4c, 0xfb, 0x4c, 0xfb, 0x50, 0xfa, 0x4d, 0xfa, 0x4a, 0xf9, 0x4b, 0xf9, + 0x50, 0xf8, 0x4d, 0xf8, 0x59, 0xf7, 0x59, 0xf7, 0x6c, 0xf6, 0x6c, 0xf6, + 0x92, 0xf5, 0x90, 0xf5, 0xc1, 0xf4, 0xc3, 0xf4, 0x0c, 0xf4, 0x0b, 0xf4, + 0x68, 0xf3, 0x67, 0xf3, 0xdf, 0xf2, 0xe1, 0xf2, 0x70, 0xf2, 0x6e, 0xf2, + 0x1b, 0xf2, 0x1b, 0xf2, 0xe5, 0xf1, 0xe6, 0xf1, 0xc9, 0xf1, 0xc6, 0xf1, + 0xc9, 0xf1, 0xcc, 0xf1, 0xe7, 0xf1, 0xe5, 0xf1, 0x1f, 0xf2, 0x1f, 0xf2, + 0x6e, 0xf2, 0x6b, 0xf2, 0xd2, 0xf2, 0xd2, 0xf2, 0x4e, 0xf3, 0x4d, 0xf3, + 0xd9, 0xf3, 0xda, 0xf3, 0x73, 0xf4, 0x71, 0xf4, 0x1a, 0xf5, 0x19, 0xf5, + 0xc6, 0xf5, 0xc6, 0xf5, 0x79, 0xf6, 0x77, 0xf6, 0x29, 0xf7, 0x2a, 0xf7, + 0xd8, 0xf7, 0xd7, 0xf7, 0x84, 0xf8, 0x82, 0xf8, 0x1f, 0xf9, 0x1f, 0xf9, + 0xb5, 0xf9, 0xb3, 0xf9, 0x37, 0xfa, 0x37, 0xfa, 0xa8, 0xfa, 0xa8, 0xfa, + 0x09, 0xfb, 0x07, 0xfb, 0x50, 0xfb, 0x50, 0xfb, 0x84, 0xfb, 0x84, 0xfb, + 0xa2, 0xfb, 0xa2, 0xfb, 0xa6, 0xfb, 0xa5, 0xfb, 0x99, 0xfb, 0x97, 0xfb, + 0x6f, 0xfb, 0x6f, 0xfb, 0x38, 0xfb, 0x36, 0xfb, 0xe9, 0xfa, 0xe9, 0xfa, + 0x8a, 0xfa, 0x8a, 0xfa, 0x22, 0xfa, 0x21, 0xfa, 0xa7, 0xf9, 0xa6, 0xf9, + 0x29, 0xf9, 0x28, 0xf9, 0xa3, 0xf8, 0xa2, 0xf8, 0x1b, 0xf8, 0x1b, 0xf8, + 0x95, 0xf7, 0x97, 0xf7, 0x14, 0xf7, 0x12, 0xf7, 0x9c, 0xf6, 0x9d, 0xf6, + 0x2c, 0xf6, 0x2d, 0xf6, 0xd0, 0xf5, 0xce, 0xf5, 0x7e, 0xf5, 0x7e, 0xf5, + 0x46, 0xf5, 0x44, 0xf5, 0x22, 0xf5, 0x22, 0xf5, 0x11, 0xf5, 0x13, 0xf5, + 0x24, 0xf5, 0x21, 0xf5, 0x48, 0xf5, 0x4a, 0xf5, 0x8e, 0xf5, 0x8c, 0xf5, + 0xec, 0xf5, 0xe9, 0xf5, 0x62, 0xf6, 0x64, 0xf6, 0xf8, 0xf6, 0xf6, 0xf6, + 0xa1, 0xf7, 0xa2, 0xf7, 0x65, 0xf8, 0x64, 0xf8, 0x3d, 0xf9, 0x3a, 0xf9, + 0x22, 0xfa, 0x23, 0xfa, 0x1a, 0xfb, 0x19, 0xfb, 0x1e, 0xfc, 0x1c, 0xfc, + 0x28, 0xfd, 0x27, 0xfd, 0x37, 0xfe, 0x37, 0xfe, 0x47, 0xff, 0x47, 0xff, + 0x56, 0x00, 0x55, 0x00, 0x5b, 0x01, 0x5c, 0x01, 0x5c, 0x02, 0x58, 0x02, + 0x45, 0x03, 0x4a, 0x03, 0x2d, 0x04, 0x2a, 0x04, 0xf7, 0x04, 0xf7, 0x04, + 0xb1, 0x05, 0xb0, 0x05, 0x53, 0x06, 0x52, 0x06, 0xd8, 0x06, 0xd9, 0x06, + 0x4a, 0x07, 0x4a, 0x07, 0x9c, 0x07, 0x9c, 0x07, 0xd9, 0x07, 0xdb, 0x07, + 0xfa, 0x07, 0xf9, 0x07, 0xff, 0x07, 0x01, 0x08, 0xf2, 0x07, 0xf1, 0x07, + 0xc9, 0x07, 0xc7, 0x07, 0x8e, 0x07, 0x91, 0x07, 0x43, 0x07, 0x40, 0x07, + 0xe7, 0x06, 0xea, 0x06, 0x82, 0x06, 0x81, 0x06, 0x15, 0x06, 0x13, 0x06, + 0x9d, 0x05, 0x9e, 0x05, 0x2b, 0x05, 0x2a, 0x05, 0xb6, 0x04, 0xb7, 0x04, + 0x49, 0x04, 0x48, 0x04, 0xe4, 0x03, 0xe4, 0x03, 0x88, 0x03, 0x89, 0x03, + 0x41, 0x03, 0x3f, 0x03, 0x06, 0x03, 0x07, 0x03, 0xdd, 0x02, 0xdd, 0x02, + 0xd0, 0x02, 0xcf, 0x02, 0xce, 0x02, 0xce, 0x02, 0xed, 0x02, 0xed, 0x02, + 0x1c, 0x03, 0x1c, 0x03, 0x66, 0x03, 0x67, 0x03, 0xc7, 0x03, 0xc5, 0x03, + 0x39, 0x04, 0x39, 0x04, 0xc3, 0x04, 0xc2, 0x04, 0x5b, 0x05, 0x5a, 0x05, + 0x05, 0x06, 0x04, 0x06, 0xb9, 0x06, 0xb9, 0x06, 0x7a, 0x07, 0x78, 0x07, + 0x40, 0x08, 0x3e, 0x08, 0x08, 0x09, 0x08, 0x09, 0xd2, 0x09, 0xcf, 0x09, + 0x97, 0x0a, 0x97, 0x0a, 0x57, 0x0b, 0x55, 0x0b, 0x0b, 0x0c, 0x0b, 0x0c, + 0xb3, 0x0c, 0xb3, 0x0c, 0x4a, 0x0d, 0x48, 0x0d, 0xce, 0x0d, 0xcf, 0x0d, + 0x3d, 0x0e, 0x3b, 0x0e, 0x90, 0x0e, 0x91, 0x0e, 0xd0, 0x0e, 0xd0, 0x0e, + 0xf1, 0x0e, 0xf0, 0x0e, 0xf8, 0x0e, 0xf9, 0x0e, 0xe4, 0x0e, 0xe2, 0x0e, + 0xaf, 0x0e, 0xb0, 0x0e, 0x66, 0x0e, 0x64, 0x0e, 0xfa, 0x0d, 0xfa, 0x0d, + 0x7c, 0x0d, 0x7a, 0x0d, 0xe2, 0x0c, 0xe4, 0x0c, 0x36, 0x0c, 0x35, 0x0c, + 0x78, 0x0b, 0x78, 0x0b, 0xa9, 0x0a, 0xaa, 0x0a, 0xd3, 0x09, 0xd1, 0x09, + 0xee, 0x08, 0xf0, 0x08, 0x0a, 0x08, 0x07, 0x08, 0x1f, 0x07, 0x20, 0x07, + 0x3a, 0x06, 0x3a, 0x06, 0x5a, 0x05, 0x5a, 0x05, 0x83, 0x04, 0x83, 0x04, + 0xb8, 0x03, 0xb7, 0x03, 0xfb, 0x02, 0xfa, 0x02, 0x4f, 0x02, 0x4f, 0x02, + 0xb8, 0x01, 0xb9, 0x01, 0x35, 0x01, 0x33, 0x01, 0xc8, 0x00, 0xca, 0x00, + 0x74, 0x00, 0x74, 0x00, 0x36, 0x00, 0x37, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x09, 0x00, 0x08, 0x00, 0x24, 0x00, 0x26, 0x00, + 0x54, 0x00, 0x53, 0x00, 0x92, 0x00, 0x91, 0x00, 0xdc, 0x00, 0xdd, 0x00, + 0x37, 0x01, 0x36, 0x01, 0x93, 0x01, 0x93, 0x01, 0xf8, 0x01, 0xf8, 0x01, + 0x5d, 0x02, 0x5e, 0x02, 0xc1, 0x02, 0xc1, 0x02, 0x22, 0x03, 0x24, 0x03, + 0x76, 0x03, 0x75, 0x03, 0xc1, 0x03, 0xc2, 0x03, 0xfd, 0x03, 0xfd, 0x03, + 0x28, 0x04, 0x2b, 0x04, 0x41, 0x04, 0x40, 0x04, 0x41, 0x04, 0x41, 0x04, + 0x30, 0x04, 0x2f, 0x04, 0xfe, 0x03, 0x00, 0x04, 0xbb, 0x03, 0xbc, 0x03, + 0x5b, 0x03, 0x5c, 0x03, 0xe2, 0x02, 0xe4, 0x02, 0x53, 0x02, 0x53, 0x02, + 0xaa, 0x01, 0xaa, 0x01, 0xf2, 0x00, 0xf1, 0x00, 0x22, 0x00, 0x21, 0x00, + 0x43, 0xff, 0x45, 0xff, 0x58, 0xfe, 0x58, 0xfe, 0x63, 0xfd, 0x61, 0xfd, + 0x66, 0xfc, 0x67, 0xfc, 0x66, 0xfb, 0x65, 0xfb, 0x66, 0xfa, 0x67, 0xfa, + 0x69, 0xf9, 0x69, 0xf9, 0x74, 0xf8, 0x74, 0xf8, 0x89, 0xf7, 0x89, 0xf7, + 0xac, 0xf6, 0xaa, 0xf6, 0xdf, 0xf5, 0xdf, 0xf5, 0x25, 0xf5, 0x25, 0xf5, + 0x83, 0xf4, 0x81, 0xf4, 0xf5, 0xf3, 0xf5, 0xf3, 0x83, 0xf3, 0x82, 0xf3, + 0x2a, 0xf3, 0x2b, 0xf3, 0xee, 0xf2, 0xec, 0xf2, 0xca, 0xf2, 0xca, 0xf2, + 0xc4, 0xf2, 0xc5, 0xf2, 0xd8, 0xf2, 0xd7, 0xf2, 0x07, 0xf3, 0x07, 0xf3, + 0x4a, 0xf3, 0x4b, 0xf3, 0xa7, 0xf3, 0xa6, 0xf3, 0x14, 0xf4, 0x15, 0xf4, + 0x94, 0xf4, 0x93, 0xf4, 0x20, 0xf5, 0x1f, 0xf5, 0xb8, 0xf5, 0xb6, 0xf5, + 0x56, 0xf6, 0x57, 0xf6, 0xf9, 0xf6, 0xf7, 0xf6, 0x9a, 0xf7, 0x9c, 0xf7, + 0x3a, 0xf8, 0x3a, 0xf8, 0xd0, 0xf8, 0xd2, 0xf8, 0x61, 0xf9, 0x60, 0xf9, + 0xe4, 0xf9, 0xe5, 0xf9, 0x59, 0xfa, 0x5a, 0xfa, 0xba, 0xfa, 0xba, 0xfa, + 0x0c, 0xfb, 0x0c, 0xfb, 0x46, 0xfb, 0x46, 0xfb, 0x6c, 0xfb, 0x6b, 0xfb, + 0x7b, 0xfb, 0x7c, 0xfb, 0x74, 0xfb, 0x73, 0xfb, 0x58, 0xfb, 0x5a, 0xfb, + 0x26, 0xfb, 0x25, 0xfb, 0xe4, 0xfa, 0xe4, 0xfa, 0x8c, 0xfa, 0x8d, 0xfa, + 0x26, 0xfa, 0x25, 0xfa, 0xb3, 0xf9, 0xb4, 0xf9, 0x36, 0xf9, 0x35, 0xf9, + 0xb0, 0xf8, 0xb2, 0xf8, 0x24, 0xf8, 0x24, 0xf8, 0x98, 0xf7, 0x9a, 0xf7, + 0x0e, 0xf7, 0x0e, 0xf7, 0x88, 0xf6, 0x89, 0xf6, 0x0c, 0xf6, 0x0d, 0xf6, + 0x9c, 0xf5, 0x9a, 0xf5, 0x34, 0xf5, 0x38, 0xf5, 0xe7, 0xf4, 0xe4, 0xf4, + 0xa6, 0xf4, 0xa8, 0xf4, 0x81, 0xf4, 0x80, 0xf4, 0x6d, 0xf4, 0x6f, 0xf4, + 0x78, 0xf4, 0x78, 0xf4, 0x9b, 0xf4, 0x9b, 0xf4, 0xda, 0xf4, 0xd9, 0xf4, + 0x30, 0xf5, 0x30, 0xf5, 0xa5, 0xf5, 0xa5, 0xf5, 0x2f, 0xf6, 0x2f, 0xf6, + 0xd6, 0xf6, 0xd6, 0xf6, 0x8e, 0xf7, 0x8f, 0xf7, 0x5e, 0xf8, 0x5c, 0xf8, + 0x3d, 0xf9, 0x3e, 0xf9, 0x29, 0xfa, 0x29, 0xfa, 0x26, 0xfb, 0x25, 0xfb, + 0x25, 0xfc, 0x23, 0xfc, 0x2b, 0xfd, 0x2c, 0xfd, 0x32, 0xfe, 0x31, 0xfe, + 0x36, 0xff, 0x36, 0xff, 0x32, 0x00, 0x33, 0x00, 0x28, 0x01, 0x27, 0x01, + 0x0f, 0x02, 0x0e, 0x02, 0xe6, 0x02, 0xe4, 0x02, 0xad, 0x03, 0xad, 0x03, + 0x5f, 0x04, 0x5e, 0x04, 0xfa, 0x04, 0xfb, 0x04, 0x80, 0x05, 0x7d, 0x05, + 0xe8, 0x05, 0xe9, 0x05, 0x3d, 0x06, 0x3b, 0x06, 0x71, 0x06, 0x72, 0x06, + 0x93, 0x06, 0x94, 0x06, 0x99, 0x06, 0x99, 0x06, 0x8c, 0x06, 0x8d, 0x06, + 0x67, 0x06, 0x67, 0x06, 0x31, 0x06, 0x31, 0x06, 0xeb, 0x05, 0xec, 0x05, + 0x93, 0x05, 0x93, 0x05, 0x37, 0x05, 0x39, 0x05, 0xcc, 0x04, 0xcc, 0x04, + 0x63, 0x04, 0x63, 0x04, 0xf4, 0x03, 0xf5, 0x03, 0x8a, 0x03, 0x8a, 0x03, + 0x27, 0x03, 0x2a, 0x03, 0xcd, 0x02, 0xcb, 0x02, 0x7b, 0x02, 0x7f, 0x02, + 0x3e, 0x02, 0x3c, 0x02, 0x0e, 0x02, 0x0f, 0x02, 0xf1, 0x01, 0xf2, 0x01, + 0xea, 0x01, 0xea, 0x01, 0xf8, 0x01, 0xf9, 0x01, 0x1f, 0x02, 0x1e, 0x02, + 0x5a, 0x02, 0x5b, 0x02, 0xab, 0x02, 0xab, 0x02, 0x15, 0x03, 0x14, 0x03, + 0x92, 0x03, 0x91, 0x03, 0x20, 0x04, 0x22, 0x04, 0xc2, 0x04, 0xc3, 0x04, + 0x72, 0x05, 0x71, 0x05, 0x2d, 0x06, 0x2f, 0x06, 0xf4, 0x06, 0xf4, 0x06, + 0xbe, 0x07, 0xbf, 0x07, 0x8e, 0x08, 0x8f, 0x08, 0x5b, 0x09, 0x5c, 0x09, + 0x29, 0x0a, 0x29, 0x0a, 0xec, 0x0a, 0xee, 0x0a, 0xa6, 0x0b, 0xa6, 0x0b, + 0x53, 0x0c, 0x54, 0x0c, 0xed, 0x0c, 0xee, 0x0c, 0x78, 0x0d, 0x7a, 0x0d, + 0xed, 0x0d, 0xec, 0x0d, 0x45, 0x0e, 0x47, 0x0e, 0x8d, 0x0e, 0x8c, 0x0e, + 0xb0, 0x0e, 0xb3, 0x0e, 0xc3, 0x0e, 0xc2, 0x0e, 0xb0, 0x0e, 0xb4, 0x0e, + 0x8b, 0x0e, 0x88, 0x0e, 0x45, 0x0e, 0x48, 0x0e, 0xe6, 0x0d, 0xe8, 0x0d, + 0x72, 0x0d, 0x72, 0x0d, 0xe4, 0x0c, 0xe5, 0x0c, 0x45, 0x0c, 0x45, 0x0c, + 0x92, 0x0b, 0x92, 0x0b, 0xd1, 0x0a, 0xd4, 0x0a, 0x08, 0x0a, 0x07, 0x0a, + 0x32, 0x09, 0x33, 0x09, 0x5b, 0x08, 0x5c, 0x08, 0x80, 0x07, 0x82, 0x07, + 0xad, 0x06, 0xad, 0x06, 0xd9, 0x05, 0xda, 0x05, 0x13, 0x05, 0x13, 0x05, + 0x55, 0x04, 0x57, 0x04, 0xa7, 0x03, 0xa9, 0x03, 0x0c, 0x03, 0x0d, 0x03, + 0x82, 0x02, 0x82, 0x02, 0x0b, 0x02, 0x0f, 0x02, 0xad, 0x01, 0xad, 0x01, + 0x62, 0x01, 0x65, 0x01, 0x32, 0x01, 0x30, 0x01, 0x16, 0x01, 0x17, 0x01, + 0x0f, 0x01, 0x10, 0x01, 0x20, 0x01, 0x20, 0x01, 0x40, 0x01, 0x40, 0x01, + 0x74, 0x01, 0x75, 0x01, 0xba, 0x01, 0xb9, 0x01, 0x06, 0x02, 0x0a, 0x02, + 0x64, 0x02, 0x64, 0x02, 0xc4, 0x02, 0xc4, 0x02, 0x2a, 0x03, 0x2b, 0x03, + 0x8f, 0x03, 0x8f, 0x03, 0xf2, 0x03, 0xf3, 0x03, 0x51, 0x04, 0x52, 0x04, + 0xa4, 0x04, 0xa2, 0x04, 0xed, 0x04, 0xee, 0x04, 0x28, 0x05, 0x27, 0x05, + 0x4c, 0x05, 0x4f, 0x05, 0x64, 0x05, 0x64, 0x05, 0x62, 0x05, 0x63, 0x05, + 0x4b, 0x05, 0x4c, 0x05, 0x1a, 0x05, 0x1b, 0x05, 0xd2, 0x04, 0xd2, 0x04, + 0x70, 0x04, 0x71, 0x04, 0xf7, 0x03, 0xf6, 0x03, 0x65, 0x03, 0x67, 0x03, + 0xbb, 0x02, 0xbc, 0x02, 0x01, 0x02, 0x01, 0x02, 0x31, 0x01, 0x32, 0x01, + 0x55, 0x00, 0x54, 0x00, 0x67, 0xff, 0x69, 0xff, 0x73, 0xfe, 0x72, 0xfe, + 0x7b, 0xfd, 0x78, 0xfd, 0x78, 0xfc, 0x7a, 0xfc, 0x7d, 0xfb, 0x7b, 0xfb, + 0x7f, 0xfa, 0x80, 0xfa, 0x8d, 0xf9, 0x8e, 0xf9, 0xa4, 0xf8, 0xa2, 0xf8, + 0xc6, 0xf7, 0xc7, 0xf7, 0xfc, 0xf6, 0xfb, 0xf6, 0x42, 0xf6, 0x41, 0xf6, + 0x9e, 0xf5, 0xa0, 0xf5, 0x12, 0xf5, 0x10, 0xf5, 0x9e, 0xf4, 0x9f, 0xf4, + 0x46, 0xf4, 0x44, 0xf4, 0x04, 0xf4, 0x05, 0xf4, 0xe0, 0xf3, 0xdf, 0xf3, + 0xd3, 0xf3, 0xd4, 0xf3, 0xe5, 0xf3, 0xe5, 0xf3, 0x0a, 0xf4, 0x09, 0xf4, + 0x48, 0xf4, 0x48, 0xf4, 0x9c, 0xf4, 0x9d, 0xf4, 0xff, 0xf4, 0xff, 0xf4, + 0x75, 0xf5, 0x76, 0xf5, 0xf7, 0xf5, 0xf7, 0xf5, 0x82, 0xf6, 0x82, 0xf6, + 0x13, 0xf7, 0x16, 0xf7, 0xa7, 0xf7, 0xa6, 0xf7, 0x3b, 0xf8, 0x3d, 0xf8, + 0xca, 0xf8, 0xca, 0xf8, 0x56, 0xf9, 0x57, 0xf9, 0xd5, 0xf9, 0xd6, 0xf9, + 0x47, 0xfa, 0x47, 0xfa, 0xad, 0xfa, 0xaf, 0xfa, 0xfd, 0xfa, 0xff, 0xfa, + 0x41, 0xfb, 0x40, 0xfb, 0x69, 0xfb, 0x6b, 0xfb, 0x82, 0xfb, 0x82, 0xfb, + 0x83, 0xfb, 0x84, 0xfb, 0x6d, 0xfb, 0x6e, 0xfb, 0x46, 0xfb, 0x47, 0xfb, + 0x06, 0xfb, 0x06, 0xfb, 0xb8, 0xfa, 0xba, 0xfa, 0x57, 0xfa, 0x56, 0xfa, + 0xe6, 0xf9, 0xe7, 0xf9, 0x6c, 0xf9, 0x6c, 0xf9, 0xe2, 0xf8, 0xe4, 0xf8, + 0x58, 0xf8, 0x57, 0xf8, 0xc1, 0xf7, 0xc3, 0xf7, 0x34, 0xf7, 0x35, 0xf7, + 0xa2, 0xf6, 0xa2, 0xf6, 0x1a, 0xf6, 0x1b, 0xf6, 0x97, 0xf5, 0x96, 0xf5, + 0x21, 0xf5, 0x24, 0xf5, 0xbd, 0xf4, 0xbb, 0xf4, 0x63, 0xf4, 0x68, 0xf4, + 0x27, 0xf4, 0x25, 0xf4, 0xf9, 0xf3, 0xf9, 0xf3, 0xe6, 0xf3, 0xe7, 0xf3, + 0xea, 0xf3, 0xeb, 0xf3, 0x0b, 0xf4, 0x0b, 0xf4, 0x42, 0xf4, 0x45, 0xf4, + 0x97, 0xf4, 0x96, 0xf4, 0x03, 0xf5, 0x05, 0xf5, 0x8c, 0xf5, 0x8b, 0xf5, + 0x27, 0xf6, 0x29, 0xf6, 0xdb, 0xf6, 0xdb, 0xf6, 0xa0, 0xf7, 0xa3, 0xf7, + 0x79, 0xf8, 0x79, 0xf8, 0x5e, 0xf9, 0x5d, 0xf9, 0x4d, 0xfa, 0x4f, 0xfa, + 0x44, 0xfb, 0x43, 0xfb, 0x42, 0xfc, 0x42, 0xfc, 0x3c, 0xfd, 0x3d, 0xfd, + 0x37, 0xfe, 0x35, 0xfe, 0x29, 0xff, 0x2b, 0xff, 0x13, 0x00, 0x14, 0x00, + 0xf4, 0x00, 0xf2, 0x00, 0xbe, 0x01, 0xbf, 0x01, 0x7d, 0x02, 0x7d, 0x02, + 0x24, 0x03, 0x26, 0x03, 0xb7, 0x03, 0xb6, 0x03, 0x37, 0x04, 0x36, 0x04, + 0x96, 0x04, 0x97, 0x04, 0xe9, 0x04, 0xe7, 0x04, 0x18, 0x05, 0x1a, 0x05, + 0x38, 0x05, 0x37, 0x05, 0x3d, 0x05, 0x3e, 0x05, 0x2c, 0x05, 0x2a, 0x05, + 0x09, 0x05, 0x09, 0x05, 0xd2, 0x04, 0xd3, 0x04, 0x8e, 0x04, 0x8e, 0x04, + 0x3d, 0x04, 0x3d, 0x04, 0xe1, 0x03, 0xe3, 0x03, 0x81, 0x03, 0x7f, 0x03, + 0x1b, 0x03, 0x1c, 0x03, 0xb6, 0x02, 0xb6, 0x02, 0x55, 0x02, 0x54, 0x02, + 0xf9, 0x01, 0xf9, 0x01, 0xa8, 0x01, 0xa7, 0x01, 0x63, 0x01, 0x63, 0x01, + 0x2c, 0x01, 0x2b, 0x01, 0x08, 0x01, 0x07, 0x01, 0xf5, 0x00, 0xf4, 0x00, + 0xf7, 0x00, 0xf8, 0x00, 0x0e, 0x01, 0x0e, 0x01, 0x40, 0x01, 0x3c, 0x01, + 0x83, 0x01, 0x85, 0x01, 0xde, 0x01, 0xdd, 0x01, 0x4d, 0x02, 0x4d, 0x02, + 0xd3, 0x02, 0xd4, 0x02, 0x6a, 0x03, 0x69, 0x03, 0x14, 0x04, 0x14, 0x04, + 0xc8, 0x04, 0xc8, 0x04, 0x8c, 0x05, 0x8a, 0x05, 0x56, 0x06, 0x58, 0x06, + 0x27, 0x07, 0x24, 0x07, 0xfa, 0x07, 0xfa, 0x07, 0xcd, 0x08, 0xcd, 0x08, + 0x9c, 0x09, 0x9b, 0x09, 0x63, 0x0a, 0x62, 0x0a, 0x20, 0x0b, 0x1f, 0x0b, + 0xd0, 0x0b, 0xd1, 0x0b, 0x71, 0x0c, 0x6e, 0x0c, 0xfc, 0x0c, 0xfd, 0x0c, + 0x75, 0x0d, 0x74, 0x0d, 0xd3, 0x0d, 0xd4, 0x0d, 0x1f, 0x0e, 0x1e, 0x0e, + 0x49, 0x0e, 0x4a, 0x0e, 0x60, 0x0e, 0x5f, 0x0e, 0x55, 0x0e, 0x57, 0x0e, + 0x36, 0x0e, 0x35, 0x0e, 0xf9, 0x0d, 0xf9, 0x0d, 0xa3, 0x0d, 0xa3, 0x0d, + 0x38, 0x0d, 0x37, 0x0d, 0xb6, 0x0c, 0xb6, 0x0c, 0x20, 0x0c, 0x1f, 0x0c, + 0x7c, 0x0b, 0x7c, 0x0b, 0xc6, 0x0a, 0xc6, 0x0a, 0x0b, 0x0a, 0x0b, 0x0a, + 0x46, 0x09, 0x45, 0x09, 0x7c, 0x08, 0x7d, 0x08, 0xb2, 0x07, 0xb1, 0x07, + 0xea, 0x06, 0xec, 0x06, 0x29, 0x06, 0x28, 0x06, 0x71, 0x05, 0x71, 0x05, + 0xc5, 0x04, 0xc5, 0x04, 0x25, 0x04, 0x25, 0x04, 0x98, 0x03, 0x97, 0x03, + 0x1c, 0x03, 0x1c, 0x03, 0xb7, 0x02, 0xb6, 0x02, 0x63, 0x02, 0x63, 0x02, + 0x28, 0x02, 0x28, 0x02, 0xff, 0x01, 0xff, 0x01, 0xef, 0x01, 0xf1, 0x01, + 0xf3, 0x01, 0xf3, 0x01, 0x0b, 0x02, 0x0a, 0x02, 0x35, 0x02, 0x35, 0x02, + 0x6e, 0x02, 0x6e, 0x02, 0xba, 0x02, 0xb7, 0x02, 0x0a, 0x03, 0x0c, 0x03, + 0x6b, 0x03, 0x69, 0x03, 0xcd, 0x03, 0xce, 0x03, 0x34, 0x04, 0x33, 0x04, + 0x9c, 0x04, 0x9c, 0x04, 0xfe, 0x04, 0xfd, 0x04, 0x5d, 0x05, 0x5c, 0x05, + 0xaf, 0x05, 0xaf, 0x05, 0xf9, 0x05, 0xf8, 0x05, 0x2f, 0x06, 0x2f, 0x06, + 0x58, 0x06, 0x56, 0x06, 0x69, 0x06, 0x6a, 0x06, 0x68, 0x06, 0x67, 0x06, + 0x4e, 0x06, 0x4e, 0x06, 0x1c, 0x06, 0x1b, 0x06, 0xd4, 0x05, 0xd4, 0x05, + 0x71, 0x05, 0x72, 0x05, 0xf8, 0x04, 0xf8, 0x04, 0x68, 0x04, 0x68, 0x04, + 0xbf, 0x03, 0xc0, 0x03, 0x06, 0x03, 0x05, 0x03, 0x3a, 0x02, 0x3a, 0x02, + 0x5d, 0x01, 0x5a, 0x01, 0x73, 0x00, 0x75, 0x00, 0x82, 0xff, 0x80, 0xff, + 0x89, 0xfe, 0x89, 0xfe, 0x90, 0xfd, 0x90, 0xfd, 0x91, 0xfc, 0x91, 0xfc, + 0x9b, 0xfb, 0x9b, 0xfb, 0xaa, 0xfa, 0xab, 0xfa, 0xc3, 0xf9, 0xc3, 0xf9, + 0xea, 0xf8, 0xeb, 0xf8, 0x1e, 0xf8, 0x1f, 0xf8, 0x6a, 0xf7, 0x6b, 0xf7, + 0xc5, 0xf6, 0xc6, 0xf6, 0x3b, 0xf6, 0x3c, 0xf6, 0xc7, 0xf5, 0xc6, 0xf5, + 0x6d, 0xf5, 0x6c, 0xf5, 0x29, 0xf5, 0x29, 0xf5, 0x04, 0xf5, 0x05, 0xf5, + 0xf4, 0xf4, 0xf3, 0xf4, 0xfe, 0xf4, 0xff, 0xf4, 0x1e, 0xf5, 0x1e, 0xf5, + 0x56, 0xf5, 0x57, 0xf5, 0xa0, 0xf5, 0xa0, 0xf5, 0xfc, 0xf5, 0xfc, 0xf5, + 0x65, 0xf6, 0x67, 0xf6, 0xde, 0xf6, 0xdd, 0xf6, 0x5c, 0xf7, 0x5d, 0xf7, + 0xe1, 0xf7, 0xe1, 0xf7, 0x6a, 0xf8, 0x69, 0xf8, 0xed, 0xf8, 0xf0, 0xf8, + 0x74, 0xf9, 0x72, 0xf9, 0xec, 0xf9, 0xee, 0xf9, 0x61, 0xfa, 0x5e, 0xfa, + 0xc2, 0xfa, 0xc3, 0xfa, 0x17, 0xfb, 0x17, 0xfb, 0x5e, 0xfb, 0x5f, 0xfb, + 0x8f, 0xfb, 0x8e, 0xfb, 0xae, 0xfb, 0xae, 0xfb, 0xb7, 0xfb, 0xb7, 0xfb, + 0xa9, 0xfb, 0xaa, 0xfb, 0x8c, 0xfb, 0x8d, 0xfb, 0x57, 0xfb, 0x56, 0xfb, + 0x0e, 0xfb, 0x0e, 0xfb, 0xb4, 0xfa, 0xb3, 0xfa, 0x4a, 0xfa, 0x4c, 0xfa, + 0xd0, 0xf9, 0xcf, 0xf9, 0x4d, 0xf9, 0x4e, 0xf9, 0xc0, 0xf8, 0xbe, 0xf8, + 0x2a, 0xf8, 0x2c, 0xf8, 0x95, 0xf7, 0x94, 0xf7, 0xfc, 0xf6, 0xfc, 0xf6, + 0x67, 0xf6, 0x69, 0xf6, 0xda, 0xf5, 0xd8, 0xf5, 0x52, 0xf5, 0x54, 0xf5, + 0xda, 0xf4, 0xd9, 0xf4, 0x6d, 0xf4, 0x6f, 0xf4, 0x17, 0xf4, 0x16, 0xf4, + 0xcf, 0xf3, 0xd0, 0xf3, 0xa1, 0xf3, 0xa0, 0xf3, 0x89, 0xf3, 0x89, 0xf3, + 0x87, 0xf3, 0x85, 0xf3, 0xa1, 0xf3, 0xa4, 0xf3, 0xd3, 0xf3, 0xd2, 0xf3, + 0x22, 0xf4, 0x22, 0xf4, 0x87, 0xf4, 0x85, 0xf4, 0x03, 0xf5, 0x04, 0xf5, + 0x9e, 0xf5, 0x9c, 0xf5, 0x43, 0xf6, 0x43, 0xf6, 0x02, 0xf7, 0x02, 0xf7, + 0xcf, 0xf7, 0xcc, 0xf7, 0xa7, 0xf8, 0xaa, 0xf8, 0x8f, 0xf9, 0x8d, 0xf9, + 0x79, 0xfa, 0x79, 0xfa, 0x69, 0xfb, 0x69, 0xfb, 0x5b, 0xfc, 0x59, 0xfc, + 0x48, 0xfd, 0x48, 0xfd, 0x30, 0xfe, 0x2f, 0xfe, 0x10, 0xff, 0x0e, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xa8, 0x00, 0xa7, 0x00, 0x58, 0x01, 0x57, 0x01, + 0xf8, 0x01, 0xf8, 0x01, 0x85, 0x02, 0x83, 0x02, 0xf8, 0x02, 0xf7, 0x02, + 0x58, 0x03, 0x58, 0x03, 0x9f, 0x03, 0x9d, 0x03, 0xce, 0x03, 0xcd, 0x03, + 0xe8, 0x03, 0xe9, 0x03, 0xec, 0x03, 0xea, 0x03, 0xdc, 0x03, 0xdc, 0x03, + 0xb9, 0x03, 0xb7, 0x03, 0x85, 0x03, 0x83, 0x03, 0x41, 0x03, 0x42, 0x03, + 0xf7, 0x02, 0xf4, 0x02, 0x9f, 0x02, 0x9d, 0x02, 0x44, 0x02, 0x42, 0x02, + 0xe3, 0x01, 0xe0, 0x01, 0x84, 0x01, 0x85, 0x01, 0x2b, 0x01, 0x29, 0x01, + 0xd8, 0x00, 0xd5, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x51, 0x00, 0x4e, 0x00, + 0x22, 0x00, 0x22, 0x00, 0x05, 0x00, 0x03, 0x00, 0xf9, 0xff, 0xf8, 0xff, + 0x04, 0x00, 0x02, 0x00, 0x23, 0x00, 0x22, 0x00, 0x5a, 0x00, 0x59, 0x00, + 0xa4, 0x00, 0xa4, 0x00, 0x07, 0x01, 0x05, 0x01, 0x7c, 0x01, 0x7c, 0x01, + 0x06, 0x02, 0x04, 0x02, 0xa3, 0x02, 0xa1, 0x02, 0x4e, 0x03, 0x4e, 0x03, + 0x0a, 0x04, 0x08, 0x04, 0xcd, 0x04, 0xcf, 0x04, 0x9e, 0x05, 0x9b, 0x05, + 0x72, 0x06, 0x73, 0x06, 0x44, 0x07, 0x43, 0x07, 0x1d, 0x08, 0x1b, 0x08, + 0xed, 0x08, 0xec, 0x08, 0xb7, 0x09, 0xb7, 0x09, 0x77, 0x0a, 0x76, 0x0a, + 0x29, 0x0b, 0x29, 0x0b, 0xcd, 0x0b, 0xcb, 0x0b, 0x5c, 0x0c, 0x5b, 0x0c, + 0xd9, 0x0c, 0xd8, 0x0c, 0x3e, 0x0d, 0x3c, 0x0d, 0x8b, 0x0d, 0x89, 0x0d, + 0xbd, 0x0d, 0xbc, 0x0d, 0xd9, 0x0d, 0xd8, 0x0d, 0xd7, 0x0d, 0xd7, 0x0d, + 0xc1, 0x0d, 0xc0, 0x0d, 0x8c, 0x0d, 0x8c, 0x0d, 0x43, 0x0d, 0x42, 0x0d, + 0xe2, 0x0c, 0xe1, 0x0c, 0x6b, 0x0c, 0x69, 0x0c, 0xe7, 0x0b, 0xe5, 0x0b, + 0x4b, 0x0b, 0x4a, 0x0b, 0xa7, 0x0a, 0xa6, 0x0a, 0xf8, 0x09, 0xf6, 0x09, + 0x41, 0x09, 0x41, 0x09, 0x88, 0x08, 0x86, 0x08, 0xce, 0x07, 0xcc, 0x07, + 0x17, 0x07, 0x15, 0x07, 0x66, 0x06, 0x65, 0x06, 0xbc, 0x05, 0xbc, 0x05, + 0x20, 0x05, 0x1e, 0x05, 0x90, 0x04, 0x8f, 0x04, 0x11, 0x04, 0x0f, 0x04, + 0xa4, 0x03, 0xa4, 0x03, 0x4a, 0x03, 0x48, 0x03, 0x04, 0x03, 0x04, 0x03, + 0xd3, 0x02, 0xd2, 0x02, 0xb8, 0x02, 0xb7, 0x02, 0xb0, 0x02, 0xae, 0x02, + 0xbc, 0x02, 0xbb, 0x02, 0xdb, 0x02, 0xdb, 0x02, 0x0b, 0x03, 0x08, 0x03, + 0x4d, 0x03, 0x4e, 0x03, 0x99, 0x03, 0x96, 0x03, 0xf3, 0x03, 0xf1, 0x03, + 0x52, 0x04, 0x52, 0x04, 0xb9, 0x04, 0xb7, 0x04, 0x22, 0x05, 0x21, 0x05, + 0x89, 0x05, 0x89, 0x05, 0xed, 0x05, 0xec, 0x05, 0x49, 0x06, 0x48, 0x06, + 0x9c, 0x06, 0x9c, 0x06, 0xe5, 0x06, 0xe4, 0x06, 0x1a, 0x07, 0x19, 0x07, + 0x44, 0x07, 0x41, 0x07, 0x53, 0x07, 0x53, 0x07, 0x53, 0x07, 0x50, 0x07, + 0x39, 0x07, 0x3b, 0x07, 0x0a, 0x07, 0x07, 0x07, 0xc1, 0x06, 0xc2, 0x06, + 0x61, 0x06, 0x60, 0x06, 0xec, 0x05, 0xea, 0x05, 0x5d, 0x05, 0x5c, 0x05, + 0xb8, 0x04, 0xb5, 0x04, 0x04, 0x04, 0x04, 0x04, 0x3b, 0x03, 0x39, 0x03, + 0x62, 0x02, 0x62, 0x02, 0x80, 0x01, 0x7f, 0x01, 0x93, 0x00, 0x91, 0x00, + 0x9f, 0xff, 0x9f, 0xff, 0xa9, 0xfe, 0xa7, 0xfe, 0xb3, 0xfd, 0xb3, 0xfd, + 0xc3, 0xfc, 0xc1, 0xfc, 0xd4, 0xfb, 0xd4, 0xfb, 0xf4, 0xfa, 0xf2, 0xfa, + 0x1e, 0xfa, 0x1c, 0xfa, 0x58, 0xf9, 0x57, 0xf9, 0xa6, 0xf8, 0xa3, 0xf8, + 0x02, 0xf8, 0x03, 0xf8, 0x7b, 0xf7, 0x78, 0xf7, 0x05, 0xf7, 0x04, 0xf7, + 0xad, 0xf6, 0xac, 0xf6, 0x67, 0xf6, 0x66, 0xf6, 0x3d, 0xf6, 0x3b, 0xf6, + 0x29, 0xf6, 0x29, 0xf6, 0x30, 0xf6, 0x2e, 0xf6, 0x49, 0xf6, 0x4a, 0xf6, + 0x7a, 0xf6, 0x77, 0xf6, 0xbc, 0xf6, 0xbc, 0xf6, 0x0e, 0xf7, 0x0c, 0xf7, + 0x70, 0xf7, 0x6f, 0xf7, 0xdb, 0xf7, 0xd9, 0xf7, 0x4e, 0xf8, 0x4d, 0xf8, + 0xc7, 0xf8, 0xc5, 0xf8, 0x40, 0xf9, 0x3f, 0xf9, 0xb8, 0xf9, 0xb7, 0xf9, + 0x30, 0xfa, 0x2d, 0xfa, 0x9b, 0xfa, 0x99, 0xfa, 0xff, 0xfa, 0xfe, 0xfa, + 0x55, 0xfb, 0x53, 0xfb, 0x9b, 0xfb, 0x9c, 0xfb, 0xd5, 0xfb, 0xd3, 0xfb, + 0xf8, 0xfb, 0xf6, 0xfb, 0x0a, 0xfc, 0x0b, 0xfc, 0x09, 0xfc, 0x05, 0xfc, + 0xf0, 0xfb, 0xef, 0xfb, 0xc8, 0xfb, 0xc5, 0xfb, 0x85, 0xfb, 0x84, 0xfb, + 0x39, 0xfb, 0x36, 0xfb, 0xd2, 0xfa, 0xd0, 0xfa, 0x61, 0xfa, 0x5f, 0xfa, + 0xe1, 0xf9, 0xe0, 0xf9, 0x58, 0xf9, 0x53, 0xf9, 0xc3, 0xf8, 0xc3, 0xf8, + 0x2b, 0xf8, 0x26, 0xf8, 0x8d, 0xf7, 0x8c, 0xf7, 0xf2, 0xf6, 0xf1, 0xf6, + 0x59, 0xf6, 0x55, 0xf6, 0xc6, 0xf5, 0xc5, 0xf5, 0x3d, 0xf5, 0x38, 0xf5, + 0xbf, 0xf4, 0xbe, 0xf4, 0x50, 0xf4, 0x4e, 0xf4, 0xf4, 0xf3, 0xf3, 0xf3, + 0xa9, 0xf3, 0xa7, 0xf3, 0x74, 0xf3, 0x73, 0xf3, 0x57, 0xf3, 0x55, 0xf3, + 0x50, 0xf3, 0x4f, 0xf3, 0x64, 0xf3, 0x62, 0xf3, 0x90, 0xf3, 0x8e, 0xf3, + 0xd5, 0xf3, 0xd3, 0xf3, 0x35, 0xf4, 0x31, 0xf4, 0xa7, 0xf4, 0xa7, 0xf4, + 0x34, 0xf5, 0x31, 0xf5, 0xd1, 0xf5, 0xd1, 0xf5, 0x83, 0xf6, 0x81, 0xf6, + 0x46, 0xf7, 0x42, 0xf7, 0x12, 0xf8, 0x13, 0xf8, 0xeb, 0xf8, 0xe8, 0xf8, + 0xcc, 0xf9, 0xc9, 0xf9, 0xab, 0xfa, 0xad, 0xfa, 0x93, 0xfb, 0x8f, 0xfb, + 0x70, 0xfc, 0x71, 0xfc, 0x4d, 0xfd, 0x4b, 0xfd, 0x20, 0xfe, 0x1f, 0xfe, + 0xe5, 0xfe, 0xe5, 0xfe, 0xa0, 0xff, 0x9e, 0xff, 0x45, 0x00, 0x46, 0x00, + 0xdf, 0x00, 0xdd, 0x00, 0x60, 0x01, 0x5e, 0x01, 0xca, 0x01, 0xca, 0x01, + 0x24, 0x02, 0x23, 0x02, 0x63, 0x02, 0x61, 0x02, 0x8f, 0x02, 0x8d, 0x02, + 0xa5, 0x02, 0xa2, 0x02, 0xa6, 0x02, 0xa5, 0x02, 0x95, 0x02, 0x93, 0x02, + 0x72, 0x02, 0x6e, 0x02, 0x3f, 0x02, 0x3e, 0x02, 0xfd, 0x01, 0xfb, 0x01, + 0xb4, 0x01, 0xb4, 0x01, 0x63, 0x01, 0x5e, 0x01, 0x0b, 0x01, 0x0a, 0x01, + 0xb1, 0x00, 0xaf, 0x00, 0x56, 0x00, 0x56, 0x00, 0x06, 0x00, 0x03, 0x00, + 0xb6, 0xff, 0xb3, 0xff, 0x75, 0xff, 0x73, 0xff, 0x3d, 0xff, 0x3b, 0xff, + 0x16, 0xff, 0x14, 0xff, 0xfe, 0xfe, 0xfc, 0xfe, 0xfa, 0xfe, 0xf7, 0xfe, + 0x0b, 0xff, 0x0a, 0xff, 0x31, 0xff, 0x2d, 0xff, 0x6a, 0xff, 0x6a, 0xff, + 0xbe, 0xff, 0xba, 0xff, 0x20, 0x00, 0x20, 0x00, 0x9f, 0x00, 0x9c, 0x00, + 0x2c, 0x01, 0x2b, 0x01, 0xcb, 0x01, 0xca, 0x01, 0x7a, 0x02, 0x79, 0x02, + 0x37, 0x03, 0x35, 0x03, 0x00, 0x04, 0xfd, 0x03, 0xcf, 0x04, 0xcd, 0x04, + 0xa6, 0x05, 0xa2, 0x05, 0x79, 0x06, 0x78, 0x06, 0x53, 0x07, 0x4f, 0x07, + 0x23, 0x08, 0x22, 0x08, 0xf0, 0x08, 0xed, 0x08, 0xb0, 0x09, 0xaf, 0x09, + 0x66, 0x0a, 0x63, 0x0a, 0x0a, 0x0b, 0x08, 0x0b, 0x9e, 0x0b, 0x9a, 0x0b, + 0x1a, 0x0c, 0x18, 0x0c, 0x86, 0x0c, 0x83, 0x0c, 0xd4, 0x0c, 0xd3, 0x0c, + 0x0f, 0x0d, 0x0e, 0x0d, 0x2e, 0x0d, 0x2a, 0x0d, 0x34, 0x0d, 0x35, 0x0d, + 0x25, 0x0d, 0x21, 0x0d, 0xf8, 0x0c, 0xf8, 0x0c, 0xba, 0x0c, 0xb7, 0x0c, + 0x61, 0x0c, 0x5f, 0x0c, 0xf9, 0x0b, 0xf6, 0x0b, 0x7d, 0x0b, 0x7c, 0x0b, + 0xf0, 0x0a, 0xee, 0x0a, 0x5a, 0x0a, 0x58, 0x0a, 0xb9, 0x09, 0xb7, 0x09, + 0x14, 0x09, 0x12, 0x09, 0x69, 0x08, 0x68, 0x08, 0xbf, 0x07, 0xbb, 0x07, + 0x18, 0x07, 0x17, 0x07, 0x74, 0x06, 0x71, 0x06, 0xde, 0x05, 0xdd, 0x05, + 0x4d, 0x05, 0x4b, 0x05, 0xce, 0x04, 0xcb, 0x04, 0x5e, 0x04, 0x5d, 0x04, + 0xfe, 0x03, 0xfb, 0x03, 0xb1, 0x03, 0xb2, 0x03, 0x7b, 0x03, 0x76, 0x03, + 0x53, 0x03, 0x52, 0x03, 0x43, 0x03, 0x41, 0x03, 0x45, 0x03, 0x44, 0x03, + 0x5c, 0x03, 0x5b, 0x03, 0x84, 0x03, 0x82, 0x03, 0xba, 0x03, 0xba, 0x03, + 0x04, 0x04, 0x01, 0x04, 0x53, 0x04, 0x52, 0x04, 0xb4, 0x04, 0xb3, 0x04, + 0x15, 0x05, 0x13, 0x05, 0x81, 0x05, 0x80, 0x05, 0xeb, 0x05, 0xe8, 0x05, + 0x54, 0x06, 0x51, 0x06, 0xb9, 0x06, 0xb8, 0x06, 0x17, 0x07, 0x14, 0x07, + 0x6b, 0x07, 0x6a, 0x07, 0xb2, 0x07, 0xb0, 0x07, 0xea, 0x07, 0xe8, 0x07, + 0x11, 0x08, 0x0f, 0x08, 0x26, 0x08, 0x22, 0x08, 0x21, 0x08, 0x20, 0x08, + 0x0c, 0x08, 0x0a, 0x08, 0xdd, 0x07, 0xdb, 0x07, 0x98, 0x07, 0x96, 0x07, + 0x39, 0x07, 0x38, 0x07, 0xc6, 0x06, 0xc2, 0x06, 0x3b, 0x06, 0x3a, 0x06, + 0x9c, 0x05, 0x99, 0x05, 0xeb, 0x04, 0xe8, 0x04, 0x27, 0x04, 0x25, 0x04, + 0x53, 0x03, 0x52, 0x03, 0x79, 0x02, 0x75, 0x02, 0x8f, 0x01, 0x8e, 0x01, + 0xa4, 0x00, 0xa1, 0x00, 0xb4, 0xff, 0xb3, 0xff, 0xc3, 0xfe, 0xc2, 0xfe, + 0xda, 0xfd, 0xd6, 0xfd, 0xf2, 0xfc, 0xf3, 0xfc, 0x19, 0xfc, 0x14, 0xfc, + 0x47, 0xfb, 0x46, 0xfb, 0x86, 0xfa, 0x84, 0xfa, 0xd8, 0xf9, 0xd5, 0xf9, + 0x39, 0xf9, 0x37, 0xf9, 0xb3, 0xf8, 0xb1, 0xf8, 0x42, 0xf8, 0x40, 0xf8, + 0xe7, 0xf7, 0xe6, 0xf7, 0xa3, 0xf7, 0xa2, 0xf7, 0x77, 0xf7, 0x74, 0xf7, + 0x63, 0xf7, 0x62, 0xf7, 0x66, 0xf7, 0x65, 0xf7, 0x7c, 0xf7, 0x79, 0xf7, + 0xa6, 0xf7, 0xa4, 0xf7, 0xe1, 0xf7, 0xe0, 0xf7, 0x2c, 0xf8, 0x2a, 0xf8, + 0x85, 0xf8, 0x84, 0xf8, 0xe6, 0xf8, 0xe3, 0xf8, 0x4f, 0xf9, 0x4d, 0xf9, + 0xbc, 0xf9, 0xbb, 0xf9, 0x2c, 0xfa, 0x29, 0xfa, 0x99, 0xfa, 0x96, 0xfa, + 0x02, 0xfb, 0xfe, 0xfa, 0x61, 0xfb, 0x5e, 0xfb, 0xb6, 0xfb, 0xb6, 0xfb, + 0x02, 0xfc, 0xff, 0xfb, 0x3b, 0xfc, 0x38, 0xfc, 0x67, 0xfc, 0x65, 0xfc, + 0x7d, 0xfc, 0x7a, 0xfc, 0x84, 0xfc, 0x82, 0xfc, 0x76, 0xfc, 0x73, 0xfc, + 0x54, 0xfc, 0x51, 0xfc, 0x1e, 0xfc, 0x1c, 0xfc, 0xd6, 0xfb, 0xd3, 0xfb, + 0x7b, 0xfb, 0x7a, 0xfb, 0x0f, 0xfb, 0x0d, 0xfb, 0x96, 0xfa, 0x94, 0xfa, + 0x0d, 0xfa, 0x0b, 0xfa, 0x7e, 0xf9, 0x7b, 0xf9, 0xe4, 0xf8, 0xe0, 0xf8, + 0x46, 0xf8, 0x44, 0xf8, 0xa4, 0xf7, 0xa1, 0xf7, 0x04, 0xf7, 0x03, 0xf7, + 0x66, 0xf6, 0x62, 0xf6, 0xd1, 0xf5, 0xcd, 0xf5, 0x41, 0xf5, 0x41, 0xf5, + 0xc3, 0xf4, 0xbf, 0xf4, 0x4f, 0xf4, 0x4e, 0xf4, 0xed, 0xf3, 0xec, 0xf3, + 0xa0, 0xf3, 0x9c, 0xf3, 0x65, 0xf3, 0x64, 0xf3, 0x44, 0xf3, 0x40, 0xf3, + 0x37, 0xf3, 0x35, 0xf3, 0x46, 0xf3, 0x43, 0xf3, 0x6a, 0xf3, 0x68, 0xf3, + 0xaa, 0xf3, 0xa6, 0xf3, 0xff, 0xf3, 0xfc, 0xf3, 0x6b, 0xf4, 0x69, 0xf4, + 0xec, 0xf4, 0xea, 0xf4, 0x81, 0xf5, 0x7f, 0xf5, 0x29, 0xf6, 0x26, 0xf6, + 0xdd, 0xf6, 0xda, 0xf6, 0xa1, 0xf7, 0xa0, 0xf7, 0x6b, 0xf8, 0x68, 0xf8, + 0x40, 0xf9, 0x3f, 0xf9, 0x15, 0xfa, 0x12, 0xfa, 0xec, 0xfa, 0xea, 0xfa, + 0xbf, 0xfb, 0xbc, 0xfb, 0x8e, 0xfc, 0x8b, 0xfc, 0x53, 0xfd, 0x50, 0xfd, + 0x0d, 0xfe, 0x0a, 0xfe, 0xba, 0xfe, 0xb6, 0xfe, 0x56, 0xff, 0x54, 0xff, + 0xe0, 0xff, 0xde, 0xff, 0x5a, 0x00, 0x56, 0x00, 0xbb, 0x00, 0xba, 0x00, + 0x0f, 0x01, 0x0b, 0x01, 0x44, 0x01, 0x44, 0x01, 0x6b, 0x01, 0x67, 0x01, + 0x7c, 0x01, 0x7a, 0x01, 0x78, 0x01, 0x75, 0x01, 0x65, 0x01, 0x61, 0x01, + 0x3e, 0x01, 0x3d, 0x01, 0x0c, 0x01, 0x07, 0x01, 0xcb, 0x00, 0xcb, 0x00, + 0x83, 0x00, 0x80, 0x00, 0x35, 0x00, 0x31, 0x00, 0xde, 0xff, 0xdc, 0xff, + 0x8a, 0xff, 0x86, 0xff, 0x35, 0xff, 0x33, 0xff, 0xe6, 0xfe, 0xe4, 0xfe, + 0x9e, 0xfe, 0x9b, 0xfe, 0x60, 0xfe, 0x5f, 0xfe, 0x31, 0xfe, 0x2d, 0xfe, + 0x0e, 0xfe, 0x0d, 0xfe, 0xfe, 0xfd, 0xf9, 0xfd, 0x00, 0xfe, 0xfc, 0xfd, + 0x13, 0xfe, 0x12, 0xfe, 0x3f, 0xfe, 0x3a, 0xfe, 0x7e, 0xfe, 0x7b, 0xfe, + 0xd4, 0xfe, 0xd1, 0xfe, 0x3c, 0xff, 0x3a, 0xff, 0xbc, 0xff, 0xb9, 0xff, + 0x4d, 0x00, 0x49, 0x00, 0xef, 0x00, 0xe9, 0x00, 0x9e, 0x01, 0x9f, 0x01, + 0x5f, 0x02, 0x58, 0x02, 0x26, 0x03, 0x25, 0x03, 0xf7, 0x03, 0xf5, 0x03, + 0xcd, 0x04, 0xc8, 0x04, 0xa5, 0x05, 0xa4, 0x05, 0x7c, 0x06, 0x78, 0x06, + 0x4c, 0x07, 0x4b, 0x07, 0x1a, 0x08, 0x17, 0x08, 0xdb, 0x08, 0xd7, 0x08, + 0x8f, 0x09, 0x8d, 0x09, 0x37, 0x0a, 0x33, 0x0a, 0xca, 0x0a, 0xc8, 0x0a, + 0x4b, 0x0b, 0x48, 0x0b, 0xb6, 0x0b, 0xb3, 0x0b, 0x0c, 0x0c, 0x09, 0x0c, + 0x49, 0x0c, 0x45, 0x0c, 0x6f, 0x0c, 0x6c, 0x0c, 0x7a, 0x0c, 0x79, 0x0c, + 0x72, 0x0c, 0x6d, 0x0c, 0x4f, 0x0c, 0x4e, 0x0c, 0x16, 0x0c, 0x14, 0x0c, + 0xcc, 0x0b, 0xc7, 0x0b, 0x6a, 0x0b, 0x67, 0x0b, 0xfc, 0x0a, 0xf8, 0x0a, + 0x7d, 0x0a, 0x7a, 0x0a, 0xf3, 0x09, 0xf0, 0x09, 0x62, 0x09, 0x5e, 0x09, + 0xc9, 0x08, 0xc6, 0x08, 0x2d, 0x08, 0x2a, 0x08, 0x92, 0x07, 0x8f, 0x07, + 0xfa, 0x06, 0xf7, 0x06, 0x68, 0x06, 0x65, 0x06, 0xdf, 0x05, 0xdc, 0x05, + 0x60, 0x05, 0x5e, 0x05, 0xef, 0x04, 0xec, 0x04, 0x8d, 0x04, 0x8b, 0x04, + 0x3c, 0x04, 0x38, 0x04, 0xfe, 0x03, 0xfd, 0x03, 0xd2, 0x03, 0xcd, 0x03, + 0xb8, 0x03, 0xb6, 0x03, 0xb2, 0x03, 0xae, 0x03, 0xbe, 0x03, 0xbd, 0x03, + 0xdf, 0x03, 0xdc, 0x03, 0x0e, 0x04, 0x0a, 0x04, 0x4e, 0x04, 0x4b, 0x04, + 0x9b, 0x04, 0x97, 0x04, 0xf4, 0x04, 0xf2, 0x04, 0x56, 0x05, 0x52, 0x05, + 0xbc, 0x05, 0xbb, 0x05, 0x2a, 0x06, 0x26, 0x06, 0x96, 0x06, 0x96, 0x06, + 0x01, 0x07, 0xfd, 0x06, 0x68, 0x07, 0x67, 0x07, 0xc8, 0x07, 0xc5, 0x07, + 0x1b, 0x08, 0x19, 0x08, 0x66, 0x08, 0x64, 0x08, 0x9d, 0x08, 0x9b, 0x08, + 0xc7, 0x08, 0xc4, 0x08, 0xda, 0x08, 0xda, 0x08, 0xdb, 0x08, 0xd8, 0x08, + 0xc6, 0x08, 0xc5, 0x08, 0x9a, 0x08, 0x96, 0x08, 0x55, 0x08, 0x54, 0x08, + 0xff, 0x07, 0xfb, 0x07, 0x8d, 0x07, 0x8a, 0x07, 0x09, 0x07, 0x07, 0x07, + 0x6e, 0x06, 0x6a, 0x06, 0xc4, 0x05, 0xc1, 0x05, 0x07, 0x05, 0x03, 0x05, + 0x3c, 0x04, 0x39, 0x04, 0x66, 0x03, 0x63, 0x03, 0x84, 0x02, 0x84, 0x02, + 0xa1, 0x01, 0x9f, 0x01, 0xba, 0x00, 0xb8, 0x00, 0xd0, 0xff, 0xce, 0xff, + 0xef, 0xfe, 0xec, 0xfe, 0x10, 0xfe, 0x0d, 0xfe, 0x3b, 0xfd, 0x39, 0xfd, + 0x70, 0xfc, 0x6f, 0xfc, 0xb8, 0xfb, 0xb5, 0xfb, 0x0d, 0xfb, 0x0b, 0xfb, + 0x75, 0xfa, 0x73, 0xfa, 0xf2, 0xf9, 0xee, 0xf9, 0x81, 0xf9, 0x81, 0xf9, + 0x29, 0xf9, 0x25, 0xf9, 0xe5, 0xf8, 0xe4, 0xf8, 0xbb, 0xf8, 0xb7, 0xf8, + 0xa5, 0xf8, 0xa3, 0xf8, 0xa2, 0xf8, 0xa1, 0xf8, 0xb6, 0xf8, 0xb2, 0xf8, + 0xd9, 0xf8, 0xd8, 0xf8, 0x10, 0xf9, 0x0e, 0xf9, 0x56, 0xf9, 0x54, 0xf9, + 0xa4, 0xf9, 0xa0, 0xf9, 0xfd, 0xf9, 0xfb, 0xf9, 0x5e, 0xfa, 0x5b, 0xfa, + 0xbf, 0xfa, 0xbd, 0xfa, 0x25, 0xfb, 0x21, 0xfb, 0x85, 0xfb, 0x84, 0xfb, + 0xe2, 0xfb, 0xe0, 0xfb, 0x35, 0xfc, 0x32, 0xfc, 0x81, 0xfc, 0x81, 0xfc, + 0xc0, 0xfc, 0xba, 0xfc, 0xed, 0xfc, 0xef, 0xfc, 0x0d, 0xfd, 0x0a, 0xfd, + 0x1a, 0xfd, 0x18, 0xfd, 0x16, 0xfd, 0x14, 0xfd, 0xfc, 0xfc, 0xf9, 0xfc, + 0xd3, 0xfc, 0xd2, 0xfc, 0x94, 0xfc, 0x91, 0xfc, 0x44, 0xfc, 0x41, 0xfc, + 0xe0, 0xfb, 0xdf, 0xfb, 0x6d, 0xfb, 0x6b, 0xfb, 0xef, 0xfa, 0xed, 0xfa, + 0x5f, 0xfa, 0x5d, 0xfa, 0xc9, 0xf9, 0xc7, 0xf9, 0x2c, 0xf9, 0x2a, 0xf9, + 0x88, 0xf8, 0x85, 0xf8, 0xe4, 0xf7, 0xe1, 0xf7, 0x3e, 0xf7, 0x3c, 0xf7, + 0x9e, 0xf6, 0x9c, 0xf6, 0x05, 0xf6, 0x01, 0xf6, 0x72, 0xf5, 0x71, 0xf5, + 0xef, 0xf4, 0xec, 0xf4, 0x78, 0xf4, 0x77, 0xf4, 0x12, 0xf4, 0x11, 0xf4, + 0xc1, 0xf3, 0xbd, 0xf3, 0x82, 0xf3, 0x82, 0xf3, 0x5b, 0xf3, 0x58, 0xf3, + 0x49, 0xf3, 0x49, 0xf3, 0x50, 0xf3, 0x4d, 0xf3, 0x6c, 0xf3, 0x6b, 0xf3, + 0xa2, 0xf3, 0xa0, 0xf3, 0xef, 0xf3, 0xeb, 0xf3, 0x51, 0xf4, 0x4e, 0xf4, + 0xc9, 0xf4, 0xc6, 0xf4, 0x52, 0xf5, 0x50, 0xf5, 0xed, 0xf5, 0xea, 0xf5, + 0x97, 0xf6, 0x94, 0xf6, 0x4c, 0xf7, 0x4a, 0xf7, 0x0a, 0xf8, 0x08, 0xf8, + 0xd1, 0xf8, 0xce, 0xf8, 0x96, 0xf9, 0x94, 0xf9, 0x60, 0xfa, 0x5f, 0xfa, + 0x23, 0xfb, 0x20, 0xfb, 0xe5, 0xfb, 0xe4, 0xfb, 0x9d, 0xfc, 0x9b, 0xfc, + 0x4b, 0xfd, 0x47, 0xfd, 0xeb, 0xfd, 0xe8, 0xfd, 0x78, 0xfe, 0x77, 0xfe, + 0xfb, 0xfe, 0xf7, 0xfe, 0x68, 0xff, 0x68, 0xff, 0xc0, 0xff, 0xbe, 0xff, + 0x09, 0x00, 0x07, 0x00, 0x3b, 0x00, 0x39, 0x00, 0x5a, 0x00, 0x57, 0x00, + 0x68, 0x00, 0x64, 0x00, 0x5f, 0x00, 0x5d, 0x00, 0x48, 0x00, 0x46, 0x00, + 0x21, 0x00, 0x1e, 0x00, 0xea, 0xff, 0xea, 0xff, 0xaf, 0xff, 0xaa, 0xff, + 0x63, 0xff, 0x63, 0xff, 0x17, 0xff, 0x13, 0xff, 0xc5, 0xfe, 0xc3, 0xfe, + 0x71, 0xfe, 0x70, 0xfe, 0x22, 0xfe, 0x1f, 0xfe, 0xd6, 0xfd, 0xd5, 0xfd, + 0x94, 0xfd, 0x91, 0xfd, 0x5a, 0xfd, 0x58, 0xfd, 0x2f, 0xfd, 0x2c, 0xfd, + 0x0e, 0xfd, 0x0d, 0xfd, 0x03, 0xfd, 0x02, 0xfd, 0x09, 0xfd, 0x08, 0xfd, + 0x22, 0xfd, 0x1f, 0xfd, 0x4e, 0xfd, 0x4e, 0xfd, 0x93, 0xfd, 0x90, 0xfd, + 0xe6, 0xfd, 0xe8, 0xfd, 0x57, 0xfe, 0x53, 0xfe, 0xd4, 0xfe, 0xd4, 0xfe, + 0x66, 0xff, 0x63, 0xff, 0x0a, 0x00, 0x07, 0x00, 0xb9, 0x00, 0xb8, 0x00, + 0x77, 0x01, 0x76, 0x01, 0x3f, 0x02, 0x3d, 0x02, 0x0e, 0x03, 0x0d, 0x03, + 0xe4, 0x03, 0xe3, 0x03, 0xba, 0x04, 0xb8, 0x04, 0x90, 0x05, 0x8e, 0x05, + 0x60, 0x06, 0x5f, 0x06, 0x2b, 0x07, 0x27, 0x07, 0xec, 0x07, 0xed, 0x07, + 0xa2, 0x08, 0x9d, 0x08, 0x46, 0x09, 0x47, 0x09, 0xdc, 0x09, 0xda, 0x09, + 0x5f, 0x0a, 0x5d, 0x0a, 0xcc, 0x0a, 0xcb, 0x0a, 0x23, 0x0b, 0x21, 0x0b, + 0x66, 0x0b, 0x65, 0x0b, 0x8c, 0x0b, 0x8b, 0x0b, 0xa4, 0x0b, 0xa3, 0x0b, + 0x9c, 0x0b, 0x9b, 0x0b, 0x85, 0x0b, 0x83, 0x0b, 0x54, 0x0b, 0x53, 0x0b, + 0x11, 0x0b, 0x11, 0x0b, 0xbf, 0x0a, 0xbb, 0x0a, 0x58, 0x0a, 0x59, 0x0a, + 0xe9, 0x09, 0xe5, 0x09, 0x68, 0x09, 0x69, 0x09, 0xe7, 0x08, 0xe3, 0x08, + 0x5a, 0x08, 0x59, 0x08, 0xcf, 0x07, 0xcd, 0x07, 0x42, 0x07, 0x41, 0x07, + 0xb8, 0x06, 0xb6, 0x06, 0x35, 0x06, 0x36, 0x06, 0xbb, 0x05, 0xb8, 0x05, + 0x4d, 0x05, 0x4c, 0x05, 0xeb, 0x04, 0xe7, 0x04, 0x93, 0x04, 0x94, 0x04, + 0x54, 0x04, 0x52, 0x04, 0x1e, 0x04, 0x1e, 0x04, 0x01, 0x04, 0xff, 0x03, + 0xf2, 0x03, 0xf0, 0x03, 0xf6, 0x03, 0xf7, 0x03, 0x0f, 0x04, 0x0c, 0x04, + 0x35, 0x04, 0x35, 0x04, 0x6f, 0x04, 0x6c, 0x04, 0xb4, 0x04, 0xb3, 0x04, + 0x0a, 0x05, 0x08, 0x05, 0x65, 0x05, 0x63, 0x05, 0xcc, 0x05, 0xcc, 0x05, + 0x36, 0x06, 0x35, 0x06, 0xa8, 0x06, 0xa7, 0x06, 0x19, 0x07, 0x17, 0x07, + 0x84, 0x07, 0x82, 0x07, 0xef, 0x07, 0xef, 0x07, 0x4f, 0x08, 0x4e, 0x08, + 0xa7, 0x08, 0xa5, 0x08, 0xf2, 0x08, 0xf1, 0x08, 0x2b, 0x09, 0x28, 0x09, + 0x57, 0x09, 0x59, 0x09, 0x6c, 0x09, 0x6a, 0x09, 0x71, 0x09, 0x6f, 0x09, + 0x5c, 0x09, 0x5b, 0x09, 0x36, 0x09, 0x34, 0x09, 0xf8, 0x08, 0xf6, 0x08, + 0x9f, 0x08, 0x9f, 0x08, 0x39, 0x08, 0x35, 0x08, 0xb6, 0x07, 0xb6, 0x07, + 0x24, 0x07, 0x24, 0x07, 0x80, 0x06, 0x7e, 0x06, 0xc9, 0x05, 0xc8, 0x05, + 0x08, 0x05, 0x08, 0x05, 0x3b, 0x04, 0x38, 0x04, 0x61, 0x03, 0x63, 0x03, + 0x89, 0x02, 0x86, 0x02, 0xa6, 0x01, 0xa7, 0x01, 0xcb, 0x00, 0xc8, 0x00, + 0xee, 0xff, 0xed, 0xff, 0x19, 0xff, 0x16, 0xff, 0x4b, 0xfe, 0x4c, 0xfe, + 0x8b, 0xfd, 0x89, 0xfd, 0xd7, 0xfc, 0xd6, 0xfc, 0x35, 0xfc, 0x32, 0xfc, + 0x9e, 0xfb, 0x9f, 0xfb, 0x23, 0xfb, 0x21, 0xfb, 0xb5, 0xfa, 0xb6, 0xfa, + 0x62, 0xfa, 0x5f, 0xfa, 0x1f, 0xfa, 0x1f, 0xfa, 0xf3, 0xf9, 0xf1, 0xf9, + 0xde, 0xf9, 0xde, 0xf9, 0xda, 0xf9, 0xd9, 0xf9, 0xed, 0xf9, 0xeb, 0xf9, + 0x0c, 0xfa, 0x0c, 0xfa, 0x3e, 0xfa, 0x3b, 0xfa, 0x7b, 0xfa, 0x7b, 0xfa, + 0xc2, 0xfa, 0xc2, 0xfa, 0x18, 0xfb, 0x15, 0xfb, 0x6a, 0xfb, 0x6b, 0xfb, + 0xc9, 0xfb, 0xc6, 0xfb, 0x1f, 0xfc, 0x21, 0xfc, 0x79, 0xfc, 0x77, 0xfc, + 0xcb, 0xfc, 0xcb, 0xfc, 0x14, 0xfd, 0x12, 0xfd, 0x55, 0xfd, 0x54, 0xfd, + 0x88, 0xfd, 0x85, 0xfd, 0xad, 0xfd, 0xae, 0xfd, 0xc2, 0xfd, 0xbf, 0xfd, + 0xc5, 0xfd, 0xc4, 0xfd, 0xb7, 0xfd, 0xb7, 0xfd, 0x95, 0xfd, 0x92, 0xfd, + 0x61, 0xfd, 0x62, 0xfd, 0x1b, 0xfd, 0x19, 0xfd, 0xc2, 0xfc, 0xc1, 0xfc, + 0x58, 0xfc, 0x58, 0xfc, 0xe2, 0xfb, 0xe0, 0xfb, 0x57, 0xfb, 0x58, 0xfb, + 0xca, 0xfa, 0xc6, 0xfa, 0x2d, 0xfa, 0x2b, 0xfa, 0x8b, 0xf9, 0x8b, 0xf9, + 0xe2, 0xf8, 0xe1, 0xf8, 0x3d, 0xf8, 0x3a, 0xf8, 0x93, 0xf7, 0x92, 0xf7, + 0xef, 0xf6, 0xee, 0xf6, 0x55, 0xf6, 0x53, 0xf6, 0xbd, 0xf5, 0xbc, 0xf5, + 0x39, 0xf5, 0x37, 0xf5, 0xbc, 0xf4, 0xbc, 0xf4, 0x55, 0xf4, 0x54, 0xf4, + 0xfe, 0xf3, 0xfc, 0xf3, 0xbb, 0xf3, 0xbc, 0xf3, 0x8d, 0xf3, 0x8c, 0xf3, + 0x79, 0xf3, 0x78, 0xf3, 0x76, 0xf3, 0x77, 0xf3, 0x8f, 0xf3, 0x8c, 0xf3, + 0xbd, 0xf3, 0xbc, 0xf3, 0xfe, 0xf3, 0xfc, 0xf3, 0x58, 0xf4, 0x57, 0xf4, + 0xc5, 0xf4, 0xc4, 0xf4, 0x42, 0xf5, 0x42, 0xf5, 0xd5, 0xf5, 0xd4, 0xf5, + 0x6d, 0xf6, 0x6e, 0xf6, 0x1a, 0xf7, 0x18, 0xf7, 0xc7, 0xf7, 0xc8, 0xf7, + 0x7e, 0xf8, 0x7d, 0xf8, 0x3a, 0xf9, 0x3a, 0xf9, 0xf1, 0xf9, 0xf3, 0xf9, + 0xac, 0xfa, 0xaa, 0xfa, 0x5c, 0xfb, 0x5c, 0xfb, 0x06, 0xfc, 0x05, 0xfc, + 0xa8, 0xfc, 0xa8, 0xfc, 0x38, 0xfd, 0x36, 0xfd, 0xbe, 0xfd, 0xbe, 0xfd, + 0x32, 0xfe, 0x30, 0xfe, 0x93, 0xfe, 0x93, 0xfe, 0xe6, 0xfe, 0xe5, 0xfe, + 0x22, 0xff, 0x22, 0xff, 0x4d, 0xff, 0x4c, 0xff, 0x66, 0xff, 0x66, 0xff, + 0x69, 0xff, 0x69, 0xff, 0x61, 0xff, 0x5f, 0xff, 0x41, 0xff, 0x42, 0xff, + 0x19, 0xff, 0x19, 0xff, 0xe3, 0xfe, 0xe3, 0xfe, 0xa3, 0xfe, 0xa2, 0xfe, + 0x5a, 0xfe, 0x5a, 0xfe, 0x0e, 0xfe, 0x0c, 0xfe, 0xbc, 0xfd, 0xbc, 0xfd, + 0x6c, 0xfd, 0x6b, 0xfd, 0x20, 0xfd, 0x1f, 0xfd, 0xd8, 0xfc, 0xd7, 0xfc, + 0x96, 0xfc, 0x97, 0xfc, 0x61, 0xfc, 0x61, 0xfc, 0x39, 0xfc, 0x38, 0xfc, + 0x20, 0xfc, 0x20, 0xfc, 0x18, 0xfc, 0x14, 0xfc, 0x1d, 0xfc, 0x1f, 0xfc, + 0x3b, 0xfc, 0x38, 0xfc, 0x69, 0xfc, 0x68, 0xfc, 0xb0, 0xfc, 0xb0, 0xfc, + 0x05, 0xfd, 0x03, 0xfd, 0x74, 0xfd, 0x74, 0xfd, 0xf2, 0xfd, 0xf0, 0xfd, + 0x85, 0xfe, 0x84, 0xfe, 0x25, 0xff, 0x23, 0xff, 0xd6, 0xff, 0xd4, 0xff, + 0x93, 0x00, 0x93, 0x00, 0x59, 0x01, 0x57, 0x01, 0x26, 0x02, 0x25, 0x02, + 0xfa, 0x02, 0xf7, 0x02, 0xcd, 0x03, 0xca, 0x03, 0x9e, 0x04, 0xa0, 0x04, + 0x70, 0x05, 0x6c, 0x05, 0x35, 0x06, 0x36, 0x06, 0xf9, 0x06, 0xf7, 0x06, + 0xa7, 0x07, 0xa6, 0x07, 0x4f, 0x08, 0x4e, 0x08, 0xe2, 0x08, 0xe0, 0x08, + 0x66, 0x09, 0x65, 0x09, 0xd3, 0x09, 0xd2, 0x09, 0x2e, 0x0a, 0x2c, 0x0a, + 0x71, 0x0a, 0x71, 0x0a, 0xa0, 0x0a, 0x9e, 0x0a, 0xb7, 0x0a, 0xb6, 0x0a, + 0xba, 0x0a, 0xb9, 0x0a, 0xa5, 0x0a, 0xa3, 0x0a, 0x80, 0x0a, 0x7e, 0x0a, + 0x42, 0x0a, 0x43, 0x0a, 0xfc, 0x09, 0xf8, 0x09, 0x9f, 0x09, 0xa0, 0x09, + 0x3a, 0x09, 0x38, 0x09, 0xca, 0x08, 0xc9, 0x08, 0x50, 0x08, 0x50, 0x08, + 0xd7, 0x07, 0xd3, 0x07, 0x53, 0x07, 0x55, 0x07, 0xd9, 0x06, 0xd7, 0x06, + 0x5d, 0x06, 0x5d, 0x06, 0xe9, 0x05, 0xe8, 0x05, 0x7d, 0x05, 0x7e, 0x05, + 0x1c, 0x05, 0x1a, 0x05, 0xc8, 0x04, 0xca, 0x04, 0x82, 0x04, 0x82, 0x04, + 0x4d, 0x04, 0x4e, 0x04, 0x25, 0x04, 0x24, 0x04, 0x14, 0x04, 0x13, 0x04, + 0x0f, 0x04, 0x10, 0x04, 0x1f, 0x04, 0x1e, 0x04, 0x41, 0x04, 0x40, 0x04, + 0x71, 0x04, 0x70, 0x04, 0xb2, 0x04, 0xb1, 0x04, 0xff, 0x04, 0xff, 0x04, + 0x59, 0x05, 0x58, 0x05, 0xbb, 0x05, 0xbc, 0x05, 0x28, 0x06, 0x27, 0x06, + 0x98, 0x06, 0x98, 0x06, 0x0c, 0x07, 0x0c, 0x07, 0x7f, 0x07, 0x7e, 0x07, + 0xf0, 0x07, 0xef, 0x07, 0x5a, 0x08, 0x5b, 0x08, 0xbd, 0x08, 0xbb, 0x08, + 0x17, 0x09, 0x17, 0x09, 0x62, 0x09, 0x60, 0x09, 0xa0, 0x09, 0xa1, 0x09, + 0xca, 0x09, 0xca, 0x09, 0xe4, 0x09, 0xe4, 0x09, 0xec, 0x09, 0xec, 0x09, + 0xda, 0x09, 0xd9, 0x09, 0xba, 0x09, 0xb8, 0x09, 0x7b, 0x09, 0x7c, 0x09, + 0x2e, 0x09, 0x2d, 0x09, 0xc8, 0x08, 0xc8, 0x08, 0x4e, 0x08, 0x4f, 0x08, + 0xc6, 0x07, 0xc3, 0x07, 0x26, 0x07, 0x28, 0x07, 0x7b, 0x06, 0x7a, 0x06, + 0xc0, 0x05, 0xc0, 0x05, 0xfc, 0x04, 0xfb, 0x04, 0x2e, 0x04, 0x2e, 0x04, + 0x5d, 0x03, 0x5c, 0x03, 0x86, 0x02, 0x88, 0x02, 0xb4, 0x01, 0xb2, 0x01, + 0xe1, 0x00, 0xe1, 0x00, 0x15, 0x00, 0x14, 0x00, 0x53, 0xff, 0x52, 0xff, + 0x9a, 0xfe, 0x98, 0xfe, 0xef, 0xfd, 0xf1, 0xfd, 0x53, 0xfd, 0x52, 0xfd, + 0xca, 0xfc, 0xc8, 0xfc, 0x4e, 0xfc, 0x4e, 0xfc, 0xea, 0xfb, 0xea, 0xfb, + 0x98, 0xfb, 0x96, 0xfb, 0x57, 0xfb, 0x58, 0xfb, 0x30, 0xfb, 0x2e, 0xfb, + 0x17, 0xfb, 0x19, 0xfb, 0x16, 0xfb, 0x14, 0xfb, 0x23, 0xfb, 0x23, 0xfb, + 0x41, 0xfb, 0x41, 0xfb, 0x6f, 0xfb, 0x6e, 0xfb, 0xa8, 0xfb, 0xa6, 0xfb, + 0xeb, 0xfb, 0xeb, 0xfb, 0x35, 0xfc, 0x34, 0xfc, 0x83, 0xfc, 0x83, 0xfc, + 0xd7, 0xfc, 0xd6, 0xfc, 0x26, 0xfd, 0x26, 0xfd, 0x77, 0xfd, 0x76, 0xfd, + 0xbd, 0xfd, 0xbd, 0xfd, 0xff, 0xfd, 0xfe, 0xfd, 0x35, 0xfe, 0x35, 0xfe, + 0x5e, 0xfe, 0x5d, 0xfe, 0x7a, 0xfe, 0x79, 0xfe, 0x86, 0xfe, 0x85, 0xfe, + 0x81, 0xfe, 0x7f, 0xfe, 0x68, 0xfe, 0x68, 0xfe, 0x40, 0xfe, 0x3f, 0xfe, + 0x05, 0xfe, 0x04, 0xfe, 0xb4, 0xfd, 0xb5, 0xfd, 0x5a, 0xfd, 0x59, 0xfd, + 0xe6, 0xfc, 0xe8, 0xfc, 0x6d, 0xfc, 0x68, 0xfc, 0xde, 0xfb, 0xe1, 0xfb, + 0x4b, 0xfb, 0x46, 0xfb, 0xaa, 0xfa, 0xac, 0xfa, 0x05, 0xfa, 0x02, 0xfa, + 0x5c, 0xf9, 0x5c, 0xf9, 0xb1, 0xf8, 0xb1, 0xf8, 0x07, 0xf8, 0x06, 0xf8, + 0x60, 0xf7, 0x62, 0xf7, 0xc3, 0xf6, 0xc0, 0xf6, 0x2b, 0xf6, 0x2c, 0xf6, + 0xa2, 0xf5, 0xa2, 0xf5, 0x26, 0xf5, 0x24, 0xf5, 0xbb, 0xf4, 0xba, 0xf4, + 0x60, 0xf4, 0x5f, 0xf4, 0x1a, 0xf4, 0x1b, 0xf4, 0xe7, 0xf3, 0xe7, 0xf3, + 0xca, 0xf3, 0xc9, 0xf3, 0xc5, 0xf3, 0xc4, 0xf3, 0xd4, 0xf3, 0xd5, 0xf3, + 0xfa, 0xf3, 0xf8, 0xf3, 0x34, 0xf4, 0x37, 0xf4, 0x85, 0xf4, 0x83, 0xf4, + 0xe4, 0xf4, 0xe7, 0xf4, 0x5c, 0xf5, 0x59, 0xf5, 0xdb, 0xf5, 0xdd, 0xf5, + 0x6e, 0xf6, 0x6c, 0xf6, 0x07, 0xf7, 0x08, 0xf7, 0xac, 0xf7, 0xab, 0xf7, + 0x53, 0xf8, 0x53, 0xf8, 0x00, 0xf9, 0xfe, 0xf8, 0xa8, 0xf9, 0xa8, 0xf9, + 0x53, 0xfa, 0x53, 0xfa, 0xf5, 0xfa, 0xf5, 0xfa, 0x91, 0xfb, 0x90, 0xfb, + 0x24, 0xfc, 0x22, 0xfc, 0xa9, 0xfc, 0xa8, 0xfc, 0x21, 0xfd, 0x1e, 0xfd, + 0x87, 0xfd, 0x87, 0xfd, 0xdf, 0xfd, 0xdd, 0xfd, 0x24, 0xfe, 0x23, 0xfe, + 0x58, 0xfe, 0x57, 0xfe, 0x79, 0xfe, 0x77, 0xfe, 0x8a, 0xfe, 0x8a, 0xfe, + 0x88, 0xfe, 0x87, 0xfe, 0x77, 0xfe, 0x77, 0xfe, 0x59, 0xfe, 0x58, 0xfe, + 0x2b, 0xfe, 0x28, 0xfe, 0xf3, 0xfd, 0xf2, 0xfd, 0xb0, 0xfd, 0xaf, 0xfd, + 0x68, 0xfd, 0x66, 0xfd, 0x1a, 0xfd, 0x19, 0xfd, 0xcc, 0xfc, 0xc9, 0xfc, + 0x7b, 0xfc, 0x7b, 0xfc, 0x32, 0xfc, 0x30, 0xfc, 0xea, 0xfb, 0xe9, 0xfb, + 0xaf, 0xfb, 0xae, 0xfb, 0x7d, 0xfb, 0x7a, 0xfb, 0x54, 0xfb, 0x54, 0xfb, + 0x3e, 0xfb, 0x3e, 0xfb, 0x36, 0xfb, 0x32, 0xfb, 0x41, 0xfb, 0x42, 0xfb, + 0x60, 0xfb, 0x5b, 0xfb, 0x8d, 0xfb, 0x8f, 0xfb, 0xd6, 0xfb, 0xd3, 0xfb, + 0x2c, 0xfc, 0x2d, 0xfc, 0x9a, 0xfc, 0x97, 0xfc, 0x19, 0xfd, 0x18, 0xfd, + 0xa7, 0xfd, 0xa6, 0xfd, 0x48, 0xfe, 0x47, 0xfe, 0xf6, 0xfe, 0xf4, 0xfe, + 0xad, 0xff, 0xac, 0xff, 0x74, 0x00, 0x71, 0x00, 0x3b, 0x01, 0x38, 0x01, + 0x0b, 0x02, 0x08, 0x02, 0xd9, 0x02, 0xda, 0x02, 0xa9, 0x03, 0xa7, 0x03, + 0x75, 0x04, 0x76, 0x04, 0x3a, 0x05, 0x38, 0x05, 0xf8, 0x05, 0xf5, 0x05, + 0xa5, 0x06, 0xa6, 0x06, 0x49, 0x07, 0x47, 0x07, 0xdb, 0x07, 0xda, 0x07, + 0x5c, 0x08, 0x5b, 0x08, 0xcb, 0x08, 0xcb, 0x08, 0x25, 0x09, 0x24, 0x09, + 0x69, 0x09, 0x6b, 0x09, 0x9c, 0x09, 0x99, 0x09, 0xb7, 0x09, 0xb6, 0x09, + 0xbe, 0x09, 0xbe, 0x09, 0xb1, 0x09, 0xaf, 0x09, 0x8f, 0x09, 0x90, 0x09, + 0x5e, 0x09, 0x5d, 0x09, 0x1a, 0x09, 0x1b, 0x09, 0xcd, 0x08, 0xcc, 0x08, + 0x6f, 0x08, 0x70, 0x08, 0x0d, 0x08, 0x0b, 0x08, 0x9e, 0x07, 0x9e, 0x07, + 0x31, 0x07, 0x2f, 0x07, 0xbe, 0x06, 0xbe, 0x06, 0x4e, 0x06, 0x4d, 0x06, + 0xe3, 0x05, 0xe2, 0x05, 0x7b, 0x05, 0x7a, 0x05, 0x1e, 0x05, 0x1e, 0x05, + 0xcc, 0x04, 0xcb, 0x04, 0x84, 0x04, 0x84, 0x04, 0x4b, 0x04, 0x4b, 0x04, + 0x23, 0x04, 0x21, 0x04, 0x08, 0x04, 0x0a, 0x04, 0x02, 0x04, 0x01, 0x04, + 0x09, 0x04, 0x0b, 0x04, 0x23, 0x04, 0x22, 0x04, 0x4f, 0x04, 0x4f, 0x04, + 0x86, 0x04, 0x86, 0x04, 0xce, 0x04, 0xce, 0x04, 0x23, 0x05, 0x22, 0x05, + 0x82, 0x05, 0x84, 0x05, 0xed, 0x05, 0xec, 0x05, 0x5c, 0x06, 0x5d, 0x06, + 0xd2, 0x06, 0xd3, 0x06, 0x48, 0x07, 0x48, 0x07, 0xc0, 0x07, 0xbe, 0x07, + 0x2f, 0x08, 0x30, 0x08, 0xa0, 0x08, 0xa0, 0x08, 0x06, 0x09, 0x05, 0x09, + 0x60, 0x09, 0x5e, 0x09, 0xae, 0x09, 0xad, 0x09, 0xeb, 0x09, 0xeb, 0x09, + 0x1e, 0x0a, 0x1b, 0x0a, 0x39, 0x0a, 0x38, 0x0a, 0x42, 0x0a, 0x3f, 0x0a, + 0x39, 0x0a, 0x38, 0x0a, 0x14, 0x0a, 0x14, 0x0a, 0xe4, 0x09, 0xe2, 0x09, + 0x97, 0x09, 0x96, 0x09, 0x3a, 0x09, 0x38, 0x09, 0xc8, 0x08, 0xc7, 0x08, + 0x43, 0x08, 0x42, 0x08, 0xb0, 0x07, 0xaf, 0x07, 0x0b, 0x07, 0x0a, 0x07, + 0x5c, 0x06, 0x5a, 0x06, 0xa1, 0x05, 0xa0, 0x05, 0xde, 0x04, 0xdd, 0x04, + 0x18, 0x04, 0x18, 0x04, 0x4b, 0x03, 0x49, 0x03, 0x83, 0x02, 0x84, 0x02, + 0xbb, 0x01, 0xba, 0x01, 0xfb, 0x00, 0xfa, 0x00, 0x43, 0x00, 0x40, 0x00, + 0x90, 0xff, 0x90, 0xff, 0xf3, 0xfe, 0xf2, 0xfe, 0x5d, 0xfe, 0x5d, 0xfe, + 0xdb, 0xfd, 0xdb, 0xfd, 0x6a, 0xfd, 0x68, 0xfd, 0x06, 0xfd, 0x05, 0xfd, + 0xbc, 0xfc, 0xbc, 0xfc, 0x81, 0xfc, 0x7e, 0xfc, 0x5a, 0xfc, 0x5a, 0xfc, + 0x45, 0xfc, 0x43, 0xfc, 0x42, 0xfc, 0x43, 0xfc, 0x52, 0xfc, 0x4f, 0xfc, + 0x6c, 0xfc, 0x6e, 0xfc, 0x98, 0xfc, 0x96, 0xfc, 0xcc, 0xfc, 0xcc, 0xfc, + 0x0b, 0xfd, 0x0a, 0xfd, 0x4f, 0xfd, 0x4f, 0xfd, 0x96, 0xfd, 0x97, 0xfd, + 0xe4, 0xfd, 0xe2, 0xfd, 0x2b, 0xfe, 0x2c, 0xfe, 0x74, 0xfe, 0x75, 0xfe, + 0xb3, 0xfe, 0xb1, 0xfe, 0xe9, 0xfe, 0xec, 0xfe, 0x1a, 0xff, 0x16, 0xff, + 0x39, 0xff, 0x3b, 0xff, 0x4d, 0xff, 0x4b, 0xff, 0x51, 0xff, 0x51, 0xff, + 0x40, 0xff, 0x3f, 0xff, 0x24, 0xff, 0x24, 0xff, 0xf3, 0xfe, 0xf3, 0xfe, + 0xb1, 0xfe, 0xb0, 0xfe, 0x60, 0xfe, 0x5f, 0xfe, 0xf9, 0xfd, 0xf8, 0xfd, + 0x87, 0xfd, 0x86, 0xfd, 0x02, 0xfd, 0x03, 0xfd, 0x77, 0xfc, 0x73, 0xfc, + 0xdc, 0xfb, 0xde, 0xfb, 0x3a, 0xfb, 0x38, 0xfb, 0x92, 0xfa, 0x91, 0xfa, + 0xe6, 0xf9, 0xe5, 0xf9, 0x3a, 0xf9, 0x3a, 0xf9, 0x8e, 0xf8, 0x8c, 0xf8, + 0xe6, 0xf7, 0xe6, 0xf7, 0x48, 0xf7, 0x46, 0xf7, 0xaf, 0xf6, 0xae, 0xf6, + 0x25, 0xf6, 0x24, 0xf6, 0xa5, 0xf5, 0xa3, 0xf5, 0x38, 0xf5, 0x38, 0xf5, + 0xdb, 0xf4, 0xda, 0xf4, 0x91, 0xf4, 0x8f, 0xf4, 0x5b, 0xf4, 0x5a, 0xf4, + 0x39, 0xf4, 0x37, 0xf4, 0x2e, 0xf4, 0x2c, 0xf4, 0x37, 0xf4, 0x36, 0xf4, + 0x56, 0xf4, 0x53, 0xf4, 0x89, 0xf4, 0x89, 0xf4, 0xce, 0xf4, 0xcc, 0xf4, + 0x27, 0xf5, 0x26, 0xf5, 0x8f, 0xf5, 0x8e, 0xf5, 0x06, 0xf6, 0x06, 0xf6, + 0x8c, 0xf6, 0x87, 0xf6, 0x18, 0xf7, 0x1a, 0xf7, 0xaf, 0xf7, 0xac, 0xf7, + 0x47, 0xf8, 0x48, 0xf8, 0xe6, 0xf8, 0xe3, 0xf8, 0x81, 0xf9, 0x82, 0xf9, + 0x1b, 0xfa, 0x1b, 0xfa, 0xb1, 0xfa, 0xb1, 0xfa, 0x3e, 0xfb, 0x3d, 0xfb, + 0xc2, 0xfb, 0xc1, 0xfb, 0x39, 0xfc, 0x38, 0xfc, 0xa2, 0xfc, 0xa1, 0xfc, + 0x01, 0xfd, 0xfe, 0xfc, 0x48, 0xfd, 0x48, 0xfd, 0x83, 0xfd, 0x83, 0xfd, + 0xae, 0xfd, 0xad, 0xfd, 0xc6, 0xfd, 0xc7, 0xfd, 0xcf, 0xfd, 0xce, 0xfd, + 0xc5, 0xfd, 0xc5, 0xfd, 0xb0, 0xfd, 0xae, 0xfd, 0x88, 0xfd, 0x8a, 0xfd, + 0x59, 0xfd, 0x58, 0xfd, 0x1d, 0xfd, 0x1c, 0xfd, 0xd8, 0xfc, 0xd7, 0xfc, + 0x8e, 0xfc, 0x8e, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0xf4, 0xfb, 0xf2, 0xfb, + 0xa0, 0xfb, 0xa2, 0xfb, 0x5a, 0xfb, 0x58, 0xfb, 0x13, 0xfb, 0x13, 0xfb, + 0xd7, 0xfa, 0xd6, 0xfa, 0xa8, 0xfa, 0xa8, 0xfa, 0x82, 0xfa, 0x82, 0xfa, + 0x6d, 0xfa, 0x6c, 0xfa, 0x69, 0xfa, 0x69, 0xfa, 0x73, 0xfa, 0x74, 0xfa, + 0x94, 0xfa, 0x92, 0xfa, 0xc3, 0xfa, 0xc3, 0xfa, 0x07, 0xfb, 0x07, 0xfb, + 0x61, 0xfb, 0x61, 0xfb, 0xca, 0xfb, 0xcb, 0xfb, 0x49, 0xfc, 0x48, 0xfc, + 0xd4, 0xfc, 0xd4, 0xfc, 0x73, 0xfd, 0x74, 0xfd, 0x1c, 0xfe, 0x1b, 0xfe, + 0xd2, 0xfe, 0xd2, 0xfe, 0x92, 0xff, 0x91, 0xff, 0x57, 0x00, 0x57, 0x00, + 0x21, 0x01, 0x22, 0x01, 0xeb, 0x01, 0xea, 0x01, 0xb7, 0x02, 0xb7, 0x02, + 0x7d, 0x03, 0x7d, 0x03, 0x3e, 0x04, 0x3e, 0x04, 0xf4, 0x04, 0xf4, 0x04, + 0xa0, 0x05, 0xa2, 0x05, 0x42, 0x06, 0x3f, 0x06, 0xd0, 0x06, 0xd3, 0x06, + 0x52, 0x07, 0x51, 0x07, 0xbe, 0x07, 0xbd, 0x07, 0x18, 0x08, 0x17, 0x08, + 0x5f, 0x08, 0x5e, 0x08, 0x91, 0x08, 0x92, 0x08, 0xae, 0x08, 0xae, 0x08, + 0xb9, 0x08, 0xb9, 0x08, 0xb0, 0x08, 0xb1, 0x08, 0x95, 0x08, 0x96, 0x08, + 0x6b, 0x08, 0x6c, 0x08, 0x33, 0x08, 0x31, 0x08, 0xeb, 0x07, 0xec, 0x07, + 0x99, 0x07, 0x99, 0x07, 0x3e, 0x07, 0x3f, 0x07, 0xde, 0x06, 0xe0, 0x06, + 0x7d, 0x06, 0x7c, 0x06, 0x17, 0x06, 0x17, 0x06, 0xb3, 0x05, 0xb2, 0x05, + 0x55, 0x05, 0x56, 0x05, 0xfa, 0x04, 0xf8, 0x04, 0xab, 0x04, 0xac, 0x04, + 0x64, 0x04, 0x64, 0x04, 0x2c, 0x04, 0x2a, 0x04, 0xff, 0x03, 0x00, 0x04, + 0xe1, 0x03, 0xe1, 0x03, 0xd6, 0x03, 0xd6, 0x03, 0xd6, 0x03, 0xd5, 0x03, + 0xec, 0x03, 0xec, 0x03, 0x0e, 0x04, 0x0c, 0x04, 0x41, 0x04, 0x42, 0x04, + 0x83, 0x04, 0x82, 0x04, 0xd1, 0x04, 0xd1, 0x04, 0x30, 0x05, 0x2d, 0x05, + 0x92, 0x05, 0x93, 0x05, 0x04, 0x06, 0x03, 0x06, 0x75, 0x06, 0x75, 0x06, + 0xef, 0x06, 0xef, 0x06, 0x68, 0x07, 0x67, 0x07, 0xe2, 0x07, 0xe1, 0x07, + 0x59, 0x08, 0x57, 0x08, 0xc7, 0x08, 0xc7, 0x08, 0x32, 0x09, 0x31, 0x09, + 0x8d, 0x09, 0x8b, 0x09, 0xde, 0x09, 0xde, 0x09, 0x21, 0x0a, 0x1f, 0x0a, + 0x51, 0x0a, 0x51, 0x0a, 0x71, 0x0a, 0x71, 0x0a, 0x7f, 0x0a, 0x7e, 0x0a, + 0x77, 0x0a, 0x77, 0x0a, 0x5f, 0x0a, 0x5d, 0x0a, 0x2c, 0x0a, 0x2c, 0x0a, + 0xea, 0x09, 0xe8, 0x09, 0x91, 0x09, 0x92, 0x09, 0x28, 0x09, 0x28, 0x09, + 0xae, 0x08, 0xab, 0x08, 0x1f, 0x08, 0x21, 0x08, 0x88, 0x07, 0x85, 0x07, + 0xe0, 0x06, 0xe2, 0x06, 0x32, 0x06, 0x30, 0x06, 0x79, 0x05, 0x7a, 0x05, + 0xbc, 0x04, 0xbc, 0x04, 0xff, 0x03, 0xfe, 0x03, 0x40, 0x03, 0x41, 0x03, + 0x84, 0x02, 0x84, 0x02, 0xd1, 0x01, 0xd2, 0x01, 0x22, 0x01, 0x21, 0x01, + 0x7e, 0x00, 0x7e, 0x00, 0xe6, 0xff, 0xe5, 0xff, 0x5b, 0xff, 0x5b, 0xff, + 0xe0, 0xfe, 0xe0, 0xfe, 0x76, 0xfe, 0x77, 0xfe, 0x1d, 0xfe, 0x1d, 0xfe, + 0xd4, 0xfd, 0xd5, 0xfd, 0xa0, 0xfd, 0x9e, 0xfd, 0x7c, 0xfd, 0x7f, 0xfd, + 0x6a, 0xfd, 0x66, 0xfd, 0x69, 0xfd, 0x6a, 0xfd, 0x75, 0xfd, 0x76, 0xfd, + 0x92, 0xfd, 0x91, 0xfd, 0xbb, 0xfd, 0xba, 0xfd, 0xeb, 0xfd, 0xeb, 0xfd, + 0x26, 0xfe, 0x26, 0xfe, 0x65, 0xfe, 0x65, 0xfe, 0xaa, 0xfe, 0xab, 0xfe, + 0xee, 0xfe, 0xee, 0xfe, 0x2f, 0xff, 0x30, 0xff, 0x72, 0xff, 0x71, 0xff, + 0xa9, 0xff, 0xa8, 0xff, 0xd9, 0xff, 0xdb, 0xff, 0x02, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x26, 0x00, 0x27, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x11, 0x00, 0x11, 0x00, 0xe8, 0xff, 0xe9, 0xff, 0xb3, 0xff, 0xb3, 0xff, + 0x6e, 0xff, 0x6e, 0xff, 0x12, 0xff, 0x13, 0xff, 0xae, 0xfe, 0xad, 0xfe, + 0x34, 0xfe, 0x36, 0xfe, 0xaf, 0xfd, 0xb0, 0xfd, 0x20, 0xfd, 0x21, 0xfd, + 0x82, 0xfc, 0x83, 0xfc, 0xe2, 0xfb, 0xe2, 0xfb, 0x37, 0xfb, 0x36, 0xfb, + 0x8b, 0xfa, 0x8e, 0xfa, 0xde, 0xf9, 0xdd, 0xf9, 0x31, 0xf9, 0x33, 0xf9, + 0x8b, 0xf8, 0x8a, 0xf8, 0xe9, 0xf7, 0xe9, 0xf7, 0x51, 0xf7, 0x53, 0xf7, + 0xc5, 0xf6, 0xc4, 0xf6, 0x46, 0xf6, 0x46, 0xf6, 0xd5, 0xf5, 0xd4, 0xf5, + 0x75, 0xf5, 0x77, 0xf5, 0x29, 0xf5, 0x29, 0xf5, 0xee, 0xf4, 0xee, 0xf4, + 0xc7, 0xf4, 0xc9, 0xf4, 0xb7, 0xf4, 0xb6, 0xf4, 0xb6, 0xf4, 0xb9, 0xf4, + 0xd1, 0xf4, 0xd1, 0xf4, 0xf7, 0xf4, 0xf9, 0xf4, 0x38, 0xf5, 0x39, 0xf5, + 0x84, 0xf5, 0x85, 0xf5, 0xe2, 0xf5, 0xe4, 0xf5, 0x4f, 0xf6, 0x4e, 0xf6, + 0xc4, 0xf6, 0xc5, 0xf6, 0x46, 0xf7, 0x47, 0xf7, 0xcc, 0xf7, 0xcc, 0xf7, + 0x59, 0xf8, 0x5a, 0xf8, 0xe8, 0xf8, 0xe8, 0xf8, 0x76, 0xf9, 0x77, 0xf9, + 0x04, 0xfa, 0x03, 0xfa, 0x87, 0xfa, 0x89, 0xfa, 0x06, 0xfb, 0x07, 0xfb, + 0x7b, 0xfb, 0x7c, 0xfb, 0xe6, 0xfb, 0xe6, 0xfb, 0x42, 0xfc, 0x42, 0xfc, + 0x92, 0xfc, 0x93, 0xfc, 0xd1, 0xfc, 0xd0, 0xfc, 0x01, 0xfd, 0x02, 0xfd, + 0x22, 0xfd, 0x22, 0xfd, 0x30, 0xfd, 0x31, 0xfd, 0x32, 0xfd, 0x32, 0xfd, + 0x22, 0xfd, 0x22, 0xfd, 0x04, 0xfd, 0x04, 0xfd, 0xdb, 0xfc, 0xdc, 0xfc, + 0xa5, 0xfc, 0xa5, 0xfc, 0x66, 0xfc, 0x67, 0xfc, 0x1f, 0xfc, 0x1f, 0xfc, + 0xd5, 0xfb, 0xd4, 0xfb, 0x84, 0xfb, 0x85, 0xfb, 0x38, 0xfb, 0x37, 0xfb, + 0xe7, 0xfa, 0xe9, 0xfa, 0x9f, 0xfa, 0x9e, 0xfa, 0x5a, 0xfa, 0x5c, 0xfa, + 0x1f, 0xfa, 0x1e, 0xfa, 0xf1, 0xf9, 0xf1, 0xf9, 0xca, 0xf9, 0xcb, 0xf9, + 0xb7, 0xf9, 0xb7, 0xf9, 0xb3, 0xf9, 0xb3, 0xf9, 0xbb, 0xf9, 0xbc, 0xf9, + 0xdc, 0xf9, 0xdc, 0xf9, 0x09, 0xfa, 0x0b, 0xfa, 0x51, 0xfa, 0x4e, 0xfa, + 0xa3, 0xfa, 0xa5, 0xfa, 0x0b, 0xfb, 0x0a, 0xfb, 0x87, 0xfb, 0x87, 0xfb, + 0x0d, 0xfc, 0x0e, 0xfc, 0xa8, 0xfc, 0xa7, 0xfc, 0x4c, 0xfd, 0x4d, 0xfd, + 0xfc, 0xfd, 0xfa, 0xfd, 0xb5, 0xfe, 0xb6, 0xfe, 0x76, 0xff, 0x76, 0xff, + 0x38, 0x00, 0x38, 0x00, 0xff, 0x00, 0xff, 0x00, 0xc0, 0x01, 0xc2, 0x01, + 0x83, 0x02, 0x83, 0x02, 0x3d, 0x03, 0x3d, 0x03, 0xf0, 0x03, 0xf1, 0x03, + 0x97, 0x04, 0x96, 0x04, 0x32, 0x05, 0x33, 0x05, 0xbf, 0x05, 0xbf, 0x05, + 0x3c, 0x06, 0x3c, 0x06, 0xa7, 0x06, 0xa8, 0x06, 0x00, 0x07, 0x00, 0x07, + 0x48, 0x07, 0x47, 0x07, 0x79, 0x07, 0x79, 0x07, 0x9d, 0x07, 0x9c, 0x07, + 0xa8, 0x07, 0xa8, 0x07, 0xa6, 0x07, 0xa7, 0x07, 0x91, 0x07, 0x90, 0x07, + 0x6d, 0x07, 0x6d, 0x07, 0x39, 0x07, 0x38, 0x07, 0xf9, 0x06, 0xfb, 0x06, + 0xb5, 0x06, 0xb5, 0x06, 0x63, 0x06, 0x64, 0x06, 0x0e, 0x06, 0x0f, 0x06, + 0xb6, 0x05, 0xb6, 0x05, 0x5c, 0x05, 0x5d, 0x05, 0x06, 0x05, 0x06, 0x05, + 0xb2, 0x04, 0xb3, 0x04, 0x66, 0x04, 0x67, 0x04, 0x22, 0x04, 0x22, 0x04, + 0xe7, 0x03, 0xe8, 0x03, 0xbb, 0x03, 0xbb, 0x03, 0x99, 0x03, 0x9a, 0x03, + 0x87, 0x03, 0x89, 0x03, 0x84, 0x03, 0x83, 0x03, 0x90, 0x03, 0x92, 0x03, + 0xad, 0x03, 0xad, 0x03, 0xd8, 0x03, 0xd9, 0x03, 0x14, 0x04, 0x14, 0x04, + 0x5c, 0x04, 0x5a, 0x04, 0xb0, 0x04, 0xb1, 0x04, 0x14, 0x05, 0x13, 0x05, + 0x7c, 0x05, 0x7e, 0x05, 0xef, 0x05, 0xef, 0x05, 0x68, 0x06, 0x69, 0x06, + 0xe3, 0x06, 0xe4, 0x06, 0x60, 0x07, 0x62, 0x07, 0xde, 0x07, 0xde, 0x07, + 0x55, 0x08, 0x55, 0x08, 0xc6, 0x08, 0xc9, 0x08, 0x33, 0x09, 0x33, 0x09, + 0x8e, 0x09, 0x90, 0x09, 0xe6, 0x09, 0xe6, 0x09, 0x29, 0x0a, 0x29, 0x0a, + 0x5d, 0x0a, 0x5e, 0x0a, 0x83, 0x0a, 0x84, 0x0a, 0x92, 0x0a, 0x93, 0x0a, + 0x94, 0x0a, 0x94, 0x0a, 0x7c, 0x0a, 0x7d, 0x0a, 0x52, 0x0a, 0x53, 0x0a, + 0x18, 0x0a, 0x18, 0x0a, 0xc5, 0x09, 0xc8, 0x09, 0x68, 0x09, 0x67, 0x09, + 0xf1, 0x08, 0xf2, 0x08, 0x70, 0x08, 0x72, 0x08, 0xe2, 0x07, 0xe3, 0x07, + 0x48, 0x07, 0x49, 0x07, 0xa3, 0x06, 0xa4, 0x06, 0xf8, 0x05, 0xf9, 0x05, + 0x48, 0x05, 0x48, 0x05, 0x95, 0x04, 0x96, 0x04, 0xe4, 0x03, 0xe3, 0x03, + 0x33, 0x03, 0x35, 0x03, 0x8b, 0x02, 0x8a, 0x02, 0xe7, 0x01, 0xe7, 0x01, + 0x4e, 0x01, 0x50, 0x01, 0xc1, 0x00, 0xc2, 0x00, 0x40, 0x00, 0x42, 0x00, + 0xce, 0xff, 0xce, 0xff, 0x6b, 0xff, 0x6d, 0xff, 0x19, 0xff, 0x18, 0xff, + 0xd9, 0xfe, 0xda, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, 0x88, 0xfe, 0x88, 0xfe, + 0x79, 0xfe, 0x7b, 0xfe, 0x78, 0xfe, 0x78, 0xfe, 0x89, 0xfe, 0x87, 0xfe, + 0xa1, 0xfe, 0xa3, 0xfe, 0xc9, 0xfe, 0xc8, 0xfe, 0xf8, 0xfe, 0xfa, 0xfe, + 0x2d, 0xff, 0x2e, 0xff, 0x6a, 0xff, 0x6b, 0xff, 0xab, 0xff, 0xaa, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0x27, 0x00, 0x27, 0x00, 0x60, 0x00, 0x61, 0x00, + 0x95, 0x00, 0x95, 0x00, 0xbf, 0x00, 0xbf, 0x00, 0xdd, 0x00, 0xdd, 0x00, + 0xf5, 0x00, 0xf5, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0xf2, 0x00, 0xf1, 0x00, + 0xd7, 0x00, 0xd8, 0x00, 0xae, 0x00, 0xae, 0x00, 0x74, 0x00, 0x74, 0x00, + 0x28, 0x00, 0x28, 0x00, 0xcd, 0xff, 0xce, 0xff, 0x62, 0xff, 0x62, 0xff, + 0xe9, 0xfe, 0xea, 0xfe, 0x64, 0xfe, 0x63, 0xfe, 0xd0, 0xfd, 0xd1, 0xfd, + 0x37, 0xfd, 0x36, 0xfd, 0x91, 0xfc, 0x93, 0xfc, 0xe9, 0xfb, 0xea, 0xfb, + 0x3d, 0xfb, 0x3d, 0xfb, 0x8e, 0xfa, 0x8f, 0xfa, 0xe6, 0xf9, 0xe6, 0xf9, + 0x3c, 0xf9, 0x3d, 0xf9, 0x9d, 0xf8, 0x9e, 0xf8, 0x03, 0xf8, 0x02, 0xf8, + 0x77, 0xf7, 0x78, 0xf7, 0xf7, 0xf6, 0xf7, 0xf6, 0x82, 0xf6, 0x84, 0xf6, + 0x25, 0xf6, 0x25, 0xf6, 0xd2, 0xf5, 0xd3, 0xf5, 0x97, 0xf5, 0x98, 0xf5, + 0x6b, 0xf5, 0x6c, 0xf5, 0x54, 0xf5, 0x54, 0xf5, 0x54, 0xf5, 0x55, 0xf5, + 0x5f, 0xf5, 0x60, 0xf5, 0x85, 0xf5, 0x87, 0xf5, 0xb7, 0xf5, 0xb6, 0xf5, + 0xfb, 0xf5, 0xfc, 0xf5, 0x4e, 0xf6, 0x50, 0xf6, 0xaf, 0xf6, 0xaf, 0xf6, + 0x1b, 0xf7, 0x1b, 0xf7, 0x8e, 0xf7, 0x8e, 0xf7, 0x07, 0xf8, 0x09, 0xf8, + 0x88, 0xf8, 0x88, 0xf8, 0x07, 0xf9, 0x06, 0xf9, 0x89, 0xf9, 0x8a, 0xf9, + 0x06, 0xfa, 0x05, 0xfa, 0x7d, 0xfa, 0x7c, 0xfa, 0xee, 0xfa, 0xef, 0xfa, + 0x55, 0xfb, 0x54, 0xfb, 0xb3, 0xfb, 0xb5, 0xfb, 0x02, 0xfc, 0x02, 0xfc, + 0x46, 0xfc, 0x45, 0xfc, 0x79, 0xfc, 0x79, 0xfc, 0x9e, 0xfc, 0x9e, 0xfc, + 0xb4, 0xfc, 0xb4, 0xfc, 0xbb, 0xfc, 0xbd, 0xfc, 0xb3, 0xfc, 0xb2, 0xfc, + 0x9c, 0xfc, 0x9c, 0xfc, 0x7b, 0xfc, 0x7b, 0xfc, 0x48, 0xfc, 0x48, 0xfc, + 0x12, 0xfc, 0x12, 0xfc, 0xce, 0xfb, 0xcb, 0xfb, 0x82, 0xfb, 0x85, 0xfb, + 0x37, 0xfb, 0x36, 0xfb, 0xe6, 0xfa, 0xe5, 0xfa, 0x95, 0xfa, 0x97, 0xfa, + 0x46, 0xfa, 0x43, 0xfa, 0xfd, 0xf9, 0xfd, 0xf9, 0xb8, 0xf9, 0xb7, 0xf9, + 0x7d, 0xf9, 0x7e, 0xf9, 0x4e, 0xf9, 0x4e, 0xf9, 0x2a, 0xf9, 0x29, 0xf9, + 0x17, 0xf9, 0x17, 0xf9, 0x0d, 0xf9, 0x0f, 0xf9, 0x1b, 0xf9, 0x1b, 0xf9, + 0x37, 0xf9, 0x38, 0xf9, 0x63, 0xf9, 0x64, 0xf9, 0xa8, 0xf9, 0xa6, 0xf9, + 0xf8, 0xf9, 0xf9, 0xf9, 0x5e, 0xfa, 0x5d, 0xfa, 0xd2, 0xfa, 0xd3, 0xfa, + 0x58, 0xfb, 0x56, 0xfb, 0xeb, 0xfb, 0xeb, 0xfb, 0x88, 0xfc, 0x8a, 0xfc, + 0x36, 0xfd, 0x34, 0xfd, 0xe5, 0xfd, 0xe6, 0xfd, 0xa1, 0xfe, 0xa1, 0xfe, + 0x5c, 0xff, 0x5d, 0xff, 0x1c, 0x00, 0x1b, 0x00, 0xd9, 0x00, 0xda, 0x00, + 0x92, 0x01, 0x92, 0x01, 0x48, 0x02, 0x47, 0x02, 0xf2, 0x02, 0xf2, 0x02, + 0x95, 0x03, 0x95, 0x03, 0x2a, 0x04, 0x2b, 0x04, 0xb4, 0x04, 0xb1, 0x04, + 0x2d, 0x05, 0x2d, 0x05, 0x95, 0x05, 0x96, 0x05, 0xee, 0x05, 0xeb, 0x05, + 0x30, 0x06, 0x30, 0x06, 0x65, 0x06, 0x65, 0x06, 0x86, 0x06, 0x87, 0x06, + 0x97, 0x06, 0x96, 0x06, 0x95, 0x06, 0x96, 0x06, 0x85, 0x06, 0x85, 0x06, + 0x66, 0x06, 0x66, 0x06, 0x3b, 0x06, 0x3c, 0x06, 0x03, 0x06, 0x02, 0x06, + 0xc3, 0x05, 0xc6, 0x05, 0x7c, 0x05, 0x7b, 0x05, 0x31, 0x05, 0x32, 0x05, + 0xe4, 0x04, 0xe3, 0x04, 0x92, 0x04, 0x93, 0x04, 0x49, 0x04, 0x4a, 0x04, + 0xff, 0x03, 0xff, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0x86, 0x03, 0x87, 0x03, + 0x55, 0x03, 0x56, 0x03, 0x36, 0x03, 0x36, 0x03, 0x1c, 0x03, 0x1d, 0x03, + 0x18, 0x03, 0x18, 0x03, 0x1c, 0x03, 0x1e, 0x03, 0x32, 0x03, 0x32, 0x03, + 0x57, 0x03, 0x59, 0x03, 0x8b, 0x03, 0x8c, 0x03, 0xcf, 0x03, 0xce, 0x03, + 0x1d, 0x04, 0x20, 0x04, 0x79, 0x04, 0x78, 0x04, 0xe0, 0x04, 0xe2, 0x04, + 0x52, 0x05, 0x51, 0x05, 0xc6, 0x05, 0xc7, 0x05, 0x47, 0x06, 0x45, 0x06, + 0xc2, 0x06, 0xc3, 0x06, 0x44, 0x07, 0x42, 0x07, 0xc3, 0x07, 0xc2, 0x07, + 0x3b, 0x08, 0x3c, 0x08, 0xb4, 0x08, 0xb3, 0x08, 0x1c, 0x09, 0x1f, 0x09, + 0x81, 0x09, 0x80, 0x09, 0xd8, 0x09, 0xd7, 0x09, 0x1b, 0x0a, 0x1d, 0x0a, + 0x58, 0x0a, 0x56, 0x0a, 0x7d, 0x0a, 0x7f, 0x0a, 0x93, 0x0a, 0x92, 0x0a, + 0x96, 0x0a, 0x97, 0x0a, 0x86, 0x0a, 0x85, 0x0a, 0x63, 0x0a, 0x65, 0x0a, + 0x2d, 0x0a, 0x2c, 0x0a, 0xe5, 0x09, 0xe8, 0x09, 0x8c, 0x09, 0x8a, 0x09, + 0x22, 0x09, 0x24, 0x09, 0xab, 0x08, 0xa9, 0x08, 0x25, 0x08, 0x25, 0x08, + 0x96, 0x07, 0x97, 0x07, 0xfb, 0x06, 0xfc, 0x06, 0x5d, 0x06, 0x5d, 0x06, + 0xb7, 0x05, 0xb7, 0x05, 0x14, 0x05, 0x13, 0x05, 0x6d, 0x04, 0x6c, 0x04, + 0xca, 0x03, 0xc9, 0x03, 0x2d, 0x03, 0x2c, 0x03, 0x94, 0x02, 0x93, 0x02, + 0x09, 0x02, 0x0a, 0x02, 0x84, 0x01, 0x83, 0x01, 0x11, 0x01, 0x0f, 0x01, + 0xa6, 0x00, 0xa6, 0x00, 0x4d, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x03, 0x00, + 0xc7, 0xff, 0xc8, 0xff, 0x9f, 0xff, 0x9d, 0xff, 0x82, 0xff, 0x84, 0xff, + 0x7a, 0xff, 0x78, 0xff, 0x7c, 0xff, 0x7e, 0xff, 0x8c, 0xff, 0x8b, 0xff, + 0xa9, 0xff, 0xaa, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x32, 0x00, 0x31, 0x00, 0x6c, 0x00, 0x6f, 0x00, 0xa8, 0x00, 0xa9, 0x00, + 0xe3, 0x00, 0xe5, 0x00, 0x1e, 0x01, 0x1d, 0x01, 0x51, 0x01, 0x52, 0x01, + 0x7f, 0x01, 0x80, 0x01, 0xa6, 0x01, 0xa8, 0x01, 0xc1, 0x01, 0xc0, 0x01, + 0xd2, 0x01, 0xd3, 0x01, 0xd0, 0x01, 0xd1, 0x01, 0xc5, 0x01, 0xc4, 0x01, + 0xa6, 0x01, 0xa7, 0x01, 0x7a, 0x01, 0x7a, 0x01, 0x3c, 0x01, 0x3b, 0x01, + 0xeb, 0x00, 0xed, 0x00, 0x92, 0x00, 0x8f, 0x00, 0x20, 0x00, 0x24, 0x00, + 0xa9, 0xff, 0xa5, 0xff, 0x1e, 0xff, 0x20, 0xff, 0x8d, 0xfe, 0x8c, 0xfe, + 0xf2, 0xfd, 0xf1, 0xfd, 0x4e, 0xfd, 0x4d, 0xfd, 0xa4, 0xfc, 0xa4, 0xfc, + 0xfb, 0xfb, 0xf9, 0xfb, 0x4d, 0xfb, 0x4e, 0xfb, 0xa4, 0xfa, 0xa2, 0xfa, + 0xfd, 0xf9, 0xfe, 0xf9, 0x5c, 0xf9, 0x5d, 0xf9, 0xc5, 0xf8, 0xc3, 0xf8, + 0x38, 0xf8, 0x39, 0xf8, 0xb8, 0xf7, 0xb7, 0xf7, 0x47, 0xf7, 0x46, 0xf7, + 0xe3, 0xf6, 0xe4, 0xf6, 0x91, 0xf6, 0x91, 0xf6, 0x52, 0xf6, 0x52, 0xf6, + 0x24, 0xf6, 0x25, 0xf6, 0x0a, 0xf6, 0x09, 0xf6, 0xff, 0xf5, 0x02, 0xf6, + 0x0d, 0xf6, 0x0a, 0xf6, 0x25, 0xf6, 0x29, 0xf6, 0x55, 0xf6, 0x53, 0xf6, + 0x8e, 0xf6, 0x8f, 0xf6, 0xda, 0xf6, 0xda, 0xf6, 0x2f, 0xf7, 0x2f, 0xf7, + 0x8d, 0xf7, 0x8f, 0xf7, 0xf8, 0xf7, 0xf7, 0xf7, 0x64, 0xf8, 0x64, 0xf8, + 0xd7, 0xf8, 0xd6, 0xf8, 0x4a, 0xf9, 0x4c, 0xf9, 0xbc, 0xf9, 0xbc, 0xf9, + 0x2e, 0xfa, 0x2e, 0xfa, 0x96, 0xfa, 0x97, 0xfa, 0xfa, 0xfa, 0xf8, 0xfa, + 0x55, 0xfb, 0x55, 0xfb, 0xa2, 0xfb, 0xa1, 0xfb, 0xe9, 0xfb, 0xe9, 0xfb, + 0x1e, 0xfc, 0x1c, 0xfc, 0x48, 0xfc, 0x47, 0xfc, 0x62, 0xfc, 0x60, 0xfc, + 0x6b, 0xfc, 0x6c, 0xfc, 0x6c, 0xfc, 0x6a, 0xfc, 0x56, 0xfc, 0x55, 0xfc, + 0x3b, 0xfc, 0x3b, 0xfc, 0x0d, 0xfc, 0x0c, 0xfc, 0xd8, 0xfb, 0xd8, 0xfb, + 0x9b, 0xfb, 0x9a, 0xfb, 0x50, 0xfb, 0x4f, 0xfb, 0x07, 0xfb, 0x06, 0xfb, + 0xb1, 0xfa, 0xb2, 0xfa, 0x61, 0xfa, 0x60, 0xfa, 0x0f, 0xfa, 0x0c, 0xfa, + 0xbd, 0xf9, 0xbe, 0xf9, 0x74, 0xf9, 0x6f, 0xf9, 0x2c, 0xf9, 0x2f, 0xf9, + 0xf4, 0xf8, 0xf1, 0xf8, 0xc2, 0xf8, 0xc0, 0xf8, 0x9b, 0xf8, 0x9b, 0xf8, + 0x88, 0xf8, 0x87, 0xf8, 0x80, 0xf8, 0x7e, 0xf8, 0x8a, 0xf8, 0x8c, 0xf8, + 0xa7, 0xf8, 0xa4, 0xf8, 0xd2, 0xf8, 0xd1, 0xf8, 0x11, 0xf9, 0x11, 0xf9, + 0x60, 0xf9, 0x5d, 0xf9, 0xc2, 0xf9, 0xc1, 0xf9, 0x31, 0xfa, 0x31, 0xfa, + 0xb2, 0xfa, 0xb0, 0xfa, 0x3e, 0xfb, 0x40, 0xfb, 0xda, 0xfb, 0xd7, 0xfb, + 0x7b, 0xfc, 0x7d, 0xfc, 0x2b, 0xfd, 0x29, 0xfd, 0xda, 0xfd, 0xdb, 0xfd, + 0x90, 0xfe, 0x8f, 0xfe, 0x48, 0xff, 0x47, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xb1, 0x00, 0xb2, 0x00, 0x5d, 0x01, 0x5e, 0x01, 0x02, 0x02, 0x02, 0x02, + 0x9e, 0x02, 0x9e, 0x02, 0x2c, 0x03, 0x2d, 0x03, 0xb0, 0x03, 0xaf, 0x03, + 0x23, 0x04, 0x25, 0x04, 0x8a, 0x04, 0x8a, 0x04, 0xdc, 0x04, 0xdd, 0x04, + 0x1f, 0x05, 0x23, 0x05, 0x55, 0x05, 0x52, 0x05, 0x71, 0x05, 0x74, 0x05, + 0x85, 0x05, 0x84, 0x05, 0x83, 0x05, 0x84, 0x05, 0x77, 0x05, 0x76, 0x05, + 0x5c, 0x05, 0x5c, 0x05, 0x31, 0x05, 0x33, 0x05, 0x03, 0x05, 0x04, 0x05, + 0xc8, 0x04, 0xc8, 0x04, 0x89, 0x04, 0x8a, 0x04, 0x45, 0x04, 0x45, 0x04, + 0xfe, 0x03, 0xfe, 0x03, 0xba, 0x03, 0xbd, 0x03, 0x78, 0x03, 0x77, 0x03, + 0x3a, 0x03, 0x3a, 0x03, 0x00, 0x03, 0x03, 0x03, 0xd5, 0x02, 0xd3, 0x02, + 0xae, 0x02, 0xaf, 0x02, 0x96, 0x02, 0x96, 0x02, 0x8b, 0x02, 0x8a, 0x02, + 0x8b, 0x02, 0x8c, 0x02, 0x9e, 0x02, 0x9d, 0x02, 0xbb, 0x02, 0xbc, 0x02, + 0xea, 0x02, 0xe8, 0x02, 0x23, 0x03, 0x24, 0x03, 0x6e, 0x03, 0x6e, 0x03, + 0xc3, 0x03, 0xc4, 0x03, 0x26, 0x04, 0x26, 0x04, 0x92, 0x04, 0x92, 0x04, + 0x08, 0x05, 0x06, 0x05, 0x81, 0x05, 0x84, 0x05, 0x04, 0x06, 0x02, 0x06, + 0x85, 0x06, 0x86, 0x06, 0x0a, 0x07, 0x09, 0x07, 0x88, 0x07, 0x88, 0x07, + 0x0a, 0x08, 0x0a, 0x08, 0x7c, 0x08, 0x7d, 0x08, 0xef, 0x08, 0xee, 0x08, + 0x53, 0x09, 0x52, 0x09, 0xab, 0x09, 0xaa, 0x09, 0xf7, 0x09, 0xf6, 0x09, + 0x30, 0x0a, 0x31, 0x0a, 0x5c, 0x0a, 0x5b, 0x0a, 0x75, 0x0a, 0x75, 0x0a, + 0x7c, 0x0a, 0x7c, 0x0a, 0x71, 0x0a, 0x71, 0x0a, 0x55, 0x0a, 0x53, 0x0a, + 0x25, 0x0a, 0x23, 0x0a, 0xe3, 0x09, 0xe3, 0x09, 0x93, 0x09, 0x93, 0x09, + 0x31, 0x09, 0x30, 0x09, 0xc3, 0x08, 0xc4, 0x08, 0x49, 0x08, 0x48, 0x08, + 0xc2, 0x07, 0xc2, 0x07, 0x36, 0x07, 0x35, 0x07, 0x9f, 0x06, 0x9f, 0x06, + 0x07, 0x06, 0x07, 0x06, 0x6d, 0x05, 0x6d, 0x05, 0xd2, 0x04, 0xd2, 0x04, + 0x3e, 0x04, 0x3f, 0x04, 0xaa, 0x03, 0xa9, 0x03, 0x22, 0x03, 0x22, 0x03, + 0x9e, 0x02, 0x9e, 0x02, 0x26, 0x02, 0x27, 0x02, 0xbe, 0x01, 0xbd, 0x01, + 0x5d, 0x01, 0x5d, 0x01, 0x0d, 0x01, 0x0e, 0x01, 0xcb, 0x00, 0xcb, 0x00, + 0x9b, 0x00, 0x9a, 0x00, 0x79, 0x00, 0x78, 0x00, 0x61, 0x00, 0x61, 0x00, + 0x5f, 0x00, 0x5e, 0x00, 0x62, 0x00, 0x63, 0x00, 0x77, 0x00, 0x78, 0x00, + 0x96, 0x00, 0x95, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xee, 0x00, 0xee, 0x00, + 0x21, 0x01, 0x22, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x95, 0x01, 0x94, 0x01, + 0xcb, 0x01, 0xcc, 0x01, 0x04, 0x02, 0x04, 0x02, 0x36, 0x02, 0x37, 0x02, + 0x5f, 0x02, 0x5e, 0x02, 0x82, 0x02, 0x82, 0x02, 0x99, 0x02, 0x98, 0x02, + 0xa4, 0x02, 0xa3, 0x02, 0xa2, 0x02, 0xa2, 0x02, 0x91, 0x02, 0x8f, 0x02, + 0x71, 0x02, 0x71, 0x02, 0x40, 0x02, 0x3d, 0x02, 0x00, 0x02, 0xff, 0x01, + 0xb0, 0x01, 0xae, 0x01, 0x50, 0x01, 0x4e, 0x01, 0xe3, 0x00, 0xe2, 0x00, + 0x65, 0x00, 0x64, 0x00, 0xe0, 0xff, 0xde, 0xff, 0x4c, 0xff, 0x4b, 0xff, + 0xb0, 0xfe, 0xaf, 0xfe, 0x0f, 0xfe, 0x0e, 0xfe, 0x68, 0xfd, 0x66, 0xfd, + 0xbd, 0xfc, 0xbc, 0xfc, 0x12, 0xfc, 0x12, 0xfc, 0x67, 0xfb, 0x67, 0xfb, + 0xc5, 0xfa, 0xc3, 0xfa, 0x24, 0xfa, 0x24, 0xfa, 0x8e, 0xf9, 0x8e, 0xf9, + 0x03, 0xf9, 0x02, 0xf9, 0x83, 0xf8, 0x83, 0xf8, 0x11, 0xf8, 0x10, 0xf8, + 0xae, 0xf7, 0xaf, 0xf7, 0x5b, 0xf7, 0x59, 0xf7, 0x1b, 0xf7, 0x1c, 0xf7, + 0xe8, 0xf6, 0xe8, 0xf6, 0xcc, 0xf6, 0xca, 0xf6, 0xbf, 0xf6, 0xc1, 0xf6, + 0xc2, 0xf6, 0xbf, 0xf6, 0xd9, 0xf6, 0xdb, 0xf6, 0xfe, 0xf6, 0xfc, 0xf6, + 0x31, 0xf7, 0x32, 0xf7, 0x72, 0xf7, 0x74, 0xf7, 0xbe, 0xf7, 0xbd, 0xf7, + 0x15, 0xf8, 0x15, 0xf8, 0x71, 0xf8, 0x70, 0xf8, 0xd4, 0xf8, 0xd5, 0xf8, + 0x3a, 0xf9, 0x3b, 0xf9, 0xa0, 0xf9, 0x9e, 0xf9, 0x08, 0xfa, 0x09, 0xfa, + 0x69, 0xfa, 0x6a, 0xfa, 0xc8, 0xfa, 0xc9, 0xfa, 0x1c, 0xfb, 0x1e, 0xfb, + 0x6c, 0xfb, 0x6c, 0xfb, 0xaf, 0xfb, 0xb0, 0xfb, 0xe5, 0xfb, 0xe5, 0xfb, + 0x12, 0xfc, 0x12, 0xfc, 0x2d, 0xfc, 0x2e, 0xfc, 0x3e, 0xfc, 0x40, 0xfc, + 0x40, 0xfc, 0x40, 0xfc, 0x33, 0xfc, 0x34, 0xfc, 0x1b, 0xfc, 0x1c, 0xfc, + 0xf5, 0xfb, 0xf4, 0xfb, 0xc2, 0xfb, 0xc5, 0xfb, 0x89, 0xfb, 0x89, 0xfb, + 0x42, 0xfb, 0x42, 0xfb, 0xf8, 0xfa, 0xf9, 0xfa, 0xa6, 0xfa, 0xa4, 0xfa, + 0x51, 0xfa, 0x53, 0xfa, 0xfd, 0xf9, 0xfd, 0xf9, 0xa5, 0xf9, 0xa6, 0xf9, + 0x55, 0xf9, 0x55, 0xf9, 0x07, 0xf9, 0x07, 0xf9, 0xc2, 0xf8, 0xc3, 0xf8, + 0x85, 0xf8, 0x86, 0xf8, 0x53, 0xf8, 0x51, 0xf8, 0x2c, 0xf8, 0x2e, 0xf8, + 0x16, 0xf8, 0x14, 0xf8, 0x0a, 0xf8, 0x0c, 0xf8, 0x14, 0xf8, 0x13, 0xf8, + 0x2a, 0xf8, 0x2c, 0xf8, 0x55, 0xf8, 0x54, 0xf8, 0x8d, 0xf8, 0x8f, 0xf8, + 0xdb, 0xf8, 0xd9, 0xf8, 0x35, 0xf9, 0x36, 0xf9, 0xa1, 0xf9, 0xa1, 0xf9, + 0x1c, 0xfa, 0x1c, 0xfa, 0xa0, 0xfa, 0xa0, 0xfa, 0x36, 0xfb, 0x37, 0xfb, + 0xd0, 0xfb, 0xd0, 0xfb, 0x77, 0xfc, 0x78, 0xfc, 0x21, 0xfd, 0x20, 0xfd, + 0xce, 0xfd, 0xcf, 0xfd, 0x7e, 0xfe, 0x7b, 0xfe, 0x2c, 0xff, 0x2c, 0xff, + 0xd6, 0xff, 0xd5, 0xff, 0x7b, 0x00, 0x7c, 0x00, 0x1a, 0x01, 0x19, 0x01, + 0xaf, 0x01, 0xad, 0x01, 0x37, 0x02, 0x36, 0x02, 0xb2, 0x02, 0xb4, 0x02, + 0x24, 0x03, 0x23, 0x03, 0x83, 0x03, 0x84, 0x03, 0xd5, 0x03, 0xd5, 0x03, + 0x15, 0x04, 0x15, 0x04, 0x47, 0x04, 0x46, 0x04, 0x65, 0x04, 0x68, 0x04, + 0x78, 0x04, 0x77, 0x04, 0x7b, 0x04, 0x7c, 0x04, 0x6f, 0x04, 0x6f, 0x04, + 0x58, 0x04, 0x58, 0x04, 0x35, 0x04, 0x35, 0x04, 0x09, 0x04, 0x08, 0x04, + 0xd5, 0x03, 0xd4, 0x03, 0x9c, 0x03, 0x9c, 0x03, 0x5e, 0x03, 0x5f, 0x03, + 0x21, 0x03, 0x22, 0x03, 0xe3, 0x02, 0xe2, 0x02, 0xaa, 0x02, 0xab, 0x02, + 0x74, 0x02, 0x74, 0x02, 0x46, 0x02, 0x46, 0x02, 0x20, 0x02, 0x20, 0x02, + 0x05, 0x02, 0x04, 0x02, 0xf4, 0x01, 0xf6, 0x01, 0xef, 0x01, 0xf0, 0x01, + 0xfa, 0x01, 0xf9, 0x01, 0x10, 0x02, 0x0f, 0x02, 0x37, 0x02, 0x37, 0x02, + 0x69, 0x02, 0x6a, 0x02, 0xab, 0x02, 0xab, 0x02, 0xfc, 0x02, 0xfb, 0x02, + 0x54, 0x03, 0x55, 0x03, 0xbc, 0x03, 0xbb, 0x03, 0x2b, 0x04, 0x2a, 0x04, + 0xa6, 0x04, 0xa4, 0x04, 0x21, 0x05, 0x20, 0x05, 0xa5, 0x05, 0xa5, 0x05, + 0x29, 0x06, 0x28, 0x06, 0xad, 0x06, 0xae, 0x06, 0x34, 0x07, 0x33, 0x07, + 0xb1, 0x07, 0xb2, 0x07, 0x2e, 0x08, 0x2d, 0x08, 0x9b, 0x08, 0x9c, 0x08, + 0x04, 0x09, 0x03, 0x09, 0x5f, 0x09, 0x61, 0x09, 0xad, 0x09, 0xac, 0x09, + 0xeb, 0x09, 0xed, 0x09, 0x1d, 0x0a, 0x1a, 0x0a, 0x37, 0x0a, 0x3a, 0x0a, + 0x49, 0x0a, 0x46, 0x0a, 0x41, 0x0a, 0x44, 0x0a, 0x2c, 0x0a, 0x2b, 0x0a, + 0x05, 0x0a, 0x05, 0x0a, 0xca, 0x09, 0xcb, 0x09, 0x85, 0x09, 0x85, 0x09, + 0x2c, 0x09, 0x2e, 0x09, 0xc8, 0x08, 0xc6, 0x08, 0x59, 0x08, 0x58, 0x08, + 0xdc, 0x07, 0xde, 0x07, 0x5d, 0x07, 0x5b, 0x07, 0xd4, 0x06, 0xd3, 0x06, + 0x47, 0x06, 0x48, 0x06, 0xbc, 0x05, 0xba, 0x05, 0x2e, 0x05, 0x2d, 0x05, + 0xa2, 0x04, 0xa2, 0x04, 0x20, 0x04, 0x1f, 0x04, 0x9c, 0x03, 0x9d, 0x03, + 0x2a, 0x03, 0x28, 0x03, 0xbb, 0x02, 0xbc, 0x02, 0x5a, 0x02, 0x5a, 0x02, + 0x07, 0x02, 0x06, 0x02, 0xbd, 0x01, 0xbd, 0x01, 0x85, 0x01, 0x86, 0x01, + 0x59, 0x01, 0x5a, 0x01, 0x3c, 0x01, 0x3b, 0x01, 0x2c, 0x01, 0x2d, 0x01, + 0x2c, 0x01, 0x2a, 0x01, 0x36, 0x01, 0x37, 0x01, 0x4d, 0x01, 0x4b, 0x01, + 0x6d, 0x01, 0x6e, 0x01, 0x95, 0x01, 0x94, 0x01, 0xc6, 0x01, 0xc5, 0x01, + 0xf9, 0x01, 0xf8, 0x01, 0x30, 0x02, 0x2f, 0x02, 0x69, 0x02, 0x6a, 0x02, + 0xa2, 0x02, 0xa0, 0x02, 0xd4, 0x02, 0xd6, 0x02, 0x03, 0x03, 0x02, 0x03, + 0x2b, 0x03, 0x2d, 0x03, 0x4c, 0x03, 0x4b, 0x03, 0x5f, 0x03, 0x5f, 0x03, + 0x69, 0x03, 0x6a, 0x03, 0x64, 0x03, 0x63, 0x03, 0x52, 0x03, 0x51, 0x03, + 0x32, 0x03, 0x31, 0x03, 0xff, 0x02, 0xfd, 0x02, 0xc1, 0x02, 0xc1, 0x02, + 0x70, 0x02, 0x6e, 0x02, 0x12, 0x02, 0x14, 0x02, 0xa3, 0x01, 0xa0, 0x01, + 0x29, 0x01, 0x2c, 0x01, 0xa4, 0x00, 0xa2, 0x00, 0x10, 0x00, 0x13, 0x00, + 0x7d, 0xff, 0x7a, 0xff, 0xd8, 0xfe, 0xda, 0xfe, 0x38, 0xfe, 0x36, 0xfe, + 0x8f, 0xfd, 0x8e, 0xfd, 0xe6, 0xfc, 0xe7, 0xfc, 0x43, 0xfc, 0x41, 0xfc, + 0x9f, 0xfb, 0xa0, 0xfb, 0x05, 0xfb, 0x03, 0xfb, 0x6d, 0xfa, 0x6d, 0xfa, + 0xe6, 0xf9, 0xe4, 0xf9, 0x64, 0xf9, 0x66, 0xf9, 0xf5, 0xf8, 0xf2, 0xf8, + 0x8f, 0xf8, 0x90, 0xf8, 0x3c, 0xf8, 0x3b, 0xf8, 0xf7, 0xf7, 0xf7, 0xf7, + 0xc3, 0xf7, 0xc5, 0xf7, 0xa3, 0xf7, 0xa1, 0xf7, 0x90, 0xf7, 0x92, 0xf7, + 0x90, 0xf7, 0x8e, 0xf7, 0x9f, 0xf7, 0x9f, 0xf7, 0xbb, 0xf7, 0xbb, 0xf7, + 0xe9, 0xf7, 0xe8, 0xf7, 0x20, 0xf8, 0x1f, 0xf8, 0x62, 0xf8, 0x62, 0xf8, + 0xad, 0xf8, 0xab, 0xf8, 0x01, 0xf9, 0xff, 0xf8, 0x56, 0xf9, 0x56, 0xf9, + 0xb1, 0xf9, 0xaf, 0xf9, 0x0c, 0xfa, 0x0d, 0xfa, 0x68, 0xfa, 0x63, 0xfa, + 0xbe, 0xfa, 0xbd, 0xfa, 0x0c, 0xfb, 0x0c, 0xfb, 0x5a, 0xfb, 0x58, 0xfb, + 0x99, 0xfb, 0x99, 0xfb, 0xd3, 0xfb, 0xd1, 0xfb, 0xfe, 0xfb, 0xfd, 0xfb, + 0x1e, 0xfc, 0x1d, 0xfc, 0x32, 0xfc, 0x31, 0xfc, 0x38, 0xfc, 0x38, 0xfc, + 0x30, 0xfc, 0x2f, 0xfc, 0x1c, 0xfc, 0x1d, 0xfc, 0xfd, 0xfb, 0xfb, 0xfb, + 0xd1, 0xfb, 0xd1, 0xfb, 0x99, 0xfb, 0x99, 0xfb, 0x58, 0xfb, 0x57, 0xfb, + 0x0d, 0xfb, 0x10, 0xfb, 0xc0, 0xfa, 0xc0, 0xfa, 0x69, 0xfa, 0x69, 0xfa, + 0x13, 0xfa, 0x15, 0xfa, 0xb8, 0xf9, 0xb9, 0xf9, 0x62, 0xf9, 0x62, 0xf9, + 0x0e, 0xf9, 0x10, 0xf9, 0xbe, 0xf8, 0xbe, 0xf8, 0x78, 0xf8, 0x78, 0xf8, + 0x36, 0xf8, 0x37, 0xf8, 0x06, 0xf8, 0x05, 0xf8, 0xdb, 0xf7, 0xdd, 0xf7, + 0xc3, 0xf7, 0xc2, 0xf7, 0xb8, 0xf7, 0xb7, 0xf7, 0xb9, 0xf7, 0xbb, 0xf7, + 0xcf, 0xf7, 0xcf, 0xf7, 0xf5, 0xf7, 0xf3, 0xf7, 0x29, 0xf8, 0x29, 0xf8, + 0x6d, 0xf8, 0x6c, 0xf8, 0xc8, 0xf8, 0xc6, 0xf8, 0x28, 0xf9, 0x29, 0xf9, + 0x9d, 0xf9, 0x9c, 0xf9, 0x1c, 0xfa, 0x1d, 0xfa, 0xa7, 0xfa, 0xa6, 0xfa, + 0x3c, 0xfb, 0x3d, 0xfb, 0xd6, 0xfb, 0xd4, 0xfb, 0x79, 0xfc, 0x79, 0xfc, + 0x1e, 0xfd, 0x1d, 0xfd, 0xc1, 0xfd, 0xc1, 0xfd, 0x68, 0xfe, 0x68, 0xfe, + 0x08, 0xff, 0x08, 0xff, 0xa6, 0xff, 0xa5, 0xff, 0x3b, 0x00, 0x3b, 0x00, + 0xc9, 0x00, 0xc9, 0x00, 0x4b, 0x01, 0x4c, 0x01, 0xc1, 0x01, 0xc1, 0x01, + 0x2a, 0x02, 0x2a, 0x02, 0x85, 0x02, 0x86, 0x02, 0xd3, 0x02, 0xd3, 0x02, + 0x10, 0x03, 0x11, 0x03, 0x3f, 0x03, 0x3e, 0x03, 0x5d, 0x03, 0x5e, 0x03, + 0x6f, 0x03, 0x6e, 0x03, 0x72, 0x03, 0x73, 0x03, 0x66, 0x03, 0x67, 0x03, + 0x55, 0x03, 0x53, 0x03, 0x32, 0x03, 0x34, 0x03, 0x0d, 0x03, 0x0b, 0x03, + 0xde, 0x02, 0xde, 0x02, 0xaa, 0x02, 0xa9, 0x02, 0x74, 0x02, 0x75, 0x02, + 0x3c, 0x02, 0x3c, 0x02, 0x06, 0x02, 0x07, 0x02, 0xd4, 0x01, 0xd2, 0x01, + 0xa5, 0x01, 0xa6, 0x01, 0x7f, 0x01, 0x7e, 0x01, 0x62, 0x01, 0x62, 0x01, + 0x4e, 0x01, 0x4d, 0x01, 0x42, 0x01, 0x43, 0x01, 0x49, 0x01, 0x47, 0x01, + 0x57, 0x01, 0x57, 0x01, 0x76, 0x01, 0x78, 0x01, 0xa2, 0x01, 0xa1, 0x01, + 0xdb, 0x01, 0xdc, 0x01, 0x23, 0x02, 0x25, 0x02, 0x76, 0x02, 0x77, 0x02, + 0xd6, 0x02, 0xd7, 0x02, 0x3e, 0x03, 0x3e, 0x03, 0xb4, 0x03, 0xb5, 0x03, + 0x2c, 0x04, 0x2e, 0x04, 0xb0, 0x04, 0xb0, 0x04, 0x33, 0x05, 0x33, 0x05, + 0xbb, 0x05, 0xbb, 0x05, 0x41, 0x06, 0x42, 0x06, 0xc6, 0x06, 0xc7, 0x06, + 0x49, 0x07, 0x48, 0x07, 0xc4, 0x07, 0xc4, 0x07, 0x36, 0x08, 0x37, 0x08, + 0x9f, 0x08, 0x9f, 0x08, 0xfb, 0x08, 0xfb, 0x08, 0x4c, 0x09, 0x4c, 0x09, + 0x8e, 0x09, 0x8e, 0x09, 0xc0, 0x09, 0xc2, 0x09, 0xe3, 0x09, 0xe2, 0x09, + 0xf2, 0x09, 0xf5, 0x09, 0xf4, 0x09, 0xf4, 0x09, 0xe3, 0x09, 0xe4, 0x09, + 0xc4, 0x09, 0xc4, 0x09, 0x93, 0x09, 0x93, 0x09, 0x51, 0x09, 0x52, 0x09, + 0x03, 0x09, 0x05, 0x09, 0xa9, 0x08, 0xa7, 0x08, 0x44, 0x08, 0x44, 0x08, + 0xd3, 0x07, 0xd3, 0x07, 0x5d, 0x07, 0x5b, 0x07, 0xe0, 0x06, 0xe1, 0x06, + 0x60, 0x06, 0x5f, 0x06, 0xe0, 0x05, 0xe0, 0x05, 0x5e, 0x05, 0x5d, 0x05, + 0xe2, 0x04, 0xe1, 0x04, 0x67, 0x04, 0x68, 0x04, 0xf5, 0x03, 0xf4, 0x03, + 0x8d, 0x03, 0x8b, 0x03, 0x2a, 0x03, 0x29, 0x03, 0xd4, 0x02, 0xd4, 0x02, + 0x8a, 0x02, 0x89, 0x02, 0x4d, 0x02, 0x4f, 0x02, 0x1e, 0x02, 0x1c, 0x02, + 0xfa, 0x01, 0xfb, 0x01, 0xe7, 0x01, 0xe6, 0x01, 0xdc, 0x01, 0xdc, 0x01, + 0xe3, 0x01, 0xe2, 0x01, 0xf0, 0x01, 0xf0, 0x01, 0x0d, 0x02, 0x0c, 0x02, + 0x2f, 0x02, 0x2f, 0x02, 0x5a, 0x02, 0x58, 0x02, 0x8a, 0x02, 0x8d, 0x02, + 0xc0, 0x02, 0xbe, 0x02, 0xf6, 0x02, 0xf8, 0x02, 0x33, 0x03, 0x32, 0x03, + 0x65, 0x03, 0x66, 0x03, 0x9d, 0x03, 0x9b, 0x03, 0xc7, 0x03, 0xc5, 0x03, + 0xed, 0x03, 0xee, 0x03, 0x0c, 0x04, 0x0b, 0x04, 0x1c, 0x04, 0x1c, 0x04, + 0x26, 0x04, 0x25, 0x04, 0x1c, 0x04, 0x1b, 0x04, 0x0b, 0x04, 0x0b, 0x04, + 0xe5, 0x03, 0xe5, 0x03, 0xb4, 0x03, 0xb3, 0x03, 0x72, 0x03, 0x73, 0x03, + 0x23, 0x03, 0x21, 0x03, 0xc4, 0x02, 0xc4, 0x02, 0x58, 0x02, 0x56, 0x02, + 0xde, 0x01, 0xde, 0x01, 0x5a, 0x01, 0x59, 0x01, 0xcc, 0x00, 0xca, 0x00, + 0x36, 0x00, 0x35, 0x00, 0x97, 0xff, 0x97, 0xff, 0xf6, 0xfe, 0xf5, 0xfe, + 0x53, 0xfe, 0x53, 0xfe, 0xad, 0xfd, 0xae, 0xfd, 0x0c, 0xfd, 0x0a, 0xfd, + 0x6d, 0xfc, 0x6c, 0xfc, 0xd4, 0xfb, 0xd3, 0xfb, 0x45, 0xfb, 0x44, 0xfb, + 0xbb, 0xfa, 0xba, 0xfa, 0x3f, 0xfa, 0x3f, 0xfa, 0xd0, 0xf9, 0xcf, 0xf9, + 0x6c, 0xf9, 0x6c, 0xf9, 0x1b, 0xf9, 0x1a, 0xf9, 0xd6, 0xf8, 0xd5, 0xf8, + 0xa1, 0xf8, 0xa3, 0xf8, 0x80, 0xf8, 0x7e, 0xf8, 0x6a, 0xf8, 0x6a, 0xf8, + 0x69, 0xf8, 0x66, 0xf8, 0x71, 0xf8, 0x71, 0xf8, 0x8d, 0xf8, 0x8b, 0xf8, + 0xae, 0xf8, 0xae, 0xf8, 0xe2, 0xf8, 0xe2, 0xf8, 0x1c, 0xf9, 0x1b, 0xf9, + 0x60, 0xf9, 0x60, 0xf9, 0xa8, 0xf9, 0xa8, 0xf9, 0xf6, 0xf9, 0xf5, 0xf9, + 0x47, 0xfa, 0x45, 0xfa, 0x96, 0xfa, 0x94, 0xfa, 0xe3, 0xfa, 0xe4, 0xfa, + 0x2d, 0xfb, 0x2c, 0xfb, 0x75, 0xfb, 0x74, 0xfb, 0xb2, 0xfb, 0xb1, 0xfb, + 0xe8, 0xfb, 0xe6, 0xfb, 0x15, 0xfc, 0x13, 0xfc, 0x35, 0xfc, 0x32, 0xfc, + 0x4b, 0xfc, 0x4b, 0xfc, 0x52, 0xfc, 0x51, 0xfc, 0x4f, 0xfc, 0x4d, 0xfc, + 0x3e, 0xfc, 0x3d, 0xfc, 0x21, 0xfc, 0x20, 0xfc, 0xf9, 0xfb, 0xf7, 0xfb, + 0xc4, 0xfb, 0xc3, 0xfb, 0x84, 0xfb, 0x83, 0xfb, 0x3f, 0xfb, 0x3d, 0xfb, + 0xec, 0xfa, 0xec, 0xfa, 0x9b, 0xfa, 0x9a, 0xfa, 0x41, 0xfa, 0x40, 0xfa, + 0xe5, 0xf9, 0xe4, 0xf9, 0x8b, 0xf9, 0x8a, 0xf9, 0x2d, 0xf9, 0x2e, 0xf9, + 0xdb, 0xf8, 0xd9, 0xf8, 0x86, 0xf8, 0x85, 0xf8, 0x3e, 0xf8, 0x3e, 0xf8, + 0xfd, 0xf7, 0xfc, 0xf7, 0xc6, 0xf7, 0xc5, 0xf7, 0xa0, 0xf7, 0x9d, 0xf7, + 0x7e, 0xf7, 0x80, 0xf7, 0x73, 0xf7, 0x72, 0xf7, 0x76, 0xf7, 0x74, 0xf7, + 0x85, 0xf7, 0x86, 0xf7, 0xa9, 0xf7, 0xa8, 0xf7, 0xd7, 0xf7, 0xd7, 0xf7, + 0x1d, 0xf8, 0x1b, 0xf8, 0x6a, 0xf8, 0x69, 0xf8, 0xca, 0xf8, 0xcc, 0xf8, + 0x39, 0xf9, 0x35, 0xf9, 0xae, 0xf9, 0xaf, 0xf9, 0x37, 0xfa, 0x35, 0xfa, + 0xbe, 0xfa, 0xbe, 0xfa, 0x55, 0xfb, 0x54, 0xfb, 0xec, 0xfb, 0xeb, 0xfb, + 0x87, 0xfc, 0x86, 0xfc, 0x25, 0xfd, 0x27, 0xfd, 0xc1, 0xfd, 0xbe, 0xfd, + 0x58, 0xfe, 0x5a, 0xfe, 0xef, 0xfe, 0xed, 0xfe, 0x78, 0xff, 0x77, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x75, 0x00, 0x74, 0x00, 0xe7, 0x00, 0xe7, 0x00, + 0x48, 0x01, 0x47, 0x01, 0x9b, 0x01, 0x9a, 0x01, 0xe5, 0x01, 0xe5, 0x01, + 0x1b, 0x02, 0x1a, 0x02, 0x47, 0x02, 0x47, 0x02, 0x63, 0x02, 0x62, 0x02, + 0x70, 0x02, 0x70, 0x02, 0x76, 0x02, 0x74, 0x02, 0x67, 0x02, 0x67, 0x02, + 0x59, 0x02, 0x56, 0x02, 0x35, 0x02, 0x35, 0x02, 0x13, 0x02, 0x11, 0x02, + 0xe7, 0x01, 0xe7, 0x01, 0xb7, 0x01, 0xb4, 0x01, 0x87, 0x01, 0x87, 0x01, + 0x52, 0x01, 0x51, 0x01, 0x24, 0x01, 0x24, 0x01, 0xf7, 0x00, 0xf7, 0x00, + 0xcf, 0x00, 0xce, 0x00, 0xb4, 0x00, 0xb3, 0x00, 0x97, 0x00, 0x98, 0x00, + 0x8f, 0x00, 0x8e, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x95, 0x00, 0x96, 0x00, + 0xae, 0x00, 0xac, 0x00, 0xd0, 0x00, 0xd2, 0x00, 0x05, 0x01, 0x03, 0x01, + 0x42, 0x01, 0x42, 0x01, 0x90, 0x01, 0x90, 0x01, 0xe6, 0x01, 0xe7, 0x01, + 0x4a, 0x02, 0x4b, 0x02, 0xbb, 0x02, 0xba, 0x02, 0x2e, 0x03, 0x30, 0x03, + 0xae, 0x03, 0xad, 0x03, 0x30, 0x04, 0x31, 0x04, 0xb6, 0x04, 0xb7, 0x04, + 0x41, 0x05, 0x41, 0x05, 0xc7, 0x05, 0xc7, 0x05, 0x4f, 0x06, 0x4f, 0x06, + 0xd0, 0x06, 0xd0, 0x06, 0x4a, 0x07, 0x4c, 0x07, 0xc3, 0x07, 0xc2, 0x07, + 0x2b, 0x08, 0x2b, 0x08, 0x89, 0x08, 0x89, 0x08, 0xdb, 0x08, 0xdb, 0x08, + 0x1d, 0x09, 0x1e, 0x09, 0x56, 0x09, 0x54, 0x09, 0x79, 0x09, 0x79, 0x09, + 0x90, 0x09, 0x90, 0x09, 0x94, 0x09, 0x93, 0x09, 0x8a, 0x09, 0x89, 0x09, + 0x6e, 0x09, 0x6e, 0x09, 0x43, 0x09, 0x41, 0x09, 0x0c, 0x09, 0x0d, 0x09, + 0xc6, 0x08, 0xc4, 0x08, 0x74, 0x08, 0x74, 0x08, 0x16, 0x08, 0x16, 0x08, + 0xb2, 0x07, 0xb1, 0x07, 0x47, 0x07, 0x46, 0x07, 0xd5, 0x06, 0xd5, 0x06, + 0x62, 0x06, 0x63, 0x06, 0xea, 0x05, 0xe9, 0x05, 0x7a, 0x05, 0x79, 0x05, + 0x05, 0x05, 0x04, 0x05, 0x9b, 0x04, 0x9b, 0x04, 0x35, 0x04, 0x34, 0x04, + 0xd4, 0x03, 0xd5, 0x03, 0x81, 0x03, 0x80, 0x03, 0x33, 0x03, 0x34, 0x03, + 0xf6, 0x02, 0xf6, 0x02, 0xc2, 0x02, 0xc2, 0x02, 0x9c, 0x02, 0x9d, 0x02, + 0x83, 0x02, 0x82, 0x02, 0x76, 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, 0x02, + 0x7e, 0x02, 0x7e, 0x02, 0x93, 0x02, 0x94, 0x02, 0xb2, 0x02, 0xb0, 0x02, + 0xd9, 0x02, 0xd9, 0x02, 0x06, 0x03, 0x06, 0x03, 0x3a, 0x03, 0x3b, 0x03, + 0x70, 0x03, 0x70, 0x03, 0xaa, 0x03, 0xaa, 0x03, 0xe3, 0x03, 0xe2, 0x03, + 0x17, 0x04, 0x18, 0x04, 0x4c, 0x04, 0x4a, 0x04, 0x78, 0x04, 0x79, 0x04, + 0x9c, 0x04, 0x9b, 0x04, 0xb8, 0x04, 0xba, 0x04, 0xcb, 0x04, 0xca, 0x04, + 0xce, 0x04, 0xcf, 0x04, 0xc8, 0x04, 0xc8, 0x04, 0xb4, 0x04, 0xb4, 0x04, + 0x91, 0x04, 0x90, 0x04, 0x60, 0x04, 0x61, 0x04, 0x1e, 0x04, 0x1d, 0x04, + 0xd0, 0x03, 0xd0, 0x03, 0x72, 0x03, 0x74, 0x03, 0x0a, 0x03, 0x08, 0x03, + 0x90, 0x02, 0x93, 0x02, 0x11, 0x02, 0x0f, 0x02, 0x84, 0x01, 0x86, 0x01, + 0xf3, 0x00, 0xf2, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0xbc, 0xff, 0xbc, 0xff, + 0x1c, 0xff, 0x1d, 0xff, 0x7c, 0xfe, 0x7d, 0xfe, 0xde, 0xfd, 0xdf, 0xfd, + 0x45, 0xfd, 0x44, 0xfd, 0xb0, 0xfc, 0xb2, 0xfc, 0x22, 0xfc, 0x21, 0xfc, + 0x9c, 0xfb, 0x9f, 0xfb, 0x24, 0xfb, 0x24, 0xfb, 0xb7, 0xfa, 0xb8, 0xfa, + 0x58, 0xfa, 0x57, 0xfa, 0x04, 0xfa, 0x04, 0xfa, 0xc2, 0xf9, 0xc2, 0xf9, + 0x8b, 0xf9, 0x8c, 0xf9, 0x68, 0xf9, 0x68, 0xf9, 0x51, 0xf9, 0x52, 0xf9, + 0x49, 0xf9, 0x49, 0xf9, 0x51, 0xf9, 0x51, 0xf9, 0x63, 0xf9, 0x64, 0xf9, + 0x83, 0xf9, 0x84, 0xf9, 0xad, 0xf9, 0xad, 0xf9, 0xdd, 0xf9, 0xde, 0xf9, + 0x1a, 0xfa, 0x1a, 0xfa, 0x59, 0xfa, 0x5a, 0xfa, 0x9d, 0xfa, 0x9c, 0xfa, + 0xe4, 0xfa, 0xe4, 0xfa, 0x29, 0xfb, 0x27, 0xfb, 0x6c, 0xfb, 0x6d, 0xfb, + 0xae, 0xfb, 0xac, 0xfb, 0xe6, 0xfb, 0xe8, 0xfb, 0x1c, 0xfc, 0x19, 0xfc, + 0x44, 0xfc, 0x46, 0xfc, 0x67, 0xfc, 0x67, 0xfc, 0x7f, 0xfc, 0x7e, 0xfc, + 0x88, 0xfc, 0x8a, 0xfc, 0x8b, 0xfc, 0x88, 0xfc, 0x7c, 0xfc, 0x7d, 0xfc, + 0x64, 0xfc, 0x62, 0xfc, 0x3e, 0xfc, 0x3e, 0xfc, 0x11, 0xfc, 0x10, 0xfc, + 0xd6, 0xfb, 0xd6, 0xfb, 0x92, 0xfb, 0x91, 0xfb, 0x45, 0xfb, 0x44, 0xfb, + 0xf0, 0xfa, 0xf1, 0xfa, 0x9c, 0xfa, 0x9a, 0xfa, 0x3a, 0xfa, 0x3c, 0xfa, + 0xe0, 0xf9, 0xde, 0xf9, 0x81, 0xf9, 0x7f, 0xf9, 0x22, 0xf9, 0x23, 0xf9, + 0xcd, 0xf8, 0xcb, 0xf8, 0x75, 0xf8, 0x78, 0xf8, 0x2d, 0xf8, 0x2b, 0xf8, + 0xe5, 0xf7, 0xe9, 0xf7, 0xb2, 0xf7, 0xaf, 0xf7, 0x81, 0xf7, 0x82, 0xf7, + 0x62, 0xf7, 0x63, 0xf7, 0x52, 0xf7, 0x51, 0xf7, 0x4e, 0xf7, 0x4e, 0xf7, + 0x5c, 0xf7, 0x5b, 0xf7, 0x78, 0xf7, 0x77, 0xf7, 0xa4, 0xf7, 0xa3, 0xf7, + 0xdf, 0xf7, 0xde, 0xf7, 0x2a, 0xf8, 0x29, 0xf8, 0x81, 0xf8, 0x80, 0xf8, + 0xe6, 0xf8, 0xe4, 0xf8, 0x55, 0xf9, 0x56, 0xf9, 0xd0, 0xf9, 0xcf, 0xf9, + 0x53, 0xfa, 0x53, 0xfa, 0xdc, 0xfa, 0xdb, 0xfa, 0x6d, 0xfb, 0x6d, 0xfb, + 0xfc, 0xfb, 0xfc, 0xfb, 0x91, 0xfc, 0x8f, 0xfc, 0x20, 0xfd, 0x22, 0xfd, + 0xaf, 0xfd, 0xaf, 0xfd, 0x3a, 0xfe, 0x3a, 0xfe, 0xbc, 0xfe, 0xbc, 0xfe, + 0x3a, 0xff, 0x38, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0x12, 0x00, 0x12, 0x00, + 0x6d, 0x00, 0x6b, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0xfe, 0x00, 0xfd, 0x00, + 0x31, 0x01, 0x31, 0x01, 0x59, 0x01, 0x58, 0x01, 0x72, 0x01, 0x70, 0x01, + 0x7f, 0x01, 0x81, 0x01, 0x82, 0x01, 0x7e, 0x01, 0x76, 0x01, 0x76, 0x01, + 0x65, 0x01, 0x63, 0x01, 0x48, 0x01, 0x48, 0x01, 0x27, 0x01, 0x25, 0x01, + 0xfd, 0x00, 0xfe, 0x00, 0xd3, 0x00, 0xd2, 0x00, 0xa6, 0x00, 0xa7, 0x00, + 0x79, 0x00, 0x78, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x27, 0x00, 0x26, 0x00, + 0x08, 0x00, 0x07, 0x00, 0xeb, 0xff, 0xea, 0xff, 0xdd, 0xff, 0xdb, 0xff, + 0xd3, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x60, 0x00, 0x5e, 0x00, + 0xa2, 0x00, 0xa2, 0x00, 0xf2, 0x00, 0xef, 0x00, 0x4a, 0x01, 0x4a, 0x01, + 0xb2, 0x01, 0xb2, 0x01, 0x20, 0x02, 0x1f, 0x02, 0x95, 0x02, 0x96, 0x02, + 0x17, 0x03, 0x16, 0x03, 0x98, 0x03, 0x97, 0x03, 0x21, 0x04, 0x22, 0x04, + 0xa8, 0x04, 0xa7, 0x04, 0x31, 0x05, 0x30, 0x05, 0xb9, 0x05, 0xb8, 0x05, + 0x3a, 0x06, 0x37, 0x06, 0xb6, 0x06, 0xb7, 0x06, 0x2c, 0x07, 0x29, 0x07, + 0x93, 0x07, 0x95, 0x07, 0xf6, 0x07, 0xf4, 0x07, 0x49, 0x08, 0x48, 0x08, + 0x8f, 0x08, 0x90, 0x08, 0xca, 0x08, 0xc7, 0x08, 0xf1, 0x08, 0xf1, 0x08, + 0x0b, 0x09, 0x0a, 0x09, 0x15, 0x09, 0x17, 0x09, 0x10, 0x09, 0x10, 0x09, + 0xfd, 0x08, 0xfd, 0x08, 0xdb, 0x08, 0xdb, 0x08, 0xa9, 0x08, 0xaa, 0x08, + 0x6f, 0x08, 0x6f, 0x08, 0x24, 0x08, 0x23, 0x08, 0xd4, 0x07, 0xd6, 0x07, + 0x77, 0x07, 0x77, 0x07, 0x19, 0x07, 0x1a, 0x07, 0xb3, 0x06, 0xb2, 0x06, + 0x4c, 0x06, 0x4b, 0x06, 0xe1, 0x05, 0xe3, 0x05, 0x7a, 0x05, 0x7a, 0x05, + 0x17, 0x05, 0x17, 0x05, 0xb4, 0x04, 0xb4, 0x04, 0x5b, 0x04, 0x5a, 0x04, + 0x08, 0x04, 0x08, 0x04, 0xbc, 0x03, 0xbc, 0x03, 0x7e, 0x03, 0x7e, 0x03, + 0x46, 0x03, 0x46, 0x03, 0x1f, 0x03, 0x1f, 0x03, 0x00, 0x03, 0x01, 0x03, + 0xed, 0x02, 0xed, 0x02, 0xe7, 0x02, 0xe7, 0x02, 0xec, 0x02, 0xeb, 0x02, + 0xfc, 0x02, 0xfd, 0x02, 0x15, 0x03, 0x15, 0x03, 0x3a, 0x03, 0x39, 0x03, + 0x61, 0x03, 0x64, 0x03, 0x96, 0x03, 0x93, 0x03, 0xc8, 0x03, 0xc9, 0x03, + 0x01, 0x04, 0x01, 0x04, 0x3b, 0x04, 0x3a, 0x04, 0x71, 0x04, 0x72, 0x04, + 0xab, 0x04, 0xa9, 0x04, 0xdb, 0x04, 0xdc, 0x04, 0x07, 0x05, 0x07, 0x05, + 0x2d, 0x05, 0x2d, 0x05, 0x48, 0x05, 0x49, 0x05, 0x5b, 0x05, 0x5a, 0x05, + 0x60, 0x05, 0x61, 0x05, 0x58, 0x05, 0x59, 0x05, 0x46, 0x05, 0x44, 0x05, + 0x24, 0x05, 0x25, 0x05, 0xf1, 0x04, 0xf2, 0x04, 0xb7, 0x04, 0xb5, 0x04, + 0x67, 0x04, 0x69, 0x04, 0x10, 0x04, 0x0e, 0x04, 0xa9, 0x03, 0xa9, 0x03, + 0x35, 0x03, 0x35, 0x03, 0xb9, 0x02, 0xb8, 0x02, 0x33, 0x02, 0x34, 0x02, + 0xa5, 0x01, 0xa4, 0x01, 0x12, 0x01, 0x12, 0x01, 0x7a, 0x00, 0x78, 0x00, + 0xdf, 0xff, 0xe1, 0xff, 0x46, 0xff, 0x46, 0xff, 0xae, 0xfe, 0xae, 0xfe, + 0x18, 0xfe, 0x17, 0xfe, 0x89, 0xfd, 0x86, 0xfd, 0xfc, 0xfc, 0x00, 0xfd, + 0x7f, 0xfc, 0x7e, 0xfc, 0x09, 0xfc, 0x09, 0xfc, 0x9d, 0xfb, 0x9d, 0xfb, + 0x3f, 0xfb, 0x3e, 0xfb, 0xee, 0xfa, 0xef, 0xfa, 0xac, 0xfa, 0xaa, 0xfa, + 0x77, 0xfa, 0x79, 0xfa, 0x51, 0xfa, 0x51, 0xfa, 0x37, 0xfa, 0x38, 0xfa, + 0x2e, 0xfa, 0x2d, 0xfa, 0x30, 0xfa, 0x31, 0xfa, 0x40, 0xfa, 0x3f, 0xfa, + 0x5b, 0xfa, 0x5a, 0xfa, 0x7c, 0xfa, 0x7c, 0xfa, 0xa9, 0xfa, 0xa9, 0xfa, + 0xdb, 0xfa, 0xda, 0xfa, 0x12, 0xfb, 0x12, 0xfb, 0x4e, 0xfb, 0x4d, 0xfb, + 0x8a, 0xfb, 0x8a, 0xfb, 0xc6, 0xfb, 0xc6, 0xfb, 0x00, 0xfc, 0x00, 0xfc, + 0x36, 0xfc, 0x36, 0xfc, 0x67, 0xfc, 0x67, 0xfc, 0x8f, 0xfc, 0x90, 0xfc, + 0xb1, 0xfc, 0xb2, 0xfc, 0xcb, 0xfc, 0xc9, 0xfc, 0xd7, 0xfc, 0xd8, 0xfc, + 0xda, 0xfc, 0xda, 0xfc, 0xd0, 0xfc, 0xd0, 0xfc, 0xbe, 0xfc, 0xbe, 0xfc, + 0x9d, 0xfc, 0x9c, 0xfc, 0x73, 0xfc, 0x71, 0xfc, 0x3b, 0xfc, 0x3d, 0xfc, + 0xfd, 0xfb, 0xfb, 0xfb, 0xb2, 0xfb, 0xb3, 0xfb, 0x63, 0xfb, 0x64, 0xfb, + 0x0a, 0xfb, 0x09, 0xfb, 0xad, 0xfa, 0xaf, 0xfa, 0x51, 0xfa, 0x4f, 0xfa, + 0xec, 0xf9, 0xef, 0xf9, 0x8e, 0xf9, 0x8d, 0xf9, 0x2e, 0xf9, 0x2c, 0xf9, + 0xd1, 0xf8, 0xd4, 0xf8, 0x7f, 0xf8, 0x7c, 0xf8, 0x2d, 0xf8, 0x2f, 0xf8, + 0xeb, 0xf7, 0xe9, 0xf7, 0xae, 0xf7, 0xae, 0xf7, 0x80, 0xf7, 0x80, 0xf7, + 0x5d, 0xf7, 0x5b, 0xf7, 0x48, 0xf7, 0x49, 0xf7, 0x43, 0xf7, 0x42, 0xf7, + 0x48, 0xf7, 0x49, 0xf7, 0x63, 0xf7, 0x62, 0xf7, 0x86, 0xf7, 0x86, 0xf7, + 0xbd, 0xf7, 0xbd, 0xf7, 0x00, 0xf8, 0x00, 0xf8, 0x50, 0xf8, 0x50, 0xf8, + 0xaf, 0xf8, 0xaf, 0xf8, 0x13, 0xf9, 0x13, 0xf9, 0x87, 0xf9, 0x88, 0xf9, + 0x00, 0xfa, 0xff, 0xf9, 0x7d, 0xfa, 0x80, 0xfa, 0x07, 0xfb, 0x06, 0xfb, + 0x89, 0xfb, 0x88, 0xfb, 0x17, 0xfc, 0x17, 0xfc, 0x9c, 0xfc, 0x9d, 0xfc, + 0x20, 0xfd, 0x1f, 0xfd, 0xa3, 0xfd, 0xa3, 0xfd, 0x18, 0xfe, 0x17, 0xfe, + 0x8c, 0xfe, 0x8c, 0xfe, 0xf5, 0xfe, 0xf3, 0xfe, 0x53, 0xff, 0x54, 0xff, + 0xaa, 0xff, 0xa7, 0xff, 0xec, 0xff, 0xed, 0xff, 0x2f, 0x00, 0x2c, 0x00, + 0x58, 0x00, 0x5a, 0x00, 0x7d, 0x00, 0x7c, 0x00, 0x95, 0x00, 0x92, 0x00, + 0x9a, 0x00, 0x9c, 0x00, 0x9f, 0x00, 0x9c, 0x00, 0x91, 0x00, 0x91, 0x00, + 0x7d, 0x00, 0x7c, 0x00, 0x66, 0x00, 0x64, 0x00, 0x40, 0x00, 0x40, 0x00, + 0x1f, 0x00, 0x1e, 0x00, 0xf3, 0xff, 0xf2, 0xff, 0xcb, 0xff, 0xcc, 0xff, + 0xa1, 0xff, 0xa0, 0xff, 0x7c, 0xff, 0x7b, 0xff, 0x59, 0xff, 0x59, 0xff, + 0x3b, 0xff, 0x3a, 0xff, 0x28, 0xff, 0x27, 0xff, 0x18, 0xff, 0x17, 0xff, + 0x19, 0xff, 0x18, 0xff, 0x1d, 0xff, 0x20, 0xff, 0x33, 0xff, 0x31, 0xff, + 0x54, 0xff, 0x53, 0xff, 0x7e, 0xff, 0x7f, 0xff, 0xb9, 0xff, 0xb8, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0x4d, 0x00, 0x4e, 0x00, 0xaf, 0x00, 0xad, 0x00, + 0x11, 0x01, 0x13, 0x01, 0x85, 0x01, 0x82, 0x01, 0xfb, 0x01, 0xfd, 0x01, + 0x7a, 0x02, 0x79, 0x02, 0x00, 0x03, 0x00, 0x03, 0x85, 0x03, 0x85, 0x03, + 0x0d, 0x04, 0x0d, 0x04, 0x98, 0x04, 0x98, 0x04, 0x1a, 0x05, 0x1b, 0x05, + 0x9f, 0x05, 0x9f, 0x05, 0x19, 0x06, 0x19, 0x06, 0x8c, 0x06, 0x8d, 0x06, + 0xfa, 0x06, 0xf8, 0x06, 0x57, 0x07, 0x58, 0x07, 0xaf, 0x07, 0xaf, 0x07, + 0xf5, 0x07, 0xf5, 0x07, 0x31, 0x08, 0x31, 0x08, 0x5d, 0x08, 0x5c, 0x08, + 0x78, 0x08, 0x78, 0x08, 0x89, 0x08, 0x89, 0x08, 0x87, 0x08, 0x86, 0x08, + 0x7a, 0x08, 0x79, 0x08, 0x5e, 0x08, 0x5e, 0x08, 0x33, 0x08, 0x34, 0x08, + 0x00, 0x08, 0xff, 0x07, 0xbe, 0x07, 0xbe, 0x07, 0x7a, 0x07, 0x78, 0x07, + 0x26, 0x07, 0x26, 0x07, 0xd1, 0x06, 0xd1, 0x06, 0x76, 0x06, 0x76, 0x06, + 0x1b, 0x06, 0x1c, 0x06, 0xbd, 0x05, 0xbd, 0x05, 0x62, 0x05, 0x60, 0x05, + 0x05, 0x05, 0x08, 0x05, 0xb3, 0x04, 0xb4, 0x04, 0x63, 0x04, 0x64, 0x04, + 0x1c, 0x04, 0x1c, 0x04, 0xdd, 0x03, 0xde, 0x03, 0xa8, 0x03, 0xa9, 0x03, + 0x7f, 0x03, 0x7e, 0x03, 0x5e, 0x03, 0x5e, 0x03, 0x48, 0x03, 0x49, 0x03, + 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x42, 0x03, 0x4e, 0x03, 0x4e, 0x03, + 0x63, 0x03, 0x64, 0x03, 0x84, 0x03, 0x83, 0x03, 0xab, 0x03, 0xad, 0x03, + 0xda, 0x03, 0xda, 0x03, 0x0e, 0x04, 0x0f, 0x04, 0x44, 0x04, 0x45, 0x04, + 0x82, 0x04, 0x81, 0x04, 0xb9, 0x04, 0xbb, 0x04, 0xf6, 0x04, 0xf6, 0x04, + 0x2c, 0x05, 0x2d, 0x05, 0x5f, 0x05, 0x60, 0x05, 0x90, 0x05, 0x8e, 0x05, + 0xb0, 0x05, 0xb2, 0x05, 0xd0, 0x05, 0xcf, 0x05, 0xde, 0x05, 0xdf, 0x05, + 0xe7, 0x05, 0xe7, 0x05, 0xe0, 0x05, 0xe0, 0x05, 0xcb, 0x05, 0xce, 0x05, + 0xab, 0x05, 0xab, 0x05, 0x7d, 0x05, 0x7e, 0x05, 0x41, 0x05, 0x41, 0x05, + 0xf6, 0x04, 0xf7, 0x04, 0xa1, 0x04, 0xa1, 0x04, 0x3d, 0x04, 0x3c, 0x04, + 0xcf, 0x03, 0xd1, 0x03, 0x56, 0x03, 0x53, 0x03, 0xd5, 0x02, 0xd6, 0x02, + 0x4d, 0x02, 0x4b, 0x02, 0xbf, 0x01, 0xbe, 0x01, 0x2c, 0x01, 0x2b, 0x01, + 0x97, 0x00, 0x98, 0x00, 0x05, 0x00, 0x04, 0x00, 0x71, 0xff, 0x70, 0xff, + 0xe2, 0xfe, 0xe1, 0xfe, 0x58, 0xfe, 0x57, 0xfe, 0xd6, 0xfd, 0xd6, 0xfd, + 0x5b, 0xfd, 0x59, 0xfd, 0xe8, 0xfc, 0xe9, 0xfc, 0x84, 0xfc, 0x82, 0xfc, + 0x27, 0xfc, 0x25, 0xfc, 0xdb, 0xfb, 0xdb, 0xfb, 0x99, 0xfb, 0x97, 0xfb, + 0x65, 0xfb, 0x65, 0xfb, 0x40, 0xfb, 0x3f, 0xfb, 0x27, 0xfb, 0x27, 0xfb, + 0x1c, 0xfb, 0x1a, 0xfb, 0x1a, 0xfb, 0x1b, 0xfb, 0x27, 0xfb, 0x24, 0xfb, + 0x3a, 0xfb, 0x3d, 0xfb, 0x5d, 0xfb, 0x5b, 0xfb, 0x82, 0xfb, 0x82, 0xfb, + 0xae, 0xfb, 0xac, 0xfb, 0xe0, 0xfb, 0xe0, 0xfb, 0x11, 0xfc, 0x10, 0xfc, + 0x46, 0xfc, 0x47, 0xfc, 0x79, 0xfc, 0x7a, 0xfc, 0xa9, 0xfc, 0xa7, 0xfc, + 0xd6, 0xfc, 0xd8, 0xfc, 0xfe, 0xfc, 0xfe, 0xfc, 0x1d, 0xfd, 0x1d, 0xfd, + 0x37, 0xfd, 0x38, 0xfd, 0x42, 0xfd, 0x42, 0xfd, 0x4a, 0xfd, 0x4b, 0xfd, + 0x42, 0xfd, 0x42, 0xfd, 0x32, 0xfd, 0x32, 0xfd, 0x16, 0xfd, 0x17, 0xfd, + 0xec, 0xfc, 0xec, 0xfc, 0xbe, 0xfc, 0xbd, 0xfc, 0x7d, 0xfc, 0x7e, 0xfc, + 0x3a, 0xfc, 0x3a, 0xfc, 0xeb, 0xfb, 0xee, 0xfb, 0x95, 0xfb, 0x94, 0xfb, + 0x3b, 0xfb, 0x3c, 0xfb, 0xda, 0xfa, 0xdb, 0xfa, 0x78, 0xfa, 0x78, 0xfa, + 0x15, 0xfa, 0x16, 0xfa, 0xb2, 0xf9, 0xb1, 0xf9, 0x4e, 0xf9, 0x51, 0xf9, + 0xf2, 0xf8, 0xf1, 0xf8, 0x9b, 0xf8, 0x9c, 0xf8, 0x4a, 0xf8, 0x4b, 0xf8, + 0x05, 0xf8, 0x05, 0xf8, 0xc6, 0xf7, 0xc7, 0xf7, 0x95, 0xf7, 0x96, 0xf7, + 0x6f, 0xf7, 0x6f, 0xf7, 0x59, 0xf7, 0x58, 0xf7, 0x4f, 0xf7, 0x51, 0xf7, + 0x52, 0xf7, 0x50, 0xf7, 0x64, 0xf7, 0x66, 0xf7, 0x86, 0xf7, 0x85, 0xf7, + 0xb6, 0xf7, 0xb7, 0xf7, 0xf1, 0xf7, 0xf2, 0xf7, 0x3e, 0xf8, 0x3d, 0xf8, + 0x8f, 0xf8, 0x90, 0xf8, 0xf1, 0xf8, 0xf2, 0xf8, 0x57, 0xf9, 0x56, 0xf9, + 0xc9, 0xf9, 0xcb, 0xf9, 0x3f, 0xfa, 0x3f, 0xfa, 0xb9, 0xfa, 0xb9, 0xfa, + 0x36, 0xfb, 0x38, 0xfb, 0xb6, 0xfb, 0xb4, 0xfb, 0x30, 0xfc, 0x30, 0xfc, + 0xab, 0xfc, 0xac, 0xfc, 0x20, 0xfd, 0x1f, 0xfd, 0x8f, 0xfd, 0x90, 0xfd, + 0xf7, 0xfd, 0xf8, 0xfd, 0x57, 0xfe, 0x57, 0xfe, 0xad, 0xfe, 0xae, 0xfe, + 0xf8, 0xfe, 0xf7, 0xfe, 0x38, 0xff, 0x39, 0xff, 0x6d, 0xff, 0x6b, 0xff, + 0x95, 0xff, 0x95, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xc3, 0xff, 0xc3, 0xff, + 0xcb, 0xff, 0xcb, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xbb, 0xff, 0xba, 0xff, + 0xa6, 0xff, 0xa6, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x6a, 0xff, 0x6a, 0xff, + 0x46, 0xff, 0x48, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0xf9, 0xfe, 0xfa, 0xfe, + 0xd3, 0xfe, 0xd3, 0xfe, 0xb0, 0xfe, 0xb1, 0xfe, 0x90, 0xfe, 0x90, 0xfe, + 0x78, 0xfe, 0x79, 0xfe, 0x68, 0xfe, 0x67, 0xfe, 0x5e, 0xfe, 0x5e, 0xfe, + 0x60, 0xfe, 0x60, 0xfe, 0x6a, 0xfe, 0x6b, 0xfe, 0x82, 0xfe, 0x83, 0xfe, + 0xa5, 0xfe, 0xa4, 0xfe, 0xd3, 0xfe, 0xd5, 0xfe, 0x11, 0xff, 0x10, 0xff, + 0x58, 0xff, 0x57, 0xff, 0xab, 0xff, 0xab, 0xff, 0x08, 0x00, 0x08, 0x00, + 0x71, 0x00, 0x71, 0x00, 0xe2, 0x00, 0xe3, 0x00, 0x58, 0x01, 0x59, 0x01, + 0xd9, 0x01, 0xd8, 0x01, 0x5b, 0x02, 0x5c, 0x02, 0xe2, 0x02, 0xe0, 0x02, + 0x68, 0x03, 0x6a, 0x03, 0xee, 0x03, 0xef, 0x03, 0x74, 0x04, 0x73, 0x04, + 0xf4, 0x04, 0xf5, 0x04, 0x6f, 0x05, 0x6f, 0x05, 0xe1, 0x05, 0xe2, 0x05, + 0x4d, 0x06, 0x4d, 0x06, 0xab, 0x06, 0xac, 0x06, 0x03, 0x07, 0x02, 0x07, + 0x49, 0x07, 0x49, 0x07, 0x86, 0x07, 0x85, 0x07, 0xb3, 0x07, 0xb4, 0x07, + 0xd4, 0x07, 0xd3, 0x07, 0xe7, 0x07, 0xe9, 0x07, 0xea, 0x07, 0xe9, 0x07, + 0xe1, 0x07, 0xe0, 0x07, 0xca, 0x07, 0xcb, 0x07, 0xa8, 0x07, 0xa6, 0x07, + 0x79, 0x07, 0x7d, 0x07, 0x45, 0x07, 0x42, 0x07, 0x03, 0x07, 0x05, 0x07, + 0xbf, 0x06, 0xbe, 0x06, 0x70, 0x06, 0x70, 0x06, 0x22, 0x06, 0x22, 0x06, + 0xd2, 0x05, 0xd1, 0x05, 0x7e, 0x05, 0x7e, 0x05, 0x2c, 0x05, 0x2f, 0x05, + 0xe1, 0x04, 0xdf, 0x04, 0x95, 0x04, 0x97, 0x04, 0x55, 0x04, 0x54, 0x04, + 0x17, 0x04, 0x17, 0x04, 0xe5, 0x03, 0xe6, 0x03, 0xba, 0x03, 0xb7, 0x03, + 0x99, 0x03, 0x9b, 0x03, 0x81, 0x03, 0x80, 0x03, 0x77, 0x03, 0x78, 0x03, + 0x75, 0x03, 0x75, 0x03, 0x7d, 0x03, 0x7d, 0x03, 0x92, 0x03, 0x91, 0x03, + 0xac, 0x03, 0xae, 0x03, 0xd2, 0x03, 0xd3, 0x03, 0xff, 0x03, 0xff, 0x03, + 0x2f, 0x04, 0x30, 0x04, 0x6b, 0x04, 0x6a, 0x04, 0xa3, 0x04, 0xa5, 0x04, + 0xe2, 0x04, 0xe0, 0x04, 0x1f, 0x05, 0x1f, 0x05, 0x58, 0x05, 0x59, 0x05, + 0x92, 0x05, 0x92, 0x05, 0xc4, 0x05, 0xc4, 0x05, 0xf5, 0x05, 0xf6, 0x05, + 0x18, 0x06, 0x16, 0x06, 0x35, 0x06, 0x36, 0x06, 0x4b, 0x06, 0x49, 0x06, + 0x50, 0x06, 0x50, 0x06, 0x4e, 0x06, 0x4f, 0x06, 0x39, 0x06, 0x38, 0x06, + 0x1b, 0x06, 0x1b, 0x06, 0xf0, 0x05, 0xef, 0x05, 0xb4, 0x05, 0xb4, 0x05, + 0x6f, 0x05, 0x70, 0x05, 0x1c, 0x05, 0x1a, 0x05, 0xbd, 0x04, 0xc0, 0x04, + 0x53, 0x04, 0x52, 0x04, 0xe1, 0x03, 0xe3, 0x03, 0x66, 0x03, 0x64, 0x03, + 0xe4, 0x02, 0xe5, 0x02, 0x5a, 0x02, 0x5b, 0x02, 0xd1, 0x01, 0xd0, 0x01, + 0x40, 0x01, 0x41, 0x01, 0xb6, 0x00, 0xb5, 0x00, 0x29, 0x00, 0x29, 0x00, + 0xa1, 0xff, 0xa0, 0xff, 0x1b, 0xff, 0x1d, 0xff, 0xa0, 0xfe, 0xa0, 0xfe, + 0x2d, 0xfe, 0x2a, 0xfe, 0xbf, 0xfd, 0xc0, 0xfd, 0x5d, 0xfd, 0x5e, 0xfd, + 0x07, 0xfd, 0x06, 0xfd, 0xbd, 0xfc, 0xbc, 0xfc, 0x7d, 0xfc, 0x7c, 0xfc, + 0x4c, 0xfc, 0x4c, 0xfc, 0x27, 0xfc, 0x27, 0xfc, 0x0e, 0xfc, 0x0e, 0xfc, + 0x03, 0xfc, 0x01, 0xfc, 0xfe, 0xfb, 0x00, 0xfc, 0x09, 0xfc, 0x08, 0xfc, + 0x1a, 0xfc, 0x1b, 0xfc, 0x37, 0xfc, 0x34, 0xfc, 0x57, 0xfc, 0x57, 0xfc, + 0x7d, 0xfc, 0x7d, 0xfc, 0xa9, 0xfc, 0xa6, 0xfc, 0xd3, 0xfc, 0xd4, 0xfc, + 0x00, 0xfd, 0xff, 0xfc, 0x2e, 0xfd, 0x2c, 0xfd, 0x55, 0xfd, 0x54, 0xfd, + 0x7d, 0xfd, 0x7b, 0xfd, 0x96, 0xfd, 0x97, 0xfd, 0xb3, 0xfd, 0xb0, 0xfd, + 0xc1, 0xfd, 0xbf, 0xfd, 0xc7, 0xfd, 0xc7, 0xfd, 0xc7, 0xfd, 0xc3, 0xfd, + 0xb5, 0xfd, 0xb8, 0xfd, 0xa0, 0xfd, 0x9f, 0xfd, 0x7d, 0xfd, 0x7d, 0xfd, + 0x4f, 0xfd, 0x4e, 0xfd, 0x18, 0xfd, 0x17, 0xfd, 0xd6, 0xfc, 0xd5, 0xfc, + 0x8b, 0xfc, 0x8c, 0xfc, 0x3a, 0xfc, 0x37, 0xfc, 0xe0, 0xfb, 0xe0, 0xfb, + 0x83, 0xfb, 0x81, 0xfb, 0x1e, 0xfb, 0x1f, 0xfb, 0xb9, 0xfa, 0xb8, 0xfa, + 0x54, 0xfa, 0x54, 0xfa, 0xee, 0xf9, 0xec, 0xf9, 0x8b, 0xf9, 0x8b, 0xf9, + 0x2c, 0xf9, 0x2a, 0xf9, 0xd1, 0xf8, 0xd3, 0xf8, 0x82, 0xf8, 0x81, 0xf8, + 0x36, 0xf8, 0x35, 0xf8, 0xf8, 0xf7, 0xf8, 0xf7, 0xc2, 0xf7, 0xc1, 0xf7, + 0x9c, 0xf7, 0x9b, 0xf7, 0x7f, 0xf7, 0x80, 0xf7, 0x70, 0xf7, 0x70, 0xf7, + 0x72, 0xf7, 0x72, 0xf7, 0x7f, 0xf7, 0x7f, 0xf7, 0x9b, 0xf7, 0x9b, 0xf7, + 0xc6, 0xf7, 0xc6, 0xf7, 0xf9, 0xf7, 0xf9, 0xf7, 0x3b, 0xf8, 0x3c, 0xf8, + 0x88, 0xf8, 0x87, 0xf8, 0xdf, 0xf8, 0xe0, 0xf8, 0x3f, 0xf9, 0x3e, 0xf9, + 0xa3, 0xf9, 0xa6, 0xf9, 0x14, 0xfa, 0x13, 0xfa, 0x80, 0xfa, 0x81, 0xfa, + 0xf4, 0xfa, 0xf7, 0xfa, 0x67, 0xfb, 0x65, 0xfb, 0xda, 0xfb, 0xdb, 0xfb, + 0x49, 0xfc, 0x4a, 0xfc, 0xb4, 0xfc, 0xb3, 0xfc, 0x19, 0xfd, 0x1b, 0xfd, + 0x79, 0xfd, 0x78, 0xfd, 0xce, 0xfd, 0xcf, 0xfd, 0x1d, 0xfe, 0x1c, 0xfe, + 0x5d, 0xfe, 0x5d, 0xfe, 0x99, 0xfe, 0x98, 0xfe, 0xc2, 0xfe, 0xc4, 0xfe, + 0xe9, 0xfe, 0xe7, 0xfe, 0xff, 0xfe, 0x00, 0xff, 0x0c, 0xff, 0x0c, 0xff, + 0x12, 0xff, 0x11, 0xff, 0x09, 0xff, 0x09, 0xff, 0xfb, 0xfe, 0xfb, 0xfe, + 0xe5, 0xfe, 0xe5, 0xfe, 0xc8, 0xfe, 0xc8, 0xfe, 0xa9, 0xfe, 0xa8, 0xfe, + 0x83, 0xfe, 0x85, 0xfe, 0x60, 0xfe, 0x5e, 0xfe, 0x38, 0xfe, 0x3a, 0xfe, + 0x16, 0xfe, 0x15, 0xfe, 0xf4, 0xfd, 0xf5, 0xfd, 0xd9, 0xfd, 0xd9, 0xfd, + 0xc2, 0xfd, 0xc1, 0xfd, 0xb2, 0xfd, 0xb3, 0xfd, 0xad, 0xfd, 0xad, 0xfd, + 0xaf, 0xfd, 0xb0, 0xfd, 0xbe, 0xfd, 0xbe, 0xfd, 0xd8, 0xfd, 0xd8, 0xfd, + 0xfb, 0xfd, 0xfc, 0xfd, 0x2e, 0xfe, 0x2b, 0xfe, 0x6a, 0xfe, 0x6a, 0xfe, + 0xb2, 0xfe, 0xb1, 0xfe, 0x07, 0xff, 0x06, 0xff, 0x62, 0xff, 0x63, 0xff, + 0xcd, 0xff, 0xcc, 0xff, 0x3c, 0x00, 0x3b, 0x00, 0xb3, 0x00, 0xb4, 0x00, + 0x31, 0x01, 0x2f, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0x38, 0x02, 0x37, 0x02, + 0xbc, 0x02, 0xbb, 0x02, 0x41, 0x03, 0x41, 0x03, 0xc5, 0x03, 0xc3, 0x03, + 0x42, 0x04, 0x41, 0x04, 0xbc, 0x04, 0xbc, 0x04, 0x2f, 0x05, 0x2f, 0x05, + 0x98, 0x05, 0x97, 0x05, 0xf7, 0x05, 0xf8, 0x05, 0x4e, 0x06, 0x4b, 0x06, + 0x95, 0x06, 0x97, 0x06, 0xd5, 0x06, 0xd5, 0x06, 0x04, 0x07, 0x03, 0x07, + 0x25, 0x07, 0x27, 0x07, 0x3e, 0x07, 0x3b, 0x07, 0x43, 0x07, 0x44, 0x07, + 0x41, 0x07, 0x40, 0x07, 0x2f, 0x07, 0x2e, 0x07, 0x12, 0x07, 0x13, 0x07, + 0xee, 0x06, 0xed, 0x06, 0xbc, 0x06, 0xbc, 0x06, 0x85, 0x06, 0x86, 0x06, + 0x49, 0x06, 0x46, 0x06, 0x05, 0x06, 0x05, 0x06, 0xc2, 0x05, 0xc1, 0x05, + 0x78, 0x05, 0x77, 0x05, 0x30, 0x05, 0x2f, 0x05, 0xe9, 0x04, 0xe9, 0x04, + 0xa8, 0x04, 0xa6, 0x04, 0x67, 0x04, 0x68, 0x04, 0x2f, 0x04, 0x2e, 0x04, + 0xfe, 0x03, 0xfd, 0x03, 0xd3, 0x03, 0xd4, 0x03, 0xb3, 0x03, 0xb1, 0x03, + 0x9b, 0x03, 0x9c, 0x03, 0x8d, 0x03, 0x8e, 0x03, 0x8a, 0x03, 0x89, 0x03, + 0x93, 0x03, 0x92, 0x03, 0xa0, 0x03, 0x9f, 0x03, 0xbb, 0x03, 0xbb, 0x03, + 0xde, 0x03, 0xdb, 0x03, 0x06, 0x04, 0x09, 0x04, 0x3c, 0x04, 0x38, 0x04, + 0x6e, 0x04, 0x70, 0x04, 0xaf, 0x04, 0xab, 0x04, 0xe9, 0x04, 0xe9, 0x04, + 0x29, 0x05, 0x2a, 0x05, 0x6a, 0x05, 0x68, 0x05, 0xa6, 0x05, 0xa4, 0x05, + 0xe2, 0x05, 0xe3, 0x05, 0x17, 0x06, 0x14, 0x06, 0x45, 0x06, 0x48, 0x06, + 0x6f, 0x06, 0x6d, 0x06, 0x8d, 0x06, 0x8c, 0x06, 0xa0, 0x06, 0xa0, 0x06, + 0xa9, 0x06, 0xaa, 0x06, 0xa9, 0x06, 0xa7, 0x06, 0x98, 0x06, 0x99, 0x06, + 0x7c, 0x06, 0x7c, 0x06, 0x57, 0x06, 0x55, 0x06, 0x1c, 0x06, 0x1e, 0x06, + 0xdf, 0x05, 0xde, 0x05, 0x8e, 0x05, 0x8d, 0x05, 0x34, 0x05, 0x33, 0x05, + 0xd2, 0x04, 0xd1, 0x04, 0x63, 0x04, 0x63, 0x04, 0xee, 0x03, 0xf0, 0x03, + 0x73, 0x03, 0x6f, 0x03, 0xf0, 0x02, 0xf3, 0x02, 0x6e, 0x02, 0x6c, 0x02, + 0xe6, 0x01, 0xe7, 0x01, 0x60, 0x01, 0x61, 0x01, 0xdc, 0x00, 0xda, 0x00, + 0x57, 0x00, 0x5a, 0x00, 0xdc, 0xff, 0xdb, 0xff, 0x64, 0xff, 0x63, 0xff, + 0xf5, 0xfe, 0xf5, 0xfe, 0x90, 0xfe, 0x8f, 0xfe, 0x32, 0xfe, 0x33, 0xfe, + 0xe0, 0xfd, 0xdf, 0xfd, 0x99, 0xfd, 0x98, 0xfd, 0x5e, 0xfd, 0x5d, 0xfd, + 0x2c, 0xfd, 0x2f, 0xfd, 0x0c, 0xfd, 0x0a, 0xfd, 0xf0, 0xfc, 0xf0, 0xfc, + 0xe6, 0xfc, 0xe5, 0xfc, 0xe1, 0xfc, 0xe1, 0xfc, 0xe9, 0xfc, 0xea, 0xfc, + 0xf8, 0xfc, 0xf8, 0xfc, 0x12, 0xfd, 0x12, 0xfd, 0x2c, 0xfd, 0x2c, 0xfd, + 0x51, 0xfd, 0x51, 0xfd, 0x74, 0xfd, 0x74, 0xfd, 0x9d, 0xfd, 0x9c, 0xfd, + 0xc3, 0xfd, 0xc3, 0xfd, 0xe7, 0xfd, 0xe6, 0xfd, 0x0b, 0xfe, 0x0c, 0xfe, + 0x28, 0xfe, 0x27, 0xfe, 0x3f, 0xfe, 0x3e, 0xfe, 0x52, 0xfe, 0x51, 0xfe, + 0x58, 0xfe, 0x58, 0xfe, 0x5d, 0xfe, 0x5b, 0xfe, 0x4f, 0xfe, 0x4f, 0xfe, + 0x3d, 0xfe, 0x3d, 0xfe, 0x20, 0xfe, 0x21, 0xfe, 0xf5, 0xfd, 0xf5, 0xfd, + 0xc6, 0xfd, 0xc6, 0xfd, 0x86, 0xfd, 0x87, 0xfd, 0x43, 0xfd, 0x41, 0xfd, + 0xf1, 0xfc, 0xf5, 0xfc, 0x9d, 0xfc, 0x9c, 0xfc, 0x41, 0xfc, 0x43, 0xfc, + 0xdd, 0xfb, 0xdc, 0xfb, 0x7a, 0xfb, 0x7c, 0xfb, 0x0f, 0xfb, 0x11, 0xfb, + 0xaa, 0xfa, 0xab, 0xfa, 0x40, 0xfa, 0x40, 0xfa, 0xdd, 0xf9, 0xe0, 0xf9, + 0x7d, 0xf9, 0x7c, 0xf9, 0x20, 0xf9, 0x21, 0xf9, 0xcf, 0xf8, 0xce, 0xf8, + 0x80, 0xf8, 0x81, 0xf8, 0x41, 0xf8, 0x41, 0xf8, 0x07, 0xf8, 0x08, 0xf8, + 0xdd, 0xf7, 0xdf, 0xf7, 0xbd, 0xf7, 0xbd, 0xf7, 0xad, 0xf7, 0xaf, 0xf7, + 0xa7, 0xf7, 0xa9, 0xf7, 0xb0, 0xf7, 0xb0, 0xf7, 0xc9, 0xf7, 0xca, 0xf7, + 0xe5, 0xf7, 0xe8, 0xf7, 0x1a, 0xf8, 0x1a, 0xf8, 0x53, 0xf8, 0x54, 0xf8, + 0x97, 0xf8, 0x97, 0xf8, 0xe8, 0xf8, 0xe8, 0xf8, 0x3c, 0xf9, 0x3d, 0xf9, + 0x9d, 0xf9, 0x9b, 0xf9, 0xfc, 0xf9, 0xfd, 0xf9, 0x64, 0xfa, 0x63, 0xfa, + 0xce, 0xfa, 0xce, 0xfa, 0x33, 0xfb, 0x35, 0xfb, 0x9d, 0xfb, 0x9b, 0xfb, + 0x00, 0xfc, 0x03, 0xfc, 0x63, 0xfc, 0x61, 0xfc, 0xbd, 0xfc, 0xbf, 0xfc, + 0x11, 0xfd, 0x12, 0xfd, 0x5e, 0xfd, 0x5f, 0xfd, 0xa2, 0xfd, 0xa4, 0xfd, + 0xdd, 0xfd, 0xdd, 0xfd, 0x0e, 0xfe, 0x0f, 0xfe, 0x33, 0xfe, 0x33, 0xfe, + 0x51, 0xfe, 0x51, 0xfe, 0x60, 0xfe, 0x63, 0xfe, 0x6c, 0xfe, 0x6a, 0xfe, + 0x67, 0xfe, 0x69, 0xfe, 0x60, 0xfe, 0x61, 0xfe, 0x4d, 0xfe, 0x4f, 0xfe, + 0x36, 0xfe, 0x36, 0xfe, 0x19, 0xfe, 0x18, 0xfe, 0xf4, 0xfd, 0xf7, 0xfd, + 0xd3, 0xfd, 0xd3, 0xfd, 0xab, 0xfd, 0xac, 0xfd, 0x89, 0xfd, 0x8b, 0xfd, + 0x64, 0xfd, 0x63, 0xfd, 0x47, 0xfd, 0x4a, 0xfd, 0x2a, 0xfd, 0x29, 0xfd, + 0x18, 0xfd, 0x1a, 0xfd, 0x0a, 0xfd, 0x09, 0xfd, 0x04, 0xfd, 0x07, 0xfd, + 0x0d, 0xfd, 0x0b, 0xfd, 0x18, 0xfd, 0x19, 0xfd, 0x37, 0xfd, 0x38, 0xfd, + 0x5a, 0xfd, 0x59, 0xfd, 0x8d, 0xfd, 0x8d, 0xfd, 0xc9, 0xfd, 0xca, 0xfd, + 0x10, 0xfe, 0x10, 0xfe, 0x65, 0xfe, 0x66, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, + 0x28, 0xff, 0x2a, 0xff, 0x9a, 0xff, 0x98, 0xff, 0x0d, 0x00, 0x0d, 0x00, + 0x89, 0x00, 0x89, 0x00, 0x08, 0x01, 0x09, 0x01, 0x89, 0x01, 0x8a, 0x01, + 0x0e, 0x02, 0x0d, 0x02, 0x90, 0x02, 0x8f, 0x02, 0x11, 0x03, 0x11, 0x03, + 0x8c, 0x03, 0x8c, 0x03, 0x04, 0x04, 0x05, 0x04, 0x73, 0x04, 0x73, 0x04, + 0xdb, 0x04, 0xdc, 0x04, 0x3b, 0x05, 0x3b, 0x05, 0x8f, 0x05, 0x91, 0x05, + 0xd9, 0x05, 0xd8, 0x05, 0x15, 0x06, 0x15, 0x06, 0x47, 0x06, 0x47, 0x06, + 0x68, 0x06, 0x6c, 0x06, 0x83, 0x06, 0x83, 0x06, 0x8f, 0x06, 0x8f, 0x06, + 0x8d, 0x06, 0x8d, 0x06, 0x82, 0x06, 0x83, 0x06, 0x6b, 0x06, 0x6c, 0x06, + 0x4c, 0x06, 0x4c, 0x06, 0x23, 0x06, 0x24, 0x06, 0xf3, 0x05, 0xf3, 0x05, + 0xbf, 0x05, 0xc0, 0x05, 0x83, 0x05, 0x84, 0x05, 0x47, 0x05, 0x46, 0x05, + 0x0a, 0x05, 0x0c, 0x05, 0xca, 0x04, 0xcb, 0x04, 0x8f, 0x04, 0x90, 0x04, + 0x57, 0x04, 0x56, 0x04, 0x1e, 0x04, 0x21, 0x04, 0xf0, 0x03, 0xef, 0x03, + 0xc6, 0x03, 0xc8, 0x03, 0xa7, 0x03, 0xa5, 0x03, 0x8f, 0x03, 0x8f, 0x03, + 0x83, 0x03, 0x83, 0x03, 0x7f, 0x03, 0x80, 0x03, 0x89, 0x03, 0x89, 0x03, + 0x99, 0x03, 0x99, 0x03, 0xb3, 0x03, 0xb4, 0x03, 0xd9, 0x03, 0xd9, 0x03, + 0x03, 0x04, 0x03, 0x04, 0x35, 0x04, 0x35, 0x04, 0x6c, 0x04, 0x6b, 0x04, + 0xa9, 0x04, 0xa8, 0x04, 0xe5, 0x04, 0xe7, 0x04, 0x27, 0x05, 0x26, 0x05, + 0x65, 0x05, 0x67, 0x05, 0xa6, 0x05, 0xa6, 0x05, 0xe1, 0x05, 0xe1, 0x05, + 0x17, 0x06, 0x16, 0x06, 0x4c, 0x06, 0x4b, 0x06, 0x73, 0x06, 0x73, 0x06, + 0x9a, 0x06, 0x98, 0x06, 0xb1, 0x06, 0xb1, 0x06, 0xc2, 0x06, 0xc1, 0x06, + 0xc8, 0x06, 0xc7, 0x06, 0xbf, 0x06, 0xbf, 0x06, 0xb2, 0x06, 0xb1, 0x06, + 0x93, 0x06, 0x92, 0x06, 0x6c, 0x06, 0x6a, 0x06, 0x37, 0x06, 0x39, 0x06, + 0xfa, 0x05, 0xf8, 0x05, 0xb1, 0x05, 0xb2, 0x05, 0x5e, 0x05, 0x5d, 0x05, + 0x04, 0x05, 0x04, 0x05, 0xa2, 0x04, 0xa3, 0x04, 0x3a, 0x04, 0x3a, 0x04, + 0xcd, 0x03, 0xcd, 0x03, 0x5b, 0x03, 0x5b, 0x03, 0xeb, 0x02, 0xec, 0x02, + 0x75, 0x02, 0x74, 0x02, 0x04, 0x02, 0x03, 0x02, 0x91, 0x01, 0x91, 0x01, + 0x23, 0x01, 0x22, 0x01, 0xba, 0x00, 0xbb, 0x00, 0x55, 0x00, 0x53, 0x00, + 0xf8, 0xff, 0xf9, 0xff, 0x9f, 0xff, 0x9e, 0xff, 0x53, 0xff, 0x53, 0xff, + 0x0c, 0xff, 0x0b, 0xff, 0xd0, 0xfe, 0xcf, 0xfe, 0x9c, 0xfe, 0x9d, 0xfe, + 0x6f, 0xfe, 0x70, 0xfe, 0x51, 0xfe, 0x4e, 0xfe, 0x34, 0xfe, 0x35, 0xfe, + 0x25, 0xfe, 0x23, 0xfe, 0x1a, 0xfe, 0x1a, 0xfe, 0x17, 0xfe, 0x16, 0xfe, + 0x19, 0xfe, 0x19, 0xfe, 0x20, 0xfe, 0x1e, 0xfe, 0x2a, 0xfe, 0x2b, 0xfe, + 0x38, 0xfe, 0x37, 0xfe, 0x48, 0xfe, 0x47, 0xfe, 0x58, 0xfe, 0x56, 0xfe, + 0x66, 0xfe, 0x65, 0xfe, 0x73, 0xfe, 0x71, 0xfe, 0x7d, 0xfe, 0x7c, 0xfe, + 0x84, 0xfe, 0x81, 0xfe, 0x84, 0xfe, 0x84, 0xfe, 0x7f, 0xfe, 0x7e, 0xfe, + 0x76, 0xfe, 0x74, 0xfe, 0x62, 0xfe, 0x62, 0xfe, 0x4d, 0xfe, 0x4a, 0xfe, + 0x2b, 0xfe, 0x2b, 0xfe, 0x05, 0xfe, 0x03, 0xfe, 0xd8, 0xfd, 0xd7, 0xfd, + 0xa2, 0xfd, 0xa0, 0xfd, 0x6a, 0xfd, 0x68, 0xfd, 0x27, 0xfd, 0x26, 0xfd, + 0xe0, 0xfc, 0xdf, 0xfc, 0x97, 0xfc, 0x96, 0xfc, 0x48, 0xfc, 0x47, 0xfc, + 0xf9, 0xfb, 0xf9, 0xfb, 0xa7, 0xfb, 0xa5, 0xfb, 0x53, 0xfb, 0x54, 0xfb, + 0x03, 0xfb, 0x01, 0xfb, 0xb3, 0xfa, 0xb3, 0xfa, 0x65, 0xfa, 0x65, 0xfa, + 0x1d, 0xfa, 0x1c, 0xfa, 0xd4, 0xf9, 0xd4, 0xf9, 0x9c, 0xf9, 0x9a, 0xf9, + 0x5e, 0xf9, 0x5e, 0xf9, 0x32, 0xf9, 0x30, 0xf9, 0x06, 0xf9, 0x07, 0xf9, + 0xe7, 0xf8, 0xe5, 0xf8, 0xcf, 0xf8, 0xcf, 0xf8, 0xbf, 0xf8, 0xbd, 0xf8, + 0xbc, 0xf8, 0xbc, 0xf8, 0xbf, 0xf8, 0xbd, 0xf8, 0xcb, 0xf8, 0xc9, 0xf8, + 0xdd, 0xf8, 0xdd, 0xf8, 0xfc, 0xf8, 0xf8, 0xf8, 0x1d, 0xf9, 0x1e, 0xf9, + 0x4a, 0xf9, 0x47, 0xf9, 0x79, 0xf9, 0x78, 0xf9, 0xaf, 0xf9, 0xae, 0xf9, + 0xe7, 0xf9, 0xe6, 0xf9, 0x25, 0xfa, 0x24, 0xfa, 0x63, 0xfa, 0x61, 0xfa, + 0xa3, 0xfa, 0xa3, 0xfa, 0xe3, 0xfa, 0xe3, 0xfa, 0x25, 0xfb, 0x24, 0xfb, + 0x61, 0xfb, 0x61, 0xfb, 0x9f, 0xfb, 0x9d, 0xfb, 0xd7, 0xfb, 0xd7, 0xfb, + 0x0a, 0xfc, 0x0b, 0xfc, 0x3e, 0xfc, 0x3c, 0xfc, 0x68, 0xfc, 0x69, 0xfc, + 0x93, 0xfc, 0x91, 0xfc, 0xb3, 0xfc, 0xb2, 0xfc, 0xcf, 0xfc, 0xd0, 0xfc, + 0xe9, 0xfc, 0xe9, 0xfc, 0xfa, 0xfc, 0xfa, 0xfc, 0x0a, 0xfd, 0x08, 0xfd, + 0x10, 0xfd, 0x11, 0xfd, 0x19, 0xfd, 0x17, 0xfd, 0x19, 0xfd, 0x1a, 0xfd, + 0x19, 0xfd, 0x18, 0xfd, 0x19, 0xfd, 0x18, 0xfd, 0x15, 0xfd, 0x12, 0xfd, + 0x10, 0xfd, 0x12, 0xfd, 0x0c, 0xfd, 0x0a, 0xfd, 0x0b, 0xfd, 0x0b, 0xfd, + 0x0a, 0xfd, 0x0b, 0xfd, 0x0e, 0xfd, 0x0d, 0xfd, 0x15, 0xfd, 0x16, 0xfd, + 0x1f, 0xfd, 0x1e, 0xfd, 0x2f, 0xfd, 0x2f, 0xfd, 0x44, 0xfd, 0x43, 0xfd, + 0x5d, 0xfd, 0x5e, 0xfd, 0x80, 0xfd, 0x7e, 0xfd, 0xa4, 0xfd, 0xa5, 0xfd, + 0xd0, 0xfd, 0xd0, 0xfd, 0x03, 0xfe, 0x02, 0xfe, 0x3c, 0xfe, 0x3e, 0xfe, + 0x7b, 0xfe, 0x7a, 0xfe, 0xbe, 0xfe, 0xbf, 0xfe, 0x09, 0xff, 0x08, 0xff, + 0x55, 0xff, 0x55, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0x52, 0x00, 0x52, 0x00, 0xaa, 0x00, 0xab, 0x00, 0x04, 0x01, 0x02, 0x01, + 0x5e, 0x01, 0x5f, 0x01, 0xb3, 0x01, 0xb3, 0x01, 0x0c, 0x02, 0x0c, 0x02, + 0x5e, 0x02, 0x5e, 0x02, 0xb1, 0x02, 0xaf, 0x02, 0xfc, 0x02, 0xfd, 0x02, + 0x45, 0x03, 0x43, 0x03, 0x8a, 0x03, 0x8a, 0x03, 0xc7, 0x03, 0xc4, 0x03, + 0xff, 0x03, 0x00, 0x04, 0x32, 0x04, 0x30, 0x04, 0x5c, 0x04, 0x5c, 0x04, + 0x83, 0x04, 0x82, 0x04, 0xa1, 0x04, 0xa0, 0x04, 0xbb, 0x04, 0xbc, 0x04, + 0xcf, 0x04, 0xcb, 0x04, 0xdc, 0x04, 0xdc, 0x04, 0xe8, 0x04, 0xe5, 0x04, + 0xe8, 0x04, 0xe9, 0x04, 0xeb, 0x04, 0xe9, 0x04, 0xe6, 0x04, 0xe6, 0x04, + 0xe0, 0x04, 0xe1, 0x04, 0xdb, 0x04, 0xd7, 0x04, 0xcc, 0x04, 0xce, 0x04, + 0xc5, 0x04, 0xc3, 0x04, 0xba, 0x04, 0xb8, 0x04, 0xae, 0x04, 0xae, 0x04, + 0xa6, 0x04, 0xa5, 0x04, 0x9d, 0x04, 0x9b, 0x04, 0x97, 0x04, 0x98, 0x04, + 0x95, 0x04, 0x91, 0x04, 0x91, 0x04, 0x91, 0x04, 0x94, 0x04, 0x93, 0x04, + 0x99, 0x04, 0x97, 0x04, 0xa3, 0x04, 0xa2, 0x04, 0xac, 0x04, 0xac, 0x04, + 0xbb, 0x04, 0xb9, 0x04, 0xcb, 0x04, 0xcb, 0x04, 0xdf, 0x04, 0xdd, 0x04, + 0xf6, 0x04, 0xf5, 0x04, 0x0c, 0x05, 0x0b, 0x05, 0x25, 0x05, 0x25, 0x05, + 0x3e, 0x05, 0x3e, 0x05, 0x57, 0x05, 0x56, 0x05, 0x72, 0x05, 0x72, 0x05, + 0x89, 0x05, 0x88, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0xb6, 0x05, 0xb4, 0x05, + 0xc8, 0x05, 0xc6, 0x05, 0xd6, 0x05, 0xd5, 0x05, 0xe1, 0x05, 0xe0, 0x05, + 0xe7, 0x05, 0xe7, 0x05, 0xea, 0x05, 0xe9, 0x05, 0xe5, 0x05, 0xe5, 0x05, + 0xde, 0x05, 0xdd, 0x05, 0xd0, 0x05, 0xcf, 0x05, 0xbc, 0x05, 0xbb, 0x05, + 0xa3, 0x05, 0xa1, 0x05, 0x82, 0x05, 0x83, 0x05, 0x5e, 0x05, 0x5e, 0x05, + 0x35, 0x05, 0x34, 0x05, 0x08, 0x05, 0x06, 0x05, 0xd2, 0x04, 0xd2, 0x04, + 0x9d, 0x04, 0x9c, 0x04, 0x60, 0x04, 0x5f, 0x04, 0x23, 0x04, 0x23, 0x04, + 0xe0, 0x03, 0xdf, 0x03, 0x9d, 0x03, 0x9f, 0x03, 0x58, 0x03, 0x56, 0x03, + 0x11, 0x03, 0x12, 0x03, 0xcb, 0x02, 0xca, 0x02, 0x83, 0x02, 0x86, 0x02, + 0x41, 0x02, 0x3f, 0x02, 0xfa, 0x01, 0xfb, 0x01, 0xb9, 0x01, 0xb9, 0x01, + 0x7b, 0x01, 0x79, 0x01, 0x3c, 0x01, 0x3e, 0x01, 0x04, 0x01, 0x03, 0x01, + 0xcc, 0x00, 0xcb, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x67, 0x00, 0x67, 0x00, + 0x3d, 0x00, 0x3c, 0x00, 0x13, 0x00, 0x12, 0x00, 0xec, 0xff, 0xeb, 0xff, + 0xc9, 0xff, 0xca, 0xff, 0xaa, 0xff, 0xa9, 0xff, 0x8c, 0xff, 0x8d, 0xff, + 0x72, 0xff, 0x71, 0xff, 0x59, 0xff, 0x5b, 0xff, 0x42, 0xff, 0x40, 0xff, + 0x2b, 0xff, 0x2b, 0xff, 0x15, 0xff, 0x14, 0xff, 0x01, 0xff, 0x00, 0xff, + 0xec, 0xfe, 0xea, 0xfe, 0xd5, 0xfe, 0xd5, 0xfe, 0xbc, 0xfe, 0xbb, 0xfe, + 0xa6, 0xfe, 0xa4, 0xfe, 0x89, 0xfe, 0x89, 0xfe, 0x6e, 0xfe, 0x6b, 0xfe, + 0x4d, 0xfe, 0x4d, 0xfe, 0x2b, 0xfe, 0x2a, 0xfe, 0x08, 0xfe, 0x06, 0xfe, + 0xdf, 0xfd, 0xe1, 0xfd, 0xb8, 0xfd, 0xb3, 0xfd, 0x8b, 0xfd, 0x8c, 0xfd, + 0x5b, 0xfd, 0x5b, 0xfd, 0x2c, 0xfd, 0x29, 0xfd, 0xf6, 0xfc, 0xf8, 0xfc, + 0xc4, 0xfc, 0xc1, 0xfc, 0x8d, 0xfc, 0x8f, 0xfc, 0x57, 0xfc, 0x55, 0xfc, + 0x20, 0xfc, 0x21, 0xfc, 0xe8, 0xfb, 0xe7, 0xfb, 0xb2, 0xfb, 0xb2, 0xfb, + 0x7d, 0xfb, 0x7b, 0xfb, 0x49, 0xfb, 0x47, 0xfb, 0x16, 0xfb, 0x18, 0xfb, + 0xe7, 0xfa, 0xe4, 0xfa, 0xba, 0xfa, 0xba, 0xfa, 0x90, 0xfa, 0x90, 0xfa, + 0x69, 0xfa, 0x6a, 0xfa, 0x4b, 0xfa, 0x47, 0xfa, 0x28, 0xfa, 0x2a, 0xfa, + 0x11, 0xfa, 0x10, 0xfa, 0xfd, 0xf9, 0xfb, 0xf9, 0xea, 0xf9, 0xeb, 0xf9, + 0xe2, 0xf9, 0xdf, 0xf9, 0xd7, 0xf9, 0xd8, 0xf9, 0xd9, 0xf9, 0xd6, 0xf9, + 0xd9, 0xf9, 0xd6, 0xf9, 0xde, 0xf9, 0xe0, 0xf9, 0xec, 0xf9, 0xe7, 0xf9, + 0xf6, 0xf9, 0xf7, 0xf9, 0x0a, 0xfa, 0x09, 0xfa, 0x1e, 0xfa, 0x1d, 0xfa, + 0x36, 0xfa, 0x33, 0xfa, 0x50, 0xfa, 0x50, 0xfa, 0x6b, 0xfa, 0x67, 0xfa, + 0x88, 0xfa, 0x88, 0xfa, 0xa6, 0xfa, 0xa4, 0xfa, 0xc7, 0xfa, 0xc5, 0xfa, + 0xe5, 0xfa, 0xe2, 0xfa, 0x01, 0xfb, 0x01, 0xfb, 0x22, 0xfb, 0x20, 0xfb, + 0x3d, 0xfb, 0x3d, 0xfb, 0x5d, 0xfb, 0x5b, 0xfb, 0x77, 0xfb, 0x76, 0xfb, + 0x91, 0xfb, 0x92, 0xfb, 0xab, 0xfb, 0xaa, 0xfb, 0xc1, 0xfb, 0xc0, 0xfb, + 0xda, 0xfb, 0xd8, 0xfb, 0xec, 0xfb, 0xec, 0xfb, 0x01, 0xfc, 0x03, 0xfc, + 0x14, 0xfc, 0x12, 0xfc, 0x25, 0xfc, 0x26, 0xfc, 0x39, 0xfc, 0x38, 0xfc, + 0x47, 0xfc, 0x47, 0xfc, 0x58, 0xfc, 0x57, 0xfc, 0x69, 0xfc, 0x69, 0xfc, + 0x7a, 0xfc, 0x7a, 0xfc, 0x8e, 0xfc, 0x8d, 0xfc, 0x9f, 0xfc, 0xa0, 0xfc, + 0xb6, 0xfc, 0xb4, 0xfc, 0xcb, 0xfc, 0xcb, 0xfc, 0xe5, 0xfc, 0xe5, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0x1d, 0xfd, 0x1c, 0xfd, 0x3d, 0xfd, 0x3d, 0xfd, + 0x60, 0xfd, 0x5f, 0xfd, 0x85, 0xfd, 0x86, 0xfd, 0xb2, 0xfd, 0xb0, 0xfd, + 0xdd, 0xfd, 0xdd, 0xfd, 0x0c, 0xfe, 0x0b, 0xfe, 0x3f, 0xfe, 0x3f, 0xfe, + 0x73, 0xfe, 0x72, 0xfe, 0xab, 0xfe, 0xaa, 0xfe, 0xe6, 0xfe, 0xe4, 0xfe, + 0x20, 0xff, 0x20, 0xff, 0x61, 0xff, 0x5f, 0xff, 0x9e, 0xff, 0x9d, 0xff, + 0xe1, 0xff, 0xde, 0xff, 0x1e, 0x00, 0x1d, 0x00, 0x63, 0x00, 0x62, 0x00, + 0xa3, 0x00, 0xa2, 0x00, 0xe6, 0x00, 0xe6, 0x00, 0x26, 0x01, 0x23, 0x01, + 0x64, 0x01, 0x64, 0x01, 0xa2, 0x01, 0xa1, 0x01, 0xdc, 0x01, 0xda, 0x01, + 0x18, 0x02, 0x19, 0x02, 0x4f, 0x02, 0x4c, 0x02, 0x85, 0x02, 0x85, 0x02, + 0xb6, 0x02, 0xb4, 0x02, 0xe5, 0x02, 0xe5, 0x02, 0x11, 0x03, 0x10, 0x03, + 0x3a, 0x03, 0x39, 0x03, 0x61, 0x03, 0x61, 0x03, 0x81, 0x03, 0x80, 0x03, + 0xa3, 0x03, 0xa4, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xda, 0x03, 0xda, 0x03, + 0xf3, 0x03, 0xf2, 0x03, 0x08, 0x04, 0x07, 0x04, 0x1a, 0x04, 0x1a, 0x04, + 0x2d, 0x04, 0x2e, 0x04, 0x3d, 0x04, 0x3c, 0x04, 0x4c, 0x04, 0x4c, 0x04, + 0x58, 0x04, 0x57, 0x04, 0x67, 0x04, 0x66, 0x04, 0x73, 0x04, 0x71, 0x04, + 0x7f, 0x04, 0x80, 0x04, 0x8b, 0x04, 0x89, 0x04, 0x98, 0x04, 0x98, 0x04, + 0xa3, 0x04, 0xa3, 0x04, 0xb1, 0x04, 0xb1, 0x04, 0xbf, 0x04, 0xbd, 0x04, + 0xce, 0x04, 0xce, 0x04, 0xdb, 0x04, 0xda, 0x04, 0xec, 0x04, 0xe9, 0x04, + 0xfa, 0x04, 0xfa, 0x04, 0x0b, 0x05, 0x09, 0x05, 0x1b, 0x05, 0x1a, 0x05, + 0x2b, 0x05, 0x2a, 0x05, 0x3c, 0x05, 0x39, 0x05, 0x4d, 0x05, 0x4d, 0x05, + 0x5a, 0x05, 0x59, 0x05, 0x6a, 0x05, 0x69, 0x05, 0x78, 0x05, 0x77, 0x05, + 0x84, 0x05, 0x82, 0x05, 0x91, 0x05, 0x8f, 0x05, 0x96, 0x05, 0x97, 0x05, + 0xa2, 0x05, 0xa0, 0x05, 0xa3, 0x05, 0xa0, 0x05, 0xa6, 0x05, 0xa7, 0x05, + 0xa5, 0x05, 0xa3, 0x05, 0xa1, 0x05, 0xa1, 0x05, 0x9a, 0x05, 0x99, 0x05, + 0x8f, 0x05, 0x8e, 0x05, 0x83, 0x05, 0x83, 0x05, 0x72, 0x05, 0x71, 0x05, + 0x5d, 0x05, 0x5c, 0x05, 0x47, 0x05, 0x46, 0x05, 0x2a, 0x05, 0x29, 0x05, + 0x0c, 0x05, 0x0d, 0x05, 0xec, 0x04, 0xea, 0x04, 0xc6, 0x04, 0xc6, 0x04, + 0xa2, 0x04, 0xa0, 0x04, 0x76, 0x04, 0x78, 0x04, 0x4f, 0x04, 0x4b, 0x04, + 0x1d, 0x04, 0x1f, 0x04, 0xf3, 0x03, 0xf1, 0x03, 0xc0, 0x03, 0xc1, 0x03, + 0x90, 0x03, 0x8e, 0x03, 0x5c, 0x03, 0x5d, 0x03, 0x2b, 0x03, 0x29, 0x03, + 0xf7, 0x02, 0xf6, 0x02, 0xc4, 0x02, 0xc6, 0x02, 0x93, 0x02, 0x92, 0x02, + 0x62, 0x02, 0x62, 0x02, 0x2f, 0x02, 0x2d, 0x02, 0xfe, 0x01, 0x00, 0x02, + 0xd0, 0x01, 0xce, 0x01, 0xa1, 0x01, 0xa3, 0x01, 0x75, 0x01, 0x74, 0x01, + 0x48, 0x01, 0x49, 0x01, 0x20, 0x01, 0x1d, 0x01, 0xf4, 0x00, 0xf5, 0x00, + 0xd0, 0x00, 0xcd, 0x00, 0xa5, 0x00, 0xa7, 0x00, 0x83, 0x00, 0x80, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x38, 0x00, 0x37, 0x00, 0x15, 0x00, 0x13, 0x00, + 0xef, 0xff, 0xef, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xab, 0xff, 0xaa, 0xff, + 0x85, 0xff, 0x84, 0xff, 0x65, 0xff, 0x64, 0xff, 0x3e, 0xff, 0x3c, 0xff, + 0x1a, 0xff, 0x1a, 0xff, 0xf6, 0xfe, 0xf4, 0xfe, 0xce, 0xfe, 0xce, 0xfe, + 0xa9, 0xfe, 0xa8, 0xfe, 0x7f, 0xfe, 0x7d, 0xfe, 0x55, 0xfe, 0x57, 0xfe, + 0x2c, 0xfe, 0x28, 0xfe, 0xff, 0xfd, 0x00, 0xfe, 0xd5, 0xfd, 0xd3, 0xfd, + 0xa6, 0xfd, 0xa5, 0xfd, 0x78, 0xfd, 0x7a, 0xfd, 0x4c, 0xfd, 0x49, 0xfd, + 0x1b, 0xfd, 0x19, 0xfd, 0xed, 0xfc, 0xed, 0xfc, 0xbc, 0xfc, 0xba, 0xfc, + 0x8f, 0xfc, 0x8f, 0xfc, 0x62, 0xfc, 0x5f, 0xfc, 0x33, 0xfc, 0x32, 0xfc, + 0x04, 0xfc, 0x05, 0xfc, 0xdb, 0xfb, 0xd9, 0xfb, 0xb2, 0xfb, 0xb1, 0xfb, + 0x87, 0xfb, 0x86, 0xfb, 0x63, 0xfb, 0x61, 0xfb, 0x3f, 0xfb, 0x3f, 0xfb, + 0x1c, 0xfb, 0x1b, 0xfb, 0xfe, 0xfa, 0xfe, 0xfa, 0xe0, 0xfa, 0xdf, 0xfa, + 0xc6, 0xfa, 0xc7, 0xfa, 0xb2, 0xfa, 0xb0, 0xfa, 0x9b, 0xfa, 0x9b, 0xfa, + 0x8d, 0xfa, 0x8c, 0xfa, 0x7c, 0xfa, 0x7c, 0xfa, 0x73, 0xfa, 0x72, 0xfa, + 0x6b, 0xfa, 0x6a, 0xfa, 0x63, 0xfa, 0x63, 0xfa, 0x64, 0xfa, 0x63, 0xfa, + 0x60, 0xfa, 0x60, 0xfa, 0x65, 0xfa, 0x64, 0xfa, 0x69, 0xfa, 0x68, 0xfa, + 0x6d, 0xfa, 0x6f, 0xfa, 0x7a, 0xfa, 0x78, 0xfa, 0x82, 0xfa, 0x83, 0xfa, + 0x90, 0xfa, 0x8f, 0xfa, 0x9c, 0xfa, 0x9c, 0xfa, 0xab, 0xfa, 0xab, 0xfa, + 0xba, 0xfa, 0xba, 0xfa, 0xca, 0xfa, 0xca, 0xfa, 0xdc, 0xfa, 0xda, 0xfa, + 0xeb, 0xfa, 0xea, 0xfa, 0xfe, 0xfa, 0xfd, 0xfa, 0x10, 0xfb, 0x10, 0xfb, + 0x22, 0xfb, 0x1f, 0xfb, 0x35, 0xfb, 0x36, 0xfb, 0x45, 0xfb, 0x42, 0xfb, + 0x5a, 0xfb, 0x5a, 0xfb, 0x6b, 0xfb, 0x68, 0xfb, 0x7d, 0xfb, 0x7c, 0xfb, + 0x90, 0xfb, 0x90, 0xfb, 0xa3, 0xfb, 0xa0, 0xfb, 0xb8, 0xfb, 0xb9, 0xfb, + 0xca, 0xfb, 0xc9, 0xfb, 0xdf, 0xfb, 0xde, 0xfb, 0xf6, 0xfb, 0xf4, 0xfb, + 0x0a, 0xfc, 0x08, 0xfc, 0x23, 0xfc, 0x21, 0xfc, 0x3b, 0xfc, 0x38, 0xfc, + 0x53, 0xfc, 0x53, 0xfc, 0x70, 0xfc, 0x6e, 0xfc, 0x8b, 0xfc, 0x8b, 0xfc, + 0xac, 0xfc, 0xaa, 0xfc, 0xca, 0xfc, 0xc9, 0xfc, 0xef, 0xfc, 0xed, 0xfc, + 0x11, 0xfd, 0x0f, 0xfd, 0x39, 0xfd, 0x37, 0xfd, 0x5f, 0xfd, 0x5e, 0xfd, + 0x8a, 0xfd, 0x89, 0xfd, 0xb5, 0xfd, 0xb3, 0xfd, 0xe2, 0xfd, 0xe2, 0xfd, + 0x12, 0xfe, 0x10, 0xfe, 0x43, 0xfe, 0x41, 0xfe, 0x78, 0xfe, 0x74, 0xfe, + 0xa9, 0xfe, 0xa9, 0xfe, 0xe2, 0xfe, 0xdf, 0xfe, 0x13, 0xff, 0x11, 0xff, + 0x4e, 0xff, 0x4b, 0xff, 0x83, 0xff, 0x82, 0xff, 0xbb, 0xff, 0xb9, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0x2a, 0x00, 0x29, 0x00, 0x67, 0x00, 0x64, 0x00, + 0x98, 0x00, 0x98, 0x00, 0xd2, 0x00, 0xd1, 0x00, 0x05, 0x01, 0x04, 0x01, + 0x39, 0x01, 0x37, 0x01, 0x6d, 0x01, 0x6d, 0x01, 0x9f, 0x01, 0x9b, 0x01, + 0xce, 0x01, 0xce, 0x01, 0xfd, 0x01, 0xfb, 0x01, 0x2a, 0x02, 0x28, 0x02, + 0x54, 0x02, 0x53, 0x02, 0x7d, 0x02, 0x7b, 0x02, 0xa5, 0x02, 0xa4, 0x02, + 0xca, 0x02, 0xca, 0x02, 0xef, 0x02, 0xec, 0x02, 0x10, 0x03, 0x0f, 0x03, + 0x32, 0x03, 0x2f, 0x03, 0x4f, 0x03, 0x4f, 0x03, 0x6f, 0x03, 0x6d, 0x03, + 0x8a, 0x03, 0x89, 0x03, 0xa6, 0x03, 0xa5, 0x03, 0xbf, 0x03, 0xbc, 0x03, + 0xd7, 0x03, 0xd6, 0x03, 0xf0, 0x03, 0xee, 0x03, 0x07, 0x04, 0x05, 0x04, + 0x1d, 0x04, 0x1c, 0x04, 0x34, 0x04, 0x31, 0x04, 0x48, 0x04, 0x48, 0x04, + 0x5f, 0x04, 0x5d, 0x04, 0x72, 0x04, 0x70, 0x04, 0x85, 0x04, 0x85, 0x04, + 0x9d, 0x04, 0x99, 0x04, 0xb1, 0x04, 0xaf, 0x04, 0xc3, 0x04, 0xc0, 0x04, + 0xd9, 0x04, 0xd5, 0x04, 0xe8, 0x04, 0xe7, 0x04, 0xfb, 0x04, 0xf9, 0x04, + 0x0d, 0x05, 0x0b, 0x05, 0x1d, 0x05, 0x1c, 0x05, 0x30, 0x05, 0x2e, 0x05, + 0x3d, 0x05, 0x3a, 0x05, 0x4d, 0x05, 0x4c, 0x05, 0x5b, 0x05, 0x57, 0x05, + 0x64, 0x05, 0x64, 0x05, 0x70, 0x05, 0x6e, 0x05, 0x76, 0x05, 0x76, 0x05, + 0x7e, 0x05, 0x7d, 0x05, 0x84, 0x05, 0x82, 0x05, 0x85, 0x05, 0x83, 0x05, + 0x85, 0x05, 0x85, 0x05, 0x84, 0x05, 0x82, 0x05, 0x7d, 0x05, 0x7e, 0x05, + 0x7a, 0x05, 0x77, 0x05, 0x6c, 0x05, 0x6b, 0x05, 0x64, 0x05, 0x62, 0x05, + 0x54, 0x05, 0x50, 0x05, 0x41, 0x05, 0x41, 0x05, 0x31, 0x05, 0x2e, 0x05, + 0x19, 0x05, 0x17, 0x05, 0x03, 0x05, 0x00, 0x05, 0xe6, 0x04, 0xe5, 0x04, + 0xc9, 0x04, 0xc7, 0x04, 0xab, 0x04, 0xaa, 0x04, 0x8a, 0x04, 0x86, 0x04, + 0x66, 0x04, 0x67, 0x04, 0x43, 0x04, 0x40, 0x04, 0x1e, 0x04, 0x1c, 0x04, + 0xf7, 0x03, 0xf6, 0x03, 0xd0, 0x03, 0xce, 0x03, 0xa8, 0x03, 0xa6, 0x03, + 0x7d, 0x03, 0x7d, 0x03, 0x55, 0x03, 0x53, 0x03, 0x2b, 0x03, 0x28, 0x03, + 0x01, 0x03, 0xff, 0x02, 0xd7, 0x02, 0xd5, 0x02, 0xad, 0x02, 0xac, 0x02, + 0x81, 0x02, 0x80, 0x02, 0x59, 0x02, 0x56, 0x02, 0x30, 0x02, 0x2f, 0x02, + 0x06, 0x02, 0x05, 0x02, 0xde, 0x01, 0xdc, 0x01, 0xb4, 0x01, 0xb5, 0x01, + 0x8e, 0x01, 0x8c, 0x01, 0x65, 0x01, 0x65, 0x01, 0x3e, 0x01, 0x3c, 0x01, + 0x16, 0x01, 0x15, 0x01, 0xef, 0x00, 0xef, 0x00, 0xca, 0x00, 0xc8, 0x00, + 0xa1, 0x00, 0xa1, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x56, 0x00, 0x53, 0x00, + 0x2e, 0x00, 0x2e, 0x00, 0x06, 0x00, 0x04, 0x00, 0xe0, 0xff, 0xde, 0xff, + 0xb4, 0xff, 0xb4, 0xff, 0x8f, 0xff, 0x8c, 0xff, 0x63, 0xff, 0x63, 0xff, + 0x3a, 0xff, 0x38, 0xff, 0x10, 0xff, 0x0e, 0xff, 0xe5, 0xfe, 0xe2, 0xfe, + 0xbb, 0xfe, 0xbb, 0xfe, 0x8e, 0xfe, 0x8a, 0xfe, 0x61, 0xfe, 0x5f, 0xfe, + 0x34, 0xfe, 0x32, 0xfe, 0x06, 0xfe, 0x03, 0xfe, 0xda, 0xfd, 0xd8, 0xfd, + 0xab, 0xfd, 0xa8, 0xfd, 0x7e, 0xfd, 0x7e, 0xfd, 0x50, 0xfd, 0x4c, 0xfd, + 0x22, 0xfd, 0x22, 0xfd, 0xf8, 0xfc, 0xf4, 0xfc, 0xc7, 0xfc, 0xc9, 0xfc, + 0xa1, 0xfc, 0x9e, 0xfc, 0x72, 0xfc, 0x71, 0xfc, 0x4c, 0xfc, 0x4b, 0xfc, + 0x23, 0xfc, 0x21, 0xfc, 0xfd, 0xfb, 0xfa, 0xfb, 0xdb, 0xfb, 0xda, 0xfb, + 0xb5, 0xfb, 0xb4, 0xfb, 0x98, 0xfb, 0x95, 0xfb, 0x76, 0xfb, 0x75, 0xfb, + 0x5a, 0xfb, 0x5a, 0xfb, 0x40, 0xfb, 0x3d, 0xfb, 0x26, 0xfb, 0x26, 0xfb, + 0x13, 0xfb, 0x12, 0xfb, 0xfc, 0xfa, 0xfa, 0xfa, 0xed, 0xfa, 0xec, 0xfa, + 0xdf, 0xfa, 0xda, 0xfa, 0xcf, 0xfa, 0xd1, 0xfa, 0xc7, 0xfa, 0xc5, 0xfa, + 0xbd, 0xfa, 0xbc, 0xfa, 0xb8, 0xfa, 0xb6, 0xfa, 0xb4, 0xfa, 0xb2, 0xfa, + 0xb1, 0xfa, 0xb0, 0xfa, 0xb2, 0xfa, 0xaf, 0xfa, 0xb1, 0xfa, 0xb0, 0xfa, + 0xb6, 0xfa, 0xb3, 0xfa, 0xb6, 0xfa, 0xb4, 0xfa, 0xbf, 0xfa, 0xbc, 0xfa, + 0xc1, 0xfa, 0xbe, 0xfa, 0xcb, 0xfa, 0xc9, 0xfa, 0xd2, 0xfa, 0xd2, 0xfa, + 0xdd, 0xfa, 0xd7, 0xfa, 0xe7, 0xfa, 0xe7, 0xfa, 0xf0, 0xfa, 0xed, 0xfa, + 0xfc, 0xfa, 0xfa, 0xfa, 0x09, 0xfb, 0x07, 0xfb, 0x15, 0xfb, 0x13, 0xfb, + 0x23, 0xfb, 0x21, 0xfb, 0x2f, 0xfb, 0x2d, 0xfb, 0x3e, 0xfb, 0x3c, 0xfb, + 0x4d, 0xfb, 0x4a, 0xfb, 0x5e, 0xfb, 0x5b, 0xfb, 0x6c, 0xfb, 0x6b, 0xfb, + 0x80, 0xfb, 0x7c, 0xfb, 0x8f, 0xfb, 0x8f, 0xfb, 0xa4, 0xfb, 0xa2, 0xfb, + 0xb6, 0xfb, 0xb6, 0xfb, 0xcc, 0xfb, 0xca, 0xfb, 0xe4, 0xfb, 0xe1, 0xfb, + 0xfb, 0xfb, 0xf9, 0xfb, 0x16, 0xfc, 0x15, 0xfc, 0x2f, 0xfc, 0x2d, 0xfc, + 0x4d, 0xfc, 0x4a, 0xfc, 0x6b, 0xfc, 0x6a, 0xfc, 0x8b, 0xfc, 0x87, 0xfc, + 0xa9, 0xfc, 0xaa, 0xfc, 0xcf, 0xfc, 0xcc, 0xfc, 0xf3, 0xfc, 0xf1, 0xfc, + 0x1a, 0xfd, 0x17, 0xfd, 0x42, 0xfd, 0x3f, 0xfd, 0x6a, 0xfd, 0x69, 0xfd, + 0x96, 0xfd, 0x93, 0xfd, 0xc1, 0xfd, 0xc1, 0xfd, 0xf3, 0xfd, 0xef, 0xfd, + 0x20, 0xfe, 0x1c, 0xfe, 0x50, 0xfe, 0x4e, 0xfe, 0x81, 0xfe, 0x80, 0xfe, + 0xb2, 0xfe, 0xb0, 0xfe, 0xe8, 0xfe, 0xe5, 0xfe, 0x19, 0xff, 0x17, 0xff, + 0x4e, 0xff, 0x48, 0xff, 0x81, 0xff, 0x81, 0xff, 0xb3, 0xff, 0xaf, 0xff, + 0xe9, 0xff, 0xe8, 0xff, 0x1a, 0x00, 0x16, 0x00, 0x4e, 0x00, 0x4c, 0x00, + 0x7f, 0x00, 0x7d, 0x00, 0xb0, 0x00, 0xae, 0x00, 0xe2, 0x00, 0xdd, 0x00, + 0x0f, 0x01, 0x0e, 0x01, 0x3f, 0x01, 0x3c, 0x01, 0x6b, 0x01, 0x67, 0x01, + 0x97, 0x01, 0x95, 0x01, 0xc1, 0x01, 0xbe, 0x01, 0xe9, 0x01, 0xe8, 0x01, + 0x14, 0x02, 0x10, 0x02, 0x38, 0x02, 0x37, 0x02, 0x5f, 0x02, 0x5b, 0x02, + 0x82, 0x02, 0x81, 0x02, 0xa6, 0x02, 0xa4, 0x02, 0xc8, 0x02, 0xc4, 0x02, + 0xe7, 0x02, 0xe8, 0x02, 0x07, 0x03, 0x02, 0x03, 0x26, 0x03, 0x28, 0x03, + 0x42, 0x03, 0x40, 0x03, 0x64, 0x03, 0x60, 0x03, 0x7d, 0x03, 0x7e, 0x03, + 0x99, 0x03, 0x96, 0x03, 0xb6, 0x03, 0xb5, 0x03, 0xce, 0x03, 0xcc, 0x03, + 0xeb, 0x03, 0xea, 0x03, 0x04, 0x04, 0x03, 0x04, 0x1d, 0x04, 0x1c, 0x04, + 0x37, 0x04, 0x34, 0x04, 0x4c, 0x04, 0x4c, 0x04, 0x66, 0x04, 0x64, 0x04, + 0x7e, 0x04, 0x7c, 0x04, 0x94, 0x04, 0x92, 0x04, 0xab, 0x04, 0xa9, 0x04, + 0xbf, 0x04, 0xbe, 0x04, 0xd5, 0x04, 0xd2, 0x04, 0xe8, 0x04, 0xe7, 0x04, + 0xfa, 0x04, 0xf9, 0x04, 0x0d, 0x05, 0x0b, 0x05, 0x1d, 0x05, 0x1c, 0x05, + 0x2e, 0x05, 0x2c, 0x05, 0x37, 0x05, 0x38, 0x05, 0x48, 0x05, 0x44, 0x05, + 0x4e, 0x05, 0x4e, 0x05, 0x5c, 0x05, 0x58, 0x05, 0x5d, 0x05, 0x5d, 0x05, + 0x64, 0x05, 0x61, 0x05, 0x66, 0x05, 0x66, 0x05, 0x65, 0x05, 0x63, 0x05, + 0x66, 0x05, 0x65, 0x05, 0x5f, 0x05, 0x5f, 0x05, 0x5b, 0x05, 0x57, 0x05, + 0x52, 0x05, 0x52, 0x05, 0x44, 0x05, 0x42, 0x05, 0x39, 0x05, 0x37, 0x05, + 0x26, 0x05, 0x26, 0x05, 0x19, 0x05, 0x15, 0x05, 0x02, 0x05, 0x01, 0x05, + 0xed, 0x04, 0xeb, 0x04, 0xd4, 0x04, 0xd3, 0x04, 0xbc, 0x04, 0xb9, 0x04, + 0xa0, 0x04, 0xa0, 0x04, 0x84, 0x04, 0x80, 0x04, 0x65, 0x04, 0x64, 0x04, + 0x45, 0x04, 0x44, 0x04, 0x25, 0x04, 0x23, 0x04, 0xff, 0x03, 0x00, 0x04, + 0xe2, 0x03, 0xde, 0x03, 0xba, 0x03, 0xbb, 0x03, 0x99, 0x03, 0x96, 0x03, + 0x74, 0x03, 0x72, 0x03, 0x4d, 0x03, 0x4d, 0x03, 0x2b, 0x03, 0x28, 0x03, + 0x03, 0x03, 0x02, 0x03, 0xe0, 0x02, 0xdd, 0x02, 0xb7, 0x02, 0xb7, 0x02, + 0x94, 0x02, 0x93, 0x02, 0x6e, 0x02, 0x6d, 0x02, 0x46, 0x02, 0x46, 0x02, + 0x23, 0x02, 0x22, 0x02, 0xfc, 0x01, 0xfc, 0x01, 0xd7, 0x01, 0xd6, 0x01, + 0xb4, 0x01, 0xb2, 0x01, 0x8c, 0x01, 0x8b, 0x01, 0x68, 0x01, 0x67, 0x01, + 0x41, 0x01, 0x40, 0x01, 0x1a, 0x01, 0x18, 0x01, 0xf4, 0x00, 0xf3, 0x00, + 0xcd, 0x00, 0xcb, 0x00, 0xa7, 0x00, 0xa5, 0x00, 0x7f, 0x00, 0x7e, 0x00, + 0x56, 0x00, 0x55, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x03, 0x00, 0x02, 0x00, + 0xdb, 0xff, 0xd9, 0xff, 0xae, 0xff, 0xae, 0xff, 0x85, 0xff, 0x81, 0xff, + 0x58, 0xff, 0x58, 0xff, 0x2d, 0xff, 0x2b, 0xff, 0x01, 0xff, 0xfe, 0xfe, + 0xd3, 0xfe, 0xd3, 0xfe, 0xa5, 0xfe, 0xa4, 0xfe, 0x77, 0xfe, 0x76, 0xfe, + 0x4a, 0xfe, 0x48, 0xfe, 0x1a, 0xfe, 0x1a, 0xfe, 0xee, 0xfd, 0xeb, 0xfd, + 0xc0, 0xfd, 0xbe, 0xfd, 0x8f, 0xfd, 0x8e, 0xfd, 0x66, 0xfd, 0x63, 0xfd, + 0x36, 0xfd, 0x37, 0xfd, 0x0d, 0xfd, 0x0c, 0xfd, 0xe3, 0xfc, 0xe1, 0xfc, + 0xb9, 0xfc, 0xb7, 0xfc, 0x92, 0xfc, 0x90, 0xfc, 0x6a, 0xfc, 0x6a, 0xfc, + 0x45, 0xfc, 0x44, 0xfc, 0x22, 0xfc, 0x20, 0xfc, 0x00, 0xfc, 0x00, 0xfc, + 0xdf, 0xfb, 0xdf, 0xfb, 0xc4, 0xfb, 0xc2, 0xfb, 0xa5, 0xfb, 0xa5, 0xfb, + 0x8b, 0xfb, 0x8b, 0xfb, 0x75, 0xfb, 0x73, 0xfb, 0x5e, 0xfb, 0x5e, 0xfb, + 0x49, 0xfb, 0x49, 0xfb, 0x3a, 0xfb, 0x37, 0xfb, 0x26, 0xfb, 0x28, 0xfb, + 0x1a, 0xfb, 0x18, 0xfb, 0x0e, 0xfb, 0x0f, 0xfb, 0x03, 0xfb, 0x01, 0xfb, + 0xfd, 0xfa, 0xfc, 0xfa, 0xf3, 0xfa, 0xf4, 0xfa, 0xf0, 0xfa, 0xef, 0xfa, + 0xed, 0xfa, 0xed, 0xfa, 0xe8, 0xfa, 0xe9, 0xfa, 0xe9, 0xfa, 0xe8, 0xfa, + 0xe7, 0xfa, 0xe6, 0xfa, 0xe9, 0xfa, 0xea, 0xfa, 0xeb, 0xfa, 0xe9, 0xfa, + 0xed, 0xfa, 0xf0, 0xfa, 0xf4, 0xfa, 0xf1, 0xfa, 0xf5, 0xfa, 0xf6, 0xfa, + 0xfd, 0xfa, 0xfd, 0xfa, 0x01, 0xfb, 0x01, 0xfb, 0x0a, 0xfb, 0x0a, 0xfb, + 0x11, 0xfb, 0x10, 0xfb, 0x18, 0xfb, 0x19, 0xfb, 0x22, 0xfb, 0x22, 0xfb, + 0x2d, 0xfb, 0x2d, 0xfb, 0x35, 0xfb, 0x35, 0xfb, 0x42, 0xfb, 0x43, 0xfb, + 0x4d, 0xfb, 0x4b, 0xfb, 0x5b, 0xfb, 0x5c, 0xfb, 0x6a, 0xfb, 0x69, 0xfb, + 0x78, 0xfb, 0x78, 0xfb, 0x8a, 0xfb, 0x8b, 0xfb, 0x9f, 0xfb, 0x9b, 0xfb, + 0xae, 0xfb, 0xb0, 0xfb, 0xc7, 0xfb, 0xc5, 0xfb, 0xdb, 0xfb, 0xdb, 0xfb, + 0xf5, 0xfb, 0xf3, 0xfb, 0x0c, 0xfc, 0x0d, 0xfc, 0x2a, 0xfc, 0x27, 0xfc, + 0x44, 0xfc, 0x46, 0xfc, 0x66, 0xfc, 0x64, 0xfc, 0x86, 0xfc, 0x85, 0xfc, + 0xa8, 0xfc, 0xa7, 0xfc, 0xce, 0xfc, 0xcb, 0xfc, 0xef, 0xfc, 0xef, 0xfc, + 0x1a, 0xfd, 0x19, 0xfd, 0x42, 0xfd, 0x3f, 0xfd, 0x6d, 0xfd, 0x6b, 0xfd, + 0x97, 0xfd, 0x98, 0xfd, 0xc5, 0xfd, 0xc3, 0xfd, 0xf1, 0xfd, 0xf1, 0xfd, + 0x20, 0xfe, 0x1e, 0xfe, 0x51, 0xfe, 0x4f, 0xfe, 0x7f, 0xfe, 0x80, 0xfe, + 0xb3, 0xfe, 0xae, 0xfe, 0xe2, 0xfe, 0xe1, 0xfe, 0x13, 0xff, 0x12, 0xff, + 0x46, 0xff, 0x44, 0xff, 0x73, 0xff, 0x74, 0xff, 0xa8, 0xff, 0xa4, 0xff, + 0xd7, 0xff, 0xd7, 0xff, 0x06, 0x00, 0x05, 0x00, 0x38, 0x00, 0x34, 0x00, + 0x63, 0x00, 0x64, 0x00, 0x92, 0x00, 0x8f, 0x00, 0xbf, 0x00, 0xbe, 0x00, + 0xea, 0x00, 0xe8, 0x00, 0x15, 0x01, 0x13, 0x01, 0x3e, 0x01, 0x3c, 0x01, + 0x67, 0x01, 0x66, 0x01, 0x8f, 0x01, 0x8d, 0x01, 0xb5, 0x01, 0xb3, 0x01, + 0xda, 0x01, 0xda, 0x01, 0x00, 0x02, 0xfc, 0x01, 0x21, 0x02, 0x23, 0x02, + 0x47, 0x02, 0x44, 0x02, 0x66, 0x02, 0x67, 0x02, 0x8a, 0x02, 0x88, 0x02, + 0xa9, 0x02, 0xa7, 0x02, 0xc9, 0x02, 0xca, 0x02, 0xe9, 0x02, 0xe8, 0x02, + 0x08, 0x03, 0x07, 0x03, 0x26, 0x03, 0x26, 0x03, 0x44, 0x03, 0x41, 0x03, + 0x64, 0x03, 0x63, 0x03, 0x7f, 0x03, 0x7d, 0x03, 0x9b, 0x03, 0x9a, 0x03, + 0xbb, 0x03, 0xba, 0x03, 0xd4, 0x03, 0xd3, 0x03, 0xf3, 0x03, 0xf1, 0x03, + 0x0c, 0x04, 0x0a, 0x04, 0x28, 0x04, 0x27, 0x04, 0x40, 0x04, 0x40, 0x04, + 0x5b, 0x04, 0x5a, 0x04, 0x76, 0x04, 0x74, 0x04, 0x8c, 0x04, 0x8c, 0x04, + 0xa6, 0x04, 0xa3, 0x04, 0xba, 0x04, 0xb9, 0x04, 0xcf, 0x04, 0xce, 0x04, + 0xe5, 0x04, 0xe4, 0x04, 0xf5, 0x04, 0xf6, 0x04, 0x09, 0x05, 0x07, 0x05, + 0x15, 0x05, 0x16, 0x05, 0x25, 0x05, 0x22, 0x05, 0x2f, 0x05, 0x30, 0x05, + 0x3a, 0x05, 0x3a, 0x05, 0x41, 0x05, 0x40, 0x05, 0x47, 0x05, 0x46, 0x05, + 0x4a, 0x05, 0x49, 0x05, 0x4b, 0x05, 0x4b, 0x05, 0x4d, 0x05, 0x4a, 0x05, + 0x47, 0x05, 0x49, 0x05, 0x45, 0x05, 0x40, 0x05, 0x38, 0x05, 0x3b, 0x05, + 0x31, 0x05, 0x2f, 0x05, 0x24, 0x05, 0x24, 0x05, 0x17, 0x05, 0x14, 0x05, + 0x06, 0x05, 0x04, 0x05, 0xf3, 0x04, 0xf3, 0x04, 0xe0, 0x04, 0xde, 0x04, + 0xca, 0x04, 0xc9, 0x04, 0xb3, 0x04, 0xb2, 0x04, 0x9a, 0x04, 0x96, 0x04, + 0x80, 0x04, 0x80, 0x04, 0x63, 0x04, 0x62, 0x04, 0x48, 0x04, 0x46, 0x04, + 0x2a, 0x04, 0x2a, 0x04, 0x0b, 0x04, 0x09, 0x04, 0xef, 0x03, 0xed, 0x03, + 0xcc, 0x03, 0xca, 0x03, 0xae, 0x03, 0xad, 0x03, 0x8a, 0x03, 0x8a, 0x03, + 0x6c, 0x03, 0x6b, 0x03, 0x4b, 0x03, 0x4b, 0x03, 0x29, 0x03, 0x28, 0x03, + 0x09, 0x03, 0x07, 0x03, 0xe4, 0x02, 0xe4, 0x02, 0xc8, 0x02, 0xc6, 0x02, + 0xa2, 0x02, 0xa1, 0x02, 0x80, 0x02, 0x80, 0x02, 0x61, 0x02, 0x5e, 0x02, + 0x39, 0x02, 0x3b, 0x02, 0x1b, 0x02, 0x19, 0x02, 0xf6, 0x01, 0xf5, 0x01, + 0xd4, 0x01, 0xd5, 0x01, 0xb3, 0x01, 0xaf, 0x01, 0x8c, 0x01, 0x8b, 0x01, + 0x68, 0x01, 0x69, 0x01, 0x44, 0x01, 0x41, 0x01, 0x1d, 0x01, 0x1e, 0x01, + 0xf8, 0x00, 0xf4, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xa9, 0x00, 0xa6, 0x00, + 0x7e, 0x00, 0x7c, 0x00, 0x56, 0x00, 0x54, 0x00, 0x2b, 0x00, 0x2a, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xd4, 0xff, 0xd4, 0xff, 0xa7, 0xff, 0xa5, 0xff, + 0x7b, 0xff, 0x7a, 0xff, 0x4e, 0xff, 0x4b, 0xff, 0x1e, 0xff, 0x1e, 0xff, + 0xf2, 0xfe, 0xef, 0xfe, 0xc0, 0xfe, 0xc0, 0xfe, 0x93, 0xfe, 0x92, 0xfe, + 0x64, 0xfe, 0x62, 0xfe, 0x34, 0xfe, 0x33, 0xfe, 0x08, 0xfe, 0x04, 0xfe, + 0xd7, 0xfd, 0xd6, 0xfd, 0xab, 0xfd, 0xab, 0xfd, 0x7e, 0xfd, 0x7b, 0xfd, + 0x52, 0xfd, 0x52, 0xfd, 0x2b, 0xfd, 0x26, 0xfd, 0xfe, 0xfc, 0xfe, 0xfc, + 0xda, 0xfc, 0xd8, 0xfc, 0xb3, 0xfc, 0xb1, 0xfc, 0x8e, 0xfc, 0x8a, 0xfc, + 0x6b, 0xfc, 0x6a, 0xfc, 0x48, 0xfc, 0x46, 0xfc, 0x2a, 0xfc, 0x2a, 0xfc, + 0x0e, 0xfc, 0x0b, 0xfc, 0xf2, 0xfb, 0xf0, 0xfb, 0xd6, 0xfb, 0xd6, 0xfb, + 0xc0, 0xfb, 0xbd, 0xfb, 0xa9, 0xfb, 0xa9, 0xfb, 0x94, 0xfb, 0x92, 0xfb, + 0x85, 0xfb, 0x84, 0xfb, 0x72, 0xfb, 0x71, 0xfb, 0x66, 0xfb, 0x63, 0xfb, + 0x57, 0xfb, 0x58, 0xfb, 0x4d, 0xfb, 0x49, 0xfb, 0x43, 0xfb, 0x43, 0xfb, + 0x39, 0xfb, 0x38, 0xfb, 0x33, 0xfb, 0x30, 0xfb, 0x2b, 0xfb, 0x2c, 0xfb, + 0x26, 0xfb, 0x25, 0xfb, 0x23, 0xfb, 0x23, 0xfb, 0x1e, 0xfb, 0x1e, 0xfb, + 0x1e, 0xfb, 0x1d, 0xfb, 0x1b, 0xfb, 0x1a, 0xfb, 0x19, 0xfb, 0x1a, 0xfb, + 0x1b, 0xfb, 0x1a, 0xfb, 0x18, 0xfb, 0x19, 0xfb, 0x1e, 0xfb, 0x1b, 0xfb, + 0x1b, 0xfb, 0x1d, 0xfb, 0x20, 0xfb, 0x1f, 0xfb, 0x21, 0xfb, 0x22, 0xfb, + 0x27, 0xfb, 0x26, 0xfb, 0x2b, 0xfb, 0x2a, 0xfb, 0x2f, 0xfb, 0x30, 0xfb, + 0x39, 0xfb, 0x38, 0xfb, 0x40, 0xfb, 0x3f, 0xfb, 0x49, 0xfb, 0x49, 0xfb, + 0x50, 0xfb, 0x51, 0xfb, 0x5d, 0xfb, 0x5d, 0xfb, 0x6a, 0xfb, 0x6a, 0xfb, + 0x78, 0xfb, 0x77, 0xfb, 0x88, 0xfb, 0x88, 0xfb, 0x98, 0xfb, 0x98, 0xfb, + 0xab, 0xfb, 0xab, 0xfb, 0xc1, 0xfb, 0xc0, 0xfb, 0xd5, 0xfb, 0xd6, 0xfb, + 0xf0, 0xfb, 0xee, 0xfb, 0x08, 0xfc, 0x0a, 0xfc, 0x25, 0xfc, 0x24, 0xfc, + 0x44, 0xfc, 0x44, 0xfc, 0x62, 0xfc, 0x61, 0xfc, 0x85, 0xfc, 0x84, 0xfc, + 0xa8, 0xfc, 0xa8, 0xfc, 0xcc, 0xfc, 0xcb, 0xfc, 0xf4, 0xfc, 0xf4, 0xfc, + 0x1a, 0xfd, 0x19, 0xfd, 0x46, 0xfd, 0x46, 0xfd, 0x71, 0xfd, 0x70, 0xfd, + 0x9b, 0xfd, 0x9a, 0xfd, 0xc9, 0xfd, 0xc9, 0xfd, 0xf5, 0xfd, 0xf3, 0xfd, + 0x25, 0xfe, 0x23, 0xfe, 0x50, 0xfe, 0x53, 0xfe, 0x81, 0xfe, 0x7f, 0xfe, + 0xb2, 0xfe, 0xb1, 0xfe, 0xdf, 0xfe, 0xde, 0xfe, 0x0f, 0xff, 0x0e, 0xff, + 0x3b, 0xff, 0x3b, 0xff, 0x6b, 0xff, 0x67, 0xff, 0x98, 0xff, 0x9a, 0xff, + 0xc7, 0xff, 0xc1, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0x1e, 0x00, 0x1b, 0x00, + 0x47, 0x00, 0x47, 0x00, 0x73, 0x00, 0x71, 0x00, 0x9b, 0x00, 0x99, 0x00, + 0xc4, 0x00, 0xc4, 0x00, 0xe9, 0x00, 0xe7, 0x00, 0x13, 0x01, 0x11, 0x01, + 0x35, 0x01, 0x35, 0x01, 0x5b, 0x01, 0x58, 0x01, 0x7f, 0x01, 0x7e, 0x01, + 0xa1, 0x01, 0xa0, 0x01, 0xc7, 0x01, 0xc5, 0x01, 0xe6, 0x01, 0xe5, 0x01, + 0x0b, 0x02, 0x09, 0x02, 0x2a, 0x02, 0x2a, 0x02, 0x4c, 0x02, 0x49, 0x02, + 0x6b, 0x02, 0x6c, 0x02, 0x8c, 0x02, 0x89, 0x02, 0xad, 0x02, 0xac, 0x02, + 0xcc, 0x02, 0xcb, 0x02, 0xee, 0x02, 0xeb, 0x02, 0x0b, 0x03, 0x0a, 0x03, + 0x2c, 0x03, 0x2a, 0x03, 0x4c, 0x03, 0x4b, 0x03, 0x6b, 0x03, 0x6b, 0x03, + 0x8b, 0x03, 0x88, 0x03, 0xa8, 0x03, 0xa9, 0x03, 0xc9, 0x03, 0xc6, 0x03, + 0xe4, 0x03, 0xe4, 0x03, 0x04, 0x04, 0x03, 0x04, 0x1e, 0x04, 0x1d, 0x04, + 0x3b, 0x04, 0x3b, 0x04, 0x56, 0x04, 0x55, 0x04, 0x6f, 0x04, 0x6f, 0x04, + 0x89, 0x04, 0x8a, 0x04, 0xa0, 0x04, 0x9e, 0x04, 0xb6, 0x04, 0xb7, 0x04, + 0xcb, 0x04, 0xc9, 0x04, 0xdf, 0x04, 0xde, 0x04, 0xef, 0x04, 0xef, 0x04, + 0xfd, 0x04, 0xfc, 0x04, 0x0c, 0x05, 0x0b, 0x05, 0x15, 0x05, 0x14, 0x05, + 0x1f, 0x05, 0x1f, 0x05, 0x26, 0x05, 0x24, 0x05, 0x29, 0x05, 0x28, 0x05, + 0x2a, 0x05, 0x2c, 0x05, 0x2c, 0x05, 0x29, 0x05, 0x29, 0x05, 0x2a, 0x05, + 0x24, 0x05, 0x21, 0x05, 0x1c, 0x05, 0x1d, 0x05, 0x14, 0x05, 0x14, 0x05, + 0x09, 0x05, 0x06, 0x05, 0xfb, 0x04, 0xfc, 0x04, 0xec, 0x04, 0xeb, 0x04, + 0xdb, 0x04, 0xdb, 0x04, 0xc9, 0x04, 0xca, 0x04, 0xb4, 0x04, 0xb2, 0x04, + 0x9f, 0x04, 0xa0, 0x04, 0x89, 0x04, 0x89, 0x04, 0x74, 0x04, 0x72, 0x04, + 0x59, 0x04, 0x57, 0x04, 0x40, 0x04, 0x40, 0x04, 0x28, 0x04, 0x25, 0x04, + 0x0a, 0x04, 0x0b, 0x04, 0xf0, 0x03, 0xed, 0x03, 0xd5, 0x03, 0xd6, 0x03, + 0xb7, 0x03, 0xb7, 0x03, 0x9f, 0x03, 0x9d, 0x03, 0x80, 0x03, 0x7f, 0x03, + 0x62, 0x03, 0x60, 0x03, 0x47, 0x03, 0x47, 0x03, 0x28, 0x03, 0x25, 0x03, + 0x0d, 0x03, 0x0d, 0x03, 0xef, 0x02, 0xed, 0x02, 0xce, 0x02, 0xcf, 0x02, + 0xb3, 0x02, 0xb1, 0x02, 0x92, 0x02, 0x92, 0x02, 0x75, 0x02, 0x75, 0x02, + 0x56, 0x02, 0x54, 0x02, 0x34, 0x02, 0x34, 0x02, 0x16, 0x02, 0x13, 0x02, + 0xf2, 0x01, 0xf1, 0x01, 0xd2, 0x01, 0xd2, 0x01, 0xaf, 0x01, 0xac, 0x01, + 0x8a, 0x01, 0x89, 0x01, 0x66, 0x01, 0x65, 0x01, 0x41, 0x01, 0x3d, 0x01, + 0x19, 0x01, 0x1a, 0x01, 0xf2, 0x00, 0xef, 0x00, 0xc8, 0x00, 0xc9, 0x00, + 0x9f, 0x00, 0x9d, 0x00, 0x74, 0x00, 0x73, 0x00, 0x48, 0x00, 0x47, 0x00, + 0x1b, 0x00, 0x1a, 0x00, 0xee, 0xff, 0xed, 0xff, 0xbf, 0xff, 0xbf, 0xff, + 0x90, 0xff, 0x8f, 0xff, 0x62, 0xff, 0x61, 0xff, 0x33, 0xff, 0x33, 0xff, + 0x05, 0xff, 0x03, 0xff, 0xd3, 0xfe, 0xd2, 0xfe, 0xa5, 0xfe, 0xa5, 0xfe, + 0x76, 0xfe, 0x74, 0xfe, 0x48, 0xfe, 0x48, 0xfe, 0x17, 0xfe, 0x15, 0xfe, + 0xed, 0xfd, 0xed, 0xfd, 0xbf, 0xfd, 0xbd, 0xfd, 0x94, 0xfd, 0x94, 0xfd, + 0x69, 0xfd, 0x6c, 0xfd, 0x42, 0xfd, 0x3f, 0xfd, 0x1b, 0xfd, 0x1c, 0xfd, + 0xf6, 0xfc, 0xf4, 0xfc, 0xd2, 0xfc, 0xd1, 0xfc, 0xaf, 0xfc, 0xb0, 0xfc, + 0x8f, 0xfc, 0x8e, 0xfc, 0x72, 0xfc, 0x71, 0xfc, 0x54, 0xfc, 0x54, 0xfc, + 0x3c, 0xfc, 0x39, 0xfc, 0x20, 0xfc, 0x21, 0xfc, 0x0a, 0xfc, 0x09, 0xfc, + 0xf4, 0xfb, 0xf4, 0xfb, 0xde, 0xfb, 0xde, 0xfb, 0xcf, 0xfb, 0xce, 0xfb, + 0xbb, 0xfb, 0xbd, 0xfb, 0xaf, 0xfb, 0xac, 0xfb, 0xa1, 0xfb, 0xa1, 0xfb, + 0x94, 0xfb, 0x92, 0xfb, 0x89, 0xfb, 0x88, 0xfb, 0x7c, 0xfb, 0x7b, 0xfb, + 0x75, 0xfb, 0x73, 0xfb, 0x6b, 0xfb, 0x6b, 0xfb, 0x63, 0xfb, 0x60, 0xfb, + 0x5e, 0xfb, 0x5e, 0xfb, 0x55, 0xfb, 0x54, 0xfb, 0x50, 0xfb, 0x4f, 0xfb, + 0x4b, 0xfb, 0x4b, 0xfb, 0x44, 0xfb, 0x43, 0xfb, 0x44, 0xfb, 0x42, 0xfb, + 0x3d, 0xfb, 0x3d, 0xfb, 0x3a, 0xfb, 0x38, 0xfb, 0x3a, 0xfb, 0x39, 0xfb, + 0x34, 0xfb, 0x33, 0xfb, 0x37, 0xfb, 0x36, 0xfb, 0x33, 0xfb, 0x32, 0xfb, + 0x36, 0xfb, 0x34, 0xfb, 0x36, 0xfb, 0x35, 0xfb, 0x3b, 0xfb, 0x3a, 0xfb, + 0x3c, 0xfb, 0x3d, 0xfb, 0x43, 0xfb, 0x43, 0xfb, 0x49, 0xfb, 0x49, 0xfb, + 0x53, 0xfb, 0x53, 0xfb, 0x5c, 0xfb, 0x5c, 0xfb, 0x6a, 0xfb, 0x67, 0xfb, + 0x76, 0xfb, 0x75, 0xfb, 0x86, 0xfb, 0x86, 0xfb, 0x98, 0xfb, 0x97, 0xfb, + 0xab, 0xfb, 0xab, 0xfb, 0xc0, 0xfb, 0xbe, 0xfb, 0xd7, 0xfb, 0xd6, 0xfb, + 0xf1, 0xfb, 0xf0, 0xfb, 0x0c, 0xfc, 0x0c, 0xfc, 0x28, 0xfc, 0x26, 0xfc, + 0x49, 0xfc, 0x49, 0xfc, 0x68, 0xfc, 0x68, 0xfc, 0x8d, 0xfc, 0x8c, 0xfc, + 0xb2, 0xfc, 0xb1, 0xfc, 0xd4, 0xfc, 0xd5, 0xfc, 0xff, 0xfc, 0xfe, 0xfc, + 0x26, 0xfd, 0x25, 0xfd, 0x4f, 0xfd, 0x4f, 0xfd, 0x7d, 0xfd, 0x7b, 0xfd, + 0xa3, 0xfd, 0xa3, 0xfd, 0xd2, 0xfd, 0xd3, 0xfd, 0xfd, 0xfd, 0xfb, 0xfd, + 0x29, 0xfe, 0x2a, 0xfe, 0x58, 0xfe, 0x57, 0xfe, 0x82, 0xfe, 0x83, 0xfe, + 0xb1, 0xfe, 0xb1, 0xfe, 0xdc, 0xfe, 0xdb, 0xfe, 0x07, 0xff, 0x08, 0xff, + 0x35, 0xff, 0x33, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x88, 0xff, 0x88, 0xff, + 0xb0, 0xff, 0xaf, 0xff, 0xd8, 0xff, 0xda, 0xff, 0x03, 0x00, 0x01, 0x00, + 0x26, 0x00, 0x27, 0x00, 0x4f, 0x00, 0x4d, 0x00, 0x73, 0x00, 0x73, 0x00, + 0x98, 0x00, 0x98, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xdf, 0x00, 0xdf, 0x00, + 0x02, 0x01, 0x02, 0x01, 0x23, 0x01, 0x23, 0x01, 0x49, 0x01, 0x47, 0x01, + 0x67, 0x01, 0x68, 0x01, 0x8d, 0x01, 0x8a, 0x01, 0xaa, 0x01, 0xad, 0x01, + 0xce, 0x01, 0xcc, 0x01, 0xf0, 0x01, 0xef, 0x01, 0x11, 0x02, 0x10, 0x02, + 0x35, 0x02, 0x33, 0x02, 0x55, 0x02, 0x55, 0x02, 0x77, 0x02, 0x76, 0x02, + 0x9a, 0x02, 0x9a, 0x02, 0xbc, 0x02, 0xba, 0x02, 0xde, 0x02, 0xde, 0x02, + 0x01, 0x03, 0xfe, 0x02, 0x22, 0x03, 0x22, 0x03, 0x46, 0x03, 0x43, 0x03, + 0x65, 0x03, 0x66, 0x03, 0x89, 0x03, 0x84, 0x03, 0xa7, 0x03, 0xa8, 0x03, + 0xca, 0x03, 0xc8, 0x03, 0xe8, 0x03, 0xe9, 0x03, 0x07, 0x04, 0x06, 0x04, + 0x24, 0x04, 0x23, 0x04, 0x41, 0x04, 0x40, 0x04, 0x5c, 0x04, 0x5b, 0x04, + 0x75, 0x04, 0x74, 0x04, 0x8d, 0x04, 0x8b, 0x04, 0xa3, 0x04, 0xa1, 0x04, + 0xb8, 0x04, 0xb6, 0x04, 0xc8, 0x04, 0xc7, 0x04, 0xd8, 0x04, 0xd5, 0x04, + 0xe6, 0x04, 0xe7, 0x04, 0xf2, 0x04, 0xef, 0x04, 0xfa, 0x04, 0xfa, 0x04, + 0x02, 0x05, 0xff, 0x04, 0x07, 0x05, 0x06, 0x05, 0x09, 0x05, 0x08, 0x05, + 0x09, 0x05, 0x08, 0x05, 0x08, 0x05, 0x07, 0x05, 0x01, 0x05, 0x00, 0x05, + 0xfd, 0x04, 0xfc, 0x04, 0xf3, 0x04, 0xf3, 0x04, 0xea, 0x04, 0xe8, 0x04, + 0xde, 0x04, 0xde, 0x04, 0xce, 0x04, 0xcc, 0x04, 0xc3, 0x04, 0xc1, 0x04, + 0xae, 0x04, 0xb0, 0x04, 0xa0, 0x04, 0x9e, 0x04, 0x8b, 0x04, 0x8c, 0x04, + 0x79, 0x04, 0x76, 0x04, 0x65, 0x04, 0x65, 0x04, 0x4d, 0x04, 0x4b, 0x04, + 0x3a, 0x04, 0x39, 0x04, 0x22, 0x04, 0x22, 0x04, 0x0d, 0x04, 0x0b, 0x04, + 0xf5, 0x03, 0xf5, 0x03, 0xdd, 0x03, 0xdc, 0x03, 0xc8, 0x03, 0xc5, 0x03, + 0xac, 0x03, 0xaf, 0x03, 0x97, 0x03, 0x93, 0x03, 0x7c, 0x03, 0x7e, 0x03, + 0x67, 0x03, 0x65, 0x03, 0x4c, 0x03, 0x4b, 0x03, 0x32, 0x03, 0x34, 0x03, + 0x1d, 0x03, 0x1a, 0x03, 0xfd, 0x02, 0xfe, 0x02, 0xe8, 0x02, 0xe6, 0x02, + 0xcb, 0x02, 0xcc, 0x02, 0xae, 0x02, 0xae, 0x02, 0x93, 0x02, 0x92, 0x02, + 0x73, 0x02, 0x73, 0x02, 0x58, 0x02, 0x57, 0x02, 0x36, 0x02, 0x35, 0x02, + 0x16, 0x02, 0x16, 0x02, 0xf4, 0x01, 0xf4, 0x01, 0xd3, 0x01, 0xd2, 0x01, + 0xab, 0x01, 0xab, 0x01, 0x88, 0x01, 0x88, 0x01, 0x61, 0x01, 0x60, 0x01, + 0x3a, 0x01, 0x37, 0x01, 0x10, 0x01, 0x0f, 0x01, 0xe4, 0x00, 0xe3, 0x00, + 0xb9, 0x00, 0xba, 0x00, 0x8d, 0x00, 0x8c, 0x00, 0x5e, 0x00, 0x5d, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xd2, 0xff, 0xd3, 0xff, + 0xa2, 0xff, 0x9f, 0xff, 0x73, 0xff, 0x73, 0xff, 0x42, 0xff, 0x40, 0xff, + 0x12, 0xff, 0x12, 0xff, 0xe4, 0xfe, 0xe2, 0xfe, 0xb4, 0xfe, 0xb3, 0xfe, + 0x88, 0xfe, 0x86, 0xfe, 0x59, 0xfe, 0x58, 0xfe, 0x2c, 0xfe, 0x2b, 0xfe, + 0x02, 0xfe, 0x00, 0xfe, 0xd6, 0xfd, 0xd5, 0xfd, 0xac, 0xfd, 0xac, 0xfd, + 0x89, 0xfd, 0x88, 0xfd, 0x60, 0xfd, 0x5e, 0xfd, 0x3f, 0xfd, 0x3f, 0xfd, + 0x1b, 0xfd, 0x19, 0xfd, 0xfc, 0xfc, 0xfa, 0xfc, 0xdb, 0xfc, 0xdb, 0xfc, + 0xbe, 0xfc, 0xbc, 0xfc, 0xa4, 0xfc, 0xa4, 0xfc, 0x8a, 0xfc, 0x88, 0xfc, + 0x72, 0xfc, 0x72, 0xfc, 0x5c, 0xfc, 0x59, 0xfc, 0x46, 0xfc, 0x44, 0xfc, + 0x35, 0xfc, 0x32, 0xfc, 0x1f, 0xfc, 0x20, 0xfc, 0x12, 0xfc, 0x0e, 0xfc, + 0xfe, 0xfb, 0xff, 0xfb, 0xf0, 0xfb, 0xee, 0xfb, 0xe2, 0xfb, 0xe0, 0xfb, + 0xd3, 0xfb, 0xd2, 0xfb, 0xc7, 0xfb, 0xc5, 0xfb, 0xbb, 0xfb, 0xbb, 0xfb, + 0xad, 0xfb, 0xad, 0xfb, 0xa5, 0xfb, 0xa3, 0xfb, 0x99, 0xfb, 0x98, 0xfb, + 0x8f, 0xfb, 0x8d, 0xfb, 0x85, 0xfb, 0x85, 0xfb, 0x7a, 0xfb, 0x7b, 0xfb, + 0x72, 0xfb, 0x70, 0xfb, 0x6c, 0xfb, 0x6a, 0xfb, 0x60, 0xfb, 0x60, 0xfb, + 0x5b, 0xfb, 0x58, 0xfb, 0x52, 0xfb, 0x53, 0xfb, 0x4f, 0xfb, 0x4a, 0xfb, + 0x47, 0xfb, 0x48, 0xfb, 0x43, 0xfb, 0x40, 0xfb, 0x42, 0xfb, 0x42, 0xfb, + 0x3e, 0xfb, 0x3d, 0xfb, 0x3f, 0xfb, 0x3d, 0xfb, 0x3f, 0xfb, 0x3f, 0xfb, + 0x43, 0xfb, 0x41, 0xfb, 0x47, 0xfb, 0x47, 0xfb, 0x4c, 0xfb, 0x4b, 0xfb, + 0x55, 0xfb, 0x53, 0xfb, 0x5c, 0xfb, 0x5e, 0xfb, 0x6b, 0xfb, 0x68, 0xfb, + 0x78, 0xfb, 0x79, 0xfb, 0x88, 0xfb, 0x88, 0xfb, 0x9b, 0xfb, 0x9a, 0xfb, + 0xb1, 0xfb, 0xb1, 0xfb, 0xc7, 0xfb, 0xc6, 0xfb, 0xe0, 0xfb, 0xdf, 0xfb, + 0xfc, 0xfb, 0xfb, 0xfb, 0x16, 0xfc, 0x16, 0xfc, 0x37, 0xfc, 0x36, 0xfc, + 0x57, 0xfc, 0x57, 0xfc, 0x79, 0xfc, 0x78, 0xfc, 0x9e, 0xfc, 0x9d, 0xfc, + 0xc2, 0xfc, 0xc1, 0xfc, 0xea, 0xfc, 0xe7, 0xfc, 0x0f, 0xfd, 0x10, 0xfd, + 0x39, 0xfd, 0x36, 0xfd, 0x60, 0xfd, 0x5e, 0xfd, 0x8b, 0xfd, 0x8a, 0xfd, + 0xb3, 0xfd, 0xb1, 0xfd, 0xe0, 0xfd, 0xde, 0xfd, 0x08, 0xfe, 0x06, 0xfe, + 0x2f, 0xfe, 0x30, 0xfe, 0x5c, 0xfe, 0x5a, 0xfe, 0x82, 0xfe, 0x82, 0xfe, + 0xb0, 0xfe, 0xac, 0xfe, 0xd3, 0xfe, 0xd6, 0xfe, 0xfd, 0xfe, 0xfb, 0xfe, + 0x24, 0xff, 0x23, 0xff, 0x47, 0xff, 0x46, 0xff, 0x71, 0xff, 0x6d, 0xff, + 0x93, 0xff, 0x95, 0xff, 0xb9, 0xff, 0xb7, 0xff, 0xdd, 0xff, 0xda, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x23, 0x00, 0x1f, 0x00, 0x44, 0x00, 0x44, 0x00, + 0x67, 0x00, 0x66, 0x00, 0x88, 0x00, 0x86, 0x00, 0xa9, 0x00, 0xac, 0x00, + 0xcd, 0x00, 0xc8, 0x00, 0xeb, 0x00, 0xee, 0x00, 0x10, 0x01, 0x0c, 0x01, + 0x2f, 0x01, 0x30, 0x01, 0x52, 0x01, 0x51, 0x01, 0x75, 0x01, 0x73, 0x01, + 0x95, 0x01, 0x97, 0x01, 0xba, 0x01, 0xb7, 0x01, 0xdd, 0x01, 0xde, 0x01, + 0x02, 0x02, 0xff, 0x01, 0x24, 0x02, 0x25, 0x02, 0x4c, 0x02, 0x4b, 0x02, + 0x6d, 0x02, 0x6d, 0x02, 0x96, 0x02, 0x94, 0x02, 0xb6, 0x02, 0xb9, 0x02, + 0xdf, 0x02, 0xdb, 0x02, 0x03, 0x03, 0x01, 0x03, 0x25, 0x03, 0x24, 0x03, + 0x4d, 0x03, 0x4b, 0x03, 0x6c, 0x03, 0x6c, 0x03, 0x90, 0x03, 0x8f, 0x03, + 0xb2, 0x03, 0xb0, 0x03, 0xd2, 0x03, 0xd1, 0x03, 0xf3, 0x03, 0xf2, 0x03, + 0x0e, 0x04, 0x0d, 0x04, 0x2b, 0x04, 0x2a, 0x04, 0x45, 0x04, 0x44, 0x04, + 0x5d, 0x04, 0x5b, 0x04, 0x75, 0x04, 0x75, 0x04, 0x89, 0x04, 0x87, 0x04, + 0x9a, 0x04, 0x9b, 0x04, 0xad, 0x04, 0xa9, 0x04, 0xb8, 0x04, 0xb7, 0x04, + 0xc5, 0x04, 0xc5, 0x04, 0xcc, 0x04, 0xcc, 0x04, 0xd4, 0x04, 0xd3, 0x04, + 0xd9, 0x04, 0xd7, 0x04, 0xdb, 0x04, 0xdb, 0x04, 0xdb, 0x04, 0xdb, 0x04, + 0xda, 0x04, 0xd8, 0x04, 0xd4, 0x04, 0xd4, 0x04, 0xd1, 0x04, 0xcf, 0x04, + 0xc8, 0x04, 0xc7, 0x04, 0xc0, 0x04, 0xc1, 0x04, 0xb7, 0x04, 0xb6, 0x04, + 0xa8, 0x04, 0xa8, 0x04, 0x9e, 0x04, 0x9c, 0x04, 0x8e, 0x04, 0x8e, 0x04, + 0x81, 0x04, 0x80, 0x04, 0x6f, 0x04, 0x6e, 0x04, 0x61, 0x04, 0x61, 0x04, + 0x4f, 0x04, 0x4d, 0x04, 0x3e, 0x04, 0x3f, 0x04, 0x2c, 0x04, 0x2b, 0x04, + 0x1a, 0x04, 0x1a, 0x04, 0x08, 0x04, 0x07, 0x04, 0xf6, 0x03, 0xf5, 0x03, + 0xe3, 0x03, 0xe2, 0x03, 0xce, 0x03, 0xcf, 0x03, 0xbd, 0x03, 0xbc, 0x03, + 0xaa, 0x03, 0xaa, 0x03, 0x95, 0x03, 0x95, 0x03, 0x83, 0x03, 0x81, 0x03, + 0x6c, 0x03, 0x6d, 0x03, 0x5a, 0x03, 0x57, 0x03, 0x41, 0x03, 0x43, 0x03, + 0x2e, 0x03, 0x2b, 0x03, 0x14, 0x03, 0x14, 0x03, 0xfa, 0x02, 0xfc, 0x02, + 0xe4, 0x02, 0xe4, 0x02, 0xc6, 0x02, 0xc7, 0x02, 0xb0, 0x02, 0xae, 0x02, + 0x8c, 0x02, 0x8f, 0x02, 0x72, 0x02, 0x71, 0x02, 0x52, 0x02, 0x51, 0x02, + 0x2e, 0x02, 0x2e, 0x02, 0x10, 0x02, 0x0e, 0x02, 0xe6, 0x01, 0xe8, 0x01, + 0xc6, 0x01, 0xc4, 0x01, 0x99, 0x01, 0x9b, 0x01, 0x74, 0x01, 0x73, 0x01, + 0x48, 0x01, 0x49, 0x01, 0x1d, 0x01, 0x1b, 0x01, 0xf2, 0x00, 0xf4, 0x00, + 0xc1, 0x00, 0xc2, 0x00, 0x97, 0x00, 0x97, 0x00, 0x67, 0x00, 0x66, 0x00, + 0x37, 0x00, 0x37, 0x00, 0x09, 0x00, 0x09, 0x00, 0xd7, 0xff, 0xd6, 0xff, + 0xaa, 0xff, 0xa9, 0xff, 0x78, 0xff, 0x78, 0xff, 0x4b, 0xff, 0x48, 0xff, + 0x1b, 0xff, 0x1c, 0xff, 0xed, 0xfe, 0xeb, 0xfe, 0xc0, 0xfe, 0xc0, 0xfe, + 0x94, 0xfe, 0x93, 0xfe, 0x69, 0xfe, 0x69, 0xfe, 0x40, 0xfe, 0x3f, 0xfe, + 0x18, 0xfe, 0x18, 0xfe, 0xf1, 0xfd, 0xef, 0xfd, 0xca, 0xfd, 0xcc, 0xfd, + 0xa8, 0xfd, 0xa7, 0xfd, 0x86, 0xfd, 0x87, 0xfd, 0x67, 0xfd, 0x66, 0xfd, + 0x47, 0xfd, 0x47, 0xfd, 0x29, 0xfd, 0x29, 0xfd, 0x0f, 0xfd, 0x0f, 0xfd, + 0xf4, 0xfc, 0xf5, 0xfc, 0xde, 0xfc, 0xdc, 0xfc, 0xc2, 0xfc, 0xc4, 0xfc, + 0xaf, 0xfc, 0xae, 0xfc, 0x99, 0xfc, 0x98, 0xfc, 0x83, 0xfc, 0x86, 0xfc, + 0x73, 0xfc, 0x72, 0xfc, 0x60, 0xfc, 0x5f, 0xfc, 0x4e, 0xfc, 0x4d, 0xfc, + 0x3f, 0xfc, 0x3e, 0xfc, 0x2c, 0xfc, 0x2b, 0xfc, 0x1d, 0xfc, 0x1d, 0xfc, + 0x0d, 0xfc, 0x0d, 0xfc, 0xfd, 0xfb, 0xfc, 0xfb, 0xf0, 0xfb, 0xf1, 0xfb, + 0xdf, 0xfb, 0xde, 0xfb, 0xd2, 0xfb, 0xd1, 0xfb, 0xc3, 0xfb, 0xc3, 0xfb, + 0xb5, 0xfb, 0xb4, 0xfb, 0xa7, 0xfb, 0xa7, 0xfb, 0x96, 0xfb, 0x98, 0xfb, + 0x8e, 0xfb, 0x8c, 0xfb, 0x80, 0xfb, 0x82, 0xfb, 0x75, 0xfb, 0x73, 0xfb, + 0x6d, 0xfb, 0x6e, 0xfb, 0x5f, 0xfb, 0x5f, 0xfb, 0x59, 0xfb, 0x58, 0xfb, + 0x50, 0xfb, 0x52, 0xfb, 0x4a, 0xfb, 0x49, 0xfb, 0x49, 0xfb, 0x48, 0xfb, + 0x42, 0xfb, 0x43, 0xfb, 0x42, 0xfb, 0x41, 0xfb, 0x43, 0xfb, 0x44, 0xfb, + 0x44, 0xfb, 0x43, 0xfb, 0x4b, 0xfb, 0x49, 0xfb, 0x50, 0xfb, 0x52, 0xfb, + 0x59, 0xfb, 0x58, 0xfb, 0x66, 0xfb, 0x66, 0xfb, 0x74, 0xfb, 0x72, 0xfb, + 0x83, 0xfb, 0x83, 0xfb, 0x96, 0xfb, 0x94, 0xfb, 0xa8, 0xfb, 0xaa, 0xfb, + 0xc3, 0xfb, 0xbf, 0xfb, 0xd7, 0xfb, 0xd9, 0xfb, 0xf5, 0xfb, 0xf3, 0xfb, + 0x11, 0xfc, 0x10, 0xfc, 0x2e, 0xfc, 0x2f, 0xfc, 0x50, 0xfc, 0x4e, 0xfc, + 0x6f, 0xfc, 0x6e, 0xfc, 0x92, 0xfc, 0x91, 0xfc, 0xb5, 0xfc, 0xb5, 0xfc, + 0xda, 0xfc, 0xda, 0xfc, 0x00, 0xfd, 0xfe, 0xfc, 0x26, 0xfd, 0x25, 0xfd, + 0x4b, 0xfd, 0x4a, 0xfd, 0x72, 0xfd, 0x72, 0xfd, 0x97, 0xfd, 0x97, 0xfd, + 0xbf, 0xfd, 0xbf, 0xfd, 0xe5, 0xfd, 0xe5, 0xfd, 0x0c, 0xfe, 0x0c, 0xfe, + 0x32, 0xfe, 0x30, 0xfe, 0x57, 0xfe, 0x57, 0xfe, 0x79, 0xfe, 0x7c, 0xfe, + 0xa1, 0xfe, 0x9f, 0xfe, 0xc3, 0xfe, 0xc5, 0xfe, 0xe6, 0xfe, 0xe6, 0xfe, + 0x0a, 0xff, 0x09, 0xff, 0x29, 0xff, 0x2c, 0xff, 0x4d, 0xff, 0x4b, 0xff, + 0x6c, 0xff, 0x6f, 0xff, 0x8f, 0xff, 0x8d, 0xff, 0xaf, 0xff, 0xb1, 0xff, + 0xcf, 0xff, 0xce, 0xff, 0xee, 0xff, 0xf1, 0xff, 0x11, 0x00, 0x10, 0x00, + 0x31, 0x00, 0x32, 0x00, 0x52, 0x00, 0x54, 0x00, 0x74, 0x00, 0x73, 0x00, + 0x94, 0x00, 0x97, 0x00, 0xb9, 0x00, 0xb8, 0x00, 0xd8, 0x00, 0xda, 0x00, + 0xfd, 0x00, 0xfd, 0x00, 0x1e, 0x01, 0x1f, 0x01, 0x46, 0x01, 0x46, 0x01, + 0x68, 0x01, 0x69, 0x01, 0x91, 0x01, 0x91, 0x01, 0xb3, 0x01, 0xb6, 0x01, + 0xdc, 0x01, 0xdc, 0x01, 0x05, 0x02, 0x05, 0x02, 0x29, 0x02, 0x2b, 0x02, + 0x55, 0x02, 0x53, 0x02, 0x77, 0x02, 0x79, 0x02, 0xa2, 0x02, 0xa2, 0x02, + 0xc6, 0x02, 0xc6, 0x02, 0xed, 0x02, 0xee, 0x02, 0x14, 0x03, 0x14, 0x03, + 0x37, 0x03, 0x38, 0x03, 0x5c, 0x03, 0x5e, 0x03, 0x80, 0x03, 0x7e, 0x03, + 0x9f, 0x03, 0xa2, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xdf, 0x03, 0xe0, 0x03, + 0xfa, 0x03, 0xfb, 0x03, 0x14, 0x04, 0x13, 0x04, 0x2e, 0x04, 0x2e, 0x04, + 0x42, 0x04, 0x43, 0x04, 0x57, 0x04, 0x57, 0x04, 0x68, 0x04, 0x67, 0x04, + 0x79, 0x04, 0x79, 0x04, 0x87, 0x04, 0x87, 0x04, 0x91, 0x04, 0x92, 0x04, + 0x9a, 0x04, 0x9b, 0x04, 0xa0, 0x04, 0xa1, 0x04, 0xa2, 0x04, 0xa3, 0x04, + 0xa9, 0x04, 0xa9, 0x04, 0xa8, 0x04, 0xa7, 0x04, 0xa6, 0x04, 0xa7, 0x04, + 0xa4, 0x04, 0xa4, 0x04, 0x9e, 0x04, 0x9d, 0x04, 0x9a, 0x04, 0x9c, 0x04, + 0x91, 0x04, 0x91, 0x04, 0x8a, 0x04, 0x8a, 0x04, 0x7f, 0x04, 0x82, 0x04, + 0x77, 0x04, 0x77, 0x04, 0x6b, 0x04, 0x6c, 0x04, 0x62, 0x04, 0x63, 0x04, + 0x55, 0x04, 0x55, 0x04, 0x49, 0x04, 0x4a, 0x04, 0x3e, 0x04, 0x3c, 0x04, + 0x2f, 0x04, 0x31, 0x04, 0x23, 0x04, 0x23, 0x04, 0x14, 0x04, 0x16, 0x04, + 0x09, 0x04, 0x08, 0x04, 0xf8, 0x03, 0xfa, 0x03, 0xed, 0x03, 0xec, 0x03, + 0xde, 0x03, 0xde, 0x03, 0xce, 0x03, 0xd0, 0x03, 0xc3, 0x03, 0xc1, 0x03, + 0xb1, 0x03, 0xb1, 0x03, 0xa0, 0x03, 0x9f, 0x03, 0x91, 0x03, 0x91, 0x03, + 0x7c, 0x03, 0x7f, 0x03, 0x6c, 0x03, 0x6b, 0x03, 0x57, 0x03, 0x5a, 0x03, + 0x42, 0x03, 0x40, 0x03, 0x2e, 0x03, 0x2e, 0x03, 0x13, 0x03, 0x13, 0x03, + 0xfe, 0x02, 0xfc, 0x02, 0xe1, 0x02, 0xe1, 0x02, 0xc5, 0x02, 0xc4, 0x02, + 0xa8, 0x02, 0xa8, 0x02, 0x87, 0x02, 0x88, 0x02, 0x66, 0x02, 0x65, 0x02, + 0x43, 0x02, 0x42, 0x02, 0x1e, 0x02, 0x1e, 0x02, 0xf8, 0x01, 0xf8, 0x01, + 0xd1, 0x01, 0xd0, 0x01, 0xa8, 0x01, 0xa7, 0x01, 0x7b, 0x01, 0x7d, 0x01, + 0x50, 0x01, 0x50, 0x01, 0x23, 0x01, 0x24, 0x01, 0xf7, 0x00, 0xf7, 0x00, + 0xc7, 0x00, 0xc7, 0x00, 0x98, 0x00, 0x98, 0x00, 0x6a, 0x00, 0x6a, 0x00, + 0x3a, 0x00, 0x3a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0xdc, 0xff, 0xdc, 0xff, + 0xab, 0xff, 0xac, 0xff, 0x80, 0xff, 0x81, 0xff, 0x51, 0xff, 0x52, 0xff, + 0x27, 0xff, 0x28, 0xff, 0xfc, 0xfe, 0xfc, 0xfe, 0xd2, 0xfe, 0xd4, 0xfe, + 0xa8, 0xfe, 0xaa, 0xfe, 0x84, 0xfe, 0x83, 0xfe, 0x5d, 0xfe, 0x5d, 0xfe, + 0x39, 0xfe, 0x39, 0xfe, 0x17, 0xfe, 0x17, 0xfe, 0xf4, 0xfd, 0xf5, 0xfd, + 0xd4, 0xfd, 0xd5, 0xfd, 0xb9, 0xfd, 0xb8, 0xfd, 0x99, 0xfd, 0x9a, 0xfd, + 0x7e, 0xfd, 0x7e, 0xfd, 0x66, 0xfd, 0x67, 0xfd, 0x4b, 0xfd, 0x4b, 0xfd, + 0x35, 0xfd, 0x35, 0xfd, 0x1c, 0xfd, 0x1b, 0xfd, 0x06, 0xfd, 0x08, 0xfd, + 0xf1, 0xfc, 0xf1, 0xfc, 0xda, 0xfc, 0xdc, 0xfc, 0xca, 0xfc, 0xc7, 0xfc, + 0xb1, 0xfc, 0xb3, 0xfc, 0xa1, 0xfc, 0x9f, 0xfc, 0x8d, 0xfc, 0x8d, 0xfc, + 0x79, 0xfc, 0x78, 0xfc, 0x66, 0xfc, 0x67, 0xfc, 0x52, 0xfc, 0x52, 0xfc, + 0x40, 0xfc, 0x40, 0xfc, 0x2e, 0xfc, 0x2f, 0xfc, 0x19, 0xfc, 0x18, 0xfc, + 0x09, 0xfc, 0x09, 0xfc, 0xf5, 0xfb, 0xf4, 0xfb, 0xe3, 0xfb, 0xe3, 0xfb, + 0xd2, 0xfb, 0xd1, 0xfb, 0xbf, 0xfb, 0xbf, 0xfb, 0xb0, 0xfb, 0xaf, 0xfb, + 0x9f, 0xfb, 0xa0, 0xfb, 0x91, 0xfb, 0x90, 0xfb, 0x82, 0xfb, 0x83, 0xfb, + 0x76, 0xfb, 0x76, 0xfb, 0x6a, 0xfb, 0x6b, 0xfb, 0x61, 0xfb, 0x60, 0xfb, + 0x58, 0xfb, 0x58, 0xfb, 0x52, 0xfb, 0x52, 0xfb, 0x4e, 0xfb, 0x4e, 0xfb, + 0x4c, 0xfb, 0x4b, 0xfb, 0x48, 0xfb, 0x49, 0xfb, 0x4b, 0xfb, 0x4c, 0xfb, + 0x50, 0xfb, 0x51, 0xfb, 0x57, 0xfb, 0x58, 0xfb, 0x5e, 0xfb, 0x60, 0xfb, + 0x6c, 0xfb, 0x6b, 0xfb, 0x77, 0xfb, 0x78, 0xfb, 0x89, 0xfb, 0x88, 0xfb, + 0x9a, 0xfb, 0x9b, 0xfb, 0xaf, 0xfb, 0xaf, 0xfb, 0xc6, 0xfb, 0xc7, 0xfb, + 0xdc, 0xfb, 0xdd, 0xfb, 0xf8, 0xfb, 0xf8, 0xfb, 0x11, 0xfc, 0x13, 0xfc, + 0x30, 0xfc, 0x2f, 0xfc, 0x4f, 0xfc, 0x50, 0xfc, 0x6c, 0xfc, 0x6d, 0xfc, + 0x8f, 0xfc, 0x8e, 0xfc, 0xaf, 0xfc, 0xb0, 0xfc, 0xd0, 0xfc, 0xd2, 0xfc, + 0xf6, 0xfc, 0xf6, 0xfc, 0x16, 0xfd, 0x18, 0xfd, 0x3b, 0xfd, 0x3b, 0xfd, + 0x5c, 0xfd, 0x5c, 0xfd, 0x80, 0xfd, 0x82, 0xfd, 0xa1, 0xfd, 0xa1, 0xfd, + 0xc6, 0xfd, 0xc6, 0xfd, 0xe4, 0xfd, 0xe5, 0xfd, 0x08, 0xfe, 0x09, 0xfe, + 0x29, 0xfe, 0x29, 0xfe, 0x49, 0xfe, 0x49, 0xfe, 0x6a, 0xfe, 0x6b, 0xfe, + 0x89, 0xfe, 0x89, 0xfe, 0xa8, 0xfe, 0xa9, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, + 0xe5, 0xfe, 0xe5, 0xfe, 0x02, 0xff, 0x04, 0xff, 0x23, 0xff, 0x22, 0xff, + 0x3e, 0xff, 0x40, 0xff, 0x62, 0xff, 0x61, 0xff, 0x7d, 0xff, 0x7e, 0xff, + 0x9c, 0xff, 0x9e, 0xff, 0xbf, 0xff, 0xbe, 0xff, 0xdb, 0xff, 0xdd, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x44, 0x00, 0x44, 0x00, + 0x65, 0x00, 0x64, 0x00, 0x86, 0x00, 0x88, 0x00, 0xb0, 0x00, 0xaf, 0x00, + 0xd0, 0x00, 0xd1, 0x00, 0xfa, 0x00, 0xfb, 0x00, 0x1e, 0x01, 0x1f, 0x01, + 0x48, 0x01, 0x49, 0x01, 0x6f, 0x01, 0x72, 0x01, 0x99, 0x01, 0x98, 0x01, + 0xc3, 0x01, 0xc6, 0x01, 0xe9, 0x01, 0xea, 0x01, 0x14, 0x02, 0x16, 0x02, + 0x3d, 0x02, 0x3f, 0x02, 0x65, 0x02, 0x67, 0x02, 0x90, 0x02, 0x90, 0x02, + 0xb5, 0x02, 0xb9, 0x02, 0xdd, 0x02, 0xdd, 0x02, 0x01, 0x03, 0x04, 0x03, + 0x27, 0x03, 0x27, 0x03, 0x4b, 0x03, 0x4b, 0x03, 0x6a, 0x03, 0x6b, 0x03, + 0x89, 0x03, 0x89, 0x03, 0xa8, 0x03, 0xa8, 0x03, 0xc4, 0x03, 0xc4, 0x03, + 0xdc, 0x03, 0xdd, 0x03, 0xf5, 0x03, 0xf4, 0x03, 0x0a, 0x04, 0x0c, 0x04, + 0x1d, 0x04, 0x1c, 0x04, 0x30, 0x04, 0x33, 0x04, 0x3c, 0x04, 0x3c, 0x04, + 0x4c, 0x04, 0x4c, 0x04, 0x54, 0x04, 0x55, 0x04, 0x5c, 0x04, 0x5c, 0x04, + 0x64, 0x04, 0x67, 0x04, 0x66, 0x04, 0x67, 0x04, 0x6b, 0x04, 0x6c, 0x04, + 0x6b, 0x04, 0x6d, 0x04, 0x6a, 0x04, 0x6b, 0x04, 0x6a, 0x04, 0x69, 0x04, + 0x66, 0x04, 0x68, 0x04, 0x65, 0x04, 0x63, 0x04, 0x5f, 0x04, 0x61, 0x04, + 0x59, 0x04, 0x5c, 0x04, 0x55, 0x04, 0x53, 0x04, 0x4c, 0x04, 0x50, 0x04, + 0x47, 0x04, 0x46, 0x04, 0x3e, 0x04, 0x3e, 0x04, 0x38, 0x04, 0x3a, 0x04, + 0x30, 0x04, 0x30, 0x04, 0x28, 0x04, 0x29, 0x04, 0x1f, 0x04, 0x1f, 0x04, + 0x17, 0x04, 0x19, 0x04, 0x0e, 0x04, 0x0e, 0x04, 0x08, 0x04, 0x08, 0x04, + 0xfe, 0x03, 0xfe, 0x03, 0xf4, 0x03, 0xf4, 0x03, 0xe9, 0x03, 0xeb, 0x03, + 0xdf, 0x03, 0xdf, 0x03, 0xd5, 0x03, 0xd6, 0x03, 0xc9, 0x03, 0xc9, 0x03, + 0xbd, 0x03, 0xbf, 0x03, 0xaf, 0x03, 0xad, 0x03, 0x9e, 0x03, 0xa0, 0x03, + 0x90, 0x03, 0x8e, 0x03, 0x7d, 0x03, 0x7e, 0x03, 0x68, 0x03, 0x69, 0x03, + 0x56, 0x03, 0x54, 0x03, 0x3d, 0x03, 0x3f, 0x03, 0x23, 0x03, 0x24, 0x03, + 0x0d, 0x03, 0x0d, 0x03, 0xec, 0x02, 0xed, 0x02, 0xd3, 0x02, 0xd2, 0x02, + 0xb2, 0x02, 0xb1, 0x02, 0x8d, 0x02, 0x8f, 0x02, 0x6d, 0x02, 0x6c, 0x02, + 0x45, 0x02, 0x45, 0x02, 0x21, 0x02, 0x21, 0x02, 0xf7, 0x01, 0xf6, 0x01, + 0xcc, 0x01, 0xcd, 0x01, 0xa5, 0x01, 0xa4, 0x01, 0x75, 0x01, 0x76, 0x01, + 0x4d, 0x01, 0x4c, 0x01, 0x1b, 0x01, 0x1c, 0x01, 0xef, 0x00, 0xef, 0x00, + 0xc2, 0x00, 0xc3, 0x00, 0x92, 0x00, 0x94, 0x00, 0x68, 0x00, 0x66, 0x00, + 0x36, 0x00, 0x38, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0xdd, 0xff, 0xde, 0xff, + 0xb4, 0xff, 0xb3, 0xff, 0x8a, 0xff, 0x89, 0xff, 0x5e, 0xff, 0x5e, 0xff, + 0x3a, 0xff, 0x38, 0xff, 0x11, 0xff, 0x13, 0xff, 0xeb, 0xfe, 0xeb, 0xfe, + 0xc7, 0xfe, 0xc9, 0xfe, 0xa4, 0xfe, 0xa5, 0xfe, 0x82, 0xfe, 0x82, 0xfe, + 0x63, 0xfe, 0x62, 0xfe, 0x42, 0xfe, 0x43, 0xfe, 0x26, 0xfe, 0x27, 0xfe, + 0x0a, 0xfe, 0x0b, 0xfe, 0xef, 0xfd, 0xef, 0xfd, 0xd3, 0xfd, 0xd4, 0xfd, + 0xbd, 0xfd, 0xbb, 0xfd, 0xa1, 0xfd, 0xa4, 0xfd, 0x8b, 0xfd, 0x89, 0xfd, + 0x73, 0xfd, 0x75, 0xfd, 0x5b, 0xfd, 0x5b, 0xfd, 0x47, 0xfd, 0x47, 0xfd, + 0x2e, 0xfd, 0x2f, 0xfd, 0x17, 0xfd, 0x18, 0xfd, 0x04, 0xfd, 0x04, 0xfd, + 0xeb, 0xfc, 0xeb, 0xfc, 0xd4, 0xfc, 0xd9, 0xfc, 0xbf, 0xfc, 0xbd, 0xfc, + 0xa8, 0xfc, 0xaa, 0xfc, 0x92, 0xfc, 0x91, 0xfc, 0x7b, 0xfc, 0x7d, 0xfc, + 0x65, 0xfc, 0x66, 0xfc, 0x4e, 0xfc, 0x4e, 0xfc, 0x39, 0xfc, 0x39, 0xfc, + 0x22, 0xfc, 0x23, 0xfc, 0x0c, 0xfc, 0x0c, 0xfc, 0xf6, 0xfb, 0xfa, 0xfb, + 0xe2, 0xfb, 0xe2, 0xfb, 0xce, 0xfb, 0xcf, 0xfb, 0xbb, 0xfb, 0xbb, 0xfb, + 0xab, 0xfb, 0xaa, 0xfb, 0x99, 0xfb, 0x9b, 0xfb, 0x8b, 0xfb, 0x8b, 0xfb, + 0x7b, 0xfb, 0x7f, 0xfb, 0x72, 0xfb, 0x73, 0xfb, 0x66, 0xfb, 0x67, 0xfb, + 0x60, 0xfb, 0x61, 0xfb, 0x5b, 0xfb, 0x5c, 0xfb, 0x5a, 0xfb, 0x58, 0xfb, + 0x56, 0xfb, 0x58, 0xfb, 0x58, 0xfb, 0x59, 0xfb, 0x5f, 0xfb, 0x61, 0xfb, + 0x62, 0xfb, 0x63, 0xfb, 0x6d, 0xfb, 0x6f, 0xfb, 0x79, 0xfb, 0x78, 0xfb, + 0x83, 0xfb, 0x85, 0xfb, 0x96, 0xfb, 0x98, 0xfb, 0xa6, 0xfb, 0xa6, 0xfb, + 0xba, 0xfb, 0xbd, 0xfb, 0xd2, 0xfb, 0xd1, 0xfb, 0xe7, 0xfb, 0xe8, 0xfb, + 0x01, 0xfc, 0x03, 0xfc, 0x1b, 0xfc, 0x1c, 0xfc, 0x37, 0xfc, 0x38, 0xfc, + 0x53, 0xfc, 0x53, 0xfc, 0x72, 0xfc, 0x74, 0xfc, 0x8d, 0xfc, 0x8f, 0xfc, + 0xae, 0xfc, 0xaf, 0xfc, 0xcc, 0xfc, 0xcd, 0xfc, 0xec, 0xfc, 0xed, 0xfc, + 0x0a, 0xfd, 0x0b, 0xfd, 0x28, 0xfd, 0x2a, 0xfd, 0x48, 0xfd, 0x4a, 0xfd, + 0x67, 0xfd, 0x67, 0xfd, 0x82, 0xfd, 0x86, 0xfd, 0xa5, 0xfd, 0xa3, 0xfd, + 0xbf, 0xfd, 0xc1, 0xfd, 0xde, 0xfd, 0xdf, 0xfd, 0xf9, 0xfd, 0xfa, 0xfd, + 0x16, 0xfe, 0x19, 0xfe, 0x33, 0xfe, 0x34, 0xfe, 0x4d, 0xfe, 0x4c, 0xfe, + 0x6b, 0xfe, 0x6d, 0xfe, 0x84, 0xfe, 0x85, 0xfe, 0xa3, 0xfe, 0xa4, 0xfe, + 0xbe, 0xfe, 0xbe, 0xfe, 0xd9, 0xfe, 0xda, 0xfe, 0xf7, 0xfe, 0xf9, 0xfe, + 0x13, 0xff, 0x14, 0xff, 0x31, 0xff, 0x32, 0xff, 0x50, 0xff, 0x50, 0xff, + 0x6e, 0xff, 0x6f, 0xff, 0x91, 0xff, 0x91, 0xff, 0xb1, 0xff, 0xb3, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0x1e, 0x00, 0x1c, 0x00, + 0x3e, 0x00, 0x44, 0x00, 0x69, 0x00, 0x68, 0x00, 0x8f, 0x00, 0x90, 0x00, + 0xb7, 0x00, 0xb8, 0x00, 0xe0, 0x00, 0xe1, 0x00, 0x09, 0x01, 0x0b, 0x01, + 0x33, 0x01, 0x32, 0x01, 0x60, 0x01, 0x61, 0x01, 0x88, 0x01, 0x89, 0x01, + 0xb5, 0x01, 0xb4, 0x01, 0xde, 0x01, 0xde, 0x01, 0x0a, 0x02, 0x0b, 0x02, + 0x33, 0x02, 0x33, 0x02, 0x5c, 0x02, 0x5a, 0x02, 0x81, 0x02, 0x85, 0x02, + 0xad, 0x02, 0xaa, 0x02, 0xcd, 0x02, 0xcd, 0x02, 0xf6, 0x02, 0xf6, 0x02, + 0x15, 0x03, 0x15, 0x03, 0x37, 0x03, 0x37, 0x03, 0x56, 0x03, 0x54, 0x03, + 0x71, 0x03, 0x72, 0x03, 0x8b, 0x03, 0x8b, 0x03, 0xa6, 0x03, 0xa5, 0x03, + 0xba, 0x03, 0xba, 0x03, 0xcf, 0x03, 0xcf, 0x03, 0xe2, 0x03, 0xe1, 0x03, + 0xf0, 0x03, 0xf1, 0x03, 0x00, 0x04, 0xff, 0x03, 0x0a, 0x04, 0x0b, 0x04, + 0x13, 0x04, 0x14, 0x04, 0x20, 0x04, 0x1e, 0x04, 0x23, 0x04, 0x24, 0x04, + 0x2a, 0x04, 0x2a, 0x04, 0x2d, 0x04, 0x2c, 0x04, 0x2f, 0x04, 0x2f, 0x04, + 0x33, 0x04, 0x33, 0x04, 0x30, 0x04, 0x31, 0x04, 0x30, 0x04, 0x30, 0x04, + 0x31, 0x04, 0x30, 0x04, 0x2d, 0x04, 0x2f, 0x04, 0x2d, 0x04, 0x2c, 0x04, + 0x2a, 0x04, 0x2a, 0x04, 0x27, 0x04, 0x2a, 0x04, 0x25, 0x04, 0x24, 0x04, + 0x24, 0x04, 0x23, 0x04, 0x1e, 0x04, 0x20, 0x04, 0x1e, 0x04, 0x1c, 0x04, + 0x18, 0x04, 0x1a, 0x04, 0x16, 0x04, 0x17, 0x04, 0x13, 0x04, 0x13, 0x04, + 0x0e, 0x04, 0x0f, 0x04, 0x0b, 0x04, 0x0b, 0x04, 0x05, 0x04, 0x06, 0x04, + 0x00, 0x04, 0xff, 0x03, 0xfb, 0x03, 0xfb, 0x03, 0xf3, 0x03, 0xf4, 0x03, + 0xee, 0x03, 0xed, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xd8, 0x03, 0xd8, 0x03, + 0xcd, 0x03, 0xcc, 0x03, 0xc0, 0x03, 0xc1, 0x03, 0xaf, 0x03, 0xae, 0x03, + 0xa0, 0x03, 0xa0, 0x03, 0x8c, 0x03, 0x8c, 0x03, 0x79, 0x03, 0x7a, 0x03, + 0x62, 0x03, 0x61, 0x03, 0x48, 0x03, 0x4b, 0x03, 0x31, 0x03, 0x2e, 0x03, + 0x12, 0x03, 0x13, 0x03, 0xf4, 0x02, 0xf5, 0x02, 0xd3, 0x02, 0xd2, 0x02, + 0xb0, 0x02, 0xb2, 0x02, 0x8d, 0x02, 0x8c, 0x02, 0x67, 0x02, 0x69, 0x02, + 0x41, 0x02, 0x40, 0x02, 0x17, 0x02, 0x18, 0x02, 0xef, 0x01, 0xef, 0x01, + 0xc4, 0x01, 0xc6, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x6d, 0x01, 0x6e, 0x01, + 0x41, 0x01, 0x42, 0x01, 0x13, 0x01, 0x14, 0x01, 0xe9, 0x00, 0xea, 0x00, + 0xbb, 0x00, 0xbc, 0x00, 0x91, 0x00, 0x94, 0x00, 0x65, 0x00, 0x66, 0x00, + 0x3b, 0x00, 0x3d, 0x00, 0x12, 0x00, 0x13, 0x00, 0xe8, 0xff, 0xea, 0xff, + 0xc4, 0xff, 0xc4, 0xff, 0x9b, 0xff, 0x9c, 0xff, 0x77, 0xff, 0x78, 0xff, + 0x54, 0xff, 0x56, 0xff, 0x32, 0xff, 0x32, 0xff, 0x10, 0xff, 0x13, 0xff, + 0xf0, 0xfe, 0xf1, 0xfe, 0xd1, 0xfe, 0xd4, 0xfe, 0xb3, 0xfe, 0xb5, 0xfe, + 0x98, 0xfe, 0x99, 0xfe, 0x7c, 0xfe, 0x7e, 0xfe, 0x5f, 0xfe, 0x61, 0xfe, + 0x47, 0xfe, 0x49, 0xfe, 0x2b, 0xfe, 0x2d, 0xfe, 0x15, 0xfe, 0x17, 0xfe, + 0xf9, 0xfd, 0xfb, 0xfd, 0xe3, 0xfd, 0xe4, 0xfd, 0xc9, 0xfd, 0xca, 0xfd, + 0xb3, 0xfd, 0xb2, 0xfd, 0x97, 0xfd, 0x9a, 0xfd, 0x81, 0xfd, 0x82, 0xfd, + 0x67, 0xfd, 0x69, 0xfd, 0x50, 0xfd, 0x50, 0xfd, 0x34, 0xfd, 0x35, 0xfd, + 0x1c, 0xfd, 0x1d, 0xfd, 0x02, 0xfd, 0x03, 0xfd, 0xe7, 0xfc, 0xe9, 0xfc, + 0xcd, 0xfc, 0xce, 0xfc, 0xb3, 0xfc, 0xb5, 0xfc, 0x98, 0xfc, 0x99, 0xfc, + 0x7f, 0xfc, 0x80, 0xfc, 0x62, 0xfc, 0x66, 0xfc, 0x4d, 0xfc, 0x4d, 0xfc, + 0x31, 0xfc, 0x32, 0xfc, 0x1a, 0xfc, 0x1c, 0xfc, 0x03, 0xfc, 0x04, 0xfc, + 0xec, 0xfb, 0xef, 0xfb, 0xda, 0xfb, 0xd9, 0xfb, 0xc2, 0xfb, 0xc4, 0xfb, + 0xb5, 0xfb, 0xb6, 0xfb, 0xa0, 0xfb, 0xa2, 0xfb, 0x95, 0xfb, 0x96, 0xfb, + 0x89, 0xfb, 0x8b, 0xfb, 0x7f, 0xfb, 0x80, 0xfb, 0x76, 0xfb, 0x78, 0xfb, + 0x72, 0xfb, 0x73, 0xfb, 0x6f, 0xfb, 0x72, 0xfb, 0x6f, 0xfb, 0x71, 0xfb, + 0x72, 0xfb, 0x71, 0xfb, 0x75, 0xfb, 0x77, 0xfb, 0x7c, 0xfb, 0x7c, 0xfb, + 0x85, 0xfb, 0x87, 0xfb, 0x90, 0xfb, 0x92, 0xfb, 0x9e, 0xfb, 0x9e, 0xfb, + 0xac, 0xfb, 0xae, 0xfb, 0xc0, 0xfb, 0xc1, 0xfb, 0xd1, 0xfb, 0xd2, 0xfb, + 0xe8, 0xfb, 0xe8, 0xfb, 0xfd, 0xfb, 0xfe, 0xfb, 0x12, 0xfc, 0x14, 0xfc, + 0x2c, 0xfc, 0x2d, 0xfc, 0x45, 0xfc, 0x46, 0xfc, 0x5f, 0xfc, 0x5d, 0xfc, + 0x7a, 0xfc, 0x7c, 0xfc, 0x92, 0xfc, 0x93, 0xfc, 0xb0, 0xfc, 0xaf, 0xfc, + 0xc9, 0xfc, 0xc9, 0xfc, 0xe4, 0xfc, 0xe4, 0xfc, 0xfe, 0xfc, 0x00, 0xfd, + 0x19, 0xfd, 0x19, 0xfd, 0x34, 0xfd, 0x36, 0xfd, 0x4d, 0xfd, 0x4e, 0xfd, + 0x68, 0xfd, 0x67, 0xfd, 0x80, 0xfd, 0x81, 0xfd, 0x99, 0xfd, 0x98, 0xfd, + 0xb1, 0xfd, 0xb3, 0xfd, 0xc8, 0xfd, 0xca, 0xfd, 0xe2, 0xfd, 0xe3, 0xfd, + 0xfa, 0xfd, 0xfa, 0xfd, 0x13, 0xfe, 0x15, 0xfe, 0x2c, 0xfe, 0x2b, 0xfe, + 0x44, 0xfe, 0x47, 0xfe, 0x60, 0xfe, 0x5e, 0xfe, 0x78, 0xfe, 0x7c, 0xfe, + 0x94, 0xfe, 0x94, 0xfe, 0xb0, 0xfe, 0xb1, 0xfe, 0xcd, 0xfe, 0xcd, 0xfe, + 0xea, 0xfe, 0xec, 0xfe, 0x08, 0xff, 0x09, 0xff, 0x2a, 0xff, 0x2b, 0xff, + 0x4a, 0xff, 0x4b, 0xff, 0x6b, 0xff, 0x6c, 0xff, 0x90, 0xff, 0x91, 0xff, + 0xb1, 0xff, 0xb5, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x2b, 0x00, 0x2c, 0x00, 0x52, 0x00, 0x55, 0x00, 0x7d, 0x00, 0x7d, 0x00, + 0xa8, 0x00, 0xaa, 0x00, 0xcf, 0x00, 0xd2, 0x00, 0xff, 0x00, 0x00, 0x01, + 0x28, 0x01, 0x2a, 0x01, 0x55, 0x01, 0x56, 0x01, 0x80, 0x01, 0x81, 0x01, + 0xab, 0x01, 0xac, 0x01, 0xd7, 0x01, 0xd6, 0x01, 0xfc, 0x01, 0xff, 0x01, + 0x29, 0x02, 0x2a, 0x02, 0x4d, 0x02, 0x4e, 0x02, 0x74, 0x02, 0x76, 0x02, + 0x99, 0x02, 0x9b, 0x02, 0xbb, 0x02, 0xbb, 0x02, 0xde, 0x02, 0xdf, 0x02, + 0xf8, 0x02, 0xfb, 0x02, 0x19, 0x03, 0x19, 0x03, 0x32, 0x03, 0x34, 0x03, + 0x4a, 0x03, 0x4d, 0x03, 0x64, 0x03, 0x63, 0x03, 0x75, 0x03, 0x76, 0x03, + 0x8c, 0x03, 0x8d, 0x03, 0x99, 0x03, 0x9a, 0x03, 0xaa, 0x03, 0xac, 0x03, + 0xb6, 0x03, 0xb8, 0x03, 0xc1, 0x03, 0xc2, 0x03, 0xcf, 0x03, 0xcf, 0x03, + 0xd3, 0x03, 0xd5, 0x03, 0xdf, 0x03, 0xdf, 0x03, 0xe2, 0x03, 0xe5, 0x03, + 0xe8, 0x03, 0xe9, 0x03, 0xed, 0x03, 0xef, 0x03, 0xee, 0x03, 0xf0, 0x03, + 0xf5, 0x03, 0xf4, 0x03, 0xf7, 0x03, 0xfa, 0x03, 0xf8, 0x03, 0xf8, 0x03, + 0xfd, 0x03, 0xfd, 0x03, 0xfc, 0x03, 0xfd, 0x03, 0x00, 0x04, 0x02, 0x04, + 0x03, 0x04, 0x00, 0x04, 0x01, 0x04, 0x04, 0x04, 0x07, 0x04, 0x07, 0x04, + 0x05, 0x04, 0x07, 0x04, 0x0b, 0x04, 0x0b, 0x04, 0x0a, 0x04, 0x0b, 0x04, + 0x0c, 0x04, 0x0d, 0x04, 0x0c, 0x04, 0x0d, 0x04, 0x0e, 0x04, 0x11, 0x04, + 0x0e, 0x04, 0x0e, 0x04, 0x0b, 0x04, 0x0c, 0x04, 0x0b, 0x04, 0x0b, 0x04, + 0x06, 0x04, 0x07, 0x04, 0x03, 0x04, 0x03, 0x04, 0xfd, 0x03, 0xfe, 0x03, + 0xf4, 0x03, 0xf4, 0x03, 0xed, 0x03, 0xf0, 0x03, 0xe1, 0x03, 0xe2, 0x03, + 0xd6, 0x03, 0xd6, 0x03, 0xc7, 0x03, 0xc9, 0x03, 0xb6, 0x03, 0xb5, 0x03, + 0xa4, 0x03, 0xa6, 0x03, 0x90, 0x03, 0x8f, 0x03, 0x79, 0x03, 0x7a, 0x03, + 0x60, 0x03, 0x61, 0x03, 0x45, 0x03, 0x44, 0x03, 0x29, 0x03, 0x2a, 0x03, + 0x08, 0x03, 0x09, 0x03, 0xe8, 0x02, 0xe8, 0x02, 0xc6, 0x02, 0xc7, 0x02, + 0xa0, 0x02, 0xa2, 0x02, 0x7d, 0x02, 0x7e, 0x02, 0x54, 0x02, 0x54, 0x02, + 0x2d, 0x02, 0x2f, 0x02, 0x05, 0x02, 0x06, 0x02, 0xdc, 0x01, 0xdc, 0x01, + 0xb1, 0x01, 0xb5, 0x01, 0x8a, 0x01, 0x89, 0x01, 0x5c, 0x01, 0x61, 0x01, + 0x35, 0x01, 0x36, 0x01, 0x0a, 0x01, 0x0b, 0x01, 0xdf, 0x00, 0xe1, 0x00, + 0xb9, 0x00, 0xbb, 0x00, 0x90, 0x00, 0x90, 0x00, 0x6c, 0x00, 0x6e, 0x00, + 0x44, 0x00, 0x44, 0x00, 0x20, 0x00, 0x21, 0x00, 0xfb, 0xff, 0xfd, 0xff, + 0xda, 0xff, 0xd9, 0xff, 0xb7, 0xff, 0xba, 0xff, 0x98, 0xff, 0x98, 0xff, + 0x76, 0xff, 0x79, 0xff, 0x5b, 0xff, 0x5c, 0xff, 0x3c, 0xff, 0x3d, 0xff, + 0x21, 0xff, 0x23, 0xff, 0x07, 0xff, 0x06, 0xff, 0xe8, 0xfe, 0xeb, 0xfe, + 0xd2, 0xfe, 0xd2, 0xfe, 0xb2, 0xfe, 0xb5, 0xfe, 0x9f, 0xfe, 0x9e, 0xfe, + 0x80, 0xfe, 0x83, 0xfe, 0x69, 0xfe, 0x69, 0xfe, 0x4f, 0xfe, 0x50, 0xfe, + 0x35, 0xfe, 0x37, 0xfe, 0x1b, 0xfe, 0x1a, 0xfe, 0x01, 0xfe, 0x01, 0xfe, + 0xe6, 0xfd, 0xe6, 0xfd, 0xcb, 0xfd, 0xcb, 0xfd, 0xb0, 0xfd, 0xb1, 0xfd, + 0x91, 0xfd, 0x93, 0xfd, 0x77, 0xfd, 0x77, 0xfd, 0x5a, 0xfd, 0x5a, 0xfd, + 0x3b, 0xfd, 0x3d, 0xfd, 0x21, 0xfd, 0x1f, 0xfd, 0x00, 0xfd, 0x02, 0xfd, + 0xe3, 0xfc, 0xe2, 0xfc, 0xc6, 0xfc, 0xc7, 0xfc, 0xa8, 0xfc, 0xa9, 0xfc, + 0x8c, 0xfc, 0x8d, 0xfc, 0x70, 0xfc, 0x72, 0xfc, 0x54, 0xfc, 0x56, 0xfc, + 0x3b, 0xfc, 0x3c, 0xfc, 0x22, 0xfc, 0x22, 0xfc, 0x09, 0xfc, 0x0b, 0xfc, + 0xf7, 0xfb, 0xf7, 0xfb, 0xe0, 0xfb, 0xe2, 0xfb, 0xcf, 0xfb, 0xd1, 0xfb, + 0xbf, 0xfb, 0xc0, 0xfb, 0xb1, 0xfb, 0xb4, 0xfb, 0xa4, 0xfb, 0xa5, 0xfb, + 0x9c, 0xfb, 0x9e, 0xfb, 0x94, 0xfb, 0x96, 0xfb, 0x90, 0xfb, 0x92, 0xfb, + 0x8f, 0xfb, 0x90, 0xfb, 0x8c, 0xfb, 0x91, 0xfb, 0x92, 0xfb, 0x93, 0xfb, + 0x94, 0xfb, 0x96, 0xfb, 0x9c, 0xfb, 0x9d, 0xfb, 0xa6, 0xfb, 0xa8, 0xfb, + 0xb1, 0xfb, 0xb2, 0xfb, 0xbe, 0xfb, 0xc0, 0xfb, 0xcc, 0xfb, 0xcd, 0xfb, + 0xdd, 0xfb, 0xdd, 0xfb, 0xed, 0xfb, 0xf0, 0xfb, 0x01, 0xfc, 0x01, 0xfc, + 0x15, 0xfc, 0x17, 0xfc, 0x2a, 0xfc, 0x2c, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, + 0x54, 0xfc, 0x57, 0xfc, 0x6b, 0xfc, 0x6c, 0xfc, 0x7f, 0xfc, 0x82, 0xfc, + 0x97, 0xfc, 0x97, 0xfc, 0xac, 0xfc, 0xaf, 0xfc, 0xc5, 0xfc, 0xc5, 0xfc, + 0xd9, 0xfc, 0xdd, 0xfc, 0xef, 0xfc, 0xf0, 0xfc, 0x06, 0xfd, 0x07, 0xfd, + 0x1b, 0xfd, 0x1e, 0xfd, 0x30, 0xfd, 0x31, 0xfd, 0x45, 0xfd, 0x45, 0xfd, + 0x58, 0xfd, 0x5b, 0xfd, 0x6e, 0xfd, 0x6f, 0xfd, 0x82, 0xfd, 0x85, 0xfd, + 0x99, 0xfd, 0x98, 0xfd, 0xad, 0xfd, 0xae, 0xfd, 0xc3, 0xfd, 0xc4, 0xfd, + 0xd8, 0xfd, 0xd9, 0xfd, 0xf0, 0xfd, 0xf1, 0xfd, 0x07, 0xfe, 0x07, 0xfe, + 0x1e, 0xfe, 0x20, 0xfe, 0x37, 0xfe, 0x3a, 0xfe, 0x54, 0xfe, 0x53, 0xfe, + 0x6e, 0xfe, 0x70, 0xfe, 0x8a, 0xfe, 0x8c, 0xfe, 0xaa, 0xfe, 0xab, 0xfe, + 0xc7, 0xfe, 0xcb, 0xfe, 0xea, 0xfe, 0xec, 0xfe, 0x0e, 0xff, 0x0f, 0xff, + 0x30, 0xff, 0x32, 0xff, 0x56, 0xff, 0x58, 0xff, 0x7a, 0xff, 0x7e, 0xff, + 0xa4, 0xff, 0xa4, 0xff, 0xcc, 0xff, 0xce, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0x21, 0x00, 0x24, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x78, 0x00, 0x7b, 0x00, + 0xa3, 0x00, 0xa3, 0x00, 0xd0, 0x00, 0xd2, 0x00, 0xfa, 0x00, 0xfb, 0x00, + 0x28, 0x01, 0x28, 0x01, 0x51, 0x01, 0x54, 0x01, 0x7c, 0x01, 0x7c, 0x01, + 0xa5, 0x01, 0xa8, 0x01, 0xcc, 0x01, 0xcf, 0x01, 0xf6, 0x01, 0xf6, 0x01, + 0x1b, 0x02, 0x1c, 0x02, 0x3d, 0x02, 0x3e, 0x02, 0x61, 0x02, 0x62, 0x02, + 0x80, 0x02, 0x82, 0x02, 0x9f, 0x02, 0xa1, 0x02, 0xbc, 0x02, 0xbd, 0x02, + 0xd7, 0x02, 0xd8, 0x02, 0xf0, 0x02, 0xf2, 0x02, 0x07, 0x03, 0x08, 0x03, + 0x1c, 0x03, 0x1c, 0x03, 0x2f, 0x03, 0x31, 0x03, 0x41, 0x03, 0x42, 0x03, + 0x4f, 0x03, 0x50, 0x03, 0x5f, 0x03, 0x60, 0x03, 0x6b, 0x03, 0x6c, 0x03, + 0x78, 0x03, 0x79, 0x03, 0x81, 0x03, 0x83, 0x03, 0x8d, 0x03, 0x8e, 0x03, + 0x95, 0x03, 0x95, 0x03, 0x9d, 0x03, 0x9f, 0x03, 0xa7, 0x03, 0xa6, 0x03, + 0xa9, 0x03, 0xab, 0x03, 0xb5, 0x03, 0xb6, 0x03, 0xb7, 0x03, 0xb9, 0x03, + 0xc2, 0x03, 0xc2, 0x03, 0xc8, 0x03, 0xc9, 0x03, 0xcd, 0x03, 0xcd, 0x03, + 0xd6, 0x03, 0xd8, 0x03, 0xda, 0x03, 0xda, 0x03, 0xe1, 0x03, 0xe3, 0x03, + 0xe9, 0x03, 0xe9, 0x03, 0xee, 0x03, 0xee, 0x03, 0xf6, 0x03, 0xf7, 0x03, + 0xfb, 0x03, 0xfd, 0x03, 0xff, 0x03, 0x01, 0x04, 0x06, 0x04, 0x07, 0x04, + 0x0a, 0x04, 0x0a, 0x04, 0x0d, 0x04, 0x0f, 0x04, 0x12, 0x04, 0x11, 0x04, + 0x12, 0x04, 0x11, 0x04, 0x13, 0x04, 0x15, 0x04, 0x12, 0x04, 0x11, 0x04, + 0x0f, 0x04, 0x10, 0x04, 0x0b, 0x04, 0x0d, 0x04, 0x04, 0x04, 0x04, 0x04, + 0xfc, 0x03, 0xfe, 0x03, 0xf2, 0x03, 0xf3, 0x03, 0xe5, 0x03, 0xe7, 0x03, + 0xd8, 0x03, 0xd9, 0x03, 0xc6, 0x03, 0xc8, 0x03, 0xb4, 0x03, 0xb4, 0x03, + 0x9c, 0x03, 0x9e, 0x03, 0x88, 0x03, 0x89, 0x03, 0x6e, 0x03, 0x6e, 0x03, + 0x53, 0x03, 0x56, 0x03, 0x34, 0x03, 0x35, 0x03, 0x16, 0x03, 0x18, 0x03, + 0xf6, 0x02, 0xf6, 0x02, 0xd2, 0x02, 0xd5, 0x02, 0xb1, 0x02, 0xb2, 0x02, + 0x89, 0x02, 0x8c, 0x02, 0x67, 0x02, 0x68, 0x02, 0x3e, 0x02, 0x3f, 0x02, + 0x19, 0x02, 0x1c, 0x02, 0xf1, 0x01, 0xf2, 0x01, 0xc9, 0x01, 0xcb, 0x01, + 0xa3, 0x01, 0xa5, 0x01, 0x7a, 0x01, 0x7d, 0x01, 0x55, 0x01, 0x57, 0x01, + 0x2d, 0x01, 0x30, 0x01, 0x09, 0x01, 0x09, 0x01, 0xe3, 0x00, 0xe7, 0x00, + 0xc0, 0x00, 0xc0, 0x00, 0x9e, 0x00, 0xa1, 0x00, 0x7a, 0x00, 0x7c, 0x00, + 0x5c, 0x00, 0x5d, 0x00, 0x39, 0x00, 0x3d, 0x00, 0x1d, 0x00, 0x1d, 0x00, + 0xfd, 0xff, 0x01, 0x00, 0xe1, 0xff, 0xe1, 0xff, 0xc4, 0xff, 0xc5, 0xff, + 0xaa, 0xff, 0xac, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x72, 0xff, 0x74, 0xff, + 0x59, 0xff, 0x5c, 0xff, 0x3f, 0xff, 0x41, 0xff, 0x24, 0xff, 0x26, 0xff, + 0x0b, 0xff, 0x0d, 0xff, 0xf0, 0xfe, 0xf2, 0xfe, 0xd7, 0xfe, 0xda, 0xfe, + 0xbc, 0xfe, 0xbd, 0xfe, 0x9f, 0xfe, 0xa1, 0xfe, 0x84, 0xfe, 0x87, 0xfe, + 0x69, 0xfe, 0x68, 0xfe, 0x4a, 0xfe, 0x4d, 0xfe, 0x2f, 0xfe, 0x30, 0xfe, + 0x0e, 0xfe, 0x11, 0xfe, 0xf2, 0xfd, 0xf2, 0xfd, 0xd0, 0xfd, 0xd3, 0xfd, + 0xb3, 0xfd, 0xb4, 0xfd, 0x92, 0xfd, 0x94, 0xfd, 0x71, 0xfd, 0x73, 0xfd, + 0x51, 0xfd, 0x52, 0xfd, 0x30, 0xfd, 0x32, 0xfd, 0x10, 0xfd, 0x10, 0xfd, + 0xf0, 0xfc, 0xf3, 0xfc, 0xd1, 0xfc, 0xd2, 0xfc, 0xb3, 0xfc, 0xb4, 0xfc, + 0x96, 0xfc, 0x97, 0xfc, 0x79, 0xfc, 0x7a, 0xfc, 0x5d, 0xfc, 0x5f, 0xfc, + 0x46, 0xfc, 0x46, 0xfc, 0x2d, 0xfc, 0x30, 0xfc, 0x18, 0xfc, 0x17, 0xfc, + 0x04, 0xfc, 0x07, 0xfc, 0xf1, 0xfb, 0xf1, 0xfb, 0xe3, 0xfb, 0xe4, 0xfb, + 0xd5, 0xfb, 0xd6, 0xfb, 0xca, 0xfb, 0xcb, 0xfb, 0xc1, 0xfb, 0xc4, 0xfb, + 0xbb, 0xfb, 0xbb, 0xfb, 0xb9, 0xfb, 0xba, 0xfb, 0xb5, 0xfb, 0xb5, 0xfb, + 0xb8, 0xfb, 0xb9, 0xfb, 0xb9, 0xfb, 0xbb, 0xfb, 0xc0, 0xfb, 0xbf, 0xfb, + 0xc7, 0xfb, 0xc9, 0xfb, 0xce, 0xfb, 0xcf, 0xfb, 0xdb, 0xfb, 0xdd, 0xfb, + 0xe4, 0xfb, 0xe5, 0xfb, 0xf4, 0xfb, 0xf5, 0xfb, 0x00, 0xfc, 0x01, 0xfc, + 0x10, 0xfc, 0x11, 0xfc, 0x21, 0xfc, 0x23, 0xfc, 0x32, 0xfc, 0x31, 0xfc, + 0x42, 0xfc, 0x43, 0xfc, 0x53, 0xfc, 0x55, 0xfc, 0x66, 0xfc, 0x67, 0xfc, + 0x77, 0xfc, 0x79, 0xfc, 0x8a, 0xfc, 0x8b, 0xfc, 0x9c, 0xfc, 0x9d, 0xfc, + 0xae, 0xfc, 0xae, 0xfc, 0xbe, 0xfc, 0xc0, 0xfc, 0xd1, 0xfc, 0xd0, 0xfc, + 0xe0, 0xfc, 0xe2, 0xfc, 0xf2, 0xfc, 0xf3, 0xfc, 0x02, 0xfd, 0x02, 0xfd, + 0x12, 0xfd, 0x14, 0xfd, 0x24, 0xfd, 0x24, 0xfd, 0x34, 0xfd, 0x34, 0xfd, + 0x44, 0xfd, 0x47, 0xfd, 0x58, 0xfd, 0x57, 0xfd, 0x66, 0xfd, 0x68, 0xfd, + 0x7c, 0xfd, 0x7e, 0xfd, 0x8d, 0xfd, 0x8e, 0xfd, 0xa2, 0xfd, 0xa5, 0xfd, + 0xb7, 0xfd, 0xb9, 0xfd, 0xcd, 0xfd, 0xce, 0xfd, 0xe5, 0xfd, 0xe9, 0xfd, + 0xfe, 0xfd, 0xfe, 0xfd, 0x19, 0xfe, 0x1b, 0xfe, 0x34, 0xfe, 0x37, 0xfe, + 0x53, 0xfe, 0x52, 0xfe, 0x72, 0xfe, 0x74, 0xfe, 0x92, 0xfe, 0x92, 0xfe, + 0xb5, 0xfe, 0xb7, 0xfe, 0xd8, 0xfe, 0xd7, 0xfe, 0xfd, 0xfe, 0x00, 0xff, + 0x25, 0xff, 0x24, 0xff, 0x4b, 0xff, 0x4e, 0xff, 0x75, 0xff, 0x76, 0xff, + 0x9d, 0xff, 0xa0, 0xff, 0xca, 0xff, 0xcb, 0xff, 0xf3, 0xff, 0xf6, 0xff, + 0x20, 0x00, 0x22, 0x00, 0x4b, 0x00, 0x4f, 0x00, 0x76, 0x00, 0x77, 0x00, + 0xa4, 0x00, 0xa8, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xf9, 0x00, 0xfb, 0x00, + 0x22, 0x01, 0x25, 0x01, 0x4c, 0x01, 0x4c, 0x01, 0x72, 0x01, 0x76, 0x01, + 0x9b, 0x01, 0x9b, 0x01, 0xbd, 0x01, 0xbf, 0x01, 0xe1, 0x01, 0xe3, 0x01, + 0x02, 0x02, 0x03, 0x02, 0x22, 0x02, 0x23, 0x02, 0x41, 0x02, 0x43, 0x02, + 0x5d, 0x02, 0x5c, 0x02, 0x75, 0x02, 0x79, 0x02, 0x90, 0x02, 0x90, 0x02, + 0xa6, 0x02, 0xa7, 0x02, 0xbb, 0x02, 0xbd, 0x02, 0xcf, 0x02, 0xce, 0x02, + 0xe2, 0x02, 0xe4, 0x02, 0xf1, 0x02, 0xf2, 0x02, 0x02, 0x03, 0x03, 0x03, + 0x0f, 0x03, 0x11, 0x03, 0x1e, 0x03, 0x1f, 0x03, 0x2a, 0x03, 0x2c, 0x03, + 0x36, 0x03, 0x35, 0x03, 0x44, 0x03, 0x46, 0x03, 0x4c, 0x03, 0x4c, 0x03, + 0x58, 0x03, 0x59, 0x03, 0x61, 0x03, 0x63, 0x03, 0x6c, 0x03, 0x6c, 0x03, + 0x77, 0x03, 0x79, 0x03, 0x80, 0x03, 0x81, 0x03, 0x8f, 0x03, 0x8f, 0x03, + 0x93, 0x03, 0x96, 0x03, 0xa3, 0x03, 0xa4, 0x03, 0xab, 0x03, 0xae, 0x03, + 0xb7, 0x03, 0xba, 0x03, 0xc3, 0x03, 0xc3, 0x03, 0xce, 0x03, 0xd0, 0x03, + 0xd8, 0x03, 0xd9, 0x03, 0xe4, 0x03, 0xe6, 0x03, 0xec, 0x03, 0xeb, 0x03, + 0xf5, 0x03, 0xf9, 0x03, 0xfe, 0x03, 0xff, 0x03, 0x05, 0x04, 0x05, 0x04, + 0x0d, 0x04, 0x0f, 0x04, 0x11, 0x04, 0x11, 0x04, 0x15, 0x04, 0x19, 0x04, + 0x14, 0x04, 0x15, 0x04, 0x16, 0x04, 0x19, 0x04, 0x13, 0x04, 0x15, 0x04, + 0x11, 0x04, 0x12, 0x04, 0x0b, 0x04, 0x0b, 0x04, 0x02, 0x04, 0x03, 0x04, + 0xf8, 0x03, 0xfa, 0x03, 0xeb, 0x03, 0xed, 0x03, 0xdd, 0x03, 0xe0, 0x03, + 0xcc, 0x03, 0xce, 0x03, 0xb8, 0x03, 0xba, 0x03, 0xa3, 0x03, 0xa5, 0x03, + 0x8a, 0x03, 0x8a, 0x03, 0x70, 0x03, 0x73, 0x03, 0x55, 0x03, 0x56, 0x03, + 0x37, 0x03, 0x39, 0x03, 0x19, 0x03, 0x1d, 0x03, 0xfa, 0x02, 0xfa, 0x02, + 0xda, 0x02, 0xdc, 0x02, 0xb5, 0x02, 0xb7, 0x02, 0x92, 0x02, 0x93, 0x02, + 0x6f, 0x02, 0x72, 0x02, 0x4a, 0x02, 0x4a, 0x02, 0x28, 0x02, 0x2a, 0x02, + 0x00, 0x02, 0x03, 0x02, 0xdf, 0x01, 0xdf, 0x01, 0xb9, 0x01, 0xbc, 0x01, + 0x97, 0x01, 0x98, 0x01, 0x74, 0x01, 0x77, 0x01, 0x51, 0x01, 0x52, 0x01, + 0x2f, 0x01, 0x32, 0x01, 0x10, 0x01, 0x12, 0x01, 0xf0, 0x00, 0xf1, 0x00, + 0xd0, 0x00, 0xd4, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0x94, 0x00, 0x99, 0x00, + 0x7a, 0x00, 0x79, 0x00, 0x5d, 0x00, 0x62, 0x00, 0x44, 0x00, 0x43, 0x00, + 0x26, 0x00, 0x2a, 0x00, 0x0e, 0x00, 0x12, 0x00, 0xf4, 0xff, 0xf4, 0xff, + 0xdd, 0xff, 0xe1, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xa8, 0xff, 0xab, 0xff, + 0x8e, 0xff, 0x91, 0xff, 0x73, 0xff, 0x74, 0xff, 0x5b, 0xff, 0x5d, 0xff, + 0x3e, 0xff, 0x41, 0xff, 0x26, 0xff, 0x26, 0xff, 0x04, 0xff, 0x07, 0xff, + 0xeb, 0xfe, 0xee, 0xfe, 0xca, 0xfe, 0xcc, 0xfe, 0xab, 0xfe, 0xaf, 0xfe, + 0x8e, 0xfe, 0x8f, 0xfe, 0x6c, 0xfe, 0x6d, 0xfe, 0x4b, 0xfe, 0x4f, 0xfe, + 0x2a, 0xfe, 0x2b, 0xfe, 0x08, 0xfe, 0x0a, 0xfe, 0xe4, 0xfd, 0xe7, 0xfd, + 0xc3, 0xfd, 0xc4, 0xfd, 0x9f, 0xfd, 0xa2, 0xfd, 0x7e, 0xfd, 0x7f, 0xfd, + 0x5a, 0xfd, 0x5d, 0xfd, 0x38, 0xfd, 0x3c, 0xfd, 0x18, 0xfd, 0x17, 0xfd, + 0xf6, 0xfc, 0xf9, 0xfc, 0xd8, 0xfc, 0xd8, 0xfc, 0xbb, 0xfc, 0xbd, 0xfc, + 0x9d, 0xfc, 0xa0, 0xfc, 0x84, 0xfc, 0x84, 0xfc, 0x69, 0xfc, 0x6c, 0xfc, + 0x53, 0xfc, 0x52, 0xfc, 0x3e, 0xfc, 0x42, 0xfc, 0x2b, 0xfc, 0x2b, 0xfc, + 0x19, 0xfc, 0x1b, 0xfc, 0x0b, 0xfc, 0x0c, 0xfc, 0x00, 0xfc, 0xfe, 0xfb, + 0xf4, 0xfb, 0xf9, 0xfb, 0xee, 0xfb, 0xee, 0xfb, 0xe8, 0xfb, 0xe9, 0xfb, + 0xe3, 0xfb, 0xe7, 0xfb, 0xe6, 0xfb, 0xe6, 0xfb, 0xe3, 0xfb, 0xe5, 0xfb, + 0xea, 0xfb, 0xea, 0xfb, 0xed, 0xfb, 0xee, 0xfb, 0xf3, 0xfb, 0xf4, 0xfb, + 0xfb, 0xfb, 0xfc, 0xfb, 0x03, 0xfc, 0x05, 0xfc, 0x0f, 0xfc, 0x10, 0xfc, + 0x18, 0xfc, 0x1b, 0xfc, 0x25, 0xfc, 0x25, 0xfc, 0x30, 0xfc, 0x32, 0xfc, + 0x3f, 0xfc, 0x40, 0xfc, 0x49, 0xfc, 0x4c, 0xfc, 0x5b, 0xfc, 0x5b, 0xfc, + 0x65, 0xfc, 0x66, 0xfc, 0x72, 0xfc, 0x75, 0xfc, 0x83, 0xfc, 0x81, 0xfc, + 0x8b, 0xfc, 0x90, 0xfc, 0x9d, 0xfc, 0x9d, 0xfc, 0xa6, 0xfc, 0xa8, 0xfc, + 0xb5, 0xfc, 0xb6, 0xfc, 0xc1, 0xfc, 0xc1, 0xfc, 0xce, 0xfc, 0xd0, 0xfc, + 0xdb, 0xfc, 0xda, 0xfc, 0xe6, 0xfc, 0xe7, 0xfc, 0xf4, 0xfc, 0xf6, 0xfc, + 0xff, 0xfc, 0x00, 0xfd, 0x10, 0xfd, 0x10, 0xfd, 0x1c, 0xfd, 0x1e, 0xfd, + 0x2c, 0xfd, 0x2d, 0xfd, 0x39, 0xfd, 0x3c, 0xfd, 0x4c, 0xfd, 0x4d, 0xfd, + 0x60, 0xfd, 0x60, 0xfd, 0x71, 0xfd, 0x71, 0xfd, 0x85, 0xfd, 0x89, 0xfd, + 0x9f, 0xfd, 0x9c, 0xfd, 0xb2, 0xfd, 0xb8, 0xfd, 0xcf, 0xfd, 0xcd, 0xfd, + 0xe8, 0xfd, 0xea, 0xfd, 0x06, 0xfe, 0x07, 0xfe, 0x26, 0xfe, 0x25, 0xfe, + 0x43, 0xfe, 0x45, 0xfe, 0x66, 0xfe, 0x67, 0xfe, 0x8a, 0xfe, 0x8b, 0xfe, + 0xaf, 0xfe, 0xb0, 0xfe, 0xd6, 0xfe, 0xd7, 0xfe, 0xfd, 0xfe, 0xfc, 0xfe, + 0x25, 0xff, 0x27, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x79, 0xff, 0x7a, 0xff, + 0xa3, 0xff, 0xa4, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0x26, 0x00, 0x26, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x7a, 0x00, 0x7b, 0x00, + 0xa4, 0x00, 0xa6, 0x00, 0xca, 0x00, 0xca, 0x00, 0xf5, 0x00, 0xf6, 0x00, + 0x1b, 0x01, 0x1a, 0x01, 0x3f, 0x01, 0x40, 0x01, 0x64, 0x01, 0x64, 0x01, + 0x84, 0x01, 0x86, 0x01, 0xa5, 0x01, 0xa7, 0x01, 0xc5, 0x01, 0xc5, 0x01, + 0xe0, 0x01, 0xe2, 0x01, 0xfe, 0x01, 0xfe, 0x01, 0x15, 0x02, 0x17, 0x02, + 0x2f, 0x02, 0x31, 0x02, 0x45, 0x02, 0x47, 0x02, 0x5b, 0x02, 0x5b, 0x02, + 0x70, 0x02, 0x72, 0x02, 0x81, 0x02, 0x82, 0x02, 0x96, 0x02, 0x96, 0x02, + 0xa2, 0x02, 0xa4, 0x02, 0xb4, 0x02, 0xb5, 0x02, 0xc2, 0x02, 0xc5, 0x02, + 0xd2, 0x02, 0xd2, 0x02, 0xe0, 0x02, 0xe3, 0x02, 0xee, 0x02, 0xef, 0x02, + 0xfd, 0x02, 0xfe, 0x02, 0x0b, 0x03, 0x0c, 0x03, 0x18, 0x03, 0x18, 0x03, + 0x27, 0x03, 0x28, 0x03, 0x33, 0x03, 0x35, 0x03, 0x42, 0x03, 0x43, 0x03, + 0x51, 0x03, 0x53, 0x03, 0x60, 0x03, 0x5f, 0x03, 0x70, 0x03, 0x71, 0x03, + 0x7b, 0x03, 0x7d, 0x03, 0x90, 0x03, 0x91, 0x03, 0x9b, 0x03, 0x9a, 0x03, + 0xac, 0x03, 0xaf, 0x03, 0xb9, 0x03, 0xba, 0x03, 0xc6, 0x03, 0xc8, 0x03, + 0xd7, 0x03, 0xd8, 0x03, 0xe0, 0x03, 0xe0, 0x03, 0xee, 0x03, 0xf2, 0x03, + 0xf8, 0x03, 0xf7, 0x03, 0x00, 0x04, 0x01, 0x04, 0x0a, 0x04, 0x0a, 0x04, + 0x0f, 0x04, 0x10, 0x04, 0x14, 0x04, 0x16, 0x04, 0x16, 0x04, 0x15, 0x04, + 0x17, 0x04, 0x18, 0x04, 0x14, 0x04, 0x16, 0x04, 0x10, 0x04, 0x10, 0x04, + 0x0a, 0x04, 0x0b, 0x04, 0x01, 0x04, 0x03, 0x04, 0xf8, 0x03, 0xf8, 0x03, + 0xe8, 0x03, 0xeb, 0x03, 0xdc, 0x03, 0xdc, 0x03, 0xca, 0x03, 0xcb, 0x03, + 0xb4, 0x03, 0xb6, 0x03, 0xa0, 0x03, 0xa2, 0x03, 0x86, 0x03, 0x87, 0x03, + 0x6f, 0x03, 0x72, 0x03, 0x53, 0x03, 0x54, 0x03, 0x36, 0x03, 0x36, 0x03, + 0x1a, 0x03, 0x1c, 0x03, 0xf7, 0x02, 0xfa, 0x02, 0xdc, 0x02, 0xdc, 0x02, + 0xbb, 0x02, 0xbc, 0x02, 0x9a, 0x02, 0x9a, 0x02, 0x7a, 0x02, 0x7b, 0x02, + 0x58, 0x02, 0x59, 0x02, 0x39, 0x02, 0x39, 0x02, 0x15, 0x02, 0x19, 0x02, + 0xf7, 0x01, 0xf8, 0x01, 0xd6, 0x01, 0xd7, 0x01, 0xb9, 0x01, 0xb8, 0x01, + 0x97, 0x01, 0x99, 0x01, 0x7a, 0x01, 0x7a, 0x01, 0x5c, 0x01, 0x5f, 0x01, + 0x42, 0x01, 0x41, 0x01, 0x23, 0x01, 0x27, 0x01, 0x0b, 0x01, 0x0b, 0x01, + 0xf0, 0x00, 0xf0, 0x00, 0xd7, 0x00, 0xda, 0x00, 0xbe, 0x00, 0xbb, 0x00, + 0xa6, 0x00, 0xa7, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x72, 0x00, 0x74, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x42, 0x00, 0x42, 0x00, 0x2a, 0x00, 0x2c, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0xff, 0xf9, 0xff, 0xda, 0xff, 0xda, 0xff, + 0xc2, 0xff, 0xc3, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0x88, 0xff, 0x86, 0xff, + 0x6b, 0xff, 0x6d, 0xff, 0x4a, 0xff, 0x49, 0xff, 0x2e, 0xff, 0x30, 0xff, + 0x0b, 0xff, 0x0b, 0xff, 0xeb, 0xfe, 0xec, 0xfe, 0xc8, 0xfe, 0xc8, 0xfe, + 0xa4, 0xfe, 0xa6, 0xfe, 0x82, 0xfe, 0x82, 0xfe, 0x5c, 0xfe, 0x5d, 0xfe, + 0x3a, 0xfe, 0x39, 0xfe, 0x15, 0xfe, 0x15, 0xfe, 0xef, 0xfd, 0xf0, 0xfd, + 0xcc, 0xfd, 0xcc, 0xfd, 0xa8, 0xfd, 0xa8, 0xfd, 0x84, 0xfd, 0x85, 0xfd, + 0x61, 0xfd, 0x61, 0xfd, 0x3e, 0xfd, 0x42, 0xfd, 0x21, 0xfd, 0x1f, 0xfd, + 0xfe, 0xfc, 0x01, 0xfd, 0xe6, 0xfc, 0xe3, 0xfc, 0xc6, 0xfc, 0xc7, 0xfc, + 0xac, 0xfc, 0xad, 0xfc, 0x97, 0xfc, 0x96, 0xfc, 0x7f, 0xfc, 0x80, 0xfc, + 0x6c, 0xfc, 0x6c, 0xfc, 0x59, 0xfc, 0x59, 0xfc, 0x4c, 0xfc, 0x4d, 0xfc, + 0x3c, 0xfc, 0x3c, 0xfc, 0x32, 0xfc, 0x34, 0xfc, 0x29, 0xfc, 0x2b, 0xfc, + 0x22, 0xfc, 0x24, 0xfc, 0x20, 0xfc, 0x20, 0xfc, 0x1b, 0xfc, 0x1d, 0xfc, + 0x1a, 0xfc, 0x1b, 0xfc, 0x1f, 0xfc, 0x1d, 0xfc, 0x1d, 0xfc, 0x1f, 0xfc, + 0x24, 0xfc, 0x25, 0xfc, 0x26, 0xfc, 0x27, 0xfc, 0x2d, 0xfc, 0x2f, 0xfc, + 0x34, 0xfc, 0x35, 0xfc, 0x3a, 0xfc, 0x3a, 0xfc, 0x45, 0xfc, 0x46, 0xfc, + 0x4a, 0xfc, 0x4b, 0xfc, 0x55, 0xfc, 0x55, 0xfc, 0x5d, 0xfc, 0x5f, 0xfc, + 0x65, 0xfc, 0x67, 0xfc, 0x71, 0xfc, 0x70, 0xfc, 0x76, 0xfc, 0x79, 0xfc, + 0x83, 0xfc, 0x82, 0xfc, 0x8a, 0xfc, 0x8b, 0xfc, 0x91, 0xfc, 0x93, 0xfc, + 0x9b, 0xfc, 0x9a, 0xfc, 0xa1, 0xfc, 0xa3, 0xfc, 0xa9, 0xfc, 0xaa, 0xfc, + 0xb3, 0xfc, 0xb3, 0xfc, 0xba, 0xfc, 0xbc, 0xfc, 0xc2, 0xfc, 0xc3, 0xfc, + 0xcd, 0xfc, 0xcc, 0xfc, 0xd5, 0xfc, 0xd8, 0xfc, 0xdf, 0xfc, 0xe0, 0xfc, + 0xec, 0xfc, 0xee, 0xfc, 0xf7, 0xfc, 0xf8, 0xfc, 0x05, 0xfd, 0x05, 0xfd, + 0x14, 0xfd, 0x14, 0xfd, 0x22, 0xfd, 0x22, 0xfd, 0x37, 0xfd, 0x36, 0xfd, + 0x47, 0xfd, 0x49, 0xfd, 0x5d, 0xfd, 0x5d, 0xfd, 0x75, 0xfd, 0x75, 0xfd, + 0x8b, 0xfd, 0x8c, 0xfd, 0xa7, 0xfd, 0xa7, 0xfd, 0xc2, 0xfd, 0xc2, 0xfd, + 0xe2, 0xfd, 0xe2, 0xfd, 0x00, 0xfe, 0x00, 0xfe, 0x21, 0xfe, 0x22, 0xfe, + 0x45, 0xfe, 0x45, 0xfe, 0x69, 0xfe, 0x6a, 0xfe, 0x91, 0xfe, 0x92, 0xfe, + 0xb5, 0xfe, 0xb5, 0xfe, 0xde, 0xfe, 0xe0, 0xfe, 0x07, 0xff, 0x04, 0xff, + 0x2e, 0xff, 0x32, 0xff, 0x5b, 0xff, 0x59, 0xff, 0x81, 0xff, 0x83, 0xff, + 0xaf, 0xff, 0xae, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x2b, 0x00, 0x50, 0x00, 0x52, 0x00, 0x79, 0x00, 0x79, 0x00, + 0x9e, 0x00, 0x9e, 0x00, 0xc1, 0x00, 0xc3, 0x00, 0xe5, 0x00, 0xe6, 0x00, + 0x07, 0x01, 0x07, 0x01, 0x28, 0x01, 0x29, 0x01, 0x46, 0x01, 0x46, 0x01, + 0x65, 0x01, 0x66, 0x01, 0x81, 0x01, 0x80, 0x01, 0x98, 0x01, 0x9b, 0x01, + 0xb5, 0x01, 0xb4, 0x01, 0xc9, 0x01, 0xca, 0x01, 0xe2, 0x01, 0xe2, 0x01, + 0xf6, 0x01, 0xf7, 0x01, 0x0a, 0x02, 0x0c, 0x02, 0x1f, 0x02, 0x1e, 0x02, + 0x2f, 0x02, 0x30, 0x02, 0x43, 0x02, 0x42, 0x02, 0x53, 0x02, 0x54, 0x02, + 0x64, 0x02, 0x64, 0x02, 0x76, 0x02, 0x77, 0x02, 0x84, 0x02, 0x85, 0x02, + 0x97, 0x02, 0x98, 0x02, 0xa7, 0x02, 0xa7, 0x02, 0xb8, 0x02, 0xb8, 0x02, + 0xc8, 0x02, 0xc9, 0x02, 0xdb, 0x02, 0xdd, 0x02, 0xec, 0x02, 0xeb, 0x02, + 0xfe, 0x02, 0x00, 0x03, 0x10, 0x03, 0x0f, 0x03, 0x25, 0x03, 0x25, 0x03, + 0x36, 0x03, 0x37, 0x03, 0x48, 0x03, 0x49, 0x03, 0x5c, 0x03, 0x5e, 0x03, + 0x6d, 0x03, 0x6e, 0x03, 0x82, 0x03, 0x83, 0x03, 0x92, 0x03, 0x94, 0x03, + 0xa6, 0x03, 0xa6, 0x03, 0xb6, 0x03, 0xb7, 0x03, 0xc3, 0x03, 0xc4, 0x03, + 0xd5, 0x03, 0xd5, 0x03, 0xdf, 0x03, 0xe0, 0x03, 0xec, 0x03, 0xed, 0x03, + 0xf8, 0x03, 0xf8, 0x03, 0xff, 0x03, 0x01, 0x04, 0x07, 0x04, 0x05, 0x04, + 0x09, 0x04, 0x0b, 0x04, 0x0b, 0x04, 0x0d, 0x04, 0x0d, 0x04, 0x0c, 0x04, + 0x0a, 0x04, 0x0a, 0x04, 0x06, 0x04, 0x07, 0x04, 0xfd, 0x03, 0xfe, 0x03, + 0xf7, 0x03, 0xf7, 0x03, 0xea, 0x03, 0xe9, 0x03, 0xdb, 0x03, 0xdd, 0x03, + 0xcd, 0x03, 0xcc, 0x03, 0xb9, 0x03, 0xbb, 0x03, 0xa5, 0x03, 0xa6, 0x03, + 0x92, 0x03, 0x92, 0x03, 0x78, 0x03, 0x79, 0x03, 0x62, 0x03, 0x62, 0x03, + 0x46, 0x03, 0x46, 0x03, 0x2c, 0x03, 0x2e, 0x03, 0x0f, 0x03, 0x0f, 0x03, + 0xf4, 0x02, 0xf4, 0x02, 0xd8, 0x02, 0xd9, 0x02, 0xb7, 0x02, 0xb9, 0x02, + 0x9f, 0x02, 0x9f, 0x02, 0x7c, 0x02, 0x7d, 0x02, 0x64, 0x02, 0x63, 0x02, + 0x45, 0x02, 0x47, 0x02, 0x28, 0x02, 0x27, 0x02, 0x0f, 0x02, 0x0f, 0x02, + 0xf0, 0x01, 0xf1, 0x01, 0xd9, 0x01, 0xd7, 0x01, 0xbb, 0x01, 0xbf, 0x01, + 0xa4, 0x01, 0xa2, 0x01, 0x8a, 0x01, 0x8d, 0x01, 0x71, 0x01, 0x70, 0x01, + 0x5a, 0x01, 0x5c, 0x01, 0x44, 0x01, 0x43, 0x01, 0x2c, 0x01, 0x2b, 0x01, + 0x13, 0x01, 0x17, 0x01, 0xff, 0x00, 0xfc, 0x00, 0xe6, 0x00, 0xe8, 0x00, + 0xd1, 0x00, 0xd1, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0xa0, 0x00, 0xa1, 0x00, + 0x8a, 0x00, 0x88, 0x00, 0x70, 0x00, 0x71, 0x00, 0x57, 0x00, 0x56, 0x00, + 0x3a, 0x00, 0x3b, 0x00, 0x21, 0x00, 0x21, 0x00, 0x04, 0x00, 0x04, 0x00, + 0xe7, 0xff, 0xe7, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xa9, 0xff, 0xa7, 0xff, + 0x86, 0xff, 0x89, 0xff, 0x65, 0xff, 0x63, 0xff, 0x42, 0xff, 0x44, 0xff, + 0x1d, 0xff, 0x1d, 0xff, 0xfb, 0xfe, 0xfb, 0xfe, 0xd3, 0xfe, 0xd4, 0xfe, + 0xb0, 0xfe, 0xb0, 0xfe, 0x8a, 0xfe, 0x8a, 0xfe, 0x62, 0xfe, 0x63, 0xfe, + 0x3f, 0xfe, 0x40, 0xfe, 0x17, 0xfe, 0x18, 0xfe, 0xf5, 0xfd, 0xf5, 0xfd, + 0xd0, 0xfd, 0xd0, 0xfd, 0xaa, 0xfd, 0xac, 0xfd, 0x8b, 0xfd, 0x8a, 0xfd, + 0x66, 0xfd, 0x69, 0xfd, 0x4a, 0xfd, 0x49, 0xfd, 0x2b, 0xfd, 0x2e, 0xfd, + 0x10, 0xfd, 0x0e, 0xfd, 0xf3, 0xfc, 0xf6, 0xfc, 0xdd, 0xfc, 0xdb, 0xfc, + 0xc6, 0xfc, 0xc7, 0xfc, 0xb1, 0xfc, 0xb1, 0xfc, 0xa1, 0xfc, 0xa1, 0xfc, + 0x8f, 0xfc, 0x8f, 0xfc, 0x81, 0xfc, 0x83, 0xfc, 0x74, 0xfc, 0x75, 0xfc, + 0x6e, 0xfc, 0x6d, 0xfc, 0x64, 0xfc, 0x66, 0xfc, 0x5e, 0xfc, 0x5f, 0xfc, + 0x5c, 0xfc, 0x5b, 0xfc, 0x55, 0xfc, 0x58, 0xfc, 0x59, 0xfc, 0x57, 0xfc, + 0x55, 0xfc, 0x58, 0xfc, 0x57, 0xfc, 0x57, 0xfc, 0x5b, 0xfc, 0x59, 0xfc, + 0x5b, 0xfc, 0x5c, 0xfc, 0x61, 0xfc, 0x60, 0xfc, 0x65, 0xfc, 0x64, 0xfc, + 0x66, 0xfc, 0x66, 0xfc, 0x6e, 0xfc, 0x6d, 0xfc, 0x70, 0xfc, 0x6e, 0xfc, + 0x74, 0xfc, 0x76, 0xfc, 0x7b, 0xfc, 0x7b, 0xfc, 0x7d, 0xfc, 0x7d, 0xfc, + 0x81, 0xfc, 0x83, 0xfc, 0x88, 0xfc, 0x86, 0xfc, 0x8a, 0xfc, 0x8b, 0xfc, + 0x8f, 0xfc, 0x8e, 0xfc, 0x91, 0xfc, 0x91, 0xfc, 0x95, 0xfc, 0x97, 0xfc, + 0x99, 0xfc, 0x9b, 0xfc, 0x9e, 0xfc, 0x9d, 0xfc, 0xa1, 0xfc, 0xa2, 0xfc, + 0xa8, 0xfc, 0xa7, 0xfc, 0xac, 0xfc, 0xad, 0xfc, 0xb3, 0xfc, 0xb3, 0xfc, + 0xbb, 0xfc, 0xbb, 0xfc, 0xc2, 0xfc, 0xc2, 0xfc, 0xcc, 0xfc, 0xcc, 0xfc, + 0xd8, 0xfc, 0xd8, 0xfc, 0xe5, 0xfc, 0xe5, 0xfc, 0xf2, 0xfc, 0xf3, 0xfc, + 0x03, 0xfd, 0x02, 0xfd, 0x15, 0xfd, 0x14, 0xfd, 0x28, 0xfd, 0x29, 0xfd, + 0x3d, 0xfd, 0x3d, 0xfd, 0x56, 0xfd, 0x57, 0xfd, 0x6e, 0xfd, 0x6e, 0xfd, + 0x89, 0xfd, 0x89, 0xfd, 0xa7, 0xfd, 0xa8, 0xfd, 0xc6, 0xfd, 0xc5, 0xfd, + 0xe6, 0xfd, 0xe7, 0xfd, 0x08, 0xfe, 0x09, 0xfe, 0x2c, 0xfe, 0x2c, 0xfe, + 0x50, 0xfe, 0x51, 0xfe, 0x75, 0xfe, 0x74, 0xfe, 0x9e, 0xfe, 0x9e, 0xfe, + 0xc4, 0xfe, 0xc4, 0xfe, 0xec, 0xfe, 0xec, 0xfe, 0x16, 0xff, 0x16, 0xff, + 0x3a, 0xff, 0x3a, 0xff, 0x66, 0xff, 0x68, 0xff, 0x8d, 0xff, 0x8c, 0xff, + 0xb5, 0xff, 0xb7, 0xff, 0xdb, 0xff, 0xda, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x26, 0x00, 0x4b, 0x00, 0x4a, 0x00, 0x6c, 0x00, 0x6d, 0x00, + 0x8f, 0x00, 0x8f, 0x00, 0xae, 0x00, 0xae, 0x00, 0xca, 0x00, 0xcd, 0x00, + 0xe9, 0x00, 0xe9, 0x00, 0x06, 0x01, 0x06, 0x01, 0x1d, 0x01, 0x1f, 0x01, + 0x3b, 0x01, 0x3a, 0x01, 0x4f, 0x01, 0x51, 0x01, 0x69, 0x01, 0x6a, 0x01, + 0x7e, 0x01, 0x7e, 0x01, 0x94, 0x01, 0x94, 0x01, 0xa8, 0x01, 0xa9, 0x01, + 0xbd, 0x01, 0xbd, 0x01, 0xcf, 0x01, 0xd0, 0x01, 0xe3, 0x01, 0xe2, 0x01, + 0xf5, 0x01, 0xf7, 0x01, 0x08, 0x02, 0x08, 0x02, 0x1b, 0x02, 0x1a, 0x02, + 0x2e, 0x02, 0x2e, 0x02, 0x3f, 0x02, 0x41, 0x02, 0x55, 0x02, 0x56, 0x02, + 0x67, 0x02, 0x68, 0x02, 0x7c, 0x02, 0x7c, 0x02, 0x91, 0x02, 0x91, 0x02, + 0xa4, 0x02, 0xa5, 0x02, 0xbc, 0x02, 0xbd, 0x02, 0xd1, 0x02, 0xd2, 0x02, + 0xe6, 0x02, 0xe7, 0x02, 0xfe, 0x02, 0xff, 0x02, 0x13, 0x03, 0x14, 0x03, + 0x2a, 0x03, 0x2c, 0x03, 0x3f, 0x03, 0x3f, 0x03, 0x55, 0x03, 0x57, 0x03, + 0x68, 0x03, 0x69, 0x03, 0x80, 0x03, 0x7f, 0x03, 0x8f, 0x03, 0x91, 0x03, + 0xa6, 0x03, 0xa6, 0x03, 0xb3, 0x03, 0xb3, 0x03, 0xc6, 0x03, 0xc7, 0x03, + 0xd2, 0x03, 0xd3, 0x03, 0xde, 0x03, 0xdf, 0x03, 0xe9, 0x03, 0xe9, 0x03, + 0xf0, 0x03, 0xf2, 0x03, 0xf5, 0x03, 0xf7, 0x03, 0xfb, 0x03, 0xfa, 0x03, + 0xfc, 0x03, 0xfd, 0x03, 0xfa, 0x03, 0xfb, 0x03, 0xf9, 0x03, 0xfb, 0x03, + 0xf3, 0x03, 0xf4, 0x03, 0xec, 0x03, 0xec, 0x03, 0xe2, 0x03, 0xe3, 0x03, + 0xd4, 0x03, 0xd5, 0x03, 0xcb, 0x03, 0xcb, 0x03, 0xb5, 0x03, 0xb6, 0x03, + 0xa8, 0x03, 0xa8, 0x03, 0x92, 0x03, 0x94, 0x03, 0x7f, 0x03, 0x7e, 0x03, + 0x6a, 0x03, 0x6b, 0x03, 0x51, 0x03, 0x51, 0x03, 0x3b, 0x03, 0x3d, 0x03, + 0x22, 0x03, 0x21, 0x03, 0x0a, 0x03, 0x0c, 0x03, 0xf0, 0x02, 0xf1, 0x02, + 0xd7, 0x02, 0xd4, 0x02, 0xbe, 0x02, 0xbf, 0x02, 0xa2, 0x02, 0xa2, 0x02, + 0x8c, 0x02, 0x8c, 0x02, 0x70, 0x02, 0x71, 0x02, 0x59, 0x02, 0x5a, 0x02, + 0x41, 0x02, 0x41, 0x02, 0x29, 0x02, 0x29, 0x02, 0x12, 0x02, 0x11, 0x02, + 0xfa, 0x01, 0xfd, 0x01, 0xe7, 0x01, 0xe6, 0x01, 0xd0, 0x01, 0xcf, 0x01, + 0xba, 0x01, 0xbc, 0x01, 0xa7, 0x01, 0xa8, 0x01, 0x92, 0x01, 0x90, 0x01, + 0x7d, 0x01, 0x7f, 0x01, 0x68, 0x01, 0x67, 0x01, 0x53, 0x01, 0x56, 0x01, + 0x40, 0x01, 0x3f, 0x01, 0x28, 0x01, 0x29, 0x01, 0x14, 0x01, 0x14, 0x01, + 0xfc, 0x00, 0xfa, 0x00, 0xe4, 0x00, 0xe6, 0x00, 0xcb, 0x00, 0xcb, 0x00, + 0xb3, 0x00, 0xb5, 0x00, 0x97, 0x00, 0x99, 0x00, 0x7c, 0x00, 0x7d, 0x00, + 0x5e, 0x00, 0x5e, 0x00, 0x40, 0x00, 0x43, 0x00, 0x21, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xdd, 0xff, 0xdf, 0xff, 0xb9, 0xff, 0xba, 0xff, + 0x96, 0xff, 0x98, 0xff, 0x71, 0xff, 0x72, 0xff, 0x4f, 0xff, 0x4f, 0xff, + 0x25, 0xff, 0x27, 0xff, 0x02, 0xff, 0x03, 0xff, 0xd8, 0xfe, 0xd9, 0xfe, + 0xb3, 0xfe, 0xb5, 0xfe, 0x8e, 0xfe, 0x8e, 0xfe, 0x66, 0xfe, 0x66, 0xfe, + 0x42, 0xfe, 0x43, 0xfe, 0x1d, 0xfe, 0x1d, 0xfe, 0xfa, 0xfd, 0xfa, 0xfd, + 0xd7, 0xfd, 0xd6, 0xfd, 0xb5, 0xfd, 0xb6, 0xfd, 0x97, 0xfd, 0x96, 0xfd, + 0x78, 0xfd, 0x79, 0xfd, 0x5c, 0xfd, 0x5b, 0xfd, 0x42, 0xfd, 0x42, 0xfd, + 0x29, 0xfd, 0x28, 0xfd, 0x14, 0xfd, 0x13, 0xfd, 0xfc, 0xfc, 0xfe, 0xfc, + 0xec, 0xfc, 0xed, 0xfc, 0xd9, 0xfc, 0xd9, 0xfc, 0xcc, 0xfc, 0xcd, 0xfc, + 0xc0, 0xfc, 0xbf, 0xfc, 0xb4, 0xfc, 0xb4, 0xfc, 0xac, 0xfc, 0xad, 0xfc, + 0xa5, 0xfc, 0xa3, 0xfc, 0x9c, 0xfc, 0x9f, 0xfc, 0x99, 0xfc, 0x9a, 0xfc, + 0x95, 0xfc, 0x95, 0xfc, 0x93, 0xfc, 0x95, 0xfc, 0x93, 0xfc, 0x92, 0xfc, + 0x8f, 0xfc, 0x90, 0xfc, 0x91, 0xfc, 0x91, 0xfc, 0x90, 0xfc, 0x90, 0xfc, + 0x8e, 0xfc, 0x91, 0xfc, 0x90, 0xfc, 0x90, 0xfc, 0x90, 0xfc, 0x91, 0xfc, + 0x92, 0xfc, 0x91, 0xfc, 0x90, 0xfc, 0x92, 0xfc, 0x93, 0xfc, 0x92, 0xfc, + 0x90, 0xfc, 0x92, 0xfc, 0x93, 0xfc, 0x91, 0xfc, 0x91, 0xfc, 0x94, 0xfc, + 0x90, 0xfc, 0x90, 0xfc, 0x91, 0xfc, 0x92, 0xfc, 0x90, 0xfc, 0x8f, 0xfc, + 0x91, 0xfc, 0x92, 0xfc, 0x90, 0xfc, 0x8e, 0xfc, 0x91, 0xfc, 0x93, 0xfc, + 0x92, 0xfc, 0x93, 0xfc, 0x94, 0xfc, 0x93, 0xfc, 0x97, 0xfc, 0x97, 0xfc, + 0x98, 0xfc, 0x99, 0xfc, 0xa0, 0xfc, 0x9e, 0xfc, 0xa2, 0xfc, 0xa4, 0xfc, + 0xab, 0xfc, 0xab, 0xfc, 0xb5, 0xfc, 0xb5, 0xfc, 0xbe, 0xfc, 0xc1, 0xfc, + 0xcb, 0xfc, 0xca, 0xfc, 0xd9, 0xfc, 0xdc, 0xfc, 0xe9, 0xfc, 0xeb, 0xfc, + 0xfd, 0xfc, 0xfb, 0xfc, 0x0e, 0xfd, 0x13, 0xfd, 0x26, 0xfd, 0x25, 0xfd, + 0x40, 0xfd, 0x40, 0xfd, 0x59, 0xfd, 0x5b, 0xfd, 0x75, 0xfd, 0x76, 0xfd, + 0x93, 0xfd, 0x94, 0xfd, 0xb2, 0xfd, 0xb3, 0xfd, 0xd4, 0xfd, 0xd2, 0xfd, + 0xf4, 0xfd, 0xf7, 0xfd, 0x1a, 0xfe, 0x18, 0xfe, 0x3c, 0xfe, 0x3e, 0xfe, + 0x62, 0xfe, 0x64, 0xfe, 0x87, 0xfe, 0x88, 0xfe, 0xad, 0xfe, 0xb1, 0xfe, + 0xd6, 0xfe, 0xd4, 0xfe, 0xf8, 0xfe, 0xfc, 0xfe, 0x22, 0xff, 0x20, 0xff, + 0x46, 0xff, 0x47, 0xff, 0x6a, 0xff, 0x6d, 0xff, 0x92, 0xff, 0x8f, 0xff, + 0xb1, 0xff, 0xb4, 0xff, 0xd7, 0xff, 0xd6, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0x18, 0x00, 0x19, 0x00, 0x38, 0x00, 0x37, 0x00, 0x54, 0x00, 0x56, 0x00, + 0x70, 0x00, 0x72, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0xa5, 0x00, 0xa6, 0x00, + 0xc1, 0x00, 0xc2, 0x00, 0xd7, 0x00, 0xd8, 0x00, 0xf0, 0x00, 0xf1, 0x00, + 0x05, 0x01, 0x06, 0x01, 0x1b, 0x01, 0x1c, 0x01, 0x30, 0x01, 0x31, 0x01, + 0x44, 0x01, 0x46, 0x01, 0x5a, 0x01, 0x5b, 0x01, 0x6e, 0x01, 0x6f, 0x01, + 0x82, 0x01, 0x82, 0x01, 0x94, 0x01, 0x96, 0x01, 0xac, 0x01, 0xab, 0x01, + 0xbf, 0x01, 0xc1, 0x01, 0xd4, 0x01, 0xd4, 0x01, 0xea, 0x01, 0xea, 0x01, + 0xfd, 0x01, 0x00, 0x02, 0x18, 0x02, 0x17, 0x02, 0x2c, 0x02, 0x2e, 0x02, + 0x45, 0x02, 0x45, 0x02, 0x5d, 0x02, 0x5f, 0x02, 0x74, 0x02, 0x73, 0x02, + 0x8e, 0x02, 0x90, 0x02, 0xa7, 0x02, 0xa6, 0x02, 0xbf, 0x02, 0xc1, 0x02, + 0xdc, 0x02, 0xda, 0x02, 0xf0, 0x02, 0xf3, 0x02, 0x0d, 0x03, 0x0b, 0x03, + 0x22, 0x03, 0x25, 0x03, 0x3a, 0x03, 0x3a, 0x03, 0x52, 0x03, 0x52, 0x03, + 0x66, 0x03, 0x66, 0x03, 0x7b, 0x03, 0x7a, 0x03, 0x8e, 0x03, 0x8e, 0x03, + 0x9f, 0x03, 0xa0, 0x03, 0xae, 0x03, 0xaf, 0x03, 0xbe, 0x03, 0xbc, 0x03, + 0xc7, 0x03, 0xc7, 0x03, 0xd4, 0x03, 0xd2, 0x03, 0xd7, 0x03, 0xd9, 0x03, + 0xdf, 0x03, 0xdf, 0x03, 0xe3, 0x03, 0xe2, 0x03, 0xe1, 0x03, 0xe1, 0x03, + 0xe1, 0x03, 0xdf, 0x03, 0xda, 0x03, 0xdc, 0x03, 0xd9, 0x03, 0xd8, 0x03, + 0xcd, 0x03, 0xcd, 0x03, 0xc4, 0x03, 0xc5, 0x03, 0xba, 0x03, 0xb8, 0x03, + 0xa9, 0x03, 0xab, 0x03, 0x9c, 0x03, 0x9c, 0x03, 0x8c, 0x03, 0x8b, 0x03, + 0x78, 0x03, 0x79, 0x03, 0x67, 0x03, 0x68, 0x03, 0x50, 0x03, 0x52, 0x03, + 0x3f, 0x03, 0x3f, 0x03, 0x27, 0x03, 0x29, 0x03, 0x14, 0x03, 0x13, 0x03, + 0xfe, 0x02, 0xff, 0x02, 0xe8, 0x02, 0xe9, 0x02, 0xd3, 0x02, 0xd4, 0x02, + 0xbd, 0x02, 0xbd, 0x02, 0xa9, 0x02, 0xaa, 0x02, 0x94, 0x02, 0x93, 0x02, + 0x7e, 0x02, 0x7f, 0x02, 0x6d, 0x02, 0x6e, 0x02, 0x58, 0x02, 0x58, 0x02, + 0x46, 0x02, 0x47, 0x02, 0x32, 0x02, 0x32, 0x02, 0x1f, 0x02, 0x21, 0x02, + 0x0f, 0x02, 0x0e, 0x02, 0xfa, 0x01, 0xfb, 0x01, 0xec, 0x01, 0xec, 0x01, + 0xd7, 0x01, 0xd7, 0x01, 0xc7, 0x01, 0xc9, 0x01, 0xb3, 0x01, 0xb1, 0x01, + 0xa2, 0x01, 0xa3, 0x01, 0x8b, 0x01, 0x8e, 0x01, 0x7a, 0x01, 0x79, 0x01, + 0x66, 0x01, 0x65, 0x01, 0x4c, 0x01, 0x4d, 0x01, 0x38, 0x01, 0x37, 0x01, + 0x1e, 0x01, 0x1f, 0x01, 0x04, 0x01, 0x04, 0x01, 0xec, 0x00, 0xeb, 0x00, + 0xcc, 0x00, 0xcd, 0x00, 0xb1, 0x00, 0xb3, 0x00, 0x94, 0x00, 0x91, 0x00, + 0x71, 0x00, 0x73, 0x00, 0x52, 0x00, 0x50, 0x00, 0x2c, 0x00, 0x2f, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0xe5, 0xff, 0xe5, 0xff, 0xc1, 0xff, 0xc1, 0xff, + 0x9b, 0xff, 0x9a, 0xff, 0x74, 0xff, 0x75, 0xff, 0x4c, 0xff, 0x4e, 0xff, + 0x28, 0xff, 0x26, 0xff, 0x00, 0xff, 0x00, 0xff, 0xd8, 0xfe, 0xda, 0xfe, + 0xb5, 0xfe, 0xb2, 0xfe, 0x8c, 0xfe, 0x8e, 0xfe, 0x6a, 0xfe, 0x69, 0xfe, + 0x45, 0xfe, 0x47, 0xfe, 0x23, 0xfe, 0x23, 0xfe, 0x02, 0xfe, 0x03, 0xfe, + 0xe3, 0xfd, 0xe3, 0xfd, 0xc6, 0xfd, 0xc6, 0xfd, 0xa8, 0xfd, 0xa9, 0xfd, + 0x90, 0xfd, 0x90, 0xfd, 0x75, 0xfd, 0x78, 0xfd, 0x61, 0xfd, 0x60, 0xfd, + 0x4c, 0xfd, 0x4e, 0xfd, 0x37, 0xfd, 0x36, 0xfd, 0x2b, 0xfd, 0x2b, 0xfd, + 0x19, 0xfd, 0x1a, 0xfd, 0x0d, 0xfd, 0x0d, 0xfd, 0x01, 0xfd, 0x01, 0xfd, + 0xf5, 0xfc, 0xf7, 0xfc, 0xef, 0xfc, 0xee, 0xfc, 0xe5, 0xfc, 0xe5, 0xfc, + 0xde, 0xfc, 0xe0, 0xfc, 0xda, 0xfc, 0xd9, 0xfc, 0xd2, 0xfc, 0xd4, 0xfc, + 0xcf, 0xfc, 0xd0, 0xfc, 0xc9, 0xfc, 0xcb, 0xfc, 0xc8, 0xfc, 0xc8, 0xfc, + 0xc5, 0xfc, 0xc5, 0xfc, 0xc0, 0xfc, 0xc1, 0xfc, 0xbf, 0xfc, 0xc1, 0xfc, + 0xb9, 0xfc, 0xba, 0xfc, 0xb9, 0xfc, 0xb7, 0xfc, 0xb1, 0xfc, 0xb3, 0xfc, + 0xb0, 0xfc, 0xb1, 0xfc, 0xaa, 0xfc, 0xaa, 0xfc, 0xa6, 0xfc, 0xa7, 0xfc, + 0xa2, 0xfc, 0xa0, 0xfc, 0x9c, 0xfc, 0x9d, 0xfc, 0x98, 0xfc, 0x9a, 0xfc, + 0x93, 0xfc, 0x94, 0xfc, 0x91, 0xfc, 0x91, 0xfc, 0x8b, 0xfc, 0x8c, 0xfc, + 0x89, 0xfc, 0x8a, 0xfc, 0x88, 0xfc, 0x87, 0xfc, 0x84, 0xfc, 0x85, 0xfc, + 0x87, 0xfc, 0x87, 0xfc, 0x85, 0xfc, 0x87, 0xfc, 0x8b, 0xfc, 0x88, 0xfc, + 0x8d, 0xfc, 0x8e, 0xfc, 0x91, 0xfc, 0x91, 0xfc, 0x99, 0xfc, 0x9b, 0xfc, + 0xa1, 0xfc, 0xa2, 0xfc, 0xaf, 0xfc, 0xaf, 0xfc, 0xb9, 0xfc, 0xbc, 0xfc, + 0xcb, 0xfc, 0xca, 0xfc, 0xda, 0xfc, 0xdc, 0xfc, 0xee, 0xfc, 0xee, 0xfc, + 0x03, 0xfd, 0x03, 0xfd, 0x1a, 0xfd, 0x1c, 0xfd, 0x31, 0xfd, 0x32, 0xfd, + 0x4f, 0xfd, 0x4e, 0xfd, 0x69, 0xfd, 0x6a, 0xfd, 0x89, 0xfd, 0x88, 0xfd, + 0xa8, 0xfd, 0xa9, 0xfd, 0xc8, 0xfd, 0xc8, 0xfd, 0xea, 0xfd, 0xeb, 0xfd, + 0x0a, 0xfe, 0x0b, 0xfe, 0x2f, 0xfe, 0x31, 0xfe, 0x53, 0xfe, 0x54, 0xfe, + 0x77, 0xfe, 0x77, 0xfe, 0x9c, 0xfe, 0x9c, 0xfe, 0xbd, 0xfe, 0xbe, 0xfe, + 0xe2, 0xfe, 0xe3, 0xfe, 0x05, 0xff, 0x06, 0xff, 0x26, 0xff, 0x27, 0xff, + 0x49, 0xff, 0x4a, 0xff, 0x69, 0xff, 0x69, 0xff, 0x89, 0xff, 0x8a, 0xff, + 0xa7, 0xff, 0xa8, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xe1, 0xff, 0xe3, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x17, 0x00, 0x1a, 0x00, 0x33, 0x00, 0x34, 0x00, + 0x4b, 0x00, 0x4d, 0x00, 0x63, 0x00, 0x64, 0x00, 0x78, 0x00, 0x7d, 0x00, + 0x90, 0x00, 0x90, 0x00, 0xa5, 0x00, 0xa7, 0x00, 0xba, 0x00, 0xbc, 0x00, + 0xcf, 0x00, 0xd1, 0x00, 0xe6, 0x00, 0xe6, 0x00, 0xf7, 0x00, 0xf9, 0x00, + 0x0f, 0x01, 0x11, 0x01, 0x22, 0x01, 0x25, 0x01, 0x39, 0x01, 0x3a, 0x01, + 0x50, 0x01, 0x51, 0x01, 0x63, 0x01, 0x65, 0x01, 0x7f, 0x01, 0x7f, 0x01, + 0x93, 0x01, 0x95, 0x01, 0xac, 0x01, 0xad, 0x01, 0xc7, 0x01, 0xc8, 0x01, + 0xdf, 0x01, 0xe0, 0x01, 0xfa, 0x01, 0xfe, 0x01, 0x16, 0x02, 0x15, 0x02, + 0x2f, 0x02, 0x31, 0x02, 0x4b, 0x02, 0x4b, 0x02, 0x68, 0x02, 0x67, 0x02, + 0x82, 0x02, 0x85, 0x02, 0xa0, 0x02, 0x9e, 0x02, 0xb7, 0x02, 0xba, 0x02, + 0xd4, 0x02, 0xd5, 0x02, 0xee, 0x02, 0xef, 0x02, 0x06, 0x03, 0x09, 0x03, + 0x22, 0x03, 0x21, 0x03, 0x37, 0x03, 0x39, 0x03, 0x4e, 0x03, 0x4d, 0x03, + 0x62, 0x03, 0x63, 0x03, 0x74, 0x03, 0x75, 0x03, 0x86, 0x03, 0x86, 0x03, + 0x95, 0x03, 0x96, 0x03, 0xa0, 0x03, 0xa3, 0x03, 0xad, 0x03, 0xad, 0x03, + 0xb2, 0x03, 0xb5, 0x03, 0xbc, 0x03, 0xbc, 0x03, 0xbf, 0x03, 0xbf, 0x03, + 0xc1, 0x03, 0xc3, 0x03, 0xbf, 0x03, 0xc0, 0x03, 0xbe, 0x03, 0xbf, 0x03, + 0xbb, 0x03, 0xbd, 0x03, 0xb3, 0x03, 0xb3, 0x03, 0xad, 0x03, 0xae, 0x03, + 0xa1, 0x03, 0xa2, 0x03, 0x97, 0x03, 0x97, 0x03, 0x89, 0x03, 0x8a, 0x03, + 0x7c, 0x03, 0x7c, 0x03, 0x6c, 0x03, 0x6e, 0x03, 0x5c, 0x03, 0x5d, 0x03, + 0x4d, 0x03, 0x4e, 0x03, 0x3a, 0x03, 0x3c, 0x03, 0x29, 0x03, 0x29, 0x03, + 0x19, 0x03, 0x1a, 0x03, 0x06, 0x03, 0x06, 0x03, 0xf7, 0x02, 0xf8, 0x02, + 0xe3, 0x02, 0xe4, 0x02, 0xd3, 0x02, 0xd2, 0x02, 0xc3, 0x02, 0xc4, 0x02, + 0xb1, 0x02, 0xb1, 0x02, 0xa1, 0x02, 0xa5, 0x02, 0x93, 0x02, 0x92, 0x02, + 0x7f, 0x02, 0x82, 0x02, 0x76, 0x02, 0x75, 0x02, 0x62, 0x02, 0x64, 0x02, + 0x57, 0x02, 0x56, 0x02, 0x47, 0x02, 0x49, 0x02, 0x38, 0x02, 0x37, 0x02, + 0x2a, 0x02, 0x2b, 0x02, 0x1a, 0x02, 0x1a, 0x02, 0x0a, 0x02, 0x0a, 0x02, + 0xf9, 0x01, 0xfa, 0x01, 0xe8, 0x01, 0xe8, 0x01, 0xd7, 0x01, 0xd7, 0x01, + 0xc2, 0x01, 0xc4, 0x01, 0xb1, 0x01, 0xb0, 0x01, 0x98, 0x01, 0x99, 0x01, + 0x82, 0x01, 0x84, 0x01, 0x6c, 0x01, 0x6c, 0x01, 0x51, 0x01, 0x53, 0x01, + 0x38, 0x01, 0x37, 0x01, 0x1b, 0x01, 0x1c, 0x01, 0xfd, 0x00, 0xfd, 0x00, + 0xdf, 0x00, 0xdf, 0x00, 0xbc, 0x00, 0xbe, 0x00, 0x9e, 0x00, 0x9d, 0x00, + 0x77, 0x00, 0x7a, 0x00, 0x58, 0x00, 0x56, 0x00, 0x2f, 0x00, 0x31, 0x00, + 0x0c, 0x00, 0x0a, 0x00, 0xe3, 0xff, 0xe5, 0xff, 0xbf, 0xff, 0xbf, 0xff, + 0x99, 0xff, 0x99, 0xff, 0x70, 0xff, 0x70, 0xff, 0x4a, 0xff, 0x4b, 0xff, + 0x25, 0xff, 0x24, 0xff, 0xfe, 0xfe, 0x01, 0xff, 0xd9, 0xfe, 0xd8, 0xfe, + 0xb6, 0xfe, 0xb8, 0xfe, 0x94, 0xfe, 0x94, 0xfe, 0x72, 0xfe, 0x73, 0xfe, + 0x53, 0xfe, 0x55, 0xfe, 0x32, 0xfe, 0x32, 0xfe, 0x17, 0xfe, 0x19, 0xfe, + 0xfd, 0xfd, 0xfc, 0xfd, 0xe1, 0xfd, 0xe3, 0xfd, 0xca, 0xfd, 0xcd, 0xfd, + 0xb4, 0xfd, 0xb4, 0xfd, 0xa2, 0xfd, 0xa4, 0xfd, 0x8d, 0xfd, 0x8d, 0xfd, + 0x7e, 0xfd, 0x7e, 0xfd, 0x6d, 0xfd, 0x6e, 0xfd, 0x5d, 0xfd, 0x60, 0xfd, + 0x54, 0xfd, 0x53, 0xfd, 0x43, 0xfd, 0x48, 0xfd, 0x3d, 0xfd, 0x3d, 0xfd, + 0x33, 0xfd, 0x33, 0xfd, 0x28, 0xfd, 0x2b, 0xfd, 0x24, 0xfd, 0x21, 0xfd, + 0x16, 0xfd, 0x1a, 0xfd, 0x14, 0xfd, 0x15, 0xfd, 0x0b, 0xfd, 0x0c, 0xfd, + 0x04, 0xfd, 0x06, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xf6, 0xfc, 0xf6, 0xfc, + 0xf1, 0xfc, 0xf3, 0xfc, 0xe7, 0xfc, 0xe7, 0xfc, 0xe3, 0xfc, 0xe3, 0xfc, + 0xd8, 0xfc, 0xd8, 0xfc, 0xcf, 0xfc, 0xd1, 0xfc, 0xca, 0xfc, 0xcb, 0xfc, + 0xbd, 0xfc, 0xbf, 0xfc, 0xb9, 0xfc, 0xb9, 0xfc, 0xad, 0xfc, 0xb0, 0xfc, + 0xa9, 0xfc, 0xa8, 0xfc, 0x9d, 0xfc, 0xa0, 0xfc, 0x97, 0xfc, 0x97, 0xfc, + 0x92, 0xfc, 0x92, 0xfc, 0x89, 0xfc, 0x8b, 0xfc, 0x87, 0xfc, 0x87, 0xfc, + 0x81, 0xfc, 0x83, 0xfc, 0x80, 0xfc, 0x80, 0xfc, 0x7d, 0xfc, 0x7e, 0xfc, + 0x7e, 0xfc, 0x80, 0xfc, 0x81, 0xfc, 0x81, 0xfc, 0x83, 0xfc, 0x85, 0xfc, + 0x89, 0xfc, 0x8b, 0xfc, 0x91, 0xfc, 0x91, 0xfc, 0x99, 0xfc, 0x9c, 0xfc, + 0xa6, 0xfc, 0xa7, 0xfc, 0xb2, 0xfc, 0xb5, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, + 0xd4, 0xfc, 0xd6, 0xfc, 0xe9, 0xfc, 0xeb, 0xfc, 0xff, 0xfc, 0x00, 0xfd, + 0x17, 0xfd, 0x18, 0xfd, 0x2f, 0xfd, 0x33, 0xfd, 0x4a, 0xfd, 0x4a, 0xfd, + 0x65, 0xfd, 0x6a, 0xfd, 0x85, 0xfd, 0x83, 0xfd, 0xa1, 0xfd, 0xa6, 0xfd, + 0xc3, 0xfd, 0xc0, 0xfd, 0xe1, 0xfd, 0xe6, 0xfd, 0x04, 0xfe, 0x03, 0xfe, + 0x25, 0xfe, 0x26, 0xfe, 0x45, 0xfe, 0x48, 0xfe, 0x67, 0xfe, 0x65, 0xfe, + 0x86, 0xfe, 0x8a, 0xfe, 0xa7, 0xfe, 0xa6, 0xfe, 0xc8, 0xfe, 0xca, 0xfe, + 0xe6, 0xfe, 0xe7, 0xfe, 0x04, 0xff, 0x05, 0xff, 0x23, 0xff, 0x25, 0xff, + 0x40, 0xff, 0x41, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x76, 0xff, 0x79, 0xff, + 0x92, 0xff, 0x91, 0xff, 0xaa, 0xff, 0xad, 0xff, 0xc2, 0xff, 0xc2, 0xff, + 0xda, 0xff, 0xdc, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0x09, 0x00, 0x07, 0x00, + 0x1b, 0x00, 0x1e, 0x00, 0x33, 0x00, 0x32, 0x00, 0x49, 0x00, 0x4b, 0x00, + 0x5c, 0x00, 0x5d, 0x00, 0x73, 0x00, 0x71, 0x00, 0x85, 0x00, 0x87, 0x00, + 0x9d, 0x00, 0x9b, 0x00, 0xb1, 0x00, 0xb3, 0x00, 0xc8, 0x00, 0xc8, 0x00, + 0xdf, 0x00, 0xe0, 0x00, 0xf6, 0x00, 0xf7, 0x00, 0x0e, 0x01, 0x10, 0x01, + 0x27, 0x01, 0x28, 0x01, 0x40, 0x01, 0x42, 0x01, 0x5e, 0x01, 0x5d, 0x01, + 0x73, 0x01, 0x77, 0x01, 0x94, 0x01, 0x94, 0x01, 0xad, 0x01, 0xaf, 0x01, + 0xcd, 0x01, 0xce, 0x01, 0xeb, 0x01, 0xea, 0x01, 0x05, 0x02, 0x07, 0x02, + 0x28, 0x02, 0x26, 0x02, 0x41, 0x02, 0x42, 0x02, 0x60, 0x02, 0x62, 0x02, + 0x7e, 0x02, 0x7d, 0x02, 0x97, 0x02, 0x9a, 0x02, 0xb9, 0x02, 0xb8, 0x02, + 0xcd, 0x02, 0xce, 0x02, 0xec, 0x02, 0xed, 0x02, 0x01, 0x03, 0x01, 0x03, + 0x1a, 0x03, 0x1b, 0x03, 0x2f, 0x03, 0x30, 0x03, 0x42, 0x03, 0x42, 0x03, + 0x56, 0x03, 0x58, 0x03, 0x61, 0x03, 0x63, 0x03, 0x74, 0x03, 0x74, 0x03, + 0x7c, 0x03, 0x7d, 0x03, 0x88, 0x03, 0x8a, 0x03, 0x8d, 0x03, 0x8e, 0x03, + 0x95, 0x03, 0x94, 0x03, 0x95, 0x03, 0x97, 0x03, 0x99, 0x03, 0x98, 0x03, + 0x96, 0x03, 0x98, 0x03, 0x95, 0x03, 0x95, 0x03, 0x8f, 0x03, 0x8f, 0x03, + 0x8a, 0x03, 0x8b, 0x03, 0x82, 0x03, 0x81, 0x03, 0x78, 0x03, 0x7c, 0x03, + 0x6f, 0x03, 0x6e, 0x03, 0x64, 0x03, 0x65, 0x03, 0x58, 0x03, 0x5a, 0x03, + 0x4c, 0x03, 0x4c, 0x03, 0x3e, 0x03, 0x41, 0x03, 0x32, 0x03, 0x31, 0x03, + 0x24, 0x03, 0x25, 0x03, 0x15, 0x03, 0x18, 0x03, 0x08, 0x03, 0x08, 0x03, + 0xfb, 0x02, 0xfd, 0x02, 0xef, 0x02, 0xef, 0x02, 0xe2, 0x02, 0xe1, 0x02, + 0xd3, 0x02, 0xd5, 0x02, 0xca, 0x02, 0xc8, 0x02, 0xbb, 0x02, 0xbe, 0x02, + 0xb0, 0x02, 0xb0, 0x02, 0xa4, 0x02, 0xa5, 0x02, 0x9a, 0x02, 0x99, 0x02, + 0x8d, 0x02, 0x8e, 0x02, 0x84, 0x02, 0x84, 0x02, 0x76, 0x02, 0x76, 0x02, + 0x6a, 0x02, 0x6b, 0x02, 0x5e, 0x02, 0x5d, 0x02, 0x52, 0x02, 0x53, 0x02, + 0x44, 0x02, 0x44, 0x02, 0x35, 0x02, 0x35, 0x02, 0x27, 0x02, 0x27, 0x02, + 0x15, 0x02, 0x16, 0x02, 0x06, 0x02, 0x05, 0x02, 0xf0, 0x01, 0xf2, 0x01, + 0xde, 0x01, 0xdd, 0x01, 0xc7, 0x01, 0xc7, 0x01, 0xaf, 0x01, 0xaf, 0x01, + 0x96, 0x01, 0x96, 0x01, 0x79, 0x01, 0x79, 0x01, 0x5f, 0x01, 0x61, 0x01, + 0x41, 0x01, 0x3f, 0x01, 0x22, 0x01, 0x24, 0x01, 0x03, 0x01, 0x00, 0x01, + 0xde, 0x00, 0xe3, 0x00, 0xbd, 0x00, 0xbb, 0x00, 0x99, 0x00, 0x99, 0x00, + 0x74, 0x00, 0x75, 0x00, 0x50, 0x00, 0x4f, 0x00, 0x28, 0x00, 0x2a, 0x00, + 0x03, 0x00, 0x04, 0x00, 0xdf, 0xff, 0xdd, 0xff, 0xb4, 0xff, 0xb7, 0xff, + 0x93, 0xff, 0x92, 0xff, 0x6c, 0xff, 0x6c, 0xff, 0x47, 0xff, 0x48, 0xff, + 0x24, 0xff, 0x24, 0xff, 0x00, 0xff, 0x00, 0xff, 0xe1, 0xfe, 0xe2, 0xfe, + 0xbf, 0xfe, 0xbf, 0xfe, 0xa1, 0xfe, 0xa1, 0xfe, 0x84, 0xfe, 0x86, 0xfe, + 0x67, 0xfe, 0x68, 0xfe, 0x4d, 0xfe, 0x4e, 0xfe, 0x35, 0xfe, 0x37, 0xfe, + 0x1d, 0xfe, 0x1d, 0xfe, 0x08, 0xfe, 0x0a, 0xfe, 0xf5, 0xfd, 0xf4, 0xfd, + 0xe0, 0xfd, 0xe2, 0xfd, 0xd3, 0xfd, 0xd1, 0xfd, 0xc0, 0xfd, 0xc1, 0xfd, + 0xb2, 0xfd, 0xb4, 0xfd, 0xa5, 0xfd, 0xa4, 0xfd, 0x97, 0xfd, 0x99, 0xfd, + 0x8d, 0xfd, 0x8d, 0xfd, 0x81, 0xfd, 0x83, 0xfd, 0x77, 0xfd, 0x75, 0xfd, + 0x6a, 0xfd, 0x6d, 0xfd, 0x62, 0xfd, 0x62, 0xfd, 0x56, 0xfd, 0x58, 0xfd, + 0x4d, 0xfd, 0x4f, 0xfd, 0x42, 0xfd, 0x43, 0xfd, 0x36, 0xfd, 0x3a, 0xfd, + 0x30, 0xfd, 0x2e, 0xfd, 0x22, 0xfd, 0x24, 0xfd, 0x19, 0xfd, 0x1a, 0xfd, + 0x0c, 0xfd, 0x0d, 0xfd, 0x01, 0xfd, 0x03, 0xfd, 0xf5, 0xfc, 0xf7, 0xfc, + 0xe8, 0xfc, 0xe9, 0xfc, 0xda, 0xfc, 0xde, 0xfc, 0xd2, 0xfc, 0xd3, 0xfc, + 0xc4, 0xfc, 0xc7, 0xfc, 0xb9, 0xfc, 0xba, 0xfc, 0xae, 0xfc, 0xaf, 0xfc, + 0xa5, 0xfc, 0xa7, 0xfc, 0x9a, 0xfc, 0x9c, 0xfc, 0x94, 0xfc, 0x95, 0xfc, + 0x89, 0xfc, 0x8b, 0xfc, 0x85, 0xfc, 0x87, 0xfc, 0x7f, 0xfc, 0x7f, 0xfc, + 0x7e, 0xfc, 0x7f, 0xfc, 0x7a, 0xfc, 0x7c, 0xfc, 0x7a, 0xfc, 0x7d, 0xfc, + 0x7d, 0xfc, 0x7d, 0xfc, 0x80, 0xfc, 0x83, 0xfc, 0x87, 0xfc, 0x88, 0xfc, + 0x8f, 0xfc, 0x92, 0xfc, 0x9a, 0xfc, 0x98, 0xfc, 0xa7, 0xfc, 0xaa, 0xfc, + 0xb4, 0xfc, 0xb4, 0xfc, 0xc5, 0xfc, 0xc7, 0xfc, 0xd7, 0xfc, 0xd7, 0xfc, + 0xed, 0xfc, 0xee, 0xfc, 0x01, 0xfd, 0x03, 0xfd, 0x1b, 0xfd, 0x1b, 0xfd, + 0x33, 0xfd, 0x33, 0xfd, 0x4d, 0xfd, 0x4f, 0xfd, 0x6a, 0xfd, 0x69, 0xfd, + 0x83, 0xfd, 0x86, 0xfd, 0xa5, 0xfd, 0xa3, 0xfd, 0xbe, 0xfd, 0xbf, 0xfd, + 0xde, 0xfd, 0xe0, 0xfd, 0xfe, 0xfd, 0xfc, 0xfd, 0x19, 0xfe, 0x1c, 0xfe, + 0x3b, 0xfe, 0x39, 0xfe, 0x54, 0xfe, 0x55, 0xfe, 0x75, 0xfe, 0x76, 0xfe, + 0x8f, 0xfe, 0x8f, 0xfe, 0xac, 0xfe, 0xad, 0xfe, 0xc8, 0xfe, 0xc8, 0xfe, + 0xe2, 0xfe, 0xe2, 0xfe, 0xfc, 0xfe, 0xfd, 0xfe, 0x14, 0xff, 0x14, 0xff, + 0x2e, 0xff, 0x2f, 0xff, 0x44, 0xff, 0x44, 0xff, 0x5a, 0xff, 0x5c, 0xff, + 0x71, 0xff, 0x72, 0xff, 0x87, 0xff, 0x87, 0xff, 0x9b, 0xff, 0x9c, 0xff, + 0xb2, 0xff, 0xb2, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xee, 0xff, 0xee, 0xff, 0x02, 0x00, 0x03, 0x00, 0x19, 0x00, 0x18, 0x00, + 0x29, 0x00, 0x2d, 0x00, 0x46, 0x00, 0x44, 0x00, 0x59, 0x00, 0x5a, 0x00, + 0x72, 0x00, 0x71, 0x00, 0x88, 0x00, 0x8a, 0x00, 0xa0, 0x00, 0xa2, 0x00, + 0xbd, 0x00, 0xbc, 0x00, 0xd4, 0x00, 0xd7, 0x00, 0xf2, 0x00, 0xf2, 0x00, + 0x0f, 0x01, 0x0f, 0x01, 0x29, 0x01, 0x2a, 0x01, 0x4a, 0x01, 0x4b, 0x01, + 0x65, 0x01, 0x66, 0x01, 0x85, 0x01, 0x88, 0x01, 0xa4, 0x01, 0xa4, 0x01, + 0xc3, 0x01, 0xc6, 0x01, 0xe3, 0x01, 0xe3, 0x01, 0x02, 0x02, 0x03, 0x02, + 0x23, 0x02, 0x25, 0x02, 0x3f, 0x02, 0x40, 0x02, 0x5f, 0x02, 0x61, 0x02, + 0x79, 0x02, 0x7a, 0x02, 0x97, 0x02, 0x98, 0x02, 0xb1, 0x02, 0xb5, 0x02, + 0xcc, 0x02, 0xcb, 0x02, 0xe1, 0x02, 0xe3, 0x02, 0xf7, 0x02, 0xf9, 0x02, + 0x0c, 0x03, 0x0e, 0x03, 0x1e, 0x03, 0x1e, 0x03, 0x30, 0x03, 0x31, 0x03, + 0x3e, 0x03, 0x3e, 0x03, 0x4b, 0x03, 0x4c, 0x03, 0x54, 0x03, 0x56, 0x03, + 0x5c, 0x03, 0x5c, 0x03, 0x62, 0x03, 0x64, 0x03, 0x67, 0x03, 0x65, 0x03, + 0x68, 0x03, 0x6b, 0x03, 0x6d, 0x03, 0x6b, 0x03, 0x66, 0x03, 0x68, 0x03, + 0x67, 0x03, 0x67, 0x03, 0x62, 0x03, 0x62, 0x03, 0x5d, 0x03, 0x5f, 0x03, + 0x5a, 0x03, 0x58, 0x03, 0x4f, 0x03, 0x4f, 0x03, 0x49, 0x03, 0x49, 0x03, + 0x3f, 0x03, 0x3e, 0x03, 0x35, 0x03, 0x37, 0x03, 0x2d, 0x03, 0x2d, 0x03, + 0x23, 0x03, 0x23, 0x03, 0x1a, 0x03, 0x1b, 0x03, 0x10, 0x03, 0x10, 0x03, + 0x08, 0x03, 0x07, 0x03, 0xfd, 0x02, 0x00, 0x03, 0xf5, 0x02, 0xf3, 0x02, + 0xee, 0x02, 0xed, 0x02, 0xe3, 0x02, 0xe3, 0x02, 0xda, 0x02, 0xdc, 0x02, + 0xd2, 0x02, 0xd3, 0x02, 0xcb, 0x02, 0xcc, 0x02, 0xc2, 0x02, 0xc2, 0x02, + 0xba, 0x02, 0xbb, 0x02, 0xb1, 0x02, 0xb0, 0x02, 0xaa, 0x02, 0xac, 0x02, + 0xa1, 0x02, 0xa0, 0x02, 0x97, 0x02, 0x99, 0x02, 0x8e, 0x02, 0x8e, 0x02, + 0x83, 0x02, 0x85, 0x02, 0x79, 0x02, 0x7b, 0x02, 0x6b, 0x02, 0x6b, 0x02, + 0x5f, 0x02, 0x5f, 0x02, 0x4e, 0x02, 0x50, 0x02, 0x3d, 0x02, 0x3e, 0x02, + 0x2c, 0x02, 0x2e, 0x02, 0x18, 0x02, 0x17, 0x02, 0x02, 0x02, 0x03, 0x02, + 0xec, 0x01, 0xeb, 0x01, 0xd3, 0x01, 0xd4, 0x01, 0xb9, 0x01, 0xb9, 0x01, + 0x9d, 0x01, 0x9f, 0x01, 0x80, 0x01, 0x7f, 0x01, 0x5f, 0x01, 0x63, 0x01, + 0x40, 0x01, 0x41, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0xfd, 0x00, 0xff, 0x00, + 0xd9, 0x00, 0xd9, 0x00, 0xb5, 0x00, 0xb7, 0x00, 0x8f, 0x00, 0x91, 0x00, + 0x6b, 0x00, 0x6e, 0x00, 0x46, 0x00, 0x46, 0x00, 0x21, 0x00, 0x24, 0x00, + 0xfd, 0xff, 0xfe, 0xff, 0xd7, 0xff, 0xd9, 0xff, 0xb4, 0xff, 0xb6, 0xff, + 0x91, 0xff, 0x91, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x4f, 0xff, 0x4f, 0xff, + 0x2e, 0xff, 0x2e, 0xff, 0x10, 0xff, 0x10, 0xff, 0xf3, 0xfe, 0xf2, 0xfe, + 0xd5, 0xfe, 0xd6, 0xfe, 0xbc, 0xfe, 0xbb, 0xfe, 0xa3, 0xfe, 0xa3, 0xfe, + 0x8a, 0xfe, 0x8b, 0xfe, 0x76, 0xfe, 0x75, 0xfe, 0x5d, 0xfe, 0x5f, 0xfe, + 0x4e, 0xfe, 0x4f, 0xfe, 0x3c, 0xfe, 0x3b, 0xfe, 0x27, 0xfe, 0x29, 0xfe, + 0x1a, 0xfe, 0x1a, 0xfe, 0x07, 0xfe, 0x08, 0xfe, 0xfa, 0xfd, 0xfb, 0xfd, + 0xee, 0xfd, 0xed, 0xfd, 0xdd, 0xfd, 0xde, 0xfd, 0xd4, 0xfd, 0xd5, 0xfd, + 0xc5, 0xfd, 0xc4, 0xfd, 0xb8, 0xfd, 0xba, 0xfd, 0xab, 0xfd, 0xaa, 0xfd, + 0x9d, 0xfd, 0xa0, 0xfd, 0x93, 0xfd, 0x92, 0xfd, 0x84, 0xfd, 0x85, 0xfd, + 0x76, 0xfd, 0x78, 0xfd, 0x69, 0xfd, 0x68, 0xfd, 0x5d, 0xfd, 0x5e, 0xfd, + 0x4c, 0xfd, 0x4c, 0xfd, 0x3e, 0xfd, 0x3d, 0xfd, 0x2d, 0xfd, 0x30, 0xfd, + 0x1f, 0xfd, 0x20, 0xfd, 0x10, 0xfd, 0x11, 0xfd, 0x00, 0xfd, 0x00, 0xfd, + 0xf2, 0xfc, 0xf3, 0xfc, 0xe3, 0xfc, 0xe4, 0xfc, 0xd6, 0xfc, 0xd5, 0xfc, + 0xc7, 0xfc, 0xc9, 0xfc, 0xba, 0xfc, 0xb9, 0xfc, 0xae, 0xfc, 0xaf, 0xfc, + 0xa2, 0xfc, 0xa3, 0xfc, 0x9a, 0xfc, 0x9a, 0xfc, 0x8f, 0xfc, 0x91, 0xfc, + 0x8b, 0xfc, 0x8a, 0xfc, 0x85, 0xfc, 0x88, 0xfc, 0x82, 0xfc, 0x83, 0xfc, + 0x81, 0xfc, 0x81, 0xfc, 0x80, 0xfc, 0x83, 0xfc, 0x84, 0xfc, 0x85, 0xfc, + 0x8a, 0xfc, 0x8a, 0xfc, 0x8e, 0xfc, 0x90, 0xfc, 0x9a, 0xfc, 0x9a, 0xfc, + 0xa1, 0xfc, 0xa4, 0xfc, 0xb2, 0xfc, 0xb3, 0xfc, 0xc0, 0xfc, 0xc1, 0xfc, + 0xce, 0xfc, 0xd1, 0xfc, 0xe3, 0xfc, 0xe3, 0xfc, 0xf6, 0xfc, 0xf7, 0xfc, + 0x0e, 0xfd, 0x0f, 0xfd, 0x23, 0xfd, 0x24, 0xfd, 0x3b, 0xfd, 0x3d, 0xfd, + 0x55, 0xfd, 0x55, 0xfd, 0x6d, 0xfd, 0x6e, 0xfd, 0x89, 0xfd, 0x8a, 0xfd, + 0xa2, 0xfd, 0xa3, 0xfd, 0xc0, 0xfd, 0xbf, 0xfd, 0xd8, 0xfd, 0xda, 0xfd, + 0xf2, 0xfd, 0xf4, 0xfd, 0x11, 0xfe, 0x11, 0xfe, 0x27, 0xfe, 0x28, 0xfe, + 0x46, 0xfe, 0x47, 0xfe, 0x5c, 0xfe, 0x5e, 0xfe, 0x76, 0xfe, 0x77, 0xfe, + 0x8f, 0xfe, 0x90, 0xfe, 0xa3, 0xfe, 0xa5, 0xfe, 0xbd, 0xfe, 0xbe, 0xfe, + 0xd0, 0xfe, 0xd2, 0xfe, 0xe6, 0xfe, 0xe7, 0xfe, 0xfd, 0xfe, 0xfd, 0xfe, + 0x10, 0xff, 0x10, 0xff, 0x24, 0xff, 0x27, 0xff, 0x38, 0xff, 0x39, 0xff, + 0x4c, 0xff, 0x4d, 0xff, 0x5e, 0xff, 0x5f, 0xff, 0x71, 0xff, 0x74, 0xff, + 0x85, 0xff, 0x85, 0xff, 0x99, 0xff, 0x9b, 0xff, 0xac, 0xff, 0xad, 0xff, + 0xc1, 0xff, 0xc3, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xee, 0xff, 0xef, 0xff, + 0x05, 0x00, 0x07, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x36, 0x00, 0x37, 0x00, + 0x4f, 0x00, 0x50, 0x00, 0x6a, 0x00, 0x6d, 0x00, 0x88, 0x00, 0x87, 0x00, + 0xa3, 0x00, 0xa5, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xe0, 0x00, 0xe0, 0x00, + 0xfd, 0x00, 0x01, 0x01, 0x20, 0x01, 0x1f, 0x01, 0x3e, 0x01, 0x41, 0x01, + 0x5d, 0x01, 0x5f, 0x01, 0x82, 0x01, 0x82, 0x01, 0x9d, 0x01, 0xa0, 0x01, + 0xc2, 0x01, 0xc2, 0x01, 0xde, 0x01, 0xe2, 0x01, 0x00, 0x02, 0x00, 0x02, + 0x1c, 0x02, 0x20, 0x02, 0x3a, 0x02, 0x3b, 0x02, 0x5a, 0x02, 0x5a, 0x02, + 0x70, 0x02, 0x74, 0x02, 0x8f, 0x02, 0x8e, 0x02, 0xa3, 0x02, 0xa6, 0x02, + 0xbb, 0x02, 0xbd, 0x02, 0xd0, 0x02, 0xd2, 0x02, 0xe1, 0x02, 0xe2, 0x02, + 0xf3, 0x02, 0xf5, 0x02, 0x01, 0x03, 0x02, 0x03, 0x0e, 0x03, 0x10, 0x03, + 0x1a, 0x03, 0x1b, 0x03, 0x21, 0x03, 0x23, 0x03, 0x2b, 0x03, 0x2c, 0x03, + 0x2e, 0x03, 0x30, 0x03, 0x34, 0x03, 0x36, 0x03, 0x35, 0x03, 0x36, 0x03, + 0x38, 0x03, 0x38, 0x03, 0x36, 0x03, 0x37, 0x03, 0x34, 0x03, 0x36, 0x03, + 0x32, 0x03, 0x31, 0x03, 0x2e, 0x03, 0x30, 0x03, 0x2b, 0x03, 0x2a, 0x03, + 0x25, 0x03, 0x24, 0x03, 0x20, 0x03, 0x21, 0x03, 0x1b, 0x03, 0x1a, 0x03, + 0x14, 0x03, 0x15, 0x03, 0x10, 0x03, 0x0e, 0x03, 0x08, 0x03, 0x09, 0x03, + 0x04, 0x03, 0x03, 0x03, 0xfe, 0x02, 0xfe, 0x02, 0xf9, 0x02, 0xfa, 0x02, + 0xf3, 0x02, 0xf4, 0x02, 0xef, 0x02, 0xf0, 0x02, 0xeb, 0x02, 0xe9, 0x02, + 0xe6, 0x02, 0xe7, 0x02, 0xe1, 0x02, 0xe1, 0x02, 0xdd, 0x02, 0xdb, 0x02, + 0xd7, 0x02, 0xd8, 0x02, 0xd3, 0x02, 0xd4, 0x02, 0xce, 0x02, 0xce, 0x02, + 0xc7, 0x02, 0xca, 0x02, 0xc4, 0x02, 0xc3, 0x02, 0xba, 0x02, 0xbd, 0x02, + 0xb5, 0x02, 0xb4, 0x02, 0xaa, 0x02, 0xad, 0x02, 0xa1, 0x02, 0xa0, 0x02, + 0x98, 0x02, 0x99, 0x02, 0x88, 0x02, 0x89, 0x02, 0x7b, 0x02, 0x7d, 0x02, + 0x6b, 0x02, 0x6d, 0x02, 0x5d, 0x02, 0x5c, 0x02, 0x47, 0x02, 0x4a, 0x02, + 0x34, 0x02, 0x34, 0x02, 0x1c, 0x02, 0x1f, 0x02, 0x05, 0x02, 0x05, 0x02, + 0xeb, 0x01, 0xed, 0x01, 0xd0, 0x01, 0xd3, 0x01, 0xb3, 0x01, 0xb2, 0x01, + 0x95, 0x01, 0x99, 0x01, 0x75, 0x01, 0x75, 0x01, 0x55, 0x01, 0x58, 0x01, + 0x34, 0x01, 0x34, 0x01, 0x10, 0x01, 0x12, 0x01, 0xef, 0x00, 0xf1, 0x00, + 0xca, 0x00, 0xca, 0x00, 0xa8, 0x00, 0xaa, 0x00, 0x84, 0x00, 0x84, 0x00, + 0x5f, 0x00, 0x62, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x1a, 0x00, 0x1b, 0x00, + 0xf7, 0xff, 0xf9, 0xff, 0xd6, 0xff, 0xd7, 0xff, 0xb8, 0xff, 0xb7, 0xff, + 0x94, 0xff, 0x97, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x5a, 0xff, 0x5c, 0xff, + 0x41, 0xff, 0x40, 0xff, 0x26, 0xff, 0x26, 0xff, 0x0b, 0xff, 0x0b, 0xff, + 0xf5, 0xfe, 0xf6, 0xfe, 0xdd, 0xfe, 0xdf, 0xfe, 0xcb, 0xfe, 0xca, 0xfe, + 0xb3, 0xfe, 0xb4, 0xfe, 0xa3, 0xfe, 0xa2, 0xfe, 0x8f, 0xfe, 0x8e, 0xfe, + 0x7c, 0xfe, 0x7f, 0xfe, 0x6e, 0xfe, 0x6d, 0xfe, 0x5b, 0xfe, 0x5b, 0xfe, + 0x4e, 0xfe, 0x4f, 0xfe, 0x3e, 0xfe, 0x3c, 0xfe, 0x30, 0xfe, 0x31, 0xfe, + 0x21, 0xfe, 0x21, 0xfe, 0x12, 0xfe, 0x12, 0xfe, 0x03, 0xfe, 0x04, 0xfe, + 0xf2, 0xfd, 0xf3, 0xfd, 0xe5, 0xfd, 0xe5, 0xfd, 0xd3, 0xfd, 0xd5, 0xfd, + 0xc5, 0xfd, 0xc4, 0xfd, 0xb2, 0xfd, 0xb5, 0xfd, 0xa3, 0xfd, 0xa2, 0xfd, + 0x92, 0xfd, 0x93, 0xfd, 0x80, 0xfd, 0x7f, 0xfd, 0x6d, 0xfd, 0x6d, 0xfd, + 0x5d, 0xfd, 0x5e, 0xfd, 0x4b, 0xfd, 0x4a, 0xfd, 0x38, 0xfd, 0x3b, 0xfd, + 0x27, 0xfd, 0x23, 0xfd, 0x12, 0xfd, 0x18, 0xfd, 0x03, 0xfd, 0x02, 0xfd, + 0xf2, 0xfc, 0xf3, 0xfc, 0xe2, 0xfc, 0xe3, 0xfc, 0xd4, 0xfc, 0xd4, 0xfc, + 0xc5, 0xfc, 0xc5, 0xfc, 0xb9, 0xfc, 0xbb, 0xfc, 0xab, 0xfc, 0xac, 0xfc, + 0xa4, 0xfc, 0xa4, 0xfc, 0x9a, 0xfc, 0x9b, 0xfc, 0x93, 0xfc, 0x95, 0xfc, + 0x91, 0xfc, 0x92, 0xfc, 0x8e, 0xfc, 0x8d, 0xfc, 0x8c, 0xfc, 0x8d, 0xfc, + 0x90, 0xfc, 0x91, 0xfc, 0x90, 0xfc, 0x90, 0xfc, 0x99, 0xfc, 0x9b, 0xfc, + 0x9f, 0xfc, 0x9f, 0xfc, 0xa9, 0xfc, 0xaa, 0xfc, 0xb4, 0xfc, 0xb5, 0xfc, + 0xc2, 0xfc, 0xc2, 0xfc, 0xd2, 0xfc, 0xd3, 0xfc, 0xe2, 0xfc, 0xe1, 0xfc, + 0xf3, 0xfc, 0xf6, 0xfc, 0x07, 0xfd, 0x07, 0xfd, 0x1c, 0xfd, 0x1c, 0xfd, + 0x2f, 0xfd, 0x33, 0xfd, 0x47, 0xfd, 0x45, 0xfd, 0x5e, 0xfd, 0x5f, 0xfd, + 0x74, 0xfd, 0x75, 0xfd, 0x8f, 0xfd, 0x8e, 0xfd, 0xa4, 0xfd, 0xa5, 0xfd, + 0xbc, 0xfd, 0xbc, 0xfd, 0xd3, 0xfd, 0xd4, 0xfd, 0xeb, 0xfd, 0xeb, 0xfd, + 0x01, 0xfe, 0x01, 0xfe, 0x19, 0xfe, 0x1b, 0xfe, 0x2e, 0xfe, 0x2c, 0xfe, + 0x44, 0xfe, 0x44, 0xfe, 0x5a, 0xfe, 0x59, 0xfe, 0x6c, 0xfe, 0x6c, 0xfe, + 0x7f, 0xfe, 0x81, 0xfe, 0x92, 0xfe, 0x92, 0xfe, 0xa6, 0xfe, 0xa6, 0xfe, + 0xb8, 0xfe, 0xb7, 0xfe, 0xc9, 0xfe, 0xcb, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, + 0xec, 0xfe, 0xee, 0xfe, 0x00, 0xff, 0x00, 0xff, 0x13, 0xff, 0x13, 0xff, + 0x23, 0xff, 0x26, 0xff, 0x39, 0xff, 0x38, 0xff, 0x4a, 0xff, 0x4c, 0xff, + 0x5d, 0xff, 0x5d, 0xff, 0x74, 0xff, 0x74, 0xff, 0x88, 0xff, 0x8a, 0xff, + 0xa1, 0xff, 0xa1, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xcf, 0xff, 0xd0, 0xff, + 0xec, 0xff, 0xec, 0xff, 0x03, 0x00, 0x04, 0x00, 0x21, 0x00, 0x23, 0x00, + 0x3e, 0x00, 0x3f, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x7a, 0x00, 0x7b, 0x00, + 0x9a, 0x00, 0x9b, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xda, 0x00, 0xdb, 0x00, + 0xfc, 0x00, 0xfd, 0x00, 0x1f, 0x01, 0x1d, 0x01, 0x3c, 0x01, 0x3e, 0x01, + 0x61, 0x01, 0x60, 0x01, 0x7f, 0x01, 0x80, 0x01, 0xa1, 0x01, 0xa3, 0x01, + 0xbf, 0x01, 0xbf, 0x01, 0xdf, 0x01, 0xe0, 0x01, 0xfc, 0x01, 0xfd, 0x01, + 0x19, 0x02, 0x18, 0x02, 0x33, 0x02, 0x36, 0x02, 0x4d, 0x02, 0x4c, 0x02, + 0x65, 0x02, 0x66, 0x02, 0x7c, 0x02, 0x7d, 0x02, 0x90, 0x02, 0x8f, 0x02, + 0xa4, 0x02, 0xa4, 0x02, 0xb4, 0x02, 0xb4, 0x02, 0xc6, 0x02, 0xc4, 0x02, + 0xd1, 0x02, 0xd2, 0x02, 0xdc, 0x02, 0xdc, 0x02, 0xe8, 0x02, 0xe6, 0x02, + 0xed, 0x02, 0xf0, 0x02, 0xf6, 0x02, 0xf6, 0x02, 0xf9, 0x02, 0xfc, 0x02, + 0xff, 0x02, 0xfe, 0x02, 0xff, 0x02, 0x01, 0x03, 0x03, 0x03, 0x04, 0x03, + 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 0xfa, 0x02, 0xfd, 0x02, + 0xfd, 0x02, 0xfd, 0x02, 0xf5, 0x02, 0xf8, 0x02, 0xf9, 0x02, 0xf7, 0x02, + 0xf5, 0x02, 0xf6, 0x02, 0xf3, 0x02, 0xf4, 0x02, 0xf3, 0x02, 0xf1, 0x02, + 0xf0, 0x02, 0xf2, 0x02, 0xf1, 0x02, 0xf0, 0x02, 0xed, 0x02, 0xef, 0x02, + 0xee, 0x02, 0xee, 0x02, 0xed, 0x02, 0xee, 0x02, 0xea, 0x02, 0xeb, 0x02, + 0xea, 0x02, 0xeb, 0x02, 0xe7, 0x02, 0xe8, 0x02, 0xea, 0x02, 0xe9, 0x02, + 0xe3, 0x02, 0xe6, 0x02, 0xe2, 0x02, 0xe2, 0x02, 0xdd, 0x02, 0xdf, 0x02, + 0xd8, 0x02, 0xd9, 0x02, 0xd6, 0x02, 0xd6, 0x02, 0xcc, 0x02, 0xcd, 0x02, + 0xc7, 0x02, 0xc7, 0x02, 0xbb, 0x02, 0xbc, 0x02, 0xb0, 0x02, 0xb1, 0x02, + 0xa3, 0x02, 0xa5, 0x02, 0x95, 0x02, 0x92, 0x02, 0x86, 0x02, 0x87, 0x02, + 0x70, 0x02, 0x71, 0x02, 0x60, 0x02, 0x5f, 0x02, 0x48, 0x02, 0x4b, 0x02, + 0x33, 0x02, 0x31, 0x02, 0x18, 0x02, 0x1a, 0x02, 0xfd, 0x01, 0xfd, 0x01, + 0xe4, 0x01, 0xe5, 0x01, 0xc4, 0x01, 0xc4, 0x01, 0xa7, 0x01, 0xa7, 0x01, + 0x86, 0x01, 0x89, 0x01, 0x68, 0x01, 0x66, 0x01, 0x46, 0x01, 0x48, 0x01, + 0x24, 0x01, 0x24, 0x01, 0x04, 0x01, 0x04, 0x01, 0xe2, 0x00, 0xe2, 0x00, + 0xbf, 0x00, 0xc0, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x7c, 0x00, 0x7c, 0x00, + 0x5c, 0x00, 0x5b, 0x00, 0x39, 0x00, 0x3b, 0x00, 0x1c, 0x00, 0x1e, 0x00, + 0xfd, 0xff, 0xfb, 0xff, 0xe1, 0xff, 0xe3, 0xff, 0xc4, 0xff, 0xc3, 0xff, + 0xa9, 0xff, 0xa9, 0xff, 0x8f, 0xff, 0x91, 0xff, 0x78, 0xff, 0x75, 0xff, + 0x5f, 0xff, 0x61, 0xff, 0x48, 0xff, 0x48, 0xff, 0x32, 0xff, 0x33, 0xff, + 0x1e, 0xff, 0x1f, 0xff, 0x0a, 0xff, 0x0a, 0xff, 0xf7, 0xfe, 0xf9, 0xfe, + 0xe5, 0xfe, 0xe5, 0xfe, 0xd5, 0xfe, 0xd5, 0xfe, 0xc4, 0xfe, 0xc5, 0xfe, + 0xb2, 0xfe, 0xb2, 0xfe, 0xa3, 0xfe, 0xa6, 0xfe, 0x93, 0xfe, 0x93, 0xfe, + 0x81, 0xfe, 0x83, 0xfe, 0x71, 0xfe, 0x72, 0xfe, 0x60, 0xfe, 0x62, 0xfe, + 0x4f, 0xfe, 0x51, 0xfe, 0x3d, 0xfe, 0x40, 0xfe, 0x2e, 0xfe, 0x2d, 0xfe, + 0x18, 0xfe, 0x1a, 0xfe, 0x06, 0xfe, 0x08, 0xfe, 0xf5, 0xfd, 0xf6, 0xfd, + 0xdf, 0xfd, 0xe0, 0xfd, 0xcf, 0xfd, 0xcf, 0xfd, 0xb6, 0xfd, 0xb9, 0xfd, + 0xa3, 0xfd, 0xa3, 0xfd, 0x8e, 0xfd, 0x8f, 0xfd, 0x77, 0xfd, 0x78, 0xfd, + 0x65, 0xfd, 0x67, 0xfd, 0x4e, 0xfd, 0x50, 0xfd, 0x3d, 0xfd, 0x3e, 0xfd, + 0x28, 0xfd, 0x2a, 0xfd, 0x15, 0xfd, 0x16, 0xfd, 0x05, 0xfd, 0x04, 0xfd, + 0xf1, 0xfc, 0xf4, 0xfc, 0xe4, 0xfc, 0xe4, 0xfc, 0xd5, 0xfc, 0xd6, 0xfc, + 0xc7, 0xfc, 0xc8, 0xfc, 0xbd, 0xfc, 0xbe, 0xfc, 0xb3, 0xfc, 0xb3, 0xfc, + 0xab, 0xfc, 0xac, 0xfc, 0xa7, 0xfc, 0xa9, 0xfc, 0xa2, 0xfc, 0xa1, 0xfc, + 0xa2, 0xfc, 0xa2, 0xfc, 0xa1, 0xfc, 0xa2, 0xfc, 0xa5, 0xfc, 0xa5, 0xfc, + 0xa9, 0xfc, 0xa9, 0xfc, 0xad, 0xfc, 0xae, 0xfc, 0xb7, 0xfc, 0xb7, 0xfc, + 0xc0, 0xfc, 0xc2, 0xfc, 0xce, 0xfc, 0xcc, 0xfc, 0xd8, 0xfc, 0xda, 0xfc, + 0xe9, 0xfc, 0xe9, 0xfc, 0xf8, 0xfc, 0xf8, 0xfc, 0x09, 0xfd, 0x0a, 0xfd, + 0x1b, 0xfd, 0x1c, 0xfd, 0x2f, 0xfd, 0x2e, 0xfd, 0x41, 0xfd, 0x42, 0xfd, + 0x55, 0xfd, 0x53, 0xfd, 0x67, 0xfd, 0x69, 0xfd, 0x7d, 0xfd, 0x7d, 0xfd, + 0x90, 0xfd, 0x91, 0xfd, 0xa3, 0xfd, 0xa6, 0xfd, 0xb9, 0xfd, 0xb9, 0xfd, + 0xcb, 0xfd, 0xcc, 0xfd, 0xe0, 0xfd, 0xe1, 0xfd, 0xf1, 0xfd, 0xf2, 0xfd, + 0x04, 0xfe, 0x05, 0xfe, 0x17, 0xfe, 0x16, 0xfe, 0x28, 0xfe, 0x2a, 0xfe, + 0x38, 0xfe, 0x38, 0xfe, 0x4a, 0xfe, 0x4a, 0xfe, 0x59, 0xfe, 0x59, 0xfe, + 0x69, 0xfe, 0x6c, 0xfe, 0x7a, 0xfe, 0x79, 0xfe, 0x89, 0xfe, 0x8a, 0xfe, + 0x99, 0xfe, 0x99, 0xfe, 0xa8, 0xfe, 0xa9, 0xfe, 0xb9, 0xfe, 0xb9, 0xfe, + 0xca, 0xfe, 0xcc, 0xfe, 0xde, 0xfe, 0xdb, 0xfe, 0xed, 0xfe, 0xef, 0xfe, + 0x04, 0xff, 0x02, 0xff, 0x13, 0xff, 0x14, 0xff, 0x2a, 0xff, 0x2c, 0xff, + 0x3f, 0xff, 0x3e, 0xff, 0x55, 0xff, 0x57, 0xff, 0x6e, 0xff, 0x6e, 0xff, + 0x88, 0xff, 0x88, 0xff, 0xa1, 0xff, 0xa3, 0xff, 0xbd, 0xff, 0xbf, 0xff, + 0xda, 0xff, 0xdb, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0x17, 0x00, 0x19, 0x00, + 0x35, 0x00, 0x35, 0x00, 0x56, 0x00, 0x59, 0x00, 0x77, 0x00, 0x76, 0x00, + 0x96, 0x00, 0x98, 0x00, 0xbb, 0x00, 0xba, 0x00, 0xd7, 0x00, 0xdc, 0x00, + 0xff, 0x00, 0xfd, 0x00, 0x1d, 0x01, 0x1d, 0x01, 0x3e, 0x01, 0x3e, 0x01, + 0x61, 0x01, 0x61, 0x01, 0x7e, 0x01, 0x7f, 0x01, 0x9e, 0x01, 0x9d, 0x01, + 0xba, 0x01, 0xba, 0x01, 0xd7, 0x01, 0xd9, 0x01, 0xf1, 0x01, 0xf0, 0x01, + 0x0b, 0x02, 0x0e, 0x02, 0x23, 0x02, 0x22, 0x02, 0x39, 0x02, 0x38, 0x02, + 0x4f, 0x02, 0x4f, 0x02, 0x60, 0x02, 0x60, 0x02, 0x70, 0x02, 0x72, 0x02, + 0x81, 0x02, 0x81, 0x02, 0x8e, 0x02, 0x8e, 0x02, 0x9a, 0x02, 0x9b, 0x02, + 0xa3, 0x02, 0xa5, 0x02, 0xad, 0x02, 0xac, 0x02, 0xb4, 0x02, 0xb7, 0x02, + 0xbc, 0x02, 0xbc, 0x02, 0xbf, 0x02, 0xc1, 0x02, 0xc4, 0x02, 0xc6, 0x02, + 0xc8, 0x02, 0xc8, 0x02, 0xcb, 0x02, 0xce, 0x02, 0xcd, 0x02, 0xce, 0x02, + 0xcf, 0x02, 0xd1, 0x02, 0xd2, 0x02, 0xd2, 0x02, 0xd2, 0x02, 0xd3, 0x02, + 0xd5, 0x02, 0xd6, 0x02, 0xd4, 0x02, 0xd6, 0x02, 0xd8, 0x02, 0xd7, 0x02, + 0xd7, 0x02, 0xda, 0x02, 0xda, 0x02, 0xdb, 0x02, 0xdd, 0x02, 0xdc, 0x02, + 0xde, 0x02, 0xe0, 0x02, 0xe2, 0x02, 0xe3, 0x02, 0xe4, 0x02, 0xe4, 0x02, + 0xe6, 0x02, 0xe8, 0x02, 0xe8, 0x02, 0xe7, 0x02, 0xec, 0x02, 0xed, 0x02, + 0xee, 0x02, 0xef, 0x02, 0xf1, 0x02, 0xf0, 0x02, 0xf1, 0x02, 0xf1, 0x02, + 0xf3, 0x02, 0xf4, 0x02, 0xf4, 0x02, 0xf4, 0x02, 0xf2, 0x02, 0xf3, 0x02, + 0xf1, 0x02, 0xf1, 0x02, 0xee, 0x02, 0xed, 0x02, 0xeb, 0x02, 0xeb, 0x02, + 0xe4, 0x02, 0xe7, 0x02, 0xde, 0x02, 0xde, 0x02, 0xd6, 0x02, 0xd7, 0x02, + 0xcc, 0x02, 0xcb, 0x02, 0xc0, 0x02, 0xc2, 0x02, 0xb3, 0x02, 0xb2, 0x02, + 0xa3, 0x02, 0xa5, 0x02, 0x92, 0x02, 0x92, 0x02, 0x7e, 0x02, 0x7f, 0x02, + 0x6a, 0x02, 0x69, 0x02, 0x55, 0x02, 0x55, 0x02, 0x3b, 0x02, 0x3a, 0x02, + 0x22, 0x02, 0x23, 0x02, 0x07, 0x02, 0x07, 0x02, 0xec, 0x01, 0xec, 0x01, + 0xd0, 0x01, 0xce, 0x01, 0xb0, 0x01, 0xb1, 0x01, 0x92, 0x01, 0x92, 0x01, + 0x74, 0x01, 0x74, 0x01, 0x51, 0x01, 0x54, 0x01, 0x35, 0x01, 0x34, 0x01, + 0x13, 0x01, 0x14, 0x01, 0xf6, 0x00, 0xf5, 0x00, 0xd4, 0x00, 0xd4, 0x00, + 0xb6, 0x00, 0xb6, 0x00, 0x98, 0x00, 0x97, 0x00, 0x78, 0x00, 0x7a, 0x00, + 0x5d, 0x00, 0x5d, 0x00, 0x3f, 0x00, 0x41, 0x00, 0x27, 0x00, 0x26, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0xf2, 0xff, 0xf3, 0xff, 0xda, 0xff, 0xda, 0xff, + 0xc2, 0xff, 0xc3, 0xff, 0xae, 0xff, 0xae, 0xff, 0x96, 0xff, 0x96, 0xff, + 0x84, 0xff, 0x84, 0xff, 0x6f, 0xff, 0x6f, 0xff, 0x5d, 0xff, 0x5e, 0xff, + 0x49, 0xff, 0x49, 0xff, 0x39, 0xff, 0x3b, 0xff, 0x28, 0xff, 0x26, 0xff, + 0x16, 0xff, 0x16, 0xff, 0x05, 0xff, 0x05, 0xff, 0xf1, 0xfe, 0xf4, 0xfe, + 0xe4, 0xfe, 0xe2, 0xfe, 0xcf, 0xfe, 0xd3, 0xfe, 0xc0, 0xfe, 0xbd, 0xfe, + 0xab, 0xfe, 0xae, 0xfe, 0x99, 0xfe, 0x97, 0xfe, 0x85, 0xfe, 0x87, 0xfe, + 0x71, 0xfe, 0x70, 0xfe, 0x5d, 0xfe, 0x5e, 0xfe, 0x48, 0xfe, 0x47, 0xfe, + 0x33, 0xfe, 0x33, 0xfe, 0x1b, 0xfe, 0x1c, 0xfe, 0x05, 0xfe, 0x05, 0xfe, + 0xed, 0xfd, 0xed, 0xfd, 0xd8, 0xfd, 0xda, 0xfd, 0xc1, 0xfd, 0xc0, 0xfd, + 0xa9, 0xfd, 0xab, 0xfd, 0x92, 0xfd, 0x92, 0xfd, 0x7c, 0xfd, 0x7c, 0xfd, + 0x67, 0xfd, 0x68, 0xfd, 0x51, 0xfd, 0x51, 0xfd, 0x3e, 0xfd, 0x3e, 0xfd, + 0x28, 0xfd, 0x29, 0xfd, 0x1a, 0xfd, 0x19, 0xfd, 0x05, 0xfd, 0x07, 0xfd, + 0xf7, 0xfc, 0xf7, 0xfc, 0xea, 0xfc, 0xea, 0xfc, 0xdc, 0xfc, 0xdb, 0xfc, + 0xd3, 0xfc, 0xd4, 0xfc, 0xca, 0xfc, 0xc9, 0xfc, 0xc4, 0xfc, 0xc5, 0xfc, + 0xc0, 0xfc, 0xbf, 0xfc, 0xbc, 0xfc, 0xbd, 0xfc, 0xbc, 0xfc, 0xbb, 0xfc, + 0xbc, 0xfc, 0xbd, 0xfc, 0xc1, 0xfc, 0xc0, 0xfc, 0xc4, 0xfc, 0xc4, 0xfc, + 0xcc, 0xfc, 0xcb, 0xfc, 0xd4, 0xfc, 0xd5, 0xfc, 0xe0, 0xfc, 0xdd, 0xfc, + 0xe8, 0xfc, 0xec, 0xfc, 0xf6, 0xfc, 0xf4, 0xfc, 0x04, 0xfd, 0x04, 0xfd, + 0x10, 0xfd, 0x12, 0xfd, 0x22, 0xfd, 0x20, 0xfd, 0x2d, 0xfd, 0x31, 0xfd, + 0x3f, 0xfd, 0x3e, 0xfd, 0x52, 0xfd, 0x52, 0xfd, 0x60, 0xfd, 0x60, 0xfd, + 0x71, 0xfd, 0x72, 0xfd, 0x84, 0xfd, 0x82, 0xfd, 0x91, 0xfd, 0x95, 0xfd, + 0xa6, 0xfd, 0xa2, 0xfd, 0xb3, 0xfd, 0xb5, 0xfd, 0xc3, 0xfd, 0xc0, 0xfd, + 0xd3, 0xfd, 0xd4, 0xfd, 0xe0, 0xfd, 0xe0, 0xfd, 0xf0, 0xfd, 0xee, 0xfd, + 0xfe, 0xfd, 0xfe, 0xfd, 0x0b, 0xfe, 0x0b, 0xfe, 0x1a, 0xfe, 0x1a, 0xfe, + 0x27, 0xfe, 0x27, 0xfe, 0x33, 0xfe, 0x34, 0xfe, 0x43, 0xfe, 0x40, 0xfe, + 0x4f, 0xfe, 0x50, 0xfe, 0x5c, 0xfe, 0x5d, 0xfe, 0x6c, 0xfe, 0x6c, 0xfe, + 0x7a, 0xfe, 0x7c, 0xfe, 0x8c, 0xfe, 0x8b, 0xfe, 0x9b, 0xfe, 0x9c, 0xfe, + 0xad, 0xfe, 0xae, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, + 0xe6, 0xfe, 0xe6, 0xfe, 0xfe, 0xfe, 0xff, 0xfe, 0x14, 0xff, 0x13, 0xff, + 0x2c, 0xff, 0x2d, 0xff, 0x48, 0xff, 0x47, 0xff, 0x5f, 0xff, 0x5f, 0xff, + 0x7c, 0xff, 0x7d, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0xb8, 0xff, 0xb7, 0xff, + 0xd8, 0xff, 0xd8, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0x18, 0x00, 0x16, 0x00, + 0x39, 0x00, 0x38, 0x00, 0x58, 0x00, 0x57, 0x00, 0x7c, 0x00, 0x7c, 0x00, + 0x9a, 0x00, 0x9a, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xdc, 0x00, 0xdc, 0x00, + 0xfd, 0x00, 0xfe, 0x00, 0x1f, 0x01, 0x1f, 0x01, 0x3c, 0x01, 0x3d, 0x01, + 0x5b, 0x01, 0x5c, 0x01, 0x78, 0x01, 0x77, 0x01, 0x91, 0x01, 0x94, 0x01, + 0xaf, 0x01, 0xb0, 0x01, 0xc4, 0x01, 0xc5, 0x01, 0xdf, 0x01, 0xe0, 0x01, + 0xf2, 0x01, 0xf2, 0x01, 0x07, 0x02, 0x08, 0x02, 0x19, 0x02, 0x19, 0x02, + 0x29, 0x02, 0x2b, 0x02, 0x3a, 0x02, 0x39, 0x02, 0x49, 0x02, 0x4b, 0x02, + 0x53, 0x02, 0x54, 0x02, 0x61, 0x02, 0x61, 0x02, 0x69, 0x02, 0x6b, 0x02, + 0x74, 0x02, 0x73, 0x02, 0x78, 0x02, 0x7b, 0x02, 0x82, 0x02, 0x81, 0x02, + 0x87, 0x02, 0x88, 0x02, 0x8d, 0x02, 0x8d, 0x02, 0x91, 0x02, 0x94, 0x02, + 0x9a, 0x02, 0x99, 0x02, 0x9d, 0x02, 0x9e, 0x02, 0xa3, 0x02, 0xa3, 0x02, + 0xa5, 0x02, 0xa5, 0x02, 0xac, 0x02, 0xac, 0x02, 0xaf, 0x02, 0xb0, 0x02, + 0xb4, 0x02, 0xb3, 0x02, 0xba, 0x02, 0xbb, 0x02, 0xbe, 0x02, 0xbe, 0x02, + 0xc4, 0x02, 0xc3, 0x02, 0xc9, 0x02, 0xcb, 0x02, 0xd0, 0x02, 0xce, 0x02, + 0xd6, 0x02, 0xd7, 0x02, 0xdd, 0x02, 0xdb, 0x02, 0xe1, 0x02, 0xe1, 0x02, + 0xea, 0x02, 0xe8, 0x02, 0xea, 0x02, 0xea, 0x02, 0xf2, 0x02, 0xf1, 0x02, + 0xf7, 0x02, 0xf5, 0x02, 0xf8, 0x02, 0xf9, 0x02, 0xff, 0x02, 0xfc, 0x02, + 0xfc, 0x02, 0xfc, 0x02, 0xff, 0x02, 0xff, 0x02, 0xfc, 0x02, 0xfb, 0x02, + 0xfa, 0x02, 0xfb, 0x02, 0xf7, 0x02, 0xf4, 0x02, 0xf0, 0x02, 0xf3, 0x02, + 0xea, 0x02, 0xe9, 0x02, 0xdf, 0x02, 0xe0, 0x02, 0xd5, 0x02, 0xd5, 0x02, + 0xc9, 0x02, 0xc9, 0x02, 0xbb, 0x02, 0xbb, 0x02, 0xab, 0x02, 0xab, 0x02, + 0x98, 0x02, 0x99, 0x02, 0x87, 0x02, 0x85, 0x02, 0x6f, 0x02, 0x71, 0x02, + 0x5b, 0x02, 0x59, 0x02, 0x41, 0x02, 0x43, 0x02, 0x27, 0x02, 0x27, 0x02, + 0x0d, 0x02, 0x0f, 0x02, 0xf2, 0x01, 0xf1, 0x01, 0xd5, 0x01, 0xd6, 0x01, + 0xba, 0x01, 0xbb, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x7f, 0x01, 0x80, 0x01, + 0x61, 0x01, 0x62, 0x01, 0x42, 0x01, 0x44, 0x01, 0x27, 0x01, 0x27, 0x01, + 0x08, 0x01, 0x09, 0x01, 0xed, 0x00, 0xee, 0x00, 0xd0, 0x00, 0xd1, 0x00, + 0xb4, 0x00, 0xb6, 0x00, 0x9d, 0x00, 0x9c, 0x00, 0x80, 0x00, 0x83, 0x00, + 0x6c, 0x00, 0x6a, 0x00, 0x50, 0x00, 0x53, 0x00, 0x3a, 0x00, 0x3b, 0x00, + 0x26, 0x00, 0x27, 0x00, 0x0f, 0x00, 0x10, 0x00, 0xfa, 0xff, 0xfc, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xd3, 0xff, 0xd6, 0xff, 0xc3, 0xff, 0xc3, 0xff, + 0xae, 0xff, 0xb0, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0x8d, 0xff, 0x8d, 0xff, + 0x79, 0xff, 0x7b, 0xff, 0x6a, 0xff, 0x69, 0xff, 0x56, 0xff, 0x59, 0xff, + 0x46, 0xff, 0x46, 0xff, 0x33, 0xff, 0x35, 0xff, 0x1d, 0xff, 0x20, 0xff, + 0x0d, 0xff, 0x0d, 0xff, 0xf7, 0xfe, 0xf8, 0xfe, 0xe3, 0xfe, 0xe4, 0xfe, + 0xcd, 0xfe, 0xcd, 0xfe, 0xb5, 0xfe, 0xb5, 0xfe, 0xa1, 0xfe, 0xa2, 0xfe, + 0x88, 0xfe, 0x88, 0xfe, 0x71, 0xfe, 0x73, 0xfe, 0x59, 0xfe, 0x5a, 0xfe, + 0x42, 0xfe, 0x42, 0xfe, 0x26, 0xfe, 0x29, 0xfe, 0x10, 0xfe, 0x0f, 0xfe, + 0xf6, 0xfd, 0xf8, 0xfd, 0xdd, 0xfd, 0xdc, 0xfd, 0xc6, 0xfd, 0xc8, 0xfd, + 0xac, 0xfd, 0xab, 0xfd, 0x95, 0xfd, 0x97, 0xfd, 0x81, 0xfd, 0x7f, 0xfd, + 0x66, 0xfd, 0x69, 0xfd, 0x56, 0xfd, 0x53, 0xfd, 0x41, 0xfd, 0x42, 0xfd, + 0x2f, 0xfd, 0x30, 0xfd, 0x20, 0xfd, 0x1f, 0xfd, 0x0f, 0xfd, 0x11, 0xfd, + 0x03, 0xfd, 0x03, 0xfd, 0xf8, 0xfc, 0xfa, 0xfc, 0xef, 0xfc, 0xee, 0xfc, + 0xe9, 0xfc, 0xea, 0xfc, 0xe3, 0xfc, 0xe2, 0xfc, 0xdf, 0xfc, 0xe1, 0xfc, + 0xdf, 0xfc, 0xdf, 0xfc, 0xdc, 0xfc, 0xdd, 0xfc, 0xe1, 0xfc, 0xe3, 0xfc, + 0xe3, 0xfc, 0xe2, 0xfc, 0xe8, 0xfc, 0xea, 0xfc, 0xee, 0xfc, 0xef, 0xfc, + 0xf7, 0xfc, 0xf8, 0xfc, 0x00, 0xfd, 0x01, 0xfd, 0x0b, 0xfd, 0x0a, 0xfd, + 0x13, 0xfd, 0x16, 0xfd, 0x21, 0xfd, 0x21, 0xfd, 0x2d, 0xfd, 0x2e, 0xfd, + 0x3a, 0xfd, 0x3a, 0xfd, 0x47, 0xfd, 0x45, 0xfd, 0x52, 0xfd, 0x53, 0xfd, + 0x60, 0xfd, 0x60, 0xfd, 0x6e, 0xfd, 0x6e, 0xfd, 0x7b, 0xfd, 0x7a, 0xfd, + 0x88, 0xfd, 0x88, 0xfd, 0x93, 0xfd, 0x94, 0xfd, 0xa0, 0xfd, 0x9e, 0xfd, + 0xac, 0xfd, 0xad, 0xfd, 0xb6, 0xfd, 0xb7, 0xfd, 0xc3, 0xfd, 0xc3, 0xfd, + 0xce, 0xfd, 0xce, 0xfd, 0xd7, 0xfd, 0xd8, 0xfd, 0xe5, 0xfd, 0xe2, 0xfd, + 0xed, 0xfd, 0xef, 0xfd, 0xf9, 0xfd, 0xf7, 0xfd, 0x04, 0xfe, 0x05, 0xfe, + 0x0f, 0xfe, 0x0f, 0xfe, 0x1b, 0xfe, 0x1b, 0xfe, 0x27, 0xfe, 0x27, 0xfe, + 0x32, 0xfe, 0x34, 0xfe, 0x43, 0xfe, 0x41, 0xfe, 0x50, 0xfe, 0x50, 0xfe, + 0x5f, 0xfe, 0x60, 0xfe, 0x71, 0xfe, 0x70, 0xfe, 0x82, 0xfe, 0x83, 0xfe, + 0x95, 0xfe, 0x96, 0xfe, 0xab, 0xfe, 0xa9, 0xfe, 0xc0, 0xfe, 0xc0, 0xfe, + 0xd7, 0xfe, 0xd8, 0xfe, 0xef, 0xfe, 0xef, 0xfe, 0x08, 0xff, 0x09, 0xff, + 0x24, 0xff, 0x24, 0xff, 0x3f, 0xff, 0x41, 0xff, 0x60, 0xff, 0x5f, 0xff, + 0x7b, 0xff, 0x7b, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0xb8, 0xff, 0xbb, 0xff, + 0xdd, 0xff, 0xd9, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0x1c, 0x00, 0x1d, 0x00, + 0x3e, 0x00, 0x3d, 0x00, 0x5d, 0x00, 0x5f, 0x00, 0x82, 0x00, 0x80, 0x00, + 0x9e, 0x00, 0x9f, 0x00, 0xbf, 0x00, 0xbe, 0x00, 0xde, 0x00, 0xdd, 0x00, + 0xfb, 0x00, 0xfc, 0x00, 0x19, 0x01, 0x1a, 0x01, 0x34, 0x01, 0x32, 0x01, + 0x4d, 0x01, 0x4f, 0x01, 0x69, 0x01, 0x67, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x95, 0x01, 0x95, 0x01, 0xad, 0x01, 0xac, 0x01, 0xbe, 0x01, 0xbf, 0x01, + 0xcf, 0x01, 0xd1, 0x01, 0xe3, 0x01, 0xe1, 0x01, 0xf0, 0x01, 0xf2, 0x01, + 0xff, 0x01, 0xfe, 0x01, 0x0b, 0x02, 0x0b, 0x02, 0x16, 0x02, 0x18, 0x02, + 0x23, 0x02, 0x22, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x36, 0x02, 0x36, 0x02, + 0x3d, 0x02, 0x3d, 0x02, 0x46, 0x02, 0x48, 0x02, 0x4d, 0x02, 0x4f, 0x02, + 0x57, 0x02, 0x57, 0x02, 0x5d, 0x02, 0x5e, 0x02, 0x63, 0x02, 0x64, 0x02, + 0x6c, 0x02, 0x6e, 0x02, 0x72, 0x02, 0x73, 0x02, 0x7b, 0x02, 0x7d, 0x02, + 0x84, 0x02, 0x85, 0x02, 0x8b, 0x02, 0x8c, 0x02, 0x93, 0x02, 0x95, 0x02, + 0x9d, 0x02, 0x9e, 0x02, 0xa8, 0x02, 0xa9, 0x02, 0xaf, 0x02, 0xae, 0x02, + 0xb8, 0x02, 0xbb, 0x02, 0xc1, 0x02, 0xc1, 0x02, 0xcb, 0x02, 0xcb, 0x02, + 0xd4, 0x02, 0xd5, 0x02, 0xdc, 0x02, 0xdb, 0x02, 0xe5, 0x02, 0xe6, 0x02, + 0xeb, 0x02, 0xeb, 0x02, 0xf0, 0x02, 0xf2, 0x02, 0xf8, 0x02, 0xf8, 0x02, + 0xfb, 0x02, 0xfc, 0x02, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 0x02, 0x03, + 0x01, 0x03, 0x02, 0x03, 0x01, 0x03, 0x01, 0x03, 0xfe, 0x02, 0xff, 0x02, + 0xfa, 0x02, 0xfb, 0x02, 0xf3, 0x02, 0xf4, 0x02, 0xea, 0x02, 0xeb, 0x02, + 0xe4, 0x02, 0xe5, 0x02, 0xd3, 0x02, 0xd4, 0x02, 0xc8, 0x02, 0xc9, 0x02, + 0xba, 0x02, 0xb9, 0x02, 0xa9, 0x02, 0xa9, 0x02, 0x97, 0x02, 0x97, 0x02, + 0x82, 0x02, 0x81, 0x02, 0x6d, 0x02, 0x6f, 0x02, 0x57, 0x02, 0x56, 0x02, + 0x3f, 0x02, 0x3f, 0x02, 0x26, 0x02, 0x27, 0x02, 0x0d, 0x02, 0x0d, 0x02, + 0xf4, 0x01, 0xf3, 0x01, 0xd8, 0x01, 0xd9, 0x01, 0xbe, 0x01, 0xbe, 0x01, + 0xa1, 0x01, 0xa2, 0x01, 0x87, 0x01, 0x88, 0x01, 0x6e, 0x01, 0x6d, 0x01, + 0x51, 0x01, 0x52, 0x01, 0x39, 0x01, 0x38, 0x01, 0x1f, 0x01, 0x20, 0x01, + 0x06, 0x01, 0x05, 0x01, 0xee, 0x00, 0xef, 0x00, 0xd5, 0x00, 0xd6, 0x00, + 0xbd, 0x00, 0xbe, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0x92, 0x00, 0x8f, 0x00, + 0x7f, 0x00, 0x81, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x57, 0x00, 0x57, 0x00, + 0x47, 0x00, 0x46, 0x00, 0x31, 0x00, 0x31, 0x00, 0x21, 0x00, 0x20, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xed, 0xff, 0xec, 0xff, + 0xd8, 0xff, 0xd8, 0xff, 0xca, 0xff, 0xc9, 0xff, 0xb6, 0xff, 0xb6, 0xff, + 0xa4, 0xff, 0xa3, 0xff, 0x90, 0xff, 0x92, 0xff, 0x7d, 0xff, 0x7a, 0xff, + 0x69, 0xff, 0x6d, 0xff, 0x53, 0xff, 0x51, 0xff, 0x3e, 0xff, 0x3f, 0xff, + 0x28, 0xff, 0x28, 0xff, 0x11, 0xff, 0x0f, 0xff, 0xf9, 0xfe, 0xfb, 0xfe, + 0xdf, 0xfe, 0xdf, 0xfe, 0xc8, 0xfe, 0xc7, 0xfe, 0xae, 0xfe, 0xae, 0xfe, + 0x91, 0xfe, 0x93, 0xfe, 0x7c, 0xfe, 0x79, 0xfe, 0x5b, 0xfe, 0x5f, 0xfe, + 0x47, 0xfe, 0x44, 0xfe, 0x29, 0xfe, 0x2c, 0xfe, 0x11, 0xfe, 0x10, 0xfe, + 0xf6, 0xfd, 0xf8, 0xfd, 0xdd, 0xfd, 0xde, 0xfd, 0xc5, 0xfd, 0xc6, 0xfd, + 0xae, 0xfd, 0xae, 0xfd, 0x96, 0xfd, 0x98, 0xfd, 0x82, 0xfd, 0x83, 0xfd, + 0x6c, 0xfd, 0x6f, 0xfd, 0x5e, 0xfd, 0x5c, 0xfd, 0x4a, 0xfd, 0x4c, 0xfd, + 0x3d, 0xfd, 0x3f, 0xfd, 0x2e, 0xfd, 0x30, 0xfd, 0x24, 0xfd, 0x25, 0xfd, + 0x1a, 0xfd, 0x1c, 0xfd, 0x11, 0xfd, 0x11, 0xfd, 0x0c, 0xfd, 0x0f, 0xfd, + 0x08, 0xfd, 0x08, 0xfd, 0x05, 0xfd, 0x07, 0xfd, 0x05, 0xfd, 0x05, 0xfd, + 0x05, 0xfd, 0x04, 0xfd, 0x09, 0xfd, 0x09, 0xfd, 0x0a, 0xfd, 0x0b, 0xfd, + 0x0f, 0xfd, 0x10, 0xfd, 0x14, 0xfd, 0x16, 0xfd, 0x1b, 0xfd, 0x1b, 0xfd, + 0x23, 0xfd, 0x22, 0xfd, 0x29, 0xfd, 0x2b, 0xfd, 0x35, 0xfd, 0x33, 0xfd, + 0x3b, 0xfd, 0x3d, 0xfd, 0x46, 0xfd, 0x45, 0xfd, 0x50, 0xfd, 0x53, 0xfd, + 0x57, 0xfd, 0x56, 0xfd, 0x63, 0xfd, 0x64, 0xfd, 0x6a, 0xfd, 0x6c, 0xfd, + 0x74, 0xfd, 0x75, 0xfd, 0x7e, 0xfd, 0x7e, 0xfd, 0x85, 0xfd, 0x86, 0xfd, + 0x8e, 0xfd, 0x8e, 0xfd, 0x97, 0xfd, 0x98, 0xfd, 0xa0, 0xfd, 0xa1, 0xfd, + 0xaa, 0xfd, 0xa8, 0xfd, 0xaf, 0xfd, 0xb1, 0xfd, 0xba, 0xfd, 0xb9, 0xfd, + 0xbf, 0xfd, 0xc3, 0xfd, 0xc8, 0xfd, 0xc8, 0xfd, 0xd2, 0xfd, 0xd3, 0xfd, + 0xd9, 0xfd, 0xd9, 0xfd, 0xe4, 0xfd, 0xe5, 0xfd, 0xeb, 0xfd, 0xeb, 0xfd, + 0xf6, 0xfd, 0xf8, 0xfd, 0x03, 0xfe, 0x04, 0xfe, 0x0e, 0xfe, 0x0e, 0xfe, + 0x1d, 0xfe, 0x1e, 0xfe, 0x2d, 0xfe, 0x2d, 0xfe, 0x3d, 0xfe, 0x3d, 0xfe, + 0x50, 0xfe, 0x50, 0xfe, 0x60, 0xfe, 0x62, 0xfe, 0x77, 0xfe, 0x76, 0xfe, + 0x8c, 0xfe, 0x8c, 0xfe, 0xa2, 0xfe, 0xa2, 0xfe, 0xbb, 0xfe, 0xbb, 0xfe, + 0xd5, 0xfe, 0xd4, 0xfe, 0xed, 0xfe, 0xef, 0xfe, 0x0c, 0xff, 0x0c, 0xff, + 0x27, 0xff, 0x28, 0xff, 0x45, 0xff, 0x45, 0xff, 0x64, 0xff, 0x66, 0xff, + 0x83, 0xff, 0x81, 0xff, 0xa3, 0xff, 0xa5, 0xff, 0xc3, 0xff, 0xc4, 0xff, + 0xe3, 0xff, 0xe3, 0xff, 0x02, 0x00, 0x05, 0x00, 0x25, 0x00, 0x24, 0x00, + 0x43, 0x00, 0x45, 0x00, 0x60, 0x00, 0x62, 0x00, 0x83, 0x00, 0x83, 0x00, + 0x9b, 0x00, 0x9c, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xd4, 0x00, 0xd5, 0x00, + 0xf1, 0x00, 0xf1, 0x00, 0x0a, 0x01, 0x0a, 0x01, 0x20, 0x01, 0x21, 0x01, + 0x39, 0x01, 0x39, 0x01, 0x4d, 0x01, 0x4d, 0x01, 0x62, 0x01, 0x63, 0x01, + 0x75, 0x01, 0x76, 0x01, 0x86, 0x01, 0x85, 0x01, 0x97, 0x01, 0x99, 0x01, + 0xa6, 0x01, 0xa4, 0x01, 0xb4, 0x01, 0xb6, 0x01, 0xc2, 0x01, 0xc2, 0x01, + 0xce, 0x01, 0xcd, 0x01, 0xdb, 0x01, 0xdb, 0x01, 0xe4, 0x01, 0xe5, 0x01, + 0xf2, 0x01, 0xf0, 0x01, 0xfa, 0x01, 0xfd, 0x01, 0x06, 0x02, 0x02, 0x02, + 0x0f, 0x02, 0x11, 0x02, 0x17, 0x02, 0x18, 0x02, 0x25, 0x02, 0x25, 0x02, + 0x2c, 0x02, 0x2c, 0x02, 0x38, 0x02, 0x38, 0x02, 0x43, 0x02, 0x42, 0x02, + 0x4e, 0x02, 0x4e, 0x02, 0x59, 0x02, 0x58, 0x02, 0x63, 0x02, 0x65, 0x02, + 0x70, 0x02, 0x70, 0x02, 0x7c, 0x02, 0x7b, 0x02, 0x88, 0x02, 0x89, 0x02, + 0x94, 0x02, 0x94, 0x02, 0xa0, 0x02, 0xa1, 0x02, 0xac, 0x02, 0xac, 0x02, + 0xb9, 0x02, 0xb9, 0x02, 0xc1, 0x02, 0xc3, 0x02, 0xcd, 0x02, 0xcd, 0x02, + 0xd7, 0x02, 0xd9, 0x02, 0xe1, 0x02, 0xe1, 0x02, 0xe9, 0x02, 0xec, 0x02, + 0xef, 0x02, 0xf1, 0x02, 0xf7, 0x02, 0xf8, 0x02, 0xfb, 0x02, 0xfc, 0x02, + 0xfe, 0x02, 0xfe, 0x02, 0xff, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, + 0xfe, 0x02, 0xff, 0x02, 0xfb, 0x02, 0xfd, 0x02, 0xf6, 0x02, 0xf5, 0x02, + 0xf0, 0x02, 0xf2, 0x02, 0xe7, 0x02, 0xe7, 0x02, 0xdb, 0x02, 0xdc, 0x02, + 0xd0, 0x02, 0xd1, 0x02, 0xc2, 0x02, 0xc2, 0x02, 0xb3, 0x02, 0xb4, 0x02, + 0xa1, 0x02, 0xa2, 0x02, 0x8f, 0x02, 0x8f, 0x02, 0x7b, 0x02, 0x7e, 0x02, + 0x66, 0x02, 0x64, 0x02, 0x50, 0x02, 0x53, 0x02, 0x3b, 0x02, 0x39, 0x02, + 0x22, 0x02, 0x25, 0x02, 0x0e, 0x02, 0x0d, 0x02, 0xf2, 0x01, 0xf3, 0x01, + 0xde, 0x01, 0xde, 0x01, 0xc3, 0x01, 0xc3, 0x01, 0xad, 0x01, 0xad, 0x01, + 0x95, 0x01, 0x95, 0x01, 0x7d, 0x01, 0x7d, 0x01, 0x67, 0x01, 0x65, 0x01, + 0x50, 0x01, 0x50, 0x01, 0x39, 0x01, 0x39, 0x01, 0x23, 0x01, 0x26, 0x01, + 0x10, 0x01, 0x0d, 0x01, 0xfb, 0x00, 0xfd, 0x00, 0xe7, 0x00, 0xe6, 0x00, + 0xd3, 0x00, 0xd4, 0x00, 0xc2, 0x00, 0xc1, 0x00, 0xaf, 0x00, 0xaf, 0x00, + 0x9f, 0x00, 0x9f, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x7e, 0x00, 0x7d, 0x00, + 0x69, 0x00, 0x6a, 0x00, 0x5b, 0x00, 0x5a, 0x00, 0x49, 0x00, 0x4a, 0x00, + 0x37, 0x00, 0x36, 0x00, 0x27, 0x00, 0x29, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x03, 0x00, 0x02, 0x00, 0xee, 0xff, 0xef, 0xff, 0xd9, 0xff, 0xda, 0xff, + 0xc6, 0xff, 0xc6, 0xff, 0xaf, 0xff, 0xb0, 0xff, 0x9a, 0xff, 0x9c, 0xff, + 0x83, 0xff, 0x82, 0xff, 0x6b, 0xff, 0x6d, 0xff, 0x56, 0xff, 0x53, 0xff, + 0x39, 0xff, 0x3b, 0xff, 0x21, 0xff, 0x1f, 0xff, 0x06, 0xff, 0x06, 0xff, + 0xeb, 0xfe, 0xea, 0xfe, 0xd0, 0xfe, 0xd0, 0xfe, 0xb3, 0xfe, 0xb4, 0xfe, + 0x99, 0xfe, 0x98, 0xfe, 0x7c, 0xfe, 0x7c, 0xfe, 0x62, 0xfe, 0x61, 0xfe, + 0x46, 0xfe, 0x47, 0xfe, 0x2c, 0xfe, 0x2b, 0xfe, 0x13, 0xfe, 0x14, 0xfe, + 0xfa, 0xfd, 0xf9, 0xfd, 0xe1, 0xfd, 0xe2, 0xfd, 0xcc, 0xfd, 0xcb, 0xfd, + 0xb4, 0xfd, 0xb5, 0xfd, 0xa4, 0xfd, 0xa2, 0xfd, 0x8e, 0xfd, 0x8f, 0xfd, + 0x7e, 0xfd, 0x7d, 0xfd, 0x70, 0xfd, 0x6f, 0xfd, 0x60, 0xfd, 0x61, 0xfd, + 0x57, 0xfd, 0x57, 0xfd, 0x4b, 0xfd, 0x4b, 0xfd, 0x43, 0xfd, 0x44, 0xfd, + 0x3d, 0xfd, 0x3c, 0xfd, 0x37, 0xfd, 0x37, 0xfd, 0x34, 0xfd, 0x34, 0xfd, + 0x30, 0xfd, 0x31, 0xfd, 0x31, 0xfd, 0x30, 0xfd, 0x2f, 0xfd, 0x32, 0xfd, + 0x33, 0xfd, 0x32, 0xfd, 0x33, 0xfd, 0x35, 0xfd, 0x39, 0xfd, 0x37, 0xfd, + 0x3d, 0xfd, 0x3d, 0xfd, 0x42, 0xfd, 0x42, 0xfd, 0x46, 0xfd, 0x48, 0xfd, + 0x4c, 0xfd, 0x4b, 0xfd, 0x52, 0xfd, 0x53, 0xfd, 0x57, 0xfd, 0x56, 0xfd, + 0x5f, 0xfd, 0x60, 0xfd, 0x64, 0xfd, 0x64, 0xfd, 0x6a, 0xfd, 0x6a, 0xfd, + 0x6f, 0xfd, 0x6f, 0xfd, 0x77, 0xfd, 0x76, 0xfd, 0x7b, 0xfd, 0x7b, 0xfd, + 0x81, 0xfd, 0x82, 0xfd, 0x85, 0xfd, 0x85, 0xfd, 0x8c, 0xfd, 0x8d, 0xfd, + 0x8e, 0xfd, 0x8f, 0xfd, 0x94, 0xfd, 0x95, 0xfd, 0x98, 0xfd, 0x98, 0xfd, + 0x9c, 0xfd, 0x9d, 0xfd, 0xa6, 0xfd, 0xa5, 0xfd, 0xa6, 0xfd, 0xa7, 0xfd, + 0xaf, 0xfd, 0xb1, 0xfd, 0xb6, 0xfd, 0xb5, 0xfd, 0xbc, 0xfd, 0xbc, 0xfd, + 0xc8, 0xfd, 0xc7, 0xfd, 0xcd, 0xfd, 0xcf, 0xfd, 0xdb, 0xfd, 0xdb, 0xfd, + 0xe6, 0xfd, 0xe7, 0xfd, 0xf2, 0xfd, 0xf3, 0xfd, 0x02, 0xfe, 0x01, 0xfe, + 0x0e, 0xfe, 0x10, 0xfe, 0x23, 0xfe, 0x20, 0xfe, 0x34, 0xfe, 0x35, 0xfe, + 0x47, 0xfe, 0x47, 0xfe, 0x5c, 0xfe, 0x5d, 0xfe, 0x73, 0xfe, 0x74, 0xfe, + 0x8b, 0xfe, 0x8b, 0xfe, 0xa4, 0xfe, 0xa5, 0xfe, 0xbe, 0xfe, 0xbf, 0xfe, + 0xdc, 0xfe, 0xdb, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, 0x13, 0xff, 0x15, 0xff, + 0x33, 0xff, 0x32, 0xff, 0x4f, 0xff, 0x50, 0xff, 0x71, 0xff, 0x71, 0xff, + 0x8c, 0xff, 0x8c, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xcc, 0xff, 0xcc, 0xff, + 0xe9, 0xff, 0xeb, 0xff, 0x09, 0x00, 0x09, 0x00, 0x26, 0x00, 0x26, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x60, 0x00, 0x60, 0x00, 0x79, 0x00, 0x7a, 0x00, + 0x94, 0x00, 0x94, 0x00, 0xad, 0x00, 0xac, 0x00, 0xc5, 0x00, 0xc6, 0x00, + 0xdc, 0x00, 0xdc, 0x00, 0xef, 0x00, 0xf0, 0x00, 0x09, 0x01, 0x07, 0x01, + 0x16, 0x01, 0x18, 0x01, 0x2c, 0x01, 0x2c, 0x01, 0x3b, 0x01, 0x3b, 0x01, + 0x4b, 0x01, 0x4d, 0x01, 0x5f, 0x01, 0x5c, 0x01, 0x66, 0x01, 0x6a, 0x01, + 0x7a, 0x01, 0x79, 0x01, 0x85, 0x01, 0x84, 0x01, 0x90, 0x01, 0x94, 0x01, + 0x9f, 0x01, 0x9d, 0x01, 0xa7, 0x01, 0xac, 0x01, 0xb9, 0x01, 0xb6, 0x01, + 0xbf, 0x01, 0xc3, 0x01, 0xd1, 0x01, 0xd0, 0x01, 0xda, 0x01, 0xdb, 0x01, + 0xe7, 0x01, 0xea, 0x01, 0xf5, 0x01, 0xf5, 0x01, 0x00, 0x02, 0x00, 0x02, + 0x0e, 0x02, 0x11, 0x02, 0x1b, 0x02, 0x18, 0x02, 0x2a, 0x02, 0x2c, 0x02, + 0x37, 0x02, 0x39, 0x02, 0x45, 0x02, 0x45, 0x02, 0x56, 0x02, 0x57, 0x02, + 0x63, 0x02, 0x63, 0x02, 0x74, 0x02, 0x75, 0x02, 0x7e, 0x02, 0x81, 0x02, + 0x91, 0x02, 0x90, 0x02, 0x9d, 0x02, 0x9e, 0x02, 0xaa, 0x02, 0xaa, 0x02, + 0xb9, 0x02, 0xba, 0x02, 0xc1, 0x02, 0xc1, 0x02, 0xd1, 0x02, 0xd1, 0x02, + 0xd8, 0x02, 0xd6, 0x02, 0xe0, 0x02, 0xe2, 0x02, 0xea, 0x02, 0xe9, 0x02, + 0xed, 0x02, 0xef, 0x02, 0xf4, 0x02, 0xf4, 0x02, 0xf6, 0x02, 0xf4, 0x02, + 0xf6, 0x02, 0xf8, 0x02, 0xf8, 0x02, 0xf7, 0x02, 0xf5, 0x02, 0xf6, 0x02, + 0xf0, 0x02, 0xf0, 0x02, 0xea, 0x02, 0xea, 0x02, 0xe4, 0x02, 0xe6, 0x02, + 0xd9, 0x02, 0xd9, 0x02, 0xd0, 0x02, 0xcf, 0x02, 0xc0, 0x02, 0xc1, 0x02, + 0xb4, 0x02, 0xb5, 0x02, 0xa5, 0x02, 0xa5, 0x02, 0x93, 0x02, 0x94, 0x02, + 0x83, 0x02, 0x83, 0x02, 0x70, 0x02, 0x71, 0x02, 0x5d, 0x02, 0x5d, 0x02, + 0x48, 0x02, 0x48, 0x02, 0x34, 0x02, 0x33, 0x02, 0x1d, 0x02, 0x1f, 0x02, + 0x0a, 0x02, 0x0a, 0x02, 0xf2, 0x01, 0xf5, 0x01, 0xe1, 0x01, 0xe0, 0x01, + 0xc9, 0x01, 0xc8, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xa0, 0x01, 0xa0, 0x01, + 0x8b, 0x01, 0x8d, 0x01, 0x79, 0x01, 0x79, 0x01, 0x67, 0x01, 0x64, 0x01, + 0x52, 0x01, 0x55, 0x01, 0x41, 0x01, 0x3e, 0x01, 0x2f, 0x01, 0x31, 0x01, + 0x1e, 0x01, 0x1d, 0x01, 0x0d, 0x01, 0x0c, 0x01, 0xfd, 0x00, 0xfd, 0x00, + 0xed, 0x00, 0xec, 0x00, 0xde, 0x00, 0xde, 0x00, 0xcd, 0x00, 0xcd, 0x00, + 0xbf, 0x00, 0xbe, 0x00, 0xae, 0x00, 0xad, 0x00, 0x9e, 0x00, 0x9d, 0x00, + 0x8d, 0x00, 0x8d, 0x00, 0x7e, 0x00, 0x7b, 0x00, 0x6c, 0x00, 0x6b, 0x00, + 0x58, 0x00, 0x58, 0x00, 0x47, 0x00, 0x44, 0x00, 0x31, 0x00, 0x32, 0x00, + 0x20, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x08, 0x00, 0xf4, 0xff, 0xf3, 0xff, + 0xda, 0xff, 0xda, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xac, 0xff, 0xab, 0xff, + 0x8f, 0xff, 0x8f, 0xff, 0x78, 0xff, 0x79, 0xff, 0x5e, 0xff, 0x5a, 0xff, + 0x40, 0xff, 0x42, 0xff, 0x25, 0xff, 0x25, 0xff, 0x07, 0xff, 0x06, 0xff, + 0xed, 0xfe, 0xed, 0xfe, 0xd1, 0xfe, 0xcf, 0xfe, 0xb4, 0xfe, 0xb5, 0xfe, + 0x9a, 0xfe, 0x97, 0xfe, 0x7e, 0xfe, 0x7f, 0xfe, 0x62, 0xfe, 0x61, 0xfe, + 0x48, 0xfe, 0x47, 0xfe, 0x31, 0xfe, 0x30, 0xfe, 0x18, 0xfe, 0x16, 0xfe, + 0x00, 0xfe, 0x01, 0xfe, 0xec, 0xfd, 0xea, 0xfd, 0xd7, 0xfd, 0xd9, 0xfd, + 0xc5, 0xfd, 0xc5, 0xfd, 0xb3, 0xfd, 0xb3, 0xfd, 0xa4, 0xfd, 0xa3, 0xfd, + 0x97, 0xfd, 0x98, 0xfd, 0x8a, 0xfd, 0x88, 0xfd, 0x80, 0xfd, 0x80, 0xfd, + 0x77, 0xfd, 0x77, 0xfd, 0x6f, 0xfd, 0x6e, 0xfd, 0x6a, 0xfd, 0x6a, 0xfd, + 0x64, 0xfd, 0x62, 0xfd, 0x60, 0xfd, 0x62, 0xfd, 0x5e, 0xfd, 0x5e, 0xfd, + 0x5b, 0xfd, 0x5b, 0xfd, 0x5e, 0xfd, 0x5f, 0xfd, 0x5a, 0xfd, 0x5b, 0xfd, + 0x61, 0xfd, 0x5f, 0xfd, 0x5d, 0xfd, 0x60, 0xfd, 0x65, 0xfd, 0x63, 0xfd, + 0x65, 0xfd, 0x66, 0xfd, 0x67, 0xfd, 0x66, 0xfd, 0x6b, 0xfd, 0x6d, 0xfd, + 0x6d, 0xfd, 0x6b, 0xfd, 0x71, 0xfd, 0x72, 0xfd, 0x72, 0xfd, 0x71, 0xfd, + 0x75, 0xfd, 0x78, 0xfd, 0x77, 0xfd, 0x78, 0xfd, 0x7a, 0xfd, 0x7c, 0xfd, + 0x7c, 0xfd, 0x7e, 0xfd, 0x7f, 0xfd, 0x7f, 0xfd, 0x7f, 0xfd, 0x82, 0xfd, + 0x81, 0xfd, 0x82, 0xfd, 0x84, 0xfd, 0x85, 0xfd, 0x85, 0xfd, 0x87, 0xfd, + 0x89, 0xfd, 0x88, 0xfd, 0x89, 0xfd, 0x8c, 0xfd, 0x8e, 0xfd, 0x8d, 0xfd, + 0x90, 0xfd, 0x93, 0xfd, 0x96, 0xfd, 0x96, 0xfd, 0x9a, 0xfd, 0x9b, 0xfd, + 0xa1, 0xfd, 0xa0, 0xfd, 0xa6, 0xfd, 0xa7, 0xfd, 0xaf, 0xfd, 0xb0, 0xfd, + 0xb5, 0xfd, 0xb7, 0xfd, 0xc2, 0xfd, 0xc3, 0xfd, 0xd0, 0xfd, 0xcf, 0xfd, + 0xdb, 0xfd, 0xdb, 0xfd, 0xec, 0xfd, 0xeb, 0xfd, 0xf9, 0xfd, 0xfb, 0xfd, + 0x0e, 0xfe, 0x0d, 0xfe, 0x21, 0xfe, 0x21, 0xfe, 0x36, 0xfe, 0x33, 0xfe, + 0x4a, 0xfe, 0x4c, 0xfe, 0x64, 0xfe, 0x61, 0xfe, 0x79, 0xfe, 0x7c, 0xfe, + 0x96, 0xfe, 0x96, 0xfe, 0xaf, 0xfe, 0xaf, 0xfe, 0xcb, 0xfe, 0xcd, 0xfe, + 0xe7, 0xfe, 0xe6, 0xfe, 0x03, 0xff, 0x05, 0xff, 0x22, 0xff, 0x21, 0xff, + 0x3e, 0xff, 0x3e, 0xff, 0x5b, 0xff, 0x5c, 0xff, 0x7b, 0xff, 0x7c, 0xff, + 0x96, 0xff, 0x96, 0xff, 0xb4, 0xff, 0xb5, 0xff, 0xcf, 0xff, 0xd0, 0xff, + 0xec, 0xff, 0xec, 0xff, 0x06, 0x00, 0x08, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x3b, 0x00, 0x3b, 0x00, 0x52, 0x00, 0x53, 0x00, 0x6b, 0x00, 0x6b, 0x00, + 0x80, 0x00, 0x80, 0x00, 0x96, 0x00, 0x98, 0x00, 0xaa, 0x00, 0xa9, 0x00, + 0xbe, 0x00, 0xc0, 0x00, 0xd1, 0x00, 0xd0, 0x00, 0xdf, 0x00, 0xe2, 0x00, + 0xf6, 0x00, 0xf4, 0x00, 0x00, 0x01, 0x02, 0x01, 0x14, 0x01, 0x13, 0x01, + 0x20, 0x01, 0x21, 0x01, 0x30, 0x01, 0x2f, 0x01, 0x3c, 0x01, 0x3e, 0x01, + 0x4a, 0x01, 0x49, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x64, 0x01, 0x66, 0x01, + 0x75, 0x01, 0x74, 0x01, 0x80, 0x01, 0x81, 0x01, 0x90, 0x01, 0x8f, 0x01, + 0x9e, 0x01, 0xa0, 0x01, 0xad, 0x01, 0xaa, 0x01, 0xbc, 0x01, 0xbf, 0x01, + 0xcc, 0x01, 0xc9, 0x01, 0xda, 0x01, 0xdc, 0x01, 0xec, 0x01, 0xeb, 0x01, + 0xfa, 0x01, 0xfc, 0x01, 0x0c, 0x02, 0x0c, 0x02, 0x1e, 0x02, 0x1e, 0x02, + 0x2b, 0x02, 0x2d, 0x02, 0x40, 0x02, 0x40, 0x02, 0x4f, 0x02, 0x4f, 0x02, + 0x61, 0x02, 0x61, 0x02, 0x70, 0x02, 0x71, 0x02, 0x80, 0x02, 0x81, 0x02, + 0x91, 0x02, 0x8f, 0x02, 0x9d, 0x02, 0x9f, 0x02, 0xab, 0x02, 0xab, 0x02, + 0xb8, 0x02, 0xb8, 0x02, 0xc2, 0x02, 0xc2, 0x02, 0xce, 0x02, 0xcd, 0x02, + 0xd3, 0x02, 0xd4, 0x02, 0xdf, 0x02, 0xde, 0x02, 0xe1, 0x02, 0xe1, 0x02, + 0xe5, 0x02, 0xe6, 0x02, 0xe9, 0x02, 0xe9, 0x02, 0xe8, 0x02, 0xe7, 0x02, + 0xe8, 0x02, 0xe9, 0x02, 0xe6, 0x02, 0xe3, 0x02, 0xdf, 0x02, 0xe0, 0x02, + 0xdb, 0x02, 0xd9, 0x02, 0xcf, 0x02, 0xd0, 0x02, 0xc8, 0x02, 0xc8, 0x02, + 0xbc, 0x02, 0xbb, 0x02, 0xb0, 0x02, 0xb0, 0x02, 0xa5, 0x02, 0xa3, 0x02, + 0x94, 0x02, 0x95, 0x02, 0x85, 0x02, 0x84, 0x02, 0x74, 0x02, 0x74, 0x02, + 0x65, 0x02, 0x63, 0x02, 0x52, 0x02, 0x53, 0x02, 0x3f, 0x02, 0x3f, 0x02, + 0x2f, 0x02, 0x2e, 0x02, 0x1c, 0x02, 0x1c, 0x02, 0x0a, 0x02, 0x08, 0x02, + 0xf7, 0x01, 0xf8, 0x01, 0xe5, 0x01, 0xe4, 0x01, 0xd2, 0x01, 0xd2, 0x01, + 0xc4, 0x01, 0xc4, 0x01, 0xaf, 0x01, 0xae, 0x01, 0xa1, 0x01, 0xa2, 0x01, + 0x92, 0x01, 0x90, 0x01, 0x80, 0x01, 0x81, 0x01, 0x73, 0x01, 0x71, 0x01, + 0x61, 0x01, 0x62, 0x01, 0x54, 0x01, 0x54, 0x01, 0x45, 0x01, 0x44, 0x01, + 0x38, 0x01, 0x38, 0x01, 0x29, 0x01, 0x27, 0x01, 0x19, 0x01, 0x1a, 0x01, + 0x0b, 0x01, 0x0a, 0x01, 0xfe, 0x00, 0xfd, 0x00, 0xed, 0x00, 0xee, 0x00, + 0xe0, 0x00, 0xde, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xbd, 0x00, 0xbd, 0x00, + 0xad, 0x00, 0xac, 0x00, 0x98, 0x00, 0x98, 0x00, 0x89, 0x00, 0x89, 0x00, + 0x74, 0x00, 0x71, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x48, 0x00, 0x46, 0x00, + 0x33, 0x00, 0x32, 0x00, 0x19, 0x00, 0x19, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xe8, 0xff, 0xe8, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xb4, 0xff, 0xaf, 0xff, + 0x96, 0xff, 0x98, 0xff, 0x7c, 0xff, 0x7a, 0xff, 0x60, 0xff, 0x5e, 0xff, + 0x44, 0xff, 0x42, 0xff, 0x26, 0xff, 0x24, 0xff, 0x0b, 0xff, 0x0b, 0xff, + 0xec, 0xfe, 0xec, 0xfe, 0xd3, 0xfe, 0xd1, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, + 0x9c, 0xfe, 0x9b, 0xfe, 0x83, 0xfe, 0x82, 0xfe, 0x68, 0xfe, 0x67, 0xfe, + 0x53, 0xfe, 0x50, 0xfe, 0x3a, 0xfe, 0x3a, 0xfe, 0x26, 0xfe, 0x24, 0xfe, + 0x10, 0xfe, 0x12, 0xfe, 0xff, 0xfd, 0x00, 0xfe, 0xee, 0xfd, 0xee, 0xfd, + 0xdf, 0xfd, 0xdd, 0xfd, 0xce, 0xfd, 0xd1, 0xfd, 0xc6, 0xfd, 0xc3, 0xfd, + 0xb9, 0xfd, 0xba, 0xfd, 0xaf, 0xfd, 0xae, 0xfd, 0xa8, 0xfd, 0xa8, 0xfd, + 0xa0, 0xfd, 0xa1, 0xfd, 0x9a, 0xfd, 0x99, 0xfd, 0x97, 0xfd, 0x95, 0xfd, + 0x91, 0xfd, 0x92, 0xfd, 0x8f, 0xfd, 0x8e, 0xfd, 0x8b, 0xfd, 0x8b, 0xfd, + 0x8a, 0xfd, 0x8a, 0xfd, 0x89, 0xfd, 0x89, 0xfd, 0x86, 0xfd, 0x87, 0xfd, + 0x88, 0xfd, 0x88, 0xfd, 0x87, 0xfd, 0x86, 0xfd, 0x86, 0xfd, 0x88, 0xfd, + 0x89, 0xfd, 0x88, 0xfd, 0x85, 0xfd, 0x85, 0xfd, 0x88, 0xfd, 0x87, 0xfd, + 0x86, 0xfd, 0x85, 0xfd, 0x84, 0xfd, 0x85, 0xfd, 0x86, 0xfd, 0x84, 0xfd, + 0x84, 0xfd, 0x82, 0xfd, 0x84, 0xfd, 0x85, 0xfd, 0x81, 0xfd, 0x7e, 0xfd, + 0x82, 0xfd, 0x82, 0xfd, 0x7f, 0xfd, 0x7e, 0xfd, 0x7f, 0xfd, 0x7f, 0xfd, + 0x7f, 0xfd, 0x7d, 0xfd, 0x7d, 0xfd, 0x7e, 0xfd, 0x7f, 0xfd, 0x7d, 0xfd, + 0x7d, 0xfd, 0x7d, 0xfd, 0x7f, 0xfd, 0x81, 0xfd, 0x83, 0xfd, 0x80, 0xfd, + 0x85, 0xfd, 0x87, 0xfd, 0x8c, 0xfd, 0x89, 0xfd, 0x90, 0xfd, 0x90, 0xfd, + 0x98, 0xfd, 0x97, 0xfd, 0x9e, 0xfd, 0x9f, 0xfd, 0xaa, 0xfd, 0xaa, 0xfd, + 0xb3, 0xfd, 0xb3, 0xfd, 0xc0, 0xfd, 0xc1, 0xfd, 0xce, 0xfd, 0xcd, 0xfd, + 0xdc, 0xfd, 0xdd, 0xfd, 0xf0, 0xfd, 0xee, 0xfd, 0x01, 0xfe, 0x00, 0xfe, + 0x17, 0xfe, 0x16, 0xfe, 0x2a, 0xfe, 0x29, 0xfe, 0x41, 0xfe, 0x41, 0xfe, + 0x59, 0xfe, 0x57, 0xfe, 0x70, 0xfe, 0x70, 0xfe, 0x8b, 0xfe, 0x8b, 0xfe, + 0xa3, 0xfe, 0xa3, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xdb, 0xfe, 0xd8, 0xfe, + 0xf4, 0xfe, 0xf6, 0xfe, 0x12, 0xff, 0x10, 0xff, 0x2b, 0xff, 0x2d, 0xff, + 0x4a, 0xff, 0x49, 0xff, 0x63, 0xff, 0x64, 0xff, 0x80, 0xff, 0x7f, 0xff, + 0x9b, 0xff, 0x99, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xcf, 0xff, 0xcd, 0xff, + 0xe5, 0xff, 0xe7, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0x15, 0x00, 0x13, 0x00, + 0x28, 0x00, 0x2b, 0x00, 0x41, 0x00, 0x3e, 0x00, 0x51, 0x00, 0x54, 0x00, + 0x66, 0x00, 0x66, 0x00, 0x79, 0x00, 0x78, 0x00, 0x88, 0x00, 0x8b, 0x00, + 0x9a, 0x00, 0x97, 0x00, 0xab, 0x00, 0xad, 0x00, 0xbb, 0x00, 0xba, 0x00, + 0xc8, 0x00, 0xc9, 0x00, 0xdb, 0x00, 0xda, 0x00, 0xe8, 0x00, 0xe8, 0x00, + 0xf7, 0x00, 0xf6, 0x00, 0x06, 0x01, 0x07, 0x01, 0x12, 0x01, 0x11, 0x01, + 0x24, 0x01, 0x24, 0x01, 0x31, 0x01, 0x30, 0x01, 0x41, 0x01, 0x40, 0x01, + 0x51, 0x01, 0x52, 0x01, 0x60, 0x01, 0x5f, 0x01, 0x72, 0x01, 0x72, 0x01, + 0x83, 0x01, 0x82, 0x01, 0x92, 0x01, 0x92, 0x01, 0xa7, 0x01, 0xa5, 0x01, + 0xb7, 0x01, 0xb6, 0x01, 0xcc, 0x01, 0xcb, 0x01, 0xdd, 0x01, 0xdd, 0x01, + 0xf0, 0x01, 0xf1, 0x01, 0x06, 0x02, 0x04, 0x02, 0x13, 0x02, 0x15, 0x02, + 0x2b, 0x02, 0x2b, 0x02, 0x3a, 0x02, 0x3b, 0x02, 0x4d, 0x02, 0x4e, 0x02, + 0x60, 0x02, 0x60, 0x02, 0x6d, 0x02, 0x6d, 0x02, 0x80, 0x02, 0x81, 0x02, + 0x8c, 0x02, 0x8c, 0x02, 0x99, 0x02, 0x9a, 0x02, 0xa8, 0x02, 0xa7, 0x02, + 0xaf, 0x02, 0xb2, 0x02, 0xbd, 0x02, 0xbd, 0x02, 0xc2, 0x02, 0xc2, 0x02, + 0xc8, 0x02, 0xc9, 0x02, 0xcf, 0x02, 0xd0, 0x02, 0xd1, 0x02, 0xd1, 0x02, + 0xd2, 0x02, 0xd3, 0x02, 0xd1, 0x02, 0xd2, 0x02, 0xd2, 0x02, 0xd0, 0x02, + 0xca, 0x02, 0xcd, 0x02, 0xc9, 0x02, 0xc7, 0x02, 0xc0, 0x02, 0xc0, 0x02, + 0xb9, 0x02, 0xba, 0x02, 0xb0, 0x02, 0xaf, 0x02, 0xa5, 0x02, 0xa6, 0x02, + 0x99, 0x02, 0x98, 0x02, 0x8d, 0x02, 0x8c, 0x02, 0x7f, 0x02, 0x80, 0x02, + 0x74, 0x02, 0x71, 0x02, 0x61, 0x02, 0x63, 0x02, 0x57, 0x02, 0x56, 0x02, + 0x43, 0x02, 0x44, 0x02, 0x38, 0x02, 0x39, 0x02, 0x25, 0x02, 0x24, 0x02, + 0x17, 0x02, 0x18, 0x02, 0x07, 0x02, 0x07, 0x02, 0xfb, 0x01, 0xf9, 0x01, + 0xe9, 0x01, 0xeb, 0x01, 0xdd, 0x01, 0xdc, 0x01, 0xcd, 0x01, 0xd1, 0x01, + 0xc2, 0x01, 0xbf, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xa7, 0x01, 0xa6, 0x01, + 0x99, 0x01, 0x9a, 0x01, 0x8c, 0x01, 0x8f, 0x01, 0x81, 0x01, 0x7f, 0x01, + 0x74, 0x01, 0x76, 0x01, 0x67, 0x01, 0x67, 0x01, 0x5b, 0x01, 0x5b, 0x01, + 0x4d, 0x01, 0x4e, 0x01, 0x41, 0x01, 0x40, 0x01, 0x33, 0x01, 0x33, 0x01, + 0x26, 0x01, 0x28, 0x01, 0x16, 0x01, 0x15, 0x01, 0x08, 0x01, 0x09, 0x01, + 0xf7, 0x00, 0xf8, 0x00, 0xe5, 0x00, 0xe5, 0x00, 0xd4, 0x00, 0xd5, 0x00, + 0xc0, 0x00, 0xbf, 0x00, 0xac, 0x00, 0xad, 0x00, 0x98, 0x00, 0x98, 0x00, + 0x81, 0x00, 0x81, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x52, 0x00, 0x51, 0x00, + 0x3a, 0x00, 0x3a, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x04, 0x00, + 0xe7, 0xff, 0xea, 0xff, 0xcf, 0xff, 0xcd, 0xff, 0xb2, 0xff, 0xb3, 0xff, + 0x94, 0xff, 0x94, 0xff, 0x7a, 0xff, 0x7b, 0xff, 0x5a, 0xff, 0x5b, 0xff, + 0x41, 0xff, 0x40, 0xff, 0x23, 0xff, 0x25, 0xff, 0x06, 0xff, 0x07, 0xff, + 0xee, 0xfe, 0xee, 0xfe, 0xd3, 0xfe, 0xd2, 0xfe, 0xb7, 0xfe, 0xb9, 0xfe, + 0xa2, 0xfe, 0xa0, 0xfe, 0x86, 0xfe, 0x88, 0xfe, 0x75, 0xfe, 0x74, 0xfe, + 0x5d, 0xfe, 0x5d, 0xfe, 0x4b, 0xfe, 0x4c, 0xfe, 0x39, 0xfe, 0x39, 0xfe, + 0x28, 0xfe, 0x27, 0xfe, 0x18, 0xfe, 0x19, 0xfe, 0x0b, 0xfe, 0x0a, 0xfe, + 0xfc, 0xfd, 0xfe, 0xfd, 0xf4, 0xfd, 0xf4, 0xfd, 0xe6, 0xfd, 0xe7, 0xfd, + 0xe0, 0xfd, 0xdf, 0xfd, 0xd5, 0xfd, 0xd8, 0xfd, 0xd0, 0xfd, 0xd0, 0xfd, + 0xcb, 0xfd, 0xcb, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc1, 0xfd, 0xc1, 0xfd, + 0xbb, 0xfd, 0xbc, 0xfd, 0xb7, 0xfd, 0xb9, 0xfd, 0xb5, 0xfd, 0xb5, 0xfd, + 0xb1, 0xfd, 0xb3, 0xfd, 0xb0, 0xfd, 0xaf, 0xfd, 0xaa, 0xfd, 0xac, 0xfd, + 0xa8, 0xfd, 0xa9, 0xfd, 0xa7, 0xfd, 0xa5, 0xfd, 0xa2, 0xfd, 0xa3, 0xfd, + 0x9f, 0xfd, 0xa0, 0xfd, 0x9b, 0xfd, 0x9a, 0xfd, 0x97, 0xfd, 0x98, 0xfd, + 0x94, 0xfd, 0x95, 0xfd, 0x92, 0xfd, 0x90, 0xfd, 0x8a, 0xfd, 0x8d, 0xfd, + 0x89, 0xfd, 0x88, 0xfd, 0x85, 0xfd, 0x86, 0xfd, 0x7e, 0xfd, 0x7f, 0xfd, + 0x7f, 0xfd, 0x7e, 0xfd, 0x77, 0xfd, 0x79, 0xfd, 0x78, 0xfd, 0x78, 0xfd, + 0x75, 0xfd, 0x76, 0xfd, 0x74, 0xfd, 0x75, 0xfd, 0x77, 0xfd, 0x75, 0xfd, + 0x73, 0xfd, 0x77, 0xfd, 0x7a, 0xfd, 0x77, 0xfd, 0x78, 0xfd, 0x7b, 0xfd, + 0x7f, 0xfd, 0x7d, 0xfd, 0x82, 0xfd, 0x84, 0xfd, 0x8b, 0xfd, 0x8b, 0xfd, + 0x93, 0xfd, 0x92, 0xfd, 0x9e, 0xfd, 0x9f, 0xfd, 0xaa, 0xfd, 0xa8, 0xfd, + 0xb8, 0xfd, 0xb8, 0xfd, 0xc6, 0xfd, 0xc6, 0xfd, 0xd7, 0xfd, 0xd5, 0xfd, + 0xe5, 0xfd, 0xe8, 0xfd, 0xfb, 0xfd, 0xfb, 0xfd, 0x0f, 0xfe, 0x0f, 0xfe, + 0x22, 0xfe, 0x24, 0xfe, 0x3a, 0xfe, 0x38, 0xfe, 0x4f, 0xfe, 0x52, 0xfe, + 0x6a, 0xfe, 0x69, 0xfe, 0x81, 0xfe, 0x83, 0xfe, 0x9b, 0xfe, 0x9b, 0xfe, + 0xb7, 0xfe, 0xb6, 0xfe, 0xce, 0xfe, 0xd0, 0xfe, 0xea, 0xfe, 0xe9, 0xfe, + 0x03, 0xff, 0x04, 0xff, 0x1e, 0xff, 0x1c, 0xff, 0x36, 0xff, 0x37, 0xff, + 0x51, 0xff, 0x50, 0xff, 0x66, 0xff, 0x67, 0xff, 0x7f, 0xff, 0x7f, 0xff, + 0x97, 0xff, 0x97, 0xff, 0xad, 0xff, 0xac, 0xff, 0xc2, 0xff, 0xc4, 0xff, + 0xda, 0xff, 0xd7, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x21, 0x00, 0x24, 0x00, 0x35, 0x00, 0x32, 0x00, + 0x43, 0x00, 0x44, 0x00, 0x55, 0x00, 0x56, 0x00, 0x63, 0x00, 0x62, 0x00, + 0x74, 0x00, 0x75, 0x00, 0x82, 0x00, 0x81, 0x00, 0x92, 0x00, 0x92, 0x00, + 0xa2, 0x00, 0xa2, 0x00, 0xb0, 0x00, 0xaf, 0x00, 0xbf, 0x00, 0xc0, 0x00, + 0xcf, 0x00, 0xce, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xf1, 0x00, 0xf0, 0x00, + 0x01, 0x01, 0xff, 0x00, 0x12, 0x01, 0x13, 0x01, 0x24, 0x01, 0x23, 0x01, + 0x37, 0x01, 0x37, 0x01, 0x49, 0x01, 0x49, 0x01, 0x5d, 0x01, 0x5c, 0x01, + 0x6f, 0x01, 0x70, 0x01, 0x85, 0x01, 0x84, 0x01, 0x9a, 0x01, 0x9a, 0x01, + 0xae, 0x01, 0xad, 0x01, 0xc3, 0x01, 0xc4, 0x01, 0xd7, 0x01, 0xd7, 0x01, + 0xeb, 0x01, 0xea, 0x01, 0x01, 0x02, 0x01, 0x02, 0x12, 0x02, 0x11, 0x02, + 0x29, 0x02, 0x2b, 0x02, 0x3a, 0x02, 0x38, 0x02, 0x4b, 0x02, 0x4c, 0x02, + 0x5d, 0x02, 0x5b, 0x02, 0x6b, 0x02, 0x6b, 0x02, 0x7b, 0x02, 0x7a, 0x02, + 0x86, 0x02, 0x88, 0x02, 0x95, 0x02, 0x93, 0x02, 0x9e, 0x02, 0x9f, 0x02, + 0xa5, 0x02, 0xa4, 0x02, 0xae, 0x02, 0xad, 0x02, 0xb1, 0x02, 0xb2, 0x02, + 0xb6, 0x02, 0xb5, 0x02, 0xb7, 0x02, 0xb8, 0x02, 0xb9, 0x02, 0xb9, 0x02, + 0xb8, 0x02, 0xb7, 0x02, 0xb4, 0x02, 0xb6, 0x02, 0xb3, 0x02, 0xb2, 0x02, + 0xab, 0x02, 0xad, 0x02, 0xa7, 0x02, 0xa7, 0x02, 0x9d, 0x02, 0x9f, 0x02, + 0x97, 0x02, 0x96, 0x02, 0x8c, 0x02, 0x8e, 0x02, 0x83, 0x02, 0x82, 0x02, + 0x76, 0x02, 0x77, 0x02, 0x6d, 0x02, 0x6d, 0x02, 0x5e, 0x02, 0x60, 0x02, + 0x54, 0x02, 0x54, 0x02, 0x48, 0x02, 0x48, 0x02, 0x3c, 0x02, 0x3a, 0x02, + 0x2f, 0x02, 0x30, 0x02, 0x23, 0x02, 0x22, 0x02, 0x17, 0x02, 0x19, 0x02, + 0x0d, 0x02, 0x09, 0x02, 0xff, 0x01, 0x01, 0x02, 0xf5, 0x01, 0xf5, 0x01, + 0xea, 0x01, 0xe8, 0x01, 0xde, 0x01, 0xdf, 0x01, 0xd5, 0x01, 0xd5, 0x01, + 0xc9, 0x01, 0xc9, 0x01, 0xc0, 0x01, 0xc1, 0x01, 0xb5, 0x01, 0xb4, 0x01, + 0xab, 0x01, 0xab, 0x01, 0xa2, 0x01, 0xa0, 0x01, 0x96, 0x01, 0x97, 0x01, + 0x8c, 0x01, 0x8b, 0x01, 0x81, 0x01, 0x80, 0x01, 0x75, 0x01, 0x74, 0x01, + 0x67, 0x01, 0x67, 0x01, 0x5c, 0x01, 0x5a, 0x01, 0x4c, 0x01, 0x4d, 0x01, + 0x3d, 0x01, 0x3d, 0x01, 0x2e, 0x01, 0x2f, 0x01, 0x1a, 0x01, 0x1b, 0x01, + 0x0b, 0x01, 0x0d, 0x01, 0xfa, 0x00, 0xf8, 0x00, 0xe2, 0x00, 0xe4, 0x00, + 0xd1, 0x00, 0xcf, 0x00, 0xb7, 0x00, 0xb9, 0x00, 0xa2, 0x00, 0xa1, 0x00, + 0x8a, 0x00, 0x89, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x59, 0x00, 0x57, 0x00, + 0x39, 0x00, 0x3b, 0x00, 0x21, 0x00, 0x20, 0x00, 0x04, 0x00, 0x02, 0x00, + 0xe7, 0xff, 0xe8, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xae, 0xff, 0xad, 0xff, + 0x93, 0xff, 0x92, 0xff, 0x76, 0xff, 0x77, 0xff, 0x5d, 0xff, 0x5b, 0xff, + 0x40, 0xff, 0x41, 0xff, 0x28, 0xff, 0x27, 0xff, 0x0d, 0xff, 0x0c, 0xff, + 0xf4, 0xfe, 0xf5, 0xfe, 0xdc, 0xfe, 0xdb, 0xfe, 0xc5, 0xfe, 0xc6, 0xfe, + 0xb0, 0xfe, 0xb0, 0xfe, 0x9a, 0xfe, 0x9a, 0xfe, 0x89, 0xfe, 0x8b, 0xfe, + 0x77, 0xfe, 0x76, 0xfe, 0x66, 0xfe, 0x65, 0xfe, 0x57, 0xfe, 0x57, 0xfe, + 0x49, 0xfe, 0x49, 0xfe, 0x3e, 0xfe, 0x3c, 0xfe, 0x31, 0xfe, 0x31, 0xfe, + 0x24, 0xfe, 0x25, 0xfe, 0x1d, 0xfe, 0x1b, 0xfe, 0x12, 0xfe, 0x12, 0xfe, + 0x0b, 0xfe, 0x0b, 0xfe, 0x05, 0xfe, 0x03, 0xfe, 0xfc, 0xfd, 0xfd, 0xfd, + 0xf8, 0xfd, 0xf6, 0xfd, 0xf1, 0xfd, 0xf1, 0xfd, 0xed, 0xfd, 0xeb, 0xfd, + 0xe5, 0xfd, 0xe4, 0xfd, 0xdf, 0xfd, 0xe2, 0xfd, 0xda, 0xfd, 0xd8, 0xfd, + 0xd5, 0xfd, 0xd5, 0xfd, 0xce, 0xfd, 0xcf, 0xfd, 0xc8, 0xfd, 0xc8, 0xfd, + 0xc3, 0xfd, 0xc4, 0xfd, 0xbd, 0xfd, 0xba, 0xfd, 0xb5, 0xfd, 0xb7, 0xfd, + 0xb1, 0xfd, 0xb0, 0xfd, 0xa9, 0xfd, 0xa8, 0xfd, 0xa2, 0xfd, 0xa2, 0xfd, + 0x9b, 0xfd, 0x99, 0xfd, 0x95, 0xfd, 0x96, 0xfd, 0x8d, 0xfd, 0x8b, 0xfd, + 0x89, 0xfd, 0x89, 0xfd, 0x81, 0xfd, 0x80, 0xfd, 0x7d, 0xfd, 0x7d, 0xfd, + 0x7a, 0xfd, 0x78, 0xfd, 0x73, 0xfd, 0x73, 0xfd, 0x76, 0xfd, 0x73, 0xfd, + 0x6e, 0xfd, 0x6f, 0xfd, 0x71, 0xfd, 0x70, 0xfd, 0x70, 0xfd, 0x70, 0xfd, + 0x70, 0xfd, 0x70, 0xfd, 0x78, 0xfd, 0x77, 0xfd, 0x77, 0xfd, 0x78, 0xfd, + 0x84, 0xfd, 0x82, 0xfd, 0x84, 0xfd, 0x85, 0xfd, 0x92, 0xfd, 0x92, 0xfd, + 0x9c, 0xfd, 0x9b, 0xfd, 0xa6, 0xfd, 0xa7, 0xfd, 0xb6, 0xfd, 0xb5, 0xfd, + 0xc4, 0xfd, 0xc2, 0xfd, 0xd4, 0xfd, 0xd6, 0xfd, 0xe8, 0xfd, 0xe5, 0xfd, + 0xf8, 0xfd, 0xfa, 0xfd, 0x0d, 0xfe, 0x0c, 0xfe, 0x23, 0xfe, 0x24, 0xfe, + 0x38, 0xfe, 0x38, 0xfe, 0x4d, 0xfe, 0x4d, 0xfe, 0x66, 0xfe, 0x66, 0xfe, + 0x7b, 0xfe, 0x7a, 0xfe, 0x94, 0xfe, 0x96, 0xfe, 0xad, 0xfe, 0xa9, 0xfe, + 0xc4, 0xfe, 0xc5, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xf3, 0xfe, 0xf4, 0xfe, + 0x0b, 0xff, 0x09, 0xff, 0x22, 0xff, 0x21, 0xff, 0x35, 0xff, 0x36, 0xff, + 0x4e, 0xff, 0x4b, 0xff, 0x60, 0xff, 0x61, 0xff, 0x77, 0xff, 0x76, 0xff, + 0x8a, 0xff, 0x8a, 0xff, 0x9c, 0xff, 0x9b, 0xff, 0xad, 0xff, 0xaf, 0xff, + 0xc0, 0xff, 0xc0, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xe0, 0xff, 0xe1, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0x01, 0x00, 0x01, 0x00, 0x12, 0x00, 0x11, 0x00, + 0x1f, 0x00, 0x20, 0x00, 0x31, 0x00, 0x30, 0x00, 0x3f, 0x00, 0x3f, 0x00, + 0x4d, 0x00, 0x4d, 0x00, 0x5d, 0x00, 0x60, 0x00, 0x6f, 0x00, 0x6c, 0x00, + 0x7d, 0x00, 0x7d, 0x00, 0x8f, 0x00, 0x8e, 0x00, 0x9f, 0x00, 0x9f, 0x00, + 0xb0, 0x00, 0xb0, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xd7, 0x00, 0xd5, 0x00, + 0xe9, 0x00, 0xeb, 0x00, 0xff, 0x00, 0xfd, 0x00, 0x11, 0x01, 0x12, 0x01, + 0x29, 0x01, 0x27, 0x01, 0x3b, 0x01, 0x3b, 0x01, 0x53, 0x01, 0x52, 0x01, + 0x67, 0x01, 0x67, 0x01, 0x7e, 0x01, 0x7c, 0x01, 0x94, 0x01, 0x94, 0x01, + 0xa9, 0x01, 0xa7, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xd3, 0x01, 0xd2, 0x01, + 0xe9, 0x01, 0xea, 0x01, 0xff, 0x01, 0xfc, 0x01, 0x11, 0x02, 0x11, 0x02, + 0x22, 0x02, 0x20, 0x02, 0x35, 0x02, 0x34, 0x02, 0x44, 0x02, 0x43, 0x02, + 0x55, 0x02, 0x54, 0x02, 0x63, 0x02, 0x60, 0x02, 0x6d, 0x02, 0x6e, 0x02, + 0x79, 0x02, 0x77, 0x02, 0x82, 0x02, 0x81, 0x02, 0x89, 0x02, 0x89, 0x02, + 0x91, 0x02, 0x8e, 0x02, 0x93, 0x02, 0x92, 0x02, 0x97, 0x02, 0x96, 0x02, + 0x97, 0x02, 0x98, 0x02, 0x99, 0x02, 0x97, 0x02, 0x97, 0x02, 0x96, 0x02, + 0x96, 0x02, 0x93, 0x02, 0x90, 0x02, 0x90, 0x02, 0x8c, 0x02, 0x8c, 0x02, + 0x88, 0x02, 0x88, 0x02, 0x7f, 0x02, 0x7e, 0x02, 0x79, 0x02, 0x7a, 0x02, + 0x70, 0x02, 0x6f, 0x02, 0x69, 0x02, 0x68, 0x02, 0x5e, 0x02, 0x60, 0x02, + 0x58, 0x02, 0x57, 0x02, 0x4d, 0x02, 0x4c, 0x02, 0x45, 0x02, 0x44, 0x02, + 0x3c, 0x02, 0x3b, 0x02, 0x33, 0x02, 0x32, 0x02, 0x28, 0x02, 0x2a, 0x02, + 0x20, 0x02, 0x1f, 0x02, 0x17, 0x02, 0x17, 0x02, 0x10, 0x02, 0x0f, 0x02, + 0x06, 0x02, 0x05, 0x02, 0xff, 0x01, 0xff, 0x01, 0xf8, 0x01, 0xf7, 0x01, + 0xed, 0x01, 0xee, 0x01, 0xe7, 0x01, 0xe6, 0x01, 0xdf, 0x01, 0xe1, 0x01, + 0xd8, 0x01, 0xd6, 0x01, 0xcf, 0x01, 0xd0, 0x01, 0xc7, 0x01, 0xc7, 0x01, + 0xbe, 0x01, 0xbd, 0x01, 0xb3, 0x01, 0xb4, 0x01, 0xaa, 0x01, 0xa9, 0x01, + 0x9e, 0x01, 0xa0, 0x01, 0x95, 0x01, 0x91, 0x01, 0x84, 0x01, 0x88, 0x01, + 0x7a, 0x01, 0x77, 0x01, 0x6b, 0x01, 0x6b, 0x01, 0x5b, 0x01, 0x5d, 0x01, + 0x4c, 0x01, 0x4b, 0x01, 0x39, 0x01, 0x38, 0x01, 0x28, 0x01, 0x27, 0x01, + 0x12, 0x01, 0x13, 0x01, 0xff, 0x00, 0xfd, 0x00, 0xe7, 0x00, 0xe7, 0x00, + 0xcf, 0x00, 0xd0, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0x9f, 0x00, 0x9e, 0x00, + 0x86, 0x00, 0x86, 0x00, 0x69, 0x00, 0x69, 0x00, 0x50, 0x00, 0x4f, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x18, 0x00, 0x16, 0x00, 0xfd, 0xff, 0xfe, 0xff, + 0xe2, 0xff, 0xe1, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xab, 0xff, 0xaa, 0xff, + 0x90, 0xff, 0x8f, 0xff, 0x77, 0xff, 0x76, 0xff, 0x5c, 0xff, 0x5e, 0xff, + 0x45, 0xff, 0x45, 0xff, 0x2c, 0xff, 0x2d, 0xff, 0x16, 0xff, 0x16, 0xff, + 0x02, 0xff, 0x01, 0xff, 0xea, 0xfe, 0xec, 0xfe, 0xda, 0xfe, 0xdb, 0xfe, + 0xc8, 0xfe, 0xc5, 0xfe, 0xb4, 0xfe, 0xb7, 0xfe, 0xa8, 0xfe, 0xa5, 0xfe, + 0x93, 0xfe, 0x95, 0xfe, 0x8a, 0xfe, 0x8a, 0xfe, 0x7b, 0xfe, 0x7d, 0xfe, + 0x6f, 0xfe, 0x6f, 0xfe, 0x65, 0xfe, 0x66, 0xfe, 0x58, 0xfe, 0x57, 0xfe, + 0x51, 0xfe, 0x51, 0xfe, 0x45, 0xfe, 0x44, 0xfe, 0x3e, 0xfe, 0x3e, 0xfe, + 0x34, 0xfe, 0x35, 0xfe, 0x2f, 0xfe, 0x2e, 0xfe, 0x25, 0xfe, 0x25, 0xfe, + 0x1c, 0xfe, 0x1b, 0xfe, 0x16, 0xfe, 0x15, 0xfe, 0x0d, 0xfe, 0x0d, 0xfe, + 0x05, 0xfe, 0x05, 0xfe, 0xfe, 0xfd, 0xfe, 0xfd, 0xf3, 0xfd, 0xf2, 0xfd, + 0xec, 0xfd, 0xed, 0xfd, 0xe1, 0xfd, 0xe0, 0xfd, 0xda, 0xfd, 0xda, 0xfd, + 0xd2, 0xfd, 0xd0, 0xfd, 0xc6, 0xfd, 0xc7, 0xfd, 0xc3, 0xfd, 0xbf, 0xfd, + 0xb2, 0xfd, 0xb3, 0xfd, 0xad, 0xfd, 0xac, 0xfd, 0xa4, 0xfd, 0xa3, 0xfd, + 0x98, 0xfd, 0x99, 0xfd, 0x95, 0xfd, 0x95, 0xfd, 0x8a, 0xfd, 0x88, 0xfd, + 0x84, 0xfd, 0x86, 0xfd, 0x80, 0xfd, 0x7f, 0xfd, 0x78, 0xfd, 0x78, 0xfd, + 0x77, 0xfd, 0x77, 0xfd, 0x70, 0xfd, 0x71, 0xfd, 0x70, 0xfd, 0x70, 0xfd, + 0x6f, 0xfd, 0x6f, 0xfd, 0x70, 0xfd, 0x6f, 0xfd, 0x73, 0xfd, 0x74, 0xfd, + 0x75, 0xfd, 0x75, 0xfd, 0x7d, 0xfd, 0x7c, 0xfd, 0x81, 0xfd, 0x82, 0xfd, + 0x8c, 0xfd, 0x8b, 0xfd, 0x93, 0xfd, 0x95, 0xfd, 0xa0, 0xfd, 0x9f, 0xfd, + 0xac, 0xfd, 0xac, 0xfd, 0xb9, 0xfd, 0xbb, 0xfd, 0xca, 0xfd, 0xc9, 0xfd, + 0xd9, 0xfd, 0xda, 0xfd, 0xec, 0xfd, 0xec, 0xfd, 0xfc, 0xfd, 0xfd, 0xfd, + 0x12, 0xfe, 0x13, 0xfe, 0x24, 0xfe, 0x25, 0xfe, 0x39, 0xfe, 0x39, 0xfe, + 0x4f, 0xfe, 0x50, 0xfe, 0x63, 0xfe, 0x62, 0xfe, 0x79, 0xfe, 0x7b, 0xfe, + 0x8e, 0xfe, 0x8e, 0xfe, 0xa4, 0xfe, 0xa4, 0xfe, 0xb8, 0xfe, 0xbb, 0xfe, + 0xcc, 0xfe, 0xcc, 0xfe, 0xe4, 0xfe, 0xe5, 0xfe, 0xf4, 0xfe, 0xf4, 0xfe, + 0x0b, 0xff, 0x0b, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x2e, 0xff, 0x2f, 0xff, + 0x43, 0xff, 0x41, 0xff, 0x50, 0xff, 0x52, 0xff, 0x65, 0xff, 0x64, 0xff, + 0x72, 0xff, 0x74, 0xff, 0x87, 0xff, 0x85, 0xff, 0x93, 0xff, 0x93, 0xff, + 0xa5, 0xff, 0xa4, 0xff, 0xb3, 0xff, 0xb4, 0xff, 0xc1, 0xff, 0xc3, 0xff, + 0xd3, 0xff, 0xd1, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xf1, 0xff, 0xee, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x0e, 0x00, 0x0e, 0x00, 0x1e, 0x00, 0x1d, 0x00, + 0x2e, 0x00, 0x2d, 0x00, 0x40, 0x00, 0x40, 0x00, 0x52, 0x00, 0x51, 0x00, + 0x62, 0x00, 0x63, 0x00, 0x77, 0x00, 0x77, 0x00, 0x89, 0x00, 0x87, 0x00, + 0x9c, 0x00, 0x9f, 0x00, 0xb3, 0x00, 0xb0, 0x00, 0xc7, 0x00, 0xc8, 0x00, + 0xdd, 0x00, 0xdd, 0x00, 0xf3, 0x00, 0xf2, 0x00, 0x09, 0x01, 0x0a, 0x01, + 0x1f, 0x01, 0x20, 0x01, 0x38, 0x01, 0x38, 0x01, 0x4d, 0x01, 0x4e, 0x01, + 0x66, 0x01, 0x67, 0x01, 0x7b, 0x01, 0x7a, 0x01, 0x91, 0x01, 0x94, 0x01, + 0xaa, 0x01, 0xa8, 0x01, 0xbb, 0x01, 0xbc, 0x01, 0xd6, 0x01, 0xd5, 0x01, + 0xe5, 0x01, 0xe4, 0x01, 0xf8, 0x01, 0xfa, 0x01, 0x0c, 0x02, 0x09, 0x02, + 0x17, 0x02, 0x19, 0x02, 0x2e, 0x02, 0x2c, 0x02, 0x36, 0x02, 0x37, 0x02, + 0x45, 0x02, 0x44, 0x02, 0x50, 0x02, 0x51, 0x02, 0x58, 0x02, 0x58, 0x02, + 0x62, 0x02, 0x63, 0x02, 0x67, 0x02, 0x66, 0x02, 0x6e, 0x02, 0x6e, 0x02, + 0x73, 0x02, 0x72, 0x02, 0x74, 0x02, 0x74, 0x02, 0x77, 0x02, 0x75, 0x02, + 0x75, 0x02, 0x77, 0x02, 0x76, 0x02, 0x73, 0x02, 0x72, 0x02, 0x74, 0x02, + 0x71, 0x02, 0x6f, 0x02, 0x6b, 0x02, 0x6c, 0x02, 0x67, 0x02, 0x67, 0x02, + 0x64, 0x02, 0x64, 0x02, 0x5c, 0x02, 0x5c, 0x02, 0x59, 0x02, 0x58, 0x02, + 0x50, 0x02, 0x50, 0x02, 0x4c, 0x02, 0x4b, 0x02, 0x45, 0x02, 0x47, 0x02, + 0x3f, 0x02, 0x3d, 0x02, 0x39, 0x02, 0x3a, 0x02, 0x32, 0x02, 0x33, 0x02, + 0x2e, 0x02, 0x2d, 0x02, 0x26, 0x02, 0x25, 0x02, 0x22, 0x02, 0x21, 0x02, + 0x1c, 0x02, 0x1c, 0x02, 0x17, 0x02, 0x16, 0x02, 0x11, 0x02, 0x10, 0x02, + 0x0d, 0x02, 0x0d, 0x02, 0x05, 0x02, 0x05, 0x02, 0x04, 0x02, 0x02, 0x02, + 0xf9, 0x01, 0xfa, 0x01, 0xf8, 0x01, 0xf7, 0x01, 0xee, 0x01, 0xee, 0x01, + 0xe6, 0x01, 0xe9, 0x01, 0xe3, 0x01, 0xe1, 0x01, 0xd6, 0x01, 0xd6, 0x01, + 0xcf, 0x01, 0xd2, 0x01, 0xc7, 0x01, 0xc4, 0x01, 0xbb, 0x01, 0xbd, 0x01, + 0xb0, 0x01, 0xad, 0x01, 0xa2, 0x01, 0xa2, 0x01, 0x95, 0x01, 0x96, 0x01, + 0x85, 0x01, 0x84, 0x01, 0x75, 0x01, 0x75, 0x01, 0x62, 0x01, 0x63, 0x01, + 0x51, 0x01, 0x50, 0x01, 0x3e, 0x01, 0x3d, 0x01, 0x28, 0x01, 0x27, 0x01, + 0x14, 0x01, 0x15, 0x01, 0xfb, 0x00, 0xfb, 0x00, 0xe4, 0x00, 0xe5, 0x00, + 0xcc, 0x00, 0xca, 0x00, 0xb0, 0x00, 0xb2, 0x00, 0x99, 0x00, 0x99, 0x00, + 0x7d, 0x00, 0x7c, 0x00, 0x63, 0x00, 0x65, 0x00, 0x49, 0x00, 0x49, 0x00, + 0x2f, 0x00, 0x30, 0x00, 0x14, 0x00, 0x14, 0x00, 0xf8, 0xff, 0xf9, 0xff, + 0xdf, 0xff, 0xe0, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xad, 0xff, 0xac, 0xff, + 0x96, 0xff, 0x96, 0xff, 0x7e, 0xff, 0x7d, 0xff, 0x69, 0xff, 0x69, 0xff, + 0x53, 0xff, 0x50, 0xff, 0x3e, 0xff, 0x3f, 0xff, 0x2b, 0xff, 0x2a, 0xff, + 0x17, 0xff, 0x17, 0xff, 0x07, 0xff, 0x05, 0xff, 0xf4, 0xfe, 0xf4, 0xfe, + 0xe5, 0xfe, 0xe5, 0xfe, 0xd7, 0xfe, 0xd6, 0xfe, 0xc8, 0xfe, 0xc9, 0xfe, + 0xbe, 0xfe, 0xbb, 0xfe, 0xaf, 0xfe, 0xb1, 0xfe, 0xa3, 0xfe, 0xa1, 0xfe, + 0x98, 0xfe, 0x99, 0xfe, 0x8e, 0xfe, 0x8d, 0xfe, 0x85, 0xfe, 0x85, 0xfe, + 0x79, 0xfe, 0x78, 0xfe, 0x71, 0xfe, 0x70, 0xfe, 0x64, 0xfe, 0x65, 0xfe, + 0x5c, 0xfe, 0x5b, 0xfe, 0x51, 0xfe, 0x52, 0xfe, 0x47, 0xfe, 0x46, 0xfe, + 0x3d, 0xfe, 0x3d, 0xfe, 0x32, 0xfe, 0x32, 0xfe, 0x28, 0xfe, 0x27, 0xfe, + 0x1e, 0xfe, 0x1e, 0xfe, 0x13, 0xfe, 0x11, 0xfe, 0x08, 0xfe, 0x08, 0xfe, + 0xfa, 0xfd, 0xf9, 0xfd, 0xf1, 0xfd, 0xf0, 0xfd, 0xe4, 0xfd, 0xe2, 0xfd, + 0xd8, 0xfd, 0xd9, 0xfd, 0xcd, 0xfd, 0xcc, 0xfd, 0xc2, 0xfd, 0xc3, 0xfd, + 0xb9, 0xfd, 0xb7, 0xfd, 0xac, 0xfd, 0xae, 0xfd, 0xa3, 0xfd, 0xa2, 0xfd, + 0x9a, 0xfd, 0x9c, 0xfd, 0x93, 0xfd, 0x91, 0xfd, 0x88, 0xfd, 0x89, 0xfd, + 0x84, 0xfd, 0x84, 0xfd, 0x7b, 0xfd, 0x7c, 0xfd, 0x7b, 0xfd, 0x7c, 0xfd, + 0x76, 0xfd, 0x77, 0xfd, 0x76, 0xfd, 0x77, 0xfd, 0x76, 0xfd, 0x75, 0xfd, + 0x74, 0xfd, 0x77, 0xfd, 0x7b, 0xfd, 0x79, 0xfd, 0x7b, 0xfd, 0x7c, 0xfd, + 0x84, 0xfd, 0x85, 0xfd, 0x8b, 0xfd, 0x8a, 0xfd, 0x94, 0xfd, 0x95, 0xfd, + 0x9e, 0xfd, 0x9c, 0xfd, 0xaa, 0xfd, 0xaa, 0xfd, 0xb6, 0xfd, 0xb7, 0xfd, + 0xc4, 0xfd, 0xc4, 0xfd, 0xd2, 0xfd, 0xd2, 0xfd, 0xe3, 0xfd, 0xe3, 0xfd, + 0xf2, 0xfd, 0xf3, 0xfd, 0x07, 0xfe, 0x04, 0xfe, 0x14, 0xfe, 0x17, 0xfe, + 0x29, 0xfe, 0x28, 0xfe, 0x3b, 0xfe, 0x3c, 0xfe, 0x4d, 0xfe, 0x4c, 0xfe, + 0x62, 0xfe, 0x62, 0xfe, 0x75, 0xfe, 0x75, 0xfe, 0x86, 0xfe, 0x85, 0xfe, + 0x99, 0xfe, 0x9b, 0xfe, 0xab, 0xfe, 0xab, 0xfe, 0xbe, 0xfe, 0xbe, 0xfe, + 0xd0, 0xfe, 0xd0, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xf1, 0xfe, 0xf2, 0xfe, + 0x02, 0xff, 0x01, 0xff, 0x10, 0xff, 0x11, 0xff, 0x23, 0xff, 0x20, 0xff, + 0x2d, 0xff, 0x30, 0xff, 0x40, 0xff, 0x3f, 0xff, 0x4b, 0xff, 0x4c, 0xff, + 0x5b, 0xff, 0x5b, 0xff, 0x6a, 0xff, 0x69, 0xff, 0x77, 0xff, 0x77, 0xff, + 0x87, 0xff, 0x87, 0xff, 0x93, 0xff, 0x93, 0xff, 0xa2, 0xff, 0xa3, 0xff, + 0xb2, 0xff, 0xb2, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xd2, 0xff, 0xd2, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0x04, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x13, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x3c, 0x00, 0x3d, 0x00, + 0x53, 0x00, 0x52, 0x00, 0x67, 0x00, 0x66, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0x92, 0x00, 0x90, 0x00, 0xa6, 0x00, 0xa9, 0x00, 0xc0, 0x00, 0xbe, 0x00, + 0xd7, 0x00, 0xd8, 0x00, 0xed, 0x00, 0xee, 0x00, 0x07, 0x01, 0x04, 0x01, + 0x1c, 0x01, 0x1f, 0x01, 0x36, 0x01, 0x34, 0x01, 0x4c, 0x01, 0x4c, 0x01, + 0x63, 0x01, 0x65, 0x01, 0x7a, 0x01, 0x78, 0x01, 0x8f, 0x01, 0x91, 0x01, + 0xa4, 0x01, 0xa3, 0x01, 0xb7, 0x01, 0xb9, 0x01, 0xcb, 0x01, 0xcb, 0x01, + 0xdd, 0x01, 0xdb, 0x01, 0xec, 0x01, 0xec, 0x01, 0xfe, 0x01, 0xfe, 0x01, + 0x0a, 0x02, 0x08, 0x02, 0x16, 0x02, 0x18, 0x02, 0x23, 0x02, 0x22, 0x02, + 0x2c, 0x02, 0x2d, 0x02, 0x36, 0x02, 0x35, 0x02, 0x3c, 0x02, 0x3d, 0x02, + 0x43, 0x02, 0x42, 0x02, 0x48, 0x02, 0x49, 0x02, 0x4b, 0x02, 0x4c, 0x02, + 0x4f, 0x02, 0x4e, 0x02, 0x4f, 0x02, 0x51, 0x02, 0x4f, 0x02, 0x4f, 0x02, + 0x4f, 0x02, 0x50, 0x02, 0x4c, 0x02, 0x4d, 0x02, 0x4d, 0x02, 0x4d, 0x02, + 0x49, 0x02, 0x4a, 0x02, 0x49, 0x02, 0x4a, 0x02, 0x43, 0x02, 0x44, 0x02, + 0x41, 0x02, 0x41, 0x02, 0x3d, 0x02, 0x3d, 0x02, 0x3a, 0x02, 0x3b, 0x02, + 0x36, 0x02, 0x37, 0x02, 0x36, 0x02, 0x35, 0x02, 0x2e, 0x02, 0x32, 0x02, + 0x2f, 0x02, 0x2f, 0x02, 0x28, 0x02, 0x29, 0x02, 0x28, 0x02, 0x27, 0x02, + 0x25, 0x02, 0x26, 0x02, 0x20, 0x02, 0x21, 0x02, 0x1f, 0x02, 0x20, 0x02, + 0x1b, 0x02, 0x1c, 0x02, 0x18, 0x02, 0x1b, 0x02, 0x17, 0x02, 0x16, 0x02, + 0x12, 0x02, 0x14, 0x02, 0x0f, 0x02, 0x0e, 0x02, 0x0b, 0x02, 0x0c, 0x02, + 0x07, 0x02, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfa, 0x01, 0xfb, 0x01, + 0xf5, 0x01, 0xf3, 0x01, 0xee, 0x01, 0xef, 0x01, 0xe2, 0x01, 0xe3, 0x01, + 0xdb, 0x01, 0xda, 0x01, 0xcf, 0x01, 0xce, 0x01, 0xc4, 0x01, 0xc4, 0x01, + 0xb5, 0x01, 0xb6, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0x96, 0x01, 0x96, 0x01, + 0x85, 0x01, 0x86, 0x01, 0x74, 0x01, 0x73, 0x01, 0x61, 0x01, 0x61, 0x01, + 0x4c, 0x01, 0x4b, 0x01, 0x37, 0x01, 0x38, 0x01, 0x21, 0x01, 0x1e, 0x01, + 0x0a, 0x01, 0x0a, 0x01, 0xf1, 0x00, 0xf0, 0x00, 0xdb, 0x00, 0xda, 0x00, + 0xc1, 0x00, 0xc0, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0x8f, 0x00, 0x8f, 0x00, + 0x75, 0x00, 0x73, 0x00, 0x5b, 0x00, 0x5d, 0x00, 0x43, 0x00, 0x41, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x12, 0x00, 0x11, 0x00, 0xf8, 0xff, 0xf8, 0xff, + 0xe0, 0xff, 0xe1, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xb2, 0xff, 0xb3, 0xff, + 0xa0, 0xff, 0x9f, 0xff, 0x8a, 0xff, 0x8b, 0xff, 0x77, 0xff, 0x77, 0xff, + 0x66, 0xff, 0x64, 0xff, 0x53, 0xff, 0x54, 0xff, 0x44, 0xff, 0x42, 0xff, + 0x33, 0xff, 0x33, 0xff, 0x23, 0xff, 0x23, 0xff, 0x15, 0xff, 0x14, 0xff, + 0x07, 0xff, 0x07, 0xff, 0xfb, 0xfe, 0xfb, 0xfe, 0xeb, 0xfe, 0xeb, 0xfe, + 0xe2, 0xfe, 0xe3, 0xfe, 0xd5, 0xfe, 0xd5, 0xfe, 0xcb, 0xfe, 0xca, 0xfe, + 0xbd, 0xfe, 0xc0, 0xfe, 0xb4, 0xfe, 0xb2, 0xfe, 0xa9, 0xfe, 0xaa, 0xfe, + 0x9d, 0xfe, 0x9c, 0xfe, 0x92, 0xfe, 0x91, 0xfe, 0x84, 0xfe, 0x85, 0xfe, + 0x7b, 0xfe, 0x77, 0xfe, 0x6c, 0xfe, 0x6e, 0xfe, 0x60, 0xfe, 0x5f, 0xfe, + 0x56, 0xfe, 0x55, 0xfe, 0x46, 0xfe, 0x47, 0xfe, 0x3a, 0xfe, 0x39, 0xfe, + 0x2d, 0xfe, 0x2c, 0xfe, 0x1c, 0xfe, 0x1e, 0xfe, 0x13, 0xfe, 0x12, 0xfe, + 0x02, 0xfe, 0x04, 0xfe, 0xf6, 0xfd, 0xf5, 0xfd, 0xea, 0xfd, 0xec, 0xfd, + 0xda, 0xfd, 0xdb, 0xfd, 0xcf, 0xfd, 0xd0, 0xfd, 0xc3, 0xfd, 0xc4, 0xfd, + 0xb7, 0xfd, 0xb7, 0xfd, 0xad, 0xfd, 0xae, 0xfd, 0xa6, 0xfd, 0xa5, 0xfd, + 0x99, 0xfd, 0x9c, 0xfd, 0x94, 0xfd, 0x94, 0xfd, 0x8f, 0xfd, 0x90, 0xfd, + 0x87, 0xfd, 0x87, 0xfd, 0x87, 0xfd, 0x87, 0xfd, 0x7f, 0xfd, 0x81, 0xfd, + 0x83, 0xfd, 0x81, 0xfd, 0x81, 0xfd, 0x83, 0xfd, 0x82, 0xfd, 0x82, 0xfd, + 0x88, 0xfd, 0x88, 0xfd, 0x8a, 0xfd, 0x8c, 0xfd, 0x93, 0xfd, 0x92, 0xfd, + 0x99, 0xfd, 0x99, 0xfd, 0xa1, 0xfd, 0xa1, 0xfd, 0xad, 0xfd, 0xab, 0xfd, + 0xb4, 0xfd, 0xb8, 0xfd, 0xc5, 0xfd, 0xc3, 0xfd, 0xcf, 0xfd, 0xd0, 0xfd, + 0xdf, 0xfd, 0xe0, 0xfd, 0xec, 0xfd, 0xec, 0xfd, 0xfb, 0xfd, 0xfc, 0xfd, + 0x0b, 0xfe, 0x0b, 0xfe, 0x1d, 0xfe, 0x1b, 0xfe, 0x2b, 0xfe, 0x2e, 0xfe, + 0x3c, 0xfe, 0x3b, 0xfe, 0x4e, 0xfe, 0x4e, 0xfe, 0x5d, 0xfe, 0x5e, 0xfe, + 0x6f, 0xfe, 0x6d, 0xfe, 0x7c, 0xfe, 0x7f, 0xfe, 0x90, 0xfe, 0x8d, 0xfe, + 0x9b, 0xfe, 0x9f, 0xfe, 0xad, 0xfe, 0xab, 0xfe, 0xbb, 0xfe, 0xbd, 0xfe, + 0xca, 0xfe, 0xca, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, 0xe7, 0xfe, 0xe8, 0xfe, + 0xf1, 0xfe, 0xf2, 0xfe, 0x02, 0xff, 0x03, 0xff, 0x0c, 0xff, 0x0d, 0xff, + 0x1b, 0xff, 0x1b, 0xff, 0x27, 0xff, 0x28, 0xff, 0x32, 0xff, 0x34, 0xff, + 0x43, 0xff, 0x44, 0xff, 0x4e, 0xff, 0x4d, 0xff, 0x5e, 0xff, 0x60, 0xff, + 0x6a, 0xff, 0x6b, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x89, 0xff, 0x8b, 0xff, + 0x99, 0xff, 0x97, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0xbb, 0xff, 0xbb, 0xff, + 0xcd, 0xff, 0xcd, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0x06, 0x00, 0x08, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0x31, 0x00, 0x34, 0x00, + 0x48, 0x00, 0x46, 0x00, 0x60, 0x00, 0x61, 0x00, 0x76, 0x00, 0x76, 0x00, + 0x8d, 0x00, 0x8d, 0x00, 0xa5, 0x00, 0xa4, 0x00, 0xbe, 0x00, 0xbd, 0x00, + 0xd4, 0x00, 0xd4, 0x00, 0xed, 0x00, 0xed, 0x00, 0x05, 0x01, 0x05, 0x01, + 0x1d, 0x01, 0x1c, 0x01, 0x34, 0x01, 0x33, 0x01, 0x49, 0x01, 0x4a, 0x01, + 0x5f, 0x01, 0x5f, 0x01, 0x73, 0x01, 0x74, 0x01, 0x87, 0x01, 0x87, 0x01, + 0x9a, 0x01, 0x9b, 0x01, 0xad, 0x01, 0xac, 0x01, 0xbc, 0x01, 0xbe, 0x01, + 0xcd, 0x01, 0xcc, 0x01, 0xdb, 0x01, 0xdc, 0x01, 0xe7, 0x01, 0xe8, 0x01, + 0xf3, 0x01, 0xf4, 0x01, 0xff, 0x01, 0xff, 0x01, 0x05, 0x02, 0x06, 0x02, + 0x11, 0x02, 0x0f, 0x02, 0x13, 0x02, 0x16, 0x02, 0x1c, 0x02, 0x1b, 0x02, + 0x1f, 0x02, 0x20, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x24, 0x02, + 0x27, 0x02, 0x2a, 0x02, 0x2b, 0x02, 0x29, 0x02, 0x2a, 0x02, 0x2b, 0x02, + 0x2b, 0x02, 0x2b, 0x02, 0x2a, 0x02, 0x2c, 0x02, 0x2b, 0x02, 0x2c, 0x02, + 0x28, 0x02, 0x2b, 0x02, 0x2b, 0x02, 0x2b, 0x02, 0x28, 0x02, 0x2a, 0x02, + 0x29, 0x02, 0x29, 0x02, 0x28, 0x02, 0x2b, 0x02, 0x26, 0x02, 0x27, 0x02, + 0x27, 0x02, 0x29, 0x02, 0x26, 0x02, 0x25, 0x02, 0x26, 0x02, 0x28, 0x02, + 0x25, 0x02, 0x27, 0x02, 0x26, 0x02, 0x24, 0x02, 0x25, 0x02, 0x28, 0x02, + 0x26, 0x02, 0x23, 0x02, 0x22, 0x02, 0x27, 0x02, 0x25, 0x02, 0x25, 0x02, + 0x23, 0x02, 0x23, 0x02, 0x22, 0x02, 0x22, 0x02, 0x20, 0x02, 0x22, 0x02, + 0x1d, 0x02, 0x1d, 0x02, 0x1a, 0x02, 0x1b, 0x02, 0x14, 0x02, 0x15, 0x02, + 0x11, 0x02, 0x12, 0x02, 0x0c, 0x02, 0x0d, 0x02, 0x04, 0x02, 0x05, 0x02, + 0xfe, 0x01, 0xff, 0x01, 0xf1, 0x01, 0xf4, 0x01, 0xeb, 0x01, 0xe9, 0x01, + 0xdd, 0x01, 0xdf, 0x01, 0xd3, 0x01, 0xd2, 0x01, 0xc3, 0x01, 0xc4, 0x01, + 0xb5, 0x01, 0xb5, 0x01, 0xa4, 0x01, 0xa5, 0x01, 0x92, 0x01, 0x93, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x6c, 0x01, 0x6f, 0x01, 0x57, 0x01, 0x55, 0x01, + 0x43, 0x01, 0x45, 0x01, 0x2e, 0x01, 0x2d, 0x01, 0x16, 0x01, 0x17, 0x01, + 0xfd, 0x00, 0xff, 0x00, 0xe9, 0x00, 0xe8, 0x00, 0xce, 0x00, 0xcf, 0x00, + 0xb9, 0x00, 0xb9, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0x87, 0x00, 0x87, 0x00, + 0x6f, 0x00, 0x70, 0x00, 0x57, 0x00, 0x57, 0x00, 0x41, 0x00, 0x42, 0x00, + 0x29, 0x00, 0x2a, 0x00, 0x14, 0x00, 0x15, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xeb, 0xff, 0xea, 0xff, 0xd8, 0xff, 0xd9, 0xff, 0xc4, 0xff, 0xc3, 0xff, + 0xb3, 0xff, 0xb3, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x91, 0xff, 0x91, 0xff, + 0x80, 0xff, 0x80, 0xff, 0x6f, 0xff, 0x70, 0xff, 0x64, 0xff, 0x64, 0xff, + 0x50, 0xff, 0x51, 0xff, 0x4a, 0xff, 0x48, 0xff, 0x36, 0xff, 0x37, 0xff, + 0x2c, 0xff, 0x2e, 0xff, 0x20, 0xff, 0x1f, 0xff, 0x0f, 0xff, 0x12, 0xff, + 0x09, 0xff, 0x08, 0xff, 0xf7, 0xfe, 0xf8, 0xfe, 0xef, 0xfe, 0xee, 0xfe, + 0xde, 0xfe, 0xe0, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, + 0xb7, 0xfe, 0xb9, 0xfe, 0xab, 0xfe, 0xab, 0xfe, 0x9d, 0xfe, 0x9f, 0xfe, + 0x8f, 0xfe, 0x8e, 0xfe, 0x7f, 0xfe, 0x83, 0xfe, 0x72, 0xfe, 0x6e, 0xfe, + 0x63, 0xfe, 0x64, 0xfe, 0x53, 0xfe, 0x51, 0xfe, 0x43, 0xfe, 0x44, 0xfe, + 0x33, 0xfe, 0x35, 0xfe, 0x25, 0xfe, 0x26, 0xfe, 0x17, 0xfe, 0x17, 0xfe, + 0x07, 0xfe, 0x0a, 0xfe, 0xf9, 0xfd, 0xfa, 0xfd, 0xec, 0xfd, 0xed, 0xfd, + 0xdd, 0xfd, 0xdd, 0xfd, 0xd1, 0xfd, 0xd4, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, + 0xbb, 0xfd, 0xbd, 0xfd, 0xb0, 0xfd, 0xb0, 0xfd, 0xaa, 0xfd, 0xab, 0xfd, + 0xa0, 0xfd, 0xa1, 0xfd, 0x9d, 0xfd, 0x9e, 0xfd, 0x95, 0xfd, 0x99, 0xfd, + 0x96, 0xfd, 0x94, 0xfd, 0x90, 0xfd, 0x95, 0xfd, 0x91, 0xfd, 0x91, 0xfd, + 0x92, 0xfd, 0x94, 0xfd, 0x94, 0xfd, 0x97, 0xfd, 0x97, 0xfd, 0x97, 0xfd, + 0x9f, 0xfd, 0xa1, 0xfd, 0xa1, 0xfd, 0xa4, 0xfd, 0xac, 0xfd, 0xac, 0xfd, + 0xb3, 0xfd, 0xb5, 0xfd, 0xbc, 0xfd, 0xbd, 0xfd, 0xc8, 0xfd, 0xc9, 0xfd, + 0xd0, 0xfd, 0xd3, 0xfd, 0xde, 0xfd, 0xdf, 0xfd, 0xea, 0xfd, 0xec, 0xfd, + 0xf6, 0xfd, 0xf8, 0xfd, 0x07, 0xfe, 0x08, 0xfe, 0x10, 0xfe, 0x11, 0xfe, + 0x20, 0xfe, 0x22, 0xfe, 0x2e, 0xfe, 0x2e, 0xfe, 0x3b, 0xfe, 0x3d, 0xfe, + 0x4a, 0xfe, 0x4a, 0xfe, 0x56, 0xfe, 0x58, 0xfe, 0x66, 0xfe, 0x67, 0xfe, + 0x72, 0xfe, 0x73, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x8c, 0xfe, 0x8e, 0xfe, + 0x99, 0xfe, 0x98, 0xfe, 0xa4, 0xfe, 0xa7, 0xfe, 0xb0, 0xfe, 0xaf, 0xfe, + 0xbb, 0xfe, 0xbc, 0xfe, 0xc7, 0xfe, 0xc9, 0xfe, 0xd4, 0xfe, 0xd2, 0xfe, + 0xde, 0xfe, 0xe0, 0xfe, 0xea, 0xfe, 0xea, 0xfe, 0xf6, 0xfe, 0xf8, 0xfe, + 0x03, 0xff, 0x03, 0xff, 0x0e, 0xff, 0x0f, 0xff, 0x1d, 0xff, 0x20, 0xff, + 0x29, 0xff, 0x29, 0xff, 0x38, 0xff, 0x39, 0xff, 0x47, 0xff, 0x46, 0xff, + 0x54, 0xff, 0x57, 0xff, 0x67, 0xff, 0x67, 0xff, 0x75, 0xff, 0x76, 0xff, + 0x89, 0xff, 0x88, 0xff, 0x97, 0xff, 0x9a, 0xff, 0xae, 0xff, 0xad, 0xff, + 0xc0, 0xff, 0xc1, 0xff, 0xd3, 0xff, 0xd6, 0xff, 0xeb, 0xff, 0xec, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0x18, 0x00, 0x1b, 0x00, 0x2e, 0x00, 0x2e, 0x00, + 0x44, 0x00, 0x45, 0x00, 0x5d, 0x00, 0x5f, 0x00, 0x72, 0x00, 0x72, 0x00, + 0x8e, 0x00, 0x8e, 0x00, 0xa1, 0x00, 0xa5, 0x00, 0xbd, 0x00, 0xbd, 0x00, + 0xd4, 0x00, 0xd6, 0x00, 0xea, 0x00, 0xeb, 0x00, 0x03, 0x01, 0x04, 0x01, + 0x15, 0x01, 0x1a, 0x01, 0x2e, 0x01, 0x2d, 0x01, 0x42, 0x01, 0x44, 0x01, + 0x55, 0x01, 0x55, 0x01, 0x6a, 0x01, 0x6a, 0x01, 0x78, 0x01, 0x79, 0x01, + 0x8d, 0x01, 0x8c, 0x01, 0x97, 0x01, 0x99, 0x01, 0xa8, 0x01, 0xa7, 0x01, + 0xb4, 0x01, 0xb6, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xcb, 0x01, 0xcd, 0x01, + 0xd6, 0x01, 0xd3, 0x01, 0xdc, 0x01, 0xdf, 0x01, 0xe4, 0x01, 0xe3, 0x01, + 0xea, 0x01, 0xeb, 0x01, 0xf0, 0x01, 0xf1, 0x01, 0xf5, 0x01, 0xf6, 0x01, + 0xfb, 0x01, 0xfb, 0x01, 0xfd, 0x01, 0xfe, 0x01, 0x01, 0x02, 0x03, 0x02, + 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x05, 0x02, 0x09, 0x02, 0x09, 0x02, + 0x0a, 0x02, 0x0a, 0x02, 0x0c, 0x02, 0x0f, 0x02, 0x0f, 0x02, 0x0d, 0x02, + 0x0e, 0x02, 0x11, 0x02, 0x12, 0x02, 0x12, 0x02, 0x12, 0x02, 0x14, 0x02, + 0x17, 0x02, 0x18, 0x02, 0x17, 0x02, 0x18, 0x02, 0x1a, 0x02, 0x1b, 0x02, + 0x1c, 0x02, 0x1d, 0x02, 0x1f, 0x02, 0x1f, 0x02, 0x20, 0x02, 0x20, 0x02, + 0x23, 0x02, 0x24, 0x02, 0x24, 0x02, 0x25, 0x02, 0x28, 0x02, 0x28, 0x02, + 0x28, 0x02, 0x29, 0x02, 0x27, 0x02, 0x28, 0x02, 0x2a, 0x02, 0x2b, 0x02, + 0x26, 0x02, 0x26, 0x02, 0x27, 0x02, 0x29, 0x02, 0x26, 0x02, 0x27, 0x02, + 0x24, 0x02, 0x23, 0x02, 0x20, 0x02, 0x21, 0x02, 0x19, 0x02, 0x1b, 0x02, + 0x15, 0x02, 0x15, 0x02, 0x0d, 0x02, 0x0d, 0x02, 0x07, 0x02, 0x08, 0x02, + 0xfc, 0x01, 0xfd, 0x01, 0xf1, 0x01, 0xf0, 0x01, 0xe6, 0x01, 0xe7, 0x01, + 0xd8, 0x01, 0xd8, 0x01, 0xcb, 0x01, 0xcc, 0x01, 0xba, 0x01, 0xbb, 0x01, + 0xa9, 0x01, 0xaa, 0x01, 0x99, 0x01, 0x99, 0x01, 0x85, 0x01, 0x86, 0x01, + 0x73, 0x01, 0x75, 0x01, 0x5e, 0x01, 0x5e, 0x01, 0x4a, 0x01, 0x4c, 0x01, + 0x33, 0x01, 0x33, 0x01, 0x20, 0x01, 0x20, 0x01, 0x04, 0x01, 0x06, 0x01, + 0xf5, 0x00, 0xf3, 0x00, 0xd9, 0x00, 0xda, 0x00, 0xc3, 0x00, 0xc6, 0x00, + 0xb0, 0x00, 0xae, 0x00, 0x96, 0x00, 0x98, 0x00, 0x84, 0x00, 0x84, 0x00, + 0x6d, 0x00, 0x6c, 0x00, 0x59, 0x00, 0x5c, 0x00, 0x45, 0x00, 0x42, 0x00, + 0x31, 0x00, 0x33, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0xf9, 0xff, 0xfc, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xd8, 0xff, 0xda, 0xff, + 0xc8, 0xff, 0xcc, 0xff, 0xba, 0xff, 0xb9, 0xff, 0xab, 0xff, 0xac, 0xff, + 0x9b, 0xff, 0x9b, 0xff, 0x90, 0xff, 0x92, 0xff, 0x7f, 0xff, 0x81, 0xff, + 0x77, 0xff, 0x77, 0xff, 0x67, 0xff, 0x69, 0xff, 0x5a, 0xff, 0x59, 0xff, + 0x4d, 0xff, 0x50, 0xff, 0x3d, 0xff, 0x3f, 0xff, 0x34, 0xff, 0x35, 0xff, + 0x24, 0xff, 0x25, 0xff, 0x18, 0xff, 0x18, 0xff, 0x08, 0xff, 0x0a, 0xff, + 0xfa, 0xfe, 0xfa, 0xfe, 0xe9, 0xfe, 0xec, 0xfe, 0xdb, 0xfe, 0xda, 0xfe, + 0xcc, 0xfe, 0xce, 0xfe, 0xbc, 0xfe, 0xbb, 0xfe, 0xaa, 0xfe, 0xad, 0xfe, + 0x9c, 0xfe, 0x9c, 0xfe, 0x88, 0xfe, 0x89, 0xfe, 0x7a, 0xfe, 0x7c, 0xfe, + 0x69, 0xfe, 0x6a, 0xfe, 0x56, 0xfe, 0x57, 0xfe, 0x47, 0xfe, 0x48, 0xfe, + 0x35, 0xfe, 0x37, 0xfe, 0x28, 0xfe, 0x28, 0xfe, 0x16, 0xfe, 0x18, 0xfe, + 0x09, 0xfe, 0x08, 0xfe, 0xfb, 0xfd, 0x00, 0xfe, 0xec, 0xfd, 0xeb, 0xfd, + 0xe1, 0xfd, 0xe3, 0xfd, 0xd5, 0xfd, 0xd5, 0xfd, 0xca, 0xfd, 0xcb, 0xfd, + 0xc2, 0xfd, 0xc2, 0xfd, 0xb7, 0xfd, 0xb9, 0xfd, 0xb5, 0xfd, 0xb7, 0xfd, + 0xab, 0xfd, 0xac, 0xfd, 0xaa, 0xfd, 0xac, 0xfd, 0xa6, 0xfd, 0xa6, 0xfd, + 0xa4, 0xfd, 0xa7, 0xfd, 0xa7, 0xfd, 0xa6, 0xfd, 0xa6, 0xfd, 0xa7, 0xfd, + 0xa9, 0xfd, 0xab, 0xfd, 0xae, 0xfd, 0xad, 0xfd, 0xb0, 0xfd, 0xb4, 0xfd, + 0xb9, 0xfd, 0xb9, 0xfd, 0xbe, 0xfd, 0xc1, 0xfd, 0xc7, 0xfd, 0xc7, 0xfd, + 0xd0, 0xfd, 0xd4, 0xfd, 0xda, 0xfd, 0xd9, 0xfd, 0xe2, 0xfd, 0xe6, 0xfd, + 0xee, 0xfd, 0xee, 0xfd, 0xf8, 0xfd, 0xfb, 0xfd, 0x04, 0xfe, 0x06, 0xfe, + 0x10, 0xfe, 0x10, 0xfe, 0x19, 0xfe, 0x1c, 0xfe, 0x26, 0xfe, 0x26, 0xfe, + 0x30, 0xfe, 0x32, 0xfe, 0x3b, 0xfe, 0x3b, 0xfe, 0x47, 0xfe, 0x48, 0xfe, + 0x51, 0xfe, 0x52, 0xfe, 0x5c, 0xfe, 0x5e, 0xfe, 0x68, 0xfe, 0x67, 0xfe, + 0x6f, 0xfe, 0x72, 0xfe, 0x7b, 0xfe, 0x7b, 0xfe, 0x84, 0xfe, 0x88, 0xfe, + 0x8d, 0xfe, 0x8f, 0xfe, 0x9a, 0xfe, 0x9a, 0xfe, 0xa0, 0xfe, 0xa2, 0xfe, + 0xad, 0xfe, 0xac, 0xfe, 0xb5, 0xfe, 0xb9, 0xfe, 0xc0, 0xfe, 0xc0, 0xfe, + 0xcc, 0xfe, 0xce, 0xfe, 0xd5, 0xfe, 0xd5, 0xfe, 0xe1, 0xfe, 0xe1, 0xfe, + 0xec, 0xfe, 0xee, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, 0x07, 0xff, 0x0a, 0xff, + 0x15, 0xff, 0x14, 0xff, 0x24, 0xff, 0x27, 0xff, 0x33, 0xff, 0x35, 0xff, + 0x47, 0xff, 0x47, 0xff, 0x56, 0xff, 0x58, 0xff, 0x68, 0xff, 0x6a, 0xff, + 0x7c, 0xff, 0x7c, 0xff, 0x91, 0xff, 0x95, 0xff, 0xa6, 0xff, 0xa5, 0xff, + 0xba, 0xff, 0xbe, 0xff, 0xd3, 0xff, 0xd2, 0xff, 0xe6, 0xff, 0xe9, 0xff, + 0x02, 0x00, 0x02, 0x00, 0x16, 0x00, 0x17, 0x00, 0x2f, 0x00, 0x31, 0x00, + 0x46, 0x00, 0x47, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x76, 0x00, 0x77, 0x00, + 0x8f, 0x00, 0x8f, 0x00, 0xa6, 0x00, 0xa6, 0x00, 0xbb, 0x00, 0xbc, 0x00, + 0xd6, 0x00, 0xd5, 0x00, 0xe7, 0x00, 0xe9, 0x00, 0xfe, 0x00, 0xff, 0x00, + 0x11, 0x01, 0x11, 0x01, 0x23, 0x01, 0x25, 0x01, 0x38, 0x01, 0x37, 0x01, + 0x47, 0x01, 0x48, 0x01, 0x59, 0x01, 0x58, 0x01, 0x65, 0x01, 0x66, 0x01, + 0x75, 0x01, 0x76, 0x01, 0x81, 0x01, 0x82, 0x01, 0x8c, 0x01, 0x8d, 0x01, + 0x99, 0x01, 0x98, 0x01, 0xa1, 0x01, 0xa3, 0x01, 0xaa, 0x01, 0xab, 0x01, + 0xb3, 0x01, 0xb2, 0x01, 0xb9, 0x01, 0xbc, 0x01, 0xc1, 0x01, 0xc2, 0x01, + 0xc6, 0x01, 0xc6, 0x01, 0xcd, 0x01, 0xcd, 0x01, 0xd1, 0x01, 0xd1, 0x01, + 0xd5, 0x01, 0xd7, 0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdf, 0x01, 0xdf, 0x01, + 0xe3, 0x01, 0xe5, 0x01, 0xe7, 0x01, 0xe6, 0x01, 0xed, 0x01, 0xee, 0x01, + 0xf0, 0x01, 0xf1, 0x01, 0xf5, 0x01, 0xf4, 0x01, 0xfa, 0x01, 0xfc, 0x01, + 0xfd, 0x01, 0xfd, 0x01, 0x02, 0x02, 0x03, 0x02, 0x07, 0x02, 0x08, 0x02, + 0x0b, 0x02, 0x0b, 0x02, 0x11, 0x02, 0x11, 0x02, 0x13, 0x02, 0x15, 0x02, + 0x19, 0x02, 0x19, 0x02, 0x1e, 0x02, 0x20, 0x02, 0x20, 0x02, 0x21, 0x02, + 0x26, 0x02, 0x26, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2b, 0x02, 0x2a, 0x02, + 0x2f, 0x02, 0x2f, 0x02, 0x2b, 0x02, 0x2d, 0x02, 0x31, 0x02, 0x30, 0x02, + 0x2d, 0x02, 0x2e, 0x02, 0x2c, 0x02, 0x2c, 0x02, 0x2c, 0x02, 0x2c, 0x02, + 0x23, 0x02, 0x25, 0x02, 0x25, 0x02, 0x24, 0x02, 0x1b, 0x02, 0x1c, 0x02, + 0x14, 0x02, 0x16, 0x02, 0x0c, 0x02, 0x0c, 0x02, 0x00, 0x02, 0x00, 0x02, + 0xf7, 0x01, 0xf7, 0x01, 0xe9, 0x01, 0xec, 0x01, 0xdd, 0x01, 0xdd, 0x01, + 0xcd, 0x01, 0xcd, 0x01, 0xbe, 0x01, 0xc0, 0x01, 0xad, 0x01, 0xac, 0x01, + 0x9b, 0x01, 0x9d, 0x01, 0x89, 0x01, 0x8a, 0x01, 0x76, 0x01, 0x76, 0x01, + 0x62, 0x01, 0x64, 0x01, 0x4f, 0x01, 0x50, 0x01, 0x3a, 0x01, 0x3c, 0x01, + 0x26, 0x01, 0x26, 0x01, 0x11, 0x01, 0x12, 0x01, 0xfc, 0x00, 0xfd, 0x00, + 0xe6, 0x00, 0xe9, 0x00, 0xd5, 0x00, 0xd4, 0x00, 0xbe, 0x00, 0xc1, 0x00, + 0xab, 0x00, 0xab, 0x00, 0x98, 0x00, 0x99, 0x00, 0x85, 0x00, 0x85, 0x00, + 0x74, 0x00, 0x76, 0x00, 0x5f, 0x00, 0x61, 0x00, 0x50, 0x00, 0x51, 0x00, + 0x3d, 0x00, 0x3f, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x20, 0x00, 0x21, 0x00, + 0x0e, 0x00, 0x10, 0x00, 0x02, 0x00, 0x04, 0x00, 0xf2, 0xff, 0xf3, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xca, 0xff, 0xcb, 0xff, + 0xbd, 0xff, 0xbd, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xa1, 0xff, 0xa3, 0xff, + 0x96, 0xff, 0x95, 0xff, 0x86, 0xff, 0x88, 0xff, 0x7a, 0xff, 0x79, 0xff, + 0x6d, 0xff, 0x6c, 0xff, 0x58, 0xff, 0x5c, 0xff, 0x52, 0xff, 0x50, 0xff, + 0x3b, 0xff, 0x3e, 0xff, 0x30, 0xff, 0x2e, 0xff, 0x1d, 0xff, 0x20, 0xff, + 0x0d, 0xff, 0x0d, 0xff, 0xfc, 0xfe, 0xfe, 0xfe, 0xe8, 0xfe, 0xe9, 0xfe, + 0xda, 0xfe, 0xdb, 0xfe, 0xc5, 0xfe, 0xc8, 0xfe, 0xb4, 0xfe, 0xb4, 0xfe, + 0xa3, 0xfe, 0xa5, 0xfe, 0x90, 0xfe, 0x8f, 0xfe, 0x80, 0xfe, 0x81, 0xfe, + 0x6d, 0xfe, 0x6e, 0xfe, 0x5c, 0xfe, 0x5e, 0xfe, 0x4b, 0xfe, 0x4c, 0xfe, + 0x3a, 0xfe, 0x3b, 0xfe, 0x2e, 0xfe, 0x2e, 0xfe, 0x1b, 0xfe, 0x1c, 0xfe, + 0x0f, 0xfe, 0x0f, 0xfe, 0x00, 0xfe, 0x01, 0xfe, 0xf4, 0xfd, 0xf6, 0xfd, + 0xeb, 0xfd, 0xeb, 0xfd, 0xdf, 0xfd, 0xe0, 0xfd, 0xd7, 0xfd, 0xd8, 0xfd, + 0xd2, 0xfd, 0xd2, 0xfd, 0xca, 0xfd, 0xca, 0xfd, 0xc7, 0xfd, 0xc8, 0xfd, + 0xc2, 0xfd, 0xc3, 0xfd, 0xbf, 0xfd, 0xc0, 0xfd, 0xc1, 0xfd, 0xc3, 0xfd, + 0xbf, 0xfd, 0xbf, 0xfd, 0xc1, 0xfd, 0xc2, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, + 0xc7, 0xfd, 0xc7, 0xfd, 0xce, 0xfd, 0xce, 0xfd, 0xd0, 0xfd, 0xd1, 0xfd, + 0xd8, 0xfd, 0xd9, 0xfd, 0xde, 0xfd, 0xde, 0xfd, 0xe7, 0xfd, 0xe7, 0xfd, + 0xef, 0xfd, 0xed, 0xfd, 0xf6, 0xfd, 0xf7, 0xfd, 0xff, 0xfd, 0xff, 0xfd, + 0x06, 0xfe, 0x07, 0xfe, 0x0e, 0xfe, 0x0f, 0xfe, 0x1b, 0xfe, 0x19, 0xfe, + 0x20, 0xfe, 0x21, 0xfe, 0x29, 0xfe, 0x2b, 0xfe, 0x32, 0xfe, 0x31, 0xfe, + 0x38, 0xfe, 0x3a, 0xfe, 0x41, 0xfe, 0x44, 0xfe, 0x49, 0xfe, 0x4a, 0xfe, + 0x53, 0xfe, 0x55, 0xfe, 0x5a, 0xfe, 0x59, 0xfe, 0x62, 0xfe, 0x64, 0xfe, + 0x68, 0xfe, 0x68, 0xfe, 0x70, 0xfe, 0x73, 0xfe, 0x7b, 0xfe, 0x79, 0xfe, + 0x7e, 0xfe, 0x81, 0xfe, 0x8b, 0xfe, 0x89, 0xfe, 0x90, 0xfe, 0x91, 0xfe, + 0x9b, 0xfe, 0x9a, 0xfe, 0xa4, 0xfe, 0xa5, 0xfe, 0xad, 0xfe, 0xae, 0xfe, + 0xbc, 0xfe, 0xbc, 0xfe, 0xc3, 0xfe, 0xc6, 0xfe, 0xd2, 0xfe, 0xd0, 0xfe, + 0xde, 0xfe, 0xe1, 0xfe, 0xeb, 0xfe, 0xec, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, + 0x09, 0xff, 0x0c, 0xff, 0x1c, 0xff, 0x1b, 0xff, 0x2c, 0xff, 0x2e, 0xff, + 0x40, 0xff, 0x3f, 0xff, 0x51, 0xff, 0x53, 0xff, 0x68, 0xff, 0x67, 0xff, + 0x78, 0xff, 0x7c, 0xff, 0x91, 0xff, 0x90, 0xff, 0xa5, 0xff, 0xa6, 0xff, + 0xbd, 0xff, 0xbf, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xec, 0xff, 0xed, 0xff, + 0x02, 0x00, 0x02, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x33, 0x00, 0x31, 0x00, + 0x48, 0x00, 0x4a, 0x00, 0x5f, 0x00, 0x61, 0x00, 0x76, 0x00, 0x77, 0x00, + 0x8c, 0x00, 0x8e, 0x00, 0xa1, 0x00, 0xa0, 0x00, 0xb6, 0x00, 0xba, 0x00, + 0xcb, 0x00, 0xcb, 0x00, 0xde, 0x00, 0xdf, 0x00, 0xef, 0x00, 0xf1, 0x00, + 0x01, 0x01, 0x03, 0x01, 0x13, 0x01, 0x13, 0x01, 0x23, 0x01, 0x24, 0x01, + 0x31, 0x01, 0x31, 0x01, 0x3e, 0x01, 0x40, 0x01, 0x4b, 0x01, 0x4c, 0x01, + 0x58, 0x01, 0x56, 0x01, 0x60, 0x01, 0x64, 0x01, 0x6c, 0x01, 0x6a, 0x01, + 0x77, 0x01, 0x78, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x87, 0x01, 0x87, 0x01, + 0x8e, 0x01, 0x8f, 0x01, 0x96, 0x01, 0x95, 0x01, 0x9c, 0x01, 0x9d, 0x01, + 0xa4, 0x01, 0xa4, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xb2, 0x01, 0xb1, 0x01, + 0xb5, 0x01, 0xb6, 0x01, 0xbe, 0x01, 0xbc, 0x01, 0xc3, 0x01, 0xc4, 0x01, + 0xc9, 0x01, 0xc9, 0x01, 0xd0, 0x01, 0xd0, 0x01, 0xd5, 0x01, 0xd7, 0x01, + 0xdd, 0x01, 0xdd, 0x01, 0xe2, 0x01, 0xe4, 0x01, 0xec, 0x01, 0xec, 0x01, + 0xf0, 0x01, 0xf2, 0x01, 0xf9, 0x01, 0xfa, 0x01, 0x00, 0x02, 0x00, 0x02, + 0x05, 0x02, 0x05, 0x02, 0x0c, 0x02, 0x0d, 0x02, 0x12, 0x02, 0x13, 0x02, + 0x18, 0x02, 0x19, 0x02, 0x1e, 0x02, 0x1e, 0x02, 0x23, 0x02, 0x25, 0x02, + 0x26, 0x02, 0x26, 0x02, 0x29, 0x02, 0x2c, 0x02, 0x2e, 0x02, 0x2d, 0x02, + 0x2d, 0x02, 0x2e, 0x02, 0x2e, 0x02, 0x2f, 0x02, 0x2e, 0x02, 0x2d, 0x02, + 0x2b, 0x02, 0x2e, 0x02, 0x2a, 0x02, 0x2a, 0x02, 0x25, 0x02, 0x25, 0x02, + 0x1f, 0x02, 0x21, 0x02, 0x1b, 0x02, 0x1b, 0x02, 0x0f, 0x02, 0x11, 0x02, + 0x09, 0x02, 0x0a, 0x02, 0xfe, 0x01, 0xff, 0x01, 0xf2, 0x01, 0xf4, 0x01, + 0xe7, 0x01, 0xe8, 0x01, 0xd8, 0x01, 0xd9, 0x01, 0xcb, 0x01, 0xcd, 0x01, + 0xbb, 0x01, 0xbb, 0x01, 0xab, 0x01, 0xac, 0x01, 0x9b, 0x01, 0x9c, 0x01, + 0x89, 0x01, 0x8b, 0x01, 0x77, 0x01, 0x79, 0x01, 0x66, 0x01, 0x65, 0x01, + 0x53, 0x01, 0x54, 0x01, 0x3f, 0x01, 0x3f, 0x01, 0x2d, 0x01, 0x2e, 0x01, + 0x1a, 0x01, 0x1a, 0x01, 0x07, 0x01, 0x08, 0x01, 0xf6, 0x00, 0xf7, 0x00, + 0xe2, 0x00, 0xe2, 0x00, 0xd3, 0x00, 0xd3, 0x00, 0xbf, 0x00, 0xbf, 0x00, + 0xb1, 0x00, 0xb0, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0x8d, 0x00, 0x8e, 0x00, + 0x82, 0x00, 0x81, 0x00, 0x6d, 0x00, 0x70, 0x00, 0x63, 0x00, 0x62, 0x00, + 0x52, 0x00, 0x53, 0x00, 0x44, 0x00, 0x45, 0x00, 0x38, 0x00, 0x39, 0x00, + 0x27, 0x00, 0x29, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x0d, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x03, 0x00, 0xf5, 0xff, 0xf6, 0xff, 0xe5, 0xff, 0xe7, 0xff, + 0xda, 0xff, 0xdb, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xbd, 0xff, 0xbf, 0xff, + 0xb0, 0xff, 0xb0, 0xff, 0xa1, 0xff, 0xa2, 0xff, 0x90, 0xff, 0x91, 0xff, + 0x80, 0xff, 0x82, 0xff, 0x71, 0xff, 0x71, 0xff, 0x5c, 0xff, 0x5f, 0xff, + 0x50, 0xff, 0x4e, 0xff, 0x3b, 0xff, 0x3c, 0xff, 0x28, 0xff, 0x2a, 0xff, + 0x1a, 0xff, 0x1a, 0xff, 0x02, 0xff, 0x03, 0xff, 0xf4, 0xfe, 0xf5, 0xfe, + 0xdd, 0xfe, 0xdd, 0xfe, 0xca, 0xfe, 0xcc, 0xfe, 0xb8, 0xfe, 0xba, 0xfe, + 0xa4, 0xfe, 0xa6, 0xfe, 0x92, 0xfe, 0x93, 0xfe, 0x81, 0xfe, 0x81, 0xfe, + 0x6e, 0xfe, 0x71, 0xfe, 0x61, 0xfe, 0x60, 0xfe, 0x4d, 0xfe, 0x4f, 0xfe, + 0x3f, 0xfe, 0x42, 0xfe, 0x32, 0xfe, 0x30, 0xfe, 0x21, 0xfe, 0x25, 0xfe, + 0x19, 0xfe, 0x17, 0xfe, 0x09, 0xfe, 0x0c, 0xfe, 0x03, 0xfe, 0x02, 0xfe, + 0xf6, 0xfd, 0xf9, 0xfd, 0xf1, 0xfd, 0xf2, 0xfd, 0xe9, 0xfd, 0xec, 0xfd, + 0xe6, 0xfd, 0xe6, 0xfd, 0xe1, 0xfd, 0xe2, 0xfd, 0xdc, 0xfd, 0xdf, 0xfd, + 0xdd, 0xfd, 0xdd, 0xfd, 0xdb, 0xfd, 0xdb, 0xfd, 0xdc, 0xfd, 0xde, 0xfd, + 0xde, 0xfd, 0xdd, 0xfd, 0xe0, 0xfd, 0xe2, 0xfd, 0xe2, 0xfd, 0xe2, 0xfd, + 0xe7, 0xfd, 0xe8, 0xfd, 0xeb, 0xfd, 0xeb, 0xfd, 0xef, 0xfd, 0xf0, 0xfd, + 0xf7, 0xfd, 0xf6, 0xfd, 0xfa, 0xfd, 0xf9, 0xfd, 0x01, 0xfe, 0x03, 0xfe, + 0x06, 0xfe, 0x05, 0xfe, 0x0d, 0xfe, 0x0e, 0xfe, 0x13, 0xfe, 0x11, 0xfe, + 0x16, 0xfe, 0x19, 0xfe, 0x21, 0xfe, 0x1f, 0xfe, 0x23, 0xfe, 0x25, 0xfe, + 0x2a, 0xfe, 0x2c, 0xfe, 0x30, 0xfe, 0x2e, 0xfe, 0x35, 0xfe, 0x36, 0xfe, + 0x3c, 0xfe, 0x3b, 0xfe, 0x43, 0xfe, 0x43, 0xfe, 0x44, 0xfe, 0x46, 0xfe, + 0x4f, 0xfe, 0x4d, 0xfe, 0x51, 0xfe, 0x52, 0xfe, 0x59, 0xfe, 0x58, 0xfe, + 0x5e, 0xfe, 0x5f, 0xfe, 0x65, 0xfe, 0x65, 0xfe, 0x6d, 0xfe, 0x6d, 0xfe, + 0x72, 0xfe, 0x74, 0xfe, 0x7b, 0xfe, 0x7c, 0xfe, 0x84, 0xfe, 0x82, 0xfe, + 0x8c, 0xfe, 0x8e, 0xfe, 0x97, 0xfe, 0x97, 0xfe, 0xa2, 0xfe, 0xa1, 0xfe, + 0xad, 0xfe, 0xaf, 0xfe, 0xbb, 0xfe, 0xba, 0xfe, 0xc6, 0xfe, 0xc9, 0xfe, + 0xd7, 0xfe, 0xd6, 0xfe, 0xe4, 0xfe, 0xe7, 0xfe, 0xf7, 0xfe, 0xf6, 0xfe, + 0x06, 0xff, 0x08, 0xff, 0x19, 0xff, 0x1a, 0xff, 0x2b, 0xff, 0x2c, 0xff, + 0x40, 0xff, 0x3f, 0xff, 0x54, 0xff, 0x56, 0xff, 0x6a, 0xff, 0x6b, 0xff, + 0x80, 0xff, 0x82, 0xff, 0x94, 0xff, 0x94, 0xff, 0xad, 0xff, 0xae, 0xff, + 0xc1, 0xff, 0xc3, 0xff, 0xda, 0xff, 0xda, 0xff, 0xee, 0xff, 0xf2, 0xff, + 0x06, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x32, 0x00, 0x33, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x5e, 0x00, 0x60, 0x00, 0x73, 0x00, 0x72, 0x00, + 0x86, 0x00, 0x89, 0x00, 0x98, 0x00, 0x98, 0x00, 0xae, 0x00, 0xaf, 0x00, + 0xbd, 0x00, 0xbf, 0x00, 0xcf, 0x00, 0xce, 0x00, 0xdf, 0x00, 0xe0, 0x00, + 0xec, 0x00, 0xec, 0x00, 0xfd, 0x00, 0xfe, 0x00, 0x07, 0x01, 0x08, 0x01, + 0x15, 0x01, 0x16, 0x01, 0x21, 0x01, 0x23, 0x01, 0x2a, 0x01, 0x2c, 0x01, + 0x38, 0x01, 0x37, 0x01, 0x3f, 0x01, 0x41, 0x01, 0x4a, 0x01, 0x4b, 0x01, + 0x55, 0x01, 0x56, 0x01, 0x5a, 0x01, 0x5b, 0x01, 0x67, 0x01, 0x67, 0x01, + 0x6c, 0x01, 0x6c, 0x01, 0x76, 0x01, 0x76, 0x01, 0x7d, 0x01, 0x7f, 0x01, + 0x85, 0x01, 0x85, 0x01, 0x8e, 0x01, 0x8e, 0x01, 0x94, 0x01, 0x97, 0x01, + 0xa0, 0x01, 0x9f, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xaf, 0x01, 0xae, 0x01, + 0xb7, 0x01, 0xb8, 0x01, 0xc2, 0x01, 0xc1, 0x01, 0xc9, 0x01, 0xca, 0x01, + 0xd5, 0x01, 0xd5, 0x01, 0xdb, 0x01, 0xdb, 0x01, 0xe5, 0x01, 0xe6, 0x01, + 0xed, 0x01, 0xee, 0x01, 0xf3, 0x01, 0xf5, 0x01, 0xff, 0x01, 0xff, 0x01, + 0x03, 0x02, 0x04, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x14, 0x02, 0x13, 0x02, + 0x18, 0x02, 0x19, 0x02, 0x1f, 0x02, 0x21, 0x02, 0x26, 0x02, 0x23, 0x02, + 0x24, 0x02, 0x28, 0x02, 0x2a, 0x02, 0x28, 0x02, 0x2b, 0x02, 0x2c, 0x02, + 0x2b, 0x02, 0x29, 0x02, 0x2b, 0x02, 0x2c, 0x02, 0x29, 0x02, 0x29, 0x02, + 0x24, 0x02, 0x27, 0x02, 0x24, 0x02, 0x23, 0x02, 0x1a, 0x02, 0x1b, 0x02, + 0x17, 0x02, 0x17, 0x02, 0x0e, 0x02, 0x0e, 0x02, 0x04, 0x02, 0x05, 0x02, + 0xfa, 0x01, 0xfd, 0x01, 0xeb, 0x01, 0xec, 0x01, 0xe3, 0x01, 0xe5, 0x01, + 0xd3, 0x01, 0xd3, 0x01, 0xc8, 0x01, 0xc7, 0x01, 0xb8, 0x01, 0xba, 0x01, + 0xa8, 0x01, 0xa8, 0x01, 0x9a, 0x01, 0x9c, 0x01, 0x87, 0x01, 0x88, 0x01, + 0x79, 0x01, 0x7a, 0x01, 0x68, 0x01, 0x68, 0x01, 0x55, 0x01, 0x57, 0x01, + 0x48, 0x01, 0x48, 0x01, 0x35, 0x01, 0x36, 0x01, 0x25, 0x01, 0x26, 0x01, + 0x16, 0x01, 0x16, 0x01, 0x04, 0x01, 0x07, 0x01, 0xf7, 0x00, 0xf8, 0x00, + 0xe6, 0x00, 0xe4, 0x00, 0xd8, 0x00, 0xdc, 0x00, 0xcb, 0x00, 0xc8, 0x00, + 0xb9, 0x00, 0xbc, 0x00, 0xad, 0x00, 0xb0, 0x00, 0x9e, 0x00, 0x9d, 0x00, + 0x92, 0x00, 0x94, 0x00, 0x85, 0x00, 0x85, 0x00, 0x78, 0x00, 0x79, 0x00, + 0x6a, 0x00, 0x6a, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x43, 0x00, 0x46, 0x00, 0x39, 0x00, 0x36, 0x00, 0x28, 0x00, 0x2b, 0x00, + 0x1b, 0x00, 0x1d, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xf0, 0xff, 0xf2, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xd1, 0xff, 0xd3, 0xff, + 0xc3, 0xff, 0xc4, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xa1, 0xff, 0xa4, 0xff, + 0x8e, 0xff, 0x8e, 0xff, 0x7d, 0xff, 0x7f, 0xff, 0x68, 0xff, 0x6b, 0xff, + 0x57, 0xff, 0x59, 0xff, 0x44, 0xff, 0x45, 0xff, 0x2e, 0xff, 0x31, 0xff, + 0x1d, 0xff, 0x1e, 0xff, 0x08, 0xff, 0x0a, 0xff, 0xf5, 0xfe, 0xf6, 0xfe, + 0xe1, 0xfe, 0xe3, 0xfe, 0xce, 0xfe, 0xce, 0xfe, 0xbd, 0xfe, 0xbe, 0xfe, + 0xa8, 0xfe, 0xab, 0xfe, 0x98, 0xfe, 0x99, 0xfe, 0x86, 0xfe, 0x87, 0xfe, + 0x73, 0xfe, 0x75, 0xfe, 0x68, 0xfe, 0x68, 0xfe, 0x55, 0xfe, 0x58, 0xfe, + 0x4d, 0xfe, 0x4d, 0xfe, 0x3b, 0xfe, 0x3e, 0xfe, 0x32, 0xfe, 0x33, 0xfe, + 0x28, 0xfe, 0x28, 0xfe, 0x1d, 0xfe, 0x1f, 0xfe, 0x16, 0xfe, 0x17, 0xfe, + 0x0e, 0xfe, 0x10, 0xfe, 0x08, 0xfe, 0x09, 0xfe, 0x05, 0xfe, 0x07, 0xfe, + 0x00, 0xfe, 0xff, 0xfd, 0xfd, 0xfd, 0xff, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, + 0xfa, 0xfd, 0xfb, 0xfd, 0xfd, 0xfd, 0xfc, 0xfd, 0xfb, 0xfd, 0xfc, 0xfd, + 0xfe, 0xfd, 0xfe, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0x01, 0xfe, 0x00, 0xfe, + 0x03, 0xfe, 0x05, 0xfe, 0x06, 0xfe, 0x07, 0xfe, 0x09, 0xfe, 0x09, 0xfe, + 0x0f, 0xfe, 0x0f, 0xfe, 0x10, 0xfe, 0x11, 0xfe, 0x15, 0xfe, 0x16, 0xfe, + 0x19, 0xfe, 0x18, 0xfe, 0x1b, 0xfe, 0x1e, 0xfe, 0x21, 0xfe, 0x20, 0xfe, + 0x22, 0xfe, 0x24, 0xfe, 0x27, 0xfe, 0x27, 0xfe, 0x2b, 0xfe, 0x2b, 0xfe, + 0x2c, 0xfe, 0x30, 0xfe, 0x34, 0xfe, 0x32, 0xfe, 0x34, 0xfe, 0x36, 0xfe, + 0x39, 0xfe, 0x39, 0xfe, 0x3d, 0xfe, 0x3c, 0xfe, 0x3f, 0xfe, 0x43, 0xfe, + 0x45, 0xfe, 0x44, 0xfe, 0x48, 0xfe, 0x4b, 0xfe, 0x4f, 0xfe, 0x4e, 0xfe, + 0x54, 0xfe, 0x54, 0xfe, 0x5a, 0xfe, 0x5c, 0xfe, 0x60, 0xfe, 0x61, 0xfe, + 0x69, 0xfe, 0x6a, 0xfe, 0x70, 0xfe, 0x72, 0xfe, 0x7b, 0xfe, 0x7b, 0xfe, + 0x83, 0xfe, 0x85, 0xfe, 0x90, 0xfe, 0x8f, 0xfe, 0x9a, 0xfe, 0x9b, 0xfe, + 0xaa, 0xfe, 0xaa, 0xfe, 0xb5, 0xfe, 0xb6, 0xfe, 0xc6, 0xfe, 0xc7, 0xfe, + 0xd5, 0xfe, 0xd5, 0xfe, 0xe6, 0xfe, 0xe9, 0xfe, 0xf9, 0xfe, 0xf8, 0xfe, + 0x09, 0xff, 0x0c, 0xff, 0x1e, 0xff, 0x1d, 0xff, 0x31, 0xff, 0x33, 0xff, + 0x48, 0xff, 0x48, 0xff, 0x59, 0xff, 0x5a, 0xff, 0x71, 0xff, 0x72, 0xff, + 0x85, 0xff, 0x86, 0xff, 0x9b, 0xff, 0x9c, 0xff, 0xb2, 0xff, 0xb3, 0xff, + 0xc5, 0xff, 0xc6, 0xff, 0xdd, 0xff, 0xdf, 0xff, 0xf1, 0xff, 0xf1, 0xff, + 0x07, 0x00, 0x08, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x2e, 0x00, 0x2e, 0x00, + 0x42, 0x00, 0x43, 0x00, 0x55, 0x00, 0x55, 0x00, 0x67, 0x00, 0x69, 0x00, + 0x78, 0x00, 0x77, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x98, 0x00, 0x99, 0x00, + 0xaa, 0x00, 0xaa, 0x00, 0xb9, 0x00, 0xb8, 0x00, 0xc4, 0x00, 0xc5, 0x00, + 0xd5, 0x00, 0xd4, 0x00, 0xdd, 0x00, 0xdd, 0x00, 0xeb, 0x00, 0xea, 0x00, + 0xf5, 0x00, 0xf6, 0x00, 0x01, 0x01, 0x01, 0x01, 0x0c, 0x01, 0x09, 0x01, + 0x15, 0x01, 0x17, 0x01, 0x20, 0x01, 0x1f, 0x01, 0x29, 0x01, 0x28, 0x01, + 0x34, 0x01, 0x34, 0x01, 0x3e, 0x01, 0x3c, 0x01, 0x45, 0x01, 0x46, 0x01, + 0x50, 0x01, 0x50, 0x01, 0x5b, 0x01, 0x58, 0x01, 0x64, 0x01, 0x63, 0x01, + 0x6c, 0x01, 0x6c, 0x01, 0x77, 0x01, 0x76, 0x01, 0x81, 0x01, 0x83, 0x01, + 0x8d, 0x01, 0x8d, 0x01, 0x97, 0x01, 0x98, 0x01, 0xa3, 0x01, 0xa4, 0x01, + 0xad, 0x01, 0xab, 0x01, 0xb7, 0x01, 0xb9, 0x01, 0xc1, 0x01, 0xc2, 0x01, + 0xcc, 0x01, 0xcd, 0x01, 0xd7, 0x01, 0xd8, 0x01, 0xdf, 0x01, 0xdf, 0x01, + 0xe9, 0x01, 0xeb, 0x01, 0xf4, 0x01, 0xf3, 0x01, 0xfa, 0x01, 0xfc, 0x01, + 0x04, 0x02, 0x02, 0x02, 0x0b, 0x02, 0x0c, 0x02, 0x11, 0x02, 0x11, 0x02, + 0x17, 0x02, 0x18, 0x02, 0x1b, 0x02, 0x1b, 0x02, 0x1d, 0x02, 0x1f, 0x02, + 0x23, 0x02, 0x22, 0x02, 0x1f, 0x02, 0x22, 0x02, 0x22, 0x02, 0x23, 0x02, + 0x21, 0x02, 0x21, 0x02, 0x1d, 0x02, 0x1e, 0x02, 0x1e, 0x02, 0x1e, 0x02, + 0x13, 0x02, 0x15, 0x02, 0x11, 0x02, 0x11, 0x02, 0x09, 0x02, 0x0a, 0x02, + 0x01, 0x02, 0x02, 0x02, 0xfb, 0x01, 0xfa, 0x01, 0xed, 0x01, 0xee, 0x01, + 0xe4, 0x01, 0xe5, 0x01, 0xd7, 0x01, 0xd7, 0x01, 0xcb, 0x01, 0xcc, 0x01, + 0xbe, 0x01, 0xc0, 0x01, 0xb1, 0x01, 0xb1, 0x01, 0xa4, 0x01, 0xa5, 0x01, + 0x96, 0x01, 0x96, 0x01, 0x86, 0x01, 0x87, 0x01, 0x79, 0x01, 0x7a, 0x01, + 0x69, 0x01, 0x69, 0x01, 0x5a, 0x01, 0x5c, 0x01, 0x4e, 0x01, 0x4f, 0x01, + 0x3e, 0x01, 0x3e, 0x01, 0x32, 0x01, 0x32, 0x01, 0x22, 0x01, 0x21, 0x01, + 0x15, 0x01, 0x17, 0x01, 0x08, 0x01, 0x08, 0x01, 0xfb, 0x00, 0xfc, 0x00, + 0xee, 0x00, 0xee, 0x00, 0xe2, 0x00, 0xe3, 0x00, 0xd6, 0x00, 0xd6, 0x00, + 0xc9, 0x00, 0xca, 0x00, 0xbe, 0x00, 0xbd, 0x00, 0xb1, 0x00, 0xb3, 0x00, + 0xa5, 0x00, 0xa5, 0x00, 0x9a, 0x00, 0x9d, 0x00, 0x8c, 0x00, 0x8d, 0x00, + 0x82, 0x00, 0x81, 0x00, 0x73, 0x00, 0x76, 0x00, 0x67, 0x00, 0x68, 0x00, + 0x5b, 0x00, 0x5b, 0x00, 0x4b, 0x00, 0x4d, 0x00, 0x40, 0x00, 0x3f, 0x00, + 0x2f, 0x00, 0x30, 0x00, 0x21, 0x00, 0x22, 0x00, 0x12, 0x00, 0x12, 0x00, + 0xfd, 0xff, 0x00, 0x00, 0xf3, 0xff, 0xf2, 0xff, 0xdd, 0xff, 0xe0, 0xff, + 0xcf, 0xff, 0xce, 0xff, 0xb9, 0xff, 0xbc, 0xff, 0xa8, 0xff, 0xa9, 0xff, + 0x95, 0xff, 0x97, 0xff, 0x81, 0xff, 0x81, 0xff, 0x6e, 0xff, 0x6f, 0xff, + 0x58, 0xff, 0x5a, 0xff, 0x46, 0xff, 0x46, 0xff, 0x33, 0xff, 0x33, 0xff, + 0x1b, 0xff, 0x1f, 0xff, 0x0b, 0xff, 0x0c, 0xff, 0xf5, 0xfe, 0xf8, 0xfe, + 0xe3, 0xfe, 0xe4, 0xfe, 0xd2, 0xfe, 0xd4, 0xfe, 0xbe, 0xfe, 0xbf, 0xfe, + 0xae, 0xfe, 0xb0, 0xfe, 0x9d, 0xfe, 0x9f, 0xfe, 0x8d, 0xfe, 0x8f, 0xfe, + 0x7f, 0xfe, 0x80, 0xfe, 0x72, 0xfe, 0x74, 0xfe, 0x65, 0xfe, 0x64, 0xfe, + 0x58, 0xfe, 0x5b, 0xfe, 0x4f, 0xfe, 0x4e, 0xfe, 0x42, 0xfe, 0x46, 0xfe, + 0x3f, 0xfe, 0x3e, 0xfe, 0x34, 0xfe, 0x35, 0xfe, 0x30, 0xfe, 0x31, 0xfe, + 0x2a, 0xfe, 0x29, 0xfe, 0x24, 0xfe, 0x27, 0xfe, 0x22, 0xfe, 0x20, 0xfe, + 0x1c, 0xfe, 0x1d, 0xfe, 0x1d, 0xfe, 0x1d, 0xfe, 0x1a, 0xfe, 0x1b, 0xfe, + 0x19, 0xfe, 0x1a, 0xfe, 0x1a, 0xfe, 0x1b, 0xfe, 0x1a, 0xfe, 0x19, 0xfe, + 0x1b, 0xfe, 0x1b, 0xfe, 0x19, 0xfe, 0x19, 0xfe, 0x1d, 0xfe, 0x1d, 0xfe, + 0x1d, 0xfe, 0x1c, 0xfe, 0x1d, 0xfe, 0x1e, 0xfe, 0x21, 0xfe, 0x21, 0xfe, + 0x20, 0xfe, 0x21, 0xfe, 0x24, 0xfe, 0x23, 0xfe, 0x22, 0xfe, 0x22, 0xfe, + 0x25, 0xfe, 0x24, 0xfe, 0x26, 0xfe, 0x27, 0xfe, 0x25, 0xfe, 0x25, 0xfe, + 0x29, 0xfe, 0x28, 0xfe, 0x28, 0xfe, 0x29, 0xfe, 0x2a, 0xfe, 0x2b, 0xfe, + 0x2d, 0xfe, 0x2c, 0xfe, 0x2c, 0xfe, 0x30, 0xfe, 0x33, 0xfe, 0x2f, 0xfe, + 0x30, 0xfe, 0x33, 0xfe, 0x33, 0xfe, 0x33, 0xfe, 0x3a, 0xfe, 0x39, 0xfe, + 0x3c, 0xfe, 0x3c, 0xfe, 0x41, 0xfe, 0x42, 0xfe, 0x46, 0xfe, 0x46, 0xfe, + 0x4b, 0xfe, 0x4b, 0xfe, 0x53, 0xfe, 0x54, 0xfe, 0x5a, 0xfe, 0x59, 0xfe, + 0x62, 0xfe, 0x62, 0xfe, 0x6c, 0xfe, 0x6d, 0xfe, 0x76, 0xfe, 0x77, 0xfe, + 0x84, 0xfe, 0x82, 0xfe, 0x8e, 0xfe, 0x8e, 0xfe, 0x9b, 0xfe, 0x9c, 0xfe, + 0xa9, 0xfe, 0xab, 0xfe, 0xbb, 0xfe, 0xba, 0xfe, 0xc9, 0xfe, 0xcb, 0xfe, + 0xdd, 0xfe, 0xda, 0xfe, 0xeb, 0xfe, 0xee, 0xfe, 0xff, 0xfe, 0xff, 0xfe, + 0x13, 0xff, 0x12, 0xff, 0x25, 0xff, 0x28, 0xff, 0x3a, 0xff, 0x38, 0xff, + 0x4d, 0xff, 0x4f, 0xff, 0x62, 0xff, 0x63, 0xff, 0x78, 0xff, 0x77, 0xff, + 0x8a, 0xff, 0x8a, 0xff, 0xa0, 0xff, 0xa1, 0xff, 0xb4, 0xff, 0xb7, 0xff, + 0xca, 0xff, 0xc9, 0xff, 0xdc, 0xff, 0xdd, 0xff, 0xf1, 0xff, 0xf1, 0xff, + 0x03, 0x00, 0x04, 0x00, 0x16, 0x00, 0x15, 0x00, 0x26, 0x00, 0x27, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x49, 0x00, 0x49, 0x00, 0x59, 0x00, 0x59, 0x00, + 0x67, 0x00, 0x67, 0x00, 0x76, 0x00, 0x75, 0x00, 0x84, 0x00, 0x83, 0x00, + 0x91, 0x00, 0x90, 0x00, 0x9f, 0x00, 0x9e, 0x00, 0xaa, 0x00, 0xab, 0x00, + 0xb9, 0x00, 0xb7, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xcf, 0x00, 0xce, 0x00, + 0xd8, 0x00, 0xd9, 0x00, 0xe4, 0x00, 0xe3, 0x00, 0xf0, 0x00, 0xf0, 0x00, + 0xf6, 0x00, 0xf7, 0x00, 0x05, 0x01, 0x05, 0x01, 0x0e, 0x01, 0x10, 0x01, + 0x19, 0x01, 0x18, 0x01, 0x24, 0x01, 0x27, 0x01, 0x2e, 0x01, 0x2d, 0x01, + 0x3e, 0x01, 0x3f, 0x01, 0x45, 0x01, 0x44, 0x01, 0x54, 0x01, 0x55, 0x01, + 0x5d, 0x01, 0x5e, 0x01, 0x67, 0x01, 0x68, 0x01, 0x77, 0x01, 0x78, 0x01, + 0x80, 0x01, 0x81, 0x01, 0x8f, 0x01, 0x90, 0x01, 0x9b, 0x01, 0x9b, 0x01, + 0xa5, 0x01, 0xa7, 0x01, 0xb2, 0x01, 0xb3, 0x01, 0xbe, 0x01, 0xbe, 0x01, + 0xc9, 0x01, 0xc9, 0x01, 0xd5, 0x01, 0xd4, 0x01, 0xdd, 0x01, 0xdf, 0x01, + 0xea, 0x01, 0xe9, 0x01, 0xf0, 0x01, 0xf3, 0x01, 0xf9, 0x01, 0xf9, 0x01, + 0x01, 0x02, 0x02, 0x02, 0x05, 0x02, 0x05, 0x02, 0x0e, 0x02, 0x10, 0x02, + 0x0e, 0x02, 0x0e, 0x02, 0x14, 0x02, 0x15, 0x02, 0x15, 0x02, 0x16, 0x02, + 0x16, 0x02, 0x16, 0x02, 0x16, 0x02, 0x18, 0x02, 0x17, 0x02, 0x15, 0x02, + 0x10, 0x02, 0x14, 0x02, 0x10, 0x02, 0x0f, 0x02, 0x09, 0x02, 0x0a, 0x02, + 0x04, 0x02, 0x05, 0x02, 0xfc, 0x01, 0xfd, 0x01, 0xf6, 0x01, 0xf6, 0x01, + 0xec, 0x01, 0xee, 0x01, 0xe3, 0x01, 0xe4, 0x01, 0xd9, 0x01, 0xd8, 0x01, + 0xce, 0x01, 0xcf, 0x01, 0xc3, 0x01, 0xc4, 0x01, 0xb7, 0x01, 0xb7, 0x01, + 0xad, 0x01, 0xae, 0x01, 0x9f, 0x01, 0x9e, 0x01, 0x92, 0x01, 0x94, 0x01, + 0x88, 0x01, 0x88, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x70, 0x01, 0x70, 0x01, + 0x61, 0x01, 0x62, 0x01, 0x57, 0x01, 0x57, 0x01, 0x49, 0x01, 0x4b, 0x01, + 0x3f, 0x01, 0x40, 0x01, 0x31, 0x01, 0x32, 0x01, 0x27, 0x01, 0x27, 0x01, + 0x1d, 0x01, 0x1c, 0x01, 0x10, 0x01, 0x11, 0x01, 0x06, 0x01, 0x07, 0x01, + 0xfd, 0x00, 0xfc, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xe6, 0x00, 0xe7, 0x00, + 0xdb, 0x00, 0xda, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0xc6, 0x00, 0xc4, 0x00, + 0xb9, 0x00, 0xba, 0x00, 0xae, 0x00, 0xae, 0x00, 0xa3, 0x00, 0xa3, 0x00, + 0x97, 0x00, 0x96, 0x00, 0x87, 0x00, 0x89, 0x00, 0x7c, 0x00, 0x7b, 0x00, + 0x6d, 0x00, 0x6e, 0x00, 0x5f, 0x00, 0x5e, 0x00, 0x4f, 0x00, 0x4e, 0x00, + 0x43, 0x00, 0x41, 0x00, 0x2c, 0x00, 0x2f, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0xf9, 0xff, 0xf9, 0xff, 0xeb, 0xff, 0xea, 0xff, + 0xd1, 0xff, 0xd1, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xae, 0xff, 0xab, 0xff, + 0x97, 0xff, 0x98, 0xff, 0x88, 0xff, 0x88, 0xff, 0x6f, 0xff, 0x6e, 0xff, + 0x5e, 0xff, 0x61, 0xff, 0x48, 0xff, 0x45, 0xff, 0x36, 0xff, 0x37, 0xff, + 0x22, 0xff, 0x22, 0xff, 0x0f, 0xff, 0x0d, 0xff, 0xfd, 0xfe, 0xfe, 0xfe, + 0xe8, 0xfe, 0xe8, 0xfe, 0xdd, 0xfe, 0xdb, 0xfe, 0xc6, 0xfe, 0xc6, 0xfe, + 0xba, 0xfe, 0xb9, 0xfe, 0xaa, 0xfe, 0xac, 0xfe, 0x9c, 0xfe, 0x9d, 0xfe, + 0x91, 0xfe, 0x8f, 0xfe, 0x83, 0xfe, 0x85, 0xfe, 0x7b, 0xfe, 0x7a, 0xfe, + 0x6f, 0xfe, 0x6f, 0xfe, 0x68, 0xfe, 0x69, 0xfe, 0x5e, 0xfe, 0x5e, 0xfe, + 0x58, 0xfe, 0x57, 0xfe, 0x52, 0xfe, 0x52, 0xfe, 0x4c, 0xfe, 0x4b, 0xfe, + 0x48, 0xfe, 0x4a, 0xfe, 0x43, 0xfe, 0x44, 0xfe, 0x42, 0xfe, 0x40, 0xfe, + 0x3d, 0xfe, 0x3f, 0xfe, 0x3b, 0xfe, 0x3a, 0xfe, 0x3a, 0xfe, 0x39, 0xfe, + 0x38, 0xfe, 0x3a, 0xfe, 0x37, 0xfe, 0x36, 0xfe, 0x35, 0xfe, 0x36, 0xfe, + 0x33, 0xfe, 0x34, 0xfe, 0x33, 0xfe, 0x35, 0xfe, 0x31, 0xfe, 0x31, 0xfe, + 0x32, 0xfe, 0x34, 0xfe, 0x2f, 0xfe, 0x2f, 0xfe, 0x2e, 0xfe, 0x32, 0xfe, + 0x30, 0xfe, 0x2e, 0xfe, 0x2d, 0xfe, 0x2d, 0xfe, 0x2b, 0xfe, 0x2d, 0xfe, + 0x2c, 0xfe, 0x2c, 0xfe, 0x29, 0xfe, 0x2b, 0xfe, 0x2a, 0xfe, 0x2a, 0xfe, + 0x29, 0xfe, 0x2b, 0xfe, 0x28, 0xfe, 0x27, 0xfe, 0x2a, 0xfe, 0x2a, 0xfe, + 0x28, 0xfe, 0x2a, 0xfe, 0x2a, 0xfe, 0x29, 0xfe, 0x2b, 0xfe, 0x2c, 0xfe, + 0x2b, 0xfe, 0x2d, 0xfe, 0x30, 0xfe, 0x30, 0xfe, 0x31, 0xfe, 0x32, 0xfe, + 0x38, 0xfe, 0x36, 0xfe, 0x3a, 0xfe, 0x3e, 0xfe, 0x42, 0xfe, 0x41, 0xfe, + 0x4a, 0xfe, 0x4a, 0xfe, 0x4f, 0xfe, 0x50, 0xfe, 0x5a, 0xfe, 0x5a, 0xfe, + 0x61, 0xfe, 0x63, 0xfe, 0x70, 0xfe, 0x6d, 0xfe, 0x78, 0xfe, 0x7b, 0xfe, + 0x85, 0xfe, 0x84, 0xfe, 0x94, 0xfe, 0x95, 0xfe, 0xa1, 0xfe, 0xa2, 0xfe, + 0xb3, 0xfe, 0xb2, 0xfe, 0xbf, 0xfe, 0xc2, 0xfe, 0xd3, 0xfe, 0xd2, 0xfe, + 0xe3, 0xfe, 0xe5, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, 0x0a, 0xff, 0x0a, 0xff, + 0x1b, 0xff, 0x1c, 0xff, 0x30, 0xff, 0x31, 0xff, 0x42, 0xff, 0x43, 0xff, + 0x56, 0xff, 0x55, 0xff, 0x6a, 0xff, 0x6c, 0xff, 0x7d, 0xff, 0x7c, 0xff, + 0x8f, 0xff, 0x92, 0xff, 0xa3, 0xff, 0xa2, 0xff, 0xb3, 0xff, 0xb5, 0xff, + 0xc8, 0xff, 0xc7, 0xff, 0xd7, 0xff, 0xda, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0x0b, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x27, 0x00, 0x25, 0x00, 0x36, 0x00, 0x39, 0x00, 0x44, 0x00, 0x42, 0x00, + 0x52, 0x00, 0x53, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x6b, 0x00, 0x69, 0x00, + 0x77, 0x00, 0x7a, 0x00, 0x83, 0x00, 0x80, 0x00, 0x8f, 0x00, 0x91, 0x00, + 0x99, 0x00, 0x98, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xb1, 0x00, 0xb1, 0x00, + 0xba, 0x00, 0xbb, 0x00, 0xc9, 0x00, 0xc8, 0x00, 0xd2, 0x00, 0xd3, 0x00, + 0xde, 0x00, 0xdf, 0x00, 0xeb, 0x00, 0xec, 0x00, 0xf6, 0x00, 0xf6, 0x00, + 0x04, 0x01, 0x05, 0x01, 0x0f, 0x01, 0x10, 0x01, 0x1c, 0x01, 0x1d, 0x01, + 0x2c, 0x01, 0x2c, 0x01, 0x35, 0x01, 0x36, 0x01, 0x48, 0x01, 0x48, 0x01, + 0x53, 0x01, 0x54, 0x01, 0x5f, 0x01, 0x60, 0x01, 0x6f, 0x01, 0x6e, 0x01, + 0x7a, 0x01, 0x7b, 0x01, 0x8a, 0x01, 0x8a, 0x01, 0x95, 0x01, 0x95, 0x01, + 0xa4, 0x01, 0xa3, 0x01, 0xaf, 0x01, 0xaf, 0x01, 0xbb, 0x01, 0xbb, 0x01, + 0xc6, 0x01, 0xc6, 0x01, 0xd2, 0x01, 0xd1, 0x01, 0xda, 0x01, 0xdb, 0x01, + 0xe3, 0x01, 0xe3, 0x01, 0xea, 0x01, 0xeb, 0x01, 0xf3, 0x01, 0xf2, 0x01, + 0xf7, 0x01, 0xf8, 0x01, 0xfe, 0x01, 0x00, 0x02, 0x02, 0x02, 0x01, 0x02, + 0x03, 0x02, 0x05, 0x02, 0x06, 0x02, 0x05, 0x02, 0x04, 0x02, 0x05, 0x02, + 0x08, 0x02, 0x05, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0xfb, 0x01, 0xfc, 0x01, 0xf8, 0x01, 0xf7, 0x01, 0xf2, 0x01, 0xf2, 0x01, + 0xea, 0x01, 0xed, 0x01, 0xe6, 0x01, 0xe5, 0x01, 0xdc, 0x01, 0xdd, 0x01, + 0xd5, 0x01, 0xd4, 0x01, 0xcc, 0x01, 0xcc, 0x01, 0xc2, 0x01, 0xc3, 0x01, + 0xbb, 0x01, 0xba, 0x01, 0xaf, 0x01, 0xaf, 0x01, 0xa6, 0x01, 0xa6, 0x01, + 0x9b, 0x01, 0x9b, 0x01, 0x92, 0x01, 0x92, 0x01, 0x87, 0x01, 0x87, 0x01, + 0x7c, 0x01, 0x7c, 0x01, 0x72, 0x01, 0x73, 0x01, 0x68, 0x01, 0x68, 0x01, + 0x5e, 0x01, 0x5f, 0x01, 0x54, 0x01, 0x54, 0x01, 0x4c, 0x01, 0x4b, 0x01, + 0x41, 0x01, 0x42, 0x01, 0x38, 0x01, 0x38, 0x01, 0x2e, 0x01, 0x2f, 0x01, + 0x26, 0x01, 0x26, 0x01, 0x1d, 0x01, 0x1d, 0x01, 0x12, 0x01, 0x12, 0x01, + 0x09, 0x01, 0x0a, 0x01, 0x03, 0x01, 0x00, 0x01, 0xf4, 0x00, 0xf7, 0x00, + 0xed, 0x00, 0xea, 0x00, 0xe3, 0x00, 0xe3, 0x00, 0xd4, 0x00, 0xd5, 0x00, + 0xcc, 0x00, 0xcb, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xb2, 0x00, 0xb0, 0x00, + 0xa4, 0x00, 0xa4, 0x00, 0x96, 0x00, 0x95, 0x00, 0x88, 0x00, 0x86, 0x00, + 0x76, 0x00, 0x79, 0x00, 0x69, 0x00, 0x66, 0x00, 0x57, 0x00, 0x59, 0x00, + 0x48, 0x00, 0x45, 0x00, 0x32, 0x00, 0x33, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x0e, 0x00, 0x0f, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xd3, 0xff, 0xd4, 0xff, 0xc2, 0xff, 0xc1, 0xff, 0xab, 0xff, 0xac, 0xff, + 0x98, 0xff, 0x99, 0xff, 0x84, 0xff, 0x83, 0xff, 0x71, 0xff, 0x73, 0xff, + 0x5d, 0xff, 0x5a, 0xff, 0x4a, 0xff, 0x4b, 0xff, 0x36, 0xff, 0x37, 0xff, + 0x27, 0xff, 0x25, 0xff, 0x14, 0xff, 0x15, 0xff, 0x03, 0xff, 0x02, 0xff, + 0xf4, 0xfe, 0xf4, 0xfe, 0xe3, 0xfe, 0xe4, 0xfe, 0xd8, 0xfe, 0xd6, 0xfe, + 0xc8, 0xfe, 0xc8, 0xfe, 0xbb, 0xfe, 0xbc, 0xfe, 0xaf, 0xfe, 0xae, 0xfe, + 0xa5, 0xfe, 0xa6, 0xfe, 0x9a, 0xfe, 0x99, 0xfe, 0x92, 0xfe, 0x93, 0xfe, + 0x8a, 0xfe, 0x8a, 0xfe, 0x83, 0xfe, 0x82, 0xfe, 0x7c, 0xfe, 0x7c, 0xfe, + 0x74, 0xfe, 0x76, 0xfe, 0x70, 0xfe, 0x6f, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, + 0x65, 0xfe, 0x65, 0xfe, 0x64, 0xfe, 0x63, 0xfe, 0x5d, 0xfe, 0x5c, 0xfe, + 0x5b, 0xfe, 0x5b, 0xfe, 0x56, 0xfe, 0x55, 0xfe, 0x54, 0xfe, 0x55, 0xfe, + 0x50, 0xfe, 0x4f, 0xfe, 0x4c, 0xfe, 0x4d, 0xfe, 0x4b, 0xfe, 0x4b, 0xfe, + 0x46, 0xfe, 0x46, 0xfe, 0x44, 0xfe, 0x46, 0xfe, 0x41, 0xfe, 0x42, 0xfe, + 0x3d, 0xfe, 0x3e, 0xfe, 0x3a, 0xfe, 0x3c, 0xfe, 0x3a, 0xfe, 0x38, 0xfe, + 0x33, 0xfe, 0x36, 0xfe, 0x32, 0xfe, 0x31, 0xfe, 0x2f, 0xfe, 0x2f, 0xfe, + 0x2d, 0xfe, 0x2d, 0xfe, 0x29, 0xfe, 0x2b, 0xfe, 0x29, 0xfe, 0x27, 0xfe, + 0x27, 0xfe, 0x28, 0xfe, 0x25, 0xfe, 0x24, 0xfe, 0x26, 0xfe, 0x28, 0xfe, + 0x24, 0xfe, 0x24, 0xfe, 0x26, 0xfe, 0x26, 0xfe, 0x27, 0xfe, 0x28, 0xfe, + 0x29, 0xfe, 0x29, 0xfe, 0x2d, 0xfe, 0x2b, 0xfe, 0x30, 0xfe, 0x31, 0xfe, + 0x36, 0xfe, 0x36, 0xfe, 0x3a, 0xfe, 0x3c, 0xfe, 0x43, 0xfe, 0x42, 0xfe, + 0x4b, 0xfe, 0x4b, 0xfe, 0x55, 0xfe, 0x54, 0xfe, 0x5d, 0xfe, 0x5e, 0xfe, + 0x69, 0xfe, 0x69, 0xfe, 0x78, 0xfe, 0x76, 0xfe, 0x80, 0xfe, 0x81, 0xfe, + 0x91, 0xfe, 0x92, 0xfe, 0x9f, 0xfe, 0x9e, 0xfe, 0xac, 0xfe, 0xaf, 0xfe, + 0xc0, 0xfe, 0xbd, 0xfe, 0xcb, 0xfe, 0xce, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, + 0xef, 0xfe, 0xf0, 0xfe, 0x02, 0xff, 0x00, 0xff, 0x14, 0xff, 0x15, 0xff, + 0x25, 0xff, 0x23, 0xff, 0x37, 0xff, 0x38, 0xff, 0x4a, 0xff, 0x4a, 0xff, + 0x5b, 0xff, 0x5a, 0xff, 0x6d, 0xff, 0x6d, 0xff, 0x7c, 0xff, 0x7c, 0xff, + 0x90, 0xff, 0x8f, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0xaf, 0xff, 0xae, 0xff, + 0xbe, 0xff, 0xbe, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xde, 0xff, 0xdd, 0xff, + 0xea, 0xff, 0xe8, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0x06, 0x00, 0x06, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x22, 0x00, 0x21, 0x00, 0x2b, 0x00, 0x2a, 0x00, + 0x3a, 0x00, 0x38, 0x00, 0x44, 0x00, 0x44, 0x00, 0x51, 0x00, 0x4e, 0x00, + 0x5d, 0x00, 0x5d, 0x00, 0x68, 0x00, 0x67, 0x00, 0x74, 0x00, 0x73, 0x00, + 0x7f, 0x00, 0x80, 0x00, 0x8b, 0x00, 0x8a, 0x00, 0x98, 0x00, 0x9a, 0x00, + 0xa3, 0x00, 0xa3, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xbd, 0x00, 0xbc, 0x00, + 0xcb, 0x00, 0xcd, 0x00, 0xda, 0x00, 0xda, 0x00, 0xe6, 0x00, 0xe7, 0x00, + 0xf7, 0x00, 0xf7, 0x00, 0x03, 0x01, 0x04, 0x01, 0x15, 0x01, 0x14, 0x01, + 0x20, 0x01, 0x21, 0x01, 0x31, 0x01, 0x30, 0x01, 0x40, 0x01, 0x3f, 0x01, + 0x4b, 0x01, 0x4c, 0x01, 0x5e, 0x01, 0x5d, 0x01, 0x69, 0x01, 0x6a, 0x01, + 0x7a, 0x01, 0x78, 0x01, 0x87, 0x01, 0x88, 0x01, 0x93, 0x01, 0x93, 0x01, + 0xa1, 0x01, 0xa0, 0x01, 0xab, 0x01, 0xab, 0x01, 0xb8, 0x01, 0xb7, 0x01, + 0xc1, 0x01, 0xc2, 0x01, 0xcb, 0x01, 0xc9, 0x01, 0xd3, 0x01, 0xd4, 0x01, + 0xda, 0x01, 0xda, 0x01, 0xe1, 0x01, 0xe3, 0x01, 0xe8, 0x01, 0xe7, 0x01, + 0xea, 0x01, 0xea, 0x01, 0xf0, 0x01, 0xf0, 0x01, 0xf2, 0x01, 0xf2, 0x01, + 0xf1, 0x01, 0xf1, 0x01, 0xf4, 0x01, 0xf4, 0x01, 0xf2, 0x01, 0xef, 0x01, + 0xed, 0x01, 0xf0, 0x01, 0xee, 0x01, 0xec, 0x01, 0xe8, 0x01, 0xeb, 0x01, + 0xe8, 0x01, 0xe4, 0x01, 0xde, 0x01, 0xe1, 0x01, 0xdc, 0x01, 0xd9, 0x01, + 0xd4, 0x01, 0xd6, 0x01, 0xce, 0x01, 0xcd, 0x01, 0xc7, 0x01, 0xc7, 0x01, + 0xc0, 0x01, 0xc0, 0x01, 0xb9, 0x01, 0xb8, 0x01, 0xb0, 0x01, 0xaf, 0x01, + 0xa7, 0x01, 0xa8, 0x01, 0xa0, 0x01, 0x9f, 0x01, 0x98, 0x01, 0x99, 0x01, + 0x90, 0x01, 0x90, 0x01, 0x89, 0x01, 0x89, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x78, 0x01, 0x77, 0x01, 0x71, 0x01, 0x71, 0x01, 0x68, 0x01, 0x6a, 0x01, + 0x61, 0x01, 0x62, 0x01, 0x5a, 0x01, 0x5b, 0x01, 0x52, 0x01, 0x52, 0x01, + 0x4c, 0x01, 0x4b, 0x01, 0x43, 0x01, 0x43, 0x01, 0x3c, 0x01, 0x3b, 0x01, + 0x35, 0x01, 0x35, 0x01, 0x2a, 0x01, 0x2a, 0x01, 0x23, 0x01, 0x23, 0x01, + 0x19, 0x01, 0x18, 0x01, 0x10, 0x01, 0x10, 0x01, 0x06, 0x01, 0x05, 0x01, + 0xfb, 0x00, 0xfa, 0x00, 0xf1, 0x00, 0xf0, 0x00, 0xe4, 0x00, 0xe4, 0x00, + 0xd9, 0x00, 0xd7, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xbb, 0x00, 0xbb, 0x00, + 0xaf, 0x00, 0xae, 0x00, 0x9d, 0x00, 0x9f, 0x00, 0x91, 0x00, 0x8f, 0x00, + 0x7f, 0x00, 0x81, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0x5d, 0x00, 0x5c, 0x00, + 0x47, 0x00, 0x48, 0x00, 0x38, 0x00, 0x37, 0x00, 0x22, 0x00, 0x20, 0x00, + 0x0e, 0x00, 0x12, 0x00, 0xfc, 0xff, 0xfb, 0xff, 0xe8, 0xff, 0xe7, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xaf, 0xff, 0xae, 0xff, + 0x9a, 0xff, 0x9b, 0xff, 0x87, 0xff, 0x85, 0xff, 0x76, 0xff, 0x77, 0xff, + 0x61, 0xff, 0x61, 0xff, 0x52, 0xff, 0x50, 0xff, 0x40, 0xff, 0x42, 0xff, + 0x30, 0xff, 0x2d, 0xff, 0x21, 0xff, 0x21, 0xff, 0x11, 0xff, 0x10, 0xff, + 0x05, 0xff, 0x05, 0xff, 0xf7, 0xfe, 0xf6, 0xfe, 0xe9, 0xfe, 0xe9, 0xfe, + 0xe0, 0xfe, 0xe0, 0xfe, 0xd4, 0xfe, 0xd3, 0xfe, 0xc9, 0xfe, 0xca, 0xfe, + 0xc1, 0xfe, 0xbf, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb0, 0xfe, 0xaf, 0xfe, + 0xa7, 0xfe, 0xa6, 0xfe, 0xa1, 0xfe, 0xa0, 0xfe, 0x9b, 0xfe, 0x98, 0xfe, + 0x92, 0xfe, 0x93, 0xfe, 0x8e, 0xfe, 0x8d, 0xfe, 0x88, 0xfe, 0x87, 0xfe, + 0x83, 0xfe, 0x82, 0xfe, 0x7f, 0xfe, 0x7e, 0xfe, 0x79, 0xfe, 0x78, 0xfe, + 0x75, 0xfe, 0x74, 0xfe, 0x70, 0xfe, 0x6d, 0xfe, 0x69, 0xfe, 0x68, 0xfe, + 0x65, 0xfe, 0x66, 0xfe, 0x5f, 0xfe, 0x5d, 0xfe, 0x5b, 0xfe, 0x5b, 0xfe, + 0x56, 0xfe, 0x54, 0xfe, 0x51, 0xfe, 0x4f, 0xfe, 0x49, 0xfe, 0x4a, 0xfe, + 0x47, 0xfe, 0x45, 0xfe, 0x40, 0xfe, 0x42, 0xfe, 0x3c, 0xfe, 0x3c, 0xfe, + 0x39, 0xfe, 0x39, 0xfe, 0x33, 0xfe, 0x32, 0xfe, 0x31, 0xfe, 0x31, 0xfe, + 0x2d, 0xfe, 0x2c, 0xfe, 0x2a, 0xfe, 0x29, 0xfe, 0x28, 0xfe, 0x27, 0xfe, + 0x25, 0xfe, 0x25, 0xfe, 0x25, 0xfe, 0x23, 0xfe, 0x25, 0xfe, 0x25, 0xfe, + 0x25, 0xfe, 0x23, 0xfe, 0x25, 0xfe, 0x27, 0xfe, 0x2a, 0xfe, 0x27, 0xfe, + 0x2a, 0xfe, 0x2d, 0xfe, 0x31, 0xfe, 0x2f, 0xfe, 0x35, 0xfe, 0x35, 0xfe, + 0x3a, 0xfe, 0x3b, 0xfe, 0x40, 0xfe, 0x41, 0xfe, 0x4a, 0xfe, 0x49, 0xfe, + 0x55, 0xfe, 0x54, 0xfe, 0x5d, 0xfe, 0x5d, 0xfe, 0x69, 0xfe, 0x68, 0xfe, + 0x75, 0xfe, 0x75, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x8e, 0xfe, 0x90, 0xfe, + 0x9c, 0xfe, 0x9c, 0xfe, 0xac, 0xfe, 0xab, 0xfe, 0xbb, 0xfe, 0xbb, 0xfe, + 0xcc, 0xfe, 0xca, 0xfe, 0xda, 0xfe, 0xdb, 0xfe, 0xeb, 0xfe, 0xe8, 0xfe, + 0xf9, 0xfe, 0xfc, 0xfe, 0x0c, 0xff, 0x08, 0xff, 0x1a, 0xff, 0x1b, 0xff, + 0x2a, 0xff, 0x2a, 0xff, 0x3c, 0xff, 0x3b, 0xff, 0x4b, 0xff, 0x4a, 0xff, + 0x5a, 0xff, 0x5b, 0xff, 0x6a, 0xff, 0x69, 0xff, 0x7a, 0xff, 0x78, 0xff, + 0x87, 0xff, 0x87, 0xff, 0x97, 0xff, 0x96, 0xff, 0xa3, 0xff, 0xa3, 0xff, + 0xb0, 0xff, 0xb1, 0xff, 0xbe, 0xff, 0xbd, 0xff, 0xcd, 0xff, 0xca, 0xff, + 0xd8, 0xff, 0xd8, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0x0a, 0x00, 0x08, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x20, 0x00, 0x1f, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x39, 0x00, 0x38, 0x00, + 0x47, 0x00, 0x44, 0x00, 0x51, 0x00, 0x50, 0x00, 0x5e, 0x00, 0x5c, 0x00, + 0x6a, 0x00, 0x6a, 0x00, 0x79, 0x00, 0x78, 0x00, 0x84, 0x00, 0x83, 0x00, + 0x94, 0x00, 0x94, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0xb2, 0x00, 0xb0, 0x00, + 0xbe, 0x00, 0xbe, 0x00, 0xcf, 0x00, 0xcd, 0x00, 0xde, 0x00, 0xde, 0x00, + 0xec, 0x00, 0xea, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x0c, 0x01, 0x09, 0x01, + 0x1c, 0x01, 0x1c, 0x01, 0x2a, 0x01, 0x2a, 0x01, 0x3b, 0x01, 0x39, 0x01, + 0x49, 0x01, 0x4b, 0x01, 0x57, 0x01, 0x54, 0x01, 0x65, 0x01, 0x67, 0x01, + 0x74, 0x01, 0x72, 0x01, 0x81, 0x01, 0x80, 0x01, 0x8e, 0x01, 0x8e, 0x01, + 0x9a, 0x01, 0x98, 0x01, 0xa3, 0x01, 0xa3, 0x01, 0xae, 0x01, 0xae, 0x01, + 0xb8, 0x01, 0xb5, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0xc8, 0x01, 0xc5, 0x01, + 0xc9, 0x01, 0xcb, 0x01, 0xd4, 0x01, 0xd1, 0x01, 0xd3, 0x01, 0xd3, 0x01, + 0xd9, 0x01, 0xd9, 0x01, 0xda, 0x01, 0xd9, 0x01, 0xda, 0x01, 0xdc, 0x01, + 0xdb, 0x01, 0xdb, 0x01, 0xdb, 0x01, 0xdb, 0x01, 0xdc, 0x01, 0xdb, 0x01, + 0xd6, 0x01, 0xd5, 0x01, 0xd5, 0x01, 0xd4, 0x01, 0xd0, 0x01, 0xd0, 0x01, + 0xce, 0x01, 0xcb, 0x01, 0xc8, 0x01, 0xc9, 0x01, 0xc4, 0x01, 0xc1, 0x01, + 0xbe, 0x01, 0xc1, 0x01, 0xb9, 0x01, 0xb8, 0x01, 0xb3, 0x01, 0xb4, 0x01, + 0xae, 0x01, 0xae, 0x01, 0xa9, 0x01, 0xa8, 0x01, 0xa2, 0x01, 0xa2, 0x01, + 0x9d, 0x01, 0x9c, 0x01, 0x98, 0x01, 0x97, 0x01, 0x91, 0x01, 0x90, 0x01, + 0x8b, 0x01, 0x8b, 0x01, 0x85, 0x01, 0x85, 0x01, 0x7e, 0x01, 0x7e, 0x01, + 0x7b, 0x01, 0x79, 0x01, 0x73, 0x01, 0x73, 0x01, 0x6f, 0x01, 0x6d, 0x01, + 0x68, 0x01, 0x69, 0x01, 0x62, 0x01, 0x5f, 0x01, 0x5b, 0x01, 0x5b, 0x01, + 0x56, 0x01, 0x54, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x48, 0x01, 0x48, 0x01, + 0x41, 0x01, 0x3d, 0x01, 0x37, 0x01, 0x39, 0x01, 0x2e, 0x01, 0x2e, 0x01, + 0x26, 0x01, 0x23, 0x01, 0x1b, 0x01, 0x1c, 0x01, 0x0f, 0x01, 0x0d, 0x01, + 0x06, 0x01, 0x06, 0x01, 0xf8, 0x00, 0xf8, 0x00, 0xee, 0x00, 0xed, 0x00, + 0xdf, 0x00, 0xdd, 0x00, 0xcf, 0x00, 0xce, 0x00, 0xc1, 0x00, 0xc2, 0x00, + 0xb3, 0x00, 0xaf, 0x00, 0x9f, 0x00, 0xa2, 0x00, 0x93, 0x00, 0x8f, 0x00, + 0x7e, 0x00, 0x7e, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0x5b, 0x00, 0x5a, 0x00, + 0x46, 0x00, 0x46, 0x00, 0x35, 0x00, 0x33, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x0f, 0x00, 0x0d, 0x00, 0xfa, 0xff, 0xf9, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xd7, 0xff, 0xd4, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xb2, 0xff, 0xb0, 0xff, + 0x9e, 0xff, 0x9d, 0xff, 0x8b, 0xff, 0x8c, 0xff, 0x7e, 0xff, 0x7c, 0xff, + 0x68, 0xff, 0x69, 0xff, 0x5e, 0xff, 0x5d, 0xff, 0x4c, 0xff, 0x4b, 0xff, + 0x3f, 0xff, 0x3f, 0xff, 0x32, 0xff, 0x32, 0xff, 0x22, 0xff, 0x22, 0xff, + 0x18, 0xff, 0x18, 0xff, 0x0a, 0xff, 0x0b, 0xff, 0x00, 0xff, 0xff, 0xfe, + 0xf6, 0xfe, 0xf6, 0xfe, 0xee, 0xfe, 0xed, 0xfe, 0xe4, 0xfe, 0xe3, 0xfe, + 0xda, 0xfe, 0xda, 0xfe, 0xd3, 0xfe, 0xd0, 0xfe, 0xca, 0xfe, 0xc9, 0xfe, + 0xc4, 0xfe, 0xc3, 0xfe, 0xbb, 0xfe, 0xbd, 0xfe, 0xb7, 0xfe, 0xb3, 0xfe, + 0xad, 0xfe, 0xaf, 0xfe, 0xa8, 0xfe, 0xa6, 0xfe, 0xa2, 0xfe, 0xa2, 0xfe, + 0x9a, 0xfe, 0x99, 0xfe, 0x95, 0xfe, 0x95, 0xfe, 0x8d, 0xfe, 0x8c, 0xfe, + 0x87, 0xfe, 0x86, 0xfe, 0x81, 0xfe, 0x7f, 0xfe, 0x79, 0xfe, 0x78, 0xfe, + 0x75, 0xfe, 0x74, 0xfe, 0x6b, 0xfe, 0x6b, 0xfe, 0x66, 0xfe, 0x64, 0xfe, + 0x5e, 0xfe, 0x5f, 0xfe, 0x56, 0xfe, 0x54, 0xfe, 0x52, 0xfe, 0x51, 0xfe, + 0x4b, 0xfe, 0x49, 0xfe, 0x46, 0xfe, 0x46, 0xfe, 0x3f, 0xfe, 0x3e, 0xfe, + 0x3a, 0xfe, 0x38, 0xfe, 0x38, 0xfe, 0x36, 0xfe, 0x30, 0xfe, 0x30, 0xfe, + 0x2d, 0xfe, 0x2d, 0xfe, 0x29, 0xfe, 0x29, 0xfe, 0x28, 0xfe, 0x27, 0xfe, + 0x25, 0xfe, 0x26, 0xfe, 0x28, 0xfe, 0x25, 0xfe, 0x24, 0xfe, 0x27, 0xfe, + 0x29, 0xfe, 0x2a, 0xfe, 0x2b, 0xfe, 0x2a, 0xfe, 0x2d, 0xfe, 0x2e, 0xfe, + 0x32, 0xfe, 0x31, 0xfe, 0x37, 0xfe, 0x37, 0xfe, 0x3e, 0xfe, 0x40, 0xfe, + 0x46, 0xfe, 0x45, 0xfe, 0x4e, 0xfe, 0x4e, 0xfe, 0x58, 0xfe, 0x57, 0xfe, + 0x62, 0xfe, 0x62, 0xfe, 0x6d, 0xfe, 0x6c, 0xfe, 0x77, 0xfe, 0x78, 0xfe, + 0x86, 0xfe, 0x85, 0xfe, 0x91, 0xfe, 0x91, 0xfe, 0xa0, 0xfe, 0x9f, 0xfe, + 0xab, 0xfe, 0xab, 0xfe, 0xba, 0xfe, 0xb9, 0xfe, 0xc8, 0xfe, 0xc8, 0xfe, + 0xd5, 0xfe, 0xd4, 0xfe, 0xe6, 0xfe, 0xe6, 0xfe, 0xf0, 0xfe, 0xf0, 0xfe, + 0x02, 0xff, 0x03, 0xff, 0x0e, 0xff, 0x0d, 0xff, 0x1e, 0xff, 0x1d, 0xff, + 0x2c, 0xff, 0x2b, 0xff, 0x37, 0xff, 0x36, 0xff, 0x48, 0xff, 0x47, 0xff, + 0x53, 0xff, 0x52, 0xff, 0x60, 0xff, 0x60, 0xff, 0x6e, 0xff, 0x6e, 0xff, + 0x79, 0xff, 0x78, 0xff, 0x89, 0xff, 0x89, 0xff, 0x91, 0xff, 0x91, 0xff, + 0xa1, 0xff, 0x9f, 0xff, 0xab, 0xff, 0xab, 0xff, 0xb7, 0xff, 0xb6, 0xff, + 0xc4, 0xff, 0xc5, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xdc, 0xff, 0xdd, 0xff, + 0xe8, 0xff, 0xe5, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x27, 0x00, 0x27, 0x00, + 0x35, 0x00, 0x33, 0x00, 0x41, 0x00, 0x43, 0x00, 0x51, 0x00, 0x4f, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0x7c, 0x00, 0x7c, 0x00, + 0x8d, 0x00, 0x8b, 0x00, 0x9c, 0x00, 0x9b, 0x00, 0xab, 0x00, 0xac, 0x00, + 0xbb, 0x00, 0xb9, 0x00, 0xcb, 0x00, 0xca, 0x00, 0xdb, 0x00, 0xdb, 0x00, + 0xeb, 0x00, 0xe8, 0x00, 0xf9, 0x00, 0xfb, 0x00, 0x08, 0x01, 0x08, 0x01, + 0x17, 0x01, 0x16, 0x01, 0x29, 0x01, 0x27, 0x01, 0x33, 0x01, 0x35, 0x01, + 0x45, 0x01, 0x43, 0x01, 0x4f, 0x01, 0x51, 0x01, 0x5e, 0x01, 0x5c, 0x01, + 0x69, 0x01, 0x6a, 0x01, 0x74, 0x01, 0x73, 0x01, 0x7f, 0x01, 0x7e, 0x01, + 0x88, 0x01, 0x88, 0x01, 0x91, 0x01, 0x91, 0x01, 0x99, 0x01, 0x98, 0x01, + 0x9f, 0x01, 0xa0, 0x01, 0xa9, 0x01, 0xa8, 0x01, 0xab, 0x01, 0xab, 0x01, + 0xb3, 0x01, 0xb1, 0x01, 0xb5, 0x01, 0xb5, 0x01, 0xba, 0x01, 0xb8, 0x01, + 0xbd, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0xbe, 0x01, 0xc1, 0x01, 0xc1, 0x01, + 0xc1, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xbf, 0x01, 0xc2, 0x01, 0xc0, 0x01, + 0xbf, 0x01, 0xbf, 0x01, 0xbd, 0x01, 0xbc, 0x01, 0xbe, 0x01, 0xbe, 0x01, + 0xba, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, 0x01, 0xb6, 0x01, 0xb4, 0x01, + 0xb2, 0x01, 0xb2, 0x01, 0xb0, 0x01, 0xaf, 0x01, 0xab, 0x01, 0xab, 0x01, + 0xaa, 0x01, 0xa9, 0x01, 0xa5, 0x01, 0xa4, 0x01, 0xa0, 0x01, 0xa1, 0x01, + 0x9f, 0x01, 0x9e, 0x01, 0x9b, 0x01, 0x99, 0x01, 0x94, 0x01, 0x94, 0x01, + 0x93, 0x01, 0x90, 0x01, 0x8b, 0x01, 0x8b, 0x01, 0x8a, 0x01, 0x88, 0x01, + 0x82, 0x01, 0x81, 0x01, 0x7f, 0x01, 0x7d, 0x01, 0x78, 0x01, 0x76, 0x01, + 0x70, 0x01, 0x70, 0x01, 0x6d, 0x01, 0x6c, 0x01, 0x62, 0x01, 0x61, 0x01, + 0x5e, 0x01, 0x5d, 0x01, 0x54, 0x01, 0x51, 0x01, 0x4b, 0x01, 0x4b, 0x01, + 0x42, 0x01, 0x42, 0x01, 0x39, 0x01, 0x36, 0x01, 0x2e, 0x01, 0x2f, 0x01, + 0x23, 0x01, 0x1f, 0x01, 0x18, 0x01, 0x18, 0x01, 0x0c, 0x01, 0x0a, 0x01, + 0x01, 0x01, 0x00, 0x01, 0xf2, 0x00, 0xf1, 0x00, 0xe5, 0x00, 0xe4, 0x00, + 0xd6, 0x00, 0xd4, 0x00, 0xc7, 0x00, 0xc5, 0x00, 0xba, 0x00, 0xb8, 0x00, + 0xa6, 0x00, 0xa6, 0x00, 0x99, 0x00, 0x98, 0x00, 0x87, 0x00, 0x87, 0x00, + 0x78, 0x00, 0x77, 0x00, 0x65, 0x00, 0x66, 0x00, 0x56, 0x00, 0x55, 0x00, + 0x45, 0x00, 0x44, 0x00, 0x34, 0x00, 0x34, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xf1, 0xff, + 0xe0, 0xff, 0xde, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xc0, 0xff, 0xbf, 0xff, + 0xb2, 0xff, 0xb1, 0xff, 0xa2, 0xff, 0xa1, 0xff, 0x95, 0xff, 0x94, 0xff, + 0x85, 0xff, 0x85, 0xff, 0x78, 0xff, 0x75, 0xff, 0x69, 0xff, 0x69, 0xff, + 0x5d, 0xff, 0x5a, 0xff, 0x4d, 0xff, 0x4e, 0xff, 0x43, 0xff, 0x41, 0xff, + 0x36, 0xff, 0x35, 0xff, 0x2a, 0xff, 0x29, 0xff, 0x1e, 0xff, 0x1d, 0xff, + 0x13, 0xff, 0x13, 0xff, 0x0a, 0xff, 0x07, 0xff, 0xfe, 0xfe, 0xfd, 0xfe, + 0xf4, 0xfe, 0xf3, 0xfe, 0xe9, 0xfe, 0xe8, 0xfe, 0xdf, 0xfe, 0xdf, 0xfe, + 0xd7, 0xfe, 0xd6, 0xfe, 0xcc, 0xfe, 0xcb, 0xfe, 0xc4, 0xfe, 0xc4, 0xfe, + 0xba, 0xfe, 0xb9, 0xfe, 0xb2, 0xfe, 0xb2, 0xfe, 0xa9, 0xfe, 0xaa, 0xfe, + 0xa1, 0xfe, 0xa0, 0xfe, 0x97, 0xfe, 0x98, 0xfe, 0x8f, 0xfe, 0x8e, 0xfe, + 0x88, 0xfe, 0x86, 0xfe, 0x7f, 0xfe, 0x80, 0xfe, 0x78, 0xfe, 0x76, 0xfe, + 0x72, 0xfe, 0x72, 0xfe, 0x67, 0xfe, 0x67, 0xfe, 0x65, 0xfe, 0x63, 0xfe, + 0x5b, 0xfe, 0x5b, 0xfe, 0x57, 0xfe, 0x56, 0xfe, 0x52, 0xfe, 0x51, 0xfe, + 0x4c, 0xfe, 0x4a, 0xfe, 0x4a, 0xfe, 0x4a, 0xfe, 0x44, 0xfe, 0x42, 0xfe, + 0x40, 0xfe, 0x40, 0xfe, 0x40, 0xfe, 0x3e, 0xfe, 0x3b, 0xfe, 0x3b, 0xfe, + 0x3c, 0xfe, 0x3b, 0xfe, 0x38, 0xfe, 0x37, 0xfe, 0x3a, 0xfe, 0x3a, 0xfe, + 0x3a, 0xfe, 0x39, 0xfe, 0x3a, 0xfe, 0x3a, 0xfe, 0x3f, 0xfe, 0x3d, 0xfe, + 0x3e, 0xfe, 0x40, 0xfe, 0x44, 0xfe, 0x43, 0xfe, 0x45, 0xfe, 0x46, 0xfe, + 0x4d, 0xfe, 0x4c, 0xfe, 0x50, 0xfe, 0x50, 0xfe, 0x58, 0xfe, 0x58, 0xfe, + 0x5d, 0xfe, 0x5f, 0xfe, 0x65, 0xfe, 0x65, 0xfe, 0x6d, 0xfe, 0x6c, 0xfe, + 0x77, 0xfe, 0x76, 0xfe, 0x7e, 0xfe, 0x7e, 0xfe, 0x87, 0xfe, 0x88, 0xfe, + 0x92, 0xfe, 0x92, 0xfe, 0x9c, 0xfe, 0x9a, 0xfe, 0xa5, 0xfe, 0xa6, 0xfe, + 0xb2, 0xfe, 0xb2, 0xfe, 0xbb, 0xfe, 0xba, 0xfe, 0xca, 0xfe, 0xc8, 0xfe, + 0xd3, 0xfe, 0xd3, 0xfe, 0xde, 0xfe, 0xde, 0xfe, 0xec, 0xfe, 0xec, 0xfe, + 0xf4, 0xfe, 0xf3, 0xfe, 0x02, 0xff, 0x02, 0xff, 0x0d, 0xff, 0x0d, 0xff, + 0x1a, 0xff, 0x19, 0xff, 0x26, 0xff, 0x27, 0xff, 0x33, 0xff, 0x31, 0xff, + 0x40, 0xff, 0x3f, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x58, 0xff, 0x59, 0xff, + 0x66, 0xff, 0x64, 0xff, 0x71, 0xff, 0x72, 0xff, 0x82, 0xff, 0x7f, 0xff, + 0x8b, 0xff, 0x8d, 0xff, 0x9b, 0xff, 0x99, 0xff, 0xa6, 0xff, 0xa6, 0xff, + 0xb4, 0xff, 0xb3, 0xff, 0xc0, 0xff, 0xc2, 0xff, 0xd2, 0xff, 0xcf, 0xff, + 0xdd, 0xff, 0xdd, 0xff, 0xee, 0xff, 0xed, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0x07, 0x00, 0x07, 0x00, 0x18, 0x00, 0x18, 0x00, 0x24, 0x00, 0x23, 0x00, + 0x34, 0x00, 0x35, 0x00, 0x41, 0x00, 0x3f, 0x00, 0x51, 0x00, 0x51, 0x00, + 0x62, 0x00, 0x61, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x7d, 0x00, 0x7d, 0x00, + 0x8c, 0x00, 0x8b, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0xab, 0x00, 0xaa, 0x00, + 0xb8, 0x00, 0xb9, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xd6, 0x00, 0xd7, 0x00, + 0xe3, 0x00, 0xe2, 0x00, 0xf2, 0x00, 0xf1, 0x00, 0xfd, 0x00, 0xfe, 0x00, + 0x0d, 0x01, 0x0c, 0x01, 0x17, 0x01, 0x18, 0x01, 0x25, 0x01, 0x26, 0x01, + 0x32, 0x01, 0x30, 0x01, 0x3b, 0x01, 0x3c, 0x01, 0x49, 0x01, 0x47, 0x01, + 0x52, 0x01, 0x53, 0x01, 0x5b, 0x01, 0x59, 0x01, 0x67, 0x01, 0x67, 0x01, + 0x6c, 0x01, 0x6b, 0x01, 0x78, 0x01, 0x76, 0x01, 0x7e, 0x01, 0x7d, 0x01, + 0x86, 0x01, 0x83, 0x01, 0x8c, 0x01, 0x8c, 0x01, 0x8f, 0x01, 0x8e, 0x01, + 0x9a, 0x01, 0x97, 0x01, 0x9b, 0x01, 0x9a, 0x01, 0xa2, 0x01, 0x9f, 0x01, + 0xa4, 0x01, 0xa2, 0x01, 0xa7, 0x01, 0xa6, 0x01, 0xaa, 0x01, 0xa8, 0x01, + 0xac, 0x01, 0xac, 0x01, 0xae, 0x01, 0xad, 0x01, 0xb1, 0x01, 0xaf, 0x01, + 0xb1, 0x01, 0xb0, 0x01, 0xb3, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb1, 0x01, + 0xb3, 0x01, 0xb1, 0x01, 0xb2, 0x01, 0xb0, 0x01, 0xb0, 0x01, 0xaf, 0x01, + 0xaf, 0x01, 0xad, 0x01, 0xae, 0x01, 0xac, 0x01, 0xab, 0x01, 0xaa, 0x01, + 0xa9, 0x01, 0xa8, 0x01, 0xa7, 0x01, 0xa3, 0x01, 0xa3, 0x01, 0xa4, 0x01, + 0xa1, 0x01, 0x9e, 0x01, 0x9c, 0x01, 0x9a, 0x01, 0x98, 0x01, 0x96, 0x01, + 0x94, 0x01, 0x93, 0x01, 0x8d, 0x01, 0x8e, 0x01, 0x8a, 0x01, 0x87, 0x01, + 0x84, 0x01, 0x83, 0x01, 0x7e, 0x01, 0x7c, 0x01, 0x79, 0x01, 0x77, 0x01, + 0x70, 0x01, 0x6f, 0x01, 0x6c, 0x01, 0x67, 0x01, 0x5f, 0x01, 0x5f, 0x01, + 0x5a, 0x01, 0x57, 0x01, 0x4f, 0x01, 0x4d, 0x01, 0x47, 0x01, 0x45, 0x01, + 0x3b, 0x01, 0x3c, 0x01, 0x32, 0x01, 0x2f, 0x01, 0x25, 0x01, 0x27, 0x01, + 0x1d, 0x01, 0x19, 0x01, 0x0e, 0x01, 0x0f, 0x01, 0x04, 0x01, 0x02, 0x01, + 0xf8, 0x00, 0xf6, 0x00, 0xe8, 0x00, 0xe8, 0x00, 0xdd, 0x00, 0xda, 0x00, + 0xce, 0x00, 0xce, 0x00, 0xc2, 0x00, 0xc1, 0x00, 0xb5, 0x00, 0xb1, 0x00, + 0xa3, 0x00, 0xa2, 0x00, 0x97, 0x00, 0x97, 0x00, 0x86, 0x00, 0x85, 0x00, + 0x79, 0x00, 0x78, 0x00, 0x69, 0x00, 0x68, 0x00, 0x5a, 0x00, 0x57, 0x00, + 0x4b, 0x00, 0x4c, 0x00, 0x38, 0x00, 0x37, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x1b, 0x00, 0x1a, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0xfe, 0xff, 0xfd, 0xff, + 0xef, 0xff, 0xed, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xd1, 0xff, 0xd0, 0xff, + 0xc3, 0xff, 0xc3, 0xff, 0xb4, 0xff, 0xb5, 0xff, 0xa7, 0xff, 0xa6, 0xff, + 0x9b, 0xff, 0x9b, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x7e, 0xff, 0x7d, 0xff, + 0x6f, 0xff, 0x72, 0xff, 0x64, 0xff, 0x62, 0xff, 0x58, 0xff, 0x59, 0xff, + 0x4b, 0xff, 0x48, 0xff, 0x3d, 0xff, 0x3d, 0xff, 0x32, 0xff, 0x31, 0xff, + 0x25, 0xff, 0x24, 0xff, 0x1b, 0xff, 0x1a, 0xff, 0x0e, 0xff, 0x0d, 0xff, + 0x04, 0xff, 0x05, 0xff, 0xf7, 0xfe, 0xf6, 0xfe, 0xec, 0xfe, 0xec, 0xfe, + 0xe2, 0xfe, 0xe3, 0xfe, 0xd8, 0xfe, 0xd6, 0xfe, 0xcf, 0xfe, 0xce, 0xfe, + 0xc3, 0xfe, 0xc2, 0xfe, 0xbb, 0xfe, 0xbb, 0xfe, 0xb0, 0xfe, 0xaf, 0xfe, + 0xa7, 0xfe, 0xa7, 0xfe, 0x9f, 0xfe, 0x9f, 0xfe, 0x95, 0xfe, 0x96, 0xfe, + 0x90, 0xfe, 0x8f, 0xfe, 0x87, 0xfe, 0x87, 0xfe, 0x81, 0xfe, 0x7e, 0xfe, + 0x78, 0xfe, 0x79, 0xfe, 0x72, 0xfe, 0x6e, 0xfe, 0x6a, 0xfe, 0x6b, 0xfe, + 0x68, 0xfe, 0x65, 0xfe, 0x5f, 0xfe, 0x60, 0xfe, 0x5d, 0xfe, 0x5a, 0xfe, + 0x56, 0xfe, 0x59, 0xfe, 0x56, 0xfe, 0x51, 0xfe, 0x50, 0xfe, 0x52, 0xfe, + 0x4f, 0xfe, 0x4c, 0xfe, 0x4c, 0xfe, 0x4c, 0xfe, 0x4a, 0xfe, 0x49, 0xfe, + 0x4b, 0xfe, 0x49, 0xfe, 0x49, 0xfe, 0x49, 0xfe, 0x4c, 0xfe, 0x48, 0xfe, + 0x4a, 0xfe, 0x4a, 0xfe, 0x4f, 0xfe, 0x4c, 0xfe, 0x4e, 0xfe, 0x4d, 0xfe, + 0x50, 0xfe, 0x4f, 0xfe, 0x56, 0xfe, 0x55, 0xfe, 0x57, 0xfe, 0x55, 0xfe, + 0x5d, 0xfe, 0x5c, 0xfe, 0x61, 0xfe, 0x60, 0xfe, 0x66, 0xfe, 0x64, 0xfe, + 0x6d, 0xfe, 0x6c, 0xfe, 0x72, 0xfe, 0x70, 0xfe, 0x7a, 0xfe, 0x79, 0xfe, + 0x80, 0xfe, 0x7f, 0xfe, 0x86, 0xfe, 0x86, 0xfe, 0x91, 0xfe, 0x90, 0xfe, + 0x99, 0xfe, 0x97, 0xfe, 0xa0, 0xfe, 0xa0, 0xfe, 0xa9, 0xfe, 0xa7, 0xfe, + 0xb1, 0xfe, 0xb3, 0xfe, 0xbc, 0xfe, 0xb9, 0xfe, 0xc6, 0xfe, 0xc5, 0xfe, + 0xd1, 0xfe, 0xd1, 0xfe, 0xdb, 0xfe, 0xda, 0xfe, 0xe6, 0xfe, 0xe4, 0xfe, + 0xef, 0xfe, 0xf0, 0xfe, 0xfe, 0xfe, 0xfc, 0xfe, 0x07, 0xff, 0x07, 0xff, + 0x10, 0xff, 0x12, 0xff, 0x20, 0xff, 0x1c, 0xff, 0x29, 0xff, 0x2a, 0xff, + 0x37, 0xff, 0x37, 0xff, 0x43, 0xff, 0x42, 0xff, 0x50, 0xff, 0x4f, 0xff, + 0x5c, 0xff, 0x5b, 0xff, 0x68, 0xff, 0x68, 0xff, 0x76, 0xff, 0x76, 0xff, + 0x84, 0xff, 0x83, 0xff, 0x91, 0xff, 0x8f, 0xff, 0xa0, 0xff, 0x9f, 0xff, + 0xac, 0xff, 0xab, 0xff, 0xbc, 0xff, 0xbb, 0xff, 0xc6, 0xff, 0xc6, 0xff, + 0xd8, 0xff, 0xd5, 0xff, 0xe6, 0xff, 0xe3, 0xff, 0xf4, 0xff, 0xf2, 0xff, + 0x03, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x20, 0x00, 0x1e, 0x00, + 0x2d, 0x00, 0x2d, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x4b, 0x00, 0x4c, 0x00, + 0x59, 0x00, 0x57, 0x00, 0x69, 0x00, 0x68, 0x00, 0x75, 0x00, 0x76, 0x00, + 0x84, 0x00, 0x83, 0x00, 0x92, 0x00, 0x93, 0x00, 0xa0, 0x00, 0xa1, 0x00, + 0xaf, 0x00, 0xae, 0x00, 0xba, 0x00, 0xbc, 0x00, 0xcc, 0x00, 0xc9, 0x00, + 0xd5, 0x00, 0xd7, 0x00, 0xe5, 0x00, 0xe4, 0x00, 0xf0, 0x00, 0xef, 0x00, + 0xfa, 0x00, 0xfd, 0x00, 0x09, 0x01, 0x08, 0x01, 0x14, 0x01, 0x13, 0x01, + 0x1f, 0x01, 0x20, 0x01, 0x29, 0x01, 0x27, 0x01, 0x33, 0x01, 0x33, 0x01, + 0x3f, 0x01, 0x3e, 0x01, 0x47, 0x01, 0x47, 0x01, 0x52, 0x01, 0x51, 0x01, + 0x59, 0x01, 0x5b, 0x01, 0x62, 0x01, 0x5f, 0x01, 0x69, 0x01, 0x6c, 0x01, + 0x70, 0x01, 0x6f, 0x01, 0x77, 0x01, 0x78, 0x01, 0x7d, 0x01, 0x7d, 0x01, + 0x85, 0x01, 0x84, 0x01, 0x8a, 0x01, 0x8a, 0x01, 0x8f, 0x01, 0x90, 0x01, + 0x94, 0x01, 0x92, 0x01, 0x97, 0x01, 0x98, 0x01, 0x9b, 0x01, 0x9a, 0x01, + 0xa0, 0x01, 0xa0, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa6, 0x01, 0xa5, 0x01, + 0xa3, 0x01, 0xa4, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0xa8, 0x01, 0xa8, 0x01, + 0xa6, 0x01, 0xa9, 0x01, 0xac, 0x01, 0xaa, 0x01, 0xa5, 0x01, 0xa7, 0x01, + 0xab, 0x01, 0xab, 0x01, 0xa7, 0x01, 0xa6, 0x01, 0xa6, 0x01, 0xa7, 0x01, + 0xa6, 0x01, 0xa4, 0x01, 0xa2, 0x01, 0xa2, 0x01, 0xa0, 0x01, 0xa1, 0x01, + 0x9b, 0x01, 0x9b, 0x01, 0x9b, 0x01, 0x9b, 0x01, 0x95, 0x01, 0x94, 0x01, + 0x8f, 0x01, 0x90, 0x01, 0x8c, 0x01, 0x8b, 0x01, 0x84, 0x01, 0x83, 0x01, + 0x81, 0x01, 0x81, 0x01, 0x79, 0x01, 0x77, 0x01, 0x74, 0x01, 0x75, 0x01, + 0x6d, 0x01, 0x6c, 0x01, 0x64, 0x01, 0x64, 0x01, 0x5c, 0x01, 0x5c, 0x01, + 0x52, 0x01, 0x52, 0x01, 0x4c, 0x01, 0x4b, 0x01, 0x3e, 0x01, 0x42, 0x01, + 0x38, 0x01, 0x36, 0x01, 0x2c, 0x01, 0x2d, 0x01, 0x21, 0x01, 0x21, 0x01, + 0x1a, 0x01, 0x18, 0x01, 0x09, 0x01, 0x0b, 0x01, 0x03, 0x01, 0x01, 0x01, + 0xf4, 0x00, 0xf4, 0x00, 0xe8, 0x00, 0xe9, 0x00, 0xdd, 0x00, 0xdb, 0x00, + 0xcc, 0x00, 0xce, 0x00, 0xc4, 0x00, 0xc2, 0x00, 0xb2, 0x00, 0xb2, 0x00, + 0xa8, 0x00, 0xa8, 0x00, 0x99, 0x00, 0x98, 0x00, 0x8b, 0x00, 0x8b, 0x00, + 0x7e, 0x00, 0x7e, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x62, 0x00, 0x60, 0x00, + 0x51, 0x00, 0x52, 0x00, 0x48, 0x00, 0x43, 0x00, 0x34, 0x00, 0x37, 0x00, + 0x27, 0x00, 0x26, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x09, 0x00, 0x08, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xec, 0xff, 0xee, 0xff, 0xdf, 0xff, 0xde, 0xff, + 0xd1, 0xff, 0xd2, 0xff, 0xc3, 0xff, 0xc2, 0xff, 0xb7, 0xff, 0xb6, 0xff, + 0xa7, 0xff, 0xa8, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x8d, 0xff, 0x8d, 0xff, + 0x80, 0xff, 0x81, 0xff, 0x73, 0xff, 0x74, 0xff, 0x64, 0xff, 0x64, 0xff, + 0x5b, 0xff, 0x5c, 0xff, 0x4c, 0xff, 0x48, 0xff, 0x40, 0xff, 0x43, 0xff, + 0x33, 0xff, 0x32, 0xff, 0x28, 0xff, 0x28, 0xff, 0x1e, 0xff, 0x1f, 0xff, + 0x10, 0xff, 0x0e, 0xff, 0x05, 0xff, 0x06, 0xff, 0xfb, 0xfe, 0xfa, 0xfe, + 0xf0, 0xfe, 0xef, 0xfe, 0xe5, 0xfe, 0xe6, 0xfe, 0xd9, 0xfe, 0xd8, 0xfe, + 0xd0, 0xfe, 0xd1, 0xfe, 0xc6, 0xfe, 0xc6, 0xfe, 0xbb, 0xfe, 0xbc, 0xfe, + 0xb4, 0xfe, 0xb4, 0xfe, 0xac, 0xfe, 0xaa, 0xfe, 0xa2, 0xfe, 0xa4, 0xfe, + 0x9b, 0xfe, 0x99, 0xfe, 0x92, 0xfe, 0x94, 0xfe, 0x8c, 0xfe, 0x8b, 0xfe, + 0x84, 0xfe, 0x84, 0xfe, 0x7e, 0xfe, 0x7e, 0xfe, 0x78, 0xfe, 0x78, 0xfe, + 0x74, 0xfe, 0x72, 0xfe, 0x6f, 0xfe, 0x6f, 0xfe, 0x6a, 0xfe, 0x69, 0xfe, + 0x66, 0xfe, 0x67, 0xfe, 0x61, 0xfe, 0x5f, 0xfe, 0x60, 0xfe, 0x5f, 0xfe, + 0x5b, 0xfe, 0x5b, 0xfe, 0x5b, 0xfe, 0x59, 0xfe, 0x59, 0xfe, 0x59, 0xfe, + 0x58, 0xfe, 0x57, 0xfe, 0x56, 0xfe, 0x57, 0xfe, 0x56, 0xfe, 0x55, 0xfe, + 0x59, 0xfe, 0x59, 0xfe, 0x57, 0xfe, 0x55, 0xfe, 0x5b, 0xfe, 0x5c, 0xfe, + 0x5d, 0xfe, 0x5a, 0xfe, 0x5f, 0xfe, 0x60, 0xfe, 0x62, 0xfe, 0x63, 0xfe, + 0x67, 0xfe, 0x64, 0xfe, 0x6b, 0xfe, 0x6e, 0xfe, 0x6e, 0xfe, 0x6e, 0xfe, + 0x76, 0xfe, 0x75, 0xfe, 0x79, 0xfe, 0x7a, 0xfe, 0x81, 0xfe, 0x7f, 0xfe, + 0x86, 0xfe, 0x87, 0xfe, 0x8e, 0xfe, 0x8d, 0xfe, 0x94, 0xfe, 0x93, 0xfe, + 0x9d, 0xfe, 0x9e, 0xfe, 0xa4, 0xfe, 0xa3, 0xfe, 0xab, 0xfe, 0xad, 0xfe, + 0xb4, 0xfe, 0xb4, 0xfe, 0xbe, 0xfe, 0xc0, 0xfe, 0xc6, 0xfe, 0xc4, 0xfe, + 0xd0, 0xfe, 0xd1, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xe4, 0xfe, 0xe5, 0xfe, + 0xef, 0xfe, 0xef, 0xfe, 0xf8, 0xfe, 0xf9, 0xfe, 0x04, 0xff, 0x04, 0xff, + 0x0e, 0xff, 0x0f, 0xff, 0x1b, 0xff, 0x1a, 0xff, 0x26, 0xff, 0x25, 0xff, + 0x31, 0xff, 0x32, 0xff, 0x3e, 0xff, 0x3d, 0xff, 0x4a, 0xff, 0x4b, 0xff, + 0x58, 0xff, 0x58, 0xff, 0x63, 0xff, 0x61, 0xff, 0x72, 0xff, 0x73, 0xff, + 0x7d, 0xff, 0x7a, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x98, 0xff, 0x98, 0xff, + 0xa8, 0xff, 0xa2, 0xff, 0xb3, 0xff, 0xb5, 0xff, 0xc1, 0xff, 0xbf, 0xff, + 0xd1, 0xff, 0xd0, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xee, 0xff, 0xec, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0x08, 0x00, 0x08, 0x00, 0x19, 0x00, 0x17, 0x00, + 0x24, 0x00, 0x25, 0x00, 0x33, 0x00, 0x31, 0x00, 0x41, 0x00, 0x40, 0x00, + 0x4e, 0x00, 0x4f, 0x00, 0x5d, 0x00, 0x5c, 0x00, 0x6b, 0x00, 0x6c, 0x00, + 0x7a, 0x00, 0x78, 0x00, 0x86, 0x00, 0x86, 0x00, 0x96, 0x00, 0x95, 0x00, + 0xa2, 0x00, 0xa3, 0x00, 0xaf, 0x00, 0xad, 0x00, 0xbc, 0x00, 0xbd, 0x00, + 0xca, 0x00, 0xc7, 0x00, 0xd5, 0x00, 0xd7, 0x00, 0xdf, 0x00, 0xe0, 0x00, + 0xec, 0x00, 0xed, 0x00, 0xfa, 0x00, 0xf9, 0x00, 0x04, 0x01, 0x04, 0x01, + 0x0f, 0x01, 0x0e, 0x01, 0x19, 0x01, 0x19, 0x01, 0x24, 0x01, 0x25, 0x01, + 0x2d, 0x01, 0x2c, 0x01, 0x38, 0x01, 0x38, 0x01, 0x3f, 0x01, 0x3e, 0x01, + 0x4a, 0x01, 0x49, 0x01, 0x50, 0x01, 0x51, 0x01, 0x59, 0x01, 0x58, 0x01, + 0x61, 0x01, 0x62, 0x01, 0x67, 0x01, 0x67, 0x01, 0x6f, 0x01, 0x6d, 0x01, + 0x75, 0x01, 0x75, 0x01, 0x7a, 0x01, 0x78, 0x01, 0x7f, 0x01, 0x80, 0x01, + 0x83, 0x01, 0x83, 0x01, 0x8a, 0x01, 0x89, 0x01, 0x8c, 0x01, 0x8f, 0x01, + 0x90, 0x01, 0x8e, 0x01, 0x96, 0x01, 0x98, 0x01, 0x94, 0x01, 0x93, 0x01, + 0x98, 0x01, 0x9b, 0x01, 0x9a, 0x01, 0x99, 0x01, 0x9b, 0x01, 0x9c, 0x01, + 0x9e, 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0x9f, 0x01, 0x9f, 0x01, + 0xa1, 0x01, 0x9f, 0x01, 0x9d, 0x01, 0x9f, 0x01, 0x9d, 0x01, 0x9d, 0x01, + 0x9a, 0x01, 0x9a, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x97, 0x01, 0x97, 0x01, + 0x94, 0x01, 0x93, 0x01, 0x91, 0x01, 0x91, 0x01, 0x8f, 0x01, 0x8e, 0x01, + 0x8a, 0x01, 0x8b, 0x01, 0x86, 0x01, 0x85, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x7b, 0x01, 0x7c, 0x01, 0x74, 0x01, 0x73, 0x01, 0x6d, 0x01, 0x6e, 0x01, + 0x66, 0x01, 0x65, 0x01, 0x61, 0x01, 0x61, 0x01, 0x57, 0x01, 0x57, 0x01, + 0x4f, 0x01, 0x4f, 0x01, 0x47, 0x01, 0x45, 0x01, 0x3e, 0x01, 0x3f, 0x01, + 0x35, 0x01, 0x34, 0x01, 0x29, 0x01, 0x29, 0x01, 0x21, 0x01, 0x1f, 0x01, + 0x15, 0x01, 0x17, 0x01, 0x0b, 0x01, 0x09, 0x01, 0x00, 0x01, 0x00, 0x01, + 0xf5, 0x00, 0xf4, 0x00, 0xe8, 0x00, 0xe8, 0x00, 0xdc, 0x00, 0xdb, 0x00, + 0xcf, 0x00, 0xce, 0x00, 0xc5, 0x00, 0xc4, 0x00, 0xb6, 0x00, 0xb4, 0x00, + 0xab, 0x00, 0xab, 0x00, 0x9c, 0x00, 0x9b, 0x00, 0x8e, 0x00, 0x8f, 0x00, + 0x83, 0x00, 0x81, 0x00, 0x73, 0x00, 0x75, 0x00, 0x68, 0x00, 0x67, 0x00, + 0x59, 0x00, 0x58, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x40, 0x00, 0x3f, 0x00, + 0x2e, 0x00, 0x2f, 0x00, 0x22, 0x00, 0x20, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xfb, 0xff, 0xf9, 0xff, 0xe9, 0xff, 0xea, 0xff, + 0xde, 0xff, 0xdc, 0xff, 0xcf, 0xff, 0xd1, 0xff, 0xc3, 0xff, 0xc1, 0xff, + 0xb6, 0xff, 0xb6, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0x9c, 0xff, 0x99, 0xff, + 0x8d, 0xff, 0x90, 0xff, 0x84, 0xff, 0x80, 0xff, 0x71, 0xff, 0x72, 0xff, + 0x68, 0xff, 0x69, 0xff, 0x5c, 0xff, 0x59, 0xff, 0x4d, 0xff, 0x4f, 0xff, + 0x43, 0xff, 0x41, 0xff, 0x34, 0xff, 0x35, 0xff, 0x29, 0xff, 0x28, 0xff, + 0x1e, 0xff, 0x1e, 0xff, 0x12, 0xff, 0x13, 0xff, 0x07, 0xff, 0x07, 0xff, + 0xfd, 0xfe, 0xfd, 0xfe, 0xf1, 0xfe, 0xef, 0xfe, 0xe6, 0xfe, 0xe8, 0xfe, + 0xdd, 0xfe, 0xdb, 0xfe, 0xd2, 0xfe, 0xd2, 0xfe, 0xca, 0xfe, 0xca, 0xfe, + 0xc0, 0xfe, 0xc1, 0xfe, 0xb9, 0xfe, 0xb7, 0xfe, 0xad, 0xfe, 0xae, 0xfe, + 0xa8, 0xfe, 0xa8, 0xfe, 0x9e, 0xfe, 0x9e, 0xfe, 0x98, 0xfe, 0x98, 0xfe, + 0x91, 0xfe, 0x90, 0xfe, 0x8a, 0xfe, 0x8a, 0xfe, 0x86, 0xfe, 0x86, 0xfe, + 0x7f, 0xfe, 0x7e, 0xfe, 0x7a, 0xfe, 0x7a, 0xfe, 0x76, 0xfe, 0x75, 0xfe, + 0x72, 0xfe, 0x72, 0xfe, 0x6f, 0xfe, 0x6d, 0xfe, 0x6b, 0xfe, 0x6c, 0xfe, + 0x6a, 0xfe, 0x67, 0xfe, 0x66, 0xfe, 0x66, 0xfe, 0x66, 0xfe, 0x65, 0xfe, + 0x64, 0xfe, 0x63, 0xfe, 0x63, 0xfe, 0x63, 0xfe, 0x65, 0xfe, 0x63, 0xfe, + 0x63, 0xfe, 0x64, 0xfe, 0x65, 0xfe, 0x64, 0xfe, 0x66, 0xfe, 0x66, 0xfe, + 0x67, 0xfe, 0x66, 0xfe, 0x6a, 0xfe, 0x6b, 0xfe, 0x6c, 0xfe, 0x6b, 0xfe, + 0x6f, 0xfe, 0x6e, 0xfe, 0x74, 0xfe, 0x75, 0xfe, 0x78, 0xfe, 0x75, 0xfe, + 0x7d, 0xfe, 0x7d, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x88, 0xfe, 0x86, 0xfe, + 0x8b, 0xfe, 0x8e, 0xfe, 0x93, 0xfe, 0x90, 0xfe, 0x98, 0xfe, 0x9a, 0xfe, + 0xa1, 0xfe, 0x9e, 0xfe, 0xa6, 0xfe, 0xa7, 0xfe, 0xb0, 0xfe, 0xaf, 0xfe, + 0xb7, 0xfe, 0xb7, 0xfe, 0xc0, 0xfe, 0xbe, 0xfe, 0xc7, 0xfe, 0xc9, 0xfe, + 0xd1, 0xfe, 0xcf, 0xfe, 0xda, 0xfe, 0xd9, 0xfe, 0xe5, 0xfe, 0xe4, 0xfe, + 0xee, 0xfe, 0xec, 0xfe, 0xf8, 0xfe, 0xf8, 0xfe, 0x02, 0xff, 0x02, 0xff, + 0x0c, 0xff, 0x0b, 0xff, 0x19, 0xff, 0x19, 0xff, 0x23, 0xff, 0x21, 0xff, + 0x2e, 0xff, 0x2e, 0xff, 0x3d, 0xff, 0x3b, 0xff, 0x45, 0xff, 0x46, 0xff, + 0x53, 0xff, 0x53, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x6a, 0xff, 0x6a, 0xff, + 0x7b, 0xff, 0x7a, 0xff, 0x83, 0xff, 0x85, 0xff, 0x93, 0xff, 0x93, 0xff, + 0x9f, 0xff, 0xa0, 0xff, 0xae, 0xff, 0xae, 0xff, 0xbb, 0xff, 0xb9, 0xff, + 0xc8, 0xff, 0xca, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xe4, 0xff, 0xe3, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0e, 0x00, 0x0f, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x29, 0x00, 0x28, 0x00, 0x38, 0x00, 0x39, 0x00, + 0x44, 0x00, 0x43, 0x00, 0x53, 0x00, 0x54, 0x00, 0x5e, 0x00, 0x5f, 0x00, + 0x6e, 0x00, 0x6e, 0x00, 0x7b, 0x00, 0x7e, 0x00, 0x89, 0x00, 0x87, 0x00, + 0x93, 0x00, 0x95, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xb0, 0x00, 0xae, 0x00, + 0xbb, 0x00, 0xbb, 0x00, 0xc9, 0x00, 0xc7, 0x00, 0xd1, 0x00, 0xd5, 0x00, + 0xe1, 0x00, 0xdf, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0xf7, 0x00, 0xf6, 0x00, + 0xff, 0x00, 0xff, 0x00, 0x0b, 0x01, 0x0c, 0x01, 0x15, 0x01, 0x14, 0x01, + 0x1f, 0x01, 0x1f, 0x01, 0x29, 0x01, 0x27, 0x01, 0x32, 0x01, 0x31, 0x01, + 0x3a, 0x01, 0x3a, 0x01, 0x41, 0x01, 0x3f, 0x01, 0x4a, 0x01, 0x4b, 0x01, + 0x52, 0x01, 0x50, 0x01, 0x58, 0x01, 0x58, 0x01, 0x60, 0x01, 0x5f, 0x01, + 0x65, 0x01, 0x66, 0x01, 0x6c, 0x01, 0x6b, 0x01, 0x72, 0x01, 0x71, 0x01, + 0x76, 0x01, 0x76, 0x01, 0x7c, 0x01, 0x7a, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x83, 0x01, 0x82, 0x01, 0x89, 0x01, 0x88, 0x01, 0x89, 0x01, 0x89, 0x01, + 0x8e, 0x01, 0x8c, 0x01, 0x91, 0x01, 0x91, 0x01, 0x91, 0x01, 0x91, 0x01, + 0x94, 0x01, 0x91, 0x01, 0x94, 0x01, 0x93, 0x01, 0x95, 0x01, 0x94, 0x01, + 0x95, 0x01, 0x94, 0x01, 0x93, 0x01, 0x96, 0x01, 0x95, 0x01, 0x94, 0x01, + 0x92, 0x01, 0x92, 0x01, 0x90, 0x01, 0x92, 0x01, 0x90, 0x01, 0x8d, 0x01, + 0x8b, 0x01, 0x8d, 0x01, 0x8b, 0x01, 0x89, 0x01, 0x86, 0x01, 0x87, 0x01, + 0x83, 0x01, 0x82, 0x01, 0x7d, 0x01, 0x7e, 0x01, 0x78, 0x01, 0x7a, 0x01, + 0x74, 0x01, 0x74, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0x67, 0x01, 0x68, 0x01, + 0x62, 0x01, 0x61, 0x01, 0x5a, 0x01, 0x5b, 0x01, 0x52, 0x01, 0x52, 0x01, + 0x4b, 0x01, 0x4a, 0x01, 0x43, 0x01, 0x43, 0x01, 0x3a, 0x01, 0x3c, 0x01, + 0x32, 0x01, 0x31, 0x01, 0x27, 0x01, 0x27, 0x01, 0x1f, 0x01, 0x1f, 0x01, + 0x13, 0x01, 0x12, 0x01, 0x09, 0x01, 0x0b, 0x01, 0xff, 0x00, 0xfe, 0x00, + 0xf1, 0x00, 0xf4, 0x00, 0xea, 0x00, 0xe9, 0x00, 0xdb, 0x00, 0xdd, 0x00, + 0xd4, 0x00, 0xd3, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xb9, 0x00, 0xb9, 0x00, + 0xad, 0x00, 0xaf, 0x00, 0xa1, 0x00, 0x9c, 0x00, 0x94, 0x00, 0x97, 0x00, + 0x86, 0x00, 0x85, 0x00, 0x79, 0x00, 0x7b, 0x00, 0x6c, 0x00, 0x6d, 0x00, + 0x5f, 0x00, 0x5e, 0x00, 0x52, 0x00, 0x54, 0x00, 0x45, 0x00, 0x45, 0x00, + 0x3a, 0x00, 0x39, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x1e, 0x00, 0x1d, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x02, 0x00, 0x02, 0x00, 0xf7, 0xff, 0xf6, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xcd, 0xff, 0xcd, 0xff, + 0xc0, 0xff, 0xc0, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xa7, 0xff, 0xa8, 0xff, + 0x9b, 0xff, 0x9b, 0xff, 0x8c, 0xff, 0x8d, 0xff, 0x81, 0xff, 0x80, 0xff, + 0x74, 0xff, 0x74, 0xff, 0x68, 0xff, 0x68, 0xff, 0x5b, 0xff, 0x5c, 0xff, + 0x4e, 0xff, 0x4e, 0xff, 0x45, 0xff, 0x45, 0xff, 0x36, 0xff, 0x36, 0xff, + 0x2c, 0xff, 0x2e, 0xff, 0x1f, 0xff, 0x1e, 0xff, 0x15, 0xff, 0x16, 0xff, + 0x0a, 0xff, 0x0a, 0xff, 0xfd, 0xfe, 0xfe, 0xfe, 0xf7, 0xfe, 0xf8, 0xfe, + 0xe9, 0xfe, 0xe8, 0xfe, 0xe1, 0xfe, 0xe2, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, + 0xce, 0xfe, 0xcf, 0xfe, 0xc8, 0xfe, 0xc6, 0xfe, 0xbb, 0xfe, 0xbc, 0xfe, + 0xb7, 0xfe, 0xb6, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, 0xa8, 0xfe, 0xa9, 0xfe, + 0x9d, 0xfe, 0x9d, 0xfe, 0x99, 0xfe, 0x98, 0xfe, 0x94, 0xfe, 0x92, 0xfe, + 0x8c, 0xfe, 0x8d, 0xfe, 0x88, 0xfe, 0x88, 0xfe, 0x83, 0xfe, 0x82, 0xfe, + 0x7f, 0xfe, 0x80, 0xfe, 0x7b, 0xfe, 0x7b, 0xfe, 0x76, 0xfe, 0x76, 0xfe, + 0x77, 0xfe, 0x76, 0xfe, 0x71, 0xfe, 0x72, 0xfe, 0x72, 0xfe, 0x71, 0xfe, + 0x6f, 0xfe, 0x71, 0xfe, 0x6f, 0xfe, 0x6e, 0xfe, 0x6f, 0xfe, 0x70, 0xfe, + 0x6e, 0xfe, 0x6e, 0xfe, 0x71, 0xfe, 0x71, 0xfe, 0x6f, 0xfe, 0x71, 0xfe, + 0x73, 0xfe, 0x72, 0xfe, 0x74, 0xfe, 0x78, 0xfe, 0x75, 0xfe, 0x75, 0xfe, + 0x7a, 0xfe, 0x7c, 0xfe, 0x7b, 0xfe, 0x7d, 0xfe, 0x7e, 0xfe, 0x81, 0xfe, + 0x84, 0xfe, 0x85, 0xfe, 0x88, 0xfe, 0x89, 0xfe, 0x8d, 0xfe, 0x8f, 0xfe, + 0x94, 0xfe, 0x92, 0xfe, 0x96, 0xfe, 0x97, 0xfe, 0x9e, 0xfe, 0x9e, 0xfe, + 0xa6, 0xfe, 0xa5, 0xfe, 0xaa, 0xfe, 0xac, 0xfe, 0xb3, 0xfe, 0xaf, 0xfe, + 0xb9, 0xfe, 0xbc, 0xfe, 0xc0, 0xfe, 0xc1, 0xfe, 0xcc, 0xfe, 0xcb, 0xfe, + 0xd0, 0xfe, 0xd1, 0xfe, 0xdb, 0xfe, 0xdb, 0xfe, 0xe3, 0xfe, 0xe4, 0xfe, + 0xed, 0xfe, 0xec, 0xfe, 0xf6, 0xfe, 0xf8, 0xfe, 0x01, 0xff, 0xff, 0xfe, + 0x0c, 0xff, 0x0c, 0xff, 0x13, 0xff, 0x14, 0xff, 0x24, 0xff, 0x22, 0xff, + 0x2a, 0xff, 0x2c, 0xff, 0x35, 0xff, 0x36, 0xff, 0x43, 0xff, 0x44, 0xff, + 0x4c, 0xff, 0x4c, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x66, 0xff, 0x66, 0xff, + 0x73, 0xff, 0x73, 0xff, 0x81, 0xff, 0x82, 0xff, 0x8b, 0xff, 0x8b, 0xff, + 0x9a, 0xff, 0x9b, 0xff, 0xa7, 0xff, 0xa5, 0xff, 0xb4, 0xff, 0xb5, 0xff, + 0xc2, 0xff, 0xc0, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xdc, 0xff, 0xdc, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0x05, 0x00, 0x06, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x21, 0x00, 0x20, 0x00, 0x2d, 0x00, 0x2e, 0x00, + 0x3d, 0x00, 0x3b, 0x00, 0x48, 0x00, 0x49, 0x00, 0x56, 0x00, 0x56, 0x00, + 0x64, 0x00, 0x63, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x7f, 0x00, 0x7e, 0x00, + 0x89, 0x00, 0x87, 0x00, 0x97, 0x00, 0x98, 0x00, 0xa4, 0x00, 0xa2, 0x00, + 0xae, 0x00, 0xb0, 0x00, 0xbb, 0x00, 0xba, 0x00, 0xc6, 0x00, 0xc4, 0x00, + 0xd1, 0x00, 0xd1, 0x00, 0xdc, 0x00, 0xdb, 0x00, 0xe7, 0x00, 0xe7, 0x00, + 0xf2, 0x00, 0xf1, 0x00, 0xfc, 0x00, 0xfb, 0x00, 0x06, 0x01, 0x06, 0x01, + 0x11, 0x01, 0x0f, 0x01, 0x16, 0x01, 0x16, 0x01, 0x22, 0x01, 0x22, 0x01, + 0x2a, 0x01, 0x2b, 0x01, 0x32, 0x01, 0x31, 0x01, 0x39, 0x01, 0x3a, 0x01, + 0x40, 0x01, 0x40, 0x01, 0x49, 0x01, 0x4a, 0x01, 0x4e, 0x01, 0x4f, 0x01, + 0x57, 0x01, 0x58, 0x01, 0x5b, 0x01, 0x5c, 0x01, 0x63, 0x01, 0x62, 0x01, + 0x66, 0x01, 0x68, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0x71, 0x01, 0x71, 0x01, + 0x77, 0x01, 0x78, 0x01, 0x7c, 0x01, 0x7a, 0x01, 0x7d, 0x01, 0x7e, 0x01, + 0x83, 0x01, 0x80, 0x01, 0x82, 0x01, 0x85, 0x01, 0x86, 0x01, 0x86, 0x01, + 0x88, 0x01, 0x88, 0x01, 0x87, 0x01, 0x89, 0x01, 0x8b, 0x01, 0x8a, 0x01, + 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, 0x8a, 0x01, 0x8b, 0x01, 0x8c, 0x01, + 0x8a, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x88, 0x01, 0x87, 0x01, + 0x83, 0x01, 0x84, 0x01, 0x82, 0x01, 0x81, 0x01, 0x7c, 0x01, 0x7d, 0x01, + 0x7d, 0x01, 0x7b, 0x01, 0x75, 0x01, 0x77, 0x01, 0x74, 0x01, 0x71, 0x01, + 0x6d, 0x01, 0x6f, 0x01, 0x69, 0x01, 0x67, 0x01, 0x62, 0x01, 0x62, 0x01, + 0x5b, 0x01, 0x5b, 0x01, 0x56, 0x01, 0x54, 0x01, 0x4e, 0x01, 0x50, 0x01, + 0x45, 0x01, 0x44, 0x01, 0x40, 0x01, 0x40, 0x01, 0x35, 0x01, 0x35, 0x01, + 0x30, 0x01, 0x2e, 0x01, 0x24, 0x01, 0x24, 0x01, 0x19, 0x01, 0x18, 0x01, + 0x14, 0x01, 0x14, 0x01, 0x05, 0x01, 0x06, 0x01, 0xff, 0x00, 0xfe, 0x00, + 0xf2, 0x00, 0xf2, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xde, 0x00, 0xdc, 0x00, + 0xd1, 0x00, 0xd2, 0x00, 0xc7, 0x00, 0xc7, 0x00, 0xbb, 0x00, 0xba, 0x00, + 0xaf, 0x00, 0xb0, 0x00, 0xa4, 0x00, 0xa1, 0x00, 0x97, 0x00, 0x98, 0x00, + 0x8c, 0x00, 0x8a, 0x00, 0x7f, 0x00, 0x7d, 0x00, 0x73, 0x00, 0x71, 0x00, + 0x65, 0x00, 0x65, 0x00, 0x5a, 0x00, 0x58, 0x00, 0x4c, 0x00, 0x4f, 0x00, + 0x40, 0x00, 0x3e, 0x00, 0x32, 0x00, 0x32, 0x00, 0x26, 0x00, 0x25, 0x00, + 0x17, 0x00, 0x18, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0xfc, 0xff, 0xfd, 0xff, + 0xf1, 0xff, 0xf0, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xd7, 0xff, 0xd7, 0xff, + 0xcc, 0xff, 0xcb, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xb2, 0xff, 0xb2, 0xff, + 0xa5, 0xff, 0xa6, 0xff, 0x9a, 0xff, 0x99, 0xff, 0x8d, 0xff, 0x8c, 0xff, + 0x7e, 0xff, 0x80, 0xff, 0x74, 0xff, 0x71, 0xff, 0x66, 0xff, 0x69, 0xff, + 0x5c, 0xff, 0x5a, 0xff, 0x4e, 0xff, 0x4f, 0xff, 0x44, 0xff, 0x43, 0xff, + 0x38, 0xff, 0x38, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x22, 0xff, 0x21, 0xff, + 0x16, 0xff, 0x17, 0xff, 0x0b, 0xff, 0x0b, 0xff, 0x01, 0xff, 0x01, 0xff, + 0xf7, 0xfe, 0xf8, 0xfe, 0xed, 0xfe, 0xec, 0xfe, 0xe5, 0xfe, 0xe6, 0xfe, + 0xdb, 0xfe, 0xdb, 0xfe, 0xd2, 0xfe, 0xd3, 0xfe, 0xca, 0xfe, 0xcb, 0xfe, + 0xc2, 0xfe, 0xc2, 0xfe, 0xba, 0xfe, 0xbb, 0xfe, 0xb4, 0xfe, 0xb3, 0xfe, + 0xab, 0xfe, 0xac, 0xfe, 0xa5, 0xfe, 0xa5, 0xfe, 0x9e, 0xfe, 0x9f, 0xfe, + 0x9c, 0xfe, 0x9b, 0xfe, 0x95, 0xfe, 0x96, 0xfe, 0x90, 0xfe, 0x8f, 0xfe, + 0x8c, 0xfe, 0x8c, 0xfe, 0x88, 0xfe, 0x88, 0xfe, 0x84, 0xfe, 0x85, 0xfe, + 0x83, 0xfe, 0x82, 0xfe, 0x80, 0xfe, 0x80, 0xfe, 0x7e, 0xfe, 0x7f, 0xfe, + 0x7c, 0xfe, 0x7c, 0xfe, 0x7a, 0xfe, 0x79, 0xfe, 0x7c, 0xfe, 0x7b, 0xfe, + 0x7a, 0xfe, 0x7a, 0xfe, 0x7b, 0xfe, 0x7b, 0xfe, 0x7d, 0xfe, 0x7b, 0xfe, + 0x7b, 0xfe, 0x7a, 0xfe, 0x7f, 0xfe, 0x80, 0xfe, 0x7f, 0xfe, 0x7f, 0xfe, + 0x84, 0xfe, 0x83, 0xfe, 0x85, 0xfe, 0x85, 0xfe, 0x89, 0xfe, 0x89, 0xfe, + 0x8d, 0xfe, 0x8b, 0xfe, 0x90, 0xfe, 0x91, 0xfe, 0x96, 0xfe, 0x93, 0xfe, + 0x99, 0xfe, 0x9a, 0xfe, 0x9e, 0xfe, 0x9d, 0xfe, 0xa4, 0xfe, 0xa3, 0xfe, + 0xa8, 0xfe, 0xaa, 0xfe, 0xb1, 0xfe, 0xae, 0xfe, 0xb5, 0xfe, 0xb6, 0xfe, + 0xbc, 0xfe, 0xbb, 0xfe, 0xc4, 0xfe, 0xc6, 0xfe, 0xcb, 0xfe, 0xca, 0xfe, + 0xd6, 0xfe, 0xd5, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xe5, 0xfe, 0xe5, 0xfe, + 0xed, 0xfe, 0xed, 0xfe, 0xf9, 0xfe, 0xf5, 0xfe, 0xfe, 0xfe, 0x02, 0xff, + 0x0b, 0xff, 0x07, 0xff, 0x14, 0xff, 0x17, 0xff, 0x1e, 0xff, 0x1c, 0xff, + 0x2a, 0xff, 0x2a, 0xff, 0x35, 0xff, 0x33, 0xff, 0x40, 0xff, 0x3f, 0xff, + 0x4d, 0xff, 0x4d, 0xff, 0x56, 0xff, 0x56, 0xff, 0x64, 0xff, 0x63, 0xff, + 0x6d, 0xff, 0x6e, 0xff, 0x7e, 0xff, 0x7a, 0xff, 0x87, 0xff, 0x89, 0xff, + 0x94, 0xff, 0x94, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xae, 0xff, 0xad, 0xff, + 0xbe, 0xff, 0xbd, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xd7, 0xff, 0xd5, 0xff, + 0xe3, 0xff, 0xe4, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0x0a, 0x00, 0x0b, 0x00, 0x19, 0x00, 0x18, 0x00, 0x23, 0x00, 0x25, 0x00, + 0x35, 0x00, 0x33, 0x00, 0x40, 0x00, 0x40, 0x00, 0x4d, 0x00, 0x4c, 0x00, + 0x58, 0x00, 0x5b, 0x00, 0x67, 0x00, 0x66, 0x00, 0x74, 0x00, 0x73, 0x00, + 0x7d, 0x00, 0x7e, 0x00, 0x8c, 0x00, 0x8b, 0x00, 0x97, 0x00, 0x97, 0x00, + 0xa4, 0x00, 0xa3, 0x00, 0xad, 0x00, 0xad, 0x00, 0xb8, 0x00, 0xb9, 0x00, + 0xc5, 0x00, 0xc4, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xda, 0x00, 0xd9, 0x00, + 0xe6, 0x00, 0xe6, 0x00, 0xed, 0x00, 0xed, 0x00, 0xf9, 0x00, 0xf9, 0x00, + 0x02, 0x01, 0x02, 0x01, 0x0a, 0x01, 0x0a, 0x01, 0x14, 0x01, 0x16, 0x01, + 0x1c, 0x01, 0x1b, 0x01, 0x24, 0x01, 0x26, 0x01, 0x2d, 0x01, 0x2b, 0x01, + 0x32, 0x01, 0x33, 0x01, 0x3e, 0x01, 0x3e, 0x01, 0x41, 0x01, 0x40, 0x01, + 0x49, 0x01, 0x4c, 0x01, 0x50, 0x01, 0x4e, 0x01, 0x57, 0x01, 0x56, 0x01, + 0x5a, 0x01, 0x5d, 0x01, 0x61, 0x01, 0x60, 0x01, 0x67, 0x01, 0x67, 0x01, + 0x6a, 0x01, 0x6a, 0x01, 0x71, 0x01, 0x71, 0x01, 0x70, 0x01, 0x70, 0x01, + 0x77, 0x01, 0x77, 0x01, 0x79, 0x01, 0x7a, 0x01, 0x7b, 0x01, 0x7b, 0x01, + 0x7e, 0x01, 0x7f, 0x01, 0x7f, 0x01, 0x7e, 0x01, 0x80, 0x01, 0x81, 0x01, + 0x82, 0x01, 0x82, 0x01, 0x81, 0x01, 0x82, 0x01, 0x84, 0x01, 0x82, 0x01, + 0x80, 0x01, 0x82, 0x01, 0x81, 0x01, 0x81, 0x01, 0x7f, 0x01, 0x7e, 0x01, + 0x7c, 0x01, 0x7d, 0x01, 0x7b, 0x01, 0x7b, 0x01, 0x76, 0x01, 0x78, 0x01, + 0x74, 0x01, 0x74, 0x01, 0x70, 0x01, 0x71, 0x01, 0x6c, 0x01, 0x6c, 0x01, + 0x67, 0x01, 0x68, 0x01, 0x62, 0x01, 0x62, 0x01, 0x5d, 0x01, 0x5e, 0x01, + 0x57, 0x01, 0x57, 0x01, 0x4f, 0x01, 0x51, 0x01, 0x4a, 0x01, 0x4b, 0x01, + 0x42, 0x01, 0x43, 0x01, 0x39, 0x01, 0x3b, 0x01, 0x34, 0x01, 0x34, 0x01, + 0x2a, 0x01, 0x2b, 0x01, 0x24, 0x01, 0x23, 0x01, 0x17, 0x01, 0x18, 0x01, + 0x11, 0x01, 0x11, 0x01, 0x07, 0x01, 0x08, 0x01, 0xfd, 0x00, 0xfd, 0x00, + 0xf4, 0x00, 0xf7, 0x00, 0xe8, 0x00, 0xe7, 0x00, 0xe0, 0x00, 0xe0, 0x00, + 0xd2, 0x00, 0xd3, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xbd, 0x00, 0xbe, 0x00, + 0xb2, 0x00, 0xb4, 0x00, 0xa6, 0x00, 0xa8, 0x00, 0x9b, 0x00, 0x9b, 0x00, + 0x91, 0x00, 0x92, 0x00, 0x84, 0x00, 0x83, 0x00, 0x78, 0x00, 0x79, 0x00, + 0x6b, 0x00, 0x6d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x54, 0x00, 0x54, 0x00, + 0x46, 0x00, 0x48, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x2d, 0x00, 0x2e, 0x00, + 0x21, 0x00, 0x23, 0x00, 0x15, 0x00, 0x16, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0xfa, 0xff, 0xfd, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xe2, 0xff, 0xe3, 0xff, + 0xd6, 0xff, 0xd7, 0xff, 0xc9, 0xff, 0xcb, 0xff, 0xbb, 0xff, 0xbc, 0xff, + 0xb2, 0xff, 0xb4, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0x97, 0xff, 0x9a, 0xff, + 0x8d, 0xff, 0x8c, 0xff, 0x7d, 0xff, 0x80, 0xff, 0x74, 0xff, 0x73, 0xff, + 0x64, 0xff, 0x66, 0xff, 0x5c, 0xff, 0x5b, 0xff, 0x4e, 0xff, 0x4f, 0xff, + 0x43, 0xff, 0x44, 0xff, 0x37, 0xff, 0x3a, 0xff, 0x2d, 0xff, 0x2c, 0xff, + 0x21, 0xff, 0x24, 0xff, 0x19, 0xff, 0x19, 0xff, 0x0d, 0xff, 0x0e, 0xff, + 0x04, 0xff, 0x06, 0xff, 0xfa, 0xfe, 0xf9, 0xfe, 0xf0, 0xfe, 0xf2, 0xfe, + 0xe7, 0xfe, 0xe7, 0xfe, 0xdf, 0xfe, 0xe1, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, + 0xcf, 0xfe, 0xce, 0xfe, 0xc6, 0xfe, 0xc7, 0xfe, 0xbf, 0xfe, 0xc0, 0xfe, + 0xba, 0xfe, 0xba, 0xfe, 0xb2, 0xfe, 0xb2, 0xfe, 0xaf, 0xfe, 0xae, 0xfe, + 0xa5, 0xfe, 0xa7, 0xfe, 0xa4, 0xfe, 0xa3, 0xfe, 0x9c, 0xfe, 0x9d, 0xfe, + 0x99, 0xfe, 0x99, 0xfe, 0x96, 0xfe, 0x97, 0xfe, 0x90, 0xfe, 0x90, 0xfe, + 0x92, 0xfe, 0x93, 0xfe, 0x8b, 0xfe, 0x8c, 0xfe, 0x8a, 0xfe, 0x8b, 0xfe, + 0x89, 0xfe, 0x8a, 0xfe, 0x87, 0xfe, 0x86, 0xfe, 0x88, 0xfe, 0x87, 0xfe, + 0x85, 0xfe, 0x86, 0xfe, 0x87, 0xfe, 0x85, 0xfe, 0x86, 0xfe, 0x86, 0xfe, + 0x87, 0xfe, 0x87, 0xfe, 0x89, 0xfe, 0x8a, 0xfe, 0x88, 0xfe, 0x89, 0xfe, + 0x8c, 0xfe, 0x8c, 0xfe, 0x8e, 0xfe, 0x8f, 0xfe, 0x91, 0xfe, 0x91, 0xfe, + 0x94, 0xfe, 0x95, 0xfe, 0x97, 0xfe, 0x96, 0xfe, 0x9b, 0xfe, 0x9c, 0xfe, + 0xa0, 0xfe, 0xa1, 0xfe, 0xa3, 0xfe, 0xa2, 0xfe, 0xa7, 0xfe, 0xa9, 0xfe, + 0xaf, 0xfe, 0xac, 0xfe, 0xb3, 0xfe, 0xb4, 0xfe, 0xb7, 0xfe, 0xb9, 0xfe, + 0xc1, 0xfe, 0xbf, 0xfe, 0xc6, 0xfe, 0xc7, 0xfe, 0xce, 0xfe, 0xce, 0xfe, + 0xd6, 0xfe, 0xd6, 0xfe, 0xd9, 0xfe, 0xdc, 0xfe, 0xe7, 0xfe, 0xe6, 0xfe, + 0xea, 0xfe, 0xec, 0xfe, 0xf9, 0xfe, 0xf8, 0xfe, 0xff, 0xfe, 0xff, 0xfe, + 0x08, 0xff, 0x09, 0xff, 0x14, 0xff, 0x14, 0xff, 0x1d, 0xff, 0x1c, 0xff, + 0x28, 0xff, 0x29, 0xff, 0x32, 0xff, 0x31, 0xff, 0x3b, 0xff, 0x3e, 0xff, + 0x4a, 0xff, 0x49, 0xff, 0x51, 0xff, 0x53, 0xff, 0x62, 0xff, 0x61, 0xff, + 0x69, 0xff, 0x69, 0xff, 0x7a, 0xff, 0x7b, 0xff, 0x83, 0xff, 0x82, 0xff, + 0x90, 0xff, 0x91, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0xa8, 0xff, 0xa8, 0xff, + 0xb5, 0xff, 0xb7, 0xff, 0xc3, 0xff, 0xc2, 0xff, 0xd0, 0xff, 0xd1, 0xff, + 0xdc, 0xff, 0xdd, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xf6, 0xff, 0xf8, 0xff, + 0x04, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x1e, 0x00, 0x1c, 0x00, + 0x28, 0x00, 0x29, 0x00, 0x37, 0x00, 0x36, 0x00, 0x41, 0x00, 0x42, 0x00, + 0x4f, 0x00, 0x50, 0x00, 0x5b, 0x00, 0x5a, 0x00, 0x67, 0x00, 0x66, 0x00, + 0x73, 0x00, 0x74, 0x00, 0x7c, 0x00, 0x7b, 0x00, 0x8d, 0x00, 0x8d, 0x00, + 0x94, 0x00, 0x93, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xab, 0x00, 0xab, 0x00, + 0xb6, 0x00, 0xb6, 0x00, 0xc2, 0x00, 0xc2, 0x00, 0xc9, 0x00, 0xcb, 0x00, + 0xd9, 0x00, 0xd7, 0x00, 0xdd, 0x00, 0xdf, 0x00, 0xec, 0x00, 0xe9, 0x00, + 0xf1, 0x00, 0xf3, 0x00, 0xfc, 0x00, 0xfb, 0x00, 0x07, 0x01, 0x06, 0x01, + 0x0d, 0x01, 0x0e, 0x01, 0x17, 0x01, 0x16, 0x01, 0x1d, 0x01, 0x1e, 0x01, + 0x26, 0x01, 0x25, 0x01, 0x2c, 0x01, 0x2e, 0x01, 0x35, 0x01, 0x35, 0x01, + 0x3c, 0x01, 0x3c, 0x01, 0x44, 0x01, 0x43, 0x01, 0x48, 0x01, 0x49, 0x01, + 0x4f, 0x01, 0x4f, 0x01, 0x56, 0x01, 0x55, 0x01, 0x59, 0x01, 0x5a, 0x01, + 0x60, 0x01, 0x5f, 0x01, 0x62, 0x01, 0x63, 0x01, 0x66, 0x01, 0x66, 0x01, + 0x6b, 0x01, 0x6b, 0x01, 0x6c, 0x01, 0x6d, 0x01, 0x72, 0x01, 0x71, 0x01, + 0x73, 0x01, 0x72, 0x01, 0x73, 0x01, 0x74, 0x01, 0x75, 0x01, 0x78, 0x01, + 0x78, 0x01, 0x76, 0x01, 0x77, 0x01, 0x79, 0x01, 0x78, 0x01, 0x78, 0x01, + 0x75, 0x01, 0x76, 0x01, 0x76, 0x01, 0x79, 0x01, 0x75, 0x01, 0x74, 0x01, + 0x73, 0x01, 0x75, 0x01, 0x70, 0x01, 0x71, 0x01, 0x6e, 0x01, 0x70, 0x01, + 0x6b, 0x01, 0x6c, 0x01, 0x67, 0x01, 0x67, 0x01, 0x64, 0x01, 0x65, 0x01, + 0x5e, 0x01, 0x61, 0x01, 0x5c, 0x01, 0x5c, 0x01, 0x55, 0x01, 0x56, 0x01, + 0x51, 0x01, 0x51, 0x01, 0x49, 0x01, 0x4c, 0x01, 0x44, 0x01, 0x44, 0x01, + 0x3c, 0x01, 0x3e, 0x01, 0x34, 0x01, 0x35, 0x01, 0x2f, 0x01, 0x30, 0x01, + 0x25, 0x01, 0x26, 0x01, 0x1e, 0x01, 0x20, 0x01, 0x15, 0x01, 0x16, 0x01, + 0x0d, 0x01, 0x0e, 0x01, 0x03, 0x01, 0x04, 0x01, 0xfb, 0x00, 0xfd, 0x00, + 0xf2, 0x00, 0xf1, 0x00, 0xe7, 0x00, 0xeb, 0x00, 0xde, 0x00, 0xdd, 0x00, + 0xd4, 0x00, 0xd5, 0x00, 0xca, 0x00, 0xcc, 0x00, 0xbf, 0x00, 0xbe, 0x00, + 0xb5, 0x00, 0xb6, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xa0, 0x00, 0x9e, 0x00, + 0x93, 0x00, 0x95, 0x00, 0x89, 0x00, 0x87, 0x00, 0x7d, 0x00, 0x7f, 0x00, + 0x72, 0x00, 0x70, 0x00, 0x66, 0x00, 0x67, 0x00, 0x59, 0x00, 0x58, 0x00, + 0x4e, 0x00, 0x50, 0x00, 0x42, 0x00, 0x42, 0x00, 0x34, 0x00, 0x36, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x11, 0x00, 0x10, 0x00, + 0x05, 0x00, 0x06, 0x00, 0xf7, 0xff, 0xf9, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xdf, 0xff, 0xdf, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xc6, 0xff, 0xc9, 0xff, + 0xba, 0xff, 0xb9, 0xff, 0xad, 0xff, 0xae, 0xff, 0xa1, 0xff, 0xa4, 0xff, + 0x96, 0xff, 0x95, 0xff, 0x89, 0xff, 0x8b, 0xff, 0x7e, 0xff, 0x7e, 0xff, + 0x71, 0xff, 0x72, 0xff, 0x66, 0xff, 0x67, 0xff, 0x5a, 0xff, 0x5b, 0xff, + 0x4e, 0xff, 0x50, 0xff, 0x42, 0xff, 0x43, 0xff, 0x38, 0xff, 0x3a, 0xff, + 0x2e, 0xff, 0x2c, 0xff, 0x23, 0xff, 0x25, 0xff, 0x18, 0xff, 0x19, 0xff, + 0x0e, 0xff, 0x10, 0xff, 0x06, 0xff, 0x07, 0xff, 0xfa, 0xfe, 0xfc, 0xfe, + 0xf2, 0xfe, 0xf4, 0xfe, 0xea, 0xfe, 0xea, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, + 0xdb, 0xfe, 0xdc, 0xfe, 0xd3, 0xfe, 0xd2, 0xfe, 0xcc, 0xfe, 0xcd, 0xfe, + 0xc6, 0xfe, 0xc6, 0xfe, 0xc0, 0xfe, 0xc0, 0xfe, 0xb9, 0xfe, 0xba, 0xfe, + 0xb4, 0xfe, 0xb3, 0xfe, 0xaf, 0xfe, 0xb1, 0xfe, 0xaa, 0xfe, 0xa8, 0xfe, + 0xa5, 0xfe, 0xa6, 0xfe, 0xa2, 0xfe, 0xa3, 0xfe, 0xa0, 0xfe, 0x9e, 0xfe, + 0x9a, 0xfe, 0x9c, 0xfe, 0x9a, 0xfe, 0x9a, 0xfe, 0x96, 0xfe, 0x97, 0xfe, + 0x96, 0xfe, 0x95, 0xfe, 0x92, 0xfe, 0x93, 0xfe, 0x92, 0xfe, 0x94, 0xfe, + 0x91, 0xfe, 0x91, 0xfe, 0x90, 0xfe, 0x90, 0xfe, 0x91, 0xfe, 0x92, 0xfe, + 0x90, 0xfe, 0x90, 0xfe, 0x93, 0xfe, 0x94, 0xfe, 0x94, 0xfe, 0x91, 0xfe, + 0x93, 0xfe, 0x96, 0xfe, 0x99, 0xfe, 0x96, 0xfe, 0x97, 0xfe, 0x97, 0xfe, + 0x9c, 0xfe, 0x9c, 0xfe, 0x9c, 0xfe, 0x9b, 0xfe, 0xa1, 0xfe, 0xa1, 0xfe, + 0xa5, 0xfe, 0xa4, 0xfe, 0xa8, 0xfe, 0xa8, 0xfe, 0xae, 0xfe, 0xaf, 0xfe, + 0xb2, 0xfe, 0xb0, 0xfe, 0xb9, 0xfe, 0xba, 0xfe, 0xbe, 0xfe, 0xbc, 0xfe, + 0xc3, 0xfe, 0xc2, 0xfe, 0xcb, 0xfe, 0xcb, 0xfe, 0xcf, 0xfe, 0xce, 0xfe, + 0xda, 0xfe, 0xd7, 0xfe, 0xdd, 0xfe, 0xde, 0xfe, 0xe9, 0xfe, 0xe5, 0xfe, + 0xee, 0xfe, 0xef, 0xfe, 0xf8, 0xfe, 0xf6, 0xfe, 0x00, 0xff, 0xff, 0xfe, + 0x09, 0xff, 0x0a, 0xff, 0x14, 0xff, 0x11, 0xff, 0x1a, 0xff, 0x1c, 0xff, + 0x29, 0xff, 0x27, 0xff, 0x2f, 0xff, 0x2f, 0xff, 0x3c, 0xff, 0x3c, 0xff, + 0x46, 0xff, 0x45, 0xff, 0x50, 0xff, 0x51, 0xff, 0x5f, 0xff, 0x5c, 0xff, + 0x66, 0xff, 0x69, 0xff, 0x75, 0xff, 0x74, 0xff, 0x7f, 0xff, 0x80, 0xff, + 0x8d, 0xff, 0x8b, 0xff, 0x98, 0xff, 0x99, 0xff, 0xa5, 0xff, 0xa2, 0xff, + 0xb3, 0xff, 0xb4, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xc9, 0xff, 0xc9, 0xff, + 0xd5, 0xff, 0xd7, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xf0, 0xff, 0xee, 0xff, + 0xf9, 0xff, 0xfc, 0xff, 0x09, 0x00, 0x07, 0x00, 0x14, 0x00, 0x16, 0x00, + 0x20, 0x00, 0x20, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x43, 0x00, 0x44, 0x00, 0x50, 0x00, 0x4f, 0x00, 0x5c, 0x00, 0x5d, 0x00, + 0x67, 0x00, 0x66, 0x00, 0x72, 0x00, 0x73, 0x00, 0x7e, 0x00, 0x7f, 0x00, + 0x8a, 0x00, 0x88, 0x00, 0x94, 0x00, 0x97, 0x00, 0x9e, 0x00, 0x9d, 0x00, + 0xaa, 0x00, 0xac, 0x00, 0xb5, 0x00, 0xb4, 0x00, 0xbe, 0x00, 0xc1, 0x00, + 0xc9, 0x00, 0xc8, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0xdb, 0x00, 0xdc, 0x00, + 0xe5, 0x00, 0xe6, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf5, 0x00, 0xf5, 0x00, + 0x02, 0x01, 0x02, 0x01, 0x09, 0x01, 0x0a, 0x01, 0x11, 0x01, 0x10, 0x01, + 0x1b, 0x01, 0x1a, 0x01, 0x1e, 0x01, 0x21, 0x01, 0x2b, 0x01, 0x2b, 0x01, + 0x2f, 0x01, 0x2f, 0x01, 0x38, 0x01, 0x39, 0x01, 0x3c, 0x01, 0x3b, 0x01, + 0x44, 0x01, 0x46, 0x01, 0x49, 0x01, 0x49, 0x01, 0x4e, 0x01, 0x50, 0x01, + 0x54, 0x01, 0x53, 0x01, 0x57, 0x01, 0x59, 0x01, 0x5e, 0x01, 0x5c, 0x01, + 0x5d, 0x01, 0x5f, 0x01, 0x64, 0x01, 0x65, 0x01, 0x67, 0x01, 0x66, 0x01, + 0x67, 0x01, 0x69, 0x01, 0x6b, 0x01, 0x6b, 0x01, 0x6d, 0x01, 0x6d, 0x01, + 0x6d, 0x01, 0x6e, 0x01, 0x72, 0x01, 0x6f, 0x01, 0x6e, 0x01, 0x70, 0x01, + 0x6f, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0x6f, 0x01, 0x6d, 0x01, 0x6d, 0x01, + 0x6b, 0x01, 0x6d, 0x01, 0x6a, 0x01, 0x68, 0x01, 0x67, 0x01, 0x67, 0x01, + 0x66, 0x01, 0x64, 0x01, 0x60, 0x01, 0x61, 0x01, 0x5d, 0x01, 0x5c, 0x01, + 0x5a, 0x01, 0x5a, 0x01, 0x53, 0x01, 0x54, 0x01, 0x50, 0x01, 0x4f, 0x01, + 0x4a, 0x01, 0x4a, 0x01, 0x45, 0x01, 0x46, 0x01, 0x40, 0x01, 0x3e, 0x01, + 0x38, 0x01, 0x38, 0x01, 0x33, 0x01, 0x31, 0x01, 0x29, 0x01, 0x29, 0x01, + 0x23, 0x01, 0x22, 0x01, 0x1b, 0x01, 0x1c, 0x01, 0x13, 0x01, 0x13, 0x01, + 0x0c, 0x01, 0x0d, 0x01, 0x03, 0x01, 0x04, 0x01, 0xfc, 0x00, 0xfb, 0x00, + 0xf1, 0x00, 0xf2, 0x00, 0xe9, 0x00, 0xe8, 0x00, 0xe0, 0x00, 0xe1, 0x00, + 0xd4, 0x00, 0xd5, 0x00, 0xce, 0x00, 0xce, 0x00, 0xbf, 0x00, 0xc2, 0x00, + 0xbb, 0x00, 0xb9, 0x00, 0xab, 0x00, 0xae, 0x00, 0xa5, 0x00, 0xa4, 0x00, + 0x98, 0x00, 0x9a, 0x00, 0x8d, 0x00, 0x8f, 0x00, 0x83, 0x00, 0x83, 0x00, + 0x78, 0x00, 0x7a, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x60, 0x00, 0x61, 0x00, + 0x56, 0x00, 0x56, 0x00, 0x47, 0x00, 0x49, 0x00, 0x3f, 0x00, 0x3f, 0x00, + 0x31, 0x00, 0x34, 0x00, 0x26, 0x00, 0x25, 0x00, 0x1b, 0x00, 0x1c, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x01, 0x00, 0xf2, 0xff, 0xf4, 0xff, + 0xe8, 0xff, 0xe9, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xcd, 0xff, 0xd0, 0xff, + 0xc6, 0xff, 0xc6, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xac, 0xff, 0xad, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0x93, 0xff, 0x92, 0xff, 0x88, 0xff, 0x8b, 0xff, + 0x7a, 0xff, 0x79, 0xff, 0x70, 0xff, 0x71, 0xff, 0x66, 0xff, 0x66, 0xff, + 0x58, 0xff, 0x58, 0xff, 0x50, 0xff, 0x51, 0xff, 0x43, 0xff, 0x42, 0xff, + 0x3a, 0xff, 0x3a, 0xff, 0x2f, 0xff, 0x30, 0xff, 0x24, 0xff, 0x24, 0xff, + 0x1c, 0xff, 0x1d, 0xff, 0x11, 0xff, 0x11, 0xff, 0x09, 0xff, 0x0a, 0xff, + 0xff, 0xfe, 0xff, 0xfe, 0xf7, 0xfe, 0xfa, 0xfe, 0xf0, 0xfe, 0xef, 0xfe, + 0xe7, 0xfe, 0xe7, 0xfe, 0xe3, 0xfe, 0xe2, 0xfe, 0xd9, 0xfe, 0xdb, 0xfe, + 0xd4, 0xfe, 0xd4, 0xfe, 0xcd, 0xfe, 0xcb, 0xfe, 0xc7, 0xfe, 0xc8, 0xfe, + 0xc3, 0xfe, 0xc3, 0xfe, 0xbb, 0xfe, 0xbc, 0xfe, 0xb7, 0xfe, 0xb8, 0xfe, + 0xb4, 0xfe, 0xb4, 0xfe, 0xaf, 0xfe, 0xaf, 0xfe, 0xac, 0xfe, 0xad, 0xfe, + 0xa7, 0xfe, 0xa6, 0xfe, 0xa7, 0xfe, 0xa6, 0xfe, 0xa1, 0xfe, 0xa3, 0xfe, + 0xa2, 0xfe, 0xa1, 0xfe, 0x9e, 0xfe, 0x9f, 0xfe, 0x9e, 0xfe, 0x9d, 0xfe, + 0x9b, 0xfe, 0x9c, 0xfe, 0x99, 0xfe, 0x9b, 0xfe, 0x9b, 0xfe, 0x9b, 0xfe, + 0x9a, 0xfe, 0x9c, 0xfe, 0x9a, 0xfe, 0x9b, 0xfe, 0x9b, 0xfe, 0x9d, 0xfe, + 0x9b, 0xfe, 0x9b, 0xfe, 0x9d, 0xfe, 0x9f, 0xfe, 0x9f, 0xfe, 0x9f, 0xfe, + 0xa0, 0xfe, 0xa2, 0xfe, 0xa6, 0xfe, 0xa6, 0xfe, 0xa5, 0xfe, 0xa6, 0xfe, + 0xad, 0xfe, 0xae, 0xfe, 0xab, 0xfe, 0xad, 0xfe, 0xb4, 0xfe, 0xb4, 0xfe, + 0xb5, 0xfe, 0xb8, 0xfe, 0xbb, 0xfe, 0xbb, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, + 0xc3, 0xfe, 0xc5, 0xfe, 0xce, 0xfe, 0xce, 0xfe, 0xd1, 0xfe, 0xd3, 0xfe, + 0xd8, 0xfe, 0xd8, 0xfe, 0xe1, 0xfe, 0xe3, 0xfe, 0xe6, 0xfe, 0xe7, 0xfe, + 0xf1, 0xfe, 0xf4, 0xfe, 0xf9, 0xfe, 0xf7, 0xfe, 0x01, 0xff, 0x03, 0xff, + 0x0a, 0xff, 0x0b, 0xff, 0x11, 0xff, 0x11, 0xff, 0x1d, 0xff, 0x1f, 0xff, + 0x25, 0xff, 0x25, 0xff, 0x30, 0xff, 0x33, 0xff, 0x3a, 0xff, 0x3a, 0xff, + 0x44, 0xff, 0x45, 0xff, 0x52, 0xff, 0x52, 0xff, 0x59, 0xff, 0x5b, 0xff, + 0x66, 0xff, 0x68, 0xff, 0x72, 0xff, 0x71, 0xff, 0x7d, 0xff, 0x7f, 0xff, + 0x88, 0xff, 0x88, 0xff, 0x94, 0xff, 0x96, 0xff, 0x9f, 0xff, 0x9d, 0xff, + 0xad, 0xff, 0xae, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xc4, 0xff, 0xc4, 0xff, + 0xcf, 0xff, 0xd0, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xf1, 0xff, 0xf3, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x23, 0x00, 0x21, 0x00, 0x2f, 0x00, 0x2f, 0x00, + 0x3a, 0x00, 0x3a, 0x00, 0x46, 0x00, 0x43, 0x00, 0x50, 0x00, 0x51, 0x00, + 0x5c, 0x00, 0x5b, 0x00, 0x68, 0x00, 0x67, 0x00, 0x72, 0x00, 0x72, 0x00, + 0x7e, 0x00, 0x7d, 0x00, 0x88, 0x00, 0x88, 0x00, 0x92, 0x00, 0x91, 0x00, + 0x9c, 0x00, 0x9e, 0x00, 0xa7, 0x00, 0xa6, 0x00, 0xb2, 0x00, 0xb2, 0x00, + 0xbe, 0x00, 0xbd, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xd1, 0x00, 0xd1, 0x00, + 0xd7, 0x00, 0xd7, 0x00, 0xe1, 0x00, 0xe1, 0x00, 0xec, 0x00, 0xec, 0x00, + 0xf2, 0x00, 0xf2, 0x00, 0xff, 0x00, 0xff, 0x00, 0x04, 0x01, 0x04, 0x01, + 0x0f, 0x01, 0x0f, 0x01, 0x14, 0x01, 0x14, 0x01, 0x1e, 0x01, 0x1d, 0x01, + 0x24, 0x01, 0x24, 0x01, 0x2a, 0x01, 0x2c, 0x01, 0x33, 0x01, 0x32, 0x01, + 0x36, 0x01, 0x37, 0x01, 0x40, 0x01, 0x3e, 0x01, 0x42, 0x01, 0x42, 0x01, + 0x4a, 0x01, 0x4b, 0x01, 0x4d, 0x01, 0x4c, 0x01, 0x52, 0x01, 0x52, 0x01, + 0x56, 0x01, 0x56, 0x01, 0x59, 0x01, 0x58, 0x01, 0x5b, 0x01, 0x5d, 0x01, + 0x5e, 0x01, 0x5e, 0x01, 0x62, 0x01, 0x61, 0x01, 0x61, 0x01, 0x62, 0x01, + 0x64, 0x01, 0x63, 0x01, 0x65, 0x01, 0x66, 0x01, 0x63, 0x01, 0x62, 0x01, + 0x67, 0x01, 0x66, 0x01, 0x63, 0x01, 0x64, 0x01, 0x64, 0x01, 0x62, 0x01, + 0x61, 0x01, 0x62, 0x01, 0x5f, 0x01, 0x5f, 0x01, 0x5e, 0x01, 0x5d, 0x01, + 0x5b, 0x01, 0x5a, 0x01, 0x58, 0x01, 0x57, 0x01, 0x54, 0x01, 0x54, 0x01, + 0x4f, 0x01, 0x50, 0x01, 0x4d, 0x01, 0x4d, 0x01, 0x48, 0x01, 0x4a, 0x01, + 0x43, 0x01, 0x41, 0x01, 0x3e, 0x01, 0x41, 0x01, 0x38, 0x01, 0x37, 0x01, + 0x33, 0x01, 0x34, 0x01, 0x2d, 0x01, 0x2c, 0x01, 0x26, 0x01, 0x27, 0x01, + 0x21, 0x01, 0x20, 0x01, 0x17, 0x01, 0x16, 0x01, 0x11, 0x01, 0x13, 0x01, + 0x08, 0x01, 0x08, 0x01, 0x02, 0x01, 0x01, 0x01, 0xf8, 0x00, 0xf9, 0x00, + 0xf1, 0x00, 0xf0, 0x00, 0xe7, 0x00, 0xe9, 0x00, 0xe1, 0x00, 0xde, 0x00, + 0xd6, 0x00, 0xd9, 0x00, 0xce, 0x00, 0xcd, 0x00, 0xc6, 0x00, 0xc6, 0x00, + 0xb9, 0x00, 0xbb, 0x00, 0xb3, 0x00, 0xb0, 0x00, 0xa7, 0x00, 0xa8, 0x00, + 0x9c, 0x00, 0x9b, 0x00, 0x93, 0x00, 0x94, 0x00, 0x84, 0x00, 0x85, 0x00, + 0x7e, 0x00, 0x7e, 0x00, 0x6f, 0x00, 0x71, 0x00, 0x68, 0x00, 0x66, 0x00, + 0x5a, 0x00, 0x5b, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x44, 0x00, 0x44, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x2f, 0x00, 0x2d, 0x00, 0x1e, 0x00, 0x20, 0x00, + 0x16, 0x00, 0x16, 0x00, 0x07, 0x00, 0x08, 0x00, 0xfb, 0xff, 0xfb, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xd8, 0xff, 0xd9, 0xff, + 0xcc, 0xff, 0xca, 0xff, 0xc0, 0xff, 0xc1, 0xff, 0xb5, 0xff, 0xb4, 0xff, + 0xa7, 0xff, 0xa9, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0x90, 0xff, 0x92, 0xff, + 0x85, 0xff, 0x85, 0xff, 0x7c, 0xff, 0x7b, 0xff, 0x6c, 0xff, 0x6e, 0xff, + 0x65, 0xff, 0x65, 0xff, 0x59, 0xff, 0x59, 0xff, 0x50, 0xff, 0x4f, 0xff, + 0x44, 0xff, 0x45, 0xff, 0x39, 0xff, 0x39, 0xff, 0x31, 0xff, 0x32, 0xff, + 0x26, 0xff, 0x26, 0xff, 0x1f, 0xff, 0x1f, 0xff, 0x18, 0xff, 0x16, 0xff, + 0x0a, 0xff, 0x0d, 0xff, 0x07, 0xff, 0x05, 0xff, 0xfb, 0xfe, 0xfc, 0xfe, + 0xf5, 0xfe, 0xf5, 0xfe, 0xf0, 0xfe, 0xef, 0xfe, 0xe3, 0xfe, 0xe5, 0xfe, + 0xe2, 0xfe, 0xe2, 0xfe, 0xd8, 0xfe, 0xd9, 0xfe, 0xd4, 0xfe, 0xd5, 0xfe, + 0xd0, 0xfe, 0xcf, 0xfe, 0xc7, 0xfe, 0xca, 0xfe, 0xc6, 0xfe, 0xc5, 0xfe, + 0xc0, 0xfe, 0xc0, 0xfe, 0xbc, 0xfe, 0xbe, 0xfe, 0xb9, 0xfe, 0xb7, 0xfe, + 0xb3, 0xfe, 0xb4, 0xfe, 0xb3, 0xfe, 0xb1, 0xfe, 0xac, 0xfe, 0xae, 0xfe, + 0xae, 0xfe, 0xac, 0xfe, 0xa8, 0xfe, 0xa8, 0xfe, 0xa7, 0xfe, 0xa5, 0xfe, + 0xa8, 0xfe, 0xa9, 0xfe, 0xa1, 0xfe, 0xa2, 0xfe, 0xa7, 0xfe, 0xa6, 0xfe, + 0xa0, 0xfe, 0xa1, 0xfe, 0xa5, 0xfe, 0xa4, 0xfe, 0xa2, 0xfe, 0xa3, 0xfe, + 0xa2, 0xfe, 0xa4, 0xfe, 0xa7, 0xfe, 0xa5, 0xfe, 0xa6, 0xfe, 0xa4, 0xfe, + 0xa8, 0xfe, 0xa9, 0xfe, 0xaa, 0xfe, 0xa9, 0xfe, 0xaa, 0xfe, 0xac, 0xfe, + 0xb2, 0xfe, 0xaf, 0xfe, 0xb2, 0xfe, 0xb3, 0xfe, 0xb8, 0xfe, 0xb6, 0xfe, + 0xbb, 0xfe, 0xbb, 0xfe, 0xbf, 0xfe, 0xbf, 0xfe, 0xc2, 0xfe, 0xc3, 0xfe, + 0xcb, 0xfe, 0xca, 0xfe, 0xce, 0xfe, 0xd0, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, + 0xdc, 0xfe, 0xdc, 0xfe, 0xe1, 0xfe, 0xe3, 0xfe, 0xee, 0xfe, 0xeb, 0xfe, + 0xef, 0xfe, 0xf1, 0xfe, 0xfd, 0xfe, 0xfc, 0xfe, 0x01, 0xff, 0x02, 0xff, + 0x0c, 0xff, 0x0b, 0xff, 0x14, 0xff, 0x14, 0xff, 0x1e, 0xff, 0x1c, 0xff, + 0x26, 0xff, 0x27, 0xff, 0x30, 0xff, 0x2f, 0xff, 0x3b, 0xff, 0x3c, 0xff, + 0x45, 0xff, 0x43, 0xff, 0x4d, 0xff, 0x4e, 0xff, 0x59, 0xff, 0x5a, 0xff, + 0x65, 0xff, 0x65, 0xff, 0x6f, 0xff, 0x6e, 0xff, 0x7a, 0xff, 0x7a, 0xff, + 0x86, 0xff, 0x85, 0xff, 0x8f, 0xff, 0x91, 0xff, 0x9d, 0xff, 0x9d, 0xff, + 0xa7, 0xff, 0xa5, 0xff, 0xb3, 0xff, 0xb4, 0xff, 0xbf, 0xff, 0xbd, 0xff, + 0xc8, 0xff, 0xca, 0xff, 0xd5, 0xff, 0xd4, 0xff, 0xdf, 0xff, 0xe1, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0x02, 0x00, 0x01, 0x00, + 0x0d, 0x00, 0x0f, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x24, 0x00, 0x26, 0x00, + 0x30, 0x00, 0x2f, 0x00, 0x3a, 0x00, 0x39, 0x00, 0x44, 0x00, 0x46, 0x00, + 0x51, 0x00, 0x50, 0x00, 0x5a, 0x00, 0x5d, 0x00, 0x67, 0x00, 0x66, 0x00, + 0x70, 0x00, 0x71, 0x00, 0x7b, 0x00, 0x7d, 0x00, 0x86, 0x00, 0x86, 0x00, + 0x91, 0x00, 0x92, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0xa5, 0x00, 0xa6, 0x00, + 0xaf, 0x00, 0xaf, 0x00, 0xb9, 0x00, 0xb8, 0x00, 0xc2, 0x00, 0xc5, 0x00, + 0xce, 0x00, 0xcc, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xe0, 0x00, 0xe0, 0x00, + 0xe7, 0x00, 0xe8, 0x00, 0xf2, 0x00, 0xf2, 0x00, 0xfb, 0x00, 0xfa, 0x00, + 0x02, 0x01, 0x02, 0x01, 0x0b, 0x01, 0x0b, 0x01, 0x11, 0x01, 0x11, 0x01, + 0x19, 0x01, 0x19, 0x01, 0x20, 0x01, 0x21, 0x01, 0x26, 0x01, 0x26, 0x01, + 0x2d, 0x01, 0x2d, 0x01, 0x31, 0x01, 0x31, 0x01, 0x37, 0x01, 0x36, 0x01, + 0x3b, 0x01, 0x3d, 0x01, 0x42, 0x01, 0x42, 0x01, 0x47, 0x01, 0x47, 0x01, + 0x4b, 0x01, 0x4b, 0x01, 0x4d, 0x01, 0x4e, 0x01, 0x51, 0x01, 0x50, 0x01, + 0x53, 0x01, 0x55, 0x01, 0x56, 0x01, 0x56, 0x01, 0x57, 0x01, 0x56, 0x01, + 0x59, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x59, 0x01, 0x5a, 0x01, 0x5a, 0x01, + 0x5c, 0x01, 0x5b, 0x01, 0x5b, 0x01, 0x59, 0x01, 0x5b, 0x01, 0x5b, 0x01, + 0x59, 0x01, 0x59, 0x01, 0x55, 0x01, 0x56, 0x01, 0x57, 0x01, 0x56, 0x01, + 0x51, 0x01, 0x51, 0x01, 0x50, 0x01, 0x50, 0x01, 0x4c, 0x01, 0x4d, 0x01, + 0x49, 0x01, 0x47, 0x01, 0x46, 0x01, 0x47, 0x01, 0x41, 0x01, 0x3f, 0x01, + 0x3d, 0x01, 0x3e, 0x01, 0x38, 0x01, 0x38, 0x01, 0x33, 0x01, 0x32, 0x01, + 0x2e, 0x01, 0x31, 0x01, 0x29, 0x01, 0x27, 0x01, 0x22, 0x01, 0x23, 0x01, + 0x1e, 0x01, 0x1c, 0x01, 0x16, 0x01, 0x16, 0x01, 0x0f, 0x01, 0x11, 0x01, + 0x06, 0x01, 0x07, 0x01, 0x01, 0x01, 0x03, 0x01, 0xf8, 0x00, 0xf9, 0x00, + 0xf2, 0x00, 0xf1, 0x00, 0xea, 0x00, 0xea, 0x00, 0xe0, 0x00, 0xdf, 0x00, + 0xdb, 0x00, 0xda, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0xc6, 0x00, 0xc6, 0x00, + 0xbf, 0x00, 0xbf, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xaa, 0x00, 0xaa, 0x00, + 0xa1, 0x00, 0xa0, 0x00, 0x97, 0x00, 0x98, 0x00, 0x8d, 0x00, 0x8b, 0x00, + 0x80, 0x00, 0x81, 0x00, 0x77, 0x00, 0x77, 0x00, 0x6c, 0x00, 0x6b, 0x00, + 0x61, 0x00, 0x62, 0x00, 0x55, 0x00, 0x55, 0x00, 0x4b, 0x00, 0x4c, 0x00, + 0x3d, 0x00, 0x3e, 0x00, 0x33, 0x00, 0x33, 0x00, 0x26, 0x00, 0x26, 0x00, + 0x1b, 0x00, 0x1c, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x02, 0x00, 0x04, 0x00, + 0xf8, 0xff, 0xf9, 0xff, 0xec, 0xff, 0xec, 0xff, 0xde, 0xff, 0xe1, 0xff, + 0xd5, 0xff, 0xd3, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xbc, 0xff, 0xbd, 0xff, + 0xb1, 0xff, 0xb1, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0x9b, 0xff, 0x9b, 0xff, + 0x8f, 0xff, 0x90, 0xff, 0x84, 0xff, 0x85, 0xff, 0x79, 0xff, 0x78, 0xff, + 0x70, 0xff, 0x70, 0xff, 0x62, 0xff, 0x63, 0xff, 0x5b, 0xff, 0x5c, 0xff, + 0x4f, 0xff, 0x50, 0xff, 0x47, 0xff, 0x46, 0xff, 0x3d, 0xff, 0x3e, 0xff, + 0x34, 0xff, 0x34, 0xff, 0x2c, 0xff, 0x2e, 0xff, 0x22, 0xff, 0x23, 0xff, + 0x1b, 0xff, 0x1c, 0xff, 0x11, 0xff, 0x12, 0xff, 0x0b, 0xff, 0x0c, 0xff, + 0x03, 0xff, 0x03, 0xff, 0xfb, 0xfe, 0xfd, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, + 0xed, 0xfe, 0xf0, 0xfe, 0xe7, 0xfe, 0xe8, 0xfe, 0xe1, 0xfe, 0xe4, 0xfe, + 0xdb, 0xfe, 0xdb, 0xfe, 0xd6, 0xfe, 0xdc, 0xfe, 0xd2, 0xfe, 0xd0, 0xfe, + 0xcd, 0xfe, 0xd0, 0xfe, 0xc9, 0xfe, 0xc9, 0xfe, 0xc4, 0xfe, 0xc5, 0xfe, + 0xbf, 0xfe, 0xc1, 0xfe, 0xbd, 0xfe, 0xbc, 0xfe, 0xb9, 0xfe, 0xbc, 0xfe, + 0xb6, 0xfe, 0xb5, 0xfe, 0xb2, 0xfe, 0xb4, 0xfe, 0xb2, 0xfe, 0xb2, 0xfe, + 0xad, 0xfe, 0xb0, 0xfe, 0xb1, 0xfe, 0xae, 0xfe, 0xaa, 0xfe, 0xad, 0xfe, + 0xad, 0xfe, 0xab, 0xfe, 0xaa, 0xfe, 0xad, 0xfe, 0xaa, 0xfe, 0xaa, 0xfe, + 0xad, 0xfe, 0xac, 0xfe, 0xab, 0xfe, 0xac, 0xfe, 0xaf, 0xfe, 0xaf, 0xfe, + 0xae, 0xfe, 0xaf, 0xfe, 0xb2, 0xfe, 0xaf, 0xfe, 0xb2, 0xfe, 0xb4, 0xfe, + 0xb5, 0xfe, 0xb6, 0xfe, 0xb6, 0xfe, 0xb7, 0xfe, 0xbc, 0xfe, 0xbd, 0xfe, + 0xbe, 0xfe, 0xbe, 0xfe, 0xc3, 0xfe, 0xc6, 0xfe, 0xca, 0xfe, 0xc8, 0xfe, + 0xce, 0xfe, 0xcf, 0xfe, 0xd6, 0xfe, 0xd5, 0xfe, 0xd8, 0xfe, 0xd8, 0xfe, + 0xe3, 0xfe, 0xe0, 0xfe, 0xe6, 0xfe, 0xe8, 0xfe, 0xee, 0xfe, 0xed, 0xfe, + 0xf6, 0xfe, 0xf6, 0xfe, 0xfb, 0xfe, 0xfc, 0xfe, 0x06, 0xff, 0x06, 0xff, + 0x0a, 0xff, 0x0c, 0xff, 0x17, 0xff, 0x17, 0xff, 0x1e, 0xff, 0x1f, 0xff, + 0x27, 0xff, 0x26, 0xff, 0x2f, 0xff, 0x33, 0xff, 0x3b, 0xff, 0x39, 0xff, + 0x42, 0xff, 0x45, 0xff, 0x4e, 0xff, 0x4e, 0xff, 0x57, 0xff, 0x58, 0xff, + 0x63, 0xff, 0x63, 0xff, 0x6c, 0xff, 0x6d, 0xff, 0x77, 0xff, 0x77, 0xff, + 0x83, 0xff, 0x83, 0xff, 0x8b, 0xff, 0x8e, 0xff, 0x99, 0xff, 0x98, 0xff, + 0xa0, 0xff, 0xa2, 0xff, 0xae, 0xff, 0xaf, 0xff, 0xb7, 0xff, 0xb6, 0xff, + 0xc0, 0xff, 0xc3, 0xff, 0xd0, 0xff, 0xcf, 0xff, 0xd4, 0xff, 0xd7, 0xff, + 0xe4, 0xff, 0xe3, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf7, 0xff, 0xf9, 0xff, + 0x07, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x26, 0x00, 0x25, 0x00, 0x30, 0x00, 0x31, 0x00, 0x3b, 0x00, 0x3b, 0x00, + 0x46, 0x00, 0x47, 0x00, 0x51, 0x00, 0x51, 0x00, 0x5b, 0x00, 0x5a, 0x00, + 0x66, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x7d, 0x00, 0x7c, 0x00, + 0x85, 0x00, 0x87, 0x00, 0x90, 0x00, 0x8f, 0x00, 0x9b, 0x00, 0x9b, 0x00, + 0xa4, 0x00, 0xa4, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb8, 0x00, 0xb9, 0x00, + 0xc4, 0x00, 0xc3, 0x00, 0xcb, 0x00, 0xcd, 0x00, 0xd6, 0x00, 0xd6, 0x00, + 0xdf, 0x00, 0xe0, 0x00, 0xe7, 0x00, 0xe6, 0x00, 0xef, 0x00, 0xf2, 0x00, + 0xf8, 0x00, 0xf7, 0x00, 0x00, 0x01, 0x01, 0x01, 0x07, 0x01, 0x07, 0x01, + 0x0e, 0x01, 0x0e, 0x01, 0x15, 0x01, 0x16, 0x01, 0x1c, 0x01, 0x1c, 0x01, + 0x21, 0x01, 0x22, 0x01, 0x2a, 0x01, 0x29, 0x01, 0x2c, 0x01, 0x2d, 0x01, + 0x36, 0x01, 0x36, 0x01, 0x37, 0x01, 0x36, 0x01, 0x3b, 0x01, 0x3d, 0x01, + 0x41, 0x01, 0x3f, 0x01, 0x41, 0x01, 0x43, 0x01, 0x49, 0x01, 0x49, 0x01, + 0x46, 0x01, 0x46, 0x01, 0x4c, 0x01, 0x4d, 0x01, 0x4c, 0x01, 0x4b, 0x01, + 0x4f, 0x01, 0x50, 0x01, 0x50, 0x01, 0x4f, 0x01, 0x4f, 0x01, 0x50, 0x01, + 0x50, 0x01, 0x52, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x50, 0x01, 0x50, 0x01, + 0x4e, 0x01, 0x4e, 0x01, 0x4b, 0x01, 0x4b, 0x01, 0x4d, 0x01, 0x4e, 0x01, + 0x46, 0x01, 0x47, 0x01, 0x48, 0x01, 0x4a, 0x01, 0x43, 0x01, 0x42, 0x01, + 0x41, 0x01, 0x44, 0x01, 0x3f, 0x01, 0x3e, 0x01, 0x39, 0x01, 0x3a, 0x01, + 0x38, 0x01, 0x38, 0x01, 0x32, 0x01, 0x30, 0x01, 0x2e, 0x01, 0x31, 0x01, + 0x28, 0x01, 0x28, 0x01, 0x23, 0x01, 0x25, 0x01, 0x20, 0x01, 0x1e, 0x01, + 0x18, 0x01, 0x19, 0x01, 0x13, 0x01, 0x16, 0x01, 0x0e, 0x01, 0x0c, 0x01, + 0x05, 0x01, 0x06, 0x01, 0x00, 0x01, 0x00, 0x01, 0xf7, 0x00, 0xf8, 0x00, + 0xf1, 0x00, 0xf1, 0x00, 0xe8, 0x00, 0xe6, 0x00, 0xe2, 0x00, 0xe3, 0x00, + 0xd9, 0x00, 0xd9, 0x00, 0xd1, 0x00, 0xd0, 0x00, 0xc8, 0x00, 0xca, 0x00, + 0xbe, 0x00, 0xbe, 0x00, 0xb7, 0x00, 0xb8, 0x00, 0xac, 0x00, 0xab, 0x00, + 0xa4, 0x00, 0xa4, 0x00, 0x99, 0x00, 0x98, 0x00, 0x8f, 0x00, 0x8f, 0x00, + 0x84, 0x00, 0x82, 0x00, 0x79, 0x00, 0x79, 0x00, 0x6f, 0x00, 0x6e, 0x00, + 0x63, 0x00, 0x65, 0x00, 0x59, 0x00, 0x59, 0x00, 0x4f, 0x00, 0x4e, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x38, 0x00, 0x36, 0x00, 0x2a, 0x00, 0x2c, 0x00, + 0x21, 0x00, 0x20, 0x00, 0x16, 0x00, 0x14, 0x00, 0x09, 0x00, 0x08, 0x00, + 0xff, 0xff, 0xfd, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0xdb, 0xff, 0xd9, 0xff, 0xcf, 0xff, 0xcd, 0xff, 0xc5, 0xff, 0xc5, 0xff, + 0xb7, 0xff, 0xb7, 0xff, 0xb1, 0xff, 0xad, 0xff, 0xa2, 0xff, 0xa4, 0xff, + 0x99, 0xff, 0x96, 0xff, 0x8e, 0xff, 0x8f, 0xff, 0x82, 0xff, 0x80, 0xff, + 0x7a, 0xff, 0x7a, 0xff, 0x6e, 0xff, 0x6d, 0xff, 0x66, 0xff, 0x65, 0xff, + 0x5c, 0xff, 0x59, 0xff, 0x51, 0xff, 0x52, 0xff, 0x49, 0xff, 0x48, 0xff, + 0x40, 0xff, 0x40, 0xff, 0x37, 0xff, 0x38, 0xff, 0x2e, 0xff, 0x2e, 0xff, + 0x27, 0xff, 0x27, 0xff, 0x1e, 0xff, 0x1f, 0xff, 0x19, 0xff, 0x17, 0xff, + 0x0e, 0xff, 0x10, 0xff, 0x0b, 0xff, 0x07, 0xff, 0x00, 0xff, 0x02, 0xff, + 0xfb, 0xfe, 0xfb, 0xfe, 0xf5, 0xfe, 0xf3, 0xfe, 0xee, 0xfe, 0xee, 0xfe, + 0xe9, 0xfe, 0xe6, 0xfe, 0xe3, 0xfe, 0xe4, 0xfe, 0xdd, 0xfe, 0xdd, 0xfe, + 0xd8, 0xfe, 0xd9, 0xfe, 0xd3, 0xfe, 0xd4, 0xfe, 0xd0, 0xfe, 0xd0, 0xfe, + 0xc8, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xc7, 0xfe, 0xc0, 0xfe, 0xc2, 0xfe, + 0xc0, 0xfe, 0xc1, 0xfe, 0xbe, 0xfe, 0xbd, 0xfe, 0xb8, 0xfe, 0xba, 0xfe, + 0xbc, 0xfe, 0xbb, 0xfe, 0xb3, 0xfe, 0xb5, 0xfe, 0xb7, 0xfe, 0xb6, 0xfe, + 0xb1, 0xfe, 0xb5, 0xfe, 0xb3, 0xfe, 0xb3, 0xfe, 0xb3, 0xfe, 0xb6, 0xfe, + 0xb1, 0xfe, 0xb2, 0xfe, 0xb4, 0xfe, 0xb6, 0xfe, 0xb4, 0xfe, 0xb3, 0xfe, + 0xb4, 0xfe, 0xb6, 0xfe, 0xb8, 0xfe, 0xb7, 0xfe, 0xb6, 0xfe, 0xb9, 0xfe, + 0xbc, 0xfe, 0xbd, 0xfe, 0xbe, 0xfe, 0xbf, 0xfe, 0xc3, 0xfe, 0xc3, 0xfe, + 0xc6, 0xfe, 0xc6, 0xfe, 0xc8, 0xfe, 0xca, 0xfe, 0xcf, 0xfe, 0xcf, 0xfe, + 0xd3, 0xfe, 0xd4, 0xfe, 0xdb, 0xfe, 0xda, 0xfe, 0xdd, 0xfe, 0xde, 0xfe, + 0xe6, 0xfe, 0xe6, 0xfe, 0xea, 0xfe, 0xeb, 0xfe, 0xf3, 0xfe, 0xf5, 0xfe, + 0xf8, 0xfe, 0xf9, 0xfe, 0x01, 0xff, 0x02, 0xff, 0x08, 0xff, 0x08, 0xff, + 0x10, 0xff, 0x11, 0xff, 0x17, 0xff, 0x19, 0xff, 0x21, 0xff, 0x20, 0xff, + 0x29, 0xff, 0x2a, 0xff, 0x30, 0xff, 0x30, 0xff, 0x3c, 0xff, 0x3d, 0xff, + 0x42, 0xff, 0x43, 0xff, 0x4d, 0xff, 0x4e, 0xff, 0x56, 0xff, 0x56, 0xff, + 0x5e, 0xff, 0x5e, 0xff, 0x6b, 0xff, 0x6c, 0xff, 0x72, 0xff, 0x73, 0xff, + 0x7e, 0xff, 0x80, 0xff, 0x89, 0xff, 0x89, 0xff, 0x93, 0xff, 0x94, 0xff, + 0x9d, 0xff, 0x9c, 0xff, 0xa6, 0xff, 0xa7, 0xff, 0xb2, 0xff, 0xb2, 0xff, + 0xbc, 0xff, 0xbc, 0xff, 0xc6, 0xff, 0xc7, 0xff, 0xd2, 0xff, 0xd2, 0xff, + 0xdb, 0xff, 0xdc, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xef, 0xff, 0xf1, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0x04, 0x00, 0x06, 0x00, 0x11, 0x00, 0x12, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x27, 0x00, 0x28, 0x00, 0x32, 0x00, 0x31, 0x00, + 0x3c, 0x00, 0x3d, 0x00, 0x48, 0x00, 0x48, 0x00, 0x51, 0x00, 0x51, 0x00, + 0x5c, 0x00, 0x5d, 0x00, 0x66, 0x00, 0x66, 0x00, 0x72, 0x00, 0x71, 0x00, + 0x7c, 0x00, 0x7d, 0x00, 0x86, 0x00, 0x84, 0x00, 0x91, 0x00, 0x93, 0x00, + 0x9b, 0x00, 0x99, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xae, 0x00, 0xae, 0x00, + 0xba, 0x00, 0xb9, 0x00, 0xc1, 0x00, 0xc3, 0x00, 0xca, 0x00, 0xca, 0x00, + 0xd5, 0x00, 0xd5, 0x00, 0xdc, 0x00, 0xdc, 0x00, 0xe7, 0x00, 0xe6, 0x00, + 0xec, 0x00, 0xee, 0x00, 0xf7, 0x00, 0xf4, 0x00, 0xfd, 0x00, 0xff, 0x00, + 0x03, 0x01, 0x01, 0x01, 0x0b, 0x01, 0x0e, 0x01, 0x12, 0x01, 0x10, 0x01, + 0x16, 0x01, 0x17, 0x01, 0x1e, 0x01, 0x1d, 0x01, 0x22, 0x01, 0x24, 0x01, + 0x28, 0x01, 0x28, 0x01, 0x2b, 0x01, 0x2d, 0x01, 0x2f, 0x01, 0x31, 0x01, + 0x33, 0x01, 0x34, 0x01, 0x37, 0x01, 0x39, 0x01, 0x3b, 0x01, 0x3b, 0x01, + 0x40, 0x01, 0x3f, 0x01, 0x3e, 0x01, 0x40, 0x01, 0x42, 0x01, 0x41, 0x01, + 0x43, 0x01, 0x45, 0x01, 0x42, 0x01, 0x44, 0x01, 0x49, 0x01, 0x47, 0x01, + 0x42, 0x01, 0x45, 0x01, 0x47, 0x01, 0x47, 0x01, 0x45, 0x01, 0x46, 0x01, + 0x44, 0x01, 0x45, 0x01, 0x46, 0x01, 0x43, 0x01, 0x41, 0x01, 0x42, 0x01, + 0x42, 0x01, 0x45, 0x01, 0x3e, 0x01, 0x3e, 0x01, 0x3d, 0x01, 0x3f, 0x01, + 0x3a, 0x01, 0x3b, 0x01, 0x38, 0x01, 0x37, 0x01, 0x35, 0x01, 0x36, 0x01, + 0x30, 0x01, 0x31, 0x01, 0x30, 0x01, 0x30, 0x01, 0x27, 0x01, 0x2a, 0x01, + 0x27, 0x01, 0x27, 0x01, 0x20, 0x01, 0x23, 0x01, 0x1b, 0x01, 0x1b, 0x01, + 0x19, 0x01, 0x19, 0x01, 0x11, 0x01, 0x12, 0x01, 0x0c, 0x01, 0x0c, 0x01, + 0x08, 0x01, 0x07, 0x01, 0xfe, 0x00, 0xfe, 0x00, 0xfb, 0x00, 0xfa, 0x00, + 0xf0, 0x00, 0xf1, 0x00, 0xec, 0x00, 0xea, 0x00, 0xe3, 0x00, 0xe5, 0x00, + 0xdc, 0x00, 0xd9, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xc9, 0x00, 0xc7, 0x00, + 0xc1, 0x00, 0xc4, 0x00, 0xba, 0x00, 0xb8, 0x00, 0xae, 0x00, 0xae, 0x00, + 0xa6, 0x00, 0xa5, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x91, 0x00, 0x91, 0x00, + 0x87, 0x00, 0x88, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x73, 0x00, 0x72, 0x00, + 0x6a, 0x00, 0x6b, 0x00, 0x5d, 0x00, 0x5b, 0x00, 0x53, 0x00, 0x54, 0x00, + 0x48, 0x00, 0x48, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x27, 0x00, 0x27, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x04, 0x00, 0x02, 0x00, 0xfa, 0xff, 0xfc, 0xff, 0xed, 0xff, 0xec, 0xff, + 0xe3, 0xff, 0xe5, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xcd, 0xff, 0xce, 0xff, + 0xc0, 0xff, 0xc0, 0xff, 0xb9, 0xff, 0xb8, 0xff, 0xac, 0xff, 0xaf, 0xff, + 0xa4, 0xff, 0xa2, 0xff, 0x98, 0xff, 0x99, 0xff, 0x8f, 0xff, 0x8e, 0xff, + 0x85, 0xff, 0x86, 0xff, 0x7b, 0xff, 0x7d, 0xff, 0x71, 0xff, 0x72, 0xff, + 0x67, 0xff, 0x68, 0xff, 0x5e, 0xff, 0x5f, 0xff, 0x56, 0xff, 0x56, 0xff, + 0x4c, 0xff, 0x4e, 0xff, 0x45, 0xff, 0x45, 0xff, 0x3c, 0xff, 0x3d, 0xff, + 0x34, 0xff, 0x36, 0xff, 0x2d, 0xff, 0x2c, 0xff, 0x23, 0xff, 0x25, 0xff, + 0x1f, 0xff, 0x1f, 0xff, 0x14, 0xff, 0x15, 0xff, 0x0e, 0xff, 0x0f, 0xff, + 0x07, 0xff, 0x07, 0xff, 0x01, 0xff, 0x00, 0xff, 0xfa, 0xfe, 0xfc, 0xfe, + 0xf4, 0xfe, 0xf3, 0xfe, 0xee, 0xfe, 0xf0, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, + 0xe2, 0xfe, 0xe3, 0xfe, 0xde, 0xfe, 0xdf, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, + 0xd7, 0xfe, 0xd6, 0xfe, 0xcf, 0xfe, 0xd1, 0xfe, 0xcf, 0xfe, 0xcd, 0xfe, + 0xcb, 0xfe, 0xcb, 0xfe, 0xc4, 0xfe, 0xc5, 0xfe, 0xc5, 0xfe, 0xc4, 0xfe, + 0xbf, 0xfe, 0xc0, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xbc, 0xfe, 0xbc, 0xfe, + 0xbe, 0xfe, 0xbc, 0xfe, 0xba, 0xfe, 0xba, 0xfe, 0xbb, 0xfe, 0xbb, 0xfe, + 0xbc, 0xfe, 0xbc, 0xfe, 0xba, 0xfe, 0xba, 0xfe, 0xbc, 0xfe, 0xbc, 0xfe, + 0xbf, 0xfe, 0xbd, 0xfe, 0xbd, 0xfe, 0xbf, 0xfe, 0xc2, 0xfe, 0xc1, 0xfe, + 0xc3, 0xfe, 0xc3, 0xfe, 0xc5, 0xfe, 0xc5, 0xfe, 0xca, 0xfe, 0xca, 0xfe, + 0xcc, 0xfe, 0xcd, 0xfe, 0xd1, 0xfe, 0xd1, 0xfe, 0xd6, 0xfe, 0xd4, 0xfe, + 0xd7, 0xfe, 0xdb, 0xfe, 0xe0, 0xfe, 0xdf, 0xfe, 0xe3, 0xfe, 0xe4, 0xfe, + 0xeb, 0xfe, 0xea, 0xfe, 0xf0, 0xfe, 0xf1, 0xfe, 0xf5, 0xfe, 0xf6, 0xfe, + 0xfe, 0xfe, 0xff, 0xfe, 0x05, 0xff, 0x04, 0xff, 0x0c, 0xff, 0x0b, 0xff, + 0x13, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x23, 0xff, 0x26, 0xff, + 0x29, 0xff, 0x29, 0xff, 0x33, 0xff, 0x34, 0xff, 0x3b, 0xff, 0x3b, 0xff, + 0x43, 0xff, 0x44, 0xff, 0x4d, 0xff, 0x4d, 0xff, 0x55, 0xff, 0x55, 0xff, + 0x5e, 0xff, 0x5f, 0xff, 0x68, 0xff, 0x67, 0xff, 0x71, 0xff, 0x73, 0xff, + 0x7b, 0xff, 0x7a, 0xff, 0x84, 0xff, 0x84, 0xff, 0x8e, 0xff, 0x8e, 0xff, + 0x96, 0xff, 0x96, 0xff, 0xa2, 0xff, 0xa1, 0xff, 0xa9, 0xff, 0xac, 0xff, + 0xb6, 0xff, 0xb3, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xca, 0xff, 0xc8, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xe1, 0xff, 0xdf, 0xff, 0xe8, 0xff, 0xea, 0xff, + 0xf4, 0xff, 0xf3, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x09, 0x00, 0x08, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x29, 0x00, 0x29, 0x00, + 0x34, 0x00, 0x34, 0x00, 0x3e, 0x00, 0x3d, 0x00, 0x48, 0x00, 0x48, 0x00, + 0x52, 0x00, 0x53, 0x00, 0x5e, 0x00, 0x5d, 0x00, 0x68, 0x00, 0x67, 0x00, + 0x73, 0x00, 0x73, 0x00, 0x7e, 0x00, 0x7d, 0x00, 0x86, 0x00, 0x89, 0x00, + 0x95, 0x00, 0x92, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0xa8, 0x00, 0xa7, 0x00, + 0xad, 0x00, 0xad, 0x00, 0xb9, 0x00, 0xb8, 0x00, 0xc0, 0x00, 0xc2, 0x00, + 0xc8, 0x00, 0xc7, 0x00, 0xd2, 0x00, 0xd4, 0x00, 0xda, 0x00, 0xdb, 0x00, + 0xe3, 0x00, 0xe4, 0x00, 0xea, 0x00, 0xeb, 0x00, 0xf2, 0x00, 0xf2, 0x00, + 0xf9, 0x00, 0xfb, 0x00, 0x00, 0x01, 0xff, 0x00, 0x05, 0x01, 0x07, 0x01, + 0x0c, 0x01, 0x0c, 0x01, 0x12, 0x01, 0x12, 0x01, 0x16, 0x01, 0x17, 0x01, + 0x1d, 0x01, 0x1e, 0x01, 0x1f, 0x01, 0x20, 0x01, 0x27, 0x01, 0x27, 0x01, + 0x27, 0x01, 0x27, 0x01, 0x2c, 0x01, 0x2c, 0x01, 0x2e, 0x01, 0x2f, 0x01, + 0x30, 0x01, 0x31, 0x01, 0x34, 0x01, 0x36, 0x01, 0x35, 0x01, 0x35, 0x01, + 0x37, 0x01, 0x38, 0x01, 0x3a, 0x01, 0x38, 0x01, 0x39, 0x01, 0x3a, 0x01, + 0x3d, 0x01, 0x3c, 0x01, 0x3a, 0x01, 0x3a, 0x01, 0x3c, 0x01, 0x3d, 0x01, + 0x3a, 0x01, 0x3a, 0x01, 0x3b, 0x01, 0x3c, 0x01, 0x3a, 0x01, 0x3a, 0x01, + 0x3a, 0x01, 0x3a, 0x01, 0x37, 0x01, 0x38, 0x01, 0x38, 0x01, 0x36, 0x01, + 0x34, 0x01, 0x35, 0x01, 0x31, 0x01, 0x31, 0x01, 0x30, 0x01, 0x30, 0x01, + 0x2c, 0x01, 0x2b, 0x01, 0x27, 0x01, 0x2b, 0x01, 0x27, 0x01, 0x24, 0x01, + 0x1f, 0x01, 0x22, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x19, 0x01, 0x19, 0x01, + 0x13, 0x01, 0x15, 0x01, 0x10, 0x01, 0x0f, 0x01, 0x07, 0x01, 0x0a, 0x01, + 0x07, 0x01, 0x04, 0x01, 0xfd, 0x00, 0xff, 0x00, 0xf6, 0x00, 0xf7, 0x00, + 0xf3, 0x00, 0xf2, 0x00, 0xe7, 0x00, 0xe8, 0x00, 0xe3, 0x00, 0xe4, 0x00, + 0xdb, 0x00, 0xd9, 0x00, 0xd2, 0x00, 0xd4, 0x00, 0xcc, 0x00, 0xcc, 0x00, + 0xc1, 0x00, 0xc2, 0x00, 0xbe, 0x00, 0xbb, 0x00, 0xaf, 0x00, 0xb0, 0x00, + 0xa8, 0x00, 0xaa, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x94, 0x00, 0x95, 0x00, + 0x8b, 0x00, 0x89, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x75, 0x00, 0x76, 0x00, + 0x6b, 0x00, 0x69, 0x00, 0x62, 0x00, 0x64, 0x00, 0x56, 0x00, 0x54, 0x00, + 0x4b, 0x00, 0x4c, 0x00, 0x40, 0x00, 0x3f, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x2b, 0x00, 0x2b, 0x00, 0x20, 0x00, 0x20, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xf7, 0xff, + 0xeb, 0xff, 0xe7, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xd5, 0xff, 0xd5, 0xff, + 0xcc, 0xff, 0xcb, 0xff, 0xc1, 0xff, 0xc2, 0xff, 0xb7, 0xff, 0xb6, 0xff, + 0xac, 0xff, 0xad, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0x98, 0xff, 0x97, 0xff, + 0x90, 0xff, 0x92, 0xff, 0x86, 0xff, 0x84, 0xff, 0x7d, 0xff, 0x7d, 0xff, + 0x73, 0xff, 0x74, 0xff, 0x69, 0xff, 0x69, 0xff, 0x62, 0xff, 0x63, 0xff, + 0x58, 0xff, 0x57, 0xff, 0x50, 0xff, 0x52, 0xff, 0x46, 0xff, 0x46, 0xff, + 0x3e, 0xff, 0x3f, 0xff, 0x39, 0xff, 0x38, 0xff, 0x2e, 0xff, 0x2d, 0xff, + 0x2a, 0xff, 0x2b, 0xff, 0x1e, 0xff, 0x1f, 0xff, 0x1b, 0xff, 0x1a, 0xff, + 0x12, 0xff, 0x12, 0xff, 0x0c, 0xff, 0x0b, 0xff, 0x07, 0xff, 0x07, 0xff, + 0xff, 0xfe, 0xff, 0xfe, 0xf9, 0xfe, 0xf9, 0xfe, 0xf4, 0xfe, 0xf1, 0xfe, + 0xed, 0xfe, 0xed, 0xfe, 0xe8, 0xfe, 0xe9, 0xfe, 0xe1, 0xfe, 0xe1, 0xfe, + 0xe1, 0xfe, 0xe1, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, 0xd7, 0xfe, 0xd5, 0xfe, + 0xd3, 0xfe, 0xd4, 0xfe, 0xcf, 0xfe, 0xce, 0xfe, 0xce, 0xfe, 0xcd, 0xfe, + 0xc9, 0xfe, 0xc9, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, 0xc4, 0xfe, 0xc5, 0xfe, + 0xc5, 0xfe, 0xc3, 0xfe, 0xc4, 0xfe, 0xc4, 0xfe, 0xc3, 0xfe, 0xc3, 0xfe, + 0xc2, 0xfe, 0xc2, 0xfe, 0xc3, 0xfe, 0xc2, 0xfe, 0xc2, 0xfe, 0xc4, 0xfe, + 0xc6, 0xfe, 0xc5, 0xfe, 0xc7, 0xfe, 0xc7, 0xfe, 0xc8, 0xfe, 0xc7, 0xfe, + 0xcb, 0xfe, 0xc9, 0xfe, 0xcd, 0xfe, 0xcd, 0xfe, 0xd0, 0xfe, 0xcf, 0xfe, + 0xd2, 0xfe, 0xd4, 0xfe, 0xd8, 0xfe, 0xd6, 0xfe, 0xda, 0xfe, 0xdb, 0xfe, + 0xe0, 0xfe, 0xdf, 0xfe, 0xe5, 0xfe, 0xe4, 0xfe, 0xeb, 0xfe, 0xeb, 0xfe, + 0xee, 0xfe, 0xed, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, + 0x02, 0xff, 0x02, 0xff, 0x08, 0xff, 0x06, 0xff, 0x0d, 0xff, 0x0f, 0xff, + 0x17, 0xff, 0x15, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x24, 0xff, 0x23, 0xff, + 0x2c, 0xff, 0x2c, 0xff, 0x33, 0xff, 0x32, 0xff, 0x3c, 0xff, 0x3c, 0xff, + 0x43, 0xff, 0x43, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x56, 0xff, 0x55, 0xff, + 0x59, 0xff, 0x5b, 0xff, 0x69, 0xff, 0x66, 0xff, 0x6c, 0xff, 0x6e, 0xff, + 0x7b, 0xff, 0x78, 0xff, 0x7f, 0xff, 0x80, 0xff, 0x8a, 0xff, 0x89, 0xff, + 0x95, 0xff, 0x94, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0xa8, 0xff, 0xa9, 0xff, + 0xaf, 0xff, 0xae, 0xff, 0xb8, 0xff, 0xba, 0xff, 0xc5, 0xff, 0xc3, 0xff, + 0xcb, 0xff, 0xcd, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x0d, 0x00, 0x0d, 0x00, 0x16, 0x00, 0x18, 0x00, 0x22, 0x00, 0x1f, 0x00, + 0x2e, 0x00, 0x2e, 0x00, 0x36, 0x00, 0x34, 0x00, 0x42, 0x00, 0x42, 0x00, + 0x4a, 0x00, 0x4a, 0x00, 0x57, 0x00, 0x57, 0x00, 0x61, 0x00, 0x5e, 0x00, + 0x69, 0x00, 0x6c, 0x00, 0x78, 0x00, 0x74, 0x00, 0x7d, 0x00, 0x7e, 0x00, + 0x8a, 0x00, 0x88, 0x00, 0x92, 0x00, 0x92, 0x00, 0x9d, 0x00, 0x9c, 0x00, + 0xa5, 0x00, 0xa7, 0x00, 0xae, 0x00, 0xae, 0x00, 0xb8, 0x00, 0xb8, 0x00, + 0xc1, 0x00, 0xc1, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xd2, 0x00, 0xd1, 0x00, + 0xd7, 0x00, 0xd9, 0x00, 0xe1, 0x00, 0xe0, 0x00, 0xe5, 0x00, 0xe6, 0x00, + 0xef, 0x00, 0xee, 0x00, 0xf4, 0x00, 0xf3, 0x00, 0xfa, 0x00, 0xfa, 0x00, + 0x02, 0x01, 0x00, 0x01, 0x05, 0x01, 0x05, 0x01, 0x0c, 0x01, 0x0c, 0x01, + 0x0f, 0x01, 0x0f, 0x01, 0x15, 0x01, 0x15, 0x01, 0x18, 0x01, 0x18, 0x01, + 0x1e, 0x01, 0x1c, 0x01, 0x1e, 0x01, 0x1f, 0x01, 0x24, 0x01, 0x22, 0x01, + 0x25, 0x01, 0x26, 0x01, 0x28, 0x01, 0x26, 0x01, 0x2c, 0x01, 0x2d, 0x01, + 0x2b, 0x01, 0x29, 0x01, 0x31, 0x01, 0x30, 0x01, 0x2f, 0x01, 0x2f, 0x01, + 0x33, 0x01, 0x30, 0x01, 0x34, 0x01, 0x35, 0x01, 0x33, 0x01, 0x30, 0x01, + 0x36, 0x01, 0x36, 0x01, 0x33, 0x01, 0x31, 0x01, 0x34, 0x01, 0x34, 0x01, + 0x34, 0x01, 0x33, 0x01, 0x2f, 0x01, 0x31, 0x01, 0x33, 0x01, 0x30, 0x01, + 0x2c, 0x01, 0x2e, 0x01, 0x2e, 0x01, 0x2b, 0x01, 0x29, 0x01, 0x29, 0x01, + 0x28, 0x01, 0x27, 0x01, 0x25, 0x01, 0x26, 0x01, 0x21, 0x01, 0x21, 0x01, + 0x1f, 0x01, 0x1e, 0x01, 0x1a, 0x01, 0x1a, 0x01, 0x16, 0x01, 0x14, 0x01, + 0x12, 0x01, 0x13, 0x01, 0x0e, 0x01, 0x0c, 0x01, 0x07, 0x01, 0x09, 0x01, + 0x03, 0x01, 0x01, 0x01, 0xfc, 0x00, 0xfd, 0x00, 0xf7, 0x00, 0xf8, 0x00, + 0xef, 0x00, 0xed, 0x00, 0xea, 0x00, 0xeb, 0x00, 0xe1, 0x00, 0xe0, 0x00, + 0xda, 0x00, 0xda, 0x00, 0xd2, 0x00, 0xd2, 0x00, 0xc9, 0x00, 0xca, 0x00, + 0xc2, 0x00, 0xc2, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0xb1, 0x00, 0xb3, 0x00, + 0xa8, 0x00, 0xa6, 0x00, 0x9e, 0x00, 0xa0, 0x00, 0x96, 0x00, 0x93, 0x00, + 0x8c, 0x00, 0x8f, 0x00, 0x82, 0x00, 0x81, 0x00, 0x77, 0x00, 0x78, 0x00, + 0x6e, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x63, 0x00, 0x59, 0x00, 0x5b, 0x00, + 0x4f, 0x00, 0x4f, 0x00, 0x45, 0x00, 0x45, 0x00, 0x3a, 0x00, 0x3b, 0x00, + 0x31, 0x00, 0x30, 0x00, 0x25, 0x00, 0x27, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0x08, 0x00, 0x06, 0x00, 0xfb, 0xff, 0xfd, 0xff, + 0xf4, 0xff, 0xf2, 0xff, 0xe6, 0xff, 0xe9, 0xff, 0xdf, 0xff, 0xdd, 0xff, + 0xd5, 0xff, 0xd5, 0xff, 0xc8, 0xff, 0xc9, 0xff, 0xc2, 0xff, 0xc0, 0xff, + 0xb5, 0xff, 0xb5, 0xff, 0xae, 0xff, 0xaf, 0xff, 0xa5, 0xff, 0xa4, 0xff, + 0x9a, 0xff, 0x99, 0xff, 0x92, 0xff, 0x93, 0xff, 0x87, 0xff, 0x86, 0xff, + 0x7e, 0xff, 0x7f, 0xff, 0x76, 0xff, 0x75, 0xff, 0x6d, 0xff, 0x6c, 0xff, + 0x63, 0xff, 0x65, 0xff, 0x5d, 0xff, 0x5c, 0xff, 0x52, 0xff, 0x52, 0xff, + 0x4d, 0xff, 0x4e, 0xff, 0x43, 0xff, 0x41, 0xff, 0x3c, 0xff, 0x3d, 0xff, + 0x33, 0xff, 0x33, 0xff, 0x2c, 0xff, 0x2a, 0xff, 0x25, 0xff, 0x26, 0xff, + 0x1c, 0xff, 0x1b, 0xff, 0x19, 0xff, 0x18, 0xff, 0x0e, 0xff, 0x0e, 0xff, + 0x09, 0xff, 0x09, 0xff, 0x04, 0xff, 0x05, 0xff, 0xfc, 0xfe, 0xfc, 0xfe, + 0xf8, 0xfe, 0xf9, 0xfe, 0xf1, 0xfe, 0xf0, 0xfe, 0xeb, 0xfe, 0xed, 0xfe, + 0xe8, 0xfe, 0xe8, 0xfe, 0xe2, 0xfe, 0xe3, 0xfe, 0xe0, 0xfe, 0xe1, 0xfe, + 0xdc, 0xfe, 0xda, 0xfe, 0xda, 0xfe, 0xd9, 0xfe, 0xd4, 0xfe, 0xd5, 0xfe, + 0xd3, 0xfe, 0xd1, 0xfe, 0xd0, 0xfe, 0xd2, 0xfe, 0xcf, 0xfe, 0xcd, 0xfe, + 0xce, 0xfe, 0xcf, 0xfe, 0xcc, 0xfe, 0xcd, 0xfe, 0xcc, 0xfe, 0xcc, 0xfe, + 0xcd, 0xfe, 0xcc, 0xfe, 0xca, 0xfe, 0xc9, 0xfe, 0xcd, 0xfe, 0xcf, 0xfe, + 0xcd, 0xfe, 0xcc, 0xfe, 0xcf, 0xfe, 0xd0, 0xfe, 0xd1, 0xfe, 0xd2, 0xfe, + 0xd1, 0xfe, 0xd1, 0xfe, 0xd6, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, + 0xdc, 0xfe, 0xdc, 0xfe, 0xdd, 0xfe, 0xde, 0xfe, 0xe3, 0xfe, 0xe3, 0xfe, + 0xe6, 0xfe, 0xe6, 0xfe, 0xeb, 0xfe, 0xed, 0xfe, 0xf0, 0xfe, 0xef, 0xfe, + 0xf4, 0xfe, 0xf6, 0xfe, 0xfa, 0xfe, 0xfa, 0xfe, 0xff, 0xfe, 0xff, 0xfe, + 0x07, 0xff, 0x07, 0xff, 0x09, 0xff, 0x0b, 0xff, 0x12, 0xff, 0x11, 0xff, + 0x17, 0xff, 0x19, 0xff, 0x1e, 0xff, 0x1e, 0xff, 0x25, 0xff, 0x25, 0xff, + 0x2a, 0xff, 0x2d, 0xff, 0x36, 0xff, 0x34, 0xff, 0x3a, 0xff, 0x3a, 0xff, + 0x41, 0xff, 0x41, 0xff, 0x4a, 0xff, 0x4b, 0xff, 0x50, 0xff, 0x51, 0xff, + 0x5a, 0xff, 0x5b, 0xff, 0x61, 0xff, 0x61, 0xff, 0x69, 0xff, 0x6b, 0xff, + 0x74, 0xff, 0x73, 0xff, 0x7a, 0xff, 0x7c, 0xff, 0x85, 0xff, 0x87, 0xff, + 0x8e, 0xff, 0x8e, 0xff, 0x97, 0xff, 0x98, 0xff, 0xa1, 0xff, 0xa2, 0xff, + 0xaa, 0xff, 0xa9, 0xff, 0xb5, 0xff, 0xb7, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xc9, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xef, 0xff, 0xef, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0x03, 0x00, 0x04, 0x00, 0x10, 0x00, 0x10, 0x00, 0x1c, 0x00, 0x1c, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x2f, 0x00, 0x32, 0x00, 0x3a, 0x00, 0x38, 0x00, + 0x43, 0x00, 0x45, 0x00, 0x4f, 0x00, 0x4d, 0x00, 0x58, 0x00, 0x5b, 0x00, + 0x62, 0x00, 0x62, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x75, 0x00, 0x77, 0x00, + 0x82, 0x00, 0x81, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x94, 0x00, 0x93, 0x00, + 0x9d, 0x00, 0x9d, 0x00, 0xa2, 0x00, 0xa5, 0x00, 0xb0, 0x00, 0xaf, 0x00, + 0xb4, 0x00, 0xb5, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xc6, 0x00, 0xc5, 0x00, + 0xcb, 0x00, 0xcc, 0x00, 0xd5, 0x00, 0xd5, 0x00, 0xda, 0x00, 0xdb, 0x00, + 0xe2, 0x00, 0xe1, 0x00, 0xe7, 0x00, 0xea, 0x00, 0xef, 0x00, 0xed, 0x00, + 0xf4, 0x00, 0xf5, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfe, 0x00, 0xfe, 0x00, + 0x03, 0x01, 0x04, 0x01, 0x09, 0x01, 0x07, 0x01, 0x0b, 0x01, 0x0d, 0x01, + 0x10, 0x01, 0x11, 0x01, 0x15, 0x01, 0x14, 0x01, 0x17, 0x01, 0x17, 0x01, + 0x1a, 0x01, 0x1b, 0x01, 0x20, 0x01, 0x1e, 0x01, 0x1f, 0x01, 0x1f, 0x01, + 0x24, 0x01, 0x24, 0x01, 0x24, 0x01, 0x23, 0x01, 0x27, 0x01, 0x28, 0x01, + 0x27, 0x01, 0x27, 0x01, 0x2a, 0x01, 0x29, 0x01, 0x28, 0x01, 0x29, 0x01, + 0x2b, 0x01, 0x2b, 0x01, 0x2b, 0x01, 0x2a, 0x01, 0x2c, 0x01, 0x2d, 0x01, + 0x2d, 0x01, 0x2b, 0x01, 0x29, 0x01, 0x2a, 0x01, 0x2c, 0x01, 0x2b, 0x01, + 0x28, 0x01, 0x26, 0x01, 0x29, 0x01, 0x27, 0x01, 0x26, 0x01, 0x25, 0x01, + 0x23, 0x01, 0x21, 0x01, 0x22, 0x01, 0x22, 0x01, 0x1d, 0x01, 0x1c, 0x01, + 0x1a, 0x01, 0x1b, 0x01, 0x19, 0x01, 0x16, 0x01, 0x13, 0x01, 0x13, 0x01, + 0x0f, 0x01, 0x0d, 0x01, 0x0a, 0x01, 0x0b, 0x01, 0x06, 0x01, 0x03, 0x01, + 0x00, 0x01, 0x01, 0x01, 0xfa, 0x00, 0xf9, 0x00, 0xf3, 0x00, 0xf4, 0x00, + 0xee, 0x00, 0xee, 0x00, 0xe7, 0x00, 0xe6, 0x00, 0xe0, 0x00, 0xe1, 0x00, + 0xd9, 0x00, 0xd8, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xc9, 0x00, 0xc8, 0x00, + 0xc1, 0x00, 0xc2, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0xb2, 0x00, 0xb1, 0x00, + 0xa7, 0x00, 0xa9, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x96, 0x00, 0x95, 0x00, + 0x8b, 0x00, 0x8d, 0x00, 0x83, 0x00, 0x83, 0x00, 0x79, 0x00, 0x78, 0x00, + 0x6f, 0x00, 0x70, 0x00, 0x65, 0x00, 0x65, 0x00, 0x5c, 0x00, 0x5c, 0x00, + 0x50, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x48, 0x00, 0x3c, 0x00, 0x3d, 0x00, + 0x35, 0x00, 0x35, 0x00, 0x29, 0x00, 0x28, 0x00, 0x1f, 0x00, 0x22, 0x00, + 0x18, 0x00, 0x17, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x04, 0x00, + 0xf9, 0xff, 0xf8, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0xdb, 0xff, 0xdd, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xca, 0xff, 0xca, 0xff, + 0xbe, 0xff, 0xc1, 0xff, 0xb7, 0xff, 0xb8, 0xff, 0xac, 0xff, 0xac, 0xff, + 0xa6, 0xff, 0xa6, 0xff, 0x9c, 0xff, 0x9d, 0xff, 0x91, 0xff, 0x92, 0xff, + 0x8c, 0xff, 0x8b, 0xff, 0x7f, 0xff, 0x80, 0xff, 0x79, 0xff, 0x78, 0xff, + 0x6e, 0xff, 0x70, 0xff, 0x66, 0xff, 0x65, 0xff, 0x5f, 0xff, 0x5e, 0xff, + 0x53, 0xff, 0x53, 0xff, 0x4e, 0xff, 0x4d, 0xff, 0x44, 0xff, 0x46, 0xff, + 0x3d, 0xff, 0x3b, 0xff, 0x38, 0xff, 0x37, 0xff, 0x2c, 0xff, 0x2c, 0xff, + 0x29, 0xff, 0x29, 0xff, 0x1f, 0xff, 0x1e, 0xff, 0x17, 0xff, 0x18, 0xff, + 0x14, 0xff, 0x12, 0xff, 0x09, 0xff, 0x0c, 0xff, 0x07, 0xff, 0x07, 0xff, + 0x00, 0xff, 0xff, 0xfe, 0xfa, 0xfe, 0xfa, 0xfe, 0xf8, 0xfe, 0xf6, 0xfe, + 0xee, 0xfe, 0xf0, 0xfe, 0xed, 0xfe, 0xec, 0xfe, 0xe5, 0xfe, 0xe7, 0xfe, + 0xe4, 0xfe, 0xe4, 0xfe, 0xe1, 0xfe, 0xe1, 0xfe, 0xdc, 0xfe, 0xde, 0xfe, + 0xdc, 0xfe, 0xdc, 0xfe, 0xd8, 0xfe, 0xd9, 0xfe, 0xd6, 0xfe, 0xd6, 0xfe, + 0xd7, 0xfe, 0xd7, 0xfe, 0xd6, 0xfe, 0xd7, 0xfe, 0xd5, 0xfe, 0xd3, 0xfe, + 0xd6, 0xfe, 0xd7, 0xfe, 0xd3, 0xfe, 0xd3, 0xfe, 0xd5, 0xfe, 0xd4, 0xfe, + 0xd5, 0xfe, 0xd6, 0xfe, 0xd7, 0xfe, 0xd7, 0xfe, 0xd9, 0xfe, 0xd9, 0xfe, + 0xd7, 0xfe, 0xda, 0xfe, 0xdd, 0xfe, 0xdc, 0xfe, 0xde, 0xfe, 0xdf, 0xfe, + 0xe2, 0xfe, 0xe3, 0xfe, 0xe5, 0xfe, 0xe5, 0xfe, 0xe8, 0xfe, 0xea, 0xfe, + 0xec, 0xfe, 0xeb, 0xfe, 0xf0, 0xfe, 0xf1, 0xfe, 0xf4, 0xfe, 0xf4, 0xfe, + 0xfa, 0xfe, 0xfb, 0xfe, 0xfd, 0xfe, 0xfe, 0xfe, 0x03, 0xff, 0x03, 0xff, + 0x08, 0xff, 0x09, 0xff, 0x0c, 0xff, 0x0d, 0xff, 0x14, 0xff, 0x13, 0xff, + 0x18, 0xff, 0x1b, 0xff, 0x1e, 0xff, 0x1e, 0xff, 0x25, 0xff, 0x26, 0xff, + 0x2b, 0xff, 0x2d, 0xff, 0x35, 0xff, 0x34, 0xff, 0x38, 0xff, 0x39, 0xff, + 0x40, 0xff, 0x41, 0xff, 0x4a, 0xff, 0x49, 0xff, 0x4c, 0xff, 0x4f, 0xff, + 0x58, 0xff, 0x58, 0xff, 0x5d, 0xff, 0x60, 0xff, 0x69, 0xff, 0x69, 0xff, + 0x6f, 0xff, 0x6f, 0xff, 0x79, 0xff, 0x79, 0xff, 0x82, 0xff, 0x83, 0xff, + 0x8a, 0xff, 0x89, 0xff, 0x94, 0xff, 0x94, 0xff, 0x9b, 0xff, 0x9b, 0xff, + 0xa6, 0xff, 0xa5, 0xff, 0xad, 0xff, 0xb0, 0xff, 0xb9, 0xff, 0xb7, 0xff, + 0xc2, 0xff, 0xc4, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xd6, 0xff, 0xd6, 0xff, + 0xdf, 0xff, 0xe0, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x09, 0x00, 0x0a, 0x00, 0x16, 0x00, 0x14, 0x00, + 0x1e, 0x00, 0x20, 0x00, 0x28, 0x00, 0x29, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x3c, 0x00, 0x3b, 0x00, 0x47, 0x00, 0x48, 0x00, 0x50, 0x00, 0x50, 0x00, + 0x5b, 0x00, 0x5a, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6d, 0x00, 0x6e, 0x00, + 0x79, 0x00, 0x79, 0x00, 0x80, 0x00, 0x80, 0x00, 0x89, 0x00, 0x89, 0x00, + 0x94, 0x00, 0x94, 0x00, 0x9a, 0x00, 0x99, 0x00, 0xa4, 0x00, 0xa4, 0x00, + 0xaa, 0x00, 0xaa, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xbb, 0x00, 0xbb, 0x00, + 0xc0, 0x00, 0xc1, 0x00, 0xcc, 0x00, 0xcb, 0x00, 0xcf, 0x00, 0xce, 0x00, + 0xda, 0x00, 0xda, 0x00, 0xdd, 0x00, 0xdc, 0x00, 0xe2, 0x00, 0xe2, 0x00, + 0xe9, 0x00, 0xe8, 0x00, 0xed, 0x00, 0xed, 0x00, 0xf4, 0x00, 0xf4, 0x00, + 0xf9, 0x00, 0xf7, 0x00, 0xfd, 0x00, 0xfe, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x06, 0x01, 0x05, 0x01, 0x0a, 0x01, 0x0b, 0x01, 0x0d, 0x01, 0x0b, 0x01, + 0x13, 0x01, 0x12, 0x01, 0x12, 0x01, 0x13, 0x01, 0x17, 0x01, 0x17, 0x01, + 0x1a, 0x01, 0x1a, 0x01, 0x1b, 0x01, 0x1b, 0x01, 0x1f, 0x01, 0x1f, 0x01, + 0x1f, 0x01, 0x20, 0x01, 0x20, 0x01, 0x21, 0x01, 0x24, 0x01, 0x25, 0x01, + 0x24, 0x01, 0x23, 0x01, 0x27, 0x01, 0x28, 0x01, 0x24, 0x01, 0x24, 0x01, + 0x27, 0x01, 0x28, 0x01, 0x24, 0x01, 0x24, 0x01, 0x25, 0x01, 0x26, 0x01, + 0x24, 0x01, 0x22, 0x01, 0x20, 0x01, 0x23, 0x01, 0x22, 0x01, 0x22, 0x01, + 0x1d, 0x01, 0x1d, 0x01, 0x1c, 0x01, 0x1d, 0x01, 0x1b, 0x01, 0x19, 0x01, + 0x15, 0x01, 0x16, 0x01, 0x15, 0x01, 0x15, 0x01, 0x0f, 0x01, 0x0f, 0x01, + 0x0c, 0x01, 0x0c, 0x01, 0x06, 0x01, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, + 0xfc, 0x00, 0xfc, 0x00, 0xf5, 0x00, 0xf7, 0x00, 0xf1, 0x00, 0xf1, 0x00, + 0xec, 0x00, 0xe9, 0x00, 0xe4, 0x00, 0xe6, 0x00, 0xdd, 0x00, 0xdc, 0x00, + 0xd7, 0x00, 0xd7, 0x00, 0xcf, 0x00, 0xce, 0x00, 0xc8, 0x00, 0xc8, 0x00, + 0xc1, 0x00, 0xc0, 0x00, 0xb7, 0x00, 0xb7, 0x00, 0xb1, 0x00, 0xaf, 0x00, + 0xa6, 0x00, 0xa7, 0x00, 0xa0, 0x00, 0x9f, 0x00, 0x96, 0x00, 0x95, 0x00, + 0x8d, 0x00, 0x8e, 0x00, 0x85, 0x00, 0x84, 0x00, 0x7b, 0x00, 0x7b, 0x00, + 0x73, 0x00, 0x73, 0x00, 0x68, 0x00, 0x67, 0x00, 0x61, 0x00, 0x61, 0x00, + 0x55, 0x00, 0x57, 0x00, 0x4e, 0x00, 0x4d, 0x00, 0x43, 0x00, 0x44, 0x00, + 0x39, 0x00, 0x3a, 0x00, 0x32, 0x00, 0x31, 0x00, 0x27, 0x00, 0x29, 0x00, + 0x1f, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x15, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x02, 0x00, 0x03, 0x00, 0xf6, 0xff, 0xf6, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xe5, 0xff, 0xe6, 0xff, 0xd9, 0xff, 0xdc, 0xff, 0xd5, 0xff, 0xd3, 0xff, + 0xc8, 0xff, 0xc9, 0xff, 0xc2, 0xff, 0xc1, 0xff, 0xb6, 0xff, 0xb8, 0xff, + 0xaf, 0xff, 0xb0, 0xff, 0xa4, 0xff, 0xa3, 0xff, 0x9c, 0xff, 0x9c, 0xff, + 0x94, 0xff, 0x93, 0xff, 0x88, 0xff, 0x8a, 0xff, 0x84, 0xff, 0x83, 0xff, + 0x78, 0xff, 0x78, 0xff, 0x70, 0xff, 0x70, 0xff, 0x68, 0xff, 0x69, 0xff, + 0x5e, 0xff, 0x5e, 0xff, 0x58, 0xff, 0x58, 0xff, 0x4d, 0xff, 0x4d, 0xff, + 0x47, 0xff, 0x48, 0xff, 0x3f, 0xff, 0x3d, 0xff, 0x38, 0xff, 0x38, 0xff, + 0x30, 0xff, 0x31, 0xff, 0x2a, 0xff, 0x28, 0xff, 0x22, 0xff, 0x23, 0xff, + 0x1b, 0xff, 0x1a, 0xff, 0x16, 0xff, 0x15, 0xff, 0x0e, 0xff, 0x0f, 0xff, + 0x0a, 0xff, 0x09, 0xff, 0x03, 0xff, 0x03, 0xff, 0x00, 0xff, 0xff, 0xfe, + 0xfb, 0xfe, 0xf9, 0xfe, 0xf5, 0xfe, 0xf5, 0xfe, 0xf3, 0xfe, 0xf4, 0xfe, + 0xec, 0xfe, 0xed, 0xfe, 0xeb, 0xfe, 0xec, 0xfe, 0xe8, 0xfe, 0xe8, 0xfe, + 0xe5, 0xfe, 0xe5, 0xfe, 0xe6, 0xfe, 0xe6, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, + 0xe3, 0xfe, 0xe2, 0xfe, 0xdd, 0xfe, 0xe0, 0xfe, 0xe0, 0xfe, 0xde, 0xfe, + 0xdf, 0xfe, 0xdf, 0xfe, 0xdc, 0xfe, 0xde, 0xfe, 0xe0, 0xfe, 0xdd, 0xfe, + 0xdd, 0xfe, 0xdf, 0xfe, 0xe0, 0xfe, 0xe1, 0xfe, 0xe2, 0xfe, 0xe0, 0xfe, + 0xe1, 0xfe, 0xe3, 0xfe, 0xe7, 0xfe, 0xe5, 0xfe, 0xe6, 0xfe, 0xe6, 0xfe, + 0xea, 0xfe, 0xe9, 0xfe, 0xeb, 0xfe, 0xec, 0xfe, 0xef, 0xfe, 0xf0, 0xfe, + 0xf2, 0xfe, 0xf1, 0xfe, 0xf5, 0xfe, 0xf6, 0xfe, 0xfa, 0xfe, 0xf8, 0xfe, + 0xfe, 0xfe, 0xfe, 0xfe, 0x04, 0xff, 0x01, 0xff, 0x06, 0xff, 0x08, 0xff, + 0x0c, 0xff, 0x0a, 0xff, 0x10, 0xff, 0x11, 0xff, 0x15, 0xff, 0x13, 0xff, + 0x1b, 0xff, 0x1b, 0xff, 0x20, 0xff, 0x21, 0xff, 0x27, 0xff, 0x26, 0xff, + 0x2b, 0xff, 0x2c, 0xff, 0x33, 0xff, 0x32, 0xff, 0x38, 0xff, 0x38, 0xff, + 0x3f, 0xff, 0x3f, 0xff, 0x47, 0xff, 0x45, 0xff, 0x4c, 0xff, 0x4f, 0xff, + 0x56, 0xff, 0x54, 0xff, 0x5d, 0xff, 0x5e, 0xff, 0x64, 0xff, 0x65, 0xff, + 0x6d, 0xff, 0x6c, 0xff, 0x74, 0xff, 0x75, 0xff, 0x7e, 0xff, 0x7d, 0xff, + 0x88, 0xff, 0x88, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x9a, 0xff, 0x9a, 0xff, + 0xa2, 0xff, 0xa1, 0xff, 0xac, 0xff, 0xac, 0xff, 0xb3, 0xff, 0xb5, 0xff, + 0xbf, 0xff, 0xbf, 0xff, 0xca, 0xff, 0xc9, 0xff, 0xd1, 0xff, 0xd1, 0xff, + 0xde, 0xff, 0xdd, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0x03, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x2c, 0x00, + 0x34, 0x00, 0x35, 0x00, 0x40, 0x00, 0x40, 0x00, 0x4a, 0x00, 0x4a, 0x00, + 0x51, 0x00, 0x52, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x66, 0x00, 0x65, 0x00, + 0x6e, 0x00, 0x6f, 0x00, 0x76, 0x00, 0x77, 0x00, 0x80, 0x00, 0x80, 0x00, + 0x86, 0x00, 0x88, 0x00, 0x92, 0x00, 0x91, 0x00, 0x97, 0x00, 0x99, 0x00, + 0xa1, 0x00, 0xa1, 0x00, 0xa8, 0x00, 0xa7, 0x00, 0xaf, 0x00, 0xb1, 0x00, + 0xb7, 0x00, 0xb5, 0x00, 0xba, 0x00, 0xbe, 0x00, 0xc6, 0x00, 0xc4, 0x00, + 0xca, 0x00, 0xca, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0xd6, 0x00, 0xd4, 0x00, + 0xdb, 0x00, 0xde, 0x00, 0xe1, 0x00, 0xe1, 0x00, 0xe9, 0x00, 0xe7, 0x00, + 0xed, 0x00, 0xed, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf8, 0x00, 0xf8, 0x00, + 0xfb, 0x00, 0xf9, 0x00, 0xfe, 0x00, 0x00, 0x01, 0x04, 0x01, 0x03, 0x01, + 0x06, 0x01, 0x06, 0x01, 0x0a, 0x01, 0x0c, 0x01, 0x0d, 0x01, 0x0d, 0x01, + 0x10, 0x01, 0x10, 0x01, 0x15, 0x01, 0x15, 0x01, 0x16, 0x01, 0x15, 0x01, + 0x18, 0x01, 0x19, 0x01, 0x1b, 0x01, 0x1a, 0x01, 0x1b, 0x01, 0x1a, 0x01, + 0x1d, 0x01, 0x1f, 0x01, 0x1c, 0x01, 0x1b, 0x01, 0x20, 0x01, 0x1e, 0x01, + 0x1e, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1d, 0x01, 0x1d, 0x01, 0x1e, 0x01, + 0x1c, 0x01, 0x1b, 0x01, 0x1d, 0x01, 0x1c, 0x01, 0x1a, 0x01, 0x1a, 0x01, + 0x18, 0x01, 0x18, 0x01, 0x17, 0x01, 0x17, 0x01, 0x13, 0x01, 0x12, 0x01, + 0x11, 0x01, 0x11, 0x01, 0x0d, 0x01, 0x0b, 0x01, 0x09, 0x01, 0x0a, 0x01, + 0x06, 0x01, 0x06, 0x01, 0x02, 0x01, 0x01, 0x01, 0xfe, 0x00, 0xfd, 0x00, + 0xf6, 0x00, 0xf6, 0x00, 0xf5, 0x00, 0xf1, 0x00, 0xeb, 0x00, 0xeb, 0x00, + 0xe9, 0x00, 0xe6, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xda, 0x00, 0xda, 0x00, + 0xd4, 0x00, 0xd4, 0x00, 0xcd, 0x00, 0xcb, 0x00, 0xc7, 0x00, 0xc5, 0x00, + 0xbd, 0x00, 0xbc, 0x00, 0xb8, 0x00, 0xb5, 0x00, 0xae, 0x00, 0xae, 0x00, + 0xa7, 0x00, 0xa6, 0x00, 0xa0, 0x00, 0x9e, 0x00, 0x96, 0x00, 0x93, 0x00, + 0x91, 0x00, 0x90, 0x00, 0x85, 0x00, 0x84, 0x00, 0x7e, 0x00, 0x7c, 0x00, + 0x75, 0x00, 0x75, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x64, 0x00, 0x64, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x53, 0x00, 0x52, 0x00, 0x47, 0x00, 0x46, 0x00, + 0x42, 0x00, 0x40, 0x00, 0x37, 0x00, 0x37, 0x00, 0x2f, 0x00, 0x2d, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x15, 0x00, 0x14, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xf5, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xdc, 0xff, 0xdc, 0xff, + 0xd2, 0xff, 0xd2, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xc0, 0xff, 0xc1, 0xff, + 0xb8, 0xff, 0xb6, 0xff, 0xad, 0xff, 0xae, 0xff, 0xa5, 0xff, 0xa5, 0xff, + 0x9a, 0xff, 0x9a, 0xff, 0x95, 0xff, 0x94, 0xff, 0x8a, 0xff, 0x8a, 0xff, + 0x80, 0xff, 0x80, 0xff, 0x78, 0xff, 0x79, 0xff, 0x70, 0xff, 0x6f, 0xff, + 0x66, 0xff, 0x68, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x56, 0xff, 0x55, 0xff, + 0x4e, 0xff, 0x50, 0xff, 0x46, 0xff, 0x46, 0xff, 0x40, 0xff, 0x3f, 0xff, + 0x36, 0xff, 0x38, 0xff, 0x33, 0xff, 0x31, 0xff, 0x28, 0xff, 0x2b, 0xff, + 0x25, 0xff, 0x23, 0xff, 0x1c, 0xff, 0x1e, 0xff, 0x18, 0xff, 0x18, 0xff, + 0x13, 0xff, 0x14, 0xff, 0x0d, 0xff, 0x0c, 0xff, 0x07, 0xff, 0x0a, 0xff, + 0x03, 0xff, 0x03, 0xff, 0x00, 0xff, 0x00, 0xff, 0xfa, 0xfe, 0xfc, 0xfe, + 0xfb, 0xfe, 0xfa, 0xfe, 0xf2, 0xfe, 0xf5, 0xfe, 0xf2, 0xfe, 0xf2, 0xfe, + 0xef, 0xfe, 0xef, 0xfe, 0xeb, 0xfe, 0xee, 0xfe, 0xec, 0xfe, 0xec, 0xfe, + 0xeb, 0xfe, 0xe9, 0xfe, 0xe8, 0xfe, 0xea, 0xfe, 0xea, 0xfe, 0xe9, 0xfe, + 0xe6, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, 0xe8, 0xfe, 0xe7, 0xfe, 0xe7, 0xfe, + 0xe8, 0xfe, 0xe9, 0xfe, 0xe9, 0xfe, 0xe8, 0xfe, 0xea, 0xfe, 0xeb, 0xfe, + 0xeb, 0xfe, 0xeb, 0xfe, 0xec, 0xfe, 0xed, 0xfe, 0xee, 0xfe, 0xf0, 0xfe, + 0xf1, 0xfe, 0xef, 0xfe, 0xf1, 0xfe, 0xf3, 0xfe, 0xf4, 0xfe, 0xf3, 0xfe, + 0xf8, 0xfe, 0xf9, 0xfe, 0xfa, 0xfe, 0xfb, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0x00, 0xff, 0x04, 0xff, 0x05, 0xff, 0x05, 0xff, 0x0a, 0xff, 0x0b, 0xff, + 0x0e, 0xff, 0x0d, 0xff, 0x12, 0xff, 0x13, 0xff, 0x15, 0xff, 0x15, 0xff, + 0x1c, 0xff, 0x1e, 0xff, 0x22, 0xff, 0x1f, 0xff, 0x25, 0xff, 0x26, 0xff, + 0x2d, 0xff, 0x2e, 0xff, 0x30, 0xff, 0x30, 0xff, 0x39, 0xff, 0x39, 0xff, + 0x41, 0xff, 0x3f, 0xff, 0x45, 0xff, 0x46, 0xff, 0x4e, 0xff, 0x4b, 0xff, + 0x52, 0xff, 0x55, 0xff, 0x5d, 0xff, 0x5c, 0xff, 0x62, 0xff, 0x63, 0xff, + 0x6b, 0xff, 0x6b, 0xff, 0x74, 0xff, 0x76, 0xff, 0x7c, 0xff, 0x7c, 0xff, + 0x86, 0xff, 0x86, 0xff, 0x8c, 0xff, 0x8d, 0xff, 0x97, 0xff, 0x97, 0xff, + 0x9e, 0xff, 0x9f, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xb1, 0xff, 0xb2, 0xff, + 0xbb, 0xff, 0xba, 0xff, 0xc6, 0xff, 0xc9, 0xff, 0xcf, 0xff, 0xce, 0xff, + 0xd9, 0xff, 0xda, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xec, 0xff, 0xeb, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x0b, 0x00, 0x0a, 0x00, + 0x12, 0x00, 0x14, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x27, 0x00, 0x29, 0x00, + 0x2e, 0x00, 0x2c, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x43, 0x00, 0x41, 0x00, + 0x4b, 0x00, 0x4c, 0x00, 0x55, 0x00, 0x54, 0x00, 0x5c, 0x00, 0x5c, 0x00, + 0x68, 0x00, 0x67, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x78, 0x00, 0x78, 0x00, + 0x7d, 0x00, 0x7d, 0x00, 0x87, 0x00, 0x86, 0x00, 0x8f, 0x00, 0x8f, 0x00, + 0x96, 0x00, 0x94, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0xa6, 0x00, 0xa4, 0x00, + 0xac, 0x00, 0xad, 0x00, 0xb4, 0x00, 0xb2, 0x00, 0xb9, 0x00, 0xb9, 0x00, + 0xc1, 0x00, 0xc0, 0x00, 0xc7, 0x00, 0xc6, 0x00, 0xcc, 0x00, 0xcd, 0x00, + 0xd2, 0x00, 0xd1, 0x00, 0xda, 0x00, 0xd7, 0x00, 0xdd, 0x00, 0xde, 0x00, + 0xe4, 0x00, 0xe1, 0x00, 0xe7, 0x00, 0xea, 0x00, 0xed, 0x00, 0xea, 0x00, + 0xf4, 0x00, 0xf3, 0x00, 0xf6, 0x00, 0xf5, 0x00, 0xfd, 0x00, 0xfc, 0x00, + 0xff, 0x00, 0xfe, 0x00, 0x02, 0x01, 0x02, 0x01, 0x06, 0x01, 0x05, 0x01, + 0x08, 0x01, 0x09, 0x01, 0x0f, 0x01, 0x0b, 0x01, 0x0e, 0x01, 0x10, 0x01, + 0x10, 0x01, 0x10, 0x01, 0x13, 0x01, 0x13, 0x01, 0x14, 0x01, 0x13, 0x01, + 0x17, 0x01, 0x17, 0x01, 0x16, 0x01, 0x17, 0x01, 0x19, 0x01, 0x18, 0x01, + 0x19, 0x01, 0x19, 0x01, 0x19, 0x01, 0x18, 0x01, 0x1a, 0x01, 0x19, 0x01, + 0x15, 0x01, 0x17, 0x01, 0x19, 0x01, 0x17, 0x01, 0x13, 0x01, 0x17, 0x01, + 0x16, 0x01, 0x12, 0x01, 0x11, 0x01, 0x12, 0x01, 0x0f, 0x01, 0x0e, 0x01, + 0x0b, 0x01, 0x0e, 0x01, 0x08, 0x01, 0x07, 0x01, 0x07, 0x01, 0x06, 0x01, + 0x00, 0x01, 0x01, 0x01, 0xff, 0x00, 0xfe, 0x00, 0xf8, 0x00, 0xf9, 0x00, + 0xf4, 0x00, 0xf4, 0x00, 0xef, 0x00, 0xef, 0x00, 0xe7, 0x00, 0xe8, 0x00, + 0xe4, 0x00, 0xe6, 0x00, 0xde, 0x00, 0xdd, 0x00, 0xd8, 0x00, 0xd9, 0x00, + 0xd1, 0x00, 0xd1, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xc3, 0x00, 0xc5, 0x00, + 0xbd, 0x00, 0xbb, 0x00, 0xb4, 0x00, 0xb8, 0x00, 0xae, 0x00, 0xab, 0x00, + 0xa8, 0x00, 0xa9, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x96, 0x00, 0x97, 0x00, + 0x90, 0x00, 0x90, 0x00, 0x86, 0x00, 0x86, 0x00, 0x81, 0x00, 0x81, 0x00, + 0x76, 0x00, 0x77, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x67, 0x00, 0x68, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0x58, 0x00, 0x57, 0x00, 0x4c, 0x00, 0x4d, 0x00, + 0x47, 0x00, 0x47, 0x00, 0x3b, 0x00, 0x3d, 0x00, 0x35, 0x00, 0x32, 0x00, + 0x2b, 0x00, 0x2d, 0x00, 0x22, 0x00, 0x20, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x08, 0x00, 0xfc, 0xff, 0xff, 0xff, + 0xf8, 0xff, 0xf4, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xd9, 0xff, 0xd9, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xc8, 0xff, 0xc8, 0xff, + 0xbf, 0xff, 0xbe, 0xff, 0xb7, 0xff, 0xb6, 0xff, 0xab, 0xff, 0xab, 0xff, + 0xa5, 0xff, 0xa6, 0xff, 0x9b, 0xff, 0x9a, 0xff, 0x92, 0xff, 0x91, 0xff, + 0x8a, 0xff, 0x8b, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x79, 0xff, 0x79, 0xff, + 0x6e, 0xff, 0x6c, 0xff, 0x67, 0xff, 0x67, 0xff, 0x61, 0xff, 0x5f, 0xff, + 0x55, 0xff, 0x54, 0xff, 0x51, 0xff, 0x52, 0xff, 0x49, 0xff, 0x46, 0xff, + 0x42, 0xff, 0x43, 0xff, 0x3b, 0xff, 0x39, 0xff, 0x34, 0xff, 0x33, 0xff, + 0x2e, 0xff, 0x2d, 0xff, 0x26, 0xff, 0x27, 0xff, 0x24, 0xff, 0x21, 0xff, + 0x1a, 0xff, 0x1e, 0xff, 0x19, 0xff, 0x16, 0xff, 0x12, 0xff, 0x11, 0xff, + 0x0e, 0xff, 0x0d, 0xff, 0x0b, 0xff, 0x09, 0xff, 0x04, 0xff, 0x06, 0xff, + 0x03, 0xff, 0x02, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xfc, 0xfe, 0xfb, 0xfe, + 0xfb, 0xfe, 0xfa, 0xfe, 0xf7, 0xfe, 0xf6, 0xfe, 0xf6, 0xfe, 0xf7, 0xfe, + 0xf6, 0xfe, 0xf4, 0xfe, 0xf2, 0xfe, 0xf4, 0xfe, 0xf2, 0xfe, 0xf0, 0xfe, + 0xf1, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe, 0xef, 0xfe, 0xf1, 0xfe, 0xf1, 0xfe, + 0xf0, 0xfe, 0xf0, 0xfe, 0xf2, 0xfe, 0xf0, 0xfe, 0xf0, 0xfe, 0xf0, 0xfe, + 0xf3, 0xfe, 0xf2, 0xfe, 0xf2, 0xfe, 0xf3, 0xfe, 0xf3, 0xfe, 0xf2, 0xfe, + 0xf8, 0xfe, 0xf7, 0xfe, 0xf6, 0xfe, 0xf7, 0xfe, 0xfc, 0xfe, 0xfb, 0xfe, + 0xfb, 0xfe, 0xfb, 0xfe, 0xfe, 0xfe, 0xff, 0xfe, 0x03, 0xff, 0x01, 0xff, + 0x03, 0xff, 0x04, 0xff, 0x09, 0xff, 0x07, 0xff, 0x0c, 0xff, 0x0c, 0xff, + 0x0e, 0xff, 0x0f, 0xff, 0x15, 0xff, 0x14, 0xff, 0x17, 0xff, 0x18, 0xff, + 0x1e, 0xff, 0x1d, 0xff, 0x22, 0xff, 0x22, 0xff, 0x27, 0xff, 0x27, 0xff, + 0x2c, 0xff, 0x2c, 0xff, 0x34, 0xff, 0x32, 0xff, 0x39, 0xff, 0x38, 0xff, + 0x3e, 0xff, 0x3f, 0xff, 0x46, 0xff, 0x45, 0xff, 0x4a, 0xff, 0x4d, 0xff, + 0x54, 0xff, 0x53, 0xff, 0x5a, 0xff, 0x5c, 0xff, 0x62, 0xff, 0x61, 0xff, + 0x6a, 0xff, 0x6d, 0xff, 0x73, 0xff, 0x71, 0xff, 0x7a, 0xff, 0x7b, 0xff, + 0x84, 0xff, 0x86, 0xff, 0x89, 0xff, 0x89, 0xff, 0x94, 0xff, 0x97, 0xff, + 0x9d, 0xff, 0x9d, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xae, 0xff, 0xb0, 0xff, + 0xb8, 0xff, 0xb8, 0xff, 0xc1, 0xff, 0xc2, 0xff, 0xcb, 0xff, 0xcc, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xf1, 0xff, 0xf3, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0x04, 0x00, 0x05, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x16, 0x00, 0x19, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x28, 0x00, 0x27, 0x00, 0x30, 0x00, 0x32, 0x00, 0x3a, 0x00, 0x38, 0x00, + 0x41, 0x00, 0x42, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x53, 0x00, 0x53, 0x00, + 0x5d, 0x00, 0x5e, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x6d, 0x00, + 0x75, 0x00, 0x75, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x83, 0x00, 0x84, 0x00, + 0x8c, 0x00, 0x8c, 0x00, 0x91, 0x00, 0x93, 0x00, 0x9c, 0x00, 0x9a, 0x00, + 0xa0, 0x00, 0xa2, 0x00, 0xa7, 0x00, 0xa6, 0x00, 0xaf, 0x00, 0xb1, 0x00, + 0xb6, 0x00, 0xb5, 0x00, 0xbb, 0x00, 0xbb, 0x00, 0xc3, 0x00, 0xc2, 0x00, + 0xc6, 0x00, 0xc7, 0x00, 0xd0, 0x00, 0xcf, 0x00, 0xd2, 0x00, 0xd2, 0x00, + 0xd8, 0x00, 0xd9, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xe3, 0x00, 0xe3, 0x00, + 0xeb, 0x00, 0xea, 0x00, 0xed, 0x00, 0xed, 0x00, 0xf2, 0x00, 0xf4, 0x00, + 0xf6, 0x00, 0xf7, 0x00, 0xf9, 0x00, 0xfb, 0x00, 0x00, 0x01, 0xfe, 0x00, + 0xff, 0x00, 0x01, 0x01, 0x06, 0x01, 0x04, 0x01, 0x05, 0x01, 0x07, 0x01, + 0x0a, 0x01, 0x09, 0x01, 0x0e, 0x01, 0x0d, 0x01, 0x0d, 0x01, 0x0d, 0x01, + 0x12, 0x01, 0x11, 0x01, 0x0f, 0x01, 0x10, 0x01, 0x12, 0x01, 0x11, 0x01, + 0x11, 0x01, 0x12, 0x01, 0x10, 0x01, 0x10, 0x01, 0x13, 0x01, 0x13, 0x01, + 0x10, 0x01, 0x11, 0x01, 0x10, 0x01, 0x11, 0x01, 0x10, 0x01, 0x0d, 0x01, + 0x0b, 0x01, 0x0d, 0x01, 0x0b, 0x01, 0x09, 0x01, 0x08, 0x01, 0x08, 0x01, + 0x04, 0x01, 0x06, 0x01, 0x03, 0x01, 0x02, 0x01, 0xfe, 0x00, 0xff, 0x00, + 0xfb, 0x00, 0xfa, 0x00, 0xf6, 0x00, 0xf6, 0x00, 0xf3, 0x00, 0xf3, 0x00, + 0xed, 0x00, 0xee, 0x00, 0xea, 0x00, 0xe9, 0x00, 0xe5, 0x00, 0xe6, 0x00, + 0xde, 0x00, 0xde, 0x00, 0xda, 0x00, 0xdd, 0x00, 0xd3, 0x00, 0xd2, 0x00, + 0xcd, 0x00, 0xcf, 0x00, 0xc8, 0x00, 0xc8, 0x00, 0xc0, 0x00, 0xc2, 0x00, + 0xbb, 0x00, 0xbc, 0x00, 0xb3, 0x00, 0xb3, 0x00, 0xad, 0x00, 0xb1, 0x00, + 0xa7, 0x00, 0xa3, 0x00, 0x9e, 0x00, 0xa3, 0x00, 0x99, 0x00, 0x99, 0x00, + 0x91, 0x00, 0x91, 0x00, 0x89, 0x00, 0x8b, 0x00, 0x83, 0x00, 0x81, 0x00, + 0x79, 0x00, 0x7c, 0x00, 0x73, 0x00, 0x74, 0x00, 0x6a, 0x00, 0x6d, 0x00, + 0x62, 0x00, 0x62, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x53, 0x00, 0x53, 0x00, + 0x4a, 0x00, 0x4c, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3b, 0x00, 0x3b, 0x00, + 0x31, 0x00, 0x32, 0x00, 0x28, 0x00, 0x28, 0x00, 0x1f, 0x00, 0x1f, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x05, 0x00, 0x07, 0x00, + 0xfc, 0xff, 0xfa, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xe8, 0xff, 0xeb, 0xff, + 0xe3, 0xff, 0xe0, 0xff, 0xd7, 0xff, 0xd9, 0xff, 0xcf, 0xff, 0xcd, 0xff, + 0xc7, 0xff, 0xc6, 0xff, 0xbb, 0xff, 0xbd, 0xff, 0xb6, 0xff, 0xb4, 0xff, + 0xaa, 0xff, 0xab, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0x9a, 0xff, 0x97, 0xff, + 0x8d, 0xff, 0x92, 0xff, 0x8a, 0xff, 0x86, 0xff, 0x7e, 0xff, 0x80, 0xff, + 0x77, 0xff, 0x75, 0xff, 0x70, 0xff, 0x70, 0xff, 0x66, 0xff, 0x65, 0xff, + 0x5f, 0xff, 0x60, 0xff, 0x58, 0xff, 0x56, 0xff, 0x50, 0xff, 0x52, 0xff, + 0x4b, 0xff, 0x49, 0xff, 0x42, 0xff, 0x43, 0xff, 0x3d, 0xff, 0x3d, 0xff, + 0x37, 0xff, 0x36, 0xff, 0x2f, 0xff, 0x32, 0xff, 0x2d, 0xff, 0x2c, 0xff, + 0x26, 0xff, 0x25, 0xff, 0x21, 0xff, 0x22, 0xff, 0x1c, 0xff, 0x1b, 0xff, + 0x17, 0xff, 0x17, 0xff, 0x14, 0xff, 0x14, 0xff, 0x10, 0xff, 0x0f, 0xff, + 0x0c, 0xff, 0x0d, 0xff, 0x08, 0xff, 0x08, 0xff, 0x05, 0xff, 0x06, 0xff, + 0x06, 0xff, 0x05, 0xff, 0x01, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, + 0xfd, 0xfe, 0xfd, 0xfe, 0xff, 0xfe, 0xfe, 0xfe, 0xfa, 0xfe, 0xfa, 0xfe, + 0xfa, 0xfe, 0xf9, 0xfe, 0xf9, 0xfe, 0xfa, 0xfe, 0xf9, 0xfe, 0xf7, 0xfe, + 0xf7, 0xfe, 0xf8, 0xfe, 0xf8, 0xfe, 0xf8, 0xfe, 0xf8, 0xfe, 0xf7, 0xfe, + 0xf9, 0xfe, 0xf9, 0xfe, 0xf8, 0xfe, 0xf8, 0xfe, 0xfc, 0xfe, 0xf9, 0xfe, + 0xfb, 0xfe, 0xfc, 0xfe, 0xfc, 0xfe, 0xfb, 0xfe, 0xff, 0xfe, 0x00, 0xff, + 0x00, 0xff, 0x00, 0xff, 0x01, 0xff, 0x03, 0xff, 0x06, 0xff, 0x05, 0xff, + 0x05, 0xff, 0x08, 0xff, 0x0b, 0xff, 0x0a, 0xff, 0x0e, 0xff, 0x10, 0xff, + 0x11, 0xff, 0x0f, 0xff, 0x16, 0xff, 0x18, 0xff, 0x1a, 0xff, 0x19, 0xff, + 0x1f, 0xff, 0x20, 0xff, 0x22, 0xff, 0x22, 0xff, 0x28, 0xff, 0x28, 0xff, + 0x2e, 0xff, 0x2d, 0xff, 0x34, 0xff, 0x34, 0xff, 0x3a, 0xff, 0x39, 0xff, + 0x3e, 0xff, 0x3f, 0xff, 0x48, 0xff, 0x47, 0xff, 0x4a, 0xff, 0x4b, 0xff, + 0x55, 0xff, 0x56, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x60, 0xff, 0x61, 0xff, + 0x6c, 0xff, 0x6c, 0xff, 0x6e, 0xff, 0x71, 0xff, 0x7d, 0xff, 0x7d, 0xff, + 0x7f, 0xff, 0x81, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x94, 0xff, 0x94, 0xff, + 0x9b, 0xff, 0x9a, 0xff, 0xa5, 0xff, 0xa7, 0xff, 0xac, 0xff, 0xac, 0xff, + 0xb9, 0xff, 0xba, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xca, 0xff, 0xc9, 0xff, + 0xd1, 0xff, 0xd1, 0xff, 0xdb, 0xff, 0xda, 0xff, 0xe5, 0xff, 0xe5, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0x08, 0x00, 0x0a, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x19, 0x00, 0x19, 0x00, + 0x23, 0x00, 0x24, 0x00, 0x28, 0x00, 0x27, 0x00, 0x34, 0x00, 0x36, 0x00, + 0x39, 0x00, 0x39, 0x00, 0x45, 0x00, 0x46, 0x00, 0x4b, 0x00, 0x4c, 0x00, + 0x54, 0x00, 0x54, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x62, 0x00, 0x63, 0x00, + 0x6c, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x71, 0x00, 0x7a, 0x00, 0x7c, 0x00, + 0x82, 0x00, 0x82, 0x00, 0x89, 0x00, 0x89, 0x00, 0x90, 0x00, 0x93, 0x00, + 0x98, 0x00, 0x94, 0x00, 0x9f, 0x00, 0xa3, 0x00, 0xa5, 0x00, 0xa3, 0x00, + 0xac, 0x00, 0xad, 0x00, 0xb2, 0x00, 0xb5, 0x00, 0xb8, 0x00, 0xb8, 0x00, + 0xc1, 0x00, 0xc1, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xcd, 0x00, 0xce, 0x00, + 0xd0, 0x00, 0xd0, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0xde, 0x00, 0xdc, 0x00, + 0xdf, 0x00, 0xe1, 0x00, 0xe8, 0x00, 0xe7, 0x00, 0xea, 0x00, 0xe9, 0x00, + 0xee, 0x00, 0xf1, 0x00, 0xf4, 0x00, 0xf2, 0x00, 0xf5, 0x00, 0xf7, 0x00, + 0xfd, 0x00, 0xfd, 0x00, 0xfd, 0x00, 0xfc, 0x00, 0x02, 0x01, 0x03, 0x01, + 0x02, 0x01, 0x02, 0x01, 0x06, 0x01, 0x06, 0x01, 0x08, 0x01, 0x09, 0x01, + 0x08, 0x01, 0x06, 0x01, 0x0b, 0x01, 0x0b, 0x01, 0x08, 0x01, 0x09, 0x01, + 0x0c, 0x01, 0x0b, 0x01, 0x0b, 0x01, 0x0c, 0x01, 0x0b, 0x01, 0x0b, 0x01, + 0x0a, 0x01, 0x0a, 0x01, 0x0a, 0x01, 0x09, 0x01, 0x05, 0x01, 0x06, 0x01, + 0x08, 0x01, 0x08, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, + 0xff, 0x00, 0xff, 0x00, 0xfb, 0x00, 0xfc, 0x00, 0xfb, 0x00, 0xfa, 0x00, + 0xf2, 0x00, 0xf5, 0x00, 0xf3, 0x00, 0xf1, 0x00, 0xed, 0x00, 0xef, 0x00, + 0xea, 0x00, 0xe9, 0x00, 0xe6, 0x00, 0xe6, 0x00, 0xe0, 0x00, 0xe1, 0x00, + 0xdb, 0x00, 0xdb, 0x00, 0xd9, 0x00, 0xd9, 0x00, 0xcf, 0x00, 0xcf, 0x00, + 0xcd, 0x00, 0xcd, 0x00, 0xc5, 0x00, 0xc7, 0x00, 0xc0, 0x00, 0xc0, 0x00, + 0xba, 0x00, 0xba, 0x00, 0xb2, 0x00, 0xb4, 0x00, 0xb0, 0x00, 0xb0, 0x00, + 0xa6, 0x00, 0xa7, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0x9b, 0x00, 0x9b, 0x00, + 0x93, 0x00, 0x93, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x86, 0x00, 0x85, 0x00, + 0x7d, 0x00, 0x7e, 0x00, 0x75, 0x00, 0x77, 0x00, 0x70, 0x00, 0x6d, 0x00, + 0x67, 0x00, 0x69, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x58, 0x00, 0x59, 0x00, + 0x4e, 0x00, 0x4f, 0x00, 0x47, 0x00, 0x48, 0x00, 0x3e, 0x00, 0x3e, 0x00, + 0x34, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x24, 0x00, 0x25, 0x00, + 0x1b, 0x00, 0x1c, 0x00, 0x13, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x0c, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xf7, 0xff, 0xf9, 0xff, 0xef, 0xff, 0xf0, 0xff, + 0xe4, 0xff, 0xe7, 0xff, 0xde, 0xff, 0xde, 0xff, 0xd4, 0xff, 0xd4, 0xff, + 0xcd, 0xff, 0xcd, 0xff, 0xc1, 0xff, 0xc3, 0xff, 0xb9, 0xff, 0xba, 0xff, + 0xb1, 0xff, 0xb0, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0x9f, 0xff, 0x9e, 0xff, + 0x95, 0xff, 0x98, 0xff, 0x8f, 0xff, 0x90, 0xff, 0x85, 0xff, 0x87, 0xff, + 0x81, 0xff, 0x7f, 0xff, 0x76, 0xff, 0x78, 0xff, 0x6e, 0xff, 0x6f, 0xff, + 0x69, 0xff, 0x6a, 0xff, 0x5f, 0xff, 0x5e, 0xff, 0x5b, 0xff, 0x5d, 0xff, + 0x52, 0xff, 0x50, 0xff, 0x4c, 0xff, 0x4f, 0xff, 0x48, 0xff, 0x45, 0xff, + 0x3d, 0xff, 0x40, 0xff, 0x3c, 0xff, 0x3b, 0xff, 0x34, 0xff, 0x35, 0xff, + 0x2f, 0xff, 0x30, 0xff, 0x2b, 0xff, 0x2a, 0xff, 0x27, 0xff, 0x26, 0xff, + 0x23, 0xff, 0x23, 0xff, 0x1e, 0xff, 0x1d, 0xff, 0x1a, 0xff, 0x1a, 0xff, + 0x17, 0xff, 0x16, 0xff, 0x13, 0xff, 0x12, 0xff, 0x12, 0xff, 0x13, 0xff, + 0x0c, 0xff, 0x0b, 0xff, 0x0c, 0xff, 0x0c, 0xff, 0x08, 0xff, 0x07, 0xff, + 0x06, 0xff, 0x07, 0xff, 0x06, 0xff, 0x04, 0xff, 0x03, 0xff, 0x04, 0xff, + 0x02, 0xff, 0x02, 0xff, 0xff, 0xfe, 0x01, 0xff, 0xff, 0xfe, 0xff, 0xfe, + 0xfe, 0xfe, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, + 0x00, 0xff, 0xfd, 0xfe, 0xfd, 0xfe, 0x00, 0xff, 0x01, 0xff, 0xff, 0xfe, + 0xfe, 0xfe, 0xff, 0xfe, 0x01, 0xff, 0x02, 0xff, 0x01, 0xff, 0x01, 0xff, + 0x04, 0xff, 0x05, 0xff, 0x07, 0xff, 0x07, 0xff, 0x09, 0xff, 0x0a, 0xff, + 0x0b, 0xff, 0x0c, 0xff, 0x0d, 0xff, 0x0e, 0xff, 0x11, 0xff, 0x11, 0xff, + 0x15, 0xff, 0x15, 0xff, 0x18, 0xff, 0x19, 0xff, 0x1c, 0xff, 0x1c, 0xff, + 0x20, 0xff, 0x21, 0xff, 0x25, 0xff, 0x25, 0xff, 0x29, 0xff, 0x2b, 0xff, + 0x31, 0xff, 0x30, 0xff, 0x34, 0xff, 0x36, 0xff, 0x3b, 0xff, 0x3b, 0xff, + 0x42, 0xff, 0x40, 0xff, 0x47, 0xff, 0x48, 0xff, 0x4e, 0xff, 0x4e, 0xff, + 0x54, 0xff, 0x55, 0xff, 0x5b, 0xff, 0x5d, 0xff, 0x63, 0xff, 0x64, 0xff, + 0x6a, 0xff, 0x6b, 0xff, 0x73, 0xff, 0x72, 0xff, 0x7a, 0xff, 0x7a, 0xff, + 0x81, 0xff, 0x81, 0xff, 0x8a, 0xff, 0x89, 0xff, 0x92, 0xff, 0x92, 0xff, + 0x99, 0xff, 0x9b, 0xff, 0xa3, 0xff, 0xa2, 0xff, 0xab, 0xff, 0xac, 0xff, + 0xb4, 0xff, 0xb4, 0xff, 0xbc, 0xff, 0xba, 0xff, 0xc4, 0xff, 0xc6, 0xff, + 0xcc, 0xff, 0xcb, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xde, 0xff, + 0xe6, 0xff, 0xe7, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0x02, 0x00, 0x01, 0x00, 0x08, 0x00, 0x08, 0x00, 0x13, 0x00, 0x11, 0x00, + 0x1b, 0x00, 0x19, 0x00, 0x22, 0x00, 0x22, 0x00, 0x29, 0x00, 0x2a, 0x00, + 0x32, 0x00, 0x31, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x42, 0x00, 0x40, 0x00, + 0x4b, 0x00, 0x4c, 0x00, 0x52, 0x00, 0x51, 0x00, 0x5b, 0x00, 0x58, 0x00, + 0x63, 0x00, 0x64, 0x00, 0x69, 0x00, 0x66, 0x00, 0x71, 0x00, 0x73, 0x00, + 0x76, 0x00, 0x75, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x87, 0x00, 0x86, 0x00, + 0x8c, 0x00, 0x8c, 0x00, 0x97, 0x00, 0x96, 0x00, 0x9b, 0x00, 0x9b, 0x00, + 0xa5, 0x00, 0xa6, 0x00, 0xab, 0x00, 0xa9, 0x00, 0xb0, 0x00, 0xb1, 0x00, + 0xb6, 0x00, 0xb8, 0x00, 0xbe, 0x00, 0xba, 0x00, 0xc3, 0x00, 0xc4, 0x00, + 0xc8, 0x00, 0xca, 0x00, 0xcf, 0x00, 0xcd, 0x00, 0xd3, 0x00, 0xd6, 0x00, + 0xd9, 0x00, 0xd8, 0x00, 0xdd, 0x00, 0xde, 0x00, 0xe1, 0x00, 0xe4, 0x00, + 0xe7, 0x00, 0xe6, 0x00, 0xeb, 0x00, 0xed, 0x00, 0xef, 0x00, 0xf0, 0x00, + 0xf1, 0x00, 0xf3, 0x00, 0xf5, 0x00, 0xf5, 0x00, 0xf7, 0x00, 0xf8, 0x00, + 0xfb, 0x00, 0xfc, 0x00, 0xfd, 0x00, 0xfd, 0x00, 0xfe, 0x00, 0x00, 0x01, + 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, + 0x03, 0x01, 0x03, 0x01, 0x00, 0x01, 0x01, 0x01, 0x04, 0x01, 0x04, 0x01, + 0x02, 0x01, 0x03, 0x01, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, + 0xfe, 0x00, 0xfd, 0x00, 0xfc, 0x00, 0xfe, 0x00, 0xfc, 0x00, 0xfc, 0x00, + 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xef, 0x00, 0xf2, 0x00, + 0xf1, 0x00, 0xee, 0x00, 0xea, 0x00, 0xee, 0x00, 0xec, 0x00, 0xe8, 0x00, + 0xe4, 0x00, 0xe6, 0x00, 0xe0, 0x00, 0xde, 0x00, 0xdf, 0x00, 0xdf, 0x00, + 0xd7, 0x00, 0xd7, 0x00, 0xd5, 0x00, 0xd4, 0x00, 0xcf, 0x00, 0xce, 0x00, + 0xcb, 0x00, 0xcb, 0x00, 0xc5, 0x00, 0xc4, 0x00, 0xc0, 0x00, 0xc0, 0x00, + 0xb9, 0x00, 0xb9, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xae, 0x00, 0xaf, 0x00, + 0xa9, 0x00, 0xa8, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0x9b, 0x00, 0x9b, 0x00, + 0x96, 0x00, 0x97, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x88, 0x00, 0x88, 0x00, + 0x81, 0x00, 0x81, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x72, 0x00, 0x73, 0x00, + 0x6a, 0x00, 0x6a, 0x00, 0x64, 0x00, 0x66, 0x00, 0x5a, 0x00, 0x59, 0x00, + 0x53, 0x00, 0x53, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x43, 0x00, 0x41, 0x00, + 0x3b, 0x00, 0x3c, 0x00, 0x33, 0x00, 0x32, 0x00, 0x27, 0x00, 0x28, 0x00, + 0x23, 0x00, 0x23, 0x00, 0x16, 0x00, 0x16, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xed, 0xff, 0xed, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xda, 0xff, 0xd9, 0xff, + 0xd2, 0xff, 0xd1, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xc1, 0xff, 0xc0, 0xff, + 0xb6, 0xff, 0xb6, 0xff, 0xaf, 0xff, 0xae, 0xff, 0xa6, 0xff, 0xa6, 0xff, + 0x9f, 0xff, 0x9e, 0xff, 0x96, 0xff, 0x93, 0xff, 0x8d, 0xff, 0x8d, 0xff, + 0x85, 0xff, 0x85, 0xff, 0x7e, 0xff, 0x7f, 0xff, 0x78, 0xff, 0x76, 0xff, + 0x70, 0xff, 0x70, 0xff, 0x6b, 0xff, 0x69, 0xff, 0x61, 0xff, 0x63, 0xff, + 0x5e, 0xff, 0x5b, 0xff, 0x55, 0xff, 0x56, 0xff, 0x50, 0xff, 0x51, 0xff, + 0x4b, 0xff, 0x4a, 0xff, 0x44, 0xff, 0x45, 0xff, 0x42, 0xff, 0x40, 0xff, + 0x37, 0xff, 0x3a, 0xff, 0x38, 0xff, 0x36, 0xff, 0x30, 0xff, 0x32, 0xff, + 0x2d, 0xff, 0x2d, 0xff, 0x28, 0xff, 0x28, 0xff, 0x24, 0xff, 0x24, 0xff, + 0x20, 0xff, 0x1f, 0xff, 0x1e, 0xff, 0x1e, 0xff, 0x1a, 0xff, 0x19, 0xff, + 0x17, 0xff, 0x17, 0xff, 0x14, 0xff, 0x13, 0xff, 0x11, 0xff, 0x12, 0xff, + 0x0f, 0xff, 0x0e, 0xff, 0x0d, 0xff, 0x0c, 0xff, 0x0b, 0xff, 0x0b, 0xff, + 0x09, 0xff, 0x0a, 0xff, 0x08, 0xff, 0x09, 0xff, 0x06, 0xff, 0x06, 0xff, + 0x06, 0xff, 0x05, 0xff, 0x05, 0xff, 0x05, 0xff, 0x03, 0xff, 0x04, 0xff, + 0x05, 0xff, 0x03, 0xff, 0x03, 0xff, 0x03, 0xff, 0x03, 0xff, 0x05, 0xff, + 0x06, 0xff, 0x05, 0xff, 0x05, 0xff, 0x05, 0xff, 0x07, 0xff, 0x08, 0xff, + 0x09, 0xff, 0x08, 0xff, 0x08, 0xff, 0x0b, 0xff, 0x0c, 0xff, 0x0c, 0xff, + 0x0e, 0xff, 0x0f, 0xff, 0x10, 0xff, 0x11, 0xff, 0x14, 0xff, 0x14, 0xff, + 0x17, 0xff, 0x17, 0xff, 0x19, 0xff, 0x1b, 0xff, 0x20, 0xff, 0x20, 0xff, + 0x22, 0xff, 0x22, 0xff, 0x28, 0xff, 0x27, 0xff, 0x2c, 0xff, 0x2d, 0xff, + 0x31, 0xff, 0x32, 0xff, 0x39, 0xff, 0x39, 0xff, 0x3a, 0xff, 0x3a, 0xff, + 0x44, 0xff, 0x46, 0xff, 0x49, 0xff, 0x47, 0xff, 0x50, 0xff, 0x50, 0xff, + 0x56, 0xff, 0x55, 0xff, 0x5c, 0xff, 0x5b, 0xff, 0x65, 0xff, 0x66, 0xff, + 0x6a, 0xff, 0x68, 0xff, 0x73, 0xff, 0x73, 0xff, 0x7a, 0xff, 0x79, 0xff, + 0x80, 0xff, 0x7f, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x90, 0xff, 0x91, 0xff, + 0x9a, 0xff, 0x98, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa7, 0xff, 0xa8, 0xff, + 0xb3, 0xff, 0xb1, 0xff, 0xb8, 0xff, 0xb9, 0xff, 0xc5, 0xff, 0xc2, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xda, 0xff, 0xd7, 0xff, + 0xe0, 0xff, 0xe3, 0xff, 0xec, 0xff, 0xe7, 0xff, 0xef, 0xff, 0xf2, 0xff, + 0xfd, 0xff, 0xf9, 0xff, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x09, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x22, 0x00, 0x22, 0x00, + 0x2a, 0x00, 0x29, 0x00, 0x32, 0x00, 0x34, 0x00, 0x3b, 0x00, 0x3a, 0x00, + 0x40, 0x00, 0x40, 0x00, 0x49, 0x00, 0x49, 0x00, 0x51, 0x00, 0x52, 0x00, + 0x58, 0x00, 0x5a, 0x00, 0x62, 0x00, 0x60, 0x00, 0x68, 0x00, 0x69, 0x00, + 0x70, 0x00, 0x70, 0x00, 0x77, 0x00, 0x78, 0x00, 0x7f, 0x00, 0x80, 0x00, + 0x85, 0x00, 0x84, 0x00, 0x8d, 0x00, 0x8d, 0x00, 0x95, 0x00, 0x94, 0x00, + 0x9b, 0x00, 0x9a, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0xa9, 0x00, 0xaa, 0x00, + 0xaf, 0x00, 0xae, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0xba, 0x00, 0xba, 0x00, + 0xc1, 0x00, 0xc2, 0x00, 0xc9, 0x00, 0xc7, 0x00, 0xcc, 0x00, 0xcb, 0x00, + 0xd3, 0x00, 0xd2, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0xdb, 0x00, 0xda, 0x00, + 0xdf, 0x00, 0xe1, 0x00, 0xe2, 0x00, 0xe2, 0x00, 0xe7, 0x00, 0xe6, 0x00, + 0xea, 0x00, 0xeb, 0x00, 0xed, 0x00, 0xee, 0x00, 0xf1, 0x00, 0xef, 0x00, + 0xf2, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0xf5, 0x00, 0xf6, 0x00, 0xf5, 0x00, + 0xf8, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xf8, 0x00, 0xfb, 0x00, 0xfb, 0x00, + 0xfa, 0x00, 0xfa, 0x00, 0xfb, 0x00, 0xfa, 0x00, 0xfc, 0x00, 0xfa, 0x00, + 0xf9, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xfa, 0x00, 0xf7, 0x00, 0xf7, 0x00, + 0xf7, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf4, 0x00, 0xf3, 0x00, 0xf5, 0x00, + 0xf3, 0x00, 0xf2, 0x00, 0xef, 0x00, 0xf0, 0x00, 0xef, 0x00, 0xee, 0x00, + 0xea, 0x00, 0xea, 0x00, 0xe7, 0x00, 0xe7, 0x00, 0xe5, 0x00, 0xe5, 0x00, + 0xe0, 0x00, 0xde, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xd8, 0x00, 0xd6, 0x00, + 0xd6, 0x00, 0xd7, 0x00, 0xd1, 0x00, 0xd1, 0x00, 0xce, 0x00, 0xcc, 0x00, + 0xc9, 0x00, 0xca, 0x00, 0xc4, 0x00, 0xc1, 0x00, 0xc0, 0x00, 0xc0, 0x00, + 0xba, 0x00, 0xb9, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0xae, 0x00, 0xb0, 0x00, + 0xaa, 0x00, 0xa9, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0x9e, 0x00, 0x9d, 0x00, + 0x98, 0x00, 0x96, 0x00, 0x92, 0x00, 0x92, 0x00, 0x8b, 0x00, 0x89, 0x00, + 0x84, 0x00, 0x85, 0x00, 0x7d, 0x00, 0x7c, 0x00, 0x76, 0x00, 0x74, 0x00, + 0x6f, 0x00, 0x6f, 0x00, 0x65, 0x00, 0x65, 0x00, 0x61, 0x00, 0x5f, 0x00, + 0x56, 0x00, 0x54, 0x00, 0x50, 0x00, 0x51, 0x00, 0x47, 0x00, 0x45, 0x00, + 0x3e, 0x00, 0x3f, 0x00, 0x37, 0x00, 0x35, 0x00, 0x2d, 0x00, 0x2c, 0x00, + 0x27, 0x00, 0x27, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0x14, 0x00, 0x15, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfb, 0xff, 0xf8, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xd8, 0xff, 0xda, 0xff, 0xcf, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xc7, 0xff, + 0xc0, 0xff, 0xbf, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xaf, 0xff, 0xaf, 0xff, + 0xa5, 0xff, 0xa3, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x97, 0xff, 0x97, 0xff, + 0x8e, 0xff, 0x8e, 0xff, 0x8a, 0xff, 0x88, 0xff, 0x80, 0xff, 0x80, 0xff, + 0x7a, 0xff, 0x79, 0xff, 0x74, 0xff, 0x73, 0xff, 0x6a, 0xff, 0x6a, 0xff, + 0x67, 0xff, 0x66, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x5b, 0xff, 0x5b, 0xff, + 0x53, 0xff, 0x53, 0xff, 0x4f, 0xff, 0x4f, 0xff, 0x4a, 0xff, 0x4b, 0xff, + 0x44, 0xff, 0x43, 0xff, 0x3e, 0xff, 0x40, 0xff, 0x3c, 0xff, 0x3b, 0xff, + 0x35, 0xff, 0x35, 0xff, 0x31, 0xff, 0x33, 0xff, 0x2e, 0xff, 0x2c, 0xff, + 0x2b, 0xff, 0x2b, 0xff, 0x27, 0xff, 0x26, 0xff, 0x23, 0xff, 0x23, 0xff, + 0x1e, 0xff, 0x20, 0xff, 0x1d, 0xff, 0x1c, 0xff, 0x18, 0xff, 0x19, 0xff, + 0x17, 0xff, 0x18, 0xff, 0x14, 0xff, 0x14, 0xff, 0x13, 0xff, 0x12, 0xff, + 0x10, 0xff, 0x0f, 0xff, 0x0d, 0xff, 0x0d, 0xff, 0x0d, 0xff, 0x0e, 0xff, + 0x0a, 0xff, 0x0b, 0xff, 0x0a, 0xff, 0x0b, 0xff, 0x0b, 0xff, 0x0a, 0xff, + 0x08, 0xff, 0x0a, 0xff, 0x09, 0xff, 0x08, 0xff, 0x09, 0xff, 0x0a, 0xff, + 0x09, 0xff, 0x08, 0xff, 0x0b, 0xff, 0x0c, 0xff, 0x0b, 0xff, 0x0a, 0xff, + 0x0d, 0xff, 0x0e, 0xff, 0x0e, 0xff, 0x0e, 0xff, 0x10, 0xff, 0x0e, 0xff, + 0x12, 0xff, 0x13, 0xff, 0x13, 0xff, 0x13, 0xff, 0x19, 0xff, 0x1b, 0xff, + 0x1a, 0xff, 0x1a, 0xff, 0x1e, 0xff, 0x20, 0xff, 0x24, 0xff, 0x23, 0xff, + 0x26, 0xff, 0x26, 0xff, 0x2c, 0xff, 0x2b, 0xff, 0x2f, 0xff, 0x30, 0xff, + 0x34, 0xff, 0x37, 0xff, 0x3b, 0xff, 0x39, 0xff, 0x3f, 0xff, 0x42, 0xff, + 0x47, 0xff, 0x44, 0xff, 0x4b, 0xff, 0x4e, 0xff, 0x51, 0xff, 0x50, 0xff, + 0x58, 0xff, 0x59, 0xff, 0x5e, 0xff, 0x5f, 0xff, 0x64, 0xff, 0x64, 0xff, + 0x6e, 0xff, 0x6e, 0xff, 0x71, 0xff, 0x72, 0xff, 0x7b, 0xff, 0x7b, 0xff, + 0x82, 0xff, 0x80, 0xff, 0x86, 0xff, 0x88, 0xff, 0x90, 0xff, 0x8f, 0xff, + 0x96, 0xff, 0x96, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0xa6, 0xff, 0xa3, 0xff, + 0xad, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xbe, 0xff, 0xbc, 0xff, + 0xc4, 0xff, 0xc6, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xd6, 0xff, 0xd4, 0xff, + 0xdb, 0xff, 0xdc, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0x02, 0x00, 0x01, 0x00, + 0x0a, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x11, 0x00, 0x1a, 0x00, 0x1c, 0x00, + 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x2a, 0x00, 0x30, 0x00, 0x32, 0x00, + 0x3b, 0x00, 0x39, 0x00, 0x41, 0x00, 0x41, 0x00, 0x4a, 0x00, 0x4b, 0x00, + 0x50, 0x00, 0x4f, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0x69, 0x00, 0x68, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x76, 0x00, 0x77, 0x00, + 0x7f, 0x00, 0x7d, 0x00, 0x83, 0x00, 0x86, 0x00, 0x8d, 0x00, 0x8b, 0x00, + 0x94, 0x00, 0x94, 0x00, 0x9c, 0x00, 0x9b, 0x00, 0xa0, 0x00, 0x9e, 0x00, + 0xa8, 0x00, 0xaa, 0x00, 0xae, 0x00, 0xad, 0x00, 0xb6, 0x00, 0xb5, 0x00, + 0xb9, 0x00, 0xba, 0x00, 0xc1, 0x00, 0xbf, 0x00, 0xc4, 0x00, 0xc5, 0x00, + 0xcb, 0x00, 0xcb, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xd4, 0x00, 0xd4, 0x00, + 0xd6, 0x00, 0xd7, 0x00, 0xdc, 0x00, 0xdb, 0x00, 0xdd, 0x00, 0xdf, 0x00, + 0xe4, 0x00, 0xe2, 0x00, 0xe2, 0x00, 0xe2, 0x00, 0xe9, 0x00, 0xe9, 0x00, + 0xe9, 0x00, 0xe8, 0x00, 0xeb, 0x00, 0xec, 0x00, 0xee, 0x00, 0xf0, 0x00, + 0xee, 0x00, 0xee, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf1, 0x00, 0xf0, 0x00, + 0xf3, 0x00, 0xf3, 0x00, 0xf2, 0x00, 0xf2, 0x00, 0xf2, 0x00, 0xf1, 0x00, + 0xf2, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf1, 0x00, 0xf0, 0x00, 0xf2, 0x00, + 0xf1, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf1, 0x00, 0xed, 0x00, 0xec, 0x00, + 0xec, 0x00, 0xec, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0xe8, 0x00, 0xe9, 0x00, + 0xe5, 0x00, 0xe6, 0x00, 0xe2, 0x00, 0xe3, 0x00, 0xe1, 0x00, 0xe0, 0x00, + 0xdc, 0x00, 0xde, 0x00, 0xdb, 0x00, 0xda, 0x00, 0xd6, 0x00, 0xd7, 0x00, + 0xd3, 0x00, 0xd3, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xcb, 0x00, 0xca, 0x00, + 0xc9, 0x00, 0xc9, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc1, 0x00, 0xbf, 0x00, + 0xb8, 0x00, 0xb9, 0x00, 0xb6, 0x00, 0xb6, 0x00, 0xae, 0x00, 0xaf, 0x00, + 0xa9, 0x00, 0xa9, 0x00, 0xa5, 0x00, 0xa4, 0x00, 0x9c, 0x00, 0x9f, 0x00, + 0x9b, 0x00, 0x99, 0x00, 0x92, 0x00, 0x92, 0x00, 0x8a, 0x00, 0x8c, 0x00, + 0x87, 0x00, 0x84, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x79, 0x00, 0x77, 0x00, + 0x6f, 0x00, 0x70, 0x00, 0x67, 0x00, 0x67, 0x00, 0x61, 0x00, 0x61, 0x00, + 0x59, 0x00, 0x58, 0x00, 0x50, 0x00, 0x4f, 0x00, 0x48, 0x00, 0x49, 0x00, + 0x42, 0x00, 0x40, 0x00, 0x38, 0x00, 0x39, 0x00, 0x2f, 0x00, 0x30, 0x00, + 0x28, 0x00, 0x27, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x17, 0x00, 0x15, 0x00, + 0x0d, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x06, 0x00, 0xfb, 0xff, 0xfe, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xe4, 0xff, 0xe5, 0xff, + 0xdc, 0xff, 0xdc, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xcf, 0xff, 0xce, 0xff, + 0xc1, 0xff, 0xc3, 0xff, 0xbd, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xb6, 0xff, + 0xac, 0xff, 0xab, 0xff, 0xa6, 0xff, 0xa7, 0xff, 0x9d, 0xff, 0x9e, 0xff, + 0x97, 0xff, 0x99, 0xff, 0x90, 0xff, 0x8f, 0xff, 0x87, 0xff, 0x8a, 0xff, + 0x83, 0xff, 0x83, 0xff, 0x7a, 0xff, 0x7b, 0xff, 0x76, 0xff, 0x77, 0xff, + 0x6f, 0xff, 0x6e, 0xff, 0x69, 0xff, 0x69, 0xff, 0x63, 0xff, 0x64, 0xff, + 0x5e, 0xff, 0x5d, 0xff, 0x59, 0xff, 0x59, 0xff, 0x53, 0xff, 0x55, 0xff, + 0x4e, 0xff, 0x4b, 0xff, 0x47, 0xff, 0x4a, 0xff, 0x46, 0xff, 0x43, 0xff, + 0x3e, 0xff, 0x3f, 0xff, 0x3c, 0xff, 0x3b, 0xff, 0x36, 0xff, 0x37, 0xff, + 0x33, 0xff, 0x32, 0xff, 0x30, 0xff, 0x2f, 0xff, 0x2a, 0xff, 0x2b, 0xff, + 0x29, 0xff, 0x28, 0xff, 0x24, 0xff, 0x23, 0xff, 0x22, 0xff, 0x24, 0xff, + 0x20, 0xff, 0x1c, 0xff, 0x1a, 0xff, 0x1d, 0xff, 0x19, 0xff, 0x17, 0xff, + 0x17, 0xff, 0x17, 0xff, 0x13, 0xff, 0x12, 0xff, 0x14, 0xff, 0x13, 0xff, + 0x11, 0xff, 0x10, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x10, 0xff, 0x10, 0xff, + 0x10, 0xff, 0x0e, 0xff, 0x0d, 0xff, 0x0e, 0xff, 0x10, 0xff, 0x0d, 0xff, + 0x0d, 0xff, 0x0e, 0xff, 0x11, 0xff, 0x0f, 0xff, 0x11, 0xff, 0x11, 0xff, + 0x11, 0xff, 0x11, 0xff, 0x14, 0xff, 0x14, 0xff, 0x15, 0xff, 0x15, 0xff, + 0x17, 0xff, 0x16, 0xff, 0x1b, 0xff, 0x1b, 0xff, 0x1c, 0xff, 0x1b, 0xff, + 0x20, 0xff, 0x21, 0xff, 0x22, 0xff, 0x21, 0xff, 0x26, 0xff, 0x28, 0xff, + 0x2b, 0xff, 0x2a, 0xff, 0x2e, 0xff, 0x2d, 0xff, 0x33, 0xff, 0x35, 0xff, + 0x38, 0xff, 0x37, 0xff, 0x3d, 0xff, 0x3e, 0xff, 0x40, 0xff, 0x41, 0xff, + 0x47, 0xff, 0x49, 0xff, 0x4d, 0xff, 0x4b, 0xff, 0x52, 0xff, 0x55, 0xff, + 0x59, 0xff, 0x58, 0xff, 0x60, 0xff, 0x61, 0xff, 0x65, 0xff, 0x65, 0xff, + 0x6d, 0xff, 0x6c, 0xff, 0x70, 0xff, 0x72, 0xff, 0x7a, 0xff, 0x79, 0xff, + 0x80, 0xff, 0x80, 0xff, 0x85, 0xff, 0x85, 0xff, 0x8e, 0xff, 0x8d, 0xff, + 0x93, 0xff, 0x93, 0xff, 0x9d, 0xff, 0x9c, 0xff, 0xa3, 0xff, 0xa2, 0xff, + 0xa7, 0xff, 0xa9, 0xff, 0xb3, 0xff, 0xb1, 0xff, 0xb6, 0xff, 0xb6, 0xff, + 0xc1, 0xff, 0xc3, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xce, 0xff, 0xcf, 0xff, + 0xd7, 0xff, 0xd7, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xe9, 0xff, 0xe7, 0xff, + 0xeb, 0xff, 0xed, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0x05, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x1d, 0x00, 0x1e, 0x00, 0x21, 0x00, 0x23, 0x00, 0x2b, 0x00, 0x2c, 0x00, + 0x31, 0x00, 0x31, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x43, 0x00, 0x44, 0x00, + 0x48, 0x00, 0x4a, 0x00, 0x54, 0x00, 0x52, 0x00, 0x58, 0x00, 0x59, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x69, 0x00, 0x68, 0x00, 0x71, 0x00, 0x71, 0x00, + 0x78, 0x00, 0x77, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x87, 0x00, 0x87, 0x00, + 0x8a, 0x00, 0x8c, 0x00, 0x94, 0x00, 0x91, 0x00, 0x9b, 0x00, 0x9c, 0x00, + 0xa0, 0x00, 0x9e, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xac, 0x00, 0xac, 0x00, + 0xb3, 0x00, 0xb1, 0x00, 0xb6, 0x00, 0xb9, 0x00, 0xbe, 0x00, 0xbc, 0x00, + 0xc3, 0x00, 0xc3, 0x00, 0xc6, 0x00, 0xc8, 0x00, 0xcc, 0x00, 0xca, 0x00, + 0xce, 0x00, 0xd1, 0x00, 0xd3, 0x00, 0xd1, 0x00, 0xd7, 0x00, 0xd7, 0x00, + 0xd9, 0x00, 0xd9, 0x00, 0xdc, 0x00, 0xdc, 0x00, 0xdf, 0x00, 0xe0, 0x00, + 0xdf, 0x00, 0xe0, 0x00, 0xe6, 0x00, 0xe5, 0x00, 0xe4, 0x00, 0xe2, 0x00, + 0xe7, 0x00, 0xe8, 0x00, 0xe7, 0x00, 0xe7, 0x00, 0xea, 0x00, 0xe9, 0x00, + 0xeb, 0x00, 0xea, 0x00, 0xea, 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xec, 0x00, + 0xeb, 0x00, 0xea, 0x00, 0xeb, 0x00, 0xeb, 0x00, 0xea, 0x00, 0xe9, 0x00, + 0xe9, 0x00, 0xe9, 0x00, 0xe8, 0x00, 0xe9, 0x00, 0xe7, 0x00, 0xe7, 0x00, + 0xe8, 0x00, 0xe7, 0x00, 0xe6, 0x00, 0xe3, 0x00, 0xe3, 0x00, 0xe2, 0x00, + 0xe1, 0x00, 0xe1, 0x00, 0xdf, 0x00, 0xde, 0x00, 0xde, 0x00, 0xde, 0x00, + 0xda, 0x00, 0xd9, 0x00, 0xd8, 0x00, 0xd6, 0x00, 0xd4, 0x00, 0xd3, 0x00, + 0xd1, 0x00, 0xd2, 0x00, 0xd0, 0x00, 0xcc, 0x00, 0xc9, 0x00, 0xcb, 0x00, + 0xc6, 0x00, 0xc5, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0xbd, 0x00, 0xbd, 0x00, + 0xb9, 0x00, 0xb9, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xae, 0x00, 0xb0, 0x00, + 0xac, 0x00, 0xab, 0x00, 0xa2, 0x00, 0xa5, 0x00, 0xa1, 0x00, 0xa0, 0x00, + 0x99, 0x00, 0x98, 0x00, 0x93, 0x00, 0x93, 0x00, 0x8e, 0x00, 0x8d, 0x00, + 0x85, 0x00, 0x85, 0x00, 0x80, 0x00, 0x81, 0x00, 0x77, 0x00, 0x75, 0x00, + 0x70, 0x00, 0x72, 0x00, 0x6b, 0x00, 0x6a, 0x00, 0x62, 0x00, 0x61, 0x00, + 0x5e, 0x00, 0x5e, 0x00, 0x52, 0x00, 0x52, 0x00, 0x4d, 0x00, 0x4c, 0x00, + 0x42, 0x00, 0x42, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x33, 0x00, 0x34, 0x00, + 0x2c, 0x00, 0x2c, 0x00, 0x22, 0x00, 0x23, 0x00, 0x1b, 0x00, 0x1a, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x02, 0x00, + 0xfa, 0xff, 0xfa, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xe3, 0xff, 0xe3, 0xff, 0xdb, 0xff, 0xd9, 0xff, 0xd4, 0xff, 0xd3, 0xff, + 0xcc, 0xff, 0xcc, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xbd, 0xff, 0xbc, 0xff, + 0xb6, 0xff, 0xb6, 0xff, 0xaf, 0xff, 0xad, 0xff, 0xa7, 0xff, 0xa7, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0x9a, 0xff, 0x9a, 0xff, 0x94, 0xff, 0x92, 0xff, + 0x8c, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x85, 0xff, 0x7e, 0xff, 0x7f, 0xff, + 0x79, 0xff, 0x79, 0xff, 0x73, 0xff, 0x73, 0xff, 0x6f, 0xff, 0x6f, 0xff, + 0x66, 0xff, 0x67, 0xff, 0x64, 0xff, 0x63, 0xff, 0x5b, 0xff, 0x5e, 0xff, + 0x58, 0xff, 0x58, 0xff, 0x54, 0xff, 0x53, 0xff, 0x4b, 0xff, 0x4c, 0xff, + 0x4a, 0xff, 0x49, 0xff, 0x42, 0xff, 0x42, 0xff, 0x3f, 0xff, 0x3f, 0xff, + 0x3c, 0xff, 0x3b, 0xff, 0x35, 0xff, 0x38, 0xff, 0x36, 0xff, 0x34, 0xff, + 0x2e, 0xff, 0x2d, 0xff, 0x2c, 0xff, 0x2c, 0xff, 0x28, 0xff, 0x29, 0xff, + 0x25, 0xff, 0x23, 0xff, 0x24, 0xff, 0x23, 0xff, 0x1e, 0xff, 0x1f, 0xff, + 0x1f, 0xff, 0x1f, 0xff, 0x1b, 0xff, 0x1b, 0xff, 0x1a, 0xff, 0x1a, 0xff, + 0x17, 0xff, 0x16, 0xff, 0x16, 0xff, 0x17, 0xff, 0x16, 0xff, 0x15, 0xff, + 0x13, 0xff, 0x14, 0xff, 0x16, 0xff, 0x14, 0xff, 0x12, 0xff, 0x13, 0xff, + 0x15, 0xff, 0x15, 0xff, 0x15, 0xff, 0x15, 0xff, 0x14, 0xff, 0x17, 0xff, + 0x19, 0xff, 0x16, 0xff, 0x19, 0xff, 0x1a, 0xff, 0x1a, 0xff, 0x1a, 0xff, + 0x1e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1e, 0xff, 0x22, 0xff, 0x23, 0xff, + 0x24, 0xff, 0x23, 0xff, 0x28, 0xff, 0x29, 0xff, 0x2c, 0xff, 0x2c, 0xff, + 0x30, 0xff, 0x2f, 0xff, 0x34, 0xff, 0x36, 0xff, 0x38, 0xff, 0x35, 0xff, + 0x3b, 0xff, 0x3e, 0xff, 0x44, 0xff, 0x41, 0xff, 0x44, 0xff, 0x47, 0xff, + 0x4d, 0xff, 0x4b, 0xff, 0x4f, 0xff, 0x50, 0xff, 0x55, 0xff, 0x56, 0xff, + 0x5c, 0xff, 0x5c, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x66, 0xff, 0x68, 0xff, + 0x6e, 0xff, 0x6a, 0xff, 0x70, 0xff, 0x74, 0xff, 0x7b, 0xff, 0x79, 0xff, + 0x7b, 0xff, 0x7e, 0xff, 0x88, 0xff, 0x86, 0xff, 0x8b, 0xff, 0x8b, 0xff, + 0x91, 0xff, 0x93, 0xff, 0x99, 0xff, 0x97, 0xff, 0xa0, 0xff, 0xa1, 0xff, + 0xa7, 0xff, 0xa7, 0xff, 0xac, 0xff, 0xab, 0xff, 0xb6, 0xff, 0xb8, 0xff, + 0xb9, 0xff, 0xb9, 0xff, 0xc3, 0xff, 0xc5, 0xff, 0xca, 0xff, 0xc9, 0xff, + 0xcf, 0xff, 0xcf, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xde, 0xff, 0xde, 0xff, + 0xea, 0xff, 0xe9, 0xff, 0xee, 0xff, 0xed, 0xff, 0xf6, 0xff, 0xf7, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x06, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0f, 0x00, + 0x16, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x25, 0x00, 0x24, 0x00, + 0x2e, 0x00, 0x2e, 0x00, 0x32, 0x00, 0x33, 0x00, 0x3f, 0x00, 0x3c, 0x00, + 0x44, 0x00, 0x46, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x54, 0x00, 0x55, 0x00, + 0x5b, 0x00, 0x5b, 0x00, 0x61, 0x00, 0x63, 0x00, 0x6a, 0x00, 0x6b, 0x00, + 0x70, 0x00, 0x71, 0x00, 0x77, 0x00, 0x78, 0x00, 0x7f, 0x00, 0x81, 0x00, + 0x86, 0x00, 0x86, 0x00, 0x8d, 0x00, 0x8c, 0x00, 0x93, 0x00, 0x93, 0x00, + 0x98, 0x00, 0x99, 0x00, 0x9e, 0x00, 0x9d, 0x00, 0xa6, 0x00, 0xa6, 0x00, + 0xa9, 0x00, 0xa9, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb5, 0x00, 0xb5, 0x00, + 0xbb, 0x00, 0xb9, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc2, 0x00, 0xbf, 0x00, + 0xc7, 0x00, 0xc8, 0x00, 0xca, 0x00, 0xc9, 0x00, 0xcd, 0x00, 0xcd, 0x00, + 0xd0, 0x00, 0xcf, 0x00, 0xd4, 0x00, 0xd4, 0x00, 0xd7, 0x00, 0xd6, 0x00, + 0xd9, 0x00, 0xd7, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0xdd, 0x00, 0xda, 0x00, + 0xdf, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xdf, 0x00, 0xe3, 0x00, 0xe2, 0x00, + 0xe1, 0x00, 0xe1, 0x00, 0xe4, 0x00, 0xe1, 0x00, 0xe4, 0x00, 0xe4, 0x00, + 0xe3, 0x00, 0xe2, 0x00, 0xe4, 0x00, 0xe5, 0x00, 0xe4, 0x00, 0xe3, 0x00, + 0xe5, 0x00, 0xe3, 0x00, 0xe3, 0x00, 0xe3, 0x00, 0xe1, 0x00, 0xe3, 0x00, + 0xe2, 0x00, 0xe1, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xdf, 0x00, + 0xde, 0x00, 0xdd, 0x00, 0xdc, 0x00, 0xdc, 0x00, 0xd9, 0x00, 0xd9, 0x00, + 0xd7, 0x00, 0xd7, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd3, 0x00, 0xd1, 0x00, + 0xce, 0x00, 0xcf, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xc7, 0x00, 0xc9, 0x00, + 0xc3, 0x00, 0xc5, 0x00, 0xc2, 0x00, 0xc1, 0x00, 0xbb, 0x00, 0xbc, 0x00, + 0xba, 0x00, 0xb9, 0x00, 0xb2, 0x00, 0xb5, 0x00, 0xb0, 0x00, 0xae, 0x00, + 0xa9, 0x00, 0xab, 0x00, 0xa4, 0x00, 0xa3, 0x00, 0x9d, 0x00, 0xa2, 0x00, + 0x99, 0x00, 0x97, 0x00, 0x93, 0x00, 0x95, 0x00, 0x8d, 0x00, 0x8d, 0x00, + 0x86, 0x00, 0x86, 0x00, 0x80, 0x00, 0x81, 0x00, 0x77, 0x00, 0x77, 0x00, + 0x73, 0x00, 0x73, 0x00, 0x6a, 0x00, 0x6c, 0x00, 0x63, 0x00, 0x62, 0x00, + 0x5d, 0x00, 0x5d, 0x00, 0x53, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x4d, 0x00, + 0x45, 0x00, 0x44, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x2d, 0x00, 0x2b, 0x00, 0x28, 0x00, 0x27, 0x00, 0x1d, 0x00, 0x1d, 0x00, + 0x17, 0x00, 0x16, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x05, 0x00, + 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xee, 0xff, 0xef, 0xff, + 0xea, 0xff, 0xe8, 0xff, 0xdf, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xd9, 0xff, + 0xd1, 0xff, 0xd1, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xc2, 0xff, 0xc3, 0xff, + 0xbd, 0xff, 0xbc, 0xff, 0xb7, 0xff, 0xb5, 0xff, 0xb0, 0xff, 0xb0, 0xff, + 0xa9, 0xff, 0xa8, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0x9b, 0xff, 0x99, 0xff, + 0x93, 0xff, 0x93, 0xff, 0x8f, 0xff, 0x8e, 0xff, 0x87, 0xff, 0x87, 0xff, + 0x82, 0xff, 0x82, 0xff, 0x7b, 0xff, 0x7a, 0xff, 0x77, 0xff, 0x76, 0xff, + 0x6e, 0xff, 0x6f, 0xff, 0x6b, 0xff, 0x69, 0xff, 0x64, 0xff, 0x65, 0xff, + 0x5f, 0xff, 0x5e, 0xff, 0x5a, 0xff, 0x5b, 0xff, 0x53, 0xff, 0x53, 0xff, + 0x50, 0xff, 0x4f, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x43, 0xff, 0x44, 0xff, + 0x44, 0xff, 0x42, 0xff, 0x3a, 0xff, 0x3c, 0xff, 0x38, 0xff, 0x38, 0xff, + 0x35, 0xff, 0x36, 0xff, 0x30, 0xff, 0x2f, 0xff, 0x2f, 0xff, 0x2f, 0xff, + 0x28, 0xff, 0x29, 0xff, 0x29, 0xff, 0x28, 0xff, 0x24, 0xff, 0x25, 0xff, + 0x24, 0xff, 0x22, 0xff, 0x1f, 0xff, 0x20, 0xff, 0x1f, 0xff, 0x1f, 0xff, + 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1a, 0xff, 0x1b, 0xff, 0x1b, 0xff, + 0x1a, 0xff, 0x19, 0xff, 0x1a, 0xff, 0x19, 0xff, 0x1a, 0xff, 0x1a, 0xff, + 0x1c, 0xff, 0x19, 0xff, 0x1b, 0xff, 0x1c, 0xff, 0x1c, 0xff, 0x19, 0xff, + 0x1d, 0xff, 0x1e, 0xff, 0x1f, 0xff, 0x1e, 0xff, 0x20, 0xff, 0x1f, 0xff, + 0x24, 0xff, 0x23, 0xff, 0x23, 0xff, 0x21, 0xff, 0x28, 0xff, 0x29, 0xff, + 0x29, 0xff, 0x28, 0xff, 0x2b, 0xff, 0x2c, 0xff, 0x32, 0xff, 0x30, 0xff, + 0x32, 0xff, 0x32, 0xff, 0x39, 0xff, 0x37, 0xff, 0x3a, 0xff, 0x3b, 0xff, + 0x3f, 0xff, 0x3e, 0xff, 0x43, 0xff, 0x45, 0xff, 0x48, 0xff, 0x47, 0xff, + 0x4d, 0xff, 0x4f, 0xff, 0x53, 0xff, 0x52, 0xff, 0x57, 0xff, 0x55, 0xff, + 0x5a, 0xff, 0x5d, 0xff, 0x64, 0xff, 0x61, 0xff, 0x65, 0xff, 0x67, 0xff, + 0x6c, 0xff, 0x6b, 0xff, 0x70, 0xff, 0x71, 0xff, 0x77, 0xff, 0x77, 0xff, + 0x7d, 0xff, 0x7c, 0xff, 0x82, 0xff, 0x83, 0xff, 0x88, 0xff, 0x89, 0xff, + 0x91, 0xff, 0x8f, 0xff, 0x95, 0xff, 0x96, 0xff, 0x9e, 0xff, 0x9c, 0xff, + 0xa3, 0xff, 0xa3, 0xff, 0xab, 0xff, 0xaa, 0xff, 0xb1, 0xff, 0xb1, 0xff, + 0xb7, 0xff, 0xb7, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xc6, 0xff, 0xc5, 0xff, + 0xcd, 0xff, 0xcc, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xdd, 0xff, 0xdd, 0xff, + 0xe3, 0xff, 0xe0, 0xff, 0xe9, 0xff, 0xec, 0xff, 0xf3, 0xff, 0xf1, 0xff, + 0xf8, 0xff, 0xfa, 0xff, 0x04, 0x00, 0x03, 0x00, 0x07, 0x00, 0x09, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1f, 0x00, 0x20, 0x00, + 0x29, 0x00, 0x27, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x3e, 0x00, 0x3e, 0x00, 0x47, 0x00, 0x47, 0x00, 0x4d, 0x00, 0x4e, 0x00, + 0x54, 0x00, 0x55, 0x00, 0x5e, 0x00, 0x5c, 0x00, 0x62, 0x00, 0x62, 0x00, + 0x6b, 0x00, 0x6c, 0x00, 0x70, 0x00, 0x71, 0x00, 0x78, 0x00, 0x78, 0x00, + 0x7e, 0x00, 0x7f, 0x00, 0x86, 0x00, 0x85, 0x00, 0x8a, 0x00, 0x8d, 0x00, + 0x91, 0x00, 0x90, 0x00, 0x96, 0x00, 0x98, 0x00, 0x9d, 0x00, 0x9c, 0x00, + 0xa2, 0x00, 0xa4, 0x00, 0xa9, 0x00, 0xa7, 0x00, 0xab, 0x00, 0xab, 0x00, + 0xb1, 0x00, 0xb2, 0x00, 0xb6, 0x00, 0xb4, 0x00, 0xb9, 0x00, 0xbb, 0x00, + 0xbf, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xbf, 0x00, 0xc5, 0x00, 0xc6, 0x00, + 0xc7, 0x00, 0xc7, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xce, 0x00, 0xcc, 0x00, + 0xd0, 0x00, 0xd2, 0x00, 0xd3, 0x00, 0xd1, 0x00, 0xd4, 0x00, 0xd5, 0x00, + 0xd7, 0x00, 0xd5, 0x00, 0xd7, 0x00, 0xd8, 0x00, 0xda, 0x00, 0xdb, 0x00, + 0xdb, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0xdc, 0x00, 0xde, 0x00, 0xdf, 0x00, + 0xde, 0x00, 0xdc, 0x00, 0xdd, 0x00, 0xdf, 0x00, 0xdf, 0x00, 0xdd, 0x00, + 0xdd, 0x00, 0xde, 0x00, 0xdf, 0x00, 0xde, 0x00, 0xdd, 0x00, 0xde, 0x00, + 0xdd, 0x00, 0xdc, 0x00, 0xdd, 0x00, 0xdd, 0x00, 0xdb, 0x00, 0xdc, 0x00, + 0xd9, 0x00, 0xd8, 0x00, 0xd8, 0x00, 0xd8, 0x00, 0xd5, 0x00, 0xd6, 0x00, + 0xd4, 0x00, 0xd4, 0x00, 0xd2, 0x00, 0xd3, 0x00, 0xcd, 0x00, 0xce, 0x00, + 0xcf, 0x00, 0xcd, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xc7, 0x00, 0xc6, 0x00, + 0xc2, 0x00, 0xc3, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xbd, 0x00, 0xbd, 0x00, + 0xb6, 0x00, 0xb8, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xad, 0x00, 0xad, 0x00, + 0xa8, 0x00, 0xaa, 0x00, 0xa5, 0x00, 0xa2, 0x00, 0x9b, 0x00, 0xa0, 0x00, + 0x9a, 0x00, 0x98, 0x00, 0x90, 0x00, 0x93, 0x00, 0x8e, 0x00, 0x8c, 0x00, + 0x86, 0x00, 0x87, 0x00, 0x80, 0x00, 0x7f, 0x00, 0x79, 0x00, 0x79, 0x00, + 0x72, 0x00, 0x71, 0x00, 0x6c, 0x00, 0x6b, 0x00, 0x63, 0x00, 0x64, 0x00, + 0x5d, 0x00, 0x5e, 0x00, 0x56, 0x00, 0x55, 0x00, 0x4e, 0x00, 0x4e, 0x00, + 0x47, 0x00, 0x47, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x39, 0x00, 0x38, 0x00, + 0x32, 0x00, 0x30, 0x00, 0x28, 0x00, 0x29, 0x00, 0x22, 0x00, 0x23, 0x00, + 0x19, 0x00, 0x1a, 0x00, 0x14, 0x00, 0x13, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x03, 0x00, 0x03, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xf5, 0xff, 0xf6, 0xff, + 0xef, 0xff, 0xee, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xe0, 0xff, 0xdf, 0xff, + 0xdb, 0xff, 0xda, 0xff, 0xd1, 0xff, 0xd2, 0xff, 0xcc, 0xff, 0xcc, 0xff, + 0xc6, 0xff, 0xc6, 0xff, 0xbc, 0xff, 0xbb, 0xff, 0xb8, 0xff, 0xba, 0xff, + 0xb1, 0xff, 0xad, 0xff, 0xa9, 0xff, 0xac, 0xff, 0xa5, 0xff, 0xa2, 0xff, + 0x9b, 0xff, 0x9d, 0xff, 0x97, 0xff, 0x97, 0xff, 0x8f, 0xff, 0x8f, 0xff, + 0x88, 0xff, 0x8a, 0xff, 0x87, 0xff, 0x84, 0xff, 0x7b, 0xff, 0x7d, 0xff, + 0x7c, 0xff, 0x7a, 0xff, 0x72, 0xff, 0x72, 0xff, 0x6d, 0xff, 0x6d, 0xff, + 0x67, 0xff, 0x67, 0xff, 0x62, 0xff, 0x61, 0xff, 0x5d, 0xff, 0x5c, 0xff, + 0x57, 0xff, 0x57, 0xff, 0x50, 0xff, 0x50, 0xff, 0x4f, 0xff, 0x4e, 0xff, + 0x47, 0xff, 0x48, 0xff, 0x46, 0xff, 0x44, 0xff, 0x3f, 0xff, 0x3f, 0xff, + 0x3c, 0xff, 0x3d, 0xff, 0x39, 0xff, 0x39, 0xff, 0x34, 0xff, 0x34, 0xff, + 0x34, 0xff, 0x31, 0xff, 0x2d, 0xff, 0x2e, 0xff, 0x2d, 0xff, 0x2e, 0xff, + 0x2a, 0xff, 0x29, 0xff, 0x27, 0xff, 0x28, 0xff, 0x26, 0xff, 0x24, 0xff, + 0x23, 0xff, 0x25, 0xff, 0x23, 0xff, 0x21, 0xff, 0x21, 0xff, 0x22, 0xff, + 0x22, 0xff, 0x21, 0xff, 0x21, 0xff, 0x21, 0xff, 0x20, 0xff, 0x21, 0xff, + 0x20, 0xff, 0x21, 0xff, 0x20, 0xff, 0x22, 0xff, 0x23, 0xff, 0x21, 0xff, + 0x22, 0xff, 0x23, 0xff, 0x24, 0xff, 0x23, 0xff, 0x27, 0xff, 0x28, 0xff, + 0x28, 0xff, 0x27, 0xff, 0x2b, 0xff, 0x2b, 0xff, 0x2c, 0xff, 0x2d, 0xff, + 0x30, 0xff, 0x2e, 0xff, 0x32, 0xff, 0x35, 0xff, 0x34, 0xff, 0x32, 0xff, + 0x3a, 0xff, 0x3b, 0xff, 0x38, 0xff, 0x39, 0xff, 0x41, 0xff, 0x41, 0xff, + 0x41, 0xff, 0x42, 0xff, 0x47, 0xff, 0x47, 0xff, 0x4b, 0xff, 0x4b, 0xff, + 0x4d, 0xff, 0x4d, 0xff, 0x55, 0xff, 0x54, 0xff, 0x57, 0xff, 0x57, 0xff, + 0x5c, 0xff, 0x5d, 0xff, 0x63, 0xff, 0x62, 0xff, 0x65, 0xff, 0x66, 0xff, + 0x6e, 0xff, 0x6e, 0xff, 0x71, 0xff, 0x70, 0xff, 0x78, 0xff, 0x79, 0xff, + 0x7b, 0xff, 0x7b, 0xff, 0x82, 0xff, 0x82, 0xff, 0x89, 0xff, 0x88, 0xff, + 0x8e, 0xff, 0x8e, 0xff, 0x94, 0xff, 0x93, 0xff, 0x99, 0xff, 0x99, 0xff, + 0xa1, 0xff, 0xa2, 0xff, 0xa7, 0xff, 0xa5, 0xff, 0xad, 0xff, 0xad, 0xff, + 0xb4, 0xff, 0xb4, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xc2, 0xff, 0xc2, 0xff, + 0xcb, 0xff, 0xc8, 0xff, 0xd1, 0xff, 0xd2, 0xff, 0xd7, 0xff, 0xd6, 0xff, + 0xe1, 0xff, 0xe0, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xef, 0xff, 0xed, 0xff, + 0xf5, 0xff, 0xf7, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0x05, 0x00, 0x05, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x15, 0x00, 0x14, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x24, 0x00, 0x23, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x32, 0x00, 0x31, 0x00, + 0x3b, 0x00, 0x3a, 0x00, 0x40, 0x00, 0x40, 0x00, 0x49, 0x00, 0x48, 0x00, + 0x4f, 0x00, 0x50, 0x00, 0x57, 0x00, 0x55, 0x00, 0x5e, 0x00, 0x5e, 0x00, + 0x63, 0x00, 0x64, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x72, 0x00, 0x72, 0x00, + 0x77, 0x00, 0x78, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x82, 0x00, 0x83, 0x00, + 0x89, 0x00, 0x89, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x96, 0x00, 0x95, 0x00, + 0x97, 0x00, 0x98, 0x00, 0x9f, 0x00, 0x9e, 0x00, 0xa2, 0x00, 0xa3, 0x00, + 0xa7, 0x00, 0xa7, 0x00, 0xab, 0x00, 0xac, 0x00, 0xaf, 0x00, 0xb0, 0x00, + 0xb4, 0x00, 0xb3, 0x00, 0xb5, 0x00, 0xb9, 0x00, 0xbc, 0x00, 0xba, 0x00, + 0xbd, 0x00, 0xbf, 0x00, 0xc1, 0x00, 0xc0, 0x00, 0xc5, 0x00, 0xc5, 0x00, + 0xc7, 0x00, 0xc8, 0x00, 0xcb, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcc, 0x00, + 0xce, 0x00, 0xce, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0xd2, 0x00, + 0xd4, 0x00, 0xd5, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd5, 0x00, 0xd5, 0x00, + 0xd8, 0x00, 0xd7, 0x00, 0xd7, 0x00, 0xd9, 0x00, 0xd9, 0x00, 0xd7, 0x00, + 0xd6, 0x00, 0xd9, 0x00, 0xd9, 0x00, 0xd7, 0x00, 0xd9, 0x00, 0xda, 0x00, + 0xd7, 0x00, 0xd7, 0x00, 0xd9, 0x00, 0xd8, 0x00, 0xd6, 0x00, 0xd5, 0x00, + 0xd7, 0x00, 0xd6, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd3, 0x00, 0xd2, 0x00, + 0xd1, 0x00, 0xd2, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xcd, 0x00, 0xcd, 0x00, + 0xc9, 0x00, 0xca, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc3, 0x00, 0xc4, 0x00, + 0xc1, 0x00, 0xc1, 0x00, 0xbc, 0x00, 0xbb, 0x00, 0xbb, 0x00, 0xba, 0x00, + 0xb5, 0x00, 0xb5, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xac, 0x00, 0xab, 0x00, + 0xa5, 0x00, 0xa6, 0x00, 0xa5, 0x00, 0xa4, 0x00, 0x98, 0x00, 0x99, 0x00, + 0x99, 0x00, 0x98, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x8b, 0x00, 0x8a, 0x00, + 0x85, 0x00, 0x85, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x7a, 0x00, 0x7b, 0x00, + 0x70, 0x00, 0x71, 0x00, 0x6e, 0x00, 0x6d, 0x00, 0x64, 0x00, 0x65, 0x00, + 0x5d, 0x00, 0x5d, 0x00, 0x58, 0x00, 0x58, 0x00, 0x4e, 0x00, 0x4f, 0x00, + 0x4b, 0x00, 0x4a, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x3d, 0x00, 0x3b, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x26, 0x00, 0x27, 0x00, + 0x1f, 0x00, 0x1d, 0x00, 0x19, 0x00, 0x19, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x03, 0x00, 0xfc, 0xff, 0xfd, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xed, 0xff, 0xef, 0xff, 0xe6, 0xff, 0xe7, 0xff, + 0xdf, 0xff, 0xdf, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xd3, 0xff, 0xd1, 0xff, + 0xca, 0xff, 0xcc, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xbe, 0xff, 0xbf, 0xff, + 0xb8, 0xff, 0xb8, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xaa, 0xff, 0xaa, 0xff, + 0xa7, 0xff, 0xa6, 0xff, 0x9b, 0xff, 0x9d, 0xff, 0x98, 0xff, 0x98, 0xff, + 0x90, 0xff, 0x92, 0xff, 0x89, 0xff, 0x89, 0xff, 0x86, 0xff, 0x87, 0xff, + 0x7e, 0xff, 0x7d, 0xff, 0x7a, 0xff, 0x79, 0xff, 0x72, 0xff, 0x73, 0xff, + 0x6d, 0xff, 0x6c, 0xff, 0x67, 0xff, 0x68, 0xff, 0x63, 0xff, 0x61, 0xff, + 0x5e, 0xff, 0x5f, 0xff, 0x58, 0xff, 0x56, 0xff, 0x54, 0xff, 0x54, 0xff, + 0x4f, 0xff, 0x4f, 0xff, 0x4b, 0xff, 0x4a, 0xff, 0x46, 0xff, 0x45, 0xff, + 0x43, 0xff, 0x43, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3b, 0xff, 0x3a, 0xff, + 0x38, 0xff, 0x39, 0xff, 0x35, 0xff, 0x33, 0xff, 0x32, 0xff, 0x34, 0xff, + 0x2f, 0xff, 0x2e, 0xff, 0x2c, 0xff, 0x2e, 0xff, 0x2d, 0xff, 0x2e, 0xff, + 0x2b, 0xff, 0x2a, 0xff, 0x2b, 0xff, 0x2c, 0xff, 0x27, 0xff, 0x28, 0xff, + 0x29, 0xff, 0x29, 0xff, 0x27, 0xff, 0x26, 0xff, 0x28, 0xff, 0x2a, 0xff, + 0x27, 0xff, 0x26, 0xff, 0x2a, 0xff, 0x29, 0xff, 0x27, 0xff, 0x27, 0xff, + 0x2a, 0xff, 0x2c, 0xff, 0x29, 0xff, 0x2a, 0xff, 0x2d, 0xff, 0x2c, 0xff, + 0x2e, 0xff, 0x2f, 0xff, 0x30, 0xff, 0x2f, 0xff, 0x33, 0xff, 0x33, 0xff, + 0x34, 0xff, 0x33, 0xff, 0x39, 0xff, 0x38, 0xff, 0x3a, 0xff, 0x3a, 0xff, + 0x3c, 0xff, 0x3d, 0xff, 0x40, 0xff, 0x40, 0xff, 0x43, 0xff, 0x42, 0xff, + 0x45, 0xff, 0x47, 0xff, 0x4b, 0xff, 0x49, 0xff, 0x4a, 0xff, 0x4c, 0xff, + 0x53, 0xff, 0x53, 0xff, 0x54, 0xff, 0x54, 0xff, 0x5a, 0xff, 0x59, 0xff, + 0x5e, 0xff, 0x5d, 0xff, 0x62, 0xff, 0x62, 0xff, 0x67, 0xff, 0x66, 0xff, + 0x6a, 0xff, 0x6a, 0xff, 0x72, 0xff, 0x73, 0xff, 0x76, 0xff, 0x73, 0xff, + 0x7c, 0xff, 0x7d, 0xff, 0x81, 0xff, 0x81, 0xff, 0x85, 0xff, 0x85, 0xff, + 0x8e, 0xff, 0x8d, 0xff, 0x90, 0xff, 0x90, 0xff, 0x99, 0xff, 0x99, 0xff, + 0x9d, 0xff, 0x9f, 0xff, 0xa7, 0xff, 0xa5, 0xff, 0xa9, 0xff, 0xaa, 0xff, + 0xb2, 0xff, 0xb2, 0xff, 0xba, 0xff, 0xb8, 0xff, 0xbe, 0xff, 0xbe, 0xff, + 0xc6, 0xff, 0xc7, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xd5, 0xff, 0xd4, 0xff, + 0xdc, 0xff, 0xdd, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xeb, 0xff, 0xec, 0xff, + 0xf2, 0xff, 0xf1, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x0a, 0x00, 0x08, 0x00, 0x10, 0x00, 0x10, 0x00, 0x16, 0x00, 0x19, 0x00, + 0x20, 0x00, 0x1f, 0x00, 0x25, 0x00, 0x26, 0x00, 0x2e, 0x00, 0x2e, 0x00, + 0x35, 0x00, 0x33, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x42, 0x00, 0x42, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x57, 0x00, 0x57, 0x00, + 0x5d, 0x00, 0x5d, 0x00, 0x62, 0x00, 0x62, 0x00, 0x6d, 0x00, 0x6c, 0x00, + 0x6f, 0x00, 0x6f, 0x00, 0x76, 0x00, 0x78, 0x00, 0x7f, 0x00, 0x7c, 0x00, + 0x7e, 0x00, 0x81, 0x00, 0x8b, 0x00, 0x89, 0x00, 0x89, 0x00, 0x89, 0x00, + 0x93, 0x00, 0x94, 0x00, 0x95, 0x00, 0x96, 0x00, 0x9c, 0x00, 0x9a, 0x00, + 0x9e, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa1, 0x00, 0xa7, 0x00, 0xaa, 0x00, + 0xab, 0x00, 0xaa, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xb4, 0x00, 0xb5, 0x00, + 0xb6, 0x00, 0xb6, 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbc, 0x00, 0xbc, 0x00, + 0xc1, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc6, 0x00, 0xc5, 0x00, + 0xca, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0xcd, 0x00, 0xcd, 0x00, + 0xcc, 0x00, 0xcc, 0x00, 0xd2, 0x00, 0xd1, 0x00, 0xce, 0x00, 0xd0, 0x00, + 0xd4, 0x00, 0xd1, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd2, 0x00, 0xd2, 0x00, + 0xd7, 0x00, 0xd6, 0x00, 0xd3, 0x00, 0xd3, 0x00, 0xd6, 0x00, 0xd5, 0x00, + 0xd5, 0x00, 0xd5, 0x00, 0xd4, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd5, 0x00, + 0xd2, 0x00, 0xd2, 0x00, 0xd2, 0x00, 0xd4, 0x00, 0xd0, 0x00, 0xce, 0x00, + 0xcd, 0x00, 0xce, 0x00, 0xcb, 0x00, 0xce, 0x00, 0xcb, 0x00, 0xc8, 0x00, + 0xc7, 0x00, 0xca, 0x00, 0xc6, 0x00, 0xc4, 0x00, 0xc0, 0x00, 0xc1, 0x00, + 0xbe, 0x00, 0xbe, 0x00, 0xba, 0x00, 0xb8, 0x00, 0xb7, 0x00, 0xb9, 0x00, + 0xb3, 0x00, 0xb1, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xa9, 0x00, 0xa7, 0x00, + 0xa4, 0x00, 0xa7, 0x00, 0xa0, 0x00, 0xa0, 0x00, 0x9c, 0x00, 0x9c, 0x00, + 0x96, 0x00, 0x96, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x8b, 0x00, 0x8c, 0x00, + 0x85, 0x00, 0x83, 0x00, 0x80, 0x00, 0x81, 0x00, 0x78, 0x00, 0x79, 0x00, + 0x71, 0x00, 0x71, 0x00, 0x6c, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x63, 0x00, + 0x5f, 0x00, 0x61, 0x00, 0x5a, 0x00, 0x59, 0x00, 0x50, 0x00, 0x52, 0x00, + 0x4c, 0x00, 0x4c, 0x00, 0x46, 0x00, 0x45, 0x00, 0x3f, 0x00, 0x40, 0x00, + 0x37, 0x00, 0x37, 0x00, 0x31, 0x00, 0x31, 0x00, 0x28, 0x00, 0x2b, 0x00, + 0x25, 0x00, 0x22, 0x00, 0x1a, 0x00, 0x1d, 0x00, 0x16, 0x00, 0x14, 0x00, + 0x10, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x09, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xfc, 0xff, 0xfb, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xe7, 0xff, 0xe5, 0xff, 0xdf, 0xff, 0xe1, 0xff, 0xdb, 0xff, 0xd9, 0xff, + 0xd3, 0xff, 0xd5, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xc5, 0xff, 0xc6, 0xff, + 0xbe, 0xff, 0xbe, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb2, 0xff, 0xb1, 0xff, + 0xab, 0xff, 0xac, 0xff, 0xa4, 0xff, 0xa3, 0xff, 0x9e, 0xff, 0x9f, 0xff, + 0x97, 0xff, 0x96, 0xff, 0x91, 0xff, 0x90, 0xff, 0x8b, 0xff, 0x8c, 0xff, + 0x84, 0xff, 0x86, 0xff, 0x81, 0xff, 0x80, 0xff, 0x78, 0xff, 0x78, 0xff, + 0x76, 0xff, 0x76, 0xff, 0x6c, 0xff, 0x6e, 0xff, 0x6a, 0xff, 0x6a, 0xff, + 0x64, 0xff, 0x65, 0xff, 0x60, 0xff, 0x60, 0xff, 0x58, 0xff, 0x59, 0xff, + 0x55, 0xff, 0x54, 0xff, 0x53, 0xff, 0x53, 0xff, 0x4b, 0xff, 0x4c, 0xff, + 0x4a, 0xff, 0x4a, 0xff, 0x45, 0xff, 0x46, 0xff, 0x43, 0xff, 0x43, 0xff, + 0x3f, 0xff, 0x3f, 0xff, 0x3b, 0xff, 0x3d, 0xff, 0x3b, 0xff, 0x3c, 0xff, + 0x37, 0xff, 0x37, 0xff, 0x35, 0xff, 0x36, 0xff, 0x35, 0xff, 0x36, 0xff, + 0x32, 0xff, 0x30, 0xff, 0x31, 0xff, 0x32, 0xff, 0x2f, 0xff, 0x2e, 0xff, + 0x30, 0xff, 0x31, 0xff, 0x2f, 0xff, 0x30, 0xff, 0x2e, 0xff, 0x2e, 0xff, + 0x2f, 0xff, 0x30, 0xff, 0x30, 0xff, 0x2f, 0xff, 0x2f, 0xff, 0x30, 0xff, + 0x2f, 0xff, 0x30, 0xff, 0x31, 0xff, 0x33, 0xff, 0x31, 0xff, 0x32, 0xff, + 0x34, 0xff, 0x35, 0xff, 0x34, 0xff, 0x35, 0xff, 0x36, 0xff, 0x38, 0xff, + 0x38, 0xff, 0x39, 0xff, 0x3b, 0xff, 0x3c, 0xff, 0x3d, 0xff, 0x3e, 0xff, + 0x3f, 0xff, 0x3f, 0xff, 0x43, 0xff, 0x43, 0xff, 0x44, 0xff, 0x46, 0xff, + 0x49, 0xff, 0x49, 0xff, 0x4b, 0xff, 0x4c, 0xff, 0x4f, 0xff, 0x4d, 0xff, + 0x52, 0xff, 0x53, 0xff, 0x55, 0xff, 0x55, 0xff, 0x5a, 0xff, 0x5a, 0xff, + 0x5e, 0xff, 0x5e, 0xff, 0x61, 0xff, 0x62, 0xff, 0x67, 0xff, 0x65, 0xff, + 0x69, 0xff, 0x6a, 0xff, 0x71, 0xff, 0x71, 0xff, 0x74, 0xff, 0x71, 0xff, + 0x79, 0xff, 0x7d, 0xff, 0x7f, 0xff, 0x7d, 0xff, 0x82, 0xff, 0x85, 0xff, + 0x8a, 0xff, 0x8a, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x95, 0xff, 0x95, 0xff, + 0x9b, 0xff, 0x9c, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0xa7, 0xff, 0xa8, 0xff, + 0xad, 0xff, 0xae, 0xff, 0xb6, 0xff, 0xb7, 0xff, 0xbb, 0xff, 0xbc, 0xff, + 0xc3, 0xff, 0xc4, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xd1, 0xff, 0xd1, 0xff, + 0xd9, 0xff, 0xd9, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe5, 0xff, 0xe7, 0xff, + 0xf1, 0xff, 0xef, 0xff, 0xf4, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0x03, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x11, 0x00, + 0x19, 0x00, 0x1b, 0x00, 0x20, 0x00, 0x22, 0x00, 0x29, 0x00, 0x26, 0x00, + 0x2d, 0x00, 0x31, 0x00, 0x36, 0x00, 0x34, 0x00, 0x3b, 0x00, 0x3c, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x49, 0x00, 0x48, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x56, 0x00, 0x56, 0x00, 0x5f, 0x00, 0x5d, 0x00, 0x62, 0x00, 0x63, 0x00, + 0x69, 0x00, 0x68, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x73, 0x00, + 0x7b, 0x00, 0x79, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x83, 0x00, 0x82, 0x00, + 0x8b, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x95, 0x00, 0x96, 0x00, + 0x95, 0x00, 0x94, 0x00, 0x9b, 0x00, 0x9d, 0x00, 0xa0, 0x00, 0x9d, 0x00, + 0xa3, 0x00, 0xa4, 0x00, 0xa7, 0x00, 0xa9, 0x00, 0xab, 0x00, 0xa8, 0x00, + 0xae, 0x00, 0xb0, 0x00, 0xb3, 0x00, 0xb2, 0x00, 0xb6, 0x00, 0xb5, 0x00, + 0xb8, 0x00, 0xb9, 0x00, 0xbd, 0x00, 0xbc, 0x00, 0xbe, 0x00, 0xbd, 0x00, + 0xc2, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xc2, 0x00, 0xc5, 0x00, 0xc6, 0x00, + 0xc9, 0x00, 0xca, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcd, 0x00, 0xcc, 0x00, + 0xcc, 0x00, 0xcc, 0x00, 0xce, 0x00, 0xce, 0x00, 0xd0, 0x00, 0xcf, 0x00, + 0xcf, 0x00, 0xd2, 0x00, 0xd2, 0x00, 0xd1, 0x00, 0xce, 0x00, 0xd0, 0x00, + 0xd1, 0x00, 0xd0, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xcf, 0x00, 0xd0, 0x00, + 0xd1, 0x00, 0xce, 0x00, 0xcc, 0x00, 0xce, 0x00, 0xcd, 0x00, 0xca, 0x00, + 0xc9, 0x00, 0xca, 0x00, 0xc8, 0x00, 0xc8, 0x00, 0xc7, 0x00, 0xc6, 0x00, + 0xc3, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc1, 0x00, 0xbb, 0x00, 0xbc, 0x00, + 0xbd, 0x00, 0xbb, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb4, 0x00, 0xb4, 0x00, + 0xaf, 0x00, 0xaf, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xa8, 0x00, + 0xa0, 0x00, 0xa0, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x99, 0x00, 0x98, 0x00, + 0x91, 0x00, 0x93, 0x00, 0x90, 0x00, 0x8f, 0x00, 0x87, 0x00, 0x87, 0x00, + 0x85, 0x00, 0x85, 0x00, 0x7d, 0x00, 0x7c, 0x00, 0x78, 0x00, 0x79, 0x00, + 0x73, 0x00, 0x73, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x67, 0x00, 0x68, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x5d, 0x00, 0x5b, 0x00, 0x54, 0x00, 0x53, 0x00, + 0x4e, 0x00, 0x4e, 0x00, 0x49, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, + 0x3d, 0x00, 0x3b, 0x00, 0x32, 0x00, 0x34, 0x00, 0x30, 0x00, 0x2c, 0x00, + 0x27, 0x00, 0x28, 0x00, 0x23, 0x00, 0x21, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x06, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xde, 0xff, 0xdd, 0xff, + 0xd9, 0xff, 0xd8, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xcc, 0xff, 0xc9, 0xff, + 0xc6, 0xff, 0xc6, 0xff, 0xbd, 0xff, 0xbc, 0xff, 0xb9, 0xff, 0xb8, 0xff, + 0xb2, 0xff, 0xb0, 0xff, 0xab, 0xff, 0xaa, 0xff, 0xa3, 0xff, 0xa2, 0xff, + 0x9b, 0xff, 0x9b, 0xff, 0x99, 0xff, 0x97, 0xff, 0x90, 0xff, 0x91, 0xff, + 0x8c, 0xff, 0x8b, 0xff, 0x85, 0xff, 0x84, 0xff, 0x7f, 0xff, 0x7f, 0xff, + 0x7b, 0xff, 0x7a, 0xff, 0x75, 0xff, 0x75, 0xff, 0x6d, 0xff, 0x6e, 0xff, + 0x6c, 0xff, 0x6b, 0xff, 0x64, 0xff, 0x65, 0xff, 0x60, 0xff, 0x60, 0xff, + 0x5b, 0xff, 0x5c, 0xff, 0x57, 0xff, 0x56, 0xff, 0x53, 0xff, 0x55, 0xff, + 0x50, 0xff, 0x4e, 0xff, 0x4b, 0xff, 0x4d, 0xff, 0x4b, 0xff, 0x4b, 0xff, + 0x45, 0xff, 0x45, 0xff, 0x44, 0xff, 0x44, 0xff, 0x40, 0xff, 0x41, 0xff, + 0x40, 0xff, 0x40, 0xff, 0x3c, 0xff, 0x3d, 0xff, 0x3b, 0xff, 0x3b, 0xff, + 0x38, 0xff, 0x3a, 0xff, 0x36, 0xff, 0x37, 0xff, 0x3a, 0xff, 0x39, 0xff, + 0x35, 0xff, 0x36, 0xff, 0x38, 0xff, 0x36, 0xff, 0x35, 0xff, 0x37, 0xff, + 0x36, 0xff, 0x36, 0xff, 0x37, 0xff, 0x36, 0xff, 0x34, 0xff, 0x35, 0xff, + 0x36, 0xff, 0x35, 0xff, 0x35, 0xff, 0x37, 0xff, 0x38, 0xff, 0x37, 0xff, + 0x39, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x39, 0xff, 0x3c, 0xff, 0x3d, 0xff, + 0x3c, 0xff, 0x3c, 0xff, 0x3e, 0xff, 0x3e, 0xff, 0x41, 0xff, 0x40, 0xff, + 0x42, 0xff, 0x42, 0xff, 0x46, 0xff, 0x47, 0xff, 0x46, 0xff, 0x46, 0xff, + 0x4a, 0xff, 0x4b, 0xff, 0x4d, 0xff, 0x4c, 0xff, 0x4f, 0xff, 0x51, 0xff, + 0x53, 0xff, 0x52, 0xff, 0x56, 0xff, 0x57, 0xff, 0x5b, 0xff, 0x5b, 0xff, + 0x5f, 0xff, 0x5e, 0xff, 0x61, 0xff, 0x64, 0xff, 0x65, 0xff, 0x63, 0xff, + 0x6a, 0xff, 0x6c, 0xff, 0x6e, 0xff, 0x6d, 0xff, 0x73, 0xff, 0x74, 0xff, + 0x79, 0xff, 0x79, 0xff, 0x7e, 0xff, 0x7d, 0xff, 0x83, 0xff, 0x85, 0xff, + 0x87, 0xff, 0x86, 0xff, 0x8f, 0xff, 0x90, 0xff, 0x93, 0xff, 0x93, 0xff, + 0x9c, 0xff, 0x99, 0xff, 0xa1, 0xff, 0xa3, 0xff, 0xa6, 0xff, 0xa4, 0xff, + 0xad, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0xbb, 0xff, 0xbb, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xd1, 0xff, 0xd0, 0xff, + 0xd6, 0xff, 0xd7, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xe4, 0xff, 0xe3, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0x02, 0x00, 0x01, 0x00, 0x06, 0x00, 0x06, 0x00, 0x11, 0x00, 0x10, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x24, 0x00, 0x23, 0x00, + 0x28, 0x00, 0x29, 0x00, 0x32, 0x00, 0x31, 0x00, 0x37, 0x00, 0x36, 0x00, + 0x3c, 0x00, 0x3d, 0x00, 0x43, 0x00, 0x43, 0x00, 0x4a, 0x00, 0x49, 0x00, + 0x4e, 0x00, 0x50, 0x00, 0x56, 0x00, 0x54, 0x00, 0x5a, 0x00, 0x5d, 0x00, + 0x62, 0x00, 0x5e, 0x00, 0x65, 0x00, 0x68, 0x00, 0x6c, 0x00, 0x6b, 0x00, + 0x70, 0x00, 0x71, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x7c, 0x00, 0x7a, 0x00, + 0x82, 0x00, 0x85, 0x00, 0x85, 0x00, 0x84, 0x00, 0x8a, 0x00, 0x8a, 0x00, + 0x91, 0x00, 0x91, 0x00, 0x93, 0x00, 0x93, 0x00, 0x9a, 0x00, 0x9b, 0x00, + 0x9a, 0x00, 0x99, 0x00, 0xa3, 0x00, 0xa2, 0x00, 0xa2, 0x00, 0xa3, 0x00, + 0xa9, 0x00, 0xa9, 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, 0xad, 0x00, + 0xb4, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0xba, 0x00, 0xb8, 0x00, + 0xbb, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xbc, 0x00, 0xc3, 0x00, 0xc3, 0x00, + 0xc1, 0x00, 0xc1, 0x00, 0xc7, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xc6, 0x00, + 0xc8, 0x00, 0xc6, 0x00, 0xca, 0x00, 0xcc, 0x00, 0xc9, 0x00, 0xc7, 0x00, + 0xcd, 0x00, 0xce, 0x00, 0xca, 0x00, 0xc8, 0x00, 0xce, 0x00, 0xcd, 0x00, + 0xcb, 0x00, 0xcd, 0x00, 0xcb, 0x00, 0xca, 0x00, 0xca, 0x00, 0xcc, 0x00, + 0xcb, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xc9, 0x00, 0xc7, 0x00, + 0xc6, 0x00, 0xc8, 0x00, 0xc6, 0x00, 0xc5, 0x00, 0xc2, 0x00, 0xc0, 0x00, + 0xbe, 0x00, 0xbf, 0x00, 0xbd, 0x00, 0xbd, 0x00, 0xb9, 0x00, 0xb9, 0x00, + 0xb7, 0x00, 0xb6, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb0, 0x00, 0xb0, 0x00, + 0xac, 0x00, 0xac, 0x00, 0xa9, 0x00, 0xa7, 0x00, 0xa2, 0x00, 0xa3, 0x00, + 0xa2, 0x00, 0xa0, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x98, 0x00, + 0x92, 0x00, 0x91, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x89, 0x00, 0x88, 0x00, + 0x83, 0x00, 0x82, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x77, 0x00, 0x77, 0x00, + 0x74, 0x00, 0x74, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x66, 0x00, 0x66, 0x00, + 0x64, 0x00, 0x64, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x57, 0x00, 0x55, 0x00, + 0x50, 0x00, 0x52, 0x00, 0x4b, 0x00, 0x49, 0x00, 0x44, 0x00, 0x45, 0x00, + 0x40, 0x00, 0x3e, 0x00, 0x37, 0x00, 0x36, 0x00, 0x32, 0x00, 0x34, 0x00, + 0x2d, 0x00, 0x2b, 0x00, 0x25, 0x00, 0x27, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x1a, 0x00, 0x18, 0x00, 0x13, 0x00, 0x15, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xf8, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xe5, 0xff, 0xe4, 0xff, + 0xdd, 0xff, 0xdd, 0xff, 0xd9, 0xff, 0xd7, 0xff, 0xd0, 0xff, 0xd2, 0xff, + 0xca, 0xff, 0xca, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xbd, 0xff, 0xbc, 0xff, + 0xb4, 0xff, 0xb5, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xa8, 0xff, 0xaa, 0xff, + 0xa4, 0xff, 0xa4, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0x96, 0xff, 0x98, 0xff, + 0x92, 0xff, 0x90, 0xff, 0x8a, 0xff, 0x8b, 0xff, 0x85, 0xff, 0x87, 0xff, + 0x7f, 0xff, 0x7f, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x73, 0xff, 0x76, 0xff, + 0x72, 0xff, 0x71, 0xff, 0x6a, 0xff, 0x6c, 0xff, 0x67, 0xff, 0x66, 0xff, + 0x61, 0xff, 0x64, 0xff, 0x5f, 0xff, 0x5e, 0xff, 0x5a, 0xff, 0x5c, 0xff, + 0x58, 0xff, 0x58, 0xff, 0x53, 0xff, 0x53, 0xff, 0x53, 0xff, 0x53, 0xff, + 0x4d, 0xff, 0x4e, 0xff, 0x4d, 0xff, 0x4b, 0xff, 0x48, 0xff, 0x4b, 0xff, + 0x47, 0xff, 0x47, 0xff, 0x46, 0xff, 0x45, 0xff, 0x42, 0xff, 0x41, 0xff, + 0x42, 0xff, 0x41, 0xff, 0x40, 0xff, 0x3e, 0xff, 0x3f, 0xff, 0x40, 0xff, + 0x3d, 0xff, 0x3c, 0xff, 0x3b, 0xff, 0x3c, 0xff, 0x3e, 0xff, 0x3c, 0xff, + 0x39, 0xff, 0x3a, 0xff, 0x3e, 0xff, 0x3d, 0xff, 0x38, 0xff, 0x39, 0xff, + 0x3d, 0xff, 0x3f, 0xff, 0x3b, 0xff, 0x3b, 0xff, 0x3d, 0xff, 0x3d, 0xff, + 0x3e, 0xff, 0x3e, 0xff, 0x3f, 0xff, 0x3e, 0xff, 0x3f, 0xff, 0x40, 0xff, + 0x41, 0xff, 0x42, 0xff, 0x42, 0xff, 0x3f, 0xff, 0x44, 0xff, 0x47, 0xff, + 0x46, 0xff, 0x46, 0xff, 0x46, 0xff, 0x46, 0xff, 0x4c, 0xff, 0x4b, 0xff, + 0x4a, 0xff, 0x4b, 0xff, 0x50, 0xff, 0x50, 0xff, 0x52, 0xff, 0x51, 0xff, + 0x55, 0xff, 0x55, 0xff, 0x58, 0xff, 0x58, 0xff, 0x5b, 0xff, 0x5a, 0xff, + 0x60, 0xff, 0x60, 0xff, 0x64, 0xff, 0x63, 0xff, 0x67, 0xff, 0x66, 0xff, + 0x6b, 0xff, 0x6a, 0xff, 0x71, 0xff, 0x6f, 0xff, 0x75, 0xff, 0x75, 0xff, + 0x79, 0xff, 0x79, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x84, 0xff, 0x84, 0xff, + 0x88, 0xff, 0x87, 0xff, 0x8f, 0xff, 0x8d, 0xff, 0x93, 0xff, 0x93, 0xff, + 0x9a, 0xff, 0x99, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa7, 0xff, 0xa6, 0xff, + 0xac, 0xff, 0xac, 0xff, 0xb3, 0xff, 0xb2, 0xff, 0xb8, 0xff, 0xb9, 0xff, + 0xc0, 0xff, 0xbd, 0xff, 0xc6, 0xff, 0xc7, 0xff, 0xcc, 0xff, 0xcc, 0xff, + 0xd5, 0xff, 0xd3, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xe3, 0xff, 0xe1, 0xff, + 0xe9, 0xff, 0xe9, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0x05, 0x00, 0x03, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x11, 0x00, 0x13, 0x00, 0x18, 0x00, 0x15, 0x00, 0x1c, 0x00, 0x1f, 0x00, + 0x25, 0x00, 0x22, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2f, 0x00, 0x2f, 0x00, + 0x36, 0x00, 0x37, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x41, 0x00, 0x42, 0x00, + 0x48, 0x00, 0x48, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x55, 0x00, + 0x5a, 0x00, 0x58, 0x00, 0x5e, 0x00, 0x60, 0x00, 0x66, 0x00, 0x65, 0x00, + 0x69, 0x00, 0x69, 0x00, 0x71, 0x00, 0x71, 0x00, 0x73, 0x00, 0x73, 0x00, + 0x7a, 0x00, 0x7a, 0x00, 0x7f, 0x00, 0x7d, 0x00, 0x81, 0x00, 0x83, 0x00, + 0x88, 0x00, 0x87, 0x00, 0x8b, 0x00, 0x8d, 0x00, 0x91, 0x00, 0x90, 0x00, + 0x94, 0x00, 0x95, 0x00, 0x9b, 0x00, 0x9a, 0x00, 0x9d, 0x00, 0x9d, 0x00, + 0xa3, 0x00, 0xa2, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0xa9, 0x00, 0xa7, 0x00, + 0xad, 0x00, 0xac, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0xb5, 0x00, 0xb4, 0x00, + 0xb4, 0x00, 0xb4, 0x00, 0xb9, 0x00, 0xb8, 0x00, 0xbb, 0x00, 0xbb, 0x00, + 0xbd, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xc1, 0x00, 0xc1, 0x00, + 0xc2, 0x00, 0xc2, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0xc4, 0x00, 0xc5, 0x00, + 0xc5, 0x00, 0xc4, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xc6, 0x00, + 0xc7, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc5, 0x00, 0xc3, 0x00, + 0xc5, 0x00, 0xc6, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xc3, 0x00, + 0xc1, 0x00, 0xc0, 0x00, 0xbe, 0x00, 0xbe, 0x00, 0xbd, 0x00, 0xbc, 0x00, + 0xb9, 0x00, 0xb9, 0x00, 0xb8, 0x00, 0xb8, 0x00, 0xb5, 0x00, 0xb5, 0x00, + 0xb2, 0x00, 0xb1, 0x00, 0xb1, 0x00, 0xb0, 0x00, 0xac, 0x00, 0xab, 0x00, + 0xa9, 0x00, 0xa8, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa2, 0x00, 0xa1, 0x00, + 0x9d, 0x00, 0x9c, 0x00, 0x99, 0x00, 0x98, 0x00, 0x94, 0x00, 0x94, 0x00, + 0x8f, 0x00, 0x8f, 0x00, 0x8c, 0x00, 0x8b, 0x00, 0x87, 0x00, 0x87, 0x00, + 0x82, 0x00, 0x83, 0x00, 0x7d, 0x00, 0x7f, 0x00, 0x79, 0x00, 0x77, 0x00, + 0x74, 0x00, 0x75, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x67, 0x00, 0x68, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x58, 0x00, 0x59, 0x00, + 0x52, 0x00, 0x51, 0x00, 0x4d, 0x00, 0x4f, 0x00, 0x47, 0x00, 0x46, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x37, 0x00, 0x35, 0x00, + 0x2f, 0x00, 0x30, 0x00, 0x28, 0x00, 0x28, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x1e, 0x00, 0x1d, 0x00, 0x15, 0x00, 0x15, 0x00, 0x12, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x02, 0x00, 0xfb, 0xff, 0xfc, 0xff, + 0xf5, 0xff, 0xf4, 0xff, 0xef, 0xff, 0xee, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xd5, 0xff, 0xd2, 0xff, + 0xce, 0xff, 0xd1, 0xff, 0xc9, 0xff, 0xc6, 0xff, 0xc2, 0xff, 0xc1, 0xff, + 0xbc, 0xff, 0xbc, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xae, 0xff, 0xae, 0xff, + 0xa9, 0xff, 0xa8, 0xff, 0xa3, 0xff, 0xa1, 0xff, 0x9d, 0xff, 0x9c, 0xff, + 0x96, 0xff, 0x95, 0xff, 0x91, 0xff, 0x90, 0xff, 0x8c, 0xff, 0x8b, 0xff, + 0x85, 0xff, 0x85, 0xff, 0x82, 0xff, 0x80, 0xff, 0x7a, 0xff, 0x7c, 0xff, + 0x7a, 0xff, 0x77, 0xff, 0x72, 0xff, 0x72, 0xff, 0x6e, 0xff, 0x6e, 0xff, + 0x6a, 0xff, 0x6b, 0xff, 0x65, 0xff, 0x65, 0xff, 0x65, 0xff, 0x65, 0xff, + 0x5d, 0xff, 0x5e, 0xff, 0x5c, 0xff, 0x5c, 0xff, 0x5a, 0xff, 0x59, 0xff, + 0x56, 0xff, 0x55, 0xff, 0x53, 0xff, 0x53, 0xff, 0x51, 0xff, 0x50, 0xff, + 0x4e, 0xff, 0x4e, 0xff, 0x4c, 0xff, 0x4b, 0xff, 0x49, 0xff, 0x4b, 0xff, + 0x49, 0xff, 0x48, 0xff, 0x45, 0xff, 0x47, 0xff, 0x46, 0xff, 0x44, 0xff, + 0x43, 0xff, 0x44, 0xff, 0x43, 0xff, 0x41, 0xff, 0x43, 0xff, 0x44, 0xff, + 0x42, 0xff, 0x40, 0xff, 0x42, 0xff, 0x42, 0xff, 0x40, 0xff, 0x40, 0xff, + 0x41, 0xff, 0x40, 0xff, 0x41, 0xff, 0x42, 0xff, 0x40, 0xff, 0x40, 0xff, + 0x43, 0xff, 0x44, 0xff, 0x42, 0xff, 0x41, 0xff, 0x44, 0xff, 0x43, 0xff, + 0x45, 0xff, 0x43, 0xff, 0x46, 0xff, 0x46, 0xff, 0x46, 0xff, 0x46, 0xff, + 0x48, 0xff, 0x48, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x4c, 0xff, 0x49, 0xff, + 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x4e, 0xff, 0x54, 0xff, 0x54, 0xff, + 0x56, 0xff, 0x56, 0xff, 0x58, 0xff, 0x57, 0xff, 0x5e, 0xff, 0x60, 0xff, + 0x5f, 0xff, 0x5c, 0xff, 0x65, 0xff, 0x66, 0xff, 0x67, 0xff, 0x66, 0xff, + 0x6a, 0xff, 0x6c, 0xff, 0x72, 0xff, 0x6f, 0xff, 0x74, 0xff, 0x76, 0xff, + 0x7b, 0xff, 0x77, 0xff, 0x7c, 0xff, 0x7e, 0xff, 0x84, 0xff, 0x82, 0xff, + 0x88, 0xff, 0x88, 0xff, 0x8d, 0xff, 0x8e, 0xff, 0x94, 0xff, 0x95, 0xff, + 0x98, 0xff, 0x98, 0xff, 0x9f, 0xff, 0xa0, 0xff, 0xa3, 0xff, 0xa5, 0xff, + 0xac, 0xff, 0xab, 0xff, 0xb2, 0xff, 0xb5, 0xff, 0xb7, 0xff, 0xb5, 0xff, + 0xbf, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xcb, 0xff, 0xcc, 0xff, + 0xd1, 0xff, 0xd1, 0xff, 0xd5, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xdf, 0xff, + 0xe2, 0xff, 0xe5, 0xff, 0xec, 0xff, 0xec, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf7, 0xff, 0xf9, 0xff, 0xff, 0xff, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x0b, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x0f, 0x00, 0x17, 0x00, 0x19, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x24, 0x00, 0x23, 0x00, 0x29, 0x00, 0x2b, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x36, 0x00, 0x37, 0x00, 0x3b, 0x00, 0x3d, 0x00, + 0x42, 0x00, 0x42, 0x00, 0x47, 0x00, 0x47, 0x00, 0x4c, 0x00, 0x4e, 0x00, + 0x54, 0x00, 0x52, 0x00, 0x56, 0x00, 0x59, 0x00, 0x5f, 0x00, 0x5d, 0x00, + 0x63, 0x00, 0x62, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x6f, 0x00, 0x6d, 0x00, + 0x72, 0x00, 0x72, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x7d, 0x00, 0x7c, 0x00, + 0x82, 0x00, 0x81, 0x00, 0x86, 0x00, 0x84, 0x00, 0x89, 0x00, 0x8a, 0x00, + 0x90, 0x00, 0x90, 0x00, 0x93, 0x00, 0x92, 0x00, 0x96, 0x00, 0x95, 0x00, + 0x9e, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0xa5, 0x00, 0xa3, 0x00, + 0xa4, 0x00, 0xa7, 0x00, 0xab, 0x00, 0xa9, 0x00, 0xac, 0x00, 0xae, 0x00, + 0xaf, 0x00, 0xae, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb5, 0x00, + 0xb8, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0xbc, 0x00, 0xbc, 0x00, + 0xbe, 0x00, 0xbe, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xc0, 0x00, + 0xc1, 0x00, 0xc2, 0x00, 0xbf, 0x00, 0xbe, 0x00, 0xc3, 0x00, 0xc4, 0x00, + 0xc1, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc3, 0x00, 0xc1, 0x00, 0xbf, 0x00, + 0xbf, 0x00, 0xc1, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xbd, 0x00, 0xbc, 0x00, + 0xbc, 0x00, 0xbe, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0xb8, 0x00, 0xb8, 0x00, + 0xb5, 0x00, 0xb6, 0x00, 0xb5, 0x00, 0xb4, 0x00, 0xaf, 0x00, 0xb1, 0x00, + 0xb0, 0x00, 0xb1, 0x00, 0xab, 0x00, 0xab, 0x00, 0xab, 0x00, 0xaa, 0x00, + 0xa4, 0x00, 0xa4, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa0, 0x00, 0x9f, 0x00, + 0x9a, 0x00, 0x9c, 0x00, 0x97, 0x00, 0x96, 0x00, 0x92, 0x00, 0x93, 0x00, + 0x90, 0x00, 0x90, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x88, 0x00, 0x87, 0x00, + 0x82, 0x00, 0x82, 0x00, 0x7e, 0x00, 0x7d, 0x00, 0x7a, 0x00, 0x79, 0x00, + 0x74, 0x00, 0x74, 0x00, 0x71, 0x00, 0x72, 0x00, 0x6c, 0x00, 0x6c, 0x00, + 0x67, 0x00, 0x65, 0x00, 0x61, 0x00, 0x61, 0x00, 0x5c, 0x00, 0x5a, 0x00, + 0x57, 0x00, 0x56, 0x00, 0x51, 0x00, 0x51, 0x00, 0x49, 0x00, 0x49, 0x00, + 0x46, 0x00, 0x46, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x34, 0x00, 0x33, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x28, 0x00, 0x27, 0x00, + 0x1f, 0x00, 0x20, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x16, 0x00, 0x14, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x07, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfa, 0xff, 0xfa, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xed, 0xff, 0xec, 0xff, + 0xe5, 0xff, 0xe6, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xda, 0xff, 0xdb, 0xff, + 0xd2, 0xff, 0xd1, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xc6, 0xff, 0xc6, 0xff, + 0xc0, 0xff, 0xbf, 0xff, 0xba, 0xff, 0xba, 0xff, 0xb3, 0xff, 0xb0, 0xff, + 0xae, 0xff, 0xaf, 0xff, 0xa8, 0xff, 0xa7, 0xff, 0xa2, 0xff, 0xa3, 0xff, + 0x9d, 0xff, 0x9d, 0xff, 0x97, 0xff, 0x97, 0xff, 0x91, 0xff, 0x91, 0xff, + 0x8e, 0xff, 0x8c, 0xff, 0x86, 0xff, 0x86, 0xff, 0x82, 0xff, 0x83, 0xff, + 0x7f, 0xff, 0x7f, 0xff, 0x79, 0xff, 0x7a, 0xff, 0x77, 0xff, 0x75, 0xff, + 0x71, 0xff, 0x73, 0xff, 0x6f, 0xff, 0x6d, 0xff, 0x6a, 0xff, 0x6c, 0xff, + 0x68, 0xff, 0x66, 0xff, 0x64, 0xff, 0x66, 0xff, 0x5f, 0xff, 0x5d, 0xff, + 0x5f, 0xff, 0x5f, 0xff, 0x5a, 0xff, 0x59, 0xff, 0x5a, 0xff, 0x58, 0xff, + 0x56, 0xff, 0x55, 0xff, 0x53, 0xff, 0x51, 0xff, 0x52, 0xff, 0x51, 0xff, + 0x4d, 0xff, 0x4e, 0xff, 0x51, 0xff, 0x4d, 0xff, 0x4a, 0xff, 0x4b, 0xff, + 0x4b, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x4a, 0xff, 0x46, 0xff, 0x47, 0xff, + 0x49, 0xff, 0x47, 0xff, 0x45, 0xff, 0x46, 0xff, 0x46, 0xff, 0x43, 0xff, + 0x45, 0xff, 0x47, 0xff, 0x45, 0xff, 0x43, 0xff, 0x45, 0xff, 0x46, 0xff, + 0x45, 0xff, 0x45, 0xff, 0x47, 0xff, 0x46, 0xff, 0x46, 0xff, 0x47, 0xff, + 0x46, 0xff, 0x46, 0xff, 0x4a, 0xff, 0x49, 0xff, 0x4a, 0xff, 0x4a, 0xff, + 0x4b, 0xff, 0x4b, 0xff, 0x4d, 0xff, 0x4d, 0xff, 0x4e, 0xff, 0x4f, 0xff, + 0x51, 0xff, 0x50, 0xff, 0x51, 0xff, 0x52, 0xff, 0x56, 0xff, 0x57, 0xff, + 0x56, 0xff, 0x56, 0xff, 0x5b, 0xff, 0x5d, 0xff, 0x5e, 0xff, 0x5d, 0xff, + 0x62, 0xff, 0x63, 0xff, 0x67, 0xff, 0x66, 0xff, 0x68, 0xff, 0x68, 0xff, + 0x6e, 0xff, 0x6f, 0xff, 0x70, 0xff, 0x70, 0xff, 0x77, 0xff, 0x76, 0xff, + 0x79, 0xff, 0x7c, 0xff, 0x81, 0xff, 0x7f, 0xff, 0x83, 0xff, 0x86, 0xff, + 0x8b, 0xff, 0x8a, 0xff, 0x8e, 0xff, 0x90, 0xff, 0x96, 0xff, 0x94, 0xff, + 0x98, 0xff, 0x9b, 0xff, 0x9f, 0xff, 0x9e, 0xff, 0xa5, 0xff, 0xa7, 0xff, + 0xac, 0xff, 0xac, 0xff, 0xb0, 0xff, 0xae, 0xff, 0xb7, 0xff, 0xb9, 0xff, + 0xbd, 0xff, 0xbc, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc9, 0xff, 0xc9, 0xff, + 0xd1, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xed, 0xff, 0xef, 0xff, + 0xf5, 0xff, 0xf3, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x13, 0x00, 0x11, 0x00, + 0x17, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x24, 0x00, 0x23, 0x00, + 0x28, 0x00, 0x2a, 0x00, 0x30, 0x00, 0x31, 0x00, 0x35, 0x00, 0x33, 0x00, + 0x3c, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x46, 0x00, 0x48, 0x00, + 0x4d, 0x00, 0x4c, 0x00, 0x51, 0x00, 0x52, 0x00, 0x59, 0x00, 0x59, 0x00, + 0x5a, 0x00, 0x5b, 0x00, 0x63, 0x00, 0x62, 0x00, 0x64, 0x00, 0x67, 0x00, + 0x6c, 0x00, 0x6a, 0x00, 0x70, 0x00, 0x72, 0x00, 0x75, 0x00, 0x75, 0x00, + 0x7e, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7f, 0x00, 0x86, 0x00, 0x84, 0x00, + 0x89, 0x00, 0x89, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x93, 0x00, 0x91, 0x00, + 0x95, 0x00, 0x95, 0x00, 0x9b, 0x00, 0x9b, 0x00, 0x9e, 0x00, 0x9d, 0x00, + 0xa1, 0x00, 0xa2, 0x00, 0xa5, 0x00, 0xa2, 0x00, 0xa7, 0x00, 0xa7, 0x00, + 0xaa, 0x00, 0xab, 0x00, 0xad, 0x00, 0xad, 0x00, 0xaf, 0x00, 0xb1, 0x00, + 0xb2, 0x00, 0xb2, 0x00, 0xb4, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0xb5, 0x00, + 0xb7, 0x00, 0xb6, 0x00, 0xba, 0x00, 0xb9, 0x00, 0xb8, 0x00, 0xb9, 0x00, + 0xb9, 0x00, 0xba, 0x00, 0xbb, 0x00, 0xbb, 0x00, 0xba, 0x00, 0xb9, 0x00, + 0xbc, 0x00, 0xbd, 0x00, 0xba, 0x00, 0xba, 0x00, 0xba, 0x00, 0xbb, 0x00, + 0xba, 0x00, 0xb8, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0xb7, 0x00, 0xb8, 0x00, + 0xb5, 0x00, 0xb6, 0x00, 0xb4, 0x00, 0xb6, 0x00, 0xb2, 0x00, 0xb2, 0x00, + 0xb2, 0x00, 0xb3, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xad, 0x00, 0xad, 0x00, + 0xab, 0x00, 0xae, 0x00, 0xa9, 0x00, 0xa7, 0x00, 0xa6, 0x00, 0xa9, 0x00, + 0xa3, 0x00, 0xa2, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0x9c, 0x00, 0x9e, 0x00, + 0x9a, 0x00, 0x99, 0x00, 0x97, 0x00, 0x97, 0x00, 0x92, 0x00, 0x91, 0x00, + 0x8e, 0x00, 0x90, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x89, 0x00, 0x87, 0x00, + 0x83, 0x00, 0x84, 0x00, 0x7e, 0x00, 0x80, 0x00, 0x7d, 0x00, 0x7c, 0x00, + 0x74, 0x00, 0x74, 0x00, 0x71, 0x00, 0x72, 0x00, 0x6c, 0x00, 0x6b, 0x00, + 0x65, 0x00, 0x68, 0x00, 0x63, 0x00, 0x62, 0x00, 0x5b, 0x00, 0x5d, 0x00, + 0x5a, 0x00, 0x59, 0x00, 0x51, 0x00, 0x52, 0x00, 0x4e, 0x00, 0x4d, 0x00, + 0x48, 0x00, 0x4a, 0x00, 0x41, 0x00, 0x42, 0x00, 0x3f, 0x00, 0x3e, 0x00, + 0x35, 0x00, 0x36, 0x00, 0x31, 0x00, 0x30, 0x00, 0x2a, 0x00, 0x2c, 0x00, + 0x23, 0x00, 0x21, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x03, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf1, 0xff, 0xf1, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xdf, 0xff, 0xde, 0xff, + 0xd6, 0xff, 0xd7, 0xff, 0xd3, 0xff, 0xd1, 0xff, 0xca, 0xff, 0xca, 0xff, + 0xc4, 0xff, 0xc5, 0xff, 0xbf, 0xff, 0xbe, 0xff, 0xb8, 0xff, 0xb9, 0xff, + 0xb4, 0xff, 0xb5, 0xff, 0xad, 0xff, 0xad, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0xa1, 0xff, 0xa2, 0xff, 0x9f, 0xff, 0x9e, 0xff, 0x96, 0xff, 0x98, 0xff, + 0x95, 0xff, 0x93, 0xff, 0x8d, 0xff, 0x8f, 0xff, 0x89, 0xff, 0x8a, 0xff, + 0x87, 0xff, 0x85, 0xff, 0x81, 0xff, 0x81, 0xff, 0x7c, 0xff, 0x7c, 0xff, + 0x78, 0xff, 0x77, 0xff, 0x75, 0xff, 0x76, 0xff, 0x71, 0xff, 0x71, 0xff, + 0x6f, 0xff, 0x6e, 0xff, 0x6b, 0xff, 0x6b, 0xff, 0x67, 0xff, 0x66, 0xff, + 0x63, 0xff, 0x65, 0xff, 0x61, 0xff, 0x60, 0xff, 0x5e, 0xff, 0x5e, 0xff, + 0x5b, 0xff, 0x59, 0xff, 0x5b, 0xff, 0x5a, 0xff, 0x55, 0xff, 0x56, 0xff, + 0x55, 0xff, 0x53, 0xff, 0x51, 0xff, 0x52, 0xff, 0x52, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x4f, 0xff, 0x4c, 0xff, 0x4b, 0xff, 0x4e, 0xff, 0x4d, 0xff, + 0x4a, 0xff, 0x4a, 0xff, 0x4e, 0xff, 0x4a, 0xff, 0x49, 0xff, 0x49, 0xff, + 0x4a, 0xff, 0x49, 0xff, 0x49, 0xff, 0x49, 0xff, 0x47, 0xff, 0x47, 0xff, + 0x4b, 0xff, 0x4b, 0xff, 0x45, 0xff, 0x46, 0xff, 0x4b, 0xff, 0x4c, 0xff, + 0x4a, 0xff, 0x48, 0xff, 0x4b, 0xff, 0x4b, 0xff, 0x4d, 0xff, 0x4d, 0xff, + 0x4c, 0xff, 0x4c, 0xff, 0x4f, 0xff, 0x50, 0xff, 0x51, 0xff, 0x4f, 0xff, + 0x52, 0xff, 0x53, 0xff, 0x55, 0xff, 0x55, 0xff, 0x55, 0xff, 0x54, 0xff, + 0x5b, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5b, 0xff, 0x60, 0xff, 0x61, 0xff, + 0x64, 0xff, 0x64, 0xff, 0x66, 0xff, 0x67, 0xff, 0x6d, 0xff, 0x6c, 0xff, + 0x6c, 0xff, 0x6d, 0xff, 0x76, 0xff, 0x75, 0xff, 0x74, 0xff, 0x75, 0xff, + 0x7d, 0xff, 0x7c, 0xff, 0x7f, 0xff, 0x80, 0xff, 0x86, 0xff, 0x85, 0xff, + 0x8a, 0xff, 0x8b, 0xff, 0x8f, 0xff, 0x8e, 0xff, 0x94, 0xff, 0x95, 0xff, + 0x99, 0xff, 0x9a, 0xff, 0xa0, 0xff, 0x9f, 0xff, 0xa5, 0xff, 0xa5, 0xff, + 0xaa, 0xff, 0xaa, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xb5, 0xff, 0xb6, 0xff, + 0xbc, 0xff, 0xbd, 0xff, 0xc0, 0xff, 0xbf, 0xff, 0xc6, 0xff, 0xc8, 0xff, + 0xcc, 0xff, 0xca, 0xff, 0xd1, 0xff, 0xd5, 0xff, 0xd9, 0xff, 0xd7, 0xff, + 0xdb, 0xff, 0xdd, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x13, 0x00, 0x12, 0x00, 0x19, 0x00, 0x1b, 0x00, 0x1e, 0x00, 0x1d, 0x00, + 0x25, 0x00, 0x24, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2f, 0x00, 0x2e, 0x00, + 0x34, 0x00, 0x34, 0x00, 0x3a, 0x00, 0x39, 0x00, 0x40, 0x00, 0x40, 0x00, + 0x44, 0x00, 0x45, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x51, 0x00, 0x52, 0x00, + 0x57, 0x00, 0x55, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x62, 0x00, 0x62, 0x00, + 0x66, 0x00, 0x66, 0x00, 0x6c, 0x00, 0x6b, 0x00, 0x71, 0x00, 0x71, 0x00, + 0x75, 0x00, 0x74, 0x00, 0x7c, 0x00, 0x79, 0x00, 0x7e, 0x00, 0x7f, 0x00, + 0x85, 0x00, 0x84, 0x00, 0x89, 0x00, 0x87, 0x00, 0x8e, 0x00, 0x8e, 0x00, + 0x92, 0x00, 0x91, 0x00, 0x94, 0x00, 0x93, 0x00, 0x98, 0x00, 0x98, 0x00, + 0x9c, 0x00, 0x99, 0x00, 0xa0, 0x00, 0x9f, 0x00, 0xa3, 0x00, 0xa2, 0x00, + 0xa4, 0x00, 0xa2, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xa7, 0x00, + 0xae, 0x00, 0xad, 0x00, 0xad, 0x00, 0xac, 0x00, 0xb1, 0x00, 0xb0, 0x00, + 0xb1, 0x00, 0xb0, 0x00, 0xb3, 0x00, 0xb3, 0x00, 0xb5, 0x00, 0xb4, 0x00, + 0xb3, 0x00, 0xb3, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0xb3, 0x00, + 0xb5, 0x00, 0xb5, 0x00, 0xb6, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb5, 0x00, + 0xb4, 0x00, 0xb4, 0x00, 0xb2, 0x00, 0xb4, 0x00, 0xb4, 0x00, 0xb2, 0x00, + 0xb0, 0x00, 0xb1, 0x00, 0xb0, 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb0, 0x00, + 0xae, 0x00, 0xae, 0x00, 0xab, 0x00, 0xab, 0x00, 0xab, 0x00, 0xaa, 0x00, + 0xa8, 0x00, 0xa9, 0x00, 0xa5, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0xa5, 0x00, + 0x9f, 0x00, 0xa0, 0x00, 0x9e, 0x00, 0xa0, 0x00, 0x9b, 0x00, 0x99, 0x00, + 0x97, 0x00, 0x98, 0x00, 0x98, 0x00, 0x96, 0x00, 0x90, 0x00, 0x92, 0x00, + 0x8f, 0x00, 0x8f, 0x00, 0x8a, 0x00, 0x8b, 0x00, 0x85, 0x00, 0x86, 0x00, + 0x84, 0x00, 0x85, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x7d, 0x00, 0x7e, 0x00, + 0x77, 0x00, 0x76, 0x00, 0x73, 0x00, 0x74, 0x00, 0x6e, 0x00, 0x6f, 0x00, + 0x68, 0x00, 0x69, 0x00, 0x65, 0x00, 0x66, 0x00, 0x5e, 0x00, 0x5e, 0x00, + 0x5c, 0x00, 0x5b, 0x00, 0x54, 0x00, 0x56, 0x00, 0x50, 0x00, 0x4f, 0x00, + 0x49, 0x00, 0x4b, 0x00, 0x44, 0x00, 0x43, 0x00, 0x3e, 0x00, 0x3f, 0x00, + 0x36, 0x00, 0x38, 0x00, 0x33, 0x00, 0x33, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x25, 0x00, 0x27, 0x00, 0x20, 0x00, 0x20, 0x00, 0x19, 0x00, 0x1b, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x08, 0x00, + 0xff, 0xff, 0x01, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xf1, 0xff, 0xf4, 0xff, + 0xef, 0xff, 0xee, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xdf, 0xff, 0xe2, 0xff, + 0xdd, 0xff, 0xdd, 0xff, 0xd4, 0xff, 0xd5, 0xff, 0xd0, 0xff, 0xd1, 0xff, + 0xc9, 0xff, 0xca, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xbe, 0xff, 0xbf, 0xff, + 0xb8, 0xff, 0xb9, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xad, 0xff, 0xae, 0xff, + 0xaa, 0xff, 0xa9, 0xff, 0xa3, 0xff, 0xa4, 0xff, 0x9f, 0xff, 0xa1, 0xff, + 0x9a, 0xff, 0x9a, 0xff, 0x95, 0xff, 0x97, 0xff, 0x93, 0xff, 0x91, 0xff, + 0x8b, 0xff, 0x8e, 0xff, 0x88, 0xff, 0x88, 0xff, 0x85, 0xff, 0x85, 0xff, + 0x80, 0xff, 0x80, 0xff, 0x7d, 0xff, 0x7c, 0xff, 0x79, 0xff, 0x79, 0xff, + 0x74, 0xff, 0x75, 0xff, 0x73, 0xff, 0x72, 0xff, 0x6e, 0xff, 0x6e, 0xff, + 0x6b, 0xff, 0x6c, 0xff, 0x68, 0xff, 0x67, 0xff, 0x65, 0xff, 0x65, 0xff, + 0x62, 0xff, 0x62, 0xff, 0x60, 0xff, 0x5f, 0xff, 0x5e, 0xff, 0x5d, 0xff, + 0x5c, 0xff, 0x5b, 0xff, 0x5a, 0xff, 0x59, 0xff, 0x56, 0xff, 0x56, 0xff, + 0x56, 0xff, 0x55, 0xff, 0x52, 0xff, 0x54, 0xff, 0x53, 0xff, 0x51, 0xff, + 0x51, 0xff, 0x51, 0xff, 0x4f, 0xff, 0x50, 0xff, 0x50, 0xff, 0x4e, 0xff, + 0x4f, 0xff, 0x4f, 0xff, 0x4d, 0xff, 0x4b, 0xff, 0x4f, 0xff, 0x50, 0xff, + 0x4d, 0xff, 0x4c, 0xff, 0x4e, 0xff, 0x4f, 0xff, 0x4e, 0xff, 0x4d, 0xff, + 0x4f, 0xff, 0x4e, 0xff, 0x50, 0xff, 0x50, 0xff, 0x50, 0xff, 0x4e, 0xff, + 0x52, 0xff, 0x52, 0xff, 0x53, 0xff, 0x51, 0xff, 0x54, 0xff, 0x55, 0xff, + 0x58, 0xff, 0x55, 0xff, 0x59, 0xff, 0x59, 0xff, 0x5c, 0xff, 0x5a, 0xff, + 0x60, 0xff, 0x5f, 0xff, 0x61, 0xff, 0x62, 0xff, 0x65, 0xff, 0x63, 0xff, + 0x66, 0xff, 0x67, 0xff, 0x6b, 0xff, 0x68, 0xff, 0x6e, 0xff, 0x70, 0xff, + 0x71, 0xff, 0x6f, 0xff, 0x75, 0xff, 0x77, 0xff, 0x7a, 0xff, 0x79, 0xff, + 0x7e, 0xff, 0x7e, 0xff, 0x82, 0xff, 0x82, 0xff, 0x86, 0xff, 0x87, 0xff, + 0x8b, 0xff, 0x8b, 0xff, 0x8e, 0xff, 0x91, 0xff, 0x97, 0xff, 0x94, 0xff, + 0x98, 0xff, 0x9b, 0xff, 0x9f, 0xff, 0x9e, 0xff, 0xa6, 0xff, 0xa7, 0xff, + 0xa8, 0xff, 0xa9, 0xff, 0xb0, 0xff, 0xaf, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0xba, 0xff, 0xbb, 0xff, 0xbf, 0xff, 0xbe, 0xff, 0xc1, 0xff, 0xc4, 0xff, + 0xcb, 0xff, 0xca, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xd4, 0xff, + 0xd9, 0xff, 0xda, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xe5, 0xff, 0xe6, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf6, 0xff, 0xf8, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0x03, 0x00, 0x04, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0x13, 0x00, 0x14, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x20, 0x00, 0x1f, 0x00, 0x22, 0x00, 0x23, 0x00, 0x2b, 0x00, 0x2a, 0x00, + 0x2f, 0x00, 0x2f, 0x00, 0x33, 0x00, 0x35, 0x00, 0x3c, 0x00, 0x3b, 0x00, + 0x3d, 0x00, 0x3e, 0x00, 0x47, 0x00, 0x44, 0x00, 0x4c, 0x00, 0x4d, 0x00, + 0x50, 0x00, 0x4f, 0x00, 0x58, 0x00, 0x57, 0x00, 0x5b, 0x00, 0x5a, 0x00, + 0x63, 0x00, 0x61, 0x00, 0x64, 0x00, 0x66, 0x00, 0x6d, 0x00, 0x6c, 0x00, + 0x70, 0x00, 0x6e, 0x00, 0x75, 0x00, 0x77, 0x00, 0x79, 0x00, 0x79, 0x00, + 0x7e, 0x00, 0x7e, 0x00, 0x85, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, + 0x8b, 0x00, 0x8c, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x91, 0x00, 0x93, 0x00, + 0x97, 0x00, 0x95, 0x00, 0x97, 0x00, 0x98, 0x00, 0x9e, 0x00, 0x9d, 0x00, + 0x9d, 0x00, 0x9c, 0x00, 0xa1, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0xa2, 0x00, + 0xa4, 0x00, 0xa3, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xa7, 0x00, 0xa7, 0x00, + 0xad, 0x00, 0xac, 0x00, 0xab, 0x00, 0xab, 0x00, 0xad, 0x00, 0xad, 0x00, + 0xaf, 0x00, 0xaf, 0x00, 0xad, 0x00, 0xae, 0x00, 0xb0, 0x00, 0xaf, 0x00, + 0xac, 0x00, 0xb0, 0x00, 0xb1, 0x00, 0xae, 0x00, 0xad, 0x00, 0xb0, 0x00, + 0xad, 0x00, 0xad, 0x00, 0xae, 0x00, 0xae, 0x00, 0xad, 0x00, 0xae, 0x00, + 0xac, 0x00, 0xad, 0x00, 0xab, 0x00, 0xab, 0x00, 0xa9, 0x00, 0xac, 0x00, + 0xaa, 0x00, 0xa9, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, 0x00, + 0xa3, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0xa1, 0x00, 0x9f, 0x00, + 0x9f, 0x00, 0x9f, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9a, 0x00, 0x9a, 0x00, + 0x96, 0x00, 0x95, 0x00, 0x93, 0x00, 0x94, 0x00, 0x90, 0x00, 0x90, 0x00, + 0x8e, 0x00, 0x8d, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x87, 0x00, 0x86, 0x00, + 0x83, 0x00, 0x82, 0x00, 0x80, 0x00, 0x7f, 0x00, 0x7d, 0x00, 0x7b, 0x00, + 0x77, 0x00, 0x77, 0x00, 0x74, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x6e, 0x00, + 0x69, 0x00, 0x69, 0x00, 0x69, 0x00, 0x66, 0x00, 0x5d, 0x00, 0x5e, 0x00, + 0x5d, 0x00, 0x5c, 0x00, 0x55, 0x00, 0x54, 0x00, 0x50, 0x00, 0x50, 0x00, + 0x4c, 0x00, 0x4b, 0x00, 0x45, 0x00, 0x44, 0x00, 0x40, 0x00, 0x40, 0x00, + 0x38, 0x00, 0x37, 0x00, 0x34, 0x00, 0x34, 0x00, 0x2f, 0x00, 0x2f, 0x00, + 0x28, 0x00, 0x26, 0x00, 0x23, 0x00, 0x24, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe6, 0xff, 0xe5, 0xff, + 0xe0, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xd6, 0xff, 0xd4, 0xff, + 0xce, 0xff, 0xcd, 0xff, 0xca, 0xff, 0xca, 0xff, 0xc4, 0xff, 0xc2, 0xff, + 0xc0, 0xff, 0xc0, 0xff, 0xb9, 0xff, 0xb7, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0xb0, 0xff, 0xae, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0xa7, 0xff, 0xa6, 0xff, + 0x9f, 0xff, 0x9e, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x98, 0xff, 0x96, 0xff, + 0x91, 0xff, 0x94, 0xff, 0x91, 0xff, 0x8f, 0xff, 0x8a, 0xff, 0x8b, 0xff, + 0x88, 0xff, 0x87, 0xff, 0x84, 0xff, 0x82, 0xff, 0x7e, 0xff, 0x7f, 0xff, + 0x7e, 0xff, 0x7b, 0xff, 0x76, 0xff, 0x78, 0xff, 0x75, 0xff, 0x75, 0xff, + 0x71, 0xff, 0x70, 0xff, 0x6f, 0xff, 0x6e, 0xff, 0x69, 0xff, 0x6a, 0xff, + 0x69, 0xff, 0x67, 0xff, 0x65, 0xff, 0x66, 0xff, 0x62, 0xff, 0x61, 0xff, + 0x61, 0xff, 0x61, 0xff, 0x5e, 0xff, 0x5d, 0xff, 0x5c, 0xff, 0x5c, 0xff, + 0x59, 0xff, 0x5a, 0xff, 0x57, 0xff, 0x57, 0xff, 0x58, 0xff, 0x55, 0xff, + 0x53, 0xff, 0x55, 0xff, 0x55, 0xff, 0x53, 0xff, 0x53, 0xff, 0x52, 0xff, + 0x50, 0xff, 0x53, 0xff, 0x55, 0xff, 0x51, 0xff, 0x4e, 0xff, 0x52, 0xff, + 0x53, 0xff, 0x51, 0xff, 0x4e, 0xff, 0x50, 0xff, 0x52, 0xff, 0x50, 0xff, + 0x50, 0xff, 0x51, 0xff, 0x52, 0xff, 0x52, 0xff, 0x54, 0xff, 0x56, 0xff, + 0x54, 0xff, 0x53, 0xff, 0x56, 0xff, 0x56, 0xff, 0x58, 0xff, 0x59, 0xff, + 0x5a, 0xff, 0x59, 0xff, 0x5c, 0xff, 0x5c, 0xff, 0x5c, 0xff, 0x5b, 0xff, + 0x63, 0xff, 0x64, 0xff, 0x62, 0xff, 0x62, 0xff, 0x67, 0xff, 0x67, 0xff, + 0x6a, 0xff, 0x6a, 0xff, 0x6c, 0xff, 0x6c, 0xff, 0x71, 0xff, 0x71, 0xff, + 0x72, 0xff, 0x74, 0xff, 0x78, 0xff, 0x76, 0xff, 0x7a, 0xff, 0x7c, 0xff, + 0x7f, 0xff, 0x7f, 0xff, 0x82, 0xff, 0x83, 0xff, 0x87, 0xff, 0x89, 0xff, + 0x89, 0xff, 0x8a, 0xff, 0x92, 0xff, 0x92, 0xff, 0x93, 0xff, 0x97, 0xff, + 0x9a, 0xff, 0x99, 0xff, 0x9d, 0xff, 0x9f, 0xff, 0xa3, 0xff, 0xa2, 0xff, + 0xa8, 0xff, 0xa9, 0xff, 0xac, 0xff, 0xac, 0xff, 0xb3, 0xff, 0xb3, 0xff, + 0xb6, 0xff, 0xb6, 0xff, 0xbd, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xc0, 0xff, + 0xca, 0xff, 0xc8, 0xff, 0xc9, 0xff, 0xcb, 0xff, 0xd2, 0xff, 0xd0, 0xff, + 0xd7, 0xff, 0xd8, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xe4, 0xff, 0xe2, 0xff, + 0xe6, 0xff, 0xe6, 0xff, 0xed, 0xff, 0xec, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf5, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x01, 0x00, 0x03, 0x00, + 0x0b, 0x00, 0x09, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x19, 0x00, 0x1a, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x24, 0x00, 0x25, 0x00, + 0x2a, 0x00, 0x29, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x3b, 0x00, 0x3c, 0x00, 0x40, 0x00, 0x40, 0x00, 0x47, 0x00, 0x48, 0x00, + 0x4c, 0x00, 0x4a, 0x00, 0x52, 0x00, 0x53, 0x00, 0x57, 0x00, 0x56, 0x00, + 0x5b, 0x00, 0x5d, 0x00, 0x62, 0x00, 0x61, 0x00, 0x65, 0x00, 0x64, 0x00, + 0x6c, 0x00, 0x6c, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x75, 0x00, 0x76, 0x00, + 0x79, 0x00, 0x78, 0x00, 0x7e, 0x00, 0x7d, 0x00, 0x82, 0x00, 0x82, 0x00, + 0x85, 0x00, 0x84, 0x00, 0x89, 0x00, 0x88, 0x00, 0x8c, 0x00, 0x8c, 0x00, + 0x91, 0x00, 0x8f, 0x00, 0x91, 0x00, 0x92, 0x00, 0x96, 0x00, 0x95, 0x00, + 0x99, 0x00, 0x98, 0x00, 0x9a, 0x00, 0x9c, 0x00, 0x9f, 0x00, 0x9c, 0x00, + 0x9d, 0x00, 0xa0, 0x00, 0xa4, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa3, 0x00, + 0xa3, 0x00, 0xa2, 0x00, 0xa7, 0x00, 0xa5, 0x00, 0xa5, 0x00, 0xa4, 0x00, + 0xa8, 0x00, 0xa9, 0x00, 0xa9, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xa8, 0x00, + 0xa9, 0x00, 0xab, 0x00, 0xab, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xad, 0x00, + 0xa9, 0x00, 0xa6, 0x00, 0xab, 0x00, 0xad, 0x00, 0xa8, 0x00, 0xa7, 0x00, + 0xa8, 0x00, 0xa9, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0xa5, 0x00, 0xa6, 0x00, + 0xa6, 0x00, 0xa6, 0x00, 0xa3, 0x00, 0xa5, 0x00, 0xa2, 0x00, 0xa2, 0x00, + 0xa2, 0x00, 0xa4, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0x9d, 0x00, 0x9e, 0x00, + 0x9c, 0x00, 0x9f, 0x00, 0x99, 0x00, 0x99, 0x00, 0x97, 0x00, 0x99, 0x00, + 0x95, 0x00, 0x95, 0x00, 0x93, 0x00, 0x94, 0x00, 0x90, 0x00, 0x90, 0x00, + 0x8d, 0x00, 0x8f, 0x00, 0x8a, 0x00, 0x89, 0x00, 0x86, 0x00, 0x88, 0x00, + 0x83, 0x00, 0x83, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x7b, 0x00, 0x7c, 0x00, + 0x79, 0x00, 0x7a, 0x00, 0x73, 0x00, 0x73, 0x00, 0x70, 0x00, 0x72, 0x00, + 0x6b, 0x00, 0x69, 0x00, 0x64, 0x00, 0x67, 0x00, 0x63, 0x00, 0x62, 0x00, + 0x5a, 0x00, 0x5b, 0x00, 0x57, 0x00, 0x58, 0x00, 0x51, 0x00, 0x51, 0x00, + 0x4c, 0x00, 0x4d, 0x00, 0x46, 0x00, 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, + 0x3c, 0x00, 0x3d, 0x00, 0x36, 0x00, 0x36, 0x00, 0x31, 0x00, 0x31, 0x00, + 0x2b, 0x00, 0x2b, 0x00, 0x24, 0x00, 0x22, 0x00, 0x1f, 0x00, 0x20, 0x00, + 0x16, 0x00, 0x19, 0x00, 0x16, 0x00, 0x12, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfb, 0xff, 0xfb, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xef, 0xff, 0xef, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xe6, 0xff, 0xe6, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xda, 0xff, 0xdb, 0xff, + 0xd5, 0xff, 0xd5, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xc9, 0xff, 0xca, 0xff, + 0xc4, 0xff, 0xc3, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xba, 0xff, 0xba, 0xff, + 0xb7, 0xff, 0xb5, 0xff, 0xb0, 0xff, 0xb1, 0xff, 0xac, 0xff, 0xa9, 0xff, + 0xa8, 0xff, 0xa9, 0xff, 0xa3, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0x9f, 0xff, + 0x98, 0xff, 0x98, 0xff, 0x95, 0xff, 0x96, 0xff, 0x91, 0xff, 0x91, 0xff, + 0x8c, 0xff, 0x8d, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x85, 0xff, 0x84, 0xff, + 0x83, 0xff, 0x85, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x7c, 0xff, + 0x76, 0xff, 0x78, 0xff, 0x73, 0xff, 0x71, 0xff, 0x73, 0xff, 0x74, 0xff, + 0x6c, 0xff, 0x6b, 0xff, 0x6b, 0xff, 0x6c, 0xff, 0x67, 0xff, 0x66, 0xff, + 0x66, 0xff, 0x67, 0xff, 0x64, 0xff, 0x65, 0xff, 0x60, 0xff, 0x60, 0xff, + 0x61, 0xff, 0x60, 0xff, 0x5b, 0xff, 0x5c, 0xff, 0x5b, 0xff, 0x5d, 0xff, + 0x59, 0xff, 0x58, 0xff, 0x58, 0xff, 0x58, 0xff, 0x57, 0xff, 0x58, 0xff, + 0x55, 0xff, 0x56, 0xff, 0x56, 0xff, 0x57, 0xff, 0x54, 0xff, 0x55, 0xff, + 0x55, 0xff, 0x55, 0xff, 0x55, 0xff, 0x56, 0xff, 0x54, 0xff, 0x55, 0xff, + 0x56, 0xff, 0x57, 0xff, 0x58, 0xff, 0x57, 0xff, 0x56, 0xff, 0x57, 0xff, + 0x59, 0xff, 0x5a, 0xff, 0x59, 0xff, 0x59, 0xff, 0x5c, 0xff, 0x5c, 0xff, + 0x5e, 0xff, 0x5e, 0xff, 0x5e, 0xff, 0x5f, 0xff, 0x61, 0xff, 0x62, 0xff, + 0x62, 0xff, 0x65, 0xff, 0x69, 0xff, 0x66, 0xff, 0x67, 0xff, 0x6b, 0xff, + 0x6d, 0xff, 0x6b, 0xff, 0x6e, 0xff, 0x70, 0xff, 0x74, 0xff, 0x72, 0xff, + 0x76, 0xff, 0x77, 0xff, 0x79, 0xff, 0x78, 0xff, 0x7e, 0xff, 0x7d, 0xff, + 0x7f, 0xff, 0x81, 0xff, 0x86, 0xff, 0x86, 0xff, 0x88, 0xff, 0x88, 0xff, + 0x8d, 0xff, 0x8d, 0xff, 0x8f, 0xff, 0x90, 0xff, 0x95, 0xff, 0x96, 0xff, + 0x99, 0xff, 0x99, 0xff, 0x9d, 0xff, 0x9c, 0xff, 0xa2, 0xff, 0xa3, 0xff, + 0xa5, 0xff, 0xa6, 0xff, 0xad, 0xff, 0xad, 0xff, 0xae, 0xff, 0xaf, 0xff, + 0xb6, 0xff, 0xb5, 0xff, 0xba, 0xff, 0xbb, 0xff, 0xbd, 0xff, 0xbf, 0xff, + 0xc4, 0xff, 0xc4, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xce, 0xff, 0xce, 0xff, + 0xd2, 0xff, 0xd3, 0xff, 0xd8, 0xff, 0xd9, 0xff, 0xdc, 0xff, 0xdd, 0xff, + 0xe3, 0xff, 0xe3, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0x04, 0x00, 0x05, 0x00, 0x09, 0x00, 0x08, 0x00, 0x0f, 0x00, 0x10, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x21, 0x00, 0x20, 0x00, + 0x25, 0x00, 0x25, 0x00, 0x2c, 0x00, 0x2f, 0x00, 0x33, 0x00, 0x31, 0x00, + 0x38, 0x00, 0x37, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x43, 0x00, 0x42, 0x00, + 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x54, 0x00, 0x55, 0x00, + 0x55, 0x00, 0x55, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x62, 0x00, 0x62, 0x00, + 0x65, 0x00, 0x67, 0x00, 0x6c, 0x00, 0x6b, 0x00, 0x6d, 0x00, 0x6f, 0x00, + 0x75, 0x00, 0x73, 0x00, 0x76, 0x00, 0x77, 0x00, 0x7c, 0x00, 0x7c, 0x00, + 0x7e, 0x00, 0x7e, 0x00, 0x82, 0x00, 0x83, 0x00, 0x86, 0x00, 0x87, 0x00, + 0x88, 0x00, 0x88, 0x00, 0x8d, 0x00, 0x8c, 0x00, 0x8e, 0x00, 0x8f, 0x00, + 0x93, 0x00, 0x91, 0x00, 0x93, 0x00, 0x94, 0x00, 0x96, 0x00, 0x97, 0x00, + 0x99, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x9d, 0x00, 0x9c, 0x00, + 0x9d, 0x00, 0x9d, 0x00, 0xa1, 0x00, 0xa0, 0x00, 0x9f, 0x00, 0xa1, 0x00, + 0xa4, 0x00, 0xa1, 0x00, 0xa1, 0x00, 0xa3, 0x00, 0xa3, 0x00, 0xa4, 0x00, + 0xa5, 0x00, 0xa4, 0x00, 0xa4, 0x00, 0xa3, 0x00, 0xa6, 0x00, 0xa4, 0x00, + 0xa5, 0x00, 0xa5, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa6, 0x00, + 0xa5, 0x00, 0xa5, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa3, 0x00, 0xa2, 0x00, + 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa2, 0x00, 0xa0, 0x00, 0x9f, 0x00, + 0x9e, 0x00, 0xa0, 0x00, 0x9e, 0x00, 0x9d, 0x00, 0x9b, 0x00, 0x9c, 0x00, + 0x9a, 0x00, 0x9a, 0x00, 0x98, 0x00, 0x96, 0x00, 0x95, 0x00, 0x95, 0x00, + 0x93, 0x00, 0x94, 0x00, 0x90, 0x00, 0x8f, 0x00, 0x8e, 0x00, 0x8f, 0x00, + 0x8b, 0x00, 0x8a, 0x00, 0x87, 0x00, 0x89, 0x00, 0x87, 0x00, 0x85, 0x00, + 0x7f, 0x00, 0x81, 0x00, 0x80, 0x00, 0x7d, 0x00, 0x79, 0x00, 0x7c, 0x00, + 0x78, 0x00, 0x76, 0x00, 0x70, 0x00, 0x74, 0x00, 0x6f, 0x00, 0x6e, 0x00, + 0x6a, 0x00, 0x6a, 0x00, 0x65, 0x00, 0x65, 0x00, 0x5f, 0x00, 0x60, 0x00, + 0x5c, 0x00, 0x5d, 0x00, 0x56, 0x00, 0x55, 0x00, 0x52, 0x00, 0x52, 0x00, + 0x4c, 0x00, 0x4c, 0x00, 0x47, 0x00, 0x48, 0x00, 0x44, 0x00, 0x42, 0x00, + 0x3d, 0x00, 0x3d, 0x00, 0x38, 0x00, 0x36, 0x00, 0x32, 0x00, 0x32, 0x00, + 0x2c, 0x00, 0x2b, 0x00, 0x27, 0x00, 0x26, 0x00, 0x21, 0x00, 0x20, 0x00, + 0x1b, 0x00, 0x19, 0x00, 0x15, 0x00, 0x15, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfa, 0xff, 0xf9, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xed, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe1, 0xff, + 0xdb, 0xff, 0xd9, 0xff, 0xd5, 0xff, 0xd4, 0xff, 0xd1, 0xff, 0xd1, 0xff, + 0xcb, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xc7, 0xff, 0xc0, 0xff, 0xbe, 0xff, + 0xbc, 0xff, 0xbd, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xb2, 0xff, 0xb1, 0xff, + 0xac, 0xff, 0xad, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xa5, 0xff, 0xa5, 0xff, + 0x9e, 0xff, 0x9f, 0xff, 0x9d, 0xff, 0x9c, 0xff, 0x96, 0xff, 0x96, 0xff, + 0x95, 0xff, 0x94, 0xff, 0x91, 0xff, 0x8f, 0xff, 0x8a, 0xff, 0x8a, 0xff, + 0x89, 0xff, 0x87, 0xff, 0x83, 0xff, 0x85, 0xff, 0x80, 0xff, 0x7e, 0xff, + 0x7c, 0xff, 0x7e, 0xff, 0x79, 0xff, 0x78, 0xff, 0x77, 0xff, 0x77, 0xff, + 0x72, 0xff, 0x72, 0xff, 0x71, 0xff, 0x6e, 0xff, 0x6d, 0xff, 0x6f, 0xff, + 0x6a, 0xff, 0x68, 0xff, 0x68, 0xff, 0x68, 0xff, 0x66, 0xff, 0x67, 0xff, + 0x62, 0xff, 0x61, 0xff, 0x62, 0xff, 0x63, 0xff, 0x5e, 0xff, 0x5d, 0xff, + 0x5f, 0xff, 0x61, 0xff, 0x5d, 0xff, 0x5c, 0xff, 0x5b, 0xff, 0x5b, 0xff, + 0x5c, 0xff, 0x5b, 0xff, 0x5a, 0xff, 0x59, 0xff, 0x5b, 0xff, 0x5b, 0xff, + 0x5a, 0xff, 0x59, 0xff, 0x5a, 0xff, 0x5a, 0xff, 0x5c, 0xff, 0x5b, 0xff, + 0x59, 0xff, 0x58, 0xff, 0x5c, 0xff, 0x5b, 0xff, 0x5b, 0xff, 0x5b, 0xff, + 0x5d, 0xff, 0x5c, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x60, 0xff, 0x60, 0xff, + 0x63, 0xff, 0x61, 0xff, 0x63, 0xff, 0x63, 0xff, 0x66, 0xff, 0x65, 0xff, + 0x67, 0xff, 0x67, 0xff, 0x6c, 0xff, 0x6b, 0xff, 0x6a, 0xff, 0x6b, 0xff, + 0x71, 0xff, 0x71, 0xff, 0x72, 0xff, 0x73, 0xff, 0x75, 0xff, 0x75, 0xff, + 0x78, 0xff, 0x78, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x7f, 0xff, 0x7e, 0xff, + 0x81, 0xff, 0x83, 0xff, 0x86, 0xff, 0x85, 0xff, 0x88, 0xff, 0x8a, 0xff, + 0x8f, 0xff, 0x8d, 0xff, 0x8f, 0xff, 0x92, 0xff, 0x96, 0xff, 0x95, 0xff, + 0x9a, 0xff, 0x99, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0xa1, 0xff, 0xa2, 0xff, + 0xa6, 0xff, 0xa7, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xb1, 0xff, 0xb0, 0xff, + 0xb1, 0xff, 0xb4, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xbc, 0xff, 0xbd, 0xff, + 0xc1, 0xff, 0xc2, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xc9, 0xff, 0xcc, 0xff, + 0xd3, 0xff, 0xd1, 0xff, 0xd3, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xdc, 0xff, + 0xe0, 0xff, 0xe1, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xed, 0xff, 0xec, 0xff, + 0xed, 0xff, 0xf0, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfc, 0xff, + 0x06, 0x00, 0x03, 0x00, 0x05, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x0c, 0x00, + 0x11, 0x00, 0x12, 0x00, 0x17, 0x00, 0x17, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x22, 0x00, 0x23, 0x00, 0x27, 0x00, 0x27, 0x00, 0x2f, 0x00, 0x2e, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x3a, 0x00, 0x38, 0x00, 0x3e, 0x00, 0x3f, 0x00, + 0x44, 0x00, 0x44, 0x00, 0x4b, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4d, 0x00, + 0x55, 0x00, 0x53, 0x00, 0x56, 0x00, 0x56, 0x00, 0x5d, 0x00, 0x5d, 0x00, + 0x62, 0x00, 0x60, 0x00, 0x64, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x69, 0x00, + 0x6c, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x74, 0x00, 0x75, 0x00, 0x72, 0x00, + 0x78, 0x00, 0x7a, 0x00, 0x7c, 0x00, 0x7b, 0x00, 0x7f, 0x00, 0x7e, 0x00, + 0x83, 0x00, 0x84, 0x00, 0x87, 0x00, 0x84, 0x00, 0x89, 0x00, 0x89, 0x00, + 0x8b, 0x00, 0x8a, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x90, 0x00, 0x8e, 0x00, + 0x92, 0x00, 0x91, 0x00, 0x95, 0x00, 0x94, 0x00, 0x97, 0x00, 0x96, 0x00, + 0x98, 0x00, 0x98, 0x00, 0x9b, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9a, 0x00, + 0x9d, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0x9e, 0x00, + 0x9f, 0x00, 0x9e, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0xa1, 0x00, 0xa2, 0x00, + 0xa2, 0x00, 0xa1, 0x00, 0x9f, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa2, 0x00, + 0xa0, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa1, 0x00, 0xa0, 0x00, + 0x9f, 0x00, 0xa1, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0x9f, 0x00, 0x9f, 0x00, + 0x9c, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x9a, 0x00, 0x9a, 0x00, + 0x97, 0x00, 0x96, 0x00, 0x96, 0x00, 0x98, 0x00, 0x95, 0x00, 0x93, 0x00, + 0x93, 0x00, 0x95, 0x00, 0x91, 0x00, 0x8f, 0x00, 0x8d, 0x00, 0x8e, 0x00, + 0x8a, 0x00, 0x8b, 0x00, 0x88, 0x00, 0x88, 0x00, 0x86, 0x00, 0x86, 0x00, + 0x81, 0x00, 0x80, 0x00, 0x7d, 0x00, 0x7c, 0x00, 0x7b, 0x00, 0x7a, 0x00, + 0x73, 0x00, 0x73, 0x00, 0x75, 0x00, 0x75, 0x00, 0x6c, 0x00, 0x6a, 0x00, + 0x6b, 0x00, 0x6b, 0x00, 0x64, 0x00, 0x63, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x5d, 0x00, 0x5d, 0x00, 0x55, 0x00, 0x55, 0x00, 0x53, 0x00, 0x54, 0x00, + 0x4b, 0x00, 0x4b, 0x00, 0x47, 0x00, 0x49, 0x00, 0x43, 0x00, 0x43, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x39, 0x00, 0x3b, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x26, 0x00, 0x28, 0x00, 0x24, 0x00, 0x24, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x18, 0x00, 0x18, 0x00, 0x16, 0x00, 0x13, 0x00, + 0x0c, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x02, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xee, 0xff, 0xed, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xdf, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xd4, 0xff, 0xd5, 0xff, + 0xcf, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xcb, 0xff, 0xc7, 0xff, 0xc7, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0xbd, 0xff, 0xbb, 0xff, 0xb8, 0xff, 0xb8, 0xff, + 0xb3, 0xff, 0xb4, 0xff, 0xaf, 0xff, 0xad, 0xff, 0xa9, 0xff, 0xab, 0xff, + 0xa6, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xa2, 0xff, 0x9b, 0xff, 0x9c, 0xff, + 0x99, 0xff, 0x98, 0xff, 0x95, 0xff, 0x94, 0xff, 0x8f, 0xff, 0x91, 0xff, + 0x8d, 0xff, 0x8d, 0xff, 0x87, 0xff, 0x88, 0xff, 0x86, 0xff, 0x85, 0xff, + 0x80, 0xff, 0x82, 0xff, 0x7e, 0xff, 0x7f, 0xff, 0x79, 0xff, 0x79, 0xff, + 0x78, 0xff, 0x78, 0xff, 0x75, 0xff, 0x76, 0xff, 0x71, 0xff, 0x70, 0xff, + 0x70, 0xff, 0x71, 0xff, 0x6d, 0xff, 0x6c, 0xff, 0x6a, 0xff, 0x6a, 0xff, + 0x68, 0xff, 0x69, 0xff, 0x64, 0xff, 0x65, 0xff, 0x67, 0xff, 0x66, 0xff, + 0x61, 0xff, 0x62, 0xff, 0x64, 0xff, 0x62, 0xff, 0x60, 0xff, 0x60, 0xff, + 0x60, 0xff, 0x60, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x5f, 0xff, + 0x5e, 0xff, 0x5e, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x5f, 0xff, 0x60, 0xff, + 0x5f, 0xff, 0x60, 0xff, 0x60, 0xff, 0x5f, 0xff, 0x61, 0xff, 0x60, 0xff, + 0x61, 0xff, 0x63, 0xff, 0x64, 0xff, 0x62, 0xff, 0x63, 0xff, 0x65, 0xff, + 0x66, 0xff, 0x65, 0xff, 0x67, 0xff, 0x67, 0xff, 0x6a, 0xff, 0x6b, 0xff, + 0x69, 0xff, 0x6a, 0xff, 0x6e, 0xff, 0x6e, 0xff, 0x6f, 0xff, 0x70, 0xff, + 0x73, 0xff, 0x72, 0xff, 0x76, 0xff, 0x76, 0xff, 0x76, 0xff, 0x76, 0xff, + 0x7c, 0xff, 0x7a, 0xff, 0x7b, 0xff, 0x7c, 0xff, 0x81, 0xff, 0x7f, 0xff, + 0x83, 0xff, 0x84, 0xff, 0x86, 0xff, 0x87, 0xff, 0x8a, 0xff, 0x89, 0xff, + 0x8d, 0xff, 0x8e, 0xff, 0x8f, 0xff, 0x90, 0xff, 0x97, 0xff, 0x95, 0xff, + 0x95, 0xff, 0x99, 0xff, 0x9f, 0xff, 0x9d, 0xff, 0x9f, 0xff, 0x9f, 0xff, + 0xa5, 0xff, 0xa4, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xac, 0xff, 0xac, 0xff, + 0xb3, 0xff, 0xb3, 0xff, 0xb6, 0xff, 0xb5, 0xff, 0xbb, 0xff, 0xbb, 0xff, + 0xc1, 0xff, 0xc0, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xcb, 0xff, 0xca, 0xff, + 0xcc, 0xff, 0xcc, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xd9, 0xff, 0xd9, 0xff, + 0xdd, 0xff, 0xdc, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xed, 0xff, 0xef, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x04, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x0e, 0x00, 0x0f, 0x00, 0x15, 0x00, 0x15, 0x00, 0x19, 0x00, 0x1a, 0x00, + 0x20, 0x00, 0x1f, 0x00, 0x24, 0x00, 0x24, 0x00, 0x28, 0x00, 0x29, 0x00, + 0x31, 0x00, 0x2f, 0x00, 0x35, 0x00, 0x34, 0x00, 0x3a, 0x00, 0x3b, 0x00, + 0x3f, 0x00, 0x3f, 0x00, 0x45, 0x00, 0x44, 0x00, 0x49, 0x00, 0x49, 0x00, + 0x4d, 0x00, 0x4d, 0x00, 0x53, 0x00, 0x53, 0x00, 0x55, 0x00, 0x53, 0x00, + 0x5c, 0x00, 0x5d, 0x00, 0x5f, 0x00, 0x5d, 0x00, 0x65, 0x00, 0x64, 0x00, + 0x68, 0x00, 0x68, 0x00, 0x6b, 0x00, 0x6a, 0x00, 0x70, 0x00, 0x6f, 0x00, + 0x72, 0x00, 0x71, 0x00, 0x77, 0x00, 0x76, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0x7c, 0x00, 0x7b, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x80, 0x00, + 0x86, 0x00, 0x85, 0x00, 0x87, 0x00, 0x85, 0x00, 0x8a, 0x00, 0x8c, 0x00, + 0x8b, 0x00, 0x8a, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x91, 0x00, 0x92, 0x00, + 0x90, 0x00, 0x8f, 0x00, 0x96, 0x00, 0x97, 0x00, 0x95, 0x00, 0x94, 0x00, + 0x96, 0x00, 0x97, 0x00, 0x99, 0x00, 0x98, 0x00, 0x98, 0x00, 0x98, 0x00, + 0x9b, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x99, 0x00, 0x9a, 0x00, + 0x9f, 0x00, 0x9d, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x9e, 0x00, 0x9f, 0x00, + 0x9c, 0x00, 0x9c, 0x00, 0x9d, 0x00, 0x9b, 0x00, 0x9d, 0x00, 0x9f, 0x00, + 0x9c, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9d, 0x00, 0x9a, 0x00, 0x99, 0x00, + 0x99, 0x00, 0x99, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x97, 0x00, 0x97, 0x00, + 0x96, 0x00, 0x95, 0x00, 0x93, 0x00, 0x94, 0x00, 0x91, 0x00, 0x91, 0x00, + 0x90, 0x00, 0x90, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x8a, 0x00, 0x8b, 0x00, + 0x86, 0x00, 0x85, 0x00, 0x87, 0x00, 0x88, 0x00, 0x80, 0x00, 0x80, 0x00, + 0x82, 0x00, 0x81, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x78, 0x00, 0x78, 0x00, + 0x73, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x6e, 0x00, 0x6e, 0x00, + 0x68, 0x00, 0x67, 0x00, 0x65, 0x00, 0x65, 0x00, 0x60, 0x00, 0x5f, 0x00, + 0x5c, 0x00, 0x5b, 0x00, 0x57, 0x00, 0x57, 0x00, 0x53, 0x00, 0x50, 0x00, + 0x4e, 0x00, 0x4e, 0x00, 0x4a, 0x00, 0x49, 0x00, 0x43, 0x00, 0x43, 0x00, + 0x3f, 0x00, 0x3f, 0x00, 0x3a, 0x00, 0x39, 0x00, 0x35, 0x00, 0x35, 0x00, + 0x30, 0x00, 0x2f, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x25, 0x00, 0x24, 0x00, + 0x22, 0x00, 0x21, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf6, 0xff, 0xf4, 0xff, 0xed, 0xff, 0xed, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xdb, 0xff, + 0xd5, 0xff, 0xd7, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xce, 0xff, + 0xc6, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xbe, 0xff, 0xbe, 0xff, + 0xb9, 0xff, 0xb8, 0xff, 0xb4, 0xff, 0xb5, 0xff, 0xaf, 0xff, 0xae, 0xff, + 0xac, 0xff, 0xac, 0xff, 0xa7, 0xff, 0xa5, 0xff, 0xa3, 0xff, 0xa4, 0xff, + 0x9e, 0xff, 0x9d, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x96, 0xff, 0x95, 0xff, + 0x93, 0xff, 0x91, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x8a, 0xff, 0x89, 0xff, + 0x88, 0xff, 0x86, 0xff, 0x82, 0xff, 0x83, 0xff, 0x82, 0xff, 0x80, 0xff, + 0x7b, 0xff, 0x7c, 0xff, 0x79, 0xff, 0x78, 0xff, 0x77, 0xff, 0x76, 0xff, + 0x74, 0xff, 0x73, 0xff, 0x72, 0xff, 0x72, 0xff, 0x70, 0xff, 0x6f, 0xff, + 0x6c, 0xff, 0x6d, 0xff, 0x6c, 0xff, 0x6c, 0xff, 0x68, 0xff, 0x68, 0xff, + 0x6b, 0xff, 0x69, 0xff, 0x66, 0xff, 0x66, 0xff, 0x67, 0xff, 0x66, 0xff, + 0x65, 0xff, 0x66, 0xff, 0x66, 0xff, 0x63, 0xff, 0x62, 0xff, 0x63, 0xff, + 0x65, 0xff, 0x63, 0xff, 0x63, 0xff, 0x62, 0xff, 0x64, 0xff, 0x64, 0xff, + 0x65, 0xff, 0x62, 0xff, 0x64, 0xff, 0x66, 0xff, 0x67, 0xff, 0x65, 0xff, + 0x64, 0xff, 0x65, 0xff, 0x67, 0xff, 0x68, 0xff, 0x66, 0xff, 0x67, 0xff, + 0x6b, 0xff, 0x6b, 0xff, 0x6a, 0xff, 0x6b, 0xff, 0x6d, 0xff, 0x6e, 0xff, + 0x6f, 0xff, 0x70, 0xff, 0x6f, 0xff, 0x6f, 0xff, 0x71, 0xff, 0x72, 0xff, + 0x74, 0xff, 0x73, 0xff, 0x76, 0xff, 0x78, 0xff, 0x7a, 0xff, 0x79, 0xff, + 0x7c, 0xff, 0x7b, 0xff, 0x7d, 0xff, 0x7f, 0xff, 0x81, 0xff, 0x7e, 0xff, + 0x85, 0xff, 0x85, 0xff, 0x87, 0xff, 0x88, 0xff, 0x8a, 0xff, 0x8b, 0xff, + 0x8c, 0xff, 0x8e, 0xff, 0x91, 0xff, 0x91, 0xff, 0x92, 0xff, 0x95, 0xff, + 0x99, 0xff, 0x97, 0xff, 0x99, 0xff, 0x9b, 0xff, 0x9f, 0xff, 0x9e, 0xff, + 0xa1, 0xff, 0xa2, 0xff, 0xa9, 0xff, 0xa8, 0xff, 0xab, 0xff, 0xac, 0xff, + 0xae, 0xff, 0xaf, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xb8, 0xff, 0xb9, 0xff, + 0xbf, 0xff, 0xbf, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc7, 0xff, 0xc6, 0xff, + 0xcd, 0xff, 0xcf, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd5, 0xff, 0xd7, 0xff, + 0xdb, 0xff, 0xdb, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xea, 0xff, 0xec, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf6, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xff, 0xff, 0x08, 0x00, 0x07, 0x00, + 0x0a, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x11, 0x00, 0x17, 0x00, 0x16, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x20, 0x00, 0x21, 0x00, 0x27, 0x00, 0x25, 0x00, + 0x2c, 0x00, 0x2c, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x35, 0x00, 0x35, 0x00, + 0x38, 0x00, 0x37, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x45, 0x00, 0x43, 0x00, + 0x47, 0x00, 0x49, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x54, 0x00, 0x55, 0x00, 0x5a, 0x00, 0x59, 0x00, 0x5f, 0x00, 0x5e, 0x00, + 0x61, 0x00, 0x60, 0x00, 0x66, 0x00, 0x66, 0x00, 0x65, 0x00, 0x68, 0x00, + 0x6d, 0x00, 0x6b, 0x00, 0x6f, 0x00, 0x71, 0x00, 0x74, 0x00, 0x71, 0x00, + 0x77, 0x00, 0x78, 0x00, 0x78, 0x00, 0x77, 0x00, 0x7c, 0x00, 0x7d, 0x00, + 0x7f, 0x00, 0x7e, 0x00, 0x81, 0x00, 0x81, 0x00, 0x87, 0x00, 0x85, 0x00, + 0x84, 0x00, 0x86, 0x00, 0x89, 0x00, 0x88, 0x00, 0x8a, 0x00, 0x8c, 0x00, + 0x8d, 0x00, 0x8c, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x90, 0x00, + 0x92, 0x00, 0x92, 0x00, 0x93, 0x00, 0x93, 0x00, 0x95, 0x00, 0x94, 0x00, + 0x95, 0x00, 0x96, 0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x98, 0x00, + 0x96, 0x00, 0x9a, 0x00, 0x9a, 0x00, 0x98, 0x00, 0x98, 0x00, 0x9c, 0x00, + 0x9a, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9a, 0x00, 0x97, 0x00, 0x9b, 0x00, + 0x99, 0x00, 0x98, 0x00, 0x97, 0x00, 0x99, 0x00, 0x99, 0x00, 0x9a, 0x00, + 0x98, 0x00, 0x97, 0x00, 0x96, 0x00, 0x99, 0x00, 0x95, 0x00, 0x94, 0x00, + 0x93, 0x00, 0x93, 0x00, 0x91, 0x00, 0x93, 0x00, 0x8f, 0x00, 0x8f, 0x00, + 0x8d, 0x00, 0x8e, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8a, 0x00, 0x87, 0x00, + 0x85, 0x00, 0x88, 0x00, 0x84, 0x00, 0x83, 0x00, 0x81, 0x00, 0x82, 0x00, + 0x7d, 0x00, 0x7c, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x75, 0x00, 0x77, 0x00, + 0x73, 0x00, 0x73, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0x6c, 0x00, + 0x67, 0x00, 0x67, 0x00, 0x62, 0x00, 0x63, 0x00, 0x60, 0x00, 0x5f, 0x00, + 0x5b, 0x00, 0x5b, 0x00, 0x56, 0x00, 0x56, 0x00, 0x53, 0x00, 0x51, 0x00, + 0x4c, 0x00, 0x4e, 0x00, 0x4a, 0x00, 0x49, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x41, 0x00, 0x3f, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x37, 0x00, 0x36, 0x00, + 0x32, 0x00, 0x31, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x28, 0x00, 0x26, 0x00, + 0x24, 0x00, 0x23, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0x19, 0x00, + 0x14, 0x00, 0x15, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xfc, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xed, 0xff, 0xec, 0xff, + 0xe9, 0xff, 0xe9, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe1, 0xff, + 0xda, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xce, 0xff, 0xcd, 0xff, + 0xcc, 0xff, 0xcc, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xc3, 0xff, 0xc0, 0xff, + 0xbe, 0xff, 0xbd, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb6, 0xff, 0xb3, 0xff, + 0xaf, 0xff, 0xb0, 0xff, 0xad, 0xff, 0xa9, 0xff, 0xa7, 0xff, 0xa7, 0xff, + 0xa4, 0xff, 0xa3, 0xff, 0x9f, 0xff, 0x9c, 0xff, 0x9b, 0xff, 0x9b, 0xff, + 0x96, 0xff, 0x96, 0xff, 0x93, 0xff, 0x92, 0xff, 0x90, 0xff, 0x8f, 0xff, + 0x89, 0xff, 0x8a, 0xff, 0x88, 0xff, 0x87, 0xff, 0x84, 0xff, 0x83, 0xff, + 0x81, 0xff, 0x80, 0xff, 0x7f, 0xff, 0x80, 0xff, 0x7d, 0xff, 0x79, 0xff, + 0x78, 0xff, 0x7a, 0xff, 0x79, 0xff, 0x76, 0xff, 0x73, 0xff, 0x76, 0xff, + 0x75, 0xff, 0x72, 0xff, 0x70, 0xff, 0x71, 0xff, 0x71, 0xff, 0x70, 0xff, + 0x6d, 0xff, 0x6d, 0xff, 0x6c, 0xff, 0x6b, 0xff, 0x6c, 0xff, 0x6c, 0xff, + 0x69, 0xff, 0x69, 0xff, 0x6a, 0xff, 0x6b, 0xff, 0x68, 0xff, 0x68, 0xff, + 0x6a, 0xff, 0x69, 0xff, 0x69, 0xff, 0x69, 0xff, 0x67, 0xff, 0x68, 0xff, + 0x6b, 0xff, 0x6c, 0xff, 0x68, 0xff, 0x69, 0xff, 0x6a, 0xff, 0x6a, 0xff, + 0x6b, 0xff, 0x6c, 0xff, 0x6b, 0xff, 0x6b, 0xff, 0x6e, 0xff, 0x6d, 0xff, + 0x6c, 0xff, 0x6e, 0xff, 0x6d, 0xff, 0x6e, 0xff, 0x70, 0xff, 0x71, 0xff, + 0x70, 0xff, 0x70, 0xff, 0x73, 0xff, 0x74, 0xff, 0x74, 0xff, 0x75, 0xff, + 0x76, 0xff, 0x77, 0xff, 0x76, 0xff, 0x79, 0xff, 0x7a, 0xff, 0x7b, 0xff, + 0x7e, 0xff, 0x7e, 0xff, 0x80, 0xff, 0x81, 0xff, 0x80, 0xff, 0x81, 0xff, + 0x86, 0xff, 0x85, 0xff, 0x85, 0xff, 0x87, 0xff, 0x8b, 0xff, 0x89, 0xff, + 0x8c, 0xff, 0x8e, 0xff, 0x91, 0xff, 0x91, 0xff, 0x95, 0xff, 0x95, 0xff, + 0x98, 0xff, 0x96, 0xff, 0x9a, 0xff, 0x9c, 0xff, 0xa0, 0xff, 0x9f, 0xff, + 0xa2, 0xff, 0xa4, 0xff, 0xa8, 0xff, 0xa7, 0xff, 0xaa, 0xff, 0xaa, 0xff, + 0xaf, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xb1, 0xff, 0xb9, 0xff, 0xbb, 0xff, + 0xbb, 0xff, 0xbb, 0xff, 0xbf, 0xff, 0xc2, 0xff, 0xc6, 0xff, 0xc5, 0xff, + 0xca, 0xff, 0xca, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd5, 0xff, 0xd5, 0xff, + 0xd7, 0xff, 0xd9, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xe5, 0xff, + 0xe9, 0xff, 0xe9, 0xff, 0xee, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf2, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x04, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x14, 0x00, 0x15, 0x00, + 0x15, 0x00, 0x17, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0x22, 0x00, 0x23, 0x00, + 0x25, 0x00, 0x26, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x34, 0x00, 0x36, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3c, 0x00, 0x3d, 0x00, + 0x44, 0x00, 0x45, 0x00, 0x48, 0x00, 0x47, 0x00, 0x4c, 0x00, 0x4b, 0x00, + 0x50, 0x00, 0x51, 0x00, 0x53, 0x00, 0x53, 0x00, 0x58, 0x00, 0x59, 0x00, + 0x5b, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x61, 0x00, 0x63, 0x00, 0x62, 0x00, + 0x65, 0x00, 0x66, 0x00, 0x6c, 0x00, 0x6a, 0x00, 0x6c, 0x00, 0x6d, 0x00, + 0x72, 0x00, 0x70, 0x00, 0x74, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, + 0x7b, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7a, 0x00, 0x7e, 0x00, 0x7e, 0x00, + 0x83, 0x00, 0x81, 0x00, 0x84, 0x00, 0x84, 0x00, 0x87, 0x00, 0x86, 0x00, + 0x87, 0x00, 0x87, 0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x8c, 0x00, + 0x8f, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x92, 0x00, 0x92, 0x00, + 0x90, 0x00, 0x91, 0x00, 0x95, 0x00, 0x94, 0x00, 0x94, 0x00, 0x96, 0x00, + 0x95, 0x00, 0x94, 0x00, 0x96, 0x00, 0x97, 0x00, 0x95, 0x00, 0x95, 0x00, + 0x98, 0x00, 0x98, 0x00, 0x96, 0x00, 0x93, 0x00, 0x96, 0x00, 0x97, 0x00, + 0x98, 0x00, 0x96, 0x00, 0x96, 0x00, 0x97, 0x00, 0x96, 0x00, 0x96, 0x00, + 0x93, 0x00, 0x92, 0x00, 0x93, 0x00, 0x93, 0x00, 0x92, 0x00, 0x91, 0x00, + 0x90, 0x00, 0x90, 0x00, 0x90, 0x00, 0x8f, 0x00, 0x8b, 0x00, 0x8c, 0x00, + 0x8e, 0x00, 0x8c, 0x00, 0x85, 0x00, 0x88, 0x00, 0x88, 0x00, 0x86, 0x00, + 0x83, 0x00, 0x85, 0x00, 0x83, 0x00, 0x80, 0x00, 0x7e, 0x00, 0x80, 0x00, + 0x7a, 0x00, 0x7a, 0x00, 0x77, 0x00, 0x77, 0x00, 0x75, 0x00, 0x76, 0x00, + 0x71, 0x00, 0x71, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x69, 0x00, 0x6a, 0x00, + 0x66, 0x00, 0x67, 0x00, 0x63, 0x00, 0x61, 0x00, 0x60, 0x00, 0x61, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x58, 0x00, 0x56, 0x00, 0x50, 0x00, 0x53, 0x00, + 0x50, 0x00, 0x4f, 0x00, 0x48, 0x00, 0x4b, 0x00, 0x47, 0x00, 0x45, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x3a, 0x00, 0x3d, 0x00, 0x38, 0x00, 0x39, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x2b, 0x00, 0x2a, 0x00, + 0x26, 0x00, 0x27, 0x00, 0x22, 0x00, 0x23, 0x00, 0x1c, 0x00, 0x1d, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfb, 0xff, 0xfd, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xe6, 0xff, 0xe9, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xde, 0xff, 0xdf, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xd5, 0xff, 0xd4, 0xff, + 0xcf, 0xff, 0xd1, 0xff, 0xcb, 0xff, 0xca, 0xff, 0xc7, 0xff, 0xc7, 0xff, + 0xc0, 0xff, 0xc1, 0xff, 0xbe, 0xff, 0xbd, 0xff, 0xb8, 0xff, 0xb8, 0xff, + 0xb5, 0xff, 0xb5, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xaa, 0xff, 0xaa, 0xff, + 0xa8, 0xff, 0xa7, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0x9f, 0xff, 0x9f, 0xff, + 0x9b, 0xff, 0x9b, 0xff, 0x97, 0xff, 0x98, 0xff, 0x93, 0xff, 0x92, 0xff, + 0x92, 0xff, 0x91, 0xff, 0x8b, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0x8a, 0xff, + 0x85, 0xff, 0x86, 0xff, 0x85, 0xff, 0x85, 0xff, 0x80, 0xff, 0x81, 0xff, + 0x7e, 0xff, 0x7e, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x79, 0xff, 0x7a, 0xff, + 0x79, 0xff, 0x78, 0xff, 0x75, 0xff, 0x75, 0xff, 0x76, 0xff, 0x75, 0xff, + 0x70, 0xff, 0x72, 0xff, 0x72, 0xff, 0x72, 0xff, 0x70, 0xff, 0x70, 0xff, + 0x6f, 0xff, 0x6e, 0xff, 0x70, 0xff, 0x70, 0xff, 0x6c, 0xff, 0x6d, 0xff, + 0x6f, 0xff, 0x6e, 0xff, 0x6d, 0xff, 0x6e, 0xff, 0x6c, 0xff, 0x6b, 0xff, + 0x6e, 0xff, 0x6e, 0xff, 0x6c, 0xff, 0x6c, 0xff, 0x6f, 0xff, 0x6d, 0xff, + 0x6e, 0xff, 0x6f, 0xff, 0x6f, 0xff, 0x6e, 0xff, 0x70, 0xff, 0x70, 0xff, + 0x70, 0xff, 0x6e, 0xff, 0x72, 0xff, 0x73, 0xff, 0x73, 0xff, 0x72, 0xff, + 0x75, 0xff, 0x74, 0xff, 0x75, 0xff, 0x77, 0xff, 0x79, 0xff, 0x76, 0xff, + 0x78, 0xff, 0x79, 0xff, 0x7b, 0xff, 0x7a, 0xff, 0x7d, 0xff, 0x7d, 0xff, + 0x7d, 0xff, 0x7f, 0xff, 0x83, 0xff, 0x81, 0xff, 0x81, 0xff, 0x82, 0xff, + 0x88, 0xff, 0x85, 0xff, 0x87, 0xff, 0x88, 0xff, 0x8b, 0xff, 0x8a, 0xff, + 0x90, 0xff, 0x8e, 0xff, 0x90, 0xff, 0x91, 0xff, 0x96, 0xff, 0x96, 0xff, + 0x98, 0xff, 0x96, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x9e, 0xff, 0x9f, 0xff, + 0xa3, 0xff, 0xa0, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xaa, 0xff, 0xab, 0xff, + 0xb0, 0xff, 0xad, 0xff, 0xb1, 0xff, 0xb3, 0xff, 0xb9, 0xff, 0xb5, 0xff, + 0xbb, 0xff, 0xbc, 0xff, 0xc2, 0xff, 0xc1, 0xff, 0xc6, 0xff, 0xc5, 0xff, + 0xca, 0xff, 0xc9, 0xff, 0xcf, 0xff, 0xcd, 0xff, 0xd3, 0xff, 0xd4, 0xff, + 0xd9, 0xff, 0xd9, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xe6, 0xff, 0xe8, 0xff, 0xed, 0xff, 0xed, 0xff, 0xf1, 0xff, 0xf2, 0xff, + 0xf7, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0x02, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x16, 0x00, 0x16, 0x00, 0x19, 0x00, 0x18, 0x00, 0x1d, 0x00, 0x1f, 0x00, + 0x24, 0x00, 0x21, 0x00, 0x27, 0x00, 0x28, 0x00, 0x2d, 0x00, 0x2c, 0x00, + 0x2f, 0x00, 0x30, 0x00, 0x37, 0x00, 0x35, 0x00, 0x37, 0x00, 0x38, 0x00, + 0x3e, 0x00, 0x3e, 0x00, 0x41, 0x00, 0x42, 0x00, 0x46, 0x00, 0x44, 0x00, + 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x54, 0x00, 0x54, 0x00, + 0x54, 0x00, 0x54, 0x00, 0x5c, 0x00, 0x5a, 0x00, 0x5d, 0x00, 0x5c, 0x00, + 0x62, 0x00, 0x61, 0x00, 0x63, 0x00, 0x63, 0x00, 0x68, 0x00, 0x68, 0x00, + 0x6b, 0x00, 0x6a, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x71, 0x00, 0x6f, 0x00, + 0x74, 0x00, 0x74, 0x00, 0x76, 0x00, 0x75, 0x00, 0x7b, 0x00, 0x7b, 0x00, + 0x7c, 0x00, 0x7b, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x82, 0x00, 0x81, 0x00, + 0x86, 0x00, 0x85, 0x00, 0x84, 0x00, 0x85, 0x00, 0x89, 0x00, 0x88, 0x00, + 0x88, 0x00, 0x8b, 0x00, 0x8d, 0x00, 0x8a, 0x00, 0x8d, 0x00, 0x8d, 0x00, + 0x8d, 0x00, 0x8d, 0x00, 0x90, 0x00, 0x91, 0x00, 0x8f, 0x00, 0x8e, 0x00, + 0x92, 0x00, 0x94, 0x00, 0x92, 0x00, 0x90, 0x00, 0x92, 0x00, 0x94, 0x00, + 0x93, 0x00, 0x92, 0x00, 0x92, 0x00, 0x93, 0x00, 0x93, 0x00, 0x94, 0x00, + 0x92, 0x00, 0x92, 0x00, 0x91, 0x00, 0x92, 0x00, 0x92, 0x00, 0x91, 0x00, + 0x91, 0x00, 0x90, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x90, 0x00, + 0x8c, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x8b, 0x00, 0x8b, 0x00, + 0x89, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x84, 0x00, 0x83, 0x00, + 0x82, 0x00, 0x83, 0x00, 0x80, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x7b, 0x00, + 0x79, 0x00, 0x7a, 0x00, 0x76, 0x00, 0x73, 0x00, 0x73, 0x00, 0x74, 0x00, + 0x71, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0x6b, 0x00, 0x69, 0x00, + 0x65, 0x00, 0x65, 0x00, 0x63, 0x00, 0x62, 0x00, 0x5e, 0x00, 0x5e, 0x00, + 0x5d, 0x00, 0x5b, 0x00, 0x56, 0x00, 0x57, 0x00, 0x55, 0x00, 0x52, 0x00, + 0x50, 0x00, 0x51, 0x00, 0x4a, 0x00, 0x49, 0x00, 0x49, 0x00, 0x49, 0x00, + 0x42, 0x00, 0x42, 0x00, 0x41, 0x00, 0x3e, 0x00, 0x3a, 0x00, 0x3c, 0x00, + 0x37, 0x00, 0x35, 0x00, 0x33, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x2a, 0x00, + 0x2a, 0x00, 0x2c, 0x00, 0x25, 0x00, 0x24, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x1b, 0x00, 0x1d, 0x00, 0x16, 0x00, 0x14, 0x00, 0x13, 0x00, 0x15, 0x00, + 0x0d, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfa, 0xff, 0xf9, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0xf1, 0xff, 0xf0, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xe2, 0xff, 0xe1, 0xff, 0xdf, 0xff, 0xe0, 0xff, 0xd9, 0xff, 0xd8, 0xff, + 0xd5, 0xff, 0xd4, 0xff, 0xce, 0xff, 0xce, 0xff, 0xc9, 0xff, 0xca, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xbe, 0xff, 0xbc, 0xff, + 0xb7, 0xff, 0xb9, 0xff, 0xb5, 0xff, 0xb4, 0xff, 0xb0, 0xff, 0xb0, 0xff, + 0xaa, 0xff, 0xaa, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0xa2, 0xff, 0x9f, 0xff, + 0xa0, 0xff, 0xa2, 0xff, 0x9d, 0xff, 0x9b, 0xff, 0x97, 0xff, 0x98, 0xff, + 0x97, 0xff, 0x96, 0xff, 0x91, 0xff, 0x90, 0xff, 0x8d, 0xff, 0x8e, 0xff, + 0x8d, 0xff, 0x8b, 0xff, 0x87, 0xff, 0x89, 0xff, 0x89, 0xff, 0x87, 0xff, + 0x83, 0xff, 0x83, 0xff, 0x83, 0xff, 0x84, 0xff, 0x7f, 0xff, 0x7e, 0xff, + 0x7e, 0xff, 0x7e, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0x79, 0xff, + 0x7a, 0xff, 0x7a, 0xff, 0x77, 0xff, 0x76, 0xff, 0x77, 0xff, 0x78, 0xff, + 0x75, 0xff, 0x75, 0xff, 0x74, 0xff, 0x73, 0xff, 0x74, 0xff, 0x76, 0xff, + 0x73, 0xff, 0x71, 0xff, 0x73, 0xff, 0x73, 0xff, 0x73, 0xff, 0x73, 0xff, + 0x71, 0xff, 0x71, 0xff, 0x72, 0xff, 0x73, 0xff, 0x70, 0xff, 0x70, 0xff, + 0x73, 0xff, 0x72, 0xff, 0x71, 0xff, 0x73, 0xff, 0x74, 0xff, 0x73, 0xff, + 0x71, 0xff, 0x73, 0xff, 0x75, 0xff, 0x75, 0xff, 0x75, 0xff, 0x76, 0xff, + 0x76, 0xff, 0x77, 0xff, 0x79, 0xff, 0x7b, 0xff, 0x77, 0xff, 0x77, 0xff, + 0x7b, 0xff, 0x7c, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x7e, 0xff, 0x7f, 0xff, + 0x82, 0xff, 0x82, 0xff, 0x7f, 0xff, 0x80, 0xff, 0x86, 0xff, 0x84, 0xff, + 0x85, 0xff, 0x86, 0xff, 0x89, 0xff, 0x89, 0xff, 0x8b, 0xff, 0x8c, 0xff, + 0x8f, 0xff, 0x8e, 0xff, 0x90, 0xff, 0x91, 0xff, 0x94, 0xff, 0x95, 0xff, + 0x98, 0xff, 0x98, 0xff, 0x9a, 0xff, 0x9b, 0xff, 0x9f, 0xff, 0x9f, 0xff, + 0xa1, 0xff, 0xa1, 0xff, 0xa8, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0xae, 0xff, 0xaf, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xb6, 0xff, 0xb6, 0xff, + 0xbd, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xc6, 0xff, 0xc6, 0xff, + 0xc8, 0xff, 0xc8, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xd3, 0xff, + 0xd7, 0xff, 0xd7, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xe1, 0xff, 0xe1, 0xff, + 0xe6, 0xff, 0xe5, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xef, 0xff, 0xee, 0xff, + 0xf5, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x05, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x16, 0x00, 0x16, 0x00, 0x19, 0x00, 0x1b, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x25, 0x00, + 0x2d, 0x00, 0x2c, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x36, 0x00, 0x35, 0x00, + 0x37, 0x00, 0x37, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x41, 0x00, 0x41, 0x00, + 0x44, 0x00, 0x43, 0x00, 0x49, 0x00, 0x48, 0x00, 0x4c, 0x00, 0x4c, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x56, 0x00, 0x55, 0x00, 0x57, 0x00, 0x57, 0x00, + 0x5c, 0x00, 0x5d, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x64, 0x00, 0x62, 0x00, + 0x67, 0x00, 0x68, 0x00, 0x67, 0x00, 0x68, 0x00, 0x6d, 0x00, 0x6d, 0x00, + 0x70, 0x00, 0x70, 0x00, 0x72, 0x00, 0x72, 0x00, 0x78, 0x00, 0x75, 0x00, + 0x75, 0x00, 0x76, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x7c, 0x00, 0x7b, 0x00, + 0x7e, 0x00, 0x7f, 0x00, 0x84, 0x00, 0x83, 0x00, 0x81, 0x00, 0x82, 0x00, + 0x86, 0x00, 0x86, 0x00, 0x86, 0x00, 0x87, 0x00, 0x89, 0x00, 0x8a, 0x00, + 0x8b, 0x00, 0x8b, 0x00, 0x8a, 0x00, 0x8a, 0x00, 0x8c, 0x00, 0x8d, 0x00, + 0x8d, 0x00, 0x8c, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x8e, 0x00, 0x8e, 0x00, + 0x8f, 0x00, 0x90, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x8e, 0x00, 0x8e, 0x00, + 0x8f, 0x00, 0x8f, 0x00, 0x8d, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x8d, 0x00, + 0x8c, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8b, 0x00, 0x8a, 0x00, + 0x89, 0x00, 0x8b, 0x00, 0x87, 0x00, 0x87, 0x00, 0x87, 0x00, 0x86, 0x00, + 0x86, 0x00, 0x85, 0x00, 0x80, 0x00, 0x82, 0x00, 0x84, 0x00, 0x82, 0x00, + 0x7c, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x7d, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0x78, 0x00, 0x75, 0x00, 0x74, 0x00, 0x77, 0x00, 0x71, 0x00, 0x6f, 0x00, + 0x70, 0x00, 0x70, 0x00, 0x6c, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x69, 0x00, + 0x65, 0x00, 0x67, 0x00, 0x62, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x59, 0x00, 0x58, 0x00, 0x54, 0x00, 0x54, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x4d, 0x00, 0x4c, 0x00, 0x49, 0x00, 0x48, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x42, 0x00, 0x3f, 0x00, 0x3c, 0x00, 0x3d, 0x00, + 0x39, 0x00, 0x38, 0x00, 0x35, 0x00, 0x36, 0x00, 0x2e, 0x00, 0x2e, 0x00, + 0x2c, 0x00, 0x2c, 0x00, 0x27, 0x00, 0x27, 0x00, 0x22, 0x00, 0x22, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x19, 0x00, 0x19, 0x00, 0x15, 0x00, 0x17, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x02, 0x00, 0x02, 0x00, 0xfd, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf9, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xed, 0xff, 0xef, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xe6, 0xff, 0xe7, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xdc, 0xff, 0xdc, 0xff, + 0xd8, 0xff, 0xda, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xce, 0xff, 0xce, 0xff, + 0xc9, 0xff, 0xcb, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xc1, 0xff, 0xc1, 0xff, + 0xbc, 0xff, 0xbd, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0xb5, 0xff, 0xb5, 0xff, + 0xb0, 0xff, 0xaf, 0xff, 0xac, 0xff, 0xad, 0xff, 0xa7, 0xff, 0xa8, 0xff, + 0xa5, 0xff, 0xa5, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0x9f, 0xff, 0x9f, 0xff, + 0x9b, 0xff, 0x9b, 0xff, 0x96, 0xff, 0x96, 0xff, 0x96, 0xff, 0x95, 0xff, + 0x90, 0xff, 0x91, 0xff, 0x8f, 0xff, 0x8e, 0xff, 0x8d, 0xff, 0x8c, 0xff, + 0x89, 0xff, 0x89, 0xff, 0x88, 0xff, 0x87, 0xff, 0x86, 0xff, 0x85, 0xff, + 0x83, 0xff, 0x83, 0xff, 0x81, 0xff, 0x81, 0xff, 0x81, 0xff, 0x80, 0xff, + 0x7e, 0xff, 0x7f, 0xff, 0x7d, 0xff, 0x7c, 0xff, 0x7b, 0xff, 0x7d, 0xff, + 0x7a, 0xff, 0x78, 0xff, 0x7a, 0xff, 0x7b, 0xff, 0x78, 0xff, 0x77, 0xff, + 0x77, 0xff, 0x77, 0xff, 0x77, 0xff, 0x78, 0xff, 0x76, 0xff, 0x76, 0xff, + 0x77, 0xff, 0x78, 0xff, 0x75, 0xff, 0x75, 0xff, 0x75, 0xff, 0x75, 0xff, + 0x76, 0xff, 0x76, 0xff, 0x77, 0xff, 0x74, 0xff, 0x76, 0xff, 0x77, 0xff, + 0x76, 0xff, 0x77, 0xff, 0x79, 0xff, 0x79, 0xff, 0x77, 0xff, 0x76, 0xff, + 0x78, 0xff, 0x79, 0xff, 0x7a, 0xff, 0x78, 0xff, 0x7b, 0xff, 0x7a, 0xff, + 0x7e, 0xff, 0x7d, 0xff, 0x7c, 0xff, 0x7d, 0xff, 0x81, 0xff, 0x7f, 0xff, + 0x7f, 0xff, 0x80, 0xff, 0x84, 0xff, 0x83, 0xff, 0x85, 0xff, 0x85, 0xff, + 0x87, 0xff, 0x89, 0xff, 0x8a, 0xff, 0x88, 0xff, 0x8c, 0xff, 0x8e, 0xff, + 0x8f, 0xff, 0x8f, 0xff, 0x92, 0xff, 0x92, 0xff, 0x95, 0xff, 0x95, 0xff, + 0x98, 0xff, 0x98, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0x9e, 0xff, 0x9f, 0xff, + 0xa4, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0xab, 0xff, 0xab, 0xff, + 0xae, 0xff, 0xaf, 0xff, 0xb3, 0xff, 0xb2, 0xff, 0xb6, 0xff, 0xb8, 0xff, + 0xbc, 0xff, 0xba, 0xff, 0xc0, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc3, 0xff, + 0xc8, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xcd, 0xff, 0xd0, 0xff, 0xd0, 0xff, + 0xd6, 0xff, 0xd6, 0xff, 0xd9, 0xff, 0xdc, 0xff, 0xdf, 0xff, 0xe0, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xef, 0xff, 0xed, 0xff, + 0xf0, 0xff, 0xf3, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1f, 0x00, 0x24, 0x00, 0x22, 0x00, + 0x25, 0x00, 0x27, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2f, 0x00, 0x30, 0x00, + 0x32, 0x00, 0x34, 0x00, 0x39, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x3a, 0x00, + 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x42, 0x00, 0x48, 0x00, 0x49, 0x00, + 0x4c, 0x00, 0x4c, 0x00, 0x4e, 0x00, 0x50, 0x00, 0x54, 0x00, 0x54, 0x00, + 0x57, 0x00, 0x57, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5d, 0x00, 0x5e, 0x00, + 0x61, 0x00, 0x61, 0x00, 0x65, 0x00, 0x65, 0x00, 0x67, 0x00, 0x69, 0x00, + 0x6a, 0x00, 0x6a, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x6f, 0x00, + 0x74, 0x00, 0x75, 0x00, 0x77, 0x00, 0x76, 0x00, 0x78, 0x00, 0x7a, 0x00, + 0x7a, 0x00, 0x7a, 0x00, 0x7d, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, + 0x82, 0x00, 0x81, 0x00, 0x83, 0x00, 0x85, 0x00, 0x84, 0x00, 0x83, 0x00, + 0x85, 0x00, 0x87, 0x00, 0x86, 0x00, 0x88, 0x00, 0x88, 0x00, 0x89, 0x00, + 0x8b, 0x00, 0x8a, 0x00, 0x88, 0x00, 0x8a, 0x00, 0x8c, 0x00, 0x8b, 0x00, + 0x89, 0x00, 0x8a, 0x00, 0x8d, 0x00, 0x8c, 0x00, 0x89, 0x00, 0x8c, 0x00, + 0x8b, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x8c, 0x00, 0x89, 0x00, 0x8a, 0x00, + 0x8b, 0x00, 0x8b, 0x00, 0x87, 0x00, 0x87, 0x00, 0x89, 0x00, 0x89, 0x00, + 0x85, 0x00, 0x87, 0x00, 0x85, 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, + 0x7f, 0x00, 0x7f, 0x00, 0x81, 0x00, 0x80, 0x00, 0x7e, 0x00, 0x7f, 0x00, + 0x79, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x7a, 0x00, 0x77, 0x00, 0x76, 0x00, + 0x76, 0x00, 0x76, 0x00, 0x74, 0x00, 0x75, 0x00, 0x70, 0x00, 0x6f, 0x00, + 0x70, 0x00, 0x6f, 0x00, 0x6a, 0x00, 0x69, 0x00, 0x68, 0x00, 0x68, 0x00, + 0x65, 0x00, 0x64, 0x00, 0x61, 0x00, 0x60, 0x00, 0x5f, 0x00, 0x60, 0x00, + 0x5c, 0x00, 0x59, 0x00, 0x57, 0x00, 0x58, 0x00, 0x55, 0x00, 0x55, 0x00, + 0x52, 0x00, 0x50, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x4b, 0x00, 0x49, 0x00, + 0x45, 0x00, 0x46, 0x00, 0x44, 0x00, 0x42, 0x00, 0x3d, 0x00, 0x3e, 0x00, + 0x3a, 0x00, 0x3a, 0x00, 0x35, 0x00, 0x34, 0x00, 0x32, 0x00, 0x32, 0x00, + 0x2d, 0x00, 0x2d, 0x00, 0x2a, 0x00, 0x29, 0x00, 0x26, 0x00, 0x24, 0x00, + 0x21, 0x00, 0x1f, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xdf, 0xff, 0xde, 0xff, + 0xdb, 0xff, 0xdc, 0xff, 0xd7, 0xff, 0xd5, 0xff, 0xd1, 0xff, 0xd2, 0xff, + 0xcf, 0xff, 0xcf, 0xff, 0xc8, 0xff, 0xc9, 0xff, 0xc4, 0xff, 0xc5, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xb9, 0xff, 0xb9, 0xff, + 0xb3, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xad, 0xff, 0xad, 0xff, + 0xa9, 0xff, 0xab, 0xff, 0xa8, 0xff, 0xa5, 0xff, 0xa2, 0xff, 0xa5, 0xff, + 0xa1, 0xff, 0x9f, 0xff, 0x9b, 0xff, 0x9e, 0xff, 0x9b, 0xff, 0x9a, 0xff, + 0x96, 0xff, 0x98, 0xff, 0x93, 0xff, 0x94, 0xff, 0x91, 0xff, 0x90, 0xff, + 0x8d, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x8e, 0xff, 0x8a, 0xff, 0x89, 0xff, + 0x88, 0xff, 0x89, 0xff, 0x87, 0xff, 0x87, 0xff, 0x85, 0xff, 0x85, 0xff, + 0x84, 0xff, 0x84, 0xff, 0x81, 0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0xff, + 0x7f, 0xff, 0x7e, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x7e, 0xff, 0x7c, 0xff, + 0x7b, 0xff, 0x7d, 0xff, 0x7c, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x7b, 0xff, + 0x7a, 0xff, 0x79, 0xff, 0x79, 0xff, 0x79, 0xff, 0x79, 0xff, 0x7a, 0xff, + 0x7a, 0xff, 0x79, 0xff, 0x7b, 0xff, 0x7a, 0xff, 0x76, 0xff, 0x76, 0xff, + 0x7d, 0xff, 0x7b, 0xff, 0x78, 0xff, 0x7a, 0xff, 0x7a, 0xff, 0x7b, 0xff, + 0x7b, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x7c, 0xff, 0x7e, 0xff, 0x7e, 0xff, + 0x7d, 0xff, 0x7f, 0xff, 0x82, 0xff, 0x80, 0xff, 0x80, 0xff, 0x82, 0xff, + 0x85, 0xff, 0x82, 0xff, 0x85, 0xff, 0x87, 0xff, 0x87, 0xff, 0x86, 0xff, + 0x8b, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x8f, 0xff, 0x90, 0xff, + 0x90, 0xff, 0x8f, 0xff, 0x95, 0xff, 0x97, 0xff, 0x97, 0xff, 0x96, 0xff, + 0x99, 0xff, 0x9a, 0xff, 0x9d, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0x9f, 0xff, + 0xa3, 0xff, 0xa7, 0xff, 0xa9, 0xff, 0xa6, 0xff, 0xa9, 0xff, 0xac, 0xff, + 0xaf, 0xff, 0xaf, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xb8, 0xff, 0xba, 0xff, + 0xba, 0xff, 0xbb, 0xff, 0xbf, 0xff, 0xc1, 0xff, 0xc2, 0xff, 0xc3, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xcf, 0xff, 0xce, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xd9, 0xff, 0xd6, 0xff, 0xdb, 0xff, 0xdd, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xf0, 0xff, 0xed, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x06, 0x00, 0x03, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x1e, 0x00, + 0x23, 0x00, 0x22, 0x00, 0x26, 0x00, 0x27, 0x00, 0x2c, 0x00, 0x2b, 0x00, + 0x30, 0x00, 0x31, 0x00, 0x33, 0x00, 0x31, 0x00, 0x39, 0x00, 0x3a, 0x00, + 0x3c, 0x00, 0x3b, 0x00, 0x40, 0x00, 0x41, 0x00, 0x45, 0x00, 0x43, 0x00, + 0x45, 0x00, 0x49, 0x00, 0x4c, 0x00, 0x4a, 0x00, 0x4f, 0x00, 0x4f, 0x00, + 0x52, 0x00, 0x53, 0x00, 0x58, 0x00, 0x58, 0x00, 0x58, 0x00, 0x5a, 0x00, + 0x5f, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x62, 0x00, 0x67, 0x00, + 0x67, 0x00, 0x66, 0x00, 0x69, 0x00, 0x6b, 0x00, 0x6d, 0x00, 0x6d, 0x00, + 0x6f, 0x00, 0x6f, 0x00, 0x71, 0x00, 0x72, 0x00, 0x75, 0x00, 0x76, 0x00, + 0x76, 0x00, 0x75, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0x7d, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x80, 0x00, + 0x83, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x84, 0x00, 0x84, 0x00, + 0x83, 0x00, 0x84, 0x00, 0x83, 0x00, 0x84, 0x00, 0x86, 0x00, 0x87, 0x00, + 0x85, 0x00, 0x85, 0x00, 0x87, 0x00, 0x88, 0x00, 0x86, 0x00, 0x84, 0x00, + 0x86, 0x00, 0x86, 0x00, 0x86, 0x00, 0x87, 0x00, 0x87, 0x00, 0x86, 0x00, + 0x85, 0x00, 0x88, 0x00, 0x86, 0x00, 0x85, 0x00, 0x84, 0x00, 0x85, 0x00, + 0x83, 0x00, 0x83, 0x00, 0x83, 0x00, 0x84, 0x00, 0x80, 0x00, 0x7f, 0x00, + 0x80, 0x00, 0x80, 0x00, 0x7e, 0x00, 0x7d, 0x00, 0x7c, 0x00, 0x7b, 0x00, + 0x7a, 0x00, 0x7c, 0x00, 0x78, 0x00, 0x76, 0x00, 0x76, 0x00, 0x78, 0x00, + 0x74, 0x00, 0x73, 0x00, 0x71, 0x00, 0x72, 0x00, 0x71, 0x00, 0x71, 0x00, + 0x6c, 0x00, 0x6c, 0x00, 0x6b, 0x00, 0x6a, 0x00, 0x67, 0x00, 0x67, 0x00, + 0x65, 0x00, 0x65, 0x00, 0x62, 0x00, 0x62, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0x5b, 0x00, 0x5c, 0x00, 0x56, 0x00, 0x57, 0x00, 0x56, 0x00, 0x56, 0x00, + 0x51, 0x00, 0x52, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4c, 0x00, 0x4a, 0x00, + 0x45, 0x00, 0x49, 0x00, 0x44, 0x00, 0x42, 0x00, 0x3d, 0x00, 0x40, 0x00, + 0x3c, 0x00, 0x3b, 0x00, 0x36, 0x00, 0x38, 0x00, 0x33, 0x00, 0x32, 0x00, + 0x2d, 0x00, 0x30, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x26, 0x00, 0x25, 0x00, + 0x21, 0x00, 0x23, 0x00, 0x1e, 0x00, 0x1b, 0x00, 0x17, 0x00, 0x1a, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x0d, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x04, 0x00, 0xfc, 0xff, 0xfd, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xf0, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xe4, 0xff, 0xe5, 0xff, + 0xdf, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xdb, 0xff, 0xd6, 0xff, 0xd5, 0xff, + 0xd2, 0xff, 0xd3, 0xff, 0xce, 0xff, 0xce, 0xff, 0xc9, 0xff, 0xc8, 0xff, + 0xc5, 0xff, 0xc7, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xbe, 0xff, 0xc0, 0xff, + 0xb9, 0xff, 0xb9, 0xff, 0xb5, 0xff, 0xb7, 0xff, 0xb2, 0xff, 0xb2, 0xff, + 0xad, 0xff, 0xb0, 0xff, 0xad, 0xff, 0xac, 0xff, 0xa6, 0xff, 0xa7, 0xff, + 0xa5, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0x9f, 0xff, 0x9d, 0xff, + 0x9b, 0xff, 0x9f, 0xff, 0x97, 0xff, 0x95, 0xff, 0x97, 0xff, 0x98, 0xff, + 0x91, 0xff, 0x93, 0xff, 0x92, 0xff, 0x91, 0xff, 0x8e, 0xff, 0x90, 0xff, + 0x8a, 0xff, 0x88, 0xff, 0x8b, 0xff, 0x8d, 0xff, 0x88, 0xff, 0x85, 0xff, + 0x86, 0xff, 0x8b, 0xff, 0x86, 0xff, 0x83, 0xff, 0x83, 0xff, 0x84, 0xff, + 0x83, 0xff, 0x81, 0xff, 0x80, 0xff, 0x7f, 0xff, 0x80, 0xff, 0x80, 0xff, + 0x7e, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x7d, 0xff, 0x7d, 0xff, 0x7f, 0xff, + 0x7d, 0xff, 0x7a, 0xff, 0x7c, 0xff, 0x7f, 0xff, 0x7e, 0xff, 0x7a, 0xff, + 0x7a, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x7b, 0xff, 0x7d, 0xff, 0x7a, 0xff, + 0x7c, 0xff, 0x7d, 0xff, 0x7e, 0xff, 0x7e, 0xff, 0x7d, 0xff, 0x7b, 0xff, + 0x7f, 0xff, 0x81, 0xff, 0x7f, 0xff, 0x7c, 0xff, 0x80, 0xff, 0x81, 0xff, + 0x81, 0xff, 0x81, 0xff, 0x83, 0xff, 0x82, 0xff, 0x85, 0xff, 0x85, 0xff, + 0x87, 0xff, 0x84, 0xff, 0x88, 0xff, 0x88, 0xff, 0x89, 0xff, 0x88, 0xff, + 0x8a, 0xff, 0x8a, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x90, 0xff, 0x8f, 0xff, + 0x94, 0xff, 0x93, 0xff, 0x96, 0xff, 0x96, 0xff, 0x98, 0xff, 0x98, 0xff, + 0x9b, 0xff, 0x9c, 0xff, 0x9f, 0xff, 0x9e, 0xff, 0xa1, 0xff, 0xa2, 0xff, + 0xa5, 0xff, 0xa5, 0xff, 0xa8, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0xaa, 0xff, + 0xae, 0xff, 0xb0, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xb5, 0xff, 0xb4, 0xff, + 0xbb, 0xff, 0xbc, 0xff, 0xba, 0xff, 0xba, 0xff, 0xc1, 0xff, 0xc2, 0xff, + 0xc2, 0xff, 0xc2, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xcc, 0xff, 0xcd, 0xff, + 0xd0, 0xff, 0xd1, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xda, 0xff, 0xda, 0xff, + 0xdf, 0xff, 0xdf, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe6, 0xff, 0xe8, 0xff, + 0xee, 0xff, 0xec, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf5, 0xff, 0xf6, 0xff, + 0xf9, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0x03, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0c, 0x00, + 0x13, 0x00, 0x14, 0x00, 0x17, 0x00, 0x17, 0x00, 0x1b, 0x00, 0x1c, 0x00, + 0x1f, 0x00, 0x1e, 0x00, 0x23, 0x00, 0x24, 0x00, 0x29, 0x00, 0x28, 0x00, + 0x2b, 0x00, 0x2a, 0x00, 0x30, 0x00, 0x30, 0x00, 0x34, 0x00, 0x32, 0x00, + 0x36, 0x00, 0x38, 0x00, 0x3d, 0x00, 0x3a, 0x00, 0x3e, 0x00, 0x40, 0x00, + 0x45, 0x00, 0x44, 0x00, 0x46, 0x00, 0x46, 0x00, 0x4b, 0x00, 0x4a, 0x00, + 0x4f, 0x00, 0x4d, 0x00, 0x50, 0x00, 0x52, 0x00, 0x57, 0x00, 0x56, 0x00, + 0x59, 0x00, 0x57, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x60, 0x00, 0x5c, 0x00, + 0x61, 0x00, 0x63, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x66, 0x00, + 0x6b, 0x00, 0x6e, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x70, 0x00, 0x72, 0x00, + 0x70, 0x00, 0x70, 0x00, 0x73, 0x00, 0x73, 0x00, 0x79, 0x00, 0x77, 0x00, + 0x75, 0x00, 0x75, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7a, 0x00, 0x79, 0x00, + 0x7c, 0x00, 0x7d, 0x00, 0x81, 0x00, 0x7e, 0x00, 0x7c, 0x00, 0x7d, 0x00, + 0x81, 0x00, 0x80, 0x00, 0x7f, 0x00, 0x7f, 0x00, 0x82, 0x00, 0x7f, 0x00, + 0x82, 0x00, 0x83, 0x00, 0x83, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, + 0x84, 0x00, 0x82, 0x00, 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, 0x84, 0x00, + 0x82, 0x00, 0x80, 0x00, 0x82, 0x00, 0x84, 0x00, 0x80, 0x00, 0x80, 0x00, + 0x81, 0x00, 0x82, 0x00, 0x80, 0x00, 0x81, 0x00, 0x7f, 0x00, 0x7c, 0x00, + 0x7e, 0x00, 0x7d, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0x79, 0x00, + 0x78, 0x00, 0x78, 0x00, 0x77, 0x00, 0x78, 0x00, 0x76, 0x00, 0x74, 0x00, + 0x74, 0x00, 0x74, 0x00, 0x71, 0x00, 0x71, 0x00, 0x70, 0x00, 0x6f, 0x00, + 0x6b, 0x00, 0x6e, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x67, 0x00, 0x67, 0x00, + 0x64, 0x00, 0x65, 0x00, 0x63, 0x00, 0x62, 0x00, 0x5e, 0x00, 0x5f, 0x00, + 0x5c, 0x00, 0x5d, 0x00, 0x59, 0x00, 0x57, 0x00, 0x54, 0x00, 0x55, 0x00, + 0x54, 0x00, 0x52, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4d, 0x00, 0x4c, 0x00, + 0x46, 0x00, 0x46, 0x00, 0x44, 0x00, 0x43, 0x00, 0x40, 0x00, 0x3f, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x39, 0x00, 0x38, 0x00, 0x33, 0x00, 0x34, 0x00, + 0x31, 0x00, 0x30, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x29, 0x00, 0x2a, 0x00, + 0x23, 0x00, 0x24, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1b, 0x00, 0x1d, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x13, 0x00, 0x15, 0x00, 0x0d, 0x00, 0x0e, 0x00, + 0x0b, 0x00, 0x09, 0x00, 0x05, 0x00, 0x07, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfd, 0xff, 0xfe, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xec, 0xff, 0xee, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xe3, 0xff, 0xe4, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xda, 0xff, 0xdb, 0xff, + 0xd6, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xce, 0xff, 0xce, 0xff, + 0xca, 0xff, 0xca, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xc4, 0xff, 0xc4, 0xff, + 0xbe, 0xff, 0xc0, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xb7, 0xff, 0xb8, 0xff, + 0xb4, 0xff, 0xb6, 0xff, 0xb1, 0xff, 0xaf, 0xff, 0xae, 0xff, 0xae, 0xff, + 0xa9, 0xff, 0xaa, 0xff, 0xa7, 0xff, 0xa5, 0xff, 0xa4, 0xff, 0xa5, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0x9c, 0xff, 0x9b, 0xff, + 0x97, 0xff, 0x9a, 0xff, 0x97, 0xff, 0x94, 0xff, 0x94, 0xff, 0x96, 0xff, + 0x8f, 0xff, 0x91, 0xff, 0x91, 0xff, 0x8f, 0xff, 0x8b, 0xff, 0x8e, 0xff, + 0x8d, 0xff, 0x8b, 0xff, 0x88, 0xff, 0x8b, 0xff, 0x88, 0xff, 0x87, 0xff, + 0x87, 0xff, 0x89, 0xff, 0x84, 0xff, 0x85, 0xff, 0x84, 0xff, 0x84, 0xff, + 0x83, 0xff, 0x84, 0xff, 0x82, 0xff, 0x81, 0xff, 0x82, 0xff, 0x84, 0xff, + 0x81, 0xff, 0x80, 0xff, 0x81, 0xff, 0x81, 0xff, 0x80, 0xff, 0x81, 0xff, + 0x7f, 0xff, 0x7f, 0xff, 0x81, 0xff, 0x82, 0xff, 0x7f, 0xff, 0x7f, 0xff, + 0x80, 0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0xff, 0x81, 0xff, 0x80, 0xff, + 0x81, 0xff, 0x80, 0xff, 0x81, 0xff, 0x81, 0xff, 0x83, 0xff, 0x83, 0xff, + 0x85, 0xff, 0x84, 0xff, 0x85, 0xff, 0x85, 0xff, 0x88, 0xff, 0x87, 0xff, + 0x86, 0xff, 0x88, 0xff, 0x8b, 0xff, 0x8a, 0xff, 0x8b, 0xff, 0x8b, 0xff, + 0x8e, 0xff, 0x8e, 0xff, 0x90, 0xff, 0x91, 0xff, 0x92, 0xff, 0x91, 0xff, + 0x95, 0xff, 0x96, 0xff, 0x97, 0xff, 0x94, 0xff, 0x99, 0xff, 0x9b, 0xff, + 0x9b, 0xff, 0x9a, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa2, 0xff, + 0xa5, 0xff, 0xa4, 0xff, 0xa7, 0xff, 0xaa, 0xff, 0xac, 0xff, 0xaa, 0xff, + 0xaf, 0xff, 0xaf, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0xba, 0xff, 0xb8, 0xff, 0xba, 0xff, 0xbb, 0xff, 0xc2, 0xff, 0xc1, 0xff, + 0xc2, 0xff, 0xc2, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xcb, 0xff, 0xcc, 0xff, + 0xd0, 0xff, 0xd0, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd7, 0xff, 0xd9, 0xff, + 0xdc, 0xff, 0xdb, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xe3, 0xff, + 0xe9, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xf2, 0xff, 0xf1, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x0a, 0x00, + 0x0c, 0x00, 0x0d, 0x00, 0x13, 0x00, 0x13, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x1b, 0x00, 0x1d, 0x00, 0x1f, 0x00, 0x1d, 0x00, 0x23, 0x00, 0x25, 0x00, + 0x28, 0x00, 0x26, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x31, 0x00, 0x32, 0x00, 0x38, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3b, 0x00, + 0x42, 0x00, 0x40, 0x00, 0x40, 0x00, 0x41, 0x00, 0x46, 0x00, 0x47, 0x00, + 0x4a, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x4e, 0x00, 0x52, 0x00, 0x50, 0x00, + 0x53, 0x00, 0x53, 0x00, 0x57, 0x00, 0x58, 0x00, 0x5b, 0x00, 0x5c, 0x00, + 0x5c, 0x00, 0x5e, 0x00, 0x62, 0x00, 0x61, 0x00, 0x62, 0x00, 0x64, 0x00, + 0x66, 0x00, 0x66, 0x00, 0x6a, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x6c, 0x00, + 0x6f, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x70, 0x00, 0x72, 0x00, 0x71, 0x00, + 0x74, 0x00, 0x74, 0x00, 0x73, 0x00, 0x73, 0x00, 0x77, 0x00, 0x77, 0x00, + 0x78, 0x00, 0x77, 0x00, 0x79, 0x00, 0x79, 0x00, 0x7c, 0x00, 0x7b, 0x00, + 0x7c, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x7d, 0x00, + 0x7e, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x7f, 0x00, 0x7e, 0x00, + 0x7f, 0x00, 0x80, 0x00, 0x81, 0x00, 0x7e, 0x00, 0x7e, 0x00, 0x80, 0x00, + 0x7f, 0x00, 0x7d, 0x00, 0x7f, 0x00, 0x80, 0x00, 0x7d, 0x00, 0x7c, 0x00, + 0x7e, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x7d, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0x7c, 0x00, 0x7b, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x78, 0x00, 0x78, 0x00, + 0x78, 0x00, 0x78, 0x00, 0x72, 0x00, 0x73, 0x00, 0x76, 0x00, 0x75, 0x00, + 0x70, 0x00, 0x71, 0x00, 0x70, 0x00, 0x70, 0x00, 0x6e, 0x00, 0x6d, 0x00, + 0x6b, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x68, 0x00, 0x65, 0x00, 0x66, 0x00, + 0x65, 0x00, 0x65, 0x00, 0x60, 0x00, 0x61, 0x00, 0x5d, 0x00, 0x5c, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x57, 0x00, 0x58, 0x00, 0x57, 0x00, 0x57, 0x00, + 0x51, 0x00, 0x51, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4b, 0x00, 0x4b, 0x00, + 0x48, 0x00, 0x49, 0x00, 0x45, 0x00, 0x42, 0x00, 0x3d, 0x00, 0x42, 0x00, + 0x3f, 0x00, 0x3b, 0x00, 0x37, 0x00, 0x38, 0x00, 0x37, 0x00, 0x36, 0x00, + 0x31, 0x00, 0x31, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x29, 0x00, 0x28, 0x00, + 0x25, 0x00, 0x25, 0x00, 0x20, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x1c, 0x00, + 0x15, 0x00, 0x18, 0x00, 0x16, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x0c, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x06, 0x00, 0x02, 0x00, 0x03, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfb, 0xff, 0xfb, 0xff, 0xf7, 0xff, 0xf6, 0xff, + 0xf2, 0xff, 0xf4, 0xff, 0xf1, 0xff, 0xee, 0xff, 0xe9, 0xff, 0xea, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xdc, 0xff, 0xdb, 0xff, 0xd5, 0xff, 0xd6, 0xff, 0xd3, 0xff, 0xd2, 0xff, + 0xcd, 0xff, 0xce, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xc7, 0xff, 0xc8, 0xff, + 0xc3, 0xff, 0xc2, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xbc, 0xff, + 0xb7, 0xff, 0xb8, 0xff, 0xb5, 0xff, 0xb4, 0xff, 0xb1, 0xff, 0xb3, 0xff, + 0xad, 0xff, 0xac, 0xff, 0xac, 0xff, 0xae, 0xff, 0xa8, 0xff, 0xa6, 0xff, + 0xa4, 0xff, 0xa7, 0xff, 0xa2, 0xff, 0xa1, 0xff, 0x9e, 0xff, 0xa0, 0xff, + 0x9e, 0xff, 0x9d, 0xff, 0x99, 0xff, 0x99, 0xff, 0x99, 0xff, 0x99, 0xff, + 0x94, 0xff, 0x94, 0xff, 0x93, 0xff, 0x93, 0xff, 0x92, 0xff, 0x93, 0xff, + 0x8f, 0xff, 0x8d, 0xff, 0x8e, 0xff, 0x90, 0xff, 0x8a, 0xff, 0x8b, 0xff, + 0x8b, 0xff, 0x8a, 0xff, 0x88, 0xff, 0x8a, 0xff, 0x87, 0xff, 0x86, 0xff, + 0x86, 0xff, 0x88, 0xff, 0x84, 0xff, 0x84, 0xff, 0x86, 0xff, 0x85, 0xff, + 0x83, 0xff, 0x84, 0xff, 0x84, 0xff, 0x82, 0xff, 0x82, 0xff, 0x84, 0xff, + 0x83, 0xff, 0x81, 0xff, 0x81, 0xff, 0x82, 0xff, 0x84, 0xff, 0x82, 0xff, + 0x82, 0xff, 0x82, 0xff, 0x83, 0xff, 0x84, 0xff, 0x84, 0xff, 0x84, 0xff, + 0x82, 0xff, 0x84, 0xff, 0x87, 0xff, 0x87, 0xff, 0x84, 0xff, 0x85, 0xff, + 0x89, 0xff, 0x88, 0xff, 0x87, 0xff, 0x88, 0xff, 0x89, 0xff, 0x89, 0xff, + 0x8b, 0xff, 0x8d, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0x8d, 0xff, 0x90, 0xff, + 0x90, 0xff, 0x8e, 0xff, 0x92, 0xff, 0x93, 0xff, 0x95, 0xff, 0x93, 0xff, + 0x94, 0xff, 0x96, 0xff, 0x99, 0xff, 0x98, 0xff, 0x9b, 0xff, 0x9b, 0xff, + 0x9e, 0xff, 0x9d, 0xff, 0xa0, 0xff, 0xa1, 0xff, 0xa2, 0xff, 0xa2, 0xff, + 0xa6, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xa7, 0xff, 0xab, 0xff, 0xab, 0xff, + 0xae, 0xff, 0xae, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb7, 0xff, 0xb6, 0xff, + 0xb9, 0xff, 0xba, 0xff, 0xbd, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xbe, 0xff, + 0xc3, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xc5, 0xff, 0xca, 0xff, 0xcc, 0xff, + 0xcf, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xd6, 0xff, 0xd7, 0xff, + 0xda, 0xff, 0xd9, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xe0, 0xff, 0xe2, 0xff, + 0xe6, 0xff, 0xe7, 0xff, 0xea, 0xff, 0xea, 0xff, 0xef, 0xff, 0xf0, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0x04, 0x00, 0x05, 0x00, 0x07, 0x00, 0x09, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x16, 0x00, 0x12, 0x00, + 0x16, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x20, 0x00, 0x22, 0x00, + 0x23, 0x00, 0x24, 0x00, 0x27, 0x00, 0x2a, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x2d, 0x00, 0x2f, 0x00, 0x36, 0x00, 0x35, 0x00, 0x37, 0x00, 0x38, 0x00, + 0x3c, 0x00, 0x3d, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x42, 0x00, 0x42, 0x00, + 0x45, 0x00, 0x47, 0x00, 0x49, 0x00, 0x49, 0x00, 0x4e, 0x00, 0x50, 0x00, + 0x50, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x54, 0x00, 0x56, 0x00, 0x56, 0x00, + 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x5e, 0x00, + 0x63, 0x00, 0x62, 0x00, 0x62, 0x00, 0x62, 0x00, 0x67, 0x00, 0x67, 0x00, + 0x66, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x6b, 0x00, 0x6d, 0x00, 0x6d, 0x00, + 0x6f, 0x00, 0x71, 0x00, 0x70, 0x00, 0x70, 0x00, 0x72, 0x00, 0x72, 0x00, + 0x76, 0x00, 0x76, 0x00, 0x74, 0x00, 0x74, 0x00, 0x75, 0x00, 0x77, 0x00, + 0x78, 0x00, 0x78, 0x00, 0x77, 0x00, 0x77, 0x00, 0x7a, 0x00, 0x7a, 0x00, + 0x79, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x7d, 0x00, + 0x79, 0x00, 0x79, 0x00, 0x7d, 0x00, 0x7d, 0x00, 0x7b, 0x00, 0x7c, 0x00, + 0x7b, 0x00, 0x7d, 0x00, 0x7c, 0x00, 0x7b, 0x00, 0x78, 0x00, 0x7c, 0x00, + 0x7c, 0x00, 0x7b, 0x00, 0x7a, 0x00, 0x7a, 0x00, 0x77, 0x00, 0x7a, 0x00, + 0x79, 0x00, 0x78, 0x00, 0x74, 0x00, 0x76, 0x00, 0x76, 0x00, 0x76, 0x00, + 0x75, 0x00, 0x75, 0x00, 0x71, 0x00, 0x71, 0x00, 0x72, 0x00, 0x72, 0x00, + 0x6f, 0x00, 0x70, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6d, 0x00, + 0x67, 0x00, 0x67, 0x00, 0x68, 0x00, 0x6a, 0x00, 0x64, 0x00, 0x64, 0x00, + 0x61, 0x00, 0x64, 0x00, 0x62, 0x00, 0x61, 0x00, 0x5b, 0x00, 0x5c, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x58, 0x00, 0x58, 0x00, 0x55, 0x00, 0x56, 0x00, + 0x52, 0x00, 0x51, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4c, 0x00, 0x4d, 0x00, + 0x48, 0x00, 0x49, 0x00, 0x45, 0x00, 0x46, 0x00, 0x41, 0x00, 0x41, 0x00, + 0x3d, 0x00, 0x3d, 0x00, 0x3b, 0x00, 0x3a, 0x00, 0x35, 0x00, 0x36, 0x00, + 0x32, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x2a, 0x00, 0x28, 0x00, + 0x26, 0x00, 0x28, 0x00, 0x22, 0x00, 0x22, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x1a, 0x00, 0x1a, 0x00, 0x16, 0x00, 0x17, 0x00, 0x12, 0x00, 0x11, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x06, 0x00, 0x08, 0x00, + 0x03, 0x00, 0x02, 0x00, 0xfb, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xed, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe0, 0xff, 0xe1, 0xff, + 0xde, 0xff, 0xde, 0xff, 0xd9, 0xff, 0xda, 0xff, 0xd5, 0xff, 0xd5, 0xff, + 0xd5, 0xff, 0xd5, 0xff, 0xcc, 0xff, 0xcd, 0xff, 0xca, 0xff, 0xcc, 0xff, + 0xc7, 0xff, 0xc8, 0xff, 0xc2, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0xc0, 0xff, + 0xb9, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xb9, 0xff, 0xb5, 0xff, 0xb6, 0xff, + 0xaf, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xab, 0xff, 0xab, 0xff, + 0xab, 0xff, 0xaa, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0xa5, 0xff, + 0xa0, 0xff, 0xa1, 0xff, 0x9e, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x9d, 0xff, + 0x98, 0xff, 0x99, 0xff, 0x99, 0xff, 0x9a, 0xff, 0x94, 0xff, 0x95, 0xff, + 0x93, 0xff, 0x94, 0xff, 0x94, 0xff, 0x93, 0xff, 0x8e, 0xff, 0x8f, 0xff, + 0x90, 0xff, 0x90, 0xff, 0x8c, 0xff, 0x8e, 0xff, 0x8c, 0xff, 0x8b, 0xff, + 0x8b, 0xff, 0x8c, 0xff, 0x87, 0xff, 0x87, 0xff, 0x8c, 0xff, 0x8b, 0xff, + 0x86, 0xff, 0x87, 0xff, 0x88, 0xff, 0x88, 0xff, 0x87, 0xff, 0x87, 0xff, + 0x85, 0xff, 0x87, 0xff, 0x88, 0xff, 0x87, 0xff, 0x83, 0xff, 0x84, 0xff, + 0x88, 0xff, 0x88, 0xff, 0x84, 0xff, 0x85, 0xff, 0x86, 0xff, 0x87, 0xff, + 0x87, 0xff, 0x86, 0xff, 0x86, 0xff, 0x87, 0xff, 0x8a, 0xff, 0x8a, 0xff, + 0x87, 0xff, 0x87, 0xff, 0x8a, 0xff, 0x8c, 0xff, 0x8a, 0xff, 0x8a, 0xff, + 0x8d, 0xff, 0x8d, 0xff, 0x8e, 0xff, 0x90, 0xff, 0x90, 0xff, 0x8d, 0xff, + 0x91, 0xff, 0x93, 0xff, 0x92, 0xff, 0x93, 0xff, 0x96, 0xff, 0x95, 0xff, + 0x95, 0xff, 0x98, 0xff, 0x9b, 0xff, 0x99, 0xff, 0x9a, 0xff, 0x9d, 0xff, + 0x9f, 0xff, 0x9e, 0xff, 0x9f, 0xff, 0xa2, 0xff, 0xa4, 0xff, 0xa2, 0xff, + 0xa5, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0xa7, 0xff, 0xad, 0xff, 0xad, 0xff, + 0xad, 0xff, 0xae, 0xff, 0xb2, 0xff, 0xb1, 0xff, 0xb4, 0xff, 0xb3, 0xff, + 0xb8, 0xff, 0xba, 0xff, 0xbc, 0xff, 0xbb, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xc3, 0xff, 0xc2, 0xff, 0xc5, 0xff, 0xc4, 0xff, 0xca, 0xff, 0xca, 0xff, + 0xcd, 0xff, 0xcc, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xd6, 0xff, 0xd5, 0xff, + 0xd9, 0xff, 0xd6, 0xff, 0xdd, 0xff, 0xdf, 0xff, 0xe1, 0xff, 0xdf, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xf2, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x07, 0x00, 0x05, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x10, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1c, 0x00, 0x1c, 0x00, + 0x22, 0x00, 0x22, 0x00, 0x25, 0x00, 0x26, 0x00, 0x28, 0x00, 0x27, 0x00, + 0x2b, 0x00, 0x2d, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x34, 0x00, + 0x37, 0x00, 0x37, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3f, 0x00, 0x40, 0x00, + 0x42, 0x00, 0x42, 0x00, 0x48, 0x00, 0x47, 0x00, 0x48, 0x00, 0x47, 0x00, + 0x4d, 0x00, 0x4d, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x51, 0x00, 0x53, 0x00, + 0x57, 0x00, 0x56, 0x00, 0x57, 0x00, 0x59, 0x00, 0x5b, 0x00, 0x5c, 0x00, + 0x5d, 0x00, 0x5e, 0x00, 0x60, 0x00, 0x60, 0x00, 0x63, 0x00, 0x64, 0x00, + 0x65, 0x00, 0x63, 0x00, 0x65, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x69, 0x00, + 0x69, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x6c, 0x00, + 0x71, 0x00, 0x73, 0x00, 0x72, 0x00, 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, + 0x75, 0x00, 0x75, 0x00, 0x75, 0x00, 0x73, 0x00, 0x75, 0x00, 0x77, 0x00, + 0x78, 0x00, 0x75, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, + 0x78, 0x00, 0x77, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x78, 0x00, 0x76, 0x00, + 0x79, 0x00, 0x7a, 0x00, 0x79, 0x00, 0x78, 0x00, 0x78, 0x00, 0x77, 0x00, + 0x76, 0x00, 0x76, 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, 0x00, 0x76, 0x00, + 0x74, 0x00, 0x75, 0x00, 0x77, 0x00, 0x75, 0x00, 0x75, 0x00, 0x73, 0x00, + 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x72, 0x00, 0x6c, 0x00, 0x6c, 0x00, + 0x70, 0x00, 0x71, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x6b, 0x00, + 0x68, 0x00, 0x68, 0x00, 0x67, 0x00, 0x65, 0x00, 0x64, 0x00, 0x65, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x61, 0x00, 0x5e, 0x00, 0x5b, 0x00, 0x5c, 0x00, + 0x5b, 0x00, 0x5b, 0x00, 0x56, 0x00, 0x55, 0x00, 0x54, 0x00, 0x54, 0x00, + 0x53, 0x00, 0x53, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4d, 0x00, 0x4c, 0x00, + 0x47, 0x00, 0x49, 0x00, 0x46, 0x00, 0x44, 0x00, 0x41, 0x00, 0x43, 0x00, + 0x3e, 0x00, 0x3c, 0x00, 0x3b, 0x00, 0x3d, 0x00, 0x35, 0x00, 0x35, 0x00, + 0x36, 0x00, 0x35, 0x00, 0x2c, 0x00, 0x2f, 0x00, 0x2c, 0x00, 0x2c, 0x00, + 0x27, 0x00, 0x29, 0x00, 0x24, 0x00, 0x23, 0x00, 0x21, 0x00, 0x22, 0x00, + 0x1b, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xff, 0xff, 0x02, 0x00, 0xfb, 0xff, 0xfa, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe6, 0xff, 0xe4, 0xff, + 0xe0, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xdc, 0xff, 0xd9, 0xff, 0xdb, 0xff, + 0xd6, 0xff, 0xd5, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xcd, 0xff, 0xcd, 0xff, + 0xcc, 0xff, 0xcc, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xc3, 0xff, + 0xbf, 0xff, 0xc1, 0xff, 0xbc, 0xff, 0xba, 0xff, 0xb9, 0xff, 0xbb, 0xff, + 0xb6, 0xff, 0xb6, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb2, 0xff, + 0xab, 0xff, 0xac, 0xff, 0xac, 0xff, 0xac, 0xff, 0xa7, 0xff, 0xa8, 0xff, + 0xa4, 0xff, 0xa4, 0xff, 0xa5, 0xff, 0xa4, 0xff, 0x9e, 0xff, 0xa0, 0xff, + 0xa0, 0xff, 0x9d, 0xff, 0x9a, 0xff, 0x9d, 0xff, 0x9b, 0xff, 0x98, 0xff, + 0x96, 0xff, 0x99, 0xff, 0x97, 0xff, 0x96, 0xff, 0x95, 0xff, 0x94, 0xff, + 0x92, 0xff, 0x93, 0xff, 0x93, 0xff, 0x91, 0xff, 0x8d, 0xff, 0x90, 0xff, + 0x91, 0xff, 0x8e, 0xff, 0x8d, 0xff, 0x8e, 0xff, 0x8c, 0xff, 0x8b, 0xff, + 0x8c, 0xff, 0x8d, 0xff, 0x8b, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x8c, 0xff, + 0x8b, 0xff, 0x89, 0xff, 0x87, 0xff, 0x88, 0xff, 0x8c, 0xff, 0x8c, 0xff, + 0x87, 0xff, 0x86, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x8a, 0xff, 0x88, 0xff, + 0x8a, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x8b, 0xff, 0x8a, 0xff, + 0x8c, 0xff, 0x8d, 0xff, 0x8e, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x8d, 0xff, + 0x90, 0xff, 0x90, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x93, 0xff, 0x91, 0xff, + 0x92, 0xff, 0x95, 0xff, 0x94, 0xff, 0x92, 0xff, 0x98, 0xff, 0x99, 0xff, + 0x97, 0xff, 0x97, 0xff, 0x9d, 0xff, 0x9c, 0xff, 0x9b, 0xff, 0x9d, 0xff, + 0x9f, 0xff, 0x9f, 0xff, 0xa0, 0xff, 0xa1, 0xff, 0xa4, 0xff, 0xa5, 0xff, + 0xa6, 0xff, 0xa5, 0xff, 0xa7, 0xff, 0xa9, 0xff, 0xad, 0xff, 0xac, 0xff, + 0xad, 0xff, 0xaf, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xb5, 0xff, + 0xb9, 0xff, 0xb9, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xbd, 0xff, 0xbf, 0xff, + 0xc3, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xc9, 0xff, 0xc9, 0xff, + 0xcc, 0xff, 0xcc, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd5, 0xff, 0xd5, 0xff, + 0xd5, 0xff, 0xd6, 0xff, 0xdc, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xdd, 0xff, + 0xe3, 0xff, 0xe3, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xf0, 0xff, 0xef, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf7, 0xff, 0xf5, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0x04, 0x00, 0x02, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x10, 0x00, 0x12, 0x00, 0x18, 0x00, 0x16, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x1f, 0x00, 0x1d, 0x00, 0x21, 0x00, 0x21, 0x00, 0x23, 0x00, 0x26, 0x00, + 0x2a, 0x00, 0x28, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x34, 0x00, 0x35, 0x00, 0x37, 0x00, 0x36, 0x00, 0x3a, 0x00, 0x3b, 0x00, + 0x3d, 0x00, 0x3d, 0x00, 0x42, 0x00, 0x42, 0x00, 0x44, 0x00, 0x44, 0x00, + 0x48, 0x00, 0x49, 0x00, 0x4b, 0x00, 0x4a, 0x00, 0x4e, 0x00, 0x4e, 0x00, + 0x50, 0x00, 0x52, 0x00, 0x54, 0x00, 0x52, 0x00, 0x58, 0x00, 0x59, 0x00, + 0x58, 0x00, 0x57, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x62, 0x00, 0x62, 0x00, 0x65, 0x00, 0x64, 0x00, + 0x66, 0x00, 0x67, 0x00, 0x69, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6b, 0x00, + 0x6d, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6f, 0x00, 0x6f, 0x00, + 0x71, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, 0x00, 0x72, 0x00, + 0x73, 0x00, 0x73, 0x00, 0x73, 0x00, 0x75, 0x00, 0x73, 0x00, 0x74, 0x00, + 0x75, 0x00, 0x76, 0x00, 0x76, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, + 0x77, 0x00, 0x75, 0x00, 0x74, 0x00, 0x76, 0x00, 0x76, 0x00, 0x74, 0x00, + 0x74, 0x00, 0x74, 0x00, 0x75, 0x00, 0x75, 0x00, 0x74, 0x00, 0x73, 0x00, + 0x73, 0x00, 0x74, 0x00, 0x73, 0x00, 0x71, 0x00, 0x70, 0x00, 0x70, 0x00, + 0x71, 0x00, 0x70, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x70, 0x00, 0x6f, 0x00, + 0x6c, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x69, 0x00, + 0x67, 0x00, 0x66, 0x00, 0x65, 0x00, 0x66, 0x00, 0x63, 0x00, 0x60, 0x00, + 0x62, 0x00, 0x63, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5d, 0x00, 0x5c, 0x00, + 0x59, 0x00, 0x5b, 0x00, 0x57, 0x00, 0x56, 0x00, 0x54, 0x00, 0x57, 0x00, + 0x53, 0x00, 0x52, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4d, 0x00, 0x4e, 0x00, + 0x48, 0x00, 0x47, 0x00, 0x47, 0x00, 0x48, 0x00, 0x41, 0x00, 0x41, 0x00, + 0x3f, 0x00, 0x3e, 0x00, 0x3b, 0x00, 0x3d, 0x00, 0x37, 0x00, 0x36, 0x00, + 0x35, 0x00, 0x35, 0x00, 0x30, 0x00, 0x31, 0x00, 0x2d, 0x00, 0x2c, 0x00, + 0x2a, 0x00, 0x2b, 0x00, 0x24, 0x00, 0x24, 0x00, 0x22, 0x00, 0x25, 0x00, + 0x1b, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x12, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x08, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xee, 0xff, 0xef, 0xff, 0xee, 0xff, 0xeb, 0xff, 0xe7, 0xff, 0xea, 0xff, + 0xe6, 0xff, 0xe4, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xde, 0xff, 0xdf, 0xff, + 0xd9, 0xff, 0xd9, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd1, 0xff, 0xd3, 0xff, + 0xcf, 0xff, 0xcf, 0xff, 0xc9, 0xff, 0xcb, 0xff, 0xc8, 0xff, 0xc9, 0xff, + 0xc5, 0xff, 0xc4, 0xff, 0xbf, 0xff, 0xc2, 0xff, 0xbf, 0xff, 0xbe, 0xff, + 0xba, 0xff, 0xbb, 0xff, 0xb6, 0xff, 0xb7, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0xb1, 0xff, 0xb2, 0xff, 0xaf, 0xff, 0xb0, 0xff, 0xaa, 0xff, 0xab, 0xff, + 0xa9, 0xff, 0xaa, 0xff, 0xa6, 0xff, 0xa7, 0xff, 0xa6, 0xff, 0xa8, 0xff, + 0xa1, 0xff, 0xa2, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0x9d, 0xff, 0x9f, 0xff, + 0x9c, 0xff, 0x9d, 0xff, 0x9b, 0xff, 0x9a, 0xff, 0x97, 0xff, 0x99, 0xff, + 0x97, 0xff, 0x98, 0xff, 0x95, 0xff, 0x94, 0xff, 0x93, 0xff, 0x94, 0xff, + 0x93, 0xff, 0x92, 0xff, 0x8f, 0xff, 0x8f, 0xff, 0x91, 0xff, 0x91, 0xff, + 0x8d, 0xff, 0x8e, 0xff, 0x90, 0xff, 0x8f, 0xff, 0x8c, 0xff, 0x8e, 0xff, + 0x8e, 0xff, 0x8e, 0xff, 0x8d, 0xff, 0x8f, 0xff, 0x8b, 0xff, 0x8b, 0xff, + 0x8c, 0xff, 0x8c, 0xff, 0x8c, 0xff, 0x8d, 0xff, 0x8d, 0xff, 0x8c, 0xff, + 0x8b, 0xff, 0x8b, 0xff, 0x8c, 0xff, 0x8d, 0xff, 0x8e, 0xff, 0x8e, 0xff, + 0x8c, 0xff, 0x8e, 0xff, 0x90, 0xff, 0x90, 0xff, 0x90, 0xff, 0x90, 0xff, + 0x91, 0xff, 0x92, 0xff, 0x93, 0xff, 0x93, 0xff, 0x92, 0xff, 0x93, 0xff, + 0x97, 0xff, 0x97, 0xff, 0x95, 0xff, 0x97, 0xff, 0x99, 0xff, 0x99, 0xff, + 0x98, 0xff, 0x99, 0xff, 0x9c, 0xff, 0x9b, 0xff, 0x9f, 0xff, 0xa0, 0xff, + 0xa0, 0xff, 0x9e, 0xff, 0xa2, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xa4, 0xff, + 0xa7, 0xff, 0xa6, 0xff, 0xaa, 0xff, 0xab, 0xff, 0xac, 0xff, 0xab, 0xff, + 0xaf, 0xff, 0xaf, 0xff, 0xb3, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xb6, 0xff, + 0xba, 0xff, 0xb8, 0xff, 0xba, 0xff, 0xbb, 0xff, 0xbe, 0xff, 0xbe, 0xff, + 0xc0, 0xff, 0xc0, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xc8, 0xff, 0xc9, 0xff, + 0xc9, 0xff, 0xc9, 0xff, 0xcf, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd0, 0xff, + 0xd7, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd9, 0xff, 0xde, 0xff, 0xdc, 0xff, + 0xe2, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xec, 0xff, 0xed, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf3, 0xff, 0xf4, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x04, 0x00, 0x02, 0x00, 0x07, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x13, 0x00, 0x15, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x1a, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x23, 0x00, 0x24, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2d, 0x00, + 0x33, 0x00, 0x2f, 0x00, 0x32, 0x00, 0x35, 0x00, 0x37, 0x00, 0x36, 0x00, + 0x3b, 0x00, 0x3a, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x41, 0x00, 0x40, 0x00, + 0x44, 0x00, 0x44, 0x00, 0x47, 0x00, 0x47, 0x00, 0x4a, 0x00, 0x49, 0x00, + 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x4e, 0x00, 0x54, 0x00, 0x54, 0x00, + 0x53, 0x00, 0x53, 0x00, 0x58, 0x00, 0x58, 0x00, 0x5a, 0x00, 0x59, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x5f, 0x00, 0x60, 0x00, + 0x64, 0x00, 0x63, 0x00, 0x64, 0x00, 0x64, 0x00, 0x66, 0x00, 0x65, 0x00, + 0x69, 0x00, 0x69, 0x00, 0x68, 0x00, 0x67, 0x00, 0x6c, 0x00, 0x6c, 0x00, + 0x6d, 0x00, 0x6a, 0x00, 0x6c, 0x00, 0x6e, 0x00, 0x71, 0x00, 0x6e, 0x00, + 0x6d, 0x00, 0x6d, 0x00, 0x70, 0x00, 0x72, 0x00, 0x71, 0x00, 0x6e, 0x00, + 0x70, 0x00, 0x73, 0x00, 0x72, 0x00, 0x70, 0x00, 0x72, 0x00, 0x72, 0x00, + 0x72, 0x00, 0x73, 0x00, 0x73, 0x00, 0x72, 0x00, 0x73, 0x00, 0x72, 0x00, + 0x71, 0x00, 0x72, 0x00, 0x71, 0x00, 0x71, 0x00, 0x72, 0x00, 0x72, 0x00, + 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x6e, 0x00, 0x6f, 0x00, + 0x6f, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x6b, 0x00, 0x6a, 0x00, + 0x6a, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x69, 0x00, 0x67, 0x00, 0x65, 0x00, + 0x66, 0x00, 0x66, 0x00, 0x63, 0x00, 0x62, 0x00, 0x62, 0x00, 0x63, 0x00, + 0x60, 0x00, 0x5f, 0x00, 0x5d, 0x00, 0x5c, 0x00, 0x5b, 0x00, 0x5d, 0x00, + 0x59, 0x00, 0x56, 0x00, 0x56, 0x00, 0x58, 0x00, 0x54, 0x00, 0x53, 0x00, + 0x51, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x50, 0x00, 0x4a, 0x00, 0x49, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x43, 0x00, 0x44, 0x00, 0x44, 0x00, 0x42, 0x00, + 0x3f, 0x00, 0x3e, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x3a, 0x00, + 0x33, 0x00, 0x34, 0x00, 0x34, 0x00, 0x33, 0x00, 0x2d, 0x00, 0x2e, 0x00, + 0x2b, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x28, 0x00, 0x21, 0x00, 0x22, 0x00, + 0x22, 0x00, 0x20, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0d, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfd, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf7, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe0, 0xff, 0xde, 0xff, + 0xde, 0xff, 0xdf, 0xff, 0xdb, 0xff, 0xd8, 0xff, 0xd3, 0xff, 0xd4, 0xff, + 0xd5, 0xff, 0xd4, 0xff, 0xcc, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xca, 0xff, + 0xc8, 0xff, 0xc7, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc4, 0xff, + 0xbd, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xbc, 0xff, 0xb8, 0xff, 0xb9, 0xff, + 0xb6, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xaf, 0xff, 0xaf, 0xff, + 0xaf, 0xff, 0xae, 0xff, 0xab, 0xff, 0xab, 0xff, 0xa9, 0xff, 0xa9, 0xff, + 0xa7, 0xff, 0xa5, 0xff, 0xa3, 0xff, 0xa5, 0xff, 0xa3, 0xff, 0xa1, 0xff, + 0x9e, 0xff, 0xa1, 0xff, 0x9e, 0xff, 0x9d, 0xff, 0x9b, 0xff, 0x9b, 0xff, + 0x99, 0xff, 0x98, 0xff, 0x99, 0xff, 0x98, 0xff, 0x97, 0xff, 0x97, 0xff, + 0x96, 0xff, 0x97, 0xff, 0x94, 0xff, 0x94, 0xff, 0x94, 0xff, 0x95, 0xff, + 0x91, 0xff, 0x92, 0xff, 0x92, 0xff, 0x92, 0xff, 0x90, 0xff, 0x92, 0xff, + 0x90, 0xff, 0x90, 0xff, 0x8f, 0xff, 0x90, 0xff, 0x90, 0xff, 0x90, 0xff, + 0x8e, 0xff, 0x8c, 0xff, 0x90, 0xff, 0x92, 0xff, 0x8f, 0xff, 0x8d, 0xff, + 0x90, 0xff, 0x92, 0xff, 0x90, 0xff, 0x90, 0xff, 0x91, 0xff, 0x91, 0xff, + 0x93, 0xff, 0x92, 0xff, 0x90, 0xff, 0x91, 0xff, 0x94, 0xff, 0x93, 0xff, + 0x92, 0xff, 0x94, 0xff, 0x95, 0xff, 0x93, 0xff, 0x95, 0xff, 0x98, 0xff, + 0x98, 0xff, 0x95, 0xff, 0x99, 0xff, 0x9a, 0xff, 0x98, 0xff, 0x9a, 0xff, + 0x9e, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x9c, 0xff, 0x9e, 0xff, 0x9f, 0xff, + 0xa4, 0xff, 0xa2, 0xff, 0xa1, 0xff, 0xa3, 0xff, 0xa7, 0xff, 0xa6, 0xff, + 0xa7, 0xff, 0xa8, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xab, 0xff, 0xac, 0xff, + 0xb0, 0xff, 0xaf, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xb5, 0xff, + 0xb8, 0xff, 0xb8, 0xff, 0xba, 0xff, 0xba, 0xff, 0xbf, 0xff, 0xbe, 0xff, + 0xbe, 0xff, 0xbf, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc5, 0xff, 0xc6, 0xff, + 0xcb, 0xff, 0xcb, 0xff, 0xce, 0xff, 0xcf, 0xff, 0xd1, 0xff, 0xd1, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0xd7, 0xff, 0xd9, 0xff, 0xda, 0xff, 0xdc, 0xff, + 0xe0, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe8, 0xff, 0xe7, 0xff, + 0xeb, 0xff, 0xed, 0xff, 0xec, 0xff, 0xed, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x07, 0x00, + 0x0c, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x15, 0x00, 0x14, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1f, 0x00, 0x1e, 0x00, + 0x20, 0x00, 0x22, 0x00, 0x26, 0x00, 0x24, 0x00, 0x28, 0x00, 0x2c, 0x00, + 0x2b, 0x00, 0x2a, 0x00, 0x31, 0x00, 0x32, 0x00, 0x30, 0x00, 0x32, 0x00, + 0x38, 0x00, 0x37, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3d, 0x00, 0x3c, 0x00, + 0x3f, 0x00, 0x40, 0x00, 0x42, 0x00, 0x42, 0x00, 0x46, 0x00, 0x46, 0x00, + 0x48, 0x00, 0x47, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x4f, 0x00, 0x4d, 0x00, + 0x51, 0x00, 0x50, 0x00, 0x53, 0x00, 0x53, 0x00, 0x57, 0x00, 0x56, 0x00, + 0x58, 0x00, 0x57, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x5d, 0x00, 0x59, 0x00, + 0x5d, 0x00, 0x60, 0x00, 0x60, 0x00, 0x5f, 0x00, 0x63, 0x00, 0x62, 0x00, + 0x64, 0x00, 0x64, 0x00, 0x64, 0x00, 0x65, 0x00, 0x68, 0x00, 0x68, 0x00, + 0x68, 0x00, 0x68, 0x00, 0x6b, 0x00, 0x6a, 0x00, 0x68, 0x00, 0x67, 0x00, + 0x6c, 0x00, 0x6c, 0x00, 0x6b, 0x00, 0x6a, 0x00, 0x6f, 0x00, 0x6e, 0x00, + 0x6d, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x6f, 0x00, + 0x6e, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x70, 0x00, + 0x6f, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x6d, 0x00, 0x6f, 0x00, + 0x70, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0x6e, 0x00, 0x6d, 0x00, 0x6b, 0x00, + 0x6c, 0x00, 0x6d, 0x00, 0x6a, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x69, 0x00, + 0x67, 0x00, 0x68, 0x00, 0x67, 0x00, 0x68, 0x00, 0x64, 0x00, 0x65, 0x00, + 0x64, 0x00, 0x64, 0x00, 0x61, 0x00, 0x62, 0x00, 0x61, 0x00, 0x61, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0x59, 0x00, 0x5b, 0x00, 0x5d, 0x00, 0x5b, 0x00, + 0x55, 0x00, 0x56, 0x00, 0x56, 0x00, 0x56, 0x00, 0x54, 0x00, 0x53, 0x00, + 0x4f, 0x00, 0x51, 0x00, 0x4e, 0x00, 0x50, 0x00, 0x4a, 0x00, 0x4a, 0x00, + 0x49, 0x00, 0x4a, 0x00, 0x45, 0x00, 0x44, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x3f, 0x00, 0x40, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x39, 0x00, 0x3b, 0x00, + 0x36, 0x00, 0x35, 0x00, 0x34, 0x00, 0x34, 0x00, 0x2d, 0x00, 0x2e, 0x00, + 0x2b, 0x00, 0x2c, 0x00, 0x28, 0x00, 0x29, 0x00, 0x25, 0x00, 0x25, 0x00, + 0x21, 0x00, 0x22, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x13, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0c, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x07, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfd, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, + 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xee, 0xff, 0xec, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe1, 0xff, 0xe4, 0xff, + 0xe2, 0xff, 0xe1, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xda, 0xff, + 0xd5, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xcf, 0xff, 0xce, 0xff, + 0xcb, 0xff, 0xcc, 0xff, 0xcb, 0xff, 0xca, 0xff, 0xc4, 0xff, 0xc5, 0xff, + 0xc4, 0xff, 0xc3, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xb9, 0xff, 0xb9, 0xff, 0xb5, 0xff, 0xb7, 0xff, 0xb5, 0xff, 0xb6, 0xff, + 0xb1, 0xff, 0xae, 0xff, 0xb0, 0xff, 0xb1, 0xff, 0xad, 0xff, 0xab, 0xff, + 0xab, 0xff, 0xab, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0xa4, 0xff, 0xa3, 0xff, + 0xa5, 0xff, 0xa6, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0xa1, 0xff, 0x9d, 0xff, + 0x9e, 0xff, 0xa1, 0xff, 0x9b, 0xff, 0x99, 0xff, 0x9e, 0xff, 0x9d, 0xff, + 0x97, 0xff, 0x97, 0xff, 0x9a, 0xff, 0x98, 0xff, 0x96, 0xff, 0x98, 0xff, + 0x95, 0xff, 0x92, 0xff, 0x97, 0xff, 0x97, 0xff, 0x93, 0xff, 0x92, 0xff, + 0x95, 0xff, 0x94, 0xff, 0x93, 0xff, 0x93, 0xff, 0x94, 0xff, 0x93, 0xff, + 0x92, 0xff, 0x94, 0xff, 0x92, 0xff, 0x92, 0xff, 0x93, 0xff, 0x91, 0xff, + 0x93, 0xff, 0x93, 0xff, 0x94, 0xff, 0x92, 0xff, 0x94, 0xff, 0x94, 0xff, + 0x94, 0xff, 0x94, 0xff, 0x95, 0xff, 0x93, 0xff, 0x95, 0xff, 0x96, 0xff, + 0x97, 0xff, 0x96, 0xff, 0x98, 0xff, 0x97, 0xff, 0x98, 0xff, 0x97, 0xff, + 0x9b, 0xff, 0x99, 0xff, 0x9b, 0xff, 0x9b, 0xff, 0x9d, 0xff, 0x9c, 0xff, + 0x9e, 0xff, 0x9c, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0xa1, 0xff, 0x9f, 0xff, + 0xa3, 0xff, 0xa2, 0xff, 0xa6, 0xff, 0xa4, 0xff, 0xa7, 0xff, 0xa5, 0xff, + 0xab, 0xff, 0xab, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0xb0, 0xff, 0xaf, 0xff, + 0xae, 0xff, 0xae, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xb5, 0xff, + 0xb6, 0xff, 0xb8, 0xff, 0xbe, 0xff, 0xba, 0xff, 0xbb, 0xff, 0xbc, 0xff, + 0xc2, 0xff, 0xbf, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0xc7, 0xff, 0xc9, 0xff, + 0xcb, 0xff, 0xc8, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xd1, 0xff, 0xd0, 0xff, + 0xd3, 0xff, 0xd2, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xdd, 0xff, 0xdb, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe7, 0xff, 0xe2, 0xff, + 0xe9, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xef, 0xff, 0xf0, 0xff, + 0xf5, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xfc, 0xff, 0xfa, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a, 0x00, + 0x09, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1a, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x21, 0x00, 0x21, 0x00, 0x25, 0x00, 0x25, 0x00, + 0x29, 0x00, 0x2a, 0x00, 0x2d, 0x00, 0x2b, 0x00, 0x2f, 0x00, 0x2f, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x38, 0x00, 0x35, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x3d, 0x00, 0x3b, 0x00, 0x3e, 0x00, 0x40, 0x00, 0x42, 0x00, 0x40, 0x00, + 0x46, 0x00, 0x47, 0x00, 0x47, 0x00, 0x47, 0x00, 0x4b, 0x00, 0x4b, 0x00, + 0x4c, 0x00, 0x4d, 0x00, 0x51, 0x00, 0x4e, 0x00, 0x51, 0x00, 0x52, 0x00, + 0x54, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x58, 0x00, 0x58, 0x00, + 0x5c, 0x00, 0x5d, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x5f, 0x00, 0x5f, 0x00, 0x62, 0x00, 0x62, 0x00, 0x63, 0x00, 0x65, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x66, 0x00, 0x66, 0x00, 0x68, 0x00, 0x68, 0x00, + 0x67, 0x00, 0x67, 0x00, 0x6a, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x68, 0x00, + 0x6b, 0x00, 0x69, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x6a, 0x00, + 0x6d, 0x00, 0x6c, 0x00, 0x6a, 0x00, 0x69, 0x00, 0x6d, 0x00, 0x6d, 0x00, + 0x6c, 0x00, 0x6a, 0x00, 0x6b, 0x00, 0x6d, 0x00, 0x6d, 0x00, 0x69, 0x00, + 0x6a, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x6a, 0x00, 0x68, 0x00, + 0x6a, 0x00, 0x6b, 0x00, 0x68, 0x00, 0x67, 0x00, 0x68, 0x00, 0x68, 0x00, + 0x66, 0x00, 0x66, 0x00, 0x65, 0x00, 0x64, 0x00, 0x65, 0x00, 0x64, 0x00, + 0x61, 0x00, 0x61, 0x00, 0x61, 0x00, 0x61, 0x00, 0x5c, 0x00, 0x5c, 0x00, + 0x5d, 0x00, 0x5e, 0x00, 0x5b, 0x00, 0x5a, 0x00, 0x58, 0x00, 0x58, 0x00, + 0x58, 0x00, 0x56, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x53, 0x00, + 0x4e, 0x00, 0x4e, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4b, 0x00, 0x4a, 0x00, + 0x47, 0x00, 0x48, 0x00, 0x47, 0x00, 0x47, 0x00, 0x40, 0x00, 0x41, 0x00, + 0x3f, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x37, 0x00, 0x39, 0x00, + 0x39, 0x00, 0x37, 0x00, 0x32, 0x00, 0x33, 0x00, 0x2e, 0x00, 0x2f, 0x00, + 0x2e, 0x00, 0x2c, 0x00, 0x28, 0x00, 0x29, 0x00, 0x27, 0x00, 0x26, 0x00, + 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x20, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x18, 0x00, 0x17, 0x00, 0x15, 0x00, 0x15, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x06, 0x00, + 0x02, 0x00, 0x03, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xef, 0xff, 0xf1, 0xff, + 0xed, 0xff, 0xed, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xde, 0xff, + 0xd9, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xd1, 0xff, + 0xcf, 0xff, 0xcf, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xc9, 0xff, 0xc9, 0xff, + 0xc6, 0xff, 0xc7, 0xff, 0xc4, 0xff, 0xc3, 0xff, 0xbe, 0xff, 0xbf, 0xff, + 0xbe, 0xff, 0xbf, 0xff, 0xb9, 0xff, 0xbb, 0xff, 0xb8, 0xff, 0xb7, 0xff, + 0xb4, 0xff, 0xb7, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xb3, 0xff, + 0xac, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xac, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0xa6, 0xff, 0xa7, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xa0, 0xff, 0xa3, 0xff, + 0xa4, 0xff, 0xa3, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0x9f, 0xff, 0xa0, 0xff, + 0x9c, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x99, 0xff, 0x9c, 0xff, + 0x99, 0xff, 0x99, 0xff, 0x99, 0xff, 0x9a, 0xff, 0x95, 0xff, 0x97, 0xff, + 0x97, 0xff, 0x98, 0xff, 0x96, 0xff, 0x97, 0xff, 0x95, 0xff, 0x96, 0xff, + 0x97, 0xff, 0x96, 0xff, 0x94, 0xff, 0x96, 0xff, 0x97, 0xff, 0x97, 0xff, + 0x96, 0xff, 0x96, 0xff, 0x95, 0xff, 0x98, 0xff, 0x97, 0xff, 0x95, 0xff, + 0x96, 0xff, 0x99, 0xff, 0x97, 0xff, 0x95, 0xff, 0x97, 0xff, 0x99, 0xff, + 0x99, 0xff, 0x99, 0xff, 0x98, 0xff, 0x98, 0xff, 0x9a, 0xff, 0x9d, 0xff, + 0x9a, 0xff, 0x99, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0x9f, 0xff, 0x9e, 0xff, + 0x9f, 0xff, 0x9f, 0xff, 0xa2, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0xa0, 0xff, + 0xa7, 0xff, 0xa5, 0xff, 0xa3, 0xff, 0xa4, 0xff, 0xaa, 0xff, 0xa9, 0xff, + 0xa8, 0xff, 0xa8, 0xff, 0xad, 0xff, 0xad, 0xff, 0xac, 0xff, 0xac, 0xff, + 0xb1, 0xff, 0xb0, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0xb9, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xc0, 0xff, 0xbf, 0xff, 0xc2, 0xff, 0xc3, 0xff, 0xc7, 0xff, 0xc7, 0xff, + 0xc8, 0xff, 0xc9, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xd0, 0xff, 0xd0, 0xff, + 0xd0, 0xff, 0xd1, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xd8, 0xff, + 0xdc, 0xff, 0xdd, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x0f, 0x00, 0x11, 0x00, 0x18, 0x00, 0x14, 0x00, 0x16, 0x00, 0x1a, 0x00, + 0x1d, 0x00, 0x1b, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x21, 0x00, 0x23, 0x00, + 0x27, 0x00, 0x27, 0x00, 0x29, 0x00, 0x28, 0x00, 0x2b, 0x00, 0x2d, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x33, 0x00, 0x32, 0x00, 0x36, 0x00, 0x37, 0x00, + 0x37, 0x00, 0x38, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3e, 0x00, + 0x42, 0x00, 0x41, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x45, 0x00, + 0x4a, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4e, 0x00, 0x4f, 0x00, + 0x52, 0x00, 0x51, 0x00, 0x50, 0x00, 0x51, 0x00, 0x58, 0x00, 0x57, 0x00, + 0x56, 0x00, 0x56, 0x00, 0x58, 0x00, 0x58, 0x00, 0x5c, 0x00, 0x5c, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x5e, 0x00, 0x5f, 0x00, + 0x63, 0x00, 0x61, 0x00, 0x62, 0x00, 0x62, 0x00, 0x63, 0x00, 0x63, 0x00, + 0x65, 0x00, 0x66, 0x00, 0x65, 0x00, 0x64, 0x00, 0x64, 0x00, 0x66, 0x00, + 0x69, 0x00, 0x68, 0x00, 0x67, 0x00, 0x67, 0x00, 0x6a, 0x00, 0x69, 0x00, + 0x68, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x6b, 0x00, + 0x69, 0x00, 0x68, 0x00, 0x68, 0x00, 0x6a, 0x00, 0x6a, 0x00, 0x67, 0x00, + 0x67, 0x00, 0x69, 0x00, 0x68, 0x00, 0x67, 0x00, 0x67, 0x00, 0x67, 0x00, + 0x67, 0x00, 0x66, 0x00, 0x65, 0x00, 0x64, 0x00, 0x66, 0x00, 0x65, 0x00, + 0x67, 0x00, 0x65, 0x00, 0x62, 0x00, 0x63, 0x00, 0x63, 0x00, 0x61, 0x00, + 0x5f, 0x00, 0x62, 0x00, 0x61, 0x00, 0x5d, 0x00, 0x5c, 0x00, 0x5e, 0x00, + 0x5e, 0x00, 0x59, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x59, 0x00, 0x58, 0x00, + 0x55, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x52, 0x00, 0x50, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x4e, 0x00, 0x4b, 0x00, 0x49, 0x00, 0x4c, 0x00, + 0x4a, 0x00, 0x47, 0x00, 0x42, 0x00, 0x43, 0x00, 0x47, 0x00, 0x44, 0x00, + 0x3e, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3a, 0x00, 0x3a, 0x00, + 0x37, 0x00, 0x37, 0x00, 0x36, 0x00, 0x35, 0x00, 0x2f, 0x00, 0x30, 0x00, + 0x31, 0x00, 0x2e, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x27, 0x00, + 0x23, 0x00, 0x23, 0x00, 0x21, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x1e, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x18, 0x00, 0x17, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf0, 0xff, 0xef, 0xff, 0xee, 0xff, 0xee, 0xff, 0xe9, 0xff, 0xe9, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xdd, 0xff, + 0xdf, 0xff, 0xe0, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd9, 0xff, 0xd7, 0xff, + 0xd1, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xcc, 0xff, 0xcd, 0xff, + 0xc9, 0xff, 0xc8, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc3, 0xff, 0xc3, 0xff, + 0xc0, 0xff, 0xc1, 0xff, 0xbe, 0xff, 0xbd, 0xff, 0xbb, 0xff, 0xbb, 0xff, + 0xb8, 0xff, 0xb9, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0xb0, 0xff, 0xb0, 0xff, 0xaf, 0xff, 0xb0, 0xff, 0xac, 0xff, 0xac, 0xff, + 0xab, 0xff, 0xad, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0xa7, 0xff, 0xa9, 0xff, + 0xa6, 0xff, 0xa6, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0xa1, 0xff, 0xa2, 0xff, + 0xa0, 0xff, 0xa1, 0xff, 0x9f, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0x9d, 0xff, + 0x9c, 0xff, 0x9f, 0xff, 0x9c, 0xff, 0x9b, 0xff, 0x9a, 0xff, 0x9b, 0xff, + 0x98, 0xff, 0x9b, 0xff, 0x9a, 0xff, 0x99, 0xff, 0x99, 0xff, 0x9b, 0xff, + 0x98, 0xff, 0x97, 0xff, 0x98, 0xff, 0x99, 0xff, 0x98, 0xff, 0x98, 0xff, + 0x99, 0xff, 0x99, 0xff, 0x98, 0xff, 0x97, 0xff, 0x98, 0xff, 0x99, 0xff, + 0x9a, 0xff, 0x99, 0xff, 0x99, 0xff, 0x9a, 0xff, 0x9b, 0xff, 0x9a, 0xff, + 0x9b, 0xff, 0x9a, 0xff, 0x9c, 0xff, 0x9c, 0xff, 0x9d, 0xff, 0x9c, 0xff, + 0x9b, 0xff, 0x9d, 0xff, 0x9f, 0xff, 0x9e, 0xff, 0x9e, 0xff, 0x9e, 0xff, + 0xa2, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0xa1, 0xff, 0xa2, 0xff, 0xa4, 0xff, + 0xa6, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0xa6, 0xff, 0xab, 0xff, 0xa9, 0xff, + 0xa7, 0xff, 0xa9, 0xff, 0xaf, 0xff, 0xae, 0xff, 0xad, 0xff, 0xad, 0xff, + 0xb0, 0xff, 0xb1, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xb4, 0xff, + 0xba, 0xff, 0xba, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xbe, 0xff, 0xbf, 0xff, + 0xc1, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xc3, 0xff, 0xc8, 0xff, 0xc6, 0xff, + 0xc5, 0xff, 0xc7, 0xff, 0xcc, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xce, 0xff, + 0xd2, 0xff, 0xd0, 0xff, 0xd5, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd6, 0xff, + 0xdb, 0xff, 0xdb, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xe0, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xed, 0xff, 0xec, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf7, 0xff, 0xf5, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x0e, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x18, 0x00, 0x19, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1f, 0x00, 0x21, 0x00, + 0x22, 0x00, 0x21, 0x00, 0x26, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, + 0x2c, 0x00, 0x2b, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x35, 0x00, 0x37, 0x00, 0x36, 0x00, 0x36, 0x00, 0x3a, 0x00, 0x3b, 0x00, + 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x44, 0x00, 0x44, 0x00, + 0x45, 0x00, 0x44, 0x00, 0x47, 0x00, 0x48, 0x00, 0x4b, 0x00, 0x49, 0x00, + 0x4c, 0x00, 0x4d, 0x00, 0x50, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, + 0x54, 0x00, 0x53, 0x00, 0x54, 0x00, 0x56, 0x00, 0x58, 0x00, 0x56, 0x00, + 0x58, 0x00, 0x59, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5c, 0x00, 0x5c, 0x00, + 0x5d, 0x00, 0x5e, 0x00, 0x61, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x62, 0x00, 0x61, 0x00, 0x63, 0x00, 0x62, 0x00, 0x62, 0x00, 0x63, 0x00, + 0x66, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x66, 0x00, + 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x65, 0x00, 0x66, 0x00, 0x65, 0x00, + 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x65, 0x00, 0x67, 0x00, 0x68, 0x00, + 0x66, 0x00, 0x66, 0x00, 0x67, 0x00, 0x65, 0x00, 0x64, 0x00, 0x66, 0x00, + 0x65, 0x00, 0x64, 0x00, 0x62, 0x00, 0x64, 0x00, 0x65, 0x00, 0x63, 0x00, + 0x62, 0x00, 0x63, 0x00, 0x63, 0x00, 0x60, 0x00, 0x5f, 0x00, 0x60, 0x00, + 0x5f, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5a, 0x00, 0x5b, 0x00, + 0x5c, 0x00, 0x59, 0x00, 0x58, 0x00, 0x5a, 0x00, 0x59, 0x00, 0x55, 0x00, + 0x55, 0x00, 0x55, 0x00, 0x51, 0x00, 0x52, 0x00, 0x52, 0x00, 0x50, 0x00, + 0x4d, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x4c, 0x00, 0x4a, 0x00, 0x49, 0x00, + 0x47, 0x00, 0x49, 0x00, 0x47, 0x00, 0x44, 0x00, 0x42, 0x00, 0x42, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x3c, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x3d, 0x00, + 0x36, 0x00, 0x35, 0x00, 0x35, 0x00, 0x36, 0x00, 0x30, 0x00, 0x31, 0x00, + 0x2e, 0x00, 0x2e, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x28, 0x00, 0x27, 0x00, + 0x24, 0x00, 0x26, 0x00, 0x23, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x20, 0x00, + 0x1b, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x17, 0x00, 0x14, 0x00, 0x16, 0x00, + 0x11, 0x00, 0x12, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xef, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xef, 0xff, 0xea, 0xff, 0xec, 0xff, + 0xe9, 0xff, 0xe9, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe1, 0xff, 0xe2, 0xff, + 0xdf, 0xff, 0xdf, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xd8, 0xff, 0xda, 0xff, + 0xd6, 0xff, 0xd5, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xcf, 0xff, 0xce, 0xff, + 0xcc, 0xff, 0xce, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xc7, 0xff, + 0xc4, 0xff, 0xc5, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, + 0xbb, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xba, 0xff, 0xb7, 0xff, 0xb7, 0xff, + 0xb4, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0xb2, 0xff, 0xb1, 0xff, 0xaf, 0xff, + 0xae, 0xff, 0xaf, 0xff, 0xad, 0xff, 0xac, 0xff, 0xa8, 0xff, 0xab, 0xff, + 0xaa, 0xff, 0xa9, 0xff, 0xa6, 0xff, 0xa8, 0xff, 0xa7, 0xff, 0xa6, 0xff, + 0xa3, 0xff, 0xa4, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xa3, 0xff, + 0x9f, 0xff, 0xa1, 0xff, 0xa3, 0xff, 0xa1, 0xff, 0x9c, 0xff, 0x9f, 0xff, + 0x9f, 0xff, 0x9d, 0xff, 0x9c, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x9a, 0xff, + 0x9d, 0xff, 0xa0, 0xff, 0x9b, 0xff, 0x9a, 0xff, 0x9d, 0xff, 0x9c, 0xff, + 0x9a, 0xff, 0x9c, 0xff, 0x9a, 0xff, 0x99, 0xff, 0x9d, 0xff, 0x9c, 0xff, + 0x99, 0xff, 0x9c, 0xff, 0x9e, 0xff, 0x9b, 0xff, 0x9a, 0xff, 0x9b, 0xff, + 0x9e, 0xff, 0x9e, 0xff, 0x9c, 0xff, 0x9d, 0xff, 0x9d, 0xff, 0x9f, 0xff, + 0x9e, 0xff, 0x9f, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0xa3, 0xff, + 0xa2, 0xff, 0xa1, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xa5, 0xff, 0xa5, 0xff, + 0xa7, 0xff, 0xa4, 0xff, 0xa7, 0xff, 0xa9, 0xff, 0xab, 0xff, 0xaa, 0xff, + 0xab, 0xff, 0xab, 0xff, 0xae, 0xff, 0xaf, 0xff, 0xad, 0xff, 0xac, 0xff, + 0xb2, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xb6, 0xff, + 0xb8, 0xff, 0xba, 0xff, 0xb9, 0xff, 0xba, 0xff, 0xbe, 0xff, 0xbf, 0xff, + 0xc0, 0xff, 0xbf, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc5, 0xff, 0xc4, 0xff, + 0xc6, 0xff, 0xc8, 0xff, 0xcd, 0xff, 0xcb, 0xff, 0xcd, 0xff, 0xcd, 0xff, + 0xd2, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd8, 0xff, + 0xdc, 0xff, 0xda, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xe3, 0xff, 0xe1, 0xff, + 0xe2, 0xff, 0xe4, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xf0, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf4, 0xff, + 0xf9, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x11, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x16, 0x00, 0x16, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1d, 0x00, 0x1b, 0x00, + 0x1f, 0x00, 0x1f, 0x00, 0x22, 0x00, 0x22, 0x00, 0x26, 0x00, 0x25, 0x00, + 0x28, 0x00, 0x29, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x2e, 0x00, 0x2e, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x33, 0x00, 0x39, 0x00, 0x39, 0x00, + 0x39, 0x00, 0x39, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x3f, 0x00, 0x40, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x46, 0x00, 0x44, 0x00, 0x47, 0x00, 0x47, 0x00, + 0x4a, 0x00, 0x47, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4d, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x51, 0x00, 0x51, 0x00, 0x55, 0x00, 0x54, 0x00, + 0x54, 0x00, 0x56, 0x00, 0x57, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, + 0x5a, 0x00, 0x59, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, + 0x5e, 0x00, 0x5d, 0x00, 0x60, 0x00, 0x60, 0x00, 0x61, 0x00, 0x60, 0x00, + 0x62, 0x00, 0x64, 0x00, 0x62, 0x00, 0x60, 0x00, 0x62, 0x00, 0x63, 0x00, + 0x64, 0x00, 0x62, 0x00, 0x63, 0x00, 0x65, 0x00, 0x65, 0x00, 0x62, 0x00, + 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x63, 0x00, 0x65, 0x00, 0x65, 0x00, + 0x63, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x64, 0x00, 0x62, 0x00, + 0x62, 0x00, 0x63, 0x00, 0x62, 0x00, 0x62, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x5d, 0x00, 0x5d, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0x5d, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5b, 0x00, 0x59, 0x00, 0x5b, 0x00, + 0x58, 0x00, 0x57, 0x00, 0x57, 0x00, 0x57, 0x00, 0x55, 0x00, 0x55, 0x00, + 0x54, 0x00, 0x52, 0x00, 0x50, 0x00, 0x53, 0x00, 0x51, 0x00, 0x4e, 0x00, + 0x4d, 0x00, 0x4e, 0x00, 0x4c, 0x00, 0x4b, 0x00, 0x49, 0x00, 0x4a, 0x00, + 0x48, 0x00, 0x46, 0x00, 0x44, 0x00, 0x44, 0x00, 0x43, 0x00, 0x41, 0x00, + 0x40, 0x00, 0x42, 0x00, 0x3b, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x3a, 0x00, + 0x39, 0x00, 0x3b, 0x00, 0x35, 0x00, 0x34, 0x00, 0x34, 0x00, 0x35, 0x00, + 0x2e, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x2a, 0x00, + 0x27, 0x00, 0x26, 0x00, 0x25, 0x00, 0x24, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x1e, 0x00, 0x1d, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x18, 0x00, 0x15, 0x00, + 0x12, 0x00, 0x14, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0e, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x05, 0x00, 0x06, 0x00, 0x02, 0x00, 0x04, 0x00, + 0xfe, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xee, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xeb, 0xff, 0xe4, 0xff, 0xe2, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xd9, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xd3, 0xff, 0xd2, 0xff, + 0xd0, 0xff, 0xd1, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xcb, 0xff, 0xcb, 0xff, + 0xc8, 0xff, 0xc7, 0xff, 0xc5, 0xff, 0xc5, 0xff, 0xc3, 0xff, 0xc2, 0xff, + 0xbf, 0xff, 0xc0, 0xff, 0xbe, 0xff, 0xbd, 0xff, 0xba, 0xff, 0xbb, 0xff, + 0xb9, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0xb4, 0xff, 0xb6, 0xff, + 0xb4, 0xff, 0xb3, 0xff, 0xb1, 0xff, 0xb2, 0xff, 0xae, 0xff, 0xad, 0xff, + 0xae, 0xff, 0xae, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xaa, 0xff, + 0xa9, 0xff, 0xa8, 0xff, 0xa4, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xa5, 0xff, + 0xa1, 0xff, 0xa4, 0xff, 0xa5, 0xff, 0xa4, 0xff, 0xa2, 0xff, 0xa2, 0xff, + 0xa2, 0xff, 0xa2, 0xff, 0xa0, 0xff, 0xa1, 0xff, 0xa0, 0xff, 0xa0, 0xff, + 0xa0, 0xff, 0xa0, 0xff, 0x9d, 0xff, 0x9f, 0xff, 0xa1, 0xff, 0xa0, 0xff, + 0x9c, 0xff, 0x9d, 0xff, 0xa0, 0xff, 0x9f, 0xff, 0x9b, 0xff, 0x9d, 0xff, + 0x9f, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x9e, 0xff, 0x9f, 0xff, + 0xa1, 0xff, 0xa0, 0xff, 0x9e, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x9f, 0xff, + 0xa1, 0xff, 0xa1, 0xff, 0xa3, 0xff, 0xa2, 0xff, 0xa2, 0xff, 0xa2, 0xff, + 0xa4, 0xff, 0xa5, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xa7, 0xff, 0xa7, 0xff, + 0xa5, 0xff, 0xa7, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xac, 0xff, + 0xad, 0xff, 0xad, 0xff, 0xaf, 0xff, 0xae, 0xff, 0xb1, 0xff, 0xb1, 0xff, + 0xb4, 0xff, 0xb5, 0xff, 0xb4, 0xff, 0xb5, 0xff, 0xb7, 0xff, 0xb7, 0xff, + 0xb8, 0xff, 0xba, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xbf, 0xff, 0xbf, 0xff, + 0xc0, 0xff, 0xc2, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc6, 0xff, + 0xc9, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xcb, 0xff, 0xce, 0xff, 0xce, 0xff, + 0xd2, 0xff, 0xd1, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xd9, 0xff, + 0xda, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xe3, 0xff, 0xe4, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xea, 0xff, + 0xef, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x06, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x0e, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x15, 0x00, 0x17, 0x00, 0x1a, 0x00, 0x19, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x24, 0x00, 0x22, 0x00, + 0x25, 0x00, 0x24, 0x00, 0x28, 0x00, 0x2c, 0x00, 0x2a, 0x00, 0x28, 0x00, + 0x2f, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2d, 0x00, 0x35, 0x00, 0x35, 0x00, + 0x35, 0x00, 0x37, 0x00, 0x3b, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x3d, 0x00, + 0x3e, 0x00, 0x3d, 0x00, 0x40, 0x00, 0x41, 0x00, 0x43, 0x00, 0x42, 0x00, + 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x48, 0x00, 0x4a, 0x00, 0x49, 0x00, + 0x4e, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4d, 0x00, 0x50, 0x00, 0x4f, 0x00, + 0x53, 0x00, 0x53, 0x00, 0x52, 0x00, 0x52, 0x00, 0x56, 0x00, 0x55, 0x00, + 0x56, 0x00, 0x57, 0x00, 0x5a, 0x00, 0x58, 0x00, 0x58, 0x00, 0x5b, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x5b, 0x00, 0x5a, 0x00, 0x5e, 0x00, 0x5e, 0x00, + 0x5e, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x5f, 0x00, + 0x5f, 0x00, 0x5e, 0x00, 0x61, 0x00, 0x5f, 0x00, 0x61, 0x00, 0x61, 0x00, + 0x61, 0x00, 0x60, 0x00, 0x62, 0x00, 0x63, 0x00, 0x62, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x62, 0x00, 0x62, 0x00, 0x62, 0x00, 0x60, 0x00, 0x5f, 0x00, + 0x61, 0x00, 0x61, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x5e, 0x00, + 0x5f, 0x00, 0x60, 0x00, 0x5c, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, + 0x59, 0x00, 0x59, 0x00, 0x5b, 0x00, 0x5b, 0x00, 0x57, 0x00, 0x58, 0x00, + 0x57, 0x00, 0x58, 0x00, 0x56, 0x00, 0x56, 0x00, 0x53, 0x00, 0x53, 0x00, + 0x52, 0x00, 0x52, 0x00, 0x50, 0x00, 0x51, 0x00, 0x4f, 0x00, 0x50, 0x00, + 0x4c, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x48, 0x00, 0x49, 0x00, + 0x47, 0x00, 0x46, 0x00, 0x45, 0x00, 0x46, 0x00, 0x42, 0x00, 0x40, 0x00, + 0x41, 0x00, 0x43, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x3b, 0x00, 0x3a, 0x00, + 0x37, 0x00, 0x39, 0x00, 0x35, 0x00, 0x34, 0x00, 0x32, 0x00, 0x34, 0x00, + 0x2e, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x29, 0x00, 0x28, 0x00, + 0x28, 0x00, 0x29, 0x00, 0x25, 0x00, 0x23, 0x00, 0x21, 0x00, 0x23, 0x00, + 0x1e, 0x00, 0x20, 0x00, 0x1d, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x19, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x10, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x08, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xea, 0xff, + 0xe6, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0xff, + 0xda, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xd5, 0xff, 0xd6, 0xff, + 0xd4, 0xff, 0xd3, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xcc, 0xff, 0xcd, 0xff, + 0xcc, 0xff, 0xcc, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xc6, 0xff, + 0xc3, 0xff, 0xc2, 0xff, 0xc0, 0xff, 0xc2, 0xff, 0xbe, 0xff, 0xbd, 0xff, + 0xbd, 0xff, 0xbd, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb8, 0xff, + 0xb4, 0xff, 0xb6, 0xff, 0xb5, 0xff, 0xb3, 0xff, 0xb0, 0xff, 0xb1, 0xff, + 0xad, 0xff, 0xb0, 0xff, 0xae, 0xff, 0xac, 0xff, 0xab, 0xff, 0xad, 0xff, + 0xaa, 0xff, 0xab, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0xa5, 0xff, 0xa8, 0xff, + 0xa9, 0xff, 0xa8, 0xff, 0xa4, 0xff, 0xa5, 0xff, 0xa4, 0xff, 0xa7, 0xff, + 0xa5, 0xff, 0xa3, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xa1, 0xff, 0xa4, 0xff, + 0xa3, 0xff, 0xa2, 0xff, 0x9e, 0xff, 0xa0, 0xff, 0xa2, 0xff, 0xa4, 0xff, + 0xa0, 0xff, 0x9e, 0xff, 0xa2, 0xff, 0xa3, 0xff, 0xa0, 0xff, 0x9f, 0xff, + 0xa0, 0xff, 0xa2, 0xff, 0xa1, 0xff, 0xa2, 0xff, 0x9f, 0xff, 0xa0, 0xff, + 0xa4, 0xff, 0xa3, 0xff, 0xa0, 0xff, 0xa0, 0xff, 0xa4, 0xff, 0xa4, 0xff, + 0xa2, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xa3, 0xff, 0xa4, 0xff, 0xa6, 0xff, + 0xa5, 0xff, 0xa4, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0xa8, 0xff, 0xa7, 0xff, + 0xa9, 0xff, 0xa9, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xac, 0xff, + 0xaf, 0xff, 0xac, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xaf, 0xff, + 0xb6, 0xff, 0xb4, 0xff, 0xb1, 0xff, 0xb4, 0xff, 0xba, 0xff, 0xb6, 0xff, + 0xb7, 0xff, 0xb9, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xbf, 0xff, 0xbe, 0xff, + 0xbf, 0xff, 0xc1, 0xff, 0xc5, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc5, 0xff, + 0xc9, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xcb, 0xff, 0xce, 0xff, 0xcb, 0xff, + 0xcf, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd5, 0xff, 0xd6, 0xff, + 0xd6, 0xff, 0xd9, 0xff, 0xdb, 0xff, 0xda, 0xff, 0xde, 0xff, 0xdf, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe7, 0xff, + 0xea, 0xff, 0xe9, 0xff, 0xed, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xf4, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x04, 0x00, 0x08, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0e, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x16, 0x00, + 0x1c, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x23, 0x00, 0x22, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, + 0x2d, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x31, 0x00, 0x31, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x35, 0x00, 0x36, 0x00, 0x3a, 0x00, 0x39, 0x00, + 0x3c, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x40, 0x00, 0x42, 0x00, + 0x43, 0x00, 0x41, 0x00, 0x46, 0x00, 0x46, 0x00, 0x46, 0x00, 0x46, 0x00, + 0x4a, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4f, 0x00, 0x4f, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x52, 0x00, 0x52, 0x00, 0x54, 0x00, 0x52, 0x00, + 0x54, 0x00, 0x55, 0x00, 0x57, 0x00, 0x54, 0x00, 0x55, 0x00, 0x57, 0x00, + 0x58, 0x00, 0x56, 0x00, 0x59, 0x00, 0x59, 0x00, 0x5b, 0x00, 0x5b, 0x00, + 0x5b, 0x00, 0x59, 0x00, 0x5b, 0x00, 0x5d, 0x00, 0x5f, 0x00, 0x5b, 0x00, + 0x5c, 0x00, 0x5e, 0x00, 0x60, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5e, 0x00, + 0x60, 0x00, 0x5f, 0x00, 0x5e, 0x00, 0x5d, 0x00, 0x5f, 0x00, 0x5f, 0x00, + 0x5e, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5d, 0x00, + 0x5e, 0x00, 0x5e, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x5c, 0x00, 0x5a, 0x00, + 0x5d, 0x00, 0x5e, 0x00, 0x5c, 0x00, 0x5b, 0x00, 0x5a, 0x00, 0x5b, 0x00, + 0x5c, 0x00, 0x5a, 0x00, 0x57, 0x00, 0x57, 0x00, 0x58, 0x00, 0x58, 0x00, + 0x55, 0x00, 0x55, 0x00, 0x54, 0x00, 0x55, 0x00, 0x55, 0x00, 0x54, 0x00, + 0x4f, 0x00, 0x4e, 0x00, 0x51, 0x00, 0x51, 0x00, 0x4f, 0x00, 0x4d, 0x00, + 0x4a, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x48, 0x00, 0x46, 0x00, + 0x48, 0x00, 0x47, 0x00, 0x43, 0x00, 0x41, 0x00, 0x43, 0x00, 0x44, 0x00, + 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3d, 0x00, 0x3a, 0x00, 0x3b, 0x00, + 0x3a, 0x00, 0x39, 0x00, 0x35, 0x00, 0x35, 0x00, 0x34, 0x00, 0x33, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2a, 0x00, 0x2a, 0x00, + 0x28, 0x00, 0x27, 0x00, 0x26, 0x00, 0x27, 0x00, 0x24, 0x00, 0x20, 0x00, + 0x1f, 0x00, 0x21, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x18, 0x00, 0x17, 0x00, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x09, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xfe, 0xff, 0xfc, 0xff, + 0xf8, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf6, 0xff, 0xf1, 0xff, 0xf4, 0xff, + 0xf2, 0xff, 0xf0, 0xff, 0xec, 0xff, 0xef, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xe8, 0xff, 0xe8, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe2, 0xff, 0xe4, 0xff, + 0xdf, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xde, 0xff, 0xda, 0xff, 0xd9, 0xff, + 0xd6, 0xff, 0xd7, 0xff, 0xd4, 0xff, 0xd5, 0xff, 0xcf, 0xff, 0xcf, 0xff, + 0xcf, 0xff, 0xcf, 0xff, 0xca, 0xff, 0xca, 0xff, 0xc7, 0xff, 0xc8, 0xff, + 0xc7, 0xff, 0xc9, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc2, 0xff, 0xc2, 0xff, + 0xbe, 0xff, 0xbf, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xbb, 0xff, 0xbc, 0xff, + 0xb8, 0xff, 0xb9, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb7, 0xff, + 0xb3, 0xff, 0xb3, 0xff, 0xb1, 0xff, 0xb2, 0xff, 0xae, 0xff, 0xb0, 0xff, + 0xae, 0xff, 0xaf, 0xff, 0xad, 0xff, 0xad, 0xff, 0xac, 0xff, 0xad, 0xff, + 0xaa, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0xab, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0xa6, 0xff, 0xa5, 0xff, 0xa7, 0xff, 0xa9, 0xff, 0xa3, 0xff, 0xa3, 0xff, + 0xa7, 0xff, 0xa7, 0xff, 0xa1, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xa4, 0xff, + 0xa4, 0xff, 0xa3, 0xff, 0xa2, 0xff, 0xa4, 0xff, 0xa2, 0xff, 0xa2, 0xff, + 0xa1, 0xff, 0xa3, 0xff, 0xa4, 0xff, 0xa3, 0xff, 0xa2, 0xff, 0xa3, 0xff, + 0xa4, 0xff, 0xa4, 0xff, 0xa3, 0xff, 0xa4, 0xff, 0xa4, 0xff, 0xa5, 0xff, + 0xa3, 0xff, 0xa5, 0xff, 0xa6, 0xff, 0xa5, 0xff, 0xa7, 0xff, 0xa7, 0xff, + 0xa6, 0xff, 0xa7, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0xab, 0xff, + 0xab, 0xff, 0xaa, 0xff, 0xac, 0xff, 0xad, 0xff, 0xac, 0xff, 0xad, 0xff, + 0xb0, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xb1, 0xff, 0xb3, 0xff, 0xb2, 0xff, + 0xb4, 0xff, 0xb4, 0xff, 0xb5, 0xff, 0xb6, 0xff, 0xba, 0xff, 0xb8, 0xff, + 0xba, 0xff, 0xba, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xbd, 0xff, 0xbf, 0xff, + 0xc3, 0xff, 0xc0, 0xff, 0xc2, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc4, 0xff, + 0xc9, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xca, 0xff, 0xcd, 0xff, 0xcc, 0xff, + 0xcf, 0xff, 0xcf, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xd5, 0xff, + 0xd8, 0xff, 0xd7, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xdf, 0xff, 0xdd, 0xff, + 0xe0, 0xff, 0xe0, 0xff, 0xe5, 0xff, 0xe3, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xea, 0xff, 0xe8, 0xff, 0xed, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xed, 0xff, + 0xf2, 0xff, 0xf1, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf5, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x17, 0x00, 0x16, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x21, 0x00, 0x20, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x30, 0x00, 0x2f, 0x00, + 0x31, 0x00, 0x31, 0x00, 0x33, 0x00, 0x34, 0x00, 0x37, 0x00, 0x35, 0x00, + 0x37, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x40, 0x00, 0x3f, 0x00, + 0x3f, 0x00, 0x3f, 0x00, 0x43, 0x00, 0x41, 0x00, 0x43, 0x00, 0x44, 0x00, + 0x45, 0x00, 0x46, 0x00, 0x4b, 0x00, 0x4a, 0x00, 0x48, 0x00, 0x48, 0x00, + 0x4f, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x4f, 0x00, + 0x51, 0x00, 0x52, 0x00, 0x54, 0x00, 0x52, 0x00, 0x54, 0x00, 0x55, 0x00, + 0x54, 0x00, 0x53, 0x00, 0x56, 0x00, 0x58, 0x00, 0x57, 0x00, 0x56, 0x00, + 0x57, 0x00, 0x58, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x59, 0x00, 0x58, 0x00, + 0x5a, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x5c, 0x00, 0x5b, 0x00, + 0x5b, 0x00, 0x5c, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x5d, 0x00, 0x5d, 0x00, + 0x5b, 0x00, 0x5a, 0x00, 0x5d, 0x00, 0x5c, 0x00, 0x5a, 0x00, 0x5a, 0x00, + 0x5b, 0x00, 0x5b, 0x00, 0x5d, 0x00, 0x5b, 0x00, 0x58, 0x00, 0x59, 0x00, + 0x5c, 0x00, 0x5c, 0x00, 0x59, 0x00, 0x58, 0x00, 0x58, 0x00, 0x58, 0x00, + 0x58, 0x00, 0x58, 0x00, 0x56, 0x00, 0x56, 0x00, 0x55, 0x00, 0x56, 0x00, + 0x55, 0x00, 0x54, 0x00, 0x53, 0x00, 0x53, 0x00, 0x52, 0x00, 0x50, 0x00, + 0x50, 0x00, 0x52, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4d, 0x00, + 0x4b, 0x00, 0x4d, 0x00, 0x4a, 0x00, 0x48, 0x00, 0x48, 0x00, 0x4a, 0x00, + 0x46, 0x00, 0x44, 0x00, 0x44, 0x00, 0x45, 0x00, 0x41, 0x00, 0x41, 0x00, + 0x40, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x3b, 0x00, + 0x37, 0x00, 0x39, 0x00, 0x36, 0x00, 0x35, 0x00, 0x33, 0x00, 0x34, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x2b, 0x00, 0x2b, 0x00, + 0x29, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x26, 0x00, 0x22, 0x00, 0x23, 0x00, + 0x20, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x16, 0x00, 0x13, 0x00, 0x0f, 0x00, 0x12, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf8, 0xff, + 0xf4, 0xff, 0xf2, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xee, 0xff, 0xed, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xeb, 0xff, 0xe6, 0xff, 0xe3, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdb, 0xff, 0xdd, 0xff, + 0xda, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd7, 0xff, 0xd4, 0xff, 0xd3, 0xff, + 0xd0, 0xff, 0xd1, 0xff, 0xce, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xcc, 0xff, + 0xc9, 0xff, 0xca, 0xff, 0xc9, 0xff, 0xc7, 0xff, 0xc4, 0xff, 0xc3, 0xff, + 0xc2, 0xff, 0xc3, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xbe, 0xff, 0xbe, 0xff, + 0xbc, 0xff, 0xbc, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xba, 0xff, 0xb9, 0xff, + 0xb6, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0xb2, 0xff, 0xaf, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xad, 0xff, 0xae, 0xff, + 0xae, 0xff, 0xac, 0xff, 0xad, 0xff, 0xae, 0xff, 0xaa, 0xff, 0xa8, 0xff, + 0xab, 0xff, 0xab, 0xff, 0xa8, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0xa8, 0xff, + 0xa7, 0xff, 0xa8, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0xa8, 0xff, 0xa7, 0xff, + 0xa4, 0xff, 0xa4, 0xff, 0xa6, 0xff, 0xa6, 0xff, 0xa3, 0xff, 0xa4, 0xff, + 0xa6, 0xff, 0xa5, 0xff, 0xa5, 0xff, 0xa6, 0xff, 0xa5, 0xff, 0xa5, 0xff, + 0xa6, 0xff, 0xa5, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xa6, 0xff, 0xa6, 0xff, + 0xa8, 0xff, 0xa7, 0xff, 0xa6, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0xa8, 0xff, + 0xa8, 0xff, 0xa9, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xab, 0xff, 0xad, 0xff, + 0xac, 0xff, 0xac, 0xff, 0xad, 0xff, 0xae, 0xff, 0xaf, 0xff, 0xb0, 0xff, + 0xb0, 0xff, 0xb1, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0xb5, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xb7, 0xff, 0xbb, 0xff, 0xba, 0xff, + 0xb7, 0xff, 0xba, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xbf, 0xff, 0xbf, 0xff, + 0xc0, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xc2, 0xff, 0xc4, 0xff, + 0xc9, 0xff, 0xca, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xce, 0xff, + 0xd0, 0xff, 0xcf, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xd6, 0xff, 0xd6, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xe1, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xe5, 0xff, 0xe5, 0xff, + 0xe8, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x05, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x0e, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x11, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x17, 0x00, 0x19, 0x00, 0x1b, 0x00, 0x1a, 0x00, + 0x1d, 0x00, 0x1c, 0x00, 0x20, 0x00, 0x21, 0x00, 0x26, 0x00, 0x22, 0x00, + 0x25, 0x00, 0x25, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x2b, 0x00, + 0x2e, 0x00, 0x2f, 0x00, 0x32, 0x00, 0x31, 0x00, 0x34, 0x00, 0x32, 0x00, + 0x35, 0x00, 0x36, 0x00, 0x3a, 0x00, 0x38, 0x00, 0x39, 0x00, 0x39, 0x00, + 0x40, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x43, 0x00, 0x42, 0x00, + 0x41, 0x00, 0x42, 0x00, 0x46, 0x00, 0x44, 0x00, 0x46, 0x00, 0x48, 0x00, + 0x49, 0x00, 0x47, 0x00, 0x4b, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x4a, 0x00, + 0x4b, 0x00, 0x4d, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x51, 0x00, 0x51, 0x00, + 0x52, 0x00, 0x52, 0x00, 0x51, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, + 0x54, 0x00, 0x56, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x57, 0x00, + 0x58, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, + 0x58, 0x00, 0x58, 0x00, 0x58, 0x00, 0x5a, 0x00, 0x59, 0x00, 0x5a, 0x00, + 0x58, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x59, 0x00, 0x59, 0x00, 0x5b, 0x00, + 0x58, 0x00, 0x58, 0x00, 0x59, 0x00, 0x59, 0x00, 0x59, 0x00, 0x57, 0x00, + 0x57, 0x00, 0x59, 0x00, 0x58, 0x00, 0x56, 0x00, 0x55, 0x00, 0x58, 0x00, + 0x56, 0x00, 0x55, 0x00, 0x54, 0x00, 0x54, 0x00, 0x55, 0x00, 0x57, 0x00, + 0x51, 0x00, 0x4f, 0x00, 0x54, 0x00, 0x53, 0x00, 0x4f, 0x00, 0x4f, 0x00, + 0x50, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4b, 0x00, 0x4c, 0x00, + 0x4d, 0x00, 0x4b, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x47, 0x00, + 0x46, 0x00, 0x46, 0x00, 0x42, 0x00, 0x43, 0x00, 0x43, 0x00, 0x41, 0x00, + 0x3e, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x3d, 0x00, 0x3a, 0x00, 0x3b, 0x00, + 0x39, 0x00, 0x39, 0x00, 0x36, 0x00, 0x39, 0x00, 0x36, 0x00, 0x34, 0x00, + 0x32, 0x00, 0x32, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x2c, 0x00, 0x2c, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x26, 0x00, 0x26, 0x00, 0x24, 0x00, 0x25, 0x00, + 0x23, 0x00, 0x21, 0x00, 0x1d, 0x00, 0x20, 0x00, 0x1e, 0x00, 0x1a, 0x00, + 0x17, 0x00, 0x19, 0x00, 0x16, 0x00, 0x15, 0x00, 0x13, 0x00, 0x14, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xed, 0xff, 0xed, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe0, 0xff, 0xdf, 0xff, + 0xdd, 0xff, 0xde, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xd7, 0xff, + 0xd3, 0xff, 0xd3, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xcf, 0xff, 0xce, 0xff, + 0xcc, 0xff, 0xce, 0xff, 0xca, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xc8, 0xff, + 0xc7, 0xff, 0xc8, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xc0, 0xff, 0xc1, 0xff, + 0xc0, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xbb, 0xff, 0xbc, 0xff, 0xbc, 0xff, + 0xba, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0xb5, 0xff, + 0xb5, 0xff, 0xb5, 0xff, 0xb3, 0xff, 0xb1, 0xff, 0xb3, 0xff, 0xb4, 0xff, + 0xb0, 0xff, 0xae, 0xff, 0xaf, 0xff, 0xb1, 0xff, 0xb0, 0xff, 0xae, 0xff, + 0xad, 0xff, 0xad, 0xff, 0xac, 0xff, 0xac, 0xff, 0xab, 0xff, 0xaa, 0xff, + 0xaa, 0xff, 0xa9, 0xff, 0xab, 0xff, 0xab, 0xff, 0xa9, 0xff, 0xa8, 0xff, + 0xa9, 0xff, 0xa8, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0xa7, 0xff, + 0xa7, 0xff, 0xa7, 0xff, 0xa8, 0xff, 0xa7, 0xff, 0xa7, 0xff, 0xa6, 0xff, + 0xa9, 0xff, 0xa7, 0xff, 0xa9, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0xa7, 0xff, + 0xaa, 0xff, 0xab, 0xff, 0xaa, 0xff, 0xa8, 0xff, 0xab, 0xff, 0xac, 0xff, + 0xaa, 0xff, 0xaa, 0xff, 0xad, 0xff, 0xac, 0xff, 0xac, 0xff, 0xac, 0xff, + 0xae, 0xff, 0xad, 0xff, 0xaf, 0xff, 0xae, 0xff, 0xaf, 0xff, 0xaf, 0xff, + 0xb2, 0xff, 0xb1, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb6, 0xff, 0xb6, 0xff, + 0xb5, 0xff, 0xb6, 0xff, 0xbb, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xba, 0xff, + 0xbb, 0xff, 0xbb, 0xff, 0xbd, 0xff, 0xbc, 0xff, 0xc1, 0xff, 0xbf, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0xc4, 0xff, 0xc3, 0xff, 0xc7, 0xff, 0xc6, 0xff, + 0xc9, 0xff, 0xc7, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xcc, 0xff, + 0xcf, 0xff, 0xcf, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xd1, 0xff, + 0xd8, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd8, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xdf, 0xff, 0xdd, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe5, 0xff, 0xe5, 0xff, + 0xe7, 0xff, 0xe6, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xed, 0xff, 0xec, 0xff, + 0xef, 0xff, 0xee, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf3, 0xff, + 0xfa, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0x00, 0x00, 0xfd, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x05, 0x00, 0x01, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x15, 0x00, 0x17, 0x00, 0x17, 0x00, 0x16, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x1e, 0x00, + 0x24, 0x00, 0x25, 0x00, 0x24, 0x00, 0x24, 0x00, 0x29, 0x00, 0x2a, 0x00, + 0x2b, 0x00, 0x29, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x31, 0x00, 0x31, 0x00, 0x36, 0x00, 0x35, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x3a, 0x00, 0x39, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3f, 0x00, 0x3a, 0x00, + 0x41, 0x00, 0x42, 0x00, 0x41, 0x00, 0x40, 0x00, 0x43, 0x00, 0x43, 0x00, + 0x48, 0x00, 0x46, 0x00, 0x44, 0x00, 0x45, 0x00, 0x4c, 0x00, 0x49, 0x00, + 0x4a, 0x00, 0x49, 0x00, 0x4e, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x4b, 0x00, + 0x4f, 0x00, 0x50, 0x00, 0x50, 0x00, 0x4d, 0x00, 0x52, 0x00, 0x52, 0x00, + 0x52, 0x00, 0x52, 0x00, 0x52, 0x00, 0x50, 0x00, 0x53, 0x00, 0x55, 0x00, + 0x54, 0x00, 0x50, 0x00, 0x55, 0x00, 0x57, 0x00, 0x56, 0x00, 0x55, 0x00, + 0x56, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x57, 0x00, + 0x57, 0x00, 0x57, 0x00, 0x56, 0x00, 0x57, 0x00, 0x55, 0x00, 0x58, 0x00, + 0x57, 0x00, 0x55, 0x00, 0x59, 0x00, 0x58, 0x00, 0x54, 0x00, 0x56, 0x00, + 0x58, 0x00, 0x57, 0x00, 0x54, 0x00, 0x54, 0x00, 0x56, 0x00, 0x54, 0x00, + 0x55, 0x00, 0x56, 0x00, 0x55, 0x00, 0x54, 0x00, 0x51, 0x00, 0x53, 0x00, + 0x54, 0x00, 0x51, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x50, 0x00, 0x4e, 0x00, + 0x4e, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4b, 0x00, + 0x48, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x47, 0x00, 0x49, 0x00, 0x47, 0x00, + 0x43, 0x00, 0x44, 0x00, 0x46, 0x00, 0x42, 0x00, 0x41, 0x00, 0x40, 0x00, + 0x40, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3d, 0x00, 0x39, 0x00, 0x3a, 0x00, + 0x39, 0x00, 0x39, 0x00, 0x37, 0x00, 0x35, 0x00, 0x32, 0x00, 0x34, 0x00, + 0x33, 0x00, 0x31, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x2c, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x27, 0x00, 0x28, 0x00, 0x25, 0x00, 0x23, 0x00, + 0x22, 0x00, 0x22, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x1b, 0x00, 0x1a, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x17, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x08, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xfb, 0xff, + 0xf7, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xee, 0xff, 0xef, 0xff, + 0xf0, 0xff, 0xef, 0xff, 0xec, 0xff, 0xec, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xe7, 0xff, 0xe6, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe1, 0xff, 0xe2, 0xff, + 0xde, 0xff, 0xde, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xda, 0xff, 0xd8, 0xff, + 0xd6, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xcf, 0xff, 0xd3, 0xff, + 0xd1, 0xff, 0xd0, 0xff, 0xcc, 0xff, 0xcd, 0xff, 0xcb, 0xff, 0xca, 0xff, + 0xc8, 0xff, 0xcb, 0xff, 0xc5, 0xff, 0xc4, 0xff, 0xc6, 0xff, 0xc6, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xc0, 0xff, + 0xbc, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xb8, 0xff, 0xb8, 0xff, + 0xb8, 0xff, 0xb8, 0xff, 0xb5, 0xff, 0xb5, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0xb4, 0xff, 0xb1, 0xff, 0xb0, 0xff, 0xb1, 0xff, 0xb0, 0xff, 0xb0, 0xff, + 0xb0, 0xff, 0xaf, 0xff, 0xae, 0xff, 0xb0, 0xff, 0xb1, 0xff, 0xae, 0xff, + 0xac, 0xff, 0xae, 0xff, 0xad, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xac, 0xff, + 0xad, 0xff, 0xab, 0xff, 0xaa, 0xff, 0xab, 0xff, 0xab, 0xff, 0xab, 0xff, + 0xa9, 0xff, 0xab, 0xff, 0xa9, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xaa, 0xff, + 0xaa, 0xff, 0xaa, 0xff, 0xab, 0xff, 0xaa, 0xff, 0xab, 0xff, 0xaa, 0xff, + 0xaa, 0xff, 0xaa, 0xff, 0xac, 0xff, 0xad, 0xff, 0xab, 0xff, 0xaa, 0xff, + 0xae, 0xff, 0xae, 0xff, 0xab, 0xff, 0xad, 0xff, 0xb0, 0xff, 0xaf, 0xff, + 0xae, 0xff, 0xae, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xb3, 0xff, 0xb1, 0xff, + 0xb2, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xb5, 0xff, 0xb4, 0xff, 0xb6, 0xff, + 0xb8, 0xff, 0xb6, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb9, 0xff, + 0xbd, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xc0, 0xff, 0xc0, 0xff, + 0xc0, 0xff, 0xc0, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xc4, 0xff, + 0xc6, 0xff, 0xc7, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xcd, 0xff, + 0xce, 0xff, 0xcf, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd2, 0xff, 0xd4, 0xff, + 0xd6, 0xff, 0xd4, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xda, 0xff, + 0xdf, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe0, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xee, 0xff, 0xed, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf2, 0xff, + 0xf8, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x05, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0e, 0x00, + 0x0f, 0x00, 0x0d, 0x00, 0x11, 0x00, 0x13, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1d, 0x00, 0x1c, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x23, 0x00, 0x22, 0x00, 0x25, 0x00, 0x25, 0x00, + 0x27, 0x00, 0x26, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2b, 0x00, + 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x38, 0x00, 0x36, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3c, 0x00, 0x3a, 0x00, + 0x3b, 0x00, 0x3b, 0x00, 0x40, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x40, 0x00, + 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x42, 0x00, 0x46, 0x00, 0x47, 0x00, + 0x48, 0x00, 0x47, 0x00, 0x48, 0x00, 0x47, 0x00, 0x49, 0x00, 0x4c, 0x00, + 0x4d, 0x00, 0x4b, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x4f, 0x00, 0x50, 0x00, + 0x4d, 0x00, 0x4b, 0x00, 0x52, 0x00, 0x50, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x51, 0x00, 0x51, 0x00, 0x54, 0x00, 0x54, 0x00, 0x51, 0x00, 0x51, 0x00, + 0x56, 0x00, 0x54, 0x00, 0x52, 0x00, 0x53, 0x00, 0x55, 0x00, 0x54, 0x00, + 0x54, 0x00, 0x56, 0x00, 0x56, 0x00, 0x54, 0x00, 0x56, 0x00, 0x55, 0x00, + 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, + 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x53, 0x00, 0x52, 0x00, 0x52, 0x00, + 0x53, 0x00, 0x53, 0x00, 0x52, 0x00, 0x51, 0x00, 0x4f, 0x00, 0x50, 0x00, + 0x51, 0x00, 0x51, 0x00, 0x4e, 0x00, 0x4d, 0x00, 0x4f, 0x00, 0x4f, 0x00, + 0x4f, 0x00, 0x4c, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4b, 0x00, + 0x48, 0x00, 0x48, 0x00, 0x49, 0x00, 0x48, 0x00, 0x45, 0x00, 0x46, 0x00, + 0x46, 0x00, 0x44, 0x00, 0x43, 0x00, 0x43, 0x00, 0x3f, 0x00, 0x40, 0x00, + 0x40, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3b, 0x00, 0x39, 0x00, + 0x39, 0x00, 0x39, 0x00, 0x37, 0x00, 0x35, 0x00, 0x34, 0x00, 0x35, 0x00, + 0x34, 0x00, 0x33, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x2f, 0x00, + 0x2b, 0x00, 0x29, 0x00, 0x28, 0x00, 0x2b, 0x00, 0x28, 0x00, 0x24, 0x00, + 0x22, 0x00, 0x25, 0x00, 0x23, 0x00, 0x20, 0x00, 0x1d, 0x00, 0x1e, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x19, 0x00, 0x16, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x16, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x09, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x08, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x03, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xf1, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe1, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xda, 0xff, 0xda, 0xff, + 0xdb, 0xff, 0xdc, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd3, 0xff, 0xd5, 0xff, + 0xd4, 0xff, 0xd3, 0xff, 0xd0, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xd0, 0xff, + 0xcb, 0xff, 0xca, 0xff, 0xca, 0xff, 0xcb, 0xff, 0xc8, 0xff, 0xc7, 0xff, + 0xc4, 0xff, 0xc4, 0xff, 0xc3, 0xff, 0xc5, 0xff, 0xbf, 0xff, 0xc1, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xba, 0xff, 0xbb, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb8, 0xff, 0xb9, 0xff, + 0xb5, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xb3, 0xff, 0xb3, 0xff, + 0xb3, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xb1, 0xff, 0xaf, 0xff, 0xb0, 0xff, + 0xaf, 0xff, 0xad, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xae, 0xff, 0xae, 0xff, + 0xae, 0xff, 0xad, 0xff, 0xab, 0xff, 0xaf, 0xff, 0xae, 0xff, 0xab, 0xff, + 0xad, 0xff, 0xaf, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xae, 0xff, 0xad, 0xff, + 0xab, 0xff, 0xab, 0xff, 0xae, 0xff, 0xac, 0xff, 0xad, 0xff, 0xac, 0xff, + 0xae, 0xff, 0xac, 0xff, 0xae, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xac, 0xff, + 0xad, 0xff, 0xb0, 0xff, 0xb1, 0xff, 0xaf, 0xff, 0xaf, 0xff, 0xae, 0xff, + 0xb2, 0xff, 0xb3, 0xff, 0xb1, 0xff, 0xb1, 0xff, 0xb3, 0xff, 0xb3, 0xff, + 0xb6, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb9, 0xff, 0xb8, 0xff, + 0xb5, 0xff, 0xb6, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xbc, 0xff, 0xbb, 0xff, + 0xbc, 0xff, 0xbd, 0xff, 0xc0, 0xff, 0xbe, 0xff, 0xc0, 0xff, 0xc0, 0xff, + 0xc2, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0xc5, 0xff, 0xc6, 0xff, + 0xca, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xc9, 0xff, 0xce, 0xff, 0xcc, 0xff, + 0xcd, 0xff, 0xcd, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xd4, 0xff, 0xd3, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd8, 0xff, + 0xdd, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe1, 0xff, 0xe1, 0xff, + 0xe5, 0xff, 0xe3, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xeb, 0xff, 0xea, 0xff, + 0xeb, 0xff, 0xec, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf4, 0xff, 0xf3, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x0e, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x13, 0x00, 0x15, 0x00, + 0x16, 0x00, 0x13, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1c, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x27, 0x00, 0x29, 0x00, 0x29, 0x00, + 0x2d, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x32, 0x00, 0x32, 0x00, + 0x32, 0x00, 0x34, 0x00, 0x35, 0x00, 0x35, 0x00, 0x36, 0x00, 0x39, 0x00, + 0x3a, 0x00, 0x39, 0x00, 0x3b, 0x00, 0x3d, 0x00, 0x3f, 0x00, 0x3e, 0x00, + 0x3d, 0x00, 0x40, 0x00, 0x42, 0x00, 0x40, 0x00, 0x42, 0x00, 0x42, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x46, 0x00, 0x46, 0x00, 0x46, 0x00, 0x47, 0x00, + 0x48, 0x00, 0x47, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x47, 0x00, 0x48, 0x00, + 0x50, 0x00, 0x4e, 0x00, 0x4b, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4e, 0x00, + 0x50, 0x00, 0x4f, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x52, 0x00, 0x51, 0x00, + 0x4f, 0x00, 0x4f, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, + 0x50, 0x00, 0x53, 0x00, 0x52, 0x00, 0x52, 0x00, 0x51, 0x00, 0x51, 0x00, + 0x53, 0x00, 0x53, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x52, 0x00, + 0x53, 0x00, 0x51, 0x00, 0x51, 0x00, 0x52, 0x00, 0x52, 0x00, 0x53, 0x00, + 0x4e, 0x00, 0x51, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x4f, 0x00, 0x4e, 0x00, + 0x4e, 0x00, 0x50, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x4d, 0x00, 0x4e, 0x00, + 0x49, 0x00, 0x4c, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x48, 0x00, 0x49, 0x00, + 0x47, 0x00, 0x48, 0x00, 0x48, 0x00, 0x47, 0x00, 0x44, 0x00, 0x45, 0x00, + 0x42, 0x00, 0x42, 0x00, 0x43, 0x00, 0x43, 0x00, 0x3f, 0x00, 0x40, 0x00, + 0x40, 0x00, 0x3f, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3b, 0x00, + 0x37, 0x00, 0x37, 0x00, 0x35, 0x00, 0x36, 0x00, 0x36, 0x00, 0x33, 0x00, + 0x30, 0x00, 0x32, 0x00, 0x32, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2d, 0x00, + 0x2c, 0x00, 0x2b, 0x00, 0x29, 0x00, 0x29, 0x00, 0x25, 0x00, 0x27, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1e, 0x00, 0x1f, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x18, 0x00, 0x19, 0x00, 0x17, 0x00, 0x16, 0x00, + 0x12, 0x00, 0x13, 0x00, 0x12, 0x00, 0x11, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf3, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xf0, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xe3, 0xff, 0xe4, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xdc, 0xff, + 0xdb, 0xff, 0xde, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xd6, 0xff, 0xd7, 0xff, + 0xd5, 0xff, 0xd7, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd4, 0xff, + 0xcd, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xcd, 0xff, 0xca, 0xff, 0xca, 0xff, + 0xc7, 0xff, 0xc8, 0xff, 0xc5, 0xff, 0xc7, 0xff, 0xc3, 0xff, 0xc5, 0xff, + 0xc3, 0xff, 0xc2, 0xff, 0xc1, 0xff, 0xc2, 0xff, 0xbc, 0xff, 0xbf, 0xff, + 0xbf, 0xff, 0xbe, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xba, 0xff, + 0xba, 0xff, 0xb9, 0xff, 0xb6, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb6, 0xff, + 0xb3, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb5, 0xff, 0xb2, 0xff, 0xb3, 0xff, + 0xb4, 0xff, 0xb3, 0xff, 0xaf, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xb1, 0xff, + 0xb0, 0xff, 0xb2, 0xff, 0xae, 0xff, 0xad, 0xff, 0xb0, 0xff, 0xb2, 0xff, + 0xae, 0xff, 0xae, 0xff, 0xad, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xb0, 0xff, + 0xad, 0xff, 0xae, 0xff, 0xaf, 0xff, 0xb0, 0xff, 0xad, 0xff, 0xae, 0xff, + 0xaf, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xae, 0xff, 0xb0, 0xff, + 0xb1, 0xff, 0xb0, 0xff, 0xaf, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xb2, 0xff, + 0xb1, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xb3, 0xff, 0xb5, 0xff, 0xb5, 0xff, + 0xb4, 0xff, 0xb6, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb8, 0xff, 0xb8, 0xff, + 0xb8, 0xff, 0xb8, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xbc, 0xff, 0xbb, 0xff, + 0xbd, 0xff, 0xbd, 0xff, 0xbe, 0xff, 0xc0, 0xff, 0xc1, 0xff, 0xbf, 0xff, + 0xc1, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc3, 0xff, 0xc5, 0xff, 0xc7, 0xff, + 0xc8, 0xff, 0xc6, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xcd, 0xff, + 0xce, 0xff, 0xcd, 0xff, 0xd1, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xd2, 0xff, 0xd4, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xd8, 0xff, + 0xdd, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xe2, 0xff, 0xe1, 0xff, + 0xe4, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe9, 0xff, 0xe9, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xef, 0xff, 0xee, 0xff, 0xf1, 0xff, 0xf0, 0xff, + 0xf2, 0xff, 0xf1, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, + 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x09, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x11, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x15, 0x00, 0x15, 0x00, 0x19, 0x00, 0x1a, 0x00, + 0x1c, 0x00, 0x1a, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x22, 0x00, 0x21, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x26, 0x00, + 0x2a, 0x00, 0x29, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x2e, 0x00, + 0x31, 0x00, 0x31, 0x00, 0x34, 0x00, 0x32, 0x00, 0x35, 0x00, 0x35, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x39, 0x00, 0x37, 0x00, 0x3a, 0x00, 0x3b, 0x00, + 0x3e, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x3f, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x44, 0x00, 0x43, 0x00, 0x44, 0x00, 0x44, 0x00, + 0x45, 0x00, 0x45, 0x00, 0x48, 0x00, 0x46, 0x00, 0x49, 0x00, 0x47, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x4b, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x4c, 0x00, + 0x4d, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4f, 0x00, 0x4d, 0x00, 0x4c, 0x00, + 0x4f, 0x00, 0x51, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x50, 0x00, 0x50, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, 0x51, 0x00, 0x51, 0x00, + 0x50, 0x00, 0x51, 0x00, 0x50, 0x00, 0x50, 0x00, 0x4f, 0x00, 0x50, 0x00, + 0x51, 0x00, 0x51, 0x00, 0x50, 0x00, 0x51, 0x00, 0x4f, 0x00, 0x4f, 0x00, + 0x50, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x4e, 0x00, 0x4f, 0x00, + 0x4d, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4c, 0x00, 0x4b, 0x00, + 0x4a, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x49, 0x00, 0x48, 0x00, 0x47, 0x00, + 0x47, 0x00, 0x47, 0x00, 0x45, 0x00, 0x45, 0x00, 0x46, 0x00, 0x45, 0x00, + 0x43, 0x00, 0x42, 0x00, 0x43, 0x00, 0x41, 0x00, 0x3f, 0x00, 0x3e, 0x00, + 0x40, 0x00, 0x3e, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x3b, 0x00, + 0x38, 0x00, 0x37, 0x00, 0x37, 0x00, 0x36, 0x00, 0x34, 0x00, 0x34, 0x00, + 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 0x2f, 0x00, 0x2b, 0x00, + 0x2b, 0x00, 0x2b, 0x00, 0x29, 0x00, 0x29, 0x00, 0x27, 0x00, 0x25, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x22, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1e, 0x00, + 0x1c, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x19, 0x00, 0x17, 0x00, 0x18, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x13, 0x00, 0x12, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x09, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe3, 0xff, + 0xdf, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xdd, 0xff, 0xdb, 0xff, 0xd9, 0xff, + 0xd7, 0xff, 0xd9, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xd1, 0xff, 0xd0, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xcd, 0xff, + 0xca, 0xff, 0xcb, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xc6, 0xff, + 0xc6, 0xff, 0xc6, 0xff, 0xc3, 0xff, 0xc2, 0xff, 0xc3, 0xff, 0xc3, 0xff, + 0xbf, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbd, 0xff, + 0xbb, 0xff, 0xbb, 0xff, 0xbc, 0xff, 0xba, 0xff, 0xb8, 0xff, 0xba, 0xff, + 0xb8, 0xff, 0xb7, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0xb4, 0xff, 0xb6, 0xff, + 0xb6, 0xff, 0xb5, 0xff, 0xb3, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0xb5, 0xff, + 0xb5, 0xff, 0xb2, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xb5, 0xff, 0xb2, 0xff, + 0xb0, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xb1, 0xff, 0xb2, 0xff, 0xb1, 0xff, + 0xb1, 0xff, 0xb0, 0xff, 0xb2, 0xff, 0xb3, 0xff, 0xb0, 0xff, 0xae, 0xff, + 0xb1, 0xff, 0xb2, 0xff, 0xb2, 0xff, 0xb1, 0xff, 0xb3, 0xff, 0xb1, 0xff, + 0xb1, 0xff, 0xb3, 0xff, 0xb4, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xb4, 0xff, + 0xb4, 0xff, 0xb4, 0xff, 0xb5, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xb5, 0xff, + 0xb5, 0xff, 0xb7, 0xff, 0xb9, 0xff, 0xb6, 0xff, 0xba, 0xff, 0xb9, 0xff, + 0xbb, 0xff, 0xb9, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xbf, 0xff, 0xbd, 0xff, 0xbe, 0xff, 0xc0, 0xff, 0xc2, 0xff, 0xc1, 0xff, + 0xc5, 0xff, 0xc4, 0xff, 0xc3, 0xff, 0xc2, 0xff, 0xc7, 0xff, 0xc8, 0xff, + 0xc9, 0xff, 0xc7, 0xff, 0xca, 0xff, 0xcb, 0xff, 0xcf, 0xff, 0xcd, 0xff, + 0xcc, 0xff, 0xce, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd1, 0xff, 0xd2, 0xff, + 0xd6, 0xff, 0xd4, 0xff, 0xd5, 0xff, 0xd7, 0xff, 0xd9, 0xff, 0xd8, 0xff, + 0xda, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xe0, 0xff, 0xe1, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe7, 0xff, + 0xea, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xf4, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xff, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x09, 0x00, + 0x08, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0f, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x13, 0x00, 0x14, 0x00, 0x16, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x16, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1d, 0x00, + 0x1f, 0x00, 0x1f, 0x00, 0x21, 0x00, 0x22, 0x00, 0x25, 0x00, 0x25, 0x00, + 0x26, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x2c, 0x00, + 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x32, 0x00, 0x34, 0x00, + 0x32, 0x00, 0x32, 0x00, 0x37, 0x00, 0x38, 0x00, 0x35, 0x00, 0x36, 0x00, + 0x3a, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x3b, 0x00, + 0x40, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3f, 0x00, 0x42, 0x00, 0x42, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x44, 0x00, + 0x4a, 0x00, 0x4a, 0x00, 0x46, 0x00, 0x45, 0x00, 0x49, 0x00, 0x4b, 0x00, + 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4b, 0x00, + 0x4e, 0x00, 0x4d, 0x00, 0x4b, 0x00, 0x4b, 0x00, 0x4d, 0x00, 0x4f, 0x00, + 0x4e, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x50, 0x00, + 0x50, 0x00, 0x4e, 0x00, 0x4d, 0x00, 0x50, 0x00, 0x51, 0x00, 0x50, 0x00, + 0x4d, 0x00, 0x4d, 0x00, 0x4d, 0x00, 0x4f, 0x00, 0x4e, 0x00, 0x4e, 0x00, + 0x4c, 0x00, 0x4c, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4c, 0x00, 0x4b, 0x00, + 0x4b, 0x00, 0x4d, 0x00, 0x4b, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x4b, 0x00, + 0x48, 0x00, 0x48, 0x00, 0x47, 0x00, 0x49, 0x00, 0x47, 0x00, 0x48, 0x00, + 0x43, 0x00, 0x45, 0x00, 0x45, 0x00, 0x46, 0x00, 0x43, 0x00, 0x44, 0x00, + 0x42, 0x00, 0x42, 0x00, 0x3f, 0x00, 0x42, 0x00, 0x3f, 0x00, 0x3c, 0x00, + 0x3d, 0x00, 0x3f, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x37, 0x00, 0x38, 0x00, + 0x38, 0x00, 0x39, 0x00, 0x34, 0x00, 0x35, 0x00, 0x34, 0x00, 0x34, 0x00, + 0x31, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x2f, 0x00, + 0x2a, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x27, 0x00, 0x28, 0x00, + 0x24, 0x00, 0x23, 0x00, 0x23, 0x00, 0x24, 0x00, 0x1f, 0x00, 0x1d, 0x00, + 0x1d, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1b, 0x00, 0x17, 0x00, 0x19, 0x00, + 0x17, 0x00, 0x18, 0x00, 0x13, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x0a, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, + 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfb, 0xff, + 0xf8, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xed, 0xff, 0xed, 0xff, 0xe9, 0xff, 0xec, 0xff, + 0xea, 0xff, 0xe9, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe6, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xdf, 0xff, + 0xd9, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd4, 0xff, 0xd5, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xd1, 0xff, 0xce, 0xff, 0xd1, 0xff, + 0xce, 0xff, 0xcf, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xc9, 0xff, 0xcc, 0xff, + 0xc9, 0xff, 0xc8, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc6, 0xff, + 0xc1, 0xff, 0xc2, 0xff, 0xc1, 0xff, 0xc4, 0xff, 0xc1, 0xff, 0xc0, 0xff, + 0xbd, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xba, 0xff, 0xbd, 0xff, + 0xbc, 0xff, 0xbc, 0xff, 0xb9, 0xff, 0xbb, 0xff, 0xb8, 0xff, 0xb8, 0xff, + 0xb8, 0xff, 0xba, 0xff, 0xb7, 0xff, 0xb5, 0xff, 0xb7, 0xff, 0xb8, 0xff, + 0xb5, 0xff, 0xb4, 0xff, 0xb6, 0xff, 0xb7, 0xff, 0xb5, 0xff, 0xb4, 0xff, + 0xb4, 0xff, 0xb5, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb3, 0xff, 0xb2, 0xff, + 0xb5, 0xff, 0xb5, 0xff, 0xb2, 0xff, 0xb1, 0xff, 0xb3, 0xff, 0xb5, 0xff, + 0xb5, 0xff, 0xb2, 0xff, 0xb4, 0xff, 0xb4, 0xff, 0xb5, 0xff, 0xb5, 0xff, + 0xb4, 0xff, 0xb3, 0xff, 0xb4, 0xff, 0xb5, 0xff, 0xb8, 0xff, 0xb5, 0xff, + 0xb6, 0xff, 0xb6, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb8, 0xff, 0xb8, 0xff, + 0xb8, 0xff, 0xb8, 0xff, 0xb9, 0xff, 0xb8, 0xff, 0xba, 0xff, 0xbc, 0xff, + 0xbb, 0xff, 0xba, 0xff, 0xbd, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbd, 0xff, + 0xbf, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xbf, 0xff, 0xc2, 0xff, 0xc3, 0xff, + 0xc4, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc7, 0xff, 0xc8, 0xff, + 0xc8, 0xff, 0xc7, 0xff, 0xca, 0xff, 0xcc, 0xff, 0xcb, 0xff, 0xc9, 0xff, + 0xce, 0xff, 0xcf, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xd2, 0xff, 0xd3, 0xff, + 0xd3, 0xff, 0xd5, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xda, 0xff, + 0xdd, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xe0, 0xff, 0xdf, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe8, 0xff, 0xe7, 0xff, + 0xe7, 0xff, 0xe9, 0xff, 0xec, 0xff, 0xec, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xef, 0xff, 0xf1, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf7, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x03, 0x00, 0x07, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0c, 0x00, + 0x0e, 0x00, 0x10, 0x00, 0x12, 0x00, 0x11, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x15, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1b, 0x00, + 0x1c, 0x00, 0x1d, 0x00, 0x20, 0x00, 0x21, 0x00, 0x20, 0x00, 0x21, 0x00, + 0x25, 0x00, 0x24, 0x00, 0x26, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, + 0x2c, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x2f, 0x00, 0x2e, 0x00, + 0x2f, 0x00, 0x30, 0x00, 0x33, 0x00, 0x33, 0x00, 0x35, 0x00, 0x34, 0x00, + 0x37, 0x00, 0x37, 0x00, 0x38, 0x00, 0x38, 0x00, 0x37, 0x00, 0x39, 0x00, + 0x3d, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3d, 0x00, + 0x40, 0x00, 0x42, 0x00, 0x41, 0x00, 0x3f, 0x00, 0x41, 0x00, 0x43, 0x00, + 0x45, 0x00, 0x44, 0x00, 0x45, 0x00, 0x44, 0x00, 0x45, 0x00, 0x45, 0x00, + 0x47, 0x00, 0x45, 0x00, 0x44, 0x00, 0x46, 0x00, 0x4c, 0x00, 0x48, 0x00, + 0x47, 0x00, 0x49, 0x00, 0x4c, 0x00, 0x4a, 0x00, 0x49, 0x00, 0x49, 0x00, + 0x4b, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x4a, 0x00, + 0x4c, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4c, 0x00, 0x4b, 0x00, 0x4b, 0x00, + 0x4e, 0x00, 0x4c, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x4e, 0x00, 0x4e, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x49, 0x00, 0x49, 0x00, + 0x49, 0x00, 0x49, 0x00, 0x47, 0x00, 0x47, 0x00, 0x49, 0x00, 0x48, 0x00, + 0x47, 0x00, 0x48, 0x00, 0x45, 0x00, 0x43, 0x00, 0x47, 0x00, 0x46, 0x00, + 0x44, 0x00, 0x44, 0x00, 0x42, 0x00, 0x42, 0x00, 0x43, 0x00, 0x42, 0x00, + 0x3e, 0x00, 0x3e, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x3d, 0x00, + 0x3c, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x39, 0x00, 0x38, 0x00, + 0x36, 0x00, 0x37, 0x00, 0x36, 0x00, 0x34, 0x00, 0x33, 0x00, 0x34, 0x00, + 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x2c, 0x00, 0x2e, 0x00, + 0x2c, 0x00, 0x2b, 0x00, 0x29, 0x00, 0x29, 0x00, 0x27, 0x00, 0x29, 0x00, + 0x23, 0x00, 0x23, 0x00, 0x25, 0x00, 0x26, 0x00, 0x1e, 0x00, 0x1f, 0x00, + 0x20, 0x00, 0x1f, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x19, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x15, 0x00, 0x13, 0x00, 0x11, 0x00, 0x12, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf2, 0xff, + 0xf1, 0xff, 0xf4, 0xff, 0xf1, 0xff, 0xee, 0xff, 0xed, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xe9, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe5, 0xff, + 0xe3, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xde, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xd9, 0xff, 0xd7, 0xff, 0xd7, 0xff, + 0xd8, 0xff, 0xd7, 0xff, 0xd5, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xd0, 0xff, 0xcf, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xce, 0xff, 0xce, 0xff, + 0xca, 0xff, 0xc9, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xc7, 0xff, 0xc5, 0xff, + 0xc7, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xc4, 0xff, 0xc3, 0xff, + 0xbf, 0xff, 0xc0, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xbf, 0xff, + 0xbd, 0xff, 0xbd, 0xff, 0xbf, 0xff, 0xbe, 0xff, 0xb9, 0xff, 0xb9, 0xff, + 0xbe, 0xff, 0xbe, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xb9, 0xff, 0xba, 0xff, + 0xb8, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xb8, 0xff, + 0xb5, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0xb6, 0xff, 0xb5, 0xff, 0xb7, 0xff, + 0xb7, 0xff, 0xb7, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xb4, 0xff, 0xb6, 0xff, + 0xb6, 0xff, 0xb6, 0xff, 0xb5, 0xff, 0xb6, 0xff, 0xb5, 0xff, 0xb7, 0xff, + 0xba, 0xff, 0xb6, 0xff, 0xb6, 0xff, 0xb7, 0xff, 0xb7, 0xff, 0xb7, 0xff, + 0xba, 0xff, 0xb9, 0xff, 0xb6, 0xff, 0xb8, 0xff, 0xbb, 0xff, 0xb8, 0xff, + 0xb8, 0xff, 0xba, 0xff, 0xbc, 0xff, 0xb9, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xbc, 0xff, 0xbc, 0xff, 0xbe, 0xff, 0xbd, 0xff, 0xc0, 0xff, 0xbe, 0xff, + 0xc0, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xc1, 0xff, 0xc4, 0xff, 0xc2, 0xff, + 0xc3, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc6, 0xff, 0xc9, 0xff, 0xc8, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xcd, 0xff, 0xcb, 0xff, + 0xcf, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xcf, 0xff, 0xd3, 0xff, 0xd1, 0xff, + 0xd5, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xd8, 0xff, 0xd8, 0xff, + 0xdb, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xdb, 0xff, 0xdf, 0xff, 0xe0, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0xe5, 0xff, 0xe2, 0xff, 0xe6, 0xff, 0xe7, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xf1, 0xff, 0xee, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf3, 0xff, + 0xf7, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x0b, 0x00, + 0x0c, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0f, 0x00, + 0x12, 0x00, 0x14, 0x00, 0x17, 0x00, 0x16, 0x00, 0x19, 0x00, 0x19, 0x00, + 0x19, 0x00, 0x1a, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x1f, 0x00, 0x22, 0x00, 0x25, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, + 0x27, 0x00, 0x29, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, + 0x2e, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x36, 0x00, 0x35, 0x00, 0x35, 0x00, 0x37, 0x00, + 0x3a, 0x00, 0x38, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3b, 0x00, 0x3b, 0x00, + 0x3d, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x40, 0x00, 0x3f, 0x00, + 0x40, 0x00, 0x3e, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x42, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x45, 0x00, 0x46, 0x00, 0x45, 0x00, 0x43, 0x00, + 0x45, 0x00, 0x47, 0x00, 0x4a, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, + 0x48, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x48, 0x00, 0x47, 0x00, + 0x4a, 0x00, 0x4a, 0x00, 0x4a, 0x00, 0x47, 0x00, 0x49, 0x00, 0x4b, 0x00, + 0x49, 0x00, 0x46, 0x00, 0x49, 0x00, 0x49, 0x00, 0x47, 0x00, 0x49, 0x00, + 0x4b, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x46, 0x00, 0x47, 0x00, + 0x4a, 0x00, 0x47, 0x00, 0x44, 0x00, 0x44, 0x00, 0x48, 0x00, 0x48, 0x00, + 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x45, 0x00, 0x43, 0x00, 0x41, 0x00, + 0x40, 0x00, 0x42, 0x00, 0x43, 0x00, 0x42, 0x00, 0x3e, 0x00, 0x3e, 0x00, + 0x41, 0x00, 0x40, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x3d, 0x00, + 0x3c, 0x00, 0x3b, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x38, 0x00, 0x37, 0x00, + 0x35, 0x00, 0x37, 0x00, 0x33, 0x00, 0x31, 0x00, 0x33, 0x00, 0x35, 0x00, + 0x30, 0x00, 0x2e, 0x00, 0x31, 0x00, 0x32, 0x00, 0x2c, 0x00, 0x2d, 0x00, + 0x2c, 0x00, 0x2c, 0x00, 0x2a, 0x00, 0x29, 0x00, 0x25, 0x00, 0x27, 0x00, + 0x27, 0x00, 0x26, 0x00, 0x23, 0x00, 0x24, 0x00, 0x20, 0x00, 0x21, 0x00, + 0x1d, 0x00, 0x1e, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0x1a, 0x00, + 0x17, 0x00, 0x18, 0x00, 0x16, 0x00, 0x17, 0x00, 0x15, 0x00, 0x13, 0x00, + 0x10, 0x00, 0x12, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0c, 0x00, + 0x09, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xef, 0xff, + 0xec, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xe9, 0xff, + 0xe6, 0xff, 0xe7, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe1, 0xff, 0xe1, 0xff, + 0xe0, 0xff, 0xe1, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xd8, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd5, 0xff, 0xd5, 0xff, + 0xd3, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd0, 0xff, + 0xcd, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xce, 0xff, 0xca, 0xff, 0xc9, 0xff, + 0xcb, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xc9, 0xff, 0xc6, 0xff, 0xc4, 0xff, + 0xc5, 0xff, 0xc6, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0xc2, 0xff, 0xc3, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xc0, 0xff, 0xc0, 0xff, + 0xbc, 0xff, 0xbd, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xba, 0xff, 0xbb, 0xff, + 0xbd, 0xff, 0xbc, 0xff, 0xba, 0xff, 0xb9, 0xff, 0xbb, 0xff, 0xba, 0xff, + 0xb8, 0xff, 0xb8, 0xff, 0xba, 0xff, 0xb9, 0xff, 0xba, 0xff, 0xb9, 0xff, + 0xb8, 0xff, 0xb7, 0xff, 0xba, 0xff, 0xba, 0xff, 0xb7, 0xff, 0xb7, 0xff, + 0xb9, 0xff, 0xb8, 0xff, 0xb7, 0xff, 0xb9, 0xff, 0xb7, 0xff, 0xb6, 0xff, + 0xba, 0xff, 0xba, 0xff, 0xb7, 0xff, 0xb8, 0xff, 0xb9, 0xff, 0xba, 0xff, + 0xbb, 0xff, 0xba, 0xff, 0xb9, 0xff, 0xba, 0xff, 0xbb, 0xff, 0xba, 0xff, + 0xbb, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xbb, 0xff, 0xbe, 0xff, 0xbf, 0xff, + 0xbd, 0xff, 0xbe, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xbf, 0xff, 0xbf, 0xff, + 0xc1, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xc3, 0xff, 0xc3, 0xff, 0xc4, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xca, 0xff, 0xca, 0xff, + 0xc8, 0xff, 0xc9, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xcd, 0xff, 0xce, 0xff, + 0xcf, 0xff, 0xcd, 0xff, 0xd1, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd0, 0xff, + 0xd5, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xda, 0xff, 0xd8, 0xff, + 0xda, 0xff, 0xda, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xdf, 0xff, + 0xe2, 0xff, 0xdf, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe5, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xee, 0xff, 0xec, 0xff, + 0xee, 0xff, 0xed, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xfa, 0xff, + 0xfe, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x0a, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x0e, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x12, 0x00, 0x14, 0x00, 0x19, 0x00, 0x16, 0x00, + 0x16, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x1d, 0x00, 0x1d, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x23, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, + 0x26, 0x00, 0x25, 0x00, 0x27, 0x00, 0x27, 0x00, 0x2a, 0x00, 0x29, 0x00, + 0x2a, 0x00, 0x2b, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x2f, 0x00, 0x31, 0x00, + 0x2f, 0x00, 0x2f, 0x00, 0x34, 0x00, 0x34, 0x00, 0x32, 0x00, 0x31, 0x00, + 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x38, 0x00, 0x37, 0x00, 0x38, 0x00, + 0x3d, 0x00, 0x3b, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3d, 0x00, 0x3c, 0x00, + 0x3e, 0x00, 0x3d, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x40, 0x00, + 0x42, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x42, 0x00, + 0x43, 0x00, 0x43, 0x00, 0x46, 0x00, 0x44, 0x00, 0x43, 0x00, 0x45, 0x00, + 0x48, 0x00, 0x46, 0x00, 0x45, 0x00, 0x45, 0x00, 0x47, 0x00, 0x45, 0x00, + 0x47, 0x00, 0x48, 0x00, 0x47, 0x00, 0x44, 0x00, 0x48, 0x00, 0x47, 0x00, + 0x45, 0x00, 0x45, 0x00, 0x48, 0x00, 0x47, 0x00, 0x46, 0x00, 0x46, 0x00, + 0x48, 0x00, 0x47, 0x00, 0x44, 0x00, 0x45, 0x00, 0x48, 0x00, 0x46, 0x00, + 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x45, 0x00, 0x44, 0x00, 0x44, 0x00, + 0x43, 0x00, 0x40, 0x00, 0x42, 0x00, 0x43, 0x00, 0x42, 0x00, 0x40, 0x00, + 0x3f, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3e, 0x00, 0x3d, 0x00, + 0x3f, 0x00, 0x3f, 0x00, 0x3b, 0x00, 0x3a, 0x00, 0x3e, 0x00, 0x3d, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x38, 0x00, 0x37, 0x00, 0x37, 0x00, + 0x34, 0x00, 0x36, 0x00, 0x37, 0x00, 0x34, 0x00, 0x2f, 0x00, 0x31, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2b, 0x00, 0x2c, 0x00, + 0x2d, 0x00, 0x2e, 0x00, 0x27, 0x00, 0x28, 0x00, 0x28, 0x00, 0x29, 0x00, + 0x26, 0x00, 0x25, 0x00, 0x22, 0x00, 0x25, 0x00, 0x23, 0x00, 0x22, 0x00, + 0x1d, 0x00, 0x21, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1b, 0x00, 0x1c, 0x00, + 0x18, 0x00, 0x1a, 0x00, 0x17, 0x00, 0x17, 0x00, 0x13, 0x00, 0x15, 0x00, + 0x12, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x0c, 0x00, + 0x09, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x08, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfd, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf1, 0xff, + 0xee, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xed, 0xff, 0xe9, 0xff, 0xeb, 0xff, + 0xe9, 0xff, 0xe9, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe5, 0xff, + 0xe3, 0xff, 0xe3, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xe0, 0xff, + 0xdc, 0xff, 0xdb, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xd9, 0xff, 0xd8, 0xff, + 0xd7, 0xff, 0xd7, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xd0, 0xff, 0xd1, 0xff, + 0xd3, 0xff, 0xd2, 0xff, 0xce, 0xff, 0xce, 0xff, 0xcf, 0xff, 0xcf, 0xff, + 0xcc, 0xff, 0xcd, 0xff, 0xca, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xca, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xc9, 0xff, + 0xc2, 0xff, 0xc1, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xc2, 0xff, 0xc1, 0xff, + 0xc1, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xbd, 0xff, + 0xbf, 0xff, 0xc0, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xbf, 0xff, 0xbe, 0xff, + 0xbb, 0xff, 0xbd, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xbb, 0xff, 0xbc, 0xff, + 0xba, 0xff, 0xbb, 0xff, 0xbc, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xbb, 0xff, + 0xbb, 0xff, 0xba, 0xff, 0xbb, 0xff, 0xba, 0xff, 0xba, 0xff, 0xbc, 0xff, + 0xbd, 0xff, 0xbd, 0xff, 0xba, 0xff, 0xba, 0xff, 0xbc, 0xff, 0xbc, 0xff, + 0xba, 0xff, 0xbb, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xbb, 0xff, 0xbd, 0xff, + 0xbe, 0xff, 0xbd, 0xff, 0xbf, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbf, 0xff, + 0xc1, 0xff, 0xc0, 0xff, 0xbe, 0xff, 0xc0, 0xff, 0xc3, 0xff, 0xc0, 0xff, + 0xc2, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc6, 0xff, 0xc6, 0xff, + 0xc6, 0xff, 0xc5, 0xff, 0xc8, 0xff, 0xc9, 0xff, 0xca, 0xff, 0xca, 0xff, + 0xca, 0xff, 0xcb, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xcc, 0xff, + 0xd0, 0xff, 0xd2, 0xff, 0xce, 0xff, 0xce, 0xff, 0xd5, 0xff, 0xd4, 0xff, + 0xd3, 0xff, 0xd5, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xd8, 0xff, + 0xdb, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdc, 0xff, + 0xe1, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe1, 0xff, 0xe4, 0xff, 0xe5, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xeb, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf3, 0xff, 0xf4, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf9, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0e, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x11, 0x00, 0x11, 0x00, 0x15, 0x00, 0x14, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x19, 0x00, + 0x1e, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x23, 0x00, 0x25, 0x00, 0x26, 0x00, 0x24, 0x00, 0x27, 0x00, 0x28, 0x00, + 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2d, 0x00, + 0x2f, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x33, 0x00, + 0x34, 0x00, 0x32, 0x00, 0x33, 0x00, 0x36, 0x00, 0x37, 0x00, 0x37, 0x00, + 0x36, 0x00, 0x38, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3b, 0x00, 0x3c, 0x00, + 0x3a, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x3d, 0x00, + 0x3f, 0x00, 0x40, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3f, 0x00, 0x40, 0x00, + 0x43, 0x00, 0x42, 0x00, 0x41, 0x00, 0x42, 0x00, 0x42, 0x00, 0x41, 0x00, + 0x42, 0x00, 0x43, 0x00, 0x43, 0x00, 0x43, 0x00, 0x42, 0x00, 0x44, 0x00, + 0x44, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x45, 0x00, 0x44, 0x00, + 0x45, 0x00, 0x46, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x46, 0x00, + 0x43, 0x00, 0x44, 0x00, 0x44, 0x00, 0x42, 0x00, 0x45, 0x00, 0x45, 0x00, + 0x42, 0x00, 0x42, 0x00, 0x43, 0x00, 0x43, 0x00, 0x42, 0x00, 0x42, 0x00, + 0x42, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3f, 0x00, + 0x40, 0x00, 0x3f, 0x00, 0x3d, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3d, 0x00, + 0x3b, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x3c, 0x00, 0x37, 0x00, 0x39, 0x00, + 0x3b, 0x00, 0x3a, 0x00, 0x38, 0x00, 0x37, 0x00, 0x34, 0x00, 0x35, 0x00, + 0x37, 0x00, 0x35, 0x00, 0x31, 0x00, 0x33, 0x00, 0x33, 0x00, 0x32, 0x00, + 0x30, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x2d, 0x00, 0x2e, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x29, 0x00, 0x27, 0x00, 0x27, 0x00, + 0x25, 0x00, 0x25, 0x00, 0x23, 0x00, 0x24, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x16, 0x00, 0x16, 0x00, 0x15, 0x00, 0x14, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x11, 0x00, 0x0f, 0x00, + 0x0a, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xf6, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0xf0, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xec, 0xff, 0xef, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe5, 0xff, 0xe7, 0xff, + 0xe7, 0xff, 0xe5, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe1, 0xff, + 0xdd, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xd9, 0xff, 0xd9, 0xff, + 0xd9, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xd3, 0xff, + 0xd3, 0xff, 0xd6, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd0, 0xff, + 0xce, 0xff, 0xce, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xce, 0xff, + 0xc8, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xc7, 0xff, 0xc7, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xc3, 0xff, 0xc5, 0xff, + 0xc3, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0xc2, 0xff, 0xc2, 0xff, 0xc1, 0xff, + 0xbf, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xc1, 0xff, 0xbe, 0xff, 0xbc, 0xff, + 0xc0, 0xff, 0xc0, 0xff, 0xbe, 0xff, 0xbe, 0xff, 0xbd, 0xff, 0xbd, 0xff, + 0xbd, 0xff, 0xbe, 0xff, 0xbd, 0xff, 0xbb, 0xff, 0xbe, 0xff, 0xbd, 0xff, + 0xbd, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xbc, 0xff, + 0xbc, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xbc, 0xff, 0xbe, 0xff, 0xbc, 0xff, + 0xbd, 0xff, 0xbf, 0xff, 0xbe, 0xff, 0xbc, 0xff, 0xbe, 0xff, 0xbe, 0xff, + 0xbe, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xc1, 0xff, + 0xc2, 0xff, 0xc2, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xc5, 0xff, 0xc4, 0xff, + 0xc3, 0xff, 0xc2, 0xff, 0xc5, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc7, 0xff, + 0xc7, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xc9, 0xff, 0xca, 0xff, 0xca, 0xff, + 0xcb, 0xff, 0xcc, 0xff, 0xcf, 0xff, 0xcc, 0xff, 0xce, 0xff, 0xcf, 0xff, + 0xd0, 0xff, 0xd0, 0xff, 0xd3, 0xff, 0xd1, 0xff, 0xd5, 0xff, 0xd5, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xd9, 0xff, 0xd8, 0xff, + 0xdb, 0xff, 0xdb, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xdd, 0xff, 0xe0, 0xff, + 0xe2, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe3, 0xff, 0xe5, 0xff, 0xe3, 0xff, + 0xe7, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xea, 0xff, + 0xeb, 0xff, 0xed, 0xff, 0xef, 0xff, 0xee, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf0, 0xff, 0xf1, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x05, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0b, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x10, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x1a, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1f, 0x00, 0x1d, 0x00, + 0x1f, 0x00, 0x21, 0x00, 0x23, 0x00, 0x22, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x28, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, + 0x2c, 0x00, 0x2b, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2e, 0x00, + 0x2f, 0x00, 0x30, 0x00, 0x32, 0x00, 0x31, 0x00, 0x32, 0x00, 0x34, 0x00, + 0x34, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x36, 0x00, 0x37, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x39, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3b, 0x00, + 0x3a, 0x00, 0x3a, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3f, 0x00, + 0x3e, 0x00, 0x3c, 0x00, 0x3e, 0x00, 0x42, 0x00, 0x3e, 0x00, 0x3e, 0x00, + 0x3f, 0x00, 0x41, 0x00, 0x41, 0x00, 0x40, 0x00, 0x3f, 0x00, 0x40, 0x00, + 0x43, 0x00, 0x42, 0x00, 0x40, 0x00, 0x42, 0x00, 0x42, 0x00, 0x41, 0x00, + 0x41, 0x00, 0x42, 0x00, 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, + 0x42, 0x00, 0x43, 0x00, 0x41, 0x00, 0x40, 0x00, 0x42, 0x00, 0x43, 0x00, + 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x40, 0x00, 0x3f, 0x00, + 0x3e, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x40, 0x00, 0x3f, 0x00, 0x3e, 0x00, + 0x3b, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x3b, 0x00, 0x3d, 0x00, + 0x3c, 0x00, 0x3c, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x38, 0x00, 0x37, 0x00, + 0x38, 0x00, 0x39, 0x00, 0x36, 0x00, 0x35, 0x00, 0x35, 0x00, 0x37, 0x00, + 0x34, 0x00, 0x34, 0x00, 0x32, 0x00, 0x34, 0x00, 0x30, 0x00, 0x31, 0x00, + 0x31, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x2c, 0x00, 0x2c, 0x00, + 0x2c, 0x00, 0x2e, 0x00, 0x28, 0x00, 0x28, 0x00, 0x26, 0x00, 0x29, 0x00, + 0x25, 0x00, 0x24, 0x00, 0x23, 0x00, 0x24, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x1f, 0x00, 0x20, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x1c, 0x00, 0x1c, 0x00, + 0x18, 0x00, 0x1b, 0x00, 0x19, 0x00, 0x18, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x12, 0x00, 0x13, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0xf9, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf3, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xee, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xe9, 0xff, + 0xe9, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe3, 0xff, 0xe1, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xdd, 0xff, + 0xdc, 0xff, 0xdb, 0xff, 0xd9, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd8, 0xff, + 0xd6, 0xff, 0xd7, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xd2, 0xff, + 0xd4, 0xff, 0xd2, 0xff, 0xcf, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xcf, 0xff, + 0xcf, 0xff, 0xce, 0xff, 0xca, 0xff, 0xca, 0xff, 0xcd, 0xff, 0xcb, 0xff, + 0xc9, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xc7, 0xff, + 0xc3, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xc5, 0xff, + 0xc4, 0xff, 0xc4, 0xff, 0xc3, 0xff, 0xc2, 0xff, 0xc3, 0xff, 0xc3, 0xff, + 0xc3, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc2, 0xff, 0xc2, 0xff, + 0xc0, 0xff, 0xbf, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, + 0xbf, 0xff, 0xbd, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xbe, 0xff, 0xbe, 0xff, + 0xbf, 0xff, 0xbf, 0xff, 0xbe, 0xff, 0xc0, 0xff, 0xbe, 0xff, 0xbd, 0xff, + 0xc1, 0xff, 0xc3, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xc2, 0xff, 0xc1, 0xff, + 0xc1, 0xff, 0xc0, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xc2, 0xff, 0xc1, 0xff, + 0xc3, 0xff, 0xc3, 0xff, 0xc5, 0xff, 0xc4, 0xff, 0xc3, 0xff, 0xc4, 0xff, + 0xc6, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc7, 0xff, 0xc7, 0xff, + 0xc7, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xcb, 0xff, 0xcc, 0xff, + 0xcc, 0xff, 0xcc, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xd1, 0xff, + 0xd0, 0xff, 0xcf, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd4, 0xff, + 0xd5, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd7, 0xff, 0xd9, 0xff, 0xd9, 0xff, + 0xdb, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xde, 0xff, 0xdf, 0xff, + 0xe2, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe5, 0xff, 0xe4, 0xff, + 0xe5, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xeb, 0xff, 0xea, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf1, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x11, 0x00, + 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x17, 0x00, 0x18, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1b, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x20, 0x00, + 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x25, 0x00, 0x28, 0x00, 0x28, 0x00, + 0x29, 0x00, 0x29, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, + 0x2c, 0x00, 0x2d, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x31, 0x00, 0x36, 0x00, 0x35, 0x00, + 0x34, 0x00, 0x34, 0x00, 0x38, 0x00, 0x36, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x37, 0x00, 0x36, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x38, 0x00, 0x39, 0x00, + 0x3d, 0x00, 0x3c, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x3e, 0x00, 0x3d, 0x00, + 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3d, 0x00, 0x40, 0x00, 0x3f, 0x00, + 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x40, 0x00, 0x3f, 0x00, + 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, + 0x40, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x40, 0x00, 0x3d, 0x00, 0x3e, 0x00, + 0x40, 0x00, 0x3f, 0x00, 0x3d, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x3e, 0x00, + 0x3d, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3f, 0x00, 0x3e, 0x00, 0x3a, 0x00, + 0x3b, 0x00, 0x3e, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x39, 0x00, 0x3a, 0x00, + 0x38, 0x00, 0x39, 0x00, 0x39, 0x00, 0x37, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x35, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, + 0x33, 0x00, 0x31, 0x00, 0x32, 0x00, 0x32, 0x00, 0x31, 0x00, 0x2f, 0x00, + 0x2e, 0x00, 0x30, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x2b, 0x00, 0x2a, 0x00, + 0x2b, 0x00, 0x2d, 0x00, 0x28, 0x00, 0x27, 0x00, 0x28, 0x00, 0x28, 0x00, + 0x26, 0x00, 0x25, 0x00, 0x24, 0x00, 0x23, 0x00, 0x23, 0x00, 0x22, 0x00, + 0x20, 0x00, 0x21, 0x00, 0x1f, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x1d, 0x00, + 0x1a, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x14, 0x00, 0x15, 0x00, + 0x17, 0x00, 0x16, 0x00, 0x12, 0x00, 0x12, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xfd, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf1, 0xff, 0xf1, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xed, 0xff, 0xef, 0xff, 0xeb, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xe9, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xe5, 0xff, + 0xe3, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xdf, 0xff, 0xdd, 0xff, + 0xdd, 0xff, 0xdd, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xda, 0xff, 0xd7, 0xff, + 0xd7, 0xff, 0xdb, 0xff, 0xd8, 0xff, 0xd5, 0xff, 0xd3, 0xff, 0xd7, 0xff, + 0xd7, 0xff, 0xd3, 0xff, 0xd0, 0xff, 0xd3, 0xff, 0xd2, 0xff, 0xd0, 0xff, + 0xcf, 0xff, 0xd0, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xce, 0xff, + 0xcc, 0xff, 0xca, 0xff, 0xca, 0xff, 0xcb, 0xff, 0xca, 0xff, 0xc8, 0xff, + 0xc9, 0xff, 0xcb, 0xff, 0xc8, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc7, 0xff, + 0xc6, 0xff, 0xc5, 0xff, 0xc3, 0xff, 0xc5, 0xff, 0xc7, 0xff, 0xc5, 0xff, + 0xc3, 0xff, 0xc4, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc2, 0xff, 0xc2, 0xff, + 0xc3, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc2, 0xff, 0xc1, 0xff, 0xc1, 0xff, + 0xc1, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0xc0, 0xff, 0xc2, 0xff, 0xc3, 0xff, + 0xc1, 0xff, 0xc0, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0xc3, 0xff, 0xc5, 0xff, + 0xc1, 0xff, 0xc0, 0xff, 0xc2, 0xff, 0xc3, 0xff, 0xc2, 0xff, 0xc4, 0xff, + 0xc5, 0xff, 0xc2, 0xff, 0xc1, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xc4, 0xff, + 0xc6, 0xff, 0xc6, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xc8, 0xff, + 0xc6, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xc9, 0xff, + 0xc8, 0xff, 0xca, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xca, 0xff, 0xca, 0xff, + 0xcd, 0xff, 0xcd, 0xff, 0xd1, 0xff, 0xcd, 0xff, 0xcf, 0xff, 0xd3, 0xff, + 0xd5, 0xff, 0xd3, 0xff, 0xd1, 0xff, 0xd3, 0xff, 0xd6, 0xff, 0xd5, 0xff, + 0xd8, 0xff, 0xd5, 0xff, 0xd7, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd8, 0xff, + 0xdb, 0xff, 0xdc, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdd, 0xff, + 0xe0, 0xff, 0xe0, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe4, 0xff, + 0xe9, 0xff, 0xe7, 0xff, 0xe4, 0xff, 0xe7, 0xff, 0xeb, 0xff, 0xea, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xee, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf4, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x08, 0x00, 0x06, 0x00, 0x06, 0x00, 0x08, 0x00, + 0x0a, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0f, 0x00, + 0x11, 0x00, 0x0f, 0x00, 0x11, 0x00, 0x13, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x17, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x1c, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, + 0x20, 0x00, 0x23, 0x00, 0x22, 0x00, 0x22, 0x00, 0x26, 0x00, 0x27, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x26, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, + 0x29, 0x00, 0x29, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x2c, 0x00, 0x2c, 0x00, + 0x2f, 0x00, 0x30, 0x00, 0x2d, 0x00, 0x30, 0x00, 0x32, 0x00, 0x30, 0x00, + 0x31, 0x00, 0x35, 0x00, 0x33, 0x00, 0x32, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x34, 0x00, 0x36, 0x00, 0x3a, 0x00, 0x36, 0x00, 0x37, 0x00, 0x3b, 0x00, + 0x39, 0x00, 0x37, 0x00, 0x39, 0x00, 0x3b, 0x00, 0x39, 0x00, 0x3a, 0x00, + 0x3b, 0x00, 0x39, 0x00, 0x39, 0x00, 0x3d, 0x00, 0x3b, 0x00, 0x3b, 0x00, + 0x3c, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3c, 0x00, + 0x3b, 0x00, 0x3e, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x3b, 0x00, 0x3c, 0x00, + 0x3d, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3b, 0x00, + 0x3e, 0x00, 0x3f, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3b, 0x00, 0x3a, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x39, 0x00, 0x38, 0x00, + 0x39, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x38, 0x00, 0x39, 0x00, 0x39, 0x00, + 0x39, 0x00, 0x37, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x35, 0x00, + 0x35, 0x00, 0x35, 0x00, 0x33, 0x00, 0x34, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x34, 0x00, 0x31, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x32, 0x00, 0x31, 0x00, + 0x2d, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x2b, 0x00, 0x2b, 0x00, + 0x29, 0x00, 0x2b, 0x00, 0x28, 0x00, 0x28, 0x00, 0x26, 0x00, 0x25, 0x00, + 0x25, 0x00, 0x27, 0x00, 0x25, 0x00, 0x23, 0x00, 0x22, 0x00, 0x24, 0x00, + 0x20, 0x00, 0x1e, 0x00, 0x1d, 0x00, 0x1f, 0x00, 0x1d, 0x00, 0x1b, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x19, 0x00, 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, + 0x14, 0x00, 0x15, 0x00, 0x14, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x0e, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0d, 0x00, + 0x07, 0x00, 0x09, 0x00, 0x07, 0x00, 0x06, 0x00, 0x02, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x03, 0x00, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xfa, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf2, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xeb, 0xff, 0xec, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe9, 0xff, + 0xe5, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe3, 0xff, 0xe0, 0xff, + 0xe0, 0xff, 0xe3, 0xff, 0xdf, 0xff, 0xdd, 0xff, 0xdf, 0xff, 0xde, 0xff, + 0xdc, 0xff, 0xdd, 0xff, 0xd9, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd9, 0xff, + 0xd5, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xd4, 0xff, 0xd6, 0xff, + 0xd3, 0xff, 0xd1, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xd0, 0xff, 0xcf, 0xff, + 0xd0, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xcd, 0xff, + 0xcc, 0xff, 0xcb, 0xff, 0xca, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xcb, 0xff, + 0xca, 0xff, 0xca, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc9, 0xff, 0xc9, 0xff, + 0xc7, 0xff, 0xc6, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xc6, 0xff, 0xc7, 0xff, + 0xc4, 0xff, 0xc5, 0xff, 0xc6, 0xff, 0xc7, 0xff, 0xc3, 0xff, 0xc3, 0xff, + 0xc6, 0xff, 0xc4, 0xff, 0xc3, 0xff, 0xc4, 0xff, 0xc7, 0xff, 0xc4, 0xff, + 0xc3, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xc4, 0xff, + 0xc4, 0xff, 0xc5, 0xff, 0xc7, 0xff, 0xc5, 0xff, 0xc4, 0xff, 0xc6, 0xff, + 0xc7, 0xff, 0xc4, 0xff, 0xc5, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xc6, 0xff, + 0xc7, 0xff, 0xc8, 0xff, 0xc9, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xca, 0xff, + 0xca, 0xff, 0xc7, 0xff, 0xca, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xca, 0xff, + 0xcc, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xce, 0xff, + 0xcf, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xcf, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xd2, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd7, 0xff, + 0xd6, 0xff, 0xd6, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xd9, 0xff, 0xd9, 0xff, + 0xdc, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xe0, 0xff, 0xe0, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe6, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xee, 0xff, 0xef, 0xff, 0xee, 0xff, + 0xf0, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0xf7, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0f, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x18, 0x00, 0x16, 0x00, + 0x18, 0x00, 0x19, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x1d, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x20, 0x00, + 0x23, 0x00, 0x24, 0x00, 0x26, 0x00, 0x24, 0x00, 0x25, 0x00, 0x25, 0x00, + 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x29, 0x00, + 0x2c, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2a, 0x00, 0x2f, 0x00, 0x32, 0x00, + 0x31, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x31, 0x00, 0x32, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, + 0x34, 0x00, 0x34, 0x00, 0x36, 0x00, 0x36, 0x00, 0x35, 0x00, 0x36, 0x00, + 0x38, 0x00, 0x35, 0x00, 0x37, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x39, 0x00, 0x3a, 0x00, 0x37, 0x00, 0x37, 0x00, 0x3a, 0x00, 0x3b, 0x00, + 0x37, 0x00, 0x37, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x3b, 0x00, 0x3b, 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3b, 0x00, 0x39, 0x00, + 0x39, 0x00, 0x3b, 0x00, 0x39, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3a, 0x00, + 0x38, 0x00, 0x3a, 0x00, 0x39, 0x00, 0x37, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x37, 0x00, 0x38, 0x00, 0x38, 0x00, 0x37, 0x00, 0x37, 0x00, 0x36, 0x00, + 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x34, 0x00, 0x34, 0x00, 0x33, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x35, 0x00, 0x32, 0x00, 0x31, 0x00, 0x32, 0x00, + 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x30, 0x00, 0x2d, 0x00, 0x2e, 0x00, + 0x2e, 0x00, 0x2e, 0x00, 0x2c, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x2c, 0x00, + 0x2a, 0x00, 0x28, 0x00, 0x28, 0x00, 0x29, 0x00, 0x24, 0x00, 0x25, 0x00, + 0x26, 0x00, 0x24, 0x00, 0x23, 0x00, 0x24, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x21, 0x00, 0x1f, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1d, 0x00, 0x1a, 0x00, + 0x1b, 0x00, 0x1b, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x16, 0x00, + 0x14, 0x00, 0x15, 0x00, 0x13, 0x00, 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x08, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xf4, 0xff, 0xf6, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xed, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xe5, 0xff, + 0xe4, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xde, 0xff, 0xe0, 0xff, + 0xe0, 0xff, 0xe0, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xdd, 0xff, + 0xdb, 0xff, 0xda, 0xff, 0xd6, 0xff, 0xd9, 0xff, 0xdb, 0xff, 0xd8, 0xff, + 0xd2, 0xff, 0xd5, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xd2, 0xff, 0xd2, 0xff, + 0xd0, 0xff, 0xd1, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xce, 0xff, 0xcf, 0xff, + 0xd0, 0xff, 0xd0, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xce, 0xff, + 0xce, 0xff, 0xcc, 0xff, 0xc8, 0xff, 0xcb, 0xff, 0xcd, 0xff, 0xcc, 0xff, + 0xc8, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xc8, 0xff, + 0xc8, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xc8, 0xff, 0xc5, 0xff, 0xc6, 0xff, + 0xc9, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xc6, 0xff, 0xc6, 0xff, + 0xc8, 0xff, 0xc7, 0xff, 0xc6, 0xff, 0xc5, 0xff, 0xc8, 0xff, 0xc7, 0xff, + 0xc7, 0xff, 0xc7, 0xff, 0xc7, 0xff, 0xc8, 0xff, 0xca, 0xff, 0xc8, 0xff, + 0xc7, 0xff, 0xc8, 0xff, 0xcb, 0xff, 0xca, 0xff, 0xca, 0xff, 0xca, 0xff, + 0xc8, 0xff, 0xc9, 0xff, 0xcb, 0xff, 0xca, 0xff, 0xcb, 0xff, 0xcb, 0xff, + 0xcc, 0xff, 0xcb, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xcd, 0xff, 0xcd, 0xff, + 0xce, 0xff, 0xcc, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xcf, 0xff, 0xcf, 0xff, + 0xd2, 0xff, 0xd2, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xd3, 0xff, 0xd2, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd7, 0xff, + 0xd9, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xdc, 0xff, 0xdc, 0xff, + 0xdc, 0xff, 0xdb, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xe1, 0xff, 0xdf, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xec, 0xff, 0xeb, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xec, 0xff, 0xee, 0xff, 0xf0, 0xff, + 0xef, 0xff, 0xee, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf4, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0e, 0x00, + 0x11, 0x00, 0x13, 0x00, 0x10, 0x00, 0x12, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x15, 0x00, 0x16, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x19, 0x00, + 0x1a, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x1d, 0x00, 0x1f, 0x00, + 0x21, 0x00, 0x21, 0x00, 0x20, 0x00, 0x22, 0x00, 0x22, 0x00, 0x23, 0x00, + 0x25, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x27, 0x00, 0x27, 0x00, + 0x29, 0x00, 0x2a, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2d, 0x00, 0x2c, 0x00, + 0x2b, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2f, 0x00, + 0x30, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, + 0x33, 0x00, 0x32, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x35, 0x00, 0x35, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x34, 0x00, 0x36, 0x00, 0x37, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x38, 0x00, 0x37, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x37, 0x00, 0x36, 0x00, 0x38, 0x00, 0x39, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x39, 0x00, 0x38, 0x00, 0x35, 0x00, 0x36, 0x00, + 0x39, 0x00, 0x39, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x37, 0x00, + 0x37, 0x00, 0x37, 0x00, 0x34, 0x00, 0x35, 0x00, 0x35, 0x00, 0x36, 0x00, + 0x33, 0x00, 0x32, 0x00, 0x35, 0x00, 0x34, 0x00, 0x31, 0x00, 0x32, 0x00, + 0x32, 0x00, 0x31, 0x00, 0x2f, 0x00, 0x32, 0x00, 0x30, 0x00, 0x2f, 0x00, + 0x2f, 0x00, 0x2f, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2d, 0x00, + 0x2a, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x29, 0x00, + 0x27, 0x00, 0x28, 0x00, 0x27, 0x00, 0x28, 0x00, 0x24, 0x00, 0x25, 0x00, + 0x25, 0x00, 0x24, 0x00, 0x21, 0x00, 0x23, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x1d, 0x00, 0x20, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1d, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x14, 0x00, 0x15, 0x00, 0x13, 0x00, 0x14, 0x00, 0x0f, 0x00, 0x11, 0x00, + 0x10, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0a, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf6, 0xff, + 0xf5, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0xed, 0xff, 0xef, 0xff, 0xef, 0xff, 0xee, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe5, 0xff, 0xe7, 0xff, + 0xe8, 0xff, 0xe6, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe3, 0xff, 0xe1, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdd, 0xff, + 0xdd, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xda, 0xff, 0xd9, 0xff, + 0xd8, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xd6, 0xff, + 0xd5, 0xff, 0xd6, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd5, 0xff, 0xd4, 0xff, + 0xd2, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xd3, 0xff, 0xd2, 0xff, 0xd0, 0xff, + 0xcf, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xcd, 0xff, + 0xcf, 0xff, 0xce, 0xff, 0xcc, 0xff, 0xcc, 0xff, 0xcd, 0xff, 0xcc, 0xff, + 0xcc, 0xff, 0xcd, 0xff, 0xcb, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xca, 0xff, + 0xcb, 0xff, 0xcc, 0xff, 0xca, 0xff, 0xc9, 0xff, 0xca, 0xff, 0xcc, 0xff, + 0xcb, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xc8, 0xff, + 0xc9, 0xff, 0xcc, 0xff, 0xcb, 0xff, 0xc8, 0xff, 0xcc, 0xff, 0xcb, 0xff, + 0xc9, 0xff, 0xcb, 0xff, 0xcd, 0xff, 0xca, 0xff, 0xcc, 0xff, 0xce, 0xff, + 0xcc, 0xff, 0xcb, 0xff, 0xce, 0xff, 0xce, 0xff, 0xcc, 0xff, 0xcd, 0xff, + 0xd0, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xce, 0xff, 0xcd, 0xff, + 0xd1, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd2, 0xff, 0xd2, 0xff, + 0xd2, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xd5, 0xff, 0xd6, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd8, 0xff, + 0xdb, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xdb, 0xff, + 0xdd, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe0, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe5, 0xff, 0xe5, 0xff, + 0xe6, 0xff, 0xe5, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xe9, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xec, 0xff, 0xed, 0xff, 0xef, 0xff, + 0xf1, 0xff, 0xef, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0xf8, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x15, 0x00, 0x13, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x1a, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, + 0x1f, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x22, 0x00, 0x21, 0x00, + 0x21, 0x00, 0x24, 0x00, 0x24, 0x00, 0x22, 0x00, 0x24, 0x00, 0x26, 0x00, + 0x26, 0x00, 0x25, 0x00, 0x27, 0x00, 0x29, 0x00, 0x27, 0x00, 0x29, 0x00, + 0x2a, 0x00, 0x29, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2b, 0x00, 0x2c, 0x00, + 0x2e, 0x00, 0x2d, 0x00, 0x2c, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x2c, 0x00, + 0x2f, 0x00, 0x32, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x32, 0x00, 0x33, 0x00, + 0x31, 0x00, 0x31, 0x00, 0x33, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, + 0x31, 0x00, 0x33, 0x00, 0x36, 0x00, 0x32, 0x00, 0x31, 0x00, 0x35, 0x00, + 0x36, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, + 0x37, 0x00, 0x36, 0x00, 0x33, 0x00, 0x33, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x35, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x35, 0x00, + 0x32, 0x00, 0x34, 0x00, 0x35, 0x00, 0x34, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x34, 0x00, 0x32, 0x00, 0x32, 0x00, 0x31, 0x00, 0x31, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x32, 0x00, + 0x30, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2e, 0x00, + 0x2d, 0x00, 0x2e, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2b, 0x00, 0x2a, 0x00, + 0x2a, 0x00, 0x2b, 0x00, 0x28, 0x00, 0x28, 0x00, 0x27, 0x00, 0x28, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x24, 0x00, 0x25, 0x00, 0x24, 0x00, 0x23, 0x00, + 0x21, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1a, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x16, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x13, 0x00, 0x15, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0c, 0x00, 0x0e, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x04, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xed, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xee, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xe6, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe5, 0xff, + 0xe3, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe0, 0xff, 0xdf, 0xff, + 0xde, 0xff, 0xe2, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xde, 0xff, + 0xdc, 0xff, 0xdb, 0xff, 0xd7, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xd9, 0xff, + 0xd7, 0xff, 0xd7, 0xff, 0xd6, 0xff, 0xd9, 0xff, 0xd6, 0xff, 0xd4, 0xff, + 0xd6, 0xff, 0xd6, 0xff, 0xd1, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xd1, 0xff, 0xd1, 0xff, 0xcf, 0xff, 0xd3, 0xff, 0xd1, 0xff, 0xcf, 0xff, + 0xce, 0xff, 0xd2, 0xff, 0xcf, 0xff, 0xcd, 0xff, 0xcf, 0xff, 0xd0, 0xff, + 0xcf, 0xff, 0xcf, 0xff, 0xcc, 0xff, 0xcd, 0xff, 0xcf, 0xff, 0xcf, 0xff, + 0xcb, 0xff, 0xcc, 0xff, 0xcf, 0xff, 0xcc, 0xff, 0xcd, 0xff, 0xce, 0xff, + 0xcc, 0xff, 0xcb, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xcc, 0xff, 0xcb, 0xff, + 0xcc, 0xff, 0xce, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xcd, 0xff, + 0xce, 0xff, 0xce, 0xff, 0xcf, 0xff, 0xcd, 0xff, 0xcc, 0xff, 0xce, 0xff, + 0xd0, 0xff, 0xcf, 0xff, 0xce, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xcf, 0xff, + 0xcf, 0xff, 0xce, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xd1, 0xff, + 0xd1, 0xff, 0xd0, 0xff, 0xd3, 0xff, 0xd5, 0xff, 0xd2, 0xff, 0xd1, 0xff, + 0xd5, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd4, 0xff, + 0xd7, 0xff, 0xd9, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd9, 0xff, 0xd9, 0xff, + 0xd9, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xdd, 0xff, + 0xe0, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe1, 0xff, 0xe0, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe5, 0xff, 0xe5, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0xef, 0xff, 0xee, 0xff, 0xed, 0xff, 0xef, 0xff, + 0xf1, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf1, 0xff, + 0xf4, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf7, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x07, 0x00, + 0x04, 0x00, 0x01, 0x00, 0x05, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x09, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x13, 0x00, 0x16, 0x00, 0x14, 0x00, 0x13, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, 0x17, 0x00, 0x1c, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x1e, 0x00, + 0x1e, 0x00, 0x21, 0x00, 0x23, 0x00, 0x20, 0x00, 0x21, 0x00, 0x24, 0x00, + 0x25, 0x00, 0x24, 0x00, 0x25, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x28, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2b, 0x00, + 0x2e, 0x00, 0x2d, 0x00, 0x2b, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x2d, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x32, 0x00, 0x31, 0x00, + 0x2f, 0x00, 0x31, 0x00, 0x32, 0x00, 0x31, 0x00, 0x31, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x31, 0x00, 0x31, 0x00, 0x35, 0x00, 0x30, 0x00, 0x31, 0x00, + 0x32, 0x00, 0x32, 0x00, 0x31, 0x00, 0x34, 0x00, 0x35, 0x00, 0x32, 0x00, + 0x30, 0x00, 0x33, 0x00, 0x32, 0x00, 0x32, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x31, 0x00, 0x31, 0x00, 0x33, 0x00, 0x33, 0x00, 0x31, 0x00, 0x32, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x32, 0x00, 0x32, 0x00, 0x30, 0x00, 0x31, 0x00, + 0x30, 0x00, 0x31, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x2f, 0x00, + 0x2c, 0x00, 0x2d, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x2b, 0x00, 0x2c, 0x00, + 0x2d, 0x00, 0x2b, 0x00, 0x29, 0x00, 0x2b, 0x00, 0x28, 0x00, 0x2a, 0x00, + 0x2a, 0x00, 0x29, 0x00, 0x26, 0x00, 0x28, 0x00, 0x27, 0x00, 0x27, 0x00, + 0x25, 0x00, 0x26, 0x00, 0x25, 0x00, 0x26, 0x00, 0x23, 0x00, 0x22, 0x00, + 0x22, 0x00, 0x23, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1f, 0x00, 0x1e, 0x00, + 0x20, 0x00, 0x20, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x1d, 0x00, + 0x17, 0x00, 0x19, 0x00, 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, 0x18, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x15, 0x00, 0x14, 0x00, 0x11, 0x00, 0x12, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0e, 0x00, 0x0b, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xf9, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf2, 0xff, + 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xe8, 0xff, + 0xe7, 0xff, 0xe5, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe2, 0xff, + 0xe2, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xdf, 0xff, 0xde, 0xff, + 0xdd, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xdb, 0xff, + 0xdc, 0xff, 0xdb, 0xff, 0xd8, 0xff, 0xd9, 0xff, 0xd8, 0xff, 0xd9, 0xff, + 0xd7, 0xff, 0xd8, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd4, 0xff, 0xd5, 0xff, + 0xd5, 0xff, 0xd5, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xd3, 0xff, 0xd3, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xd2, 0xff, 0xd3, 0xff, + 0xd1, 0xff, 0xd1, 0xff, 0xcf, 0xff, 0xd1, 0xff, 0xcf, 0xff, 0xd0, 0xff, + 0xd0, 0xff, 0xd1, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd0, 0xff, + 0xcf, 0xff, 0xce, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xd0, 0xff, 0xcf, 0xff, + 0xce, 0xff, 0xce, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xcf, 0xff, 0xcf, 0xff, + 0xd0, 0xff, 0xd0, 0xff, 0xcf, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd0, 0xff, + 0xd0, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xd0, 0xff, + 0xd2, 0xff, 0xd2, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xd3, 0xff, 0xd6, 0xff, + 0xd4, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xd5, 0xff, + 0xd4, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd7, 0xff, 0xd6, 0xff, 0xd4, 0xff, + 0xd6, 0xff, 0xda, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xdb, 0xff, 0xdb, 0xff, + 0xd9, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xdd, 0xff, + 0xdf, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe2, 0xff, + 0xe3, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe6, 0xff, + 0xe7, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe9, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xed, 0xff, 0xee, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf4, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x06, 0x00, 0x03, 0x00, 0x04, 0x00, 0x07, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x0c, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x11, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x1a, 0x00, 0x18, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1d, 0x00, + 0x1d, 0x00, 0x1c, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x1f, 0x00, + 0x23, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x24, 0x00, + 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x24, 0x00, 0x27, 0x00, 0x28, 0x00, + 0x29, 0x00, 0x26, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x29, 0x00, 0x28, 0x00, + 0x2b, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x2c, 0x00, + 0x2d, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x30, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x2e, 0x00, + 0x30, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x2f, 0x00, + 0x2e, 0x00, 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 0x2d, 0x00, 0x30, 0x00, + 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x2e, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x2f, 0x00, 0x30, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2f, 0x00, 0x2d, 0x00, + 0x2b, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2b, 0x00, 0x2a, 0x00, 0x2a, 0x00, + 0x2b, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x28, 0x00, 0x27, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x26, 0x00, 0x25, 0x00, 0x27, 0x00, 0x26, 0x00, + 0x25, 0x00, 0x23, 0x00, 0x26, 0x00, 0x24, 0x00, 0x22, 0x00, 0x21, 0x00, + 0x22, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x21, 0x00, 0x1e, 0x00, + 0x1d, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x17, 0x00, 0x15, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x11, 0x00, + 0x11, 0x00, 0x12, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0d, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x09, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x07, 0x00, 0x06, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf8, 0xff, + 0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf1, 0xff, 0xf3, 0xff, + 0xf2, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xec, 0xff, + 0xeb, 0xff, 0xed, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xe9, 0xff, + 0xe8, 0xff, 0xe9, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe8, 0xff, + 0xe3, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xe3, 0xff, + 0xe0, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xdd, 0xff, 0xdd, 0xff, + 0xdf, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xdb, 0xff, + 0xdb, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd8, 0xff, 0xd8, 0xff, + 0xd6, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xd7, 0xff, + 0xd4, 0xff, 0xd5, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xd2, 0xff, 0xd2, 0xff, + 0xd5, 0xff, 0xd6, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xd1, 0xff, 0xd3, 0xff, + 0xd5, 0xff, 0xd3, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xd4, 0xff, 0xd4, 0xff, + 0xd2, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0xd1, 0xff, 0xd2, 0xff, 0xd2, 0xff, + 0xd1, 0xff, 0xd1, 0xff, 0xd3, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xd0, 0xff, + 0xd3, 0xff, 0xd1, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xd3, 0xff, 0xd1, 0xff, + 0xd4, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xd2, 0xff, 0xd4, 0xff, 0xd4, 0xff, + 0xd3, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xd3, 0xff, 0xd5, 0xff, 0xd4, 0xff, + 0xd6, 0xff, 0xd5, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd6, 0xff, + 0xd9, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xd9, 0xff, 0xda, 0xff, + 0xd9, 0xff, 0xd9, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xdd, 0xff, + 0xdd, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe0, 0xff, + 0xe0, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xeb, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, 0xed, 0xff, + 0xee, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf4, 0xff, + 0xf2, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xf9, 0xff, 0xfb, 0xff, + 0x00, 0x00, 0xfd, 0xff, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x04, 0x00, 0x08, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x11, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x17, 0x00, 0x16, 0x00, + 0x15, 0x00, 0x17, 0x00, 0x19, 0x00, 0x17, 0x00, 0x1a, 0x00, 0x1b, 0x00, + 0x1b, 0x00, 0x19, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1f, 0x00, + 0x1e, 0x00, 0x1d, 0x00, 0x21, 0x00, 0x21, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x21, 0x00, 0x23, 0x00, 0x24, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x26, 0x00, 0x25, 0x00, 0x26, 0x00, 0x26, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x27, 0x00, 0x27, 0x00, 0x28, 0x00, + 0x2b, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x29, 0x00, + 0x2c, 0x00, 0x2c, 0x00, 0x2a, 0x00, 0x29, 0x00, 0x2c, 0x00, 0x2c, 0x00, + 0x2e, 0x00, 0x2c, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x30, 0x00, 0x2e, 0x00, + 0x2c, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x2e, 0x00, 0x2d, 0x00, + 0x2c, 0x00, 0x2c, 0x00, 0x2e, 0x00, 0x2d, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x2e, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x2e, 0x00, 0x2e, 0x00, 0x2b, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x2d, 0x00, + 0x2b, 0x00, 0x2a, 0x00, 0x2c, 0x00, 0x2c, 0x00, 0x2a, 0x00, 0x2a, 0x00, + 0x2b, 0x00, 0x29, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x29, 0x00, 0x29, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x27, 0x00, 0x28, 0x00, 0x26, 0x00, 0x26, 0x00, + 0x25, 0x00, 0x26, 0x00, 0x25, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, + 0x23, 0x00, 0x21, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1f, 0x00, 0x20, 0x00, + 0x20, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1d, 0x00, 0x1f, 0x00, 0x1e, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x19, 0x00, + 0x17, 0x00, 0x16, 0x00, 0x19, 0x00, 0x18, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x13, 0x00, 0x14, 0x00, 0x14, 0x00, 0x13, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x0d, 0x00, + 0x0b, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x09, 0x00, 0x07, 0x00, 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf4, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe7, 0xff, + 0xe3, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xe1, 0xff, 0xe5, 0xff, + 0xe5, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xe0, 0xff, 0xe0, 0xff, + 0xe1, 0xff, 0xe0, 0xff, 0xdd, 0xff, 0xdf, 0xff, 0xe0, 0xff, 0xde, 0xff, + 0xdd, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xdb, 0xff, 0xdb, 0xff, + 0xda, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xd9, 0xff, 0xd7, 0xff, 0xda, 0xff, + 0xd9, 0xff, 0xd7, 0xff, 0xd6, 0xff, 0xda, 0xff, 0xd7, 0xff, 0xd6, 0xff, + 0xd8, 0xff, 0xd8, 0xff, 0xd4, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd6, 0xff, + 0xd5, 0xff, 0xd7, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xd6, 0xff, 0xd7, 0xff, + 0xd3, 0xff, 0xd4, 0xff, 0xd5, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xd6, 0xff, + 0xd5, 0xff, 0xd4, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xd3, 0xff, 0xd3, 0xff, + 0xd6, 0xff, 0xd5, 0xff, 0xd4, 0xff, 0xd4, 0xff, 0xd6, 0xff, 0xd5, 0xff, + 0xd3, 0xff, 0xd2, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xd5, 0xff, + 0xd6, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd7, 0xff, 0xd6, 0xff, + 0xd8, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xd9, 0xff, + 0xd7, 0xff, 0xd7, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xda, 0xff, 0xdb, 0xff, + 0xdb, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xdf, 0xff, + 0xde, 0xff, 0xde, 0xff, 0xde, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xe1, 0xff, + 0xde, 0xff, 0xdf, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe3, 0xff, + 0xe5, 0xff, 0xe4, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe5, 0xff, 0xe6, 0xff, + 0xea, 0xff, 0xe9, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xec, 0xff, 0xe9, 0xff, + 0xeb, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xee, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x09, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x10, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x11, 0x00, 0x10, 0x00, 0x13, 0x00, 0x14, 0x00, + 0x14, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, 0x17, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x17, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1d, 0x00, + 0x1e, 0x00, 0x20, 0x00, 0x21, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, + 0x22, 0x00, 0x21, 0x00, 0x24, 0x00, 0x23, 0x00, 0x22, 0x00, 0x23, 0x00, + 0x25, 0x00, 0x25, 0x00, 0x26, 0x00, 0x26, 0x00, 0x25, 0x00, 0x24, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x26, 0x00, 0x26, 0x00, 0x29, 0x00, 0x27, 0x00, + 0x29, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2a, 0x00, 0x2a, 0x00, + 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x2a, 0x00, + 0x27, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x2a, 0x00, 0x28, 0x00, + 0x29, 0x00, 0x2b, 0x00, 0x2d, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x2b, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, + 0x2a, 0x00, 0x2a, 0x00, 0x29, 0x00, 0x29, 0x00, 0x28, 0x00, 0x2b, 0x00, + 0x29, 0x00, 0x27, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x29, 0x00, + 0x26, 0x00, 0x25, 0x00, 0x27, 0x00, 0x29, 0x00, 0x23, 0x00, 0x22, 0x00, + 0x28, 0x00, 0x28, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x21, 0x00, 0x22, 0x00, 0x22, 0x00, 0x23, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x22, 0x00, 0x21, 0x00, 0x1e, 0x00, 0x1f, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x1d, 0x00, + 0x1a, 0x00, 0x19, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x17, 0x00, 0x18, 0x00, 0x16, 0x00, 0x17, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x13, 0x00, 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0d, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x09, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf1, 0xff, + 0xf0, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xec, 0xff, 0xeb, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xe9, 0xff, 0xeb, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xe6, 0xff, 0xe5, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe4, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xdf, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0xdf, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xde, 0xff, + 0xdf, 0xff, 0xdd, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xdf, 0xff, 0xdd, 0xff, + 0xda, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xd9, 0xff, + 0xd9, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xd9, 0xff, 0xd8, 0xff, 0xd9, 0xff, + 0xd9, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xd8, 0xff, + 0xd9, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xd7, 0xff, + 0xd7, 0xff, 0xd9, 0xff, 0xd7, 0xff, 0xd6, 0xff, 0xd7, 0xff, 0xd8, 0xff, + 0xd7, 0xff, 0xd7, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xd8, 0xff, + 0xd7, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xd9, 0xff, 0xd7, 0xff, 0xd8, 0xff, + 0xd9, 0xff, 0xd9, 0xff, 0xd7, 0xff, 0xd8, 0xff, 0xd9, 0xff, 0xd9, 0xff, + 0xda, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xdb, 0xff, + 0xdb, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xdd, 0xff, + 0xde, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xe0, 0xff, + 0xde, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe3, 0xff, + 0xe0, 0xff, 0xe1, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe5, 0xff, + 0xe6, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xec, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xee, 0xff, 0xed, 0xff, 0xef, 0xff, + 0xf1, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf4, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf7, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x03, 0x00, 0x02, 0x00, 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x12, 0x00, + 0x13, 0x00, 0x11, 0x00, 0x12, 0x00, 0x15, 0x00, 0x17, 0x00, 0x15, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1e, 0x00, + 0x1e, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, + 0x23, 0x00, 0x20, 0x00, 0x21, 0x00, 0x21, 0x00, 0x23, 0x00, 0x24, 0x00, + 0x25, 0x00, 0x22, 0x00, 0x23, 0x00, 0x25, 0x00, 0x25, 0x00, 0x23, 0x00, + 0x25, 0x00, 0x26, 0x00, 0x26, 0x00, 0x27, 0x00, 0x27, 0x00, 0x26, 0x00, + 0x27, 0x00, 0x26, 0x00, 0x26, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, + 0x28, 0x00, 0x27, 0x00, 0x27, 0x00, 0x28, 0x00, 0x28, 0x00, 0x27, 0x00, + 0x29, 0x00, 0x28, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x28, 0x00, + 0x27, 0x00, 0x28, 0x00, 0x27, 0x00, 0x27, 0x00, 0x29, 0x00, 0x28, 0x00, + 0x26, 0x00, 0x26, 0x00, 0x27, 0x00, 0x25, 0x00, 0x27, 0x00, 0x28, 0x00, + 0x25, 0x00, 0x25, 0x00, 0x27, 0x00, 0x28, 0x00, 0x26, 0x00, 0x25, 0x00, + 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x27, 0x00, 0x24, 0x00, 0x23, 0x00, + 0x25, 0x00, 0x25, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x22, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, 0x1f, 0x00, 0x21, 0x00, + 0x20, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1d, 0x00, 0x1d, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1c, 0x00, + 0x1b, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x19, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x16, 0x00, 0x16, 0x00, 0x17, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, 0x14, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xf8, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf8, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xf0, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xee, 0xff, + 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xe5, 0xff, + 0xe5, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe6, 0xff, 0xe4, 0xff, + 0xe2, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe0, 0xff, + 0xe2, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xdf, 0xff, 0xe0, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xdd, 0xff, + 0xdd, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xde, 0xff, + 0xdc, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xda, 0xff, + 0xdc, 0xff, 0xd9, 0xff, 0xda, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xd8, 0xff, + 0xdc, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xda, 0xff, 0xda, 0xff, + 0xda, 0xff, 0xda, 0xff, 0xda, 0xff, 0xd9, 0xff, 0xda, 0xff, 0xdc, 0xff, + 0xda, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xdd, 0xff, + 0xdb, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xda, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xdd, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xdb, 0xff, 0xdc, 0xff, + 0xdd, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xdd, 0xff, 0xdf, 0xff, 0xe0, 0xff, + 0xde, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xe0, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe3, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xe5, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe9, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xec, 0xff, 0xed, 0xff, 0xed, 0xff, 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf4, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf5, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x03, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x05, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x09, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0b, 0x00, + 0x0e, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0e, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x10, 0x00, 0x13, 0x00, 0x12, 0x00, + 0x11, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, + 0x17, 0x00, 0x16, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x1b, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1f, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x1f, 0x00, 0x21, 0x00, 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x24, 0x00, 0x23, 0x00, 0x21, 0x00, 0x21, 0x00, 0x24, 0x00, 0x23, 0x00, + 0x23, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x26, 0x00, 0x25, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x25, 0x00, 0x25, 0x00, 0x24, 0x00, 0x22, 0x00, + 0x24, 0x00, 0x25, 0x00, 0x27, 0x00, 0x26, 0x00, 0x25, 0x00, 0x24, 0x00, + 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x26, 0x00, 0x26, 0x00, + 0x25, 0x00, 0x24, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x23, 0x00, + 0x24, 0x00, 0x24, 0x00, 0x25, 0x00, 0x23, 0x00, 0x22, 0x00, 0x23, 0x00, + 0x24, 0x00, 0x22, 0x00, 0x21, 0x00, 0x22, 0x00, 0x24, 0x00, 0x21, 0x00, + 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x20, 0x00, + 0x21, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x1c, 0x00, + 0x1f, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1b, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x1b, 0x00, + 0x19, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x18, 0x00, 0x16, 0x00, + 0x15, 0x00, 0x17, 0x00, 0x16, 0x00, 0x14, 0x00, 0x13, 0x00, 0x15, 0x00, + 0x12, 0x00, 0x12, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x11, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0d, 0x00, + 0x0c, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x09, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0xfe, 0xff, 0xfb, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf8, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xef, 0xff, 0xf1, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xed, 0xff, 0xef, 0xff, 0xeb, 0xff, 0xe9, 0xff, + 0xea, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xe8, 0xff, + 0xe8, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe8, 0xff, + 0xe6, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe4, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe2, 0xff, + 0xe2, 0xff, 0xe1, 0xff, 0xde, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xdf, 0xff, + 0xde, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xde, 0xff, + 0xdd, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xde, 0xff, + 0xdd, 0xff, 0xdc, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdc, 0xff, + 0xdc, 0xff, 0xdd, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xdd, 0xff, + 0xde, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xdc, 0xff, 0xdd, 0xff, 0xdc, 0xff, + 0xdd, 0xff, 0xdc, 0xff, 0xdb, 0xff, 0xdb, 0xff, 0xde, 0xff, 0xdd, 0xff, + 0xdc, 0xff, 0xdc, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xde, 0xff, + 0xdc, 0xff, 0xdc, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xde, 0xff, + 0xdf, 0xff, 0xde, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xe0, 0xff, + 0xe2, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe3, 0xff, 0xe1, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe6, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xee, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xee, 0xff, + 0xf0, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf3, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0a, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0e, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x11, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x14, 0x00, 0x14, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x16, 0x00, 0x14, 0x00, 0x17, 0x00, 0x18, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1d, 0x00, + 0x1c, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1c, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x20, 0x00, + 0x20, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x21, 0x00, 0x20, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x21, 0x00, + 0x21, 0x00, 0x21, 0x00, 0x20, 0x00, 0x22, 0x00, 0x23, 0x00, 0x23, 0x00, + 0x23, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, 0x00, + 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x23, 0x00, 0x21, 0x00, 0x22, 0x00, + 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x23, 0x00, 0x21, 0x00, 0x20, 0x00, + 0x22, 0x00, 0x23, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x20, 0x00, + 0x20, 0x00, 0x22, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x21, 0x00, + 0x20, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x1d, 0x00, + 0x1d, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x1d, 0x00, + 0x1e, 0x00, 0x1d, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x18, 0x00, 0x1a, 0x00, + 0x18, 0x00, 0x17, 0x00, 0x16, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x16, 0x00, 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x12, 0x00, 0x11, 0x00, 0x12, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, + 0x0c, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x0b, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf6, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf2, 0xff, 0xf4, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf1, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xee, 0xff, 0xef, 0xff, 0xee, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xee, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xec, 0xff, + 0xeb, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe7, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe6, 0xff, + 0xe6, 0xff, 0xe5, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe4, 0xff, + 0xe2, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xe1, 0xff, + 0xe2, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xe0, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xdf, 0xff, + 0xdf, 0xff, 0xe0, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xdf, 0xff, + 0xde, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xdf, 0xff, + 0xde, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xde, 0xff, 0xdf, 0xff, + 0xdd, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xdf, 0xff, 0xe0, 0xff, + 0xde, 0xff, 0xdf, 0xff, 0xdf, 0xff, 0xe1, 0xff, 0xde, 0xff, 0xe0, 0xff, + 0xe1, 0xff, 0xe0, 0xff, 0xde, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe2, 0xff, + 0xe0, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe0, 0xff, 0xe3, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe4, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xe8, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xec, 0xff, 0xee, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf1, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf4, 0xff, + 0xf3, 0xff, 0xf1, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x03, 0x00, 0x05, 0x00, 0x01, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0d, 0x00, + 0x0f, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x13, 0x00, 0x11, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, 0x12, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x17, 0x00, 0x17, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x18, 0x00, 0x17, 0x00, 0x15, 0x00, 0x15, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x17, 0x00, 0x17, 0x00, 0x19, 0x00, 0x1a, 0x00, + 0x1a, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x1b, 0x00, 0x1d, 0x00, + 0x1c, 0x00, 0x1a, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1d, 0x00, 0x1c, 0x00, + 0x1e, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x1d, 0x00, + 0x1f, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x21, 0x00, 0x1f, 0x00, 0x21, 0x00, 0x21, 0x00, + 0x21, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x22, 0x00, 0x21, 0x00, 0x1f, 0x00, + 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x21, 0x00, 0x21, 0x00, 0x1f, 0x00, 0x1e, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x20, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x21, 0x00, 0x20, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, + 0x1e, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1d, 0x00, 0x1e, 0x00, + 0x1d, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x1f, 0x00, 0x1b, 0x00, 0x19, 0x00, + 0x1b, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x1a, 0x00, + 0x1a, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, 0x18, 0x00, + 0x17, 0x00, 0x16, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x13, 0x00, 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x11, 0x00, 0x12, 0x00, + 0x12, 0x00, 0x13, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x11, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x0c, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x09, 0x00, + 0x07, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf6, 0xff, + 0xf3, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xf1, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf1, 0xff, + 0xec, 0xff, 0xee, 0xff, 0xef, 0xff, 0xee, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xec, 0xff, 0xe7, 0xff, 0xea, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xe6, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe7, 0xff, + 0xe7, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe6, 0xff, + 0xe5, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe3, 0xff, + 0xe2, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe2, 0xff, + 0xe2, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe2, 0xff, + 0xe0, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe3, 0xff, 0xe1, 0xff, 0xe0, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xe0, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xe0, 0xff, 0xdf, 0xff, 0xe2, 0xff, 0xe2, 0xff, + 0xe1, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe3, 0xff, + 0xe2, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe2, 0xff, + 0xe2, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe5, 0xff, + 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe7, 0xff, 0xe6, 0xff, + 0xe5, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xe7, 0xff, 0xe9, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xe9, 0xff, 0xe8, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xec, 0xff, 0xed, 0xff, 0xee, 0xff, 0xef, 0xff, 0xed, 0xff, 0xed, 0xff, + 0xef, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xf1, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf7, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x07, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0a, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x13, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x12, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x18, 0x00, 0x15, 0x00, 0x16, 0x00, 0x16, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x19, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x1b, 0x00, + 0x1d, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1d, 0x00, 0x1d, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x1d, 0x00, + 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1e, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1c, 0x00, 0x1e, 0x00, + 0x20, 0x00, 0x1f, 0x00, 0x1c, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x1e, 0x00, + 0x1e, 0x00, 0x1f, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x1f, 0x00, 0x20, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x1e, 0x00, + 0x1e, 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x1a, 0x00, + 0x1d, 0x00, 0x1f, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x1b, 0x00, + 0x1c, 0x00, 0x1d, 0x00, 0x18, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1a, 0x00, + 0x19, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x19, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x15, 0x00, 0x1a, 0x00, 0x18, 0x00, 0x16, 0x00, 0x15, 0x00, 0x19, 0x00, + 0x17, 0x00, 0x15, 0x00, 0x14, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x14, 0x00, 0x15, 0x00, 0x13, 0x00, 0x13, 0x00, 0x11, 0x00, 0x12, 0x00, + 0x13, 0x00, 0x11, 0x00, 0x10, 0x00, 0x11, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0d, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x09, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf1, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xee, 0xff, + 0xec, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xeb, 0xff, 0xec, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xea, 0xff, + 0xe9, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xea, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe9, 0xff, + 0xe7, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe4, 0xff, 0xe5, 0xff, + 0xe5, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe4, 0xff, + 0xe3, 0xff, 0xe3, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe3, 0xff, 0xe4, 0xff, + 0xe3, 0xff, 0xe2, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe2, 0xff, 0xe2, 0xff, + 0xe5, 0xff, 0xe6, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xe4, 0xff, + 0xe3, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe3, 0xff, + 0xe3, 0xff, 0xe3, 0xff, 0xe2, 0xff, 0xe3, 0xff, 0xe3, 0xff, 0xe4, 0xff, + 0xe4, 0xff, 0xe3, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe4, 0xff, 0xe5, 0xff, + 0xe4, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xe4, 0xff, + 0xe6, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe7, 0xff, 0xe7, 0xff, + 0xe9, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xec, 0xff, 0xeb, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xed, 0xff, 0xef, 0xff, 0xef, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xef, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xf3, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf6, 0xff, + 0xf8, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x03, 0x00, 0x04, 0x00, 0x08, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, + 0x13, 0x00, 0x14, 0x00, 0x14, 0x00, 0x13, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x18, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, + 0x18, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x19, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x19, 0x00, 0x1a, 0x00, + 0x1b, 0x00, 0x19, 0x00, 0x18, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x1b, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x1a, 0x00, 0x1d, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1d, 0x00, + 0x1d, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1e, 0x00, 0x1a, 0x00, 0x1b, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x1c, 0x00, 0x1d, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1c, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x19, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x18, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x18, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, 0x18, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x15, 0x00, 0x16, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x15, 0x00, 0x16, 0x00, 0x13, 0x00, 0x12, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x12, 0x00, 0x13, 0x00, 0x11, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x08, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xfd, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf7, 0xff, + 0xf4, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0xf3, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf1, 0xff, + 0xf0, 0xff, 0xee, 0xff, 0xef, 0xff, 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xed, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xec, 0xff, + 0xed, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xec, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xe8, 0xff, + 0xe6, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe8, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xe8, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xe5, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe5, 0xff, + 0xe6, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe7, 0xff, + 0xe6, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xe5, 0xff, 0xe4, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xe6, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe6, 0xff, 0xe4, 0xff, + 0xe6, 0xff, 0xe9, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe9, 0xff, + 0xe6, 0xff, 0xe6, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe8, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xea, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xec, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xee, 0xff, 0xed, 0xff, 0xed, 0xff, 0xeb, 0xff, + 0xee, 0xff, 0xef, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xf4, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf5, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf7, 0xff, + 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x0e, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, 0x12, 0x00, 0x11, 0x00, 0x13, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x13, 0x00, 0x14, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x16, 0x00, 0x16, 0x00, 0x15, 0x00, 0x16, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x16, 0x00, 0x18, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x16, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x18, 0x00, + 0x17, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x17, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, + 0x1a, 0x00, 0x1b, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x18, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x18, 0x00, 0x19, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x18, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x17, 0x00, 0x19, 0x00, 0x18, 0x00, 0x17, 0x00, + 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x17, 0x00, 0x16, 0x00, 0x16, 0x00, + 0x17, 0x00, 0x18, 0x00, 0x17, 0x00, 0x15, 0x00, 0x14, 0x00, 0x16, 0x00, + 0x16, 0x00, 0x16, 0x00, 0x13, 0x00, 0x13, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x12, 0x00, + 0x10, 0x00, 0x13, 0x00, 0x12, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x10, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x0d, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf6, 0xff, + 0xf3, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf4, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0xef, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xed, 0xff, 0xef, 0xff, 0xee, 0xff, + 0xec, 0xff, 0xee, 0xff, 0xee, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xee, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xe9, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xe9, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xe6, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe8, 0xff, + 0xe9, 0xff, 0xe7, 0xff, 0xe5, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe6, 0xff, + 0xe6, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe9, 0xff, 0xe9, 0xff, + 0xe7, 0xff, 0xe8, 0xff, 0xea, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe8, 0xff, + 0xe9, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xea, 0xff, + 0xeb, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xe9, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xed, 0xff, 0xed, 0xff, 0xec, 0xff, + 0xed, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf1, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf7, 0xff, + 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x09, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0b, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x10, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x12, 0x00, 0x11, 0x00, + 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x14, 0x00, 0x14, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x16, 0x00, 0x15, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x15, 0x00, 0x15, 0x00, 0x16, 0x00, 0x16, 0x00, 0x18, 0x00, 0x16, 0x00, + 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x16, 0x00, 0x17, 0x00, 0x16, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x16, 0x00, 0x17, 0x00, 0x1a, 0x00, 0x17, 0x00, + 0x18, 0x00, 0x17, 0x00, 0x18, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x17, 0x00, 0x19, 0x00, 0x18, 0x00, 0x16, 0x00, + 0x17, 0x00, 0x17, 0x00, 0x19, 0x00, 0x18, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x16, 0x00, 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x16, 0x00, 0x15, 0x00, 0x18, 0x00, 0x16, 0x00, 0x16, 0x00, + 0x17, 0x00, 0x16, 0x00, 0x15, 0x00, 0x17, 0x00, 0x17, 0x00, 0x15, 0x00, + 0x14, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, 0x15, 0x00, 0x14, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x12, 0x00, 0x14, 0x00, 0x11, 0x00, 0x10, 0x00, 0x11, 0x00, 0x14, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0d, 0x00, 0x0e, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x09, 0x00, + 0x08, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x03, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xf9, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0xf6, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf7, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf4, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xed, 0xff, 0xef, 0xff, 0xef, 0xff, 0xed, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xed, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xec, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xeb, 0xff, + 0xeb, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xea, 0xff, + 0xe8, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xe9, 0xff, + 0xe9, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xea, 0xff, 0xe8, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xea, 0xff, + 0xea, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, 0xea, 0xff, 0xeb, 0xff, + 0xec, 0xff, 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xed, 0xff, 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf1, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf9, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x07, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0b, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x11, 0x00, 0x0f, 0x00, + 0x10, 0x00, 0x14, 0x00, 0x12, 0x00, 0x10, 0x00, 0x12, 0x00, 0x14, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x15, 0x00, 0x15, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x13, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, 0x15, 0x00, 0x15, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x15, 0x00, 0x17, 0x00, 0x16, 0x00, 0x15, 0x00, + 0x16, 0x00, 0x16, 0x00, 0x17, 0x00, 0x16, 0x00, 0x17, 0x00, 0x16, 0x00, + 0x15, 0x00, 0x16, 0x00, 0x16, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x16, 0x00, 0x15, 0x00, 0x15, 0x00, 0x16, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x15, 0x00, 0x16, 0x00, 0x16, 0x00, 0x14, 0x00, 0x14, 0x00, 0x15, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x13, 0x00, 0x15, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x12, 0x00, 0x13, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x11, 0x00, 0x13, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0d, 0x00, + 0x0c, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x08, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xf6, 0xff, + 0xf8, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf5, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xef, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xed, 0xff, 0xef, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xef, 0xff, 0xef, 0xff, 0xef, 0xff, 0xed, 0xff, + 0xee, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xec, 0xff, 0xed, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xec, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xec, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xec, 0xff, 0xea, 0xff, + 0xec, 0xff, 0xec, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xeb, 0xff, + 0xeb, 0xff, 0xec, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xee, 0xff, 0xec, 0xff, 0xea, 0xff, + 0xec, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xef, 0xff, + 0xee, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xef, 0xff, + 0xef, 0xff, 0xee, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xee, 0xff, + 0xf0, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf1, 0xff, 0xf2, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf3, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0c, 0x00, + 0x0b, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0d, 0x00, + 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0f, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x12, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x12, 0x00, 0x14, 0x00, 0x14, 0x00, 0x11, 0x00, + 0x13, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x14, 0x00, 0x15, 0x00, 0x12, 0x00, 0x12, 0x00, 0x14, 0x00, 0x13, 0x00, + 0x13, 0x00, 0x14, 0x00, 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, 0x14, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x14, 0x00, + 0x12, 0x00, 0x14, 0x00, 0x16, 0x00, 0x13, 0x00, 0x12, 0x00, 0x14, 0x00, + 0x14, 0x00, 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x14, 0x00, 0x13, 0x00, 0x14, 0x00, + 0x11, 0x00, 0x12, 0x00, 0x14, 0x00, 0x13, 0x00, 0x11, 0x00, 0x13, 0x00, + 0x13, 0x00, 0x12, 0x00, 0x11, 0x00, 0x12, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x13, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x11, 0x00, 0x12, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0f, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x0d, 0x00, + 0x0b, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x08, 0x00, 0x06, 0x00, 0x06, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x06, 0x00, 0x04, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfb, 0xff, + 0xf8, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf4, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf1, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xee, 0xff, + 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, 0xec, 0xff, 0xee, 0xff, + 0xf0, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xef, 0xff, 0xed, 0xff, + 0xeb, 0xff, 0xec, 0xff, 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xea, 0xff, + 0xec, 0xff, 0xee, 0xff, 0xef, 0xff, 0xec, 0xff, 0xec, 0xff, 0xee, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xee, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, 0xee, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xef, 0xff, 0xef, 0xff, 0xee, 0xff, 0xec, 0xff, + 0xee, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf1, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, + 0xf0, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf4, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xf3, 0xff, 0xf4, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xf4, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xfc, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfa, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x05, 0x00, 0x06, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x10, 0x00, + 0x10, 0x00, 0x0e, 0x00, 0x11, 0x00, 0x11, 0x00, 0x12, 0x00, 0x10, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0x13, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, + 0x14, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x12, 0x00, 0x11, 0x00, + 0x13, 0x00, 0x11, 0x00, 0x12, 0x00, 0x14, 0x00, 0x13, 0x00, 0x11, 0x00, + 0x12, 0x00, 0x13, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x10, 0x00, 0x11, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, 0x11, 0x00, 0x13, 0x00, + 0x11, 0x00, 0x11, 0x00, 0x12, 0x00, 0x12, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x12, 0x00, 0x12, 0x00, 0x10, 0x00, 0x11, 0x00, 0x10, 0x00, 0x11, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0d, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x07, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x07, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf6, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf4, 0xff, + 0xf2, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xf1, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xef, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0xff, + 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xef, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xf1, 0xff, + 0xef, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xed, 0xff, 0xef, 0xff, + 0xef, 0xff, 0xef, 0xff, 0xee, 0xff, 0xef, 0xff, 0xee, 0xff, 0xf0, 0xff, + 0xee, 0xff, 0xef, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xef, 0xff, + 0xef, 0xff, 0xed, 0xff, 0xee, 0xff, 0xf2, 0xff, 0xee, 0xff, 0xee, 0xff, + 0xf1, 0xff, 0xf0, 0xff, 0xed, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xef, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf2, 0xff, + 0xf1, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf0, 0xff, + 0xf0, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xf2, 0xff, + 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf3, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xf4, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xf9, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0a, 0x00, + 0x0b, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0d, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x10, 0x00, 0x11, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x11, 0x00, + 0x11, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x11, 0x00, 0x10, 0x00, 0x11, 0x00, + 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, + 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x10, 0x00, 0x10, 0x00, 0x13, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x11, 0x00, 0x10, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x11, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, + 0x12, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x11, 0x00, 0x0f, 0x00, + 0x10, 0x00, 0x11, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00, 0x0f, 0x00, + 0x0e, 0x00, 0x10, 0x00, 0x12, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x10, 0x00, + 0x0e, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0b, 0x00, 0x0d, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, + 0x0b, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x0c, 0x00, 0x09, 0x00, 0x05, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x08, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xfb, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf5, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf2, 0xff, + 0xf3, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf0, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf1, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf2, 0xff, + 0xf0, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xef, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xee, 0xff, + 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf2, 0xff, + 0xf0, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xf1, 0xff, 0xf0, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf0, 0xff, 0xf0, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf1, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf1, 0xff, + 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf2, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf4, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf5, 0xff, + 0xf5, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf7, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x09, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0d, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0e, 0x00, + 0x0d, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0d, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x11, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x10, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x0d, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0e, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0d, 0x00, + 0x0c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0f, 0x00, + 0x0d, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf3, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf3, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf2, 0xff, + 0xf2, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf4, 0xff, + 0xf2, 0xff, 0xef, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xf2, 0xff, + 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf2, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf1, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf2, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf6, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x08, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x0c, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0c, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0e, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0f, 0x00, + 0x0d, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0e, 0x00, + 0x0e, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0d, 0x00, + 0x0e, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0e, 0x00, 0x0e, 0x00, + 0x0c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0e, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0b, 0x00, + 0x0e, 0x00, 0x0d, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x06, 0x00, 0x05, 0x00, 0x03, 0x00, 0x02, 0x00, 0x05, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0xf5, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf2, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, + 0xf4, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf0, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf1, 0xff, + 0xf3, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf2, 0xff, 0xf3, 0xff, + 0xf5, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0xf5, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf3, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf6, 0xff, + 0xf5, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf6, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x07, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x07, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x0e, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0d, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x0d, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0c, 0x00, + 0x0d, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0c, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x08, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x08, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf9, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf5, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf4, 0xff, 0xf5, 0xff, + 0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf4, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xf4, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xf3, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xf4, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf5, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, + 0xf5, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf3, 0xff, 0xf6, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf7, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf9, 0xff, + 0xf7, 0xff, 0xf5, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf8, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x09, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0c, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x09, 0x00, + 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x09, 0x00, 0x09, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfb, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xf9, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf7, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf5, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf6, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf7, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf4, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x09, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x09, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x09, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0x06, 0x00, 0x07, 0x00, 0x09, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x07, 0x00, + 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xf7, 0xff, + 0xfa, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, + 0xfa, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf5, 0xff, + 0xf8, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf6, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0xf6, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf6, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf7, 0xff, 0xfa, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xff, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x08, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x09, 0x00, + 0x08, 0x00, 0x06, 0x00, 0x09, 0x00, 0x09, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x07, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0x0a, 0x00, + 0x09, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x07, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfb, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xfa, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf6, 0xff, + 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf7, 0xff, 0xf7, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf7, 0xff, 0xf8, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x03, 0x00, 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x07, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x07, 0x00, 0x07, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x09, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, 0x09, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x08, 0x00, 0x07, 0x00, 0x05, 0x00, 0x05, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x07, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xf8, 0xff, 0xfa, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfb, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfb, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x07, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x08, 0x00, 0x05, 0x00, 0x05, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x05, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfa, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xf9, 0xff, + 0xfa, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, + 0xf9, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0x01, 0x00, 0xfe, 0xff, + 0xfd, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x06, 0x00, 0x07, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x06, 0x00, 0x07, 0x00, 0x04, 0x00, 0x02, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x05, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x07, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfc, 0xff, 0xfe, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x01, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xfc, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfc, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfd, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0x00, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x03, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfd, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xfd, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfd, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xfd, 0xff, 0xfe, 0xff, 0x02, 0x00, 0x02, 0x00, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x02, 0x00, + 0x01, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff +}; +unsigned int med_system_alerts_melodic_02_short__TTH__wav_len = 384044; +// clang-format on + +#endif // ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_DATA_MED_SYSTEM_ALERTS_MELODIC_02_SHORT__TTH__WAV_H_ + +} // namespace data +} // namespace audio +} // namespace resources +} // namespace applicationUtilities +} // namespace alexaClientSDK diff --git a/ApplicationUtilities/Resources/Audio/include/Audio/NotificationsAudioFactory.h b/ApplicationUtilities/Resources/Audio/include/Audio/NotificationsAudioFactory.h new file mode 100644 index 0000000000..9f1c164f6a --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/include/Audio/NotificationsAudioFactory.h @@ -0,0 +1,39 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_NOTIFICATIONSAUDIOFACTORY_H_ +#define ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_NOTIFICATIONSAUDIOFACTORY_H_ + +#include + +namespace alexaClientSDK { +namespace applicationUtilities { +namespace resources { +namespace audio { + +/** + * A class that delivers a stream to the audio data for the default notification sound. + */ +class NotificationsAudioFactory : public avsCommon::sdkInterfaces::audio::NotificationsAudioFactoryInterface { +public: + std::function()> notificationDefault() const override; +}; + +} // namespace audio +} // namespace resources +} // namespace applicationUtilities +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_APPLICATIONUTILITIES_RESOURCES_AUDIO_INCLUDE_AUDIO_NOTIFICATIONSAUDIOFACTORY_H_ diff --git a/ApplicationUtilities/Resources/Audio/src/AlertsAudioFactory.cpp b/ApplicationUtilities/Resources/Audio/src/AlertsAudioFactory.cpp new file mode 100644 index 0000000000..a8a699d3fa --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/src/AlertsAudioFactory.cpp @@ -0,0 +1,81 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "Audio/AlertsAudioFactory.h" + +#include + +#include "Audio/Data/med_system_alerts_melodic_01._TTH_.mp3.h" +#include "Audio/Data/med_system_alerts_melodic_01_short._TTH_.wav.h" +#include "Audio/Data/med_system_alerts_melodic_02._TTH_.mp3.h" +#include "Audio/Data/med_system_alerts_melodic_02_short._TTH_.wav.h" + +namespace alexaClientSDK { +namespace applicationUtilities { +namespace resources { +namespace audio { + +static std::unique_ptr alarmDefaultFactory() { + return avsCommon::utils::stream::streamFromData( + data::med_system_alerts_melodic_01__TTH__mp3, sizeof(data::med_system_alerts_melodic_01__TTH__mp3)); +} +static std::unique_ptr alarmShortFactory() { + return avsCommon::utils::stream::streamFromData( + data::med_system_alerts_melodic_01_short__TTH__wav, sizeof(data::med_system_alerts_melodic_01_short__TTH__wav)); +} + +static std::unique_ptr timerDefaultFactory() { + return avsCommon::utils::stream::streamFromData( + data::med_system_alerts_melodic_02__TTH__mp3, sizeof(data::med_system_alerts_melodic_02__TTH__mp3)); +} +static std::unique_ptr timerShortFactory() { + return avsCommon::utils::stream::streamFromData( + data::med_system_alerts_melodic_02_short__TTH__wav, sizeof(data::med_system_alerts_melodic_02_short__TTH__wav)); +} + +static std::unique_ptr reminderDefaultFactory() { + return avsCommon::utils::stream::streamFromData( + data::med_system_alerts_melodic_01__TTH__mp3, sizeof(data::med_system_alerts_melodic_01__TTH__mp3)); +} +static std::unique_ptr reminderShortFactory() { + return avsCommon::utils::stream::streamFromData( + data::med_system_alerts_melodic_01_short__TTH__wav, sizeof(data::med_system_alerts_melodic_01_short__TTH__wav)); +} + +std::function()> AlertsAudioFactory::alarmDefault() const { + return alarmDefaultFactory; +} +std::function()> AlertsAudioFactory::alarmShort() const { + return alarmShortFactory; +} + +std::function()> AlertsAudioFactory::timerDefault() const { + return timerDefaultFactory; +} +std::function()> AlertsAudioFactory::timerShort() const { + return timerShortFactory; +} + +std::function()> AlertsAudioFactory::reminderDefault() const { + return reminderDefaultFactory; +} +std::function()> AlertsAudioFactory::reminderShort() const { + return reminderShortFactory; +} + +} // namespace audio +} // namespace resources +} // namespace applicationUtilities +} // namespace alexaClientSDK diff --git a/ApplicationUtilities/Resources/Audio/src/AudioFactory.cpp b/ApplicationUtilities/Resources/Audio/src/AudioFactory.cpp new file mode 100644 index 0000000000..ef3309acc9 --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/src/AudioFactory.cpp @@ -0,0 +1,38 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "Audio/AudioFactory.h" + +#include "Audio/AlertsAudioFactory.h" +#include "Audio/NotificationsAudioFactory.h" + +namespace alexaClientSDK { +namespace applicationUtilities { +namespace resources { +namespace audio { + +std::shared_ptr AudioFactory::alerts() const { + return std::make_shared(); +} + +std::shared_ptr AudioFactory::notifications() + const { + return std::make_shared(); +} + +} // namespace audio +} // namespace resources +} // namespace applicationUtilities +} // namespace alexaClientSDK diff --git a/ApplicationUtilities/Resources/Audio/src/CMakeLists.txt b/ApplicationUtilities/Resources/Audio/src/CMakeLists.txt new file mode 100644 index 0000000000..0331f1bb5b --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/src/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +add_library(AudioResources SHARED + AlertsAudioFactory.cpp + AudioFactory.cpp + NotificationsAudioFactory.cpp) + +target_include_directories(AudioResources PUBLIC + "${AudioResources_SOURCE_DIR}/include" + "${AVSCommon_SOURCE_DIR}/Utils/include") + +target_link_libraries(AudioResources AVSCommon) + +# install target +asdk_install() diff --git a/ApplicationUtilities/Resources/Audio/src/NotificationsAudioFactory.cpp b/ApplicationUtilities/Resources/Audio/src/NotificationsAudioFactory.cpp new file mode 100644 index 0000000000..dfcbc411fc --- /dev/null +++ b/ApplicationUtilities/Resources/Audio/src/NotificationsAudioFactory.cpp @@ -0,0 +1,39 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "Audio/NotificationsAudioFactory.h" + +#include + +#include "Audio/Data/med_alerts_notification_01._TTH_.mp3.h" + +namespace alexaClientSDK { +namespace applicationUtilities { +namespace resources { +namespace audio { + +static std::unique_ptr notificationDefaultFactory() { + return avsCommon::utils::stream::streamFromData( + data::med_alerts_notification_01__TTH__mp3, sizeof(data::med_alerts_notification_01__TTH__mp3)); +} + +std::function()> NotificationsAudioFactory::notificationDefault() const { + return notificationDefaultFactory; +} + +} // namespace audio +} // namespace resources +} // namespace applicationUtilities +} // namespace alexaClientSDK diff --git a/ApplicationUtilities/Resources/CMakeLists.txt b/ApplicationUtilities/Resources/CMakeLists.txt new file mode 100644 index 0000000000..92a9040e4f --- /dev/null +++ b/ApplicationUtilities/Resources/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +add_subdirectory("Audio") diff --git a/AuthDelegate/CMakeLists.txt b/AuthDelegate/CMakeLists.txt index e58b1cc4ec..b2d79a4342 100644 --- a/AuthDelegate/CMakeLists.txt +++ b/AuthDelegate/CMakeLists.txt @@ -5,4 +5,4 @@ include(../build/BuildDefaults.cmake) add_subdirectory("examples") add_subdirectory("src") -add_subdirectory("test") +acsdk_add_test_subdirectory_if_allowed() diff --git a/AuthDelegate/examples/ExampleAuthDelegateClient/src/ExampleAuthDelegateClient.cpp b/AuthDelegate/examples/ExampleAuthDelegateClient/src/ExampleAuthDelegateClient.cpp index 138587a6a7..f0806b762c 100644 --- a/AuthDelegate/examples/ExampleAuthDelegateClient/src/ExampleAuthDelegateClient.cpp +++ b/AuthDelegate/examples/ExampleAuthDelegateClient/src/ExampleAuthDelegateClient.cpp @@ -1,7 +1,5 @@ /* - * ExampleAuthDelegateClient.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -40,15 +38,14 @@ static const std::string TAG("AlexAuthDelegateClient"); /// Simple implementation of the AuthDelegateObserverInterface. class Observer : public AuthObserverInterface { public: - - /// Construct an Observer, initialized as not authroized. + /// Construct an Observer, initialized as not authorized. Observer() : m_state(AuthObserverInterface::State::UNINITIALIZED) { } void onAuthStateChange( - AuthObserverInterface::State newState, - AuthObserverInterface::Error error = AuthObserverInterface::Error::NO_ERROR) override { - if (error == AuthObserverInterface::Error::NO_ERROR) { + AuthObserverInterface::State newState, + AuthObserverInterface::Error error = AuthObserverInterface::Error::SUCCESS) override { + if (error == AuthObserverInterface::Error::SUCCESS) { ACSDK_DEBUG(LX("onAuthStateChange").d("newState", newState)); } else { ACSDK_ERROR(LX("onAuthStateChangeError").d("newState", newState).d("error", error)); @@ -62,7 +59,7 @@ class Observer : public AuthObserverInterface { /** * Wait until we are authorized. - * @return true if we are authroized. + * @return true if we are authorized. */ bool wait() { std::unique_lock lock(m_mutex); @@ -74,7 +71,6 @@ class Observer : public AuthObserverInterface { } private: - /// Last state from authDelegate AuthObserverInterface::State m_state; @@ -118,15 +114,14 @@ int exerciseAuthDelegate() { int main(int argc, const char* argv[]) { if (argc < 2) { ACSDK_ERROR(LX("ExampleAuthDelegateClientFailed") - .d("reason", "missingConfigurationFilePath") - .d("usage", "ExampleAuthDelegateClient ")); + .d("reason", "missingConfigurationFilePath") + .d("usage", "ExampleAuthDelegateClient ")); return EXIT_FAILURE; } std::ifstream infile(argv[1]); if (!infile.good()) { - ACSDK_ERROR(LX("ExampleAuthDelegateClientFailed") - .d("reason", "openConfigurationFileFailed") - .d("path", argv[1])); + ACSDK_ERROR( + LX("ExampleAuthDelegateClientFailed").d("reason", "openConfigurationFileFailed").d("path", argv[1])); return EXIT_FAILURE; } if (!avsCommon::avs::initialization::AlexaClientSDKInit::initialize({&infile})) { diff --git a/AuthDelegate/include/AuthDelegate/AuthDelegate.h b/AuthDelegate/include/AuthDelegate/AuthDelegate.h index fc8f28d275..f09d0ddce9 100644 --- a/AuthDelegate/include/AuthDelegate/AuthDelegate.h +++ b/AuthDelegate/include/AuthDelegate/AuthDelegate.h @@ -1,7 +1,5 @@ /* - * AuthDelegate.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AUTHDELEGATE_INCLUDE_AUTHDELEGATE_AUTH_DELEGATE_H_ -#define ALEXA_CLIENT_SDK_AUTHDELEGATE_INCLUDE_AUTHDELEGATE_AUTH_DELEGATE_H_ +#ifndef ALEXA_CLIENT_SDK_AUTHDELEGATE_INCLUDE_AUTHDELEGATE_AUTHDELEGATE_H_ +#define ALEXA_CLIENT_SDK_AUTHDELEGATE_INCLUDE_AUTHDELEGATE_AUTHDELEGATE_H_ #include #include @@ -28,8 +26,8 @@ #include #include - -#include "AuthDelegate/HttpPostInterface.h" +#include +#include namespace alexaClientSDK { namespace authDelegate { @@ -41,7 +39,6 @@ namespace authDelegate { */ class AuthDelegate : public avsCommon::sdkInterfaces::AuthDelegateInterface { public: - /** * Create an AuthDelegate. * This function cannot be called if: @@ -66,7 +63,8 @@ class AuthDelegate : public avsCommon::sdkInterfaces::AuthDelegateInterface { * @c nullptr is undefined. * @return If successful, returns a new AuthDelegate, otherwise @c nullptr. */ - static std::unique_ptr create(std::unique_ptr httpPost); + static std::unique_ptr create( + std::unique_ptr httpPost); /** * Deleted copy constructor @@ -92,13 +90,12 @@ class AuthDelegate : public avsCommon::sdkInterfaces::AuthDelegateInterface { std::string getAuthToken() override; private: - /** * AuthDelegate constructor. * * @param httpPost Instance that implement HttpPostInterface. Must not be @c nullptr, or the behavior is undefined. */ - AuthDelegate(std::unique_ptr httpPost); + AuthDelegate(std::unique_ptr httpPost); /** * init() is used by create() to perform initialization after construction but before returning the @@ -114,7 +111,7 @@ class AuthDelegate : public avsCommon::sdkInterfaces::AuthDelegateInterface { /** * Attempt to refresh the auth token. * - * @return @c NO_ERROR if the authorization token is successfully refreshed. Otherwise, return the error encountered + * @return @c SUCCESS if the authorization token is successfully refreshed. Otherwise, return the error encountered * in the process. */ avsCommon::sdkInterfaces::AuthObserverInterface::Error refreshAuthToken(); @@ -124,7 +121,7 @@ class AuthDelegate : public avsCommon::sdkInterfaces::AuthDelegateInterface { * * @param code The response code returned from the LWA request * @param body The response body (if any) returned from the LWA request. - * @return @c NO_ERROR if the auth token was refreshed, otherwise the error encountered in the process. + * @return @c SUCCESS if the auth token was refreshed, otherwise the error encountered in the process. */ avsCommon::sdkInterfaces::AuthObserverInterface::Error handleLwaResponse(long code, const std::string& body); @@ -137,10 +134,8 @@ class AuthDelegate : public avsCommon::sdkInterfaces::AuthDelegateInterface { * @param suffix The string immediately succeeding the value to parse * @return The substring found between prefix and suffix. */ - std::string parseResponseValue( - const std::string& response, - const std::string& prefix, - const std::string& suffix) const; + std::string parseResponseValue(const std::string& response, const std::string& prefix, const std::string& suffix) + const; /** * Determine if the auth token has expired. @@ -151,7 +146,7 @@ class AuthDelegate : public avsCommon::sdkInterfaces::AuthDelegateInterface { /** * Set the authorization state to be reported to our client. If the state has changed, notify the client. - * + * * @param newState The new state. */ void setState(avsCommon::sdkInterfaces::AuthObserverInterface::State newState); @@ -232,11 +227,10 @@ class AuthDelegate : public avsCommon::sdkInterfaces::AuthDelegateInterface { * HTTP/POST client with which to make @c LWA requests. * Access is not synchronized because it is only accessed by @c m_refreshAndNotifyThread. */ - std::unique_ptr m_HttpPost; + std::unique_ptr m_HttpPost; }; -} // namespace authDelegate -} // namespace alexaClientSDK - -#endif // ALEXA_CLIENT_SDK_AUTHDELEGATE_INCLUDE_AUTHDELEGATE_AUTH_DELEGATE_H_ +} // namespace authDelegate +} // namespace alexaClientSDK +#endif // ALEXA_CLIENT_SDK_AUTHDELEGATE_INCLUDE_AUTHDELEGATE_AUTHDELEGATE_H_ diff --git a/AuthDelegate/src/AuthDelegate.cpp b/AuthDelegate/src/AuthDelegate.cpp index 572d12859e..905f2a766d 100644 --- a/AuthDelegate/src/AuthDelegate.cpp +++ b/AuthDelegate/src/AuthDelegate.cpp @@ -1,7 +1,5 @@ /* - * AuthDelegate.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -25,10 +23,11 @@ #include #include +#include +#include #include #include "AuthDelegate/AuthDelegate.h" -#include "AuthDelegate/HttpPost.h" namespace alexaClientSDK { namespace authDelegate { @@ -84,7 +83,7 @@ static const std::string POST_DATA_BETWEEN_CLIENT_ID_AND_REFRESH_TOKEN = "&refre /// POST data between 'refresh_token' and 'client_secret' that is sent to LWA to refresh the auth token. static const std::string POST_DATA_BETWEEN_REFRESH_TOKEN_AND_CLIENT_SECRET = "&client_secret="; -/// This is the property name in the JSON which refers to the access token. +/// This is the property name in the JSON which refers to the access token. static const std::string JSON_KEY_ACCESS_TOKEN = "access_token"; /// This is the property name in the JSON which refers to the refresh token. @@ -124,7 +123,7 @@ static const std::unordered_map g_unr * @param error The HTTP error code. * @return @c true if @c error is unrecoverable, @c false otherwise. */ -static bool isUnrecoverable(const std::string & error) { +static bool isUnrecoverable(const std::string& error) { return g_unrecoverableErrorCodeMap.end() != g_unrecoverableErrorCodeMap.find(error); } @@ -147,12 +146,12 @@ static bool isUnrecoverable(AuthObserverInterface::Error error) { * Helper function that retrieves the Error enum value. * * @param error The string in the @c error field of packet body. - * @return the Error enum code corresponding to @c error. If error is "", returns NO_ERROR. If it is an unknown error, + * @return the Error enum code corresponding to @c error. If error is "", returns SUCCESS. If it is an unknown error, * returns UNKNOWN_ERROR. */ -static AuthObserverInterface::Error getErrorCode(const std::string & error) { +static AuthObserverInterface::Error getErrorCode(const std::string& error) { if (error.empty()) { - return AuthObserverInterface::Error::NO_ERROR; + return AuthObserverInterface::Error::SUCCESS; } else { auto errorIterator = g_recoverableErrorCodeMap.find(error); if (g_recoverableErrorCodeMap.end() != errorIterator) { @@ -179,47 +178,28 @@ static std::chrono::steady_clock::time_point calculateTimeToRetry(int retryCount * @see https://images-na.ssl-images-amazon.com/images/G/01/mwsportal/ * doc/en_US/offamazonpayments/LoginAndPayWithAmazonIntegrationGuide.pdf */ - static const int retryBackoffTimes[] = { - 0, // Retry 1: 0.00s range with 0.5 randomization: [ 0.0s. 0.0s] - 1000, // Retry 2: 1.00s range with 0.5 randomization: [ 0.5s, 1.5s] - 2000, // Retry 3: 2.00s range with 0.5 randomization: [ 1.0s, 3.0s] - 4000, // Retry 4: 5.00s range with 0.5 randomization: [ 2.0s, 6.0s] - 10000, // Retry 5: 10.00s range with 0.5 randomization: [ 5.0s, 15.0s] - 30000, // Retry 6: 20.00s range with 0.5 randomization: [15.0s, 45.0s] - 60000, // Retry 7: 60.00s range with 0.5 randomization: [30.0s, 90.0s] + const static std::vector retryBackoffTimes = { + 0, // Retry 1: 0.00s range with 50% randomization: [ 0.0s. 0.0s] + 1000, // Retry 2: 1.00s range with 50% randomization: [ 0.5s, 1.5s] + 2000, // Retry 3: 2.00s range with 50% randomization: [ 1.0s, 3.0s] + 4000, // Retry 4: 4.00s range with 50% randomization: [ 2.0s, 6.0s] + 10000, // Retry 5: 10.00s range with 50% randomization: [ 5.0s, 15.0s] + 30000, // Retry 6: 30.00s range with 50% randomization: [15.0s, 45.0s] + 60000, // Retry 7: 60.00s range with 50% randomization: [30.0s, 90.0s] }; - /// Scale of range (relative to table entry) to select a random value from. - static const double RETRY_RANDOMIZATION_FACTOR = 0.5; - /// Factor to multiply table value by when selecting low end of random values. - static const double RETRY_DECREASE_FACTOR = 1 - RETRY_RANDOMIZATION_FACTOR; - /// Factor to multiply table value by when selecting high end of random values. - static const double RETRY_INCREASE_FACTOR = 1 + RETRY_RANDOMIZATION_FACTOR; - - // Cap count to the size of the table - static const int retryTableSize = - (sizeof(retryBackoffTimes) / sizeof(retryBackoffTimes[0])); - if (retryCount < 0) { - retryCount = 0; - } else if (retryCount >= retryTableSize) { - retryCount = retryTableSize - 1; - } - // Calculate randomized interval to the next retry. - std::mt19937 generator(static_cast(std::time(nullptr))); - std::uniform_int_distribution distribution( - static_cast(retryBackoffTimes[retryCount] * RETRY_DECREASE_FACTOR), - static_cast(retryBackoffTimes[retryCount] * RETRY_INCREASE_FACTOR)); - auto delayMs = std::chrono::milliseconds(distribution(generator)); - ACSDK_DEBUG(LX("calculatedTimeToRetry").d("delayMs", delayMs.count())); + // Retry Timer Object. + avsCommon::utils::RetryTimer RETRY_TIMER(retryBackoffTimes); - return std::chrono::steady_clock::now() + delayMs; + return std::chrono::steady_clock::now() + RETRY_TIMER.calculateTimeToRetry(retryCount); } std::unique_ptr AuthDelegate::create() { - return AuthDelegate::create(HttpPost::create()); + return AuthDelegate::create(avsCommon::utils::libcurlUtils::HttpPost::create()); } -std::unique_ptr AuthDelegate::create(std::unique_ptr httpPost) { +std::unique_ptr AuthDelegate::create( + std::unique_ptr httpPost) { if (!avsCommon::avs::initialization::AlexaClientSDKInit::isInitialized()) { ACSDK_ERROR(LX("createFailed").d("reason", "sdkNotInitialized")); return nullptr; @@ -231,14 +211,13 @@ std::unique_ptr AuthDelegate::create(std::unique_ptr httpPost): - m_authState{AuthObserverInterface::State::UNINITIALIZED}, - m_authError{AuthObserverInterface::Error::NO_ERROR}, - m_isStopping{false}, - m_expirationTime{std::chrono::time_point::max()}, - m_retryCount{0}, - m_HttpPost{std::move(httpPost)} -{ +AuthDelegate::AuthDelegate(std::unique_ptr httpPost) : + m_authState{AuthObserverInterface::State::UNINITIALIZED}, + m_authError{AuthObserverInterface::Error::SUCCESS}, + m_isStopping{false}, + m_expirationTime{std::chrono::time_point::max()}, + m_retryCount{0}, + m_HttpPost{std::move(httpPost)} { } AuthDelegate::~AuthDelegate() { @@ -303,12 +282,10 @@ bool AuthDelegate::init() { configuration.getString(CONFIG_KEY_LWA_URL, &m_lwaUrl, DEFAULT_LWA_URL); configuration.getDuration( - CONFIG_KEY_REQUEST_TIMEOUT, &m_requestTimeout, DEFAULT_REQUEST_TIMEOUT); + CONFIG_KEY_REQUEST_TIMEOUT, &m_requestTimeout, DEFAULT_REQUEST_TIMEOUT); configuration.getDuration( - CONFIG_KEY_AUTH_TOKEN_REFRESH_HEAD_START, - &m_authTokenRefreshHeadStart, - DEFAULT_AUTH_TOKEN_REFRESH_HEAD_START); + CONFIG_KEY_AUTH_TOKEN_REFRESH_HEAD_START, &m_authTokenRefreshHeadStart, DEFAULT_AUTH_TOKEN_REFRESH_HEAD_START); if (!m_HttpPost) { ACSDK_ERROR(LX("initFailed").d("reason", "nullptrHttPost")); @@ -320,14 +297,12 @@ bool AuthDelegate::init() { } void AuthDelegate::refreshAndNotifyThreadFunction() { - std::function isStopping = [this] { - return m_isStopping; - }; + std::function isStopping = [this] { return m_isStopping; }; while (true) { std::unique_lock lock(m_mutex); - bool isAboutToExpire = (AuthObserverInterface::State::REFRESHED == m_authState && - m_expirationTime < m_timeToRefresh); + bool isAboutToExpire = + (AuthObserverInterface::State::REFRESHED == m_authState && m_expirationTime < m_timeToRefresh); auto nextActionTime = (isAboutToExpire ? m_expirationTime : m_timeToRefresh); auto nextState = m_authState; @@ -341,7 +316,7 @@ void AuthDelegate::refreshAndNotifyThreadFunction() { lock.unlock(); } else { lock.unlock(); - if (AuthObserverInterface::Error::NO_ERROR == refreshAuthToken()) { + if (AuthObserverInterface::Error::SUCCESS == refreshAuthToken()) { nextState = AuthObserverInterface::State::REFRESHED; } } @@ -361,16 +336,14 @@ AuthObserverInterface::Error AuthDelegate::refreshAuthToken() { } std::ostringstream postData; - postData - << POST_DATA_UP_TO_CLIENT_ID << m_clientId - << POST_DATA_BETWEEN_CLIENT_ID_AND_REFRESH_TOKEN << m_refreshToken - << POST_DATA_BETWEEN_REFRESH_TOKEN_AND_CLIENT_SECRET << m_clientSecret; + postData << POST_DATA_UP_TO_CLIENT_ID << m_clientId << POST_DATA_BETWEEN_CLIENT_ID_AND_REFRESH_TOKEN + << m_refreshToken << POST_DATA_BETWEEN_REFRESH_TOKEN_AND_CLIENT_SECRET << m_clientSecret; std::string body; auto code = m_HttpPost->doPost(m_lwaUrl, postData.str(), timeout, body); auto newError = handleLwaResponse(code, body); - if (AuthObserverInterface::Error::NO_ERROR == newError) { + if (AuthObserverInterface::Error::SUCCESS == newError) { m_retryCount = 0; } else { m_timeToRefresh = calculateTimeToRetry(m_retryCount++); @@ -386,13 +359,13 @@ AuthObserverInterface::Error AuthDelegate::handleLwaResponse(long code, const st rapidjson::Document document; if (document.Parse(body.c_str()).HasParseError()) { ACSDK_ERROR(LX("handleLwaResponseFailed") - .d("reason", "parseJsonFailed") - .d("position", document.GetErrorOffset()) - .d("error", GetParseError_En(document.GetParseError()))); + .d("reason", "parseJsonFailed") + .d("position", document.GetErrorOffset()) + .d("error", GetParseError_En(document.GetParseError()))); return AuthObserverInterface::Error::UNKNOWN_ERROR; } - if (HttpPostInterface::HTTP_RESPONSE_CODE_SUCCESS_OK == code) { + if (HTTPResponseCode::SUCCESS_OK == code) { std::string authToken; std::string refreshToken; uint64_t expiresInSeconds = 0; @@ -414,17 +387,17 @@ AuthObserverInterface::Error AuthDelegate::handleLwaResponse(long code, const st if (authToken.empty() || refreshToken.empty() || expiresInSeconds == 0) { ACSDK_ERROR(LX("handleLwaResponseFailed") - .d("authTokenEmpty", authToken.empty()) - .d("refreshTokenEmpty", refreshToken.empty()) - .d("expiresInSeconds", expiresInSeconds)); + .d("authTokenEmpty", authToken.empty()) + .d("refreshTokenEmpty", refreshToken.empty()) + .d("expiresInSeconds", expiresInSeconds)); ACSDK_DEBUG(LX("handleLwaresponseFailed").d("body", body)); return AuthObserverInterface::Error::UNKNOWN_ERROR; } ACSDK_DEBUG(LX("handleLwaResponseSucceeded") - .sensitive("refreshToken", refreshToken) - .sensitive("authToken", authToken) - .d("expiresInSeconds", expiresInSeconds)); + .sensitive("refreshToken", refreshToken) + .sensitive("authToken", authToken) + .d("expiresInSeconds", expiresInSeconds)); m_refreshToken = refreshToken; m_expirationTime = m_requestTime + std::chrono::seconds(expiresInSeconds); @@ -433,7 +406,7 @@ AuthObserverInterface::Error AuthDelegate::handleLwaResponse(long code, const st std::lock_guard lock(m_mutex); m_authToken = authToken; } - return AuthObserverInterface::Error::NO_ERROR; + return AuthObserverInterface::Error::SUCCESS; } else { std::string error; @@ -458,7 +431,7 @@ bool AuthDelegate::hasAuthTokenExpired() { void AuthDelegate::setState(AuthObserverInterface::State newState) { std::lock_guard lock(m_mutex); - + if (isUnrecoverable(m_authError)) { ACSDK_ERROR(LX("threadStopping").d("reason", "encounteredUnrecoverableError")); newState = AuthObserverInterface::State::UNRECOVERABLE_ERROR; @@ -474,5 +447,5 @@ void AuthDelegate::setState(AuthObserverInterface::State newState) { } } -} // namespace authDelegate -} // namespace alexaClientSDK +} // namespace authDelegate +} // namespace alexaClientSDK diff --git a/AuthDelegate/src/CMakeLists.txt b/AuthDelegate/src/CMakeLists.txt index 4023c61c30..87c0b91fd9 100644 --- a/AuthDelegate/src/CMakeLists.txt +++ b/AuthDelegate/src/CMakeLists.txt @@ -3,8 +3,7 @@ find_package(Threads ${THREADS_PACKAGE_CONFIG}) add_definitions("-DACSDK_LOG_MODULE=authDelegate") add_library(AuthDelegate SHARED - AuthDelegate.cpp - HttpPost.cpp) + AuthDelegate.cpp) target_include_directories(AuthDelegate PUBLIC ${AuthDelegate_SOURCE_DIR}/include) target_include_directories(AuthDelegate PRIVATE @@ -12,4 +11,4 @@ target_include_directories(AuthDelegate PRIVATE target_link_libraries(AuthDelegate AVSCommon ${CURL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) # install target -asdk_install() \ No newline at end of file +asdk_install() diff --git a/AuthDelegate/src/HttpPost.cpp b/AuthDelegate/src/HttpPost.cpp deleted file mode 100644 index c2dab3877d..0000000000 --- a/AuthDelegate/src/HttpPost.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/* - * HttpPost.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0/ - * - * or in the "license" file accompanying this file. This file 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 -#include - -#include "AuthDelegate/HttpPost.h" - -namespace alexaClientSDK { -namespace authDelegate { - -using namespace alexaClientSDK::avsCommon::utils; - -/// String to identify log entries originating from this file. -static const std::string TAG("HttpPost"); - -/** - * Create a LogEntry using this file's TAG and the specified event string. - * - * @param The event string for this @c LogEntry. - */ -#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) - -std::unique_ptr HttpPost::create() { - std::unique_ptr httpPost(new HttpPost()); - if (httpPost->init()) { - return httpPost; - } - return nullptr; -} - -HttpPost::HttpPost() : m_curl{nullptr} { -} - -bool HttpPost::init() { - m_curl = curl_easy_init(); - if (!m_curl) { - ACSDK_ERROR(LX("initFailed").d("reason", "curl_easy_initFailed")); - return false; - } - if (!libcurlUtils::prepareForTLS(m_curl)) { - return false; - } - if (!setopt(CURLOPT_WRITEFUNCTION, staticWriteCallbackLocked)) { - return false; - } - return true; -} - -HttpPost::~HttpPost() { - if (m_curl) { - curl_easy_cleanup(m_curl); - } -} - -long HttpPost::doPost(const std::string& url, - const std::string& data, - std::chrono::seconds timeout, - std::string& body) { - std::lock_guard lock(m_mutex); - - body.clear(); - - if (!setopt(CURLOPT_TIMEOUT, static_cast(timeout.count())) || - !setopt(CURLOPT_URL, url.c_str()) || - !setopt(CURLOPT_POSTFIELDS, data.c_str()) || - !setopt(CURLOPT_WRITEDATA, &body)) { - return HTTP_RESPONSE_CODE_UNDEFINED; - } - - auto result = curl_easy_perform(m_curl); - - if (result != CURLE_OK) { - ACSDK_ERROR(LX("doPostFailed") - .d("reason", "curl_easy_performFailed") - .d("result", result) - .d("error", curl_easy_strerror(result))); - body.clear(); - return HTTP_RESPONSE_CODE_UNDEFINED; - } - - long responseCode = 0; - result = curl_easy_getinfo(m_curl, CURLINFO_RESPONSE_CODE, &responseCode); - if (result != CURLE_OK) { - ACSDK_ERROR(LX("doPostFailed") - .d("reason", "curl_easy_getinfoFailed") - .d("property", "CURLINFO_RESPONSE_CODE") - .d("result", result) - .d("error", curl_easy_strerror(result))); - body.clear(); - return HTTP_RESPONSE_CODE_UNDEFINED; - } else { - ACSDK_DEBUG(LX("doPostSucceeded").d("code", responseCode)); - return responseCode; - } -} - -template -bool HttpPost::setopt(CURLoption option, ParamType value) { - auto result = curl_easy_setopt(m_curl, option, value); - if (result != CURLE_OK) { - ACSDK_ERROR(LX("setoptFailed") - .d("reason", "nullCurlHandle") - .d("option", option) - .sensitive("value", value) - .d("result", result) - .d("error", curl_easy_strerror(result))); - return false; - } - return true; -} - -size_t HttpPost::staticWriteCallbackLocked(char* ptr, size_t size, size_t nmemb, void* userdata) { - if (!userdata) { - ACSDK_ERROR(LX("staticWriteCallbackFailed").d("reason", "nullUserData")); - return 0; - } - - size_t count = size * nmemb; - auto body = static_cast(userdata); - body->append(ptr, count); - return count; -} - -} // namespace Auth -} // namespace AlexaClientSDK diff --git a/AuthDelegate/test/AuthDelegate/MockHttpPost.h b/AuthDelegate/test/AuthDelegate/MockHttpPost.h index 2769c7516a..09be225076 100644 --- a/AuthDelegate/test/AuthDelegate/MockHttpPost.h +++ b/AuthDelegate/test/AuthDelegate/MockHttpPost.h @@ -1,7 +1,5 @@ /* - * MockHttpPost.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,28 +13,30 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AUTHDELEGATE_TEST_AUTHDELEGATE_MOCK_HTTP_POST_H_ -#define ALEXA_CLIENT_SDK_AUTHDELEGATE_TEST_AUTHDELEGATE_MOCK_HTTP_POST_H_ +#ifndef ALEXA_CLIENT_SDK_AUTHDELEGATE_TEST_AUTHDELEGATE_MOCKHTTPPOST_H_ +#define ALEXA_CLIENT_SDK_AUTHDELEGATE_TEST_AUTHDELEGATE_MOCKHTTPPOST_H_ #include #include #include -#include "AuthDelegate/HttpPostInterface.h" +#include "AVSCommon/Utils/LibcurlUtils/HttpPostInterface.h" namespace alexaClientSDK { namespace authDelegate { namespace test { /// Mock HttpPostInterface class -class MockHttpPost : public HttpPostInterface { +class MockHttpPost : public avsCommon::utils::libcurlUtils::HttpPostInterface { public: - MOCK_METHOD4(doPost, long(const std::string& url, const std::string& data, std::chrono::seconds timeout, - std::string& body)); + MOCK_METHOD1(addHTTPHeader, bool(const std::string& header)); + MOCK_METHOD4( + doPost, + long(const std::string& url, const std::string& data, std::chrono::seconds timeout, std::string& body)); }; -} // namespace test -} // namespace authDelegate -} // namespace alexaClientSDK +} // namespace test +} // namespace authDelegate +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AUTHDELEGATE_TEST_AUTHDELEGATE_MOCK_HTTP_POST_H_ +#endif // ALEXA_CLIENT_SDK_AUTHDELEGATE_TEST_AUTHDELEGATE_MOCKHTTPPOST_H_ diff --git a/AuthDelegate/test/AuthDelegateTest.cpp b/AuthDelegate/test/AuthDelegateTest.cpp index e0ee5d2861..fd8aa9c320 100644 --- a/AuthDelegate/test/AuthDelegateTest.cpp +++ b/AuthDelegate/test/AuthDelegateTest.cpp @@ -1,7 +1,5 @@ /* - * AuthDelegateTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,7 +13,6 @@ * permissions and limitations under the License. */ - #include #include #include @@ -28,10 +25,12 @@ #include "AuthDelegate/AuthDelegate.h" #include "AuthDelegate/MockHttpPost.h" #include "AVSCommon/AVS/Initialization/AlexaClientSDKInit.h" +#include "AVSCommon/Utils/LibcurlUtils/HttpResponseCodes.h" #include "MockAuthObserver.h" using namespace alexaClientSDK::authDelegate; using namespace alexaClientSDK::authDelegate::test; +using namespace alexaClientSDK::avsCommon::utils::libcurlUtils; using namespace ::testing; using namespace alexaClientSDK::avsCommon::avs::initialization; @@ -68,7 +67,6 @@ static const std::string DEFAULT_SDK_CONFIGURATION = R"({ /// Define test fixture for testing AuthDelegate. class AuthDelegateTest : public ::testing::Test { protected: - /// Initialize the objects for testing AuthDelegateTest() { m_mockHttpPost = std::unique_ptr(new MockHttpPost()); @@ -78,7 +76,7 @@ class AuthDelegateTest : public ::testing::Test { /// Stub certain mock objects with default actions virtual void SetUp() override { ON_CALL(*m_mockHttpPost, doPost(_, _, _, _)) - .WillByDefault(Return(HttpPostInterface::HTTP_RESPONSE_CODE_UNDEFINED)); + .WillByDefault(Return(HTTPResponseCode::HTTP_RESPONSE_CODE_UNDEFINED)); std::stringstream configuration; configuration << DEFAULT_SDK_CONFIGURATION; ASSERT_TRUE(AlexaClientSDKInit::initialize({&configuration})); @@ -243,30 +241,19 @@ TEST_F(AuthDelegateTest, removeAuthObserverNull) { * state. */ TEST_F(AuthDelegateTest, addMultipleAuthObserver) { - auto authDelegate = AuthDelegate::create(std::move(m_mockHttpPost)); std::shared_ptr> m_mockAuthObserver2 = std::make_shared>(); ASSERT_TRUE(authDelegate); - EXPECT_CALL( - *m_mockAuthObserver, - onAuthStateChange(AuthObserverInterface::State::UNINITIALIZED, _)) - .Times(AtMost(1)); + EXPECT_CALL(*m_mockAuthObserver, onAuthStateChange(AuthObserverInterface::State::UNINITIALIZED, _)) + .Times(AtMost(1)); - EXPECT_CALL( - *m_mockAuthObserver, - onAuthStateChange(AuthObserverInterface::State::EXPIRED, _)) - .Times(AtMost(1)); + EXPECT_CALL(*m_mockAuthObserver, onAuthStateChange(AuthObserverInterface::State::EXPIRED, _)).Times(AtMost(1)); - EXPECT_CALL( - *m_mockAuthObserver2, - onAuthStateChange(AuthObserverInterface::State::UNINITIALIZED, _)) - .Times(AtMost(1)); + EXPECT_CALL(*m_mockAuthObserver2, onAuthStateChange(AuthObserverInterface::State::UNINITIALIZED, _)) + .Times(AtMost(1)); - EXPECT_CALL( - *m_mockAuthObserver2, - onAuthStateChange(AuthObserverInterface::State::EXPIRED, _)) - .Times(AtMost(1)); + EXPECT_CALL(*m_mockAuthObserver2, onAuthStateChange(AuthObserverInterface::State::EXPIRED, _)).Times(AtMost(1)); authDelegate->addAuthObserver(m_mockAuthObserver); authDelegate->addAuthObserver(m_mockAuthObserver2); @@ -282,26 +269,26 @@ TEST_F(AuthDelegateTest, retry) { bool tokenRefreshed = false; const auto& validResponse = generateValidLwaResponseWithExpiration(std::chrono::seconds(60)); EXPECT_CALL(*m_mockHttpPost, doPost(_, _, _, _)) - .WillOnce(Return(HttpPostInterface::HTTP_RESPONSE_CODE_UNDEFINED)) - .WillOnce(Return(HttpPostInterface::HTTP_RESPONSE_CODE_UNDEFINED)) - .WillOnce(DoAll(SetArgReferee<3>(validResponse), Return(HttpPostInterface::HTTP_RESPONSE_CODE_SUCCESS_OK))); + .WillOnce(Return(HTTPResponseCode::HTTP_RESPONSE_CODE_UNDEFINED)) + .WillOnce(Return(HTTPResponseCode::HTTP_RESPONSE_CODE_UNDEFINED)) + .WillOnce(DoAll(SetArgReferee<3>(validResponse), Return(HTTPResponseCode::SUCCESS_OK))); EXPECT_CALL( - *m_mockAuthObserver, - onAuthStateChange(AuthObserverInterface::State::UNINITIALIZED, AuthObserverInterface::Error::NO_ERROR)) - .Times(AtMost(1)); + *m_mockAuthObserver, + onAuthStateChange(AuthObserverInterface::State::UNINITIALIZED, AuthObserverInterface::Error::SUCCESS)) + .Times(AtMost(1)); EXPECT_CALL( - *m_mockAuthObserver, - onAuthStateChange(AuthObserverInterface::State::REFRESHED, AuthObserverInterface::Error::NO_ERROR)) - .WillOnce(InvokeWithoutArgs([this, &tokenRefreshed]() { - tokenRefreshed = true; - m_cv.notify_all(); - })); + *m_mockAuthObserver, + onAuthStateChange(AuthObserverInterface::State::REFRESHED, AuthObserverInterface::Error::SUCCESS)) + .WillOnce(InvokeWithoutArgs([this, &tokenRefreshed]() { + tokenRefreshed = true; + m_cv.notify_all(); + })); auto authDelegate = AuthDelegate::create(std::move(m_mockHttpPost)); authDelegate->addAuthObserver(m_mockAuthObserver); - ASSERT_TRUE(waitFor(TIME_OUT_IN_SECONDS, [&tokenRefreshed]() { return tokenRefreshed;})); + ASSERT_TRUE(waitFor(TIME_OUT_IN_SECONDS, [&tokenRefreshed]() { return tokenRefreshed; })); } /** @@ -315,31 +302,31 @@ TEST_F(AuthDelegateTest, expirationNotification) { const auto& validResponse = generateValidLwaResponseWithExpiration(std::chrono::seconds(1)); EXPECT_CALL(*m_mockHttpPost, doPost(_, _, _, _)) - .WillOnce(DoAll(SetArgReferee<3>(validResponse), Return(HttpPostInterface::HTTP_RESPONSE_CODE_SUCCESS_OK))) - .WillRepeatedly(Return(HttpPostInterface::HTTP_RESPONSE_CODE_UNDEFINED)); + .WillOnce(DoAll(SetArgReferee<3>(validResponse), Return(HTTPResponseCode::SUCCESS_OK))) + .WillRepeatedly(Return(HTTPResponseCode::HTTP_RESPONSE_CODE_UNDEFINED)); ::testing::InSequence s; EXPECT_CALL( - *m_mockAuthObserver, - onAuthStateChange(AuthObserverInterface::State::UNINITIALIZED, AuthObserverInterface::Error::NO_ERROR)) - .Times(AtMost(1)); + *m_mockAuthObserver, + onAuthStateChange(AuthObserverInterface::State::UNINITIALIZED, AuthObserverInterface::Error::SUCCESS)) + .Times(AtMost(1)); EXPECT_CALL( - *m_mockAuthObserver, - onAuthStateChange(AuthObserverInterface::State::REFRESHED, AuthObserverInterface::Error::NO_ERROR)) - .Times(1); + *m_mockAuthObserver, + onAuthStateChange(AuthObserverInterface::State::REFRESHED, AuthObserverInterface::Error::SUCCESS)) + .Times(1); EXPECT_CALL( - *m_mockAuthObserver, - onAuthStateChange(AuthObserverInterface::State::EXPIRED, AuthObserverInterface::Error::UNKNOWN_ERROR)) - .WillOnce(InvokeWithoutArgs([this, &tokenExpired]() { - tokenExpired = true; - m_cv.notify_all(); - })); + *m_mockAuthObserver, + onAuthStateChange(AuthObserverInterface::State::EXPIRED, AuthObserverInterface::Error::UNKNOWN_ERROR)) + .WillOnce(InvokeWithoutArgs([this, &tokenExpired]() { + tokenExpired = true; + m_cv.notify_all(); + })); auto authDelegate = AuthDelegate::create(std::move(m_mockHttpPost)); authDelegate->addAuthObserver(m_mockAuthObserver); - ASSERT_TRUE(waitFor(TIME_OUT_IN_SECONDS, [&tokenExpired]() {return tokenExpired;})); + ASSERT_TRUE(waitFor(TIME_OUT_IN_SECONDS, [&tokenExpired]() { return tokenExpired; })); } /** @@ -353,39 +340,39 @@ TEST_F(AuthDelegateTest, recoverAfterExpiration) { const auto& validResponse = generateValidLwaResponseWithExpiration(std::chrono::seconds(3)); EXPECT_CALL(*m_mockHttpPost, doPost(_, _, _, _)) - .WillOnce(DoAll(SetArgReferee<3>(validResponse), Return(HttpPostInterface::HTTP_RESPONSE_CODE_SUCCESS_OK))) - .WillOnce(Return(HttpPostInterface::HTTP_RESPONSE_CODE_UNDEFINED)) - .WillOnce(Return(HttpPostInterface::HTTP_RESPONSE_CODE_UNDEFINED)) - .WillOnce(Return(HttpPostInterface::HTTP_RESPONSE_CODE_UNDEFINED)) - .WillOnce(DoAll(SetArgReferee<3>(validResponse), Return(HttpPostInterface::HTTP_RESPONSE_CODE_SUCCESS_OK))); + .WillOnce(DoAll(SetArgReferee<3>(validResponse), Return(HTTPResponseCode::SUCCESS_OK))) + .WillOnce(Return(HTTPResponseCode::HTTP_RESPONSE_CODE_UNDEFINED)) + .WillOnce(Return(HTTPResponseCode::HTTP_RESPONSE_CODE_UNDEFINED)) + .WillOnce(Return(HTTPResponseCode::HTTP_RESPONSE_CODE_UNDEFINED)) + .WillOnce(DoAll(SetArgReferee<3>(validResponse), Return(HTTPResponseCode::SUCCESS_OK))); ::testing::InSequence s; EXPECT_CALL( - *m_mockAuthObserver, - onAuthStateChange(AuthObserverInterface::State::UNINITIALIZED, AuthObserverInterface::Error::NO_ERROR)) - .Times(AtMost(1)); + *m_mockAuthObserver, + onAuthStateChange(AuthObserverInterface::State::UNINITIALIZED, AuthObserverInterface::Error::SUCCESS)) + .Times(AtMost(1)); EXPECT_CALL( - *m_mockAuthObserver, - onAuthStateChange(AuthObserverInterface::State::REFRESHED, AuthObserverInterface::Error::NO_ERROR)) - .Times(1); + *m_mockAuthObserver, + onAuthStateChange(AuthObserverInterface::State::REFRESHED, AuthObserverInterface::Error::SUCCESS)) + .Times(1); EXPECT_CALL( - *m_mockAuthObserver, - onAuthStateChange(AuthObserverInterface::State::EXPIRED, AuthObserverInterface::Error::UNKNOWN_ERROR)) - .Times(1); + *m_mockAuthObserver, + onAuthStateChange(AuthObserverInterface::State::EXPIRED, AuthObserverInterface::Error::UNKNOWN_ERROR)) + .Times(1); EXPECT_CALL( - *m_mockAuthObserver, - onAuthStateChange(AuthObserverInterface::State::REFRESHED, AuthObserverInterface::Error::NO_ERROR)) - .WillOnce(InvokeWithoutArgs([this, &tokenRefreshed]() { - tokenRefreshed = true; - m_cv.notify_all(); - })); + *m_mockAuthObserver, + onAuthStateChange(AuthObserverInterface::State::REFRESHED, AuthObserverInterface::Error::SUCCESS)) + .WillOnce(InvokeWithoutArgs([this, &tokenRefreshed]() { + tokenRefreshed = true; + m_cv.notify_all(); + })); auto authDelegate = AuthDelegate::create(std::move(m_mockHttpPost)); authDelegate->addAuthObserver(m_mockAuthObserver); - ASSERT_TRUE(waitFor(TIME_OUT_IN_SECONDS, [&tokenRefreshed]() {return tokenRefreshed;})); + ASSERT_TRUE(waitFor(TIME_OUT_IN_SECONDS, [&tokenRefreshed]() { return tokenRefreshed; })); } /** @@ -399,26 +386,24 @@ TEST_F(AuthDelegateTest, unrecoverableErrorNotification) { const auto& invalidRequestResponse = generateErrorLwaResponseWithErrorCode(ERROR_CODE_INVALID_REQUEST); EXPECT_CALL(*m_mockHttpPost, doPost(_, _, _, _)) - .WillOnce(DoAll(SetArgReferee<3>(invalidRequestResponse), Return(HTTP_RESPONSE_CODE_BAD_REQUEST))) - .WillRepeatedly(Return(HttpPostInterface::HTTP_RESPONSE_CODE_UNDEFINED)); + .WillOnce(DoAll(SetArgReferee<3>(invalidRequestResponse), Return(HTTP_RESPONSE_CODE_BAD_REQUEST))) + .WillRepeatedly(Return(HTTPResponseCode::HTTP_RESPONSE_CODE_UNDEFINED)); EXPECT_CALL( - *m_mockAuthObserver, - onAuthStateChange(AuthObserverInterface::State::UNINITIALIZED, AuthObserverInterface::Error::NO_ERROR)) - .Times(AtMost(1)); + *m_mockAuthObserver, + onAuthStateChange(AuthObserverInterface::State::UNINITIALIZED, AuthObserverInterface::Error::SUCCESS)) + .Times(AtMost(1)); EXPECT_CALL( - *m_mockAuthObserver, - onAuthStateChange( - AuthObserverInterface::State::UNRECOVERABLE_ERROR, - AuthObserverInterface::Error::INVALID_REQUEST)) - .WillOnce(InvokeWithoutArgs([this, &errorReceived]() { - errorReceived = true; - m_cv.notify_all(); - })); + *m_mockAuthObserver, + onAuthStateChange( + AuthObserverInterface::State::UNRECOVERABLE_ERROR, AuthObserverInterface::Error::INVALID_REQUEST)) + .WillOnce(InvokeWithoutArgs([this, &errorReceived]() { + errorReceived = true; + m_cv.notify_all(); + })); auto authDelegate = AuthDelegate::create(std::move(m_mockHttpPost)); authDelegate->addAuthObserver(m_mockAuthObserver); - ASSERT_TRUE(waitFor(TIME_OUT_IN_SECONDS, [&errorReceived]() {return errorReceived;})); + ASSERT_TRUE(waitFor(TIME_OUT_IN_SECONDS, [&errorReceived]() { return errorReceived; })); } - diff --git a/AuthDelegate/test/MockAuthObserver.h b/AuthDelegate/test/MockAuthObserver.h index bf4dcd95ac..4bf07c456f 100644 --- a/AuthDelegate/test/MockAuthObserver.h +++ b/AuthDelegate/test/MockAuthObserver.h @@ -1,7 +1,5 @@ /* - * MockAuthObserver.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_AUTH_DELEGATE_TEST_MOCK_AUTH_OBSERVER_H_ -#define ALEXA_CLIENT_SDK_AUTH_DELEGATE_TEST_MOCK_AUTH_OBSERVER_H_ +#ifndef ALEXA_CLIENT_SDK_AUTHDELEGATE_TEST_MOCKAUTHOBSERVER_H_ +#define ALEXA_CLIENT_SDK_AUTHDELEGATE_TEST_MOCKAUTHOBSERVER_H_ #include #include @@ -31,9 +29,8 @@ class MockAuthObserver : public avsCommon::sdkInterfaces::AuthObserverInterface MOCK_METHOD2(onAuthStateChange, void(State newState, Error error)); }; -} // namespace test -} // namespace authDelegate -} // namespace alexaClientSDK - +} // namespace test +} // namespace authDelegate +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_AUTH_DELEGATE_TEST_MOCK_AUTH_OBSERVER_H_ +#endif // ALEXA_CLIENT_SDK_AUTHDELEGATE_TEST_MOCKAUTHOBSERVER_H_ diff --git a/CHANGELOG.md b/CHANGELOG.md index 7715d2c258..b58f0e552a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,221 @@ ## ChangeLog + +### [1.6.0] - 2018-03-08 + +**Enhancements** +* `rapidJson` is now included with "make install". +* Updated the `TemplateRuntimeObserverInterface` to support clearing of `displayCards`. +* Added Windows SDK support, along with an installation script (MinGW-w64). +* Updated `ContextManager` to ignore context reported by a state provider. +* The `SharedDataStream` object is now associated by playlist, rather than by URL. +* Added the `RegistrationManager` component. Now, when a user logs out all persistent user-specific data is cleared from the SDK. The log out functionality can be exercised in the sample app with the new command: `k`. + +**Bug Fixes** +* [Issue 400](https://github.com/alexa/avs-device-sdk/issues/400) Fixed a bug where the alert reminder did not iterate as intended after loss of network connection. +* [Issue 477](https://github.com/alexa/avs-device-sdk/issues/477) Fixed a bug in which Alexa's weather response was being truncated. +* Fixed an issue in which there were reports of instability related to the Sensory engine. To correct this, the `portAudio` [`suggestedLatency`](https://github.com/alexa/avs-device-sdk/blob/master/Integration/AlexaClientSDKConfig.json#L62) value can now be configured. + +**Known Issues** +* The `ACL` may encounter issues if audio attachments are received but not consumed. +* `SpeechSynthesizerState` currently uses `GAINING_FOCUS` and `LOSING_FOCUS` as a workaround for handling intermediate state. These states may be removed in a future release. +* Music playback doesn't immediately stop when a user barges-in on iHeartRadio. +* The Windows sample app hangs on exit. +* GDB receives a `SIGTRAP` when troubleshooting the Windows sample app. +* `make integration` doesn't work on Windows. Integration tests will need to be run individually. + +### [1.5.0] - 2018-02-12 + +**Enhancements** +* Added the `ExternalMediaPlayer` Capability Agent. This allows playback from music providers that control their own playback queue. Example: Spotify. +* Added support for AU and NZ to the `SampleApp`. +* Firmware version can now be sent to Alexa via the `SoftwareInfo` event. The firmware version is specified in the config file under the `sampleApp` object as an integer value named [`firmwareVersion`](https://github.com/alexa/avs-device-sdk/blob/master/Integration/AlexaClientSDKConfig.json#L52). +* The new `f` command was added to the `SampleApp` which allows the firmware version to be updated at run-time. +* Optional configuration changes have been introduced. Now a [default log level](https://github.com/alexa/avs-device-sdk/blob/master/Integration/AlexaClientSDKConfig.json#L93) can be set for `ACSDK_LOG_MODULE` components, globally or individually. This value is specified under a new root level configuration object called `logger`, and the value itself is named `logLevel`. This allows you to limit the degree of logging to that default value, such as `ERROR`or `INFO`. + +**Bug Fixes** +* Fixed bug where `AudioPlayer` progress reports were not being sent, or were being sent incorrectly. +* [Issue 408](https://github.com/alexa/avs-device-sdk/issues/408) - Irrelevant code related to `UrlSource` was removed from the `GStreamer-based MediaPlayer` implementation. +* The `TZ` variable no longer needs to be set to `UTC` when building the `SampleApp`. +* Fixed a bug where `CurlEasyHandleWrapper` logged unwanted data on failure conditions. +* Fixed a bug to improve `SIGPIPE` handling. +* Fixed a bug where the filename and classname were mismatched. Changed `UrlToAttachmentConverter.h` to `UrlContentToAttachmentConverter.h`,and `UrlToAttachmentConverter.cpp` to `UrlContentToAttachmentConverter.cpp`. +* Fixed a bug where after muting and then un-muting the GStreamer-based `MediaPlayer` implementation, the next item in queue would play instead of continuing playback of the originally muted item. + +**Known Issues** +* The `ACL` may encounter issues if audio attachments are received but not consumed. +* Display Cards for Kindle don't render. +* `SpeechSynthesizerState` currently uses `GAINING_FOCUS` and `LOSING_FOCUS` as a workaround for handling intermediate state. These states may be removed in a future release. +* Music playback doesn't immediately stop when a user barges-in on iHeartRadio. + +### [1.4.0] - 2018-01-12 + +**Enhancements** +* Added the Notifications Capability Agent. This allows a client to receive notification indicators from Alexa. +* Added support for the `SoftwareInfo` event. This code is triggered in the `SampleApp` by providing a positive decimal integer as the "firmwareVersion" value in "sampleApp" object of the `AlexaClientSDKConfig.json`. The reported firmware version can be updated after starting the `SampleApp` by calling `SoftwareInfoSender::setFirmwareVersion()`. This code path can be exercised in the `SampleApp` with the new command: `f`. +* Added unit tests for Alerts. +* The GStreamer-based pipeline allows for the configuration of `MediaPlayer` output based on information provided in `Config`. +* Playlist streaming now uses a `BLOCKING` writer, which improves streaming efficiency. + +**Bug Fixes** +* Fixed bug where `SpeechSynthesizer` would not stop playback when a state change timeout was encountered. +* Fixed the `SampleApplication` destructor to avoid segfaults if the object is not constructed correctly. +* Fixed bug where `AudioPlayer` would erroneously call `executeStop()` in `cancelDirective()`. +* [Issue 396](https://github.com/alexa/avs-device-sdk/issues/396) - Fixed bug for compilation error with GCC7 in `AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Audio/AlertsAudioFactoryInterface.h` +* [Issue 384](https://github.com/alexa/avs-device-sdk/issues/384) - Fixed bug that caused `AuthServer.py` to crash. +* Fixed bug where a long delay was encountered after pausing and resuming a large Audible chapter. +* Fixed bug that caused named timers and reminders to loop for an additional `loopCount` . +* Fixed memory corruption bug in `MessageInterpreter`. +* Fixed illegal memory accesses in `MediaPlayer` logging. + +**Known Issues** +* The `ACL` may encounter issues if audio attachments are received but not consumed. +* Display Cards for Kindle don't render. +* If using the GStreamer-based `MediaPlayer` implementation, after muting and un-muting an audio item, the next item in the queue will begin playing rather than continuing playback of the originally muted audio item. +* `SpeechSynthesizerState` currently uses `GAINING_FOCUS` and `LOSING_FOCUS` as a workaround for handling intermediate state. These states may be removed in a future release. +* Music playback doesn't immediately stop when a user barges-in on iHeartRadio. + +### [1.3.0] - 2017-12-08 + +* **Enhancements** + * ContextManager now passes the namespace/name of the desired state to StateProviderInterface::provideState(). This is helpful when a single StateProvider object provides multiple states, and needs to know which one ContextManager is asking for. + * The mime parser was hardened against duplicate boundaries. + * Added functionality to add and remove AudioPlayer observers to the DefaultClient. + * Unit tests for Alerts were added. + * Added en-IN, en-CA and ja-JP to the SampleApp locale selection menu. + * Added default alert and timer audio data to the SDK SampleApp. There is no longer a requirement to download these audio files and configure them in the json configuration file. + * Added support in SDS Reader and AttachmentReader for seeking into the future. This allows a reader to move to an index which has not yet arrived in the SDS and poll/block until it arrives. + * Added support for blocking Writers in the SharedDataStream class. + * Changed the default status code sent by MessageRequestObserverInterface::onSendCompleted() to SERVER_OTHER_ERROR, and mapped HTTP code 500 to SERVER_INTERNAL_ERROR_V2. + * Added support for parsing stream duration out of playlists. + * Added a configuration option ("sampleApp":"displayCardsSupported") that allows the displaying of display cards to be enabled or disabled. + * Named Timers and Reminders have been updated to fall back to the on-device background audio sound when cloud urls cannot be accessed or rendered. + +* **Bug Fixes** + * Removed floating point dependencies from core SDK libraries. + * Fixed bug in SpeechSynthesizer where it's erroneously calling stop more than once. + * Fixed an issue in ContentFetcher where it could hang during destruction until an active GET request completed. + * Fixed a couple of parsing bugs in LibCurlHttpContentFetcher related to case-sensitivity and mime-type handling. + * Fixed a bug where MediaPlayerObserverInterface::onPlaybackResumed() wasn't being called after resuming from a pause with a pending play/resume. + * Fixed a bug in LibCurlContentFetcher where it could error out if data is written to the SDS faster than it is consumed. + * The GStreamer-based MediaPlayer reference implementation now uses the ACL HTTP configured client. + * An API change has been made to MediaPlayerInterface::setSource(). This method now takes in an optional offset as well to allow for immediately streaming to the offset if possible. + * Next and Previous buttons now work with Audible. + * Pandora resume stuttering is addressed. + * Pausing and resuming Amazon music no longer seeks back to the beginning of the song. + * libcurl CURLOPT_NOSIGNAL option is set to 1 (https://curl.haxx.se/libcurl/c/CURLOPT_NOSIGNAL.html) to avoid crashes observed in SampleApp. + * Fixed the timing of the PlaybackReportIntervalEvent and PlaybackReportDelayEvent as specified in the directives. + * Fixed potential deadlocks in MediaPlayer during shutdown related to queued callbacks. + * Fixed a crash in MediaPlayer that could occur if the network is disconnected during playback. + * Fixed a bug where music could keep playing while Alexa is speaking. + * Fixed a bug which was causing problems with pause/resume and next/previous with Amazon Music. + * Fixed a bug where music could briefly start playing between speaks. + * Fixed a bug where HLS playlists would stop streaming after the initial playlist had been played to completion. + * Fixed a bug where Audible playback could not advance to the next chapter. + * Fixed some occurrences of SDK entering the IDLE state during the transition between Listening and Speaking states. + * Fixed a bug where PlaybackFinished events were not reporting the correct offset. + * An API change has been made to MediaPlayerInterface::getOffset(). This method is now required to return the final offset when called after playback has stopped. + * Fixed a problem where AIP was erroneously resetting its state upon getting a cancelDirective() callback. + +* **Known Issues** + * Capability agent for Notifications is not included in this release. + * `ACL`'s asynchronous receipt of audio attachments may manage resources poorly in scenarios where attachments are received but not consumed. + * GUI cards don't show for Kindle. + * The new SpeechSynthesizerState state values GAINING_FOCUS and LOSING_FOCUS were added as part of a work-around. The will likely be removed in subsequent releases. + * With the gstreamer-based MediaPlayer, after muting and unmuting, the next item starts playing rather than continuing with the current item. + +### [1.2.1] - 2017-11-16 + +* **Enhancements** + * Added comments to `AlexaClientSDKConfig.json`. These descriptions provide additional guidance for what is expected for each field. + * Enabled pause and resume controls for Pandora. + +* **Bug Fixes** + * Bug fix for [issue #329](https://github.com/alexa/avs-device-sdk/issues/329) - `HTTP2Transport` instances no longer leak when `SERVER_SIDE_DISCONNECT` is encountered. + * Bug fix for [issue #189](https://github.com/alexa/avs-device-sdk/issues/189) - Fixed a race condition in the `Timer` class that sometimes caused `SpeechSynthesizer` to get stuck in the "Speaking" state. + * Bug fix for a race condition that caused `SpeechSynthesizer` to ignore subsequent `Speak` directives. + * Bug fix for corrupted mime attachments. + +### [1.2.0] - 2017-10-27 +* **Enhancements** + * Updated MediaPlayer to solve stability issues + * All capability agents were refined to work with the updated MediaPlayer + * Added the TemplateRuntime capability agent + * Added the SpeakerManager capability agent + * Added a configuration option ("sampleApp":"endpoint") that allows the endpoint that SampleApp connects to to be specified without changing code or rebuilding + * Added very verbose capture of libcurl debug information + * Added an observer interface to observer audio state changes from AudioPlayer + * Added support for StreamMetadataExtracted Event. Stream tags found in the stream are represented in JSON and sent to AVS + * Added to the SampleApp a simple GuiRenderer as an observer to the TemplateRuntime Capability Agent + * Moved shared libcurl functionality to AVSCommon/Utils + * Added a CMake option to exclude tests from the "make all" build. Use "cmake + -DACSDK_EXCLUDE_TEST_FROM_ALL=ON" to enable it. When this option is enabled "make unit" and "make integration" still could be used to build and run the tests + +* **Bug fixes**: + * Previously scheduled alerts now play following a restart + * General stability fixes + * Bug fix for CertifiedSender blocking forever if the network goes down while it's trying to send a message to AVS + * Fixes for known issue of Alerts integration tests fail: AlertsTest.UserLongUnrelatedBargeInOnActiveTimer and AlertsTest.handleOneTimerWithVocalStop + * Attempting to end a tap-to-talk interaction with the tap-to-talk button wouldn't work + * SharedDataStream could encounter a race condition due to a combination of a blocking Reader and a Writer closing before writing any data + * Bug-fix for the ordering of notifications within alerts scheduling. This fixes the issue where a local-stop on an alert would also stop a subsequent alert if it were to begin without delay + +* **Known Issues** + +* Capability agent for Notifications is not included in this release +* Inconsistent playback behavior when resuming content ("Alexa, pause." / "Alexa, resume."). Specifically, handling playback offsets, which causes the content to play from the start. This behavior is also occasionally seen with "Next" / +"Previous". +* `ACL`'s asynchronous receipt of audio attachments may manage resources poorly in scenarios where attachments are received but not consumed. +* Music playback failures may result in an error Text to Speech being rendered repeatedly +* Reminders and named timers don't sound when there is no connection +* GUI cards don't show for Kindle + +### [1.1.0] - 2017-10-02 +* **Enhancements** + * Better GStreamer error reporting. MediaPlayer used to only report `MEDIA_ERROR_UNKNOWN`, now reports more specific errors as defined in `ErrorType.h`. + * Codebase has been formatted for easier reading. + * `DirectiveRouter::removeDirectiveHandler()` signature changed and now returns a bool indicating if given handler should be successfully removed or not. + * Cleanup of raw and shared pointers in the creation of `Transport` objects. + * `HTTP2Stream`s now have IDs assigned as they are acquired as opposed to created, making associated logs easier to interpret. + * `AlertsCapabilityAgent` has been refactored. + * Alert management has been factored out into an `AlertScheduler` class. + * Creation of Reminder (implements Alert) class. + * Added new capability agent for `PlaybackController` with unit tests. + * Added Settings interface with unit tests. + * Return type of `getOffsetInMilliseconds()` changed from `int64_t` to `std::chronology::milliseconds`. + * Added `AudioPlayer` unit tests. + * Added teardown for all Integration tests except Alerts. + * Implemented PlaylistParser. + +* **Bug fixes**: + * AIP getting stuck in `LISTENING` or `THINKING` and refusing user input on network outage. + * SampleApp crashing if running for 5 minutes after network disconnect. + * Issue where on repeated user barge-ins, `AudioPlayer` would not pause. Specifically, the third attempt to “Play iHeartRadio” would not result in currently-playing music pausing. + * Utterances being ignored after particularly long TTS. + * GStreamer errors cropping up on SampleApp exit as a result of accessing the pipeline before it’s been setup. + * Crashing when playing one URL after another. + * Buffer overrun in Alerts Renderer. + * [SampleApp crashing when issuing "Alexa skip" command with iHeartRadio.](https://github.com/alexa/avs-device-sdk/issues/153) + * [`HTTP2Transport` network thread triggering a join on itself.](https://github.com/alexa/avs-device-sdk/issues/127) + * [`HTTP2Stream` request handling truncating exception messages.](https://github.com/alexa/avs-device-sdk/issues/67) + * [`AudioPlayer` was attempting an incorrect state transition from `STOPPED` to `PLAYING` through a `playbackResumed`.](https://github.com/alexa/avs-device-sdk/issues/138) + +* **Known Issues** + +* Native components for the following capability agents are **not** included in this release: `Speaker`, `TemplateRuntime`, and `Notifications` +* `ACL`'s asynchronous receipt of audio attachments may manage resources poorly in scenarios where attachments are received but not consumed. +* When an `AttachmentReader` does not deliver data for prolonged periods, `MediaPlayer` may not resume playing the delayed audio. +* Without the refresh token in the JSON file, the sample app crashes on start up. +* Alerts do not play after restarting the device. +* Alexa's responses are cut off by about half a second when asking "What's up" or barging into an active alarm to ask the time. +* Switching from Kindle to Amazon Music after pausing and resuming Kindle doesn't work. +* Pause/resume on Amazon Music causes entire song to start over. +* Stuck in listening state if `ExpectSpeech` comes in when the microphone has been turned off. +* Pausing and resuming Pandora causes stuttering, looped audio. +* Audible features are not fully supported. +* `Recognize` event after regaining network connection and during an alarm going off can cause client to get stuck in `Recognizing` state. +* Three Alerts integration tests fail: `handleMultipleTimersWithLocalStop`, `AlertsTest.UserLongUnrelatedBargeInOnActiveTimer`, `AlertsTest.handleOneTimerWithVocalStop` +* `MediaPlayerTest.testSetOffsetSeekableSource` unit test fails intermittently on Linux. + ### [1.0.3] - 2017-09-19 * **Enhancements** * Implemented `setOffSet` in `MediaPlayer`. @@ -11,6 +228,7 @@ * Bug fix for ADSL test failures with `sendDirectiveWithoutADialogRequestId`. * Bug fix for `SpeechSynthesizer` showing the wrong UX state when a burst of `Speak` directives are received. * Bug fix for recursive loop in `AudioPlayer.Stop`. +>>>>>>> 3553854... Updated CHANGELOG.md and README.md for 1.1 ### [1.0.2] - 2017-08-23 * Removed code from AIP which propagates ExpectSpeech initiator strings to subsequent Recognize events. This code will be re-introduced when AVS starts sending initiator strings. @@ -33,7 +251,7 @@ * `AudioPlayer` sending `PlaybackPaused` during flash briefing. * Long Delay playing live stations on iHeartRadio. * Teardown warnings at the end of integration tests. - + ### [1.0.0] - 2017-08-07 * Added `AudioPlayer` capability agent. diff --git a/CMakeLists.txt b/CMakeLists.txt index aeb0e30530..461ddca999 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,11 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR) # Set project information -project(AlexaClientSDK VERSION 1.0.3 LANGUAGES CXX) +project(AlexaClientSDK VERSION 1.6.0 LANGUAGES CXX) set(PROJECT_BRIEF "A cross-platform, modular SDK for interacting with the Alexa Voice Service") +if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CapabilityAgents/ExternalMediaPlayer/src/ExternalMediaPlayerAdapters") + set(HAS_EXTERNAL_MEDIA_PLAYER_ADAPTERS ON) +endif() include(build/BuildDefaults.cmake) include(tools/Testing.cmake) @@ -10,6 +13,13 @@ include(tools/Testing.cmake) # Set variables for target install and .pc pkg-config file include(build/cmake/PrepareInstall.cmake) + +configure_file ( + "${PROJECT_SOURCE_DIR}/AVSCommon/Utils/include/AVSCommon/Utils/SDKVersion.h.in" + "${PROJECT_SOURCE_DIR}/AVSCommon/Utils/include/AVSCommon/Utils/SDKVersion.h" + ) + + # Alexa Client SDK targets. add_subdirectory("ThirdParty") add_subdirectory("AVSCommon") @@ -17,14 +27,22 @@ add_subdirectory("ACL") add_subdirectory("AuthDelegate") add_subdirectory("ADSL") add_subdirectory("AFML") +add_subdirectory("CertifiedSender") add_subdirectory("ContextManager") add_subdirectory("MediaPlayer") add_subdirectory("PlaylistParser") add_subdirectory("KWD") add_subdirectory("CapabilityAgents") -add_subdirectory("Integration") +if (ACSDK_EXCLUDE_TEST_FROM_ALL) + add_subdirectory("Integration" EXCLUDE_FROM_ALL) +else() + add_subdirectory("Integration") +endif() add_subdirectory("ApplicationUtilities") +add_subdirectory("ESP") +add_subdirectory("RegistrationManager") add_subdirectory("SampleApp") +add_subdirectory("Storage") add_subdirectory("doc") # Create .pc pkg-config file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..51b701844b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,17 @@ +## Need help? +If you have questions, comments, or simply want to engage with the AVS developer community, please leverage our [issues list](https://github.com/alexa/avs-device-sdk/issues/) where we actively monitor and respond to developer feedback and concerns. + +## Report an issue +If you find a bug in the source code or a mistake in the documentation, please submit an issue using the [issue tracker](https://github.com/alexa/avs-device-sdk/issues/new). + +Before opening a new issue, please look through the [open issues](https://github.com/alexa/avs-device-sdk/issues) to make sure it's not a duplicate. Avoiding duplicates allows our team to spend more time fixing bugs, adding new features, and making AVS awesome. If you find an existing issue and you have additional information, please add it to that issue. + +The following information will ensure a quick response: + +* **Overview** - provide a brief, but complete, overview of the issue you're encountering. +* **OS and build** - tell us about your operating system and build. +* **Logs** - can you spot the issue in your logs? +* **Related issues** - does a similar issue exist (open or closed)? + +## Pull requests +We are **not** accepting pull requests or community contributed bug fixes at this time. diff --git a/CapabilityAgents/AIP/CMakeLists.txt b/CapabilityAgents/AIP/CMakeLists.txt index f0e546c445..4e1848e8d3 100644 --- a/CapabilityAgents/AIP/CMakeLists.txt +++ b/CapabilityAgents/AIP/CMakeLists.txt @@ -4,4 +4,4 @@ project(AIP LANGUAGES CXX) include(../../build/BuildDefaults.cmake) add_subdirectory("src") -add_subdirectory("test") +acsdk_add_test_subdirectory_if_allowed() diff --git a/CapabilityAgents/AIP/include/AIP/ASRProfile.h b/CapabilityAgents/AIP/include/AIP/ASRProfile.h index 2e6ad9b925..5e5397bdf4 100644 --- a/CapabilityAgents/AIP/include/AIP/ASRProfile.h +++ b/CapabilityAgents/AIP/include/AIP/ASRProfile.h @@ -1,7 +1,5 @@ /* - * ASRProfile.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,13 +13,17 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENT_AIP_INCLUDE_AIP_ASR_PROFILE_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENT_AIP_INCLUDE_AIP_ASR_PROFILE_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_ASRPROFILE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_ASRPROFILE_H_ + +#include namespace alexaClientSDK { namespace capabilityAgents { namespace aip { +#include + /** * Enumerates the different ASR profiles supported by AVS. * @see https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/speechrecognizer#profiles @@ -42,7 +44,7 @@ enum class ASRProfile { * @param profile The profile value to write to the @c ostream as a string. * @return The @c ostream that was passed in and written to. */ -inline std::ostream& operator << (std::ostream& stream, ASRProfile profile) { +inline std::ostream& operator<<(std::ostream& stream, ASRProfile profile) { switch (profile) { case ASRProfile::CLOSE_TALK: stream << "CLOSE_TALK"; @@ -57,9 +59,8 @@ inline std::ostream& operator << (std::ostream& stream, ASRProfile profile) { return stream; } +} // namespace aip +} // namespace capabilityAgents +} // namespace alexaClientSDK -} // namespace aip -} // namespace capabilityAgents -} // namespace alexaClientSDK - -#endif //ALEXA_CLIENT_SDK_CAPABILITY_AGENT_AIP_INCLUDE_AIP_ASR_PROFILE_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_ASRPROFILE_H_ diff --git a/CapabilityAgents/AIP/include/AIP/AudioInputProcessor.h b/CapabilityAgents/AIP/include/AIP/AudioInputProcessor.h index bd91ba1368..41df1b70bd 100644 --- a/CapabilityAgents/AIP/include/AIP/AudioInputProcessor.h +++ b/CapabilityAgents/AIP/include/AIP/AudioInputProcessor.h @@ -1,7 +1,5 @@ /* - * AudioInputProcessor.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,29 +13,31 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AIP_INCLUDE_AIP_AUDIO_INPUT_PROCESSOR_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AIP_INCLUDE_AIP_AUDIO_INPUT_PROCESSOR_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_AUDIOINPUTPROCESSOR_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_AUDIOINPUTPROCESSOR_H_ #include #include -#include -#include -#include +#include #include -#include +#include +#include +#include #include +#include +#include +#include +#include #include +#include +#include +#include #include #include #include -#include -#include -#include -#include -#include -#include #include "AudioProvider.h" +#include "ESPData.h" #include "Initiator.h" namespace alexaClientSDK { @@ -56,11 +56,12 @@ namespace aip { * Application code can also register objects which implement the @c ObserverInterface to receive notifications when * the @c AudioInputProcessor state changes. */ -class AudioInputProcessor : - public avsCommon::avs::CapabilityAgent, - public avsCommon::sdkInterfaces::DialogUXStateObserverInterface, - public avsCommon::utils::RequiresShutdown, - public std::enable_shared_from_this { +class AudioInputProcessor + : public avsCommon::avs::CapabilityAgent + , public avsCommon::sdkInterfaces::DialogUXStateObserverInterface + , public avsCommon::sdkInterfaces::MessageRequestObserverInterface + , public avsCommon::utils::RequiresShutdown + , public std::enable_shared_from_this { public: /// Alias to the @c AudioInputProcessorObserverInterface for brevity. using ObserverInterface = avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface; @@ -111,11 +112,12 @@ class AudioInputProcessor : void removeObserver(std::shared_ptr observer); /** - * This function asks the @c AudioInputProcessor to send a Recognize Event to AVS and start streaming from - * @c audioProvider, which transitions it to the @c RECOGNIZING state. This function can be called in any state - * except @c BUSY, however the flags in @c AudioProvider will dictate whether the call is allowed to override an - * ongoing Recognize Event. If the flags do not allow an override, no event will be sent, no state change will - * occur, and the function will fail. + * This function asks the @c AudioInputProcessor to send a Recognize Event to AVS and start streaming from @c + * audioProvider, which transitions it to the @c RECOGNIZING state. A ReportEchoSpatialPerceptionData Event will + * also be sent before the Recognize event if ESP measurements is passed into @c espData. This function can be + * called in any state except @c BUSY, however the flags in @c AudioProvider will dictate whether the call is + * allowed to override an ongoing Recognize Event. If the flags do not allow an override, no event will be sent, no + * state change will occur, and the function will fail. * * @note This function will not pass the audio stream to @c MessageSenderInterface to start streaming if the the * start index or any subsequent data has already expired from the buffer. In addition, it is assumed that @@ -133,7 +135,7 @@ class AudioInputProcessor : * If all of the above requirements are met, audio steaming will start between 0 and 500ms before @c begin, and the * cloud will perform additional verification of the wakeword audio before proceeding to recognize the subsequent * audio. - * + * * @param audioProvider The @c AudioProvider to stream audio from. * @param initiator The type of interface that initiated this recognize event. * @param begin The @c Index in @c audioProvider.stream where audio streaming should begin. This parameter is @@ -147,6 +149,7 @@ class AudioInputProcessor : * empty string. This parameter is ignored if initiator is not @c WAKEWORD. The only value currently * accepted by AVS for keyword is "ALEXA". See * https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/context#recognizerstate + * @param espData The ESP measurements to be sent in the ReportEchoSpatialPerceptionData event. * @return A future which is @c true if the Recognize Event was started successfully, else @c false. */ std::future recognize( @@ -154,7 +157,8 @@ class AudioInputProcessor : Initiator initiator, avsCommon::avs::AudioInputStream::Index begin = INVALID_INDEX, avsCommon::avs::AudioInputStream::Index keywordEnd = INVALID_INDEX, - std::string keyword = ""); + std::string keyword = "", + const ESPData& espData = ESPData::EMPTY_ESP_DATA); /** * This function asks the @c AudioInputProcessor to stop streaming audio and end an ongoing Recognize Event, which @@ -176,7 +180,8 @@ class AudioInputProcessor : /// @name StateProviderInterface Functions /// @{ - void provideState(unsigned int stateRequestToken) override; + void provideState(const avsCommon::avs::NamespaceAndName& stateProviderName, unsigned int stateRequestToken) + override; /// @} /// @name ContextRequesterInterface Functions @@ -185,6 +190,12 @@ class AudioInputProcessor : void onContextFailure(const avsCommon::sdkInterfaces::ContextRequestError error) override; /// @} + /// @name MessageRequestObserverInterface Functions + /// @{ + void onSendCompleted(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status status) override; + void onExceptionReceived(const std::string& exceptionMessage) override; + /// @} + /// @name CapabilityAgent/DirectiveHandlerInterface Functions /// @{ void handleDirectiveImmediately(std::shared_ptr directive) override; @@ -203,7 +214,7 @@ class AudioInputProcessor : /// @name DialogUXStateObserverInterface Functions /// @{ void onDialogUXStateChanged( - avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState newState) override; + avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState newState) override; /// @} private: @@ -271,12 +282,20 @@ class AudioInputProcessor : /// @{ /** - * This function builds and sends a @c Recognize event. This version of the function expects an enumerated - * @c Initiator, and will build up the initiator json content for the event, before calling the - * @c executeRecognize() function below which takes an initiator string. + * This function builds a @c ReportEchoSpatialPerceptionData event. The event will not be sent out until context is + * available so that the @c ReportEchoSpatialPerceptionData event will be sent just before the @c Recognize event. + * @param espData The ESP measurements to be sent in the ReportEchoSpatialPerceptionData event. + */ + void executePrepareEspPayload(const ESPData& espData); + + /** + * This function builds @c a Recognize event and will request context so the events will be sent upon @c + * onContextAvailable(). This version of the function expects an enumerated @c Initiator, and will build up the + * initiator json content for the event, before calling the @c executeRecognize() function below which takes an + * initiator string. * * @see @c recognize() for a detailed explanation of the Recognize Event. - * + * * @param audioProvider The @c AudioProvider to stream audio from. * @param initiator The type of interface that initiated this recognize event. * @param begin The @c Index in @c audioProvider.stream where audio streaming should begin. This parameter is @@ -301,12 +320,12 @@ class AudioInputProcessor : /** * This function builds and sends a @c Recognize event. This version of the function expects a pre-built string - * containing the iniator json content for the event. This initiator string is either built by the + * containing the initiator json content for the event. This initiator string is either built by the * @c executeRecognize() function above which takes an enumerated @c Initiator, or is an opaque object provided by * an @c ExpectSpeech directive. * * @see @c recognize() for a detailed explanation of the Recognize Event. - * + * * @param audioProvider The @c AudioProvider to stream audio from. * @param initiatorJson A JSON string describing the type of interface that initiated this recognize event. * @param begin The @c Index in @c audioProvider.stream where audio streaming should begin. This parameter is @@ -388,13 +407,11 @@ class AudioInputProcessor : * occurs, the timer will call @c executeExpectSpeechTimedOut(), which will send an ExpectSpeechTimedOut event. * * @param timeout The number of milliseconds to wait for a Recognize event. - * @param initiator The initiator json string from the ExpectSpeech directive. * @param info The @c DirectiveInfo for this call. * @return @c true if called in the correct state and the state had changed to @c EXPECTING_SPEECH or * @c RECOGNIZING, else @c false. */ - bool executeExpectSpeech( - std::chrono::milliseconds timeout, std::string initiator, std::shared_ptr info); + bool executeExpectSpeech(std::chrono::milliseconds timeout, std::shared_ptr info); /** * This function is called when @c m_expectingSpeechTimer expires. It will send an ExpectSpeechTimedOut event. @@ -415,13 +432,13 @@ class AudioInputProcessor : void executeProvideState(bool sendToken = false, unsigned int stateRequestToken = 0); /** - * This function is called whenever the AVS UX dialog state of the system changes. This function will block + * This function is called whenever the AVS UX dialog state of the system changes. This function will block * processing of other state changes, so any implementation of this should return quickly. * * @param newState The new dialog specific AVS UX state. */ void executeOnDialogUXStateChanged( - avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState newState); + avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState newState); /** * This function updates the @c AudioInputProcessor state and notifies the state observer. Any changes to @@ -491,20 +508,38 @@ class AudioInputProcessor : */ std::shared_ptr m_reader; + /** + * The payload for a ReportEchoSpatialPerceptionData event. This string is populated by a call to @c + * executeRecognize(), and later consumed by a call to @c executeOnContextAvailable() when the context arrives and + * the full @c MessageRequest can be assembled. This string is only relevant during the @c RECOGNIZING state. + */ + std::string m_espPayload; + /** * The payload for a Recognize event. This string is populated by a call to @c executeRecognize(), and later * consumed by a call to @c executeOnContextAvailable() when the context arrives and the full @c MessageRequest can * be assembled. This string is only relevant during the @c RECOGNIZING state. */ - std::string m_payload; + std::string m_recognizePayload; + + /** + * The @c MessageRequest for a ReportEchoSpatialPerceptionData event. This request is created by a call to + * @c executeOnContextAvailable(), and either sent immediately (if `m_focusState == afml::FocusState::FOREGROUND`), + * or later sent by a call to @c executeOnFocusChanged(). This pointer is only valid during the @c RECOGNIZING + * state after a call to @c executeRecognize(), and is reset after it is sent. + */ + std::shared_ptr m_espRequest; /** * The @c MessageRequest for a Recognize event. This request is created by a call to * @c executeOnContextAvailable(), and either sent immediately (if `m_focusState == afml::FocusState::FOREGROUND`), * or later sent by a call to @c executeOnFocusChanged(). This pointer is only valid during the @c RECOGNIZING * state after a call to @c executeRecognize(), and is reset after it is sent. + * + * @note If ESP measurement is provided in @c recognize(), the @c ReportEchoSpatialPerceptionData event is sent + * before the @c Recognize event. */ - std::shared_ptr m_request; + std::shared_ptr m_recognizeRequest; /// The current state of the @c AudioInputProcessor. ObserverInterface::State m_state; @@ -532,7 +567,18 @@ class AudioInputProcessor : std::function m_deferredStopCapture; /// This flag indicates whether the initial dialog UX State has been received. - bool m_initialDialogUXStateReceived; + bool m_initialDialogUXStateReceived; + + /** + * The initiator value from the preceding ExpectSpeech directive. The ExpectSpeech directive's initiator + * will need to be consumed and sent back in a subsequent Recognize event. This should be cleared if the + * ExpectSpeech times out. An empty initiator is possible, in which case an empty initiator should be sent back to + * AVS. This must override the standard user initiated Recognize initiator. + * + * A value of nullptr indicates that there is no pending preceding initiator to be consumed, and the Recognize's + * initiator should conform to the standard user initiated format. + */ + std::unique_ptr m_precedingExpectSpeechInitiator; /// @} /** @@ -544,8 +590,8 @@ class AudioInputProcessor : avsCommon::utils::threading::Executor m_executor; }; -} // namespace aip -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace aip +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AIP_INCLUDE_AIP_AUDIO_INPUT_PROCESSOR_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_AUDIOINPUTPROCESSOR_H_ diff --git a/CapabilityAgents/AIP/include/AIP/AudioProvider.h b/CapabilityAgents/AIP/include/AIP/AudioProvider.h index f7f4621342..7a623ffd33 100644 --- a/CapabilityAgents/AIP/include/AIP/AudioProvider.h +++ b/CapabilityAgents/AIP/include/AIP/AudioProvider.h @@ -1,7 +1,5 @@ /* - * AudioProvider.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENT_AIP_INCLUDE_AIP_AUDIO_PROVIDER_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENT_AIP_INCLUDE_AIP_AUDIO_PROVIDER_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_AUDIOPROVIDER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_AUDIOPROVIDER_H_ #include #include @@ -55,7 +53,7 @@ struct AudioProvider { * This function provides an invalid AudioProvider which has no stream associated with it. * * @return An invalid AudioProvider which has no stream associated with it. - */ + */ static const AudioProvider& null(); /** @@ -92,9 +90,14 @@ inline AudioProvider::AudioProvider( bool alwaysReadable, bool canOverride, bool canBeOverridden) - // Note: There is an issue with braced initialization of an aggregate type in GCC 4.8, so parentheses are used - // below to initialize format. - : stream{stream}, format(format), profile{profile}, alwaysReadable{alwaysReadable}, canOverride{canOverride}, + // Note: There is an issue with braced initialization of an aggregate type in GCC 4.8, so parentheses are used + // below to initialize format. + : + stream{stream}, + format(format), + profile{profile}, + alwaysReadable{alwaysReadable}, + canOverride{canOverride}, canBeOverridden{canBeOverridden} { } @@ -113,9 +116,8 @@ inline AudioProvider::operator bool() const { return stream != nullptr; } +} // namespace aip +} // namespace capabilityAgents +} // namespace alexaClientSDK -} // namespace aip -} // namespace capabilityAgents -} // namespace alexaClientSDK - -#endif //ALEXA_CLIENT_SDK_CAPABILITY_AGENT_AIP_INCLUDE_AIP_AUDIO_PROVIDER_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_AUDIOPROVIDER_H_ diff --git a/CapabilityAgents/AIP/include/AIP/ESPData.h b/CapabilityAgents/AIP/include/AIP/ESPData.h new file mode 100644 index 0000000000..1aefb5a69f --- /dev/null +++ b/CapabilityAgents/AIP/include/AIP/ESPData.h @@ -0,0 +1,105 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_ESPDATA_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_ESPDATA_H_ + +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace aip { + +/** + * A class representation of the Echo Spatial Perception (ESP) data. This data is used by AVS for device + * arbitration. The ESP measurement data needs to be sent in the @c ReportEchoSpatialPerceptionData event to AVS before + * its corresponding @c Recognize event. Please note that AVS specifies that the voice energy and ambient energy ESP + * measurements are float numbers, but in order to remove the dependency of float with the SDK, the float numbers will + * be represented as a string. + */ +class ESPData { +public: + /* + * Empty ESP data measurement. Can be used as the default value for a function parameter to indicate ESP is not + * supported. + */ + static const ESPData EMPTY_ESP_DATA; + + /* + * Default constructor that initializes the @c m_voiceEnergy and @c m_ambientEnergy to a empty string. + */ + ESPData() = default; + + /* + * Constructor that initializes @c m_voiceEnergy and @c m_ambientEnergy to the values specified. + * + * @param voiceEnergy The string representation of the voice energy measurement in float. + * @param ambientEnergy The string representation of the ambient energy measurement in float. + */ + ESPData(const std::string& voiceEnergy, const std::string& ambientEnergy); + + /* + * Get the voice energy ESP measurement. + * + * @return The string representation of the voice energy measurement in float. + */ + std::string getVoiceEnergy() const; + + /* + * Get the ambient energy ESP measurement. + * + * @return The string representation of the ambient energy measurement in float. + */ + std::string getAmbientEnergy() const; + + /* + * Provide rudimentary verification to the ESPData to make sure the measurement strings do not contain anything + * malicious, only alphanumeric, decimal, and positive/negative sign characters are allowed. AVS will be doing the + * verification at the end. + * + * @return @c true if both @c m_voiceEnergy and @c m_ambientEnergy don't contain invalid characters, else @c false. + */ + bool verify() const; + + /* + * Check if the ESP data is empty. + * + * @return @c true if both @c m_voiceEnergy and @c m_ambientEnergy are empty, else @c false. + */ + bool isEmpty() const; + +private: + /* + * Provide rudimentary verification to see if a string does not contain anything malicious, only alphanumeric, + * decimal, and positive/negative sign characters are allowed. + * + * @param valueToVerify The string to verify if it contains a value float number. + * @return @c true if @c valueToVerify contains only valid characters, else @c false. + */ + static bool verifyHelper(const std::string& valueToVerify); + + /// String representation of voice energy ESP measurement in float. + std::string m_voiceEnergy; + + /// String representation of ambient energy ESP measurement in float. + std::string m_ambientEnergy; +}; + +} // namespace aip +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_ESPDATA_H_ diff --git a/CapabilityAgents/AIP/include/AIP/Initiator.h b/CapabilityAgents/AIP/include/AIP/Initiator.h index 69ceb87d7e..fa6735c276 100644 --- a/CapabilityAgents/AIP/include/AIP/Initiator.h +++ b/CapabilityAgents/AIP/include/AIP/Initiator.h @@ -1,7 +1,5 @@ /* - * Initiator.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,13 +13,15 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENT_AIP_INCLUDE_AIP_INITIATOR_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENT_AIP_INCLUDE_AIP_INITIATOR_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_INITIATOR_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_INITIATOR_H_ namespace alexaClientSDK { namespace capabilityAgents { namespace aip { +#include + /** * Enumerates the different initiators supported by AVS. */ @@ -52,9 +52,8 @@ inline std::string initiatorToString(Initiator initiator) { return "Unknown Inititator"; } +} // namespace aip +} // namespace capabilityAgents +} // namespace alexaClientSDK -} // namespace aip -} // namespace capabilityAgents -} // namespace alexaClientSDK - -#endif //ALEXA_CLIENT_SDK_CAPABILITY_AGENT_AIP_INCLUDE_AIP_INITIATOR_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_INCLUDE_AIP_INITIATOR_H_ diff --git a/CapabilityAgents/AIP/include/AIP/MessageRequest.h b/CapabilityAgents/AIP/include/AIP/MessageRequest.h deleted file mode 100644 index 93ee944ffe..0000000000 --- a/CapabilityAgents/AIP/include/AIP/MessageRequest.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * AudioInputProcessor.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0/ - * - * or in the "license" file accompanying this file. This file 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 - -#include "AIP/AudioInputProcessor.h" - -namespace alexaClientSDK { -namespace capabilityAgents { -namespace aip { - -class MessageRequest : public avsCommon::avs::MessageRequest { -public: - /** - * @copyDoc avsCommon::avs::MessageRequest() - * - * @param audioInputProcessor The AudioInputProcessor to notify when the avsCommon::avs::MessageRequest encounters - * an exception. - */ - MessageRequest( - std::shared_ptr audioInputProcessor, - const std::string& jsonContent, - std::shared_ptr attachmentReader); - - void onExceptionReceived(const std::string& exceptionMessage) override; - -private: - std::shared_ptr m_audioInputProcessor; -}; - -} // namespace aip -} // namespace capabilityAgents -} // namespace alexaClientSDK diff --git a/CapabilityAgents/AIP/src/AudioInputProcessor.cpp b/CapabilityAgents/AIP/src/AudioInputProcessor.cpp index e50042d005..3029debc17 100644 --- a/CapabilityAgents/AIP/src/AudioInputProcessor.cpp +++ b/CapabilityAgents/AIP/src/AudioInputProcessor.cpp @@ -1,7 +1,5 @@ /* - * AudioInputProcessor.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -17,18 +15,20 @@ #include -#include #include +#include +#include #include +#include +#include #include #include "AIP/AudioInputProcessor.h" -#include "AIP/MessageRequest.h" namespace alexaClientSDK { namespace capabilityAgents { namespace aip { - +using namespace avsCommon::utils; using namespace avsCommon::utils::logger; /// String to identify log entries originating from this file. @@ -44,9 +44,6 @@ static const std::string TAG("AudioInputProcessor"); /// The name of the @c FocusManager channel used by @c AudioInputProvider. static const std::string CHANNEL_NAME = avsCommon::sdkInterfaces::FocusManagerInterface::DIALOG_CHANNEL_NAME; -/// The activityId string used with @c FocusManager by @c AudioInputProvider. -static const std::string ACTIVITY_ID = "SpeechRecognizer.Recognize"; - /// The namespace for this capability agent. static const std::string NAMESPACE = "SpeechRecognizer"; @@ -59,15 +56,18 @@ static const avsCommon::avs::NamespaceAndName EXPECT_SPEECH{NAMESPACE, "ExpectSp /// The SpeechRecognizer context state signature. static const avsCommon::avs::NamespaceAndName RECOGNIZER_STATE{NAMESPACE, "RecognizerState"}; +/// The field identifying the initiator. +static const std::string INITIATOR_KEY = "initiator"; + std::shared_ptr AudioInputProcessor::create( - std::shared_ptr directiveSequencer, - std::shared_ptr messageSender, - std::shared_ptr contextManager, - std::shared_ptr focusManager, - std::shared_ptr dialogUXStateAggregator, - std::shared_ptr exceptionEncounteredSender, - std::shared_ptr userActivityNotifier, - AudioProvider defaultAudioProvider) { + std::shared_ptr directiveSequencer, + std::shared_ptr messageSender, + std::shared_ptr contextManager, + std::shared_ptr focusManager, + std::shared_ptr dialogUXStateAggregator, + std::shared_ptr exceptionEncounteredSender, + std::shared_ptr userActivityNotifier, + AudioProvider defaultAudioProvider) { if (!directiveSequencer) { ACSDK_ERROR(LX("createFailed").d("reason", "nullDirectiveSequencer")); return nullptr; @@ -92,13 +92,13 @@ std::shared_ptr AudioInputProcessor::create( } auto aip = std::shared_ptr(new AudioInputProcessor( - directiveSequencer, - messageSender, - contextManager, - focusManager, - exceptionEncounteredSender, - userActivityNotifier, - defaultAudioProvider)); + directiveSequencer, + messageSender, + contextManager, + focusManager, + exceptionEncounteredSender, + userActivityNotifier, + defaultAudioProvider)); if (aip) { contextManager->setStateProvider(RECOGNIZER_STATE, aip); @@ -120,7 +120,7 @@ void AudioInputProcessor::addObserver(std::shared_ptr observe ACSDK_ERROR(LX("addObserverFailed").d("reason", "nullObserver")); return; } - m_executor.submit([this, observer] () { m_observers.insert(observer); }); + m_executor.submit([this, observer]() { m_observers.insert(observer); }); } void AudioInputProcessor::removeObserver(std::shared_ptr observer) { @@ -128,22 +128,24 @@ void AudioInputProcessor::removeObserver(std::shared_ptr obse ACSDK_ERROR(LX("removeObserverFailed").d("reason", "nullObserver")); return; } - m_executor.submit([this, observer] () { m_observers.erase(observer); }).wait(); + m_executor.submit([this, observer]() { m_observers.erase(observer); }).wait(); } std::future AudioInputProcessor::recognize( - AudioProvider audioProvider, - Initiator initiator, - avsCommon::avs::AudioInputStream::Index begin, - avsCommon::avs::AudioInputStream::Index keywordEnd, - std::string keyword) { + AudioProvider audioProvider, + Initiator initiator, + avsCommon::avs::AudioInputStream::Index begin, + avsCommon::avs::AudioInputStream::Index keywordEnd, + std::string keyword, + const ESPData& espData) { + ACSDK_METRIC_IDS(TAG, "Recognize", "", "", Metrics::Location::AIP_RECEIVE); + // If no begin index was provided, grab the current index ASAP so that we can start streaming from the time this // call was made. if (audioProvider.stream && INVALID_INDEX == begin) { static const bool startWithNewData = true; auto reader = audioProvider.stream->createReader( - avsCommon::avs::AudioInputStream::Reader::Policy::NONBLOCKING, - startWithNewData); + avsCommon::avs::AudioInputStream::Reader::Policy::NONBLOCKING, startWithNewData); if (!reader) { ACSDK_ERROR(LX("recognizeFailed").d("reason", "createReaderFailed")); std::promise ret; @@ -152,51 +154,36 @@ std::future AudioInputProcessor::recognize( } begin = reader->tell(); } - return m_executor.submit( - [this, audioProvider, initiator, begin, keywordEnd, keyword] () { - return executeRecognize(audioProvider, initiator, begin, keywordEnd, keyword); - } - ); + + if (!espData.isEmpty()) { + m_executor.submit([this, espData]() { executePrepareEspPayload(espData); }); + } + + return m_executor.submit([this, audioProvider, initiator, begin, keywordEnd, keyword]() { + return executeRecognize(audioProvider, initiator, begin, keywordEnd, keyword); + }); } std::future AudioInputProcessor::stopCapture() { - return m_executor.submit( - [this] () { - return executeStopCapture(); - } - ); + return m_executor.submit([this]() { return executeStopCapture(); }); } std::future AudioInputProcessor::resetState() { - return m_executor.submit( - [this] () { - executeResetState(); - } - ); + return m_executor.submit([this]() { executeResetState(); }); } -void AudioInputProcessor::provideState(unsigned int stateRequestToken) { - m_executor.submit( - [this, stateRequestToken] () { - executeProvideState(true, stateRequestToken); - } - ); +void AudioInputProcessor::provideState( + const avsCommon::avs::NamespaceAndName& stateProviderName, + unsigned int stateRequestToken) { + m_executor.submit([this, stateRequestToken]() { executeProvideState(true, stateRequestToken); }); } void AudioInputProcessor::onContextAvailable(const std::string& jsonContext) { - m_executor.submit( - [this, jsonContext] () { - executeOnContextAvailable(jsonContext); - } - ); + m_executor.submit([this, jsonContext]() { executeOnContextAvailable(jsonContext); }); } void AudioInputProcessor::onContextFailure(const avsCommon::sdkInterfaces::ContextRequestError error) { - m_executor.submit( - [this, error] () { - executeOnContextFailure(error); - } - ); + m_executor.submit([this, error]() { executeOnContextFailure(error); }); } void AudioInputProcessor::handleDirectiveImmediately(std::shared_ptr directive) { @@ -212,13 +199,13 @@ void AudioInputProcessor::handleDirective(std::shared_ptr info) { return; } if (info->directive->getName() == STOP_CAPTURE.name) { + ACSDK_METRIC_MSG(TAG, info->directive, Metrics::Location::AIP_RECEIVE); handleStopCaptureDirective(info); } else if (info->directive->getName() == EXPECT_SPEECH.name) { handleExpectSpeechDirective(info); } else { std::string errorMessage = - "unexpected directive " + - info->directive->getNamespace() + ":" + info->directive->getName(); + "unexpected directive " + info->directive->getNamespace() + ":" + info->directive->getName(); m_exceptionEncounteredSender->sendExceptionEncountered( info->directive->getUnparsedDirective(), avsCommon::avs::ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED, @@ -227,14 +214,13 @@ void AudioInputProcessor::handleDirective(std::shared_ptr info) { info->result->setFailed(errorMessage); } ACSDK_ERROR(LX("handleDirectiveFailed") - .d("reason", "unknownDirective") - .d("namespace", info->directive->getNamespace()) - .d("name", info->directive->getName())); + .d("reason", "unknownDirective") + .d("namespace", info->directive->getNamespace()) + .d("name", info->directive->getName())); } } void AudioInputProcessor::cancelDirective(std::shared_ptr info) { - resetState(); removeDirective(info); } @@ -243,30 +229,23 @@ void AudioInputProcessor::onDeregistered() { } void AudioInputProcessor::onFocusChanged(avsCommon::avs::FocusState newFocus) { - m_executor.submit( - [this, newFocus] () { - executeOnFocusChanged(newFocus); - } - ); + ACSDK_DEBUG9(LX("onFocusChanged").d("newFocus", newFocus)); + m_executor.submit([this, newFocus]() { executeOnFocusChanged(newFocus); }); } void AudioInputProcessor::onDialogUXStateChanged( - avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState newState) { - m_executor.submit( - [this, newState] () { - executeOnDialogUXStateChanged(newState); - } - ); + avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState newState) { + m_executor.submit([this, newState]() { executeOnDialogUXStateChanged(newState); }); } AudioInputProcessor::AudioInputProcessor( - std::shared_ptr directiveSequencer, - std::shared_ptr messageSender, - std::shared_ptr contextManager, - std::shared_ptr focusManager, - std::shared_ptr exceptionEncounteredSender, - std::shared_ptr userActivityNotifier, - AudioProvider defaultAudioProvider) : + std::shared_ptr directiveSequencer, + std::shared_ptr messageSender, + std::shared_ptr contextManager, + std::shared_ptr focusManager, + std::shared_ptr exceptionEncounteredSender, + std::shared_ptr userActivityNotifier, + AudioProvider defaultAudioProvider) : CapabilityAgent{NAMESPACE, exceptionEncounteredSender}, RequiresShutdown{"AudioInputProcessor"}, m_directiveSequencer{directiveSequencer}, @@ -279,7 +258,8 @@ AudioInputProcessor::AudioInputProcessor( m_state{ObserverInterface::State::IDLE}, m_focusState{avsCommon::avs::FocusState::NONE}, m_preparingToSend{false}, - m_initialDialogUXStateReceived{false} { + m_initialDialogUXStateReceived{false}, + m_precedingExpectSpeechInitiator{nullptr} { } void AudioInputProcessor::doShutdown() { @@ -294,63 +274,69 @@ void AudioInputProcessor::doShutdown() { } std::future AudioInputProcessor::expectSpeechTimedOut() { - return m_executor.submit( - [this] () { - return executeExpectSpeechTimedOut(); - } - ); + return m_executor.submit([this]() { return executeExpectSpeechTimedOut(); }); } void AudioInputProcessor::handleStopCaptureDirective(std::shared_ptr info) { - m_executor.submit( - [this, info] () { - bool stopImmediately = true; - executeStopCapture(stopImmediately, info); - } - ); + m_executor.submit([this, info]() { + bool stopImmediately = true; + executeStopCapture(stopImmediately, info); + }); } void AudioInputProcessor::handleExpectSpeechDirective(std::shared_ptr info) { int64_t timeout; - bool found = avsCommon::utils::json::jsonUtils::lookupInt64Value( - info->directive->getPayload(), - "timeoutInMilliseconds", - &timeout); + bool found = avsCommon::utils::json::jsonUtils::retrieveValue( + info->directive->getPayload(), "timeoutInMilliseconds", &timeout); if (!found) { - static const char * errorMessage = "missing/invalid timeoutInMilliseconds"; + static const char* errorMessage = "missing/invalid timeoutInMilliseconds"; m_exceptionEncounteredSender->sendExceptionEncountered( - info->directive->getUnparsedDirective(), - avsCommon::avs::ExceptionErrorType::UNSUPPORTED_OPERATION, - errorMessage); + info->directive->getUnparsedDirective(), + avsCommon::avs::ExceptionErrorType::UNSUPPORTED_OPERATION, + errorMessage); if (info->result) { info->result->setFailed(errorMessage); } ACSDK_ERROR(LX("handleExpectSpeechDirectiveFailed") - .d("reason", "missingJsonField") - .d("field", "timeoutInMilliseconds")); + .d("reason", "missingJsonField") + .d("field", "timeoutInMilliseconds")); return; } - /** - * TODO: Once AVS starts sending an opaque initiator, parse it out here and pass it on to executeExpectSpeech - * (ACSDK-479). - */ - std::string initiator = ""; + m_executor.submit([this, timeout, info]() { executeExpectSpeech(std::chrono::milliseconds{timeout}, info); }); +} - m_executor.submit( - [this, timeout, initiator, info] () { - executeExpectSpeech(std::chrono::milliseconds{timeout}, initiator, info); - } - ); +void AudioInputProcessor::executePrepareEspPayload(const ESPData& espData) { + m_espPayload.clear(); + if (!espData.verify()) { + // Log an error as the values are invalid, but we should continue to send the recognize event. + ACSDK_ERROR(LX("executeRecognizeFailed") + .d("reason", "invalidEspData") + .d("voiceEnergy", espData.getVoiceEnergy()) + .d("ambientEnergy", espData.getAmbientEnergy())); + } else { + // Assemble the event payload. + std::ostringstream payload; + // clang-format off + payload << R"({)" + R"("voiceEnergy":)" << espData.getVoiceEnergy() << R"(,)" + R"("ambientEnergy":)" << espData.getAmbientEnergy() << R"()" + << R"(})"; + // clang-format on + + // Record the ReportEchoSpatialPerceptionData event payload for later use by executeContextAvailable(). + m_espPayload = payload.str(); + } + m_espRequest.reset(); } bool AudioInputProcessor::executeRecognize( - AudioProvider provider, - Initiator initiator, - avsCommon::avs::AudioInputStream::Index begin, - avsCommon::avs::AudioInputStream::Index end, - const std::string& keyword) { + AudioProvider provider, + Initiator initiator, + avsCommon::avs::AudioInputStream::Index begin, + avsCommon::avs::AudioInputStream::Index end, + const std::string& keyword) { // Make sure we have a keyword if this is a wakeword initiator. if (Initiator::WAKEWORD == initiator && keyword.empty()) { ACSDK_ERROR(LX("executeRecognizeFailed").d("reason", "emptyKeywordWithWakewordInitiator")); @@ -363,70 +349,94 @@ bool AudioInputProcessor::executeRecognize( // Check if we have everything we need to enable false wakeword detection. // TODO: Consider relaxing the hard requirement for a full 500ms preroll - ACSDK-276. bool falseWakewordDetection = - Initiator::WAKEWORD == initiator && - begin != INVALID_INDEX && - begin >= preroll && - end != INVALID_INDEX; + Initiator::WAKEWORD == initiator && begin != INVALID_INDEX && begin >= preroll && end != INVALID_INDEX; // If we will be enabling false wakeword detection, add preroll and build the initiator payload. std::ostringstream initiatorPayloadJson; // TODO: Consider reworking this code to use RapidJSON - ACSDK-279. if (falseWakewordDetection) { + // clang-format off initiatorPayloadJson << R"("wakeWordIndices":{)" R"("startIndexInSamples":)" << preroll << R"(,)" R"("endIndexInSamples":)" << preroll + end - begin << R"(})"; + // clang-format on begin -= preroll; } // Build the initiator json. std::ostringstream initiatorJson; + // clang-format off initiatorJson - << R"("initiator":{)" + << R"(")" + INITIATOR_KEY + R"(":{)" R"("type":")" << initiatorToString(initiator) << R"(",)" R"("payload":{)" << initiatorPayloadJson.str() << R"(})" R"(})"; + // clang-format on return executeRecognize(provider, initiatorJson.str(), begin, keyword); } bool AudioInputProcessor::executeRecognize( - AudioProvider provider, - const std::string& initiatorJson, - avsCommon::avs::AudioInputStream::Index begin, - const std::string& keyword) { + AudioProvider provider, + const std::string& initiatorJson, + avsCommon::avs::AudioInputStream::Index begin, + const std::string& keyword) { if (!provider.stream) { ACSDK_ERROR(LX("executeRecognizeFailed").d("reason", "nullAudioInputStream")); return false; } - if (provider.format.encoding != avsCommon::utils::AudioFormat::Encoding::LPCM) { - ACSDK_ERROR(LX("executeRecognizeFailed") - .d("reason", "unsupportedEncoding") - .d("encoding", provider.format.encoding)); - return false; - } else if (provider.format.endianness != avsCommon::utils::AudioFormat::Endianness::LITTLE) { - ACSDK_ERROR(LX("executeRecognizeFailed") - .d("reason", "unsupportedEndianness") - .d("endianness", provider.format.endianness)); - return false; - } else if (provider.format.sampleSizeInBits != 16) { - ACSDK_ERROR(LX("executeRecognizeFailed") - .d("reason", "unsupportedSampleSize") - .d("sampleSize", provider.format.sampleSizeInBits)); - return false; - } else if (provider.format.sampleRateHz != 16000) { + std::unordered_map mapSampleRatesAVSEncoding = {{32000, "OPUS"}}; + std::string avsEncodingFormat; + std::unordered_map::iterator itSampleRateAVSEncoding; + + switch (provider.format.encoding) { + case avsCommon::utils::AudioFormat::Encoding::LPCM: + if (provider.format.sampleRateHz != 16000) { + ACSDK_ERROR(LX("executeRecognizeFailed") + .d("reason", "unsupportedSampleRateForPCM") + .d("sampleRate", provider.format.sampleRateHz)); + return false; + } else if (provider.format.sampleSizeInBits != 16) { + ACSDK_ERROR(LX("executeRecognizeFailed") + .d("reason", "unsupportedSampleSize") + .d("sampleSize", provider.format.sampleSizeInBits)); + return false; + } + + avsEncodingFormat = "AUDIO_L16_RATE_16000_CHANNELS_1"; + break; + case avsCommon::utils::AudioFormat::Encoding::OPUS: + itSampleRateAVSEncoding = mapSampleRatesAVSEncoding.find(provider.format.sampleRateHz); + if (itSampleRateAVSEncoding == mapSampleRatesAVSEncoding.end()) { + ACSDK_ERROR(LX("executeRecognizeFailed") + .d("reason", "unsupportedSampleRateForOPUS") + .d("sampleRate", provider.format.sampleRateHz)); + return false; + } + + avsEncodingFormat = itSampleRateAVSEncoding->second; + break; + default: + ACSDK_ERROR(LX("executeRecognizeFailed") + .d("reason", "unsupportedEncoding") + .d("encoding", provider.format.encoding)); + return false; + } + + if (provider.format.endianness != avsCommon::utils::AudioFormat::Endianness::LITTLE) { ACSDK_ERROR(LX("executeRecognizeFailed") - .d("reason", "unsupportedSampleRate") - .d("sampleRate", provider.format.sampleRateHz)); + .d("reason", "unsupportedEndianness") + .d("endianness", provider.format.endianness)); return false; } else if (provider.format.numChannels != 1) { ACSDK_ERROR(LX("executeRecognizeFailed") - .d("reason", "unsupportedNumChannels") - .d("channels", provider.format.numChannels)); + .d("reason", "unsupportedNumChannels") + .d("channels", provider.format.numChannels)); return false; } @@ -460,27 +470,34 @@ bool AudioInputProcessor::executeRecognize( // Assemble the event payload. std::ostringstream payload; + // clang-format off payload << R"({)" R"("profile":")" << provider.profile << R"(",)" - R"("format":"AUDIO_L16_RATE_16000_CHANNELS_1")"; - if (!initiatorJson.empty()) { + R"("format":")" << avsEncodingFormat << R"(")"; + + // The initiator (or lack thereof) from a previous ExpectSpeech has precedence. + if (m_precedingExpectSpeechInitiator) { + if (!m_precedingExpectSpeechInitiator->empty()) { + payload << "," << R"(")" << INITIATOR_KEY << R"(":)" << *m_precedingExpectSpeechInitiator; + } + m_precedingExpectSpeechInitiator.reset(); + } else if (!initiatorJson.empty()) { payload << "," << initiatorJson; } + payload << R"(})"; + // clang-format on // Set up an attachment reader for the event. avsCommon::avs::attachment::InProcessAttachmentReader::SDSTypeIndex offset = 0; avsCommon::avs::attachment::InProcessAttachmentReader::SDSTypeReader::Reference reference = - avsCommon::avs::attachment::InProcessAttachmentReader::SDSTypeReader::Reference::BEFORE_WRITER; + avsCommon::avs::attachment::InProcessAttachmentReader::SDSTypeReader::Reference::BEFORE_WRITER; if (INVALID_INDEX != begin) { offset = begin; reference = avsCommon::avs::attachment::InProcessAttachmentReader::SDSTypeReader::Reference::ABSOLUTE; } m_reader = avsCommon::avs::attachment::InProcessAttachmentReader::create( - avsCommon::avs::attachment::AttachmentReader::Policy::NON_BLOCKING, - provider.stream, - offset, - reference); + sds::ReaderPolicy::NONBLOCKING, provider.stream, offset, reference); if (!m_reader) { ACSDK_ERROR(LX("executeRecognizeFailed").d("reason", "Failed to create attachment reader")); return false; @@ -493,40 +510,38 @@ bool AudioInputProcessor::executeRecognize( // Note that we're preparing to send a Recognize event. m_preparingToSend = true; - // Start assembling the context; we'll service the callback after assembling our Recognize event. - m_contextManager->getContext(shared_from_this()); - - // Stop the ExpectSpeech timer so we don't get a timeout. - m_expectingSpeechTimer.stop(); - // Update state if we're changing wakewords. if (!keyword.empty() && m_wakeword != keyword) { m_wakeword = keyword; executeProvideState(); } + // Start assembling the context; we'll service the callback after assembling our Recognize event. + m_contextManager->getContext(shared_from_this()); + + // Stop the ExpectSpeech timer so we don't get a timeout. + m_expectingSpeechTimer.stop(); + // Record provider as the last-used AudioProvider so it can be used in the event of an ExpectSpeech directive. m_lastAudioProvider = provider; - // Record the event payload for later use by executeContextAvailable(). - m_payload = payload.str(); + // Record the Recognize event payload for later use by executeContextAvailable(). + m_recognizePayload = payload.str(); // We can't assemble the MessageRequest until we receive the context. - m_request.reset(); + m_recognizeRequest.reset(); return true; } void AudioInputProcessor::executeOnContextAvailable(const std::string jsonContext) { - ACSDK_DEBUG(LX("executeOnContextAvailable") - .d("jsonContext", jsonContext)); + ACSDK_DEBUG(LX("executeOnContextAvailable").sensitive("jsonContext", jsonContext)); // Should already be RECOGNIZING if we get here. if (m_state != ObserverInterface::State::RECOGNIZING) { - ACSDK_ERROR(LX("executeOnContextAvailableFailed") - .d("reason", "Not permitted in current state") - .d("state", m_state)); - return; + ACSDK_ERROR( + LX("executeOnContextAvailableFailed").d("reason", "Not permitted in current state").d("state", m_state)); + return; } // Should already have a reader. @@ -535,8 +550,8 @@ void AudioInputProcessor::executeOnContextAvailable(const std::string jsonContex executeResetState(); return; } - // Payload should not be empty. - if (m_payload.empty()) { + // Recognize payload should not be empty. + if (m_recognizePayload.empty()) { ACSDK_ERROR(LX("executeOnContextAvailableFailed").d("reason", "payloadEmpty")); executeResetState(); return; @@ -544,7 +559,7 @@ void AudioInputProcessor::executeOnContextAvailable(const std::string jsonContex // Start acquiring the channel right away; we'll service the callback after assembling our Recognize event. if (m_focusState != avsCommon::avs::FocusState::FOREGROUND) { - if (!m_focusManager->acquireChannel(CHANNEL_NAME, shared_from_this(), ACTIVITY_ID)) { + if (!m_focusManager->acquireChannel(CHANNEL_NAME, shared_from_this(), NAMESPACE)) { ACSDK_ERROR(LX("executeOnContextAvailableFailed").d("reason", "Unable to acquire channel")); executeResetState(); return; @@ -554,12 +569,16 @@ void AudioInputProcessor::executeOnContextAvailable(const std::string jsonContex // Assemble the MessageRequest. It will be sent by executeOnFocusChanged when we acquire the channel. auto dialogRequestId = avsCommon::utils::uuidGeneration::generateUUID(); m_directiveSequencer->setDialogRequestId(dialogRequestId); - auto msgIdAndJsonEvent = buildJsonEventString( - "Recognize", - dialogRequestId, - m_payload, - jsonContext); - m_request = std::make_shared(shared_from_this(), msgIdAndJsonEvent.second, m_reader); + if (!m_espPayload.empty()) { + auto msgIdAndESPJsonEvent = + buildJsonEventString("ReportEchoSpatialPerceptionData", dialogRequestId, m_espPayload); + m_espPayload.clear(); + m_espRequest = std::make_shared(msgIdAndESPJsonEvent.second); + m_espRequest->addObserver(shared_from_this()); + } + auto msgIdAndJsonEvent = buildJsonEventString("Recognize", dialogRequestId, m_recognizePayload, jsonContext); + m_recognizeRequest = std::make_shared(msgIdAndJsonEvent.second, m_reader); + m_recognizeRequest->addObserver(shared_from_this()); // If we already have focus, there won't be a callback to send the message, so send it now. if (avsCommon::avs::FocusState::FOREGROUND == m_focusState) { @@ -593,14 +612,16 @@ void AudioInputProcessor::executeOnFocusChanged(avsCommon::avs::FocusState newFo // For a focus change to FOREGROUND in the Recognizing state, we may have a message queued up to send. If we do, // we can safely send it now. - if (m_request) { - sendRequestNow(); - } + sendRequestNow(); } bool AudioInputProcessor::executeStopCapture(bool stopImmediately, std::shared_ptr info) { + if (info && info->isCancelled) { + ACSDK_DEBUG(LX("stopCaptureIgnored").d("reason", "isCancelled")); + return true; + } if (m_state != ObserverInterface::State::RECOGNIZING) { - static const char * errorMessage = "StopCapture only allowed in RECOGNIZING state."; + static const char* errorMessage = "StopCapture only allowed in RECOGNIZING state."; if (info) { if (info->result) { info->result->setFailed(errorMessage); @@ -608,9 +629,9 @@ bool AudioInputProcessor::executeStopCapture(bool stopImmediately, std::shared_p removeDirective(info); } ACSDK_ERROR(LX("executeStopCaptureFailed") - .d("reason", "invalidState") - .d("expectedState", "RECOGNIZING") - .d("state", m_state)); + .d("reason", "invalidState") + .d("expectedState", "RECOGNIZING") + .d("state", m_state)); return false; } // Create a lambda to do the StopCapture. @@ -647,11 +668,13 @@ bool AudioInputProcessor::executeStopCapture(bool stopImmediately, std::shared_p void AudioInputProcessor::executeResetState() { // Irrespective of current state, clean up and go back to idle. m_expectingSpeechTimer.stop(); + m_precedingExpectSpeechInitiator.reset(); if (m_reader) { m_reader->close(); } m_reader.reset(); - m_request.reset(); + m_recognizeRequest.reset(); + m_espRequest.reset(); m_preparingToSend = false; m_deferredStopCapture = nullptr; if (m_focusState != avsCommon::avs::FocusState::NONE) { @@ -661,23 +684,39 @@ void AudioInputProcessor::executeResetState() { setState(ObserverInterface::State::IDLE); } -bool AudioInputProcessor::executeExpectSpeech( - std::chrono::milliseconds timeout, std::string initiator, std::shared_ptr info) { - - if (m_state != ObserverInterface::State::IDLE && - m_state != ObserverInterface::State::BUSY) { - static const char * errorMessage = "ExpectSpeech only allowed in IDLE or BUSY state."; +bool AudioInputProcessor::executeExpectSpeech(std::chrono::milliseconds timeout, std::shared_ptr info) { + if (info && info->isCancelled) { + ACSDK_DEBUG(LX("expectSpeechIgnored").d("reason", "isCancelled")); + return true; + } + if (m_state != ObserverInterface::State::IDLE && m_state != ObserverInterface::State::BUSY) { + static const char* errorMessage = "ExpectSpeech only allowed in IDLE or BUSY state."; if (info->result) { info->result->setFailed(errorMessage); } removeDirective(info); ACSDK_ERROR(LX("executeExpectSpeechFailed") - .d("reason", "invalidState") - .d("expectedState", "IDLE/BUSY") - .d("state", m_state)); + .d("reason", "invalidState") + .d("expectedState", "IDLE/BUSY") + .d("state", m_state)); return false; } + if (m_precedingExpectSpeechInitiator) { + ACSDK_ERROR(LX(__func__) + .d("reason", "precedingExpectSpeechInitiatorUnconsumed") + .d(INITIATOR_KEY.c_str(), *m_precedingExpectSpeechInitiator)); + } + + m_precedingExpectSpeechInitiator = memory::make_unique(""); + bool found = json::jsonUtils::retrieveValue( + info->directive->getPayload(), INITIATOR_KEY, m_precedingExpectSpeechInitiator.get()); + if (found) { + ACSDK_DEBUG(LX(__func__).d("initiatorFound", *m_precedingExpectSpeechInitiator)); + } else { + *m_precedingExpectSpeechInitiator = ""; + } + // Start the ExpectSpeech timer. if (!m_expectingSpeechTimer.start(timeout, std::bind(&AudioInputProcessor::expectSpeechTimedOut, this)).valid()) { ACSDK_ERROR(LX("executeExpectSpeechFailed").d("reason", "startTimerFailed")); @@ -690,9 +729,9 @@ bool AudioInputProcessor::executeExpectSpeech( // If possible, start recognizing immediately. if (m_lastAudioProvider && m_lastAudioProvider.alwaysReadable) { - return executeRecognize(m_lastAudioProvider, initiator); + return executeRecognize(m_lastAudioProvider, ""); } else if (m_defaultAudioProvider && m_defaultAudioProvider.alwaysReadable) { - return executeRecognize(m_defaultAudioProvider, initiator); + return executeRecognize(m_defaultAudioProvider, ""); } return true; @@ -701,14 +740,15 @@ bool AudioInputProcessor::executeExpectSpeech( bool AudioInputProcessor::executeExpectSpeechTimedOut() { if (m_state != ObserverInterface::State::EXPECTING_SPEECH) { ACSDK_ERROR(LX("executeExpectSpeechTimedOutFailure") - .d("reason", "invalidState") - .d("expectedState", "EXPECTING_SPEECH") - .d("state", m_state)); + .d("reason", "invalidState") + .d("expectedState", "EXPECTING_SPEECH") + .d("state", m_state)); return false; } - + m_precedingExpectSpeechInitiator.reset(); auto msgIdAndJsonEvent = buildJsonEventString("ExpectSpeechTimedOut"); - auto request = std::make_shared(shared_from_this(), msgIdAndJsonEvent.second, m_reader); + auto request = std::make_shared(msgIdAndJsonEvent.second, m_reader); + request->addObserver(shared_from_this()); m_messageSender->sendMessage(request); setState(ObserverInterface::State::IDLE); ACSDK_ERROR(LX("executeExpectSpeechFailed").d("reason", "Timed Out")); @@ -720,20 +760,14 @@ void AudioInputProcessor::executeProvideState(bool sendToken, unsigned int state context << R"({"wakeword" : ")" << m_wakeword << R"("})"; if (sendToken) { m_contextManager->setState( - RECOGNIZER_STATE, - context.str(), - avsCommon::avs::StateRefreshPolicy::NEVER, - stateRequestToken); + RECOGNIZER_STATE, context.str(), avsCommon::avs::StateRefreshPolicy::NEVER, stateRequestToken); } else { - m_contextManager->setState( - RECOGNIZER_STATE, - context.str(), - avsCommon::avs::StateRefreshPolicy::NEVER); + m_contextManager->setState(RECOGNIZER_STATE, context.str(), avsCommon::avs::StateRefreshPolicy::NEVER); } } void AudioInputProcessor::executeOnDialogUXStateChanged( - avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState newState) { + avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState newState) { if (!m_initialDialogUXStateReceived) { // The initial dialog UX state change call comes from simply registering as an observer; it is not a deliberate // change to the dialog state which should interrupt a recognize event. @@ -762,7 +796,7 @@ void AudioInputProcessor::setState(ObserverInterface::State state) { ACSDK_DEBUG(LX("setState").d("from", m_state).d("to", state)); m_state = state; - for (auto observer: m_observers) { + for (auto observer : m_observers) { observer->onStateChanged(m_state); } } @@ -776,15 +810,40 @@ void AudioInputProcessor::removeDirective(std::shared_ptr info) { } void AudioInputProcessor::sendRequestNow() { - m_messageSender->sendMessage(m_request); - m_request.reset(); - m_preparingToSend = false; - if (m_deferredStopCapture) { - m_deferredStopCapture(); - m_deferredStopCapture = nullptr; + if (m_espRequest) { + m_messageSender->sendMessage(m_espRequest); + m_espRequest.reset(); + } + + if (m_recognizeRequest) { + ACSDK_METRIC_IDS(TAG, "Recognize", "", "", Metrics::Location::AIP_SEND); + m_messageSender->sendMessage(m_recognizeRequest); + m_recognizeRequest.reset(); + m_preparingToSend = false; + if (m_deferredStopCapture) { + m_deferredStopCapture(); + m_deferredStopCapture = nullptr; + } } } -} // namespace aip -} // namespace capabilityAgents -} // namespace alexaClientSDK +void AudioInputProcessor::onExceptionReceived(const std::string& exceptionMessage) { + ACSDK_ERROR(LX("onExceptionReceived").d("exception", exceptionMessage)); + resetState(); +} + +void AudioInputProcessor::onSendCompleted(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status status) { + ACSDK_DEBUG(LX("onSendCompleted").d("status", status)); + + if (status == avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS || + status == avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT || + status == avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::PENDING) { + return; + } + ACSDK_DEBUG(LX("resetState").d("dueToStatus", status)); + resetState(); +} + +} // namespace aip +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/AIP/src/CMakeLists.txt b/CapabilityAgents/AIP/src/CMakeLists.txt index 9bbabb0d96..3294e8c625 100644 --- a/CapabilityAgents/AIP/src/CMakeLists.txt +++ b/CapabilityAgents/AIP/src/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR) add_definitions("-DACSDK_LOG_MODULE=aip") add_library(AIP SHARED AudioInputProcessor.cpp - MessageRequest.cpp) + ESPData.cpp) target_include_directories(AIP PUBLIC "${AIP_SOURCE_DIR}/include" "${AFML_SOURCE_DIR}/include" @@ -14,4 +14,4 @@ target_link_libraries(AIP AFML) # install target -asdk_install() \ No newline at end of file +asdk_install() diff --git a/CapabilityAgents/AIP/src/ESPData.cpp b/CapabilityAgents/AIP/src/ESPData.cpp new file mode 100644 index 0000000000..b08ea95e08 --- /dev/null +++ b/CapabilityAgents/AIP/src/ESPData.cpp @@ -0,0 +1,61 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "AIP/ESPData.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace aip { + +const ESPData ESPData::EMPTY_ESP_DATA{}; + +ESPData::ESPData(const std::string& voiceEnergy, const std::string& ambientEnergy) : + m_voiceEnergy{voiceEnergy}, + m_ambientEnergy{ambientEnergy} { +} + +std::string ESPData::getVoiceEnergy() const { + return m_voiceEnergy; +} + +std::string ESPData::getAmbientEnergy() const { + return m_ambientEnergy; +} + +bool ESPData::verify() const { + return verifyHelper(m_voiceEnergy) && verifyHelper(m_ambientEnergy); +} + +bool ESPData::isEmpty() const { + return m_voiceEnergy.empty() && m_ambientEnergy.empty(); +} + +bool ESPData::verifyHelper(const std::string& valueToVerify) { + bool isValid = false; + if (!valueToVerify.empty()) { + isValid = true; + for (auto c : valueToVerify) { + if (!std::isalnum(c) && c != '.' && c != '-' && c != '+') { + isValid = false; + break; + } + } + } + return isValid; +} + +} // namespace aip +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/AIP/src/MessageRequest.cpp b/CapabilityAgents/AIP/src/MessageRequest.cpp deleted file mode 100644 index b8129ccfc4..0000000000 --- a/CapabilityAgents/AIP/src/MessageRequest.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* - * AudioInputProcessor.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0/ - * - * or in the "license" file accompanying this file. This file 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 "AIP/MessageRequest.h" - -#include - -namespace alexaClientSDK { -namespace capabilityAgents { -namespace aip { - -/// String to identify log entries originating from this file. -static const std::string TAG("MessageRequest"); - -/** - * Create a LogEntry using this file's TAG and the specified event string. - * - * @param The event string for this @c LogEntry. - */ -#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) - -MessageRequest::MessageRequest( - std::shared_ptr audioInputProcessor, - const std::string& jsonContent, - std::shared_ptr attachmentReader) : - avsCommon::avs::MessageRequest{jsonContent, attachmentReader}, m_audioInputProcessor{audioInputProcessor} { -} - -void MessageRequest::onExceptionReceived(const std::string& exceptionMessage) { - - ACSDK_ERROR(LX("onExceptionReceived").d("exception", exceptionMessage)); - m_audioInputProcessor->resetState(); -} - - -} // namespace aip -} // namespace capabilityAgents -} // namespace alexaClientSDK diff --git a/CapabilityAgents/AIP/test/AudioInputProcessorTest.cpp b/CapabilityAgents/AIP/test/AudioInputProcessorTest.cpp index 221f3f264a..323afdf393 100644 --- a/CapabilityAgents/AIP/test/AudioInputProcessorTest.cpp +++ b/CapabilityAgents/AIP/test/AudioInputProcessorTest.cpp @@ -1,7 +1,5 @@ /* - * AudioInputProcessorTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -17,10 +15,10 @@ /// @file AudioInputProcessorTest.cpp +#include +#include #include #include -#include -#include #include #include @@ -37,12 +35,14 @@ #include #include #include +#include #include #include "AIP/AudioInputProcessor.h" #include "MockObserver.h" using namespace testing; +using namespace alexaClientSDK::avsCommon::utils::json; namespace alexaClientSDK { namespace capabilityAgents { @@ -52,10 +52,7 @@ namespace test { using avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface; /// The name of the @c FocusManager channel used by @c AudioInputProvider. -static const std::string CHANNEL_NAME = "Dialog"; - -/// The activityId string used with @c FocusManager by @c AudioInputProvider. -static const std::string ACTIVITY_ID = "SpeechRecognizer.Recognize"; +static const std::string CHANNEL_NAME = avsCommon::sdkInterfaces::FocusManagerInterface::DIALOG_CHANNEL_NAME; /// The namespace for this capability agent. static const std::string NAMESPACE = "SpeechRecognizer"; @@ -159,8 +156,8 @@ static const std::string ASR_PROFILE_KEY = "profile"; /// JSON key for the audio format field of a recognize event. static const std::string AUDIO_FORMAT_KEY = "format"; -/// JSON value for a recognize event's audio format. -static const std::string AUDIO_FORMAT_VALUE = "AUDIO_L16_RATE_16000_CHANNELS_1"; +/// Accepted JSON values for a recognize event's audio format. +static const std::unordered_set AUDIO_FORMAT_VALUES = {"AUDIO_L16_RATE_16000_CHANNELS_1", "OPUS"}; /// JSON key for the initiator field of a recognize event. static const std::string RECOGNIZE_INITIATOR_KEY = "initiator"; @@ -184,7 +181,7 @@ static const std::string END_INDEX_KEY = "endIndexInSamples"; static const unsigned int STATE_REQUEST_TOKEN = 12345; /// Value used in the tests for an expect speech initiator. -static const std::string EXPECT_SPEECH_INITIATOR = R"({opaque:"expectSpeechInitiator"})"; +static const std::string EXPECT_SPEECH_INITIATOR = R"({"opaque":"expectSpeechInitiator"})"; /// JSON key for the timeout field of an expect speech directive. static const std::string EXPECT_SPEECH_TIMEOUT_KEY = "timeoutInMilliseconds"; @@ -210,15 +207,22 @@ static const bool VERIFY_TIMEOUT = true; /// General timeout for tests to fail. static const std::chrono::seconds TEST_TIMEOUT(10); +/// JSON value for a ReportEchoSpatialPerceptionData event's name. +static const std::string ESP_EVENT_NAME = "ReportEchoSpatialPerceptionData"; + +/// JSON key for the voice energy field of a ReportEchoSpatialPerceptionData event. +static const std::string ESP_VOICE_ENERGY_KEY = "voiceEnergy"; + +/// JSON key for the ambient energy field of a ReportEchoSpatialPerceptionData event. +static const std::string ESP_AMBIENT_ENERGY_KEY = "ambientEnergy"; + /// Utility function to parse a JSON document. static rapidjson::Document parseJson(const std::string& json) { rapidjson::Document document; document.Parse(json); - EXPECT_FALSE(document.HasParseError()) << - "rapidjson detected a parsing error at offset:" + - std::to_string(document.GetErrorOffset()) + - ", error message: " + - GetParseError_En(document.GetParseError()); + EXPECT_FALSE(document.HasParseError()) + << "rapidjson detected a parsing error at offset:" + std::to_string(document.GetErrorOffset()) + + ", error message: " + GetParseError_En(document.GetParseError()); return document; } @@ -257,7 +261,9 @@ class RecognizeEvent { Initiator initiator, avsCommon::avs::AudioInputStream::Index begin = AudioInputProcessor::INVALID_INDEX, avsCommon::avs::AudioInputStream::Index keywordEnd = AudioInputProcessor::INVALID_INDEX, - std::string keyword = ""); + std::string keyword = "", + std::shared_ptr avsInitiator = nullptr, + const ESPData& espData = ESPData::EMPTY_ESP_DATA); /** * This function sends a recognize event using the provided @c AudioInputProcessor and the recognize parameters @@ -281,14 +287,26 @@ class RecognizeEvent { const avsCommon::avs::StateRefreshPolicy&, const unsigned int); + /* + * This function verifies that JSON content of a ReportEchoSpatialPerceptionData @c MessageRequest is correct. + * + * @param request The @c MessageRequest to verify. + * @param dialogRequestId The expected dialogRequestId in the @c MessageRequest. + */ + void verifyEspMessage(std::shared_ptr request, const std::string& dialogRequestId); + /** * This function verifies that JSON content of a recognize @c MessageRequest is correct, and that it has an * attachment. * * @param request The @c MessageRequest to verify. * @param pattern Vector of samples holding a test pattern expected from the @c AudioInputStream. + * @param dialogRequestId The expected dialogRequestId in the @c MessageRequest. */ - void verifyMessage(std::shared_ptr request, const std::vector& pattern); + void verifyMessage( + std::shared_ptr request, + const std::vector& pattern, + const std::string& dialogRequestId); /** * Accessor function to get the attachment reader for a verified message. @@ -313,45 +331,84 @@ class RecognizeEvent { /// The keyword string to use for this recognize event. std::string m_keyword; + /// The initiator that is passed from AVS in a preceding ExpectSpeech. + std::shared_ptr m_avsInitiator; + + /// The ESP data for this ReportEchoSpatialPerceptionData event. + const ESPData m_espData; + /// The attachment reader saved by a call to @c verifyMessage(). std::shared_ptr m_reader; }; RecognizeEvent::RecognizeEvent( - AudioProvider audioProvider, - Initiator initiator, - avsCommon::avs::AudioInputStream::Index begin, - avsCommon::avs::AudioInputStream::Index keywordEnd, - std::string keyword) : - m_audioProvider{audioProvider}, m_initiator{initiator}, m_begin{begin}, m_keywordEnd{keywordEnd}, - m_keyword{keyword} { + AudioProvider audioProvider, + Initiator initiator, + avsCommon::avs::AudioInputStream::Index begin, + avsCommon::avs::AudioInputStream::Index keywordEnd, + std::string keyword, + std::shared_ptr avsInitiator, + const ESPData& espData) : + m_audioProvider{audioProvider}, + m_initiator{initiator}, + m_begin{begin}, + m_keywordEnd{keywordEnd}, + m_keyword{keyword}, + m_avsInitiator{avsInitiator}, + m_espData{espData} { } std::future RecognizeEvent::send(std::shared_ptr audioInputProcessor) { - auto result = audioInputProcessor->recognize(m_audioProvider, m_initiator, m_begin, m_keywordEnd, m_keyword); + auto result = + audioInputProcessor->recognize(m_audioProvider, m_initiator, m_begin, m_keywordEnd, m_keyword, m_espData); EXPECT_TRUE(result.valid()); return result; } void RecognizeEvent::verifyJsonState( - const avsCommon::avs::NamespaceAndName&, - const std::string& jsonState, - const avsCommon::avs::StateRefreshPolicy&, - const unsigned int) { + const avsCommon::avs::NamespaceAndName&, + const std::string& jsonState, + const avsCommon::avs::StateRefreshPolicy&, + const unsigned int) { rapidjson::Document document = parseJson(jsonState); EXPECT_EQ(getJsonString(document, STATE_WAKEWORD_KEY), m_keyword); } +void RecognizeEvent::verifyEspMessage( + std::shared_ptr request, + const std::string& dialogRequestId) { + rapidjson::Document document; + document.Parse(request->getJsonContent().c_str()); + EXPECT_FALSE(document.HasParseError()) + << "rapidjson detected a parsing error at offset:" + std::to_string(document.GetErrorOffset()) + + ", error message: " + GetParseError_En(document.GetParseError()); + + auto event = document.FindMember(MESSAGE_EVENT_KEY); + EXPECT_NE(event, document.MemberEnd()); + + auto header = event->value.FindMember(MESSAGE_HEADER_KEY); + EXPECT_NE(header, event->value.MemberEnd()); + auto payload = event->value.FindMember(MESSAGE_PAYLOAD_KEY); + EXPECT_NE(payload, event->value.MemberEnd()); + + EXPECT_EQ(getJsonString(header->value, MESSAGE_NAMESPACE_KEY), NAMESPACE); + EXPECT_EQ(getJsonString(header->value, MESSAGE_NAME_KEY), ESP_EVENT_NAME); + EXPECT_NE(getJsonString(header->value, MESSAGE_MESSAGE_ID_KEY), ""); + EXPECT_EQ(getJsonString(header->value, MESSAGE_DIALOG_REQUEST_ID_KEY), dialogRequestId); + + EXPECT_EQ(std::to_string(getJsonInt64(payload->value, ESP_VOICE_ENERGY_KEY)), m_espData.getVoiceEnergy()); + EXPECT_EQ(std::to_string(getJsonInt64(payload->value, ESP_AMBIENT_ENERGY_KEY)), m_espData.getAmbientEnergy()); +} + void RecognizeEvent::verifyMessage( - std::shared_ptr request, - const std::vector& pattern) { + std::shared_ptr request, + const std::vector& pattern, + const std::string& dialogRequestId) { rapidjson::Document document; document.Parse(request->getJsonContent().c_str()); - EXPECT_FALSE(document.HasParseError()) << - "rapidjson detected a parsing error at offset:" + - std::to_string(document.GetErrorOffset()) + - ", error message: " + - GetParseError_En(document.GetParseError()); + EXPECT_FALSE(document.HasParseError()) + << "rapidjson detected a parsing error at offset:" + std::to_string(document.GetErrorOffset()) + + ", error message: " + GetParseError_En(document.GetParseError()); auto context = document.FindMember(MESSAGE_CONTEXT_KEY); EXPECT_NE(context, document.MemberEnd()); @@ -366,31 +423,42 @@ void RecognizeEvent::verifyMessage( EXPECT_EQ(getJsonString(header->value, MESSAGE_NAMESPACE_KEY), NAMESPACE); EXPECT_EQ(getJsonString(header->value, MESSAGE_NAME_KEY), RECOGNIZE_EVENT_NAME); EXPECT_NE(getJsonString(header->value, MESSAGE_MESSAGE_ID_KEY), ""); - EXPECT_NE(getJsonString(header->value, MESSAGE_DIALOG_REQUEST_ID_KEY), ""); + EXPECT_EQ(getJsonString(header->value, MESSAGE_DIALOG_REQUEST_ID_KEY), dialogRequestId); std::ostringstream profile; profile << m_audioProvider.profile; + + std::ostringstream encodingFormat; + encodingFormat << m_audioProvider.format.encoding; + EXPECT_EQ(getJsonString(payload->value, ASR_PROFILE_KEY), profile.str()); - EXPECT_EQ(getJsonString(payload->value, AUDIO_FORMAT_KEY), AUDIO_FORMAT_VALUE); + + EXPECT_FALSE( + AUDIO_FORMAT_VALUES.find(getJsonString(payload->value, AUDIO_FORMAT_KEY)) == AUDIO_FORMAT_VALUES.end()); auto initiator = payload->value.FindMember(RECOGNIZE_INITIATOR_KEY); EXPECT_NE(initiator, payload->value.MemberEnd()); - EXPECT_EQ(getJsonString(initiator->value, INITIATOR_TYPE_KEY), initiatorToString(m_initiator)); - auto initiatorPayload = initiator->value.FindMember(INITIATOR_PAYLOAD_KEY); - EXPECT_NE(initiatorPayload, initiator->value.MemberEnd()); + if (m_avsInitiator) { + std::string initiatorString; + EXPECT_TRUE(jsonUtils::convertToValue(initiator->value, &initiatorString)); + EXPECT_EQ(initiatorString, *m_avsInitiator); + } else { + EXPECT_EQ(getJsonString(initiator->value, INITIATOR_TYPE_KEY), initiatorToString(m_initiator)); + auto initiatorPayload = initiator->value.FindMember(INITIATOR_PAYLOAD_KEY); + EXPECT_NE(initiatorPayload, initiator->value.MemberEnd()); - if ( - m_initiator == Initiator::WAKEWORD && - m_begin != AudioInputProcessor::INVALID_INDEX && + if (m_initiator == Initiator::WAKEWORD && m_begin != AudioInputProcessor::INVALID_INDEX && m_keywordEnd != AudioInputProcessor::INVALID_INDEX) { - auto wakeWordIndices = initiatorPayload->value.FindMember(WAKE_WORD_INDICES_KEY); - EXPECT_NE(wakeWordIndices, initiatorPayload->value.MemberEnd()); + auto wakeWordIndices = initiatorPayload->value.FindMember(WAKE_WORD_INDICES_KEY); + EXPECT_NE(wakeWordIndices, initiatorPayload->value.MemberEnd()); - if (wakeWordIndices != initiatorPayload->value.MemberEnd()) { - EXPECT_EQ(getJsonInt64(wakeWordIndices->value, START_INDEX_KEY), static_cast(m_begin)); - EXPECT_EQ(getJsonInt64(wakeWordIndices->value, END_INDEX_KEY), static_cast(m_keywordEnd)); + if (wakeWordIndices != initiatorPayload->value.MemberEnd()) { + EXPECT_EQ(getJsonInt64(wakeWordIndices->value, START_INDEX_KEY), static_cast(m_begin)); + EXPECT_EQ(getJsonInt64(wakeWordIndices->value, END_INDEX_KEY), static_cast(m_keywordEnd)); + } } } + m_reader = request->getAttachmentReader(); EXPECT_NE(m_reader, nullptr); @@ -399,10 +467,8 @@ void RecognizeEvent::verifyMessage( auto t0 = std::chrono::steady_clock::now(); do { avsCommon::avs::attachment::AttachmentReader::ReadStatus status; - auto bytesRead = m_reader->read( - samples.data() + samplesRead, - (samples.size() - samplesRead) * SDS_WORDSIZE, - &status); + auto bytesRead = + m_reader->read(samples.data() + samplesRead, (samples.size() - samplesRead) * SDS_WORDSIZE, &status); if (avsCommon::avs::attachment::AttachmentReader::ReadStatus::OK_WOULDBLOCK == status) { std::this_thread::yield(); continue; @@ -438,7 +504,8 @@ class TestDialogUXStateObserver : public avsCommon::sdkInterfaces::DialogUXState }; TestDialogUXStateObserver::TestDialogUXStateObserver( - std::shared_ptr aggregator) : m_aggregator(aggregator) { + std::shared_ptr aggregator) : + m_aggregator(aggregator) { } void TestDialogUXStateObserver::onDialogUXStateChanged(DialogUXState newState) { @@ -448,7 +515,7 @@ void TestDialogUXStateObserver::onDialogUXStateChanged(DialogUXState newState) { } /// Test harness for @c AudioInputProcessor class. -class AudioInputProcessorTest: public ::testing::Test { +class AudioInputProcessorTest : public ::testing::Test { public: /// Set up the test harness for running a test. void SetUp() override; @@ -497,7 +564,9 @@ class AudioInputProcessorTest: public ::testing::Test { avsCommon::avs::AudioInputStream::Index begin = AudioInputProcessor::INVALID_INDEX, avsCommon::avs::AudioInputStream::Index keywordEnd = AudioInputProcessor::INVALID_INDEX, std::string keyword = "", - RecognizeStopPoint stopPoint = RecognizeStopPoint::NONE); + RecognizeStopPoint stopPoint = RecognizeStopPoint::NONE, + std::shared_ptr avsInitiator = nullptr, + const ESPData& espData = ESPData::EMPTY_ESP_DATA); /** * Function to call @c AudioInputProcessor::stopCapture() and verify that it succeeds. @@ -557,16 +626,27 @@ class AudioInputProcessorTest: public ::testing::Test { */ bool testExpectSpeechFails(bool withDialogRequestId); + /** + * Function to send an ExpectSpeech directive and verify the initiator is handled correctly on the + * subsequent Recognize. + * + * @param withInitiator A flag indicating whether the ExpectSpeech will contain the initiator. + * @return @c true if the call succeeds, else @c false. + */ + bool testRecognizeWithExpectSpeechInitiator(bool withInitiator); + /** * Function to construct an @c AVSDirective for the specified namespace/name. * * @param directive The namespace and name to use for this directive. * @param withDialogRequestId A flag indicating whether to include a dialog request ID. + * @param withInitiator A flag indicating whether the directive should have an initiator. * @return the constructed @c AVSDirective. */ static std::shared_ptr createAVSDirective( const avsCommon::avs::NamespaceAndName& directive, - bool withDialogRequestId); + bool withDialogRequestId, + bool withInitiator = true); /** * This function verifies that JSON content of an ExpectSpeechTimedOut @c MessageRequest is correct, and that it @@ -635,6 +715,8 @@ class AudioInputProcessorTest: public ::testing::Test { /// Vector of samples holding a test pattern to feed through the @c AudioInputStream. std::vector m_pattern; + + std::string m_dialogRequestId; }; void AudioInputProcessorTest::SetUp() { @@ -648,39 +730,32 @@ void AudioInputProcessorTest::SetUp() { m_dialogUXStateAggregator->addObserver(m_dialogUXStateObserver); m_mockExceptionEncounteredSender = - std::make_shared(); + std::make_shared(); m_mockUserActivityNotifier = std::make_shared(); - size_t bufferSize = - avsCommon::avs::AudioInputStream::calculateBufferSize(SDS_WORDS, SDS_WORDSIZE, SDS_MAXREADERS); + size_t bufferSize = avsCommon::avs::AudioInputStream::calculateBufferSize(SDS_WORDS, SDS_WORDSIZE, SDS_MAXREADERS); auto buffer = std::make_shared(bufferSize); auto stream = avsCommon::avs::AudioInputStream::create(buffer, SDS_WORDSIZE, SDS_MAXREADERS); ASSERT_NE(stream, nullptr); m_writer = stream->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); ASSERT_NE(m_writer, nullptr); - avsCommon::utils::AudioFormat format = { - avsCommon::utils::AudioFormat::Encoding::LPCM, - avsCommon::utils::AudioFormat::Endianness::LITTLE, - SAMPLE_RATE_HZ, - SAMPLE_SIZE_IN_BITS, - NUM_CHANNELS }; + avsCommon::utils::AudioFormat format = {avsCommon::utils::AudioFormat::Encoding::LPCM, + avsCommon::utils::AudioFormat::Endianness::LITTLE, + SAMPLE_RATE_HZ, + SAMPLE_SIZE_IN_BITS, + NUM_CHANNELS}; m_audioProvider = avsCommon::utils::memory::make_unique( - std::move(stream), - format, - ASRProfile::NEAR_FIELD, - ALWAYS_READABLE, - CAN_OVERRIDE, - CAN_BE_OVERRIDDEN); + std::move(stream), format, ASRProfile::NEAR_FIELD, ALWAYS_READABLE, CAN_OVERRIDE, CAN_BE_OVERRIDDEN); EXPECT_CALL(*m_mockContextManager, setStateProvider(RECOGNIZER_STATE, Ne(nullptr))); m_audioInputProcessor = AudioInputProcessor::create( - m_mockDirectiveSequencer, - m_mockMessageSender, - m_mockContextManager, - m_mockFocusManager, - m_dialogUXStateAggregator, - m_mockExceptionEncounteredSender, - m_mockUserActivityNotifier, - *m_audioProvider); + m_mockDirectiveSequencer, + m_mockMessageSender, + m_mockContextManager, + m_mockFocusManager, + m_dialogUXStateAggregator, + m_mockExceptionEncounteredSender, + m_mockUserActivityNotifier, + *m_audioProvider); ASSERT_NE(m_audioInputProcessor, nullptr); m_audioInputProcessor->addObserver(m_dialogUXStateAggregator); // Note: StrictMock here so that we fail on unexpected AIP state changes @@ -697,32 +772,35 @@ void AudioInputProcessorTest::TearDown() { if (m_audioInputProcessor) { m_audioInputProcessor->removeObserver(m_dialogUXStateAggregator); EXPECT_CALL(*m_mockFocusManager, releaseChannel(CHANNEL_NAME, _)).Times(AtLeast(0)); - EXPECT_CALL( - *m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::IDLE)).Times(AtLeast(0)); + EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::IDLE)) + .Times(AtLeast(0)); m_audioInputProcessor->resetState().wait(); } m_dialogUXStateAggregator->removeObserver(m_dialogUXStateObserver); } bool AudioInputProcessorTest::testRecognizeFails( - AudioProvider audioProvider, - Initiator initiator, - avsCommon::avs::AudioInputStream::Index begin, - avsCommon::avs::AudioInputStream::Index keywordEnd, - std::string keyword) { + AudioProvider audioProvider, + Initiator initiator, + avsCommon::avs::AudioInputStream::Index begin, + avsCommon::avs::AudioInputStream::Index keywordEnd, + std::string keyword) { RecognizeEvent recognize(audioProvider, initiator, begin, keywordEnd, keyword); return !recognize.send(m_audioInputProcessor).get(); } bool AudioInputProcessorTest::testRecognizeSucceeds( - AudioProvider audioProvider, - Initiator initiator, - avsCommon::avs::AudioInputStream::Index begin, - avsCommon::avs::AudioInputStream::Index keywordEnd, - std::string keyword, - RecognizeStopPoint stopPoint) { + AudioProvider audioProvider, + Initiator initiator, + avsCommon::avs::AudioInputStream::Index begin, + avsCommon::avs::AudioInputStream::Index keywordEnd, + std::string keyword, + RecognizeStopPoint stopPoint, + std::shared_ptr avsInitiator, + const ESPData& espData) { std::mutex mutex; std::condition_variable conditionVariable; + bool done = false; bool bargeIn = m_recognizeEvent != nullptr; @@ -738,16 +816,15 @@ bool AudioInputProcessorTest::testRecognizeSucceeds( rapidjson::Writer contextWriter(contextBuffer); contextDocument.Accept(contextWriter); std::string contextJson = contextBuffer.GetString(); - - m_recognizeEvent = std::make_shared(audioProvider, initiator, begin, keywordEnd, keyword); + m_recognizeEvent = + std::make_shared(audioProvider, initiator, begin, keywordEnd, keyword, avsInitiator, espData); if (keyword.empty()) { - EXPECT_CALL(*m_mockContextManager, getContext(_)) - .WillOnce(InvokeWithoutArgs([this] { m_audioInputProcessor->provideState(STATE_REQUEST_TOKEN); })); - EXPECT_CALL(*m_mockContextManager, setState( - RECOGNIZER_STATE, - _, - avsCommon::avs::StateRefreshPolicy::NEVER, - STATE_REQUEST_TOKEN)) + EXPECT_CALL(*m_mockContextManager, getContext(_)).WillOnce(InvokeWithoutArgs([this] { + m_audioInputProcessor->provideState(STOP_CAPTURE, STATE_REQUEST_TOKEN); + })); + EXPECT_CALL( + *m_mockContextManager, + setState(RECOGNIZER_STATE, _, avsCommon::avs::StateRefreshPolicy::NEVER, STATE_REQUEST_TOKEN)) .WillOnce(DoAll( Invoke(m_recognizeEvent.get(), &RecognizeEvent::verifyJsonState), InvokeWithoutArgs([this, contextJson, stopPoint] { @@ -758,27 +835,26 @@ bool AudioInputProcessorTest::testRecognizeSucceeds( return avsCommon::sdkInterfaces::SetStateResult::SUCCESS; }))); } else { - EXPECT_CALL(*m_mockContextManager, setState( - RECOGNIZER_STATE, - _, - avsCommon::avs::StateRefreshPolicy::NEVER, - 0)) - .WillOnce(DoAll( - Invoke(m_recognizeEvent.get(), &RecognizeEvent::verifyJsonState), - InvokeWithoutArgs([] { return avsCommon::sdkInterfaces::SetStateResult::SUCCESS; }))); - EXPECT_CALL(*m_mockContextManager, getContext(_)) - .WillOnce(InvokeWithoutArgs([this, contextJson, stopPoint] { - m_audioInputProcessor->onContextAvailable(contextJson); - if (RecognizeStopPoint::AFTER_CONTEXT == stopPoint) { - EXPECT_TRUE(m_audioInputProcessor->stopCapture().valid()); - } - })); + // Enforce the sequence; setState needs to be called before getContext, otherwise ContextManager will not + // include the new state in the context for this recognize. + InSequence dummy; + + EXPECT_CALL(*m_mockContextManager, setState(RECOGNIZER_STATE, _, avsCommon::avs::StateRefreshPolicy::NEVER, 0)) + .WillOnce(DoAll(Invoke(m_recognizeEvent.get(), &RecognizeEvent::verifyJsonState), InvokeWithoutArgs([] { + return avsCommon::sdkInterfaces::SetStateResult::SUCCESS; + }))); + EXPECT_CALL(*m_mockContextManager, getContext(_)).WillOnce(InvokeWithoutArgs([this, contextJson, stopPoint] { + m_audioInputProcessor->onContextAvailable(contextJson); + if (RecognizeStopPoint::AFTER_CONTEXT == stopPoint) { + EXPECT_TRUE(m_audioInputProcessor->stopCapture().valid()); + } + })); } if (!bargeIn) { EXPECT_CALL(*m_mockUserActivityNotifier, onUserActive()).Times(2); EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::RECOGNIZING)); - EXPECT_CALL(*m_mockFocusManager, acquireChannel(CHANNEL_NAME, _, ACTIVITY_ID)) + EXPECT_CALL(*m_mockFocusManager, acquireChannel(CHANNEL_NAME, _, NAMESPACE)) .WillOnce(InvokeWithoutArgs([this, stopPoint] { m_audioInputProcessor->onFocusChanged(avsCommon::avs::FocusState::FOREGROUND); if (RecognizeStopPoint::AFTER_FOCUS == stopPoint) { @@ -787,21 +863,34 @@ bool AudioInputProcessorTest::testRecognizeSucceeds( return true; })); } - EXPECT_CALL(*m_mockDirectiveSequencer, setDialogRequestId(_)); - EXPECT_CALL(*m_mockMessageSender, sendMessage(_)) - .WillOnce(DoAll( - Invoke([this](std::shared_ptr request) { - m_recognizeEvent->verifyMessage(request, m_pattern); - }), - InvokeWithoutArgs([&] { - if (RecognizeStopPoint::AFTER_SEND == stopPoint) { - EXPECT_TRUE(m_audioInputProcessor->stopCapture().valid()); - } else if (RecognizeStopPoint::NONE == stopPoint) { - std::lock_guard lock(mutex); - done = true; - conditionVariable.notify_one(); - } - }))); + EXPECT_CALL(*m_mockDirectiveSequencer, setDialogRequestId(_)) + .WillOnce(Invoke([this](const std::string& dialogRequestId) { m_dialogRequestId = dialogRequestId; })); + { + // Enforce the sequence. + InSequence dummy; + if (espData.verify()) { + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)) + .WillOnce(Invoke([this](std::shared_ptr request) { + m_recognizeEvent->verifyEspMessage(request, m_dialogRequestId); + m_audioInputProcessor->onSendCompleted( + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS); + })); + } + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)) + .WillOnce(DoAll( + Invoke([this](std::shared_ptr request) { + m_recognizeEvent->verifyMessage(request, m_pattern, m_dialogRequestId); + }), + InvokeWithoutArgs([&] { + if (RecognizeStopPoint::AFTER_SEND == stopPoint) { + EXPECT_TRUE(m_audioInputProcessor->stopCapture().valid()); + } else if (RecognizeStopPoint::NONE == stopPoint) { + std::lock_guard lock(mutex); + done = true; + conditionVariable.notify_one(); + } + }))); + } if (stopPoint != RecognizeStopPoint::NONE) { EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::BUSY)); EXPECT_CALL(*m_mockFocusManager, releaseChannel(CHANNEL_NAME, _)); @@ -812,6 +901,7 @@ bool AudioInputProcessorTest::testRecognizeSucceeds( conditionVariable.notify_one(); })); } + auto sentFuture = m_recognizeEvent->send(m_audioInputProcessor); // If a valid begin index was not provided, load the SDS buffer with the test pattern after recognize() is sent. @@ -829,7 +919,7 @@ bool AudioInputProcessorTest::testRecognizeSucceeds( EXPECT_TRUE(m_audioInputProcessor->stopCapture().valid()); } std::unique_lock lock(mutex); - return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; } ); + return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; }); } bool AudioInputProcessorTest::testStopCaptureSucceeds() { @@ -841,9 +931,10 @@ bool AudioInputProcessorTest::testStopCaptureSucceeds() { EXPECT_CALL(*m_mockFocusManager, releaseChannel(CHANNEL_NAME, _)); EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::IDLE)) .WillOnce(InvokeWithoutArgs([&] { - std::lock_guard lock(mutex); - done = true; - conditionVariable.notify_one(); })); + std::lock_guard lock(mutex); + done = true; + conditionVariable.notify_one(); + })); auto stopCaptureResult = m_audioInputProcessor->stopCapture(); EXPECT_TRUE(stopCaptureResult.valid()); @@ -852,7 +943,7 @@ bool AudioInputProcessorTest::testStopCaptureSucceeds() { } std::unique_lock lock(mutex); - return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; } ); + return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; }); } bool AudioInputProcessorTest::testContextFailure(avsCommon::sdkInterfaces::ContextRequestError error) { @@ -861,19 +952,21 @@ bool AudioInputProcessorTest::testContextFailure(avsCommon::sdkInterfaces::Conte bool done = false; RecognizeEvent recognize(*m_audioProvider, Initiator::TAP); - EXPECT_CALL(*m_mockContextManager, getContext(_)) - .WillOnce(InvokeWithoutArgs([this, error] { m_audioInputProcessor->onContextFailure(error); })); + EXPECT_CALL(*m_mockContextManager, getContext(_)).WillOnce(InvokeWithoutArgs([this, error] { + m_audioInputProcessor->onContextFailure(error); + })); EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::RECOGNIZING)); EXPECT_CALL(*m_mockUserActivityNotifier, onUserActive()).Times(2); EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::IDLE)) .WillOnce(InvokeWithoutArgs([&] { - std::lock_guard lock(mutex); - done = true; - conditionVariable.notify_one(); })); + std::lock_guard lock(mutex); + done = true; + conditionVariable.notify_one(); + })); if (recognize.send(m_audioInputProcessor).get()) { std::unique_lock lock(mutex); - return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; } ); + return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; }); } return false; } @@ -884,8 +977,7 @@ bool AudioInputProcessorTest::testStopCaptureDirectiveSucceeds(bool withDialogRe bool done = false; auto avsDirective = createAVSDirective(STOP_CAPTURE, withDialogRequestId); - auto result = - avsCommon::utils::memory::make_unique(); + auto result = avsCommon::utils::memory::make_unique(); std::shared_ptr directiveHandler = m_audioInputProcessor; EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::BUSY)); @@ -895,9 +987,10 @@ bool AudioInputProcessorTest::testStopCaptureDirectiveSucceeds(bool withDialogRe } EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::IDLE)) .WillOnce(InvokeWithoutArgs([&] { - std::lock_guard lock(mutex); - done = true; - conditionVariable.notify_one(); })); + std::lock_guard lock(mutex); + done = true; + conditionVariable.notify_one(); + })); if (!withDialogRequestId) { directiveHandler->handleDirectiveImmediately(avsDirective); @@ -907,7 +1000,7 @@ bool AudioInputProcessorTest::testStopCaptureDirectiveSucceeds(bool withDialogRe } std::unique_lock lock(mutex); - return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; } ); + return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; }); } bool AudioInputProcessorTest::testStopCaptureDirectiveFails(bool withDialogRequestId) { @@ -917,11 +1010,11 @@ bool AudioInputProcessorTest::testStopCaptureDirectiveFails(bool withDialogReque auto avsDirective = createAVSDirective(STOP_CAPTURE, withDialogRequestId); auto result = avsCommon::utils::memory::make_unique(); - EXPECT_CALL(*result, setFailed(_)) - .WillOnce(InvokeWithoutArgs([&] { - std::lock_guard lock(mutex); - done = true; - conditionVariable.notify_one(); })); + EXPECT_CALL(*result, setFailed(_)).WillOnce(InvokeWithoutArgs([&] { + std::lock_guard lock(mutex); + done = true; + conditionVariable.notify_one(); + })); std::shared_ptr directiveHandler = m_audioInputProcessor; if (!withDialogRequestId) { @@ -931,7 +1024,7 @@ bool AudioInputProcessorTest::testStopCaptureDirectiveFails(bool withDialogReque EXPECT_TRUE(directiveHandler->handleDirective(avsDirective->getMessageId())); } std::unique_lock lock(mutex); - return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; } ); + return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; }); } bool AudioInputProcessorTest::testExpectSpeechSucceeds(bool withDialogRequestId) { @@ -940,8 +1033,7 @@ bool AudioInputProcessorTest::testExpectSpeechSucceeds(bool withDialogRequestId) bool done = false; auto avsDirective = createAVSDirective(EXPECT_SPEECH, withDialogRequestId); - auto result = - avsCommon::utils::memory::make_unique(); + auto result = avsCommon::utils::memory::make_unique(); std::shared_ptr directiveHandler = m_audioInputProcessor; EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH)); @@ -950,11 +1042,11 @@ bool AudioInputProcessorTest::testExpectSpeechSucceeds(bool withDialogRequestId) if (withDialogRequestId) { EXPECT_CALL(*result, setCompleted()); } - EXPECT_CALL(*m_mockContextManager, getContext(_)) - .WillOnce(InvokeWithoutArgs([&] { - std::lock_guard lock(mutex); - done = true; - conditionVariable.notify_one(); })); + EXPECT_CALL(*m_mockContextManager, getContext(_)).WillOnce(InvokeWithoutArgs([&] { + std::lock_guard lock(mutex); + done = true; + conditionVariable.notify_one(); + })); if (!withDialogRequestId) { directiveHandler->handleDirectiveImmediately(avsDirective); @@ -964,7 +1056,7 @@ bool AudioInputProcessorTest::testExpectSpeechSucceeds(bool withDialogRequestId) } std::unique_lock lock(mutex); - return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; } ); + return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; }); } bool AudioInputProcessorTest::testExpectSpeechWaits(bool withDialogRequestId, bool verifyTimeout) { @@ -973,8 +1065,7 @@ bool AudioInputProcessorTest::testExpectSpeechWaits(bool withDialogRequestId, bo bool done = false; auto avsDirective = createAVSDirective(EXPECT_SPEECH, withDialogRequestId); - auto result = - avsCommon::utils::memory::make_unique(); + auto result = avsCommon::utils::memory::make_unique(); std::shared_ptr directiveHandler = m_audioInputProcessor; if (withDialogRequestId) { @@ -982,19 +1073,20 @@ bool AudioInputProcessorTest::testExpectSpeechWaits(bool withDialogRequestId, bo } if (verifyTimeout) { EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH)); - EXPECT_CALL(*m_mockMessageSender, sendMessage(_)) - .WillOnce(Invoke(&verifyExpectSpeechTimedOut)); + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)).WillOnce(Invoke(&verifyExpectSpeechTimedOut)); EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::IDLE)) .WillOnce(InvokeWithoutArgs([&] { - std::lock_guard lock(mutex); - done = true; - conditionVariable.notify_one(); })); + std::lock_guard lock(mutex); + done = true; + conditionVariable.notify_one(); + })); } else { EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH)) .WillOnce(InvokeWithoutArgs([&] { - std::lock_guard lock(mutex); - done = true; - conditionVariable.notify_one(); })); + std::lock_guard lock(mutex); + done = true; + conditionVariable.notify_one(); + })); } if (!withDialogRequestId) { @@ -1005,7 +1097,7 @@ bool AudioInputProcessorTest::testExpectSpeechWaits(bool withDialogRequestId, bo } std::unique_lock lock(mutex); - return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; } ); + return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; }); } bool AudioInputProcessorTest::testExpectSpeechFails(bool withDialogRequestId) { @@ -1016,11 +1108,11 @@ bool AudioInputProcessorTest::testExpectSpeechFails(bool withDialogRequestId) { auto avsDirective = createAVSDirective(EXPECT_SPEECH, WITH_DIALOG_REQUEST_ID); auto result = avsCommon::utils::memory::make_unique(); if (WITH_DIALOG_REQUEST_ID) { - EXPECT_CALL(*result, setFailed(_)) - .WillOnce(InvokeWithoutArgs([&] { - std::lock_guard lock(mutex); - done = true; - conditionVariable.notify_one(); })); + EXPECT_CALL(*result, setFailed(_)).WillOnce(InvokeWithoutArgs([&] { + std::lock_guard lock(mutex); + done = true; + conditionVariable.notify_one(); + })); } std::shared_ptr directiveHandler = m_audioInputProcessor; @@ -1031,18 +1123,81 @@ bool AudioInputProcessorTest::testExpectSpeechFails(bool withDialogRequestId) { directiveHandler->preHandleDirective(avsDirective, std::move(result)); EXPECT_TRUE(directiveHandler->handleDirective(avsDirective->getMessageId())); std::unique_lock lock(mutex); - return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; } ); + return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; }); + } +} + +static bool getInitiatorFromDirective(const std::string directive, std::string* initiator) { + std::string event, payload; + if (!jsonUtils::retrieveValue(directive, MESSAGE_EVENT_KEY, &event)) { + return false; + } + if (!jsonUtils::retrieveValue(event, MESSAGE_PAYLOAD_KEY, &payload)) { + return false; } + return jsonUtils::retrieveValue(payload, EXPECT_SPEECH_INITIATOR_KEY, initiator); +} + +bool AudioInputProcessorTest::testRecognizeWithExpectSpeechInitiator(bool withInitiator) { + std::mutex mutex; + std::condition_variable conditionVariable; + bool done = false; + + auto avsDirective = createAVSDirective(EXPECT_SPEECH, true, withInitiator); + + auto result = avsCommon::utils::memory::make_unique(); + std::shared_ptr directiveHandler = m_audioInputProcessor; + + // Parse out message contents and set expectations based on withInitiator value. + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)) + .WillOnce(Invoke([&](std::shared_ptr request) { + std::string actualInitiatorString; + if (withInitiator) { + ASSERT_TRUE(getInitiatorFromDirective(request->getJsonContent(), &actualInitiatorString)); + ASSERT_EQ(actualInitiatorString, EXPECT_SPEECH_INITIATOR); + } else { + ASSERT_FALSE(getInitiatorFromDirective(request->getJsonContent(), &actualInitiatorString)); + } + std::lock_guard lock(mutex); + done = true; + conditionVariable.notify_one(); + })); + + rapidjson::Document contextDocument(rapidjson::kObjectType); + rapidjson::Value contextArray(rapidjson::kArrayType); + contextDocument.AddMember(rapidjson::StringRef(MESSAGE_CONTEXT_KEY), contextArray, contextDocument.GetAllocator()); + rapidjson::StringBuffer contextBuffer; + rapidjson::Writer contextWriter(contextBuffer); + contextDocument.Accept(contextWriter); + std::string contextJson = contextBuffer.GetString(); + + // Check for successful Directive handling. + EXPECT_CALL(*result, setCompleted()); + EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH)); + EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::RECOGNIZING)); + EXPECT_CALL(*m_mockUserActivityNotifier, onUserActive()).Times(2); + EXPECT_CALL(*m_mockContextManager, getContext(_)); + EXPECT_CALL(*m_mockDirectiveSequencer, setDialogRequestId(_)); + + // Set AIP to a sane state. + directiveHandler->preHandleDirective(avsDirective, std::move(result)); + EXPECT_TRUE(directiveHandler->handleDirective(avsDirective->getMessageId())); + m_audioInputProcessor->onFocusChanged(avsCommon::avs::FocusState::FOREGROUND); + m_audioInputProcessor->onContextAvailable(contextJson); + + std::unique_lock lock(mutex); + return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; }); } std::shared_ptr AudioInputProcessorTest::createAVSDirective( - const avsCommon::avs::NamespaceAndName& directive, - bool WITH_DIALOG_REQUEST_ID) { + const avsCommon::avs::NamespaceAndName& directive, + bool WITH_DIALOG_REQUEST_ID, + bool withInitiator) { auto header = std::make_shared( - directive.nameSpace, - directive.name, - avsCommon::utils::uuidGeneration::generateUUID(), - avsCommon::utils::uuidGeneration::generateUUID()); + directive.nameSpace, + directive.name, + avsCommon::utils::uuidGeneration::generateUUID(), + avsCommon::utils::uuidGeneration::generateUUID()); rapidjson::Document document(rapidjson::kObjectType); rapidjson::Value directiveJson(rapidjson::kObjectType); @@ -1055,24 +1210,21 @@ std::shared_ptr AudioInputProcessorTest::createAVS if (EXPECT_SPEECH == directive) { rapidjson::Value timeoutInMillisecondsJson(EXPECT_SPEECH_TIMEOUT_IN_MILLISECONDS); - rapidjson::Value initiatorJson(rapidjson::StringRef(EXPECT_SPEECH_INITIATOR)); payloadJson.AddMember( - rapidjson::StringRef(EXPECT_SPEECH_TIMEOUT_KEY), - timeoutInMillisecondsJson, - document.GetAllocator()); - payloadJson.AddMember( - rapidjson::StringRef(EXPECT_SPEECH_INITIATOR_KEY), - initiatorJson, - document.GetAllocator()); + rapidjson::StringRef(EXPECT_SPEECH_TIMEOUT_KEY), timeoutInMillisecondsJson, document.GetAllocator()); + + if (withInitiator) { + rapidjson::Value initiatorJson(rapidjson::StringRef(EXPECT_SPEECH_INITIATOR)); + payloadJson.AddMember( + rapidjson::StringRef(EXPECT_SPEECH_INITIATOR_KEY), initiatorJson, document.GetAllocator()); + } } headerJson.AddMember(rapidjson::StringRef(MESSAGE_NAMESPACE_KEY), namespaceJson, document.GetAllocator()); headerJson.AddMember(rapidjson::StringRef(MESSAGE_NAME_KEY), nameJson, document.GetAllocator()); headerJson.AddMember(rapidjson::StringRef(MESSAGE_MESSAGE_ID_KEY), messageIdJson, document.GetAllocator()); headerJson.AddMember( - rapidjson::StringRef(MESSAGE_DIALOG_REQUEST_ID_KEY), - dialogRequestIdJson, - document.GetAllocator()); + rapidjson::StringRef(MESSAGE_DIALOG_REQUEST_ID_KEY), dialogRequestIdJson, document.GetAllocator()); directiveJson.AddMember(rapidjson::StringRef(MESSAGE_HEADER_KEY), headerJson, document.GetAllocator()); rapidjson::StringBuffer payloadBuffer; @@ -1088,11 +1240,7 @@ std::shared_ptr AudioInputProcessorTest::createAVS auto mockAttachmentManager = std::make_shared(); return avsCommon::avs::AVSDirective::create( - documentBuffer.GetString(), - header, - payloadBuffer.GetString(), - mockAttachmentManager, - ""); + documentBuffer.GetString(), header, payloadBuffer.GetString(), mockAttachmentManager, ""); } void AudioInputProcessorTest::verifyExpectSpeechTimedOut(std::shared_ptr request) { @@ -1117,13 +1265,13 @@ void AudioInputProcessorTest::removeDefaultAudioProvider() { EXPECT_CALL(*m_mockContextManager, setStateProvider(RECOGNIZER_STATE, Ne(nullptr))); m_audioInputProcessor->removeObserver(m_dialogUXStateAggregator); m_audioInputProcessor = AudioInputProcessor::create( - m_mockDirectiveSequencer, - m_mockMessageSender, - m_mockContextManager, - m_mockFocusManager, - m_dialogUXStateAggregator, - m_mockExceptionEncounteredSender, - m_mockUserActivityNotifier); + m_mockDirectiveSequencer, + m_mockMessageSender, + m_mockContextManager, + m_mockFocusManager, + m_dialogUXStateAggregator, + m_mockExceptionEncounteredSender, + m_mockUserActivityNotifier); EXPECT_NE(m_audioInputProcessor, nullptr); m_audioInputProcessor->addObserver(m_mockObserver); m_audioInputProcessor->addObserver(m_dialogUXStateAggregator); @@ -1134,14 +1282,14 @@ void AudioInputProcessorTest::makeDefaultAudioProviderNotAlwaysReadable() { EXPECT_CALL(*m_mockContextManager, setStateProvider(RECOGNIZER_STATE, Ne(nullptr))); m_audioInputProcessor->removeObserver(m_dialogUXStateAggregator); m_audioInputProcessor = AudioInputProcessor::create( - m_mockDirectiveSequencer, - m_mockMessageSender, - m_mockContextManager, - m_mockFocusManager, - m_dialogUXStateAggregator, - m_mockExceptionEncounteredSender, - m_mockUserActivityNotifier, - *m_audioProvider); + m_mockDirectiveSequencer, + m_mockMessageSender, + m_mockContextManager, + m_mockFocusManager, + m_dialogUXStateAggregator, + m_mockExceptionEncounteredSender, + m_mockUserActivityNotifier, + *m_audioProvider); EXPECT_NE(m_audioInputProcessor, nullptr); m_audioInputProcessor->addObserver(m_mockObserver); m_audioInputProcessor->addObserver(m_dialogUXStateAggregator); @@ -1162,27 +1310,28 @@ bool AudioInputProcessorTest::testFocusChange(avsCommon::avs::FocusState state) } EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::IDLE)) .WillOnce(InvokeWithoutArgs([&] { - std::lock_guard lock(mutex); - done = true; - conditionVariable.notify_one(); })); + std::lock_guard lock(mutex); + done = true; + conditionVariable.notify_one(); + })); m_audioInputProcessor->onFocusChanged(state); std::unique_lock lock(mutex); - return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; } ); + return conditionVariable.wait_for(lock, TEST_TIMEOUT, [&done] { return done; }); } /// Function to verify that @c AudioInputProcessor::create() errors out with an invalid @c DirectiveSequencerInterface. TEST_F(AudioInputProcessorTest, createWithoutDirectiveSequencer) { m_audioInputProcessor->removeObserver(m_dialogUXStateAggregator); m_audioInputProcessor = AudioInputProcessor::create( - nullptr, - m_mockMessageSender, - m_mockContextManager, - m_mockFocusManager, - m_dialogUXStateAggregator, - m_mockExceptionEncounteredSender, - m_mockUserActivityNotifier, - *m_audioProvider); + nullptr, + m_mockMessageSender, + m_mockContextManager, + m_mockFocusManager, + m_dialogUXStateAggregator, + m_mockExceptionEncounteredSender, + m_mockUserActivityNotifier, + *m_audioProvider); EXPECT_EQ(m_audioInputProcessor, nullptr); } @@ -1190,14 +1339,14 @@ TEST_F(AudioInputProcessorTest, createWithoutDirectiveSequencer) { TEST_F(AudioInputProcessorTest, createWithoutMessageSender) { m_audioInputProcessor->removeObserver(m_dialogUXStateAggregator); m_audioInputProcessor = AudioInputProcessor::create( - m_mockDirectiveSequencer, - nullptr, - m_mockContextManager, - m_mockFocusManager, - m_dialogUXStateAggregator, - m_mockExceptionEncounteredSender, - m_mockUserActivityNotifier, - *m_audioProvider); + m_mockDirectiveSequencer, + nullptr, + m_mockContextManager, + m_mockFocusManager, + m_dialogUXStateAggregator, + m_mockExceptionEncounteredSender, + m_mockUserActivityNotifier, + *m_audioProvider); EXPECT_EQ(m_audioInputProcessor, nullptr); } @@ -1205,14 +1354,14 @@ TEST_F(AudioInputProcessorTest, createWithoutMessageSender) { TEST_F(AudioInputProcessorTest, createWithoutContextManager) { m_audioInputProcessor->removeObserver(m_dialogUXStateAggregator); m_audioInputProcessor = AudioInputProcessor::create( - m_mockDirectiveSequencer, - m_mockMessageSender, - nullptr, - m_mockFocusManager, - m_dialogUXStateAggregator, - m_mockExceptionEncounteredSender, - m_mockUserActivityNotifier, - *m_audioProvider); + m_mockDirectiveSequencer, + m_mockMessageSender, + nullptr, + m_mockFocusManager, + m_dialogUXStateAggregator, + m_mockExceptionEncounteredSender, + m_mockUserActivityNotifier, + *m_audioProvider); EXPECT_EQ(m_audioInputProcessor, nullptr); } @@ -1220,14 +1369,14 @@ TEST_F(AudioInputProcessorTest, createWithoutContextManager) { TEST_F(AudioInputProcessorTest, createWithoutFocusManager) { m_audioInputProcessor->removeObserver(m_dialogUXStateAggregator); m_audioInputProcessor = AudioInputProcessor::create( - m_mockDirectiveSequencer, - m_mockMessageSender, - m_mockContextManager, - nullptr, - m_dialogUXStateAggregator, - m_mockExceptionEncounteredSender, - m_mockUserActivityNotifier, - *m_audioProvider); + m_mockDirectiveSequencer, + m_mockMessageSender, + m_mockContextManager, + nullptr, + m_dialogUXStateAggregator, + m_mockExceptionEncounteredSender, + m_mockUserActivityNotifier, + *m_audioProvider); EXPECT_EQ(m_audioInputProcessor, nullptr); } @@ -1235,14 +1384,14 @@ TEST_F(AudioInputProcessorTest, createWithoutFocusManager) { TEST_F(AudioInputProcessorTest, createWithoutStateAggregator) { m_audioInputProcessor->removeObserver(m_dialogUXStateAggregator); m_audioInputProcessor = AudioInputProcessor::create( - m_mockDirectiveSequencer, - m_mockMessageSender, - m_mockContextManager, - m_mockFocusManager, - nullptr, - m_mockExceptionEncounteredSender, - m_mockUserActivityNotifier, - *m_audioProvider); + m_mockDirectiveSequencer, + m_mockMessageSender, + m_mockContextManager, + m_mockFocusManager, + nullptr, + m_mockExceptionEncounteredSender, + m_mockUserActivityNotifier, + *m_audioProvider); EXPECT_EQ(m_audioInputProcessor, nullptr); } @@ -1253,14 +1402,14 @@ TEST_F(AudioInputProcessorTest, createWithoutStateAggregator) { TEST_F(AudioInputProcessorTest, createWithoutExceptionSender) { m_audioInputProcessor->removeObserver(m_dialogUXStateAggregator); m_audioInputProcessor = AudioInputProcessor::create( - m_mockDirectiveSequencer, - m_mockMessageSender, - m_mockContextManager, - m_mockFocusManager, - m_dialogUXStateAggregator, - nullptr, - m_mockUserActivityNotifier, - *m_audioProvider); + m_mockDirectiveSequencer, + m_mockMessageSender, + m_mockContextManager, + m_mockFocusManager, + m_dialogUXStateAggregator, + nullptr, + m_mockUserActivityNotifier, + *m_audioProvider); EXPECT_EQ(m_audioInputProcessor, nullptr); } @@ -1271,14 +1420,14 @@ TEST_F(AudioInputProcessorTest, createWithoutExceptionSender) { TEST_F(AudioInputProcessorTest, createWithoutUserActivityNotifier) { m_audioInputProcessor->removeObserver(m_dialogUXStateAggregator); m_audioInputProcessor = AudioInputProcessor::create( - m_mockDirectiveSequencer, - m_mockMessageSender, - m_mockContextManager, - m_mockFocusManager, - m_dialogUXStateAggregator, - m_mockExceptionEncounteredSender, - nullptr, - *m_audioProvider); + m_mockDirectiveSequencer, + m_mockMessageSender, + m_mockContextManager, + m_mockFocusManager, + m_dialogUXStateAggregator, + m_mockExceptionEncounteredSender, + nullptr, + *m_audioProvider); EXPECT_EQ(m_audioInputProcessor, nullptr); } @@ -1287,14 +1436,14 @@ TEST_F(AudioInputProcessorTest, createWithoutAudioProvider) { EXPECT_CALL(*m_mockContextManager, setStateProvider(RECOGNIZER_STATE, Ne(nullptr))); m_audioInputProcessor->removeObserver(m_dialogUXStateAggregator); m_audioInputProcessor = AudioInputProcessor::create( - m_mockDirectiveSequencer, - m_mockMessageSender, - m_mockContextManager, - m_mockFocusManager, - m_dialogUXStateAggregator, - m_mockExceptionEncounteredSender, - m_mockUserActivityNotifier, - AudioProvider::null()); + m_mockDirectiveSequencer, + m_mockMessageSender, + m_mockContextManager, + m_mockFocusManager, + m_dialogUXStateAggregator, + m_mockExceptionEncounteredSender, + m_mockUserActivityNotifier, + AudioProvider::null()); EXPECT_NE(m_audioInputProcessor, nullptr); } @@ -1302,7 +1451,7 @@ TEST_F(AudioInputProcessorTest, createWithoutAudioProvider) { TEST_F(AudioInputProcessorTest, getConfiguration) { auto configuration = m_audioInputProcessor->getConfiguration(); EXPECT_EQ(configuration.size(), NUM_DIRECTIVES); - for (auto namespaceAndName: DIRECTIVES) { + for (auto namespaceAndName : DIRECTIVES) { auto directive = configuration.find(namespaceAndName); EXPECT_NE(directive, configuration.end()); if (configuration.end() == directive) { @@ -1351,11 +1500,11 @@ TEST_F(AudioInputProcessorTest, recognizeInvalidAudioFormat) { AudioProvider audioProvider = *m_audioProvider; audioProvider.format.endianness = avsCommon::utils::AudioFormat::Endianness::BIG; EXPECT_FALSE(m_audioInputProcessor->recognize(audioProvider, Initiator::PRESS_AND_HOLD).get()); - + audioProvider = *m_audioProvider; audioProvider.format.sampleRateHz = 0; EXPECT_FALSE(m_audioInputProcessor->recognize(audioProvider, Initiator::PRESS_AND_HOLD).get()); - + audioProvider = *m_audioProvider; audioProvider.format.sampleSizeInBits = 0; EXPECT_FALSE(m_audioInputProcessor->recognize(audioProvider, Initiator::PRESS_AND_HOLD).get()); @@ -1363,7 +1512,6 @@ TEST_F(AudioInputProcessorTest, recognizeInvalidAudioFormat) { audioProvider = *m_audioProvider; audioProvider.format.numChannels = 0; EXPECT_FALSE(m_audioInputProcessor->recognize(audioProvider, Initiator::PRESS_AND_HOLD).get()); - } /// This function verifies that @c AudioInputProcessor::recognize() works with @c Initiator::PRESS_AND_HOLD. @@ -1386,7 +1534,11 @@ TEST_F(AudioInputProcessorTest, recognizeWakewordWithoutKeyword) { * index. */ TEST_F(AudioInputProcessorTest, recognizeWakewordWithBadBegin) { - avsCommon::avs::AudioInputStream::Index begin = SDS_WORDS + 1; + // Write data until the sds wraps, which will make 0 an invalid index. + for (size_t written = 0; written <= SDS_WORDS; written += PATTERN_WORDS) { + EXPECT_EQ(m_writer->write(m_pattern.data(), m_pattern.size()), static_cast(m_pattern.size())); + } + avsCommon::avs::AudioInputStream::Index begin = 0; auto end = AudioInputProcessor::INVALID_INDEX; EXPECT_TRUE(testRecognizeFails(*m_audioProvider, Initiator::WAKEWORD, begin, end, KEYWORD_TEXT)); } @@ -1440,7 +1592,15 @@ TEST_F(AudioInputProcessorTest, recognizeFarField) { TEST_F(AudioInputProcessorTest, recognizeWhileExpectingSpeech) { removeDefaultAudioProvider(); ASSERT_TRUE(testExpectSpeechWaits(WITH_DIALOG_REQUEST_ID, !VERIFY_TIMEOUT)); - ASSERT_TRUE(testRecognizeSucceeds(*m_audioProvider, Initiator::PRESS_AND_HOLD)); + // Recognize event after an ExpectSpeech results in the ExpectSpeech's initiator being passed back to AVS. + ASSERT_TRUE(testRecognizeSucceeds( + *m_audioProvider, + Initiator::PRESS_AND_HOLD, + AudioInputProcessor::INVALID_INDEX, + AudioInputProcessor::INVALID_INDEX, + "", + RecognizeStopPoint::NONE, + std::make_shared(EXPECT_SPEECH_INITIATOR))); } /** @@ -1451,12 +1611,12 @@ TEST_F(AudioInputProcessorTest, recognizeStopAfterRecognize) { auto audioProvider = *m_audioProvider; audioProvider.profile = ASRProfile::CLOSE_TALK; ASSERT_TRUE(testRecognizeSucceeds( - audioProvider, - Initiator::PRESS_AND_HOLD, - AudioInputProcessor::INVALID_INDEX, - AudioInputProcessor::INVALID_INDEX, - "", - RecognizeStopPoint::AFTER_RECOGNIZE)); + audioProvider, + Initiator::PRESS_AND_HOLD, + AudioInputProcessor::INVALID_INDEX, + AudioInputProcessor::INVALID_INDEX, + "", + RecognizeStopPoint::AFTER_RECOGNIZE)); } /** @@ -1467,12 +1627,12 @@ TEST_F(AudioInputProcessorTest, recognizeStopAfterContext) { auto audioProvider = *m_audioProvider; audioProvider.profile = ASRProfile::CLOSE_TALK; ASSERT_TRUE(testRecognizeSucceeds( - audioProvider, - Initiator::PRESS_AND_HOLD, - AudioInputProcessor::INVALID_INDEX, - AudioInputProcessor::INVALID_INDEX, - "", - RecognizeStopPoint::AFTER_CONTEXT)); + audioProvider, + Initiator::PRESS_AND_HOLD, + AudioInputProcessor::INVALID_INDEX, + AudioInputProcessor::INVALID_INDEX, + "", + RecognizeStopPoint::AFTER_CONTEXT)); } /** @@ -1483,12 +1643,12 @@ TEST_F(AudioInputProcessorTest, recognizeStopAfterFocus) { auto audioProvider = *m_audioProvider; audioProvider.profile = ASRProfile::CLOSE_TALK; ASSERT_TRUE(testRecognizeSucceeds( - audioProvider, - Initiator::PRESS_AND_HOLD, - AudioInputProcessor::INVALID_INDEX, - AudioInputProcessor::INVALID_INDEX, - "", - RecognizeStopPoint::AFTER_FOCUS)); + audioProvider, + Initiator::PRESS_AND_HOLD, + AudioInputProcessor::INVALID_INDEX, + AudioInputProcessor::INVALID_INDEX, + "", + RecognizeStopPoint::AFTER_FOCUS)); } /** @@ -1499,12 +1659,12 @@ TEST_F(AudioInputProcessorTest, recognizeStopAfterSend) { auto audioProvider = *m_audioProvider; audioProvider.profile = ASRProfile::CLOSE_TALK; ASSERT_TRUE(testRecognizeSucceeds( - audioProvider, - Initiator::PRESS_AND_HOLD, - AudioInputProcessor::INVALID_INDEX, - AudioInputProcessor::INVALID_INDEX, - "", - RecognizeStopPoint::AFTER_SEND)); + audioProvider, + Initiator::PRESS_AND_HOLD, + AudioInputProcessor::INVALID_INDEX, + AudioInputProcessor::INVALID_INDEX, + "", + RecognizeStopPoint::AFTER_SEND)); } /** @@ -1701,6 +1861,29 @@ TEST_F(AudioInputProcessorTest, expectSpeechNoDefaultReadablePrevious) { ASSERT_TRUE(testExpectSpeechSucceeds(WITH_DIALOG_REQUEST_ID)); } +/// This function verifies that the initiator from an ExpectSpeech is passed to a subsequent Recognize. +TEST_F(AudioInputProcessorTest, expectSpeechWithInitiator) { + ASSERT_TRUE(testRecognizeWithExpectSpeechInitiator(true)); +} + +/** + * This function verifies that if the ExpectSpeech does not have an initiator, no initiator is present in the + * subsequent Recognize. + */ +TEST_F(AudioInputProcessorTest, expectSpeechWithNoInitiator) { + ASSERT_TRUE(testRecognizeWithExpectSpeechInitiator(false)); +} + +/** + * This function verifies that if the ExpectSpeech times out, the next user initiated Recognize will send the standard + * initiator and not the one passed from AVS. + */ +TEST_F(AudioInputProcessorTest, expectSpeechWithInitiatorTimedOut) { + removeDefaultAudioProvider(); + ASSERT_TRUE(testExpectSpeechWaits(WITH_DIALOG_REQUEST_ID, VERIFY_TIMEOUT)); + ASSERT_TRUE(testRecognizeSucceeds(*m_audioProvider, Initiator::TAP)); +} + /// This function verifies that a focus change to @c FocusState::BACKGROUND causes the @c AudioInputProcessor to /// release the channel and go back to @c State::IDLE. TEST_F(AudioInputProcessorTest, focusChangedBackground) { @@ -1713,7 +1896,74 @@ TEST_F(AudioInputProcessorTest, focusChangedNone) { ASSERT_TRUE(testFocusChange(avsCommon::avs::FocusState::NONE)); } -} // namespace test -} // namespace aip -} // namespace capabilityAgents -} // namespace alexaClientSDK +/// Test that the @c AudioInputProcessor correctly transitions to @c State::IDLE +/// if @c Status::TIMEDOUT is received +TEST_F(AudioInputProcessorTest, resetStateOnTimeOut) { + ASSERT_TRUE(testRecognizeSucceeds(*m_audioProvider, Initiator::TAP, 0)); + + EXPECT_CALL(*m_mockFocusManager, releaseChannel(CHANNEL_NAME, _)); + EXPECT_CALL(*m_mockObserver, onStateChanged(AudioInputProcessorObserverInterface::State::IDLE)); + m_audioInputProcessor->onSendCompleted(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::TIMEDOUT); +} + +/* + * This function verifies that @c AudioInputProcessor::recognize() works with @c Initiator::WAKEWORD, keyword and + * valid espData. + */ +TEST_F(AudioInputProcessorTest, recognizeWakewordWithESPWithKeyword) { + auto begin = AudioInputProcessor::INVALID_INDEX; + auto end = AudioInputProcessor::INVALID_INDEX; + // note that we are just using a integer instead of a float number, this is to help with JSON verification. + ESPData espData("123456789", "987654321"); + EXPECT_TRUE(testRecognizeSucceeds( + *m_audioProvider, Initiator::WAKEWORD, begin, end, KEYWORD_TEXT, RecognizeStopPoint::NONE, nullptr, espData)); +} + +/* + * This function verifies that @c AudioInputProcessor::recognize() works with @c Initiator::WAKEWORD, keyword and + * invalid espData. The ReportEchoSpatialPerceptionData event will not be sent but the Recognize event should still be + * sent. + */ +TEST_F(AudioInputProcessorTest, recognizeWakewordWithInvalidESPWithKeyword) { + auto begin = AudioInputProcessor::INVALID_INDEX; + auto end = AudioInputProcessor::INVALID_INDEX; + ESPData espData("@#\"", "@#\""); + EXPECT_TRUE(testRecognizeSucceeds( + *m_audioProvider, Initiator::WAKEWORD, begin, end, KEYWORD_TEXT, RecognizeStopPoint::NONE, nullptr, espData)); +} + +/* + * This function verifies that @c AudioInputProcessor::recognize() works with OPUS encoding used with + * @c Initiator::TAP. + */ +TEST_F(AudioInputProcessorTest, recognizeOPUSWithTap) { + m_audioProvider->format.encoding = avsCommon::utils::AudioFormat::Encoding::OPUS; + m_audioProvider->format.sampleRateHz = 32000; + ASSERT_TRUE(testRecognizeSucceeds(*m_audioProvider, Initiator::TAP)); +} + +/* + * This function verifies that @c AudioInputProcessor::recognize() works with OPUS encoding used with + * @c Initiator::PRESS_AND_HOLD. + */ +TEST_F(AudioInputProcessorTest, recognizeOPUSWithPressAndHold) { + m_audioProvider->format.encoding = avsCommon::utils::AudioFormat::Encoding::OPUS; + m_audioProvider->format.sampleRateHz = 32000; + ASSERT_TRUE(testRecognizeSucceeds(*m_audioProvider, Initiator::PRESS_AND_HOLD)); +} + +/** + * This function verifies that @c AudioInputProcessor::recognize() works with OPUS encoding used with + * @c Initiator::WAKEWORD valid begin and end indices. + */ +TEST_F(AudioInputProcessorTest, recognizeOPUSWithWakeWord) { + avsCommon::avs::AudioInputStream::Index begin = 0; + avsCommon::avs::AudioInputStream::Index end = AudioInputProcessor::INVALID_INDEX; + m_audioProvider->format.encoding = avsCommon::utils::AudioFormat::Encoding::OPUS; + m_audioProvider->format.sampleRateHz = 32000; + EXPECT_TRUE(testRecognizeSucceeds(*m_audioProvider, Initiator::WAKEWORD, begin, end, KEYWORD_TEXT)); +} +} // namespace test +} // namespace aip +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/AIP/test/ESPDataTest.cpp b/CapabilityAgents/AIP/test/ESPDataTest.cpp new file mode 100644 index 0000000000..141b2c05cb --- /dev/null +++ b/CapabilityAgents/AIP/test/ESPDataTest.cpp @@ -0,0 +1,76 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ +/// @file ESPDataTest.cpp + +#include + +#include "AIP/ESPData.h" + +using namespace testing; + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace aip { +namespace test { + +/// Test harness for @c ESPData class. +class ESPDataTest : public ::testing::Test {}; + +/// Test for a normal positive number (with sign), expect verify() to return true. +TEST_F(ESPDataTest, NormalPositiveNumber) { + ESPData data{"+0.123f", "+123.123"}; + EXPECT_TRUE(data.verify()); +} + +/// Test for a normal positive number (without sign), expect verify() to return true. +TEST_F(ESPDataTest, NormalPositiveNumberWithoutSign) { + ESPData data{"0.123f", "123.123"}; + EXPECT_TRUE(data.verify()); +} + +/// Test for a normal negative number, expect verify() to return true. +TEST_F(ESPDataTest, NormalNegativeNumber) { + ESPData data{"-0.123F", "-123.123"}; + EXPECT_TRUE(data.verify()); +} + +/// Test for a normal positive exponential number, expect verify() to return true. +TEST_F(ESPDataTest, NormalPositiveExponentialNumber) { + ESPData data{"100e+9", ".6e19f"}; + EXPECT_TRUE(data.verify()); +} + +/// Test for a normal negative exponential number, expect verify() to return true. +TEST_F(ESPDataTest, NormalNegativeExponentialNumber) { + ESPData data{"-100e-9", "-1.6e-19f"}; + EXPECT_TRUE(data.verify()); +} + +/// Test for a empty number, expect verify() to return false. +TEST_F(ESPDataTest, emptyNumber) { + ESPData data{"", ""}; + EXPECT_FALSE(data.verify()); +} + +/// Test for a number with quotation mark, expect verify() to return false. +TEST_F(ESPDataTest, noDigitInNumber) { + ESPData data{"\"", "\""}; + EXPECT_FALSE(data.verify()); +} + +} // namespace test +} // namespace aip +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/AIP/test/MockObserver.h b/CapabilityAgents/AIP/test/MockObserver.h index c17d13b708..e33511efd6 100644 --- a/CapabilityAgents/AIP/test/MockObserver.h +++ b/CapabilityAgents/AIP/test/MockObserver.h @@ -1,7 +1,5 @@ /* - * MockObserver.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,11 +13,11 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AIP_INCLUDE_AIP_TEST_MOCK_OBSERVER_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AIP_INCLUDE_AIP_TEST_MOCK_OBSERVER_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_TEST_MOCKOBSERVER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_TEST_MOCKOBSERVER_H_ #include - + #include namespace alexaClientSDK { @@ -30,13 +28,12 @@ namespace test { /// Mock class that implements the Observer. class MockObserver : public avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface { public: - MOCK_METHOD1( - onStateChanged, void (avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface::State state)); + MOCK_METHOD1(onStateChanged, void(avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface::State state)); }; -} // namespace test -} // namespace aip -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace test +} // namespace aip +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AIP_INCLUDE_AIP_TEST_MOCK_OBSERVER_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AIP_TEST_MOCKOBSERVER_H_ diff --git a/CapabilityAgents/Alerts/CMakeLists.txt b/CapabilityAgents/Alerts/CMakeLists.txt index 2003d566fd..173243ce0f 100644 --- a/CapabilityAgents/Alerts/CMakeLists.txt +++ b/CapabilityAgents/Alerts/CMakeLists.txt @@ -3,8 +3,5 @@ project(Alerts LANGUAGES CXX) include(../../build/BuildDefaults.cmake) -set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH ON) -find_package(PkgConfig) -pkg_check_modules(SQLITE REQUIRED sqlite3) - add_subdirectory("src") +acsdk_add_test_subdirectory_if_allowed() diff --git a/CapabilityAgents/Alerts/include/Alerts/Alarm.h b/CapabilityAgents/Alerts/include/Alerts/Alarm.h index d3da09456c..7c18d6f4a0 100644 --- a/CapabilityAgents/Alerts/include/Alerts/Alarm.h +++ b/CapabilityAgents/Alerts/include/Alerts/Alarm.h @@ -1,7 +1,5 @@ /* - * Alarm.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_ALARM_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_ALARM_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALARM_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALARM_H_ #include "Alerts/Alert.h" @@ -25,42 +23,26 @@ namespace capabilityAgents { namespace alerts { /** - * An Alarm class. + * An Alarm class. This represents an alert which the user wishes to activate at a specific point in time, + * which they specify as that absolute time point, rather than an offset from the current time. + * + * There is no expected special behavior for this type of alert - it will render a simple audio asset on the device + * when activated. */ class Alarm : public Alert { public: /// String representation of this type. static const std::string TYPE_NAME; - /** - * A static function to set the default audio file path for this type of alert. - * - * @param filePath The path to the audio file. - */ - static void setDefaultAudioFilePath(const std::string & filePath); - - /** - * A static function to set the short audio file path for this type of alert. - * - * @param filePath The path to the audio file. - */ - static void setDefaultShortAudioFilePath(const std::string & filePath); - - std::string getDefaultAudioFilePath() const override; - - std::string getDefaultShortAudioFilePath() const override; + Alarm( + std::function()> defaultAudioFactory, + std::function()> shortAudioFactory); std::string getTypeName() const override; - -private: - /// The class-level audio file path. - static std::string m_defaultAudioFilePath; - /// The class-level short audio file path. - static std::string m_defaultShortAudioFilePath; }; -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_ALARM_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALARM_H_ diff --git a/CapabilityAgents/Alerts/include/Alerts/Alert.h b/CapabilityAgents/Alerts/include/Alerts/Alert.h index a906e433de..fbe6ab4568 100644 --- a/CapabilityAgents/Alerts/include/Alerts/Alert.h +++ b/CapabilityAgents/Alerts/include/Alerts/Alert.h @@ -1,7 +1,5 @@ /* - * Alert.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_ALERT_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_ALERT_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALERT_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALERT_H_ #include "Alerts/AlertObserverInterface.h" #include "Alerts/Renderer/Renderer.h" @@ -24,9 +22,13 @@ #include #include +#include #include +#include +#include #include +#include #include #include @@ -48,7 +50,9 @@ class SQLiteAlertStorage; * example, rather than also query rendering state. An alert object in an 'active' state implies the user * perceivable rendering is occurring (whether that means audible, visual, or other perceivable stimulus). */ -class Alert : public renderer::RendererObserverInterface { +class Alert + : public renderer::RendererObserverInterface + , public std::enable_shared_from_this { public: /** * An enum class which captures the state an alert object can be in. @@ -58,9 +62,11 @@ class Alert : public renderer::RendererObserverInterface { UNSET, /// The alert is set and is expected to become active at some point in the future. SET, - /// The alert has been activated, but is not yet active. + /// The alert is ready to activate, and is waiting for the channel to be acquired. + READY, + /// Rendering has been initiated, but is not yet perceivable from a user's point of view. ACTIVATING, - /// The alert is active from a user's point of view. + /// Rendering has been initiated, and is perceivable from a user's point of view. ACTIVE, /// The alert is active, but has been asked to snooze. SNOOZING, @@ -85,7 +91,60 @@ class Alert : public renderer::RendererObserverInterface { /// The alert has been stopped due to a local user action. LOCAL_STOP, /// The alert is being stopped due to an SDK shutdown operation. - SHUTDOWN + SHUTDOWN, + /// Logout customer logged out or deregistered. + LOG_OUT + }; + + /** + * Utility structure to represent a custom asset sent from AVS. + */ + struct Asset { + /** + * Default Constructor. + */ + Asset() = default; + + /** + * Constructor. + * + * @param id The id of the asset. + * @param url The url of the asset. + */ + Asset(const std::string& id, const std::string& url) : id{id}, url{url} { + } + + /// The id of the asset. + std::string id; + /// The url of the asset. + std::string url; + }; + + /* + * A utility structure to encapsulate the data reflecting custom assets for an alert. + */ + struct AssetConfiguration { + /** + * Constructor. + */ + AssetConfiguration() : loopCount{0}, loopPause{std::chrono::milliseconds{0}}, hasRenderingFailed{false} { + } + + /// A map of the custom assets, mapping from asset.id to the asset itself. + std::unordered_map assets; + /** + * A vector of the play order of the asset ids. AVS sends this list in its SetAlert Directive, and to + * render the alert, all assets mapping to these ids must be played in sequence. + */ + std::vector assetPlayOrderItems; + /// The background asset id, if specified by AVS. + std::string backgroundAssetId; + /// The number of times the sequence of assets should be rendered. + int loopCount; + /// The pause time, in milliseconds, that should be taken between each loop of asset rendering. + std::chrono::milliseconds loopPause; + /// A flag to capture if rendering any of these urls failed. + bool hasRenderingFailed; }; /** @@ -100,6 +159,31 @@ class Alert : public renderer::RendererObserverInterface { INVALID_VALUE }; + /** + * Utility struct to allow us to share Context data that can be sent to AVS representing this alert. + */ + struct ContextInfo { + /** + * Constructor. + * + * @param token The AVS token identifying this alert. + * @param type The type of this alert. + * @param scheduledTime_ISO_8601 The time, in ISO-8601 format, when this alert should activate. + */ + ContextInfo(const std::string& token, const std::string& type, const std::string& scheduledTime_ISO_8601) : + token{token}, + type{type}, + scheduledTime_ISO_8601{scheduledTime_ISO_8601} { + } + + /// The AVS token identifying this alert. + std::string token; + /// The type of this alert. + std::string type; + /// The time, in ISO-8601 format, when this alert should activate. + std::string scheduledTime_ISO_8601; + }; + /** * A utility function to convert an alert state enum value to a string. * @@ -124,31 +208,12 @@ class Alert : public renderer::RendererObserverInterface { */ static std::string parseFromJsonStatusToString(Alert::ParseFromJsonStatus parseFromJsonStatus); - /** - * A utility struct which allows alert objects to be sorted uniquely by time in STL containers such as sets. - */ - struct TimeComparator { - /** - * Alerts may have the same time stamp, so let's include the token to ensure unique and consistent ordering. - */ - bool operator () (const std::shared_ptr& lhs, const std::shared_ptr& rhs) const { - if (lhs->m_scheduledTime_Unix == rhs->m_scheduledTime_Unix) { - return (lhs->m_token < rhs->m_token); - } - - return (lhs->m_scheduledTime_Unix < rhs->m_scheduledTime_Unix); - } - }; - /** * Constructor. */ - Alert(); - - /** - * Destructor. - */ - virtual ~Alert(); + Alert( + std::function()> defaultAudioFactory, + std::function()> shortAudioFactory); /** * Returns a string to identify the type of the class. Required for persistent storage. @@ -158,18 +223,27 @@ class Alert : public renderer::RendererObserverInterface { virtual std::string getTypeName() const = 0; /** - * Returns the file path for the alert's default audio file. + * A function that gets a factory to create a stream to the default audio for an alert. + * + * @return A factory function that generates a default audio stream. + */ + std::function()> getDefaultAudioFactory() const; + + /** + * A function that gets a factory to create a stream to the short audio for an alert. * - * @return The file path for the alert's default audio file. + * @return A factory function that generates a short audio stream. */ - virtual std::string getDefaultAudioFilePath() const = 0; + std::function()> getShortAudioFactory() const; /** - * Returns the file path for the alert's short (backgrounded) audio file. + * Returns the Context data which may be shared with AVS. * - * @return The file path for the alert's short (backgrounded) audio file. + * @return The Context data which may be shared with AVS. */ - virtual std::string getDefaultShortAudioFilePath() const = 0; + Alert::ContextInfo getContextInfo() const; + + void onRendererStateChange(renderer::RendererObserverInterface::State state, const std::string& reason) override; /** * Given a rapidjson pre-parsed Value, parse the fields required for a valid alert. @@ -178,7 +252,15 @@ class Alert : public renderer::RendererObserverInterface { * @param[out] errorMessage An output parameter where a parse error message may be stored. * @return The status of the parse. */ - ParseFromJsonStatus parseFromJson(const rapidjson::Value & payload, std::string* errorMessage); + ParseFromJsonStatus parseFromJson(const rapidjson::Value& payload, std::string* errorMessage); + + /** + * Sets the time when the alert should activate. + * + * @param time_ISO_8601 The time, in ISO-8601 format, when this alert should activate. + * @return Whether the alert was successfully updated. + */ + bool setTime_ISO_8601(const std::string& time_ISO_8601); /** * Set the renderer on the alert. @@ -195,6 +277,25 @@ class Alert : public renderer::RendererObserverInterface { */ void setObserver(AlertObserverInterface* observer); + /** + * Activate the alert. + */ + void activate(); + + /** + * Deactivate the alert. + * + * @param reason The reason why the alert is being stopped. + */ + void deactivate(StopReason reason); + + /** + * Performs relevant operations to snooze this alarm to the new time provided. + * + * @param updatedScheduledTime_ISO_8601 The new time for the alarm to occur, in ISO-8601 format. + */ + void snooze(const std::string& updatedScheduledTime_ISO_8601); + /** * Sets the focus state for the alert. * @@ -212,20 +313,6 @@ class Alert : public renderer::RendererObserverInterface { */ void reset(); - /** - * Activate the alert. - */ - void activate(); - - /** - * Deactivate the alert. - * - * @param reason The reason why the alert is being stopped. - */ - void deActivate(StopReason reason); - - void onRendererStateChange(renderer::RendererObserverInterface::State state, const std::string & reason) override; - /** * Returns the AVS token for the alert. * @@ -269,21 +356,74 @@ class Alert : public renderer::RendererObserverInterface { int getId() const; /** - * A utility function to print the internals of an alert. + * Queries whether the alert is past-due. + * + * @param currentUnixTime The time with which to compare the activation time of the alert. + * @param timeLimitSeconds How long an alert may be late, and still considered valid. + * @return If the alert is considered past-due. */ - void printDiagnostic(); + bool isPastDue(int64_t currentUnixTime, std::chrono::seconds timeLimit); /** - * Performs relevant operations to snooze this alarm to the new time provided. + * Get the loop count of custom assets. * - * @param updatedScheduledTime_ISO_8601 The new time for the alarm to occur, in ISO-8601 format. + * @return The loop count of custom assets. + */ + int getLoopCount() const; + + /** + * Get the time, in milliseconds, to be paused between custom-asset loop rendering. + * + * @return The time, in milliseconds, to be paused between custom-asset loop rendering. + */ + std::chrono::milliseconds getLoopPause() const; + + /** + * Get the background custom asset id, as specified by AVS. + * + * @return The background custom asset id, as specified by AVS. + */ + std::string getBackgroundAssetId() const; + + /** + * Sets the number of times the custom assets should be looped. + * + * @param loopCount The number of times the custom assets should be looped. + */ + void setLoopCount(int loopCount); + + /** + * Sets the time, in milliseconds, to be paused between custom-asset loop rendering. + * + * @param ms The time, in milliseconds, to be paused between custom-asset loop rendering. + */ + void setLoopPause(std::chrono::milliseconds pauseDuration); + + /** + * Sets the background custom asset id, as specified by AVS. + * + * @param The background custom asset id, as specified by AVS. + */ + void setBackgroundAssetId(const std::string& backgroundAssetId); + + /** + * Returns the utility structure, containing the Context data associated with this alert. + * + * @return The utility structure, containing the Context data associated with this alert. + */ + AssetConfiguration getAssetConfiguration() const; + + /** + * A utility function to print the internals of an alert. */ - void snooze(const std::string & updatedScheduledTime_ISO_8601); + void printDiagnostic(); private: /// A friend relationship, since our storage interface needs access to all fields. friend class storage::SQLiteAlertStorage; + std::string getScheduledTime_ISO_8601Locked() const; + /** * Utility function to begin the alert's renderer. */ @@ -294,37 +434,93 @@ class Alert : public renderer::RendererObserverInterface { */ void onMaxTimerExpiration(); + /// The mutex that enforces thread safety for all member variables. + mutable std::mutex m_mutex; + /// The AVS token for the alert. std::string m_token; + /// A TimePoint reflecting the time when the alert should become active. + avsCommon::utils::timing::TimePoint m_timePoint; + /// The database id for the alert. int m_dbId; - /// The scheduled time for the alert in ISO-8601 format. - std::string m_scheduledTime_ISO_8601; - /// The scheduled time for the alert in Unix epoch format. - /// TODO : ACSDK-392 to investigate updating this to std::chrono types for better portability & robustness. - int64_t m_scheduledTime_Unix; + + /// The assets associated with this alert. + AssetConfiguration m_assetConfiguration; + /// The state of the alert. State m_state; /// The render state of the alert. renderer::RendererObserverInterface::State m_rendererState; /// The reason the alert has been stopped. StopReason m_stopReason; - /// the AVS-context string for the alert. - std::string m_avsContextString; /// The current focus state of the alert. avsCommon::avs::FocusState m_focusState; - /// The renderer for the alert. - std::shared_ptr m_renderer; - /// The observer of the alert. - AlertObserverInterface* m_observer; /// A flag to capture if the maximum time timer has expired for this alert. bool m_hasTimerExpired; /// The timer to ensure this alert is not active longer than a maximum length of time. avsCommon::utils::timing::Timer m_maxLengthTimer; + /// The observer of the alert. + AlertObserverInterface* m_observer; + /// The renderer for the alert. + std::shared_ptr m_renderer; + /// This is the factory that provides a default audio stream. + const std::function()> m_defaultAudioFactory; + /// This is the factory that provides a short audio stream. + const std::function()> m_shortAudioFactory; }; -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK +/** + * A utility struct which allows alert objects to be sorted uniquely by time in STL containers such as sets. + */ +struct TimeComparator { + /** + * Alerts may have the same time stamp, so let's include the token to ensure unique and consistent ordering. + */ + bool operator()(const std::shared_ptr& lhs, const std::shared_ptr& rhs) const { + if (lhs->getScheduledTime_Unix() == rhs->getScheduledTime_Unix()) { + return (lhs->getToken() < rhs->getToken()); + } + + return (lhs->getScheduledTime_Unix() < rhs->getScheduledTime_Unix()); + } +}; + +/** + * Write a @c Alert::State value to an @c ostream as a string. + * + * @param stream The stream to write the value to. + * @param state The @c Alert::State value to write to the @c ostream as a string. + * @return The @c ostream that was passed in and written to. + */ +inline std::ostream& operator<<(std::ostream& stream, const Alert::State& state) { + return stream << Alert::stateToString(state); +} + +/** + * Write a @c Alert::StopReason value to an @c ostream as a string. + * + * @param stream The stream to write the value to. + * @param reason The @c Alert::StopReason value to write to the @c ostream as a string. + * @return The @c ostream that was passed in and written to. + */ +inline std::ostream& operator<<(std::ostream& stream, const Alert::StopReason& reason) { + return stream << Alert::stopReasonToString(reason); +} + +/** + * Write a @c Alert::ParseFromJsonStatus value to an @c ostream as a string. + * + * @param stream The stream to write the value to. + * @param status The @c Alert::ParseFromJsonStatus value to write to the @c ostream as a string. + * @return The @c ostream that was passed in and written to. + */ +inline std::ostream& operator<<(std::ostream& stream, const Alert::ParseFromJsonStatus& status) { + return stream << Alert::parseFromJsonStatusToString(status); +} + +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_ALERT_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALERT_H_ diff --git a/CapabilityAgents/Alerts/include/Alerts/AlertObserverInterface.h b/CapabilityAgents/Alerts/include/Alerts/AlertObserverInterface.h index 5c284cf7fd..3eb418f770 100644 --- a/CapabilityAgents/Alerts/include/Alerts/AlertObserverInterface.h +++ b/CapabilityAgents/Alerts/include/Alerts/AlertObserverInterface.h @@ -1,7 +1,5 @@ /* - * AlertObserverInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_ALERT_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_ALERT_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALERTOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALERTOBSERVERINTERFACE_H_ #include @@ -33,6 +31,8 @@ class AlertObserverInterface { * An enum class to represent the states an alert can be in. */ enum class State { + /// The alert is ready to start, and is waiting for channel focus. + READY, /// The alert has started. STARTED, /// The alert has stopped due to user or system intervention. @@ -63,11 +63,54 @@ class AlertObserverInterface { * @param state The state of the alert. * @param reason The reason for the state change. */ - virtual void onAlertStateChange(const std::string & alertToken, State state, const std::string & reason = "") = 0; + virtual void onAlertStateChange(const std::string& alertToken, State state, const std::string& reason = "") = 0; + + /** + * Convert a @c State to a @c std::string. + * + * @param state The @c State to convert. + * @return The string representation of @c state. + */ + static std::string stateToString(State state); }; -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK +inline std::string AlertObserverInterface::stateToString(State state) { + switch (state) { + case State::READY: + return "READY"; + case State::STARTED: + return "STARTED"; + case State::STOPPED: + return "STOPPED"; + case State::SNOOZED: + return "SNOOZED"; + case State::COMPLETED: + return "COMPLETED"; + case State::PAST_DUE: + return "PAST_DUE"; + case State::FOCUS_ENTERED_FOREGROUND: + return "FOCUS_ENTERED_FOREGROUND"; + case State::FOCUS_ENTERED_BACKGROUND: + return "FOCUS_ENTERED_BACKGROUND"; + case State::ERROR: + return "ERROR"; + } + return "unknown State"; +} + +/** + * Write a @c State value to an @c ostream. + * + * @param stream The stream to write the value to. + * @param state The @c State value to write to the @c ostream as a string. + * @return The @c ostream that was passed in and written to. + */ +inline std::ostream& operator<<(std::ostream& stream, const AlertObserverInterface::State& state) { + return stream << AlertObserverInterface::stateToString(state); +} + +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_ALERT_OBSERVER_INTERFACE_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALERTOBSERVERINTERFACE_H_ diff --git a/CapabilityAgents/Alerts/include/Alerts/AlertScheduler.h b/CapabilityAgents/Alerts/include/Alerts/AlertScheduler.h new file mode 100644 index 0000000000..fa00893c65 --- /dev/null +++ b/CapabilityAgents/Alerts/include/Alerts/AlertScheduler.h @@ -0,0 +1,262 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALERTSCHEDULER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALERTSCHEDULER_H_ + +#include "Alerts/Storage/AlertStorageInterface.h" +#include "Alerts/AlertObserverInterface.h" + +#include + +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace alerts { + +/** + * This class handles the management of AVS alerts. This is essentially a time-ordered queue, where a timer is + * set for the alert which must activate soonest. As alerts are added or removed, this timer must be reset. + */ +class AlertScheduler : public AlertObserverInterface { +public: + /** + * A utility structure to facilitate sending Context to AVS. + */ + struct AlertsContextInfo { + /// All alerts that are scheduled. + std::vector scheduledAlerts; + /// All active alerts. + std::vector activeAlerts; + }; + + /** + * Constructor. + * + * @param alertStorage The storage object where alerts can be saved, modified and deleted. + * @param alertRenderer The object which will handle user-perceivable effects upon alert activation. + * @param alertPastDueTimeLimitSeconds The threshold in seconds, beyond which alerts will be considered past-due + * and discarded. + */ + AlertScheduler( + std::shared_ptr alertStorage, + std::shared_ptr alertRenderer, + std::chrono::seconds alertPastDueTimeLimitSeconds); + + void onAlertStateChange(const std::string& alertToken, State state, const std::string& reason = "") override; + + /** + * Initialization. + * + * @note This function must be called before other use of an object this class. + * + * @param observer An observer which we will notify of all alert state changes. + * @return Whether initialization was successful. + */ + bool initialize(std::shared_ptr observer); + + /** + * Schedule an alert for rendering. + * + * @param alert The alert to be scheduled. + * @return Whether the alert was successfully scheduled. + */ + bool scheduleAlert(std::shared_ptr alert); + + /** + * Snooze an active alert to re-activate at a new specified time. The alert, if active, will be de-activated + * and re-scheduled for the new time. + * + * @param alertToken The AVS token identifying the alert. + * @param updatedTime_ISO_8601 The new time in ISO-8601 format. + * @return Whether we successfully snoozed the alert. + */ + bool snoozeAlert(const std::string& alertToken, const std::string& updatedTime_ISO_8601); + + /** + * Delete an alert from the schedule. + * + * @param alertToken The AVS token identifying the alert. + * @return Whether we successfully deleted the alert. + */ + bool deleteAlert(const std::string& alertToken); + + /** + * Utility function to determine if an alert is currently active. + * + * @param alert The alert being queried. + * @return Whether the alert is active. + */ + bool isAlertActive(std::shared_ptr alert); + + /** + * Update our state of channel focus. + * + * @param focusState The state we now have. + */ + void updateFocus(avsCommon::avs::FocusState focusState); + + /** + * Provide our current channel focus state. + * + * @return Our current channel focus state. + */ + avsCommon::avs::FocusState getFocusState(); + + /** + * Collects Context data for all alerts being managed. + * + * @return An AlertsContextInfo structure, containing all data needed. + */ + AlertScheduler::AlertsContextInfo getContextInfo(); + + /** + * Handle a local stop. + */ + void onLocalStop(); + + /** + * Clear all data being managed. This includes database storage. + * + * @param reason What triggered the data to be cleared. + */ + void clearData(Alert::StopReason reason = Alert::StopReason::SHUTDOWN); + + /** + * Handle shutdown. + */ + void shutdown(); + +private: + /** + * A handler function which will be called by our internal executor when a managed alert changes state. + * + * @param alertToken The AVS token identifying the alert. + * @param state The state of the alert. + * @param reason The reason the the state changed, if applicable. + */ + void executeOnAlertStateChange(std::string alertToken, State state, std::string reason); + + /** + * A utility function which wraps the executor submission to notify our observer. + * + * @param alertToken The AVS token identifying the alert. + * @param state The state of the alert. + * @param reason The reason the the state changed, if applicable. + */ + void notifyObserver( + const std::string& alertToken, + AlertObserverInterface::State state, + const std::string& reason = ""); + + /** + * A handler function which will be called by our internal executor when a managed alert changes state. + * + * @param alertToken The AVS token identifying the alert. + * @param state The state of the alert. + * @param reason The reason the the state changed, if applicable. + */ + void executeNotifyObserver(std::string alertToken, AlertObserverInterface::State state, std::string reason = ""); + + /** + * Utility function to set the timer for the next scheduled alert. This function requires @c m_mutex be locked. + */ + void setTimerForNextAlertLocked(); + + /** + * Utility function to set the timer for the next scheduled alert. + */ + void setTimerForNextAlert(); + + /** + * Utility function to activate the next scheduled alert. This function requires @c m_mutex be locked. + */ + void activateNextAlertLocked(); + + /** + * Utility function to be called when an alert is ready to activate. + * + * @param alertToken The AVS token of the alert that should become active. + */ + void onAlertReady(const std::string& alertToken); + + /** + * Utility function to query if a given alert is active. This function requires @c m_mutex be locked. + * + * @param alert The alert to be queried. + * @return Whether the alert is active or not. + */ + bool isAlertActiveLocked(std::shared_ptr alert) const; + + /** + * A utility function to retreive a scheduled alert given its token. This function requires @c m_mutex be locked. + * + * @param token The token for the alert. + * @return The scheduled Alert, otherwise nullptr. + */ + std::shared_ptr getAlertLocked(const std::string& token) const; + + /** + * A utility function to deactivate the currently active alert. This function requires @c m_mutex be locked. + * + * @param The reason the alert is being stopped. + */ + void deactivateActiveAlertHelperLocked(Alert::StopReason reason); + + /// This is used to safely access the time utilities. + avsCommon::utils::timing::TimeUtils m_timeUtils; + + /** + * Our observer. Once initialized, this is only accessed within executor functions, so does not need mutex + * protection. + */ + std::shared_ptr m_observer; + + /// Mutex for accessing all variables besides the observer. + std::mutex m_mutex; + + /// The AlertStorage object. + std::shared_ptr m_alertStorage; + /// The AlertRenderer object. + std::shared_ptr m_alertRenderer; + + /// The maximum time-limit in seconds for which an alert will be valid beyond its scheduled time. + std::chrono::seconds m_alertPastDueTimeLimit; + /// The current focus state for the Alerts channel. + avsCommon::avs::FocusState m_focusState; + + /// The alert, if any, which is currently active. + std::shared_ptr m_activeAlert; + /// All alerts which are scheduled to occur, ordered ascending by time. + std::set, alerts::TimeComparator> m_scheduledAlerts; + + /// The timer for the next alert to go off, if one is not already active. + avsCommon::utils::timing::Timer m_scheduledAlertTimer; + + /** + * The @c Executor which queues up operations from asynchronous API calls. + * + * @note This declaration needs to come *after* the Executor Thread Variables above so that the thread shuts down + * before the Executor Thread Variables are destroyed. + */ + avsCommon::utils::threading::Executor m_executor; +}; + +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALERTSCHEDULER_H_ diff --git a/CapabilityAgents/Alerts/include/Alerts/AlertsCapabilityAgent.h b/CapabilityAgents/Alerts/include/Alerts/AlertsCapabilityAgent.h index 2a3449b9b2..066f167ddd 100644 --- a/CapabilityAgents/Alerts/include/Alerts/AlertsCapabilityAgent.h +++ b/CapabilityAgents/Alerts/include/Alerts/AlertsCapabilityAgent.h @@ -1,7 +1,5 @@ /* - * AlertsCapabilityAgent.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,16 +13,18 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_ALERTS_CAPABILITY_AGENT_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_ALERTS_CAPABILITY_AGENT_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALERTSCAPABILITYAGENT_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALERTSCAPABILITYAGENT_H_ #include "Alerts/AlertObserverInterface.h" #include "Alerts/Alert.h" -#include "Alerts/Storage/AlertStorageInterface.h" +#include "Alerts/AlertScheduler.h" +#include "RegistrationManager/CustomerDataHandler.h" #include #include #include +#include #include #include #include @@ -33,8 +33,11 @@ #include #include +#include + #include #include +#include namespace alexaClientSDK { namespace capabilityAgents { @@ -44,37 +47,39 @@ static const std::chrono::minutes ALERT_PAST_DUE_CUTOFF_MINUTES = std::chrono::m /** * This class implements an Alerts capability agent. - * - * This class will not send Events to AVS until enableSendEvents() is called. */ -class AlertsCapabilityAgent : public avsCommon::avs::CapabilityAgent, - public avsCommon::sdkInterfaces::ConnectionStatusObserverInterface, - public AlertObserverInterface, - public avsCommon::utils::RequiresShutdown, - public std::enable_shared_from_this { +class AlertsCapabilityAgent + : public avsCommon::avs::CapabilityAgent + , public avsCommon::sdkInterfaces::ConnectionStatusObserverInterface + , public AlertObserverInterface + , public avsCommon::utils::RequiresShutdown + , public registrationManager::CustomerDataHandler + , public std::enable_shared_from_this { public: /** * Create function. * - * TODO : ACSDK-394 to change the observer model to support adding / removing multiple observers. - * * @param messageSender An interface to which this object will send Events to AVS. + * @param certifiedMessageSender An interface to which this object will send guaranteed Events to AVS. * @param focusManager An interface with which this object will request and release Alert channel focus. - * @param contextManager An interface to which this object will send context updates as stored alerts change. - * @param exceptionEncounteredSender An interface which allows ExceptionEncountered messages to be sent to AVS. - * @param renderer An alert renderer, which Alerts will use to generate user-perceivable effects when active. + * @param contextManager An interface to which this object will send context updates as alert states change. + * @param exceptionEncounteredSender An interface which allows ExceptionEncountered Events to be sent to AVS. * @param alertStorage An interface to store, load, modify and delete Alerts. - * @param observer An observer which will be notified of any Alert events which occur. - * @return An pointer to an object of this type, or nullptr if there were problems during construction. + * @param alertsAudioFactory A provider of audio streams specific to Alerts. + * @param alertRenderer An alert renderer, which Alerts will use to generate user-perceivable effects when active. + * @param dataManager A dataManager object that will track the CustomerDataHandler. + * @return A pointer to an object of this type, or nullptr if there were problems during construction. */ static std::shared_ptr create( - std::shared_ptr messageSender, - std::shared_ptr focusManager, - std::shared_ptr contextManager, - std::shared_ptr exceptionEncounteredSender, - std::shared_ptr renderer, - std::shared_ptr alertStorage, - std::shared_ptr observer); + std::shared_ptr messageSender, + std::shared_ptr certifiedMessageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionEncounteredSender, + std::shared_ptr alertStorage, + std::shared_ptr alertsAudioFactory, + std::shared_ptr alertRenderer, + std::shared_ptr dataManager); avsCommon::avs::DirectiveHandlerConfiguration getConfiguration() const override; @@ -88,24 +93,33 @@ class AlertsCapabilityAgent : public avsCommon::avs::CapabilityAgent, void onDeregistered() override; + void onConnectionStatusChanged(const Status status, const ChangedReason reason) override; + + void onFocusChanged(avsCommon::avs::FocusState focusState) override; + + void onAlertStateChange(const std::string& token, AlertObserverInterface::State state, const std::string& reason) + override; + /** - * Calling this function allows this object to send Events to AVS. - * This is useful for workflows where other Events need to be sent before this object's Events. + * Adds an observer to be notified of alert status changes. + * + * @param observer The observer to add. */ - void enableSendEvents(); + void addObserver(std::shared_ptr observer); /** - * Calling this function prevents this object from sending Events to AVS. - * This allows the system to send other Events which may need to be sent before this object begins sending Events. + * Removes an observer from being notified of alert status changes. + * + * @param observer The observer to remove. */ - void disableSendEvents(); - - void onConnectionStatusChanged(const Status status, const ChangedReason reason) override; + void removeObserver(std::shared_ptr observer); - void onFocusChanged(avsCommon::avs::FocusState focusState) override; - - void onAlertStateChange( - const std::string & token, AlertObserverInterface::State state, const std::string & reason) override; + /** + * A function that allows an application to clear all alerts from storage. This may be useful for a scenario + * where a user logs out of a device, and another user will log in. As the first user logs out, their pending + * alerts should not go off. + */ + void removeAllAlerts(); /** * This function provides a way for application code to request this object stop any active alert as the result @@ -114,32 +128,34 @@ class AlertsCapabilityAgent : public avsCommon::avs::CapabilityAgent, void onLocalStop(); /** - * A function that allows an application to clear all alerts from storage. This may be useful for a scenario - * where a user logs out of a device, and another user will log in. As the first user logs out, their pending - * alerts should not go off. + * Clear all scheduled alerts. */ - void removeAllAlerts(); + void clearData() override; private: /** * Constructor. * * @param messageSender An interface to which this object will send Events to AVS. + * @param certifiedMessageSender An interface to which this object will send guaranteed Events to AVS. * @param focusManager An interface with which this object will request and release Alert channel focus. * @param contextManager An interface to which this object will send context updates as stored alerts change. * @param exceptionEncounteredSender An interface which allows ExceptionEncountered messages to be sent to AVS. - * @param renderer An alert renderer, which Alerts will use to generate user-perceivable effects when active. * @param alertStorage An interface to store, load, modify and delete Alerts. - * @param observer An observer which will be notified of any Alert events which occur. + * @param alertsAudioFactory A provider of audio streams specific to Alerts. + * @param alertRenderer An alert renderer, which Alerts will use to generate user-perceivable effects when active. + * @param dataManager A dataManager object that will track the CustomerDataHandler. */ AlertsCapabilityAgent( - std::shared_ptr messageSender, - std::shared_ptr focusManager, - std::shared_ptr contextManager, - std::shared_ptr exceptionEncounteredSender, - std::shared_ptr renderer, - std::shared_ptr alertStorage, - std::shared_ptr observer); + std::shared_ptr messageSender, + std::shared_ptr certifiedMessageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionEncounteredSender, + std::shared_ptr alertStorage, + std::shared_ptr alertsAudioFactory, + std::shared_ptr alertRenderer, + std::shared_ptr dataManager); void doShutdown() override; @@ -149,18 +165,23 @@ class AlertsCapabilityAgent : public avsCommon::avs::CapabilityAgent, bool initialize(); /** - * Initializes the default sounds for this object. + * Initializes the alerts for this object. * - * @param configurationRoot The configuration object parsed during SDK initialization. + * @return True if successful, false otherwise. */ - bool initializeDefaultSounds(const avsCommon::utils::configuration::ConfigurationNode & configurationRoot); + bool initializeAlerts(); /** - * Initializes the alerts for this object. + * @name Executor Thread Functions * - * @param configurationRoot The configuration object parsed during SDK initialization. + * These functions (and only these functions) are called by @c m_executor on a single worker thread. All other + * public functions in this class can be called asynchronously, and pass data to the @c Executor thread through + * parameters to lambda functions. No additional synchronization is needed. + * + * The other private functions in this class are called from the execute* functions, and so also don't require + * additional synchronization. */ - bool initializeAlerts(const avsCommon::utils::configuration::ConfigurationNode & configurationRoot); + /// @{ /** * An implementation of this directive handling function, which may be called by the internal executor. @@ -170,173 +191,184 @@ class AlertsCapabilityAgent : public avsCommon::avs::CapabilityAgent, void executeHandleDirectiveImmediately(std::shared_ptr info); /** - * A helper function to handle the SetAlert directive. + * A handler function which will be called by our internal executor when the connection status changes. * - * @param directive The AVS Directive. - * @param payload The payload containing the alert data fields. - * @param[out] alertToken The AVS alert token, required for us to notify AVS whether the SetAlert failed or - * succeeded. - * @return Whether the SetAlert processing was successful. + * @param status The connection status. + * @param reason The reason the connection status changed. */ - bool handleSetAlert(const std::shared_ptr & directive, - const rapidjson::Document & payload, - std::string* alertToken); + void executeOnConnectionStatusChanged(const Status status, const ChangedReason reason); /** - * A helper function to handle the DeleteAlert directive. + * A handler function which will be called by our internal executor when the channel focus changes. * - * @param directive The AVS Directive. - * @param payload The payload containing the alert data fields. - * @param[out] alertToken The AVS alert token, required for us to notify AVS whether the DeleteAlert failed or - * succeeded. - * @return Whether the DeleteAlert processing was successful. + * @param focusState The current focus of the channel. */ - bool handleDeleteAlert(const std::shared_ptr & directive, - const rapidjson::Document & payload, - std::string* alertToken); + void executeOnFocusChanged(avsCommon::avs::FocusState focusState); /** - * Utility function to send an Event to AVS. All current Events per AVS documentation are with respect to - * a single Alert, so the parameter is the given Alert token. + * A handler function which will be called by our internal executor when an alert's status changes. * - * @param eventName The name of the Event to be sent. - * @param alertToken The token of the Alert being sent to AVS within the Event. + * @param alertToken The AVS token identifying the alert. + * @param state The state of the alert. + * @param reason The reason the the state changed, if applicable. */ - void sendEvent(const std::string & eventName, const std::string & alertToken); + void executeOnAlertStateChange( + const std::string& alertToken, + AlertObserverInterface::State state, + const std::string& reason); /** - * A utility function to simplify calling the ExceptionEncounteredSender. + * A handler function which will be called by our internal executor to add an alert observer. * - * @param directive The AVS Directive which resulted in the exception. - * @param errorMessage The error message we will send to AVS. + * @param observer The observer to add. */ - void sendProcessingDirectiveException( - const std::shared_ptr & directive, const std::string & errorMessage); + void executeAddObserver(std::shared_ptr observer); + + /** + * A handler function which will be called by our internal executor to remove an alert observer. + * + * @param observer The observer to remove. + */ + void executeRemoveObserver(std::shared_ptr observer); /** - * A utility function to update the ContextManager with the current state of all Alerts. - * This function requires that m_mutex be locked. + * A handler function which will be called by our internal executor to notify observers of alert changes. + * + * @param alertToken The AVS token identifying the alert. + * @param state The state of the alert. + * @param reason The reason the the state changed, if applicable. */ - void updateContextManagerLocked(); + void executeNotifyObservers( + const std::string& alertToken, + AlertObserverInterface::State state, + const std::string& reason = ""); /** - * A utility function to enqueue on the executor a request that we determine the next alert to be rendered. + * A handler function which will be called by our internal executor to remove all alerts currently being managed. */ - void scheduleNextAlertForRendering(); + void executeRemoveAllAlerts(); /** - * A utility function to determine the next alert to be rendered, and sets a timer waiting for it. + * A handler function which will be called by our internal executor to handle a local stop. */ - void executeScheduleNextAlertForRendering(); + void executeOnLocalStop(); + + /// @} /** - * A utility function to handle sending Alert focus changes via the executor. + * A helper function to handle the SetAlert directive. * - * @param alertToken The AVS Token for the alert. - * @param focusState The focus state of the alert. + * @param directive The AVS Directive. + * @param payload The payload containing the alert data fields. + * @param[out] alertToken The AVS alert token, required for us to notify AVS whether the SetAlert failed or + * succeeded. + * @return Whether the SetAlert processing was successful. */ - void executeSendAlertFocusChangeEvent(const std::string & alertToken, avsCommon::avs::FocusState focusState); + bool handleSetAlert( + const std::shared_ptr& directive, + const rapidjson::Document& payload, + std::string* alertToken); /** - * A utility function to handle sending notifications to the Alert observer via the executor. + * A helper function to handle the DeleteAlert directive. * - * @param alertToken The AVS Token for the alert. - * @param state The alert state. - * @param reason The optional reason for the alert state occurring. + * @param directive The AVS Directive. + * @param payload The payload containing the alert data fields. + * @param[out] alertToken The AVS alert token, required for us to notify AVS whether the DeleteAlert failed or + * succeeded. + * @return Whether the DeleteAlert processing was successful. */ - void executeNotifyObserver( - const std::string & alertToken, AlertObserverInterface::State state, const std::string & reason = ""); + bool handleDeleteAlert( + const std::shared_ptr& directive, + const rapidjson::Document& payload, + std::string* alertToken); /** - * A utility function to acquire the Alerts channel. + * Utility function to send an Event to AVS. All current Events per AVS documentation are with respect to + * a single Alert, so the parameter is the given Alert token. If isCertified is set to true, then the Event + * will be guaranteed to be sent to AVS at some point in the future, even if there is no currently active + * connection. If it is set to false, and there is no currently active connection, the Event will not be sent. * - * @return Whether we were successful making the request. + * @param eventName The name of the Event to be sent. + * @param alertToken The token of the Alert being sent to AVS within the Event. + * @param isCertified Whether the event must be guaranteed to be sent. See function description for details. */ - bool acquireChannel(); + void sendEvent(const std::string& eventName, const std::string& alertToken, bool isCertified = false); /** - * A utility function to release the Alerts channel. + * A utility function to simplify calling the ExceptionEncounteredSender. + * + * @param directive The AVS Directive which resulted in the exception. + * @param errorMessage The error message we will send to AVS. */ - void releaseChannel(); + void sendProcessingDirectiveException( + const std::shared_ptr& directive, + const std::string& errorMessage); /** - * A utility function to activate the next alert in our queue. - * This function requires that m_mutex be locked. + * A utility function to acquire the Alerts channel. */ - void activateNextAlertLocked(); + void acquireChannel(); /** - * A utility function to retreive a scheduled alert given its token. - * This function requires that m_mutex be locked. - * - * @param token The token for the alert. - * @return The scheduled Alert, otherwise nullptr. + * A utility function to release the Alerts channel. */ - std::shared_ptr getScheduledAlertByTokenLocked(const std::string & token); + void releaseChannel(); /** - * A utility function to update an alert to snooze. - * This function requires that m_mutex be locked. - * - * @param alert The alert to be snoozed. - * @param updatedTime The new time the alert should occur. - * @return Whether the snooze was successful. + * A utility function to update the focus manager with the current state of all alerts. */ - bool snoozeAlertLocked(std::shared_ptr alert, const std::string & updatedTime); + void updateContextManager(); /** - * A utility function to inspect all scheduled alerts, and remove those which are evaluated to be past-due. - * This also processes any alerts stored in the m_pastDueAlerts container. + * Creates a Context string for the alerts currently being managed. + * + * @return A Context string for the alerts currently being managed. */ - void filterPastDueAlerts(); + std::string getContextString(); /** - * A utility function to factor out common code when deactivating an alert. + * @name Executor Thread Variables * - * @param stopReason The reason the alert is being stopped. + * These variables are only accessed by the @c m_executor, with the exception of initialization, and shutdown. + * The first thing shutdown does is shutdown the @c m_executor, thus making this safe. */ - void deactivateActiveAlertHelper(Alert::StopReason stopReason); + /// @{ - /// The MessageSender object. + /// The regular MessageSender object. std::shared_ptr m_messageSender; + /// The CertifiedSender object. + std::shared_ptr m_certifiedSender; /// The FocusManager object. std::shared_ptr m_focusManager; /// The ContextManager object. std::shared_ptr m_contextManager; - /// The AlertStorage object. - std::shared_ptr m_alertStorage; - /// The AlertRenderer object. - std::shared_ptr m_alertRenderer; - /// The mutex to control accessing local variables in this object. - std::mutex m_mutex; - - /// The alert, if any, which is currently active. - std::shared_ptr m_activeAlert; - /// All alerts which are scheduled to occur, ordered ascending by time. - std::set, Alert::TimeComparator> m_scheduledAlerts; - /// Alerts which are evaluated as past-due at startup. These will be cleaned up once Events can be sent. - std::vector> m_pastDueAlerts; + /// Set of observers to notify when an alert status changes. @c m_mutex must be acquired before access. + std::unordered_set> m_observers; /// Variable to capture if we are currently connected to AVS. bool m_isConnected; - /// Variable to capture if we may send Events. - bool m_sendEventsEnabled; - /// Our current focus state. - avsCommon::avs::FocusState m_focusState; - // The timer for the next alert to go off, if one is not already active. - avsCommon::utils::timing::Timer m_scheduledAlertTimer; - /// An observer of this class that we should notify when an alert activates, and transitions states. - std::shared_ptr m_observer; - - /// The @c Executor which queues up operations from asynchronous API calls to the AlertsCapabilityAgent interface. - avsCommon::utils::threading::Executor m_caExecutor; - /// The @c Executor which serially and asynchronously handles operations with regard to the next active alert. - avsCommon::utils::threading::Executor m_alertSchedulerExecutor; + + /// Our helper object that takes care of managing alert persistence and rendering. + AlertScheduler m_alertScheduler; + + /// @} + + /// This member contains a factory to provide unique audio streams for the various alerts. + std::shared_ptr m_alertsAudioFactory; + + /** + * The @c Executor which queues up operations from asynchronous API calls. + * + * @note This declaration needs to come *after* the Executor Thread Variables above so that the thread shuts down + * before the Executor Thread Variables are destroyed. + */ + avsCommon::utils::threading::Executor m_executor; }; -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_ALERTS_CAPABILITY_AGENT_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_ALERTSCAPABILITYAGENT_H_ diff --git a/CapabilityAgents/Alerts/include/Alerts/Reminder.h b/CapabilityAgents/Alerts/include/Alerts/Reminder.h new file mode 100644 index 0000000000..a552bccafb --- /dev/null +++ b/CapabilityAgents/Alerts/include/Alerts/Reminder.h @@ -0,0 +1,52 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_REMINDER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_REMINDER_H_ + +#include "Alerts/Alert.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace alerts { + +/** + * A reminder class. This represents an alert which the user wishes to activate at a specific point in time, + * which they specify as that absolute time point, rather than an offset from the current time. + * + * The user expectation is that the activation of the reminder will include custom assets (if the device is connected + * to the internet), such as Alexa telling the user something specific with respect to the reminder being set. + * + * Usage example: + * "Alexa, remind me to walk the dog at 10am". + * 10am : Alexa will say "This is your 10am reminder to walk the dog." + */ +class Reminder : public Alert { +public: + /// String representation of this type. + static const std::string TYPE_NAME; + + Reminder( + std::function()> defaultAudioFactory, + std::function()> shortAudioFactory); + + std::string getTypeName() const override; +}; + +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_REMINDER_H_ diff --git a/CapabilityAgents/Alerts/include/Alerts/Renderer/Renderer.h b/CapabilityAgents/Alerts/include/Alerts/Renderer/Renderer.h index 8b3be5c0fe..d409778554 100644 --- a/CapabilityAgents/Alerts/include/Alerts/Renderer/Renderer.h +++ b/CapabilityAgents/Alerts/include/Alerts/Renderer/Renderer.h @@ -1,7 +1,5 @@ /* - * Renderer.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERER_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERER_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERER_H_ #include "Alerts/Renderer/RendererInterface.h" #include "Alerts/Renderer/RendererObserverInterface.h" @@ -25,7 +23,6 @@ #include #include -#include #include #include @@ -37,7 +34,9 @@ namespace renderer { /** * An implementation of an alert renderer. This class is thread-safe. */ -class Renderer : public RendererInterface, public avsCommon::utils::mediaPlayer::MediaPlayerObserverInterface { +class Renderer + : public RendererInterface + , public avsCommon::utils::mediaPlayer::MediaPlayerObserverInterface { public: /** * Creates a @c Renderer. @@ -46,24 +45,31 @@ class Renderer : public RendererInterface, public avsCommon::utils::mediaPlayer: * @return The @c Renderer object. */ static std::shared_ptr create( - std::shared_ptr mediaPlayer); + std::shared_ptr mediaPlayer); - void setObserver(RendererObserverInterface* observer) override; + void setObserver(std::shared_ptr observer) override; - void start(const std::string & localAudioFilePath, - const std::vector & urls = std::vector(), - int loopCount = 0, - std::chrono::milliseconds loopPauseInMilliseconds = std::chrono::milliseconds::zero()) override; + void start( + std::function()> audioFactory, + const std::vector& urls = std::vector(), + int loopCount = 0, + std::chrono::milliseconds loopPause = std::chrono::milliseconds{0}) override; void stop() override; - void onPlaybackStarted() override; + void onPlaybackStarted(SourceId sourceId) override; + + void onPlaybackStopped(SourceId sourceId) override; - void onPlaybackFinished() override; + void onPlaybackFinished(SourceId sourceId) override; - void onPlaybackError(std::string error) override; + void onPlaybackError(SourceId sourceId, const avsCommon::utils::mediaPlayer::ErrorType& type, std::string error) + override; private: + /// A type that identifies which source is currently being operated on. + using SourceId = avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId; + /** * Constructor. * @@ -72,49 +78,149 @@ class Renderer : public RendererInterface, public avsCommon::utils::mediaPlayer: Renderer(std::shared_ptr mediaPlayer); /** - * A utility function to actually start rendering the alert, which the executor may call on its own thread. + * @name Executor Thread Functions + * + * These functions (and only these functions) are called by @c m_executor on a single worker thread. All other + * functions in this class can be called asynchronously, and pass data to the @c Executor thread through parameters + * to lambda functions. No additional synchronization is needed. + */ + /// @{ + + /* + * This function will handle setting an observer. + * + * @param observer The observer to set. */ - void executeStart(); + void executeSetObserver(std::shared_ptr observer); /** - * A utility function to actually stop rendering the alert, which the executor may call on its own thread. + * This function will start rendering audio for the currently active alert. + * + * @param audioFactory A function that produces a stream of audio that is used for the default if nothing + * else is available. + * @param urls A container of urls to be rendered per the above description. + * @param loopCount The number of times the urls should be rendered. + * @param loopPauseInMilliseconds The number of milliseconds to pause between rendering url sequences. + */ + void executeStart( + std::function()> audioFactory, + const std::vector& urls, + int loopCount, + std::chrono::milliseconds loopPause); + + /** + * This function will stop rendering the currently active alert audio. */ void executeStop(); + /** + * This function will handle the playbackStarted callback. + * + * @param sourceId The sourceId of the media that has started playing. + */ + void executeOnPlaybackStarted(SourceId sourceId); + + /** + * This function will handle the playbackStopped callback. + * + * @param sourceId The sourceId of the media that has stopped playing. + */ + void executeOnPlaybackStopped(SourceId sourceId); + + /** + * This function will handle the playbackFinished callback. + * + * @param sourceId The sourceId of the media that has finished playing. + */ + void executeOnPlaybackFinished(SourceId sourceId); + + /** + * This function will handle the playbackError callback. + * @param sourceId The sourceId of the media that encountered the error. + * @param type The error type. + * @param error The error string generated by the @c MediaPlayer. + */ + void executeOnPlaybackError( + SourceId sourceId, + const avsCommon::utils::mediaPlayer::ErrorType& type, + const std::string& error); + + /** + * Utility function to handle notifying our observer, if there is one. + * + * @param state The state to notify the observer of. + * @param message The optional message to pass to the observer. + */ + void notifyObserver(RendererObserverInterface::State state, const std::string& message = ""); + + /** + * Utility function to set our internal sourceId to a non-assigned state, which is best encapsulated in + * a function since it is a bit non-intuitive per MediaPlayer's interface. + */ + void resetSourceId(); + + /** + * Utility function to handle the rendering of the next audio asset, with respect to @c m_loopCount and @c + * m_nextUrlIndexToRender. If all urls within a loop have completed, and there are further loops to render, this + * function will also perform a sleep for the @c m_loopPause duration. + * + * @return @c true if there are more audio assets to render, and the next one has been successfully sent to the @c + * m_mediaPlayer to be played. Returns @c false otherwise. + */ + bool renderNextAudioAsset(); + + /// @} + + /** + * @name Executor Thread Variables + * + * These member variables are only accessed by functions in the @c m_executor worker thread, and do not require any + * synchronization. + */ + /// @{ + /// The @cMediaPlayerInterface which renders the audio files. std::shared_ptr m_mediaPlayer; - /// Mutex to control access to local variables from the public api, and also the internal executor. - std::mutex m_mutex; - /// Our observer. - RendererObserverInterface* m_observer; - - /// The local audio file to be rendered. This should always be set as a fallback resource in case the - /// rendering of a url happens to fail (eg. network is down at that time). - std::string m_localAudioFilePath; + std::shared_ptr m_observer; /// An optional sequence of urls to be rendered. If the vector is empty, m_localAudioFilePath will be /// rendered instead. std::vector m_urls; + /// The number of streams that have been rendered during the processing of the current loop. + int m_numberOfStreamsRenderedThisLoop; + /// The number of times @c m_urls should be rendered. int m_loopCount; /// The time to pause between the rendering of the @c m_urls sequence. - std::chrono::milliseconds m_loopPauseInMilliseconds; + std::chrono::milliseconds m_loopPause; - /// A flag to capture if renderer is active. - bool m_isRendering; + /// A pointer to a stream to use as the default audio to use when the audio assets aren't available. + std::shared_ptr m_defaultAudio; - /// The @c Executor which serially and asynchronously handles operations with regard to rendering the alert. - /// TODO : ACSDK-388 to update the onPlayback* callback functions to also go through the executor. + /// A flag to capture if the renderer has been asked to stop by its owner. + bool m_isStopping; + + /// The id associated with the media that our MediaPlayer is currently handling. + SourceId m_currentSourceId; + + /// @} + + /** + * The @c Executor which queues up operations from asynchronous API calls. + * + * @note This declaration needs to come *after* the Executor Thread Variables above so that the thread shuts down + * before the Executor Thread Variables are destroyed. + */ avsCommon::utils::threading::Executor m_executor; }; -} // namespace renderer -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace renderer +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERER_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERER_H_ diff --git a/CapabilityAgents/Alerts/include/Alerts/Renderer/RendererInterface.h b/CapabilityAgents/Alerts/include/Alerts/Renderer/RendererInterface.h index 2e7bb29ddd..d03af34a74 100644 --- a/CapabilityAgents/Alerts/include/Alerts/Renderer/RendererInterface.h +++ b/CapabilityAgents/Alerts/include/Alerts/Renderer/RendererInterface.h @@ -1,7 +1,5 @@ /* - * RendererInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,12 +13,14 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERERINTERFACE_H_ #include "Alerts/Renderer/RendererObserverInterface.h" #include +#include +#include #include #include @@ -45,7 +45,8 @@ class RendererInterface { * * @param observer The observer. */ - virtual void setObserver(capabilityAgents::alerts::renderer::RendererObserverInterface* observer) = 0; + virtual void setObserver( + std::shared_ptr observer) = 0; /** * Start rendering. This api takes two sets of parameters - a local audio file, and a vector of urls. @@ -60,15 +61,17 @@ class RendererInterface { * * TODO : ACSDK-389 Investigate changing explicit file paths to a std::istream-based interface. * - * @param localAudioFilePath The file to be rendered. + * @param audioFactory A function that produces a unique stream of audio that is used for the default if nothing + * else is available. * @param urls A container of urls to be rendered per the above description. * @param loopCount The number of times the urls should be rendered. * @param loopPauseInMilliseconds The number of milliseconds to pause between rendering url sequences. */ - virtual void start(const std::string & localAudioFilePath, - const std::vector & urls = std::vector(), - int loopCount = 0, - std::chrono::milliseconds loopPauseInMilliseconds = std::chrono::milliseconds(0)) = 0; + virtual void start( + std::function()> audioFactory, + const std::vector& urls = std::vector(), + int loopCount = 0, + std::chrono::milliseconds loopPause = std::chrono::milliseconds{0}) = 0; /** * Stop rendering. @@ -76,9 +79,9 @@ class RendererInterface { virtual void stop() = 0; }; -} // namespace renderer -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace renderer +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERER_INTERFACE_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERERINTERFACE_H_ diff --git a/CapabilityAgents/Alerts/include/Alerts/Renderer/RendererObserverInterface.h b/CapabilityAgents/Alerts/include/Alerts/Renderer/RendererObserverInterface.h index c5d6a76720..c525b95440 100644 --- a/CapabilityAgents/Alerts/include/Alerts/Renderer/RendererObserverInterface.h +++ b/CapabilityAgents/Alerts/include/Alerts/Renderer/RendererObserverInterface.h @@ -1,7 +1,5 @@ /* - * RendererObserverInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERER_OBSERVER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERER_OBSERVER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDEREROBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDEREROBSERVERINTERFACE_H_ #include @@ -40,6 +38,8 @@ class RendererObserverInterface { STARTED, /// The renderer has stopped rendering due to being stopped via a direct api call. STOPPED, + /// The renderer has completed rendering, if the renderer was initiated with a finite loop count. + COMPLETED, /// The renderer has encountered an error. ERROR }; @@ -55,12 +55,47 @@ class RendererObserverInterface { * @param state The current state of the renderer. * @param reason The reason for the change of state, if required. This is typically set on an error. */ - virtual void onRendererStateChange(State state, const std::string & reason = "") = 0; + virtual void onRendererStateChange(State state, const std::string& reason = "") = 0; + + /** + * Convert a @c State to a @c std::string. + * + * @param state The @c State to convert. + * @return The string representation of @c state. + */ + static std::string stateToString(State state); }; -} // namespace renderer -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK +inline std::string RendererObserverInterface::stateToString(State state) { + switch (state) { + case State::UNSET: + return "UNSET"; + case State::STARTED: + return "STARTED"; + case State::STOPPED: + return "STOPPED"; + case State::COMPLETED: + return "COMPLETED"; + case State::ERROR: + return "ERROR"; + } + return "unknown State"; +} + +/** + * Write a @c State value to an @c ostream. + * + * @param stream The stream to write the value to. + * @param state The @c State value to write to the @c ostream as a string. + * @return The @c ostream that was passed in and written to. + */ +inline std::ostream& operator<<(std::ostream& stream, const RendererObserverInterface::State& state) { + return stream << RendererObserverInterface::stateToString(state); +} + +} // namespace renderer +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDERER_OBSERVER_INTERFACE_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_RENDERER_RENDEREROBSERVERINTERFACE_H_ diff --git a/CapabilityAgents/Alerts/include/Alerts/Storage/AlertStorageInterface.h b/CapabilityAgents/Alerts/include/Alerts/Storage/AlertStorageInterface.h index 36e0cfd5ac..c457ed8bbb 100644 --- a/CapabilityAgents/Alerts/include/Alerts/Storage/AlertStorageInterface.h +++ b/CapabilityAgents/Alerts/include/Alerts/Storage/AlertStorageInterface.h @@ -1,7 +1,5 @@ /* - * AlertStorageInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_STORAGE_SQLITE_ALERT_STORAGE_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_STORAGE_SQLITE_ALERT_STORAGE_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_STORAGE_ALERTSTORAGEINTERFACE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_STORAGE_ALERTSTORAGEINTERFACE_H_ #include "Alerts/Alert.h" @@ -41,46 +39,29 @@ class AlertStorageInterface { virtual ~AlertStorageInterface() = default; /** - * Creates a new database with the given filepath. - * If the file specified already exists, or if a database is already being handled by this object, then - * this function returns false. - * - * @param filePath The path to the file which will be used to contain the database. - * @return @c true If the database is created ok, or @c false if either the file exists or a database is already - * being handled by this object. - */ - virtual bool createDatabase(const std::string & filePath) = 0; - - /** - * Open a database with the given filepath. If this object is already managing an open database, or the file - * does not exist, or there is a problem opening the database, this function returns false. + * Creates a new database. + * If a database is already being handled by this object or there is another internal error, then this function + * returns false. * - * @param filePath The path to the file which will be used to contain the database. - * @return @c true If the database is opened ok, @c false if either the file does not exist, if this object is - * already managing an open database, or if there is another internal reason the database could not be opened. + * @return @c true If the database is created ok, or @c false if a database is already being handled by this object + * or there is a problem creating the database. */ - virtual bool open(const std::string & filePath) = 0; + virtual bool createDatabase() = 0; /** - * Query if this object is currently managing an open database. + * Open an existing database. If this object is already managing an open database, or there is a problem opening + * the database, this function returns false. * - * @return @c true If a database is being currently managed by this object, @c false otherwise. + * @return @c true If the database is opened ok, @c false if this object is already managing an open database, or if + * there is another internal reason the database could not be opened. */ - virtual bool isOpen() = 0; + virtual bool open() = 0; /** * Close the currently open database, if one is open. */ virtual void close() = 0; - /** - * Query whether an alert is currently stored with the given token. - * - * @param token The AVS token which uniquely identifies an alert. - * @return @c true If the alert is stored in the database, @c false otherwise. - */ - virtual bool alertExists(const std::string & token) = 0; - /** * Stores a single @c Alert in the database. * @@ -99,9 +80,8 @@ class AlertStorageInterface { /** * Updates a database record of the @c Alert parameter. - * The fields which are updated by this operation are the state and scheduled times of the alert. - * All other fields of an alert do not change over time, and so will not be captured in the database - * when calling this function. + * The fields which are updated by this operation are the state and scheduled times of the alert. All other fields + * of an alert do not change over time, and so will not be captured in the database when calling this function. * * @param alert The @c Alert to be modified. * @return Whether the @c Alert was successfully modified. @@ -116,18 +96,6 @@ class AlertStorageInterface { */ virtual bool erase(std::shared_ptr alert) = 0; - /** - * Erases a collection of alerts from the database. - * NOTE: The input to this function is expected to be a collection of database-ids for each row in the - * alerts table. This is different from the 'token' which AVS uses to identify an alert. The reason for - * this decision is that database operations should be more efficient overall when keying off a small integer, - * rather than a long string. - * - * @param alertDbIds A container of alert ids. - * @return Whether the alerts were successfully erased. - */ - virtual bool erase(const std::vector & alertDbIds) = 0; - /** * A utility function to clear the database of all records. Note that the database will still exist, as will * the tables. Only the rows will be erased. @@ -135,29 +103,11 @@ class AlertStorageInterface { * @return Whether the database was successfully cleared. */ virtual bool clearDatabase() = 0; - - /** - * An enum class to help debug database contents. This type is used in the printStats function below. - */ - enum class StatLevel { - /// Print only a single line, providing a count of rows from each table. - ONE_LINE, - /// Print all details of the Alerts table, summarizing the other tables. - ALERTS_SUMMARY, - /// Print all details of all records. - EVERYTHING - }; - - /** - * A utility function to print the contents of the database to the SDK logger output. - * This function is provided for debug use only. - */ - virtual void printStats(StatLevel level = StatLevel::ONE_LINE) = 0; }; -} // namespace storage -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace storage +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_STORAGE_SQLITE_ALERT_STORAGE_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_STORAGE_ALERTSTORAGEINTERFACE_H_ diff --git a/CapabilityAgents/Alerts/include/Alerts/Storage/SQLiteAlertStorage.h b/CapabilityAgents/Alerts/include/Alerts/Storage/SQLiteAlertStorage.h index a1ad19082a..bf91f3ddbc 100644 --- a/CapabilityAgents/Alerts/include/Alerts/Storage/SQLiteAlertStorage.h +++ b/CapabilityAgents/Alerts/include/Alerts/Storage/SQLiteAlertStorage.h @@ -1,7 +1,5 @@ /* - * SQLiteAlertStorage.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,12 +13,16 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_STORAGE_SQLITE_ALERT_STORAGE_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_STORAGE_SQLITE_ALERT_STORAGE_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_STORAGE_SQLITEALERTSTORAGE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_STORAGE_SQLITEALERTSTORAGE_H_ #include "Alerts/Storage/AlertStorageInterface.h" -#include +#include + +#include +#include +#include namespace alexaClientSDK { namespace capabilityAgents { @@ -36,20 +38,27 @@ namespace storage { class SQLiteAlertStorage : public AlertStorageInterface { public: /** - * Constructor. + * Factory method for creating a storage object for Alerts based on an SQLite database. + * + * @param configurationRoot The global config object. + * @param alertsAudioFactory A factory that can produce default alert sounds. + * @return Pointer to the SQLiteAlertStorage object, nullptr if there's an error creating it. */ - SQLiteAlertStorage(); + static std::unique_ptr create( + const avsCommon::utils::configuration::ConfigurationNode& configurationRoot, + const std::shared_ptr& alertsAudioFactory); - bool createDatabase(const std::string & filePath) override; + /** + * On destruction, close the underlying database. + */ + ~SQLiteAlertStorage(); - bool open(const std::string & filePath) override; + bool createDatabase() override; - bool isOpen() override; + bool open() override; void close() override; - bool alertExists(const std::string & token) override; - bool store(std::shared_ptr alert) override; bool load(std::vector>* alertContainer) override; @@ -58,20 +67,77 @@ class SQLiteAlertStorage : public AlertStorageInterface { bool erase(std::shared_ptr alert) override; - bool erase(const std::vector & alertDbIds) override; - bool clearDatabase() override; - void printStats(StatLevel level) override; + /** + * An enum class to help debug database contents. This type is used in the printStats function below. + */ + enum class StatLevel { + /// Print only a single line, providing a count of rows from each table. + ONE_LINE, + /// Print all details of the Alerts table, summarizing the other tables. + ALERTS_SUMMARY, + /// Print all details of all records. + EVERYTHING + }; + + /** + * A utility function to print the contents of the database to the SDK logger output. + * This function is provided for debug use only. + */ + void printStats(StatLevel level = StatLevel::ONE_LINE); private: - /// The sqlite database handle. - sqlite3* m_dbHandle; + /** + * Constructor. + * + * @param dbFilePath The location of the SQLite database file. + * @param alertsAudioFactory A factory that can produce default alert sounds. + */ + SQLiteAlertStorage( + const std::string& dbFilePath, + const std::shared_ptr& alertsAudioFactory); + + /** + * Utility function to migrate an existing V1 Alerts database file to the V2 format. + * + * The expectation for V2 is that a table with the name 'alerts_v2' exists. + * + * If this table does not exist, then this function will create it, and the additional tables that V2 expects, + * and then load all alerts from the V1 table and save them into the V2 table. + * + * @return Whether the migration was successful. Returns true by default if the db is already V2. + */ + bool migrateAlertsDbFromV1ToV2(); + + /** + * A utility function to help us load alerts from different versions of the alerts table. Currently, versions + * 1 and 2 are supported. + * + * @param dbVersion The version of the database we wish to load from. + * @param[out] alertContainer The container where alerts should be stored. + * @return Whether the alerts were loaded ok. + */ + bool loadHelper(int dbVersion, std::vector>* alertContainer); + + /** + * Query whether an alert is currently stored with the given token. + * + * @param token The AVS token which uniquely identifies an alert. + * @return @c true If the alert is stored in the database, @c false otherwise. + */ + bool alertExists(const std::string& token); + + /// A member that stores a factory that produces audio streams for alerts. + std::shared_ptr m_alertsAudioFactory; + + /// The underlying database class. + alexaClientSDK::storage::sqliteStorage::SQLiteDatabase m_db; }; -} // namespace storage -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace storage +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_STORAGE_SQLITE_ALERT_STORAGE_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_STORAGE_SQLITEALERTSTORAGE_H_ diff --git a/CapabilityAgents/Alerts/include/Alerts/Timer.h b/CapabilityAgents/Alerts/include/Alerts/Timer.h index 4dee55ae24..6cb65ccb58 100644 --- a/CapabilityAgents/Alerts/include/Alerts/Timer.h +++ b/CapabilityAgents/Alerts/include/Alerts/Timer.h @@ -1,7 +1,5 @@ /* - * Timer.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_TIMER_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_TIMER_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_TIMER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_TIMER_H_ #include "Alerts/Alert.h" @@ -25,42 +23,33 @@ namespace capabilityAgents { namespace alerts { /** - * A Timer class. + * A Timer class. This represents an alert which the user wishes to activate at a point in time relative to the + * current time. This is different from requesting an alert at an absolute point in time. + * + * Timers may be basic, or named. If named, they will use custom assets at the point of activation. + * + * Example of basic timer use: + * "Alexa, set a timer for 10 seconds." + * 10 seconds later : device will render a simple audio file, local to the device, to alert the user. + * + * Example of named timer use: + * "Alexa, set an egg timer for 10 seconds" + * 10 seconds later : Alexa will say something like "Your egg timer is complete". */ class Timer : public Alert { public: /// String representation of this type. static const std::string TYPE_NAME; - /** - * A static function to set the default audio file path for this type of alert. - * - * @param filePath The path to the audio file. - */ - static void setDefaultAudioFilePath(const std::string & filePath); - - /** - * A static function to set the short audio file path for this type of alert. - * - * @param filePath The path to the audio file. - */ - static void setDefaultShortAudioFilePath(const std::string & filePath); - - std::string getDefaultAudioFilePath() const override; - - std::string getDefaultShortAudioFilePath() const override; + Timer( + std::function()> defaultAudioFactory, + std::function()> shortAudioFactory); std::string getTypeName() const override; - -private: - /// The class-level audio file path. - static std::string m_defaultAudioFilePath; - /// The class-level short audio file path. - static std::string m_defaultShortAudioFilePath; }; -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_ALERTS_INCLUDE_ALERTS_TIMER_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_ALERTS_INCLUDE_ALERTS_TIMER_H_ diff --git a/CapabilityAgents/Alerts/src/Alarm.cpp b/CapabilityAgents/Alerts/src/Alarm.cpp index bbb73b95f4..043ecdd329 100644 --- a/CapabilityAgents/Alerts/src/Alarm.cpp +++ b/CapabilityAgents/Alerts/src/Alarm.cpp @@ -1,19 +1,16 @@ /* - * Alarm.cpp + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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 "Alerts/Alarm.h" @@ -22,33 +19,19 @@ namespace alexaClientSDK { namespace capabilityAgents { namespace alerts { -/// Definition for static class data member. -std::string Alarm::m_defaultAudioFilePath; -/// Definition for static class data member. -std::string Alarm::m_defaultShortAudioFilePath; /// Definition for static class data member. const std::string Alarm::TYPE_NAME = "ALARM"; -void Alarm::setDefaultAudioFilePath(const std::string & filePath) { - m_defaultAudioFilePath = filePath; -} - -void Alarm::setDefaultShortAudioFilePath(const std::string & filePath) { - m_defaultShortAudioFilePath = filePath; -} - -std::string Alarm::getDefaultAudioFilePath() const { - return m_defaultAudioFilePath; -} - -std::string Alarm::getDefaultShortAudioFilePath() const { - return m_defaultShortAudioFilePath; +Alarm::Alarm( + std::function()> defaultAudioFactory, + std::function()> shortAudioFactory) : + Alert(defaultAudioFactory, shortAudioFactory) { } std::string Alarm::getTypeName() const { return TYPE_NAME; } -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK \ No newline at end of file +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Alerts/src/Alert.cpp b/CapabilityAgents/Alerts/src/Alert.cpp index 9dcd35c303..a45809e3c4 100644 --- a/CapabilityAgents/Alerts/src/Alert.cpp +++ b/CapabilityAgents/Alerts/src/Alert.cpp @@ -1,20 +1,17 @@ /* -* Alert.cpp -* -* Copyright 2017 Amazon.com, Inc. or its affiliates. -* -* 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. -*/ + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "Alerts/Alert.h" @@ -27,9 +24,9 @@ #include #include -#include - +#include #include +#include namespace alexaClientSDK { namespace capabilityAgents { @@ -45,9 +42,22 @@ using namespace rapidjson; /// String for lookup of the token value in a parsed JSON document. static const std::string KEY_TOKEN = "token"; - /// String for lookup of the scheduled time value in a parsed JSON document. static const std::string KEY_SCHEDULED_TIME = "scheduledTime"; +/// String for lookup of the assets array in a parsed JSON document. +static const std::string KEY_ASSETS = "assets"; +/// String for lookup of the asset id within an asset object in a parsed JSON document. +static const std::string KEY_ASSET_ID = "assetId"; +/// String for lookup of the asset url within an asset object in a parsed JSON document. +static const std::string KEY_ASSET_URL = "url"; +/// String for lookup of the asset play order array in a parsed JSON document. +static const std::string KEY_ASSET_PLAY_ORDER = "assetPlayOrder"; +/// String for lookup of the loop count value in a parsed JSON document. +static const std::string KEY_LOOP_COUNT = "loopCount"; +/// String for lookup of the loop pause in milliseconds value in a parsed JSON document. +static const std::string KEY_LOOP_PAUSE_IN_MILLISECONDS = "loopPauseInMilliSeconds"; +/// String for lookup of the backgroundAssetId for an alert, if assets are provided. +static const std::string KEY_BACKGROUND_ASSET_ID = "backgroundAlertAsset"; /// We won't allow an alert to render more than 1 hour. const std::chrono::seconds MAXIMUM_ALERT_RENDERING_TIME = std::chrono::hours(1); @@ -62,122 +72,203 @@ static const std::string TAG("Alert"); */ #define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) -std::string Alert::stateToString(Alert::State state) { - switch (state) { - case Alert::State::UNSET: - return "UNSET"; - case Alert::State::SET: - return "SET"; - case Alert::State::ACTIVATING: - return "ACTIVATING"; - case Alert::State::ACTIVE: - return "ACTIVE"; - case Alert::State::SNOOZING: - return "SNOOZING"; - case Alert::State::SNOOZED: - return "SNOOZED"; - case Alert::State::STOPPING: - return "STOPPING"; - case Alert::State::STOPPED: - return "STOPPED"; - case Alert::State::COMPLETED: - return "COMPLETED"; +Alert::Alert( + std::function()> defaultAudioFactory, + std::function()> shortAudioFactory) : + m_dbId{0}, + m_state{State::SET}, + m_rendererState{RendererObserverInterface::State::UNSET}, + m_stopReason{StopReason::UNSET}, + m_focusState{avsCommon::avs::FocusState::NONE}, + m_hasTimerExpired{false}, + m_observer{nullptr}, + m_defaultAudioFactory{defaultAudioFactory}, + m_shortAudioFactory{shortAudioFactory} { +} + +/** + * Utility function to parse the optional Asset data from an AVS SetAlert Directive. The only strictly required + * fields for assets to be valid are the assets themselves (a pair of id & url), and the assetPlayOrder. If the + * other fields are missing or empty, they are ignored. If the assets are malformed or missing, or otherwise + * not complete for asset rendering, this function returns early allowing the caller to proceed as if there were no + * assets in the Directive. This allows the Alert to still serve its purpose in some capacity. + * + * @param payload The pre-parsed rapidjson::Value. + * @param[out] assetConfiguration An output parameter where the assets will be stored if parsed successfully. + * @return The status of the parse. + */ +static Alert::ParseFromJsonStatus parseAlertAssetConfigurationFromJson( + const rapidjson::Value& payload, + Alert::AssetConfiguration* assetConfiguration) { + if (!assetConfiguration) { + ACSDK_ERROR(LX("parseAlertAssetConfigurationFromJson : assetConfiguration is nullptr.")); + return Alert::ParseFromJsonStatus::OK; } - ACSDK_ERROR(LX("stateToStringFailed").m("Unhandled case:" + std::to_string(static_cast(state)))); + Alert::AssetConfiguration localAssetConfig; + bool assetInfoFoundOk = true; + int64_t loopCount = std::numeric_limits::max(); + int64_t loopPauseInMilliseconds = 0; + std::string backgroundAssetId; - return "UNKNOWN_STATE"; -} + if (!jsonArrayExists(payload, KEY_ASSETS)) { + ACSDK_DEBUG0(LX("parseAlertAssetConfigurationFromJson : assets are not present.")); + assetInfoFoundOk = false; + } + if (!jsonArrayExists(payload, KEY_ASSET_PLAY_ORDER)) { + ACSDK_DEBUG0(LX("parseAlertAssetConfigurationFromJson : asset play order is not present.")); + assetInfoFoundOk = false; + } + if (!retrieveValue(payload, KEY_LOOP_COUNT, &loopCount)) { + ACSDK_DEBUG0(LX("parseAlertAssetConfigurationFromJson : loop count is not present.")); + /* + * It's ok if this is not set. Defaults to std::numeric_limits::max() and stop it using + * onMaxTimerExpiration(), which per AVS means we render for the full hour. + */ + } + if (!retrieveValue(payload, KEY_LOOP_PAUSE_IN_MILLISECONDS, &loopPauseInMilliseconds)) { + ACSDK_DEBUG0(LX("parseAlertAssetConfigurationFromJson : loop pause in milliseconds is not present.")); + // it's ok if this is not set. + } + if (!retrieveValue(payload, KEY_BACKGROUND_ASSET_ID, &backgroundAssetId)) { + ACSDK_DEBUG0(LX("parseAlertAssetConfigurationFromJson : backgroundAssetId is not present.")); + // it's ok if this is not set. + } -std::string Alert::stopReasonToString(Alert::StopReason stopReason) { - switch (stopReason) { - case Alert::StopReason::UNSET: - return "UNSET"; - case Alert::StopReason::AVS_STOP: - return "AVS_STOP"; - case Alert::StopReason::LOCAL_STOP: - return "LOCAL_STOP"; - case Alert::StopReason::SHUTDOWN: - return "SHUTDOWN"; + // Something was missing, but these are optional fields - let's still allow the alert to be set. + if (!assetInfoFoundOk) { + return Alert::ParseFromJsonStatus::OK; } - ACSDK_ERROR(LX("stopReasonToStringFailed") - .m("Unhandled case:" + std::to_string(static_cast(stopReason)))); + auto assetJsonArray = payload.FindMember(KEY_ASSETS.c_str())->value.GetArray(); + for (rapidjson::SizeType i = 0; i < assetJsonArray.Size(); i++) { + Alert::Asset asset; + if (!retrieveValue(assetJsonArray[i], KEY_ASSET_ID, &asset.id)) { + ACSDK_WARN(LX("parseAlertAssetConfigurationFromJson : assetId is not present.")); + return Alert::ParseFromJsonStatus::OK; + } + if (!retrieveValue(assetJsonArray[i], KEY_ASSET_URL, &asset.url)) { + ACSDK_WARN(LX("parseAlertAssetConfigurationFromJson : assetUrl is not present.")); + return Alert::ParseFromJsonStatus::OK; + } - return "UNKNOWN_STOP_REASON"; -} + // the id and url strings must have content. + if (asset.id.empty() || asset.url.empty()) { + ACSDK_WARN(LX("parseAlertAssetConfigurationFromJson : invalid asset data.")); + return Alert::ParseFromJsonStatus::OK; + } -std::string Alert::parseFromJsonStatusToString(Alert::ParseFromJsonStatus parseFromJsonStatus) { - switch (parseFromJsonStatus) { - case Alert::ParseFromJsonStatus::OK: - return "OK"; - case Alert::ParseFromJsonStatus::MISSING_REQUIRED_PROPERTY: - return "MISSING_REQUIRED_PROPERTY"; - case Alert::ParseFromJsonStatus::INVALID_VALUE: - return "INVALID_VALUE"; + // duplicates aren't ok + if (assetConfiguration->assets.find(asset.id) != assetConfiguration->assets.end()) { + ACSDK_WARN(LX("parseAlertAssetConfigurationFromJson : duplicate assetId detected.")); + return Alert::ParseFromJsonStatus::OK; + } + + localAssetConfig.assets[asset.id] = asset; } - ACSDK_ERROR(LX("parseFromJsonStatusToStringFailed") - .m("Unhandled case:" + std::to_string(static_cast(parseFromJsonStatus)))); + auto playOrderItemsJsonArray = payload.FindMember(KEY_ASSET_PLAY_ORDER.c_str())->value.GetArray(); + for (rapidjson::SizeType i = 0; i < playOrderItemsJsonArray.Size(); i++) { + if (!playOrderItemsJsonArray[i].IsString()) { + ACSDK_WARN(LX("parseAlertAssetConfigurationFromJson : invalid play order item type detected.")); + return Alert::ParseFromJsonStatus::OK; + } - return "UNKNOWN_PARSE_FROM_JSON_STATUS"; -} + auto assetId = playOrderItemsJsonArray[i].GetString(); -Alert::Alert() : - m_dbId{0}, m_scheduledTime_Unix{0}, m_state{State::SET}, - m_rendererState{RendererObserverInterface::State::UNSET}, m_stopReason{StopReason::UNSET}, - m_focusState{avsCommon::avs::FocusState::NONE}, m_observer{nullptr}, m_hasTimerExpired{false} { + if (localAssetConfig.assets.find(assetId) == localAssetConfig.assets.end()) { + ACSDK_WARN(LX("parseAlertAssetConfigurationFromJson : invalid play order item - asset does not exist.")); + return Alert::ParseFromJsonStatus::OK; + } -} + localAssetConfig.assetPlayOrderItems.push_back(assetId); + } + + if (loopCount > std::numeric_limits::max()) { + ACSDK_WARN(LX("parseAlertAssetConfigurationFromJson") + .d("loopCountValue", loopCount) + .m("loopCount cannot be converted to integer.")); + return Alert::ParseFromJsonStatus::OK; + } + + localAssetConfig.loopCount = static_cast(loopCount); + localAssetConfig.loopPause = std::chrono::milliseconds{loopPauseInMilliseconds}; + localAssetConfig.backgroundAssetId = backgroundAssetId; -Alert::~Alert() { + // ok, great - let's assign to the out parameter. + *assetConfiguration = localAssetConfig; + return Alert::ParseFromJsonStatus::OK; } -Alert::ParseFromJsonStatus Alert::parseFromJson(const rapidjson::Value & payload, std::string* errorMessage) { +Alert::ParseFromJsonStatus Alert::parseFromJson(const rapidjson::Value& payload, std::string* errorMessage) { if (!retrieveValue(payload, KEY_TOKEN, &m_token)) { ACSDK_ERROR(LX("parseFromJsonFailed").m("could not parse token.")); *errorMessage = "missing property: " + KEY_TOKEN; return ParseFromJsonStatus::MISSING_REQUIRED_PROPERTY; } - if (!retrieveValue(payload, KEY_SCHEDULED_TIME, &m_scheduledTime_ISO_8601)) { + std::string parsedScheduledTime_ISO_8601; + if (!retrieveValue(payload, KEY_SCHEDULED_TIME, &parsedScheduledTime_ISO_8601)) { ACSDK_ERROR(LX("parseFromJsonFailed").m("could not parse scheduled time.")); *errorMessage = "missing property: " + KEY_SCHEDULED_TIME; return ParseFromJsonStatus::MISSING_REQUIRED_PROPERTY; } - if (!convert8601TimeStringToUnix(m_scheduledTime_ISO_8601, &m_scheduledTime_Unix)) { + if (!m_timePoint.setTime_ISO_8601(parsedScheduledTime_ISO_8601)) { ACSDK_ERROR(LX("parseFromJsonFailed") - .m("could not convert time to unix.").d("parsed time string", m_scheduledTime_ISO_8601)); + .m("could not convert time to unix.") + .d("parsed time string", parsedScheduledTime_ISO_8601)); return ParseFromJsonStatus::INVALID_VALUE; } - return ParseFromJsonStatus::OK; + return parseAlertAssetConfigurationFromJson(payload, &m_assetConfiguration); +} + +bool Alert::setTime_ISO_8601(const std::string& time_ISO_8601) { + std::lock_guard lock(m_mutex); + + return m_timePoint.setTime_ISO_8601(time_ISO_8601); } void Alert::setRenderer(std::shared_ptr renderer) { + std::lock_guard lock(m_mutex); + + if (m_renderer) { + ACSDK_ERROR(LX("setRendererFailed").m("Renderer is already set.")); + return; + } m_renderer = renderer; } void Alert::setObserver(AlertObserverInterface* observer) { + std::lock_guard lock(m_mutex); + m_observer = observer; } void Alert::setFocusState(FocusState focusState) { + std::unique_lock lock(m_mutex); + auto rendererCopy = m_renderer; + auto alertState = m_state; + if (focusState == m_focusState) { return; } m_focusState = focusState; - if (State::ACTIVE == m_state) { - m_renderer->stop(); + lock.unlock(); + + if (State::ACTIVE == alertState) { + rendererCopy->stop(); startRenderer(); } } bool Alert::setStateActive() { + std::lock_guard lock(m_mutex); + if (State::ACTIVATING != m_state) { ACSDK_ERROR(LX("setStateActiveFailed").d("current state", stateToString(m_state))); return false; @@ -188,10 +279,14 @@ bool Alert::setStateActive() { } void Alert::reset() { + std::lock_guard lock(m_mutex); m_state = Alert::State::SET; } void Alert::activate() { + ACSDK_DEBUG9(LX("activate")); + std::unique_lock lock(m_mutex); + if (Alert::State::ACTIVATING == m_state || Alert::State::ACTIVE == m_state) { ACSDK_ERROR(LX("activateFailed").m("Alert is already active.")); return; @@ -200,66 +295,111 @@ void Alert::activate() { m_state = Alert::State::ACTIVATING; if (!m_maxLengthTimer.isActive()) { - if (!m_maxLengthTimer.start( - MAXIMUM_ALERT_RENDERING_TIME, std::bind(&Alert::onMaxTimerExpiration, this)).valid()) { + if (!m_maxLengthTimer.start(MAXIMUM_ALERT_RENDERING_TIME, std::bind(&Alert::onMaxTimerExpiration, this)) + .valid()) { ACSDK_ERROR(LX("executeStartFailed").d("reason", "startTimerFailed")); } } + lock.unlock(); + startRenderer(); } -void Alert::deActivate(StopReason reason) { +void Alert::deactivate(StopReason reason) { + ACSDK_DEBUG9(LX("deactivate").d("reason", reason)); + std::unique_lock lock(m_mutex); + auto rendererCopy = m_renderer; + m_state = Alert::State::STOPPING; m_stopReason = reason; m_maxLengthTimer.stop(); - m_renderer->stop(); + + lock.unlock(); + + rendererCopy->stop(); } -void Alert::onRendererStateChange(RendererObserverInterface::State state, const std::string & reason) { +void Alert::onRendererStateChange(RendererObserverInterface::State state, const std::string& reason) { + ACSDK_DEBUG1(LX("onRendererStateChange") + .d("state", state) + .d("reason", reason) + .d("m_hasTimerExpired", m_hasTimerExpired) + .d("m_state", m_state)); + bool shouldNotifyObserver = false; + bool shouldRetryRendering = false; + AlertObserverInterface::State notifyState = AlertObserverInterface::State::ERROR; + std::string notifyReason; + + std::unique_lock lock(m_mutex); + auto observerCopy = m_observer; + switch (state) { case RendererObserverInterface::State::UNSET: // no-op break; case RendererObserverInterface::State::STARTED: - if (State::ACTIVATING == m_state && m_observer) { + if (State::ACTIVATING == m_state) { + shouldNotifyObserver = true; + notifyState = AlertObserverInterface::State::STARTED; // NOTE : we don't update state to ACTIVE here. We leave it as ACTIVATED, allowing our owning // object to set the state to active when it chooses to. - - m_observer->onAlertStateChange(m_token, AlertObserverInterface::State::STARTED); } break; case RendererObserverInterface::State::STOPPED: if (m_hasTimerExpired) { m_state = State::COMPLETED; - if (m_observer) { - m_observer->onAlertStateChange(m_token, AlertObserverInterface::State::COMPLETED); - } + shouldNotifyObserver = true; + notifyState = AlertObserverInterface::State::COMPLETED; } else { if (Alert::State::STOPPING == m_state) { m_state = State::STOPPED; - if (m_observer) { - m_observer->onAlertStateChange(m_token, AlertObserverInterface::State::STOPPED); - } + shouldNotifyObserver = true; + notifyState = AlertObserverInterface::State::STOPPED; + notifyReason = stopReasonToString(m_stopReason); } else if (Alert::State::SNOOZING == m_state) { m_state = State::SNOOZED; - if (m_observer) { - m_observer->onAlertStateChange(m_token, AlertObserverInterface::State::SNOOZED); - } + shouldNotifyObserver = true; + notifyState = AlertObserverInterface::State::SNOOZED; } } break; + case RendererObserverInterface::State::COMPLETED: + m_state = State::COMPLETED; + shouldNotifyObserver = true; + notifyState = AlertObserverInterface::State::COMPLETED; + break; + case RendererObserverInterface::State::ERROR: - if (m_observer) { - m_observer->onAlertStateChange(m_token, AlertObserverInterface::State::ERROR, reason); + // If the renderer failed while handling a url, let's presume there are network issues and render + // the on-device background audio sound instead. + if (!m_assetConfiguration.assetPlayOrderItems.empty() && !m_assetConfiguration.hasRenderingFailed) { + ACSDK_ERROR(LX("onRendererStateChangeFailed") + .d("reason", reason) + .m("Renderer failed to handle a url. Retrying with local background audio sound.")); + m_assetConfiguration.hasRenderingFailed = true; + shouldRetryRendering = true; + } else { + shouldNotifyObserver = true; + notifyState = AlertObserverInterface::State::ERROR; + notifyReason = reason; } - break; } + + lock.unlock(); + + if (shouldNotifyObserver && observerCopy) { + observerCopy->onAlertStateChange(m_token, notifyState, notifyReason); + } + + if (shouldRetryRendering) { + startRenderer(); + } } std::string Alert::getToken() const { @@ -267,65 +407,247 @@ std::string Alert::getToken() const { } int64_t Alert::getScheduledTime_Unix() const { - return m_scheduledTime_Unix; + std::lock_guard lock(m_mutex); + return m_timePoint.getTime_Unix(); } std::string Alert::getScheduledTime_ISO_8601() const { - return m_scheduledTime_ISO_8601; + std::lock_guard lock(m_mutex); + return getScheduledTime_ISO_8601Locked(); +} + +std::string Alert::getScheduledTime_ISO_8601Locked() const { + return m_timePoint.getTime_ISO_8601(); } Alert::State Alert::getState() const { + std::lock_guard lock(m_mutex); return m_state; } int Alert::getId() const { + std::lock_guard lock(m_mutex); return m_dbId; } -void Alert::printDiagnostic() { - ACSDK_INFO(LX(" ** Alert | id:" + std::to_string(m_dbId))); - ACSDK_INFO(LX(" | type:" + getTypeName())); - ACSDK_INFO(LX(" | token:" + m_token)); - ACSDK_INFO(LX(" | scheduled time (8601):" + m_scheduledTime_ISO_8601)); - ACSDK_INFO(LX(" | scheduled time (Unix):" + std::to_string(m_scheduledTime_Unix))); - ACSDK_INFO(LX(" | state:" + stateToString(m_state))); -} +void Alert::snooze(const std::string& updatedScheduledTime_ISO_8601) { + std::unique_lock lock(m_mutex); + auto rendererCopy = m_renderer; -void Alert::startRenderer() { - std::string fileName = getDefaultAudioFilePath(); - if (avsCommon::avs::FocusState::BACKGROUND == m_focusState) { - fileName = getDefaultShortAudioFilePath(); + if (!m_timePoint.setTime_ISO_8601(updatedScheduledTime_ISO_8601)) { + ACSDK_ERROR(LX("snoozeFailed").m("could not convert time string").d("value", updatedScheduledTime_ISO_8601)); + return; } - m_renderer->setObserver(this); - m_renderer->start(fileName); + m_state = State::SNOOZING; + lock.unlock(); + + rendererCopy->stop(); +} + +Alert::StopReason Alert::getStopReason() const { + std::lock_guard lock(m_mutex); + return m_stopReason; +} + +int Alert::getLoopCount() const { + std::lock_guard lock(m_mutex); + return m_assetConfiguration.loopCount; +} + +std::chrono::milliseconds Alert::getLoopPause() const { + std::lock_guard lock(m_mutex); + return m_assetConfiguration.loopPause; } -void Alert::snooze(const std::string & updatedScheduledTime_ISO_8601) { - int64_t unixTime = 0; - if (!convert8601TimeStringToUnix(updatedScheduledTime_ISO_8601, &unixTime)) { - ACSDK_ERROR(LX("setScheduledTime_ISO_8601Failed") - .m("could not convert time string").d("value", updatedScheduledTime_ISO_8601)); +std::string Alert::getBackgroundAssetId() const { + std::lock_guard lock(m_mutex); + return m_assetConfiguration.backgroundAssetId; +} + +void Alert::setLoopCount(int loopCount) { + if (loopCount < 0) { + ACSDK_ERROR(LX("setLoopCountFailed").d("loopCountValue", loopCount).m("loopCount less than zero.")); return; } + std::lock_guard lock(m_mutex); + m_assetConfiguration.loopCount = loopCount; +} - m_scheduledTime_ISO_8601 = updatedScheduledTime_ISO_8601; - m_scheduledTime_Unix = unixTime; +void Alert::setLoopPause(std::chrono::milliseconds ms) { + std::lock_guard lock(m_mutex); + m_assetConfiguration.loopPause = ms; +} - m_state = State::SNOOZING; - m_renderer->stop(); +void Alert::setBackgroundAssetId(const std::string& backgroundAssetId) { + std::lock_guard lock(m_mutex); + m_assetConfiguration.backgroundAssetId = backgroundAssetId; } -Alert::StopReason Alert::getStopReason() const { - return m_stopReason; +Alert::AssetConfiguration Alert::getAssetConfiguration() const { + std::lock_guard lock(m_mutex); + return m_assetConfiguration; +} + +void Alert::startRenderer() { + ACSDK_DEBUG9(LX("startRenderer")); + std::vector urls; + + std::unique_lock lock(m_mutex); + auto rendererCopy = m_renderer; + auto loopCount = m_assetConfiguration.loopCount; + auto loopPause = m_assetConfiguration.loopPause; + + // If there are no assets to play (due to the alert not providing any assets), or there was a previous error + // (indicated by m_assetConfiguration.hasRenderingFailed), we call rendererCopy->start(..) with an empty vector of + // urls. This causes the default audio to be rendered. + auto audioFactory = getDefaultAudioFactory(); + if (avsCommon::avs::FocusState::BACKGROUND == m_focusState) { + audioFactory = getShortAudioFactory(); + if (!m_assetConfiguration.backgroundAssetId.empty() && !m_assetConfiguration.hasRenderingFailed) { + urls.push_back(m_assetConfiguration.assets[m_assetConfiguration.backgroundAssetId].url); + } + } else if (!m_assetConfiguration.assets.empty() && !m_assetConfiguration.hasRenderingFailed) { + // Only play the named timer urls when it's in foreground. + for (auto item : m_assetConfiguration.assetPlayOrderItems) { + urls.push_back(m_assetConfiguration.assets[item].url); + } + } + + lock.unlock(); + + rendererCopy->setObserver(shared_from_this()); + rendererCopy->start(audioFactory, urls, loopCount, loopPause); } void Alert::onMaxTimerExpiration() { + ACSDK_DEBUG1(LX("onMaxTimerExpiration")); + std::unique_lock lock(m_mutex); + auto rendererCopy = m_renderer; m_state = Alert::State::STOPPING; m_hasTimerExpired = true; - m_renderer->stop(); + + lock.unlock(); + + rendererCopy->stop(); +} + +bool Alert::isPastDue(int64_t currentUnixTime, std::chrono::seconds timeLimit) { + std::lock_guard lock(m_mutex); + + int64_t cutoffTime = currentUnixTime - timeLimit.count(); + + return (m_timePoint.getTime_Unix() < cutoffTime); +} + +std::function()> Alert::getDefaultAudioFactory() const { + return m_defaultAudioFactory; +} + +std::function()> Alert::getShortAudioFactory() const { + return m_shortAudioFactory; +} + +Alert::ContextInfo Alert::getContextInfo() const { + std::lock_guard lock(m_mutex); + + return ContextInfo(m_token, getTypeName(), getScheduledTime_ISO_8601Locked()); +} + +std::string Alert::stateToString(Alert::State state) { + switch (state) { + case Alert::State::UNSET: + return "UNSET"; + case Alert::State::SET: + return "SET"; + case Alert::State::READY: + return "READY"; + case Alert::State::ACTIVATING: + return "ACTIVATING"; + case Alert::State::ACTIVE: + return "ACTIVE"; + case Alert::State::SNOOZING: + return "SNOOZING"; + case Alert::State::SNOOZED: + return "SNOOZED"; + case Alert::State::STOPPING: + return "STOPPING"; + case Alert::State::STOPPED: + return "STOPPED"; + case Alert::State::COMPLETED: + return "COMPLETED"; + } + + ACSDK_ERROR(LX("stateToStringFailed").d("unhandledCase", state)); + + return "UNKNOWN_STATE"; +} + +std::string Alert::stopReasonToString(Alert::StopReason stopReason) { + switch (stopReason) { + case Alert::StopReason::UNSET: + return "UNSET"; + case Alert::StopReason::AVS_STOP: + return "AVS_STOP"; + case Alert::StopReason::LOCAL_STOP: + return "LOCAL_STOP"; + case Alert::StopReason::SHUTDOWN: + return "SHUTDOWN"; + case Alert::StopReason::LOG_OUT: + return "LOG_OUT"; + } + + ACSDK_ERROR(LX("stopReasonToStringFailed").d("unhandledCase", stopReason)); + + return "UNKNOWN_STOP_REASON"; +} + +std::string Alert::parseFromJsonStatusToString(Alert::ParseFromJsonStatus parseFromJsonStatus) { + switch (parseFromJsonStatus) { + case Alert::ParseFromJsonStatus::OK: + return "OK"; + case Alert::ParseFromJsonStatus::MISSING_REQUIRED_PROPERTY: + return "MISSING_REQUIRED_PROPERTY"; + case Alert::ParseFromJsonStatus::INVALID_VALUE: + return "INVALID_VALUE"; + } + + ACSDK_ERROR(LX("parseFromJsonStatusToStringFailed").d("unhandledCase", parseFromJsonStatus)); + + return "UNKNOWN_PARSE_FROM_JSON_STATUS"; +} + +void Alert::printDiagnostic() { + std::string assetInfoString; + for (auto asset : m_assetConfiguration.assets) { + assetInfoString += "\nid:" + asset.second.id + ", url:" + asset.second.url; + } + + std::string assetPlayOrderItemsInfoString; + for (auto assetOrderItem : m_assetConfiguration.assetPlayOrderItems) { + assetPlayOrderItemsInfoString += "id:" + assetOrderItem + ", "; + } + + std::stringstream ss; + + ss << std::endl + << " ** Alert | id:" << std::to_string(m_dbId) << std::endl + << " | type:" << getTypeName() << std::endl + << " | token:" << m_token << std::endl + << " | scheduled time (8601):" << getScheduledTime_ISO_8601() << std::endl + << " | scheduled time (Unix):" << getScheduledTime_Unix() << std::endl + << " | state:" << stateToString(m_state) << std::endl + << " | number assets:" << m_assetConfiguration.assets.size() << std::endl + << " | number assets play order items:" << m_assetConfiguration.assetPlayOrderItems.size() << std::endl + << " | asset info:" << assetInfoString << std::endl + << " | asset order info:" << assetPlayOrderItemsInfoString << std::endl + << " | background asset id:" << m_assetConfiguration.backgroundAssetId << std::endl + << " | loop count:" << m_assetConfiguration.loopCount << std::endl + << " | loop pause in milliseconds:" << m_assetConfiguration.loopPause.count() << std::endl; + + ACSDK_INFO(LX(ss.str())); } -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK \ No newline at end of file +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Alerts/src/AlertScheduler.cpp b/CapabilityAgents/Alerts/src/AlertScheduler.cpp new file mode 100644 index 0000000000..186f6f1f4a --- /dev/null +++ b/CapabilityAgents/Alerts/src/AlertScheduler.cpp @@ -0,0 +1,487 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "Alerts/AlertScheduler.h" + +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace alerts { + +using namespace avsCommon::avs; +using namespace avsCommon::utils::logger; +using namespace avsCommon::utils::timing; + +/// String to identify log entries originating from this file. +static const std::string TAG("AlertScheduler"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +AlertScheduler::AlertScheduler( + std::shared_ptr alertStorage, + std::shared_ptr alertRenderer, + std::chrono::seconds alertPastDueTimeLimit) : + m_alertStorage{alertStorage}, + m_alertRenderer{alertRenderer}, + m_alertPastDueTimeLimit{alertPastDueTimeLimit}, + m_focusState{avsCommon::avs::FocusState::NONE} { +} + +void AlertScheduler::onAlertStateChange(const std::string& alertToken, State state, const std::string& reason) { + ACSDK_DEBUG9(LX("onAlertStateChange").d("alertToken", alertToken).d("state", state).d("reason", reason)); + m_executor.submit([this, alertToken, state, reason]() { executeOnAlertStateChange(alertToken, state, reason); }); +} + +bool AlertScheduler::initialize(std::shared_ptr observer) { + if (!observer) { + ACSDK_ERROR(LX("initializeFailed").m("observer was nullptr.")); + return false; + } + + m_observer = observer; + + if (!m_alertStorage->open()) { + ACSDK_INFO(LX("initialize").m("Couldn't open database. Creating.")); + if (!m_alertStorage->createDatabase()) { + ACSDK_ERROR(LX("initializeFailed").m("Could not create database.")); + return false; + } + } + + int64_t unixEpochNow = 0; + if (!m_timeUtils.getCurrentUnixTime(&unixEpochNow)) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "could not get current unix time.")); + return false; + } + + std::vector> alerts; + + std::unique_lock lock(m_mutex); + m_alertStorage->load(&alerts); + + for (auto& alert : alerts) { + if (alert->isPastDue(unixEpochNow, m_alertPastDueTimeLimit)) { + std::string alertToken = alert->getToken(); + notifyObserver(alertToken, AlertObserverInterface::State::PAST_DUE); + m_alertStorage->erase(alert); + } else { + // if it was active when the system last powered down, then re-init the state to set + if (Alert::State::ACTIVE == alert->getState()) { + alert->reset(); + m_alertStorage->modify(alert); + } + + alert->setRenderer(m_alertRenderer); + alert->setObserver(this); + + m_scheduledAlerts.insert(alert); + } + } + + lock.unlock(); + + setTimerForNextAlert(); + return true; +} + +bool AlertScheduler::scheduleAlert(std::shared_ptr alert) { + ACSDK_DEBUG9(LX("scheduleAlert")); + int64_t unixEpochNow = 0; + if (!m_timeUtils.getCurrentUnixTime(&unixEpochNow)) { + ACSDK_ERROR(LX("scheduleAlertFailed").d("reason", "could not get current unix time.")); + return false; + } + + std::lock_guard lock(m_mutex); + + if (getAlertLocked(alert->getToken())) { + // This is the best default behavior. If we send SetAlertFailed for a duplicate Alert, + // then AVS will follow up with a DeleteAlert Directive - just to ensure the client does not + // have a bad version of the Alert hanging around. We already have the Alert, so let's return true, + // so that SetAlertSucceeded will be sent back to AVS. + ACSDK_INFO(LX("scheduleAlert").m("Duplicate SetAlert from AVS.")); + return true; + } + + if (alert->isPastDue(unixEpochNow, m_alertPastDueTimeLimit)) { + ACSDK_ERROR(LX("scheduleAlertFailed").d("reason", "parsed alert is past-due. Ignoring.")); + return false; + } + + // it's a new alert. + if (!m_alertStorage->store(alert)) { + ACSDK_ERROR(LX("scheduleAlertFailed").d("reason", "could not store alert in database.")); + return false; + } + alert->setRenderer(m_alertRenderer); + alert->setObserver(this); + m_scheduledAlerts.insert(alert); + + if (!m_activeAlert) { + setTimerForNextAlertLocked(); + } + + return true; +} + +bool AlertScheduler::snoozeAlert(const std::string& alertToken, const std::string& updatedTime_ISO_8601) { + std::lock_guard lock(m_mutex); + + if (!m_activeAlert || m_activeAlert->getToken() != alertToken) { + ACSDK_ERROR(LX("snoozeAlertFailed").m("alert is not active.").d("token", alertToken)); + return false; + } + + m_activeAlert->snooze(updatedTime_ISO_8601); + + return true; +} + +bool AlertScheduler::deleteAlert(const std::string& alertToken) { + ACSDK_DEBUG9(LX("deleteAlert").d("alertToken", alertToken)); + std::lock_guard lock(m_mutex); + + if (m_activeAlert && m_activeAlert->getToken() == alertToken) { + deactivateActiveAlertHelperLocked(Alert::StopReason::AVS_STOP); + return true; + } + + auto alert = getAlertLocked(alertToken); + + if (!alert) { + ACSDK_ERROR(LX("handleDeleteAlertFailed").m("could not find alert in map").d("token", alertToken)); + return false; + } + + if (!m_alertStorage->erase(alert)) { + ACSDK_ERROR(LX("handleDeleteAlertFailed").m("Could not erase alert from database").d("token", alertToken)); + } + + m_scheduledAlerts.erase(alert); + setTimerForNextAlertLocked(); + + return true; +} + +bool AlertScheduler::isAlertActive(std::shared_ptr alert) { + std::lock_guard lock(m_mutex); + return isAlertActiveLocked(alert); +} + +void AlertScheduler::updateFocus(avsCommon::avs::FocusState focusState) { + ACSDK_DEBUG9(LX("updateFocus").d("focusState", focusState)); + std::lock_guard lock(m_mutex); + + if (m_focusState == focusState) { + return; + } + + m_focusState = focusState; + + switch (m_focusState) { + case FocusState::FOREGROUND: + if (m_activeAlert) { + m_activeAlert->setFocusState(m_focusState); + auto token = m_activeAlert->getToken(); + notifyObserver(token, AlertObserverInterface::State::FOCUS_ENTERED_FOREGROUND); + } else { + activateNextAlertLocked(); + } + return; + + case FocusState::BACKGROUND: + if (m_activeAlert) { + m_activeAlert->setFocusState(m_focusState); + auto token = m_activeAlert->getToken(); + notifyObserver(token, AlertObserverInterface::State::FOCUS_ENTERED_BACKGROUND); + } else { + activateNextAlertLocked(); + } + return; + + case FocusState::NONE: + deactivateActiveAlertHelperLocked(Alert::StopReason::LOCAL_STOP); + return; + } + + ACSDK_ERROR(LX("updateFocusFailed").d("unhandledState", focusState)); +} + +avsCommon::avs::FocusState AlertScheduler::getFocusState() { + std::lock_guard lock(m_mutex); + return m_focusState; +} + +AlertScheduler::AlertsContextInfo AlertScheduler::getContextInfo() { + std::lock_guard lock(m_mutex); + + AlertScheduler::AlertsContextInfo alertContexts; + for (const auto& alert : m_scheduledAlerts) { + alertContexts.scheduledAlerts.push_back(alert->getContextInfo()); + } + + if (m_activeAlert) { + alertContexts.scheduledAlerts.push_back(m_activeAlert->getContextInfo()); + alertContexts.activeAlerts.push_back(m_activeAlert->getContextInfo()); + } + + return alertContexts; +} + +void AlertScheduler::onLocalStop() { + ACSDK_DEBUG9(LX("onLocalStop")); + std::lock_guard lock(m_mutex); + deactivateActiveAlertHelperLocked(Alert::StopReason::LOCAL_STOP); +} + +void AlertScheduler::clearData(Alert::StopReason reason) { + ACSDK_DEBUG9(LX("clearData")); + std::lock_guard lock(m_mutex); + + deactivateActiveAlertHelperLocked(reason); + + if (m_scheduledAlertTimer.isActive()) { + m_scheduledAlertTimer.stop(); + } + + m_scheduledAlerts.clear(); + + m_alertStorage->clearDatabase(); +} + +void AlertScheduler::shutdown() { + // These variables may call other functions here in the process of stopping / shutting down. They are + // also internally thread safe, so the mutex is not required to invoke these calls. + m_executor.shutdown(); + m_scheduledAlertTimer.stop(); + + m_observer.reset(); + + std::lock_guard lock(m_mutex); + m_alertStorage.reset(); + m_alertRenderer.reset(); + m_activeAlert.reset(); + m_scheduledAlerts.clear(); +} + +void AlertScheduler::executeOnAlertStateChange(std::string alertToken, State state, std::string reason) { + ACSDK_DEBUG9(LX("executeOnAlertStateChange").d("alertToken", alertToken).d("state", state).d("reason", reason)); + std::lock_guard lock(m_mutex); + + switch (state) { + case State::READY: + notifyObserver(alertToken, state, reason); + break; + + case State::STARTED: + if (m_activeAlert && Alert::State::ACTIVATING == m_activeAlert->getState()) { + m_activeAlert->setStateActive(); + m_alertStorage->modify(m_activeAlert); + notifyObserver(alertToken, state, reason); + } + break; + + case State::STOPPED: + m_alertStorage->erase(m_activeAlert); + m_activeAlert.reset(); + + notifyObserver(alertToken, state, reason); + setTimerForNextAlertLocked(); + + break; + + case State::COMPLETED: + m_alertStorage->erase(m_activeAlert); + m_activeAlert.reset(); + + notifyObserver(alertToken, state, reason); + setTimerForNextAlertLocked(); + + break; + + case State::SNOOZED: + m_alertStorage->modify(m_activeAlert); + m_scheduledAlerts.insert(m_activeAlert); + m_activeAlert.reset(); + m_alertRenderer->setObserver(nullptr); + + notifyObserver(alertToken, state, reason); + setTimerForNextAlertLocked(); + + break; + + case State::PAST_DUE: + // An alert should never send this state. + // Instead, this class generates it to inform higher level observers. + break; + + case State::FOCUS_ENTERED_FOREGROUND: + // An alert should never send this state. + // Instead, this class generates it to inform higher level observers. + break; + + case State::FOCUS_ENTERED_BACKGROUND: + // An alert should never send this state. + // Instead, this class generates it to inform higher level observers. + break; + + case State::ERROR: + + // clear out the alert that had the error, to avoid degenerate repeated alert behavior. + + if (m_activeAlert && m_activeAlert->getToken() == alertToken) { + m_alertStorage->erase(m_activeAlert); + m_activeAlert.reset(); + setTimerForNextAlertLocked(); + } else { + auto alert = getAlertLocked(alertToken); + if (alert) { + m_alertStorage->erase(alert); + m_scheduledAlerts.erase(alert); + setTimerForNextAlertLocked(); + } + } + + notifyObserver(alertToken, state, reason); + + break; + } +} + +void AlertScheduler::notifyObserver( + const std::string& alertToken, + AlertObserverInterface::State state, + const std::string& reason) { + ACSDK_DEBUG9(LX("notifyObserver").d("alertToken", alertToken).d("state", state).d("reason", reason)); + m_executor.submit([this, alertToken, state, reason]() { executeNotifyObserver(alertToken, state, reason); }); +} + +void AlertScheduler::executeNotifyObserver( + std::string alertToken, + AlertObserverInterface::State state, + std::string reason) { + m_observer->onAlertStateChange(alertToken, state, reason); +} + +void AlertScheduler::deactivateActiveAlertHelperLocked(Alert::StopReason reason) { + if (m_activeAlert) { + m_activeAlert->deactivate(reason); + } +} + +void AlertScheduler::setTimerForNextAlert() { + std::lock_guard lock(m_mutex); + setTimerForNextAlertLocked(); +} + +void AlertScheduler::setTimerForNextAlertLocked() { + ACSDK_DEBUG9(LX("setTimerForNextAlertLocked")); + if (m_scheduledAlertTimer.isActive()) { + m_scheduledAlertTimer.stop(); + } + + if (m_activeAlert) { + ACSDK_INFO(LX("executeScheduleNextAlertForRendering").m("An alert is already active.")); + return; + } + + if (m_scheduledAlerts.empty()) { + ACSDK_DEBUG9(LX("executeScheduleNextAlertForRendering").m("no work to do.")); + return; + } + + auto alert = (*m_scheduledAlerts.begin()); + + int64_t timeNow; + if (!m_timeUtils.getCurrentUnixTime(&timeNow)) { + ACSDK_ERROR(LX("executeScheduleNextAlertForRenderingFailed").d("reason", "could not get current unix time.")); + return; + } + + std::chrono::seconds secondsToWait{alert->getScheduledTime_Unix() - timeNow}; + + if (secondsToWait < std::chrono::seconds::zero()) { + secondsToWait = std::chrono::seconds::zero(); + } + + if (secondsToWait == std::chrono::seconds::zero()) { + auto token = alert->getToken(); + notifyObserver(token, AlertObserverInterface::State::READY); + } else { + // start the timer for the next alert. + if (!m_scheduledAlertTimer + .start(secondsToWait, std::bind(&AlertScheduler::onAlertReady, this, alert->getToken())) + .valid()) { + ACSDK_ERROR(LX("executeScheduleNextAlertForRenderingFailed").d("reason", "startTimerFailed")); + } + } +} + +void AlertScheduler::onAlertReady(const std::string& alertToken) { + ACSDK_DEBUG9(LX("onAlertReady").d("alertToken", alertToken)); + notifyObserver(alertToken, AlertObserverInterface::State::READY); +} + +void AlertScheduler::activateNextAlertLocked() { + ACSDK_DEBUG9(LX("activateNextAlertLocked")); + if (m_activeAlert) { + ACSDK_ERROR(LX("activateNextAlertLockedFailed").d("reason", "An alert is already active.")); + return; + } + + if (m_scheduledAlerts.empty()) { + return; + } + + m_activeAlert = *(m_scheduledAlerts.begin()); + m_scheduledAlerts.erase(m_scheduledAlerts.begin()); + + m_activeAlert->setFocusState(m_focusState); + m_activeAlert->activate(); +} + +bool AlertScheduler::isAlertActiveLocked(std::shared_ptr alert) const { + if (!m_activeAlert) { + return false; + } + + if (m_activeAlert->getToken() != alert->getToken()) { + return false; + } + + auto state = m_activeAlert->getState(); + return (Alert::State::ACTIVATING == state || Alert::State::ACTIVE == state); +} + +std::shared_ptr AlertScheduler::getAlertLocked(const std::string& token) const { + for (auto& alert : m_scheduledAlerts) { + if (token == alert->getToken()) { + return alert; + } + } + + return nullptr; +} + +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Alerts/src/AlertsCapabilityAgent.cpp b/CapabilityAgents/Alerts/src/AlertsCapabilityAgent.cpp index 73dc298c94..14d31e4760 100644 --- a/CapabilityAgents/Alerts/src/AlertsCapabilityAgent.cpp +++ b/CapabilityAgents/Alerts/src/AlertsCapabilityAgent.cpp @@ -1,7 +1,5 @@ /* - * AlertsCapabilityAgent.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -18,9 +16,11 @@ #include "Alerts/AlertsCapabilityAgent.h" #include "Alerts/Alarm.h" +#include "Alerts/Reminder.h" #include "Alerts/Storage/SQLiteAlertStorage.h" #include "Alerts/Timer.h" #include +#include #include #include @@ -35,10 +35,12 @@ namespace alerts { using namespace avsCommon::avs; using namespace avsCommon::utils::configuration; +using namespace avsCommon::utils::file; using namespace avsCommon::utils::json::jsonUtils; using namespace avsCommon::utils::logger; using namespace avsCommon::utils::timing; using namespace avsCommon::sdkInterfaces; +using namespace certifiedSender; using namespace rapidjson; /// The value for Type which we need for json parsing. @@ -49,19 +51,6 @@ static const std::string DIRECTIVE_NAME_SET_ALERT = "SetAlert"; /// The value of the DeleteAlert Directive. static const std::string DIRECTIVE_NAME_DELETE_ALERT = "DeleteAlert"; -/// The key in our config file to find the root of settings for this Capability Agent. -static const std::string ALERTS_CAPABILITY_AGENT_CONFIGURATION_ROOT_KEY = "alertsCapabilityAgent"; -/// The key in our config file to find the database file path. -static const std::string ALERTS_CAPABILITY_AGENT_DB_FILE_PATH_KEY = "databaseFilePath"; -/// The key in our config file to find the alarm default sound file path. -static const std::string ALERTS_CAPABILITY_AGENT_ALARM_AUDIO_FILE_PATH_KEY = "alarmSoundFilePath"; -/// The key in our config file to find the alarm short sound file path. -static const std::string ALERTS_CAPABILITY_AGENT_ALARM_SHORT_AUDIO_FILE_PATH_KEY = "alarmShortSoundFilePath"; -/// The key in our config file to find the timer default sound file path. -static const std::string ALERTS_CAPABILITY_AGENT_TIMER_AUDIO_FILE_PATH_KEY = "timerSoundFilePath"; -/// The key in our config file to find the timer short sound file path. -static const std::string ALERTS_CAPABILITY_AGENT_TIMER_SHORT_AUDIO_FILE_PATH_KEY = "timerShortSoundFilePath"; - /// The value of the SetAlertSucceeded Event name. static const std::string SET_ALERT_SUCCEEDED_EVENT_NAME = "SetAlertSucceeded"; /// The value of the SetAlertFailed Event name. @@ -80,6 +69,10 @@ static const std::string ALERT_ENTERED_FOREGROUND_EVENT_NAME = "AlertEnteredFore static const std::string ALERT_ENTERED_BACKGROUND_EVENT_NAME = "AlertEnteredBackground"; /// The value of the Alerts Context Namespace. +static const std::string EVENT_PAYLOAD_TOKEN_KEY = "token"; +/// The value of Token text in an Directive we may receive. +static const std::string DIRECTIVE_PAYLOAD_TOKEN_KEY = "token"; + static const std::string AVS_CONTEXT_HEADER_NAMESPACE_VALUE_KEY = "Alerts"; /// The value of the Alerts Context Names. static const std::string AVS_CONTEXT_HEADER_NAME_VALUE_KEY = "AlertsState"; @@ -95,10 +88,6 @@ static const std::string AVS_CONTEXT_ALERT_TYPE_KEY = "type"; static const std::string AVS_CONTEXT_ALERT_SCHEDULED_TIME_KEY = "scheduledTime"; /// The value of Token text in an Event we may send. -static const std::string EVENT_PAYLOAD_TOKEN_KEY = "token"; -/// The value of Token text in an Directive we may receive. -static const std::string DIRECTIVE_PAYLOAD_TOKEN_KEY = "token"; - /// An empty dialogRequestId. static const std::string EMPTY_DIALOG_REQUEST_ID = ""; @@ -108,8 +97,6 @@ static const std::string NAMESPACE = "Alerts"; static const avsCommon::avs::NamespaceAndName SET_ALERT{NAMESPACE, "SetAlert"}; /// The DeleteAlert directive signature. static const avsCommon::avs::NamespaceAndName DELETE_ALERT{NAMESPACE, "DeleteAlert"}; -/// The activityId string used with @c FocusManager by @c AlertsCapabilityAgent. -static const std::string ACTIVITY_ID = "Alerts.AlertStarted"; /// String to identify log entries originating from this file. static const std::string TAG("AlertsCapabilityAgent"); @@ -121,66 +108,25 @@ static const std::string TAG("AlertsCapabilityAgent"); */ #define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) -/** - * A utility function to query if a file exists. - * - * TODO - make this more portable and dependable. - * https://issues.labcollab.net/browse/ACSDK-380 - * - * @param filePath The path to the file being queried about. - * @return Whether the file exists and is accessible. - */ -static bool fileExists(const std::string &fileName) { - std::ifstream is(fileName); - return is.good(); -} - -/** - * Utility function to tell if an Alert should be rendered, or discarded. - * - * @param alert The Alert being considered. - * @param currentUnixTime The current time, expressed in Unix Epoch time. - * @return Whether the alert is past-due, or should be scheduled for rendering. - */ -static bool isAlertPastDue(const std::shared_ptr &alert, int64_t currentUnixTime) { - int64_t cutoffTime = currentUnixTime - (ALERT_PAST_DUE_CUTOFF_MINUTES.count() * 60); - - return (alert->getScheduledTime_Unix() < cutoffTime); -} - /** * Utility function to construct a rapidjson array of alert details, representing all the alerts currently managed. * - * @param alerts All the alerts being managed by this Capability Agent. - * @param activeAlert The currently active alert, if any. + * @param alertsInfo All the alerts being managed by this Capability Agent. * @param allocator The rapidjson allocator, required for the results of this function to be mergable with other * rapidjson::Value objects. * @return The rapidjson::Value representing the array. */ static rapidjson::Value buildAllAlertsContext( - const std::set, Alert::TimeComparator> &alerts, - std::shared_ptr activeAlert, - Document::AllocatorType &allocator) { + const std::vector& alertsInfo, + Document::AllocatorType& allocator) { rapidjson::Value alertArray(rapidjson::kArrayType); - for (auto &alert : alerts) { + for (const auto& info : alertsInfo) { rapidjson::Value alertJson; alertJson.SetObject(); - alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_TOKEN_KEY), alert->getToken(), allocator); - alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_TYPE_KEY), alert->getTypeName(), allocator); - alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_SCHEDULED_TIME_KEY), alert->getScheduledTime_ISO_8601(), - allocator); - - alertArray.PushBack(alertJson, allocator); - } - - if (activeAlert) { - rapidjson::Value alertJson; - alertJson.SetObject(); - alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_TOKEN_KEY), activeAlert->getToken(), allocator); - alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_TYPE_KEY), activeAlert->getTypeName(), allocator); - alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_SCHEDULED_TIME_KEY), activeAlert->getScheduledTime_ISO_8601(), - allocator); + alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_TOKEN_KEY), info.token, allocator); + alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_TYPE_KEY), info.type, allocator); + alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_SCHEDULED_TIME_KEY), info.scheduledTime_ISO_8601, allocator); alertArray.PushBack(alertJson, allocator); } @@ -191,22 +137,23 @@ static rapidjson::Value buildAllAlertsContext( /** * Utility function to construct a rapidjson array of alert details, representing all the currently active alerts. * - * @param activeAlert The currently active alert, which may be nullptr if no alert is active. + * @param alertsInfo The currently active alert, which may be nullptr if no alert is active. * @param allocator The rapidjson allocator, required for the results of this function to be mergable with other * rapidjson::Value objects. * @return The rapidjson::Value representing the array. */ -static rapidjson::Value buildActiveAlertsContext(std::shared_ptr activeAlert, - Document::AllocatorType &allocator) { +static rapidjson::Value buildActiveAlertsContext( + const std::vector& alertsInfo, + Document::AllocatorType& allocator) { rapidjson::Value alertArray(rapidjson::kArrayType); - if (activeAlert) { + if (!alertsInfo.empty()) { + auto& info = alertsInfo[0]; rapidjson::Value alertJson; alertJson.SetObject(); - alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_TOKEN_KEY), activeAlert->getToken(), allocator); - alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_TYPE_KEY), activeAlert->getTypeName(), allocator); - alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_SCHEDULED_TIME_KEY), activeAlert->getScheduledTime_ISO_8601(), - allocator); + alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_TOKEN_KEY), info.token, allocator); + alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_TYPE_KEY), info.type, allocator); + alertJson.AddMember(StringRef(AVS_CONTEXT_ALERT_SCHEDULED_TIME_KEY), info.scheduledTime_ISO_8601, allocator); alertArray.PushBack(alertJson, allocator); } @@ -214,49 +161,29 @@ static rapidjson::Value buildActiveAlertsContext(std::shared_ptr activeAl return alertArray; } -/** - * Utility function to create a Context string for the given alert inputs. - * - * @param alerts All the alerts being managed by this Capability Agent. - * @param activeAlert The currently active alert, which may be nullptr if no alert is active. - * @return The Context string for the given alert inputs. - */ -static std::string getContextString(const std::set, Alert::TimeComparator> &alerts, - const std::shared_ptr &activeAlert) { - rapidjson::Document state(kObjectType); - rapidjson::Document::AllocatorType &alloc = state.GetAllocator(); - - auto allAlertsJsonValue = buildAllAlertsContext(alerts, activeAlert, alloc); - auto activeAlertsJsonValue = buildActiveAlertsContext(activeAlert, alloc); - - state.AddMember(StringRef(AVS_CONTEXT_ALL_ALERTS_TOKEN_KEY), allAlertsJsonValue, alloc); - state.AddMember(StringRef(AVS_CONTEXT_ACTIVE_ALERTS_TOKEN_KEY), activeAlertsJsonValue, alloc); - - rapidjson::StringBuffer buffer; - rapidjson::Writer writer(buffer); - if (!state.Accept(writer)) { - ACSDK_ERROR(LX("getContextStringFailed").d("reason", "writerRefusedJsonObject")); - return ""; - } - - return buffer.GetString(); -} - std::shared_ptr AlertsCapabilityAgent::create( - std::shared_ptr messageSender, - std::shared_ptr focusManager, - std::shared_ptr contextManager, - std::shared_ptr exceptionEncounteredSender, - std::shared_ptr renderer, - std::shared_ptr alertStorage, - std::shared_ptr observer) { - + std::shared_ptr messageSender, + std::shared_ptr certifiedMessageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionEncounteredSender, + std::shared_ptr alertStorage, + std::shared_ptr alertsAudioFactory, + std::shared_ptr alertRenderer, + std::shared_ptr dataManager) { auto alertsCA = std::shared_ptr(new AlertsCapabilityAgent( - messageSender, focusManager, contextManager, - exceptionEncounteredSender, renderer, alertStorage, observer)); + messageSender, + certifiedMessageSender, + focusManager, + contextManager, + exceptionEncounteredSender, + alertStorage, + alertsAudioFactory, + alertRenderer, + dataManager)); if (!alertsCA->initialize()) { - ACSDK_ERROR(LX("createFailed").d("reason", "Initializion error.")); + ACSDK_ERROR(LX("createFailed").d("reason", "Initialization error.")); return nullptr; } @@ -271,423 +198,130 @@ avsCommon::avs::DirectiveHandlerConfiguration AlertsCapabilityAgent::getConfigur } void AlertsCapabilityAgent::handleDirectiveImmediately(std::shared_ptr directive) { + if (!directive) { + ACSDK_ERROR(LX("handleDirectiveImmediatelyFailed").d("reason", "directive is nullptr.")); + } auto info = createDirectiveInfo(directive, nullptr); - m_caExecutor.submit([this, info]() { executeHandleDirectiveImmediately(info); }); + m_executor.submit([this, info]() { executeHandleDirectiveImmediately(info); }); } void AlertsCapabilityAgent::preHandleDirective(std::shared_ptr info) { - m_caExecutor.submit([this, info]() { executeHandleDirectiveImmediately(info); }); + // intentional no-op. } void AlertsCapabilityAgent::handleDirective(std::shared_ptr info) { + if (!info) { + ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "info is nullptr.")); + } + m_executor.submit([this, info]() { executeHandleDirectiveImmediately(info); }); } void AlertsCapabilityAgent::cancelDirective(std::shared_ptr info) { + // intentional no-op. } void AlertsCapabilityAgent::onDeregistered() { - std::lock_guard lock(m_mutex); - deactivateActiveAlertHelper(Alert::StopReason::SHUTDOWN); - m_scheduledAlerts.clear(); -} - -void AlertsCapabilityAgent::enableSendEvents() { - m_sendEventsEnabled = true; - filterPastDueAlerts(); -} - -void AlertsCapabilityAgent::disableSendEvents() { - m_sendEventsEnabled = false; + // intentional no-op. } void AlertsCapabilityAgent::onConnectionStatusChanged(const Status status, const ChangedReason reason) { - std::lock_guard lock(m_mutex); - m_isConnected = (Status::POST_CONNECTED == status); + m_executor.submit([this, status, reason]() { executeOnConnectionStatusChanged(status, reason); }); } void AlertsCapabilityAgent::onFocusChanged(avsCommon::avs::FocusState focusState) { - std::lock_guard lock(m_mutex); - - if (m_focusState == focusState) { - return; - } - - m_focusState = focusState; - - switch (m_focusState) { - case FocusState::FOREGROUND: - if (m_activeAlert) { - m_activeAlert->setFocusState(m_focusState); - - std::string token = m_activeAlert->getToken(); - - m_caExecutor.submit( - [this, token]() { executeSendAlertFocusChangeEvent(token, FocusState::FOREGROUND); } - ); - - m_caExecutor.submit([this, token]() { - executeNotifyObserver(token, AlertObserverInterface::State::FOCUS_ENTERED_FOREGROUND); - }); - - } else { - activateNextAlertLocked(); - } - break; - - case FocusState::BACKGROUND: - if (m_activeAlert) { - m_activeAlert->setFocusState(m_focusState); - - std::string token = m_activeAlert->getToken(); - - m_caExecutor.submit( - [this, token]() { executeSendAlertFocusChangeEvent(token, FocusState::BACKGROUND); } - ); - - m_caExecutor.submit([this, token]() { - executeNotifyObserver(token, AlertObserverInterface::State::FOCUS_ENTERED_BACKGROUND); - }); - - } else { - activateNextAlertLocked(); - } - break; - - case FocusState::NONE: - deactivateActiveAlertHelper(Alert::StopReason::LOCAL_STOP); - break; - } + ACSDK_DEBUG9(LX("onFocusChanged").d("focusState", focusState)); + m_executor.submit([this, focusState]() { executeOnFocusChanged(focusState); }); } -void AlertsCapabilityAgent::executeSendAlertFocusChangeEvent( - const std::string &alertToken, avsCommon::avs::FocusState focusState) { - switch (focusState) { - case FocusState::FOREGROUND: - sendEvent(ALERT_ENTERED_FOREGROUND_EVENT_NAME, alertToken); - break; - - case FocusState::BACKGROUND: - sendEvent(ALERT_ENTERED_BACKGROUND_EVENT_NAME, alertToken); - break; - - case FocusState::NONE: - // no-op - break; - } -} - -void AlertsCapabilityAgent::executeNotifyObserver( - const std::string &alertToken, AlertObserverInterface::State state, const std::string &reason) { - if (m_observer) { - m_observer->onAlertStateChange(alertToken, state, reason); - } +void AlertsCapabilityAgent::onAlertStateChange( + const std::string& alertToken, + AlertObserverInterface::State state, + const std::string& reason) { + ACSDK_DEBUG9(LX("onAlertStateChange").d("alertToken", alertToken).d("state", state).d("reason", reason)); + m_executor.submit([this, alertToken, state, reason]() { executeOnAlertStateChange(alertToken, state, reason); }); } -void AlertsCapabilityAgent::onAlertStateChange(const std::string &alertToken, AlertObserverInterface::State state, - const std::string &reason) { - std::lock_guard lock(m_mutex); - - if (!m_activeAlert || alertToken != m_activeAlert->getToken()) { - ACSDK_ERROR(LX("onAlertStateChangeFailed").m("state change for alert which is not active.")); +void AlertsCapabilityAgent::addObserver(std::shared_ptr observer) { + if (!observer) { + ACSDK_ERROR(LX("addObserverFailed").d("reason", "nullObserver")); return; } - std::string alertTokenCopy = alertToken; - m_caExecutor.submit([this, alertTokenCopy, state, reason]() { - executeNotifyObserver(alertTokenCopy, state, reason); - }); - - switch (state) { - - case AlertObserverInterface::State::STARTED: - if (Alert::State::ACTIVATING == m_activeAlert->getState()) { - sendEvent(ALERT_STARTED_EVENT_NAME, m_activeAlert->getToken()); - m_activeAlert->setStateActive(); - m_alertStorage->modify(m_activeAlert); - - updateContextManagerLocked(); - } - break; - - case AlertObserverInterface::State::SNOOZED: - m_activeAlert->reset(); - m_alertStorage->modify(m_activeAlert); - m_scheduledAlerts.insert(m_activeAlert); - m_activeAlert.reset(); - m_alertRenderer->setObserver(nullptr); - releaseChannel(); - - updateContextManagerLocked(); - scheduleNextAlertForRendering(); - - break; - - case AlertObserverInterface::State::STOPPED: - // NOTE: Only send AlertStopped Event if local stop. Otherwise this is done during DeleteAlert handling. - if (Alert::StopReason::LOCAL_STOP == m_activeAlert->getStopReason()) { - sendEvent(ALERT_STOPPED_EVENT_NAME, m_activeAlert->getToken()); - } - - m_alertStorage->erase(m_activeAlert); - m_activeAlert.reset(); - m_alertRenderer->setObserver(nullptr); - releaseChannel(); - - updateContextManagerLocked(); - scheduleNextAlertForRendering(); - - break; - - case AlertObserverInterface::State::COMPLETED: - sendEvent(ALERT_STOPPED_EVENT_NAME, m_activeAlert->getToken()); - m_alertStorage->erase(m_activeAlert); - m_activeAlert.reset(); - m_alertRenderer->setObserver(nullptr); - releaseChannel(); - - updateContextManagerLocked(); - scheduleNextAlertForRendering(); - - break; - - case AlertObserverInterface::State::ERROR: - // let's at least get the next alert set up for rendering. - m_alertStorage->erase(m_activeAlert); - m_activeAlert.reset(); - m_alertRenderer->setObserver(nullptr); - releaseChannel(); - - updateContextManagerLocked(); - scheduleNextAlertForRendering(); - - break; + m_executor.submit([this, observer]() { executeAddObserver(observer); }); +} - case AlertObserverInterface::State::PAST_DUE: - case AlertObserverInterface::State::FOCUS_ENTERED_FOREGROUND: - case AlertObserverInterface::State::FOCUS_ENTERED_BACKGROUND: - // no-op - break; +void AlertsCapabilityAgent::removeObserver(std::shared_ptr observer) { + if (!observer) { + ACSDK_ERROR(LX("removeObserverFailed").d("reason", "nullObserver")); + return; } -} -void AlertsCapabilityAgent::onLocalStop() { - std::lock_guard lock(m_mutex); - deactivateActiveAlertHelper(Alert::StopReason::LOCAL_STOP); + m_executor.submit([this, observer]() { executeRemoveObserver(observer); }); } void AlertsCapabilityAgent::removeAllAlerts() { - std::unique_lock lock(m_mutex); - deactivateActiveAlertHelper(Alert::StopReason::SHUTDOWN); - m_scheduledAlerts.clear(); - - lock.unlock(); + m_executor.submit([this]() { executeRemoveAllAlerts(); }); +} - m_alertStorage->clearDatabase(); +void AlertsCapabilityAgent::onLocalStop() { + ACSDK_DEBUG9(LX("onLocalStop")); + m_executor.submitToFront([this]() { executeOnLocalStop(); }); } AlertsCapabilityAgent::AlertsCapabilityAgent( - std::shared_ptr messageSender, - std::shared_ptr focusManager, - std::shared_ptr contextManager, - std::shared_ptr exceptionEncounteredSender, - std::shared_ptr renderer, - std::shared_ptr alertStorage, - std::shared_ptr observer) - : CapabilityAgent("Alerts", exceptionEncounteredSender), - RequiresShutdown("AlertsCapabilityAgent"), - m_messageSender{messageSender}, - m_focusManager{focusManager}, - m_contextManager{contextManager}, - m_alertStorage{alertStorage}, - m_alertRenderer{renderer}, - m_isConnected{false}, m_sendEventsEnabled{false}, m_focusState{avsCommon::avs::FocusState::NONE}, - m_observer{observer} { - + std::shared_ptr messageSender, + std::shared_ptr certifiedMessageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionEncounteredSender, + std::shared_ptr alertStorage, + std::shared_ptr alertsAudioFactory, + std::shared_ptr alertRenderer, + std::shared_ptr dataManager) : + CapabilityAgent("Alerts", exceptionEncounteredSender), + RequiresShutdown("AlertsCapabilityAgent"), + CustomerDataHandler(dataManager), + m_messageSender{messageSender}, + m_certifiedSender{certifiedMessageSender}, + m_focusManager{focusManager}, + m_contextManager{contextManager}, + m_isConnected{false}, + m_alertScheduler{alertStorage, alertRenderer, ALERT_PAST_DUE_CUTOFF_MINUTES}, + m_alertsAudioFactory{alertsAudioFactory} { } void AlertsCapabilityAgent::doShutdown() { + m_executor.shutdown(); releaseChannel(); - m_scheduledAlertTimer.stop(); - m_caExecutor.shutdown(); - m_alertSchedulerExecutor.shutdown(); m_messageSender.reset(); + m_certifiedSender.reset(); m_focusManager.reset(); m_contextManager.reset(); - m_alertStorage.reset(); - m_alertRenderer.reset(); - m_activeAlert.reset(); - m_scheduledAlerts.clear(); - m_pastDueAlerts.clear(); - m_observer.reset(); + m_observers.clear(); + m_alertScheduler.shutdown(); } bool AlertsCapabilityAgent::initialize() { - auto configurationRoot = ConfigurationNode::getRoot()[ALERTS_CAPABILITY_AGENT_CONFIGURATION_ROOT_KEY]; - if (!configurationRoot) { - ACSDK_ERROR(LX("initializeFailed").m("could not load AlertsCapabilityAgent configuration root.")); - return false; - } - - if (!initializeDefaultSounds(configurationRoot)) { - ACSDK_ERROR(LX("initializeFailed").m("Could not initialize default sounds.")); - return false; - } - - if (!initializeAlerts(configurationRoot)) { + if (!initializeAlerts()) { ACSDK_ERROR(LX("initializeFailed").m("Could not initialize alerts.")); return false; } - std::unique_lock lock(m_mutex); - updateContextManagerLocked(); - lock.unlock(); - - scheduleNextAlertForRendering(); - - return true; -} - -bool AlertsCapabilityAgent::initializeDefaultSounds(const ConfigurationNode &configurationRoot) { - std::string alarmAudioFilePath; - std::string alarmShortAudioFilePath; - std::string timerAudioFilePath; - std::string timerShortAudioFilePath; - - if (!configurationRoot.getString(ALERTS_CAPABILITY_AGENT_ALARM_AUDIO_FILE_PATH_KEY, &alarmAudioFilePath) || - alarmAudioFilePath.empty()) { - ACSDK_ERROR(LX("initializeDefaultSoundsFailed").m("could not read alarm audio file path.")); - return false; - } - - if (!fileExists(alarmAudioFilePath)) { - ACSDK_ERROR(LX("initializeDefaultSoundsFailed").m("could not open alarm audio file.")); - return false; - } - - if (!configurationRoot.getString(ALERTS_CAPABILITY_AGENT_ALARM_SHORT_AUDIO_FILE_PATH_KEY, &alarmShortAudioFilePath) - || alarmShortAudioFilePath.empty()) { - ACSDK_ERROR(LX("initializeDefaultSoundsFailed").m("could not read alarm short audio file path.")); - return false; - } - - if (!fileExists(alarmAudioFilePath)) { - ACSDK_ERROR(LX("initializeDefaultSoundsFailed").m("could not open alarm short audio file.")); - return false; - } - - if (!configurationRoot.getString(ALERTS_CAPABILITY_AGENT_TIMER_AUDIO_FILE_PATH_KEY, &timerAudioFilePath) || - timerAudioFilePath.empty()) { - ACSDK_ERROR(LX("initializeDefaultSoundsFailed").m("could not read timer audio file path.")); - return false; - } - - if (!fileExists(alarmAudioFilePath)) { - ACSDK_ERROR(LX("initializeDefaultSoundsFailed").m("could not open timer audio file.")); - return false; - } - - if (!configurationRoot.getString(ALERTS_CAPABILITY_AGENT_TIMER_SHORT_AUDIO_FILE_PATH_KEY, &timerShortAudioFilePath) - || timerShortAudioFilePath.empty()) { - ACSDK_ERROR(LX("initializeDefaultSoundsFailed").m("could not read timer short audio file path.")); - return false; - } - - if (!fileExists(alarmAudioFilePath)) { - ACSDK_ERROR(LX("initializeDefaultSoundsFailed").m("could not open timer short audio file.")); - return false; - } - - Alarm::setDefaultAudioFilePath(alarmAudioFilePath); - Alarm::setDefaultShortAudioFilePath(alarmShortAudioFilePath); - - Timer::setDefaultAudioFilePath(timerAudioFilePath); - Timer::setDefaultShortAudioFilePath(timerShortAudioFilePath); - - return true; -} - -bool AlertsCapabilityAgent::initializeAlerts(const ConfigurationNode &configurationRoot) { - std::string sqliteFilePath; - - if (!configurationRoot.getString(ALERTS_CAPABILITY_AGENT_DB_FILE_PATH_KEY, &sqliteFilePath) || - sqliteFilePath.empty()) { - ACSDK_ERROR(LX("initializeAlertsFailed").m("could not load sqlite file path.")); - return false; - } - - if (!m_alertStorage->open(sqliteFilePath)) { - ACSDK_INFO(LX("initializeAlerts").m("database file does not exist. Creating.")); - if (!m_alertStorage->createDatabase(sqliteFilePath)) { - ACSDK_ERROR(LX("initializeAlertsFailed").m("Could not create database file.")); - return false; - } - } - - int64_t unixEpochNow; - if (!getCurrentUnixTime(&unixEpochNow)) { - ACSDK_ERROR(LX("initializeAlertsFailed").d("reason", "could not get current unix time.")); - return false; - } - - std::vector> alerts; - m_alertStorage->load(&alerts); - - for (auto &alert : alerts) { - if (isAlertPastDue(alert, unixEpochNow)) { - m_pastDueAlerts.push_back(alert); - } else { - alert->setRenderer(m_alertRenderer); - alert->setObserver(this); - - // if it was active when the system last powered down, then re-init the state to set - if (Alert::State::ACTIVE == alert->getState()) { - alert->reset(); - m_alertStorage->modify(alert); - } - - m_scheduledAlerts.insert(alert); - } - } + updateContextManager(); return true; } -void AlertsCapabilityAgent::executeHandleDirectiveImmediately(std::shared_ptr info) { - auto &directive = info->directive; - - rapidjson::Document payload; - payload.Parse(directive->getPayload()); - - if (payload.HasParseError()) { - std::string errorMessage = "Unable to parse payload"; - ACSDK_ERROR(LX("executeHandleDirectiveImmediatelyFailed").m(errorMessage)); - sendProcessingDirectiveException(directive, errorMessage); - return; - } - - auto directiveName = directive->getName(); - std::string alertToken; - - if (DIRECTIVE_NAME_SET_ALERT == directiveName) { - if (handleSetAlert(directive, payload, &alertToken)) { - sendEvent(SET_ALERT_SUCCEEDED_EVENT_NAME, alertToken); - } else { - sendEvent(SET_ALERT_FAILED_EVENT_NAME, alertToken); - } - } else if (DIRECTIVE_NAME_DELETE_ALERT == directiveName) { - if (handleDeleteAlert(directive, payload, &alertToken)) { - sendEvent(DELETE_ALERT_SUCCEEDED_EVENT_NAME, alertToken); - } else { - sendEvent(DELETE_ALERT_FAILED_EVENT_NAME, alertToken); - } - } +bool AlertsCapabilityAgent::initializeAlerts() { + return m_alertScheduler.initialize(shared_from_this()); } -bool AlertsCapabilityAgent::handleSetAlert(const std::shared_ptr &directive, - const rapidjson::Document &payload, - std::string *alertToken) { +bool AlertsCapabilityAgent::handleSetAlert( + const std::shared_ptr& directive, + const rapidjson::Document& payload, + std::string* alertToken) { + ACSDK_DEBUG9(LX("handleSetAlert")); std::string alertType; - if (!retrieveValue(payload, KEY_TYPE, &alertType)) { std::string errorMessage = "Alert type not specified for SetAlert"; ACSDK_ERROR(LX("handleSetAlertFailed").m(errorMessage)); @@ -698,9 +332,12 @@ bool AlertsCapabilityAgent::handleSetAlert(const std::shared_ptr parsedAlert; if (Alarm::TYPE_NAME == alertType) { - parsedAlert = std::make_shared(); + parsedAlert = std::make_shared(m_alertsAudioFactory->alarmDefault(), m_alertsAudioFactory->alarmShort()); } else if (Timer::TYPE_NAME == alertType) { - parsedAlert = std::make_shared(); + parsedAlert = std::make_shared(m_alertsAudioFactory->timerDefault(), m_alertsAudioFactory->timerShort()); + } else if (Reminder::TYPE_NAME == alertType) { + parsedAlert = + std::make_shared(m_alertsAudioFactory->reminderDefault(), m_alertsAudioFactory->reminderShort()); } if (!parsedAlert) { @@ -721,104 +358,39 @@ bool AlertsCapabilityAgent::handleSetAlert(const std::shared_ptrgetToken(); - std::lock_guard lock(m_mutex); - - if (m_activeAlert && - (m_activeAlert->getToken() == *alertToken) && - (Alert::State::ACTIVE == m_activeAlert->getState())) { - snoozeAlertLocked(m_activeAlert, parsedAlert->getScheduledTime_ISO_8601()); - sendEvent(ALERT_STOPPED_EVENT_NAME, m_activeAlert->getToken()); - } else { - if (getScheduledAlertByTokenLocked(parsedAlert->getToken())) { - // This is the best default behavior. If we send SetAlertFailed for a duplicate Alert, - // then AVS will follow up with a DeleteAlert Directive - just to ensure the client does not - // have a bad version of the Alert hanging around. We already have the Alert, so let's return true, - // so that SetAlertSucceeded will be sent back to AVS. - ACSDK_INFO(LX("handleSetAlert").m("Duplicate SetAlert from AVS.")); - return true; - } - - int64_t unixEpochNow; - if (!getCurrentUnixTime(&unixEpochNow)) { - ACSDK_ERROR(LX("handleSetAlertFailed").d("reason", "could not get current unix time.")); - return false; - } + if (m_alertScheduler.isAlertActive(parsedAlert)) { + return m_alertScheduler.snoozeAlert(parsedAlert->getToken(), parsedAlert->getScheduledTime_ISO_8601()); + } - if (isAlertPastDue(parsedAlert, unixEpochNow)) { - ACSDK_ERROR(LX("handleSetAlertFailed").d("reason", "parsed alert is past-due. Ignoring.")); - return false; - } else { - // it's a new alert. - if (!m_alertStorage->store(parsedAlert)) { - ACSDK_ERROR(LX("handleSetAlertFailed").d("reason", "could not store alert in database.")); - return false; - } - parsedAlert->setRenderer(m_alertRenderer); - parsedAlert->setObserver(this); - m_scheduledAlerts.insert(parsedAlert); - - updateContextManagerLocked(); - - if (!m_activeAlert) { - scheduleNextAlertForRendering(); - } - } + if (!m_alertScheduler.scheduleAlert(parsedAlert)) { + return false; } + updateContextManager(); + return true; } -bool AlertsCapabilityAgent::handleDeleteAlert(const std::shared_ptr & directive, - const rapidjson::Document & payload, - std::string* alertToken) { +bool AlertsCapabilityAgent::handleDeleteAlert( + const std::shared_ptr& directive, + const rapidjson::Document& payload, + std::string* alertToken) { + ACSDK_DEBUG9(LX("handleDeleteAlert")); if (!retrieveValue(payload, DIRECTIVE_PAYLOAD_TOKEN_KEY, alertToken)) { ACSDK_ERROR(LX("handleDeleteAlertFailed").m("Could not find token in the payload.")); return false; } - if (m_activeAlert && m_activeAlert->getToken() == *alertToken) { - sendEvent(ALERT_STOPPED_EVENT_NAME, *alertToken); - deactivateActiveAlertHelper(Alert::StopReason::AVS_STOP); - return true; - } - - std::lock_guard lock(m_mutex); - - auto alert = getScheduledAlertByTokenLocked(*alertToken); - - if (!alert) { - ACSDK_ERROR(LX("handleDeleteAlertFailed").m("could not find alert in map").d("token", *alertToken)); + if (!m_alertScheduler.deleteAlert(*alertToken)) { return false; } - if (!m_alertStorage->erase(alert)) { - ACSDK_ERROR(LX("handleDeleteAlertFailed").m("Could not erase alert from database").d("token", *alertToken)); - } - - m_scheduledAlerts.erase(alert); - updateContextManagerLocked(); - scheduleNextAlertForRendering(); + updateContextManager(); return true; } -void AlertsCapabilityAgent::sendEvent(const std::string & eventName, const std::string & alertToken) { - - /** - * TODO : ACSDK-393 to investigate if Events which cannot be sent right away should be stored somehow and - * sent retrospectively once a connection is established. - */ - - if (!m_isConnected) { - ACSDK_INFO(LX("sendEventFailed").m("Not connected - cannot send Event.")); - return; - } - - if (!m_sendEventsEnabled) { - ACSDK_INFO(LX("sendEventFailed").m("Not enabled to send events.")); - return; - } - +void AlertsCapabilityAgent::sendEvent(const std::string& eventName, const std::string& alertToken, bool isCertified) { rapidjson::Document payload(kObjectType); rapidjson::Document::AllocatorType& alloc = payload.GetAllocator(); @@ -833,197 +405,208 @@ void AlertsCapabilityAgent::sendEvent(const std::string & eventName, const std:: auto jsonEventString = buildJsonEventString(eventName, EMPTY_DIALOG_REQUEST_ID, buffer.GetString()).second; - auto request = std::make_shared(jsonEventString); - m_messageSender->sendMessage(request); + if (isCertified) { + m_certifiedSender->sendJSONMessage(jsonEventString); + } else { + if (!m_isConnected) { + ACSDK_WARN( + LX("sendEvent").m("Not connected to AVS. Not sending Event.").d("event details", jsonEventString)); + } else { + auto request = std::make_shared(jsonEventString); + m_messageSender->sendMessage(request); + } + } } void AlertsCapabilityAgent::sendProcessingDirectiveException( - const std::shared_ptr & directive, const std::string & errorMessage) { + const std::shared_ptr& directive, + const std::string& errorMessage) { auto unparsedDirective = directive->getUnparsedDirective(); - ACSDK_ERROR(LX("sendProcessingDirectiveException") - .m("Could not parse directive.") - .m(errorMessage) - .m(unparsedDirective)); + ACSDK_ERROR( + LX("sendProcessingDirectiveException").m("Could not parse directive.").m(errorMessage).m(unparsedDirective)); m_exceptionEncounteredSender->sendExceptionEncountered( - unparsedDirective, ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED, errorMessage); + unparsedDirective, ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED, errorMessage); } -void AlertsCapabilityAgent::updateContextManagerLocked() { - std::string contextString = getContextString(m_scheduledAlerts, m_activeAlert); - - NamespaceAndName namespaceAndName{AVS_CONTEXT_HEADER_NAMESPACE_VALUE_KEY, AVS_CONTEXT_HEADER_NAME_VALUE_KEY}; - - auto setStateSuccess = m_contextManager->setState( - namespaceAndName, contextString, StateRefreshPolicy::NEVER); - - if (setStateSuccess != SetStateResult::SUCCESS) { - ACSDK_ERROR(LX("updateContextManagerFailed") - .m("Could not set the state on the contextManager") - .d("result", static_cast(setStateSuccess))); - } +void AlertsCapabilityAgent::acquireChannel() { + ACSDK_DEBUG9(LX("acquireChannel")); + m_focusManager->acquireChannel(FocusManagerInterface::ALERTS_CHANNEL_NAME, shared_from_this(), NAMESPACE); } -void AlertsCapabilityAgent::scheduleNextAlertForRendering() { - m_alertSchedulerExecutor.submit([this] () { executeScheduleNextAlertForRendering(); }); -} - -void AlertsCapabilityAgent::executeScheduleNextAlertForRendering() { - std::unique_lock lock(m_mutex); - - if (m_activeAlert) { - ACSDK_INFO(LX("executeScheduleNextAlertForRendering").m("An alert is already active.")); - return; - } - - if (m_scheduledAlerts.empty()) { - ACSDK_INFO(LX("executeScheduleNextAlertForRendering").m("no work to do.")); - return; +void AlertsCapabilityAgent::releaseChannel() { + ACSDK_DEBUG9(LX("releaseChannel")); + if (m_alertScheduler.getFocusState() != FocusState::NONE) { + m_focusManager->releaseChannel(FocusManagerInterface::ALERTS_CHANNEL_NAME, shared_from_this()); } +} - auto alert = (*m_scheduledAlerts.begin()); - - lock.unlock(); +void AlertsCapabilityAgent::executeHandleDirectiveImmediately(std::shared_ptr info) { + ACSDK_DEBUG1(LX("executeHandleDirectiveImmediately")); + auto& directive = info->directive; - if (m_scheduledAlertTimer.isActive()) { - m_scheduledAlertTimer.stop(); - } + rapidjson::Document payload; + payload.Parse(directive->getPayload()); - int64_t timeNow; - if (!getCurrentUnixTime(&timeNow)) { - ACSDK_ERROR(LX("executeScheduleNextAlertForRenderingFailed").d("reason", "could not get current unix time.")); + if (payload.HasParseError()) { + std::string errorMessage = "Unable to parse payload"; + ACSDK_ERROR(LX("executeHandleDirectiveImmediatelyFailed").m(errorMessage)); + sendProcessingDirectiveException(directive, errorMessage); return; } - std::chrono::seconds secondsToWait{alert->getScheduledTime_Unix() - timeNow}; - - if (secondsToWait < std::chrono::seconds::zero()) { - secondsToWait = std::chrono::seconds::zero(); - } + auto directiveName = directive->getName(); + std::string alertToken; - if (secondsToWait == std::chrono::seconds::zero()) { - if (!acquireChannel()) { - ACSDK_ERROR(LX("executeScheduleNextAlertForRenderingFailed").m("Could not request channel.")); - return; + if (DIRECTIVE_NAME_SET_ALERT == directiveName) { + if (handleSetAlert(directive, payload, &alertToken)) { + sendEvent(SET_ALERT_SUCCEEDED_EVENT_NAME, alertToken, true); + } else { + sendEvent(SET_ALERT_FAILED_EVENT_NAME, alertToken, true); } - } else { - releaseChannel(); - - // start the timer for the next alert. - if (!m_scheduledAlertTimer.start( - secondsToWait, std::bind(&AlertsCapabilityAgent::acquireChannel, this)).valid()) { - ACSDK_ERROR(LX("executeScheduleNextAlertForRenderingFailed").d("reason", "startTimerFailed")); + } else if (DIRECTIVE_NAME_DELETE_ALERT == directiveName) { + if (handleDeleteAlert(directive, payload, &alertToken)) { + sendEvent(DELETE_ALERT_SUCCEEDED_EVENT_NAME, alertToken, true); + } else { + sendEvent(DELETE_ALERT_FAILED_EVENT_NAME, alertToken, true); } } } -void AlertsCapabilityAgent::activateNextAlertLocked() { - if (m_activeAlert) { - ACSDK_ERROR(LX("activateNextAlertLockedFailed").d("reason", "An alert is already active.")); - return; - } +void AlertsCapabilityAgent::executeOnConnectionStatusChanged(const Status status, const ChangedReason reason) { + ACSDK_DEBUG1(LX("executeOnConnectionStatusChanged").d("status", status).d("reason", reason)); + m_isConnected = (Status::CONNECTED == status); +} - if (m_scheduledAlerts.empty()) { - releaseChannel(); - return; - } +void AlertsCapabilityAgent::executeOnFocusChanged(avsCommon::avs::FocusState focusState) { + ACSDK_DEBUG1(LX("executeOnFocusChanged").d("focusState", focusState)); + m_alertScheduler.updateFocus(focusState); +} - m_activeAlert = *(m_scheduledAlerts.begin()); - m_scheduledAlerts.erase(m_scheduledAlerts.begin()); +void AlertsCapabilityAgent::executeOnAlertStateChange( + const std::string& alertToken, + AlertObserverInterface::State state, + const std::string& reason) { + ACSDK_DEBUG1(LX("executeOnAlertStateChange").d("alertToken", alertToken).d("state", state).d("reason", reason)); + switch (state) { + case AlertObserverInterface::State::READY: + acquireChannel(); + break; - m_activeAlert->setFocusState(m_focusState); - m_activeAlert->activate(); -} + case AlertObserverInterface::State::STARTED: + sendEvent(ALERT_STARTED_EVENT_NAME, alertToken, true); + updateContextManager(); + break; -std::shared_ptr AlertsCapabilityAgent::getScheduledAlertByTokenLocked(const std::string & token) { - for (auto & alert : m_scheduledAlerts) { - if (token == alert->getToken()) { - return alert; - } - } + case AlertObserverInterface::State::SNOOZED: + releaseChannel(); + updateContextManager(); + break; - return nullptr; -} + case AlertObserverInterface::State::STOPPED: + sendEvent(ALERT_STOPPED_EVENT_NAME, alertToken, true); + releaseChannel(); + updateContextManager(); + break; -bool AlertsCapabilityAgent::snoozeAlertLocked(std::shared_ptr alert, const std::string & updatedTime) { - // let's make sure we only snooze an alarm. Other alert types can't be snoozed. - if (alert->getTypeName() != Alarm::TYPE_NAME) { - ACSDK_ERROR(LX("snoozeAlertFailed").d("reason", "attempt to snooze a non-alarm alert.")); - return false; - } + case AlertObserverInterface::State::COMPLETED: + sendEvent(ALERT_STOPPED_EVENT_NAME, alertToken, true); + releaseChannel(); + updateContextManager(); + break; + + case AlertObserverInterface::State::ERROR: + releaseChannel(); + updateContextManager(); + break; - alert->snooze(updatedTime); + case AlertObserverInterface::State::PAST_DUE: + sendEvent(ALERT_STOPPED_EVENT_NAME, alertToken, true); + break; - if (!m_alertStorage->modify(alert)) { - ACSDK_ERROR(LX("snoozeAlertFailed").d("reason", "could not modify alert in database for snooze.")); - return false; - } + case AlertObserverInterface::State::FOCUS_ENTERED_FOREGROUND: + sendEvent(ALERT_ENTERED_FOREGROUND_EVENT_NAME, alertToken); + break; - updateContextManagerLocked(); + case AlertObserverInterface::State::FOCUS_ENTERED_BACKGROUND: + sendEvent(ALERT_ENTERED_BACKGROUND_EVENT_NAME, alertToken); + break; + } - return true; + m_executor.submit([this, alertToken, state, reason]() { executeNotifyObservers(alertToken, state, reason); }); } -bool AlertsCapabilityAgent::acquireChannel() { - if (m_activeAlert) { - ACSDK_ERROR(LX("acquireChannelFailed").m("An alert is already active. Not scheduling another.")); - return false; - } +void AlertsCapabilityAgent::executeAddObserver(std::shared_ptr observer) { + ACSDK_DEBUG1(LX("executeAddObserver").d("observer", observer.get())); + m_observers.insert(observer); +} - if (m_scheduledAlerts.empty()) { - ACSDK_ERROR(LX("acquireChannelFailed").m("no work to do.")); - return false; - } +void AlertsCapabilityAgent::executeRemoveObserver(std::shared_ptr observer) { + ACSDK_DEBUG1(LX("executeRemoveObserver").d("observer", observer.get())); + m_observers.erase(observer); +} - if (FocusState::NONE == m_focusState) { - m_focusManager->acquireChannel(FocusManagerInterface::ALERTS_CHANNEL_NAME, shared_from_this(), ACTIVITY_ID); - return true; +void AlertsCapabilityAgent::executeNotifyObservers( + const std::string& alertToken, + AlertObserverInterface::State state, + const std::string& reason) { + ACSDK_DEBUG1(LX("executeNotifyObservers").d("alertToken", alertToken).d("state", state).d("reason", reason)); + for (auto observer : m_observers) { + observer->onAlertStateChange(alertToken, state, reason); } +} - return false; +void AlertsCapabilityAgent::executeRemoveAllAlerts() { + ACSDK_DEBUG1(LX("executeRemoveAllAlerts")); + m_alertScheduler.clearData(); } -void AlertsCapabilityAgent::releaseChannel() { - if (FocusState::NONE != m_focusState) { - m_focusManager->releaseChannel(FocusManagerInterface::ALERTS_CHANNEL_NAME, shared_from_this()); - } +void AlertsCapabilityAgent::executeOnLocalStop() { + ACSDK_DEBUG1(LX("executeOnLocalStop")); + m_alertScheduler.onLocalStop(); } -void AlertsCapabilityAgent::filterPastDueAlerts() { - int64_t unixEpochNow; - if (!getCurrentUnixTime(&unixEpochNow)) { - ACSDK_ERROR(LX("filterPastDueAlertsFailed").d("reason", "could not get current unix time.")); - return; - } +void AlertsCapabilityAgent::updateContextManager() { + std::string contextString = getContextString(); - std::lock_guard lock(m_mutex); + NamespaceAndName namespaceAndName{AVS_CONTEXT_HEADER_NAMESPACE_VALUE_KEY, AVS_CONTEXT_HEADER_NAME_VALUE_KEY}; - for (auto & alert : m_scheduledAlerts) { - if (isAlertPastDue(alert, unixEpochNow)) { - m_pastDueAlerts.push_back(alert); - } + auto setStateSuccess = m_contextManager->setState(namespaceAndName, contextString, StateRefreshPolicy::NEVER); + + if (setStateSuccess != SetStateResult::SUCCESS) { + ACSDK_ERROR(LX("updateContextManagerFailed") + .m("Could not set the state on the contextManager") + .d("result", static_cast(setStateSuccess))); } +} - for (auto & alert : m_pastDueAlerts) { - std::string alertToken = alert->getToken(); - sendEvent(ALERT_STOPPED_EVENT_NAME, alertToken); +std::string AlertsCapabilityAgent::getContextString() { + rapidjson::Document state(kObjectType); + rapidjson::Document::AllocatorType& alloc = state.GetAllocator(); - m_caExecutor.submit([this, alertToken]() { - executeNotifyObserver(alertToken, AlertObserverInterface::State::PAST_DUE, ""); - }); + auto alertsContextInfo = m_alertScheduler.getContextInfo(); + auto allAlertsJsonValue = buildAllAlertsContext(alertsContextInfo.scheduledAlerts, alloc); + auto activeAlertsJsonValue = buildActiveAlertsContext(alertsContextInfo.activeAlerts, alloc); - m_scheduledAlerts.erase(alert); - m_alertStorage->erase(alert); + state.AddMember(StringRef(AVS_CONTEXT_ALL_ALERTS_TOKEN_KEY), allAlertsJsonValue, alloc); + state.AddMember(StringRef(AVS_CONTEXT_ACTIVE_ALERTS_TOKEN_KEY), activeAlertsJsonValue, alloc); + + rapidjson::StringBuffer buffer; + rapidjson::Writer writer(buffer); + if (!state.Accept(writer)) { + ACSDK_ERROR(LX("getContextStringFailed").d("reason", "writerRefusedJsonObject")); + return ""; } + + return buffer.GetString(); } -void AlertsCapabilityAgent::deactivateActiveAlertHelper(Alert::StopReason stopReason) { - if (m_activeAlert) { - m_activeAlert->deActivate(stopReason); - } +void AlertsCapabilityAgent::clearData() { + auto result = m_executor.submit([this]() { m_alertScheduler.clearData(Alert::StopReason::LOG_OUT); }); + result.wait(); } -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Alerts/src/CMakeLists.txt b/CapabilityAgents/Alerts/src/CMakeLists.txt index 40b1e6ce25..516faf1dbb 100644 --- a/CapabilityAgents/Alerts/src/CMakeLists.txt +++ b/CapabilityAgents/Alerts/src/CMakeLists.txt @@ -3,18 +3,21 @@ add_definitions("-DACSDK_LOG_MODULE=alerts") add_library(Alerts SHARED Renderer/Renderer.cpp Storage/SQLiteAlertStorage.cpp - Storage/SQLiteStatement.cpp - Storage/SQLiteUtils.cpp Alarm.cpp Alert.cpp AlertsCapabilityAgent.cpp + AlertScheduler.cpp + Reminder.cpp Timer.cpp) target_include_directories(Alerts PUBLIC "${Alerts_SOURCE_DIR}/include" - "${SQLITE_INCLUDE_DIRS}") + "${AudioResources_SOURCE_DIR}/include" + "${CertifiedSender_SOURCE_DIR}/include" + "${SQLiteStorage_SOURCE_DIR}/include" + "${RegistrationManager_SOURCE_DIR}/include") -target_link_libraries(Alerts AVSCommon "${SQLITE_LDFLAGS}") +target_link_libraries(Alerts AudioResources AVSCommon CertifiedSender SQLiteStorage RegistrationManager) # install target asdk_install() diff --git a/CapabilityAgents/Alerts/src/Reminder.cpp b/CapabilityAgents/Alerts/src/Reminder.cpp new file mode 100644 index 0000000000..9340aee174 --- /dev/null +++ b/CapabilityAgents/Alerts/src/Reminder.cpp @@ -0,0 +1,37 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "Alerts/Reminder.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace alerts { + +/// Definition for static class data member. +const std::string Reminder::TYPE_NAME = "REMINDER"; + +Reminder::Reminder( + std::function()> defaultAudioFactory, + std::function()> shortAudioFactory) : + Alert(defaultAudioFactory, shortAudioFactory) { +} + +std::string Reminder::getTypeName() const { + return TYPE_NAME; +} + +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Alerts/src/Renderer/Renderer.cpp b/CapabilityAgents/Alerts/src/Renderer/Renderer.cpp index 52b4d9cf0f..e13d14e3a7 100644 --- a/CapabilityAgents/Alerts/src/Renderer/Renderer.cpp +++ b/CapabilityAgents/Alerts/src/Renderer/Renderer.cpp @@ -1,7 +1,5 @@ /* - * Renderer.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -17,7 +15,6 @@ #include "Alerts/Renderer/Renderer.h" -//#include "Alerts/Storage/AlertStorageInterface.h" #include "AVSCommon/Utils/Logger/Logger.h" #include @@ -40,6 +37,16 @@ static const std::string TAG("Renderer"); */ #define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) +/** + * Local utility function to evaluate if a sourceId returned from the MediaPlayer is ok. + * + * @param sourceId The sourceId being tested. + * @return Whether the sourceId is ok or not. + */ +static bool isSourceIdOk(MediaPlayerInterface::SourceId sourceId) { + return sourceId != MediaPlayerInterface::ERROR; +} + std::shared_ptr Renderer::create(std::shared_ptr mediaPlayer) { if (!mediaPlayer) { ACSDK_ERROR(LX("createFailed").m("mediaPlayer parameter was nullptr.")); @@ -51,22 +58,18 @@ std::shared_ptr Renderer::create(std::shared_ptr return renderer; } -Renderer::Renderer(std::shared_ptr mediaPlayer) : - m_mediaPlayer{mediaPlayer}, m_observer{nullptr}, m_loopCount{0}, m_loopPauseInMilliseconds{0}, - m_isRendering{false} { - +void Renderer::setObserver(std::shared_ptr observer) { + m_executor.submit([this, observer]() { executeSetObserver(observer); }); } -void Renderer::setObserver(RendererObserverInterface* observer) { - std::lock_guard lock(m_mutex); - m_observer = observer; -} - -void Renderer::start(const std::string & localAudioFilePath, - const std::vector & urls, - int loopCount, std::chrono::milliseconds loopPauseInMilliseconds) { - if (localAudioFilePath.empty() && urls.empty()) { - ACSDK_ERROR(LX("startFailed").m("both local audio file path and urls are empty.")); +void Renderer::start( + std::function()> audioFactory, + const std::vector& urls, + int loopCount, + std::chrono::milliseconds loopPause) { + std::unique_ptr defaultAudio = audioFactory(); + if (!defaultAudio) { + ACSDK_ERROR(LX("startFailed").m("default audio is nullptr")); return; } @@ -75,88 +78,246 @@ void Renderer::start(const std::string & localAudioFilePath, loopCount = 0; } - if (loopPauseInMilliseconds.count() < 0) { - ACSDK_ERROR(LX("startInvalidParam") - .m("loopPauseInMilliseconds less than zero - adjusting to acceptable minimum.")); - loopPauseInMilliseconds = std::chrono::milliseconds::zero(); + if (loopPause.count() < 0) { + ACSDK_ERROR(LX("startInvalidParam").m("loopPause less than zero - adjusting to acceptable minimum.")); + loopPause = std::chrono::milliseconds{0}; } - std::unique_lock lock(m_mutex); - m_localAudioFilePath = localAudioFilePath; + m_executor.submit( + [this, audioFactory, urls, loopCount, loopPause]() { executeStart(audioFactory, urls, loopCount, loopPause); }); +} + +void Renderer::stop() { + m_executor.submit([this]() { executeStop(); }); +} + +void Renderer::onPlaybackStarted(SourceId sourceId) { + m_executor.submit([this, sourceId]() { executeOnPlaybackStarted(sourceId); }); +} + +void Renderer::onPlaybackStopped(SourceId sourceId) { + m_executor.submit([this, sourceId]() { executeOnPlaybackStopped(sourceId); }); +} + +void Renderer::onPlaybackFinished(SourceId sourceId) { + m_executor.submit([this, sourceId]() { executeOnPlaybackFinished(sourceId); }); +} + +void Renderer::onPlaybackError( + SourceId sourceId, + const avsCommon::utils::mediaPlayer::ErrorType& type, + std::string error) { + m_executor.submit([this, sourceId, type, error]() { executeOnPlaybackError(sourceId, type, error); }); +} + +Renderer::Renderer(std::shared_ptr mediaPlayer) : + m_mediaPlayer{mediaPlayer}, + m_observer{nullptr}, + m_numberOfStreamsRenderedThisLoop{0}, + m_loopCount{0}, + m_loopPause{std::chrono::milliseconds{0}}, + m_isStopping{false} { + resetSourceId(); +} + +void Renderer::executeSetObserver(std::shared_ptr observer) { + ACSDK_DEBUG1(LX("executeSetObserver")); + m_observer = observer; +} + +void Renderer::executeStart( + std::function()> audioFactory, + const std::vector& urls, + int loopCount, + std::chrono::milliseconds loopPause) { + ACSDK_DEBUG1(LX("executeStart") + .d("urls.size", urls.size()) + .d("loopCount", loopCount) + .d("loopPause (ms)", std::chrono::duration_cast(loopPause).count())); m_urls = urls; m_loopCount = loopCount; - m_loopPauseInMilliseconds = loopPauseInMilliseconds; - lock.unlock(); + m_loopPause = loopPause; + m_defaultAudio = audioFactory(); + + ACSDK_DEBUG9( + LX("executeStart") + .d("m_urls.size", m_urls.size()) + .d("m_loopCount", m_loopCount) + .d("m_loopPause (ms)", std::chrono::duration_cast(m_loopPause).count())); + m_isStopping = false; + + m_numberOfStreamsRenderedThisLoop = 0; + if (urls.empty()) { + ACSDK_DEBUG5(LX("executeStart").m("setSource with default alert audio stream")); + m_currentSourceId = m_mediaPlayer->setSource(m_defaultAudio, m_loopCount <= 0); + } else { + ACSDK_DEBUG5(LX("executeStart").d("setSource", m_urls[m_numberOfStreamsRenderedThisLoop])); + m_currentSourceId = m_mediaPlayer->setSource(m_urls[m_numberOfStreamsRenderedThisLoop]); + } + + ACSDK_INFO(LX("executeStart").d("m_currentSourceId", m_currentSourceId)); + + if (!isSourceIdOk(m_currentSourceId)) { + ACSDK_ERROR( + LX("executeStartFailed").d("m_currentSourceId", m_currentSourceId).m("SourceId response was invalid.")); + return; + } - m_executor.submit([this] () { executeStart(); }); + if (!m_mediaPlayer->play(m_currentSourceId)) { + ACSDK_ERROR( + LX("executeStartFailed").d("m_currentSourceId", m_currentSourceId).m("MediaPlayer play request failed.")); + resetSourceId(); + } } -void Renderer::stop() { - m_executor.submit([this] () { executeStop(); }); +void Renderer::executeStop() { + ACSDK_DEBUG1(LX("executeStop")); + if (m_mediaPlayer->stop(m_currentSourceId)) { + m_isStopping = true; + } else { + std::string errorMessage = "mediaPlayer stop request failed."; + ACSDK_ERROR(LX("executeStopFailed").d("SourceId", m_currentSourceId).m(errorMessage)); + notifyObserver(RendererObserverInterface::State::ERROR, errorMessage); + } } -void Renderer::executeStart() { - std::unique_lock lock(m_mutex); - std::string localAudioFilePathCopy = m_localAudioFilePath; - lock.unlock(); +void Renderer::executeOnPlaybackStarted(SourceId sourceId) { + ACSDK_DEBUG1(LX("executeOnPlaybackStarted").d("sourceId", sourceId)); + if (m_currentSourceId != sourceId) { + ACSDK_DEBUG9(LX("executeOnPlaybackStarted") + .d("m_currentSourceId", m_currentSourceId) + .m("Ignoring - different from expected source id.")); + return; + } - // TODO : ACSDK-389 to update the local audio to being streams rather than file paths. + notifyObserver(RendererObserverInterface::State::STARTED); +} - std::unique_ptr is(new std::ifstream(localAudioFilePathCopy, std::ios::binary)); +void Renderer::executeOnPlaybackStopped(SourceId sourceId) { + ACSDK_DEBUG1(LX("executeOnPlaybackStopped").d("sourceId", sourceId)); + if (m_currentSourceId != sourceId) { + ACSDK_DEBUG9(LX("executeOnPlaybackStopped") + .d("m_currentSourceId", m_currentSourceId) + .m("Ignoring - different from expected source id.")); + return; + } - m_mediaPlayer->setSource(std::move(is), true); - m_mediaPlayer->play(); + resetSourceId(); + notifyObserver(RendererObserverInterface::State::STOPPED); + m_observer = nullptr; } -void Renderer::executeStop() { - std::unique_lock lock(m_mutex); - bool isRenderingCopy = m_isRendering; - RendererObserverInterface* observerCopy = m_observer; - lock.unlock(); +void Renderer::executeOnPlaybackFinished(SourceId sourceId) { + ACSDK_DEBUG1(LX("executeOnPlaybackFinished").d("sourceId", sourceId)); + if (m_currentSourceId != sourceId) { + ACSDK_DEBUG9(LX("executeOnPlaybackFinished") + .d("m_currentSourceId", m_currentSourceId) + .m("Ignoring - different from expected source id.")); + return; + } - if (isRenderingCopy) { - m_mediaPlayer->stop(); - } else { - if (observerCopy) { - observerCopy->onRendererStateChange(RendererObserverInterface::State::STOPPED); + RendererObserverInterface::State finalState = RendererObserverInterface::State::STOPPED; + + ++m_numberOfStreamsRenderedThisLoop; + + if (!m_isStopping && 0 < m_loopCount) { + if (renderNextAudioAsset()) { + return; } + + finalState = RendererObserverInterface::State::COMPLETED; } + + resetSourceId(); + notifyObserver(finalState); + m_observer = nullptr; } -void Renderer::onPlaybackStarted() { - std::unique_lock lock(m_mutex); - m_isRendering = true; - RendererObserverInterface* observerCopy = m_observer; - lock.unlock(); +bool Renderer::renderNextAudioAsset() { + bool shouldRenderAnotherAudioAsset = true; + + // If we have completed a loop, then update our counters, and determine what to do next. If the URLs aren't + // reachable, m_urls will be empty. + if (m_numberOfStreamsRenderedThisLoop >= static_cast(m_urls.size())) { + m_loopCount--; + m_numberOfStreamsRenderedThisLoop = 0; + ACSDK_DEBUG5(LX("renderNextAudioAsset") + .d("loopCount", m_loopCount) + .d("nextAudioIndex", m_numberOfStreamsRenderedThisLoop) + .m("Preparing the audio loop counters.")); - if (observerCopy) { - observerCopy->onRendererStateChange(RendererObserverInterface::State::STARTED); + if (m_loopCount <= 0) { + shouldRenderAnotherAudioAsset = false; + } else if (m_loopPause.count() > 0) { + std::this_thread::sleep_for(m_loopPause); + } } -} -void Renderer::onPlaybackFinished() { - std::unique_lock lock(m_mutex); - m_isRendering = false; - RendererObserverInterface* observerCopy = m_observer; - lock.unlock(); + // If we should continue to the next url, let's kick it off. If there aren't any urls, use the default audio. + if (shouldRenderAnotherAudioAsset) { + ACSDK_DEBUG9(LX("renderNextAudioAsset").d("setSource", m_numberOfStreamsRenderedThisLoop)); + + if (m_urls.empty()) { + m_currentSourceId = m_mediaPlayer->setSource(m_defaultAudio, false); + } else { + std::string url = m_urls[m_numberOfStreamsRenderedThisLoop]; + m_currentSourceId = m_mediaPlayer->setSource(url); + } + + if (!isSourceIdOk(m_currentSourceId)) { + std::string errorMessage = "SourceId response from setSource was invalid."; + ACSDK_ERROR(LX("renderNextAudioAsset").d("SourceId", m_currentSourceId).m(errorMessage)); + notifyObserver(RendererObserverInterface::State::ERROR, errorMessage); + return false; + } + + if (!m_mediaPlayer->play(m_currentSourceId)) { + std::string errorMessage = "MediaPlayer was unable to play next media item."; + ACSDK_ERROR(LX("renderNextUrl").d("SourceId", m_currentSourceId).m(errorMessage)); + notifyObserver(RendererObserverInterface::State::ERROR, errorMessage); + return false; + } + + ACSDK_DEBUG9(LX("renderNextAudioAsset").m("Next source started successfully")); - if (observerCopy) { - observerCopy->onRendererStateChange(RendererObserverInterface::State::STOPPED); + } else { + ACSDK_DEBUG9(LX("renderNextAudioAsset").m("No more sounds to render.")); } + + return shouldRenderAnotherAudioAsset; } -void Renderer::onPlaybackError(std::string error) { - std::unique_lock lock(m_mutex); - m_isRendering = false; - RendererObserverInterface* observerCopy = m_observer; - lock.unlock(); +void Renderer::executeOnPlaybackError( + SourceId sourceId, + const avsCommon::utils::mediaPlayer::ErrorType& type, + const std::string& error) { + ACSDK_DEBUG1(LX("executeOnPlaybackError").d("sourceId", sourceId).d("type", type).d("error", error)); + if (m_currentSourceId != sourceId) { + ACSDK_DEBUG9(LX("executeOnPlaybackError") + .d("m_currentSourceId", m_currentSourceId) + .m("Ignoring - different from expected source id.")); + return; + } + + resetSourceId(); - if (observerCopy) { - observerCopy->onRendererStateChange(RendererObserverInterface::State::ERROR, error); + // This will cause a retry (through Renderer::start) using the same code paths as before, except in this case the + // urls to render will be empty. + notifyObserver(RendererObserverInterface::State::ERROR, error); + m_observer = nullptr; +} + +void Renderer::notifyObserver(RendererObserverInterface::State state, const std::string& message) { + if (m_observer) { + m_observer->onRendererStateChange(state, message); } } -} // namespace renderer -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK +void Renderer::resetSourceId() { + m_currentSourceId = MediaPlayerInterface::ERROR; +} + +} // namespace renderer +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Alerts/src/Storage/SQLiteAlertStorage.cpp b/CapabilityAgents/Alerts/src/Storage/SQLiteAlertStorage.cpp index 24b838aea9..d7f7d7fc53 100644 --- a/CapabilityAgents/Alerts/src/Storage/SQLiteAlertStorage.cpp +++ b/CapabilityAgents/Alerts/src/Storage/SQLiteAlertStorage.cpp @@ -1,27 +1,27 @@ /* - * SqlLiteAlertStorage.cpp + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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 "Alerts/Storage/SQLiteAlertStorage.h" -#include "Alerts/Storage/SQLiteStatement.h" -#include "Alerts/Storage/SQLiteUtils.h" #include "Alerts/Alarm.h" +#include "Alerts/Reminder.h" #include "Alerts/Timer.h" +#include +#include + +#include #include #include @@ -33,8 +33,10 @@ namespace capabilityAgents { namespace alerts { namespace storage { +using namespace avsCommon::utils::file; using namespace avsCommon::utils::logger; using namespace avsCommon::utils::string; +using namespace alexaClientSDK::storage::sqliteStorage; /// String to identify log entries originating from this file. static const std::string TAG("SQLiteAlertStorage"); @@ -46,15 +48,25 @@ static const std::string TAG("SQLiteAlertStorage"); */ #define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) +/// The key in our config file to find the root of settings for this Capability Agent. +static const std::string ALERTS_CAPABILITY_AGENT_CONFIGURATION_ROOT_KEY = "alertsCapabilityAgent"; + +/// The key in our config file to find the database file path. +static const std::string ALERTS_CAPABILITY_AGENT_DB_FILE_PATH_KEY = "databaseFilePath"; + /// A definition which we will store in the database to indicate Alarm type. static const int ALERT_EVENT_TYPE_ALARM = 1; /// A definition which we will store in the database to indicate Timer type. static const int ALERT_EVENT_TYPE_TIMER = 2; +/// A definition which we will store in the database to indicate Reminder type. +static const int ALERT_EVENT_TYPE_REMINDER = 3; /// This is the string value this code will expect form an Alert of Alarm type. static const std::string ALERT_EVENT_TYPE_ALARM_STRING = "ALARM"; /// This is the string value this code will expect form an Alert of Timer type. static const std::string ALERT_EVENT_TYPE_TIMER_STRING = "TIMER"; +/// This is the string value this code will expect form an Alert of Reminder type. +static const std::string ALERT_EVENT_TYPE_REMINDER_STRING = "REMINDER"; /// A definition which we will store in the database to indicate an Alert's Unset state. static const int ALERT_STATE_UNSET = 1; @@ -64,9 +76,9 @@ static const int ALERT_STATE_SET = 2; static const int ALERT_STATE_ACTIVATING = 3; /// A definition which we will store in the database to indicate an Alert's Active state. static const int ALERT_STATE_ACTIVE = 4; -/// A definition which we will store in the database to indicate an Alert's Active state. +/// A definition which we will store in the database to indicate an Alert's Snoozing state. static const int ALERT_STATE_SNOOZING = 5; -/// A definition which we will store in the database to indicate an Alert's Active state. +/// A definition which we will store in the database to indicate an Alert's Snoozed state. static const int ALERT_STATE_SNOOZED = 6; /// A definition which we will store in the database to indicate an Alert's Stopping state. static const int ALERT_STATE_STOPPING = 7; @@ -74,21 +86,71 @@ static const int ALERT_STATE_STOPPING = 7; static const int ALERT_STATE_STOPPED = 8; /// A definition which we will store in the database to indicate an Alert's Completed state. static const int ALERT_STATE_COMPLETED = 9; +/// A definition which we will store in the database to indicate an Alert's Ready state. +static const int ALERT_STATE_READY = 10; /// The name of the 'id' field we will use as the primary key in our tables. static const std::string DATABASE_COLUMN_ID_NAME = "id"; +/// A symbolic name for version one of our database. +static const int ALERTS_DATABASE_VERSION_ONE = 1; +/// A symbolic name for version two of our database. +static const int ALERTS_DATABASE_VERSION_TWO = 2; + /// The name of the alerts table. static const std::string ALERTS_TABLE_NAME = "alerts"; + +/// The name of the alerts (v2) table. +static const std::string ALERTS_V2_TABLE_NAME = "alerts_v2"; /// The SQL string to create the alerts table. +// clang-format off static const std::string CREATE_ALERTS_TABLE_SQL_STRING = std::string("CREATE TABLE ") + - ALERTS_TABLE_NAME + " (" + + ALERTS_V2_TABLE_NAME + " (" + DATABASE_COLUMN_ID_NAME + " INT PRIMARY KEY NOT NULL," + "token TEXT NOT NULL," + "type INT NOT NULL," + "state INT NOT NULL," + "scheduled_time_unix INT NOT NULL," + - "scheduled_time_iso_8601 TEXT NOT NULL);"; + "scheduled_time_iso_8601 TEXT NOT NULL," + + "asset_loop_count INT NOT NULL," + + "asset_loop_pause_milliseconds INT NOT NULL," + + "background_asset TEXT NOT NULL);"; +// clang-format on + +/// The name of the alertAssets table. +static const std::string ALERT_ASSETS_TABLE_NAME = "alertAssets"; +/// The SQL string to create the alertAssets table. +// clang-format off +static const std::string CREATE_ALERT_ASSETS_TABLE_SQL_STRING = std::string("CREATE TABLE ") + + ALERT_ASSETS_TABLE_NAME + " (" + + "id INT PRIMARY KEY NOT NULL," + + "alert_id INT NOT NULL," + + "avs_id TEXT NOT NULL," + + "url TEXT NOT NULL);"; +// clang-format on + +/// The name of the alertAssetPlayOrderItems table. +static const std::string ALERT_ASSET_PLAY_ORDER_ITEMS_TABLE_NAME = "alertAssetPlayOrderItems"; +/// The SQL string to create the alertAssetPlayOrderItems table. +// clang-format off +static const std::string CREATE_ALERT_ASSET_PLAY_ORDER_ITEMS_TABLE_SQL_STRING = std::string("CREATE TABLE ") + + ALERT_ASSET_PLAY_ORDER_ITEMS_TABLE_NAME + " (" + + "id INT PRIMARY KEY NOT NULL," + + "alert_id INT NOT NULL," + + "asset_play_order_position INT NOT NULL," + + "asset_play_order_token TEXT NOT NULL);"; +// clang-format on + +struct AssetOrderItem { + int index; + std::string name; +}; + +struct AssetOrderItemCompare { + bool operator()(const AssetOrderItem& lhs, const AssetOrderItem& rhs) const { + return lhs.index < rhs.index; + } +}; /** * Utility function to convert an alert type string into a value we can store in the database. @@ -97,15 +159,16 @@ static const std::string CREATE_ALERTS_TABLE_SQL_STRING = std::string("CREATE TA * @param[out] dbType The destination of the converted type which may be stored in a database. * @return Whether the type was successfully converted. */ -static bool alertTypeToDbField(const std::string & alertType, int* dbType) { +static bool alertTypeToDbField(const std::string& alertType, int* dbType) { if (ALERT_EVENT_TYPE_ALARM_STRING == alertType) { *dbType = ALERT_EVENT_TYPE_ALARM; } else if (ALERT_EVENT_TYPE_TIMER_STRING == alertType) { *dbType = ALERT_EVENT_TYPE_TIMER; + } else if (ALERT_EVENT_TYPE_REMINDER_STRING == alertType) { + *dbType = ALERT_EVENT_TYPE_REMINDER; } else { - ACSDK_ERROR(LX("alertTypeToDbFieldFailed") - .m("Could not determine alert type.") - .d("alert type string", alertType)); + ACSDK_ERROR( + LX("alertTypeToDbFieldFailed").m("Could not determine alert type.").d("alert type string", alertType)); return false; } @@ -127,6 +190,9 @@ static bool alertStateToDbField(Alert::State state, int* dbState) { case Alert::State::SET: *dbState = ALERT_STATE_SET; return true; + case Alert::State::READY: + *dbState = ALERT_STATE_READY; + return true; case Alert::State::ACTIVATING: *dbState = ALERT_STATE_ACTIVATING; return true; @@ -151,8 +217,8 @@ static bool alertStateToDbField(Alert::State state, int* dbState) { } ACSDK_ERROR(LX("alertStateToDbFieldFailed") - .m("Could not convert alert state.") - .d("alert object state", static_cast(state))); + .m("Could not convert alert state.") + .d("alert object state", static_cast(state))); return false; } @@ -171,6 +237,9 @@ static bool dbFieldToAlertState(int dbState, Alert::State* state) { case ALERT_STATE_SET: *state = Alert::State::SET; return true; + case ALERT_STATE_READY: + *state = Alert::State::READY; + return true; case ALERT_STATE_ACTIVATING: *state = Alert::State::ACTIVATING; return true; @@ -194,90 +263,124 @@ static bool dbFieldToAlertState(int dbState, Alert::State* state) { return true; } - ACSDK_ERROR(LX("dbFieldToAlertStateFailed") - .m("Could not convert db value.") - .d("db value", dbState)); + ACSDK_ERROR(LX("dbFieldToAlertStateFailed").m("Could not convert db value.").d("db value", dbState)); return false; } -/** - * A small utility function to help determine if a file exists. - * - * @param filePath The path to the file being queried about. - * @return Whether the file exists and is accessible. - */ -static bool fileExists(const std::string & filePath) { +std::unique_ptr SQLiteAlertStorage::create( + const avsCommon::utils::configuration::ConfigurationNode& configurationRoot, + const std::shared_ptr& alertsAudioFactory) { + auto alertsConfigurationRoot = configurationRoot[ALERTS_CAPABILITY_AGENT_CONFIGURATION_ROOT_KEY]; + if (!alertsConfigurationRoot) { + ACSDK_ERROR(LX("createFailed") + .d("reason", "Could not load config for the Alerts capability agent") + .d("key", ALERTS_CAPABILITY_AGENT_CONFIGURATION_ROOT_KEY)); + return nullptr; + } - // TODO - make this more portable and dependable. - // https://issues.labcollab.net/browse/ACSDK-380 + std::string alertDbFilePath; + if (!alertsConfigurationRoot.getString(ALERTS_CAPABILITY_AGENT_DB_FILE_PATH_KEY, &alertDbFilePath) || + alertDbFilePath.empty()) { + ACSDK_ERROR(LX("createFailed") + .d("reason", "Could not load config value") + .d("key", ALERTS_CAPABILITY_AGENT_DB_FILE_PATH_KEY)); + return nullptr; + } - std::ifstream is(filePath); - return is.good(); + return std::unique_ptr(new SQLiteAlertStorage(alertDbFilePath, alertsAudioFactory)); +} + +SQLiteAlertStorage::SQLiteAlertStorage( + const std::string& dbFilePath, + const std::shared_ptr& alertsAudioFactory) : + m_alertsAudioFactory{alertsAudioFactory}, + m_db{dbFilePath} { +} + +SQLiteAlertStorage::~SQLiteAlertStorage() { + close(); } /** - * A utility function to query if an alert exists in the database, given its database id. + * Utility function to create the Alerts table within the database. * - * @param dbHandle The database handle. - * @param alertId The database id of the alert. - * @return Whether the alert was successfully found in the database. + * @param db The SQLiteDatabase object. + * @return Whether the table was successfully created. */ -static bool alertExistsByAlertId(sqlite3* dbHandle, int alertId) { - std::string sqlString = "SELECT COUNT(*) FROM " + ALERTS_TABLE_NAME + " WHERE id=?;"; - - SQLiteStatement statement(dbHandle, sqlString); - - if (!statement.isValid()) { - ACSDK_ERROR(LX("alertExistsByAlertIdFailed").m("Could not create statement.")); +static bool createAlertsTable(SQLiteDatabase* db) { + if (!db) { + ACSDK_ERROR(LX("createAlertsTableFailed").m("null db")); return false; } - int boundParam = 1; - if (!statement.bindIntParameter(boundParam, alertId)) { - ACSDK_ERROR(LX("alertExistsByAlertIdFailed").m("Could not bind a parameter.")); + if (!db->performQuery(CREATE_ALERTS_TABLE_SQL_STRING)) { + ACSDK_ERROR(LX("createAlertsTableFailed").m("Table could not be created.")); return false; } - if (!statement.step()) { - ACSDK_ERROR(LX("alertExistsByAlertIdFailed").m("Could not step to next row.")); + return true; +} + +/** + * Utility function to create the AlertAssets table within the database. + * + * @param db The SQLiteDatabase object. + * @return Whether the table was successfully created. + */ +static bool createAlertAssetsTable(SQLiteDatabase* db) { + if (!db) { + ACSDK_ERROR(LX("createAlertAssetsTableFailed").m("null db")); return false; } - const int RESULT_COLUMN_POSITION = 0; - std::string rowValue = statement.getColumnText(RESULT_COLUMN_POSITION); - - int countValue = 0; - if (!stringToInt(rowValue.c_str(), &countValue)) { - ACSDK_ERROR(LX("alertExistsByAlertIdFailed").d("Could not convert string to integer", rowValue)); + if (!db->performQuery(CREATE_ALERT_ASSETS_TABLE_SQL_STRING)) { + ACSDK_ERROR(LX("createAlertAssetsTableFailed").m("Table could not be created.")); return false; } - return countValue > 0; + return true; } -SQLiteAlertStorage::SQLiteAlertStorage() : m_dbHandle{nullptr} { +/** + * Utility function to create the AlertAssetPlayOrderItems table within the database. + * + * @param db The SQLiteDatabase object. + * @return Whether the table was successfully created. + */ +static bool createAlertAssetPlayOrderItemsTable(SQLiteDatabase* db) { + if (!db) { + ACSDK_ERROR(LX("createAlertAssetPlayOrderItemsTableFailed").m("null db")); + return false; + } + + if (!db->performQuery(CREATE_ALERT_ASSET_PLAY_ORDER_ITEMS_TABLE_SQL_STRING)) { + ACSDK_ERROR(LX("createAlertAssetPlayOrderItemsTableFailed").m("Table could not be created.")); + return false; + } + return true; } -bool SQLiteAlertStorage::createDatabase(const std::string & filePath) { - if (m_dbHandle) { - ACSDK_ERROR(LX("createDatabaseFailed").m("Database handle is already open.")); +bool SQLiteAlertStorage::createDatabase() { + if (!m_db.initialize()) { + ACSDK_ERROR(LX("createDatabaseFailed")); return false; } - if (fileExists(filePath)) { - ACSDK_ERROR(LX("createDatabaseFailed").m("File specified already exists.").d("file path", filePath)); + if (!createAlertsTable(&m_db)) { + ACSDK_ERROR(LX("createDatabaseFailed").m("Alerts table could not be created.")); + close(); return false; } - m_dbHandle = createSQLiteDatabase(filePath); - if (!m_dbHandle) { - ACSDK_ERROR(LX("createDatabaseFailed").m("Database could not be created.").d("file path", filePath)); + if (!createAlertAssetsTable(&m_db)) { + ACSDK_ERROR(LX("createDatabaseFailed").m("AlertAssets table could not be created.")); + close(); return false; } - if (!performQuery(m_dbHandle, CREATE_ALERTS_TABLE_SQL_STRING)) { - ACSDK_ERROR(LX("createDatabaseFailed").m("Table could not be created.")); + if (!createAlertAssetPlayOrderItemsTable(&m_db)) { + ACSDK_ERROR(LX("createDatabaseFailed").m("AlertAssetPlayOrderItems table could not be created.")); close(); return false; } @@ -285,60 +388,91 @@ bool SQLiteAlertStorage::createDatabase(const std::string & filePath) { return true; } -bool SQLiteAlertStorage::open(const std::string & filePath) { - if (m_dbHandle) { - ACSDK_ERROR(LX("openFailed").m("Database handle is already open.")); - return false; +bool SQLiteAlertStorage::migrateAlertsDbFromV1ToV2() { + // The good case - the db file is already up to date. + if (m_db.tableExists(ALERTS_V2_TABLE_NAME)) { + return true; } - if (!fileExists(filePath)) { - ACSDK_ERROR(LX("openFailed").m("File specified does not exist.").d("file path", filePath)); + if (!createAlertsTable(&m_db)) { + ACSDK_ERROR(LX("migrateAlertsDbFromV1ToV2Failed").m("Alert table could not be created.")); return false; } - m_dbHandle = openSQLiteDatabase(filePath); - if (!m_dbHandle) { - ACSDK_ERROR(LX("openFailed").m("Database could not be opened.").d("file path", filePath)); - return false; + if (!m_db.tableExists(ALERT_ASSETS_TABLE_NAME)) { + if (!createAlertAssetsTable(&m_db)) { + ACSDK_ERROR(LX("migrateAlertsDbFromV1ToV2Failed").m("AlertAssets table could not be created.")); + return false; + } + } + + if (!m_db.tableExists(ALERT_ASSET_PLAY_ORDER_ITEMS_TABLE_NAME)) { + if (!createAlertAssetPlayOrderItemsTable(&m_db)) { + ACSDK_ERROR( + LX("migrateAlertsDbFromV1ToV2Failed").m("AlertAssetPlayOrderItems table could not be created.")); + return false; + } + } + + // We have created the new alerts tables, and the expectation is that the old alerts table exists. + // Just for an edge case where it does not, let's not fail out if the old table does not exist - in that case, + // the migration is fine. + if (m_db.tableExists(ALERTS_TABLE_NAME)) { + std::vector> alertContainer; + if (!loadHelper(ALERTS_DATABASE_VERSION_ONE, &alertContainer)) { + ACSDK_ERROR(LX("migrateAlertsDbFromV1ToV2Failed").m("Could not load V1 alert records.")); + return false; + } + + for (auto& alert : alertContainer) { + if (!store(alert)) { + ACSDK_ERROR(LX("migrateAlertsDbFromV1ToV2Failed").m("Could not migrate alert to V2 database.")); + alert->printDiagnostic(); + return false; + } + } + + const std::string sqlString = "DROP TABLE IF EXISTS " + ALERTS_TABLE_NAME + ";"; + + if (!m_db.performQuery(sqlString)) { + ACSDK_ERROR(LX("migrateAlertsDbFromV1ToV2Failed").m("Alerts table could not be dropped.")); + return false; + } } return true; } -bool SQLiteAlertStorage::isOpen() { - return (nullptr != m_dbHandle); +bool SQLiteAlertStorage::open() { + return m_db.open(); } void SQLiteAlertStorage::close() { - if (m_dbHandle) { - closeSQLiteDatabase(m_dbHandle); - m_dbHandle = nullptr; - } + m_db.close(); } -bool SQLiteAlertStorage::alertExists(const std::string & token) { - std::string sqlString = "SELECT COUNT(*) FROM " + ALERTS_TABLE_NAME + " WHERE token=?;"; - - SQLiteStatement statement(m_dbHandle, sqlString); +bool SQLiteAlertStorage::alertExists(const std::string& token) { + const std::string sqlString = "SELECT COUNT(*) FROM " + ALERTS_V2_TABLE_NAME + " WHERE token=?;"; + auto statement = m_db.createStatement(sqlString); - if (!statement.isValid()) { + if (!statement) { ACSDK_ERROR(LX("alertExistsFailed").m("Could not create statement.")); return false; } int boundParam = 1; - if (!statement.bindStringParameter(boundParam, token)) { + if (!statement->bindStringParameter(boundParam, token)) { ACSDK_ERROR(LX("alertExistsFailed").m("Could not bind a parameter.")); return false; } - if (!statement.step()) { + if (!statement->step()) { ACSDK_ERROR(LX("alertExistsFailed").m("Could not step to next row.")); return false; } const int RESULT_COLUMN_POSITION = 0; - std::string rowValue = statement.getColumnText(RESULT_COLUMN_POSITION); + std::string rowValue = statement->getColumnText(RESULT_COLUMN_POSITION); int countValue = 0; if (!stringToInt(rowValue.c_str(), &countValue)) { @@ -349,12 +483,122 @@ bool SQLiteAlertStorage::alertExists(const std::string & token) { return countValue > 0; } -bool SQLiteAlertStorage::store(std::shared_ptr alert) { - if (!m_dbHandle) { - ACSDK_ERROR(LX("storeFailed").m("Database handle is not open.")); +static bool storeAlertAssets( + SQLiteDatabase* db, + int alertId, + const std::unordered_map& assets) { + if (assets.empty()) { + return true; + } + + // clang-format off + const std::string sqlString = "INSERT INTO " + ALERT_ASSETS_TABLE_NAME + " (" + + "id, alert_id, avs_id, url" + + ") VALUES (" + + "?, ?, ?, ?" + + ");"; + // clang-format on + + int id = 0; + if (!getTableMaxIntValue(db, ALERT_ASSETS_TABLE_NAME, DATABASE_COLUMN_ID_NAME, &id)) { + ACSDK_ERROR(LX("storeAlertAssetsFailed").m("Cannot generate asset id.")); + return false; + } + id++; + + auto statement = db->createStatement(sqlString); + if (!statement) { + ACSDK_ERROR(LX("storeAlertAssetsFailed").m("Could not create statement.")); + return false; + } + + // go through each asset in the alert, and store in the database. + for (auto& assetIter : assets) { + auto& asset = assetIter.second; + + int boundParam = 1; + if (!statement->bindIntParameter(boundParam++, id) || !statement->bindIntParameter(boundParam++, alertId) || + !statement->bindStringParameter(boundParam++, asset.id) || + !statement->bindStringParameter(boundParam, asset.url)) { + ACSDK_ERROR(LX("storeAlertAssetsFailed").m("Could not bind a parameter.")); + return false; + } + + if (!statement->step()) { + ACSDK_ERROR(LX("storeAlertAssetsFailed").m("Could not step to next row.")); + return false; + } + + if (!statement->reset()) { + ACSDK_ERROR(LX("storeAlertAssetsFailed").m("Could not reset the statement.")); + return false; + } + + id++; + } + + return true; +} + +static bool storeAlertAssetPlayOrderItems( + SQLiteDatabase* db, + int alertId, + const std::vector& assetPlayOrderItems) { + if (assetPlayOrderItems.empty()) { + return true; + } + + // clang-format off + const std::string sqlString = "INSERT INTO " + ALERT_ASSET_PLAY_ORDER_ITEMS_TABLE_NAME + " (" + + "id, alert_id, asset_play_order_position, asset_play_order_token" + + ") VALUES (" + + "?, ?, ?, ?" + + ");"; + // clang-format on + + int id = 0; + if (!getTableMaxIntValue(db, ALERT_ASSET_PLAY_ORDER_ITEMS_TABLE_NAME, DATABASE_COLUMN_ID_NAME, &id)) { + ACSDK_ERROR(LX("storeAlertAssetPlayOrderItemsFailed").m("Cannot generate asset id.")); + return false; + } + id++; + + auto statement = db->createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("storeAlertAssetPlayOrderItemsFailed").m("Could not create statement.")); return false; } + // go through each assetPlayOrderItem in the alert, and store in the database. + int itemIndex = 1; + for (auto& assetId : assetPlayOrderItems) { + int boundParam = 1; + if (!statement->bindIntParameter(boundParam++, id) || !statement->bindIntParameter(boundParam++, alertId) || + !statement->bindIntParameter(boundParam++, itemIndex) || + !statement->bindStringParameter(boundParam, assetId)) { + ACSDK_ERROR(LX("storeAlertAssetPlayOrderItemsFailed").m("Could not bind a parameter.")); + return false; + } + + if (!statement->step()) { + ACSDK_ERROR(LX("storeAlertAssetPlayOrderItemsFailed").m("Could not step to next row.")); + return false; + } + + if (!statement->reset()) { + ACSDK_ERROR(LX("storeAlertAssetPlayOrderItemsFailed").m("Could not reset the statement.")); + return false; + } + + id++; + itemIndex++; + } + + return true; +} + +bool SQLiteAlertStorage::store(std::shared_ptr alert) { if (!alert) { ACSDK_ERROR(LX("storeFailed").m("Alert parameter is nullptr")); return false; @@ -365,17 +609,20 @@ bool SQLiteAlertStorage::store(std::shared_ptr alert) { return false; } - std::string sqlString = std::string("INSERT INTO " + ALERTS_TABLE_NAME + " (") + + // clang-format off + const std::string sqlString = "INSERT INTO " + ALERTS_V2_TABLE_NAME + " (" + "id, token, type, state, " + - "scheduled_time_unix, scheduled_time_iso_8601" + + "scheduled_time_unix, scheduled_time_iso_8601, asset_loop_count, " + + "asset_loop_pause_milliseconds, background_asset" ") VALUES (" + "?, ?, ?, ?, " + - "?, ?" + //, ?, ?" + + "?, ?, ?," + + "?, ?" + ");"; - + // clang-format on int id = 0; - if (!getTableMaxIntValue(m_dbHandle, ALERTS_TABLE_NAME, DATABASE_COLUMN_ID_NAME, &id)) { + if (!getTableMaxIntValue(&m_db, ALERTS_V2_TABLE_NAME, DATABASE_COLUMN_ID_NAME, &id)) { ACSDK_ERROR(LX("storeFailed").m("Cannot generate alert id.")); return false; } @@ -393,25 +640,30 @@ bool SQLiteAlertStorage::store(std::shared_ptr alert) { return false; } - SQLiteStatement statement(m_dbHandle, sqlString); + auto statement = m_db.createStatement(sqlString); - if (!statement.isValid()) { + if (!statement) { ACSDK_ERROR(LX("storeFailed").m("Could not create statement.")); return false; } int boundParam = 1; - if (!statement.bindIntParameter(boundParam++, id) || - !statement.bindStringParameter(boundParam++, alert->m_token) || - !statement.bindIntParameter(boundParam++, alertType) || - !statement.bindIntParameter(boundParam++, alertState) || - !statement.bindInt64Parameter(boundParam++, alert->m_scheduledTime_Unix) || - !statement.bindStringParameter(boundParam++, alert->m_scheduledTime_ISO_8601)) { + auto token = alert->m_token; + auto iso8601 = alert->getScheduledTime_ISO_8601(); + auto assetId = alert->getBackgroundAssetId(); + if (!statement->bindIntParameter(boundParam++, id) || !statement->bindStringParameter(boundParam++, token) || + !statement->bindIntParameter(boundParam++, alertType) || + !statement->bindIntParameter(boundParam++, alertState) || + !statement->bindInt64Parameter(boundParam++, alert->getScheduledTime_Unix()) || + !statement->bindStringParameter(boundParam++, iso8601) || + !statement->bindIntParameter(boundParam++, alert->getLoopCount()) || + !statement->bindIntParameter(boundParam++, alert->getLoopPause().count()) || + !statement->bindStringParameter(boundParam, assetId)) { ACSDK_ERROR(LX("storeFailed").m("Could not bind parameter.")); return false; } - if (!statement.step()) { + if (!statement->step()) { ACSDK_ERROR(LX("storeFailed").m("Could not perform step.")); return false; } @@ -419,26 +671,127 @@ bool SQLiteAlertStorage::store(std::shared_ptr alert) { // capture the generated database id in the alert object. alert->m_dbId = id; + if (!storeAlertAssets(&m_db, id, alert->m_assetConfiguration.assets)) { + ACSDK_ERROR(LX("storeFailed").m("Could not store alertAssets.")); + return false; + } + + if (!storeAlertAssetPlayOrderItems(&m_db, id, alert->m_assetConfiguration.assetPlayOrderItems)) { + ACSDK_ERROR(LX("storeFailed").m("Could not store alertAssetPlayOrderItems.")); + return false; + } + return true; } -bool SQLiteAlertStorage::load(std::vector>* alertContainer) { - if (!m_dbHandle) { - ACSDK_ERROR(LX("loadFailed").m("Database handle is not open.")); +static bool loadAlertAssets(SQLiteDatabase* db, std::map>* alertAssetsMap) { + const std::string sqlString = "SELECT * FROM " + ALERT_ASSETS_TABLE_NAME + ";"; + + auto statement = db->createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("loadAlertAssetsFailed").m("Could not create statement.")); + return false; + } + + int alertId = 0; + std::string avsId; + std::string url; + + if (!statement->step()) { + ACSDK_ERROR(LX("loadAlertAssetsFailed").m("Could not perform step.")); + return false; + } + + while (SQLITE_ROW == statement->getStepResult()) { + int numberColumns = statement->getColumnCount(); + + for (int i = 0; i < numberColumns; i++) { + std::string columnName = statement->getColumnName(i); + + if ("alert_id" == columnName) { + alertId = statement->getColumnInt(i); + } else if ("avs_id" == columnName) { + avsId = statement->getColumnText(i); + } else if ("url" == columnName) { + url = statement->getColumnText(i); + } + } + + (*alertAssetsMap)[alertId].push_back(Alert::Asset(avsId, url)); + + statement->step(); + } + + return true; +} + +static bool loadAlertAssetPlayOrderItems( + SQLiteDatabase* db, + std::map>* alertAssetOrderItemsMap) { + const std::string sqlString = "SELECT * FROM " + ALERT_ASSET_PLAY_ORDER_ITEMS_TABLE_NAME + ";"; + + auto statement = db->createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("loadAlertAssetPlayOrderItemsFailed").m("Could not create statement.")); + return false; + } + + int alertId = 0; + int playOrderPosition = 0; + std::string playOrderToken; + + if (!statement->step()) { + ACSDK_ERROR(LX("loadAlertAssetPlayOrderItemsFailed").m("Could not perform step.")); return false; } + while (SQLITE_ROW == statement->getStepResult()) { + int numberColumns = statement->getColumnCount(); + + for (int i = 0; i < numberColumns; i++) { + std::string columnName = statement->getColumnName(i); + + if ("alert_id" == columnName) { + alertId = statement->getColumnInt(i); + } else if ("asset_play_order_position" == columnName) { + playOrderPosition = statement->getColumnInt(i); + } else if ("asset_play_order_token" == columnName) { + playOrderToken = statement->getColumnText(i); + } + } + + (*alertAssetOrderItemsMap)[alertId].insert(AssetOrderItem{playOrderPosition, playOrderToken}); + + statement->step(); + } + + return true; +} + +bool SQLiteAlertStorage::loadHelper(int dbVersion, std::vector>* alertContainer) { if (!alertContainer) { - ACSDK_ERROR(LX("loadFailed").m("Alert container parameter is nullptr.")); + ACSDK_ERROR(LX("loadHelperFailed").m("Alert container parameter is nullptr.")); + return false; + } + + if (dbVersion != ALERTS_DATABASE_VERSION_ONE && dbVersion != ALERTS_DATABASE_VERSION_TWO) { + ACSDK_ERROR(LX("loadHelperFailed").d("Invalid version", dbVersion)); return false; } - std::string sqlString = "SELECT * FROM " + ALERTS_TABLE_NAME + ";"; + std::string alertsTableName = ALERTS_TABLE_NAME; + if (ALERTS_DATABASE_VERSION_TWO == dbVersion) { + alertsTableName = ALERTS_V2_TABLE_NAME; + } + + const std::string sqlString = "SELECT * FROM " + alertsTableName + ";"; - SQLiteStatement statement(m_dbHandle, sqlString); + auto statement = m_db.createStatement(sqlString); - if (!statement.isValid()) { - ACSDK_ERROR(LX("loadFailed").m("Could not create statement.")); + if (!statement) { + ACSDK_ERROR(LX("loadHelperFailed").m("Could not create statement.")); return false; } @@ -447,77 +800,108 @@ bool SQLiteAlertStorage::load(std::vector>* alertContaine std::string token; int type = 0; int state = 0; - int64_t scheduledTime_Unix = 0; std::string scheduledTime_ISO_8601; + int loopCount = 0; + int loopPauseInMilliseconds = 0; + std::string backgroundAssetId; - if (!statement.step()) { - ACSDK_ERROR(LX("loadFailed").m("Could not perform step.")); + if (!statement->step()) { + ACSDK_ERROR(LX("loadHelperFailed").m("Could not perform step.")); return false; } - while (SQLITE_ROW == statement.getStepResult()) { - - int numberColumns = statement.getColumnCount(); + while (SQLITE_ROW == statement->getStepResult()) { + int numberColumns = statement->getColumnCount(); // SQLite cannot guarantee the order of the columns in a given row, so this logic is required. for (int i = 0; i < numberColumns; i++) { - - std::string columnName = statement.getColumnName(i); + std::string columnName = statement->getColumnName(i); if ("id" == columnName) { - id = statement.getColumnInt(i); + id = statement->getColumnInt(i); } else if ("token" == columnName) { - token = statement.getColumnText(i); + token = statement->getColumnText(i); } else if ("type" == columnName) { - type = statement.getColumnInt(i); + type = statement->getColumnInt(i); } else if ("state" == columnName) { - state = statement.getColumnInt(i); - } else if ("scheduled_time_unix" == columnName) { - scheduledTime_Unix = statement.getColumnInt64(i); + state = statement->getColumnInt(i); } else if ("scheduled_time_iso_8601" == columnName) { - scheduledTime_ISO_8601 = statement.getColumnText(i); + scheduledTime_ISO_8601 = statement->getColumnText(i); + } else if ("asset_loop_count" == columnName) { + loopCount = statement->getColumnInt(i); + } else if ("asset_loop_pause_milliseconds" == columnName) { + loopPauseInMilliseconds = statement->getColumnInt(i); + } else if ("background_asset" == columnName) { + backgroundAssetId = statement->getColumnText(i); } } std::shared_ptr alert; if (ALERT_EVENT_TYPE_ALARM == type) { - alert = std::make_shared(); + alert = std::make_shared(m_alertsAudioFactory->alarmDefault(), m_alertsAudioFactory->alarmShort()); } else if (ALERT_EVENT_TYPE_TIMER == type) { - alert = std::make_shared(); + alert = std::make_shared(m_alertsAudioFactory->timerDefault(), m_alertsAudioFactory->timerShort()); + } else if (ALERT_EVENT_TYPE_REMINDER == type) { + alert = std::make_shared( + m_alertsAudioFactory->reminderDefault(), m_alertsAudioFactory->reminderShort()); } else { - ACSDK_ERROR(LX("loadFailed") - .m("Could not instantiate an alert object.") - .d("type read from database", type)); + ACSDK_ERROR( + LX("loadHelperFailed").m("Could not instantiate an alert object.").d("type read from database", type)); return false; } alert->m_dbId = id; alert->m_token = token; - alert->m_scheduledTime_Unix = scheduledTime_Unix; - alert->m_scheduledTime_ISO_8601 = scheduledTime_ISO_8601; + alert->setTime_ISO_8601(scheduledTime_ISO_8601); + alert->setLoopCount(loopCount); + alert->setLoopPause(std::chrono::milliseconds{loopPauseInMilliseconds}); + alert->setBackgroundAssetId(backgroundAssetId); if (!dbFieldToAlertState(state, &(alert->m_state))) { - ACSDK_ERROR(LX("loadFailed") - .m("Could not convert alert state.")); + ACSDK_ERROR(LX("loadHelperFailed").m("Could not convert alert state.")); return false; } alertContainer->push_back(alert); - statement.step(); + statement->step(); } - statement.finalize(); + statement->finalize(); - return true; -} + std::map> alertAssetsMap; + if (!loadAlertAssets(&m_db, &alertAssetsMap)) { + ACSDK_ERROR(LX("loadHelperFailed").m("Could not load alert assets.")); + return false; + } -bool SQLiteAlertStorage::modify(std::shared_ptr alert) { - if (!m_dbHandle) { - ACSDK_ERROR(LX("modifyFailed").m("Database handle is not open.")); + std::map> alertAssetOrderItemsMap; + if (!loadAlertAssetPlayOrderItems(&m_db, &alertAssetOrderItemsMap)) { + ACSDK_ERROR(LX("loadHelperFailed").m("Could not load alert asset play order items.")); return false; } + for (auto alert : *alertContainer) { + if (alertAssetsMap.find(alert->m_dbId) != alertAssetsMap.end()) { + for (auto& mapEntry : alertAssetsMap[alert->m_dbId]) { + alert->m_assetConfiguration.assets[mapEntry.id] = mapEntry; + } + } + if (alertAssetOrderItemsMap.find(alert->m_dbId) != alertAssetOrderItemsMap.end()) { + for (auto& mapEntry : alertAssetOrderItemsMap[alert->m_dbId]) { + alert->m_assetConfiguration.assetPlayOrderItems.push_back(mapEntry.name); + } + } + } + + return true; +} + +bool SQLiteAlertStorage::load(std::vector>* alertContainer) { + return loadHelper(ALERTS_DATABASE_VERSION_TWO, alertContainer); +} + +bool SQLiteAlertStorage::modify(std::shared_ptr alert) { if (!alert) { ACSDK_ERROR(LX("modifyFailed").m("Alert parameter is nullptr.")); return false; @@ -528,9 +912,8 @@ bool SQLiteAlertStorage::modify(std::shared_ptr alert) { return false; } - std::string sqlString = std::string("UPDATE " + ALERTS_TABLE_NAME + " SET ") + - "state=?, scheduled_time_unix=?, scheduled_time_iso_8601=? " + - "WHERE id=?;"; + const std::string sqlString = "UPDATE " + ALERTS_V2_TABLE_NAME + " SET " + + "state=?, scheduled_time_unix=?, scheduled_time_iso_8601=? " + "WHERE id=?;"; int alertState = ALERT_STATE_SET; if (!alertStateToDbField(alert->m_state, &alertState)) { @@ -538,23 +921,24 @@ bool SQLiteAlertStorage::modify(std::shared_ptr alert) { return false; } - SQLiteStatement statement(m_dbHandle, sqlString); + auto statement = m_db.createStatement(sqlString); - if (!statement.isValid()) { + if (!statement) { ACSDK_ERROR(LX("modifyFailed").m("Could not create statement.")); return false; } int boundParam = 1; - if (!statement.bindIntParameter(boundParam++, alertState) || - !statement.bindInt64Parameter(boundParam++, alert->m_scheduledTime_Unix) || - !statement.bindStringParameter(boundParam++, alert->m_scheduledTime_ISO_8601) || - !statement.bindIntParameter(boundParam++, alert->m_dbId)) { + auto iso8601 = alert->getScheduledTime_ISO_8601(); + if (!statement->bindIntParameter(boundParam++, alertState) || + !statement->bindInt64Parameter(boundParam++, alert->getScheduledTime_Unix()) || + !statement->bindStringParameter(boundParam++, iso8601) || + !statement->bindIntParameter(boundParam++, alert->m_dbId)) { ACSDK_ERROR(LX("modifyFailed").m("Could not bind a parameter.")); return false; } - if (!statement.step()) { + if (!statement->step()) { ACSDK_ERROR(LX("modifyFailed").m("Could not perform step.")); return false; } @@ -563,29 +947,30 @@ bool SQLiteAlertStorage::modify(std::shared_ptr alert) { } /** - * A utility function to delete an alert from the database for a given alert id. + * A utility function to delete alert records from the database for a given alert id. + * This function will clean up records in the alerts table. * - * @param dbHandle The database handle. + * @param db The database object. * @param alertId The alert id of the alert to be deleted. * @return Whether the delete operation was successful. */ -static bool eraseAlertByAlertId(sqlite3* dbHandle, int alertId) { - std::string sqlString = "DELETE FROM " + ALERTS_TABLE_NAME + " WHERE id=?;"; +static bool eraseAlert(SQLiteDatabase* db, int alertId) { + const std::string sqlString = "DELETE FROM " + ALERTS_V2_TABLE_NAME + " WHERE id=?;"; - SQLiteStatement statement(dbHandle, sqlString); + auto statement = db->createStatement(sqlString); - if (!statement.isValid()) { + if (!statement) { ACSDK_ERROR(LX("eraseAlertByAlertIdFailed").m("Could not create statement.")); return false; } int boundParam = 1; - if (!statement.bindIntParameter(boundParam, alertId)) { + if (!statement->bindIntParameter(boundParam, alertId)) { ACSDK_ERROR(LX("eraseAlertByAlertIdFailed").m("Could not bind a parameter.")); return false; } - if (!statement.step()) { + if (!statement->step()) { ACSDK_ERROR(LX("eraseAlertByAlertIdFailed").m("Could not perform step.")); return false; } @@ -593,64 +978,138 @@ static bool eraseAlertByAlertId(sqlite3* dbHandle, int alertId) { return true; } -bool SQLiteAlertStorage::erase(std::shared_ptr alert) { - if (!m_dbHandle) { - ACSDK_ERROR(LX("eraseFailed").m("Database handle is not open.")); +/** + * A utility function to delete alert records from the database for a given alert id. + * This function will clean up records in the alertAssets table. + * + * @param db The database object. + * @param alertId The alert id of the alert to be deleted. + * @return Whether the delete operation was successful. + */ +static bool eraseAlertAssets(SQLiteDatabase* db, int alertId) { + const std::string sqlString = "DELETE FROM " + ALERT_ASSETS_TABLE_NAME + " WHERE alert_id=?;"; + + auto statement = db->createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("eraseAlertAssetsFailed").m("Could not create statement.")); return false; } - if (!alert) { - ACSDK_ERROR(LX("eraseFailed").m("Alert parameter is nullptr.")); + int boundParam = 1; + if (!statement->bindIntParameter(boundParam, alertId)) { + ACSDK_ERROR(LX("eraseAlertAssetsFailed").m("Could not bind a parameter.")); return false; } - if (!alertExists(alert->m_token)) { - ACSDK_ERROR(LX("eraseFailed").m("Cannot delete alert - not in database.").d("token", alert->m_token)); + if (!statement->step()) { + ACSDK_ERROR(LX("eraseAlertAssetsFailed").m("Could not perform step.")); return false; } - return eraseAlertByAlertId(m_dbHandle, alert->m_dbId); + return true; } -bool SQLiteAlertStorage::erase(const std::vector & alertDbIds) { - if (!m_dbHandle) { - ACSDK_ERROR(LX("eraseFailed").m("Database handle is not open.")); +/** + * A utility function to delete alert records from the database for a given alert id. + * This function will clean up records in the alertAssetPlayOrderItems table. + * + * @param db The database object. + * @param alertId The alert id of the alert to be deleted. + * @return Whether the delete operation was successful. + */ +static bool eraseAlertAssetPlayOrderItems(SQLiteDatabase* db, int alertId) { + const std::string sqlString = "DELETE FROM " + ALERT_ASSET_PLAY_ORDER_ITEMS_TABLE_NAME + " WHERE alert_id=?;"; + + auto statement = db->createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("eraseAlertAssetPlayOrderItemsFailed").m("Could not create statement.")); return false; } - for (auto id : alertDbIds) { - if (!alertExistsByAlertId(m_dbHandle, id)) { - ACSDK_ERROR(LX("eraseFailed").m("Cannot erase an alert - does not exist in db.").d("id", id)); - return false; - } + int boundParam = 1; + if (!statement->bindIntParameter(boundParam, alertId)) { + ACSDK_ERROR(LX("eraseAlertAssetPlayOrderItemsFailed").m("Could not bind a parameter.")); + return false; + } - if (!eraseAlertByAlertId(m_dbHandle, id)) { - ACSDK_ERROR(LX("eraseFailed").m("Cannot erase an alert.").d("id", id)); - return false; - } + if (!statement->step()) { + ACSDK_ERROR(LX("eraseAlertAssetPlayOrderItemsFailed").m("Could not perform step.")); + return false; } return true; } -bool SQLiteAlertStorage::clearDatabase() { - if (!clearTable(m_dbHandle, ALERTS_TABLE_NAME)) { - ACSDK_ERROR(LX("clearDatabaseFailed").m("could not clear alerts table.")); +/** + * A utility function to delete an alert from the database for a given alert id. This will clean up records in + * all tables which are associated with the alert. + * + * @param db The DB object. + * @param alertId The alert id of the alert to be deleted. + * @return Whether the delete operation was successful. + */ +static bool eraseAlertByAlertId(SQLiteDatabase* db, int alertId) { + if (!db) { + ACSDK_ERROR(LX("eraseAlertByAlertIdFailed").m("db is nullptr.")); + return false; + } + + if (!eraseAlert(db, alertId)) { + ACSDK_ERROR(LX("eraseAlertByAlertIdFailed").m("Could not erase alert table items.")); + return false; + } + + if (!eraseAlertAssets(db, alertId)) { + ACSDK_ERROR(LX("eraseAlertByAlertIdFailed").m("Could not erase alertAsset table items.")); + return false; + } + + if (!eraseAlertAssetPlayOrderItems(db, alertId)) { + ACSDK_ERROR(LX("eraseAlertByAlertIdFailed").m("Could not erase alertAssetPlayOrderItems table items.")); + return false; + } + + return true; +} + +bool SQLiteAlertStorage::erase(std::shared_ptr alert) { + if (!alert) { + ACSDK_ERROR(LX("eraseFailed").m("Alert parameter is nullptr.")); + return false; + } + + if (!alertExists(alert->m_token)) { + ACSDK_ERROR(LX("eraseFailed").m("Cannot delete alert - not in database.").d("token", alert->m_token)); return false; } + return eraseAlertByAlertId(&m_db, alert->m_dbId); +} + +bool SQLiteAlertStorage::clearDatabase() { + const std::vector tablesToClear = { + ALERTS_V2_TABLE_NAME, ALERT_ASSETS_TABLE_NAME, ALERT_ASSET_PLAY_ORDER_ITEMS_TABLE_NAME}; + for (auto& tableName : tablesToClear) { + if (!m_db.clearTable(tableName)) { + ACSDK_ERROR(LX("clearDatabaseFailed").d("could not clear table", tableName)); + return false; + } + } + return true; } /** * Utility diagnostic function to print a one-line summary of all alerts in the database. * - * @param dbHandle The database handle. + * @param db The database object. */ -static void printOneLineSummary(sqlite3* dbHandle) { +static void printOneLineSummary(SQLiteDatabase* db) { int numberAlerts = 0; - if (!getNumberTableRows(dbHandle, ALERTS_TABLE_NAME, &numberAlerts)) { + if (!getNumberTableRows(db, ALERTS_V2_TABLE_NAME, &numberAlerts)) { ACSDK_ERROR(LX("printOneLineSummaryFailed").m("could not read number of alerts.")); return; } @@ -661,15 +1120,17 @@ static void printOneLineSummary(sqlite3* dbHandle) { /** * Utility diagnostic function to print the details of all the alerts stored in the database. * - * @param dbHandle The database handle. + * @param db The database object. * @param shouldPrintEverything If @c true, then all details of an alert will be printed. If @c false, then * summary information will be printed instead. */ static void printAlertsSummary( - sqlite3* dbHandle, const std::vector> & alerts, bool shouldPrintEverything = false) { - printOneLineSummary(dbHandle); + SQLiteDatabase* db, + const std::vector>& alerts, + bool shouldPrintEverything = false) { + printOneLineSummary(db); - for (auto & alert : alerts) { + for (auto& alert : alerts) { alert->printDiagnostic(); } } @@ -679,18 +1140,18 @@ void SQLiteAlertStorage::printStats(StatLevel level) { load(&alerts); switch (level) { case StatLevel::ONE_LINE: - printOneLineSummary(m_dbHandle); + printOneLineSummary(&m_db); break; case StatLevel::ALERTS_SUMMARY: - printAlertsSummary(m_dbHandle, alerts, false); + printAlertsSummary(&m_db, alerts, false); break; case StatLevel::EVERYTHING: - printAlertsSummary(m_dbHandle, alerts, true); + printAlertsSummary(&m_db, alerts, true); break; } } -} // namespace storage -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK \ No newline at end of file +} // namespace storage +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Alerts/src/Timer.cpp b/CapabilityAgents/Alerts/src/Timer.cpp index c4cb1b389e..e09a5d6087 100644 --- a/CapabilityAgents/Alerts/src/Timer.cpp +++ b/CapabilityAgents/Alerts/src/Timer.cpp @@ -1,19 +1,16 @@ /* - * Timer.cpp + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * - * Copyright 2017 Amazon.com, Inc. or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at * - * 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://aws.amazon.com/apache2.0/ * - * 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. + * or in the "license" file accompanying this file. This file 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 "Alerts/Timer.h" @@ -22,33 +19,19 @@ namespace alexaClientSDK { namespace capabilityAgents { namespace alerts { -/// Definition for static class data member. -std::string Timer::m_defaultAudioFilePath; -/// Definition for static class data member. -std::string Timer::m_defaultShortAudioFilePath; /// Definition for static class data member. const std::string Timer::TYPE_NAME = "TIMER"; -void Timer::setDefaultAudioFilePath(const std::string & filePath) { - m_defaultAudioFilePath = filePath; -} - -void Timer::setDefaultShortAudioFilePath(const std::string & filePath) { - m_defaultShortAudioFilePath = filePath; -} - -std::string Timer::getDefaultAudioFilePath() const { - return m_defaultAudioFilePath; -} - -std::string Timer::getDefaultShortAudioFilePath() const { - return m_defaultShortAudioFilePath; +Timer::Timer( + std::function()> defaultAudioFactory, + std::function()> shortAudioFactory) : + Alert(defaultAudioFactory, shortAudioFactory) { } std::string Timer::getTypeName() const { return TYPE_NAME; } -} // namespace alerts -} // namespace capabilityAgents -} // namespace alexaClientSDK \ No newline at end of file +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Alerts/test/AlarmAlertTest.cpp b/CapabilityAgents/Alerts/test/AlarmAlertTest.cpp new file mode 100644 index 0000000000..4d689ec8bf --- /dev/null +++ b/CapabilityAgents/Alerts/test/AlarmAlertTest.cpp @@ -0,0 +1,67 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include "Alerts/Alarm.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace alerts { +namespace test { + +static const std::string ALARM_DEFAULT_DATA = "alarm default data"; +static const std::string ALARM_SHORT_DATA = "alarm short data"; + +class AlarmAlertTest : public ::testing::Test { +public: + AlarmAlertTest(); + + static std::unique_ptr alarmDefaultFactory() { + return std::unique_ptr(new std::stringstream(ALARM_DEFAULT_DATA)); + } + + static std::unique_ptr alarmShortFactory() { + return std::unique_ptr(new std::stringstream(ALARM_SHORT_DATA)); + } + + std::shared_ptr m_alarm; +}; + +AlarmAlertTest::AlarmAlertTest() : m_alarm{std::make_shared(alarmDefaultFactory, alarmShortFactory)} { +} + +TEST_F(AlarmAlertTest, defaultAudio) { + std::ostringstream oss; + oss << m_alarm->getDefaultAudioFactory()()->rdbuf(); + + ASSERT_EQ(ALARM_DEFAULT_DATA, oss.str()); +} + +TEST_F(AlarmAlertTest, shortAudio) { + std::ostringstream oss; + oss << m_alarm->getShortAudioFactory()()->rdbuf(); + + ASSERT_EQ(ALARM_SHORT_DATA, oss.str()); +} + +TEST_F(AlarmAlertTest, testGetTypeName) { + ASSERT_EQ(m_alarm->getTypeName(), Alarm::TYPE_NAME); +} + +} // namespace test +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Alerts/test/AlertSchedulerTest.cpp b/CapabilityAgents/Alerts/test/AlertSchedulerTest.cpp new file mode 100644 index 0000000000..deab781505 --- /dev/null +++ b/CapabilityAgents/Alerts/test/AlertSchedulerTest.cpp @@ -0,0 +1,605 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +#include "Alerts/AlertScheduler.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace alerts { +namespace test { + +/// Tokens for alerts. +static const std::string ALERT1_TOKEN = "token1"; +static const std::string ALERT2_TOKEN = "token2"; +static const std::string ALERT3_TOKEN = "token3"; + +/// Test alert type +static const std::string ALERT_TYPE = "TEST_ALERT_TYPE"; + +/// A schedule instant in the past for alerts. +static const std::string PAST_INSTANT = "2000-01-01T12:34:56+0000"; + +/// A schedule instant in the future for alerts. +static const std::string FUTURE_INSTANT = "2030-01-01T12:34:56+0000"; + +/// Amount of time that the alert observer should wait for a task to finish. +static const std::chrono::milliseconds TEST_TIMEOUT{100}; + +/// Alert past due time limit. +static const std::chrono::seconds ALERT_PAST_DUE_TIME_LIMIT{10}; + +class MockRenderer : public renderer::RendererInterface { +public: + MOCK_METHOD1( + setObserver, + void(std::shared_ptr observer)); + MOCK_METHOD4( + start, + void( + std::function()> audioFactory, + const std::vector& urls, + int loopCount, + std::chrono::milliseconds loopPause)); + MOCK_METHOD0(stop, void()); +}; + +class TestAlert : public Alert { +public: + TestAlert() : + Alert(defaultAudioFactory, shortAudioFactory), + m_alertType{ALERT_TYPE}, + m_renderer{std::make_shared()} { + this->setRenderer(m_renderer); + } + + TestAlert(const std::string& token, const std::string& schedTime) : + Alert(defaultAudioFactory, shortAudioFactory), + m_alertType{ALERT_TYPE}, + m_renderer{std::make_shared()} { + this->setRenderer(m_renderer); + + // clang-format off + const std::string payloadJson = + "{" + "\"token\": \"" + token + "\"," + "\"type\": \"" + m_alertType + "\"," + "\"scheduledTime\": \"" + schedTime + "\"" + "}"; + // clang-format on + + std::string errorMessage; + rapidjson::Document payload; + payload.Parse(payloadJson); + + this->parseFromJson(payload, &errorMessage); + } + + std::string getTypeName() const override { + return m_alertType; + } + +private: + static std::unique_ptr defaultAudioFactory() { + return std::unique_ptr(new std::stringstream("default audio")); + } + + static std::unique_ptr shortAudioFactory() { + return std::unique_ptr(new std::stringstream("short audio")); + } + + const std::string m_alertType; + std::shared_ptr m_renderer; +}; + +class MockAlertStorage : public storage::AlertStorageInterface { +public: + MockAlertStorage() { + m_createDatabaseRetVal = true; + m_openRetVal = true; + m_isOpenRetVal = true; + m_alertExistsRetVal = true; + m_storeRetVal = true; + m_loadRetVal = true; + m_eraseRetVal = true; + } + + bool createDatabase() { + return m_createDatabaseRetVal; + } + bool open() { + return m_openRetVal; + } + bool isOpen() { + return m_isOpenRetVal; + } + void close() { + } + bool alertExists(const std::string& token) { + return m_alertExistsRetVal; + } + bool store(std::shared_ptr alert) { + return m_storeRetVal; + } + bool load(std::vector>* alertContainer) { + if (m_loadRetVal) { + alertContainer->clear(); + for (std::shared_ptr alertToAdd : m_alertsInStorage) { + alertContainer->push_back(alertToAdd); + } + } + return m_loadRetVal; + } + bool erase(const std::vector& alertDbIds) { + return m_eraseRetVal; + } + void setCreateDatabaseRetVal(bool retVal) { + m_createDatabaseRetVal = retVal; + } + void setOpenRetVal(bool retVal) { + m_openRetVal = retVal; + } + void setIsOpenRetVal(bool retVal) { + m_isOpenRetVal = retVal; + } + void setAlertExistsRetVal(bool retVal) { + m_alertExistsRetVal = retVal; + } + void setStoreRetVal(bool retVal) { + m_storeRetVal = retVal; + } + void setLoadRetVal(bool retVal) { + m_loadRetVal = retVal; + } + void setEraseRetVal(bool retVal) { + m_eraseRetVal = retVal; + } + void setAlerts(std::vector> alertsToAdd) { + m_alertsInStorage.clear(); + for (std::shared_ptr alertToAdd : alertsToAdd) { + m_alertsInStorage.push_back(alertToAdd); + } + } + + MOCK_METHOD1(erase, bool(std::shared_ptr)); + MOCK_METHOD1(modify, bool(std::shared_ptr)); + MOCK_METHOD0(clearDatabase, bool()); + +private: + std::vector> m_alertsInStorage; + bool m_createDatabaseRetVal; + bool m_openRetVal; + bool m_isOpenRetVal; + bool m_alertExistsRetVal; + bool m_storeRetVal; + bool m_loadRetVal; + bool m_eraseRetVal; +}; + +class TestAlertObserver : public AlertObserverInterface { +public: + bool waitFor(AlertScheduler::State newState) { + std::unique_lock lock(m_mutex); + return m_conditionVariable.wait_for(lock, TEST_TIMEOUT, [this, newState] { return m_state == newState; }); + } + + void onAlertStateChange(const std::string& alertToken, AlertScheduler::State newState, const std::string& reason) { + std::lock_guard lock(m_mutex); + m_state = newState; + m_conditionVariable.notify_all(); + } + +private: + std::mutex m_mutex; + std::condition_variable m_conditionVariable; + AlertScheduler::State m_state; +}; + +class AlertSchedulerTest : public ::testing::Test { +public: + AlertSchedulerTest(); + void SetUp() override; + std::shared_ptr doSimpleTestSetup(bool activateAlert = false, bool initWithAlertObserver = false); + +protected: + std::shared_ptr m_alertStorage; + std::shared_ptr m_alertRenderer; + std::chrono::seconds m_alertPastDueTimeLimit; + std::shared_ptr m_alertScheduler; + std::shared_ptr m_testAlertObserver; +}; + +AlertSchedulerTest::AlertSchedulerTest() : + m_alertStorage{std::make_shared()}, + m_alertRenderer{std::make_shared()}, + m_alertPastDueTimeLimit{ALERT_PAST_DUE_TIME_LIMIT}, + m_alertScheduler{std::make_shared(m_alertStorage, m_alertRenderer, m_alertPastDueTimeLimit)}, + m_testAlertObserver{std::make_shared()} { +} + +void AlertSchedulerTest::SetUp() { + m_alertStorage->setOpenRetVal(true); +} + +/** + * Helper method that does a basic setup for tests. + * The method performs the following functions: + * 1 - Creates a test alert and adds it to be scheduled + * 2 - If initializing with alert scheduler observer, then creates alert scheduler observer + * 3 - Initializes the alert scheduler + * 4 - Based on the argument, may initialize the alert + * + * The method will return the scheduled alert + */ +std::shared_ptr AlertSchedulerTest::doSimpleTestSetup(bool activateAlert, bool initWithAlertObserver) { + std::vector> alertToAdd; + std::shared_ptr alert = std::make_shared(ALERT1_TOKEN, FUTURE_INSTANT); + alertToAdd.push_back(alert); + m_alertStorage->setAlerts(alertToAdd); + + if (initWithAlertObserver) { + m_alertScheduler->initialize(m_testAlertObserver); + } else { + std::shared_ptr alertSchedulerObs{ + std::make_shared(m_alertStorage, m_alertRenderer, m_alertPastDueTimeLimit)}; + m_alertScheduler->initialize(alertSchedulerObs); + } + + if (activateAlert) { + alert->activate(); + m_alertScheduler->updateFocus(avsCommon::avs::FocusState::BACKGROUND); + } + + return alert; +} + +/** + * Test initializing AlertScheduler + */ +TEST_F(AlertSchedulerTest, initialize) { + /// check if init fails if scheduler is not available + ASSERT_FALSE(m_alertScheduler->initialize(nullptr)); + + /// check if init fails if a database for alerts cant be created + m_alertStorage->setOpenRetVal(false); + m_alertStorage->setCreateDatabaseRetVal(false); + ASSERT_FALSE(m_alertScheduler->initialize(m_alertScheduler)); + + /// check if init succeeds. Pass in 3 alerts of which 1 is expired. Only 2 should actually remain in the end. + std::shared_ptr alertSchedulerObs{ + std::make_shared(m_alertStorage, m_alertRenderer, m_alertPastDueTimeLimit)}; + m_alertStorage->setOpenRetVal(true); + std::vector> alertsToAdd; + + /// past alert + std::shared_ptr alert1 = std::make_shared(ALERT1_TOKEN, PAST_INSTANT); + alertsToAdd.push_back(alert1); + + /// future active alert + std::shared_ptr alert2 = std::make_shared(ALERT2_TOKEN, FUTURE_INSTANT); + alert2->activate(); + alert2->setStateActive(); + alertsToAdd.push_back(alert2); + + /// future inactive alert + std::shared_ptr alert3 = std::make_shared(ALERT3_TOKEN, FUTURE_INSTANT); + alertsToAdd.push_back(alert3); + m_alertStorage->setAlerts(alertsToAdd); + + /// past alert should get removed + EXPECT_CALL(*(m_alertStorage.get()), erase(testing::_)).Times(1); + + /// active alert should get modified + EXPECT_CALL(*(m_alertStorage.get()), modify(testing::_)).Times(1); + + ASSERT_TRUE(m_alertScheduler->initialize(alertSchedulerObs)); + + const unsigned int expectedRemainingAlerts = 2; + + /// only the 2 future alerts remain + ASSERT_EQ(m_alertScheduler->getContextInfo().scheduledAlerts.size(), expectedRemainingAlerts); +} + +/** + * Test AlertScheduler getting focus + */ +TEST_F(AlertSchedulerTest, updateGetFocus) { + std::shared_ptr alert = doSimpleTestSetup(); + + /// check if focus changes to foreground + m_alertScheduler->updateFocus(avsCommon::avs::FocusState::FOREGROUND); + ASSERT_EQ(m_alertScheduler->getFocusState(), avsCommon::avs::FocusState::FOREGROUND); + + /// check if focus changes to background + m_alertScheduler->updateFocus(avsCommon::avs::FocusState::BACKGROUND); + ASSERT_EQ(m_alertScheduler->getFocusState(), avsCommon::avs::FocusState::BACKGROUND); + + /// check alert state change if focus is gone + m_alertScheduler->updateFocus(avsCommon::avs::FocusState::NONE); + ASSERT_EQ(alert->getState(), Alert::State::STOPPING); +} + +/** + * Test scheduling alerts + */ +TEST_F(AlertSchedulerTest, scheduleAlert) { + /// check that a future alert is scheduled + std::shared_ptr alert1 = doSimpleTestSetup(true); + ASSERT_TRUE(m_alertScheduler->scheduleAlert(alert1)); + + /// check that a future alert is not scheduled if you cant store the alert + std::shared_ptr alert2 = std::make_shared(ALERT2_TOKEN, FUTURE_INSTANT); + m_alertStorage->setStoreRetVal(false); + ASSERT_FALSE(m_alertScheduler->scheduleAlert(alert2)); + + /// check that past alerts cant be scheduled + std::shared_ptr alert3 = std::make_shared(ALERT3_TOKEN, PAST_INSTANT); + m_alertStorage->setStoreRetVal(true); + ASSERT_TRUE(m_alertScheduler->scheduleAlert(alert2)); + ASSERT_FALSE(m_alertScheduler->scheduleAlert(alert3)); +} + +/** + * Test snoozing alerts + */ +TEST_F(AlertSchedulerTest, snoozeAlert) { + doSimpleTestSetup(true); + + /// check that a random alert token is ignored + ASSERT_FALSE(m_alertScheduler->snoozeAlert(ALERT2_TOKEN, FUTURE_INSTANT)); + + /// check that we succeed if the correct token is available + ASSERT_TRUE(m_alertScheduler->snoozeAlert(ALERT1_TOKEN, FUTURE_INSTANT)); +} + +/** + * Test deleting alerts + */ +TEST_F(AlertSchedulerTest, deleteAlert) { + std::shared_ptr alertSchedulerObs{ + std::make_shared(m_alertStorage, m_alertRenderer, m_alertPastDueTimeLimit)}; + std::vector> alertsToAdd; + std::shared_ptr alert1 = std::make_shared(ALERT1_TOKEN, FUTURE_INSTANT); + alertsToAdd.push_back(alert1); + m_alertStorage->setAlerts(alertsToAdd); + m_alertScheduler->initialize(alertSchedulerObs); + m_alertScheduler->updateFocus(avsCommon::avs::FocusState::BACKGROUND); + + /// if active alert and the token matches, ensure that we dont delete it (we deactivate the alert actually) + EXPECT_CALL(*(m_alertStorage.get()), erase(testing::_)).Times(0); + ASSERT_TRUE(m_alertScheduler->deleteAlert(ALERT1_TOKEN)); + + /// check that a random alert token is ignored + ASSERT_FALSE(m_alertScheduler->deleteAlert(ALERT2_TOKEN)); + + /// if inactive alert, then check that we succeed if the correct token is available + std::shared_ptr alert2 = std::make_shared(ALERT2_TOKEN, FUTURE_INSTANT); + alertsToAdd.push_back(alert2); + m_alertStorage->setAlerts(alertsToAdd); + m_alertScheduler->initialize(alertSchedulerObs); + EXPECT_CALL(*(m_alertStorage.get()), erase(testing::_)).Times(1); + ASSERT_TRUE(m_alertScheduler->deleteAlert(ALERT2_TOKEN)); +} + +/** + * Test method that checks if an alert is active + */ +TEST_F(AlertSchedulerTest, isAlertActive) { + std::shared_ptr alertSchedulerObs{ + std::make_shared(m_alertStorage, m_alertRenderer, m_alertPastDueTimeLimit)}; + std::vector> alertsToAdd; + + /// active alert + std::shared_ptr alert1 = std::make_shared(ALERT1_TOKEN, FUTURE_INSTANT); + alertsToAdd.push_back(alert1); + m_alertStorage->setAlerts(alertsToAdd); + m_alertScheduler->initialize(alertSchedulerObs); + m_alertScheduler->updateFocus(avsCommon::avs::FocusState::BACKGROUND); + + /// inactive alert + std::shared_ptr alert2 = std::make_shared(ALERT2_TOKEN, FUTURE_INSTANT); + alertsToAdd.push_back(alert2); + m_alertStorage->setAlerts(alertsToAdd); + + /// Success expected for active alert + ASSERT_TRUE(m_alertScheduler->isAlertActive(alert1)); + + /// Failure expected for inactive alert + ASSERT_FALSE(m_alertScheduler->isAlertActive(alert2)); +} + +/** + * Test to see if the correct context about the scheduler is obtained + */ +TEST_F(AlertSchedulerTest, getContextInfo) { + std::shared_ptr alertSchedulerObs{ + std::make_shared(m_alertStorage, m_alertRenderer, m_alertPastDueTimeLimit)}; + std::vector> alertsToAdd; + + /// Schedule 2 alerts one of which is active. + std::shared_ptr alert1 = std::make_shared(ALERT1_TOKEN, FUTURE_INSTANT); + alertsToAdd.push_back(alert1); + std::shared_ptr alert2 = std::make_shared(ALERT2_TOKEN, FUTURE_INSTANT); + alertsToAdd.push_back(alert2); + m_alertStorage->setAlerts(alertsToAdd); + m_alertScheduler->initialize(alertSchedulerObs); + m_alertScheduler->updateFocus(avsCommon::avs::FocusState::BACKGROUND); + + AlertScheduler::AlertsContextInfo resultContextInfo = m_alertScheduler->getContextInfo(); + + const unsigned int expectedRemainingScheduledAlerts = 2; + const unsigned int expectedRemainingActiveAlerts = 1; + + /// Check that 2 alerts were scheduled, one of which is active. + ASSERT_EQ(resultContextInfo.scheduledAlerts.size(), expectedRemainingScheduledAlerts); + ASSERT_EQ(resultContextInfo.activeAlerts.size(), expectedRemainingActiveAlerts); +} + +/** + * Test local stop on AlertScheduler + */ +TEST_F(AlertSchedulerTest, onLocalStop) { + std::shared_ptr alert = doSimpleTestSetup(true); + + m_alertScheduler->onLocalStop(); + + ASSERT_EQ(alert->getState(), Alert::State::STOPPING); + ASSERT_EQ(alert->getStopReason(), Alert::StopReason::LOCAL_STOP); +} + +/** + * Test if AlertScheduler clears data + */ +TEST_F(AlertSchedulerTest, clearData) { + std::shared_ptr alert = doSimpleTestSetup(true); + EXPECT_CALL(*(m_alertStorage.get()), clearDatabase()).Times(1); + + m_alertScheduler->clearData(); + + ASSERT_EQ(alert->getState(), Alert::State::STOPPING); + ASSERT_EQ(alert->getStopReason(), Alert::StopReason::SHUTDOWN); +} + +/** + * Test if AlertScheduler clears data + */ +TEST_F(AlertSchedulerTest, clearDataLogout) { + std::shared_ptr alert = doSimpleTestSetup(true); + EXPECT_CALL(*(m_alertStorage.get()), clearDatabase()).Times(1); + + m_alertScheduler->clearData(Alert::StopReason::LOG_OUT); + + ASSERT_EQ(alert->getState(), Alert::State::STOPPING); + ASSERT_EQ(alert->getStopReason(), Alert::StopReason::LOG_OUT); +} + +/** + * Test if AlertScheduler shuts down appropriately + */ +TEST_F(AlertSchedulerTest, shutdown) { + doSimpleTestSetup(true); + + m_alertScheduler->shutdown(); + + const unsigned int expectedRemainingAlerts = 0; + /// check if all scheduled alerts are cleared out + ASSERT_EQ(m_alertScheduler->getContextInfo().scheduledAlerts.size(), expectedRemainingAlerts); +} + +/** + * Test Alert state change to Active on an inactive alert + */ +TEST_F(AlertSchedulerTest, onAlertStateChangeStartedInactiveAlert) { + const std::string testReason = "stateStarted"; + auto testState = AlertScheduler::State::STARTED; + + doSimpleTestSetup(false, true); + + /// check that we ignore inactive alerts + EXPECT_CALL(*(m_alertStorage.get()), modify(testing::_)).Times(0); + m_alertScheduler->onAlertStateChange(ALERT1_TOKEN, testState, testReason); +} + +/** + * Test Alert state change to Active on an active alert + */ +TEST_F(AlertSchedulerTest, onAlertStateChangeStartedActiveAlert) { + const std::string testReason = "stateStarted"; + auto testState = AlertScheduler::State::STARTED; + + doSimpleTestSetup(true, true); + + /// active alerts should be handled + EXPECT_CALL(*(m_alertStorage.get()), modify(testing::_)).Times(1); + m_alertScheduler->onAlertStateChange(ALERT1_TOKEN, testState, testReason); + ASSERT_TRUE(m_testAlertObserver->waitFor(testState)); +} + +/** + * Test Alert state change to Stopped + */ +TEST_F(AlertSchedulerTest, onAlertStateChangeStopped) { + const std::string testReason = "stateStopped"; + auto testState = AlertScheduler::State::STOPPED; + + doSimpleTestSetup(true, true); + + EXPECT_CALL(*(m_alertStorage.get()), erase(testing::_)).Times(1); + m_alertScheduler->onAlertStateChange(ALERT1_TOKEN, testState, testReason); + ASSERT_TRUE(m_testAlertObserver->waitFor(testState)); +} + +/** + * Test Alert state change to Completed + */ +TEST_F(AlertSchedulerTest, onAlertStateChangeCompleted) { + const std::string testReason = "stateCompleted"; + auto testState = AlertScheduler::State::COMPLETED; + + doSimpleTestSetup(true, true); + + EXPECT_CALL(*(m_alertStorage.get()), erase(testing::_)).Times(1); + m_alertScheduler->onAlertStateChange(ALERT1_TOKEN, testState, testReason); + ASSERT_TRUE(m_testAlertObserver->waitFor(testState)); +} + +/** + * Test Alert state change to Snoozed + */ +TEST_F(AlertSchedulerTest, onAlertStateChangeSnoozed) { + const std::string testReason = "stateSnoozed"; + auto testState = AlertScheduler::State::SNOOZED; + + doSimpleTestSetup(true, true); + + EXPECT_CALL(*(m_alertStorage.get()), modify(testing::_)).Times(1); + m_alertScheduler->onAlertStateChange(ALERT1_TOKEN, testState, testReason); + ASSERT_TRUE(m_testAlertObserver->waitFor(testState)); +} + +/** + * Test Alert state change to Error on an active alert + */ +TEST_F(AlertSchedulerTest, onAlertStateChangeErrorActiveAlert) { + const std::string testReason = "stateError"; + auto testState = AlertScheduler::State::ERROR; + + doSimpleTestSetup(true, true); + + EXPECT_CALL(*(m_alertStorage.get()), erase(testing::_)).Times(1); + m_alertScheduler->onAlertStateChange(ALERT1_TOKEN, testState, testReason); + ASSERT_TRUE(m_testAlertObserver->waitFor(testState)); +} + +/** + * Test Alert state change to Error on an inactive alert + */ +TEST_F(AlertSchedulerTest, onAlertStateChangeErrorInactiveAlert) { + const std::string testReason = "stateError"; + auto testState = AlertScheduler::State::ERROR; + + doSimpleTestSetup(false, true); + + EXPECT_CALL(*(m_alertStorage.get()), erase(testing::_)).Times(1); + m_alertScheduler->onAlertStateChange(ALERT1_TOKEN, testState, testReason); + ASSERT_TRUE(m_testAlertObserver->waitFor(testState)); +} + +} // namespace test +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Alerts/test/AlertTest.cpp b/CapabilityAgents/Alerts/test/AlertTest.cpp new file mode 100644 index 0000000000..814f8250d2 --- /dev/null +++ b/CapabilityAgents/Alerts/test/AlertTest.cpp @@ -0,0 +1,323 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include "Alerts/Alert.h" +#include "AVSCommon/Utils/Timing/TimeUtils.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace alerts { +namespace test { + +/// Token for testing. +static const std::string TOKEN_TEST("Token_Test"); + +/// Assets for testing. +static const size_t NUM_ASSETS{2}; +static const std::string ASSET_ID1("assetId1"); +static const std::string ASSET_ID2("assetId2"); +static const std::string ASSET_PLAY_ORDER("[\"assetId1\",\"assetId2\"]"); +static const std::string BACKGROUND_ALERT_ASSET("assetId2"); +static const std::string ASSET_URL1("cid:Test1"); +static const std::string ASSET_URL2("cid:Test2"); + +/// Alert type. +static const std::string ALERT_TYPE("MOCK_ALERT_TYPE"); + +/// Scheduled time. +static const std::string SCHED_TIME{"2030-01-01T12:34:56+0000"}; +static const std::string INVALID_FORMAT_SCHED_TIME{"abc"}; + +/// A test date in the past with which to compare regular Alert timestamps. +static const std::string TEST_DATE_IN_THE_PAST{"2000-02-02T12:56:34+0000"}; +/// A test date in the future with which to compare regular Alert timestamps. +static const std::string TEST_DATE_IN_THE_FUTURE{"2030-02-02T12:56:34+0000"}; + +/// Loop info. +static const long LOOP_COUNT{2}; +static const long LOOP_PAUSE_MS{300}; + +/// Data to be made into a stringstream for testing purposes. +static const std::string DEFAULT_AUDIO{"default audio"}; +static const std::string SHORT_AUDIO{"short audio"}; + +class MockAlert : public Alert { +public: + MockAlert() : Alert(defaultAudioFactory, shortAudioFactory) { + } + + std::string getTypeName() const override; + +private: + static std::unique_ptr defaultAudioFactory() { + return std::unique_ptr(new std::stringstream(DEFAULT_AUDIO)); + } + static std::unique_ptr shortAudioFactory() { + return std::unique_ptr(new std::stringstream(SHORT_AUDIO)); + } +}; + +std::string MockAlert::getTypeName() const { + return ALERT_TYPE; +} + +class MockRenderer : public renderer::RendererInterface { +public: + void setObserver(std::shared_ptr observer){}; + void start( + std::function()> audioFactory, + const std::vector& urls = std::vector(), + int loopCount = 0, + std::chrono::milliseconds loopPause = std::chrono::milliseconds{0}){}; + void stop(){}; +}; + +class AlertTest : public ::testing::Test { +public: + AlertTest(); + +protected: + std::shared_ptr m_alert; + std::shared_ptr m_renderer; +}; + +AlertTest::AlertTest() : m_alert{std::make_shared()}, m_renderer{std::make_shared()} { + m_alert->setRenderer(m_renderer); +} + +const std::string getPayloadJson(bool inclToken, bool inclSchedTime, const std::string& schedTime) { + std::string tokenJson; + if (inclToken) { + tokenJson = "\"token\": \"" + TOKEN_TEST + "\","; + } + + std::string schedTimeJson; + if (inclSchedTime) { + schedTimeJson = "\"scheduledTime\": \"" + schedTime + "\","; + } + + // clang-format off + const std::string payloadJson = + "{" + + tokenJson + + "\"type\": \"" + ALERT_TYPE + "\"," + + schedTimeJson + + "\"assets\": [" + "{" + "\"assetId\": \"" + ASSET_ID1 + "\"," + "\"url\": \"" + ASSET_URL1 + "\"" + "}," + "{" + "\"assetId\": \"" + ASSET_ID2 + "\"," + "\"url\": \"" + ASSET_URL2 + "\"" + "}" + "]," + "\"assetPlayOrder\": " + ASSET_PLAY_ORDER + "," + "\"backgroundAlertAsset\": \"" + BACKGROUND_ALERT_ASSET + "\"," + "\"loopCount\": " + std::to_string(LOOP_COUNT) + "," + "\"loopPauseInMilliSeconds\": " + std::to_string(LOOP_PAUSE_MS) + + "}"; + // clang-format on + + return payloadJson; +} + +TEST_F(AlertTest, defaultAudio) { + std::ostringstream oss; + oss << m_alert->getDefaultAudioFactory()()->rdbuf(); + + ASSERT_EQ(DEFAULT_AUDIO, oss.str()); +} + +TEST_F(AlertTest, defaultShortAudio) { + std::ostringstream oss; + oss << m_alert->getShortAudioFactory()()->rdbuf(); + + ASSERT_EQ(SHORT_AUDIO, oss.str()); +} + +TEST_F(AlertTest, testParseFromJsonHappyCase) { + std::string errorMessage; + const std::string payloadJson = getPayloadJson(true, true, SCHED_TIME); + rapidjson::Document payload; + payload.Parse(payloadJson); + + Alert::ParseFromJsonStatus resultStatus = m_alert->parseFromJson(payload, &errorMessage); + Alert::AssetConfiguration assetConfiguration = m_alert->getAssetConfiguration(); + + ASSERT_EQ(resultStatus, Alert::ParseFromJsonStatus::OK); + ASSERT_EQ(m_alert->getToken(), TOKEN_TEST); + ASSERT_EQ(m_alert->getScheduledTime_ISO_8601(), SCHED_TIME); + ASSERT_EQ(m_alert->getBackgroundAssetId(), BACKGROUND_ALERT_ASSET); + ASSERT_EQ(m_alert->getLoopCount(), LOOP_COUNT); + ASSERT_EQ(m_alert->getLoopPause(), std::chrono::milliseconds{LOOP_PAUSE_MS}); + + std::vector assetPlayOrderItems; + assetPlayOrderItems.push_back(ASSET_ID1); + assetPlayOrderItems.push_back(ASSET_ID2); + ASSERT_EQ(assetConfiguration.assetPlayOrderItems, assetPlayOrderItems); + + std::unordered_map assetsMap = assetConfiguration.assets; + ASSERT_EQ(assetsMap.size(), NUM_ASSETS); + ASSERT_EQ(assetsMap[ASSET_ID1].id, ASSET_ID1); + ASSERT_EQ(assetsMap[ASSET_ID1].url, ASSET_URL1); + ASSERT_EQ(assetsMap[ASSET_ID2].id, ASSET_ID2); + ASSERT_EQ(assetsMap[ASSET_ID2].url, ASSET_URL2); +} + +TEST_F(AlertTest, testParseFromJsonMissingToken) { + std::string errorMessage; + const std::string payloadJson = getPayloadJson(false, true, SCHED_TIME); + rapidjson::Document payload; + payload.Parse(payloadJson); + + Alert::ParseFromJsonStatus resultStatus = m_alert->parseFromJson(payload, &errorMessage); + + ASSERT_EQ(resultStatus, Alert::ParseFromJsonStatus::MISSING_REQUIRED_PROPERTY); +} + +TEST_F(AlertTest, testParseFromJsonMissingSchedTime) { + std::string errorMessage; + const std::string payloadJson = getPayloadJson(true, false, SCHED_TIME); + rapidjson::Document payload; + payload.Parse(payloadJson); + + Alert::ParseFromJsonStatus resultStatus = m_alert->parseFromJson(payload, &errorMessage); + + ASSERT_EQ(resultStatus, Alert::ParseFromJsonStatus::MISSING_REQUIRED_PROPERTY); +} + +TEST_F(AlertTest, testParseFromJsonBadSchedTimeFormat) { + const std::string schedTime{INVALID_FORMAT_SCHED_TIME}; + std::string errorMessage; + const std::string payloadJson = getPayloadJson(true, true, schedTime); + rapidjson::Document payload; + payload.Parse(payloadJson); + + Alert::ParseFromJsonStatus resultStatus = m_alert->parseFromJson(payload, &errorMessage); + + ASSERT_EQ(resultStatus, Alert::ParseFromJsonStatus::INVALID_VALUE); +} + +TEST_F(AlertTest, testSetStateActive) { + m_alert->reset(); + ASSERT_EQ(m_alert->getState(), Alert::State::SET); + m_alert->setStateActive(); + ASSERT_NE(m_alert->getState(), Alert::State::ACTIVE); + + m_alert->activate(); + ASSERT_EQ(m_alert->getState(), Alert::State::ACTIVATING); + m_alert->setStateActive(); + ASSERT_EQ(m_alert->getState(), Alert::State::ACTIVE); +} + +TEST_F(AlertTest, testDeactivate) { + Alert::StopReason stopReason = Alert::StopReason::AVS_STOP; + m_alert->deactivate(stopReason); + ASSERT_EQ(m_alert->getState(), Alert::State::STOPPING); + ASSERT_EQ(m_alert->getStopReason(), stopReason); +} + +TEST_F(AlertTest, testSetTimeISO8601) { + avsCommon::utils::timing::TimeUtils timeUtils; + std::string schedTime{"2030-02-02T12:56:34+0000"}; + m_alert->setTime_ISO_8601(schedTime); + int64_t unixTime = 0; + timeUtils.convert8601TimeStringToUnix(schedTime, &unixTime); + + ASSERT_EQ(m_alert->getScheduledTime_ISO_8601(), schedTime); + ASSERT_EQ(m_alert->getScheduledTime_Unix(), unixTime); +} + +TEST_F(AlertTest, testSnoozeBadTime) { + m_alert->reset(); + m_alert->snooze(INVALID_FORMAT_SCHED_TIME); + ASSERT_NE(m_alert->getState(), Alert::State::SNOOZING); +} + +TEST_F(AlertTest, testSnoozeHappyCase) { + m_alert->reset(); + m_alert->snooze("2030-02-02T12:56:34+0000"); + ASSERT_EQ(m_alert->getState(), Alert::State::SNOOZING); +} + +TEST_F(AlertTest, testSetLoopCountNegative) { + int loopCount = -1; + m_alert->setLoopCount(loopCount); + ASSERT_NE(m_alert->getLoopCount(), loopCount); +} + +TEST_F(AlertTest, testSetLoopCountHappyCase) { + int loopCount = 3; + m_alert->setLoopCount(loopCount); + ASSERT_EQ(m_alert->getLoopCount(), loopCount); +} + +TEST_F(AlertTest, testSetLoopPause) { + std::chrono::milliseconds loopPause{900}; + m_alert->setLoopPause(loopPause); + ASSERT_EQ(m_alert->getLoopPause(), loopPause); +} + +TEST_F(AlertTest, testSetBackgroundAssetId) { + std::string backgroundAssetId{"testAssetId"}; + m_alert->setBackgroundAssetId(backgroundAssetId); + ASSERT_EQ(m_alert->getBackgroundAssetId(), backgroundAssetId); +} + +TEST_F(AlertTest, testIsPastDue) { + avsCommon::utils::timing::TimeUtils timeUtils; + int64_t currentUnixTime = 0; + timeUtils.getCurrentUnixTime(¤tUnixTime); + m_alert->setTime_ISO_8601(TEST_DATE_IN_THE_FUTURE); + ASSERT_FALSE(m_alert->isPastDue(currentUnixTime, std::chrono::seconds{1})); + m_alert->setTime_ISO_8601(TEST_DATE_IN_THE_PAST); + ASSERT_TRUE(m_alert->isPastDue(currentUnixTime, std::chrono::seconds{1})); +} + +TEST_F(AlertTest, testStateToString) { + ASSERT_EQ(m_alert->stateToString(Alert::State::UNSET), "UNSET"); + ASSERT_EQ(m_alert->stateToString(Alert::State::SET), "SET"); + ASSERT_EQ(m_alert->stateToString(Alert::State::READY), "READY"); + ASSERT_EQ(m_alert->stateToString(Alert::State::ACTIVATING), "ACTIVATING"); + ASSERT_EQ(m_alert->stateToString(Alert::State::ACTIVE), "ACTIVE"); + ASSERT_EQ(m_alert->stateToString(Alert::State::SNOOZING), "SNOOZING"); + ASSERT_EQ(m_alert->stateToString(Alert::State::SNOOZED), "SNOOZED"); + ASSERT_EQ(m_alert->stateToString(Alert::State::STOPPING), "STOPPING"); + ASSERT_EQ(m_alert->stateToString(Alert::State::STOPPED), "STOPPED"); + ASSERT_EQ(m_alert->stateToString(Alert::State::COMPLETED), "COMPLETED"); +} + +TEST_F(AlertTest, testStopReasonToString) { + ASSERT_EQ(m_alert->stopReasonToString(Alert::StopReason::UNSET), "UNSET"); + ASSERT_EQ(m_alert->stopReasonToString(Alert::StopReason::AVS_STOP), "AVS_STOP"); + ASSERT_EQ(m_alert->stopReasonToString(Alert::StopReason::LOCAL_STOP), "LOCAL_STOP"); + ASSERT_EQ(m_alert->stopReasonToString(Alert::StopReason::SHUTDOWN), "SHUTDOWN"); +} + +TEST_F(AlertTest, testParseFromJsonStatusToString) { + ASSERT_EQ(m_alert->parseFromJsonStatusToString(Alert::ParseFromJsonStatus::OK), "OK"); + ASSERT_EQ( + m_alert->parseFromJsonStatusToString(Alert::ParseFromJsonStatus::MISSING_REQUIRED_PROPERTY), + "MISSING_REQUIRED_PROPERTY"); + ASSERT_EQ(m_alert->parseFromJsonStatusToString(Alert::ParseFromJsonStatus::INVALID_VALUE), "INVALID_VALUE"); +} + +} // namespace test +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Alerts/test/CMakeLists.txt b/CapabilityAgents/Alerts/test/CMakeLists.txt new file mode 100644 index 0000000000..ac1600d1f1 --- /dev/null +++ b/CapabilityAgents/Alerts/test/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +set(INCLUDE_PATH + "${Alerts_INCLUDE_DIRS}" + "${AVSCommon_SOURCE_DIR}/SDKInterfaces/test" + "${AVSCommon_SOURCE_DIR}/Utils/test") + +discover_unit_tests("${INCLUDE_PATH}" "Alerts;UtilsCommonTestLib") diff --git a/CapabilityAgents/Alerts/test/ReminderAlertTest.cpp b/CapabilityAgents/Alerts/test/ReminderAlertTest.cpp new file mode 100644 index 0000000000..bd29ca761a --- /dev/null +++ b/CapabilityAgents/Alerts/test/ReminderAlertTest.cpp @@ -0,0 +1,67 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include "Alerts/Reminder.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace alerts { +namespace test { + +static const std::string REMINDER_DEFAULT_DATA = "reminder default data"; +static const std::string REMINDER_SHORT_DATA = "reminder short data"; + +class ReminderAlertTest : public ::testing::Test { +public: + ReminderAlertTest(); + + static std::unique_ptr reminderDefaultFactory() { + return std::unique_ptr(new std::stringstream(REMINDER_DEFAULT_DATA)); + } + + static std::unique_ptr reminderShortFactory() { + return std::unique_ptr(new std::stringstream(REMINDER_SHORT_DATA)); + } + std::shared_ptr m_reminder; +}; + +ReminderAlertTest::ReminderAlertTest() : + m_reminder{std::make_shared(reminderDefaultFactory, reminderShortFactory)} { +} + +TEST_F(ReminderAlertTest, defaultAudio) { + std::ostringstream oss; + oss << m_reminder->getDefaultAudioFactory()()->rdbuf(); + + ASSERT_EQ(REMINDER_DEFAULT_DATA, oss.str()); +} + +TEST_F(ReminderAlertTest, shortAudio) { + std::ostringstream oss; + oss << m_reminder->getShortAudioFactory()()->rdbuf(); + + ASSERT_EQ(REMINDER_SHORT_DATA, oss.str()); +} + +TEST_F(ReminderAlertTest, testGetTypeName) { + ASSERT_EQ(m_reminder->getTypeName(), Reminder::TYPE_NAME); +} + +} // namespace test +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Alerts/test/Renderer/RendererTest.cpp b/CapabilityAgents/Alerts/test/Renderer/RendererTest.cpp new file mode 100644 index 0000000000..2a27c946a1 --- /dev/null +++ b/CapabilityAgents/Alerts/test/Renderer/RendererTest.cpp @@ -0,0 +1,283 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +#include + +#include "Alerts/Renderer/Renderer.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace alerts { +namespace renderer { +namespace test { + +using namespace avsCommon::utils::mediaPlayer::test; + +/// Amount of time that the renderer observer should wait for a task to finish. +static const std::chrono::milliseconds TEST_TIMEOUT{100}; + +/// Test source Id that exists for the tests +static const avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId TEST_SOURCE_ID_GOOD = 1234; + +/// Test source Id that does not exist for the tests +static const avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId TEST_SOURCE_ID_BAD = 5678; + +/// Test URLs for the renderer +static const std::string TEST_URL1 = "fake.url.one"; +static const std::string TEST_URL2 = "fake.url.two"; + +/// Loop pause for the renderer. +static const std::chrono::milliseconds TEST_LOOP_PAUSE{100}; + +/// Loop count for the renderer. +static const int TEST_LOOP_COUNT = 2; + +class MockRendererObserver : public RendererObserverInterface { +public: + bool waitFor(RendererObserverInterface::State newState) { + std::unique_lock lock(m_mutex); + return m_conditionVariable.wait_for(lock, TEST_TIMEOUT, [this, newState] { return m_state == newState; }); + } + + void onRendererStateChange(RendererObserverInterface::State newState, const std::string& reason) { + std::lock_guard lock(m_mutex); + m_state = newState; + m_conditionVariable.notify_all(); + } + +private: + std::mutex m_mutex; + std::condition_variable m_conditionVariable; + RendererObserverInterface::State m_state; +}; + +class TestMediaPlayer : public MockMediaPlayer { +public: + TestMediaPlayer() { + m_sourceIdRetVal = TEST_SOURCE_ID_GOOD; + m_playRetVal = true; + m_stopRetVal = true; + } + + static std::shared_ptr> create() { + return std::make_shared>(); + } + + bool play(SourceId id) override { + return m_playRetVal; + } + + bool stop(SourceId id) override { + return m_stopRetVal; + } + + SourceId setSource(const std::string& url, std::chrono::milliseconds offset = std::chrono::milliseconds::zero()) + override { + return m_sourceIdRetVal; + } + + void setSourceRetVal(SourceId sourceRetVal) { + m_sourceIdRetVal = sourceRetVal; + } + + void setPlayRetVal(bool playRetVal) { + m_playRetVal = playRetVal; + } + + void setStopRetVal(bool stopRetVal) { + m_stopRetVal = stopRetVal; + } + +private: + SourceId m_sourceIdRetVal; + bool m_playRetVal; + bool m_stopRetVal; +}; + +class RendererTest : public ::testing::Test { +public: + RendererTest(); + ~RendererTest(); + void SetUpTest(); + void TearDown() override; + +protected: + std::shared_ptr m_observer; + std::shared_ptr m_mediaPlayer; + std::shared_ptr m_renderer; + + static std::unique_ptr audioFactoryFunc() { + return std::unique_ptr(new std::stringstream()); + } +}; + +RendererTest::RendererTest() : + m_observer{std::make_shared()}, + m_mediaPlayer{TestMediaPlayer::create()}, + m_renderer{Renderer::create(m_mediaPlayer)} { + m_renderer->setObserver(m_observer); +} + +RendererTest::~RendererTest() { + m_mediaPlayer->setObserver(nullptr); + m_mediaPlayer.reset(); +} + +void RendererTest::SetUpTest() { + std::function()> audioFactory = RendererTest::audioFactoryFunc; + std::vector urls = {TEST_URL1, TEST_URL2}; + m_renderer->setObserver(m_observer); + m_renderer->start(audioFactory, urls, TEST_LOOP_COUNT, TEST_LOOP_PAUSE); +} + +void RendererTest::TearDown() { + m_mediaPlayer->setSourceRetVal(TEST_SOURCE_ID_GOOD); + m_mediaPlayer->setPlayRetVal(true); + m_mediaPlayer->setStopRetVal(true); +} + +/** + * Test if the Renderer class creates an object appropriately and fails when it must + */ +TEST_F(RendererTest, create) { + /// m_renderer was created using create() in the constructor. Check if not null + ASSERT_NE(m_renderer, nullptr); + + /// confirm we return a nullptr if a nullptr was passed in + ASSERT_EQ(Renderer::create(nullptr), nullptr); +} + +/** + * Test if the Renderer starts + */ +TEST_F(RendererTest, start) { + SetUpTest(); + + ASSERT_TRUE(m_observer->waitFor(RendererObserverInterface::State::UNSET)); +} + +/** + * Test if the Renderer stops + */ +TEST_F(RendererTest, stop) { + SetUpTest(); + + m_renderer->stop(); + + ASSERT_FALSE(m_observer->waitFor(RendererObserverInterface::State::ERROR)); +} + +/** + * Test if the Renderer errors out when it cant stop + */ +TEST_F(RendererTest, stopError) { + SetUpTest(); + m_mediaPlayer->setStopRetVal(false); + + m_renderer->stop(); + + ASSERT_TRUE(m_observer->waitFor(RendererObserverInterface::State::ERROR)); +} + +/** + * Test if the Renderer correctly handles Playback starting + */ +TEST_F(RendererTest, onPlaybackStarted) { + SetUpTest(); + + /// shouldn't start if the source is bad + m_renderer->onPlaybackStarted(TEST_SOURCE_ID_BAD); + ASSERT_FALSE(m_observer->waitFor(RendererObserverInterface::State::STARTED)); + + /// should start if the source is good + m_renderer->onPlaybackStarted(TEST_SOURCE_ID_GOOD); + ASSERT_TRUE(m_observer->waitFor(RendererObserverInterface::State::STARTED)); +} + +/** + * Test if the Renderer correctly handles Playback stopping + */ +TEST_F(RendererTest, onPlaybackStopped) { + SetUpTest(); + + /// shouldn't stop if the source is bad + m_renderer->onPlaybackStopped(TEST_SOURCE_ID_BAD); + ASSERT_FALSE(m_observer->waitFor(RendererObserverInterface::State::STOPPED)); + + /// should stop if the source is good + m_renderer->onPlaybackStopped(TEST_SOURCE_ID_GOOD); + ASSERT_TRUE(m_observer->waitFor(RendererObserverInterface::State::STOPPED)); +} + +/** + * Test if the Renderer correctly handles Playback finishing + */ +TEST_F(RendererTest, onPlaybackFinished) { + avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId blankSourceId{}; + + /// shouldn't finish if the source is bad + m_renderer->onPlaybackFinished(TEST_SOURCE_ID_BAD); + ASSERT_FALSE(m_observer->waitFor(RendererObserverInterface::State::STOPPED)); + + /// should finish if the source is good + m_renderer->onPlaybackFinished(blankSourceId); + ASSERT_TRUE(m_observer->waitFor(RendererObserverInterface::State::STOPPED)); +} + +/** + * Test if the Renderer gracefully handles errors when Playback finishing + */ +TEST_F(RendererTest, onPlaybackFinishedError) { + SetUpTest(); + + /// shouldn't finish even if the source is good, if the media player is errored out + m_mediaPlayer->setSourceRetVal(avsCommon::utils::mediaPlayer::MediaPlayerInterface::ERROR); + m_renderer->onPlaybackFinished(TEST_SOURCE_ID_GOOD); + ASSERT_FALSE(m_observer->waitFor(RendererObserverInterface::State::STOPPED)); + + /// shouldn't finish even if the source is good, if the media player can't play it + m_mediaPlayer->setSourceRetVal(TEST_SOURCE_ID_GOOD); + m_mediaPlayer->setPlayRetVal(false); + m_renderer->onPlaybackFinished(TEST_SOURCE_ID_GOOD); + ASSERT_FALSE(m_observer->waitFor(RendererObserverInterface::State::STOPPED)); +} + +/** + * Test if the Renderer correctly handles Playback erroring out + */ +TEST_F(RendererTest, onPlaybackError) { + const avsCommon::utils::mediaPlayer::ErrorType& errorType = + avsCommon::utils::mediaPlayer::ErrorType::MEDIA_ERROR_INVALID_REQUEST; + std::string errorMsg = "testError"; + + SetUpTest(); + + /// shouldn't respond with errors if the source is bad + m_renderer->onPlaybackError(TEST_SOURCE_ID_BAD, errorType, errorMsg); + ASSERT_FALSE(m_observer->waitFor(RendererObserverInterface::State::ERROR)); + + /// shouldn't respond with errors if the source is good + m_renderer->onPlaybackError(TEST_SOURCE_ID_GOOD, errorType, errorMsg); + ASSERT_TRUE(m_observer->waitFor(RendererObserverInterface::State::ERROR)); +} + +} // namespace test +} // namespace renderer +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Alerts/test/TimerAlertTest.cpp b/CapabilityAgents/Alerts/test/TimerAlertTest.cpp new file mode 100644 index 0000000000..8ef12aa792 --- /dev/null +++ b/CapabilityAgents/Alerts/test/TimerAlertTest.cpp @@ -0,0 +1,66 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include "Alerts/Timer.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace alerts { +namespace test { + +static const std::string TIMER_DEFAULT_DATA = "timer default data"; +static const std::string TIMER_SHORT_DATA = "timer short data"; + +class TimerAlertTest : public ::testing::Test { +public: + TimerAlertTest(); + + static std::unique_ptr timerDefaultFactory() { + return std::unique_ptr(new std::stringstream(TIMER_DEFAULT_DATA)); + } + + static std::unique_ptr timerShortFactory() { + return std::unique_ptr(new std::stringstream(TIMER_SHORT_DATA)); + } + + std::shared_ptr m_timer; +}; + +TimerAlertTest::TimerAlertTest() : m_timer{std::make_shared(timerDefaultFactory, timerShortFactory)} { +} + +TEST_F(TimerAlertTest, defaultAudio) { + std::ostringstream oss; + oss << m_timer->getDefaultAudioFactory()()->rdbuf(); + + ASSERT_EQ(TIMER_DEFAULT_DATA, oss.str()); +} + +TEST_F(TimerAlertTest, shortAudio) { + std::ostringstream oss; + oss << m_timer->getShortAudioFactory()()->rdbuf(); + + ASSERT_EQ(TIMER_SHORT_DATA, oss.str()); +} + +TEST_F(TimerAlertTest, testGetTypeName) { + ASSERT_EQ(m_timer->getTypeName(), Timer::TYPE_NAME); +} +} // namespace test +} // namespace alerts +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/AudioPlayer/CMakeLists.txt b/CapabilityAgents/AudioPlayer/CMakeLists.txt index c4e60e6610..145e1e03f7 100644 --- a/CapabilityAgents/AudioPlayer/CMakeLists.txt +++ b/CapabilityAgents/AudioPlayer/CMakeLists.txt @@ -4,3 +4,4 @@ project(AudioPlayer LANGUAGES CXX) include(../../build/BuildDefaults.cmake) add_subdirectory("src") +acsdk_add_test_subdirectory_if_allowed() diff --git a/CapabilityAgents/AudioPlayer/include/AudioPlayer/AudioItem.h b/CapabilityAgents/AudioPlayer/include/AudioPlayer/AudioItem.h index 1c8410dc95..e2ddfa85d7 100644 --- a/CapabilityAgents/AudioPlayer/include/AudioPlayer/AudioItem.h +++ b/CapabilityAgents/AudioPlayer/include/AudioPlayer/AudioItem.h @@ -1,7 +1,5 @@ /* - * AudioItem.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,14 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_AUDIO_ITEM_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_AUDIO_ITEM_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_AUDIOITEM_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_AUDIOITEM_H_ + +#include +#include +#include + +#include #include "StreamFormat.h" @@ -62,7 +66,6 @@ struct AudioItem { /// Contains values for progress reports. struct ProgressReport { - /** * Specifies when to send the @c ProgressReportDelayElapsed event to AVS. @c ProgressReportDelayElapsed * must only be sent once at the specified interval. @@ -90,8 +93,8 @@ struct AudioItem { } stream; }; -} // namespace audioPlayer -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace audioPlayer +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_AUDIO_ITEM_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_AUDIOITEM_H_ diff --git a/CapabilityAgents/AudioPlayer/include/AudioPlayer/AudioPlayer.h b/CapabilityAgents/AudioPlayer/include/AudioPlayer/AudioPlayer.h index c101c8d7de..0773b22ae3 100644 --- a/CapabilityAgents/AudioPlayer/include/AudioPlayer/AudioPlayer.h +++ b/CapabilityAgents/AudioPlayer/include/AudioPlayer/AudioPlayer.h @@ -1,7 +1,5 @@ /* - * AudioPlayer.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,25 +13,29 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_AUDIO_PLAYER_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_AUDIO_PLAYER_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_AUDIOPLAYER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_AUDIOPLAYER_H_ #include #include +#include +#include #include #include #include +#include +#include #include +#include #include #include #include +#include #include "AudioItem.h" #include "ClearBehavior.h" -#include "ErrorType.h" #include "PlayBehavior.h" -#include "PlayerActivity.h" namespace alexaClientSDK { namespace capabilityAgents { @@ -46,11 +48,12 @@ namespace audioPlayer { * * @note For instances of this class to be cleaned up correctly, @c shutdown() must be called. */ -class AudioPlayer : - public avsCommon::avs::CapabilityAgent, - public avsCommon::utils::mediaPlayer::MediaPlayerObserverInterface, - public avsCommon::utils::RequiresShutdown, - public std::enable_shared_from_this { +class AudioPlayer + : public avsCommon::avs::CapabilityAgent + , public avsCommon::sdkInterfaces::AudioPlayerInterface + , public avsCommon::utils::mediaPlayer::MediaPlayerObserverInterface + , public avsCommon::utils::RequiresShutdown + , public std::enable_shared_from_this { public: /** * Creates a new @c AudioPlayer instance. @@ -59,21 +62,22 @@ class AudioPlayer : * @param messageSender The object to use for sending events. * @param focusManager The channel focus manager used to manage usage of the dialog channel. * @param contextManager The AVS Context manager used to generate system context for events. - * @param attachmentManager The instance of the @c AttachmentManagerInterface to use to read the attachment. * @param exceptionSender The object to use for sending AVS Exception messages. + * @param playbackRouter The @c PlaybackRouterInterface instance to use when @c AudioPlayer becomes active. * @return A @c std::shared_ptr to the new @c AudioPlayer instance. */ static std::shared_ptr create( - std::shared_ptr mediaPlayer, - std::shared_ptr messageSender, - std::shared_ptr focusManager, - std::shared_ptr contextManager, - std::shared_ptr attachmentManager, - std::shared_ptr exceptionSender); + std::shared_ptr mediaPlayer, + std::shared_ptr messageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender, + std::shared_ptr playbackRouter); /// @name StateProviderInterface Functions /// @{ - void provideState(unsigned int stateRequestToken) override; + void provideState(const avsCommon::avs::NamespaceAndName& stateProviderName, unsigned int stateRequestToken) + override; /// @} /// @name CapabilityAgent/DirectiveHandlerInterface Functions @@ -93,13 +97,22 @@ class AudioPlayer : /// @name MediaPlayerObserverInterface Functions /// @{ - void onPlaybackStarted() override; - void onPlaybackFinished() override; - void onPlaybackError(std::string error) override; - void onPlaybackPaused() override; - void onPlaybackResumed() override; - void onBufferUnderrun() override; - void onBufferRefilled() override; + void onPlaybackStarted(SourceId id) override; + void onPlaybackStopped(SourceId id) override; + void onPlaybackFinished(SourceId id) override; + void onPlaybackError(SourceId id, const avsCommon::utils::mediaPlayer::ErrorType& type, std::string error) override; + void onPlaybackPaused(SourceId id) override; + void onPlaybackResumed(SourceId id) override; + void onBufferUnderrun(SourceId id) override; + void onBufferRefilled(SourceId id) override; + void onTags(SourceId id, std::unique_ptr vectorOfTags) override; + /// @} + + /// @name AudioPlayerInterface Functions + /// @{ + void addObserver(std::shared_ptr observer) override; + void removeObserver(std::shared_ptr observer) override; + std::chrono::milliseconds getAudioItemOffset() override; /// @} private: @@ -110,17 +123,17 @@ class AudioPlayer : * @param messageSender The object to use for sending events. * @param focusManager The channel focus manager used to manage usage of the dialog channel. * @param contextManager The AVS Context manager used to generate system context for events. - * @param attachmentManager The instance of the @c AttachmentManagerInterface to use to read the attachment. * @param exceptionSender The object to use for sending AVS Exception messages. + * @param playbackRouter The playback router used for switching playback buttons handler to default. * @return A @c std::shared_ptr to the new @c AudioPlayer instance. */ AudioPlayer( - std::shared_ptr mediaPlayer, - std::shared_ptr messageSender, - std::shared_ptr focusManager, - std::shared_ptr contextManager, - std::shared_ptr attachmentManager, - std::shared_ptr exceptionSender); + std::shared_ptr mediaPlayer, + std::shared_ptr messageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender, + std::shared_ptr playbackRouter); /// @name RequiresShutdown Functions /// @{ @@ -164,6 +177,13 @@ class AudioPlayer : */ void removeDirective(std::shared_ptr info); + /** + * Send the handling completed notification and clean up the resources the specified @c DirectiveInfo. + * + * @param info The @c DirectiveInfo to complete and clean up. + */ + void setHandlingCompleted(std::shared_ptr info); + /** * @name Executor Thread Functions * @@ -198,30 +218,38 @@ class AudioPlayer : */ void executeOnFocusChanged(avsCommon::avs::FocusState newFocus); - /// Handle notification that audio playback has started. - void executeOnPlaybackStarted(); + /// @copydoc onPlaybackStarted() + void executeOnPlaybackStarted(SourceId id); - /// Handle notification that audio playback has finished. - void executeOnPlaybackFinished(); + /// @copydoc onPlaybackStopped() + void executeOnPlaybackStopped(SourceId id); - /** - * Handle notification that audio playback encountered an error. - * - * @param error Text describing the nature of the error. - */ - void executeOnPlaybackError(std::string error); + /// @copydoc onPlaybackFinished() + void executeOnPlaybackFinished(SourceId id); + + /// Performs necessary cleanup when playback has finished/stopped. + void handlePlaybackCompleted(); - /// Handle notification that audio playback has paused. - void executeOnPlaybackPaused(); + /// Cancels the timers when playback has stopped/finished. + void cancelTimers(); - /// Handle notification that audio playback has resumed after being paused. - void executeOnPlaybackResumed(); + /// @copydoc MediaPlayerObserverInterface::onPlaybackError() + void executeOnPlaybackError(SourceId id, const avsCommon::utils::mediaPlayer::ErrorType& type, std::string error); - /// Handle notification that audio playback has run out of data in the audio buffer. - void executeOnBufferUnderrun(); + /// @copydoc MediaPlayerObserverInterface::onPlaybackPaused() + void executeOnPlaybackPaused(SourceId id); - /// Handle notification that audio playback has resumed after encountering a buffer underrun. - void executeOnBufferRefilled(); + /// @copydoc MediaPlayerObserverInterface::onPlaybackResumed() + void executeOnPlaybackResumed(SourceId id); + + /// @copydoc MediaPlayerObserverInterface::onBufferUnderrun() + void executeOnBufferUnderrun(SourceId id); + + /// @copydoc MediaPlayerObserverInterface::onBufferRefilled() + void executeOnBufferRefilled(SourceId id); + + /// @copydoc MediaPlayerObserverInterface::onTags() + void executeOnTags(SourceId id, std::shared_ptr vectorOfTags); /** * This function executes a parsed @c PLAY directive. @@ -235,11 +263,11 @@ class AudioPlayer : void playNextItem(); /** - * This function executes a parsed @c STOP directive. + * This function stops playback of the current song, and optionally starts the next queued song. * - * @param releaseFocus Indicates whether this function should release focus on the content channel. + * @param startNextSong Indicates whether to start playing the next song after stopping the current song. */ - void executeStop(bool releaseFocus = true); + void executeStop(bool startNextSong = false); /** * This function executes a parsed @c CLEAR_QUEUE directive. @@ -253,32 +281,19 @@ class AudioPlayer : * * @param activity The state to change to. */ - void changeActivity(PlayerActivity activity); - - /** - * Send the handling completed notification and clean up the resources of @c m_currentInfo. - */ - void setHandlingCompleted(std::shared_ptr info); - - /** - * Send ExceptionEncountered and report a failure to handle the @c AVSDirective. - * - * @param info The @c AVSDirective that encountered the error and ancillary information. - * @param type The type of Exception that was encountered. - * @param message The error message to include in the ExceptionEncountered message. - */ - void sendExceptionEncounteredAndReportFailed( - std::shared_ptr info, - const std::string& message, - avsCommon::avs::ExceptionErrorType type = avsCommon::avs::ExceptionErrorType::INTERNAL_ERROR); + void changeActivity(avsCommon::avs::PlayerActivity activity); /** * Most of the @c AudioPlayer events use the same payload, and only vary in their event name. This utility * function constructs and sends these generic @c AudioPlayer events. * - * @param name The name of the event to send. + * @param eventName The name of the event to send. + * @param offset The offset to send. If this parameter is left with its default (invalid) value, the current + * offset from MediaPlayer will be sent. */ - void sendEventWithTokenAndOffset(const std::string& eventName); + void sendEventWithTokenAndOffset( + const std::string& eventName, + std::chrono::milliseconds offset = avsCommon::utils::mediaPlayer::MEDIA_PLAYER_INVALID_OFFSET); /// Send a @c PlaybackStarted event. void sendPlaybackStartedEvent(); @@ -309,9 +324,9 @@ class AudioPlayer : * @param message A message describing the failure. */ void sendPlaybackFailedEvent( - const std::string& failingToken, - ErrorType errorType, - const std::string& message); + const std::string& failingToken, + avsCommon::utils::mediaPlayer::ErrorType errorType, + const std::string& message); /// Send a @c PlaybackStopped event. void sendPlaybackStoppedEvent(); @@ -325,8 +340,15 @@ class AudioPlayer : /// Send a @c PlaybackQueueCleared event. void sendPlaybackQueueClearedEvent(); - /// Send a @c PlaybackMetadataExtracted event. - void sendStreamMetadataExtractedEvent(); + /** + * Send a @c StreamMetadataExtracted event. + * + * @param vectorOfTags Pointer to vector of tags that should be sent to AVS. + */ + void sendStreamMetadataExtractedEvent(std::shared_ptr vectorOfTags); + + /// Notify AudioPlayerObservers of state changes. + void notifyObserver(); /** * Get the current offset in the audio stream. @@ -342,6 +364,9 @@ class AudioPlayer : /// @} + /// This is used to safely access the time utilities. + avsCommon::utils::timing::TimeUtils m_timeUtils; + /// MediaPlayerInterface instance to send audio attachments to. std::shared_ptr m_mediaPlayer; @@ -354,37 +379,30 @@ class AudioPlayer : /// The @c ContextManager that needs to be updated of the state. std::shared_ptr m_contextManager; - /// The @c AttachmentManager used to read attachments. - std::shared_ptr m_attachmentManager; + /// The @c PlaybackRouterInterface instance to use when @c AudioPlayer becomes active. + std::shared_ptr m_playbackRouter; /** - * @name Playback Synchronization Variables + * The current state of the @c AudioPlayer. + * + * This variable is primarily an Executor Thread Variable (see below) in that it is always written from the + * executor thread and can be safely read without synchronization from the executor thread. However, this is not + * listed as an Executor Thread Variable with the others below because there is one non-executor function which + * reads from this variable: @c onFocusChanged(). * - * These member variables are used during focus change events to wait for callbacks from @c MediaPlayer. They are - * accessed asychronously by the @c MediaPlayerObserverInterface callbacks, as well as by @c m_executor functions. - * These accesses are synchronized by m_blaybackMutex. + * Focus change notifications are required to block until the focus change completes, so @c onFocusChanged() blocks + * waiting for a state change. This is a read-only operation from outside the executor thread, so it doesn't break + * thread-safety for reads inside the executor, but it does require that these reads from outside the executor lock + * @c m_currentActivityMutex, and that writes from inside the executor lock @c m_currentActivityMutex and notify + * @c m_currentActivityConditionVariable.. */ - /// @{ - - /// Flag which is set by @c onPlaybackStarted. - bool m_playbackStarted; + avsCommon::avs::PlayerActivity m_currentActivity; - /// Flag which is set by @c onPlaybackPaused. - bool m_playbackPaused; + /// Protects writes to @c m_currentActivity and waiting on @c m_currentActivityConditionVariable. + std::mutex m_currentActivityMutex; - /// Flag which is set by @c onPlaybackResumed. - bool m_playbackResumed; - - /// Flag which is set by @c onPlaybackFinished. - bool m_playbackFinished; - - /// @} - - /// Mutex to synchronize access to Playback Synchronization Variables. - std::mutex m_playbackMutex; - - /// Condition variable to signal changes to Playback Synchronization Variables. - std::condition_variable m_playbackConditionVariable; + /// Provides notifications of changes to @c m_currentActivity. + std::condition_variable m_currentActivityConditionVariable; /** * @name Executor Thread Variables @@ -392,13 +410,7 @@ class AudioPlayer : * These member variables are only accessed by functions in the @c m_executor worker thread, and do not require any * synchronization. */ - /// @{ - - /// The current state of the @c AudioPlayer. - PlayerActivity m_currentActivity; - - /// Sub-state indicating we're transitioning to @c PLAYING from @c IDLE/STOPPED/FINISHED - bool m_starting; + /// @{ /// The current focus state of the @c AudioPlayer on the content channel. avsCommon::avs::FocusState m_focus; @@ -409,6 +421,15 @@ class AudioPlayer : /// The token of the currently (or most recently) playing @c AudioItem. std::string m_token; + /// The AudioItemId of the currently (or most recent) playing @c AudioItem. + std::string m_audioItemId; + + /// The initial offset for the currently (or most recent) playing @c AudioItem. + std::chrono::milliseconds m_initialOffset; + + /// The id of the currently (or most recently) playing @c MediaPlayer source. + SourceId m_sourceId; + /// When in the @c BUFFER_UNDERRUN state, this records the time at which the state was entered. std::chrono::steady_clock::time_point m_bufferUnderrunTimestamp; @@ -425,6 +446,21 @@ class AudioPlayer : */ std::chrono::milliseconds m_offset; + /// A set of observers to be notified when there's a change in the audio state. + std::unordered_set> m_observers; + + /** + * A flag which is set when calling @c MediaPlayerInterface::stop(), and used by @c onPlaybackStopped() to decide + * whether to continue on to the next queued item. + */ + bool m_playNextItemAfterStopped; + + /** + * A flag which is set when calling @c MediaPlayerInterface::stop(), and cleared in @c executeOnPlaybackStopped(). + * This flag is used to tell if the @c AudioPlayer is in the process of stopping playback. + */ + bool m_isStopCalled; + /// @} /** @@ -436,8 +472,8 @@ class AudioPlayer : avsCommon::utils::threading::Executor m_executor; }; -} // namespace audioPlayer -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace audioPlayer +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_AUDIO_PLAYER_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_AUDIOPLAYER_H_ diff --git a/CapabilityAgents/AudioPlayer/include/AudioPlayer/ClearBehavior.h b/CapabilityAgents/AudioPlayer/include/AudioPlayer/ClearBehavior.h index 5b33d5bfde..7c8df5f34d 100644 --- a/CapabilityAgents/AudioPlayer/include/AudioPlayer/ClearBehavior.h +++ b/CapabilityAgents/AudioPlayer/include/AudioPlayer/ClearBehavior.h @@ -1,7 +1,5 @@ /* - * ClearBehavior.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_CLEAR_BEHAVIOR_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_CLEAR_BEHAVIOR_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_CLEARBEHAVIOR_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_CLEARBEHAVIOR_H_ #include @@ -27,7 +25,7 @@ namespace alexaClientSDK { namespace capabilityAgents { namespace audioPlayer { -/// Used to determine clear queue behavior. +/// Used to determine clear queue behavior. enum class ClearBehavior { /// Clears the queue and continues to play the currently playing stream. CLEAR_ENQUEUED, @@ -59,7 +57,7 @@ inline std::string clearBehaviorToString(ClearBehavior clearBehavior) { * @param[out] clearBehavior The converted @c ClearBehavior. * @return @c true if the string converted succesfully, else @c false. */ -inline bool stringToClearBehavior(const std::string& text, ClearBehavior * clearBehavior) { +inline bool stringToClearBehavior(const std::string& text, ClearBehavior* clearBehavior) { if (nullptr == clearBehavior) { return false; } else if (clearBehaviorToString(ClearBehavior::CLEAR_ENQUEUED) == text) { @@ -98,8 +96,8 @@ inline bool convertToValue(const rapidjson::Value& documentNode, ClearBehavior* return stringToClearBehavior(text, clearBehavior); } -} // namespace audioPlayer -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace audioPlayer +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_CLEAR_BEHAVIOR_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_CLEARBEHAVIOR_H_ diff --git a/CapabilityAgents/AudioPlayer/include/AudioPlayer/ErrorType.h b/CapabilityAgents/AudioPlayer/include/AudioPlayer/ErrorType.h index 37407c7052..9d1237d975 100644 --- a/CapabilityAgents/AudioPlayer/include/AudioPlayer/ErrorType.h +++ b/CapabilityAgents/AudioPlayer/include/AudioPlayer/ErrorType.h @@ -1,7 +1,5 @@ /* - * ErrorType.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,14 +13,15 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_ERROR_TYPE_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_ERROR_TYPE_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_ERRORTYPE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_ERRORTYPE_H_ #include namespace alexaClientSDK { -namespace capabilityAgents { -namespace audioPlayer { +namespace avsCommon { +namespace utils { +namespace mediaPlayer { /// Identifies the specific type of error in a @c PlaybackFailed event. enum class ErrorType { @@ -71,8 +70,9 @@ inline std::ostream& operator<<(std::ostream& stream, const ErrorType& errorType return stream << errorTypeToString(errorType); } -} // namespace audioPlayer -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace mediaPlayer +} // namespace utils +} // namespace avsCommon +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_ERROR_TYPE_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_ERRORTYPE_H_ diff --git a/CapabilityAgents/AudioPlayer/include/AudioPlayer/IntervalCalculator.h b/CapabilityAgents/AudioPlayer/include/AudioPlayer/IntervalCalculator.h new file mode 100644 index 0000000000..a5dd48768c --- /dev/null +++ b/CapabilityAgents/AudioPlayer/include/AudioPlayer/IntervalCalculator.h @@ -0,0 +1,44 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_INTERVALCALCULATOR_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_INTERVALCALCULATOR_H_ + +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace audioPlayer { + +/** + * Calculate the time relative to an offet for a given interval period. Error cases are negative intervals or offsets + * and null pointers for the return value. Additionally, an interval of 0 is illegal. + * + * @param interval The period (starting from 0) that the interval occurs at. + * @param offset The time that has elapsed so far + * @param [out] intervalStart A pointer to the return value. It will contain the relative time from the offset when the + * next interval will start. + * @return True if successful, false if there is an error. + */ +bool getIntervalStart( + const std::chrono::milliseconds& interval, + const std::chrono::milliseconds& offset, + std::chrono::milliseconds* intervalStart); + +} // namespace audioPlayer +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_INTERVALCALCULATOR_H_ diff --git a/CapabilityAgents/AudioPlayer/include/AudioPlayer/PlayBehavior.h b/CapabilityAgents/AudioPlayer/include/AudioPlayer/PlayBehavior.h index 3939612817..50c5b071ed 100644 --- a/CapabilityAgents/AudioPlayer/include/AudioPlayer/PlayBehavior.h +++ b/CapabilityAgents/AudioPlayer/include/AudioPlayer/PlayBehavior.h @@ -1,7 +1,5 @@ /* - * PlayBehavior.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_PLAY_BEHAVIOR_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_PLAY_BEHAVIOR_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_PLAYBEHAVIOR_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_PLAYBEHAVIOR_H_ #include @@ -67,7 +65,7 @@ inline std::string playBehaviorToString(PlayBehavior playBehavior) { * @param[out] playBehavior The converted @c PlayBehavior. * @return @c true if the string converted succesfully, else @c false. */ -inline bool stringToPlayBehavior(const std::string& text, PlayBehavior * playBehavior) { +inline bool stringToPlayBehavior(const std::string& text, PlayBehavior* playBehavior) { if (nullptr == playBehavior) { return false; } else if (playBehaviorToString(PlayBehavior::REPLACE_ALL) == text) { @@ -109,8 +107,8 @@ inline bool convertToValue(const rapidjson::Value& documentNode, PlayBehavior* p return stringToPlayBehavior(text, playBehavior); } -} // namespace audioPlayer -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace audioPlayer +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_PLAY_BEHAVIOR_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_PLAYBEHAVIOR_H_ diff --git a/CapabilityAgents/AudioPlayer/include/AudioPlayer/StreamFormat.h b/CapabilityAgents/AudioPlayer/include/AudioPlayer/StreamFormat.h index 73523244ee..e05c03cd4d 100644 --- a/CapabilityAgents/AudioPlayer/include/AudioPlayer/StreamFormat.h +++ b/CapabilityAgents/AudioPlayer/include/AudioPlayer/StreamFormat.h @@ -1,7 +1,5 @@ /* - * StreamFormat.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_STREAM_FORMAT_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_STREAM_FORMAT_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_STREAMFORMAT_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_STREAMFORMAT_H_ #include @@ -58,7 +56,7 @@ inline std::string streamFormatToString(StreamFormat streamFormat) { * @param[out] streamFormat The converted @c StreamFormat. * @return @c true if the string converted succesfully, else @c false. */ -inline bool stringToStreamFormat(const std::string& text, StreamFormat * streamFormat) { +inline bool stringToStreamFormat(const std::string& text, StreamFormat* streamFormat) { if (nullptr == streamFormat) { return false; } else if (text == streamFormatToString(StreamFormat::AUDIO_MPEG)) { @@ -94,8 +92,8 @@ inline bool convertToValue(const rapidjson::Value& documentNode, StreamFormat* s return stringToStreamFormat(text, streamFormat); } -} // namespace audioPlayer -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace audioPlayer +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif //ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_AUDIO_PLAYER_INCLUDE_AUDIO_PLAYER_STREAM_FORMAT_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_AUDIOPLAYER_INCLUDE_AUDIOPLAYER_STREAMFORMAT_H_ diff --git a/CapabilityAgents/AudioPlayer/src/AudioPlayer.cpp b/CapabilityAgents/AudioPlayer/src/AudioPlayer.cpp index 1aae064f28..0ea793d97c 100644 --- a/CapabilityAgents/AudioPlayer/src/AudioPlayer.cpp +++ b/CapabilityAgents/AudioPlayer/src/AudioPlayer.cpp @@ -1,7 +1,5 @@ /* - * AudioPlayer.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -24,7 +22,8 @@ #include #include -#include + +#include "AudioPlayer/IntervalCalculator.h" namespace alexaClientSDK { namespace capabilityAgents { @@ -41,6 +40,9 @@ using namespace avsCommon::utils::mediaPlayer; /// String to identify log entries originating from this file. static const std::string TAG("AudioPlayer"); +/// A link to @c MediaPlayerInterface::ERROR. +static const AudioPlayer::SourceId ERROR_SOURCE_ID = MediaPlayerInterface::ERROR; + /** * Create a LogEntry using this file's TAG and the specified event string. * @@ -51,9 +53,6 @@ static const std::string TAG("AudioPlayer"); /// The name of the @c FocusManager channel used by @c AudioPlayer. static const std::string CHANNEL_NAME = avsCommon::sdkInterfaces::FocusManagerInterface::CONTENT_CHANNEL_NAME; -/// The activityId string used with @c FocusManager by @c AudioPlayer. -static const std::string ACTIVITY_ID = "AudioPlayer.Play"; - /// The namespace for this capability agent. static const std::string NAMESPACE = "AudioPlayer"; @@ -88,12 +87,12 @@ static const char STUTTER_DURATION_KEY[] = "stutterDurationInMilliseconds"; static const std::chrono::seconds TIMEOUT{2}; std::shared_ptr AudioPlayer::create( - std::shared_ptr mediaPlayer, - std::shared_ptr messageSender, - std::shared_ptr focusManager, - std::shared_ptr contextManager, - std::shared_ptr attachmentManager, - std::shared_ptr exceptionSender) { + std::shared_ptr mediaPlayer, + std::shared_ptr messageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender, + std::shared_ptr playbackRouter) { if (nullptr == mediaPlayer) { ACSDK_ERROR(LX("createFailed").d("reason", "nullMediaPlayer")); return nullptr; @@ -106,27 +105,25 @@ std::shared_ptr AudioPlayer::create( } else if (nullptr == contextManager) { ACSDK_ERROR(LX("createFailed").d("reason", "nullContextManager")); return nullptr; - } else if (nullptr == attachmentManager) { - ACSDK_ERROR(LX("createFailed").d("reason", "nullAttachmentManager")); - return nullptr; } else if (nullptr == exceptionSender) { ACSDK_ERROR(LX("createFailed").d("reason", "nullExceptionSender")); return nullptr; + } else if (nullptr == playbackRouter) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullPlaybackRouter")); + return nullptr; } - auto audioPlayer = std::shared_ptr(new AudioPlayer( - mediaPlayer, - messageSender, - focusManager, - contextManager, - attachmentManager, - exceptionSender)); + auto audioPlayer = std::shared_ptr( + new AudioPlayer(mediaPlayer, messageSender, focusManager, contextManager, exceptionSender, playbackRouter)); mediaPlayer->setObserver(audioPlayer); contextManager->setStateProvider(STATE, audioPlayer); return audioPlayer; } -void AudioPlayer::provideState(unsigned int stateRequestToken) { +void AudioPlayer::provideState( + const avsCommon::avs::NamespaceAndName& stateProviderName, + unsigned int stateRequestToken) { + ACSDK_DEBUG(LX("provideState").d("stateRequestToken", stateRequestToken)); m_executor.submit([this, stateRequestToken] { executeProvideState(true, stateRequestToken); }); } @@ -139,6 +136,8 @@ void AudioPlayer::preHandleDirective(std::shared_ptr info) { } void AudioPlayer::handleDirective(std::shared_ptr info) { + ACSDK_DEBUG( + LX("handleDirective").d("name", info->directive->getName()).d("messageId", info->directive->getMessageId())); if (!info) { ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "nullDirectiveInfo")); return; @@ -150,27 +149,28 @@ void AudioPlayer::handleDirective(std::shared_ptr info) { } else if (info->directive->getName() == CLEAR_QUEUE.name) { handleClearQueueDirective(info); } else { - m_executor.submit([this, info] { - sendExceptionEncounteredAndReportFailed( - info, - "unexpected directive " + info->directive->getNamespace() + ":" + info->directive->getName(), - ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED); - } - ); + sendExceptionEncounteredAndReportFailed( + info, + "unexpected directive " + info->directive->getNamespace() + ":" + info->directive->getName(), + ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED); ACSDK_ERROR(LX("handleDirectiveFailed") - .d("reason", "unknownDirective") - .d("namespace", info->directive->getNamespace()) - .d("name", info->directive->getName())); + .d("reason", "unknownDirective") + .d("namespace", info->directive->getNamespace()) + .d("name", info->directive->getName())); } } void AudioPlayer::cancelDirective(std::shared_ptr info) { + ACSDK_DEBUG(LX("cancelDirective").d("name", info->directive->getName())); removeDirective(info); } void AudioPlayer::onDeregistered() { - executeStop(); - m_audioItems.clear(); + ACSDK_DEBUG(LX("onDeregistered")); + m_executor.submit([this] { + executeStop(); + m_audioItems.clear(); + }); } DirectiveHandlerConfiguration AudioPlayer::getConfiguration() const { @@ -182,86 +182,174 @@ DirectiveHandlerConfiguration AudioPlayer::getConfiguration() const { } void AudioPlayer::onFocusChanged(FocusState newFocus) { - ACSDK_DEBUG9(LX("onFocusChanged").d("newFocus", newFocus)); - auto result = m_executor.submit([this, newFocus] { executeOnFocusChanged(newFocus); }); - if (result.wait_for(TIMEOUT) == std::future_status::timeout) { - ACSDK_ERROR(LX("onFocusChangedFailed").d("reason", "timedout").d("cause", "executorTimeout")); + ACSDK_DEBUG(LX("onFocusChanged").d("newFocus", newFocus)); + m_executor.submit([this, newFocus] { executeOnFocusChanged(newFocus); }); + + switch (newFocus) { + case FocusState::FOREGROUND: + // Could wait for playback to actually start, but there's no real benefit to waiting, and long delays in + // buffering could result in timeouts, so returning immediately for this case. + return; + case FocusState::BACKGROUND: { + // Ideally expecting to see a transition to PAUSED, but in terms of user-observable changes, a move to any + // of PAUSED/STOPPED/FINISHED will indicate that it's safe for another channel to move to the foreground. + auto predicate = [this] { + switch (m_currentActivity) { + case PlayerActivity::IDLE: + case PlayerActivity::PAUSED: + case PlayerActivity::STOPPED: + case PlayerActivity::FINISHED: + return true; + case PlayerActivity::PLAYING: + case PlayerActivity::BUFFER_UNDERRUN: + return false; + } + ACSDK_ERROR(LX("onFocusChangedFailed") + .d("reason", "unexpectedActivity") + .d("m_currentActivity", m_currentActivity)); + return false; + }; + std::unique_lock lock(m_currentActivityMutex); + if (!m_currentActivityConditionVariable.wait_for(lock, TIMEOUT, predicate)) { + ACSDK_ERROR( + LX("onFocusChangedTimedOut").d("newFocus", newFocus).d("m_currentActivity", m_currentActivity)); + } + } + return; + case FocusState::NONE: { + // Need to wait for STOPPED or FINISHED, indicating that we have completely ended playback. + auto predicate = [this] { + switch (m_currentActivity) { + case PlayerActivity::IDLE: + case PlayerActivity::STOPPED: + case PlayerActivity::FINISHED: + return true; + case PlayerActivity::PLAYING: + case PlayerActivity::PAUSED: + case PlayerActivity::BUFFER_UNDERRUN: + return false; + } + ACSDK_ERROR(LX("onFocusChangedFailed") + .d("reason", "unexpectedActivity") + .d("m_currentActivity", m_currentActivity)); + return false; + + }; + std::unique_lock lock(m_currentActivityMutex); + if (!m_currentActivityConditionVariable.wait_for(lock, TIMEOUT, predicate)) { + ACSDK_ERROR(LX("onFocusChangedFailed") + .d("reason", "activityChangeTimedOut") + .d("newFocus", newFocus) + .d("m_currentActivity", m_currentActivity)); + } + } + return; } + ACSDK_ERROR(LX("onFocusChangedFailed").d("reason", "unexpectedFocusState").d("newFocus", newFocus)); } -void AudioPlayer::onPlaybackStarted() { - ACSDK_DEBUG9(LX("onPlaybackStarted")); - m_executor.submit([this] { executeOnPlaybackStarted(); }); +void AudioPlayer::onPlaybackStarted(SourceId id) { + ACSDK_DEBUG(LX("onPlaybackStarted").d("id", id)); + m_executor.submit([this, id] { executeOnPlaybackStarted(id); }); +} + +void AudioPlayer::onPlaybackStopped(SourceId id) { + ACSDK_DEBUG(LX("onPlaybackStopped").d("id", id)); + m_executor.submit([this, id] { executeOnPlaybackStopped(id); }); +} - std::unique_lock lock(m_playbackMutex); - m_playbackStarted = true; - m_playbackConditionVariable.notify_all(); +void AudioPlayer::onPlaybackFinished(SourceId id) { + ACSDK_DEBUG(LX("onPlaybackFinished").d("id", id)); + m_executor.submit([this, id] { executeOnPlaybackFinished(id); }); } -void AudioPlayer::onPlaybackFinished() { - ACSDK_DEBUG9(LX("onPlaybackFinished")); - m_executor.submit([this] { executeOnPlaybackFinished(); }); +void AudioPlayer::onPlaybackError(SourceId id, const ErrorType& type, std::string error) { + ACSDK_DEBUG(LX("onPlaybackError").d("type", type).d("error", error).d("id", id)); + m_executor.submit([this, id, type, error] { executeOnPlaybackError(id, type, error); }); +} - std::unique_lock lock(m_playbackMutex); - m_playbackFinished = true; - m_playbackConditionVariable.notify_all(); +void AudioPlayer::onPlaybackPaused(SourceId id) { + ACSDK_DEBUG(LX("onPlaybackPaused").d("id", id)); + m_executor.submit([this, id] { executeOnPlaybackPaused(id); }); } -void AudioPlayer::onPlaybackError(std::string error) { - ACSDK_DEBUG9(LX("onPlaybackError").d("error", error)); - m_executor.submit([this, error] { executeOnPlaybackError(error); }); +void AudioPlayer::onPlaybackResumed(SourceId id) { + ACSDK_DEBUG(LX("onPlaybackResumed").d("id", id)); + m_executor.submit([this, id] { executeOnPlaybackResumed(id); }); } -void AudioPlayer::onPlaybackPaused() { - ACSDK_DEBUG9(LX("onPlaybackPaused")); - m_executor.submit([this] { executeOnPlaybackPaused(); }); +void AudioPlayer::onBufferUnderrun(SourceId id) { + ACSDK_DEBUG(LX("onBufferUnderrun").d("id", id)); + m_executor.submit([this, id] { executeOnBufferUnderrun(id); }); +} - std::unique_lock lock(m_playbackMutex); - m_playbackPaused = true; - m_playbackConditionVariable.notify_all(); +void AudioPlayer::onBufferRefilled(SourceId id) { + ACSDK_DEBUG(LX("onBufferRefilled").d("id", id)); + m_executor.submit([this, id] { executeOnBufferRefilled(id); }); } -void AudioPlayer::onPlaybackResumed() { - ACSDK_DEBUG9(LX("onPlaybackResumed")); - m_executor.submit([this] { executeOnPlaybackResumed(); }); +void AudioPlayer::onTags(SourceId id, std::unique_ptr vectorOfTags) { + ACSDK_DEBUG(LX("onTags").d("id", id)); + if (nullptr == vectorOfTags || vectorOfTags->empty()) { + ACSDK_ERROR(LX("onTagsFailed").d("reason", "noTags")); + return; + } + std::shared_ptr sharedVectorOfTags(std::move(vectorOfTags)); + m_executor.submit([this, id, sharedVectorOfTags] { executeOnTags(id, sharedVectorOfTags); }); +} - std::unique_lock lock(m_playbackMutex); - m_playbackResumed = true; - m_playbackConditionVariable.notify_all(); +void AudioPlayer::addObserver(std::shared_ptr observer) { + ACSDK_DEBUG1(LX("addObserver")); + if (!observer) { + ACSDK_ERROR(LX("addObserver").m("Observer is null.")); + return; + } + m_executor.submit([this, observer] { + if (!m_observers.insert(observer).second) { + ACSDK_ERROR(LX("addObserver").m("Duplicate observer.")); + } + }); } -void AudioPlayer::onBufferUnderrun() { - ACSDK_DEBUG9(LX("onBufferUnderrun")); - m_executor.submit([this] { executeOnBufferUnderrun(); }); +void AudioPlayer::removeObserver(std::shared_ptr observer) { + ACSDK_DEBUG1(LX("removeObserver")); + if (!observer) { + ACSDK_ERROR(LX("removeObserver").m("Observer is null.")); + return; + } + m_executor.submit([this, observer] { + if (m_observers.erase(observer) == 0) { + ACSDK_WARN(LX("removeObserver").m("Nonexistent observer.")); + } + }); } -void AudioPlayer::onBufferRefilled() { - ACSDK_DEBUG9(LX("onBufferRefilled")); - m_executor.submit([this] { executeOnBufferRefilled(); }); +std::chrono::milliseconds AudioPlayer::getAudioItemOffset() { + ACSDK_DEBUG1(LX("getAudioItemOffset")); + auto offset = m_executor.submit([this] { return getOffset(); }); + return offset.get(); } AudioPlayer::AudioPlayer( - std::shared_ptr mediaPlayer, - std::shared_ptr messageSender, - std::shared_ptr focusManager, - std::shared_ptr contextManager, - std::shared_ptr attachmentManager, - std::shared_ptr exceptionSender) : + std::shared_ptr mediaPlayer, + std::shared_ptr messageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender, + std::shared_ptr playbackRouter) : CapabilityAgent{NAMESPACE, exceptionSender}, RequiresShutdown{"AudioPlayer"}, m_mediaPlayer{mediaPlayer}, m_messageSender{messageSender}, m_focusManager{focusManager}, m_contextManager{contextManager}, - m_attachmentManager{attachmentManager}, - m_playbackStarted{false}, - m_playbackPaused{false}, - m_playbackResumed{false}, - m_playbackFinished{false}, + m_playbackRouter{playbackRouter}, m_currentActivity{PlayerActivity::IDLE}, - m_starting{false}, m_focus{FocusState::NONE}, - m_offset{std::chrono::milliseconds{std::chrono::milliseconds::zero()}} { + m_initialOffset{0}, + m_sourceId{MediaPlayerInterface::ERROR}, + m_offset{std::chrono::milliseconds{std::chrono::milliseconds::zero()}}, + m_isStopCalled{false} { } void AudioPlayer::doShutdown() { @@ -273,31 +361,28 @@ void AudioPlayer::doShutdown() { m_focusManager.reset(); m_contextManager->setStateProvider(STATE, nullptr); m_contextManager.reset(); - m_attachmentManager.reset(); m_audioItems.clear(); + m_playbackRouter.reset(); } -bool AudioPlayer::parseDirectivePayload(std::shared_ptr info, rapidjson::Document * document) { +bool AudioPlayer::parseDirectivePayload(std::shared_ptr info, rapidjson::Document* document) { rapidjson::ParseResult result = document->Parse(info->directive->getPayload()); if (result) { return true; } ACSDK_ERROR(LX("parseDirectivePayloadFailed") - .d("reason", rapidjson::GetParseError_En(result.Code())) - .d("offset", result.Offset()) - .d("messageId", info->directive->getMessageId())); - m_executor.submit([this, info] { - sendExceptionEncounteredAndReportFailed( - info, - "Unable to parse payload", - ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED); - }); + .d("reason", rapidjson::GetParseError_En(result.Code())) + .d("offset", result.Offset()) + .d("messageId", info->directive->getMessageId())); + sendExceptionEncounteredAndReportFailed( + info, "Unable to parse payload", ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED); return false; } void AudioPlayer::handlePlayDirective(std::shared_ptr info) { - ACSDK_DEBUG9(LX("handlePlayDirective")); + ACSDK_DEBUG1(LX("handlePlayDirective")); + ACSDK_DEBUG9(LX("PLAY").d("payload", info->directive->getPayload())); rapidjson::Document payload; if (!parseDirectivePayload(info, &payload)) { return; @@ -311,9 +396,10 @@ void AudioPlayer::handlePlayDirective(std::shared_ptr info) { rapidjson::Value::ConstMemberIterator audioItemJson; if (!jsonUtils::findNode(payload, "audioItem", &audioItemJson)) { ACSDK_ERROR(LX("handlePlayDirectiveFailed") - .d("reason", "missingAudioItem") - .d("messageId", info->directive->getMessageId())); - m_executor.submit([this, info] { sendExceptionEncounteredAndReportFailed(info, "missing AudioItem"); }); + .d("reason", "missingAudioItem") + .d("messageId", info->directive->getMessageId())); + sendExceptionEncounteredAndReportFailed(info, "missing AudioItem"); + ; return; } @@ -325,17 +411,16 @@ void AudioPlayer::handlePlayDirective(std::shared_ptr info) { rapidjson::Value::ConstMemberIterator stream; if (!jsonUtils::findNode(audioItemJson->value, "stream", &stream)) { ACSDK_ERROR(LX("handlePlayDirectiveFailed") - .d("reason", "missingStream") - .d("messageId", info->directive->getMessageId())); - m_executor.submit([this, info] {sendExceptionEncounteredAndReportFailed(info, "missing stream"); }); + .d("reason", "missingStream") + .d("messageId", info->directive->getMessageId())); + sendExceptionEncounteredAndReportFailed(info, "missing stream"); return; } if (!jsonUtils::retrieveValue(stream->value, "url", &audioItem.stream.url)) { - ACSDK_ERROR(LX("handlePlayDirectiveFailed") - .d("reason", "missingUrl") - .d("messageId", info->directive->getMessageId())); - m_executor.submit([this, info] { sendExceptionEncounteredAndReportFailed(info, "missing URL"); }); + ACSDK_ERROR( + LX("handlePlayDirectiveFailed").d("reason", "missingUrl").d("messageId", info->directive->getMessageId())); + sendExceptionEncounteredAndReportFailed(info, "missing URL"); return; } @@ -346,27 +431,24 @@ void AudioPlayer::handlePlayDirective(std::shared_ptr info) { if (audioItem.stream.url.compare(0, CID_PREFIX.size(), CID_PREFIX) == 0) { std::string contentId = audioItem.stream.url.substr(CID_PREFIX.length()); - audioItem.stream.reader = info->directive->getAttachmentReader(contentId, AttachmentReader::Policy::BLOCKING); + audioItem.stream.reader = info->directive->getAttachmentReader(contentId, sds::ReaderPolicy::BLOCKING); if (nullptr == audioItem.stream.reader) { ACSDK_ERROR(LX("handlePlayDirectiveFailed") - .d("reason", "getAttachmentReaderFailed") - .d("messageId", info->directive->getMessageId())); - m_executor.submit( - [this, info] { - sendExceptionEncounteredAndReportFailed(info, "unable to obtain attachment reader"); - } - ); + .d("reason", "getAttachmentReaderFailed") + .d("messageId", info->directive->getMessageId())); + sendExceptionEncounteredAndReportFailed(info, "unable to obtain attachment reader"); + ; return; } - //TODO: Add a method to MediaPlayer to query whether a format is supported (ACSDK-416). + // TODO: Add a method to MediaPlayer to query whether a format is supported (ACSDK-416). if (audioItem.stream.format != StreamFormat::AUDIO_MPEG) { ACSDK_ERROR(LX("handlePlayDirectiveFailed") - .d("reason", "unsupportedFormat") - .d("format", audioItem.stream.format) - .d("messageId", info->directive->getMessageId())); + .d("reason", "unsupportedFormat") + .d("format", audioItem.stream.format) + .d("messageId", info->directive->getMessageId())); std::string message = "unsupported format " + streamFormatToString(audioItem.stream.format); - m_executor.submit([this, info, message] { sendExceptionEncounteredAndReportFailed(info, message); }); + sendExceptionEncounteredAndReportFailed(info, message); return; } } @@ -385,9 +467,9 @@ void AudioPlayer::handlePlayDirective(std::shared_ptr info) { audioItem.stream.expiryTime = std::chrono::steady_clock::time_point::max(); if (jsonUtils::retrieveValue(stream->value, "expiryTime", &expiryTimeString)) { int64_t unixTime; - if (timing::convert8601TimeStringToUnix(expiryTimeString, &unixTime)) { + if (m_timeUtils.convert8601TimeStringToUnix(expiryTimeString, &unixTime)) { int64_t currentTime; - if (timing::getCurrentUnixTime(¤tTime)) { + if (m_timeUtils.getCurrentUnixTime(¤tTime)) { std::chrono::seconds timeToExpiry(unixTime - currentTime); audioItem.stream.expiryTime = std::chrono::steady_clock::now() + timeToExpiry; } @@ -400,17 +482,11 @@ void AudioPlayer::handlePlayDirective(std::shared_ptr info) { if (!jsonUtils::findNode(stream->value, "progressReport", &progressReport)) { progressReport = stream->value.MemberEnd(); } else { - if (jsonUtils::retrieveValue( - progressReport->value, - "progressReportDelayInMilliseconds", - &milliseconds)) { + if (jsonUtils::retrieveValue(progressReport->value, "progressReportDelayInMilliseconds", &milliseconds)) { audioItem.stream.progressReport.delay = std::chrono::milliseconds(milliseconds); } - if (jsonUtils::retrieveValue( - progressReport->value, - "progressReportIntervalInMilliseconds", - &milliseconds)) { + if (jsonUtils::retrieveValue(progressReport->value, "progressReportIntervalInMilliseconds", &milliseconds)) { audioItem.stream.progressReport.interval = std::chrono::milliseconds(milliseconds); } } @@ -423,30 +499,22 @@ void AudioPlayer::handlePlayDirective(std::shared_ptr info) { audioItem.stream.expectedPreviousToken = ""; } - m_executor.submit( - [this, info, playBehavior, audioItem] { - executePlay(playBehavior, audioItem); + // Note: Unlike SpeechSynthesizer, AudioPlayer directives are instructing the client to start/stop/queue + // content, so directive handling is considered to be complete when we have queued the content for + // playback; we don't wait for playback to complete. + setHandlingCompleted(info); - // Note: Unlike SpeechSynthesizer, AudioPlayer directives are instructing the client to start/stop/queue - // content, so directive handling is considered to be complete when we have queued the content for - // playback; we don't wait for playback to complete. - setHandlingCompleted(info); - } - ); + m_executor.submit([this, playBehavior, audioItem] { executePlay(playBehavior, audioItem); }); } void AudioPlayer::handleStopDirective(std::shared_ptr info) { - ACSDK_DEBUG9(LX("handleStopDirective")); - m_executor.submit( - [this, info] { - setHandlingCompleted(info); - executeStop(); - } - ); + ACSDK_DEBUG1(LX("handleStopDirective")); + setHandlingCompleted(info); + m_executor.submit([this] { executeStop(); }); } void AudioPlayer::handleClearQueueDirective(std::shared_ptr info) { - ACSDK_DEBUG9(LX("handleClearQueue")); + ACSDK_DEBUG1(LX("handleClearQueue")); rapidjson::Document payload; if (!parseDirectivePayload(info, &payload)) { return; @@ -457,12 +525,8 @@ void AudioPlayer::handleClearQueueDirective(std::shared_ptr info) clearBehavior = ClearBehavior::CLEAR_ENQUEUED; } - m_executor.submit( - [this, info, clearBehavior] { - setHandlingCompleted(info); - executeClearQueue(clearBehavior); - } - ); + setHandlingCompleted(info); + m_executor.submit([this, clearBehavior] { executeClearQueue(clearBehavior); }); } void AudioPlayer::removeDirective(std::shared_ptr info) { @@ -473,6 +537,13 @@ void AudioPlayer::removeDirective(std::shared_ptr info) { } } +void AudioPlayer::setHandlingCompleted(std::shared_ptr info) { + if (info && info->result) { + info->result->setCompleted(); + } + removeDirective(info); +} + void AudioPlayer::executeProvideState(bool sendToken, unsigned int stateRequestToken) { ACSDK_DEBUG(LX("executeProvideState").d("sendToken", sendToken).d("stateRequestToken", stateRequestToken)); auto policy = StateRefreshPolicy::NEVER; @@ -483,9 +554,9 @@ void AudioPlayer::executeProvideState(bool sendToken, unsigned int stateRequestT rapidjson::Document state(rapidjson::kObjectType); state.AddMember(TOKEN_KEY, m_token, state.GetAllocator()); state.AddMember( - OFFSET_KEY, - std::chrono::duration_cast(getOffset()).count(), - state.GetAllocator()); + OFFSET_KEY, + (int64_t)std::chrono::duration_cast(getOffset()).count(), + state.GetAllocator()); state.AddMember(ACTIVITY_KEY, playerActivityToString(m_currentActivity), state.GetAllocator()); rapidjson::StringBuffer buffer; @@ -507,11 +578,8 @@ void AudioPlayer::executeProvideState(bool sendToken, unsigned int stateRequestT } void AudioPlayer::executeOnFocusChanged(FocusState newFocus) { - ACSDK_DEBUG9(LX("executeOnFocusChanged") - .d("from", m_focus) - .d("to", newFocus) - .d("m_starting", m_starting) - .d("m_currentActivity", m_currentActivity)); + ACSDK_DEBUG1( + LX("executeOnFocusChanged").d("from", m_focus).d("to", newFocus).d("m_currentActivity", m_currentActivity)); if (m_focus == newFocus) { return; } @@ -519,61 +587,74 @@ void AudioPlayer::executeOnFocusChanged(FocusState newFocus) { switch (newFocus) { case FocusState::FOREGROUND: - if (m_starting) { - std::unique_lock lock(m_playbackMutex); - m_playbackStarted = false; - ACSDK_DEBUG9(LX("executeOnFocusChanged").d("action", "playNextItem")); - playNextItem(); - if (!m_playbackConditionVariable.wait_for(lock, TIMEOUT, [this] { return m_playbackStarted; })) { - ACSDK_ERROR(LX("onFocusChangedFailed").d("reason", "timedout").d("cause", "notStarted")); - } - } else if (PlayerActivity::PAUSED == m_currentActivity) { - std::unique_lock lock(m_playbackMutex); - m_playbackResumed = false; - ACSDK_DEBUG9(LX("executeOnFocusChanged").d("action", "resumeMediaPlayer")); - if (m_mediaPlayer->resume() == MediaPlayerStatus::FAILURE) { - sendPlaybackFailedEvent( - m_token, - ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, - "failed to resume media player"); - ACSDK_ERROR(LX("executeOnFocusChangedFailed").d("reason", "resumeFailed")); - m_focusManager->releaseChannel(CHANNEL_NAME, shared_from_this()); + switch (m_currentActivity) { + case PlayerActivity::IDLE: + case PlayerActivity::STOPPED: + case PlayerActivity::FINISHED: + // We see a focus change to foreground in these states if we are starting to play a new song. + if (!m_audioItems.empty()) { + ACSDK_DEBUG1(LX("executeOnFocusChanged").d("action", "playNextItem")); + playNextItem(); + } + + // If m_audioItems is empty and channel wasn't released, that means we are going to + // play the next item. + return; + case PlayerActivity::PAUSED: { + // AudioPlayer is in the process of stopping. So there's no need to resume playback for this case. + if (m_isStopCalled) { + ACSDK_DEBUG1(LX("executeOnFocusChanged").d("action", "stoppingAlreadyDoNothing")); + return; + } + // A focus change to foreground when paused means we should resume the current song. + ACSDK_DEBUG1(LX("executeOnFocusChanged").d("action", "resumeMediaPlayer")); + if (!m_mediaPlayer->resume(m_sourceId)) { + sendPlaybackFailedEvent( + m_token, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, "failed to resume media player"); + ACSDK_ERROR(LX("executeOnFocusChangedFailed").d("reason", "resumeFailed")); + m_focusManager->releaseChannel(CHANNEL_NAME, shared_from_this()); + return; + } } - if (!m_playbackConditionVariable.wait_for(lock, TIMEOUT, [this] { return m_playbackResumed; })) { - sendPlaybackFailedEvent( - m_token, - ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, - "resume media player timed out"); - ACSDK_ERROR(LX("onFocusChangedFailed").d("reason", "timedOut").d("cause", "notResumed")); - m_focusManager->releaseChannel(CHANNEL_NAME, shared_from_this()); - } - } else { - ACSDK_DEBUG9(LX("executeOnFocusChanged") - .d("action", "none") - .d("m_currentActivity", m_currentActivity)); + return; + case PlayerActivity::PLAYING: + case PlayerActivity::BUFFER_UNDERRUN: + // We should already have foreground focus in these states; break out to the warning below. + break; } break; case FocusState::BACKGROUND: - if (PlayerActivity::PLAYING == m_currentActivity) { - std::unique_lock lock(m_playbackMutex); - m_playbackPaused = false; - ACSDK_DEBUG9(LX("executeOnFocusChanged").d("action", "pauseMediaPlayer")); - if (m_mediaPlayer->pause() == MediaPlayerStatus::FAILURE) { - sendPlaybackFailedEvent( - m_token, - ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, - "failed to pause media player"); - ACSDK_ERROR(LX("executeOnFocusChangedFailed").d("reason", "pauseFailed")); - return; - } - if (!m_playbackConditionVariable.wait_for(lock, TIMEOUT, [this] { return m_playbackPaused; })) { - sendPlaybackFailedEvent( - m_token, - ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, - "pause media player timed out"); - ACSDK_ERROR(LX("onFocusChangedFailed").d("reason", "timedOut").d("cause", "notPaused")); + switch (m_currentActivity) { + case PlayerActivity::STOPPED: + // If we're stopping due to a new play and would have been continuing on to the next song, we want + // to block that. + if (m_playNextItemAfterStopped && !m_audioItems.empty()) { + m_playNextItemAfterStopped = false; + return; + } + + // We can also end up here with an empty queue if we've asked MediaPlayer to play, but playback + // hasn't started yet, so we fall through to call @c pause() here as well. + case PlayerActivity::FINISHED: + case PlayerActivity::IDLE: + // Note: can be in FINISHED or IDLE while waiting for MediaPlayer to start playing, so we fall + // through to call @c pause() here as well. + case PlayerActivity::PAUSED: + // Note: can be in PAUSED while we're trying to resume, in which case we still want to pause, so we + // fall through to call @c pause() here as well. + case PlayerActivity::PLAYING: + case PlayerActivity::BUFFER_UNDERRUN: { + // If we get pushed into the background while playing or buffering, pause the current song. + ACSDK_DEBUG1(LX("executeOnFocusChanged").d("action", "pauseMediaPlayer")); + // Note: Ignoring the return value of pause() here as we end up calling it in some cases where it is + // not needed and MediaPlayer is not in a pausable state. This is harmless, but we don't want + // to be reporting errors in those cases. + // TODO: Consider expanding the states to track the transition to PLAYING so that we don't call + // pause when we're genuinely IDLE/STOPPED/FINISHED (ACSDK-734). + m_mediaPlayer->pause(m_sourceId); } + return; } break; case FocusState::NONE: @@ -587,81 +668,206 @@ void AudioPlayer::executeOnFocusChanged(FocusState newFocus) { case PlayerActivity::PLAYING: case PlayerActivity::PAUSED: case PlayerActivity::BUFFER_UNDERRUN: - // If The focus change came in while we were in a 'playing' state, we need to stop because we are + // If the focus change came in while we were in a 'playing' state, we need to stop because we are // yielding the channel. - break; + m_audioItems.clear(); + ACSDK_DEBUG1(LX("executeOnFocusChanged").d("action", "executeStop")); + executeStop(); + return; } + break; + } + ACSDK_WARN(LX("unexpectedExecuteOnFocusChanged").d("newFocus", newFocus).d("m_currentActivity", m_currentActivity)); +} - m_audioItems.clear(); +void AudioPlayer::executeOnPlaybackStarted(SourceId id) { + ACSDK_DEBUG1(LX("executeOnPlaybackStarted").d("id", id)); + + if (id != m_sourceId) { + ACSDK_ERROR(LX("executeOnPlaybackStartedFailed") + .d("reason", "invalidSourceId") + .d("id", id) + .d("m_sourceId", m_sourceId)); + return; + } - std::unique_lock lock(m_playbackMutex); - m_playbackFinished = false; + /* + * When @c AudioPlayer is the active player, @c PlaybackController which is + * the default playback handler, should handle playback button presses. + */ + m_playbackRouter->switchToDefaultHandler(); + changeActivity(PlayerActivity::PLAYING); - /* Note: MediaPlayer::stop() calls onPlaybackFinished() synchronously, which results in a mutex deadlock - * here if the lock his held for the executeStop() call. Releasing the lock temporarily avoids the - * deadlock. If MediaPlayer is changed in the future to asynchronously call onPlaybackFinished (and - * documented as such in MediaPlayerInterface), the unlock/lock calls can be removed. */ - lock.unlock(); - ACSDK_DEBUG9(LX("executeOnFocusChanged").d("action", "executeStop")); - executeStop(); - lock.lock(); + sendPlaybackStartedEvent(); +} + +void AudioPlayer::executeOnPlaybackStopped(SourceId id) { + ACSDK_DEBUG1(LX("executeOnPlaybackStopped").d("id", id)); + + if (id != m_sourceId) { + ACSDK_ERROR(LX("executeOnPlaybackStoppedFailed") + .d("reason", "invalidSourceId") + .d("id", id) + .d("m_sourceId", m_sourceId)); + return; + } - if (!m_playbackConditionVariable.wait_for(lock, TIMEOUT, [this] { return m_playbackFinished; })) { - ACSDK_ERROR(LX("onFocusChangedFailed").d("reason", "timedout").d("cause", "notFinished")); + switch (m_currentActivity) { + case PlayerActivity::PLAYING: + case PlayerActivity::PAUSED: + case PlayerActivity::BUFFER_UNDERRUN: + changeActivity(PlayerActivity::STOPPED); + sendPlaybackStoppedEvent(); + m_isStopCalled = false; + if (!m_playNextItemAfterStopped || m_audioItems.empty()) { + handlePlaybackCompleted(); + } else { + playNextItem(); + } + return; + case PlayerActivity::IDLE: + case PlayerActivity::STOPPED: + case PlayerActivity::FINISHED: + /* + * If playback failed before state changed to playing + * this function is called and need to release focus. + */ + if (m_focus != FocusState::NONE) { + handlePlaybackCompleted(); + return; } + ACSDK_ERROR(LX("executeOnPlaybackStoppedFailed") + .d("reason", "alreadyStopped") + .d("m_currentActivity", m_currentActivity)); break; } + ACSDK_ERROR(LX("executeOnPlaybackStoppedFailed") + .d("reason", "unexpectedActivity") + .d("m_currentActivity", m_currentActivity)); } -void AudioPlayer::executeOnPlaybackStarted() { - changeActivity(PlayerActivity::PLAYING); +void AudioPlayer::executeOnPlaybackFinished(SourceId id) { + ACSDK_DEBUG1(LX("executeOnPlaybackFinished").d("id", id)); - sendPlaybackStartedEvent(); + if (id != m_sourceId) { + ACSDK_ERROR(LX("executeOnPlaybackFinishedFailed") + .d("reason", "invalidSourceId") + .d("id", id) + .d("m_sourceId", m_sourceId)); + return; + } - // TODO: Once MediaPlayer can notify of nearly finished, send there instead (ACSDK-417). - sendPlaybackNearlyFinishedEvent(); + switch (m_currentActivity) { + case PlayerActivity::PLAYING: + changeActivity(PlayerActivity::FINISHED); + + /* + * We used to send PlaybackNearlyFinished right after we sent PlaybackStarted. But we found a problem when + * we are playing Audible such that after sending PlaybackNearlyFinished, AVS will send us the next item to + * start buffering. But since we don't actually access the url until we finish playing the current chapter, + * by the time we open the url, the url has already expired so we got a 403 reponse. To address this + * problem, we are sending the PlaybackNearlyFinished event just before we send PlaybackFinished. + * + * TODO: Once MediaPlayer can notify of nearly finished, send there instead (ACSDK-417). + */ + sendPlaybackNearlyFinishedEvent(); + + sendPlaybackFinishedEvent(); + if (m_audioItems.empty()) { + handlePlaybackCompleted(); + } else { + playNextItem(); + } + return; + case PlayerActivity::IDLE: + case PlayerActivity::STOPPED: + case PlayerActivity::PAUSED: + case PlayerActivity::BUFFER_UNDERRUN: + case PlayerActivity::FINISHED: + ACSDK_ERROR(LX("executeOnPlaybackFinishedFailed") + .d("reason", "notPlaying") + .d("m_currentActivity", m_currentActivity)); + return; + } + ACSDK_ERROR(LX("executeOnPlaybackFinishedFailed") + .d("reason", "unexpectedActivity") + .d("m_currentActivity", m_currentActivity)); } -void AudioPlayer::executeOnPlaybackFinished() { - ACSDK_DEBUG9(LX("executeOnPlaybackFinished")); - if (m_currentActivity != PlayerActivity::PLAYING ) { - ACSDK_ERROR(LX("executeOnPlaybackFinishedError") - .d("reason", "notPlaying") - .d("m_currentActivity", m_currentActivity)); - return; - } +void AudioPlayer::cancelTimers() { + ACSDK_DEBUG(LX("cancelTimers")); + m_delayTimer.stop(); + m_intervalTimer.stop(); +} - if (m_audioItems.empty()) { - changeActivity(PlayerActivity::FINISHED); - sendPlaybackFinishedEvent(); +void AudioPlayer::handlePlaybackCompleted() { + cancelTimers(); + if (m_focus != avsCommon::avs::FocusState::NONE) { m_focusManager->releaseChannel(CHANNEL_NAME, shared_from_this()); - return; } - sendPlaybackFinishedEvent(); - playNextItem(); } -void AudioPlayer::executeOnPlaybackError(std::string error) { - ACSDK_ERROR(LX("executeOnPlaybackError").d("error", error)); - sendPlaybackFailedEvent(m_token, ErrorType::MEDIA_ERROR_UNKNOWN, error); - executeStop(); +void AudioPlayer::executeOnPlaybackError(SourceId id, const ErrorType& type, std::string error) { + ACSDK_ERROR(LX("executeOnPlaybackError").d("id", id).d("type", type).d("error", error)); + + if (id != m_sourceId) { + ACSDK_ERROR( + LX("executeOnPlaybackErrorFailed").d("reason", "invalidSourceId").d("id", id).d("m_sourceId", m_sourceId)); + return; + } + + sendPlaybackFailedEvent(m_token, type, error); + + /* + * There's no need to call stop() here as the MediaPlayer has already stopped due to the playback error. Instead, + * call executeOnPlaybackStopped() so that the states in AudioPlayer are reset properly. + */ + executeOnPlaybackStopped(m_sourceId); } -void AudioPlayer::executeOnPlaybackPaused() { - ACSDK_DEBUG9(LX("executeOnPlaybackPaused")); +void AudioPlayer::executeOnPlaybackPaused(SourceId id) { + ACSDK_DEBUG1(LX("executeOnPlaybackPaused").d("id", id)); + + if (id != m_sourceId) { + ACSDK_ERROR( + LX("executeOnPlaybackPausedFailed").d("reason", "invalidSourceId").d("id", id).d("m_sourceId", m_sourceId)); + return; + } + // TODO: AVS recommends sending this after a recognize event to reduce latency (ACSDK-371). sendPlaybackPausedEvent(); changeActivity(PlayerActivity::PAUSED); } -void AudioPlayer::executeOnPlaybackResumed() { - ACSDK_DEBUG9(LX("executeOnPlaybackResumed")); +void AudioPlayer::executeOnPlaybackResumed(SourceId id) { + ACSDK_DEBUG1(LX("executeOnPlaybackResumed").d("id", id)); + + if (id != m_sourceId) { + ACSDK_ERROR(LX("executeOnPlaybackResumedFailed") + .d("reason", "invalidSourceId") + .d("id", id) + .d("m_sourceId", m_sourceId)); + return; + } + + if (m_currentActivity == PlayerActivity::STOPPED) { + ACSDK_ERROR(LX("executeOnPlaybackResumedAborted").d("reason", "currentActivity:STOPPED")); + return; + } + sendPlaybackResumedEvent(); changeActivity(PlayerActivity::PLAYING); } -void AudioPlayer::executeOnBufferUnderrun() { - ACSDK_DEBUG9(LX("executeOnBufferUnderrun")); +void AudioPlayer::executeOnBufferUnderrun(SourceId id) { + ACSDK_DEBUG1(LX("executeOnBufferUnderrun").d("id", id)); + + if (id != m_sourceId) { + ACSDK_ERROR( + LX("executeOnBufferUnderrunFailed").d("reason", "invalidSourceId").d("id", id).d("m_sourceId", m_sourceId)); + return; + } + if (PlayerActivity::BUFFER_UNDERRUN == m_currentActivity) { ACSDK_ERROR(LX("executeOnBufferUnderrunFailed").d("reason", "alreadyInUnderrun")); return; @@ -671,69 +877,99 @@ void AudioPlayer::executeOnBufferUnderrun() { changeActivity(PlayerActivity::BUFFER_UNDERRUN); } -void AudioPlayer::executeOnBufferRefilled() { - ACSDK_DEBUG9(LX("executeOnBufferRefilled")); +void AudioPlayer::executeOnBufferRefilled(SourceId id) { + ACSDK_DEBUG1(LX("executeOnBufferRefilled").d("id", id)); + + if (id != m_sourceId) { + ACSDK_ERROR( + LX("executeOnBufferRefilledFailed").d("reason", "invalidSourceId").d("id", id).d("m_sourceId", m_sourceId)); + return; + } + sendPlaybackStutterFinishedEvent(); changeActivity(PlayerActivity::PLAYING); } +void AudioPlayer::executeOnTags(SourceId id, std::shared_ptr vectorOfTags) { + ACSDK_DEBUG1(LX("executeOnTags").d("id", id)); + + if (id != m_sourceId) { + ACSDK_ERROR(LX("executeOnTags").d("reason", "invalidSourceId").d("id", id).d("m_sourceId", m_sourceId)); + return; + } + + sendStreamMetadataExtractedEvent(vectorOfTags); +} + void AudioPlayer::executePlay(PlayBehavior playBehavior, const AudioItem& audioItem) { - ACSDK_DEBUG9(LX("executePlay").d("playBehavior", playBehavior)); + ACSDK_DEBUG1(LX("executePlay").d("playBehavior", playBehavior)); + + // Per AVS docs, drop/ignore AudioItems that specify an expectedPreviousToken which does not match the + // current/previous token. + if (!audioItem.stream.expectedPreviousToken.empty()) { + auto previousToken = m_audioItems.empty() ? m_token : m_audioItems.back().stream.token; + if (previousToken != audioItem.stream.expectedPreviousToken) { + ACSDK_INFO(LX("executePlayDropped") + .d("reason", "unexpectedPreviousToken") + .d("previous", previousToken) + .d("expected", audioItem.stream.expectedPreviousToken)); + return; + } + } + + // Do any playback/queue maintenance per playBehavior. switch (playBehavior) { case PlayBehavior::REPLACE_ALL: - executeStop(false); - // FALL-THROUGH + // Note: this will change m_currentActivity to STOPPED. + executeStop(true); + // FALL-THROUGH case PlayBehavior::REPLACE_ENQUEUED: m_audioItems.clear(); - // FALL-THROUGH + // FALL-THROUGH case PlayBehavior::ENQUEUE: - // Per AVS docs, drop/ignore AudioItems that specify an expectedPreviousToken which does not match the - // current/previous token - if (!audioItem.stream.expectedPreviousToken.empty()) { - auto previousToken = m_audioItems.empty() ? m_token : m_audioItems.back().stream.token; - if (previousToken != audioItem.stream.expectedPreviousToken) { - ACSDK_INFO(LX("executePlayDropped") - .d("reason", "unexpectedPreviousToken") - .d("previous", previousToken) - .d("expected", audioItem.stream.expectedPreviousToken)); - return; - } - } m_audioItems.push_back(audioItem); break; } - if (m_audioItems.empty()) { ACSDK_ERROR(LX("executePlayFailed").d("reason", "unhandledPlayBehavior").d("playBehavior", playBehavior)); return; } - if (m_starting || PlayerActivity::PLAYING == m_currentActivity) { - return; - } - - if (FocusState::FOREGROUND == m_focus) { - playNextItem(); - } else if (!m_focusManager->acquireChannel(CHANNEL_NAME, shared_from_this(), ACTIVITY_ID)) { - ACSDK_ERROR(LX("executePlayFailed") - .d("reason", "CouldNotAcquireChannel")); - sendPlaybackFailedEvent( - m_token, - ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, - std::string("Could not acquire ") + CHANNEL_NAME + " for " + ACTIVITY_ID); - return; + // Initiate playback if not already playing. + switch (m_currentActivity) { + case PlayerActivity::IDLE: + case PlayerActivity::STOPPED: + case PlayerActivity::FINISHED: + if (FocusState::NONE == m_focus) { + // If we don't currently have focus, acquire it now; playback will start when focus changes to + // FOREGROUND. + if (!m_focusManager->acquireChannel(CHANNEL_NAME, shared_from_this(), NAMESPACE)) { + ACSDK_ERROR(LX("executePlayFailed").d("reason", "CouldNotAcquireChannel")); + sendPlaybackFailedEvent( + m_token, + ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, + std::string("Could not acquire ") + CHANNEL_NAME + " for " + NAMESPACE); + return; + } + } + return; + case PlayerActivity::PLAYING: + case PlayerActivity::PAUSED: + case PlayerActivity::BUFFER_UNDERRUN: + // If we're already 'playing', the new song should have been enqueued above and there's nothing more to do + // here. + return; } - - m_starting = true; + ACSDK_ERROR(LX("executePlayFailed").d("reason", "unexpectedActivity").d("m_currentActivity", m_currentActivity)); } void AudioPlayer::playNextItem() { - ACSDK_DEBUG9(LX("playNextItem").d("m_audioItems.size", m_audioItems.size())); + ACSDK_DEBUG1(LX("playNextItem").d("m_audioItems.size", m_audioItems.size())); + // Cancel any timers that have been started as this is a new item that we + // are going to play now. + cancelTimers(); if (m_audioItems.empty()) { - sendPlaybackFailedEvent( - m_token, - ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, - "queue is empty"); + sendPlaybackFailedEvent(m_token, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, "queue is empty"); ACSDK_ERROR(LX("playNextItemFailed").d("reason", "emptyQueue")); executeStop(); return; @@ -742,136 +978,121 @@ void AudioPlayer::playNextItem() { auto item = m_audioItems.front(); m_audioItems.pop_front(); m_token = item.stream.token; + m_audioItemId = item.id; + m_initialOffset = item.stream.offset; if (item.stream.reader) { - if (m_mediaPlayer->setSource(std::move(item.stream.reader)) == MediaPlayerStatus::FAILURE) { + m_sourceId = m_mediaPlayer->setSource(std::move(item.stream.reader)); + if (MediaPlayerInterface::ERROR == m_sourceId) { sendPlaybackFailedEvent( - m_token, - ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, - "failed to set attachment media source"); + m_token, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, "failed to set attachment media source"); ACSDK_ERROR(LX("playNextItemFailed").d("reason", "setSourceFailed").d("type", "attachment")); return; } - } else if (m_mediaPlayer->setSource(item.stream.url) == MediaPlayerStatus::FAILURE) { - sendPlaybackFailedEvent( - m_token, - ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, - "failed to set URL media source"); - ACSDK_ERROR(LX("playNextItemFailed").d("reason", "setSourceFailed").d("type", "URL")); - return; + } else { + ACSDK_DEBUG9(LX("settingUrlSource").d("offset", item.stream.offset.count())); + m_sourceId = m_mediaPlayer->setSource(item.stream.url, item.stream.offset); + if (MediaPlayerInterface::ERROR == m_sourceId) { + sendPlaybackFailedEvent( + m_token, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, "failed to set URL media source"); + ACSDK_ERROR(LX("playNextItemFailed").d("reason", "setSourceFailed").d("type", "URL")); + return; + } } - ACSDK_DEBUG9(LX("playNextItem").d("item.stream.offset", item.stream.offset.count())); - if (item.stream.offset.count() && m_mediaPlayer->setOffset(item.stream.offset) == MediaPlayerStatus::FAILURE) { - sendPlaybackFailedEvent( - m_token, - ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, - "failed to set stream offset"); - ACSDK_ERROR(LX("playNextItemFailed").d("reason", "setOffsetFailed")); + if (!m_mediaPlayer->play(m_sourceId)) { + executeOnPlaybackError(m_sourceId, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, "playFailed"); return; } - if (m_mediaPlayer->play() == MediaPlayerStatus::FAILURE) { - executeOnPlaybackError("playFailed"); - return; - } if (std::chrono::milliseconds::max() != item.stream.progressReport.delay) { - m_delayTimer.start( - item.stream.progressReport.delay - item.stream.offset, - [this] { - m_executor.submit([this] { sendProgressReportDelayElapsedEvent(); }); - }); + const auto deltaBetweenDelayAndOffset = item.stream.progressReport.delay - item.stream.offset; + if (deltaBetweenDelayAndOffset >= std::chrono::milliseconds::zero()) { + m_delayTimer.start(deltaBetweenDelayAndOffset, [this] { + m_executor.submit([this] { sendProgressReportDelayElapsedEvent(); }); + }); + } } if (std::chrono::milliseconds::max() != item.stream.progressReport.interval) { - m_intervalTimer.start( - item.stream.progressReport.interval - item.stream.offset, + std::chrono::milliseconds intervalStart; + + auto result = getIntervalStart(item.stream.progressReport.interval, item.stream.offset, &intervalStart); + + if (result) { + m_intervalTimer.start( + intervalStart, item.stream.progressReport.interval, timing::Timer::PeriodType::ABSOLUTE, timing::Timer::FOREVER, - [this] { - m_executor.submit([this] { sendProgressReportIntervalElapsedEvent(); }); - }); + [this] { m_executor.submit([this] { sendProgressReportIntervalElapsedEvent(); }); }); + } } } -void AudioPlayer::executeStop(bool releaseFocus) { - ACSDK_DEBUG9(LX("executestop").d("m_currentActivity", m_currentActivity)); - auto stopStatus = MediaPlayerStatus::SUCCESS; +void AudioPlayer::executeStop(bool playNextItem) { + ACSDK_DEBUG1(LX("executeStop").d("playNextItem", playNextItem).d("m_currentActivity", m_currentActivity)); switch (m_currentActivity) { case PlayerActivity::IDLE: case PlayerActivity::STOPPED: - if (m_starting) { - break; - } else { - return; - } - // FALL-THROUGH + case PlayerActivity::FINISHED: + // If we're already stopped, there's nothing more to do. + return; case PlayerActivity::PLAYING: case PlayerActivity::PAUSED: case PlayerActivity::BUFFER_UNDERRUN: + // Make sure we have the offset cached before stopping. getOffset(); - stopStatus = m_mediaPlayer->stop(); - break; - default: - break; - } - m_starting = false; - m_delayTimer.stop(); - m_intervalTimer.stop(); - if (releaseFocus && m_focus != avsCommon::avs::FocusState::NONE) { - m_focusManager->releaseChannel(CHANNEL_NAME, shared_from_this()); - } - changeActivity(PlayerActivity::STOPPED); - if (MediaPlayerStatus::FAILURE == stopStatus) { - executeOnPlaybackError("mediaPlayerStopFailed"); + // Set a flag indicating what we want to do in the onPlaybackStopped() call. + m_playNextItemAfterStopped = playNextItem; + // Request to stop. + if (!m_mediaPlayer->stop(m_sourceId)) { + ACSDK_ERROR(LX("executeStopFailed").d("reason", "stopFailed")); + } else { + m_isStopCalled = true; + } + return; } - sendPlaybackStoppedEvent(); + ACSDK_ERROR(LX("executeStopFailed").d("reason", "unexpectedActivity").d("m_currentActivity", m_currentActivity)); } void AudioPlayer::executeClearQueue(ClearBehavior clearBehavior) { + ACSDK_DEBUG(LX("executeClearQueue").d("clearBehavior", clearBehavior)); switch (clearBehavior) { case ClearBehavior::CLEAR_ALL: executeStop(); - // FALL-THROUGH + // FALL-THROUGH case ClearBehavior::CLEAR_ENQUEUED: m_audioItems.clear(); - break; + sendPlaybackQueueClearedEvent(); + return; } - sendPlaybackQueueClearedEvent(); + ACSDK_ERROR(LX("executeClearQueueFailed").d("reason", "unexpectedClearBehavior").d("clearBehavior", clearBehavior)); } void AudioPlayer::changeActivity(PlayerActivity activity) { ACSDK_DEBUG(LX("changeActivity").d("from", m_currentActivity).d("to", activity)); - m_starting = false; - m_currentActivity = activity; - executeProvideState(); -} - -void AudioPlayer::setHandlingCompleted(std::shared_ptr info) { - if (info && info->result) { - info->result->setCompleted(); + { + std::lock_guard lock(m_currentActivityMutex); + m_currentActivity = activity; } - removeDirective(info); -} - -void AudioPlayer::sendExceptionEncounteredAndReportFailed( - std::shared_ptr info, - const std::string& message, - avsCommon::avs::ExceptionErrorType type) { - m_exceptionEncounteredSender->sendExceptionEncountered(info->directive->getUnparsedDirective(), type, message); - if (info && info->result) { - info->result->setFailed(message); - } - removeDirective(info); + m_currentActivityConditionVariable.notify_all(); + executeProvideState(); + notifyObserver(); } -void AudioPlayer::sendEventWithTokenAndOffset(const std::string& eventName) { +void AudioPlayer::sendEventWithTokenAndOffset(const std::string& eventName, std::chrono::milliseconds offset) { + ACSDK_DEBUG1(LX("sendEventWithTokenAndOffset").d("eventName", eventName)); rapidjson::Document payload(rapidjson::kObjectType); payload.AddMember(TOKEN_KEY, m_token, payload.GetAllocator()); + // Note: offset is an optional parameter, which defaults to MEDIA_PLAYER_INVALID_OFFSET. Per documentation, this + // function will use the current MediaPlayer offset is a valid offset was not provided. + if (MEDIA_PLAYER_INVALID_OFFSET == offset) { + offset = getOffset(); + } payload.AddMember( - OFFSET_KEY, - std::chrono::duration_cast(getOffset()).count(), - payload.GetAllocator()); + OFFSET_KEY, + (int64_t)std::chrono::duration_cast(offset).count(), + payload.GetAllocator()); rapidjson::StringBuffer buffer; rapidjson::Writer writer(buffer); @@ -886,7 +1107,7 @@ void AudioPlayer::sendEventWithTokenAndOffset(const std::string& eventName) { } void AudioPlayer::sendPlaybackStartedEvent() { - sendEventWithTokenAndOffset("PlaybackStarted"); + sendEventWithTokenAndOffset("PlaybackStarted", m_initialOffset); } void AudioPlayer::sendPlaybackNearlyFinishedEvent() { @@ -909,14 +1130,14 @@ void AudioPlayer::sendPlaybackStutterFinishedEvent() { rapidjson::Document payload(rapidjson::kObjectType); payload.AddMember(TOKEN_KEY, m_token, payload.GetAllocator()); payload.AddMember( - OFFSET_KEY, - std::chrono::duration_cast(getOffset()).count(), - payload.GetAllocator()); + OFFSET_KEY, + (int64_t)std::chrono::duration_cast(getOffset()).count(), + payload.GetAllocator()); auto stutterDuration = std::chrono::steady_clock::now() - m_bufferUnderrunTimestamp; payload.AddMember( - STUTTER_DURATION_KEY, - std::chrono::duration_cast(stutterDuration).count(), - payload.GetAllocator()); + STUTTER_DURATION_KEY, + (int64_t)std::chrono::duration_cast(stutterDuration).count(), + payload.GetAllocator()); rapidjson::StringBuffer buffer; rapidjson::Writer writer(buffer); @@ -935,17 +1156,18 @@ void AudioPlayer::sendPlaybackFinishedEvent() { } void AudioPlayer::sendPlaybackFailedEvent( - const std::string& failingToken, - ErrorType errorType, - const std::string& message) { + const std::string& failingToken, + ErrorType errorType, + const std::string& message) { rapidjson::Document payload(rapidjson::kObjectType); payload.AddMember(TOKEN_KEY, failingToken, payload.GetAllocator()); rapidjson::Value currentPlaybackState(rapidjson::kObjectType); currentPlaybackState.AddMember(TOKEN_KEY, m_token, payload.GetAllocator()); currentPlaybackState.AddMember( - OFFSET_KEY, - std::chrono::duration_cast(getOffset()).count(), payload.GetAllocator()); + OFFSET_KEY, + (int64_t)std::chrono::duration_cast(getOffset()).count(), + payload.GetAllocator()); currentPlaybackState.AddMember(ACTIVITY_KEY, playerActivityToString(m_currentActivity), payload.GetAllocator()); payload.AddMember("currentPlaybackState", currentPlaybackState, payload.GetAllocator()); @@ -986,21 +1208,61 @@ void AudioPlayer::sendPlaybackQueueClearedEvent() { m_messageSender->sendMessage(request); } -void AudioPlayer::sendStreamMetadataExtractedEvent() { - //TODO: Implement/call this once MediaPlayer exports metadata info (ACSDK-414). +void AudioPlayer::sendStreamMetadataExtractedEvent(std::shared_ptr vectorOfTags) { + rapidjson::Document payload(rapidjson::kObjectType); + payload.AddMember(TOKEN_KEY, m_token, payload.GetAllocator()); + + rapidjson::Value metadata(rapidjson::kObjectType); + for (auto& tag : *vectorOfTags) { + rapidjson::Value tagKey(tag.key.c_str(), payload.GetAllocator()); + if (TagType::BOOLEAN == tag.type) { + if (!tag.value.compare("true")) { + metadata.AddMember(tagKey, true, payload.GetAllocator()); + } else { + metadata.AddMember(tagKey, false, payload.GetAllocator()); + } + } else { + rapidjson::Value tagValue(tag.value.c_str(), payload.GetAllocator()); + metadata.AddMember(tagKey, tagValue, payload.GetAllocator()); + } + } + payload.AddMember("metadata", metadata, payload.GetAllocator()); + + rapidjson::StringBuffer buffer; + rapidjson::Writer writer(buffer); + if (!payload.Accept(writer)) { + ACSDK_ERROR(LX("sendStreamMetadataExtractedEvent").d("reason", "writerRefusedJsonObject")); + return; + } + + auto event = buildJsonEventString("StreamMetadataExtracted", "", buffer.GetString()); + auto request = std::make_shared(event.second); + m_messageSender->sendMessage(request); } -std::chrono::milliseconds AudioPlayer::getOffset() { - if (PlayerActivity::PLAYING != m_currentActivity) { - return m_offset; +void AudioPlayer::notifyObserver() { + avsCommon::sdkInterfaces::AudioPlayerObserverInterface::Context context; + context.audioItemId = m_audioItemId; + context.offset = getOffset(); + + ACSDK_DEBUG1(LX("notifyObserver").d("playerActivity", playerActivityToString(m_currentActivity))); + + for (auto& observer : m_observers) { + observer->onPlayerActivityChanged(m_currentActivity, context); } - m_offset = std::chrono::milliseconds(m_mediaPlayer->getOffsetInMilliseconds()); - if (m_offset < std::chrono::milliseconds::zero()) { - m_offset = std::chrono::milliseconds::zero(); +} + +std::chrono::milliseconds AudioPlayer::getOffset() { + // If the source id is not set, do not ask MediaPlayer for the offset. + if (m_sourceId != ERROR_SOURCE_ID) { + auto offset = m_mediaPlayer->getOffset(m_sourceId); + if (offset != MEDIA_PLAYER_INVALID_OFFSET) { + m_offset = offset; + } } return m_offset; } -} // namespace audioPlayer -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace audioPlayer +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/AudioPlayer/src/CMakeLists.txt b/CapabilityAgents/AudioPlayer/src/CMakeLists.txt index 74b3792af2..a494c83b81 100644 --- a/CapabilityAgents/AudioPlayer/src/CMakeLists.txt +++ b/CapabilityAgents/AudioPlayer/src/CMakeLists.txt @@ -1,6 +1,7 @@ add_definitions("-DACSDK_LOG_MODULE=audioplayer") add_library(AudioPlayer SHARED - AudioPlayer.cpp) + AudioPlayer.cpp + IntervalCalculator.cpp) target_include_directories(AudioPlayer PUBLIC "${AudioPlayer_SOURCE_DIR}/include" "${AVSCommon_INCLUDE_DIRS}") @@ -8,4 +9,4 @@ target_link_libraries(AudioPlayer AVSCommon) # install target -asdk_install() \ No newline at end of file +asdk_install() diff --git a/CapabilityAgents/AudioPlayer/src/IntervalCalculator.cpp b/CapabilityAgents/AudioPlayer/src/IntervalCalculator.cpp new file mode 100644 index 0000000000..bd4c30f406 --- /dev/null +++ b/CapabilityAgents/AudioPlayer/src/IntervalCalculator.cpp @@ -0,0 +1,60 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "AudioPlayer/IntervalCalculator.h" + +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace audioPlayer { + +/// String to identify log entries originating from this file. +static const std::string TAG("IntervalCalculator"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +bool getIntervalStart( + const std::chrono::milliseconds& interval, + const std::chrono::milliseconds& offset, + std::chrono::milliseconds* intervalStart) { + if (!intervalStart || interval <= std::chrono::milliseconds::zero() || offset < std::chrono::milliseconds::zero()) { + ACSDK_ERROR(LX(__func__) + .d("interval", interval.count()) + .d("offset", offset.count()) + .d("*intervalStart", intervalStart) + .m("failure, returning false")); + return false; + } + + if (interval >= offset) { + *intervalStart = interval - offset; + } else { + *intervalStart = interval - (offset % interval); + } + + ACSDK_DEBUG5( + LX(__func__).d("interval", interval.count()).d("offset", offset.count()).d("*intervalStart", intervalStart)); + return true; +} + +} // namespace audioPlayer +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/AudioPlayer/test/AudioPlayerTest.cpp b/CapabilityAgents/AudioPlayer/test/AudioPlayerTest.cpp new file mode 100644 index 0000000000..4bf0432949 --- /dev/null +++ b/CapabilityAgents/AudioPlayer/test/AudioPlayerTest.cpp @@ -0,0 +1,1655 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/// @file AudioPlayerTest.cpp + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "AudioPlayer/AudioPlayer.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace audioPlayer { +namespace test { + +using namespace avsCommon::utils::json; +using namespace avsCommon::utils; +using namespace avsCommon; +using namespace avsCommon::avs; +using namespace avsCommon::avs::attachment; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::test; +using namespace avsCommon::utils::mediaPlayer; +using namespace avsCommon::utils::memory; +using namespace avsCommon::utils::mediaPlayer::test; +using namespace ::testing; +using namespace rapidjson; + +/// Plenty of time for a test to complete. +static std::chrono::milliseconds WAIT_TIMEOUT(1000); + +/// The name of the @c FocusManager channel used by the @c AudioPlayer. +static const std::string CHANNEL_NAME(avsCommon::sdkInterfaces::FocusManagerInterface::CONTENT_CHANNEL_NAME); + +/// Namespace for AudioPlayer. +static const std::string NAMESPACE_AUDIO_PLAYER("AudioPlayer"); + +/// Name for AudioPlayer Play directive. +static const std::string NAME_PLAY("Play"); + +/// Name for AudioPlayer Stop directive. +static const std::string NAME_STOP("Stop"); + +/// Name for AudioPlayer ClearQueue directive. +static const std::string NAME_CLEARQUEUE("ClearQueue"); + +/// The @c NamespaceAndName to send to the @c ContextManager. +static const NamespaceAndName NAMESPACE_AND_NAME_PLAYBACK_STATE{NAMESPACE_AUDIO_PLAYER, "PlaybackState"}; + +/// Message Id for testing. +static const std::string MESSAGE_ID_TEST("MessageId_Test"); + +/// Another message Id for testing. +static const std::string MESSAGE_ID_TEST_2("MessageId_Test2"); + +/// PlayRequestId for testing. +static const std::string PLAY_REQUEST_ID_TEST("PlayRequestId_Test"); + +/// Context ID for testing +static const std::string CONTEXT_ID_TEST("ContextId_Test"); + +/// Context ID for testing +static const std::string CONTEXT_ID_TEST_2("ContextId_Test2"); + +/// Token for testing. +static const std::string TOKEN_TEST("Token_Test"); + +/// Previous token for testing. +static const std::string PREV_TOKEN_TEST("Prev_Token_Test"); + +/// Format of the audio. +static const std::string FORMAT_TEST("AUDIO_MPEG"); + +/// URL for testing. +static const std::string URL_TEST("cid:Test"); + +/// ENQUEUE playBehavior. +static const std::string NAME_ENQUEUE("ENQUEUE"); + +/// REPLACE_ALL playBehavior. +static const std::string NAME_REPLACE_ALL("REPLACE_ALL"); + +/// CLEAR_ALL clearBehavior. +static const std::string NAME_CLEAR_ALL("CLEAR_ALL"); + +/// audioItemId for testing. +static const std::string AUDIO_ITEM_ID_1("testID1"); +static const std::string AUDIO_ITEM_ID_2("testID2"); + +/// The @c FINISHED state of the @c AudioPlayer. +static const std::string FINISHED_STATE("FINISHED"); + +/// The @c PLAYING state of the @c AudioPlayer +static const std::string PLAYING_STATE{"PLAYING"}; + +/// The @c IDLE state of the @c AudioPlayer +static const std::string IDLE_STATE{"IDLE"}; + +/// The offset in milliseconds returned by the mock media player. +static const long OFFSET_IN_MILLISECONDS_TEST{100}; + +/// ExpiryTime for testing. Needs to be in ISO 8601 format. +static const std::string EXPIRY_TEST("481516234248151623421088"); + +/// progressReportDelayInMilliseconds for testing. +static const long PROGRESS_REPORT_DELAY{200}; + +/// progressReportIntervalInMilliseconds for testing. +static const long PROGRESS_REPORT_INTERVAL{100}; + +/// The offset in milliseconds returned by the mock media player slightly before the progressReportDelayInMilliseconds. +static const long OFFSET_IN_MILLISECONDS_BEFORE_PROGRESS_REPORT_DELAY{PROGRESS_REPORT_DELAY - 1}; + +/// The offset in milliseconds returned by the mock media player slightly before the progressReportDelayInMilliseconds. +static const long OFFSET_IN_MILLISECONDS_AFTER_PROGRESS_REPORT_DELAY{PROGRESS_REPORT_DELAY + 1}; + +/// The offset in milliseconds returned by the mock media player slightly before the +/// progressReportIntervalInMilliseconds. +static const long OFFSET_IN_MILLISECONDS_BEFORE_PROGRESS_REPORT_INTERVAL{PROGRESS_REPORT_INTERVAL - 1}; + +/// The offset in milliseconds returned by the mock media player slightly before the +/// progressReportIntervalInMilliseconds. +static const long OFFSET_IN_MILLISECONDS_AFTER_PROGRESS_REPORT_INTERVAL{PROGRESS_REPORT_INTERVAL + 1}; + +/// The time that must elapse in order to get 2.5 interval periods +static const std::chrono::milliseconds TIME_FOR_TWO_AND_A_HALF_INTERVAL_PERIODS{ + std::chrono::milliseconds((2 * PROGRESS_REPORT_INTERVAL) + (PROGRESS_REPORT_INTERVAL / 2))}; + +/// Payloads for testing. +static std::string createEnqueuePayloadTest(long offsetInMilliseconds) { + // clang-format off + const std::string ENQUEUE_PAYLOAD_TEST = + "{" + "\"playBehavior\":\"" + NAME_ENQUEUE + "\"," + "\"audioItem\": {" + "\"audioItemId\":\"" + AUDIO_ITEM_ID_1 + "\"," + "\"stream\": {" + "\"url\":\"" + URL_TEST + "\"," + "\"streamFormat\":\"" + FORMAT_TEST + "\"," + "\"offsetInMilliseconds\":" + std::to_string(offsetInMilliseconds) + "," + "\"expiryTime\":\"" + EXPIRY_TEST + "\"," + "\"progressReport\": {" + "\"progressReportDelayInMilliseconds\":" + std::to_string(PROGRESS_REPORT_DELAY) + "," + "\"progressReportIntervalInMilliseconds\":" + std::to_string(PROGRESS_REPORT_INTERVAL) + + "}," + "\"token\":\"" + TOKEN_TEST + "\"," + "\"expectedPreviousToken\":\"\"" + "}" + "}" + "}"; + // clang-format on + + return ENQUEUE_PAYLOAD_TEST; +} + +// clang-format off +static const std::string REPLACE_ALL_PAYLOAD_TEST = +"{" + "\"playBehavior\":\"" + NAME_REPLACE_ALL + "\"," + "\"audioItem\": {" + "\"audioItemId\":\"" + AUDIO_ITEM_ID_2 + "\"," + "\"stream\": {" + "\"url\":\"" + URL_TEST + "\"," + "\"streamFormat\":\"" + FORMAT_TEST + "\"," + "\"offsetInMilliseconds\":" + std::to_string(OFFSET_IN_MILLISECONDS_TEST) + "," + "\"expiryTime\":\"" + EXPIRY_TEST + "\"," + "\"progressReport\": {" + "\"progressReportDelayInMilliseconds\":" + std::to_string(PROGRESS_REPORT_DELAY) + "," + "\"progressReportIntervalInMilliseconds\":" + std::to_string(PROGRESS_REPORT_INTERVAL) + + "}," + "\"token\":\"" + TOKEN_TEST + "\"," + "\"expectedPreviousToken\":\"\"" + "}" + "}" +"}"; +// clang-format on + +/// Empty payload for testing. +static const std::string EMPTY_PAYLOAD_TEST = "{}"; + +/// CLEAR_ALL payload for testing. +// clang-format off +static const std::string CLEAR_ALL_PAYLOAD_TEST = + "{" + "\"clearBehavior\":\"" + NAME_CLEAR_ALL + "\"" + "}"; +// clang-format on + +/// Token JSON key. +static const std::string TOKEN_KEY = "token"; + +/// Offset JSON key. +static const std::string OFFSET_KEY = "offsetInMilliseconds"; + +/// Player activity JSON key. +static const std::string ACTIVITY_KEY = "playerActivity"; + +/// The expected state when the @c AudioPlayer is not handling any directive. +// clang-format off +static const std::string IDLE_STATE_TEST = + "{" + "\"token\":\"\"," + "\"offsetInMilliseconds\":" + std::to_string(0) + "," + "\"playerActivity\":\"" + IDLE_STATE + "\"" + "}"; +// clang-format on + +/// Provide State Token for testing. +static const unsigned int PROVIDE_STATE_TOKEN_TEST{1}; + +/// JSON key for the event section of a message. +static const std::string MESSAGE_EVENT_KEY = "event"; + +/// JSON key for the header section of a message. +static const std::string MESSAGE_HEADER_KEY = "header"; + +/// JSON key for the name section of a message. +static const std::string MESSAGE_NAME_KEY = "name"; + +/// JSON key for the payload section of a message. +static const std::string MESSAGE_PAYLOAD_KEY = "payload"; + +/// JSON key for the metadata section of a message. +static const std::string MESSAGE_METADATA_KEY = "metadata"; + +/// JSON key for "string" type field in metadata section of StreamMetadataExtracted event. +static const std::string MESSAGE_METADATA_STRING_KEY = "StringKey"; + +/// JSON value for "string" type field in metadata section of StreamMetadataExtracted event. +static const std::string MESSAGE_METADATA_STRING_VALUE = "StringValue"; + +/// JSON key for "uint" type field in metadata section of StreamMetadataExtracted event. +static const std::string MESSAGE_METADATA_UINT_KEY = "UintKey"; + +/// JSON value for "uint" type field in metadata section of StreamMetadataExtracted event. +static const std::string MESSAGE_METADATA_UINT_VALUE = "12345"; + +/// JSON key for "int" type field in metadata section of StreamMetadataExtracted event. +static const std::string MESSAGE_METADATA_INT_KEY = "IntKey"; + +/// JSON value for "int" type field in metadata section of StreamMetadataExtracted event. +static const std::string MESSAGE_METADATA_INT_VALUE = "67890"; + +/// JSON key for "double" type field in metadata section of StreamMetadataExtracted event. +static const std::string MESSAGE_METADATA_DOUBLE_KEY = "DoubleKey"; + +/// JSON value for "double" type field in metadata section of StreamMetadataExtracted event. +static const std::string MESSAGE_METADATA_DOUBLE_VALUE = "3.14"; + +/// JSON key for "boolean" type field in metadata section of StreamMetadataExtracted event. +static const std::string MESSAGE_METADATA_BOOLEAN_KEY = "BooleanKey"; + +/// JSON value for "boolean" type field in metadata section of StreamMetadataExtracted event. +static const std::string MESSAGE_METADATA_BOOLEAN_VALUE = "true"; + +/// Name of PlaybackStarted event +static const std::string PLAYBACK_STARTED_NAME = "PlaybackStarted"; + +/// Name of PlaybackNearlyFinished event +static const std::string PLAYBACK_NEARLY_FINISHED_NAME = "PlaybackNearlyFinished"; + +/// Name of PlaybackFinished event +static const std::string PLAYBACK_FINISHED_NAME = "PlaybackFinished"; + +/// Name of PlaybackStopped event +static const std::string PLAYBACK_STOPPED_NAME = "PlaybackStopped"; + +/// Name of PlaybackPaused event +static const std::string PLAYBACK_PAUSED_NAME = "PlaybackPaused"; + +/// Name of PlaybackFailed event +static const std::string PLAYBACK_FAILED_NAME = "PlaybackFailed"; + +/// Name of PlaybackResumed event +static const std::string PLAYBACK_RESUMED_NAME = "PlaybackResumed"; + +/// Name of PlaybackStutterStarted event +static const std::string PLAYBACK_STUTTER_STARTED_NAME = "PlaybackStutterStarted"; + +/// Name of PlaybackStutterFinished event +static const std::string PLAYBACK_STUTTER_FINISHED_NAME = "PlaybackStutterFinished"; + +/// Name of ProgressReportDelayElapsed event +static const std::string PROGRESS_REPORT_DELAY_ELAPSED_NAME = "ProgressReportDelayElapsed"; + +/// Name of ProgressReportIntervalElapsed event +static const std::string PROGRESS_REPORT_INTERVAL_ELAPSED_NAME = "ProgressReportIntervalElapsed"; + +/// Name of StreamMetadataExtracted event +static const std::string STREAM_METADATA_EXTRACTED_NAME = "StreamMetadataExtracted"; + +/// String to identify log entries originating from this file. +static const std::string TAG("AudioPlayerTest"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +class TestAudioPlayerObserver : public AudioPlayerObserverInterface { +public: + TestAudioPlayerObserver() : m_state{PlayerActivity::IDLE} { + } + bool waitFor(PlayerActivity activity, std::chrono::milliseconds timeout) { + std::unique_lock lock(m_mutex); + return m_conditionVariable.wait_for(lock, timeout, [this, activity] { return m_state == activity; }); + } + void onPlayerActivityChanged(avsCommon::avs::PlayerActivity state, const Context& context) override { + ACSDK_DEBUG( + LX("onPlayerActivityChanged") + .d("state", state) + .d("audioItemId", context.audioItemId) + .d("offsetInMs", std::chrono::duration_cast(context.offset).count())); + std::lock_guard lock(m_mutex); + m_state = state; + m_conditionVariable.notify_all(); + } + +private: + PlayerActivity m_state; + std::mutex m_mutex; + std::condition_variable m_conditionVariable; +}; + +class AudioPlayerTest : public ::testing::Test { +public: + AudioPlayerTest(); + + void SetUp() override; + void TearDown() override; + + /// @c AudioPlayer to test + std::shared_ptr m_audioPlayer; + + /// @c A test observer to wait for @c AudioPlayer state changes + std::shared_ptr m_testAudioPlayerObserver; + + /// Player to send the audio to. + std::shared_ptr m_mockMediaPlayer; + + /// @c ContextManager to provide state and update state. + std::shared_ptr m_mockContextManager; + + /// @c FocusManager to request focus to the DIALOG channel. + std::shared_ptr m_mockFocusManager; + + /// A directive handler result to send the result to. + std::unique_ptr m_mockDirectiveHandlerResult; + + /// A message sender used to send events to AVS. + std::shared_ptr m_mockMessageSender; + + /// An exception sender used to send exception encountered events to AVS. + std::shared_ptr m_mockExceptionSender; + + /// A playback router to notify when @c AudioPlayer becomes active. + std::shared_ptr m_mockPlaybackRouter; + + /// Attachment manager used to create a reader. + std::shared_ptr m_attachmentManager; + + /// Map for expected messages testing + std::map m_expectedMessages; + + /// Identifier for the currently selected audio source. + MediaPlayerInterface::SourceId m_sourceId; + + /** + * This is invoked in response to a @c setState call. + * + * @return @c SUCCESS. + */ + SetStateResult wakeOnSetState(); + + /// Promise to be fulfilled when @c setState is called. + std::promise m_wakeSetStatePromise; + + /// Future to notify when @c setState is called. + std::future m_wakeSetStateFuture; + + /** + * This is invoked in response to a @c acquireChannel call. + * + * @return @c true + */ + + bool wakeOnAcquireChannel(); + + /// Promise to be fulfilled when @c acquireChannel is called. + std::promise m_wakeAcquireChannelPromise; + + /// Future to notify when @c acquireChannel is called. + std::future m_wakeAcquireChannelFuture; + + /** + * This is invoked in response to a @c releaseChannel call. + * + * @return @c true + */ + std::future wakeOnReleaseChannel(); + + /// Promise to be fulfilled when @c acquireChannel is called. + std::promise m_wakeReleaseChannelPromise; + + /// Future to notify when @c releaseChannel is called. + std::future m_wakeReleaseChannelFuture; + + /** + * Fulfills the @c m_wakeSendMessagePromise. This is invoked in response to a @c sendMessage call. + */ + void wakeOnSendMessage(); + + /// Promise to be fulfilled when @c sendMessage is called. + std::promise m_wakeSendMessagePromise; + + /// Future to notify when @c sendMessage is called. + std::future m_wakeSendMessageFuture; + + /** + * Consolidate code to send Play directive. + * + * @param offsetInMilliseconds The offset to use in the directive. + */ + void sendPlayDirective(long offsetInMilliseconds = OFFSET_IN_MILLISECONDS_TEST); + + /** + * Consolidate code to send ClearQueue directive + */ + + void sendClearQueueDirective(); + + /** + * Verify that the message name matches the expected name + * + * @param request The @c MessageRequest to verify + * @param expectedName The expected name to find in the json header + */ + + bool verifyMessage(std::shared_ptr request, std::string expectedName); + + /** + * Verify that the sent request matches one in a Map of expectedMessages + * + * @param request The @c MessageRequest to verify + * @param expectedMessages The map of expected messages and a count of how many are seen + */ + + void verifyMessageMap( + std::shared_ptr request, + std::map* expectedMessages); + + /** + * Verify that the provided state matches the expected state + * + * @param jsonState The state to verify + * @param expectedState The expected state + */ + + void verifyState(const std::string& providedState, const std::string& expectedState); + + /** + * Verify that the message name matches the expected name and also verify expected tags. + * + * @param request The @c MessageRequest to verify + * @param expectedMessages Map of expected tags and count of how many are seen. + */ + void verifyTags( + std::shared_ptr request, + std::map* expectedMessages); + + /// General purpose mutex. + std::mutex m_mutex; + + /// Condition variable to wake on a message being sent. + std::condition_variable m_messageSentTrigger; + + /// Condition variable to wake on MediaPlayer calls. This is used when a MediaPlayer call is expected to occur + /// without a corresponding change in PlayerActivity. + std::condition_variable m_mediaPlayerCallTrigger; +}; + +AudioPlayerTest::AudioPlayerTest() : + m_wakeSetStatePromise{}, + m_wakeSetStateFuture{m_wakeSetStatePromise.get_future()}, + m_wakeAcquireChannelPromise{}, + m_wakeAcquireChannelFuture{m_wakeAcquireChannelPromise.get_future()}, + m_wakeReleaseChannelPromise{}, + m_wakeReleaseChannelFuture{m_wakeReleaseChannelPromise.get_future()}, + m_wakeSendMessagePromise{}, + m_wakeSendMessageFuture{m_wakeSendMessagePromise.get_future()} { +} + +void AudioPlayerTest::SetUp() { + m_mockContextManager = std::make_shared>(); + m_mockFocusManager = std::make_shared>(); + m_mockMessageSender = std::make_shared>(); + m_mockExceptionSender = std::make_shared>(); + m_attachmentManager = std::make_shared(AttachmentManager::AttachmentType::IN_PROCESS); + m_mockMediaPlayer = MockMediaPlayer::create(); + m_mockPlaybackRouter = std::make_shared>(); + m_audioPlayer = AudioPlayer::create( + m_mockMediaPlayer, + m_mockMessageSender, + m_mockFocusManager, + m_mockContextManager, + m_mockExceptionSender, + m_mockPlaybackRouter); + m_testAudioPlayerObserver = std::make_shared(); + m_audioPlayer->addObserver(m_testAudioPlayerObserver); + m_mockDirectiveHandlerResult = std::unique_ptr(new MockDirectiveHandlerResult); + + ASSERT_TRUE(m_audioPlayer); +} + +void AudioPlayerTest::TearDown() { + m_audioPlayer->shutdown(); + m_mockMediaPlayer->shutdown(); +} + +SetStateResult AudioPlayerTest::wakeOnSetState() { + m_wakeSetStatePromise.set_value(); + return SetStateResult::SUCCESS; +} + +bool AudioPlayerTest::wakeOnAcquireChannel() { + m_wakeAcquireChannelPromise.set_value(); + return true; +} + +std::future AudioPlayerTest::wakeOnReleaseChannel() { + std::promise releaseChannelSuccess; + std::future returnValue = releaseChannelSuccess.get_future(); + releaseChannelSuccess.set_value(true); + m_wakeReleaseChannelPromise.set_value(); + return returnValue; +} + +void AudioPlayerTest::wakeOnSendMessage() { + m_wakeSendMessagePromise.set_value(); +} + +void AudioPlayerTest::sendPlayDirective(long offsetInMilliseconds) { + auto avsMessageHeader = + std::make_shared(NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_TEST, PLAY_REQUEST_ID_TEST); + + std::shared_ptr playDirective = AVSDirective::create( + "", avsMessageHeader, createEnqueuePayloadTest(offsetInMilliseconds), m_attachmentManager, CONTEXT_ID_TEST); + EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, NAMESPACE_AUDIO_PLAYER)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &AudioPlayerTest::wakeOnAcquireChannel)); + + EXPECT_CALL(*m_mockDirectiveHandlerResult, setCompleted()); + + m_audioPlayer->CapabilityAgent::preHandleDirective(playDirective, std::move(m_mockDirectiveHandlerResult)); + m_audioPlayer->CapabilityAgent::handleDirective(MESSAGE_ID_TEST); + + ASSERT_EQ(std::future_status::ready, m_wakeAcquireChannelFuture.wait_for(WAIT_TIMEOUT)); + + m_audioPlayer->onFocusChanged(FocusState::FOREGROUND); + + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PLAYING, WAIT_TIMEOUT)); +} + +void AudioPlayerTest::sendClearQueueDirective() { + auto avsClearMessageHeader = std::make_shared( + NAMESPACE_AUDIO_PLAYER, NAME_CLEARQUEUE, MESSAGE_ID_TEST, PLAY_REQUEST_ID_TEST); + + std::shared_ptr clearQueueDirective = + AVSDirective::create("", avsClearMessageHeader, CLEAR_ALL_PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); + + m_audioPlayer->CapabilityAgent::preHandleDirective(clearQueueDirective, std::move(m_mockDirectiveHandlerResult)); + m_audioPlayer->CapabilityAgent::handleDirective(MESSAGE_ID_TEST); +} + +bool AudioPlayerTest::verifyMessage(std::shared_ptr request, std::string expectedName) { + rapidjson::Document document; + document.Parse(request->getJsonContent().c_str()); + EXPECT_FALSE(document.HasParseError()) + << "rapidjson detected a parsing error at offset:" + std::to_string(document.GetErrorOffset()) + + ", error message: " + GetParseError_En(document.GetParseError()); + + auto event = document.FindMember(MESSAGE_EVENT_KEY); + EXPECT_NE(event, document.MemberEnd()); + + auto header = event->value.FindMember(MESSAGE_HEADER_KEY); + EXPECT_NE(header, event->value.MemberEnd()); + + std::string requestName; + jsonUtils::retrieveValue(header->value, MESSAGE_NAME_KEY, &requestName); + + return (requestName == expectedName); +} + +void AudioPlayerTest::verifyMessageMap( + std::shared_ptr request, + std::map* expectedMessages) { + rapidjson::Document document; + document.Parse(request->getJsonContent().c_str()); + EXPECT_FALSE(document.HasParseError()) + << "rapidjson detected a parsing error at offset:" + std::to_string(document.GetErrorOffset()) + + ", error message: " + GetParseError_En(document.GetParseError()); + + auto event = document.FindMember(MESSAGE_EVENT_KEY); + EXPECT_NE(event, document.MemberEnd()); + + auto header = event->value.FindMember(MESSAGE_HEADER_KEY); + EXPECT_NE(header, event->value.MemberEnd()); + + std::string requestName; + jsonUtils::retrieveValue(header->value, MESSAGE_NAME_KEY, &requestName); + + if (expectedMessages->find(requestName) != expectedMessages->end()) { + expectedMessages->at(requestName) = expectedMessages->at(requestName) + 1; + } +} + +void AudioPlayerTest::verifyState(const std::string& providedState, const std::string& expectedState) { + rapidjson::Document providedStateParsed; + providedStateParsed.Parse(providedState); + + rapidjson::Document expectedStateParsed; + expectedStateParsed.Parse(expectedState); + + EXPECT_EQ(providedStateParsed, expectedStateParsed); +} + +void AudioPlayerTest::verifyTags( + std::shared_ptr request, + std::map* expectedMessages) { + rapidjson::Document document; + document.Parse(request->getJsonContent().c_str()); + EXPECT_FALSE(document.HasParseError()) + << "rapidjson detected a parsing error at offset:" + std::to_string(document.GetErrorOffset()) + + ", error message: " + GetParseError_En(document.GetParseError()); + + auto event = document.FindMember(MESSAGE_EVENT_KEY); + EXPECT_NE(event, document.MemberEnd()); + + auto header = event->value.FindMember(MESSAGE_HEADER_KEY); + EXPECT_NE(header, event->value.MemberEnd()); + + std::string requestName; + jsonUtils::retrieveValue(header->value, MESSAGE_NAME_KEY, &requestName); + + if (expectedMessages->find(requestName) != expectedMessages->end()) { + expectedMessages->at(requestName) = expectedMessages->at(requestName) + 1; + } + + auto payload = event->value.FindMember(MESSAGE_PAYLOAD_KEY); + EXPECT_NE(payload, event->value.MemberEnd()); + + auto metadata = payload->value.FindMember(MESSAGE_METADATA_KEY); + EXPECT_NE(metadata, payload->value.MemberEnd()); + + std::string metadata_string_value; + jsonUtils::retrieveValue(metadata->value, MESSAGE_METADATA_STRING_KEY, &metadata_string_value); + + if (expectedMessages->find(metadata_string_value) != expectedMessages->end()) { + expectedMessages->at(metadata_string_value) = expectedMessages->at(metadata_string_value) + 1; + } + + std::string metadata_uint_value; + jsonUtils::retrieveValue(metadata->value, MESSAGE_METADATA_UINT_KEY, &metadata_uint_value); + + if (expectedMessages->find(metadata_uint_value) != expectedMessages->end()) { + expectedMessages->at(metadata_uint_value) = expectedMessages->at(metadata_uint_value) + 1; + } + + std::string metadata_int_value; + jsonUtils::retrieveValue(metadata->value, MESSAGE_METADATA_INT_KEY, &metadata_int_value); + + if (expectedMessages->find(metadata_int_value) != expectedMessages->end()) { + expectedMessages->at(metadata_int_value) = expectedMessages->at(metadata_int_value) + 1; + } + + std::string metadata_double_value; + jsonUtils::retrieveValue(metadata->value, MESSAGE_METADATA_DOUBLE_KEY, &metadata_double_value); + + if (expectedMessages->find(metadata_double_value) != expectedMessages->end()) { + expectedMessages->at(metadata_double_value) = expectedMessages->at(metadata_double_value) + 1; + } + + bool metadata_boolean_value = false; + jsonUtils::retrieveValue(metadata->value, MESSAGE_METADATA_BOOLEAN_KEY, &metadata_boolean_value); + ASSERT_TRUE(metadata_boolean_value); +} + +/** + * Test create() with nullptrs + */ + +TEST_F(AudioPlayerTest, testCreateWithNullPointers) { + std::shared_ptr testAudioPlayer; + + testAudioPlayer = AudioPlayer::create( + nullptr, + m_mockMessageSender, + m_mockFocusManager, + m_mockContextManager, + m_mockExceptionSender, + m_mockPlaybackRouter); + EXPECT_EQ(testAudioPlayer, nullptr); + + testAudioPlayer = AudioPlayer::create( + m_mockMediaPlayer, + nullptr, + m_mockFocusManager, + m_mockContextManager, + m_mockExceptionSender, + m_mockPlaybackRouter); + EXPECT_EQ(testAudioPlayer, nullptr); + + testAudioPlayer = AudioPlayer::create( + m_mockMediaPlayer, + m_mockMessageSender, + nullptr, + m_mockContextManager, + m_mockExceptionSender, + m_mockPlaybackRouter); + EXPECT_EQ(testAudioPlayer, nullptr); + + testAudioPlayer = AudioPlayer::create( + m_mockMediaPlayer, + m_mockMessageSender, + m_mockFocusManager, + nullptr, + m_mockExceptionSender, + m_mockPlaybackRouter); + EXPECT_EQ(testAudioPlayer, nullptr); + + testAudioPlayer = AudioPlayer::create( + m_mockMediaPlayer, + m_mockMessageSender, + m_mockFocusManager, + m_mockContextManager, + nullptr, + m_mockPlaybackRouter); + EXPECT_EQ(testAudioPlayer, nullptr); + + testAudioPlayer = AudioPlayer::create( + m_mockMediaPlayer, + m_mockMessageSender, + m_mockFocusManager, + m_mockContextManager, + m_mockExceptionSender, + nullptr); + EXPECT_EQ(testAudioPlayer, nullptr); +} + +/** + * Test transition from Idle to Playing + */ + +TEST_F(AudioPlayerTest, testTransitionFromIdleToPlaying) { + EXPECT_CALL(*(m_mockMediaPlayer.get()), play(_)).Times(AtLeast(1)); + sendPlayDirective(); +} + +/** + * Test transition from Playing to Stopped with Stop Directive + */ + +TEST_F(AudioPlayerTest, testTransitionFromPlayingToStopped) { + sendPlayDirective(); + + EXPECT_CALL(*(m_mockMediaPlayer.get()), stop(_)).Times(AtLeast(1)); + + // now send Stop directive + auto avsStopMessageHeader = + std::make_shared(NAMESPACE_AUDIO_PLAYER, NAME_STOP, MESSAGE_ID_TEST, PLAY_REQUEST_ID_TEST); + + std::shared_ptr stopDirective = + AVSDirective::create("", avsStopMessageHeader, EMPTY_PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); + + m_audioPlayer->CapabilityAgent::preHandleDirective(stopDirective, std::move(m_mockDirectiveHandlerResult)); + m_audioPlayer->CapabilityAgent::handleDirective(MESSAGE_ID_TEST); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::STOPPED, WAIT_TIMEOUT)); +} + +/** + * Test transition from Playing to Stopped with ClearQueue.CLEAR_ALL Directive + */ + +TEST_F(AudioPlayerTest, testTransitionFromPlayingToStoppedWithClear) { + sendPlayDirective(); + + EXPECT_CALL(*(m_mockMediaPlayer.get()), stop(_)).Times(AtLeast(1)); + + sendClearQueueDirective(); + + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::STOPPED, WAIT_TIMEOUT)); +} + +/** + * Test transition from Stopped to Playing after issuing second Play directive + */ + +TEST_F(AudioPlayerTest, testTransitionFromStoppedToPlaying) { + sendPlayDirective(); + + EXPECT_CALL(*(m_mockMediaPlayer.get()), stop(_)).Times(AtLeast(1)); + + sendClearQueueDirective(); + + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::STOPPED, WAIT_TIMEOUT)); + + m_audioPlayer->onFocusChanged(FocusState::NONE); + + EXPECT_CALL(*(m_mockMediaPlayer.get()), play(_)).Times(AtLeast(1)); + + EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, NAMESPACE_AUDIO_PLAYER)) + .Times(1) + .WillOnce(Return(true)); + + // send a second Play directive + auto avsMessageHeader = std::make_shared(NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_TEST_2); + + std::shared_ptr playDirective = AVSDirective::create( + "", + avsMessageHeader, + createEnqueuePayloadTest(OFFSET_IN_MILLISECONDS_TEST), + m_attachmentManager, + CONTEXT_ID_TEST_2); + + m_audioPlayer->CapabilityAgent::preHandleDirective(playDirective, std::move(m_mockDirectiveHandlerResult)); + m_audioPlayer->CapabilityAgent::handleDirective(MESSAGE_ID_TEST_2); + + m_audioPlayer->onFocusChanged(FocusState::FOREGROUND); + + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PLAYING, WAIT_TIMEOUT)); +} + +/** + * Test transition from Playing to Paused when focus changes to Dialog channel + */ + +TEST_F(AudioPlayerTest, testTransitionFromPlayingToPaused) { + sendPlayDirective(); + + EXPECT_CALL(*(m_mockMediaPlayer.get()), pause(_)).Times(AtLeast(1)); + + // simulate focus change + m_audioPlayer->onFocusChanged(FocusState::BACKGROUND); + + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PAUSED, WAIT_TIMEOUT)); +} + +/** + * Test transition from Paused to Stopped on ClearQueue.CLEAR_ALL directive + */ +TEST_F(AudioPlayerTest, testTransitionFromPausedToStopped) { + sendPlayDirective(); + + EXPECT_CALL(*(m_mockMediaPlayer.get()), stop(_)).Times(AtLeast(1)); + + // simulate focus change in order to pause + m_audioPlayer->onFocusChanged(FocusState::BACKGROUND); + + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PAUSED, WAIT_TIMEOUT)); + + sendClearQueueDirective(); + + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::STOPPED, WAIT_TIMEOUT)); +} + +/** + * Test transition from Paused to Playing after resume + */ + +TEST_F(AudioPlayerTest, testResumeAfterPaused) { + sendPlayDirective(); + + EXPECT_CALL(*(m_mockMediaPlayer.get()), stop(_)).Times(AtLeast(1)); + + // simulate focus change in order to pause + m_audioPlayer->onFocusChanged(FocusState::BACKGROUND); + + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PAUSED, WAIT_TIMEOUT)); + + EXPECT_CALL(*(m_mockMediaPlayer.get()), resume(_)).Times(AtLeast(1)); + + m_audioPlayer->onFocusChanged(FocusState::FOREGROUND); + + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PLAYING, WAIT_TIMEOUT)); +} + +/** + * Test @c provideState while IDLE + */ + +TEST_F(AudioPlayerTest, testCallingProvideStateWhenIdle) { + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_PLAYBACK_STATE, _, StateRefreshPolicy::NEVER, PROVIDE_STATE_TOKEN_TEST)) + .Times(1) + .WillOnce(DoAll( + // need to include all four arguments, but only care about jsonState + Invoke([this]( + const avs::NamespaceAndName& namespaceAndName, + const std::string& jsonState, + const avs::StateRefreshPolicy& refreshPolicy, + const unsigned int stateRequestToken) { verifyState(jsonState, IDLE_STATE_TEST); }), + InvokeWithoutArgs(this, &AudioPlayerTest::wakeOnSetState))); + + m_audioPlayer->provideState(NAMESPACE_AND_NAME_PLAYBACK_STATE, PROVIDE_STATE_TOKEN_TEST); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); +} + +/** + * Test @c onPlaybackError and expect a PlaybackFailed message + */ + +TEST_F(AudioPlayerTest, testOnPlaybackError) { + m_expectedMessages.insert({PLAYBACK_STARTED_NAME, 0}); + m_expectedMessages.insert({PLAYBACK_FAILED_NAME, 0}); + m_expectedMessages.insert({PLAYBACK_STOPPED_NAME, 0}); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Invoke([this](std::shared_ptr request) { + std::lock_guard lock(m_mutex); + verifyMessageMap(request, &m_expectedMessages); + m_messageSentTrigger.notify_one(); + })); + + sendPlayDirective(); + + m_audioPlayer->onPlaybackError( + m_mockMediaPlayer->getCurrentSourceId(), ErrorType::MEDIA_ERROR_UNKNOWN, "TEST_ERROR"); + + std::unique_lock lock(m_mutex); + + bool result; + + result = m_messageSentTrigger.wait_for(lock, WAIT_TIMEOUT, [this] { + for (auto messageStatus : m_expectedMessages) { + if (messageStatus.second == 0) { + return false; + } + } + return true; + }); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::STOPPED, WAIT_TIMEOUT)); + ASSERT_TRUE(result); +} + +/** + * Test @c onPlaybackPaused and expect a PlaybackPaused message + */ + +TEST_F(AudioPlayerTest, testOnPlaybackPaused) { + m_expectedMessages.insert({PLAYBACK_STARTED_NAME, 0}); + m_expectedMessages.insert({PLAYBACK_PAUSED_NAME, 0}); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Invoke([this](std::shared_ptr request) { + std::lock_guard lock(m_mutex); + verifyMessageMap(request, &m_expectedMessages); + m_messageSentTrigger.notify_one(); + })); + + sendPlayDirective(); + + m_audioPlayer->onFocusChanged(FocusState::BACKGROUND); + + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PAUSED, WAIT_TIMEOUT)); + + std::unique_lock lock(m_mutex); + + bool result; + + result = m_messageSentTrigger.wait_for(lock, WAIT_TIMEOUT, [this] { + for (auto messageStatus : m_expectedMessages) { + if (messageStatus.second == 0) { + return false; + } + } + return true; + }); + + ASSERT_TRUE(result); +} + +/** + * Test @c onPlaybackResumed and expect a PlaybackResumed message + */ + +TEST_F(AudioPlayerTest, testOnPlaybackResumed) { + m_expectedMessages.insert({PLAYBACK_STARTED_NAME, 0}); + m_expectedMessages.insert({PLAYBACK_RESUMED_NAME, 0}); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Invoke([this](std::shared_ptr request) { + std::lock_guard lock(m_mutex); + verifyMessageMap(request, &m_expectedMessages); + m_messageSentTrigger.notify_one(); + })); + + sendPlayDirective(); + + m_audioPlayer->onPlaybackResumed(m_mockMediaPlayer->getCurrentSourceId()); + + std::unique_lock lock(m_mutex); + + bool result; + + result = m_messageSentTrigger.wait_for(lock, WAIT_TIMEOUT, [this] { + for (auto messageStatus : m_expectedMessages) { + if (messageStatus.second == 0) { + return false; + } + } + return true; + }); + + ASSERT_TRUE(result); +} + +/** + * Test @c onPlaybackFinished and expect a PLAYBACK_NEARLY_FINISHED_NAME and a PLAYBACK_FINISHED_NAME message + */ + +TEST_F(AudioPlayerTest, testOnPlaybackFinished) { + m_expectedMessages.insert({PLAYBACK_STARTED_NAME, 0}); + m_expectedMessages.insert({PLAYBACK_NEARLY_FINISHED_NAME, 0}); + m_expectedMessages.insert({PLAYBACK_FINISHED_NAME, 0}); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Invoke([this](std::shared_ptr request) { + std::lock_guard lock(m_mutex); + verifyMessageMap(request, &m_expectedMessages); + m_messageSentTrigger.notify_one(); + })); + + sendPlayDirective(); + + m_audioPlayer->onPlaybackFinished(m_mockMediaPlayer->getCurrentSourceId()); + + std::unique_lock lock(m_mutex); + + bool result; + + result = m_messageSentTrigger.wait_for(lock, WAIT_TIMEOUT, [this] { + for (auto messageStatus : m_expectedMessages) { + if (messageStatus.second == 0) { + return false; + } + } + return true; + }); + + ASSERT_TRUE(result); +} + +/** + * Test @c onBufferUnderrun and expect a PlaybackStutterStarted message + */ + +TEST_F(AudioPlayerTest, testOnBufferUnderrun) { + m_expectedMessages.insert({PLAYBACK_STARTED_NAME, 0}); + m_expectedMessages.insert({PLAYBACK_STUTTER_STARTED_NAME, 0}); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Invoke([this](std::shared_ptr request) { + std::lock_guard lock(m_mutex); + verifyMessageMap(request, &m_expectedMessages); + m_messageSentTrigger.notify_one(); + })); + + sendPlayDirective(); + + m_audioPlayer->onBufferUnderrun(m_mockMediaPlayer->getCurrentSourceId()); + + std::unique_lock lock(m_mutex); + + bool result; + + result = m_messageSentTrigger.wait_for(lock, WAIT_TIMEOUT, [this] { + for (auto messageStatus : m_expectedMessages) { + if (messageStatus.second == 0) { + return false; + } + } + return true; + }); + + ASSERT_TRUE(result); +} + +/** + * Test @c onBufferRefilled and expect a PlaybackStutterFinished message + */ + +TEST_F(AudioPlayerTest, testOnBufferRefilled) { + m_expectedMessages.insert({PLAYBACK_STARTED_NAME, 0}); + m_expectedMessages.insert({PLAYBACK_STUTTER_FINISHED_NAME, 0}); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Invoke([this](std::shared_ptr request) { + std::lock_guard lock(m_mutex); + verifyMessageMap(request, &m_expectedMessages); + m_messageSentTrigger.notify_one(); + })); + + sendPlayDirective(); + + m_audioPlayer->onBufferRefilled(m_mockMediaPlayer->getCurrentSourceId()); + + std::unique_lock lock(m_mutex); + + bool result; + + result = m_messageSentTrigger.wait_for(lock, WAIT_TIMEOUT, [this] { + for (auto messageStatus : m_expectedMessages) { + if (messageStatus.second == 0) { + return false; + } + } + return true; + }); + + ASSERT_TRUE(result); +} + +/** + * Test @c onTags and expect valid JSON. + * Build a vector of tags and pass to Observer (onTags). + * Observer will use the vector of tags and build a valid JSON object + * "StreamMetadataExtracted Event". This JSON object is verified in verifyTags. + */ + +TEST_F(AudioPlayerTest, testOnTags) { + m_expectedMessages.insert({STREAM_METADATA_EXTRACTED_NAME, 0}); + m_expectedMessages.insert({MESSAGE_METADATA_STRING_VALUE, 0}); + m_expectedMessages.insert({MESSAGE_METADATA_UINT_VALUE, 0}); + m_expectedMessages.insert({MESSAGE_METADATA_DOUBLE_VALUE, 0}); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Invoke([this](std::shared_ptr request) { + if (!m_mockMediaPlayer->waitUntilPlaybackStopped(std::chrono::milliseconds(0))) { + std::lock_guard lock(m_mutex); + verifyTags(request, &m_expectedMessages); + m_messageSentTrigger.notify_one(); + } + })); + + std::unique_ptr ptrToVectorOfTags = make_unique(); + auto vectorOfTags = ptrToVectorOfTags.get(); + + // Populate vector with dummy tags + AudioPlayer::TagKeyValueType stringTag, uintTag, intTag, doubleTag, booleanTag; + stringTag.key = std::string(MESSAGE_METADATA_STRING_KEY); + stringTag.value = std::string(MESSAGE_METADATA_STRING_VALUE); + stringTag.type = AudioPlayer::TagType::STRING; + vectorOfTags->push_back(stringTag); + + uintTag.key = std::string(MESSAGE_METADATA_UINT_KEY); + uintTag.value = std::string(MESSAGE_METADATA_UINT_VALUE); + uintTag.type = AudioPlayer::TagType::UINT; + vectorOfTags->push_back(uintTag); + + intTag.key = std::string(MESSAGE_METADATA_INT_KEY); + intTag.value = std::string(MESSAGE_METADATA_INT_VALUE); + intTag.type = AudioPlayer::TagType::INT; + vectorOfTags->push_back(intTag); + + doubleTag.key = std::string(MESSAGE_METADATA_DOUBLE_KEY); + doubleTag.value = std::string(MESSAGE_METADATA_DOUBLE_VALUE); + doubleTag.type = AudioPlayer::TagType::DOUBLE; + vectorOfTags->push_back(doubleTag); + + booleanTag.key = std::string(MESSAGE_METADATA_BOOLEAN_KEY); + booleanTag.value = std::string(MESSAGE_METADATA_BOOLEAN_VALUE); + booleanTag.type = AudioPlayer::TagType::BOOLEAN; + vectorOfTags->push_back(booleanTag); + + m_audioPlayer->onTags(m_mockMediaPlayer->getCurrentSourceId(), std::move(ptrToVectorOfTags)); + + std::unique_lock lock(m_mutex); + + auto result = m_messageSentTrigger.wait_for(lock, WAIT_TIMEOUT, [this] { + for (auto messageStatus : m_expectedMessages) { + if (messageStatus.second == 0) { + return false; + } + } + return true; + }); + ASSERT_TRUE(result); +} + +/** + * Test @c cancelDirective + * Expect the @c handleDirective call to the cancelled directive returns false + */ + +TEST_F(AudioPlayerTest, testCancelDirective) { + sendPlayDirective(); + + m_audioPlayer->CapabilityAgent::cancelDirective(MESSAGE_ID_TEST); + + ASSERT_FALSE(m_audioPlayer->CapabilityAgent::handleDirective(MESSAGE_ID_TEST)); +} + +/** + * Test focus change to NONE in IDLE state + * Expect nothing to happen + */ + +TEST_F(AudioPlayerTest, testFocusChangeToNoneInIdleState) { + // switching to FocusState::NONE should cause no change + m_audioPlayer->onFocusChanged(FocusState::NONE); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::IDLE, WAIT_TIMEOUT)); +} + +/** + * Test focus change from FOREGROUND to BACKGROUND in IDLE state + * Expect a call to pause(). This call is intended to go through MediaPlayer and cause nothing to happen + * due to a lack of a queued AudioItem. + */ + +TEST_F(AudioPlayerTest, testFocusChangeFromForegroundToBackgroundInIdleState) { + bool pauseCalled = false; + + EXPECT_CALL(*(m_mockMediaPlayer.get()), pause(_)) + .Times(1) + .WillOnce(Invoke([this, &pauseCalled](MediaPlayerInterface::SourceId sourceId) { + std::lock_guard lock(m_mutex); + pauseCalled = true; + m_mediaPlayerCallTrigger.notify_one(); + return m_mockMediaPlayer->mockPause(sourceId); + })); + + m_audioPlayer->onFocusChanged(FocusState::FOREGROUND); + + // ensure AudioPlayer is still IDLE + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::IDLE, WAIT_TIMEOUT)); + + m_audioPlayer->onFocusChanged(FocusState::BACKGROUND); + + std::unique_lock lock(m_mutex); + ASSERT_TRUE(m_mediaPlayerCallTrigger.wait_for(lock, WAIT_TIMEOUT, [&pauseCalled] { return pauseCalled; })); +} + +/** + * Test focus change in from NONE to BACKGROUND while IDLE. + * Expect a call to pause. This isn't an expected state during normal execution. + */ + +TEST_F(AudioPlayerTest, testFocusChangeFromNoneToBackgroundInIdleState) { + bool pauseCalled = false; + + EXPECT_CALL(*(m_mockMediaPlayer.get()), pause(_)) + .Times(1) + .WillOnce(Invoke([this, &pauseCalled](MediaPlayerInterface::SourceId sourceId) { + std::lock_guard lock(m_mutex); + pauseCalled = true; + m_mediaPlayerCallTrigger.notify_one(); + return m_mockMediaPlayer->mockPause(sourceId); + })); + + m_audioPlayer->onFocusChanged(FocusState::BACKGROUND); + std::unique_lock lock(m_mutex); + ASSERT_TRUE(m_mediaPlayerCallTrigger.wait_for(lock, WAIT_TIMEOUT, [&pauseCalled] { return pauseCalled; })); +} + +/** + * Test focus changes in PLAYING state + * Expect to pause when switching to BACKGROUND and to stop when switching to NONE + */ + +TEST_F(AudioPlayerTest, testFocusChangesInPlayingState) { + sendPlayDirective(); + + // already in FOREGROUND, expect no change + m_audioPlayer->onFocusChanged(FocusState::FOREGROUND); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PLAYING, WAIT_TIMEOUT)); + + // expect to pause in BACKGROUND + EXPECT_CALL(*(m_mockMediaPlayer.get()), pause(_)).Times(1); + m_audioPlayer->onFocusChanged(FocusState::BACKGROUND); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PAUSED, WAIT_TIMEOUT)); + + // expect to resume when switching back to FOREGROUND + EXPECT_CALL(*(m_mockMediaPlayer.get()), resume(_)).Times(1); + m_audioPlayer->onFocusChanged(FocusState::FOREGROUND); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PLAYING, WAIT_TIMEOUT)); + + // expect to stop when changing focus to NONE + EXPECT_CALL(*(m_mockMediaPlayer.get()), stop(_)).Times(1); + m_audioPlayer->onFocusChanged(FocusState::NONE); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::STOPPED, WAIT_TIMEOUT)); +} + +/** + * Test focus changes in STOPPED state + * Expect to remain in STOPPED state when switching to FOREGROUND (because there are no queued AudioItems) and + * to transition to PAUSED when switching to BACKGROUND. + */ + +TEST_F(AudioPlayerTest, testFocusChangesInStoppedState) { + sendPlayDirective(); + + // push AudioPlayer into stopped state + EXPECT_CALL(*(m_mockMediaPlayer.get()), stop(_)).Times(AtLeast(1)); + m_audioPlayer->onFocusChanged(FocusState::NONE); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::STOPPED, WAIT_TIMEOUT)); + + m_audioPlayer->onFocusChanged(FocusState::FOREGROUND); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::STOPPED, WAIT_TIMEOUT)); + + EXPECT_CALL(*(m_mockMediaPlayer.get()), pause(_)).Times(1); + m_audioPlayer->onFocusChanged(FocusState::BACKGROUND); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PAUSED, WAIT_TIMEOUT)); +} + +/** + * Test focus changes in PAUSED state + * Expect to resume when switching to FOREGROUND, expect nothing when switching to BACKGROUND, expect stop when + * switching to NONE + */ +TEST_F(AudioPlayerTest, testFocusChangesInPausedState) { + sendPlayDirective(); + + // push AudioPlayer into paused state + EXPECT_CALL(*(m_mockMediaPlayer.get()), pause(_)).Times(1); + m_audioPlayer->onFocusChanged(FocusState::BACKGROUND); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PAUSED, WAIT_TIMEOUT)); + + // expect a resume when switching back to FOREGROUND + EXPECT_CALL(*(m_mockMediaPlayer.get()), resume(_)).Times(1); + m_audioPlayer->onFocusChanged(FocusState::FOREGROUND); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PLAYING, WAIT_TIMEOUT)); + + // return to paused state + EXPECT_CALL(*(m_mockMediaPlayer.get()), pause(_)).Times(1); + m_audioPlayer->onFocusChanged(FocusState::BACKGROUND); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PAUSED, WAIT_TIMEOUT)); + + // expect nothing to happen when switching to BACKGROUND from BACKGROUND + m_audioPlayer->onFocusChanged(FocusState::BACKGROUND); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PAUSED, WAIT_TIMEOUT)); + + // expect stop when switching to NONE focus + EXPECT_CALL(*(m_mockMediaPlayer.get()), stop(_)).Times(1); + m_audioPlayer->onFocusChanged(FocusState::NONE); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::STOPPED, WAIT_TIMEOUT)); +} + +/** + * Test focus changes in BUFFER_UNDERRUN state + * Expect nothing to happen when switching to FOREGROUND, expect to pause when switching to BACKGROUND, expect to stop + * when switching to NONE + */ + +TEST_F(AudioPlayerTest, testFocusChangesInBufferUnderrunState) { + sendPlayDirective(); + + // push AudioPlayer into buffer underrun state + m_audioPlayer->onBufferUnderrun(m_mockMediaPlayer->getCurrentSourceId()); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::BUFFER_UNDERRUN, WAIT_TIMEOUT)); + + // nothing happens, AudioPlayer already in FOREGROUND + m_audioPlayer->onFocusChanged(FocusState::FOREGROUND); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::BUFFER_UNDERRUN, WAIT_TIMEOUT)); + + // expect to pause if pushed to BACKGROUND + EXPECT_CALL(*(m_mockMediaPlayer.get()), pause(_)).Times(1); + m_audioPlayer->onFocusChanged(FocusState::BACKGROUND); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PAUSED, WAIT_TIMEOUT)); + + // back to FOREGROUND and buffer underrun state + EXPECT_CALL(*(m_mockMediaPlayer.get()), resume(_)).Times(1); + m_audioPlayer->onFocusChanged(FocusState::FOREGROUND); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PLAYING, WAIT_TIMEOUT)); + m_audioPlayer->onBufferUnderrun(m_mockMediaPlayer->getCurrentSourceId()); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::BUFFER_UNDERRUN, WAIT_TIMEOUT)); + + // expect stop when switching to NONE focus + EXPECT_CALL(*(m_mockMediaPlayer.get()), stop(_)).Times(1); + m_audioPlayer->onFocusChanged(FocusState::NONE); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::STOPPED, WAIT_TIMEOUT)); +} + +/** + * Test an immediate focus change to background after play() has been called + * Expect that pause() is called when @c AudioPlayer is pushed into background + */ + +TEST_F(AudioPlayerTest, testFocusChangeToBackgroundBeforeOnPlaybackStarted) { + EXPECT_CALL(*(m_mockMediaPlayer.get()), play(_)).Times(1); + sendPlayDirective(); + + EXPECT_CALL(*(m_mockMediaPlayer.get()), stop(_)).Times(AtLeast(1)); + + sendClearQueueDirective(); + + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::STOPPED, WAIT_TIMEOUT)); + + m_audioPlayer->onFocusChanged(FocusState::NONE); + + EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, NAMESPACE_AUDIO_PLAYER)) + .Times(1) + .WillOnce(Return(true)); + + // send a second Play directive + EXPECT_CALL(*(m_mockMediaPlayer.get()), play(_)).Times(1); + auto avsMessageHeader = std::make_shared(NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_TEST_2); + + std::shared_ptr playDirective = AVSDirective::create( + "", + avsMessageHeader, + createEnqueuePayloadTest(OFFSET_IN_MILLISECONDS_TEST), + m_attachmentManager, + CONTEXT_ID_TEST_2); + + m_audioPlayer->CapabilityAgent::preHandleDirective(playDirective, std::move(m_mockDirectiveHandlerResult)); + m_audioPlayer->CapabilityAgent::handleDirective(MESSAGE_ID_TEST_2); + + m_audioPlayer->onFocusChanged(FocusState::FOREGROUND); + + EXPECT_CALL(*(m_mockMediaPlayer.get()), pause(_)).Times(AtLeast(1)); + m_audioPlayer->onFocusChanged(FocusState::BACKGROUND); + + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PAUSED, WAIT_TIMEOUT)); +} + +/** + * Test @c onPlaybackError and expect AudioPlayer to change to STOPPED state and that it would go back to PLAYING state + * when a new REPLACE_ALL Play directive comes in. + */ + +TEST_F(AudioPlayerTest, testPlayAfterOnPlaybackError) { + EXPECT_CALL(*(m_mockMediaPlayer.get()), getOffset(_)) + .WillRepeatedly(Return(m_mockMediaPlayer->getOffset(m_mockMediaPlayer->getCurrentSourceId()))); + sendPlayDirective(); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PLAYING, WAIT_TIMEOUT)); + EXPECT_CALL(*(m_mockFocusManager.get()), releaseChannel(CHANNEL_NAME, _)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &AudioPlayerTest::wakeOnReleaseChannel)); + m_audioPlayer->onPlaybackError( + m_mockMediaPlayer->getCurrentSourceId(), ErrorType::MEDIA_ERROR_UNKNOWN, "TEST_ERROR"); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::STOPPED, WAIT_TIMEOUT)); + ASSERT_EQ(std::future_status::ready, m_wakeReleaseChannelFuture.wait_for(WAIT_TIMEOUT)); + m_audioPlayer->onFocusChanged(FocusState::NONE); + + // send a REPLACE_ALL Play directive to see if AudioPlayer can still play the new item + EXPECT_CALL(*(m_mockMediaPlayer.get()), play(_)).Times(1); + auto avsMessageHeader = std::make_shared(NAMESPACE_AUDIO_PLAYER, NAME_PLAY, MESSAGE_ID_TEST_2); + + std::shared_ptr playDirective = + AVSDirective::create("", avsMessageHeader, REPLACE_ALL_PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST_2); + + m_wakeAcquireChannelPromise = std::promise(); + m_wakeAcquireChannelFuture = m_wakeAcquireChannelPromise.get_future(); + EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, NAMESPACE_AUDIO_PLAYER)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &AudioPlayerTest::wakeOnAcquireChannel)); + m_audioPlayer->CapabilityAgent::preHandleDirective(playDirective, std::move(m_mockDirectiveHandlerResult)); + m_audioPlayer->CapabilityAgent::handleDirective(MESSAGE_ID_TEST_2); + ASSERT_EQ(std::future_status::ready, m_wakeAcquireChannelFuture.wait_for(WAIT_TIMEOUT)); + m_audioPlayer->onFocusChanged(FocusState::FOREGROUND); + ASSERT_TRUE(m_testAudioPlayerObserver->waitFor(PlayerActivity::PLAYING, WAIT_TIMEOUT)); +} + +/** + * Test @c onPlaybackStarted calls the @c PlaybackRouter + */ +TEST_F(AudioPlayerTest, testPlaybackStartedSwitchesHandler) { + EXPECT_CALL(*m_mockPlaybackRouter, switchToDefaultHandler()); + sendPlayDirective(); +} + +/** + * Test to verify that ProgressReportDelayElapsed Event is sent correctly. This test is timing sensitive. + */ +TEST_F(AudioPlayerTest, testProgressReportDelayElapsed) { + m_expectedMessages.insert({PROGRESS_REPORT_DELAY_ELAPSED_NAME, 0}); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Invoke([this](std::shared_ptr request) { + std::lock_guard lock(m_mutex); + verifyMessageMap(request, &m_expectedMessages); + m_messageSentTrigger.notify_one(); + })); + + sendPlayDirective(OFFSET_IN_MILLISECONDS_BEFORE_PROGRESS_REPORT_DELAY); + + std::this_thread::sleep_for(std::chrono::milliseconds(PROGRESS_REPORT_DELAY)); + + std::unique_lock lock(m_mutex); + auto result = m_messageSentTrigger.wait_for(lock, WAIT_TIMEOUT, [this] { + for (auto messageStatus : m_expectedMessages) { + if (messageStatus.second != 1) { + return false; + } + } + return true; + }); + ASSERT_TRUE(result); +} + +/** + * Test to verify that ProgressReportDelayElapsed Event is not sent when the delay is less than the offset. This test + * is timing sensitive. + */ +TEST_F(AudioPlayerTest, testProgressReportDelayElapsedDelayLessThanOffset) { + m_expectedMessages.insert({PROGRESS_REPORT_DELAY_ELAPSED_NAME, 0}); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Invoke([this](std::shared_ptr request) { + std::lock_guard lock(m_mutex); + verifyMessageMap(request, &m_expectedMessages); + m_messageSentTrigger.notify_one(); + })); + + sendPlayDirective(OFFSET_IN_MILLISECONDS_AFTER_PROGRESS_REPORT_DELAY); + + std::this_thread::sleep_for(std::chrono::milliseconds(PROGRESS_REPORT_DELAY)); + + std::unique_lock lock(m_mutex); + auto result = m_messageSentTrigger.wait_for(lock, WAIT_TIMEOUT, [this] { + for (auto messageStatus : m_expectedMessages) { + if (messageStatus.second != 0) { + return false; + } + } + return true; + }); + ASSERT_TRUE(result); +} + +/** + * Test to verify that ProgressReportIntervalElapsed Event is sent when the interval is less than the offset. There + * will be a ProgressReportIntervalElapsed Event at 100, 200 and 300 ms. This test is timing sensitive. + */ +TEST_F(AudioPlayerTest, testProgressReportIntervalElapsed) { + m_expectedMessages.insert({PROGRESS_REPORT_INTERVAL_ELAPSED_NAME, 0}); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Invoke([this](std::shared_ptr request) { + std::lock_guard lock(m_mutex); + verifyMessageMap(request, &m_expectedMessages); + m_messageSentTrigger.notify_one(); + })); + + sendPlayDirective(OFFSET_IN_MILLISECONDS_BEFORE_PROGRESS_REPORT_INTERVAL); + + std::this_thread::sleep_for(TIME_FOR_TWO_AND_A_HALF_INTERVAL_PERIODS); + + std::unique_lock lock(m_mutex); + auto result = m_messageSentTrigger.wait_for(lock, WAIT_TIMEOUT, [this] { + for (auto messageStatus : m_expectedMessages) { + if (messageStatus.second != 3) { + return false; + } + } + return true; + }); + ASSERT_TRUE(result); +} + +/** + * Test to verify that ProgressReportIntervalElapsed Event is sent when the interval is less than the offset. There + * will be a ProgressReportIntervalElapsed Event at 200 and 300 ms. This test is timing sensitive. + */ +TEST_F(AudioPlayerTest, testProgressReportIntervalElapsedIntervalLessThanOffset) { + m_expectedMessages.insert({PROGRESS_REPORT_INTERVAL_ELAPSED_NAME, 0}); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Invoke([this](std::shared_ptr request) { + std::lock_guard lock(m_mutex); + verifyMessageMap(request, &m_expectedMessages); + m_messageSentTrigger.notify_one(); + })); + + sendPlayDirective(OFFSET_IN_MILLISECONDS_AFTER_PROGRESS_REPORT_INTERVAL); + + std::this_thread::sleep_for(TIME_FOR_TWO_AND_A_HALF_INTERVAL_PERIODS); + + std::unique_lock lock(m_mutex); + auto result = m_messageSentTrigger.wait_for(lock, WAIT_TIMEOUT, [this] { + for (auto messageStatus : m_expectedMessages) { + if (messageStatus.second != 2) { + return false; + } + } + return true; + }); + ASSERT_TRUE(result); +} + +} // namespace test +} // namespace audioPlayer +} // namespace capabilityAgents +} // namespace alexaClientSDK + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + +// ACSDK-1216 - AudioPlayer tests sometimes fail in Windows +#if !defined(_WIN32) || defined(RESOLVED_ACSDK_1216) + return RUN_ALL_TESTS(); +#else + return 0; +#endif +} diff --git a/CapabilityAgents/AudioPlayer/test/CMakeLists.txt b/CapabilityAgents/AudioPlayer/test/CMakeLists.txt new file mode 100644 index 0000000000..2ae61df6cd --- /dev/null +++ b/CapabilityAgents/AudioPlayer/test/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +set(INCLUDE_PATH + "${AudioPlayer_INCLUDE_DIRS}" + "${AVSCommon_SOURCE_DIR}/SDKInterfaces/test" + "${AVSCommon_SOURCE_DIR}/Utils/test") + +discover_unit_tests("${INCLUDE_PATH}" "AudioPlayer;UtilsCommonTestLib") diff --git a/CapabilityAgents/AudioPlayer/test/IntervalCalculatorTest.cpp b/CapabilityAgents/AudioPlayer/test/IntervalCalculatorTest.cpp new file mode 100644 index 0000000000..3bd28b2c49 --- /dev/null +++ b/CapabilityAgents/AudioPlayer/test/IntervalCalculatorTest.cpp @@ -0,0 +1,92 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include "AudioPlayer/IntervalCalculator.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace audioPlayer { +namespace test { + +/// Test for when the interval is greater than the offset. +TEST(IntervalCalculatorTest, intervalGreaterThanOffset) { + std::chrono::milliseconds intervalStart; + ASSERT_TRUE(getIntervalStart(std::chrono::milliseconds(150), std::chrono::milliseconds(100), &intervalStart)); + ASSERT_EQ(intervalStart, std::chrono::milliseconds(50)); +} + +/// Test for when the interval is equal to the offset. +TEST(IntervalCalculatorTest, intervalEqualToOffset) { + std::chrono::milliseconds intervalStart; + ASSERT_TRUE(getIntervalStart(std::chrono::milliseconds(100), std::chrono::milliseconds(100), &intervalStart)); + ASSERT_EQ(intervalStart, std::chrono::milliseconds::zero()); +} + +/// Test for when the interval is less than the offset. +TEST(IntervalCalculatorTest, intervalLessThanOffset) { + std::chrono::milliseconds intervalStart; + ASSERT_TRUE(getIntervalStart(std::chrono::milliseconds(100), std::chrono::milliseconds(120), &intervalStart)); + ASSERT_EQ(intervalStart, std::chrono::milliseconds(80)); +} + +/// Test for when the interval is less than the offset but by more than one interval. +TEST(IntervalCalculatorTest, intervalLessThanOffsetByMultipleTimes) { + std::chrono::milliseconds intervalStart; + ASSERT_TRUE(getIntervalStart(std::chrono::milliseconds(100), std::chrono::milliseconds(220), &intervalStart)); + ASSERT_EQ(intervalStart, std::chrono::milliseconds(80)); +} + +/// Test for when the interval is negative. +TEST(IntervalCalculatorTest, intervalNegative) { + std::chrono::milliseconds intervalStart; + ASSERT_FALSE(getIntervalStart(std::chrono::milliseconds(-100), std::chrono::milliseconds(100), &intervalStart)); +} + +/// Test for when the offset is negative. +TEST(IntervalCalculatorTest, offsetNegative) { + std::chrono::milliseconds intervalStart; + ASSERT_FALSE(getIntervalStart(std::chrono::milliseconds(100), std::chrono::milliseconds(-100), &intervalStart)); +} + +/// Test for when the interval and offset are negative. +TEST(IntervalCalculatorTest, intervalAndoffsetNegative) { + std::chrono::milliseconds intervalStart; + ASSERT_FALSE(getIntervalStart(std::chrono::milliseconds(-100), std::chrono::milliseconds(-100), &intervalStart)); +} + +/// Test for when the interval is zero. +TEST(IntervalCalculatorTest, intervalZero) { + std::chrono::milliseconds intervalStart; + ASSERT_FALSE(getIntervalStart(std::chrono::milliseconds::zero(), std::chrono::milliseconds(100), &intervalStart)); +} + +/// Test for when the offset is zero. +TEST(IntervalCalculatorTest, offsetZero) { + std::chrono::milliseconds intervalStart; + ASSERT_TRUE(getIntervalStart(std::chrono::milliseconds(100), std::chrono::milliseconds::zero(), &intervalStart)); + ASSERT_EQ(intervalStart, std::chrono::milliseconds(100)); +} + +/// Test for null output parameter. +TEST(IntervalCalculatorTest, nullOutputParameter) { + ASSERT_FALSE(getIntervalStart(std::chrono::milliseconds(200), std::chrono::milliseconds(100), nullptr)); +} + +} // namespace test +} // namespace audioPlayer +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/CMakeLists.txt b/CapabilityAgents/CMakeLists.txt index 9d1a59ddf0..64a5e98c66 100644 --- a/CapabilityAgents/CMakeLists.txt +++ b/CapabilityAgents/CMakeLists.txt @@ -6,5 +6,11 @@ include(../build/BuildDefaults.cmake) add_subdirectory("AIP") add_subdirectory("Alerts") add_subdirectory("AudioPlayer") +add_subdirectory("ExternalMediaPlayer") +add_subdirectory("Notifications") +add_subdirectory("PlaybackController") +add_subdirectory("SpeakerManager") add_subdirectory("SpeechSynthesizer") +add_subdirectory("Settings") add_subdirectory("System") +add_subdirectory("TemplateRuntime") diff --git a/CapabilityAgents/ExternalMediaPlayer/CMakeLists.txt b/CapabilityAgents/ExternalMediaPlayer/CMakeLists.txt new file mode 100644 index 0000000000..0ff494cf53 --- /dev/null +++ b/CapabilityAgents/ExternalMediaPlayer/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) +project(ExternalMediaPlayer LANGUAGES CXX) + +include(../../build/BuildDefaults.cmake) + +add_subdirectory("src") diff --git a/CapabilityAgents/ExternalMediaPlayer/include/ExternalMediaPlayer/ExternalMediaPlayer.h b/CapabilityAgents/ExternalMediaPlayer/include/ExternalMediaPlayer/ExternalMediaPlayer.h new file mode 100644 index 0000000000..fa38e70a09 --- /dev/null +++ b/CapabilityAgents/ExternalMediaPlayer/include/ExternalMediaPlayer/ExternalMediaPlayer.h @@ -0,0 +1,356 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_EXTERNALMEDIAPLAYER_INCLUDE_EXTERNALMEDIAPLAYER_EXTERNALMEDIAPLAYER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_EXTERNALMEDIAPLAYER_INCLUDE_EXTERNALMEDIAPLAYER_EXTERNALMEDIAPLAYER_H_ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace externalMediaPlayer { + +/** + * This class implements the @c ExternalMediaPlayer capability agent. This agent is responsible for handling + * music service providers which manage their PLAY queue. + * + * @note For instances of this class to be cleaned up correctly, @c shutdown() must be called. + */ +class ExternalMediaPlayer + : public avsCommon::avs::CapabilityAgent + , public avsCommon::utils::RequiresShutdown + , public avsCommon::sdkInterfaces::ExternalMediaPlayerInterface + , public avsCommon::sdkInterfaces::SpeakerInterface + , public avsCommon::sdkInterfaces::PlaybackHandlerInterface + , public std::enable_shared_from_this { +public: + // Map of adapter business names to their mediaPlayers. + using AdapterMediaPlayerMap = + std::unordered_map>; + + // Signature of functions to create an ExternalMediaAdapter. + using AdapterCreateFunction = + std::shared_ptr (*)( + std::shared_ptr mediaPlayer, + std::shared_ptr speakerManager, + std::shared_ptr messageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr externalMediaPlayer); + + // Map of adapter business names to their creation method. + using AdapterCreationMap = std::unordered_map; + + /** + * Creates a new @c ExternalMediaPlayer instance. + * + * @param mediaPlayers The map of to be used to find the mediaPlayer to use for this + * adapter. + * @param adapterCreationMap The map of to be used to create the adapters. + * @param speakerManager A @c SpeakerManagerInterface to perform volume changes requested by adapters. + * @param messageSender The object to use for sending events. + * @param focusManager The object used to manage focus for the adapter managed by the EMP. + * @param contextManager The AVS Context manager used to generate system context for events. + * @param exceptionSender The object to use for sending AVS Exception messages. + * @param playbackRouter The @c PlaybackRouterInterface instance to use when @c ExternalMediaPlayer becomes active. + * @return A @c std::shared_ptr to the new @c ExternalMediaPlayer instance. + */ + static std::shared_ptr create( + const AdapterMediaPlayerMap& mediaPlayers, + const AdapterCreationMap& adapterCreationMap, + std::shared_ptr speakerManager, + std::shared_ptr messageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender, + std::shared_ptr playbackRouter); + + /// @name StateProviderInterface Functions + /// @{ + void provideState(const avsCommon::avs::NamespaceAndName& stateProviderName, unsigned int stateRequestToken) + override; + /// @} + + /// @name CapabilityAgent/DirectiveHandlerInterface Functions + /// @{ + void handleDirectiveImmediately(std::shared_ptr directive) override; + void preHandleDirective(std::shared_ptr info) override; + void handleDirective(std::shared_ptr info) override; + void cancelDirective(std::shared_ptr info) override; + void onDeregistered() override; + avsCommon::avs::DirectiveHandlerConfiguration getConfiguration() const override; + /// @} + + /// @name Overridden SpeakerInterface methods. + /// @{ + bool setVolume(int8_t volume) override; + bool adjustVolume(int8_t volume) override; + bool setMute(bool mute) override; + bool getSpeakerSettings(avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings* settings) override; + avsCommon::sdkInterfaces::SpeakerInterface::Type getSpeakerType() override; + /// @} + + /// @name Overridden PlaybackHandlerInterface methods. + /// @{ + virtual void onButtonPressed(avsCommon::avs::PlaybackButton button) override; + /// @} + + /// @name Overridden ExternalMediaPlayerInterface methods. + /// @{ + virtual void setPlayerInFocus(const std::string& playerInFocus) override; + /// @} + +private: + /** + * Constructor. + * + * @param speakerManager A @c SpeakerManagerInterface to perform volume changes requested by adapters. + * @param contextManager The AVS Context manager used to generate system context for events. + * @param exceptionSender The object to use for sending AVS Exception messages. + * @param playbackRouter The @c PlaybackRouterInterface instance to use when @c ExternalMediaPlayer becomes active. + * @return A @c std::shared_ptr to the new @c ExternalMediaPlayer instance. + */ + ExternalMediaPlayer( + std::shared_ptr speakerManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender, + std::shared_ptr playbackRouter); + + /** + * This method returns the ExternalMediaPlayer session state registered in the ExternalMediaPlayer namespace. + */ + std::string provideSessionState(); + + /** + * This method returns the Playback state registered in the Alexa.PlaybackStateReporter state. + */ + std::string providePlaybackState(); + + /** + * This function deserializes a @c Directive's payload into a @c rapidjson::Document. + * + * @param info The @c DirectiveInfo to read the payload string from. + * @param[out] document The @c rapidjson::Document to parse the payload into. + * @return @c true if parsing was successful, else @c false. + */ + bool parseDirectivePayload(std::shared_ptr info, rapidjson::Document* document); + + /** + * Remove a directive from the map of message IDs to DirectiveInfo instances. + * + * @param info The @c DirectiveInfo containing the @c AVSDirective whose message ID is to be removed. + */ + void removeDirective(std::shared_ptr info); + + /// @name RequiresShutdown Functions + /// @{ + void doShutdown() override; + /// @} + + /** + * Method to create all the adapters registered. + * + * @param mediaPlayers The map of to be used to find the mediaPlayer to use for this + * adapter. + * @param adapterCreationMap The map of to be used to create the adapters. + * @param messageSender The messager sender of the adapter. + * @param focusManager The focus manager to be used by the adapter to acquire/release channel. + * @param contextManager The context manager of the ExternalMediaPlayer and adapters. + */ + void createAdapters( + const AdapterMediaPlayerMap& mediaPlayers, + const AdapterCreationMap& adapterCreationMap, + std::shared_ptr messageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager); + + /** + * Send the handling completed notification and clean up the resources the specified @c DirectiveInfo. + * + * @param info The @c DirectiveInfo to complete and clean up. + */ + void setHandlingCompleted(std::shared_ptr info); + + /** + * Send ExceptionEncountered and report a failure to handle the @c AVSDirective. + * + * @param info The @c AVSDirective that encountered the error and ancillary information. + * @param type The type of Exception that was encountered. + * @param message The error message to include in the ExceptionEncountered message. + */ + void sendExceptionEncounteredAndReportFailed( + std::shared_ptr info, + const std::string& message, + avsCommon::avs::ExceptionErrorType type = avsCommon::avs::ExceptionErrorType::INTERNAL_ERROR); + + /** + * @name Executor Thread Functions + * + * These functions (and only these functions) are called by @c m_executor on a single worker thread. All other + * functions in this class can be called asynchronously, and pass data to the @c Executor thread through parameters + * to lambda functions. No additional synchronization is needed. + */ + /// @{ + /** + * This function provides updated context information for @c ExternalMediaPlayer to @c ContextManager. This + * function is called when @c ContextManager calls @c provideState(), and is also called internally by @c + * changeActivity(). + * + * @param stateProviderName The name of the stateProvider. + * @param sendToken flag indicating whether @c stateRequestToken contains a valid token which should be passed + * along to @c ContextManager. This flag defaults to @c false. + * @param stateRequestToken The token @c ContextManager passed to the @c provideState() call, which will be passed + * along to the ContextManager::setState() call. This parameter is not used if @c sendToken is @c false. + */ + void executeProvideState( + const avsCommon::avs::NamespaceAndName& stateProviderName, + bool sendToken = false, + unsigned int stateRequestToken = 0); + /// @} + + /** + * Method that checks the preconditions for all directives. + * + * @param info The DirectiveInfo to be preprocessed + * @param document The rapidjson document resulting from parsing the directive in directiveInfo. + * @return A shared-ptr to the ExternalMediaAdapterInterface on which the actual + * adapter method has to be invoked. + */ + std::shared_ptr preprocessDirective( + std::shared_ptr info, + rapidjson::Document* document); + + /** + * Handler for login directive. + * + * @param info The DirectiveInfo to be processed. + * @param The type of the request. Will be LOGIN for the handleLogin case. + */ + void handleLogin( + std::shared_ptr info, + avsCommon::sdkInterfaces::externalMediaPlayer::RequestType request); + + /** + * Handler for logout directive. + * + * @param info The DirectiveInfo to be processed. + * @param The type of the request. Will be LOGOUT for the handleLogout case. + */ + void handleLogout( + std::shared_ptr info, + avsCommon::sdkInterfaces::externalMediaPlayer::RequestType request); + + /** + * Handler for play directive. + * + * @param info The DirectiveInfo to be processed. + * @param The type of the request. Will be PLAY for the handlePlay case. + */ + void handlePlay( + std::shared_ptr info, + avsCommon::sdkInterfaces::externalMediaPlayer::RequestType request); + + /** + * Handler for play control directive. + * + * @param info The DirectiveInfo to be processed. + * @param The type of the request. Can be NEXT/PREVIOUS/PAUSE/RESUME... for the handlePlayControl case. + */ + void handlePlayControl( + std::shared_ptr info, + avsCommon::sdkInterfaces::externalMediaPlayer::RequestType request); + + /** + * Handler for SetSeekControl directive. + * + * @param info The DirectiveInfo to be processed. + * @param The type of the request. RequestType will be SEEK. + */ + void handleSeek( + std::shared_ptr info, + avsCommon::sdkInterfaces::externalMediaPlayer::RequestType request); + + /** + * Handler for AdjustSeekControl directive. + * + * @param info The DirectiveInfo to be processed. + * @param The type of the request. RequestType will be ADJUST_SEEK. + */ + void handleAdjustSeek( + std::shared_ptr info, + avsCommon::sdkInterfaces::externalMediaPlayer::RequestType request); + + /// The @c SpeakerManagerInterface used to change the volume when requested by @c ExternalMediaAdapterInterface. + std::shared_ptr m_speakerManager; + + /// The @c ContextManager that needs to be updated of the state. + std::shared_ptr m_contextManager; + + /// The @c PlaybackRouterInterface instance to use when @c ExternalMediaPlayer becomes active. + std::shared_ptr m_playbackRouter; + + /// The @ m_adapters Map of business names to the adapters. + std::map> + m_adapters; + + /// The id of the player which currently has focus. + std::string m_playerInFocus; + + /// A holder for @c SpeakerSettings to report. + avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings m_speakerSettings; + + /** + * @c Executor which queues up operations from asynchronous API calls. + * + * @note This declaration needs to come *after* the Executor Thread Variables above so that the thread shuts down + * before the Executor Thread Variables are destroyed. + */ + avsCommon::utils::threading::Executor m_executor; + + /// typedef of the function pointer to handle AVS directives. + typedef void (ExternalMediaPlayer::*DirectiveHandler)( + std::shared_ptr info, + avsCommon::sdkInterfaces::externalMediaPlayer::RequestType request); + + /// The singleton map from a directive to its handler. + static std::unordered_map< + avsCommon::avs::NamespaceAndName, + std::pair> + m_directiveToHandlerMap; +}; + +} // namespace externalMediaPlayer +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_EXTERNALMEDIAPLAYER_INCLUDE_EXTERNALMEDIAPLAYER_EXTERNALMEDIAPLAYER_H_ diff --git a/CapabilityAgents/ExternalMediaPlayer/src/CMakeLists.txt b/CapabilityAgents/ExternalMediaPlayer/src/CMakeLists.txt new file mode 100644 index 0000000000..a707642c81 --- /dev/null +++ b/CapabilityAgents/ExternalMediaPlayer/src/CMakeLists.txt @@ -0,0 +1,25 @@ +add_definitions("-DACSDK_LOG_MODULE=ExternalMediaPlayer") +set(ExternalMediaPlayer_SOURCES ) +list(APPEND ExternalMediaPlayer_SOURCES ExternalMediaPlayer.cpp) + +if(HAS_EXTERNAL_MEDIA_PLAYER_ADAPTERS) + add_subdirectory("ExternalMediaPlayerAdapters") +endif() + +add_library(ExternalMediaPlayer SHARED + ${ExternalMediaPlayer_SOURCES}) + +target_include_directories(ExternalMediaPlayer PUBLIC + "${ExternalMediaPlayer_SOURCE_DIR}/include" + "${AVSCommon_INCLUDE_DIRS}") + +target_link_libraries(ExternalMediaPlayer + AVSCommon) + +if(HAS_EXTERNAL_MEDIA_PLAYER_ADAPTERS) + target_link_libraries(ExternalMediaPlayer ExternalMediaPlayerAdapters) +endif() + + +# install target +asdk_install() diff --git a/CapabilityAgents/ExternalMediaPlayer/src/ExternalMediaPlayer.cpp b/CapabilityAgents/ExternalMediaPlayer/src/ExternalMediaPlayer.cpp new file mode 100644 index 0000000000..f0c6dd77fa --- /dev/null +++ b/CapabilityAgents/ExternalMediaPlayer/src/ExternalMediaPlayer.cpp @@ -0,0 +1,715 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/// @file ExternalMediaPlayer.cpp +#include "ExternalMediaPlayer/ExternalMediaPlayer.h" + +#include +#include +#include + +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace externalMediaPlayer { + +using namespace avsCommon::avs; +using namespace avsCommon::avs::externalMediaPlayer; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::externalMediaPlayer; +using namespace avsCommon::avs::attachment; +using namespace avsCommon::utils; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::utils::json; +using namespace avsCommon::utils::logger; + +/// String to identify log entries originating from this file. +static const std::string TAG("ExternalMediaPlayer"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +// The namespaces used in the context. +static const std::string EXTERNALMEDIAPLAYER_STATE_NAMESPACE = "ExternalMediaPlayer"; +static const std::string PLAYBACKSTATEREPORTER_STATE_NAMESPACE = "Alexa.PlaybackStateReporter"; + +// The names used in the context. +static const std::string EXTERNALMEDIAPLAYER_NAME = "ExternalMediaPlayerState"; +static const std::string PLAYBACKSTATEREPORTER_NAME = "playbackState"; + +// The namespace for this capability agent. +static const std::string EXTERNALMEDIAPLAYER_NAMESPACE = "ExternalMediaPlayer"; +static const std::string PLAYBACKCONTROLLER_NAMESPACE = "Alexa.PlaybackController"; +static const std::string PLAYLISTCONTROLLER_NAMESPACE = "Alexa.PlaylistController"; +static const std::string SEEKCONTROLLER_NAMESPACE = "Alexa.SeekController"; +static const std::string FAVORITESCONTROLLER_NAMESPACE = "Alexa.FavoritesController"; + +// The @c External media player play directive signature. +static const NamespaceAndName PLAY_DIRECTIVE{EXTERNALMEDIAPLAYER_NAMESPACE, "Play"}; +static const NamespaceAndName LOGIN_DIRECTIVE{EXTERNALMEDIAPLAYER_NAMESPACE, "Login"}; +static const NamespaceAndName LOGOUT_DIRECTIVE{EXTERNALMEDIAPLAYER_NAMESPACE, "Logout"}; + +// The @c Transport control directive signatures. +static const NamespaceAndName RESUME_DIRECTIVE{PLAYBACKCONTROLLER_NAMESPACE, "Play"}; +static const NamespaceAndName PAUSE_DIRECTIVE{PLAYBACKCONTROLLER_NAMESPACE, "Pause"}; +static const NamespaceAndName NEXT_DIRECTIVE{PLAYBACKCONTROLLER_NAMESPACE, "Next"}; +static const NamespaceAndName PREVIOUS_DIRECTIVE{PLAYBACKCONTROLLER_NAMESPACE, "Previous"}; +static const NamespaceAndName STARTOVER_DIRECTIVE{PLAYBACKCONTROLLER_NAMESPACE, "StartOver"}; +static const NamespaceAndName REWIND_DIRECTIVE{PLAYBACKCONTROLLER_NAMESPACE, "Rewind"}; +static const NamespaceAndName FASTFORWARD_DIRECTIVE{PLAYBACKCONTROLLER_NAMESPACE, "FastForward"}; + +// The @c PlayList control directive signature. +static const NamespaceAndName ENABLEREPEAT_DIRECTIVE{PLAYLISTCONTROLLER_NAMESPACE, "EnableRepeat"}; +static const NamespaceAndName DISABLEREPEAT_DIRECTIVE{PLAYLISTCONTROLLER_NAMESPACE, "DisableRepeat"}; +static const NamespaceAndName ENABLESHUFFLE_DIRECTIVE{PLAYLISTCONTROLLER_NAMESPACE, "EnableShuffle"}; +static const NamespaceAndName DISABLESHUFFLE_DIRECTIVE{PLAYLISTCONTROLLER_NAMESPACE, "DisableShuffle"}; + +// The @c Seek control directive signature. +static const NamespaceAndName SEEK_DIRECTIVE{SEEKCONTROLLER_NAMESPACE, "SetSeekPosition"}; +static const NamespaceAndName ADJUSTSEEK_DIRECTIVE{SEEKCONTROLLER_NAMESPACE, "AdjustSeekPosition"}; + +// The @c favorites control directive signature. +static const NamespaceAndName FAVORITE_DIRECTIVE{FAVORITESCONTROLLER_NAMESPACE, "Favorite"}; +static const NamespaceAndName UNFAVORITE_DIRECTIVE{FAVORITESCONTROLLER_NAMESPACE, "Unfavorite"}; + +// The @c ExternalMediaPlayer context state signatures. +static const NamespaceAndName SESSION_STATE{EXTERNALMEDIAPLAYER_STATE_NAMESPACE, EXTERNALMEDIAPLAYER_NAME}; +static const NamespaceAndName PLAYBACK_STATE{PLAYBACKSTATEREPORTER_STATE_NAMESPACE, PLAYBACKSTATEREPORTER_NAME}; + +/// The const char for the players key field in the context. +static const char PLAYERS[] = "players"; + +/// The const char for the playerInFocus key field in the context. +static const char PLAYER_IN_FOCUS[] = "playerInFocus"; + +/// The max relative time in the past that we can seek to in milliseconds(-12hours in ms). +static const int64_t MAX_PAST_OFFSET = -86400000; + +/// The max relative time in the past that we can seek to in milliseconds(+12 hours in ms). +static const int64_t MAX_FUTURE_OFFSET = 86400000; + +/// The @c m_directiveToHandlerMap Map of the directives to their handlers. +std::unordered_map> + ExternalMediaPlayer::m_directiveToHandlerMap = { + {LOGIN_DIRECTIVE, std::make_pair(RequestType::LOGIN, &ExternalMediaPlayer::handleLogin)}, + {LOGOUT_DIRECTIVE, std::make_pair(RequestType::LOGOUT, &ExternalMediaPlayer::handleLogout)}, + {PLAY_DIRECTIVE, std::make_pair(RequestType::PLAY, &ExternalMediaPlayer::handlePlay)}, + {PAUSE_DIRECTIVE, std::make_pair(RequestType::PAUSE, &ExternalMediaPlayer::handlePlayControl)}, + {RESUME_DIRECTIVE, std::make_pair(RequestType::RESUME, &ExternalMediaPlayer::handlePlayControl)}, + {NEXT_DIRECTIVE, std::make_pair(RequestType::NEXT, &ExternalMediaPlayer::handlePlayControl)}, + {PREVIOUS_DIRECTIVE, std::make_pair(RequestType::PREVIOUS, &ExternalMediaPlayer::handlePlayControl)}, + {STARTOVER_DIRECTIVE, std::make_pair(RequestType::START_OVER, &ExternalMediaPlayer::handlePlayControl)}, + {FASTFORWARD_DIRECTIVE, std::make_pair(RequestType::FAST_FORWARD, &ExternalMediaPlayer::handlePlayControl)}, + {REWIND_DIRECTIVE, std::make_pair(RequestType::REWIND, &ExternalMediaPlayer::handlePlayControl)}, + {ENABLEREPEAT_DIRECTIVE, std::make_pair(RequestType::ENABLE_REPEAT, &ExternalMediaPlayer::handlePlayControl)}, + {DISABLEREPEAT_DIRECTIVE, std::make_pair(RequestType::DISABLE_REPEAT, &ExternalMediaPlayer::handlePlayControl)}, + {ENABLESHUFFLE_DIRECTIVE, std::make_pair(RequestType::ENABLE_SHUFFLE, &ExternalMediaPlayer::handlePlayControl)}, + {DISABLESHUFFLE_DIRECTIVE, + std::make_pair(RequestType::DISABLE_SHUFFLE, &ExternalMediaPlayer::handlePlayControl)}, + {FAVORITE_DIRECTIVE, std::make_pair(RequestType::FAVORITE, &ExternalMediaPlayer::handlePlayControl)}, + {UNFAVORITE_DIRECTIVE, std::make_pair(RequestType::UNFAVORITE, &ExternalMediaPlayer::handlePlayControl)}, + {SEEK_DIRECTIVE, std::make_pair(RequestType::SEEK, &ExternalMediaPlayer::handleSeek)}, + {ADJUSTSEEK_DIRECTIVE, std::make_pair(RequestType::ADJUST_SEEK, &ExternalMediaPlayer::handleAdjustSeek)}}; + +static DirectiveHandlerConfiguration g_configuration = {{PLAY_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {LOGIN_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {LOGOUT_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {RESUME_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {PAUSE_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {NEXT_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {PREVIOUS_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {STARTOVER_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {REWIND_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {FASTFORWARD_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {ENABLEREPEAT_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {DISABLEREPEAT_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {ENABLESHUFFLE_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {DISABLESHUFFLE_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {SEEK_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {ADJUSTSEEK_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {FAVORITE_DIRECTIVE, BlockingPolicy::NON_BLOCKING}, + {UNFAVORITE_DIRECTIVE, BlockingPolicy::NON_BLOCKING}}; + +static std::unordered_map g_buttonToRequestType = { + {avsCommon::avs::PlaybackButton::PLAY, RequestType::PAUSE_RESUME_TOGGLE}, + {avsCommon::avs::PlaybackButton::PAUSE, RequestType::PAUSE_RESUME_TOGGLE}, + {avsCommon::avs::PlaybackButton::NEXT, RequestType::NEXT}, + {avsCommon::avs::PlaybackButton::PREVIOUS, RequestType::PREVIOUS}}; + +std::shared_ptr ExternalMediaPlayer::create( + const AdapterMediaPlayerMap& mediaPlayers, + const AdapterCreationMap& adapterCreationMap, + std::shared_ptr speakerManager, + std::shared_ptr messageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender, + std::shared_ptr playbackRouter) { + if (nullptr == messageSender) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullMessageSender")); + return nullptr; + } + if (nullptr == focusManager) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullFocusManager")); + return nullptr; + } + if (nullptr == contextManager) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullContextManager")); + return nullptr; + } + if (nullptr == exceptionSender) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullExceptionSender")); + return nullptr; + } + if (nullptr == playbackRouter) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullPlaybackRouter")); + return nullptr; + } + + auto externalMediaPlayer = std::shared_ptr( + new ExternalMediaPlayer(speakerManager, contextManager, exceptionSender, playbackRouter)); + + contextManager->setStateProvider(SESSION_STATE, externalMediaPlayer); + contextManager->setStateProvider(PLAYBACK_STATE, externalMediaPlayer); + + externalMediaPlayer->createAdapters(mediaPlayers, adapterCreationMap, messageSender, focusManager, contextManager); + + return externalMediaPlayer; +} + +ExternalMediaPlayer::ExternalMediaPlayer( + std::shared_ptr speakerManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender, + std::shared_ptr playbackRouter) : + CapabilityAgent{EXTERNALMEDIAPLAYER_NAMESPACE, exceptionSender}, + RequiresShutdown{"ExternalMediaPlayer"}, + m_speakerManager{speakerManager}, + m_contextManager{contextManager}, + m_playbackRouter{playbackRouter} { + m_speakerSettings.volume = avsCommon::avs::speakerConstants::AVS_SET_VOLUME_MAX; + m_speakerSettings.mute = false; +} + +void ExternalMediaPlayer::provideState( + const avsCommon::avs::NamespaceAndName& stateProviderName, + unsigned int stateRequestToken) { + m_executor.submit([this, stateProviderName, stateRequestToken] { + executeProvideState(stateProviderName, true, stateRequestToken); + }); +} + +void ExternalMediaPlayer::handleDirectiveImmediately(std::shared_ptr directive) { + handleDirective(std::make_shared(directive, nullptr)); +} + +void ExternalMediaPlayer::preHandleDirective(std::shared_ptr info) { +} + +bool ExternalMediaPlayer::parseDirectivePayload(std::shared_ptr info, rapidjson::Document* document) { + rapidjson::ParseResult result = document->Parse(info->directive->getPayload()); + + if (result) { + return true; + } + + ACSDK_ERROR(LX("parseDirectivePayloadFailed") + .d("reason", rapidjson::GetParseError_En(result.Code())) + .d("offset", result.Offset()) + .d("messageId", info->directive->getMessageId())); + + sendExceptionEncounteredAndReportFailed( + info, "Unable to parse payload", ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED); + + return false; +} + +void ExternalMediaPlayer::handleDirective(std::shared_ptr info) { + if (!info) { + ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "nullDirectiveInfo")); + return; + } + + NamespaceAndName directiveNamespaceAndName(info->directive->getNamespace(), info->directive->getName()); + auto handlerIt = m_directiveToHandlerMap.find(directiveNamespaceAndName); + if (handlerIt == m_directiveToHandlerMap.end()) { + ACSDK_ERROR(LX("handleDirectivesFailed") + .d("reason", "noDirectiveHandlerForDirective") + .d("nameSpace", info->directive->getNamespace()) + .d("name", info->directive->getName())); + return; + } + + ACSDK_DEBUG9(LX("handleDirectivesPayload").sensitive("Payload", info->directive->getPayload())); + + auto handler = (handlerIt->second.second); + (this->*handler)(info, handlerIt->second.first); +} + +std::shared_ptr ExternalMediaPlayer::preprocessDirective( + std::shared_ptr info, + rapidjson::Document* document) { + ACSDK_DEBUG9(LX("preprocessDirective")); + + if (!parseDirectivePayload(info, document)) { + sendExceptionEncounteredAndReportFailed(info, "Failed to parse directive."); + return nullptr; + } + + std::string playerId; + if (!jsonUtils::retrieveValue(*document, "playerId", &playerId)) { + ACSDK_ERROR(LX("preprocessDirectiveFailed").d("reason", "nullPlayerId")); + sendExceptionEncounteredAndReportFailed(info, "No PlayerId in directive."); + return nullptr; + } + + auto adapterIt = m_adapters.find(playerId); + if (adapterIt == m_adapters.end()) { + ACSDK_ERROR(LX("preprocessDirectiveFailed").d("reason", "noAdapterForPlayerId").d("playerId", playerId)); + sendExceptionEncounteredAndReportFailed(info, "Unrecogonized PlayerId."); + return nullptr; + } + + auto adapter = adapterIt->second; + if (!adapter) { + ACSDK_ERROR(LX("preprocessDirectiveFailed").d("reason", "nullAdapter").d("playerId", playerId)); + sendExceptionEncounteredAndReportFailed(info, "nullAdapter."); + return nullptr; + } + + return adapter; +} + +void ExternalMediaPlayer::handleLogin(std::shared_ptr info, RequestType request) { + rapidjson::Document payload; + + auto adapter = preprocessDirective(info, &payload); + if (!adapter) { + return; + } + + std::string accessToken; + if (!jsonUtils::retrieveValue(payload, "accessToken", &accessToken)) { + ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "nullAccessToken")); + sendExceptionEncounteredAndReportFailed(info, "missing accessToken in Login directive"); + return; + } + + std::string userName; + if (!jsonUtils::retrieveValue(payload, "username", &userName)) { + userName = ""; + } + + int64_t refreshInterval; + if (!jsonUtils::retrieveValue(payload, "tokenRefreshIntervalInMilliseconds", &refreshInterval)) { + ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "nullRefreshInterval")); + sendExceptionEncounteredAndReportFailed(info, "missing tokenRefreshIntervalInMilliseconds in Login directive"); + return; + } + + bool forceLogin; + if (!jsonUtils::retrieveValue(payload, "forceLogin", &forceLogin)) { + ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "nullForceLogin")); + sendExceptionEncounteredAndReportFailed(info, "missing forceLogin in Login directive"); + return; + } + + setHandlingCompleted(info); + adapter->handleLogin(accessToken, userName, forceLogin, std::chrono::milliseconds(refreshInterval)); +} + +void ExternalMediaPlayer::handleLogout(std::shared_ptr info, RequestType request) { + rapidjson::Document payload; + + auto adapter = preprocessDirective(info, &payload); + if (!adapter) { + return; + } + + setHandlingCompleted(info); + adapter->handleLogout(); +} + +void ExternalMediaPlayer::handlePlay(std::shared_ptr info, RequestType request) { + rapidjson::Document payload; + + auto adapter = preprocessDirective(info, &payload); + if (!adapter) { + return; + } + + std::string playbackContextToken; + if (!jsonUtils::retrieveValue(payload, "playbackContextToken", &playbackContextToken)) { + ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "nullPlaybackContextToken")); + sendExceptionEncounteredAndReportFailed(info, "missing playbackContextToken in Play directive"); + return; + } + + int64_t offset; + if (!jsonUtils::retrieveValue(payload, "offsetInMilliseconds", &offset)) { + offset = 0; + } + + int64_t index; + if (!jsonUtils::retrieveValue(payload, "index", &index)) { + index = 0; + } + + setHandlingCompleted(info); + adapter->handlePlay(playbackContextToken, index, std::chrono::milliseconds(offset)); +} + +void ExternalMediaPlayer::handleSeek(std::shared_ptr info, RequestType request) { + rapidjson::Document payload; + + auto adapter = preprocessDirective(info, &payload); + if (!adapter) { + return; + } + + int64_t position; + if (!jsonUtils::retrieveValue(payload, "positionMilliseconds", &position)) { + ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "nullPosition")); + sendExceptionEncounteredAndReportFailed(info, "missing positionMilliseconds in SetSeekPosition directive"); + return; + } + + setHandlingCompleted(info); + adapter->handleSeek(std::chrono::milliseconds(position)); +} + +void ExternalMediaPlayer::handleAdjustSeek(std::shared_ptr info, RequestType request) { + rapidjson::Document payload; + + auto adapter = preprocessDirective(info, &payload); + if (!adapter) { + return; + } + + int64_t deltaPosition; + if (!jsonUtils::retrieveValue(payload, "deltaPositionMilliseconds", &deltaPosition)) { + ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "nullDeltaPositionMilliseconds")); + sendExceptionEncounteredAndReportFailed( + info, "missing deltaPositionMilliseconds in AdjustSeekPosition directive"); + return; + } + + if (deltaPosition < MAX_PAST_OFFSET || deltaPosition > MAX_FUTURE_OFFSET) { + ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "deltaPositionMillisecondsOutOfRange.")); + sendExceptionEncounteredAndReportFailed( + info, "missing deltaPositionMilliseconds in AdjustSeekPosition directive"); + return; + } + + setHandlingCompleted(info); + adapter->handleAdjustSeek(std::chrono::milliseconds(deltaPosition)); +} + +void ExternalMediaPlayer::handlePlayControl(std::shared_ptr info, RequestType request) { + rapidjson::Document payload; + + auto adapter = preprocessDirective(info, &payload); + if (!adapter) { + return; + } + + setHandlingCompleted(info); + adapter->handlePlayControl(request); +} + +void ExternalMediaPlayer::cancelDirective(std::shared_ptr info) { + removeDirective(info); +} + +void ExternalMediaPlayer::onDeregistered() { +} + +DirectiveHandlerConfiguration ExternalMediaPlayer::getConfiguration() const { + return g_configuration; +} + +void ExternalMediaPlayer::setPlayerInFocus(const std::string& playerInFocus) { + ACSDK_DEBUG9(LX("setPlayerInFocus").d("playerInFocus", playerInFocus)); + m_playerInFocus = playerInFocus; + m_playbackRouter->setHandler(shared_from_this()); +} + +void ExternalMediaPlayer::onButtonPressed(PlaybackButton button) { + if (!m_playerInFocus.empty()) { + auto adapterIt = m_adapters.find(m_playerInFocus); + + if (adapterIt == m_adapters.end()) { + // Should never reach here as playerInFocus is always set based on a contract with AVS. + ACSDK_ERROR(LX("AdapterNotFound").d("player", m_playerInFocus)); + return; + } + + auto buttonIt = g_buttonToRequestType.find(button); + + if (buttonIt == g_buttonToRequestType.end()) { + ACSDK_ERROR(LX("ButtonToRequestTypeNotFound").d("button", PlaybackButtonToString(button))); + return; + } + + ((*adapterIt).second)->handlePlayControl((*buttonIt).second); + } +} + +void ExternalMediaPlayer::doShutdown() { + m_executor.shutdown(); + // Reset the EMP from being a state provider. If not there would be calls from the adapter to provide context + // which will try to add tasks to the executor thread. + m_contextManager->setStateProvider(SESSION_STATE, nullptr); + m_contextManager->setStateProvider(PLAYBACK_STATE, nullptr); + + for (auto& adapter : m_adapters) { + if (!adapter.second) { + continue; + } + adapter.second->shutdown(); + } + + m_adapters.clear(); + m_exceptionEncounteredSender.reset(); + m_contextManager.reset(); + m_playbackRouter.reset(); + m_speakerManager.reset(); +} + +void ExternalMediaPlayer::removeDirective(std::shared_ptr info) { + // Check result too, to catch cases where DirectiveInfo was created locally, without a nullptr result. + // In those cases there is no messageId to remove because no result was expected. + if (info->directive && info->result) { + CapabilityAgent::removeDirective(info->directive->getMessageId()); + } +} + +void ExternalMediaPlayer::setHandlingCompleted(std::shared_ptr info) { + if (info && info->result) { + info->result->setCompleted(); + } + + removeDirective(info); +} + +void ExternalMediaPlayer::sendExceptionEncounteredAndReportFailed( + std::shared_ptr info, + const std::string& message, + avsCommon::avs::ExceptionErrorType type) { + if (info && info->directive) { + m_exceptionEncounteredSender->sendExceptionEncountered(info->directive->getUnparsedDirective(), type, message); + } + + if (info && info->result) { + info->result->setFailed(message); + } + + removeDirective(info); +} + +void ExternalMediaPlayer::executeProvideState( + const avsCommon::avs::NamespaceAndName& stateProviderName, + bool sendToken, + unsigned int stateRequestToken) { + ACSDK_DEBUG(LX("executeProvideState").d("sendToken", sendToken).d("stateRequestToken", stateRequestToken)); + std::string state; + + if (stateProviderName == SESSION_STATE) { + state = provideSessionState(); + } else if (stateProviderName == PLAYBACK_STATE) { + state = providePlaybackState(); + } else { + ACSDK_ERROR(LX("executeProvideState").d("reason", "unknownStateProviderName")); + return; + } + + SetStateResult result; + if (sendToken) { + result = m_contextManager->setState(stateProviderName, state, StateRefreshPolicy::ALWAYS, stateRequestToken); + } else { + result = m_contextManager->setState(stateProviderName, state, StateRefreshPolicy::ALWAYS); + } + + if (result != SetStateResult::SUCCESS) { + ACSDK_ERROR(LX("executeProvideState").d("reason", "contextManagerSetStateFailedForEMPState")); + } +} + +std::string ExternalMediaPlayer::provideSessionState() { + rapidjson::Document state(rapidjson::kObjectType); + rapidjson::Document::AllocatorType& stateAlloc = state.GetAllocator(); + + state.AddMember(rapidjson::StringRef(PLAYER_IN_FOCUS), m_playerInFocus, stateAlloc); + + rapidjson::Value players(rapidjson::kArrayType); + for (const auto& adapter : m_adapters) { + if (!adapter.second) { + continue; + } + + rapidjson::Value playerJson = buildSessionState(adapter.second->getState().sessionState, stateAlloc); + players.PushBack(playerJson, stateAlloc); + } + + state.AddMember(rapidjson::StringRef(PLAYERS), players, stateAlloc); + + rapidjson::StringBuffer buffer; + rapidjson::Writer writer(buffer); + if (!state.Accept(writer)) { + ACSDK_ERROR(LX("provideSessionStateFailed").d("reason", "writerRefusedJsonObject")); + return ""; + } + + return buffer.GetString(); +} + +std::string ExternalMediaPlayer::providePlaybackState() { + rapidjson::Document state(rapidjson::kObjectType); + rapidjson::Document::AllocatorType& stateAlloc = state.GetAllocator(); + + // Fill the default player state. + if (!buildDefaultPlayerState(&state, stateAlloc)) { + return ""; + } + + // Fetch actual PlaybackState from every player supported by the ExternalMediaPlayer. + rapidjson::Value players(rapidjson::kArrayType); + for (const auto& adapter : m_adapters) { + if (!adapter.second) { + continue; + } + rapidjson::Value playerJson = buildPlaybackState(adapter.second->getState().playbackState, stateAlloc); + players.PushBack(playerJson, stateAlloc); + } + + state.AddMember(PLAYERS, players, stateAlloc); + + rapidjson::StringBuffer buffer; + rapidjson::Writer writer(buffer); + + if (!state.Accept(writer)) { + ACSDK_ERROR(LX("providePlaybackState").d("reason", "writerRefusedJsonObject")); + return ""; + } + + return buffer.GetString(); +} + +/* + * SpeakerInterface. + */ +bool ExternalMediaPlayer::setVolume(int8_t volume) { + if (volume > avsCommon::avs::speakerConstants::AVS_SET_VOLUME_MAX || + volume < avsCommon::avs::speakerConstants::AVS_SET_VOLUME_MIN) { + ACSDK_ERROR(LX("setVolumeFailed").d("reason", "invalid volume value").d("value", volume)); + return false; + } + + m_speakerSettings.volume = volume; + + for (auto& adapter : m_adapters) { + if (!adapter.second) { + continue; + } + adapter.second->handleSetVolume(volume); + } + return true; +} + +bool ExternalMediaPlayer::adjustVolume(int8_t volume) { + if (volume > avsCommon::avs::speakerConstants::AVS_ADJUST_VOLUME_MAX || + volume < avsCommon::avs::speakerConstants::AVS_ADJUST_VOLUME_MIN) { + ACSDK_ERROR(LX("adjustVolumeFailed").d("reason", "invalid volume value").d("value", volume)); + return false; + } + + // TODO: Replace int variables here to the actual volume time when int8_t would be changed to it + int newVolume = m_speakerSettings.volume + volume; + newVolume = std::min(newVolume, (int)speakerConstants::AVS_SET_VOLUME_MAX); + newVolume = std::max(newVolume, (int)speakerConstants::AVS_SET_VOLUME_MIN); + + m_speakerSettings.volume = newVolume; + + for (auto& adapter : m_adapters) { + if (!adapter.second) { + continue; + } + adapter.second->handleSetVolume((int8_t)newVolume); + } + return true; +} + +bool ExternalMediaPlayer::setMute(bool mute) { + m_speakerSettings.mute = mute; + + for (auto& adapter : m_adapters) { + if (!adapter.second) { + continue; + } + adapter.second->handleSetMute(mute); + } + return true; +} + +bool ExternalMediaPlayer::getSpeakerSettings(avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings* settings) { + if (!settings) { + ACSDK_ERROR(LX("getSpeakerSettingsFailed").d("reason", "nullSettings")); + return false; + } + settings->mute = m_speakerSettings.mute; + settings->volume = m_speakerSettings.volume; + return true; +} + +avsCommon::sdkInterfaces::SpeakerInterface::Type ExternalMediaPlayer::getSpeakerType() { + return SpeakerInterface::Type::AVS_SYNCED; +} + +void ExternalMediaPlayer::createAdapters( + const AdapterMediaPlayerMap& mediaPlayers, + const AdapterCreationMap& adapterCreationMap, + std::shared_ptr messageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager) { + ACSDK_DEBUG0(LX("createAdapters")); + for (auto& entry : adapterCreationMap) { + auto mediaPlayerIt = mediaPlayers.find(entry.first); + + if (mediaPlayerIt == mediaPlayers.end()) { + ACSDK_ERROR(LX("adapterCreationFailed").d("playerId", entry.first).d("reason", "nullMediaPlayer")); + continue; + } + + auto adapter = entry.second( + (*mediaPlayerIt).second, m_speakerManager, messageSender, focusManager, contextManager, shared_from_this()); + if (adapter) { + m_adapters[entry.first] = adapter; + } else { + ACSDK_ERROR(LX("adapterCreationFailed").d("playerId", entry.first)); + } + } +} + +} // namespace externalMediaPlayer +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/GadgetManager/src/CMakeLists.txt b/CapabilityAgents/GadgetManager/src/CMakeLists.txt new file mode 100644 index 0000000000..eacfd4617e --- /dev/null +++ b/CapabilityAgents/GadgetManager/src/CMakeLists.txt @@ -0,0 +1,26 @@ +add_definitions("-DACSDK_LOG_MODULE=gadgetManager") + +add_library(GadgetManager SHARED + BinaryRepresentation.cpp + FinalizeGadgetEvent.cpp + FrameParser.cpp + GadgetEventConstants.cpp + GadgetEventHeader.cpp + GadgetEventProcessor.cpp + GadgetInfoEvent.cpp + GadgetManager.cpp + GadgetProtocol.cpp + GadgetProtocolConstants.cpp) + +target_include_directories(GadgetManager PUBLIC + "${ContextManager_INCLUDE_DIRS}" + "${GadgetManager_SOURCE_DIR}/include") + +if (WIN32) + target_link_libraries(GadgetManager AVSCommon ws2_32) +else() + target_link_libraries(GadgetManager AVSCommon) +endif() + +# install target +asdk_install() diff --git a/CapabilityAgents/GadgetManager/src/GadgetProtocol.cpp b/CapabilityAgents/GadgetManager/src/GadgetProtocol.cpp new file mode 100644 index 0000000000..6283dcdc7e --- /dev/null +++ b/CapabilityAgents/GadgetManager/src/GadgetProtocol.cpp @@ -0,0 +1,333 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "GadgetManager/GadgetProtocol.h" +#ifdef _WIN32 +#include +#else +#include +#endif + +#include + +#include "GadgetManager/GadgetProtocolConstants.h" + +/// String to identify log entries originating from this file. +static const std::string TAG{"GadgetProtocol"}; + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace gadgetManager { + +/// Location of Command ID value in a properly formed GadgetProtocol packet. +static const size_t COMMAND_ID_INDEX = 1; +/// Location of Error ID value in a properly formed GadgetProtocol packet. +static const size_t ERROR_ID_INDEX = 2; +/// Location of Sequence ID value in a properly formed GadgetProtocol packet. +static const size_t SEQUENCE_ID_INDEX = 3; + +/** + * @param byte The character the needs determination if it is a special character within the Gadget Protocol. + * @return true if byte is a special character. + */ +static bool isSpecialCharacter(uint8_t byte) { + return GadgetProtocolConstants::PACKET_BEGIN == byte || GadgetProtocolConstants::PACKET_END == byte || + GadgetProtocolConstants::ESCAPE_BYTE == byte; +} + +/** + * The checksum is the penultimate 16 bits (in big-endian form), unless the checksum contains one of the special + * characters. If that is the case, the special characters are escaped as they would be in the payload. This makes for + * a bit of ugliness in determining the actual bytes of the checksum. Starting at the end of the packet, we search for + * a four-byte checksum, then a three-byte checksum and if neither of those match, it's a two byte checksum. This + * function returns a 2, 3 or 4 byte-vector with the segment that represents the checksum. This function requires a + * properly formatted Gadget Protocol packet. + * + * @param packet a properly formatted Gadget Protocol packet + * @return a vector of the checksum portion of the packet. + */ +static std::vector getChecksumSection(const std::vector& packet) { + // the end of the packet of a 4 byte checksum looks like this: + // begin to (end-6): ... header of packet ... + // end-5 : ESCAPE_BYTE + // end-4 : escaped byte (low-byte) + // end-3 : ESCAPE_BYTE + // end-2 : escaped byte (high-byte) + // end-1 : PACKET_END + const std::vector fourByteChecksum( + std::end(packet) - (4 + sizeof(GadgetProtocolConstants::PACKET_END)), + std::end(packet) - sizeof(GadgetProtocolConstants::PACKET_END)); + + // check the 4 byte checksum. Look for {ESCAPE_BYTE, escaped byte, ESCAPE_BYTE, escaped byte} + if ((fourByteChecksum[0] == GadgetProtocolConstants::ESCAPE_BYTE) && + (isSpecialCharacter(GadgetProtocolConstants::ESCAPE_BYTE ^ fourByteChecksum[1])) && + (fourByteChecksum[2] == GadgetProtocolConstants::ESCAPE_BYTE) && + (isSpecialCharacter(GadgetProtocolConstants::ESCAPE_BYTE ^ fourByteChecksum[3]))) { + return fourByteChecksum; + } + + // the end of the packet of a 3 byte checksum takes on two forms: + // begin to (end-5): ... header of packet ... + // end-4 : unescaped byte (low-byte) + // end-3 : ESCAPE_BYTE + // end-2 : escaped byte (high-byte) + // end-1 : PACKET_END + // OR + // begin to (end-5): ... header of packet ... + // end-4 : ESCAPE_BYTE + // end-3 : escaped byte (low-byte) + // end-2 : unescaped byte (high-byte) + // end-1 : PACKET_END + const std::vector threeByteChecksum( + std::end(packet) - (3 + sizeof(GadgetProtocolConstants::PACKET_END)), + std::end(packet) - sizeof(GadgetProtocolConstants::PACKET_END)); + // check the 3 byte checksum. Look for {ESCAPE_BYTE, escaped byte, unescaped byte} or {unescaped byte, ESCAPE_BYTE, + // escaped byte} + if (((threeByteChecksum[0] == GadgetProtocolConstants::ESCAPE_BYTE) && + (isSpecialCharacter(GadgetProtocolConstants::ESCAPE_BYTE ^ threeByteChecksum[1])) && + (!isSpecialCharacter(threeByteChecksum[2]))) || + ((!isSpecialCharacter(threeByteChecksum[0])) && + (threeByteChecksum[1] == GadgetProtocolConstants::ESCAPE_BYTE) && + (isSpecialCharacter(GadgetProtocolConstants::ESCAPE_BYTE ^ threeByteChecksum[2])))) { + return threeByteChecksum; + } + + // It must be the two byte checksum + // begin to (end-4): ... header of packet ... + // end-3 : unescaped byte (low-byte) + // end-2 : unescaped byte (high-byte) + // end-1 : PACKET_END + return std::vector( + std::end(packet) - (2 + sizeof(GadgetProtocolConstants::PACKET_END)), + std::end(packet) - sizeof(GadgetProtocolConstants::PACKET_END)); +} + +/** + * This returns the 16-bit checksum of what is stored in the packet (not what is calculated). If necessary, it is + * byte-swapped, as it is in big-endian form in the packet. + * + * @param packet a properly formatted Gadget Protocol packet + * @return the checksum of the packet + */ +static uint16_t readChecksum(const std::vector& packet) { + auto checksumSection = getChecksumSection(packet); + + union { + uint8_t bytes[2]; + uint16_t value; + } bigEndianChecksum; + + switch (checksumSection.size()) { + case 4: + // 4 byte checksum {ESCAPE_BYTE, escaped byte, ESCAPE_BYTE, escaped byte}; + bigEndianChecksum.bytes[0] = (GadgetProtocolConstants::ESCAPE_BYTE ^ checksumSection[1]); + bigEndianChecksum.bytes[1] = (GadgetProtocolConstants::ESCAPE_BYTE ^ checksumSection[3]); + break; + case 3: + // 3 byte checksum + if (checksumSection[0] == GadgetProtocolConstants::ESCAPE_BYTE) { + // this is the case {ESCAPE_BYTE, escaped byte, normal byte}; + bigEndianChecksum.bytes[0] = (GadgetProtocolConstants::ESCAPE_BYTE ^ checksumSection[1]); + bigEndianChecksum.bytes[1] = checksumSection[2]; + } else { + // this is the case {normal byte, ESCAPE_BYTE, escaped byte}; + bigEndianChecksum.bytes[0] = checksumSection[0]; + bigEndianChecksum.bytes[1] = (GadgetProtocolConstants::ESCAPE_BYTE ^ checksumSection[2]); + } + break; + default: + // two byte checksum + bigEndianChecksum.value = *(reinterpret_cast(checksumSection.data())); + break; + } + return ntohs(bigEndianChecksum.value); +} + +/** + * Cut off the head and footer of a Gadget Protocol packet. + * + * @param packet a properly formatted Gadget Protocol packet + * @return the still-escaped payload of the Gadget Protocol packet. + */ +static std::vector getPayloadSection(const std::vector& packet) { + // the header is 4 bytes (start of frame, Command ID, Error ID, Sequence ID). + const int numberOfHeaderBytes = 4; + + // see how many characters trail the payload. + const int numberOfTrailingBytes = getChecksumSection(packet).size() + sizeof(GadgetProtocolConstants::PACKET_END); + + return std::vector( + packet.begin() + numberOfHeaderBytes, packet.begin() + (packet.size() - numberOfTrailingBytes)); +} + +bool GadgetProtocol::decode(const std::vector& packet, std::vector* unpackedPayload) { + if (!unpackedPayload) { + ACSDK_ERROR(LX(__func__).m("null unpackedPayload")); + return false; + } + + /// The smallest packet possible, for use in determining if a packet to decode is large enough. + static const auto minimumSizePacket = encode(std::vector(), 0).second; + + if (packet.size() < minimumSizePacket.size()) { + ACSDK_ERROR(LX(__func__).d("packet.size()", packet.size()).m("packet is too short")); + return false; + } + + // The following checks are safe because we already determined that packet is big enough. + if (GadgetProtocolConstants::PACKET_BEGIN != packet.front()) { + ACSDK_ERROR(LX(__func__).d("invalid StartOfFrame", static_cast(packet.front()))); + return false; + } + + const uint8_t commandId = packet[COMMAND_ID_INDEX]; + if (GadgetProtocolConstants::DEFAULT_COMMAND_ID != commandId) { + ACSDK_ERROR(LX(__func__).d("invalid CommandId", static_cast(commandId))); + return false; + } + + const uint8_t errorId = packet[ERROR_ID_INDEX]; + if (GadgetProtocolConstants::DEFAULT_ERROR_ID != errorId) { + ACSDK_ERROR(LX(__func__).d("invalid ErrorId", static_cast(errorId))); + return false; + } + + if (isSpecialCharacter(packet[SEQUENCE_ID_INDEX])) { + ACSDK_ERROR(LX(__func__).d("invalid SequenceId", static_cast(packet[SEQUENCE_ID_INDEX]))); + return false; + } + + if (GadgetProtocolConstants::PACKET_END != packet.back()) { + ACSDK_ERROR(LX(__func__).d("invalid EndOfFrame", static_cast(packet.back()))); + return false; + } + + auto packedPayload = getPayloadSection(packet); + + uint16_t checksum = (commandId + errorId); + + // the unpacked payload is at most the same size as the packedPayload. + unpackedPayload->reserve(packedPayload.size()); + unpackedPayload->clear(); + + bool escaping = false; + for (const auto& byte : packedPayload) { + if (escaping) { + const uint8_t unescaped = GadgetProtocolConstants::ESCAPE_BYTE ^ byte; + checksum += (unescaped); + unpackedPayload->push_back(unescaped); + escaping = false; + } else { + if (isSpecialCharacter(byte)) { + escaping = true; + } else { + checksum += byte; + unpackedPayload->push_back(byte); + } + } + } + + if (checksum != readChecksum(packet)) { + ACSDK_ERROR(LX(__func__).d("received", readChecksum(packet)).d("calculated", checksum).m("invalid checksum")); + return false; + } + + return true; +} + +/** + * Properly escape (if required) and append a byte onto a vector + * + * @param byte the byte to append + * @param v the vector to append to + */ +static void append(uint8_t byte, std::vector* v) { + if (isSpecialCharacter(byte)) { + v->push_back(GadgetProtocolConstants::ESCAPE_BYTE); + v->push_back(GadgetProtocolConstants::ESCAPE_BYTE ^ byte); + } else { + v->push_back(byte); + } +} + +/** + * Function to simplify the handling of the sequenceId. The sequenceId is incremented, rolling over from 0xFF->0x00. + * Special characters are skipped. + * + * @param sequenceId the previous sequence ID + * @return the next sequence ID + */ +static uint8_t getNextSequenceId(uint8_t sequenceId) { + ++sequenceId; + + // step over the special characters, as those are not valid sequence IDs + while (isSpecialCharacter(sequenceId)) { + ++sequenceId; + } + + return sequenceId; +} + +std::pair> GadgetProtocol::encode( + const std::vector& command, + uint8_t prevSequenceId) { + const uint8_t sequenceId = getNextSequenceId(prevSequenceId); + const uint8_t commandId = GadgetProtocolConstants::DEFAULT_COMMAND_ID; + const uint8_t errorId = GadgetProtocolConstants::DEFAULT_ERROR_ID; + + // the checksum is commandId + errorId + each (unescaped) byte in the payload. It is calculated later in the + // function, but is included here for the packet reservation. + uint16_t checksum = commandId + errorId; + + std::vector packet; + // reserve the maximum size that could be needed. The 2 * command.size() and @ * sizeof(checksum) is because each + // byte might need to be escaped. + packet.reserve( + sizeof(GadgetProtocolConstants::PACKET_BEGIN) + sizeof(commandId) + sizeof(errorId) + sizeof(sequenceId) + + 2 * command.size() + 2 * sizeof(checksum) + sizeof(GadgetProtocolConstants::PACKET_END)); + + // HEADER + packet.push_back(GadgetProtocolConstants::PACKET_BEGIN); + // The spec says that these are specific values; it also says that they should be escaped if they are special + // characters. Play it safe and use a common insertion interface. + append(commandId, &packet); + append(errorId, &packet); + append(sequenceId, &packet); + + // PAYLOAD + for (const auto& byte : command) { + checksum += byte; + append(byte, &packet); + } + + // The packet is big-endian, so insert the higher order byte first. + append((checksum >> 8) & 0xFF, &packet); + append(checksum & 0xFF, &packet); + + packet.push_back(GadgetProtocolConstants::PACKET_END); + + return std::make_pair(sequenceId, packet); +} + +} // namespace gadgetManager +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/GadgetManager/test/GadgetProtocolTest.cpp b/CapabilityAgents/GadgetManager/test/GadgetProtocolTest.cpp new file mode 100644 index 0000000000..9affc128eb --- /dev/null +++ b/CapabilityAgents/GadgetManager/test/GadgetProtocolTest.cpp @@ -0,0 +1,343 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include +#include + +#ifdef _WIN32 +#include +#else +#include +#endif + +#include "GadgetManager/GadgetProtocol.h" +#include "GadgetManager/GadgetProtocolConstants.h" +#include "GenerateRandomVector.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace gadgetManager { +namespace test { + +/// Utility function to determine if the packet is properly formed +static bool isValid(const std::vector& packet) { + std::vector dummyPayload; + return GadgetProtocol::decode(packet, &dummyPayload); +} + +/// Verify proper error handling on bad parameters. +TEST(GadgetProtocolTest, DecodeNullOutputParameter) { + const auto valid = GadgetProtocol::encode(std::vector(), 0).second; + ASSERT_TRUE(isValid(valid)); + ASSERT_FALSE(GadgetProtocol::decode(valid, nullptr)); +} + +/// Check that packets that are too short are rejected. +TEST(GadgetProtocolTest, InvalidLength) { + const auto smallestValid = GadgetProtocol::encode(std::vector(), 0).second; + ASSERT_TRUE(isValid(smallestValid)); + + // all lengths under the valid packet are illegal + for (size_t length = 0; length < smallestValid.size(); ++length) { + ASSERT_FALSE(isValid(std::vector(std::begin(smallestValid), std::begin(smallestValid) + length))); + } +} + +/// utility function that creates a packet, modifies the byte at the specificed index and checks to see if the value +/// it's being changed to is in the set of possible correct bytes. The packet should be invalid if the byte is changes +/// to something outside of the correct bytes. +static bool modifyThenCheckForValidity(const std::unordered_set& possibleCorrectBytes, size_t indexToChange) { + auto packet = GadgetProtocol::encode(std::vector(), 0).second; + for (int i = 0; i < 0x100; ++i) { + const uint8_t byteToChangeTo = i & 0xFF; + if (indexToChange > packet.size()) { + return false; + } + packet[indexToChange] = byteToChangeTo; + + if ((possibleCorrectBytes.find(byteToChangeTo) != possibleCorrectBytes.end()) != isValid(packet)) { + // isValid should return true when byteToChangeTo is in possibleCorrectBytes + return false; + } + } + + return true; +} + +/// Test to change the 1st byte. +TEST(GadgetProtocolTest, InvalidStartOfFrame) { + // the SOF is at index 0 + ASSERT_TRUE(modifyThenCheckForValidity(std::unordered_set{GadgetProtocolConstants::PACKET_BEGIN}, 0)); +} + +/// Test to change the 2nd byte. +TEST(GadgetProtocolTest, InvalidCommandId) { + // the commandID is at index 1 + ASSERT_TRUE( + modifyThenCheckForValidity(std::unordered_set{GadgetProtocolConstants::DEFAULT_COMMAND_ID}, 1)); +} + +/// Test to change the 3rd byte. +TEST(GadgetProtocolTest, InvalidErrorId) { + // the errorID is at index 2 + ASSERT_TRUE(modifyThenCheckForValidity(std::unordered_set{GadgetProtocolConstants::DEFAULT_ERROR_ID}, 2)); +} + +/// Test to change the 4th byte. +TEST(GadgetProtocolTest, InvalidSequenceId) { + // create a set of all legitimate sequenceId values (i.e. everything except SOF, EOF and the ESCAPE_BYTE byte) + std::unordered_set goodSequenceIdValues; + for (int i = 0; i < 0x100; ++i) { + if ((GadgetProtocolConstants::PACKET_BEGIN != i) && (GadgetProtocolConstants::PACKET_END != i) && + (GadgetProtocolConstants::ESCAPE_BYTE != i)) { + goodSequenceIdValues.insert(i); + } + } + + // the sequenceID is at index 3 + ASSERT_TRUE(modifyThenCheckForValidity(goodSequenceIdValues, 3)); +} + +/// Utility function to determine if a byte is a special character. +static bool isSpecial(uint8_t byte) { + return GadgetProtocolConstants::PACKET_BEGIN == byte || GadgetProtocolConstants::PACKET_END == byte || + GadgetProtocolConstants::ESCAPE_BYTE == byte; +} + +/// Counts the number of escaped bytes in a checksum +static size_t numEscapedBytes(uint16_t checksum) { + uint8_t* bytePtr = reinterpret_cast(&checksum); + return isSpecial(*bytePtr) + isSpecial(*(bytePtr + 1)); +} + +/// Given a 16 bit checksum, create a vector that escapes the bytes properly. The checksum vector is big-endian. +static std::vector createEscapedChecksum(uint16_t checksum) { + std::vector checksumVector; + for (unsigned int i = sizeof(checksum); i > 0; --i) { + const uint8_t workingByte = (checksum >> (8 * (i - 1))) & 0xFF; + if (isSpecial(workingByte)) { + checksumVector.push_back(GadgetProtocolConstants::ESCAPE_BYTE); + checksumVector.push_back(workingByte ^ GadgetProtocolConstants::ESCAPE_BYTE); + } else { + checksumVector.push_back(workingByte); + } + } + + return checksumVector; +} + +/// Test for cases where the checksum has no escape bytes. It checks to see that if the checksum is incorrect it fails +/// to decode and if it's correct, it decodes correctly. +TEST(GadgetProtocolTest, ChecksumNoEscapeBytes) { + // zero length payload results in checksum that is CommandID + ErrorID + const uint16_t expectedChecksum = + GadgetProtocolConstants::DEFAULT_COMMAND_ID + GadgetProtocolConstants::DEFAULT_ERROR_ID; + for (int i = 0; i < 0x10000; ++i) { + const size_t CHECKSUM_INDEX = 4; + const uint16_t checksum = i & 0xFFFF; + if (0 == numEscapedBytes(checksum)) { + auto packet = GadgetProtocol::encode(std::vector(), 0).second; + ASSERT_GE( + packet.size(), + CHECKSUM_INDEX + sizeof(checksum)); // verfiy the packet is long enough for the next statement + + // overwrite the checksum with 'checksum' + uint16_t* checksumPtr = reinterpret_cast(packet.data() + CHECKSUM_INDEX); + *checksumPtr = htons(checksum); + + // it should be invalid + ASSERT_EQ(checksum == expectedChecksum, isValid(packet)); + } + } +} + +/// This function is for testing checksums that have at least one escaped byte. A packet is created and all of the 3 or +/// 4 byte checksums are substituted into the Gadget Protocol packet (depending on whether the expected checksum needs 1 +/// or 2 escaped bytes). The test checks to see wheter or not the packet is valid with the substituted checksum. If +/// the substituted checksum is the same as the expected checksum, the packet should be valid, otherwise it is invalid. +static void checkEscapedByteChecksum(uint16_t expectedChecksum) { + // First step, generate a payload so the expected checksum is correct. + uint16_t currentChecksum = + (GadgetProtocolConstants::DEFAULT_COMMAND_ID + GadgetProtocolConstants::DEFAULT_ERROR_ID); + std::vector payload; + // keep the step below 0xF0 so we don't get any escape bytes in the payload. + const uint8_t step = 0xEE; + while (currentChecksum + step < expectedChecksum) { + payload.push_back(step); + currentChecksum += step; + } + + const int finalPayloadByteToGenerateExpectedChecksum = expectedChecksum - currentChecksum; + ASSERT_LE(finalPayloadByteToGenerateExpectedChecksum, step); + payload.push_back(finalPayloadByteToGenerateExpectedChecksum); + + // Exhaustively search the checksum space for all checksums that are the same length as the expected checksum. This + // is so they can be substituted into the Gadget Protocol packet without any packet size modification. + for (int i = 0; i < 0x10000; ++i) { + const uint16_t checksum = i & 0xFFFF; + + const size_t expectedChecksumVectorSize = 2 + numEscapedBytes(checksum); + if (expectedChecksumVectorSize == (numEscapedBytes(expectedChecksum) + 2)) { + auto packet = GadgetProtocol::encode(payload, 0).second; + const size_t CHECKSUM_INDEX = 4 + payload.size(); + + auto checksumVector = createEscapedChecksum(checksum); + ASSERT_EQ(expectedChecksumVectorSize, checksumVector.size()); + + memcpy(packet.data() + CHECKSUM_INDEX, checksumVector.data(), checksumVector.size()); + + ASSERT_EQ(checksum == expectedChecksum, isValid(packet)); + } + } +} + +/// Test where the checksum has a leading escaped byte (e.g. 0xF200) +TEST(GadgetProtocolTest, ChecksumLeadingEscapeByte) { + for (const auto& leadingEscapeByte : std::set{GadgetProtocolConstants::PACKET_BEGIN, + GadgetProtocolConstants::PACKET_END, + GadgetProtocolConstants::ESCAPE_BYTE}) { + checkEscapedByteChecksum(leadingEscapeByte << 8); + } +} + +/// Test where the checksum has a trailing escaped byte (e.g. 0x00F1) +TEST(GadgetProtocolTest, ChecksumTrailingEscapeByte) { + for (const auto& leadingEscapeByte : std::set{GadgetProtocolConstants::PACKET_BEGIN, + GadgetProtocolConstants::PACKET_END, + GadgetProtocolConstants::ESCAPE_BYTE}) { + checkEscapedByteChecksum(leadingEscapeByte); + } +} + +/// Test where the checksum has both a leading and trailing escaped byte (e.g. 0xF1F1) +TEST(GadgetProtocolTest, ChecksumLeadingAndTrailingEscapeByte) { + std::set escapeBytes = {GadgetProtocolConstants::PACKET_BEGIN, + GadgetProtocolConstants::PACKET_END, + GadgetProtocolConstants::ESCAPE_BYTE}; + for (const auto& leadingByte : escapeBytes) { + for (const auto& trailingByte : escapeBytes) { + const uint16_t expectedChecksum = (leadingByte << 8 | trailingByte); + checkEscapedByteChecksum(expectedChecksum); + } + } +} + +/// Test where the end of frame byte is replaced and packet validity is checked. +TEST(GadgetProtocolTest, InvalidEndOfFrame) { + for (int i = 0; i < 0x100; ++i) { + const uint8_t endOfFrame = i & 0xFF; + auto packet = GadgetProtocol::encode(std::vector(), 0).second; + ASSERT_GE(packet.size(), 1u); // verfiy the packet is long enough for the next statement + packet[packet.size() - 1] = endOfFrame; + + // all values for the end byte except PACKET_END shall fail + ASSERT_EQ(endOfFrame == GadgetProtocolConstants::PACKET_END, isValid(packet)); + } +} + +/// Insert special characters into the payload to verify that they are escaped correctly. +TEST(GadgetProtocolTest, EscapeBytesInPayload) { + for (const auto& escapeByte : std::set{GadgetProtocolConstants::PACKET_BEGIN, + GadgetProtocolConstants::PACKET_END, + GadgetProtocolConstants::ESCAPE_BYTE}) { + std::vector payload{escapeByte}; + auto packet = GadgetProtocol::encode(payload, 0).second; + ASSERT_GE(packet.size(), 6u); + ASSERT_EQ(GadgetProtocolConstants::ESCAPE_BYTE, packet[4]); + ASSERT_EQ(GadgetProtocolConstants::ESCAPE_BYTE ^ escapeByte, packet[5]); + } +} + +/// Insert normal bytes into the payload to verify that they are never escapedescaped correctly. +TEST(GadgetProtocolTest, NonEscapeBytesInPayload) { + for (const auto& normalByte : std::set{0, 1, 2, 3, 4, 5, 6, 0xF3}) { + std::vector payload{normalByte}; + auto packet = GadgetProtocol::encode(payload, 0).second; + ASSERT_GE(packet.size(), 5u); + ASSERT_EQ(normalByte, packet[4]); + } +} + +// Test normal sequenceId operation +TEST(GadgetProtocolTest, UnescapedSequenceId) { + for (int i = 0; i < 0x100; ++i) { + uint8_t prevSequenceId = (0xFF & i); + if (!isSpecial(prevSequenceId + 1)) { + auto encodeResult = GadgetProtocol::encode(std::vector(), prevSequenceId); + ASSERT_EQ((prevSequenceId + 1) & 0xFF, encodeResult.first); + ASSERT_EQ(encodeResult.second[3], encodeResult.first); + } + } +} + +/// Test skipping of special byte SequenceId's. +TEST(GadgetProtocolTest, EscapedSequenceId) { + for (const auto& escapeByte : std::set{GadgetProtocolConstants::PACKET_BEGIN, + GadgetProtocolConstants::PACKET_END, + GadgetProtocolConstants::ESCAPE_BYTE}) { + auto encodeResult = GadgetProtocol::encode(std::vector(), escapeByte); + ASSERT_EQ(0xF3, encodeResult.first); + ASSERT_EQ(encodeResult.second[3], encodeResult.first); + } +} + +/// Test the SequenceId wrapping around from 0xFF to 0x00. +TEST(GadgetProtocolTest, WrappedSequenceId) { + auto encodeResult = GadgetProtocol::encode(std::vector(), 0xFF); + ASSERT_EQ(0x00, encodeResult.first); + ASSERT_EQ(encodeResult.second[3], encodeResult.first); +} + +static void encodeAndDecode(const std::vector originalPayload) { + const auto packet = GadgetProtocol::encode(originalPayload, 0).second; + std::vector unpackedPayload; + ASSERT_TRUE(GadgetProtocol::decode(packet, &unpackedPayload)); + ASSERT_EQ(originalPayload, unpackedPayload); +} + +/// Test the encoding and decoding of some representative payloads. +TEST(GadgetProtocolTest, InterestingPayloads) { + const std::vector> payloads = {{}, + {0}, + {0xF0}, + {0xF1}, + {0xF2}, + {0xF3}, + {0x00, 0xF0}, + {0xF0, 0x00}, + {0x01, 0xF0, 0x02}, + {0xF0, 0xF1}, + {0xF0, 0xF1, 0xF2}, + {0xF2, 0x11, 0xF1}}; + + for (const auto& payload : payloads) { + encodeAndDecode(payload); + } +} + +/// Generate random vectors and see if an encode and decode results in the same original payload. +TEST(GadgetProtocolTest, FuzzTest) { + for (int i = 0; i < 1024; ++i) { + auto payload = generateRandomVector(251); + encodeAndDecode(payload); + } +} + +} // namespace test +} // namespace gadgetManager +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/GadgetManager/test/GenerateRandomVector.h b/CapabilityAgents/GadgetManager/test/GenerateRandomVector.h new file mode 100644 index 0000000000..bada2b7704 --- /dev/null +++ b/CapabilityAgents/GadgetManager/test/GenerateRandomVector.h @@ -0,0 +1,52 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_GADGETMANAGER_TEST_GENERATERANDOMVECTOR_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_GADGETMANAGER_TEST_GENERATERANDOMVECTOR_H_ + +#include +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace gadgetManager { +namespace test { + +/** + * Utility function that is used in multiple tests for generating random vectors of bytes + */ +std::vector generateRandomVector(size_t length) { + // First create an instance of an engine. + std::random_device rnd_device; + // Specify the engine and distribution. + std::mt19937 mersenne_engine(rnd_device()); + std::uniform_int_distribution dist(0, 0xFF); + + auto gen = std::bind(dist, mersenne_engine); + + std::vector vec(length); + std::generate(std::begin(vec), std::end(vec), gen); + return vec; +} + +} // namespace test +} // namespace gadgetManager +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_GADGETMANAGER_TEST_GENERATERANDOMVECTOR_H_ diff --git a/CapabilityAgents/Notifications/CMakeLists.txt b/CapabilityAgents/Notifications/CMakeLists.txt new file mode 100644 index 0000000000..9e1583aba4 --- /dev/null +++ b/CapabilityAgents/Notifications/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) +project(Notifications LANGUAGES CXX) + +include(../../build/BuildDefaults.cmake) + +add_subdirectory("src") +acsdk_add_test_subdirectory_if_allowed() diff --git a/CapabilityAgents/Notifications/include/Notifications/IndicatorState.h b/CapabilityAgents/Notifications/include/Notifications/IndicatorState.h new file mode 100644 index 0000000000..c5a89a660b --- /dev/null +++ b/CapabilityAgents/Notifications/include/Notifications/IndicatorState.h @@ -0,0 +1,74 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_INDICATORSTATE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_INDICATORSTATE_H_ + +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { + +/** + * An enum class used to represent the state of the notification indicator. + * + * @note These values shouldn't be changed before evaluating the effect a change will have on existing databases. + */ +enum class IndicatorState { OFF = 0, ON = 1, UNDEFINED }; + +/** + * Convert an IndicatorState to an int. + * + * @param state The @c IndicatorState to convert. + * @return The int representation of state + */ +inline int indicatorStateToInt(IndicatorState state) { + return static_cast(state); +} + +/** + * Convert an int into an @c IndicatorState. + * + * @param stateNum The int to convert. + * @return The IndicatorState representation of stateNum or nullptr if stateNum is invalid. + */ +inline const IndicatorState intToIndicatorState(int stateNum) { + if (stateNum < 0 || stateNum >= static_cast(IndicatorState::UNDEFINED)) { + return IndicatorState::UNDEFINED; + } + return static_cast(stateNum); +} + +inline std::ostream& operator<<(std::ostream& stream, IndicatorState state) { + switch (state) { + case IndicatorState::ON: + stream << "ON"; + return stream; + case IndicatorState::OFF: + stream << "OFF"; + return stream; + case IndicatorState::UNDEFINED: + stream << "UNDEFINED"; + return stream; + } + return stream << "UNKNOWN STATE"; +} + +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_INDICATORSTATE_H_ diff --git a/CapabilityAgents/Notifications/include/Notifications/NotificationIndicator.h b/CapabilityAgents/Notifications/include/Notifications/NotificationIndicator.h new file mode 100644 index 0000000000..3315178683 --- /dev/null +++ b/CapabilityAgents/Notifications/include/Notifications/NotificationIndicator.h @@ -0,0 +1,74 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONINDICATOR_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONINDICATOR_H_ + +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { + +/** + * A struct representation of a @c NotificationIndicator. + * + * There is one instance of this class created per SetIndicator directive. + */ +struct NotificationIndicator { + /** + * Default constructor + */ + NotificationIndicator(); + + /** + * Constructor + * + * @param persistVisualIndicator A flag indicating whether the visual indicator on the device should stay lit. + * @param playAudioIndicator A flag indicating whether audio should be played. + * @param assetId The id of the audio asset to be played. + * @param url The url of the audio asset to be played. + */ + NotificationIndicator( + bool persistVisualIndicator, + bool playAudioIndicator, + const std::string& assetId, + const std::string& url); + + /** + * Flag specifying if the device must display a persistent visual indicator when processing this + * @c NotificationIndicator. + */ + bool persistVisualIndicator; + + /// Flag specifying if the device must play audio when processing this @c NotificationIndicator. + bool playAudioIndicator; + + struct Asset { + /// Identifier for asset. + std::string assetId; + + /** The location of the sound to be played when this @c NotificationIndicator is processed. + * @note If the device is offline the device should play the default indicator sound. + */ + std::string url; + } asset; +}; + +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONINDICATOR_H_ diff --git a/CapabilityAgents/Notifications/include/Notifications/NotificationRenderer.h b/CapabilityAgents/Notifications/include/Notifications/NotificationRenderer.h new file mode 100644 index 0000000000..3bbc808877 --- /dev/null +++ b/CapabilityAgents/Notifications/include/Notifications/NotificationRenderer.h @@ -0,0 +1,181 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONRENDERER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONRENDERER_H_ + +#include +#include + +#include +#include + +#include "NotificationRendererInterface.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { + +/** + * Implementation of NotificationRendererInterface using the @c MediaPlayerInterface + */ +class NotificationRenderer + : public NotificationRendererInterface + , public avsCommon::utils::mediaPlayer::MediaPlayerObserverInterface + , public std::enable_shared_from_this { +public: + /// A type that identifies which source is currently being operated on. + using SourceId = avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId; + + /** + * Create a NotificationRenderer. The new NotificationRenderer starts life in the + * IDLE state, awaiting request to render notifications. + * + * @param mediaPlayer The @c MediaPlayer instance to use to render audio. + * @return The new NotificationRenderer, or null if the operation fails. + */ + static std::shared_ptr create( + std::shared_ptr mediaPlayer); + + /// @name NotificationRendererInterface methods + /// @{ + void addObserver(std::shared_ptr observer) override; + void removeObserver(std::shared_ptr observer) override; + bool renderNotification(std::function()> audioFactory, const std::string& url) + override; + bool cancelNotificationRendering() override; + /// @} + + /// @name MediaPlayerObserverInterface methods + /// @{ + void onPlaybackStarted(SourceId sourceId) override; + void onPlaybackStopped(SourceId sourceId) override; + void onPlaybackFinished(SourceId sourceId) override; + void onPlaybackError(SourceId sourceId, const avsCommon::utils::mediaPlayer::ErrorType& type, std::string error) + override; + /// @} + +private: + /** + * The different states that a NotificationRenderer may be in. The normal flow of states is: + * IDLE -> RENDERING_PREFERRED -> (if failed, RENDERING_DEFAULT) -> NOTIFYING -> IDLE. + * If @c cancelNotificationRendering() is called during rendering, the state can also transition from + * {RENDERING_PREFERRED|RENDERING_DEFAULT} -> CANCELLING -> NOTIFYING -> IDLE. + */ + enum class State { + /** + * Awaiting a request to render a notification. Transitions to: + * - RENDERING_PREFERRED when a new rendering request is received. + */ + IDLE, + /** + * Rendering the preferred audio asset. Requests to render while already rendering are refused, not queued). + * Transitions to: + * - RENDERING_DEFAULT if rendering the preferred asset fails. + * - CANCELLING if a request is made to cancel rendering. + * - NOTIFYING if rendering the preferred asset completes. + */ + RENDERING_PREFERRED, + /** + * Rendering the default audio asset. Requests to render while already rendering are refused, not queued). + * Transitions to: + * - CANCELLING if a request is made to cancel rendering. + * - NOTIFYING if rendering the default asset completes. + */ + RENDERING_DEFAULT, + /** + * Canceling a request to render a notification. Transitions to: + * - NOTIFYING once cancellation has completed. + */ + CANCELLING, + /** + * Notifying that rendering finished (even if rendering failed or was cancelled). Transitions to: + * - IDLE once callbacks to observers have returned. + */ + NOTIFYING + }; + + /** + * Constructor. + * + * @param mediaPlayer The @c MediaPlayer instance to use to render audio. + */ + NotificationRenderer(std::shared_ptr mediaPlayer); + + /** + * Handle the completion of rendering an audio asset, whether successful or not. + * + * @param sourceId The @c SourceId of the audio that is expected to be playing. + */ + void onRenderingFinished(SourceId sourceId); + + /** + * Set a new state - rejecting invalid state changes. + * + * @param newState The new state to enter. + * @return Whether the new state was accepted. + */ + bool setState(State newState); + + /** + * Set a new state - rejecting invalid state changes. @note Caller must be holdling m_mutex. + * + * @param newState The new state to enter. + * @return Whether the new state was accepted. + */ + bool setStateLocked(State newState); + + /** + * Verify that audio rendering is in progress. + * + * @param caller The name of the calling method (for logging a more useful error) + * @param sourceId The @c SourceId to verify. + * @return Whether the specified @c SourceId matches @c m_sourceId. + */ + bool verifyRenderingLocked(const std::string& caller, SourceId sourceId); + + /// The mediaPlayer with which to render the notification. + std::shared_ptr m_mediaPlayer; + + /// The observers to notify when rendering is finished. Access serialized by @c m_mutex. + std::unordered_set> m_observers; + + /// Mutex to serialize access to various data members. + std::mutex m_mutex; + + /// Used to wake a thread waiting for a state change. + std::condition_variable m_wakeTrigger; + + /// Current state. Access serialized by @c m_mutex. + State m_state; + + /// Factory for creating @c istream instances containing the default audio asset. + std::function()> m_audioFactory; + + /// The id associated with the media that our MediaPlayer is currently handling. + SourceId m_sourceId; + + /// Future used to capture result from std::async() call used if PLAYBACK_PREFERRED fails. + std::future m_renderFallbackFuture; + + /// Friend relationship to allow accessing State to convert it to a string for logging. + friend std::ostream& operator<<(std::ostream& stream, const NotificationRenderer::State state); +}; + +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONRENDERER_H_ diff --git a/CapabilityAgents/Notifications/include/Notifications/NotificationRendererInterface.h b/CapabilityAgents/Notifications/include/Notifications/NotificationRendererInterface.h new file mode 100644 index 0000000000..db24a05793 --- /dev/null +++ b/CapabilityAgents/Notifications/include/Notifications/NotificationRendererInterface.h @@ -0,0 +1,78 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONRENDERERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONRENDERERINTERFACE_H_ + +#include +#include +#include + +#include "NotificationRendererObserverInterface.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { + +/** + * Interface to an object that handles rendering notification audio clips. + */ +class NotificationRendererInterface { +public: + virtual ~NotificationRendererInterface() = default; + + /** + * Add an observer to receive a notifications about rendering notification audio clips. + * + * @param observer The observer to call back. + */ + virtual void addObserver(std::shared_ptr observer) = 0; + + /** + * Remove an observer from the set of observers to receive a notifications about rendering notification audio clips. + * + * @param observer The observer to call back. + */ + virtual void removeObserver(std::shared_ptr observer) = 0; + + /** + * Render (play) a notification audio clip. If the asset at the specified url cannot be played for some reason, + * the default notification audio clip should be played, instead. If renderNotification is called while another + * rendering operation is in progress, this method fails and returns false. + * @note: Calling this method from a NotificationRendererObserverInterface callback will lead to a deadlock. + * + * @param audioFactory A function that produces an audio stream to play if the audio specified by + * @c url can not be played. + * @param url URL of the preferred audio asset to play. + * @return Whether rendering the notification was initiated. + */ + virtual bool renderNotification( + std::function()> audioFactory, + const std::string& url) = 0; + + /** + * Cancel any ongoing rendering of a notification audio clip. Further render requests will be refused until + * an observer callback is made to indicate that rendering has finished (i.e. cancellation is complete). + * + * @return Whether or not the cancellation was allowed. + */ + virtual bool cancelNotificationRendering() = 0; +}; + +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONRENDERERINTERFACE_H_ diff --git a/CapabilityAgents/Notifications/include/Notifications/NotificationRendererObserverInterface.h b/CapabilityAgents/Notifications/include/Notifications/NotificationRendererObserverInterface.h new file mode 100644 index 0000000000..70770ac062 --- /dev/null +++ b/CapabilityAgents/Notifications/include/Notifications/NotificationRendererObserverInterface.h @@ -0,0 +1,40 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONRENDEREROBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONRENDEREROBSERVERINTERFACE_H_ + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { + +/** + * Interface to objects that receive callbacks from an implementation of NotificationRendererInterface. + */ +class NotificationRendererObserverInterface { +public: + virtual ~NotificationRendererObserverInterface() = default; + + /** + * Notify our observer that rendering a notification audio clip has finished. + */ + virtual void onNotificationRenderingFinished() = 0; +}; + +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONRENDEREROBSERVERINTERFACE_H_ diff --git a/CapabilityAgents/Notifications/include/Notifications/NotificationsCapabilityAgent.h b/CapabilityAgents/Notifications/include/Notifications/NotificationsCapabilityAgent.h new file mode 100644 index 0000000000..4f04a92b5c --- /dev/null +++ b/CapabilityAgents/Notifications/include/Notifications/NotificationsCapabilityAgent.h @@ -0,0 +1,342 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONSCAPABILITYAGENT_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONSCAPABILITYAGENT_H_ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "NotificationIndicator.h" +#include "NotificationRendererInterface.h" +#include "NotificationRendererObserverInterface.h" +#include "NotificationsStorageInterface.h" +#include "NotificationsCapabilityAgentState.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { + +/** + * This class implements the @c Notifications capability agent. + * + * @see https://developer.amazon.com/docs/alexa-voice-service/notifications.html + * + * @note For instances of this class to be cleaned up correctly, @c shutdown() must be called. + * @note This class makes use of a global configuration to a database file, meaning that it is best used + * as a singleton. + */ +class NotificationsCapabilityAgent + : public NotificationRendererObserverInterface + , public avsCommon::avs::CapabilityAgent + , public avsCommon::utils::RequiresShutdown + , public registrationManager::CustomerDataHandler + , public std::enable_shared_from_this { +public: + /** + * Creates a new @c NotificationsCapabilityAgent instance. + * + * @param notificationsStorage The storage interface to the NotificationIndicator database. + * @param renderer The instance of the @c NotificationRendererInterface used to play assets associated with + * notifications. + * @param contextManager The AVS Context manager used to generate system context for events. + * @param exceptionSender The object to use for sending AVS Exception messages. + * @param notificationsAudioFactory The audio factory object to produce the default notification sound. + * @param observers The set of observers that will be notified of IndicatorState changes. + * @param dataManager A dataManager object that will track the CustomerDataHandler. + * @return A @c std::shared_ptr to the new @c NotificationsCapabilityAgent instance. + */ + static std::shared_ptr create( + std::shared_ptr notificationsStorage, + std::shared_ptr renderer, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender, + std::shared_ptr notificationsAudioFactory, + std::shared_ptr dataManager); + + /** + * Adds a NotificationsObserver to the set of observers. This observer will be notified when a SetIndicator + * directive arrives. + * + * @param observer The observer to add. + */ + void addObserver(std::shared_ptr observer); + + /** + * Removes a NotificationsObserver from the set of observers. + * + * @param observer The observer to remove. + */ + void removeObserver(std::shared_ptr observer); + + /// @name CapabilityAgent/DirectiveHandlerInterface Functions + /// @{ + void handleDirectiveImmediately(std::shared_ptr directive) override; + void preHandleDirective(std::shared_ptr info) override; + void handleDirective(std::shared_ptr info) override; + void cancelDirective(std::shared_ptr info) override; + avsCommon::avs::DirectiveHandlerConfiguration getConfiguration() const override; + /// @} + + /// @name StateProviderInterface Functions + /// @{ + void provideState(const avsCommon::avs::NamespaceAndName& stateProviderName, unsigned int stateRequestToken) + override; + /// @} + + /// @name NotificationRendererObserverInterface Functions + /// @{ + /** + * This function sets off logic to handle a Notification having been completely rendered. + */ + void onNotificationRenderingFinished() override; + /// @} + + /** + * Clear all notifications saved in the device + */ + void clearData() override; + +private: + /** + * Constructor. + * + * @param notificationsStorage The storage interface to the NotificationIndicator database. + * @param renderer The instance of the @c NotificationRendererInterface used to play assets associated with + * notifications. + * @param contextManager The AVS Context manager used to generate system context for events. + * @param exceptionSender The object to use for sending AVS Exception messages. + * @param notificationsAudioFactory The audio factory object to produce the default notification sound. + * @param observers The set of observers that will be notified of IndicatorState changes. + * @param dataManager A dataManager object that will track the CustomerDataHandler. + */ + NotificationsCapabilityAgent( + std::shared_ptr notificationsStorage, + std::shared_ptr renderer, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender, + std::shared_ptr notificationsAudioFactory, + std::shared_ptr dataManager); + + /** + * Utility to set some member variables and setup the database. + * Sets m_isEnabled to true if there are NotificationIndicators stored in the database. + * Creates the NotificationIndicator database if it doesn't exist, else opens it. + */ + bool init(); + + /** + * This method deserializes a @c Directive's payload into a @c rapidjson::Document. + * + * @param info The @c DirectiveInfo to read the payload string from. + * @param[out] document The @c rapidjson::Document to parse the payload into. + * @return @c true if parsing was successful, else @c false. + */ + bool parseDirectivePayload(std::shared_ptr info, rapidjson::Document* document); + + /** + * This method handles a SetIndicator directive. + * + * @param info The @c DirectiveInfo to read the payload string from. + */ + void handleSetIndicatorDirective(std::shared_ptr info); + + /** + * This method handles a ClearIndicator directive. + * + * @param info The @c DirectiveInfo to read the payload string from. + */ + void handleClearIndicatorDirective(std::shared_ptr info); + + /// @name RequiresShutdown Methods + /// @{ + void doShutdown() override; + /// @} + + /** + * Cleans up the Directive that has been completely handled. + * + * @param info The directive to clean up. + */ + void setHandlingCompleted(std::shared_ptr info); + + /** + * @name Executor Thread Methods + * + * These methods (and only these methods) are called by @c m_executor on a single worker thread. All other + * methods in this class can be called asynchronously, and pass data to the @c Executor thread through parameters + * to lambda functions. No additional synchronization is needed. + */ + /// @{ + + /** + * Consolidates code for attempting to render a notification. + * This method checks the playAudioIndicator field of the NotificationIndicator and, if it is set, + * changes the State to PLAYING, updates m_assetId, and calls m_renderer->renderNotification(). + * + * @param notificationIndicator The notificationIndicator to attempt to render. + */ + void executeRenderNotification(const NotificationIndicator& notificationIndicator); + + /** + * Consolidates code for getting and setting IndicatorState. + * This method gets the current IndicatorState and compares it with the persistVisualIndicator field + * of the next NotificationIndicator. If they differ, IndicatorState is updated and observers are notified. + * + * @param nextNotificationIndicator The NotificationIndicator to check the current IndicatorState against. + */ + void executePossibleIndicatorStateChange(const avsCommon::avs::IndicatorState& nextIndicatorState); + + /** + * Sets the state of the NotificationsCapabilityAgent. All state changes should go through this method. + * + * @param newState The state to transition to. + */ + void executeSetState(NotificationsCapabilityAgentState newState); + + /** + * Provides relevant state. Called when m_isEnabled or the current IndicatorState changes. + * + * @param sendToken flag indicating whether @c stateRequestToken contains a valid token which should be passed + * along to @c ContextManager. This flag defaults to @c false. + * @param stateRequestToken The token @c ContextManager passed to the @c provideState() call, which will be passed + * along to the ContextManager::setState() call. This parameter is not used if @c sendToken is @c false. + */ + void executeProvideState(bool sendToken = false, unsigned int stateRequestToken = 0); + + /** + * Notifies NotificationObservers of the stored IndicatorState. + * + * @param state The IndicatorState that warrants notification. + */ + void notifyObservers(avsCommon::avs::IndicatorState state); + + /** + * Handles necessary start-up behavior such as the initial observer notify() of the current indicator state + * and the playing of any remaining NotificationIndicators. + */ + void executeInit(); + + /** + * Delegates to the correct executePlayFinishedQueued() method based on queue size. + */ + void executeOnPlayFinished(); + + /** + * @name Situation methods. + * + * These methods deal with different situations that may arise during the lifetime of a + * NotificationsCapabilityAgent. They should all run on an executor thread and account for any possible State. + */ + /// @{ + + /** + * Situation: On start-up, the NotificationIndicator queue may not be empty. The next NotificationIndicator + * should play and the IndicatorState should be appropriately set. + */ + void executeStartQueueNotEmpty(); + + /** + * Situation: A SetIndicator directive came down. This should be called from handleSetIndicatorDirective(). + * + * @param nextNotificationIndicator The next indicator to enqueue and process. + */ + void executeSetIndicator( + const NotificationIndicator& nextNotificationIndicator, + std::shared_ptr info); + + /** + * Situation: A ClearIndicator directive came down. This should be called from handleClearIndicatorDirective(). + */ + void executeClearIndicator(std::shared_ptr info); + + /** + * Situation: The renderer has completed rendering a Notification and the queue is empty. + */ + void executePlayFinishedZeroQueued(); + + /** + * Situation: The renderer has completed rendering a Notification and the queue still has one NotificationIndicator + * in it. Because items are popped from the queue only after processing, this means that the play that just finished + * corresponds to the item still in the queue. It should be popped with a state transition to IDLE. + */ + void executePlayFinishedOneQueued(); + + /** + * Situation: The renderer has completed rendering a Notification and the queue has more than one + * NotificationIndicator left in it. + */ + void executePlayFinishedMultipleQueued(); + + /** + * Situation: The NotificationsCapabilityAgent needs to clean up and shutdown. + */ + void executeShutdown(); + + /// @} + /// @} + + /// Stores notification indicators in the order they are received and the visual indicator state. + std::shared_ptr m_notificationsStorage; + + /// The @c ContextManager that needs to be updated of the state. + std::shared_ptr m_contextManager; + + /// NotificationRendererInterface instance to play audio indicator. + std::shared_ptr m_renderer; + + /// The audio factory to produce the default notification sound. + std::shared_ptr m_notificationsAudioFactory; + + /// Holds the current assetId to check against incoming SetIndicator directives. + std::string m_currentAssetId; + + /// If this flag is true, there are pending notifications that the user has not opened. + /// Changes to this member variable should be followed by provideState() or executeProvideState(). + bool m_isEnabled; + + /// Set of observers that may be interested in notification indicators. + std::unordered_set> m_observers; + + NotificationsCapabilityAgentState m_currentState; + + /** + * @c Executor which queues up operations from asynchronous API calls. + * + * @note This declaration needs to come *after* the Executor Thread Variables above so that the thread shuts down + * before the Executor Thread Variables are destroyed. + */ + avsCommon::utils::threading::Executor m_executor; + + /// A condition variable to notify doShutdown() that the state change to SHUTDOWN has completed successfully. + std::condition_variable m_shutdownTrigger; + + /// Serialize access to m_shutdownTrigger. + std::mutex m_shutdownMutex; +}; + +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONSCAPABILITYAGENT_H_ diff --git a/CapabilityAgents/Notifications/include/Notifications/NotificationsCapabilityAgentState.h b/CapabilityAgents/Notifications/include/Notifications/NotificationsCapabilityAgentState.h new file mode 100644 index 0000000000..062c5ad3c9 --- /dev/null +++ b/CapabilityAgents/Notifications/include/Notifications/NotificationsCapabilityAgentState.h @@ -0,0 +1,63 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONSCAPABILITYAGENTSTATE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONSCAPABILITYAGENTSTATE_H_ + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { + +#include +#include + +enum class NotificationsCapabilityAgentState { + // The capability agent is awaiting directives. + IDLE, + // A call to renderNotification() has been made, but the notification has not yet finished rendering. + PLAYING, + // A call to cancelNotificationRendering() has been made, but the notification has not yet been cancelled. + CANCELING_PLAY, + // The capability agent is shutting down. + SHUTTING_DOWN, + // The capability agent has finished shutting down. + SHUTDOWN +}; + +inline std::string stateToString(NotificationsCapabilityAgentState state) { + switch (state) { + case NotificationsCapabilityAgentState::IDLE: + return "IDLE"; + case NotificationsCapabilityAgentState::PLAYING: + return "PLAYING"; + case NotificationsCapabilityAgentState::CANCELING_PLAY: + return "CANCELING_PLAY"; + case NotificationsCapabilityAgentState::SHUTTING_DOWN: + return "SHUTTING_DOWN"; + case NotificationsCapabilityAgentState::SHUTDOWN: + return "SHUTDOWN"; + } + return "Unknown NotificationsCapabilityAgent State"; +} + +inline std::ostream& operator<<(std::ostream& stream, const NotificationsCapabilityAgentState& state) { + return stream << stateToString(state); +} + +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONSCAPABILITYAGENTSTATE_H_ diff --git a/CapabilityAgents/Notifications/include/Notifications/NotificationsStorageInterface.h b/CapabilityAgents/Notifications/include/Notifications/NotificationsStorageInterface.h new file mode 100644 index 0000000000..11f9fd2a41 --- /dev/null +++ b/CapabilityAgents/Notifications/include/Notifications/NotificationsStorageInterface.h @@ -0,0 +1,132 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONSSTORAGEINTERFACE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONSSTORAGEINTERFACE_H_ + +#include +#include "NotificationIndicator.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { + +/** + * This class implements an interface for interacting with a Notifications database. + * + * Users should be notified of their pending notifications in the order that SetIndicator directives are received. + * NotificationIndicators are therefore stored in a queue and should be persisted across system shutdown. + * + * This storage is also responsible for maintaining IndicatorState as defined in IndicatorState.h. + */ +class NotificationsStorageInterface { +public: + /// Some useful shorthand. + using IndicatorState = avsCommon::avs::IndicatorState; + + virtual ~NotificationsStorageInterface() = default; + + /** + * Creates a new database. + * If a database is already being handled by this object or there is another internal error, then this function + * returns false. + * + * @return @c true If the database is created ok, or @c false if a database is already being handled by this object + * or there is a problem creating the database. + */ + virtual bool createDatabase() = 0; + + /** + * Open an existing database. If this object is already managing an open database, or there is a problem opening + * the database, this function returns false. + * + * @return @c true If the database is opened ok, @c false if this object is already managing an open database, or if + * there is another internal reason the database could not be opened. + */ + virtual bool open() = 0; + + /** + * Close the currently open database, if one is open. + */ + virtual void close() = 0; + + /** + * Enqueues a single @c NotificationIndicator in the database. + * + * @param notificationIndicator The @c NotificationIndicator to enqueue. + * @return Whether the @c NotificationIndicator was successfully enqueued. + */ + virtual bool enqueue(const NotificationIndicator& notificationIndicator) = 0; + + /** + * Dequeues the next @c NotificationIndicator in the database. + * + * @return Whether the dequeue operation was successful. + */ + virtual bool dequeue() = 0; + + /** + * Peeks at the next @c NotificationIndicator in the database. + * + * @param [out] notificationIndicator A pointer to receive the peeked @c NotificationIndicator + * @return Whether the peek operation was successful. + */ + virtual bool peek(NotificationIndicator* notificationIndicator) = 0; + + /** + * Stores the current @c IndicatorState. + * + * @return Whether the store operation was successful. + */ + virtual bool setIndicatorState(IndicatorState state) = 0; + + /** + * Retrieves the currently stored @c IndicatorState. + * + * @param [out] state A pointer to receive the currently stored @c IndicatorState + * @return Whether the get operation was successful. + * @note The default IndicatorState for a new database is IndicatorState::OFF. + */ + virtual bool getIndicatorState(IndicatorState* state) = 0; + + /** + * Checks if there are any NotificationIndicator records in the database. + * + * @param [out] empty Whether there were any records in the database. + * @return Whether the operation was successful. + */ + virtual bool checkForEmptyQueue(bool* empty) = 0; + + /** + * Clears the database of all @c NotificationIndicators. + * + * @return Whether the clear operation was successful. + */ + virtual bool clearNotificationIndicators() = 0; + + /** + * Gets the size of the queue (number of records in the queue table). + * + * @param [out] size A pointer to receive the calculated size. + * @return Whether the size operation was successful. + */ + virtual bool getQueueSize(int* size) = 0; +}; + +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_NOTIFICATIONSSTORAGEINTERFACE_H_ diff --git a/CapabilityAgents/Notifications/include/Notifications/SQLiteNotificationsStorage.h b/CapabilityAgents/Notifications/include/Notifications/SQLiteNotificationsStorage.h new file mode 100644 index 0000000000..75d91ca07d --- /dev/null +++ b/CapabilityAgents/Notifications/include/Notifications/SQLiteNotificationsStorage.h @@ -0,0 +1,95 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_SQLITENOTIFICATIONSSTORAGE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_SQLITENOTIFICATIONSSTORAGE_H_ + +#include "Notifications/NotificationsStorageInterface.h" + +#include + +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { + +/** + * An implementation that allows us to store NotificationIndicators using SQLite. + * + */ +class SQLiteNotificationsStorage : public NotificationsStorageInterface { +public: + /** + * Factory method for creating a storage object for Notifications based on an SQLite database. + * + * @param configurationRoot The global config object. + * @return Pointer to the SQLiteMessagetStorge object, nullptr if there's an error creating it. + */ + static std::unique_ptr create( + const avsCommon::utils::configuration::ConfigurationNode& configurationRoot); + + /** + * Constructor. + * + * @param dbFilePath The location of the SQLite database file. + */ + SQLiteNotificationsStorage(const std::string& databaseFilePath); + + ~SQLiteNotificationsStorage(); + + bool createDatabase() override; + + bool open() override; + + void close() override; + + bool enqueue(const NotificationIndicator& notificationIndicator) override; + + bool dequeue() override; + + bool peek(NotificationIndicator* notificationIndicator) override; + + bool setIndicatorState(IndicatorState state) override; + + bool getIndicatorState(IndicatorState* state) override; + + bool checkForEmptyQueue(bool* empty) override; + + bool clearNotificationIndicators() override; + + bool getQueueSize(int* size) override; + +private: + /** + * Utility function to get the next record in the database. This method is not thread-safe. + * @param notificationIndicator A pointer to hold the next notificationIndicator in the database. + * @return Whether the getNext operation was successful. + */ + bool getNextNotificationIndicatorLocked(NotificationIndicator* notificationIndicator); + + /// A mutex to protect database access. + std::mutex m_databaseMutex; + + /// The underlying database class. + alexaClientSDK::storage::sqliteStorage::SQLiteDatabase m_database; +}; + +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_NOTIFICATIONS_INCLUDE_NOTIFICATIONS_SQLITENOTIFICATIONSSTORAGE_H_ diff --git a/CapabilityAgents/Notifications/src/CMakeLists.txt b/CapabilityAgents/Notifications/src/CMakeLists.txt new file mode 100644 index 0000000000..4f1f7d10d1 --- /dev/null +++ b/CapabilityAgents/Notifications/src/CMakeLists.txt @@ -0,0 +1,18 @@ +add_definitions("-DACSDK_LOG_MODULE=Notifications") + +add_library(Notifications SHARED + NotificationIndicator.cpp + NotificationRenderer.cpp + NotificationsCapabilityAgent.cpp + SQLiteNotificationsStorage.cpp) + +target_include_directories(Notifications PUBLIC + "${AudioResources_SOURCE_DIR}/include" + "${Notifications_SOURCE_DIR}/include" + "${SQLiteStorage_SOURCE_DIR}/include" + "${RegistrationManager_SOURCE_DIR}/include") + +target_link_libraries(Notifications AudioResources AVSCommon SQLiteStorage RegistrationManager) + +# install target +asdk_install() \ No newline at end of file diff --git a/CapabilityAgents/Notifications/src/NotificationIndicator.cpp b/CapabilityAgents/Notifications/src/NotificationIndicator.cpp new file mode 100644 index 0000000000..eb51e0ff78 --- /dev/null +++ b/CapabilityAgents/Notifications/src/NotificationIndicator.cpp @@ -0,0 +1,40 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { + +NotificationIndicator::NotificationIndicator() : + persistVisualIndicator{false}, + playAudioIndicator{false}, + asset{/*.assetId =*/"", /*.url =*/""} { +} + +NotificationIndicator::NotificationIndicator( + bool persistVisualIndicator, + bool playAudioIndicator, + const std::string& assetId, + const std::string& url) : + persistVisualIndicator{persistVisualIndicator}, + playAudioIndicator{playAudioIndicator}, + asset{.assetId = assetId, .url = url} { +} + +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Notifications/src/NotificationRenderer.cpp b/CapabilityAgents/Notifications/src/NotificationRenderer.cpp new file mode 100644 index 0000000000..25f913fd0b --- /dev/null +++ b/CapabilityAgents/Notifications/src/NotificationRenderer.cpp @@ -0,0 +1,283 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include + +#include "Notifications/NotificationRenderer.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { + +using namespace avsCommon::utils::mediaPlayer; + +/// String to identify log entries originating from this file. +static const std::string TAG("NotificationsRenderer"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/** + * Emit a NotificationRenderer::State value to a stream. + * + * @param stream The stream to emit the value to. + * @param state The state to emit. + * @return The stream that was emitted to, allowing chained stream operators. + */ +std::ostream& operator<<(std::ostream& stream, const NotificationRenderer::State state) { + switch (state) { + case NotificationRenderer::State::IDLE: + stream << "IDLE"; + return stream; + case NotificationRenderer::State::RENDERING_PREFERRED: + stream << "RENDERING_PREFERRED"; + return stream; + case NotificationRenderer::State::RENDERING_DEFAULT: + stream << "RENDERING_DEFAULT"; + return stream; + case NotificationRenderer::State::CANCELLING: + stream << "CANCELLING"; + return stream; + case NotificationRenderer::State::NOTIFYING: + stream << "NOTIFYING"; + return stream; + } + stream << "UNKNOWN: " << static_cast(state); + return stream; +} + +std::shared_ptr NotificationRenderer::create(std::shared_ptr mediaPlayer) { + ACSDK_DEBUG5(LX("create")); + if (!mediaPlayer) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullMediaPlayer")); + return nullptr; + } + std::shared_ptr result(new NotificationRenderer(mediaPlayer)); + mediaPlayer->setObserver(result); + return result; +} + +void NotificationRenderer::addObserver(std::shared_ptr observer) { + ACSDK_DEBUG5(LX("addObserver")); + std::lock_guard lock(m_mutex); + m_observers.insert(observer); +} + +void NotificationRenderer::removeObserver(std::shared_ptr observer) { + ACSDK_DEBUG5(LX("removeObserver")); + std::lock_guard lock(m_mutex); + m_observers.erase(observer); +} + +bool NotificationRenderer::renderNotification( + std::function()> audioFactory, + const std::string& url) { + ACSDK_DEBUG5(LX("renderNotification")); + + if (!audioFactory) { + ACSDK_ERROR(LX("renderNotificationFailed").d("reason", "nullAudioFactory")); + return false; + } + + // There is a small window between the return on onNotificationRenderingFinished() and the transition + // back to the IDLE state. If a call to renderNotification is made in that window it will needlessly + // fail. We check for that case here and wait if necessary. + { + std::unique_lock lock(m_mutex); + m_wakeTrigger.wait(lock, [this]() { return m_state != State::NOTIFYING; }); + } + + // First attempt to render the preferred audio asset. + if (!setState(State::RENDERING_PREFERRED)) { + ACSDK_ERROR(LX("renderNotificationFailed").d("reason", "setState(RENDERING_PREFERRED) failed")); + return false; + } + + m_audioFactory = audioFactory; + m_sourceId = m_mediaPlayer->setSource(url); + if (m_sourceId != MediaPlayerInterface::ERROR && m_mediaPlayer->play(m_sourceId)) { + ACSDK_DEBUG5(LX("renderNotificationPreferredSuccess").d("sourceId", m_sourceId)); + return true; + } + ACSDK_ERROR(LX("playPreferredFailed")); + + // If unable to start rendering the preferred asset, render the default asset, instead. + if (setState(State::RENDERING_DEFAULT)) { + m_sourceId = m_mediaPlayer->setSource(m_audioFactory(), false); + if (m_sourceId != MediaPlayerInterface::ERROR && m_mediaPlayer->play(m_sourceId)) { + ACSDK_DEBUG5(LX("renderNotificationDefaultSuccess").d("sourceId", m_sourceId)); + return true; + } + ACSDK_ERROR(LX("playDefaultFailed")); + } + + m_sourceId = MediaPlayerInterface::ERROR; + m_audioFactory = nullptr; + setState(State::IDLE); + return false; +} + +bool NotificationRenderer::cancelNotificationRendering() { + ACSDK_DEBUG5(LX("cancelNotificationRendering")); + if (!setState(State::CANCELLING)) { + ACSDK_DEBUG5(LX("cancelNotificationRenderingFailed").d("reason", "setState(CANCELLING) failed")); + return false; + } + if (!m_mediaPlayer->stop(m_sourceId)) { + ACSDK_ERROR(LX("cancelNotificationRenderingFailed").d("reason", "stopFailed")); + // The state has already transitioned to cancelling, so there is not much to do here + // but wait for rendering the audio to complete. Ignore the error and return true. + } + return true; +} + +void NotificationRenderer::onPlaybackStarted(SourceId sourceId) { + ACSDK_DEBUG5(LX("onPlaybackStarted").d("sourceId", sourceId)); + if (sourceId != m_sourceId) { + ACSDK_ERROR(LX("onPlaybackStartedFailed").d("reason", "unexpectedSourceId").d("expected", m_sourceId)); + return; + } + if (State::IDLE == m_state || State::NOTIFYING == m_state) { + ACSDK_ERROR(LX("onPlaybackStartedFailed").d("reason", "unexpectedState").d("state", m_state)); + } +} + +void NotificationRenderer::onPlaybackStopped(SourceId sourceId) { + ACSDK_DEBUG5(LX("onPlaybackStopped").d("sourceId", sourceId)); + if (sourceId != m_sourceId) { + ACSDK_ERROR(LX("onPlaybackStoppedFailed").d("reason", "unexpectedSourceId").d("expected", m_sourceId)); + return; + } + onRenderingFinished(sourceId); +} + +void NotificationRenderer::onPlaybackFinished(SourceId sourceId) { + ACSDK_DEBUG5(LX("onPlaybackFinished").d("sourceId", sourceId)); + if (sourceId != m_sourceId) { + ACSDK_ERROR(LX("onPlaybackFinishedFailed").d("reason", "unexpectedSourceId").d("expected", m_sourceId)); + return; + } + onRenderingFinished(sourceId); +} + +void NotificationRenderer::onPlaybackError(SourceId sourceId, const ErrorType& type, std::string error) { + ACSDK_DEBUG5(LX("onPlaybackError").d("sourceId", sourceId).d("type", type).d("error", error)); + + if (sourceId != m_sourceId) { + ACSDK_ERROR(LX("onPlaybackErrorFailed").d("reason", "unexpectedSourceId").d("expected", m_sourceId)); + return; + } + + { + std::unique_lock lock(m_mutex); + switch (m_state) { + case State::IDLE: + case State::NOTIFYING: + ACSDK_ERROR(LX("onPlaybackErrorFailed").d("reason", "unexpectedState")); + return; + case State::RENDERING_DEFAULT: + case State::CANCELLING: + lock.unlock(); + onRenderingFinished(sourceId); + return; + case State::RENDERING_PREFERRED: + // Rendering the preferred audio asset failed. Render the default audio asset, instead. + if (!setStateLocked(State::RENDERING_DEFAULT)) { + return; + } + break; + } + } + + // Calling m_mediaPlayer->setSource() or m_mediaPlayer->play() will deadlock if called from a + // MediaPlayerObserverInterface callback. We need a separate thread to kick off rendering the default audio. + m_renderFallbackFuture = std::async(std::launch::async, [this, sourceId]() { + m_sourceId = m_mediaPlayer->setSource(m_audioFactory(), false); + if (m_sourceId != MediaPlayerInterface::ERROR && m_mediaPlayer->play(m_sourceId)) { + return; + } + ACSDK_ERROR(LX("playDefaultAudioFailed")); + onRenderingFinished(sourceId); + }); +} + +NotificationRenderer::NotificationRenderer(std::shared_ptr mediaPlayer) : + m_mediaPlayer{mediaPlayer}, + m_state{State::IDLE}, + m_sourceId{MediaPlayerInterface::ERROR} { +} + +void NotificationRenderer::onRenderingFinished(SourceId sourceId) { + std::unordered_set> localObservers; + { + std::lock_guard lock(m_mutex); + localObservers = m_observers; + if (!setStateLocked(State::NOTIFYING)) { + return; + } + } + for (auto observer : localObservers) { + observer->onNotificationRenderingFinished(); + } + setState(State::IDLE); +} + +bool NotificationRenderer::setState(State newState) { + std::lock_guard lock(m_mutex); + return setStateLocked(newState); +} + +bool NotificationRenderer::setStateLocked(State newState) { + bool result = true; + if (newState == m_state) { + result = false; + } else { + switch (newState) { + case State::IDLE: + result = (State::RENDERING_PREFERRED != m_state) && (State::RENDERING_DEFAULT != m_state); + break; + case State::RENDERING_PREFERRED: + result = State::IDLE == m_state; + break; + case State::RENDERING_DEFAULT: + result = State::RENDERING_PREFERRED == m_state; + break; + case State::CANCELLING: + result = (State::RENDERING_DEFAULT == m_state) || (State::RENDERING_PREFERRED == m_state); + break; + case State::NOTIFYING: + result = m_state != State::IDLE; + break; + } + } + if (result) { + ACSDK_DEBUG5(LX("setStateSuccess").d("state", m_state).d("newState", newState)); + m_state = newState; + m_wakeTrigger.notify_all(); + } else { + ACSDK_ERROR(LX("setStateFailed").d("state", m_state).d("newState", newState)); + } + return result; +} + +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Notifications/src/NotificationsCapabilityAgent.cpp b/CapabilityAgents/Notifications/src/NotificationsCapabilityAgent.cpp new file mode 100644 index 0000000000..5cd1fcdb1e --- /dev/null +++ b/CapabilityAgents/Notifications/src/NotificationsCapabilityAgent.cpp @@ -0,0 +1,751 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "Notifications/NotificationsCapabilityAgent.h" + +#include +#include +#include + +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { + +using namespace avsCommon::avs; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::utils::configuration; +using namespace avsCommon::utils::json; +using namespace avsCommon::utils::logger; + +/// String to identify log entries originating from this file. +static const std::string TAG("NotificationsCapabilityAgent"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/// The namespace for this capability agent. +static const std::string NAMESPACE = "Notifications"; + +/// The @c NotificationsCapabilityAgent context state signature. +static const NamespaceAndName INDICATOR_STATE_CONTEXT_KEY{NAMESPACE, "IndicatorState"}; + +/// The @c SetIndicator directive signature. +static const NamespaceAndName SET_INDICATOR{NAMESPACE, "SetIndicator"}; + +/// The @c SetIndicator directive signature. +static const NamespaceAndName CLEAR_INDICATOR{NAMESPACE, "ClearIndicator"}; + +/// Keys for directive payload values. +static const std::string PERSIST_VISUAL_INDICATOR_KEY = "persistVisualIndicator"; +static const std::string PLAY_AUDIO_INDICATOR_KEY = "playAudioIndicator"; +static const std::string ASSET_KEY = "asset"; +static const std::string ASSET_ID_KEY = "assetId"; +static const std::string ASSET_URL_KEY = "url"; + +/// The key used to provide the "isEnabled" property in the state payload. +static const char IS_ENABLED_KEY[] = "isEnabled"; + +/// The key used to provide the "isVisualIndicatorPersisted" property in the state payload. +static const char IS_VISUAL_INDICATOR_PERSISTED_KEY[] = "isVisualIndicatorPersisted"; + +static const std::chrono::milliseconds SHUTDOWN_TIMEOUT{500}; + +std::shared_ptr NotificationsCapabilityAgent::create( + std::shared_ptr notificationsStorage, + std::shared_ptr renderer, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender, + std::shared_ptr notificationsAudioFactory, + std::shared_ptr dataManager) { + if (nullptr == notificationsStorage) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullNotificationsStorage")); + return nullptr; + } + if (nullptr == renderer) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullRenderer")); + return nullptr; + } + if (nullptr == contextManager) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullContextManager")); + return nullptr; + } + if (nullptr == exceptionSender) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullExceptionSender")); + return nullptr; + } + if (nullptr == notificationsAudioFactory) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullNotificationsAudioFactory")); + return nullptr; + } + if (nullptr == dataManager) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullDataManager")); + return nullptr; + } + + auto notificationsCapabilityAgent = std::shared_ptr(new NotificationsCapabilityAgent( + notificationsStorage, renderer, contextManager, exceptionSender, notificationsAudioFactory, dataManager)); + + if (!notificationsCapabilityAgent->init()) { + ACSDK_ERROR(LX("createFailed").d("reason", "initFailed")); + return nullptr; + } + return notificationsCapabilityAgent; +} + +NotificationsCapabilityAgent::NotificationsCapabilityAgent( + std::shared_ptr notificationsStorage, + std::shared_ptr renderer, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender, + std::shared_ptr notificationsAudioFactory, + std::shared_ptr dataManager) : + CapabilityAgent{NAMESPACE, exceptionSender}, + RequiresShutdown{"NotificationsCapabilityAgent"}, + CustomerDataHandler{dataManager}, + m_notificationsStorage{notificationsStorage}, + m_contextManager{contextManager}, + m_renderer{renderer}, + m_notificationsAudioFactory{notificationsAudioFactory}, + m_isEnabled{false}, + m_currentState{NotificationsCapabilityAgentState::IDLE} { +} + +bool NotificationsCapabilityAgent::init() { + ACSDK_DEBUG5(LX(__func__)); + + m_renderer->addObserver(shared_from_this()); + m_contextManager->setStateProvider(INDICATOR_STATE_CONTEXT_KEY, shared_from_this()); + + if (!m_notificationsStorage->open()) { + ACSDK_INFO(LX(__func__).m("database file does not exist. Creating.")); + if (!m_notificationsStorage->createDatabase()) { + ACSDK_ERROR(LX("initFailed").d("reason", "NotificationIndicatorDatabaseCreationFailed")); + return false; + } + } + + m_executor.submit([this] { executeInit(); }); + + return true; +} + +void NotificationsCapabilityAgent::executeInit() { + ACSDK_DEBUG5(LX(__func__)); + + IndicatorState currentIndicatorState = IndicatorState::OFF; + + if (!m_notificationsStorage->getIndicatorState(¤tIndicatorState)) { + ACSDK_ERROR(LX("executeInitFailed").d("reason", "getIndicatorStateFailed")); + return; + } + notifyObservers(currentIndicatorState); + + int queueSize = 0; + if (!m_notificationsStorage->getQueueSize(&queueSize)) { + ACSDK_ERROR(LX("executeInitFailed").d("reason", "getQueueSizeFailed")); + return; + } + + m_isEnabled = (queueSize > 0); + // relevant state has been updated here (m_isEnabled and currentIndicatorState) + executeProvideState(); + + if (queueSize > 0) { + ACSDK_DEBUG(LX(__func__).d("queueSize", queueSize).m("NotificationIndicator queue wasn't empty on startup")); + executeStartQueueNotEmpty(); + } +} + +void NotificationsCapabilityAgent::notifyObservers(IndicatorState state) { + ACSDK_DEBUG(LX(__func__).d("indicatorState", indicatorStateToInt(state))); + for (const auto& observer : m_observers) { + observer->onSetIndicator(state); + } +} + +void NotificationsCapabilityAgent::provideState( + const NamespaceAndName& stateProviderName, + unsigned int stateRequestToken) { + ACSDK_DEBUG(LX(__func__).d("stateRequestToken", stateRequestToken)); + m_executor.submit([this, stateRequestToken] { executeProvideState(true, stateRequestToken); }); +} + +void NotificationsCapabilityAgent::addObserver( + std::shared_ptr observer) { + ACSDK_DEBUG5(LX(__func__)); + if (!observer) { + ACSDK_ERROR(LX(__func__).m("Observer is null.")); + return; + } + m_executor.submit([this, observer] { + if (!m_observers.insert(observer).second) { + ACSDK_ERROR(LX(__func__).m("Duplicate observer.")); + } + IndicatorState currentIndicatorState = IndicatorState::OFF; + + if (!m_notificationsStorage->getIndicatorState(¤tIndicatorState)) { + ACSDK_ERROR( + LX("addObserverFailed").d("reason", "getIndicatorStateFailed, could not notify newly added observer")); + return; + } + observer->onSetIndicator(currentIndicatorState); + }); +} + +void NotificationsCapabilityAgent::removeObserver( + std::shared_ptr observer) { + if (!observer) { + ACSDK_ERROR(LX("removeObserverFailed").d("reason", "nullObserver")); + return; + } + m_executor.submit([this, observer]() { + if (!m_observers.erase(observer)) { + ACSDK_WARN(LX("removeObserverFailed").m("Failed to erase observer")); + } + }); +} + +void NotificationsCapabilityAgent::handleDirectiveImmediately(std::shared_ptr directive) { + handleDirective(std::make_shared(directive, nullptr)); +} + +void NotificationsCapabilityAgent::preHandleDirective(std::shared_ptr info) { +} + +void NotificationsCapabilityAgent::handleDirective(std::shared_ptr info) { + ACSDK_DEBUG( + LX("handleDirective").d("name", info->directive->getName()).d("messageId", info->directive->getMessageId())); + if (!info) { + ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "nullDirectiveInfo")); + return; + } + if (info->directive->getName() == SET_INDICATOR.name) { + handleSetIndicatorDirective(info); + } else if (info->directive->getName() == CLEAR_INDICATOR.name) { + handleClearIndicatorDirective(info); + } else { + sendExceptionEncounteredAndReportFailed( + info, + "unexpected directive " + info->directive->getNamespace() + ":" + info->directive->getName(), + ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED); + ACSDK_ERROR(LX("handleDirectiveFailed") + .d("reason", "unknownDirective") + .d("namespace", info->directive->getNamespace()) + .d("name", info->directive->getName())); + } +} + +void NotificationsCapabilityAgent::cancelDirective(std::shared_ptr info) { + ACSDK_DEBUG5(LX("cancelDirective").d("name", info->directive->getName())); + removeDirective(info->directive->getMessageId()); +} + +void NotificationsCapabilityAgent::handleSetIndicatorDirective(std::shared_ptr info) { + rapidjson::Document payload; + if (!parseDirectivePayload(info, &payload)) { + ACSDK_ERROR(LX("handleSetIndicatorDirectiveFailed").d("reason", "could not parse directive payload")); + sendExceptionEncounteredAndReportFailed(info, "failed to parse directive"); + return; + } + + // extract all fields from the payload to load up a NotificationIndicator + + bool persistVisualIndicator = false; + if (!jsonUtils::retrieveValue(payload, PERSIST_VISUAL_INDICATOR_KEY, &persistVisualIndicator)) { + ACSDK_ERROR(LX("handleSetIndicatorDirectiveFailed") + .d("reason", "payload missing persistVisualIndicator") + .d("messageId", info->directive->getMessageId())); + sendExceptionEncounteredAndReportFailed(info, "missing persistVisualIndicator"); + return; + } + + bool playAudioIndicator = false; + if (!jsonUtils::retrieveValue(payload, PLAY_AUDIO_INDICATOR_KEY, &playAudioIndicator)) { + ACSDK_ERROR(LX("handleSetIndicatorDirectiveFailed") + .d("reason", "payload missing playAudioIndicator") + .d("messageId", info->directive->getMessageId())); + sendExceptionEncounteredAndReportFailed(info, "missing playAudioIndicator"); + return; + } + + std::string assetId; + std::string url; + + if (playAudioIndicator) { + rapidjson::Value::ConstMemberIterator assetJson; + if (!jsonUtils::findNode(payload, ASSET_KEY, &assetJson)) { + ACSDK_ERROR(LX("handleSetIndicatorDirectiveFailed") + .d("reason", "payload missing asset") + .d("messageId", info->directive->getMessageId())); + sendExceptionEncounteredAndReportFailed(info, "missing asset"); + return; + } + + if (!jsonUtils::retrieveValue(assetJson->value, ASSET_ID_KEY, &assetId)) { + ACSDK_ERROR(LX("handleSetIndicatorDirectiveFailed") + .d("reason", "payload missing assetId") + .d("messageId", info->directive->getMessageId())); + sendExceptionEncounteredAndReportFailed(info, "missing assetId"); + return; + } + + if (!jsonUtils::retrieveValue(assetJson->value, ASSET_URL_KEY, &url)) { + ACSDK_ERROR(LX("handleSetIndicatorDirectiveFailed") + .d("reason", "payload missing url") + .d("messageId", info->directive->getMessageId())); + sendExceptionEncounteredAndReportFailed(info, "missing url"); + return; + } + } + + const NotificationIndicator nextNotificationIndicator(persistVisualIndicator, playAudioIndicator, assetId, url); + m_executor.submit( + [this, nextNotificationIndicator, info] { executeSetIndicator(nextNotificationIndicator, info); }); +} + +void NotificationsCapabilityAgent::executeRenderNotification(const NotificationIndicator& notificationIndicator) { + m_currentAssetId = notificationIndicator.asset.assetId; + + executeSetState(NotificationsCapabilityAgentState::PLAYING); + if (notificationIndicator.playAudioIndicator) { + if (!m_renderer->renderNotification( + m_notificationsAudioFactory->notificationDefault(), notificationIndicator.asset.url)) { + ACSDK_ERROR( + LX("executeRenderNotificationFailed").d("reason", "failed to render the notification indicator")); + executeSetState(NotificationsCapabilityAgentState::IDLE); + } + } else { + // this allows a dequeue to happen without waiting for a renderer callback, since we won't see any. + executeOnPlayFinished(); + } +} + +void NotificationsCapabilityAgent::executePossibleIndicatorStateChange(const IndicatorState& nextIndicatorState) { + IndicatorState storedIndicatorState = IndicatorState::OFF; + + if (!m_notificationsStorage->getIndicatorState(&storedIndicatorState)) { + ACSDK_ERROR( + LX("executePossibleIndicatorStateChangeFailed").d("reason", "failed to get stored indicator state")); + return; + } + + if (nextIndicatorState != storedIndicatorState) { + if (!m_notificationsStorage->setIndicatorState(nextIndicatorState)) { + ACSDK_ERROR( + LX("executePossibleIndicatorStateChangeFailed").d("reason", "failed to set new indicator state")); + return; + } + notifyObservers(nextIndicatorState); + executeProvideState(); + } +} + +void NotificationsCapabilityAgent::executeSetIndicator( + const NotificationIndicator& nextNotificationIndicator, + std::shared_ptr info) { + ACSDK_DEBUG5(LX(__func__).d("currentState", m_currentState)); + + switch (m_currentState) { + case NotificationsCapabilityAgentState::PLAYING: + if (nextNotificationIndicator.asset.assetId == m_currentAssetId) { + ACSDK_WARN(LX("ignoringSetIndicatorDirective") + .d("incoming assetId matches current assetId", m_currentAssetId)); + setHandlingCompleted(info); + return; + } + // FALL-THROUGH + case NotificationsCapabilityAgentState::IDLE: + case NotificationsCapabilityAgentState::CANCELING_PLAY: + if (!m_notificationsStorage->enqueue(nextNotificationIndicator)) { + ACSDK_ERROR(LX("executeSetIndicatorFailed").d("reason", "failed to enqueue notification indicator")); + sendExceptionEncounteredAndReportFailed(info, "failed to store notification indicator in the queue"); + return; + } + executePossibleIndicatorStateChange(intToIndicatorState(nextNotificationIndicator.persistVisualIndicator)); + // only want to start playing if current state is idle, this check is needed due to the fall-through above + if (NotificationsCapabilityAgentState::IDLE == m_currentState) { + executeRenderNotification(nextNotificationIndicator); + } + break; + case NotificationsCapabilityAgentState::SHUTTING_DOWN: + if (!m_notificationsStorage->enqueue(nextNotificationIndicator)) { + ACSDK_ERROR(LX("executeSetIndicatorFailed").d("reason", "failed to enqueue notification indicator")); + sendExceptionEncounteredAndReportFailed(info, "failed to store notification indicator in the queue"); + return; + } + ACSDK_WARN(LX(__func__).m( + "notification indicator was queued while NotificationsCapabilityAgent was shutting down")); + break; + case NotificationsCapabilityAgentState::SHUTDOWN: + ACSDK_ERROR(LX(__func__).m("SHUTDOWN while NotificationsCapabilityAgent was shutdown")); + sendExceptionEncounteredAndReportFailed( + info, "failed to execute SetIndicator because NotificationsCapabilityAgent was shutdown"); + return; + } + // if we make it past the switch statement, a NotificationIndicator was successfully enqueued + setHandlingCompleted(info); + + // m_isEnabled needs to be true until we are sure that the user has been properly notified, so despite the + // possibility of immediately calling executeRenderNotification(), m_isEnabled should only be set to false upon + // calling dequeue() + m_isEnabled = true; + executeProvideState(); +} + +void NotificationsCapabilityAgent::handleClearIndicatorDirective(std::shared_ptr info) { + m_executor.submit([this, info] { executeClearIndicator(info); }); +} + +void NotificationsCapabilityAgent::executeClearIndicator(std::shared_ptr info) { + ACSDK_DEBUG5(LX(__func__).d("currentState", m_currentState)); + + int queueSize = 0; + switch (m_currentState) { + case NotificationsCapabilityAgentState::IDLE: + if (!m_notificationsStorage->getQueueSize(&queueSize)) { + ACSDK_ERROR(LX(__func__).m("failed to get queue size")); + } + if (queueSize > 0) { + ACSDK_WARN(LX(__func__).m("expected queue size to be 0 when IDLE")); + } + break; + case NotificationsCapabilityAgentState::PLAYING: + executeSetState(NotificationsCapabilityAgentState::CANCELING_PLAY); + if (!m_renderer->cancelNotificationRendering()) { + ACSDK_ERROR( + LX(__func__).m("failed to cancel notification rendering as a result of ClearIndicator directive")); + } + break; + case NotificationsCapabilityAgentState::CANCELING_PLAY: + break; + case NotificationsCapabilityAgentState::SHUTTING_DOWN: + ACSDK_WARN(LX(__func__).m("attempting to process ClearIndicator directive while shutting down")); + break; + case NotificationsCapabilityAgentState::SHUTDOWN: + ACSDK_WARN(LX(__func__).m("attempting to process ClearIndicator directive while already shutdown")); + sendExceptionEncounteredAndReportFailed( + info, "failed to execute ClearIndicator because NotificationsCapabilityAgent was shutdown"); + return; + } + if (!m_notificationsStorage->clearNotificationIndicators()) { + ACSDK_ERROR(LX("executeClearIndicatorFailed").d("reason", "could not clear storage of NotificationIndicators")); + sendExceptionEncounteredAndReportFailed(info, "failed to clear out NotificationIndicators"); + } + + setHandlingCompleted(info); + m_isEnabled = false; + executePossibleIndicatorStateChange(IndicatorState::OFF); + + executeProvideState(); +} + +void NotificationsCapabilityAgent::executeProvideState(bool sendToken, unsigned int stateRequestToken) { + ACSDK_DEBUG5(LX("executeProvideState").d("sendToken", sendToken).d("stateRequestToken", stateRequestToken)); + auto policy = StateRefreshPolicy::ALWAYS; + + rapidjson::Document state(rapidjson::kObjectType); + state.AddMember(IS_ENABLED_KEY, m_isEnabled, state.GetAllocator()); + + IndicatorState currentIndicatorState = IndicatorState::OFF; + + if (!m_notificationsStorage->getIndicatorState(¤tIndicatorState)) { + ACSDK_ERROR(LX("executeProvideState").d("reason", "getIndicatorStateFailed")); + return; + } + + bool isVisualIndicatorPersisted = (currentIndicatorState == IndicatorState::ON); + + state.AddMember(IS_VISUAL_INDICATOR_PERSISTED_KEY, isVisualIndicatorPersisted, state.GetAllocator()); + + rapidjson::StringBuffer buffer; + rapidjson::Writer writer(buffer); + if (!state.Accept(writer)) { + ACSDK_ERROR(LX("executeProvideState").d("reason", "writerRefusedJsonObject")); + return; + } + + SetStateResult result; + if (sendToken) { + result = m_contextManager->setState(INDICATOR_STATE_CONTEXT_KEY, buffer.GetString(), policy, stateRequestToken); + } else { + result = m_contextManager->setState(INDICATOR_STATE_CONTEXT_KEY, buffer.GetString(), policy); + } + if (result != SetStateResult::SUCCESS) { + ACSDK_ERROR(LX("executeProvideState").d("reason", "contextManagerSetStateFailed")); + } +} + +void NotificationsCapabilityAgent::executeStartQueueNotEmpty() { + ACSDK_DEBUG5(LX(__func__)); + + if (m_currentState != NotificationsCapabilityAgentState::IDLE) { + ACSDK_ERROR(LX("executeStartQueueNotEmptyFailed") + .d("reason", "Expected to be in idle state before attempting to play") + .d("currentState", m_currentState)); + return; + } + + NotificationIndicator nextNotificationIndicator; + + if (!m_notificationsStorage->peek(&nextNotificationIndicator)) { + ACSDK_ERROR( + LX("executeStartQueueNotEmptyFailed").d("reason", "peeking at the next notification in the queue failed.")); + return; + } + executePossibleIndicatorStateChange(intToIndicatorState(nextNotificationIndicator.persistVisualIndicator)); + executeRenderNotification(nextNotificationIndicator); +} + +void NotificationsCapabilityAgent::onNotificationRenderingFinished() { + ACSDK_DEBUG5(LX(__func__).d("currentAssetId", m_currentAssetId)); + m_executor.submit([this] { executeOnPlayFinished(); }); +} + +void NotificationsCapabilityAgent::executeOnPlayFinished() { + int queueSize = 0; + m_currentAssetId = ""; + if (!m_notificationsStorage->getQueueSize(&queueSize)) { + ACSDK_ERROR(LX("executeOnPlayFinishedFailed").d("reason", "failed to retrieve queue size")); + return; + } + + if (queueSize < 0) { + ACSDK_ERROR(LX("executeOnPlayFinishedFailed").d("unexpected queue size", queueSize)); + return; + } else if (0 == queueSize) { + executePlayFinishedZeroQueued(); + } else if (1 == queueSize) { + executePlayFinishedOneQueued(); + } else { + executePlayFinishedMultipleQueued(); + } +} + +void NotificationsCapabilityAgent::executePlayFinishedZeroQueued() { + ACSDK_DEBUG5(LX(__func__).d("currentState", m_currentState)); + switch (m_currentState) { + case NotificationsCapabilityAgentState::IDLE: + case NotificationsCapabilityAgentState::PLAYING: + ACSDK_WARN(LX(__func__).d("notification rendering finished in unexpected state", m_currentState)); + // FALL-THROUGH + case NotificationsCapabilityAgentState::CANCELING_PLAY: + executeSetState(NotificationsCapabilityAgentState::IDLE); + break; + case NotificationsCapabilityAgentState::SHUTTING_DOWN: + executeSetState(NotificationsCapabilityAgentState::SHUTDOWN); + break; + case NotificationsCapabilityAgentState::SHUTDOWN: + ACSDK_WARN( + LX(__func__).m("notification rendering finished while NotificationsCapabilityAgent was shutdown")); + break; + } + // if there are zero NotificationIndicators queued, this flag needs to be false + m_isEnabled = false; + executeProvideState(); +} + +void NotificationsCapabilityAgent::executePlayFinishedOneQueued() { + ACSDK_DEBUG5(LX(__func__).d("currentState", m_currentState)); + NotificationIndicator nextNotificationIndicator; + + switch (m_currentState) { + case NotificationsCapabilityAgentState::IDLE: + ACSDK_WARN(LX(__func__).d("unexpected state", m_currentState)); + return; + case NotificationsCapabilityAgentState::PLAYING: + if (!m_notificationsStorage->dequeue()) { + ACSDK_ERROR( + LX("executePlayFinishedOneQueuedFailed").d("reason", "failed to dequeue NotificationIndicator")); + } + executeSetState(NotificationsCapabilityAgentState::IDLE); + + // queue size should now be 0 + m_isEnabled = false; + executeProvideState(); + return; + case NotificationsCapabilityAgentState::CANCELING_PLAY: + if (!m_notificationsStorage->peek(&nextNotificationIndicator)) { + ACSDK_ERROR(LX("executePlayFinishedOneQueuedFailed").m("Expected peek() to succeed")); + return; + } + executePossibleIndicatorStateChange(intToIndicatorState(nextNotificationIndicator.persistVisualIndicator)); + executeRenderNotification(nextNotificationIndicator); + return; + case NotificationsCapabilityAgentState::SHUTTING_DOWN: + executeSetState(NotificationsCapabilityAgentState::SHUTDOWN); + return; + case NotificationsCapabilityAgentState::SHUTDOWN: + ACSDK_WARN( + LX(__func__).m("notification rendering finished while NotificationsCapabilityAgent was shutdown")); + return; + } +} + +void NotificationsCapabilityAgent::executePlayFinishedMultipleQueued() { + ACSDK_DEBUG5(LX(__func__).d("currentState", m_currentState)); + NotificationIndicator nextNotificationIndicator; + + switch (m_currentState) { + case NotificationsCapabilityAgentState::IDLE: + ACSDK_WARN(LX(__func__).d("unexpected state", m_currentState)); + return; + case NotificationsCapabilityAgentState::PLAYING: + if (!m_notificationsStorage->dequeue()) { + ACSDK_ERROR(LX("executePlayFinishedMultipleQueuedFailed") + .d("reason", "failed to dequeue NotificationIndicator")); + } + // FALL-THROUGH + case NotificationsCapabilityAgentState::CANCELING_PLAY: + if (!m_notificationsStorage->peek(&nextNotificationIndicator)) { + ACSDK_ERROR(LX("executePlayFinishedMultipleQueuedFailed").m("Expected peek() to succeed")); + return; + } + executePossibleIndicatorStateChange(intToIndicatorState(nextNotificationIndicator.persistVisualIndicator)); + executeRenderNotification(nextNotificationIndicator); + return; + case NotificationsCapabilityAgentState::SHUTTING_DOWN: + executeSetState(NotificationsCapabilityAgentState::SHUTDOWN); + m_shutdownTrigger.notify_one(); + return; + case NotificationsCapabilityAgentState::SHUTDOWN: + ACSDK_WARN( + LX(__func__).m("notification rendering finished while NotificationsCapabilityAgent was shutdown")); + return; + } +} + +void NotificationsCapabilityAgent::executeSetState(NotificationsCapabilityAgentState newState) { + ACSDK_DEBUG5(LX(__func__).d("previousState", m_currentState).d("newState", newState)); + + // need to clear out m_currentAssetId when transitioning to IDLE or SHUTTING_DOWN + if (NotificationsCapabilityAgentState::IDLE == newState || + NotificationsCapabilityAgentState::SHUTTING_DOWN == newState) { + m_currentAssetId = ""; + } + m_currentState = newState; +} + +DirectiveHandlerConfiguration NotificationsCapabilityAgent::getConfiguration() const { + DirectiveHandlerConfiguration configuration; + configuration[SET_INDICATOR] = BlockingPolicy::HANDLE_IMMEDIATELY; + configuration[CLEAR_INDICATOR] = BlockingPolicy::HANDLE_IMMEDIATELY; + return configuration; +} + +void NotificationsCapabilityAgent::setHandlingCompleted(std::shared_ptr info) { + if (info && info->result) { + info->result->setCompleted(); + } + removeDirective(info->directive->getMessageId()); +} + +bool NotificationsCapabilityAgent::parseDirectivePayload( + std::shared_ptr info, + rapidjson::Document* document) { + rapidjson::ParseResult result = document->Parse(info->directive->getPayload()); + if (result) { + return true; + } + ACSDK_ERROR(LX("parseDirectivePayloadFailed") + .d("reason", rapidjson::GetParseError_En(result.Code())) + .d("offset", result.Offset()) + .d("messageId", info->directive->getMessageId())); + sendExceptionEncounteredAndReportFailed( + info, "Unable to parse payload", ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED); + return false; +} + +void NotificationsCapabilityAgent::doShutdown() { + ACSDK_DEBUG5(LX(__func__)); + std::unique_lock lock(m_shutdownMutex); + + m_executor.submit([this] { executeShutdown(); }); + + bool successfulShutdown = m_shutdownTrigger.wait_for( + lock, SHUTDOWN_TIMEOUT, [this]() { return m_currentState == NotificationsCapabilityAgentState::SHUTDOWN; }); + + if (!successfulShutdown) { + ACSDK_ERROR(LX("doShutdownFailed").d("reason", "transition to SHUTDOWN state timed out")); + } + + m_executor.shutdown(); + m_renderer.reset(); + m_contextManager->setStateProvider(INDICATOR_STATE_CONTEXT_KEY, nullptr); + m_contextManager.reset(); + m_notificationsStorage.reset(); +} + +void NotificationsCapabilityAgent::executeShutdown() { + ACSDK_DEBUG5(LX(__func__).d("currentState", m_currentState)); + + switch (m_currentState) { + case NotificationsCapabilityAgentState::IDLE: + executeSetState(NotificationsCapabilityAgentState::SHUTDOWN); + m_shutdownTrigger.notify_one(); + return; + case NotificationsCapabilityAgentState::PLAYING: + if (!m_renderer->cancelNotificationRendering()) { + ACSDK_ERROR(LX(__func__).m( + "failed to cancel notification rendering during shutdown of NotificationsCapabilityAgent")); + } + executeSetState(NotificationsCapabilityAgentState::SHUTTING_DOWN); + return; + case NotificationsCapabilityAgentState::CANCELING_PLAY: + executeSetState(NotificationsCapabilityAgentState::SHUTTING_DOWN); + return; + case NotificationsCapabilityAgentState::SHUTTING_DOWN: + ACSDK_WARN(LX(__func__).m("executeShutdown called while already shutting down")); + return; + case NotificationsCapabilityAgentState::SHUTDOWN: + ACSDK_WARN(LX(__func__).m("executeShutdown called while already shutdown")); + return; + } +} + +void NotificationsCapabilityAgent::clearData() { + ACSDK_DEBUG5(LX(__func__)); + std::unique_lock lock(m_shutdownMutex); + + if (m_currentState == NotificationsCapabilityAgentState::PLAYING) { + if (!m_renderer->cancelNotificationRendering()) { + ACSDK_ERROR(LX(__func__).m("failed to cancel notification rendering during clearData")); + } + } + + if (m_currentState == NotificationsCapabilityAgentState::SHUTDOWN || + m_currentState == NotificationsCapabilityAgentState::SHUTTING_DOWN) { + ACSDK_WARN(LX(__func__).m("should not be trying to clear data during shutdown.")); + } else { + executeSetState(NotificationsCapabilityAgentState::IDLE); + } + + auto result = m_executor.submit([this]() { + m_notificationsStorage->clearNotificationIndicators(); + m_notificationsStorage->setIndicatorState(IndicatorState::OFF); + }); + + result.wait(); +} + +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Notifications/src/SQLiteNotificationsStorage.cpp b/CapabilityAgents/Notifications/src/SQLiteNotificationsStorage.cpp new file mode 100644 index 0000000000..9b4cb1fc94 --- /dev/null +++ b/CapabilityAgents/Notifications/src/SQLiteNotificationsStorage.cpp @@ -0,0 +1,459 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +#include +#include + +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { + +using namespace avsCommon::utils::file; +using namespace avsCommon::utils::logger; +using namespace alexaClientSDK::storage::sqliteStorage; + +/// String to identify log entries originating from this file. +static const std::string TAG("SQLiteNotificationsStorage"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/// The key in our config file to find the root of settings. +static const std::string NOTIFICATIONS_CONFIGURATION_ROOT_KEY = "notifications"; + +/// The key in our config file to find the database file path. +static const std::string NOTIFICATIONS_DB_FILE_PATH_KEY = "databaseFilePath"; + +static const std::string NOTIFICATION_INDICATOR_TABLE_NAME = "notificationIndicators"; + +static const std::string DATABASE_COLUMN_PERSIST_VISUAL_INDICATOR_NAME = "persistVisualIndicator"; + +static const std::string DATABASE_COLUMN_PLAY_AUDIO_INDICATOR_NAME = "playAudioIndicator"; + +static const std::string DATABASE_COLUMN_ASSET_ID_NAME = "assetId"; + +static const std::string DATABASE_COLUMN_ASSET_URL_NAME = "assetUrl"; + +static const std::string CREATE_NOTIFICATION_INDICATOR_TABLE_SQL_STRING = + std::string("CREATE TABLE ") + NOTIFICATION_INDICATOR_TABLE_NAME + " (" + + DATABASE_COLUMN_PERSIST_VISUAL_INDICATOR_NAME + " INT NOT NULL," + DATABASE_COLUMN_PLAY_AUDIO_INDICATOR_NAME + + " INT NOT NULL," + DATABASE_COLUMN_ASSET_ID_NAME + " TEXT NOT NULL," + DATABASE_COLUMN_ASSET_URL_NAME + + " TEXT NOT NULL);"; + +/// The name of the table and the field that will hold the state of the indicator. +static const std::string INDICATOR_STATE_NAME = "indicatorState"; + +static const std::string CREATE_INDICATOR_STATE_TABLE_SQL_STRING = + std::string("CREATE TABLE ") + INDICATOR_STATE_NAME + " (" + INDICATOR_STATE_NAME + " INT NOT NULL);"; + +std::unique_ptr SQLiteNotificationsStorage::create( + const avsCommon::utils::configuration::ConfigurationNode& configurationRoot) { + auto notificationConfigurationRoot = configurationRoot[NOTIFICATIONS_CONFIGURATION_ROOT_KEY]; + if (!notificationConfigurationRoot) { + ACSDK_ERROR(LX("createFailed") + .d("reason", "Could not load config for the Notification Storage database") + .d("key", NOTIFICATIONS_CONFIGURATION_ROOT_KEY)); + return nullptr; + } + + std::string notificationDatabaseFilePath; + if (!notificationConfigurationRoot.getString(NOTIFICATIONS_DB_FILE_PATH_KEY, ¬ificationDatabaseFilePath) || + notificationDatabaseFilePath.empty()) { + ACSDK_ERROR( + LX("createFailed").d("reason", "Could not load config value").d("key", NOTIFICATIONS_DB_FILE_PATH_KEY)); + return nullptr; + } + + return std::unique_ptr(new SQLiteNotificationsStorage(notificationDatabaseFilePath)); +} + +SQLiteNotificationsStorage::SQLiteNotificationsStorage(const std::string& databaseFilePath) : + m_database{databaseFilePath} { +} + +bool SQLiteNotificationsStorage::createDatabase() { + if (!m_database.initialize()) { + ACSDK_ERROR(LX("createDatabaseFailed").d("reason", "SQLiteCreateDatabaseFailed")); + return false; + } + + // Create NotificationIndicator table + if (!m_database.performQuery(CREATE_NOTIFICATION_INDICATOR_TABLE_SQL_STRING)) { + ACSDK_ERROR(LX("createDatabaseFailed").d("reason", "failed to create notification indicator table")); + close(); + return false; + } + + // Note: If the NotificationIndicator table creation succeeds and the IndicatorState table creation fails, + // the database will be in an inconsistent state and will require deletion or another call to createDatabase(). + + // Create IndicatorState table + if (!m_database.performQuery(CREATE_INDICATOR_STATE_TABLE_SQL_STRING)) { + ACSDK_ERROR(LX("createDatabaseFailed").d("reason", "failed to create indicator state table")); + close(); + return false; + } + + // The default IndicatorState should be OFF. + if (!setIndicatorState(IndicatorState::OFF)) { + ACSDK_ERROR(LX("createDatabaseFailed").d("reason", "failed to set default indicator state")); + close(); + return false; + } + + return true; +} + +bool SQLiteNotificationsStorage::open() { + if (!m_database.open()) { + ACSDK_ERROR(LX("openFailed").d("reason", "openSQLiteDatabaseFailed")); + return false; + } + + if (!m_database.tableExists(NOTIFICATION_INDICATOR_TABLE_NAME)) { + ACSDK_ERROR( + LX("openFailed").d("reason", "table doesn't exist").d("TableName", NOTIFICATION_INDICATOR_TABLE_NAME)); + return false; + } + + if (!m_database.tableExists(INDICATOR_STATE_NAME)) { + ACSDK_ERROR(LX("openFailed").d("reason", "table doesn't exist").d("TableName", INDICATOR_STATE_NAME)); + return false; + } + + return true; +} + +void SQLiteNotificationsStorage::close() { + m_database.close(); +} + +bool SQLiteNotificationsStorage::enqueue(const NotificationIndicator& notificationIndicator) { + // Inserted rows representations of a NotificationIndicator: + // | id | persistVisualIndicator | playAudioIndicator | assetId | assetUrl | + + const std::string sqlString = "INSERT INTO " + NOTIFICATION_INDICATOR_TABLE_NAME + " (" + + DATABASE_COLUMN_PERSIST_VISUAL_INDICATOR_NAME + "," + + DATABASE_COLUMN_PLAY_AUDIO_INDICATOR_NAME + "," + DATABASE_COLUMN_ASSET_ID_NAME + + "," + DATABASE_COLUMN_ASSET_URL_NAME + ") VALUES (" + "?, ?, ?, ?);"; + + // lock here to bind the id generation and the enqueue operations + std::lock_guard lock{m_databaseMutex}; + + auto statement = m_database.createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("enqueueFailed").m("Could not create statement")); + return false; + } + int boundParam = 1; + if (!statement->bindIntParameter(boundParam++, notificationIndicator.persistVisualIndicator) || + !statement->bindIntParameter(boundParam++, notificationIndicator.playAudioIndicator) || + !statement->bindStringParameter(boundParam++, notificationIndicator.asset.assetId) || + !statement->bindStringParameter(boundParam++, notificationIndicator.asset.url)) { + ACSDK_ERROR(LX("enqueueFailed").m("Could not bind parameter")); + return false; + } + + if (!statement->step()) { + ACSDK_ERROR(LX("enqueueFailed").m("Could not perform step")); + return false; + } + + statement->finalize(); + + return true; +} + +/** + * A utility function to pop the next notificationIndicator from the database. + * + * @param database Pounter to the database. + * @return Whether the delete operation was successful. + * @note This function should only be called when holding m_databaseMutex. + */ +static bool popNotificationIndicatorLocked(SQLiteDatabase* database) { + if (!database) { + ACSDK_ERROR(LX("popNotificationIndicatorLockedFailed").m("null database")); + return false; + } + + // the next notificationIndicator in the queue corresponds to the minimum id + const std::string minTableId = + "(SELECT ROWID FROM " + NOTIFICATION_INDICATOR_TABLE_NAME + " order by ROWID limit 1)"; + + const std::string sqlString = + "DELETE FROM " + NOTIFICATION_INDICATOR_TABLE_NAME + " WHERE ROWID=" + minTableId + ";"; + + auto statement = database->createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("popNotificationIndicatorLockedFailed").m("Could not create statement.")); + return false; + } + + if (!statement->step()) { + ACSDK_ERROR(LX("popNotificationIndicatorLockedFailed").m("Could not perform step.")); + return false; + } + + return true; +} + +bool SQLiteNotificationsStorage::dequeue() { + std::lock_guard lock{m_databaseMutex}; + + // need to check if there are NotificationIndicators left to dequeue, but the indicator itself doesn't matter + NotificationIndicator dummyIndicator; + + if (!getNextNotificationIndicatorLocked(&dummyIndicator)) { + ACSDK_ERROR(LX("dequeueFailed").m("No records left in the database!")); + return false; + } + + if (!popNotificationIndicatorLocked(&m_database)) { + ACSDK_ERROR(LX("dequeueFailed").m("Could not pop notificationIndicator from table")); + return false; + } + + return true; +} + +bool SQLiteNotificationsStorage::peek(NotificationIndicator* notificationIndicator) { + std::lock_guard lock{m_databaseMutex}; + if (!getNextNotificationIndicatorLocked(notificationIndicator)) { + ACSDK_ERROR(LX("peekFailed").m("Could not retrieve the next notificationIndicator from the database")); + return false; + } + return true; +} + +bool SQLiteNotificationsStorage::setIndicatorState(IndicatorState state) { + std::lock_guard lock{m_databaseMutex}; + + // first delete the old record, we only need to maintain one record of IndicatorState at a time. + std::string sqlString = "DELETE FROM " + INDICATOR_STATE_NAME + " WHERE ROWID IN (SELECT ROWID FROM " + + INDICATOR_STATE_NAME + " limit 1);"; + + auto deleteStatement = m_database.createStatement(sqlString); + + if (!deleteStatement) { + ACSDK_ERROR(LX("setIndicatorStateFailed").m("Could not create deleteStatement")); + return false; + } + + if (!deleteStatement->step()) { + ACSDK_ERROR(LX("setIndicatorStateFailed").m("Could not perform step")); + return false; + } + + deleteStatement->finalize(); + + // we should only be storing one record in this table at any given time + sqlString = "INSERT INTO " + INDICATOR_STATE_NAME + " (" + INDICATOR_STATE_NAME + ") VALUES (?);"; + + auto insertStatement = m_database.createStatement(sqlString); + + if (!insertStatement) { + ACSDK_ERROR(LX("setIndicatorStateFailed").m("Could not create insertStatement")); + return false; + } + + if (!insertStatement->bindIntParameter(1, indicatorStateToInt(state))) { + ACSDK_ERROR(LX("setIndicatorStateFailed").m("Could not bind parameter")); + return false; + } + + if (!insertStatement->step()) { + ACSDK_ERROR(LX("setIndicatorStateFailed").m("Could not perform step")); + return false; + } + + insertStatement->finalize(); + + return true; +} + +bool SQLiteNotificationsStorage::getIndicatorState(IndicatorState* state) { + if (!state) { + ACSDK_ERROR(LX("getIndicatorStateFailed").m("State parameter was nullptr")); + return false; + } + + std::string sqlString = "SELECT * FROM " + INDICATOR_STATE_NAME; + + auto statement = m_database.createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("getIndicatorStateFailed").m("Could not create statement")); + return false; + } + + if (!statement->step()) { + ACSDK_ERROR(LX("getIndicatorStateFailed").m("Could not perform step")); + return false; + } + + int stepResult = statement->getStepResult(); + + if (stepResult != SQLITE_ROW) { + ACSDK_ERROR(LX("getIndicatorStateFailed").m("No records left in table")); + return false; + } + + *state = avsCommon::avs::intToIndicatorState(statement->getColumnInt(0)); + + if (IndicatorState::UNDEFINED == *state) { + ACSDK_ERROR(LX("getIndicatorStateFailed").m("Unknown indicator state retrieved from table")); + return false; + } + + statement->finalize(); + + return true; +} + +bool SQLiteNotificationsStorage::checkForEmptyQueue(bool* empty) { + if (!empty) { + ACSDK_ERROR(LX("checkForEmptyQueueFailed").m("empty parameter was nullptr")); + return false; + } + + std::string sqlString = "SELECT * FROM " + NOTIFICATION_INDICATOR_TABLE_NAME; + + auto statement = m_database.createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("checkForEmptyQueueFailed").m("Could not create statement")); + return false; + } + + if (!statement->step()) { + ACSDK_ERROR(LX("checkForEmptyQueueFailed").m("Could not perform step")); + return false; + } + + int stepResult = statement->getStepResult(); + + if (stepResult != SQLITE_ROW) { + *empty = true; + } else { + *empty = false; + } + + return true; +} + +bool SQLiteNotificationsStorage::clearNotificationIndicators() { + const std::string sqlString = "DELETE FROM " + NOTIFICATION_INDICATOR_TABLE_NAME; + + std::lock_guard lock{m_databaseMutex}; + + auto statement = m_database.createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("clearNotificationIndicatorsFailed").m("Could not create statement.")); + return false; + } + + if (!statement->step()) { + ACSDK_ERROR(LX("clearNotificationIndicatorsFailed").m("Could not perform step.")); + return false; + } + return true; +} + +SQLiteNotificationsStorage::~SQLiteNotificationsStorage() { + close(); +} + +bool SQLiteNotificationsStorage::getNextNotificationIndicatorLocked(NotificationIndicator* notificationIndicator) { + // the minimum id is the next NotificationIndicator in the queue + std::string sqlString = "SELECT * FROM " + NOTIFICATION_INDICATOR_TABLE_NAME + " ORDER BY ROWID ASC LIMIT 1;"; + + auto statement = m_database.createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("getNextNotificationIndicatorLockedFailed").m("Could not create statement")); + return false; + } + + if (!statement->step()) { + ACSDK_ERROR(LX("getNextNotificationIndicatorLockedFailed").m("Could not perform step")); + return false; + } + + int stepResult = statement->getStepResult(); + + if (stepResult != SQLITE_ROW) { + ACSDK_ERROR(LX("getNextNotificationIndicatorLockedFailed").m("No records left in table")); + return false; + } + + int numberColumns = statement->getColumnCount(); + + bool persistVisualIndicator = false; + bool playAudioIndicator = false; + std::string assetId = ""; + std::string assetUrl = ""; + + // loop through columns to get all pertinent data for the out parameter + for (int i = 0; i < numberColumns; i++) { + std::string columnName = statement->getColumnName(i); + + if (DATABASE_COLUMN_PERSIST_VISUAL_INDICATOR_NAME == columnName) { + persistVisualIndicator = statement->getColumnInt(i); + + } else if (DATABASE_COLUMN_PLAY_AUDIO_INDICATOR_NAME == columnName) { + playAudioIndicator = statement->getColumnInt(i); + + } else if (DATABASE_COLUMN_ASSET_ID_NAME == columnName) { + assetId = statement->getColumnText(i); + + } else if (DATABASE_COLUMN_ASSET_URL_NAME == columnName) { + assetUrl = statement->getColumnText(i); + } + } + + // load up the out NotificationIndicator + *notificationIndicator = NotificationIndicator(persistVisualIndicator, playAudioIndicator, assetId, assetUrl); + return true; +} + +bool SQLiteNotificationsStorage::getQueueSize(int* size) { + if (!size) { + ACSDK_ERROR(LX("getQueueSizeFailed").m("size parameter was nullptr")); + return false; + } + + if (!getNumberTableRows(&m_database, NOTIFICATION_INDICATOR_TABLE_NAME, size)) { + ACSDK_ERROR(LX("getQueueSizeFailed").m("Failed to count rows in table")); + return false; + } + return true; +} + +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Notifications/test/CMakeLists.txt b/CapabilityAgents/Notifications/test/CMakeLists.txt new file mode 100644 index 0000000000..11070c7720 --- /dev/null +++ b/CapabilityAgents/Notifications/test/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +set(INCLUDE_PATH + "${Notifications_INCLUDE_DIRS}" + "${AVSCommon_SOURCE_DIR}/AVS/test" + "${AVSCommon_SOURCE_DIR}/SDKInterfaces/test") + +discover_unit_tests("${INCLUDE_PATH}" "Notifications;UtilsCommonTestLib") diff --git a/CapabilityAgents/Notifications/test/NotificationRendererTest.cpp b/CapabilityAgents/Notifications/test/NotificationRendererTest.cpp new file mode 100644 index 0000000000..ab0dc8c329 --- /dev/null +++ b/CapabilityAgents/Notifications/test/NotificationRendererTest.cpp @@ -0,0 +1,289 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include +#include +#include + +#include +#include + +#include +#include "AVSCommon/Utils/MediaPlayer/MockMediaPlayer.h" + +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { +namespace test { + +using namespace ::testing; +using namespace avsCommon; +using namespace avsCommon::utils; +using namespace avsCommon::utils::mediaPlayer; +using namespace avsCommon::utils::mediaPlayer::test; + +/// Timeout value to use when no wait is desired (e.g. to check the status of a signal) +static const std::chrono::milliseconds ZERO_TIMEOUT{0}; + +/// (short) Timeout value to use when reaching the timeout is expected. +static const std::chrono::milliseconds EXPECTED_TIMEOUT{100}; + +/// (long) Timeout value to use when reaching the timeout is NOT expected. +static const std::chrono::milliseconds UNEXPECTED_TIMEOUT{5000}; + +/** + * Factory of non-null istreams. + * + * @return a non-null istream. + */ +static std::function()> goodStreamFunction = [] { + return std::unique_ptr(new std::stringstream); +}; + +/** + * A NotificationRendererObserver to be observed by tests. + */ +class MockNotificationRendererObserver : public NotificationRendererObserverInterface { +public: + MockNotificationRendererObserver(); + + MOCK_METHOD0(onNotificationRenderingFinished, void()); + + /** + * Wait for the @c onNotificationRenderingFinished() callback. + * @param timeout The maximum time to wait for the notification. + * @return Whether or not the notification was received. + */ + bool waitForFinished(const std::chrono::milliseconds timeout = UNEXPECTED_TIMEOUT); + +private: + /// Future used to wait for the @c onNotificationRenderingFinished() callback. + std::future m_future; + + /// Promise used to wake the @c waitForFinished(). + std::promise m_promise; +}; + +MockNotificationRendererObserver::MockNotificationRendererObserver() { + m_future = m_promise.get_future(); + ON_CALL(*this, onNotificationRenderingFinished()).WillByDefault(InvokeWithoutArgs([this]() { + m_promise.set_value(); + })); +} + +bool MockNotificationRendererObserver::waitForFinished(const std::chrono::milliseconds timeout) { + return m_future.wait_for(timeout) != std::future_status::timeout; +} + +/** + * Future, Promise pair used to conveniently block and resume execution. + */ +struct FuturePromisePair { +public: + FuturePromisePair(); + + /// The promise to fulfill + std::promise promise; + + /// The future that will be awoken when the promise is fulfilled. + std::future future; +}; + +FuturePromisePair::FuturePromisePair() : promise{}, future{promise.get_future()} { +} + +/** + * Test rig. + */ +class NotificationRendererTest : public ::testing::Test { +public: + void SetUp() override; + + void TearDown() override; + + /// Mock player with which to exercise NotificationRenderer. + std::shared_ptr m_player; + + /// The NotificationRenderer instance to exercise. + std::shared_ptr m_renderer; + + /// Mock observer with which to monitor callbacks from @c m_renderer. + std::shared_ptr m_observer; +}; + +void NotificationRendererTest::SetUp() { + avsCommon::utils::logger::getConsoleLogger()->setLevel(avsCommon::utils::logger::Level::DEBUG9); + + m_player = MockMediaPlayer::create(); + m_renderer = NotificationRenderer::create(m_player); + ASSERT_TRUE(m_renderer); + m_observer.reset(new MockNotificationRendererObserver()); + m_renderer->addObserver(m_observer); +} + +void NotificationRendererTest::TearDown() { + m_player->shutdown(); +} + +/** + * Test that create fails with a null MediaPlayer + */ +TEST_F(NotificationRendererTest, testCreateWithNullMediaPlayer) { + auto renderer = NotificationRenderer::create(nullptr); + ASSERT_FALSE(renderer); +} + +/** + * Exercise rendering the preferred stream. Verify that the MediaPlayer's setSource() and play() + * methods get called (once each) and that the NotificationRenderer's observer gets called + * back to indicate that playback had completed. + */ +TEST_F(NotificationRendererTest, testPlayPreferredStream) { + EXPECT_CALL(*(m_player.get()), urlSetSource(_)).Times(1); + EXPECT_CALL(*(m_player.get()), streamSetSource(_, _)).Times(0); + EXPECT_CALL(*(m_player.get()), play(_)).Times(1); + EXPECT_CALL(*(m_observer.get()), onNotificationRenderingFinished()).Times(1); + + m_renderer->renderNotification(goodStreamFunction, ""); + m_player->waitUntilPlaybackStarted(); + m_player->mockFinished(m_player->getCurrentSourceId()); + ASSERT_TRUE(m_observer->waitForFinished()); +} + +/** + * Exercise rendering the default stream. Verify that the MediaPlayer's setSource() and play() + * methods get called (once each) and that the NotificationRenderer's observer gets called + * back to indicate that playback had completed. + */ +TEST_F(NotificationRendererTest, testPlayDefaultStream) { + EXPECT_CALL(*(m_player.get()), urlSetSource(_)).Times(1); + EXPECT_CALL(*(m_player.get()), streamSetSource(_, _)).Times(1); + EXPECT_CALL(*(m_player.get()), play(_)).Times(2); + EXPECT_CALL(*(m_observer.get()), onNotificationRenderingFinished()).Times(1); + + m_renderer->renderNotification(goodStreamFunction, ""); + + m_player->waitUntilPlaybackStarted(); + m_player->mockError(m_player->getCurrentSourceId()); + m_player->waitUntilPlaybackError(); + + ASSERT_FALSE(m_observer->waitForFinished(ZERO_TIMEOUT)); + + m_player->waitUntilNextSetSource(); + m_player->mockFinished(m_player->getCurrentSourceId()); + ASSERT_TRUE(m_observer->waitForFinished()); +} + +/** + * Exercise making a second @c renderNotification() call while a previous + * one is still outstanding. Verify that it is rejected. + */ +TEST_F(NotificationRendererTest, testSecondPlayRejected) { + EXPECT_CALL(*(m_player.get()), urlSetSource(_)).Times(1); + EXPECT_CALL(*(m_player.get()), streamSetSource(_, _)).Times(0); + EXPECT_CALL(*(m_player.get()), play(_)).Times(1); + EXPECT_CALL(*(m_observer.get()), onNotificationRenderingFinished()).Times(1); + + ASSERT_TRUE(m_renderer->renderNotification(goodStreamFunction, "")); + m_player->waitUntilPlaybackStarted(); + ASSERT_FALSE(m_renderer->renderNotification(goodStreamFunction, "")); + m_player->mockFinished(m_player->getCurrentSourceId()); + ASSERT_TRUE(m_observer->waitForFinished()); +} + +/** + * Exercise rendering the default stream. Verify that a call to @c renderNotification() + * while the default stream is playing is rejected. + */ +TEST_F(NotificationRendererTest, testSecondPlayWhilePlayingDefaultStream) { + EXPECT_CALL(*(m_player.get()), urlSetSource(_)).Times(1); + EXPECT_CALL(*(m_player.get()), streamSetSource(_, _)).Times(1); + EXPECT_CALL(*(m_player.get()), play(_)).Times(2); + EXPECT_CALL(*(m_observer.get()), onNotificationRenderingFinished()).Times(1); + + ASSERT_TRUE(m_renderer->renderNotification(goodStreamFunction, "")); + + m_player->waitUntilPlaybackStarted(); + m_player->mockError(m_player->getCurrentSourceId()); + m_player->waitUntilPlaybackError(); + + ASSERT_FALSE(m_observer->waitForFinished(ZERO_TIMEOUT)); + + m_player->waitUntilNextSetSource(); + m_player->waitUntilPlaybackStarted(); + + ASSERT_FALSE(m_renderer->renderNotification(goodStreamFunction, "")); + + m_player->mockFinished(m_player->getCurrentSourceId()); + ASSERT_TRUE(m_observer->waitForFinished()); +} + +/** + * Exercise cancelNotificationRendering(). Verify that it causes rendering to complete. + */ +TEST_F(NotificationRendererTest, testCancelNotificationRendering) { + EXPECT_CALL(*(m_player.get()), urlSetSource(_)).Times(1); + EXPECT_CALL(*(m_player.get()), streamSetSource(_, _)).Times(0); + EXPECT_CALL(*(m_player.get()), play(_)).Times(1); + EXPECT_CALL(*(m_player.get()), stop(_)).Times(1); + EXPECT_CALL(*(m_observer.get()), onNotificationRenderingFinished()).Times(1); + + ASSERT_TRUE(m_renderer->renderNotification(goodStreamFunction, "")); + m_player->waitUntilPlaybackStarted(); + ASSERT_TRUE(m_renderer->cancelNotificationRendering()); + ASSERT_TRUE(m_observer->waitForFinished()); +} + +/** + * Verify that calling renderNotification() while notification of rendering + * completion is underway (but not from the callback itself) is accepted. + * This verifies the use case where onNotificationRenderingFinished() is + * used as a trigger to render the next notification. + */ +TEST_F(NotificationRendererTest, testRenderNotificationWhileNotifying) { + FuturePromisePair signal; + EXPECT_CALL(*(m_player.get()), urlSetSource(_)).Times(2); + EXPECT_CALL(*(m_player.get()), streamSetSource(_, _)).Times(0); + EXPECT_CALL(*(m_player.get()), play(_)).Times(2); + EXPECT_CALL(*(m_observer.get()), onNotificationRenderingFinished()).WillOnce(InvokeWithoutArgs([&signal] { + static int counter = 0; + ASSERT_LT(counter, 2); + if (0 == counter++) { + signal.promise.set_value(); + // Yes, it is weak to use a sleep like this to order things, but if the sleep is not + // long enough, this unit test will succeed, so it won't create false test failures. + std::this_thread::sleep_for(EXPECTED_TIMEOUT); + } + })); + + ASSERT_TRUE(m_renderer->renderNotification(goodStreamFunction, "")); + m_player->waitUntilPlaybackStarted(); + m_player->mockFinished(m_player->getCurrentSourceId()); + + ASSERT_EQ(signal.future.wait_for(UNEXPECTED_TIMEOUT), std::future_status::ready); + + ASSERT_TRUE(m_renderer->renderNotification(goodStreamFunction, "")); + + m_player->waitUntilPlaybackStarted(); + m_player->waitUntilPlaybackFinished(); +} + +} // namespace test +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Notifications/test/NotificationsCapabilityAgentTest.cpp b/CapabilityAgents/Notifications/test/NotificationsCapabilityAgentTest.cpp new file mode 100644 index 0000000000..1b20905a6e --- /dev/null +++ b/CapabilityAgents/Notifications/test/NotificationsCapabilityAgentTest.cpp @@ -0,0 +1,922 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Notifications/NotificationsCapabilityAgent.h" +#include "Notifications/NotificationIndicator.h" +#include "Notifications/NotificationRendererInterface.h" +#include "Notifications/NotificationRendererObserverInterface.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { +namespace test { + +using namespace avsCommon::avs; +using namespace avsCommon::avs::initialization; +using namespace avsCommon::avs::attachment::test; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::audio; +using namespace avsCommon::sdkInterfaces::test; +using namespace ::testing; + +/// Plenty of time for a test to complete. +static std::chrono::milliseconds WAIT_TIMEOUT(1000); + +/// Time to simulate a notification rendering. +static std::chrono::milliseconds RENDER_TIME(900); + +/// Notifications namespace +static const std::string NAMESPACE_NOTIFICATIONS("Notifications"); + +/// Name for Notifications SetIndicator directive +static const std::string NAME_SET_INDICATOR("SetIndicator"); + +/// Name for Notifications ClearIndicator directive +static const std::string NAME_CLEAR_INDICATOR("ClearIndicator"); + +/// The @c NamespaceAndName to send to the @c ContextManager +static const NamespaceAndName NAMESPACE_AND_NAME_INDICATOR_STATE{NAMESPACE_NOTIFICATIONS, "IndicatorState"}; + +/// Message Id for testing. +static const std::string MESSAGE_ID_TEST("MessageId_Test"); +static const std::string MESSAGE_ID_TEST2("MessageId_Test2"); + +/// Context ID for testing +static const std::string CONTEXT_ID_TEST("ContextId_Test"); + +/// Test fields for payloads +static const std::string ASSET_ID1("assetId1"); +static const std::string ASSET_ID2("assetId2"); +static const std::string ASSET_URL1("assetUrl1"); +static const std::string ASSET_URL2("assetUrl2"); + +/// Default "audio" for testing +static const std::string DEFAULT_NOTIFICATION_AUDIO{"default notification audio"}; + +/// Mocking the json config file +// clang-format off +static const std::string NOTIFICATIONS_CONFIG_JSON = + "{" + "\"notifications\":{" + "\"databaseFilePath\":\"notificationsUnitTest.db\"" + "}" + "}"; +// clang-format on + +/// String to identify log entries originating from this file. +static const std::string TAG("NotificationsCapabilityAgentTest"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/** + * A test class that acts as a NotificationsAudioFactory. + */ +class TestNotificationsAudioFactory : public NotificationsAudioFactoryInterface { +public: + std::function()> notificationDefault() const override; + +private: + static std::unique_ptr defaultNotification() { + return std::unique_ptr(new std::stringstream(DEFAULT_NOTIFICATION_AUDIO)); + } +}; + +std::function()> TestNotificationsAudioFactory::notificationDefault() const { + return defaultNotification; +} + +/** + * A test class that acts as a NotificationsObserver. + */ +class TestNotificationsObserver : public NotificationsObserverInterface { +public: + TestNotificationsObserver(); + + /** + * Waits for an IndicatorState change. + * + * @param state The IndicatorState to wait for. + * @param timeout The amount of time to wait for the state change. + */ + bool waitFor(IndicatorState state, std::chrono::milliseconds timeout); + + void onSetIndicator(IndicatorState state) override; + +private: + /// The most recently observed IndicatorState. + IndicatorState m_indicatorState; + + /// Serializes access to m_conditionVariable. + std::mutex m_mutex; + + /// Used to wait for a particular IndicatorState. + std::condition_variable m_conditionVariable; +}; + +TestNotificationsObserver::TestNotificationsObserver() : m_indicatorState{IndicatorState::OFF} { +} + +bool TestNotificationsObserver::waitFor(IndicatorState state, std::chrono::milliseconds timeout) { + std::unique_lock lock(m_mutex); + return m_conditionVariable.wait_for(lock, timeout, [this, state] { return m_indicatorState == state; }); +} + +void TestNotificationsObserver::onSetIndicator(IndicatorState state) { + ACSDK_ERROR(LX("onSetIndicator").d("indicatorState", indicatorStateToInt(state))); + std::lock_guard lock(m_mutex); + m_indicatorState = state; + m_conditionVariable.notify_all(); +} + +/** + * A test class that acts as NotificationsStorage. This storage is implemented using a std::queue. + */ +class TestNotificationsStorage : public NotificationsStorageInterface { +public: + bool createDatabase() override; + + bool open() override; + + void close() override; + + bool enqueue(const NotificationIndicator& notificationIndicator) override; + + bool dequeue() override; + + bool peek(NotificationIndicator* notificationIndicator) override; + + bool setIndicatorState(IndicatorState state) override; + + bool getIndicatorState(IndicatorState* state) override; + + bool checkForEmptyQueue(bool* empty) override; + + bool clearNotificationIndicators() override; + + bool getQueueSize(int* size) override; + + /** + * Waits until the queue is a particular size. + * + * @param size The size to wait for. + * @param timeout How much time to wait before failing. + */ + bool waitForQueueSizeToBe(size_t size, std::chrono::milliseconds timeout = WAIT_TIMEOUT); + +private: + /// The underlying NotificationIndicator queue. + std::queue m_notificationQueue; + + /// The currently stored IndicatorState. + IndicatorState m_indicatorState; + + /// For waiting on a particular queue size. + std::mutex m_mutex; + std::condition_variable m_conditionVariable; +}; + +bool TestNotificationsStorage::createDatabase() { + if (!setIndicatorState(IndicatorState::OFF)) { + ACSDK_ERROR(LX("createTestDatabaseFailed").d("reason", "failed to set default indicator state")); + return false; + } + return true; +} + +bool TestNotificationsStorage::open() { + return true; +} + +void TestNotificationsStorage::close() { + // no-op +} + +bool TestNotificationsStorage::enqueue(const NotificationIndicator& notificationIndicator) { + m_notificationQueue.push(notificationIndicator); + return true; +} + +bool TestNotificationsStorage::dequeue() { + if (m_notificationQueue.empty()) { + return false; + } + m_notificationQueue.pop(); + return true; +} + +bool TestNotificationsStorage::peek(NotificationIndicator* notificationIndicator) { + if (m_notificationQueue.empty() || !notificationIndicator) { + return false; + } + *notificationIndicator = m_notificationQueue.front(); + return true; +} + +bool TestNotificationsStorage::setIndicatorState(IndicatorState state) { + m_indicatorState = state; + return true; +} + +bool TestNotificationsStorage::getIndicatorState(IndicatorState* state) { + if (!state) { + return false; + } + *state = m_indicatorState; + return true; +} + +bool TestNotificationsStorage::checkForEmptyQueue(bool* empty) { + *empty = m_notificationQueue.empty(); + return true; +} + +bool TestNotificationsStorage::clearNotificationIndicators() { + m_notificationQueue = std::queue(); + return true; +} + +bool TestNotificationsStorage::getQueueSize(int* size) { + if (!size) { + return false; + } + *size = m_notificationQueue.size(); + return true; +} + +bool TestNotificationsStorage::waitForQueueSizeToBe(size_t size, std::chrono::milliseconds timeout) { + std::unique_lock lock(m_mutex); + return m_conditionVariable.wait_for(lock, timeout, [this, size] { return m_notificationQueue.size() == size; }); +} + +class MockNotificationRenderer : public NotificationRendererInterface { +public: + ~MockNotificationRenderer(); + + MockNotificationRenderer(); + + static std::shared_ptr> create() { + auto renderer = std::make_shared>(); + + // tie the mock methods to mock implementations + ON_CALL(*renderer.get(), renderNotificationShim(_, _)) + .WillByDefault(Invoke(renderer.get(), &MockNotificationRenderer::mockRender)); + ON_CALL(*renderer.get(), cancelNotificationRenderingShim()) + .WillByDefault(InvokeWithoutArgs(renderer.get(), &MockNotificationRenderer::mockCancel)); + + return renderer; + } + + void addObserver(std::shared_ptr observer) override; + + void removeObserver(std::shared_ptr observer) override; + + bool renderNotification(std::function()> audioFactory, const std::string& url) + override; + + bool cancelNotificationRendering() override; + + // create shim methods to prevent compiler from complaining + MOCK_METHOD2( + renderNotificationShim, + bool(std::function()> audioFactory, const std::string& url)); + MOCK_METHOD0(cancelNotificationRenderingShim, bool()); + + /** + * A method mocking renderNotification(). + * This method kicks off two threads (for waitForRenderCall() and waitForRenderCallDone()) and then + * notifies those threads. This method may be interrupted by mockCancel(). + * + * Both params are ignored in this mock implementation. + */ + bool mockRender(std::function()> audioFactory, const std::string& url); + + /** + * A method mocking cancelRenderingNotification(). + * This method attempts to sneak in between waitForRenderCall() and waitForRenderCallDone() by + * triggering m_renderTrigger before m_finishedRendering has been set to true; + */ + bool mockCancel(); + + /** + * Waits for mockRender() to set m_startedRendering to true. + */ + bool waitForRenderCall(); + + /** + * Waits for mockRender() to set m_finishedRendering to true. + */ + bool waitForRenderCallDone(); + + /** + * Waits for the fulfillment of m_renderStartedPromise, then resets any needed variables. + */ + bool waitUntilRenderingStarted(std::chrono::milliseconds timeout = WAIT_TIMEOUT); + + /** + * Waits for the fulfillment of m_renderFinishedPromise, then resets any needed variables. + */ + bool waitUntilRenderingFinished(std::chrono::milliseconds timeout = WAIT_TIMEOUT); + +private: + /// The current renderer observer. + std::shared_ptr m_observer; + + /// Threads that are kicked off by mockRender() to wait for the rendering to begin and end, respectively. + std::thread m_renderStartedThread; + std::thread m_renderFinishedThread; + + /// Used to notify the above threads. + std::condition_variable m_renderTrigger; + + /// Flags for the state of the rendering operation. + bool m_startedRendering; + bool m_finishedRendering; + bool m_cancelling; + + /// Promise to be fulfilled when @c renderNotification is called. + std::promise m_renderStartedPromise; + + /// Future to notify when @c renderNotification is called. + std::future m_renderStartedFuture; + + /// Promise to be fulfilled when @c renderNotification is done. + std::promise m_renderFinishedPromise; + + /// Future to notify when @c renderNotification is done. + std::future m_renderFinishedFuture; + + /// Serializes access to m_renderTrigger; + std::mutex m_mutex; +}; + +MockNotificationRenderer::~MockNotificationRenderer() { + if (m_renderStartedThread.joinable()) { + m_renderStartedThread.join(); + } + if (m_renderFinishedThread.joinable()) { + m_renderFinishedThread.join(); + } +} + +MockNotificationRenderer::MockNotificationRenderer() : + m_observer{nullptr}, + m_startedRendering{false}, + m_finishedRendering{false}, + m_cancelling{false}, + m_renderStartedPromise{}, + m_renderStartedFuture{m_renderStartedPromise.get_future()}, + m_renderFinishedPromise{}, + m_renderFinishedFuture{m_renderFinishedPromise.get_future()} { +} + +void MockNotificationRenderer::addObserver(std::shared_ptr observer) { + if (observer) { + m_observer = observer; + } +} + +void MockNotificationRenderer::removeObserver(std::shared_ptr observer) { + m_observer = nullptr; +} + +bool MockNotificationRenderer::renderNotification( + std::function()> audioFactory, + const std::string& url) { + return renderNotificationShim(audioFactory, url); +} + +bool MockNotificationRenderer::cancelNotificationRendering() { + return cancelNotificationRenderingShim(); +} + +bool MockNotificationRenderer::mockRender( + std::function()> audioFactory, + const std::string& url) { + std::lock_guard lock(m_mutex); + + if (m_renderStartedThread.joinable() && m_renderFinishedThread.joinable()) { + m_renderStartedThread.join(); + m_renderFinishedThread.join(); + } + + m_renderStartedThread = std::thread(&MockNotificationRenderer::waitForRenderCall, this); + m_renderFinishedThread = std::thread(&MockNotificationRenderer::waitForRenderCallDone, this); + + m_startedRendering = true; + m_renderTrigger.notify_all(); + + std::this_thread::sleep_for(RENDER_TIME); + + m_finishedRendering = true; + m_renderTrigger.notify_all(); + + return true; +} + +bool MockNotificationRenderer::mockCancel() { + m_cancelling = true; + m_renderTrigger.notify_all(); + return true; +} + +bool MockNotificationRenderer::waitForRenderCall() { + std::unique_lock lock(m_mutex); + m_renderTrigger.wait_for(lock, WAIT_TIMEOUT, [this]() { return m_startedRendering; }); + m_renderStartedPromise.set_value(); + return true; +} + +bool MockNotificationRenderer::waitForRenderCallDone() { + std::unique_lock lock(m_mutex); + m_renderTrigger.wait_for(lock, WAIT_TIMEOUT, [this]() { return m_cancelling || m_finishedRendering; }); + m_renderFinishedPromise.set_value(); + return true; +} + +bool MockNotificationRenderer::waitUntilRenderingStarted(std::chrono::milliseconds timeout) { + if (m_renderStartedFuture.wait_for(timeout) == std::future_status::ready) { + m_startedRendering = false; + m_renderStartedPromise = std::promise(); + m_renderStartedFuture = m_renderStartedPromise.get_future(); + return true; + } + return false; +} + +bool MockNotificationRenderer::waitUntilRenderingFinished(std::chrono::milliseconds timeout) { + if (m_renderFinishedFuture.wait_for(timeout) == std::future_status::ready) { + m_finishedRendering = false; + m_renderFinishedPromise = std::promise(); + m_renderFinishedFuture = m_renderFinishedPromise.get_future(); + m_observer->onNotificationRenderingFinished(); + return true; + } + return false; +} + +class NotificationsCapabilityAgentTest : public ::testing::Test { +public: + void SetUp() override; + void TearDown() override; + + /** + * Utility function to create the capability agent. This allows modifying of subcomponents before the CA is created. + */ + void initializeCapabilityAgent(); + + /** + * Utility function to send SetIndicatorDirective + */ + void sendSetIndicatorDirective(const std::string& payload, const std::string& messageId); + + /** + * Utility function to send ClearIndicatorDirective + */ + void sendClearIndicatorDirective(const std::string& messageId); + + /** + * Utility function to generate direcive payloads + */ + const std::string generatePayload( + bool persistVisualIndicator, + bool playAudioIndicator, + const std::string& assetId = ASSET_ID1, + const std::string& assetUrl = ASSET_URL1); + + /// @c A test observer to wait for @c AudioPlayer state changes + std::shared_ptr m_testNotificationsObserver; + + /// @c NotificationsCapabilityAgent to test + std::shared_ptr m_notificationsCapabilityAgent; + + /// @c Storage for notifications + std::shared_ptr m_notificationsStorage; + + /// Player to play notification audio assets + std::shared_ptr m_renderer; + + /// @c ContextManager to provide state and update state. + std::shared_ptr m_mockContextManager; + + /// A directive handler result to send the result to. + std::unique_ptr m_mockDirectiveHandlerResult; + + /// An exception sender used to send exception encountered events to AVS. + std::shared_ptr m_mockExceptionSender; + + /// An audio factory for testing. + std::shared_ptr m_testNotificationsAudioFactory; + + /// Serializes access to m_setIndicatorTrigger. + std::mutex m_mutex; + + /// Triggers threads waiting on a SetIndicator directive to be processed. + std::condition_variable m_setIndicatorTrigger; + + /// Shared pointer to @c CustomerDataManager + std::shared_ptr m_dataManager; + + /// A count of how many SetIndicator directives have been processed. + unsigned int m_numSetIndicatorsProcessed; +}; + +void NotificationsCapabilityAgentTest::initializeCapabilityAgent() { + m_notificationsCapabilityAgent = NotificationsCapabilityAgent::create( + m_notificationsStorage, + m_renderer, + m_mockContextManager, + m_mockExceptionSender, + m_testNotificationsAudioFactory, + m_dataManager); + ASSERT_TRUE(m_notificationsCapabilityAgent); + m_notificationsCapabilityAgent->addObserver(m_testNotificationsObserver); + m_renderer->addObserver(m_notificationsCapabilityAgent); +} + +void NotificationsCapabilityAgentTest::SetUp() { + std::istringstream inString(NOTIFICATIONS_CONFIG_JSON); + ASSERT_TRUE(AlexaClientSDKInit::initialize({&inString})); + + m_notificationsStorage = std::make_shared(); + m_renderer = MockNotificationRenderer::create(); + m_mockContextManager = std::make_shared>(); + m_mockExceptionSender = std::make_shared>(); + m_testNotificationsAudioFactory = std::make_shared(); + + m_testNotificationsObserver = std::make_shared(); + + m_mockDirectiveHandlerResult = std::unique_ptr(new MockDirectiveHandlerResult); + + m_numSetIndicatorsProcessed = 0; + m_dataManager = std::make_shared(); +} + +void NotificationsCapabilityAgentTest::TearDown() { + if (m_notificationsCapabilityAgent) { + m_notificationsCapabilityAgent->shutdown(); + } + AlexaClientSDKInit::uninitialize(); +} + +void NotificationsCapabilityAgentTest::sendSetIndicatorDirective( + const std::string& payload, + const std::string& messageId) { + auto avsMessageHeader = std::make_shared(NAMESPACE_NOTIFICATIONS, NAME_SET_INDICATOR, messageId); + + auto mockAttachmentManager = std::make_shared(); + + std::shared_ptr setIndicatorDirective = + AVSDirective::create("", avsMessageHeader, payload, mockAttachmentManager, CONTEXT_ID_TEST); + + // cast to DirectiveHandlerInterface so the compiler can find the correct preHandleDirective signature + std::shared_ptr agentAsDirectiveHandler = m_notificationsCapabilityAgent; + + agentAsDirectiveHandler->preHandleDirective(setIndicatorDirective, std::move(m_mockDirectiveHandlerResult)); + agentAsDirectiveHandler->handleDirective(messageId); + + m_numSetIndicatorsProcessed++; + m_setIndicatorTrigger.notify_all(); +} + +void NotificationsCapabilityAgentTest::sendClearIndicatorDirective(const std::string& messageId) { + auto avsMessageHeader = + std::make_shared(NAMESPACE_NOTIFICATIONS, NAME_CLEAR_INDICATOR, messageId); + + auto mockAttachmentManager = std::make_shared(); + + std::shared_ptr clearIndicatorDirective = + AVSDirective::create("", avsMessageHeader, "", mockAttachmentManager, CONTEXT_ID_TEST); + + // cast to DirectiveHandlerInterface so the compiler can find the correct preHandleDirective signature + std::shared_ptr agentAsDirectiveHandler = m_notificationsCapabilityAgent; + + agentAsDirectiveHandler->preHandleDirective(clearIndicatorDirective, std::move(m_mockDirectiveHandlerResult)); + agentAsDirectiveHandler->handleDirective(messageId); +} + +const std::string NotificationsCapabilityAgentTest::generatePayload( + bool persistVisualIndicator, + bool playAudioIndicator, + const std::string& assetId, + const std::string& assetUrl) { + std::string stringPersistVisualIndicator(persistVisualIndicator ? "true" : "false"); + std::string stringPlayAudioIndicator(playAudioIndicator ? "true" : "false"); + + // clang-format off + const std::string payload = + "{" + "\"persistVisualIndicator\":" + stringPersistVisualIndicator + "," + "\"playAudioIndicator\":" + stringPlayAudioIndicator + "," + "\"asset\": {" + "\"assetId\":\"" + assetId + "\"," + "\"url\":\"" + assetUrl + "\"" + + "}" + "}"; + // clang-format on + return payload; +} + +/** + * Test create() with nullptrs + */ +TEST_F(NotificationsCapabilityAgentTest, testCreate) { + std::shared_ptr testNotificationsCapabilityAgent; + + testNotificationsCapabilityAgent = NotificationsCapabilityAgent::create( + nullptr, + m_renderer, + m_mockContextManager, + m_mockExceptionSender, + m_testNotificationsAudioFactory, + m_dataManager); + EXPECT_EQ(testNotificationsCapabilityAgent, nullptr); + + testNotificationsCapabilityAgent = NotificationsCapabilityAgent::create( + m_notificationsStorage, + nullptr, + m_mockContextManager, + m_mockExceptionSender, + m_testNotificationsAudioFactory, + m_dataManager); + EXPECT_EQ(testNotificationsCapabilityAgent, nullptr); + + testNotificationsCapabilityAgent = NotificationsCapabilityAgent::create( + m_notificationsStorage, + m_renderer, + nullptr, + m_mockExceptionSender, + m_testNotificationsAudioFactory, + m_dataManager); + EXPECT_EQ(testNotificationsCapabilityAgent, nullptr); + + testNotificationsCapabilityAgent = NotificationsCapabilityAgent::create( + m_notificationsStorage, + m_renderer, + m_mockContextManager, + nullptr, + m_testNotificationsAudioFactory, + m_dataManager); + EXPECT_EQ(testNotificationsCapabilityAgent, nullptr); + + testNotificationsCapabilityAgent = NotificationsCapabilityAgent::create( + m_notificationsStorage, m_renderer, m_mockContextManager, m_mockExceptionSender, nullptr, m_dataManager); + EXPECT_EQ(testNotificationsCapabilityAgent, nullptr); +} + +/** + * Test starting up the capability agent with a non-empty queue. + * Expect that the next item in the queue will be played. + */ +TEST_F(NotificationsCapabilityAgentTest, testNonEmptyStartupQueue) { + NotificationIndicator ni(true, true, ASSET_ID1, ASSET_URL1); + ASSERT_TRUE(m_notificationsStorage->enqueue(ni)); + + EXPECT_CALL(*(m_renderer.get()), renderNotificationShim(_, ASSET_URL1)).Times(1); + initializeCapabilityAgent(); + + ASSERT_TRUE(m_renderer->waitUntilRenderingFinished()); +} + +/** + * Test a single SetIndicator directive with persistVisualIndicator and playAudioIndicator set to false. + * Expect that the NotificationsObserver is notified of the indicator's state remaining OFF. + * Expect no calls to render notifications since playAudioIndicator is false. + */ +TEST_F(NotificationsCapabilityAgentTest, testSendSetIndicator) { + EXPECT_CALL(*(m_renderer.get()), renderNotificationShim(_, _)).Times(0); + initializeCapabilityAgent(); + ASSERT_TRUE(m_testNotificationsObserver->waitFor(IndicatorState::OFF, WAIT_TIMEOUT)); + + sendSetIndicatorDirective(generatePayload(true, false), MESSAGE_ID_TEST); + ASSERT_TRUE(m_testNotificationsObserver->waitFor(IndicatorState::ON, WAIT_TIMEOUT)); + + // check that the NotificationIndicator was dequeued as expected + ASSERT_TRUE(m_notificationsStorage->waitForQueueSizeToBe(0)); +} + +/** + * Test a single SetIndicator directive with with playAudioIndicator set to true. + * Expect the renderer to start playback of the Notification. + * Expect that the NotificationsObserver is notified of the indicator's state being OFF. + */ +TEST_F(NotificationsCapabilityAgentTest, testSendSetIndicatorWithAudio) { + EXPECT_CALL(*(m_renderer.get()), renderNotificationShim(_, ASSET_URL1)); + initializeCapabilityAgent(); + + sendSetIndicatorDirective(generatePayload(false, true, ASSET_ID1, ASSET_URL1), MESSAGE_ID_TEST); + ASSERT_TRUE(m_testNotificationsObserver->waitFor(IndicatorState::OFF, WAIT_TIMEOUT)); + + ASSERT_TRUE(m_renderer->waitUntilRenderingFinished()); +} + +/** + * Test a single SetIndicator directive with with persistVisualIndicator set to true. + * Expect that the NotificationsObserver is notified of the indicator's state being ON. + */ +TEST_F(NotificationsCapabilityAgentTest, testSendSetIndicatorWithVisualIndicator) { + EXPECT_CALL(*(m_renderer.get()), renderNotificationShim(_, _)).Times(0); + initializeCapabilityAgent(); + + sendSetIndicatorDirective(generatePayload(true, false), MESSAGE_ID_TEST); + ASSERT_TRUE(m_testNotificationsObserver->waitFor(IndicatorState::ON, WAIT_TIMEOUT)); +} + +/** + * Test sending two SetIndicator directives where the second has the same assetId as the first. + * Expect that the renderer only gets one call to renderNotification(). + */ +TEST_F(NotificationsCapabilityAgentTest, testSameAssetId) { + EXPECT_CALL(*(m_renderer.get()), renderNotificationShim(_, ASSET_URL1)) + .Times(1) + .WillOnce(Invoke([this](std::function()> audioFactory, const std::string& url) { + unsigned int expectedNumSetIndicators = 2; + + std::unique_lock lock(m_mutex); + if (!m_setIndicatorTrigger.wait_for(lock, WAIT_TIMEOUT, [this, expectedNumSetIndicators]() { + return m_numSetIndicatorsProcessed == expectedNumSetIndicators; + })) { + return false; + } + m_renderer->mockRender(audioFactory, url); + EXPECT_TRUE(m_renderer->waitUntilRenderingStarted()); + return true; + })); + initializeCapabilityAgent(); + + sendSetIndicatorDirective(generatePayload(true, true, ASSET_ID1), MESSAGE_ID_TEST); + + // send a second SetIndicator with the same assetId but persistVisualIndicator set to false. + sendSetIndicatorDirective(generatePayload(false, true, ASSET_ID1), MESSAGE_ID_TEST2); + + ASSERT_TRUE(m_renderer->waitUntilRenderingFinished()); + + // the IndicatorState should not have changed since the second directive should have been ignored. + ASSERT_TRUE(m_testNotificationsObserver->waitFor(IndicatorState::ON, WAIT_TIMEOUT)); +} + +/** + * Test that the persistVisualIndicator setting is preserved and used across shutdown. + */ +TEST_F(NotificationsCapabilityAgentTest, testPersistVisualIndicatorPreserved) { + initializeCapabilityAgent(); + + // set IndicatorState to ON + sendSetIndicatorDirective(generatePayload(true, false, ASSET_ID1), MESSAGE_ID_TEST); + ASSERT_TRUE(m_testNotificationsObserver->waitFor(IndicatorState::ON, WAIT_TIMEOUT)); + + m_notificationsCapabilityAgent->shutdown(); + + // reboot and check that the persistVisualIndicator value has been preserved + initializeCapabilityAgent(); + ASSERT_TRUE(m_testNotificationsObserver->waitFor(IndicatorState::ON, WAIT_TIMEOUT)); + + // same test but with IndicatorState set to OFF + sendSetIndicatorDirective(generatePayload(false, false, ASSET_ID1), MESSAGE_ID_TEST); + ASSERT_TRUE(m_testNotificationsObserver->waitFor(IndicatorState::OFF, WAIT_TIMEOUT)); + + m_notificationsCapabilityAgent->shutdown(); + + initializeCapabilityAgent(); + ASSERT_TRUE(m_testNotificationsObserver->waitFor(IndicatorState::OFF, WAIT_TIMEOUT)); +} + +/** + * Test sending a ClearIndicator directive with an empty queue, expecting nothing to happen. + */ +TEST_F(NotificationsCapabilityAgentTest, testClearIndicatorWithEmptyQueue) { + initializeCapabilityAgent(); + sendClearIndicatorDirective(MESSAGE_ID_TEST); + ASSERT_TRUE(m_testNotificationsObserver->waitFor(IndicatorState::OFF, WAIT_TIMEOUT)); +} + +/** + * Test sending a ClearIndicator directive with an empty queue and the indicator state set to ON. + * Expect that the indicator is set to OFF. + */ +TEST_F(NotificationsCapabilityAgentTest, testClearIndicatorWithEmptyQueueAndIndicatorOn) { + EXPECT_CALL(*(m_renderer.get()), renderNotificationShim(_, ASSET_URL1)).Times(1); + initializeCapabilityAgent(); + + sendSetIndicatorDirective(generatePayload(true, true, ASSET_ID1), MESSAGE_ID_TEST); + + ASSERT_TRUE(m_renderer->waitUntilRenderingFinished()); + + ASSERT_TRUE(m_testNotificationsObserver->waitFor(IndicatorState::ON, WAIT_TIMEOUT)); + + sendClearIndicatorDirective(MESSAGE_ID_TEST2); + + ASSERT_TRUE(m_testNotificationsObserver->waitFor(IndicatorState::OFF, WAIT_TIMEOUT)); +} + +/** + * Test sending a ClearIndicator directive after multiple SetIndicator directives. + * Expect that the indicator is set to OFF. + */ +TEST_F(NotificationsCapabilityAgentTest, testClearIndicatorAfterMultipleSetIndicators) { + EXPECT_CALL(*(m_renderer.get()), renderNotificationShim(_, ASSET_URL1)).Times(1); + EXPECT_CALL(*(m_renderer.get()), cancelNotificationRenderingShim()).Times(1); + initializeCapabilityAgent(); + + sendSetIndicatorDirective(generatePayload(true, true, "assetId1"), "firstIndicatorMessageId"); + sendSetIndicatorDirective(generatePayload(true, true, "assetId2"), "secondIndicatorMessageId"); + sendSetIndicatorDirective(generatePayload(true, true, "assetId3"), "thirdIndicatorMessageId"); + + ASSERT_TRUE(m_renderer->waitUntilRenderingStarted()); + sendClearIndicatorDirective(MESSAGE_ID_TEST); + + // the renderer still calls onNotificationRenderingFinished() when a notification has been cancelled + ASSERT_TRUE(m_renderer->waitUntilRenderingFinished()); + + ASSERT_TRUE(m_notificationsStorage->waitForQueueSizeToBe(0)); +} + +/** + * Test sending multiple SetIndicators and letting them all render. + * Expect multiple calls to renderNotification(). + */ +TEST_F(NotificationsCapabilityAgentTest, testMultipleSetIndicators) { + EXPECT_CALL(*(m_renderer.get()), renderNotificationShim(_, ASSET_URL1)).Times(3); + initializeCapabilityAgent(); + + sendSetIndicatorDirective(generatePayload(true, true, "id1"), "firstIndicatorMessageId"); + sendSetIndicatorDirective(generatePayload(true, true, "id2"), "secondIndicatorMessageId"); + sendSetIndicatorDirective(generatePayload(true, true, "id3"), "thirdIndicatorMessageId"); + + ASSERT_TRUE(m_renderer->waitUntilRenderingStarted()); + ASSERT_TRUE(m_renderer->waitUntilRenderingFinished()); + + ASSERT_TRUE(m_renderer->waitUntilRenderingStarted()); + ASSERT_TRUE(m_renderer->waitUntilRenderingFinished()); + + ASSERT_TRUE(m_renderer->waitUntilRenderingStarted()); + ASSERT_TRUE(m_renderer->waitUntilRenderingFinished()); +} + +/** + * Test that @c clearData() removes all notifications and sets the indicator to OFF. + */ +TEST_F(NotificationsCapabilityAgentTest, testClearData) { + initializeCapabilityAgent(); + sendSetIndicatorDirective(generatePayload(true, true, "assetId1"), "firstIndicatorMessageId"); + ASSERT_TRUE(m_renderer->waitUntilRenderingStarted()); + ASSERT_TRUE(m_renderer->waitUntilRenderingFinished()); + + // Check that indicator is ON + IndicatorState state = IndicatorState::UNDEFINED; + m_notificationsStorage->getIndicatorState(&state); + ASSERT_EQ(state, IndicatorState::ON); + + // Check that the notification queue is not empty + int queueSize; + m_notificationsStorage->getQueueSize(&queueSize); + ASSERT_GT(queueSize, 0); + + m_notificationsCapabilityAgent->clearData(); + ASSERT_TRUE(m_notificationsStorage->waitForQueueSizeToBe(0)); + + m_notificationsStorage->getIndicatorState(&state); + ASSERT_EQ(state, IndicatorState::OFF); +} + +} // namespace test +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Notifications/test/NotificationsStorageTest.cpp b/CapabilityAgents/Notifications/test/NotificationsStorageTest.cpp new file mode 100644 index 0000000000..a26a09c801 --- /dev/null +++ b/CapabilityAgents/Notifications/test/NotificationsStorageTest.cpp @@ -0,0 +1,415 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +#include +#include + +#include +#include + +#include + +using namespace ::testing; + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace notifications { +namespace test { + +using namespace avsCommon::utils::file; +using IndicatorState = avsCommon::avs::IndicatorState; + +/// The filename we will use for the test database file. +static const std::string TEST_DATABASE_FILE_PATH = "notificationsStorageTestDatabase.db"; + +/// The path delimiter used by the OS to identify file locations. +static const std::string PATH_DELIMITER = "/"; + +/// AssetId strings for testing +static const std::string TEST_ASSET_ID1 = "testAssetId1"; +static const std::string TEST_ASSET_ID2 = "testAssetId2"; + +/// AssetUrl strings for testing +static const std::string TEST_ASSET_URL1 = "testAssetUrl1"; +static const std::string TEST_ASSET_URL2 = "testAssetUrl2"; + +/// Number to use when generating many NotificationIndicators. +static const unsigned int NUM_TEST_INDICATORS = 15; + +/// Seed to generate random values for NotificationIndicators. +static const unsigned int NOTIFICATION_INDICATOR_SEED = 1; + +/// The max random number to generate. +static const unsigned int MAX_RANDOM_INT = 100; + +/** + * Utility function to determine if the storage component is opened. + * + * @param storage The storage component to check. + * @return True if the storage component's underlying database is opened, false otherwise. + */ +static bool isOpen(const std::shared_ptr& storage) { + int dummySize; + return storage->getQueueSize(&dummySize); +} + +class NotificationsStorageTest : public ::testing::Test { +public: + NotificationsStorageTest(); + + ~NotificationsStorageTest(); + + /** + * Utility function to create the database, using the global filename. + */ + void createDatabase(); + + /** + * Utility function to cleanup the test database file, if it exists. + */ + void cleanupLocalDbFile(); + + void checkNotificationIndicatorsEquality( + const NotificationIndicator& actual, + const NotificationIndicator& expected); + +protected: + /// The message database object we will test. + std::shared_ptr m_storage; +}; + +NotificationsStorageTest::NotificationsStorageTest() : + m_storage{std::make_shared(TEST_DATABASE_FILE_PATH)} { + cleanupLocalDbFile(); +} + +NotificationsStorageTest::~NotificationsStorageTest() { + m_storage->close(); + cleanupLocalDbFile(); +} + +void NotificationsStorageTest::createDatabase() { + m_storage->createDatabase(); +} + +void NotificationsStorageTest::cleanupLocalDbFile() { + if (fileExists(TEST_DATABASE_FILE_PATH)) { + removeFile(TEST_DATABASE_FILE_PATH.c_str()); + } +} + +void NotificationsStorageTest::checkNotificationIndicatorsEquality( + const NotificationIndicator& actual, + const NotificationIndicator& expected) { + ASSERT_EQ(actual.persistVisualIndicator, expected.persistVisualIndicator); + ASSERT_EQ(actual.playAudioIndicator, expected.playAudioIndicator); + ASSERT_EQ(actual.asset.assetId, expected.asset.assetId); + ASSERT_EQ(actual.asset.url, expected.asset.url); +} + +/** + * Test basic construction. Database should not be open. + */ +TEST_F(NotificationsStorageTest, testConstructionAndDestruction) { + ASSERT_FALSE(isOpen(m_storage)); +} + +/** + * Test database creation. + */ +TEST_F(NotificationsStorageTest, testDatabaseCreation) { + ASSERT_FALSE(isOpen(m_storage)); + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); +} + +/** + * Test opening and closing a database. + */ +TEST_F(NotificationsStorageTest, testOpenAndCloseDatabase) { + ASSERT_FALSE(isOpen(m_storage)); + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); + m_storage->close(); + ASSERT_FALSE(isOpen(m_storage)); + ASSERT_TRUE(m_storage->open()); + ASSERT_TRUE(isOpen(m_storage)); + m_storage->close(); + ASSERT_FALSE(isOpen(m_storage)); +} + +/** + * Test enqueueing and dequeueing records in the database. + */ +TEST_F(NotificationsStorageTest, testDatabaseEnqueueAndDequeue) { + NotificationIndicator firstIndicator(true, false, TEST_ASSET_ID1, TEST_ASSET_URL1); + NotificationIndicator secondIndicator(false, true, TEST_ASSET_ID2, TEST_ASSET_URL2); + + // should fail to enqueue/dequeue if database is not open for business + ASSERT_FALSE(m_storage->enqueue(firstIndicator)); + ASSERT_FALSE(m_storage->dequeue()); + + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); + + ASSERT_TRUE(m_storage->enqueue(firstIndicator)); + ASSERT_TRUE(m_storage->enqueue(secondIndicator)); + + NotificationIndicator firstDequeue; + ASSERT_TRUE(m_storage->peek(&firstDequeue)); + ASSERT_TRUE(m_storage->dequeue()); + // should match the first indicator + checkNotificationIndicatorsEquality(firstDequeue, firstIndicator); + + // one more for good measure + NotificationIndicator secondDequeue; + ASSERT_TRUE(m_storage->peek(&secondDequeue)); + ASSERT_TRUE(m_storage->dequeue()); + // should match the second indicator + checkNotificationIndicatorsEquality(secondDequeue, secondIndicator); + + // dequeue should fail if there is nothing left to dequeue + ASSERT_FALSE(m_storage->dequeue()); +} + +/** + * Test setting and getting the IndicatorState + */ +TEST_F(NotificationsStorageTest, testSettingAndGettingIndicatorState) { + IndicatorState state; + + // should fail to set/get if database is not open for business + ASSERT_FALSE(m_storage->setIndicatorState(IndicatorState::ON)); + ASSERT_FALSE(m_storage->getIndicatorState(&state)); + + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); + + ASSERT_TRUE(m_storage->setIndicatorState(IndicatorState::ON)); + ASSERT_TRUE(m_storage->getIndicatorState(&state)); + + ASSERT_EQ(state, IndicatorState::ON); + + ASSERT_TRUE(m_storage->setIndicatorState(IndicatorState::OFF)); + ASSERT_TRUE(m_storage->getIndicatorState(&state)); + + ASSERT_EQ(state, IndicatorState::OFF); +} + +/** + * Test just clearing the notification indicators table. + */ +TEST_F(NotificationsStorageTest, testClearingNotificationIndicators) { + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); + + NotificationIndicator firstIndicator(true, false, TEST_ASSET_ID1, TEST_ASSET_URL1); + NotificationIndicator secondIndicator(false, true, TEST_ASSET_ID2, TEST_ASSET_URL2); + + ASSERT_TRUE(m_storage->enqueue(firstIndicator)); + ASSERT_TRUE(m_storage->enqueue(secondIndicator)); + ASSERT_TRUE(m_storage->clearNotificationIndicators()); + + ASSERT_FALSE(m_storage->dequeue()); +} + +/** + * Test checking for an empty queue. + */ +TEST_F(NotificationsStorageTest, testCheckingEmptyQueue) { + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); + + bool empty = false; + + // should start out empty + ASSERT_TRUE(m_storage->checkForEmptyQueue(&empty)); + ASSERT_TRUE(empty); + + NotificationIndicator firstIndicator(true, false, TEST_ASSET_ID1, TEST_ASSET_URL1); + NotificationIndicator secondIndicator(false, true, TEST_ASSET_ID2, TEST_ASSET_URL2); + + ASSERT_TRUE(m_storage->enqueue(firstIndicator)); + ASSERT_TRUE(m_storage->enqueue(secondIndicator)); + + // should not be empty anymore + ASSERT_TRUE(m_storage->checkForEmptyQueue(&empty)); + ASSERT_FALSE(empty); + + ASSERT_TRUE(m_storage->dequeue()); + + // only dequeued once, should still contain a record + ASSERT_TRUE(m_storage->checkForEmptyQueue(&empty)); + ASSERT_FALSE(empty); + + ASSERT_TRUE(m_storage->dequeue()); + + // should finally be empty again + ASSERT_TRUE(m_storage->checkForEmptyQueue(&empty)); + ASSERT_TRUE(empty); +} + +/** + * Test persistence across closing and reopening database. + */ +TEST_F(NotificationsStorageTest, testDatabasePersistence) { + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); + + NotificationIndicator firstIndicator(true, false, TEST_ASSET_ID1, TEST_ASSET_URL1); + NotificationIndicator secondIndicator(false, true, TEST_ASSET_ID2, TEST_ASSET_URL2); + + ASSERT_TRUE(m_storage->enqueue(firstIndicator)); + ASSERT_TRUE(m_storage->enqueue(secondIndicator)); + + m_storage->close(); + + ASSERT_FALSE(isOpen(m_storage)); + ASSERT_TRUE(m_storage->open()); + ASSERT_TRUE(isOpen(m_storage)); + + NotificationIndicator firstDequeue; + ASSERT_TRUE(m_storage->peek(&firstDequeue)); + ASSERT_TRUE(m_storage->dequeue()); + // should match the first indicator + checkNotificationIndicatorsEquality(firstDequeue, firstIndicator); + + // let's try closing again before the second dequeue + m_storage->close(); + + ASSERT_FALSE(isOpen(m_storage)); + ASSERT_TRUE(m_storage->open()); + ASSERT_TRUE(isOpen(m_storage)); + + NotificationIndicator secondDequeue; + ASSERT_TRUE(m_storage->peek(&secondDequeue)); + ASSERT_TRUE(m_storage->dequeue()); + // should match the second indicator + checkNotificationIndicatorsEquality(secondDequeue, secondIndicator); +} + +/** + * Test that ordering is maintained with multiple queueing/dequeueing. + */ +TEST_F(NotificationsStorageTest, testQueueOrder) { + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); + + // generate ints with a random generator, this will be used to produce random bool values + std::default_random_engine intGenerator; + intGenerator.seed(NOTIFICATION_INDICATOR_SEED); + + std::uniform_int_distribution(1, MAX_RANDOM_INT); + + std::vector notificationIndicators; + + // generate a bunch of random NotificationIndicators and enqueue them + for (unsigned int i = 0; i < NUM_TEST_INDICATORS; i++) { + // populate the new NotificationIndicator with random values + bool r_persistVisualIndicator = intGenerator() % 2; + bool r_playAudioIndicator = intGenerator() % 2; + std::string r_assetId = intGenerator() % 2 ? TEST_ASSET_ID1 : TEST_ASSET_ID2; + std::string r_assetUrl = intGenerator() % 2 ? TEST_ASSET_URL1 : TEST_ASSET_URL2; + + NotificationIndicator ni(r_persistVisualIndicator, r_playAudioIndicator, r_assetId, r_assetUrl); + notificationIndicators.push_back(ni); + m_storage->enqueue(ni); + } + + NotificationIndicator dequeuePtr; + + // dequeue all the NotificationIndicators and check that they match the random ones previously generated + for (unsigned int i = 0; i < NUM_TEST_INDICATORS; i++) { + ASSERT_TRUE(m_storage->peek(&dequeuePtr)); + ASSERT_TRUE(m_storage->dequeue()); + checkNotificationIndicatorsEquality(dequeuePtr, notificationIndicators[i]); + } +} + +/** + * Test that peek() functionality works. + */ +TEST_F(NotificationsStorageTest, testPeek) { + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); + + NotificationIndicator firstIndicator(true, false, TEST_ASSET_ID1, TEST_ASSET_URL1); + NotificationIndicator secondIndicator(false, true, TEST_ASSET_ID2, TEST_ASSET_URL2); + + ASSERT_TRUE(m_storage->enqueue(firstIndicator)); + ASSERT_TRUE(m_storage->enqueue(secondIndicator)); + + NotificationIndicator peekedAt; + ASSERT_TRUE(m_storage->peek(&peekedAt)); + + // should match the first indicator + checkNotificationIndicatorsEquality(peekedAt, firstIndicator); + ASSERT_TRUE(m_storage->dequeue()); + + // let's peek again, this time expecting the second indicator + ASSERT_TRUE(m_storage->peek(&peekedAt)); + // should match the first indicator + checkNotificationIndicatorsEquality(peekedAt, secondIndicator); +} + +/** + * Test that queueSize() works correctly. + */ + +TEST_F(NotificationsStorageTest, testSize) { + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); + + int size = 0; + ASSERT_TRUE(m_storage->getQueueSize(&size)); + ASSERT_EQ(size, 0); + + // test size after adding a few indicators + NotificationIndicator firstIndicator(true, false, TEST_ASSET_ID1, TEST_ASSET_URL1); + ASSERT_TRUE(m_storage->enqueue(firstIndicator)); + ASSERT_TRUE(m_storage->getQueueSize(&size)); + ASSERT_EQ(size, 1); + + NotificationIndicator secondIndicator(false, true, TEST_ASSET_ID2, TEST_ASSET_URL2); + ASSERT_TRUE(m_storage->enqueue(secondIndicator)); + ASSERT_TRUE(m_storage->getQueueSize(&size)); + ASSERT_EQ(size, 2); + + // and now pop everything off, checking size at every step + ASSERT_TRUE(m_storage->dequeue()); + ASSERT_TRUE(m_storage->getQueueSize(&size)); + ASSERT_EQ(size, 1); + + ASSERT_TRUE(m_storage->dequeue()); + ASSERT_TRUE(m_storage->getQueueSize(&size)); + ASSERT_EQ(size, 0); +} + +} // namespace test +} // namespace notifications +} // namespace capabilityAgents +} // namespace alexaClientSDK + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + if (argc < 1) { + std::cerr << "USAGE: " << std::string(argv[0]) << std::endl; + return 1; + } + return RUN_ALL_TESTS(); +} diff --git a/CapabilityAgents/PlaybackController/CMakeLists.txt b/CapabilityAgents/PlaybackController/CMakeLists.txt new file mode 100644 index 0000000000..7b5276c0e7 --- /dev/null +++ b/CapabilityAgents/PlaybackController/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) +project(PlaybackController LANGUAGES CXX) + +add_subdirectory("src") +acsdk_add_test_subdirectory_if_allowed() diff --git a/CapabilityAgents/PlaybackController/include/PlaybackController/PlaybackController.h b/CapabilityAgents/PlaybackController/include/PlaybackController/PlaybackController.h new file mode 100644 index 0000000000..e1b8c4146f --- /dev/null +++ b/CapabilityAgents/PlaybackController/include/PlaybackController/PlaybackController.h @@ -0,0 +1,120 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_PLAYBACKCONTROLLER_INCLUDE_PLAYBACKCONTROLLER_PLAYBACKCONTROLLER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_PLAYBACKCONTROLLER_INCLUDE_PLAYBACKCONTROLLER_PLAYBACKCONTROLLER_H_ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace playbackController { + +class PlaybackController + : public avsCommon::sdkInterfaces::ContextRequesterInterface + , public avsCommon::sdkInterfaces::PlaybackHandlerInterface + , public avsCommon::utils::RequiresShutdown + , public std::enable_shared_from_this { +public: + /** + * Create an instance of @c PlaybackController. + * + * @param contextManager The @c ContextManagerInterface used to generate system context for events. + * @param messageSender The @c MessageSenderInterface that sends events to AVS. + * @return @c nullptr if the inputs are not defined, else a new instance of @c PlaybackController. + */ + static std::shared_ptr create( + std::shared_ptr contextManager, + std::shared_ptr messageSender); + + /** + * Destructor. + */ + virtual ~PlaybackController() = default; + + /// @name ContextRequesterInterface Functions + /// @{ + void onContextAvailable(const std::string& jsonContext) override; + void onContextFailure(const avsCommon::sdkInterfaces::ContextRequestError error) override; + /// @} + + /// @name PlaybackHandlerInterface functions. + /// @{ + void onButtonPressed(avsCommon::avs::PlaybackButton button) override; + /// @} + + /** + * Manage completion of event being sent. + * + * @param Button The @Button that was pressed to generate the message sent. + * @param messageStatus The status of submitted @c MessageRequest. + */ + void messageSent( + avsCommon::avs::PlaybackButton, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status messageStatus); + +private: + /** + * Constructor. + * + * @param contextManager The AVS Context manager used to generate system context for events. + * @param messageSender The message sender interface that sends events to AVS. + */ + PlaybackController( + std::shared_ptr contextManager, + std::shared_ptr messageSender); + + // @name RequiresShutdown Functions + /// @{ + void doShutdown() override; + /// @} + + /** + * @name Executor Thread Variables + * + * These member variables are only accessed by functions in the @c m_executor worker thread, and do not require any + * synchronization. + */ + /// @{ + + /// The @c MessageSenderInterface used to send event messages. + std::shared_ptr m_messageSender; + + /// The @c ContextManager used to generate system context for events. + std::shared_ptr m_contextManager; + + /// The queue for storing buttons pressed. + std::queue m_buttons; + /// @} + + /// The @c Executor which queues up operations from asynchronous API calls to the @c PlaybackControllerInterface. + avsCommon::utils::threading::Executor m_executor; +}; + +} // namespace playbackController +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_PLAYBACKCONTROLLER_INCLUDE_PLAYBACKCONTROLLER_PLAYBACKCONTROLLER_H_ diff --git a/CapabilityAgents/PlaybackController/include/PlaybackController/PlaybackMessageRequest.h b/CapabilityAgents/PlaybackController/include/PlaybackController/PlaybackMessageRequest.h new file mode 100644 index 0000000000..519160b126 --- /dev/null +++ b/CapabilityAgents/PlaybackController/include/PlaybackController/PlaybackMessageRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_PLAYBACKCONTROLLER_INCLUDE_PLAYBACKCONTROLLER_PLAYBACKMESSAGEREQUEST_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_PLAYBACKCONTROLLER_INCLUDE_PLAYBACKCONTROLLER_PLAYBACKMESSAGEREQUEST_H_ + +#include +#include + +#include "PlaybackController.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace playbackController { + +/** + * This class implements @c MessageRequests to alert observers upon completion of the message. + */ +class PlaybackMessageRequest : public avsCommon::avs::MessageRequest { +public: + /** + * @copyDoc avsCommon::avs::MessageRequest() + * + * Construct a @c MessageRequest while binding it to a @c PlaybackController and a @c Button. + * + * @param button The @c Button pressed. + * @param jsonContent The JSON content to be sent to AVS. + * @param playbackController A reference to a @c PlaybackController so that it can be notified when + * @c onSendCompleted is invoked. + */ + PlaybackMessageRequest( + avsCommon::avs::PlaybackButton button, + const std::string& jsonContent, + std::shared_ptr playbackController); + + /// @name MessageRequest functions. + /// @{ + void sendCompleted(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status status) override; + /// @} + +private: + /// The @c PlaybackController to be notified when @c onSendCompleted is called. + std::shared_ptr m_playbackController; + + /// The @c Button pressed for this message request. + avsCommon::avs::PlaybackButton m_button; +}; + +} // namespace playbackController +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_PLAYBACKCONTROLLER_INCLUDE_PLAYBACKCONTROLLER_PLAYBACKMESSAGEREQUEST_H_ diff --git a/CapabilityAgents/PlaybackController/include/PlaybackController/PlaybackRouter.h b/CapabilityAgents/PlaybackController/include/PlaybackController/PlaybackRouter.h new file mode 100644 index 0000000000..48f2800912 --- /dev/null +++ b/CapabilityAgents/PlaybackController/include/PlaybackController/PlaybackRouter.h @@ -0,0 +1,88 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_PLAYBACKCONTROLLER_INCLUDE_PLAYBACKCONTROLLER_PLAYBACKROUTER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_PLAYBACKCONTROLLER_INCLUDE_PLAYBACKCONTROLLER_PLAYBACKROUTER_H_ + +#include +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace playbackController { + +class PlaybackRouter + : public avsCommon::sdkInterfaces::PlaybackRouterInterface + , public avsCommon::utils::RequiresShutdown + , public std::enable_shared_from_this { +public: + /** + * Create an instance of @ PlaybackRouter. + * + * @param defaultHandler The default playback handler. + * @return A @c std::shared_ptr to the new @ PlaybackRouter instance. + */ + static std::shared_ptr create( + std::shared_ptr defaultHandler); + + /** + * Destructor. + */ + virtual ~PlaybackRouter() = default; + + /// @name @c PlaybackRouterInterface functions. + /// @{ + virtual void playButtonPressed() override; + virtual void pauseButtonPressed() override; + virtual void nextButtonPressed() override; + virtual void previousButtonPressed() override; + virtual void setHandler(std::shared_ptr handler) override; + virtual void switchToDefaultHandler() override; + /// @} + +private: + /** + * Constructor. + */ + PlaybackRouter(std::shared_ptr defaultHandler); + + /** + * Handle a playback button press. + * + * @param button The button that has been pressed. + */ + void buttonPressed(avsCommon::avs::PlaybackButton button); + + /// @name RequiresShutdown Functions + /// @{ + void doShutdown() override; + /// @} + + /// The active button press handler. + std::shared_ptr m_handler; + + /// The default handler to be used after @c switchToDefaultHandler has been called. + std::shared_ptr m_defaultHandler; + + /// Mutex protecting the observer pointer. + std::mutex m_handlerMutex; +}; + +} // namespace playbackController +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_PLAYBACKCONTROLLER_INCLUDE_PLAYBACKCONTROLLER_PLAYBACKROUTER_H_ diff --git a/CapabilityAgents/PlaybackController/src/CMakeLists.txt b/CapabilityAgents/PlaybackController/src/CMakeLists.txt new file mode 100644 index 0000000000..ab6b16d6cb --- /dev/null +++ b/CapabilityAgents/PlaybackController/src/CMakeLists.txt @@ -0,0 +1,14 @@ +add_definitions("-DACSDK_LOG_MODULE=playbackcontroller") + +add_library(PlaybackController SHARED + "${CMAKE_CURRENT_LIST_DIR}/PlaybackController.cpp" + "${CMAKE_CURRENT_LIST_DIR}/PlaybackRouter.cpp" + "${CMAKE_CURRENT_LIST_DIR}/PlaybackMessageRequest.cpp") + +target_include_directories(PlaybackController + PUBLIC "${PlaybackController_SOURCE_DIR}/include") + +target_link_libraries(PlaybackController AVSCommon ContextManager) + +# install target +asdk_install() \ No newline at end of file diff --git a/CapabilityAgents/PlaybackController/src/PlaybackController.cpp b/CapabilityAgents/PlaybackController/src/PlaybackController.cpp new file mode 100644 index 0000000000..85f55215b7 --- /dev/null +++ b/CapabilityAgents/PlaybackController/src/PlaybackController.cpp @@ -0,0 +1,183 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include "PlaybackController/PlaybackController.h" +#include "PlaybackController/PlaybackMessageRequest.h" + +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace playbackController { + +using namespace avsCommon::avs; +using namespace avsCommon::sdkInterfaces; + +/// String to identify log entries originating from this file. +static const std::string TAG("PlaybackController"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/// String to identify the AVS namespace of the event we send. +static const std::string PLAYBACK_CONTROLLER_NAMESPACE = "PlaybackController"; + +/// String to identify the AVS name of the event on the 'Play' button pressed. +static const std::string PLAYBACK_PLAY_NAME = "PlayCommandIssued"; +/// String to identify the AVS name of the event on the 'Pause' button pressed. +static const std::string PLAYBACK_PAUSE_NAME = "PauseCommandIssued"; +/// String to identify the AVS name of the event on the 'Next' button pressed. +static const std::string PLAYBACK_NEXT_NAME = "NextCommandIssued"; +/// String to identify the AVS name of the event on the 'Previous' button pressed. +static const std::string PLAYBACK_PREVIOUS_NAME = "PreviousCommandIssued"; + +/** + * A macro to be used in buttonToMessageName function to help with the translation + * of @c Button to its AVS event name. + * + * @param button The @c Button that needs to be translated. + */ +#define ACSDK_PLAYBACK_BUTTON_TO_NAME(button) \ + case PlaybackButton::button: \ + return ACSDK_CONCATENATE(ACSDK_CONCATENATE(PLAYBACK_, button), _NAME); + +/** + * Utility function to convert the Button into the name in the event message. + * + * @param button The @c Button for the message. + * @return The name of the event message associated with the @c Button. + */ +static std::string buttonToMessageName(PlaybackButton button) { + switch (button) { + ACSDK_PLAYBACK_BUTTON_TO_NAME(PLAY); + ACSDK_PLAYBACK_BUTTON_TO_NAME(PAUSE); + ACSDK_PLAYBACK_BUTTON_TO_NAME(NEXT); + ACSDK_PLAYBACK_BUTTON_TO_NAME(PREVIOUS); + } + return "UNKNOWN"; +} + +std::shared_ptr PlaybackController::create( + std::shared_ptr contextManager, + std::shared_ptr messageSender) { + if (!contextManager) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullContextManager")); + return nullptr; + } + if (!messageSender) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullMessageSender")); + return nullptr; + } + + return std::shared_ptr(new PlaybackController(contextManager, messageSender)); +} + +void PlaybackController::doShutdown() { + m_executor.shutdown(); + m_messageSender.reset(); + m_contextManager.reset(); +} + +void PlaybackController::onButtonPressed(PlaybackButton button) { + auto task = [this, button]() { + ACSDK_DEBUG9(LX("buttonPressedExecutor").d("Button", button)); + + if (m_buttons.empty()) { + ACSDK_DEBUG9(LX("buttonPressedExecutor").m("Queue is empty, call getContext().")); + m_contextManager->getContext(shared_from_this()); + } + m_buttons.push(button); + }; + + ACSDK_DEBUG9(LX("buttonPressed").d("Button", button)); + m_executor.submit(task); +} + +void PlaybackController::messageSent(PlaybackButton button, MessageRequestObserverInterface::Status messageStatus) { + if (MessageRequestObserverInterface::Status::SUCCESS == messageStatus) { + ACSDK_DEBUG(LX("messageSentSucceeded").d("ButtonPressed", button)); + } else { + ACSDK_ERROR(LX("messageSentFailed").d("ButtonPressed", button).d("error", messageStatus)); + } +} + +void PlaybackController::onContextAvailable(const std::string& jsonContext) { + auto task = [this, jsonContext]() { + ACSDK_DEBUG9(LX("onContextAvailableExecutor")); + + if (m_buttons.empty()) { + // The queue shouldn't be empty, log a warning message and return here. + ACSDK_WARN(LX("onContextAvailableExecutor").m("Queue is empty, return.")); + return; + } + + auto button = m_buttons.front(); + m_buttons.pop(); + + auto msgIdAndJsonEvent = + buildJsonEventString(PLAYBACK_CONTROLLER_NAMESPACE, buttonToMessageName(button), "", "{}", jsonContext); + m_messageSender->sendMessage( + std::make_shared(button, msgIdAndJsonEvent.second, shared_from_this())); + + if (!m_buttons.empty()) { + ACSDK_DEBUG9(LX("onContextAvailableExecutor").m("Queue is not empty, call getContext().")); + m_contextManager->getContext(shared_from_this()); + } + }; + + ACSDK_DEBUG9(LX("onContextAvailable")); + m_executor.submit(task); +} + +void PlaybackController::onContextFailure(const ContextRequestError error) { + auto task = [this, error]() { + if (m_buttons.empty()) { + // The queue shouldn't be empty, log a warning message and return here. + ACSDK_WARN(LX("onContextFailureExecutor").m("Queue is empty, return.")); + return; + } + + auto button = m_buttons.front(); + m_buttons.pop(); + + ACSDK_ERROR(LX("contextRetrievalFailed").d("ButtonPressed", button).d("error", error)); + + if (!m_buttons.empty()) { + m_contextManager->getContext(shared_from_this()); + } + }; + + ACSDK_DEBUG9(LX("onContextFailure")); + m_executor.submit(task); +} + +PlaybackController::PlaybackController( + std::shared_ptr contextManager, + std::shared_ptr messageSender) : + RequiresShutdown{"PlaybackController"}, + m_messageSender{messageSender}, + m_contextManager{contextManager} { +} + +} // namespace playbackController +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/PlaybackController/src/PlaybackMessageRequest.cpp b/CapabilityAgents/PlaybackController/src/PlaybackMessageRequest.cpp new file mode 100644 index 0000000000..b38f991eb4 --- /dev/null +++ b/CapabilityAgents/PlaybackController/src/PlaybackMessageRequest.cpp @@ -0,0 +1,40 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "PlaybackController/PlaybackMessageRequest.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace playbackController { + +using namespace avsCommon::avs; +using namespace avsCommon::sdkInterfaces; + +PlaybackMessageRequest::PlaybackMessageRequest( + PlaybackButton button, + const std::string& jsonContent, + std::shared_ptr playbackController) : + MessageRequest(jsonContent), + m_playbackController{playbackController}, + m_button{button} { +} + +void PlaybackMessageRequest::sendCompleted(MessageRequestObserverInterface::Status status) { + m_playbackController->messageSent(m_button, status); +} + +} // namespace playbackController +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/PlaybackController/src/PlaybackRouter.cpp b/CapabilityAgents/PlaybackController/src/PlaybackRouter.cpp new file mode 100644 index 0000000000..1fe97a6296 --- /dev/null +++ b/CapabilityAgents/PlaybackController/src/PlaybackRouter.cpp @@ -0,0 +1,113 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include +#include "PlaybackController/PlaybackRouter.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace playbackController { + +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::avs; + +/// String to identify log entries originating from this file. +static const std::string TAG("PlaybackRouter"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +std::shared_ptr PlaybackRouter::create(std::shared_ptr defaultHandler) { + ACSDK_DEBUG9(LX("create").m("called")); + + if (nullptr == defaultHandler) { + ACSDK_ERROR(LX("createFailed").d("reason", "null defaultHandler")); + return nullptr; + } + + auto playbackRouter = std::shared_ptr(new PlaybackRouter(defaultHandler)); + return playbackRouter; +} + +void PlaybackRouter::playButtonPressed() { + buttonPressed(PlaybackButton::PLAY); +} + +void PlaybackRouter::pauseButtonPressed() { + buttonPressed(PlaybackButton::PAUSE); +} + +void PlaybackRouter::nextButtonPressed() { + buttonPressed(PlaybackButton::NEXT); +} + +void PlaybackRouter::previousButtonPressed() { + buttonPressed(PlaybackButton::PREVIOUS); +} + +void PlaybackRouter::buttonPressed(avsCommon::avs::PlaybackButton button) { + ACSDK_DEBUG9(LX("buttonPressed").d("button", button)); + std::unique_lock lock(m_handlerMutex); + + if (!m_handler) { + ACSDK_INFO(LX("buttonPressed").m("called but handler is not set")); + return; + } + auto observer = m_handler; + lock.unlock(); + + observer->onButtonPressed(button); +} + +void PlaybackRouter::setHandler(std::shared_ptr handler) { + ACSDK_DEBUG9(LX("setHandler").d("handler", handler)); + std::lock_guard guard(m_handlerMutex); + + if (!handler) { + ACSDK_ERROR(LX("setHandler").d("handler", handler)); + return; + } + + m_handler = handler; +} + +void PlaybackRouter::switchToDefaultHandler() { + ACSDK_DEBUG9(LX("switchToDefaultHandler")); + + setHandler(m_defaultHandler); +} + +PlaybackRouter::PlaybackRouter(std::shared_ptr defaultHandler) : + RequiresShutdown{"PlaybackRouter"}, + m_handler{defaultHandler}, + m_defaultHandler{defaultHandler} { +} + +void PlaybackRouter::doShutdown() { + std::lock_guard lock(m_handlerMutex); + + m_handler.reset(); + m_defaultHandler.reset(); +} + +} // namespace playbackController +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/PlaybackController/test/CMakeLists.txt b/CapabilityAgents/PlaybackController/test/CMakeLists.txt new file mode 100644 index 0000000000..f9643745f5 --- /dev/null +++ b/CapabilityAgents/PlaybackController/test/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +set(INCLUDE_PATH + "${PlaybackController_INCLUDE_DIR}" + "${RAPIDJSON_INCLUDE_DIR}" + "${AVSCommon_SOURCE_DIR}/AVS/test" + "${AVSCommon_SOURCE_DIR}/SDKInterfaces/test") + +discover_unit_tests("${INCLUDE_PATH}" "PlaybackController") diff --git a/CapabilityAgents/PlaybackController/test/PlaybackControllerTest.cpp b/CapabilityAgents/PlaybackController/test/PlaybackControllerTest.cpp new file mode 100644 index 0000000000..8b1bf504ea --- /dev/null +++ b/CapabilityAgents/PlaybackController/test/PlaybackControllerTest.cpp @@ -0,0 +1,377 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/// @file PlaybackControllerTest +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include "PlaybackController/PlaybackController.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace playbackController { +namespace test { + +using namespace avsCommon::avs; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::test; +using namespace avsCommon::utils::json; +using namespace testing; + +/// String to identify the AVS namespace of the event we send. +static const std::string PLAYBACK_CONTROLLER_NAMESPACE = "PlaybackController"; + +/// String to identify the AVS name of the event on the 'Play' button pressed. +static const std::string PLAYBACK_PLAY_NAME = "PlayCommandIssued"; +/// String to identify the AVS name of the event on the 'Pause' button pressed. +static const std::string PLAYBACK_PAUSE_NAME = "PauseCommandIssued"; +/// String to identify the AVS name of the event on the 'Next' button pressed. +static const std::string PLAYBACK_NEXT_NAME = "NextCommandIssued"; +/// String to identify the AVS name of the event on the 'Previous' button pressed. +static const std::string PLAYBACK_PREVIOUS_NAME = "PreviousCommandIssued"; + +/// String to test for MessageRequest exceptionReceived() +static const std::string TEST_EXCEPTION_TEXT = "Exception test"; + +/// A short period of time to wait for the m_contextTrigger or m_messageTrigger. +static const std::chrono::milliseconds TEST_RESULT_WAIT_PERIOD{100}; + +/// A mock context returned by MockContextManager. +// clang-format off +static const std::string MOCK_CONTEXT = "{" + "\"context\":[{" + "\"header\":{" + "\"name\":\"SpeechState\"," + "\"namespace\":\"SpeechSynthesizer\"" + "}," + "\"payload\":{" + "\"playerActivity\":\"FINISHED\"," + "\"offsetInMilliseconds\":0," + "\"token\":\"\"" + "}" + "}]}"; +// clang-format on + +/** + * Check if message request has errors. + * + * @param messageRequest The message requests to be checked. + * @return "ERROR" if parsing the JSON has any unexpected results and the payload is empty, + * otherwise return the name of the message. + */ +static std::string checkMessageRequest(std::shared_ptr messageRequest) { + const std::string error = "ERROR"; + rapidjson::Document jsonContent(rapidjson::kObjectType); + if (jsonContent.Parse(messageRequest->getJsonContent()).HasParseError()) { + return error; + } + rapidjson::Value::ConstMemberIterator eventNode; + if (!jsonUtils::findNode(jsonContent, "event", &eventNode)) { + return error; + } + + // get payload + rapidjson::Value::ConstMemberIterator payloadNode; + if (!jsonUtils::findNode(eventNode->value, "payload", &payloadNode)) { + return error; + } + + // check payload is empty + if (!payloadNode->value.ObjectEmpty()) { + return error; + } + + // get header + rapidjson::Value::ConstMemberIterator headerIt; + if (!jsonUtils::findNode(eventNode->value, "header", &headerIt)) { + return error; + } + + // verify namespace + std::string avsNamespace; + if (!jsonUtils::retrieveValue(headerIt->value, "namespace", &avsNamespace)) { + return error; + } + if (avsNamespace != PLAYBACK_CONTROLLER_NAMESPACE) { + return error; + } + + // return name + std::string avsName; + if (!jsonUtils::retrieveValue(headerIt->value, "name", &avsName)) { + return error; + } + return avsName; +} + +/// Test harness for @c StateSynchronizer class. +class PlaybackControllerTest : public ::testing::Test { +public: + /// Set up the test harness for running a test. + void SetUp() override; + + /// Clean up the test harness after running a test. + void TearDown() override; + +protected: + /** + * Check if message contextRequester is a nullptr and notify the m_contextTrigger to continue execution of the test. + * + * @param func The callable object to execute the key press API. + * @param expectedMessageName The string of the expected AVS message name sent by the key pressed. + */ + void verifyButtonPressed(std::function func, const std::string& expectedMessageName); + + /** + * Check if message request has errors and notify the g_messageTrigger to continue execution of the test. + * + * @param messageRequest The message requests to be checked. + * @param sendException If this is true, then an exceptionReceived() will be sent, otherwise sendCompleted() + * @param expected_name The string of the expected AVS message name sent. + */ + void checkMessageRequestAndReleaseTrigger( + std::shared_ptr messageRequest, + bool sendException, + const std::string& expected_name); + + /** + * Check if message contextRequester is a nullptr and notify the m_contextTrigger to continue execution of the test. + * + * @param contextRequester The @c ContextRequesterInterface. + */ + void checkGetContextAndReleaseTrigger(std::shared_ptr contextRequester); + + /// This holds the return status of sendMessage() calls. + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status m_messageStatus; + + /// Mocked Context Manager. Note that we make it a strict mock to ensure we test the flow completely. + std::shared_ptr> m_mockContextManager; + + /// Mocked Message Sender. Note that we make it a strict mock to ensure we test the flow completely. + std::shared_ptr> m_mockMessageSender; + + /// PlaybackController instance. + std::shared_ptr m_playbackController; + + /// This is the condition variable to be used to control sending of a message in test cases. + std::condition_variable m_messageTrigger; + + /// This is the condition variable to be used to control getting of a context in test cases. + std::condition_variable m_contextTrigger; + + /// mutex for the conditional variables. + std::mutex m_mutex; +}; + +void PlaybackControllerTest::SetUp() { + m_mockContextManager = std::make_shared>(); + m_mockMessageSender = std::make_shared>(); + + // initialize m_contextTrigger to success + m_messageStatus = avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS; + + m_playbackController = PlaybackController::create(m_mockContextManager, m_mockMessageSender); + ASSERT_NE(nullptr, m_playbackController); +} + +void PlaybackControllerTest::TearDown() { + if (m_playbackController) { + m_playbackController->shutdown(); + } +} + +void PlaybackControllerTest::verifyButtonPressed(std::function func, const std::string& expectedMessageName) { + std::unique_lock exitLock(m_mutex); + + EXPECT_CALL(*m_mockContextManager, getContext(_)) + .WillOnce(Invoke([this](std::shared_ptr contextRequester) { + checkGetContextAndReleaseTrigger(contextRequester); + })); + func(); + m_contextTrigger.wait_for(exitLock, TEST_RESULT_WAIT_PERIOD); + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)) + .WillOnce(Invoke([this, expectedMessageName](std::shared_ptr request) { + checkMessageRequestAndReleaseTrigger(request, false, expectedMessageName); + })); + m_playbackController->onContextAvailable(MOCK_CONTEXT); + m_messageTrigger.wait_for(exitLock, TEST_RESULT_WAIT_PERIOD); +} + +void PlaybackControllerTest::checkGetContextAndReleaseTrigger( + std::shared_ptr contextRequester) { + m_contextTrigger.notify_one(); + EXPECT_THAT(contextRequester, NotNull()); +} + +void PlaybackControllerTest::checkMessageRequestAndReleaseTrigger( + std::shared_ptr messageRequest, + bool sendException, + const std::string& expected_name) { + auto returnValue = checkMessageRequest(messageRequest); + m_messageTrigger.notify_one(); + if (sendException) { + messageRequest->exceptionReceived(TEST_EXCEPTION_TEXT); + } else { + messageRequest->sendCompleted(m_messageStatus); + } + EXPECT_EQ(returnValue, expected_name); +} + +/** + * This case tests if @c StateSynchronizer basic create function works properly + */ +TEST_F(PlaybackControllerTest, createSuccessfully) { + ASSERT_NE(nullptr, PlaybackController::create(m_mockContextManager, m_mockMessageSender)); +} + +/** + * This case tests if possible @c nullptr parameters passed to @c StateSynchronizer::create are handled properly. + */ +TEST_F(PlaybackControllerTest, createWithError) { + ASSERT_EQ(nullptr, PlaybackController::create(m_mockContextManager, nullptr)); + ASSERT_EQ(nullptr, PlaybackController::create(nullptr, m_mockMessageSender)); + ASSERT_EQ(nullptr, PlaybackController::create(nullptr, nullptr)); +} + +/** + * This case tests if playButtonPressed will send the correct event message. + */ +TEST_F(PlaybackControllerTest, playButtonPressed) { + PlaybackControllerTest::verifyButtonPressed( + [this]() { m_playbackController->onButtonPressed(PlaybackButton::PLAY); }, PLAYBACK_PLAY_NAME); +} + +/** + * This case tests if pauseButtonPressed will send the correct event message. + */ +TEST_F(PlaybackControllerTest, pauseButtonPressed) { + ASSERT_NE(nullptr, m_playbackController); + + PlaybackControllerTest::verifyButtonPressed( + [this]() { m_playbackController->onButtonPressed(PlaybackButton::PAUSE); }, PLAYBACK_PAUSE_NAME); +} + +/** + * This case tests if nextButtonPressed will send the correct event message. + */ +TEST_F(PlaybackControllerTest, nextButtonPressed) { + PlaybackControllerTest::verifyButtonPressed( + [this]() { m_playbackController->onButtonPressed(PlaybackButton::NEXT); }, PLAYBACK_NEXT_NAME); +} + +/** + * This case tests if previousButtonPressed will send the correct event message. + */ +TEST_F(PlaybackControllerTest, previousButtonPressed) { + PlaybackControllerTest::verifyButtonPressed( + [this]() { m_playbackController->onButtonPressed(PlaybackButton::PREVIOUS); }, PLAYBACK_PREVIOUS_NAME); +} + +/** + * This case tests if getContext() returns failure, the button on the top of the queue will be dropped and getContext + * will be called for the next button on the queue. + */ +TEST_F(PlaybackControllerTest, getContextFailure) { + std::unique_lock exitLock(m_mutex); + + EXPECT_CALL(*m_mockContextManager, getContext(_)) + .WillOnce(Invoke([this](std::shared_ptr contextRequester) { + checkGetContextAndReleaseTrigger(contextRequester); + })); + // queue two button presses + m_playbackController->onButtonPressed(PlaybackButton::PLAY); + m_playbackController->onButtonPressed(PlaybackButton::PAUSE); + // wait for first call of getContext + m_contextTrigger.wait_for(exitLock, TEST_RESULT_WAIT_PERIOD); + + // expect no call of sendMessage for any button + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)).Times(0); + + // expect a call to getContext again when onContextFailure is received + EXPECT_CALL(*m_mockContextManager, getContext(_)) + .WillOnce(Invoke([this](std::shared_ptr contextRequester) { + checkGetContextAndReleaseTrigger(contextRequester); + })); + m_playbackController->onContextFailure(avsCommon::sdkInterfaces::ContextRequestError::BUILD_CONTEXT_ERROR); + m_contextTrigger.wait_for(exitLock, TEST_RESULT_WAIT_PERIOD); + + // now expect call of sendMessage for the pause button + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)) + .WillOnce(Invoke([this](std::shared_ptr request) { + checkMessageRequestAndReleaseTrigger(request, false, PLAYBACK_PAUSE_NAME); + })); + m_playbackController->onContextAvailable(MOCK_CONTEXT); + m_messageTrigger.wait_for(exitLock, TEST_RESULT_WAIT_PERIOD); +} + +/** + * This case tests if sendMessage() returns failure, an error log should be logged with the button pressed and reason + * for failure. + */ +TEST_F(PlaybackControllerTest, sendMessageFailure) { + std::unique_lock exitLock(m_mutex); + + m_messageStatus = avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::INTERNAL_ERROR; + EXPECT_CALL(*m_mockContextManager, getContext(_)) + .WillOnce(Invoke([this](std::shared_ptr contextRequester) { + checkGetContextAndReleaseTrigger(contextRequester); + })); + m_playbackController->onButtonPressed(PlaybackButton::NEXT); + m_contextTrigger.wait_for(exitLock, TEST_RESULT_WAIT_PERIOD); + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)) + .WillOnce(Invoke([this](std::shared_ptr request) { + checkMessageRequestAndReleaseTrigger(request, false, PLAYBACK_NEXT_NAME); + })); + + m_playbackController->onContextAvailable(MOCK_CONTEXT); + m_messageTrigger.wait_for(exitLock, TEST_RESULT_WAIT_PERIOD); +} + +/** + * This case tests if exceptionReceived() is received, an error log should be logged with with the exception + * description. + */ +TEST_F(PlaybackControllerTest, sendMessageException) { + std::unique_lock exitLock(m_mutex); + + m_messageStatus = avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::INTERNAL_ERROR; + EXPECT_CALL(*m_mockContextManager, getContext(_)) + .WillOnce(Invoke([this](std::shared_ptr contextRequester) { + checkGetContextAndReleaseTrigger(contextRequester); + })); + m_playbackController->onButtonPressed(PlaybackButton::NEXT); + m_contextTrigger.wait_for(exitLock, TEST_RESULT_WAIT_PERIOD); + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)) + .WillOnce(Invoke([this](std::shared_ptr request) { + checkMessageRequestAndReleaseTrigger(request, true, PLAYBACK_NEXT_NAME); + })); + + m_playbackController->onContextAvailable(MOCK_CONTEXT); + m_messageTrigger.wait_for(exitLock, TEST_RESULT_WAIT_PERIOD); +} + +} // namespace test +} // namespace playbackController +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/PlaybackController/test/PlaybackRouterTest.cpp b/CapabilityAgents/PlaybackController/test/PlaybackRouterTest.cpp new file mode 100644 index 0000000000..dad5382ded --- /dev/null +++ b/CapabilityAgents/PlaybackController/test/PlaybackRouterTest.cpp @@ -0,0 +1,122 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include +#include "PlaybackController/PlaybackRouter.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace playbackController { +namespace test { + +using namespace testing; +using namespace avsCommon::avs; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::test; + +class PlaybackRouterTest : public ::testing::Test { +public: + void SetUp() override; + void TearDown() override; + +protected: + std::shared_ptr m_playbackRouter; + std::shared_ptr> m_defaultPlaybackHandler; + std::shared_ptr> m_secondPlaybackHandler; +}; + +/// Set up a test harness for running a test. +void PlaybackRouterTest::SetUp() { + m_defaultPlaybackHandler = std::make_shared>(); + m_playbackRouter = PlaybackRouter::create(m_defaultPlaybackHandler); + m_secondPlaybackHandler = std::make_shared>(); +} + +void PlaybackRouterTest::TearDown() { + m_playbackRouter->shutdown(); +} + +/** + * Test default handler is called. + */ +TEST_F(PlaybackRouterTest, defaultHandler) { + EXPECT_CALL(*m_defaultPlaybackHandler, onButtonPressed(PlaybackButton::PLAY)); + m_playbackRouter->playButtonPressed(); + + EXPECT_CALL(*m_defaultPlaybackHandler, onButtonPressed(PlaybackButton::PAUSE)); + m_playbackRouter->pauseButtonPressed(); + + EXPECT_CALL(*m_defaultPlaybackHandler, onButtonPressed(PlaybackButton::NEXT)); + m_playbackRouter->nextButtonPressed(); + + EXPECT_CALL(*m_defaultPlaybackHandler, onButtonPressed(PlaybackButton::PREVIOUS)); + m_playbackRouter->previousButtonPressed(); +} + +/** + * Test 2nd handler is called after registration. + */ +TEST_F(PlaybackRouterTest, secondHandler) { + m_playbackRouter->setHandler(m_defaultPlaybackHandler); + EXPECT_CALL(*m_defaultPlaybackHandler, onButtonPressed(PlaybackButton::PLAY)); + m_playbackRouter->playButtonPressed(); + + m_playbackRouter->setHandler(m_secondPlaybackHandler); + + EXPECT_CALL(*m_secondPlaybackHandler, onButtonPressed(PlaybackButton::PLAY)); + m_playbackRouter->playButtonPressed(); + + EXPECT_CALL(*m_secondPlaybackHandler, onButtonPressed(PlaybackButton::PAUSE)); + m_playbackRouter->pauseButtonPressed(); + + EXPECT_CALL(*m_secondPlaybackHandler, onButtonPressed(PlaybackButton::NEXT)); + m_playbackRouter->nextButtonPressed(); + + EXPECT_CALL(*m_secondPlaybackHandler, onButtonPressed(PlaybackButton::PREVIOUS)); + m_playbackRouter->previousButtonPressed(); +} + +/** + * Test default handler is called again after @c switchToDefaultHandler has been called. + */ +TEST_F(PlaybackRouterTest, switchToDefaultHandler) { + EXPECT_CALL(*m_defaultPlaybackHandler, onButtonPressed(PlaybackButton::PLAY)); + m_playbackRouter->playButtonPressed(); + + m_playbackRouter->setHandler(m_secondPlaybackHandler); + EXPECT_CALL(*m_secondPlaybackHandler, onButtonPressed(PlaybackButton::PLAY)); + m_playbackRouter->playButtonPressed(); + + m_playbackRouter->switchToDefaultHandler(); + + EXPECT_CALL(*m_defaultPlaybackHandler, onButtonPressed(PlaybackButton::PLAY)); + m_playbackRouter->playButtonPressed(); + + EXPECT_CALL(*m_defaultPlaybackHandler, onButtonPressed(PlaybackButton::PAUSE)); + m_playbackRouter->pauseButtonPressed(); + + EXPECT_CALL(*m_defaultPlaybackHandler, onButtonPressed(PlaybackButton::NEXT)); + m_playbackRouter->nextButtonPressed(); + + EXPECT_CALL(*m_defaultPlaybackHandler, onButtonPressed(PlaybackButton::PREVIOUS)); + m_playbackRouter->previousButtonPressed(); +} + +} // namespace test +} // namespace playbackController +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Settings/CMakeLists.txt b/CapabilityAgents/Settings/CMakeLists.txt new file mode 100644 index 0000000000..40fae655fe --- /dev/null +++ b/CapabilityAgents/Settings/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) +project(Settings LANGUAGES CXX) + +add_subdirectory("src") +acsdk_add_test_subdirectory_if_allowed() \ No newline at end of file diff --git a/CapabilityAgents/Settings/include/Settings/SQLiteSettingStorage.h b/CapabilityAgents/Settings/include/Settings/SQLiteSettingStorage.h new file mode 100644 index 0000000000..fa2a8817fa --- /dev/null +++ b/CapabilityAgents/Settings/include/Settings/SQLiteSettingStorage.h @@ -0,0 +1,80 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SETTINGS_INCLUDE_SETTINGS_SQLITESETTINGSTORAGE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SETTINGS_INCLUDE_SETTINGS_SQLITESETTINGSTORAGE_H_ + +#include "Settings/SettingsStorageInterface.h" + +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace settings { + +/** + * An implementation that allows us to store settings using SQLite. + * + * This class is not thread-safe. + */ +class SQLiteSettingStorage : public SettingsStorageInterface { +public: + /** + * Factory method for creating a storage object for Settings based on an SQLite database. + * + * @param configurationRoot The global config object. + * @return Pointer to the SQLiteSettingStorage object, nullptr if there's an error creating it. + */ + static std::unique_ptr create( + const avsCommon::utils::configuration::ConfigurationNode& configurationRoot); + + /** + * Constructor. + * + * @param dbFilePath The location of the SQLite database file. + */ + SQLiteSettingStorage(const std::string& databaseFilePath); + + bool createDatabase() override; + + bool open() override; + + void close() override; + + bool settingExists(const std::string& key) override; + + bool store(const std::string& key, const std::string& value) override; + + bool load(std::unordered_map* mapOfSettings) override; + + bool modify(const std::string& key, const std::string& value) override; + + bool erase(const std::string& key) override; + + bool clearDatabase() override; + + ~SQLiteSettingStorage(); + +private: + /// The underlying database class. + alexaClientSDK::storage::sqliteStorage::SQLiteDatabase m_database; +}; + +} // namespace settings +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SETTINGS_INCLUDE_SETTINGS_SQLITESETTINGSTORAGE_H_ diff --git a/CapabilityAgents/Settings/include/Settings/Settings.h b/CapabilityAgents/Settings/include/Settings/Settings.h new file mode 100644 index 0000000000..de985eb1ad --- /dev/null +++ b/CapabilityAgents/Settings/include/Settings/Settings.h @@ -0,0 +1,172 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SETTINGS_INCLUDE_SETTINGS_SETTINGS_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SETTINGS_INCLUDE_SETTINGS_SETTINGS_H_ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include "Settings/SettingsStorageInterface.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace settings { + +/** + * This class implements Settings Interface to manage Alexa Settings on the product. + * + * This class writes the Setting change to database and notifies the observers of the setting. + * @see https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/settings + */ +class Settings : public registrationManager::CustomerDataHandler { +public: + /** + * Creates a new @c Settings instance. + * @param settingsStorage An interface to store, load, modify and delete Settings. + * @param globalSettingsObserver A set of SettingsGlobalObserver which are notified when all the settings are + * changed. + * @param dataManager A dataManager object that will track the CustomerDataHandler. + * @return An instance of Settings if construction is successful or nullptr if construction fails. + */ + static std::shared_ptr create( + std::shared_ptr settingsStorage, + std::unordered_set> observers, + std::shared_ptr dataManager); + + /** + * Add an observer for a single setting mapped to the setting key. + * @param key The name of the setting to which an observer is mapped to. + * @param settingObserver The observer to be added to @c m_mapOfSettingsAttributes. + */ + void addSingleSettingObserver( + const std::string& key, + std::shared_ptr settingsObserver); + + /** + * Remove the observer for a single setting mapped to the setting key. + * @param key The name of the setting to which an observer is mapped to. + * @param settingObserver The observer to be removed from @c m_mapOfSettingsAttributes. + */ + void removeSingleSettingObserver( + const std::string& key, + std::shared_ptr settingObserver); + + /** + * Add the observer from the @c m_globalSettingsObserver. + * @param settingsGlobalObserver The observer to be added to @c m_globalSettingsObserver. + */ + void addGlobalSettingsObserver( + std::shared_ptr globalSettingsObserver); + + /** + * Remove the observer from the @c m_globalSettingsObserver. + * @param settingsGlobalObserver The observer to be removed from @c m_globalSettingsObserver. + */ + void removeGlobalSettingsObserver( + std::shared_ptr globalSettingsObserver); + + /** + * Function called by the application when a Setting is changed. It calls @c executeChangeSetting via + * the executor. + * + * @param key The name of the setting which is changed. + * @param value The new value of the setting. + * @return A future which is @c true if the setting is changed successfully else @c false. + */ + std::future changeSetting(const std::string& key, const std::string& value); + + /** + * Function which sends the default settings to AVS if the settings do not already exist in the database. + * If the settings already exist, the event is not sent. + */ + void sendDefaultSettings(); + + /** + * Clears the settings storage and attributes + */ + void clearData() override; + +private: + /** + * The structure to hold all the data of a single setting. + * + * @param valueOfSetting The value of the setting. + * @param singleSettingObservers The set of observers for the setting. + */ + struct SettingElements { + std::string valueOfSetting; + std::unordered_set> + singleSettingObservers; + }; + + /** + * Initializes the database and for the settings object. + */ + bool initialize(); + + /** + * Constructor + * + * @param settingsStorage An interface to store, load, modify and delete Settings. + * @param globalSettingsObserver A set of SettingsGlobalObserver which are notified when all the settings are + * changed. + * @param dataManager A dataManager object that will track the CustomerDataHandler. + */ + Settings( + std::shared_ptr settingsStorage, + std::unordered_set> observers, + std::shared_ptr dataManager); + + /** + * Function which implements the setting change. The function writes to the database and notifies the + * observers of the setting. + * + * @param key The name of the setting which is changed. + * @param value The new value of the setting. + * @return A boolean which is @c true if the setting is changed successfully else @c false. + */ + bool executeChangeSetting(const std::string& key, const std::string& value); + + /// The SettingsStorage object. + std::shared_ptr m_settingsStorage; + /// A set of observers which observe the map of settings. + std::unordered_set> + m_globalSettingsObserver; + /// The map of pairs of the settings. + std::unordered_map m_mapOfSettingsAttributes; + /// Executor that queues up the calls when a setting is changed. + avsCommon::utils::threading::Executor m_executor; + + /** + * Variable which indicates whether to send the default Settings to AVS or not. + * If the setting does not exist in the database, sendDefaultSetting is set to true, + * and SettingsUpdated event is sent. + */ + bool m_sendDefaultSettings; +}; +} // namespace settings +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SETTINGS_INCLUDE_SETTINGS_SETTINGS_H_ diff --git a/CapabilityAgents/Settings/include/Settings/SettingsStorageInterface.h b/CapabilityAgents/Settings/include/Settings/SettingsStorageInterface.h new file mode 100644 index 0000000000..969a49ed66 --- /dev/null +++ b/CapabilityAgents/Settings/include/Settings/SettingsStorageInterface.h @@ -0,0 +1,120 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SETTINGS_INCLUDE_SETTINGS_SETTINGSSTORAGEINTERFACE_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SETTINGS_INCLUDE_SETTINGS_SETTINGSSTORAGEINTERFACE_H_ + +#include +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace settings { + +/** + * An Interface class which defines APIs for interacting with a general database, as well as for storing, loading, + * and modifying Settings. + */ +class SettingsStorageInterface { +public: + /** + * Destructor. + */ + virtual ~SettingsStorageInterface() = default; + + /** + * Creates a new database. + * If a database is already being handled by this object or there is another internal error, then this function + * returns false. + * + * @return @c true If the database is created ok, or @c false if a database is already being handled by this object + * or there is a problem creating the database. + */ + virtual bool createDatabase() = 0; + + /** + * Open an existing database. If this object is already managing an open database, or there is a problem opening + * the database, this function returns false. + * + * @return @c true If the database is opened ok, @c false if this object is already managing an open database, or if + * there is another internal reason the database could not be opened. + */ + virtual bool open() = 0; + + /** + * Close the currently open database, if one is open. + */ + virtual void close() = 0; + + /** + * Query whether a Setting is currently stored with the given token. + * + * @param key The name of the setting which uniquely identifies a setting. + * @return @c true If the setting is stored in the database, @c false otherwise. + */ + virtual bool settingExists(const std::string& key) = 0; + + /** + * Stores a single @c Setting in the database. + * + * @param key The name of the setting. + * @param value The value of the setting to which it has to be set. + * @return Whether the setting was successfully stored. + */ + virtual bool store(const std::string& key, const std::string& value) = 0; + + /** + * Loads all settings in the database. + * + * @param[out] mapOfSettings The map where settings should be stored. + * @return Whether the settings were successfully loaded. + */ + virtual bool load(std::unordered_map* mapOfSettings) = 0; + + /** + * Updates a database record of the Setting parameter. + * The field which is updated by this operation is the value of the particular setting. + * + * @param key The name of the setting to be modified. + * @param value The value of the setting to which it has to be set. + * @return Whether the setting was successfully modified. + */ + virtual bool modify(const std::string& key, const std::string& value) = 0; + + /** + * Erases a single setting from the database. + * + * @param key The name of the setting to be deleted. + * @return Whether the setting was successfully erased. + */ + virtual bool erase(const std::string& key) = 0; + + /** + * A utility function to clear the database of all records. Note that the database will still exist, as will + * the tables. Only the rows will be erased. + * + * @return Whether the database was successfully cleared. + */ + virtual bool clearDatabase() = 0; +}; + +} // namespace settings +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SETTINGS_INCLUDE_SETTINGS_SETTINGSSTORAGEINTERFACE_H_ diff --git a/CapabilityAgents/Settings/include/Settings/SettingsUpdatedEventSender.h b/CapabilityAgents/Settings/include/Settings/SettingsUpdatedEventSender.h new file mode 100644 index 0000000000..6a9749e34d --- /dev/null +++ b/CapabilityAgents/Settings/include/Settings/SettingsUpdatedEventSender.h @@ -0,0 +1,53 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SETTINGS_INCLUDE_SETTINGS_SETTINGSUPDATEDEVENTSENDER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SETTINGS_INCLUDE_SETTINGS_SETTINGSUPDATEDEVENTSENDER_H_ + +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace settings { + +/** + * This class sends the SettingsUpdated event to AVS when it receives a change in one or more settings. + */ +class SettingsUpdatedEventSender : public avsCommon::sdkInterfaces::GlobalSettingsObserverInterface { +public: + /** + * Creates a new @c SettingsUpdatedEventSender instance. + * @param messageSender The object to send messages to AVS. + */ + static std::unique_ptr create( + std::shared_ptr messageSender); + + void onSettingChanged(const std::unordered_map& mapOfSettings) override; + +private: + /** + * Constructor for SettingsUpdatedEventSender. + */ + SettingsUpdatedEventSender(std::shared_ptr messageSender); + + /// Object to send messages to AVS. + std::shared_ptr m_messageSender; +}; +} // namespace settings +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SETTINGS_INCLUDE_SETTINGS_SETTINGSUPDATEDEVENTSENDER_H_ diff --git a/CapabilityAgents/Settings/src/CMakeLists.txt b/CapabilityAgents/Settings/src/CMakeLists.txt new file mode 100644 index 0000000000..0ceaef59d0 --- /dev/null +++ b/CapabilityAgents/Settings/src/CMakeLists.txt @@ -0,0 +1,17 @@ +add_definitions("-DACSDK_LOG_MODULE=Settings") + +add_library(Settings SHARED + Settings.cpp + SettingsUpdatedEventSender.cpp + SQLiteSettingStorage.cpp) + +target_include_directories(Settings PUBLIC + "${Settings_SOURCE_DIR}/include" + "${SpeechSynthesizer_SOURCE_DIR}/include" + "${SQLiteStorage_SOURCE_DIR}/include" + "{RegistrationManager_SOURCE_DIR}/include") + +target_link_libraries(Settings AVSCommon SQLiteStorage RegistrationManager) + +# install target +asdk_install() \ No newline at end of file diff --git a/CapabilityAgents/Settings/src/SQLiteSettingStorage.cpp b/CapabilityAgents/Settings/src/SQLiteSettingStorage.cpp new file mode 100644 index 0000000000..b1839bec05 --- /dev/null +++ b/CapabilityAgents/Settings/src/SQLiteSettingStorage.cpp @@ -0,0 +1,298 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include +#include +#include + +#include "Settings/SQLiteSettingStorage.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace settings { + +using namespace avsCommon::utils::logger; +using namespace avsCommon::utils::string; +using namespace alexaClientSDK::storage::sqliteStorage; + +/// String to identify log entries originating from this file. +static const std::string TAG("SQLiteSettingsStorage"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/// The key in our config file to find the root of settings. +static const std::string SETTINGS_CONFIGURATION_ROOT_KEY = "settings"; +/// The key in our config file to find the database file path. +static const std::string SETTINGS_DB_FILE_PATH_KEY = "databaseFilePath"; + +/// The name of the settings table. +static const std::string SETTINGS_TABLE_NAME = "settings"; +/// The setting key. +static const std::string SETTING_KEY = "key"; +/// The setting value. +static const std::string SETTING_VALUE = "value"; +/// The SQL string to create the settings table. +static const std::string CREATE_SETTINGS_TABLE_SQL_STRING = std::string("CREATE TABLE ") + SETTINGS_TABLE_NAME + " (" + + SETTING_KEY + " TEXT PRIMARY KEY NOT NULL," + + SETTING_VALUE + " TEXT NOT NULL);"; + +std::unique_ptr SQLiteSettingStorage::create( + const avsCommon::utils::configuration::ConfigurationNode& configurationRoot) { + auto settingsConfigurationRoot = configurationRoot[SETTINGS_CONFIGURATION_ROOT_KEY]; + if (!settingsConfigurationRoot) { + ACSDK_ERROR(LX("createFailed") + .d("reason", "Could not load config for the Settings capability agent") + .d("key", SETTINGS_CONFIGURATION_ROOT_KEY)); + return nullptr; + } + + std::string settingDbFilePath; + if (!settingsConfigurationRoot.getString(SETTINGS_DB_FILE_PATH_KEY, &settingDbFilePath) || + settingDbFilePath.empty()) { + ACSDK_ERROR(LX("createFailed").d("reason", "Could not load config value").d("key", SETTINGS_DB_FILE_PATH_KEY)); + return nullptr; + } + + return std::unique_ptr(new SQLiteSettingStorage(settingDbFilePath)); +} + +SQLiteSettingStorage::SQLiteSettingStorage(const std::string& databaseFilePath) : m_database{databaseFilePath} { +} + +bool SQLiteSettingStorage::createDatabase() { + if (!m_database.initialize()) { + ACSDK_ERROR(LX("createDatabaseFailed").d("reason", "SQLiteCreateDatabaseFailed")); + return false; + } + + if (!m_database.performQuery(CREATE_SETTINGS_TABLE_SQL_STRING)) { + ACSDK_ERROR(LX("createDatabaseFailed").d("reason", "PerformQueryFailed")); + close(); + return false; + } + + return true; +} + +bool SQLiteSettingStorage::open() { + return m_database.open(); +} + +void SQLiteSettingStorage::close() { + m_database.close(); +} + +bool SQLiteSettingStorage::settingExists(const std::string& key) { + std::string sqlString = "SELECT COUNT(*) FROM " + SETTINGS_TABLE_NAME + " WHERE " + SETTING_KEY + "=?;"; + + auto statement = m_database.createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("settingExistsFailed").d("reason", "SQliteStatementInvalid")); + return false; + } + + int boundParam = 1; + if (!statement->bindStringParameter(boundParam, key)) { + ACSDK_ERROR(LX("settingExistsFailed").d("reason", "BindParameterFailed")); + return false; + } + + if (!statement->step()) { + ACSDK_ERROR(LX("settingExistsFailed").d("reason", "StepToRowFailed")); + return false; + } + + const int RESULT_COLUMN_POSITION = 0; + std::string rowValue = statement->getColumnText(RESULT_COLUMN_POSITION); + + int countValue = 0; + if (!stringToInt(rowValue.c_str(), &countValue)) { + ACSDK_ERROR(LX("settingExistsFailed").d("StringToIntFailed", rowValue)); + return false; + } + + statement->finalize(); + return countValue > 0; +} + +bool SQLiteSettingStorage::store(const std::string& key, const std::string& value) { + if (value.empty()) { + ACSDK_ERROR(LX("storeFailed").d("reason", "SettingValueisEmpty")); + return false; + } + + if (settingExists(key)) { + ACSDK_ERROR(LX("storeFailed").d("reason", "SettingAlreadyExists").d("key", key)); + return false; + } + + std::string sqlString = std::string("INSERT INTO " + SETTINGS_TABLE_NAME + " (") + SETTING_KEY + ", " + + SETTING_VALUE + ") VALUES (" + "?, ?" + ");"; + + auto statement = m_database.createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("storeFailed").d("reason", "SQliteStatementInvalid")); + return false; + } + + int boundParam = 1; + if (!statement->bindStringParameter(boundParam++, key) || !statement->bindStringParameter(boundParam, value)) { + ACSDK_ERROR(LX("storeFailed").d("reason", "BindParameterFailed")); + return false; + } + + if (!statement->step()) { + ACSDK_ERROR(LX("storeFailed").d("reason", "StepToRowFailed")); + return false; + } + + statement->finalize(); + return true; +} + +bool SQLiteSettingStorage::load(std::unordered_map* mapOfSettings) { + std::string sqlString = "SELECT * FROM " + SETTINGS_TABLE_NAME + ";"; + + auto statement = m_database.createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("loadFailed").d("reason", "SQliteStatementInvalid")); + return false; + } + + std::string key; + std::string value; + + if (!statement->step()) { + ACSDK_ERROR(LX("loadFailed").d("reason", "StepToRowFailed")); + return false; + } + + while (SQLITE_ROW == statement->getStepResult()) { + int numberColumns = statement->getColumnCount(); + + // SQLite cannot guarantee the order of the columns in a given row, so this logic is required. + for (int i = 0; i < numberColumns; i++) { + std::string columnName = statement->getColumnName(i); + + if (SETTING_KEY == columnName) { + key = statement->getColumnText(i); + } else if (SETTING_VALUE == columnName) { + value = statement->getColumnText(i); + } + } + + mapOfSettings->insert(make_pair(key, value)); + + statement->step(); + } + + statement->finalize(); + return true; +} + +bool SQLiteSettingStorage::modify(const std::string& key, const std::string& value) { + if (value.empty()) { + ACSDK_ERROR(LX("modifyFailed").d("reason", "SettingValueisEmpty")); + return false; + } + + if (!settingExists(key)) { + ACSDK_ERROR(LX("modifyFailed").d("reason", "SettingDoesNotExistInDatabase").d("key", key)); + return false; + } + + std::string sqlString = + std::string("UPDATE " + SETTINGS_TABLE_NAME + " SET ") + "value=?" + "WHERE " + SETTING_KEY + "=?;"; + + auto statement = m_database.createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("modifyFailed").d("reason", "SQliteStatementInvalid")); + return false; + } + + int boundParam = 1; + if (!statement->bindStringParameter(boundParam++, value) || !statement->bindStringParameter(boundParam, key)) { + ACSDK_ERROR(LX("modifyFailed").d("reason", "BindParameterFailed")); + return false; + } + + if (!statement->step()) { + ACSDK_ERROR(LX("modifyFailed").d("reason", "StepToRowFailed")); + return false; + } + + statement->finalize(); + return true; +} + +bool SQLiteSettingStorage::erase(const std::string& key) { + if (key.empty()) { + ACSDK_ERROR(LX("eraseFailed").d("reason", "SettingKeyEmpty")); + return false; + } + + if (!settingExists(key)) { + ACSDK_ERROR(LX("eraseFailed").d("reason", "SettingDoesNotExistInDatabase").d("key", key)); + return false; + } + + std::string sqlString = "DELETE FROM " + SETTINGS_TABLE_NAME + " WHERE " + SETTING_KEY + "=?;"; + + auto statement = m_database.createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("eraseFailed").d("reason", "SQliteStatementInvalid")); + return false; + } + + int boundParam = 1; + if (!statement->bindStringParameter(boundParam, key)) { + ACSDK_ERROR(LX("eraseFailed").d("reason", "BindParameterFailed")); + return false; + } + + if (!statement->step()) { + ACSDK_ERROR(LX("eraseFailed").d("reason", "StepToRowFailed")); + return false; + } + + statement->finalize(); + return true; +} + +bool SQLiteSettingStorage::clearDatabase() { + if (!m_database.clearTable(SETTINGS_TABLE_NAME)) { + ACSDK_ERROR(LX("clearDatabaseFailed").d("reason", "SqliteClearTableFailed")); + return false; + } + return true; +} + +SQLiteSettingStorage::~SQLiteSettingStorage() { + close(); +} +} // namespace settings +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Settings/src/Settings.cpp b/CapabilityAgents/Settings/src/Settings.cpp new file mode 100644 index 0000000000..9b051fe788 --- /dev/null +++ b/CapabilityAgents/Settings/src/Settings.cpp @@ -0,0 +1,261 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include "Settings/Settings.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace settings { + +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::utils::configuration; +/// String to identify log entries originating from this file. +static const std::string TAG{"Settings"}; + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/// The key in our config file to find the root of settings. +static const std::string SETTINGS_CONFIGURATION_ROOT_KEY = "settings"; +/// The key in our config file to find the database file path. +static const std::string SETTINGS_DEFAULT_SETTINGS_ROOT_KEY = "defaultAVSClientSettings"; +/// The acceptable setting keys to find in our config file. +static const std::unordered_set SETTINGS_ACCEPTED_KEYS = {"locale"}; + +std::shared_ptr Settings::create( + std::shared_ptr settingsStorage, + std::unordered_set> globalSettingsObserver, + std::shared_ptr dataManager) { + if (!settingsStorage) { + ACSDK_ERROR(LX("createFailed").d("reason", "settingsStorageNullReference").d("return", "nullptr")); + return nullptr; + } + + if (globalSettingsObserver.empty()) { + ACSDK_ERROR(LX("createFailed").d("reason", "emptysettingsGlobalObserver").d("return", "nullptr")); + return nullptr; + } + + for (auto observer : globalSettingsObserver) { + if (!observer) { + ACSDK_ERROR(LX("createFailed").d("reason", "settingsGlobalObserverNullReference").d("return", "nullptr")); + return nullptr; + } + } + + auto settingsObject = std::shared_ptr(new Settings(settingsStorage, globalSettingsObserver, dataManager)); + + if (!settingsObject->initialize()) { + ACSDK_ERROR(LX("createFailed").d("reason", "Initialization error.")); + return nullptr; + } + + return settingsObject; +} + +/* + * TODO - Find if default settings can be sent by connection observer + * + * https://issues.labcollab.net/browse/ACSDK-516 + */ +void Settings::sendDefaultSettings() { + // If m_sendDefaultSettings is true, load mapOfSettings with values from @c m_mapOfSettingsAttributes and send to + // AVS. + if (m_sendDefaultSettings) { + std::unordered_map mapOfSettings; + + for (auto& it : m_mapOfSettingsAttributes) { + mapOfSettings.insert(make_pair(it.first, it.second.valueOfSetting)); + } + + for (auto observer : m_globalSettingsObserver) { + observer->onSettingChanged(mapOfSettings); + } + } +} + +void Settings::addGlobalSettingsObserver(std::shared_ptr globalSettingsObserver) { + if (!globalSettingsObserver) { + ACSDK_ERROR(LX("addglobalSettingsObserverFailed").d("reason", "globalSettingsObserverNullReference")); + return; + } + + m_executor.submit([this, globalSettingsObserver] { + // if the observer already exists, it is not added. + if (!m_globalSettingsObserver.insert(globalSettingsObserver).second) { + return; + } + }); +} + +void Settings::removeGlobalSettingsObserver(std::shared_ptr globalSettingsObserver) { + if (!globalSettingsObserver) { + ACSDK_ERROR(LX("removeGlobalSettingsObserverFailed").d("reason", "globalSettingsObserverNullReference")); + return; + } + m_executor.submit([this, globalSettingsObserver] { m_globalSettingsObserver.erase(globalSettingsObserver); }); +} + +void Settings::addSingleSettingObserver( + const std::string& key, + std::shared_ptr settingObserver) { + if (!settingObserver) { + ACSDK_ERROR(LX("addSingleSettingObserverFailed").d("reason", "singleSettingObserverNullReference")); + return; + } + m_executor.submit([this, key, settingObserver] { + auto it = m_mapOfSettingsAttributes.find(key); + if (it != m_mapOfSettingsAttributes.end()) { + it->second.singleSettingObservers.insert(settingObserver); + } + }); +} + +void Settings::removeSingleSettingObserver( + const std::string& key, + std::shared_ptr settingObserver) { + if (!settingObserver) { + ACSDK_ERROR(LX("removeSingleSettingObserverFailed").d("reason", "singleSettingObserverNullReference")); + return; + } + m_executor.submit([this, key, settingObserver] { + auto it = m_mapOfSettingsAttributes.find(key); + if (it != m_mapOfSettingsAttributes.end()) { + it->second.singleSettingObservers.erase(settingObserver); + } + }); +} + +std::future Settings::changeSetting(const std::string& key, const std::string& value) { + return m_executor.submit([this, key, value] { return executeChangeSetting(key, value); }); +} + +bool Settings::executeChangeSetting(const std::string& key, const std::string& value) { + if (!m_settingsStorage->modify(key, value)) { + ACSDK_ERROR(LX("executeSettingChangedFailed").d("reason", "databaseUpdateFailed")); + return false; + } + + // Store the setting in the map @c m_mapOfSettingsAttributes. + auto search = m_mapOfSettingsAttributes.find(key); + if (search != m_mapOfSettingsAttributes.end()) { + search->second.valueOfSetting = value; + } + + // Notify the observers of the single settting with value of setting. + if (search != m_mapOfSettingsAttributes.end()) { + for (auto observer : search->second.singleSettingObservers) { + observer->onSettingChanged(key, value); + } + } + + std::unordered_map mapOfSettings; + + for (auto& it : m_mapOfSettingsAttributes) { + mapOfSettings.insert(make_pair(it.first, it.second.valueOfSetting)); + } + + // Notify the global observers with the entire map of settings. + for (auto observer : m_globalSettingsObserver) { + observer->onSettingChanged(mapOfSettings); + } + return true; +} + +bool Settings::initialize() { + if (!m_settingsStorage->open()) { + ACSDK_INFO(LX("initialize").m("database file does not exist. Creating.")); + if (!m_settingsStorage->createDatabase()) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "SettingsDatabaseCreationFailed")); + return false; + } + } + + std::unordered_map mapOfSettings; + + // Load all the settings from the database. + if (!m_settingsStorage->load(&mapOfSettings)) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "databaseReadFailed")); + return false; + } + + auto configurationRoot = ConfigurationNode::getRoot()[SETTINGS_CONFIGURATION_ROOT_KEY]; + if (!configurationRoot) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "SettingsConfigurationRootNotFound.")); + return false; + } + + auto defaultSettingRoot = configurationRoot[SETTINGS_DEFAULT_SETTINGS_ROOT_KEY]; + + if (!defaultSettingRoot) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "DefaultSettingsRootNotFound")); + return false; + } + + std::string settingValue; + + for (auto& it : SETTINGS_ACCEPTED_KEYS) { + if (!defaultSettingRoot.getString(it, &settingValue) || settingValue.empty()) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "SettingNotFoundinConfigFile")); + return false; + } + // search if the setting exists in database. + auto searchDatabase = mapOfSettings.find(it); + SettingElements elem; + + // if the setting exists in the database, store that value in @c m_mapOfSettingsAttributes. + if (searchDatabase != mapOfSettings.end()) { + elem.valueOfSetting = searchDatabase->second; + m_mapOfSettingsAttributes[searchDatabase->first] = elem; + } else { // if it doesn't exist, store the default Value in the database and @c m_mapOfSettingsAttributes. + elem.valueOfSetting = settingValue; + m_mapOfSettingsAttributes[it] = elem; + if (!m_settingsStorage->store(it, settingValue)) { + ACSDK_ERROR(LX("initializeFailed").d("reason", "databaseStoreFailed")); + return false; + } + m_sendDefaultSettings = true; + } + } + return true; +} + +void Settings::clearData() { + auto result = m_executor.submit([this]() { + // Notify the observers of the single settting with value of setting. + m_settingsStorage->clearDatabase(); + m_mapOfSettingsAttributes.clear(); + }); + result.wait(); +} + +Settings::Settings( + std::shared_ptr settingsStorage, + std::unordered_set> globalSettingsObserver, + std::shared_ptr dataManager) : + CustomerDataHandler{dataManager}, + m_settingsStorage{settingsStorage}, + m_globalSettingsObserver{globalSettingsObserver}, + m_sendDefaultSettings{false} { +} +} // namespace settings +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Settings/src/SettingsUpdatedEventSender.cpp b/CapabilityAgents/Settings/src/SettingsUpdatedEventSender.cpp new file mode 100644 index 0000000000..7c229cac5e --- /dev/null +++ b/CapabilityAgents/Settings/src/SettingsUpdatedEventSender.cpp @@ -0,0 +1,117 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include +#include +#include +#include +#include +#include + +#include "Settings/SettingsUpdatedEventSender.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace settings { + +using namespace avsCommon::avs; +using namespace avsCommon::utils; +using namespace avsCommon::sdkInterfaces; +using namespace rapidjson; +/// String to identify log entries originating from this file. +static const std::string TAG{"SettingsUpdatedEventSender"}; + +/// The namespace for this event +static const std::string NAMESPACE = "Settings"; + +/// JSON value for a SettingsUpdated event's name. +static const std::string SETTINGS_UPDATED_EVENT_NAME = "SettingsUpdated"; + +/// JSON value for the settings field of the SettingsUpdated event. +static const char SETTINGS_STRING[] = "settings"; + +/// JSON value for the key field of the settings. +static const char SETTING_KEY[] = "key"; + +/// JSON value for the value field of the settings. +static const char SETTING_VALUE[] = "value"; + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +std::unique_ptr SettingsUpdatedEventSender::create( + std::shared_ptr messageSender) { + if (!messageSender) { + ACSDK_ERROR(LX("createFailed").d("reason", "messageSenderNullReference")); + return nullptr; + } + + return std::unique_ptr(new SettingsUpdatedEventSender(messageSender)); +} + +void SettingsUpdatedEventSender::onSettingChanged(const std::unordered_map& mapOfSettings) { + // Constructing Json for Payload + rapidjson::Document payloadDataDocument(rapidjson::kObjectType); + rapidjson::Value settingsArray(rapidjson::kArrayType); + + for (auto& it : mapOfSettings) { + rapidjson::Value settingsObj(rapidjson::kObjectType); + settingsObj.AddMember(SETTING_KEY, it.first, payloadDataDocument.GetAllocator()); + settingsObj.AddMember(SETTING_VALUE, it.second, payloadDataDocument.GetAllocator()); + settingsArray.PushBack(settingsObj, payloadDataDocument.GetAllocator()); + } + + payloadDataDocument.AddMember(SETTINGS_STRING, settingsArray, payloadDataDocument.GetAllocator()); + rapidjson::StringBuffer payloadJson; + rapidjson::Writer payloadWriter(payloadJson); + payloadDataDocument.Accept(payloadWriter); + std::string payload = payloadJson.GetString(); + + // Payload should not be empty. + if (payload.empty()) { + ACSDK_ERROR(LX("onSettingChangedFailed").d("reason", "payloadEmpty")); + return; + } + + auto msgIdAndJsonEvent = buildJsonEventString(NAMESPACE, SETTINGS_UPDATED_EVENT_NAME, "", payload, ""); + + // msgId should not be empty + if (msgIdAndJsonEvent.first.empty()) { + ACSDK_ERROR(LX("onSettingChangedFailed").d("reason", "msgIdEmpty")); + return; + } + + // Json event should not be empty + if (msgIdAndJsonEvent.second.empty()) { + ACSDK_ERROR(LX("onSettingChangedFailed").d("reason", "JsonEventEmpty")); + return; + } + + std::shared_ptr request = std::make_shared(msgIdAndJsonEvent.second); + m_messageSender->sendMessage(request); +} + +SettingsUpdatedEventSender::SettingsUpdatedEventSender(std::shared_ptr messageSender) : + m_messageSender{messageSender} { +} + +} // namespace settings +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/Settings/test/CMakeLists.txt b/CapabilityAgents/Settings/test/CMakeLists.txt new file mode 100644 index 0000000000..1595f499f6 --- /dev/null +++ b/CapabilityAgents/Settings/test/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +set(INCLUDE_PATH + "${Settings_INCLUDE_DIR}" + "${RAPIDJSON_INCLUDE_DIR}" + "${AVSCommon_SOURCE_DIR}/AVS/test" + "${AVSCommon_SOURCE_DIR}/SDKInterfaces/test") + +discover_unit_tests("${INCLUDE_PATH}" "Settings") \ No newline at end of file diff --git a/CapabilityAgents/Settings/test/SettingsTest.cpp b/CapabilityAgents/Settings/test/SettingsTest.cpp new file mode 100644 index 0000000000..0a0cff7ced --- /dev/null +++ b/CapabilityAgents/Settings/test/SettingsTest.cpp @@ -0,0 +1,454 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/// @file SettingsTest.cpp + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Settings/Settings.h" +#include "Settings/SettingsUpdatedEventSender.h" +#include "Settings/SQLiteSettingStorage.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace settings { +namespace test { + +using namespace avsCommon::avs::initialization; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::test; +using namespace avsCommon::utils::configuration; +using namespace avsCommon::utils::json::jsonUtils; +using namespace ::testing; + +/// JSON key for the event section of a message. +static const std::string MESSAGE_EVENT_KEY = "event"; + +/// JSON key for the header section of a message. +static const std::string MESSAGE_HEADER_KEY = "header"; + +/// JSON key for the namespace field of a message header. +static const std::string MESSAGE_NAMESPACE_KEY = "namespace"; + +/// JSON key for the name field of a message header. +static const std::string MESSAGE_NAME_KEY = "name"; + +/// JSON key for the message ID field of a message header. +static const std::string MESSAGE_ID_KEY = "messageId"; + +/// JSON key for the payload section of an message. +static const std::string MESSAGE_PAYLOAD_KEY = "payload"; + +/// JSON key for the settings array filed of the message. +static const std::string MESSAGE_SETTINGS_KEY = "settings"; + +/// The namespace for this event. +static const std::string SETTINGS_NAMESPACE = "Settings"; + +/// JSON value for a SettingsUpdated event's name. +static const std::string SETTINGS_UPDATED_EVENT_NAME = "SettingsUpdated"; + +/// JSON value for the settings array's key. +static const std::string SETTINGS_KEY = "key"; + +/// JSON value for the settings array's value. +static const std::string SETTINGS_VALUE = "value"; + +/// JSON text for settings config values for initialization of settings Object. +// clang-format off +static const std::string SETTINGS_CONFIG_JSON = + "{" + "\"settings\":{" + "\"databaseFilePath\":\"settingsUnitTest.db\"," + "\"defaultAVSClientSettings\":{" + "\"locale\":\"en-GB\"" + "}" + "}" + "}"; +// clang-format on + +/** + * Utility function to determine if the storage component is opened. + * + * @param storage The storage component to check. + * @return True if the storage component's underlying database is opened, false otherwise. + */ +static bool isOpen(const std::shared_ptr& storage) { + std::unordered_map dummyMapOfSettings; + return storage->load(&dummyMapOfSettings); +} + +/** + * This class allows us to test SingleSettingObserver interaction. + */ +class MockSingleSettingObserver : public SingleSettingObserverInterface { +public: + MockSingleSettingObserver() { + } + MOCK_METHOD2(onSettingChanged, void(const std::string& key, const std::string& value)); +}; + +/** + * This class allows us to test GlobalSettingsObserver interaction. + */ +class MockGlobalSettingsObserver : public GlobalSettingsObserverInterface { +public: + MockGlobalSettingsObserver() { + } + MOCK_METHOD1(onSettingChanged, void(const std::unordered_map& mapOfSettings)); +}; + +/** + * Utility class to take the parameters of SettingsUpdated event and provide functionalities + * to verify the event being sent. + */ +class SettingsVerifyTest { +public: + /** + * Constructs an object which captures pair of settings in the map. + */ + SettingsVerifyTest(std::unordered_map mapOfSettings); + + /** + * This function verifies that the JSON content of SettingsUpdated event @c MessageRequest is correct. + * This function signature matches that of @c MessageSenderInterface::sendMessage() so that an + * @c ON_CALL() can @c Invoke() this function directly. + * + * @param request The @c MessageRequest to verify. + */ + void verifyMessage(std::shared_ptr request); + +private: + /// The map of settings which holds the pair of settings sent to AVS. + std::unordered_map m_mapOfSettings; +}; + +SettingsVerifyTest::SettingsVerifyTest(std::unordered_map mapOfSettings) : + m_mapOfSettings{mapOfSettings} { +} + +void SettingsVerifyTest::verifyMessage(std::shared_ptr request) { + rapidjson::Document document; + document.Parse(request->getJsonContent().c_str()); + EXPECT_FALSE(document.HasParseError()) + << "rapidjson detected a parsing error at offset:" << std::to_string(document.GetErrorOffset()) + << ", error message: " << GetParseError_En(document.GetParseError()); + + auto event = document.FindMember(MESSAGE_EVENT_KEY); + ASSERT_NE(event, document.MemberEnd()); + auto header = event->value.FindMember(MESSAGE_HEADER_KEY); + ASSERT_NE(header, event->value.MemberEnd()); + auto payload = event->value.FindMember(MESSAGE_PAYLOAD_KEY); + ASSERT_NE(payload, event->value.MemberEnd()); + auto settings = payload->value.FindMember(MESSAGE_SETTINGS_KEY); + ASSERT_NE(settings, payload->value.MemberEnd()); + + std::string temp_string = ""; + ASSERT_TRUE(retrieveValue(header->value, MESSAGE_NAMESPACE_KEY, &temp_string)); + EXPECT_EQ(temp_string, SETTINGS_NAMESPACE); + ASSERT_TRUE(retrieveValue(header->value, MESSAGE_NAME_KEY, &temp_string)); + EXPECT_EQ(temp_string, SETTINGS_UPDATED_EVENT_NAME); + ASSERT_TRUE(retrieveValue(header->value, MESSAGE_ID_KEY, &temp_string)); + ASSERT_NE(temp_string, ""); + ASSERT_TRUE(jsonArrayExists(payload->value, MESSAGE_SETTINGS_KEY)); + rapidjson::Value& array = settings->value; + + ASSERT_TRUE(array.Size() == m_mapOfSettings.size()); + rapidjson::SizeType i; + std::unordered_map::const_iterator j; + for (i = array.Size() - 1, j = m_mapOfSettings.begin(); j != m_mapOfSettings.end(); i--, j++) { + auto key = array[i].FindMember(SETTINGS_KEY); + ASSERT_NE(key, array[i].MemberEnd()); + auto value = array[i].FindMember(SETTINGS_VALUE); + ASSERT_NE(value, array[i].MemberEnd()); + ASSERT_TRUE(retrieveValue(array[i], SETTINGS_KEY, &temp_string)); + EXPECT_EQ(temp_string, j->first); + ASSERT_TRUE(retrieveValue(array[i], SETTINGS_VALUE, &temp_string)); + EXPECT_EQ(temp_string, j->second); + } +} + +/// Test harness for @c Settings class. +class SettingsTest : public ::testing::Test { +public: + void SetUp() override; + void TearDown() override; + +protected: + /** + * Function to send a SettingsUpdated event and verify that it succeeds. Parameters are passed through + * @c SettingsVerifyTest::SettingsVerifyTest(). + * + * @param key The name of the setting to change. + * @param value The value of the setting to which it has to be set. + * @return @c true if the SettingsUpdated event was sent correctly, else @c false. + */ + bool testChangeSettingSucceeds(const std::string& key, const std::string& value); + /// The mock @c MessageSenderInterface. + std::shared_ptr m_mockMessageSender; + /// Global Observer for all the settings which sends the event. + std::shared_ptr m_settingsEventSender; + /// Settings Storage object. + std::shared_ptr m_storage; + /// The @c Settings Object to test. + std::shared_ptr m_settingsObject; + /// The object which verifies the json of message sent. + std::shared_ptr m_settingsVerifyObject; + /// The map which stores all the settings for the object. + std::unordered_map m_mapOfSettings; + /// The data manager required to build the base object + std::shared_ptr m_dataManager; +}; + +void SettingsTest::SetUp() { + m_dataManager = std::make_shared(); + std::istringstream inString(SETTINGS_CONFIG_JSON); + ASSERT_TRUE(AlexaClientSDKInit::initialize({&inString})); + m_mockMessageSender = std::make_shared(); + m_settingsEventSender = SettingsUpdatedEventSender::create(m_mockMessageSender); + ASSERT_NE(m_settingsEventSender, nullptr); + m_storage = std::make_shared("settingsUnitTest.db"); + m_settingsObject = Settings::create(m_storage, {m_settingsEventSender}, m_dataManager); + ASSERT_NE(m_settingsObject, nullptr); + ASSERT_TRUE(m_storage->load(&m_mapOfSettings)); +} + +void SettingsTest::TearDown() { + m_mapOfSettings.clear(); + m_storage->clearDatabase(); + AlexaClientSDKInit::uninitialize(); +} + +bool SettingsTest::testChangeSettingSucceeds(const std::string& key, const std::string& value) { + std::mutex mutex; + std::condition_variable conditionVariable; + bool done = false; + + ON_CALL(*m_mockMessageSender, sendMessage(_)) + .WillByDefault(DoAll( + Invoke([this, key, value](std::shared_ptr request) { + m_mapOfSettings[key] = value; + m_settingsVerifyObject = std::make_shared(m_mapOfSettings); + m_settingsVerifyObject->verifyMessage(request); + }), + InvokeWithoutArgs([&] { + std::lock_guard lock(mutex); + done = true; + conditionVariable.notify_one(); + }))); + m_settingsObject->changeSetting(key, value); + std::unique_lock lock(mutex); + return conditionVariable.wait_for(lock, std::chrono::seconds(1), [&done] { return done; }); +} + +/** + * Test to verify the @c create function of @c Settings class. + */ +TEST_F(SettingsTest, createTest) { + ASSERT_EQ( + nullptr, + m_settingsObject->create( + m_storage, std::unordered_set>(), m_dataManager)); + ASSERT_EQ(nullptr, m_settingsObject->create(nullptr, {m_settingsEventSender}, m_dataManager)); + ASSERT_EQ(nullptr, m_settingsObject->create(m_storage, {nullptr}, m_dataManager)); +} + +/** + * Test to verify if by adding a global observer and changing the setting, + * the global observer is notified of the change. It also verifies that event is being sent in correct JSON format. + */ +TEST_F(SettingsTest, addGlobalSettingsObserverTest) { + std::shared_ptr mockGlobalSettingObserver; + mockGlobalSettingObserver = std::make_shared(); + m_settingsObject->addGlobalSettingsObserver(mockGlobalSettingObserver); + EXPECT_CALL(*mockGlobalSettingObserver, onSettingChanged(_)).Times(1); + ASSERT_TRUE(testChangeSettingSucceeds("locale", "en-US")); +} + +/** + * Test to verify if by removing a global observer and changing the setting, + * the global observer is not notified of the change. It also verifies that event is being sent in correct JSON format. + */ +TEST_F(SettingsTest, removeGlobalSettingsObserverTest) { + std::shared_ptr mockGlobalSettingObserver; + mockGlobalSettingObserver = std::make_shared(); + m_settingsObject->removeGlobalSettingsObserver(mockGlobalSettingObserver); + EXPECT_CALL(*mockGlobalSettingObserver, onSettingChanged(_)).Times(0); + ASSERT_TRUE(testChangeSettingSucceeds("locale", "en-US")); +} + +/** + * Test to verify @c addSingleSettingObserver function. This test verifies if the setting key is invalid + * i.e. it doesn't exist in the list of @c SETTINGS_ACCEPTED_KEYS, the observer corresponding to it + * will not be added. + */ +TEST_F(SettingsTest, addSingleSettingObserverWithInvalidKeyTest) { + std::shared_ptr wakewordObserver; + wakewordObserver = std::make_shared(); + m_settingsObject->addSingleSettingObserver("wakeword", wakewordObserver); + EXPECT_CALL(*wakewordObserver, onSettingChanged(_, _)).Times(0); + ASSERT_FALSE(testChangeSettingSucceeds("wakeword", "Alexa")); + std::shared_ptr localeObserver; + localeObserver = std::make_shared(); + m_settingsObject->addSingleSettingObserver("local", localeObserver); + EXPECT_CALL(*localeObserver, onSettingChanged(_, _)).Times(0); + ASSERT_FALSE(testChangeSettingSucceeds("local", "en-US")); +} + +/** + * Test to verify the function @c removeSingleSettingObserver. The test checks that if an observer is added for + * an invalid key even if it is a typo, the observer will not be removed. + * It also verifies that event is being sent in correct JSON format. + */ +TEST_F(SettingsTest, removeSingleSettingObserverWithInvalidKeyTest) { + std::shared_ptr localeObserver; + localeObserver = std::make_shared(); + m_settingsObject->addSingleSettingObserver("locale", localeObserver); + m_settingsObject->removeSingleSettingObserver("local", localeObserver); + EXPECT_CALL(*localeObserver, onSettingChanged(_, _)).Times(1); + ASSERT_TRUE(testChangeSettingSucceeds("locale", "en-US")); +} + +/** + * Test verifies that if an observer is removed with a valid key, the observer gets removed + * and is not notified when the setting changes. It also verifies that event is being sent in correct JSON format. + */ +TEST_F(SettingsTest, removeSingleSettingObserverWithCorrectKeyTest) { + std::shared_ptr localeObserver; + localeObserver = std::make_shared(); + m_settingsObject->addSingleSettingObserver("locale", localeObserver); + m_settingsObject->removeSingleSettingObserver("locale", localeObserver); + EXPECT_CALL(*localeObserver, onSettingChanged(_, _)).Times(0); + ASSERT_TRUE(testChangeSettingSucceeds("locale", "en-US")); +} + +/** + * Test to check if the settings loaded from the database are same as the default settings. + */ +TEST_F(SettingsTest, defaultSettingsCorrect) { + std::string DEFAULT_SETTINGS = "defaultAVSClientSettings"; + std::string settings_json = ""; + retrieveValue(SETTINGS_CONFIG_JSON, MESSAGE_SETTINGS_KEY, &settings_json); + std::string default_settings = ""; + retrieveValue(settings_json, DEFAULT_SETTINGS, &default_settings); + rapidjson::Document document; + ASSERT_TRUE(parseJSON(default_settings, &document)); + std::string value = ""; + for (auto& it : m_mapOfSettings) { + auto key = document.FindMember(it.first); + ASSERT_NE(key, document.MemberEnd()); + ASSERT_TRUE(retrieveValue(document, it.first, &value)); + EXPECT_EQ(it.second, value); + } +} + +/** + * Test to check that @c clearData() removes any setting stored in the database. + */ +TEST_F(SettingsTest, clearDataTest) { + ASSERT_TRUE(testChangeSettingSucceeds("locale", "en-CA")); + m_settingsObject->clearData(); + + std::unordered_map tempMap; + ASSERT_TRUE(m_storage->load(&tempMap)); + ASSERT_TRUE(tempMap.empty()); +} + +/** + * Test to check clear database works as expected. + */ +TEST_F(SettingsTest, clearDatabaseTest) { + std::unordered_map tempMap; + ASSERT_TRUE(m_storage->clearDatabase()); + ASSERT_TRUE(m_storage->load(&tempMap)); + ASSERT_TRUE(tempMap.empty()); +} + +/** + * Test to check the store function of SQLiteSettingStorage class. + */ +TEST_F(SettingsTest, storeDatabaseTest) { + ASSERT_TRUE(m_storage->clearDatabase()); + std::map MapToStore = {{"wakeword", "Alexa"}, {"locale", "en-US"}}; + for (auto& it : MapToStore) { + ASSERT_TRUE(m_storage->store(it.first, it.second)); + } + std::unordered_map LoadMap; + ASSERT_TRUE(m_storage->load(&LoadMap)); + ASSERT_EQ(LoadMap.size(), MapToStore.size()); + ASSERT_TRUE(std::equal(MapToStore.rbegin(), MapToStore.rend(), LoadMap.begin())); +} + +/** + * Test to check the modify function of SQLiteSettingStorage class. + */ +TEST_F(SettingsTest, modifyDatabaseTest) { + ASSERT_TRUE(m_storage->modify("locale", "en-US")); + ASSERT_FALSE(m_storage->modify("local", "en-GB")); + ASSERT_TRUE(m_storage->clearDatabase()); + ASSERT_FALSE(m_storage->settingExists("locale")); +} +/** + * Test to check the erase function of SQLiteSettingStorage class. + */ +TEST_F(SettingsTest, eraseTest) { + ASSERT_TRUE(m_storage->erase("locale")); + ASSERT_FALSE(m_storage->settingExists("locale")); + ASSERT_FALSE(m_storage->erase("local")); +} + +/** + * Test to check the createDatabase function of SQLiteSettingStorage class. + */ +TEST_F(SettingsTest, createDatabaseTest) { + m_storage->close(); + ASSERT_FALSE(m_storage->createDatabase()); +} + +/** + * Test to check the open and close functions of SQLiteSettingStorage class. + */ +TEST_F(SettingsTest, openAndCloseDatabaseTest) { + ASSERT_FALSE(m_storage->open()); + ASSERT_TRUE(isOpen(m_storage)); + m_storage->close(); + ASSERT_TRUE(m_storage->open()); + ASSERT_TRUE(isOpen(m_storage)); +} +} // namespace test +} // namespace settings +} // namespace capabilityAgents +} // namespace alexaClientSDK + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + if (argc < 1) { + std::cerr << "USAGE: " << std::string(argv[0]) << std::endl; + return 1; + } + return RUN_ALL_TESTS(); +} diff --git a/CapabilityAgents/SpeakerManager/CMakeLists.txt b/CapabilityAgents/SpeakerManager/CMakeLists.txt new file mode 100644 index 0000000000..899b071a0b --- /dev/null +++ b/CapabilityAgents/SpeakerManager/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.0) +project(SpeakerManager LANGUAGES CXX) + +include(../../build/BuildDefaults.cmake) + +add_subdirectory("src") +acsdk_add_test_subdirectory_if_allowed() diff --git a/CapabilityAgents/SpeakerManager/include/SpeakerManager/SpeakerManager.h b/CapabilityAgents/SpeakerManager/include/SpeakerManager/SpeakerManager.h new file mode 100644 index 0000000000..ddcf3e9354 --- /dev/null +++ b/CapabilityAgents/SpeakerManager/include/SpeakerManager/SpeakerManager.h @@ -0,0 +1,319 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SPEAKERMANAGER_INCLUDE_SPEAKERMANAGER_SPEAKERMANAGER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SPEAKERMANAGER_INCLUDE_SPEAKERMANAGER_SPEAKERMANAGER_H_ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace speakerManager { + +/** + * This class implementes a @c CapabilityAgent that handles the AVS @c Speaker API. + * + * The @c SpeakerManager can handle multiple @c SpeakerInterface objects. @c SpeakerInterface + * are grouped by their respective types, and the volume and mute state will be consistent + * across each type. For example, to change the volume of all speakers of a specific type: + * + * @code{.cpp} + * // Use local setVolume API. + * std::future result = speakerManager->setVolume(type, AVS_SET_VOLUME_MAX); + * // Optionally, wait for the operation to complete. + * if (result.valid()) { + * result.wait(); + * } + * @endcode + * + * AVS documentation specifies that Alerts volume should be handled separately. + * Currently, the AVS API does not support differentiating between different speakers. + * To provide clients an option to handle Alerts (and any other) volumes independently, + * only @c SpeakerInterface::Type::AVS_SYNCED speakers will communicate with AVS. + * + * A default type, @c SpeakerInterface::Type::LOCAL, is provided. This type will not be modified by directives sent by + * AVS, nor will they send events on volume/mute change. These @c SpeakerInterfaces can still be modified through the + * APIs that @c SpeakerManagerInterface provides. Clients may extend the @c SpeakerInterface::Type enum if multiple + * independent volume controls are needed. + * + * If clients wish directives and events to apply to the specific @c SpeakerInterface, it must + * have a type of @c SpeakerInterface::Type::AVS_SYNCED. + */ +class SpeakerManager + : public avsCommon::avs::CapabilityAgent + , public avsCommon::sdkInterfaces::SpeakerManagerInterface + , public avsCommon::utils::RequiresShutdown { +public: + /** + * Create an instance of @c SpeakerManager, and register the @c SpeakerInterfaces that will be controlled + * by it. SpeakerInterfaces will be grouped by @c SpeakerInterface::Type. + * + * @param speakers The @c Speakers to register. + * @param contextManager A @c ContextManagerInterface to manage the context. + * @param messageSender A @c MessageSenderInterface to send messages to AVS. + * @param exceptionEncounteredSender An @c ExceptionEncounteredSenderInterface to send + * directive processing exceptions to AVS. + */ + static std::shared_ptr create( + const std::vector>& speakers, + std::shared_ptr contextManager, + std::shared_ptr messageSender, + std::shared_ptr exceptionEncounteredSender); + + /// @name CapabilityAgent Functions + /// @{ + avsCommon::avs::DirectiveHandlerConfiguration getConfiguration() const override; + void handleDirectiveImmediately(std::shared_ptr directive) override; + void preHandleDirective(std::shared_ptr info) override; + void handleDirective(std::shared_ptr info) override; + void cancelDirective(std::shared_ptr info) override; + /// @} + + // @name RequiresShutdown Functions + /// @{ + void doShutdown() override; + /// @} + + // @name SpeakerManagerInterface Functions + /// @{ + std::future setVolume( + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + int8_t volume, + bool forceNoNotifications = false) override; + std::future adjustVolume( + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + int8_t delta, + bool forceNoNotifications = false) override; + std::future setMute( + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + bool mute, + bool forceNoNotifications = false) override; + std::future getSpeakerSettings( + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings* settings) override; + void addSpeakerManagerObserver( + std::shared_ptr observer) override; + void removeSpeakerManagerObserver( + std::shared_ptr observer) override; + void addSpeaker(std::shared_ptr speaker) override; + /// @} +private: + /** + * Constructor. Called after validation has occurred on parameters. + * + * @param speakers The @c Speakers to register. + * @param contextManager A @c ContextManagerInterface to manage the context. + * @param messageSender A @c MessageSenderInterface to send messages to AVS. + * @param exceptionEncounteredSender An @c ExceptionEncounteredSenderInterface to send + * directive processing exceptions to AVS. + */ + SpeakerManager( + const std::vector>& speakerInterfaces, + std::shared_ptr contextManager, + std::shared_ptr messageSender, + std::shared_ptr exceptionEncounteredSender); + + /** + * Parses the payload from a string into a rapidjson document. + * + * @param payload The payload as a string. + * @param document The document that will contain the payload. + * @return A bool indicating the results of the operation. + */ + bool parseDirectivePayload(std::string payload, rapidjson::Document* document); + + /** + * Performs clean-up after a successful handling of a directive. + * + * @param info The current directive being processed. + */ + void executeSetHandlingCompleted(std::shared_ptr info); + + /** + * Removes the directive after it's been processed. + * + * @param info The current directive being processed. + */ + void removeDirective(std::shared_ptr info); + + /** + * Sends an exception to AVS. + * + * @param info The current directive being processed. + * @param message The exception message. + * @param type The type of exception. + */ + void sendExceptionEncountered( + std::shared_ptr info, + const std::string& message, + avsCommon::avs::ExceptionErrorType type); + + /** + * Internal function to update the state of the ContextManager. + * + * @param type The Speaker Type that is being updated. + * @param settings The SpeakerSettings to update the ContextManager with. + * @return Whether the ContextManager was successfully updated. + */ + bool updateContextManager( + const avsCommon::sdkInterfaces::SpeakerInterface::Type& type, + const avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings& settings); + + /** + * Sends Changed events to AVS. The events are identical except for the name. + * + * @param eventName The name of the event. + * @param settings The current speaker settings. + */ + void executeSendSpeakerSettingsChangedEvent( + const std::string& eventName, + avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings settings); + + /** + * Internal function to set the volume for a specific @c Type. This runs on a worker thread. + * Upon success, a VolumeChanged event will be sent to AVS. + * + * @param type The type of speaker to modify volume for. + * @param volume The volume to change. + * @param source Whether the call is from AVS or locally. + * @param forceNoNotifications This flag will ensure no event is sent and the observer is not notified. + * @return A bool indicating success. + */ + bool executeSetVolume( + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + int8_t volume, + avsCommon::sdkInterfaces::SpeakerManagerObserverInterface::Source source, + bool forceNoNotifications = false); + + /** + * Internal function to adjust the volume for a specific @c Type. This runs on a worker thread. + * Upon success, a VolumeChanged event will be sent to AVS. + * + * @param type The type of speaker to modify volume for. + * @param delta The delta to change the volume by. + * @param source Whether the call is from AVS or locally. + * @param forceNoNotifications This flag will ensure no event is sent and the observer is not notified. + * @return A bool indicating success. + */ + bool executeAdjustVolume( + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + int8_t delta, + avsCommon::sdkInterfaces::SpeakerManagerObserverInterface::Source source, + bool forceNoNotifications = false); + + /** + * Internal function to set the mute for a specific @c Type. This runs on a worker thread. + * Upon success, a MuteChanged event will be sent to AVS. + * + * @param type The type of speaker to modify mute for. + * @param mute Whether to mute/unmute. + * @param source Whether the call is from AVS or locally. + * @param forceNoNotifications This flag will ensure no event is sent and the observer is not notified. + * @return A bool indicating success. + */ + bool executeSetMute( + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + bool mute, + avsCommon::sdkInterfaces::SpeakerManagerObserverInterface::Source source, + bool forceNoNotifications = false); + + /** + * Internal function to get the speaker settings for a specific @c Type. + * This runs on a worker thread. + * + * @param type The type of speaker to modify mute for. + * @param[out] settings The settings if successful. + * @return A bool indicating success. + */ + bool executeGetSpeakerSettings( + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings* settings); + + /** + * Internal function to send events and notify observers when settings have changed. + * This runs on a worker thread. + * + * @param settings The new settings. + * @param eventName The event name to send. + * @param source Whether the call is from AVS or locally. + * @param type The Speaker type. + */ + void executeNotifySettingsChanged( + const avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings& settings, + const std::string& eventName, + const avsCommon::sdkInterfaces::SpeakerManagerObserverInterface::Source& source, + const avsCommon::sdkInterfaces::SpeakerInterface::Type& type); + + /** + * Internal function to notify the observer when a @c SpeakerSettings change has occurred. + * + * @param source. This indicates the origin of the call. + * @param type. This indicates the type of speaker that was modified. + * @param settings. This indicates the current settings after the change. + */ + void executeNotifyObserver( + const avsCommon::sdkInterfaces::SpeakerManagerObserverInterface::Source& source, + const avsCommon::sdkInterfaces::SpeakerInterface::Type& type, + const avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings& settings); + + /** + * Validates that all speakers with the given @c Type have the same @c SpeakerSettings. + * + * @param type The type of speaker to validate. + * @param[out] settings The settings that will be return if consistent. + * @return A bool indicating success. + */ + bool validateSpeakerSettingsConsistency( + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings* settings); + + /// The @c ContextManager used to generate system context for events. + std::shared_ptr m_contextManager; + + /// The @c MessageSenderInterface used to send event messages. + std::shared_ptr m_messageSender; + + /// A multimap contain speakers keyed by @c Type. + std::multimap< + avsCommon::sdkInterfaces::SpeakerInterface::Type, + std::shared_ptr> + m_speakerMap; + + /// The observers to be notified whenever any of the @c SpeakerSetting changing APIs are called. + std::unordered_set> m_observers; + + /// An executor to perform operations on a worker thread. + avsCommon::utils::threading::Executor m_executor; +}; + +} // namespace speakerManager +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SPEAKERMANAGER_INCLUDE_SPEAKERMANAGER_SPEAKERMANAGER_H_ diff --git a/CapabilityAgents/SpeakerManager/include/SpeakerManager/SpeakerManagerConstants.h b/CapabilityAgents/SpeakerManager/include/SpeakerManager/SpeakerManagerConstants.h new file mode 100644 index 0000000000..89ab06c821 --- /dev/null +++ b/CapabilityAgents/SpeakerManager/include/SpeakerManager/SpeakerManagerConstants.h @@ -0,0 +1,62 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/** + * @file + */ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SPEAKERMANAGER_INCLUDE_SPEAKERMANAGER_SPEAKERMANAGERCONSTANTS_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SPEAKERMANAGER_INCLUDE_SPEAKERMANAGER_SPEAKERMANAGERCONSTANTS_H_ + +#include "AVSCommon/AVS/NamespaceAndName.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace speakerManager { + +/// The Speaker interface namespace. +const std::string NAMESPACE = "Speaker"; + +/// The @c SetVolume directive identifier. +const avsCommon::avs::NamespaceAndName SET_VOLUME{NAMESPACE, "SetVolume"}; + +/// The @c AdjustVolume directive identifier. +const avsCommon::avs::NamespaceAndName ADJUST_VOLUME{NAMESPACE, "AdjustVolume"}; + +/// The @c SetMute directive directive identifier. +const avsCommon::avs::NamespaceAndName SET_MUTE{NAMESPACE, "SetMute"}; + +/// The @c Volume State for use with the context. +const avsCommon::avs::NamespaceAndName VOLUME_STATE{NAMESPACE, "VolumeState"}; + +/// The @c Volume Key in AVS Directives and Events. +const char VOLUME_KEY[] = "volume"; + +/// The @c Mute Key. For directives. +const char MUTE_KEY[] = "mute"; + +/// The @c Muted Key. For events +const char MUTED_KEY[] = "muted"; + +/// The @c VolumeChanged event key. +const std::string VOLUME_CHANGED = "VolumeChanged"; + +/// The @c VolumeMute event. +const std::string MUTE_CHANGED = "MuteChanged"; + +} // namespace speakerManager +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SPEAKERMANAGER_INCLUDE_SPEAKERMANAGER_SPEAKERMANAGERCONSTANTS_H_ diff --git a/CapabilityAgents/SpeakerManager/src/CMakeLists.txt b/CapabilityAgents/SpeakerManager/src/CMakeLists.txt new file mode 100644 index 0000000000..cfd5bc17f8 --- /dev/null +++ b/CapabilityAgents/SpeakerManager/src/CMakeLists.txt @@ -0,0 +1,12 @@ +add_definitions("-DACSDK_LOG_MODULE=speakerManager") + +add_library(SpeakerManager SHARED SpeakerManager.cpp) + +target_include_directories(SpeakerManager PUBLIC + "${ContextManager_INCLUDE_DIRS}" + "${SpeakerManager_SOURCE_DIR}/include") + + target_link_libraries(SpeakerManager AVSCommon) + +# install target +asdk_install() diff --git a/CapabilityAgents/SpeakerManager/src/SpeakerManager.cpp b/CapabilityAgents/SpeakerManager/src/SpeakerManager.cpp new file mode 100644 index 0000000000..76d4fd2d14 --- /dev/null +++ b/CapabilityAgents/SpeakerManager/src/SpeakerManager.cpp @@ -0,0 +1,668 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include +#include +#include + +#include +#include +#include +#include "SpeakerManager/SpeakerManagerConstants.h" + +#include "SpeakerManager/SpeakerManager.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace speakerManager { + +using namespace avsCommon::avs; +using namespace avsCommon::avs::speakerConstants; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::utils::json; +using namespace rapidjson; + +/// String to identify log entries originating from this file. +static const std::string TAG{"SpeakerManager"}; + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/** + * Checks whether a value is within the bounds. + * + * @param value The value to check. + * @param min The minimum value. + * @param max The maximum value. + */ +template +static bool withinBounds(T value, T min, T max) { + if (value < min || value > max) { + ACSDK_ERROR(LX("checkBoundsFailed").d("value", value).d("min", min).d("max", max)); + return false; + } + return true; +} + +std::shared_ptr SpeakerManager::create( + const std::vector>& speakers, + std::shared_ptr contextManager, + std::shared_ptr messageSender, + std::shared_ptr exceptionEncounteredSender) { + if (!contextManager) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullContextManager")); + return nullptr; + } else if (!messageSender) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullMessageSender")); + return nullptr; + } else if (!exceptionEncounteredSender) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullExceptionEncounteredSender")); + return nullptr; + } else if (speakers.size() == 0) { + ACSDK_ERROR(LX("createFailed").d("reason", "noSpeakersRegistered")); + return nullptr; + } + + auto speakerManager = std::shared_ptr( + new SpeakerManager(speakers, contextManager, messageSender, exceptionEncounteredSender)); + + return speakerManager; +} + +SpeakerManager::SpeakerManager( + const std::vector>& speakers, + std::shared_ptr contextManager, + std::shared_ptr messageSender, + std::shared_ptr exceptionEncounteredSender) : + CapabilityAgent{NAMESPACE, exceptionEncounteredSender}, + RequiresShutdown{"SpeakerManager"}, + m_contextManager{contextManager}, + m_messageSender{messageSender} { + for (auto speaker : speakers) { + m_speakerMap.insert( + std::pair>(speaker->getSpeakerType(), speaker)); + } + + ACSDK_DEBUG(LX("mapCreated") + .d("numAvsSynced", m_speakerMap.count(SpeakerInterface::Type::AVS_SYNCED)) + .d("numLocal", m_speakerMap.count(SpeakerInterface::Type::LOCAL))); + + // If we have at least one AVS_SYNCED speaker, update the Context initially. + const auto type = SpeakerInterface::Type::AVS_SYNCED; + if (m_speakerMap.count(type)) { + SpeakerInterface::SpeakerSettings settings; + if (!validateSpeakerSettingsConsistency(type, &settings) || !updateContextManager(type, settings)) { + ACSDK_ERROR(LX("initialUpdateContextManagerFailed")); + } + } +} + +DirectiveHandlerConfiguration SpeakerManager::getConfiguration() const { + DirectiveHandlerConfiguration configuration; + configuration[SET_VOLUME] = BlockingPolicy::NON_BLOCKING; + configuration[ADJUST_VOLUME] = BlockingPolicy::NON_BLOCKING; + configuration[SET_MUTE] = BlockingPolicy::NON_BLOCKING; + return configuration; +} + +void SpeakerManager::doShutdown() { + m_executor.shutdown(); + m_messageSender.reset(); + m_contextManager.reset(); + m_observers.clear(); + for (auto typeAndSpeaker : m_speakerMap) { + typeAndSpeaker.second.reset(); + } +} + +void SpeakerManager::preHandleDirective(std::shared_ptr info) { + // No-op. +} + +void SpeakerManager::handleDirectiveImmediately(std::shared_ptr directive) { + handleDirective(std::make_shared(directive, nullptr)); +}; + +bool SpeakerManager::parseDirectivePayload(std::string payload, Document* document) { + if (!document) { + ACSDK_ERROR(LX("parseDirectivePayloadFailed").d("reason", "nullDocument")); + return false; + } + + ParseResult result = document->Parse(payload); + if (!result) { + ACSDK_ERROR(LX("parseDirectivePayloadFailed") + .d("reason", "parseFailed") + .d("error", GetParseError_En(result.Code())) + .d("offset", result.Offset())); + return false; + } + + return true; +} + +void SpeakerManager::sendExceptionEncountered( + std::shared_ptr info, + const std::string& message, + avsCommon::avs::ExceptionErrorType type) { + m_executor.submit([this, info, &message, type] { + m_exceptionEncounteredSender->sendExceptionEncountered(info->directive->getUnparsedDirective(), type, message); + if (info && info->result) { + info->result->setFailed(message); + } + removeDirective(info); + }); +} + +void SpeakerManager::executeSetHandlingCompleted(std::shared_ptr info) { + if (info && info->result) { + info->result->setCompleted(); + } + removeDirective(info); +} + +void SpeakerManager::removeDirective(std::shared_ptr info) { + // Check result too, to catch cases where DirectiveInfo was created locally, without a nullptr result. + // In those cases there is no messageId to remove because no result was expected. + if (info->directive && info->result) { + CapabilityAgent::removeDirective(info->directive->getMessageId()); + } +} + +void SpeakerManager::executeSendSpeakerSettingsChangedEvent( + const std::string& eventName, + SpeakerInterface::SpeakerSettings settings) { + ACSDK_DEBUG9(LX("executeSendSpeakerSettingsChangedEvent")); + rapidjson::Document payload(rapidjson::kObjectType); + payload.AddMember(VOLUME_KEY, settings.volume, payload.GetAllocator()); + payload.AddMember(MUTED_KEY, settings.mute, payload.GetAllocator()); + + rapidjson::StringBuffer buffer; + rapidjson::Writer writer(buffer); + if (!payload.Accept(writer)) { + ACSDK_ERROR(LX("executeSendSpeakerSettingsChangedEventFailed").d("reason", "writerRefusedJsonObject")); + return; + } + + auto event = buildJsonEventString(eventName, "", buffer.GetString()); + auto request = std::make_shared(event.second); + m_messageSender->sendMessage(request); +} + +void SpeakerManager::handleDirective(std::shared_ptr info) { + if (!info) { + ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "nullDirectiveInfo")); + return; + } + + const std::string directiveName = info->directive->getName(); + + // Only speakers that are synced with AVS should be modified by AVS Directives. + SpeakerInterface::Type directiveType = SpeakerInterface::Type::AVS_SYNCED; + + Document payload(kObjectType); + if (!parseDirectivePayload(info->directive->getPayload(), &payload)) { + sendExceptionEncountered(info, "Payload Parsing Failed", ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED); + return; + } + + /* + * For AdjustVolume and SetVolume, unmute the speaker before a volume change. This behavior + * is expected from a user perspective in many devices, and is aligned with 1P device behavior. + */ + if (directiveName == SET_VOLUME.name) { + int64_t volume; + if (jsonUtils::retrieveValue(payload, VOLUME_KEY, &volume) && + withinBounds(volume, static_cast(AVS_SET_VOLUME_MIN), static_cast(AVS_SET_VOLUME_MAX))) { + m_executor.submit([this, volume, directiveType, info] { + /* + * Since AVS doesn't have a concept of Speaker IDs or types, no-op if a directive + * comes in and there are no AVS_SYNCED speakers. + */ + if (m_speakerMap.count(directiveType) == 0) { + ACSDK_INFO(LX("noSpeakersRegistered").d("type", directiveType).m("swallowingDirective")); + executeSetHandlingCompleted(info); + return; + } + + // Unmute before volume change. + // Do not send a MuteChanged Event. + if (executeSetMute(directiveType, false, SpeakerManagerObserverInterface::Source::DIRECTIVE, true) && + executeSetVolume( + directiveType, + static_cast(volume), + SpeakerManagerObserverInterface::Source::DIRECTIVE)) { + executeSetHandlingCompleted(info); + } else { + sendExceptionEncountered(info, "SetVolumeFailed", ExceptionErrorType::INTERNAL_ERROR); + } + }); + } else { + sendExceptionEncountered( + info, "Parsing Valid Payload Value Failed", ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED); + } + // SET_VOLUME + } else if (directiveName == ADJUST_VOLUME.name) { + int64_t delta; + if (jsonUtils::retrieveValue(payload, VOLUME_KEY, &delta) && + withinBounds( + delta, static_cast(AVS_ADJUST_VOLUME_MIN), static_cast(AVS_ADJUST_VOLUME_MAX))) { + m_executor.submit([this, delta, directiveType, info] { + /* + * Since AVS doesn't have a concept of Speaker IDs or types, no-op if a directive + * comes in and there are no AVS_SYNCED speakers. + */ + if (m_speakerMap.count(directiveType) == 0) { + ACSDK_INFO(LX("noSpeakersRegistered").d("type", directiveType).m("swallowingDirective")); + executeSetHandlingCompleted(info); + return; + } + + // Unmute before volume change. + // Do not send a MuteChanged Event. + if (executeSetMute(directiveType, false, SpeakerManagerObserverInterface::Source::DIRECTIVE, true) && + executeAdjustVolume( + directiveType, + static_cast(delta), + SpeakerManagerObserverInterface::Source::DIRECTIVE)) { + executeSetHandlingCompleted(info); + } else { + sendExceptionEncountered(info, "SetVolumeFailed", ExceptionErrorType::INTERNAL_ERROR); + } + }); + } else { + sendExceptionEncountered( + info, "Parsing Valid Payload Value Failed", ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED); + } + // ADJUST_VOLUME + } else if (directiveName == SET_MUTE.name) { + bool mute = false; + if (jsonUtils::retrieveValue(payload, MUTE_KEY, &mute)) { + m_executor.submit([this, mute, directiveType, info] { + /* + * Since AVS doesn't have a concept of Speaker IDs or types, no-op if a directive + * comes in and there are no AVS_SYNCED speakers. + */ + if (m_speakerMap.count(directiveType) == 0) { + ACSDK_INFO(LX("noSpeakersRegistered").d("type", directiveType).m("swallowingDirective")); + executeSetHandlingCompleted(info); + return; + } + + if (executeSetMute(directiveType, mute, SpeakerManagerObserverInterface::Source::DIRECTIVE)) { + executeSetHandlingCompleted(info); + } else { + sendExceptionEncountered(info, "SetMuteFailed", ExceptionErrorType::INTERNAL_ERROR); + } + }); + } else { + sendExceptionEncountered( + info, "Parsing Valid Payload Value Failed", ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED); + } + // SET_MUTE + } else { + sendExceptionEncountered(info, "Unexpected Directive", ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED); + } +} + +void SpeakerManager::cancelDirective(std::shared_ptr info) { + removeDirective(info); +} + +void SpeakerManager::addSpeakerManagerObserver( + std::shared_ptr observer) { + ACSDK_DEBUG9(LX("addSpeakerManagerObserverCalled")); + if (!observer) { + ACSDK_ERROR(LX("addSpeakerManagerObserverFailed").d("reason", "nullObserver")); + return; + } + ACSDK_DEBUG9(LX("addSpeakerManagerObserver").d("observer", observer.get())); + m_executor.submit([this, observer] { + if (!m_observers.insert(observer).second) { + ACSDK_ERROR(LX("addSpeakerManagerObserverFailed").d("reason", "duplicateObserver")); + } + }); +} + +void SpeakerManager::removeSpeakerManagerObserver( + std::shared_ptr observer) { + ACSDK_DEBUG9(LX("removeSpeakerManagerObserverCalled")); + if (!observer) { + ACSDK_ERROR(LX("removeSpeakerManagerObserverFailed").d("reason", "nullObserver")); + return; + } + ACSDK_DEBUG9(LX("removeSpeakerManagerObserver").d("observer", observer.get())); + m_executor.submit([this, observer] { + if (m_observers.erase(observer) == 0) { + ACSDK_WARN(LX("removeSpeakerManagerObserverFailed").d("reason", "nonExistentObserver")); + } + }); +} + +bool SpeakerManager::validateSpeakerSettingsConsistency( + SpeakerInterface::Type type, + SpeakerInterface::SpeakerSettings* settings) { + // Iterate through speakers and ensure all have the same volume. + // Returns a pair of iterators. + auto beginIteratorAndEndIterator = m_speakerMap.equal_range(type); + const auto begin = beginIteratorAndEndIterator.first; + const auto end = beginIteratorAndEndIterator.second; + bool consistent = true; + + SpeakerInterface::SpeakerSettings comparator; + + if (begin == end) { + ACSDK_ERROR( + LX("validateSpeakerSettingsConsistencyFailed").d("reason", "noSpeakersWithTypeFound").d("type", type)); + return false; + } + + // Get settings value to compare the rest against. + if (!begin->second->getSpeakerSettings(&comparator)) { + ACSDK_ERROR(LX("validateSpeakerSettingsConsistencyFailed").d("reason", "gettingSpeakerSettingsFailed")); + return false; + } + + std::multimap>::iterator typeAndSpeakerIterator = begin; + while (++typeAndSpeakerIterator != end) { + auto speaker = typeAndSpeakerIterator->second; + SpeakerInterface::SpeakerSettings temp; + + // Retrieve speaker settings of current speaker. + if (!speaker->getSpeakerSettings(&temp)) { + ACSDK_ERROR(LX("validateSpeakerSettingsConsistencyFailed").d("reason", "gettingSpeakerSettingsFailed")); + return false; + } + + if (comparator.volume != temp.volume || comparator.mute != temp.mute) { + ACSDK_ERROR(LX("validateSpeakerSettingsConsistencyFailed") + .d("reason", "inconsistentSpeakerSettings") + .d("comparatorVolume", static_cast(comparator.volume)) + .d("comparatorMute", comparator.mute) + .d("volume", static_cast(temp.volume)) + .d("mute", temp.mute)); + consistent = false; + break; + } + } + + ACSDK_DEBUG9(LX("validateSpeakerSettingsConsistencyResult").d("consistent", consistent)); + + if (consistent && settings) { + settings->volume = comparator.volume; + settings->mute = comparator.mute; + ACSDK_DEBUG9( + LX("validateSpeakerSettings").d("volume", static_cast(settings->volume)).d("mute", settings->mute)); + } + + return consistent; +} + +bool SpeakerManager::updateContextManager( + const SpeakerInterface::Type& type, + const SpeakerInterface::SpeakerSettings& settings) { + ACSDK_DEBUG9(LX("updateContextManagerCalled").d("speakerType", type)); + + if (SpeakerInterface::Type::AVS_SYNCED != type) { + ACSDK_DEBUG(LX("updateContextManagerSkipped") + .d("reason", "typeMismatch") + .d("expected", SpeakerInterface::Type::AVS_SYNCED) + .d("actual", type)); + return false; + } + + rapidjson::Document state(rapidjson::kObjectType); + state.AddMember(VOLUME_KEY, settings.volume, state.GetAllocator()); + state.AddMember(MUTED_KEY, settings.mute, state.GetAllocator()); + + rapidjson::StringBuffer buffer; + rapidjson::Writer writer(buffer); + if (!state.Accept(writer)) { + ACSDK_ERROR(LX("updateContextManagerFailed").d("reason", "writeToBufferFailed")); + return false; + } + + if (SetStateResult::SUCCESS != + m_contextManager->setState(VOLUME_STATE, buffer.GetString(), StateRefreshPolicy::NEVER)) { + ACSDK_ERROR(LX("updateContextManagerFailed").d("reason", "contextManagerSetStateFailed")); + return false; + } + + return true; +} + +std::future SpeakerManager::setVolume(SpeakerInterface::Type type, int8_t volume, bool forceNoNotifications) { + ACSDK_DEBUG9(LX("setVolumeCalled").d("volume", static_cast(volume))); + return m_executor.submit([this, type, volume, forceNoNotifications] { + return withinBounds(volume, AVS_SET_VOLUME_MIN, AVS_SET_VOLUME_MAX) && + executeSetVolume(type, volume, SpeakerManagerObserverInterface::Source::LOCAL_API, forceNoNotifications); + }); +} + +bool SpeakerManager::executeSetVolume( + SpeakerInterface::Type type, + int8_t volume, + SpeakerManagerObserverInterface::Source source, + bool forceNoNotifications) { + ACSDK_DEBUG9(LX("executeSetVolumeCalled").d("volume", static_cast(volume))); + if (m_speakerMap.count(type) == 0) { + ACSDK_ERROR(LX("executeSetVolumeFailed").d("reason", "noSpeakersWithType").d("type", type)); + return false; + } + // Go through list of Speakers with SpeakerInterface::Type equal to type, and call setVolume. + auto beginIteratorAndEndIterator = m_speakerMap.equal_range(type); + auto begin = beginIteratorAndEndIterator.first; + auto end = beginIteratorAndEndIterator.second; + + for (auto typeAndSpeakerIterator = begin; typeAndSpeakerIterator != end; typeAndSpeakerIterator++) { + auto speaker = typeAndSpeakerIterator->second; + // In the future retry logic could be useful to ensure speakers are consistent. + if (!speaker->setVolume(volume)) { + return false; + } + } + + SpeakerInterface::SpeakerSettings settings; + + // All initialized speakers controlled by directives with the same type should have the same state. + if (!validateSpeakerSettingsConsistency(type, &settings)) { + ACSDK_ERROR(LX("executeSetVolume").d("reason", "speakerSettingsInconsistent")); + return false; + } + + updateContextManager(type, settings); + + if (forceNoNotifications) { + ACSDK_INFO(LX("executeSetVolume").m("Skipping sending notifications").d("reason", "forceNoNotifications")); + } else { + executeNotifySettingsChanged(settings, VOLUME_CHANGED, source, type); + } + return true; +} + +std::future SpeakerManager::adjustVolume(SpeakerInterface::Type type, int8_t delta, bool forceNoNotifications) { + ACSDK_DEBUG9(LX("adjustVolumeCalled").d("delta", static_cast(delta))); + return m_executor.submit([this, type, delta, forceNoNotifications] { + return withinBounds(delta, AVS_ADJUST_VOLUME_MIN, AVS_ADJUST_VOLUME_MAX) && + executeAdjustVolume( + type, delta, SpeakerManagerObserverInterface::Source::LOCAL_API, forceNoNotifications); + }); +} + +bool SpeakerManager::executeAdjustVolume( + SpeakerInterface::Type type, + int8_t delta, + SpeakerManagerObserverInterface::Source source, + bool forceNoNotifications) { + ACSDK_DEBUG9(LX("executeAdjustVolumeCalled").d("delta", (int)delta)); + if (m_speakerMap.count(type) == 0) { + ACSDK_ERROR(LX("executeAdjustVolumeFailed").d("reason", "noSpeakersWithType").d("type", type)); + return false; + } + SpeakerInterface::SpeakerSettings settings; + + // All initialized speakers controlled by directives with the same type should have the same state. + if (!validateSpeakerSettingsConsistency(type, &settings)) { + ACSDK_ERROR(LX("executeAdjustVolumeFailed").d("reason", "initialSpeakerSettingsInconsistent")); + return false; + } + + // Go through list of Speakers with SpeakerInterface::Type equal to type, and call adjustVolume. + auto beginIteratorAndEndIterator = m_speakerMap.equal_range(type); + auto begin = beginIteratorAndEndIterator.first; + auto end = beginIteratorAndEndIterator.second; + + for (auto typeAndSpeakerIterator = begin; typeAndSpeakerIterator != end; typeAndSpeakerIterator++) { + auto speaker = typeAndSpeakerIterator->second; + // In the future retry logic could be useful to ensure speakers are consistent. + if (!speaker->adjustVolume(delta)) { + return false; + } + } + + if (!validateSpeakerSettingsConsistency(type, &settings)) { + ACSDK_ERROR(LX("executeAdjustVolumeFailed").d("reason", "speakerSettingsInconsistent")); + return false; + } + + ACSDK_DEBUG(LX("executeAdjustVolumeSuccess").d("newVolume", (int)settings.volume)); + + updateContextManager(type, settings); + + if (forceNoNotifications) { + ACSDK_INFO(LX("executeAdjustVolume").m("Skipping sending notifications").d("reason", "forceNoNotifications")); + } else { + executeNotifySettingsChanged(settings, VOLUME_CHANGED, source, type); + } + + return true; +} + +std::future SpeakerManager::setMute(SpeakerInterface::Type type, bool mute, bool forceNoNotifications) { + ACSDK_DEBUG9(LX("setMuteCalled").d("mute", mute)); + return m_executor.submit([this, type, mute, forceNoNotifications] { + return executeSetMute(type, mute, SpeakerManagerObserverInterface::Source::LOCAL_API, forceNoNotifications); + }); +} + +bool SpeakerManager::executeSetMute( + SpeakerInterface::Type type, + bool mute, + SpeakerManagerObserverInterface::Source source, + bool forceNoNotifications) { + ACSDK_DEBUG9(LX("executeSetMuteCalled").d("mute", mute)); + if (m_speakerMap.count(type) == 0) { + ACSDK_ERROR(LX("executeSetMuteFailed").d("reason", "noSpeakersWithType").d("type", type)); + return false; + } + + // Go through list of Speakers with SpeakerInterface::Type equal to type, and call setMute. + auto beginIteratorAndEndIterator = m_speakerMap.equal_range(type); + auto begin = beginIteratorAndEndIterator.first; + auto end = beginIteratorAndEndIterator.second; + + for (auto typeAndSpeakerIterator = begin; typeAndSpeakerIterator != end; typeAndSpeakerIterator++) { + auto speaker = typeAndSpeakerIterator->second; + // In the future retry logic could be useful to ensure speakers are consistent. + if (!speaker->setMute(mute)) { + return false; + } + } + + SpeakerInterface::SpeakerSettings settings; + + // All initialized speakers controlled by directives with the same type should have the same state. + if (!validateSpeakerSettingsConsistency(type, &settings)) { + ACSDK_ERROR(LX("executeSetMute").d("reason", "speakerSettingsInconsistent")); + return false; + } + + updateContextManager(type, settings); + + if (forceNoNotifications) { + ACSDK_INFO(LX("executeSetMute").m("Skipping sending notifications").d("reason", "forceNoNotifications")); + } else { + executeNotifySettingsChanged(settings, MUTE_CHANGED, source, type); + } + + return true; +} + +void SpeakerManager::executeNotifySettingsChanged( + const SpeakerInterface::SpeakerSettings& settings, + const std::string& eventName, + const SpeakerManagerObserverInterface::Source& source, + const SpeakerInterface::Type& type) { + executeNotifyObserver(source, type, settings); + + // Only send an event if the AVS_SYNCED settings changed. + if (SpeakerInterface::Type::AVS_SYNCED == type) { + executeSendSpeakerSettingsChangedEvent(eventName, settings); + } else { + ACSDK_INFO(LX("eventNotSent").d("reason", "typeMismatch").d("speakerType", type)); + } +} + +void SpeakerManager::executeNotifyObserver( + const SpeakerManagerObserverInterface::Source& source, + const SpeakerInterface::Type& type, + const SpeakerInterface::SpeakerSettings& settings) { + ACSDK_DEBUG9(LX("executeNotifyObserverCalled")); + for (auto observer : m_observers) { + observer->onSpeakerSettingsChanged(source, type, settings); + } +} + +std::future SpeakerManager::getSpeakerSettings( + SpeakerInterface::Type type, + SpeakerInterface::SpeakerSettings* settings) { + ACSDK_DEBUG9(LX("getSpeakerSettingsCalled")); + return m_executor.submit([this, type, settings] { return executeGetSpeakerSettings(type, settings); }); +} + +bool SpeakerManager::executeGetSpeakerSettings( + SpeakerInterface::Type type, + SpeakerInterface::SpeakerSettings* settings) { + ACSDK_DEBUG9(LX("executeGetSpeakerSettingsCalled")); + if (m_speakerMap.count(type) == 0) { + ACSDK_ERROR(LX("executeGetSpeakerSettingsFailed").d("reason", "noSpeakersWithType").d("type", type)); + return false; + } + // All initialized speakers controlled by directives with the same type should have the same state. + if (!validateSpeakerSettingsConsistency(type, settings)) { + ACSDK_ERROR(LX("executeGetSpeakerSettingsCalled").d("reason", "speakerSettingsInconsistent")); + return false; + } + + return true; +} + +void SpeakerManager::addSpeaker(std::shared_ptr speaker) { + if (!speaker) { + ACSDK_ERROR(LX("addSpeakerFailed").d("reason", "speaker cannot be nullptr")); + return; + } + m_speakerMap.insert( + std::pair>(speaker->getSpeakerType(), speaker)); +} + +} // namespace speakerManager +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/SpeakerManager/test/CMakeLists.txt b/CapabilityAgents/SpeakerManager/test/CMakeLists.txt new file mode 100644 index 0000000000..04bfc6253c --- /dev/null +++ b/CapabilityAgents/SpeakerManager/test/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +set(INCLUDE_PATH + "${SpeakerManager_INCLUDE_DIRS}" + "${AVSCommon_SOURCE_DIR}/AVS/test" + "${AVSCommon_SOURCE_DIR}/SDKInterfaces/test") + +discover_unit_tests("${INCLUDE_PATH}" SpeakerManager) diff --git a/CapabilityAgents/SpeakerManager/test/SpeakerManagerTest.cpp b/CapabilityAgents/SpeakerManager/test/SpeakerManagerTest.cpp new file mode 100644 index 0000000000..50e8bd149e --- /dev/null +++ b/CapabilityAgents/SpeakerManager/test/SpeakerManagerTest.cpp @@ -0,0 +1,910 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "SpeakerManager/SpeakerManagerConstants.h" +#include +#include +#include +#include +#include +#include + +#include "SpeakerManager/SpeakerManager.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace speakerManager { +namespace test { + +using namespace avsCommon::avs; +using namespace avsCommon::avs::attachment::test; +using namespace avsCommon::avs::speakerConstants; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::test; +using namespace avsCommon::utils::memory; +using namespace rapidjson; +using namespace ::testing; + +/// Timeout when waiting for futures to be set. +static std::chrono::milliseconds TIMEOUT(1000); + +/// The @c MessageId identifer. +static const std::string MESSAGE_ID("messageId"); + +/// Value for mute. +static const bool MUTE(true); + +/// String value for mute. +static const std::string MUTE_STRING("true"); + +/// Value for unmute. +static const bool UNMUTE(false); + +/// A @c SetVolume/AdjustVolume payload. +static const std::string VOLUME_PAYLOAD = + "{" + "\"volume\":" + + std::to_string(AVS_SET_VOLUME_MAX) + + "" + "}"; + +/// A @c SetMute payload. +static const std::string MUTE_PAYLOAD = + "{" + "\"mute\":" + + MUTE_STRING + + "" + "}"; + +static const SpeakerInterface::SpeakerSettings DEFAULT_SETTINGS{AVS_SET_VOLUME_MIN, UNMUTE}; + +class MockSpeaker : public SpeakerInterface { +public: + bool setVolume(int8_t volume) { + m_settings.volume = volume; + return true; + } + + bool adjustVolume(int8_t delta) { + int8_t curVolume = m_settings.volume + delta; + curVolume = std::min(curVolume, AVS_SET_VOLUME_MAX); + curVolume = std::max(curVolume, AVS_SET_VOLUME_MIN); + m_settings.volume = curVolume; + return true; + } + + bool setMute(bool mute) { + m_settings.mute = mute; + return true; + } + + bool getSpeakerSettings(SpeakerInterface::SpeakerSettings* settings) { + if (!settings) { + return false; + } + + settings->volume = m_settings.volume; + settings->mute = m_settings.mute; + + return true; + } + + SpeakerInterface::Type getSpeakerType() { + return m_type; + } + + MockSpeaker(SpeakerInterface::Type type) : m_type{type} { + m_settings = DEFAULT_SETTINGS; + } + +private: + SpeakerInterface::Type m_type; + SpeakerInterface::SpeakerSettings m_settings; +}; + +class MockSpeakerInterface : public SpeakerInterface { +public: + MOCK_METHOD1(setVolume, bool(int8_t)); + MOCK_METHOD1(adjustVolume, bool(int8_t)); + MOCK_METHOD1(setMute, bool(bool)); + MOCK_METHOD1(getSpeakerSettings, bool(SpeakerInterface::SpeakerSettings*)); + MOCK_METHOD0(getSpeakerType, SpeakerInterface::Type()); + + void DelegateToReal() { + ON_CALL(*this, setVolume(_)).WillByDefault(Invoke(&m_speaker, &SpeakerInterface::setVolume)); + ON_CALL(*this, adjustVolume(_)).WillByDefault(Invoke(&m_speaker, &SpeakerInterface::adjustVolume)); + ON_CALL(*this, setMute(_)).WillByDefault(Invoke(&m_speaker, &SpeakerInterface::setMute)); + ON_CALL(*this, getSpeakerSettings(_)).WillByDefault(Invoke(&m_speaker, &SpeakerInterface::getSpeakerSettings)); + ON_CALL(*this, getSpeakerType()).WillByDefault(Invoke(&m_speaker, &SpeakerInterface::getSpeakerType)); + } + + MockSpeakerInterface(SpeakerInterface::Type type) : m_speaker{type} { + } + +private: + // Implementation of Speaker object to handle calls. + MockSpeaker m_speaker; +}; + +/** + * A mock object to test that the observer is being correctly notified. + */ +class MockObserver : public SpeakerManagerObserverInterface { +public: + MOCK_METHOD3( + onSpeakerSettingsChanged, + void(const Source&, const SpeakerInterface::Type&, const SpeakerInterface::SpeakerSettings&)); +}; + +class SpeakerManagerTest : public ::testing::TestWithParam> { +public: + /// SetUp before each test. + void SetUp(); + + /// TearDown after each test. + void TearDown(); + + /// CleanUp and reset the SpeakerManager. + void cleanUp(); + + /// Function to wait for @c m_wakeSetCompleteFuture to be set. + void wakeOnSetCompleted(); + + /// Helper function to get unique @c Type. + std::set getUniqueTypes(std::vector>& speakers); + + /// A constructor which initializes the promises and futures needed for the test class. + SpeakerManagerTest() : + m_wakeSetCompletedPromise{}, + m_wakeSetCompletedFuture{m_wakeSetCompletedPromise.get_future()} { + } + +protected: + /// Promise to synchronize directive handling through setCompleted. + std::promise m_wakeSetCompletedPromise; + + /// Future to synchronize directive handling through setCompleted. + std::future m_wakeSetCompletedFuture; + + /* + * Set this to a nice mock. The only instance of the mock being called is the setStateProvider member, which we + * explicitly test. + */ + std::shared_ptr> m_mockContextManager; + + /// A strict mock that allows the test to strictly monitor the messages sent. + std::shared_ptr> m_mockMessageSender; + + /// A strict mock that allows the test to strictly monitor the exceptions being sent. + std::shared_ptr> m_mockExceptionSender; + + /// A strict mock that allows the test to strictly monitor the handling of directives. + std::unique_ptr> m_mockDirectiveHandlerResult; + + /// A mock to allow testing of the observer callback behavior. + std::shared_ptr> m_observer; + + /// A pointer to an instance of the SpeakerManager that will be instantiated per test. + std::shared_ptr m_speakerManager; +}; + +void SpeakerManagerTest::SetUp() { + m_mockContextManager = std::make_shared>(); + m_mockMessageSender = std::make_shared>(); + m_mockExceptionSender = std::make_shared>(); + m_mockDirectiveHandlerResult = make_unique>(); + m_observer = std::make_shared>(); +} + +void SpeakerManagerTest::TearDown() { + if (m_speakerManager) { + m_speakerManager->shutdown(); + m_speakerManager.reset(); + } +} + +void SpeakerManagerTest::wakeOnSetCompleted() { + m_wakeSetCompletedPromise.set_value(); +} + +/** + * Helper function to get unique @c Type from a vector of speakers. + */ +std::set SpeakerManagerTest::getUniqueTypes( + std::vector>& speakers) { + std::set types; + for (auto speaker : speakers) { + types.insert(speaker->getSpeakerType()); + } + return types; +} + +/// Helper function to generate the VolumeState in JSON for the ContextManager. +std::string generateVolumeStateJson(SpeakerInterface::SpeakerSettings settings) { + rapidjson::Document state(rapidjson::kObjectType); + state.AddMember(VOLUME_KEY, settings.volume, state.GetAllocator()); + state.AddMember(MUTED_KEY, settings.mute, state.GetAllocator()); + + rapidjson::StringBuffer buffer; + rapidjson::Writer writer(buffer); + if (!state.Accept(writer)) { + return ""; + } + + return buffer.GetString(); +} + +/** + * Tests creating the SpeakerManager with a null contextManager. + */ +TEST_F(SpeakerManagerTest, testNullContextManager) { + std::vector> speakers{ + std::make_shared(SpeakerInterface::Type::AVS_SYNCED)}; + + m_speakerManager = SpeakerManager::create(speakers, nullptr, m_mockMessageSender, m_mockExceptionSender); + + ASSERT_EQ(m_speakerManager, nullptr); +} + +/** + * Tests creating the SpeakerManager with a null messageSender. + */ +TEST_F(SpeakerManagerTest, testNullMessageSender) { + std::vector> speakers{ + std::make_shared(SpeakerInterface::Type::AVS_SYNCED)}; + + m_speakerManager = SpeakerManager::create(speakers, m_mockContextManager, nullptr, m_mockExceptionSender); + + ASSERT_EQ(m_speakerManager, nullptr); +} + +/** + * Tests creating the SpeakerManager with a null exceptionSender. + */ +TEST_F(SpeakerManagerTest, testNullExceptionSender) { + std::vector> speakers{ + std::make_shared(SpeakerInterface::Type::AVS_SYNCED)}; + + m_speakerManager = SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, nullptr); + + ASSERT_EQ(m_speakerManager, nullptr); +} + +/** + * Tests creating the SpeakerManager with no speakers. + */ +TEST_F(SpeakerManagerTest, testNoSpeakers) { + m_speakerManager = SpeakerManager::create({}, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + + ASSERT_EQ(m_speakerManager, nullptr); +} + +/** + * Tests that the SpeakerManager initially provides the state at constructor time. + */ +TEST_F(SpeakerManagerTest, testContextManagerSetStateConstructor) { + EXPECT_CALL( + *m_mockContextManager, + setState(VOLUME_STATE, generateVolumeStateJson(DEFAULT_SETTINGS), StateRefreshPolicy::NEVER, _)) + .Times(Exactly(1)); + auto speaker = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + speaker->DelegateToReal(); + + std::vector> speakers{speaker}; + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); +} + +/* + * Test setVolume with a value that's under the bounds. The operation should fail. + */ +TEST_F(SpeakerManagerTest, testSetVolumeUnderBounds) { + auto speaker = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + speaker->DelegateToReal(); + EXPECT_CALL(*speaker, setVolume(_)).Times(Exactly(0)); + + std::vector> speakers = {speaker}; + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(_, _, _)).Times(Exactly(0)); + m_speakerManager->addSpeakerManagerObserver(m_observer); + + std::future future = m_speakerManager->setVolume(SpeakerInterface::Type::AVS_SYNCED, AVS_SET_VOLUME_MIN - 1); + ASSERT_FALSE(future.get()); +} + +/* + * Test setVolume with a value that's over the bounds. The operation should fail. + */ +TEST_F(SpeakerManagerTest, testSetVolumeOverBounds) { + auto speaker = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + speaker->DelegateToReal(); + EXPECT_CALL(*speaker, setVolume(_)).Times(Exactly(0)); + std::vector> speakers = {speaker}; + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(_, _, _)).Times(Exactly(0)); + m_speakerManager->addSpeakerManagerObserver(m_observer); + + std::future future = m_speakerManager->setVolume(SpeakerInterface::Type::AVS_SYNCED, AVS_SET_VOLUME_MAX + 1); + ASSERT_FALSE(future.get()); +} + +/* + * Test adjustVolume with a value that's under the bounds. The operation should fail. + */ +TEST_F(SpeakerManagerTest, testAdjustVolumeUnderBounds) { + auto speaker = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + speaker->DelegateToReal(); + EXPECT_CALL(*speaker, adjustVolume(_)).Times(Exactly(0)); + std::vector> speakers = {speaker}; + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(_, _, _)).Times(Exactly(0)); + m_speakerManager->addSpeakerManagerObserver(m_observer); + + std::future future = + m_speakerManager->adjustVolume(SpeakerInterface::Type::AVS_SYNCED, AVS_ADJUST_VOLUME_MIN - 1); + ASSERT_FALSE(future.get()); +} + +/* + * Test adjustVolume with a value that's over the bounds. The operation should fail. + */ +TEST_F(SpeakerManagerTest, testAdjustVolumeOverBounds) { + auto speaker = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + speaker->DelegateToReal(); + EXPECT_CALL(*speaker, adjustVolume(_)).Times(Exactly(0)); + std::vector> speakers = {speaker}; + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(_, _, _)).Times(Exactly(0)); + m_speakerManager->addSpeakerManagerObserver(m_observer); + + std::future future = + m_speakerManager->adjustVolume(SpeakerInterface::Type::AVS_SYNCED, AVS_ADJUST_VOLUME_MAX + 1); + ASSERT_FALSE(future.get()); +} + +/* + * Test setVolume when the speaker interfaces are out of sync. The operation should fail. + */ +TEST_F(SpeakerManagerTest, testSetVolumeOutOfSync) { + auto speaker = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + speaker->DelegateToReal(); + + auto speaker2 = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + EXPECT_CALL(*speaker2, getSpeakerType()).WillRepeatedly(Return(SpeakerInterface::Type::AVS_SYNCED)); + EXPECT_CALL(*speaker2, setVolume(_)).WillRepeatedly(Return(true)); + // Set speaker to be out of sync. + EXPECT_CALL(*speaker2, getSpeakerSettings(_)).WillRepeatedly(Return(false)); + + std::vector> speakers = {speaker, speaker2}; + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(_, _, _)).Times(Exactly(0)); + m_speakerManager->addSpeakerManagerObserver(m_observer); + + std::future future = m_speakerManager->setVolume(SpeakerInterface::Type::AVS_SYNCED, AVS_SET_VOLUME_MAX); + ASSERT_FALSE(future.get()); +} + +/* + * Test adjustVolume when the speaker interfaces are out of sync. The operation should fail. + */ +TEST_F(SpeakerManagerTest, testAdjustVolumeOutOfSync) { + auto speaker = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + speaker->DelegateToReal(); + + auto speaker2 = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + EXPECT_CALL(*speaker2, getSpeakerType()).WillRepeatedly(Return(SpeakerInterface::Type::AVS_SYNCED)); + EXPECT_CALL(*speaker2, adjustVolume(_)).WillRepeatedly(Return(true)); + // Set speaker to be out of sync. + EXPECT_CALL(*speaker2, getSpeakerSettings(_)).WillRepeatedly(Return(false)); + + std::vector> speakers = {speaker, speaker2}; + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(_, _, _)).Times(Exactly(0)); + m_speakerManager->addSpeakerManagerObserver(m_observer); + + std::future future = + m_speakerManager->adjustVolume(SpeakerInterface::Type::AVS_SYNCED, AVS_ADJUST_VOLUME_MAX); + ASSERT_FALSE(future.get()); +} + +/* + * Test setMute when the speaker interfaces are out of sync. The operation should fail. + */ +TEST_F(SpeakerManagerTest, testSetMuteOutOfSync) { + auto speaker = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + speaker->DelegateToReal(); + + auto speaker2 = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + EXPECT_CALL(*speaker2, getSpeakerType()).WillRepeatedly(Return(SpeakerInterface::Type::AVS_SYNCED)); + EXPECT_CALL(*speaker2, setMute(_)).WillRepeatedly(Return(true)); + // Set speaker to be out of sync. + EXPECT_CALL(*speaker2, getSpeakerSettings(_)).WillRepeatedly(Return(false)); + + std::vector> speakers = {speaker, speaker2}; + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(_, _, _)).Times(Exactly(0)); + m_speakerManager->addSpeakerManagerObserver(m_observer); + + std::future future = m_speakerManager->setMute(SpeakerInterface::Type::AVS_SYNCED, MUTE); + ASSERT_FALSE(future.get()); +} + +/** + * Test getSpeakerSettings when speakers are out of sync. The operation should fail. + */ +TEST_F(SpeakerManagerTest, testGetSpeakerSettingsSpeakersOutOfSync) { + auto speaker = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + speaker->DelegateToReal(); + + auto speaker2 = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + EXPECT_CALL(*speaker2, getSpeakerType()).WillRepeatedly(Return(SpeakerInterface::Type::AVS_SYNCED)); + // Set speaker to be out of sync. + EXPECT_CALL(*speaker2, getSpeakerSettings(_)).WillRepeatedly(Return(false)); + + std::vector> speakers = {speaker, speaker2}; + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(_, _, _)).Times(Exactly(0)); + m_speakerManager->addSpeakerManagerObserver(m_observer); + + SpeakerInterface::SpeakerSettings settings; + std::future future = m_speakerManager->getSpeakerSettings(SpeakerInterface::Type::AVS_SYNCED, &settings); + ASSERT_FALSE(future.get()); +} + +/** + * Test getConfiguration and ensure that all directives are handled. + */ +TEST_F(SpeakerManagerTest, testGetConfiguration) { + std::shared_ptr speaker = + std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + + m_speakerManager = + SpeakerManager::create({speaker}, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + + auto configuration = m_speakerManager->getConfiguration(); + ASSERT_EQ(configuration[SET_VOLUME], BlockingPolicy::NON_BLOCKING); + ASSERT_EQ(configuration[ADJUST_VOLUME], BlockingPolicy::NON_BLOCKING); + ASSERT_EQ(configuration[SET_MUTE], BlockingPolicy::NON_BLOCKING); +} + +/** + * Test that adding a null observer does not cause any errors in the SpeakerManager. + */ +TEST_F(SpeakerManagerTest, testAddNullObserver) { + auto speaker = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + speaker->DelegateToReal(); + + m_speakerManager = + SpeakerManager::create({speaker}, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + m_speakerManager->addSpeakerManagerObserver(nullptr); + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)).Times(Exactly(3)); + + m_speakerManager->setVolume(SpeakerInterface::Type::AVS_SYNCED, AVS_SET_VOLUME_MAX).wait(); + m_speakerManager->adjustVolume(SpeakerInterface::Type::AVS_SYNCED, AVS_ADJUST_VOLUME_MAX).wait(); + m_speakerManager->setMute(SpeakerInterface::Type::AVS_SYNCED, MUTE).wait(); +} + +/** + * Test that removing an observer works correctly. + */ +TEST_F(SpeakerManagerTest, testRemoveSpeakerManagerObserver) { + auto speaker = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + speaker->DelegateToReal(); + + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(_, _, _)).Times(Exactly(0)); + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)).Times(Exactly(3)); + + m_speakerManager = + SpeakerManager::create({speaker}, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + m_speakerManager->addSpeakerManagerObserver(m_observer); + m_speakerManager->removeSpeakerManagerObserver(m_observer); + + m_speakerManager->setVolume(SpeakerInterface::Type::AVS_SYNCED, AVS_SET_VOLUME_MAX).wait(); + m_speakerManager->adjustVolume(SpeakerInterface::Type::AVS_SYNCED, AVS_ADJUST_VOLUME_MAX).wait(); + m_speakerManager->setMute(SpeakerInterface::Type::AVS_SYNCED, MUTE).wait(); +} + +/** + * Test that removing a null observer does not cause any errors in the SpeakerManager. + */ +TEST_F(SpeakerManagerTest, testRemoveNullObserver) { + auto speaker = std::make_shared>(SpeakerInterface::Type::AVS_SYNCED); + speaker->DelegateToReal(); + + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)).Times(Exactly(3)); + + m_speakerManager = + SpeakerManager::create({speaker}, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + m_speakerManager->removeSpeakerManagerObserver(nullptr); + + m_speakerManager->setVolume(SpeakerInterface::Type::AVS_SYNCED, AVS_SET_VOLUME_MAX).wait(); + m_speakerManager->adjustVolume(SpeakerInterface::Type::AVS_SYNCED, AVS_ADJUST_VOLUME_MAX).wait(); + m_speakerManager->setMute(SpeakerInterface::Type::AVS_SYNCED, MUTE).wait(); +} + +/** + * Create different combinations of @c Type for parameterized tests (TEST_P). + */ +INSTANTIATE_TEST_CASE_P( + Parameterized, + SpeakerManagerTest, + // clang-format off + ::testing::Values( + std::vector{ + SpeakerInterface::Type::AVS_SYNCED + }, + std::vector{ + SpeakerInterface::Type::LOCAL + }, + std::vector{ + SpeakerInterface::Type::AVS_SYNCED, + SpeakerInterface::Type::AVS_SYNCED + }, + std::vector{ + SpeakerInterface::Type::LOCAL, + SpeakerInterface::Type::LOCAL, + }, + std::vector{ + SpeakerInterface::Type::AVS_SYNCED, + SpeakerInterface::Type::LOCAL, + SpeakerInterface::Type::AVS_SYNCED, + SpeakerInterface::Type::LOCAL + })); + // clang-format off + +/** + * Parameterized test for setVolume. One event should be sent if an AVS_SYNCED typed speaker is modified. + */ +TEST_P(SpeakerManagerTest, testSetVolume) { + std::vector> speakers; + + for (auto& typeOfSpeaker : GetParam()) { + auto speaker = std::make_shared>(typeOfSpeaker); + speaker->DelegateToReal(); + EXPECT_CALL(*speaker, setVolume(AVS_SET_VOLUME_MAX)).Times(Exactly(1)); + speakers.push_back(speaker); + } + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + + SpeakerInterface::SpeakerSettings expectedSettings{AVS_SET_VOLUME_MAX, UNMUTE}; + m_speakerManager->addSpeakerManagerObserver(m_observer); + + for (auto type : getUniqueTypes(speakers)) { + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(SpeakerManagerObserverInterface::Source::LOCAL_API, type, expectedSettings)).Times(Exactly(1)); + if (SpeakerInterface::Type::AVS_SYNCED == type) { + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)).Times(Exactly(1)); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, _, StateRefreshPolicy::NEVER, _)).Times(AnyNumber()); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, generateVolumeStateJson(expectedSettings), StateRefreshPolicy::NEVER, _)).Times(Exactly(1)); + } + + std::future future = m_speakerManager->setVolume(type, AVS_SET_VOLUME_MAX); + ASSERT_TRUE(future.get()); + } +} + +/** + * Parameterized test for adjustVolume. One event should be sent if an AVS_SYNCED typed speaker is modified. + */ +TEST_P(SpeakerManagerTest, testAdjustVolume) { + std::vector> speakers; + + for (auto& typeOfSpeaker : GetParam()) { + auto speaker = std::make_shared>(typeOfSpeaker); + speaker->DelegateToReal(); + EXPECT_CALL(*speaker, adjustVolume(AVS_ADJUST_VOLUME_MIN)).Times(Exactly(1)); + speakers.push_back(speaker); + } + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + + // The test adjusts the volume by AVS_ADJUST_VOLUME_MIN, which results in the lowest volume possible. + SpeakerInterface::SpeakerSettings expectedSettings{AVS_SET_VOLUME_MIN, UNMUTE}; + m_speakerManager->addSpeakerManagerObserver(m_observer); + + for (auto type : getUniqueTypes(speakers)) { + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(SpeakerManagerObserverInterface::Source::LOCAL_API, type, expectedSettings)).Times(Exactly(1)); + if (SpeakerInterface::Type::AVS_SYNCED == type) { + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)).Times(Exactly(1)); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, _, StateRefreshPolicy::NEVER, _)).Times(AnyNumber()); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, generateVolumeStateJson(expectedSettings), StateRefreshPolicy::NEVER, _)).Times(Exactly(1)); + } + + std::future future = m_speakerManager->adjustVolume(type, AVS_ADJUST_VOLUME_MIN); + ASSERT_TRUE(future.get()); + } +} + +/** + * Parameterized test for setMute. One event should be sent if an AVS_SYNCED typed speaker is modified. + */ +TEST_P(SpeakerManagerTest, testSetMute) { + std::vector> speakers; + + for (auto& typeOfSpeaker : GetParam()) { + auto speaker = std::make_shared>(typeOfSpeaker); + speaker->DelegateToReal(); + EXPECT_CALL(*speaker, setMute(MUTE)).Times(Exactly(1)); + speakers.push_back(speaker); + } + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + + SpeakerInterface::SpeakerSettings expectedSettings{DEFAULT_SETTINGS.volume, MUTE}; + m_speakerManager->addSpeakerManagerObserver(m_observer); + + for (auto type : getUniqueTypes(speakers)) { + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(SpeakerManagerObserverInterface::Source::LOCAL_API, type, expectedSettings)).Times(Exactly(1)); + if (SpeakerInterface::Type::AVS_SYNCED == type) { + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)).Times(Exactly(1)); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, _, StateRefreshPolicy::NEVER, _)).Times(AnyNumber()); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, generateVolumeStateJson(expectedSettings), StateRefreshPolicy::NEVER, _)).Times(Exactly(1)); + } + + std::future future = m_speakerManager->setMute(type, MUTE); + ASSERT_TRUE(future.get()); + } +} + +/** + * Parameterized test for getSpeakerSettings. Operation should succeed with default speaker settings. + */ +TEST_P(SpeakerManagerTest, testGetSpeakerSettings) { + std::vector> speakers; + + for (auto& typeOfSpeaker : GetParam()) { + auto speaker = std::make_shared>(typeOfSpeaker); + speaker->DelegateToReal(); + // There are other calls to getSpeakerSettings(), such as when we initially provide the Context. + EXPECT_CALL(*speaker, getSpeakerSettings(_)).Times(AtLeast(1)); + speakers.push_back(speaker); + } + + auto uniqueTypes = getUniqueTypes(speakers); + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(_, _, _)).Times(Exactly(0)); + m_speakerManager->addSpeakerManagerObserver(m_observer); + + for (auto type : uniqueTypes) { + SpeakerInterface::SpeakerSettings settings; + std::future future = m_speakerManager->getSpeakerSettings(type, &settings); + ASSERT_TRUE(future.get()); + ASSERT_EQ(settings.volume, DEFAULT_SETTINGS.volume); + ASSERT_EQ(settings.mute, DEFAULT_SETTINGS.mute); + } +} + +/** + * Tests SetVolume Directive. Expect that the volume is unmuted and set, as well at most one + * event is sent. In the event there are no AVS_SYNCED speakers registered, no event will be sent. + * In addition, only AVS_SYNCED speakers should be affected. + */ +TEST_P(SpeakerManagerTest, testSetVolumeDirective) { + std::vector> speakers; + int eventsSent = 0; + SpeakerInterface::SpeakerSettings expectedSettings{AVS_SET_VOLUME_MAX, UNMUTE}; + + // Create Speaker objects. + for (auto& typeOfSpeaker : GetParam()) { + auto speaker = std::make_shared>(typeOfSpeaker); + speaker->DelegateToReal(); + int timesCalled = 0; + if (typeOfSpeaker == SpeakerInterface::Type::AVS_SYNCED) { + timesCalled = 1; + } + + EXPECT_CALL(*speaker, setMute(UNMUTE)).Times(Exactly(timesCalled)); + EXPECT_CALL(*speaker, setVolume(AVS_SET_VOLUME_MAX)).Times(Exactly(timesCalled)); + + speakers.push_back(speaker); + } + + auto uniqueTypes = getUniqueTypes(speakers); + + // Creation expectations based on type. + if (uniqueTypes.count(SpeakerInterface::Type::AVS_SYNCED)) { + eventsSent = 1; + + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(SpeakerManagerObserverInterface::Source::DIRECTIVE, SpeakerInterface::Type::AVS_SYNCED, expectedSettings)).Times(Exactly(1)); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, _, StateRefreshPolicy::NEVER, _)).Times(AnyNumber()); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, generateVolumeStateJson(expectedSettings), StateRefreshPolicy::NEVER, _)).Times(Exactly(1)); + } else { + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(_, _, _)).Times(Exactly(0)); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, _, StateRefreshPolicy::NEVER, _)).Times(Exactly(0)); + } + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)).Times(Exactly(eventsSent)); + EXPECT_CALL(*(m_mockDirectiveHandlerResult.get()), setCompleted()) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeakerManagerTest::wakeOnSetCompleted)); + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + m_speakerManager->addSpeakerManagerObserver(m_observer); + + // Create Directive. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(SET_VOLUME.nameSpace, SET_VOLUME.name, MESSAGE_ID); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, VOLUME_PAYLOAD, attachmentManager, ""); + + m_speakerManager->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirectiveHandlerResult)); + m_speakerManager->CapabilityAgent::handleDirective(MESSAGE_ID); + m_wakeSetCompletedFuture.wait_for(TIMEOUT); +} + +/** + * Tests AdjustVolume Directive. Expect that the volume is unmuted and adjusted, as well at most one + * event is sent. In the event there are no AVS_SYNCED speakers registered, no event will be sent. + * In addition, only AVS_SYNCED speakers should be affected. + */ +TEST_P(SpeakerManagerTest, testAdjustVolumeDirective) { + std::vector> speakers; + int eventsSent = 0; + SpeakerInterface::SpeakerSettings expectedSettings{AVS_SET_VOLUME_MAX, UNMUTE}; + + // Create Speaker objects. + for (auto& typeOfSpeaker : GetParam()) { + auto speaker = std::make_shared>(typeOfSpeaker); + speaker->DelegateToReal(); + int timesCalled = 0; + if (typeOfSpeaker == SpeakerInterface::Type::AVS_SYNCED) { + timesCalled = 1; + } + + EXPECT_CALL(*speaker, setMute(UNMUTE)).Times(Exactly(timesCalled)); + EXPECT_CALL(*speaker, adjustVolume(AVS_ADJUST_VOLUME_MAX)).Times(Exactly(timesCalled)); + + speakers.push_back(speaker); + } + + auto uniqueTypes = getUniqueTypes(speakers); + + // Creation expectations based on type. + if (uniqueTypes.count(SpeakerInterface::Type::AVS_SYNCED)) { + eventsSent = 1; + + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(SpeakerManagerObserverInterface::Source::DIRECTIVE, SpeakerInterface::Type::AVS_SYNCED, expectedSettings)).Times(Exactly(1)); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, _, StateRefreshPolicy::NEVER, _)).Times(AnyNumber()); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, generateVolumeStateJson(expectedSettings), StateRefreshPolicy::NEVER, _)).Times(Exactly(1)); + } else { + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(_, _, _)).Times(Exactly(0)); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, _, StateRefreshPolicy::NEVER, _)).Times(Exactly(0)); + } + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)).Times(Exactly(eventsSent)); + EXPECT_CALL(*(m_mockDirectiveHandlerResult.get()), setCompleted()) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeakerManagerTest::wakeOnSetCompleted)); + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + m_speakerManager->addSpeakerManagerObserver(m_observer); + + // Create Directive. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(ADJUST_VOLUME.nameSpace, ADJUST_VOLUME.name, MESSAGE_ID); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, VOLUME_PAYLOAD, attachmentManager, ""); + + m_speakerManager->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirectiveHandlerResult)); + m_speakerManager->CapabilityAgent::handleDirective(MESSAGE_ID); + m_wakeSetCompletedFuture.wait_for(TIMEOUT); +} + +/** + * Tests SetMute Directive. Expect that the volume is muted, as well at most one + * event is sent. In the event there are no AVS_SYNCED speakers registered, no event will be sent. + * In addition, only AVS_SYNCED speakers should be affected. + */ +TEST_P(SpeakerManagerTest, testSetMuteDirective) { + std::vector> speakers; + int eventsSent = 0; + SpeakerInterface::SpeakerSettings expectedSettings{DEFAULT_SETTINGS.volume, MUTE}; + + // Create Speaker objects. + for (auto& typeOfSpeaker : GetParam()) { + auto speaker = std::make_shared>(typeOfSpeaker); + speaker->DelegateToReal(); + int timesCalled = 0; + if (typeOfSpeaker == SpeakerInterface::Type::AVS_SYNCED) { + timesCalled = 1; + } + + EXPECT_CALL(*speaker, setMute(MUTE)).Times(Exactly(timesCalled)); + + speakers.push_back(speaker); + } + + auto uniqueTypes = getUniqueTypes(speakers); + + // Creation expectations based on type. + if (uniqueTypes.count(SpeakerInterface::Type::AVS_SYNCED)) { + eventsSent = 1; + + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(SpeakerManagerObserverInterface::Source::DIRECTIVE, SpeakerInterface::Type::AVS_SYNCED, expectedSettings)).Times(Exactly(1)); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, _, StateRefreshPolicy::NEVER, _)).Times(AnyNumber()); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, generateVolumeStateJson(expectedSettings), StateRefreshPolicy::NEVER, _)).Times(Exactly(1)); + } else { + EXPECT_CALL(*m_observer, onSpeakerSettingsChanged(_, _, _)).Times(Exactly(0)); + EXPECT_CALL(*m_mockContextManager, setState(VOLUME_STATE, _, StateRefreshPolicy::NEVER, _)).Times(Exactly(0)); + } + + EXPECT_CALL(*m_mockMessageSender, sendMessage(_)).Times(Exactly(eventsSent)); + EXPECT_CALL(*(m_mockDirectiveHandlerResult.get()), setCompleted()) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeakerManagerTest::wakeOnSetCompleted)); + + m_speakerManager = + SpeakerManager::create(speakers, m_mockContextManager, m_mockMessageSender, m_mockExceptionSender); + m_speakerManager->addSpeakerManagerObserver(m_observer); + + // Create Directive. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(SET_MUTE.nameSpace, SET_MUTE.name, MESSAGE_ID); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, MUTE_PAYLOAD, attachmentManager, ""); + + m_speakerManager->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirectiveHandlerResult)); + m_speakerManager->CapabilityAgent::handleDirective(MESSAGE_ID); + m_wakeSetCompletedFuture.wait_for(TIMEOUT); +} + +} // namespace test +} // namespace speakerManager +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/SpeechSynthesizer/CMakeLists.txt b/CapabilityAgents/SpeechSynthesizer/CMakeLists.txt index 07272b5075..db7d8d4a6d 100644 --- a/CapabilityAgents/SpeechSynthesizer/CMakeLists.txt +++ b/CapabilityAgents/SpeechSynthesizer/CMakeLists.txt @@ -4,4 +4,4 @@ project(SpeechSynthesizer LANGUAGES CXX) include(../../build/BuildDefaults.cmake) add_subdirectory("src") -add_subdirectory("test") +acsdk_add_test_subdirectory_if_allowed() diff --git a/CapabilityAgents/SpeechSynthesizer/include/SpeechSynthesizer/SpeechSynthesizer.h b/CapabilityAgents/SpeechSynthesizer/include/SpeechSynthesizer/SpeechSynthesizer.h index f2b9a67ca3..d35dc18964 100644 --- a/CapabilityAgents/SpeechSynthesizer/include/SpeechSynthesizer/SpeechSynthesizer.h +++ b/CapabilityAgents/SpeechSynthesizer/include/SpeechSynthesizer/SpeechSynthesizer.h @@ -1,7 +1,5 @@ /* - * SpeechSynthesizer.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_SPEECH_SYNTHESIZER_INCLUDE_SPEECH_SYNTHESIZER_SPEECH_SYNTHESIZER_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_SPEECH_SYNTHESIZER_INCLUDE_SPEECH_SYNTHESIZER_SPEECH_SYNTHESIZER_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SPEECHSYNTHESIZER_INCLUDE_SPEECHSYNTHESIZER_SPEECHSYNTHESIZER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SPEECHSYNTHESIZER_INCLUDE_SPEECHSYNTHESIZER_SPEECHSYNTHESIZER_H_ #include #include @@ -26,12 +24,13 @@ #include #include -#include -#include +#include +#include #include #include #include #include +#include #include #include #include @@ -46,14 +45,15 @@ namespace speechSynthesizer { * This class implements the SpeechSynthesizer capability agent. * @see https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/speechsynthesizer */ -class SpeechSynthesizer : - public avsCommon::avs::CapabilityAgent, - public avsCommon::utils::mediaPlayer::MediaPlayerObserverInterface, - public avsCommon::utils::RequiresShutdown, - public std::enable_shared_from_this { +class SpeechSynthesizer + : public avsCommon::avs::CapabilityAgent + , public avsCommon::sdkInterfaces::DialogUXStateObserverInterface + , public avsCommon::utils::mediaPlayer::MediaPlayerObserverInterface + , public avsCommon::utils::RequiresShutdown + , public std::enable_shared_from_this { public: - /// Alias to the @c SpeechSynthesizerObserver for brevity. - using SpeechSynthesizerObserver = avsCommon::sdkInterfaces::SpeechSynthesizerObserver; + /// Alias to the @c SpeechSynthesizerObserverInterface for brevity. + using SpeechSynthesizerObserverInterface = avsCommon::sdkInterfaces::SpeechSynthesizerObserverInterface; /** * Create a new @c SpeechSynthesizer instance. @@ -63,19 +63,20 @@ class SpeechSynthesizer : * @param focusManager The instance of the @c FocusManagerInterface used to acquire focus of a channel. * @param contextManager The instance of the @c ContextObserverInterface to use to set the context * of the @c SpeechSynthesizer. - * @param attachmentManager The instance of the @c AttachmentManagerInterface to use to read the attachment. * @param exceptionSender The instance of the @c ExceptionEncounteredSenderInterface to use to notify AVS * when a directive cannot be processed. * * @return Returns a new @c SpeechSynthesizer, or @c nullptr if the operation failed. */ static std::shared_ptr create( - std::shared_ptr mediaPlayer, - std::shared_ptr messageSender, - std::shared_ptr focusManager, - std::shared_ptr contextManager, - std::shared_ptr attachmentManager, - std::shared_ptr exceptionSender); + std::shared_ptr mediaPlayer, + std::shared_ptr messageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender, + std::shared_ptr dialogUXStateAggregator); + + void onDialogUXStateChanged(DialogUXState newState) override; avsCommon::avs::DirectiveHandlerConfiguration getConfiguration() const override; @@ -84,21 +85,21 @@ class SpeechSynthesizer : * * @param observer The observer to add. */ - void addObserver(std::shared_ptr observer); + void addObserver(std::shared_ptr observer); /** * Remove an observer from the SpeechSynthesizer. * * @note This is a synchronous call which can not be made by an observer callback. Attempting to call - * @c removeObserver() from @c SpeechSynthesizerObserver::onStateChanged() will result in a deadlock. + * @c removeObserver() from @c SpeechSynthesizerObserverInterface::onStateChanged() will result in a deadlock. * * @param observer The observer to remove. */ - void removeObserver(std::shared_ptr observer); + void removeObserver(std::shared_ptr observer); void onDeregistered() override; - void handleDirectiveImmediately(std::shared_ptr directive) override; + void handleDirectiveImmediately(std::shared_ptr directive) override; void preHandleDirective(std::shared_ptr info) override; @@ -108,17 +109,20 @@ class SpeechSynthesizer : void onFocusChanged(avsCommon::avs::FocusState newFocus) override; - void provideState(const unsigned int stateRequestToken) override; + void provideState(const avsCommon::avs::NamespaceAndName& stateProviderName, const unsigned int stateRequestToken) + override; void onContextAvailable(const std::string& jsonContext) override; void onContextFailure(const avsCommon::sdkInterfaces::ContextRequestError error) override; - void onPlaybackStarted() override; + void onPlaybackStarted(SourceId id) override; + + void onPlaybackFinished(SourceId id) override; - void onPlaybackFinished() override; + void onPlaybackError(SourceId id, const avsCommon::utils::mediaPlayer::ErrorType& type, std::string error) override; - void onPlaybackError(std::string error) override; + void onPlaybackStopped(SourceId id) override; private: /** @@ -148,6 +152,9 @@ class SpeechSynthesizer : /// The @c AttachmentReader from which to read speech audio. std::unique_ptr attachmentReader; + /// A flag to indicate if an event needs to be sent to AVS on playback started. + bool sendPlaybackStartedMessage; + /// A flag to indicate if an event needs to be sent to AVS on playback finished. bool sendPlaybackFinishedMessage; @@ -163,17 +170,15 @@ class SpeechSynthesizer : * @param focusManager The instance of the @c FocusManagerInterface used to acquire focus of a channel. * @param contextManager The instance of the @c ContextObserverInterface to use to set the context * of the SpeechSynthesizer. - * @param attachmentManager The instance of the @c AttachmentManagerInterface to use to read the attachment. * @param exceptionSender The instance of the @c ExceptionEncounteredSenderInterface to use to notify AVS * when a directive cannot be processed. */ SpeechSynthesizer( - std::shared_ptr mediaPlayer, - std::shared_ptr messageSender, - std::shared_ptr focusManager, - std::shared_ptr contextManager, - std::shared_ptr attachmentManager, - std::shared_ptr exceptionSender); + std::shared_ptr mediaPlayer, + std::shared_ptr messageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender); void doShutdown() override; @@ -236,8 +241,8 @@ class SpeechSynthesizer : void executeCancel(std::shared_ptr info); /** - * Execute a change of state (on the @c m_executor thread). If the @c m_desiredState is @c PLAYING, playing the - * audio of the current directive is started. If the @c m_desiredState is @c FINISHED this method triggers + * Execute a change of state (on the @c m_executor thread). If the @c m_desiredState is @c PLAYING, playing the + * audio of the current directive is started. If the @c m_desiredState is @c FINISHED this method triggers * termination of playing the audio. */ void executeStateChange(); @@ -250,7 +255,8 @@ class SpeechSynthesizer : * @param stateRequestToken The token to pass through when setting the state. */ void executeProvideState( - const SpeechSynthesizerObserver::SpeechSynthesizerState &state, const unsigned int &stateRequestToken); + const SpeechSynthesizerObserverInterface::SpeechSynthesizerState& state, + const unsigned int& stateRequestToken); /** * Handle (on the @c m_executor thread) notification that speech playback has started. @@ -267,7 +273,16 @@ class SpeechSynthesizer : * * @param error Text describing the nature of the error. */ - void executePlaybackError(std::string error); + void executePlaybackError(const avsCommon::utils::mediaPlayer::ErrorType& type, std::string error); + + /** + * This function is called whenever the AVS UX dialog state of the system changes. This function will block + * processing of other state changes, so any implementation of this should return quickly. + * + * @param newState The new dialog specific AVS UX state. + */ + void executeOnDialogUXStateChanged( + avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState newState); /** * Builds the JSON state to be updated in the @c ContextManager. @@ -276,7 +291,7 @@ class SpeechSynthesizer : * @param offsetInMilliseconds The current offset of text to speech in milliseconds. * @return The JSON state string. */ - std::string buildState(std::string &token, int64_t offsetInMilliseconds) const; + std::string buildState(std::string& token, int64_t offsetInMilliseconds) const; /** * Builds a JSON payload string part of the event to be sent to AVS. @@ -284,7 +299,7 @@ class SpeechSynthesizer : * @param token the token sent in the message from AVS. * @return The JSON payload string. */ - static std::string buildPayload(std::string &token); + static std::string buildPayload(std::string& token); /** * Start playing Speak directive audio. @@ -297,13 +312,15 @@ class SpeechSynthesizer : void stopPlaying(); /** - * Set the current state of the @c SpeechSynthesizer. It updates the @c ContextManager with the new state and send - * an event with the updated state to AVS. - * @c m_mutex must be acquired before calling this function. + * Set the current state of the @c SpeechSynthesizer. The method updates the + * @c ContextManager with the new state and send an event with the updated state to AVS where applicable. + * @c m_mutex must be acquired before calling this function. All observers will be notified of a new state + * regardless of @c provideState value. * * @param newState The new state of the @c SpeechSynthesizer. + * @param provideState If true ContextManager will be updated with the new state. */ - void setCurrentStateLocked(SpeechSynthesizerObserver::SpeechSynthesizerState newState); + void setCurrentStateLocked(SpeechSynthesizerObserverInterface::SpeechSynthesizerState newState); /** * Set the desired state the @c SpeechSynthesizer needs to transition to based on the @c newFocus. @@ -341,9 +358,9 @@ class SpeechSynthesizer : * @param message The error message to include in the ExceptionEncountered message. */ void sendExceptionEncounteredAndReportFailed( - std::shared_ptr info, - avsCommon::avs::ExceptionErrorType type, - const std::string& message); + std::shared_ptr info, + avsCommon::avs::ExceptionErrorType type, + const std::string& message); /** * Send ExceptionEncountered because a required property was not in the @c AVSDirective's payload. @@ -352,7 +369,8 @@ class SpeechSynthesizer : * @param missingProperty The name of the missing property. */ void sendExceptionEncounteredAndReportMissingProperty( - std::shared_ptr info, const std::string& missingProperty); + std::shared_ptr info, + const std::string& missingProperty); /** * Release the @c FOREGROUND focus (if we have it). @@ -368,9 +386,9 @@ class SpeechSynthesizer : * @return A @c SpeakDirectiveInfo if it is well formed, otherwise @c nullptr. */ std::shared_ptr validateInfo( - const std::string& caller, - std::shared_ptr info, - bool checkResult = true); + const std::string& caller, + std::shared_ptr info, + bool checkResult = true); /** * Find the @c SpeakDirectiveInfo instance (if any) for the specified @c messageId. @@ -388,8 +406,8 @@ class SpeechSynthesizer : * for the @c messageId. */ bool setSpeakDirectiveInfo( - const std::string& messageId, - std::shared_ptr speakDirectiveInfo); + const std::string& messageId, + std::shared_ptr speakDirectiveInfo); /** * Adds the @c SpeakDirectiveInfo to the @c m_speakInfoQueue. If the entry is being added to an empty queue, @@ -403,13 +421,26 @@ class SpeechSynthesizer : * * @param messageId The @c messageId to remove. */ - void removeSpeakDirectiveInfo(const std::string &messageId); + void removeSpeakDirectiveInfo(const std::string& messageId); + + /** + * Reset the @c m_mediaSourceId once the @c MediaPlayer finishes with playback or + * when @c MediaPlayer returns an error. + */ + void resetMediaSourceId(); + + /** + * Id to identify the specific source when making calls to MediaPlayerInterface. + * If this is modified or retrieved from methods that are not protected by the executor + * then additional locking will be needed. + */ + avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId m_mediaSourceId; /// MediaPlayerInterface instance to send audio attachments to - std::shared_ptr m_speechPlayer; + std::shared_ptr m_speechPlayer; /// Object used to send events. - std::shared_ptr m_messageSender; + std::shared_ptr m_messageSender; /// The @c FocusManager used to acquire the channel. std::shared_ptr m_focusManager; @@ -417,23 +448,20 @@ class SpeechSynthesizer : /// The @c ContextManager that needs to be updated of the state. std::shared_ptr m_contextManager; - /// The @c AttachmentManager used to read attachments. - std::shared_ptr m_attachmentManager; - - /// The set of @c SpeechSynthesizerObserver instances to notify of state changes. - std::unordered_set> m_observers; + /// The set of @c SpeechSynthesizerObserverInterface instances to notify of state changes. + std::unordered_set> m_observers; /** * The current state of the @c SpeechSynthesizer. @c m_mutex must be acquired before reading or writing the * @c m_currentState. */ - SpeechSynthesizerObserver::SpeechSynthesizerState m_currentState; + SpeechSynthesizerObserverInterface::SpeechSynthesizerState m_currentState; /** * The state the @c SpeechSynthesizer must transition to. @c m_mutex must be acquired before reading or writing * the @c m_desiredState. */ - SpeechSynthesizerObserver::SpeechSynthesizerState m_desiredState; + SpeechSynthesizerObserverInterface::SpeechSynthesizerState m_desiredState; /// The current focus acquired by the @c SpeechSynthesizer. avsCommon::avs::FocusState m_currentFocus; @@ -444,11 +472,14 @@ class SpeechSynthesizer : /// Mutex to serialize access to m_currentState, m_desiredState, and m_waitOnStateChange. std::mutex m_mutex; + /// A flag to keep track of if @c SpeechSynthesizer has called @c Stop() already or not. + bool m_isAlreadyStopping; + /// Condition variable to wake @c onFocusChanged() once the state transition to desired state is complete. std::condition_variable m_waitOnStateChange; /// Map of message Id to @c SpeakDirectiveInfo. - std::unordered_map > m_speakDirectiveInfoMap; + std::unordered_map> m_speakDirectiveInfoMap; /** * Mutex to protect @c messageId to @c SpeakDirectiveInfo mapping. This mutex must be acquired before accessing @@ -462,6 +493,10 @@ class SpeechSynthesizer : /// Serializes access to @c m_speakInfoQueue std::mutex m_speakInfoQueueMutex; + /// This flag indicates whether the initial dialog UX State has been received. + bool m_initialDialogUXStateReceived; + /// @} + /** * @c Executor which queues up operations from asynchronous API calls. * @@ -471,8 +506,8 @@ class SpeechSynthesizer : avsCommon::utils::threading::Executor m_executor; }; -} // namespace speechSynthesizer -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace speechSynthesizer +} // namespace capabilityAgents +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_SPEECH_SYNTHESIZER_INCLUDE_SPEECH_SYNTHESIZER_SPEECH_SYNTHESIZER_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SPEECHSYNTHESIZER_INCLUDE_SPEECHSYNTHESIZER_SPEECHSYNTHESIZER_H_ diff --git a/CapabilityAgents/SpeechSynthesizer/src/CMakeLists.txt b/CapabilityAgents/SpeechSynthesizer/src/CMakeLists.txt index 4c82e17eb3..19df752d88 100644 --- a/CapabilityAgents/SpeechSynthesizer/src/CMakeLists.txt +++ b/CapabilityAgents/SpeechSynthesizer/src/CMakeLists.txt @@ -10,4 +10,4 @@ target_include_directories(SpeechSynthesizer PUBLIC target_link_libraries(SpeechSynthesizer AVSCommon) # install target -asdk_install() \ No newline at end of file +asdk_install() diff --git a/CapabilityAgents/SpeechSynthesizer/src/SpeechSynthesizer.cpp b/CapabilityAgents/SpeechSynthesizer/src/SpeechSynthesizer.cpp index ceb3c1dd2d..1b6bdaf957 100644 --- a/CapabilityAgents/SpeechSynthesizer/src/SpeechSynthesizer.cpp +++ b/CapabilityAgents/SpeechSynthesizer/src/SpeechSynthesizer.cpp @@ -1,7 +1,5 @@ /* - * SpeechSynthesizer.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -20,6 +18,7 @@ #include #include +#include #include "SpeechSynthesizer/SpeechSynthesizer.h" @@ -57,9 +56,6 @@ static const NamespaceAndName CONTEXT_MANAGER_SPEECH_STATE{NAMESPACE, "SpeechSta /// The name of the @c FocusManager channel used by the @c SpeechSynthesizer. static const std::string CHANNEL_NAME = FocusManagerInterface::DIALOG_CHANNEL_NAME; -/// The activity Id used with the @c FocusManager by @c SpeechSynthesizer. -static const std::string FOCUS_MANAGER_ACTIVITY_ID{"SpeechSynthesizer.Speak"}; - /// The name of the event to send to the AVS server once audio starting playing. static std::string SPEECH_STARTED_EVENT_NAME{"SpeechStarted"}; @@ -94,15 +90,15 @@ static const char PLAYER_STATE_PLAYING[] = "PLAYING"; static const char PLAYER_STATE_FINISHED[] = "FINISHED"; /// The duration to wait for a state change in @c onFocusChanged before failing. -static const std::chrono::seconds STATE_CHANGE_TIMEOUT{2}; +static const std::chrono::seconds STATE_CHANGE_TIMEOUT{5}; std::shared_ptr SpeechSynthesizer::create( - std::shared_ptr mediaPlayer, - std::shared_ptr messageSender, - std::shared_ptr focusManager, - std::shared_ptr contextManager, - std::shared_ptr attachmentManager, - std::shared_ptr exceptionSender) { + std::shared_ptr mediaPlayer, + std::shared_ptr messageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender, + std::shared_ptr dialogUXStateAggregator) { if (!mediaPlayer) { ACSDK_ERROR(LX("SpeechSynthesizerCreationFailed").d("reason", "mediaPlayerNullReference")); return nullptr; @@ -119,17 +115,16 @@ std::shared_ptr SpeechSynthesizer::create( ACSDK_ERROR(LX("SpeechSynthesizerCreationFailed").d("reason", "contextManagerNullReference")); return nullptr; } - if (!attachmentManager) { - ACSDK_ERROR(LX("SpeechSynthesizerCreationFailed").d("reason", "attachmentManagerNullReference")); - return nullptr; - } if (!exceptionSender) { ACSDK_ERROR(LX("SpeechSynthesizerCreationFailed").d("reason", "exceptionSenderNullReference")); return nullptr; } - auto speechSynthesizer = std::shared_ptr(new SpeechSynthesizer( - mediaPlayer, messageSender, focusManager, contextManager, attachmentManager, exceptionSender)); + auto speechSynthesizer = std::shared_ptr( + new SpeechSynthesizer(mediaPlayer, messageSender, focusManager, contextManager, exceptionSender)); speechSynthesizer->init(); + + dialogUXStateAggregator->addObserver(speechSynthesizer); + return speechSynthesizer; } @@ -139,14 +134,14 @@ avsCommon::avs::DirectiveHandlerConfiguration SpeechSynthesizer::getConfiguratio return configuration; } -void SpeechSynthesizer::addObserver(std::shared_ptr observer) { +void SpeechSynthesizer::addObserver(std::shared_ptr observer) { ACSDK_DEBUG9(LX("addObserver").d("observer", observer.get())); - m_executor.submit([this, observer] () { m_observers.insert(observer); }); + m_executor.submit([this, observer]() { m_observers.insert(observer); }); } -void SpeechSynthesizer::removeObserver(std::shared_ptr observer) { +void SpeechSynthesizer::removeObserver(std::shared_ptr observer) { ACSDK_DEBUG9(LX("removeObserver").d("observer", observer.get())); - m_executor.submit([this, observer] () { m_observers.erase(observer); }).wait(); + m_executor.submit([this, observer]() { m_observers.erase(observer); }).wait(); } void SpeechSynthesizer::onDeregistered() { @@ -157,22 +152,25 @@ void SpeechSynthesizer::onDeregistered() { void SpeechSynthesizer::handleDirectiveImmediately(std::shared_ptr directive) { ACSDK_DEBUG9(LX("handleDirectiveImmediately").d("messageId", directive->getMessageId())); auto info = createDirectiveInfo(directive, nullptr); - m_executor.submit([this, info] () { executeHandleImmediately(info); }); + m_executor.submit([this, info]() { executeHandleImmediately(info); }); } void SpeechSynthesizer::preHandleDirective(std::shared_ptr info) { ACSDK_DEBUG9(LX("preHandleDirective").d("messageId", info->directive->getMessageId())); - m_executor.submit([this, info] () { executePreHandle(info); }); + m_executor.submit([this, info]() { executePreHandle(info); }); } void SpeechSynthesizer::handleDirective(std::shared_ptr info) { ACSDK_DEBUG9(LX("handleDirective").d("messageId", info->directive->getMessageId())); - m_executor.submit([this, info] () { executeHandle(info); }); + if (info->directive->getName() == "Speak") { + ACSDK_METRIC_MSG(TAG, info->directive, Metrics::Location::SPEECH_SYNTHESIZER_RECEIVE); + } + m_executor.submit([this, info]() { executeHandle(info); }); } void SpeechSynthesizer::cancelDirective(std::shared_ptr info) { ACSDK_DEBUG9(LX("cancelDirective").d("messageId", info->directive->getMessageId())); - m_executor.submit([this, info] () { executeCancel(info); }); + m_executor.submit([this, info]() { executeCancel(info); }); } void SpeechSynthesizer::onFocusChanged(FocusState newFocus) { @@ -183,29 +181,43 @@ void SpeechSynthesizer::onFocusChanged(FocusState newFocus) { if (m_currentState == m_desiredState) { return; } + + // Set intermediate state to avoid being considered idle + switch (newFocus) { + case FocusState::FOREGROUND: + setCurrentStateLocked(SpeechSynthesizerObserverInterface::SpeechSynthesizerState::GAINING_FOCUS); + break; + case FocusState::BACKGROUND: + setCurrentStateLocked(SpeechSynthesizerObserverInterface::SpeechSynthesizerState::LOSING_FOCUS); + break; + case FocusState::NONE: + // We do not care of other focus states yet + break; + } + auto messageId = (m_currentInfo && m_currentInfo->directive) ? m_currentInfo->directive->getMessageId() : ""; - m_executor.submit([this] () { executeStateChange(); }); + m_executor.submit([this]() { executeStateChange(); }); // Block until we achieve the desired state. - if (m_waitOnStateChange.wait_for(lock, STATE_CHANGE_TIMEOUT, [this] () { - return m_currentState == m_desiredState; })) { + if (m_waitOnStateChange.wait_for( + lock, STATE_CHANGE_TIMEOUT, [this]() { return m_currentState == m_desiredState; })) { ACSDK_DEBUG9(LX("onFocusChangedSuccess")); } else { - ACSDK_ERROR(LX("onFocusChangeFailed").d("reason", "stateChangeTimeout") - .d("messageId", messageId)); + ACSDK_ERROR(LX("onFocusChangeFailed").d("reason", "stateChangeTimeout").d("messageId", messageId)); if (m_currentInfo) { + lock.unlock(); sendExceptionEncounteredAndReportFailed( - m_currentInfo, - avsCommon::avs::ExceptionErrorType::INTERNAL_ERROR, - "stateChangeTimeout"); + m_currentInfo, avsCommon::avs::ExceptionErrorType::INTERNAL_ERROR, "stateChangeTimeout"); } } } -void SpeechSynthesizer::provideState(const unsigned int stateRequestToken) { +void SpeechSynthesizer::provideState( + const avsCommon::avs::NamespaceAndName& stateProviderName, + const unsigned int stateRequestToken) { ACSDK_DEBUG9(LX("provideState").d("token", stateRequestToken)); std::lock_guard lock(m_mutex); auto state = m_currentState; - m_executor.submit([this, state, stateRequestToken] () { executeProvideState(state, stateRequestToken); }); + m_executor.submit([this, state, stateRequestToken]() { executeProvideState(state, stateRequestToken); }); } void SpeechSynthesizer::onContextAvailable(const std::string& jsonContext) { @@ -218,52 +230,85 @@ void SpeechSynthesizer::onContextFailure(const ContextRequestError error) { // default no-op } -void SpeechSynthesizer::onPlaybackStarted() { - ACSDK_DEBUG9(LX("onPlaybackStarted")); - m_executor.submit([this] () { executePlaybackStarted(); }); +void SpeechSynthesizer::onPlaybackStarted(SourceId id) { + ACSDK_DEBUG9(LX("onPlaybackStarted").d("callbackSourceId", id)); + ACSDK_METRIC_IDS(TAG, "SpeechStarted", "", "", Metrics::Location::SPEECH_SYNTHESIZER_RECEIVE); + if (id != m_mediaSourceId) { + ACSDK_ERROR(LX("queueingExecutePlaybackStartedFailed") + .d("reason", "mismatchSourceId") + .d("callbackSourceId", id) + .d("sourceId", m_mediaSourceId)); + m_executor.submit([this] { + executePlaybackError(ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, "executePlaybackStartedFailed"); + }); + } else { + m_executor.submit([this]() { executePlaybackStarted(); }); + } +} + +void SpeechSynthesizer::onPlaybackFinished(SourceId id) { + ACSDK_DEBUG9(LX("onPlaybackFinished").d("callbackSourceId", id)); + ACSDK_METRIC_IDS(TAG, "SpeechFinished", "", "", Metrics::Location::SPEECH_SYNTHESIZER_RECEIVE); + + if (id != m_mediaSourceId) { + ACSDK_ERROR(LX("queueingExecutePlaybackFinishedFailed") + .d("reason", "mismatchSourceId") + .d("callbackSourceId", id) + .d("sourceId", m_mediaSourceId)); + m_executor.submit([this] { + executePlaybackError(ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, "executePlaybackFinishedFailed"); + }); + } else { + m_executor.submit([this]() { executePlaybackFinished(); }); + } } -void SpeechSynthesizer::onPlaybackFinished() { - ACSDK_DEBUG9(LX("onPlaybackFinished")); - m_executor.submit([this] () { executePlaybackFinished(); }); +void SpeechSynthesizer::onPlaybackError( + SourceId id, + const avsCommon::utils::mediaPlayer::ErrorType& type, + std::string error) { + ACSDK_DEBUG9(LX("onPlaybackError").d("callbackSourceId", id)); + m_executor.submit([this, type, error]() { executePlaybackError(type, error); }); } -void SpeechSynthesizer::onPlaybackError(std::string error) { - ACSDK_DEBUG9(LX("onPlaybackError")); - m_executor.submit([this, error] () { executePlaybackError(error); }); +void SpeechSynthesizer::onPlaybackStopped(SourceId id) { + ACSDK_DEBUG9(LX("onPlaybackStopped").d("callbackSourceId", id)); + onPlaybackFinished(id); } -SpeechSynthesizer::SpeakDirectiveInfo::SpeakDirectiveInfo(std::shared_ptr directiveInfo): +SpeechSynthesizer::SpeakDirectiveInfo::SpeakDirectiveInfo(std::shared_ptr directiveInfo) : directive{directiveInfo->directive}, result{directiveInfo->result}, + sendPlaybackStartedMessage{false}, sendPlaybackFinishedMessage{false}, sendCompletedMessage{false} { } void SpeechSynthesizer::SpeakDirectiveInfo::clear() { - token.clear(); attachmentReader.reset(); + sendPlaybackStartedMessage = false; sendPlaybackFinishedMessage = false; sendCompletedMessage = false; } SpeechSynthesizer::SpeechSynthesizer( - std::shared_ptr mediaPlayer, - std::shared_ptr messageSender, - std::shared_ptr focusManager, - std::shared_ptr contextManager, - std::shared_ptr attachmentManager, - std::shared_ptr exceptionSender) : + std::shared_ptr mediaPlayer, + std::shared_ptr messageSender, + std::shared_ptr focusManager, + std::shared_ptr contextManager, + std::shared_ptr exceptionSender) : CapabilityAgent{NAMESPACE, exceptionSender}, RequiresShutdown{"SpeechSynthesizer"}, + m_mediaSourceId{MediaPlayerInterface::ERROR}, m_speechPlayer{mediaPlayer}, m_messageSender{messageSender}, m_focusManager{focusManager}, m_contextManager{contextManager}, - m_attachmentManager{attachmentManager}, - m_currentState{SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED}, - m_desiredState{SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED}, - m_currentFocus{FocusState::NONE} { + m_currentState{SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED}, + m_desiredState{SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED}, + m_currentFocus{FocusState::NONE}, + m_isAlreadyStopping{false}, + m_initialDialogUXStateReceived{false} { } void SpeechSynthesizer::doShutdown() { @@ -271,12 +316,14 @@ void SpeechSynthesizer::doShutdown() { m_speechPlayer->setObserver(nullptr); { std::unique_lock lock(m_mutex); - if (SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING == m_currentState || - SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING == m_desiredState) { - m_desiredState = SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED; - m_currentInfo->sendPlaybackFinishedMessage = false; + if (SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING == m_currentState || + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING == m_desiredState) { + m_desiredState = SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED; + if (m_currentInfo) { + m_currentInfo->sendPlaybackFinishedMessage = false; + } stopPlaying(); - m_currentState = SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED; + m_currentState = SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED; lock.unlock(); releaseForegroundFocus(); } @@ -297,7 +344,6 @@ void SpeechSynthesizer::doShutdown() { m_messageSender.reset(); m_focusManager.reset(); m_contextManager.reset(); - m_attachmentManager.reset(); m_observers.clear(); } @@ -320,20 +366,21 @@ void SpeechSynthesizer::executeHandleImmediately(std::shared_ptr void SpeechSynthesizer::executePreHandleAfterValidation(std::shared_ptr speakInfo) { if (speakInfo->directive->getName() != SPEAK.name) { const std::string message("unexpectedDirective " + speakInfo->directive->getName()); - ACSDK_ERROR(LX("executePreHandleFailed").d("reason", "unexpectedDirective") - .d("directiveName", speakInfo->directive->getName())); + ACSDK_ERROR(LX("executePreHandleFailed") + .d("reason", "unexpectedDirective") + .d("directiveName", speakInfo->directive->getName())); sendExceptionEncounteredAndReportFailed( - speakInfo, avsCommon::avs::ExceptionErrorType::UNSUPPORTED_OPERATION, message); + speakInfo, avsCommon::avs::ExceptionErrorType::UNSUPPORTED_OPERATION, message); return; } Document payload; if (payload.Parse(speakInfo->directive->getPayload()).HasParseError()) { const std::string message("unableToParsePayload" + speakInfo->directive->getMessageId()); - ACSDK_ERROR(LX("executePreHandleFailed").d("reason", message) - .d("messageId", speakInfo->directive->getMessageId())); + ACSDK_ERROR( + LX("executePreHandleFailed").d("reason", message).d("messageId", speakInfo->directive->getMessageId())); sendExceptionEncounteredAndReportFailed( - speakInfo, avsCommon::avs::ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED, message); + speakInfo, avsCommon::avs::ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED, message); return; } @@ -352,10 +399,12 @@ void SpeechSynthesizer::executePreHandleAfterValidation(std::shared_ptrvalue.GetString(); if (format != FORMAT) { const std::string message("unknownFormat " + speakInfo->directive->getMessageId() + " format " + format); - ACSDK_ERROR(LX("executePreHandleFailed").d("reason", "unknownFormat") - .d("messageId", speakInfo->directive->getMessageId()).d("format", format)); + ACSDK_ERROR(LX("executePreHandleFailed") + .d("reason", "unknownFormat") + .d("messageId", speakInfo->directive->getMessageId()) + .d("format", format)); sendExceptionEncounteredAndReportFailed( - speakInfo, avsCommon::avs::ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED, message); + speakInfo, avsCommon::avs::ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED, message); } it = payload.FindMember(KEY_URL); @@ -369,12 +418,11 @@ void SpeechSynthesizer::executePreHandleAfterValidation(std::shared_ptrattachmentReader = speakInfo->directive->getAttachmentReader( - contentId, AttachmentReader::Policy::BLOCKING); + speakInfo->attachmentReader = speakInfo->directive->getAttachmentReader(contentId, sds::ReaderPolicy::BLOCKING); if (!speakInfo->attachmentReader) { const std::string message("getAttachmentReaderFailed"); ACSDK_ERROR(LX("executePreHandleFailed").d("reason", message)); @@ -383,18 +431,19 @@ void SpeechSynthesizer::executePreHandleAfterValidation(std::shared_ptrdirective->getMessageId(), speakInfo)) { - ACSDK_ERROR(LX("executePreHandleFailed").d("reason", "prehandleCalledTwiceOnSameDirective") - .d("messageId", speakInfo->directive->getMessageId())); + ACSDK_ERROR(LX("executePreHandleFailed") + .d("reason", "prehandleCalledTwiceOnSameDirective") + .d("messageId", speakInfo->directive->getMessageId())); } } void SpeechSynthesizer::executeHandleAfterValidation(std::shared_ptr speakInfo) { m_currentInfo = speakInfo; - if (!m_focusManager->acquireChannel(CHANNEL_NAME, shared_from_this(), FOCUS_MANAGER_ACTIVITY_ID)) { - static const std::string message = std::string("Could not acquire ") + CHANNEL_NAME + " for " + - FOCUS_MANAGER_ACTIVITY_ID; - ACSDK_ERROR(LX("executeHandleFailed").d("reason", "CouldNotAcquireChannel") - .d("messageId", m_currentInfo->directive->getMessageId())); + if (!m_focusManager->acquireChannel(CHANNEL_NAME, shared_from_this(), NAMESPACE)) { + static const std::string message = std::string("Could not acquire ") + CHANNEL_NAME + " for " + NAMESPACE; + ACSDK_ERROR(LX("executeHandleFailed") + .d("reason", "CouldNotAcquireChannel") + .d("messageId", m_currentInfo->directive->getMessageId())); sendExceptionEncounteredAndReportFailed(speakInfo, avsCommon::avs::ExceptionErrorType::INTERNAL_ERROR, message); } } @@ -442,47 +491,73 @@ void SpeechSynthesizer::executeCancel(std::shared_ptr info) { return; } std::unique_lock lock(m_mutex); - m_desiredState = SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED; - if (SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING == m_currentState) { - lock.unlock(); - m_currentInfo->sendPlaybackFinishedMessage = false; - m_currentInfo->sendCompletedMessage = false; - stopPlaying(); + if (SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED != m_desiredState) { + m_desiredState = SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED; + if (SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING == m_currentState || + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::GAINING_FOCUS == m_currentState) { + lock.unlock(); + if (m_currentInfo) { + m_currentInfo->sendPlaybackFinishedMessage = false; + m_currentInfo->sendCompletedMessage = false; + } + stopPlaying(); + } } } void SpeechSynthesizer::executeStateChange() { - SpeechSynthesizerObserver::SpeechSynthesizerState newState; + SpeechSynthesizerObserverInterface::SpeechSynthesizerState newState; { std::lock_guard lock(m_mutex); newState = m_desiredState; } ACSDK_DEBUG(LX("executeStateChange").d("newState", newState)); switch (newState) { - case SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING: - m_currentInfo->sendPlaybackFinishedMessage = true; - m_currentInfo->sendCompletedMessage = true; + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING: + if (m_currentInfo) { + m_currentInfo->sendPlaybackStartedMessage = true; + m_currentInfo->sendPlaybackFinishedMessage = true; + m_currentInfo->sendCompletedMessage = true; + } startPlaying(); break; - case SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED: - m_currentInfo->sendPlaybackFinishedMessage = false; + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED: + if (m_currentInfo) { + m_currentInfo->sendPlaybackFinishedMessage = false; + } stopPlaying(); break; + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::GAINING_FOCUS: + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::LOSING_FOCUS: + // Nothing to do so far + break; } } void SpeechSynthesizer::executeProvideState( - const SpeechSynthesizerObserver::SpeechSynthesizerState &state, const unsigned int& stateRequestToken) { + const SpeechSynthesizerObserverInterface::SpeechSynthesizerState& state, + const unsigned int& stateRequestToken) { ACSDK_DEBUG(LX("executeProvideState").d("stateRequestToken", stateRequestToken)); int64_t offsetInMilliseconds = 0; StateRefreshPolicy refreshPolicy = StateRefreshPolicy::NEVER; std::string speakDirectiveToken; - if (!m_currentInfo && SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING == state) { - ACSDK_ERROR(LX("executeProvideStateFailed").d("reason", "currentInfoIsNull")); - return; - } else if (SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING == state) { - offsetInMilliseconds = m_speechPlayer->getOffsetInMilliseconds(); + if (SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING == state) { + if (!m_currentInfo) { + ACSDK_ERROR(LX("executeProvideStateFailed").d("reason", "currentInfoIsNull")); + return; + } + + // We should never be in the PLAYING state without a valid m_mediaSourceId. + if (MediaPlayerInterface::ERROR == m_mediaSourceId) { + ACSDK_ERROR(LX("executeProvideStateFailed") + .d("reason", "invalidMediaSourceId") + .d("mediaSourceId", m_mediaSourceId)); + return; + } + + offsetInMilliseconds = + std::chrono::duration_cast(m_speechPlayer->getOffset(m_mediaSourceId)).count(); refreshPolicy = StateRefreshPolicy::ALWAYS; speakDirectiveToken = m_currentInfo->token; } else if (m_currentInfo) { @@ -494,31 +569,37 @@ void SpeechSynthesizer::executeProvideState( ACSDK_ERROR(LX("executeProvideStateFailed").d("reason", "buildStateFailed").d("token", speakDirectiveToken)); return; } - auto result = m_contextManager->setState(CONTEXT_MANAGER_SPEECH_STATE, jsonState, refreshPolicy, - stateRequestToken); + auto result = m_contextManager->setState(CONTEXT_MANAGER_SPEECH_STATE, jsonState, refreshPolicy, stateRequestToken); if (result != SetStateResult::SUCCESS) { - ACSDK_ERROR(LX("executeProvideStateFailed").d("reason", "contextManagerSetStateFailed"). - d("token", speakDirectiveToken)); + ACSDK_ERROR(LX("executeProvideStateFailed") + .d("reason", "contextManagerSetStateFailed") + .d("token", speakDirectiveToken)); } } void SpeechSynthesizer::executePlaybackStarted() { ACSDK_DEBUG(LX("executePlaybackStarted")); + if (!m_currentInfo) { + ACSDK_ERROR(LX("executePlaybackStartedIgnored").d("reason", "nullptrDirectiveInfo")); + return; + } { std::lock_guard lock(m_mutex); - setCurrentStateLocked(SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING); + setCurrentStateLocked(SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING); } m_waitOnStateChange.notify_one(); - auto payload = buildPayload(m_currentInfo->token); - if (payload.empty()) { - ACSDK_ERROR(LX("executePlaybackStartedFailed").d("reason", "buildPayloadFailed") - .d("token", m_currentInfo->token)); - return; - } - auto msgIdAndJsonEvent = buildJsonEventString(SPEECH_STARTED_EVENT_NAME, "", payload); + if (m_currentInfo->sendPlaybackStartedMessage) { + auto payload = buildPayload(m_currentInfo->token); + if (payload.empty()) { + ACSDK_ERROR( + LX("executePlaybackStartedFailed").d("reason", "buildPayloadFailed").d("token", m_currentInfo->token)); + return; + } + auto msgIdAndJsonEvent = buildJsonEventString(SPEECH_STARTED_EVENT_NAME, "", payload); - auto request = std::make_shared(msgIdAndJsonEvent.second); - m_messageSender->sendMessage(request); + auto request = std::make_shared(msgIdAndJsonEvent.second); + m_messageSender->sendMessage(request); + } } void SpeechSynthesizer::executePlaybackFinished() { @@ -529,15 +610,15 @@ void SpeechSynthesizer::executePlaybackFinished() { } { std::lock_guard lock(m_mutex); - setCurrentStateLocked(SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + setCurrentStateLocked(SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); } m_waitOnStateChange.notify_one(); - releaseForegroundFocus(); if (m_currentInfo->sendPlaybackFinishedMessage) { auto payload = buildPayload(m_currentInfo->token); if (payload.empty()) { - ACSDK_ERROR(LX("executePlaybackFinishedFailed").d("reason", "buildPayloadFailed") - .d("messageId", m_currentInfo->directive->getMessageId())); + ACSDK_ERROR(LX("executePlaybackFinishedFailed") + .d("reason", "buildPayloadFailed") + .d("messageId", m_currentInfo->directive->getMessageId())); } else { auto msgIdAndJsonEvent = buildJsonEventString(SPEECH_FINISHED_EVENT_NAME, "", payload); @@ -548,6 +629,7 @@ void SpeechSynthesizer::executePlaybackFinished() { if (m_currentInfo->sendCompletedMessage) { setHandlingCompleted(); } + resetCurrentInfo(); { std::lock_guard lock_guard(m_speakInfoQueueMutex); m_speakInfoQueue.pop_front(); @@ -555,32 +637,50 @@ void SpeechSynthesizer::executePlaybackFinished() { executeHandleAfterValidation(m_speakInfoQueue.front()); } } + resetMediaSourceId(); } -void SpeechSynthesizer::executePlaybackError(std::string error) { - ACSDK_DEBUG(LX("executePlaybackError").d("error", error)); +void SpeechSynthesizer::executePlaybackError(const avsCommon::utils::mediaPlayer::ErrorType& type, std::string error) { + ACSDK_DEBUG(LX("executePlaybackError").d("type", type).d("error", error)); if (!m_currentInfo) { return; } { std::lock_guard lock(m_mutex); - setCurrentStateLocked(SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + setCurrentStateLocked(SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); } m_waitOnStateChange.notify_one(); releaseForegroundFocus(); - sendExceptionEncounteredAndReportFailed(m_currentInfo, avsCommon::avs::ExceptionErrorType::INTERNAL_ERROR, error); resetCurrentInfo(); + resetMediaSourceId(); + { + std::unique_lock lock(m_mutex); + while (!m_speakInfoQueue.empty()) { + auto speakInfo = m_speakInfoQueue.front(); + m_speakInfoQueue.pop_front(); + lock.unlock(); + sendExceptionEncounteredAndReportFailed( + speakInfo, avsCommon::avs::ExceptionErrorType::INTERNAL_ERROR, error); + lock.lock(); + } + } } -std::string SpeechSynthesizer::buildState(std::string &token, int64_t offsetInMilliseconds) const { +std::string SpeechSynthesizer::buildState(std::string& token, int64_t offsetInMilliseconds) const { Document state(kObjectType); Document::AllocatorType& alloc = state.GetAllocator(); state.AddMember(KEY_TOKEN, token, alloc); state.AddMember(KEY_OFFSET_IN_MILLISECONDS, offsetInMilliseconds, alloc); - if (SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING == m_currentState) { - state.AddMember(KEY_PLAYER_ACTIVITY, PLAYER_STATE_PLAYING, alloc); - } else { - state.AddMember(KEY_PLAYER_ACTIVITY, PLAYER_STATE_FINISHED, alloc); + + switch (m_currentState) { + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING: + state.AddMember(KEY_PLAYER_ACTIVITY, PLAYER_STATE_PLAYING, alloc); + break; + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED: + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::GAINING_FOCUS: + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::LOSING_FOCUS: + state.AddMember(KEY_PLAYER_ACTIVITY, PLAYER_STATE_FINISHED, alloc); + break; } StringBuffer buffer; @@ -593,7 +693,7 @@ std::string SpeechSynthesizer::buildState(std::string &token, int64_t offsetInMi return buffer.GetString(); } -std::string SpeechSynthesizer::buildPayload(std::string &token) { +std::string SpeechSynthesizer::buildPayload(std::string& token) { Document payload(kObjectType); Document::AllocatorType& alloc = payload.GetAllocator(); @@ -611,50 +711,57 @@ std::string SpeechSynthesizer::buildPayload(std::string &token) { void SpeechSynthesizer::startPlaying() { ACSDK_DEBUG9(LX("startPlaying")); - m_speechPlayer->setSource(std::move(m_currentInfo->attachmentReader)); - auto mediaPlayerStatus = m_speechPlayer->play(); - switch (mediaPlayerStatus) { - case MediaPlayerStatus::SUCCESS: - case MediaPlayerStatus::PENDING: - break; - case MediaPlayerStatus::FAILURE: - executePlaybackError("playFailed"); - break; + m_mediaSourceId = m_speechPlayer->setSource(std::move(m_currentInfo->attachmentReader)); + if (MediaPlayerInterface::ERROR == m_mediaSourceId) { + ACSDK_ERROR(LX("startPlayingFailed").d("reason", "setSourceFailed")); + executePlaybackError(ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, "playFailed"); + } else if (!m_speechPlayer->play(m_mediaSourceId)) { + executePlaybackError(ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, "playFailed"); + } else { + // Execution of play is successful. + m_isAlreadyStopping = false; } } void SpeechSynthesizer::stopPlaying() { ACSDK_DEBUG9(LX("stopPlaying")); - auto mediaPlayerStatus = m_speechPlayer->stop(); - switch (mediaPlayerStatus) { - case MediaPlayerStatus::SUCCESS: - case MediaPlayerStatus::PENDING: - break; - case MediaPlayerStatus::FAILURE: - executePlaybackError("stopFailed"); - break; + if (MediaPlayerInterface::ERROR == m_mediaSourceId) { + ACSDK_ERROR(LX("stopPlayingFailed").d("reason", "invalidMediaSourceId").d("mediaSourceId", m_mediaSourceId)); + } else if (m_isAlreadyStopping) { + ACSDK_DEBUG9(LX("stopPlayingIgnored").d("reason", "isAlreadyStopping")); + } else if (!m_speechPlayer->stop(m_mediaSourceId)) { + executePlaybackError(ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, "stopFailed"); + } else { + // Execution of stop is successful. + m_isAlreadyStopping = true; } } -void SpeechSynthesizer::setCurrentStateLocked(SpeechSynthesizerObserver::SpeechSynthesizerState newState) { +void SpeechSynthesizer::setCurrentStateLocked(SpeechSynthesizerObserverInterface::SpeechSynthesizerState newState) { + ACSDK_DEBUG9(LX("setCurrentStateLocked").d("state", newState)); m_currentState = newState; - executeProvideState(m_currentState, 0); - // Don't allow any slow observers to block our caller. - m_executor.submit([this] () { - for (auto observer : m_observers) { - observer->onStateChanged(m_currentState); - } - }); + switch (newState) { + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING: + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED: + executeProvideState(m_currentState, 0); + break; + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::LOSING_FOCUS: + case SpeechSynthesizerObserverInterface::SpeechSynthesizerState::GAINING_FOCUS: + break; + } + for (auto observer : m_observers) { + observer->onStateChanged(m_currentState); + } } void SpeechSynthesizer::setDesiredStateLocked(FocusState newFocus) { - switch (newFocus) { + switch (newFocus) { case FocusState::FOREGROUND: - m_desiredState = SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING; + m_desiredState = SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING; break; case FocusState::BACKGROUND: case FocusState::NONE: - m_desiredState = SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED; + m_desiredState = SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED; break; } } @@ -675,28 +782,34 @@ void SpeechSynthesizer::setHandlingCompleted() { if (m_currentInfo && m_currentInfo->result) { m_currentInfo->result->setCompleted(); } - resetCurrentInfo(); } void SpeechSynthesizer::sendExceptionEncounteredAndReportFailed( - std::shared_ptr speakInfo, - avsCommon::avs::ExceptionErrorType type, - const std::string& message) { + std::shared_ptr speakInfo, + avsCommon::avs::ExceptionErrorType type, + const std::string& message) { m_exceptionEncounteredSender->sendExceptionEncountered(speakInfo->directive->getUnparsedDirective(), type, message); if (speakInfo && speakInfo->result) { speakInfo->result->setFailed(message); } speakInfo->clear(); removeDirective(speakInfo->directive->getMessageId()); + std::unique_lock lock(m_mutex); + if (SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING == m_currentState || + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::GAINING_FOCUS == m_currentState) { + lock.unlock(); + stopPlaying(); + } } void SpeechSynthesizer::sendExceptionEncounteredAndReportMissingProperty( - std::shared_ptr speakInfo, const std::string& key) { + std::shared_ptr speakInfo, + const std::string& key) { ACSDK_ERROR(LX("executePreHandleFailed").d("reason", "missingProperty").d("key", key)); sendExceptionEncounteredAndReportFailed( - speakInfo, - avsCommon::avs::ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED, - std::string("missing property: ") + key); + speakInfo, + avsCommon::avs::ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED, + std::string("missing property: ") + key); } void SpeechSynthesizer::releaseForegroundFocus() { @@ -709,7 +822,9 @@ void SpeechSynthesizer::releaseForegroundFocus() { } std::shared_ptr SpeechSynthesizer::validateInfo( - const std::string& caller, std::shared_ptr info, bool checkResult) { + const std::string& caller, + std::shared_ptr info, + bool checkResult) { if (!info) { ACSDK_ERROR(LX(caller + "Failed").d("reason", "nullptrInfo")); return nullptr; @@ -733,8 +848,9 @@ std::shared_ptr SpeechSynthesizer::valida return speakDirInfo; } -std::shared_ptr SpeechSynthesizer::getSpeakDirectiveInfo(const std::string& messageId) { - std::lock_guard lock(m_speakDirectiveInfoMutex); +std::shared_ptr SpeechSynthesizer::getSpeakDirectiveInfo( + const std::string& messageId) { + std::lock_guard lock(m_speakDirectiveInfoMutex); auto it = m_speakDirectiveInfoMap.find(messageId); if (it != m_speakDirectiveInfoMap.end()) { return it->second; @@ -743,9 +859,9 @@ std::shared_ptr SpeechSynthesizer::getSpe } bool SpeechSynthesizer::setSpeakDirectiveInfo( - const std::string& messageId, - std::shared_ptr speakDirectiveInfo) { - std::lock_guard lock(m_speakDirectiveInfoMutex); + const std::string& messageId, + std::shared_ptr speakDirectiveInfo) { + std::lock_guard lock(m_speakDirectiveInfoMutex); auto it = m_speakDirectiveInfoMap.find(messageId); if (it != m_speakDirectiveInfoMap.end()) { return false; @@ -754,8 +870,8 @@ bool SpeechSynthesizer::setSpeakDirectiveInfo( return true; } -void SpeechSynthesizer::removeSpeakDirectiveInfo(const std::string &messageId) { - std::lock_guard lock(m_speakDirectiveInfoMutex); +void SpeechSynthesizer::removeSpeakDirectiveInfo(const std::string& messageId) { + std::lock_guard lock(m_speakDirectiveInfoMutex); m_speakDirectiveInfoMap.erase(messageId); } @@ -770,7 +886,33 @@ void SpeechSynthesizer::addToDirectiveQueue(std::shared_ptr } } -} // namespace speechSynthesizer -} // namespace capabilityAgents -} // namespace alexaClientSDK +void SpeechSynthesizer::resetMediaSourceId() { + m_mediaSourceId = MediaPlayerInterface::ERROR; +} + +void SpeechSynthesizer::onDialogUXStateChanged( + avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState newState) { + m_executor.submit([this, newState]() { executeOnDialogUXStateChanged(newState); }); +} + +void SpeechSynthesizer::executeOnDialogUXStateChanged( + avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState newState) { + if (!m_initialDialogUXStateReceived) { + // The initial dialog UX state change call comes from simply registering as an observer; it is not a deliberate + // change to the dialog state which should interrupt a recognize event. + m_initialDialogUXStateReceived = true; + return; + } + if (newState != avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState::IDLE) { + return; + } + if (m_currentFocus != avsCommon::avs::FocusState::NONE && + m_currentState != SpeechSynthesizerObserverInterface::SpeechSynthesizerState::GAINING_FOCUS) { + m_focusManager->releaseChannel(CHANNEL_NAME, shared_from_this()); + m_currentFocus = avsCommon::avs::FocusState::NONE; + } +} +} // namespace speechSynthesizer +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/SpeechSynthesizer/test/CMakeLists.txt b/CapabilityAgents/SpeechSynthesizer/test/CMakeLists.txt index e5e93baa75..0fc4b5ea77 100644 --- a/CapabilityAgents/SpeechSynthesizer/test/CMakeLists.txt +++ b/CapabilityAgents/SpeechSynthesizer/test/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR) -set(INCLUDE_PATH "${SpeechSynthesizer_INCLUDE_DIRS}" "${AVSCommon_SOURCE_DIR}/SDKInterfaces/test") +set(INCLUDE_PATH "${SpeechSynthesizer_INCLUDE_DIRS}" "${AVSCommon_SOURCE_DIR}/SDKInterfaces/test" "${AVSCommon_SOURCE_DIR}/Utils/test") -discover_unit_tests("${INCLUDE_PATH}" SpeechSynthesizer) +discover_unit_tests("${INCLUDE_PATH}" "SpeechSynthesizer;UtilsCommonTestLib") diff --git a/CapabilityAgents/SpeechSynthesizer/test/SpeechSynthesizerTest.cpp b/CapabilityAgents/SpeechSynthesizer/test/SpeechSynthesizerTest.cpp index 0c334cd6a1..c70ad557ed 100644 --- a/CapabilityAgents/SpeechSynthesizer/test/SpeechSynthesizerTest.cpp +++ b/CapabilityAgents/SpeechSynthesizer/test/SpeechSynthesizerTest.cpp @@ -1,7 +1,5 @@ /* - * SpeechSynthesizerTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -30,6 +28,7 @@ #include #include #include +#include #include "SpeechSynthesizer/SpeechSynthesizer.h" @@ -45,16 +44,18 @@ using namespace avsCommon::avs::attachment; using namespace avsCommon::sdkInterfaces; using namespace avsCommon::sdkInterfaces::test; using namespace avsCommon::utils::mediaPlayer; +using namespace avsCommon::utils::mediaPlayer::test; using namespace ::testing; /// Plenty of time for a test to complete. -static std::chrono::milliseconds WAIT_TIMEOUT(1000); +static const std::chrono::milliseconds WAIT_TIMEOUT(1000); -/// The name of the @c FocusManager channel used by the @c SpeechSynthesizer. -static const std::string CHANNEL_NAME("Dialog"); +/// Time to wait for state change timeout. This should be set to be longer than STATE_CHANGE_TIMEOUT in +/// SpeechSynthesizer. +static const std::chrono::milliseconds STATE_CHANGE_TIMEOUT(10000); -/// The activity Id used with the @c FocusManager by @c SpeechSynthesizer. -static const std::string FOCUS_MANAGER_ACTIVITY_ID("SpeechSynthesizer.Speak"); +/// The name of the @c FocusManager channel used by the @c SpeechSynthesizer. +static const std::string CHANNEL_NAME(avsCommon::sdkInterfaces::FocusManagerInterface::DIALOG_CHANNEL_NAME); /// Namespace for SpeechSynthesizer. static const std::string NAMESPACE_SPEECH_SYNTHESIZER("SpeechSynthesizer"); @@ -93,12 +94,14 @@ static const std::string CONTEXT_ID_TEST("ContextId_Test"); static const std::string CONTEXT_ID_TEST_2("ContextId_Test_2"); /// A payload for testing +// clang-format off static const std::string PAYLOAD_TEST = "{" "\"url\":\"" + URL_TEST + "\"," "\"format\":\"" + FORMAT_TEST + "\"," "\"token\":\""+ TOKEN_TEST + "\"" "}"; +// clang-format on /// The @c FINISHED state of the @c SpeechSynthesizer. static const std::string FINISHED_STATE("FINISHED"); @@ -109,29 +112,38 @@ static const std::string PLAYING_STATE{"PLAYING"}; /// The offset in milliseconds returned by the mock media player. static const long OFFSET_IN_MILLISECONDS_TEST{100}; +/// An std::chrono::milliseconds representation of the offset. +static const std::chrono::milliseconds OFFSET_IN_CHRONO_MILLISECONDS_TEST{100}; + /// The expected state when the @c SpeechSynthesizer is in @c PLAYING state. +// clang-format off static const std::string PLAYING_STATE_TEST = "{" "\"token\":\"" + TOKEN_TEST + "\"," "\"offsetInMilliseconds\":" + std::to_string(OFFSET_IN_MILLISECONDS_TEST) + "," "\"playerActivity\":\"" + PLAYING_STATE + "\"" "}"; +// clang-format on /// The expected state when the @c SpeechSynthesizer is in @c FINISHED state. +// clang-format off static const std::string FINISHED_STATE_TEST = "{" "\"token\":\"" + TOKEN_TEST + "\"," "\"offsetInMilliseconds\":" + std::to_string(0) + "," "\"playerActivity\":\"" + FINISHED_STATE + "\"" "}"; +// clang-format on /// The expected state when the @c SpeechSynthesizer is not handling any directive. +// clang-format off static const std::string IDLE_STATE_TEST = "{" "\"token\":\"\"," "\"offsetInMilliseconds\":" + std::to_string(0) + "," "\"playerActivity\":\"" + FINISHED_STATE + "\"" "}"; +// clang-format on /// Provide State Token for testing. static const unsigned int PROVIDE_STATE_TOKEN_TEST{1}; @@ -143,227 +155,14 @@ class MockAttachmentManager : public AttachmentManagerInterface { public: MOCK_CONST_METHOD2(generateAttachmentId, std::string(const std::string&, const std::string&)); MOCK_METHOD1(setAttachmentTimeoutMinutes, bool(std::chrono::minutes timeoutMinutes)); - MOCK_METHOD1(createWriter, std::unique_ptr(const std::string & attachmentId)); - MOCK_METHOD2(createReader, std::unique_ptr( - const std::string & attachmentId, AttachmentReader::Policy policy)); -}; - -class MockMediaPlayer : public MediaPlayerInterface { -public: - /// Constructor. - MockMediaPlayer(); - - /// Destructor. - ~MockMediaPlayer(); - - /** - * Creates an instance of the @c MockMediaPlayer. - * - * @return An instance of the @c MockMediaPlayer. - */ - static std::shared_ptr> create(); - - // 'override' commented out to avoid needless warnings generated because MOCK_METHOD* does not use it. - void setObserver( - std::shared_ptr playerObserver) /*override*/; - - MOCK_METHOD1(setSource, MediaPlayerStatus(std::shared_ptr attachmentReader)); - MOCK_METHOD2(setSource, MediaPlayerStatus(std::shared_ptr stream, bool repeat)); -#ifdef __clang__ -// Remove warnings when compiling with clang. -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Woverloaded-virtual" - MOCK_METHOD1(setSource, MediaPlayerStatus(const std::string& url)); -#pragma clang diagnostic pop -#else - MOCK_METHOD1(setSource, MediaPlayerStatus(const std::string& url)); -#endif - MOCK_METHOD0(play, MediaPlayerStatus()); - MOCK_METHOD0(stop, MediaPlayerStatus()); - MOCK_METHOD0(pause, MediaPlayerStatus()); - MOCK_METHOD0(resume, MediaPlayerStatus()); - MOCK_METHOD0(getOffsetInMilliseconds, int64_t()); - - /** - * This is a mock method which will signal to @c waitForPlay to send the play started notification to the observer. - * - * @return @c SUCCESS. - */ - MediaPlayerStatus mockPlay(); - - /** - * This is a mock method which will signal to @c waitForStop to send the play finished notification to the observer. - * - * @return @c SUCCESS. - */ - MediaPlayerStatus mockStop(); - - /** - * Waits for play to be called. It notifies the observer that play has started. - * - * @param duration Time to wait for a play to be called before notifying observer that an error occurred. - * @return @c true if play was called within the timeout duration else @c false. - */ - bool waitForPlay(const std::chrono::milliseconds duration = std::chrono::milliseconds(200)); - - /** - * Waits for stop to be called. It notifies the observer that play has finished. - * - * @param duration Time to wait for a stop to be called before notifying observer that an error occurred. - * @return @c true if stop was called within the timeout duration else @c false. - */ - bool waitForStop(const std::chrono::milliseconds duration = std::chrono::milliseconds(200)); - - /** - * Waits for the promise @c m_wakePlayPromise to be fulfilled and the future to be notified of call to @c play. - * - * @param timeout The duration to wait for the future to be ready. - * @return @c true if @c play was called within the @c timeout else @c false. - */ - bool waitUntilPlaybackStarted(std::chrono::milliseconds timeout = std::chrono::milliseconds(200)); - - /** - * Waits for the promise @c m_wakeStopPromise to be fulfilled and the future to be notified of call to @c stop. - * - * @param timeout The duration to wait for the future to be ready. - * @return @c true if @c stop was called within the @c timeout else @c false. - */ - bool waitUntilPlaybackFinished(std::chrono::milliseconds timeout = std::chrono::milliseconds(200)); - - /// Condition variable to wake the @ waitForPlay. - std::condition_variable m_wakeTriggerPlay; - - /// Condition variable to wake the @ waitForStop. - std::condition_variable m_wakeTriggerStop; - - /// mutex to protect @c m_play, @c m_stop and @c m_shutdown. - std::mutex m_mutex; - - /// Flag to indicate @c play was called. - bool m_play; - - /// Flag to indicate @c stop was called. - bool m_stop; - - /// Flag to indicate when MockMediaPlayer is shutting down. - bool m_shutdown; - - /// Thread to run @c waitForPlay asynchronously. - std::thread m_playThread; - - /// Thread to run @c waitForStop asynchronously. - std::thread m_stopThread; - - /// Promise to be fulfilled when @c play is called. - std::promise m_wakePlayPromise; - - /// Future to notify when @c play is called. - std::future m_wakePlayFuture; - - /// Promise to be fulfilled when @c stop is called. - std::promise m_wakeStopPromise; - - /// Future to notify when @c stop is called. - std::future m_wakeStopFuture; - - /// The player observer to be notified of the media player state changes. - std::shared_ptr m_playerObserver; + MOCK_METHOD2( + createWriter, + std::unique_ptr(const std::string& attachmentId, sds::WriterPolicy policy)); + MOCK_METHOD2( + createReader, + std::unique_ptr(const std::string& attachmentId, sds::ReaderPolicy policy)); }; -std::shared_ptr> MockMediaPlayer::create() { - auto result = std::make_shared>(); - ON_CALL(*result.get(), play()).WillByDefault(Invoke(result.get(), &MockMediaPlayer::mockPlay)); - ON_CALL(*result.get(), stop()).WillByDefault(Invoke(result.get(), &MockMediaPlayer::mockStop)); - return result; -} - -MockMediaPlayer::MockMediaPlayer(): - m_play{false}, - m_stop{false}, - m_shutdown{false}, - m_wakePlayPromise{}, - m_wakePlayFuture{m_wakePlayPromise.get_future()}, - m_wakeStopPromise{}, - m_wakeStopFuture{m_wakeStopPromise.get_future()}, - m_playerObserver{nullptr} { -} - -MockMediaPlayer::~MockMediaPlayer() { - { - std::lock_guard lock(m_mutex); - m_shutdown = true; - } - m_wakeTriggerPlay.notify_all(); - m_wakeTriggerStop.notify_all(); - - if (m_playThread.joinable()) { - m_playThread.join(); - } - if (m_stopThread.joinable()) { - m_stopThread.join(); - } -} - -void MockMediaPlayer::setObserver( - std::shared_ptr playerObserver) { - m_playerObserver = playerObserver; -} - -MediaPlayerStatus MockMediaPlayer::mockPlay() { - std::unique_lock lock(m_mutex); - m_playThread = std::thread(&MockMediaPlayer::waitForPlay, this, std::chrono::milliseconds(50)); - m_play = true; - m_wakeTriggerPlay.notify_one(); - return MediaPlayerStatus::SUCCESS; -} - -MediaPlayerStatus MockMediaPlayer::mockStop() { - std::unique_lock lock(m_mutex); - m_stopThread = std::thread(&MockMediaPlayer::waitForStop, this, std::chrono::milliseconds(50)); - m_stop = true; - m_wakeTriggerStop.notify_one(); - return MediaPlayerStatus::SUCCESS; -} - -bool MockMediaPlayer::waitForPlay(const std::chrono::milliseconds duration) { - std::unique_lock lock(m_mutex); - if (!m_wakeTriggerPlay.wait_for(lock, duration, [this]() { return (m_play || m_shutdown); })) - { if (m_playerObserver) { - m_playerObserver->onPlaybackError("waitForPlay timed out"); - } - return false; - } - m_wakePlayPromise.set_value(); - if (m_playerObserver) { - m_playerObserver->onPlaybackStarted(); - } - return true; -} - -bool MockMediaPlayer::waitForStop(const std::chrono::milliseconds duration) { - std::unique_lock lock(m_mutex); - if (!m_wakeTriggerPlay.wait_for(lock, duration, [this]() { return (m_stop || m_shutdown); })) - { - if (m_playerObserver) { - m_playerObserver->onPlaybackError("waitForStop timed out"); - } - return false; - } - m_wakeStopPromise.set_value(); - if (m_playerObserver) { - m_playerObserver->onPlaybackFinished(); - } - return true; -} - -bool MockMediaPlayer::waitUntilPlaybackStarted(std::chrono::milliseconds timeout) { - return m_wakePlayFuture.wait_for(timeout) == std::future_status::ready; -} - -bool MockMediaPlayer::waitUntilPlaybackFinished(std::chrono::milliseconds timeout) { - return m_wakeStopFuture.wait_for(timeout) == std::future_status::ready; -} - class SpeechSynthesizerTest : public ::testing::Test { public: SpeechSynthesizerTest(); @@ -461,26 +260,42 @@ class SpeechSynthesizerTest : public ::testing::Test { /// Future to notify when @c sendMessage is called. std::future m_wakeSendMessageFuture; + /** + * Fulfills the @c m_wakeStoppedPromise. This is invoked in response to a @c stop call. + */ + void wakeOnStopped(); + + /// Promise to be fulfilled when @c stop is called. + std::promise m_wakeStoppedPromise; + + /// Future to notify when @c stop is called. + std::future m_wakeStoppedFuture; + /// An exception sender used to send exception encountered events to AVS. std::shared_ptr m_mockExceptionSender; /// Attachment manager used to create a reader. std::shared_ptr m_attachmentManager; + + /// The @c DialogUXStateAggregator to test with. + std::shared_ptr m_dialogUXStateAggregator; }; SpeechSynthesizerTest::SpeechSynthesizerTest() : - m_wakeSetStatePromise{}, - m_wakeSetStateFuture{m_wakeSetStatePromise.get_future()}, - m_wakeAcquireChannelPromise{}, - m_wakeAcquireChannelFuture{m_wakeAcquireChannelPromise.get_future()}, - m_wakeReleaseChannelPromise{}, - m_wakeReleaseChannelFuture{m_wakeReleaseChannelPromise.get_future()}, - m_wakeSetCompletedPromise{}, - m_wakeSetCompletedFuture{m_wakeSetCompletedPromise.get_future()}, - m_wakeSetFailedPromise{}, - m_wakeSetFailedFuture{m_wakeSetFailedPromise.get_future()}, - m_wakeSendMessagePromise{}, - m_wakeSendMessageFuture{m_wakeSendMessagePromise.get_future()} { + m_wakeSetStatePromise{}, + m_wakeSetStateFuture{m_wakeSetStatePromise.get_future()}, + m_wakeAcquireChannelPromise{}, + m_wakeAcquireChannelFuture{m_wakeAcquireChannelPromise.get_future()}, + m_wakeReleaseChannelPromise{}, + m_wakeReleaseChannelFuture{m_wakeReleaseChannelPromise.get_future()}, + m_wakeSetCompletedPromise{}, + m_wakeSetCompletedFuture{m_wakeSetCompletedPromise.get_future()}, + m_wakeSetFailedPromise{}, + m_wakeSetFailedFuture{m_wakeSetFailedPromise.get_future()}, + m_wakeSendMessagePromise{}, + m_wakeSendMessageFuture{m_wakeSendMessagePromise.get_future()}, + m_wakeStoppedPromise{}, + m_wakeStoppedFuture{m_wakeStoppedPromise.get_future()} { } void SpeechSynthesizerTest::SetUp() { @@ -490,19 +305,23 @@ void SpeechSynthesizerTest::SetUp() { m_mockExceptionSender = std::make_shared>(); m_attachmentManager = std::make_shared(AttachmentManager::AttachmentType::IN_PROCESS); m_mockSpeechPlayer = MockMediaPlayer::create(); + m_dialogUXStateAggregator = std::make_shared(); m_speechSynthesizer = SpeechSynthesizer::create( - m_mockSpeechPlayer, - m_mockMessageSender, - m_mockFocusManager, - m_mockContextManager, - m_attachmentManager, - m_mockExceptionSender); + m_mockSpeechPlayer, + m_mockMessageSender, + m_mockFocusManager, + m_mockContextManager, + m_mockExceptionSender, + m_dialogUXStateAggregator); m_mockDirHandlerResult.reset(new MockDirectiveHandlerResult); ASSERT_TRUE(m_speechSynthesizer); + + m_speechSynthesizer->addObserver(m_dialogUXStateAggregator); } void SpeechSynthesizerTest::TearDown() { + m_speechSynthesizer->removeObserver(m_dialogUXStateAggregator); m_speechSynthesizer->shutdown(); } @@ -536,6 +355,10 @@ void SpeechSynthesizerTest::wakeOnSendMessage() { m_wakeSendMessagePromise.set_value(); } +void SpeechSynthesizerTest::wakeOnStopped() { + m_wakeStoppedPromise.set_value(); +} + /** * Test call to handleDirectiveImmediately. * Expected result is that @c acquireChannel is called with the correct channel. On focus changed @c FOREGROUND, audio @@ -543,23 +366,29 @@ void SpeechSynthesizerTest::wakeOnSendMessage() { */ TEST_F(SpeechSynthesizerTest, testCallingHandleImmediately) { auto avsMessageHeader = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); - std::shared_ptr directive = AVSDirective::create( - "", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); + NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); - EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, FOCUS_MANAGER_ACTIVITY_ID)).Times(1). - WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnAcquireChannel)); + EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, NAMESPACE_SPEECH_SYNTHESIZER)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnAcquireChannel)); EXPECT_CALL( - *(m_mockSpeechPlayer.get()), - setSource(A>())) - .Times(AtLeast(1)); - EXPECT_CALL(*(m_mockSpeechPlayer.get()), play()).Times(AtLeast(1)); - EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffsetInMilliseconds()).Times(1).WillOnce(Return(100)); - EXPECT_CALL(*(m_mockContextManager.get()), setState( - NAMESPACE_AND_NAME_SPEECH_STATE, PLAYING_STATE_TEST, StateRefreshPolicy::ALWAYS, 0)).Times(AtLeast(1)). - WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); - EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)).Times(AtLeast(1)).WillRepeatedly( - InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSendMessage)); + *(m_mockSpeechPlayer.get()), + attachmentSetSource(A>(), nullptr)) + .Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), play(_)).Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffset(_)) + .Times(1) + .WillOnce(Return(OFFSET_IN_CHRONO_MILLISECONDS_TEST)); + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, PLAYING_STATE_TEST, StateRefreshPolicy::ALWAYS, 0)) + .Times(AtLeast(1)) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSendMessage)); m_speechSynthesizer->handleDirectiveImmediately(directive); ASSERT_TRUE(std::future_status::ready == m_wakeAcquireChannelFuture.wait_for(WAIT_TIMEOUT)); @@ -577,25 +406,32 @@ TEST_F(SpeechSynthesizerTest, testCallingHandleImmediately) { */ TEST_F(SpeechSynthesizerTest, testCallingHandle) { auto avsMessageHeader = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); - std::shared_ptr directive = AVSDirective::create( - "", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); + NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); - EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, FOCUS_MANAGER_ACTIVITY_ID)).Times(1). - WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnAcquireChannel)); + EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, NAMESPACE_SPEECH_SYNTHESIZER)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnAcquireChannel)); + EXPECT_CALL( + *(m_mockSpeechPlayer.get()), + attachmentSetSource(A>(), nullptr)) + .Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), play(_)).Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffset(_)) + .Times(1) + .WillOnce(Return(OFFSET_IN_CHRONO_MILLISECONDS_TEST)); EXPECT_CALL( - *(m_mockSpeechPlayer.get()), - setSource(A>())) - .Times(AtLeast(1)); - EXPECT_CALL(*(m_mockSpeechPlayer.get()), play()).Times(AtLeast(1)); - EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffsetInMilliseconds()).Times(1).WillOnce(Return(100)); - EXPECT_CALL(*(m_mockContextManager.get()), setState( - NAMESPACE_AND_NAME_SPEECH_STATE, PLAYING_STATE_TEST, StateRefreshPolicy::ALWAYS, 0)).Times(AtLeast(1)). - WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); - EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)).Times(AtLeast(1)).WillRepeatedly( - InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSendMessage)); - EXPECT_CALL(*(m_mockDirHandlerResult.get()), setFailed(_)).Times(1).WillOnce( - InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetFailed)); + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, PLAYING_STATE_TEST, StateRefreshPolicy::ALWAYS, 0)) + .Times(AtLeast(1)) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSendMessage)); + EXPECT_CALL(*(m_mockDirHandlerResult.get()), setFailed(_)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetFailed)); m_speechSynthesizer->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirHandlerResult)); m_speechSynthesizer->CapabilityAgent::handleDirective(MESSAGE_ID_TEST); @@ -613,11 +449,11 @@ TEST_F(SpeechSynthesizerTest, testCallingHandle) { */ TEST_F(SpeechSynthesizerTest, testCallingCancel) { auto avsMessageHeader = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); - std::shared_ptr directive = AVSDirective::create( - "", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); + NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); - EXPECT_CALL(*(m_mockContextManager.get()), setState(_,_,_,_)).Times(0); + EXPECT_CALL(*(m_mockContextManager.get()), setState(_, _, _, _)).Times(0); EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)).Times(0); m_speechSynthesizer->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirHandlerResult)); @@ -633,28 +469,37 @@ TEST_F(SpeechSynthesizerTest, testCallingCancel) { */ TEST_F(SpeechSynthesizerTest, testCallingCancelAfterHandle) { auto avsMessageHeader = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); - std::shared_ptr directive = AVSDirective::create( - "", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); + NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); - EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, FOCUS_MANAGER_ACTIVITY_ID)).Times(1). - WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnAcquireChannel)); + EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, NAMESPACE_SPEECH_SYNTHESIZER)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnAcquireChannel)); + EXPECT_CALL( + *(m_mockSpeechPlayer.get()), + attachmentSetSource(A>(), nullptr)) + .Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), play(_)).Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffset(_)) + .Times(1) + .WillOnce(Return(OFFSET_IN_CHRONO_MILLISECONDS_TEST)); EXPECT_CALL( - *(m_mockSpeechPlayer.get()), - setSource(A>())) - .Times(AtLeast(1)); - EXPECT_CALL(*(m_mockSpeechPlayer.get()), play()).Times(AtLeast(1)); - EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffsetInMilliseconds()).Times(1).WillOnce(Return(100)); - EXPECT_CALL(*(m_mockContextManager.get()), setState( - NAMESPACE_AND_NAME_SPEECH_STATE, PLAYING_STATE_TEST, StateRefreshPolicy::ALWAYS, 0)).Times(AtLeast(1)). - WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); - EXPECT_CALL(*(m_mockContextManager.get()), setState( - NAMESPACE_AND_NAME_SPEECH_STATE, FINISHED_STATE_TEST, StateRefreshPolicy::NEVER, 0)).Times(AtLeast(1)). - WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); - EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)).Times(1).WillOnce( - InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSendMessage)); - EXPECT_CALL(*(m_mockFocusManager.get()), releaseChannel(CHANNEL_NAME,_)).Times(1).WillOnce( - InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnReleaseChannel)); + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, PLAYING_STATE_TEST, StateRefreshPolicy::ALWAYS, 0)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, FINISHED_STATE_TEST, StateRefreshPolicy::NEVER, 0)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSendMessage)); + EXPECT_CALL(*(m_mockFocusManager.get()), releaseChannel(CHANNEL_NAME, _)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnReleaseChannel)); m_speechSynthesizer->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirHandlerResult)); m_speechSynthesizer->CapabilityAgent::handleDirective(MESSAGE_ID_TEST); @@ -666,7 +511,7 @@ TEST_F(SpeechSynthesizerTest, testCallingCancelAfterHandle) { m_wakeSetStateFuture = m_wakeSetStatePromise.get_future(); ASSERT_TRUE(std::future_status::ready == m_wakeSendMessageFuture.wait_for(WAIT_TIMEOUT)); m_speechSynthesizer->CapabilityAgent::cancelDirective(MESSAGE_ID_TEST); - ASSERT_TRUE(m_mockSpeechPlayer->waitUntilPlaybackFinished()); + ASSERT_TRUE(m_mockSpeechPlayer->waitUntilPlaybackStopped()); ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); ASSERT_TRUE(std::future_status::ready == m_wakeReleaseChannelFuture.wait_for(WAIT_TIMEOUT)); } @@ -676,14 +521,14 @@ TEST_F(SpeechSynthesizerTest, testCallingCancelAfterHandle) { * Call @c provideState and expect that setState is called. */ TEST_F(SpeechSynthesizerTest, testCallingProvideStateWhenNotPlaying) { - EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffsetInMilliseconds()).Times(0); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffset(_)).Times(0); EXPECT_CALL( - *(m_mockContextManager.get()), setState( - NAMESPACE_AND_NAME_SPEECH_STATE, IDLE_STATE_TEST, StateRefreshPolicy::NEVER, PROVIDE_STATE_TOKEN_TEST)) - .Times(1).WillOnce( - InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, IDLE_STATE_TEST, StateRefreshPolicy::NEVER, PROVIDE_STATE_TOKEN_TEST)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); - m_speechSynthesizer->provideState(PROVIDE_STATE_TOKEN_TEST); + m_speechSynthesizer->provideState(NAMESPACE_AND_NAME_SPEECH_STATE, PROVIDE_STATE_TOKEN_TEST); ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); } @@ -691,36 +536,48 @@ TEST_F(SpeechSynthesizerTest, testCallingProvideStateWhenNotPlaying) { /** * Testing provideState when playing. * Call @c provideState after the state of the @c SpeechSynthesizer has changed to @c PLAYING. - * Expect @c getOffsetInMilliseconds is called. Expect @c setState is called when state changes and when state is + * Expect @c getOffset is called. Expect @c setState is called when state changes and when state is * requested via @c provideState. */ TEST_F(SpeechSynthesizerTest, testCallingProvideStateWhenPlaying) { auto avsMessageHeader = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); - std::shared_ptr directive = AVSDirective::create( - "", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); + NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); - EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, FOCUS_MANAGER_ACTIVITY_ID)).Times(1). - WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnAcquireChannel)); + EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, NAMESPACE_SPEECH_SYNTHESIZER)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnAcquireChannel)); + EXPECT_CALL( + *(m_mockSpeechPlayer.get()), + attachmentSetSource(A>(), nullptr)) + .Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), play(_)).Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffset(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Return(OFFSET_IN_CHRONO_MILLISECONDS_TEST)); + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, PLAYING_STATE_TEST, StateRefreshPolicy::ALWAYS, 0)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); EXPECT_CALL( - *(m_mockSpeechPlayer.get()), - setSource(A>())) - .Times(AtLeast(1)); - EXPECT_CALL(*(m_mockSpeechPlayer.get()), play()).Times(AtLeast(1)); - EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffsetInMilliseconds()).Times(AtLeast(1)).WillRepeatedly(Return(100)); - EXPECT_CALL(*(m_mockContextManager.get()), setState( - NAMESPACE_AND_NAME_SPEECH_STATE, PLAYING_STATE_TEST, StateRefreshPolicy::ALWAYS, 0)).Times(1). - WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); - EXPECT_CALL(*(m_mockContextManager.get()), setState( + *(m_mockContextManager.get()), + setState( NAMESPACE_AND_NAME_SPEECH_STATE, PLAYING_STATE_TEST, StateRefreshPolicy::ALWAYS, PROVIDE_STATE_TOKEN_TEST)) - .Times(1).WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); - EXPECT_CALL(*(m_mockContextManager.get()), setState( - NAMESPACE_AND_NAME_SPEECH_STATE, FINISHED_STATE_TEST, StateRefreshPolicy::NEVER, 0)).Times(1). - WillOnce(Return(SetStateResult::SUCCESS)); - EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)).Times(AtLeast(1)).WillRepeatedly( - InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSendMessage)); - EXPECT_CALL(*(m_mockFocusManager.get()), releaseChannel(CHANNEL_NAME,_)).Times(1).WillOnce( - InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnReleaseChannel)); + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, FINISHED_STATE_TEST, StateRefreshPolicy::NEVER, 0)) + .Times(1) + .WillOnce(Return(SetStateResult::SUCCESS)); + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSendMessage)); + EXPECT_CALL(*(m_mockFocusManager.get()), releaseChannel(CHANNEL_NAME, _)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnReleaseChannel)); m_speechSynthesizer->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirHandlerResult)); m_speechSynthesizer->CapabilityAgent::handleDirective(MESSAGE_ID_TEST); @@ -731,10 +588,10 @@ TEST_F(SpeechSynthesizerTest, testCallingProvideStateWhenPlaying) { m_wakeSetStatePromise = std::promise(); m_wakeSetStateFuture = m_wakeSetStatePromise.get_future(); ASSERT_TRUE(std::future_status::ready == m_wakeSendMessageFuture.wait_for(WAIT_TIMEOUT)); - m_speechSynthesizer->provideState(PROVIDE_STATE_TOKEN_TEST); + m_speechSynthesizer->provideState(NAMESPACE_AND_NAME_SPEECH_STATE, PROVIDE_STATE_TOKEN_TEST); ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); m_speechSynthesizer->CapabilityAgent::cancelDirective(MESSAGE_ID_TEST); - ASSERT_TRUE(m_mockSpeechPlayer->waitUntilPlaybackFinished()); + ASSERT_TRUE(m_mockSpeechPlayer->waitUntilPlaybackStopped()); ASSERT_TRUE(std::future_status::ready == m_wakeReleaseChannelFuture.wait_for(WAIT_TIMEOUT)); } @@ -744,34 +601,120 @@ TEST_F(SpeechSynthesizerTest, testCallingProvideStateWhenPlaying) { */ TEST_F(SpeechSynthesizerTest, testBargeInWhilePlaying) { auto avsMessageHeader = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); - std::shared_ptr directive = AVSDirective::create( - "", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); + NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); + + auto avsMessageHeader2 = + std::make_shared(NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST_2); + std::shared_ptr directive2 = + AVSDirective::create("", avsMessageHeader2, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST_2); + + EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, NAMESPACE_SPEECH_SYNTHESIZER)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnAcquireChannel)); + EXPECT_CALL( + *(m_mockSpeechPlayer.get()), + attachmentSetSource(A>(), nullptr)) + .Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), play(_)).Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffset(_)) + .Times(1) + .WillOnce(Return(OFFSET_IN_CHRONO_MILLISECONDS_TEST)); + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, PLAYING_STATE_TEST, StateRefreshPolicy::ALWAYS, 0)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, FINISHED_STATE_TEST, StateRefreshPolicy::NEVER, 0)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSendMessage)); + EXPECT_CALL(*(m_mockFocusManager.get()), releaseChannel(CHANNEL_NAME, _)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnReleaseChannel)); - auto avsMessageHeader2 = std::make_shared( - NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST_2); - std::shared_ptr directive2 = AVSDirective::create( - "", avsMessageHeader2, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST_2); + m_speechSynthesizer->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirHandlerResult)); + m_speechSynthesizer->CapabilityAgent::handleDirective(MESSAGE_ID_TEST); + ASSERT_TRUE(std::future_status::ready == m_wakeAcquireChannelFuture.wait_for(WAIT_TIMEOUT)); + m_wakeAcquireChannelPromise = std::promise(); + m_wakeAcquireChannelFuture = m_wakeAcquireChannelPromise.get_future(); + m_speechSynthesizer->onFocusChanged(FocusState::FOREGROUND); + ASSERT_TRUE(m_mockSpeechPlayer->waitUntilPlaybackStarted()); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); + m_wakeSetStatePromise = std::promise(); + m_wakeSetStateFuture = m_wakeSetStatePromise.get_future(); + ASSERT_TRUE(std::future_status::ready == m_wakeSendMessageFuture.wait_for(WAIT_TIMEOUT)); + m_speechSynthesizer->handleDirectiveImmediately(directive2); + m_speechSynthesizer->CapabilityAgent::cancelDirective(MESSAGE_ID_TEST); + ASSERT_TRUE(m_mockSpeechPlayer->waitUntilPlaybackStopped()); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); + ASSERT_TRUE(std::future_status::ready == m_wakeReleaseChannelFuture.wait_for(WAIT_TIMEOUT)); + ASSERT_TRUE(std::future_status::ready == m_wakeAcquireChannelFuture.wait_for(WAIT_TIMEOUT)); +} - EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, FOCUS_MANAGER_ACTIVITY_ID)).Times(AtLeast(1)). - WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnAcquireChannel)); +/** + * Testing SpeechSynthesizer won't be calling stop() in @c MediaPlayer twice. + * Call preHandle with a valid SPEAK directive. Then call handleDirective. Expected result is that @c acquireChannel + * is called once. On Focus Changed to foreground, audio should play. + * Call cancel directive. Expect the stop() to be called once. + * Call onFocusChanged, expect the stop() to not be called again. + * Expect when handleDirectiveImmediately with a valid SPEAK directive is called, @c SpeechSynthesizer + * will react correctly. + */ +TEST_F(SpeechSynthesizerTest, testNotCallStopTwice) { + auto avsMessageHeader = std::make_shared( + NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); + + auto avsMessageHeader2 = + std::make_shared(NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST_2); + std::shared_ptr directive2 = + AVSDirective::create("", avsMessageHeader2, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST_2); + + EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, NAMESPACE_SPEECH_SYNTHESIZER)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnAcquireChannel)); EXPECT_CALL( - *(m_mockSpeechPlayer.get()), - setSource(A>())) - .Times(AtLeast(1)); - EXPECT_CALL(*(m_mockSpeechPlayer.get()), play()).Times(AtLeast(1)); - EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffsetInMilliseconds()).Times(1).WillOnce(Return(100)); - EXPECT_CALL(*(m_mockContextManager.get()), setState( - NAMESPACE_AND_NAME_SPEECH_STATE, PLAYING_STATE_TEST, StateRefreshPolicy::ALWAYS, 0)).Times(AtLeast(1)). - WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); - EXPECT_CALL(*(m_mockContextManager.get()), setState( - NAMESPACE_AND_NAME_SPEECH_STATE, FINISHED_STATE_TEST, StateRefreshPolicy::NEVER, 0)).Times(AtLeast(1)). - WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); - EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)).Times(1).WillOnce( - InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSendMessage)); - EXPECT_CALL(*(m_mockFocusManager.get()), releaseChannel(CHANNEL_NAME,_)).Times(1).WillOnce( - InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnReleaseChannel)); - + *(m_mockSpeechPlayer.get()), + attachmentSetSource(A>(), nullptr)) + .Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), play(_)).Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffset(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Return(OFFSET_IN_CHRONO_MILLISECONDS_TEST)); + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, PLAYING_STATE_TEST, StateRefreshPolicy::ALWAYS, 0)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, FINISHED_STATE_TEST, StateRefreshPolicy::NEVER, 0)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSendMessage)); + EXPECT_CALL(*(m_mockFocusManager.get()), releaseChannel(CHANNEL_NAME, _)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnReleaseChannel)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), stop(_)) + .Times(2) + .WillOnce(Invoke([this](avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId id) { + wakeOnStopped(); + m_speechSynthesizer->onPlaybackStopped(id); + return true; + })) + .WillRepeatedly(Return(true)); + EXPECT_CALL(*(m_mockDirHandlerResult.get()), setCompleted()).Times(AtLeast(0)); + + // send Speak directive and getting focus and wait until playback started m_speechSynthesizer->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirHandlerResult)); m_speechSynthesizer->CapabilityAgent::handleDirective(MESSAGE_ID_TEST); ASSERT_TRUE(std::future_status::ready == m_wakeAcquireChannelFuture.wait_for(WAIT_TIMEOUT)); @@ -783,15 +726,203 @@ TEST_F(SpeechSynthesizerTest, testBargeInWhilePlaying) { m_wakeSetStatePromise = std::promise(); m_wakeSetStateFuture = m_wakeSetStatePromise.get_future(); ASSERT_TRUE(std::future_status::ready == m_wakeSendMessageFuture.wait_for(WAIT_TIMEOUT)); + m_wakeSendMessagePromise = std::promise(); + m_wakeSendMessageFuture = m_wakeSendMessagePromise.get_future(); + + // cancel directive, this should result in calling stop() + m_speechSynthesizer->CapabilityAgent::cancelDirective(MESSAGE_ID_TEST); + ASSERT_TRUE(std::future_status::ready == m_wakeStoppedFuture.wait_for(WAIT_TIMEOUT)); + + // goes to background, this should not result in calling the 2nd stop() + m_speechSynthesizer->onFocusChanged(FocusState::BACKGROUND); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); + m_wakeSetStatePromise = std::promise(); + m_wakeSetStateFuture = m_wakeSetStatePromise.get_future(); + + /* + * onPlaybackStopped, this will result in an error with reason=nullptrDirectiveInfo. But this shouldn't break the + * SpeechSynthesizer + */ + ASSERT_TRUE(std::future_status::ready == m_wakeReleaseChannelFuture.wait_for(WAIT_TIMEOUT)); + m_wakeReleaseChannelPromise = std::promise(); + m_wakeReleaseChannelFuture = m_wakeReleaseChannelPromise.get_future(); + + // send second speak directive and make sure it working m_speechSynthesizer->handleDirectiveImmediately(directive2); + ASSERT_TRUE(std::future_status::ready == m_wakeAcquireChannelFuture.wait_for(WAIT_TIMEOUT)); + m_speechSynthesizer->onFocusChanged(FocusState::FOREGROUND); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); + m_wakeSetStatePromise = std::promise(); + m_wakeSetStateFuture = m_wakeSetStatePromise.get_future(); + ASSERT_TRUE(m_mockSpeechPlayer->waitUntilPlaybackStarted()); +} + +/** + * Testing SpeechSynthesizer will continue to function properly if stop() in @c MediaPlayer returned with an error. + * Call preHandle with a valid SPEAK directive. Then call handleDirective. Expected result is that @c acquireChannel + * is called once. On Focus Changed to foreground, audio should play. + * Call cancel directive. Expect the stop() to be called once, and we force MediaPlayer to return an error. + * Expect when handleDirectiveImmediately with a valid SPEAK directive is called, @c SpeechSynthesizer + * will react correctly. + */ +TEST_F(SpeechSynthesizerTest, testMediaPlayerFailedToStop) { + auto avsMessageHeader = std::make_shared( + NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); + + auto avsMessageHeader2 = + std::make_shared(NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST_2); + std::shared_ptr directive2 = + AVSDirective::create("", avsMessageHeader2, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST_2); + + EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, NAMESPACE_SPEECH_SYNTHESIZER)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnAcquireChannel)); + EXPECT_CALL( + *(m_mockSpeechPlayer.get()), + attachmentSetSource(A>(), nullptr)) + .Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), play(_)).Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffset(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Return(OFFSET_IN_CHRONO_MILLISECONDS_TEST)); + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, PLAYING_STATE_TEST, StateRefreshPolicy::ALWAYS, 0)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, FINISHED_STATE_TEST, StateRefreshPolicy::NEVER, 0)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSendMessage)); + EXPECT_CALL(*(m_mockFocusManager.get()), releaseChannel(CHANNEL_NAME, _)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnReleaseChannel)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), stop(_)) + .Times(2) + .WillOnce(Invoke([this](avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId id) { + wakeOnStopped(); + return false; + })) + .WillRepeatedly(Return(true)); + EXPECT_CALL(*(m_mockDirHandlerResult.get()), setFailed(_)).Times(AtLeast(0)); + + // send Speak directive and getting focus and wait until playback started + m_speechSynthesizer->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirHandlerResult)); + m_speechSynthesizer->CapabilityAgent::handleDirective(MESSAGE_ID_TEST); + ASSERT_TRUE(std::future_status::ready == m_wakeAcquireChannelFuture.wait_for(WAIT_TIMEOUT)); + m_wakeAcquireChannelPromise = std::promise(); + m_wakeAcquireChannelFuture = m_wakeAcquireChannelPromise.get_future(); + m_speechSynthesizer->onFocusChanged(FocusState::FOREGROUND); + ASSERT_TRUE(m_mockSpeechPlayer->waitUntilPlaybackStarted()); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); + m_wakeSetStatePromise = std::promise(); + m_wakeSetStateFuture = m_wakeSetStatePromise.get_future(); + ASSERT_TRUE(std::future_status::ready == m_wakeSendMessageFuture.wait_for(WAIT_TIMEOUT)); + m_wakeSendMessagePromise = std::promise(); + m_wakeSendMessageFuture = m_wakeSendMessagePromise.get_future(); + + // cancel directive, this should result in calling stop() m_speechSynthesizer->CapabilityAgent::cancelDirective(MESSAGE_ID_TEST); - ASSERT_TRUE(m_mockSpeechPlayer->waitUntilPlaybackFinished()); + ASSERT_TRUE(std::future_status::ready == m_wakeStoppedFuture.wait_for(WAIT_TIMEOUT)); + + // goes to background, this should not result in calling the 2nd stop() + ASSERT_TRUE(std::future_status::ready == m_wakeReleaseChannelFuture.wait_for(WAIT_TIMEOUT)); + m_speechSynthesizer->onFocusChanged(FocusState::BACKGROUND); ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); + m_wakeSetStatePromise = std::promise(); + m_wakeSetStateFuture = m_wakeSetStatePromise.get_future(); + + /* + * onPlaybackStopped, this will result in an error with reason=nullptrDirectiveInfo. But this shouldn't break the + * SpeechSynthesizer + */ ASSERT_TRUE(std::future_status::ready == m_wakeReleaseChannelFuture.wait_for(WAIT_TIMEOUT)); + m_wakeReleaseChannelPromise = std::promise(); + m_wakeReleaseChannelFuture = m_wakeReleaseChannelPromise.get_future(); + + // send second speak directive and make sure it working + m_speechSynthesizer->handleDirectiveImmediately(directive2); ASSERT_TRUE(std::future_status::ready == m_wakeAcquireChannelFuture.wait_for(WAIT_TIMEOUT)); + m_speechSynthesizer->onFocusChanged(FocusState::FOREGROUND); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); + m_wakeSetStatePromise = std::promise(); + m_wakeSetStateFuture = m_wakeSetStatePromise.get_future(); + ASSERT_TRUE(m_mockSpeechPlayer->waitUntilPlaybackStarted()); +} + +/** + * Testing SpeechSynthesizer will call stop() if the SpeechSynthesizer experienced a state change timeout to PLAYING + * state. + */ +TEST_F(SpeechSynthesizerTest, testSetStateTimeout) { + auto avsMessageHeader = std::make_shared( + NAMESPACE_SPEECH_SYNTHESIZER, NAME_SPEAK, MESSAGE_ID_TEST, DIALOG_REQUEST_ID_TEST); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PAYLOAD_TEST, m_attachmentManager, CONTEXT_ID_TEST); + + EXPECT_CALL(*(m_mockFocusManager.get()), acquireChannel(CHANNEL_NAME, _, NAMESPACE_SPEECH_SYNTHESIZER)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnAcquireChannel)); + EXPECT_CALL( + *(m_mockSpeechPlayer.get()), + attachmentSetSource(A>(), nullptr)) + .Times(AtLeast(1)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), play(_)).Times(1).WillOnce(Return(true)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), getOffset(_)) + .Times(AtLeast(1)) + .WillRepeatedly(Return(OFFSET_IN_CHRONO_MILLISECONDS_TEST)); + EXPECT_CALL(*(m_mockExceptionSender.get()), sendExceptionEncountered(_, _, _)).Times(1); + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, PLAYING_STATE_TEST, StateRefreshPolicy::ALWAYS, 0)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); + EXPECT_CALL( + *(m_mockContextManager.get()), + setState(NAMESPACE_AND_NAME_SPEECH_STATE, FINISHED_STATE_TEST, StateRefreshPolicy::NEVER, 0)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetState)); + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)).Times(0); + EXPECT_CALL(*(m_mockFocusManager.get()), releaseChannel(CHANNEL_NAME, _)) + .Times(AtLeast(1)) + .WillRepeatedly(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnReleaseChannel)); + EXPECT_CALL(*(m_mockSpeechPlayer.get()), stop(_)).Times(1).WillOnce(Return(true)); + EXPECT_CALL(*(m_mockDirHandlerResult.get()), setFailed(_)) + .Times(1) + .WillOnce(InvokeWithoutArgs(this, &SpeechSynthesizerTest::wakeOnSetFailed)); + + // Send Speak directive and getting focus and wait until state change timeout. + m_speechSynthesizer->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirHandlerResult)); + m_speechSynthesizer->CapabilityAgent::handleDirective(MESSAGE_ID_TEST); + ASSERT_TRUE(std::future_status::ready == m_wakeAcquireChannelFuture.wait_for(WAIT_TIMEOUT)); + m_wakeAcquireChannelPromise = std::promise(); + m_wakeAcquireChannelFuture = m_wakeAcquireChannelPromise.get_future(); + m_speechSynthesizer->onFocusChanged(FocusState::FOREGROUND); + ASSERT_TRUE(std::future_status::ready == m_wakeSetFailedFuture.wait_for(STATE_CHANGE_TIMEOUT)); + + // Upon getting onPlaybackedStarted, expect state to be updated, but SpeechStarted event will not be sent. + m_speechSynthesizer->onPlaybackStarted(m_mockSpeechPlayer->getCurrentSourceId()); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); + m_wakeSetStatePromise = std::promise(); + m_wakeSetStateFuture = m_wakeSetStatePromise.get_future(); + + // Upon getting onPlaybackStopped, expect state to be updated, but SpeechFinished event will not be sent. + m_speechSynthesizer->onPlaybackStopped(m_mockSpeechPlayer->getCurrentSourceId()); + ASSERT_TRUE(std::future_status::ready == m_wakeSetStateFuture.wait_for(WAIT_TIMEOUT)); + m_wakeSetStatePromise = std::promise(); + m_wakeSetStateFuture = m_wakeSetStatePromise.get_future(); + + ASSERT_TRUE(std::future_status::ready == m_wakeReleaseChannelFuture.wait_for(WAIT_TIMEOUT)); + m_speechSynthesizer->onFocusChanged(FocusState::BACKGROUND); } -} // namespace test -} // namespace speechSynthesizer -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace test +} // namespace speechSynthesizer +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/System/CMakeLists.txt b/CapabilityAgents/System/CMakeLists.txt index 7162d50894..9fefc158a4 100644 --- a/CapabilityAgents/System/CMakeLists.txt +++ b/CapabilityAgents/System/CMakeLists.txt @@ -2,4 +2,4 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR) project(AVSSystem LANGUAGES CXX) add_subdirectory("src") -add_subdirectory("test") +acsdk_add_test_subdirectory_if_allowed() diff --git a/CapabilityAgents/System/include/System/EndpointHandler.h b/CapabilityAgents/System/include/System/EndpointHandler.h index b7708fff77..bc81931b04 100644 --- a/CapabilityAgents/System/include/System/EndpointHandler.h +++ b/CapabilityAgents/System/include/System/EndpointHandler.h @@ -1,7 +1,5 @@ /* - * EndpointHandler.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXACLIENTSDK_CAPABILITY_AGENTS_SYSTEM_INCLUDE_SYSTEM_ENDPOINT_HANDLER_H_ -#define ALEXACLIENTSDK_CAPABILITY_AGENTS_SYSTEM_INCLUDE_SYSTEM_ENDPOINT_HANDLER_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SYSTEM_INCLUDE_SYSTEM_ENDPOINTHANDLER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SYSTEM_INCLUDE_SYSTEM_ENDPOINTHANDLER_H_ #include @@ -40,8 +38,8 @@ class EndpointHandler : public avsCommon::avs::CapabilityAgent { * @return @c nullptr if the inputs are not defined, else a new instance of @c EndpointHandler. */ static std::shared_ptr create( - std::shared_ptr avsEndpointAssigner, - std::shared_ptr exceptionEncounteredSender); + std::shared_ptr avsEndpointAssigner, + std::shared_ptr exceptionEncounteredSender); /// @name DirectiveHandlerInterface and CapabilityAgent Functions /// @{ @@ -51,7 +49,7 @@ class EndpointHandler : public avsCommon::avs::CapabilityAgent { void handleDirective(std::shared_ptr info) override; void cancelDirective(std::shared_ptr info) override; /// @} - + private: /** * Constructor. @@ -60,8 +58,8 @@ class EndpointHandler : public avsCommon::avs::CapabilityAgent { * @param exceptionEncounteredSender The interface that sends exceptions. */ EndpointHandler( - std::shared_ptr avsEndpointAssigner, - std::shared_ptr exceptionEncounteredSender); + std::shared_ptr avsEndpointAssigner, + std::shared_ptr exceptionEncounteredSender); /** * Remove the directive (if possible) while invoking callbacks to @c DirectiveHandlerResultInterface. @@ -71,17 +69,16 @@ class EndpointHandler : public avsCommon::avs::CapabilityAgent { * @param report The report that we will pass to @c setFailed in case @c isFailure is @c true. */ void removeDirectiveGracefully( - std::shared_ptr info, - bool isFailure = false, - const std::string &report = ""); + std::shared_ptr info, + bool isFailure = false, + const std::string& report = ""); /// The @c AVSEndpointAssignerInterface used to signal endpoint change. std::shared_ptr m_avsEndpointAssigner; }; +} // namespace system +} // namespace capabilityAgents +} // namespace alexaClientSDK -} // namespace system -} // namespace capabilityAgents -} // namespace alexaClientSDK - -#endif // ALEXACLIENTSDK_CAPABILITY_AGENTS_SYSTEM_INCLUDE_SYSTEM_ENDPOINT_HANDLER_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SYSTEM_INCLUDE_SYSTEM_ENDPOINTHANDLER_H_ diff --git a/CapabilityAgents/System/include/System/NotifyingMessageRequest.h b/CapabilityAgents/System/include/System/NotifyingMessageRequest.h deleted file mode 100644 index f64068762d..0000000000 --- a/CapabilityAgents/System/include/System/NotifyingMessageRequest.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * NotifyingMessageRequest.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0/ - * - * or in the "license" file accompanying this file. This file 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. - */ - -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_SYSTEM_INCLUDE_SYSTEM_NOTIFYING_MESSAGE_REQUEST_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_SYSTEM_INCLUDE_SYSTEM_NOTIFYING_MESSAGE_REQUEST_H_ - -#include - -#include "StateSynchronizer.h" - -namespace alexaClientSDK { -namespace capabilityAgents { -namespace system { - -/** - * This class implements @c MessageRequests to alert observers upon completion of the message. - */ -class NotifyingMessageRequest : public avsCommon::avs::MessageRequest { -public: - /** - * @copyDoc avsCommon::avs::MessageRequest() - * - * Construct a @c MessageRequest while binding it to a @c StateSynchronizer. - * - * @param callback The function to be called when @c onSendCompleted is invoked. - */ - NotifyingMessageRequest(const std::string& jsonContent, std::shared_ptr stateSynchronizer); - - /// @name MessageRequest functions. - /// @{ - void onSendCompleted(avsCommon::avs::MessageRequest::Status status) override; - /// @} - -private: - /// The @c StateSynchronizer to be notified when @c onSendCompleted is called. - std::shared_ptr m_stateSynchronizer; -}; - -} // namespace system -} // namespace capabilityAgents -} // namespace alexaClientSDK - -#endif // ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_SYSTEM_INCLUDE_SYSTEM_NOTIFYING_MESSAGE_REQUEST_H_ diff --git a/CapabilityAgents/System/include/System/SoftwareInfoSendRequest.h b/CapabilityAgents/System/include/System/SoftwareInfoSendRequest.h new file mode 100644 index 0000000000..aaa2619e0a --- /dev/null +++ b/CapabilityAgents/System/include/System/SoftwareInfoSendRequest.h @@ -0,0 +1,137 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SYSTEM_INCLUDE_SYSTEM_SOFTWAREINFOSENDREQUEST_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SYSTEM_INCLUDE_SYSTEM_SOFTWAREINFOSENDREQUEST_H_ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "System/SoftwareInfoSender.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace system { + +/** + * Object to send a @c System.SoftwareInfo event to @c AVS. + * + * @note If the event fails with SERVER_INTERNAL_ERROR_V2, sending the event is retried until + * it succeeds or the request is cancelled. + */ +class SoftwareInfoSendRequest + : public avsCommon::sdkInterfaces::MessageRequestObserverInterface + , public avsCommon::utils::RequiresShutdown + , public std::enable_shared_from_this { +public: + /** + * Constructor. + * + * @param firmwareVersion The firmware version to send to AVS. + * @param messageSender The object to use to send messages to AVS + * @param observer An object to receive notification that the send succeeded. + * @return The newly created instance of InfoSendRequest, or nullptr if the operation failed. + */ + static std::shared_ptr create( + avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion, + std::shared_ptr messageSender, + std::shared_ptr observer); + + /** + * Send the SoftwareInfo event to AVS. + */ + void send(); + + /// @name MessageRequestObserverInterface Functions + /// @{ + void onSendCompleted(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status status) override; + void onExceptionReceived(const std::string& message) override; + /// @} + + /// @name RequiresShutdown Functions + /// @{ + void doShutdown() override; + /// @} + +private: + /** + * Construct a new @c SoftwareInfoSendRequest instance. + * + * @param firmwareVersion The firmware version to send to AVS. + * @param messageSender The object to use to send messages to AVS + * @param observer An object to receive notification that the send succeeded. + * @return The newly created instance of InfoSendRequest, or nullptr if the operation failed. + */ + SoftwareInfoSendRequest( + avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion, + std::shared_ptr messageSender, + std::shared_ptr observer); + + /** + * Render the JSON for a System.SoftwareInfo event. + * + * @param[out] The string in which to return the rendered event JSON. + * @param firmwareVersion The firmware version to include in the event. + * @return Whether or not the operation was successful. + */ + static bool buildJsonForSoftwareInfo( + std::string* jsonContent, + avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion); + + /// The firmware version to send with the request. + const avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion m_firmwareVersion; + + /// Object to send messages to AVS. + std::shared_ptr m_messageSender; + + /** + * A promise to fulfill with the send status when the send operation completes. + * @note Access to this member is serialized with @c m_mutex. + */ + std::shared_ptr m_observer; + + /// Mutex to serialize access to data members. + std::mutex m_mutex; + + /** + * The number of times we have retried sending the event. + * @note Access to this member is serialized with @c m_mutex. + */ + int m_retryCounter; + + /** + * Timers used to schedule retries when a send attempt results in the SERVER_INTERNAL_ERROR_V2 status. + * @note A @c Timer's task may not be used to @c re-start() its triggering @ Timer. To get around + * this limitation, two timers are used here such that a failed retry triggered by one of the @c Timers + * will use the other @c Timer to specify the delay before the next retry. + * TODO: ACSDK-841 Enhance the Timer class to allow re-start() of a timer from the Timer's task + * @note Access to this member is serialized with @c m_mutex. + */ + avsCommon::utils::timing::Timer m_retryTimers[2]; +}; + +} // namespace system +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SYSTEM_INCLUDE_SYSTEM_SOFTWAREINFOSENDREQUEST_H_ diff --git a/CapabilityAgents/System/include/System/SoftwareInfoSender.h b/CapabilityAgents/System/include/System/SoftwareInfoSender.h new file mode 100644 index 0000000000..b7ad849555 --- /dev/null +++ b/CapabilityAgents/System/include/System/SoftwareInfoSender.h @@ -0,0 +1,171 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SYSTEM_INCLUDE_SYSTEM_SOFTWAREINFOSENDER_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SYSTEM_INCLUDE_SYSTEM_SOFTWAREINFOSENDER_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace system { + +class SoftwareInfoSendRequest; + +/** + * @c SoftwareInfoSender is a @c CapabilityAgent that handles the @c System.ReportSoftwareInfo directive and + * the sending of @c System.SoftwareInfo events to AVS. + * + * @see https://developer.amazon.com/docs/alexa-voice-service/system.html#reportsoftwareinfo-directive + * @see https://developer.amazon.com/docs/alexa-voice-service/system.html#softwareinfo-event + */ +class SoftwareInfoSender + : public avsCommon::avs::CapabilityAgent + , public avsCommon::utils::RequiresShutdown + , public std::enable_shared_from_this + , public avsCommon::sdkInterfaces::ConnectionStatusObserverInterface + , public avsCommon::sdkInterfaces::SoftwareInfoSenderObserverInterface { +public: + /** + * Creates a new @c SoftwareInfoSender instance. + * + * @param firmwareVersion The firmware version to include in SoftwareInfo events. + * @param sendSoftwareInfoUponConnect Whether the SoftwareInfo event should be sent upon connecting. + * @param observer An object to receive notifications from this SoftwareInfoSender. + * @param connection Our connection to AVS. + * @param messageSender Object for sending messages to AVS. + * @param exceptionEncounteredSender The object to use for sending ExceptionEncountered messages. + * @return An instance of SoftwareInfoSender if successful else nullptr. + */ + static std::shared_ptr create( + avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion, + bool sendSoftwareInfoUponConnect, + std::shared_ptr observer, + std::shared_ptr connection, + std::shared_ptr messageSender, + std::shared_ptr exceptionEncounteredSender); + + /** + * Specify the firmwareVersion to send to @c AVS via @c SoftwareInfo events. + * + * If the firmware version changes while the client is already connected to @c AVS, it should call + * @c setFirmwareVersion() immediately with the new version. If the version is new it will trigger + * sending a @c SoftwareInfo event to AVS. + * + * @param firmwareVersion The firmware version to report to AVS. + * @return Whether the new firmware version was accepted. + */ + bool setFirmwareVersion(avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion); + + /// @name DirectiveHandlerInterface and CapabilityAgent Functions + /// @{ + avsCommon::avs::DirectiveHandlerConfiguration getConfiguration() const override; + void handleDirectiveImmediately(std::shared_ptr directive) override; + void preHandleDirective(std::shared_ptr info) override; + void handleDirective(std::shared_ptr info) override; + void cancelDirective(std::shared_ptr info) override; + /// @} + + /// @name RequiresShutdown Functions + /// @{ + void doShutdown() override; + /// @} + + /// @name ConnectionStatusObserverInterface Functions + /// @{ + void onConnectionStatusChanged( + avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, + avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override; + /// @} + + /// @name SoftwareInfoSenderObserverInterface Functions + /// @{ + void onFirmwareVersionAccepted(avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion) override; + /// @} + +private: + /** + * Constructor. + * + * @param firmwareVersion The firmware version to include in SoftwareInfo events. + * @param sendSoftwareInfoUponConnect Whether the SoftwareInfo event should be sent upon connecting. + * @param observer An object to receive notifications from this SoftwareInfoSender. + * @param connection Our connection to AVS. + * @param messageSender Object for sending messages to AVS. + * @param exceptionEncounteredSender The object to use for sending ExceptionEncountered messages. + */ + SoftwareInfoSender( + avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion, + bool sendSoftwareInfoUponConnect, + std::shared_ptr observer, + std::shared_ptr connection, + std::shared_ptr messageSender, + std::shared_ptr exceptionEncounteredSender); + + /** + * Remove a directive from the map of message IDs to DirectiveInfo instances. + * + * @param info The @c DirectiveInfo containing the @c AVSDirective whose message ID is to be removed. + */ + void removeDirective(std::shared_ptr info); + + /// The firmware Version to send by SoftwareInfo event. + avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion m_firmwareVersion; + + /// Whether to send the SoftwareInfo event upon @c CONNECTED. Access to this member is serialized by @c m_mutex. + bool m_sendSoftwareInfoUponConnect; + + /// Object to receive notifications from this SoftwareInfoSender. + std::shared_ptr m_observer; + + /// Our connection to AVS. + std::shared_ptr m_connection; + + /// Object for sending messages to AVS. + std::shared_ptr m_messageSender; + + /// Object to send ExceptionEncountered to AVS. + std::shared_ptr m_exceptionEncounteredSender; + + /// Mutex for serializing access to data members. + std::mutex m_mutex; + + /// The last reported connection status. Access to this member is serialized by @c m_mutex. + avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status m_connectionStatus; + + /// @c SoftwareInfoSendRequest created in response to reaching the @c CONNECTED state or in + /// response to a call to @c setFirmwareVersion(). Access to this member is serialized by @c m_mutex. + std::shared_ptr m_clientInitiatedSendRequest; + + /// @c SoftwareInfoSendRequest created in response to receiving a System.ReportSoftwareInfo directive. Access to + /// this member is serialized by @c m_mutex. + std::shared_ptr m_handleDirectiveSendRequest; +}; + +} // namespace system +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SYSTEM_INCLUDE_SYSTEM_SOFTWAREINFOSENDER_H_ diff --git a/CapabilityAgents/System/include/System/StateSynchronizer.h b/CapabilityAgents/System/include/System/StateSynchronizer.h deleted file mode 100644 index 4321a5bf28..0000000000 --- a/CapabilityAgents/System/include/System/StateSynchronizer.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * StateSynchronizer.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0/ - * - * or in the "license" file accompanying this file. This file 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. - */ - -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_SYSTEM_INCLUDE_SYSTEM_STATE_SYNCHRONIZER_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_SYSTEM_INCLUDE_SYSTEM_STATE_SYNCHRONIZER_H_ - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -namespace alexaClientSDK { -namespace capabilityAgents { -namespace system { - -class StateSynchronizer : - public avsCommon::sdkInterfaces::ConnectionStatusObserverInterface, - public avsCommon::sdkInterfaces::ContextRequesterInterface, - public std::enable_shared_from_this { -public: - /// Alias for @c StateSynchronizerObserverInterface for brevity. - using ObserverInterface = avsCommon::sdkInterfaces::StateSynchronizerObserverInterface; - - /** - * Create an instance of StateSynchronizer. - * - * @param contextManager The @c ContextManagerInterface used to generate system context for events. - * @param messageSender The @c MessageSenderInterface that sends events to AVS. - * @return @c nullptr if the inputs are not defined, else a new instance of @c StateSynchronizer. - */ - static std::shared_ptr create( - std::shared_ptr contextManager, - std::shared_ptr messageSender); - - /// @name ConnectionStatusObserverInterface Functions - /// @{ - void onConnectionStatusChanged( - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override; - /// @} - - /// @name ContextRequesterInterface Functions - /// @{ - void onContextAvailable(const std::string& jsonContext) override; - void onContextFailure(const avsCommon::sdkInterfaces::ContextRequestError error) override; - /// @} - - /** - * Add a @c StateSynchronizerObserverInterface to be notified. - * - * @param observer The @c StateSynchronizerObserverInterface to be added - * @note The added observer (if it's not added before) will immediately get @c onStateChanged callback with the - * current state of @c StateSynchronizer. - */ - void addObserver(std::shared_ptr observer); - - /** - * Remove a @c StateSynchronizerObserverInterface from the list of notifiers. - * - * @param observer The @c StateSynchronizerObserverInterface to be removed. - */ - void removeObserver(std::shared_ptr observer); - - /** - * Manage completion of event being sent. - * - * @param messageStatus The status of submitted @c MessageRequest. - */ - void messageSent(avsCommon::avs::MessageRequest::Status messageStatus); - - /** - * Shutdown sequence for the instance. - * - * Performing all cleanup operations to prepare the object for destruction. This function must be called prior to - * destruction to properly clean up the instance. - */ - void shutdown(); -private: - /** - * Constructor. - * - * @param contextManager The AVS Context manager used to generate system context for events. - * @param messageSender The message sender interface that sends events to AVS. - */ - StateSynchronizer( - std::shared_ptr contextManager, - std::shared_ptr messageSender); - - /** - * Notify the observers. This function locks both @c m_stateMutex and @ m_observerMutex so these locks should not be - * held when calling this function. - */ - void notifyObservers(); - - /// The @c MessageSenderInterface used to send event messages. - std::shared_ptr m_messageSender; - - /// The @c ContextManager used to generate system context for events. - std::shared_ptr m_contextManager; - - /// The set of @c StateSynchronizerObserverInterface objects that will be notified upon synchronization. - std::unordered_set> m_observers; - - /// The mutex to synchronize access to @c m_observers. - std::mutex m_observerMutex; - - /// The flag that describes if the connection is alive. - std::atomic_bool m_isConnected; - - /// The current state of @c StateSynchronizer. - ObserverInterface::State m_state; - - /// The mutex to synchronize access to @c m_state. - std::mutex m_stateMutex; -}; - - -} // namespace system -} // namespace capabilityAgents -} // namespace alexaClientSDK - -#endif // ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_SYSTEM_INCLUDE_SYSTEM_STATE_SYNCHRONIZER_H_ diff --git a/CapabilityAgents/System/include/System/UserInactivityMonitor.h b/CapabilityAgents/System/include/System/UserInactivityMonitor.h index 709012ca6f..6338c4137d 100644 --- a/CapabilityAgents/System/include/System/UserInactivityMonitor.h +++ b/CapabilityAgents/System/include/System/UserInactivityMonitor.h @@ -1,7 +1,5 @@ /* - * UserInactivityMonitor.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_SYSTEM_INCLUDE_SYSTEM_USER_INACTIVITY_MONITOR_H_ -#define ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_SYSTEM_INCLUDE_SYSTEM_USER_INACTIVITY_MONITOR_H_ +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SYSTEM_INCLUDE_SYSTEM_USERINACTIVITYMONITOR_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SYSTEM_INCLUDE_SYSTEM_USERINACTIVITYMONITOR_H_ #include #include @@ -34,9 +32,9 @@ namespace capabilityAgents { namespace system { /// This class implementes a @c CapabilityAgent that handles the @c SetEndpoint directive. -class UserInactivityMonitor : - public avsCommon::sdkInterfaces::UserActivityNotifierInterface, - public avsCommon::avs::CapabilityAgent { +class UserInactivityMonitor + : public avsCommon::sdkInterfaces::UserActivityNotifierInterface + , public avsCommon::avs::CapabilityAgent { public: /** * Create an instance of @c UserInactivityMonitor. @@ -47,9 +45,9 @@ class UserInactivityMonitor : * @return @c nullptr if the inputs are not defined, else a new instance of @c UserInactivityMonitor. */ static std::shared_ptr create( - std::shared_ptr messageSender, - std::shared_ptr exceptionEncounteredSender, - const std::chrono::milliseconds& sendPeriod = std::chrono::hours(1)); + std::shared_ptr messageSender, + std::shared_ptr exceptionEncounteredSender, + const std::chrono::milliseconds& sendPeriod = std::chrono::hours(1)); /// @name DirectiveHandlerInterface and CapabilityAgent Functions /// @{ @@ -59,7 +57,7 @@ class UserInactivityMonitor : void handleDirective(std::shared_ptr info) override; void cancelDirective(std::shared_ptr info) override; /// @} - + /// @name UserActivityNotifierInterface functions /// @{ void onUserActive() override; @@ -73,9 +71,9 @@ class UserInactivityMonitor : * @param sendPeriod The period of send events in seconds. */ UserInactivityMonitor( - std::shared_ptr messageSender, - std::shared_ptr exceptionEncounteredSender, - const std::chrono::milliseconds& sendPeriod); + std::shared_ptr messageSender, + std::shared_ptr exceptionEncounteredSender, + const std::chrono::milliseconds& sendPeriod); /** * @@ -86,16 +84,16 @@ class UserInactivityMonitor : * @param report The report that we will pass to @c setFailed in case @c isFailure is @c true. */ void removeDirectiveGracefully( - std::shared_ptr info, - bool isFailure = false, - const std::string &report = ""); + std::shared_ptr info, + bool isFailure = false, + const std::string& report = ""); /// Send inactivity report by comparing to the last time active. We will register this function with the timer. void sendInactivityReport(); /// The @c MessageSender interface to send inactivity event. std::shared_ptr m_messageSender; - + /** * Time point to keep user inactivity. Access synchronized by @c m_timeMutex, and blocks tracked by @c * m_recentUpdateBlocked. @@ -110,12 +108,10 @@ class UserInactivityMonitor : /// Timer for sending events every hour. avsCommon::utils::timing::Timer m_eventTimer; - }; +} // namespace system +} // namespace capabilityAgents +} // namespace alexaClientSDK -} // namespace system -} // namespace capabilityAgents -} // namespace alexaClientSDK - -#endif // ALEXA_CLIENT_SDK_CAPABILITY_AGENTS_SYSTEM_INCLUDE_SYSTEM_USER_INACTIVITY_MONITOR_H_ +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_SYSTEM_INCLUDE_SYSTEM_USERINACTIVITYMONITOR_H_ diff --git a/CapabilityAgents/System/src/CMakeLists.txt b/CapabilityAgents/System/src/CMakeLists.txt index eda77c6416..ead2fa88ac 100644 --- a/CapabilityAgents/System/src/CMakeLists.txt +++ b/CapabilityAgents/System/src/CMakeLists.txt @@ -2,14 +2,14 @@ add_definitions("-DACSDK_LOG_MODULE=system") add_library(AVSSystem SHARED "${CMAKE_CURRENT_LIST_DIR}/EndpointHandler.cpp" - "${CMAKE_CURRENT_LIST_DIR}/StateSynchronizer.cpp" - "${CMAKE_CURRENT_LIST_DIR}/NotifyingMessageRequest.cpp" + "${CMAKE_CURRENT_LIST_DIR}/SoftwareInfoSender.cpp" + "${CMAKE_CURRENT_LIST_DIR}/SoftwareInfoSendRequest.cpp" "${CMAKE_CURRENT_LIST_DIR}/UserInactivityMonitor.cpp") target_include_directories(AVSSystem PUBLIC "${AVSSystem_SOURCE_DIR}/include") -target_link_libraries(AVSSystem AVSCommon) +target_link_libraries(AVSSystem AVSCommon ACL) # install target -asdk_install() \ No newline at end of file +asdk_install() diff --git a/CapabilityAgents/System/src/EndpointHandler.cpp b/CapabilityAgents/System/src/EndpointHandler.cpp index 28dd12c49a..99a6eb72f5 100644 --- a/CapabilityAgents/System/src/EndpointHandler.cpp +++ b/CapabilityAgents/System/src/EndpointHandler.cpp @@ -1,7 +1,5 @@ /* - * EndpointHandler.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -52,10 +50,10 @@ static const std::string ENDPOINTING_NAME = "SetEndpoint"; static const std::string ENDPOINT_PAYLOAD_KEY = "endpoint"; void EndpointHandler::removeDirectiveGracefully( - std::shared_ptr info, - bool isFailure, - const std::string &report) { - if(info) { + std::shared_ptr info, + bool isFailure, + const std::string& report) { + if (info) { if (info->result) { if (isFailure) { info->result->setFailed(report); @@ -70,13 +68,13 @@ void EndpointHandler::removeDirectiveGracefully( } std::shared_ptr EndpointHandler::create( - std::shared_ptr avsEndpointAssigner, - std::shared_ptr exceptionEncounteredSender) { - if(!avsEndpointAssigner) { + std::shared_ptr avsEndpointAssigner, + std::shared_ptr exceptionEncounteredSender) { + if (!avsEndpointAssigner) { ACSDK_ERROR(LX("createFailed").d("reason", "nullAvsEndpointInterface")); return nullptr; } - if(!exceptionEncounteredSender) { + if (!exceptionEncounteredSender) { ACSDK_ERROR(LX("createFailed").d("reason", "nullExceptionEncounteredSender")); return nullptr; } @@ -84,16 +82,15 @@ std::shared_ptr EndpointHandler::create( } EndpointHandler::EndpointHandler( - std::shared_ptr avsEndpointAssigner, - std::shared_ptr exceptionEncounteredSender) : + std::shared_ptr avsEndpointAssigner, + std::shared_ptr exceptionEncounteredSender) : CapabilityAgent(ENDPOINTING_NAMESPACE, exceptionEncounteredSender), m_avsEndpointAssigner{avsEndpointAssigner} { } avsCommon::avs::DirectiveHandlerConfiguration EndpointHandler::getConfiguration() const { - return avsCommon::avs::DirectiveHandlerConfiguration{{ - NamespaceAndName{ENDPOINTING_NAMESPACE, ENDPOINTING_NAME}, - avsCommon::avs::BlockingPolicy::NON_BLOCKING}}; + return avsCommon::avs::DirectiveHandlerConfiguration{ + {NamespaceAndName{ENDPOINTING_NAMESPACE, ENDPOINTING_NAME}, avsCommon::avs::BlockingPolicy::NON_BLOCKING}}; } void EndpointHandler::preHandleDirective(std::shared_ptr info) { @@ -109,7 +106,7 @@ void EndpointHandler::handleDirective(std::shared_ptrdirective->getPayload(), ENDPOINT_PAYLOAD_KEY, &newEndpoint)) { + if (!jsonUtils::retrieveValue(info->directive->getPayload(), ENDPOINT_PAYLOAD_KEY, &newEndpoint)) { ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "payloadMissingEndpointKey")); removeDirectiveGracefully(info, true, "payloadMissingEndpointKey"); } else { @@ -127,6 +124,6 @@ void EndpointHandler::cancelDirective(std::shared_ptrdirective->getMessageId()); } -} // namespace system -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace system +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/System/src/NotifyingMessageRequest.cpp b/CapabilityAgents/System/src/NotifyingMessageRequest.cpp deleted file mode 100644 index bcdd4bfeb7..0000000000 --- a/CapabilityAgents/System/src/NotifyingMessageRequest.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "System/NotifyingMessageRequest.h" - -namespace alexaClientSDK { -namespace capabilityAgents { -namespace system { - -using namespace avsCommon::avs; - -NotifyingMessageRequest::NotifyingMessageRequest( - const std::string& jsonContent, - std::shared_ptr stateSynchronizer) : - MessageRequest(jsonContent), - m_stateSynchronizer{stateSynchronizer} -{ -} - -void NotifyingMessageRequest::onSendCompleted(MessageRequest::Status status) { - m_stateSynchronizer->messageSent(status); -} - -} // namespace system -} // namespace capabilityAgents -} // namespace alexaClientSDK diff --git a/CapabilityAgents/System/src/SoftwareInfoSendRequest.cpp b/CapabilityAgents/System/src/SoftwareInfoSendRequest.cpp new file mode 100644 index 0000000000..0f1152a54e --- /dev/null +++ b/CapabilityAgents/System/src/SoftwareInfoSendRequest.cpp @@ -0,0 +1,189 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "System/SoftwareInfoSender.h" +#include "System/SoftwareInfoSendRequest.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace system { + +using namespace avsCommon::avs; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::softwareInfo; +using namespace avsCommon::utils::json; +using namespace rapidjson; + +/// String to identify log entries originating from this file. +static const std::string TAG{"SoftwareInfoSendRequest"}; + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/// This string holds the "System" namespace. +static const std::string NAMESPACE_SYSTEM = "System"; + +/// This string holds the name of the "SoftwareInfo" event. +static const std::string NAME_SOFTWARE_INFO = "SoftwareInfo"; + +/// JSON value for the firmwareVersion field of the SoftwareInfo event. +static const char FIRMWARE_VERSION_STRING[] = "firmwareVersion"; + +/// Approximate amount of time to wait between retries. +static std::vector RETRY_TABLE = { + 1000, // Retry 1: 1.00s + 5000, // Retry 2: 5.00s + 25000, // Retry 3: 25.00s + 1250000, // Retry 4: 125.00s +}; + +/// Object for calculating retry timeout values. +static avsCommon::utils::RetryTimer RETRY_TIMER(RETRY_TABLE); + +std::shared_ptr SoftwareInfoSendRequest::create( + FirmwareVersion firmwareVersion, + std::shared_ptr messageSender, + std::shared_ptr observer) { + ACSDK_DEBUG5(LX("create").d("firmwareVersion", firmwareVersion)); + + if (!isValidFirmwareVersion(firmwareVersion)) { + ACSDK_ERROR(LX("createFailed").d("reason", "invalidFirmwareVersion").d("firmwareVersion", firmwareVersion)); + return nullptr; + } + + if (!messageSender) { + ACSDK_ERROR(LX("createFailed").d("reason", "messageSenderNull")); + return nullptr; + } + + return std::shared_ptr( + new SoftwareInfoSendRequest(firmwareVersion, messageSender, observer)); +} + +void SoftwareInfoSendRequest::onSendCompleted(MessageRequestObserverInterface::Status status) { + ACSDK_DEBUG5(LX("onSendCompleted").d("status", status)); + + std::lock_guard lock(m_mutex); + + if (MessageRequestObserverInterface::Status::SUCCESS == status || + MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT == status) { + if (m_observer) { + m_observer->onFirmwareVersionAccepted(m_firmwareVersion); + m_observer.reset(); + } + } else { + // At each retry, switch the Timer used to specify the time of the next retry. + auto& timer = m_retryTimers[m_retryCounter % (sizeof(m_retryTimers) / sizeof(m_retryTimers[0]))]; + auto delay = RETRY_TIMER.calculateTimeToRetry(m_retryCounter++); + ACSDK_INFO( + LX("retrySendingSoftwareInfoQueued").d("retry", m_retryCounter).d("delayInMilliseconds", delay.count())); + timer.stop(); + timer.start( + delay, + [](std::shared_ptr softwareInfoSendRequest) { softwareInfoSendRequest->send(); }, + shared_from_this()); + } +} + +void SoftwareInfoSendRequest::onExceptionReceived(const std::string& message) { + ACSDK_DEBUG5(LX("onExceptionReceived").d("message", message)); +} + +void SoftwareInfoSendRequest::doShutdown() { + ACSDK_DEBUG5(LX("doShutdown")); + + std::lock_guard lock(m_mutex); + + for (auto& timer : m_retryTimers) { + timer.stop(); + } + + m_messageSender.reset(); + m_observer.reset(); +} + +SoftwareInfoSendRequest::SoftwareInfoSendRequest( + FirmwareVersion firmwareVersion, + std::shared_ptr messageSender, + std::shared_ptr observer) : + RequiresShutdown("SoftwareInfoSendRequest"), + m_firmwareVersion{firmwareVersion}, + m_messageSender{messageSender}, + m_observer{observer}, + m_retryCounter{0} { +} + +void SoftwareInfoSendRequest::send() { + ACSDK_DEBUG5(LX("send").d("firmwareVersion", m_firmwareVersion)); + + std::string jsonContent; + if (!buildJsonForSoftwareInfo(&jsonContent, m_firmwareVersion)) { + ACSDK_ERROR(LX("sendFailed").d("reason", "buildJsonForSoftwareInfoFailed")); + onSendCompleted(MessageRequestObserverInterface::Status::INTERNAL_ERROR); + return; + } + auto request = std::make_shared(jsonContent); + request->addObserver(shared_from_this()); + m_messageSender->sendMessage(request); +} + +bool SoftwareInfoSendRequest::buildJsonForSoftwareInfo(std::string* jsonContent, FirmwareVersion firmwareVersion) { + std::string versionString = std::to_string(firmwareVersion); + rapidjson::Document payloadDataDocument(rapidjson::kObjectType); + payloadDataDocument.AddMember( + FIRMWARE_VERSION_STRING, rapidjson::StringRef(versionString), payloadDataDocument.GetAllocator()); + + rapidjson::StringBuffer payloadJson; + rapidjson::Writer payloadWriter(payloadJson); + payloadDataDocument.Accept(payloadWriter); + std::string payload = payloadJson.GetString(); + + auto msgIdAndJsonEvent = buildJsonEventString(NAMESPACE_SYSTEM, NAME_SOFTWARE_INFO, "", payload, ""); + // msgId should not be empty + if (msgIdAndJsonEvent.first.empty()) { + ACSDK_ERROR(LX("buildJsonForSoftwareInfoFailed").d("reason", "msgIdEmpty")); + return false; + } + + // Json event should not be empty + if (msgIdAndJsonEvent.second.empty()) { + ACSDK_ERROR(LX("buildJsonForSoftwareInfoFailed").d("reason", "JsonEventEmpty")); + return false; + } + + *jsonContent = msgIdAndJsonEvent.second; + return true; +} + +} // namespace system +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/System/src/SoftwareInfoSender.cpp b/CapabilityAgents/System/src/SoftwareInfoSender.cpp new file mode 100644 index 0000000000..bc654cf8e5 --- /dev/null +++ b/CapabilityAgents/System/src/SoftwareInfoSender.cpp @@ -0,0 +1,355 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +#include +#include + +#include "System/SoftwareInfoSender.h" +#include "System/SoftwareInfoSendRequest.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace system { + +using namespace acl; +using namespace avsCommon::avs; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::softwareInfo; +using namespace avsCommon::utils::json; +using namespace rapidjson; + +/// String to identify log entries originating from this file. +static const std::string TAG{"SoftwareInfoSender"}; + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +static const std::string NAMESPACE_SYSTEM = "System"; + +/// Namespace, Name pair for System.ReportSoftwareInfo. +static const NamespaceAndName REPORT_SOFTWARE_INFO(NAMESPACE_SYSTEM, "ReportSoftwareInfo"); + +std::shared_ptr SoftwareInfoSender::create( + FirmwareVersion firmwareVersion, + bool sendSoftwareInfoUponConnect, + std::shared_ptr observer, + std::shared_ptr connection, + std::shared_ptr messageSender, + std::shared_ptr exceptionEncounteredSender) { + ACSDK_DEBUG5(LX("create")); + + if (firmwareVersion <= 0) { + ACSDK_ERROR(LX("createFailed").d("reason", "invalidFirmwareVersion").d("firmwareVersion", firmwareVersion)); + return nullptr; + } + + if (!connection) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullConnection")); + return nullptr; + } + + if (!messageSender) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullMessageSender")); + return nullptr; + } + + if (!exceptionEncounteredSender) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullExceptionEncounteredSender")); + return nullptr; + } + + auto result = std::shared_ptr(new SoftwareInfoSender( + firmwareVersion, sendSoftwareInfoUponConnect, observer, connection, messageSender, exceptionEncounteredSender)); + + connection->addConnectionStatusObserver(result); + + return result; +} + +bool SoftwareInfoSender::setFirmwareVersion(FirmwareVersion firmwareVersion) { + ACSDK_DEBUG5(LX("setFirmwareVersion").d("firmwareVersion", firmwareVersion)); + + if (!isValidFirmwareVersion(firmwareVersion)) { + ACSDK_ERROR( + LX("setFirmwareVersion").d("reason", "invalidFirmwareVersion").d("firmwareVersion", firmwareVersion)); + return false; + } + + // We don't want to trigger @c ~SoftwareInfoSenderRequest() while holding @c m_mutex, so we use + // a variable outside the scope of the lock to hold our reference until @c m_mutex is released. + std::shared_ptr previousSendRequest; + + // We don't want to @c send() while holding @c m_mutex, so we use a variable outside of the + // scope of the lock to remember if there is a new request. + std::shared_ptr newSendRequest; + + bool result = true; + + { + std::lock_guard lock(m_mutex); + + if (firmwareVersion == m_firmwareVersion) { + return result; + } + m_firmwareVersion = firmwareVersion; + + if (ConnectionStatusObserverInterface::Status::CONNECTED == m_connectionStatus) { + newSendRequest = SoftwareInfoSendRequest::create(m_firmwareVersion, m_messageSender, shared_from_this()); + if (newSendRequest) { + previousSendRequest = m_clientInitiatedSendRequest; + m_clientInitiatedSendRequest = newSendRequest; + } else { + result = false; + } + } else { + m_sendSoftwareInfoUponConnect = true; + previousSendRequest = m_clientInitiatedSendRequest; + m_clientInitiatedSendRequest.reset(); + } + } + + if (previousSendRequest) { + ACSDK_INFO(LX("cancellingPreviousClientInitiatedSendRequest")); + previousSendRequest->shutdown(); + } + + if (newSendRequest) { + newSendRequest->send(); + } + + return result; +} + +avsCommon::avs::DirectiveHandlerConfiguration SoftwareInfoSender::getConfiguration() const { + ACSDK_DEBUG5(LX("getConfiguration")); + + static avsCommon::avs::DirectiveHandlerConfiguration configuration = { + {REPORT_SOFTWARE_INFO, BlockingPolicy::NON_BLOCKING}}; + return configuration; +} + +void SoftwareInfoSender::handleDirectiveImmediately(std::shared_ptr directive) { + handleDirective(std::make_shared(directive, nullptr)); +} + +void SoftwareInfoSender::preHandleDirective(std::shared_ptr info) { + // Nothing to do. +} + +void SoftwareInfoSender::handleDirective(std::shared_ptr info) { + if (!info) { + ACSDK_ERROR(LX("handleDirectiveFailed").d("reason", "nullInfo")); + return; + } + + ACSDK_DEBUG5(LX("handleDirective").d("messageId", info->directive->getMessageId())); + + if (info->directive->getNamespace() != REPORT_SOFTWARE_INFO.nameSpace || + info->directive->getName() != REPORT_SOFTWARE_INFO.name) { + sendExceptionEncounteredAndReportFailed( + info, "Unsupported operation", ExceptionErrorType::UNSUPPORTED_OPERATION); + return; + } + + // We don't want to trigger @c ~SoftwareInfoSenderRequest() while holding @c m_mutex, so we use + // a variable outside the scope of the lock to hold our reference until @c m_mutex is released. + std::shared_ptr previousSendRequest; + + // We don't want to @c send() while holding @c m_mutex, so we use a variable outside of the + // scope of the lock to remember if there is a new request. + std::shared_ptr newSendRequest; + + { + std::lock_guard lock(m_mutex); + + if (m_firmwareVersion == INVALID_FIRMWARE_VERSION) { + sendExceptionEncounteredAndReportFailed(info, "NoFirmwareVersion", ExceptionErrorType::INTERNAL_ERROR); + return; + } + + newSendRequest = SoftwareInfoSendRequest::create(m_firmwareVersion, m_messageSender, shared_from_this()); + + if (newSendRequest) { + previousSendRequest = m_handleDirectiveSendRequest; + m_handleDirectiveSendRequest = newSendRequest; + } else { + sendExceptionEncounteredAndReportFailed( + info, "sendFirmwareVersionFailed", ExceptionErrorType::INTERNAL_ERROR); + } + } + + if (previousSendRequest) { + ACSDK_INFO(LX("cancellingPreviousHandleDirectiveSendRequest")); + previousSendRequest->shutdown(); + } + + if (newSendRequest) { + newSendRequest->send(); + } + + if (info->result) { + info->result->setCompleted(); + } + + removeDirective(info); +} + +void SoftwareInfoSender::cancelDirective(std::shared_ptr info) { + if (!info) { + ACSDK_ERROR(LX("cancelDirectiveFailed").d("reason", "nullInfo")); + return; + } + + ACSDK_DEBUG5(LX("cancelDirective").d("messageId", info->directive->getMessageId())); + + std::shared_ptr outstandingRequest; + + { + std::lock_guard lock(m_mutex); + if (!m_handleDirectiveSendRequest) { + return; + } + outstandingRequest = m_handleDirectiveSendRequest; + m_handleDirectiveSendRequest.reset(); + } + + if (outstandingRequest) { + outstandingRequest->shutdown(); + } +} + +void SoftwareInfoSender::onConnectionStatusChanged( + ConnectionStatusObserverInterface::Status status, + ConnectionStatusObserverInterface::ChangedReason reason) { + ACSDK_DEBUG5(LX("onConnectionStatusChanged").d("status", status).d("reason", reason)); + + // We don't want to @c send() while holding @c m_mutex, so we use a variable outside of the + // scope of the lock to remember if there is a new request. + std::shared_ptr newSendRequest; + + { + std::lock_guard lock(m_mutex); + + if (status == m_connectionStatus) { + return; + } + + m_connectionStatus = status; + + if (!m_sendSoftwareInfoUponConnect || status != ConnectionStatusObserverInterface::Status::CONNECTED) { + return; + } + + newSendRequest = SoftwareInfoSendRequest::create(m_firmwareVersion, m_messageSender, shared_from_this()); + m_sendSoftwareInfoUponConnect = false; + if (newSendRequest) { + m_clientInitiatedSendRequest = newSendRequest; + } else { + ACSDK_ERROR(LX("onConnectionStatusChangedFailed").d("reason", "failedToCreateOnConnectSendRequest")); + } + } + + if (newSendRequest) { + newSendRequest->send(); + } +} + +void SoftwareInfoSender::doShutdown() { + ACSDK_DEBUG5(LX("shutdown")); + + // Local shared_ptrs used to prevent deletion of objects pointed to by members until m_mutex is released. + + std::shared_ptr localObserver; + std::shared_ptr localConnection; + std::shared_ptr localMessageSender; + std::shared_ptr localExceptionEncounteredSender; + std::shared_ptr localClientInitiatedSendRequest; + std::shared_ptr localHandleDirectiveSendRequest; + + { + std::lock_guard lock(m_mutex); + + m_sendSoftwareInfoUponConnect = false; + + // Swap these shared_ptr values with nullptr. This allows us to release + // the reference from our member data while holding the lock, but do the + // (potentially) final release of a shared_ptr to these instances while + // NOT holding the lock (i.e. when these locals go out of scope). + std::swap(m_observer, localObserver); + std::swap(m_connection, localConnection); + std::swap(m_messageSender, localMessageSender); + std::swap(m_exceptionEncounteredSender, localExceptionEncounteredSender); + std::swap(m_clientInitiatedSendRequest, localClientInitiatedSendRequest); + std::swap(m_handleDirectiveSendRequest, localHandleDirectiveSendRequest); + } + + localConnection->removeConnectionStatusObserver(shared_from_this()); + + if (localClientInitiatedSendRequest) { + localClientInitiatedSendRequest->shutdown(); + } + + if (localHandleDirectiveSendRequest) { + localHandleDirectiveSendRequest->shutdown(); + } +} + +void SoftwareInfoSender::onFirmwareVersionAccepted(FirmwareVersion firmwareVersion) { + std::shared_ptr localObserver; + { + std::lock_guard lock(m_mutex); + std::swap(m_observer, localObserver); + } + if (localObserver) { + localObserver->onFirmwareVersionAccepted(firmwareVersion); + } +} + +SoftwareInfoSender::SoftwareInfoSender( + FirmwareVersion firmwareVersion, + bool sendSoftwareInfoUponConnect, + std::shared_ptr observer, + std::shared_ptr connection, + std::shared_ptr messageSender, + std::shared_ptr exceptionEncounteredSender) : + CapabilityAgent{NAMESPACE_SYSTEM, exceptionEncounteredSender}, + RequiresShutdown{"SoftwareInfoSender"}, + m_firmwareVersion{firmwareVersion}, + m_sendSoftwareInfoUponConnect{sendSoftwareInfoUponConnect}, + m_observer{observer}, + m_connection{connection}, + m_messageSender{messageSender}, + m_exceptionEncounteredSender{exceptionEncounteredSender}, + m_connectionStatus{ConnectionStatusObserverInterface::Status::DISCONNECTED} { + ACSDK_DEBUG5(LX("SoftwareInfoSender")); +} + +void SoftwareInfoSender::removeDirective(std::shared_ptr info) { + ACSDK_DEBUG5(LX("removeDirective")); + if (info && info->result) { + CapabilityAgent::removeDirective(info->directive->getMessageId()); + } +} + +} // namespace system +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/System/src/StateSynchronizer.cpp b/CapabilityAgents/System/src/StateSynchronizer.cpp deleted file mode 100644 index 419f60d97b..0000000000 --- a/CapabilityAgents/System/src/StateSynchronizer.cpp +++ /dev/null @@ -1,179 +0,0 @@ -/* - * StateSynchronizer.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0/ - * - * or in the "license" file accompanying this file. This file 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 "System/StateSynchronizer.h" -#include "System/NotifyingMessageRequest.h" - -#include -#include - -namespace alexaClientSDK { -namespace capabilityAgents { -namespace system { - -using namespace avsCommon::sdkInterfaces; -using namespace avsCommon::avs; - -/// String to identify log entries originating from this file. -static const std::string TAG("StateSynchronizer"); - -/** - * Create a LogEntry using this file's TAG and the specified event string. - * - * @param The event string for this @c LogEntry. - */ -#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) - -/// String to identify the AVS namespace of the event we send. -static const std::string STATE_SYNCHRONIZER_NAMESPACE = "System"; - -/// String to identify the AVS name of the event we send. -static const std::string STATE_SYNCHRONIZER_NAME = "SynchronizeState"; - -std::shared_ptr StateSynchronizer::create( - std::shared_ptr contextManager, - std::shared_ptr messageSender) { - if (!contextManager) { - ACSDK_ERROR(LX("createFailed").d("reason", "nullContextManager")); - return nullptr; - } - if (!messageSender) { - ACSDK_ERROR(LX("createFailed").d("reason", "nullMessageSender")); - return nullptr; - } - return std::shared_ptr(new StateSynchronizer(contextManager, messageSender)); -} - -void StateSynchronizer::addObserver(std::shared_ptr observer) { - if (!observer) { - ACSDK_ERROR(LX("addObserverFailed").d("reason", "nullObserver")); - return; - } - std::lock_guard observerLock(m_observerMutex); - if (m_observers.insert(observer).second) { - std::lock_guard stateLock(m_stateMutex); - observer->onStateChanged(m_state); - } else { - ACSDK_DEBUG(LX("addObserverRedundant").d("reason", "observerAlreadyAdded")); - } -} - -void StateSynchronizer::removeObserver(std::shared_ptr observer) { - if (!observer) { - ACSDK_ERROR(LX("removeObserverFailed").d("reason", "nullObserver")); - return; - } - std::lock_guard observerLock(m_observerMutex); - m_observers.erase(observer); -} - -void StateSynchronizer::shutdown() { - std::lock_guard observerLock(m_observerMutex); - m_observers.clear(); -} - -void StateSynchronizer::notifyObservers() { - std::unique_lock observerLock(m_observerMutex); - auto currentObservers = m_observers; - observerLock.unlock(); - std::unique_lock statusLock(m_stateMutex); - auto currentState = m_state; - statusLock.unlock(); - for (auto observer : currentObservers) { - observer->onStateChanged(currentState); - } -} - -void StateSynchronizer::messageSent(MessageRequest::Status messageStatus) { - if (MessageRequest::Status::SUCCESS == messageStatus) { - std::unique_lock stateLock(m_stateMutex); - ACSDK_INFO(LX("messageSentSuccessfully")); - if (ObserverInterface::State::SYNCHRONIZED != m_state) { - m_state = ObserverInterface::State::SYNCHRONIZED; - stateLock.unlock(); - notifyObservers(); - } - } else { - // If the message send was unsuccessful, send another request to @c ContextManager. - ACSDK_WARN(LX("messageSendNotSuccessful")); - if (!m_isConnected) { - m_contextManager->getContext(shared_from_this()); - } - } -} - -void StateSynchronizer::onConnectionStatusChanged( - const ConnectionStatusObserverInterface::Status status, - const ConnectionStatusObserverInterface::ChangedReason reason) { - std::unique_lock stateLock(m_stateMutex); - switch (status) { - case ConnectionStatusObserverInterface::Status::DISCONNECTED: - /* FALL-THROUGH */ - case ConnectionStatusObserverInterface::Status::PENDING: - m_isConnected = false; - if (ObserverInterface::State::NOT_SYNCHRONIZED != m_state) { - m_state = ObserverInterface::State::NOT_SYNCHRONIZED; - stateLock.unlock(); - notifyObservers(); - } - break; - case ConnectionStatusObserverInterface::Status::CONNECTED: - m_isConnected = true; - if (ObserverInterface::State::SYNCHRONIZED == m_state) { - ACSDK_ERROR(LX("unexpectedConnectionStatusChange").d("reason", "connectHappenedWhileSynchronized")); - } else { - // This is the case when we should send @c SynchronizeState event. - ACSDK_INFO(LX("requestingContext") - .d("reason", "connectionStatusChanged") - .d("receivedStatus", status)); - m_contextManager->getContext(shared_from_this()); - } - break; - case ConnectionStatusObserverInterface::Status::POST_CONNECTED: - break; - } -} - -void StateSynchronizer::onContextAvailable(const std::string& jsonContext) { - auto msgIdAndJsonEvent = buildJsonEventString( - STATE_SYNCHRONIZER_NAMESPACE, - STATE_SYNCHRONIZER_NAME, - "", - "{}", - jsonContext); - m_messageSender->sendMessage( - std::make_shared(msgIdAndJsonEvent.second, shared_from_this())); -} - -void StateSynchronizer::onContextFailure(const ContextRequestError error) { - ACSDK_ERROR(LX("contextRetrievalFailed").d("reason", "contextRequestErrorOccurred").d("error", error)); - ACSDK_DEBUG(LX("retryContextRetrieve").d("reason", "contextRetrievalFailed")); - m_contextManager->getContext(shared_from_this()); -} - -StateSynchronizer::StateSynchronizer( - std::shared_ptr contextManager, - std::shared_ptr messageSender) : - m_messageSender{messageSender}, - m_contextManager{contextManager}, - m_isConnected{false}, - m_state{ObserverInterface::State::NOT_SYNCHRONIZED} { -} - -} // namespace system -} // namespace capabilityAgents -} // namespace alexaClientSDK diff --git a/CapabilityAgents/System/src/UserInactivityMonitor.cpp b/CapabilityAgents/System/src/UserInactivityMonitor.cpp index 32307fc98a..705f0d9922 100644 --- a/CapabilityAgents/System/src/UserInactivityMonitor.cpp +++ b/CapabilityAgents/System/src/UserInactivityMonitor.cpp @@ -1,7 +1,5 @@ /* - * UserInactivityMonitor.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -58,10 +56,10 @@ static const std::string INACTIVITY_EVENT_PAYLOAD_KEY = "inactiveTimeInSeconds"; static const std::string RESET_DIRECTIVE_NAME = "ResetUserInactivity"; void UserInactivityMonitor::removeDirectiveGracefully( - std::shared_ptr info, - bool isFailure, - const std::string &report) { - if(info) { + std::shared_ptr info, + bool isFailure, + const std::string& report) { + if (info) { if (info->result) { if (isFailure) { info->result->setFailed(report); @@ -76,9 +74,9 @@ void UserInactivityMonitor::removeDirectiveGracefully( } std::shared_ptr UserInactivityMonitor::create( - std::shared_ptr messageSender, - std::shared_ptr exceptionEncounteredSender, - const std::chrono::milliseconds& sendPeriod) { + std::shared_ptr messageSender, + std::shared_ptr exceptionEncounteredSender, + const std::chrono::milliseconds& sendPeriod) { if (!messageSender) { ACSDK_ERROR(LX("createFailed").d("reason", "nullMessageSender")); return nullptr; @@ -88,22 +86,21 @@ std::shared_ptr UserInactivityMonitor::create( return nullptr; } return std::shared_ptr( - new UserInactivityMonitor(messageSender, exceptionEncounteredSender, sendPeriod)); + new UserInactivityMonitor(messageSender, exceptionEncounteredSender, sendPeriod)); } UserInactivityMonitor::UserInactivityMonitor( - std::shared_ptr messageSender, - std::shared_ptr exceptionEncounteredSender, - const std::chrono::milliseconds& sendPeriod) : - CapabilityAgent(USER_INACTIVITY_MONITOR_NAMESPACE, exceptionEncounteredSender), - m_messageSender{messageSender}, - m_lastTimeActive{std::chrono::steady_clock::now()} -{ + std::shared_ptr messageSender, + std::shared_ptr exceptionEncounteredSender, + const std::chrono::milliseconds& sendPeriod) : + CapabilityAgent(USER_INACTIVITY_MONITOR_NAMESPACE, exceptionEncounteredSender), + m_messageSender{messageSender}, + m_lastTimeActive{std::chrono::steady_clock::now()} { m_eventTimer.start( - sendPeriod, - Timer::PeriodType::ABSOLUTE, - Timer::FOREVER, - std::bind(&UserInactivityMonitor::sendInactivityReport, this)); + sendPeriod, + Timer::PeriodType::ABSOLUTE, + Timer::FOREVER, + std::bind(&UserInactivityMonitor::sendInactivityReport, this)); } void UserInactivityMonitor::sendInactivityReport() { @@ -121,10 +118,10 @@ void UserInactivityMonitor::sendInactivityReport() { Document inactivityPayload(kObjectType); SizeType payloadKeySize = INACTIVITY_EVENT_PAYLOAD_KEY.length(); - const Pointer::Token payloadKey[] = {{INACTIVITY_EVENT_PAYLOAD_KEY.c_str(),payloadKeySize, kPointerInvalidIndex}}; - auto inactiveTime = std::chrono::duration_cast( - std::chrono::steady_clock::now() - lastTimeActive); - Pointer(payloadKey, 1).Set(inactivityPayload, inactiveTime.count()); + const Pointer::Token payloadKey[] = {{INACTIVITY_EVENT_PAYLOAD_KEY.c_str(), payloadKeySize, kPointerInvalidIndex}}; + auto inactiveTime = + std::chrono::duration_cast(std::chrono::steady_clock::now() - lastTimeActive); + Pointer(payloadKey, 1).Set(inactivityPayload, static_cast(inactiveTime.count())); std::string inactivityPayloadString; jsonUtils::convertToValue(inactivityPayload, &inactivityPayloadString); @@ -133,9 +130,8 @@ void UserInactivityMonitor::sendInactivityReport() { } DirectiveHandlerConfiguration UserInactivityMonitor::getConfiguration() const { - return DirectiveHandlerConfiguration{{ - NamespaceAndName{USER_INACTIVITY_MONITOR_NAMESPACE, RESET_DIRECTIVE_NAME}, - BlockingPolicy::NON_BLOCKING}}; + return DirectiveHandlerConfiguration{ + {NamespaceAndName{USER_INACTIVITY_MONITOR_NAMESPACE, RESET_DIRECTIVE_NAME}, BlockingPolicy::NON_BLOCKING}}; } void UserInactivityMonitor::handleDirectiveImmediately(std::shared_ptr directive) { @@ -168,6 +164,6 @@ void UserInactivityMonitor::onUserActive() { } } -} // namespace system -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace system +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/System/test/EndpointHandlerTest.cpp b/CapabilityAgents/System/test/EndpointHandlerTest.cpp index 1b57da0031..c3f007423a 100644 --- a/CapabilityAgents/System/test/EndpointHandlerTest.cpp +++ b/CapabilityAgents/System/test/EndpointHandlerTest.cpp @@ -1,7 +1,5 @@ /* - * EndpointHandlerTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,7 +13,6 @@ * permissions and limitations under the License. */ - #include #include @@ -44,7 +41,7 @@ static const std::string ENDPOINTING_NAMESPACE = "System"; /// This is a string for the correct name the endpointing directive uses. static const std::string ENDPOINTING_NAME = "SetEndpoint"; -/// This is a string for the wrong name the endpointing directive uses. +/// This is a string for the wrong name the endpointing directive uses. static const std::string ENDPOINTING_WRONG_NAME = "WrongEndpointer"; /// This string holds the key for the endpoint in the payload. @@ -118,17 +115,11 @@ TEST_F(EndpointHandlerTest, handleDirectiveProperly) { auto directiveSequencer = adsl::DirectiveSequencer::create(m_mockExceptionEncounteredSender); directiveSequencer->addDirectiveHandler(endpointHandler); - auto endpointDirectiveHeader = std::make_shared( - ENDPOINTING_NAMESPACE, - ENDPOINTING_NAME, - ENDPOINTING_MESSAGE_ID); + auto endpointDirectiveHeader = + std::make_shared(ENDPOINTING_NAMESPACE, ENDPOINTING_NAME, ENDPOINTING_MESSAGE_ID); auto attachmentManager = std::make_shared>(); - std::shared_ptr endpointDirective = AVSDirective::create( - "", - endpointDirectiveHeader, - ENDPOINT_PAYLOAD, - attachmentManager, - ""); + std::shared_ptr endpointDirective = + AVSDirective::create("", endpointDirectiveHeader, ENDPOINT_PAYLOAD, attachmentManager, ""); std::mutex exitMutex; std::unique_lock exitLock(exitMutex); @@ -138,7 +129,7 @@ TEST_F(EndpointHandlerTest, handleDirectiveProperly) { directiveSequencer->shutdown(); } -} // namespace test -} // namespace system -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace test +} // namespace system +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/System/test/SoftwareInfoTest.cpp b/CapabilityAgents/System/test/SoftwareInfoTest.cpp new file mode 100644 index 0000000000..710dcfa1a5 --- /dev/null +++ b/CapabilityAgents/System/test/SoftwareInfoTest.cpp @@ -0,0 +1,610 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +#include +#include +#include + +#include "System/SoftwareInfoSender.h" + +using namespace testing; + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace system { +namespace test { + +using namespace avsCommon::avs; +using namespace avsCommon::avs::attachment; +using namespace avsCommon::avs::attachment::test; +using namespace avsCommon::utils; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::softwareInfo; +using namespace avsCommon::sdkInterfaces::test; + +/// This is a string for the namespace we are testing for. +static const std::string NAMESPACE_SYSTEM = "System"; + +/// This is a string for the name of the System.SoftwareInfo event. +static const std::string NAME_SOFTWARE_INFO = "SoftwareInfo"; + +/// This is a string for the name of the System.ReportSoftwareInfo directive. +static const std::string NAME_REPORT_SOFTWARE_INFO = "ReportSoftwareInfo"; + +/// Dummy message ID with which to mock receiving a directive. +static const std::string MESSAGE_ID = "Message-1"; + +/// Empty dialogRequestId with which to mock receiving a directive. +static const std::string DIALOG_REQUEST_ID = ""; + +/// Dummy unparsed directive JSON. +static const std::string UNPARSED_DIRECTIVE = ""; + +/// Header of ReportSoftwareInfo directive. +static const auto REPORT_SOFTWARE_INFO_DIRECTIVE_HEADER = + std::make_shared(NAMESPACE_SYSTEM, NAME_REPORT_SOFTWARE_INFO, MESSAGE_ID, DIALOG_REQUEST_ID); + +/// Dummy directive payload. +static const std::string TEST_PAYLOAD = ""; + +/// Empty attachment ID. +static const std::string ATTACHMENT_CONTEXT_ID = ""; + +/// Value for timeouts we expect to reach. +static const std::chrono::milliseconds EXPECTED_TIMEOUT(100); + +/// Value for timeouts we do not expect to reach. +static const std::chrono::seconds UNEXPECTED_TIMEOUT(5); + +/// Max time to wait for two send retries. +static const std::chrono::seconds TWO_RETRIES_TIMEOUT(15); + +static const FirmwareVersion FIRST_FIRMWARE_VERSION = 1; +static const FirmwareVersion SECOND_FIRMWARE_VERSION = 2; +static const FirmwareVersion THIRD_FIRMWARE_VERSION = 3; + +/** + * + */ +class MockSoftwareInfoSenderObserver : public SoftwareInfoSenderObserverInterface { +public: + MOCK_METHOD1(onFirmwareVersionAccepted, void(FirmwareVersion)); +}; + +/** + * Class with which to mock a connection ot AVS. + */ +class MockConnection : public AbstractConnection { +public: + MockConnection(); + + bool isConnected() const override; + + /** + * Update the connection status. + * + * @param status The Connection Status. + * @param reason The reason the Connection Status changed. + */ + void updateConnectionStatus( + ConnectionStatusObserverInterface::Status status, + ConnectionStatusObserverInterface::ChangedReason reason); +}; + +MockConnection::MockConnection() : AbstractConnection{} { +} + +bool MockConnection::isConnected() const { + return ConnectionStatusObserverInterface::Status::CONNECTED == m_connectionStatus; +} + +void MockConnection::updateConnectionStatus( + ConnectionStatusObserverInterface::Status status, + ConnectionStatusObserverInterface::ChangedReason reason) { + AbstractConnection::updateConnectionStatus(status, reason); +} + +/// Test harness for @c SoftwareInfoSender class. +class SoftwareInfoSenderTest : public ::testing::Test { +public: + /// Set up the test harness for running a test. + void SetUp() override; + +protected: + std::shared_ptr> m_mockObserver; + /// Mocked connection + std::shared_ptr> m_mockConnection; + /// Mocked MessageSenderInterface + std::shared_ptr> m_mockMessageSender; + /// Mocked Exception Encountered Sender. + std::shared_ptr> m_mockExceptionEncounteredSender; + /// Mock AttachmentManager for creating directives. + std::shared_ptr> m_mockAttachmentManager; + /// System.ReportSoftwareInfo directive. + std::shared_ptr m_reportSoftwareInfoDirective; +}; + +void SoftwareInfoSenderTest::SetUp() { + m_mockObserver = std::make_shared>(); + m_mockConnection = std::make_shared>(); + m_mockMessageSender = std::make_shared>(); + m_mockExceptionEncounteredSender = std::make_shared>(); + m_mockAttachmentManager = std::make_shared>(); + m_reportSoftwareInfoDirective = AVSDirective::create( + UNPARSED_DIRECTIVE, + REPORT_SOFTWARE_INFO_DIRECTIVE_HEADER, + TEST_PAYLOAD, + m_mockAttachmentManager, + ATTACHMENT_CONTEXT_ID); +} + +/** + * Verify that providing an invalid firmware version will cause SoftwareInfoSender::create() to fail. + */ +TEST_F(SoftwareInfoSenderTest, createFailedInvalidFirmwareVersion) { + ASSERT_FALSE(SoftwareInfoSender::create( + INVALID_FIRMWARE_VERSION, + true, + m_mockObserver, + m_mockConnection, + m_mockMessageSender, + m_mockExceptionEncounteredSender)); +} + +/** + * Verify that passing false for sendSoftwareInfoUponConnect will NOT cause SoftwareInfoSender::create() to fail. + */ +TEST_F(SoftwareInfoSenderTest, createSuccessWithsendSoftwareInfoUponConnectFalse) { + auto softwareInfoSender = SoftwareInfoSender::create( + FIRST_FIRMWARE_VERSION, + false, + m_mockObserver, + m_mockConnection, + m_mockMessageSender, + m_mockExceptionEncounteredSender); + ASSERT_TRUE(softwareInfoSender); + softwareInfoSender->shutdown(); +} + +/** + * Verify that passing nullptr for observer will NOT cause SoftwareInfoSender::create() to fail. + */ +TEST_F(SoftwareInfoSenderTest, createSuccessWithObserverNull) { + auto softwareInfoSender = SoftwareInfoSender::create( + 1, true, nullptr, m_mockConnection, m_mockMessageSender, m_mockExceptionEncounteredSender); + ASSERT_TRUE(softwareInfoSender); + softwareInfoSender->shutdown(); +} + +/** + * Verify that passing nullptr for connection will cause SoftwareInfoSender::create() to fail. + */ +TEST_F(SoftwareInfoSenderTest, createFailedConnectionNull) { + ASSERT_FALSE(SoftwareInfoSender::create( + 1, true, m_mockObserver, nullptr, m_mockMessageSender, m_mockExceptionEncounteredSender)); +} + +/** + * Verify that not providing a @c MessageSender will cause @c SoftwareInfoSender::create() to fail. + */ +TEST_F(SoftwareInfoSenderTest, createFailedMessageSenderNull) { + ASSERT_FALSE(SoftwareInfoSender::create( + 1, true, m_mockObserver, m_mockConnection, nullptr, m_mockExceptionEncounteredSender)); +} + +/** + * Verify that not providing a @c MessageSender will cause @c SoftwareInfoSender::create() to fail. + */ +TEST_F(SoftwareInfoSenderTest, createFailedExceptionEncounteredSenderNull) { + ASSERT_FALSE(SoftwareInfoSender::create(1, true, m_mockObserver, m_mockConnection, m_mockMessageSender, nullptr)); +} + +/** + * Verify that no SoftwareInfo event or ExceptionEncountered message is sent if @c sendSoftwareInfoOnConnect is + * @c false and ReportSoftwareInfo directive is not received. + */ +TEST_F(SoftwareInfoSenderTest, noSoftwareInfoEventSentByDefault) { + EXPECT_CALL(*(m_mockObserver.get()), onFirmwareVersionAccepted(_)).Times(0); + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)).Times(0); + EXPECT_CALL(*(m_mockExceptionEncounteredSender.get()), sendExceptionEncountered(_, _, _)).Times(0); + + auto softwareInfoSender = SoftwareInfoSender::create( + FIRST_FIRMWARE_VERSION, + false, + m_mockObserver, + m_mockConnection, + m_mockMessageSender, + m_mockExceptionEncounteredSender); + ASSERT_TRUE(softwareInfoSender); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::PENDING, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::CONNECTED, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::PENDING, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::CONNECTED, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::DISCONNECTED, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + softwareInfoSender->shutdown(); +} + +/** + * Verify that no attempt is made to send a SoftwareInfo event or and ExceptionEncounteredEvent if no connection + * has been established - even if @c sendSoftwareInfoOnConnect is @c true. + */ +TEST_F(SoftwareInfoSenderTest, nothingSentBeforeConnected) { + EXPECT_CALL(*(m_mockObserver.get()), onFirmwareVersionAccepted(_)).Times(0); + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)).Times(0); + EXPECT_CALL(*(m_mockExceptionEncounteredSender.get()), sendExceptionEncountered(_, _, _)).Times(0); + + auto softwareInfoSender = SoftwareInfoSender::create( + 1, true, m_mockObserver, m_mockConnection, m_mockMessageSender, m_mockExceptionEncounteredSender); + ASSERT_TRUE(softwareInfoSender); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::PENDING, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + softwareInfoSender->shutdown(); +} + +/** + * Verify that one SoftwareInfo event is sent and no ExceptionEncountered message is sent if @c + * sendSoftwareInfoOnConnect is @c true, a connection is made, and no ReportSoftwareInfo directive is received. + */ +TEST_F(SoftwareInfoSenderTest, softwareInfoSentUponConnectIfSendSetTrueBeforeConnect) { + std::promise versionAcceptedPromise; + EXPECT_CALL(*(m_mockObserver.get()), onFirmwareVersionAccepted(_)) + .Times(1) + .WillOnce(InvokeWithoutArgs([&versionAcceptedPromise]() { versionAcceptedPromise.set_value(); })); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(1) + .WillOnce(Invoke([](std::shared_ptr request) { + request->sendCompleted(MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT); + })); + + EXPECT_CALL(*(m_mockExceptionEncounteredSender.get()), sendExceptionEncountered(_, _, _)).Times(0); + + auto softwareInfoSender = SoftwareInfoSender::create( + 1, true, m_mockObserver, m_mockConnection, m_mockMessageSender, m_mockExceptionEncounteredSender); + ASSERT_TRUE(softwareInfoSender); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::PENDING, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::CONNECTED, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::PENDING, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::CONNECTED, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::DISCONNECTED, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + auto versionAcceptedFuture = versionAcceptedPromise.get_future(); + ASSERT_NE(versionAcceptedFuture.wait_for(UNEXPECTED_TIMEOUT), std::future_status::timeout); + + softwareInfoSender->shutdown(); +} + +/** + * Verify that an event is sent if a @c ReportSoftwareInfo directive is received even if @c sendSoftwareInfoOnConnect is + * @c false. + */ +TEST_F(SoftwareInfoSenderTest, reportSoftwareInfoReceived) { + std::promise versionAcceptedPromise; + EXPECT_CALL(*(m_mockObserver.get()), onFirmwareVersionAccepted(_)) + .Times(1) + .WillOnce(InvokeWithoutArgs([&versionAcceptedPromise]() { versionAcceptedPromise.set_value(); })); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(1) + .WillOnce(Invoke([](std::shared_ptr request) { + request->sendCompleted(MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT); + })); + + EXPECT_CALL(*(m_mockExceptionEncounteredSender.get()), sendExceptionEncountered(_, _, _)).Times(0); + + auto softwareInfoSender = SoftwareInfoSender::create( + FIRST_FIRMWARE_VERSION, + false, + m_mockObserver, + m_mockConnection, + m_mockMessageSender, + m_mockExceptionEncounteredSender); + ASSERT_TRUE(softwareInfoSender); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::PENDING, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::CONNECTED, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + softwareInfoSender->handleDirectiveImmediately(m_reportSoftwareInfoDirective); + + auto versionAcceptedFuture = versionAcceptedPromise.get_future(); + ASSERT_NE(versionAcceptedFuture.wait_for(UNEXPECTED_TIMEOUT), std::future_status::timeout); + + softwareInfoSender->shutdown(); +} + +/** + * Verify that handling a @c ReportSoftwareInfo directive cancels incomplete handling of any previous + * ReportSoftwareInfo directive. + */ +TEST_F(SoftwareInfoSenderTest, reportSoftwareInfoCancellsPreviousDirective) { + // This status causes the first send request to retry, until set to something else. + std::atomic status( + MessageRequestObserverInterface::Status::SERVER_INTERNAL_ERROR_V2); + + std::promise versionAcceptedPromise; + EXPECT_CALL(*(m_mockObserver.get()), onFirmwareVersionAccepted(_)) + .Times(1) + .WillOnce(InvokeWithoutArgs([&versionAcceptedPromise]() { versionAcceptedPromise.set_value(); })); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(2) + .WillRepeatedly(Invoke([&status](std::shared_ptr request) { + std::this_thread::sleep_for(EXPECTED_TIMEOUT); + request->sendCompleted(status); + })); + + EXPECT_CALL(*(m_mockExceptionEncounteredSender.get()), sendExceptionEncountered(_, _, _)).Times(0); + + auto softwareInfoSender = SoftwareInfoSender::create( + FIRST_FIRMWARE_VERSION, + false, + m_mockObserver, + m_mockConnection, + m_mockMessageSender, + m_mockExceptionEncounteredSender); + ASSERT_TRUE(softwareInfoSender); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::PENDING, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::CONNECTED, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + softwareInfoSender->handleDirectiveImmediately(m_reportSoftwareInfoDirective); + + status = MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT; + + softwareInfoSender->handleDirectiveImmediately(m_reportSoftwareInfoDirective); + + // Sleep long enough for more than 2 sendMessage() calls to pile up. + // Yes, it is weak to use a sleep to coordinate the timing of calls. In + // this case we are allowing time for calls that we do NOT expect to + // happen (note that we EXPECT_CALL Time(2) above). So, there is no + // trigger we can use to know when to stop waiting. If the timing + // is not correct, this test will NOT generate false failures. + std::this_thread::sleep_for(4 * EXPECTED_TIMEOUT); + + auto versionAcceptedFuture = versionAcceptedPromise.get_future(); + ASSERT_NE(versionAcceptedFuture.wait_for(UNEXPECTED_TIMEOUT), std::future_status::timeout); + + softwareInfoSender->shutdown(); +} + +/** + * Verify that notification that the firmware version was accepted by @c AVS is only sent once. + */ +TEST_F(SoftwareInfoSenderTest, delayedReportSoftwareInfoNotifiesOnce) { + std::promise versionAcceptedPromise; + EXPECT_CALL(*(m_mockObserver.get()), onFirmwareVersionAccepted(_)) + .Times(1) + .WillOnce(InvokeWithoutArgs([&versionAcceptedPromise]() { versionAcceptedPromise.set_value(); })); + + std::promise messageSentTwicePromise; + int sentCounter = 0; + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(2) + .WillRepeatedly(Invoke([&messageSentTwicePromise, &sentCounter](std::shared_ptr request) { + request->sendCompleted(MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT); + if (++sentCounter == 2) { + messageSentTwicePromise.set_value(); + } + })); + + EXPECT_CALL(*(m_mockExceptionEncounteredSender.get()), sendExceptionEncountered(_, _, _)).Times(0); + + auto softwareInfoSender = SoftwareInfoSender::create( + FIRST_FIRMWARE_VERSION, + false, + m_mockObserver, + m_mockConnection, + m_mockMessageSender, + m_mockExceptionEncounteredSender); + ASSERT_TRUE(softwareInfoSender); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::PENDING, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::CONNECTED, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + softwareInfoSender->handleDirectiveImmediately(m_reportSoftwareInfoDirective); + + auto versionAcceptedFuture = versionAcceptedPromise.get_future(); + ASSERT_NE(versionAcceptedFuture.wait_for(UNEXPECTED_TIMEOUT), std::future_status::timeout); + + softwareInfoSender->handleDirectiveImmediately(m_reportSoftwareInfoDirective); + + auto messageSentTwiceFuture = messageSentTwicePromise.get_future(); + ASSERT_NE(messageSentTwiceFuture.wait_for(UNEXPECTED_TIMEOUT), std::future_status::timeout); + + softwareInfoSender->shutdown(); +} + +/** + * Verify that SoftwareInfoSender retries sending. + */ +TEST_F(SoftwareInfoSenderTest, verifySendRetries) { + std::promise versionAcceptedPromise; + EXPECT_CALL(*(m_mockObserver.get()), onFirmwareVersionAccepted(_)) + .Times(1) + .WillOnce(InvokeWithoutArgs([&versionAcceptedPromise]() { versionAcceptedPromise.set_value(); })); + + int callCount = 0; + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(3) + .WillRepeatedly(Invoke([&callCount](std::shared_ptr request) { + request->sendCompleted( + ++callCount == 3 ? MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT + : MessageRequestObserverInterface::Status::SERVER_INTERNAL_ERROR_V2); + })); + + EXPECT_CALL(*(m_mockExceptionEncounteredSender.get()), sendExceptionEncountered(_, _, _)).Times(0); + + auto softwareInfoSender = SoftwareInfoSender::create( + 1, true, m_mockObserver, m_mockConnection, m_mockMessageSender, m_mockExceptionEncounteredSender); + ASSERT_TRUE(softwareInfoSender); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::PENDING, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::CONNECTED, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + auto versionAcceptedFuture = versionAcceptedPromise.get_future(); + ASSERT_NE(versionAcceptedFuture.wait_for(TWO_RETRIES_TIMEOUT), std::future_status::timeout); + + softwareInfoSender->shutdown(); +} + +/** + * Verify that attempting to set an invalid firmware version fails. + */ +TEST_F(SoftwareInfoSenderTest, setInvalidFirmwareVersion) { + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)).Times(0); + EXPECT_CALL(*(m_mockExceptionEncounteredSender.get()), sendExceptionEncountered(_, _, _)).Times(0); + + auto softwareInfoSender = SoftwareInfoSender::create( + FIRST_FIRMWARE_VERSION, + false, + m_mockObserver, + m_mockConnection, + m_mockMessageSender, + m_mockExceptionEncounteredSender); + ASSERT_TRUE(softwareInfoSender); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::PENDING, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::CONNECTED, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + ASSERT_FALSE(softwareInfoSender->setFirmwareVersion(INVALID_FIRMWARE_VERSION)); + + softwareInfoSender->shutdown(); +} + +/** + * Verify that handling a @c ReportSoftwareInfo directive cancels incomplete handling of any previous + * ReportSoftwareInfo directive. + */ +TEST_F(SoftwareInfoSenderTest, setFirmwareVersionCancellsPreviousSetting) { + // This status causes the first send request to retry, until set to something else. + std::atomic status( + MessageRequestObserverInterface::Status::SERVER_INTERNAL_ERROR_V2); + + std::promise versionAcceptedPromise; + EXPECT_CALL(*(m_mockObserver.get()), onFirmwareVersionAccepted(THIRD_FIRMWARE_VERSION)) + .Times(1) + .WillOnce(InvokeWithoutArgs([&versionAcceptedPromise]() { versionAcceptedPromise.set_value(); })); + + EXPECT_CALL(*(m_mockMessageSender.get()), sendMessage(_)) + .Times(2) + .WillRepeatedly(Invoke([&status](std::shared_ptr request) { + std::this_thread::sleep_for(EXPECTED_TIMEOUT); + request->sendCompleted(status); + })); + + EXPECT_CALL(*(m_mockExceptionEncounteredSender.get()), sendExceptionEncountered(_, _, _)).Times(0); + + auto softwareInfoSender = SoftwareInfoSender::create( + FIRST_FIRMWARE_VERSION, + false, + m_mockObserver, + m_mockConnection, + m_mockMessageSender, + m_mockExceptionEncounteredSender); + ASSERT_TRUE(softwareInfoSender); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::PENDING, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + m_mockConnection->updateConnectionStatus( + ConnectionStatusObserverInterface::Status::CONNECTED, + ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); + + softwareInfoSender->setFirmwareVersion(SECOND_FIRMWARE_VERSION); + + status = MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT; + + softwareInfoSender->setFirmwareVersion(THIRD_FIRMWARE_VERSION); + + // Sleep long enough for more than 2 sendMessage() calls to pile up. + // Yes, it is weak to use a sleep to coordinate the timing of calls. In + // this case we are allowing time for calls that we do NOT expect to + // happen (note the EXPECT_CALL Time(2) above). So, there is no + // trigger we can use to know when to stop waiting. If the timing + // is not correct, this test will NOT generate false failures. + std::this_thread::sleep_for(4 * EXPECTED_TIMEOUT); + + auto versionAcceptedFuture = versionAcceptedPromise.get_future(); + ASSERT_NE(versionAcceptedFuture.wait_for(UNEXPECTED_TIMEOUT), std::future_status::timeout); + + softwareInfoSender->shutdown(); +} + +} // namespace test +} // namespace system +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/System/test/StateSynchronizerTest.cpp b/CapabilityAgents/System/test/StateSynchronizerTest.cpp deleted file mode 100644 index f892fd2fd5..0000000000 --- a/CapabilityAgents/System/test/StateSynchronizerTest.cpp +++ /dev/null @@ -1,188 +0,0 @@ -/* - * StateSynchronizerTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0/ - * - * or in the "license" file accompanying this file. This file 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. - */ - -/// @file StateSynchronizerTest - -#include -#include - -#include -#include -#include -#include -#include - -#include "System/StateSynchronizer.h" - -using namespace testing; - -namespace alexaClientSDK { -namespace capabilityAgents { -namespace system { -namespace test { - -using namespace avsCommon::sdkInterfaces::test; -using namespace avsCommon::sdkInterfaces; -using namespace avsCommon::avs; -using namespace avsCommon::utils::json; - -static const std::string MOCK_CONTEXT = "{" - "\"context\":[{" - "\"header\":{" - "\"name\":\"SpeechState\"," - "\"namespace\":\"SpeechSynthesizer\"" - "}," - "\"payload\":{" - "\"playerActivity\":\"FINISHED\"," - "\"offsetInMilliseconds\":0," - "\"token\":\"\"" - "}" - "}]}"; - -/** - * Check if message request has errors. - * - * @param messageRequest The message requests to be checked. - * @return @c true if parsing the JSON has no errors and the payload is empty, otherwise @c false. - */ -static bool checkMessageRequest(std::shared_ptr messageRequest) { - rapidjson::Document jsonContent(rapidjson::kObjectType); - if (jsonContent.Parse(messageRequest->getJsonContent()).HasParseError()) { - return false; - } - rapidjson::Value::ConstMemberIterator eventNode; - if (!jsonUtils::findNode(jsonContent, "event", &eventNode)) { - return false; - } - rapidjson::Value::ConstMemberIterator payloadNode; - if (!jsonUtils::findNode(eventNode->value, "payload", &payloadNode)) { - return false; - } - // The payload should be an empty JSON Object. - return payloadNode->value.ObjectEmpty(); -} - -class TestMessageSender : public MessageSenderInterface { - void sendMessage(std::shared_ptr messageRequest) { - EXPECT_TRUE(checkMessageRequest(messageRequest)); - messageRequest->onSendCompleted(MessageRequest::Status::SUCCESS); - } -}; - -/// Test harness for @c StateSynchronizer class. -class StateSynchronizerTest : public ::testing::Test { -public: - /// Set up the test harness for running a test. - void SetUp() override; - -protected: - /// Mocked Context Manager. Note that we make it a strict mock to ensure we test the flow completely. - std::shared_ptr> m_mockContextManager; - /// Mocked Message Sender. Note that we make it a strict mock to ensure we test the flow completely. - std::shared_ptr m_mockMessageSender; - /// Mocked State Synchronizer Observer. Note that we make it a strict mock to ensure we test the flow completely. - std::shared_ptr> m_mockStateSynchronizerObserver; -}; - -void StateSynchronizerTest::SetUp() { - m_mockContextManager = std::make_shared>(); - m_mockMessageSender = std::make_shared(); - m_mockStateSynchronizerObserver = std::make_shared>(); -} - -/** - * This case tests if @c StateSynchronizer basic create function works properly - */ -TEST_F(StateSynchronizerTest, createSuccessfully) { - ASSERT_NE(nullptr, StateSynchronizer::create(m_mockContextManager, m_mockMessageSender)); -} - -/** - * This case tests if possible @c nullptr parameters passed to @c StateSynchronizer::create are handled properly. - */ -TEST_F(StateSynchronizerTest, createWithError) { - ASSERT_EQ(nullptr, StateSynchronizer::create(m_mockContextManager, nullptr)); - ASSERT_EQ(nullptr, StateSynchronizer::create(nullptr, m_mockMessageSender)); - ASSERT_EQ(nullptr, StateSynchronizer::create(nullptr, nullptr)); -} - -/** - * This case tests if @c onConnectionStatusChanged triggers @c getContext when connected. - */ -TEST_F(StateSynchronizerTest, connectedTriggersGetContext) { - auto stateSynchronizer = StateSynchronizer::create(m_mockContextManager, m_mockMessageSender); - ASSERT_NE(nullptr, stateSynchronizer); - - EXPECT_CALL(*m_mockContextManager, getContext(NotNull())); - stateSynchronizer->onConnectionStatusChanged( - ConnectionStatusObserverInterface::Status::CONNECTED, - ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); - -} - -/** - * This case tests if @c onConnectionStatusChanged does not trigger @c getContext when disconnected. - */ -TEST_F(StateSynchronizerTest, noConnectedTriggersNothing) { - auto strictMockMessageSender = std::make_shared>(); - auto strictMockContextManager = std::make_shared>(); - auto stateSynchronizer = StateSynchronizer::create(strictMockContextManager, strictMockMessageSender); - ASSERT_NE(nullptr, stateSynchronizer); - - stateSynchronizer->onConnectionStatusChanged( - ConnectionStatusObserverInterface::Status::DISCONNECTED, - ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); -} - -/** - * This case tests if @c onContextReceived sends a message request to the message sender interface. - */ -TEST_F(StateSynchronizerTest, contextReceivedSendsMessage) { - auto strictMockContextManager = std::make_shared>(); - auto stateSynchronizer = StateSynchronizer::create(strictMockContextManager, m_mockMessageSender); - ASSERT_NE(nullptr, stateSynchronizer); - - stateSynchronizer->onContextAvailable(MOCK_CONTEXT); -} - -/** - * This case tests if @c onContextReceived sends a message request to the message sender interface. - */ -TEST_F(StateSynchronizerTest, contextReceivedSendsMessageAndNotifiesObserver) { - auto stateSynchronizer = StateSynchronizer::create(m_mockContextManager, m_mockMessageSender); - ASSERT_NE(nullptr, stateSynchronizer); - - EXPECT_CALL( - *m_mockStateSynchronizerObserver, - onStateChanged(StateSynchronizerObserverInterface::State::NOT_SYNCHRONIZED)).Times(1); - stateSynchronizer->addObserver(m_mockStateSynchronizerObserver); - - EXPECT_CALL(*m_mockContextManager, getContext(NotNull())); - stateSynchronizer->onConnectionStatusChanged( - ConnectionStatusObserverInterface::Status::CONNECTED, - ConnectionStatusObserverInterface::ChangedReason::ACL_CLIENT_REQUEST); - - EXPECT_CALL( - *m_mockStateSynchronizerObserver, - onStateChanged(StateSynchronizerObserverInterface::State::SYNCHRONIZED)).Times(1); - stateSynchronizer->onContextAvailable(MOCK_CONTEXT); -} - -} // namespace test -} // namespace system -} // namespace capabilityAgents -} // namespace alexaClientSDK diff --git a/CapabilityAgents/System/test/UserInactivityMonitorTest.cpp b/CapabilityAgents/System/test/UserInactivityMonitorTest.cpp index d8f6396cde..6b3410b4b7 100644 --- a/CapabilityAgents/System/test/UserInactivityMonitorTest.cpp +++ b/CapabilityAgents/System/test/UserInactivityMonitorTest.cpp @@ -1,7 +1,5 @@ /* - * UserInactivityMonitorTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -125,12 +123,10 @@ TEST_F(UserInactivityMonitorTest, createSuccessfully) { EXPECT_CALL(*m_mockMessageSender, sendMessage(ResultOf(&checkMessageRequestAndReleaseTrigger, Eq(true)))); auto userInactivityMonitor = UserInactivityMonitor::create( - m_mockMessageSender, - m_mockExceptionEncounteredSender, - USER_INACTIVITY_REPORT_PERIOD); + m_mockMessageSender, m_mockExceptionEncounteredSender, USER_INACTIVITY_REPORT_PERIOD); ASSERT_NE(nullptr, userInactivityMonitor); - exitTrigger.wait_for(exitLock, USER_INACTIVITY_REPORT_PERIOD + USER_INACTIVITY_REPORT_PERIOD/2); + exitTrigger.wait_for(exitLock, USER_INACTIVITY_REPORT_PERIOD + USER_INACTIVITY_REPORT_PERIOD / 2); } /** @@ -151,28 +147,20 @@ TEST_F(UserInactivityMonitorTest, handleDirectiveProperly) { EXPECT_CALL(*m_mockMessageSender, sendMessage(ResultOf(&checkMessageRequestAndReleaseTrigger, Eq(true)))); auto userInactivityMonitor = UserInactivityMonitor::create( - m_mockMessageSender, - m_mockExceptionEncounteredSender, - USER_INACTIVITY_REPORT_PERIOD); + m_mockMessageSender, m_mockExceptionEncounteredSender, USER_INACTIVITY_REPORT_PERIOD); ASSERT_NE(nullptr, userInactivityMonitor); auto directiveSequencer = adsl::DirectiveSequencer::create(m_mockExceptionEncounteredSender); directiveSequencer->addDirectiveHandler(userInactivityMonitor); auto userInactivityDirectiveHeader = std::make_shared( - USER_INACTIVITY_RESET_NAMESPACE, - USER_INACTIVITY_RESET_NAME, - USER_INACTIVITY_MESSAGE_ID); + USER_INACTIVITY_RESET_NAMESPACE, USER_INACTIVITY_RESET_NAME, USER_INACTIVITY_MESSAGE_ID); auto attachmentManager = std::make_shared>(); - std::shared_ptr userInactivityDirective = AVSDirective::create( - "", - userInactivityDirectiveHeader, - "", - attachmentManager, - ""); + std::shared_ptr userInactivityDirective = + AVSDirective::create("", userInactivityDirectiveHeader, "", attachmentManager, ""); directiveSequencer->onDirective(userInactivityDirective); - exitTrigger.wait_for(exitLock, USER_INACTIVITY_REPORT_PERIOD + USER_INACTIVITY_REPORT_PERIOD/2); + exitTrigger.wait_for(exitLock, USER_INACTIVITY_REPORT_PERIOD + USER_INACTIVITY_REPORT_PERIOD / 2); directiveSequencer->shutdown(); } @@ -184,17 +172,13 @@ TEST_F(UserInactivityMonitorTest, sendMultipleReports) { std::mutex exitMutex; std::unique_lock exitLock(exitMutex); int repetitionCount = 3; - EXPECT_CALL(*m_mockMessageSender, sendMessage(ResultOf(&checkMessageRequest, Eq(true)))) - .Times(repetitionCount - 1); - EXPECT_CALL(*m_mockMessageSender, sendMessage(ResultOf(&checkMessageRequestAndReleaseTrigger, Eq(true)))) - .Times(1); + EXPECT_CALL(*m_mockMessageSender, sendMessage(ResultOf(&checkMessageRequest, Eq(true)))).Times(repetitionCount - 1); + EXPECT_CALL(*m_mockMessageSender, sendMessage(ResultOf(&checkMessageRequestAndReleaseTrigger, Eq(true)))).Times(1); auto userInactivityMonitor = UserInactivityMonitor::create( - m_mockMessageSender, - m_mockExceptionEncounteredSender, - USER_INACTIVITY_REPORT_PERIOD); + m_mockMessageSender, m_mockExceptionEncounteredSender, USER_INACTIVITY_REPORT_PERIOD); ASSERT_NE(nullptr, userInactivityMonitor); - exitTrigger.wait_for(exitLock, repetitionCount * USER_INACTIVITY_REPORT_PERIOD + USER_INACTIVITY_REPORT_PERIOD/2); + exitTrigger.wait_for(exitLock, repetitionCount * USER_INACTIVITY_REPORT_PERIOD + USER_INACTIVITY_REPORT_PERIOD / 2); } /** @@ -206,39 +190,30 @@ TEST_F(UserInactivityMonitorTest, sendMultipleReportsWithReset) { std::unique_lock exitLock(exitMutex); int repetitionCount = 5; EXPECT_CALL(*m_mockMessageSender, sendMessage(ResultOf(&checkMessageRequest, Eq(true)))) - .Times(AtLeast(repetitionCount- 1)); - EXPECT_CALL(*m_mockMessageSender, sendMessage(ResultOf(&checkMessageRequestAndReleaseTrigger, Eq(true)))) - .Times(1); + .Times(AtLeast(repetitionCount - 1)); + EXPECT_CALL(*m_mockMessageSender, sendMessage(ResultOf(&checkMessageRequestAndReleaseTrigger, Eq(true)))).Times(1); auto userInactivityMonitor = UserInactivityMonitor::create( - m_mockMessageSender, - m_mockExceptionEncounteredSender, - USER_INACTIVITY_REPORT_PERIOD); + m_mockMessageSender, m_mockExceptionEncounteredSender, USER_INACTIVITY_REPORT_PERIOD); ASSERT_NE(nullptr, userInactivityMonitor); auto directiveSequencer = adsl::DirectiveSequencer::create(m_mockExceptionEncounteredSender); directiveSequencer->addDirectiveHandler(userInactivityMonitor); auto userInactivityDirectiveHeader = std::make_shared( - USER_INACTIVITY_RESET_NAMESPACE, - USER_INACTIVITY_RESET_NAME, - USER_INACTIVITY_MESSAGE_ID); + USER_INACTIVITY_RESET_NAMESPACE, USER_INACTIVITY_RESET_NAME, USER_INACTIVITY_MESSAGE_ID); auto attachmentManager = std::make_shared>(); - std::shared_ptr userInactivityDirective = AVSDirective::create( - "", - userInactivityDirectiveHeader, - "", - attachmentManager, - ""); - - std::this_thread::sleep_for(2*USER_INACTIVITY_REPORT_PERIOD + USER_INACTIVITY_REPORT_PERIOD/2); + std::shared_ptr userInactivityDirective = + AVSDirective::create("", userInactivityDirectiveHeader, "", attachmentManager, ""); + + std::this_thread::sleep_for(2 * USER_INACTIVITY_REPORT_PERIOD + USER_INACTIVITY_REPORT_PERIOD / 2); directiveSequencer->onDirective(userInactivityDirective); - exitTrigger.wait_for(exitLock, repetitionCount * USER_INACTIVITY_REPORT_PERIOD + USER_INACTIVITY_REPORT_PERIOD/2); + exitTrigger.wait_for(exitLock, repetitionCount * USER_INACTIVITY_REPORT_PERIOD + USER_INACTIVITY_REPORT_PERIOD / 2); directiveSequencer->shutdown(); } -} // namespace test -} // namespace system -} // namespace capabilityAgents -} // namespace alexaClientSDK +} // namespace test +} // namespace system +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/TemplateRuntime/CMakeLists.txt b/CapabilityAgents/TemplateRuntime/CMakeLists.txt new file mode 100644 index 0000000000..3a905e5e5a --- /dev/null +++ b/CapabilityAgents/TemplateRuntime/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) +project(TemplateRuntime LANGUAGES CXX) + +add_subdirectory("src") +acsdk_add_test_subdirectory_if_allowed() diff --git a/CapabilityAgents/TemplateRuntime/include/TemplateRuntime/TemplateRuntime.h b/CapabilityAgents/TemplateRuntime/include/TemplateRuntime/TemplateRuntime.h new file mode 100644 index 0000000000..862cdfdd7f --- /dev/null +++ b/CapabilityAgents/TemplateRuntime/include/TemplateRuntime/TemplateRuntime.h @@ -0,0 +1,377 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CAPABILITYAGENTS_TEMPLATERUNTIME_INCLUDE_TEMPLATERUNTIME_TEMPLATERUNTIME_H_ +#define ALEXA_CLIENT_SDK_CAPABILITYAGENTS_TEMPLATERUNTIME_INCLUDE_TEMPLATERUNTIME_TEMPLATERUNTIME_H_ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace templateRuntime { + +/** + * This class implements a @c CapabilityAgent that handles the AVS @c TemplateRuntime API. The + * @c TemplateRuntime CA is responsible for handling the directives with the TemplateRuntime namespace. Due + * to the fact that the @c RenderPlayerInfo directives are closely related to the @c AudioPlayer, the @c TemplateRuntime + * CA is an observer to the AudioPlayer and will be synchronizing the @c RenderPlayerInfo directives with the + * corresponding @c AudioItem being handled in the @c AudioPlayer. + * + * The @c TemplateRuntime CA is also an observer to the @c DialogUXState to determine the end of a interaction so + * that it would know when to clear a @c RenderTemplate displayCard. + * + * The clients who are interested in any TemplateRuntime directives can subscribe themselves as an observer, and the + * clients will be notified via the TemplateRuntimeObserverInterface. + */ +class TemplateRuntime + : public avsCommon::avs::CapabilityAgent + , public avsCommon::utils::RequiresShutdown + , public avsCommon::sdkInterfaces::AudioPlayerObserverInterface + , public avsCommon::sdkInterfaces::DialogUXStateObserverInterface + , public std::enable_shared_from_this { +public: + /** + * Create an instance of @c TemplateRuntime. + * + * @param audioPlayerInterface The object to use for subscribing @c TemplateRuntime as an observer of + * the @c AudioPlayer. + * @param exceptionSender The object to use for sending AVS Exception messages. + * @return @c nullptr if the inputs are not defined, else a new instance of @c TemplateRuntime. + */ + static std::shared_ptr create( + std::shared_ptr audioPlayerInterface, + std::shared_ptr focusManager, + std::shared_ptr exceptionSender); + + /** + * Destructor. + */ + virtual ~TemplateRuntime() = default; + + /// @name CapabilityAgent/DirectiveHandlerInterface Functions + /// @{ + void handleDirectiveImmediately(std::shared_ptr directive) override; + void preHandleDirective(std::shared_ptr info) override; + void handleDirective(std::shared_ptr info) override; + void cancelDirective(std::shared_ptr info) override; + avsCommon::avs::DirectiveHandlerConfiguration getConfiguration() const override; + /// @} + + /// @name ChannelObserverInterface Functions + /// @{ + void onFocusChanged(avsCommon::avs::FocusState newFocus) override; + /// @} + + /// @name AudioPlayerObserverInterface Functions + /// @{ + void onPlayerActivityChanged(avsCommon::avs::PlayerActivity state, const Context& context) override; + /// @} + + /// @name DialogUXStateObserverInterface Functions + /// @{ + void onDialogUXStateChanged( + avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState newState) override; + /// @} + + /** + * This function adds an observer to @c TemplateRuntime so that it will get notified for renderTemplateCard or + * renderPlayerInfoCard. + * + * @param observer The @c TemplateRuntimeObserverInterface + */ + void addObserver(std::shared_ptr observer); + + /** + * This function removes an observer from @c TemplateRuntime so that it will no longer be notified of + * renderTemplateCard or renderPlayerInfoCard callbacks. + * + * @param observer The @c TemplateRuntimeObserverInterface + */ + void removeObserver(std::shared_ptr observer); + + /** + * This function notifies the @c TemplateRuntime that a displayCard has been cleared from the screen. Upon getting + * this notification, the @c TemplateRuntime will release the visual channel. + */ + void displayCardCleared(); + +private: + /** + * This enum provides the state of the @c TemplateRuntime. + */ + enum class State { + /// The @c TemplateRuntime is idle. + IDLE, + + /* + * The @c TemplateRuntime has received a displayCard event is acquiring the visual channel from @c + * FocusManager. + */ + ACQUIRING, + + /* + * The @c TemplateRuntime has focus, either background or foreground, of the channel and has + * notified its observers of a displayCard. @TemplateRuntime will remain in this state until there is a + * timeout, clearCard, or focusChanged(NONE) event. + */ + DISPLAYING, + + /* + * The @c TemplateRuntime has received a timeout or a clearCard event and is releasing the + * channel and has notified its observers to clear the display. + */ + RELEASING, + + /* + * The @c TemplateRuntime has received a displayCard event during releasing of the channel and is trying to + * acquire the visual channel again. + */ + REACQUIRING + }; + + /** + * Utility structure to correspond a directive with its audioItemId. + */ + struct AudioItemPair { + /** + * Default Constructor. + */ + AudioItemPair() = default; + + /** + * Constructor. + * + * @param itemId The ID for the @c AudioItem. + * @param renderPlayerInfoDirective The @c RenderPlayerInfo directive that corresponds to the audioItemId. + */ + AudioItemPair( + std::string itemId, + std::shared_ptr renderPlayerInfoDirective) : + audioItemId{itemId}, + directive{renderPlayerInfoDirective} {}; + + /// The ID of the @c AudioItem. + std::string audioItemId; + + /// The directive corresponding to the audioItemId. + std::shared_ptr directive; + }; + + /** + * Constructor. + * + * @param audioPlayerInterface The object to use for subscribing @c TemplateRuntime as an observer of + * AudioPlayer. + * @param exceptionSender The object to use for sending AVS Exception messages. + */ + TemplateRuntime( + std::shared_ptr audioPlayerInterface, + std::shared_ptr focusManager, + std::shared_ptr exceptionSender); + + // @name RequiresShutdown Functions + /// @{ + void doShutdown() override; + /// @} + + /** + * Remove a directive from the map of message IDs to DirectiveInfo instances. + * + * @param info The @c DirectiveInfo containing the @c AVSDirective whose message ID is to be removed. + */ + void removeDirective(std::shared_ptr info); + + /** + * Send the handling completed notification and clean up the resources. + * + * @param info The @c DirectiveInfo containing the @c AVSDirective and the @c DirectiveHandlerResultInterface. + */ + void setHandlingCompleted(std::shared_ptr info); + + /** + * This function handles a @c RenderTemplate directive. + * + * @param info The @c DirectiveInfo containing the @c AVSDirective and the @c DirectiveHandlerResultInterface. + */ + void handleRenderTemplateDirective(std::shared_ptr info); + + /** + * This function handles a @c RenderPlayerInfo directive. + * + * @param info The @c DirectiveInfo containing the @c AVSDirective and the @c DirectiveHandlerResultInterface. + */ + void handleRenderPlayerInfoDirective(std::shared_ptr info); + + /** + * This function handles any unknown directives received by @c TemplateRuntime CA. + * + * @param info The @c DirectiveInfo containing the @c AVSDirective and the @c DirectiveHandlerResultInterface. + */ + void handleUnknownDirective(std::shared_ptr info); + + /** + * This is an internal function that handles updating the @c m_audioItemInExecution when the @c AudioPlayer + * notifies the @c TemplateRuntime CA of any changes in the @c AudioPlayer audio state. This function is + * intended to be used in the context of @c m_executor worker thread. + * + * @param state The @c PlayerActivity of the @c AudioPlayer. + * @param context The @c Context of the @c AudioPlayer at the time of the notification. + */ + void executeAudioPlayerInfoUpdates(avsCommon::avs::PlayerActivity state, const Context& context); + + /** + * This is an internal function that start or stop the @c m_clearDisplayTimer based on the @c PlayerActivity + * reported by the @c AudioPlayer. + * + * @param state The @c PlayerActivity of the @c AudioPlayer. + */ + void executeAudioPlayerStartTimer(avsCommon::avs::PlayerActivity state); + + /** + * This function handles the notification of the renderPlayerInfoCard callbacks to all the observers. This function + * is intended to be used in the context of @c m_executor worker thread. + */ + void executeRenderPlayerInfoCallbacks(bool isClearCard); + + /** + * This function handles the notification of the renderTemplateCard callbacks to all the observers. This function + * is intended to be used in the context of @c m_executor worker thread. + */ + void executeRenderTemplateCallbacks(bool isClearCard); + + /** + * This is an internal function that is called when the state machine is ready to notify the @TemplateRuntime + * observers to display a card. + */ + void executeDisplayCard(); + + /** + * This is an internal function that is called when the state machine is ready to notify the @TemplateRuntime + * observers to clear a card. + */ + void executeClearCard(); + + /** + * This is an internal function to start the @c m_clearDisplayTimer. + * + * @param timeout The period of the timer. + */ + void executeStartTimer(std::chrono::milliseconds timeout); + + /** + * This is an internal function to stop the @c m_clearDisplayTimer. + */ + void executeStopTimer(); + + /** + * This is an internal function to convert the @c State to a string. + */ + std::string stateToString(const TemplateRuntime::State state); + + /** + * This is a state machine function to handle the timer event. + */ + void executeTimerEvent(); + + /** + * This is a state machine function to handle the focus change event. + */ + void executeOnFocusChangedEvent(avsCommon::avs::FocusState newFocus); + + /** + * This is a state machine function to handle the displayCard event. + */ + void executeDisplayCardEvent( + const std::shared_ptr info); + + /** + * This is a state machine function to handle the clearCard event. + */ + void executeCardClearedEvent(); + + /// Timer that is responsible for clearing the display. + avsCommon::utils::timing::Timer m_clearDisplayTimer; + + /** + * @name Executor Thread Variables + * + * These member variables are only accessed by functions in the @c m_executor worker thread, and do not require any + * synchronization. + */ + /// @{ + /// A set of observers to be notified when a @c RenderTemplate or @c RenderPlayerInfo directive is received + std::unordered_set> m_observers; + + /* + * This is used to store the current executing @c AudioItem based on the callbacks from the + * AudioPlayerObserverInterface. + */ + AudioItemPair m_audioItemInExecution; + + /* + * This queue is for storing the @c RenderPlayerInfo directives when its audioItemId does not match the audioItemId + * in execution in the @c AudioPlayer. + */ + std::queue m_audioItems; + + /// This is to store the @c AudioPlayerInfo to be passed to the observers in the renderPlayerInfoCard callback. + avsCommon::sdkInterfaces::TemplateRuntimeObserverInterface::AudioPlayerInfo m_audioPlayerInfo; + + /// The directive corresponding to the RenderTemplate directive. + std::shared_ptr m_lastDisplayedDirective; + + /// A flag to check if @c RenderTemplate is the last directive received. + bool m_isRenderTemplateLastReceived; + + /// The current focus state of the @c TemplateRuntime on the visual channel. + avsCommon::avs::FocusState m_focus; + + /// The state of the @c TemplateRuntime state machine. + State m_state; + /// @} + + /* + * This is an interface to the @c AudioPlayer. The @c TemplateRuntime CA used this interface to add and remove + * itself as an observer to the @c AudioPlayer. The interface is also used to query the latest offset of the audio + * playback in the @c AudioPlayer. + */ + std::shared_ptr m_audioPlayerInterface; + + /// The @c FocusManager used to manage usage of the visual channel. + std::shared_ptr m_focusManager; + + /// This is the worker thread for the @c TemplateRuntime CA. + avsCommon::utils::threading::Executor m_executor; +}; + +} // namespace templateRuntime +} // namespace capabilityAgents +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CAPABILITYAGENTS_TEMPLATERUNTIME_INCLUDE_TEMPLATERUNTIME_TEMPLATERUNTIME_H_ diff --git a/CapabilityAgents/TemplateRuntime/src/CMakeLists.txt b/CapabilityAgents/TemplateRuntime/src/CMakeLists.txt new file mode 100644 index 0000000000..d26bbb119c --- /dev/null +++ b/CapabilityAgents/TemplateRuntime/src/CMakeLists.txt @@ -0,0 +1,12 @@ +add_definitions("-DACSDK_LOG_MODULE=templateRuntime") + +add_library(TemplateRuntime SHARED + "${CMAKE_CURRENT_LIST_DIR}/TemplateRuntime.cpp") + +target_include_directories(TemplateRuntime + PUBLIC "${TemplateRuntime_SOURCE_DIR}/include") + +target_link_libraries(TemplateRuntime AVSCommon) + +# install target +asdk_install() \ No newline at end of file diff --git a/CapabilityAgents/TemplateRuntime/src/TemplateRuntime.cpp b/CapabilityAgents/TemplateRuntime/src/TemplateRuntime.cpp new file mode 100644 index 0000000000..1928baec1c --- /dev/null +++ b/CapabilityAgents/TemplateRuntime/src/TemplateRuntime.cpp @@ -0,0 +1,665 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include + +#include +#include + +#include "TemplateRuntime/TemplateRuntime.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace templateRuntime { + +using namespace avsCommon::avs; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::utils; +using namespace avsCommon::utils::json; + +/// String to identify log entries originating from this file. +static const std::string TAG{"TemplateRuntime"}; + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/// The name of the @c FocusManager channel used by @c TemplateRuntime. +static const std::string CHANNEL_NAME = avsCommon::sdkInterfaces::FocusManagerInterface::VISUAL_CHANNEL_NAME; + +/// The namespace for this capability agent. +static const std::string NAMESPACE{"TemplateRuntime"}; + +/// The name for RenderTemplate directive. +static const std::string RENDER_TEMPLATE{"RenderTemplate"}; + +/// The name for RenderPlayerInfo directive. +static const std::string RENDER_PLAYER_INFO{"RenderPlayerInfo"}; + +/// The RenderTemplate directive signature. +static const NamespaceAndName TEMPLATE{NAMESPACE, RENDER_TEMPLATE}; + +/// The RenderPlayerInfo directive signature. +static const NamespaceAndName PLAYER_INFO{NAMESPACE, RENDER_PLAYER_INFO}; + +/// Tag for find the AudioItemId in the payload of the RenderPlayerInfo directive +static const std::string AUDIO_ITEM_ID_TAG{"audioItemId"}; + +/// Maximum queue size allowed for m_audioItems. +static const size_t MAXIMUM_QUEUE_SIZE{100}; + +/// Timeout for clearing the RenderTemplate display card when SpeechSynthesizer is in FINISHED state. +static const std::chrono::milliseconds TTS_FINISHED_TIMEOUT_MS{2000}; + +/// Timeout for clearing the RenderPlayerInfo display card when AudioPlayer is in FINISHED state. +static const std::chrono::milliseconds AUDIO_FINISHED_TIMEOUT_MS{2000}; + +/// Timeout for clearing the RenderPlayerInfo display card when AudioPlayer is in STOPPED/PAUSED state. +static const std::chrono::milliseconds AUDIO_STOPPED_PAUSED_TIMEOUT_MS{60000}; + +std::shared_ptr TemplateRuntime::create( + std::shared_ptr audioPlayerInterface, + std::shared_ptr focusManager, + std::shared_ptr exceptionSender) { + if (!audioPlayerInterface) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullAudioPlayerInterface")); + return nullptr; + } + + if (!focusManager) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullFocusManager")); + return nullptr; + } + + if (!exceptionSender) { + ACSDK_ERROR(LX("createFailed").d("reason", "nullExceptionSender")); + return nullptr; + } + std::shared_ptr templateRuntime( + new TemplateRuntime(audioPlayerInterface, focusManager, exceptionSender)); + audioPlayerInterface->addObserver(templateRuntime); + return templateRuntime; +} + +void TemplateRuntime::handleDirectiveImmediately(std::shared_ptr directive) { + ACSDK_DEBUG5(LX("handleDirectiveImmediately")); + preHandleDirective(std::make_shared(directive, nullptr)); +} + +void TemplateRuntime::preHandleDirective(std::shared_ptr info) { + ACSDK_DEBUG5(LX("preHandleDirective")); + if (!info || !info->directive) { + ACSDK_ERROR(LX("preHandleDirectiveFailed").d("reason", "nullDirectiveInfo")); + return; + } + if (info->directive->getName() == TEMPLATE.name) { + handleRenderTemplateDirective(info); + } else if (info->directive->getName() == PLAYER_INFO.name) { + handleRenderPlayerInfoDirective(info); + } else { + handleUnknownDirective(info); + } +} + +void TemplateRuntime::handleDirective(std::shared_ptr info) { + ACSDK_DEBUG5(LX("handleDirective")); + // Do nothing here as directives are handled in the preHandle stage. +} + +void TemplateRuntime::cancelDirective(std::shared_ptr info) { + removeDirective(info); +} + +DirectiveHandlerConfiguration TemplateRuntime::getConfiguration() const { + ACSDK_DEBUG5(LX("getConfiguration")); + DirectiveHandlerConfiguration configuration; + configuration[TEMPLATE] = BlockingPolicy::HANDLE_IMMEDIATELY; + configuration[PLAYER_INFO] = BlockingPolicy::HANDLE_IMMEDIATELY; + return configuration; +} + +void TemplateRuntime::onFocusChanged(avsCommon::avs::FocusState newFocus) { + m_executor.submit([this, newFocus]() { executeOnFocusChangedEvent(newFocus); }); +} + +void TemplateRuntime::onPlayerActivityChanged(avsCommon::avs::PlayerActivity state, const Context& context) { + ACSDK_DEBUG5(LX("onPlayerActivityChanged")); + m_executor.submit([this, state, context]() { + ACSDK_DEBUG5(LX("onPlayerActivityChangedInExecutor")); + executeAudioPlayerInfoUpdates(state, context); + }); +} + +void TemplateRuntime::onDialogUXStateChanged( + avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState newState) { + ACSDK_DEBUG5(LX("onDialogUXStateChanged").d("state", newState)); + m_executor.submit([this, newState]() { + if (avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState::IDLE == newState && + TemplateRuntime::State::DISPLAYING == m_state) { + if (m_lastDisplayedDirective && m_lastDisplayedDirective->directive->getName() == RENDER_TEMPLATE) { + executeStartTimer(TTS_FINISHED_TIMEOUT_MS); + } + } + }); +} + +void TemplateRuntime::addObserver( + std::shared_ptr observer) { + ACSDK_DEBUG5(LX("addObserver")); + if (!observer) { + ACSDK_ERROR(LX("addObserver").m("Observer is null.")); + return; + } + m_executor.submit([this, observer]() { + ACSDK_DEBUG5(LX("addObserverInExecutor")); + if (!m_observers.insert(observer).second) { + ACSDK_ERROR(LX("addObserverInExecutor").m("Duplicate observer.")); + } + }); +} + +void TemplateRuntime::removeObserver( + std::shared_ptr observer) { + ACSDK_DEBUG5(LX("removeObserver")); + if (!observer) { + ACSDK_ERROR(LX("removeObserver").m("Observer is null.")); + return; + } + m_executor.submit([this, observer]() { + ACSDK_DEBUG5(LX("removeObserverInExecutor")); + if (m_observers.erase(observer) == 0) { + ACSDK_WARN(LX("removeObserverInExecutor").m("Nonexistent observer.")); + } + }); +} + +TemplateRuntime::TemplateRuntime( + std::shared_ptr audioPlayerInterface, + std::shared_ptr focusManager, + std::shared_ptr exceptionSender) : + CapabilityAgent{NAMESPACE, exceptionSender}, + RequiresShutdown{"TemplateRuntime"}, + m_isRenderTemplateLastReceived{false}, + m_focus{FocusState::NONE}, + m_state{TemplateRuntime::State::IDLE}, + m_audioPlayerInterface{audioPlayerInterface}, + m_focusManager{focusManager} { +} + +void TemplateRuntime::doShutdown() { + m_executor.shutdown(); + m_focusManager.reset(); + m_observers.clear(); + m_audioPlayerInterface->removeObserver(shared_from_this()); + m_audioPlayerInterface.reset(); +} + +void TemplateRuntime::removeDirective(std::shared_ptr info) { + /* + * Check result too, to catch cases where DirectiveInfo was created locally, without a nullptr result. + * In those cases there is no messageId to remove because no result was expected. + */ + if (info->directive && info->result) { + CapabilityAgent::removeDirective(info->directive->getMessageId()); + } +} + +void TemplateRuntime::displayCardCleared() { + m_executor.submit([this]() { executeCardClearedEvent(); }); +} + +void TemplateRuntime::setHandlingCompleted(std::shared_ptr info) { + if (info && info->result) { + info->result->setCompleted(); + } + removeDirective(info); +} + +void TemplateRuntime::handleRenderTemplateDirective(std::shared_ptr info) { + ACSDK_DEBUG5(LX("handleRenderTemplateDirective")); + + m_executor.submit([this, info]() { + ACSDK_DEBUG5(LX("handleRenderTemplateDirectiveInExecutor")); + m_isRenderTemplateLastReceived = true; + executeDisplayCardEvent(info); + setHandlingCompleted(info); + }); +} + +void TemplateRuntime::handleRenderPlayerInfoDirective(std::shared_ptr info) { + ACSDK_DEBUG5(LX("handleRenderPlayerInfoDirective")); + + m_executor.submit([this, info]() { + ACSDK_DEBUG5(LX("handleRenderPlayerInfoDirectiveInExecutor")); + m_isRenderTemplateLastReceived = false; + + rapidjson::Document payload; + rapidjson::ParseResult result = payload.Parse(info->directive->getPayload()); + if (!result) { + ACSDK_ERROR(LX("handleRenderPlayerInfoDirectiveInExecutorParseFailed") + .d("reason", rapidjson::GetParseError_En(result.Code())) + .d("offset", result.Offset()) + .d("messageId", info->directive->getMessageId())); + sendExceptionEncounteredAndReportFailed( + info, "Unable to parse payload", ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED); + return; + } + + std::string audioItemId; + if (!jsonUtils::retrieveValue(payload, AUDIO_ITEM_ID_TAG, &audioItemId)) { + ACSDK_ERROR(LX("handleRenderPlayerInfoDirective") + .d("reason", "missingAudioItemId") + .d("messageId", info->directive->getMessageId())); + sendExceptionEncounteredAndReportFailed(info, "missing audioItemId"); + return; + } + + if (m_audioItemInExecution.audioItemId != audioItemId) { + ACSDK_DEBUG3(LX("handleRenderPlayerInfoDirectiveInExecutor") + .d("audioItemId", audioItemId) + .m("Not matching audioItemId in execution.")); + AudioItemPair itemPair{audioItemId, info}; + if (m_audioItems.size() == MAXIMUM_QUEUE_SIZE) { + // Something is wrong, so we pop the front of the queue and log an error. + auto discardedAudioItem = m_audioItems.front(); + m_audioItems.pop(); + ACSDK_ERROR(LX("handleRenderPlayerInfoDirective") + .d("reason", "queueIsFull") + .d("discardedAudioItemId", discardedAudioItem.audioItemId)); + } + m_audioItems.push(itemPair); + } else { + ACSDK_DEBUG3(LX("handleRenderPlayerInfoDirectiveInExecutor") + .d("audioItemId", audioItemId) + .m("Matching audioItemId in execution.")); + m_audioItemInExecution.directive = info; + m_audioPlayerInfo.offset = m_audioPlayerInterface->getAudioItemOffset(); + executeStopTimer(); + executeDisplayCardEvent(info); + } + setHandlingCompleted(info); + }); +} + +void TemplateRuntime::handleUnknownDirective(std::shared_ptr info) { + ACSDK_ERROR(LX("handleDirectiveFailed") + .d("reason", "unknownDirective") + .d("namespace", info->directive->getNamespace()) + .d("name", info->directive->getName())); + + m_executor.submit([this, info] { + const std::string exceptionMessage = + "unexpected directive " + info->directive->getNamespace() + ":" + info->directive->getName(); + + sendExceptionEncounteredAndReportFailed( + info, exceptionMessage, ExceptionErrorType::UNEXPECTED_INFORMATION_RECEIVED); + }); +} + +void TemplateRuntime::executeAudioPlayerInfoUpdates(avsCommon::avs::PlayerActivity state, const Context& context) { + ACSDK_DEBUG5(LX("executeAudioPlayerInfoUpdates") + .d("audioItemId", context.audioItemId) + .d("offset", context.offset.count()) + .d("audioPlayerState", state) + .d("isRenderTemplatelastReceived", m_isRenderTemplateLastReceived)); + + if (avsCommon::avs::PlayerActivity::IDLE == state || avsCommon::avs::PlayerActivity::BUFFER_UNDERRUN == state) { + /* + * The TemplateRuntime Capability Agent is not interested in the IDLE nor BUFFER_UNDERRUN state, so we just + * ignore the callback. + */ + return; + } + + if (m_audioPlayerInfo.audioPlayerState == state && m_audioItemInExecution.audioItemId == context.audioItemId) { + /* + * The AudioPlayer notification is chatty during audio playback as it will frequently toggle between + * BUFFER_UNDERRUN and PLAYER state. So we filter out the callbacks if the notification are with the + * same state and audioItemId. + */ + return; + } + + auto isStateUpdated = (m_audioPlayerInfo.audioPlayerState != state); + m_audioPlayerInfo.audioPlayerState = state; + m_audioPlayerInfo.offset = context.offset; + if (m_audioItemInExecution.audioItemId != context.audioItemId) { + m_audioItemInExecution.audioItemId = context.audioItemId; + m_audioItemInExecution.directive.reset(); + while (!m_audioItems.empty()) { + auto audioItem = m_audioItems.front(); + m_audioItems.pop(); + if (audioItem.audioItemId == context.audioItemId) { + ACSDK_DEBUG3(LX("executeAudioPlayerInfoUpdates") + .d("audioItemId", context.audioItemId) + .m("Found matching audioItemId in queue.")); + m_audioItemInExecution.directive = audioItem.directive; + break; + } else { + ACSDK_DEBUG3(LX("executeAudioPlayerInfoUpdates") + .d("audioItemId", audioItem.audioItemId) + .m("Dropping out-dated audioItemId in queue.")); + } + } + } + if (m_isRenderTemplateLastReceived && state != avsCommon::avs::PlayerActivity::PLAYING) { + /* + * If RenderTemplate is the last directive received and the AudioPlayer is not notifying a PLAY, + * we shouldn't be notifing the observer to render a PlayerInfo display card. + */ + return; + } + m_isRenderTemplateLastReceived = false; + + /* + * If the AudioPlayer notifies a PLAYING state before the RenderPlayerInfo with the corresponding + * audioItemId is received, this function will also be called but the m_audioItemInExecution.directive + * will be set to nullptr. So we need to do a nullptr check here to make sure there is a RenderPlayerInfo + * displayCard to display.. + */ + if (m_audioItemInExecution.directive) { + if (isStateUpdated) { + executeAudioPlayerStartTimer(state); + } + executeDisplayCardEvent(m_audioItemInExecution.directive); + } +} + +void TemplateRuntime::executeAudioPlayerStartTimer(avsCommon::avs::PlayerActivity state) { + if (avsCommon::avs::PlayerActivity::PLAYING == state) { + executeStopTimer(); + } else if (avsCommon::avs::PlayerActivity::PAUSED == state || avsCommon::avs::PlayerActivity::STOPPED == state) { + executeStartTimer(AUDIO_STOPPED_PAUSED_TIMEOUT_MS); + } else if (avsCommon::avs::PlayerActivity::FINISHED == state) { + executeStartTimer(AUDIO_FINISHED_TIMEOUT_MS); + } +} + +void TemplateRuntime::executeRenderPlayerInfoCallbacks(bool isClearCard) { + ACSDK_DEBUG3(LX("executeRenderPlayerInfoCallbacks").d("isClearCard", isClearCard ? "True" : "False")); + for (auto& observer : m_observers) { + if (isClearCard) { + observer->clearPlayerInfoCard(); + } else { + observer->renderPlayerInfoCard( + m_audioItemInExecution.directive->directive->getPayload(), m_audioPlayerInfo, m_focus); + } + } +} + +void TemplateRuntime::executeRenderTemplateCallbacks(bool isClearCard) { + ACSDK_DEBUG3(LX("executeRenderTemplateCallbacks").d("isClear", isClearCard ? "True" : "False")); + for (auto& observer : m_observers) { + if (isClearCard) { + observer->clearTemplateCard(); + } else { + observer->renderTemplateCard(m_lastDisplayedDirective->directive->getPayload(), m_focus); + } + } +} + +void TemplateRuntime::executeDisplayCard() { + if (m_lastDisplayedDirective) { + if (m_lastDisplayedDirective->directive->getName() == RENDER_TEMPLATE) { + executeStopTimer(); + executeRenderTemplateCallbacks(false); + } else { + executeRenderPlayerInfoCallbacks(false); + } + } +} + +void TemplateRuntime::executeClearCard() { + if (m_lastDisplayedDirective) { + if (m_lastDisplayedDirective->directive->getName() == RENDER_TEMPLATE) { + executeRenderTemplateCallbacks(true); + } else { + executeRenderPlayerInfoCallbacks(true); + } + } +} + +void TemplateRuntime::executeStartTimer(std::chrono::milliseconds timeout) { + if (TemplateRuntime::State::DISPLAYING == m_state) { + ACSDK_DEBUG3(LX("executeStartTimer").d("timeoutInMilliseconds", timeout.count())); + m_clearDisplayTimer.start(timeout, [this] { m_executor.submit([this] { executeTimerEvent(); }); }); + } +} + +void TemplateRuntime::executeStopTimer() { + ACSDK_DEBUG3(LX("executeStopTimer")); + m_clearDisplayTimer.stop(); +} + +/* + * A state machine is used to acquire and release the visual channel from the visual @c FocusManager. The state machine + * has five @c State, and four events as listed below: + * + * displayCard - This event happens when the TempateRuntime is ready to notify its observers to display a + * displayCard. + * + * focusChanged - This event happens when the @c FocusManager notifies a change in @c FocusState in the visual + * channel. + * + * timer - This event happens when m_clearDisplayTimer expires and needs to notify its observers to clear the + * displayCard. + * + * cardCleared - This event happens when @c displayCardCleared() is called to notify @c TemplateRuntime the device has + * cleared the screen. + * + * Each state transition may result in one or more of the following actions: + * (A) Acquire channel + * (B) Release channel + * (C) Notify observers to display displayCard + * (D) Notify observers to clear displayCard + * (E) Log error about unexpected focusChanged event. + * + * Below is the state table illustrating the state transition and its action. NC means no change in state. + * + * E V E N T S + * ----------------------------------------------------------------------------------------- + * Current State | displayCard | timer | focusChanged::NONE | focusChanged::FG/BG | cardCleared + * -------------------------------------------------------------------------------------------------------- + * | IDLE | ACQUIRING(A) | NC | NC | RELEASING(B&E) | NC + * | ACQUIRING | NC | NC | IDLE(E) | DISPLAYING(C) | NC + * | DISPLAYING | NC(C) | RELEASING(B&D) | IDLE(D) | DISPLAYING(C) | RELEASING(B) + * | RELEASING | REACQUIRING | NC | IDLE | NC(B&E) | NC + * | REACQUIRING | NC | NC | ACQUIRING(A) | RELEASING(B&E) | NC + * -------------------------------------------------------------------------------------------------------- + * + */ + +std::string TemplateRuntime::stateToString(const TemplateRuntime::State state) { + switch (state) { + case TemplateRuntime::State::IDLE: + return "IDLE"; + case TemplateRuntime::State::ACQUIRING: + return "ACQUIRING"; + case TemplateRuntime::State::DISPLAYING: + return "DISPLAYING"; + case TemplateRuntime::State::RELEASING: + return "RELEASING"; + case TemplateRuntime::State::REACQUIRING: + return "REACQUIRING"; + } + return "UNKNOWN"; +} + +void TemplateRuntime::executeTimerEvent() { + State nextState = m_state; + + switch (m_state) { + case TemplateRuntime::State::DISPLAYING: + executeClearCard(); + m_focusManager->releaseChannel(CHANNEL_NAME, shared_from_this()); + nextState = TemplateRuntime::State::RELEASING; + break; + + case TemplateRuntime::State::IDLE: + case TemplateRuntime::State::ACQUIRING: + case TemplateRuntime::State::RELEASING: + case TemplateRuntime::State::REACQUIRING: + // Do Nothing. + break; + } + ACSDK_DEBUG3( + LX("executeTimerEvent").d("prevState", stateToString(m_state)).d("nextState", stateToString(nextState))); + m_state = nextState; +} + +void TemplateRuntime::executeOnFocusChangedEvent(avsCommon::avs::FocusState newFocus) { + ACSDK_DEBUG5(LX("executeOnFocusChangedEvent").d("prevFocus", m_focus).d("newFocus", newFocus)); + + bool weirdFocusState = false; + State nextState = m_state; + m_focus = newFocus; + + switch (m_state) { + case TemplateRuntime::State::IDLE: + // This is weird. We shouldn't be getting any focus updates in Idle. + switch (newFocus) { + case FocusState::FOREGROUND: + case FocusState::BACKGROUND: + weirdFocusState = true; + break; + case FocusState::NONE: + // Do nothing. + break; + } + break; + case TemplateRuntime::State::ACQUIRING: + switch (newFocus) { + case FocusState::FOREGROUND: + case FocusState::BACKGROUND: + executeDisplayCard(); + nextState = TemplateRuntime::State::DISPLAYING; + break; + case FocusState::NONE: + ACSDK_ERROR(LX("executeOnFocusChangedEvent") + .d("prevState", stateToString(m_state)) + .d("nextFocus", newFocus) + .m("Unexpected focus state event.")); + nextState = TemplateRuntime::State::IDLE; + break; + } + break; + case TemplateRuntime::State::DISPLAYING: + switch (newFocus) { + case FocusState::FOREGROUND: + case FocusState::BACKGROUND: + executeDisplayCard(); + break; + case FocusState::NONE: + executeClearCard(); + nextState = TemplateRuntime::State::IDLE; + break; + } + break; + case TemplateRuntime::State::RELEASING: + switch (newFocus) { + case FocusState::FOREGROUND: + case FocusState::BACKGROUND: + weirdFocusState = true; + break; + case FocusState::NONE: + nextState = TemplateRuntime::State::IDLE; + break; + } + break; + case TemplateRuntime::State::REACQUIRING: + switch (newFocus) { + case FocusState::FOREGROUND: + case FocusState::BACKGROUND: + weirdFocusState = true; + break; + case FocusState::NONE: + m_focusManager->acquireChannel(CHANNEL_NAME, shared_from_this(), NAMESPACE); + nextState = TemplateRuntime::State::ACQUIRING; + break; + } + break; + } + if (weirdFocusState) { + ACSDK_ERROR(LX("executeOnFocusChangedEvent") + .d("prevState", stateToString(m_state)) + .d("nextFocus", newFocus) + .m("Unexpected focus state event.")); + m_focusManager->releaseChannel(CHANNEL_NAME, shared_from_this()); + nextState = TemplateRuntime::State::RELEASING; + } + ACSDK_DEBUG3(LX("executeOnFocusChangedEvent") + .d("prevState", stateToString(m_state)) + .d("nextState", stateToString(nextState))); + m_state = nextState; +} + +void TemplateRuntime::executeDisplayCardEvent( + const std::shared_ptr info) { + State nextState = m_state; + m_lastDisplayedDirective = info; + + switch (m_state) { + case TemplateRuntime::State::IDLE: + m_focusManager->acquireChannel(CHANNEL_NAME, shared_from_this(), NAMESPACE); + nextState = TemplateRuntime::State::ACQUIRING; + break; + case TemplateRuntime::State::ACQUIRING: + // Do Nothing. + break; + case TemplateRuntime::State::DISPLAYING: + executeDisplayCard(); + nextState = TemplateRuntime::State::DISPLAYING; + break; + case TemplateRuntime::State::RELEASING: + nextState = TemplateRuntime::State::REACQUIRING; + break; + case TemplateRuntime::State::REACQUIRING: + // Do Nothing. + break; + } + ACSDK_DEBUG3( + LX("executeDisplayCardEvent").d("prevState", stateToString(m_state)).d("nextState", stateToString(nextState))); + m_state = nextState; +} + +void TemplateRuntime::executeCardClearedEvent() { + State nextState = m_state; + switch (m_state) { + case TemplateRuntime::State::IDLE: + case TemplateRuntime::State::ACQUIRING: + // Do Nothing. + break; + case TemplateRuntime::State::DISPLAYING: + m_focusManager->releaseChannel(CHANNEL_NAME, shared_from_this()); + nextState = TemplateRuntime::State::RELEASING; + break; + case TemplateRuntime::State::RELEASING: + case TemplateRuntime::State::REACQUIRING: + // Do Nothing. + break; + } + ACSDK_DEBUG3( + LX("executeCardClearedEvent").d("prevState", stateToString(m_state)).d("nextState", stateToString(nextState))); + m_state = nextState; +} + +} // namespace templateRuntime +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CapabilityAgents/TemplateRuntime/test/CMakeLists.txt b/CapabilityAgents/TemplateRuntime/test/CMakeLists.txt new file mode 100644 index 0000000000..30630ad2f4 --- /dev/null +++ b/CapabilityAgents/TemplateRuntime/test/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +set(INCLUDE_PATH + "${TemplateRuntime_INCLUDE_DIR}" + "${RAPIDJSON_INCLUDE_DIR}" + "${AVSCommon_SOURCE_DIR}/AVS/test" + "${AVSCommon_SOURCE_DIR}/SDKInterfaces/test") + +discover_unit_tests("${INCLUDE_PATH}" "TemplateRuntime") diff --git a/CapabilityAgents/TemplateRuntime/test/TemplateRuntimeTest.cpp b/CapabilityAgents/TemplateRuntime/test/TemplateRuntimeTest.cpp new file mode 100644 index 0000000000..fb3bad7eae --- /dev/null +++ b/CapabilityAgents/TemplateRuntime/test/TemplateRuntimeTest.cpp @@ -0,0 +1,747 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +/// @file TemplateRuntimeTest +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "TemplateRuntime/TemplateRuntime.h" + +namespace alexaClientSDK { +namespace capabilityAgents { +namespace templateRuntime { +namespace test { + +using namespace avsCommon::avs; +using namespace avsCommon::avs::attachment::test; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::sdkInterfaces::test; +using namespace avsCommon::utils::memory; +using namespace rapidjson; +using namespace ::testing; + +/// Timeout when waiting for futures to be set. +static std::chrono::milliseconds TIMEOUT(1000); + +/// Timeout when waiting for clearTemplateCard. +static std::chrono::milliseconds TEMPLATE_TIMEOUT(5000); + +/// Timeout when waiting for clearTemplateCard. +static std::chrono::milliseconds PLAYER_FINISHED_TIMEOUT(5000); + +/// The namespace for this capability agent. +static const std::string NAMESPACE{"TemplateRuntime"}; + +/// An unknown directive signature. +static const std::string UNKNOWN_DIRECTIVE{"Unknown"}; + +/// The RenderTemplate directive signature. +static const NamespaceAndName TEMPLATE{NAMESPACE, "RenderTemplate"}; + +/// The RenderPlayerInfo directive signature. +static const NamespaceAndName PLAYER_INFO{NAMESPACE, "RenderPlayerInfo"}; + +/// The @c MessageId identifer. +static const std::string MESSAGE_ID("messageId"); + +/// An audioItemId for the RenderPlayerInfo directive. +static const std::string AUDIO_ITEM_ID("AudioItemId abcdefgh"); + +/// An audioItemId without a corresponding RenderPlayerInfo directive. +static const std::string AUDIO_ITEM_ID_1("AudioItemId 12345678"); + +/// A RenderTemplate directive payload. +// clang-format off +static const std::string TEMPLATE_PAYLOAD = "{" + "\"token\":\"TOKEN1\"," + "\"type\":\"BodyTemplate1\"," + "\"title\":{" + "\"mainTitle\":\"MAIN_TITLE\"," + "\"subTitle\":\"SUB_TITLE\"" + "}" +"}"; +// clang-format on + +/// A RenderPlayerInfo directive payload. +// clang-format off +static const std::string PLAYERINFO_PAYLOAD = "{" + "\"audioItemId\":\"" + AUDIO_ITEM_ID + "\"," + "\"content\":{" + "\"title\":\"TITLE\"," + "\"header\":\"HEADER\"" + "}" +"}"; +// clang-format on + +/// A malformed RenderPlayerInfo directive payload. +// clang-format off +static const std::string MALFORM_PLAYERINFO_PAYLOAD = "{" + "\"audioItemId\"::::\"" + AUDIO_ITEM_ID + "\"," + "\"content\":{{{{" + "\"title\":\"TITLE\"," + "\"header\":\"HEADER\"" + "}" +"}"; +// clang-format on + +class MockAudioPlayer : public AudioPlayerInterface { +public: + MOCK_METHOD1(addObserver, void(std::shared_ptr observer)); + MOCK_METHOD1( + removeObserver, + void(std::shared_ptr observer)); + MOCK_METHOD0(getAudioItemOffset, std::chrono::milliseconds()); +}; + +class MockGui : public TemplateRuntimeObserverInterface { +public: + MOCK_METHOD2(renderTemplateCard, void(const std::string& jsonPayload, avsCommon::avs::FocusState focusState)); + MOCK_METHOD0(clearTemplateCard, void()); + MOCK_METHOD3( + renderPlayerInfoCard, + void( + const std::string& jsonPayload, + TemplateRuntimeObserverInterface::AudioPlayerInfo audioPlayerInfo, + avsCommon::avs::FocusState focusState)); + MOCK_METHOD0(clearPlayerInfoCard, void()); +}; + +/// Test harness for @c TemplateRuntime class. +class TemplateRuntimeTest : public ::testing::Test { +public: + /// Set up the test harness for running a test. + void SetUp() override; + + /// Clean up the test harness after running a test. + void TearDown() override; + + /// Function to set the promise and wake @c m_wakeSetCompleteFuture. + void wakeOnSetCompleted(); + + /// Function to set the promise and wake @c m_wakeRenderTemplateCardFuture. + void wakeOnRenderTemplateCard(); + + /// Function to set the promise and wake @c m_wakeRenderPlayerInfoCardFuture. + void wakeOnRenderPlayerInfoCard(); + + /// Function to set the promise and wake @c m_wakeClearTemplateCardFuture. + void wakeOnClearTemplateCard(); + + /// Function to set the promise and wake @c m_wakeClearPlayerInfoCardFuture. + void wakeOnClearPlayerInfoCard(); + + /// Function to set the promise and wake @c m_wakeReleaseChannelFuture. + void wakeOnReleaseChannel(); + + /// A constructor which initializes the promises and futures needed for the test class. + TemplateRuntimeTest() : + m_wakeSetCompletedPromise{}, + m_wakeSetCompletedFuture{m_wakeSetCompletedPromise.get_future()}, + m_wakeRenderTemplateCardPromise{}, + m_wakeRenderTemplateCardFuture{m_wakeRenderTemplateCardPromise.get_future()}, + m_wakeRenderPlayerInfoCardPromise{}, + m_wakeRenderPlayerInfoCardFuture{m_wakeRenderPlayerInfoCardPromise.get_future()}, + m_wakeClearTemplateCardPromise{}, + m_wakeClearTemplateCardFuture{m_wakeClearTemplateCardPromise.get_future()}, + m_wakeClearPlayerInfoCardPromise{}, + m_wakeClearPlayerInfoCardFuture{m_wakeClearPlayerInfoCardPromise.get_future()}, + m_wakeReleaseChannelPromise{}, + m_wakeReleaseChannelFuture{m_wakeReleaseChannelPromise.get_future()} { + } + +protected: + /// Promise to synchronize directive handling through setCompleted. + std::promise m_wakeSetCompletedPromise; + + /// Future to synchronize directive handling through setCompleted. + std::future m_wakeSetCompletedFuture; + + /// Promise to synchronize directive handling with RenderTemplateCard callback. + std::promise m_wakeRenderTemplateCardPromise; + + /// Future to synchronize directive handling with RenderTemplateCard callback. + std::future m_wakeRenderTemplateCardFuture; + + /// Promise to synchronize directive handling with RenderPlayerInfoCard callback. + std::promise m_wakeRenderPlayerInfoCardPromise; + + /// Future to synchronize directive handling with RenderPlayerInfoCard callback. + std::future m_wakeRenderPlayerInfoCardFuture; + + /// Promise to synchronize ClearTemplateCard callback. + std::promise m_wakeClearTemplateCardPromise; + + /// Future to synchronize ClearTemplateCard callback. + std::future m_wakeClearTemplateCardFuture; + + /// Promise to synchronize ClearPlayerInfoCard callback. + std::promise m_wakeClearPlayerInfoCardPromise; + + /// Future to synchronize ClearPlayerInfoCard callback. + std::future m_wakeClearPlayerInfoCardFuture; + + /// Promise to synchronize releaseChannel calls. + std::promise m_wakeReleaseChannelPromise; + + /// Future to synchronize releaseChannel calls. + std::future m_wakeReleaseChannelFuture; + + /// A nice mock for the AudioPlayerInterface calls. + std::shared_ptr> m_mockAudioPlayerInterface; + + /// A strict mock that allows the test to strictly monitor the exceptions being sent. + std::shared_ptr> m_mockExceptionSender; + + /// A strict mock that allows the test to strictly monitor the handling of directives. + std::unique_ptr> m_mockDirectiveHandlerResult; + + /// @c FocusManager to request focus to the Visual channel. + std::shared_ptr m_mockFocusManager; + + /// A strict mock to allow testing of the observer callback. + std::shared_ptr> m_mockGui; + + /// A pointer to an instance of the TemplateRuntime that will be instantiated per test. + std::shared_ptr m_templateRuntime; +}; + +void TemplateRuntimeTest::SetUp() { + m_mockExceptionSender = std::make_shared>(); + m_mockDirectiveHandlerResult = make_unique>(); + m_mockFocusManager = std::make_shared>(); + m_mockAudioPlayerInterface = std::make_shared>(); + m_mockGui = std::make_shared>(); + m_templateRuntime = TemplateRuntime::create(m_mockAudioPlayerInterface, m_mockFocusManager, m_mockExceptionSender); + m_templateRuntime->addObserver(m_mockGui); + + ON_CALL(*m_mockFocusManager, acquireChannel(_, _, _)).WillByDefault(InvokeWithoutArgs([this] { + m_templateRuntime->onFocusChanged(avsCommon::avs::FocusState::FOREGROUND); + return true; + })); + + ON_CALL(*m_mockFocusManager, releaseChannel(_, _)).WillByDefault(InvokeWithoutArgs([this] { + auto releaseChannelSuccess = std::make_shared>(); + std::future returnValue = releaseChannelSuccess->get_future(); + m_templateRuntime->onFocusChanged(avsCommon::avs::FocusState::NONE); + releaseChannelSuccess->set_value(true); + return returnValue; + })); +} + +void TemplateRuntimeTest::TearDown() { + if (m_templateRuntime) { + m_templateRuntime->shutdown(); + m_templateRuntime.reset(); + } +} + +void TemplateRuntimeTest::wakeOnSetCompleted() { + m_wakeSetCompletedPromise.set_value(); +} + +void TemplateRuntimeTest::wakeOnRenderTemplateCard() { + m_wakeRenderTemplateCardPromise.set_value(); +} + +void TemplateRuntimeTest::wakeOnRenderPlayerInfoCard() { + m_wakeRenderPlayerInfoCardPromise.set_value(); +} + +void TemplateRuntimeTest::wakeOnClearTemplateCard() { + m_wakeClearTemplateCardPromise.set_value(); +} + +void TemplateRuntimeTest::wakeOnClearPlayerInfoCard() { + m_wakeClearPlayerInfoCardPromise.set_value(); +} + +void TemplateRuntimeTest::wakeOnReleaseChannel() { + m_wakeReleaseChannelPromise.set_value(); +} + +/** + * Tests creating the TemplateRuntime with a null audioPlayerInterface. + */ +TEST_F(TemplateRuntimeTest, testNullAudioPlayerInterface) { + auto templateRuntime = TemplateRuntime::create(nullptr, m_mockFocusManager, m_mockExceptionSender); + ASSERT_EQ(templateRuntime, nullptr); +} + +/** + * Tests creating the TemplateRuntime with a null focusManagerInterface. + */ +TEST_F(TemplateRuntimeTest, testNullFocusManagerInterface) { + auto templateRuntime = TemplateRuntime::create(m_mockAudioPlayerInterface, nullptr, m_mockExceptionSender); + ASSERT_EQ(templateRuntime, nullptr); +} + +/** + * Tests creating the TemplateRuntime with a null exceptionSender. + */ +TEST_F(TemplateRuntimeTest, testNullExceptionSender) { + auto templateRuntime = TemplateRuntime::create(m_mockAudioPlayerInterface, m_mockFocusManager, nullptr); + ASSERT_EQ(templateRuntime, nullptr); +} + +/** + * Tests that the TemplateRuntime successfully add itself with the AudioPlayer at constructor time, and + * successfully remove itself with the AudioPlayer during shutdown. + */ +TEST_F(TemplateRuntimeTest, testAudioPlayerAddRemoveObserver) { + auto mockAudioPlayerInterface = std::make_shared>(); + auto mockExceptionSender = std::make_shared>(); + auto mockFocusManager = std::make_shared>(); + EXPECT_CALL(*mockAudioPlayerInterface, addObserver(NotNull())).Times(Exactly(1)); + EXPECT_CALL(*mockAudioPlayerInterface, removeObserver(NotNull())).Times(Exactly(1)); + auto templateRuntime = TemplateRuntime::create(mockAudioPlayerInterface, mockFocusManager, mockExceptionSender); + templateRuntime->shutdown(); +} + +/** + * Tests unknown Directive. Expect that the sendExceptionEncountered and setFailed will be called. + */ +TEST_F(TemplateRuntimeTest, testUnknownDirective) { + // Create Directive. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(NAMESPACE, UNKNOWN_DIRECTIVE, MESSAGE_ID); + std::shared_ptr directive = AVSDirective::create("", avsMessageHeader, "", attachmentManager, ""); + + EXPECT_CALL(*m_mockExceptionSender, sendExceptionEncountered(_, _, _)).Times(Exactly(1)); + EXPECT_CALL(*m_mockDirectiveHandlerResult, setFailed(_)) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnSetCompleted)); + + m_templateRuntime->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirectiveHandlerResult)); + m_wakeSetCompletedFuture.wait_for(TIMEOUT); +} + +/** + * Tests RenderTemplate Directive. Expect that the renderTemplateCard callback will be called and clearTemplateCard will + * be called after 2s after DialogUXState is changed to IDLE state. + */ +TEST_F(TemplateRuntimeTest, testRenderTemplateDirective) { + // Create Directive. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(TEMPLATE.nameSpace, TEMPLATE.name, MESSAGE_ID); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, TEMPLATE_PAYLOAD, attachmentManager, ""); + + EXPECT_CALL(*m_mockGui, renderTemplateCard(TEMPLATE_PAYLOAD, _)) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnRenderTemplateCard)); + EXPECT_CALL(*m_mockDirectiveHandlerResult, setCompleted()) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnSetCompleted)); + EXPECT_CALL(*m_mockGui, clearTemplateCard()) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnClearTemplateCard)); + + m_templateRuntime->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirectiveHandlerResult)); + m_templateRuntime->CapabilityAgent::handleDirective(MESSAGE_ID); + m_wakeSetCompletedFuture.wait_for(TIMEOUT); + m_wakeRenderTemplateCardFuture.wait_for(TIMEOUT); + m_templateRuntime->onDialogUXStateChanged( + avsCommon::sdkInterfaces::DialogUXStateObserverInterface::DialogUXState::IDLE); + m_wakeClearTemplateCardFuture.wait_for(TEMPLATE_TIMEOUT); +} + +/** + * Tests RenderTemplate Directive using the handleDirectiveImmediately. Expect that the renderTemplateCard + * callback will be called. + */ +TEST_F(TemplateRuntimeTest, testHandleDirectiveImmediately) { + // Create Directive. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(TEMPLATE.nameSpace, TEMPLATE.name, MESSAGE_ID); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, TEMPLATE_PAYLOAD, attachmentManager, ""); + + EXPECT_CALL(*m_mockGui, renderTemplateCard(TEMPLATE_PAYLOAD, _)) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnRenderTemplateCard)); + + m_templateRuntime->handleDirectiveImmediately(directive); + m_wakeRenderTemplateCardFuture.wait_for(TIMEOUT); +} + +/** + * Tests RenderTemplate Directive received before the corresponding AudioPlayer call. Expect + * that the renderTemplateCard callback will be called and clearPlayerInfoCard will be called after 2s after Audio State + * is changed to FINISHED state. + */ +TEST_F(TemplateRuntimeTest, testRenderPlayerInfoDirectiveBefore) { + // Create Directive. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(PLAYER_INFO.nameSpace, PLAYER_INFO.name, MESSAGE_ID); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PLAYERINFO_PAYLOAD, attachmentManager, ""); + + ::testing::InSequence s; + EXPECT_CALL(*m_mockDirectiveHandlerResult, setCompleted()) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnSetCompleted)); + EXPECT_CALL(*m_mockGui, renderTemplateCard(_, _)).Times(Exactly(0)); + + // do not expect renderPlayerInfo card call until AudioPlayer notify with the correct audioItemId + EXPECT_CALL(*m_mockGui, renderPlayerInfoCard(_, _, _)).Times(Exactly(0)); + + m_templateRuntime->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirectiveHandlerResult)); + m_templateRuntime->CapabilityAgent::handleDirective(MESSAGE_ID); + m_wakeSetCompletedFuture.wait_for(TIMEOUT); + + EXPECT_CALL(*m_mockGui, renderPlayerInfoCard(PLAYERINFO_PAYLOAD, _, _)) + .Times(Exactly(2)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnRenderPlayerInfoCard)) + .WillOnce(InvokeWithoutArgs([] {})); + + AudioPlayerObserverInterface::Context context; + context.audioItemId = AUDIO_ITEM_ID; + context.offset = TIMEOUT; + m_templateRuntime->onPlayerActivityChanged(avsCommon::avs::PlayerActivity::PLAYING, context); + + m_wakeRenderPlayerInfoCardFuture.wait_for(TIMEOUT); + + EXPECT_CALL(*m_mockGui, clearPlayerInfoCard()) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnClearPlayerInfoCard)); + + m_templateRuntime->onPlayerActivityChanged(avsCommon::avs::PlayerActivity::FINISHED, context); + m_wakeClearPlayerInfoCardFuture.wait_for(PLAYER_FINISHED_TIMEOUT); +} + +/** + * Tests RenderTemplate Directive received after the corresponding AudioPlayer call. Expect + * that the renderTemplateCard callback will be called. + */ +TEST_F(TemplateRuntimeTest, testRenderPlayerInfoDirectiveAfter) { + // Create Directive. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(PLAYER_INFO.nameSpace, PLAYER_INFO.name, MESSAGE_ID); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PLAYERINFO_PAYLOAD, attachmentManager, ""); + + EXPECT_CALL(*m_mockGui, renderPlayerInfoCard(PLAYERINFO_PAYLOAD, _, _)) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnRenderPlayerInfoCard)); + EXPECT_CALL(*m_mockDirectiveHandlerResult, setCompleted()) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnSetCompleted)); + + AudioPlayerObserverInterface::Context context; + context.audioItemId = AUDIO_ITEM_ID; + context.offset = TIMEOUT; + m_templateRuntime->onPlayerActivityChanged(avsCommon::avs::PlayerActivity::PLAYING, context); + m_templateRuntime->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirectiveHandlerResult)); + m_templateRuntime->CapabilityAgent::handleDirective(MESSAGE_ID); + + m_wakeRenderPlayerInfoCardFuture.wait_for(TIMEOUT); + m_wakeSetCompletedFuture.wait_for(TIMEOUT); +} + +/** + * Tests RenderTemplate Directive received without an audioItemId. Expect that the + * sendExceptionEncountered and setFailed will be called. + */ +TEST_F(TemplateRuntimeTest, testRenderPlayerInfoDirectiveWithoutAudioItemId) { + // Create Directive. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(PLAYER_INFO.nameSpace, PLAYER_INFO.name, MESSAGE_ID); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, TEMPLATE_PAYLOAD, attachmentManager, ""); + + EXPECT_CALL(*m_mockExceptionSender, sendExceptionEncountered(_, _, _)).Times(Exactly(1)); + EXPECT_CALL(*m_mockDirectiveHandlerResult, setFailed(_)) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnSetCompleted)); + + m_templateRuntime->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirectiveHandlerResult)); + m_wakeSetCompletedFuture.wait_for(TIMEOUT); +} + +/** + * Tests when a malformed RenderTemplate Directive is received. Expect that the + * sendExceptionEncountered and setFailed will be called. + */ +TEST_F(TemplateRuntimeTest, testMalformedRenderPlayerInfoDirective) { + // Create Directive. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(PLAYER_INFO.nameSpace, PLAYER_INFO.name, MESSAGE_ID); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, MALFORM_PLAYERINFO_PAYLOAD, attachmentManager, ""); + + EXPECT_CALL(*m_mockExceptionSender, sendExceptionEncountered(_, _, _)).Times(Exactly(1)); + EXPECT_CALL(*m_mockDirectiveHandlerResult, setFailed(_)) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnSetCompleted)); + + m_templateRuntime->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirectiveHandlerResult)); + m_wakeSetCompletedFuture.wait_for(TIMEOUT); +} + +/** + * Tests AudioPlayer notified the handling of AUDIO_ITEM_ID_1, and then RenderTemplate Directive with + * AUDIO_ITEM_ID is received. Expect that the renderTemplateCard callback will not be called until + * the AudioPlayer notified the handling of AUDIO_ITEM_ID later. + */ +TEST_F(TemplateRuntimeTest, testRenderPlayerInfoDirectiveDifferentAudioItemId) { + // Create Directive. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(PLAYER_INFO.nameSpace, PLAYER_INFO.name, MESSAGE_ID); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PLAYERINFO_PAYLOAD, attachmentManager, ""); + + EXPECT_CALL(*m_mockGui, renderPlayerInfoCard(PLAYERINFO_PAYLOAD, _, _)).Times(Exactly(0)); + EXPECT_CALL(*m_mockDirectiveHandlerResult, setCompleted()) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnSetCompleted)); + + AudioPlayerObserverInterface::Context context; + context.audioItemId = AUDIO_ITEM_ID_1; + context.offset = TIMEOUT; + m_templateRuntime->onPlayerActivityChanged(avsCommon::avs::PlayerActivity::PLAYING, context); + m_templateRuntime->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirectiveHandlerResult)); + m_templateRuntime->CapabilityAgent::handleDirective(MESSAGE_ID); + m_wakeSetCompletedFuture.wait_for(TIMEOUT); + + EXPECT_CALL(*m_mockGui, renderPlayerInfoCard(PLAYERINFO_PAYLOAD, _, _)) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnRenderPlayerInfoCard)); + + context.audioItemId = AUDIO_ITEM_ID; + m_templateRuntime->onPlayerActivityChanged(avsCommon::avs::PlayerActivity::PLAYING, context); + + m_wakeRenderPlayerInfoCardFuture.wait_for(TIMEOUT); +} + +/** + * Tests AudioPlayer callbacks will trigger the correct renderPlayerInfoCard callbacks. Expect + * the payload, audioPlayerState and offset to match to the ones passed in by the + * AudioPlayerObserverInterface. + */ +TEST_F(TemplateRuntimeTest, testRenderPlayerInfoDirectiveAudioStateUpdate) { + // Create Directive. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(PLAYER_INFO.nameSpace, PLAYER_INFO.name, MESSAGE_ID); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PLAYERINFO_PAYLOAD, attachmentManager, ""); + + ::testing::InSequence s; + // Send a directive first to TemplateRuntime + EXPECT_CALL(*m_mockDirectiveHandlerResult, setCompleted()) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnSetCompleted)); + m_templateRuntime->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirectiveHandlerResult)); + m_templateRuntime->CapabilityAgent::handleDirective(MESSAGE_ID); + m_wakeSetCompletedFuture.wait_for(TIMEOUT); + + AudioPlayerObserverInterface::Context context; + context.audioItemId = AUDIO_ITEM_ID; + + // Test onAudioPlayed() callback with 100ms offset + std::promise wakePlayPromise; + std::future wakePlayFuture = wakePlayPromise.get_future(); + context.offset = std::chrono::milliseconds(100); + EXPECT_CALL(*m_mockGui, renderPlayerInfoCard(PLAYERINFO_PAYLOAD, _, _)) + .Times(Exactly(1)) + .WillOnce(Invoke([&wakePlayPromise, context]( + const std::string& jsonPayload, + TemplateRuntimeObserverInterface::AudioPlayerInfo audioPlayerInfo, + avsCommon::avs::FocusState focusState) { + EXPECT_EQ(audioPlayerInfo.audioPlayerState, avsCommon::avs::PlayerActivity::PLAYING); + EXPECT_EQ(audioPlayerInfo.offset, context.offset); + wakePlayPromise.set_value(); + })); + m_templateRuntime->onPlayerActivityChanged(avsCommon::avs::PlayerActivity::PLAYING, context); + wakePlayFuture.wait_for(TIMEOUT); + + // Test onAudioPaused() callback with 200ms offset + std::promise wakePausePromise; + std::future wakePauseFuture = wakePausePromise.get_future(); + context.offset = std::chrono::milliseconds(200); + EXPECT_CALL(*m_mockGui, renderPlayerInfoCard(PLAYERINFO_PAYLOAD, _, _)) + .Times(Exactly(1)) + .WillOnce(Invoke([&wakePausePromise, context]( + const std::string& jsonPayload, + TemplateRuntimeObserverInterface::AudioPlayerInfo audioPlayerInfo, + avsCommon::avs::FocusState focusState) { + EXPECT_EQ(audioPlayerInfo.audioPlayerState, avsCommon::avs::PlayerActivity::PAUSED); + EXPECT_EQ(audioPlayerInfo.offset, context.offset); + wakePausePromise.set_value(); + })); + m_templateRuntime->onPlayerActivityChanged(avsCommon::avs::PlayerActivity::PAUSED, context); + wakePauseFuture.wait_for(TIMEOUT); + + // Test onAudioStopped() callback with 300ms offset + std::promise wakeStopPromise; + std::future wakeStopFuture = wakeStopPromise.get_future(); + context.offset = std::chrono::milliseconds(300); + EXPECT_CALL(*m_mockGui, renderPlayerInfoCard(PLAYERINFO_PAYLOAD, _, _)) + .Times(Exactly(1)) + .WillOnce(Invoke([&wakeStopPromise, context]( + const std::string& jsonPayload, + TemplateRuntimeObserverInterface::AudioPlayerInfo audioPlayerInfo, + avsCommon::avs::FocusState focusState) { + EXPECT_EQ(audioPlayerInfo.audioPlayerState, avsCommon::avs::PlayerActivity::STOPPED); + EXPECT_EQ(audioPlayerInfo.offset, context.offset); + wakeStopPromise.set_value(); + })); + m_templateRuntime->onPlayerActivityChanged(avsCommon::avs::PlayerActivity::STOPPED, context); + wakeStopFuture.wait_for(TIMEOUT); + + // Test onAudioFinished() callback with 400ms offset + std::promise wakeFinishPromise; + std::future wakeFinishFuture = wakeFinishPromise.get_future(); + context.offset = std::chrono::milliseconds(400); + EXPECT_CALL(*m_mockGui, renderPlayerInfoCard(PLAYERINFO_PAYLOAD, _, _)) + .Times(Exactly(1)) + .WillOnce(Invoke([&wakeFinishPromise, context]( + const std::string& jsonPayload, + TemplateRuntimeObserverInterface::AudioPlayerInfo audioPlayerInfo, + avsCommon::avs::FocusState focusState) { + EXPECT_EQ(audioPlayerInfo.audioPlayerState, avsCommon::avs::PlayerActivity::FINISHED); + EXPECT_EQ(audioPlayerInfo.offset, context.offset); + wakeFinishPromise.set_value(); + })); + m_templateRuntime->onPlayerActivityChanged(avsCommon::avs::PlayerActivity::FINISHED, context); + wakeFinishFuture.wait_for(TIMEOUT); +} + +/** + * Tests that if focus is changed to none, the clearTemplateCard() will be called. + */ +TEST_F(TemplateRuntimeTest, testFocusNone) { + // Create Directive. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(TEMPLATE.nameSpace, TEMPLATE.name, MESSAGE_ID); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, TEMPLATE_PAYLOAD, attachmentManager, ""); + + EXPECT_CALL(*m_mockGui, renderTemplateCard(TEMPLATE_PAYLOAD, _)) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnRenderTemplateCard)); + EXPECT_CALL(*m_mockDirectiveHandlerResult, setCompleted()) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnSetCompleted)); + EXPECT_CALL(*m_mockGui, clearTemplateCard()) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnClearTemplateCard)); + + m_templateRuntime->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirectiveHandlerResult)); + m_templateRuntime->CapabilityAgent::handleDirective(MESSAGE_ID); + m_wakeSetCompletedFuture.wait_for(TIMEOUT); + m_wakeRenderTemplateCardFuture.wait_for(TIMEOUT); + m_templateRuntime->onFocusChanged(FocusState::NONE); + m_wakeClearTemplateCardFuture.wait_for(TIMEOUT); +} + +/** + * Tests that if displayCardCleared() is called, the clearTemplateCard() will not be called. + */ +TEST_F(TemplateRuntimeTest, testDisplayCardCleared) { + // Create Directive. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(TEMPLATE.nameSpace, TEMPLATE.name, MESSAGE_ID); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, TEMPLATE_PAYLOAD, attachmentManager, ""); + + EXPECT_CALL(*m_mockGui, renderTemplateCard(TEMPLATE_PAYLOAD, _)) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnRenderTemplateCard)); + EXPECT_CALL(*m_mockDirectiveHandlerResult, setCompleted()) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnSetCompleted)); + EXPECT_CALL(*m_mockGui, clearTemplateCard()).Times(Exactly(0)); + EXPECT_CALL(*m_mockFocusManager, releaseChannel(_, _)).Times(Exactly(1)).WillOnce(InvokeWithoutArgs([this] { + auto releaseChannelSuccess = std::make_shared>(); + std::future returnValue = releaseChannelSuccess->get_future(); + m_templateRuntime->onFocusChanged(avsCommon::avs::FocusState::NONE); + releaseChannelSuccess->set_value(true); + wakeOnReleaseChannel(); + return returnValue; + })); + + m_templateRuntime->CapabilityAgent::preHandleDirective(directive, std::move(m_mockDirectiveHandlerResult)); + m_templateRuntime->CapabilityAgent::handleDirective(MESSAGE_ID); + m_wakeSetCompletedFuture.wait_for(TIMEOUT); + m_wakeRenderTemplateCardFuture.wait_for(TIMEOUT); + m_templateRuntime->displayCardCleared(); + m_wakeReleaseChannelFuture.wait_for(TIMEOUT); +} + +/** + * Tests that if another displayCard event is sent before channel's focus is set to none, the state machine would + * transition to REACQUIRING state and acquireChannel again to display the card. + */ +TEST_F(TemplateRuntimeTest, testReacquireChannel) { + // Create RenderPlayerInfo Directive and wait until PlayerInfo card is displayed. + auto attachmentManager = std::make_shared>(); + auto avsMessageHeader = std::make_shared(PLAYER_INFO.nameSpace, PLAYER_INFO.name, MESSAGE_ID); + std::shared_ptr directive = + AVSDirective::create("", avsMessageHeader, PLAYERINFO_PAYLOAD, attachmentManager, ""); + + EXPECT_CALL(*m_mockGui, renderPlayerInfoCard(PLAYERINFO_PAYLOAD, _, _)) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnRenderPlayerInfoCard)); + + AudioPlayerObserverInterface::Context context; + context.audioItemId = AUDIO_ITEM_ID; + context.offset = TIMEOUT; + m_templateRuntime->onPlayerActivityChanged(avsCommon::avs::PlayerActivity::PLAYING, context); + m_templateRuntime->handleDirectiveImmediately(directive); + m_wakeRenderPlayerInfoCardFuture.wait_for(TIMEOUT); + + // Send displayCardCleared() to clear card, before setting focus to NONE, send another TemplateCard. + EXPECT_CALL(*m_mockFocusManager, releaseChannel(_, _)).Times(Exactly(1)).WillOnce(InvokeWithoutArgs([this] { + auto releaseChannelSuccess = std::make_shared>(); + std::future returnValue = releaseChannelSuccess->get_future(); + releaseChannelSuccess->set_value(true); + wakeOnReleaseChannel(); + return returnValue; + })); + m_templateRuntime->displayCardCleared(); + m_wakeReleaseChannelFuture.wait_for(TIMEOUT); + + // Create RenderTemplate Directive and see if channel is reacquire correctly. + auto avsMessageHeader1 = std::make_shared(TEMPLATE.nameSpace, TEMPLATE.name, MESSAGE_ID); + std::shared_ptr directive1 = + AVSDirective::create("", avsMessageHeader1, TEMPLATE_PAYLOAD, attachmentManager, ""); + + EXPECT_CALL(*m_mockGui, renderTemplateCard(TEMPLATE_PAYLOAD, _)) + .Times(Exactly(1)) + .WillOnce(InvokeWithoutArgs(this, &TemplateRuntimeTest::wakeOnRenderTemplateCard)); + + m_templateRuntime->handleDirectiveImmediately(directive1); + m_templateRuntime->onFocusChanged(avsCommon::avs::FocusState::NONE); + m_wakeRenderTemplateCardFuture.wait_for(TIMEOUT); +} + +} // namespace test +} // namespace templateRuntime +} // namespace capabilityAgents +} // namespace alexaClientSDK diff --git a/CertifiedSender/CMakeLists.txt b/CertifiedSender/CMakeLists.txt new file mode 100644 index 0000000000..9f6e5649fc --- /dev/null +++ b/CertifiedSender/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) +project(CertifiedSender LANGUAGES CXX) + +include(../build/BuildDefaults.cmake) + +add_subdirectory("src") +acsdk_add_test_subdirectory_if_allowed() diff --git a/CertifiedSender/include/CertifiedSender/CertifiedSender.h b/CertifiedSender/include/CertifiedSender/CertifiedSender.h new file mode 100644 index 0000000000..570819b698 --- /dev/null +++ b/CertifiedSender/include/CertifiedSender/CertifiedSender.h @@ -0,0 +1,234 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CERTIFIEDSENDER_INCLUDE_CERTIFIEDSENDER_CERTIFIEDSENDER_H_ +#define ALEXA_CLIENT_SDK_CERTIFIEDSENDER_INCLUDE_CERTIFIEDSENDER_CERTIFIEDSENDER_H_ + +#include "CertifiedSender/MessageStorageInterface.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace alexaClientSDK { +namespace certifiedSender { + +/// The number of items we can store for sending without emitting a warning. +static const int CERTIFIED_SENDER_QUEUE_SIZE_WARN_LIMIT = 25; +/// The maximum number of items we can store for sending. +static const int CERTIFIED_SENDER_QUEUE_SIZE_HARD_LIMIT = 50; + +/** + * This class provides a guaranteed message delivery service to AVS. Upon calling the single api, + * @c sendJSONMessage, this class will persist the message and continually attempt sending it until it succeeds. + * The persistence will work across application runs, dependent on the nature of the storage object provided. + * + * To avoid excessive memory usage, the maximum number of messages stored in this way is configurable via the + * settings 'queueSizeWarnLimit' and 'queueSizeHardLimit', under the configuration root 'certifiedSender'. + * + * Similarly, the file path for the database storage is configured under the setting 'databaseFilePath'. + * + * This class maintains the ordering of messages passed to it. For example, if @c sendJSONMessage is invoked with + * messages A then B then C, then this class guarantees that the messages will be sent to AVS in the same order - + * A then B then C. + */ +class CertifiedSender + : public avsCommon::utils::RequiresShutdown + , public avsCommon::sdkInterfaces::ConnectionStatusObserverInterface + , public std::enable_shared_from_this + , public registrationManager::CustomerDataHandler { +public: + /** + * This function creates a new instance of a @c CertifiedSender. If it fails for any reason, @c nullptr is returned. + * + * @param messageSender The entity which is able to send @c MessageRequests to AVS. + * @param connection The connection which may be observed to determine connection status. + * @param storage The object which manages persistent storage of messages to be sent. + * @param dataManager A dataManager object that will track the CustomerDataHandler. + * @return A @c CertifiedSender object, or @c nullptr if there is any problem. + */ + static std::shared_ptr create( + std::shared_ptr messageSender, + std::shared_ptr connection, + std::shared_ptr storage, + std::shared_ptr dataManager); + + /** + * Destructor. + */ + virtual ~CertifiedSender(); + + /** + * Function to request a message be sent to AVS. Since this class is strictly responsible for sending a message + * to AVS, the parameter is explicitly described as being in JSON format. This will be expected to take the + * form of some kind of Event which AVS understands. While the sending of the message is entirely asynchronous, + * the future returned allows the caller to know if the request was successfully persisted. Once the message + * is persisted, the caller can expect the message to be sent to AVS at some point in the future by this class. + * + * @param jsonMessage The message to be sent to AVS. + * @return A future expressing if the message was successfully persisted. + */ + std::future sendJSONMessage(const std::string& jsonMessage); + + /** + * Clear all messages that we are currently storing + */ + void clearData() override; + +private: + /** + * A utility class to manage interaction with the MessageSender. + */ + class CertifiedMessageRequest : public avsCommon::avs::MessageRequest { + public: + /** + * Constructor. + * + * @param jsonContent The JSON text to be sent to AVS. + * @param dbId The database id associated with this @c MessageRequest. + */ + CertifiedMessageRequest(const std::string& jsonContent, int dbId); + + void exceptionReceived(const std::string& exceptionMessage) override; + + void sendCompleted( + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status sendMessageStatus) override; + + /** + * A blocking function which will return once the @c MessageSender has completed processing the message. + * + * @return The status returned by the @c MessageSender once it's handled the message (successfully or not). + */ + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status waitForCompletion(); + + /** + * Utility function to return the database id associated with this @c MessageRequest. + * + * @return The database id associated with this @c MessageRequest. + */ + int getDbId(); + + /** + * A function that allows early exit of the message sending logic. + */ + void shutdown(); + + private: + /// The status of whether the message was sent to AVS ok. + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status m_sendMessageStatus; + /// Captures if the @c MessageRequest has been processed or not by AVS. + bool m_responseReceived; + /// Mutex used to enforce thread safety. + std::mutex m_mutex; + /// The condition variable used when waiting for the @c MessageRequest to be processed. + std::condition_variable m_cv; + /// The database id associated with this @c MessageRequest. + int m_dbId; + /// A control so we may allow the message to stop waiting to be sent. + bool m_isShuttingDown; + }; + + /** + * Constructor. + * + * @param messageSender The entity which is able to send @c MessageRequests to AVS. + * @param connection The connection which may be observed to determine connection status. + * @param storage The object which manages persistent storage of messages to be sent. + * @param dataManager A dataManager object that will track the CustomerDataHandler. + * @param queueSizeWarnLimit The number of items we can store for sending without emitting a warning. + * @param queueSizeHardLimit The maximum number of items we can store for sending. + */ + CertifiedSender( + std::shared_ptr messageSender, + std::shared_ptr connection, + std::shared_ptr storage, + std::shared_ptr dataManager, + int queueSizeWarnLimit = CERTIFIED_SENDER_QUEUE_SIZE_WARN_LIMIT, + int queueSizeHardLimit = CERTIFIED_SENDER_QUEUE_SIZE_HARD_LIMIT); + + void onConnectionStatusChanged( + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override; + + /** + * Initialize this object. + * + * @return Whether the object was initialized ok. + */ + bool init(); + + /** + * The actual handling of the sendJSONMessage call by our internal executor. + * + * @param jsonMessage The message to be sent to AVS. + * @return Whether the message was successfully persisted. + */ + bool executeSendJSONMessage(std::string jsonMessage); + + void doShutdown() override; + + /** + * The worker function which will process the queue, and send messages. + */ + void mainloop(); + + /// A queue size threshold, beyond which we will emit warnings if more items are added. + int m_queueSizeWarnLimit; + /// The maximum possible size of the queue. + int m_queueSizeHardLimit; + + /// The thread that will actually handle the sending of messages. + std::thread m_workerThread; + /// A control so we may disable the worker thread on shutdown. + bool m_isShuttingDown; + /// Mutex to protect access to class data members. + std::mutex m_mutex; + /// A condition variable with which to notify the worker thread that a new item was added to the queue. + std::condition_variable m_workerThreadCV; + + /// A variable to capture if we are currently connected to AVS. + bool m_isConnected; + + /// Our queue of requests that should be sent. + std::deque> m_messagesToSend; + + /// The entity which actually sends the messages to AVS. + std::shared_ptr m_messageSender; + + /// The message currently being sent. + std::shared_ptr m_currentMessage; + + // The connection object we are observing. + std::shared_ptr m_connection; + + /// Where we will store the messages we wish to send. + std::shared_ptr m_storage; + + /// Executor to decouple the public-facing api from possibly inefficient persistent storage implementations. + avsCommon::utils::threading::Executor m_executor; +}; + +} // namespace certifiedSender +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CERTIFIEDSENDER_INCLUDE_CERTIFIEDSENDER_CERTIFIEDSENDER_H_ diff --git a/CertifiedSender/include/CertifiedSender/MessageStorageInterface.h b/CertifiedSender/include/CertifiedSender/MessageStorageInterface.h new file mode 100644 index 0000000000..e58f2839cb --- /dev/null +++ b/CertifiedSender/include/CertifiedSender/MessageStorageInterface.h @@ -0,0 +1,127 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CERTIFIEDSENDER_INCLUDE_CERTIFIEDSENDER_MESSAGESTORAGEINTERFACE_H_ +#define ALEXA_CLIENT_SDK_CERTIFIEDSENDER_INCLUDE_CERTIFIEDSENDER_MESSAGESTORAGEINTERFACE_H_ + +#include +#include +#include + +namespace alexaClientSDK { +namespace certifiedSender { + +/** + * An Interface class which defines APIs for interacting with a database for storing text-based messages. + * + * An implementation of this interface must enforce ordering of the messages, so that the ordering of items returned + * in the load() operation are the same as the ordering of store() calls. + * + * This interface does not provide any thread-safety guarantees. + */ +class MessageStorageInterface { +public: + /** + * Utility structure to express a message stored in a database. + */ + struct StoredMessage { + /** + * Default Constructor. + */ + StoredMessage() : id{0} { + } + + /** + * Constructor. + * + * @param id The id which the database implementation associates with the message. + * @param message The text message which has been stored in the database. + */ + StoredMessage(int id, const std::string& message) : id{id}, message{message} { + } + + /// The unique id which the database associates with this message. + int id; + /// The message being stored. + std::string message; + }; + + /** + * Destructor. + */ + virtual ~MessageStorageInterface() = default; + + /** + * Creates a new database with the given filePath. + * If a database is already being handled by this object, or there is are other errors creating the database, this + * function returns false. + * + * @return @c true If the database is created ok, or @c false if a database is already being handled by this object + * or there is an internal error creating the database. + */ + virtual bool createDatabase() = 0; + + /** + * Open an existing database. If this object is already managing an open database, or there is a problem opening + * the database, this function returns false. + * + * @return @c true If the database is opened ok, @c false if this object is already managing an open database, or if + * there is another internal reason the database could not be opened. + */ + virtual bool open() = 0; + + /** + * Close the currently open database, if one is open. + */ + virtual void close() = 0; + + /** + * Stores a single message in the database. + * + * @param The message to store. + * @param[out] id The id associated with the stored messsage, if successfully stored. + * @return Whether the message was successfully stored. + */ + virtual bool store(const std::string& message, int* id) = 0; + + /** + * Loads all messages in the database. + * + * @param[out] messageContainer The container where messages should be stored. + * @return Whether the @c StoredMessages were successfully loaded. + */ + virtual bool load(std::queue* messageContainer) = 0; + + /** + * Erases a single message from the database. + * + * @param messageId The id of the message to be erased. + * @return Whether the message was successfully erased. + */ + virtual bool erase(int messageId) = 0; + + /** + * A utility function to clear the database of all records. Note that the database will still exist, as will + * the tables. Only the rows will be erased. + * + * @return Whether the database was successfully cleared. + */ + virtual bool clearDatabase() = 0; +}; + +} // namespace certifiedSender +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CERTIFIEDSENDER_INCLUDE_CERTIFIEDSENDER_MESSAGESTORAGEINTERFACE_H_ diff --git a/CertifiedSender/include/CertifiedSender/SQLiteMessageStorage.h b/CertifiedSender/include/CertifiedSender/SQLiteMessageStorage.h new file mode 100644 index 0000000000..9d80ab0b46 --- /dev/null +++ b/CertifiedSender/include/CertifiedSender/SQLiteMessageStorage.h @@ -0,0 +1,74 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_CERTIFIEDSENDER_INCLUDE_CERTIFIEDSENDER_SQLITEMESSAGESTORAGE_H_ +#define ALEXA_CLIENT_SDK_CERTIFIEDSENDER_INCLUDE_CERTIFIEDSENDER_SQLITEMESSAGESTORAGE_H_ + +#include "CertifiedSender/MessageStorageInterface.h" + +#include +#include + +namespace alexaClientSDK { +namespace certifiedSender { + +/** + * An implementation that allows us to store messages using SQLite. + * + * This class is not thread-safe. + */ +class SQLiteMessageStorage : public MessageStorageInterface { +public: + /** + * Factory method for creating a storage object for Messages based on an SQLite database. + * + * @param configurationRoot The global config object. + * @return Pointer to the SQLiteMessagetStorge object, nullptr if there's an error creating it. + */ + static std::unique_ptr create( + const avsCommon::utils::configuration::ConfigurationNode& configurationRoot); + + /** + * Constructor. + * + * @param dbFilePath The location of the SQLite database file. + */ + SQLiteMessageStorage(const std::string& databaseFilePath); + + ~SQLiteMessageStorage(); + + bool createDatabase() override; + + bool open() override; + + void close() override; + + bool store(const std::string& message, int* id) override; + + bool load(std::queue* messageContainer) override; + + bool erase(int messageId) override; + + bool clearDatabase() override; + +private: + /// The underlying database class. + alexaClientSDK::storage::sqliteStorage::SQLiteDatabase m_database; +}; + +} // namespace certifiedSender +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_CERTIFIEDSENDER_INCLUDE_CERTIFIEDSENDER_SQLITEMESSAGESTORAGE_H_ diff --git a/CertifiedSender/src/CMakeLists.txt b/CertifiedSender/src/CMakeLists.txt new file mode 100644 index 0000000000..6a4c206a1c --- /dev/null +++ b/CertifiedSender/src/CMakeLists.txt @@ -0,0 +1,15 @@ +add_definitions("-DACSDK_LOG_MODULE=certifiedSender") +add_library(CertifiedSender SHARED + CertifiedSender.cpp + SQLiteMessageStorage.cpp) + +target_include_directories(CertifiedSender PUBLIC + "${AVSCommon_INCLUDE_DIRS}" + "${CertifiedSender_SOURCE_DIR}/include" + "${RegistrationManager_SOURCE_DIR}/include" + "${SQLiteStorage_SOURCE_DIR}/include") + +target_link_libraries(CertifiedSender AVSCommon RegistrationManager SQLiteStorage) + +# install target +asdk_install() \ No newline at end of file diff --git a/CertifiedSender/src/CertifiedSender.cpp b/CertifiedSender/src/CertifiedSender.cpp new file mode 100644 index 0000000000..76a3efdc4f --- /dev/null +++ b/CertifiedSender/src/CertifiedSender.cpp @@ -0,0 +1,261 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "CertifiedSender/CertifiedSender.h" + +#include +#include +#include +#include + +namespace alexaClientSDK { +namespace certifiedSender { + +using namespace avsCommon::utils::logger; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::avs; +using namespace avsCommon::utils::configuration; + +/// String to identify log entries originating from this file. +static const std::string TAG("CertifiedSender"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +CertifiedSender::CertifiedMessageRequest::CertifiedMessageRequest(const std::string& jsonContent, int dbId) : + MessageRequest{jsonContent}, + m_responseReceived{false}, + m_dbId{dbId}, + m_isShuttingDown{false} { +} + +void CertifiedSender::CertifiedMessageRequest::exceptionReceived(const std::string& exceptionMessage) { + std::lock_guard lock(m_mutex); + m_sendMessageStatus = MessageRequestObserverInterface::Status::SERVER_INTERNAL_ERROR_V2; + m_responseReceived = true; + m_cv.notify_all(); +} + +void CertifiedSender::CertifiedMessageRequest::sendCompleted( + MessageRequestObserverInterface::Status sendMessageStatus) { + std::lock_guard lock(m_mutex); + if (!m_responseReceived) { + m_sendMessageStatus = sendMessageStatus; + m_responseReceived = true; + m_cv.notify_all(); + } +} + +MessageRequestObserverInterface::Status CertifiedSender::CertifiedMessageRequest::waitForCompletion() { + std::unique_lock lock(m_mutex); + m_cv.wait(lock, [this]() { return m_isShuttingDown || m_responseReceived; }); + + if (m_isShuttingDown) { + return MessageRequestObserverInterface::Status::TIMEDOUT; + } + + return m_sendMessageStatus; +} + +int CertifiedSender::CertifiedMessageRequest::getDbId() { + return m_dbId; +} + +void CertifiedSender::CertifiedMessageRequest::shutdown() { + std::lock_guard lock(m_mutex); + m_isShuttingDown = true; + m_cv.notify_all(); +} + +std::shared_ptr CertifiedSender::create( + std::shared_ptr messageSender, + std::shared_ptr connection, + std::shared_ptr storage, + std::shared_ptr dataManager) { + auto certifiedSender = + std::shared_ptr(new CertifiedSender(messageSender, connection, storage, dataManager)); + + if (!certifiedSender->init()) { + ACSDK_ERROR(LX("createFailed").m("Could not initialize certifiedSender.")); + return nullptr; + } + + connection->addConnectionStatusObserver(certifiedSender); + + return certifiedSender; +} + +CertifiedSender::CertifiedSender( + std::shared_ptr messageSender, + std::shared_ptr connection, + std::shared_ptr storage, + std::shared_ptr dataManager, + int queueSizeWarnLimit, + int queueSizeHardLimit) : + RequiresShutdown("CertifiedSender"), + CustomerDataHandler(dataManager), + m_queueSizeWarnLimit{queueSizeWarnLimit}, + m_queueSizeHardLimit{queueSizeHardLimit}, + m_isShuttingDown{false}, + m_isConnected{false}, + m_messageSender{messageSender}, + m_connection{connection}, + m_storage{storage} { +} + +CertifiedSender::~CertifiedSender() { + std::unique_lock lock(m_mutex); + m_isShuttingDown = true; + if (m_currentMessage) { + m_currentMessage->shutdown(); + } + lock.unlock(); + + m_workerThreadCV.notify_one(); + + if (m_workerThread.joinable()) { + m_workerThread.join(); + } +} + +bool CertifiedSender::init() { + if (m_queueSizeWarnLimit < 0 || m_queueSizeHardLimit <= 0 || m_queueSizeHardLimit < m_queueSizeWarnLimit) { + ACSDK_ERROR(LX("initFailed") + .d("warnSizeLimit", m_queueSizeWarnLimit) + .d("hardSizeLimit", m_queueSizeHardLimit) + .m("Limit values are invalid.")); + return false; + } + + if (!m_storage->open()) { + ACSDK_INFO(LX("init : Database file does not exist. Creating.")); + if (!m_storage->createDatabase()) { + ACSDK_ERROR(LX("initFailed").m("Could not create database file.")); + return false; + } + } + + m_workerThread = std::thread(&CertifiedSender::mainloop, this); + + return true; +} + +void CertifiedSender::mainloop() { + while (true) { + std::unique_lock lock(m_mutex); + + m_currentMessage.reset(); + + if ((!m_isConnected || m_messagesToSend.empty()) && !m_isShuttingDown) { + m_workerThreadCV.wait( + lock, [this]() { return ((m_isConnected && !m_messagesToSend.empty()) || m_isShuttingDown); }); + } + + if (m_isShuttingDown) { + ACSDK_DEBUG9(LX("CertifiedSender worker thread done. exiting mainloop.")); + return; + } + + m_currentMessage = m_messagesToSend.front(); + + lock.unlock(); + + // We have a message to send - send it! + m_messageSender->sendMessage(m_currentMessage); + + auto status = m_currentMessage->waitForCompletion(); + + if (MessageRequest::isServerStatus(status)) { + lock.lock(); + + if (!m_storage->erase(m_currentMessage->getDbId())) { + ACSDK_ERROR(LX("mainloop : could not erase message from storage.")); + } + + m_messagesToSend.pop_front(); + lock.unlock(); + } else { + // If we couldn't send the message ok, let's push a fresh instance to the front of the deque. This allows + // ACL to continue interacting with the old instance (for example, if it is involved in a complex flow + // of exception / onCompleted handling), and allows us to safely try sending the new instance. + lock.lock(); + m_messagesToSend.pop_front(); + m_messagesToSend.push_front(std::make_shared( + m_currentMessage->getJsonContent(), m_currentMessage->getDbId())); + lock.unlock(); + } + } +} + +void CertifiedSender::onConnectionStatusChanged( + ConnectionStatusObserverInterface::Status status, + ConnectionStatusObserverInterface::ChangedReason reason) { + std::lock_guard lock(m_mutex); + m_isConnected = (ConnectionStatusObserverInterface::Status::CONNECTED == status); + m_workerThreadCV.notify_one(); +} + +std::future CertifiedSender::sendJSONMessage(const std::string& jsonMessage) { + return m_executor.submit([this, jsonMessage]() { return executeSendJSONMessage(jsonMessage); }); +} + +bool CertifiedSender::executeSendJSONMessage(std::string jsonMessage) { + std::unique_lock lock(m_mutex); + + int queueSize = static_cast(m_messagesToSend.size()); + + if (queueSize >= m_queueSizeHardLimit) { + ACSDK_ERROR(LX("executeSendJSONMessage").m("Queue size is at max limit. Cannot add message to send.")); + return false; + } + + if (queueSize >= m_queueSizeWarnLimit) { + ACSDK_WARN(LX("executeSendJSONMessage").m("Warning : queue size has exceeded the warn limit.")); + } + + int messageId = 0; + if (!m_storage->store(jsonMessage, &messageId)) { + ACSDK_ERROR(LX("executeSendJSONMessage").m("Could not store message.")); + return false; + } + + m_messagesToSend.push_back(std::make_shared(jsonMessage, messageId)); + + lock.unlock(); + + m_workerThreadCV.notify_one(); + + return true; +} + +void CertifiedSender::doShutdown() { + m_connection->removeConnectionStatusObserver(shared_from_this()); +} + +void CertifiedSender::clearData() { + auto result = m_executor.submit([this]() { + std::unique_lock lock(m_mutex); + m_messagesToSend.clear(); + m_storage->clearDatabase(); + }); + result.wait(); +} + +} // namespace certifiedSender +} // namespace alexaClientSDK diff --git a/CertifiedSender/src/SQLiteMessageStorage.cpp b/CertifiedSender/src/SQLiteMessageStorage.cpp new file mode 100644 index 0000000000..6d30c90e8e --- /dev/null +++ b/CertifiedSender/src/SQLiteMessageStorage.cpp @@ -0,0 +1,238 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "CertifiedSender/SQLiteMessageStorage.h" + +#include +#include + +#include +#include + +#include + +namespace alexaClientSDK { +namespace certifiedSender { + +using namespace avsCommon::utils::file; +using namespace avsCommon::utils::logger; +using namespace alexaClientSDK::storage::sqliteStorage; + +/// String to identify log entries originating from this file. +static const std::string TAG("SQLiteMessageStorage"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/// The key in our config file to find the root of settings for this Capability Agent. +static const std::string CERTIFIED_SENDER_CONFIGURATION_ROOT_KEY = "certifiedSender"; +/// The key in our config file to find the database file path. +static const std::string CERTIFIED_SENDER_DB_FILE_PATH_KEY = "databaseFilePath"; + +/// The name of the alerts table. +static const std::string MESSAGES_TABLE_NAME = "messages"; +/// The name of the 'id' field we will use as the primary key in our tables. +static const std::string DATABASE_COLUMN_ID_NAME = "id"; +/// The name of the 'id' field we will use as the primary key in our tables. +static const std::string DATABASE_COLUMN_MESSAGE_TEXT_NAME = "message_text"; +/// The SQL string to create the alerts table. +static const std::string CREATE_MESSAGES_TABLE_SQL_STRING = std::string("CREATE TABLE ") + MESSAGES_TABLE_NAME + " (" + + DATABASE_COLUMN_ID_NAME + " INT PRIMARY KEY NOT NULL," + + DATABASE_COLUMN_MESSAGE_TEXT_NAME + " TEXT NOT NULL);"; + +std::unique_ptr SQLiteMessageStorage::create( + const avsCommon::utils::configuration::ConfigurationNode& configurationRoot) { + auto certifiedSenderConfigurationRoot = configurationRoot[CERTIFIED_SENDER_CONFIGURATION_ROOT_KEY]; + if (!certifiedSenderConfigurationRoot) { + ACSDK_ERROR(LX("createFailed") + .d("reason", "Could not load config for the Message Storage database") + .d("key", CERTIFIED_SENDER_CONFIGURATION_ROOT_KEY)); + return nullptr; + } + + std::string certifiedSenderDatabaseFilePath; + if (!certifiedSenderConfigurationRoot.getString( + CERTIFIED_SENDER_DB_FILE_PATH_KEY, &certifiedSenderDatabaseFilePath) || + certifiedSenderDatabaseFilePath.empty()) { + ACSDK_ERROR( + LX("createFailed").d("reason", "Could not load config value").d("key", CERTIFIED_SENDER_DB_FILE_PATH_KEY)); + return nullptr; + } + + return std::unique_ptr(new SQLiteMessageStorage(certifiedSenderDatabaseFilePath)); +} + +SQLiteMessageStorage::SQLiteMessageStorage(const std::string& certifiedSenderDatabaseFilePath) : + m_database{certifiedSenderDatabaseFilePath} { +} + +SQLiteMessageStorage::~SQLiteMessageStorage() { + close(); +} + +bool SQLiteMessageStorage::createDatabase() { + if (!m_database.initialize()) { + ACSDK_ERROR(LX("createDatabaseFailed")); + return false; + } + + if (!m_database.performQuery(CREATE_MESSAGES_TABLE_SQL_STRING)) { + ACSDK_ERROR(LX("createDatabaseFailed").m("Table could not be created.")); + close(); + return false; + } + + return true; +} + +bool SQLiteMessageStorage::open() { + return m_database.open(); +} + +void SQLiteMessageStorage::close() { + m_database.close(); +} + +bool SQLiteMessageStorage::store(const std::string& message, int* id) { + if (!id) { + ACSDK_ERROR(LX("storeFailed").m("id parameter was nullptr.")); + return false; + } + + std::string sqlString = std::string("INSERT INTO " + MESSAGES_TABLE_NAME + " (") + DATABASE_COLUMN_ID_NAME + ", " + + DATABASE_COLUMN_MESSAGE_TEXT_NAME + ") VALUES (" + "?, ?" + ");"; + + int nextId = 0; + if (!getTableMaxIntValue(&m_database, MESSAGES_TABLE_NAME, DATABASE_COLUMN_ID_NAME, &nextId)) { + ACSDK_ERROR(LX("storeFailed").m("Cannot generate message id.")); + return false; + } + nextId++; + + if (nextId <= 0) { + ACSDK_ERROR(LX("storeFailed").m("Invalid computed row id. Possible numerical overflow.").d("id", nextId)); + return false; + } + + auto statement = m_database.createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("storeFailed").m("Could not create statement.")); + return false; + } + + int boundParam = 1; + if (!statement->bindIntParameter(boundParam++, nextId) || !statement->bindStringParameter(boundParam, message)) { + ACSDK_ERROR(LX("storeFailed").m("Could not bind parameter.")); + return false; + } + + if (!statement->step()) { + ACSDK_ERROR(LX("storeFailed").m("Could not perform step.")); + return false; + } + + *id = nextId; + + return true; +} + +bool SQLiteMessageStorage::load(std::queue* messageContainer) { + if (!messageContainer) { + ACSDK_ERROR(LX("loadFailed").m("Alert container parameter is nullptr.")); + return false; + } + + std::string sqlString = "SELECT * FROM " + MESSAGES_TABLE_NAME + " ORDER BY id;"; + + auto statement = m_database.createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("loadFailed").m("Could not create statement.")); + return false; + } + + // local values which we will use to capture what we read from the database. + int id = 0; + std::string message; + + if (!statement->step()) { + ACSDK_ERROR(LX("loadFailed").m("Could not perform step.")); + return false; + } + + while (SQLITE_ROW == statement->getStepResult()) { + int numberColumns = statement->getColumnCount(); + + // SQLite cannot guarantee the order of the columns in a given row, so this logic is required. + for (int i = 0; i < numberColumns; i++) { + std::string columnName = statement->getColumnName(i); + + if (DATABASE_COLUMN_ID_NAME == columnName) { + id = statement->getColumnInt(i); + } else if (DATABASE_COLUMN_MESSAGE_TEXT_NAME == columnName) { + message = statement->getColumnText(i); + } + } + + StoredMessage storedMessage(id, message); + + messageContainer->push(storedMessage); + + statement->step(); + } + + return true; +} + +bool SQLiteMessageStorage::erase(int messageId) { + std::string sqlString = "DELETE FROM " + MESSAGES_TABLE_NAME + " WHERE id=?;"; + + auto statement = m_database.createStatement(sqlString); + + if (!statement) { + ACSDK_ERROR(LX("eraseFailed").m("Could not create statement.")); + return false; + } + + int boundParam = 1; + if (!statement->bindIntParameter(boundParam, messageId)) { + ACSDK_ERROR(LX("eraseFailed").m("Could not bind messageId.")); + return false; + } + + if (!statement->step()) { + ACSDK_ERROR(LX("eraseFailed").m("Could not perform step.")); + return false; + } + + return true; +} + +bool SQLiteMessageStorage::clearDatabase() { + if (!m_database.clearTable(MESSAGES_TABLE_NAME)) { + ACSDK_ERROR(LX("clearDatabaseFailed").m("could not clear messages table.")); + return false; + } + + return true; +} + +} // namespace certifiedSender +} // namespace alexaClientSDK diff --git a/CertifiedSender/test/CMakeLists.txt b/CertifiedSender/test/CMakeLists.txt new file mode 100644 index 0000000000..16aaf30d48 --- /dev/null +++ b/CertifiedSender/test/CMakeLists.txt @@ -0,0 +1,8 @@ +set(INCLUDE_PATH + "${AVSCommon_INCLUDE_DIRS}" + "${CertifiedSender_INCLUDE_DIRS}" + "${AVSCommon_SOURCE_DIR}/SDKInterfaces/test") + +set(TEST_FOLDER "${CertifiedSender_SOURCE_DIR}/test") + +discover_unit_tests("${INCLUDE_PATH}" "CertifiedSender" "${TEST_FOLDER}") \ No newline at end of file diff --git a/CertifiedSender/test/CertifiedSenderTest.cpp b/CertifiedSender/test/CertifiedSenderTest.cpp new file mode 100644 index 0000000000..1413c457a1 --- /dev/null +++ b/CertifiedSender/test/CertifiedSenderTest.cpp @@ -0,0 +1,98 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include + +#include "RegistrationManager/CustomerDataManager.h" +#include "AVSCommon/AVS/Initialization/AlexaClientSDKInit.h" +#include "AVSCommon/SDKInterfaces/MockMessageSender.h" + +#include "CertifiedSender/CertifiedSender.h" + +using namespace ::testing; + +namespace alexaClientSDK { +namespace certifiedSender { +namespace test { + +class MockConnection : public avsCommon::avs::AbstractConnection { + MOCK_CONST_METHOD0(isConnected, bool()); +}; + +class MockMessageStorage : public MessageStorageInterface { +public: + MOCK_METHOD0(createDatabase, bool()); + MOCK_METHOD0(open, bool()); + MOCK_METHOD0(close, void()); + MOCK_METHOD2(store, bool(const std::string& message, int* id)); + MOCK_METHOD1(load, bool(std::queue* messageContainer)); + MOCK_METHOD1(erase, bool(int messageId)); + MOCK_METHOD0(clearDatabase, bool()); + virtual ~MockMessageStorage() = default; +}; + +class CertifiedSenderTest : public ::testing::Test { +public: +protected: + void SetUp() override { + static const std::string CONFIGURATION = R"({ + "certifiedSender" : { + "databaseFilePath":"database.db" + } + })"; + std::stringstream configuration; + configuration << CONFIGURATION; + ASSERT_TRUE(avsCommon::avs::initialization::AlexaClientSDKInit::initialize({&configuration})); + + auto customerDataManager = std::make_shared(); + auto msgSender = std::make_shared(); + m_connection = std::make_shared(); + m_storage = std::make_shared(); + + EXPECT_CALL(*m_storage, open()).Times(1).WillOnce(Return(true)); + m_certifiedSender = CertifiedSender::create(msgSender, m_connection, m_storage, customerDataManager); + } + + void TearDown() override { + if (avsCommon::avs::initialization::AlexaClientSDKInit::isInitialized()) { + avsCommon::avs::initialization::AlexaClientSDKInit::uninitialize(); + } + m_connection->removeConnectionStatusObserver(m_certifiedSender); + } + + /// Class under test. + std::shared_ptr m_certifiedSender; + + /// Mock message storage layer. + std::shared_ptr m_storage; + + /// Pointer to connection. We need to remove certifiedSender as a connection observer or both objects will never + /// be deleted. + std::shared_ptr m_connection; +}; + +/** + * Check that @c clearData() method clears the persistent message storage and the current msg queue + */ +TEST_F(CertifiedSenderTest, clearDataTest) { + EXPECT_CALL(*m_storage, clearDatabase()).Times(1); + m_certifiedSender->clearData(); +} + +} // namespace test +} // namespace certifiedSender +} // namespace alexaClientSDK diff --git a/CertifiedSender/test/MessageStorageTest.cpp b/CertifiedSender/test/MessageStorageTest.cpp new file mode 100644 index 0000000000..db13767d8f --- /dev/null +++ b/CertifiedSender/test/MessageStorageTest.cpp @@ -0,0 +1,245 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +#include + +#include + +#include +#include +#include + +using namespace ::testing; + +namespace alexaClientSDK { +namespace certifiedSender { +namespace test { + +using namespace avsCommon::utils::file; + +/// The filename we will use for the test database file. +static const std::string TEST_DATABASE_FILE_PATH = "messageStorageTestDatabase.db"; +/// The filename we will use for the test database file. +static const std::string TEST_SECOND_DATABASE_FILE_PATH = "messageStorageSecondTestDatabase.db"; +/// The path delimiter used by the OS to identify file locations. +static const std::string PATH_DELIMITER = "/"; +/// The full filepath to the database file we will create and delete during tests. +static std::string g_dbTestFilePath; +/// A test message text. +static const std::string TEST_MESSAGE_ONE = "test_message_one"; +/// A test message text. +static const std::string TEST_MESSAGE_TWO = "test_message_two"; +/// A test message text. +static const std::string TEST_MESSAGE_THREE = "test_message_three"; + +/** + * A class which helps drive this unit test suite. + */ +class MessageStorageTest : public ::testing::Test { +public: + /** + * Constructor. + */ + MessageStorageTest() : m_storage{std::make_shared(g_dbTestFilePath)} { + cleanupLocalDbFile(); + } + + /** + * Destructor. + */ + ~MessageStorageTest() { + m_storage->close(); + cleanupLocalDbFile(); + } + + /** + * Utility function to create the database, using the global filename. + */ + void createDatabase() { + m_storage->createDatabase(); + } + + /** + * Utility function to cleanup the test database file, if it exists. + */ + void cleanupLocalDbFile() { + if (g_dbTestFilePath.empty()) { + return; + } + + if (fileExists(g_dbTestFilePath)) { + removeFile(g_dbTestFilePath.c_str()); + } + } + +protected: + /// The message database object we will test. + std::shared_ptr m_storage; +}; + +/** + * Utility function to determine if the storage component is opened. + * + * @param storage The storage component to check. + * @return True if the storage component's underlying database is opened, false otherwise. + */ +static bool isOpen(const std::shared_ptr& storage) { + std::queue dummyMessages; + return storage->load(&dummyMessages); +} + +/** + * Test basic construction. Database should not be open. + */ +TEST_F(MessageStorageTest, testConstructionAndDestruction) { + ASSERT_FALSE(isOpen(m_storage)); +} + +/** + * Test database creation. + */ +TEST_F(MessageStorageTest, testDatabaseCreation) { + ASSERT_FALSE(isOpen(m_storage)); + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); +} + +/** + * Test opening and closing a database. + */ +TEST_F(MessageStorageTest, testOpenAndCloseDatabase) { + ASSERT_FALSE(isOpen(m_storage)); + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); + m_storage->close(); + ASSERT_FALSE(isOpen(m_storage)); + ASSERT_TRUE(m_storage->open()); + ASSERT_TRUE(isOpen(m_storage)); + m_storage->close(); + ASSERT_FALSE(isOpen(m_storage)); +} + +/** + * Test storing records in the database. + */ +TEST_F(MessageStorageTest, testDatabaseStoreAndLoad) { + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); + + std::queue dbMessages; + ASSERT_TRUE(m_storage->load(&dbMessages)); + ASSERT_EQ(static_cast(dbMessages.size()), 0); + + // test storing a single message first + int dbId = 0; + ASSERT_TRUE(m_storage->store(TEST_MESSAGE_ONE, &dbId)); + ASSERT_EQ(dbId, 1); + ASSERT_TRUE(m_storage->load(&dbMessages)); + ASSERT_EQ(static_cast(dbMessages.size()), 1); + ASSERT_EQ(dbMessages.front().message, TEST_MESSAGE_ONE); + dbMessages.pop(); + + // now store two more, and verify + ASSERT_TRUE(m_storage->store(TEST_MESSAGE_TWO, &dbId)); + ASSERT_EQ(dbId, 2); + ASSERT_TRUE(m_storage->store(TEST_MESSAGE_THREE, &dbId)); + ASSERT_EQ(dbId, 3); + + ASSERT_TRUE(m_storage->load(&dbMessages)); + ASSERT_EQ(static_cast(dbMessages.size()), 3); + ASSERT_EQ(dbMessages.front().message, TEST_MESSAGE_ONE); + dbMessages.pop(); + ASSERT_EQ(dbMessages.front().message, TEST_MESSAGE_TWO); + dbMessages.pop(); + ASSERT_EQ(dbMessages.front().message, TEST_MESSAGE_THREE); +} + +/** + * Test erasing a record from the database. + */ +TEST_F(MessageStorageTest, testDatabaseErase) { + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); + + // add three messages, and verify + int dbId = 0; + ASSERT_TRUE(m_storage->store(TEST_MESSAGE_ONE, &dbId)); + ASSERT_TRUE(m_storage->store(TEST_MESSAGE_TWO, &dbId)); + ASSERT_TRUE(m_storage->store(TEST_MESSAGE_THREE, &dbId)); + + std::queue dbMessages; + ASSERT_TRUE(m_storage->load(&dbMessages)); + ASSERT_EQ(static_cast(dbMessages.size()), 3); + ASSERT_EQ(dbMessages.front().message, TEST_MESSAGE_ONE); + + // erase the first one, then verify it's gone from db + ASSERT_TRUE(m_storage->erase(dbMessages.front().id)); + + while (!dbMessages.empty()) { + dbMessages.pop(); + } + + ASSERT_TRUE(m_storage->load(&dbMessages)); + ASSERT_EQ(static_cast(dbMessages.size()), 2); + ASSERT_EQ(dbMessages.front().message, TEST_MESSAGE_TWO); + dbMessages.pop(); + ASSERT_EQ(dbMessages.front().message, TEST_MESSAGE_THREE); +} + +/** + * Test clearing the database. + */ +TEST_F(MessageStorageTest, testDatabaseClear) { + createDatabase(); + ASSERT_TRUE(isOpen(m_storage)); + + int dbId = 0; + ASSERT_TRUE(m_storage->store(TEST_MESSAGE_ONE, &dbId)); + ASSERT_TRUE(m_storage->store(TEST_MESSAGE_TWO, &dbId)); + ASSERT_TRUE(m_storage->store(TEST_MESSAGE_THREE, &dbId)); + + std::queue dbMessages; + ASSERT_TRUE(m_storage->load(&dbMessages)); + ASSERT_EQ(static_cast(dbMessages.size()), 3); + while (!dbMessages.empty()) { + dbMessages.pop(); + } + + ASSERT_TRUE(m_storage->clearDatabase()); + + ASSERT_TRUE(m_storage->load(&dbMessages)); + ASSERT_EQ(static_cast(dbMessages.size()), 0); +} + +} // namespace test +} // namespace certifiedSender +} // namespace alexaClientSDK + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + if (argc < 2) { + std::cerr << "USAGE: " << std::string(argv[0]) << " " << std::endl; + return 1; + } else { + alexaClientSDK::certifiedSender::test::g_dbTestFilePath = + std::string(argv[1]) + alexaClientSDK::certifiedSender::test::PATH_DELIMITER + + alexaClientSDK::certifiedSender::test::TEST_DATABASE_FILE_PATH; + + return RUN_ALL_TESTS(); + } +} diff --git a/ContextManager/CMakeLists.txt b/ContextManager/CMakeLists.txt index 1217ce7699..ee4848a11c 100644 --- a/ContextManager/CMakeLists.txt +++ b/ContextManager/CMakeLists.txt @@ -4,4 +4,4 @@ project(ContextManager LANGUAGES CXX) include(../build/BuildDefaults.cmake) add_subdirectory("src") -add_subdirectory("test") +acsdk_add_test_subdirectory_if_allowed() diff --git a/ContextManager/include/ContextManager/ContextManager.h b/ContextManager/include/ContextManager/ContextManager.h index 0f480fb44e..ecef60c998 100644 --- a/ContextManager/include/ContextManager/ContextManager.h +++ b/ContextManager/include/ContextManager/ContextManager.h @@ -1,7 +1,5 @@ /* -* ContextManager.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_CONTEXT_MANAGER_INCLUDE_CONTEXT_MANAGER_CONTEXT_MANAGER_H -#define ALEXA_CLIENT_SDK_CONTEXT_MANAGER_INCLUDE_CONTEXT_MANAGER_CONTEXT_MANAGER_H +#ifndef ALEXA_CLIENT_SDK_CONTEXTMANAGER_INCLUDE_CONTEXTMANAGER_CONTEXTMANAGER_H_ +#define ALEXA_CLIENT_SDK_CONTEXTMANAGER_INCLUDE_CONTEXTMANAGER_CONTEXTMANAGER_H_ #include #include @@ -44,7 +42,7 @@ namespace contextManager { * Class manages the requests for getting context from @c ContextRequesters and updating the state from * @c StateProviders. */ -class ContextManager: public avsCommon::sdkInterfaces::ContextManagerInterface { +class ContextManager : public avsCommon::sdkInterfaces::ContextManagerInterface { public: /** * Create a new @c ContextManager instance. @@ -56,12 +54,15 @@ class ContextManager: public avsCommon::sdkInterfaces::ContextManagerInterface { /// Destructor. ~ContextManager() override; - void setStateProvider(const avsCommon::avs::NamespaceAndName& stateProviderName, - std::shared_ptr stateProvider) override; + void setStateProvider( + const avsCommon::avs::NamespaceAndName& stateProviderName, + std::shared_ptr stateProvider) override; - avsCommon::sdkInterfaces::SetStateResult setState(const avsCommon::avs::NamespaceAndName& stateProviderName, - const std::string& jsonState, const avsCommon::avs::StateRefreshPolicy& refreshPolicy, - const unsigned int stateRequestToken = 0) override; + avsCommon::sdkInterfaces::SetStateResult setState( + const avsCommon::avs::NamespaceAndName& stateProviderName, + const std::string& jsonState, + const avsCommon::avs::StateRefreshPolicy& refreshPolicy, + const unsigned int stateRequestToken = 0) override; void getContext(std::shared_ptr contextRequester) override; @@ -86,11 +87,11 @@ class ContextManager: public avsCommon::sdkInterfaces::ContextManagerInterface { * @param initJsonState The state of the @c StateProviderInterface. * @param refreshPolicy The refresh policy of the state of the @c StateProviderInterface. */ - StateInfo(std::shared_ptr initStateProvider = nullptr, - std::string initJsonState = "", - avsCommon::avs::StateRefreshPolicy initRefreshPolicy = - avsCommon::avs::StateRefreshPolicy::ALWAYS); -}; + StateInfo( + std::shared_ptr initStateProvider = nullptr, + std::string initJsonState = "", + avsCommon::avs::StateRefreshPolicy initRefreshPolicy = avsCommon::avs::StateRefreshPolicy::ALWAYS); + }; /// Constructor. ContextManager(); @@ -101,15 +102,17 @@ class ContextManager: public avsCommon::sdkInterfaces::ContextManagerInterface { void init(); /** - * Updates the state and refresh policy of the @c StateProviderInterface. The @c m_stateProviderMutex needs to be acquired - * before this function is called. + * Updates the state and refresh policy of the @c StateProviderInterface. The @c m_stateProviderMutex needs to be + * acquired before this function is called. * * @param stateProviderName The name of the @c StateProviderInterface whose state is being updated. * @param jsonState The state of the @c StateProviderInterface. * @param refreshPolicy The refresh policy for the state. */ - avsCommon::sdkInterfaces::SetStateResult updateStateLocked(const avsCommon::avs::NamespaceAndName& stateProviderName, - const std::string& jsonState, const avsCommon::avs::StateRefreshPolicy& refreshPolicy); + avsCommon::sdkInterfaces::SetStateResult updateStateLocked( + const avsCommon::avs::NamespaceAndName& stateProviderName, + const std::string& jsonState, + const avsCommon::avs::StateRefreshPolicy& refreshPolicy); /** * Requests the @c StateProviderInterfaces for state based on the refreshPolicy. @@ -127,8 +130,9 @@ class ContextManager: public avsCommon::sdkInterfaces::ContextManagerInterface { * @param contextRequestError The error to send to the context requesters. If the context is not an empty string, * this field is ignored. */ - void sendContextAndClearQueue(const std::string& context, - const avsCommon::sdkInterfaces::ContextRequestError& contextRequestError = + void sendContextAndClearQueue( + const std::string& context, + const avsCommon::sdkInterfaces::ContextRequestError& contextRequestError = avsCommon::sdkInterfaces::ContextRequestError::BUILD_CONTEXT_ERROR); /** @@ -144,8 +148,9 @@ class ContextManager: public avsCommon::sdkInterfaces::ContextManagerInterface { * @param allocator The rapidjson allocator to use to build the JSON header. * @return Header as a JSON object if successful else empty value. */ - rapidjson::Value buildHeader(const avsCommon::avs::NamespaceAndName& namespaceAndName, - rapidjson::Document::AllocatorType& allocator); + rapidjson::Value buildHeader( + const avsCommon::avs::NamespaceAndName& namespaceAndName, + rapidjson::Document::AllocatorType& allocator); /** * Builds a JSON state object. The state includes the header and the payload. @@ -155,8 +160,10 @@ class ContextManager: public avsCommon::sdkInterfaces::ContextManagerInterface { * @param allocator The rapidjson allocator to use to build the JSON header. * @return A state object if successful else empty value. */ - rapidjson::Value buildState(const avsCommon::avs::NamespaceAndName& namespaceAndName, - const std::string jsonPayloadValue, rapidjson::Document::AllocatorType& allocator); + rapidjson::Value buildState( + const avsCommon::avs::NamespaceAndName& namespaceAndName, + const std::string jsonPayloadValue, + rapidjson::Document::AllocatorType& allocator); /** * Builds the context states from a map of state provider namespace and name to state information provided by each @@ -215,7 +222,7 @@ class ContextManager: public avsCommon::sdkInterfaces::ContextManagerInterface { bool m_shutdown; }; -} // namespace contextManager -} // namespace alexaClientSDK +} // namespace contextManager +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_CONTEXT_MANAGER_INCLUDE_CONTEXT_MANAGER_CONTEXT_MANAGER_H +#endif // ALEXA_CLIENT_SDK_CONTEXTMANAGER_INCLUDE_CONTEXTMANAGER_CONTEXTMANAGER_H_ diff --git a/ContextManager/src/ContextManager.cpp b/ContextManager/src/ContextManager.cpp index 6f97facd5f..defbaf7daa 100644 --- a/ContextManager/src/ContextManager.cpp +++ b/ContextManager/src/ContextManager.cpp @@ -1,7 +1,5 @@ /* - * ContextManager.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -75,15 +73,16 @@ ContextManager::~ContextManager() { } } -void ContextManager::setStateProvider(const NamespaceAndName& stateProviderName, - std::shared_ptr stateProvider) { +void ContextManager::setStateProvider( + const NamespaceAndName& stateProviderName, + std::shared_ptr stateProvider) { std::lock_guard stateProviderLock(m_stateProviderMutex); if (!stateProvider) { m_namespaceNameToStateInfo.erase(stateProviderName); ACSDK_DEBUG(LX("setStateProvider") - .d("action", "removedStateProvider") - .d("namespace", stateProviderName.nameSpace) - .d("name", stateProviderName.name)); + .d("action", "removedStateProvider") + .d("namespace", stateProviderName.nameSpace) + .d("name", stateProviderName.name)); return; } auto stateInfoMappingIt = m_namespaceNameToStateInfo.find(stateProviderName); @@ -94,19 +93,22 @@ void ContextManager::setStateProvider(const NamespaceAndName& stateProviderName, } } -SetStateResult ContextManager::setState(const NamespaceAndName& stateProviderName, const std::string& jsonState, - const StateRefreshPolicy& refreshPolicy, const unsigned int stateRequestToken) { +SetStateResult ContextManager::setState( + const NamespaceAndName& stateProviderName, + const std::string& jsonState, + const StateRefreshPolicy& refreshPolicy, + const unsigned int stateRequestToken) { std::lock_guard stateProviderLock(m_stateProviderMutex); if (0 == stateRequestToken) { return updateStateLocked(stateProviderName, jsonState, refreshPolicy); } if (stateRequestToken != m_stateRequestToken) { ACSDK_ERROR(LX("setStateFailed") - .d("reason", "outdatedStateToken") - .d("namespace", stateProviderName.nameSpace) - .d("name", stateProviderName.name) - .sensitive("suppliedToken", stateRequestToken) - .sensitive("expectedToken", m_stateRequestToken)); + .d("reason", "outdatedStateToken") + .d("namespace", stateProviderName.nameSpace) + .d("name", stateProviderName.name) + .sensitive("suppliedToken", stateRequestToken) + .sensitive("expectedToken", m_stateRequestToken)); return SetStateResult::STATE_TOKEN_OUTDATED; } @@ -141,30 +143,32 @@ void ContextManager::getContext(std::shared_ptr conte } ContextManager::StateInfo::StateInfo( - std::shared_ptr initStateProvider, - std::string initJsonState, avsCommon::avs::StateRefreshPolicy initRefreshPolicy): - stateProvider{initStateProvider}, jsonState{initJsonState}, refreshPolicy{initRefreshPolicy} { - + std::shared_ptr initStateProvider, + std::string initJsonState, + avsCommon::avs::StateRefreshPolicy initRefreshPolicy) : + stateProvider{initStateProvider}, + jsonState{initJsonState}, + refreshPolicy{initRefreshPolicy} { } -ContextManager::ContextManager() : - m_stateRequestToken{0}, - m_shutdown{false} { +ContextManager::ContextManager() : m_stateRequestToken{0}, m_shutdown{false} { } void ContextManager::init() { m_updateStatesThread = std::thread(&ContextManager::updateStatesLoop, this); } -SetStateResult ContextManager::updateStateLocked(const NamespaceAndName& stateProviderName, - const std::string& jsonState, const StateRefreshPolicy& refreshPolicy) { +SetStateResult ContextManager::updateStateLocked( + const NamespaceAndName& stateProviderName, + const std::string& jsonState, + const StateRefreshPolicy& refreshPolicy) { auto stateInfoMappingIt = m_namespaceNameToStateInfo.find(stateProviderName); if (m_namespaceNameToStateInfo.end() == stateInfoMappingIt) { - if (StateRefreshPolicy::ALWAYS == refreshPolicy) { + if (StateRefreshPolicy::ALWAYS == refreshPolicy || StateRefreshPolicy::SOMETIMES == refreshPolicy) { ACSDK_ERROR(LX("updateStateLockedFailed") - .d("reason", "unregisteredStateProvider") - .d("namespace", stateProviderName.nameSpace) - .d("name", stateProviderName.name)); + .d("reason", "unregisteredStateProvider") + .d("namespace", stateProviderName.nameSpace) + .d("name", stateProviderName.name)); return SetStateResult::STATE_PROVIDER_NOT_REGISTERED; } m_namespaceNameToStateInfo[stateProviderName] = std::make_shared(nullptr, jsonState, refreshPolicy); @@ -172,10 +176,10 @@ SetStateResult ContextManager::updateStateLocked(const NamespaceAndName& statePr stateInfoMappingIt->second->jsonState = jsonState; stateInfoMappingIt->second->refreshPolicy = refreshPolicy; ACSDK_DEBUG(LX("updateStateLocked") - .d("action", "updatedState") - .d("state", jsonState) - .d("namespace", stateProviderName.nameSpace) - .d("name", stateProviderName.name)); + .d("action", "updatedState") + .sensitive("state", jsonState) + .d("namespace", stateProviderName.nameSpace) + .d("name", stateProviderName.name)); } return SetStateResult::SUCCESS; } @@ -192,18 +196,20 @@ void ContextManager::requestStatesLocked(std::unique_lock& stateProv unsigned int curStateReqToken(m_stateRequestToken); for (auto it = m_namespaceNameToStateInfo.begin(); it != m_namespaceNameToStateInfo.end(); ++it) { - auto & stateInfo = it->second; - if (StateRefreshPolicy::ALWAYS == stateInfo->refreshPolicy) { + auto& stateInfo = it->second; + if (StateRefreshPolicy::ALWAYS == stateInfo->refreshPolicy || + StateRefreshPolicy::SOMETIMES == stateInfo->refreshPolicy) { m_pendingOnStateProviders.insert(it->first); stateProviderLock.unlock(); - stateInfo->stateProvider->provideState(curStateReqToken); + stateInfo->stateProvider->provideState(it->first, curStateReqToken); stateProviderLock.lock(); } } } -void ContextManager::sendContextAndClearQueue(const std::string& context, - const ContextRequestError& contextRequestError) { +void ContextManager::sendContextAndClearQueue( + const std::string& context, + const ContextRequestError& contextRequestError) { std::unique_lock contextRequesterLock(m_contextRequesterMutex); while (!m_contextRequesterQueue.empty()) { auto currentContextRequester = m_contextRequesterQueue.front(); @@ -232,8 +238,9 @@ void ContextManager::updateStatesLoop() { requestStatesLocked(stateProviderLock); if (!m_pendingOnStateProviders.empty()) { - if (!m_setStateCompleteNotifier.wait_for(stateProviderLock, PROVIDE_STATE_DEFAULT_TIMEOUT, - [this]() { return m_pendingOnStateProviders.empty(); })) { + if (!m_setStateCompleteNotifier.wait_for(stateProviderLock, PROVIDE_STATE_DEFAULT_TIMEOUT, [this]() { + return m_pendingOnStateProviders.empty(); + })) { stateProviderLock.unlock(); ACSDK_ERROR(LX("updateStatesLoopFailed").d("reason", "stateProviderTimedOut")); sendContextAndClearQueue("", ContextRequestError::STATE_PROVIDER_TIMEDOUT); @@ -246,32 +253,31 @@ void ContextManager::updateStatesLoop() { } } -Value ContextManager::buildHeader(const NamespaceAndName& namespaceAndName, - Document::AllocatorType& allocator) { +Value ContextManager::buildHeader(const NamespaceAndName& namespaceAndName, Document::AllocatorType& allocator) { Value header(kObjectType); - header.AddMember(StringRef(NAMESPACE_JSON_KEY), namespaceAndName.nameSpace, allocator ); + header.AddMember(StringRef(NAMESPACE_JSON_KEY), namespaceAndName.nameSpace, allocator); header.AddMember(StringRef(NAME_JSON_KEY), namespaceAndName.name, allocator); return header; } -Value ContextManager::buildState(const NamespaceAndName& namespaceAndName, const std::string jsonPayloadValue, - Document::AllocatorType& allocator) { +Value ContextManager::buildState( + const NamespaceAndName& namespaceAndName, + const std::string jsonPayloadValue, + Document::AllocatorType& allocator) { Document payload; Value state(kObjectType); Value header = buildHeader(namespaceAndName, allocator); // If the header is an empty object or during parsing the payload, an error occurs, return an empty event value. - if (header.ObjectEmpty()){ + if (header.ObjectEmpty()) { ACSDK_ERROR(LX("buildStateFailed").d("reason", "emptyHeader")); return state; } if (payload.Parse(jsonPayloadValue).HasParseError()) { - ACSDK_ERROR(LX("buildStateFailed") - .d("reason", "parseError") - .d("payload", jsonPayloadValue)); + ACSDK_ERROR(LX("buildStateFailed").d("reason", "parseError").d("payload", jsonPayloadValue)); return state; } @@ -293,8 +299,16 @@ void ContextManager::sendContextToRequesters() { std::unique_lock stateProviderLock(m_stateProviderMutex); for (auto it = m_namespaceNameToStateInfo.begin(); it != m_namespaceNameToStateInfo.end(); ++it) { auto& stateInfo = it->second; + if (stateInfo->jsonState.empty() && StateRefreshPolicy::SOMETIMES == stateInfo->refreshPolicy) { + /* + * If jsonState supplied by the state provider is empty and it has a refreshPolicy of SOMETIMES, it means + * that it doesn't want to provide state. + */ + ACSDK_DEBUG9(LX("buildContextIgnored").d("namespace", it->first.nameSpace).d("name", it->first.name)); + continue; + } Value jsonState = buildState(it->first, stateInfo->jsonState, allocator); - if (jsonState.ObjectEmpty()){ + if (jsonState.ObjectEmpty()) { ACSDK_ERROR(LX("buildContextFailed").d("reason", "buildStateFailed")); errorBuildingContext = true; break; @@ -315,10 +329,10 @@ void ContextManager::sendContextToRequesters() { if (errorBuildingContext) { sendContextAndClearQueue("", ContextRequestError::BUILD_CONTEXT_ERROR); } else { - ACSDK_DEBUG(LX("buildContextSuccessful").d("context", jsonContextBuf.GetString())); + ACSDK_DEBUG(LX("buildContextSuccessful").sensitive("context", jsonContextBuf.GetString())); sendContextAndClearQueue(jsonContextBuf.GetString()); } } -} // namespace contextManager -} // namespace alexaClientSDK +} // namespace contextManager +} // namespace alexaClientSDK diff --git a/ContextManager/test/ContextManagerTest.cpp b/ContextManager/test/ContextManagerTest.cpp index 41a75aece4..f8cb1f1752 100644 --- a/ContextManager/test/ContextManagerTest.cpp +++ b/ContextManager/test/ContextManagerTest.cpp @@ -1,7 +1,5 @@ /* - * ContextManagerTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,6 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ + #include #include @@ -31,74 +30,74 @@ using namespace avsCommon::sdkInterfaces; /// Payload for SpeechSynthesizer state when it is playing back audio. static const std::string SPEECH_SYNTHESIZER_PAYLOAD_PLAYING = - "{" - "\"playerActivity\":\"PLAYING\"," - "\"offsetInMilliseconds\":5," - "\"token\":\"\"" - "}"; + "{" + "\"playerActivity\":\"PLAYING\"," + "\"offsetInMilliseconds\":5," + "\"token\":\"\"" + "}"; /// Payload for SpeechSynthesizer state when playback has finished. static const std::string SPEECH_SYNTHESIZER_PAYLOAD_FINISHED = - "{" - "\"playerActivity\":\"FINISHED\"," - "\"offsetInMilliseconds\":0," - "\"token\":\"\"" - "}"; + "{" + "\"playerActivity\":\"FINISHED\"," + "\"offsetInMilliseconds\":0," + "\"token\":\"\"" + "}"; /// Payload for AudioPlayer. static const std::string AUDIO_PLAYER_PAYLOAD = - "{" - "\"playerActivity\":\"FINISHED\"," - "\"offsetInMilliseconds\":0," - "\"token\":\"\"" - "}"; + "{" + "\"playerActivity\":\"FINISHED\"," + "\"offsetInMilliseconds\":0," + "\"token\":\"\"" + "}"; /// Payload for Alerts. static const std::string ALERTS_PAYLOAD = - "{" - "\"allAlerts\": [" - "{" - "\"token\": \"\"," - "\"type\": \"TIMER\"," - "\"scheduledTime\": \"\"" - "}" - "]," - "\"activeAlerts\": [" - "{" - "\"token\": \"\"," - "\"type\": \"TIMER\"," - "\"scheduledTime\": \"\"" - "}" - "]" - "}"; + "{" + "\"allAlerts\": [" + "{" + "\"token\": \"\"," + "\"type\": \"TIMER\"," + "\"scheduledTime\": \"\"" + "}" + "]," + "\"activeAlerts\": [" + "{" + "\"token\": \"\"," + "\"type\": \"TIMER\"," + "\"scheduledTime\": \"\"" + "}" + "]" + "}"; /// Context used for testing. static const std::string CONTEXT_TEST = - "{" - "\"context\":[" - "{" - "\"header\":{" - "\"namespace\":\"AudioPlayer\"," - "\"name\":\"PlaybackState\"" - "}," - "\"payload\":{" - "\"playerActivity\":\"FINISHED\"," - "\"offsetInMilliseconds\":0," - "\"token\":\"\"" - "}" - "}," - "{" - "\"header\":{" - "\"namespace\":\"SpeechSynthesizer\"," - "\"name\":\"SpeechState\"" - "}," - "\"payload\":{" - "\"playerActivity\":\"FINISHED\"," - "\"offsetInMilliseconds\":0," - "\"token\":\"\"" - "}" - "}" - "]" - "}"; + "{" + "\"context\":[" + "{" + "\"header\":{" + "\"namespace\":\"AudioPlayer\"," + "\"name\":\"PlaybackState\"" + "}," + "\"payload\":{" + "\"playerActivity\":\"FINISHED\"," + "\"offsetInMilliseconds\":0," + "\"token\":\"\"" + "}" + "}," + "{" + "\"header\":{" + "\"namespace\":\"SpeechSynthesizer\"," + "\"name\":\"SpeechState\"" + "}," + "\"payload\":{" + "\"playerActivity\":\"FINISHED\"," + "\"offsetInMilliseconds\":0," + "\"token\":\"\"" + "}" + "}" + "]" + "}"; /// Default time @c doProvide sleeps before it calls @c setState. static const std::chrono::milliseconds DEFAULT_SLEEP_TIME = std::chrono::milliseconds(10); @@ -142,6 +141,9 @@ static const NamespaceAndName AUDIO_PLAYER(NAMESPACE_AUDIO_PLAYER, NAME_PLAYBACK /// Alerts namespace and name static const NamespaceAndName ALERTS(NAMESPACE_ALERTS, NAME_ALERTS_STATE); +/// Dummy provider namespace and name +static const NamespaceAndName DUMMY_PROVIDER("Dummy", "DummyName"); + /** * @c MockContextRequester used to verify @c ContextManager behavior. */ @@ -217,13 +219,12 @@ class MockContextRequester : public ContextRequesterInterface { std::string m_context; }; -std::shared_ptr MockContextRequester::create - (std::shared_ptr contextManager) { +std::shared_ptr MockContextRequester::create(std::shared_ptr contextManager) { auto result = std::make_shared(contextManager); return result; } -MockContextRequester::MockContextRequester(std::shared_ptr contextManager): +MockContextRequester::MockContextRequester(std::shared_ptr contextManager) : m_contextManager{contextManager}, m_contextAvailable{false}, m_contextFailure{false} { @@ -247,8 +248,7 @@ void MockContextRequester::onContextFailure(const ContextRequestError error) { bool MockContextRequester::waitForContext(const std::chrono::milliseconds duration) { std::unique_lock lock(m_mutexSuccess); - if (!m_wakeTriggerSuccess.wait_for(lock, duration, [this]() { return (m_contextAvailable || m_contextFailure ); })) - { + if (!m_wakeTriggerSuccess.wait_for(lock, duration, [this]() { return (m_contextAvailable || m_contextFailure); })) { return false; } return true; @@ -256,8 +256,7 @@ bool MockContextRequester::waitForContext(const std::chrono::milliseconds durati bool MockContextRequester::waitForFailure(const std::chrono::milliseconds duration) { std::unique_lock lock(m_mutexFailure); - if (!m_wakeTriggerFailure.wait_for(lock, duration, [this]() { return (m_contextAvailable || m_contextFailure ); })) - { + if (!m_wakeTriggerFailure.wait_for(lock, duration, [this]() { return (m_contextAvailable || m_contextFailure); })) { return false; } return true; @@ -283,8 +282,11 @@ class MockStateProvider : public StateProviderInterface { * @return A pointer to an instance of the @c MockStateProvider. */ static std::shared_ptr create( - std::shared_ptr contextManager, const NamespaceAndName& namespaceAndName, - const std::string& state, const StateRefreshPolicy& refreshPolicy, const std::chrono::milliseconds delayTime); + std::shared_ptr contextManager, + const NamespaceAndName& namespaceAndName, + const std::string& state, + const StateRefreshPolicy& refreshPolicy, + const std::chrono::milliseconds delayTime); /** * Constructor. It sets up the state and refresh policy that needs to be sent in response to a @c provideContext @@ -297,17 +299,20 @@ class MockStateProvider : public StateProviderInterface { * @param delayTime The time @c m_doProvideThread sleeps before updating state via @c setState. * @return A pointer to an instance of the @c MockStateProvider. */ - MockStateProvider(std::shared_ptr contextManager, - const NamespaceAndName& namespaceAndName, const std::string& state, - const StateRefreshPolicy& refreshPolicy, const std::chrono::milliseconds delayTime); + MockStateProvider( + std::shared_ptr contextManager, + const NamespaceAndName& namespaceAndName, + const std::string& state, + const StateRefreshPolicy& refreshPolicy, + const std::chrono::milliseconds delayTime); ~MockStateProvider(); - void provideState(unsigned int currentstateRequestToken) override; + void provideState(const NamespaceAndName& stateProviderName, unsigned int currentstateRequestToken) override; /** * Method for m_doProvideThread. It waits for @c m_delayTime and then calls @c setState with the state @c m_state - * and the refresh policy @c m_refreshPolicy the @c stateProviderInterface was initialized with. + * and the refresh policy @c m_refreshPolicy the @c stateProviderInterface was initialized with. */ void doProvideState(); @@ -329,7 +334,7 @@ class MockStateProvider : public StateProviderInterface { /// The token provided by the @c ContextManager. unsigned int m_stateRequestToken; - /// Thread to execute the doProvide. + /// Thread to execute the doProvide. std::thread m_doProvideThread; /// Mutex to protect the @c m_provideState. @@ -337,28 +342,34 @@ class MockStateProvider : public StateProviderInterface { /// The condition variable used to wake up @c m_doProvideThread when the @c ContextManager requests for state. std::condition_variable m_providerWakeTrigger; - + /// The time the @c m_doProvideThread sleeps before providing state. std::chrono::milliseconds m_delayTime; - /// Flag to indicate when a @c provideState has been called. + /// Flag to indicate when a @c provideState has been called. bool m_provideState; - + /// Flag to indicate when the @c MockStateProvider is shutting down. When set, @c m_doProvideThread needs to return. bool m_stateProviderShutdown; }; -std::shared_ptr MockStateProvider::create - (std::shared_ptr contextManager, const NamespaceAndName& stateProviderName, - const std::string& state, const StateRefreshPolicy& refreshPolicy, const std::chrono::milliseconds delayTime) { - auto result = std::make_shared(contextManager, stateProviderName, state, - refreshPolicy, delayTime); +std::shared_ptr MockStateProvider::create( + std::shared_ptr contextManager, + const NamespaceAndName& stateProviderName, + const std::string& state, + const StateRefreshPolicy& refreshPolicy, + const std::chrono::milliseconds delayTime) { + auto result = + std::make_shared(contextManager, stateProviderName, state, refreshPolicy, delayTime); return result; } -MockStateProvider::MockStateProvider(std::shared_ptr contextManager, - const NamespaceAndName& stateProviderName, const std::string& state, - const StateRefreshPolicy& refreshPolicy, const std::chrono::milliseconds delayTime): +MockStateProvider::MockStateProvider( + std::shared_ptr contextManager, + const NamespaceAndName& stateProviderName, + const std::string& state, + const StateRefreshPolicy& refreshPolicy, + const std::chrono::milliseconds delayTime) : m_contextManager{contextManager}, m_namespaceAndName{stateProviderName}, m_state{state}, @@ -367,7 +378,7 @@ MockStateProvider::MockStateProvider(std::shared_ptr contextMana m_delayTime{delayTime}, m_provideState{false}, m_stateProviderShutdown{false} { - m_doProvideThread = std::thread(&MockStateProvider::doProvideState, this); + m_doProvideThread = std::thread(&MockStateProvider::doProvideState, this); } MockStateProvider::~MockStateProvider() { @@ -380,7 +391,7 @@ MockStateProvider::~MockStateProvider() { } } -void MockStateProvider::provideState(unsigned int stateRequestToken) { +void MockStateProvider::provideState(const NamespaceAndName& stateProviderName, unsigned int stateRequestToken) { m_stateRequestToken = stateRequestToken; std::lock_guard lock(m_providerMutex); m_provideState = true; @@ -396,8 +407,9 @@ void MockStateProvider::doProvideState() { return; } std::this_thread::sleep_for(m_delayTime); - EXPECT_EQ(SetStateResult::SUCCESS, m_contextManager->setState(m_namespaceAndName, m_state, m_refreshPolicy, - m_stateRequestToken)); + EXPECT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState(m_namespaceAndName, m_state, m_refreshPolicy, m_stateRequestToken)); m_provideState = false; lock.unlock(); } @@ -429,10 +441,14 @@ class ContextManagerTest : public ::testing::Test { void ContextManagerTest::SetUp() { m_contextManager = ContextManager::create(); - m_speechSynthesizer = MockStateProvider::create(m_contextManager, SPEECH_SYNTHESIZER, - SPEECH_SYNTHESIZER_PAYLOAD_FINISHED, StateRefreshPolicy::NEVER, DEFAULT_SLEEP_TIME); - m_audioPlayer = MockStateProvider::create(m_contextManager, AUDIO_PLAYER, - AUDIO_PLAYER_PAYLOAD, StateRefreshPolicy::NEVER, DEFAULT_SLEEP_TIME); + m_speechSynthesizer = MockStateProvider::create( + m_contextManager, + SPEECH_SYNTHESIZER, + SPEECH_SYNTHESIZER_PAYLOAD_FINISHED, + StateRefreshPolicy::NEVER, + DEFAULT_SLEEP_TIME); + m_audioPlayer = MockStateProvider::create( + m_contextManager, AUDIO_PLAYER, AUDIO_PLAYER_PAYLOAD, StateRefreshPolicy::NEVER, DEFAULT_SLEEP_TIME); m_contextManager->setStateProvider(SPEECH_SYNTHESIZER, m_speechSynthesizer); m_contextManager->setStateProvider(AUDIO_PLAYER, m_audioPlayer); m_contextRequester = MockContextRequester::create(m_contextManager); @@ -443,8 +459,12 @@ void ContextManagerTest::SetUp() { * @c ContextManager. Expect @c SetStateResult @c SUCCESS is returned. */ TEST_F(ContextManagerTest, testSetStateForRegisteredProvider) { - ASSERT_EQ(SetStateResult::SUCCESS, m_contextManager->setState(SPEECH_SYNTHESIZER, - SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, StateRefreshPolicy::ALWAYS, + ASSERT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState( + SPEECH_SYNTHESIZER, + SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, + StateRefreshPolicy::ALWAYS, m_speechSynthesizer->getCurrentstateRequestToken())); } @@ -461,10 +481,12 @@ TEST_F(ContextManagerTest, testSetStateForUnregisteredProvider) { * the @c ContextManager. Expect @c SetStateResult @c STATE_PROVIDER_NOT_REGISTERED is returned. */ TEST_F(ContextManagerTest, testSetStateForUnregisteredProviderWithRefreshPolicyAlways) { - m_alerts = MockStateProvider::create(m_contextManager, ALERTS, ALERTS_PAYLOAD, StateRefreshPolicy::NEVER, - DEFAULT_SLEEP_TIME); - ASSERT_EQ(SetStateResult::STATE_PROVIDER_NOT_REGISTERED, m_contextManager->setState(ALERTS, ALERTS_PAYLOAD, - StateRefreshPolicy::ALWAYS, m_alerts->getCurrentstateRequestToken())); + m_alerts = MockStateProvider::create( + m_contextManager, ALERTS, ALERTS_PAYLOAD, StateRefreshPolicy::NEVER, DEFAULT_SLEEP_TIME); + ASSERT_EQ( + SetStateResult::STATE_PROVIDER_NOT_REGISTERED, + m_contextManager->setState( + ALERTS, ALERTS_PAYLOAD, StateRefreshPolicy::ALWAYS, m_alerts->getCurrentstateRequestToken())); } /** @@ -473,11 +495,20 @@ TEST_F(ContextManagerTest, testSetStateForUnregisteredProviderWithRefreshPolicyA * timeout period. Check the context that is returned by the @c ContextManager. Expect it should match the test value. */ TEST_F(ContextManagerTest, testGetContext) { - ASSERT_EQ(SetStateResult::SUCCESS, m_contextManager->setState(SPEECH_SYNTHESIZER, - SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, StateRefreshPolicy::ALWAYS, + ASSERT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState( + SPEECH_SYNTHESIZER, + SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, + StateRefreshPolicy::ALWAYS, m_speechSynthesizer->getCurrentstateRequestToken())); - ASSERT_EQ(SetStateResult::SUCCESS, m_contextManager->setState(AUDIO_PLAYER, AUDIO_PLAYER_PAYLOAD, - StateRefreshPolicy::ALWAYS, m_audioPlayer->getCurrentstateRequestToken())); + ASSERT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState( + AUDIO_PLAYER, + AUDIO_PLAYER_PAYLOAD, + StateRefreshPolicy::ALWAYS, + m_audioPlayer->getCurrentstateRequestToken())); m_contextManager->getContext(m_contextRequester); ASSERT_TRUE(m_contextRequester->waitForContext(DEFAULT_TIMEOUT)); ASSERT_EQ(CONTEXT_TEST, m_contextRequester->getContextString()); @@ -489,11 +520,20 @@ TEST_F(ContextManagerTest, testGetContext) { * returned to each of the requesters within the timeout period. */ TEST_F(ContextManagerTest, testMultipleGetContextRequests) { - ASSERT_EQ(SetStateResult::SUCCESS, m_contextManager->setState(SPEECH_SYNTHESIZER, - SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, StateRefreshPolicy::ALWAYS, + ASSERT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState( + SPEECH_SYNTHESIZER, + SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, + StateRefreshPolicy::ALWAYS, m_speechSynthesizer->getCurrentstateRequestToken())); - ASSERT_EQ(SetStateResult::SUCCESS, m_contextManager->setState(AUDIO_PLAYER, AUDIO_PLAYER_PAYLOAD, - StateRefreshPolicy::ALWAYS,m_audioPlayer->getCurrentstateRequestToken())); + ASSERT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState( + AUDIO_PLAYER, + AUDIO_PLAYER_PAYLOAD, + StateRefreshPolicy::ALWAYS, + m_audioPlayer->getCurrentstateRequestToken())); m_contextRequester2 = MockContextRequester::create(m_contextManager); m_contextManager->getContext(m_contextRequester); m_contextManager->getContext(m_contextRequester2); @@ -513,18 +553,31 @@ TEST_F(ContextManagerTest, testMultipleGetContextRequests) { * timeout period. Check the context that is returned by the @c ContextManager matches the test context. */ TEST_F(ContextManagerTest, testSetProviderTwice) { - ASSERT_EQ(SetStateResult::SUCCESS, m_contextManager->setState(SPEECH_SYNTHESIZER, - SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, StateRefreshPolicy::ALWAYS, + ASSERT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState( + SPEECH_SYNTHESIZER, + SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, + StateRefreshPolicy::ALWAYS, m_speechSynthesizer->getCurrentstateRequestToken())); - ASSERT_EQ(SetStateResult::SUCCESS, m_contextManager->setState(AUDIO_PLAYER, AUDIO_PLAYER_PAYLOAD, - StateRefreshPolicy::ALWAYS, m_audioPlayer->getCurrentstateRequestToken())); + ASSERT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState( + AUDIO_PLAYER, + AUDIO_PLAYER_PAYLOAD, + StateRefreshPolicy::ALWAYS, + m_audioPlayer->getCurrentstateRequestToken())); m_contextManager->getContext(m_contextRequester); ASSERT_TRUE(m_contextRequester->waitForContext(DEFAULT_TIMEOUT)); ASSERT_EQ(CONTEXT_TEST, m_contextRequester->getContextString()); // Call setStateProvider for a registered StateProviderInterface. m_contextManager->setStateProvider(SPEECH_SYNTHESIZER, m_speechSynthesizer); - ASSERT_EQ(SetStateResult::SUCCESS, m_contextManager->setState(SPEECH_SYNTHESIZER, - SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, StateRefreshPolicy::ALWAYS, + ASSERT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState( + SPEECH_SYNTHESIZER, + SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, + StateRefreshPolicy::ALWAYS, m_speechSynthesizer->getCurrentstateRequestToken())); m_contextManager->getContext(m_contextRequester); ASSERT_TRUE(m_contextRequester->waitForContext(DEFAULT_TIMEOUT)); @@ -537,16 +590,27 @@ TEST_F(ContextManagerTest, testSetProviderTwice) { * @c getContext. Expect that failure occurs due to timeout. */ TEST_F(ContextManagerTest, testProvideStateTimeout) { - m_alerts = MockStateProvider::create(m_contextManager, ALERTS, - ALERTS_PAYLOAD, StateRefreshPolicy::NEVER, TIMEOUT_SLEEP_TIME); + m_alerts = MockStateProvider::create( + m_contextManager, ALERTS, ALERTS_PAYLOAD, StateRefreshPolicy::NEVER, TIMEOUT_SLEEP_TIME); m_contextManager->setStateProvider(ALERTS, m_alerts); - ASSERT_EQ(SetStateResult::SUCCESS, m_contextManager->setState(SPEECH_SYNTHESIZER, - SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, StateRefreshPolicy::ALWAYS, + ASSERT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState( + SPEECH_SYNTHESIZER, + SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, + StateRefreshPolicy::ALWAYS, m_speechSynthesizer->getCurrentstateRequestToken())); - ASSERT_EQ(SetStateResult::SUCCESS, m_contextManager->setState(AUDIO_PLAYER, AUDIO_PLAYER_PAYLOAD, - StateRefreshPolicy::ALWAYS, m_audioPlayer->getCurrentstateRequestToken())); - ASSERT_EQ(SetStateResult::SUCCESS, m_contextManager->setState(ALERTS, ALERTS_PAYLOAD, - StateRefreshPolicy::ALWAYS, m_alerts->getCurrentstateRequestToken())); + ASSERT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState( + AUDIO_PLAYER, + AUDIO_PLAYER_PAYLOAD, + StateRefreshPolicy::ALWAYS, + m_audioPlayer->getCurrentstateRequestToken())); + ASSERT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState( + ALERTS, ALERTS_PAYLOAD, StateRefreshPolicy::ALWAYS, m_alerts->getCurrentstateRequestToken())); m_contextManager->getContext(m_contextRequester); ASSERT_TRUE(m_contextRequester->waitForFailure(FAILURE_TIMEOUT)); } @@ -558,8 +622,12 @@ TEST_F(ContextManagerTest, testProvideStateTimeout) { */ TEST_F(ContextManagerTest, testRemoveProvider) { m_contextManager->setStateProvider(SPEECH_SYNTHESIZER, nullptr); - ASSERT_EQ(SetStateResult::STATE_PROVIDER_NOT_REGISTERED ,m_contextManager->setState(SPEECH_SYNTHESIZER, - SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, StateRefreshPolicy::ALWAYS, + ASSERT_EQ( + SetStateResult::STATE_PROVIDER_NOT_REGISTERED, + m_contextManager->setState( + SPEECH_SYNTHESIZER, + SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, + StateRefreshPolicy::ALWAYS, m_speechSynthesizer->getCurrentstateRequestToken())); } @@ -571,12 +639,56 @@ TEST_F(ContextManagerTest, testRemoveProvider) { TEST_F(ContextManagerTest, testIncorrectToken) { m_contextManager->getContext(m_contextRequester); ASSERT_TRUE(m_contextRequester->waitForContext(DEFAULT_TIMEOUT)); - ASSERT_EQ(SetStateResult::STATE_TOKEN_OUTDATED ,m_contextManager->setState(SPEECH_SYNTHESIZER, - SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, StateRefreshPolicy::ALWAYS, - m_speechSynthesizer->getCurrentstateRequestToken()+1)); + ASSERT_EQ( + SetStateResult::STATE_TOKEN_OUTDATED, + m_contextManager->setState( + SPEECH_SYNTHESIZER, + SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, + StateRefreshPolicy::ALWAYS, + m_speechSynthesizer->getCurrentstateRequestToken() + 1)); } -} // namespace test -} // namespace contextManager -} // namespace alexaClientSDK +/** + * Set the states with a @c StateRefreshPolicy @c ALWAYS for @c StateProviderInterfaces that are registered with the + * @c ContextManager. Request for context by calling @c getContext. Expect that the context is returned within the + * timeout period. + * + * There's a dummyProvider with StateRefreshPolicy @c SOMETIMES that returns an empty context. Check ContextManager is + * okay with it and would include the context provided by the dummyProvider. + * + * Check the context that is returned by the @c ContextManager. Expect it should match the test value. + */ +// ACSDK-1217 - ContextManagerTest::testEmptyProvider fails on Windows +#if !defined(_WIN32) || defined(RESOLVED_ACSDK_1217) +TEST_F(ContextManagerTest, testEmptyProvider) { + auto dummyProvider = MockStateProvider::create( + m_contextManager, DUMMY_PROVIDER, "", StateRefreshPolicy::SOMETIMES, DEFAULT_SLEEP_TIME); + m_contextManager->setStateProvider(DUMMY_PROVIDER, dummyProvider); + + ASSERT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState( + SPEECH_SYNTHESIZER, + SPEECH_SYNTHESIZER_PAYLOAD_PLAYING, + StateRefreshPolicy::ALWAYS, + m_speechSynthesizer->getCurrentstateRequestToken())); + ASSERT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState( + AUDIO_PLAYER, + AUDIO_PLAYER_PAYLOAD, + StateRefreshPolicy::ALWAYS, + m_audioPlayer->getCurrentstateRequestToken())); + ASSERT_EQ( + SetStateResult::SUCCESS, + m_contextManager->setState( + DUMMY_PROVIDER, "", StateRefreshPolicy::ALWAYS, dummyProvider->getCurrentstateRequestToken())); + m_contextManager->getContext(m_contextRequester); + ASSERT_TRUE(m_contextRequester->waitForContext(DEFAULT_TIMEOUT)); + ASSERT_EQ(CONTEXT_TEST, m_contextRequester->getContextString()); +} +#endif +} // namespace test +} // namespace contextManager +} // namespace alexaClientSDK diff --git a/ESP/CMakeLists.txt b/ESP/CMakeLists.txt new file mode 100644 index 0000000000..6606e39d9a --- /dev/null +++ b/ESP/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) +project(ESP LANGUAGES CXX C) + +include(../build/BuildDefaults.cmake) + +add_subdirectory("src") diff --git a/ESP/include/ESP/DummyESPDataProvider.h b/ESP/include/ESP/DummyESPDataProvider.h new file mode 100644 index 0000000000..b38fc90cdb --- /dev/null +++ b/ESP/include/ESP/DummyESPDataProvider.h @@ -0,0 +1,62 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ +#ifndef ALEXA_CLIENT_SDK_ESP_INCLUDE_ESP_DUMMYESPDATAPROVIDER_H_ +#define ALEXA_CLIENT_SDK_ESP_INCLUDE_ESP_DUMMYESPDATAPROVIDER_H_ + +#include + +#include +#include +#include + +namespace alexaClientSDK { +namespace esp { + +/** + * This is a dummy provider that allows customer to manually test ESP or just to keep it disabled. + */ +class DummyESPDataProvider + : public ESPDataProviderInterface + , public ESPDataModifierInterface { +public: + /** + * DummyESPDataProvider Constructor. + */ + DummyESPDataProvider(); + + /// @name Overridden ESPDataProviderInterface methods. + /// @{ + capabilityAgents::aip::ESPData getESPData() override; + bool isEnabled() const override; + void disable() override; + void enable() override; + /// @} + + /// @name Overridden ESPDataModifierInterface methods. + /// @{ + void setVoiceEnergy(const std::string& voiceEnergy) override; + void setAmbientEnergy(const std::string& ambientEnergy) override; + /// @} + +private: + std::string m_voiceEnergy; + std::string m_ambientEnergy; + bool m_enabled; +}; + +} // namespace esp +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_ESP_INCLUDE_ESP_DUMMYESPDATAPROVIDER_H_ diff --git a/ESP/include/ESP/ESPDataModifierInterface.h b/ESP/include/ESP/ESPDataModifierInterface.h new file mode 100644 index 0000000000..a7792c6e33 --- /dev/null +++ b/ESP/include/ESP/ESPDataModifierInterface.h @@ -0,0 +1,53 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ +#ifndef ALEXA_CLIENT_SDK_ESP_INCLUDE_ESP_ESPDATAMODIFIERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_ESP_INCLUDE_ESP_ESPDATAMODIFIERINTERFACE_H_ + +#include + +#include + +namespace alexaClientSDK { +namespace esp { + +/** + * The ESPDataModifierInterface is a debugging interface to allow modifying the ESPData in the DummyESPDataProvider. + */ +class ESPDataModifierInterface { +public: + /** + * Destructor + */ + virtual ~ESPDataModifierInterface() = default; + + /** + * Set new voice energy. + * + * @param voiceEnergy New voice energy value. + */ + virtual void setVoiceEnergy(const std::string& voiceEnergy) = 0; + + /** + * Set new ambient energy. + * + * @param ambientEnergy New ambient energy value. + */ + virtual void setAmbientEnergy(const std::string& ambientEnergy) = 0; +}; + +} // namespace esp +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_ESP_INCLUDE_ESP_ESPDATAMODIFIERINTERFACE_H_ diff --git a/ESP/include/ESP/ESPDataProvider.h b/ESP/include/ESP/ESPDataProvider.h new file mode 100644 index 0000000000..4c53b0ecaa --- /dev/null +++ b/ESP/include/ESP/ESPDataProvider.h @@ -0,0 +1,118 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ +#ifndef ALEXA_CLIENT_SDK_ESP_INCLUDE_ESP_ESPDATAPROVIDER_H_ +#define ALEXA_CLIENT_SDK_ESP_INCLUDE_ESP_ESPDATAPROVIDER_H_ + +#include +#include +#include +#include + +#include "DA_Metrics/FrameEnergyComputing.h" +#include "VAD_Features/VAD_class.h" + +#include +#include +#include + +namespace alexaClientSDK { +namespace esp { + +/** + * The ESPDataProvider is used to connect the sample app with the ESP library. When enabled, the ESPDataProvider object + * feeds the ESP Library constantly using its own thread. + */ +class ESPDataProvider : public ESPDataProviderInterface { +public: + /** + * Create a unique pointer for an ESPDataProvider. + * + * @param audioProvider Should have the audio input stream used by the wakeword engine and the input parameters. + * @return A valid ESPDataProvider pointer if creation succeeds and a empty pointer if it fails. + */ + static std::unique_ptr create(const capabilityAgents::aip::AudioProvider& audioProvider); + + /** + * ESPDataProvider Destructor. + */ + ~ESPDataProvider(); + + /// @name Overridden ESPDataProviderInterface methods. + /// @{ + capabilityAgents::aip::ESPData getESPData() override; + bool isEnabled() const override; + void disable() override; + void enable() override; + /// @} + + /** + * Delete ESPDataProvider default constructor. + */ + ESPDataProvider() = delete; + + /** + * Delete ESPDataProvider copy constructor. + */ + ESPDataProvider(const ESPDataProvider&) = delete; + + /** + * Delete ESPDataProvider copy operator. + */ + ESPDataProvider operator=(const ESPDataProvider&) = delete; + +private: + /** + * ESP processing loop. This method will feed the ESP library with the audio input until the ESPDataProvider is + * disabled. + */ + void espLoop(); + + /** + * ESPDataProvider constructor. + * + * @param reader Audio input stream that should be used to feed the ESP library. + * @param frameSize The audio frame size per ms in bits. + */ + ESPDataProvider(std::unique_ptr reader, unsigned int frameSize); + + // Unique pointer to a valid stream reader. + std::unique_ptr m_reader; + + /// Object responsible for VAD algorithm. + VADClass m_vad; + + /// Object used to calculate the frame energy. The access to this variable is guarded by @c m_mutex. + FrameEnergyClass m_frameEnergyCompute; + + /// Thread that keeps feeding audio to ESP library. + std::thread m_thread; + + /// Serializes access to m_FrameEnergyCompute. + std::mutex m_mutex; + + /// Indicates if ESP data is provided or not. The access to this variable is guarded by @c m_mutex. + bool m_isEnabled; + + /// Indicates whether the internal main loop should keep running. + std::atomic m_isShuttingDown; + + /// Keeps the frame size. + unsigned int m_frameSize; +}; + +} // namespace esp +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_ESP_INCLUDE_ESP_ESPDATAPROVIDER_H_ diff --git a/ESP/include/ESP/ESPDataProviderInterface.h b/ESP/include/ESP/ESPDataProviderInterface.h new file mode 100644 index 0000000000..213fb504ad --- /dev/null +++ b/ESP/include/ESP/ESPDataProviderInterface.h @@ -0,0 +1,61 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ +#ifndef ALEXA_CLIENT_SDK_ESP_INCLUDE_ESP_ESPDATAPROVIDERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_ESP_INCLUDE_ESP_ESPDATAPROVIDERINTERFACE_H_ + +#include + +namespace alexaClientSDK { +namespace esp { + +/** + * The ESPDataProviderInterface should be used to provide ESPData. + */ +class ESPDataProviderInterface { +public: + /** + * Destructor + */ + virtual ~ESPDataProviderInterface() = default; + + /** + * Retrieve the ESPData from the ESP Library. + * + * @return Collected ESPData if ESP is enabled, otherwise it returns ESPData::EMPTY_ESP_DATA. + */ + virtual capabilityAgents::aip::ESPData getESPData() = 0; + + /** + * Return whether the ESP is enabled or not. + * + * @return @c true if ESP is enabled, else @c false. + */ + virtual bool isEnabled() const = 0; + + /** + * Disable ESP and stop the processing thread. + */ + virtual void disable() = 0; + + /** + * Enable ESP and starts the processing thread if it wasn't running yet. + */ + virtual void enable() = 0; +}; + +} // namespace esp +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_ESP_INCLUDE_ESP_ESPDATAPROVIDERINTERFACE_H_ diff --git a/ESP/src/CMakeLists.txt b/ESP/src/CMakeLists.txt new file mode 100644 index 0000000000..3d040021bc --- /dev/null +++ b/ESP/src/CMakeLists.txt @@ -0,0 +1,19 @@ +add_definitions("-DACSDK_LOG_MODULE=esp") + +if (ESP_PROVIDER) + add_library(ESP SHARED ESPDataProvider.cpp) + target_link_libraries(ESP "${ESP_LIB_PATH}") + target_include_directories(ESP PUBLIC "${ESP_INCLUDE_DIR}") +else() + add_library(ESP SHARED DummyESPDataProvider.cpp) +endif() + +target_include_directories(ESP PUBLIC + "${ESP_SOURCE_DIR}/include" + "${AIP_SOURCE_DIR}/include" + "${AVSCommon_SOURCE_DIR}/include") + +target_link_libraries(ESP AIP AVSCommon) + +# install target +asdk_install() diff --git a/ESP/src/DummyESPDataProvider.cpp b/ESP/src/DummyESPDataProvider.cpp new file mode 100644 index 0000000000..7b51faf57e --- /dev/null +++ b/ESP/src/DummyESPDataProvider.cpp @@ -0,0 +1,51 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +namespace alexaClientSDK { +namespace esp { + +DummyESPDataProvider::DummyESPDataProvider() : m_enabled{false} { +} + +capabilityAgents::aip::ESPData DummyESPDataProvider::getESPData() { + return capabilityAgents::aip::ESPData(m_voiceEnergy, m_ambientEnergy); +} + +bool DummyESPDataProvider::isEnabled() const { + return m_enabled; +} + +void DummyESPDataProvider::disable() { + m_enabled = false; + m_ambientEnergy.clear(); + m_voiceEnergy.clear(); +} + +void DummyESPDataProvider::enable() { + m_enabled = true; +} + +void DummyESPDataProvider::setVoiceEnergy(const std::string& voiceEnergy) { + m_voiceEnergy = voiceEnergy; +} + +void DummyESPDataProvider::setAmbientEnergy(const std::string& ambientEnergy) { + m_ambientEnergy = ambientEnergy; +} + +} // namespace esp +} // namespace alexaClientSDK diff --git a/ESP/src/ESPDataProvider.cpp b/ESP/src/ESPDataProvider.cpp new file mode 100644 index 0000000000..b45a3aa11f --- /dev/null +++ b/ESP/src/ESPDataProvider.cpp @@ -0,0 +1,166 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include +#include +#include +#include + +#include "ESP/ESPDataProvider.h" + +/// String to identify log entries originating from this file. +static const std::string TAG{"ESPDataProvider"}; + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +/// The ESP compatible AVS sample rate of 16 kHz. +static const unsigned int ESP_COMPATIBLE_SAMPLE_RATE = 16000; + +/// The ESP compatible bits per sample of 16. +static const unsigned int ESP_COMPATIBLE_SAMPLE_SIZE_IN_BITS = 16; + +/// The ESP frame size in ms. The ESP library supports 8ms, 15ms and 16ms +static const unsigned int ESP_FRAMES_IN_MILLISECONDS = 16; + +namespace alexaClientSDK { +namespace esp { + +static const auto TIMEOUT = std::chrono::seconds(1); + +using AudioInputStream = avsCommon::avs::AudioInputStream; +using ESPData = alexaClientSDK::capabilityAgents::aip::ESPData; + +std::unique_ptr ESPDataProvider::create(const capabilityAgents::aip::AudioProvider& audioProvider) { + if ((ESP_COMPATIBLE_SAMPLE_RATE != audioProvider.format.sampleRateHz) || + (ESP_COMPATIBLE_SAMPLE_SIZE_IN_BITS != audioProvider.format.sampleSizeInBits)) { + ACSDK_ERROR(LX(__func__) + .d("reason", "unsupportedFormat") + .d("sampleSize", audioProvider.format.sampleSizeInBits) + .d("sampleRateHz", audioProvider.format.sampleRateHz)); + return nullptr; + } + + unsigned int frameSize = (audioProvider.format.sampleRateHz / 1000) * ESP_FRAMES_IN_MILLISECONDS; + + auto reader = audioProvider.stream->createReader(avsCommon::avs::AudioInputStream::Reader::Policy::BLOCKING); + if (!reader) { + ACSDK_ERROR(LX(__func__).d("reason", "createReaderFailed")); + return nullptr; + } + + auto connector = std::unique_ptr(new ESPDataProvider(std::move(reader), frameSize)); + connector->enable(); + return connector; +} + +ESPDataProvider::~ESPDataProvider() { + m_isShuttingDown = true; + if (m_thread.joinable()) { + m_thread.join(); + } +} + +ESPData ESPDataProvider::getESPData() { + std::lock_guard lock{m_mutex}; + if (m_isEnabled) { + return ESPData{std::to_string(m_frameEnergyCompute.getVoicedEnergy()), + std::to_string(m_frameEnergyCompute.getAmbientEnergy())}; + } + return ESPData::EMPTY_ESP_DATA; +} + +bool ESPDataProvider::isEnabled() const { + return m_isEnabled; +} + +void ESPDataProvider::disable() { + std::lock_guard lock{m_mutex}; + m_isEnabled = false; +} + +void ESPDataProvider::enable() { + std::lock_guard lock{m_mutex}; + m_isEnabled = true; +} + +void ESPDataProvider::espLoop() { + Word64 currentFrameEnergy = 0; + short procBuff[m_frameSize]; + const auto numWords = sizeof(procBuff) / m_reader->getWordSize(); + bool GVAD = false; + bool hasErrorOccurred = false; + + while (!m_isShuttingDown) { + auto words = m_reader->read(&procBuff, numWords, TIMEOUT); + + if (words > 0) { + // Call VAD and get frame energy + m_vad.process(procBuff, GVAD, currentFrameEnergy); + { + std::lock_guard lock{m_mutex}; + m_frameEnergyCompute.process(GVAD, currentFrameEnergy); + } + } else { + switch (words) { + case AudioInputStream::Reader::Error::CLOSED: + ACSDK_CRITICAL(LX("espLoopFailed").d("reason", "streamClosed")); + hasErrorOccurred = true; + break; + case AudioInputStream::Reader::Error::OVERRUN: + ACSDK_ERROR(LX("espLoopFailed").d("reason", "streamOverrun")); + m_reader->seek(0, AudioInputStream::Reader::Reference::BEFORE_WRITER); + break; + case AudioInputStream::Reader::Error::TIMEDOUT: + ACSDK_INFO(LX("espLoopFailed").d("reason", "readerTimeOut")); + break; + default: + // We should never get this since we are using a Blocking Reader. + ACSDK_CRITICAL(LX("espLoopFailed") + .d("reason", "unexpectedError") + // Leave as ssize_t to avoid messiness of casting to enum. + .d("error", words)); + hasErrorOccurred = true; + break; + } + } + if (hasErrorOccurred) { + ACSDK_CRITICAL(LX("espLoop").m("An error has occurred, exiting loop.")); + break; + } + } + m_reader->close(); +} + +ESPDataProvider::ESPDataProvider( + std::unique_ptr reader, + unsigned int frameSize) : + m_reader{std::move(reader)}, + m_vad{frameSize}, + m_frameEnergyCompute{frameSize}, + m_isEnabled{true}, + m_isShuttingDown{false}, + m_frameSize{frameSize} { + m_vad.blkReset(); + m_frameEnergyCompute.blkReset(); + m_thread = std::thread(&ESPDataProvider::espLoop, this); +} + +} // namespace esp +} // namespace alexaClientSDK diff --git a/Integration/AlexaClientSDKConfig.json b/Integration/AlexaClientSDKConfig.json index 0718751f62..819947e41f 100644 --- a/Integration/AlexaClientSDKConfig.json +++ b/Integration/AlexaClientSDKConfig.json @@ -1,17 +1,117 @@ { "authDelegate":{ + // The Client Secret of the Product from developer.amazon.com "clientSecret":"${SDK_CONFIG_CLIENT_SECRET}", + // Unique device serial number. e.g. 123456 "deviceSerialNumber":"${SDK_CONFIG_DEVICE_SERIAL_NUMBER}", + // Refresh Token populated by running AuthServer.py "refreshToken":"${SDK_CONFIG_REFRESH_TOKEN}", + // The Client ID of the Product from developer.amazon.com "clientId":"${SDK_CONFIG_CLIENT_ID}", - "deviceTypeId":"${SDK_CONFIG_DEVICE_TYPE_ID}" - }, - - "alertsCapabilityAgent":{ - "databaseFilePath":"${SDK_SQLITE_DATABASE_FILE_PATH}", - "alarmSoundFilePath":"${SDK_ALARM_DEFAULT_SOUND_FILE_PATH}", - "alarmShortSoundFilePath":"${SDK_ALARM_SHORT_SOUND_FILE_PATH}", - "timerSoundFilePath":"${SDK_TIMER_DEFAULT_SOUND_FILE_PATH}", - "timerShortSoundFilePath":"${SDK_TIMER_SHORT_SOUND_FILE_PATH}" - } - } \ No newline at end of file + // Product ID from developer.amazon.com + "productId":"${SDK_CONFIG_PRODUCT_ID}" + }, + "alertsCapabilityAgent":{ + // Path to Alerts database file. e.g. /home/ubuntu/Build/alerts.db + // Note: The directory specified must be valid. + // The database file (alerts.db) will be created by SampleApp, do not create it yourself. + // The database file should only be used for alerts (don't use it for other components of SDK) + "databaseFilePath":"${SDK_SQLITE_DATABASE_FILE_PATH}" + }, + "settings":{ + // Path to Settings database file. e.g. /home/ubuntu/Build/settings.db + // Note: The directory specified must be valid. + // The database file (settings.db) will be created by SampleApp, do not create it yourself. + // The database file should only be used for settings (don't use it for other components of SDK) + "databaseFilePath":"${SDK_SQLITE_SETTINGS_DATABASE_FILE_PATH}", + "defaultAVSClientSettings":{ + // Default language for Alexa. + // See https://developer.amazon.com/docs/alexa-voice-service/settings.html#settingsupdated for valid values. + "locale":"${SETTING_LOCALE_VALUE}" + } + }, + "certifiedSender":{ + // Path to Certified Sender database file. e.g. /home/ubuntu/Build/certifiedsender.db + // Note: The directory specified must be valid. + // The database file (certifiedsender.db) will be created by SampleApp, do not create it yourself. + // The database file should only be used for certifiedSender (don't use it for other components of SDK) + "databaseFilePath":"${SDK_CERTIFIED_SENDER_DATABASE_FILE_PATH}" + }, + "notifications":{ + // Path to Notifications database file. e.g. /home/ubuntu/Build/notifications.db + // Note: The directory specified must be valid. + // The database file (notifications.db) will be created by SampleApp, do not create it yourself. + // The database file should only be used for notifications (don't use it for other components of SDK) + "databaseFilePath":"${SDK_NOTIFICATIONS_DATABASE_FILE_PATH}" + }, + "sampleApp":{ + // To specify if the SampleApp supports display cards. + "displayCardsSupported":true + // The firmware version of the device to send in SoftwareInfo event. + // Note: The firmware version should be a positive 32-bit integer in the range [1-2147483647]. + // e.g. "firmwareVersion": 123 + // The default endpoint to connect to. + // See https://developer.amazon.com/docs/alexa-voice-service/api-overview.html#endpoints for regions and values + // e.g. "endpoint": "https://avs-alexa-na.amazon.com" + + // Example of specifying suggested latency in seconds when openning PortAudio stream. By default, + // when this paramater isn't specified, SampleApp calls Pa_OpenDefaultStream to use the default value. + // See http://portaudio.com/docs/v19-doxydocs/structPaStreamParameters.html for further explanation + // on this parameter. + //"portAudio":{ + // "suggestedLatency": 0.150 + //} + } + + // Example of specifying the output format for the gstreamer-based MediaPlayer bundled with the SDK. Many platforms + // will automatically set the output format correctly, but in some cases where the hardware requires a specific + // format and the software stack is not automatically setting it correctly, these parameters can be used to manually + // specify the output format. Supported rate/format/channels values are documented in detail here: + // https://gstreamer.freedesktop.org/documentation/design/mediatype-audio-raw.html + // + // "gstreamerMediaPlayer":{ + // "outputConversion":{ + // "rate":16000, + // "format":"S16LE", + // "channels":1 + // } + // }, + + // Example of specifying a default log level for all ModuleLoggers. If not specified, ModuleLoggers get + // their log level from the sink logger. + // "logging":{ + // "logLevel":"INFO" + // }, + + // Example of overriding a specific ModuleLogger's log level whether it was specified by the default value + // provided by the logging.logLevel value (as in the above example) or the log level of the sink logger. + // "acl":{ + // "logLevel":"DEBUG9" + // } + } + + +// Notes for logging +// The log levels are supported to debug when SampleApp is not working as expected. +// There are 14 levels of logging with DEBUG9 providing the highest level of logging and CRITICAL providing +// the lowest level of logging i.e. if DEBUG9 is specified while running the SampleApp, all the logs at DEBUG9 and +// below are displayed, whereas if CRITICAL is specified, only logs of CRITICAL are displayed. +// The 14 levels are: +// DEBUG9, DEBUG8, DEBUG7, DEBUG6, DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, DEBUG0, INFO, WARN, ERROR, CRITICAL. + +// To selectively see the logging for a particular module, you can specify logging level in this json file. +// Some examples are: +// To only see logs of level INFO and below for ACL and MediaPlayer modules, +// - grep for ACSDK_LOG_MODULE in source folder. Find the log module for ACL and MediaPlayer. +// - Put the following in json: + +// "acl":{ +// "logLevel":"INFO" +// }, +// "mediaPlayer":{ +// "logLevel":"INFO" +// } + +// To enable DEBUG, build with cmake option -DCMAKE_BUILD_TYPE=DEBUG. By default it is built with RELEASE build. +// And run the SampleApp similar to the following command. +// e.g. ./SampleApp /home/ubuntu/.../AlexaClientSDKConfig.json /home/ubuntu/KittAiModels/ DEBUG9" diff --git a/Integration/CMakeLists.txt b/Integration/CMakeLists.txt index 8435030046..d9e4dc1bbd 100644 --- a/Integration/CMakeLists.txt +++ b/Integration/CMakeLists.txt @@ -4,4 +4,4 @@ project(Integration LANGUAGES CXX) include(../build/BuildDefaults.cmake) add_subdirectory("src") -add_subdirectory("test") +acsdk_add_test_subdirectory_if_allowed() diff --git a/Integration/include/Integration/AipStateObserver.h b/Integration/include/Integration/AipStateObserver.h index 30f574eb67..cb7f0e4504 100644 --- a/Integration/include/Integration/AipStateObserver.h +++ b/Integration/include/Integration/AipStateObserver.h @@ -1,7 +1,5 @@ /* - * StateObserver.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_AIP_STATE_OBSERVER_H_ -#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_AIP_STATE_OBSERVER_H_ +#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_AIPSTATEOBSERVER_H_ +#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_AIPSTATEOBSERVER_H_ #include #include @@ -30,12 +28,13 @@ namespace integration { class AipStateObserver : public avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface { public: - AipStateObserver(); - void onStateChanged(avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface::State newState) override; - bool checkState(const avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface::State expectedState, - const std::chrono::seconds duration = std::chrono::seconds(10)); - avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface::State waitForNext ( - const std::chrono::seconds duration); + AipStateObserver(); + void onStateChanged(avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface::State newState) override; + bool checkState( + const avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface::State expectedState, + const std::chrono::seconds duration = std::chrono::seconds(10)); + avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface::State waitForNext( + const std::chrono::seconds duration); private: avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface::State m_state; @@ -44,7 +43,7 @@ class AipStateObserver : public avsCommon::sdkInterfaces::AudioInputProcessorObs std::deque m_queue; }; -} // namespace integration -} // namespace alexaClientSDK +} // namespace integration +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_AIP_STATE_OBSERVER_H_ +#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_AIPSTATEOBSERVER_H_ diff --git a/Integration/include/Integration/AuthObserver.h b/Integration/include/Integration/AuthObserver.h index e451fcd96f..f92118f35d 100644 --- a/Integration/include/Integration/AuthObserver.h +++ b/Integration/include/Integration/AuthObserver.h @@ -1,7 +1,5 @@ /* - * AuthObserver.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_AUTH_OBSERVER_H_ -#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_AUTH_OBSERVER_H_ +#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_AUTHOBSERVER_H_ +#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_AUTHOBSERVER_H_ #include #include @@ -33,11 +31,12 @@ class AuthObserver : public avsCommon::sdkInterfaces::AuthObserverInterface { void onAuthStateChange( const avsCommon::sdkInterfaces::AuthObserverInterface::State, const avsCommon::sdkInterfaces::AuthObserverInterface::Error = - avsCommon::sdkInterfaces::AuthObserverInterface::Error::NO_ERROR) override; + avsCommon::sdkInterfaces::AuthObserverInterface::Error::SUCCESS) override; AuthObserverInterface::State getAuthState() const; bool waitFor( - const avsCommon::sdkInterfaces::AuthObserverInterface::State, - const std::chrono::seconds = std::chrono::seconds(20)); + const avsCommon::sdkInterfaces::AuthObserverInterface::State, + const std::chrono::seconds = std::chrono::seconds(20)); + private: avsCommon::sdkInterfaces::AuthObserverInterface::State m_authState; avsCommon::sdkInterfaces::AuthObserverInterface::Error m_authError; @@ -45,7 +44,7 @@ class AuthObserver : public avsCommon::sdkInterfaces::AuthObserverInterface { std::condition_variable m_wakeTrigger; }; -} // namespace integration -} // namespace alexaClientSDK +} // namespace integration +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_AUTH_OBSERVER_H_ +#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_AUTHOBSERVER_H_ diff --git a/Integration/include/Integration/ClientMessageHandler.h b/Integration/include/Integration/ClientMessageHandler.h index 76bbec0981..6854f58d03 100644 --- a/Integration/include/Integration/ClientMessageHandler.h +++ b/Integration/include/Integration/ClientMessageHandler.h @@ -1,7 +1,5 @@ /* - * ClientMessageHandler.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_CLIENT_MESSAGE_HANDLER_H_ -#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_CLIENT_MESSAGE_HANDLER_H_ +#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_CLIENTMESSAGEHANDLER_H_ +#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_CLIENTMESSAGEHANDLER_H_ #include #include @@ -40,10 +38,10 @@ class ClientMessageHandler : public MessageObserverInterface { /** * Implementation of the interface's receive function. - * + * * For the purposes of these integration tests, this function simply logs and counts messages. */ - void receive(const std::string & contextId, const std::string & message) override; + void receive(const std::string& contextId, const std::string& message) override; /** * Wait for a message to be received. @@ -65,7 +63,7 @@ class ClientMessageHandler : public MessageObserverInterface { std::shared_ptr m_attachmentManager; }; -} // namespace integration -} // namespace alexaClientSDK +} // namespace integration +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_CLIENT_MESSAGE_HANDLER_H_ +#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_CLIENTMESSAGEHANDLER_H_ diff --git a/Integration/include/Integration/ConnectionStatusObserver.h b/Integration/include/Integration/ConnectionStatusObserver.h index 40a8ff36b9..03c7d22749 100644 --- a/Integration/include/Integration/ConnectionStatusObserver.h +++ b/Integration/include/Integration/ConnectionStatusObserver.h @@ -1,7 +1,5 @@ /* - * ConnectionStatusObserver.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_CONNECTION_STATUS_OBSERVER_H_ -#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_CONNECTION_STATUS_OBSERVER_H_ +#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_CONNECTIONSTATUSOBSERVER_H_ +#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_CONNECTIONSTATUSOBSERVER_H_ #include #include @@ -32,15 +30,14 @@ namespace integration { */ class ConnectionStatusObserver : public avsCommon::sdkInterfaces::ConnectionStatusObserverInterface { public: - /** * ConnectionStatusObserver constructor. */ ConnectionStatusObserver(); void onConnectionStatusChanged( - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status connectionStatus, - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override; + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status connectionStatus, + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override; /** * The utility function to get the connection status. * @return Status The @c connectionStatus for the connection. @@ -53,25 +50,27 @@ class ConnectionStatusObserver : public avsCommon::sdkInterfaces::ConnectionStat * @param duration The maximum time waiting for the expected connectionStatus. * @return true if expected connectionStatus is received within @c duration else false. */ - bool waitFor(const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status connectionStatus, - const std::chrono::seconds duration = std::chrono::seconds(15)); + bool waitFor( + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status connectionStatus, + const std::chrono::seconds duration = std::chrono::seconds(15)); /** * Function to check if the connection is broken due to Server side Disconnect. * @return true if the disconnect happens due to SERVER_SIDE_DISCONNECT else false. */ bool checkForServerSideDisconnect(); + private: /// Mutex used internally to enforce thread safety and serialize read/write access to @c m_statusChanges. mutable std::mutex m_mutex; /// The cv used when waiting for a particular status of a connection std::condition_variable m_wakeTrigger; /// The queue of values of the pair (Connection status, ChangedReason) throughout the connection. - std::deque> m_statusChanges; + std::deque> + m_statusChanges; }; -} // namespace integration -} // namespace alexaClientSDK +} // namespace integration +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_CONNECTION_STATUS_OBSERVER_H_ +#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_CONNECTIONSTATUSOBSERVER_H_ diff --git a/Integration/include/Integration/JsonHeader.h b/Integration/include/Integration/JsonHeader.h index 170eed8c49..2bc4efdd1a 100644 --- a/Integration/include/Integration/JsonHeader.h +++ b/Integration/include/Integration/JsonHeader.h @@ -1,8 +1,26 @@ -#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_JSON_HEADER_H_ -#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_JSON_HEADER_H_ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_JSONHEADER_H_ +#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_JSONHEADER_H_ + +#include // Todo ACSDK-443: Move the JSON to text file /// This is a basic synchronize JSON message which may be used to initiate a connection with AVS. +// clang-format off static const std::string SYNCHRONIZE_STATE_JSON = "{" "\"context\":[{" @@ -26,5 +44,6 @@ static const std::string SYNCHRONIZE_STATE_JSON = "}" "}" "}"; +// clang-format on -#endif //ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_JSON_HEADER_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_JSONHEADER_H_ diff --git a/Integration/include/Integration/ObservableMessageRequest.h b/Integration/include/Integration/ObservableMessageRequest.h index 0b9a517359..b1c4f236d5 100644 --- a/Integration/include/Integration/ObservableMessageRequest.h +++ b/Integration/include/Integration/ObservableMessageRequest.h @@ -1,7 +1,5 @@ /* - * ObservableMessageRequest.h - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_OBSERVABLE_MESSAGE_REQUEST_H_ -#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_OBSERVABLE_MESSAGE_REQUEST_H_ +#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_OBSERVABLEMESSAGEREQUEST_H_ +#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_OBSERVABLEMESSAGEREQUEST_H_ #include #include @@ -33,29 +31,33 @@ class ObservableMessageRequest : public avsCommon::avs::MessageRequest { /** * Constructor. */ - ObservableMessageRequest(const std::string & jsonContent, + ObservableMessageRequest( + const std::string& jsonContent, std::shared_ptr attachmentReader = nullptr); - void onSendCompleted(avsCommon::avs::MessageRequest::Status) override; + void sendCompleted(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status status) override; - void onExceptionReceived(const std::string & exceptionMessage) override; + void exceptionReceived(const std::string& exceptionMessage) override; /** * Utility function to get the status once the message has been sent. */ - avsCommon::avs::MessageRequest::Status getSendMessageStatus() const; + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status getSendMessageStatus() const; /** * Function to allow waiting for a particular status back from the component sending the message to AVS. */ - bool waitFor(const avsCommon::avs::MessageRequest::Status, const std::chrono::seconds = std::chrono::seconds(10)); - /// Function indicating if onSendCompleted has been called + bool waitFor( + const avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status, + const std::chrono::seconds = std::chrono::seconds(10)); + /// Function indicating if sendCompleted has been called bool hasSendCompleted(); - /// Function indicating if onExceptionReceived has been called + /// Function indicating if exceptionReceived has been called bool wasExceptionReceived(); + private: /// The status of whether the message was sent to AVS ok. - avsCommon::avs::MessageRequest::Status m_sendMessageStatus; + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status m_sendMessageStatus; /// Mutex used internally to enforce thread safety. mutable std::mutex m_mutex; /// The cv used when waiting for a particular status of a message being sent. @@ -66,7 +68,7 @@ class ObservableMessageRequest : public avsCommon::avs::MessageRequest { std::atomic m_exceptionReceived; }; -} // namespace integration -} // namespace alexaClientSDK +} // namespace integration +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_OBSERVABLE_MESSAGE_REQUEST_H_ +#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_OBSERVABLEMESSAGEREQUEST_H_ diff --git a/Integration/include/Integration/TestAlertObserver.h b/Integration/include/Integration/TestAlertObserver.h index a2092032bd..cacdaab909 100644 --- a/Integration/include/Integration/TestAlertObserver.h +++ b/Integration/include/Integration/TestAlertObserver.h @@ -1,7 +1,5 @@ /* - * TestAlertObserver.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TEST_ALERT_OBSERVER_H_ -#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TEST_ALERT_OBSERVER_H_ +#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTALERTOBSERVER_H_ +#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTALERTOBSERVER_H_ #include #include @@ -34,7 +32,7 @@ using namespace capabilityAgents::alerts; class TestAlertObserver : public AlertObserverInterface { public: - void onAlertStateChange(const std::string & alertToken, State state, const std::string & reason) override; + void onAlertStateChange(const std::string& alertToken, State state, const std::string& reason) override; class changedAlert { public: @@ -42,15 +40,16 @@ class TestAlertObserver : public AlertObserverInterface { }; changedAlert waitForNext(const std::chrono::seconds duration); + private: std::mutex m_mutex; std::condition_variable m_wakeTrigger; std::deque m_queue; - State currentState; + State currentState; }; -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TEST_ALERT_OBSERVER_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTALERTOBSERVER_H_ diff --git a/Integration/include/Integration/TestDirectiveHandler.h b/Integration/include/Integration/TestDirectiveHandler.h index d8721ca3bb..c456a2dc6b 100644 --- a/Integration/include/Integration/TestDirectiveHandler.h +++ b/Integration/include/Integration/TestDirectiveHandler.h @@ -1,7 +1,5 @@ /* - * TestDirectiveHandler.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TEST_DIRECTIVE_HANDLER_H_ -#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TEST_DIRECTIVE_HANDLER_H_ +#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTDIRECTIVEHANDLER_H_ +#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTDIRECTIVEHANDLER_H_ #include #include @@ -38,7 +36,7 @@ namespace integration { namespace test { /** - * TestDirectiveHandler is a mock of the @c DirectiveHandlerInterface and allows tests + * TestDirectiveHandler is a mock of the @c DirectiveHandlerInterface and allows tests * to wait for invocations upon those interfaces and inspect the parameters of those invocations. */ class TestDirectiveHandler : public avsCommon::sdkInterfaces::DirectiveHandlerInterface { @@ -54,8 +52,8 @@ class TestDirectiveHandler : public avsCommon::sdkInterfaces::DirectiveHandlerIn void handleDirectiveImmediately(std::shared_ptr directive) override; void preHandleDirective( - std::shared_ptr directive, - std::unique_ptr result) override; + std::shared_ptr directive, + std::unique_ptr result) override; bool handleDirective(const std::string& messageId) override; @@ -139,7 +137,7 @@ class TestDirectiveHandler : public avsCommon::sdkInterfaces::DirectiveHandlerIn PREHANDLE, // Set when handleDirective is called. HANDLE, - //Set when cancelDirective is called. + // Set when cancelDirective is called. CANCEL, // Set when waitForNext times out waiting for a directive. TIMEOUT @@ -147,17 +145,16 @@ class TestDirectiveHandler : public avsCommon::sdkInterfaces::DirectiveHandlerIn // Type of how the directive was passed to DirectiveHandler. Type type; - // AVSDirective passed from the Directive Sequencer to the DirectiveHandler. + // AVSDirective passed from the Directive Sequencer to the DirectiveHandler. std::shared_ptr directive; // DirectiveHandlerResult to inform the Directive Sequencer a directive has either successfully or // unsuccessfully handled. std::shared_ptr result; - }; /** - * Function to retrieve the next DirectiveParams in the test queue or time out if the queue is empty. Takes a duration in seconds - * to wait before timing out. + * Function to retrieve the next DirectiveParams in the test queue or time out if the queue is empty. Takes a + * duration in seconds to wait before timing out. */ DirectiveParams waitForNext(const std::chrono::seconds duration); @@ -169,14 +166,15 @@ class TestDirectiveHandler : public avsCommon::sdkInterfaces::DirectiveHandlerIn /// Queue of received directives that have not been waited on. std::deque m_queue; /// map of message IDs to result handlers. - std::unordered_map> m_results; + std::unordered_map> + m_results; /// map of message IDs to result handlers. std::unordered_map> m_directives; /// The @c avsCommon::avs::DirectiveHandlerConfiguration of the handler. avsCommon::avs::DirectiveHandlerConfiguration m_configuration; }; -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TEST_DIRECTIVE_HANDLER_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTDIRECTIVEHANDLER_H_ diff --git a/Integration/include/Integration/TestExceptionEncounteredSender.h b/Integration/include/Integration/TestExceptionEncounteredSender.h index 4991be060d..dd6895bab4 100644 --- a/Integration/include/Integration/TestExceptionEncounteredSender.h +++ b/Integration/include/Integration/TestExceptionEncounteredSender.h @@ -1,7 +1,5 @@ /* - * TestExceptionEncounteredSender.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TEST_EXCEPTION_ENCOUNTERED_SENDER_H_ -#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TEST_EXCEPTION_ENCOUNTERED_SENDER_H_ +#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTEXCEPTIONENCOUNTEREDSENDER_H_ +#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTEXCEPTIONENCOUNTEREDSENDER_H_ #include #include @@ -32,14 +30,14 @@ #include "AVSCommon/AVS/Attachment/AttachmentManager.h" #include "AVSCommon/Utils/JSON/JSONUtils.h" - using namespace alexaClientSDK::avsCommon; +using namespace alexaClientSDK::avsCommon; namespace alexaClientSDK { namespace integration { namespace test { /** - * TestExceptionEncounteredSender is a mock of the @c ExceptionEncounteredSenderInterface and allows tests + * TestExceptionEncounteredSender is a mock of the @c ExceptionEncounteredSenderInterface and allows tests * to wait for invocations upon those interfaces and inspect the parameters of those invocations. */ class TestExceptionEncounteredSender : public avsCommon::sdkInterfaces::ExceptionEncounteredSenderInterface { @@ -56,8 +54,8 @@ class TestExceptionEncounteredSender : public avsCommon::sdkInterfaces::Exceptio * @return A new @c AVSDirective, or nullptr if parsing the JSON fails. */ std::shared_ptr parseDirective( - const std::string& rawJSON, std::shared_ptr attachmentManager); - + const std::string& rawJSON, + std::shared_ptr attachmentManager); /** * Class defining the parameters to calls to the mocked interfaces. @@ -69,7 +67,6 @@ class TestExceptionEncounteredSender : public avsCommon::sdkInterfaces::Exceptio */ ExceptionParams(); - // Enum for the way the directive was passed. enum class Type { // Not yet set. @@ -82,7 +79,7 @@ class TestExceptionEncounteredSender : public avsCommon::sdkInterfaces::Exceptio // Type of how the directive was passed. Type type; - // AVSDirective passed from the Directive Sequencer. + // AVSDirective passed from the Directive Sequencer. std::shared_ptr directive; // Unparsed directive string passed to sendExceptionEncountered. std::string exceptionUnparsedDirective; @@ -93,8 +90,8 @@ class TestExceptionEncounteredSender : public avsCommon::sdkInterfaces::Exceptio }; /** - * Function to retrieve the next DirectiveParams in the test queue or time out if the queue is empty. Takes a duration in seconds - * to wait before timing out. + * Function to retrieve the next DirectiveParams in the test queue or time out if the queue is empty. Takes a + * duration in seconds to wait before timing out. */ ExceptionParams waitForNext(const std::chrono::seconds duration); @@ -107,8 +104,8 @@ class TestExceptionEncounteredSender : public avsCommon::sdkInterfaces::Exceptio std::deque m_queue; }; -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TEST_EXCEPTION_ENCOUNTERED_SENDER_H_ +#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTEXCEPTIONENCOUNTEREDSENDER_H_ diff --git a/Integration/include/Integration/TestMediaPlayer.h b/Integration/include/Integration/TestMediaPlayer.h index 5dd8a3d132..f38aed8fce 100644 --- a/Integration/include/Integration/TestMediaPlayer.h +++ b/Integration/include/Integration/TestMediaPlayer.h @@ -1,7 +1,5 @@ /* - * TestMediaPlayer.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TEST_PLAYER_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TEST_PLAYER_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTMEDIAPLAYER_H_ +#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTMEDIAPLAYER_H_ #include #include @@ -37,7 +35,7 @@ namespace test { /** * A Mock MediaPlayer that attempts to alert the observer of playing and stopping without - * actually playing audio. This removes the dependancy on an audio player to run tests with + * actually playing audio. This removes the dependancy on an audio player to run tests with * SpeechSynthesizer */ class TestMediaPlayer : public avsCommon::utils::mediaPlayer::MediaPlayerInterface { @@ -45,26 +43,32 @@ class TestMediaPlayer : public avsCommon::utils::mediaPlayer::MediaPlayerInterfa // Destructor. ~TestMediaPlayer(); - avsCommon::utils::mediaPlayer::MediaPlayerStatus setSource( - std::shared_ptr attachmentReader) override; + avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId setSource( + std::shared_ptr attachmentReader, + const avsCommon::utils::AudioFormat* audioFormat = nullptr) override; - avsCommon::utils::mediaPlayer::MediaPlayerStatus setSource( - std::shared_ptr stream, bool repeat) override; + avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId setSource( + std::shared_ptr stream, + bool repeat) override; - avsCommon::utils::mediaPlayer::MediaPlayerStatus setSource(const std::string& url) override; + avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId setSource( + const std::string& url, + std::chrono::milliseconds offset = std::chrono::milliseconds::zero()) override; - avsCommon::utils::mediaPlayer::MediaPlayerStatus play() override; + bool play(avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId id) override; - avsCommon::utils::mediaPlayer::MediaPlayerStatus stop() override; + bool stop(avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId id) override; - avsCommon::utils::mediaPlayer::MediaPlayerStatus pause() override; + bool pause(avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId id) override; - avsCommon::utils::mediaPlayer::MediaPlayerStatus resume() override; + bool resume(avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId id) override; - int64_t getOffsetInMilliseconds() override; + std::chrono::milliseconds getOffset(avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId id) override; void setObserver( - std::shared_ptr playerObserver) override; + std::shared_ptr playerObserver) override; + + uint64_t getNumBytesBuffered() override; private: /// Observer to notify of state changes. @@ -75,11 +79,11 @@ class TestMediaPlayer : public avsCommon::utils::mediaPlayer::MediaPlayerInterfa std::shared_ptr m_attachmentReader; /// Timer to wait to send onPlaybackFinished to the observer. std::shared_ptr m_timer; - // istream for Alerts. - std::shared_ptr m_istream; + // istream for Alerts. + std::shared_ptr m_istream; }; -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TEST_PLAYER_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTMEDIAPLAYER_H_ diff --git a/Integration/include/Integration/TestMessageSender.h b/Integration/include/Integration/TestMessageSender.h index f9a4191094..0bc0c9b4aa 100644 --- a/Integration/include/Integration/TestMessageSender.h +++ b/Integration/include/Integration/TestMessageSender.h @@ -1,7 +1,5 @@ /* - * TestMessageSender.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_INTEGRATION_TEST_MESSAGE_SENDER_H -#define ALEXA_CLIENT_SDK_INTEGRATION_TEST_MESSAGE_SENDER_H +#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTMESSAGESENDER_H_ +#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTMESSAGESENDER_H_ #include #include @@ -32,26 +30,24 @@ namespace alexaClientSDK { namespace integration { namespace test { -class TestMessageSender : - public avsCommon::sdkInterfaces::MessageSenderInterface, - public avsCommon::utils::RequiresShutdown { +class TestMessageSender + : public avsCommon::sdkInterfaces::MessageSenderInterface + , public avsCommon::utils::RequiresShutdown { public: /// Destructor. ~TestMessageSender() = default; void sendMessage(std::shared_ptr request) override; - TestMessageSender (std::shared_ptr messageRouter, - bool isEnabled, - std::shared_ptr connectionStatusObserver, - std::shared_ptr messageObserver); + TestMessageSender( + std::shared_ptr messageRouter, + bool isEnabled, + std::shared_ptr connectionStatusObserver, + std::shared_ptr messageObserver); class SendParams { public: - enum class Type { - SEND, - TIMEOUT - }; + enum class Type { SEND, TIMEOUT }; Type type; std::shared_ptr request; }; @@ -87,7 +83,6 @@ class TestMessageSender : */ void reconnect(); - /** * Set the URL endpoint for the AVS connection. Calling this function with a new value will cause the * current active connection to be closed, and a new one opened to the new endpoint. @@ -95,8 +90,8 @@ class TestMessageSender : */ void setAVSEndpoint(const std::string& avsEndpoint); - void addConnectionStatusObserver( - std::shared_ptr observer); + void addConnectionStatusObserver( + std::shared_ptr observer); /** * Removes an observer from being notified of connection status changes. @@ -104,7 +99,7 @@ class TestMessageSender : * @param observer The observer object to remove. */ void removeConnectionStatusObserver( - std::shared_ptr observer); + std::shared_ptr observer); /** * Adds an observer to be notified of message receptions. @@ -120,13 +115,10 @@ class TestMessageSender : */ void removeMessageObserver(std::shared_ptr observer); - /** - * Synchronizes the internal AVSConnectionManager. - */ - void synchronize(); - void doShutdown() override; + std::shared_ptr getConnectionManager() const; + private: /// Mutex to protect m_queue. std::mutex m_mutex; @@ -138,8 +130,8 @@ class TestMessageSender : std::shared_ptr m_connectionManager; }; -} // namespace test -} // namespace avsCommon -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_INTEGRATION_TEST_MESSAGE_SENDER_H +#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTMESSAGESENDER_H_ diff --git a/Integration/include/Integration/TestSpeechSynthesizerObserver.h b/Integration/include/Integration/TestSpeechSynthesizerObserver.h index fe408255b0..20bc71285f 100644 --- a/Integration/include/Integration/TestSpeechSynthesizerObserver.h +++ b/Integration/include/Integration/TestSpeechSynthesizerObserver.h @@ -1,7 +1,5 @@ /* - * TestSpeechSynthesizerObserver.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,15 +13,15 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_TEST_SPEECH_SYNTHESIZER_OBSERVER_H_ -#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_TEST_SPEECH_SYNTHESIZER_OBSERVER_H_ +#ifndef ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTSPEECHSYNTHESIZEROBSERVER_H_ +#define ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTSPEECHSYNTHESIZEROBSERVER_H_ #include #include #include #include -#include +#include namespace alexaClientSDK { namespace integration { @@ -32,31 +30,33 @@ namespace test { /** * Interface for observing a SpeechSynthesizer. */ -class TestSpeechSynthesizerObserver : public avsCommon::sdkInterfaces::SpeechSynthesizerObserver { +class TestSpeechSynthesizerObserver : public avsCommon::sdkInterfaces::SpeechSynthesizerObserverInterface { public: TestSpeechSynthesizerObserver(); ~TestSpeechSynthesizerObserver() = default; - void onStateChanged(avsCommon::sdkInterfaces::SpeechSynthesizerObserver::SpeechSynthesizerState state) override; + void onStateChanged( + avsCommon::sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState state) override; bool checkState( - const avsCommon::sdkInterfaces::SpeechSynthesizerObserver::SpeechSynthesizerState expectedState, const std::chrono::seconds duration); + const avsCommon::sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState expectedState, + const std::chrono::seconds duration); + + avsCommon::sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState waitForNext( + const std::chrono::seconds duration); - avsCommon::sdkInterfaces::SpeechSynthesizerObserver::SpeechSynthesizerState waitForNext ( - const std::chrono::seconds duration); - - avsCommon::sdkInterfaces::SpeechSynthesizerObserver::SpeechSynthesizerState getCurrentState(); + avsCommon::sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState getCurrentState(); private: - avsCommon::sdkInterfaces::SpeechSynthesizerObserver::SpeechSynthesizerState m_state; + avsCommon::sdkInterfaces::SpeechSynthesizerObserverInterface::SpeechSynthesizerState m_state; std::mutex m_mutex; std::condition_variable m_wakeTrigger; - std::deque m_queue; + std::deque m_queue; }; -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_TEST_SPEECH_SYNTHESIZER_OBSERVER_H_ +#endif // ALEXA_CLIENT_SDK_INTEGRATION_INCLUDE_INTEGRATION_TESTSPEECHSYNTHESIZEROBSERVER_H_ diff --git a/Integration/inputs/recognize_long_timer_test.wav b/Integration/inputs/recognize_long_timer_test.wav index b7bb85746d..d4a57db96f 100644 Binary files a/Integration/inputs/recognize_long_timer_test.wav and b/Integration/inputs/recognize_long_timer_test.wav differ diff --git a/Integration/inputs/recognize_timer_test.wav b/Integration/inputs/recognize_timer_test.wav index 48bd09025f..b7116821cd 100644 Binary files a/Integration/inputs/recognize_timer_test.wav and b/Integration/inputs/recognize_timer_test.wav differ diff --git a/Integration/inputs/recognize_very_long_timer_test.wav b/Integration/inputs/recognize_very_long_timer_test.wav index f9f6b4d94c..0deaf82aa4 100644 Binary files a/Integration/inputs/recognize_very_long_timer_test.wav and b/Integration/inputs/recognize_very_long_timer_test.wav differ diff --git a/Integration/inputs/utterance_time_success.opus b/Integration/inputs/utterance_time_success.opus new file mode 100644 index 0000000000..9c1198ba20 Binary files /dev/null and b/Integration/inputs/utterance_time_success.opus differ diff --git a/Integration/src/AipStateObserver.cpp b/Integration/src/AipStateObserver.cpp index 2e11a89435..c568e55a26 100644 --- a/Integration/src/AipStateObserver.cpp +++ b/Integration/src/AipStateObserver.cpp @@ -1,7 +1,5 @@ /* - * AipStateObserver.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -22,24 +20,24 @@ namespace integration { using avsCommon::sdkInterfaces::AudioInputProcessorObserverInterface; -AipStateObserver::AipStateObserver(): m_state(AudioInputProcessorObserverInterface::State::IDLE) { +AipStateObserver::AipStateObserver() : m_state(AudioInputProcessorObserverInterface::State::IDLE) { } void AipStateObserver::onStateChanged(AudioInputProcessorObserverInterface::State newState) { - std::unique_lock lock(m_mutex); - m_queue.push_back(newState); - m_state = newState; - m_wakeTrigger.notify_all(); + std::unique_lock lock(m_mutex); + m_queue.push_back(newState); + m_state = newState; + m_wakeTrigger.notify_all(); } bool AipStateObserver::checkState( - const AudioInputProcessorObserverInterface::State expectedState, const std::chrono::seconds duration) { - AudioInputProcessorObserverInterface::State hold = waitForNext(duration); - return hold == expectedState; + const AudioInputProcessorObserverInterface::State expectedState, + const std::chrono::seconds duration) { + AudioInputProcessorObserverInterface::State hold = waitForNext(duration); + return hold == expectedState; } -AudioInputProcessorObserverInterface::State AipStateObserver::waitForNext ( - const std::chrono::seconds duration) { +AudioInputProcessorObserverInterface::State AipStateObserver::waitForNext(const std::chrono::seconds duration) { AudioInputProcessorObserverInterface::State ret; std::unique_lock lock(m_mutex); if (!m_wakeTrigger.wait_for(lock, duration, [this]() { return !m_queue.empty(); })) { @@ -51,5 +49,5 @@ AudioInputProcessorObserverInterface::State AipStateObserver::waitForNext ( return ret; } -} // namespace integration -} // namespace alexaClientSDK +} // namespace integration +} // namespace alexaClientSDK diff --git a/Integration/src/AuthObserver.cpp b/Integration/src/AuthObserver.cpp index fbd30f41a3..cc513a28f5 100644 --- a/Integration/src/AuthObserver.cpp +++ b/Integration/src/AuthObserver.cpp @@ -1,7 +1,5 @@ /* - * AuthObserver.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -23,14 +21,14 @@ namespace integration { using avsCommon::sdkInterfaces::AuthObserverInterface; -AuthObserver::AuthObserver(): - m_authState(AuthObserverInterface::State::UNINITIALIZED), - m_authError(AuthObserverInterface::Error::NO_ERROR) { +AuthObserver::AuthObserver() : + m_authState(AuthObserverInterface::State::UNINITIALIZED), + m_authError(AuthObserverInterface::Error::SUCCESS) { } void AuthObserver::onAuthStateChange( - const AuthObserverInterface::State authState, - const AuthObserverInterface::Error authError) { + const AuthObserverInterface::State authState, + const AuthObserverInterface::Error authError) { m_authState = authState; m_authError = authError; m_wakeTrigger.notify_all(); @@ -42,10 +40,8 @@ AuthObserverInterface::State AuthObserver::getAuthState() const { bool AuthObserver::waitFor(const AuthObserverInterface::State authState, const std::chrono::seconds duration) { std::unique_lock lock(m_mutex); - return m_wakeTrigger.wait_for(lock, duration, [this, authState]() { - return m_authState == authState; - }); + return m_wakeTrigger.wait_for(lock, duration, [this, authState]() { return m_authState == authState; }); } -} // namespace integration -} // namespace alexaClientSDK +} // namespace integration +} // namespace alexaClientSDK diff --git a/Integration/src/CMakeLists.txt b/Integration/src/CMakeLists.txt index e87f9f635c..8de7df77cd 100644 --- a/Integration/src/CMakeLists.txt +++ b/Integration/src/CMakeLists.txt @@ -10,6 +10,7 @@ target_include_directories(Integration PUBLIC "${SpeechSynthesizer_SOURCE_DIR}/i target_include_directories(Integration PUBLIC "${Alerts_SOURCE_DIR}/include") target_include_directories(Integration PUBLIC "${AudioPlayer_SOURCE_DIR}/include") target_include_directories(Integration PUBLIC "${AVSSystem_SOURCE_DIR}/include") +target_include_directories(Integration PUBLIC "${RegistrationManager_SOURCE_DIR}/include") target_include_directories(Integration PUBLIC "${KITTAI_SOURCE_DIR}/include") target_link_libraries(Integration ACL AuthDelegate) diff --git a/Integration/src/ClientMessageHandler.cpp b/Integration/src/ClientMessageHandler.cpp index 1c88a345fd..2bb73fb972 100644 --- a/Integration/src/ClientMessageHandler.cpp +++ b/Integration/src/ClientMessageHandler.cpp @@ -1,7 +1,5 @@ /* - * ClientMessageHandler.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -24,10 +22,11 @@ namespace integration { using namespace avsCommon::avs::attachment; ClientMessageHandler::ClientMessageHandler(std::shared_ptr attachmentManager) : - m_count{0}, m_attachmentManager{attachmentManager} { + m_count{0}, + m_attachmentManager{attachmentManager} { } -void ClientMessageHandler::receive(const std::string & contextId, const std::string & message) { +void ClientMessageHandler::receive(const std::string& contextId, const std::string& message) { std::cout << "ClientMessageHandler::receive: message:" << message << std::endl; std::unique_lock lock(m_mutex); ++m_count; @@ -36,13 +35,12 @@ void ClientMessageHandler::receive(const std::string & contextId, const std::str bool ClientMessageHandler::waitForNext(const std::chrono::seconds duration) { std::unique_lock lock(m_mutex); - if (!m_wakeTrigger.wait_for(lock, duration, [this]() { return m_count > 0; })) - { + if (!m_wakeTrigger.wait_for(lock, duration, [this]() { return m_count > 0; })) { return false; } --m_count; return true; } -} // namespace integration -} // namespace alexaClientSDK +} // namespace integration +} // namespace alexaClientSDK diff --git a/Integration/src/ConnectionStatusObserver.cpp b/Integration/src/ConnectionStatusObserver.cpp index 4fdd32f4e3..c21562db9a 100644 --- a/Integration/src/ConnectionStatusObserver.cpp +++ b/Integration/src/ConnectionStatusObserver.cpp @@ -1,7 +1,5 @@ /* - * ConnectionStatusObserver.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -24,13 +22,11 @@ namespace integration { using alexaClientSDK::avsCommon::sdkInterfaces::ConnectionStatusObserverInterface; -ConnectionStatusObserver::ConnectionStatusObserver(): +ConnectionStatusObserver::ConnectionStatusObserver() : m_statusChanges({std::make_pair(Status::DISCONNECTED, ChangedReason::ACL_CLIENT_REQUEST)}) { } -void ConnectionStatusObserver::onConnectionStatusChanged( - const Status connectionStatus, - const ChangedReason reason) { +void ConnectionStatusObserver::onConnectionStatusChanged(const Status connectionStatus, const ChangedReason reason) { std::lock_guard lock(m_mutex); m_statusChanges.push_back(std::make_pair(connectionStatus, reason)); m_wakeTrigger.notify_all(); @@ -51,13 +47,11 @@ ConnectionStatusObserverInterface::Status ConnectionStatusObserver::getConnectio return m_statusChanges.back().first; } -bool ConnectionStatusObserver::waitFor( - const Status connectionStatus, const std::chrono::seconds duration) { +bool ConnectionStatusObserver::waitFor(const Status connectionStatus, const std::chrono::seconds duration) { std::unique_lock lock(m_mutex); - return m_wakeTrigger.wait_for(lock, duration, [this, connectionStatus]() { - return m_statusChanges.back().first == connectionStatus; - }); + return m_wakeTrigger.wait_for( + lock, duration, [this, connectionStatus]() { return m_statusChanges.back().first == connectionStatus; }); } -} // namespace integration -} // namespace alexaClientSDK +} // namespace integration +} // namespace alexaClientSDK diff --git a/Integration/src/ObservableMessageRequest.cpp b/Integration/src/ObservableMessageRequest.cpp index 7862769577..b8b7e7e570 100644 --- a/Integration/src/ObservableMessageRequest.cpp +++ b/Integration/src/ObservableMessageRequest.cpp @@ -1,7 +1,5 @@ /* - * ObservableMessageRequest.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -38,36 +36,38 @@ using namespace avsCommon::avs; using namespace avsCommon::avs::attachment; ObservableMessageRequest::ObservableMessageRequest( - const std::string & jsonContent, - std::shared_ptr attachmentReader) : + const std::string& jsonContent, + std::shared_ptr attachmentReader) : MessageRequest{jsonContent, attachmentReader}, - m_sendMessageStatus(MessageRequest::Status::PENDING), + m_sendMessageStatus(avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::PENDING), m_sendCompleted{false}, m_exceptionReceived{false} { } -void ObservableMessageRequest::onSendCompleted(MessageRequest::Status sendMessageStatus) { +void ObservableMessageRequest::sendCompleted( + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status sendMessageStatus) { std::lock_guard lock(m_mutex); - ACSDK_DEBUG(LX("onSendCompleted").d("status", MessageRequest::statusToString(sendMessageStatus))); + ACSDK_DEBUG(LX("onSendCompleted").d("status", sendMessageStatus)); m_sendMessageStatus = sendMessageStatus; m_sendCompleted = true; m_wakeTrigger.notify_all(); } -MessageRequest::Status ObservableMessageRequest::getSendMessageStatus() const { +avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status ObservableMessageRequest::getSendMessageStatus() + const { std::lock_guard lock(m_mutex); return m_sendMessageStatus; } bool ObservableMessageRequest::waitFor( - const MessageRequest::Status sendMessageStatus, const std::chrono::seconds duration) { + const avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status sendMessageStatus, + const std::chrono::seconds duration) { std::unique_lock lock(m_mutex); - return m_wakeTrigger.wait_for(lock, duration, [this, sendMessageStatus]() { - return sendMessageStatus == m_sendMessageStatus; - }); + return m_wakeTrigger.wait_for( + lock, duration, [this, sendMessageStatus]() { return sendMessageStatus == m_sendMessageStatus; }); } -void ObservableMessageRequest::onExceptionReceived(const std::string & exceptionMessage) { +void ObservableMessageRequest::exceptionReceived(const std::string& exceptionMessage) { ACSDK_DEBUG(LX("onExceptionReceived").d("status", exceptionMessage)); m_exceptionReceived = true; } @@ -80,5 +80,5 @@ bool ObservableMessageRequest::wasExceptionReceived() { return m_exceptionReceived; } -} // namespace integration -} // namespace alexaClientSDK +} // namespace integration +} // namespace alexaClientSDK diff --git a/Integration/src/TestAlertObserver.cpp b/Integration/src/TestAlertObserver.cpp index b6e208d94d..25912976a2 100644 --- a/Integration/src/TestAlertObserver.cpp +++ b/Integration/src/TestAlertObserver.cpp @@ -1,7 +1,5 @@ /* - * TestAlertObserver.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,23 +12,24 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ + #include + #include "Integration/TestAlertObserver.h" namespace alexaClientSDK { namespace integration { namespace test { -void TestAlertObserver::onAlertStateChange(const std::string & alertToken, State state, const std::string & reason) { +void TestAlertObserver::onAlertStateChange(const std::string& alertToken, State state, const std::string& reason) { std::unique_lock lock(m_mutex); TestAlertObserver::changedAlert ca; - ca.state = state; + ca.state = state; m_queue.push_back(ca); m_wakeTrigger.notify_all(); } -TestAlertObserver::changedAlert TestAlertObserver::waitForNext ( - const std::chrono::seconds duration) { +TestAlertObserver::changedAlert TestAlertObserver::waitForNext(const std::chrono::seconds duration) { TestAlertObserver::changedAlert ret; std::unique_lock lock(m_mutex); if (!m_wakeTrigger.wait_for(lock, duration, [this]() { return !m_queue.empty(); })) { @@ -42,6 +41,6 @@ TestAlertObserver::changedAlert TestAlertObserver::waitForNext ( return ret; } -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK diff --git a/Integration/src/TestDirectiveHandler.cpp b/Integration/src/TestDirectiveHandler.cpp index a7cd5e2683..3c4b9b0810 100644 --- a/Integration/src/TestDirectiveHandler.cpp +++ b/Integration/src/TestDirectiveHandler.cpp @@ -1,7 +1,5 @@ /* - * TestDirectiveHandler.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -21,7 +19,7 @@ namespace alexaClientSDK { namespace integration { namespace test { -TestDirectiveHandler::TestDirectiveHandler(avsCommon::avs::DirectiveHandlerConfiguration config) : +TestDirectiveHandler::TestDirectiveHandler(avsCommon::avs::DirectiveHandlerConfiguration config) : m_configuration{config} { } @@ -35,9 +33,8 @@ void TestDirectiveHandler::handleDirectiveImmediately(std::shared_ptr directive, - std::unique_ptr result) -{ + std::shared_ptr directive, + std::unique_ptr result) { std::unique_lock lock(m_mutex); TestDirectiveHandler::DirectiveParams dp; dp.type = TestDirectiveHandler::DirectiveParams::Type::PREHANDLE; @@ -89,8 +86,6 @@ avsCommon::avs::DirectiveHandlerConfiguration TestDirectiveHandler::getConfigura void TestDirectiveHandler::onDeregistered() { } - - TestDirectiveHandler::DirectiveParams TestDirectiveHandler::waitForNext(const std::chrono::seconds duration) { DirectiveParams ret; std::unique_lock lock(m_mutex); @@ -105,6 +100,6 @@ TestDirectiveHandler::DirectiveParams TestDirectiveHandler::waitForNext(const st TestDirectiveHandler::DirectiveParams::DirectiveParams() : type{Type::UNSET} { } -} // namespace test -} // namespace integration -} // namespace alexaClientSDK \ No newline at end of file +} // namespace test +} // namespace integration +} // namespace alexaClientSDK diff --git a/Integration/src/TestExceptionEncounteredSender.cpp b/Integration/src/TestExceptionEncounteredSender.cpp index 99193bee7a..9ac829b9fd 100644 --- a/Integration/src/TestExceptionEncounteredSender.cpp +++ b/Integration/src/TestExceptionEncounteredSender.cpp @@ -1,7 +1,5 @@ /* - * TestExceptionEncounteredSender.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -40,18 +38,17 @@ static const std::string JSON_MESSAGE_DIALOG_REQUEST_ID_KEY = "dialogRequestId"; /// JSON key to get the payload object of a message. static const std::string JSON_MESSAGE_PAYLOAD_KEY = "payload"; - void TestExceptionEncounteredSender::sendExceptionEncountered( - const std::string& unparsedDirective, - avs::ExceptionErrorType error, - const std::string& message) { - + const std::string& unparsedDirective, + avs::ExceptionErrorType error, + const std::string& message) { std::unique_lock lock(m_mutex); ExceptionParams dp; dp.type = ExceptionParams::Type::EXCEPTION; dp.directive = parseDirective( - unparsedDirective, - std::make_shared(avsCommon::avs::attachment::AttachmentManager::AttachmentType::IN_PROCESS)); + unparsedDirective, + std::make_shared( + avsCommon::avs::attachment::AttachmentManager::AttachmentType::IN_PROCESS)); dp.exceptionUnparsedDirective = unparsedDirective; dp.exceptionError = error; dp.exceptionMessage = message; @@ -59,10 +56,9 @@ void TestExceptionEncounteredSender::sendExceptionEncountered( m_wakeTrigger.notify_all(); } - std::shared_ptr TestExceptionEncounteredSender::parseDirective( - const std::string& rawJSON, std::shared_ptr attachmentManager) { - + const std::string& rawJSON, + std::shared_ptr attachmentManager) { std::string directiveJSON; std::string headerJSON; std::string payloadJSON; @@ -71,22 +67,23 @@ std::shared_ptr TestExceptionEncounteredSender::pa std::string messageId; std::string dialogRequestId; - if (!jsonUtils::lookupStringValue(rawJSON, JSON_MESSAGE_DIRECTIVE_KEY, &directiveJSON) || - !jsonUtils::lookupStringValue(directiveJSON, JSON_MESSAGE_HEADER_KEY, &headerJSON) || - !jsonUtils::lookupStringValue(directiveJSON, JSON_MESSAGE_PAYLOAD_KEY, &payloadJSON) || - !jsonUtils::lookupStringValue(headerJSON, JSON_MESSAGE_NAMESPACE_KEY, &nameSpace) || - !jsonUtils::lookupStringValue(headerJSON, JSON_MESSAGE_NAME_KEY, &name) || - !jsonUtils::lookupStringValue(headerJSON, JSON_MESSAGE_MESSAGE_ID_KEY, &messageId)) { + if (!jsonUtils::retrieveValue(rawJSON, JSON_MESSAGE_DIRECTIVE_KEY, &directiveJSON) || + !jsonUtils::retrieveValue(directiveJSON, JSON_MESSAGE_HEADER_KEY, &headerJSON) || + !jsonUtils::retrieveValue(directiveJSON, JSON_MESSAGE_PAYLOAD_KEY, &payloadJSON) || + !jsonUtils::retrieveValue(headerJSON, JSON_MESSAGE_NAMESPACE_KEY, &nameSpace) || + !jsonUtils::retrieveValue(headerJSON, JSON_MESSAGE_NAME_KEY, &name) || + !jsonUtils::retrieveValue(headerJSON, JSON_MESSAGE_MESSAGE_ID_KEY, &messageId)) { return nullptr; } - jsonUtils::lookupStringValue(headerJSON, JSON_MESSAGE_NAMESPACE_KEY, &dialogRequestId); + jsonUtils::retrieveValue(headerJSON, JSON_MESSAGE_NAMESPACE_KEY, &dialogRequestId); auto header = std::make_shared(nameSpace, name, messageId, dialogRequestId); return avsCommon::avs::AVSDirective::create(rawJSON, header, payloadJSON, attachmentManager, ""); } -TestExceptionEncounteredSender::ExceptionParams TestExceptionEncounteredSender::waitForNext(const std::chrono::seconds duration) { +TestExceptionEncounteredSender::ExceptionParams TestExceptionEncounteredSender::waitForNext( + const std::chrono::seconds duration) { ExceptionParams ret; std::unique_lock lock(m_mutex); if (!m_wakeTrigger.wait_for(lock, duration, [this]() { return !m_queue.empty(); })) { @@ -101,6 +98,6 @@ TestExceptionEncounteredSender::ExceptionParams TestExceptionEncounteredSender:: TestExceptionEncounteredSender::ExceptionParams::ExceptionParams() : type{Type::UNSET} { } -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK diff --git a/Integration/src/TestMediaPlayer.cpp b/Integration/src/TestMediaPlayer.cpp index e92f8d8978..01d3f7dce1 100644 --- a/Integration/src/TestMediaPlayer.cpp +++ b/Integration/src/TestMediaPlayer.cpp @@ -1,7 +1,5 @@ /* - * TestMediaPlayer.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,7 +12,9 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ - + +#include + #include "Integration/TestMediaPlayer.h" namespace alexaClientSDK { @@ -24,6 +24,9 @@ namespace test { /// String to identify log entries originating from this file. static const std::string TAG("TestMediaPlayer"); +/// A counter used to increment the source id when a new source is set. +static std::atomic g_sourceId{0}; + /** * Create a LogEntry using this file's TAG and the specified event string. * @@ -34,72 +37,77 @@ static const std::string TAG("TestMediaPlayer"); TestMediaPlayer::~TestMediaPlayer() { } -avsCommon::utils::mediaPlayer::MediaPlayerStatus TestMediaPlayer::setSource( - std::shared_ptr attachmentReader) { +avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId TestMediaPlayer::setSource( + std::shared_ptr attachmentReader, + const avsCommon::utils::AudioFormat* audioFormat) { m_attachmentReader = std::move(attachmentReader); - return avsCommon::utils::mediaPlayer::MediaPlayerStatus::SUCCESS; + return ++g_sourceId; } -avsCommon::utils::mediaPlayer::MediaPlayerStatus TestMediaPlayer::setSource( - std::shared_ptr stream, bool repeat) { +avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId TestMediaPlayer::setSource( + std::shared_ptr stream, + bool repeat) { m_istream = stream; - return avsCommon::utils::mediaPlayer::MediaPlayerStatus::PENDING; + return ++g_sourceId; } -avsCommon::utils::mediaPlayer::MediaPlayerStatus TestMediaPlayer::setSource(const std::string& url) { - return avsCommon::utils::mediaPlayer::MediaPlayerStatus::SUCCESS; +avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId TestMediaPlayer::setSource( + const std::string& url, + std::chrono::milliseconds offset) { + return ++g_sourceId; } -avsCommon::utils::mediaPlayer::MediaPlayerStatus TestMediaPlayer::play() { +bool TestMediaPlayer::play(avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId id) { if (m_observer) { - m_observer->onPlaybackStarted(); + m_observer->onPlaybackStarted(id); m_playbackFinished = true; m_timer = std::unique_ptr(new avsCommon::utils::timing::Timer); // Wait 600 milliseconds before sending onPlaybackFinished. - m_timer->start( - std::chrono::milliseconds(600), - [this] { - if (m_playbackFinished) { - m_observer->onPlaybackFinished(); - m_playbackFinished = false; - } - } - ); - return avsCommon::utils::mediaPlayer::MediaPlayerStatus::SUCCESS; - } - else { - return avsCommon::utils::mediaPlayer::MediaPlayerStatus::FAILURE; + m_timer->start(std::chrono::milliseconds(600), [this, id] { + if (m_playbackFinished) { + m_observer->onPlaybackFinished(id); + m_playbackFinished = false; + } + }); + return true; + } else { + return false; } } -avsCommon::utils::mediaPlayer::MediaPlayerStatus TestMediaPlayer::stop() { +bool TestMediaPlayer::stop(avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId id) { if (m_observer && m_playbackFinished) { - m_observer->onPlaybackFinished(); + m_observer->onPlaybackStopped(id); m_playbackFinished = false; - return avsCommon::utils::mediaPlayer::MediaPlayerStatus::SUCCESS; + return true; } else { - return avsCommon::utils::mediaPlayer::MediaPlayerStatus::FAILURE; - } + return false; + } } // TODO Add implementation -avsCommon::utils::mediaPlayer::MediaPlayerStatus TestMediaPlayer::pause() { - return avsCommon::utils::mediaPlayer::MediaPlayerStatus::SUCCESS; +bool TestMediaPlayer::pause(avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId id) { + return true; } // TODO Add implementation -avsCommon::utils::mediaPlayer::MediaPlayerStatus TestMediaPlayer::resume() { - return avsCommon::utils::mediaPlayer::MediaPlayerStatus::SUCCESS; +bool TestMediaPlayer::resume(avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId id) { + return true; } -int64_t TestMediaPlayer::getOffsetInMilliseconds() { - return 0; +std::chrono::milliseconds TestMediaPlayer::getOffset(avsCommon::utils::mediaPlayer::MediaPlayerInterface::SourceId id) { + return std::chrono::milliseconds::zero(); } void TestMediaPlayer::setObserver( - std::shared_ptr playerObserver) { - m_observer = playerObserver; + std::shared_ptr playerObserver) { + m_observer = playerObserver; +} + +uint64_t TestMediaPlayer::getNumBytesBuffered() { + return 0; } -} // namespace test -} // namespace integration -} // namespace alexaClientSDK + +} // namespace test +} // namespace integration +} // namespace alexaClientSDK diff --git a/Integration/src/TestMessageSender.cpp b/Integration/src/TestMessageSender.cpp index 8ed45de3d4..e15260f035 100644 --- a/Integration/src/TestMessageSender.cpp +++ b/Integration/src/TestMessageSender.cpp @@ -1,7 +1,5 @@ /* - * TestMessageSender.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -29,15 +27,13 @@ namespace integration { namespace test { TestMessageSender::TestMessageSender( - std::shared_ptr messageRouter, - bool isEnabled, - std::shared_ptr connectionStatusObserver, - std::shared_ptr messageObserver) : RequiresShutdown{"TestMessageSender"} { - m_connectionManager = acl::AVSConnectionManager::create(messageRouter, isEnabled, { connectionStatusObserver }, - { messageObserver }); - // TODO: ACSDK-421: Remove the callback when m_avsConnection manager is no longer an observer to - // StateSynchronizer. - m_connectionManager->onStateChanged(StateSynchronizerObserverInterface::State::SYNCHRONIZED); + std::shared_ptr messageRouter, + bool isEnabled, + std::shared_ptr connectionStatusObserver, + std::shared_ptr messageObserver) : + RequiresShutdown{"TestMessageSender"} { + m_connectionManager = + acl::AVSConnectionManager::create(messageRouter, isEnabled, {connectionStatusObserver}, {messageObserver}); } void TestMessageSender::sendMessage(std::shared_ptr request) { @@ -82,47 +78,34 @@ void TestMessageSender::setAVSEndpoint(const std::string& avsEndpoint) { m_connectionManager->setAVSEndpoint(avsEndpoint); } - void TestMessageSender::addConnectionStatusObserver( - std::shared_ptr observer){ - m_connectionManager->addConnectionStatusObserver(observer); - } +void TestMessageSender::addConnectionStatusObserver( + std::shared_ptr observer) { + m_connectionManager->addConnectionStatusObserver(observer); +} - /** - * Removes an observer from being notified of connection status changes. - * - * @param observer The observer object to remove. - */ - void TestMessageSender::removeConnectionStatusObserver( - std::shared_ptr observer) { - m_connectionManager->removeConnectionStatusObserver(observer); - } +void TestMessageSender::removeConnectionStatusObserver( + std::shared_ptr observer) { + m_connectionManager->removeConnectionStatusObserver(observer); +} - /** - * Adds an observer to be notified of message receptions. - * - * @param observer The observer object to add. - */ - void TestMessageSender::addMessageObserver(std::shared_ptr observer) { - m_connectionManager->addMessageObserver(observer); - } +void TestMessageSender::addMessageObserver( + std::shared_ptr observer) { + m_connectionManager->addMessageObserver(observer); +} - /** - * Removes an observer from being notified of message receptions. - * - * @param observer The observer object to remove. - */ - void TestMessageSender::removeMessageObserver(std::shared_ptr observer) { - m_connectionManager->removeMessageObserver(observer); - } +void TestMessageSender::doShutdown() { + m_connectionManager->shutdown(); +} - void TestMessageSender::synchronize() { - m_connectionManager->onStateChanged(StateSynchronizerObserverInterface::State::SYNCHRONIZED); - } +void TestMessageSender::removeMessageObserver( + std::shared_ptr observer) { + m_connectionManager->removeMessageObserver(observer); +} - void TestMessageSender::doShutdown() { - m_connectionManager->shutdown(); - } +std::shared_ptr TestMessageSender::getConnectionManager() const { + return m_connectionManager; +} -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK diff --git a/Integration/src/TestSpeechSynthesizerObserver.cpp b/Integration/src/TestSpeechSynthesizerObserver.cpp index 02883af58a..9c8f48f025 100644 --- a/Integration/src/TestSpeechSynthesizerObserver.cpp +++ b/Integration/src/TestSpeechSynthesizerObserver.cpp @@ -1,7 +1,5 @@ /* - * TestSpeechSynthesizerObserver.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -21,13 +19,13 @@ namespace alexaClientSDK { namespace integration { namespace test { -using avsCommon::sdkInterfaces::SpeechSynthesizerObserver; +using avsCommon::sdkInterfaces::SpeechSynthesizerObserverInterface; -TestSpeechSynthesizerObserver::TestSpeechSynthesizerObserver(): - m_state(SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED) { +TestSpeechSynthesizerObserver::TestSpeechSynthesizerObserver() : + m_state(SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED) { } -void TestSpeechSynthesizerObserver::onStateChanged(SpeechSynthesizerObserver::SpeechSynthesizerState state) { +void TestSpeechSynthesizerObserver::onStateChanged(SpeechSynthesizerObserverInterface::SpeechSynthesizerState state) { std::unique_lock lock(m_mutex); m_state = state; m_queue.push_back(state); @@ -35,15 +33,16 @@ void TestSpeechSynthesizerObserver::onStateChanged(SpeechSynthesizerObserver::Sp } bool TestSpeechSynthesizerObserver::checkState( - const SpeechSynthesizerObserver::SpeechSynthesizerState expectedState, const std::chrono::seconds duration) { + const SpeechSynthesizerObserverInterface::SpeechSynthesizerState expectedState, + const std::chrono::seconds duration) { // Pull the front of the state queue - SpeechSynthesizerObserver::SpeechSynthesizerState hold = waitForNext(duration); + SpeechSynthesizerObserverInterface::SpeechSynthesizerState hold = waitForNext(duration); return hold == expectedState; } -SpeechSynthesizerObserver::SpeechSynthesizerState TestSpeechSynthesizerObserver::waitForNext ( - const std::chrono::seconds duration) { - SpeechSynthesizerObserver::SpeechSynthesizerState ret; +SpeechSynthesizerObserverInterface::SpeechSynthesizerState TestSpeechSynthesizerObserver::waitForNext( + const std::chrono::seconds duration) { + SpeechSynthesizerObserverInterface::SpeechSynthesizerState ret; std::unique_lock lock(m_mutex); if (!m_wakeTrigger.wait_for(lock, duration, [this]() { return !m_queue.empty(); })) { return m_state; @@ -53,10 +52,10 @@ SpeechSynthesizerObserver::SpeechSynthesizerState TestSpeechSynthesizerObserver: return ret; } -SpeechSynthesizerObserver::SpeechSynthesizerState TestSpeechSynthesizerObserver::getCurrentState() { +SpeechSynthesizerObserverInterface::SpeechSynthesizerState TestSpeechSynthesizerObserver::getCurrentState() { return m_state; } -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK diff --git a/Integration/test/AlertsIntegrationTest.cpp b/Integration/test/AlertsIntegrationTest.cpp index 203f0fb733..484f42ac27 100644 --- a/Integration/test/AlertsIntegrationTest.cpp +++ b/Integration/test/AlertsIntegrationTest.cpp @@ -1,7 +1,5 @@ /* - * AlertsIntegrationTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,7 +13,7 @@ * permissions and limitations under the License. */ -/// @file SpeechSynthesizerIntegrationTest.cpp +/// @file AlertsIntegrationTest.cpp #include #include #include @@ -27,37 +25,42 @@ #include #include "ACL/Transport/HTTP2MessageRouter.h" +#include "ACL/Transport/PostConnectSynchronizer.h" #include "ADSL/DirectiveSequencer.h" #include "ADSL/MessageInterpreter.h" #include "AFML/FocusManager.h" #include "AIP/AudioInputProcessor.h" #include "AIP/AudioProvider.h" #include "AIP/Initiator.h" -#include "Alerts/AlertsCapabilityAgent.h" -#include "Alerts/AlertObserverInterface.h" -#include "Alerts/Storage/SQLiteAlertStorage.h" -#include "AuthDelegate/AuthDelegate.h" #include "AVSCommon/AVS/Attachment/AttachmentManager.h" #include "AVSCommon/AVS/Attachment/InProcessAttachmentReader.h" #include "AVSCommon/AVS/Attachment/InProcessAttachmentWriter.h" #include "AVSCommon/AVS/BlockingPolicy.h" -#include "AVSCommon/Utils/JSON/JSONUtils.h" +#include "AVSCommon/AVS/Initialization/AlexaClientSDKInit.h" #include "AVSCommon/SDKInterfaces/DirectiveHandlerInterface.h" #include "AVSCommon/SDKInterfaces/DirectiveHandlerResultInterface.h" -#include "AVSCommon/AVS/Initialization/AlexaClientSDKInit.h" +#include "AVSCommon/Utils/JSON/JSONUtils.h" +#include "AVSCommon/Utils/LibcurlUtils/HTTPContentFetcherFactory.h" #include "AVSCommon/Utils/Logger/LogEntry.h" +#include "Alerts/AlertObserverInterface.h" +#include "Alerts/AlertsCapabilityAgent.h" +#include "Alerts/Storage/SQLiteAlertStorage.h" +#include "Audio/AlertsAudioFactory.h" +#include "AuthDelegate/AuthDelegate.h" +#include "CertifiedSender/CertifiedSender.h" +#include "CertifiedSender/SQLiteMessageStorage.h" #include "ContextManager/ContextManager.h" #include "Integration/AuthObserver.h" #include "Integration/ClientMessageHandler.h" #include "Integration/ConnectionStatusObserver.h" #include "Integration/ObservableMessageRequest.h" -#include "Integration/TestMessageSender.h" +#include "Integration/TestAlertObserver.h" #include "Integration/TestDirectiveHandler.h" #include "Integration/TestExceptionEncounteredSender.h" -#include "Integration/TestAlertObserver.h" +#include "Integration/TestMessageSender.h" #include "Integration/TestSpeechSynthesizerObserver.h" +#include "RegistrationManager/CustomerDataManager.h" #include "SpeechSynthesizer/SpeechSynthesizer.h" -#include "System/StateSynchronizer.h" #include "System/UserInactivityMonitor.h" #ifdef GSTREAMER_MEDIA_PLAYER @@ -79,6 +82,7 @@ using namespace avsCommon::avs::attachment; using namespace avsCommon::sdkInterfaces; using namespace avsCommon::avs::initialization; using namespace avsCommon::utils::mediaPlayer; +using namespace certifiedSender; using namespace contextManager; using namespace sdkInterfaces; using namespace avsCommon::utils::sds; @@ -107,8 +111,6 @@ static const std::string RECOGNIZE_VERY_LONG_TIMER_AUDIO_FILE_NAME = "/recognize static const std::string RECOGNIZE_STOP_AUDIO_FILE_NAME = "/recognize_stop_timer_test.wav"; // This is a 16 bit 16 kHz little endian linear PCM audio file of "Cancel the timer" to be recognized. static const std::string RECOGNIZE_CANCEL_TIMER_AUDIO_FILE_NAME = "/recognize_cancel_timer_test.wav"; -// This string to be used for SynchronizeState Directives. -static const std::string NAME_SYNC_STATE = "SynchronizeState"; // This string to be used for Speak Directives which use the NAMESPACE_SPEECH_SYNTHESIZER namespace. static const std::string NAME_RECOGNIZE = "Recognize"; // This string to be used for SetAlertFailed Directives which use the NAMESPACE_ALERTS namespace. @@ -142,11 +144,11 @@ static const std::chrono::seconds WAIT_FOR_TIMEOUT_DURATION(25); // This Integer to be used to specify a short timeout in seconds. static const std::chrono::seconds SHORT_TIMEOUT_DURATION(5); /// The compatible encoding for AIP. -static const avsCommon::utils::AudioFormat::Encoding COMPATIBLE_ENCODING = - avsCommon::utils::AudioFormat::Encoding::LPCM; +static const avsCommon::utils::AudioFormat::Encoding COMPATIBLE_ENCODING = + avsCommon::utils::AudioFormat::Encoding::LPCM; /// The compatible endianness for AIP. -static const avsCommon::utils::AudioFormat::Endianness COMPATIBLE_ENDIANNESS = - avsCommon::utils::AudioFormat::Endianness::LITTLE; +static const avsCommon::utils::AudioFormat::Endianness COMPATIBLE_ENDIANNESS = + avsCommon::utils::AudioFormat::Endianness::LITTLE; /// The compatible sample rate for AIP. static const unsigned int COMPATIBLE_SAMPLE_RATE = 16000; /// The compatible bits per sample for Kitt.ai. @@ -184,42 +186,13 @@ static const std::string TAG("AlertsIntegrationTest"); std::string configPath; std::string inputPath; -/// A test observer to wait for state synchronizer. -class TestStateSynchronizerObserver : public StateSynchronizerObserverInterface { -public: - TestStateSynchronizerObserver() : m_state{State::NOT_SYNCHRONIZED} {} - void onStateChanged(State newState) override { - std::lock_guard lock(m_mutex); - m_state = newState; - m_conditionVariable.notify_all(); - } - - /** - * Wait the state sychronizer to notify us of a state change to the specified state. - * - * @param state The state to wait for. - * @param timeout The amount of time to wait for the requested state change. - * @return @c true if the state change occured within the specified timeout, else @c false. - */ - bool waitForState(State state, std::chrono::milliseconds timeout) { - std::unique_lock lock(m_mutex); - return m_conditionVariable.wait_for(lock, timeout, [this, state] () { return state == m_state; }); - } - -private: - State m_state; - std::mutex m_mutex; - std::condition_variable m_conditionVariable; -}; - /// A test observer that mocks out the ChannelObserverInterface##onFocusChanged() call. class TestClient : public ChannelObserverInterface { public: /** * Constructor. */ - TestClient() : - m_focusState(FocusState::NONE), m_focusChangeOccurred(false) { + TestClient() : m_focusState(FocusState::NONE), m_focusChangeOccurred(false) { } /** @@ -243,9 +216,7 @@ class TestClient : public ChannelObserverInterface { */ FocusState waitForFocusChange(std::chrono::milliseconds timeout, bool* focusChanged) { std::unique_lock lock(m_mutex); - bool success = m_focusChangedCV.wait_for(lock, timeout, [this] () { - return m_focusChangeOccurred; - }); + bool success = m_focusChangedCV.wait_for(lock, timeout, [this]() { return m_focusChangeOccurred; }); if (!success) { *focusChanged = false; @@ -270,10 +241,9 @@ class TestClient : public ChannelObserverInterface { bool m_focusChangeOccurred; }; -class holdToTalkButton{ +class holdToTalkButton { public: - bool startRecognizing(std::shared_ptr aip, - std::shared_ptr audioProvider) { + bool startRecognizing(std::shared_ptr aip, std::shared_ptr audioProvider) { return aip->recognize(*audioProvider, Initiator::PRESS_AND_HOLD).get(); } @@ -284,9 +254,7 @@ class holdToTalkButton{ class AlertsTest : public ::testing::Test { protected: - virtual void SetUp() override { - std::ifstream infile(configPath); ASSERT_TRUE(infile.good()); ASSERT_TRUE(AlexaClientSDKInit::initialize({&infile})); @@ -294,7 +262,7 @@ class AlertsTest : public ::testing::Test { m_authDelegate = AuthDelegate::create(); m_authDelegate->addAuthObserver(m_authObserver); m_attachmentManager = std::make_shared( - AttachmentManager::AttachmentType::IN_PROCESS); + AttachmentManager::AttachmentType::IN_PROCESS); m_connectionStatusObserver = std::make_shared(); bool isEnabled = false; m_messageRouter = std::make_shared(m_authDelegate, m_attachmentManager); @@ -303,32 +271,31 @@ class AlertsTest : public ::testing::Test { m_directiveSequencer = DirectiveSequencer::create(m_exceptionEncounteredSender); m_messageInterpreter = std::make_shared( - m_exceptionEncounteredSender, - m_directiveSequencer, - m_attachmentManager); + m_exceptionEncounteredSender, m_directiveSequencer, m_attachmentManager); // Set up connection and connect m_avsConnectionManager = std::make_shared( - m_messageRouter, - isEnabled, - m_connectionStatusObserver, - m_messageInterpreter); - ASSERT_NE (nullptr, m_avsConnectionManager); + m_messageRouter, isEnabled, m_connectionStatusObserver, m_messageInterpreter); + ASSERT_NE(nullptr, m_avsConnectionManager); - m_focusManager = std::make_shared(); + m_focusManager = std::make_shared(FocusManager::DEFAULT_AUDIO_CHANNELS); m_testContentClient = std::make_shared(); - ASSERT_TRUE(m_focusManager->acquireChannel(FocusManager::CONTENT_CHANNEL_NAME, m_testContentClient, CONTENT_ACTIVITY_ID)); - bool focusChanged = false; - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + ASSERT_TRUE(m_focusManager->acquireChannel( + FocusManager::CONTENT_CHANNEL_NAME, m_testContentClient, CONTENT_ACTIVITY_ID)); + bool focusChanged = false; + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); ASSERT_TRUE(focusChanged); m_testDialogClient = std::make_shared(); m_contextManager = ContextManager::create(); - ASSERT_NE (nullptr, m_contextManager); + ASSERT_NE(nullptr, m_contextManager); + PostConnectObject::init(m_contextManager); #ifdef GSTREAMER_MEDIA_PLAYER - m_speakMediaPlayer = MediaPlayer::create(); + m_speakMediaPlayer = + MediaPlayer::create(std::make_shared()); #else m_speakMediaPlayer = std::make_shared(); #endif @@ -339,31 +306,34 @@ class AlertsTest : public ::testing::Test { m_compatibleAudioFormat.endianness = COMPATIBLE_ENDIANNESS; m_compatibleAudioFormat.encoding = COMPATIBLE_ENCODING; - size_t nWords = 1024*1024; + size_t nWords = 1024 * 1024; size_t wordSize = 2; size_t maxReaders = 3; size_t bufferSize = AudioInputStream::calculateBufferSize(nWords, wordSize, maxReaders); auto m_Buffer = std::make_shared(bufferSize); auto m_Sds = avsCommon::avs::AudioInputStream::create(m_Buffer, wordSize, maxReaders); - ASSERT_NE (nullptr, m_Sds); + ASSERT_NE(nullptr, m_Sds); m_AudioBuffer = std::move(m_Sds); - m_AudioBufferWriter = m_AudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); - ASSERT_NE (nullptr, m_AudioBufferWriter); + m_AudioBufferWriter = + m_AudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + ASSERT_NE(nullptr, m_AudioBufferWriter); // Set up hold to talk button. bool alwaysReadable = true; bool canOverride = true; bool canBeOverridden = true; - m_HoldToTalkAudioProvider = std::make_shared( m_AudioBuffer, m_compatibleAudioFormat, - ASRProfile::CLOSE_TALK, !alwaysReadable, canOverride, !canBeOverridden); + m_HoldToTalkAudioProvider = std::make_shared( + m_AudioBuffer, + m_compatibleAudioFormat, + ASRProfile::CLOSE_TALK, + !alwaysReadable, + canOverride, + !canBeOverridden); m_holdToTalkButton = std::make_shared(); - m_userInactivityMonitor = UserInactivityMonitor::create( - m_avsConnectionManager, - m_exceptionEncounteredSender); + m_userInactivityMonitor = UserInactivityMonitor::create(m_avsConnectionManager, m_exceptionEncounteredSender); m_AudioInputProcessor = AudioInputProcessor::create( m_directiveSequencer, m_avsConnectionManager, @@ -371,74 +341,82 @@ class AlertsTest : public ::testing::Test { m_focusManager, m_dialogUXStateAggregator, m_exceptionEncounteredSender, - m_userInactivityMonitor - ); - ASSERT_NE (nullptr, m_AudioInputProcessor); + m_userInactivityMonitor); + ASSERT_NE(nullptr, m_AudioInputProcessor); m_AudioInputProcessor->addObserver(m_dialogUXStateAggregator); // Create and register the SpeechSynthesizer. m_speechSynthesizer = SpeechSynthesizer::create( - m_speakMediaPlayer, - m_avsConnectionManager, - m_focusManager, - m_contextManager, - m_attachmentManager, - m_exceptionEncounteredSender); + m_speakMediaPlayer, + m_avsConnectionManager, + m_focusManager, + m_contextManager, + m_exceptionEncounteredSender, + m_dialogUXStateAggregator); ASSERT_NE(nullptr, m_speechSynthesizer); m_directiveSequencer->addDirectiveHandler(m_speechSynthesizer); m_speechSynthesizerObserver = std::make_shared(); m_speechSynthesizer->addObserver(m_speechSynthesizerObserver); + m_speechSynthesizer->addObserver(m_dialogUXStateAggregator); #ifdef GSTREAMER_MEDIA_PLAYER - m_rendererMediaPlayer = MediaPlayer::create(); + m_rendererMediaPlayer = MediaPlayer::create(nullptr); #else m_rendererMediaPlayer = std::make_shared(); -#endif +#endif m_alertRenderer = renderer::Renderer::create(m_rendererMediaPlayer); - m_alertStorage = std::make_shared(); + auto alertsAudioFactory = std::make_shared(); + + m_alertStorage = capabilityAgents::alerts::storage::SQLiteAlertStorage::create( + avsCommon::utils::configuration::ConfigurationNode::getRoot(), alertsAudioFactory); m_alertObserver = std::make_shared(); + auto messageStorage = + SQLiteMessageStorage::create(avsCommon::utils::configuration::ConfigurationNode::getRoot()); + + m_customerDataManager = std::make_shared(); + + m_certifiedSender = CertifiedSender::create( + m_avsConnectionManager, + m_avsConnectionManager->getConnectionManager(), + std::move(messageStorage), + m_customerDataManager); + m_alertsAgent = AlertsCapabilityAgent::create( m_avsConnectionManager, + m_certifiedSender, m_focusManager, m_contextManager, m_exceptionEncounteredSender, - m_alertRenderer, m_alertStorage, - m_alertObserver); + alertsAudioFactory, + m_alertRenderer, + m_customerDataManager); ASSERT_NE(m_alertsAgent, nullptr); + m_alertsAgent->addObserver(m_alertObserver); m_alertsAgent->onLocalStop(); m_alertsAgent->removeAllAlerts(); m_directiveSequencer->addDirectiveHandler(m_alertsAgent); m_avsConnectionManager->addConnectionStatusObserver(m_alertsAgent); - // TODO: ACSDK-421: Revert this to use m_connectionManager rather than m_messageRouter. - m_stateSynchronizer = StateSynchronizer::create( - m_contextManager, - m_messageRouter); - ASSERT_NE(nullptr, m_stateSynchronizer); - - auto stateSynchronizerObserver = std::make_shared(); - m_stateSynchronizer->addObserver(stateSynchronizerObserver); - - m_avsConnectionManager->addConnectionStatusObserver(m_stateSynchronizer); - connect(); - ASSERT_TRUE(stateSynchronizerObserver->waitForState( - StateSynchronizerObserverInterface::State::SYNCHRONIZED, - WAIT_FOR_TIMEOUT_DURATION)); - - m_alertsAgent->enableSendEvents(); } void TearDown() override { - m_alertsAgent->onLocalStop(); - m_alertsAgent->removeAllAlerts(); disconnect(); + m_AudioInputProcessor->shutdown(); m_directiveSequencer->shutdown(); + m_speechSynthesizer->shutdown(); + if (m_alertsAgent) { + m_alertsAgent->onLocalStop(); + m_alertsAgent->removeAllAlerts(); + m_alertsAgent->shutdown(); + } + m_certifiedSender->shutdown(); + m_avsConnectionManager->shutdown(); AlexaClientSDKInit::uninitialize(); } @@ -446,14 +424,10 @@ class AlertsTest : public ::testing::Test { * Connect to AVS. */ void connect() { - ASSERT_TRUE(m_authObserver->waitFor(AuthObserver::State::REFRESHED)) - << "Retrieving the auth token timed out."; + ASSERT_TRUE(m_authObserver->waitFor(AuthObserver::State::REFRESHED)) << "Retrieving the auth token timed out."; m_avsConnectionManager->enable(); ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::CONNECTED)) - << "Connecting timed out."; - m_avsConnectionManager->synchronize(); - ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::POST_CONNECTED)) - << "Post connecting timed out."; + << "Connecting timed out."; } /** @@ -462,18 +436,17 @@ class AlertsTest : public ::testing::Test { void disconnect() { m_avsConnectionManager->disable(); ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::DISCONNECTED)) - << "Connecting timed out."; + << "Connecting timed out."; } std::string getSentEventName(TestMessageSender::SendParams sendParams) { - std::string eventString; - std::string eventHeader; - std::string eventName; - jsonUtils::lookupStringValue(sendParams.request->getJsonContent(), JSON_MESSAGE_EVENT_KEY, &eventString); - jsonUtils::lookupStringValue(eventString, JSON_MESSAGE_HEADER_KEY, &eventHeader); - jsonUtils::lookupStringValue(eventHeader, JSON_MESSAGE_NAME_KEY, &eventName); - return eventName; - + std::string eventString; + std::string eventHeader; + std::string eventName; + jsonUtils::retrieveValue(sendParams.request->getJsonContent(), JSON_MESSAGE_EVENT_KEY, &eventString); + jsonUtils::retrieveValue(eventString, JSON_MESSAGE_HEADER_KEY, &eventHeader); + jsonUtils::retrieveValue(eventHeader, JSON_MESSAGE_NAME_KEY, &eventName); + return eventName; } bool checkSentEventName(TestMessageSender::SendParams sendParams, std::string expectedName) { @@ -485,7 +458,7 @@ class AlertsTest : public ::testing::Test { return false; } - std::vector readAudioFromFile(const std::string &fileName, bool* errorOccurred) { + std::vector readAudioFromFile(const std::string& fileName, bool* errorOccurred) { const int RIFF_HEADER_SIZE = 44; std::ifstream inputFile(fileName.c_str(), std::ifstream::binary); @@ -512,9 +485,9 @@ class AlertsTest : public ::testing::Test { std::vector retVal(numSamples, 0); - inputFile.read((char *)&retVal[0], numSamples * 2); + inputFile.read((char*)&retVal[0], numSamples * 2); - if (inputFile.gcount() != numSamples*2) { + if (inputFile.gcount() != numSamples * 2) { std::cout << "Error reading audio file" << std::endl; if (errorOccurred) { *errorOccurred = true; @@ -551,6 +524,7 @@ class AlertsTest : public ::testing::Test { std::shared_ptr m_connectionStatusObserver; std::shared_ptr m_messageRouter; std::shared_ptr m_avsConnectionManager; + std::shared_ptr m_certifiedSender; std::shared_ptr m_exceptionEncounteredSender; std::shared_ptr m_directiveHandler; std::shared_ptr m_directiveSequencer; @@ -564,10 +538,9 @@ class AlertsTest : public ::testing::Test { std::shared_ptr m_speechSynthesizer; std::shared_ptr m_alertsAgent; std::shared_ptr m_speechSynthesizerObserver; - std::shared_ptr m_alertStorage; + std::shared_ptr m_alertStorage; std::shared_ptr m_alertRenderer; std::shared_ptr m_alertObserver; - std::shared_ptr m_stateSynchronizer; std::shared_ptr m_holdToTalkButton; std::shared_ptr m_HoldToTalkAudioProvider; avsCommon::utils::AudioFormat m_compatibleAudioFormat; @@ -575,6 +548,7 @@ class AlertsTest : public ::testing::Test { std::shared_ptr m_AudioBuffer; std::shared_ptr m_AudioInputProcessor; std::shared_ptr m_userInactivityMonitor; + std::shared_ptr m_customerDataManager; FocusState m_focusState; std::mutex m_mutex; @@ -589,13 +563,12 @@ class AlertsTest : public ::testing::Test { std::shared_ptr m_speakMediaPlayer; std::shared_ptr m_rendererMediaPlayer; #endif - }; /** * Test when one timer is stopped locally * - * Set a 5 second timer, ensure it goes off, then use local stop and make sure the timer is stopped. + * Set a 5 second timer, ensure it goes off, then use local stop and make sure the timer is stopped. */ TEST_F(AlertsTest, handleOneTimerWithLocalStop) { // Write audio to SDS saying "Set a timer for 5 seconds" @@ -603,7 +576,7 @@ TEST_F(AlertsTest, handleOneTimerWithLocalStop) { TestMessageSender::SendParams sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - // Speech is handled. + // Speech is handled. TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -613,6 +586,8 @@ TEST_F(AlertsTest, handleOneTimerWithLocalStop) { sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_SET_ALERT_SUCCEEDED)); + ASSERT_EQ(m_alertObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION).state, AlertObserverInterface::State::READY); + // AlertStarted Event is sent. sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STARTED)); @@ -620,9 +595,10 @@ TEST_F(AlertsTest, handleOneTimerWithLocalStop) { ASSERT_EQ(m_alertObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION).state, AlertObserverInterface::State::STARTED); // The test channel client has been notified the content channel has been backgrounded. - bool focusChanged = false; - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); - ASSERT_TRUE(focusChanged); + bool focusChanged = false; + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); + ASSERT_TRUE(focusChanged); // Locally stop the alarm. m_alertsAgent->onLocalStop(); @@ -633,8 +609,9 @@ TEST_F(AlertsTest, handleOneTimerWithLocalStop) { sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STOPPED)); - // Low priority Test client gets back permission to the test channel - EXPECT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + // Low priority Test client gets back permission to the test channel + EXPECT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); EXPECT_TRUE(focusChanged); } @@ -650,35 +627,39 @@ TEST_F(AlertsTest, handleMultipleTimersWithLocalStop) { ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); // The test channel client has been notified the content channel has been backgrounded. - bool focusChanged = false; - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); - ASSERT_TRUE(focusChanged); + bool focusChanged = false; + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); + ASSERT_TRUE(focusChanged); - // Speech is handled. + // Speech is handled. TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendFinishedParams, NAME_SPEECH_FINISHED)); - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); - ASSERT_TRUE(focusChanged); + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + ASSERT_TRUE(focusChanged); // Write audio to SDS saying "Set a timer for 5 seconds". sendAudioFileAsRecognize(RECOGNIZE_TIMER_AUDIO_FILE_NAME); sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); - ASSERT_TRUE(focusChanged); + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); + ASSERT_TRUE(focusChanged); - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); - ASSERT_TRUE(focusChanged); + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + ASSERT_TRUE(focusChanged); // SetAlertSucceeded Event is sent sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_SET_ALERT_SUCCEEDED)); - // Speech is handled. + // Speech is handled. sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -693,13 +674,14 @@ TEST_F(AlertsTest, handleMultipleTimersWithLocalStop) { ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STARTED)); // The test channel client has been notified the content channel has been backgrounded. - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); ASSERT_TRUE(focusChanged); std::this_thread::sleep_for(std::chrono::milliseconds(2000)); // Locally stop the alarm. - m_alertsAgent->onLocalStop(); + m_focusManager->stopForegroundActivity(); // AlertStopped Event is sent. sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -710,28 +692,30 @@ TEST_F(AlertsTest, handleMultipleTimersWithLocalStop) { ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STARTED)); // The test channel client has been notified the content channel has been backgrounded. - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); ASSERT_TRUE(focusChanged); std::this_thread::sleep_for(std::chrono::milliseconds(600)); // Locally stop the second alarm. - m_alertsAgent->onLocalStop(); + m_focusManager->stopForegroundActivity(); // AlertStopped Event is sent. sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STOPPED)); // Low priority Test client gets back permission to the test channel. - EXPECT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + EXPECT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); EXPECT_TRUE(focusChanged); } /** * Test when the Alerts channel is acqired by a different client when an alert is active * - * Set a 5 second timer, ensure it goes off, then have a test client acquire the Alerts channel. Ensure that the alert is - * stopped. + * Set a 5 second timer, ensure it goes off, then have a test client acquire the Alerts channel. Ensure that the alert + * is stopped. */ TEST_F(AlertsTest, stealChannelFromActiveAlert) { // Write audio to SDS saying "Set a timer for 5 seconds" @@ -739,7 +723,7 @@ TEST_F(AlertsTest, stealChannelFromActiveAlert) { TestMessageSender::SendParams sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - // Speech is handled. + // Speech is handled. TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -752,15 +736,18 @@ TEST_F(AlertsTest, stealChannelFromActiveAlert) { // AlertStarted Event is sent. sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STARTED)); + ASSERT_EQ(m_alertObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION).state, AlertObserverInterface::State::READY); ASSERT_EQ(m_alertObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION).state, AlertObserverInterface::State::STARTED); // The test channel client has been notified the content channel has been backgrounded. - bool focusChanged = false; - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); - ASSERT_TRUE(focusChanged); + bool focusChanged = false; + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); + ASSERT_TRUE(focusChanged); - // Steal the alerts channel. - ASSERT_TRUE(m_focusManager->acquireChannel(FocusManager::ALERTS_CHANNEL_NAME, m_testDialogClient, ALERTS_ACTIVITY_ID)); + // Steal the alerts channel. + ASSERT_TRUE( + m_focusManager->acquireChannel(FocusManager::ALERTS_CHANNEL_NAME, m_testDialogClient, ALERTS_ACTIVITY_ID)); // AlertStopped Event is sent. sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -772,15 +759,16 @@ TEST_F(AlertsTest, stealChannelFromActiveAlert) { m_focusManager->releaseChannel(FocusManager::ALERTS_CHANNEL_NAME, m_testDialogClient); // Low priority Test client gets back permission to the test channel. - EXPECT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + EXPECT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); EXPECT_TRUE(focusChanged); } /** * Test when a disconnect and reconnect happens while an alert is active * - * Set a 5 second timer, then call disconnect, wait for the alert to become active and reconnect. - * Locally stop the alert and ensure AlertStopped is sent. + * Set a 5 second timer, then call disconnect, wait for the alert to become active and reconnect. + * Locally stop the alert and ensure AlertStopped is sent. */ TEST_F(AlertsTest, DisconnectAndReconnectBeforeLocalStop) { // Write audio to SDS saying "Set a timer for 5 seconds" @@ -788,7 +776,7 @@ TEST_F(AlertsTest, DisconnectAndReconnectBeforeLocalStop) { TestMessageSender::SendParams sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - // Speech is handled. + // Speech is handled. TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -798,27 +786,38 @@ TEST_F(AlertsTest, DisconnectAndReconnectBeforeLocalStop) { sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_SET_ALERT_SUCCEEDED)); + // allow time for the certified sender to send the message ok. + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); + disconnect(); // Wait for the alarm to go off. std::this_thread::sleep_for(std::chrono::milliseconds(6000)); // The test channel client has been notified the content channel has been backgrounded. - bool focusChanged = false; - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); - ASSERT_TRUE(focusChanged); + bool focusChanged = false; + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); + ASSERT_TRUE(focusChanged); connect(); - + + // allow time for the other components to become aware of the connection status change. + std::this_thread::sleep_for(std::chrono::milliseconds(2000)); + // Locally stop the alarm. m_alertsAgent->onLocalStop(); - //AlertStopped Event is sent. + // AlertStarted Event is sent. + sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); + ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STARTED)); + // AlertStopped Event is sent. sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STOPPED)); - // Low priority Test client gets back permission to the test channel - EXPECT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + // Low priority Test client gets back permission to the test channel + EXPECT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); EXPECT_TRUE(focusChanged); m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged); @@ -828,8 +827,8 @@ TEST_F(AlertsTest, DisconnectAndReconnectBeforeLocalStop) { /** * Test when a disconnect and reconnect happens before an alert is active * - * Set a 5 second timer, then call disconnect then reconnect. Once the alert is active, locally stop the alert - * and ensure AlertStopped is sent. + * Set a 5 second timer, then call disconnect then reconnect. Once the alert is active, locally stop the alert + * and ensure AlertStopped is sent. */ TEST_F(AlertsTest, DisconnectAndReconnect) { // Write audio to SDS saying "Set a timer for 5 seconds" @@ -837,7 +836,7 @@ TEST_F(AlertsTest, DisconnectAndReconnect) { TestMessageSender::SendParams sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - // Speech is handled. + // Speech is handled. TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -852,30 +851,32 @@ TEST_F(AlertsTest, DisconnectAndReconnect) { std::this_thread::sleep_for(std::chrono::milliseconds(6000)); // The test channel client has been notified the content channel has been backgrounded. - bool focusChanged = false; + bool focusChanged = false; - EXPECT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); - EXPECT_TRUE(focusChanged); + EXPECT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); + EXPECT_TRUE(focusChanged); // Locally stop the alarm. m_alertsAgent->onLocalStop(); connect(); - //AlertStopped Event is sent. + // AlertStopped Event is sent. sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_FALSE(checkSentEventName(sendParams, NAME_ALERT_STOPPED)); - // Low priority Test client gets back permission to the test channel - EXPECT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + // Low priority Test client gets back permission to the test channel + EXPECT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); EXPECT_TRUE(focusChanged); } /** - * Test when all alerts are cleared from storage before an alert is active + * Test when all alerts are cleared from storage before an alert is active * * Set a 5 second timer, then call removeAllAlerts. Wait and ensure that the alert does not become active and no - * events are sent for it. + * events are sent for it. */ TEST_F(AlertsTest, RemoveAllAlertsBeforeAlertIsActive) { // Write audio to SDS saying "Set a timer for 5 seconds" @@ -883,14 +884,18 @@ TEST_F(AlertsTest, RemoveAllAlertsBeforeAlertIsActive) { TestMessageSender::SendParams sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - // Speech is handled. + // Speech is handled. TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendFinishedParams, NAME_SPEECH_FINISHED)); - bool focusChanged = false; + bool focusChanged = false; FocusState state; + state = m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged); + ASSERT_TRUE(focusChanged); + ASSERT_EQ(state, FocusState::BACKGROUND); + state = m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged); ASSERT_TRUE(focusChanged); ASSERT_EQ(state, FocusState::FOREGROUND); @@ -918,10 +923,10 @@ TEST_F(AlertsTest, RemoveAllAlertsBeforeAlertIsActive) { } /** - * Test when an alert is canceled before it is due + * Test when an alert is canceled before it is due * * Set a 10 second timer, then send audio of "Cancel the timer" as a recognize event. Ensure the timer does not go off - * and the DeleteAlertSucceeded event is sent. + * and the DeleteAlertSucceeded event is sent. */ TEST_F(AlertsTest, cancelAlertBeforeItIsActive) { // Write audio to SDS saying "Set a timer for 10 seconds" @@ -929,7 +934,7 @@ TEST_F(AlertsTest, cancelAlertBeforeItIsActive) { TestMessageSender::SendParams sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - // Speech is handled. + // Speech is handled. TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -949,18 +954,20 @@ TEST_F(AlertsTest, cancelAlertBeforeItIsActive) { sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_DELETE_ALERT_SUCCEEDED)); - // Speech is handled. + // Speech is handled. sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendFinishedParams, NAME_SPEECH_FINISHED)); // Low priority Test client gets back permission to the test channel. - bool focusChanged = false; - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + bool focusChanged = false; + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); - m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged); - ASSERT_FALSE(focusChanged); + focusChanged = false; + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); // AlertStarted Event is not sent. sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -980,38 +987,50 @@ TEST_F(AlertsTest, RemoveStorageBeforeAlarmIsSet) { TestMessageSender::SendParams sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - // Speech is handled. + // Speech is handled. TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendFinishedParams, NAME_SPEECH_FINISHED)); - - bool focusChanged = false; - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + + bool focusChanged = false; + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); ASSERT_TRUE(focusChanged); - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); ASSERT_TRUE(focusChanged); - // SetAlertSucceeded Event is sent + // SetAlertFailed Event is sent sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_SET_ALERT_FAILED)); - // AlertStarted Event is sent. sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); + if (checkSentEventName(sendParams, NAME_SPEECH_STARTED)) { + sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); + if (checkSentEventName(sendParams, NAME_SPEECH_FINISHED)) { + sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); + } + } + // DeleteAlertFailed is sent. ASSERT_TRUE(checkSentEventName(sendParams, NAME_DELETE_ALERT_FAILED)); - // Low priority Test client gets back permission to the test channel. - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); ASSERT_TRUE(focusChanged); + // Low priority Test client gets back permission to the test channel. + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + ASSERT_TRUE(focusChanged); } /** - * Test when an alert is active and the user barges in and gets one speak in response + * Test when an alert is active and the user barges in and gets one speak in response * - * Set a 5 second timer and wait until it is active. Send a recognize event asking for joke and see that the alert goes into - * the background. When the speak is complete, the alert is forgrounded and can be locally stopped. + * Set a 5 second timer and wait until it is active. Send a recognize event asking for joke and see that the alert goes + * into the background. When the speak is complete, the alert is forgrounded and can be locally stopped. */ TEST_F(AlertsTest, UserShortUnrelatedBargeInOnActiveTimer) { // Write audio to SDS saying "Set a timer for 5 seconds" @@ -1019,7 +1038,7 @@ TEST_F(AlertsTest, UserShortUnrelatedBargeInOnActiveTimer) { TestMessageSender::SendParams sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - // Speech is handled. + // Speech is handled. TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -1034,8 +1053,9 @@ TEST_F(AlertsTest, UserShortUnrelatedBargeInOnActiveTimer) { ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STARTED)); // The test channel client has been notified the content channel has been backgrounded. - bool focusChanged = false; - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); + bool focusChanged = false; + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); ASSERT_TRUE(focusChanged); // Write audio to SDS sying "Tell me a joke" @@ -1044,14 +1064,13 @@ TEST_F(AlertsTest, UserShortUnrelatedBargeInOnActiveTimer) { if (getSentEventName(sendParams) == NAME_ALERT_ENTERED_BACKGROUND) { sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - } - else { + } else { ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_ENTERED_BACKGROUND)); } - // Speech is handled. + // Speech is handled. sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -1069,25 +1088,25 @@ TEST_F(AlertsTest, UserShortUnrelatedBargeInOnActiveTimer) { sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); EXPECT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STOPPED)); - // Low priority Test client gets back permission to the test channel - EXPECT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + // Low priority Test client gets back permission to the test channel + EXPECT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); EXPECT_TRUE(focusChanged); - } /** - * Test when an alert is active and the user barges in and gets multiple speaks in response + * Test when an alert is active and the user barges in and gets multiple speaks in response * - * Set a 5 second timer and wait until it is active. Send a recognize event asking "what's up" and see that the alert goes into - * the background. When all the speaks are complete, the alert is forgrounded and can be locally stopped. + * Set a 5 second timer and wait until it is active. Send a recognize event asking "what's up" and see that the alert + * goes into the background. When all the speaks are complete, the alert is forgrounded and can be locally stopped. */ -TEST_F(AlertsTest, UserLongUnrelatedBargeInOnActiveTimer) { +TEST_F(AlertsTest, DISABLED_UserLongUnrelatedBargeInOnActiveTimer) { // Write audio to SDS saying "Set a timer for 5 seconds" sendAudioFileAsRecognize(RECOGNIZE_TIMER_AUDIO_FILE_NAME); TestMessageSender::SendParams sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - // Speech is handled. + // Speech is handled. TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -1105,44 +1124,44 @@ TEST_F(AlertsTest, UserLongUnrelatedBargeInOnActiveTimer) { ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STARTED)); // The test channel client has been notified the content channel has been backgrounded. - bool focusChanged = false; - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); - ASSERT_TRUE(focusChanged); + bool focusChanged = false; + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); + ASSERT_TRUE(focusChanged); // Write audio to SDS sying "What's up" sendAudioFileAsRecognize(RECOGNIZE_WHATS_UP_AUDIO_FILE_NAME); sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - if(getSentEventName(sendParams) == NAME_ALERT_ENTERED_BACKGROUND) { + if (getSentEventName(sendParams) == NAME_ALERT_ENTERED_BACKGROUND) { sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); EXPECT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - } - else { + } else { EXPECT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_ENTERED_BACKGROUND)); } - // Speech is handled. + // Speech is handled. sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - if (getSentEventName(sendParams) == NAME_ALERT_ENTERED_FOREGROUND) { - sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - } ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); - sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - ASSERT_TRUE(checkSentEventName(sendFinishedParams, NAME_SPEECH_FINISHED)); - // For each speak directive that results from "what's up", the alert losses and gains foreground. - for (int i = 0; i <4; i++) { - sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_ENTERED_FOREGROUND)); + sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); + ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_FINISHED)); + sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); + ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_ALERT_ENTERED_FOREGROUND)); + sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_ENTERED_BACKGROUND)); + ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_ALERT_ENTERED_BACKGROUND)); + + while (checkSentEventName(sendStartedParams, NAME_ALERT_ENTERED_BACKGROUND)) { sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); - sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - ASSERT_TRUE(checkSentEventName(sendFinishedParams, NAME_SPEECH_FINISHED)); + sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); + ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_FINISHED)); + sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); + ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_ALERT_ENTERED_FOREGROUND)); + sendStartedParams = m_avsConnectionManager->waitForNext(SHORT_TIMEOUT_DURATION); } std::this_thread::sleep_for(std::chrono::milliseconds(600)); @@ -1150,28 +1169,21 @@ TEST_F(AlertsTest, UserLongUnrelatedBargeInOnActiveTimer) { // Locally stop the alarm. m_alertsAgent->onLocalStop(); - sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - if (getSentEventName(sendParams) == NAME_ALERT_ENTERED_FOREGROUND) { - // AlertStopped Event is sent - sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STOPPED)); - } - else { - ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STOPPED)); - } + sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); + ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_ALERT_STOPPED)); - // Low priority Test client gets back permission to the test channel - EXPECT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + // Low priority Test client gets back permission to the test channel + EXPECT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); EXPECT_TRUE(focusChanged); - } /** * Test when the user is speaking to Alexa and an alert becomes active * - * Set a 5 second timer then start a recognize event using a hold to talk initiator but do not call stopCapture until the - * alert has become active in the background. Once the alert is active, call stopCapture and see that is is in the foreground - * before locally stopping it. + * Set a 5 second timer then start a recognize event using a hold to talk initiator but do not call stopCapture until + * the alert has become active in the background. Once the alert is active, call stopCapture and see that is is in the + * foreground before locally stopping it. */ TEST_F(AlertsTest, UserSpeakingWhenAlertShouldBeActive) { // Write audio to SDS saying "Set a timer for 10 seconds" @@ -1179,7 +1191,7 @@ TEST_F(AlertsTest, UserSpeakingWhenAlertShouldBeActive) { TestMessageSender::SendParams sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - // Speech is handled. + // Speech is handled. TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -1205,9 +1217,10 @@ TEST_F(AlertsTest, UserSpeakingWhenAlertShouldBeActive) { ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); // The test channel client has been notified the content channel has been backgrounded. - bool focusChanged = false; - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); - ASSERT_TRUE(focusChanged); + bool focusChanged = false; + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); + ASSERT_TRUE(focusChanged); // AlertStarted Event is sent. sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -1216,16 +1229,15 @@ TEST_F(AlertsTest, UserSpeakingWhenAlertShouldBeActive) { // Stop holding the button. ASSERT_TRUE(m_holdToTalkButton->stopRecognizing(m_AudioInputProcessor)); - // Speech is handled. + // Speech is handled. sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - if(getSentEventName(sendParams) == NAME_SPEECH_FINISHED) { + if (getSentEventName(sendParams) == NAME_SPEECH_FINISHED) { sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_ENTERED_FOREGROUND)); - } - else { + } else { ASSERT_TRUE(checkSentEventName(sendFinishedParams, NAME_SPEECH_FINISHED)); } @@ -1234,14 +1246,13 @@ TEST_F(AlertsTest, UserSpeakingWhenAlertShouldBeActive) { // Locally stop the alarm. m_alertsAgent->onLocalStop(); - // Low priority Test client gets back permission to the test channel - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + // Low priority Test client gets back permission to the test channel + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); ASSERT_TRUE(focusChanged); - } TEST_F(AlertsTest, handleOneTimerWithVocalStop) { - // Write audio to SDS saying "Set a timer for 5 seconds" sendAudioFileAsRecognize(RECOGNIZE_TIMER_AUDIO_FILE_NAME); TestMessageSender::SendParams sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -1262,58 +1273,56 @@ TEST_F(AlertsTest, handleOneTimerWithVocalStop) { sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STARTED)); + ASSERT_EQ(m_alertObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION).state, AlertObserverInterface::State::READY); ASSERT_EQ(m_alertObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION).state, AlertObserverInterface::State::STARTED); std::this_thread::sleep_for(std::chrono::milliseconds(2000)); // The test channel client has been notified the content channel has been backgrounded. - bool focusChanged = false; - ASSERT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); - ASSERT_TRUE(focusChanged); + bool focusChanged = false; + ASSERT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::BACKGROUND); + ASSERT_TRUE(focusChanged); // Write audio to SDS sying "Stop" sendAudioFileAsRecognize(RECOGNIZE_STOP_AUDIO_FILE_NAME); sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - if(getSentEventName(sendParams) == NAME_ALERT_ENTERED_BACKGROUND) { + if (getSentEventName(sendParams) == NAME_ALERT_ENTERED_BACKGROUND) { sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); EXPECT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - } - else { + } else { EXPECT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_ENTERED_BACKGROUND)); } sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - if (getSentEventName(sendParams) == NAME_ALERT_ENTERED_FOREGROUND) { - // AlertStopped Event is sent - sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STOPPED)); - } - else { - ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STOPPED)); - - } + ASSERT_TRUE(checkSentEventName(sendParams, NAME_DELETE_ALERT_SUCCEEDED)); sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - ASSERT_TRUE(checkSentEventName(sendParams, NAME_DELETE_ALERT_SUCCEEDED)); + ASSERT_TRUE(checkSentEventName(sendParams, NAME_ALERT_STOPPED)); - // Low priority Test client gets back permission to the test channel - EXPECT_EQ(m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); - EXPECT_TRUE(focusChanged); + ASSERT_EQ( + m_alertObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION).state, + AlertObserverInterface::State::FOCUS_ENTERED_BACKGROUND); + ASSERT_EQ(m_alertObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION).state, AlertObserverInterface::State::STOPPED); + // Low priority Test client gets back permission to the test channel + EXPECT_EQ( + m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged), FocusState::FOREGROUND); + EXPECT_TRUE(focusChanged); } -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); if (argc < 3) { - std::cerr << "USAGE: AlertsIntegration " - << std::endl; + std::cerr << "USAGE: " << std::string(argv[0]) << " " + << std::endl; return 1; } else { diff --git a/Integration/test/AlexaAuthorizationDelegateTest.cpp b/Integration/test/AlexaAuthorizationDelegateTest.cpp index 676eed19a0..e21baaf7a1 100644 --- a/Integration/test/AlexaAuthorizationDelegateTest.cpp +++ b/Integration/test/AlexaAuthorizationDelegateTest.cpp @@ -1,7 +1,5 @@ /* - * AlexaAuthorizationDelegateTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -39,7 +37,7 @@ std::string g_configPath; /// Timeout in seconds for AuthDelegate to wait for LWA response. const int TIME_OUT_IN_SECONDS = 60; -} // namespace +} // namespace namespace alexaClientSDK { namespace integration { @@ -48,7 +46,6 @@ namespace test { /// Define test fixture for AuthDelegate integration test. class AlexaAuthorizationDelegateTest : public ::testing::Test { protected: - /// Initialize test dependencies AlexaAuthorizationDelegateTest() { m_authObserver = std::make_shared(); @@ -79,8 +76,8 @@ class AlexaAuthorizationDelegateTest : public ::testing::Test { TEST_F(AlexaAuthorizationDelegateTest, refreshAuthToken) { auto authDelegate = AuthDelegate::create(); authDelegate->addAuthObserver(m_authObserver); - bool tokenRefreshed = m_authObserver->waitFor(AuthObserver::State::REFRESHED, - std::chrono::seconds(TIME_OUT_IN_SECONDS)); + bool tokenRefreshed = + m_authObserver->waitFor(AuthObserver::State::REFRESHED, std::chrono::seconds(TIME_OUT_IN_SECONDS)); ASSERT_TRUE(tokenRefreshed) << "Refreshing the auth token timed out."; } @@ -103,19 +100,19 @@ TEST_F(AlexaAuthorizationDelegateTest, invalidRefreshTokenWithUnrecoverableError ASSERT_TRUE(AlexaClientSDKInit::initialize({&infile, &override})); auto authDelegate = AuthDelegate::create(); authDelegate->addAuthObserver(m_authObserver); - bool gotUnrecoverableError = m_authObserver->waitFor(AuthObserver::State::UNRECOVERABLE_ERROR, - std::chrono::seconds(TIME_OUT_IN_SECONDS)); + bool gotUnrecoverableError = + m_authObserver->waitFor(AuthObserver::State::UNRECOVERABLE_ERROR, std::chrono::seconds(TIME_OUT_IN_SECONDS)); ASSERT_TRUE(gotUnrecoverableError) << "Waiting for UNRECOVERABLE_ERROR timed out"; } -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); if (argc < 2) { - std::cerr << "USAGE: AlexaAuthorizationDelegateTest " << std::endl; + std::cerr << "USAGE: " << std::string(argv[0]) << " " << std::endl; return 1; } else { g_configPath = std::string(argv[1]); diff --git a/Integration/test/AlexaCommunicationsLibraryTest.cpp b/Integration/test/AlexaCommunicationsLibraryTest.cpp index 4498488b22..350be6a006 100644 --- a/Integration/test/AlexaCommunicationsLibraryTest.cpp +++ b/Integration/test/AlexaCommunicationsLibraryTest.cpp @@ -1,7 +1,5 @@ /* - * AlexaCommunicationsLibraryTest.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -24,7 +22,9 @@ #include #include +#include #include +#include #include #include #include @@ -49,6 +49,7 @@ using namespace avsCommon::utils::sds; using namespace avsCommon::avs::initialization; /// This is a basic synchronize JSON message which may be used to initiate a connection with AVS. +// clang-format off static const std::string SYNCHRONIZE_STATE_JSON = "{" "\"context\":[{" @@ -72,6 +73,7 @@ static const std::string SYNCHRONIZE_STATE_JSON = "}" "}" "}"; +// clang-format on /// This is a partial JSON string that should not be parseable. static const std::string BAD_SYNCHRONIZE_STATE_JSON = "{"; @@ -82,6 +84,7 @@ static const std::string BAD_SYNCHRONIZE_STATE_JSON = "{"; * CLOSE_TALK performs end-of-speech detection on the client, so a stop-capture directive will not be received from AVS. * NEAR_FIELD performs end-of-speech detection in AVS, so a stop-capture directive will be received from AVS. */ +// clang-format off #define RECOGNIZE_EVENT_JSON(PROFILE) \ "{" \ "\"event\":{" \ @@ -139,6 +142,7 @@ static const std::string BAD_SYNCHRONIZE_STATE_JSON = "{"; "}" \ "}]" \ "}" +// clang-format on /// This string specifies a Recognize event using the CLOSE_TALK profile. static const std::string CT_RECOGNIZE_EVENT_JSON = RECOGNIZE_EVENT_JSON(CLOSE_TALK); @@ -146,6 +150,7 @@ static const std::string CT_RECOGNIZE_EVENT_JSON = RECOGNIZE_EVENT_JSON(CLOSE_TA static const std::string NF_RECOGNIZE_EVENT_JSON = RECOGNIZE_EVENT_JSON(NEAR_FIELD); /// This string specifies an ExpectSpeechTimedOut event. +// clang-format off static const std::string EXPECT_SPEECH_TIMED_OUT_EVENT_JSON = "{" "\"event\": {" @@ -158,6 +163,7 @@ static const std::string EXPECT_SPEECH_TIMED_OUT_EVENT_JSON = "}" "}" "}"; +// clang-format on /// This is a 16 bit 16 kHz little endian linear PCM audio file containing a recognized message for AVS static const std::string RECOGNIZE_AUDIO_FILE_NAME = "recognize_test.wav"; @@ -186,6 +192,10 @@ class AlexaCommunicationsLibraryTest : public ::testing::Test { ASSERT_TRUE(m_authDelegate = AuthDelegate::create()); m_authDelegate->addAuthObserver(m_authObserver); + m_contextManager = contextManager::ContextManager::create(); + ASSERT_NE(m_contextManager, nullptr); + PostConnectObject::init(m_contextManager); + m_attachmentManager = std::make_shared(AttachmentManager::AttachmentType::IN_PROCESS); m_connectionStatusObserver = std::make_shared(); @@ -194,44 +204,37 @@ class AlexaCommunicationsLibraryTest : public ::testing::Test { bool isEnabled = false; m_avsConnectionManager = AVSConnectionManager::create( - m_messageRouter, - isEnabled, - { m_connectionStatusObserver }, - { m_clientMessageHandler }); + m_messageRouter, isEnabled, {m_connectionStatusObserver}, {m_clientMessageHandler}); connect(); } void TearDown() override { disconnect(); + m_avsConnectionManager->shutdown(); AlexaClientSDKInit::uninitialize(); } void connect() { ASSERT_TRUE(m_authObserver->waitFor(AuthObserver::State::REFRESHED)) << "Retrieving the auth token timed out."; m_avsConnectionManager->enable(); - ASSERT_TRUE(m_connectionStatusObserver->waitFor( - ConnectionStatusObserverInterface::Status::CONNECTED)) << "Connecting timed out."; - // TODO: ACSDK-421: Remove the callback when m_avsConnection manager is no longer an observer to - // StateSynchronizer. - m_avsConnectionManager->onStateChanged(StateSynchronizerObserverInterface::State::SYNCHRONIZED); - ASSERT_TRUE(m_connectionStatusObserver->waitFor( - ConnectionStatusObserverInterface::Status::POST_CONNECTED)) << "Post connecting timed out."; + ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::CONNECTED)) + << "Connecting timed out."; } void disconnect() { m_avsConnectionManager->disable(); - ASSERT_TRUE(m_connectionStatusObserver->waitFor( - ConnectionStatusObserverInterface::Status::DISCONNECTED)) << "Disconnecting timed out."; + ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::DISCONNECTED)) + << "Disconnecting timed out."; } /* * Function to send an Event to AVS. */ void sendEvent( - const std::string & jsonContent, - MessageRequest::Status expectedStatus, - std::chrono::seconds timeout, - std::shared_ptr attachmentReader = nullptr) { + const std::string& jsonContent, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status expectedStatus, + std::chrono::seconds timeout, + std::shared_ptr attachmentReader = nullptr) { auto messageRequest = std::make_shared(jsonContent, attachmentReader); m_avsConnectionManager->sendMessage(messageRequest); @@ -242,7 +245,7 @@ class AlexaCommunicationsLibraryTest : public ::testing::Test { /** * Function to create an attachmentReader given a filename. */ - std::shared_ptr createAttachmentReader(const std::string & fileName) { + std::shared_ptr createAttachmentReader(const std::string& fileName) { // 1MB is large enough for our test audio samples. const int mbBytes = 1024 * 1024; @@ -268,8 +271,9 @@ class AlexaCommunicationsLibraryTest : public ::testing::Test { attachmentWriter->write(localBuffer.data(), numBytesRead, &writeStatus); // confirm the SDS write operation went ok - bool writeStatusOk = (AttachmentWriter::WriteStatus::OK == writeStatus || - AttachmentWriter::WriteStatus::CLOSED == writeStatus); + bool writeStatusOk = + (AttachmentWriter::WriteStatus::OK == writeStatus || + AttachmentWriter::WriteStatus::CLOSED == writeStatus); EXPECT_TRUE(writeStatusOk); } @@ -278,7 +282,7 @@ class AlexaCommunicationsLibraryTest : public ::testing::Test { // create and return the reader. std::shared_ptr attachmentReader = - InProcessAttachmentReader::create(AttachmentReader::Policy::NON_BLOCKING, sds); + InProcessAttachmentReader::create(ReaderPolicy::NONBLOCKING, sds); EXPECT_NE(attachmentReader, nullptr); return attachmentReader; @@ -290,17 +294,20 @@ class AlexaCommunicationsLibraryTest : public ::testing::Test { void sendRandomEvent() { std::shared_ptr attachmentReader; std::string eventJson = SYNCHRONIZE_STATE_JSON; + auto status = avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT; if (rand() % 2) { eventJson = CT_RECOGNIZE_EVENT_JSON; attachmentReader = createAttachmentReader(g_inputPath + "/" + RECOGNIZE_AUDIO_FILE_NAME); + status = avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS; } - sendEvent(eventJson, MessageRequest::Status::SUCCESS, std::chrono::seconds(40), attachmentReader); + sendEvent(eventJson, status, std::chrono::seconds(40), attachmentReader); } std::shared_ptr m_authObserver; std::shared_ptr m_authDelegate; + std::shared_ptr m_contextManager; std::shared_ptr m_connectionStatusObserver; std::shared_ptr m_clientMessageHandler; std::shared_ptr m_attachmentManager; @@ -322,15 +329,21 @@ TEST_F(AlexaCommunicationsLibraryTest, testConnectAndDisconnect) { * @see https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/system#synchronizestate */ TEST_F(AlexaCommunicationsLibraryTest, testSendEvent) { - sendEvent(SYNCHRONIZE_STATE_JSON, MessageRequest::Status::SUCCESS, std::chrono::seconds(10)); + sendEvent( + SYNCHRONIZE_STATE_JSON, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT, + std::chrono::seconds(10)); } /** * Function that tests the behavior of the ACL when an improperly formatted message is sent, expecting the server - * to return an internal error. + * to return a bad request status. */ TEST_F(AlexaCommunicationsLibraryTest, testSendInvalidEvent) { - sendEvent(BAD_SYNCHRONIZE_STATE_JSON, MessageRequest::Status::SERVER_INTERNAL_ERROR, std::chrono::seconds(10)); + sendEvent( + BAD_SYNCHRONIZE_STATE_JSON, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::BAD_REQUEST, + std::chrono::seconds(10)); } /** @@ -343,8 +356,11 @@ TEST_F(AlexaCommunicationsLibraryTest, testSendInvalidEvent) { */ TEST_F(AlexaCommunicationsLibraryTest, testSendEventWithAttachment) { auto attachmentReader = createAttachmentReader(g_inputPath + "/" + RECOGNIZE_AUDIO_FILE_NAME); - sendEvent(CT_RECOGNIZE_EVENT_JSON, MessageRequest::Status::SUCCESS, std::chrono::seconds(10), - attachmentReader); + sendEvent( + CT_RECOGNIZE_EVENT_JSON, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, + std::chrono::seconds(10), + attachmentReader); } /** @@ -357,8 +373,11 @@ TEST_F(AlexaCommunicationsLibraryTest, testSendEventWithAttachment) { */ TEST_F(AlexaCommunicationsLibraryTest, testSendEventAndReceiveDirective) { auto attachmentReader = createAttachmentReader(g_inputPath + "/" + RECOGNIZE_AUDIO_FILE_NAME); - sendEvent(CT_RECOGNIZE_EVENT_JSON, MessageRequest::Status::SUCCESS, std::chrono::seconds(10), - attachmentReader); + sendEvent( + CT_RECOGNIZE_EVENT_JSON, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, + std::chrono::seconds(10), + attachmentReader); // We expect to receive Directives in response to the recognize Event. Wait for the first one. ASSERT_TRUE(m_clientMessageHandler->waitForNext(std::chrono::seconds(20))); @@ -371,7 +390,11 @@ TEST_F(AlexaCommunicationsLibraryTest, testSendEventsSerially) { const int NUMBER_OF_SUCCESSIVE_SENDS = 10; for (int i = 0; i < NUMBER_OF_SUCCESSIVE_SENDS; ++i) { auto attachmentReader = createAttachmentReader(g_inputPath + "/" + RECOGNIZE_AUDIO_FILE_NAME); - sendEvent(CT_RECOGNIZE_EVENT_JSON, MessageRequest::Status::SUCCESS, std::chrono::seconds(10), attachmentReader); + sendEvent( + CT_RECOGNIZE_EVENT_JSON, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, + std::chrono::seconds(10), + attachmentReader); } } @@ -386,7 +409,7 @@ TEST_F(AlexaCommunicationsLibraryTest, testSendEventsConcurrently) { futures.push_back(std::move(future)); } - for (auto & future : futures) { + for (auto& future : futures) { auto status = future.wait_for(std::chrono::seconds(20)); ASSERT_EQ(status, std::future_status::ready); } @@ -403,7 +426,11 @@ TEST_F(AlexaCommunicationsLibraryTest, testSendEventsConcurrently) { */ TEST_F(AlexaCommunicationsLibraryTest, testReceiveDirectiveOnDownchannel) { auto attachmentReader = createAttachmentReader(g_inputPath + "/" + SILENCE_AUDIO_FILE_NAME); - sendEvent(NF_RECOGNIZE_EVENT_JSON, MessageRequest::Status::SUCCESS, std::chrono::seconds(10), attachmentReader); + sendEvent( + NF_RECOGNIZE_EVENT_JSON, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT, + std::chrono::seconds(10), + attachmentReader); // Wait for the StopCapture Directive to be received. ASSERT_TRUE(m_clientMessageHandler->waitForNext(std::chrono::seconds(20))); @@ -414,13 +441,19 @@ TEST_F(AlexaCommunicationsLibraryTest, testReceiveDirectiveOnDownchannel) { */ TEST_F(AlexaCommunicationsLibraryTest, testPersistentConnection) { auto attachmentReader = createAttachmentReader(g_inputPath + "/" + RECOGNIZE_AUDIO_FILE_NAME); - sendEvent(CT_RECOGNIZE_EVENT_JSON, MessageRequest::Status::SUCCESS, std::chrono::seconds(10), - attachmentReader); + sendEvent( + CT_RECOGNIZE_EVENT_JSON, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, + std::chrono::seconds(10), + attachmentReader); ASSERT_FALSE(m_connectionStatusObserver->waitFor( - ConnectionStatusObserverInterface::Status::DISCONNECTED, std::chrono::seconds(20))) - << "Connection changed after a response was received"; - sendEvent(CT_RECOGNIZE_EVENT_JSON, MessageRequest::Status::SUCCESS, std::chrono::seconds(10), - attachmentReader); + ConnectionStatusObserverInterface::Status::DISCONNECTED, std::chrono::seconds(20))) + << "Connection changed after a response was received"; + sendEvent( + CT_RECOGNIZE_EVENT_JSON, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT, + std::chrono::seconds(10), + attachmentReader); } /** @@ -438,16 +471,15 @@ TEST_F(AlexaCommunicationsLibraryTest, testMultipleConnectionStatusObservers) { ASSERT_EQ(observer->getConnectionStatus(), ConnectionStatusObserverInterface::Status::CONNECTED); ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::DISCONNECTED)); } +} // namespace test +} // namespace integration +} // namespace alexaClientSDK -} // namespace test -} // namespace integration -} // namespace alexaClientSDK - -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); if (argc < 3) { - std::cerr << "USAGE: AlexaCommunicationsLibraryTest " - << std::endl; + std::cerr << "USAGE: " << std::string(argv[0]) << " " + << std::endl; return 1; } else { alexaClientSDK::integration::test::g_configPath = std::string(argv[1]); diff --git a/Integration/test/AlexaDirectiveSequencerLibraryTest.cpp b/Integration/test/AlexaDirectiveSequencerLibraryTest.cpp index d6d9b83932..c4312d51ab 100644 --- a/Integration/test/AlexaDirectiveSequencerLibraryTest.cpp +++ b/Integration/test/AlexaDirectiveSequencerLibraryTest.cpp @@ -1,7 +1,5 @@ /* - * AlexaDirectiveSequencerLibraryTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -28,6 +26,8 @@ #include "ACL/AVSConnectionManager.h" #include "ACL/Transport/HTTP2MessageRouter.h" +#include "ACL/Transport/PostConnectObject.h" +#include #include "AVSCommon/AVS/BlockingPolicy.h" #include "ADSL/DirectiveSequencer.h" #include "ADSL/MessageInterpreter.h" @@ -84,6 +84,7 @@ static const std::string TAG("AlexaDirectiveSequencerLibraryTest"); * CLOSE_TALK performs end-of-speech detection on the client, so no directive is sent from AVS to stop recording. * NEAR_FIELD performs end-of-speech detection in AVS, so a directive is sent from AVS to stop recording. */ +// clang-format off #define RECOGNIZE_EVENT_JSON(PROFILE, DIALOG_REQUEST_ID ) \ "{" \ "\"event\":{" \ @@ -141,6 +142,7 @@ static const std::string TAG("AlexaDirectiveSequencerLibraryTest"); "}" \ "}]" \ "}" +// clang-format on /// This is a 16 bit 16 kHz little endian linear PCM audio file of "Joke" to be recognized. static const std::string RECOGNIZE_JOKE_AUDIO_FILE_NAME = "/recognize_joke_test.wav"; @@ -153,9 +155,9 @@ static const std::string RECOGNIZE_WHATS_UP_AUDIO_FILE_NAME = "/recognize_whats_ /// This is a 16 bit 16 kHz little endian linear PCM audio file of "Set a timer for 5 seconds" to be recognized. static const std::string RECOGNIZE_TIMER_AUDIO_FILE_NAME = "/recognize_timer_test.wav"; -//String to be used as a basic DialogRequestID. +// String to be used as a basic DialogRequestID. #define FIRST_DIALOG_REQUEST_ID "DialogRequestID123" -//String to be used as a DialogRequestID when the first has already been used. +// String to be used as a DialogRequestID when the first has already been used. #define SECOND_DIALOG_REQUEST_ID "DialogRequestID456" /// This string specifies a Recognize event using the CLOSE_TALK profile and uses the first DialogRequestID. @@ -238,11 +240,12 @@ class AlexaDirectiveSequencerLibraryTest : public ::testing::Test { std::ifstream infile(configPath); ASSERT_TRUE(infile.good()); ASSERT_TRUE(AlexaClientSDKInit::initialize({&infile})); + m_authObserver = std::make_shared(); m_authDelegate = AuthDelegate::create(); m_authDelegate->addAuthObserver(m_authObserver); m_attachmentManager = std::make_shared( - AttachmentManager::AttachmentType::IN_PROCESS); + AttachmentManager::AttachmentType::IN_PROCESS); m_connectionStatusObserver = std::make_shared(); m_clientMessageHandler = std::make_shared(m_attachmentManager); bool isEnabled = false; @@ -250,24 +253,24 @@ class AlexaDirectiveSequencerLibraryTest : public ::testing::Test { m_exceptionEncounteredSender = std::make_shared(); m_directiveSequencer = DirectiveSequencer::create(m_exceptionEncounteredSender); m_messageInterpreter = std::make_shared( - m_exceptionEncounteredSender, - m_directiveSequencer, - m_attachmentManager); + m_exceptionEncounteredSender, m_directiveSequencer, m_attachmentManager); + + m_contextManager = contextManager::ContextManager::create(); + ASSERT_NE(m_contextManager, nullptr); + PostConnectObject::init(m_contextManager); // note: No DirectiveHandlers have been registered with the DirectiveSequencer yet. Registration of // handlers is deferred to individual test implementations. m_avsConnectionManager = AVSConnectionManager::create( - m_messageRouter, - isEnabled, - { m_connectionStatusObserver }, - { m_messageInterpreter }); + m_messageRouter, isEnabled, {m_connectionStatusObserver}, {m_messageInterpreter}); connect(); } void TearDown() override { disconnect(); m_directiveSequencer->shutdown(); + m_avsConnectionManager->shutdown(); AlexaClientSDKInit::uninitialize(); } @@ -275,16 +278,10 @@ class AlexaDirectiveSequencerLibraryTest : public ::testing::Test { * Connect to AVS. */ void connect() { - ASSERT_TRUE(m_authObserver->waitFor(AuthObserver::State::REFRESHED)) - << "Retrieving the auth token timed out."; + ASSERT_TRUE(m_authObserver->waitFor(AuthObserver::State::REFRESHED)) << "Retrieving the auth token timed out."; m_avsConnectionManager->enable(); ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::CONNECTED)) - << "Connecting timed out."; - // TODO: ACSDK-421: Remove the callback when m_avsConnection manager is no longer an observer to - // StateSynchronizer. - m_avsConnectionManager->onStateChanged(StateSynchronizerObserverInterface::State::SYNCHRONIZED); - ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::POST_CONNECTED)) - << "Post connecting timed out."; + << "Connecting timed out."; } /** @@ -293,7 +290,7 @@ class AlexaDirectiveSequencerLibraryTest : public ::testing::Test { void disconnect() { m_avsConnectionManager->disable(); ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::DISCONNECTED)) - << "Connecting timed out."; + << "Connecting timed out."; } /** @@ -303,10 +300,11 @@ class AlexaDirectiveSequencerLibraryTest : public ::testing::Test { * @param expectStatus The status to expect from the call to send the message. * @param timeout How long to wait for a result from delivering the message. */ - void sendEvent(const std::string & jsonContent, - std::shared_ptr attachmentReader, - MessageRequest::Status expectedStatus, - std::chrono::seconds timeout) { + void sendEvent( + const std::string& jsonContent, + std::shared_ptr attachmentReader, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status expectedStatus, + std::chrono::seconds timeout) { auto messageRequest = std::make_shared(jsonContent, attachmentReader); m_avsConnectionManager->sendMessage(messageRequest); ASSERT_TRUE(messageRequest->waitFor(expectedStatus, timeout)); @@ -320,9 +318,9 @@ class AlexaDirectiveSequencerLibraryTest : public ::testing::Test { * @param timeout How long to wait for a result from delivering the message. */ void setupMessageAndSend( - const std::string& json, - avsCommon::avs::MessageRequest::Status expectedStatus, - std::chrono::seconds timeout) { + const std::string& json, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status expectedStatus, + std::chrono::seconds timeout) { sendEvent(json, nullptr, expectedStatus, timeout); } @@ -335,11 +333,10 @@ class AlexaDirectiveSequencerLibraryTest : public ::testing::Test { * @param timeout How long to wait for a result from delivering the message. */ void setupMessageWithAttachmentAndSend( - const std::string& json, - std::string& file, - avsCommon::avs::MessageRequest::Status expectedStatus, - std::chrono::seconds timeout) { - + const std::string& json, + std::string& file, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status expectedStatus, + std::chrono::seconds timeout) { auto is = std::make_shared(file, std::ios::binary); ASSERT_TRUE(is->is_open()); @@ -360,15 +357,16 @@ class AlexaDirectiveSequencerLibraryTest : public ::testing::Test { attachmentWriter->write(localBuffer.data(), numBytesRead, &writeStatus); // write status should be either OK or CLOSED - bool writeStatusOk = (AttachmentWriter::WriteStatus::OK == writeStatus || - AttachmentWriter::WriteStatus::CLOSED == writeStatus); + bool writeStatusOk = + (AttachmentWriter::WriteStatus::OK == writeStatus || + AttachmentWriter::WriteStatus::CLOSED == writeStatus); ASSERT_TRUE(writeStatusOk); } attachmentWriter->close(); std::shared_ptr attachmentReader = - InProcessAttachmentReader::create(AttachmentReader::Policy::NON_BLOCKING, sds); + InProcessAttachmentReader::create(ReaderPolicy::NONBLOCKING, sds); ASSERT_NE(attachmentReader, nullptr); sendEvent(json, attachmentReader, expectedStatus, std::chrono::seconds(timeout)); @@ -388,10 +386,9 @@ class AlexaDirectiveSequencerLibraryTest : public ::testing::Test { if (params.directive->getName() == name) { nameFound = true; } - } while (params.type != TestExceptionEncounteredSender::ExceptionParams::Type::TIMEOUT - && !nameFound); + } while (params.type != TestExceptionEncounteredSender::ExceptionParams::Type::TIMEOUT && !nameFound); ASSERT_TRUE(nameFound); - ASSERT_NE (params.type, TestExceptionEncounteredSender::ExceptionParams::Type::TIMEOUT); + ASSERT_NE(params.type, TestExceptionEncounteredSender::ExceptionParams::Type::TIMEOUT); } /** @@ -401,18 +398,23 @@ class AlexaDirectiveSequencerLibraryTest : public ::testing::Test { * @param eventNameSpace Namespace if the Name of the event to send. * @param dialogRequestID DialogRequestID to use to send the event. * @param token Token to be added to the event payload. + * @param expectedStatus MessageRequest status to expect after sending the event */ - void sendEventWithToken(const std::string& eventName, const std::string& eventNameSpace, - const std::string& dialogRequestID, std::string token) { + void sendEventWithToken( + const std::string& eventName, + const std::string& eventNameSpace, + const std::string& dialogRequestID, + std::string token, + MessageRequestObserverInterface::Status expectedStatus) { rapidjson::Document payload(rapidjson::kObjectType); payload.AddMember(TOKEN_KEY, token, payload.GetAllocator()); rapidjson::StringBuffer buffer; rapidjson::Writer writer(buffer); - ASSERT_TRUE (payload.Accept(writer)); + ASSERT_TRUE(payload.Accept(writer)); auto event = buildJsonEventString(eventNameSpace, eventName, dialogRequestID, buffer.GetString()); - sendEvent(event.second, nullptr,avsCommon::avs::MessageRequest::Status::SUCCESS, std::chrono::seconds(SEND_EVENT_TIMEOUT_DURATION)); + sendEvent(event.second, nullptr, expectedStatus, std::chrono::seconds(SEND_EVENT_TIMEOUT_DURATION)); } /// Object to monitor the status of the authorization to communicate with @c AVS. @@ -421,6 +423,9 @@ class AlexaDirectiveSequencerLibraryTest : public ::testing::Test { /// Object to acquire authorization to communicate with @c AVS. std::shared_ptr m_authDelegate; + /// Object to acquire SDK context. + std::shared_ptr m_contextManager; + /// The Attachment Manager. std::shared_ptr m_attachmentManager; @@ -452,13 +457,13 @@ class AlexaDirectiveSequencerLibraryTest : public ::testing::Test { * @param returnToken to hold the reulting token. * @return Indicates whether extracting the token was successful. */ -bool getToken(TestDirectiveHandler::DirectiveParams params, std::string &returnToken) { +bool getToken(TestDirectiveHandler::DirectiveParams params, std::string& returnToken) { std::string directiveString; std::string directivePayload; std::string directiveToken; - jsonUtils::lookupStringValue(params.directive->getUnparsedDirective(), JSON_MESSAGE_DIRECTIVE_KEY, &directiveString); - jsonUtils::lookupStringValue(directiveString, JSON_MESSAGE_PAYLOAD_KEY, &directivePayload); - return jsonUtils::lookupStringValue(directivePayload, JSON_MESSAGE_TOKEN_KEY, &returnToken); + jsonUtils::retrieveValue(params.directive->getUnparsedDirective(), JSON_MESSAGE_DIRECTIVE_KEY, &directiveString); + jsonUtils::retrieveValue(directiveString, JSON_MESSAGE_PAYLOAD_KEY, &directivePayload); + return jsonUtils::retrieveValue(directivePayload, JSON_MESSAGE_TOKEN_KEY, &returnToken); } /** @@ -482,13 +487,12 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, sendEventWithDirective) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); // Wait for the first directive to route through to our handler. auto params = directiveHandler->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_FALSE(params.isTimeout()); - } /** @@ -513,7 +517,7 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, sendDirectiveGroupWithoutBlocking) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); // Look for SetMute and Speak without completing the handling of any directives. @@ -558,7 +562,7 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, sendDirectiveWithDifferentDialogReque setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); // Drain the directive results until we get a timeout. There should be no cancels or exceptions. @@ -573,7 +577,7 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, sendDirectiveWithDifferentDialogReque setupMessageWithAttachmentAndSend( CT_SECOND_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); // Directives from the second event do not reach the directive handler because they do no have @@ -607,7 +611,7 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, dropQueueAfterBargeIn) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); TestDirectiveHandler::DirectiveParams params; @@ -623,10 +627,10 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, dropQueueAfterBargeIn) { m_directiveSequencer->setDialogRequestId(SECOND_DIALOG_REQUEST_ID); std::string differentFile = inputPath + RECOGNIZE_JOKE_AUDIO_FILE_NAME; setupMessageWithAttachmentAndSend( - CT_SECOND_RECOGNIZE_EVENT_JSON, - differentFile, - avsCommon::avs::MessageRequest::Status::SUCCESS, - SEND_EVENT_TIMEOUT_DURATION); + CT_SECOND_RECOGNIZE_EVENT_JSON, + differentFile, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, + SEND_EVENT_TIMEOUT_DURATION); // Consume cancellations and the new directives. bool cancelCalled = false; @@ -666,10 +670,11 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, sendDirectiveWithoutADialogRequestID) // Send audio of "Set a timer for 5 seconds" that will prompt a Speak. m_directiveSequencer->setDialogRequestId(FIRST_DIALOG_REQUEST_ID); std::string file = inputPath + RECOGNIZE_TIMER_AUDIO_FILE_NAME; + setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); std::string token; @@ -688,7 +693,13 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, sendDirectiveWithoutADialogRequestID) ASSERT_TRUE(prehandleSpeakFound); ASSERT_TRUE(getToken(params, token)); // Send speechFinished to prompt the cloud to send setAlert which does not have a DialogRequestID. - sendEventWithToken(NAME_SPEECH_FINISHED, NAMESPACE_SPEECH_SYNTHESIZER, FIRST_DIALOG_REQUEST_ID, token); + + sendEventWithToken( + NAME_SPEECH_FINISHED, + NAMESPACE_SPEECH_SYNTHESIZER, + FIRST_DIALOG_REQUEST_ID, + token, + MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT); } } else { ASSERT_EQ(params.directive->getName(), NAME_SET_ALERT); @@ -704,9 +715,13 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, sendDirectiveWithoutADialogRequestID) params = directiveHandler->waitForNext(WAIT_FOR_TIMEOUT_DURATION); } ASSERT_TRUE(handleAlertFound); - // Send setAlertFailed to clean up the alert on the cloud side. - sendEventWithToken(NAME_SET_ALERT_FAILED, NAMESPACE_ALERTS, FIRST_DIALOG_REQUEST_ID, token); + sendEventWithToken( + NAME_SET_ALERT_FAILED, + NAMESPACE_ALERTS, + FIRST_DIALOG_REQUEST_ID, + token, + MessageRequestObserverInterface::Status::SUCCESS); params = directiveHandler->waitForNext(WAIT_FOR_TIMEOUT_DURATION); while (!params.isTimeout()) { @@ -714,7 +729,6 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, sendDirectiveWithoutADialogRequestID) ASSERT_NE(params.directive->getName(), NAME_SET_ALERT); params = directiveHandler->waitForNext(WAIT_FOR_TIMEOUT_DURATION); } - } /** @@ -740,7 +754,7 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, sendDirectivesForPreHandling) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); // Count each preHandle and handle that arrives. @@ -784,7 +798,7 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, cancelDirectivesWhileInQueue) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); TestDirectiveHandler::DirectiveParams params; @@ -828,7 +842,7 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, oneBlockingDirectiveAtTheFront) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); // Expect set-mute which is blocking and no other handles after that (timeout reached because SetMute blocks). @@ -890,7 +904,7 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, oneBlockingDirectiveInTheMiddle) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); TestDirectiveHandler::DirectiveParams params; @@ -945,7 +959,7 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, noDirectiveHandlerRegisteredForADirec setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); // Make sure no SetMute directives are given to the handler, and that they result in exception encountered. @@ -967,14 +981,13 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, noDirectiveHandlerRegisteredForADirec ASSERT_TRUE(m_directiveSequencer->addDirectiveHandler(directiveHandler)); - // Send audio of "Joke" that will trigger SetMute and speak. m_directiveSequencer->setDialogRequestId(FIRST_DIALOG_REQUEST_ID); std::string file = inputPath + RECOGNIZE_JOKE_AUDIO_FILE_NAME; setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); // Make sure no Speak directives are given to the handler, and that they result in exception encountered. @@ -1009,7 +1022,7 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, twoDirectiveHandlersRegisteredForADir setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); // A received the SetMute directive. @@ -1024,7 +1037,6 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, twoDirectiveHandlersRegisteredForADir ASSERT_TRUE(paramsB.isTimeout()); } - /** * Test @c DirectiveSequencer's ability to handle a multi-turn scenario * @@ -1048,7 +1060,7 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, multiturnScenario) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); TestDirectiveHandler::DirectiveParams params; @@ -1061,7 +1073,7 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, multiturnScenario) { if (params.isHandle()) { params.result->setCompleted(); } - } while ( !params.isHandle() || params.directive->getName() != NAME_EXPECT_SPEECH); + } while (!params.isHandle() || params.directive->getName() != NAME_EXPECT_SPEECH); // Send back a recognize event. m_directiveSequencer->setDialogRequestId(SECOND_DIALOG_REQUEST_ID); @@ -1069,7 +1081,7 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, multiturnScenario) { setupMessageWithAttachmentAndSend( CT_SECOND_RECOGNIZE_EVENT_JSON, differentFile, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); // Just the wikipedia directive group in response. @@ -1097,10 +1109,10 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, getAttachmentWithContentId) { m_directiveSequencer->setDialogRequestId(FIRST_DIALOG_REQUEST_ID); std::string file = inputPath + RECOGNIZE_JOKE_AUDIO_FILE_NAME; setupMessageWithAttachmentAndSend( - CT_FIRST_RECOGNIZE_EVENT_JSON, - file, - avsCommon::avs::MessageRequest::Status::SUCCESS, - SEND_EVENT_TIMEOUT_DURATION); + CT_FIRST_RECOGNIZE_EVENT_JSON, + file, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, + SEND_EVENT_TIMEOUT_DURATION); // Wait for the directive to route through to our handler. TestDirectiveHandler::DirectiveParams params; @@ -1111,7 +1123,7 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, getAttachmentWithContentId) { auto directive = params.directive; std::string payloadUrl; - jsonUtils::lookupStringValue(directive->getPayload(), "url", &payloadUrl); + jsonUtils::retrieveValue(directive->getPayload(), "url", &payloadUrl); ASSERT_TRUE(!payloadUrl.empty()); auto stringIndex = payloadUrl.find(":"); @@ -1119,20 +1131,20 @@ TEST_F(AlexaDirectiveSequencerLibraryTest, getAttachmentWithContentId) { ASSERT_TRUE(stringIndex != payloadUrl.size() - 1); auto contentId = payloadUrl.substr(payloadUrl.find(':') + 1); - auto attachmentReader = directive->getAttachmentReader(contentId, AttachmentReader::Policy::BLOCKING); + auto attachmentReader = directive->getAttachmentReader(contentId, ReaderPolicy::BLOCKING); ASSERT_NE(attachmentReader, nullptr); } -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); if (argc < 3) { - std::cerr << "USAGE: AlexaDirectiveSequencerLibraryTest " - << std::endl; + std::cerr << "USAGE: " << std::string(argv[0]) << " " + << std::endl; return 1; } else { @@ -1141,5 +1153,3 @@ int main(int argc, char **argv) { return RUN_ALL_TESTS(); } } - - diff --git a/Integration/test/AudioInputProcessorIntegrationTest.cpp b/Integration/test/AudioInputProcessorIntegrationTest.cpp index e52eefe78a..334d3f704b 100644 --- a/Integration/test/AudioInputProcessorIntegrationTest.cpp +++ b/Integration/test/AudioInputProcessorIntegrationTest.cpp @@ -1,7 +1,5 @@ /* - * AudioInputProcessorTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,7 +13,7 @@ * permissions and limitations under the License. */ -/// @file AudioInputProcessorTest.cpp +/// @file AudioInputProcessorIntegrationTest.cpp #include #include #include @@ -27,6 +25,7 @@ #include "ACL/AVSConnectionManager.h" #include "ACL/Transport/HTTP2MessageRouter.h" +#include "ACL/Transport/PostConnectObject.h" #include "ADSL/DirectiveSequencer.h" #include "ADSL/MessageInterpreter.h" #include "AFML/Channel.h" @@ -100,7 +99,8 @@ static const std::string ALEXA_JOKE_AUDIO_FILE = "/alexa_recognize_joke_test.wav static const std::string ALEXA_WIKI_AUDIO_FILE = "/alexa_recognize_wiki_test.wav"; // This is a 16 bit 16 kHz little endian linear PCM audio file of "Alexa" then silence to be recognized. static const std::string ALEXA_SILENCE_AUDIO_FILE = "/alexa_recognize_silence_test.wav"; - +// This is a 32KHz little endian OPUS audio file with Constant Bit rate of "What time is it?" to be recognized. +static const std::string TIME_AUDIO_FILE_OPUS = "/utterance_time_success.opus"; // This string to be used for Speak Directives which use the NAMESPACE_SPEECH_SYNTHESIZER namespace. static const std::string NAME_VOLUME_STATE = "VolumeState"; // This string to be used for Speak Directives which use the NAMESPACE_SPEECH_SYNTHESIZER namespace. @@ -150,7 +150,10 @@ static const std::chrono::seconds LONG_TIMEOUT_DURATION(10); static const std::chrono::seconds SHORT_TIMEOUT_DURATION(2); // This Integer to be used when no timeout is desired. static const std::chrono::seconds NO_TIMEOUT_DURATION(0); - +// The length of RIFF container format which is the header of a wav file. +static const int RIFF_HEADER_SIZE = 44; +/// The compatible sample rate for OPUS 32KHz. +static const unsigned int COMPATIBLE_SAMPLE_RATE_OPUS_32 = 32000; #ifdef KWD_KITTAI /// The name of the resource file required for Kitt.ai. static const std::string RESOURCE_FILE = "/KittAiModels/common.res"; @@ -186,11 +189,11 @@ static const std::string JSON_MESSAGE_PAYLOAD_KEY = "payload"; static const double KITTAI_SENSITIVITY = 0.6; #endif /// The compatible encoding for Kitt.ai. -static const avsCommon::utils::AudioFormat::Encoding COMPATIBLE_ENCODING = - avsCommon::utils::AudioFormat::Encoding::LPCM; +static const avsCommon::utils::AudioFormat::Encoding COMPATIBLE_ENCODING = + avsCommon::utils::AudioFormat::Encoding::LPCM; /// The compatible endianness for Kitt.ai. -static const avsCommon::utils::AudioFormat::Endianness COMPATIBLE_ENDIANNESS = - avsCommon::utils::AudioFormat::Endianness::LITTLE; +static const avsCommon::utils::AudioFormat::Endianness COMPATIBLE_ENDIANNESS = + avsCommon::utils::AudioFormat::Endianness::LITTLE; /// The compatible sample rate for Kitt.ai. static const unsigned int COMPATIBLE_SAMPLE_RATE = 16000; /// The compatible bits per sample for Kitt.ai. @@ -213,17 +216,16 @@ std::string inputPath; */ #define LX(event) ::alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) -class tapToTalkButton{ - public: +class tapToTalkButton { +public: bool startRecognizing(std::shared_ptr aip, std::shared_ptr audioProvider) { return aip->recognize(*audioProvider, Initiator::TAP).get(); } }; -class holdToTalkButton{ +class holdToTalkButton { public: - bool startRecognizing(std::shared_ptr aip, - std::shared_ptr audioProvider) { + bool startRecognizing(std::shared_ptr aip, std::shared_ptr audioProvider) { return aip->recognize(*audioProvider, Initiator::PRESS_AND_HOLD).get(); } @@ -232,77 +234,74 @@ class holdToTalkButton{ } }; -#ifdef KWD -class wakeWordTrigger : public KeyWordObserverInterface{ - public: - wakeWordTrigger(AudioFormat compatibleAudioFormat, std::shared_ptr aip) { - m_compatibleAudioFormat = compatibleAudioFormat; - m_aip = aip; - } +#if defined(KWD_KITTAI) || defined(KWD_SENSORY) +class wakeWordTrigger : public KeyWordObserverInterface { +public: + wakeWordTrigger(AudioFormat compatibleAudioFormat, std::shared_ptr aip) { + m_compatibleAudioFormat = compatibleAudioFormat; + m_aip = aip; + } void onKeyWordDetected( std::shared_ptr stream, std::string keyword, AudioInputStream::Index beginIndex, AudioInputStream::Index endIndex) { - - keyWordDetected = true; - ASSERT_NE(nullptr, stream); - bool alwaysReadable = true; - bool canOverride = false; - bool canBeOverridden = true; - auto audioProvider = AudioProvider( stream, m_compatibleAudioFormat, - ASRProfile::NEAR_FIELD, alwaysReadable, !canOverride, canBeOverridden); - - if (m_aip) { - AudioInputStream::Index aipBegin = AudioInputProcessor::INVALID_INDEX; - AudioInputStream::Index aipEnd = AudioInputProcessor::INVALID_INDEX; - - if (endIndex != KeyWordObserverInterface::UNSPECIFIED_INDEX) { - if (beginIndex != KeyWordObserverInterface::UNSPECIFIED_INDEX) { - // If we know where the keyword starts and ends, pass both of those along to AIP. - aipBegin = beginIndex; - aipEnd = endIndex; - } else { - // If we only know where the keyword ends, AIP should begin recording there. - aipBegin = endIndex; - } + keyWordDetected = true; + ASSERT_NE(nullptr, stream); + bool alwaysReadable = true; + bool canOverride = false; + bool canBeOverridden = true; + auto audioProvider = AudioProvider( + stream, m_compatibleAudioFormat, ASRProfile::NEAR_FIELD, alwaysReadable, !canOverride, canBeOverridden); + + if (m_aip) { + AudioInputStream::Index aipBegin = AudioInputProcessor::INVALID_INDEX; + AudioInputStream::Index aipEnd = AudioInputProcessor::INVALID_INDEX; + + if (endIndex != KeyWordObserverInterface::UNSPECIFIED_INDEX) { + if (beginIndex != KeyWordObserverInterface::UNSPECIFIED_INDEX) { + // If we know where the keyword starts and ends, pass both of those along to AIP. + aipBegin = beginIndex; + aipEnd = endIndex; + } else { + // If we only know where the keyword ends, AIP should begin recording there. + aipBegin = endIndex; } - // Else we don't have any indices to pass along; AIP will begin recording ASAP. + } +// Else we don't have any indices to pass along; AIP will begin recording ASAP. #ifdef KWD_KITTAI - m_aip->recognize(audioProvider, Initiator::TAP, aipBegin, aipEnd, keyword); + m_aip->recognize(audioProvider, Initiator::TAP, aipBegin, aipEnd, keyword); #elif KWD_SENSORY - m_aip->recognize(audioProvider, Initiator::WAKEWORD, aipBegin, aipEnd, keyword); + m_aip->recognize(audioProvider, Initiator::WAKEWORD, aipBegin, aipEnd, keyword); #endif - } } + } bool keyWordDetected = false; AudioFormat m_compatibleAudioFormat; std::shared_ptr m_aip; - }; #endif -class testStateProvider : public StateProviderInterface, public RequiresShutdown { +class testStateProvider + : public StateProviderInterface + , public RequiresShutdown { public: testStateProvider(std::shared_ptr contextManager) : RequiresShutdown("testStateProvider") { m_contextManager = contextManager; } - ~testStateProvider() { + ~testStateProvider() { } - void doShutdown() override { - m_contextManager.reset(); - } - void provideState(const unsigned int stateRequestToken) override { + void provideState(const NamespaceAndName& nsname, const unsigned int stateRequestToken) override { std::ostringstream context; context << R"({)" - R"("volume":)" << 50 << R"(,)" - << R"("muted":)" << false << R"(})"; + R"("volume":)" + << 50 << R"(,)" + << R"("muted":)" << false << R"(})"; - m_contextManager->setState(VOLUME_STATE_PAIR, - context.str(), avsCommon::avs::StateRefreshPolicy::ALWAYS, - stateRequestToken); + m_contextManager->setState( + VOLUME_STATE_PAIR, context.str(), avsCommon::avs::StateRefreshPolicy::ALWAYS, stateRequestToken); m_stateRequested = true; } bool checkStateRequested() { @@ -313,10 +312,15 @@ class testStateProvider : public StateProviderInterface, public RequiresShutdown } return savedResult; } -private: - bool m_stateRequested = false; - std::shared_ptr m_contextManager; +protected: + void doShutdown() override { + m_contextManager.reset(); + } + +private: + bool m_stateRequested = false; + std::shared_ptr m_contextManager; }; /// A test observer that mocks out the ChannelObserverInterface##onFocusChanged() call. @@ -325,8 +329,7 @@ class TestClient : public ChannelObserverInterface { /** * Constructor. */ - TestClient() : - m_focusState(FocusState::NONE) { + TestClient() : m_focusState(FocusState::NONE) { } /** @@ -376,7 +379,6 @@ class TestClient : public ChannelObserverInterface { class AudioInputProcessorTest : public ::testing::Test { protected: void SetUp() override { - std::ifstream infile(configPath); ASSERT_TRUE(infile.good()); ASSERT_TRUE(AlexaClientSDKInit::initialize({&infile})); @@ -397,11 +399,8 @@ class AudioInputProcessorTest : public ::testing::Test { m_directiveSequencer = DirectiveSequencer::create(m_exceptionEncounteredSender); ASSERT_NE(nullptr, m_directiveSequencer); - m_messageInterpreter = std::make_shared( - m_exceptionEncounteredSender, - m_directiveSequencer, - attachmentManager - ); + m_messageInterpreter = + std::make_shared(m_exceptionEncounteredSender, m_directiveSequencer, attachmentManager); m_compatibleAudioFormat.sampleRateHz = COMPATIBLE_SAMPLE_RATE; m_compatibleAudioFormat.sampleSizeInBits = COMPATIBLE_SAMPLE_SIZE_IN_BITS; @@ -409,51 +408,57 @@ class AudioInputProcessorTest : public ::testing::Test { m_compatibleAudioFormat.endianness = COMPATIBLE_ENDIANNESS; m_compatibleAudioFormat.encoding = COMPATIBLE_ENCODING; - size_t nWords = 1024*1024; + size_t nWords = 1024 * 1024; size_t wordSize = 2; size_t maxReaders = 3; size_t bufferSize = AudioInputStream::calculateBufferSize(nWords, wordSize, maxReaders); auto m_Buffer = std::make_shared(bufferSize); auto m_Sds = avsCommon::avs::AudioInputStream::create(m_Buffer, wordSize, maxReaders); - ASSERT_NE (nullptr, m_Sds); + ASSERT_NE(nullptr, m_Sds); m_AudioBuffer = std::move(m_Sds); - m_AudioBufferWriter = m_AudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); - ASSERT_NE (nullptr, m_AudioBufferWriter); + m_AudioBufferWriter = + m_AudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + ASSERT_NE(nullptr, m_AudioBufferWriter); // Set up tap and hold to talk buttons. bool alwaysReadable = true; bool canOverride = true; bool canBeOverridden = true; - m_HoldToTalkAudioProvider = std::make_shared( m_AudioBuffer, m_compatibleAudioFormat, - ASRProfile::CLOSE_TALK, !alwaysReadable, canOverride, !canBeOverridden); - m_TapToTalkAudioProvider = std::make_shared( m_AudioBuffer, m_compatibleAudioFormat, - ASRProfile::NEAR_FIELD, alwaysReadable, canOverride, !canBeOverridden); + m_HoldToTalkAudioProvider = std::make_shared( + m_AudioBuffer, + m_compatibleAudioFormat, + ASRProfile::CLOSE_TALK, + !alwaysReadable, + canOverride, + !canBeOverridden); + m_TapToTalkAudioProvider = std::make_shared( + m_AudioBuffer, + m_compatibleAudioFormat, + ASRProfile::NEAR_FIELD, + alwaysReadable, + canOverride, + !canBeOverridden); m_tapToTalkButton = std::make_shared(); m_holdToTalkButton = std::make_shared(); - m_focusManager = std::make_shared(); + m_focusManager = std::make_shared(FocusManager::DEFAULT_AUDIO_CHANNELS); m_dialogUXStateAggregator = std::make_shared(); m_contextManager = ContextManager::create(); - ASSERT_NE (nullptr, m_contextManager); + ASSERT_NE(nullptr, m_contextManager); m_stateProvider = std::make_shared(m_contextManager); m_contextManager->setStateProvider(VOLUME_STATE_PAIR, m_stateProvider); + PostConnectObject::init(m_contextManager); // Set up connection and connect m_avsConnectionManager = std::make_shared( - m_messageRouter, - isEnabled, - m_connectionStatusObserver, - m_messageInterpreter); - ASSERT_NE (nullptr, m_avsConnectionManager); + m_messageRouter, isEnabled, m_connectionStatusObserver, m_messageInterpreter); + ASSERT_NE(nullptr, m_avsConnectionManager); connect(); - m_userInactivityMonitor = UserInactivityMonitor::create( - m_avsConnectionManager, - m_exceptionEncounteredSender); + m_userInactivityMonitor = UserInactivityMonitor::create(m_avsConnectionManager, m_exceptionEncounteredSender); m_AudioInputProcessor = AudioInputProcessor::create( m_directiveSequencer, m_avsConnectionManager, @@ -461,9 +466,8 @@ class AudioInputProcessorTest : public ::testing::Test { m_focusManager, m_dialogUXStateAggregator, m_exceptionEncounteredSender, - m_userInactivityMonitor - ); - ASSERT_NE (nullptr, m_AudioInputProcessor); + m_userInactivityMonitor); + ASSERT_NE(nullptr, m_AudioInputProcessor); m_AudioInputProcessor->addObserver(m_dialogUXStateAggregator); m_testClient = std::make_shared(); @@ -476,39 +480,38 @@ class AudioInputProcessorTest : public ::testing::Test { ASSERT_TRUE(m_directiveSequencer->addDirectiveHandler(m_AudioInputProcessor)); -#ifdef KWD +#if defined(KWD_KITTAI) || defined(KWD_SENSORY) m_wakeWordTrigger = std::make_shared(m_compatibleAudioFormat, m_AudioInputProcessor); #ifdef KWD_KITTAI kwd::KittAiKeyWordDetector::KittAiConfiguration config; - config = {inputPath+MODEL_FILE, MODEL_KEYWORD, KITTAI_SENSITIVITY}; + config = {inputPath + MODEL_FILE, MODEL_KEYWORD, KITTAI_SENSITIVITY}; m_detector = kwd::KittAiKeyWordDetector::create( - m_AudioBuffer, - m_compatibleAudioFormat, - {m_wakeWordTrigger}, - // Not using an empty initializer list here to account for a GCC 4.9.2 regression - std::unordered_set>(), - inputPath + RESOURCE_FILE, - {config}, - 2.0, - false); + m_AudioBuffer, + m_compatibleAudioFormat, + {m_wakeWordTrigger}, + // Not using an empty initializer list here to account for a GCC 4.9.2 regression + std::unordered_set>(), + inputPath + RESOURCE_FILE, + {config}, + 2.0, + false); ASSERT_TRUE(m_detector); #elif KWD_SENSORY m_detector = kwd::SensoryKeywordDetector::create( - m_AudioBuffer, - m_compatibleAudioFormat, - {m_wakeWordTrigger}, - // Not using an empty initializer list here to account for a GCC 4.9.2 regression - std::unordered_set>(), - inputPath + RESOURCE_FILE); + m_AudioBuffer, + m_compatibleAudioFormat, + {m_wakeWordTrigger}, + // Not using an empty initializer list here to account for a GCC 4.9.2 regression + std::unordered_set>(), + inputPath + RESOURCE_FILE); ASSERT_TRUE(m_detector); #endif #endif ASSERT_TRUE(m_directiveSequencer->addDirectiveHandler(m_directiveHandler)); - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, NO_TIMEOUT_DURATION)); - + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, NO_TIMEOUT_DURATION)); } void TearDown() override { @@ -524,14 +527,10 @@ class AudioInputProcessorTest : public ::testing::Test { * Connect to AVS. */ void connect() { - ASSERT_TRUE(m_authObserver->waitFor(AuthObserver::State::REFRESHED)) - << "Retrieving the auth token timed out."; + ASSERT_TRUE(m_authObserver->waitFor(AuthObserver::State::REFRESHED)) << "Retrieving the auth token timed out."; m_avsConnectionManager->enable(); ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::CONNECTED)) - << "Connecting timed out."; - m_avsConnectionManager->synchronize(); - ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::POST_CONNECTED)) - << "Post connecting timed out."; + << "Connecting timed out."; } /** @@ -540,7 +539,7 @@ class AudioInputProcessorTest : public ::testing::Test { void disconnect() { m_avsConnectionManager->disable(); ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::DISCONNECTED)) - << "Connecting timed out."; + << "Connecting timed out."; } bool checkSentEventName(std::shared_ptr connectionManager, std::string expectedName) { @@ -549,9 +548,9 @@ class AudioInputProcessorTest : public ::testing::Test { std::string eventString; std::string eventHeader; std::string eventName; - jsonUtils::lookupStringValue(sendParams.request->getJsonContent(), "event", &eventString); - jsonUtils::lookupStringValue(eventString, "header", &eventHeader); - jsonUtils::lookupStringValue(eventHeader, "name", &eventName); + jsonUtils::retrieveValue(sendParams.request->getJsonContent(), "event", &eventString); + jsonUtils::retrieveValue(eventString, "header", &eventHeader); + jsonUtils::retrieveValue(eventHeader, "name", &eventName); if (eventName == expectedName) { return true; } else { @@ -586,7 +585,7 @@ class AudioInputProcessorTest : public ::testing::Test { std::shared_ptr m_TapToTalkAudioProvider; std::shared_ptr m_HoldToTalkAudioProvider; avsCommon::utils::AudioFormat m_compatibleAudioFormat; -#ifdef KWD +#if defined(KWD_KITTAI) || defined(KWD_SENSORY) std::shared_ptr m_wakeWordTrigger; #ifdef KWD_KITTAI std::unique_ptr m_detector; @@ -596,9 +595,8 @@ class AudioInputProcessorTest : public ::testing::Test { #endif }; -std::vector readAudioFromFile(const std::string &fileName, bool* errorOccurred) { - const int RIFF_HEADER_SIZE = 44; - +template +std::vector readAudioFromFile(const std::string& fileName, const int& headerPosition, bool* errorOccurred) { std::ifstream inputFile(fileName.c_str(), std::ifstream::binary); if (!inputFile.good()) { std::cout << "Couldn't open audio file!" << std::endl; @@ -609,23 +607,24 @@ std::vector readAudioFromFile(const std::string &fileName, bool* errorO } inputFile.seekg(0, std::ios::end); int fileLengthInBytes = inputFile.tellg(); - if (fileLengthInBytes <= RIFF_HEADER_SIZE) { - std::cout << "File should be larger than 44 bytes, which is the size of the RIFF header" << std::endl; + + if (fileLengthInBytes <= headerPosition) { + std::cout << "File should be larger than header position" << std::endl; if (errorOccurred) { *errorOccurred = true; } return {}; } - inputFile.seekg(RIFF_HEADER_SIZE, std::ios::beg); + inputFile.seekg(headerPosition, std::ios::beg); - int numSamples = (fileLengthInBytes - RIFF_HEADER_SIZE) / 2; + int numSamples = (fileLengthInBytes - headerPosition) / sizeof(T); - std::vector retVal(numSamples, 0); + std::vector retVal(numSamples, 0); - inputFile.read((char *)&retVal[0], numSamples * 2); + inputFile.read((char*)&retVal[0], numSamples * sizeof(T)); - if (inputFile.gcount() != numSamples*2) { + if (static_cast(inputFile.gcount()) != numSamples * sizeof(T)) { std::cout << "Error reading audio file" << std::endl; if (errorOccurred) { *errorOccurred = true; @@ -644,21 +643,22 @@ std::vector readAudioFromFile(const std::string &fileName, bool* errorO * Test AudioInputProcessor's ability to handle a simple interation triggered by a wakeword. * * To do this, audio of "Alexa, tell me a joke" is fed into a stream that is being read by a wake word engine. The - * AudioInputProcessor is then observed to send a Recognize event to AVS which responds with a SetMute and Speak directive. + * AudioInputProcessor is then observed to send a Recognize event to AVS which responds with a SetMute and Speak + * directive. */ -#ifdef KWD +#if defined(KWD_KITTAI) || defined(KWD_SENSORY) TEST_F(AudioInputProcessorTest, wakeWordJoke) { // Put audio onto the SDS saying "Alexa, Tell me a joke". bool error; std::string file = inputPath + ALEXA_JOKE_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); @@ -669,23 +669,22 @@ TEST_F(AudioInputProcessorTest, wakeWordJoke) { // Check that a recognize event was sent. ASSERT_TRUE(checkSentEventName(m_avsConnectionManager, NAME_RECOGNIZE)); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // The test channel client has been notified the alarm channel has been foregrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::FOREGROUND); // Check that prehandle and handle for setMute and Speak has reached the test SS. - TestDirectiveHandler::DirectiveParams params = m_directiveHandler->waitForNext(std::chrono::seconds(LONG_TIMEOUT_DURATION)); + TestDirectiveHandler::DirectiveParams params = + m_directiveHandler->waitForNext(std::chrono::seconds(LONG_TIMEOUT_DURATION)); ASSERT_NE(params.type, TestDirectiveHandler::DirectiveParams::Type::TIMEOUT); while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { - params.result->setCompleted(); + params.result->setCompleted(); } params = m_directiveHandler->waitForNext(NO_TIMEOUT_DURATION); } @@ -698,19 +697,19 @@ TEST_F(AudioInputProcessorTest, wakeWordJoke) { * To do this, audio of "Alexa, ........." is fed into a stream that is being read by a wake word engine. The * AudioInputProcessor is then observed to send a Recognize event to AVS which responds with no directives. */ -#ifdef KWD +#if defined(KWD_KITTAI) || defined(KWD_SENSORY) TEST_F(AudioInputProcessorTest, wakeWordSilence) { // Put audio onto the SDS saying "Alexa ......". bool error; std::string file = inputPath + ALEXA_SILENCE_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); @@ -721,13 +720,11 @@ TEST_F(AudioInputProcessorTest, wakeWordSilence) { // Check that a recognize event was sent ASSERT_TRUE(checkSentEventName(m_avsConnectionManager, NAME_RECOGNIZE)); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // The test channel client has been notified the alarm channel has been foregrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::FOREGROUND); @@ -745,19 +742,19 @@ TEST_F(AudioInputProcessorTest, wakeWordSilence) { * AudioInputProcessor is then observed to send a Recognize event to AVS which responds with a SetMute, Speak, * and ExpectSpeech directive. Audio of "Lions" is then fed into the stream and another recognize event is sent. */ -#ifdef KWD +#if defined(KWD_KITTAI) || defined(KWD_SENSORY) TEST_F(AudioInputProcessorTest, wakeWordMultiturn) { // Put audio onto the SDS saying "Alexa, wikipedia". bool error; std::string file = inputPath + ALEXA_WIKI_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); @@ -768,39 +765,38 @@ TEST_F(AudioInputProcessorTest, wakeWordMultiturn) { // Check that a recognize event was sent. ASSERT_TRUE(checkSentEventName(m_avsConnectionManager, NAME_RECOGNIZE)); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // The test channel client has been notified the alarm channel has been foregrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::FOREGROUND); // Check that prehandle and handle for setMute and Speak has reached the test SS. - TestDirectiveHandler::DirectiveParams params = m_directiveHandler->waitForNext( - std::chrono::seconds(LONG_TIMEOUT_DURATION)); + TestDirectiveHandler::DirectiveParams params = + m_directiveHandler->waitForNext(std::chrono::seconds(LONG_TIMEOUT_DURATION)); ASSERT_NE(params.type, TestDirectiveHandler::DirectiveParams::Type::TIMEOUT); while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { - params.result->setCompleted(); + params.result->setCompleted(); } params = m_directiveHandler->waitForNext(NO_TIMEOUT_DURATION); } // Check that AIP is now in EXPECTING_SPEECH state. - ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState( + AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH, LONG_TIMEOUT_DURATION)); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Put audio onto the SDS saying "Lions". bool secondError; std::string secondFile = inputPath + LIONS_AUDIO_FILE; - std::vector secondAudioData = readAudioFromFile(secondFile, &secondError); + std::vector secondAudioData = readAudioFromFile(secondFile, RIFF_HEADER_SIZE, &secondError); ASSERT_FALSE(secondError); m_AudioBufferWriter->write(secondAudioData.data(), secondAudioData.size()); @@ -810,13 +806,11 @@ TEST_F(AudioInputProcessorTest, wakeWordMultiturn) { // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -829,7 +823,7 @@ TEST_F(AudioInputProcessorTest, wakeWordMultiturn) { ASSERT_NE(params.type, TestDirectiveHandler::DirectiveParams::Type::TIMEOUT); while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { - params.result->setCompleted(); + params.result->setCompleted(); } params = m_directiveHandler->waitForNext(NO_TIMEOUT_DURATION); } @@ -844,19 +838,19 @@ TEST_F(AudioInputProcessorTest, wakeWordMultiturn) { * and ExpectSpeech directive. Audio of "...." is then fed into the stream and another recognize event is sent * but no directives are given in response. */ -#ifdef KWD +#if defined(KWD_KITTAI) || defined(KWD_SENSORY) TEST_F(AudioInputProcessorTest, wakeWordMultiturnWithoutUserResponse) { // Put audio onto the SDS saying "Alexa, wikipedia". bool error; std::string file = inputPath + ALEXA_WIKI_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); @@ -867,44 +861,42 @@ TEST_F(AudioInputProcessorTest, wakeWordMultiturnWithoutUserResponse) { // Check that a recognize event was sent ASSERT_TRUE(checkSentEventName(m_avsConnectionManager, NAME_RECOGNIZE)); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // The test channel client has been notified the alarm channel has been foregrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::FOREGROUND); - // Check that prehandle and handle for setMute and Speak has reached the test SS - TestDirectiveHandler::DirectiveParams params = m_directiveHandler->waitForNext( - std::chrono::seconds(LONG_TIMEOUT_DURATION)); + // Check that prehandle and handle for setMute and Speak has reached the test SS + TestDirectiveHandler::DirectiveParams params = + m_directiveHandler->waitForNext(std::chrono::seconds(LONG_TIMEOUT_DURATION)); ASSERT_NE(params.type, TestDirectiveHandler::DirectiveParams::Type::TIMEOUT); while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { - std::this_thread::sleep_for(std::chrono::seconds(2)); - params.result->setCompleted(); + std::this_thread::sleep_for(std::chrono::seconds(2)); + params.result->setCompleted(); } params = m_directiveHandler->waitForNext(NO_TIMEOUT_DURATION); } // Check that AIP is now in EXPECTING_SPEECH state. ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH, LONG_TIMEOUT_DURATION)); + AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH, LONG_TIMEOUT_DURATION)); // Put audio onto the SDS saying ".......". bool secondError; std::string secondFile = inputPath + SILENCE_AUDIO_FILE; - std::vector secondAudioData = readAudioFromFile(secondFile, &secondError); + std::vector secondAudioData = readAudioFromFile(secondFile, RIFF_HEADER_SIZE, &secondError); ASSERT_FALSE(secondError); m_AudioBufferWriter->write(secondAudioData.data(), secondAudioData.size()); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Check that a recognize event was sent. ASSERT_TRUE(checkSentEventName(m_avsConnectionManager, NAME_RECOGNIZE)); @@ -912,13 +904,11 @@ TEST_F(AudioInputProcessorTest, wakeWordMultiturnWithoutUserResponse) { // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -940,22 +930,22 @@ TEST_F(AudioInputProcessorTest, wakeWordMultiturnWithoutUserResponse) { /** * Test AudioInputProcessor's ability to handle a simple interation triggered by a tap to talk button. * - * To do this, audio of "Tell me a joke" is fed into a stream after button sends recognize to AudioInputProcessor. The - * AudioInputProcessor is then observed to send a Recognize event to AVS which responds with a SetMute and Speak + * To do this, audio of "Tell me a joke" is fed into a stream after button sends recognize to AudioInputProcessor. The + * AudioInputProcessor is then observed to send a Recognize event to AVS which responds with a SetMute and Speak * directive. */ -TEST_F(AudioInputProcessorTest, tapToTalkJoke) { +TEST_F(AudioInputProcessorTest, DISABLED_tapToTalkJoke) { // Signal to the AIP to start recognizing. ASSERT_TRUE(m_tapToTalkButton->startRecognizing(m_AudioInputProcessor, m_TapToTalkAudioProvider)); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Put audio onto the SDS saying "Tell me a joke". bool error; std::string file = inputPath + JOKE_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); @@ -963,13 +953,11 @@ TEST_F(AudioInputProcessorTest, tapToTalkJoke) { // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -985,12 +973,58 @@ TEST_F(AudioInputProcessorTest, tapToTalkJoke) { ASSERT_NE(params.type, TestDirectiveHandler::DirectiveParams::Type::TIMEOUT); while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { - params.result->setCompleted(); + params.result->setCompleted(); } params = m_directiveHandler->waitForNext(NO_TIMEOUT_DURATION); } } +TEST_F(AudioInputProcessorTest, tapToTalkTimeOpus) { + m_compatibleAudioFormat.sampleRateHz = COMPATIBLE_SAMPLE_RATE_OPUS_32; + m_compatibleAudioFormat.numChannels = COMPATIBLE_NUM_CHANNELS; + m_compatibleAudioFormat.endianness = COMPATIBLE_ENDIANNESS; + m_compatibleAudioFormat.encoding = avsCommon::utils::AudioFormat::Encoding::OPUS; + + bool alwaysReadable = true; + bool canOverride = true; + bool canBeOverridden = true; + std::shared_ptr tapToTalkAudioProvider; + tapToTalkAudioProvider = std::make_shared( + m_AudioBuffer, m_compatibleAudioFormat, ASRProfile::NEAR_FIELD, alwaysReadable, canOverride, !canBeOverridden); + // Signal to the AIP to start recognizing. + ASSERT_TRUE(m_tapToTalkButton->startRecognizing(m_AudioInputProcessor, tapToTalkAudioProvider)); + + // Check that AIP is now in RECOGNIZING state. + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + + // Put audio onto the SDS saying "What time is it?". + bool error; + std::string file = inputPath + TIME_AUDIO_FILE_OPUS; + int headerSize = 0; + std::vector audioData = readAudioFromFile(file, headerSize, &error); + ASSERT_FALSE(audioData.empty()); + m_AudioBufferWriter->write(audioData.data(), audioData.size()); + + // The test channel client has been notified the alarm channel has been backgrounded. + ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); + + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + + // Check that AIP is in an IDLE state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + + // Check that the test context provider was asked to provide context for the event. + ASSERT_TRUE(m_stateProvider->checkStateRequested()); + + // The test channel client has been notified the alarm channel has been foregrounded. + ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::FOREGROUND); + + // Check that a recognize event was sent. + ASSERT_TRUE(checkSentEventName(m_avsConnectionManager, NAME_RECOGNIZE)); +} + /** * Test AudioInputProcessor's ability to handle a silent interation triggered by a tap to talk button. * @@ -1002,13 +1036,13 @@ TEST_F(AudioInputProcessorTest, tapToTalkSilence) { ASSERT_TRUE(m_tapToTalkButton->startRecognizing(m_AudioInputProcessor, m_TapToTalkAudioProvider)); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Put audio onto the SDS saying ".......". bool error; std::string file = inputPath + SILENCE_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); @@ -1016,13 +1050,11 @@ TEST_F(AudioInputProcessorTest, tapToTalkSilence) { // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -1051,8 +1083,8 @@ TEST_F(AudioInputProcessorTest, tapToTalkNoAudio) { // Put no audio onto the SDS. // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); @@ -1060,7 +1092,7 @@ TEST_F(AudioInputProcessorTest, tapToTalkNoAudio) { // Check that a recognize event was sent ASSERT_TRUE(checkSentEventName(m_avsConnectionManager, NAME_RECOGNIZE)); - //Check that the test context provider was asked to provide context for the event. + // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); // The test channel client has not changed. @@ -1074,23 +1106,23 @@ TEST_F(AudioInputProcessorTest, tapToTalkNoAudio) { /** * Test AudioInputProcessor's ability to handle an interation triggered by a tap to talk button with wake word. * - * To do this, audio of "Alexa, Tell me a joke" is fed into a stream after button sends recognize to + * To do this, audio of "Alexa, Tell me a joke" is fed into a stream after button sends recognize to * AudioInputProcessor. The AudioInputProcessor is then observed to send only one Recognize event to AVS which responds * with a SetMute and Speak directive. */ -#ifdef KWD +#if defined(KWD_KITTAI) || defined(KWD_SENSORY) TEST_F(AudioInputProcessorTest, tapToTalkWithWakeWordConflict) { // Signal to the AIP to start recognizing. ASSERT_TRUE(m_tapToTalkButton->startRecognizing(m_AudioInputProcessor, m_TapToTalkAudioProvider)); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Put audio onto the SDS saying "Alexa, Tell me a joke". bool error; std::string file = inputPath + ALEXA_JOKE_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); @@ -1098,13 +1130,11 @@ TEST_F(AudioInputProcessorTest, tapToTalkWithWakeWordConflict) { // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -1120,7 +1150,7 @@ TEST_F(AudioInputProcessorTest, tapToTalkWithWakeWordConflict) { ASSERT_NE(params.type, TestDirectiveHandler::DirectiveParams::Type::TIMEOUT); while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { - params.result->setCompleted(); + params.result->setCompleted(); } params = m_directiveHandler->waitForNext(NO_TIMEOUT_DURATION); } @@ -1139,13 +1169,13 @@ TEST_F(AudioInputProcessorTest, tapToTalkMultiturn) { ASSERT_TRUE(m_tapToTalkButton->startRecognizing(m_AudioInputProcessor, m_TapToTalkAudioProvider)); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Put audio onto the SDS saying "Wikipedia". bool error; std::string file = inputPath + WIKI_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); @@ -1153,13 +1183,11 @@ TEST_F(AudioInputProcessorTest, tapToTalkMultiturn) { // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -1176,36 +1204,34 @@ TEST_F(AudioInputProcessorTest, tapToTalkMultiturn) { while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { std::this_thread::sleep_for(std::chrono::seconds(2)); - params.result->setCompleted(); + params.result->setCompleted(); } params = m_directiveHandler->waitForNext(SHORT_TIMEOUT_DURATION); } // Check that AIP is now in EXPECTING_SPEECH state. ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH, SHORT_TIMEOUT_DURATION)); + AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH, SHORT_TIMEOUT_DURATION)); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, SHORT_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, SHORT_TIMEOUT_DURATION)); // Put audio onto the SDS saying "Lions". bool secondError; std::string secondFile = inputPath + LIONS_AUDIO_FILE; - std::vector secondAudioData = readAudioFromFile(secondFile, &secondError); + std::vector secondAudioData = readAudioFromFile(secondFile, RIFF_HEADER_SIZE, &secondError); ASSERT_FALSE(secondError); m_AudioBufferWriter->write(secondAudioData.data(), secondAudioData.size()); // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // The test channel client has been notified the alarm channel has been foregrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::FOREGROUND); @@ -1218,14 +1244,14 @@ TEST_F(AudioInputProcessorTest, tapToTalkMultiturn) { ASSERT_NE(params.type, TestDirectiveHandler::DirectiveParams::Type::TIMEOUT); while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { - params.result->setCompleted(); + params.result->setCompleted(); } params = m_directiveHandler->waitForNext(NO_TIMEOUT_DURATION); } } /** - * Test AudioInputProcessor's ability to handle a multiturn interation triggered by a tap to talk button but no user + * Test AudioInputProcessor's ability to handle a multiturn interation triggered by a tap to talk button but no user * response. * * To do this, audio of "Wikipedia" is fed into a stream after button sends recognize to AudioInputProcessor. The @@ -1238,13 +1264,13 @@ TEST_F(AudioInputProcessorTest, tapToTalkMultiturnWithoutUserResponse) { ASSERT_TRUE(m_tapToTalkButton->startRecognizing(m_AudioInputProcessor, m_TapToTalkAudioProvider)); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Put audio onto the SDS saying "Wikipedia". bool error; std::string file = inputPath + WIKI_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); @@ -1252,9 +1278,8 @@ TEST_F(AudioInputProcessorTest, tapToTalkMultiturnWithoutUserResponse) { // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -1265,39 +1290,38 @@ TEST_F(AudioInputProcessorTest, tapToTalkMultiturnWithoutUserResponse) { // Check that a recognize event was sent. ASSERT_TRUE(checkSentEventName(m_avsConnectionManager, NAME_RECOGNIZE)); - bool expectSpeechFound = true; + bool expectSpeechFound = true; TestDirectiveHandler::DirectiveParams params; - while (expectSpeechFound){ - + while (expectSpeechFound) { // Check that AIP is in an IDLE state before starting. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that prehandle and handle for setMute and Speak has reached the test SS. params = m_directiveHandler->waitForNext(SHORT_TIMEOUT_DURATION); ASSERT_NE(params.type, TestDirectiveHandler::DirectiveParams::Type::TIMEOUT); while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { - if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { - std::this_thread::sleep_for(std::chrono::seconds(2)); - params.result->setCompleted(); - } + if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { + std::this_thread::sleep_for(std::chrono::seconds(2)); + params.result->setCompleted(); + } params = m_directiveHandler->waitForNext(SHORT_TIMEOUT_DURATION); } // Check that AIP is now in EXPECTING_SPEECH state. ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH, SHORT_TIMEOUT_DURATION)); + AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH, SHORT_TIMEOUT_DURATION)); // Put audio onto the SDS saying ".......". bool secondError; std::string secondFile = inputPath + SILENCE_AUDIO_FILE; - std::vector secondAudioData = readAudioFromFile(secondFile, &secondError); + std::vector secondAudioData = readAudioFromFile(secondFile, RIFF_HEADER_SIZE, &secondError); ASSERT_FALSE(secondError); m_AudioBufferWriter->write(secondAudioData.data(), secondAudioData.size()); // Check that AIP is now in RECOGNIZING state. ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Check that a recognize event was sent. ASSERT_TRUE(checkSentEventName(m_avsConnectionManager, NAME_RECOGNIZE)); @@ -1305,13 +1329,13 @@ TEST_F(AudioInputProcessorTest, tapToTalkMultiturnWithoutUserResponse) { // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -1350,20 +1374,19 @@ TEST_F(AudioInputProcessorTest, tapToTalkCancel) { m_AudioInputProcessor->resetState(); // Check that AIP was briefly in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Put audio onto the SDS saying "Tell me a joke". bool error; std::string file = inputPath + JOKE_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that no directives arrived to the fake SS. TestDirectiveHandler::DirectiveParams params = m_directiveHandler->waitForNext(NO_TIMEOUT_DURATION); @@ -1373,8 +1396,8 @@ TEST_F(AudioInputProcessorTest, tapToTalkCancel) { /** * Test AudioInputProcessor's ability to handle a simple interation triggered by a hold to talk button. * - * To do this, audio of "Tell me a joke" is fed into a stream after button sends recognize to AudioInputProcessor. The - * AudioInputProcessor is then observed to send a Recognize event to AVS which responds with a SetMute and Speak + * To do this, audio of "Tell me a joke" is fed into a stream after button sends recognize to AudioInputProcessor. The + * AudioInputProcessor is then observed to send a Recognize event to AVS which responds with a SetMute and Speak * directive. */ TEST_F(AudioInputProcessorTest, holdToTalkJoke) { @@ -1383,13 +1406,13 @@ TEST_F(AudioInputProcessorTest, holdToTalkJoke) { ASSERT_TRUE(m_holdToTalkButton->startRecognizing(m_AudioInputProcessor, m_HoldToTalkAudioProvider)); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Put audio onto the SDS saying "Tell me a joke". bool error; std::string file = inputPath + JOKE_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); @@ -1400,13 +1423,11 @@ TEST_F(AudioInputProcessorTest, holdToTalkJoke) { // Stop holding the button. ASSERT_TRUE(m_holdToTalkButton->stopRecognizing(m_AudioInputProcessor)); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -1422,7 +1443,7 @@ TEST_F(AudioInputProcessorTest, holdToTalkJoke) { ASSERT_NE(params.type, TestDirectiveHandler::DirectiveParams::Type::TIMEOUT); while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { - params.result->setCompleted(); + params.result->setCompleted(); } params = m_directiveHandler->waitForNext(NO_TIMEOUT_DURATION); } @@ -1440,13 +1461,13 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiturn) { ASSERT_TRUE(m_holdToTalkButton->startRecognizing(m_AudioInputProcessor, m_HoldToTalkAudioProvider)); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Put audio onto the SDS saying "Wikipedia". bool error; std::string file = inputPath + WIKI_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); @@ -1457,13 +1478,11 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiturn) { // Stop holding the button. ASSERT_TRUE(m_holdToTalkButton->stopRecognizing(m_AudioInputProcessor)); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -1480,14 +1499,14 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiturn) { while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { std::this_thread::sleep_for(std::chrono::seconds(2)); - params.result->setCompleted(); + params.result->setCompleted(); } params = m_directiveHandler->waitForNext(SHORT_TIMEOUT_DURATION); } // Check that AIP is now in EXPECTING_SPEECH state. ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH, LONG_TIMEOUT_DURATION)); + AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH, LONG_TIMEOUT_DURATION)); // Signal to the AIP to start recognizing. ASSERT_TRUE(m_holdToTalkButton->startRecognizing(m_AudioInputProcessor, m_HoldToTalkAudioProvider)); @@ -1495,13 +1514,13 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiturn) { // Put audio onto the SDS of "Lions". bool secondError; file = inputPath + LIONS_AUDIO_FILE; - std::vector secondAudioData = readAudioFromFile(file, &secondError); + std::vector secondAudioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &secondError); ASSERT_FALSE(secondError); m_AudioBufferWriter->write(secondAudioData.data(), secondAudioData.size()); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::BACKGROUND); @@ -1509,13 +1528,11 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiturn) { // Stop holding the button. ASSERT_TRUE(m_holdToTalkButton->stopRecognizing(m_AudioInputProcessor)); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // The test channel client has been notified the alarm channel has been foregrounded. ASSERT_EQ(m_testClient->waitForFocusChange(LONG_TIMEOUT_DURATION), FocusState::FOREGROUND); @@ -1529,14 +1546,15 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiturn) { ASSERT_NE(params.type, TestDirectiveHandler::DirectiveParams::Type::TIMEOUT); while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { - params.result->setCompleted(); + params.result->setCompleted(); } params = m_directiveHandler->waitForNext(NO_TIMEOUT_DURATION); } } /** - * Test AudioInputProcessor's ability to handle a multiturn interation triggered by a hold to talk button but no user response. + * Test AudioInputProcessor's ability to handle a multiturn interation triggered by a hold to talk button but no user + * response. * * To do this, audio of "Wikipedia" is fed into a stream after button sends recognize to AudioInputProcessor. The * AudioInputProcessor is then observed to send a Recognize event to AVS which responds with a SetMute, Speak, @@ -1548,13 +1566,13 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiTurnWithSilence) { ASSERT_TRUE(m_holdToTalkButton->startRecognizing(m_AudioInputProcessor, m_HoldToTalkAudioProvider)); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Put audio onto the SDS saying "Wikipedia". bool error; std::string file = inputPath + WIKI_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); @@ -1565,9 +1583,8 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiTurnWithSilence) { // Stop holding the button. ASSERT_TRUE(m_holdToTalkButton->stopRecognizing(m_AudioInputProcessor)); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -1578,12 +1595,12 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiTurnWithSilence) { // Check that a recognize event was sent. ASSERT_TRUE(checkSentEventName(m_avsConnectionManager, NAME_RECOGNIZE)); - bool expectSpeechFound = true; + bool expectSpeechFound = true; TestDirectiveHandler::DirectiveParams params; - while (expectSpeechFound){ + while (expectSpeechFound) { // Check that AIP is in an IDLE state before starting. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that prehandle and handle for setMute and Speak has reached the test SS. params = m_directiveHandler->waitForNext(LONG_TIMEOUT_DURATION); @@ -1591,17 +1608,16 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiTurnWithSilence) { ASSERT_NE(params.type, TestDirectiveHandler::DirectiveParams::Type::TIMEOUT); while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { - if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { - std::this_thread::sleep_for(std::chrono::seconds(2)); - params.result->setCompleted(); - } + if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { + std::this_thread::sleep_for(std::chrono::seconds(2)); + params.result->setCompleted(); + } params = m_directiveHandler->waitForNext(SHORT_TIMEOUT_DURATION); - } // Check that AIP is now in EXPECTING_SPEECH state. ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH, SHORT_TIMEOUT_DURATION)); + AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH, SHORT_TIMEOUT_DURATION)); // Signal to the AIP to start recognizing. ASSERT_TRUE(m_holdToTalkButton->startRecognizing(m_AudioInputProcessor, m_HoldToTalkAudioProvider)); @@ -1609,13 +1625,13 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiTurnWithSilence) { // Put audio onto the SDS saying ".......". bool secondError; std::string secondFile = inputPath + SILENCE_AUDIO_FILE; - std::vector secondAudioData = readAudioFromFile(secondFile, &secondError); + std::vector secondAudioData = readAudioFromFile(secondFile, RIFF_HEADER_SIZE, &secondError); ASSERT_FALSE(secondError); m_AudioBufferWriter->write(secondAudioData.data(), secondAudioData.size()); - + // Check that AIP is now in RECOGNIZING state. ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Stop holding the button. ASSERT_TRUE(m_holdToTalkButton->stopRecognizing(m_AudioInputProcessor)); @@ -1626,13 +1642,13 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiTurnWithSilence) { // The test channel client has been notified the alarm channel has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(NO_TIMEOUT_DURATION), FocusState::BACKGROUND); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -1658,7 +1674,8 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiTurnWithSilence) { } /** - * Test AudioInputProcessor's ability to handle a multiturn interation triggered by a hold to talk button that times out. + * Test AudioInputProcessor's ability to handle a multiturn interation triggered by a hold to talk button that times + * out. * * To do this, audio of "Wikipedia" is fed into a stream after button sends recognize to AudioInputProcessor. The * AudioInputProcessor is then observed to send a Recognize event to AVS which responds with a SetMute, Speak, @@ -1670,13 +1687,13 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiturnWithTimeOut) { ASSERT_TRUE(m_holdToTalkButton->startRecognizing(m_AudioInputProcessor, m_HoldToTalkAudioProvider)); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Put audio onto the SDS saying "Wikipedia". bool error; std::string file = inputPath + WIKI_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); @@ -1687,13 +1704,11 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiturnWithTimeOut) { // Stop holding the button. ASSERT_TRUE(m_holdToTalkButton->stopRecognizing(m_AudioInputProcessor)); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -1710,7 +1725,7 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiturnWithTimeOut) { while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { if (params.isHandle() && params.directive->getName() == NAME_SPEAK) { std::this_thread::sleep_for(std::chrono::seconds(2)); - params.result->setCompleted(); + params.result->setCompleted(); } params = m_directiveHandler->waitForNext(SHORT_TIMEOUT_DURATION); } @@ -1719,14 +1734,13 @@ TEST_F(AudioInputProcessorTest, holdToTalkMultiturnWithTimeOut) { // Check that AIP is now in EXPECTING_SPEECH state. ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH, LONG_TIMEOUT_DURATION)); + AudioInputProcessorObserverInterface::State::EXPECTING_SPEECH, LONG_TIMEOUT_DURATION)); // The test channel client has stayed foregrounded. ASSERT_EQ(m_testClient->waitForFocusChange(SHORT_TIMEOUT_DURATION), FocusState::NONE); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that ExpectSpeechTimeOut event has been sent. ASSERT_TRUE(checkSentEventName(m_avsConnectionManager, NAME_EXPECT_SPEECH_TIMED_OUT)); @@ -1743,8 +1757,8 @@ TEST_F(AudioInputProcessorTest, holdToTalkNoAudio) { ASSERT_TRUE(m_holdToTalkButton->startRecognizing(m_AudioInputProcessor, m_HoldToTalkAudioProvider)); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Write nothing to the SDS. @@ -1754,13 +1768,11 @@ TEST_F(AudioInputProcessorTest, holdToTalkNoAudio) { // Stop holding the button. ASSERT_TRUE(m_holdToTalkButton->stopRecognizing(m_AudioInputProcessor)); - // Check that AIP is in BUSY state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); + // Check that AIP is in BUSY state. + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::BUSY, LONG_TIMEOUT_DURATION)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that the test context provider was asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -1788,8 +1800,8 @@ TEST_F(AudioInputProcessorTest, holdToTalkCancel) { ASSERT_TRUE(m_holdToTalkButton->startRecognizing(m_AudioInputProcessor, m_HoldToTalkAudioProvider)); // Check that AIP is now in RECOGNIZING state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE( + m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::RECOGNIZING, LONG_TIMEOUT_DURATION)); // Cancel the recognize. m_AudioInputProcessor->resetState(); @@ -1797,7 +1809,7 @@ TEST_F(AudioInputProcessorTest, holdToTalkCancel) { // Put audio onto the SDS saying "Tell me a joke". bool error; std::string file = inputPath + JOKE_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); ASSERT_FALSE(audioData.empty()); m_AudioBufferWriter->write(audioData.data(), audioData.size()); @@ -1806,8 +1818,7 @@ TEST_F(AudioInputProcessorTest, holdToTalkCancel) { ASSERT_FALSE(m_holdToTalkButton->stopRecognizing(m_AudioInputProcessor)); // Check that AIP is in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, LONG_TIMEOUT_DURATION)); // Check that the test context provider was not asked to provide context for the event. ASSERT_TRUE(m_stateProvider->checkStateRequested()); @@ -1830,16 +1841,16 @@ TEST_F(AudioInputProcessorTest, audioWithoutAnyTrigger) { // Put audio onto the SDS saying "Tell me a joke" without a trigger. bool error; std::string file = inputPath + JOKE_AUDIO_FILE; - std::vector audioData = readAudioFromFile(file, &error); + std::vector audioData = readAudioFromFile(file, RIFF_HEADER_SIZE, &error); ASSERT_FALSE(error); m_AudioBufferWriter->write(audioData.data(), audioData.size()); // Check that AIP is still in an IDLE state. - ASSERT_TRUE(m_StateObserver->checkState( - AudioInputProcessorObserverInterface::State::IDLE, SHORT_TIMEOUT_DURATION)); + ASSERT_TRUE(m_StateObserver->checkState(AudioInputProcessorObserverInterface::State::IDLE, SHORT_TIMEOUT_DURATION)); - // Check that the test context provider was not asked to provide context for the event. - ASSERT_FALSE(m_stateProvider->checkStateRequested()); + // Check that the test context provider was asked to provide context as the post-connect objects would have fetched + // context to send StateSynchronizer event. + ASSERT_TRUE(m_stateProvider->checkStateRequested()); // The test channel client has been not notified the alarm channel has been foregrounded. ASSERT_EQ(m_testClient->waitForFocusChange(SHORT_TIMEOUT_DURATION), FocusState::NONE); @@ -1849,15 +1860,15 @@ TEST_F(AudioInputProcessorTest, audioWithoutAnyTrigger) { ASSERT_EQ(params.type, TestDirectiveHandler::DirectiveParams::Type::TIMEOUT); } -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); if (argc < 3) { - std::cerr << "USAGE: AudioInputProcessorTest " - << std::endl; + std::cerr << "USAGE: " << std::string(argv[0]) << " " + << std::endl; return 1; } else { @@ -1866,5 +1877,3 @@ int main(int argc, char **argv) { return RUN_ALL_TESTS(); } } - - diff --git a/Integration/test/AudioPlayerIntegrationTest.cpp b/Integration/test/AudioPlayerIntegrationTest.cpp index 52d39158a8..17fbbbf50d 100644 --- a/Integration/test/AudioPlayerIntegrationTest.cpp +++ b/Integration/test/AudioPlayerIntegrationTest.cpp @@ -1,7 +1,5 @@ /* - * AudioPlayerIntegrationTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -27,6 +25,7 @@ #include #include "ACL/Transport/HTTP2MessageRouter.h" +#include "ACL/Transport/PostConnectObject.h" #include "ADSL/DirectiveSequencer.h" #include "ADSL/MessageInterpreter.h" #include "AFML/FocusManager.h" @@ -40,6 +39,7 @@ #include "AVSCommon/AVS/Attachment/InProcessAttachmentWriter.h" #include "AVSCommon/AVS/BlockingPolicy.h" #include "AVSCommon/Utils/JSON/JSONUtils.h" +#include "AVSCommon/Utils/LibcurlUtils/HTTPContentFetcherFactory.h" #include "AVSCommon/SDKInterfaces/DirectiveHandlerInterface.h" #include "AVSCommon/SDKInterfaces/DirectiveHandlerResultInterface.h" #include "AVSCommon/AVS/Initialization/AlexaClientSDKInit.h" @@ -53,8 +53,9 @@ #include "Integration/TestDirectiveHandler.h" #include "Integration/TestExceptionEncounteredSender.h" #include "Integration/TestSpeechSynthesizerObserver.h" +#include "PlaybackController/PlaybackController.h" +#include "PlaybackController/PlaybackRouter.h" #include "SpeechSynthesizer/SpeechSynthesizer.h" -#include "System/StateSynchronizer.h" #include "System/UserInactivityMonitor.h" #ifdef GSTREAMER_MEDIA_PLAYER @@ -81,6 +82,7 @@ using namespace sdkInterfaces; using namespace avsCommon::utils::sds; using namespace avsCommon::utils::json; using namespace capabilityAgents::aip; +using namespace capabilityAgents::playbackController; using namespace afml; using namespace capabilityAgents::speechSynthesizer; using namespace capabilityAgents::system; @@ -142,11 +144,11 @@ static const std::chrono::seconds WAIT_FOR_TIMEOUT_DURATION(15); static const std::chrono::seconds NO_TIMEOUT_DURATION(0); static const std::chrono::seconds SONG_TIMEOUT_DURATION(120); /// The compatible encoding for AIP. -static const avsCommon::utils::AudioFormat::Encoding COMPATIBLE_ENCODING = - avsCommon::utils::AudioFormat::Encoding::LPCM; +static const avsCommon::utils::AudioFormat::Encoding COMPATIBLE_ENCODING = + avsCommon::utils::AudioFormat::Encoding::LPCM; /// The compatible endianness for AIP. -static const avsCommon::utils::AudioFormat::Endianness COMPATIBLE_ENDIANNESS = - avsCommon::utils::AudioFormat::Endianness::LITTLE; +static const avsCommon::utils::AudioFormat::Endianness COMPATIBLE_ENDIANNESS = + avsCommon::utils::AudioFormat::Endianness::LITTLE; /// The compatible sample rate for AIP. static const unsigned int COMPATIBLE_SAMPLE_RATE = 16000; /// The compatible bits per sample for Kitt.ai. @@ -190,8 +192,7 @@ class TestClient : public ChannelObserverInterface { /** * Constructor. */ - TestClient() : - m_focusState(FocusState::NONE), m_focusChangeOccurred(false) { + TestClient() : m_focusState(FocusState::NONE), m_focusChangeOccurred(false) { } /** @@ -215,9 +216,7 @@ class TestClient : public ChannelObserverInterface { */ FocusState waitForFocusChange(std::chrono::milliseconds timeout, bool* focusChanged) { std::unique_lock lock(m_mutex); - bool success = m_focusChangedCV.wait_for(lock, timeout, [this] () { - return m_focusChangeOccurred; - }); + bool success = m_focusChangedCV.wait_for(lock, timeout, [this]() { return m_focusChangeOccurred; }); if (!success) { *focusChanged = false; @@ -242,10 +241,9 @@ class TestClient : public ChannelObserverInterface { bool m_focusChangeOccurred; }; -class holdToTalkButton{ +class holdToTalkButton { public: - bool startRecognizing(std::shared_ptr aip, - std::shared_ptr audioProvider) { + bool startRecognizing(std::shared_ptr aip, std::shared_ptr audioProvider) { return aip->recognize(*audioProvider, Initiator::PRESS_AND_HOLD).get(); } @@ -256,9 +254,7 @@ class holdToTalkButton{ class AudioPlayerTest : public ::testing::Test { protected: - virtual void SetUp() override { - std::ifstream infile(configPath); ASSERT_TRUE(infile.good()); ASSERT_TRUE(AlexaClientSDKInit::initialize({&infile})); @@ -266,7 +262,7 @@ class AudioPlayerTest : public ::testing::Test { m_authDelegate = AuthDelegate::create(); m_authDelegate->addAuthObserver(m_authObserver); m_attachmentManager = std::make_shared( - AttachmentManager::AttachmentType::IN_PROCESS); + AttachmentManager::AttachmentType::IN_PROCESS); m_connectionStatusObserver = std::make_shared(); bool isEnabled = false; m_messageRouter = std::make_shared(m_authDelegate, m_attachmentManager); @@ -275,25 +271,19 @@ class AudioPlayerTest : public ::testing::Test { m_directiveSequencer = DirectiveSequencer::create(m_exceptionEncounteredSender); m_messageInterpreter = std::make_shared( - m_exceptionEncounteredSender, - m_directiveSequencer, - m_attachmentManager); + m_exceptionEncounteredSender, m_directiveSequencer, m_attachmentManager); // Set up connection and connect m_avsConnectionManager = std::make_shared( - m_messageRouter, - isEnabled, - m_connectionStatusObserver, - m_messageInterpreter); - ASSERT_NE (nullptr, m_avsConnectionManager); + m_messageRouter, isEnabled, m_connectionStatusObserver, m_messageInterpreter); + ASSERT_NE(nullptr, m_avsConnectionManager); FocusManager::ChannelConfiguration dialogChannelConfig{DIALOG_CHANNEL_NAME, DIALOG_CHANNEL_PRIORITY}; FocusManager::ChannelConfiguration contentChannelConfig{CONTENT_CHANNEL_NAME, CONTENT_CHANNEL_PRIORITY}; FocusManager::ChannelConfiguration testChannelConfig{TEST_CHANNEL_NAME, TEST_CHANNEL_PRIORITY}; - std::vector channelConfigurations { - dialogChannelConfig, contentChannelConfig, testChannelConfig - }; + std::vector channelConfigurations{ + dialogChannelConfig, contentChannelConfig, testChannelConfig}; m_focusManager = std::make_shared(channelConfigurations); @@ -305,12 +295,16 @@ class AudioPlayerTest : public ::testing::Test { ASSERT_TRUE(focusChanged); ASSERT_EQ(state, FocusState::FOREGROUND); - m_contextManager = ContextManager::create(); - ASSERT_NE (nullptr, m_contextManager); + ASSERT_NE(nullptr, m_contextManager); + PostConnectObject::init(m_contextManager); + + m_playbackController = PlaybackController::create(m_contextManager, m_avsConnectionManager); + m_playbackRouter = PlaybackRouter::create(m_playbackController); #ifdef GSTREAMER_MEDIA_PLAYER - m_speakMediaPlayer = MediaPlayer::create(); + m_speakMediaPlayer = + MediaPlayer::create(std::make_shared()); #else m_speakMediaPlayer = std::make_shared(); #endif @@ -321,31 +315,34 @@ class AudioPlayerTest : public ::testing::Test { m_compatibleAudioFormat.endianness = COMPATIBLE_ENDIANNESS; m_compatibleAudioFormat.encoding = COMPATIBLE_ENCODING; - size_t nWords = 1024*1024; + size_t nWords = 1024 * 1024; size_t wordSize = 2; size_t maxReaders = 3; size_t bufferSize = AudioInputStream::calculateBufferSize(nWords, wordSize, maxReaders); auto m_Buffer = std::make_shared(bufferSize); auto m_Sds = avsCommon::avs::AudioInputStream::create(m_Buffer, wordSize, maxReaders); - ASSERT_NE (nullptr, m_Sds); + ASSERT_NE(nullptr, m_Sds); m_AudioBuffer = std::move(m_Sds); - m_AudioBufferWriter = m_AudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); - ASSERT_NE (nullptr, m_AudioBufferWriter); + m_AudioBufferWriter = + m_AudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + ASSERT_NE(nullptr, m_AudioBufferWriter); // Set up hold to talk button. bool alwaysReadable = true; bool canOverride = true; bool canBeOverridden = true; - m_HoldToTalkAudioProvider = std::make_shared( m_AudioBuffer, m_compatibleAudioFormat, - ASRProfile::CLOSE_TALK, !alwaysReadable, canOverride, !canBeOverridden); + m_HoldToTalkAudioProvider = std::make_shared( + m_AudioBuffer, + m_compatibleAudioFormat, + ASRProfile::CLOSE_TALK, + !alwaysReadable, + canOverride, + !canBeOverridden); m_holdToTalkButton = std::make_shared(); - m_userInactivityMonitor = UserInactivityMonitor::create( - m_avsConnectionManager, - m_exceptionEncounteredSender); + m_userInactivityMonitor = UserInactivityMonitor::create(m_avsConnectionManager, m_exceptionEncounteredSender); m_AudioInputProcessor = AudioInputProcessor::create( m_directiveSequencer, m_avsConnectionManager, @@ -353,34 +350,27 @@ class AudioPlayerTest : public ::testing::Test { m_focusManager, m_dialogUXStateAggregator, m_exceptionEncounteredSender, - m_userInactivityMonitor - ); - ASSERT_NE (nullptr, m_AudioInputProcessor); + m_userInactivityMonitor); + ASSERT_NE(nullptr, m_AudioInputProcessor); m_AudioInputProcessor->addObserver(m_dialogUXStateAggregator); // Create and register the SpeechSynthesizer. m_speechSynthesizer = SpeechSynthesizer::create( - m_speakMediaPlayer, - m_avsConnectionManager, - m_focusManager, - m_contextManager, - m_attachmentManager, - m_exceptionEncounteredSender); + m_speakMediaPlayer, + m_avsConnectionManager, + m_focusManager, + m_contextManager, + m_exceptionEncounteredSender, + m_dialogUXStateAggregator); ASSERT_NE(nullptr, m_speechSynthesizer); m_directiveSequencer->addDirectiveHandler(m_speechSynthesizer); m_speechSynthesizerObserver = std::make_shared(); m_speechSynthesizer->addObserver(m_speechSynthesizerObserver); - - // TODO: ACSDK-421: Revert this to use m_connectionManager rather than m_messageRouter. - m_stateSynchronizer = StateSynchronizer::create( - m_contextManager, - m_messageRouter); - ASSERT_NE(nullptr, m_stateSynchronizer); - m_avsConnectionManager->addConnectionStatusObserver(m_stateSynchronizer); - + m_speechSynthesizer->addObserver(m_dialogUXStateAggregator); #ifdef GSTREAMER_MEDIA_PLAYER - m_contentMediaPlayer = MediaPlayer::create(); + m_contentMediaPlayer = + MediaPlayer::create(std::make_shared()); #else m_contentMediaPlayer = std::make_shared(); #endif @@ -391,23 +381,24 @@ class AudioPlayerTest : public ::testing::Test { m_avsConnectionManager, m_focusManager, m_contextManager, - m_attachmentManager, - m_exceptionEncounteredSender); + m_exceptionEncounteredSender, + m_playbackRouter); ASSERT_NE(nullptr, m_audioPlayer); m_directiveSequencer->addDirectiveHandler(m_audioPlayer); connect(); - } void TearDown() override { disconnect(); + m_AudioInputProcessor->shutdown(); + m_directiveSequencer->shutdown(); + m_speechSynthesizer->shutdown(); + if (m_audioPlayer) { m_audioPlayer->shutdown(); } - m_AudioInputProcessor->resetState().wait(); - m_directiveSequencer->shutdown(); - + m_avsConnectionManager->shutdown(); AlexaClientSDKInit::uninitialize(); } @@ -415,14 +406,10 @@ class AudioPlayerTest : public ::testing::Test { * Connect to AVS. */ void connect() { - ASSERT_TRUE(m_authObserver->waitFor(AuthObserver::State::REFRESHED)) - << "Retrieving the auth token timed out."; + ASSERT_TRUE(m_authObserver->waitFor(AuthObserver::State::REFRESHED)) << "Retrieving the auth token timed out."; m_avsConnectionManager->enable(); ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::CONNECTED)) - << "Connecting timed out."; - m_avsConnectionManager->synchronize(); - ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::POST_CONNECTED)) - << "Post connecting timed out."; + << "Connecting timed out."; } /** @@ -431,16 +418,16 @@ class AudioPlayerTest : public ::testing::Test { void disconnect() { m_avsConnectionManager->disable(); ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::DISCONNECTED)) - << "Connecting timed out."; + << "Connecting timed out."; } std::string getSentEventName(TestMessageSender::SendParams sendParams) { std::string eventString; std::string eventHeader; std::string eventName; - jsonUtils::lookupStringValue(sendParams.request->getJsonContent(), JSON_MESSAGE_EVENT_KEY, &eventString); - jsonUtils::lookupStringValue(eventString, JSON_MESSAGE_HEADER_KEY, &eventHeader); - jsonUtils::lookupStringValue(eventHeader, JSON_MESSAGE_NAME_KEY, &eventName); + jsonUtils::retrieveValue(sendParams.request->getJsonContent(), JSON_MESSAGE_EVENT_KEY, &eventString); + jsonUtils::retrieveValue(eventString, JSON_MESSAGE_HEADER_KEY, &eventHeader); + jsonUtils::retrieveValue(eventHeader, JSON_MESSAGE_NAME_KEY, &eventName); return eventName; } @@ -453,7 +440,7 @@ class AudioPlayerTest : public ::testing::Test { return false; } - std::vector readAudioFromFile(const std::string &fileName, bool* errorOccurred) { + std::vector readAudioFromFile(const std::string& fileName, bool* errorOccurred) { const int RIFF_HEADER_SIZE = 44; std::ifstream inputFile(fileName.c_str(), std::ifstream::binary); @@ -480,9 +467,9 @@ class AudioPlayerTest : public ::testing::Test { std::vector retVal(numSamples, 0); - inputFile.read((char *)&retVal[0], numSamples * 2); + inputFile.read((char*)&retVal[0], numSamples * 2); - if (inputFile.gcount() != numSamples*2) { + if (inputFile.gcount() != numSamples * 2) { std::cout << "Error reading audio file" << std::endl; if (errorOccurred) { *errorOccurred = true; @@ -519,6 +506,8 @@ class AudioPlayerTest : public ::testing::Test { std::shared_ptr m_messageRouter; std::shared_ptr m_avsConnectionManager; std::shared_ptr m_exceptionEncounteredSender; + std::shared_ptr m_playbackController; + std::shared_ptr m_playbackRouter; std::shared_ptr m_directiveHandler; std::shared_ptr m_directiveSequencer; std::shared_ptr m_messageInterpreter; @@ -528,7 +517,6 @@ class AudioPlayerTest : public ::testing::Test { std::shared_ptr m_testContentClient; std::shared_ptr m_speechSynthesizer; std::shared_ptr m_speechSynthesizerObserver; - std::shared_ptr m_stateSynchronizer; std::shared_ptr m_holdToTalkButton; std::shared_ptr m_HoldToTalkAudioProvider; avsCommon::utils::AudioFormat m_compatibleAudioFormat; @@ -551,21 +539,20 @@ class AudioPlayerTest : public ::testing::Test { std::shared_ptr m_speakMediaPlayer; std::shared_ptr m_contentMediaPlayer; #endif - }; /** * Test ability for the AudioPlayer to handle one play directive. * - * This test is intended to test the AudioPlayer's ability to handle a short play directive all the way through. To do this, - * an audio file of "Sing me a song" is sent as a Recognize event. In response, a Play directive is received. The tests then - * observe that the correct events are sent in order. + * This test is intended to test the AudioPlayer's ability to handle a short play directive all the way through. To do + * this, an audio file of "Sing me a song" is sent as a Recognize event. In response, a Play directive is received. The + * tests then observe that the correct events are sent in order. * */ TEST_F(AudioPlayerTest, SingASong) { // Sing me a song. sendAudioFileAsRecognize(RECOGNIZE_SING_FILE_NAME); - bool focusChanged; + bool focusChanged; FocusState state; state = m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged); ASSERT_TRUE(focusChanged); @@ -575,101 +562,107 @@ TEST_F(AudioPlayerTest, SingASong) { TestMessageSender::SendParams sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - // PlaybackStarted - sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - ASSERT_TRUE(checkSentEventName(sendParams, NAME_PLAYBACK_STARTED)); - - // PlaybackNearlyFinished - sendParams = m_avsConnectionManager->waitForNext(SONG_TIMEOUT_DURATION); - ASSERT_TRUE(checkSentEventName(sendParams, NAME_PLAYBACK_NEARLY_FINISHED)); + bool playbackFinishedFound = false; + bool playbackNearlyFinishedFound = false; + bool playbackStartedFound = false; - sendParams = m_avsConnectionManager->waitForNext(SONG_TIMEOUT_DURATION); - ASSERT_TRUE(checkSentEventName(sendParams, NAME_PLAYBACK_FINISHED)); + sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); + while (TestMessageSender::SendParams::Type::TIMEOUT != sendParams.type && !playbackFinishedFound) { + if (checkSentEventName(sendParams, NAME_PLAYBACK_STARTED)) { + playbackStartedFound = true; + sendParams = m_avsConnectionManager->waitForNext(SONG_TIMEOUT_DURATION); + } else if (checkSentEventName(sendParams, NAME_PLAYBACK_NEARLY_FINISHED)) { + playbackNearlyFinishedFound = true; + sendParams = m_avsConnectionManager->waitForNext(SONG_TIMEOUT_DURATION); + } else if (checkSentEventName(sendParams, NAME_PLAYBACK_FINISHED)) { + playbackFinishedFound = true; + } else { + sendParams = m_avsConnectionManager->waitForNext(SONG_TIMEOUT_DURATION); + } + } + ASSERT_TRUE(playbackStartedFound); + ASSERT_TRUE(playbackNearlyFinishedFound); + ASSERT_TRUE(playbackFinishedFound); state = m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged); ASSERT_TRUE(focusChanged); ASSERT_EQ(state, FocusState::FOREGROUND); m_testContentClient->waitForFocusChange(NO_TIMEOUT_DURATION, &focusChanged); - ASSERT_FALSE(focusChanged); + ASSERT_FALSE(focusChanged); } /** * Test ability for the AudioPlayer to handle multiple play directives. * - * This test is intended to test the AudioPlayer's ability to handle a group play directive all the way through. To do this, - * an audio file of "Flashbriefing" is sent as a Recognize event. In response, a Speak, then an undefined number of Play - * directives, and a final Speak directive is received. The tests then observe that the correct events are sent in order. + * This test is intended to test the AudioPlayer's ability to handle a group play directive all the way through. To do + * this, an audio file of "Flashbriefing" is sent as a Recognize event. In response, a Speak, then an undefined number + * of Play directives, and a final Speak directive is received. The tests then observe that the correct events are sent + * in order. * */ TEST_F(AudioPlayerTest, FlashBriefing) { // Ask for a flashbriefing. sendAudioFileAsRecognize(RECOGNIZE_FLASHBRIEFING_FILE_NAME); - bool focusChanged; - FocusState state; - state = m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged); - ASSERT_TRUE(focusChanged); - ASSERT_EQ(state, FocusState::BACKGROUND); - // Recognize event is sent. TestMessageSender::SendParams sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendParams, NAME_RECOGNIZE)); - state = m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged); - ASSERT_TRUE(focusChanged); - ASSERT_EQ(state, FocusState::FOREGROUND); - - state = m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged); - if(focusChanged) { - ASSERT_EQ(state, FocusState::BACKGROUND); - } - // Speech is handled. TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendFinishedParams, NAME_SPEECH_FINISHED)); - // If no items are in flashbriefing, this section will be skipped. Ensure that at least two items are selected in the - // Alexa app under Settings -> Flashbriefing. + // If no items are in flashbriefing, this section will be skipped. Ensure that at least two items are selected in + // the Alexa app under Settings -> Flashbriefing. sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); bool hasFlashbriefingItems = false; - while (TestMessageSender::SendParams::Type::TIMEOUT != sendParams.type - && !checkSentEventName(sendParams, NAME_SPEECH_STARTED) - && !checkSentEventName(sendParams, NAME_PLAYBACK_STOPPED)) { + while (TestMessageSender::SendParams::Type::TIMEOUT != sendParams.type && + !checkSentEventName(sendParams, NAME_SPEECH_STARTED) && + !checkSentEventName(sendParams, NAME_PLAYBACK_STOPPED)) { hasFlashbriefingItems = true; - ASSERT_TRUE(checkSentEventName(sendParams, NAME_PLAYBACK_STARTED)); - sendParams = m_avsConnectionManager->waitForNext(SONG_TIMEOUT_DURATION); - ASSERT_TRUE(checkSentEventName(sendParams, NAME_PLAYBACK_NEARLY_FINISHED)); - sendParams = m_avsConnectionManager->waitForNext(SONG_TIMEOUT_DURATION); - ASSERT_TRUE(checkSentEventName(sendParams, NAME_PLAYBACK_FINISHED)); - sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - } + bool playbackFinishedFound = false; + bool playbackNearlyFinishedFound = false; + bool playbackStartedFound = false; + + while (TestMessageSender::SendParams::Type::TIMEOUT != sendParams.type && !playbackFinishedFound) { + if (checkSentEventName(sendParams, NAME_PLAYBACK_STARTED)) { + playbackStartedFound = true; + sendParams = m_avsConnectionManager->waitForNext(SONG_TIMEOUT_DURATION); + } else if (checkSentEventName(sendParams, NAME_PLAYBACK_NEARLY_FINISHED)) { + playbackNearlyFinishedFound = true; + sendParams = m_avsConnectionManager->waitForNext(SONG_TIMEOUT_DURATION); + } else if (checkSentEventName(sendParams, NAME_PLAYBACK_FINISHED)) { + playbackFinishedFound = true; + sendParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); + } else { + sendParams = m_avsConnectionManager->waitForNext(SONG_TIMEOUT_DURATION); + } + } + ASSERT_TRUE(playbackStartedFound); + ASSERT_TRUE(playbackNearlyFinishedFound); + ASSERT_TRUE(playbackFinishedFound); + } if (hasFlashbriefingItems) { // The last speak is then allowed. EXPECT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); - EXPECT_TRUE(checkSentEventName(sendFinishedParams, NAME_SPEECH_FINISHED)); + EXPECT_TRUE(checkSentEventName(sendFinishedParams, NAME_SPEECH_FINISHED)); } - - state = m_testContentClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION, &focusChanged); - ASSERT_EQ(state, FocusState::FOREGROUND); - - m_testContentClient->waitForFocusChange(NO_TIMEOUT_DURATION, &focusChanged); - EXPECT_FALSE(focusChanged); } -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); if (argc < 3) { - std::cerr << "USAGE: AudioPlayerIntegration " - << std::endl; + std::cerr << "USAGE: " << std::string(argv[0]) << " " + << std::endl; return 1; } else { diff --git a/Integration/test/CMakeLists.txt b/Integration/test/CMakeLists.txt index 33dc048e34..cc27cf92cb 100644 --- a/Integration/test/CMakeLists.txt +++ b/Integration/test/CMakeLists.txt @@ -15,10 +15,12 @@ set(INCLUDE_PATH "${ACL_SOURCE_DIR}/include" "${GST_INCLUDE_DIRS}" "${AVSCommon_INCLUDE_DIRS}" "${AudioPlayer_INCLUDE_DIRS}" + "${AudioResources_INCLUDE_DIRS}" "${MediaPlayer_SOURCE_DIR}/include" + "${PlaybackController_SOURCE_DIR}/include" "${CONTEXTMANAGER_SOURCE_DIR}/include") - set(LINK_PATH ACL AuthDelegate AFML ADSL AIP Alerts AudioPlayer AVSSystem ContextManager KWD SpeechSynthesizer Integration gtest gmock) + set(LINK_PATH ACL AuthDelegate AFML ADSL AIP Alerts AudioPlayer AVSSystem ContextManager KWD SpeechSynthesizer Integration gtest gmock PlaybackController) if(KITTAI_KEY_WORD_DETECTOR) SET(LINK_PATH ${LINK_PATH} KITTAI) @@ -49,6 +51,9 @@ set(AUTHSERVER_SCRIPT_FILE_TARGET "${AlexaClientSDK_BINARY_DIR}/AuthServer/${AUT configure_file("${AUTHSERVER_SCRIPT_FILE_SOURCE}" "${AUTHSERVER_SCRIPT_FILE_TARGET}") if(BUILD_TESTING) + add_custom_target(integration + COMMAND ${CMAKE_CTEST_COMMAND} -L Integration -C Integration --output-on-failure) + include(${Integration_BINARY_DIR}/CTestCustom.cmake OPTIONAL) set(testSourceFiles "${CMAKE_CURRENT_SOURCE_DIR}/AlexaAuthorizationDelegateTest.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/AlexaCommunicationsLibraryTest.cpp" @@ -64,22 +69,13 @@ if(BUILD_TESTING) add_executable(${testName} ${testSourceFile}) target_include_directories(${testName} PUBLIC "${INCLUDE_PATH}") target_link_libraries(${testName} "${LINK_PATH}") + add_test(NAME ${testName} + COMMAND ${testName} ${SDK_CONFIG_FILE_TARGET} ${INTEGRATION_INPUTS} + CONFIGURATIONS Integration) + set_tests_properties(${testName} PROPERTIES LABELS "Integration") + add_dependencies(integration ${testName}) endforeach() - include(${Integration_BINARY_DIR}/CTestCustom.cmake OPTIONAL) - separate_arguments(CTEST_CUSTOM_PRE_TEST UNIX_COMMAND "${CTEST_CUSTOM_PRE_TEST}") - separate_arguments(CTEST_CUSTOM_POST_TEST UNIX_COMMAND "${CTEST_CUSTOM_POST_TEST}") - add_custom_target(integration - COMMAND ${CTEST_CUSTOM_PRE_TEST} - COMMAND AlexaAuthorizationDelegateTest "${SDK_CONFIG_FILE_TARGET}" - COMMAND AlexaCommunicationsLibraryTest "${SDK_CONFIG_FILE_TARGET}" "${INTEGRATION_INPUTS}" - COMMAND AlexaDirectiveSequencerLibraryTest "${SDK_CONFIG_FILE_TARGET}" "${INTEGRATION_INPUTS}" - COMMAND AudioInputProcessorIntegrationTest "${SDK_CONFIG_FILE_TARGET}" "${INTEGRATION_INPUTS}" - COMMAND ServerDisconnectIntegrationTest "${SDK_CONFIG_FILE_TARGET}" "${INTEGRATION_INPUTS}" - COMMAND SpeechSynthesizerIntegrationTest "${SDK_CONFIG_FILE_TARGET}" "${INTEGRATION_INPUTS}" - COMMAND AlertsIntegrationTest "${SDK_CONFIG_FILE_TARGET}" "${INTEGRATION_INPUTS}" - COMMAND AudioPlayerIntegrationTest "${SDK_CONFIG_FILE_TARGET}" "${INTEGRATION_INPUTS}" - COMMAND ${CTEST_CUSTOM_POST_TEST}) message(STATUS "Please fill ${SDK_CONFIG_FILE_TARGET} before you execute integration tests.") if(NETWORK_INTEGRATION_TESTS AND (${CMAKE_SYSTEM_NAME} MATCHES "Linux")) @@ -91,8 +87,7 @@ if(BUILD_TESTING) target_link_libraries(${networkTestName} "${LINK_PATH}") add_custom_target(networkIntegration COMMAND NetworkIntegrationTests "${SDK_CONFIG_FILE_TARGET}" "${NETWORK_INTERFACE}") - message(STATUS "Please fill ${SDK_CONFIG_FILE_TARGET} before you execute integration tests.") else() message("Skipping build of NetworkIntegrationTests.cpp.") endif() -endif() \ No newline at end of file +endif() diff --git a/Integration/test/NetworkIntegrationTests.cpp b/Integration/test/NetworkIntegrationTests.cpp index ba02f4c457..cb9687755b 100644 --- a/Integration/test/NetworkIntegrationTests.cpp +++ b/Integration/test/NetworkIntegrationTests.cpp @@ -1,7 +1,5 @@ /* - * NetworkIntegrationTests.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -24,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -91,10 +90,10 @@ class NetworkIntegrationTests : public ::testing::Test { * @param attachmentReader The attachment reader for the MessageRequest. */ void sendEvent( - const std::string & jsonContent, - MessageRequest::Status expectedStatus, - std::chrono::seconds timeout, - std::shared_ptr attachmentReader = nullptr); + const std::string& jsonContent, + MessageRequest::Status expectedStatus, + std::chrono::seconds timeout, + std::shared_ptr attachmentReader = nullptr); /** * The function adds delay to the network. @@ -113,6 +112,9 @@ class NetworkIntegrationTests : public ::testing::Test { /// Connection Manager for handling the communication between client and AVS. std::shared_ptr m_avsConnectionManager; + /// ContextManager object. + std::shared_ptr m_contextManager; + private: /// AuthObserver for checking the status of authorization. std::shared_ptr m_authObserver; @@ -133,41 +135,42 @@ void NetworkIntegrationTests::SetUp() { authDelegate->addAuthObserver(m_authObserver); m_connectionStatusObserver = std::make_shared(); messageRouter = std::make_shared(authDelegate, nullptr); + + m_contextManager = contextManager::ContextManager::create(); + ASSERT_NE(m_contextManager, nullptr); + PostConnectObject::init(m_contextManager); + bool isEnabled = false; m_avsConnectionManager = AVSConnectionManager::create( - messageRouter, - isEnabled, - { m_connectionStatusObserver }, - std::unordered_set>()); + messageRouter, + isEnabled, + {m_connectionStatusObserver}, + std::unordered_set>()); ASSERT_NE(m_avsConnectionManager, nullptr); } void NetworkIntegrationTests::TearDown() { - AlexaClientSDKInit::uninitialize(); - deleteDelay(); + AlexaClientSDKInit::uninitialize(); + deleteDelay(); } void NetworkIntegrationTests::connect() { ASSERT_TRUE(m_authObserver->waitFor(AuthObserver::State::REFRESHED)); m_avsConnectionManager->enable(); - ASSERT_TRUE(m_connectionStatusObserver->waitFor( - ConnectionStatusObserverInterface::Status::CONNECTED)); - m_avsConnectionManager->onStateChanged(StateSynchronizerObserverInterface::State::SYNCHRONIZED); - ASSERT_TRUE(m_connectionStatusObserver->waitFor( - ConnectionStatusObserverInterface::Status::POST_CONNECTED)); + ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::CONNECTED)); } void NetworkIntegrationTests::disconnect() { m_avsConnectionManager->disable(); - ASSERT_TRUE(m_connectionStatusObserver->waitFor( - ConnectionStatusObserverInterface::Status::DISCONNECTED)) << "Disconnecting timed out."; + ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::DISCONNECTED)) + << "Disconnecting timed out."; } void NetworkIntegrationTests::sendEvent( - const std::string & jsonContent, - MessageRequest::Status expectedStatus, - std::chrono::seconds timeout, - std::shared_ptr attachmentReader) { + const std::string& jsonContent, + MessageRequest::Status expectedStatus, + std::chrono::seconds timeout, + std::shared_ptr attachmentReader) { auto messageRequest = std::make_shared(jsonContent, attachmentReader); m_avsConnectionManager->sendMessage(messageRequest); ASSERT_TRUE(messageRequest->waitFor(expectedStatus, timeout)); @@ -224,8 +227,8 @@ TEST_F(NetworkIntegrationTests, testReConnectAfterDelay) { TEST_F(NetworkIntegrationTests, testSendEventAfterDelayPass) { connect(); addDelay(DELAY_TIME); - sendEvent(SYNCHRONIZE_STATE_JSON, MessageRequest::Status::SUCCESS, - std::chrono::seconds(TIMEOUT_FOR_SEND_IN_SECONDS)); + sendEvent( + SYNCHRONIZE_STATE_JSON, MessageRequest::Status::SUCCESS, std::chrono::seconds(TIMEOUT_FOR_SEND_IN_SECONDS)); disconnect(); } @@ -236,15 +239,17 @@ TEST_F(NetworkIntegrationTests, testSendEventAfterDelayPass) { TEST_F(NetworkIntegrationTests, testSendEventAfterDelayFails) { connect(); addDelay(LONG_DELAY_TIME); - sendEvent(SYNCHRONIZE_STATE_JSON, MessageRequest::Status::TIMEDOUT, - std::chrono::seconds(LONG_TIMEOUT_FOR_SEND_IN_SECONDS)); + sendEvent( + SYNCHRONIZE_STATE_JSON, + MessageRequest::Status::TIMEDOUT, + std::chrono::seconds(LONG_TIMEOUT_FOR_SEND_IN_SECONDS)); disconnect(); } -}//namespace test -}//namespace integration -}//namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); if (getuid()) { @@ -252,12 +257,12 @@ int main(int argc, char **argv) { return 1; } if (argc < 3) { - std::cerr << "USAGE: NetworkIntegrationTests " - << std::endl; + std::cerr << "USAGE: " << std::string(argv[0]) << " " + << std::endl; return 1; } else { alexaClientSDK::integration::test::g_configPath = std::string(argv[1]); alexaClientSDK::integration::test::network_interface = std::string(argv[2]); return RUN_ALL_TESTS(); } -} \ No newline at end of file +} diff --git a/Integration/test/ServerDisconnectIntegrationTest.cpp b/Integration/test/ServerDisconnectIntegrationTest.cpp index e0de015183..ee3127f1cd 100644 --- a/Integration/test/ServerDisconnectIntegrationTest.cpp +++ b/Integration/test/ServerDisconnectIntegrationTest.cpp @@ -1,7 +1,5 @@ /* - * ServerDisconnectIntegrationTest.cpp - * - * Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -23,10 +21,13 @@ #include #include #include +#include #include #include #include #include +#include +#include #include "Integration/AuthObserver.h" #include "Integration/ConnectionStatusObserver.h" @@ -58,17 +59,15 @@ static const std::string TAG("ServerDisconnectIntegrationTest"); /// The time to wait for expected message status on sending the message. static const int TIMEOUT_FOR_SEND_IN_SECONDS = 10; -/// The time to wait for SERVER_SIDE_DISCONNECT. -static const int WAIT_TIME_IN_SECONDS = 5; + /// Path to the AlexaClientSDKConfig.json file. std::string g_configPath; /** * This class tests the functionality for communication between client and AVS using ACL library. */ -class AVSCommunication { +class AVSCommunication : public avsCommon::utils::RequiresShutdown { public: - /** * Create an AVSCommunication object which initializes @c m_connectionStatusObserver, @c m_avsConnectionManager, * @c m_authObserver, @c m_authDelegate and @c m_messageRouter. @@ -86,19 +85,25 @@ class AVSCommunication { */ void disconnect(); + /** + * Function to retun the connection status observer. + */ + std::shared_ptr getConnectionStatusObserver(); + /** * The function to send one message to AVS. * @param jsonContent The content in json format to send in the message. * @param expectedStatus The expected status of the message being sent to AVS. * @param timeout The maximum time to wait for the @c expectedStatus. * @param attachmentReader The attachment reader for the MessageRequest. - * @return true if expected MessageRequest::Status is received within the @c timeout else false. + * @return true if expected avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status is received within the + * @c timeout else false. */ bool sendEvent( - const std::string & jsonContent, - MessageRequest::Status expectedStatus, - std::chrono::seconds timeout, - std::shared_ptr attachmentReader = nullptr); + const std::string& jsonContent, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status expectedStatus, + std::chrono::seconds timeout, + std::shared_ptr attachmentReader = nullptr); /** * The function to check for Server Side Disconnect for the current connection. @@ -106,6 +111,9 @@ class AVSCommunication { */ bool checkForServerSideDisconnect(); +protected: + void doShutdown() override; + private: /** * AVSCommunication Constructor @@ -117,10 +125,11 @@ class AVSCommunication { std::shared_ptr m_avsConnectionManager; /// AuthObserver for checking the status of authorization. std::shared_ptr m_authObserver; + /// ContextManager object. + std::shared_ptr m_contextManager; }; - -AVSCommunication::AVSCommunication() { +AVSCommunication::AVSCommunication() : RequiresShutdown("AVSCommunication") { } std::unique_ptr AVSCommunication::create() { @@ -138,11 +147,14 @@ std::unique_ptr AVSCommunication::create() { authDelegate->addAuthObserver(avsCommunication->m_authObserver); avsCommunication->m_connectionStatusObserver = std::make_shared(); messageRouter = std::make_shared(authDelegate, nullptr); + avsCommunication->m_contextManager = contextManager::ContextManager::create(); + PostConnectObject::init(avsCommunication->m_contextManager); + avsCommunication->m_avsConnectionManager = AVSConnectionManager::create( - messageRouter, - false, - { avsCommunication->m_connectionStatusObserver }, - std::unordered_set>()); + messageRouter, + false, + {avsCommunication->m_connectionStatusObserver}, + std::unordered_set>()); if (!avsCommunication->m_avsConnectionManager) { ACSDK_ERROR(LX("createFailed").d("reason", "nullAVSConnectionManager")); return nullptr; @@ -153,24 +165,34 @@ std::unique_ptr AVSCommunication::create() { void AVSCommunication::connect() { ASSERT_TRUE(m_authObserver->waitFor(AuthObserver::State::REFRESHED)); m_avsConnectionManager->enable(); + + /* + Cannot wait anymore for status to move to connected state + AVS could kick one the comm's out even before reaching CONNECTED + state when post-connect sends the context with its profile. ASSERT_TRUE(m_connectionStatusObserver->waitFor( ConnectionStatusObserverInterface::Status::CONNECTED)); - m_avsConnectionManager->onStateChanged(StateSynchronizerObserverInterface::State::SYNCHRONIZED); - ASSERT_TRUE(m_connectionStatusObserver->waitFor( - ConnectionStatusObserverInterface::Status::POST_CONNECTED)); + */ } void AVSCommunication::disconnect() { m_avsConnectionManager->disable(); - ASSERT_TRUE(m_connectionStatusObserver->waitFor( - ConnectionStatusObserverInterface::Status::DISCONNECTED)); + ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::DISCONNECTED)); +} + +std::shared_ptr AVSCommunication::getConnectionStatusObserver() { + return m_connectionStatusObserver; +} + +void AVSCommunication::doShutdown() { + m_avsConnectionManager->shutdown(); } bool AVSCommunication::sendEvent( - const std::string & jsonContent, - MessageRequest::Status expectedStatus, - std::chrono::seconds timeout, - std::shared_ptr attachmentReader) { + const std::string& jsonContent, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status expectedStatus, + std::chrono::seconds timeout, + std::shared_ptr attachmentReader) { auto messageRequest = std::make_shared(jsonContent, attachmentReader); m_avsConnectionManager->sendMessage(messageRequest); return messageRequest->waitFor(expectedStatus, timeout); @@ -204,6 +226,8 @@ void ServerDisconnectIntegrationTest::SetUp() { } void ServerDisconnectIntegrationTest::TearDown() { + m_firstAvsCommunication->shutdown(); + m_secondAvsCommunication->shutdown(); AlexaClientSDKInit::uninitialize(); } @@ -213,12 +237,13 @@ void ServerDisconnectIntegrationTest::TearDown() { */ TEST_F(ServerDisconnectIntegrationTest, testConnect) { m_firstAvsCommunication->connect(); - m_secondAvsCommunication->connect(); - - std::this_thread::sleep_for(std::chrono::seconds(WAIT_TIME_IN_SECONDS)); + ASSERT_TRUE(m_firstAvsCommunication->getConnectionStatusObserver()->waitFor( + ConnectionStatusObserverInterface::Status::CONNECTED)); + m_secondAvsCommunication->connect(); + ASSERT_TRUE(m_firstAvsCommunication->getConnectionStatusObserver()->waitFor( + ConnectionStatusObserverInterface::Status::PENDING)); EXPECT_TRUE(m_firstAvsCommunication->checkForServerSideDisconnect()); - EXPECT_TRUE(m_secondAvsCommunication->checkForServerSideDisconnect()); m_firstAvsCommunication->disconnect(); m_secondAvsCommunication->disconnect(); @@ -230,22 +255,25 @@ TEST_F(ServerDisconnectIntegrationTest, testConnect) { */ TEST_F(ServerDisconnectIntegrationTest, testReConnect) { m_firstAvsCommunication->connect(); - m_secondAvsCommunication->connect(); - - std::this_thread::sleep_for(std::chrono::seconds(WAIT_TIME_IN_SECONDS)); + ASSERT_TRUE(m_firstAvsCommunication->getConnectionStatusObserver()->waitFor( + ConnectionStatusObserverInterface::Status::CONNECTED)); + m_secondAvsCommunication->connect(); + ASSERT_TRUE(m_firstAvsCommunication->getConnectionStatusObserver()->waitFor( + ConnectionStatusObserverInterface::Status::PENDING)); EXPECT_TRUE(m_firstAvsCommunication->checkForServerSideDisconnect()); - EXPECT_TRUE(m_secondAvsCommunication->checkForServerSideDisconnect()); m_firstAvsCommunication->disconnect(); - m_firstAvsCommunication->connect(); - - std::this_thread::sleep_for(std::chrono::seconds(WAIT_TIME_IN_SECONDS)); - - EXPECT_TRUE(m_firstAvsCommunication->checkForServerSideDisconnect()); - EXPECT_TRUE(m_secondAvsCommunication->checkForServerSideDisconnect()); + m_secondAvsCommunication->disconnect(); + m_firstAvsCommunication->connect(); + ASSERT_TRUE(m_firstAvsCommunication->getConnectionStatusObserver()->waitFor( + ConnectionStatusObserverInterface::Status::CONNECTED)); m_firstAvsCommunication->disconnect(); + + m_secondAvsCommunication->connect(); + ASSERT_TRUE(m_secondAvsCommunication->getConnectionStatusObserver()->waitFor( + ConnectionStatusObserverInterface::Status::CONNECTED)); m_secondAvsCommunication->disconnect(); } @@ -255,29 +283,47 @@ TEST_F(ServerDisconnectIntegrationTest, testReConnect) { */ TEST_F(ServerDisconnectIntegrationTest, testSendEvent) { m_firstAvsCommunication->connect(); - m_secondAvsCommunication->connect(); + ASSERT_TRUE(m_firstAvsCommunication->getConnectionStatusObserver()->waitFor( + ConnectionStatusObserverInterface::Status::CONNECTED)); - std::this_thread::sleep_for(std::chrono::seconds(WAIT_TIME_IN_SECONDS)); + m_secondAvsCommunication->connect(); + ASSERT_TRUE(m_firstAvsCommunication->getConnectionStatusObserver()->waitFor( + ConnectionStatusObserverInterface::Status::PENDING)); + EXPECT_TRUE(m_firstAvsCommunication->checkForServerSideDisconnect()); - ASSERT_FALSE(m_firstAvsCommunication->sendEvent(SYNCHRONIZE_STATE_JSON, MessageRequest::Status::SUCCESS, - std::chrono::seconds(TIMEOUT_FOR_SEND_IN_SECONDS))); + m_firstAvsCommunication->disconnect(); + m_secondAvsCommunication->disconnect(); - EXPECT_TRUE(m_firstAvsCommunication->checkForServerSideDisconnect()); - EXPECT_TRUE(m_secondAvsCommunication->checkForServerSideDisconnect()); + m_firstAvsCommunication->connect(); + ASSERT_TRUE(m_firstAvsCommunication->getConnectionStatusObserver()->waitFor( + ConnectionStatusObserverInterface::Status::CONNECTED)); + ASSERT_TRUE(m_firstAvsCommunication->sendEvent( + SYNCHRONIZE_STATE_JSON, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT, + std::chrono::seconds(TIMEOUT_FOR_SEND_IN_SECONDS))); m_firstAvsCommunication->disconnect(); + + m_secondAvsCommunication->connect(); + ASSERT_TRUE(m_secondAvsCommunication->getConnectionStatusObserver()->waitFor( + ConnectionStatusObserverInterface::Status::CONNECTED)); + + ASSERT_TRUE(m_secondAvsCommunication->sendEvent( + SYNCHRONIZE_STATE_JSON, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS_NO_CONTENT, + std::chrono::seconds(TIMEOUT_FOR_SEND_IN_SECONDS))); m_secondAvsCommunication->disconnect(); } -}//namespace test -}//namespace integration -}//namespace alexaClientSDK -int main(int argc, char **argv) { +} // namespace test +} // namespace integration +} // namespace alexaClientSDK + +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); if (argc < 2) { - std::cerr << "USAGE: ServerDisconnectIntegrationTest " - << std::endl; + std::cerr << "USAGE: " << std::string(argv[0]) << " " << std::endl; return 1; } else { alexaClientSDK::integration::test::g_configPath = std::string(argv[1]); diff --git a/Integration/test/SpeechSynthesizerIntegrationTest.cpp b/Integration/test/SpeechSynthesizerIntegrationTest.cpp index f57c2afbcb..11a4808495 100644 --- a/Integration/test/SpeechSynthesizerIntegrationTest.cpp +++ b/Integration/test/SpeechSynthesizerIntegrationTest.cpp @@ -1,7 +1,5 @@ /* - * SpeechSynthesizerIntegrationTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -27,6 +25,7 @@ #include #include "ACL/Transport/HTTP2MessageRouter.h" +#include "ACL/Transport/PostConnectObject.h" #include "ADSL/DirectiveSequencer.h" #include "ADSL/MessageInterpreter.h" #include "AFML/FocusManager.h" @@ -36,6 +35,7 @@ #include "AVSCommon/AVS/Attachment/InProcessAttachmentWriter.h" #include "AVSCommon/AVS/BlockingPolicy.h" #include "AVSCommon/Utils/JSON/JSONUtils.h" +#include "AVSCommon/Utils/LibcurlUtils/HTTPContentFetcherFactory.h" #include "AVSCommon/SDKInterfaces/DirectiveHandlerInterface.h" #include "AVSCommon/SDKInterfaces/DirectiveHandlerResultInterface.h" #include "AVSCommon/AVS/Initialization/AlexaClientSDKInit.h" @@ -80,13 +80,13 @@ using namespace afml; using namespace mediaPlayer; #endif - /** * This string specifies a Recognize event using the specified profile. * * CLOSE_TALK performs end-of-speech detection on the client, so no directive is sent from AVS to stop recording. * NEAR_FIELD performs end-of-speech detection in AVS, so a directive is sent from AVS to stop recording. */ +// clang-format off #define RECOGNIZE_EVENT_JSON(PROFILE, DIALOG_REQUEST_ID ) \ "{" \ "\"event\":{" \ @@ -144,7 +144,7 @@ using namespace mediaPlayer; "}" \ "}]" \ "}" - +// clang-format on // This is a 16 bit 16 kHz little endian linear PCM audio file of "Joke" to be recognized. static const std::string RECOGNIZE_JOKE_AUDIO_FILE_NAME = "/recognize_joke_test.wav"; @@ -251,8 +251,7 @@ class TestClient : public ChannelObserverInterface { /** * Constructor. */ - TestClient() : - m_focusState(FocusState::NONE) { + TestClient() : m_focusState(FocusState::NONE) { } /** @@ -305,9 +304,7 @@ class TestClient : public ChannelObserverInterface { class SpeechSynthesizerTest : public ::testing::Test { protected: - virtual void SetUp() override { - std::ifstream infile(configPath); ASSERT_TRUE(infile.good()); ASSERT_TRUE(AlexaClientSDKInit::initialize({&infile})); @@ -315,12 +312,13 @@ class SpeechSynthesizerTest : public ::testing::Test { m_authDelegate = AuthDelegate::create(); m_authDelegate->addAuthObserver(m_authObserver); m_attachmentManager = std::make_shared( - AttachmentManager::AttachmentType::IN_PROCESS); + AttachmentManager::AttachmentType::IN_PROCESS); m_connectionStatusObserver = std::make_shared(); m_clientMessageHandler = std::make_shared(m_attachmentManager); bool isEnabled = false; m_messageRouter = std::make_shared(m_authDelegate, m_attachmentManager); m_exceptionEncounteredSender = std::make_shared(); + m_dialogUXStateAggregator = std::make_shared(); DirectiveHandlerConfiguration config; config[SET_MUTE_PAIR] = BlockingPolicy::BLOCKING; @@ -330,44 +328,43 @@ class SpeechSynthesizerTest : public ::testing::Test { m_directiveSequencer = DirectiveSequencer::create(m_exceptionEncounteredSender); m_messageInterpreter = std::make_shared( - m_exceptionEncounteredSender, - m_directiveSequencer, - m_attachmentManager); + m_exceptionEncounteredSender, m_directiveSequencer, m_attachmentManager); + + m_contextManager = ContextManager::create(); + ASSERT_NE(nullptr, m_contextManager); + PostConnectObject::init(m_contextManager); // Set up connection and connect m_avsConnectionManager = std::make_shared( - m_messageRouter, - isEnabled, - m_connectionStatusObserver, - m_messageInterpreter); - ASSERT_NE (nullptr, m_avsConnectionManager); + m_messageRouter, isEnabled, m_connectionStatusObserver, m_messageInterpreter); + ASSERT_NE(nullptr, m_avsConnectionManager); connect(); - m_focusManager = std::make_shared(); + m_focusManager = std::make_shared(FocusManager::DEFAULT_AUDIO_CHANNELS); m_testClient = std::make_shared(); - ASSERT_TRUE(m_focusManager->acquireChannel(FocusManager::ALERTS_CHANNEL_NAME, m_testClient, ALERTS_ACTIVITY_ID)); + ASSERT_TRUE( + m_focusManager->acquireChannel(FocusManager::ALERTS_CHANNEL_NAME, m_testClient, ALERTS_ACTIVITY_ID)); ASSERT_EQ(m_testClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION), FocusState::FOREGROUND); - m_contextManager = ContextManager::create(); - ASSERT_NE (nullptr, m_contextManager); - #ifdef GSTREAMER_MEDIA_PLAYER - m_mediaPlayer = MediaPlayer::create(); + m_mediaPlayer = + MediaPlayer::create(std::make_shared()); #else m_mediaPlayer = std::make_shared(); #endif // Create and register the SpeechSynthesizer. m_speechSynthesizer = SpeechSynthesizer::create( - m_mediaPlayer, - m_avsConnectionManager, - m_focusManager, - m_contextManager, - m_attachmentManager, - m_exceptionEncounteredSender); + m_mediaPlayer, + m_avsConnectionManager, + m_focusManager, + m_contextManager, + m_exceptionEncounteredSender, + m_dialogUXStateAggregator); m_directiveSequencer->addDirectiveHandler(m_speechSynthesizer); m_speechSynthesizerObserver = std::make_shared(); m_speechSynthesizer->addObserver(m_speechSynthesizerObserver); + m_speechSynthesizer->addObserver(m_dialogUXStateAggregator); ASSERT_TRUE(m_directiveSequencer->addDirectiveHandler(m_directiveHandler)); } @@ -379,10 +376,11 @@ class SpeechSynthesizerTest : public ::testing::Test { * @param expectStatus The status to expect from the call to send the message. * @param timeout How long to wait for a result from delivering the message. */ - void sendEvent(const std::string & jsonContent, - std::shared_ptr attachmentReader, - MessageRequest::Status expectedStatus, - std::chrono::seconds timeout) { + void sendEvent( + const std::string& jsonContent, + std::shared_ptr attachmentReader, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status expectedStatus, + std::chrono::seconds timeout) { auto messageRequest = std::make_shared(jsonContent, attachmentReader); m_avsConnectionManager->sendMessage(messageRequest); ASSERT_TRUE(messageRequest->waitFor(expectedStatus, timeout)); @@ -396,9 +394,9 @@ class SpeechSynthesizerTest : public ::testing::Test { * @param timeout How long to wait for a result from delivering the message. */ void setupMessageAndSend( - const std::string& json, - avsCommon::avs::MessageRequest::Status expectedStatus, - std::chrono::seconds timeout) { + const std::string& json, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status expectedStatus, + std::chrono::seconds timeout) { sendEvent(json, nullptr, expectedStatus, timeout); } @@ -411,11 +409,10 @@ class SpeechSynthesizerTest : public ::testing::Test { * @param timeout How long to wait for a result from delivering the message. */ void setupMessageWithAttachmentAndSend( - const std::string& json, - std::string& file, - avsCommon::avs::MessageRequest::Status expectedStatus, - std::chrono::seconds timeout) { - + const std::string& json, + std::string& file, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status expectedStatus, + std::chrono::seconds timeout) { auto is = std::make_shared(file, std::ios::binary); ASSERT_TRUE(is->is_open()); @@ -436,15 +433,16 @@ class SpeechSynthesizerTest : public ::testing::Test { attachmentWriter->write(localBuffer.data(), numBytesRead, &writeStatus); // write status should be either OK or CLOSED - bool writeStatusOk = (AttachmentWriter::WriteStatus::OK == writeStatus || - AttachmentWriter::WriteStatus::CLOSED == writeStatus); + bool writeStatusOk = + (AttachmentWriter::WriteStatus::OK == writeStatus || + AttachmentWriter::WriteStatus::CLOSED == writeStatus); ASSERT_TRUE(writeStatusOk); } attachmentWriter->close(); std::shared_ptr attachmentReader = - InProcessAttachmentReader::create(AttachmentReader::Policy::NON_BLOCKING, sds); + InProcessAttachmentReader::create(ReaderPolicy::NONBLOCKING, sds); ASSERT_NE(attachmentReader, nullptr); sendEvent(json, attachmentReader, expectedStatus, std::chrono::seconds(timeout)); @@ -459,16 +457,17 @@ class SpeechSynthesizerTest : public ::testing::Test { */ FocusState waitForFocusChange(std::chrono::milliseconds timeout) { std::unique_lock lock(m_mutex); - m_focusChanged.wait_for(lock, timeout, [this] () { - return m_focusChangeOccurred; - }); + m_focusChanged.wait_for(lock, timeout, [this]() { return m_focusChangeOccurred; }); return m_focusState; } void TearDown() override { disconnect(); + m_speechSynthesizer->removeObserver(m_dialogUXStateAggregator); + m_speechSynthesizer->shutdown(); m_directiveSequencer->shutdown(); + m_avsConnectionManager->shutdown(); AlexaClientSDKInit::uninitialize(); } @@ -476,14 +475,10 @@ class SpeechSynthesizerTest : public ::testing::Test { * Connect to AVS. */ void connect() { - ASSERT_TRUE(m_authObserver->waitFor(AuthObserver::State::REFRESHED)) - << "Retrieving the auth token timed out."; + ASSERT_TRUE(m_authObserver->waitFor(AuthObserver::State::REFRESHED)) << "Retrieving the auth token timed out."; m_avsConnectionManager->enable(); ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::CONNECTED)) - << "Connecting timed out."; - m_avsConnectionManager->synchronize(); - ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::POST_CONNECTED)) - << "Post connecting timed out."; + << "Connecting timed out."; } /** @@ -492,7 +487,7 @@ class SpeechSynthesizerTest : public ::testing::Test { void disconnect() { m_avsConnectionManager->disable(); ASSERT_TRUE(m_connectionStatusObserver->waitFor(ConnectionStatusObserverInterface::Status::DISCONNECTED)) - << "Connecting timed out."; + << "Connecting timed out."; } bool checkSentEventName(TestMessageSender::SendParams sendParams, std::string expectedName) { @@ -500,9 +495,9 @@ class SpeechSynthesizerTest : public ::testing::Test { std::string eventString; std::string eventHeader; std::string eventName; - jsonUtils::lookupStringValue(sendParams.request->getJsonContent(), JSON_MESSAGE_EVENT_KEY, &eventString); - jsonUtils::lookupStringValue(eventString, JSON_MESSAGE_HEADER_KEY, &eventHeader); - jsonUtils::lookupStringValue(eventHeader, JSON_MESSAGE_NAME_KEY, &eventName); + jsonUtils::retrieveValue(sendParams.request->getJsonContent(), JSON_MESSAGE_EVENT_KEY, &eventString); + jsonUtils::retrieveValue(eventString, JSON_MESSAGE_HEADER_KEY, &eventHeader); + jsonUtils::retrieveValue(eventHeader, JSON_MESSAGE_NAME_KEY, &eventName); return eventName == expectedName; } return false; @@ -520,6 +515,7 @@ class SpeechSynthesizerTest : public ::testing::Test { std::shared_ptr m_contextManager; std::shared_ptr m_speechSynthesizerObserver; std::shared_ptr m_speechSynthesizer; + std::shared_ptr m_dialogUXStateAggregator; std::shared_ptr m_attachmentManager; std::shared_ptr m_clientMessageHandler; std::shared_ptr m_focusManager; @@ -534,11 +530,8 @@ class SpeechSynthesizerTest : public ::testing::Test { #else std::shared_ptr m_mediaPlayer; #endif - }; - - /** * Test ability for the SpeechSynthesizer to handle one Speak directive. * @@ -547,9 +540,10 @@ class SpeechSynthesizerTest : public ::testing::Test { * */ TEST_F(SpeechSynthesizerTest, handleOneSpeech) { - // SpeechSynthesizerObserver defaults to a FINISHED state. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // SpeechSynthesizerObserverInterface defaults to a FINISHED state. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // Send audio of "Joke" that will prompt SetMute and Speak. m_directiveSequencer->setDialogRequestId(FIRST_DIALOG_REQUEST_ID); @@ -557,7 +551,7 @@ TEST_F(SpeechSynthesizerTest, handleOneSpeech) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); TestMessageSender::SendParams sendRecognizeParams = m_avsConnectionManager->waitForNext(DIRECTIVE_TIMEOUT_DURATION); @@ -572,20 +566,26 @@ TEST_F(SpeechSynthesizerTest, handleOneSpeech) { // Unblock the queue so SpeechSynthesizer can do its work. params.result->setCompleted(); - // SpeechSynthesizer is now playing. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING); + // SpeechSynthesizer is now playing. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::GAINING_FOCUS); - //Check that SS grabs the channel focus by seeing that the test client has been backgrounded. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING); + + // Check that SS grabs the channel focus by seeing that the test client has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION), FocusState::BACKGROUND); // SpeechStarted was sent. TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(DIRECTIVE_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); - // Media Player has finished. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // Media Player has finished. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // SpeechFinished is sent here. TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -598,15 +598,16 @@ TEST_F(SpeechSynthesizerTest, handleOneSpeech) { /** * Test ability for the SpeechSynthesizer to handle multiple consecutive Speak directives. * - * This test is intended to test the SpeechSynthesizer's ability to receive multiple directives, play each using a MediaPlayer - * then return to a finished state and notify the DirectiveSequencer that the directive was handled. This is done by sending a - * Recognize event to AVS with audio of "What's up?" which returns four sets of SetMute and Speak. + * This test is intended to test the SpeechSynthesizer's ability to receive multiple directives, play each using a + * MediaPlayer then return to a finished state and notify the DirectiveSequencer that the directive was handled. This is + * done by sending a Recognize event to AVS with audio of "What's up?" which returns four sets of SetMute and Speak. * */ TEST_F(SpeechSynthesizerTest, handleMultipleConsecutiveSpeaks) { - // SpeechSynthesizerObserver defaults to a FINISHED state. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // SpeechSynthesizerObserverInterface defaults to a FINISHED state. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // Send audio of "What's up" that will prompt four sets of SetMute and Speak. m_directiveSequencer->setDialogRequestId(FIRST_DIALOG_REQUEST_ID); @@ -614,7 +615,7 @@ TEST_F(SpeechSynthesizerTest, handleMultipleConsecutiveSpeaks) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); TestMessageSender::SendParams sendRecognizeParams = m_avsConnectionManager->waitForNext(DIRECTIVE_TIMEOUT_DURATION); @@ -629,23 +630,31 @@ TEST_F(SpeechSynthesizerTest, handleMultipleConsecutiveSpeaks) { } params.result->setCompleted(); - // SpeechSynthesizer is now speaking. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING); + // SpeechSynthesizer is now speaking. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::GAINING_FOCUS); + + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING); // Check that SS grabs the channel focus by seeing that the test client has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION), FocusState::BACKGROUND); // SpeechStarted has sent. - TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(DIRECTIVE_TIMEOUT_DURATION); + TestMessageSender::SendParams sendStartedParams = + m_avsConnectionManager->waitForNext(DIRECTIVE_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); // Media Player has finished. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_MEDIA_PLAYER_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_MEDIA_PLAYER_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // SpeechFinished was sent. - TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); + TestMessageSender::SendParams sendFinishedParams = + m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendFinishedParams, NAME_SPEECH_FINISHED)); // Alerts channel regains the foreground. @@ -662,9 +671,10 @@ TEST_F(SpeechSynthesizerTest, handleMultipleConsecutiveSpeaks) { * */ TEST_F(SpeechSynthesizerTest, bargeInOnOneSpeech) { - // SpeechSynthesizerObserver defaults to a FINISHED state. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // SpeechSynthesizerObserverInterface defaults to a FINISHED state. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // Send audio of "Joke" that will prompt SetMute and Speak. m_directiveSequencer->setDialogRequestId(FIRST_DIALOG_REQUEST_ID); @@ -672,7 +682,7 @@ TEST_F(SpeechSynthesizerTest, bargeInOnOneSpeech) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); TestMessageSender::SendParams sendRecognizeParams = m_avsConnectionManager->waitForNext(DIRECTIVE_TIMEOUT_DURATION); @@ -687,9 +697,14 @@ TEST_F(SpeechSynthesizerTest, bargeInOnOneSpeech) { // Unblock the queue so SpeechSynthesizer can do its work. params.result->setCompleted(); - // SpeechSynthesizer is now speaking. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING); + // SpeechSynthesizer is now speaking. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::GAINING_FOCUS); + + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING); // Change the dialogRequestID to cancel the queued directives. m_directiveSequencer->setDialogRequestId(SECOND_DIALOG_REQUEST_ID); @@ -702,8 +717,9 @@ TEST_F(SpeechSynthesizerTest, bargeInOnOneSpeech) { ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); // SpeechSynthesizer has finished. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // No SpeechFinished was sent. TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -716,16 +732,17 @@ TEST_F(SpeechSynthesizerTest, bargeInOnOneSpeech) { /** * Test ability for the SpeechSynthesizer to handle a barge in at the begining of consucutive speaks. * - * This test is intended to test the SpeechSynthesizer's ability to receive multiple directives, play each using a MediaPlayer - * then return to a finished state and notify the DirectiveSequencer that the directive was handled. This is done by sending a - * Recognize event to AVS with audio of "What's up?" which returns four sets of SetMute and Speak. Once the first Speak reaches - * the SpeechSynthesizer, the dialogRequestID is changed and all directives are cancelled. + * This test is intended to test the SpeechSynthesizer's ability to receive multiple directives, play each using a + * MediaPlayer then return to a finished state and notify the DirectiveSequencer that the directive was handled. This is + * done by sending a Recognize event to AVS with audio of "What's up?" which returns four sets of SetMute and Speak. + * Once the first Speak reaches the SpeechSynthesizer, the dialogRequestID is changed and all directives are cancelled. * */ TEST_F(SpeechSynthesizerTest, bargeInOnMultipleSpeaksAtTheBeginning) { - // SpeechSynthesizerObserver defaults to a FINISHED state. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // SpeechSynthesizerObserverInterface defaults to a FINISHED state. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // Send audio of "What's Up" that will prompt four sets of SetMute and Speak. m_directiveSequencer->setDialogRequestId(FIRST_DIALOG_REQUEST_ID); @@ -733,7 +750,7 @@ TEST_F(SpeechSynthesizerTest, bargeInOnMultipleSpeaksAtTheBeginning) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); TestMessageSender::SendParams sendRecognizeParams = m_avsConnectionManager->waitForNext(DIRECTIVE_TIMEOUT_DURATION); @@ -752,26 +769,28 @@ TEST_F(SpeechSynthesizerTest, bargeInOnMultipleSpeaksAtTheBeginning) { } params = m_directiveHandler->waitForNext(WAIT_FOR_TIMEOUT_DURATION); } - - // SpeechSynthesizer is still finished. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WANTING_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + + // SpeechSynthesizer is still finished. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WANTING_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // Check that the test client is still in the foreground. ASSERT_EQ(m_testClient->waitForFocusChange(WANTING_TIMEOUT_DURATION), FocusState::FOREGROUND); - // SpeechStarted is not sent. - TestMessageSender::SendParams canceledSendStartedParams = m_avsConnectionManager->waitForNext( - WANTING_TIMEOUT_DURATION); + // SpeechStarted is not sent. + TestMessageSender::SendParams canceledSendStartedParams = + m_avsConnectionManager->waitForNext(WANTING_TIMEOUT_DURATION); ASSERT_FALSE(checkSentEventName(canceledSendStartedParams, NAME_SPEECH_STARTED)); // Media Player has not changed. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WANTING_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WANTING_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // SpeechFinished is not sent. - TestMessageSender::SendParams canceledSendFinishedParams = m_avsConnectionManager->waitForNext( - WANTING_TIMEOUT_DURATION); + TestMessageSender::SendParams canceledSendFinishedParams = + m_avsConnectionManager->waitForNext(WANTING_TIMEOUT_DURATION); ASSERT_FALSE(checkSentEventName(canceledSendFinishedParams, NAME_SPEECH_FINISHED)); // Alerts channel regains the foreground. @@ -781,16 +800,17 @@ TEST_F(SpeechSynthesizerTest, bargeInOnMultipleSpeaksAtTheBeginning) { /** * Test ability for the SpeechSynthesizer to handle a barge in in the middle of consucutive speaks. * - * This test is intended to test the SpeechSynthesizer's ability to receive multiple directives, play each using a MediaPlayer - * then return to a finished state and notify the DirectiveSequencer that the directive was handled. This is done by sending a - * Recognize event to AVS with audio of "What's up?" which returns four sets of SetMute and Speak. While the Speak directives are - * being handled, the dialogRequestID is changed and all directives are cancelled. + * This test is intended to test the SpeechSynthesizer's ability to receive multiple directives, play each using a + * MediaPlayer then return to a finished state and notify the DirectiveSequencer that the directive was handled. This is + * done by sending a Recognize event to AVS with audio of "What's up?" which returns four sets of SetMute and Speak. + * While the Speak directives are being handled, the dialogRequestID is changed and all directives are cancelled. * */ TEST_F(SpeechSynthesizerTest, bargeInOnMultipleSpeaksInTheMiddle) { - // SpeechSynthesizerObserver defaults to a FINISHED state. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // SpeechSynthesizerObserverInterface defaults to a FINISHED state. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // Send audio of "What's up" that will prompt four sets of SetMute and Speak. m_directiveSequencer->setDialogRequestId(FIRST_DIALOG_REQUEST_ID); @@ -798,11 +818,10 @@ TEST_F(SpeechSynthesizerTest, bargeInOnMultipleSpeaksInTheMiddle) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); - TestMessageSender::SendParams sendRecognizeParams = m_avsConnectionManager->waitForNext( - DIRECTIVE_TIMEOUT_DURATION); + TestMessageSender::SendParams sendRecognizeParams = m_avsConnectionManager->waitForNext(DIRECTIVE_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendRecognizeParams, NAME_RECOGNIZE)); // Wait for the directive to route through to our handler. @@ -819,10 +838,15 @@ TEST_F(SpeechSynthesizerTest, bargeInOnMultipleSpeaksInTheMiddle) { // Unblock the queue so SS can do its work. params.result->setCompleted(); - - // SpeechSynthesizer is now speaking. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING); + + // SpeechSynthesizer is now speaking. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::GAINING_FOCUS); + + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING); // Check that SS grabs the channel focus by seeing that the test client has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION), FocusState::BACKGROUND); @@ -831,9 +855,10 @@ TEST_F(SpeechSynthesizerTest, bargeInOnMultipleSpeaksInTheMiddle) { TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(DIRECTIVE_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); - // Media Player has finished. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // Media Player has finished. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // SpeechFinished is sent here. TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -853,24 +878,27 @@ TEST_F(SpeechSynthesizerTest, bargeInOnMultipleSpeaksInTheMiddle) { params = m_directiveHandler->waitForNext(WAIT_FOR_TIMEOUT_DURATION); } - // SpeechSynthesizer is still finished. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WANTING_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // SpeechSynthesizer is still finished. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WANTING_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // Check that the test client is still in the foreground. ASSERT_EQ(m_testClient->waitForFocusChange(WANTING_TIMEOUT_DURATION), FocusState::FOREGROUND); - // SpeechStarted is not sent. - TestMessageSender::SendParams canceledSendStartedParams = m_avsConnectionManager->waitForNext( - WANTING_TIMEOUT_DURATION); + // SpeechStarted is not sent. + TestMessageSender::SendParams canceledSendStartedParams = + m_avsConnectionManager->waitForNext(WANTING_TIMEOUT_DURATION); ASSERT_FALSE(checkSentEventName(canceledSendStartedParams, NAME_SPEECH_STARTED)); // Media Player has not changed. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WANTING_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WANTING_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // SpeechFinished is not sent. - TestMessageSender::SendParams canceledSendFinishedParams = m_avsConnectionManager->waitForNext(WANTING_TIMEOUT_DURATION); + TestMessageSender::SendParams canceledSendFinishedParams = + m_avsConnectionManager->waitForNext(WANTING_TIMEOUT_DURATION); ASSERT_FALSE(checkSentEventName(canceledSendFinishedParams, NAME_SPEECH_FINISHED)); // Alerts channel regains the foreground. @@ -881,13 +909,14 @@ TEST_F(SpeechSynthesizerTest, bargeInOnMultipleSpeaksInTheMiddle) { * Test ability for the SpeechSynthesizer to handle a Multiturn scenario. * * This test is intended to test the SpeechSynthesizer's ability to receive one directive, play it using a MediaPlayer - * then return to a finished state. Another recognize event is then sent to AVS is response to the ExpectSpeech directive - * which prompts another Speak directive to be handled. + * then return to a finished state. Another recognize event is then sent to AVS is response to the ExpectSpeech + * directive which prompts another Speak directive to be handled. */ TEST_F(SpeechSynthesizerTest, multiturnScenario) { - // SpeechSynthesizerObserver defaults to a FINISHED state. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // SpeechSynthesizerObserverInterface defaults to a FINISHED state. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // Send audio of "Wikipedia" that will prompt SetMute, Speak, and ExpectSpeech. m_directiveSequencer->setDialogRequestId(FIRST_DIALOG_REQUEST_ID); @@ -895,7 +924,7 @@ TEST_F(SpeechSynthesizerTest, multiturnScenario) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); TestMessageSender::SendParams sendRecognizeParams = m_avsConnectionManager->waitForNext(DIRECTIVE_TIMEOUT_DURATION); @@ -909,11 +938,16 @@ TEST_F(SpeechSynthesizerTest, multiturnScenario) { } params.result->setCompleted(); - // SpeechSynthesizer is now speaking. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING); + // SpeechSynthesizer is now speaking. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::GAINING_FOCUS); + + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING); - //Check that SS grabs the channel focus by seeing that the test client has been backgrounded. + // Check that SS grabs the channel focus by seeing that the test client has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION), FocusState::BACKGROUND); // SpeechStarted is sent. @@ -921,8 +955,9 @@ TEST_F(SpeechSynthesizerTest, multiturnScenario) { ASSERT_TRUE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); // Media Player has finished. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // SpeechFinished is sent here. TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -931,7 +966,7 @@ TEST_F(SpeechSynthesizerTest, multiturnScenario) { // Alerts channel regains the foreground. ASSERT_EQ(m_testClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION), FocusState::FOREGROUND); - params = m_directiveHandler->waitForNext(WAIT_FOR_TIMEOUT_DURATION); + params = m_directiveHandler->waitForNext(WAIT_FOR_TIMEOUT_DURATION); bool expectSpeechFound = false; while (params.type != TestDirectiveHandler::DirectiveParams::Type::TIMEOUT) { if (params.type == TestDirectiveHandler::DirectiveParams::Type::HANDLE) { @@ -951,11 +986,11 @@ TEST_F(SpeechSynthesizerTest, multiturnScenario) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, secondFile, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); - TestMessageSender::SendParams secondSendRecognizeParams = m_avsConnectionManager->waitForNext( - DIRECTIVE_TIMEOUT_DURATION); + TestMessageSender::SendParams secondSendRecognizeParams = + m_avsConnectionManager->waitForNext(DIRECTIVE_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(secondSendRecognizeParams, NAME_RECOGNIZE)); params = m_directiveHandler->waitForNext(WAIT_FOR_TIMEOUT_DURATION); @@ -967,25 +1002,31 @@ TEST_F(SpeechSynthesizerTest, multiturnScenario) { params = m_directiveHandler->waitForNext(WAIT_FOR_TIMEOUT_DURATION); } - // SpeechSynthesizer is now speaking. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::PLAYING); + // SpeechSynthesizer is now speaking. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::GAINING_FOCUS); + + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::PLAYING); // Check that SS grabs the channel focus by seeing that the test client has been backgrounded. ASSERT_EQ(m_testClient->waitForFocusChange(WAIT_FOR_TIMEOUT_DURATION), FocusState::BACKGROUND); - // SpeechStarted is sent. - TestMessageSender::SendParams secondSendStartedParams = m_avsConnectionManager->waitForNext( - DIRECTIVE_TIMEOUT_DURATION); + // SpeechStarted is sent. + TestMessageSender::SendParams secondSendStartedParams = + m_avsConnectionManager->waitForNext(DIRECTIVE_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(secondSendStartedParams, NAME_SPEECH_STARTED)); - // Media Player has finished. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // Media Player has finished. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // SpeechFinished is sent here. - TestMessageSender::SendParams secondSendFinishedParams = m_avsConnectionManager->waitForNext( - WAIT_FOR_TIMEOUT_DURATION); + TestMessageSender::SendParams secondSendFinishedParams = + m_avsConnectionManager->waitForNext(WAIT_FOR_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(secondSendFinishedParams, NAME_SPEECH_FINISHED)); // Alerts channel regains the foreground. @@ -999,9 +1040,10 @@ TEST_F(SpeechSynthesizerTest, multiturnScenario) { * Recognize event with audio of "Volume up" is sent to AVS to prompt a AdjustVolume directive but no Speak directives. */ TEST_F(SpeechSynthesizerTest, handleNoSpeakDirectives) { - // SpeechSynthesizerObserver defaults to a FINISHED state. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // SpeechSynthesizerObserverInterface defaults to a FINISHED state. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // Send audio of "Volume up" that will prompt an adjustVolume directive. m_directiveSequencer->setDialogRequestId(FIRST_DIALOG_REQUEST_ID); @@ -1009,11 +1051,10 @@ TEST_F(SpeechSynthesizerTest, handleNoSpeakDirectives) { setupMessageWithAttachmentAndSend( CT_FIRST_RECOGNIZE_EVENT_JSON, file, - avsCommon::avs::MessageRequest::Status::SUCCESS, + avsCommon::sdkInterfaces::MessageRequestObserverInterface::Status::SUCCESS, SEND_EVENT_TIMEOUT_DURATION); - TestMessageSender::SendParams sendRecognizeParams = m_avsConnectionManager->waitForNext( - DIRECTIVE_TIMEOUT_DURATION); + TestMessageSender::SendParams sendRecognizeParams = m_avsConnectionManager->waitForNext(DIRECTIVE_TIMEOUT_DURATION); ASSERT_TRUE(checkSentEventName(sendRecognizeParams, NAME_RECOGNIZE)); // Wait for the directive to route through to our handler. @@ -1026,9 +1067,10 @@ TEST_F(SpeechSynthesizerTest, handleNoSpeakDirectives) { // Unblock the queue so SS can do its work. params.result->setCompleted(); - // SpeechSynthesizer just defaults to Playing state. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WANTING_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // SpeechSynthesizer just defaults to Playing state. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WANTING_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // Check that the test client is still in the foreground. ASSERT_EQ(m_testClient->waitForFocusChange(WANTING_TIMEOUT_DURATION), FocusState::FOREGROUND); @@ -1037,9 +1079,10 @@ TEST_F(SpeechSynthesizerTest, handleNoSpeakDirectives) { TestMessageSender::SendParams sendStartedParams = m_avsConnectionManager->waitForNext(WANTING_TIMEOUT_DURATION); ASSERT_FALSE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); - //Media Player has not changed. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WANTING_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // Media Player has not changed. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WANTING_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // SpeechFinished is not sent. TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WANTING_TIMEOUT_DURATION); @@ -1056,9 +1099,10 @@ TEST_F(SpeechSynthesizerTest, handleNoSpeakDirectives) { * Recognize events are sent to trigger any directives. */ TEST_F(SpeechSynthesizerTest, handleNoDirectives) { - // SpeechSynthesizerObserver defaults to a FINISHED state. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WAIT_FOR_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // SpeechSynthesizerObserverInterface defaults to a FINISHED state. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WAIT_FOR_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); TestMessageSender::SendParams sendRecognizeParams = m_avsConnectionManager->waitForNext(WANTING_TIMEOUT_DURATION); ASSERT_FALSE(checkSentEventName(sendRecognizeParams, NAME_RECOGNIZE)); @@ -1067,9 +1111,10 @@ TEST_F(SpeechSynthesizerTest, handleNoDirectives) { TestDirectiveHandler::DirectiveParams params = m_directiveHandler->waitForNext(WANTING_TIMEOUT_DURATION); ASSERT_EQ(params.type, TestDirectiveHandler::DirectiveParams::Type::TIMEOUT); - // SpeechSynthesizer defaults to Finished state. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WANTING_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + // SpeechSynthesizer defaults to Finished state. + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WANTING_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // Check that the test client is still in the foreground. ASSERT_EQ(m_testClient->waitForFocusChange(WANTING_TIMEOUT_DURATION), FocusState::FOREGROUND); @@ -1079,8 +1124,9 @@ TEST_F(SpeechSynthesizerTest, handleNoDirectives) { ASSERT_FALSE(checkSentEventName(sendStartedParams, NAME_SPEECH_STARTED)); // Media Player has not changed. - ASSERT_EQ(m_speechSynthesizerObserver->waitForNext( - WANTING_TIMEOUT_DURATION), SpeechSynthesizerObserver::SpeechSynthesizerState::FINISHED); + ASSERT_EQ( + m_speechSynthesizerObserver->waitForNext(WANTING_TIMEOUT_DURATION), + SpeechSynthesizerObserverInterface::SpeechSynthesizerState::FINISHED); // SpeechFinished is not sent. TestMessageSender::SendParams sendFinishedParams = m_avsConnectionManager->waitForNext(WANTING_TIMEOUT_DURATION); @@ -1090,15 +1136,15 @@ TEST_F(SpeechSynthesizerTest, handleNoDirectives) { ASSERT_EQ(m_testClient->waitForFocusChange(WANTING_TIMEOUT_DURATION), FocusState::FOREGROUND); } -} // namespace test -} // namespace integration -} // namespace alexaClientSDK +} // namespace test +} // namespace integration +} // namespace alexaClientSDK -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); if (argc < 3) { - std::cerr << "USAGE: SpeechSynthesizerIntegration " - << std::endl; + std::cerr << "USAGE: " << std::string(argv[0]) << " " + << std::endl; return 1; } else { @@ -1107,5 +1153,3 @@ int main(int argc, char **argv) { return RUN_ALL_TESTS(); } } - - diff --git a/KWD/CMakeLists.txt b/KWD/CMakeLists.txt index 3e49fce7e5..4d5e16e20e 100644 --- a/KWD/CMakeLists.txt +++ b/KWD/CMakeLists.txt @@ -2,11 +2,14 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR) project(KWD LANGUAGES CXX) add_subdirectory("src") -add_subdirectory("test") +acsdk_add_test_subdirectory_if_allowed() if(AMAZON_KEY_WORD_DETECTOR) add_subdirectory("Amazon") endif() +if(AMAZONLITE_KEY_WORD_DETECTOR) + add_subdirectory("AmazonLite") +endif() if(KITTAI_KEY_WORD_DETECTOR) add_subdirectory("KittAi") endif() diff --git a/KWD/KittAi/CMakeLists.txt b/KWD/KittAi/CMakeLists.txt index 9c9d844cbb..b45aec5f58 100644 --- a/KWD/KittAi/CMakeLists.txt +++ b/KWD/KittAi/CMakeLists.txt @@ -4,4 +4,4 @@ project(KITTAI LANGUAGES CXX) include(../../build/BuildDefaults.cmake) add_subdirectory("src") -add_subdirectory("test") +acsdk_add_test_subdirectory_if_allowed() diff --git a/KWD/KittAi/include/KittAi/KittAiKeyWordDetector.h b/KWD/KittAi/include/KittAi/KittAiKeyWordDetector.h index 5940704b27..add8873005 100644 --- a/KWD/KittAi/include/KittAi/KittAiKeyWordDetector.h +++ b/KWD/KittAi/include/KittAi/KittAiKeyWordDetector.h @@ -1,7 +1,5 @@ /* - * KittAiWakeWordDetector.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_KWD_KITT_AI_INCLUDE_KWD_KITT_AI_KEY_WORD_DETECTOR_H_ -#define ALEXA_CLIENT_SDK_KWD_KITT_AI_INCLUDE_KWD_KITT_AI_KEY_WORD_DETECTOR_H_ +#ifndef ALEXA_CLIENT_SDK_KWD_KITTAI_INCLUDE_KITTAI_KITTAIKEYWORDDETECTOR_H_ +#define ALEXA_CLIENT_SDK_KWD_KITTAI_INCLUDE_KITTAI_KITTAIKEYWORDDETECTOR_H_ #include #include @@ -49,7 +47,7 @@ class KittAiKeyWordDetector : public AbstractKeywordDetector { /** * The sensitivity that the user wishes to be associated with the keyword. This should be a value between 0 and - * 1. The higher this is, the more keyword detections will occur. However, more false alarms might also occur + * 1. The higher this is, the more keyword detections will occur. However, more false alarms might also occur * more frequently. @see https://github.com/Kitt-AI/snowboy for more information regarding this. */ double sensitivity; @@ -66,7 +64,7 @@ class KittAiKeyWordDetector : public AbstractKeywordDetector { * @param resourceFilePath The path to the resource file. * @param kittAiConfigurations A vector of @c KittAiConfiguration objects that will be used to initialize the * engine and keywords. - * @param audioGain This controls whether to increase (>1) or decrease (<1) input volume. + * @param audioGain This controls whether to increase (>1) or decrease (<1) input volume. * @param applyFrontEnd Whether to apply frontend audio processing. * @param msToPushPerIteration The amount of data in milliseconds to push to Kitt.ai at a time. Smaller sizes will * lead to less delay but more CPU usage. Additionally, larger amounts of data fed into the engine per iteration @@ -76,17 +74,17 @@ class KittAiKeyWordDetector : public AbstractKeywordDetector { * @see https://github.com/Kitt-AI/snowboy for more information regarding @c audioGain and @c applyFrontEnd. */ static std::unique_ptr create( - std::shared_ptr stream, - avsCommon::utils::AudioFormat audioFormat, - std::unordered_set> keyWordObservers, - std::unordered_set> - keyWordDetectorStateObservers, - const std::string& resourceFilePath, - const std::vector kittAiConfigurations, - float audioGain, - bool applyFrontEnd, - std::chrono::milliseconds msToPushPerIteration = std::chrono::milliseconds(20)); - + std::shared_ptr stream, + avsCommon::utils::AudioFormat audioFormat, + std::unordered_set> keyWordObservers, + std::unordered_set> + keyWordDetectorStateObservers, + const std::string& resourceFilePath, + const std::vector kittAiConfigurations, + float audioGain, + bool applyFrontEnd, + std::chrono::milliseconds msToPushPerIteration = std::chrono::milliseconds(20)); + /** * Destructor. */ @@ -108,24 +106,24 @@ class KittAiKeyWordDetector : public AbstractKeywordDetector { * @param applyFrontEnd Whether to apply frontend audio processing. * @param msToPushPerIteration The amount of data in milliseconds to push to Kitt.ai at a time. Smaller sizes will * lead to less delay but more CPU usage. Additionally, larger amounts of data fed into the engine per iteration - * might lead longer delays before receiving keyword detection events. This has been defaulted to 20 milliseconds + * might lead longer delays before receiving keyword detection events. This has been defaulted to 20 milliseconds * as it is a good trade off between CPU usage and recognition delay. * @see https://github.com/Kitt-AI/snowboy for more information regarding @c audioGain and @c applyFrontEnd. */ KittAiKeyWordDetector( - std::shared_ptr stream, - avsCommon::utils::AudioFormat audioFormat, - std::unordered_set> keyWordObservers, - std::unordered_set> - keyWordDetectorStateObservers, - const std::string& resourceFilePath, - const std::vector kittAiConfigurations, - float audioGain, - bool applyFrontEnd, - std::chrono::milliseconds msToPushPerIteration = std::chrono::milliseconds(20)); + std::shared_ptr stream, + avsCommon::utils::AudioFormat audioFormat, + std::unordered_set> keyWordObservers, + std::unordered_set> + keyWordDetectorStateObservers, + const std::string& resourceFilePath, + const std::vector kittAiConfigurations, + float audioGain, + bool applyFrontEnd, + std::chrono::milliseconds msToPushPerIteration = std::chrono::milliseconds(20)); /** - * Initializes the stream reader and kicks off a thread to read data from the stream. This function should only be + * Initializes the stream reader and kicks off a thread to read data from the stream. This function should only be * called once with each new @c KittAiKeyWordDetector. * * @param audioFormat The format of the audio data located within the stream. @@ -136,7 +134,7 @@ class KittAiKeyWordDetector : public AbstractKeywordDetector { /** * Checks to see if an @c avsCommon::utils::AudioFormat is compatible with Kitt.ai. * - * @param audioFormat The audio format to check. + * @param audioFormat The audio format to check. * @return @c true if the audio format is compatible and @c false otherwise. */ bool isAudioFormatCompatibleWithKittAi(avsCommon::utils::AudioFormat audioFormat); @@ -173,7 +171,7 @@ class KittAiKeyWordDetector : public AbstractKeywordDetector { const size_t m_maxSamplesPerPush; }; -} // namespace kwd -} // namespace alexaClientSDK +} // namespace kwd +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_KWD_KITT_AI_INCLUDE_KWD_KITT_AI_KEY_WORD_DETECTOR_H_ +#endif // ALEXA_CLIENT_SDK_KWD_KITTAI_INCLUDE_KITTAI_KITTAIKEYWORDDETECTOR_H_ diff --git a/KWD/KittAi/src/KittAiKeyWordDetector.cpp b/KWD/KittAi/src/KittAiKeyWordDetector.cpp index 6bf6fafecd..8821180d9f 100644 --- a/KWD/KittAi/src/KittAiKeyWordDetector.cpp +++ b/KWD/KittAi/src/KittAiKeyWordDetector.cpp @@ -1,7 +1,5 @@ /* - * KittAiKeyWordDetector.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -14,6 +12,7 @@ * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ + #include #include @@ -66,16 +65,15 @@ static const int KITT_AI_ERROR_DETECTION_RESULT = -1; static const int KITT_AI_NO_DETECTION_RESULT = 0; std::unique_ptr KittAiKeyWordDetector::create( - std::shared_ptr stream, - AudioFormat audioFormat, - std::unordered_set> keyWordObservers, - std::unordered_set> - keyWordDetectorStateObservers, - const std::string& resourceFilePath, - const std::vector kittAiConfigurations, - float audioGain, - bool applyFrontEnd, - std::chrono::milliseconds msToPushPerIteration) { + std::shared_ptr stream, + AudioFormat audioFormat, + std::unordered_set> keyWordObservers, + std::unordered_set> keyWordDetectorStateObservers, + const std::string& resourceFilePath, + const std::vector kittAiConfigurations, + float audioGain, + bool applyFrontEnd, + std::chrono::milliseconds msToPushPerIteration) { if (!stream) { ACSDK_ERROR(LX("createFailed").d("reason", "nullStream")); return nullptr; @@ -85,19 +83,16 @@ std::unique_ptr KittAiKeyWordDetector::create( ACSDK_ERROR(LX("createFailed").d("reason", "endianMismatch")); return nullptr; } - std::unique_ptr detector( - new KittAiKeyWordDetector( - stream, - audioFormat, - keyWordObservers, - keyWordDetectorStateObservers, - resourceFilePath, - kittAiConfigurations, - audioGain, - applyFrontEnd, - msToPushPerIteration - ) - ); + std::unique_ptr detector(new KittAiKeyWordDetector( + stream, + audioFormat, + keyWordObservers, + keyWordDetectorStateObservers, + resourceFilePath, + kittAiConfigurations, + audioGain, + applyFrontEnd, + msToPushPerIteration)); if (!detector->init(audioFormat)) { ACSDK_ERROR(LX("createFailed").d("reason", "initDetectorFailed")); return nullptr; @@ -113,26 +108,24 @@ KittAiKeyWordDetector::~KittAiKeyWordDetector() { } KittAiKeyWordDetector::KittAiKeyWordDetector( - std::shared_ptr stream, - avsCommon::utils::AudioFormat audioFormat, - std::unordered_set> keyWordObservers, - std::unordered_set> - keyWordDetectorStateObservers, - const std::string& resourceFilePath, - const std::vector kittAiConfigurations, - float audioGain, - bool applyFrontEnd, - std::chrono::milliseconds msToPushPerIteration) : - AbstractKeywordDetector(keyWordObservers, keyWordDetectorStateObservers), - m_stream{stream}, - m_maxSamplesPerPush{(audioFormat.sampleRateHz / HERTZ_PER_KILOHERTZ) * msToPushPerIteration.count()} { - + std::shared_ptr stream, + avsCommon::utils::AudioFormat audioFormat, + std::unordered_set> keyWordObservers, + std::unordered_set> keyWordDetectorStateObservers, + const std::string& resourceFilePath, + const std::vector kittAiConfigurations, + float audioGain, + bool applyFrontEnd, + std::chrono::milliseconds msToPushPerIteration) : + AbstractKeywordDetector(keyWordObservers, keyWordDetectorStateObservers), + m_stream{stream}, + m_maxSamplesPerPush{(audioFormat.sampleRateHz / HERTZ_PER_KILOHERTZ) * msToPushPerIteration.count()} { std::stringstream sensitivities; std::stringstream modelPaths; for (unsigned int i = 0; i < kittAiConfigurations.size(); ++i) { modelPaths << kittAiConfigurations.at(i).modelFilePath; sensitivities << kittAiConfigurations.at(i).sensitivity; - m_detectionResultsToKeyWords[i+1] = kittAiConfigurations.at(i).keyword; + m_detectionResultsToKeyWords[i + 1] = kittAiConfigurations.at(i).keyword; if (kittAiConfigurations.size() - 1 != i) { modelPaths << KITT_DELIMITER; sensitivities << KITT_DELIMITER; @@ -161,37 +154,37 @@ bool KittAiKeyWordDetector::init(avsCommon::utils::AudioFormat audioFormat) { bool KittAiKeyWordDetector::isAudioFormatCompatibleWithKittAi(avsCommon::utils::AudioFormat audioFormat) { if (audioFormat.numChannels != static_cast(m_kittAiEngine->NumChannels())) { ACSDK_ERROR(LX("isAudioFormatCompatibleWithKittAiFailed") - .d("reason", "numChannelsMismatch") - .d("kittAiNumChannels", m_kittAiEngine->NumChannels()) - .d("numChannels", audioFormat.numChannels)); + .d("reason", "numChannelsMismatch") + .d("kittAiNumChannels", m_kittAiEngine->NumChannels()) + .d("numChannels", audioFormat.numChannels)); return false; } if (audioFormat.sampleRateHz != static_cast(m_kittAiEngine->SampleRate())) { ACSDK_ERROR(LX("isAudioFormatCompatibleWithKittAiFailed") - .d("reason", "sampleRateMismatch") - .d("kittAiSampleRate", m_kittAiEngine->SampleRate()) - .d("sampleRate", audioFormat.sampleRateHz)); + .d("reason", "sampleRateMismatch") + .d("kittAiSampleRate", m_kittAiEngine->SampleRate()) + .d("sampleRate", audioFormat.sampleRateHz)); return false; } if (audioFormat.sampleSizeInBits != static_cast(m_kittAiEngine->BitsPerSample())) { ACSDK_ERROR(LX("isAudioFormatCompatibleWithKittAiFailed") - .d("reason", "sampleSizeInBitsMismatch") - .d("kittAiSampleSizeInBits", m_kittAiEngine->BitsPerSample()) - .d("sampleSizeInBits", audioFormat.sampleSizeInBits)); + .d("reason", "sampleSizeInBitsMismatch") + .d("kittAiSampleSizeInBits", m_kittAiEngine->BitsPerSample()) + .d("sampleSizeInBits", audioFormat.sampleSizeInBits)); return false; } if (audioFormat.endianness != KITT_AI_COMPATIBLE_ENDIANNESS) { ACSDK_ERROR(LX("isAudioFormatCompatibleWithKittAiFailed") - .d("reason", "endiannessMismatch") - .d("kittAiEndianness", KITT_AI_COMPATIBLE_ENDIANNESS) - .d("endianness", audioFormat.endianness)); + .d("reason", "endiannessMismatch") + .d("kittAiEndianness", KITT_AI_COMPATIBLE_ENDIANNESS) + .d("endianness", audioFormat.endianness)); return false; } if (audioFormat.encoding != KITT_AI_COMPATIBLE_ENCODING) { ACSDK_ERROR(LX("isAudioFormatCompatibleWithKittAiFailed") - .d("reason", "encodingMismatch") - .d("kittAiEncoding", KITT_AI_COMPATIBLE_ENCODING) - .d("encoding", audioFormat.encoding)); + .d("reason", "encodingMismatch") + .d("kittAiEncoding", KITT_AI_COMPATIBLE_ENCODING) + .d("encoding", audioFormat.encoding)); return false; } return true; @@ -204,12 +197,7 @@ void KittAiKeyWordDetector::detectionLoop() { while (!m_isShuttingDown) { bool didErrorOccur; wordsRead = readFromStream( - m_streamReader, - m_stream, - audioDataToPush, - m_maxSamplesPerPush, - TIMEOUT_FOR_READ_CALLS, - &didErrorOccur); + m_streamReader, m_stream, audioDataToPush, m_maxSamplesPerPush, TIMEOUT_FOR_READ_CALLS, &didErrorOccur); if (didErrorOccur) { break; } else if (wordsRead > 0) { @@ -244,8 +232,8 @@ void KittAiKeyWordDetector::detectionLoop() { break; default: ACSDK_ERROR(LX("detectionLoopEnded") - .d("reason", "unexpectedDetectionResult") - .d("detectionResult", detectionResult)); + .d("reason", "unexpectedDetectionResult") + .d("detectionResult", detectionResult)); notifyKeyWordDetectorStateObservers( KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ERROR); didErrorOccur = true; @@ -260,5 +248,5 @@ void KittAiKeyWordDetector::detectionLoop() { m_streamReader->close(); } -} // namespace kwd -} // namespace alexaClientSDK +} // namespace kwd +} // namespace alexaClientSDK diff --git a/KWD/KittAi/test/KittAiKeyWordDetectorTest.cpp b/KWD/KittAi/test/KittAiKeyWordDetectorTest.cpp index d3dfb2fe98..29110e6553 100644 --- a/KWD/KittAi/test/KittAiKeyWordDetectorTest.cpp +++ b/KWD/KittAi/test/KittAiKeyWordDetectorTest.cpp @@ -1,3 +1,18 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 #include #include @@ -51,22 +66,24 @@ static const std::chrono::milliseconds MARGIN = std::chrono::milliseconds(100); static const AudioInputStream::Index MARGIN_IN_SAMPLES = MARGIN.count() * SAMPLES_PER_MS; /// The number of "Alexa" keywords in the four_alexa.wav file. -static const int NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE = 4; +static const size_t NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE = 4; /// The approximate end indices of the four "Alexa" hotwords in the four_alexa.wav file. std::vector END_INDICES_OF_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE = {21440, 52800, 72480, 91552}; /// The number of "Alexa" keywords in the alexa_stop_alexa_joke.wav file. -static const int NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE = 2; +static const size_t NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE = 2; /// The approximate end indices of the two "Alexa" hotwords in the alexa_stop_alexa_joke.wav file. std::vector END_INDICES_OF_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE = {20960, 51312}; /// The compatible encoding for Kitt.ai. -static const avsCommon::utils::AudioFormat::Encoding COMPATIBLE_ENCODING = avsCommon::utils::AudioFormat::Encoding::LPCM; +static const avsCommon::utils::AudioFormat::Encoding COMPATIBLE_ENCODING = + avsCommon::utils::AudioFormat::Encoding::LPCM; /// The compatible endianness for Kitt.ai. -static const avsCommon::utils::AudioFormat::Endianness COMPATIBLE_ENDIANNESS = avsCommon::utils::AudioFormat::Endianness::LITTLE; +static const avsCommon::utils::AudioFormat::Endianness COMPATIBLE_ENDIANNESS = + avsCommon::utils::AudioFormat::Endianness::LITTLE; /// The compatible sample rate for Kitt.ai. static const unsigned int COMPATIBLE_SAMPLE_RATE = 16000; @@ -103,10 +120,10 @@ class testKeyWordObserver : public KeyWordObserverInterface { /// Implementation of the KeyWordObserverInterface##onKeyWordDetected() call. void onKeyWordDetected( - std::shared_ptr stream, - std::string keyword, - AudioInputStream::Index beginIndex, - AudioInputStream::Index endIndex) { + std::shared_ptr stream, + std::string keyword, + AudioInputStream::Index beginIndex, + AudioInputStream::Index endIndex) { std::lock_guard lock(m_mutex); m_detectionResults.push_back({endIndex, keyword}); m_detectionOccurred.notify_one(); @@ -120,9 +137,10 @@ class testKeyWordObserver : public KeyWordObserverInterface { * @return The detection results that actually occurred. */ std::vector waitForNDetections( - unsigned int numDetectionsExpected, std::chrono::milliseconds timeout) { + unsigned int numDetectionsExpected, + std::chrono::milliseconds timeout) { std::unique_lock lock(m_mutex); - m_detectionOccurred.wait_for(lock, timeout, [this, numDetectionsExpected] () { + m_detectionOccurred.wait_for(lock, timeout, [this, numDetectionsExpected]() { return m_detectionResults.size() == numDetectionsExpected; }); return m_detectionResults; @@ -145,9 +163,9 @@ class testStateObserver : public KeyWordDetectorStateObserverInterface { /** * Constructor. */ - testStateObserver() : - m_state(KeyWordDetectorStateObserverInterface::KeyWordDetectorState::STREAM_CLOSED), - m_stateChangeOccurred{false} { + testStateObserver() : + m_state(KeyWordDetectorStateObserverInterface::KeyWordDetectorState::STREAM_CLOSED), + m_stateChangeOccurred{false} { } /// Implementation of the KeyWordDetectorStateObserverInterface##onStateChanged() call. @@ -166,11 +184,10 @@ class testStateObserver : public KeyWordDetectorStateObserverInterface { * @return Returns the state of the observer. */ KeyWordDetectorStateObserverInterface::KeyWordDetectorState waitForStateChange( - std::chrono::milliseconds timeout, bool* stateChanged) { + std::chrono::milliseconds timeout, + bool* stateChanged) { std::unique_lock lock(m_mutex); - bool success = m_stateChanged.wait_for(lock, timeout, [this] () { - return m_stateChangeOccurred; - }); + bool success = m_stateChanged.wait_for(lock, timeout, [this]() { return m_stateChangeOccurred; }); if (!success) { *stateChanged = false; @@ -180,6 +197,7 @@ class testStateObserver : public KeyWordDetectorStateObserverInterface { } return m_state; } + private: /// The state of the observer. KeyWordDetectorStateObserverInterface::KeyWordDetectorState m_state; @@ -195,8 +213,8 @@ class testStateObserver : public KeyWordDetectorStateObserverInterface { }; class KittAiKeyWordTest : public ::testing::Test { - protected: - std::vector readAudioFromFile(const std::string &fileName, bool* errorOccurred) { +protected: + std::vector readAudioFromFile(const std::string& fileName, bool* errorOccurred) { const int RIFF_HEADER_SIZE = 44; std::ifstream inputFile(fileName.c_str(), std::ifstream::binary); @@ -223,9 +241,9 @@ class KittAiKeyWordTest : public ::testing::Test { std::vector retVal(numSamples, 0); - inputFile.read((char *)&retVal[0], numSamples * 2); + inputFile.read((char*)&retVal[0], numSamples * 2); - if (inputFile.gcount() != numSamples*2) { + if (inputFile.gcount() != numSamples * 2) { std::cout << "Error reading audio file" << std::endl; if (errorOccurred) { *errorOccurred = true; @@ -241,9 +259,9 @@ class KittAiKeyWordTest : public ::testing::Test { } bool isResultPresent( - std::vector& results, - AudioInputStream::Index expectedEndIndex, - const std::string& expectedKeyword) { + std::vector& results, + AudioInputStream::Index expectedEndIndex, + const std::string& expectedKeyword) { AudioInputStream::Index highBound = expectedEndIndex + MARGIN_IN_SAMPLES; AudioInputStream::Index lowBound = expectedEndIndex - MARGIN_IN_SAMPLES; for (auto result : results) { @@ -275,30 +293,29 @@ class KittAiKeyWordTest : public ::testing::Test { compatibleAudioFormat.endianness = COMPATIBLE_ENDIANNESS; compatibleAudioFormat.encoding = COMPATIBLE_ENCODING; + std::ifstream filePresent((inputsDirPath + MODEL_FILE).c_str()); + ASSERT_TRUE(filePresent.good()) << "Unable to find " + inputsDirPath + MODEL_FILE + << ". Please place model file within this location."; - std::ifstream filePresent((inputsDirPath+MODEL_FILE).c_str()); - ASSERT_TRUE(filePresent.good()) << - "Unable to find " + inputsDirPath+MODEL_FILE << ". Please place model file within this location."; - - std::ifstream filePresent2((inputsDirPath+RESOURCE_FILE).c_str()); - ASSERT_TRUE(filePresent2.good()) << - "Unable to find " + inputsDirPath+RESOURCE_FILE << ". Please place model file within this location."; + std::ifstream filePresent2((inputsDirPath + RESOURCE_FILE).c_str()); + ASSERT_TRUE(filePresent2.good()) << "Unable to find " + inputsDirPath + RESOURCE_FILE + << ". Please place model file within this location."; - config = {inputsDirPath+MODEL_FILE, MODEL_KEYWORD, KITTAI_SENSITIVITY}; + config = {inputsDirPath + MODEL_FILE, MODEL_KEYWORD, KITTAI_SENSITIVITY}; } }; /// Tests that we don't get back a valid detector if an invalid stream is passed in. TEST_F(KittAiKeyWordTest, invalidStream) { auto detector = KittAiKeyWordDetector::create( - nullptr, - compatibleAudioFormat, - {keyWordObserver1}, - std::unordered_set>(), - inputsDirPath + RESOURCE_FILE, - {config}, - KITTAI_AUDIO_GAIN, - KITTAI_APPLY_FRONTEND_PROCESSING); + nullptr, + compatibleAudioFormat, + {keyWordObserver1}, + std::unordered_set>(), + inputsDirPath + RESOURCE_FILE, + {config}, + KITTAI_AUDIO_GAIN, + KITTAI_APPLY_FRONTEND_PROCESSING); ASSERT_FALSE(detector); } @@ -311,13 +328,13 @@ TEST_F(KittAiKeyWordTest, incompatibleEndianness) { compatibleAudioFormat.endianness = AudioFormat::Endianness::BIG; auto detector = KittAiKeyWordDetector::create( - sds, - compatibleAudioFormat, - {keyWordObserver1}, - std::unordered_set>(), - inputsDirPath+RESOURCE_FILE, - {config}, - 1.0, + sds, + compatibleAudioFormat, + {keyWordObserver1}, + std::unordered_set>(), + inputsDirPath + RESOURCE_FILE, + {config}, + 1.0, false); ASSERT_FALSE(detector); } @@ -328,8 +345,8 @@ TEST_F(KittAiKeyWordTest, getExpectedNumberOfDetectionsInFourAlexasAudioFileForO auto fourAlexasSds = avsCommon::avs::AudioInputStream::create(fourAlexasBuffer, 2, 1); std::shared_ptr fourAlexasAudioBuffer = std::move(fourAlexasSds); - std::unique_ptr fourAlexasAudioBufferWriter = fourAlexasAudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + std::unique_ptr fourAlexasAudioBufferWriter = + fourAlexasAudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); std::string audioFilePath = inputsDirPath + FOUR_ALEXAS_AUDIO_FILE; bool error; @@ -339,17 +356,17 @@ TEST_F(KittAiKeyWordTest, getExpectedNumberOfDetectionsInFourAlexasAudioFileForO fourAlexasAudioBufferWriter->write(audioData.data(), audioData.size()); auto detector = KittAiKeyWordDetector::create( - fourAlexasAudioBuffer, - compatibleAudioFormat, - {keyWordObserver1}, - std::unordered_set>(), - inputsDirPath+RESOURCE_FILE, - {config}, - KITTAI_AUDIO_GAIN, + fourAlexasAudioBuffer, + compatibleAudioFormat, + {keyWordObserver1}, + std::unordered_set>(), + inputsDirPath + RESOURCE_FILE, + {config}, + KITTAI_AUDIO_GAIN, KITTAI_APPLY_FRONTEND_PROCESSING); ASSERT_TRUE(detector); - auto detections = keyWordObserver1->waitForNDetections( - END_INDICES_OF_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE.size(), DEFAULT_TIMEOUT); + auto detections = + keyWordObserver1->waitForNDetections(END_INDICES_OF_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE.size(), DEFAULT_TIMEOUT); ASSERT_EQ(detections.size(), NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE); for (auto index : END_INDICES_OF_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE) { @@ -363,8 +380,8 @@ TEST_F(KittAiKeyWordTest, getExpectedNumberOfDetectionsInFourAlexasAudioFileForT auto fourAlexasSds = avsCommon::avs::AudioInputStream::create(fourAlexasBuffer, 2, 1); std::shared_ptr fourAlexasAudioBuffer = std::move(fourAlexasSds); - std::unique_ptr fourAlexasAudioBufferWriter = fourAlexasAudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + std::unique_ptr fourAlexasAudioBufferWriter = + fourAlexasAudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); std::string audioFilePath = inputsDirPath + FOUR_ALEXAS_AUDIO_FILE; bool error; @@ -374,25 +391,23 @@ TEST_F(KittAiKeyWordTest, getExpectedNumberOfDetectionsInFourAlexasAudioFileForT fourAlexasAudioBufferWriter->write(audioData.data(), audioData.size()); auto detector = KittAiKeyWordDetector::create( - fourAlexasAudioBuffer, - compatibleAudioFormat, - {keyWordObserver1, keyWordObserver2}, - std::unordered_set>(), - inputsDirPath+RESOURCE_FILE, - {config}, - KITTAI_AUDIO_GAIN, + fourAlexasAudioBuffer, + compatibleAudioFormat, + {keyWordObserver1, keyWordObserver2}, + std::unordered_set>(), + inputsDirPath + RESOURCE_FILE, + {config}, + KITTAI_AUDIO_GAIN, KITTAI_APPLY_FRONTEND_PROCESSING); ASSERT_TRUE(detector); - auto detections = keyWordObserver1->waitForNDetections( - NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE, DEFAULT_TIMEOUT); + auto detections = keyWordObserver1->waitForNDetections(NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE, DEFAULT_TIMEOUT); ASSERT_EQ(detections.size(), NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE); for (auto index : END_INDICES_OF_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE) { ASSERT_TRUE(isResultPresent(detections, index, MODEL_KEYWORD)); } - detections = keyWordObserver2->waitForNDetections( - NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE, DEFAULT_TIMEOUT); + detections = keyWordObserver2->waitForNDetections(NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE, DEFAULT_TIMEOUT); ASSERT_EQ(detections.size(), NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE); for (auto index : END_INDICES_OF_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE) { @@ -401,7 +416,7 @@ TEST_F(KittAiKeyWordTest, getExpectedNumberOfDetectionsInFourAlexasAudioFileForT } /** - * Tests that we get back the expected number of keywords for the alexa_stop_alexa_joke.wav file for one keyword + * Tests that we get back the expected number of keywords for the alexa_stop_alexa_joke.wav file for one keyword * observer. */ TEST_F(KittAiKeyWordTest, getExpectedNumberOfDetectionsInAlexaStopAlexaJokeAudioFileForOneObserver) { @@ -409,9 +424,8 @@ TEST_F(KittAiKeyWordTest, getExpectedNumberOfDetectionsInAlexaStopAlexaJokeAudio auto alexaStopAlexaJokeSds = avsCommon::avs::AudioInputStream::create(alexaStopAlexaJokeBuffer, 2, 1); std::shared_ptr alexaStopAlexaJokeAudioBuffer = std::move(alexaStopAlexaJokeSds); - std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = - alexaStopAlexaJokeAudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = + alexaStopAlexaJokeAudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); std::string audioFilePath = inputsDirPath + ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE; bool error; @@ -421,17 +435,17 @@ TEST_F(KittAiKeyWordTest, getExpectedNumberOfDetectionsInAlexaStopAlexaJokeAudio alexaStopAlexaJokeAudioBufferWriter->write(audioData.data(), audioData.size()); auto detector = KittAiKeyWordDetector::create( - alexaStopAlexaJokeAudioBuffer, - compatibleAudioFormat, - {keyWordObserver1}, - std::unordered_set>(), - inputsDirPath+RESOURCE_FILE, - {config}, - KITTAI_AUDIO_GAIN, - KITTAI_APPLY_FRONTEND_PROCESSING); + alexaStopAlexaJokeAudioBuffer, + compatibleAudioFormat, + {keyWordObserver1}, + std::unordered_set>(), + inputsDirPath + RESOURCE_FILE, + {config}, + KITTAI_AUDIO_GAIN, + KITTAI_APPLY_FRONTEND_PROCESSING); ASSERT_TRUE(detector); - auto detections = keyWordObserver1->waitForNDetections( - NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE, DEFAULT_TIMEOUT); + auto detections = + keyWordObserver1->waitForNDetections(NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE, DEFAULT_TIMEOUT); ASSERT_EQ(detections.size(), NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE); for (auto index : END_INDICES_OF_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE) { @@ -440,7 +454,7 @@ TEST_F(KittAiKeyWordTest, getExpectedNumberOfDetectionsInAlexaStopAlexaJokeAudio } /** - * Tests that we get back the expected number of keywords for the alexa_stop_alexa_joke.wav file for two keyword + * Tests that we get back the expected number of keywords for the alexa_stop_alexa_joke.wav file for two keyword * observer. */ TEST_F(KittAiKeyWordTest, getExpectedNumberOfDetectionsInAlexaStopAlexaJokeAudioFileForTwoObservers) { @@ -448,9 +462,8 @@ TEST_F(KittAiKeyWordTest, getExpectedNumberOfDetectionsInAlexaStopAlexaJokeAudio auto alexaStopAlexaJokeSds = avsCommon::avs::AudioInputStream::create(alexaStopAlexaJokeBuffer, 2, 1); std::shared_ptr alexaStopAlexaJokeAudioBuffer = std::move(alexaStopAlexaJokeSds); - std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = - alexaStopAlexaJokeAudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = + alexaStopAlexaJokeAudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); std::string audioFilePath = inputsDirPath + ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE; bool error; @@ -460,25 +473,24 @@ TEST_F(KittAiKeyWordTest, getExpectedNumberOfDetectionsInAlexaStopAlexaJokeAudio alexaStopAlexaJokeAudioBufferWriter->write(audioData.data(), audioData.size()); auto detector = KittAiKeyWordDetector::create( - alexaStopAlexaJokeAudioBuffer, - compatibleAudioFormat, - {keyWordObserver1, keyWordObserver2}, - std::unordered_set>(), - inputsDirPath+RESOURCE_FILE, - {config}, - KITTAI_AUDIO_GAIN, - KITTAI_APPLY_FRONTEND_PROCESSING); + alexaStopAlexaJokeAudioBuffer, + compatibleAudioFormat, + {keyWordObserver1, keyWordObserver2}, + std::unordered_set>(), + inputsDirPath + RESOURCE_FILE, + {config}, + KITTAI_AUDIO_GAIN, + KITTAI_APPLY_FRONTEND_PROCESSING); ASSERT_TRUE(detector); - auto detections = keyWordObserver1->waitForNDetections( - NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE, DEFAULT_TIMEOUT); + auto detections = + keyWordObserver1->waitForNDetections(NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE, DEFAULT_TIMEOUT); ASSERT_EQ(detections.size(), NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE); for (auto index : END_INDICES_OF_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE) { ASSERT_TRUE(isResultPresent(detections, index, MODEL_KEYWORD)); } - detections = keyWordObserver2->waitForNDetections( - NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE, DEFAULT_TIMEOUT); + detections = keyWordObserver2->waitForNDetections(NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE, DEFAULT_TIMEOUT); ASSERT_EQ(detections.size(), NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE); for (auto index : END_INDICES_OF_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE) { @@ -492,9 +504,8 @@ TEST_F(KittAiKeyWordTest, getActiveState) { auto alexaStopAlexaJokeSds = avsCommon::avs::AudioInputStream::create(alexaStopAlexaJokeBuffer, 2, 1); std::shared_ptr alexaStopAlexaJokeAudioBuffer = std::move(alexaStopAlexaJokeSds); - std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = - alexaStopAlexaJokeAudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = + alexaStopAlexaJokeAudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); std::string audioFilePath = inputsDirPath + ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE; bool error; @@ -504,18 +515,18 @@ TEST_F(KittAiKeyWordTest, getActiveState) { alexaStopAlexaJokeAudioBufferWriter->write(audioData.data(), audioData.size()); auto detector = KittAiKeyWordDetector::create( - alexaStopAlexaJokeAudioBuffer, - compatibleAudioFormat, - std::unordered_set>(), - {stateObserver}, - inputsDirPath+RESOURCE_FILE, - {config}, - KITTAI_AUDIO_GAIN, - false); + alexaStopAlexaJokeAudioBuffer, + compatibleAudioFormat, + std::unordered_set>(), + {stateObserver}, + inputsDirPath + RESOURCE_FILE, + {config}, + KITTAI_AUDIO_GAIN, + false); ASSERT_TRUE(detector); bool stateChanged = false; - KeyWordDetectorStateObserverInterface::KeyWordDetectorState stateReceived = stateObserver->waitForStateChange( - DEFAULT_TIMEOUT, &stateChanged); + KeyWordDetectorStateObserverInterface::KeyWordDetectorState stateReceived = + stateObserver->waitForStateChange(DEFAULT_TIMEOUT, &stateChanged); ASSERT_TRUE(stateChanged); ASSERT_EQ(stateReceived, KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ACTIVE); } @@ -529,9 +540,8 @@ TEST_F(KittAiKeyWordTest, getStreamClosedState) { auto alexaStopAlexaJokeSds = avsCommon::avs::AudioInputStream::create(alexaStopAlexaJokeBuffer, 2, 1); std::shared_ptr alexaStopAlexaJokeAudioBuffer = std::move(alexaStopAlexaJokeSds); - std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = - alexaStopAlexaJokeAudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = + alexaStopAlexaJokeAudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); std::string audioFilePath = inputsDirPath + ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE; bool error; @@ -541,43 +551,42 @@ TEST_F(KittAiKeyWordTest, getStreamClosedState) { alexaStopAlexaJokeAudioBufferWriter->write(audioData.data(), audioData.size()); auto detector = KittAiKeyWordDetector::create( - alexaStopAlexaJokeAudioBuffer, - compatibleAudioFormat, - {keyWordObserver1}, - {stateObserver}, - inputsDirPath+RESOURCE_FILE, - {config}, - KITTAI_AUDIO_GAIN, - false); + alexaStopAlexaJokeAudioBuffer, + compatibleAudioFormat, + {keyWordObserver1}, + {stateObserver}, + inputsDirPath + RESOURCE_FILE, + {config}, + KITTAI_AUDIO_GAIN, + false); ASSERT_TRUE(detector); // so that when we close the writer, we know for sure that the reader will be closed - auto detections = keyWordObserver1->waitForNDetections( - NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE, DEFAULT_TIMEOUT); + auto detections = + keyWordObserver1->waitForNDetections(NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE, DEFAULT_TIMEOUT); ASSERT_EQ(detections.size(), NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE); bool stateChanged = false; - KeyWordDetectorStateObserverInterface::KeyWordDetectorState stateReceived = stateObserver->waitForStateChange( - DEFAULT_TIMEOUT, &stateChanged); + KeyWordDetectorStateObserverInterface::KeyWordDetectorState stateReceived = + stateObserver->waitForStateChange(DEFAULT_TIMEOUT, &stateChanged); ASSERT_TRUE(stateChanged); ASSERT_EQ(stateReceived, KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ACTIVE); alexaStopAlexaJokeAudioBufferWriter->close(); stateChanged = false; - stateReceived = stateObserver->waitForStateChange( - DEFAULT_TIMEOUT, &stateChanged); + stateReceived = stateObserver->waitForStateChange(DEFAULT_TIMEOUT, &stateChanged); ASSERT_TRUE(stateChanged); ASSERT_EQ(stateReceived, KeyWordDetectorStateObserverInterface::KeyWordDetectorState::STREAM_CLOSED); } -} // namespace test -} // namespace kwd -} // namespace alexaClientSDK +} // namespace test +} // namespace kwd +} // namespace alexaClientSDK -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); if (argc < 2) { - std::cerr << "USAGE: KittAiKeyWordDetectorTest " << std::endl; + std::cerr << "USAGE: " << std::string(argv[0]) << " " << std::endl; return 1; } else { alexaClientSDK::kwd::test::inputsDirPath = std::string(argv[1]); diff --git a/KWD/Sensory/CMakeLists.txt b/KWD/Sensory/CMakeLists.txt index 7fd33b7443..74b8e25717 100644 --- a/KWD/Sensory/CMakeLists.txt +++ b/KWD/Sensory/CMakeLists.txt @@ -4,4 +4,4 @@ project(SENSORY LANGUAGES CXX) include(../../build/BuildDefaults.cmake) add_subdirectory("src") -add_subdirectory("test") +acsdk_add_test_subdirectory_if_allowed() diff --git a/KWD/Sensory/include/Sensory/SensoryKeywordDetector.h b/KWD/Sensory/include/Sensory/SensoryKeywordDetector.h index ce679e8f02..8a050d8229 100644 --- a/KWD/Sensory/include/Sensory/SensoryKeywordDetector.h +++ b/KWD/Sensory/include/Sensory/SensoryKeywordDetector.h @@ -1,7 +1,5 @@ /* - * SensoryKeywordDetector.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_KWD_SENSORY_INCLUDE_KWD_SENSORY_KEY_WORD_DETECTOR_H_ -#define ALEXA_CLIENT_SDK_KWD_SENSORY_INCLUDE_KWD_SENSORY_KEY_WORD_DETECTOR_H_ +#ifndef ALEXA_CLIENT_SDK_KWD_SENSORY_INCLUDE_SENSORY_SENSORYKEYWORDDETECTOR_H_ +#define ALEXA_CLIENT_SDK_KWD_SENSORY_INCLUDE_SENSORY_SENSORYKEYWORDDETECTOR_H_ #include #include @@ -57,13 +55,12 @@ class SensoryKeywordDetector : public AbstractKeywordDetector { * @return A new @c SensoryKeywordDetector, or @c nullptr if the operation failed. */ static std::unique_ptr create( - std::shared_ptr stream, - avsCommon::utils::AudioFormat audioFormat, - std::unordered_set> keyWordObservers, - std::unordered_set> - keyWordDetectorStateObservers, - const std::string& modelFilePath, - std::chrono::milliseconds msToPushPerIteration = std::chrono::milliseconds(10)); + std::shared_ptr stream, + avsCommon::utils::AudioFormat audioFormat, + std::unordered_set> keyWordObservers, + std::unordered_set> keyWordDetectorStateObservers, + const std::string& modelFilePath, + std::chrono::milliseconds msToPushPerIteration = std::chrono::milliseconds(10)); /** * Destructor. @@ -86,14 +83,14 @@ class SensoryKeywordDetector : public AbstractKeywordDetector { * Sensory in example code. */ SensoryKeywordDetector( - std::shared_ptr stream, - std::unordered_set> keyWordObservers, - std::unordered_set> keyWordDetectorStateObservers, - avsCommon::utils::AudioFormat audioFormat, - std::chrono::milliseconds msToPushPerIteration = std::chrono::milliseconds(10)); + std::shared_ptr stream, + std::unordered_set> keyWordObservers, + std::unordered_set> keyWordDetectorStateObservers, + avsCommon::utils::AudioFormat audioFormat, + std::chrono::milliseconds msToPushPerIteration = std::chrono::milliseconds(10)); /** - * Initializes the stream reader, sets up the Sensory engine, and kicks off a thread to begin processing data from + * Initializes the stream reader, sets up the Sensory engine, and kicks off a thread to begin processing data from * the stream. This function should only be called once with each new @c SensoryKeywordDetector. * * @param modelFilePath The path to the model file. @@ -151,7 +148,7 @@ class SensoryKeywordDetector : public AbstractKeywordDetector { const size_t m_maxSamplesPerPush; }; -} // namespace kwd -} // namespace alexaClientSDK +} // namespace kwd +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_KWD_SENSORY_INCLUDE_KWD_SENSORY_KEY_WORD_DETECTOR_H_ +#endif // ALEXA_CLIENT_SDK_KWD_SENSORY_INCLUDE_SENSORY_SENSORYKEYWORDDETECTOR_H_ diff --git a/KWD/Sensory/src/SensoryKeywordDetector.cpp b/KWD/Sensory/src/SensoryKeywordDetector.cpp index d978c138a8..0bbab4ea8b 100644 --- a/KWD/Sensory/src/SensoryKeywordDetector.cpp +++ b/KWD/Sensory/src/SensoryKeywordDetector.cpp @@ -1,7 +1,5 @@ /* - * SensoryKeyWordDetector.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -52,11 +50,12 @@ static const unsigned int SENSORY_COMPATIBLE_SAMPLE_SIZE_IN_BITS = 16; static const unsigned int SENSORY_COMPATIBLE_NUM_CHANNELS = 1; /// The Sensory compatible audio encoding of LPCM. -static const avsCommon::utils::AudioFormat::Encoding SENSORY_COMPATIBLE_ENCODING = avsCommon::utils::AudioFormat::Encoding::LPCM; +static const avsCommon::utils::AudioFormat::Encoding SENSORY_COMPATIBLE_ENCODING = + avsCommon::utils::AudioFormat::Encoding::LPCM; /// The Sensory compatible endianness which is little endian. -static const avsCommon::utils::AudioFormat::Endianness SENSORY_COMPATIBLE_ENDIANNESS = - avsCommon::utils::AudioFormat::Endianness::LITTLE; +static const avsCommon::utils::AudioFormat::Endianness SENSORY_COMPATIBLE_ENDIANNESS = + avsCommon::utils::AudioFormat::Endianness::LITTLE; /** * Checks to see if an @c avsCommon::utils::AudioFormat is compatible with Sensory. @@ -67,43 +66,43 @@ static const avsCommon::utils::AudioFormat::Endianness SENSORY_COMPATIBLE_ENDIAN static bool isAudioFormatCompatibleWithSensory(avsCommon::utils::AudioFormat audioFormat) { if (SENSORY_COMPATIBLE_ENCODING != audioFormat.encoding) { ACSDK_ERROR(LX("isAudioFormatCompatibleWithSensoryFailed") - .d("reason", "incompatibleEncoding") - .d("sensoryEncoding", SENSORY_COMPATIBLE_ENCODING) - .d("encoding", audioFormat.encoding)); + .d("reason", "incompatibleEncoding") + .d("sensoryEncoding", SENSORY_COMPATIBLE_ENCODING) + .d("encoding", audioFormat.encoding)); return false; } if (SENSORY_COMPATIBLE_ENDIANNESS != audioFormat.endianness) { ACSDK_ERROR(LX("isAudioFormatCompatibleWithSensoryFailed") - .d("reason", "incompatibleEndianess") - .d("sensoryEndianness", SENSORY_COMPATIBLE_ENDIANNESS) - .d("endianness", audioFormat.endianness)); + .d("reason", "incompatibleEndianess") + .d("sensoryEndianness", SENSORY_COMPATIBLE_ENDIANNESS) + .d("endianness", audioFormat.endianness)); return false; } if (SENSORY_COMPATIBLE_SAMPLE_RATE != audioFormat.sampleRateHz) { ACSDK_ERROR(LX("isAudioFormatCompatibleWithSensoryFailed") - .d("reason", "incompatibleSampleRate") - .d("sensorySampleRate", SENSORY_COMPATIBLE_SAMPLE_RATE) - .d("sampleRate", audioFormat.sampleRateHz)); + .d("reason", "incompatibleSampleRate") + .d("sensorySampleRate", SENSORY_COMPATIBLE_SAMPLE_RATE) + .d("sampleRate", audioFormat.sampleRateHz)); return false; } if (SENSORY_COMPATIBLE_SAMPLE_SIZE_IN_BITS != audioFormat.sampleSizeInBits) { ACSDK_ERROR(LX("isAudioFormatCompatibleWithSensoryFailed") - .d("reason", "incompatibleSampleSizeInBits") - .d("sensorySampleSizeInBits", SENSORY_COMPATIBLE_SAMPLE_SIZE_IN_BITS) - .d("sampleSizeInBits", audioFormat.sampleSizeInBits)); + .d("reason", "incompatibleSampleSizeInBits") + .d("sensorySampleSizeInBits", SENSORY_COMPATIBLE_SAMPLE_SIZE_IN_BITS) + .d("sampleSizeInBits", audioFormat.sampleSizeInBits)); return false; } if (SENSORY_COMPATIBLE_NUM_CHANNELS != audioFormat.numChannels) { ACSDK_ERROR(LX("isAudioFormatCompatibleWithSensoryFailed") - .d("reason", "incompatibleNumChannels") - .d("sensoryNumChannels", SENSORY_COMPATIBLE_NUM_CHANNELS) - .d("numChannels", audioFormat.numChannels)); + .d("reason", "incompatibleNumChannels") + .d("sensoryNumChannels", SENSORY_COMPATIBLE_NUM_CHANNELS) + .d("numChannels", audioFormat.numChannels)); return false; } return true; } -/** +/** * Returns information about the ongoing sensory session. Primarily used to populate error messages. * * @param session The Sensory session handle. @@ -126,8 +125,7 @@ static std::string getSensoryDetails(SnsrSession session, SnsrRC result) { } SnsrRC SensoryKeywordDetector::keyWordDetectedCallback(SnsrSession s, const char* key, void* userData) { - SensoryKeywordDetector* engine = - static_cast(userData); + SensoryKeywordDetector* engine = static_cast(userData); SnsrRC result; const char* keyword; double begin; @@ -135,43 +133,43 @@ SnsrRC SensoryKeywordDetector::keyWordDetectedCallback(SnsrSession s, const char result = snsrGetDouble(s, SNSR_RES_BEGIN_SAMPLE, &begin); if (result != SNSR_RC_OK) { ACSDK_ERROR(LX("keyWordDetectedCallbackFailed") - .d("reason", "invalidBeginIndex") - .d("error", getSensoryDetails(s, result))); + .d("reason", "invalidBeginIndex") + .d("error", getSensoryDetails(s, result))); return result; } result = snsrGetDouble(s, SNSR_RES_END_SAMPLE, &end); if (result != SNSR_RC_OK) { ACSDK_ERROR(LX("keyWordDetectedCallbackFailed") - .d("reason", "invalidEndIndex") - .d("error", getSensoryDetails(s, result))); + .d("reason", "invalidEndIndex") + .d("error", getSensoryDetails(s, result))); return result; } result = snsrGetString(s, SNSR_RES_TEXT, &keyword); if (result != SNSR_RC_OK) { ACSDK_ERROR(LX("keyWordDetectedCallbackFailed") - .d("reason", "keywordRetrievalFailure") - .d("error", getSensoryDetails(s, result))); + .d("reason", "keywordRetrievalFailure") + .d("error", getSensoryDetails(s, result))); return result; } engine->notifyKeyWordObservers( - engine->m_stream, - keyword, - engine->m_beginIndexOfStreamReader + begin, - engine->m_beginIndexOfStreamReader + end); + engine->m_stream, + keyword, + engine->m_beginIndexOfStreamReader + begin, + engine->m_beginIndexOfStreamReader + end); return SNSR_RC_OK; } std::unique_ptr SensoryKeywordDetector::create( - std::shared_ptr stream, - avsCommon::utils::AudioFormat audioFormat, - std::unordered_set> keyWordObservers, - std::unordered_set> - keyWordDetectorStateObservers, - const std::string& modelFilePath, - std::chrono::milliseconds msToPushPerIteration) { + std::shared_ptr stream, + avsCommon::utils::AudioFormat audioFormat, + std::unordered_set> keyWordObservers, + std::unordered_set> + keyWordDetectorStateObservers, + const std::string& modelFilePath, + std::chrono::milliseconds msToPushPerIteration) { if (!stream) { ACSDK_ERROR(LX("createFailed").d("reason", "nullStream")); return nullptr; @@ -186,10 +184,8 @@ std::unique_ptr SensoryKeywordDetector::create( if (!isAudioFormatCompatibleWithSensory(audioFormat)) { return nullptr; } - std::unique_ptr detector( - new SensoryKeywordDetector( - stream, keyWordObservers, keyWordDetectorStateObservers, audioFormat, msToPushPerIteration) - ); + std::unique_ptr detector(new SensoryKeywordDetector( + stream, keyWordObservers, keyWordDetectorStateObservers, audioFormat, msToPushPerIteration)); if (!detector->init(modelFilePath)) { ACSDK_ERROR(LX("createFailed").d("reason", "initDetectorFailed")); return nullptr; @@ -206,16 +202,15 @@ SensoryKeywordDetector::~SensoryKeywordDetector() { } SensoryKeywordDetector::SensoryKeywordDetector( - std::shared_ptr stream, - std::unordered_set> keyWordObservers, - std::unordered_set> - keyWordDetectorStateObservers, - avsCommon::utils::AudioFormat audioFormat, - std::chrono::milliseconds msToPushPerIteration) : - AbstractKeywordDetector(keyWordObservers, keyWordDetectorStateObservers), - m_stream{stream}, - m_session{nullptr}, - m_maxSamplesPerPush{(audioFormat.sampleRateHz / HERTZ_PER_KILOHERTZ) * msToPushPerIteration.count()} { + std::shared_ptr stream, + std::unordered_set> keyWordObservers, + std::unordered_set> keyWordDetectorStateObservers, + avsCommon::utils::AudioFormat audioFormat, + std::chrono::milliseconds msToPushPerIteration) : + AbstractKeywordDetector(keyWordObservers, keyWordDetectorStateObservers), + m_stream{stream}, + m_session{nullptr}, + m_maxSamplesPerPush((audioFormat.sampleRateHz / HERTZ_PER_KILOHERTZ) * msToPushPerIteration.count()) { } bool SensoryKeywordDetector::init(const std::string& modelFilePath) { @@ -229,8 +224,8 @@ bool SensoryKeywordDetector::init(const std::string& modelFilePath) { SnsrRC result = snsrNew(&m_session); if (result != SNSR_RC_OK) { ACSDK_ERROR(LX("initFailed") - .d("reason", "allocatingNewSessionFailed") - .d("error", getSensoryDetails(m_session, result))); + .d("reason", "allocatingNewSessionFailed") + .d("error", getSensoryDetails(m_session, result))); return false; } @@ -255,18 +250,17 @@ bool SensoryKeywordDetector::init(const std::string& modelFilePath) { result = snsrLoad(m_session, snsrStreamFromFileName(modelFilePath.c_str(), "r")); if (result != SNSR_RC_OK) { - ACSDK_ERROR(LX("initFailed") - .d("reason", "loadingSensoryModelFailed") - .d("error", getSensoryDetails(m_session, result))); + ACSDK_ERROR( + LX("initFailed").d("reason", "loadingSensoryModelFailed").d("error", getSensoryDetails(m_session, result))); return false; } result = snsrRequire(m_session, SNSR_TASK_TYPE, SNSR_PHRASESPOT); if (result != SNSR_RC_OK) { ACSDK_ERROR(LX("initFailed") - .d("reason", "invalidTaskType") - .d("expected", "SNSR_PHRASESPOT") - .d("error", getSensoryDetails(m_session, result))); + .d("reason", "invalidTaskType") + .d("expected", "SNSR_PHRASESPOT") + .d("error", getSensoryDetails(m_session, result))); return false; } @@ -287,14 +281,12 @@ bool SensoryKeywordDetector::setUpRuntimeSettings(SnsrSession* session) { // Setting the callback handler SnsrRC result = snsrSetHandler( - *session, - SNSR_RESULT_EVENT, - snsrCallback(keyWordDetectedCallback, nullptr, reinterpret_cast(this))); + *session, SNSR_RESULT_EVENT, snsrCallback(keyWordDetectedCallback, nullptr, reinterpret_cast(this))); if (result != SNSR_RC_OK) { ACSDK_ERROR(LX("setUpRuntimeSettingsFailed") - .d("reason", "setKeywordDetectionHandlerFailure") - .d("error", getSensoryDetails(*session, result))); + .d("reason", "setKeywordDetectionHandlerFailure") + .d("error", getSensoryDetails(*session, result))); return false; } @@ -305,8 +297,8 @@ bool SensoryKeywordDetector::setUpRuntimeSettings(SnsrSession* session) { result = snsrSetInt(*session, SNSR_AUTO_FLUSH, 0); if (result != SNSR_RC_OK) { ACSDK_ERROR(LX("setUpRuntimeSettingsFailed") - .d("reason", "disableAutoPipelineFlushingFailed") - .d("error", getSensoryDetails(*session, result))); + .d("reason", "disableAutoPipelineFlushingFailed") + .d("error", getSensoryDetails(*session, result))); return false; } @@ -316,18 +308,18 @@ bool SensoryKeywordDetector::setUpRuntimeSettings(SnsrSession* session) { void SensoryKeywordDetector::detectionLoop() { m_beginIndexOfStreamReader = m_streamReader->tell(); notifyKeyWordDetectorStateObservers(KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ACTIVE); - int16_t audioDataToPush[m_maxSamplesPerPush]; + std::vector audioDataToPush(m_maxSamplesPerPush); ssize_t wordsRead; SnsrRC result; while (!m_isShuttingDown) { bool didErrorOccur = false; wordsRead = readFromStream( - m_streamReader, - m_stream, - audioDataToPush, - m_maxSamplesPerPush, - TIMEOUT_FOR_READ_CALLS, - &didErrorOccur); + m_streamReader, + m_stream, + audioDataToPush.data(), + audioDataToPush.size(), + TIMEOUT_FOR_READ_CALLS, + &didErrorOccur); if (didErrorOccur) { /* * Note that this does not include the overrun condition, which the base class handles by instructing the @@ -336,7 +328,7 @@ void SensoryKeywordDetector::detectionLoop() { break; } else if (wordsRead == AudioInputStream::Reader::Error::OVERRUN) { /* - * Updating reference point of Reader so that new indices that get emitted to keyWordObservers can be + * Updating reference point of Reader so that new indices that get emitted to keyWordObservers can be * relative to it. */ m_beginIndexOfStreamReader = m_streamReader->tell(); @@ -349,8 +341,8 @@ void SensoryKeywordDetector::detectionLoop() { result = snsrDup(m_session, &newSession); if (result != SNSR_RC_OK) { ACSDK_ERROR(LX("detectionLoopFailed") - .d("reason", "sessionDuplicationFailed") - .d("error", getSensoryDetails(newSession, result))); + .d("reason", "sessionDuplicationFailed") + .d("error", getSensoryDetails(newSession, result))); break; } @@ -362,9 +354,10 @@ void SensoryKeywordDetector::detectionLoop() { } else if (wordsRead > 0) { // Words were successfully read. snsrSetStream( - m_session, - SNSR_SOURCE_AUDIO_PCM, - snsrStreamFromMemory(audioDataToPush, wordsRead * sizeof(*audioDataToPush), SNSR_ST_MODE_READ)); + m_session, + SNSR_SOURCE_AUDIO_PCM, + snsrStreamFromMemory( + audioDataToPush.data(), wordsRead * sizeof(*audioDataToPush.data()), SNSR_ST_MODE_READ)); result = snsrRun(m_session); switch (result) { case SNSR_RC_STREAM_END: @@ -375,11 +368,11 @@ void SensoryKeywordDetector::detectionLoop() { default: // A different return from the callback function that indicates some sort of error ACSDK_ERROR(LX("detectionLoopFailed") - .d("reason", "unexpectedReturn") - .d("error", getSensoryDetails(m_session, result))); + .d("reason", "unexpectedReturn") + .d("error", getSensoryDetails(m_session, result))); notifyKeyWordDetectorStateObservers( - KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ERROR); + KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ERROR); didErrorOccur = true; break; } @@ -393,5 +386,5 @@ void SensoryKeywordDetector::detectionLoop() { m_streamReader->close(); } -} // namespace kwd -} // namespace alexaClientSDK +} // namespace kwd +} // namespace alexaClientSDK diff --git a/KWD/Sensory/test/SensoryKeywordDetectorTest.cpp b/KWD/Sensory/test/SensoryKeywordDetectorTest.cpp index 8d92693854..9a70487033 100644 --- a/KWD/Sensory/test/SensoryKeywordDetectorTest.cpp +++ b/KWD/Sensory/test/SensoryKeywordDetectorTest.cpp @@ -1,7 +1,5 @@ /* - * SensoryKeyWordDetectorTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -84,10 +82,12 @@ std::vector BEGIN_INDICES_OF_ALEXAS_IN_ALEXA_STOP_ALEXA std::vector END_INDICES_OF_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE = {20960, 51312}; /// The compatible encoding for Sensory. -static const avsCommon::utils::AudioFormat::Encoding COMPATIBLE_ENCODING = avsCommon::utils::AudioFormat::Encoding::LPCM; +static const avsCommon::utils::AudioFormat::Encoding COMPATIBLE_ENCODING = + avsCommon::utils::AudioFormat::Encoding::LPCM; /// The compatible endianness for Sensory. -static const avsCommon::utils::AudioFormat::Endianness COMPATIBLE_ENDIANNESS = avsCommon::utils::AudioFormat::Endianness::LITTLE; +static const avsCommon::utils::AudioFormat::Endianness COMPATIBLE_ENDIANNESS = + avsCommon::utils::AudioFormat::Endianness::LITTLE; /// The compatible sample rate for Sensory. static const unsigned int COMPATIBLE_SAMPLE_RATE = 16000; @@ -113,10 +113,10 @@ class testKeyWordObserver : public KeyWordObserverInterface { /// Implementation of the KeyWordObserverInterface##onKeyWordDetected() call. void onKeyWordDetected( - std::shared_ptr stream, - std::string keyword, - AudioInputStream::Index beginIndex, - AudioInputStream::Index endIndex) { + std::shared_ptr stream, + std::string keyword, + AudioInputStream::Index beginIndex, + AudioInputStream::Index endIndex) { std::lock_guard lock(m_mutex); m_detectionResults.push_back({beginIndex, endIndex, keyword}); m_detectionOccurred.notify_one(); @@ -130,9 +130,10 @@ class testKeyWordObserver : public KeyWordObserverInterface { * @return The detection results that actually occurred. */ std::vector waitForNDetections( - unsigned int numDetectionsExpected, std::chrono::milliseconds timeout) { + unsigned int numDetectionsExpected, + std::chrono::milliseconds timeout) { std::unique_lock lock(m_mutex); - m_detectionOccurred.wait_for(lock, timeout, [this, numDetectionsExpected] () { + m_detectionOccurred.wait_for(lock, timeout, [this, numDetectionsExpected]() { return m_detectionResults.size() == numDetectionsExpected; }); return m_detectionResults; @@ -155,9 +156,9 @@ class testStateObserver : public KeyWordDetectorStateObserverInterface { /** * Constructor. */ - testStateObserver() : - m_state(KeyWordDetectorStateObserverInterface::KeyWordDetectorState::STREAM_CLOSED), - m_stateChangeOccurred{false} { + testStateObserver() : + m_state(KeyWordDetectorStateObserverInterface::KeyWordDetectorState::STREAM_CLOSED), + m_stateChangeOccurred{false} { } /// Implementation of the KeyWordDetectorStateObserverInterface##onStateChanged() call. @@ -176,11 +177,10 @@ class testStateObserver : public KeyWordDetectorStateObserverInterface { * @return Returns the state of the observer. */ KeyWordDetectorStateObserverInterface::KeyWordDetectorState waitForStateChange( - std::chrono::milliseconds timeout, bool* stateChanged) { + std::chrono::milliseconds timeout, + bool* stateChanged) { std::unique_lock lock(m_mutex); - bool success = m_stateChanged.wait_for(lock, timeout, [this] () { - return m_stateChangeOccurred; - }); + bool success = m_stateChanged.wait_for(lock, timeout, [this]() { return m_stateChangeOccurred; }); if (!success) { *stateChanged = false; @@ -190,6 +190,7 @@ class testStateObserver : public KeyWordDetectorStateObserverInterface { } return m_state; } + private: /// The state of the observer. KeyWordDetectorStateObserverInterface::KeyWordDetectorState m_state; @@ -205,7 +206,7 @@ class testStateObserver : public KeyWordDetectorStateObserverInterface { }; class SensoryKeywordTest : public ::testing::Test { - protected: +protected: /** * Reads audio from a WAV file. * @@ -213,7 +214,7 @@ class SensoryKeywordTest : public ::testing::Test { * @param [out] errorOccurred Lets users know if any errors occurred while parsing the file. * @return A vector of int16_t containing the raw audio data of the WAV file without the RIFF header. */ - std::vector readAudioFromFile(const std::string &fileName, bool* errorOccurred) { + std::vector readAudioFromFile(const std::string& fileName, bool* errorOccurred) { const int RIFF_HEADER_SIZE = 44; std::ifstream inputFile(fileName.c_str(), std::ifstream::binary); @@ -240,9 +241,9 @@ class SensoryKeywordTest : public ::testing::Test { std::vector retVal(numSamples, 0); - inputFile.read((char *)&retVal[0], numSamples * 2); + inputFile.read((char*)&retVal[0], numSamples * 2); - if (inputFile.gcount() != numSamples*2) { + if (inputFile.gcount() != numSamples * 2) { std::cout << "Error reading audio file" << std::endl; if (errorOccurred) { *errorOccurred = true; @@ -267,16 +268,16 @@ class SensoryKeywordTest : public ::testing::Test { * @return @c true if the result is present within the margin and @c false otherwise. */ bool isResultPresent( - std::vector& results, - AudioInputStream::Index expectedBeginIndex, - AudioInputStream::Index expectedEndIndex, - const std::string& expectedKeyword) { - AudioInputStream::Index highBoundOfBeginIndex = expectedBeginIndex + MARGIN_IN_SAMPLES; + std::vector& results, + AudioInputStream::Index expectedBeginIndex, + AudioInputStream::Index expectedEndIndex, + const std::string& expectedKeyword) { + AudioInputStream::Index highBoundOfBeginIndex = expectedBeginIndex + MARGIN_IN_SAMPLES; AudioInputStream::Index lowBoundOfBeginIndex = expectedBeginIndex - MARGIN_IN_SAMPLES; AudioInputStream::Index highBoundOfEndIndex = expectedEndIndex + MARGIN_IN_SAMPLES; AudioInputStream::Index lowBoundOfEndIndex = expectedEndIndex - MARGIN_IN_SAMPLES; for (auto result : results) { - if (result.endIndex <= highBoundOfEndIndex && result.endIndex >= lowBoundOfEndIndex && + if (result.endIndex <= highBoundOfEndIndex && result.endIndex >= lowBoundOfEndIndex && result.beginIndex <= highBoundOfBeginIndex && result.beginIndex >= lowBoundOfBeginIndex && expectedKeyword == result.keyword) { return true; @@ -306,10 +307,9 @@ class SensoryKeywordTest : public ::testing::Test { compatibleAudioFormat.endianness = COMPATIBLE_ENDIANNESS; compatibleAudioFormat.encoding = COMPATIBLE_ENCODING; - - std::ifstream filePresent((inputsDirPath+MODEL_FILE).c_str()); - ASSERT_TRUE(filePresent.good()) << - "Unable to find " + inputsDirPath+MODEL_FILE << ". Please place model file within this location."; + std::ifstream filePresent((inputsDirPath + MODEL_FILE).c_str()); + ASSERT_TRUE(filePresent.good()) << "Unable to find " + inputsDirPath + MODEL_FILE + << ". Please place model file within this location."; modelFilePath = inputsDirPath + MODEL_FILE; } @@ -318,11 +318,7 @@ class SensoryKeywordTest : public ::testing::Test { /// Tests that we don't get back a valid detector if an invalid stream is passed in. TEST_F(SensoryKeywordTest, invalidStream) { auto detector = SensoryKeywordDetector::create( - nullptr, - compatibleAudioFormat, - {keyWordObserver1}, - {stateObserver}, - modelFilePath); + nullptr, compatibleAudioFormat, {keyWordObserver1}, {stateObserver}, modelFilePath); ASSERT_FALSE(detector); } @@ -334,12 +330,8 @@ TEST_F(SensoryKeywordTest, incompatibleEndianness) { compatibleAudioFormat.endianness = AudioFormat::Endianness::BIG; - auto detector = SensoryKeywordDetector::create( - sds, - compatibleAudioFormat, - {keyWordObserver1}, - {stateObserver}, - modelFilePath); + auto detector = + SensoryKeywordDetector::create(sds, compatibleAudioFormat, {keyWordObserver1}, {stateObserver}, modelFilePath); ASSERT_FALSE(detector); } @@ -349,8 +341,8 @@ TEST_F(SensoryKeywordTest, getExpectedNumberOfDetectionsInFourAlexasAudioFileFor auto fourAlexasSds = avsCommon::avs::AudioInputStream::create(fourAlexasBuffer, 2, 1); std::shared_ptr fourAlexasAudioBuffer = std::move(fourAlexasSds); - std::unique_ptr fourAlexasAudioBufferWriter = fourAlexasAudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + std::unique_ptr fourAlexasAudioBufferWriter = + fourAlexasAudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); std::string audioFilePath = inputsDirPath + FOUR_ALEXAS_AUDIO_FILE; bool error; @@ -360,24 +352,19 @@ TEST_F(SensoryKeywordTest, getExpectedNumberOfDetectionsInFourAlexasAudioFileFor fourAlexasAudioBufferWriter->write(audioData.data(), audioData.size()); auto detector = SensoryKeywordDetector::create( - fourAlexasAudioBuffer, - compatibleAudioFormat, - {keyWordObserver1}, - {stateObserver}, - modelFilePath); + fourAlexasAudioBuffer, compatibleAudioFormat, {keyWordObserver1}, {stateObserver}, modelFilePath); ASSERT_TRUE(detector); std::this_thread::sleep_for(std::chrono::milliseconds(1000)); - auto detections = keyWordObserver1->waitForNDetections( - END_INDICES_OF_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE.size(), DEFAULT_TIMEOUT); + auto detections = + keyWordObserver1->waitForNDetections(END_INDICES_OF_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE.size(), DEFAULT_TIMEOUT); ASSERT_EQ(detections.size(), NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE); - for (unsigned int i=0; i fourAlexasAudioBuffer = std::move(fourAlexasSds); - std::unique_ptr fourAlexasAudioBufferWriter = fourAlexasAudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + std::unique_ptr fourAlexasAudioBufferWriter = + fourAlexasAudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); std::string audioFilePath = inputsDirPath + FOUR_ALEXAS_AUDIO_FILE; bool error; @@ -398,41 +385,37 @@ TEST_F(SensoryKeywordTest, getExpectedNumberOfDetectionsInFourAlexasAudioFileFor fourAlexasAudioBufferWriter->write(audioData.data(), audioData.size()); auto detector = SensoryKeywordDetector::create( - fourAlexasAudioBuffer, - compatibleAudioFormat, - {keyWordObserver1, keyWordObserver2}, - {stateObserver}, - modelFilePath); + fourAlexasAudioBuffer, + compatibleAudioFormat, + {keyWordObserver1, keyWordObserver2}, + {stateObserver}, + modelFilePath); ASSERT_TRUE(detector); - auto detections = keyWordObserver1->waitForNDetections( - NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE, DEFAULT_TIMEOUT); + auto detections = keyWordObserver1->waitForNDetections(NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE, DEFAULT_TIMEOUT); ASSERT_EQ(detections.size(), NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE); - for (unsigned int i=0; iwaitForNDetections( - NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE, DEFAULT_TIMEOUT); + detections = keyWordObserver2->waitForNDetections(NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE, DEFAULT_TIMEOUT); ASSERT_EQ(detections.size(), NUM_ALEXAS_IN_FOUR_ALEXAS_AUDIO_FILE); - for (unsigned int i=0; i alexaStopAlexaJokeAudioBuffer = std::move(alexaStopAlexaJokeSds); - std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = - alexaStopAlexaJokeAudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = + alexaStopAlexaJokeAudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); std::string audioFilePath = inputsDirPath + ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE; bool error; @@ -452,25 +434,20 @@ TEST_F(SensoryKeywordTest, getExpectedNumberOfDetectionsInAlexaStopAlexaJokeAudi alexaStopAlexaJokeAudioBufferWriter->write(audioData.data(), audioData.size()); auto detector = SensoryKeywordDetector::create( - alexaStopAlexaJokeAudioBuffer, - compatibleAudioFormat, - {keyWordObserver1}, - {stateObserver}, - modelFilePath); + alexaStopAlexaJokeAudioBuffer, compatibleAudioFormat, {keyWordObserver1}, {stateObserver}, modelFilePath); ASSERT_TRUE(detector); - auto detections = keyWordObserver1->waitForNDetections( - NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE, DEFAULT_TIMEOUT); + auto detections = + keyWordObserver1->waitForNDetections(NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE, DEFAULT_TIMEOUT); ASSERT_EQ(detections.size(), NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE); - for (unsigned int i=0; i alexaStopAlexaJokeAudioBuffer = std::move(alexaStopAlexaJokeSds); - std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = - alexaStopAlexaJokeAudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = + alexaStopAlexaJokeAudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); std::string audioFilePath = inputsDirPath + ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE; bool error; @@ -492,15 +468,11 @@ TEST_F(SensoryKeywordTest, getActiveState) { alexaStopAlexaJokeAudioBufferWriter->write(audioData.data(), audioData.size()); auto detector = SensoryKeywordDetector::create( - alexaStopAlexaJokeAudioBuffer, - compatibleAudioFormat, - {keyWordObserver1}, - {stateObserver}, - modelFilePath); + alexaStopAlexaJokeAudioBuffer, compatibleAudioFormat, {keyWordObserver1}, {stateObserver}, modelFilePath); ASSERT_TRUE(detector); bool stateChanged = false; - KeyWordDetectorStateObserverInterface::KeyWordDetectorState stateReceived = stateObserver->waitForStateChange( - DEFAULT_TIMEOUT, &stateChanged); + KeyWordDetectorStateObserverInterface::KeyWordDetectorState stateReceived = + stateObserver->waitForStateChange(DEFAULT_TIMEOUT, &stateChanged); ASSERT_TRUE(stateChanged); ASSERT_EQ(stateReceived, KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ACTIVE); } @@ -514,9 +486,8 @@ TEST_F(SensoryKeywordTest, getStreamClosedState) { auto alexaStopAlexaJokeSds = avsCommon::avs::AudioInputStream::create(alexaStopAlexaJokeBuffer, 2, 1); std::shared_ptr alexaStopAlexaJokeAudioBuffer = std::move(alexaStopAlexaJokeSds); - std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = - alexaStopAlexaJokeAudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = + alexaStopAlexaJokeAudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); std::string audioFilePath = inputsDirPath + ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE; bool error; @@ -526,34 +497,29 @@ TEST_F(SensoryKeywordTest, getStreamClosedState) { alexaStopAlexaJokeAudioBufferWriter->write(audioData.data(), audioData.size()); auto detector = SensoryKeywordDetector::create( - alexaStopAlexaJokeAudioBuffer, - compatibleAudioFormat, - {keyWordObserver1}, - {stateObserver}, - modelFilePath); + alexaStopAlexaJokeAudioBuffer, compatibleAudioFormat, {keyWordObserver1}, {stateObserver}, modelFilePath); ASSERT_TRUE(detector); // so that when we close the writer, we know for sure that the reader will be closed - auto detections = keyWordObserver1->waitForNDetections( - NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE, DEFAULT_TIMEOUT); + auto detections = + keyWordObserver1->waitForNDetections(NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE, DEFAULT_TIMEOUT); ASSERT_EQ(detections.size(), NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE); bool stateChanged = false; - KeyWordDetectorStateObserverInterface::KeyWordDetectorState stateReceived = stateObserver->waitForStateChange( - DEFAULT_TIMEOUT, &stateChanged); + KeyWordDetectorStateObserverInterface::KeyWordDetectorState stateReceived = + stateObserver->waitForStateChange(DEFAULT_TIMEOUT, &stateChanged); ASSERT_TRUE(stateChanged); ASSERT_EQ(stateReceived, KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ACTIVE); alexaStopAlexaJokeAudioBufferWriter->close(); stateChanged = false; - stateReceived = stateObserver->waitForStateChange( - DEFAULT_TIMEOUT, &stateChanged); + stateReceived = stateObserver->waitForStateChange(DEFAULT_TIMEOUT, &stateChanged); ASSERT_TRUE(stateChanged); ASSERT_EQ(stateReceived, KeyWordDetectorStateObserverInterface::KeyWordDetectorState::STREAM_CLOSED); } /** - * Tests that we get back the expected number of keywords for the alexa_stop_alexa_joke.wav file for one keyword + * Tests that we get back the expected number of keywords for the alexa_stop_alexa_joke.wav file for one keyword * observer even when SDS has other data prior to the audio file in it. This tests that the reference point that the * Sensory wrapper uses is working as expected. */ @@ -562,51 +528,45 @@ TEST_F(SensoryKeywordTest, getExpectedNumberOfDetectionsInAlexaStopAlexaJokeAudi auto alexaStopAlexaJokeSds = avsCommon::avs::AudioInputStream::create(alexaStopAlexaJokeBuffer, 2, 1); std::shared_ptr alexaStopAlexaJokeAudioBuffer = std::move(alexaStopAlexaJokeSds); - std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = - alexaStopAlexaJokeAudioBuffer->createWriter( - avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); + std::unique_ptr alexaStopAlexaJokeAudioBufferWriter = + alexaStopAlexaJokeAudioBuffer->createWriter(avsCommon::avs::AudioInputStream::Writer::Policy::NONBLOCKABLE); std::string audioFilePath = inputsDirPath + ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE; bool error; std::vector audioData = readAudioFromFile(audioFilePath, &error); ASSERT_FALSE(error); - std::vector randomData(5000,0); + std::vector randomData(5000, 0); alexaStopAlexaJokeAudioBufferWriter->write(randomData.data(), randomData.size()); auto detector = SensoryKeywordDetector::create( - alexaStopAlexaJokeAudioBuffer, - compatibleAudioFormat, - {keyWordObserver1}, - {stateObserver}, - modelFilePath); + alexaStopAlexaJokeAudioBuffer, compatibleAudioFormat, {keyWordObserver1}, {stateObserver}, modelFilePath); ASSERT_TRUE(detector); alexaStopAlexaJokeAudioBufferWriter->write(audioData.data(), audioData.size()); - auto detections = keyWordObserver1->waitForNDetections( - NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE, DEFAULT_TIMEOUT); + auto detections = + keyWordObserver1->waitForNDetections(NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE, DEFAULT_TIMEOUT); ASSERT_EQ(detections.size(), NUM_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE); for (unsigned int i = 0; i < END_INDICES_OF_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE.size(); ++i) { ASSERT_TRUE(isResultPresent( - detections, - BEGIN_INDICES_OF_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE.at(i) + randomData.size(), - END_INDICES_OF_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE.at(i) + randomData.size(), - KEYWORD) - ); + detections, + BEGIN_INDICES_OF_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE.at(i) + randomData.size(), + END_INDICES_OF_ALEXAS_IN_ALEXA_STOP_ALEXA_JOKE_AUDIO_FILE.at(i) + randomData.size(), + KEYWORD)); } } -} // namespace test -} // namespace kwd -} // namespace alexaClientSDK +} // namespace test +} // namespace kwd +} // namespace alexaClientSDK -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); if (argc < 2) { - std::cerr << "USAGE: SensoryKeywordDetectorTest " << std::endl; + std::cerr << "USAGE: " << std::string(argv[0]) << " " << std::endl; return 1; } else { alexaClientSDK::kwd::test::inputsDirPath = std::string(argv[1]); diff --git a/KWD/include/KWD/AbstractKeywordDetector.h b/KWD/include/KWD/AbstractKeywordDetector.h index f1fb6b0753..f13d848d3c 100644 --- a/KWD/include/KWD/AbstractKeywordDetector.h +++ b/KWD/include/KWD/AbstractKeywordDetector.h @@ -1,7 +1,5 @@ /* - * AbstractKeywordDetector.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_KWD_INCLUDE_KWD_ABSTRACT_KEY_WORD_DETECTOR_H_ -#define ALEXA_CLIENT_SDK_KWD_INCLUDE_KWD_ABSTRACT_KEY_WORD_DETECTOR_H_ +#ifndef ALEXA_CLIENT_SDK_KWD_INCLUDE_KWD_ABSTRACTKEYWORDDETECTOR_H_ +#define ALEXA_CLIENT_SDK_KWD_INCLUDE_KWD_ABSTRACTKEYWORDDETECTOR_H_ #include #include @@ -65,6 +63,7 @@ class AbstractKeywordDetector { * Destructor. */ virtual ~AbstractKeywordDetector() = default; + protected: /** * Constructor. @@ -73,12 +72,11 @@ class AbstractKeywordDetector { * @param keyWordDetectorStateObservers The observers to notify of state changes in the engine. */ AbstractKeywordDetector( - std::unordered_set> keyWordObservers = - std::unordered_set>(), - std::unordered_set> - keyWordDetectorStateObservers = - std::unordered_set< - std::shared_ptr>()); + std::unordered_set> keyWordObservers = + std::unordered_set>(), + std::unordered_set> + keyWordDetectorStateObservers = + std::unordered_set>()); /** * Notifies all keyword observers of the keyword detection. @@ -89,10 +87,10 @@ class AbstractKeywordDetector { * @param endIndex The absolute end index of the last part of the keyword within the stream of the @c stream. */ void notifyKeyWordObservers( - std::shared_ptr stream, - std::string keyword, - avsCommon::avs::AudioInputStream::Index beginIndex, - avsCommon::avs::AudioInputStream::Index endIndex) const; + std::shared_ptr stream, + std::string keyword, + avsCommon::avs::AudioInputStream::Index beginIndex, + avsCommon::avs::AudioInputStream::Index endIndex) const; /** * Notifies all keyword detector state observers of state changes in the derived detector. @@ -100,7 +98,7 @@ class AbstractKeywordDetector { * @param state The state of the detector. */ void notifyKeyWordDetectorStateObservers( - avsCommon::sdkInterfaces::KeyWordDetectorStateObserverInterface::KeyWordDetectorState state); + avsCommon::sdkInterfaces::KeyWordDetectorStateObserverInterface::KeyWordDetectorState state); /** * Reads from the specified stream into the specified buffer and does the appropriate error checking and observer @@ -116,7 +114,7 @@ class AbstractKeywordDetector { ssize_t readFromStream( std::shared_ptr reader, std::shared_ptr stream, - void * buf, + void* buf, size_t nWords, std::chrono::milliseconds timeout, bool* errorOccurred); @@ -128,6 +126,7 @@ class AbstractKeywordDetector { * @return @c true if the endiannesses don't match and @c false otherwise. */ static bool isByteswappingRequired(avsCommon::utils::AudioFormat audioFormat); + private: /** * The observers to notify on key word detections. This should be locked with m_keyWordObserversMutex prior to @@ -139,7 +138,7 @@ class AbstractKeywordDetector { * The observers to notify of state changes in the engine. This should be locked with * m_keyWordDetectorStateObserversMutex prior to usage. */ - std::unordered_set> + std::unordered_set> m_keyWordDetectorStateObservers; /// Lock to protect m_keyWordObservers when users wish to add or remove observers @@ -155,7 +154,7 @@ class AbstractKeywordDetector { avsCommon::sdkInterfaces::KeyWordDetectorStateObserverInterface::KeyWordDetectorState m_detectorState; }; -} // namespace kwd -} // namespace alexaClientSDK +} // namespace kwd +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_KWD_INCLUDE_KWD_ABSTRACT_KEY_WORD_DETECTOR_H_ +#endif // ALEXA_CLIENT_SDK_KWD_INCLUDE_KWD_ABSTRACTKEYWORDDETECTOR_H_ diff --git a/KWD/src/AbstractKeywordDetector.cpp b/KWD/src/AbstractKeywordDetector.cpp index 54d7df1355..3031336290 100644 --- a/KWD/src/AbstractKeywordDetector.cpp +++ b/KWD/src/AbstractKeywordDetector.cpp @@ -1,7 +1,5 @@ /* - * AbstractKeywordDetector.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -47,30 +45,30 @@ void AbstractKeywordDetector::removeKeyWordObserver(std::shared_ptr keyWordDetectorStateObserver) { + std::shared_ptr keyWordDetectorStateObserver) { std::lock_guard lock(m_keyWordDetectorStateObserversMutex); m_keyWordDetectorStateObservers.insert(keyWordDetectorStateObserver); } void AbstractKeywordDetector::removeKeyWordDetectorStateObserver( - std::shared_ptr keyWordDetectorStateObserver) { + std::shared_ptr keyWordDetectorStateObserver) { std::lock_guard lock(m_keyWordDetectorStateObserversMutex); m_keyWordDetectorStateObservers.erase(keyWordDetectorStateObserver); } AbstractKeywordDetector::AbstractKeywordDetector( - std::unordered_set> keyWordObservers, - std::unordered_set> keyWordDetectorStateObservers) : - m_keyWordObservers{keyWordObservers}, - m_keyWordDetectorStateObservers{keyWordDetectorStateObservers}, - m_detectorState{KeyWordDetectorStateObserverInterface::KeyWordDetectorState::STREAM_CLOSED} { + std::unordered_set> keyWordObservers, + std::unordered_set> keyWordDetectorStateObservers) : + m_keyWordObservers{keyWordObservers}, + m_keyWordDetectorStateObservers{keyWordDetectorStateObservers}, + m_detectorState{KeyWordDetectorStateObserverInterface::KeyWordDetectorState::STREAM_CLOSED} { } void AbstractKeywordDetector::notifyKeyWordObservers( - std::shared_ptr stream, - std::string keyword, - AudioInputStream::Index beginIndex, - AudioInputStream::Index endIndex) const { + std::shared_ptr stream, + std::string keyword, + AudioInputStream::Index beginIndex, + AudioInputStream::Index endIndex) const { std::lock_guard lock(m_keyWordObserversMutex); for (auto keyWordObserver : m_keyWordObservers) { keyWordObserver->onKeyWordDetected(stream, keyword, beginIndex, endIndex); @@ -78,24 +76,23 @@ void AbstractKeywordDetector::notifyKeyWordObservers( } void AbstractKeywordDetector::notifyKeyWordDetectorStateObservers( - KeyWordDetectorStateObserverInterface::KeyWordDetectorState state) { + KeyWordDetectorStateObserverInterface::KeyWordDetectorState state) { if (m_detectorState != state) { m_detectorState = state; std::lock_guard lock(m_keyWordDetectorStateObserversMutex); for (auto keyWordDetectorStateObserver : m_keyWordDetectorStateObservers) { - keyWordDetectorStateObserver->onStateChanged( - m_detectorState); + keyWordDetectorStateObserver->onStateChanged(m_detectorState); } } } ssize_t AbstractKeywordDetector::readFromStream( - std::shared_ptr reader, - std::shared_ptr stream, - void * buf, - size_t nWords, - std::chrono::milliseconds timeout, - bool* errorOccurred) { + std::shared_ptr reader, + std::shared_ptr stream, + void* buf, + size_t nWords, + std::chrono::milliseconds timeout, + bool* errorOccurred) { if (errorOccurred) { *errorOccurred = false; } @@ -103,19 +100,20 @@ ssize_t AbstractKeywordDetector::readFromStream( // Stream has been closed if (wordsRead == 0) { ACSDK_DEBUG(LX("readFromStream").d("event", "streamClosed")); - notifyKeyWordDetectorStateObservers( - KeyWordDetectorStateObserverInterface::KeyWordDetectorState::STREAM_CLOSED); + notifyKeyWordDetectorStateObservers(KeyWordDetectorStateObserverInterface::KeyWordDetectorState::STREAM_CLOSED); if (errorOccurred) { *errorOccurred = true; } - // This represents some sort of error with the read() call + // This represents some sort of error with the read() call } else if (wordsRead < 0) { switch (wordsRead) { case AudioInputStream::Reader::Error::OVERRUN: ACSDK_ERROR(LX("readFromStreamFailed") - .d("reason", "streamOverrun") - .d("numWordsOverrun", - std::to_string(reader->tell(AudioInputStream::Reader::Reference::BEFORE_WRITER) - stream->getDataSize()))); + .d("reason", "streamOverrun") + .d("numWordsOverrun", + std::to_string( + reader->tell(AudioInputStream::Reader::Reference::BEFORE_WRITER) - + stream->getDataSize()))); reader->seek(0, AudioInputStream::Reader::Reference::BEFORE_WRITER); break; case AudioInputStream::Reader::Error::TIMEDOUT: @@ -124,12 +122,11 @@ ssize_t AbstractKeywordDetector::readFromStream( default: // We should never get this since we are using a Blocking Reader. ACSDK_ERROR(LX("readFromStreamFailed") - .d("reason", "unexpectedError") - // Leave as ssize_t to avoid messiness of casting to enum. - .d("error", wordsRead)); + .d("reason", "unexpectedError") + // Leave as ssize_t to avoid messiness of casting to enum. + .d("error", wordsRead)); - notifyKeyWordDetectorStateObservers( - KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ERROR); + notifyKeyWordDetectorStateObservers(KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ERROR); if (errorOccurred) { *errorOccurred = true; } @@ -151,5 +148,5 @@ bool AbstractKeywordDetector::isByteswappingRequired(avsCommon::utils::AudioForm return isPlatformLittleEndian != isFormatLittleEndian; } -} // namespace kwd -} // namespace alexaClientSDK +} // namespace kwd +} // namespace alexaClientSDK diff --git a/KWD/test/AbstractKeywordDetectorTest.cpp b/KWD/test/AbstractKeywordDetectorTest.cpp index 5391c27cc7..c92ecc295f 100644 --- a/KWD/test/AbstractKeywordDetectorTest.cpp +++ b/KWD/test/AbstractKeywordDetectorTest.cpp @@ -1,7 +1,5 @@ /* - * AbstractKeywordDetecorTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -37,13 +35,12 @@ using ::testing::_; class MockKeyWordObserver : public avsCommon::sdkInterfaces::KeyWordObserverInterface { public: MOCK_METHOD4( - onKeyWordDetected, + onKeyWordDetected, void( std::shared_ptr stream, std::string keyword, avsCommon::avs::AudioInputStream::Index beginIndex, - avsCommon::avs::AudioInputStream::Index endIndex) - ); + avsCommon::avs::AudioInputStream::Index endIndex)); }; /// A test observer that mocks out the KeyWordDetectorStateObserverInterface##onStateChanged() call. @@ -51,9 +48,8 @@ class MockStateObserver : public avsCommon::sdkInterfaces::KeyWordDetectorStateO public: MOCK_METHOD1( onStateChanged, - void( - avsCommon::sdkInterfaces::KeyWordDetectorStateObserverInterface::KeyWordDetectorState keyWordDetectorState) - ); + void(avsCommon::sdkInterfaces::KeyWordDetectorStateObserverInterface::KeyWordDetectorState + keyWordDetectorState)); }; /** @@ -74,7 +70,7 @@ class MockKeyWordDetector : public AbstractKeywordDetector { * @param state The state to notify observers of. */ void sendStateChangeCallObservers( - avsCommon::sdkInterfaces::KeyWordDetectorStateObserverInterface::KeyWordDetectorState state) { + avsCommon::sdkInterfaces::KeyWordDetectorStateObserverInterface::KeyWordDetectorState state) { notifyKeyWordDetectorStateObservers(state); }; }; @@ -99,8 +95,7 @@ class AbstractKeyWordDetectorTest : public ::testing::Test { TEST_F(AbstractKeyWordDetectorTest, testAddKeyWordObserver) { detector->addKeyWordObserver(keyWordObserver1); - EXPECT_CALL(*keyWordObserver1, onKeyWordDetected(_, _, _, _)) - .Times(1); + EXPECT_CALL(*keyWordObserver1, onKeyWordDetected(_, _, _, _)).Times(1); detector->sendKeyWordCallToObservers(); } @@ -108,10 +103,8 @@ TEST_F(AbstractKeyWordDetectorTest, testAddMultipleKeyWordObserver) { detector->addKeyWordObserver(keyWordObserver1); detector->addKeyWordObserver(keyWordObserver2); - EXPECT_CALL(*keyWordObserver1, onKeyWordDetected(_, _, _, _)) - .Times(1); - EXPECT_CALL(*keyWordObserver2, onKeyWordDetected(_, _, _, _)) - .Times(1); + EXPECT_CALL(*keyWordObserver1, onKeyWordDetected(_, _, _, _)).Times(1); + EXPECT_CALL(*keyWordObserver2, onKeyWordDetected(_, _, _, _)).Times(1); detector->sendKeyWordCallToObservers(); } @@ -119,26 +112,21 @@ TEST_F(AbstractKeyWordDetectorTest, testRemoveKeyWordObserver) { detector->addKeyWordObserver(keyWordObserver1); detector->addKeyWordObserver(keyWordObserver2); - EXPECT_CALL(*keyWordObserver1, onKeyWordDetected(_, _, _, _)) - .Times(1); - EXPECT_CALL(*keyWordObserver2, onKeyWordDetected(_, _, _, _)) - .Times(1); + EXPECT_CALL(*keyWordObserver1, onKeyWordDetected(_, _, _, _)).Times(1); + EXPECT_CALL(*keyWordObserver2, onKeyWordDetected(_, _, _, _)).Times(1); detector->sendKeyWordCallToObservers(); detector->removeKeyWordObserver(keyWordObserver1); - EXPECT_CALL(*keyWordObserver1, onKeyWordDetected(_, _, _, _)) - .Times(0); - EXPECT_CALL(*keyWordObserver2, onKeyWordDetected(_, _, _, _)) - .Times(1); + EXPECT_CALL(*keyWordObserver1, onKeyWordDetected(_, _, _, _)).Times(0); + EXPECT_CALL(*keyWordObserver2, onKeyWordDetected(_, _, _, _)).Times(1); detector->sendKeyWordCallToObservers(); } TEST_F(AbstractKeyWordDetectorTest, testAddStateObserver) { detector->addKeyWordDetectorStateObserver(stateObserver1); - EXPECT_CALL(*stateObserver1, onStateChanged(_)) - .Times(1); + EXPECT_CALL(*stateObserver1, onStateChanged(_)).Times(1); detector->sendStateChangeCallObservers( avsCommon::sdkInterfaces::KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ACTIVE); } @@ -147,10 +135,8 @@ TEST_F(AbstractKeyWordDetectorTest, testAddMultipleStateObservers) { detector->addKeyWordDetectorStateObserver(stateObserver1); detector->addKeyWordDetectorStateObserver(stateObserver2); - EXPECT_CALL(*stateObserver1, onStateChanged(_)) - .Times(1); - EXPECT_CALL(*stateObserver2, onStateChanged(_)) - .Times(1); + EXPECT_CALL(*stateObserver1, onStateChanged(_)).Times(1); + EXPECT_CALL(*stateObserver2, onStateChanged(_)).Times(1); detector->sendStateChangeCallObservers( avsCommon::sdkInterfaces::KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ACTIVE); } @@ -159,19 +145,15 @@ TEST_F(AbstractKeyWordDetectorTest, testRemoveStateObserver) { detector->addKeyWordDetectorStateObserver(stateObserver1); detector->addKeyWordDetectorStateObserver(stateObserver2); - EXPECT_CALL(*stateObserver1, onStateChanged(_)) - .Times(1); - EXPECT_CALL(*stateObserver2, onStateChanged(_)) - .Times(1); + EXPECT_CALL(*stateObserver1, onStateChanged(_)).Times(1); + EXPECT_CALL(*stateObserver2, onStateChanged(_)).Times(1); detector->sendStateChangeCallObservers( avsCommon::sdkInterfaces::KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ACTIVE); detector->removeKeyWordDetectorStateObserver(stateObserver1); - EXPECT_CALL(*stateObserver1, onStateChanged(_)) - .Times(0); - EXPECT_CALL(*stateObserver2, onStateChanged(_)) - .Times(1); + EXPECT_CALL(*stateObserver1, onStateChanged(_)).Times(0); + EXPECT_CALL(*stateObserver2, onStateChanged(_)).Times(1); detector->sendStateChangeCallObservers( avsCommon::sdkInterfaces::KeyWordDetectorStateObserverInterface::KeyWordDetectorState::STREAM_CLOSED); } @@ -179,17 +161,15 @@ TEST_F(AbstractKeyWordDetectorTest, testRemoveStateObserver) { TEST_F(AbstractKeyWordDetectorTest, testObserversDontGetNotifiedOfSameStateTwice) { detector->addKeyWordDetectorStateObserver(stateObserver1); - EXPECT_CALL(*stateObserver1, onStateChanged(_)) - .Times(1); + EXPECT_CALL(*stateObserver1, onStateChanged(_)).Times(1); detector->sendStateChangeCallObservers( avsCommon::sdkInterfaces::KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ACTIVE); - EXPECT_CALL(*stateObserver1, onStateChanged(_)) - .Times(0); + EXPECT_CALL(*stateObserver1, onStateChanged(_)).Times(0); detector->sendStateChangeCallObservers( avsCommon::sdkInterfaces::KeyWordDetectorStateObserverInterface::KeyWordDetectorState::ACTIVE); } -} // namespace test -} // namespace kwd -} // namespace alexaClientSDK +} // namespace test +} // namespace kwd +} // namespace alexaClientSDK diff --git a/MediaPlayer/CMakeLists.txt b/MediaPlayer/CMakeLists.txt index b1157d60c7..0dcde578f7 100644 --- a/MediaPlayer/CMakeLists.txt +++ b/MediaPlayer/CMakeLists.txt @@ -7,5 +7,5 @@ if(NOT GSTREAMER_MEDIA_PLAYER) message("GStreamer based media player will not be built.") else() add_subdirectory("src") - add_subdirectory("test") + acsdk_add_test_subdirectory_if_allowed() endif() diff --git a/MediaPlayer/include/MediaPlayer/AttachmentReaderSource.h b/MediaPlayer/include/MediaPlayer/AttachmentReaderSource.h index f43543e302..d65baf70e5 100644 --- a/MediaPlayer/include/MediaPlayer/AttachmentReaderSource.h +++ b/MediaPlayer/include/MediaPlayer/AttachmentReaderSource.h @@ -1,7 +1,5 @@ /* - * AttachmentReaderSource.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_ATTACHMENT_READER_SOURCE_H_ -#define ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_ATTACHMENT_READER_SOURCE_H_ +#ifndef ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_ATTACHMENTREADERSOURCE_H_ +#define ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_ATTACHMENTREADERSOURCE_H_ #include @@ -30,7 +28,6 @@ namespace alexaClientSDK { namespace mediaPlayer { - class AttachmentReaderSource : public BaseStreamSource { public: /** @@ -38,15 +35,21 @@ class AttachmentReaderSource : public BaseStreamSource { * * @param pipeline The @c PipelineInterface through which the source of the @c AudioPipeline may be set. * @param attachmentReader The @c AttachmentReader from which to create the pipeline source from. - * + * @param audioFormat The audioFormat to be used when playing raw PCM data. * @return An instance of the @c AttachmentReaderSource if successful else a @c nullptr. */ static std::unique_ptr create( - PipelineInterface* pipeline, - std::shared_ptr attachmentReader); + PipelineInterface* pipeline, + std::shared_ptr attachmentReader, + const avsCommon::utils::AudioFormat* audioFormat); ~AttachmentReaderSource(); + /// @name Overridden SourceInterface methods. + /// @{ + bool isPlaybackRemote() const override; + /// @} + private: /** * Constructor. @@ -55,14 +58,20 @@ class AttachmentReaderSource : public BaseStreamSource { * @param attachmentReader The @c AttachmentReader from which to create the pipeline source from. */ AttachmentReaderSource( - PipelineInterface* pipeline, - std::shared_ptr attachmentReader); + PipelineInterface* pipeline, + std::shared_ptr attachmentReader); /// @name Overridden BaseStreamSource methods. /// @{ bool isOpen() override; void close() override; gboolean handleReadData() override; + gboolean handleSeekData(guint64 offset) override; + /// @} + + /// @name RequiresShutdown Functions + /// @{ + void doShutdown() override{}; /// @} private: @@ -70,8 +79,7 @@ class AttachmentReaderSource : public BaseStreamSource { std::shared_ptr m_reader; }; -} // namespace mediaPlayer -} // namespace alexaClientSDK - -#endif // ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_ATTACHMENT_READER_SOURCE_H_ +} // namespace mediaPlayer +} // namespace alexaClientSDK +#endif // ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_ATTACHMENTREADERSOURCE_H_ diff --git a/MediaPlayer/include/MediaPlayer/BaseStreamSource.h b/MediaPlayer/include/MediaPlayer/BaseStreamSource.h index 6ab3105b98..4fa251b432 100644 --- a/MediaPlayer/include/MediaPlayer/BaseStreamSource.h +++ b/MediaPlayer/include/MediaPlayer/BaseStreamSource.h @@ -1,7 +1,5 @@ /* - * BaseStreamSource.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_BASE_STREAM_SOURCE_H_ -#define ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_BASE_STREAM_SOURCE_H_ +#ifndef ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_BASESTREAMSOURCE_H_ +#define ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_BASESTREAMSOURCE_H_ #include @@ -30,16 +28,16 @@ namespace alexaClientSDK { namespace mediaPlayer { - class BaseStreamSource : public SourceInterface { public: /** * Constructor. * * @param pipeline The @c PipelineInterface through which the source of the @c AudioPipeline may be set. + * @param className The name of the class to be passed to @c RequiresShutdown. */ - BaseStreamSource(PipelineInterface* pipeline); - + BaseStreamSource(PipelineInterface* pipeline, const std::string& className); + ~BaseStreamSource() override; bool hasAdditionalData() override; @@ -53,9 +51,10 @@ class BaseStreamSource : public SourceInterface { * the elements to the @c pipeline of the @c AudioPipeline, linking the elements and setting up the * callbacks for signals should be handled. * + * @param audioFormat The audioFormat to be used when playing raw PCM data. * @return @c true if the initialization was successful else @c false. */ - bool init(); + bool init(const avsCommon::utils::AudioFormat* audioFormat = nullptr); /** * Return whether the audio source is still open. @@ -76,6 +75,13 @@ class BaseStreamSource : public SourceInterface { */ virtual gboolean handleReadData() = 0; + /** + * Seeks to the appropriate offset. Any data pushed after this should come from the new offset. + * + * @return @c false if the seek failed, or @c true otherwise. + */ + virtual gboolean handleSeekData(guint64 offset) = 0; + /** * Get the AppSrc to which this instance should feed audio data. * @@ -141,6 +147,8 @@ class BaseStreamSource : public SourceInterface { */ gboolean handleEnoughData(); + static gboolean onSeekData(GstElement* pipeline, guint64 offset, gpointer source); + /** * The callback for reading data from this instance. * @@ -170,6 +178,9 @@ class BaseStreamSource : public SourceInterface { /// ID of the handler installed to receive enough data signals. guint m_enoughDataHandlerId; + /// ID of the handler installed to receive seek data signals. + guint m_seekDataHandlerId; + /// Mutex to serialize access to idle callback IDs. std::mutex m_callbackIdMutex; @@ -180,8 +191,7 @@ class BaseStreamSource : public SourceInterface { guint m_enoughDataCallbackId; }; -} // namespace mediaPlayer -} // namespace alexaClientSDK - -#endif // ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_BASE_STREAM_SOURCE_H_ +} // namespace mediaPlayer +} // namespace alexaClientSDK +#endif // ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_BASESTREAMSOURCE_H_ diff --git a/MediaPlayer/include/MediaPlayer/ErrorTypeConversion.h b/MediaPlayer/include/MediaPlayer/ErrorTypeConversion.h new file mode 100644 index 0000000000..f3d33e0493 --- /dev/null +++ b/MediaPlayer/include/MediaPlayer/ErrorTypeConversion.h @@ -0,0 +1,38 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_ERRORTYPECONVERSION_H_ +#define ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_ERRORTYPECONVERSION_H_ + +#include + +#include + +namespace alexaClientSDK { +namespace mediaPlayer { + +/** + * Convert a GStreamer @c GError to an @c ErrorType. + * + * @param error The @c GError to convert. + * @param remoteResource Indicates whether it should be for a resource that is remote. + * @return The converted @c ErrorType. + */ +avsCommon::utils::mediaPlayer::ErrorType gerrorToErrorType(const GError* error, bool remoteResource); + +} // namespace mediaPlayer +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_ERRORTYPECONVERSION_H_ diff --git a/MediaPlayer/include/MediaPlayer/IStreamSource.h b/MediaPlayer/include/MediaPlayer/IStreamSource.h index 77164d531d..538f88ccfb 100644 --- a/MediaPlayer/include/MediaPlayer/IStreamSource.h +++ b/MediaPlayer/include/MediaPlayer/IStreamSource.h @@ -1,7 +1,5 @@ /* - * IStreamReaderSource.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_ISTREAM_SOURCE_H_ -#define ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_ISTREAM_SOURCE_H_ +#ifndef ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_ISTREAMSOURCE_H_ +#define ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_ISTREAMSOURCE_H_ #include #include @@ -41,9 +39,9 @@ class IStreamSource : public BaseStreamSource { * @param repeat Whether the stream should be replayed until stopped. */ static std::unique_ptr create( - PipelineInterface* pipeline, - std::shared_ptr stream, - bool repeat); + PipelineInterface* pipeline, + std::shared_ptr stream, + bool repeat); /** * Destructor. @@ -60,11 +58,23 @@ class IStreamSource : public BaseStreamSource { */ IStreamSource(PipelineInterface* pipeline, std::shared_ptr stream, bool repeat); + /// @name Overridden SourceInterface methods. + /// @{ + bool isPlaybackRemote() const override; + bool hasAdditionalData() override; + /// @} + + /// @name RequiresShutdown Functions + /// @{ + void doShutdown() override{}; + /// @} + /// @name Overridden BaseStreamSource methods. /// @{ bool isOpen() override; void close() override; gboolean handleReadData() override; + gboolean handleSeekData(guint64 offset) override; /// @} private: @@ -75,8 +85,7 @@ class IStreamSource : public BaseStreamSource { bool m_repeat; }; -} // namespace mediaPlayer -} // namespace alexaClientSDK - -#endif // ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_ISTREAM_SOURCE_H_ +} // namespace mediaPlayer +} // namespace alexaClientSDK +#endif // ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_ISTREAMSOURCE_H_ diff --git a/MediaPlayer/include/MediaPlayer/MediaPlayer.h b/MediaPlayer/include/MediaPlayer/MediaPlayer.h index 4e8bab84d1..8b143b171a 100644 --- a/MediaPlayer/include/MediaPlayer/MediaPlayer.h +++ b/MediaPlayer/include/MediaPlayer/MediaPlayer.h @@ -1,7 +1,5 @@ /* - * MediaPlayer.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,9 +13,10 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_MEDIA_PLAYER_H_ -#define ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_MEDIA_PLAYER_H_ +#ifndef ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_MEDIAPLAYER_H_ +#define ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_MEDIAPLAYER_H_ +#include #include #include #include @@ -29,10 +28,14 @@ #include #include +#include -#include +#include +#include #include +#include #include +#include #include "MediaPlayer/OffsetManager.h" #include "MediaPlayer/PipelineInterface.h" @@ -41,19 +44,32 @@ namespace alexaClientSDK { namespace mediaPlayer { +typedef std::vector VectorOfTags; + /** * Class that handles creation of audio pipeline and playing of audio data. */ -class MediaPlayer : - public avsCommon::utils::mediaPlayer::MediaPlayerInterface, - private PipelineInterface { +class MediaPlayer + : public avsCommon::utils::RequiresShutdown + , public avsCommon::utils::mediaPlayer::MediaPlayerInterface + , public avsCommon::sdkInterfaces::SpeakerInterface + , private PipelineInterface + , public playlistParser::UrlContentToAttachmentConverter::ErrorObserverInterface + , public std::enable_shared_from_this { public: /** * Creates an instance of the @c MediaPlayer. * + * @param contentFetcherFactory Used to create objects that can fetch remote HTTP content. + * @param type The type used to categorize the speaker for volume control. * @return An instance of the @c MediaPlayer if successful else a @c nullptr. */ - static std::shared_ptr create(); + static std::shared_ptr create( + std::shared_ptr contentFetcherFactory = + nullptr, + avsCommon::sdkInterfaces::SpeakerInterface::Type type = + avsCommon::sdkInterfaces::SpeakerInterface::Type::AVS_SYNCED, + std::string name = ""); /** * Destructor. @@ -62,29 +78,35 @@ class MediaPlayer : /// @name Overridden MediaPlayerInterface methods. /// @{ - avsCommon::utils::mediaPlayer::MediaPlayerStatus setSource( - std::shared_ptr attachmentReader) override; - avsCommon::utils::mediaPlayer::MediaPlayerStatus setSource( - std::shared_ptr stream, bool repeat) override; - avsCommon::utils::mediaPlayer::MediaPlayerStatus setSource(const std::string& url) override; + SourceId setSource( + std::shared_ptr attachmentReader, + const avsCommon::utils::AudioFormat* format = nullptr) override; + SourceId setSource(std::shared_ptr stream, bool repeat) override; + SourceId setSource(const std::string& url, std::chrono::milliseconds offset = std::chrono::milliseconds::zero()) + override; - avsCommon::utils::mediaPlayer::MediaPlayerStatus play() override; - avsCommon::utils::mediaPlayer::MediaPlayerStatus stop() override; - avsCommon::utils::mediaPlayer::MediaPlayerStatus pause() override; + bool play(SourceId id) override; + bool stop(SourceId id) override; + bool pause(SourceId id) override; /** * To resume playback after a pause, call @c resume. Calling @c play * will reset the pipeline and source, and will not resume playback. */ - avsCommon::utils::mediaPlayer::MediaPlayerStatus resume() override; - int64_t getOffsetInMilliseconds() override; - /** - * This function is a setter, storing @c offset to be consumed internally by @c play(). - * The function will always return MediaPlayerStatus::SUCCESS. - */ - avsCommon::utils::mediaPlayer::MediaPlayerStatus setOffset(std::chrono::milliseconds offset) override; + bool resume(SourceId id) override; + uint64_t getNumBytesBuffered() override; + std::chrono::milliseconds getOffset(SourceId id) override; void setObserver(std::shared_ptr observer) override; /// @} + /// @name Overridden SpeakerInterface methods. + /// @{ + bool setVolume(int8_t volume) override; + bool adjustVolume(int8_t volume) override; + bool setMute(bool mute) override; + bool getSpeakerSettings(avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings* settings) override; + avsCommon::sdkInterfaces::SpeakerInterface::Type getSpeakerType() override; + /// @} + /// @name Overridden PipelineInterface methods. /// @{ void setAppSrc(GstAppSrc* appSrc) override; @@ -95,17 +117,30 @@ class MediaPlayer : guint queueCallback(const std::function* callback) override; /// @} + /// @name Overriden UrlContentToAttachmentConverter::ErrorObserverInterface methods. + /// @{ + void onError() override; + /// @} + + void doShutdown() override; + private: /** * The @c AudioPipeline consists of the following elements: * @li @c appsrc The appsrc element is used as the source to which audio data is provided. * @li @c decoder Decodebin is used as the decoder element to decode audio. + * @li @c decodedQueue A queue is used to store the decoded data. * @li @c converter An audio-converter is used to convert between audio formats. + * @li @c volume The volume element is used as a volume control. + * @li @c resampler The optional resampler element is used to convert to a specified format + * @li @c caps The optional caps element is used to specify the resampler format * @li @c audioSink Sink for the audio. * @li @c pipeline The pipeline is a bin consisting of the @c appsrc, the @c decoder, the @c converter, and the * @c audioSink. * - * The data flow through the elements is appsrc -> decoder -> converter -> audioSink. + * The data flow through the elements is appsrc -> decoder -> decodedQueue -> converter -> volume -> audioSink. + * Ideally we would want to use playsink or playbin directly to automate as much as possible. However, this + * causes problems with multiple pipelines and volume settings in pulse audio. Pending further investigation. */ struct AudioPipeline { /// The source element. @@ -114,9 +149,21 @@ class MediaPlayer : /// The decoder element. GstElement* decoder; + /// A queue for decoded elements. + GstElement* decodedQueue; + /// The converter element. GstElement* converter; + /// The volume element. + GstElement* volume; + + /// The resampler element. + GstElement* resample; + + /// The capabilities element. + GstElement* caps; + /// The sink element. GstElement* audioSink; @@ -124,19 +171,26 @@ class MediaPlayer : GstElement* pipeline; /// Constructor. - AudioPipeline() - : + AudioPipeline() : appsrc{nullptr}, decoder{nullptr}, + decodedQueue{nullptr}, converter{nullptr}, + volume{nullptr}, audioSink{nullptr}, pipeline{nullptr} {}; }; /** * Constructor. + * + * @param contentFetcherFactory Used to create objects that can fetch remote HTTP content. + * @param type The type used to categorize the speaker for volume control. */ - MediaPlayer(); + MediaPlayer( + std::shared_ptr contentFetcherFactory, + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + std::string name); /** * Initializes GStreamer and starts a main event loop on a new thread. @@ -161,18 +215,20 @@ class MediaPlayer : static gboolean onCallback(const std::function* callback); /** - * Creates the @c AudioPipeline elements and links them together. + * Creates the @c AudioPipeline with the permanent elements and links them together. The permanent elements + * are converter and audioSink. * * @return @c true if all the elements were created and linked successfully else @c false. */ bool setupPipeline(); /** - * Stops the currently playing audio and deletes the pipeline. + * Stops the currently playing audio and removes the transient elements. The transient elements + * are appsrc and decoder. */ - void tearDownPipeline(); + void tearDownTransientPipelineElements(); - /* + /** * Resets the @c AudioPipeline. */ void resetPipeline(); @@ -219,88 +275,135 @@ class MediaPlayer : */ gboolean handleBusMessage(GstMessage* message); + /** + * Gather all stream tags found into a vector of tags. + * + * @param message The message posted on the bus. + * @return Vector of stream tags. + */ + std::unique_ptr collectTags(GstMessage* message); + + /** + * Send tags that are found in the stream to the observer. + * + * @param vectorOfTags Vector containing tags that are found in the stream. + */ + void sendStreamTagsToObserver(std::unique_ptr vectorOfTags); + /** * Worker thread handler for setting the source of audio to play. * - * @param promise A promise to fulfill with a @ MediaPlayerStatus value once the source has been set - * (or the operation failed). * @param reader The @c AttachmentReader with which to receive the audio to play. + * @param promise A promise to fulfill with a @c SourceId value once the source has been set. + * @param audioFormat The audioFormat to be used to interpret raw audio data. */ void handleSetAttachmentReaderSource( - std::promise* promise, - std::shared_ptr reader); + std::shared_ptr reader, + std::promise* promise, + const avsCommon::utils::AudioFormat* audioFormat = nullptr); - void handleSetSource( - std::promise promise, - std::string url); + /** + * Worker thread handler for setting the source of audio to play. + * + * @param url The url to set as the source. + * @param offset The offset from which to start streaming from. + * @param promise A promise to fulfill with a @c SourceId value once the source has been set. + */ + void handleSetUrlSource(const std::string& url, std::chrono::milliseconds offset, std::promise* promise); /** * Worker thread handler for setting the source of audio to play. * - * @param promise A promise to fulfill with a @ MediaPlayerStatus value once the source has been set - * (or the operation failed). * @param stream The source from which to receive the audio to play. + * @param repeat Whether the audio stream should be played in a loop until stopped. + * @param promise A promise to fulfill with a @ SourceId value once the source has been set. */ - void handleSetIStreamSource( - std::promise* promise, - std::shared_ptr stream, - bool repeat); + void handleSetIStreamSource(std::shared_ptr stream, bool repeat, std::promise* promise); /** - * Worker thread handler for starting playback of the current audio source. + * Internal method to update the volume according to a gstreamer bug fix + * https://bugzilla.gnome.org/show_bug.cgi?id=793081 + * @param gstVolume a volume to be set to GStreamer + */ + void handleSetVolumeInternal(gdouble gstVolume); + + /** + * Worker thread handler for setting the volume. * - * @param promise A promise to fulfill with a @c MediaPlayerStatus value once playback has been initiated - * (or the operation has failed). + * @param promise The promise to be set indicating the success of the operation. + * @param volume The absolute volume. */ - void handlePlay(std::promise* promise); + void handleSetVolume(std::promise* promise, int8_t volume); /** - * Worker thread handler for stopping audio playback. + * Worker thread handler for adjusting the volume. + * + * @param promise The promise to be set indicating the success of the operation. + * @param delta The volume change. + */ + void handleAdjustVolume(std::promise* promise, int8_t delta); + + /** + * Worker thread handler for setting the mute. + * + * @param promise The promise to be set indicating the success of the operation. + * @param mute The mute setting. True for mute and false for unmute. + */ + void handleSetMute(std::promise* promise, bool mute); + + /** + * Worker thread handler for getting the @c SpeakerSettings. * - * @param promise A promise to fulfill with a @c MediaPlayerStatus once playback stop has been initiated + * @param promise The promise to be set indicating the success of the operation. + * @param settings The current @c SpeakerSettings. + */ + void handleGetSpeakerSettings( + std::promise* promise, + avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings* settings); + + /** + * Worker thread handler for starting playback of the current audio source. + * + * @param id The @c SourceId that the caller is expecting to be handled. + * @param promise A promise to fulfill with a @c bool value once playback has been initiated * (or the operation has failed). */ - void handleStop(std::promise* promise); + void handlePlay(SourceId id, std::promise* promise); /** - * Actually trigger a stop of audio playback. + * Worker thread handler for stopping audio playback. * - * @return The status of the operation. + * @param id The @c SourceId that the caller is expecting to be handled. + * @param promise A promise to fulfill with a @c bool once playback stop has been initiated + * (or the operation has failed). */ - avsCommon::utils::mediaPlayer::MediaPlayerStatus doStop(); + void handleStop(SourceId id, std::promise* promise); /** * Worker thread handler for pausing playback of the current audio source. * - * @param promise A promise to fulfill with a @c MediaPlayerStatus value once playback has been paused + * @param id The @c SourceId that the caller is expecting to be handled. + * @param promise A promise to fulfill with a @c bool value once playback has been paused * (or the operation has failed). */ - void handlePause(std::promise* promise); + void handlePause(SourceId id, std::promise* promise); /** * Worker thread handler for resume playback of the current audio source. * - * @param promise A promise to fulfill with a @c MediaPlayerStatus value once playback has been resumed + * @param id The @c SourceId that the caller is expecting to be handled. + * @param promise A promise to fulfill with a @c bool value once playback has been resumed * (or the operation has failed). */ - void handleResume(std::promise* promise); + void handleResume(SourceId id, std::promise* promise); /** * Worker thread handler for getting the current playback position. * + * @param id The @c SourceId that the caller is expecting to be handled. * @param promise A promise to fulfill with the offset once the value has been determined. */ - void handleGetOffsetInMilliseconds(std::promise* promise); - - /** - * Worker thread handler for setting the playback position. - * - * @param promise A promise to fulfill with a @c MediaPlayerStatus value once the offset has been set. - * @param offset The offset to start playing from. - */ - void handleSetOffset( - std::promise* promise, - std::chrono::milliseconds offset); + void handleGetOffset(SourceId id, std::promise* promise); /** * Worker thread handler for setting the observer. @@ -309,8 +412,8 @@ class MediaPlayer : * @param observer The new observer. */ void handleSetObserver( - std::promise* promise, - std::shared_ptr observer); + std::promise* promise, + std::shared_ptr observer); /** * Sends the playback started notification to the observer. @@ -332,12 +435,20 @@ class MediaPlayer : */ void sendPlaybackResumed(); + /** + * Sends the playback stopped notification to the observer. + */ + void sendPlaybackStopped(); + /** * Sends the playback error notification to the observer. * + * @param type The error type. * @param error The error details. */ - void sendPlaybackError(const std::string& error); + void sendPlaybackError( + const alexaClientSDK::avsCommon::utils::mediaPlayer::ErrorType& type, + const std::string& error); /** * Sends the buffer underrun notification to the observer. @@ -364,21 +475,59 @@ class MediaPlayer : */ bool seek(); + /** + * Validates that the given id matches the current source id being operated on. + * + * @param id The id to validate + * @return @c true if the id matches the source being operated on and @c false otherwise. + */ + bool validateSourceAndId(SourceId id); + + /** + * The callback to be added to the event loop to process upon onError() callback. + * + * @param pointer The instance to this @c MediaPlayer. + * @return @c false if there is no error with this callback, else @c true. + */ + static gboolean onErrorCallback(gpointer pointer); + + /** + * Save offset of stream before we teardown the pipeline. + */ + void saveOffsetBeforeTeardown(); + + /** + * Destructs the @c m_source with proper steps. + */ + void cleanUpSource(); + + /// The volume to restore to when exiting muted state. Used in GStreamer crash fix for zero volume on PCM data. + gdouble m_lastVolume; + + /// The muted state of the player. Used in GStreamer crash fix for zero volume on PCM data. + bool m_isMuted; + + /// Used to stream urls into attachments + std::shared_ptr m_urlConverter; + /// An instance of the @c OffsetManager. OffsetManager m_offsetManager; + /// Used to create objects that can fetch remote HTTP content. + std::shared_ptr m_contentFetcherFactory; + /// An instance of the @c AudioPipeline. AudioPipeline m_pipeline; + /// The Speaker type. + avsCommon::sdkInterfaces::SpeakerInterface::Type m_speakerType; + /// Main event loop. GMainLoop* m_mainLoop; // Main loop thread std::thread m_mainLoopThread; - // Set Source thread. - std::thread m_setSourceThread; - /// Bus Id to track the bus. guint m_busWatchId; @@ -399,9 +548,27 @@ class MediaPlayer : /// @c SourceInterface instance set to the appropriate source. std::shared_ptr m_source; + + /// The current source id. + SourceId m_currentId; + + /// Flag to indicate whether a play is currently pending a callback. + bool m_playPending; + + /// Flag to indicate whether a pause is currently pending a callback. + bool m_pausePending; + + /// Flag to indicate whether a resume is currently pending a callback. + bool m_resumePending; + + /// Flag to indicate whether a pause should happen immediately. + bool m_pauseImmediately; + + /// Stream offset before we teardown the pipeline + std::chrono::milliseconds m_offsetBeforeTeardown; }; -} // namespace mediaPlayer -} // namespace alexaClientSDK +} // namespace mediaPlayer +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_MEDIA_PLAYER_H_ +#endif // ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_MEDIAPLAYER_H_ diff --git a/MediaPlayer/include/MediaPlayer/Normalizer.h b/MediaPlayer/include/MediaPlayer/Normalizer.h new file mode 100644 index 0000000000..1971f4bb36 --- /dev/null +++ b/MediaPlayer/include/MediaPlayer/Normalizer.h @@ -0,0 +1,85 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_NORMALIZER_H_ +#define ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_NORMALIZER_H_ + +#include + +namespace alexaClientSDK { +namespace mediaPlayer { + +/** + * This class performs a linear transform between two ranges [sourceMin, sourceMax] -> [normalizedMin, normalizedMax]. + * This is used by the MediaPlayer to convert between different volume ranges. MediaPlayer internally uses GStreamer, + * whose volume element takes in a @c gdouble. + */ +class Normalizer { +public: + /** + * Creates a unique_ptr to a @c Normalizer class. + * + * @param sourceMin The minimum value in the source space. + * @param sourceMax The maximum value in the source space. + * @param normalizedMin The minimum value in the normalized space. + * @param normalizedMax The maximum value in the normalized space. + * @return A pointer to an instance of the Normalizer class if the ranges are valid. Otherwise, nullptr is returned. + */ + static std::unique_ptr create( + const double& sourceMin, + const double& sourceMax, + const double& normalizedMin, + const double& normalizedMax); + + /** + * Performs feature scaling from [srcMin, srcMax] to [normalizedMin, normalizedMax]. + * + * @param unnormalizedInput The input value to normalize. + * @param[out] normalizedOutput The result after normalization. + * @return Whether the operation was successful. + */ + bool normalize(const double& unnormalizedInput, double* normalizedOutput); + +private: + /** + * Constructor. + * + * @param sourceMin The minimum value in the source space. + * @param sourceMax The maximum value in the source space. + * @param normalizedMin The minimum value in the normalized space. + * @param normalizedMax The maximum value in the normalized space. + */ + Normalizer( + const double& sourceMin, + const double& sourceMax, + const double& normalizedMin, + const double& normalizedMax); + + /// The scale factor for the linear transform. + double m_scaleFactor; + /// The minimum value in the source space. + double m_sourceMin; + /// The maximum value in the source space. + double m_sourceMax; + /// The minimum value in the normalized space. + double m_normalizedMin; + /// The maximum value in the normalized space. + double m_normalizedMax; +}; + +} // namespace mediaPlayer +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_NORMALIZER_H_ diff --git a/MediaPlayer/include/MediaPlayer/OffsetManager.h b/MediaPlayer/include/MediaPlayer/OffsetManager.h index e3a4940850..a96f421d96 100644 --- a/MediaPlayer/include/MediaPlayer/OffsetManager.h +++ b/MediaPlayer/include/MediaPlayer/OffsetManager.h @@ -1,7 +1,5 @@ /* - * OffsetManager.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_OFFSET_MANAGER_H_ -#define ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_OFFSET_MANAGER_H_ +#ifndef ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_OFFSETMANAGER_H_ +#define ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_OFFSETMANAGER_H_ #include @@ -27,7 +25,6 @@ namespace mediaPlayer { * TODO ACSDK-459: Implement support for seeking across playlists. */ class OffsetManager { - public: /** * Constructor with initialization of members. @@ -75,7 +72,6 @@ class OffsetManager { void clear(); private: - /// The seekpoint in milliseconds. std::chrono::milliseconds m_seekPoint; @@ -86,7 +82,7 @@ class OffsetManager { bool m_isSeekPointSet; }; -} // namespace mediaPlayer -} // namespace alexaClientSDK +} // namespace mediaPlayer +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_OFFSET_MANAGER_H_ +#endif // ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_OFFSETMANAGER_H_ diff --git a/MediaPlayer/include/MediaPlayer/PipelineInterface.h b/MediaPlayer/include/MediaPlayer/PipelineInterface.h index 68ccea9c29..2c523e384f 100644 --- a/MediaPlayer/include/MediaPlayer/PipelineInterface.h +++ b/MediaPlayer/include/MediaPlayer/PipelineInterface.h @@ -1,7 +1,5 @@ /* - * PipelineInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_PIPELINE_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_PIPELINE_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_PIPELINEINTERFACE_H_ +#define ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_PIPELINEINTERFACE_H_ #include #include @@ -47,7 +45,7 @@ class PipelineInterface { * * @return The appSrc element. */ - virtual GstAppSrc* getAppSrc() const = 0; + virtual GstAppSrc* getAppSrc() const = 0; /** * Sets the decoder element in the @c AudioPipeline @@ -86,7 +84,7 @@ class PipelineInterface { virtual ~PipelineInterface() = default; }; -} // namespace mediaPlayer -} // namespace alexaClientSDK +} // namespace mediaPlayer +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_PIPELINE_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_PIPELINEINTERFACE_H_ diff --git a/MediaPlayer/include/MediaPlayer/SourceInterface.h b/MediaPlayer/include/MediaPlayer/SourceInterface.h index 05807503b0..7623681d53 100644 --- a/MediaPlayer/include/MediaPlayer/SourceInterface.h +++ b/MediaPlayer/include/MediaPlayer/SourceInterface.h @@ -1,7 +1,5 @@ /* - * SourceInterface.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,19 +13,29 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_SOURCE_INTERFACE_H_ -#define ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_SOURCE_INTERFACE_H_ +#ifndef ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_SOURCEINTERFACE_H_ +#define ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_SOURCEINTERFACE_H_ #include "MediaPlayer/PipelineInterface.h" +#include + namespace alexaClientSDK { namespace mediaPlayer { /** -* Interface to request operations on an audio source. -*/ -class SourceInterface { + * Interface to request operations on an audio source. + */ +class SourceInterface : public avsCommon::utils::RequiresShutdown { public: + /** + * Constructor, which also constructs RequiresShutdown. + * + * @param className The name of the class to be passed to @c RequiresShutdown. + */ + SourceInterface(const std::string& className) : RequiresShutdown(className) { + } + /** * Destructor. */ @@ -54,9 +62,17 @@ class SourceInterface { * Perform preprocessing of the source. Must be called before reading from the source. */ virtual void preprocess() = 0; + + /** + * Indicates whether a source is local or remote from the perspective of the MediaPlayer (e.g. playing out of the + * SDS is local, playing a URL is remote). + * + * @return A boolean indicating whether the source is from a remote or local source + */ + virtual bool isPlaybackRemote() const = 0; }; -} // namespace mediaPlayer -} // namespace alexaClientSDK +} // namespace mediaPlayer +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_SOURCE_INTERFACE_H_ +#endif // ALEXA_CLIENT_SDK_MEDIAPLAYER_INCLUDE_MEDIAPLAYER_SOURCEINTERFACE_H_ diff --git a/MediaPlayer/include/MediaPlayer/UrlSource.h b/MediaPlayer/include/MediaPlayer/UrlSource.h deleted file mode 100644 index 7193f6c237..0000000000 --- a/MediaPlayer/include/MediaPlayer/UrlSource.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * UrlSource.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0/ - * - * or in the "license" file accompanying this file. This file 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. - */ - -#ifndef ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_URL_SOURCE_H_ -#define ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_URL_SOURCE_H_ - -#include -#include -#include -#include - -#include - -#include -#include -#include - -#include "MediaPlayer/SourceInterface.h" - -namespace alexaClientSDK { -namespace mediaPlayer { - -class UrlSource : - public SourceInterface, - public avsCommon::utils::playlistParser::PlaylistParserObserverInterface, - public std::enable_shared_from_this { -public: - /** - * Creates an instance of the @c UrlSource and installs the source within the GStreamer pipeline. - * - * @param pipeline The @c PipelineInterface through which the source of the @c AudioPipeline may be set. - * @param playlistParser The @c PlaylistParserInterface which will parse playlist urls. - * @param url The url from which to create the pipeline source from. - * - * @return An instance of the @c UrlSource if successful else a @c nullptr. - */ - static std::shared_ptr create( - PipelineInterface* pipeline, - std::shared_ptr playlistParser, - const std::string& url); - - void onPlaylistParsed( - std::string playlistUrl, - std::queue urls, - avsCommon::utils::playlistParser::PlaylistParseResult parseResult) override; - - bool hasAdditionalData() override; - bool handleEndOfStream() override; - - /** - * @note This function will block until the @c onPlaylistParsed callback. - * To avoid deadlock, callers must ensure that @c preprocess is not called on the same thread - * as the event loop handling @c onPlaylistParsed. - */ - void preprocess() override; - -private: - /** - * Constructor. - * - * @param pipeline The @c PipelineInterface through which the source of the @c AudioPipeline may be set. - * @param playlistParser The @c PlaylistParserInterface which will parse playlist urls. - * @param url The @c url from which to create the pipeline source from. - */ - UrlSource( - PipelineInterface* pipeline, - std::shared_ptr playlistParser, - const std::string& url); - - /** - * Initializes the UrlSource by doing the following: - * - * -# Attempt to parse the url as a playlist. - * -# Initialize internal url queue. - * -# Create the source element for the audio pipeline. - * -# Add the source element to the audio pipeline @c m_pipeline. - */ - bool init(); - - /// The url to read audioData from. - std::string m_url; - - /// A queue of parsed audio urls. This should not contain any playlist urls. - std::queue m_audioUrlQueue; - - /// A Playlist Parser. - std::shared_ptr m_playlistParser; - - /// Promise to notify when playlist parsing is complete. - std::promise> m_playlistParsedPromise; - - /// The @c PipelineInterface through which the source of the @c AudioPipeline may be set. - PipelineInterface* m_pipeline; -}; - -} // namespace mediaPlayer -} // namespace alexaClientSDK - -#endif // ALEXA_CLIENT_SDK_MEDIA_PLAYER_INCLUDE_MEDIA_PLAYER_URL_SOURCE_H_ diff --git a/MediaPlayer/inputs/fox_dog_playlist.m3u b/MediaPlayer/inputs/fox_dog_playlist.m3u deleted file mode 100644 index eeaa5349dd..0000000000 --- a/MediaPlayer/inputs/fox_dog_playlist.m3u +++ /dev/null @@ -1,5 +0,0 @@ -#EXTM3U -#EXTINF:2,fox_dog.mp3 -fox_dog.mp3 -#EXTINF:2,fox_dog.mp3 -fox_dog.mp3 diff --git a/MediaPlayer/src/AttachmentReaderSource.cpp b/MediaPlayer/src/AttachmentReaderSource.cpp index 8503b08604..d08b2ecabf 100644 --- a/MediaPlayer/src/AttachmentReaderSource.cpp +++ b/MediaPlayer/src/AttachmentReaderSource.cpp @@ -1,7 +1,5 @@ /* - * AttachmentReaderSource.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -43,10 +41,11 @@ static const std::string TAG("AttachmentReaderSource"); static const unsigned int CHUNK_SIZE(4096); std::unique_ptr AttachmentReaderSource::create( - PipelineInterface* pipeline, - std::shared_ptr attachmentReader) { + PipelineInterface* pipeline, + std::shared_ptr attachmentReader, + const avsCommon::utils::AudioFormat* audioFormat) { std::unique_ptr result(new AttachmentReaderSource(pipeline, attachmentReader)); - if (result->init()) { + if (result->init(audioFormat)) { return result; } return nullptr; @@ -57,12 +56,14 @@ AttachmentReaderSource::~AttachmentReaderSource() { } AttachmentReaderSource::AttachmentReaderSource( - PipelineInterface* pipeline, - std::shared_ptr reader) - : - BaseStreamSource{pipeline}, - m_reader{reader} { -}; + PipelineInterface* pipeline, + std::shared_ptr reader) : + BaseStreamSource{pipeline, "AttachmentReaderSource"}, + m_reader{reader} {}; + +bool AttachmentReaderSource::isPlaybackRemote() const { + return false; +} bool AttachmentReaderSource::isOpen() { return m_reader != nullptr; @@ -76,7 +77,6 @@ void AttachmentReaderSource::close() { } gboolean AttachmentReaderSource::handleReadData() { - if (!m_reader) { ACSDK_ERROR(LX("handleReadDataFailed").d("reason", "attachmentReaderIsNullPtr")); return false; @@ -114,25 +114,25 @@ gboolean AttachmentReaderSource::handleReadData() { if (0 == size) { break; } - // Fall through if some data was read. + // Fall through if some data was read. case AttachmentReader::ReadStatus::OK: case AttachmentReader::ReadStatus::OK_WOULDBLOCK: + // Fall through to retry reading later. + case AttachmentReader::ReadStatus::OK_TIMEDOUT: if (size > 0) { installOnReadDataHandler(); auto flowRet = gst_app_src_push_buffer(getAppSrc(), buffer); if (flowRet != GST_FLOW_OK) { ACSDK_ERROR(LX("handleReadDataFailed") - .d("reason", "gstAppSrcPushBufferFailed").d("error", gst_flow_get_name(flowRet))); + .d("reason", "gstAppSrcPushBufferFailed") + .d("error", gst_flow_get_name(flowRet))); break; } - return true; + } else { + gst_buffer_unref(buffer); + updateOnReadDataHandler(); } - // Fall through to retry reading later. - case AttachmentReader::ReadStatus::OK_TIMEDOUT: { - gst_buffer_unref(buffer); - updateOnReadDataHandler(); return true; - } case AttachmentReader::ReadStatus::ERROR_OVERRUN: case AttachmentReader::ReadStatus::ERROR_BYTES_LESS_THAN_WORD_SIZE: case AttachmentReader::ReadStatus::ERROR_INTERNAL: @@ -141,10 +141,21 @@ gboolean AttachmentReaderSource::handleReadData() { break; } + ACSDK_DEBUG9(LX("handleReadData").d("info", "signalingEndOfData")); gst_buffer_unref(buffer); signalEndOfData(); return false; } -} // namespace mediaPlayer -} // namespace alexaClientSDK +gboolean AttachmentReaderSource::handleSeekData(guint64 offset) { + ACSDK_DEBUG9(LX("handleSeekData").d("offset", offset)); + if (m_reader) { + return m_reader->seek(offset); + } else { + ACSDK_ERROR(LX("handleSeekDataFailed").d("reason", "nullReader")); + return false; + } +} + +} // namespace mediaPlayer +} // namespace alexaClientSDK diff --git a/MediaPlayer/src/BaseStreamSource.cpp b/MediaPlayer/src/BaseStreamSource.cpp index c3ae807c6d..bd31fcfcbc 100644 --- a/MediaPlayer/src/BaseStreamSource.cpp +++ b/MediaPlayer/src/BaseStreamSource.cpp @@ -1,7 +1,5 @@ /* - * BaseStreamSource.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -42,7 +40,51 @@ static const std::string TAG("BaseStreamSource"); /// The interval to wait (in milliseconds) between successive attempts to read audio data when none is available. static const guint RETRY_INTERVALS_MILLISECONDS[] = {0, 10, 10, 10, 20, 20, 50, 100}; -BaseStreamSource::BaseStreamSource(PipelineInterface* pipeline) : +/** + * Method that returns a string to be used in CAPS negotiation (generating right PADS between gstreamer elements based + * on audio data.) For raw PCM data without header audioFormat information needs to be passed explicitly for a + * mediaplayer to interpret the audio bytes. + */ +static std::string getCapsString(const AudioFormat& audioFormat) { + std::stringstream caps; + switch (audioFormat.encoding) { + case AudioFormat::Encoding::LPCM: + caps << "audio/x-raw"; + break; + case AudioFormat::Encoding::OPUS: + ACSDK_ERROR(LX("MediaPlayer does not handle OPUS data")); + caps << " "; + break; + } + + switch (audioFormat.endianness) { + case AudioFormat::Endianness::LITTLE: + audioFormat.dataSigned ? caps << ",format=S" << audioFormat.sampleSizeInBits << "LE" + : caps << ",format=U" << audioFormat.sampleSizeInBits << "LE"; + break; + case AudioFormat::Endianness::BIG: + audioFormat.dataSigned ? caps << ",format=S" << audioFormat.sampleSizeInBits << "BE" + : caps << ",format=U" << audioFormat.sampleSizeInBits << "BE"; + break; + } + + switch (audioFormat.layout) { + case AudioFormat::Layout::INTERLEAVED: + caps << ",layout=interleaved"; + break; + case AudioFormat::Layout::NON_INTERLEAVED: + caps << ",layout=non-interleaved"; + break; + } + + caps << ",channels=" << audioFormat.numChannels; + caps << ",rate=" << audioFormat.sampleRateHz; + + return caps.str(); +} + +BaseStreamSource::BaseStreamSource(PipelineInterface* pipeline, const std::string& className) : + SourceInterface(className), m_pipeline{pipeline}, m_sourceId{0}, m_sourceRetryCount{0}, @@ -50,6 +92,7 @@ BaseStreamSource::BaseStreamSource(PipelineInterface* pipeline) : m_handleEnoughDataFunction{[this]() { return handleEnoughData(); }}, m_needDataHandlerId{0}, m_enoughDataHandlerId{0}, + m_seekDataHandlerId{0}, m_needDataCallbackId{0}, m_enoughDataCallbackId{0} { } @@ -58,6 +101,18 @@ BaseStreamSource::~BaseStreamSource() { ACSDK_DEBUG9(LX("~BaseStreamSource")); g_signal_handler_disconnect(m_pipeline->getAppSrc(), m_needDataHandlerId); g_signal_handler_disconnect(m_pipeline->getAppSrc(), m_enoughDataHandlerId); + g_signal_handler_disconnect(m_pipeline->getAppSrc(), m_seekDataHandlerId); + if (m_pipeline->getPipeline()) { + if (m_pipeline->getAppSrc()) { + gst_bin_remove(GST_BIN(m_pipeline->getPipeline()), GST_ELEMENT(m_pipeline->getAppSrc())); + } + m_pipeline->setAppSrc(nullptr); + + if (m_pipeline->getDecoder()) { + gst_bin_remove(GST_BIN(m_pipeline->getPipeline()), GST_ELEMENT(m_pipeline->getDecoder())); + } + m_pipeline->setDecoder(nullptr); + } { std::lock_guard lock(m_callbackIdMutex); if (m_needDataCallbackId && !g_source_remove(m_needDataCallbackId)) { @@ -70,13 +125,28 @@ BaseStreamSource::~BaseStreamSource() { uninstallOnReadDataHandler(); } -bool BaseStreamSource::init() { - auto appsrc = reinterpret_cast(gst_element_factory_make("appsrc", "src")); +bool BaseStreamSource::init(const AudioFormat* audioFormat) { + auto appsrc = reinterpret_cast(gst_element_factory_make("appsrc", "src")); if (!appsrc) { ACSDK_ERROR(LX("initFailed").d("reason", "createSourceElementFailed")); return false; } - gst_app_src_set_stream_type(appsrc, GST_APP_STREAM_TYPE_STREAM); + gst_app_src_set_stream_type(appsrc, GST_APP_STREAM_TYPE_SEEKABLE); + + GstCaps* audioCaps = nullptr; + + if (audioFormat) { + std::string caps = getCapsString(*audioFormat); + audioCaps = gst_caps_from_string(caps.c_str()); + if (!audioCaps) { + ACSDK_ERROR(LX("BaseStreamSourceInitFailed").d("reason", "capsNullForRawAudioFormat")); + return false; + } + gst_app_src_set_caps(GST_APP_SRC(appsrc), audioCaps); + g_object_set(G_OBJECT(appsrc), "format", GST_FORMAT_TIME, NULL); + } else { + ACSDK_DEBUG9(LX("initNoAudioFormat")); + } auto decoder = gst_element_factory_make("decodebin", "decoder"); if (!decoder) { @@ -104,7 +174,7 @@ bool BaseStreamSource::init() { * stream type it is decoding. Once the pad has been added, pad-added signal is emitted, and the padAddedHandler * callback will link the newly created source pad of the decoder to the sink of the converter element. */ - if (!gst_element_link(reinterpret_cast(appsrc), decoder)) { + if (!gst_element_link(reinterpret_cast(appsrc), decoder)) { ACSDK_ERROR(LX("initFailed").d("reason", "createSourceToDecoderLinkFailed")); return false; } @@ -126,6 +196,19 @@ bool BaseStreamSource::init() { ACSDK_ERROR(LX("initFailed").d("reason", "connectEnoughDataSignalFailed")); return false; } + /* + * When the appsrc needs to seek to a position, it emits the signal seek-data. Connect the seek-data signal to the + * onSeekData callback which handles seeking to the appropriate position. + */ + m_seekDataHandlerId = g_signal_connect(appsrc, "seek-data", G_CALLBACK(onSeekData), this); + if (0 == m_seekDataHandlerId) { + ACSDK_ERROR(LX("initFailed").d("reason", "connectSeekDataSignalFailed")); + return false; + } + + if (audioCaps) { + gst_caps_unref(audioCaps); + } m_pipeline->setAppSrc(appsrc); m_pipeline->setDecoder(decoder); @@ -145,9 +228,10 @@ void BaseStreamSource::signalEndOfData() { auto flowRet = gst_app_src_end_of_stream(m_pipeline->getAppSrc()); if (flowRet != GST_FLOW_OK) { ACSDK_ERROR(LX("signalEndOfDataFailed") - .d("reason", "gstAppSrcEndOfStreamFailed").d("result", gst_flow_get_name(flowRet))); + .d("reason", "gstAppSrcEndOfStreamFailed") + .d("result", gst_flow_get_name(flowRet))); } - close(); + ACSDK_DEBUG9(LX("gstAppSrcEndOfStreamSuccess")); clearOnReadDataHandler(); } @@ -160,8 +244,8 @@ void BaseStreamSource::installOnReadDataHandler() { if (m_sourceRetryCount != 0) { ACSDK_DEBUG9(LX("installOnReadDataHandler").d("action", "removeSourceId").d("sourceId", m_sourceId)); if (!g_source_remove(m_sourceId)) { - ACSDK_ERROR(LX("installOnReadDataHandlerError") - .d("reason", "gSourceRemoveFailed").d("sourceId", m_sourceId)); + ACSDK_ERROR( + LX("installOnReadDataHandlerError").d("reason", "gSourceRemoveFailed").d("sourceId", m_sourceId)); } } else { return; @@ -176,22 +260,24 @@ void BaseStreamSource::updateOnReadDataHandler() { if (m_sourceRetryCount < sizeof(RETRY_INTERVALS_MILLISECONDS) / sizeof(RETRY_INTERVALS_MILLISECONDS[0])) { ACSDK_DEBUG9(LX("updateOnReadDataHandler").d("action", "removeSourceId").d("sourceId", m_sourceId)); if (!g_source_remove(m_sourceId)) { - ACSDK_ERROR(LX("updateOnReadDataHandlerError") - .d("reason", "gSourceRemoveFailed").d("sourceId", m_sourceId)); + ACSDK_ERROR( + LX("updateOnReadDataHandlerError").d("reason", "gSourceRemoveFailed").d("sourceId", m_sourceId)); } auto interval = RETRY_INTERVALS_MILLISECONDS[m_sourceRetryCount]; m_sourceRetryCount++; m_sourceId = g_timeout_add(interval, reinterpret_cast(&onReadData), this); ACSDK_DEBUG9(LX("updateOnReadDataHandlerNewSourceId") - .d("action", "newSourceId").d("sourceId", m_sourceId).d("sourceRetryCount", m_sourceRetryCount)); + .d("action", "newSourceId") + .d("sourceId", m_sourceId) + .d("sourceRetryCount", m_sourceRetryCount)); } } void BaseStreamSource::uninstallOnReadDataHandler() { if (m_sourceId != 0) { if (!g_source_remove(m_sourceId)) { - ACSDK_ERROR(LX("uninstallOnReadDataHandlerError") - .d("reason", "gSourceRemoveFailed").d("sourceId", m_sourceId)); + ACSDK_ERROR( + LX("uninstallOnReadDataHandlerError").d("reason", "gSourceRemoveFailed").d("sourceId", m_sourceId)); } clearOnReadDataHandler(); } @@ -203,7 +289,7 @@ void BaseStreamSource::clearOnReadDataHandler() { m_sourceId = 0; } -void BaseStreamSource::onNeedData(GstElement *pipeline, guint size, gpointer pointer) { +void BaseStreamSource::onNeedData(GstElement* pipeline, guint size, gpointer pointer) { ACSDK_DEBUG9(LX("onNeedDataCalled").d("size", size)); auto source = static_cast(pointer); std::lock_guard lock(source->m_callbackIdMutex); @@ -222,7 +308,7 @@ gboolean BaseStreamSource::handleNeedData() { return false; } -void BaseStreamSource::onEnoughData(GstElement *pipeline, gpointer pointer) { +void BaseStreamSource::onEnoughData(GstElement* pipeline, gpointer pointer) { ACSDK_DEBUG9(LX("onEnoughDataCalled")); auto source = static_cast(pointer); std::lock_guard lock(source->m_callbackIdMutex); @@ -241,6 +327,10 @@ gboolean BaseStreamSource::handleEnoughData() { return false; } +gboolean BaseStreamSource::onSeekData(GstElement* pipeline, guint64 offset, gpointer pointer) { + return static_cast(pointer)->handleSeekData(offset); +} + gboolean BaseStreamSource::onReadData(gpointer pointer) { return static_cast(pointer)->handleReadData(); } @@ -258,5 +348,5 @@ bool BaseStreamSource::hasAdditionalData() { void BaseStreamSource::preprocess() { } -} // namespace mediaPlayer -} // namespace alexaClientSDK +} // namespace mediaPlayer +} // namespace alexaClientSDK diff --git a/MediaPlayer/src/CMakeLists.txt b/MediaPlayer/src/CMakeLists.txt index 59ab965144..c8b92d587f 100644 --- a/MediaPlayer/src/CMakeLists.txt +++ b/MediaPlayer/src/CMakeLists.txt @@ -2,10 +2,11 @@ add_definitions("-DACSDK_LOG_MODULE=mediaPlayer") add_library(MediaPlayer SHARED AttachmentReaderSource.cpp BaseStreamSource.cpp + ErrorTypeConversion.cpp IStreamSource.cpp MediaPlayer.cpp - OffsetManager.cpp - UrlSource.cpp) + Normalizer.cpp + OffsetManager.cpp) target_include_directories(MediaPlayer PUBLIC "${MediaPlayer_SOURCE_DIR}/include" diff --git a/MediaPlayer/src/ErrorTypeConversion.cpp b/MediaPlayer/src/ErrorTypeConversion.cpp new file mode 100644 index 0000000000..834c3f006d --- /dev/null +++ b/MediaPlayer/src/ErrorTypeConversion.cpp @@ -0,0 +1,78 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "MediaPlayer/ErrorTypeConversion.h" + +namespace alexaClientSDK { +namespace mediaPlayer { + +static avsCommon::utils::mediaPlayer::ErrorType gstCoreErrorToErrorType(const GstCoreError& error) { + // all GST_CORE_ERRORs are MEDIA_ERROR_INTERNAL_DEVICE_ERRORs. + return avsCommon::utils::mediaPlayer::ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR; +} + +static avsCommon::utils::mediaPlayer::ErrorType gstLibraryErrorToErrorType(const GstLibraryError& error) { + // all GST_LIBRARY_ERRORs are MEDIA_ERROR_INTERNAL_DEVICE_ERRORs. + return avsCommon::utils::mediaPlayer::ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR; +} + +static avsCommon::utils::mediaPlayer::ErrorType gstResourceErrorToErrorType( + const GstResourceError& error, + bool remoteResource) { + if (remoteResource) { + switch (error) { + case GST_RESOURCE_ERROR_NOT_FOUND: + case GST_RESOURCE_ERROR_OPEN_READ: + case GST_RESOURCE_ERROR_OPEN_WRITE: + case GST_RESOURCE_ERROR_OPEN_READ_WRITE: + case GST_RESOURCE_ERROR_CLOSE: + case GST_RESOURCE_ERROR_READ: + case GST_RESOURCE_ERROR_WRITE: + case GST_RESOURCE_ERROR_SEEK: + case GST_RESOURCE_ERROR_SYNC: + case GST_RESOURCE_ERROR_SETTINGS: + case GST_RESOURCE_ERROR_NOT_AUTHORIZED: + return avsCommon::utils::mediaPlayer::ErrorType::MEDIA_ERROR_INVALID_REQUEST; + case GST_RESOURCE_ERROR_BUSY: + return avsCommon::utils::mediaPlayer::ErrorType::MEDIA_ERROR_SERVICE_UNAVAILABLE; + default: + return avsCommon::utils::mediaPlayer::ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR; + } + } + return avsCommon::utils::mediaPlayer::ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR; +} + +static avsCommon::utils::mediaPlayer::ErrorType gstStreamErrorToErrorType(const GstStreamError& error) { + // all GST_STREAM_ERRORs are MEDIA_ERROR_INTERNAL_DEVICE_ERRORs. + return avsCommon::utils::mediaPlayer::ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR; +} + +avsCommon::utils::mediaPlayer::ErrorType gerrorToErrorType(const GError* error, bool remoteResource) { + const auto& domain = error->domain; + if (domain == GST_CORE_ERROR) { + return gstCoreErrorToErrorType(static_cast(error->code)); + } else if (domain == GST_LIBRARY_ERROR) { + return gstLibraryErrorToErrorType(static_cast(error->code)); + } else if (domain == GST_RESOURCE_ERROR) { + return gstResourceErrorToErrorType(static_cast(error->code), remoteResource); + } else if (domain == GST_STREAM_ERROR) { + return gstStreamErrorToErrorType(static_cast(error->code)); + } else { + return avsCommon::utils::mediaPlayer::ErrorType::MEDIA_ERROR_UNKNOWN; + } +} + +} // namespace mediaPlayer +} // namespace alexaClientSDK diff --git a/MediaPlayer/src/IStreamSource.cpp b/MediaPlayer/src/IStreamSource.cpp index 5b5982f450..4a0515896f 100644 --- a/MediaPlayer/src/IStreamSource.cpp +++ b/MediaPlayer/src/IStreamSource.cpp @@ -1,7 +1,5 @@ /* - * IStreamSource.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -43,9 +41,9 @@ static const std::string TAG("IStreamSource"); static const unsigned int CHUNK_SIZE(4096); std::unique_ptr IStreamSource::create( - PipelineInterface* pipeline, - std::shared_ptr stream, - bool repeat) { + PipelineInterface* pipeline, + std::shared_ptr stream, + bool repeat) { std::unique_ptr result(new IStreamSource(pipeline, std::move(stream), repeat)); if (result->init()) { return result; @@ -53,17 +51,27 @@ std::unique_ptr IStreamSource::create( return nullptr; }; -IStreamSource::IStreamSource(PipelineInterface* pipeline, std::shared_ptr stream, bool repeat) - : - BaseStreamSource{pipeline}, +IStreamSource::IStreamSource(PipelineInterface* pipeline, std::shared_ptr stream, bool repeat) : + BaseStreamSource{pipeline, "IStreamSource"}, m_stream{stream}, - m_repeat{repeat} { -}; + m_repeat{repeat} {}; IStreamSource::~IStreamSource() { close(); } +bool IStreamSource::isPlaybackRemote() const { + return false; +} + +bool IStreamSource::hasAdditionalData() { + if (!m_repeat) { + return false; + } + m_stream->clear(); + m_stream->seekg(0); + return true; +} bool IStreamSource::isOpen() { return m_stream != nullptr; @@ -74,7 +82,6 @@ void IStreamSource::close() { } gboolean IStreamSource::handleReadData() { - if (!isOpen()) { ACSDK_ERROR(LX("handleReadDataFailed").d("reason", "attachmentReaderIsNullPtr")); return false; @@ -109,7 +116,7 @@ gboolean IStreamSource::handleReadData() { ACSDK_WARN(LX("readFailed").d("bad", m_stream->bad()).d("eof", m_stream->eof())); } else { size = m_stream->gcount(); - ACSDK_DEBUG9(LX("read").d("size", size).d("eof", m_stream->eof())); + ACSDK_DEBUG9(LX("read").d("size", size).d("pos", m_stream->tellg()).d("eof", m_stream->eof())); } gst_buffer_unmap(buffer, &info); @@ -122,7 +129,8 @@ gboolean IStreamSource::handleReadData() { auto flowRet = gst_app_src_push_buffer(getAppSrc(), buffer); if (flowRet != GST_FLOW_OK) { ACSDK_ERROR(LX("handleReadDataFailed") - .d("reason", "gstAppSrcPushBufferFailed").d("error", gst_flow_get_name(flowRet))); + .d("reason", "gstAppSrcPushBufferFailed") + .d("error", gst_flow_get_name(flowRet))); return false; } else { return true; @@ -140,5 +148,11 @@ gboolean IStreamSource::handleReadData() { return true; } -} // namespace mediaPlayer -} // namespace alexaClientSDK +gboolean IStreamSource::handleSeekData(guint64 offset) { + m_stream->clear(); + m_stream->seekg(offset); + return true; +} + +} // namespace mediaPlayer +} // namespace alexaClientSDK diff --git a/MediaPlayer/src/MediaPlayer.cpp b/MediaPlayer/src/MediaPlayer.cpp index aaa7c933af..bcdd2dca50 100644 --- a/MediaPlayer/src/MediaPlayer.cpp +++ b/MediaPlayer/src/MediaPlayer.cpp @@ -1,7 +1,5 @@ /* - * MediaPlayer.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,31 +13,57 @@ * permissions and limitations under the License. */ +#include #include +#include -#include #include -#ifdef TOTEM_PLPARSER +#include +#include +#include #include -#else -#include -#endif +#include + #include "MediaPlayer/AttachmentReaderSource.h" +#include "MediaPlayer/ErrorTypeConversion.h" #include "MediaPlayer/IStreamSource.h" -#include "MediaPlayer/UrlSource.h" +#include "MediaPlayer/Normalizer.h" #include "MediaPlayer/MediaPlayer.h" namespace alexaClientSDK { namespace mediaPlayer { +using namespace avsCommon::avs::attachment; +using namespace avsCommon::avs::speakerConstants; +using namespace avsCommon::sdkInterfaces; using namespace avsCommon::utils; using namespace avsCommon::utils::mediaPlayer; -using namespace avsCommon::avs::attachment; +using namespace avsCommon::utils::memory; +using namespace avsCommon::utils::configuration; /// String to identify log entries originating from this file. static const std::string TAG("MediaPlayer"); +static const std::string MEDIAPLAYER_CONFIGURATION_ROOT_KEY = "gstreamerMediaPlayer"; +/// The key in our config file to find the output conversion type. +static const std::string MEDIAPLAYER_OUTPUT_CONVERSION_ROOT_KEY = "outputConversion"; +/// The acceptable conversion keys to find in the config file +/// Key strings are mapped to gstreamer capabilities documented here: +/// https://gstreamer.freedesktop.org/documentation/design/mediatype-audio-raw.html +static const std::unordered_map MEDIAPLAYER_ACCEPTED_KEYS = {{"rate", G_TYPE_INT}, + {"format", G_TYPE_STRING}, + {"channels", G_TYPE_INT}}; + +/// A counter used to increment the source id when a new source is set. +static MediaPlayer::SourceId g_id{0}; + +/// A link to @c MediaPlayerInterface::ERROR. +static const MediaPlayer::SourceId ERROR_SOURCE_ID = MediaPlayer::ERROR; + +/// A value to indicate an unqueued callback. g_idle_add() only returns ids >= 0. +static const guint UNQUEUED_CALLBACK = guint(0); + /** * Create a LogEntry using this file's TAG and the specified event string. * @@ -50,12 +74,80 @@ static const std::string TAG("MediaPlayer"); /// Timeout value for calls to @c gst_element_get_state() calls. static const unsigned int TIMEOUT_ZERO_NANOSECONDS(0); -/// Number of nanoseconds in a millisecond. -static const unsigned int NANOSECONDS_TO_MILLISECONDS(1000000); +/// GStreamer Volume Element Minimum. +static const int8_t GST_SET_VOLUME_MIN = 0; + +/// GStreamer Volume Element Maximum. +static const int8_t GST_SET_VOLUME_MAX = 1; -std::shared_ptr MediaPlayer::create() { +/// GStreamer Volume Adjust Minimum. +static const int8_t GST_ADJUST_VOLUME_MIN = -1; + +/// GStreamer Volume Adjust Maximum. +static const int8_t GST_ADJUST_VOLUME_MAX = 1; + +/// Represents the zero volume to avoid the actual 0.0 value. Used as a fix for GStreamer crashing on 0 volume for PCM. +static const gdouble VOLUME_ZERO = 0.0000001; + +/// The amount to wait before stopping the pipeline on an end-of-stream message to avoid cutting audio short prematurely +static const std::chrono::milliseconds SLEEP_AFTER_END_OF_AUDIO{300}; + +/** + * Processes tags found in the tagList. + * Called through gst_tag_list_foreach. + * + * @param tagList List of tags to iterate over. + * @param tag A specific tag from the tag list. + * @param pointerToMutableVectorOfTags Pointer to VectorOfTags. Use push_back to preserve order. + * + */ +static void collectOneTag(const GstTagList* tagList, const gchar* tag, gpointer pointerToMutableVectorOfTags) { + auto vectorOfTags = static_cast(pointerToMutableVectorOfTags); + int num = gst_tag_list_get_tag_size(tagList, tag); + for (int index = 0; index < num; ++index) { + const GValue* val = gst_tag_list_get_value_index(tagList, tag, index); + MediaPlayerObserverInterface::TagKeyValueType tagKeyValueType; + tagKeyValueType.key = std::string(tag); + if (G_VALUE_HOLDS_STRING(val)) { + tagKeyValueType.value = std::string(g_value_get_string(val)); + tagKeyValueType.type = MediaPlayerObserverInterface::TagType::STRING; + } else if (G_VALUE_HOLDS_UINT(val)) { + tagKeyValueType.value = std::to_string(g_value_get_uint(val)); + tagKeyValueType.type = MediaPlayerObserverInterface::TagType::UINT; + } else if (G_VALUE_HOLDS_INT(val)) { + tagKeyValueType.value = std::to_string(g_value_get_int(val)); + tagKeyValueType.type = MediaPlayerObserverInterface::TagType::INT; + } else if (G_VALUE_HOLDS_BOOLEAN(val)) { + tagKeyValueType.value = std::string(g_value_get_boolean(val) ? "true" : "false"); + tagKeyValueType.type = MediaPlayerObserverInterface::TagType::BOOLEAN; + } else if (GST_VALUE_HOLDS_DATE_TIME(val)) { + GstDateTime* dt = static_cast(g_value_get_boxed(val)); + gchar* dt_str = gst_date_time_to_iso8601_string(dt); + if (!dt_str) { + continue; + } + tagKeyValueType.value = std::string(dt_str); + tagKeyValueType.type = MediaPlayerObserverInterface::TagType::STRING; + g_free(dt_str); + } else if (G_VALUE_HOLDS_DOUBLE(val)) { + tagKeyValueType.value = std::to_string(g_value_get_double(val)); + tagKeyValueType.type = MediaPlayerObserverInterface::TagType::DOUBLE; + } else { + /* + * Ignore GST_VALUE_HOLDS_BUFFER and other types. + */ + continue; + } + vectorOfTags->push_back(tagKeyValueType); + } +} + +std::shared_ptr MediaPlayer::create( + std::shared_ptr contentFetcherFactory, + SpeakerInterface::Type type, + std::string name) { ACSDK_DEBUG9(LX("createCalled")); - std::shared_ptr mediaPlayer(new MediaPlayer()); + std::shared_ptr mediaPlayer(new MediaPlayer(contentFetcherFactory, type, name)); if (mediaPlayer->init()) { return mediaPlayer; } else { @@ -65,154 +157,356 @@ std::shared_ptr MediaPlayer::create() { MediaPlayer::~MediaPlayer() { ACSDK_DEBUG9(LX("~MediaPlayerCalled")); - stop(); - // Destroy before g_main_loop. - if (m_setSourceThread.joinable()) { - m_setSourceThread.join(); - } + cleanUpSource(); g_main_loop_quit(m_mainLoop); if (m_mainLoopThread.joinable()) { m_mainLoopThread.join(); } gst_object_unref(m_pipeline.pipeline); resetPipeline(); + g_source_remove(m_busWatchId); g_main_loop_unref(m_mainLoop); } -MediaPlayerStatus MediaPlayer::setSource( - std::shared_ptr reader) { +MediaPlayer::SourceId MediaPlayer::setSource( + std::shared_ptr reader, + const avsCommon::utils::AudioFormat* audioFormat) { ACSDK_DEBUG9(LX("setSourceCalled").d("sourceType", "AttachmentReader")); - std::promise promise; + std::promise promise; auto future = promise.get_future(); - std::function callback = [this, &promise, &reader]() { - handleSetAttachmentReaderSource(&promise, std::move(reader)); + std::function callback = [this, &reader, &promise, audioFormat]() { + handleSetAttachmentReaderSource(std::move(reader), &promise, audioFormat); return false; }; - queueCallback(&callback); - return future.get(); + if (queueCallback(&callback) != UNQUEUED_CALLBACK) { + return future.get(); + } + return ERROR_SOURCE_ID; } -MediaPlayerStatus MediaPlayer::setSource(std::shared_ptr stream, bool repeat) { +MediaPlayer::SourceId MediaPlayer::setSource(std::shared_ptr stream, bool repeat) { ACSDK_DEBUG9(LX("setSourceCalled").d("sourceType", "istream")); - std::promise promise; + std::promise promise; auto future = promise.get_future(); - std::function callback = [this, &promise, &stream, repeat]() { - handleSetIStreamSource(&promise, stream, repeat); + std::function callback = [this, &stream, repeat, &promise]() { + handleSetIStreamSource(stream, repeat, &promise); return false; }; - queueCallback(&callback); - return future.get(); + if (queueCallback(&callback) != UNQUEUED_CALLBACK) { + return future.get(); + } + return ERROR_SOURCE_ID; } -MediaPlayerStatus MediaPlayer::setSource(const std::string& url) { - ACSDK_DEBUG9(LX("setSourceForUrlCalled")); - std::promise promise; - std::future future = promise.get_future(); - /* - * A separate thread is needed because the UrlSource needs block and wait for callbacks - * from the main event loop (g_main_loop). Deadlock will occur if UrlSource is created - * on the main event loop. - */ - if (m_setSourceThread.joinable()) { - m_setSourceThread.join(); +MediaPlayer::SourceId MediaPlayer::setSource(const std::string& url, std::chrono::milliseconds offset) { + ACSDK_DEBUG9(LX("setSourceForUrlCalled").sensitive("url", url)); + std::promise promise; + auto future = promise.get_future(); + std::function callback = [this, url, offset, &promise]() { + handleSetUrlSource(url, offset, &promise); + return false; + }; + if (queueCallback(&callback) != UNQUEUED_CALLBACK) { + return future.get(); } - m_setSourceThread = std::thread( - &MediaPlayer::handleSetSource, - this, - std::move(promise), url); + return ERROR_SOURCE_ID; +} - return future.get(); +uint64_t MediaPlayer::getNumBytesBuffered() { + ACSDK_DEBUG9(LX("getNumBytesBuffered")); + if (m_pipeline.appsrc) { + return gst_app_src_get_current_level_bytes(GST_APP_SRC(m_pipeline.appsrc)); + } else { + return 0; + } } -MediaPlayerStatus MediaPlayer::play() { +bool MediaPlayer::play(MediaPlayer::SourceId id) { ACSDK_DEBUG9(LX("playCalled")); - if (!m_source) { + if (!m_source) { ACSDK_ERROR(LX("playFailed").d("reason", "sourceNotSet")); - return MediaPlayerStatus::FAILURE; + return ERROR; } + m_source->preprocess(); - std::promise promise; + std::promise promise; auto future = promise.get_future(); - std::function callback = [this, &promise]() { - handlePlay(&promise); + std::function callback = [this, id, &promise]() { + handlePlay(id, &promise); return false; }; - queueCallback(&callback); - return future.get(); + + if (queueCallback(&callback) != UNQUEUED_CALLBACK) { + return future.get(); + } + return false; } -MediaPlayerStatus MediaPlayer::stop() { +bool MediaPlayer::stop(MediaPlayer::SourceId id) { ACSDK_DEBUG9(LX("stopCalled")); - std::promise promise; + std::promise promise; auto future = promise.get_future(); - std::function callback = [this, &promise]() { - handleStop(&promise); + std::function callback = [this, id, &promise]() { + handleStop(id, &promise); return false; }; - queueCallback(&callback); - return future.get(); + if (queueCallback(&callback) != UNQUEUED_CALLBACK) { + return future.get(); + } + return false; } -MediaPlayerStatus MediaPlayer::pause() { +bool MediaPlayer::pause(MediaPlayer::SourceId id) { ACSDK_DEBUG9(LX("pausedCalled")); - std::promise promise; + std::promise promise; auto future = promise.get_future(); - std::function callback = [this, &promise]() { - handlePause(&promise); + std::function callback = [this, id, &promise]() { + handlePause(id, &promise); return false; }; - queueCallback(&callback); - return future.get(); + if (queueCallback(&callback) != UNQUEUED_CALLBACK) { + return future.get(); + } + return false; } -MediaPlayerStatus MediaPlayer::resume() { +bool MediaPlayer::resume(MediaPlayer::SourceId id) { ACSDK_DEBUG9(LX("resumeCalled")); - std::promise promise; + std::promise promise; auto future = promise.get_future(); - std::function callback = [this, &promise]() { - handleResume(&promise); + std::function callback = [this, id, &promise]() { + handleResume(id, &promise); return false; }; - queueCallback(&callback); - return future.get(); + if (queueCallback(&callback) != UNQUEUED_CALLBACK) { + return future.get(); + } + return false; } -int64_t MediaPlayer::getOffsetInMilliseconds() { - ACSDK_DEBUG9(LX("getOffsetInMillisecondsCalled")); - std::promise promise; +std::chrono::milliseconds MediaPlayer::getOffset(MediaPlayer::SourceId id) { + ACSDK_DEBUG9(LX("getOffsetCalled")); + std::promise promise; auto future = promise.get_future(); - std::function callback = [this, &promise]() { - handleGetOffsetInMilliseconds(&promise); + std::function callback = [this, id, &promise]() { + handleGetOffset(id, &promise); return false; }; - queueCallback(&callback); - return future.get(); -} -MediaPlayerStatus MediaPlayer::setOffset(std::chrono::milliseconds offset) { - ACSDK_DEBUG9(LX("setOffsetCalled")); - std::promise promise; - auto future = promise.get_future(); - std::function callback = [this, &promise, offset]() { - handleSetOffset(&promise, offset); - return false; - }; - queueCallback(&callback); - return future.get(); + if (queueCallback(&callback) != UNQUEUED_CALLBACK) { + return future.get(); + } + return MEDIA_PLAYER_INVALID_OFFSET; } void MediaPlayer::setObserver(std::shared_ptr observer) { ACSDK_DEBUG9(LX("setObserverCalled")); std::promise promise; auto future = promise.get_future(); - std::function callback = [this, &promise, observer]() { + std::function callback = [this, &promise, &observer]() { handleSetObserver(&promise, observer); return false; }; - queueCallback(&callback); - future.wait(); + + if (queueCallback(&callback) != UNQUEUED_CALLBACK) { + future.wait(); + } +} + +bool MediaPlayer::setVolume(int8_t volume) { + ACSDK_DEBUG9(LX("setVolumeCalled")); + std::promise promise; + auto future = promise.get_future(); + std::function callback = [this, &promise, volume]() { + handleSetVolume(&promise, volume); + return false; + }; + if (queueCallback(&callback) != UNQUEUED_CALLBACK) { + return future.get(); + } + return false; +} + +void MediaPlayer::handleSetVolumeInternal(gdouble gstVolume) { + if (gstVolume == 0) { + g_object_set(m_pipeline.volume, "volume", VOLUME_ZERO, NULL); + } else { + g_object_set(m_pipeline.volume, "volume", gstVolume, NULL); + } + m_lastVolume = gstVolume; +} + +void MediaPlayer::handleSetVolume(std::promise* promise, int8_t volume) { + ACSDK_DEBUG9(LX("handleSetVolumeCalled")); + auto toGstVolume = + Normalizer::create(AVS_SET_VOLUME_MIN, AVS_SET_VOLUME_MAX, GST_SET_VOLUME_MIN, GST_SET_VOLUME_MAX); + if (!toGstVolume) { + ACSDK_ERROR(LX("handleSetVolumeFailed").d("reason", "createNormalizerFailed")); + promise->set_value(false); + return; + } + + gdouble gstVolume; + if (!m_pipeline.volume) { + ACSDK_ERROR(LX("handleSetVolumeFailed").d("reason", "volumeElementNull")); + promise->set_value(false); + return; + } + + if (!toGstVolume->normalize(volume, &gstVolume)) { + ACSDK_ERROR(LX("handleSetVolumeFailed").d("reason", "normalizeVolumeFailed")); + promise->set_value(false); + return; + } + + handleSetVolumeInternal(gstVolume); + promise->set_value(true); +} + +bool MediaPlayer::adjustVolume(int8_t delta) { + ACSDK_DEBUG9(LX("adjustVolumeCalled")); + std::promise promise; + auto future = promise.get_future(); + std::function callback = [this, &promise, delta]() { + handleAdjustVolume(&promise, delta); + return false; + }; + if (queueCallback(&callback) != UNQUEUED_CALLBACK) { + return future.get(); + } + return false; +} + +void MediaPlayer::handleAdjustVolume(std::promise* promise, int8_t delta) { + ACSDK_DEBUG9(LX("handleAdjustVolumeCalled")); + auto toGstDeltaVolume = + Normalizer::create(AVS_ADJUST_VOLUME_MIN, AVS_ADJUST_VOLUME_MAX, GST_ADJUST_VOLUME_MIN, GST_ADJUST_VOLUME_MAX); + + if (!toGstDeltaVolume) { + ACSDK_ERROR(LX("handleAdjustVolumeFailed").d("reason", "createNormalizerFailed")); + promise->set_value(false); + return; + } + + if (!m_pipeline.volume) { + ACSDK_ERROR(LX("adjustVolumeFailed").d("reason", "volumeElementNull")); + promise->set_value(false); + return; + } + + gdouble gstVolume; + g_object_get(m_pipeline.volume, "volume", &gstVolume, NULL); + + gdouble gstDelta; + if (!toGstDeltaVolume->normalize(delta, &gstDelta)) { + ACSDK_ERROR(LX("adjustVolumeFailed").d("reason", "normalizeVolumeFailed")); + promise->set_value(false); + return; + } + + gstVolume += gstDelta; + + // If adjustment exceeds bounds, cap at max/min. + gstVolume = std::min(gstVolume, static_cast(GST_SET_VOLUME_MAX)); + gstVolume = std::max(gstVolume, static_cast(GST_SET_VOLUME_MIN)); + + handleSetVolumeInternal(gstVolume); + promise->set_value(true); +} + +bool MediaPlayer::setMute(bool mute) { + ACSDK_DEBUG9(LX("setMuteCalled")); + std::promise promise; + auto future = promise.get_future(); + std::function callback = [this, &promise, mute]() { + handleSetMute(&promise, mute); + return false; + }; + if (queueCallback(&callback) != UNQUEUED_CALLBACK) { + return future.get(); + } + return false; +} + +void MediaPlayer::handleSetMute(std::promise* promise, bool mute) { + ACSDK_DEBUG9(LX("handleSetMuteCalled")); + if (!m_pipeline.volume) { + ACSDK_ERROR(LX("setMuteFailed").d("reason", "volumeElementNull")); + promise->set_value(false); + return; + } + + // A fix for GStreamer crashing for zero volume on PCM data + g_object_set(m_pipeline.volume, "volume", mute || m_lastVolume == 0 ? VOLUME_ZERO : m_lastVolume, NULL); + m_isMuted = mute; + promise->set_value(true); +} + +bool MediaPlayer::getSpeakerSettings(SpeakerInterface::SpeakerSettings* settings) { + ACSDK_DEBUG9(LX("getSpeakerSettingsCalled")); + std::promise promise; + auto future = promise.get_future(); + std::function callback = [this, &promise, settings]() { + handleGetSpeakerSettings(&promise, settings); + return false; + }; + if (queueCallback(&callback) != UNQUEUED_CALLBACK) { + return future.get(); + } + return false; +} + +void MediaPlayer::handleGetSpeakerSettings( + std::promise* promise, + avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings* settings) { + ACSDK_DEBUG9(LX("handleGetSpeakerSettingsCalled")); + if (!settings) { + ACSDK_ERROR(LX("getSpeakerSettingsFailed").d("reason", "nullSettings")); + promise->set_value(false); + return; + } else if (!m_pipeline.volume) { + ACSDK_ERROR(LX("getSpeakerSettingsFailed").d("reason", "volumeElementNull")); + promise->set_value(false); + return; + } + + auto toAVSVolume = + Normalizer::create(GST_SET_VOLUME_MIN, GST_SET_VOLUME_MAX, AVS_SET_VOLUME_MIN, AVS_SET_VOLUME_MAX); + if (!toAVSVolume) { + ACSDK_ERROR(LX("handleGetSpeakerSettingsFailed").d("reason", "createNormalizerFailed")); + promise->set_value(false); + return; + } + + gdouble avsVolume; + gdouble gstVolume; + gboolean mute; + g_object_get(m_pipeline.volume, "volume", &gstVolume, "mute", &mute, NULL); + + /// A part of GStreamer crash fix for zero volume on PCM data + mute = m_isMuted; + if (mute) { + gstVolume = m_lastVolume; + } + + if (!toAVSVolume->normalize(gstVolume, &avsVolume)) { + ACSDK_ERROR(LX("handleGetSpeakerSettingsFailed").d("reason", "normalizeVolumeFailed")); + promise->set_value(false); + return; + } + + // AVS Volume will be between 0 and 100. + settings->volume = static_cast(std::round(avsVolume)); + settings->mute = mute; + + promise->set_value(true); +} + +SpeakerInterface::Type MediaPlayer::getSpeakerType() { + ACSDK_DEBUG9(LX("getSpeakerTypeCalled")); + return m_speakerType; } void MediaPlayer::setAppSrc(GstAppSrc* appSrc) { @@ -235,16 +529,29 @@ GstElement* MediaPlayer::getPipeline() const { return m_pipeline.pipeline; } -MediaPlayer::MediaPlayer() : +MediaPlayer::MediaPlayer( + std::shared_ptr contentFetcherFactory, + SpeakerInterface::Type type, + std::string name) : + RequiresShutdown{name}, + m_lastVolume{GST_SET_VOLUME_MAX}, + m_isMuted{false}, + m_contentFetcherFactory{contentFetcherFactory}, + m_speakerType{type}, m_playbackStartedSent{false}, m_playbackFinishedSent{false}, m_isPaused{false}, m_isBufferUnderrun{false}, - m_playerObserver{nullptr} { + m_playerObserver{nullptr}, + m_currentId{ERROR}, + m_playPending{false}, + m_pausePending{false}, + m_resumePending{false}, + m_pauseImmediately{false} { } bool MediaPlayer::init() { - if (false == gst_init_check (NULL, NULL, NULL)) { + if (false == gst_init_check(NULL, NULL, NULL)) { ACSDK_ERROR(LX("initPlayerFailed").d("reason", "gstInitCheckFailed")); return false; } @@ -256,10 +563,22 @@ bool MediaPlayer::init() { m_mainLoopThread = std::thread(g_main_loop_run, m_mainLoop); + if (!setupPipeline()) { + ACSDK_ERROR(LX("initPlayerFailed").d("reason", "setupPipelineFailed")); + return false; + } + return true; } bool MediaPlayer::setupPipeline() { + m_pipeline.decodedQueue = gst_element_factory_make("queue", "decodedQueue"); + // Do not send signals or messages. Let the decoder buffer messages dictate application logic. + g_object_set(m_pipeline.decodedQueue, "silent", TRUE, NULL); + if (!m_pipeline.decodedQueue) { + ACSDK_ERROR(LX("setupPipelineFailed").d("reason", "createQueueElementFailed")); + return false; + } m_pipeline.converter = gst_element_factory_make("audioconvert", "converter"); if (!m_pipeline.converter) { @@ -267,12 +586,86 @@ bool MediaPlayer::setupPipeline() { return false; } - m_pipeline.audioSink = gst_element_factory_make("autoaudiosink", "audio_sink"); + m_pipeline.volume = gst_element_factory_make("volume", "volume"); + if (!m_pipeline.volume) { + ACSDK_ERROR(LX("setupPipelineFailed").d("reason", "createVolumeElementFailed")); + return false; + } + + m_pipeline.audioSink = gst_element_factory_make("alsasink", "audio_sink"); if (!m_pipeline.audioSink) { ACSDK_ERROR(LX("setupPipelineFailed").d("reason", "createAudioSinkElementFailed")); return false; } + GstCaps* caps = gst_caps_new_empty_simple("audio/x-raw"); + if (!caps) { + ACSDK_ERROR(LX("setupPipelineFailed").d("reason", "createCapabilityStructFailed")); + return false; + } + + m_pipeline.resample = nullptr; + m_pipeline.caps = nullptr; + + // Check to see if user has specified an output configuration + auto configurationRoot = + ConfigurationNode::getRoot()[MEDIAPLAYER_CONFIGURATION_ROOT_KEY][MEDIAPLAYER_OUTPUT_CONVERSION_ROOT_KEY]; + if (configurationRoot) { + std::string value; + + // Search for output configuration keys + for (auto& it : MEDIAPLAYER_ACCEPTED_KEYS) { + if (!configurationRoot.getString(it.first, &value) || value.empty()) { + continue; + } + + // Found key, add it to capability struct + switch (it.second) { + case G_TYPE_INT: + gst_caps_set_simple(caps, it.first.c_str(), it.second, std::stoi(value), NULL); + break; + case G_TYPE_STRING: + gst_caps_set_simple(caps, it.first.c_str(), it.second, value.c_str(), NULL); + break; + } + } + + // Add resample logic if configuration found + if (!gst_caps_is_empty(caps)) { + ACSDK_INFO(LX("outputConversion").d("string", gst_caps_to_string(caps))); + + m_pipeline.resample = gst_element_factory_make("audioresample", "resample"); + if (!m_pipeline.resample) { + ACSDK_ERROR(LX("setupPipelineFailed").d("reason", "createResampleElementFailed")); + return false; + } + + m_pipeline.caps = gst_element_factory_make("capsfilter", "caps"); + if (!m_pipeline.caps) { + ACSDK_ERROR(LX("setupPipelineFailed").d("reason", "createCapabilityElementFailed")); + return false; + } + + g_object_set(G_OBJECT(m_pipeline.caps), "caps", caps, NULL); + } else { + ACSDK_INFO(LX("invalidOutputConversion").d("string", gst_caps_to_string(caps))); + } + } else { + ACSDK_DEBUG9(LX("noOutputConversion")); + } + + // clean up caps object + gst_caps_unref(caps); + + /* + * Certain music sources, specifically Audible, were unable to play properly. With Audible, frames were getting + * dropped and the audio would play very choppily. For example, in a 10 second chunk, seconds 1-5 would play + * followed immediately by seconds 6.5-7.5, followed by 8.5-10. Setting this property to false prevents the sink + * from dropping frames because they arrive too late. + * TODO: Investigate why frames are arriving late to the sink causing MPEG-TS files to play choppily + */ + g_object_set(m_pipeline.audioSink, "sync", FALSE, NULL); + m_pipeline.pipeline = gst_pipeline_new("audio-pipeline"); if (!m_pipeline.pipeline) { ACSDK_ERROR(LX("setupPipelineFailed").d("reason", "createPipelineElementFailed")); @@ -283,26 +676,63 @@ bool MediaPlayer::setupPipeline() { m_busWatchId = gst_bus_add_watch(bus, &MediaPlayer::onBusMessage, this); gst_object_unref(bus); - // Link only the converter and sink here. Src will be linked in respective source files. - gst_bin_add_many(GST_BIN(m_pipeline.pipeline), m_pipeline.converter, m_pipeline.audioSink, nullptr); + // Link only the queue, converter, volume, and sink here. Src will be linked in respective source files. + gst_bin_add_many( + GST_BIN(m_pipeline.pipeline), + m_pipeline.decodedQueue, + m_pipeline.converter, + m_pipeline.volume, + m_pipeline.audioSink, + nullptr); + + if (m_pipeline.resample != nullptr && m_pipeline.caps != nullptr) { + // Set up pipeline with the resampler + gst_bin_add_many(GST_BIN(m_pipeline.pipeline), m_pipeline.resample, m_pipeline.caps, nullptr); + + if (!gst_element_link_many( + m_pipeline.decodedQueue, + m_pipeline.converter, + m_pipeline.volume, + m_pipeline.resample, + m_pipeline.caps, + nullptr)) { + ACSDK_ERROR(LX("setupPipelineFailed").d("reason", "createVolumeToConverterLinkFailed")); + return false; + } - if (!gst_element_link(m_pipeline.converter, m_pipeline.audioSink)) { - ACSDK_ERROR(LX("setupPipelineFailed").d("reason", "createConverterToSinkLinkFailed")); - return false; + if (!gst_element_link_filtered(m_pipeline.caps, m_pipeline.audioSink, caps)) { + ACSDK_ERROR(LX("setupPipelineFailed").d("reason", "createFilteredLinkFailed")); + return false; + } + } else { + // No output format specified, set up a normal pipeline + if (!gst_element_link_many( + m_pipeline.decodedQueue, m_pipeline.converter, m_pipeline.volume, m_pipeline.audioSink, nullptr)) { + ACSDK_ERROR(LX("setupPipelineFailed").d("reason", "createResampleToSinkLinkFailed")); + return false; + } } return true; } -void MediaPlayer::tearDownPipeline() { - ACSDK_DEBUG9(LX("tearDownPipeline")); - if (m_pipeline.pipeline) { - doStop(); - gst_object_unref(m_pipeline.pipeline); - resetPipeline(); - g_source_remove(m_busWatchId); +void MediaPlayer::tearDownTransientPipelineElements() { + ACSDK_DEBUG9(LX("tearDownTransientPipelineElements")); + saveOffsetBeforeTeardown(); + if (m_currentId != ERROR_SOURCE_ID) { + sendPlaybackStopped(); } + m_currentId = ERROR_SOURCE_ID; + cleanUpSource(); m_offsetManager.clear(); + m_playPending = false; + m_pausePending = false; + m_resumePending = false; + m_pauseImmediately = false; + m_playbackStartedSent = false; + m_playbackFinishedSent = false; + m_isPaused = false; + m_isBufferUnderrun = false; } void MediaPlayer::resetPipeline() { @@ -310,7 +740,11 @@ void MediaPlayer::resetPipeline() { m_pipeline.pipeline = nullptr; m_pipeline.appsrc = nullptr; m_pipeline.decoder = nullptr; + m_pipeline.decodedQueue = nullptr; m_pipeline.converter = nullptr; + m_pipeline.volume = nullptr; + m_pipeline.resample = nullptr; + m_pipeline.caps = nullptr; m_pipeline.audioSink = nullptr; } @@ -337,16 +771,15 @@ bool MediaPlayer::seek() { ACSDK_DEBUG9(LX("seekCalled")); if (!m_offsetManager.isSeekable() || !m_offsetManager.isSeekPointSet()) { ACSDK_ERROR(LX("seekFailed") - .d("reason", "invalidState") - .d("isSeekable", m_offsetManager.isSeekable()) - .d("seekPointSet", m_offsetManager.isSeekPointSet())); + .d("reason", "invalidState") + .d("isSeekable", m_offsetManager.isSeekable()) + .d("seekPointSet", m_offsetManager.isSeekPointSet())); seekSuccessful = false; } else if (!gst_element_seek_simple( - m_pipeline.pipeline, - GST_FORMAT_TIME, // ns - static_cast(GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT), - std::chrono::duration_cast( - m_offsetManager.getSeekPoint()).count())) { + m_pipeline.pipeline, + GST_FORMAT_TIME, // ns + static_cast(GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT), + std::chrono::duration_cast(m_offsetManager.getSeekPoint()).count())) { ACSDK_ERROR(LX("seekFailed").d("reason", "gstElementSeekSimpleFailed")); seekSuccessful = false; } else { @@ -357,15 +790,41 @@ bool MediaPlayer::seek() { return seekSuccessful; } -guint MediaPlayer::queueCallback(const std::function *callback) { - return g_idle_add(reinterpret_cast(&onCallback), const_cast *>(callback)); +guint MediaPlayer::queueCallback(const std::function* callback) { + if (isShutdown()) { + return UNQUEUED_CALLBACK; + } + return g_idle_add(reinterpret_cast(&onCallback), const_cast*>(callback)); +} + +void MediaPlayer::onError() { + ACSDK_DEBUG9(LX("onError")); + /* + * Instead of calling the queueCallback, we are calling g_idle_add here directly here because we want this callback + * to be non-blocking. To do this, we are creating a static callback function with the this pointer passed in as + * a parameter. + */ + g_idle_add(reinterpret_cast(&onErrorCallback), this); +} + +void MediaPlayer::doShutdown() { + gst_element_set_state(m_pipeline.pipeline, GST_STATE_NULL); + g_main_loop_quit(m_mainLoop); + if (m_mainLoopThread.joinable()) { + m_mainLoopThread.join(); + } + if (m_urlConverter) { + m_urlConverter->shutdown(); + } + m_urlConverter.reset(); + m_playerObserver.reset(); } -gboolean MediaPlayer::onCallback(const std::function *callback) { +gboolean MediaPlayer::onCallback(const std::function* callback) { return (*callback)(); } -void MediaPlayer::onPadAdded(GstElement *decoder, GstPad *pad, gpointer pointer) { +void MediaPlayer::onPadAdded(GstElement* decoder, GstPad* pad, gpointer pointer) { ACSDK_DEBUG9(LX("onPadAddedCalled")); auto mediaPlayer = static_cast(pointer); std::promise promise; @@ -374,68 +833,92 @@ void MediaPlayer::onPadAdded(GstElement *decoder, GstPad *pad, gpointer pointer) mediaPlayer->handlePadAdded(&promise, decoder, pad); return false; }; - mediaPlayer->queueCallback(&callback); - future.wait(); + if (mediaPlayer->queueCallback(&callback) != UNQUEUED_CALLBACK) { + future.wait(); + } } -void MediaPlayer::handlePadAdded(std::promise* promise, GstElement *decoder, GstPad *pad) { +void MediaPlayer::handlePadAdded(std::promise* promise, GstElement* decoder, GstPad* pad) { ACSDK_DEBUG9(LX("handlePadAddedSignalCalled")); - GstElement *converter = m_pipeline.converter; - gst_element_link(decoder, converter); + gst_element_link(decoder, m_pipeline.decodedQueue); promise->set_value(); } -gboolean MediaPlayer::onBusMessage(GstBus *bus, GstMessage *message, gpointer mediaPlayer) { +gboolean MediaPlayer::onBusMessage(GstBus* bus, GstMessage* message, gpointer mediaPlayer) { return static_cast(mediaPlayer)->handleBusMessage(message); } -gboolean MediaPlayer::handleBusMessage(GstMessage *message) { - ACSDK_DEBUG9(LX("messageReceived").d("messageType", gst_message_type_get_name(GST_MESSAGE_TYPE(message)))); +void MediaPlayer::saveOffsetBeforeTeardown() { + gint64 position = -1; + if (!gst_element_query_position(m_pipeline.pipeline, GST_FORMAT_TIME, &position)) { + // Query Failed. + ACSDK_ERROR(LX("saveOffsetBeforeTeardown - gst_element_query_position failed")); + m_offsetBeforeTeardown = MEDIA_PLAYER_INVALID_OFFSET; + return; + } + std::chrono::milliseconds startStreamingPoint = std::chrono::milliseconds::zero(); + if (m_urlConverter) { + startStreamingPoint = m_urlConverter->getStartStreamingPoint(); + } + m_offsetBeforeTeardown = + (startStreamingPoint + + std::chrono::duration_cast(std::chrono::nanoseconds(position))); + ACSDK_DEBUG(LX("saveOffsetBeforeTeardown").d("offset", m_offsetBeforeTeardown.count())); +} + +gboolean MediaPlayer::handleBusMessage(GstMessage* message) { + ACSDK_DEBUG9( + LX("messageReceived").d("type", GST_MESSAGE_TYPE_NAME(message)).d("source", GST_MESSAGE_SRC_NAME(message))); switch (GST_MESSAGE_TYPE(message)) { case GST_MESSAGE_EOS: + /* + * As a result of setting the "sync" property to false, we get notified of end-of-stream messages from + * GStreamer a bit prematurely. For example in the last couple hundred milliseconds or so. Setting this + * sleep allows the Speak to completely finish before tearing down the pipeline. + * TODO: ACSDK-828 Figure out why the end-of-stream message is coming prematurely and fix if possible. + */ + std::this_thread::sleep_for(SLEEP_AFTER_END_OF_AUDIO); if (GST_MESSAGE_SRC(message) == GST_OBJECT_CAST(m_pipeline.pipeline)) { if (!m_source->handleEndOfStream()) { - alexaClientSDK::avsCommon::utils::logger::LogEntry *errorDescription = - &(LX("handleBusMessageFailed").d("reason", "sourceHandleEndOfStreamFailed")); - ACSDK_ERROR(*errorDescription); - sendPlaybackError(errorDescription->c_str()); + const std::string errorMessage{"reason=sourceHandleEndOfStreamFailed"}; + ACSDK_ERROR(LX("handleBusMessageFailed").m(errorMessage)); + sendPlaybackError(ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, errorMessage); + break; } // Continue playback if there is additional data. if (m_source->hasAdditionalData()) { if (GST_STATE_CHANGE_FAILURE == gst_element_set_state(m_pipeline.pipeline, GST_STATE_NULL)) { - alexaClientSDK::avsCommon::utils::logger::LogEntry *errorDescription = - &(LX("continuingPlaybackFailed").d("reason", "setPiplineToNullFailed")); - - ACSDK_ERROR(*errorDescription); - sendPlaybackError(errorDescription->c_str()); + const std::string errorMessage{"reason=setPipelineToNullFailed"}; + ACSDK_ERROR(LX("continuingPlaybackFailed").m(errorMessage)); + sendPlaybackError(ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, errorMessage); + break; } if (GST_STATE_CHANGE_FAILURE == gst_element_set_state(m_pipeline.pipeline, GST_STATE_PLAYING)) { - alexaClientSDK::avsCommon::utils::logger::LogEntry *errorDescription = - &(LX("continuingPlaybackFailed").d("reason", "setPiplineToPlayingFailed")); - - ACSDK_ERROR(*errorDescription); - sendPlaybackError(errorDescription->c_str()); + const std::string errorMessage{"reason=setPipelineToPlayingFailed"}; + ACSDK_ERROR(LX("continuingPlaybackFailed").m(errorMessage)); + sendPlaybackError(ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, errorMessage); + break; } } else { sendPlaybackFinished(); - tearDownPipeline(); } } break; case GST_MESSAGE_ERROR: { - GError *error; - gchar *debug; + GError* error; + gchar* debug; gst_message_parse_error(message, &error, &debug); std::string messageSrcName = GST_MESSAGE_SRC_NAME(message); ACSDK_ERROR(LX("handleBusMessageError") - .d("source", messageSrcName) - .d("error", error->message) - .d("debug", debug ? debug : "noInfo")); - sendPlaybackError(error->message); + .d("source", messageSrcName) + .d("error", error->message) + .d("debug", debug ? debug : "noInfo")); + bool isPlaybackRemote = m_source ? m_source->isPlaybackRemote() : false; + sendPlaybackError(gerrorToErrorType(error, isPlaybackRemote), error->message); g_error_free(error); g_free(debug); break; @@ -448,10 +931,42 @@ gboolean MediaPlayer::handleBusMessage(GstMessage *message) { GstState pendingState; gst_message_parse_state_changed(message, &oldState, &newState, &pendingState); ACSDK_DEBUG9(LX("State Change") - .d("oldState", gst_element_state_get_name(oldState)) - .d("newState", gst_element_state_get_name(newState)) - .d("pendingState", gst_element_state_get_name(pendingState))); - if (newState == GST_STATE_PLAYING) { + .d("oldState", gst_element_state_get_name(oldState)) + .d("newState", gst_element_state_get_name(newState)) + .d("pendingState", gst_element_state_get_name(pendingState))); + if (GST_STATE_PAUSED == newState) { + /* + * Pause occurred immediately after a play/resume, so it's possible that the play/resume + * was never enacted by MediaPlayer. If there are pending play/resume at the time of the pause, + * notify the observers that the calls were still received. + */ + if (m_pauseImmediately) { + if (m_playPending) { + sendPlaybackStarted(); + } else if (m_resumePending) { + sendPlaybackResumed(); + } + sendPlaybackPaused(); + } else if (GST_STATE_PLAYING == pendingState) { + // GStreamer seeks should be performed when the pipeline is in the PAUSED or PLAYING state only, + // so just before we make our first upwards state change from PAUSED to PLAYING, we perform the + // seek. + if (m_offsetManager.isSeekable() && m_offsetManager.isSeekPointSet()) { + if (!seek()) { + std::string error = "seekFailed"; + ACSDK_ERROR(LX(error)); + sendPlaybackError(ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, error); + }; + } + } else if (GST_STATE_PLAYING == oldState && GST_STATE_VOID_PENDING == pendingState) { + // State change from PLAYING -> PAUSED. + if (m_isBufferUnderrun) { + sendBufferUnderrun(); + } else if (!m_isPaused) { + sendPlaybackPaused(); + } + } + } else if (newState == GST_STATE_PLAYING) { if (!m_playbackStartedSent) { sendPlaybackStarted(); } else { @@ -460,18 +975,10 @@ gboolean MediaPlayer::handleBusMessage(GstMessage *message) { m_isBufferUnderrun = false; } else if (m_isPaused) { sendPlaybackResumed(); - m_isPaused = false; } } - } else if (newState == GST_STATE_PAUSED && oldState == GST_STATE_PLAYING) { - if (m_isBufferUnderrun) { - sendBufferUnderrun(); - } else if (!m_isPaused) { - sendPlaybackPaused(); - m_isPaused = true; - } } else if (newState == GST_STATE_NULL && oldState == GST_STATE_READY) { - sendPlaybackFinished(); + sendPlaybackStopped(); } } break; @@ -485,7 +992,7 @@ gboolean MediaPlayer::handleBusMessage(GstMessage *message) { if (GST_STATE_CHANGE_FAILURE == gst_element_set_state(m_pipeline.pipeline, GST_STATE_PAUSED)) { std::string error = "pausingOnBufferUnderrunFailed"; ACSDK_ERROR(LX(error)); - sendPlaybackError(error); + sendPlaybackError(ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, error); break; } // Only enter bufferUnderrun after playback has started. @@ -493,358 +1000,426 @@ gboolean MediaPlayer::handleBusMessage(GstMessage *message) { m_isBufferUnderrun = true; } } else { + if (m_pauseImmediately) { + // To avoid starting to play if a pause() was called immediately after calling a play() + break; + } bool isSeekable = false; if (queryIsSeekable(&isSeekable)) { - m_offsetManager.setIsSeekable(isSeekable); + m_offsetManager.setIsSeekable(isSeekable); } ACSDK_DEBUG9(LX("offsetState") - .d("isSeekable", m_offsetManager.isSeekable()) - .d("isSeekPointSet", m_offsetManager.isSeekPointSet())); + .d("isSeekable", m_offsetManager.isSeekable()) + .d("isSeekPointSet", m_offsetManager.isSeekPointSet())); if (m_offsetManager.isSeekable() && m_offsetManager.isSeekPointSet()) { seek(); } else if (GST_STATE_CHANGE_FAILURE == gst_element_set_state(m_pipeline.pipeline, GST_STATE_PLAYING)) { std::string error = "resumingOnBufferRefilledFailed"; ACSDK_ERROR(LX(error)); - sendPlaybackError(error); + sendPlaybackError(ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, error); } } break; } + case GST_MESSAGE_TAG: { + auto vectorOfTags = collectTags(message); + sendStreamTagsToObserver(std::move(vectorOfTags)); + break; + } default: break; } - return true; } +std::unique_ptr MediaPlayer::collectTags(GstMessage* message) { + VectorOfTags vectorOfTags; + GstTagList* tags = NULL; + gst_message_parse_tag(message, &tags); + int num_of_tags = gst_tag_list_n_tags(tags); + if (!num_of_tags) { + gst_tag_list_unref(tags); + return nullptr; + } + gst_tag_list_foreach(tags, &collectOneTag, &vectorOfTags); + gst_tag_list_unref(tags); + return make_unique(vectorOfTags); +} + +void MediaPlayer::sendStreamTagsToObserver(std::unique_ptr vectorOfTags) { + ACSDK_DEBUG(LX("callingOnTags")); + if (m_playerObserver) { + m_playerObserver->onTags(m_currentId, std::move(vectorOfTags)); + } +} + void MediaPlayer::handleSetAttachmentReaderSource( - std::promise *promise, std::shared_ptr reader) { + std::shared_ptr reader, + std::promise* promise, + const avsCommon::utils::AudioFormat* audioFormat) { ACSDK_DEBUG(LX("handleSetSourceCalled")); - tearDownPipeline(); - - if (!setupPipeline()) { - ACSDK_ERROR(LX("handleSetAttachmentReaderSourceFailed").d("reason", "setupPipelineFailed")); - promise->set_value(MediaPlayerStatus::FAILURE); - return; - } + tearDownTransientPipelineElements(); - m_source = AttachmentReaderSource::create(this, reader); + std::shared_ptr source = AttachmentReaderSource::create(this, reader, audioFormat); - if (!m_source) { + if (!source) { ACSDK_ERROR(LX("handleSetAttachmentReaderSourceFailed").d("reason", "sourceIsNullptr")); - promise->set_value(MediaPlayerStatus::FAILURE); + promise->set_value(ERROR_SOURCE_ID); return; } /* * Once the source pad for the decoder has been added, the decoder emits the pad-added signal. Connect the signal - * to the callback which performs the linking of the decoder source pad to the converter sink pad. + * to the callback which performs the linking of the decoder source pad to decodedQueue sink pad. */ if (!g_signal_connect(m_pipeline.decoder, "pad-added", G_CALLBACK(onPadAdded), this)) { ACSDK_ERROR(LX("handleSetAttachmentReaderSourceFailed").d("reason", "connectPadAddedSignalFailed")); - promise->set_value(MediaPlayerStatus::FAILURE); + promise->set_value(ERROR_SOURCE_ID); return; } - promise->set_value(MediaPlayerStatus::SUCCESS); + m_source = source; + m_currentId = ++g_id; + m_offsetManager.setIsSeekable(true); + promise->set_value(m_currentId); } void MediaPlayer::handleSetIStreamSource( - std::promise *promise, std::shared_ptr stream, bool repeat) { + std::shared_ptr stream, + bool repeat, + std::promise* promise) { ACSDK_DEBUG(LX("handleSetSourceCalled")); - tearDownPipeline(); - - if (!setupPipeline()) { - ACSDK_ERROR(LX("handleSetIStreamSourceFailed").d("reason", "setupPipelineFailed")); - promise->set_value(MediaPlayerStatus::FAILURE); - return; - } + tearDownTransientPipelineElements(); - m_source = IStreamSource::create(this, stream, repeat); + std::shared_ptr source = IStreamSource::create(this, stream, repeat); - if (!m_source) { + if (!source) { ACSDK_ERROR(LX("handleSetIStreamSourceFailed").d("reason", "sourceIsNullptr")); - promise->set_value(MediaPlayerStatus::FAILURE); + promise->set_value(ERROR_SOURCE_ID); return; } /* - * Once the source pad for the decoder has been added, the decoder emits the pad-added signal. Connect the signal - * to the callback which performs the linking of the decoder source pad to the converter sink pad. - */ + * Once the source pad for the decoder has been added, the decoder emits the pad-added signal. Connect the signal + * to the callback which performs the linking of the decoder source pad to the decodedQueue sink pad. + */ if (!g_signal_connect(m_pipeline.decoder, "pad-added", G_CALLBACK(onPadAdded), this)) { ACSDK_ERROR(LX("handleSetIStreamSourceFailed").d("reason", "connectPadAddedSignalFailed")); - promise->set_value(MediaPlayerStatus::FAILURE); + promise->set_value(ERROR_SOURCE_ID); return; } - promise->set_value(MediaPlayerStatus::SUCCESS); + m_source = source; + m_currentId = ++g_id; + promise->set_value(m_currentId); } -void MediaPlayer::handleSetSource(std::promise promise, std::string url) { +void MediaPlayer::handleSetUrlSource( + const std::string& url, + std::chrono::milliseconds offset, + std::promise* promise) { ACSDK_DEBUG(LX("handleSetSourceForUrlCalled")); - tearDownPipeline(); + tearDownTransientPipelineElements(); - if (!setupPipeline()) { - ACSDK_ERROR(LX("handleSetSourceForUrlFailed").d("reason", "setupPipelineFailed")); - promise.set_value(MediaPlayerStatus::FAILURE); + m_urlConverter = alexaClientSDK::playlistParser::UrlContentToAttachmentConverter::create( + m_contentFetcherFactory, url, shared_from_this(), offset); + if (!m_urlConverter) { + ACSDK_ERROR(LX("setSourceUrlFailed").d("reason", "badUrlConverter")); + promise->set_value(ERROR_SOURCE_ID); return; } - -#ifdef TOTEM_PLPARSER - m_source = UrlSource::create(this, alexaClientSDK::playlistParser::PlaylistParser::create(), url); -#else - m_source = UrlSource::create(this, alexaClientSDK::playlistParser::DummyPlaylistParser::create(), url); -#endif - - if (!m_source) { - ACSDK_ERROR(LX("handleSetSourceForUrlFailed").d("reason", "sourceIsNullptr")); - promise.set_value(MediaPlayerStatus::FAILURE); + auto attachment = m_urlConverter->getAttachment(); + if (!attachment) { + ACSDK_ERROR(LX("setSourceUrlFailed").d("reason", "badAttachmentReceived")); + promise->set_value(ERROR_SOURCE_ID); return; } - - /* - * This works with audio only sources. This does not work for any source that has more than one stream. - * The first pad that is added may not be the correct stream (ie may be a video stream), and will fail. - * - * Once the source pad for the decoder has been added, the decoder emits the pad-added signal. Connect the signal - * to the callback which performs the linking of the decoder source pad to the converter sink pad. - */ - if (!g_signal_connect(m_pipeline.decoder, "pad-added", G_CALLBACK(onPadAdded), this)) { - ACSDK_ERROR(LX("handleSetSourceForUrlFailed").d("reason", "connectPadAddedSignalFailed")); - promise.set_value(MediaPlayerStatus::FAILURE); + std::shared_ptr reader = + attachment->createReader(sds::ReaderPolicy::BLOCKING); + if (!reader) { + ACSDK_ERROR(LX("setSourceUrlFailed").d("reason", "failedToCreateAttachmentReader")); + promise->set_value(ERROR_SOURCE_ID); return; } - - promise.set_value(MediaPlayerStatus::SUCCESS); + handleSetAttachmentReaderSource(reader, promise); } -void MediaPlayer::handlePlay(std::promise *promise) { - ACSDK_DEBUG(LX("handlePlayCalled")); +void MediaPlayer::handlePlay(SourceId id, std::promise* promise) { + ACSDK_DEBUG(LX("handlePlayCalled").d("idPassed", id).d("currentId", (m_currentId))); + if (!validateSourceAndId(id)) { + ACSDK_ERROR(LX("handlePlayFailed")); + promise->set_value(false); + return; + } - // If the player was in PLAYING state or was pending transition to PLAYING state, stop playing audio. - if (MediaPlayerStatus::SUCCESS != doStop()) { - ACSDK_ERROR(LX("handlePlayFailed").d("reason", "doStopFailed")); - promise->set_value(MediaPlayerStatus::FAILURE); + GstState curState; + auto stateChange = gst_element_get_state(m_pipeline.pipeline, &curState, NULL, TIMEOUT_ZERO_NANOSECONDS); + if (stateChange == GST_STATE_CHANGE_FAILURE) { + ACSDK_ERROR(LX("handlePlayFailed").d("reason", "gstElementGetStateFailed")); + promise->set_value(false); + return; + } + if (curState == GST_STATE_PLAYING) { + ACSDK_DEBUG(LX("handlePlayFailed").d("reason", "alreadyPlaying")); + promise->set_value(false); + return; + } + if (m_playPending) { + ACSDK_DEBUG(LX("handlePlayFailed").d("reason", "playCurrentlyPending")); + promise->set_value(false); return; } m_playbackFinishedSent = false; - - gboolean supportsBuffering; - g_object_get(m_pipeline.decoder, - "use-buffering", &supportsBuffering, - NULL); - ACSDK_DEBUG(LX("handlePlay").d("supportsBuffering", supportsBuffering)); - - if (supportsBuffering) { - /* - * Set pipeline to PAUSED state to start buffering. - * When buffer is full, GST_MESSAGE_BUFFERING will be sent, - * and handleBusMessage() will then set the pipeline to PLAY. - */ - if (GST_STATE_CHANGE_FAILURE == gst_element_set_state(m_pipeline.pipeline, GST_STATE_PAUSED)) { - ACSDK_ERROR(LX("handlePlayFailed").d("reason", "failedToStartBuffering")); - promise->set_value(MediaPlayerStatus::FAILURE); - } else { - ACSDK_INFO(LX("Starting Buffering")); - promise->set_value(MediaPlayerStatus::PENDING); + m_playbackStartedSent = false; + m_playPending = true; + m_pauseImmediately = false; + promise->set_value(true); + + GstState startingState = GST_STATE_PLAYING; + + stateChange = gst_element_set_state(m_pipeline.pipeline, startingState); + ACSDK_DEBUG(LX("handlePlay") + .d("startingState", gst_element_state_get_name(startingState)) + .d("stateReturn", gst_element_state_change_return_get_name(stateChange))); + + switch (stateChange) { + case GST_STATE_CHANGE_FAILURE: { + const std::string errorMessage{"reason=gstElementSetStateFailure"}; + ACSDK_ERROR(LX("handlePlayFailed").m(errorMessage)); + sendPlaybackError(ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, errorMessage); } + return; + default: + if (m_urlConverter) { + if (m_urlConverter->getDesiredStreamingPoint() == std::chrono::milliseconds::zero()) { + return; + } + m_offsetManager.setSeekPoint( + m_urlConverter->getDesiredStreamingPoint() - m_urlConverter->getStartStreamingPoint()); + } + // Allow sending callbacks to be handled on the bus message + return; + } +} + +void MediaPlayer::handleStop(MediaPlayer::SourceId id, std::promise* promise) { + ACSDK_DEBUG(LX("handleStopCalled").d("idPassed", id).d("currentId", (m_currentId))); + if (!validateSourceAndId(id)) { + ACSDK_ERROR(LX("handleStopFailed")); + promise->set_value(false); return; } - auto stateChangeRet = gst_element_set_state(m_pipeline.pipeline, GST_STATE_PLAYING); - ACSDK_DEBUG(LX("handlePlay").d("stateReturn", gst_element_state_change_return_get_name(stateChangeRet))); + GstState curState; + GstState pending; + auto stateChangeRet = gst_element_get_state(m_pipeline.pipeline, &curState, &pending, TIMEOUT_ZERO_NANOSECONDS); if (GST_STATE_CHANGE_FAILURE == stateChangeRet) { - ACSDK_ERROR(LX("handlePlayFailed").d("reason", "gstElementSetStateFailure")); - promise->set_value(MediaPlayerStatus::FAILURE); - } else if (GST_STATE_CHANGE_ASYNC == stateChangeRet) { - promise->set_value(MediaPlayerStatus::PENDING); - } else { - promise->set_value(MediaPlayerStatus::SUCCESS); + ACSDK_ERROR(LX("handleStopFailed").d("reason", "gstElementGetStateFailure")); + promise->set_value(false); + return; } - return; -} -void MediaPlayer::handleStop(std::promise *promise) { - ACSDK_DEBUG(LX("handleStopCalled")); - promise->set_value(doStop()); -} - -MediaPlayerStatus MediaPlayer::doStop() { - GstState state; - GstState pending; + // Only stop if currently not stopped. + if (curState == GST_STATE_NULL) { + ACSDK_ERROR(LX("handleStopFailed").d("reason", "alreadyStopped")); + promise->set_value(false); + return; + } - auto stateChangeRet = gst_element_get_state(m_pipeline.pipeline, &state, &pending, TIMEOUT_ZERO_NANOSECONDS); - if (GST_STATE_CHANGE_FAILURE == stateChangeRet) { - ACSDK_ERROR(LX("doStopFailed").d("reason", "gstElementGetStateFailed")); - return MediaPlayerStatus::FAILURE; + if (pending == GST_STATE_NULL) { + ACSDK_ERROR(LX("handleStopFailed").d("reason", "alreadyStopping")); + promise->set_value(false); + return; } - if (GST_STATE_CHANGE_SUCCESS == stateChangeRet && GST_STATE_NULL == state) { - ACSDK_DEBUG(LX("doStopSuccess").d("reason", "alreadyStopped")); - } else if (GST_STATE_CHANGE_ASYNC == stateChangeRet && GST_STATE_NULL == pending) { - ACSDK_DEBUG(LX("doStopSuccess").d("reason", "alreadyStopping")); + stateChangeRet = gst_element_set_state(m_pipeline.pipeline, GST_STATE_NULL); + if (GST_STATE_CHANGE_FAILURE == stateChangeRet) { + ACSDK_ERROR(LX("handleStopFailed").d("reason", "gstElementSetStateFailure")); + promise->set_value(false); } else { - stateChangeRet = gst_element_set_state(m_pipeline.pipeline, GST_STATE_NULL); - if (GST_STATE_CHANGE_FAILURE == stateChangeRet) { - ACSDK_ERROR(LX("doStopFailed").d("reason", "gstElementSetStateFailed")); - m_source.reset(); - return MediaPlayerStatus::FAILURE; - } else if (GST_STATE_CHANGE_ASYNC == stateChangeRet) { - ACSDK_DEBUG9(LX("doStopPending")); - return MediaPlayerStatus::PENDING; - } else { - m_source.reset(); - sendPlaybackFinished(); + /* + * Based on GStreamer docs, a gst_element_set_state call to change the state to GST_STATE_NULL will never + * return GST_STATE_CHANGE_ASYNC. + */ + promise->set_value(true); + if (m_playPending) { + sendPlaybackStarted(); + } else if (m_resumePending) { + sendPlaybackResumed(); } + sendPlaybackStopped(); } - ACSDK_DEBUG9(LX("doStopSuccess")); - return MediaPlayerStatus::SUCCESS; } -void MediaPlayer::handlePause(std::promise *promise) { - ACSDK_DEBUG(LX("handlePauseCalled")); - if (!m_source) { - ACSDK_ERROR(LX("handlePauseFailed").d("reason", "sourceNotSet")); - promise->set_value(MediaPlayerStatus::FAILURE); +void MediaPlayer::handlePause(MediaPlayer::SourceId id, std::promise* promise) { + ACSDK_DEBUG(LX("handlePauseCalled").d("idPassed", id).d("currentId", (m_currentId))); + if (!validateSourceAndId(id)) { + ACSDK_ERROR(LX("handlePauseFailed")); + promise->set_value(false); return; } GstState curState; - // If previous set state return was GST_STATE_CHANGE_ASYNC, this will block infinitely - // until that state has been set. - auto stateChangeRet = gst_element_get_state(m_pipeline.pipeline, &curState, NULL, GST_CLOCK_TIME_NONE); + auto stateChangeRet = gst_element_get_state(m_pipeline.pipeline, &curState, NULL, TIMEOUT_ZERO_NANOSECONDS); if (GST_STATE_CHANGE_FAILURE == stateChangeRet) { ACSDK_ERROR(LX("handlePauseFailed").d("reason", "gstElementGetStateFailure")); - promise->set_value(MediaPlayerStatus::FAILURE); + promise->set_value(false); + return; + } + + /* + * If a play() or resume() call is pending, we want to try pausing immediately to avoid blips in audio. + */ + if (m_playPending || m_resumePending) { + ACSDK_DEBUG9(LX("handlePauseCalled").d("info", "playOrResumePending")); + if (m_pausePending) { + ACSDK_DEBUG(LX("handlePauseFailed").d("reason", "pauseCurrentlyPending")); + promise->set_value(false); + return; + } + stateChangeRet = gst_element_set_state(m_pipeline.pipeline, GST_STATE_PAUSED); + if (GST_STATE_CHANGE_FAILURE == stateChangeRet) { + ACSDK_ERROR(LX("handlePauseFailed").d("reason", "gstElementSetStateFailure")); + promise->set_value(false); + } else { + m_pauseImmediately = true; + ACSDK_DEBUG(LX("handlePause").d("pauseImmediately", "true")); + promise->set_value(true); + } return; } - // Error if attempting to pause in any other state. if (curState != GST_STATE_PLAYING) { ACSDK_ERROR(LX("handlePauseFailed").d("reason", "noAudioPlaying")); - promise->set_value(MediaPlayerStatus::FAILURE); + promise->set_value(false); + return; + } + if (m_pausePending) { + ACSDK_DEBUG(LX("handlePauseFailed").d("reason", "pauseCurrentlyPending")); + promise->set_value(false); return; } stateChangeRet = gst_element_set_state(m_pipeline.pipeline, GST_STATE_PAUSED); if (GST_STATE_CHANGE_FAILURE == stateChangeRet) { ACSDK_ERROR(LX("handlePauseFailed").d("reason", "gstElementSetStateFailure")); - promise->set_value(MediaPlayerStatus::FAILURE); - } else if (GST_STATE_CHANGE_ASYNC == stateChangeRet) { - promise->set_value(MediaPlayerStatus::PENDING); + promise->set_value(false); } else { - promise->set_value(MediaPlayerStatus::SUCCESS); + m_pausePending = true; + promise->set_value(true); } - return; } -void MediaPlayer::handleResume(std::promise *promise) { - ACSDK_DEBUG(LX("handleResumeCalled")); - if (!m_source) { - ACSDK_ERROR(LX("handleResumeFailed").d("reason", "sourceNotSet")); - promise->set_value(MediaPlayerStatus::FAILURE); +void MediaPlayer::handleResume(MediaPlayer::SourceId id, std::promise* promise) { + ACSDK_DEBUG(LX("handleResumeCalled").d("idPassed", id).d("currentId", (m_currentId))); + if (!validateSourceAndId(id)) { + ACSDK_ERROR(LX("handleResumeFailed")); + promise->set_value(false); return; } GstState curState; - // If previous set state return was GST_STATE_CHANGE_ASYNC, this will block infinitely - // until that state has been set. - auto stateChangeRet = gst_element_get_state(m_pipeline.pipeline, &curState, NULL, GST_CLOCK_TIME_NONE); + auto stateChangeRet = gst_element_get_state(m_pipeline.pipeline, &curState, NULL, TIMEOUT_ZERO_NANOSECONDS); if (GST_STATE_CHANGE_FAILURE == stateChangeRet) { ACSDK_ERROR(LX("handleResumeFailed").d("reason", "gstElementGetStateFailure")); - promise->set_value(MediaPlayerStatus::FAILURE); + promise->set_value(false); + return; + } + + if (GST_STATE_PLAYING == curState) { + ACSDK_ERROR(LX("handleResumeFailed").d("reason", "alreadyPlaying")); + promise->set_value(false); + return; } // Only unpause if currently paused. - if (curState != GST_STATE_PAUSED) { + if (GST_STATE_PAUSED != curState) { ACSDK_ERROR(LX("handleResumeFailed").d("reason", "notCurrentlyPaused")); - promise->set_value(MediaPlayerStatus::FAILURE); + promise->set_value(false); + return; + } + + if (m_resumePending) { + ACSDK_DEBUG(LX("handleResumeFailed").d("reason", "resumeCurrentlyPending")); + promise->set_value(false); return; } stateChangeRet = gst_element_set_state(m_pipeline.pipeline, GST_STATE_PLAYING); if (GST_STATE_CHANGE_FAILURE == stateChangeRet) { ACSDK_ERROR(LX("handleResumeFailed").d("reason", "gstElementSetStateFailure")); - promise->set_value(MediaPlayerStatus::FAILURE); - } else if (GST_STATE_CHANGE_ASYNC == stateChangeRet) { - promise->set_value(MediaPlayerStatus::PENDING); + promise->set_value(false); } else { - promise->set_value(MediaPlayerStatus::SUCCESS); + m_resumePending = true; + m_pauseImmediately = false; + promise->set_value(true); } - - return; } -void MediaPlayer::handleGetOffsetInMilliseconds(std::promise *promise) { - ACSDK_DEBUG(LX("handleGetOffsetInMillisecondsCalled")); +void MediaPlayer::handleGetOffset(SourceId id, std::promise* promise) { + ACSDK_DEBUG(LX("handleGetOffsetCalled").d("idPassed", id).d("currentId", (m_currentId))); gint64 position = -1; GstState state; // Check if pipeline is set. if (!m_pipeline.pipeline) { - ACSDK_INFO(LX("handleGetOffsetInMilliseconds").m("pipelineNotSet")); - promise->set_value(static_cast(-1)); + ACSDK_INFO(LX("handleGetOffsetStopped").m("pipelineNotSet")); + promise->set_value(MEDIA_PLAYER_INVALID_OFFSET); + return; + } + + if (!validateSourceAndId(id)) { + promise->set_value(m_offsetBeforeTeardown); return; } - auto stateChangeRet = gst_element_get_state( - m_pipeline.pipeline, - &state, - NULL, - TIMEOUT_ZERO_NANOSECONDS); + auto stateChangeRet = gst_element_get_state(m_pipeline.pipeline, &state, NULL, TIMEOUT_ZERO_NANOSECONDS); if (GST_STATE_CHANGE_FAILURE == stateChangeRet) { // Getting the state failed. - ACSDK_ERROR(LX("handleGetOffsetInMillisecondsFailed").d("reason", "getElementGetStateFailure")); + ACSDK_ERROR(LX("handleGetOffsetFailed").d("reason", "getElementGetStateFailure")); } else if (GST_STATE_CHANGE_SUCCESS != stateChangeRet) { // Getting the state was not successful (GST_STATE_CHANGE_ASYNC or GST_STATE_CHANGE_NO_PREROLL). - ACSDK_INFO(LX("handleGetOffsetInMilliseconds") - .d("reason", "getElementGetStateUnsuccessful") - .d("stateChangeReturn", gst_element_state_change_return_get_name(stateChangeRet))); + ACSDK_INFO(LX("handleGetOffset") + .d("reason", "getElementGetStateUnsuccessful") + .d("stateChangeReturn", gst_element_state_change_return_get_name(stateChangeRet))); } else if (GST_STATE_PAUSED != state && GST_STATE_PLAYING != state) { - // Invalid State. + // Invalid State. std::ostringstream expectedStates; - expectedStates << gst_element_state_get_name(GST_STATE_PAUSED) - << "/" + expectedStates << gst_element_state_get_name(GST_STATE_PAUSED) << "/" << gst_element_state_get_name(GST_STATE_PLAYING); - ACSDK_ERROR(LX("handleGetOffsetInMillisecondsFailed") - .d("reason", "invalidPipelineState") - .d("state", gst_element_state_get_name(state)) - .d("expectedStates", expectedStates.str())); + ACSDK_ERROR(LX("handleGetOffsetFailed") + .d("reason", "invalidPipelineState") + .d("state", gst_element_state_get_name(state)) + .d("expectedStates", expectedStates.str())); } else if (!gst_element_query_position(m_pipeline.pipeline, GST_FORMAT_TIME, &position)) { - /* - * Query Failed. Explicitly reset the position to -1 as gst_element_query_position() does not guarantee - * value of position in the event of a failure. - */ - position = -1; + // Query Failed. ACSDK_ERROR(LX("handleGetOffsetInMillisecondsFailed").d("reason", "gstElementQueryPositionError")); } else { // Query succeeded. - position /= NANOSECONDS_TO_MILLISECONDS; + std::chrono::milliseconds startStreamingPoint = std::chrono::milliseconds::zero(); + if (m_urlConverter) { + startStreamingPoint = m_urlConverter->getStartStreamingPoint(); + } + promise->set_value( + startStreamingPoint + + std::chrono::duration_cast(std::chrono::nanoseconds(position))); + return; } - promise->set_value(static_cast(position)); -} - -void MediaPlayer::handleSetOffset( - std::promise *promise, - std::chrono::milliseconds offset) { - ACSDK_DEBUG(LX("handleSetOffsetCalled")); - m_offsetManager.setSeekPoint(offset); - promise->set_value(MediaPlayerStatus::SUCCESS); + promise->set_value(MEDIA_PLAYER_INVALID_OFFSET); } void MediaPlayer::handleSetObserver( - std::promise* promise, - std::shared_ptr observer) { + std::promise* promise, + std::shared_ptr observer) { ACSDK_DEBUG(LX("handleSetObserverCalled")); m_playerObserver = observer; promise->set_value(); @@ -852,61 +1427,132 @@ void MediaPlayer::handleSetObserver( void MediaPlayer::sendPlaybackStarted() { if (!m_playbackStartedSent) { - ACSDK_DEBUG(LX("callingOnPlaybackStarted")); + ACSDK_DEBUG(LX("callingOnPlaybackStarted").d("currentId", m_currentId)); m_playbackStartedSent = true; + m_playPending = false; if (m_playerObserver) { - m_playerObserver->onPlaybackStarted(); + m_playerObserver->onPlaybackStarted(m_currentId); } } } void MediaPlayer::sendPlaybackFinished() { - m_source.reset(); + if (m_currentId == ERROR_SOURCE_ID) { + return; + } + cleanUpSource(); m_isPaused = false; m_playbackStartedSent = false; if (!m_playbackFinishedSent) { m_playbackFinishedSent = true; - ACSDK_DEBUG(LX("callingOnPlaybackFinished")); + ACSDK_DEBUG(LX("callingOnPlaybackFinished").d("currentId", m_currentId)); if (m_playerObserver) { - m_playerObserver->onPlaybackFinished(); + m_playerObserver->onPlaybackFinished(m_currentId); } } + m_currentId = ERROR_SOURCE_ID; + tearDownTransientPipelineElements(); + if (m_urlConverter) { + m_urlConverter->shutdown(); + } + m_urlConverter.reset(); } void MediaPlayer::sendPlaybackPaused() { - ACSDK_DEBUG(LX("callingOnPlaybackPaused")); + ACSDK_DEBUG(LX("callingOnPlaybackPaused").d("currentId", m_currentId)); + m_pausePending = false; + m_isPaused = true; if (m_playerObserver) { - m_playerObserver->onPlaybackPaused(); + m_playerObserver->onPlaybackPaused(m_currentId); } } void MediaPlayer::sendPlaybackResumed() { - ACSDK_DEBUG(LX("callingOnPlaybackResumed")); + ACSDK_DEBUG(LX("callingOnPlaybackResumed").d("currentId", m_currentId)); + m_resumePending = false; + m_isPaused = false; if (m_playerObserver) { - m_playerObserver->onPlaybackResumed(); + m_playerObserver->onPlaybackResumed(m_currentId); + } +} + +void MediaPlayer::sendPlaybackStopped() { + if (m_currentId == ERROR_SOURCE_ID) { + return; } + ACSDK_DEBUG(LX("callingOnPlaybackStopped").d("currentId", m_currentId)); + if (m_playerObserver && ERROR_SOURCE_ID != m_currentId) { + m_playerObserver->onPlaybackStopped(m_currentId); + } + m_currentId = ERROR_SOURCE_ID; + tearDownTransientPipelineElements(); + if (m_urlConverter) { + m_urlConverter->shutdown(); + } + m_urlConverter.reset(); } -void MediaPlayer::sendPlaybackError(const std::string& error) { - ACSDK_DEBUG(LX("callingOnPlaybackError").d("error", error)); +void MediaPlayer::sendPlaybackError(const ErrorType& type, const std::string& error) { + if (m_currentId == ERROR_SOURCE_ID) { + return; + } + ACSDK_DEBUG(LX("callingOnPlaybackError").d("type", type).d("error", error).d("currentId", m_currentId)); + m_playPending = false; + m_pausePending = false; + m_resumePending = false; + m_pauseImmediately = false; if (m_playerObserver) { - m_playerObserver->onPlaybackError(error); + m_playerObserver->onPlaybackError(m_currentId, type, error); + } + m_currentId = ERROR_SOURCE_ID; + tearDownTransientPipelineElements(); + if (m_urlConverter) { + m_urlConverter->shutdown(); } + m_urlConverter.reset(); } void MediaPlayer::sendBufferUnderrun() { - ACSDK_DEBUG(LX("callingOnBufferUnderrun")); + ACSDK_DEBUG(LX("callingOnBufferUnderrun").d("currentId", m_currentId)); if (m_playerObserver) { - m_playerObserver->onBufferUnderrun(); + m_playerObserver->onBufferUnderrun(m_currentId); } } void MediaPlayer::sendBufferRefilled() { - ACSDK_DEBUG(LX("callingOnBufferRefilled")); + ACSDK_DEBUG(LX("callingOnBufferRefilled").d("currentId", m_currentId)); if (m_playerObserver) { - m_playerObserver->onBufferRefilled(); + m_playerObserver->onBufferRefilled(m_currentId); } } -} // namespace mediaPlayer -} // namespace alexaClientSDK +bool MediaPlayer::validateSourceAndId(SourceId id) { + if (!m_source) { + ACSDK_ERROR(LX("validateSourceAndIdFailed").d("reason", "sourceNotSet")); + return false; + } + if (id != m_currentId) { + ACSDK_ERROR(LX("validateSourceAndIdFailed").d("reason", "sourceIdMismatch")); + return false; + } + return true; +} + +gboolean MediaPlayer::onErrorCallback(gpointer pointer) { + ACSDK_DEBUG9(LX("onErrorCallback")); + auto mediaPlayer = static_cast(pointer); + mediaPlayer->sendPlaybackError(ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, "streamingError"); + return false; +} + +void MediaPlayer::cleanUpSource() { + if (m_pipeline.pipeline) { + gst_element_set_state(m_pipeline.pipeline, GST_STATE_NULL); + } + if (m_source) { + m_source->shutdown(); + } + m_source.reset(); +} +} // namespace mediaPlayer +} // namespace alexaClientSDK diff --git a/MediaPlayer/src/Normalizer.cpp b/MediaPlayer/src/Normalizer.cpp new file mode 100644 index 0000000000..1097849f6e --- /dev/null +++ b/MediaPlayer/src/Normalizer.cpp @@ -0,0 +1,89 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +#include "MediaPlayer/Normalizer.h" + +namespace alexaClientSDK { +namespace mediaPlayer { + +/// String to identify log entries originating from this file. +static const std::string TAG("Normalizer"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +std::unique_ptr Normalizer::create( + const double& sourceMin, + const double& sourceMax, + const double& normalizedMin, + const double& normalizedMax) { + if (sourceMin >= sourceMax) { + ACSDK_ERROR(LX("createFailed") + .d("reason", "sourceMinGreaterEqThanMax") + .d("sourceMin", sourceMin) + .d("sourceMax", sourceMax)); + return nullptr; + } else if (normalizedMin > normalizedMax) { + ACSDK_ERROR(LX("createFailed") + .d("reason", "normalizedMinGreaterThanMax") + .d("normalizedMin", normalizedMin) + .d("normalizedMax", normalizedMax)); + return nullptr; + } + + return std::unique_ptr(new Normalizer(sourceMin, sourceMax, normalizedMin, normalizedMax)); +} + +Normalizer::Normalizer( + const double& sourceMin, + const double& sourceMax, + const double& normalizedMin, + const double& normalizedMax) : + m_sourceMin{sourceMin}, + m_sourceMax{sourceMax}, + m_normalizedMin{normalizedMin}, + m_normalizedMax{normalizedMax} { + m_scaleFactor = (m_normalizedMax - m_normalizedMin) / (m_sourceMax - m_sourceMin); +} + +bool Normalizer::normalize(const double& unnormalizedInput, double* normalizedOutput) { + if (!normalizedOutput) { + ACSDK_ERROR(LX("normalizeFailed").d("reason", "nullNormalizedOutput")); + return false; + } + + if (unnormalizedInput < m_sourceMin || unnormalizedInput > m_sourceMax) { + ACSDK_ERROR(LX("normalizeFailed") + .d("reason", "outOfBounds") + .d("input", unnormalizedInput) + .d("sourceMin", m_sourceMin) + .d("sourceMax", m_sourceMax)); + return false; + } + + *normalizedOutput = (unnormalizedInput - m_sourceMin) * m_scaleFactor + m_normalizedMin; + + return true; +} + +} // namespace mediaPlayer +} // namespace alexaClientSDK diff --git a/MediaPlayer/src/OffsetManager.cpp b/MediaPlayer/src/OffsetManager.cpp index a87dfed1ce..5bad358318 100644 --- a/MediaPlayer/src/OffsetManager.cpp +++ b/MediaPlayer/src/OffsetManager.cpp @@ -1,7 +1,5 @@ /* - * OffsetManager.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -65,5 +63,5 @@ void OffsetManager::clear() { m_isSeekPointSet = false; } -} // namespace mediaPlayer -} // namespace alexaClientSDK +} // namespace mediaPlayer +} // namespace alexaClientSDK diff --git a/MediaPlayer/src/UrlSource.cpp b/MediaPlayer/src/UrlSource.cpp deleted file mode 100644 index 95ab1aa0e0..0000000000 --- a/MediaPlayer/src/UrlSource.cpp +++ /dev/null @@ -1,154 +0,0 @@ -/* - * UrlSource.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0/ - * - * or in the "license" file accompanying this file. This file 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 - -#include - -#include "MediaPlayer/UrlSource.h" - -namespace alexaClientSDK { -namespace mediaPlayer { - -using namespace avsCommon::utils; -using namespace avsCommon::utils::mediaPlayer; -using namespace avsCommon::avs::attachment; -using namespace avsCommon::utils::playlistParser; - -/// String to identify log entries originating from this file. -static const std::string TAG("UrlSource"); - -/** - * Create a LogEntry using this file's TAG and the specified event string. - * - * @param The event string for this @c LogEntry. - */ -#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) - -std::shared_ptr UrlSource::create( - PipelineInterface* pipeline, - std::shared_ptr playlistParser, - const std::string& url) { - if (!pipeline) { - ACSDK_ERROR(LX("createFailed").d("reason", "nullPipeline")); - return nullptr; - } - if (!playlistParser) { - ACSDK_ERROR(LX("createFailed").d("reason", "nullPlaylistParser")); - return nullptr; - } - - std::shared_ptr result(new UrlSource(pipeline, playlistParser, url)); - if (result->init()) { - return result; - } - return nullptr; -} - -UrlSource::UrlSource( - PipelineInterface* pipeline, - std::shared_ptr playlistParser, - const std::string& url) : - m_url{url}, - m_playlistParser{playlistParser}, - m_pipeline{pipeline} { -} - -bool UrlSource::init() { - ACSDK_DEBUG(LX("initCalledForUrlSource")); - - if (!m_playlistParser->parsePlaylist(m_url, shared_from_this())) { - ACSDK_ERROR(LX("initFailed").d("reason", "startingParsePlaylistFailed")); - return false; - } - - auto decoder = gst_element_factory_make("uridecodebin", "decoder"); - if (!decoder) { - ACSDK_ERROR(LX("initFailed").d("reason", "createDecoderElementFailed")); - return false; - } - - if (!gst_bin_add(GST_BIN(m_pipeline->getPipeline()), decoder)) { - ACSDK_ERROR(LX("initFailed").d("reason", "addingDecoderToPipelineFailed")); - gst_object_unref(decoder); - return false; - } - - m_pipeline->setAppSrc(nullptr); - m_pipeline->setDecoder(decoder); - - return true; -} - -bool UrlSource::hasAdditionalData() { - return !m_url.empty(); -} - -bool UrlSource::handleEndOfStream() { - m_url.clear(); - // TODO [ACSDK-419] Solidify contract that the parsed Urls will not be empty. - while (!m_audioUrlQueue.empty()) { - std::string url = m_audioUrlQueue.front(); - m_audioUrlQueue.pop(); - if (url.empty()) { - ACSDK_INFO(LX("handleEndOfStream").d("info", "emptyUrlFound")); - continue; - } - m_url = url; - } - - if (!m_url.empty()) { - g_object_set(m_pipeline->getDecoder(), "uri", m_url.c_str(), NULL); - } - return true; -} - -void UrlSource::preprocess() { - m_audioUrlQueue = m_playlistParsedPromise.get_future().get(); - /* - * TODO: Reset the playlistParser in a better place once the thread model of MediaPlayer - * is simplified [ACSDK-422]. - * - * This must be called from a thread not in the UrlSource/PlaylistParser loop - * to prevent a thread from joining itself. - */ - m_playlistParser.reset(); - - if (m_audioUrlQueue.empty()) { - ACSDK_ERROR(LX("preprocess").d("reason", "noValidUrls")); - return; - } - m_url = m_audioUrlQueue.front(); - m_audioUrlQueue.pop(); - - g_object_set(m_pipeline->getDecoder(), - "uri", m_url.c_str(), - "use-buffering", true, - NULL); -} - -void UrlSource::onPlaylistParsed(std::string initialUrl, std::queue urls, PlaylistParseResult parseResult) { - ACSDK_DEBUG(LX("onPlaylistParsed").d("parseResult", parseResult).d("numUrlsParsed", urls.size())); - // The parse was unrecognized by the parser, could be a single song. Attempt to play. - if (urls.size() == 0) { - urls.push(initialUrl); - } - m_playlistParsedPromise.set_value(urls); -}; - -} // namespace mediaPlayer -} // namespace alexaClientSDK diff --git a/MediaPlayer/test/ErrorTypeConversionTest.cpp b/MediaPlayer/test/ErrorTypeConversionTest.cpp new file mode 100644 index 0000000000..e434578ebc --- /dev/null +++ b/MediaPlayer/test/ErrorTypeConversionTest.cpp @@ -0,0 +1,222 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 + +#include +#include + +#include "MediaPlayer/ErrorTypeConversion.h" + +namespace alexaClientSDK { +namespace mediaPlayer { +namespace test { + +using namespace avsCommon::utils::mediaPlayer; + +/** + * Test to verify that the ErrorTypes convert to the error strings properly. + */ +TEST(ErrorTypeConversionTest, ErrorTypeToString) { + const std::map m = { + {ErrorType::MEDIA_ERROR_UNKNOWN, "MEDIA_ERROR_UNKNOWN"}, + {ErrorType::MEDIA_ERROR_INVALID_REQUEST, "MEDIA_ERROR_INVALID_REQUEST"}, + {ErrorType::MEDIA_ERROR_SERVICE_UNAVAILABLE, "MEDIA_ERROR_SERVICE_UNAVAILABLE"}, + {ErrorType::MEDIA_ERROR_INTERNAL_SERVER_ERROR, "MEDIA_ERROR_INTERNAL_SERVER_ERROR"}, + {ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR, "MEDIA_ERROR_INTERNAL_DEVICE_ERROR"}}; + + for (const auto& i : m) { + ASSERT_EQ(i.second, errorTypeToString(i.first)); + } +} + +/** + * Test to verify that the correct GErrors convert to the proper ErrorType. + */ +TEST(ErrorTypeConversionTest, GstCoreErrorToErrorType) { + const std::map, ErrorType> goldStandardMapping = { + {{GST_CORE_ERROR_FAILED, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_FAILED, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_TOO_LAZY, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_TOO_LAZY, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_NOT_IMPLEMENTED, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_NOT_IMPLEMENTED, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_STATE_CHANGE, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_STATE_CHANGE, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_PAD, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_PAD, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_THREAD, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_THREAD, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_NEGOTIATION, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_NEGOTIATION, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_EVENT, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_EVENT, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_SEEK, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_SEEK, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_CAPS, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_CAPS, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_TAG, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_TAG, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_MISSING_PLUGIN, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_MISSING_PLUGIN, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_CLOCK, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_CLOCK, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_DISABLED, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_CORE_ERROR_DISABLED, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}}; + + for (gint gstCoreErrorNumber = GST_CORE_ERROR_FAILED; gstCoreErrorNumber < GST_CORE_ERROR_NUM_ERRORS; + ++gstCoreErrorNumber) { + for (bool remoteResource : {false, true}) { + const auto check_in_map = goldStandardMapping.find(std::make_pair(gstCoreErrorNumber, remoteResource)); + + ASSERT_NE(goldStandardMapping.end(), check_in_map); + const GError gerror{GST_CORE_ERROR, static_cast(gstCoreErrorNumber)}; + ASSERT_EQ(check_in_map->second, gerrorToErrorType(&gerror, remoteResource)); + } + } +} + +/** + * Test to verify that the correct Library GErrors convert to the proper ErrorType. + */ +TEST(ErrorTypeConversionTest, GstLibraryErrorToErrorType) { + const std::map, ErrorType> goldStandardMapping = { + {{GST_LIBRARY_ERROR_FAILED, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_LIBRARY_ERROR_FAILED, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_LIBRARY_ERROR_TOO_LAZY, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_LIBRARY_ERROR_TOO_LAZY, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_LIBRARY_ERROR_INIT, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_LIBRARY_ERROR_INIT, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_LIBRARY_ERROR_SHUTDOWN, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_LIBRARY_ERROR_SHUTDOWN, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_LIBRARY_ERROR_SETTINGS, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_LIBRARY_ERROR_SETTINGS, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_LIBRARY_ERROR_ENCODE, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_LIBRARY_ERROR_ENCODE, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_LIBRARY_ERROR_NUM_ERRORS, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_LIBRARY_ERROR_NUM_ERRORS, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}}; + + for (gint gstLibraryErrorNumber = GST_LIBRARY_ERROR_FAILED; gstLibraryErrorNumber < GST_LIBRARY_ERROR_NUM_ERRORS; + ++gstLibraryErrorNumber) { + for (bool remoteResource : {false, true}) { + const auto check_in_map = goldStandardMapping.find(std::make_pair(gstLibraryErrorNumber, remoteResource)); + + ASSERT_NE(goldStandardMapping.end(), check_in_map); + const GError gerror{GST_LIBRARY_ERROR, static_cast(gstLibraryErrorNumber)}; + ASSERT_EQ(check_in_map->second, gerrorToErrorType(&gerror, remoteResource)); + } + } +} + +/** + * Test to verify that the correct Resource GErrors convert to the proper ErrorType. + */ +TEST(ErrorTypeConversionTest, GstResourceErrorToErrorType) { + const std::map, ErrorType> goldStandardMapping = { + {{GST_RESOURCE_ERROR_FAILED, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_FAILED, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_TOO_LAZY, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_TOO_LAZY, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_NOT_FOUND, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_NOT_FOUND, true}, ErrorType::MEDIA_ERROR_INVALID_REQUEST}, + {{GST_RESOURCE_ERROR_BUSY, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_BUSY, true}, ErrorType::MEDIA_ERROR_SERVICE_UNAVAILABLE}, + {{GST_RESOURCE_ERROR_OPEN_READ, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_OPEN_READ, true}, ErrorType::MEDIA_ERROR_INVALID_REQUEST}, + {{GST_RESOURCE_ERROR_OPEN_WRITE, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_OPEN_WRITE, true}, ErrorType::MEDIA_ERROR_INVALID_REQUEST}, + {{GST_RESOURCE_ERROR_OPEN_READ_WRITE, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_OPEN_READ_WRITE, true}, ErrorType::MEDIA_ERROR_INVALID_REQUEST}, + {{GST_RESOURCE_ERROR_CLOSE, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_CLOSE, true}, ErrorType::MEDIA_ERROR_INVALID_REQUEST}, + {{GST_RESOURCE_ERROR_READ, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_READ, true}, ErrorType::MEDIA_ERROR_INVALID_REQUEST}, + {{GST_RESOURCE_ERROR_WRITE, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_WRITE, true}, ErrorType::MEDIA_ERROR_INVALID_REQUEST}, + {{GST_RESOURCE_ERROR_SEEK, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_SEEK, true}, ErrorType::MEDIA_ERROR_INVALID_REQUEST}, + {{GST_RESOURCE_ERROR_SYNC, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_SYNC, true}, ErrorType::MEDIA_ERROR_INVALID_REQUEST}, + {{GST_RESOURCE_ERROR_SETTINGS, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_SETTINGS, true}, ErrorType::MEDIA_ERROR_INVALID_REQUEST}, + {{GST_RESOURCE_ERROR_NO_SPACE_LEFT, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_NO_SPACE_LEFT, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_NOT_AUTHORIZED, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_NOT_AUTHORIZED, true}, ErrorType::MEDIA_ERROR_INVALID_REQUEST}, + {{GST_RESOURCE_ERROR_NUM_ERRORS, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_RESOURCE_ERROR_NUM_ERRORS, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}}; + + for (gint gstResourceErrorNumber = GST_RESOURCE_ERROR_FAILED; + gstResourceErrorNumber < GST_RESOURCE_ERROR_NUM_ERRORS; + ++gstResourceErrorNumber) { + for (bool remoteResource : {false, true}) { + const auto check_in_map = goldStandardMapping.find(std::make_pair(gstResourceErrorNumber, remoteResource)); + + ASSERT_NE(goldStandardMapping.end(), check_in_map); + const GError gerror{GST_RESOURCE_ERROR, static_cast(gstResourceErrorNumber)}; + ASSERT_EQ(check_in_map->second, gerrorToErrorType(&gerror, remoteResource)); + } + } +} + +/** + * Test to verify that the correct Stream GErrors convert to the proper ErrorType. + */ +TEST(ErrorTypeConversionTest, GstStreamErrorToErrorType) { + const std::map, ErrorType> goldStandardMapping = { + {{GST_STREAM_ERROR_FAILED, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_FAILED, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_TOO_LAZY, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_TOO_LAZY, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_NOT_IMPLEMENTED, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_NOT_IMPLEMENTED, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_TYPE_NOT_FOUND, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_TYPE_NOT_FOUND, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_WRONG_TYPE, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_WRONG_TYPE, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_CODEC_NOT_FOUND, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_CODEC_NOT_FOUND, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_DECODE, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_DECODE, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_ENCODE, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_ENCODE, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_DEMUX, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_DEMUX, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_MUX, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_MUX, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_FORMAT, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_FORMAT, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_DECRYPT, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_DECRYPT, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_DECRYPT_NOKEY, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_DECRYPT_NOKEY, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_NUM_ERRORS, false}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}, + {{GST_STREAM_ERROR_NUM_ERRORS, true}, ErrorType::MEDIA_ERROR_INTERNAL_DEVICE_ERROR}}; + + for (gint gstStreamErrorNumber = GST_STREAM_ERROR_FAILED; gstStreamErrorNumber < GST_STREAM_ERROR_NUM_ERRORS; + ++gstStreamErrorNumber) { + for (bool remoteResource : {false, true}) { + const auto check_in_map = goldStandardMapping.find(std::make_pair(gstStreamErrorNumber, remoteResource)); + + ASSERT_NE(goldStandardMapping.end(), check_in_map); + const GError gerror{GST_STREAM_ERROR, static_cast(gstStreamErrorNumber)}; + ASSERT_EQ(check_in_map->second, gerrorToErrorType(&gerror, remoteResource)); + } + } +} + +} // namespace test +} // namespace mediaPlayer +} // namespace alexaClientSDK diff --git a/MediaPlayer/test/MediaPlayerTest.cpp b/MediaPlayer/test/MediaPlayerTest.cpp index e205e0611d..fbdf0f1659 100644 --- a/MediaPlayer/test/MediaPlayerTest.cpp +++ b/MediaPlayer/test/MediaPlayerTest.cpp @@ -1,7 +1,5 @@ /* - * MediaPlayerTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -22,27 +20,35 @@ #include #include #include +#include #include #include +#include #include #include +#include #include "MediaPlayer/MediaPlayer.h" +#include "AVSCommon/Utils/MediaPlayer/MediaPlayerObserverInterface.h" namespace alexaClientSDK { namespace mediaPlayer { namespace test { -using namespace avsCommon::utils::mediaPlayer; using namespace avsCommon::avs::attachment; +using namespace avsCommon::avs::speakerConstants; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::utils::mediaPlayer; using namespace avsCommon::utils::memory; using namespace ::testing; /// String to identify log entries originating from this file. static const std::string TAG("MediaPlayerTest"); +static const MediaPlayer::SourceId ERROR_SOURCE_ID = MediaPlayer::ERROR; + /** * Create a LogEntry using this file's TAG and the specified event string. * @@ -56,8 +62,9 @@ std::string inputsDirPath; /// MP3 test file path. static const std::string MP3_FILE_PATH("/fox_dog.mp3"); -/// Playlist file path. -static const std::string M3U_FILE_PATH("/fox_dog_playlist.m3u"); +static const std::string TEST_M3U_PLAYLIST_URL("fox_dog_playlist.m3u"); + +static std::string TEST_M3U_PLAYLIST_CONTENT; /// file URI Prefix static const std::string FILE_PREFIX("file://"); @@ -70,12 +77,92 @@ static const std::chrono::milliseconds MP3_FILE_LENGTH(2688); /// Offset to start playback at. static const std::chrono::milliseconds OFFSET(2000); +#ifdef RESOLVED_ACSDK_627 + /// Tolerance when setting expectations. static const std::chrono::milliseconds TOLERANCE(200); +#endif + /// Padding to add to offsets when necessary. static const std::chrono::milliseconds PADDING(10); +static std::unordered_map urlsToContentTypes; + +static std::unordered_map urlsToContent; + +/// A mock content fetcher +class MockContentFetcher : public avsCommon::sdkInterfaces::HTTPContentFetcherInterface { +public: + MockContentFetcher(const std::string& url) : m_url{url} { + } + + std::unique_ptr getContent( + FetchOptions fetchOption, + std::shared_ptr writer) override { + if (fetchOption == FetchOptions::CONTENT_TYPE) { + auto urlAndContentType = urlsToContentTypes.find(m_url); + if (urlAndContentType == urlsToContentTypes.end()) { + return nullptr; + } else { + std::promise statusPromise; + auto statusFuture = statusPromise.get_future(); + statusPromise.set_value(200); + std::promise contentTypePromise; + auto contentTypeFuture = contentTypePromise.get_future(); + contentTypePromise.set_value(urlAndContentType->second); + return avsCommon::utils::memory::make_unique( + avsCommon::utils::HTTPContent{std::move(statusFuture), std::move(contentTypeFuture), nullptr}); + } + } else { + auto urlAndContent = urlsToContent.find(m_url); + if (urlAndContent == urlsToContent.end()) { + return nullptr; + } + std::promise statusPromise; + auto statusFuture = statusPromise.get_future(); + statusPromise.set_value(200); + std::promise contentTypePromise; + auto contentTypeFuture = contentTypePromise.get_future(); + contentTypePromise.set_value(""); + auto attachment = writeStringIntoAttachment(urlAndContent->second, writer); + if (!attachment) { + return nullptr; + } + return avsCommon::utils::memory::make_unique( + avsCommon::utils::HTTPContent{std::move(statusFuture), std::move(contentTypeFuture), attachment}); + } + } + +private: + std::shared_ptr writeStringIntoAttachment( + const std::string& string, + std::shared_ptr writer) { + static int id = 0; + std::shared_ptr stream = + std::make_shared(std::to_string(id++)); + if (!stream) { + return nullptr; + } + + if (!writer) { + writer = stream->createWriter(); + } + avsCommon::avs::attachment::AttachmentWriter::WriteStatus writeStatus; + writer->write(string.data(), string.size(), &writeStatus); + return stream; + }; + + std::string m_url; +}; + +/// A mock factory that creates mock content fetchers +class MockContentFetcherFactory : public avsCommon::sdkInterfaces::HTTPContentFetcherInterfaceFactoryInterface { + std::unique_ptr create(const std::string& url) { + return avsCommon::utils::memory::make_unique(url); + } +}; + /** * Mock AttachmentReader. */ @@ -92,11 +179,18 @@ class MockAttachmentReader : public AttachmentReader { */ MockAttachmentReader(int iterations = 1, std::vector receiveSizes = {std::numeric_limits::max()}); - size_t read( - void* buf, std::size_t numBytes, ReadStatus* readStatus, std::chrono::milliseconds timeoutMs) override; + size_t read(void* buf, std::size_t numBytes, ReadStatus* readStatus, std::chrono::milliseconds timeoutMs) override; void close(ClosePoint closePoint) override; + bool seek(uint64_t offset) override { + return true; + } + + uint64_t getNumUnreadBytes() override { + return 0; + } + /** * Receive bytes from the test file. * @@ -141,8 +235,10 @@ MockAttachmentReader::MockAttachmentReader(int iterations, std::vector r } size_t MockAttachmentReader::read( - void* buf, std::size_t numBytes, ReadStatus* readStatus, std::chrono::milliseconds timeoutMs) { - + void* buf, + std::size_t numBytes, + ReadStatus* readStatus, + std::chrono::milliseconds timeoutMs) { // Convert the current time in to an index in to m_receivedTotals (time since @c m_startTime // divided by 100 millisecond intervals). auto now = std::chrono::steady_clock::now(); @@ -162,7 +258,7 @@ size_t MockAttachmentReader::read( auto status = ReadStatus::ERROR_INTERNAL; if (available > 0) { auto sizeToRead = std::min(available, numBytes); - result = receiveBytes(static_cast(buf), sizeToRead); + result = receiveBytes(static_cast(buf), sizeToRead); if (result > 0) { m_totalRead += result; status = (result == numBytes) ? ReadStatus::OK : ReadStatus::OK_WOULDBLOCK; @@ -204,58 +300,105 @@ size_t MockAttachmentReader::receiveBytes(char* buf, std::size_t size) { return result; } -class MockPlayerObserver: public MediaPlayerObserverInterface { +class MockPlayerObserver : public MediaPlayerObserverInterface { public: /** * Destructor. */ - ~MockPlayerObserver() {}; + ~MockPlayerObserver(){}; + + // void onPlaybackStarted() override; + void onPlaybackStarted(SourceId id) override; - void onPlaybackStarted() override; + void onPlaybackFinished(SourceId id) override; - void onPlaybackFinished() override; + void onPlaybackError(SourceId id, const ErrorType& type, std::string error) override; - void onPlaybackError(std::string error) override; + void onPlaybackPaused(SourceId id) override; - void onPlaybackPaused() override; + void onPlaybackResumed(SourceId id) override; - void onPlaybackResumed() override; + void onPlaybackStopped(SourceId id) override; + + void onTags(SourceId id, std::unique_ptr vectorOfTags) override; /** * Wait for a message to be received. * * This function waits for a specified number of milliseconds for a message to arrive. + * @param id The @c SourceId expected in a callback. * @param duration Number of milliseconds to wait before giving up. * @return true if a message was received within the specified duration, else false. */ - bool waitForPlaybackStarted(const std::chrono::milliseconds duration = std::chrono::milliseconds(5000)); + bool waitForPlaybackStarted( + SourceId id, + const std::chrono::milliseconds duration = std::chrono::milliseconds(5000)); /** * Wait for a message to be received. * * This function waits for a specified number of milliseconds for a message to arrive. + * @param id The @c SourceId expected in a callback. * @param duration Number of milliseconds to wait before giving up. * @return true if a message was received within the specified duration, else false. */ - bool waitForPlaybackFinished(const std::chrono::milliseconds duration = std::chrono::milliseconds(5000)); + bool waitForPlaybackFinished( + SourceId id, + const std::chrono::milliseconds duration = std::chrono::milliseconds(5000)); /** * Wait for a message to be received. * * This function waits for a specified number of milliseconds for a message to arrive. + * @param id The @c SourceId expected in a callback. * @param duration Number of milliseconds to wait before giving up. * @return true if a message was received within the specified duration, else false. */ - bool waitForPlaybackPaused(const std::chrono::milliseconds duration = std::chrono::milliseconds(5000)); + bool waitForPlaybackPaused(SourceId id, const std::chrono::milliseconds duration = std::chrono::milliseconds(5000)); /** * Wait for a message to be received. * * This function waits for a specified number of milliseconds for a message to arrive. + * @param id The @c SourceId expected in a callback. * @param duration Number of milliseconds to wait before giving up. * @return true if a message was received within the specified duration, else false. */ - bool waitForPlaybackResumed(const std::chrono::milliseconds duration = std::chrono::milliseconds(5000)); + bool waitForPlaybackResumed( + SourceId id, + const std::chrono::milliseconds duration = std::chrono::milliseconds(5000)); + + /** + * Wait for a message to be received. + * + * This function waits for a specified number of milliseconds for a message to arrive. + * @param id The @c SourceId expected in a callback. + * @param duration Number of milliseconds to wait before giving up. + * @return true if a message was received within the specified duration, else false. + */ + bool waitForPlaybackStopped( + SourceId id, + const std::chrono::milliseconds duration = std::chrono::milliseconds(5000)); + + /** + * Wait for a playback error message to be received. + * + * This function waits for a specified number of milliseconds for a message to arrive. + * @param id The @c SourceId expected in a callback. + * @param duration Number of milliseconds to wait before giving up. + * @return true if a message was received within the specified duration, else false. + */ + bool waitForPlaybackError(SourceId id, const std::chrono::milliseconds duration = std::chrono::milliseconds(5000)); + + /** + * Wait for a message to be received. + * This function waits for a specified number of milliseconds for a message to arrive. + * + * @param id The @c SourceId expected in a callback. + * @param duration Number of milliseconds to wait before giving up. + * @return true if a message was received within the specified duration, else false. + */ + bool waitForTags(SourceId id, const std::chrono::milliseconds duration = std::chrono::milliseconds(5000)); /** * TODO: Make this class a mock and remove this. @@ -271,6 +414,13 @@ class MockPlayerObserver: public MediaPlayerObserverInterface { */ int getOnPlaybackFinishedCallCount(); + /** + * TODO: Make this class a mock and remove this. + * + * This gets the number of times onTags was called. + */ + int getOnTagsCallCount(); + private: /// Mutex to protect the flags @c m_playbackStarted and .@c m_playbackFinished. std::mutex m_mutex; @@ -282,10 +432,15 @@ class MockPlayerObserver: public MediaPlayerObserverInterface { std::condition_variable m_wakePlaybackPaused; /// Trigger to wake up m_wakePlaybackResumed calls. std::condition_variable m_wakePlaybackResumed; + std::condition_variable m_wakePlaybackStopped; + std::condition_variable m_wakePlaybackError; + /// Trigger to wake up m_wakeTags calls. + std::condition_variable m_wakeTags; // TODO: Make this class a mock and remove these. int m_onPlaybackStartedCallCount = 0; int m_onPlaybackFinishedCallCount = 0; + int m_onTagsCallCount = 0; /// Flag to set when a playback start message is received. bool m_playbackStarted; @@ -295,72 +450,108 @@ class MockPlayerObserver: public MediaPlayerObserverInterface { bool m_playbackPaused; /// Flag to set when a playback paused message is received. bool m_playbackResumed; + /// Flag to set when a playback stopped message is received. + bool m_playbackStopped; + /// Flag to set when a playback error message is received. + bool m_playbackError; + /// Flag to set when a tags message is received. + bool m_tags; + + SourceId m_lastId = 0; }; -void MockPlayerObserver::onPlaybackStarted() { +void MockPlayerObserver::onPlaybackStarted(SourceId id) { std::lock_guard lock(m_mutex); + m_lastId = id; m_playbackStarted = true; m_playbackFinished = false; + m_playbackStopped = false; m_wakePlaybackStarted.notify_all(); m_onPlaybackStartedCallCount++; } -void MockPlayerObserver::onPlaybackFinished() { +void MockPlayerObserver::onPlaybackFinished(SourceId id) { std::lock_guard lock(m_mutex); + m_lastId = id; m_playbackFinished = true; m_playbackStarted = false; m_wakePlaybackFinished.notify_all(); m_onPlaybackFinishedCallCount++; } -void MockPlayerObserver::onPlaybackError(std::string error) { - ACSDK_ERROR(LX("onPlaybackError").d("error", error)); +void MockPlayerObserver::onPlaybackError(SourceId id, const ErrorType& type, std::string error) { + m_lastId = id; + m_playbackError = true; + m_wakePlaybackError.notify_all(); }; -void MockPlayerObserver::onPlaybackPaused() { +void MockPlayerObserver::onPlaybackPaused(SourceId id) { std::lock_guard lock(m_mutex); + m_lastId = id; m_playbackPaused = true; m_wakePlaybackPaused.notify_all(); }; -void MockPlayerObserver::onPlaybackResumed() { +void MockPlayerObserver::onPlaybackResumed(SourceId id) { std::lock_guard lock(m_mutex); + m_lastId = id; m_playbackResumed = true; m_playbackPaused = false; m_wakePlaybackResumed.notify_all(); }; -bool MockPlayerObserver::waitForPlaybackStarted(const std::chrono::milliseconds duration) { +void MockPlayerObserver::onPlaybackStopped(SourceId id) { + std::lock_guard lock(m_mutex); + m_lastId = id; + m_playbackStopped = true; + m_playbackStarted = false; + m_wakePlaybackStopped.notify_all(); +}; + +bool MockPlayerObserver::waitForPlaybackStarted(SourceId id, const std::chrono::milliseconds duration) { + std::unique_lock lock(m_mutex); + if (!m_wakePlaybackStarted.wait_for(lock, duration, [this, id]() { return m_playbackStarted && id == m_lastId; })) { + return false; + } + return true; +} + +bool MockPlayerObserver::waitForPlaybackFinished(SourceId id, const std::chrono::milliseconds duration) { + std::unique_lock lock(m_mutex); + if (!m_wakePlaybackFinished.wait_for( + lock, duration, [this, id]() { return m_playbackFinished && id == m_lastId; })) { + return false; + } + return true; +} + +bool MockPlayerObserver::waitForPlaybackPaused(SourceId id, const std::chrono::milliseconds duration) { std::unique_lock lock(m_mutex); - if (!m_wakePlaybackStarted.wait_for(lock, duration, [this]() { return m_playbackStarted; } )) - { + if (!m_wakePlaybackPaused.wait_for(lock, duration, [this, id]() { return m_playbackPaused && id == m_lastId; })) { return false; } return true; } -bool MockPlayerObserver::waitForPlaybackFinished(const std::chrono::milliseconds duration) { +bool MockPlayerObserver::waitForPlaybackResumed(SourceId id, const std::chrono::milliseconds duration) { std::unique_lock lock(m_mutex); - if (!m_wakePlaybackFinished.wait_for(lock, duration, [this]() { return m_playbackFinished; } )) - { + if (!m_wakePlaybackResumed.wait_for(lock, duration, [this, id]() { return m_playbackResumed && id == m_lastId; })) { return false; } return true; } -bool MockPlayerObserver::waitForPlaybackPaused(const std::chrono::milliseconds duration) { +bool MockPlayerObserver::waitForPlaybackStopped(SourceId id, const std::chrono::milliseconds duration) { std::unique_lock lock(m_mutex); - if (!m_wakePlaybackPaused.wait_for(lock, duration, [this]() { return m_playbackPaused; } )) - { + if (!m_wakePlaybackStopped.wait_for(lock, duration, [this, id]() { return m_playbackStopped && id == m_lastId; })) { return false; } return true; } -bool MockPlayerObserver::waitForPlaybackResumed(const std::chrono::milliseconds duration) { +bool MockPlayerObserver::waitForPlaybackError(SourceId id, const std::chrono::milliseconds duration) { std::unique_lock lock(m_mutex); - if (!m_wakePlaybackResumed.wait_for(lock, duration, [this]() { return m_playbackResumed; } )) - { + if (!m_wakePlaybackError.wait_for(lock, duration, [this, id]() { return m_playbackError && id == m_lastId; })) { return false; } return true; @@ -374,24 +565,49 @@ int MockPlayerObserver::getOnPlaybackFinishedCallCount() { return m_onPlaybackFinishedCallCount; } -class MediaPlayerTest: public ::testing::Test{ +int MockPlayerObserver::getOnTagsCallCount() { + return m_onTagsCallCount; +} + +void MockPlayerObserver::onTags(SourceId id, std::unique_ptr vectorOfTags) { + std::lock_guard lock(m_mutex); + m_lastId = id; + m_tags = true; + m_onTagsCallCount++; + m_wakeTags.notify_all(); +} + +bool MockPlayerObserver::waitForTags(SourceId id, const std::chrono::milliseconds duration) { + std::unique_lock lock(m_mutex); + if (!m_wakeTags.wait_for(lock, duration, [this, id]() { return m_tags && id == m_lastId; })) { + return false; + } + return true; +} + +class MediaPlayerTest : public ::testing::Test { public: void SetUp() override; + void TearDown() override { + m_mediaPlayer->shutdown(); + } + /** * Sets the audio source to play. * */ void setAttachmentReaderSource( - int iterations = 1, - std::vector receiveSizes = {std::numeric_limits::max()}); + MediaPlayer::SourceId* id, + int iterations = 1, + std::vector receiveSizes = {std::numeric_limits::max()}); /** * Sets IStream source to play. * * @param repeat Whether to play the stream over and over until stopped. */ - void setIStreamSource(bool repeat = false); + void setIStreamSource(MediaPlayer::SourceId* id, bool repeat = false); /// An instance of the @c MediaPlayer std::shared_ptr m_mediaPlayer; @@ -402,19 +618,29 @@ class MediaPlayerTest: public ::testing::Test{ void MediaPlayerTest::SetUp() { m_playerObserver = std::make_shared(); - m_mediaPlayer = MediaPlayer::create(); + m_mediaPlayer = MediaPlayer::create(std::make_shared()); ASSERT_TRUE(m_mediaPlayer); m_mediaPlayer->setObserver(m_playerObserver); } -void MediaPlayerTest::setAttachmentReaderSource(int iterations, std::vector receiveSizes) { - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->setSource( - std::unique_ptr(new MockAttachmentReader(iterations, receiveSizes)))); +void MediaPlayerTest::setAttachmentReaderSource( + MediaPlayer::SourceId* id, + int iterations, + std::vector receiveSizes) { + auto returnId = + m_mediaPlayer->setSource(std::unique_ptr(new MockAttachmentReader(iterations, receiveSizes))); + ASSERT_NE(ERROR_SOURCE_ID, returnId); + if (id) { + *id = returnId; + } } -void MediaPlayerTest::setIStreamSource(bool repeat) { - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->setSource( - make_unique(inputsDirPath + MP3_FILE_PATH), repeat)); +void MediaPlayerTest::setIStreamSource(MediaPlayer::SourceId* id, bool repeat) { + auto returnId = m_mediaPlayer->setSource(make_unique(inputsDirPath + MP3_FILE_PATH), repeat); + ASSERT_NE(ERROR_SOURCE_ID, returnId); + if (id) { + *id = returnId; + } } /** @@ -422,11 +648,12 @@ void MediaPlayerTest::setIStreamSource(bool repeat) { * Check whether the playback started and playback finished notifications are received. */ TEST_F(MediaPlayerTest, testStartPlayWaitForEnd) { - setAttachmentReaderSource(); + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); } /** @@ -434,20 +661,12 @@ TEST_F(MediaPlayerTest, testStartPlayWaitForEnd) { * Check whether the playback started and playback finished notifications are received. */ TEST_F(MediaPlayerTest, testStartPlayForUrl) { - std::string url_single(FILE_PREFIX + inputsDirPath + MP3_FILE_PATH); - m_mediaPlayer->setSource(url_single); - - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); -} - -/** - * Set the source of the @c MediaPlayer to an empty url. The return should be a nullptr. - */ -TEST_F(MediaPlayerTest, testSetSourceEmptyUrl) { - ASSERT_EQ(m_mediaPlayer->setSource(""), MediaPlayerStatus::FAILURE); + auto sourceId = m_mediaPlayer->setSource(url_single); + ASSERT_NE(ERROR_SOURCE_ID, sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); } /** @@ -458,32 +677,29 @@ TEST_F(MediaPlayerTest, testSetSourceEmptyUrl) { * Consecutive calls to setSource(const std::string url) without play() cause tests to occasionally fail: ACSDK-508. */ TEST_F(MediaPlayerTest, testConsecutiveSetSource) { - std::string url_single(FILE_PREFIX + inputsDirPath + MP3_FILE_PATH); m_mediaPlayer->setSource(""); - m_mediaPlayer->setSource(url_single); - - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); + auto id = m_mediaPlayer->setSource(url_single); + ASSERT_TRUE(m_mediaPlayer->play(id)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(id)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(id)); } /** - * Read an audio file into a buffer. Set the source of the @c MediaPlayer to the buffer. Playback audio till the end. - * Check whether the playback started and playback finished notifications are received. - * Call @c play. The audio should play again from the beginning. Wait till the end. + * Plays a second different type of source after one source has finished playing. */ TEST_F(MediaPlayerTest, testStartPlayWaitForEndStartPlayAgain) { - setIStreamSource(); + MediaPlayer::SourceId sourceId; + setIStreamSource(&sourceId); - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); - setAttachmentReaderSource(); - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); + setAttachmentReaderSource(&sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); } /** @@ -492,13 +708,29 @@ TEST_F(MediaPlayerTest, testStartPlayWaitForEndStartPlayAgain) { * the playback finished notification is received. */ TEST_F(MediaPlayerTest, testStopPlay) { - setIStreamSource(true); + MediaPlayer::SourceId sourceId; + setIStreamSource(&sourceId, true); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + std::this_thread::sleep_for(std::chrono::seconds(5)); + ASSERT_TRUE(m_mediaPlayer->stop(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStopped(sourceId)); +} - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - std::this_thread::sleep_for (std::chrono::seconds(5)); - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->stop()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); +/** + * Read an audio file into a buffer. Set the source of the @c MediaPlayer to the buffer. Playback audio for a few + * seconds. Playback started notification should be received when the playback starts. Then call @c stop and expect + * the playback finished notification is received. + */ +TEST_F(MediaPlayerTest, testStartPlayCallAfterStopPlay) { + MediaPlayer::SourceId sourceId; + setIStreamSource(&sourceId, true); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + std::this_thread::sleep_for(std::chrono::seconds(2)); + ASSERT_TRUE(m_mediaPlayer->stop(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStopped(sourceId)); + ASSERT_FALSE(m_mediaPlayer->play(sourceId)); } /** @@ -506,193 +738,179 @@ TEST_F(MediaPlayerTest, testStopPlay) { * seconds. Playback started notification should be received when the playback starts. Call @c stop. * and wait for the playback finished notification is received. Call @c play again. */ -TEST_F(MediaPlayerTest, testStartPlayCallAfterStopPlay) { - setAttachmentReaderSource(); - - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - std::this_thread::sleep_for (std::chrono::seconds(1)); - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->stop()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); - - setAttachmentReaderSource(); +TEST_F(MediaPlayerTest, testStartPlayCallAfterStopPlayDifferentSource) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + std::this_thread::sleep_for(std::chrono::seconds(1)); + ASSERT_TRUE(m_mediaPlayer->stop(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStopped(sourceId)); - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - std::this_thread::sleep_for (std::chrono::seconds(1)); - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->stop()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); + setAttachmentReaderSource(&sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + std::this_thread::sleep_for(std::chrono::seconds(1)); + ASSERT_TRUE(m_mediaPlayer->stop(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStopped(sourceId)); } /* * Pause an audio after playback has started. */ TEST_F(MediaPlayerTest, testPauseDuringPlay) { - setIStreamSource(true); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); + MediaPlayer::SourceId sourceId; + setIStreamSource(&sourceId, true); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); std::this_thread::sleep_for(std::chrono::seconds(1)); - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->pause()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused()); - // onPlaybackFinish should NOT be called during a pause. - // TODO: Detect this via making the MediaPlayerObserverMock a mock object. + ASSERT_TRUE(m_mediaPlayer->pause(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused(sourceId)); ASSERT_EQ(m_playerObserver->getOnPlaybackFinishedCallCount(), 0); } /* - * Play of a paused audio. This behavior is not supported, and will result in the - * audio being stopped. + * Resume paused audio. */ -TEST_F(MediaPlayerTest, testPlayAfterPause) { - setIStreamSource(true); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - std::this_thread::sleep_for(std::chrono::milliseconds(200)); - - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->pause()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused()); - std::this_thread::sleep_for(std::chrono::milliseconds(200)); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); - // TODO: Make the MediaPlayerObserverMock a mock object and ensure onPlaybackStarted should NOT be called - // during a resume. - ASSERT_EQ(m_playerObserver->getOnPlaybackStartedCallCount(), 1); - ASSERT_EQ(m_playerObserver->getOnPlaybackFinishedCallCount(), 1); +TEST_F(MediaPlayerTest, testResumeAfterPauseThenStop) { + MediaPlayer::SourceId sourceId; + setIStreamSource(&sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_mediaPlayer->pause(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused(sourceId)); + ASSERT_TRUE(m_mediaPlayer->resume(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackResumed(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); } /* - * Stop of a paused audio after playback has started. An additional stop and play event should + * Stop of a paused audio after playback has started. An additional stop event should * be sent. */ TEST_F(MediaPlayerTest, testStopAfterPause) { - setIStreamSource(true); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); + MediaPlayer::SourceId sourceId; + setIStreamSource(&sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); std::this_thread::sleep_for(std::chrono::milliseconds(200)); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->pause()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused()); - std::this_thread::sleep_for(std::chrono::milliseconds(200)); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->stop()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); - // TODO: Make the MediaPlayerObserverMock a mock object and ensure onPlaybackStarted should NOT be called - // during a resume. - ASSERT_EQ(m_playerObserver->getOnPlaybackStartedCallCount(), 1); - ASSERT_EQ(m_playerObserver->getOnPlaybackFinishedCallCount(), 1); + ASSERT_TRUE(m_mediaPlayer->pause(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused(sourceId)); + ASSERT_TRUE(m_mediaPlayer->stop(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStopped(sourceId)); } /* * Pause of a paused audio after playback has started. The pause() should fail. */ TEST_F(MediaPlayerTest, testPauseAfterPause) { - setIStreamSource(true); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->pause()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused()); - - ASSERT_EQ(MediaPlayerStatus::FAILURE, m_mediaPlayer->pause()); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->stop()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); -} - -/* - * Resume play of a paused audio after playback has started. - */ -TEST_F(MediaPlayerTest, testResumeAfterPause) { - setIStreamSource(true); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - std::this_thread::sleep_for(std::chrono::milliseconds(200)); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->pause()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused()); - std::this_thread::sleep_for(std::chrono::milliseconds(200)); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->resume()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackResumed()); - // onPlaybackStarted should NOT be called during a pause. - // TODO: Make the MediaPlayerObserverMock a mock object and ensure onPlaybackStarted should NOT be called - // during a resume. - ASSERT_EQ(m_playerObserver->getOnPlaybackStartedCallCount(), 1); + MediaPlayer::SourceId sourceId; + setIStreamSource(&sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_mediaPlayer->pause(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused(sourceId)); + ASSERT_FALSE(m_mediaPlayer->pause(sourceId)); + ASSERT_TRUE(m_mediaPlayer->stop(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStopped(sourceId)); } /* * Calling resume after playback has started. The resume operation should fail. */ TEST_F(MediaPlayerTest, testResumeAfterPlay) { - setIStreamSource(true); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - - ASSERT_EQ(MediaPlayerStatus::FAILURE, m_mediaPlayer->resume()); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->stop()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); + MediaPlayer::SourceId sourceId; + setIStreamSource(&sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_FALSE(m_mediaPlayer->resume(sourceId)); + ASSERT_TRUE(m_mediaPlayer->stop(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStopped(sourceId)); } /** * Read an audio file into a buffer. Set the source of the @c MediaPlayer to the buffer. Playback audio for a few - * seconds. Playback started notification should be received when the playback starts. Call @c getOffsetInMilliseconds. + * seconds. Playback started notification should be received when the playback starts. Call @c getOffset. * Check the offset value. Then call @c stop and expect the playback finished notification is received. - * Call @c getOffsetInMilliseconds again. Check the offset value. + * Call @c getOffset again. Check the offset value. */ TEST_F(MediaPlayerTest, testGetOffsetInMilliseconds) { - setAttachmentReaderSource(); - - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - std::this_thread::sleep_for (std::chrono::seconds(1)); - int64_t offset = m_mediaPlayer->getOffsetInMilliseconds(); - ASSERT_TRUE((offset > 0) && (offset <= MP3_FILE_LENGTH.count())); - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->stop()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); - ASSERT_EQ(-1, m_mediaPlayer->getOffsetInMilliseconds()); + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + std::this_thread::sleep_for(std::chrono::seconds(1)); + std::chrono::milliseconds offset = m_mediaPlayer->getOffset(sourceId); + ASSERT_TRUE((offset > std::chrono::milliseconds::zero()) && (offset <= MP3_FILE_LENGTH)); + ASSERT_NE(MEDIA_PLAYER_INVALID_OFFSET, offset); + ASSERT_TRUE(m_mediaPlayer->stop(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStopped(sourceId)); + ASSERT_EQ(MEDIA_PLAYER_INVALID_OFFSET, m_mediaPlayer->getOffset(sourceId)); } /** - * Test getOffsetInMilliseconds with a null pipeline. Expect that -1 is returned. + * Test getOffset with a null pipeline. Expect that MEDIA_PLAYER_INVALID_OFFSET is returned. * This currently results in errors on shutdown. Will be fixed by ACSDK-446. */ TEST_F(MediaPlayerTest, testGetOffsetInMillisecondsNullPipeline) { - ASSERT_EQ(-1, m_mediaPlayer->getOffsetInMilliseconds()); + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + ASSERT_EQ(MEDIA_PLAYER_INVALID_OFFSET, m_mediaPlayer->getOffset(sourceId + 1)); } -/** - * Check playing two attachments back to back. - * Read an audio file into a buffer. Set the source of the @c MediaPlayer to the buffer. Playback audio for a few - * seconds. Playback started notification should be received when the playback starts. Call @c getOffsetInMilliseconds. - * Check the offset value. Wait for playback to finish and expect the playback finished notification is received. - * Repeat the above for a new source. - */ -TEST_F(MediaPlayerTest, testPlayingTwoAttachments) { - setAttachmentReaderSource(); +/// Tests that calls to getOffset fail when the pipeline is in a stopped state. +TEST_F(MediaPlayerTest, testGetOffsetWhenStoppedFails) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + std::this_thread::sleep_for(std::chrono::seconds(1)); + ASSERT_TRUE(m_mediaPlayer->stop(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStopped(sourceId)); + + std::chrono::milliseconds offset = m_mediaPlayer->getOffset(sourceId); + ASSERT_EQ(MEDIA_PLAYER_INVALID_OFFSET, offset); +} - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - std::this_thread::sleep_for (std::chrono::seconds(1)); - ASSERT_NE(-1, m_mediaPlayer->getOffsetInMilliseconds()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); +/// Tests that calls to getOffset succeed when the pipeline is in a paused state. +TEST_F(MediaPlayerTest, testGetOffsetWhenPaused) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + std::this_thread::sleep_for(std::chrono::seconds(1)); + ASSERT_TRUE(m_mediaPlayer->pause(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused(sourceId)); + + std::chrono::milliseconds offset = m_mediaPlayer->getOffset(sourceId); + ASSERT_GE(offset, std::chrono::milliseconds::zero()); + ASSERT_LE(offset, MP3_FILE_LENGTH); + ASSERT_NE(MEDIA_PLAYER_INVALID_OFFSET, offset); +} - setAttachmentReaderSource(); +// /** +// * Check playing two attachments back to back. +// * Read an audio file into a buffer. Set the source of the @c MediaPlayer to the buffer. Playback audio for a few +// * seconds. Playback started notification should be received when the playback starts. Call @c getOffset. +// * Check the offset value. Wait for playback to finish and expect the playback finished notification is received. +// * Repeat the above for a new source. +// */ +TEST_F(MediaPlayerTest, testPlayingTwoAttachments) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + std::this_thread::sleep_for(std::chrono::seconds(1)); + ASSERT_NE(MEDIA_PLAYER_INVALID_OFFSET, m_mediaPlayer->getOffset(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - std::this_thread::sleep_for (std::chrono::seconds(1)); - ASSERT_NE(-1, m_mediaPlayer->getOffsetInMilliseconds()); - std::this_thread::sleep_for (std::chrono::seconds(1)); - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->stop()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); + setAttachmentReaderSource(&sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + std::this_thread::sleep_for(std::chrono::seconds(1)); + ASSERT_NE(MEDIA_PLAYER_INVALID_OFFSET, m_mediaPlayer->getOffset(sourceId)); + ASSERT_TRUE(m_mediaPlayer->stop(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStopped(sourceId)); } /** @@ -701,7 +919,9 @@ TEST_F(MediaPlayerTest, testPlayingTwoAttachments) { * To a human ear the playback of this test is expected to sound reasonably smooth. */ TEST_F(MediaPlayerTest, testUnsteadyReads) { - setAttachmentReaderSource( + // clang-format off + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId, 3, { // Sporadic receive sizes averaging out to about 6000 bytes per second. // Each element corresponds to a 100 millisecond time interval, so each @@ -717,13 +937,13 @@ TEST_F(MediaPlayerTest, testUnsteadyReads) { 0, 0, 0, 1000, 0, 0, 0, 1000, 0, 1000, 0, 0, 0, 0, 3000, 0, 0, 0, 0, 6000 }); - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(std::chrono::milliseconds(15000))); + // clang-format on + + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId, std::chrono::milliseconds(15000))); } -// TODO: ACSDK-300 This test fails frequently on the Raspberry Pi platform. -#ifdef RESOLVED_ACSDK_300 /** * Check playback of an attachment whose receipt is interrupted for about 3 seconds. Playback started notification * should be received when the playback starts. Wait for playback to finish and expect the playback finished @@ -731,7 +951,9 @@ TEST_F(MediaPlayerTest, testUnsteadyReads) { * initially, then be interrupted for a few seconds, and then continue fairly smoothly. */ TEST_F(MediaPlayerTest, testRecoveryFromPausedReads) { - setAttachmentReaderSource( + MediaPlayer::SourceId sourceId; + // clang-format off + setAttachmentReaderSource(&sourceId, 3, { // Receive sizes averaging out to 6000 bytes per second with a 3 second gap. // Each element corresponds to a 100 millisecond time interval, so each @@ -748,128 +970,87 @@ TEST_F(MediaPlayerTest, testRecoveryFromPausedReads) { 0, 0, 0, 0, 0, 0, 0, 0, 0, 6000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6000 }); - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(std::chrono::milliseconds(20000))); -} - -#endif + // clang-format on -#ifdef TOTEM_PLPARSER -/** - * Check playback of an URL identifying a playlist. Wait until the end. - * Ensure that onPlaybackStarted and onPlaybackFinished are only called once each. - */ + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId, std::chrono::milliseconds(20000))); +} +/// Tests playing a dummy playlist TEST_F(MediaPlayerTest, testStartPlayWithUrlPlaylistWaitForEnd) { - - std::string url_playlist(FILE_PREFIX + inputsDirPath + M3U_FILE_PATH); - m_mediaPlayer->setSource(url_playlist); - - ASSERT_NE(MediaPlayerStatus::FAILURE,m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(std::chrono::milliseconds(10000))); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(std::chrono::milliseconds(10000))); + MediaPlayer::SourceId sourceId = m_mediaPlayer->setSource(TEST_M3U_PLAYLIST_URL); + ASSERT_NE(ERROR_SOURCE_ID, sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId, std::chrono::milliseconds(10000))); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId, std::chrono::milliseconds(10000))); ASSERT_EQ(m_playerObserver->getOnPlaybackStartedCallCount(), 1); ASSERT_EQ(m_playerObserver->getOnPlaybackFinishedCallCount(), 1); } -#endif +// TODO: ACSDK-627 This test fails frequently on Ubuntu Linux platforms. +#ifdef RESOLVED_ACSDK_627 /** - * Test setting the offset to a seekable source. Setting the offset should succeed and playback should start from the offset. + * Test setting the offset to a seekable source. Setting the offset should succeed and playback should start from the + * offset. */ TEST_F(MediaPlayerTest, testSetOffsetSeekableSource) { std::chrono::milliseconds offset(OFFSET); std::string url_single(FILE_PREFIX + inputsDirPath + MP3_FILE_PATH); - m_mediaPlayer->setSource(url_single); - ASSERT_EQ(MediaPlayerStatus::SUCCESS, m_mediaPlayer->setOffset(offset)); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); + auto sourceId = m_mediaPlayer->setSource(url_single); + ASSERT_NE(ERROR_SOURCE_ID, sourceId); + ASSERT_TRUE(m_mediaPlayer->setOffset(sourceId, offset)); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); auto start = std::chrono::steady_clock::now(); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); - - std::chrono::milliseconds timeElapsed = - std::chrono::duration_cast(std::chrono::steady_clock::now() - start); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); ACSDK_INFO(LX("MediaPlayerTest").d("timeElapsed", timeElapsed.count())); - // Time elapsed should be total file length minus the offset. ASSERT_TRUE(timeElapsed < (MP3_FILE_LENGTH - offset + TOLERANCE)); ASSERT_EQ(m_playerObserver->getOnPlaybackStartedCallCount(), 1); ASSERT_EQ(m_playerObserver->getOnPlaybackFinishedCallCount(), 1); -} - -/** - * Test setting the offset to an un-seekable pipeline. Setting the offset should succeed, but - * no seeking should occur. Playback will start from the beginning. - */ -TEST_F(MediaPlayerTest, testSetOffsetUnseekable) { - std::chrono::milliseconds offset(OFFSET); - - setAttachmentReaderSource(); - // Ensure that source is set to not seekable. - gst_app_src_set_stream_type(m_mediaPlayer->getAppSrc(), GST_APP_STREAM_TYPE_STREAM); - - ASSERT_EQ(MediaPlayerStatus::SUCCESS, m_mediaPlayer->setOffset(offset)); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - auto start = std::chrono::steady_clock::now(); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); std::chrono::milliseconds timeElapsed = std::chrono::duration_cast(std::chrono::steady_clock::now() - start); - ACSDK_INFO(LX("MediaPlayerTest").d("timeElapsed", timeElapsed.count())); - - // Time elapsed should be the length of the file. - ASSERT_TRUE(timeElapsed >= (MP3_FILE_LENGTH)); - ASSERT_EQ(m_playerObserver->getOnPlaybackStartedCallCount(), 1); - ASSERT_EQ(m_playerObserver->getOnPlaybackFinishedCallCount(), 1); } +#endif +// TODO: ACSDK-1024 MediaPlayerTest.testSetOffsetOutsideBounds is flaky /** * Test setting the offset outside the bounds of the source. Playback will immediately end. */ -TEST_F(MediaPlayerTest, testSetOffsetOutsideBounds) { +TEST_F(MediaPlayerTest, DISABLED_testSetOffsetOutsideBounds) { std::chrono::milliseconds outOfBounds(MP3_FILE_LENGTH + PADDING); std::string url_single(FILE_PREFIX + inputsDirPath + MP3_FILE_PATH); - m_mediaPlayer->setSource(url_single); - ASSERT_EQ(MediaPlayerStatus::SUCCESS, m_mediaPlayer->setOffset(outOfBounds)); - - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); - auto start = std::chrono::steady_clock::now(); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); - - std::chrono::milliseconds timeElapsed = - std::chrono::duration_cast(std::chrono::steady_clock::now() - start); - ACSDK_INFO(LX("MediaPlayerTest").d("timeElapsed", timeElapsed.count())); + auto sourceId = m_mediaPlayer->setSource(url_single, outOfBounds); + ASSERT_NE(ERROR_SOURCE_ID, sourceId); - // Time elapsed should be zero. - ASSERT_TRUE(timeElapsed < std::chrono::milliseconds::zero() + TOLERANCE); - ASSERT_EQ(m_playerObserver->getOnPlaybackStartedCallCount(), 1); - ASSERT_EQ(m_playerObserver->getOnPlaybackFinishedCallCount(), 1); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackError(sourceId)); } +// TODO: ACSDK-828: this test ends up with a shorter playback time than the actual file length. /** * Test calling setSource resets the offset. * * Consecutive calls to setSource(const std::string url) without play() cause tests to occasionally fail: ACSDK-508. */ -TEST_F(MediaPlayerTest, testSetSourceResetsOffset) { +TEST_F(MediaPlayerTest, DISABLED_testSetSourceResetsOffset) { std::chrono::milliseconds offset(OFFSET); std::string url_single(FILE_PREFIX + inputsDirPath + MP3_FILE_PATH); - m_mediaPlayer->setSource(url_single); - ASSERT_EQ(MediaPlayerStatus::SUCCESS, m_mediaPlayer->setOffset(offset)); + auto sourceId = m_mediaPlayer->setSource(url_single, offset); + ASSERT_NE(ERROR_SOURCE_ID, sourceId); - m_mediaPlayer->setSource(url_single); + sourceId = m_mediaPlayer->setSource(url_single); + ASSERT_NE(ERROR_SOURCE_ID, sourceId); // Play, expect full file. - ASSERT_NE(MediaPlayerStatus::FAILURE, m_mediaPlayer->play()); - ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted()); auto start = std::chrono::steady_clock::now(); - ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished()); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); std::chrono::milliseconds timeElapsed = std::chrono::duration_cast(std::chrono::steady_clock::now() - start); @@ -881,17 +1062,363 @@ TEST_F(MediaPlayerTest, testSetSourceResetsOffset) { ASSERT_EQ(m_playerObserver->getOnPlaybackFinishedCallCount(), 1); } -} // namespace test -} // namespace mediaPlayer -} // namespace alexaClientSDK +/** + * Test consecutive setSource() and play() calls. Expect the PlaybackStarted and PlaybackFinished will be received + * before the timeout. + */ +TEST_F(MediaPlayerTest, testRepeatAttachment) { + MediaPlayer::SourceId sourceId; + for (int i = 0; i < 10; i++) { + setAttachmentReaderSource(&sourceId); + ASSERT_NE(ERROR_SOURCE_ID, sourceId); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); + } +} + +/** + * Test that the media plays after a volume change. + */ +TEST_F(MediaPlayerTest, testSetVolumePlays) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + + SpeakerInterface::SpeakerSettings settings; + + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + + std::this_thread::sleep_for(std::chrono::seconds(1)); + ASSERT_TRUE(m_mediaPlayer->pause(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused(sourceId)); + m_mediaPlayer->setVolume(10); + ASSERT_TRUE(m_mediaPlayer->resume(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); + + m_mediaPlayer->getSpeakerSettings(&settings); + ASSERT_EQ(settings.volume, 10); +} + +/** + * Test that the media plays after a volume adjustment. + */ +TEST_F(MediaPlayerTest, testAdjustVolumePlaysDuringPlay) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + + SpeakerInterface::SpeakerSettings settings; + + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + + m_mediaPlayer->adjustVolume(-90); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); + + m_mediaPlayer->getSpeakerSettings(&settings); + ASSERT_EQ(settings.volume, 10); +} + +/** + * Test that the media plays after a volume adjustment. + */ +TEST_F(MediaPlayerTest, testAdjustVolumePlays) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + + SpeakerInterface::SpeakerSettings settings; + + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + + std::this_thread::sleep_for(std::chrono::seconds(1)); + ASSERT_TRUE(m_mediaPlayer->pause(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused(sourceId)); + + m_mediaPlayer->adjustVolume(-90); + ASSERT_TRUE(m_mediaPlayer->resume(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); + + m_mediaPlayer->getSpeakerSettings(&settings); + ASSERT_EQ(settings.volume, 10); +} + +/** + * Test the play behavior when the media is adjusted out of bounds. The volume should be capped + * at the bounds. The media should play to completion. + */ +TEST_F(MediaPlayerTest, testAdjustVolumeOutOfBounds) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + + std::this_thread::sleep_for(std::chrono::seconds(1)); + ASSERT_TRUE(m_mediaPlayer->pause(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused(sourceId)); + + m_mediaPlayer->setVolume(10); + m_mediaPlayer->adjustVolume(-100); + + ASSERT_TRUE(m_mediaPlayer->resume(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); + + SpeakerInterface::SpeakerSettings settings; + m_mediaPlayer->getSpeakerSettings(&settings); + ASSERT_EQ(settings.volume, 0); +} + +/** + * Test the media plays to completion even if it's muted. + */ +TEST_F(MediaPlayerTest, testSetMutePlays) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + + SpeakerInterface::SpeakerSettings settings; + + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + + std::this_thread::sleep_for(std::chrono::seconds(1)); + ASSERT_TRUE(m_mediaPlayer->pause(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused(sourceId)); + + m_mediaPlayer->setMute(true); + ASSERT_TRUE(m_mediaPlayer->resume(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); + + m_mediaPlayer->getSpeakerSettings(&settings); + ASSERT_TRUE(settings.mute); +} + +/** + * Test that the speaker settings can be retrieved. + */ +TEST_F(MediaPlayerTest, testGetSpeakerSettings) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + SpeakerInterface::SpeakerSettings settings; + + m_mediaPlayer->setMute(true); + m_mediaPlayer->setVolume(15); + m_mediaPlayer->getSpeakerSettings(&settings); + ASSERT_TRUE(settings.mute); + ASSERT_EQ(settings.volume, 15); +} + +/** + * Tests this rounding edgecase. Calling adjustVolume(-10) with volume at 90 resulted in a value of 79 + * when not rounded properly. + */ +TEST_F(MediaPlayerTest, testRoundingEdgeCase) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + + SpeakerInterface::SpeakerSettings settings; + + m_mediaPlayer->setVolume(90); + m_mediaPlayer->adjustVolume(-10); + m_mediaPlayer->getSpeakerSettings(&settings); + ASSERT_EQ(settings.volume, 80); +} + +/** + * Read an audio file into a buffer. Set the source of the @c MediaPlayer to the buffer. Playback audio till the end. + * Check whether the playback started and playback finished notifications are received. + * Check whether the tags were read from the file. + */ +TEST_F(MediaPlayerTest, testReadTags) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForTags(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); + /* + * fox_dog.mp3 returns 3 sets of tags. + */ + ASSERT_EQ(m_playerObserver->getOnTagsCallCount(), 3); +} + +/// Tests that consecutive calls to the same public API fails +TEST_F(MediaPlayerTest, testConsecutiveSameApiCalls) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); -int main (int argc, char** argv) { + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_FALSE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + + ASSERT_TRUE(m_mediaPlayer->pause(sourceId)); + ASSERT_FALSE(m_mediaPlayer->pause(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused(sourceId)); + + ASSERT_TRUE(m_mediaPlayer->resume(sourceId)); + ASSERT_FALSE(m_mediaPlayer->resume(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackResumed(sourceId)); +} + +/// Tests that pausing immediately before waiting for a callback is valid. +TEST_F(MediaPlayerTest, testImmediatePause) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_mediaPlayer->pause(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused(sourceId)); + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); +} + +/// Tests setting multiple set source calls and observing onPlaybackStopped and onPlaybackFinished calls +TEST_F(MediaPlayerTest, multiplePlayAndSetSource) { + MediaPlayer::SourceId sourceId; + MediaPlayer::SourceId secondSourceId; + MediaPlayer::SourceId thirdSourceId; + setAttachmentReaderSource(&sourceId); + + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + + std::chrono::milliseconds offset = m_mediaPlayer->getOffset(sourceId); + ASSERT_NE(MEDIA_PLAYER_INVALID_OFFSET, offset); + + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); + ASSERT_FALSE(m_playerObserver->waitForPlaybackStopped(sourceId)); + + setAttachmentReaderSource(&secondSourceId); + ASSERT_FALSE(m_playerObserver->waitForPlaybackStopped(sourceId)); + ASSERT_TRUE(m_mediaPlayer->play(secondSourceId)); + + setAttachmentReaderSource(&thirdSourceId); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStopped(secondSourceId)); +} + +/// Tests passing an invalid source id to a play() call +TEST_F(MediaPlayerTest, invalidSourceId) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + + ASSERT_FALSE(m_mediaPlayer->play(sourceId + 1)); +} + +/// Tests that two consecutive calls to pause fails. +TEST_F(MediaPlayerTest, doublePause) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_mediaPlayer->pause(sourceId)); + ASSERT_FALSE(m_mediaPlayer->pause(sourceId)); +} + +/// Tests that a resume when already playing fails +TEST_F(MediaPlayerTest, resumeWhenPlaying) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_FALSE(m_mediaPlayer->resume(sourceId)); +} + +/// Tests that a resume when stopped (not paused) fails +TEST_F(MediaPlayerTest, resumeWhenStopped) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_mediaPlayer->stop(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStopped(sourceId)); + ASSERT_FALSE(m_mediaPlayer->resume(sourceId)); +} + +/// Tests that a stop callback when playing leads to an onPlaybackStopped callback +TEST_F(MediaPlayerTest, newSetSourceLeadsToStoppedCallback) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + + MediaPlayer::SourceId secondSourceId; + setAttachmentReaderSource(&secondSourceId); + + ASSERT_TRUE(m_playerObserver->waitForPlaybackStopped(sourceId)); +} + +/// Tests that resuming after a pause with a pending play leads to an onPlaybackResumed callback. +TEST_F(MediaPlayerTest, resumeAfterPauseWithPendingPlay) { + MediaPlayer::SourceId sourceId; + setAttachmentReaderSource(&sourceId); + + /* + * Set up the situation where a play is followed immediately by a pause. + * The pause() needs to happen before the onPlaybackStarted call is received to + * properly test this case. The assumption here is that the play() call should always return + * before the actual start of audio playback. + */ + ASSERT_TRUE(m_mediaPlayer->play(sourceId)); + ASSERT_TRUE(m_mediaPlayer->pause(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackStarted(sourceId)); + ASSERT_TRUE(m_playerObserver->waitForPlaybackPaused(sourceId)); + + // Expect onPlaybackResumed call. + m_mediaPlayer->resume(sourceId); + ASSERT_TRUE(m_playerObserver->waitForPlaybackResumed(sourceId)); + + ASSERT_TRUE(m_playerObserver->waitForPlaybackFinished(sourceId)); +} + +} // namespace test +} // namespace mediaPlayer +} // namespace alexaClientSDK + +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); if (argc < 2) { - std::cerr << "Usage: MediaPlayerTest " << std::endl; + std::cerr << "Usage: " << std::string(argv[0]) << " " << std::endl; } else { alexaClientSDK::mediaPlayer::test::inputsDirPath = std::string(argv[1]); + alexaClientSDK::mediaPlayer::test::urlsToContentTypes.insert( + {alexaClientSDK::mediaPlayer::test::FILE_PREFIX + alexaClientSDK::mediaPlayer::test::inputsDirPath + + alexaClientSDK::mediaPlayer::test::MP3_FILE_PATH, + "audio/mpeg"}); + std::ifstream fileStream( + alexaClientSDK::mediaPlayer::test::inputsDirPath + alexaClientSDK::mediaPlayer::test::MP3_FILE_PATH); + std::stringstream fileData; + fileData << fileStream.rdbuf(); + alexaClientSDK::mediaPlayer::test::urlsToContent.insert({alexaClientSDK::mediaPlayer::test::FILE_PREFIX + + alexaClientSDK::mediaPlayer::test::inputsDirPath + + alexaClientSDK::mediaPlayer::test::MP3_FILE_PATH, + fileData.str()}); + alexaClientSDK::mediaPlayer::test::urlsToContentTypes.insert( + {alexaClientSDK::mediaPlayer::test::TEST_M3U_PLAYLIST_URL, "audio/mpegurl"}); + alexaClientSDK::mediaPlayer::test::TEST_M3U_PLAYLIST_CONTENT = + std::string("EXTINF:2,fox_dog.mp3\n") + + std::string( + alexaClientSDK::mediaPlayer::test::FILE_PREFIX + alexaClientSDK::mediaPlayer::test::inputsDirPath + + alexaClientSDK::mediaPlayer::test::MP3_FILE_PATH) + + '\n' + std::string("EXTINF:2,fox_dog.mp3\n") + + std::string( + alexaClientSDK::mediaPlayer::test::FILE_PREFIX + alexaClientSDK::mediaPlayer::test::inputsDirPath + + alexaClientSDK::mediaPlayer::test::MP3_FILE_PATH) + + '\n'; + alexaClientSDK::mediaPlayer::test::urlsToContent.insert( + {alexaClientSDK::mediaPlayer::test::TEST_M3U_PLAYLIST_URL, + alexaClientSDK::mediaPlayer::test::TEST_M3U_PLAYLIST_CONTENT}); +// ACSDK-1141 - Some tests fail on Windows. +#if defined(_WIN32) && !defined(RESOLVED_ACSDK_1141) + ::testing::GTEST_FLAG(filter) = "-MediaPlayerTest*"; +#endif return RUN_ALL_TESTS(); } } diff --git a/MediaPlayer/test/NormalizerTest.cpp b/MediaPlayer/test/NormalizerTest.cpp new file mode 100644 index 0000000000..7d3beaf681 --- /dev/null +++ b/MediaPlayer/test/NormalizerTest.cpp @@ -0,0 +1,130 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +#include "MediaPlayer/Normalizer.h" + +namespace alexaClientSDK { +namespace mediaPlayer { +namespace test { + +using namespace testing; + +class NormalizerTest : public ::testing::Test {}; + +/** + * Test normalize with a nullptr. + */ +TEST_F(NormalizerTest, testNormalizeNullResult) { + ASSERT_FALSE(Normalizer::create(0, 1, 0, 1)->normalize(1, nullptr)); +} + +/** + * Test create with a source min larger than source max. + */ +TEST_F(NormalizerTest, testCreateSourceMinGreaterThanMax) { + ASSERT_EQ(Normalizer::create(100, 0, 0, 1), nullptr); +} + +/** + * Test create with a source min equal to source max. + */ +TEST_F(NormalizerTest, testCreateSourceMinEqualToMax) { + ASSERT_EQ(Normalizer::create(0, 0, 0, 1), nullptr); +} + +/** + * Test create with a normalized min larger than normalized max. + */ +TEST_F(NormalizerTest, testCreateNormalizeMinGreaterThanMax) { + ASSERT_EQ(Normalizer::create(0, 1, 100, 1), nullptr); +} + +/** + * Test normalize with a normalized min equal to normalized max. + */ +TEST_F(NormalizerTest, testNormalizeNormalizedMinEqualToMax) { + double result; + ASSERT_TRUE(Normalizer::create(0, 10, 1, 1)->normalize(2, &result)); + ASSERT_EQ(result, 1); +} + +/** + * Test normalize with an input outside the source bounds. + */ +TEST_F(NormalizerTest, testNormalizeInputOutsideSourceBounds) { + double result; + ASSERT_FALSE(Normalizer::create(0, 1, 0, 1)->normalize(2, &result)); +} + +/** + * Test normalizing to the same range. + */ +TEST_F(NormalizerTest, testNormalizeSameScale) { + double result; + ASSERT_TRUE(Normalizer::create(0, 2, 0, 2)->normalize(1, &result)); + ASSERT_EQ(result, 1); +} + +/** + * Test normalizing to a smaller range. + */ +TEST_F(NormalizerTest, testNormalizeScaleDown) { + double result; + ASSERT_TRUE(Normalizer::create(0, 100, 0, 10)->normalize(50, &result)); + ASSERT_EQ(result, 5); +} + +/** + * Test normalizing to a larger range. + */ +TEST_F(NormalizerTest, testNormalizeScaleUp) { + double result; + ASSERT_TRUE(Normalizer::create(0, 10, 0, 100)->normalize(5, &result)); + ASSERT_EQ(result, 50); +} + +/** + * Test normalizing to a negative range. + */ +TEST_F(NormalizerTest, testNormalizeNegativeRange) { + double result; + ASSERT_TRUE(Normalizer::create(0, 10, -10, 0)->normalize(4, &result)); + ASSERT_EQ(result, -6); +} + +/** + * Test where source min != normalize min. + */ +TEST_F(NormalizerTest, testNormalizeDifferentMinimums) { + double result; + ASSERT_TRUE(Normalizer::create(1, 5, 0, 100)->normalize(2, &result)); + ASSERT_EQ(result, 25); +} + +/** + * Test where result is a non-integer. + */ +TEST_F(NormalizerTest, testNonInteger) { + double result; + ASSERT_TRUE(Normalizer::create(0, 2, 0, 3)->normalize(1, &result)); + ASSERT_EQ(result, 1.5); +} + +} // namespace test +} // namespace mediaPlayer +} // namespace alexaClientSDK diff --git a/NOTICE.txt b/NOTICE.txt index 617c641a1e..04bbb6ae30 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1,5 +1,5 @@ AVS Device SDK -Copyright 2016-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. +Copyright 2016-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. *************************** AVS DEVICE SDK COMPONENTS @@ -12,12 +12,25 @@ License, Version 2.0 (the "License"): - Alerts Capability Agent - Alexa Communications Library (ACL) - Alexa Directive Sequencer Library (ADSL) -- Audio Input Processor (AIP) +- Audio Input Processor (AIP) / Speech Recognizer Capability Agent - AudioPlayer Capability Agent +- Certified Sender +- Context Manager +- Default Client +- ExternalMediaPlayer Capability Agent - Key Word Detector (KWD) - Media Player +- Notifications Capability Agent +- Playback Controller Capability Agent +- Playlist Parser +- RegistrationManager - Sample App -- Speech Synthesizer Capability Agent +- Settings Capability Agent +- SpeakerManager Capability Agent +- SpeechSynthesizer Capability Agent +- Storage +- System Capability Agent +- Template Runtime Capability Agent You may not use this file except in compliance with the License. A copy of the License is located at @@ -33,7 +46,7 @@ limitations under the License. ALEXA AUDIO ASSETS ****************** -Copyright 2017 Amazon.com, Inc. or its affiliates (“Amazon”). +Copyright 2018 Amazon.com, Inc. or its affiliates (“Amazon”). All Rights Reserved. These materials are licensed to you as "Alexa Materials" under the Alexa Voice diff --git a/PlaylistParser/CMakeLists.txt b/PlaylistParser/CMakeLists.txt index 0950d4770b..ad7f6e3c76 100644 --- a/PlaylistParser/CMakeLists.txt +++ b/PlaylistParser/CMakeLists.txt @@ -4,9 +4,4 @@ project(PlaylistParser LANGUAGES CXX) include(../build/BuildDefaults.cmake) add_subdirectory("src") - -if(NOT TOTEM_PLPARSER) - message("Totem-Pl-Parser based playlist parser will not be built, and the playlist parser is disabled.") -else() - add_subdirectory("test") -endif() \ No newline at end of file +acsdk_add_test_subdirectory_if_allowed() \ No newline at end of file diff --git a/PlaylistParser/include/PlaylistParser/DummyPlaylistParser.h b/PlaylistParser/include/PlaylistParser/DummyPlaylistParser.h deleted file mode 100644 index 1f3a7b6602..0000000000 --- a/PlaylistParser/include/PlaylistParser/DummyPlaylistParser.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * DummyPlaylistParser.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0/ - * - * or in the "license" file accompanying this file. This file 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. - */ - -#ifndef ALEXA_CLIENT_SDK_PLAYLIST_PARSER_INCLUDE_PLAYLIST_PARSER_DUMMY_PLAYLIST_PARSER_H_ -#define ALEXA_CLIENT_SDK_PLAYLIST_PARSER_INCLUDE_PLAYLIST_PARSER_DUMMY_PLAYLIST_PARSER_H_ - -#include - -namespace alexaClientSDK { -namespace playlistParser { - -/** - * A simple dummy implementation of the PlaylistParser - * - */ -class DummyPlaylistParser : public avsCommon::utils::playlistParser::PlaylistParserInterface { -public: - /** - * Creates an instance of the @c DummyPlaylistParser. - * - * @return An instance of the @c DummyPlaylistParser if successful else a @c nullptr. - */ - static std::shared_ptr create(); - - bool parsePlaylist(const std::string& url, - std::shared_ptr observer) override; -}; - -} // namespace playlistParser -} // namespace alexaClientSDK - -#endif // ALEXA_CLIENT_SDK_PLAYLIST_PARSER_INCLUDE_PLAYLIST_PARSER_DUMMY_PLAYLIST_PARSER_H_ - diff --git a/PlaylistParser/include/PlaylistParser/PlaylistParser.h b/PlaylistParser/include/PlaylistParser/PlaylistParser.h index e1085216c0..c68a1c4fa4 100644 --- a/PlaylistParser/include/PlaylistParser/PlaylistParser.h +++ b/PlaylistParser/include/PlaylistParser/PlaylistParser.h @@ -1,7 +1,5 @@ /* - * PlaylistParser.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,203 +13,177 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_PLAYLIST_PARSER_INCLUDE_PLAYLIST_PARSER_PLAYLIST_PARSER_H_ -#define ALEXA_CLIENT_SDK_PLAYLIST_PARSER_INCLUDE_PLAYLIST_PARSER_PLAYLIST_PARSER_H_ +#ifndef ALEXA_CLIENT_SDK_PLAYLISTPARSER_INCLUDE_PLAYLISTPARSER_PLAYLISTPARSER_H_ +#define ALEXA_CLIENT_SDK_PLAYLISTPARSER_INCLUDE_PLAYLISTPARSER_PLAYLISTPARSER_H_ -#include #include -#include -#include - -#include +#include +#include +#include +#include #include +#include +#include namespace alexaClientSDK { namespace playlistParser { /** - * This implementation of the PlaylistParser uses the Totem Playlist Parser library. - * @see https://github.com/GNOME/totem-pl-parser - * @see https://developer.gnome.org/totem-pl-parser/stable/TotemPlParser.html. * - * @note For the playlist parser to function properly, a main event loop needs to be running. If there is no main event - * loop the signals related to parsing playlist will not be called. */ -class PlaylistParser : public avsCommon::utils::playlistParser::PlaylistParserInterface { +class PlaylistParser + : public avsCommon::utils::playlistParser::PlaylistParserInterface + , public avsCommon::utils::RequiresShutdown { public: /** - * Creates an instance of the @c PlaylistParser. + * Creates a new @c PlaylistParser instance. * - * @return An instance of the @c PlaylistParser if successful else a @c nullptr. + * @param contentFetcherFactory A factory that can create @c HTTPContentFetcherInterfaces. + * @return An @c std::unique_ptr to a new @c PlaylistParser if successful or @c nullptr otherwise. */ - static std::unique_ptr create(); - - /** - * Destructor. - */ - ~PlaylistParser(); - - bool parsePlaylist(const std::string& url, - std::shared_ptr observer) override; - -private: - /** - * Class which has all the information to parse a playlist and the observer to whom the notification needs to be - * sent once the parsing has been completed. - */ - class PlaylistInfo { - public: - /// Constructor. It initializes the parser. - PlaylistInfo(TotemPlParser* parser); - - /// Destructor. - ~PlaylistInfo(); - - /// An instance of the @c TotemPlParser. - TotemPlParser* parser; - - /// The playlist url. - std::string playlistUrl; + static std::unique_ptr create( + std::shared_ptr contentFetcherFactory); - /// An instance of the observer to notify once parsing is complete. - std::shared_ptr observer; + int parsePlaylist( + std::string url, + std::shared_ptr observer, + std::vector playlistTypesToNotBeParsed = std::vector()) override; - /// A queue of urls extracted from the playlist. - std::queue urlQueue; + /// A return value that indicates a failure to start the playlist parsing. + static const int START_FAILURE = 0; - /// ID of the handler installed to receive playlist started data signals. - guint playlistStartedHandlerId; + void doShutdown() override; - /// ID of the handler installed to receive entry parsed data signals. - guint entryParsedHandlerId; +private: + /// A struct to contain a URL encountered in a playlist and metadata surrounding it. + struct UrlAndInfo { + std::string url; + std::chrono::milliseconds length; + }; - /// Mutex to serialize access to @c urlQueue. - std::mutex mutex; + /// A struct used to encapsulate information retrieved from an M3U playlist. + struct M3UContent { + std::vector childrenUrls; + bool endlistTagPresent; + bool streamInfTagPresent; + M3UContent() : endlistTagPresent{false}, streamInfTagPresent{false} {}; }; /** - * Initializes the @c m_parserThread. + * Constructor. + * + * @param contentFetcherFactory The object that will be used to create objects with which to fetch content from + * urls. */ - PlaylistParser(); + PlaylistParser( + std::shared_ptr contentFetcherFactory); /** - * Creates an instance of the @c PlaylistInfo and initializes its parser with an instance of the @c TotemPlParser. - * Connects signals for the parser to the callbacks. - * - * @param url The url of the playlist to be parsed. - * @param observer The observer to be notified of when playlist parsing is complete. - * @return A @c PlaylistInfo if successful else @c nullptr. + * Parses the playlist pointed to by the url specified in a depth first search manner. * - * @note This should be called only after validating the url and observer. + * @param id The id of the request. + * @param observer The observer to notify. + * @param rootUrl The initial URL to parse. */ - std::shared_ptr createPlaylistInfo( - const std::string& url, - std::shared_ptr observer); + void doDepthFirstSearch( + int id, + std::shared_ptr observer, + const std::string& rootUrl, + std::vector playlistTypesToNotBeParsed); /** - * Callback for when playlist parsing begins. + * Parses an M3U playlist and returns the "children" URLs in the order they appeared in the playlist. * - * @param parser The instance of the @c TotemPlParser. - * @param url The playlist url being parsed. - * @param metadata The metadata associated with the playlist. - * @param playlistInfo The instance of the @c PlaylistInfo associated with the parser. + * @param content The content to parse. + * @return A vector of URLs and their relevant metadata in the order they appeared in the playlist. */ - static void onPlaylistStarted( - TotemPlParser* parser, - gchar* url, - TotemPlParserMetadata* metadata, - gpointer playlistInfo); + static M3UContent parseM3UContent(const std::string& playlistURL, const std::string& content); /** - * Callback for when an entry has been extracted from the playlist. + * Parses an PLS playlist and returns the "children" URLs in the order they appeared in the playlist. * - * @param parser The instance of the @c TotemPlParser. - * @param url The url entry extracted from the playlist. - * @param metadata The metadata associated with the entry. - * @param playlistInfo The instance of the @c PlaylistInfo associated with the parser. + * @param content The content to parse. + * @return A vector of URLs in the order they appeared in the playlist. */ - static void onEntryParsed( - TotemPlParser* parser, - gchar* url, - TotemPlParserMetadata* metadata, - gpointer playlistInfo); + static std::vector parsePLSContent(const std::string& playlistURL, const std::string& content); /** - * Callback for when the parsing is complete. + * Determines the playlist type of an M3U playlist. * - * @param parser The instance of the @c TotemPlParser. - * @param result The result of the playlist parsing. - * @param playlistInfo The instance of the @c PlaylistInfo associated with the parser. + * @param playlistContent The M3U playlist in @c std::string format. + * @return @c true if the playlist is M3U8 or @c false otherwise */ - static void onParseComplete(GObject* parser, GAsyncResult* result, gpointer playlistInfo); + static bool isM3UPlaylistM3U8(const std::string& playlistContent); /** - * Calls the function to start playlist parsing. This function is called after acquiring a lock to @c m_mutex. - * The function will release the lock before calling the Totem parsing function. + * Removes a carriage return from the end of a line. This is required to handle Windows style line breaks ('\r\n'). + * std::getline reads by default up to '\n' so at times, the '\r' may be included when readinglines. * - * @param lock The lock acquired on @c m_mutex. + * @param line The line to parse */ - void handleParsingLocked(std::unique_lock& lock); + static void removeCarriageReturnFromLine(std::string* line); /** - * Adds the url entry to the queue of entries to be sent to the observer. + * Retrieves content from a URL and stores it into a string. * - * @param url The url entry extracted from the playlist. - * @param playlistInfo The instance of the @c PlaylistInfo associated with the parser. + * @param url The URL to retrieve from. + * @param [out] content The playlist content. + * @return @c true if no error occured or @c false otherwise. + * @note This function should be used to retrieve content specifically from playlist URLs. Attempting to use this + * on a media URL could be blocking forever as the URL might point to a live stream. */ - void handleOnEntryParsed(gchar *url, std::shared_ptr playlistInfo); + bool getContentFromPlaylistUrlIntoString(const std::string& url, std::string* content) const; /** - * Translates the @c result to @c PlaylistParseResult and calls @c onPlaylistParsed. + * Determines whether the provided url is an absolute url as opposed to a relative url. This is done by simply + * checking to see if the string contains the substring "://". * - * @param result The result of parsing the playlist. - * @param playlistInfo The instance of the @c PlaylistInfo associated with the parser. + * @param url The url to check. + * @return @c true if the url is an absolute url and @c false otherwise. */ - void handleOnParseComplete(GAsyncResult* result, std::shared_ptr playlistInfo); + static bool isURLAbsolute(const std::string& url); /** - * Translates the @c TotemPlParserResult to a @c PlaylistParseResult. + * Creates an absolute url, given a base url and a relative path from that url. For example, if + * "www.awesomewebsite.com/music/test.m3u" was the base url and the relative path was "music.mp3", + * "www.awesomewebsite.com/music/music.mp3" would be returned. * - * @param result The @c TotemPlParserResult of playlist parsing. - * @return the @c PlaylistParseResult + * @param baseURL The base url to add the relative path to. + * @param relativePath The relative path to add to the base url. + * @param [out] absoluteURL The absolute url generated + * @return @c true If everything was successful and @c false otherwise. */ - avsCommon::utils::playlistParser::PlaylistParseResult mapResult(TotemPlParserResult result); + static bool getAbsoluteURLFromRelativePathToURL( + std::string baseURL, + std::string relativePath, + std::string* absoluteURL); /** - * Method that processes the playlist parsing requests in the @c m_playlistInfoQueue + * Used to parse the time length out of a playlist entry metadata line that starts with #EXTINF. + * + * @param line The line to parse. + * @return The time length of the entry or @c PlaylistParserObserverInterface::INVALID_DURATION if the time length + * was unable to be parsed. */ - void parsingLoop(); + static std::chrono::milliseconds parseRuntime(std::string line); - /// The @c PlaylistInfo currently being processed. - std::shared_ptr m_playlistInfo; + /// Used to retrieve content from URLs + std::shared_ptr m_contentFetcherFactory; - /// The thread on which the playlist parse requests are executed. - std::thread m_parserThread; + /// Used to indicate that a shutdown is occurring. + std::atomic m_shuttingDown; /** - * Flag to indicate if a playlist is currently being parsed. @c m_mutex must be acquired before accessing this flag. - */ - bool m_isParsingActive; - - /** - * Flag to indicate whether the playlist parser is shutting down. @c m_mutex must be acquired before accessing this - * flag. + * @c Executor which queues up operations from asynchronous API calls. + * + * @note This declaration needs to come *after* the Executor Thread Variables above so that the thread shuts down + * before the Executor Thread Variables are destroyed. */ - bool m_isShuttingDown; - - /// Condition variable used to wake @c parsingLoop. - std::condition_variable m_wakeParsingLoop; - - /// Queue to which the playlist parsing requests are added. @c m_mutex must be acquired before accessing this queue. - std::deque> m_playlistInfoQueue; - - /// Mutex which serializes access to @c m_isParsingActive, @c m_isShuttingDown, @c m_playlistInfoQueue. - std::mutex m_mutex; + avsCommon::utils::threading::Executor m_executor; }; -} // namespace playlistParser -} // namespace alexaClientSDK - -#endif // ALEXA_CLIENT_SDK_PLAYLIST_PARSER_INCLUDE_PLAYLIST_PARSER_PLAYLIST_PARSER_H_ +} // namespace playlistParser +} // namespace alexaClientSDK +#endif // ALEXA_CLIENT_SDK_PLAYLISTPARSER_INCLUDE_PLAYLISTPARSER_PLAYLISTPARSER_H_ diff --git a/PlaylistParser/include/PlaylistParser/UrlContentToAttachmentConverter.h b/PlaylistParser/include/PlaylistParser/UrlContentToAttachmentConverter.h new file mode 100644 index 0000000000..cef52530a8 --- /dev/null +++ b/PlaylistParser/include/PlaylistParser/UrlContentToAttachmentConverter.h @@ -0,0 +1,204 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_PLAYLISTPARSER_INCLUDE_PLAYLISTPARSER_URLCONTENTTOATTACHMENTCONVERTER_H_ +#define ALEXA_CLIENT_SDK_PLAYLISTPARSER_INCLUDE_PLAYLISTPARSER_URLCONTENTTOATTACHMENTCONVERTER_H_ + +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include "PlaylistParser/PlaylistParser.h" + +namespace alexaClientSDK { +namespace playlistParser { + +/// Class that handles the streaming of urls containing media into @c Attachments. +class UrlContentToAttachmentConverter + : public avsCommon::utils::playlistParser::PlaylistParserObserverInterface + , public avsCommon::utils::RequiresShutdown { +public: + /// Class to observe errors that arise from converting a URL to to an @c Attachment + class ErrorObserverInterface { + public: + /** + * Notification that an error has occurred in the streaming of content. + */ + virtual void onError() = 0; + }; + + /** + * Creates a converter object. Note that calling this function will commence the parsing and streaming of the URL + * into the internal attachment. If a desired start time is specified, this function will attempt to start streaming + * at that offset, based on available metadata if the URL points to a playlist file. If no such information is + * available, streaming will begin from the beginning. It is up to the caller of this function to make a call to + * @c getStartStreamingPoint() to find out the actual offset from which streaming began. + * + * @param contentFetcherFactory Used to create @c HTTPContentFetchers. + * @param url The URL to stream from. + * @param observer An observer to be notified of any errors that may happen during streaming. + * @param startTime The desired time to attempt to start streaming from. Note that this will only succeed + * in cases where the URL points to a playlist with metadata about individual chunks within it. If none are found, + * streaming will begin from the beginning. + * @return A @c std::shared_ptr to the new @c UrlContentToAttachmentConverter object or @c nullptr on failure. + * + * @note This object is intended to be used once. Subsequent calls to @c convertPlaylistToAttachment() will fail. + */ + static std::shared_ptr create( + std::shared_ptr contentFetcherFactory, + const std::string& url, + std::shared_ptr observer, + std::chrono::milliseconds startTime = std::chrono::milliseconds::zero()); + + /** + * Returns the attachment into which the URL content was streamed into. + * + * @return A @c std::shared_ptr of an @c InProcessAttachment or @c nullptr on failure. + */ + std::shared_ptr getAttachment(); + + /** + * Gets the actual point from which streaming began. + * + * @return The point from which streaming began. + */ + std::chrono::milliseconds getStartStreamingPoint(); + + /** + * Gets the initial desired point of steaming. + * + * @return The point from which streaming was desired to begin at. + */ + std::chrono::milliseconds getDesiredStreamingPoint(); + + void doShutdown() override; + +private: + /** + * Constructor. + * + * @param contentFetcherFactory Used to create @c HTTPContentFetcher's. + * @param url The URL to stream from. + * @param observer An observer to be notified of any errors that may happen during streaming. + * @param desiredStartTime The desired time to attempt to start streaming from. Note that this will only succeed + * in cases where the URL points to a playlist with metadata about individual chunks within it. If none are found, + * streaming will begin from the beginning. + */ + UrlContentToAttachmentConverter( + std::shared_ptr contentFetcherFactory, + const std::string& url, + std::shared_ptr observer, + std::chrono::milliseconds startTime); + + void onPlaylistEntryParsed( + int requestId, + std::string url, + avsCommon::utils::playlistParser::PlaylistParseResult parseResult, + std::chrono::milliseconds duration = PlaylistParserObserverInterface::INVALID_DURATION) override; + + /** + * @name Executor Thread Functions + * + * These functions (and only these functions) are called by @c m_executor on a single worker thread. All other + * functions in this class can be called asynchronously, and pass data to the @c Executor thread through parameters + * to lambda functions. No additional synchronization is needed. + */ + /// @{ + + /** + * Downloads the content from the url and writes it into the internal stream. + * + * @return @c true if the content was successfully streamed and written or @c false otherwise. + */ + bool writeUrlContentIntoStream(std::string url); + + /// @} + + /// The initial desired offset from which streaming should begin. + const std::chrono::milliseconds m_desiredStreamPoint; + + /// Used to retrieve content from URLs + std::shared_ptr m_contentFetcherFactory; + + /// Used to parse URLS that point to playlists. + std::shared_ptr m_playlistParser; + + /// The stream that will hold downloaded data. + std::shared_ptr m_stream; + + /// The writer used to write data into the stream. + std::shared_ptr m_streamWriter; + + /// The observer to be notified of errors. + std::shared_ptr m_observer; + + /// Used to serialize access to m_observer. + std::mutex m_mutex; + + /// Flag to indicate if a shutdown is occurring. + std::atomic m_shuttingDown; + + /** + * @name @c onPlaylistEntryParsed Callback Variables + * + * These member variables are only accessed by @c onPlaylistEntryParsed callback functions that is called + * in a single thread in PlaylistParser or after the @c m_playlistParser is shutdown, and do not require any + * synchronization. + */ + /// @{ + /// A promise to fulfill once streaming begins. + std::promise m_startStreamingPointPromise; + + /// A future which will hold the point at which streaming began. + std::shared_future m_startStreamingPointFuture; + + /// A counter to indicate the current running total of durations found in playlist entries. + std::chrono::milliseconds m_runningTotal; + + /// Indicates whether streaming has begun. + bool m_startedStreaming; + /// @} + + /** + * @name Executor Thread Variables + * + * These member variables are only accessed by functions in the @c m_executor worker thread, and do not require any + * synchronization. + */ + /// @{ + /// Indicates whether the stream writer has closed. + bool m_streamWriterClosed; + /// @} + + /** + * @c Executor which queues up operations from asynchronous API calls. + * + * @note This declaration needs to come *after* the Executor Thread Variables above so that the thread shuts down + * before the Executor Thread Variables are destroyed. + */ + avsCommon::utils::threading::Executor m_executor; +}; + +} // namespace playlistParser +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_PLAYLISTPARSER_INCLUDE_PLAYLISTPARSER_URLCONTENTTOATTACHMENTCONVERTER_H_ diff --git a/PlaylistParser/inputs/sample1.asx b/PlaylistParser/inputs/sample1.asx deleted file mode 100644 index a1d092d709..0000000000 --- a/PlaylistParser/inputs/sample1.asx +++ /dev/null @@ -1,10 +0,0 @@ - - - Item 1 - - - - Item 2 - - - diff --git a/PlaylistParser/src/CMakeLists.txt b/PlaylistParser/src/CMakeLists.txt index af4f482b22..f9b8fe5f1e 100644 --- a/PlaylistParser/src/CMakeLists.txt +++ b/PlaylistParser/src/CMakeLists.txt @@ -1,21 +1,12 @@ add_definitions("-DACSDK_LOG_MODULE=PlaylistParser") -if(TOTEM_PLPARSER) - add_library(PlaylistParser SHARED PlaylistParser.cpp) +add_library(PlaylistParser SHARED PlaylistParser.cpp UrlContentToAttachmentConverter.cpp) - target_include_directories(PlaylistParser PUBLIC - "${PlaylistParser_SOURCE_DIR}/include" - ${TOTEM_INCLUDE_DIRS}) +target_include_directories(PlaylistParser PUBLIC + "${PlaylistParser_SOURCE_DIR}/include" + "${ACL_SOURCE_DIR}/include") - target_link_libraries(PlaylistParser ${TOTEM_LDFLAGS} AVSCommon) -else() - add_library(PlaylistParser SHARED DummyPlaylistParser.cpp) - - target_include_directories(PlaylistParser PUBLIC - "${PlaylistParser_SOURCE_DIR}/include") - - target_link_libraries(PlaylistParser AVSCommon) -endif() +target_link_libraries(PlaylistParser AVSCommon) # install target asdk_install() \ No newline at end of file diff --git a/PlaylistParser/src/DummyPlaylistParser.cpp b/PlaylistParser/src/DummyPlaylistParser.cpp deleted file mode 100644 index 8f14e94c25..0000000000 --- a/PlaylistParser/src/DummyPlaylistParser.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - * DummyPlaylistParser.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0/ - * - * or in the "license" file accompanying this file. This file 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 - -#include "PlaylistParser/DummyPlaylistParser.h" - -namespace alexaClientSDK { -namespace playlistParser { - -/// String to identify log entries originating from this file. -static const std::string TAG("DummyPlaylistParser"); - -/** - * Create a LogEntry using this file's TAG and the specified event string. - * - * @param The event string for this @c LogEntry. - */ -#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) - -std::shared_ptr DummyPlaylistParser::create() { - ACSDK_DEBUG9(LX("createCalled")); - auto playlistParser = std::make_shared(); - return playlistParser; -} - -bool DummyPlaylistParser::parsePlaylist(const std::string& url, - std::shared_ptr observer) { - ACSDK_DEBUG9(LX("parsePlaylist").d("url", url)); - - if (url.empty()) { - ACSDK_ERROR(LX("parsePlaylistFailed").d("reason","emptyUrl")); - return false; - } - - if (!observer) { - ACSDK_ERROR(LX("parsePlaylistFailed").d("reason","observerIsNullptr")); - return false; - } - - // An empty queue to be passed to the observer - std::queue emptyUrlQueue; - - observer->onPlaylistParsed( - url, - emptyUrlQueue, - avsCommon::utils::playlistParser::PlaylistParseResult::PARSE_RESULT_UNHANDLED); - - return true; -} - -} // namespace playlistParser -} // namespace alexaClientSDK diff --git a/PlaylistParser/src/PlaylistParser.cpp b/PlaylistParser/src/PlaylistParser.cpp index c90fbc3abf..6c79205338 100644 --- a/PlaylistParser/src/PlaylistParser.cpp +++ b/PlaylistParser/src/PlaylistParser.cpp @@ -1,7 +1,5 @@ /* - * PlaylistParser.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,10 +13,14 @@ * permissions and limitations under the License. */ -#include - #include "PlaylistParser/PlaylistParser.h" +#include +#include + +#include +#include + namespace alexaClientSDK { namespace playlistParser { @@ -32,215 +34,520 @@ static const std::string TAG("PlaylistParser"); */ #define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) -std::unique_ptr PlaylistParser::create() { - ACSDK_DEBUG9(LX("createCalled")); - std::unique_ptr playlistParser(new PlaylistParser()); - return playlistParser; -} +/// The HTML content-type of an M3U playlist. +static const std::string M3U_CONTENT_TYPE = "mpegurl"; -PlaylistParser::~PlaylistParser() { - ACSDK_DEBUG9(LX("destructorCalled")); - { - std::unique_lock lock(m_mutex); - m_isShuttingDown = true; - for (auto info : m_playlistInfoQueue) { - g_signal_handler_disconnect(info->parser, info->playlistStartedHandlerId); - g_signal_handler_disconnect(info->parser, info->entryParsedHandlerId); - info->observer->onPlaylistParsed( - info->playlistUrl, - info->urlQueue, - avsCommon::utils::playlistParser::PlaylistParseResult::PARSE_RESULT_CANCELLED); - } - m_playlistInfoQueue.clear(); - m_playlistInfo = nullptr; - } - m_wakeParsingLoop.notify_one(); - if (m_parserThread.joinable()) { - m_parserThread.join(); - } -} +/// The HTML content-type of a PLS playlist. +static const std::string PLS_CONTENT_TYPE = "scpls"; -bool PlaylistParser::parsePlaylist(const std::string& url, - std::shared_ptr observer) { - ACSDK_DEBUG9(LX("parsePlaylist").d("url", url)); +/// The number of bytes read from the attachment with each read in the read loop. +static const size_t CHUNK_SIZE(1024); - if (url.empty()) { - ACSDK_ERROR(LX("parsePlaylistFailed").d("reason","emptyUrl")); - return false; - } +/// The id of each request. +static int g_id = 0; - if (!observer) { - ACSDK_ERROR(LX("parsePlaylistFailed").d("reason","observerIsNullptr")); - return false; - } +/// The first line of an M3U8 playlist. +static const std::string M3U8_PLAYLIST_HEADER = "#EXTM3U"; - auto playlistInfo = createPlaylistInfo(url, observer); - if (!playlistInfo) { - ACSDK_ERROR(LX("parsePlaylistFailed").d("reason", "cannotCreateNewPlaylistInfo")); - return false; - } +static const std::string EXTINF = "#EXTINF"; - playlistInfo->playlistUrl = url; - playlistInfo->observer = observer; +/** + * A tag present in a live stream playlist that indicates that the next URL points to a playlist. Attributes of this tag + * include information such as bitrate, codecs, and others. + */ +static const std::string EXTSTREAMINF = "#EXT-X-STREAM-INF"; - { - std::lock_guard lock(m_mutex); - m_playlistInfoQueue.push_back(playlistInfo); - m_wakeParsingLoop.notify_one(); - } - return true; -} +/** + * A tag present in a live stream playlist indicating that no more URLs will be added to the playlist on subsequent + * requests. + */ +static const std::string ENDLIST = "#EXT-X-ENDLIST"; -PlaylistParser::PlaylistInfo::PlaylistInfo(TotemPlParser* plParser) - : - parser{plParser}, - playlistStartedHandlerId{0}, - entryParsedHandlerId{0} { -} +/// The first line of a PLS playlist. +static const std::string PLS_PLAYLIST_HEADER = "[playlist]"; +/// The beginning of a line in a PLS file indicating a URL. +static const std::string PLS_FILE = "File"; -PlaylistParser::PlaylistInfo::~PlaylistInfo() { - g_clear_object(&parser); -} +static const std::chrono::milliseconds INVALID_DURATION = + avsCommon::utils::playlistParser::PlaylistParserObserverInterface::INVALID_DURATION; -PlaylistParser::PlaylistParser() - : - m_isParsingActive{false}, - m_isShuttingDown{false} { - m_parserThread = std::thread(&PlaylistParser::parsingLoop, this); +std::unique_ptr PlaylistParser::create( + std::shared_ptr contentFetcherFactory) { + if (!contentFetcherFactory) { + return nullptr; + } + return std::unique_ptr(new PlaylistParser(contentFetcherFactory)); } -std::shared_ptr PlaylistParser::createPlaylistInfo( - const std::string& url, - std::shared_ptr observer) { - ACSDK_DEBUG9(LX("createPlaylistInfo")); - - TotemPlParser* parser = totem_pl_parser_new(); - if (!parser) { - ACSDK_ERROR(LX("createPlaylistInfoFailed").d("reason", "cannotCreateNewParser")); - return nullptr; +int PlaylistParser::parsePlaylist( + std::string url, + std::shared_ptr observer, + std::vector playlistTypesToNotBeParsed) { + if (url.empty()) { + return START_FAILURE; + } + if (!observer) { + return START_FAILURE; } - std::shared_ptr playlistInfo = std::make_shared(parser); + auto id = ++g_id; - g_object_set(parser, "recurse", TRUE, "disable-unsafe", TRUE, "force", TRUE, NULL); + m_executor.submit([this, id, observer, url, playlistTypesToNotBeParsed]() { + doDepthFirstSearch(id, observer, url, playlistTypesToNotBeParsed); + }); + return id; +} - playlistInfo->playlistStartedHandlerId = g_signal_connect(G_OBJECT(parser), "playlist-started", - G_CALLBACK(onPlaylistStarted), this); - if (!playlistInfo->playlistStartedHandlerId) { - ACSDK_ERROR(LX("createPlaylistInfoFailed").d("reason", "cannotConnectPlaylistStartedSignal")); - return nullptr; - } +PlaylistParser::PlaylistParser( + std::shared_ptr contentFetcherFactory) : + RequiresShutdown{"PlaylistParser"}, + m_contentFetcherFactory{contentFetcherFactory}, + m_shuttingDown{false} { +} - playlistInfo->entryParsedHandlerId = g_signal_connect(G_OBJECT(parser), "entry-parsed", - G_CALLBACK(onEntryParsed), this); - if (!playlistInfo->entryParsedHandlerId) { - ACSDK_ERROR(LX("createPlaylistInfoFailed").d("reason", "cannotConnectEntryParsedSignal")); - g_signal_handler_disconnect(playlistInfo->parser, playlistInfo->playlistStartedHandlerId); - return nullptr; +void PlaylistParser::doDepthFirstSearch( + int id, + std::shared_ptr observer, + const std::string& rootUrl, + std::vector playlistTypesToNotBeParsed) { + /* + * A depth first search, as follows: + * 1. Push root to vector. + * 2. While vector isn't empty, pop from front and push children, in the order they appeared, to front of vector. + */ + std::deque urlsToParse; + urlsToParse.push_front({rootUrl, INVALID_DURATION}); + std::string lastUrlParsed; + while (!urlsToParse.empty() && !m_shuttingDown) { + auto urlAndInfo = urlsToParse.front(); + urlsToParse.pop_front(); + if (urlAndInfo.length != INVALID_DURATION) { + // This is a media URL and not a playlist + ACSDK_DEBUG9(LX("foundNonPlaylistURL")); + observer->onPlaylistEntryParsed( + id, + urlAndInfo.url, + urlsToParse.empty() ? avsCommon::utils::playlistParser::PlaylistParseResult::SUCCESS + : avsCommon::utils::playlistParser::PlaylistParseResult::STILL_ONGOING, + urlAndInfo.length); + continue; + } + auto contentFetcher = m_contentFetcherFactory->create(urlAndInfo.url); + auto httpContent = contentFetcher->getContent( + avsCommon::sdkInterfaces::HTTPContentFetcherInterface::FetchOptions::CONTENT_TYPE); + if (!httpContent || !(*httpContent)) { + ACSDK_ERROR(LX("getHTTPContent").d("reason", "badHTTPContentReceived")); + observer->onPlaylistEntryParsed( + id, urlAndInfo.url, avsCommon::utils::playlistParser::PlaylistParseResult::ERROR, urlAndInfo.length); + return; + } + std::string contentType = httpContent->contentType.get(); + ACSDK_DEBUG9(LX("PlaylistParser") + .d("contentType", contentType) + .sensitive("url", urlAndInfo.url) + .d("length", urlAndInfo.length.count())); + std::transform(contentType.begin(), contentType.end(), contentType.begin(), ::tolower); + // Checking the HTML content type to see if the URL is a playlist. + if (contentType.find(M3U_CONTENT_TYPE) != std::string::npos) { + std::string playlistContent; + if (!getContentFromPlaylistUrlIntoString(urlAndInfo.url, &playlistContent)) { + ACSDK_ERROR(LX("failedToRetrieveContent").sensitive("url", urlAndInfo.url)); + observer->onPlaylistEntryParsed( + id, + urlAndInfo.url, + avsCommon::utils::playlistParser::PlaylistParseResult::ERROR, + urlAndInfo.length); + return; + } + // This playlist may either be M3U or M3U8 so some additional parsing is required. + bool isM3U8 = isM3UPlaylistM3U8(playlistContent); + if (isM3U8) { + ACSDK_DEBUG9(LX("isM3U8Playlist").sensitive("url", urlAndInfo.url)); + } else { + ACSDK_DEBUG9(LX("isPlainM3UPlaylist").sensitive("url", urlAndInfo.url)); + } + // TODO: investigate refactoring the two std::finds into a common place + if (std::find( + playlistTypesToNotBeParsed.begin(), + playlistTypesToNotBeParsed.end(), + isM3U8 ? PlaylistType::M3U8 : PlaylistType::M3U) != playlistTypesToNotBeParsed.end()) { + observer->onPlaylistEntryParsed( + id, + urlAndInfo.url, + urlsToParse.empty() ? avsCommon::utils::playlistParser::PlaylistParseResult::SUCCESS + : avsCommon::utils::playlistParser::PlaylistParseResult::STILL_ONGOING, + urlAndInfo.length); + continue; + } + auto M3UContent = parseM3UContent(urlAndInfo.url, playlistContent); + const auto& childrenUrls = M3UContent.childrenUrls; + if (childrenUrls.empty()) { + ACSDK_ERROR(LX("noChildrenURLs")); + observer->onPlaylistEntryParsed( + id, + urlAndInfo.url, + avsCommon::utils::playlistParser::PlaylistParseResult::ERROR, + urlAndInfo.length); + return; + } + ACSDK_DEBUG9((LX("foundChildrenURLsInPlaylist").d("num", childrenUrls.size()))); + if (isM3U8) { + if (M3UContent.streamInfTagPresent) { + // Indicates that this is the Master Playlist and that only one URL should be chosen from here + ACSDK_DEBUG9(LX("encounteredMasterPlaylist").sensitive("url", urlAndInfo.url)); + // Because we don't do any selective choosing based on bitrates or codecs, only push the first URL + // as a default. + urlsToParse.push_front(childrenUrls.front()); + } else { + // lastUrlParsed is set when we actually parse some urls from the playlist - here, it is our first + // pass at this playlist + if (lastUrlParsed.empty()) { + for (auto reverseIt = childrenUrls.rbegin(); reverseIt != childrenUrls.rend(); ++reverseIt) { + urlsToParse.push_front(*reverseIt); + } + lastUrlParsed = childrenUrls.back().url; + } else { + // Setting this to 0 as an intial value so that if we don't see the last URL we parsed in the + // latest pass of the playlist, we stream all the URLs within the playlist as a sort of + // recovery mechanism. This way, if we parse this so far into the future that all the URLs we + // had previously seen are gone, we'll still stream the latest URLs. + int startPointForNewURLsAdded = 0; + for (int i = childrenUrls.size() - 1; i >= 0; --i) { + if (childrenUrls.at(i).url == lastUrlParsed) { + // We need to add the URLs past this point + startPointForNewURLsAdded = i + 1; + } + } + for (int i = childrenUrls.size() - 1; i >= startPointForNewURLsAdded; --i) { + ACSDK_DEBUG9(LX("foundNewURLInLivePlaylist")); + urlsToParse.push_front(childrenUrls.at(i)); + lastUrlParsed = urlsToParse.back().url; + } + } + if (!M3UContent.endlistTagPresent) { + ACSDK_DEBUG9(LX("encounteredLiveHLSPlaylist") + .sensitive("url", urlAndInfo.url) + .d("info", "willRetryURLInFuture")); + /* + * Because this URL represents a live playlist which can have additional chunks added to it, we + * need to make a request to this URL again in the future to continue playback of additional + * chunks that get added. + */ + urlsToParse.push_back(urlAndInfo); + } + } + } else { + for (auto reverseIt = childrenUrls.rbegin(); reverseIt != childrenUrls.rend(); ++reverseIt) { + urlsToParse.push_front(*reverseIt); + } + } + } else if (contentType.find(PLS_CONTENT_TYPE) != std::string::npos) { + ACSDK_DEBUG9(LX("isPLSPlaylist").sensitive("url", urlAndInfo.url)); + /* + * This is for sure a PLS playlist, so if PLS is one of the desired playlist types to not be parsed, then + * notify and return immediately. + */ + if (std::find(playlistTypesToNotBeParsed.begin(), playlistTypesToNotBeParsed.end(), PlaylistType::PLS) != + playlistTypesToNotBeParsed.end()) { + observer->onPlaylistEntryParsed( + id, + urlAndInfo.url, + urlsToParse.empty() ? avsCommon::utils::playlistParser::PlaylistParseResult::SUCCESS + : avsCommon::utils::playlistParser::PlaylistParseResult::STILL_ONGOING, + urlAndInfo.length); + continue; + } + std::string playlistContent; + if (!getContentFromPlaylistUrlIntoString(urlAndInfo.url, &playlistContent)) { + observer->onPlaylistEntryParsed( + id, + urlAndInfo.url, + avsCommon::utils::playlistParser::PlaylistParseResult::ERROR, + urlAndInfo.length); + return; + } + auto childrenUrls = parsePLSContent(urlAndInfo.url, playlistContent); + if (childrenUrls.empty()) { + observer->onPlaylistEntryParsed( + id, + urlAndInfo.url, + avsCommon::utils::playlistParser::PlaylistParseResult::ERROR, + urlAndInfo.length); + return; + } + for (auto reverseIt = childrenUrls.rbegin(); reverseIt != childrenUrls.rend(); ++reverseIt) { + urlsToParse.push_front({*reverseIt, INVALID_DURATION}); + } + } else { + ACSDK_DEBUG9(LX("foundNonPlaylistURL")); + // This is a non-playlist URL or a playlist that we don't support (M3U, M3U8, PLS). + observer->onPlaylistEntryParsed( + id, + urlAndInfo.url, + urlsToParse.empty() ? avsCommon::utils::playlistParser::PlaylistParseResult::SUCCESS + : avsCommon::utils::playlistParser::PlaylistParseResult::STILL_ONGOING, + urlAndInfo.length); + } } +} - return playlistInfo; +bool PlaylistParser::getContentFromPlaylistUrlIntoString(const std::string& url, std::string* content) const { + if (!content) { + ACSDK_ERROR(LX("getContentFromPlaylistUrlIntoStringFailed").d("reason", "nullString")); + return false; + } + auto contentFetcher = m_contentFetcherFactory->create(url); + auto httpContent = + contentFetcher->getContent(avsCommon::sdkInterfaces::HTTPContentFetcherInterface::FetchOptions::ENTIRE_BODY); + if (!httpContent) { + ACSDK_ERROR(LX("getContentFromPlaylistUrlIntoStringFailed").d("reason", "nullHTTPContentReceived")); + return false; + } + if (!(*httpContent)) { + ACSDK_ERROR(LX("getContentFromPlaylistUrlIntoStringFailed").d("reason", "badHTTPContentReceived")); + return false; + } + auto reader = httpContent->dataStream->createReader(avsCommon::utils::sds::ReaderPolicy::BLOCKING); + if (!reader) { + ACSDK_ERROR(LX("getContentFromPlaylistUrlIntoStringFailed").d("reason", "failedToCreateStreamReader")); + return false; + } + avsCommon::avs::attachment::AttachmentReader::ReadStatus readStatus = + avsCommon::avs::attachment::AttachmentReader::ReadStatus::OK; + std::string playlistContent; + std::vector buffer(CHUNK_SIZE, 0); + bool streamClosed = false; + while (!streamClosed) { + auto bytesRead = reader->read(buffer.data(), buffer.size(), &readStatus); + switch (readStatus) { + case avsCommon::avs::attachment::AttachmentReader::ReadStatus::CLOSED: + streamClosed = true; + if (bytesRead == 0) { + break; + } + /* FALL THROUGH - to add any data received even if closed */ + case avsCommon::avs::attachment::AttachmentReader::ReadStatus::OK: + case avsCommon::avs::attachment::AttachmentReader::ReadStatus::OK_WOULDBLOCK: + case avsCommon::avs::attachment::AttachmentReader::ReadStatus::OK_TIMEDOUT: + playlistContent.append(buffer.data(), bytesRead); + break; + case avsCommon::avs::attachment::AttachmentReader::ReadStatus::ERROR_OVERRUN: + case avsCommon::avs::attachment::AttachmentReader::ReadStatus::ERROR_BYTES_LESS_THAN_WORD_SIZE: + case avsCommon::avs::attachment::AttachmentReader::ReadStatus::ERROR_INTERNAL: + ACSDK_ERROR(LX("getContentFromPlaylistUrlIntoStringFailed").d("reason", "readError")); + return false; + } + } + *content = playlistContent; + return true; } -void PlaylistParser::onPlaylistStarted (TotemPlParser *parser, gchar *url, TotemPlParserMetadata *metadata, - gpointer pointer) { - ACSDK_DEBUG9(LX("onPlaylistStarted").d("url", url)); +PlaylistParser::M3UContent PlaylistParser::parseM3UContent(const std::string& playlistURL, const std::string& content) { + /* + * An M3U playlist is formatted such that all metadata information is prepended with a '#' and everything else is a + * URL to play. + */ + M3UContent parsedContent; + std::istringstream iss(content); + std::string line; + UrlAndInfo entry; + entry.length = INVALID_DURATION; + while (std::getline(iss, line)) { + removeCarriageReturnFromLine(&line); + std::istringstream iss2(line); + char firstChar; + iss2 >> firstChar; + if (!iss2) { + continue; + } + if (firstChar == '#') { + if (line.compare(0, EXTINF.length(), EXTINF) == 0) { + entry.length = parseRuntime(line); + } else if (line.compare(0, EXTSTREAMINF.length(), EXTSTREAMINF) == 0) { + parsedContent.streamInfTagPresent = true; + } else if (line.compare(0, ENDLIST.length(), ENDLIST) == 0) { + parsedContent.endlistTagPresent = true; + } + continue; + } + // at this point, "line" is a url + if (isURLAbsolute(line)) { + entry.url = line; + parsedContent.childrenUrls.push_back(entry); + entry.url.clear(); + entry.length = INVALID_DURATION; + } else { + std::string absoluteURL; + if (getAbsoluteURLFromRelativePathToURL(playlistURL, line, &absoluteURL)) { + entry.url = absoluteURL; + parsedContent.childrenUrls.push_back(entry); + entry.url.clear(); + entry.length = INVALID_DURATION; + } + } + } + return parsedContent; } -void PlaylistParser::onEntryParsed(TotemPlParser *parser, gchar *url, TotemPlParserMetadata *metadata, - gpointer pointer) { - ACSDK_DEBUG9(LX("onEntryParsed").d("url", url)); - auto playlistParser = static_cast(pointer); - if (playlistParser && playlistParser->m_playlistInfo){ - playlistParser->handleOnEntryParsed(url, playlistParser->m_playlistInfo); +std::vector PlaylistParser::parsePLSContent(const std::string& playlistURL, const std::string& content) { + /* + * A PLS playlist is formatted such that all URLs to play are prepended with "File'N'=", where 'N' refers to the + * numbered URL. For example "File1=url.com ... File2="anotherurl.com". + */ + std::vector urlsParsed; + std::istringstream iss(content); + std::string line; + while (std::getline(iss, line)) { + removeCarriageReturnFromLine(&line); + if (line.compare(0, PLS_FILE.length(), PLS_FILE) == 0) { + std::string url = line.substr(line.find_first_of('=') + 1); + if (isURLAbsolute(url)) { + urlsParsed.push_back(url); + } else { + std::string absoluteURL; + if (getAbsoluteURLFromRelativePathToURL(playlistURL, url, &absoluteURL)) { + urlsParsed.push_back(absoluteURL); + } + } + } } + return urlsParsed; } -void PlaylistParser::onParseComplete(GObject* parser, GAsyncResult* result, gpointer pointer) { - ACSDK_DEBUG9(LX("onParseComplete")); - auto playlistParser = static_cast(pointer); - if (playlistParser && playlistParser->m_playlistInfo) { - playlistParser->handleOnParseComplete(result, playlistParser->m_playlistInfo); +void PlaylistParser::removeCarriageReturnFromLine(std::string* line) { + if (!line) { + return; + } + if (!line->empty() && (line->back() == '\r' || line->back() == '\n')) { + line->pop_back(); } } -void PlaylistParser::handleParsingLocked(std::unique_lock& lock) { - ACSDK_DEBUG9(LX("handleParsingLocked")); - m_playlistInfo = m_playlistInfoQueue.front(); - m_isParsingActive = true; - lock.unlock(); - totem_pl_parser_parse_async(m_playlistInfo->parser, m_playlistInfo->playlistUrl.c_str(), FALSE, NULL, - onParseComplete, this); +bool PlaylistParser::isURLAbsolute(const std::string& url) { + return url.find("://") != std::string::npos; } -void PlaylistParser::handleOnEntryParsed(gchar *url, std::shared_ptr playlistInfo) { - ACSDK_DEBUG9(LX("handleOnEntryParsed").d("url", url)); - std::lock_guard lock(playlistInfo->mutex); - playlistInfo->urlQueue.push(url); +bool PlaylistParser::getAbsoluteURLFromRelativePathToURL( + std::string baseURL, + std::string relativePath, + std::string* absoluteURL) { + auto positionOfLastSlash = baseURL.find_last_of('/'); + if (positionOfLastSlash == std::string::npos) { + return false; + } else { + if (!absoluteURL) { + return false; + } + baseURL.resize(positionOfLastSlash + 1); + *absoluteURL = baseURL + relativePath; + return true; + } } -void PlaylistParser::handleOnParseComplete(GAsyncResult* result, std::shared_ptr playlistInfo) { - ACSDK_DEBUG9(LX("handleOnParseComplete")); - GError *error = nullptr; - auto parserResult = totem_pl_parser_parse_finish (playlistInfo->parser, result, &error); - std::queue urlQueue; +std::chrono::milliseconds PlaylistParser::parseRuntime(std::string line) { + // #EXTINF:1234.00, blah blah blah have you ever heard the tragedy of darth plagueis the wise? + auto runner = EXTINF.length(); - { - std::lock_guard lock(playlistInfo->mutex); - urlQueue = playlistInfo->urlQueue; + // skip whitespace + while (runner < line.length() && std::isspace(line.at(runner))) { + ++runner; + } + if (runner == line.length()) { + return INVALID_DURATION; } - playlistInfo->observer->onPlaylistParsed( - playlistInfo->playlistUrl, - urlQueue, - mapResult(parserResult)); + // find colon + if (line.at(runner) != ':') { + return INVALID_DURATION; + } + ++runner; - { - std::lock_guard lock(m_mutex); - if (!m_playlistInfoQueue.empty()) { - m_playlistInfoQueue.pop_front(); + // skip whitespace + while (runner < line.length() && std::isspace(line.at(runner))) { + ++runner; + } + if (runner == line.length()) { + return INVALID_DURATION; + } + // from here, we should be reading numbers or a '.' only, so the fractional part of the seconds + auto stringFromHereOnwards = line.substr(runner); + std::istringstream iss(stringFromHereOnwards); + int seconds; + char nextChar; + iss >> seconds; + if (!iss) { + return INVALID_DURATION; + } + if (seconds < 0) { + return INVALID_DURATION; + } + std::chrono::milliseconds duration = std::chrono::seconds(seconds); + iss >> nextChar; + if (!iss) { + return duration; + } + if (nextChar == '.') { + int digitsSoFar = 0; + unsigned int fractionalSeconds = 0; + // we only care about the first 3 (sig figs = millisecond limit) + while (digitsSoFar < 3) { + iss >> nextChar; + if (!iss) { + break; + } + if (!isdigit(nextChar)) { + break; + } + fractionalSeconds *= 10; + fractionalSeconds += (nextChar - '0'); + ++digitsSoFar; + } + // if we read say "1", this is equivalent to 0.1 s or 100 ms + while (digitsSoFar < 3) { + fractionalSeconds *= 10; + ++digitsSoFar; } - m_isParsingActive = false; - m_wakeParsingLoop.notify_one(); + duration += std::chrono::milliseconds(fractionalSeconds); } + do { + if (isdigit(nextChar)) { + continue; + } else { + if (nextChar == ',') { + break; + } else { + return INVALID_DURATION; + } + } + } while (iss >> nextChar); + return duration; } -avsCommon::utils::playlistParser::PlaylistParseResult PlaylistParser::mapResult(TotemPlParserResult result) { - switch(result) { - case TOTEM_PL_PARSER_RESULT_SUCCESS: - ACSDK_DEBUG9(LX("playlistParsingSuccessful")); - return avsCommon::utils::playlistParser::PlaylistParseResult::PARSE_RESULT_SUCCESS; - case TOTEM_PL_PARSER_RESULT_UNHANDLED: - ACSDK_DEBUG9(LX("playlistCouldNotBeHandled")); - return avsCommon::utils::playlistParser::PlaylistParseResult::PARSE_RESULT_UNHANDLED; - case TOTEM_PL_PARSER_RESULT_ERROR: - ACSDK_DEBUG9(LX("playlistParsingError")); - return avsCommon::utils::playlistParser::PlaylistParseResult::PARSE_RESULT_ERROR; - case TOTEM_PL_PARSER_RESULT_IGNORED: - ACSDK_DEBUG9(LX("playlistWasIgnoredDueToSchemeOrMimeType")); - return avsCommon::utils::playlistParser::PlaylistParseResult::PARSE_RESULT_IGNORED; - case TOTEM_PL_PARSER_RESULT_CANCELLED: - ACSDK_DEBUG9(LX("playlistParsingWasCancelledPartWayThrough")); - return avsCommon::utils::playlistParser::PlaylistParseResult::PARSE_RESULT_CANCELLED; - } - return avsCommon::utils::playlistParser::PlaylistParseResult::PARSE_RESULT_ERROR; -} - -void PlaylistParser::parsingLoop() { - auto wake = [this]() { - return (m_isShuttingDown || (!m_playlistInfoQueue.empty() && !m_isParsingActive)); - }; - - while (true) { - std::unique_lock lock(m_mutex); - m_wakeParsingLoop.wait(lock, wake); - if (m_isShuttingDown) { - break; +bool PlaylistParser::isM3UPlaylistM3U8(const std::string& playlistContent) { + std::istringstream iss(playlistContent); + std::string line; + if (std::getline(iss, line)) { + /* + * This isn't the best way of determining whether a playlist is M3U8 or M3U. However, there isn't really a + * better way that I could come up with. The playlist header I'm searching for is "EXTM3U" which indicates that + * this playlist is an "Extended M3U" playlist as opposed to a plain M3U playlist. In my testing, I've found + * that all M3U8 playlists are also extended M3U playlists, but this might not be guaranteed. + */ + if (line.compare(0, M3U8_PLAYLIST_HEADER.length(), M3U8_PLAYLIST_HEADER) == 0) { + return true; + } else { + return false; } - handleParsingLocked(lock); + } else { + return false; } } -} // namespace playlistParser -} // namespace alexaClientSDK +void PlaylistParser::doShutdown() { + m_shuttingDown = true; + m_executor.shutdown(); +} + +} // namespace playlistParser +} // namespace alexaClientSDK diff --git a/PlaylistParser/src/UrlContentToAttachmentConverter.cpp b/PlaylistParser/src/UrlContentToAttachmentConverter.cpp new file mode 100644 index 0000000000..b6c38a959e --- /dev/null +++ b/PlaylistParser/src/UrlContentToAttachmentConverter.cpp @@ -0,0 +1,198 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "PlaylistParser/UrlContentToAttachmentConverter.h" + +#include + +namespace alexaClientSDK { +namespace playlistParser { + +/// String to identify log entries originating from this file. +static const std::string TAG("UrlContentToAttachmentConverter"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +static const std::chrono::milliseconds UNVALID_DURATION = + avsCommon::utils::playlistParser::PlaylistParserObserverInterface::INVALID_DURATION; + +std::shared_ptr UrlContentToAttachmentConverter::create( + std::shared_ptr contentFetcherFactory, + const std::string& url, + std::shared_ptr observer, + std::chrono::milliseconds startTime) { + if (!contentFetcherFactory) { + return nullptr; + } + auto thisSharedPointer = std::shared_ptr( + new UrlContentToAttachmentConverter(contentFetcherFactory, url, observer, startTime)); + auto retVal = thisSharedPointer->m_playlistParser->parsePlaylist(url, thisSharedPointer); + if (0 == retVal) { + thisSharedPointer->shutdown(); + return nullptr; + } + return thisSharedPointer; +} + +std::shared_ptr UrlContentToAttachmentConverter::getAttachment() { + return m_stream; +} + +UrlContentToAttachmentConverter::UrlContentToAttachmentConverter( + std::shared_ptr contentFetcherFactory, + const std::string& url, + std::shared_ptr observer, + std::chrono::milliseconds startTime) : + RequiresShutdown{"UrlContentToAttachmentConverter"}, + m_desiredStreamPoint{startTime}, + m_contentFetcherFactory{contentFetcherFactory}, + m_observer{observer}, + m_shuttingDown{false}, + m_runningTotal{0}, + m_startedStreaming{false}, + m_streamWriterClosed{false} { + m_playlistParser = PlaylistParser::create(m_contentFetcherFactory); + m_startStreamingPointFuture = m_startStreamingPointPromise.get_future(); + m_stream = std::make_shared(url); + m_streamWriter = m_stream->createWriter(avsCommon::utils::sds::WriterPolicy::BLOCKING); +} + +std::chrono::milliseconds UrlContentToAttachmentConverter::getStartStreamingPoint() { + return m_startStreamingPointFuture.get(); +} + +std::chrono::milliseconds UrlContentToAttachmentConverter::getDesiredStreamingPoint() { + return m_desiredStreamPoint; +} + +void UrlContentToAttachmentConverter::onPlaylistEntryParsed( + int requestId, + std::string url, + avsCommon::utils::playlistParser::PlaylistParseResult parseResult, + std::chrono::milliseconds duration) { + if (!m_startedStreaming) { + if (m_desiredStreamPoint.count() > 0) { + if (duration == UNVALID_DURATION) { + m_startStreamingPointPromise.set_value(m_runningTotal); + // Allow to start streaming below + } else if (m_runningTotal + duration <= m_desiredStreamPoint) { + m_runningTotal += duration; + return; + } else { + m_startStreamingPointPromise.set_value(m_runningTotal); + m_runningTotal += duration; + // Allow to begin streaming below + } + } else { + m_startStreamingPointPromise.set_value(std::chrono::seconds::zero()); + } + } + m_startedStreaming = true; + ACSDK_DEBUG3(LX("onPlaylistEntryParsed").d("status", parseResult)); + switch (parseResult) { + case avsCommon::utils::playlistParser::PlaylistParseResult::ERROR: + m_executor.submit([this]() { + ACSDK_DEBUG9(LX("closingWriter")); + m_streamWriter->close(); + m_streamWriterClosed = true; + std::unique_lock lock{m_mutex}; + auto observer = m_observer; + lock.unlock(); + if (observer) { + observer->onError(); + } + }); + break; + case avsCommon::utils::playlistParser::PlaylistParseResult::SUCCESS: + m_executor.submit([this, url]() { + if (!m_streamWriterClosed && !writeUrlContentIntoStream(url)) { + ACSDK_ERROR(LX("writeUrlContentToStreamFailed")); + std::unique_lock lock{m_mutex}; + auto observer = m_observer; + lock.unlock(); + if (observer) { + observer->onError(); + } + } + ACSDK_DEBUG9(LX("closingWriter")); + m_streamWriter->close(); + m_streamWriterClosed = true; + }); + break; + case avsCommon::utils::playlistParser::PlaylistParseResult::STILL_ONGOING: + m_executor.submit([this, url]() { + if (!m_streamWriterClosed && !writeUrlContentIntoStream(url)) { + ACSDK_ERROR(LX("writeUrlContentToStreamFailed").d("info", "closingWriter")); + m_streamWriter->close(); + m_streamWriterClosed = true; + std::unique_lock lock{m_mutex}; + auto observer = m_observer; + lock.unlock(); + if (observer) { + observer->onError(); + } + } + }); + break; + default: + return; + } +} + +bool UrlContentToAttachmentConverter::writeUrlContentIntoStream(std::string url) { + ACSDK_DEBUG9(LX("writeUrlContentIntoStream").d("info", "beginning")); + + auto contentFetcher = m_contentFetcherFactory->create(url); + auto httpContent = contentFetcher->getContent( + avsCommon::sdkInterfaces::HTTPContentFetcherInterface::FetchOptions::ENTIRE_BODY, m_streamWriter); + if (!httpContent) { + ACSDK_ERROR(LX("getContentFailed").d("reason", "nullHTTPContentReceived")); + return false; + } + if (!(*httpContent)) { + ACSDK_ERROR(LX("getContentFailed").d("reason", "badHTTPContentReceived")); + return false; + } + if (m_shuttingDown) { + return false; + } + ACSDK_DEBUG9(LX("writeUrlContentIntoStreamSuccess")); + return true; +} + +void UrlContentToAttachmentConverter::doShutdown() { + m_streamWriter->close(); + + { + std::lock_guard lock{m_mutex}; + m_observer.reset(); + } + m_shuttingDown = true; + m_executor.shutdown(); + m_playlistParser->shutdown(); + m_playlistParser.reset(); + m_streamWriter.reset(); + if (!m_startedStreaming) { + m_startStreamingPointPromise.set_value(std::chrono::seconds::zero()); + } +} + +} // namespace playlistParser +} // namespace alexaClientSDK diff --git a/PlaylistParser/test/CMakeLists.txt b/PlaylistParser/test/CMakeLists.txt index 5e0d863561..585ccedab0 100644 --- a/PlaylistParser/test/CMakeLists.txt +++ b/PlaylistParser/test/CMakeLists.txt @@ -1,13 +1,3 @@ -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) -find_package(Threads ${THREADS_PACKAGE_CONFIG}) - -add_definitions("-DACSDK_LOG_MODULE=playlistParserTest") - -set(INCLUDES "${PlaylistParser_SOURCE_DIR}/include") - -set(LIBRARIES PlaylistParser ${CMAKE_THREAD_LIBS_INIT}) - -set(INPUT_FOLDER "${PlaylistParser_SOURCE_DIR}/inputs") - -discover_unit_tests("${INCLUDES}" "${LIBRARIES}" "${INPUT_FOLDER}") +discover_unit_tests("${PlaylistParser_SOURCE_DIR}/include" PlaylistParser) diff --git a/PlaylistParser/test/PlaylistParserTest.cpp b/PlaylistParser/test/PlaylistParserTest.cpp index c2be0e9fe7..a8f651304a 100644 --- a/PlaylistParser/test/PlaylistParserTest.cpp +++ b/PlaylistParser/test/PlaylistParserTest.cpp @@ -1,7 +1,5 @@ /* - * PlaylistParserTest.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -20,9 +18,12 @@ #include #include #include +#include #include +#include #include +#include #include "PlaylistParser/PlaylistParser.h" namespace alexaClientSDK { @@ -31,221 +32,517 @@ namespace test { using namespace avsCommon::utils::playlistParser; using namespace ::testing; +using namespace avsCommon::sdkInterfaces; +using namespace avsCommon::avs; -/// String to identify log entries originating from this file. -static const std::string TAG("PlaylistParserTest"); +/// Short time out for when callbacks are expected not to occur. +static const auto SHORT_TIMEOUT = std::chrono::milliseconds(50); -/** - * Create a LogEntry using this file's TAG and the specified event string. - * - * @param The event string for this @c LogEntry. - */ -#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) +/// Test M3U url. +static const std::string TEST_M3U_PLAYLIST_URL{"http://sanjayisthecoolest.com/sample.m3u"}; + +static const std::string TEST_M3U_PLAYLIST_CONTENT = + "http://stream.radiotime.com/sample.mp3\n" + "http://live-mp3-128.kexp.org\n"; + +static const size_t TEST_M3U_PLAYLIST_URL_EXPECTED_PARSES = 2; + +static const std::vector TEST_M3U_DURATIONS = {std::chrono::milliseconds{-1}, + std::chrono::milliseconds{-1}, + std::chrono::milliseconds{-1}}; + +static const std::vector TEST_M3U_PLAYLIST_URLS = {"http://stream.radiotime.com/sample.mp3", + "http://live-mp3-128.kexp.org"}; + +/// Test M3U url with relative urls within. +static const std::string TEST_M3U_RELATIVE_PLAYLIST_URL{"http://sanjayisthecoolest.com/sampleRelativeUrls.m3u"}; -/// The path to the input Dir containing the test audio files. -std::string inputsDirPath; +static const std::string TEST_M3U_RELATIVE_PLAYLIST_CONTENT = + "../test.mp3\n" + "test2.aac\n"; -/// The prefix for the file URI scheme. -static const std::string FILE_URI_PREFIX("file://"); +static const size_t TEST_M3U_RELATIVE_PLAYLIST_URL_EXPECTED_PARSES = 2; -/// Test playlist url. -static const std::string TEST_PLAYLIST{"/sample2.m3u"}; +static const std::vector TEST_M3U_RELATIVE_PLAYLIST_URLS = {"http://sanjayisthecoolest.com/../test.mp3", + "http://sanjayisthecoolest.com/test2.aac"}; -/// A test playlist url. One of the links on this playlist redirects to another playlist. -static const std::string TEST_ASX_PLAYLIST{"/sample1.asx"}; +/// A test playlist in HLS format. +static const std::string TEST_HLS_PLAYLIST_URL{"http://sanjayisthecoolest.com/sample.m3u8"}; + +static const std::string TEST_HLS_PLAYLIST_CONTENT = + "#EXTM3U\n" + "#EXT-X-TARGETDURATION:10\n" + "#EXT-X-MEDIA-SEQUENCE:9684358\n" + "#EXTINF:10,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684358.aac\n" + "#EXTINF:10.0,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684359.aac\n" + "#EXTINF:10,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n" + "#EXTINF:10.34,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n" + "#EXTINF:10.344,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n" + "#EXTINF:10.3444,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n" + "#EXTINF:10.002,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n" + "#EXTINF:10.0022,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n" + "#EXTINF : 10.0022,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n" + "#EXTINF : -1,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n" + "#EXTINF:123ms,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n" + "#EXTINF:123 ms,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n" + "#EXTINF:123.0ms,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n" + "#EXTINF:123ms,\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n" + "#EXTINF:123 ,hi\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n" + "#EXT-X-ENDLIST\n"; + +static const size_t TEST_HLS_PLAYLIST_URL_EXPECTED_PARSES = 15; + +static const std::vector TEST_HLS_PLAYLIST_URLS = { + "http://76.74.255.139/bismarck/live/bismarck.mov_9684358.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684359.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac"}; + +static const std::vector TEST_HLS_DURATIONS = {std::chrono::milliseconds{10000}, + std::chrono::milliseconds{10000}, + std::chrono::milliseconds{10000}, + std::chrono::milliseconds{10340}, + std::chrono::milliseconds{10344}, + std::chrono::milliseconds{10344}, + std::chrono::milliseconds{10002}, + std::chrono::milliseconds{10002}, + std::chrono::milliseconds{10002}, + std::chrono::milliseconds{-1}, + std::chrono::milliseconds{-1}, + std::chrono::milliseconds{-1}, + std::chrono::milliseconds{-1}, + std::chrono::milliseconds{-1}, + std::chrono::milliseconds{123000}}; /// A test playlist in PLS format. -static const std::string TEST_PLS_PLAYLIST{"/sample3.pls"}; +static const std::string TEST_PLS_PLAYLIST_URL{"http://sanjayisthecoolest.com/sample3.pls"}; + +static const std::string TEST_PLS_CONTENT = + "[playlist]\n" + "NumberOfEntries=2\n" + "File1=http://stream.radiotime.com/sample.mp3\n" + "Length1=-1\n" + "File2=http://live-mp3-128.kexp.org\n" + "Length2=-1\n"; + +static const size_t TEST_PLS_PLAYLIST_URL_EXPECTED_PARSES = 2; + +static const std::vector TEST_PLS_PLAYLIST_URLS = {"http://stream.radiotime.com/sample.mp3", + "http://live-mp3-128.kexp.org"}; + +static const std::string TEST_HLS_RECURSIVE_PLAYLIST_URL{"recursiveSample.m3u8"}; + +static const std::string TEST_HLS_RECURSIVE_PLAYLIST_CONTENT = TEST_HLS_PLAYLIST_CONTENT + TEST_M3U_PLAYLIST_URL; + +static const size_t TEST_HLS_RECURSIVE_PLAYLIST_URL_EXPECTED_PARSES = + TEST_HLS_PLAYLIST_URL_EXPECTED_PARSES + TEST_M3U_PLAYLIST_URL_EXPECTED_PARSES; + +static const std::vector TEST_HLS_RECURSIVE_PLAYLIST_URLS = { + "http://76.74.255.139/bismarck/live/bismarck.mov_9684358.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684359.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://stream.radiotime.com/sample.mp3", + "http://live-mp3-128.kexp.org"}; /// A test playlist in HLS format. -static const std::string TEST_HLS_PLAYLIST{"/sample.m3u8"}; +static const std::string TEST_HLS_LIVE_STREAM_PLAYLIST_URL{"http://sanjayisthecoolest.com/liveStream.m3u8"}; + +static const std::string TEST_HLS_LIVE_STREAM_PLAYLIST_CONTENT_1 = + "#EXTM3U\n" + "#EXT-X-TARGETDURATION:10\n" + "#EXT-X-MEDIA-SEQUENCE:9684358\n" + "#EXTINF:10,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684358.aac\n" + "#EXTINF:10.0,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684359.aac\n" + "#EXTINF:10,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n"; + +static const std::string TEST_HLS_LIVE_STREAM_PLAYLIST_CONTENT_2 = + "#EXTM3U\n" + "#EXT-X-TARGETDURATION:10\n" + "#EXT-X-MEDIA-SEQUENCE:9684360\n" + "#EXTINF:10,RADIO\n" + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac\n" + "#EXTINF:10,RADIO\n" + "http://sanjay.com/chunk.mp3\n" + "#EXTINF:10,RADIO\n" + "http://sanjay.com/anotherChunk.mp3\n" + "#EXT-X-ENDLIST\n"; + +static const size_t TEST_HLS_LIVE_STREAM_PLAYLIST_EXPECTED_PARSES = 5; + +static const std::vector TEST_HLS_LIVE_STREAM_PLAYLIST_URLS = { + "http://76.74.255.139/bismarck/live/bismarck.mov_9684358.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684359.aac", + "http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", + "http://sanjay.com/chunk.mp3", + "http://sanjay.com/anotherChunk.mp3"}; + +static const std::vector TEST_HLS_LIVE_STREAM_DURATIONS = {std::chrono::milliseconds{10000}, + std::chrono::milliseconds{10000}, + std::chrono::milliseconds{10000}, + std::chrono::milliseconds{10000}, + std::chrono::milliseconds{10000}}; + +static const size_t NUM_PARSES_EXPECTED_WHEN_NO_PARSING = 1; + +static const std::unordered_map urlsToContentTypes{ + // Valid playlist content types + {TEST_M3U_PLAYLIST_URL, "audio/mpegurl"}, + {TEST_M3U_RELATIVE_PLAYLIST_URL, "audio/mpegurl"}, + {TEST_HLS_PLAYLIST_URL, "application/vnd.apple.mpegurl"}, + {TEST_PLS_PLAYLIST_URL, "audio/x-scpls"}, + {TEST_HLS_RECURSIVE_PLAYLIST_URL, "audio/mpegurl"}, + {TEST_HLS_LIVE_STREAM_PLAYLIST_URL, "audio/mpegurl"}, + // Not playlist content types + {"http://stream.radiotime.com/sample.mp3", "audio/mpeg"}, + {"http://live-mp3-128.kexp.org", "audio/mpeg"}, + {"http://76.74.255.139/bismarck/live/bismarck.mov_9684358.aac", "audio/mpeg"}, + {"http://76.74.255.139/bismarck/live/bismarck.mov_9684359.aac", "audio/mpeg"}, + {"http://76.74.255.139/bismarck/live/bismarck.mov_9684360.aac", "audio/mpeg"}, + {"http://stream.radiotime.com/sample.mp3", "audio/mpeg"}, + {"http://live-mp3-128.kexp.org", "audio/mpeg"}, + {"http://sanjayisthecoolest.com/../test.mp3", "audio/mpeg"}, + {"http://sanjayisthecoolest.com/test2.aac", "audio/mpeg"}, + {"http://sanjay.com/chunk.mp3", "audio/mpeg"}, + {"http://sanjay.com/anotherChunk.mp3", "audio/mpeg"}}; + +static std::unordered_map urlsToContent{ + {TEST_M3U_PLAYLIST_URL, TEST_M3U_PLAYLIST_CONTENT}, + {TEST_M3U_RELATIVE_PLAYLIST_URL, TEST_M3U_RELATIVE_PLAYLIST_CONTENT}, + {TEST_HLS_PLAYLIST_URL, TEST_HLS_PLAYLIST_CONTENT}, + {TEST_PLS_PLAYLIST_URL, TEST_PLS_CONTENT}, + {TEST_HLS_RECURSIVE_PLAYLIST_URL, TEST_HLS_RECURSIVE_PLAYLIST_CONTENT}, + {TEST_HLS_LIVE_STREAM_PLAYLIST_URL, TEST_HLS_LIVE_STREAM_PLAYLIST_CONTENT_1}}; + +/// A mock content fetcher +class MockContentFetcher : public avsCommon::sdkInterfaces::HTTPContentFetcherInterface { +public: + MockContentFetcher(const std::string& url) : m_url{url} { + } + + std::unique_ptr getContent( + FetchOptions fetchOption, + std::shared_ptr writer) { + if (fetchOption == FetchOptions::CONTENT_TYPE) { + auto it1 = urlsToContentTypes.find(m_url); + if (it1 == urlsToContentTypes.end()) { + return nullptr; + } else { + std::promise statusPromise; + auto statusFuture = statusPromise.get_future(); + statusPromise.set_value(200); + std::promise contentTypePromise; + auto contentTypeFuture = contentTypePromise.get_future(); + contentTypePromise.set_value(it1->second); + return avsCommon::utils::memory::make_unique( + avsCommon::utils::HTTPContent{std::move(statusFuture), std::move(contentTypeFuture), nullptr}); + } + } else if (fetchOption == FetchOptions::ENTIRE_BODY) { + auto it2 = urlsToContent.find(m_url); + if (it2 == urlsToContent.end()) { + return nullptr; + } else { + static bool liveStreamPlaylistRequested = false; + if (m_url == TEST_HLS_LIVE_STREAM_PLAYLIST_URL) { + if (!liveStreamPlaylistRequested) { + it2->second = TEST_HLS_LIVE_STREAM_PLAYLIST_CONTENT_1; + liveStreamPlaylistRequested = true; + } else { + it2->second = TEST_HLS_LIVE_STREAM_PLAYLIST_CONTENT_2; + } + } + std::promise statusPromise; + auto statusFuture = statusPromise.get_future(); + statusPromise.set_value(200); + std::promise contentTypePromise; + auto contentTypeFuture = contentTypePromise.get_future(); + contentTypePromise.set_value(""); + return avsCommon::utils::memory::make_unique( + avsCommon::utils::HTTPContent{ + std::move(statusFuture), std::move(contentTypeFuture), writeStringIntoAttachment(it2->second)}); + } + } else { + return nullptr; + } + } + +private: + std::shared_ptr writeStringIntoAttachment( + const std::string& string) { + static int id = 0; + std::shared_ptr stream = + std::make_shared(std::to_string(id++)); + if (!stream) { + return nullptr; + } + auto writer = stream->createWriter(); + if (!writer) { + return nullptr; + } + avsCommon::avs::attachment::AttachmentWriter::WriteStatus writeStatus; + writer->write(string.data(), string.size(), &writeStatus); + return stream; + }; + + std::string m_url; +}; + +/// A mock factory that creates mock content fetchers +class MockContentFetcherFactory : public avsCommon::sdkInterfaces::HTTPContentFetcherInterfaceFactoryInterface { + std::unique_ptr create(const std::string& url) { + return avsCommon::utils::memory::make_unique(url); + } +}; /** * Mock AttachmentReader. */ class TestParserObserver : public avsCommon::utils::playlistParser::PlaylistParserObserverInterface { public: - /** - * Creates an instance of the @c TestParserObserver. - * @return An instance of the @c TestParserObserver. - */ - static std::shared_ptr create(); - - /// Destructor - ~TestParserObserver() = default; - - void onPlaylistParsed(std::string playlistUrl, std::queue urls, - avsCommon::utils::playlistParser::PlaylistParseResult parseResult) override; + /// A struct used for bookkeeping of parse results + struct ParseResult { + int requestId; + std::string url; + avsCommon::utils::playlistParser::PlaylistParseResult parseResult; + std::chrono::milliseconds duration; + }; + + void onPlaylistEntryParsed( + int requestId, + std::string url, + avsCommon::utils::playlistParser::PlaylistParseResult parseResult, + std::chrono::milliseconds duration) { + std::lock_guard lock{m_mutex}; + m_parseResults.push_back({requestId, url, parseResult, duration}); + m_callbackOccurred.notify_one(); + } /** - * Waits for playlist parsing to complete. + * Waits for the PlaylistParserObserverInterface##onPlaylistEntryParsed() call N times. * - * @param expectedResult The expected result from parsing the playlist. - * @param duration The duration to wait for playlist parsing to complete. - * @return The result of parsing the playlist. + * @param numCallbacksExpected The number of callbacks expected. + * @param timeout The amount of time to wait for the calls. + * @return The parse results that actually occurred. */ - bool waitForPlaylistParsed(const PlaylistParseResult expectedResult, - const std::chrono::seconds duration = std::chrono::seconds(5)); + std::vector waitForNCallbacks( + size_t numCallbacksExpected, + std::chrono::milliseconds timeout = SHORT_TIMEOUT) { + std::unique_lock lock{m_mutex}; + m_callbackOccurred.wait_for( + lock, timeout, [this, numCallbacksExpected]() { return m_parseResults.size() == numCallbacksExpected; }); + return m_parseResults; + } - /** - * Constructor. - */ - TestParserObserver(); +private: + /// The detection results that have occurred. + std::vector m_parseResults; - /// Mutex to serialize access to @c m_playlistParsed and @c m_parseResult. + /// A mutex to guard against new callbacks. std::mutex m_mutex; - /// Condition Variable to wake @c waitForPlaylistParsed - std::condition_variable m_wakePlaylistParsed; - - /// Flag to indicate when playlist has been parsed. - bool m_playlistParsed; - - /// The result of parsing the playlist. - PlaylistParseResult m_parseResult; - - /// The initial playlist Url. - std::string m_initialUrl; - - /// Urls extracted from the playlist. - std::queue m_urls; + /// A condition variable to wait for callbacks. + std::condition_variable m_callbackOccurred; }; -std::shared_ptr TestParserObserver::create() { - std::shared_ptr playlistObserver(new TestParserObserver); - return playlistObserver; -} - -void TestParserObserver::onPlaylistParsed(std::string playlistUrl, std::queue urls, - avsCommon::utils::playlistParser::PlaylistParseResult parseResult) { - std::lock_guard lock(m_mutex); - m_playlistParsed = true; - m_parseResult = parseResult; - m_urls = urls; - m_initialUrl = playlistUrl; - m_wakePlaylistParsed.notify_one(); -} - -bool TestParserObserver::waitForPlaylistParsed(const PlaylistParseResult expectedResult, - const std::chrono::seconds duration) { - std::unique_lock lock(m_mutex); - if (!m_wakePlaylistParsed.wait_for(lock, duration, [this]() { return m_playlistParsed; } )) - { - return false; +class PlaylistParserTest : public ::testing::Test { +protected: + void SetUp() { + mockFactory = std::make_shared(); + playlistParser = PlaylistParser::create(mockFactory); + testObserver = std::make_shared(); } - return (expectedResult == m_parseResult); -} -TestParserObserver::TestParserObserver() - : - m_playlistParsed{false}, - m_parseResult{PlaylistParseResult::PARSE_RESULT_ERROR} { -} - -class PlaylistParserTest: public ::testing::Test{ -public: - void SetUp() override; + void TearDown() { + playlistParser->shutdown(); + } - void TearDown() override; + /// A mock factory to create mock content fetchers + std::shared_ptr mockFactory; /// Instance of the @c PlaylistParser. - std::shared_ptr m_playlistParser; + std::shared_ptr playlistParser; /// Instance of the @c TestParserObserver. - std::shared_ptr m_parserObserver; - - /// The main event loop. - GMainLoop* m_loop; - - /// The thread on which the main event loop is launched. - std::thread m_mainLoopThread; - + std::shared_ptr testObserver; }; -void PlaylistParserTest::SetUp() { - m_loop = g_main_loop_new(nullptr, false); - ASSERT_TRUE(m_loop); - m_mainLoopThread = std::thread(g_main_loop_run, m_loop); - m_parserObserver = TestParserObserver::create(); - m_playlistParser = PlaylistParser::create(); - ASSERT_TRUE(m_playlistParser); -} - -void PlaylistParserTest::TearDown() { - while (!g_main_loop_is_running(m_loop)){ - std::this_thread::yield(); - } - g_main_loop_quit(m_loop); - if (m_mainLoopThread.joinable()) { - m_mainLoopThread.join(); - } - g_main_loop_unref(m_loop); -} - /** * Tests parsing of an empty playlist. Calls @c parsePlaylist and expects it returns false. */ TEST_F(PlaylistParserTest, testEmptyUrl) { - ASSERT_FALSE(m_playlistParser->parsePlaylist("", m_parserObserver)); + ASSERT_FALSE(playlistParser->parsePlaylist("", testObserver)); } /** * Tests passing a @c nullptr for the observer. */ TEST_F(PlaylistParserTest, testNullObserver) { - ASSERT_FALSE(m_playlistParser->parsePlaylist(FILE_URI_PREFIX + inputsDirPath + TEST_PLAYLIST, nullptr)); + ASSERT_FALSE(playlistParser->parsePlaylist("blah", nullptr)); } /** - * Tests parsing of a single playlist. + * Tests parsing of a simple M3U playlist. * Calls @c parsePlaylist and expects that the result of the parsing is successful. */ TEST_F(PlaylistParserTest, testParsingPlaylist) { - ASSERT_TRUE(m_playlistParser->parsePlaylist(FILE_URI_PREFIX + inputsDirPath + TEST_PLAYLIST, m_parserObserver)); - ASSERT_TRUE(m_parserObserver->waitForPlaylistParsed(PlaylistParseResult::PARSE_RESULT_SUCCESS)); + ASSERT_TRUE(playlistParser->parsePlaylist(TEST_M3U_PLAYLIST_URL, testObserver)); + auto results = testObserver->waitForNCallbacks(TEST_M3U_PLAYLIST_URL_EXPECTED_PARSES); + ASSERT_EQ(TEST_M3U_PLAYLIST_URL_EXPECTED_PARSES, results.size()); + for (unsigned int i = 0; i < results.size(); ++i) { + ASSERT_EQ(results.at(i).url, TEST_M3U_PLAYLIST_URLS.at(i)); + ASSERT_EQ(results.at(i).duration, TEST_M3U_DURATIONS.at(i)); + if (i == results.size() - 1) { + ASSERT_EQ(results.at(i).parseResult, avsCommon::utils::playlistParser::PlaylistParseResult::SUCCESS); + } else { + ASSERT_EQ(results.at(i).parseResult, avsCommon::utils::playlistParser::PlaylistParseResult::STILL_ONGOING); + } + } } /** - * Tests parsing of a PLS playlist. + * Tests parsing of a simple M3U playlist with relative urls. * Calls @c parsePlaylist and expects that the result of the parsing is successful. */ -TEST_F(PlaylistParserTest, testParsingPlsPlaylist) { - ASSERT_TRUE(m_playlistParser->parsePlaylist(FILE_URI_PREFIX + inputsDirPath + TEST_PLS_PLAYLIST, m_parserObserver)); - ASSERT_TRUE(m_parserObserver->waitForPlaylistParsed(PlaylistParseResult::PARSE_RESULT_SUCCESS)); +TEST_F(PlaylistParserTest, testParsingRelativePlaylist) { + ASSERT_TRUE(playlistParser->parsePlaylist(TEST_M3U_RELATIVE_PLAYLIST_URL, testObserver)); + auto results = testObserver->waitForNCallbacks(TEST_M3U_RELATIVE_PLAYLIST_URL_EXPECTED_PARSES); + ASSERT_EQ(TEST_M3U_RELATIVE_PLAYLIST_URL_EXPECTED_PARSES, results.size()); + for (unsigned int i = 0; i < results.size(); ++i) { + ASSERT_EQ(results.at(i).url, TEST_M3U_RELATIVE_PLAYLIST_URLS.at(i)); + if (i == results.size() - 1) { + ASSERT_EQ(results.at(i).parseResult, avsCommon::utils::playlistParser::PlaylistParseResult::SUCCESS); + } else { + ASSERT_EQ(results.at(i).parseResult, avsCommon::utils::playlistParser::PlaylistParseResult::STILL_ONGOING); + } + } } /** - * Tests parsing of multiple playlists one of which is a recursive playlist. - * Calls @c parsePlaylist on the different playlists and expects each of them to be parsed successfully. + * Tests parsing of an extended M3U/HLS playlist. + * Calls @c parsePlaylist and expects that the result of the parsing is successful. */ -TEST_F(PlaylistParserTest, testParsingMultiplePlaylists) { - auto m_parserObserver2 = TestParserObserver::create(); - ASSERT_TRUE(m_playlistParser->parsePlaylist(FILE_URI_PREFIX + inputsDirPath + TEST_PLAYLIST, m_parserObserver)); - ASSERT_TRUE(m_playlistParser->parsePlaylist(FILE_URI_PREFIX + inputsDirPath + TEST_ASX_PLAYLIST, m_parserObserver2)); - ASSERT_TRUE(m_parserObserver->waitForPlaylistParsed((PlaylistParseResult::PARSE_RESULT_SUCCESS))); - ASSERT_TRUE(m_parserObserver2->waitForPlaylistParsed((PlaylistParseResult::PARSE_RESULT_SUCCESS))); +TEST_F(PlaylistParserTest, testParsingHlsPlaylist) { + ASSERT_TRUE(playlistParser->parsePlaylist(TEST_HLS_PLAYLIST_URL, testObserver)); + auto results = testObserver->waitForNCallbacks(TEST_HLS_PLAYLIST_URL_EXPECTED_PARSES); + ASSERT_EQ(TEST_HLS_PLAYLIST_URL_EXPECTED_PARSES, results.size()); + for (unsigned int i = 0; i < results.size(); ++i) { + ASSERT_EQ(results.at(i).url, TEST_HLS_PLAYLIST_URLS.at(i)); + ASSERT_EQ(results.at(i).duration, TEST_HLS_DURATIONS.at(i)); + if (i == results.size() - 1) { + ASSERT_EQ(results.at(i).parseResult, avsCommon::utils::playlistParser::PlaylistParseResult::SUCCESS); + } else { + ASSERT_EQ(results.at(i).parseResult, avsCommon::utils::playlistParser::PlaylistParseResult::STILL_ONGOING); + } + } } /** - * Tests parsing of a single playlist which is a format that cannot be handled. - * Calls @c parsePlaylist and expects that the result of the parsing is an error. + * Tests parsing of a PLS playlist. + * Calls @c parsePlaylist and expects that the result of the parsing is successful. */ -TEST_F(PlaylistParserTest, testUnparsablePlaylist) { - ASSERT_TRUE(m_playlistParser->parsePlaylist(FILE_URI_PREFIX + inputsDirPath + TEST_HLS_PLAYLIST, m_parserObserver)); - ASSERT_FALSE(m_parserObserver->waitForPlaylistParsed((PlaylistParseResult::PARSE_RESULT_SUCCESS))); +TEST_F(PlaylistParserTest, testParsingPlsPlaylist) { + ASSERT_TRUE(playlistParser->parsePlaylist(TEST_PLS_PLAYLIST_URL, testObserver)); + auto results = testObserver->waitForNCallbacks(TEST_PLS_PLAYLIST_URL_EXPECTED_PARSES); + ASSERT_EQ(TEST_PLS_PLAYLIST_URL_EXPECTED_PARSES, results.size()); + for (unsigned int i = 0; i < results.size(); ++i) { + ASSERT_EQ(results.at(i).url, TEST_PLS_PLAYLIST_URLS.at(i)); + if (i == results.size() - 1) { + ASSERT_EQ(results.at(i).parseResult, avsCommon::utils::playlistParser::PlaylistParseResult::SUCCESS); + } else { + ASSERT_EQ(results.at(i).parseResult, avsCommon::utils::playlistParser::PlaylistParseResult::STILL_ONGOING); + } + } } -} // namespace test -} // namespace playlistParser -} // namespace alexaClientSDK +/** + * Tests parsing of a recursive M3U/HLS playlist. + * Calls @c parsePlaylist and expects that the result of the parsing is successful. + */ +TEST_F(PlaylistParserTest, testParsingRecursiveHlsPlaylist) { + ASSERT_TRUE(playlistParser->parsePlaylist(TEST_HLS_RECURSIVE_PLAYLIST_URL, testObserver)); + auto results = testObserver->waitForNCallbacks(TEST_HLS_RECURSIVE_PLAYLIST_URL_EXPECTED_PARSES); + ASSERT_EQ(TEST_HLS_RECURSIVE_PLAYLIST_URL_EXPECTED_PARSES, results.size()); + for (unsigned int i = 0; i < results.size(); ++i) { + ASSERT_EQ(results.at(i).url, TEST_HLS_RECURSIVE_PLAYLIST_URLS.at(i)); + if (i == results.size() - 1) { + ASSERT_EQ(results.at(i).parseResult, avsCommon::utils::playlistParser::PlaylistParseResult::SUCCESS); + } else { + ASSERT_EQ(results.at(i).parseResult, avsCommon::utils::playlistParser::PlaylistParseResult::STILL_ONGOING); + } + } +} -int main (int argc, char** argv) { - ::testing::InitGoogleTest(&argc, argv); +/** + * Tests that the playlist parser skips parsing of unwanted playlist types. + * Calls @c parsePlaylist and expects that the result of the parsing is successful. + */ +TEST_F(PlaylistParserTest, testNotParsingCertainPlaylistTypes) { + ASSERT_TRUE( + playlistParser->parsePlaylist(TEST_HLS_PLAYLIST_URL, testObserver, {PlaylistParser::PlaylistType::M3U8})); + auto results = testObserver->waitForNCallbacks(1); + ASSERT_EQ(NUM_PARSES_EXPECTED_WHEN_NO_PARSING, results.size()); + ASSERT_EQ(results.at(0).url, TEST_HLS_PLAYLIST_URL); +} - if (argc < 2) { - std::cerr << "Usage: PlaylistParserTest " << std::endl; - } else { - alexaClientSDK::playlistParser::test::inputsDirPath = std::string(argv[1]); - return RUN_ALL_TESTS(); +/** + * Tests parsing of a live stream HLS playlist. + * Calls @c parsePlaylist and expects that the result of the parsing is successful. + */ +TEST_F(PlaylistParserTest, testParsingLiveStreamPlaylist) { + ASSERT_TRUE(playlistParser->parsePlaylist(TEST_HLS_LIVE_STREAM_PLAYLIST_URL, testObserver)); + auto results = testObserver->waitForNCallbacks(TEST_HLS_LIVE_STREAM_PLAYLIST_EXPECTED_PARSES); + ASSERT_EQ(TEST_HLS_LIVE_STREAM_PLAYLIST_EXPECTED_PARSES, results.size()); + for (unsigned int i = 0; i < results.size(); ++i) { + ASSERT_EQ(results.at(i).url, TEST_HLS_LIVE_STREAM_PLAYLIST_URLS.at(i)); + ASSERT_EQ(results.at(i).duration, TEST_HLS_LIVE_STREAM_DURATIONS.at(i)); + if (i == results.size() - 1) { + ASSERT_EQ(results.at(i).parseResult, avsCommon::utils::playlistParser::PlaylistParseResult::SUCCESS); + } else { + ASSERT_EQ(results.at(i).parseResult, avsCommon::utils::playlistParser::PlaylistParseResult::STILL_ONGOING); + } } } + +} // namespace test +} // namespace playlistParser +} // namespace alexaClientSDK diff --git a/README.md b/README.md index e80a564add..7a66757dcc 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ +### IMPORTANT NOTE +If you are updating from v1.3 or earlier to v1.6, you must update your `AlexaClientSDKConfig.json` to include a Notifications database. An updated sample is available in the quickstart guides for Ubuntu Linux, Raspberry Pi, macOS, and Generic Linux. + ### What is the Alexa Voice Service (AVS)? The Alexa Voice Service (AVS) enables developers to integrate Alexa directly into their products, bringing the convenience of voice control to any connected device. AVS provides developers with access to a suite of resources to quickly and easily build Alexa-enabled products, including APIs, hardware development kits, software development kits, and documentation. @@ -6,23 +9,33 @@ The Alexa Voice Service (AVS) enables developers to integrate Alexa directly int ### Overview of the AVS Device SDK -The AVS Device SDK provides C++-based (11 or later) libraries that leverage the AVS API to create device software for Alexa-enabled products. It is modular and abstracted, providing components for handling discrete functions such as speech capture, audio processing, and communications, with each component exposing the APIs that you can use and customize for your integration. It also includes a sample app, which demonstrates the interactions with AVS. +The AVS Device SDK provides C++-based (11 or later) libraries that leverage the AVS API to create device software for Alexa-enabled products. It is modular and abstracted, providing components for handling discrete functions such as speech capture, audio processing, and communications, with each component exposing the APIs that you can use and customize for your integration. It also includes a sample app, which demonstrates the interactions with AVS. ### Get Started You can set up the SDK on the following platforms: -* [Linux or macOS](https://github.com/alexa/avs-device-sdk/wiki/Linux-Quick-Start-Guide) -* [Raspberry Pi](https://github.com/alexa/avs-device-sdk/wiki/Raspberry-Pi-Quick-Start-Guide) (Raspbian Jessie) +* Raspberry Pi (Raspbian Stretch) + +1. Download the install script. We recommend running these commands from the home directory (`~/`) or Desktop; however, you can run the script anywhere. + +`wget https://raw.githubusercontent.com/xmos/avs-device-sdk/master/tools/Install/setup.sh` + +2. Run the setup script: + +`sudo bash setup.sh` + +You can also prototype with a third party development kit: +* [XMOS VocalFusion 4-Mic Kit](https://github.com/xmos/vocalfusion-avs-setup) - Learn More [Here](https://developer.amazon.com/alexa-voice-service/dev-kits/xmos-vocal-fusion) Or if you prefer, you can start with our [SDK API Documentation](https://alexa.github.io/avs-device-sdk/). ### Learn More About The AVS Device SDK -[Watch this tutorial](https://youtu.be/F5DixCPJYo8) to learn about the how this SDK works and the set up process. +[Watch this tutorial](https://youtu.be/F5DixCPJYo8) to learn about the how this SDK works and the set up process. [![Tutorial](https://img.youtube.com/vi/F5DixCPJYo8/0.jpg)](https://www.youtube.com/watch?v=F5DixCPJYo8) -### SDK Architecture +### SDK Architecture This diagram illustrates the data flows between components that comprise the AVS Device SDK for C++. @@ -32,8 +45,8 @@ This diagram illustrates the data flows between components that comprise the AVS **Shared Data Stream (SDS)** - A single producer, multi-consumer buffer that allows for the transport of any type of data between a single writer and one or more readers. SDS performs two key tasks: -1. It passes audio data between the audio front end (or Audio Signal Processor), the wake word engine, and the Alexa Communications Library (ACL) before sending to AVS -2. It passes data attachments sent by AVS to specific capability agents via the ACL +1. It passes audio data between the audio front end (or Audio Signal Processor), the wake word engine, and the Alexa Communications Library (ACL) before sending to AVS +2. It passes data attachments sent by AVS to specific capability agents via the ACL SDS is implemented atop a ring buffer on a product-specific memory segment (or user-specified), which allows it to be used for in-process or interprocess communication. Keep in mind, the writer and reader(s) may be in different threads or processes. @@ -61,12 +74,12 @@ Focus management is not specific to Capability Agents or Directive Handlers, and * [SpeechRecognizer](https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/speechrecognizer) - The interface for speech capture. * [SpeechSynthesizer](https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/speechsynthesizer) - The interface for Alexa speech output. * [Alerts](https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/alerts) - The interface for setting, stopping, and deleting timers and alarms. -* [AudioPlayer](https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/audioplayer) - The interface for managing and controlling audio playback. +* [AudioPlayer](https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/audioplayer) - The interface for managing and controlling audio playback. * [Notifications](https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/notifications) - The interface for displaying notifications indicators. * [PlaybackController](https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/playbackcontroller) - The interface for navigating a playback queue via GUI or buttons. * [Speaker](https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/speaker) - The interface for volume control, including mute and unmute. -* [System](https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/system) - The interface for communicating product status/state to AVS. -* [TemplateRuntime](https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/templateruntime) - The interface for rendering visual metadata. +* [System](https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/system) - The interface for communicating product status/state to AVS. +* [TemplateRuntime](https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/templateruntime) - The interface for rendering visual metadata. ### Important Considerations @@ -80,18 +93,27 @@ Focus management is not specific to Capability Agents or Directive Handlers, and ### Release Notes and Known Issues -**Note**: Features, updates, and resolved issues from previous releases are available to view in [CHANGELOG.md](https://github.com/alexa/alexa-client-sdk/blob/master/CHANGELOG.md). - -v1.0.3 released 9/19/2017: - -* **Enhancements** - * Implemented `setOffSet` in `MediaPlayer`. - * [Updated `LoggerUtils.cpp`](https://github.com/alexa/avs-device-sdk/issues/77). - -* **Bug Fixes** - * [Bug fix to address incorrect stop behavior caused when Audio Focus is set to `NONE` and released](https://github.com/alexa/avs-device-sdk/issues/129). - * Bug fix for intermittent failure in `handleMultipleConsecutiveSpeaks`. - * Bug fix for `jsonArrayExist` incorrectly parsing JSON when trying to locate array children. - * Bug fix for ADSL test failures with `sendDirectiveWithoutADialogRequestId`. - * Bug fix for `SpeechSynthesizer` showing the wrong UX state when a burst of `Speak` directives are received. - * Bug fix for recursive loop in `AudioPlayer.Stop`. +**Note**: Feature enhancements, updates, and resolved issues from previous releases are available to view in [CHANGELOG.md](https://github.com/alexa/alexa-client-sdk/blob/master/CHANGELOG.md). + +v1.6.0 released 03/08/2018: + +**Enhancements** +* `rapidJson` is now included with "make install". +* Updated the `TemplateRuntimeObserverInterface` to support clearing of `displayCards`. +* Added Windows SDK support, along with an installation script (MinGW-w64). +* Updated `ContextManager` to ignore context reported by a state provider. +* The `SharedDataStream` object is now associated by playlist, rather than by URL. +* Added the `RegistrationManager` component. Now, when a user logs out all persistent user-specific data is cleared from the SDK. The log out functionality can be exercised in the sample app with the new command: `k`. + +**Bug Fixes** +* [Issue 400](https://github.com/alexa/avs-device-sdk/issues/400) Fixed a bug where the alert reminder did not iterate as intended after loss of network connection. +* [Issue 477](https://github.com/alexa/avs-device-sdk/issues/477) Fixed a bug in which Alexa's weather response was being truncated. +* Fixed an issue in which there were reports of instability related to the Sensory engine. To correct this, the `portAudio` [`suggestedLatency`](https://github.com/alexa/avs-device-sdk/blob/master/Integration/AlexaClientSDKConfig.json#L62) value can now be configured. + +**Known Issues** +* The `ACL` may encounter issues if audio attachments are received but not consumed. +* `SpeechSynthesizerState` currently uses `GAINING_FOCUS` and `LOSING_FOCUS` as a workaround for handling intermediate state. These states may be removed in a future release. +* Music playback doesn't immediately stop when a user barges-in on iHeartRadio. +* The Windows sample app hangs on exit. +* GDB receives a `SIGTRAP` when troubleshooting the Windows sample app. +* `make integration` doesn't work on Windows. Integration tests will need to be run individually. diff --git a/RegistrationManager/CMakeLists.txt b/RegistrationManager/CMakeLists.txt new file mode 100644 index 0000000000..d1cc10e2be --- /dev/null +++ b/RegistrationManager/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) +project(RegistrationManager LANGUAGES CXX) + +include(../build/BuildDefaults.cmake) + +add_subdirectory("src") +acsdk_add_test_subdirectory_if_allowed() \ No newline at end of file diff --git a/RegistrationManager/include/RegistrationManager/CustomerDataHandler.h b/RegistrationManager/include/RegistrationManager/CustomerDataHandler.h new file mode 100644 index 0000000000..d0f3011dd3 --- /dev/null +++ b/RegistrationManager/include/RegistrationManager/CustomerDataHandler.h @@ -0,0 +1,72 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_REGISTRATIONMANAGER_INCLUDE_REGISTRATIONMANAGER_CUSTOMERDATAHANDLER_H_ +#define ALEXA_CLIENT_SDK_REGISTRATIONMANAGER_INCLUDE_REGISTRATIONMANAGER_CUSTOMERDATAHANDLER_H_ + +#include + +namespace alexaClientSDK { +namespace registrationManager { + +class CustomerDataManager; + +/** + * Abstract base class which requires the derived class to implement a @c clearData() function. + * + * For changes in the device registration, it is extremely important to remove any customer data saved in the device. + * Classes that have any data related to the currently logged user must extend this class to guarantee that their data + * will be wiped out during logout. + */ +class CustomerDataHandler { +public: + /** + * Build and register the new object with the CustomerDataManager. + * + * @param customerDataManager The CustomerDataManager that will keep track of the new data handler. + * @note The customerDataManager must have a valid pointer to a manager instance. + */ + CustomerDataHandler(std::shared_ptr customerDataManager); + + /** + * CustomerDataHandler destructor. + * + * Deregister the handler with the CustomerDataManager. + */ + virtual ~CustomerDataHandler(); + + /** + * Reset any internal state that may be associated with a particular user. + * + * @warning Object must succeed in deleting any customer data. + * @warning This method is called while CustomerDataManager is in a locked state. Do not call or wait for any + * CustomerDataManager operation. + */ + virtual void clearData() = 0; + +private: + /** + * Keep a constant pointer to CustomerDataManager so that the CustomerDataHandler object can auto remove itself. + * + * @note The goal is to guarantee that all customerDataHandlers are properly managed. The trade-off is that we have + * to keep a shared_pointer to its manager and the manager has to keep a raw pointer to each handler. + */ + const std::shared_ptr m_dataManager; +}; + +} // namespace registrationManager +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_REGISTRATIONMANAGER_INCLUDE_REGISTRATIONMANAGER_CUSTOMERDATAHANDLER_H_ diff --git a/RegistrationManager/include/RegistrationManager/CustomerDataManager.h b/RegistrationManager/include/RegistrationManager/CustomerDataManager.h new file mode 100644 index 0000000000..0af83079f1 --- /dev/null +++ b/RegistrationManager/include/RegistrationManager/CustomerDataManager.h @@ -0,0 +1,67 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_REGISTRATIONMANAGER_INCLUDE_REGISTRATIONMANAGER_CUSTOMERDATAMANAGER_H_ +#define ALEXA_CLIENT_SDK_REGISTRATIONMANAGER_INCLUDE_REGISTRATIONMANAGER_CUSTOMERDATAMANAGER_H_ + +#include +#include +#include + +#include "RegistrationManager/CustomerDataHandler.h" + +namespace alexaClientSDK { +namespace registrationManager { + +/** + * The @c CustomerDataManager is an object responsible for managing customer data and to ensure that one + * customer will not have access to another customer's data. + */ +class CustomerDataManager { +public: + /** + * CustomerDataManager destructor. + */ + virtual ~CustomerDataManager(); + + /** + * Add object that tracks any sort of customer data. + */ + void addDataHandler(CustomerDataHandler* handler); + + /** + * Remove object that tracks customer data. + */ + void removeDataHandler(CustomerDataHandler* handler); + + /** + * Clear every customer data kept in the device. + * + * @note We do not guarantee the order that the CustomerDataHandlers are called. + */ + void clearData(); + +private: + /// List of all data handlers. + std::unordered_set m_dataHandlers; + + /// Mutex used to synchronize m_dataHandlers variable access. + std::mutex m_mutex; +}; + +} // namespace registrationManager +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_REGISTRATIONMANAGER_INCLUDE_REGISTRATIONMANAGER_CUSTOMERDATAMANAGER_H_ diff --git a/RegistrationManager/include/RegistrationManager/RegistrationManager.h b/RegistrationManager/include/RegistrationManager/RegistrationManager.h new file mode 100644 index 0000000000..8d880a49f3 --- /dev/null +++ b/RegistrationManager/include/RegistrationManager/RegistrationManager.h @@ -0,0 +1,101 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_REGISTRATIONMANAGER_INCLUDE_REGISTRATIONMANAGER_REGISTRATIONMANAGER_H_ +#define ALEXA_CLIENT_SDK_REGISTRATIONMANAGER_INCLUDE_REGISTRATIONMANAGER_REGISTRATIONMANAGER_H_ + +#include +#include + +#include +#include +#include + +#include "RegistrationManager/CustomerDataManager.h" +#include "RegistrationManager/RegistrationObserverInterface.h" + +namespace alexaClientSDK { +namespace registrationManager { + +/** + * The @c RegistrationManager is responsible for logout and deregister actions. + * + * When a user is logging out of the device, the registration manager will close down the AVS connection, + * cancel ongoing directives and delete any customer data saved in the device. + */ +class RegistrationManager { +public: + /** + * RegistrationManager constructor. + * + * @param directiveSequencer Object used to clear directives during logout process. + * @param connectionManager Connection manager must be disabled during customer logout. + * @param dataManager Object that manages customer data, which must be cleared during logout. + */ + RegistrationManager( + std::shared_ptr& directiveSequencer, + std::shared_ptr& connectionManager, + std::shared_ptr dataManager); + + /** + * RegistrationManager destructor + */ + virtual ~RegistrationManager() = default; + + /** + * Log out current customer. This will clear any persistent data. + */ + void logout(); + + /** + * Add a new registration observer object which will get notified after the registration state has changed. + * + * @param observer Object to be notified of any registration event. + */ + void addObserver(std::shared_ptr observer); + + /** + * Remove the given observer object which will no longer get any registration notification. + * + * @param observer Object to be removed from observers set. + */ + void removeObserver(std::shared_ptr observer); + +private: + /** + * Notify all observers that a new registration even has happened. + */ + void notifyObservers(); + + /// Used to cancel all directives. + std::shared_ptr m_directiveSequencer; + + // Used to enable / disable connection during logout to avoid any interruption. + std::shared_ptr m_connectionManager; + + // Used to clear customer data to ensure that a future login will not have access to previous customer data + std::shared_ptr m_dataManager; + + /// Mutex for registration observers. + std::mutex m_observersMutex; + + // Observers + std::unordered_set > m_observers; +}; + +} // namespace registrationManager +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_REGISTRATIONMANAGER_INCLUDE_REGISTRATIONMANAGER_REGISTRATIONMANAGER_H_ diff --git a/RegistrationManager/include/RegistrationManager/RegistrationObserverInterface.h b/RegistrationManager/include/RegistrationManager/RegistrationObserverInterface.h new file mode 100644 index 0000000000..c8ac74b5b6 --- /dev/null +++ b/RegistrationManager/include/RegistrationManager/RegistrationObserverInterface.h @@ -0,0 +1,44 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_REGISTRATIONMANAGER_INCLUDE_REGISTRATIONMANAGER_REGISTRATIONOBSERVERINTERFACE_H_ +#define ALEXA_CLIENT_SDK_REGISTRATIONMANAGER_INCLUDE_REGISTRATIONMANAGER_REGISTRATIONOBSERVERINTERFACE_H_ + +namespace alexaClientSDK { +namespace registrationManager { + +/** + * This interface is used to observe changes to the device registration, such as user logout. + */ +class RegistrationObserverInterface { +public: + /** + * Virtual destructor to assure proper cleanup of derived types. + */ + virtual ~RegistrationObserverInterface() = default; + + /** + * Notification that the current customer has logged out. + * + * @warning This method is called while RegistrationManager is in a locked state. The callback must not block on + * calls to RegistrationManager methods either. + */ + virtual void onLogout() = 0; +}; + +} // namespace registrationManager +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_REGISTRATIONMANAGER_INCLUDE_REGISTRATIONMANAGER_REGISTRATIONOBSERVERINTERFACE_H_ diff --git a/RegistrationManager/src/CMakeLists.txt b/RegistrationManager/src/CMakeLists.txt new file mode 100644 index 0000000000..586a4ba2ce --- /dev/null +++ b/RegistrationManager/src/CMakeLists.txt @@ -0,0 +1,12 @@ +add_definitions("-DACSDK_LOG_MODULE=registrationManager") + +add_library(RegistrationManager SHARED RegistrationManager.cpp CustomerDataManager.cpp CustomerDataHandler.cpp) + +target_include_directories(RegistrationManager PUBLIC + "${RegistrationManager_SOURCE_DIR}/include" + "${ACL_SOURCE_DIR}/include") + +target_link_libraries(RegistrationManager ADSL ACL) + +# install target +asdk_install() diff --git a/RegistrationManager/src/CustomerDataHandler.cpp b/RegistrationManager/src/CustomerDataHandler.cpp new file mode 100644 index 0000000000..c6b37d4a4c --- /dev/null +++ b/RegistrationManager/src/CustomerDataHandler.cpp @@ -0,0 +1,52 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "AVSCommon/Utils/Logger/Logger.h" +#include "RegistrationManager/CustomerDataManager.h" +#include "RegistrationManager/CustomerDataHandler.h" + +/// String to identify log entries originating from this file. +static const std::string TAG("CustomerDataHandler"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +namespace alexaClientSDK { +namespace registrationManager { + +CustomerDataHandler::CustomerDataHandler(std::shared_ptr manager) : m_dataManager{manager} { + if (!manager) { + ACSDK_ERROR( + LX(__func__).m("Failed to register CustomerDataHandler. The customer data manager provided is " + "invalid.")); + } else { + m_dataManager->addDataHandler(this); + } +} + +CustomerDataHandler::~CustomerDataHandler() { + if (!m_dataManager) { + ACSDK_ERROR(LX(__func__).m("Failed to remove CustomerDataHandler. Customer data manager is invalid.")); + } else { + m_dataManager->removeDataHandler(this); + } +} + +} // namespace registrationManager +} // namespace alexaClientSDK diff --git a/RegistrationManager/src/CustomerDataManager.cpp b/RegistrationManager/src/CustomerDataManager.cpp new file mode 100644 index 0000000000..06bea84e24 --- /dev/null +++ b/RegistrationManager/src/CustomerDataManager.cpp @@ -0,0 +1,63 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "RegistrationManager/CustomerDataManager.h" + +#include + +#include "AVSCommon/Utils/Logger/Logger.h" + +/// String to identify log entries originating from this file. +static const std::string TAG("CustomerDataManager"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +namespace alexaClientSDK { +namespace registrationManager { + +void CustomerDataManager::addDataHandler(CustomerDataHandler* handler) { + if (handler == nullptr) { + ACSDK_ERROR(LX("addDataHandlerFailed").m("Cannot register a NULL handler.")); + } else { + std::lock_guard lock{m_mutex}; + m_dataHandlers.insert(handler); + } +} + +void CustomerDataManager::removeDataHandler(CustomerDataHandler* handler) { + std::lock_guard lock{m_mutex}; + m_dataHandlers.erase(handler); +} + +void CustomerDataManager::clearData() { + std::lock_guard lock{m_mutex}; + for (auto handler : m_dataHandlers) { + handler->clearData(); + } +} + +CustomerDataManager::~CustomerDataManager() { + if (!m_dataHandlers.empty()) { + ACSDK_ERROR(LX(__func__).m("All CustomerDataHandlers should be removed before deleting their manager.")); + } +} + +} // namespace registrationManager +} // namespace alexaClientSDK diff --git a/RegistrationManager/src/RegistrationManager.cpp b/RegistrationManager/src/RegistrationManager.cpp new file mode 100644 index 0000000000..72baaba7b9 --- /dev/null +++ b/RegistrationManager/src/RegistrationManager.cpp @@ -0,0 +1,78 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 "RegistrationManager/RegistrationManager.h" + +#include "AVSCommon/Utils/Logger/Logger.h" +#include "RegistrationManager/CustomerDataManager.h" + +/// String to identify log entries originating from this file. +static const std::string TAG("RegistrationManager"); + +/** + * Create a LogEntry using this file's TAG and the specified event string. + * + * @param The event string for this @c LogEntry. + */ +#define LX(event) alexaClientSDK::avsCommon::utils::logger::LogEntry(TAG, event) + +namespace alexaClientSDK { +namespace registrationManager { + +void RegistrationManager::logout() { + ACSDK_DEBUG(LX("logout")); + m_directiveSequencer->disable(); + m_connectionManager->disable(); + m_dataManager->clearData(); + notifyObservers(); +} + +RegistrationManager::RegistrationManager( + std::shared_ptr& directiveSequencer, + std::shared_ptr& connectionManager, + std::shared_ptr dataManager) : + m_directiveSequencer{directiveSequencer}, + m_connectionManager{connectionManager}, + m_dataManager{dataManager} { + if (!directiveSequencer) { + ACSDK_ERROR(LX("RegistrationManagerFailed").m("Invalid directiveSequencer.")); + } + if (!connectionManager) { + ACSDK_ERROR(LX("RegistrationManagerFailed").m("Invalid connectionManager.")); + } + if (!dataManager) { + ACSDK_ERROR(LX("RegistrationManagerFailed").m("Invalid dataManager.")); + } +} + +void RegistrationManager::addObserver(std::shared_ptr observer) { + std::lock_guard lock{m_observersMutex}; + m_observers.insert(observer); +} + +void RegistrationManager::removeObserver(std::shared_ptr observer) { + std::lock_guard lock{m_observersMutex}; + m_observers.erase(observer); +} + +void RegistrationManager::notifyObservers() { + std::lock_guard lock{m_observersMutex}; + for (auto& observer : m_observers) { + observer->onLogout(); + } +} + +} // namespace registrationManager +} // namespace alexaClientSDK diff --git a/RegistrationManager/test/CMakeLists.txt b/RegistrationManager/test/CMakeLists.txt new file mode 100644 index 0000000000..4eff83442c --- /dev/null +++ b/RegistrationManager/test/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.1 FATAL_ERROR) + +set(INCLUDE_PATH + "${RegistrationManager_INCLUDE_DIRS}" + "${AVSCommon_SOURCE_DIR}/AVS/test" + "${AVSCommon_SOURCE_DIR}/SDKInterfaces/test") + +discover_unit_tests("${INCLUDE_PATH}" RegistrationManager) diff --git a/RegistrationManager/test/CustomerDataManagerTest.cpp b/RegistrationManager/test/CustomerDataManagerTest.cpp new file mode 100644 index 0000000000..cb832b64fa --- /dev/null +++ b/RegistrationManager/test/CustomerDataManagerTest.cpp @@ -0,0 +1,79 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +#include + +#include "RegistrationManager/CustomerDataHandler.h" +#include "RegistrationManager/CustomerDataManager.h" + +namespace alexaClientSDK { +namespace registrationManager { +namespace test { + +class MockCustomerDataHandler : public CustomerDataHandler { +public: + MockCustomerDataHandler(std::shared_ptr dataManager) : CustomerDataHandler(dataManager) { + } + MOCK_METHOD0(clearData, void()); +}; + +class CustomerDataManagerTest : public ::testing::Test { +protected: + void SetUp() override { + m_dataManager = std::make_shared(); + } + + void TearDown() override { + m_dataManager.reset(); + } + + std::shared_ptr m_dataManager; +}; + +TEST_F(CustomerDataManagerTest, testEmptyManager) { + m_dataManager->clearData(); +} + +/** + * Test that all data handlers are cleared. + */ +TEST_F(CustomerDataManagerTest, testClearData) { + MockCustomerDataHandler handler1{m_dataManager}; + MockCustomerDataHandler handler2{m_dataManager}; + EXPECT_CALL(handler1, clearData()).Times(1); + EXPECT_CALL(handler2, clearData()).Times(1); + m_dataManager->clearData(); +} + +/** + * Test that removing a data handler does not leave any dangling reference inside @c CustomerDataManager. + */ +TEST_F(CustomerDataManagerTest, testClearDataAfterHandlerDeletion) { + { + // CustomerDataHandler will register and deregister with CustomerDataManager during ctor and dtor, respectively. + MockCustomerDataHandler handler1{m_dataManager}; + EXPECT_CALL(handler1, clearData()).Times(0); + } + MockCustomerDataHandler handler2{m_dataManager}; + EXPECT_CALL(handler2, clearData()).Times(1); + m_dataManager->clearData(); +} + +} // namespace test +} // namespace registrationManager +} // namespace alexaClientSDK diff --git a/RegistrationManager/test/RegistrationManagerTest.cpp b/RegistrationManager/test/RegistrationManagerTest.cpp new file mode 100644 index 0000000000..e17ae46f6e --- /dev/null +++ b/RegistrationManager/test/RegistrationManagerTest.cpp @@ -0,0 +1,134 @@ +/* + * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include +#include + +#include +#include + +#include "AVSCommon/AVS/Attachment/MockAttachmentManager.h" +#include "AVSCommon/AVS/Initialization/AlexaClientSDKInit.h" +#include "AVSCommon/SDKInterfaces/MockExceptionEncounteredSender.h" +#include "AVSCommon/Utils/Memory/Memory.h" +#include "RegistrationManager/RegistrationManager.h" +#include "RegistrationManager/CustomerDataManager.h" + +namespace alexaClientSDK { +namespace registrationManager { +namespace test { + +using avsCommon::utils::memory::make_unique; + +class MockMessageRouter : public acl::MessageRouterInterface { +public: + MockMessageRouter() : MessageRouterInterface{"MockMessageRouter"} { + } + + MOCK_METHOD0(enable, void()); + MOCK_METHOD0(disable, void()); + MOCK_METHOD0(doShutdown, void()); + MOCK_METHOD0(getConnectionStatus, acl::MessageRouterInterface::ConnectionStatus()); + MOCK_METHOD1(sendMessage, void(std::shared_ptr request)); + MOCK_METHOD1(setAVSEndpoint, void(const std::string& avsEndpoint)); + MOCK_METHOD1(setObserver, void(std::shared_ptr observer)); +}; + +class MockRegistrationObserver : public RegistrationObserverInterface { +public: + MOCK_METHOD0(onLogout, void()); +}; + +class MockCustomerDataHandler : public CustomerDataHandler { +public: + MockCustomerDataHandler(std::shared_ptr manager) : CustomerDataHandler{manager} { + } + MOCK_METHOD0(clearData, void()); +}; + +class RegistrationManagerTest : public ::testing::Test { +protected: + void SetUp() override { + avsCommon::avs::initialization::AlexaClientSDKInit::initialize(std::vector()); + + m_messageRouter = std::make_shared(); + EXPECT_CALL(*m_messageRouter, setObserver(testing::_)); + EXPECT_CALL(*m_messageRouter, enable()); + m_avsConnectionManager = acl::AVSConnectionManager::create(m_messageRouter, true); + + auto exceptionEncounteredSender = + std::make_shared(); + m_directiveSequencer = adsl::DirectiveSequencer::create(exceptionEncounteredSender); + + m_dataManager = std::make_shared(); + m_dataHandler = make_unique(m_dataManager); + + m_registrationManager = + make_unique(m_directiveSequencer, m_avsConnectionManager, m_dataManager); + m_registrationObserver = std::make_shared(); + m_registrationManager->addObserver(m_registrationObserver); + } + + void TearDown() override { + if (m_directiveSequencer) { + m_directiveSequencer->shutdown(); + } + } + + /// Connection manager used during logout. + std::shared_ptr m_avsConnectionManager; + /// Mock message router. + std::shared_ptr m_messageRouter; + /// Used to check if logout disabled the directive sequencer. + std::shared_ptr m_directiveSequencer; + /// Mock data handler to ensure that @c clearData() method is called during logout. + std::unique_ptr m_dataHandler; + /// Data manager is used to call @c clearData() on every dataHandler. + std::shared_ptr m_dataManager; + /// Object under test. It is responsible for implementing logout. + std::unique_ptr m_registrationManager; + /// Mock registration observer used to check if RegistrationObserver is notified after logout. + std::shared_ptr m_registrationObserver; +}; + +/** + * Test that logout performsa all the following actions: + * - disable connection manager + * - disable directive sequencer + * - clear data handler's data + * - notify registration observer + */ +TEST_F(RegistrationManagerTest, testLogout) { + EXPECT_CALL(*m_messageRouter, disable()); + EXPECT_CALL(*m_registrationObserver, onLogout()); + EXPECT_CALL(*m_dataHandler, clearData()); + + m_registrationManager->logout(); + + ASSERT_FALSE(m_avsConnectionManager->isEnabled()); + + // Check that directive sequencer is not processing directives + std::string context{"context"}; + auto header = std::make_shared("namespace", "name", "messageid", "requestid"); + auto attachmentManager = std::make_shared(); + std::shared_ptr directive = + avsCommon::avs::AVSDirective::create("unparsed", header, "payload", attachmentManager, context); + ASSERT_FALSE(m_directiveSequencer->onDirective(directive)); +} + +} // namespace test +} // namespace registrationManager +} // namespace alexaClientSDK diff --git a/SampleApp/include/SampleApp/ConnectionObserver.h b/SampleApp/include/SampleApp/ConnectionObserver.h index 7293ccbbfa..b9bec43f71 100644 --- a/SampleApp/include/SampleApp/ConnectionObserver.h +++ b/SampleApp/include/SampleApp/ConnectionObserver.h @@ -1,7 +1,5 @@ /* - * ConnectionObserver.h - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_CONNECTION_OBSERVER_H_ -#define ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_CONNECTION_OBSERVER_H_ +#ifndef ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_CONNECTIONOBSERVER_H_ +#define ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_CONNECTIONOBSERVER_H_ #include #include @@ -31,9 +29,9 @@ namespace sampleApp { /** * A class that observes the status of authorization and connection to AVS. */ -class ConnectionObserver : - public avsCommon::sdkInterfaces::AuthObserverInterface, - public avsCommon::sdkInterfaces::ConnectionStatusObserverInterface{ +class ConnectionObserver + : public avsCommon::sdkInterfaces::AuthObserverInterface + , public avsCommon::sdkInterfaces::ConnectionStatusObserverInterface { public: /** * Constructor. @@ -41,12 +39,12 @@ class ConnectionObserver : ConnectionObserver(); void onAuthStateChange( - avsCommon::sdkInterfaces::AuthObserverInterface::State newState, - avsCommon::sdkInterfaces::AuthObserverInterface::Error error) override; + avsCommon::sdkInterfaces::AuthObserverInterface::State newState, + avsCommon::sdkInterfaces::AuthObserverInterface::Error error) override; void onConnectionStatusChanged( - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override; + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status status, + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::ChangedReason reason) override; /** * Waits for the specified authorization state. @@ -56,8 +54,8 @@ class ConnectionObserver : * @return Whether the state was successfully reached. */ bool waitFor( - const avsCommon::sdkInterfaces::AuthObserverInterface::State authState, - const std::chrono::seconds duration = std::chrono::seconds(20)); + const avsCommon::sdkInterfaces::AuthObserverInterface::State authState, + const std::chrono::seconds duration = std::chrono::seconds(20)); /** * Waits for the specified connection state. @@ -67,9 +65,9 @@ class ConnectionObserver : * @return Whether the state was successfully reached. */ bool waitFor( - const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status connectionStatus, - const std::chrono::seconds duration = std::chrono::seconds(20)); - + const avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status connectionStatus, + const std::chrono::seconds duration = std::chrono::seconds(20)); + private: /// Internal mutex to serialize access to m_connectionStatus and m_authState states. std::mutex m_mutex; @@ -84,7 +82,7 @@ class ConnectionObserver : avsCommon::sdkInterfaces::ConnectionStatusObserverInterface::Status m_connectionStatus; }; -} // namespace sampleApp -} // namespace alexaClientSDK +} // namespace sampleApp +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_CONNECTION_OBSERVER_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_CONNECTIONOBSERVER_H_ diff --git a/SampleApp/include/SampleApp/ConsolePrinter.h b/SampleApp/include/SampleApp/ConsolePrinter.h index ce99b28358..394c10bbb9 100644 --- a/SampleApp/include/SampleApp/ConsolePrinter.h +++ b/SampleApp/include/SampleApp/ConsolePrinter.h @@ -1,7 +1,5 @@ /* - * ConsolePrinter.h - * - * Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,13 +13,14 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_CONSOLE_PRINTER_H_ -#define ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_CONSOLE_PRINTER_H_ +#ifndef ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_CONSOLEPRINTER_H_ +#define ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_CONSOLEPRINTER_H_ #include #include #include +#include namespace alexaClientSDK { namespace sampleApp { @@ -35,33 +34,45 @@ class ConsolePrinter : public avsCommon::utils::logger::Logger { * Constructor. */ ConsolePrinter(); - + /** * Prints a simple message along with an \n. * * @param stringToPrint The string to print. */ - static void simplePrint(const std::string &stringToPrint); + static void simplePrint(const std::string& stringToPrint); /** * Prints a message with a pretty format with a \n after. * * @param stringToPrint The string to print. */ - static void prettyPrint(const std::string &stringToPrint); + static void prettyPrint(const std::string& stringToPrint); void emit( - avsCommon::utils::logger::Level level, - std::chrono::system_clock::time_point time, - const char *threadMoniker, - const char *text) override; - + avsCommon::utils::logger::Level level, + std::chrono::system_clock::time_point time, + const char* threadMoniker, + const char* text) override; + private: /// Used to serialize access to std::cout. - static std::mutex m_mutex; + static std::shared_ptr m_globalMutex; + + /** + * Holding a shared pointer to the mutex + * to make sure the mutex is not already destroyed + * when called from global's destructor + */ + std::shared_ptr m_mutex; + + /** + * Object used to format strings for log messages. + */ + avsCommon::utils::logger::LogStringFormatter m_logFormatter; }; -} // namespace sampleApp -} // namespace alexaClientSDK +} // namespace sampleApp +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_CONSOLE_PRINTER_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_CONSOLEPRINTER_H_ diff --git a/SampleApp/include/SampleApp/GuiRenderer.h b/SampleApp/include/SampleApp/GuiRenderer.h new file mode 100644 index 0000000000..f8510e934f --- /dev/null +++ b/SampleApp/include/SampleApp/GuiRenderer.h @@ -0,0 +1,49 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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. + */ + +#ifndef ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_GUIRENDERER_H_ +#define ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_GUIRENDERER_H_ + +#include + +namespace alexaClientSDK { +namespace sampleApp { + +/** + * A simple class that implements the TemplateRuntimeObserverInterface. Instead of rendering the + * display cards, this class will print out some useful information (e.g. JSON payload) + * when the renderTemplateCard or renderPlayerInfoCard callbacks are called. + * + * @note Due to the payload in RenderTemplate may contain sensitive information, the + * payload will only be printed if @c ACSDK_EMIT_SENSITIVE_LOGS is ON. + */ +class GuiRenderer : public avsCommon::sdkInterfaces::TemplateRuntimeObserverInterface { +public: + /// @name TemplateRuntimeObserverInterface Functions + /// @{ + void renderTemplateCard(const std::string& jsonPayload, avsCommon::avs::FocusState focusState) override; + void clearTemplateCard() override; + void renderPlayerInfoCard( + const std::string& jsonPayload, + TemplateRuntimeObserverInterface::AudioPlayerInfo info, + avsCommon::avs::FocusState focusState) override; + void clearPlayerInfoCard() override; + /// @} +}; + +} // namespace sampleApp +} // namespace alexaClientSDK + +#endif // ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_GUIRENDERER_H_ diff --git a/SampleApp/include/SampleApp/InteractionManager.h b/SampleApp/include/SampleApp/InteractionManager.h index 921505f18c..ac4638546d 100644 --- a/SampleApp/include/SampleApp/InteractionManager.h +++ b/SampleApp/include/SampleApp/InteractionManager.h @@ -1,7 +1,5 @@ /* - * InteractionManager.h - * - * Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,13 +13,19 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_INTERACTION_MANAGER_H_ -#define ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_INTERACTION_MANAGER_H_ +#ifndef ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_INTERACTIONMANAGER_H_ +#define ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_INTERACTIONMANAGER_H_ #include +#include +#include +#include #include +#include +#include +#include "KeywordObserver.h" #include "PortAudioMicrophoneWrapper.h" #include "UIManager.h" @@ -32,19 +36,22 @@ namespace sampleApp { * This class manages most of the user interaction by taking in commands and notifying the DefaultClient and the * userInterface (the view) accordingly. */ -class InteractionManager { +class InteractionManager + : public avsCommon::sdkInterfaces::DialogUXStateObserverInterface + , public avsCommon::utils::RequiresShutdown { public: /** * Constructor. */ InteractionManager( - std::shared_ptr client, - std::shared_ptr micWrapper, - std::shared_ptr userInterface, - capabilityAgents::aip::AudioProvider holdToTalkAudioProvider, - capabilityAgents::aip::AudioProvider tapToTalkAudioProvider, - capabilityAgents::aip::AudioProvider wakeWordAudioProvider = - capabilityAgents::aip::AudioProvider::null()); + std::shared_ptr client, + std::shared_ptr micWrapper, + std::shared_ptr userInterface, + capabilityAgents::aip::AudioProvider holdToTalkAudioProvider, + capabilityAgents::aip::AudioProvider tapToTalkAudioProvider, + capabilityAgents::aip::AudioProvider wakeWordAudioProvider = capabilityAgents::aip::AudioProvider::null(), + std::shared_ptr espProvider = nullptr, + std::shared_ptr espModifier = nullptr); /** * Begins the interaction between the Sample App and the user. This should only be called at startup. @@ -59,7 +66,7 @@ class InteractionManager { /** * Toggles the microphone state if the Sample App was built with wakeword. When the microphone is turned off, the * app enters a privacy mode in which it stops recording audio data from the microphone, thus disabling Alexa waking - * up due to wake word. Note however that hold-to-talk and tap-to-talk modes will still work by recording + * up due to wake word. Note however that hold-to-talk and tap-to-talk modes will still work by recording * microphone data temporarily until a user initiated interacion is complete. If this app was built without wakeword * then this will do nothing as the microphone is already off. */ @@ -80,6 +87,119 @@ class InteractionManager { */ void stopForegroundActivity(); + /** + * Should be called whenever a user presses 'PLAY' for playback. + */ + void playbackPlay(); + + /** + * Should be called whenever a user presses 'PAUSE' for playback. + */ + void playbackPause(); + + /** + * Should be called whenever a user presses 'NEXT' for playback. + */ + void playbackNext(); + + /** + * Should be called whenever a user presses 'PREVIOUS' for playback. + */ + void playbackPrevious(); + + /** + * Should be called whenever a user presses 'SETTINGS' for settings options. + */ + void settings(); + + /** + * Should be called whenever a user requests 'LOCALE' change. + */ + void locale(); + + /** + * Should be called whenever a user presses invalid option. + */ + void errorValue(); + + /** + * Should be called when setting value is selected by the user. + */ + void changeSetting(const std::string& key, const std::string& value); + + /** + * Should be called whenever a users requests 'SPEAKER_CONTROL' for speaker control. + */ + void speakerControl(); + + /** + * Should be called whenever a users requests to set the firmware version. + */ + void firmwareVersionControl(); + + /** + * Update the firmware version. + * + * @param firmwareVersion The new firmware version. + */ + void setFirmwareVersion(avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion); + + /** + * Should be called after a user selects a speaker. + */ + void volumeControl(); + + /** + * Should be called after a user wishes to modify the volume. + */ + void adjustVolume(avsCommon::sdkInterfaces::SpeakerInterface::Type type, int8_t delta); + + /** + * Should be called after a user wishes to set mute. + */ + void setMute(avsCommon::sdkInterfaces::SpeakerInterface::Type type, bool mute); + + /** + * Reset the device and remove any customer data. + */ + void resetDevice(); + + /** + * Prompts the user to confirm the intent to reset the device. + */ + void confirmResetDevice(); + + /** + * Should be called whenever a user requests for ESP control. + */ + void espControl(); + + /** + * Should be called whenever a user requests to toggle the ESP support. + */ + void toggleESPSupport(); + + /** + * Should be called whenever a user requests to set the @c voiceEnergy sent in ReportEchoSpatialPerceptionData + * event. + * + * @param voiceEnergy The voice energy measurement to be set as the ESP measurement. + */ + void setESPVoiceEnergy(const std::string& voiceEnergy); + + /** + * Should be called whenever a user requests set the @c ambientEnergy sent in ReportEchoSpatialPerceptionData + * event. + * + * @param ambientEnergy The ambient energy measurement to be set as the ESP measurement. + */ + void setESPAmbientEnergy(const std::string& ambientEnergy); + + /** + * UXDialogObserverInterface methods + */ + void onDialogUXStateChanged(DialogUXState newState) override; + private: /// The default SDK client. std::shared_ptr m_client; @@ -90,6 +210,12 @@ class InteractionManager { /// The user interface manager. std::shared_ptr m_userInterface; + /// The ESP provider. + std::shared_ptr m_espProvider; + + /// The ESP modifier. + std::shared_ptr m_espModifier; + /// The hold to talk audio provider. capabilityAgents::aip::AudioProvider m_holdToTalkAudioProvider; @@ -112,9 +238,14 @@ class InteractionManager { * An internal executor that performs execution of callable objects passed to it sequentially but asynchronously. */ avsCommon::utils::threading::Executor m_executor; + + /// @name RequiresShutdown Functions + /// @{ + void doShutdown() override; + /// @} }; -} // namespace sampleApp -} // namespace alexaClientSDK +} // namespace sampleApp +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_INTERACTION_MANAGER_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_INTERACTIONMANAGER_H_ diff --git a/SampleApp/include/SampleApp/KeywordObserver.h b/SampleApp/include/SampleApp/KeywordObserver.h index 4f8a18bb36..4be0d50ad9 100644 --- a/SampleApp/include/SampleApp/KeywordObserver.h +++ b/SampleApp/include/SampleApp/KeywordObserver.h @@ -1,7 +1,5 @@ /* - * KeywordObserver.h - * - * Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_KEYWORD_OBSERVER_H_ -#define ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_KEYWORD_OBSERVER_H_ +#ifndef ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_KEYWORDOBSERVER_H_ +#define ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_KEYWORDOBSERVER_H_ #include #include @@ -24,6 +22,7 @@ #include #include #include +#include namespace alexaClientSDK { namespace sampleApp { @@ -38,15 +37,18 @@ class KeywordObserver : public avsCommon::sdkInterfaces::KeyWordObserverInterfac * * @param client The default SDK client. * @param audioProvider The audio provider from which to stream audio data from. + * @parm espProvider The ESP provider to calculate the Ambient and Voice energy from the audio stream. */ KeywordObserver( - std::shared_ptr client, capabilityAgents::aip::AudioProvider audioProvider); + std::shared_ptr client, + capabilityAgents::aip::AudioProvider audioProvider, + std::shared_ptr espProvider = nullptr); void onKeyWordDetected( - std::shared_ptr stream, - std::string keyword, - avsCommon::avs::AudioInputStream::Index beginIndex, - avsCommon::avs::AudioInputStream::Index endIndex) override; + std::shared_ptr stream, + std::string keyword, + avsCommon::avs::AudioInputStream::Index beginIndex, + avsCommon::avs::AudioInputStream::Index endIndex) override; private: /// The default SDK client. @@ -54,9 +56,12 @@ class KeywordObserver : public avsCommon::sdkInterfaces::KeyWordObserverInterfac /// The audio provider. capabilityAgents::aip::AudioProvider m_audioProvider; + + /// Echo Spatial Perception (ESP) provider. + std::shared_ptr m_espProvider; }; -} // namespace sampleApp -} // namespace alexaClientSDK +} // namespace sampleApp +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_KEYWORD_OBSERVER_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_KEYWORDOBSERVER_H_ diff --git a/SampleApp/include/SampleApp/PortAudioMicrophoneWrapper.h b/SampleApp/include/SampleApp/PortAudioMicrophoneWrapper.h index 6aff540046..315c44b0e0 100644 --- a/SampleApp/include/SampleApp/PortAudioMicrophoneWrapper.h +++ b/SampleApp/include/SampleApp/PortAudioMicrophoneWrapper.h @@ -1,7 +1,5 @@ /* - * PortAudioMicrophoneWrapper.h - * - * Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_PORT_AUDIO_MICROPHONE_WRAPPER_H_ -#define ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_PORT_AUDIO_MICROPHONE_WRAPPER_H_ +#ifndef ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_PORTAUDIOMICROPHONEWRAPPER_H_ +#define ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_PORTAUDIOMICROPHONEWRAPPER_H_ #include #include @@ -36,9 +34,8 @@ class PortAudioMicrophoneWrapper { * * @param stream The shared data stream to write to. * @return A unique_ptr to a @c PortAudioMicrophoneWrapper if creation was successful and @c nullptr otherwise. - */ - static std::unique_ptr create( - std::shared_ptr stream); + */ + static std::unique_ptr create(std::shared_ptr stream); /** * Stops streaming from the microphone. @@ -62,14 +59,14 @@ class PortAudioMicrophoneWrapper { private: /** * Constructor. - * + * * @param stream The shared data stream to write to. */ PortAudioMicrophoneWrapper(std::shared_ptr stream); /** * The callback that PortAudio will issue when audio is avaiable to read. - * + * * @param inputBuffer The temporary buffer that microphone audio data will be available in. * @param outputBuffer Not used here. * @param numSamples The number of samples available to consume. @@ -79,16 +76,25 @@ class PortAudioMicrophoneWrapper { * @return A PortAudio code that will indicate how PortAudio should continue. */ static int PortAudioCallback( - const void* inputBuffer, - void* outputBuffer, - unsigned long numSamples, - const PaStreamCallbackTimeInfo* timeInfo, - PaStreamCallbackFlags statusFlags, - void* userData); + const void* inputBuffer, + void* outputBuffer, + unsigned long numSamples, + const PaStreamCallbackTimeInfo* timeInfo, + PaStreamCallbackFlags statusFlags, + void* userData); /// Initializes PortAudio bool initialize(); + /** + * Get the optional config parameter from @c AlexaClientSDKConfig.json + * for setting the PortAudio stream's suggested latency. + * + * @param[out] suggestedLatency The latency as it is configured in the file. + * @return @c true if the suggestedLatency is defined in the config file, @c false otherwise. + */ + bool getConfigSuggestedLatency(PaTime& suggestedLatency); + /// The stream of audio data. const std::shared_ptr m_audioInputStream; @@ -99,13 +105,13 @@ class PortAudioMicrophoneWrapper { PaStream* m_paStream; /** - * A lock to seralize access to startStreamingMicrophoneData() and stopStreamingMicrophoneData() between different + * A lock to seralize access to startStreamingMicrophoneData() and stopStreamingMicrophoneData() between different * threads. */ std::mutex m_mutex; }; -} // namespace sampleApp -} // namespace alexaClientSDK +} // namespace sampleApp +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_PORT_AUDIO_MICROPHONE_WRAPPER_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_PORTAUDIOMICROPHONEWRAPPER_H_ diff --git a/SampleApp/include/SampleApp/SampleApplication.h b/SampleApp/include/SampleApp/SampleApplication.h index e2fb838e97..905aaa8848 100644 --- a/SampleApp/include/SampleApp/SampleApplication.h +++ b/SampleApp/include/SampleApp/SampleApplication.h @@ -1,7 +1,5 @@ /* - * SampleApplication.h - * - * Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,11 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_SAMPLE_APPLICATION_H_ -#define ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_SAMPLE_APPLICATION_H_ +#ifndef ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_SAMPLEAPPLICATION_H_ +#define ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_SAMPLEAPPLICATION_H_ + +#include +#include #include "ConsolePrinter.h" #include "UserInputManager.h" @@ -24,8 +25,8 @@ #ifdef KWD #include #endif - -#include +#include +#include namespace alexaClientSDK { namespace sampleApp { @@ -43,13 +44,77 @@ class SampleApplication { * @return A new @c SampleApplication, or @c nullptr if the operation failed. */ static std::unique_ptr create( - const std::string& pathToConfig, - const std::string& pathToInputFolder, - const std::string& logLevel = ""); + const std::string& pathToConfig, + const std::string& pathToInputFolder, + const std::string& logLevel = ""); /// Runs the application, blocking until the user asks the application to quit. void run(); + /// Destructor which manages the @c SampleApplication shutdown sequence. + ~SampleApplication(); + + /** + * Method to create mediaPlayers for the optional music provider adapters plugged into the SDK. + * + * @param httpContentFetcherFactory The HTTPContentFetcherFactory to be used while creating the mediaPlayers. + * @param additionalSpeakers The speakerInterface to add the created mediaPlayer. + * @return @c true if the mediaPlayer of all the registered adapters could be created @c false otherwise. + */ + bool createMediaPlayersForAdapters( + std::shared_ptr httpContentFetcherFactory, + std::vector>& additionalSpeakers); + + /** + * Instances of this class register ExternalMediaAdapters. Each adapter registers itself by instantiating + * a static instance of the below class supplying their business name and creator method. + */ + class AdapterRegistration { + public: + /** + * Register an @c ExternalMediaAdapter for use by @c ExternalMediaPlayer. + * + * @param playerId The @c playerId identifying the @c ExternalMediaAdapter to register. + * @param createFunction The function to use to create instances of the specified @c ExternalMediaAdapter. + */ + AdapterRegistration( + const std::string& playerId, + capabilityAgents::externalMediaPlayer::ExternalMediaPlayer::AdapterCreateFunction createFunction); + }; + + /** + * Signature of functions to create a MediaPlayer. + * + * @param httpContentFetcherFactory The HTTPContentFetcherFactory to be used while creating the mediaPlayers. + * @param type The type of the SpeakerInterface. + * @param name The name of the MediaPlayer instance. + * @return Return shared pointer to the created MediaPlayer instance. + */ + using MediaPlayerCreateFunction = std::shared_ptr (*)( + std::shared_ptr contentFetcherFactory, + avsCommon::sdkInterfaces::SpeakerInterface::Type type, + std::string name); + + /** + * Instances of this class register MediaPlayers to be created. Each third-party adapter registers a mediaPlayer + * for itself by instantiating a static instance of the below class supplying their business name, speaker interface + * type and creator method. + */ + class MediaPlayerRegistration { + public: + /** + * Register a @c MediaPlayer for use by a music provider adapter. + * + * @param playerId The @c playerId identifying the @c ExternalMediaAdapter to register. + * @speakerType The SpeakerType of the mediaPlayer to be created. + * @param createFunction The function to use to create instances of the mediaPlayer to use for the player. + */ + MediaPlayerRegistration( + const std::string& playerId, + avsCommon::sdkInterfaces::SpeakerInterface::Type speakerType, + MediaPlayerCreateFunction createFunction); + }; + private: /** * Initialize a SampleApplication. @@ -60,21 +125,46 @@ class SampleApplication { * logging level will be used. * @return @c true if initialization succeeded, else @c false. */ - bool initialize( - const std::string& pathToConfig, - const std::string& pathToInputFolder, - const std::string& logLevel); + bool initialize(const std::string& pathToConfig, const std::string& pathToInputFolder, const std::string& logLevel); /// The @c UserInputManager which controls the client. std::unique_ptr m_userInputManager; + /// The map of the adapters and their mediaPlayers. + std::unordered_map> + m_externalMusicProviderMediaPlayersMap; + + /// The vector of mediaPlayers for the adapters. + std::vector> m_adapterMediaPlayers; + + /// The @c MediaPlayer used by @c SpeechSynthesizer. + std::shared_ptr m_speakMediaPlayer; + + /// The @c MediaPlayer used by @c AudioPlayer. + std::shared_ptr m_audioMediaPlayer; + + /// The @c MediaPlayer used by @c Alerts. + std::shared_ptr m_alertsMediaPlayer; + + /// The @c MediaPlayer used by @c NotificationsCapabilityAgent. + std::shared_ptr m_notificationsMediaPlayer; + + using SpeakerTypeAndCreateFunc = + std::pair; + + /// The singleton map from @c playerId to @c MediaPlayerCreateFunction. + static std::unordered_map m_playerToMediaPlayerMap; + + /// The singleton map from @c playerId to @c ExternalMediaAdapter creation functions. + static capabilityAgents::externalMediaPlayer::ExternalMediaPlayer::AdapterCreationMap m_adapterToCreateFuncMap; + #ifdef KWD /// The Wakeword Detector which can wake up the client using audio input. std::unique_ptr m_keywordDetector; #endif }; -} // namespace sampleApp -} // namespace alexaClientSDK +} // namespace sampleApp +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_SAMPLE_APPLICATION_H_ +#endif // ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_SAMPLEAPPLICATION_H_ diff --git a/SampleApp/include/SampleApp/UIManager.h b/SampleApp/include/SampleApp/UIManager.h index ec123f0384..1977eeabe9 100644 --- a/SampleApp/include/SampleApp/UIManager.h +++ b/SampleApp/include/SampleApp/UIManager.h @@ -1,7 +1,5 @@ /* - * UIManager.h - * - * Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,12 +13,16 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_UI_MANAGER_H_ -#define ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_UI_MANAGER_H_ +#ifndef ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_UIMANAGER_H_ +#define ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_UIMANAGER_H_ #include #include #include +#include +#include +#include +#include #include namespace alexaClientSDK { @@ -30,14 +32,32 @@ namespace sampleApp { * This class manages the states that the user will see when interacting with the Sample Application. For now, it simply * prints states to the screen. */ -class UIManager : - public avsCommon::sdkInterfaces::DialogUXStateObserverInterface, - public avsCommon::sdkInterfaces::ConnectionStatusObserverInterface { +class UIManager + : public avsCommon::sdkInterfaces::DialogUXStateObserverInterface + , public avsCommon::sdkInterfaces::ConnectionStatusObserverInterface + , public avsCommon::sdkInterfaces::SingleSettingObserverInterface + , public avsCommon::sdkInterfaces::SpeakerManagerObserverInterface + , public avsCommon::sdkInterfaces::NotificationsObserverInterface { public: void onDialogUXStateChanged(DialogUXState state) override; void onConnectionStatusChanged(const Status status, const ChangedReason reason) override; + void onSettingChanged(const std::string& key, const std::string& value) override; + + // @name SpeakerManagerObserverInterface Functions + /// @{ + void onSpeakerSettingsChanged( + const avsCommon::sdkInterfaces::SpeakerManagerObserverInterface::Source& source, + const avsCommon::sdkInterfaces::SpeakerInterface::Type& type, + const avsCommon::sdkInterfaces::SpeakerInterface::SpeakerSettings& settings) override; + /// } + + // @name NotificationsObserverInterface Functions + /// @{ + void onSetIndicator(avsCommon::avs::IndicatorState state) override; + /// } + /** * Prints the welcome screen. */ @@ -48,6 +68,41 @@ class UIManager : */ void printHelpScreen(); + /** + * Prints the Settings Options screen. + */ + void printSettingsScreen(); + + /** + * Prints the Locale Options screen. + */ + void printLocaleScreen(); + + /** + * Prints the Speaker Control Options screen. This prompts the user to select a @c SpeakerInterface::Type to modify. + */ + void printSpeakerControlScreen(); + + /** + * Prints the Firmware Version Control screen. This prompts the user to enter a positive decimal integer. + */ + void printFirmwareVersionControlScreen(); + + /** + * Prints the Volume Control Options screen. This gives the user the possible volume control options. + */ + void printVolumeControlScreen(); + + /** + * Prints the ESP Control Options screen. This gives the user the possible ESP control options. + */ + void printESPControlScreen(bool support, const std::string& voiceEnergy, const std::string& ambientEnergy); + + /** + * Prints the Error Message for Wrong Input. + */ + void printErrorScreen(); + /** * Notifies the user that the microphone is off. */ @@ -58,13 +113,33 @@ class UIManager : */ void microphoneOn(); + /** + * Prints a warning that the customer still has to manually deregister the device. + */ + void printResetWarning(); + + /** + * Prints a confirmation message prompting the user to confirm their intent. + */ + void printResetConfirmation(); + + /** + * Prints an error message while trying to configure ESP in a device where ESP is not supported. + */ + void printESPNotSupported(); + + /** + * Prints an error message while trying to override ESP Data in a device that do not support manual override. + */ + void printESPDataOverrideNotSupported(); + private: /** * Prints the current state of Alexa after checking what the appropriate message to display is based on the current * component states. This should only be used within the internal executor. */ void printState(); - + /// The current dialog UX state of the SDK DialogUXState m_dialogState; @@ -75,7 +150,7 @@ class UIManager : avsCommon::utils::threading::Executor m_executor; }; -} // namespace sampleApp -} // namespace alexaClientSDK +} // namespace sampleApp +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_UI_MANAGER_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_UIMANAGER_H_ diff --git a/SampleApp/include/SampleApp/UserInputManager.h b/SampleApp/include/SampleApp/UserInputManager.h index e7bf7ad7c8..2a0538c7dd 100644 --- a/SampleApp/include/SampleApp/UserInputManager.h +++ b/SampleApp/include/SampleApp/UserInputManager.h @@ -1,7 +1,5 @@ /* - * UserInputManager.h - * - * Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,8 @@ * permissions and limitations under the License. */ -#ifndef ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_USER_INPUT_MANAGER_H_ -#define ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_USER_INPUT_MANAGER_H_ +#ifndef ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_USERINPUTMANAGER_H_ +#define ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_USERINPUTMANAGER_H_ #include @@ -51,7 +49,7 @@ class UserInputManager { std::shared_ptr m_interactionManager; }; -} // namespace sampleApp -} // namespace alexaClientSDK +} // namespace sampleApp +} // namespace alexaClientSDK -#endif // ALEXA_CLIENT_SDK_SAMPLE_APP_INCLUDE_SAMPLE_APP_USER_INPUT_MANAGER_H_ \ No newline at end of file +#endif // ALEXA_CLIENT_SDK_SAMPLEAPP_INCLUDE_SAMPLEAPP_USERINPUTMANAGER_H_ diff --git a/SampleApp/src/CMakeLists.txt b/SampleApp/src/CMakeLists.txt index 2c1ab03cfa..f5170a185d 100644 --- a/SampleApp/src/CMakeLists.txt +++ b/SampleApp/src/CMakeLists.txt @@ -1,24 +1,38 @@ -add_executable(SampleApp - main.cpp - PortAudioMicrophoneWrapper.cpp - InteractionManager.cpp - UserInputManager.cpp +set(SampleApp_SOURCES) +list(APPEND SampleApp_SOURCES + ConnectionObserver.cpp ConsolePrinter.cpp - UIManager.cpp + GuiRenderer.cpp + InteractionManager.cpp KeywordObserver.cpp - ConnectionObserver.cpp - SampleApplication.cpp) + PortAudioMicrophoneWrapper.cpp + UIManager.cpp + UserInputManager.cpp + SampleApplication.cpp + main.cpp) + +IF (HAS_EXTERNAL_MEDIA_PLAYER_ADAPTERS) + file(GLOB_RECURSE SRC_FILE ${CMAKE_CURRENT_SOURCE_DIR}/ExternalMediaAdapterRegistration/*.cpp) + foreach(myfile ${SRC_FILE}) + list(APPEND SampleApp_SOURCES ${myfile}) + endforeach(myfile) +ENDIF() + +add_executable(SampleApp ${SampleApp_SOURCES}) target_include_directories(SampleApp PUBLIC "${SampleApp_SOURCE_DIR}/include" "${MediaPlayer_SOURCE_DIR}/include" - "${DefaultClient_SOURCE_DIR}/include" + "${AudioResources_SOURCE_DIR}/include" + "${RegistrationManager_SOURCE_DIR}/include" + "${ESP_SOURCE_DIR}/include" "${PORTAUDIO_INCLUDE_DIR}") target_link_libraries(SampleApp DefaultClient - AuthDelegate - MediaPlayer + AuthDelegate + MediaPlayer + ESP "${PORTAUDIO_LIB_PATH}") if(KITTAI_KEY_WORD_DETECTOR) @@ -39,7 +53,6 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") "-framework Carbon") elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") target_link_libraries(SampleApp - rt m pthread asound) -elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows") - message(FATAL_ERROR "Windows is unsupported at the moment") + rt m pthread asound) endif() + diff --git a/SampleApp/src/ConnectionObserver.cpp b/SampleApp/src/ConnectionObserver.cpp index 128e7c73ba..0eeeb54bfe 100644 --- a/SampleApp/src/ConnectionObserver.cpp +++ b/SampleApp/src/ConnectionObserver.cpp @@ -1,7 +1,5 @@ /* - * ConnectionObserver.cpp - * - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -24,7 +22,7 @@ using namespace avsCommon::sdkInterfaces; ConnectionObserver::ConnectionObserver() : m_authState(AuthObserverInterface::State::UNINITIALIZED), - m_connectionStatus(ConnectionStatusObserverInterface::Status::DISCONNECTED) { + m_connectionStatus(ConnectionStatusObserverInterface::Status::DISCONNECTED) { } void ConnectionObserver::onAuthStateChange(AuthObserverInterface::State newState, AuthObserverInterface::Error error) { @@ -34,27 +32,25 @@ void ConnectionObserver::onAuthStateChange(AuthObserverInterface::State newState } void ConnectionObserver::onConnectionStatusChanged( - const ConnectionStatusObserverInterface::Status status, - const ConnectionStatusObserverInterface::ChangedReason reason) { + const ConnectionStatusObserverInterface::Status status, + const ConnectionStatusObserverInterface::ChangedReason reason) { std::lock_guard lock{m_mutex}; m_connectionStatus = status; - m_trigger.notify_all(); + m_trigger.notify_all(); } bool ConnectionObserver::waitFor(const AuthObserverInterface::State authState, const std::chrono::seconds duration) { std::unique_lock lock(m_mutex); - return m_trigger.wait_for(lock, duration, [this, authState]() { - return authState == m_authState; - }); + return m_trigger.wait_for(lock, duration, [this, authState]() { return authState == m_authState; }); } bool ConnectionObserver::waitFor( - const ConnectionStatusObserverInterface::Status connectionStatus, const std::chrono::seconds duration) { + const ConnectionStatusObserverInterface::Status connectionStatus, + const std::chrono::seconds duration) { std::unique_lock lock(m_mutex); - return m_trigger.wait_for(lock, duration, [this, connectionStatus]() { - return connectionStatus == m_connectionStatus; - }); + return m_trigger.wait_for( + lock, duration, [this, connectionStatus]() { return connectionStatus == m_connectionStatus; }); } -} // namespace sampleApp -} // namespace alexaClientSDK \ No newline at end of file +} // namespace sampleApp +} // namespace alexaClientSDK diff --git a/SampleApp/src/ConsolePrinter.cpp b/SampleApp/src/ConsolePrinter.cpp index 516b5cf313..d233a9b856 100644 --- a/SampleApp/src/ConsolePrinter.cpp +++ b/SampleApp/src/ConsolePrinter.cpp @@ -1,7 +1,5 @@ /* - * ConsolePrinter.cpp - * - * Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -19,37 +17,44 @@ #include -#include - namespace alexaClientSDK { namespace sampleApp { -std::mutex ConsolePrinter::m_mutex; +std::shared_ptr ConsolePrinter::m_globalMutex = std::make_shared(); -ConsolePrinter::ConsolePrinter() : avsCommon::utils::logger::Logger(avsCommon::utils::logger::Level::UNKNOWN) { +ConsolePrinter::ConsolePrinter() : + avsCommon::utils::logger::Logger(avsCommon::utils::logger::Level::UNKNOWN), + m_mutex(m_globalMutex) { } -void ConsolePrinter::simplePrint(const std::string &stringToPrint) { - std::lock_guard lock{m_mutex}; +void ConsolePrinter::simplePrint(const std::string& stringToPrint) { + auto mutex = m_globalMutex; + if (!mutex) { + return; + } + + std::lock_guard lock{*mutex}; std::cout << stringToPrint << std::endl; } -void ConsolePrinter::prettyPrint(const std::string &stringToPrint) { - std::lock_guard lock{m_mutex}; - std::string line(stringToPrint.size() + 16, '#'); - std::cout << line << std::endl; - std::cout << "# " << stringToPrint << " #" << std::endl; - std::cout << line << std::endl; +void ConsolePrinter::prettyPrint(const std::string& stringToPrint) { + const std::string line(stringToPrint.size() + 16, '#'); + std::ostringstream oss; + oss << line << std::endl; + oss << "# " << stringToPrint << " #" << std::endl; + oss << line << std::endl; + + simplePrint(oss.str()); } void ConsolePrinter::emit( - avsCommon::utils::logger::Level level, - std::chrono::system_clock::time_point time, - const char *threadMoniker, - const char *text) { - std::lock_guard lock{m_mutex}; - std::cout << avsCommon::utils::logger::formatLogString(level, time, threadMoniker, text) << std::endl; + avsCommon::utils::logger::Level level, + std::chrono::system_clock::time_point time, + const char* threadMoniker, + const char* text) { + std::lock_guard lock{*m_mutex}; + std::cout << m_logFormatter.format(level, time, threadMoniker, text) << std::endl; } -} // namespace sampleApp -} // namespace alexaClientSDK +} // namespace sampleApp +} // namespace alexaClientSDK diff --git a/SampleApp/src/GuiRenderer.cpp b/SampleApp/src/GuiRenderer.cpp new file mode 100644 index 0000000000..55af81302e --- /dev/null +++ b/SampleApp/src/GuiRenderer.cpp @@ -0,0 +1,134 @@ +/* + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file 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 +#include + +#include +#include "SampleApp/ConsolePrinter.h" +#include "SampleApp/GuiRenderer.h" + +namespace alexaClientSDK { +namespace sampleApp { + +/// Tag for find the AudioItemId in the payload of the RenderPlayerInfo directive +static const std::string AUDIO_ITEM_ID_TAG("audioItemId"); + +/// Tag for find the template type in the payload of the RenderTemplate directive +static const std::string TEMPLATE_TYPE_TAG("type"); + +/// Tag for find the title node in the payload of the RenderTemplate directive +static const std::string TITLE_NODE("title"); + +/// Tag for find the maintitle in the title node of the RenderTemplate directive +static const std::string MAIN_TITLE_TAG("mainTitle"); + +static const std::string RENDER_TEMPLATE_HEADER = + "##############################################################################\n" + "# RenderTemplateCard \n" + "#-----------------------------------------------------------------------------\n"; + +static const std::string RENDER_TEMPLATE_CLEARED = + "##############################################################################\n" + "# RenderTemplateCard - Cleared \n" + "##############################################################################\n"; + +static const std::string RENDER_FOOTER = + "##############################################################################\n"; + +static const std::string RENDER_PLAYER_INFO_HEADER = + "##############################################################################\n" + "# RenderPlayerInfoCard \n" + "#-----------------------------------------------------------------------------\n"; + +static const std::string RENDER_PLAYER_INFO_CLEARED = + "##############################################################################\n" + "# RenderPlayerInfoCard - Cleared \n" + "##############################################################################\n"; + +void GuiRenderer::renderTemplateCard(const std::string& jsonPayload, avsCommon::avs::FocusState focusState) { + rapidjson::Document payload; + rapidjson::ParseResult result = payload.Parse(jsonPayload); + if (!result) { + return; + } + + std::string templateType; + if (!avsCommon::utils::json::jsonUtils::retrieveValue(payload, TEMPLATE_TYPE_TAG, &templateType)) { + return; + } + + rapidjson::Value::ConstMemberIterator titleNode; + if (!avsCommon::utils::json::jsonUtils::findNode(payload, TITLE_NODE, &titleNode)) { + return; + } + + std::string mainTitle; + if (!avsCommon::utils::json::jsonUtils::retrieveValue(titleNode->value, MAIN_TITLE_TAG, &mainTitle)) { + return; + } + + // Storing the output in a single buffer so that the display is continuous. + std::string buffer; + buffer += RENDER_TEMPLATE_HEADER; + buffer += "# Focus State : " + focusStateToString(focusState) + "\n"; + buffer += "# Template Type : " + templateType + "\n"; + buffer += "# Main Title : " + mainTitle + "\n"; + buffer += RENDER_FOOTER; +#ifdef ACSDK_EMIT_SENSITIVE_LOGS + buffer += jsonPayload + "\n"; + buffer += RENDER_FOOTER; +#endif + ConsolePrinter::simplePrint(buffer); +} + +void GuiRenderer::clearTemplateCard() { + ConsolePrinter::simplePrint(RENDER_TEMPLATE_CLEARED); +} + +void GuiRenderer::renderPlayerInfoCard( + const std::string& jsonPayload, + TemplateRuntimeObserverInterface::AudioPlayerInfo info, + avsCommon::avs::FocusState focusState) { + rapidjson::Document payload; + rapidjson::ParseResult result = payload.Parse(jsonPayload); + if (!result) { + return; + } + + std::string audioItemId; + if (!avsCommon::utils::json::jsonUtils::retrieveValue(payload, AUDIO_ITEM_ID_TAG, &audioItemId)) { + return; + } + + // Storing the output in a single buffer so that the display is continuous. + std::string buffer; + buffer += RENDER_PLAYER_INFO_HEADER; + buffer += "# Focus State : " + focusStateToString(focusState) + "\n"; + buffer += "# AudioItemId : " + audioItemId + "\n"; + buffer += "# Audio state : " + playerActivityToString(info.audioPlayerState) + "\n"; + buffer += "# Offset milliseconds : " + std::to_string(info.offset.count()) + "\n"; + buffer += RENDER_FOOTER; + buffer += jsonPayload + "\n"; + buffer += RENDER_FOOTER; + ConsolePrinter::simplePrint(buffer); +} + +void GuiRenderer::clearPlayerInfoCard() { + ConsolePrinter::simplePrint(RENDER_PLAYER_INFO_CLEARED); +} + +} // namespace sampleApp +} // namespace alexaClientSDK diff --git a/SampleApp/src/InteractionManager.cpp b/SampleApp/src/InteractionManager.cpp index 2e5100ce19..1f42119a1b 100644 --- a/SampleApp/src/InteractionManager.cpp +++ b/SampleApp/src/InteractionManager.cpp @@ -1,7 +1,5 @@ /* - * InteractionManager.cpp - * - * Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,104 +13,250 @@ * permissions and limitations under the License. */ +#include "ESP/ESPDataProviderInterface.h" #include "SampleApp/InteractionManager.h" +#include "RegistrationManager/CustomerDataManager.h" namespace alexaClientSDK { namespace sampleApp { InteractionManager::InteractionManager( - std::shared_ptr client, - std::shared_ptr micWrapper, - std::shared_ptr userInterface, - capabilityAgents::aip::AudioProvider holdToTalkAudioProvider, - capabilityAgents::aip::AudioProvider tapToTalkAudioProvider, - capabilityAgents::aip::AudioProvider wakeWordAudioProvider) : - m_client{client}, - m_micWrapper{micWrapper}, - m_userInterface{userInterface}, - m_holdToTalkAudioProvider{holdToTalkAudioProvider}, - m_tapToTalkAudioProvider{tapToTalkAudioProvider}, - m_wakeWordAudioProvider{wakeWordAudioProvider}, - m_isHoldOccurring{false}, - m_isTapOccurring{false}, - m_isMicOn{true} { - m_micWrapper->startStreamingMicrophoneData(); + std::shared_ptr client, + std::shared_ptr micWrapper, + std::shared_ptr userInterface, + capabilityAgents::aip::AudioProvider holdToTalkAudioProvider, + capabilityAgents::aip::AudioProvider tapToTalkAudioProvider, + capabilityAgents::aip::AudioProvider wakeWordAudioProvider, + std::shared_ptr espProvider, + std::shared_ptr espModifier) : + RequiresShutdown{"InteractionManager"}, + m_client{client}, + m_micWrapper{micWrapper}, + m_userInterface{userInterface}, + m_espProvider{espProvider}, + m_espModifier{espModifier}, + m_holdToTalkAudioProvider{holdToTalkAudioProvider}, + m_tapToTalkAudioProvider{tapToTalkAudioProvider}, + m_wakeWordAudioProvider{wakeWordAudioProvider}, + m_isHoldOccurring{false}, + m_isTapOccurring{false}, + m_isMicOn{true} { + m_micWrapper->startStreamingMicrophoneData(); }; void InteractionManager::begin() { - m_executor.submit( - [this] () { - m_userInterface->printWelcomeScreen(); - m_userInterface->printHelpScreen(); - } - ); + m_executor.submit([this]() { + m_userInterface->printWelcomeScreen(); + m_userInterface->printHelpScreen(); + }); } void InteractionManager::help() { - m_executor.submit( - [this] () { - m_userInterface->printHelpScreen(); - } - ); + m_executor.submit([this]() { m_userInterface->printHelpScreen(); }); +} + +void InteractionManager::settings() { + m_executor.submit([this]() { m_userInterface->printSettingsScreen(); }); +} + +void InteractionManager::locale() { + m_executor.submit([this]() { m_userInterface->printLocaleScreen(); }); +} + +void InteractionManager::errorValue() { + m_executor.submit([this]() { m_userInterface->printErrorScreen(); }); +} + +void InteractionManager::changeSetting(const std::string& key, const std::string& value) { + m_executor.submit([this, key, value]() { m_client->changeSetting(key, value); }); } void InteractionManager::microphoneToggle() { - m_executor.submit( - [this] () { - if (!m_wakeWordAudioProvider) { - return; - } - if (m_isMicOn) { - m_isMicOn = false; - m_micWrapper->stopStreamingMicrophoneData(); - m_userInterface->microphoneOff(); - } else { - m_isMicOn = true; - m_micWrapper->startStreamingMicrophoneData(); - m_userInterface->microphoneOn(); - } + m_executor.submit([this]() { + if (!m_wakeWordAudioProvider) { + return; + } + if (m_isMicOn) { + m_isMicOn = false; + m_micWrapper->stopStreamingMicrophoneData(); + m_userInterface->microphoneOff(); + } else { + m_isMicOn = true; + m_micWrapper->startStreamingMicrophoneData(); + m_userInterface->microphoneOn(); } - ); + }); } void InteractionManager::holdToggled() { - m_executor.submit( - [this] () { - if (!m_isMicOn) { - return; - } - if (!m_isHoldOccurring) { - if (m_client->notifyOfHoldToTalkStart(m_holdToTalkAudioProvider).get()) { - m_isHoldOccurring = true; - } - } else { - m_isHoldOccurring = false; - m_client->notifyOfHoldToTalkEnd(); + m_executor.submit([this]() { + if (!m_isMicOn) { + return; + } + if (!m_isHoldOccurring) { + if (m_client->notifyOfHoldToTalkStart(m_holdToTalkAudioProvider).get()) { + m_isHoldOccurring = true; } + } else { + m_isHoldOccurring = false; + m_client->notifyOfHoldToTalkEnd(); } - ); + }); } void InteractionManager::tap() { - m_executor.submit( - [this] () { - if (!m_isMicOn) { - return; - } + m_executor.submit([this]() { + if (!m_isMicOn) { + return; + } + if (!m_isTapOccurring) { if (m_client->notifyOfTapToTalk(m_tapToTalkAudioProvider).get()) { m_isTapOccurring = true; } + } else { + m_isTapOccurring = false; + m_client->notifyOfTapToTalkEnd(); } - ); + + }); } void InteractionManager::stopForegroundActivity() { - m_executor.submit( - [this] () { - m_client->stopForegroundActivity(); + m_executor.submit([this]() { m_client->stopForegroundActivity(); }); +} + +void InteractionManager::playbackPlay() { + m_executor.submit([this]() { m_client->getPlaybackRouter()->playButtonPressed(); }); +} + +void InteractionManager::playbackPause() { + m_executor.submit([this]() { m_client->getPlaybackRouter()->pauseButtonPressed(); }); +} + +void InteractionManager::playbackNext() { + m_executor.submit([this]() { m_client->getPlaybackRouter()->nextButtonPressed(); }); +} + +void InteractionManager::playbackPrevious() { + m_executor.submit([this]() { m_client->getPlaybackRouter()->previousButtonPressed(); }); +} + +void InteractionManager::speakerControl() { + m_executor.submit([this]() { m_userInterface->printSpeakerControlScreen(); }); +} + +void InteractionManager::firmwareVersionControl() { + m_executor.submit([this]() { m_userInterface->printFirmwareVersionControlScreen(); }); +} + +void InteractionManager::setFirmwareVersion(avsCommon::sdkInterfaces::softwareInfo::FirmwareVersion firmwareVersion) { + m_executor.submit([this, firmwareVersion]() { m_client->setFirmwareVersion(firmwareVersion); }); +} + +void InteractionManager::volumeControl() { + m_executor.submit([this]() { m_userInterface->printVolumeControlScreen(); }); +} + +void InteractionManager::adjustVolume(avsCommon::sdkInterfaces::SpeakerInterface::Type type, int8_t delta) { + m_executor.submit([this, type, delta]() { + /* + * Group the unmute action as part of the same affordance that caused the volume change, so we don't + * send another event. This isn't a requirement by AVS. + */ + std::future unmuteFuture = m_client->getSpeakerManager()->setMute(type, false, true); + if (!unmuteFuture.valid()) { + return; } - ); + unmuteFuture.get(); + + std::future future = m_client->getSpeakerManager()->adjustVolume(type, delta); + if (!future.valid()) { + return; + } + future.get(); + }); +} + +void InteractionManager::setMute(avsCommon::sdkInterfaces::SpeakerInterface::Type type, bool mute) { + m_executor.submit([this, type, mute]() { + std::future future = m_client->getSpeakerManager()->setMute(type, mute); + future.get(); + }); +} + +void InteractionManager::confirmResetDevice() { + m_executor.submit([this]() { m_userInterface->printResetConfirmation(); }); +} + +void InteractionManager::resetDevice() { + // This is a blocking operation. No interaction will be allowed during / after resetDevice + auto result = m_executor.submit([this]() { + m_client->getRegistrationManager()->logout(); + m_userInterface->printResetWarning(); + }); + result.wait(); +} + +void InteractionManager::espControl() { + m_executor.submit([this]() { + if (m_espProvider) { + auto espData = m_espProvider->getESPData(); + m_userInterface->printESPControlScreen( + m_espProvider->isEnabled(), espData.getVoiceEnergy(), espData.getAmbientEnergy()); + } else { + m_userInterface->printESPNotSupported(); + } + }); +} + +void InteractionManager::toggleESPSupport() { + m_executor.submit([this]() { + if (m_espProvider) { + m_espProvider->isEnabled() ? m_espProvider->disable() : m_espProvider->enable(); + } else { + m_userInterface->printESPNotSupported(); + } + }); +} + +void InteractionManager::setESPVoiceEnergy(const std::string& voiceEnergy) { + m_executor.submit([this, voiceEnergy]() { + if (m_espProvider) { + if (m_espModifier) { + m_espModifier->setVoiceEnergy(voiceEnergy); + } else { + m_userInterface->printESPDataOverrideNotSupported(); + } + } else { + m_userInterface->printESPNotSupported(); + } + }); +} + +void InteractionManager::setESPAmbientEnergy(const std::string& ambientEnergy) { + m_executor.submit([this, ambientEnergy]() { + if (m_espProvider) { + if (m_espModifier) { + m_espModifier->setAmbientEnergy(ambientEnergy); + } else { + m_userInterface->printESPDataOverrideNotSupported(); + } + } else { + m_userInterface->printESPNotSupported(); + } + }); +} + +void InteractionManager::onDialogUXStateChanged(DialogUXState state) { + // reset tap-to-talk state + if (DialogUXState::LISTENING != state) { + m_isTapOccurring = false; + } +} + +void InteractionManager::doShutdown() { + m_client.reset(); } -} // namespace sampleApp -} // namespace alexaClientSDK \ No newline at end of file +} // namespace sampleApp +} // namespace alexaClientSDK diff --git a/SampleApp/src/KeywordObserver.cpp b/SampleApp/src/KeywordObserver.cpp index 053c6f240b..d273d6f763 100644 --- a/SampleApp/src/KeywordObserver.cpp +++ b/SampleApp/src/KeywordObserver.cpp @@ -1,7 +1,5 @@ /* - * KeywordObserver.cpp - * - * Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -21,27 +19,37 @@ namespace alexaClientSDK { namespace sampleApp { KeywordObserver::KeywordObserver( - std::shared_ptr client, capabilityAgents::aip::AudioProvider audioProvider) : - m_client{client}, m_audioProvider{audioProvider} { + std::shared_ptr client, + capabilityAgents::aip::AudioProvider audioProvider, + std::shared_ptr espProvider) : + m_client{client}, + m_audioProvider{audioProvider}, + m_espProvider{espProvider} { } void KeywordObserver::onKeyWordDetected( - std::shared_ptr stream, - std::string keyword, - avsCommon::avs::AudioInputStream::Index beginIndex, - avsCommon::avs::AudioInputStream::Index endIndex) { + std::shared_ptr stream, + std::string keyword, + avsCommon::avs::AudioInputStream::Index beginIndex, + avsCommon::avs::AudioInputStream::Index endIndex) { if (endIndex != avsCommon::sdkInterfaces::KeyWordObserverInterface::UNSPECIFIED_INDEX && - beginIndex == avsCommon::sdkInterfaces::KeyWordObserverInterface::UNSPECIFIED_INDEX) { + beginIndex == avsCommon::sdkInterfaces::KeyWordObserverInterface::UNSPECIFIED_INDEX) { if (m_client) { m_client->notifyOfTapToTalk(m_audioProvider, endIndex); } - } else if (endIndex != avsCommon::sdkInterfaces::KeyWordObserverInterface::UNSPECIFIED_INDEX && - beginIndex != avsCommon::sdkInterfaces::KeyWordObserverInterface::UNSPECIFIED_INDEX) { + } else if ( + endIndex != avsCommon::sdkInterfaces::KeyWordObserverInterface::UNSPECIFIED_INDEX && + beginIndex != avsCommon::sdkInterfaces::KeyWordObserverInterface::UNSPECIFIED_INDEX) { if (m_client) { - m_client->notifyOfWakeWord(m_audioProvider, beginIndex, endIndex, keyword); + if (m_espProvider) { + auto espData = m_espProvider->getESPData(); + m_client->notifyOfWakeWord(m_audioProvider, beginIndex, endIndex, keyword, espData); + } else { + m_client->notifyOfWakeWord(m_audioProvider, beginIndex, endIndex, keyword); + } } } } -} // namespace sampleApp -} // namespace alexaClientSDK \ No newline at end of file +} // namespace sampleApp +} // namespace alexaClientSDK diff --git a/SampleApp/src/PortAudioMicrophoneWrapper.cpp b/SampleApp/src/PortAudioMicrophoneWrapper.cpp index 60a8bc196f..01fb3bee45 100644 --- a/SampleApp/src/PortAudioMicrophoneWrapper.cpp +++ b/SampleApp/src/PortAudioMicrophoneWrapper.cpp @@ -1,7 +1,5 @@ /* - * PortAudioMicrophoneWrapper.cpp - * - * Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,6 +13,12 @@ * permissions and limitations under the License. */ +#include +#include + +#include + +#include #include "SampleApp/PortAudioMicrophoneWrapper.h" #include "SampleApp/ConsolePrinter.h" @@ -28,15 +32,17 @@ static const int NUM_OUTPUT_CHANNELS = 0; static const double SAMPLE_RATE = 16000; static const unsigned long PREFERRED_SAMPLES_PER_CALLBACK = paFramesPerBufferUnspecified; +static const std::string SAMPLE_APP_CONFIG_ROOT_KEY("sampleApp"); +static const std::string PORTAUDIO_CONFIG_ROOT_KEY("portAudio"); +static const std::string PORTAUDIO_CONFIG_SUGGESTED_LATENCY_KEY("suggestedLatency"); + std::unique_ptr PortAudioMicrophoneWrapper::create( - std::shared_ptr stream) { + std::shared_ptr stream) { if (!stream) { ConsolePrinter::simplePrint("Invalid stream passed to PortAudioMicrophoneWrapper"); return nullptr; } - std::unique_ptr portAudioMicrophoneWrapper( - new PortAudioMicrophoneWrapper(stream) - ); + std::unique_ptr portAudioMicrophoneWrapper(new PortAudioMicrophoneWrapper(stream)); if (!portAudioMicrophoneWrapper->initialize()) { ConsolePrinter::simplePrint("Failed to initialize PortAudioMicrophoneWrapper"); return nullptr; @@ -44,8 +50,9 @@ std::unique_ptr PortAudioMicrophoneWrapper::create( return portAudioMicrophoneWrapper; } -PortAudioMicrophoneWrapper::PortAudioMicrophoneWrapper(std::shared_ptr stream) : - m_audioInputStream{stream}, m_paStream{nullptr} { +PortAudioMicrophoneWrapper::PortAudioMicrophoneWrapper(std::shared_ptr stream) : + m_audioInputStream{stream}, + m_paStream{nullptr} { } PortAudioMicrophoneWrapper::~PortAudioMicrophoneWrapper() { @@ -66,16 +73,43 @@ bool PortAudioMicrophoneWrapper::initialize() { ConsolePrinter::simplePrint("Failed to initialize PortAudio"); return false; } - err = Pa_OpenDefaultStream( - &m_paStream, - NUM_INPUT_CHANNELS, - NUM_OUTPUT_CHANNELS, - paInt16, - SAMPLE_RATE, - PREFERRED_SAMPLES_PER_CALLBACK, - PortAudioCallback, - this - ); + + PaTime suggestedLatency; + bool latencyInConfig = getConfigSuggestedLatency(suggestedLatency); + + if (!latencyInConfig) { + err = Pa_OpenDefaultStream( + &m_paStream, + NUM_INPUT_CHANNELS, + NUM_OUTPUT_CHANNELS, + paInt16, + SAMPLE_RATE, + PREFERRED_SAMPLES_PER_CALLBACK, + PortAudioCallback, + this); + } else { + ConsolePrinter::simplePrint( + "PortAudio suggestedLatency has been configured to " + std::to_string(suggestedLatency) + " Seconds"); + + PaStreamParameters inputParameters; + std::memset(&inputParameters, 0, sizeof(inputParameters)); + inputParameters.device = Pa_GetDefaultInputDevice(); + inputParameters.channelCount = NUM_INPUT_CHANNELS; + inputParameters.sampleFormat = paInt16; + inputParameters.suggestedLatency = suggestedLatency; + inputParameters.hostApiSpecificStreamInfo = nullptr; + + err = Pa_OpenStream( + &m_paStream, + &inputParameters, + nullptr, + SAMPLE_RATE, + PREFERRED_SAMPLES_PER_CALLBACK, + paNoFlag, + PortAudioCallback, + this); + } + if (err != paNoError) { ConsolePrinter::simplePrint("Failed to open PortAudio default stream"); return false; @@ -104,12 +138,12 @@ bool PortAudioMicrophoneWrapper::stopStreamingMicrophoneData() { } int PortAudioMicrophoneWrapper::PortAudioCallback( - const void* inputBuffer, - void* outputBuffer, - unsigned long numSamples, - const PaStreamCallbackTimeInfo* timeInfo, - PaStreamCallbackFlags statusFlags, - void* userData) { + const void* inputBuffer, + void* outputBuffer, + unsigned long numSamples, + const PaStreamCallbackTimeInfo* timeInfo, + PaStreamCallbackFlags statusFlags, + void* userData) { PortAudioMicrophoneWrapper* wrapper = static_cast(userData); ssize_t returnCode = wrapper->m_writer->write(inputBuffer, numSamples); if (returnCode <= 0) { @@ -119,6 +153,21 @@ int PortAudioMicrophoneWrapper::PortAudioCallback( return paContinue; } +bool PortAudioMicrophoneWrapper::getConfigSuggestedLatency(PaTime& suggestedLatency) { + bool latencyInConfig = false; + auto config = avsCommon::utils::configuration::ConfigurationNode::getRoot()[SAMPLE_APP_CONFIG_ROOT_KEY] + [PORTAUDIO_CONFIG_ROOT_KEY]; + if (config) { + latencyInConfig = config.getValue( + PORTAUDIO_CONFIG_SUGGESTED_LATENCY_KEY, + &suggestedLatency, + suggestedLatency, + &rapidjson::Value::IsDouble, + &rapidjson::Value::GetDouble); + } + + return latencyInConfig; +} -} // namespace sampleApp -} // namespace alexaClientSDK \ No newline at end of file +} // namespace sampleApp +} // namespace alexaClientSDK diff --git a/SampleApp/src/SampleApplication.cpp b/SampleApp/src/SampleApplication.cpp index 054c164171..2ad79ecd9f 100644 --- a/SampleApp/src/SampleApplication.cpp +++ b/SampleApp/src/SampleApplication.cpp @@ -1,7 +1,5 @@ /* - * SampleApplication.cpp - * - * Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. @@ -15,8 +13,9 @@ * permissions and limitations under the License. */ -#include "SampleApp/KeywordObserver.h" #include "SampleApp/ConnectionObserver.h" +#include "SampleApp/GuiRenderer.h" +#include "SampleApp/KeywordObserver.h" #include "SampleApp/SampleApplication.h" #ifdef KWD_KITTAI @@ -24,15 +23,28 @@ #elif KWD_SENSORY #include #endif -#include -#include + +#ifdef ENABLE_ESP +#include +#else +#include +#endif + #include +#include +#include #include +#include +#include